From a19fd52ae8c4736b334e42fdb2d4690b4316f9d1 Mon Sep 17 00:00:00 2001 From: TJ Koury Date: Mon, 6 May 2024 10:42:41 -0400 Subject: [PATCH] deploy --- docs/Cesium.js | 946 ++++++++++++++++++++++++------------------------- 1 file changed, 473 insertions(+), 473 deletions(-) diff --git a/docs/Cesium.js b/docs/Cesium.js index dc019f61..c0bb64be 100644 --- a/docs/Cesium.js +++ b/docs/Cesium.js @@ -23,7 +23,7 @@ * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. */ -var Cesium=(()=>{var pMt=Object.create;var PO=Object.defineProperty;var uMt=Object.getOwnPropertyDescriptor;var ZMt=Object.getOwnPropertyNames;var VMt=Object.getPrototypeOf,bMt=Object.prototype.hasOwnProperty;var Og=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Vo=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),vO=(t,e)=>{for(var n in e)PO(t,n,{get:e[n],enumerable:!0})},Oct=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ZMt(e))!bMt.call(t,o)&&o!==n&&PO(t,o,{get:()=>e[o],enumerable:!(i=uMt(e,o))||i.enumerable});return t};var R=(t,e,n)=>(n=t!=null?pMt(VMt(t)):{},Oct(e||!t||!t.__esModule?PO(n,"default",{value:t,enumerable:!0}):n,t)),RMt=t=>Oct(PO({},"__esModule",{value:!0}),t);var W=Vo(()=>{globalThis.CESIUM_WORKERS=atob("dmFyIENlc2l1bVdvcmtlcnM9KCgpPT57dmFyIGI4PU9iamVjdC5jcmVhdGU7dmFyIHFSPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgRjg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt2YXIgWTg9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7dmFyIFM4PU9iamVjdC5nZXRQcm90b3R5cGVPZixPOD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBYbz0odD0+dHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6dHlwZW9mIFByb3h5PCJ1Ij9uZXcgUHJveHkodCx7Z2V0OihlLGkpPT4odHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6ZSlbaV19KTp0KShmdW5jdGlvbih0KXtpZih0eXBlb2YgcmVxdWlyZTwidSIpcmV0dXJuIHJlcXVpcmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Rocm93IEVycm9yKCdEeW5hbWljIHJlcXVpcmUgb2YgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkJyl9KSxqQj10PT5lPT57dmFyIGk9dFtlXTtpZihpKXJldHVybiBpKCk7dGhyb3cgbmV3IEVycm9yKCJNb2R1bGUgbm90IGZvdW5kIGluIGJ1bmRsZTogIitlKX07dmFyIE89KHQsZSk9PigpPT4odCYmKGU9dCh0PTApKSxlKTt2YXIgdHM9KHQsZSk9PigpPT4oZXx8dCgoZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZSksZS5leHBvcnRzKSxIZT0odCxlKT0+e2Zvcih2YXIgaSBpbiBlKXFSKHQsaSx7Z2V0OmVbaV0sZW51bWVyYWJsZTohMH0pfSxIQj0odCxlLGksbik9PntpZihlJiZ0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKWZvcihsZXQgcyBvZiBZOChlKSkhTzguY2FsbCh0LHMpJiZzIT09aSYmcVIodCxzLHtnZXQ6KCk9PmVbc10sZW51bWVyYWJsZTohKG49RjgoZSxzKSl8fG4uZW51bWVyYWJsZX0pO3JldHVybiB0fTt2YXIgY289KHQsZSxpKT0+KGk9dCE9bnVsbD9iOChTOCh0KSk6e30sSEIoZXx8IXR8fCF0Ll9fZXNNb2R1bGU/cVIoaSwiZGVmYXVsdCIse3ZhbHVlOnQsZW51bWVyYWJsZTohMH0pOmksdCkpLFY4PXQ9PkhCKHFSKHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0KTtmdW5jdGlvbiBHOCh0KXtyZXR1cm4gdCE9bnVsbH12YXIgbSxtdD1PKCgpPT57bT1HOH0pO2Z1bmN0aW9uIEI4KHQpe2xldCBlLGk9dC5uYW1lLG49dC5tZXNzYWdlO20oaSkmJm0obik/ZT1gJHtpfTogJHtufWA6ZT10LnRvU3RyaW5nKCk7bGV0IHM9dC5zdGFjaztyZXR1cm4gbShzKSYmKGUrPWAKJHtzfWApLGV9dmFyIHZCLHpCPU8oKCk9PnttdCgpO3ZCPUI4fSk7dmFyIHQwPXt9O0hlKHQwLHtkZWZhdWx0OigpPT5XaX0pO2Z1bmN0aW9uIFc4KHQpe2FzeW5jIGZ1bmN0aW9uIGUoe2RhdGE6bn0pe2xldCBzPVtdLG89e2lkOm4uaWQscmVzdWx0OnZvaWQgMCxlcnJvcjp2b2lkIDB9O3NlbGYuQ0VTSVVNX0JBU0VfVVJMPW4uYmFzZVVybDt0cnl7bGV0IHI9YXdhaXQgdChuLnBhcmFtZXRlcnMscyk7by5yZXN1bHQ9cn1jYXRjaChyKXtyIGluc3RhbmNlb2YgRXJyb3I/by5lcnJvcj17bmFtZTpyLm5hbWUsbWVzc2FnZTpyLm1lc3NhZ2Usc3RhY2s6ci5zdGFja306by5lcnJvcj1yfW4uY2FuVHJhbnNmZXJBcnJheUJ1ZmZlcnx8KHMubGVuZ3RoPTApO3RyeXtwb3N0TWVzc2FnZShvLHMpfWNhdGNoKHIpe28ucmVzdWx0PXZvaWQgMCxvLmVycm9yPWBwb3N0TWVzc2FnZSBmYWlsZWQgd2l0aCBlcnJvcjogJHt2QihyKX0KICB3aXRoIHJlc3BvbnNlTWVzc2FnZTogJHtKU09OLnN0cmluZ2lmeShvKX1gLHBvc3RNZXNzYWdlKG8pfX1mdW5jdGlvbiBpKG4pe3Bvc3RNZXNzYWdlKHtpZDpuLmRhdGE/LmlkLGVycm9yOmBwb3N0TWVzc2FnZSBmYWlsZWQgd2l0aCBlcnJvcjogJHtKU09OLnN0cmluZ2lmeShuKX1gfSl9cmV0dXJuIHNlbGYub25tZXNzYWdlPWUsc2VsZi5vbm1lc3NhZ2VlcnJvcj1pLHNlbGZ9dmFyIFdpLE5zPU8oKCk9Pnt6QigpO1dpPVc4fSk7dmFyIGUwPXt9O0hlKGUwLHtkZWZhdWx0OigpPT5NOH0pO2FzeW5jIGZ1bmN0aW9uIEQ4KCl7cmV0dXJuW119dmFyIE04LGkwPU8oKCk9PntOcygpO004PVdpKEQ4KX0pO3ZhciBLQixYQiwkaSxpYz1PKCgpPT57S0I9e0ZJWEVEOjAsSU5FUlRJQUw6MSxURU1FOjIsVlZMSDozLEVOVTo0LE5FRDo1LE5FVTo2LFJJQzo3fSxYQj1bS0IuTkVVXSwkaT1PYmplY3QuZnJlZXplKEtCKX0pO2Z1bmN0aW9uIGZsKHQpe3RoaXMubmFtZT0iRGV2ZWxvcGVyRXJyb3IiLHRoaXMubWVzc2FnZT10O2xldCBlO3RyeXt0aHJvdyBuZXcgRXJyb3J9Y2F0Y2goaSl7ZT1pLnN0YWNrfXRoaXMuc3RhY2s9ZX12YXIgWSxWdD1PKCgpPT57bXQoKTttKE9iamVjdC5jcmVhdGUpJiYoZmwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxmbC5wcm90b3R5cGUuY29uc3RydWN0b3I9ZmwpO2ZsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB0PWAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7cmV0dXJuIG0odGhpcy5zdGFjaykmJih0Kz1gCiR7dGhpcy5zdGFjay50b1N0cmluZygpfWApLHR9O2ZsLnRocm93SW5zdGFudGlhdGlvbkVycm9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IGZsKCJUaGlzIGZ1bmN0aW9uIGRlZmluZXMgYW4gaW50ZXJmYWNlIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4iKX07WT1mbH0pO2Z1bmN0aW9uIFU4KHQpe3JldHVybmAke3R9IGlzIHJlcXVpcmVkLCBhY3R1YWwgdmFsdWUgd2FzIHVuZGVmaW5lZGB9ZnVuY3Rpb24gX20odCxlLGkpe3JldHVybmBFeHBlY3RlZCAke2l9IHRvIGJlIHR5cGVvZiAke2V9LCBhY3R1YWwgdHlwZW9mIHdhcyAke3R9YH12YXIgYnMscCxhZT1PKCgpPT57bXQoKTtWdCgpO2JzPXt9O2JzLnR5cGVPZj17fTticy5kZWZpbmVkPWZ1bmN0aW9uKHQsZSl7aWYoIW0oZSkpdGhyb3cgbmV3IFkoVTgodCkpfTticy50eXBlT2YuZnVuYz1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJmdW5jdGlvbiIsdCkpfTticy50eXBlT2Yuc3RyaW5nPWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJzdHJpbmciKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJzdHJpbmciLHQpKX07YnMudHlwZU9mLm51bWJlcj1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgWShfbSh0eXBlb2YgZSwibnVtYmVyIix0KSl9O2JzLnR5cGVPZi5udW1iZXIubGVzc1RoYW49ZnVuY3Rpb24odCxlLGkpe2lmKGJzLnR5cGVPZi5udW1iZXIodCxlKSxlPj1pKXRocm93IG5ldyBZKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiAke2l9LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07YnMudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxpKXtpZihicy50eXBlT2YubnVtYmVyKHQsZSksZT5pKXRocm93IG5ldyBZKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke2l9LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07YnMudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbj1mdW5jdGlvbih0LGUsaSl7aWYoYnMudHlwZU9mLm51bWJlcih0LGUpLGU8PWkpdGhyb3cgbmV3IFkoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuICR7aX0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTticy50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHM9ZnVuY3Rpb24odCxlLGkpe2lmKGJzLnR5cGVPZi5udW1iZXIodCxlKSxlPGkpdGhyb3cgbmV3IFkoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7aX0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTticy50eXBlT2Yub2JqZWN0PWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJvYmplY3QiLHQpKX07YnMudHlwZU9mLmJvb2w9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJvb2xlYW4iKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJib29sZWFuIix0KSl9O2JzLnR5cGVPZi5iaWdpbnQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJpZ2ludCIpdGhyb3cgbmV3IFkoX20odHlwZW9mIGUsImJpZ2ludCIsdCkpfTticy50eXBlT2YubnVtYmVyLmVxdWFscz1mdW5jdGlvbih0LGUsaSxuKXtpZihicy50eXBlT2YubnVtYmVyKHQsaSksYnMudHlwZU9mLm51bWJlcihlLG4pLGkhPT1uKXRocm93IG5ldyBZKGAke3R9IG11c3QgYmUgZXF1YWwgdG8gJHtlfSwgdGhlIGFjdHVhbCB2YWx1ZXMgYXJlICR7aX0gYW5kICR7bn1gKX07cD1ic30pO2Z1bmN0aW9uIG5FKCl7dGhpcy5fbGlzdGVuZXJzPVtdLHRoaXMuX3Njb3Blcz1bXSx0aGlzLl90b1JlbW92ZT1bXSx0aGlzLl9pbnNpZGVSYWlzZUV2ZW50PSExfWZ1bmN0aW9uIFE4KHQsZSl7cmV0dXJuIGUtdH12YXIgV2UseGk9TygoKT0+e2FlKCk7bXQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuRS5wcm90b3R5cGUse251bWJlck9mTGlzdGVuZXJzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzLmxlbmd0aC10aGlzLl90b1JlbW92ZS5sZW5ndGh9fX0pO25FLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2YuZnVuYygibGlzdGVuZXIiLHQpLHRoaXMuX2xpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3Njb3Blcy5wdXNoKGUpO2xldCBpPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7aS5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl9fTtuRS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLmZ1bmMoImxpc3RlbmVyIix0KTtsZXQgaT10aGlzLl9saXN0ZW5lcnMsbj10aGlzLl9zY29wZXMscz0tMTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dPT09dCYmbltvXT09PWUpe3M9bzticmVha31yZXR1cm4gcyE9PS0xPyh0aGlzLl9pbnNpZGVSYWlzZUV2ZW50Pyh0aGlzLl90b1JlbW92ZS5wdXNoKHMpLGlbc109dm9pZCAwLG5bc109dm9pZCAwKTooaS5zcGxpY2UocywxKSxuLnNwbGljZShzLDEpKSwhMCk6ITF9O25FLnByb3RvdHlwZS5yYWlzZUV2ZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5zaWRlUmFpc2VFdmVudD0hMDtsZXQgdCxlPXRoaXMuX2xpc3RlbmVycyxpPXRoaXMuX3Njb3BlcyxuPWUubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyl7bGV0IG89ZVt0XTttKG8pJiZlW3RdLmFwcGx5KGlbdF0sYXJndW1lbnRzKX1sZXQgcz10aGlzLl90b1JlbW92ZTtpZihuPXMubGVuZ3RoLG4+MCl7Zm9yKHMuc29ydChROCksdD0wO3Q8bjt0Kyspe2xldCBvPXNbdF07ZS5zcGxpY2UobywxKSxpLnNwbGljZShvLDEpfXMubGVuZ3RoPTB9dGhpcy5faW5zaWRlUmFpc2VFdmVudD0hMX07V2U9bkV9KTtmdW5jdGlvbiAkUigpe1kudGhyb3dJbnN0YW50aWF0aW9uRXJyb3IoKX12YXIgcUIsJEI9TygoKT0+e1Z0KCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoJFIucHJvdG90eXBlLHtuYW1lOntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY2xvY2s6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxlbnRpdGllczp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGlzTG9hZGluZzp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGNoYW5nZWRFdmVudDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGVycm9yRXZlbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxsb2FkaW5nRXZlbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxzaG93OntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY2x1c3RlcmluZzp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7JFIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9OyRSLnNldExvYWRpbmc9ZnVuY3Rpb24odCxlKXt0Ll9pc0xvYWRpbmchPT1lJiYoZT90Ll9lbnRpdHlDb2xsZWN0aW9uLnN1c3BlbmRFdmVudHMoKTp0Ll9lbnRpdHlDb2xsZWN0aW9uLnJlc3VtZUV2ZW50cygpLHQuX2lzTG9hZGluZz1lLHQuX2xvYWRpbmcucmFpc2VFdmVudCh0LGUpKX07cUI9JFJ9KTtmdW5jdGlvbiB0Vyh0LGUpe3JldHVybiB0Pz9lfXZhciBaLGJ0PU8oKCk9Pnt0Vy5FTVBUWV9PQkpFQ1Q9T2JqZWN0LmZyZWV6ZSh7fSk7Wj10V30pO3ZhciBpVz10cygoX3B0LGVXKT0+e3ZhciB2QT1mdW5jdGlvbih0KXt0PT1udWxsJiYodD1uZXcgRGF0ZSgpLmdldFRpbWUoKSksdGhpcy5OPTYyNCx0aGlzLk09Mzk3LHRoaXMuTUFUUklYX0E9MjU2NzQ4MzYxNSx0aGlzLlVQUEVSX01BU0s9MjE0NzQ4MzY0OCx0aGlzLkxPV0VSX01BU0s9MjE0NzQ4MzY0Nyx0aGlzLm10PW5ldyBBcnJheSh0aGlzLk4pLHRoaXMubXRpPXRoaXMuTisxLHQuY29uc3RydWN0b3I9PUFycmF5P3RoaXMuaW5pdF9ieV9hcnJheSh0LHQubGVuZ3RoKTp0aGlzLmluaXRfc2VlZCh0KX07dkEucHJvdG90eXBlLmluaXRfc2VlZD1mdW5jdGlvbih0KXtmb3IodGhpcy5tdFswXT10Pj4+MCx0aGlzLm10aT0xO3RoaXMubXRpPHRoaXMuTjt0aGlzLm10aSsrKXt2YXIgdD10aGlzLm10W3RoaXMubXRpLTFdXnRoaXMubXRbdGhpcy5tdGktMV0+Pj4zMDt0aGlzLm10W3RoaXMubXRpXT0oKCh0JjQyOTQ5MDE3NjApPj4+MTYpKjE4MTI0MzMyNTM8PDE2KSsodCY2NTUzNSkqMTgxMjQzMzI1Myt0aGlzLm10aSx0aGlzLm10W3RoaXMubXRpXT4+Pj0wfX07dkEucHJvdG90eXBlLmluaXRfYnlfYXJyYXk9ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM7Zm9yKHRoaXMuaW5pdF9zZWVkKDE5NjUwMjE4KSxpPTEsbj0wLHM9dGhpcy5OPmU/dGhpcy5OOmU7cztzLS0pe3ZhciBvPXRoaXMubXRbaS0xXV50aGlzLm10W2ktMV0+Pj4zMDt0aGlzLm10W2ldPSh0aGlzLm10W2ldXigoKG8mNDI5NDkwMTc2MCk+Pj4xNikqMTY2NDUyNTw8MTYpKyhvJjY1NTM1KSoxNjY0NTI1KSt0W25dK24sdGhpcy5tdFtpXT4+Pj0wLGkrKyxuKyssaT49dGhpcy5OJiYodGhpcy5tdFswXT10aGlzLm10W3RoaXMuTi0xXSxpPTEpLG4+PWUmJihuPTApfWZvcihzPXRoaXMuTi0xO3M7cy0tKXt2YXIgbz10aGlzLm10W2ktMV1edGhpcy5tdFtpLTFdPj4+MzA7dGhpcy5tdFtpXT0odGhpcy5tdFtpXV4oKChvJjQyOTQ5MDE3NjApPj4+MTYpKjE1NjYwODM5NDE8PDE2KSsobyY2NTUzNSkqMTU2NjA4Mzk0MSktaSx0aGlzLm10W2ldPj4+PTAsaSsrLGk+PXRoaXMuTiYmKHRoaXMubXRbMF09dGhpcy5tdFt0aGlzLk4tMV0saT0xKX10aGlzLm10WzBdPTIxNDc0ODM2NDh9O3ZBLnByb3RvdHlwZS5yYW5kb21faW50PWZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgQXJyYXkoMCx0aGlzLk1BVFJJWF9BKTtpZih0aGlzLm10aT49dGhpcy5OKXt2YXIgaTtmb3IodGhpcy5tdGk9PXRoaXMuTisxJiZ0aGlzLmluaXRfc2VlZCg1NDg5KSxpPTA7aTx0aGlzLk4tdGhpcy5NO2krKyl0PXRoaXMubXRbaV0mdGhpcy5VUFBFUl9NQVNLfHRoaXMubXRbaSsxXSZ0aGlzLkxPV0VSX01BU0ssdGhpcy5tdFtpXT10aGlzLm10W2krdGhpcy5NXV50Pj4+MV5lW3QmMV07Zm9yKDtpPHRoaXMuTi0xO2krKyl0PXRoaXMubXRbaV0mdGhpcy5VUFBFUl9NQVNLfHRoaXMubXRbaSsxXSZ0aGlzLkxPV0VSX01BU0ssdGhpcy5tdFtpXT10aGlzLm10W2krKHRoaXMuTS10aGlzLk4pXV50Pj4+MV5lW3QmMV07dD10aGlzLm10W3RoaXMuTi0xXSZ0aGlzLlVQUEVSX01BU0t8dGhpcy5tdFswXSZ0aGlzLkxPV0VSX01BU0ssdGhpcy5tdFt0aGlzLk4tMV09dGhpcy5tdFt0aGlzLk0tMV1edD4+PjFeZVt0JjFdLHRoaXMubXRpPTB9cmV0dXJuIHQ9dGhpcy5tdFt0aGlzLm10aSsrXSx0Xj10Pj4+MTEsdF49dDw8NyYyNjM2OTI4NjQwLHRePXQ8PDE1JjQwMjI3MzA3NTIsdF49dD4+PjE4LHQ+Pj4wfTt2QS5wcm90b3R5cGUucmFuZG9tX2ludDMxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZG9tX2ludCgpPj4+MX07dkEucHJvdG90eXBlLnJhbmRvbV9pbmNsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZG9tX2ludCgpKigxLzQyOTQ5NjcyOTUpfTt2QS5wcm90b3R5cGUucmFuZG9tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZG9tX2ludCgpKigxLzQyOTQ5NjcyOTYpfTt2QS5wcm90b3R5cGUucmFuZG9tX2V4Y2w9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yYW5kb21faW50KCkrLjUpKigxLzQyOTQ5NjcyOTYpfTt2QS5wcm90b3R5cGUucmFuZG9tX2xvbmc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJhbmRvbV9pbnQoKT4+PjUsZT10aGlzLnJhbmRvbV9pbnQoKT4+PjY7cmV0dXJuKHQqNjcxMDg4NjQrZSkqKDEvOTAwNzE5OTI1NDc0MDk5Mil9O2VXLmV4cG9ydHM9dkF9KTt2YXIgbjAsS3QsdFosblcsTCxfZT1PKCgpPT57bjA9Y28oaVcoKSwxKTthZSgpO2J0KCk7bXQoKTtWdCgpO0t0PXt9O0t0LkVQU0lMT04xPS4xO0t0LkVQU0lMT04yPS4wMTtLdC5FUFNJTE9OMz0uMDAxO0t0LkVQU0lMT040PTFlLTQ7S3QuRVBTSUxPTjU9MWUtNTtLdC5FUFNJTE9ONj0xZS02O0t0LkVQU0lMT043PTFlLTc7S3QuRVBTSUxPTjg9MWUtODtLdC5FUFNJTE9OOT0xZS05O0t0LkVQU0lMT04xMD0xZS0xMDtLdC5FUFNJTE9OMTE9MWUtMTE7S3QuRVBTSUxPTjEyPTFlLTEyO0t0LkVQU0lMT04xMz0xZS0xMztLdC5FUFNJTE9OMTQ9MWUtMTQ7S3QuRVBTSUxPTjE1PTFlLTE1O0t0LkVQU0lMT04xNj0xZS0xNjtLdC5FUFNJTE9OMTc9MWUtMTc7S3QuRVBTSUxPTjE4PTFlLTE4O0t0LkVQU0lMT04xOT0xZS0xOTtLdC5FUFNJTE9OMjA9MWUtMjA7S3QuRVBTSUxPTjIxPTFlLTIxO0t0LkdSQVZJVEFUSU9OQUxQQVJBTUVURVI9Mzk4NjAwNDQxOGU1O0t0LlNPTEFSX1JBRElVUz02OTU1ZTU7S3QuTFVOQVJfUkFESVVTPTE3Mzc0MDA7S3QuU0lYVFlfRk9VUl9LSUxPQllURVM9NjQqMTAyNDtLdC5GT1VSX0dJR0FCWVRFUz00KjEwMjQqMTAyNCoxMDI0O0t0LnNpZ249WihNYXRoLnNpZ24sZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZT09PTB8fGUhPT1lP2U6ZT4wPzE6LTF9KTtLdC5zaWduTm90WmVybz1mdW5jdGlvbih0KXtyZXR1cm4gdDwwPy0xOjF9O0t0LnRvU05vcm09ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1aKGUsMjU1KSxNYXRoLnJvdW5kKChLdC5jbGFtcCh0LC0xLDEpKi41Ky41KSplKX07S3QuZnJvbVNOb3JtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9WihlLDI1NSksS3QuY2xhbXAodCwwLGUpL2UqMi0xfTtLdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPU1hdGgubWF4KGktZSwwKSxpPT09MD8wOkt0LmNsYW1wKCh0LWUpL2ksMCwxKX07S3Quc2luaD1aKE1hdGguc2luaCxmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5leHAoZSktTWF0aC5leHAoLWUpKS8yfSk7S3QuY29zaD1aKE1hdGguY29zaCxmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5leHAoZSkrTWF0aC5leHAoLWUpKS8yfSk7S3QubGVycD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuKDEtaSkqdCtpKmV9O0t0LlBJPU1hdGguUEk7S3QuT05FX09WRVJfUEk9MS9NYXRoLlBJO0t0LlBJX09WRVJfVFdPPU1hdGguUEkvMjtLdC5QSV9PVkVSX1RIUkVFPU1hdGguUEkvMztLdC5QSV9PVkVSX0ZPVVI9TWF0aC5QSS80O0t0LlBJX09WRVJfU0lYPU1hdGguUEkvNjtLdC5USFJFRV9QSV9PVkVSX1RXTz0zKk1hdGguUEkvMjtLdC5UV09fUEk9MipNYXRoLlBJO0t0Lk9ORV9PVkVSX1RXT19QST0xLygyKk1hdGguUEkpO0t0LlJBRElBTlNfUEVSX0RFR1JFRT1NYXRoLlBJLzE4MDtLdC5ERUdSRUVTX1BFUl9SQURJQU49MTgwL01hdGguUEk7S3QuUkFESUFOU19QRVJfQVJDU0VDT05EPUt0LlJBRElBTlNfUEVSX0RFR1JFRS8zNjAwO0t0LnRvUmFkaWFucz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZGVncmVlcyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdCpLdC5SQURJQU5TX1BFUl9ERUdSRUV9O0t0LnRvRGVncmVlcz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgicmFkaWFucyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdCpLdC5ERUdSRUVTX1BFUl9SQURJQU59O0t0LmNvbnZlcnRMb25naXR1ZGVSYW5nZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYW5nbGUgaXMgcmVxdWlyZWQuIik7bGV0IGU9S3QuVFdPX1BJLGk9dC1NYXRoLmZsb29yKHQvZSkqZTtyZXR1cm4gaTwtTWF0aC5QST9pK2U6aT49TWF0aC5QST9pLWU6aX07S3QuY2xhbXBUb0xhdGl0dWRlUmFuZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO3JldHVybiBLdC5jbGFtcCh0LC0xKkt0LlBJX09WRVJfVFdPLEt0LlBJX09WRVJfVFdPKX07S3QubmVnYXRpdmVQaVRvUGk9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0Pj0tS3QuUEkmJnQ8PUt0LlBJP3Q6S3QuemVyb1RvVHdvUGkodCtLdC5QSSktS3QuUEl9O0t0Lnplcm9Ub1R3b1BpPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhbmdsZSBpcyByZXF1aXJlZC4iKTtpZih0Pj0wJiZ0PD1LdC5UV09fUEkpcmV0dXJuIHQ7bGV0IGU9S3QubW9kKHQsS3QuVFdPX1BJKTtyZXR1cm4gTWF0aC5hYnMoZSk8S3QuRVBTSUxPTjE0JiZNYXRoLmFicyh0KT5LdC5FUFNJTE9OMTQ/S3QuVFdPX1BJOmV9O0t0Lm1vZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJtIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJuIGlzIHJlcXVpcmVkLiIpO2lmKGU9PT0wKXRocm93IG5ldyBZKCJkaXZpc29yIGNhbm5vdCBiZSAwLiIpO3JldHVybiBLdC5zaWduKHQpPT09S3Quc2lnbihlKSYmTWF0aC5hYnModCk8TWF0aC5hYnMoZSk/dDoodCVlK2UpJWV9O0t0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO2k9WihpLDApLG49WihuLGkpO2xldCBzPU1hdGguYWJzKHQtZSk7cmV0dXJuIHM8PW58fHM8PWkqTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpfTtLdC5sZXNzVGhhbj1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImZpcnN0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzZWNvbmQgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImFic29sdXRlRXBzaWxvbiBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC1lPC1pfTtLdC5sZXNzVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZmlyc3QgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInNlY29uZCBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiYWJzb2x1dGVFcHNpbG9uIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LWU8aX07S3QuZ3JlYXRlclRoYW49ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJmaXJzdCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgic2Vjb25kIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJhYnNvbHV0ZUVwc2lsb24gaXMgcmVxdWlyZWQuIik7cmV0dXJuIHQtZT5pfTtLdC5ncmVhdGVyVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZmlyc3QgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInNlY29uZCBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiYWJzb2x1dGVFcHNpbG9uIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LWU+LWl9O3RaPVsxXTtLdC5mYWN0b3JpYWw9ZnVuY3Rpb24odCl7aWYodHlwZW9mIHQhPSJudW1iZXIifHx0PDApdGhyb3cgbmV3IFkoIkEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRaLmxlbmd0aDtpZih0Pj1lKXtsZXQgaT10WltlLTFdO2ZvcihsZXQgbj1lO248PXQ7bisrKXtsZXQgcz1pKm47dFoucHVzaChzKSxpPXN9fXJldHVybiB0Wlt0XX07S3QuaW5jcmVtZW50V3JhcD1mdW5jdGlvbih0LGUsaSl7aWYoaT1aKGksMCksIW0odCkpdGhyb3cgbmV3IFkoIm4gaXMgcmVxdWlyZWQuIik7aWYoZTw9aSl0aHJvdyBuZXcgWSgibWF4aW11bVZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmltdW1WYWx1ZS4iKTtyZXR1cm4rK3QsdD5lJiYodD1pKSx0fTtLdC5pc1Bvd2VyT2ZUd289ZnVuY3Rpb24odCl7aWYodHlwZW9mIHQhPSJudW1iZXIifHx0PDB8fHQ+NDI5NDk2NzI5NSl0aHJvdyBuZXcgWSgiQSBudW1iZXIgYmV0d2VlbiAwIGFuZCAoMl4zMiktMSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdCE9PTAmJih0JnQtMSk9PT0wfTtLdC5uZXh0UG93ZXJPZlR3bz1mdW5jdGlvbih0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8MHx8dD4yMTQ3NDgzNjQ4KXRocm93IG5ldyBZKCJBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDJeMzEgaXMgcmVxdWlyZWQuIik7cmV0dXJuLS10LHR8PXQ+PjEsdHw9dD4+Mix0fD10Pj40LHR8PXQ+PjgsdHw9dD4+MTYsKyt0LHR9O0t0LnByZXZpb3VzUG93ZXJPZlR3bz1mdW5jdGlvbih0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8MHx8dD40Mjk0OTY3Mjk1KXRocm93IG5ldyBZKCJBIG51bWJlciBiZXR3ZWVuIDAgYW5kICgyXjMyKS0xIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0fD10Pj4xLHR8PXQ+PjIsdHw9dD4+NCx0fD10Pj44LHR8PXQ+PjE2LHR8PXQ+PjMyLHQ9KHQ+Pj4wKS0odD4+PjEpLHR9O0t0LmNsYW1wPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCkscC50eXBlT2YubnVtYmVyKCJtaW4iLGUpLHAudHlwZU9mLm51bWJlcigibWF4IixpKSx0PGU/ZTp0Pmk/aTp0fTtuVz1uZXcgbjAuZGVmYXVsdDtLdC5zZXRSYW5kb21OdW1iZXJTZWVkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzZWVkIGlzIHJlcXVpcmVkLiIpO25XPW5ldyBuMC5kZWZhdWx0KHQpfTtLdC5uZXh0UmFuZG9tTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5XLnJhbmRvbSgpfTtLdC5yYW5kb21CZXR3ZWVuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEt0Lm5leHRSYW5kb21OdW1iZXIoKSooZS10KSt0fTtLdC5hY29zQ2xhbXBlZD1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE1hdGguYWNvcyhLdC5jbGFtcCh0LC0xLDEpKX07S3QuYXNpbkNsYW1wZWQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3JldHVybiBNYXRoLmFzaW4oS3QuY2xhbXAodCwtMSwxKSl9O0t0LmNob3JkTGVuZ3RoPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyYWRpdXMgaXMgcmVxdWlyZWQuIik7cmV0dXJuIDIqZSpNYXRoLnNpbih0Ki41KX07S3QubG9nQmFzZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJudW1iZXIgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImJhc2UgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE1hdGgubG9nKHQpL01hdGgubG9nKGUpfTtLdC5jYnJ0PVooTWF0aC5jYnJ0LGZ1bmN0aW9uKGUpe2xldCBpPU1hdGgucG93KE1hdGguYWJzKGUpLC4zMzMzMzMzMzMzMzMzMzMzKTtyZXR1cm4gZTwwPy1pOml9KTtLdC5sb2cyPVooTWF0aC5sb2cyLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKSpNYXRoLkxPRzJFfSk7S3QuZm9nPWZ1bmN0aW9uKHQsZSl7bGV0IGk9dCplO3JldHVybiAxLU1hdGguZXhwKC0oaSppKSl9O0t0LmZhc3RBcHByb3hpbWF0ZUF0YW49ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigieCIsdCksdCooLS4xNzg0Kk1hdGguYWJzKHQpLS4wNjYzKnQqdCsxLjAzMDEpfTtLdC5mYXN0QXBwcm94aW1hdGVBdGFuMj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm51bWJlcigieCIsdCkscC50eXBlT2YubnVtYmVyKCJ5IixlKTtsZXQgaSxuPU1hdGguYWJzKHQpO2k9TWF0aC5hYnMoZSk7bGV0IHM9TWF0aC5tYXgobixpKTtpPU1hdGgubWluKG4saSk7bGV0IG89aS9zO2lmKGlzTmFOKG8pKXRocm93IG5ldyBZKCJlaXRoZXIgeCBvciB5IG11c3QgYmUgbm9uemVybyIpO3JldHVybiBuPUt0LmZhc3RBcHByb3hpbWF0ZUF0YW4obyksbj1NYXRoLmFicyhlKT5NYXRoLmFicyh0KT9LdC5QSV9PVkVSX1RXTy1uOm4sbj10PDA/S3QuUEktbjpuLG49ZTwwPy1uOm4sbn07TD1LdH0pO2Z1bmN0aW9uIFJlKHQsZSl7dGhpcy54PVoodCwwKSx0aGlzLnk9WihlLDApfXZhciBlWixzVyxvVyxyVyxrOCxudCxYZT1PKCgpPT57YWUoKTtidCgpO210KCk7VnQoKTtfZSgpO1JlLmZyb21FbGVtZW50cz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG0oaSk/KGkueD10LGkueT1lLGkpOm5ldyBSZSh0LGUpfTtSZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlKTpuZXcgUmUodC54LHQueSl9O1JlLmZyb21DYXJ0ZXNpYW4zPVJlLmNsb25lO1JlLmZyb21DYXJ0ZXNpYW40PVJlLmNsb25lO1JlLnBhY2tlZExlbmd0aD0yO1JlLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaV09dC55LGV9O1JlLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApLG0oaSl8fChpPW5ldyBSZSksaS54PXRbZSsrXSxpLnk9dFtlXSxpfTtSZS5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImFycmF5Iix0KTtsZXQgaT10Lmxlbmd0aCxuPWkqMjtpZighbShlKSllPW5ldyBBcnJheShuKTtlbHNle2lmKCFBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aCE9PW4pdGhyb3cgbmV3IFkoIklmIHJlc3VsdCBpcyBhIHR5cGVkIGFycmF5LCBpdCBtdXN0IGhhdmUgZXhhY3RseSBhcnJheS5sZW5ndGggKiAyIGVsZW1lbnRzIik7ZS5sZW5ndGghPT1uJiYoZS5sZW5ndGg9bil9Zm9yKGxldCBzPTA7czxpOysrcylSZS5wYWNrKHRbc10sZSxzKjIpO3JldHVybiBlfTtSZS51bnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe2lmKHAuZGVmaW5lZCgiYXJyYXkiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJhcnJheS5sZW5ndGgiLHQubGVuZ3RoLDIpLHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBZKCJhcnJheSBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIuIik7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pLzI6ZT1uZXcgQXJyYXkoaS8yKTtmb3IobGV0IG49MDtuPGk7bis9Mil7bGV0IHM9bi8yO2Vbc109UmUudW5wYWNrKHQsbixlW3NdKX1yZXR1cm4gZX07UmUuZnJvbUFycmF5PVJlLnVucGFjaztSZS5tYXhpbXVtQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksTWF0aC5tYXgodC54LHQueSl9O1JlLm1pbmltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1pbih0LngsdC55KX07UmUubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5taW4odC54LGUueCksaS55PU1hdGgubWluKHQueSxlLnkpLGl9O1JlLm1heGltdW1CeUNvbXBvbmVudD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiZmlyc3QiLHQpLHAudHlwZU9mLm9iamVjdCgic2Vjb25kIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PU1hdGgubWF4KHQueCxlLngpLGkueT1NYXRoLm1heCh0LnksZS55KSxpfTtSZS5jbGFtcD1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLnR5cGVPZi5vYmplY3QoIm1pbiIsZSkscC50eXBlT2Yub2JqZWN0KCJtYXgiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgcz1MLmNsYW1wKHQueCxlLngsaS54KSxvPUwuY2xhbXAodC55LGUueSxpLnkpO3JldHVybiBuLng9cyxuLnk9byxufTtSZS5tYWduaXR1ZGVTcXVhcmVkPWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksdC54KnQueCt0LnkqdC55fTtSZS5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydChSZS5tYWduaXR1ZGVTcXVhcmVkKHQpKX07ZVo9bmV3IFJlO1JlLmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksUmUuc3VidHJhY3QodCxlLGVaKSxSZS5tYWduaXR1ZGUoZVopfTtSZS5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxSZS5zdWJ0cmFjdCh0LGUsZVopLFJlLm1hZ25pdHVkZVNxdWFyZWQoZVopfTtSZS5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPVJlLm1hZ25pdHVkZSh0KTtpZihlLng9dC54L2ksZS55PXQueS9pLGlzTmFOKGUueCl8fGlzTmFOKGUueSkpdGhyb3cgbmV3IFkoIm5vcm1hbGl6ZWQgcmVzdWx0IGlzIG5vdCBhIG51bWJlciIpO3JldHVybiBlfTtSZS5kb3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx0LngqZS54K3QueSplLnl9O1JlLmNyb3NzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueS10LnkqZS54fTtSZS5tdWx0aXBseUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54KmUueCxpLnk9dC55KmUueSxpfTtSZS5kaXZpZGVDb21wb25lbnRzPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueC9lLngsaS55PXQueS9lLnksaX07UmUuYWRkPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueCtlLngsaS55PXQueStlLnksaX07UmUuc3VidHJhY3Q9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54LWUueCxpLnk9dC55LWUueSxpfTtSZS5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueCplLGkueT10LnkqZSxpfTtSZS5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngvZSxpLnk9dC55L2UsaX07UmUubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZX07UmUuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PU1hdGguYWJzKHQueCksZS55PU1hdGguYWJzKHQueSksZX07c1c9bmV3IFJlO1JlLmxlcnA9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHAudHlwZU9mLm9iamVjdCgiZW5kIixlKSxwLnR5cGVPZi5udW1iZXIoInQiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxSZS5tdWx0aXBseUJ5U2NhbGFyKGUsaSxzVyksbj1SZS5tdWx0aXBseUJ5U2NhbGFyKHQsMS1pLG4pLFJlLmFkZChzVyxuLG4pfTtvVz1uZXcgUmUsclc9bmV3IFJlO1JlLmFuZ2xlQmV0d2Vlbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLFJlLm5vcm1hbGl6ZSh0LG9XKSxSZS5ub3JtYWxpemUoZSxyVyksTC5hY29zQ2xhbXBlZChSZS5kb3Qob1csclcpKX07azg9bmV3IFJlO1JlLm1vc3RPcnRob2dvbmFsQXhpcz1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9UmUubm9ybWFsaXplKHQsazgpO3JldHVybiBSZS5hYnMoaSxpKSxpLng8PWkueT9lPVJlLmNsb25lKFJlLlVOSVRfWCxlKTplPVJlLmNsb25lKFJlLlVOSVRfWSxlKSxlfTtSZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQueD09PWUueCYmdC55PT09ZS55fTtSZS5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQueD09PWVbaV0mJnQueT09PWVbaSsxXX07UmUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJkwuZXF1YWxzRXBzaWxvbih0LngsZS54LGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnksZS55LGksbil9O1JlLlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgUmUoMCwwKSk7UmUuT05FPU9iamVjdC5mcmVlemUobmV3IFJlKDEsMSkpO1JlLlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyBSZSgxLDApKTtSZS5VTklUX1k9T2JqZWN0LmZyZWV6ZShuZXcgUmUoMCwxKSk7UmUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBSZS5jbG9uZSh0aGlzLHQpfTtSZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBSZS5lcXVhbHModGhpcyx0KX07UmUucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBSZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLGkpfTtSZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9KWB9O250PVJlfSk7ZnVuY3Rpb24gd3QodCxlLGkpe3RoaXMueD1aKHQsMCksdGhpcy55PVooZSwwKSx0aGlzLno9WihpLDApfXZhciBuWixhVyxpWixzMCxMOCxPcixSbSx5OCxsLEh0PU8oKCk9PnthZSgpO2J0KCk7bXQoKTtWdCgpO19lKCk7d3QuZnJvbVNwaGVyaWNhbD1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgic3BoZXJpY2FsIix0KSxtKGUpfHwoZT1uZXcgd3QpO2xldCBpPXQuY2xvY2ssbj10LmNvbmUscz1aKHQubWFnbml0dWRlLDEpLG89cypNYXRoLnNpbihuKTtyZXR1cm4gZS54PW8qTWF0aC5jb3MoaSksZS55PW8qTWF0aC5zaW4oaSksZS56PXMqTWF0aC5jb3MobiksZX07d3QuZnJvbUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBtKG4pPyhuLng9dCxuLnk9ZSxuLno9aSxuKTpuZXcgd3QodCxlLGkpfTt3dC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlLno9dC56LGUpOm5ldyB3dCh0LngsdC55LHQueil9O3d0LmZyb21DYXJ0ZXNpYW40PXd0LmNsb25lO3d0LnBhY2tlZExlbmd0aD0zO3d0LnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaSsrXT10LnksZVtpXT10LnosZX07d3QudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCksbShpKXx8KGk9bmV3IHd0KSxpLng9dFtlKytdLGkueT10W2UrK10saS56PXRbZV0saX07d3QucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IGk9dC5sZW5ndGgsbj1pKjM7aWYoIW0oZSkpZT1uZXcgQXJyYXkobik7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1uKXRocm93IG5ldyBZKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogMyBlbGVtZW50cyIpO2UubGVuZ3RoIT09biYmKGUubGVuZ3RoPW4pfWZvcihsZXQgcz0wO3M8aTsrK3Mpd3QucGFjayh0W3NdLGUscyozKTtyZXR1cm4gZX07d3QudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZihwLmRlZmluZWQoImFycmF5Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCwzKSx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgWSgiYXJyYXkgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzLiIpO2xldCBpPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9aS8zOmU9bmV3IEFycmF5KGkvMyk7Zm9yKGxldCBuPTA7bjxpO24rPTMpe2xldCBzPW4vMztlW3NdPXd0LnVucGFjayh0LG4sZVtzXSl9cmV0dXJuIGV9O3d0LmZyb21BcnJheT13dC51bnBhY2s7d3QubWF4aW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWF4KHQueCx0LnksdC56KX07d3QubWluaW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWluKHQueCx0LnksdC56KX07d3QubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5taW4odC54LGUueCksaS55PU1hdGgubWluKHQueSxlLnkpLGkuej1NYXRoLm1pbih0LnosZS56KSxpfTt3dC5tYXhpbXVtQnlDb21wb25lbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImZpcnN0Iix0KSxwLnR5cGVPZi5vYmplY3QoInNlY29uZCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD1NYXRoLm1heCh0LngsZS54KSxpLnk9TWF0aC5tYXgodC55LGUueSksaS56PU1hdGgubWF4KHQueixlLnopLGl9O3d0LmNsYW1wPWZ1bmN0aW9uKHQsZSxpLG4pe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAudHlwZU9mLm9iamVjdCgibWluIixlKSxwLnR5cGVPZi5vYmplY3QoIm1heCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBzPUwuY2xhbXAodC54LGUueCxpLngpLG89TC5jbGFtcCh0LnksZS55LGkueSkscj1MLmNsYW1wKHQueixlLnosaS56KTtyZXR1cm4gbi54PXMsbi55PW8sbi56PXIsbn07d3QubWFnbml0dWRlU3F1YXJlZD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHQueCp0LngrdC55KnQueSt0LnoqdC56fTt3dC5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh3dC5tYWduaXR1ZGVTcXVhcmVkKHQpKX07blo9bmV3IHd0O3d0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksd3Quc3VidHJhY3QodCxlLG5aKSx3dC5tYWduaXR1ZGUoblopfTt3dC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx3dC5zdWJ0cmFjdCh0LGUsblopLHd0Lm1hZ25pdHVkZVNxdWFyZWQoblopfTt3dC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXd0Lm1hZ25pdHVkZSh0KTtpZihlLng9dC54L2ksZS55PXQueS9pLGUuej10LnovaSxpc05hTihlLngpfHxpc05hTihlLnkpfHxpc05hTihlLnopKXRocm93IG5ldyBZKCJub3JtYWxpemVkIHJlc3VsdCBpcyBub3QgYSBudW1iZXIiKTtyZXR1cm4gZX07d3QuZG90PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueCt0LnkqZS55K3QueiplLnp9O3d0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngqZS54LGkueT10LnkqZS55LGkuej10LnoqZS56LGl9O3d0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54L2UueCxpLnk9dC55L2UueSxpLno9dC56L2UueixpfTt3dC5hZGQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54K2UueCxpLnk9dC55K2UueSxpLno9dC56K2UueixpfTt3dC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngtZS54LGkueT10LnktZS55LGkuej10LnotZS56LGl9O3d0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54KmUsaS55PXQueSplLGkuej10LnoqZSxpfTt3dC5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngvZSxpLnk9dC55L2UsaS56PXQuei9lLGl9O3d0Lm5lZ2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD0tdC54LGUueT0tdC55LGUuej0tdC56LGV9O3d0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD1NYXRoLmFicyh0LngpLGUueT1NYXRoLmFicyh0LnkpLGUuej1NYXRoLmFicyh0LnopLGV9O2FXPW5ldyB3dDt3dC5sZXJwPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSxwLnR5cGVPZi5vYmplY3QoImVuZCIsZSkscC50eXBlT2YubnVtYmVyKCJ0IixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksd3QubXVsdGlwbHlCeVNjYWxhcihlLGksYVcpLG49d3QubXVsdGlwbHlCeVNjYWxhcih0LDEtaSxuKSx3dC5hZGQoYVcsbixuKX07aVo9bmV3IHd0LHMwPW5ldyB3dDt3dC5hbmdsZUJldHdlZW49ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHd0Lm5vcm1hbGl6ZSh0LGlaKSx3dC5ub3JtYWxpemUoZSxzMCk7bGV0IGk9d3QuZG90KGlaLHMwKSxuPXd0Lm1hZ25pdHVkZSh3dC5jcm9zcyhpWixzMCxpWikpO3JldHVybiBNYXRoLmF0YW4yKG4saSl9O0w4PW5ldyB3dDt3dC5tb3N0T3J0aG9nb25hbEF4aXM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXd0Lm5vcm1hbGl6ZSh0LEw4KTtyZXR1cm4gd3QuYWJzKGksaSksaS54PD1pLnk/aS54PD1pLno/ZT13dC5jbG9uZSh3dC5VTklUX1gsZSk6ZT13dC5jbG9uZSh3dC5VTklUX1osZSk6aS55PD1pLno/ZT13dC5jbG9uZSh3dC5VTklUX1ksZSk6ZT13dC5jbG9uZSh3dC5VTklUX1osZSksZX07d3QucHJvamVjdFZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhIix0KSxwLmRlZmluZWQoImIiLGUpLHAuZGVmaW5lZCgicmVzdWx0IixpKTtsZXQgbj13dC5kb3QodCxlKS93dC5kb3QoZSxlKTtyZXR1cm4gd3QubXVsdGlwbHlCeVNjYWxhcihlLG4saSl9O3d0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUuen07d3QuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Lng9PT1lW2ldJiZ0Lnk9PT1lW2krMV0mJnQuej09PWVbaSsyXX07d3QuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJkwuZXF1YWxzRXBzaWxvbih0LngsZS54LGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnksZS55LGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnosZS56LGksbil9O3d0LmNyb3NzPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10Lngscz10Lnksbz10Lnoscj1lLngsYT1lLnksaD1lLnosQT1zKmgtbyphLGQ9bypyLW4qaCxmPW4qYS1zKnI7cmV0dXJuIGkueD1BLGkueT1kLGkuej1mLGl9O3d0Lm1pZHBvaW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PSh0LngrZS54KSouNSxpLnk9KHQueStlLnkpKi41LGkuej0odC56K2UueikqLjUsaX07d3QuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLHQ9TC50b1JhZGlhbnModCksZT1MLnRvUmFkaWFucyhlKSx3dC5mcm9tUmFkaWFucyh0LGUsaSxuLHMpfTtPcj1uZXcgd3QsUm09bmV3IHd0LHk4PW5ldyB3dCg2Mzc4MTM3KjYzNzgxMzcsNjM3ODEzNyo2Mzc4MTM3LDYzNTY3NTIzMTQyNDUxNzllLTkqNjM1Njc1MjMxNDI0NTE3OWUtOSk7d3QuZnJvbVJhZGlhbnM9ZnVuY3Rpb24odCxlLGksbixzKXtwLnR5cGVPZi5udW1iZXIoImxvbmdpdHVkZSIsdCkscC50eXBlT2YubnVtYmVyKCJsYXRpdHVkZSIsZSksaT1aKGksMCk7bGV0IG89bShuKT9uLnJhZGlpU3F1YXJlZDp5OCxyPU1hdGguY29zKGUpO09yLng9cipNYXRoLmNvcyh0KSxPci55PXIqTWF0aC5zaW4odCksT3Iuej1NYXRoLnNpbihlKSxPcj13dC5ub3JtYWxpemUoT3IsT3IpLHd0Lm11bHRpcGx5Q29tcG9uZW50cyhvLE9yLFJtKTtsZXQgYT1NYXRoLnNxcnQod3QuZG90KE9yLFJtKSk7cmV0dXJuIFJtPXd0LmRpdmlkZUJ5U2NhbGFyKFJtLGEsUm0pLE9yPXd0Lm11bHRpcGx5QnlTY2FsYXIoT3IsaSxPciksbShzKXx8KHM9bmV3IHd0KSx3dC5hZGQoUm0sT3Iscyl9O3d0LmZyb21EZWdyZWVzQXJyYXk9ZnVuY3Rpb24odCxlLGkpe2lmKHAuZGVmaW5lZCgiY29vcmRpbmF0ZXMiLHQpLHQubGVuZ3RoPDJ8fHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBZKCJ0aGUgbnVtYmVyIG9mIGNvb3JkaW5hdGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyIGFuZCBhdCBsZWFzdCAyIik7bGV0IG49dC5sZW5ndGg7bShpKT9pLmxlbmd0aD1uLzI6aT1uZXcgQXJyYXkobi8yKTtmb3IobGV0IHM9MDtzPG47cys9Mil7bGV0IG89dFtzXSxyPXRbcysxXSxhPXMvMjtpW2FdPXd0LmZyb21EZWdyZWVzKG8sciwwLGUsaVthXSl9cmV0dXJuIGl9O3d0LmZyb21SYWRpYW5zQXJyYXk9ZnVuY3Rpb24odCxlLGkpe2lmKHAuZGVmaW5lZCgiY29vcmRpbmF0ZXMiLHQpLHQubGVuZ3RoPDJ8fHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBZKCJ0aGUgbnVtYmVyIG9mIGNvb3JkaW5hdGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyIGFuZCBhdCBsZWFzdCAyIik7bGV0IG49dC5sZW5ndGg7bShpKT9pLmxlbmd0aD1uLzI6aT1uZXcgQXJyYXkobi8yKTtmb3IobGV0IHM9MDtzPG47cys9Mil7bGV0IG89dFtzXSxyPXRbcysxXSxhPXMvMjtpW2FdPXd0LmZyb21SYWRpYW5zKG8sciwwLGUsaVthXSl9cmV0dXJuIGl9O3d0LmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzPWZ1bmN0aW9uKHQsZSxpKXtpZihwLmRlZmluZWQoImNvb3JkaW5hdGVzIix0KSx0Lmxlbmd0aDwzfHx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgWSgidGhlIG51bWJlciBvZiBjb29yZGluYXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMyBhbmQgYXQgbGVhc3QgMyIpO2xldCBuPXQubGVuZ3RoO20oaSk/aS5sZW5ndGg9bi8zOmk9bmV3IEFycmF5KG4vMyk7Zm9yKGxldCBzPTA7czxuO3MrPTMpe2xldCBvPXRbc10scj10W3MrMV0sYT10W3MrMl0saD1zLzM7aVtoXT13dC5mcm9tRGVncmVlcyhvLHIsYSxlLGlbaF0pfXJldHVybiBpfTt3dC5mcm9tUmFkaWFuc0FycmF5SGVpZ2h0cz1mdW5jdGlvbih0LGUsaSl7aWYocC5kZWZpbmVkKCJjb29yZGluYXRlcyIsdCksdC5sZW5ndGg8M3x8dC5sZW5ndGglMyE9PTApdGhyb3cgbmV3IFkoInRoZSBudW1iZXIgb2YgY29vcmRpbmF0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMgYW5kIGF0IGxlYXN0IDMiKTtsZXQgbj10Lmxlbmd0aDttKGkpP2kubGVuZ3RoPW4vMzppPW5ldyBBcnJheShuLzMpO2ZvcihsZXQgcz0wO3M8bjtzKz0zKXtsZXQgbz10W3NdLHI9dFtzKzFdLGE9dFtzKzJdLGg9cy8zO2lbaF09d3QuZnJvbVJhZGlhbnMobyxyLGEsZSxpW2hdKX1yZXR1cm4gaX07d3QuWkVSTz1PYmplY3QuZnJlZXplKG5ldyB3dCgwLDAsMCkpO3d0Lk9ORT1PYmplY3QuZnJlZXplKG5ldyB3dCgxLDEsMSkpO3d0LlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyB3dCgxLDAsMCkpO3d0LlVOSVRfWT1PYmplY3QuZnJlZXplKG5ldyB3dCgwLDEsMCkpO3d0LlVOSVRfWj1PYmplY3QuZnJlZXplKG5ldyB3dCgwLDAsMSkpO3d0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QuY2xvbmUodGhpcyx0KX07d3QucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gd3QuZXF1YWxzKHRoaXMsdCl9O3d0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gd3QuZXF1YWxzRXBzaWxvbih0aGlzLHQsZSxpKX07d3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMueH0sICR7dGhpcy55fSwgJHt0aGlzLnp9KWB9O2w9d3R9KTtmdW5jdGlvbiBQOCh0LGUsaSxuLHMpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJjYXJ0ZXNpYW4gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9uZU92ZXJSYWRpaSBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgib25lT3ZlclJhZGlpU3F1YXJlZCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgWSgiY2VudGVyVG9sZXJhbmNlU3F1YXJlZCBpcyByZXF1aXJlZC4iKTtsZXQgbz10Lngscj10LnksYT10LnosaD1lLngsQT1lLnksZD1lLnosZj1vKm8qaCpoLEU9cipyKkEqQSxfPWEqYSpkKmQsUj1mK0UrXyxJPU1hdGguc3FydCgxL1IpLEM9bC5tdWx0aXBseUJ5U2NhbGFyKHQsSSx3OCk7aWYoUjxuKXJldHVybiBpc0Zpbml0ZShJKT9sLmNsb25lKEMscyk6dm9pZCAwO2xldCBOPWkueCxUPWkueSxGPWkueixiPXg4O2IueD1DLngqTioyLGIueT1DLnkqVCoyLGIuej1DLnoqRioyO2xldCBHPSgxLUkpKmwubWFnbml0dWRlKHQpLyguNSpsLm1hZ25pdHVkZShiKSksTT0wLFEsVSxrLHksYyxnLFYsRCx3LHgsSDtkb3tHLT1NLGs9MS8oMStHKk4pLHk9MS8oMStHKlQpLGM9MS8oMStHKkYpLGc9ayprLFY9eSp5LEQ9YypjLHc9ZyprLHg9Vip5LEg9RCpjLFE9ZipnK0UqVitfKkQtMSxVPWYqdypOK0UqeCpUK18qSCpGO2xldCBqPS0yKlU7TT1RL2p9d2hpbGUoTWF0aC5hYnMoUSk+TC5FUFNJTE9OMTIpO3JldHVybiBtKHMpPyhzLng9byprLHMueT1yKnkscy56PWEqYyxzKTpuZXcgbChvKmsscip5LGEqYyl9dmFyIHc4LHg4LHNaLG8wPU8oKCk9PntIdCgpO210KCk7VnQoKTtfZSgpO3c4PW5ldyBsLHg4PW5ldyBsO3NaPVA4fSk7ZnVuY3Rpb24gZnModCxlLGkpe3RoaXMubG9uZ2l0dWRlPVoodCwwKSx0aGlzLmxhdGl0dWRlPVooZSwwKSx0aGlzLmhlaWdodD1aKGksMCl9dmFyIEo4LGo4LEg4LHY4LHo4LEs4LHV0LHJpPU8oKCk9PntIdCgpO2FlKCk7YnQoKTttdCgpO19lKCk7bzAoKTtmcy5mcm9tUmFkaWFucz1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLGk9WihpLDApLG0obik/KG4ubG9uZ2l0dWRlPXQsbi5sYXRpdHVkZT1lLG4uaGVpZ2h0PWksbik6bmV3IGZzKHQsZSxpKX07ZnMuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm51bWJlcigibG9uZ2l0dWRlIix0KSxwLnR5cGVPZi5udW1iZXIoImxhdGl0dWRlIixlKSx0PUwudG9SYWRpYW5zKHQpLGU9TC50b1JhZGlhbnMoZSksZnMuZnJvbVJhZGlhbnModCxlLGksbil9O0o4PW5ldyBsLGo4PW5ldyBsLEg4PW5ldyBsLHY4PW5ldyBsKDEvNjM3ODEzNywxLzYzNzgxMzcsMS82MzU2NzUyMzE0MjQ1MTc5ZS05KSx6OD1uZXcgbCgxLyg2Mzc4MTM3KjYzNzgxMzcpLDEvKDYzNzgxMzcqNjM3ODEzNyksMS8oNjM1Njc1MjMxNDI0NTE3OWUtOSo2MzU2NzUyMzE0MjQ1MTc5ZS05KSksSzg9TC5FUFNJTE9OMTtmcy5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1tKGUpP2Uub25lT3ZlclJhZGlpOnY4LHM9bShlKT9lLm9uZU92ZXJSYWRpaVNxdWFyZWQ6ejgsbz1tKGUpP2UuX2NlbnRlclRvbGVyYW5jZVNxdWFyZWQ6Szgscj1zWih0LG4scyxvLGo4KTtpZighbShyKSlyZXR1cm47bGV0IGE9bC5tdWx0aXBseUNvbXBvbmVudHMocixzLEo4KTthPWwubm9ybWFsaXplKGEsYSk7bGV0IGg9bC5zdWJ0cmFjdCh0LHIsSDgpLEE9TWF0aC5hdGFuMihhLnksYS54KSxkPU1hdGguYXNpbihhLnopLGY9TC5zaWduKGwuZG90KGgsdCkpKmwubWFnbml0dWRlKGgpO3JldHVybiBtKGkpPyhpLmxvbmdpdHVkZT1BLGkubGF0aXR1ZGU9ZCxpLmhlaWdodD1mLGkpOm5ldyBmcyhBLGQsZil9O2ZzLnRvQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJjYXJ0b2dyYXBoaWMiLHQpLGwuZnJvbVJhZGlhbnModC5sb25naXR1ZGUsdC5sYXRpdHVkZSx0LmhlaWdodCxlLGkpfTtmcy5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPXQubG9uZ2l0dWRlLGUubGF0aXR1ZGU9dC5sYXRpdHVkZSxlLmhlaWdodD10LmhlaWdodCxlKTpuZXcgZnModC5sb25naXR1ZGUsdC5sYXRpdHVkZSx0LmhlaWdodCl9O2ZzLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC5sb25naXR1ZGU9PT1lLmxvbmdpdHVkZSYmdC5sYXRpdHVkZT09PWUubGF0aXR1ZGUmJnQuaGVpZ2h0PT09ZS5oZWlnaHR9O2ZzLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC5sb25naXR1ZGUtZS5sb25naXR1ZGUpPD1pJiZNYXRoLmFicyh0LmxhdGl0dWRlLWUubGF0aXR1ZGUpPD1pJiZNYXRoLmFicyh0LmhlaWdodC1lLmhlaWdodCk8PWl9O2ZzLlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgZnMoMCwwLDApKTtmcy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGZzLmNsb25lKHRoaXMsdCl9O2ZzLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZzLmVxdWFscyh0aGlzLHQpfTtmcy5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBmcy5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07ZnMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMubG9uZ2l0dWRlfSwgJHt0aGlzLmxhdGl0dWRlfSwgJHt0aGlzLmhlaWdodH0pYH07dXQ9ZnN9KTtmdW5jdGlvbiBoVyh0LGUsaSxuKXtlPVooZSwwKSxpPVooaSwwKSxuPVoobiwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieCIsZSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieSIsaSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieiIsbiwwKSx0Ll9yYWRpaT1uZXcgbChlLGksbiksdC5fcmFkaWlTcXVhcmVkPW5ldyBsKGUqZSxpKmksbipuKSx0Ll9yYWRpaVRvVGhlRm91cnRoPW5ldyBsKGUqZSplKmUsaSppKmkqaSxuKm4qbipuKSx0Ll9vbmVPdmVyUmFkaWk9bmV3IGwoZT09PTA/MDoxL2UsaT09PTA/MDoxL2ksbj09PTA/MDoxL24pLHQuX29uZU92ZXJSYWRpaVNxdWFyZWQ9bmV3IGwoZT09PTA/MDoxLyhlKmUpLGk9PT0wPzA6MS8oaSppKSxuPT09MD8wOjEvKG4qbikpLHQuX21pbmltdW1SYWRpdXM9TWF0aC5taW4oZSxpLG4pLHQuX21heGltdW1SYWRpdXM9TWF0aC5tYXgoZSxpLG4pLHQuX2NlbnRlclRvbGVyYW5jZVNxdWFyZWQ9TC5FUFNJTE9OMSx0Ll9yYWRpaVNxdWFyZWQueiE9PTAmJih0Ll9zcXVhcmVkWE92ZXJTcXVhcmVkWj10Ll9yYWRpaVNxdWFyZWQueC90Ll9yYWRpaVNxdWFyZWQueil9ZnVuY3Rpb24gTGkodCxlLGkpe3RoaXMuX3JhZGlpPXZvaWQgMCx0aGlzLl9yYWRpaVNxdWFyZWQ9dm9pZCAwLHRoaXMuX3JhZGlpVG9UaGVGb3VydGg9dm9pZCAwLHRoaXMuX29uZU92ZXJSYWRpaT12b2lkIDAsdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZD12b2lkIDAsdGhpcy5fbWluaW11bVJhZGl1cz12b2lkIDAsdGhpcy5fbWF4aW11bVJhZGl1cz12b2lkIDAsdGhpcy5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZD12b2lkIDAsdGhpcy5fc3F1YXJlZFhPdmVyU3F1YXJlZFo9dm9pZCAwLGhXKHRoaXMsdCxlLGkpfWZ1bmN0aW9uIEFXKHQsZSxpKXtwLnR5cGVPZi5udW1iZXIoImEiLHQpLHAudHlwZU9mLm51bWJlcigiYiIsZSkscC50eXBlT2YuZnVuYygiZnVuYyIsaSk7bGV0IG49LjUqKGUrdCkscz0uNSooZS10KSxvPTA7Zm9yKGxldCByPTA7cjw1O3IrKyl7bGV0IGE9cypucVtyXTtvKz1zcVtyXSooaShuK2EpK2kobi1hKSl9cmV0dXJuIG8qPXMsb312YXIgWDgscTgsJDgsdHEsZXEsaXEsbnEsc3Esb3QsVmU9TygoKT0+e1hlKCk7SHQoKTtyaSgpO2FlKCk7YnQoKTttdCgpO1Z0KCk7X2UoKTtvMCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKExpLnByb3RvdHlwZSx7cmFkaWk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYWRpaX19LHJhZGlpU3F1YXJlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpU3F1YXJlZH19LHJhZGlpVG9UaGVGb3VydGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYWRpaVRvVGhlRm91cnRofX0sb25lT3ZlclJhZGlpOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25lT3ZlclJhZGlpfX0sb25lT3ZlclJhZGlpU3F1YXJlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uZU92ZXJSYWRpaVNxdWFyZWR9fSxtaW5pbXVtUmFkaXVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWluaW11bVJhZGl1c319LG1heGltdW1SYWRpdXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhpbXVtUmFkaXVzfX19KTtMaS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXJldHVybjtsZXQgaT10Ll9yYWRpaTtyZXR1cm4gbShlKT8obC5jbG9uZShpLGUuX3JhZGlpKSxsLmNsb25lKHQuX3JhZGlpU3F1YXJlZCxlLl9yYWRpaVNxdWFyZWQpLGwuY2xvbmUodC5fcmFkaWlUb1RoZUZvdXJ0aCxlLl9yYWRpaVRvVGhlRm91cnRoKSxsLmNsb25lKHQuX29uZU92ZXJSYWRpaSxlLl9vbmVPdmVyUmFkaWkpLGwuY2xvbmUodC5fb25lT3ZlclJhZGlpU3F1YXJlZCxlLl9vbmVPdmVyUmFkaWlTcXVhcmVkKSxlLl9taW5pbXVtUmFkaXVzPXQuX21pbmltdW1SYWRpdXMsZS5fbWF4aW11bVJhZGl1cz10Ll9tYXhpbXVtUmFkaXVzLGUuX2NlbnRlclRvbGVyYW5jZVNxdWFyZWQ9dC5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZCxlKTpuZXcgTGkoaS54LGkueSxpLnopfTtMaS5mcm9tQ2FydGVzaWFuMz1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpfHwoZT1uZXcgTGkpLG0odCkmJmhXKGUsdC54LHQueSx0LnopLGV9O0xpLldHUzg0PU9iamVjdC5mcmVlemUobmV3IExpKDYzNzgxMzcsNjM3ODEzNyw2MzU2NzUyMzE0MjQ1MTc5ZS05KSk7TGkuVU5JVF9TUEhFUkU9T2JqZWN0LmZyZWV6ZShuZXcgTGkoMSwxLDEpKTtMaS5NT09OPU9iamVjdC5mcmVlemUobmV3IExpKEwuTFVOQVJfUkFESVVTLEwuTFVOQVJfUkFESVVTLEwuTFVOQVJfUkFESVVTKSk7TGkucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBMaS5jbG9uZSh0aGlzLHQpfTtMaS5wYWNrZWRMZW5ndGg9bC5wYWNrZWRMZW5ndGg7TGkucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGwucGFjayh0Ll9yYWRpaSxlLGkpLGV9O0xpLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49bC51bnBhY2sodCxlKTtyZXR1cm4gTGkuZnJvbUNhcnRlc2lhbjMobixpKX07TGkucHJvdG90eXBlLmdlb2NlbnRyaWNTdXJmYWNlTm9ybWFsPWwubm9ybWFsaXplO0xpLnByb3RvdHlwZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWxDYXJ0b2dyYXBoaWM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRvZ3JhcGhpYyIsdCk7bGV0IGk9dC5sb25naXR1ZGUsbj10LmxhdGl0dWRlLHM9TWF0aC5jb3Mobiksbz1zKk1hdGguY29zKGkpLHI9cypNYXRoLnNpbihpKSxhPU1hdGguc2luKG4pO3JldHVybiBtKGUpfHwoZT1uZXcgbCksZS54PW8sZS55PXIsZS56PWEsbC5ub3JtYWxpemUoZSxlKX07TGkucHJvdG90eXBlLmdlb2RldGljU3VyZmFjZU5vcm1hbD1mdW5jdGlvbih0LGUpe2lmKHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxpc05hTih0LngpfHxpc05hTih0LnkpfHxpc05hTih0LnopKXRocm93IG5ldyBZKCJjYXJ0ZXNpYW4gaGFzIGEgTmFOIGNvbXBvbmVudCIpO2lmKCFsLmVxdWFsc0Vwc2lsb24odCxsLlpFUk8sTC5FUFNJTE9OMTQpKXJldHVybiBtKGUpfHwoZT1uZXcgbCksZT1sLm11bHRpcGx5Q29tcG9uZW50cyh0LHRoaXMuX29uZU92ZXJSYWRpaVNxdWFyZWQsZSksbC5ub3JtYWxpemUoZSxlKX07WDg9bmV3IGwscTg9bmV3IGw7TGkucHJvdG90eXBlLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7bGV0IGk9WDgsbj1xODt0aGlzLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYyh0LGkpLGwubXVsdGlwbHlDb21wb25lbnRzKHRoaXMuX3JhZGlpU3F1YXJlZCxpLG4pO2xldCBzPU1hdGguc3FydChsLmRvdChpLG4pKTtyZXR1cm4gbC5kaXZpZGVCeVNjYWxhcihuLHMsbiksbC5tdWx0aXBseUJ5U2NhbGFyKGksdC5oZWlnaHQsaSksbShlKXx8KGU9bmV3IGwpLGwuYWRkKG4saSxlKX07TGkucHJvdG90eXBlLmNhcnRvZ3JhcGhpY0FycmF5VG9DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydG9ncmFwaGljcyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTtuKyspZVtuXT10aGlzLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHRbbl0sZVtuXSk7cmV0dXJuIGV9OyQ4PW5ldyBsLHRxPW5ldyBsLGVxPW5ldyBsO0xpLnByb3RvdHlwZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYz1mdW5jdGlvbih0LGUpe2xldCBpPXRoaXMuc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0LHRxKTtpZighbShpKSlyZXR1cm47bGV0IG49dGhpcy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaSwkOCkscz1sLnN1YnRyYWN0KHQsaSxlcSksbz1NYXRoLmF0YW4yKG4ueSxuLngpLHI9TWF0aC5hc2luKG4ueiksYT1MLnNpZ24obC5kb3Qocyx0KSkqbC5tYWduaXR1ZGUocyk7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPW8sZS5sYXRpdHVkZT1yLGUuaGVpZ2h0PWEsZSk6bmV3IHV0KG8scixhKX07TGkucHJvdG90eXBlLmNhcnRlc2lhbkFycmF5VG9DYXJ0b2dyYXBoaWNBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTsrK24pZVtuXT10aGlzLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHRbbl0sZVtuXSk7cmV0dXJuIGV9O0xpLnByb3RvdHlwZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNaKHQsdGhpcy5fb25lT3ZlclJhZGlpLHRoaXMuX29uZU92ZXJSYWRpaVNxdWFyZWQsdGhpcy5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZCxlKX07TGkucHJvdG90eXBlLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxtKGUpfHwoZT1uZXcgbCk7bGV0IGk9dC54LG49dC55LHM9dC56LG89dGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZCxyPTEvTWF0aC5zcXJ0KGkqaSpvLngrbipuKm8ueStzKnMqby56KTtyZXR1cm4gbC5tdWx0aXBseUJ5U2NhbGFyKHQscixlKX07TGkucHJvdG90eXBlLnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpfHwoZT1uZXcgbCksbC5tdWx0aXBseUNvbXBvbmVudHModCx0aGlzLl9vbmVPdmVyUmFkaWksZSl9O0xpLnByb3RvdHlwZS50cmFuc2Zvcm1Qb3NpdGlvbkZyb21TY2FsZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpfHwoZT1uZXcgbCksbC5tdWx0aXBseUNvbXBvbmVudHModCx0aGlzLl9yYWRpaSxlKX07TGkucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fG0odCkmJmwuZXF1YWxzKHRoaXMuX3JhZGlpLHQuX3JhZGlpKX07TGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpLnRvU3RyaW5nKCl9O0xpLnByb3RvdHlwZS5nZXRTdXJmYWNlTm9ybWFsSW50ZXJzZWN0aW9uV2l0aFpBeGlzPWZ1bmN0aW9uKHQsZSxpKXtpZihwLnR5cGVPZi5vYmplY3QoInBvc2l0aW9uIix0KSwhTC5lcXVhbHNFcHNpbG9uKHRoaXMuX3JhZGlpLngsdGhpcy5fcmFkaWkueSxMLkVQU0lMT04xNSkpdGhyb3cgbmV3IFkoIkVsbGlwc29pZCBtdXN0IGJlIGFuIGVsbGlwc29pZCBvZiByZXZvbHV0aW9uIChyYWRpaS54ID09IHJhZGlpLnkpIik7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJFbGxpcHNvaWQucmFkaWkueiIsdGhpcy5fcmFkaWkueiwwKSxlPVooZSwwKTtsZXQgbj10aGlzLl9zcXVhcmVkWE92ZXJTcXVhcmVkWjtpZihtKGkpfHwoaT1uZXcgbCksaS54PTAsaS55PTAsaS56PXQueiooMS1uKSwhKE1hdGguYWJzKGkueik+PXRoaXMuX3JhZGlpLnotZSkpcmV0dXJuIGl9O2lxPW5ldyBsO0xpLnByb3RvdHlwZS5nZXRMb2NhbEN1cnZhdHVyZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgic3VyZmFjZVBvc2l0aW9uIix0KSxtKGUpfHwoZT1uZXcgbnQpO2xldCBpPXRoaXMuZ2V0U3VyZmFjZU5vcm1hbEludGVyc2VjdGlvbldpdGhaQXhpcyh0LDAsaXEpLG49bC5kaXN0YW5jZSh0LGkpLHM9dGhpcy5taW5pbXVtUmFkaXVzKm4vdGhpcy5tYXhpbXVtUmFkaXVzKioyLG89bipzKioyO3JldHVybiBudC5mcm9tRWxlbWVudHMoMS9uLDEvbyxlKX07bnE9Wy4xNDg4NzQzMzg5ODE2MywuNDMzMzk1Mzk0MTI5MjUsLjY3OTQwOTU2ODI5OTAyLC44NjUwNjMzNjY2ODg5OCwuOTczOTA2NTI4NTE3MTcsMF0sc3E9Wy4yOTU1MjQyMjQ3MTQ3NSwuMjY5MjY2NzE5MzA5OTksLjIxOTA4NjM2MjUxNTk4LC4xNDk0NTEzNDkxNTA1OCwuMDY2NjcxMzQ0MzA4Njg0LDBdO0xpLnByb3RvdHlwZS5zdXJmYWNlQXJlYT1mdW5jdGlvbih0KXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCk7bGV0IGU9dC53ZXN0LGk9dC5lYXN0LG49dC5zb3V0aCxzPXQubm9ydGg7Zm9yKDtpPGU7KWkrPUwuVFdPX1BJO2xldCBvPXRoaXMuX3JhZGlpU3F1YXJlZCxyPW8ueCxhPW8ueSxoPW8ueixBPXIqYTtyZXR1cm4gQVcobixzLGZ1bmN0aW9uKGQpe2xldCBmPU1hdGguY29zKGQpLEU9TWF0aC5zaW4oZCk7cmV0dXJuIE1hdGguY29zKGQpKkFXKGUsaSxmdW5jdGlvbihfKXtsZXQgUj1NYXRoLmNvcyhfKSxJPU1hdGguc2luKF8pO3JldHVybiBNYXRoLnNxcnQoQSpFKkUraCooYSpSKlIrcipJKkkpKmYqZil9KX0pfTtvdD1MaX0pO2Z1bmN0aW9uIG9aKHQpe3RoaXMuX2VsbGlwc29pZD1aKHQsb3QuV0dTODQpLHRoaXMuX3NlbWltYWpvckF4aXM9dGhpcy5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsdGhpcy5fb25lT3ZlclNlbWltYWpvckF4aXM9MS90aGlzLl9zZW1pbWFqb3JBeGlzfXZhciBPcyx6QT1PKCgpPT57SHQoKTtyaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMob1oucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fX0pO29aLnByb3RvdHlwZS5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7bGV0IGk9dGhpcy5fc2VtaW1ham9yQXhpcyxuPXQubG9uZ2l0dWRlKmkscz10LmxhdGl0dWRlKmksbz10LmhlaWdodDtyZXR1cm4gbShlKT8oZS54PW4sZS55PXMsZS56PW8sZSk6bmV3IGwobixzLG8pfTtvWi5wcm90b3R5cGUudW5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNhcnRlc2lhbiBpcyByZXF1aXJlZCIpO2xldCBpPXRoaXMuX29uZU92ZXJTZW1pbWFqb3JBeGlzLG49dC54Kmkscz10LnkqaSxvPXQuejtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9bixlLmxhdGl0dWRlPXMsZS5oZWlnaHQ9byxlKTpuZXcgdXQobixzLG8pfTtPcz1vWn0pO3ZhciBvcSxObixuYz1PKCgpPT57b3E9e09VVFNJREU6LTEsSU5URVJTRUNUSU5HOjAsSU5TSURFOjF9LE5uPU9iamVjdC5mcmVlemUob3EpfSk7ZnVuY3Rpb24gb2UodCxlLGksbil7dGhpcy54PVoodCwwKSx0aGlzLnk9WihlLDApLHRoaXMuej1aKGksMCksdGhpcy53PVoobiwwKX12YXIgclosY1cscnEscjAsbG8sYXEsQXEsbFcsaWUsVnM9TygoKT0+e2FlKCk7YnQoKTttdCgpO1Z0KCk7X2UoKTtvZS5mcm9tRWxlbWVudHM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gbShzKT8ocy54PXQscy55PWUscy56PWkscy53PW4scyk6bmV3IG9lKHQsZSxpLG4pfTtvZS5mcm9tQ29sb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjb2xvciIsdCksbShlKT8oZS54PXQucmVkLGUueT10LmdyZWVuLGUuej10LmJsdWUsZS53PXQuYWxwaGEsZSk6bmV3IG9lKHQucmVkLHQuZ3JlZW4sdC5ibHVlLHQuYWxwaGEpfTtvZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlLno9dC56LGUudz10LncsZSk6bmV3IG9lKHQueCx0LnksdC56LHQudyl9O29lLnBhY2tlZExlbmd0aD00O29lLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaSsrXT10LnksZVtpKytdPXQueixlW2ldPXQudyxlfTtvZS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgb2UpLGkueD10W2UrK10saS55PXRbZSsrXSxpLno9dFtlKytdLGkudz10W2VdLGl9O29lLnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBpPXQubGVuZ3RoLG49aSo0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG4pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09bil0aHJvdyBuZXcgWSgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW4mJihlLmxlbmd0aD1uKX1mb3IobGV0IHM9MDtzPGk7KytzKW9lLnBhY2sodFtzXSxlLHMqNCk7cmV0dXJuIGV9O29lLnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYocC5kZWZpbmVkKCJhcnJheSIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IFkoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgaT10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPWkvNDplPW5ldyBBcnJheShpLzQpO2ZvcihsZXQgbj0wO248aTtuKz00KXtsZXQgcz1uLzQ7ZVtzXT1vZS51bnBhY2sodCxuLGVbc10pfXJldHVybiBlfTtvZS5mcm9tQXJyYXk9b2UudW5wYWNrO29lLm1heGltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1heCh0LngsdC55LHQueix0LncpfTtvZS5taW5pbXVtQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksTWF0aC5taW4odC54LHQueSx0LnosdC53KX07b2UubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5taW4odC54LGUueCksaS55PU1hdGgubWluKHQueSxlLnkpLGkuej1NYXRoLm1pbih0LnosZS56KSxpLnc9TWF0aC5taW4odC53LGUudyksaX07b2UubWF4aW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5tYXgodC54LGUueCksaS55PU1hdGgubWF4KHQueSxlLnkpLGkuej1NYXRoLm1heCh0LnosZS56KSxpLnc9TWF0aC5tYXgodC53LGUudyksaX07b2UuY2xhbXA9ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC50eXBlT2Yub2JqZWN0KCJtaW4iLGUpLHAudHlwZU9mLm9iamVjdCgibWF4IixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IHM9TC5jbGFtcCh0LngsZS54LGkueCksbz1MLmNsYW1wKHQueSxlLnksaS55KSxyPUwuY2xhbXAodC56LGUueixpLnopLGE9TC5jbGFtcCh0LncsZS53LGkudyk7cmV0dXJuIG4ueD1zLG4ueT1vLG4uej1yLG4udz1hLG59O29lLm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx0LngqdC54K3QueSp0LnkrdC56KnQueit0LncqdC53fTtvZS5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydChvZS5tYWduaXR1ZGVTcXVhcmVkKHQpKX07clo9bmV3IG9lO29lLmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksb2Uuc3VidHJhY3QodCxlLHJaKSxvZS5tYWduaXR1ZGUoclopfTtvZS5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxvZS5zdWJ0cmFjdCh0LGUsclopLG9lLm1hZ25pdHVkZVNxdWFyZWQoclopfTtvZS5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPW9lLm1hZ25pdHVkZSh0KTtpZihlLng9dC54L2ksZS55PXQueS9pLGUuej10LnovaSxlLnc9dC53L2ksaXNOYU4oZS54KXx8aXNOYU4oZS55KXx8aXNOYU4oZS56KXx8aXNOYU4oZS53KSl0aHJvdyBuZXcgWSgibm9ybWFsaXplZCByZXN1bHQgaXMgbm90IGEgbnVtYmVyIik7cmV0dXJuIGV9O29lLmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueSt0LnoqZS56K3QudyplLnd9O29lLm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngqZS54LGkueT10LnkqZS55LGkuej10LnoqZS56LGkudz10LncqZS53LGl9O29lLmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54L2UueCxpLnk9dC55L2UueSxpLno9dC56L2UueixpLnc9dC53L2UudyxpfTtvZS5hZGQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54K2UueCxpLnk9dC55K2UueSxpLno9dC56K2UueixpLnc9dC53K2UudyxpfTtvZS5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngtZS54LGkueT10LnktZS55LGkuej10LnotZS56LGkudz10LnctZS53LGl9O29lLm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54KmUsaS55PXQueSplLGkuej10LnoqZSxpLnc9dC53KmUsaX07b2UuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54L2UsaS55PXQueS9lLGkuej10LnovZSxpLnc9dC53L2UsaX07b2UubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PS10LncsZX07b2UuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PU1hdGguYWJzKHQueCksZS55PU1hdGguYWJzKHQueSksZS56PU1hdGguYWJzKHQueiksZS53PU1hdGguYWJzKHQudyksZX07Y1c9bmV3IG9lO29lLmxlcnA9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHAudHlwZU9mLm9iamVjdCgiZW5kIixlKSxwLnR5cGVPZi5udW1iZXIoInQiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxvZS5tdWx0aXBseUJ5U2NhbGFyKGUsaSxjVyksbj1vZS5tdWx0aXBseUJ5U2NhbGFyKHQsMS1pLG4pLG9lLmFkZChjVyxuLG4pfTtycT1uZXcgb2U7b2UubW9zdE9ydGhvZ29uYWxBeGlzPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgaT1vZS5ub3JtYWxpemUodCxycSk7cmV0dXJuIG9lLmFicyhpLGkpLGkueDw9aS55P2kueDw9aS56P2kueDw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9YLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpOmkuejw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9aLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpOmkueTw9aS56P2kueTw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9ZLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpOmkuejw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9aLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpLGV9O29lLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUueiYmdC53PT09ZS53fTtvZS5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQueD09PWVbaV0mJnQueT09PWVbaSsxXSYmdC56PT09ZVtpKzJdJiZ0Lnc9PT1lW2krM119O29lLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZMLmVxdWFsc0Vwc2lsb24odC54LGUueCxpLG4pJiZMLmVxdWFsc0Vwc2lsb24odC55LGUueSxpLG4pJiZMLmVxdWFsc0Vwc2lsb24odC56LGUueixpLG4pJiZMLmVxdWFsc0Vwc2lsb24odC53LGUudyxpLG4pfTtvZS5aRVJPPU9iamVjdC5mcmVlemUobmV3IG9lKDAsMCwwLDApKTtvZS5PTkU9T2JqZWN0LmZyZWV6ZShuZXcgb2UoMSwxLDEsMSkpO29lLlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyBvZSgxLDAsMCwwKSk7b2UuVU5JVF9ZPU9iamVjdC5mcmVlemUobmV3IG9lKDAsMSwwLDApKTtvZS5VTklUX1o9T2JqZWN0LmZyZWV6ZShuZXcgb2UoMCwwLDEsMCkpO29lLlVOSVRfVz1PYmplY3QuZnJlZXplKG5ldyBvZSgwLDAsMCwxKSk7b2UucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBvZS5jbG9uZSh0aGlzLHQpfTtvZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBvZS5lcXVhbHModGhpcyx0KX07b2UucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBvZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLGkpfTtvZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9LCAke3RoaXMuen0sICR7dGhpcy53fSlgfTtyMD1uZXcgRmxvYXQzMkFycmF5KDEpLGxvPW5ldyBVaW50OEFycmF5KHIwLmJ1ZmZlciksYXE9bmV3IFVpbnQzMkFycmF5KFsyODc0NTQwMjBdKSxBcT1uZXcgVWludDhBcnJheShhcS5idWZmZXIpLGxXPUFxWzBdPT09Njg7b2UucGFja0Zsb2F0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLG0oZSl8fChlPW5ldyBvZSkscjBbMF09dCxsVz8oZS54PWxvWzBdLGUueT1sb1sxXSxlLno9bG9bMl0sZS53PWxvWzNdKTooZS54PWxvWzNdLGUueT1sb1syXSxlLno9bG9bMV0sZS53PWxvWzBdKSxlfTtvZS51bnBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJwYWNrZWRGbG9hdCIsdCksbFc/KGxvWzBdPXQueCxsb1sxXT10LnksbG9bMl09dC56LGxvWzNdPXQudyk6KGxvWzBdPXQudyxsb1sxXT10LnosbG9bMl09dC55LGxvWzNdPXQueCkscjBbMF19O2llPW9lfSk7ZnVuY3Rpb24gaHEodCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLHAuZGVmaW5lZCgiaXRlbVRvRmluZCIsZSkscC5kZWZpbmVkKCJjb21wYXJhdG9yIixpKTtsZXQgbj0wLHM9dC5sZW5ndGgtMSxvLHI7Zm9yKDtuPD1zOyl7aWYobz1+figobitzKS8yKSxyPWkodFtvXSxlKSxyPDApe249bysxO2NvbnRpbnVlfWlmKHI+MCl7cz1vLTE7Y29udGludWV9cmV0dXJuIG99cmV0dXJufihzKzEpfXZhciBCbyxzRT1PKCgpPT57YWUoKTtCbz1ocX0pO2Z1bmN0aW9uIGNxKHQsZSxpLG4scyl7dGhpcy54UG9sZVdhbmRlcj10LHRoaXMueVBvbGVXYW5kZXI9ZSx0aGlzLnhQb2xlT2Zmc2V0PWksdGhpcy55UG9sZU9mZnNldD1uLHRoaXMudXQxTWludXNVdGM9c312YXIgb0UsYTA9TygoKT0+e29FPWNxfSk7ZnVuY3Rpb24gbHEodCl7aWYodD09PW51bGx8fGlzTmFOKHQpKXRocm93IG5ldyBZKCJ5ZWFyIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgbnVtYmVyLiIpO3JldHVybiB0JTQ9PT0wJiZ0JTEwMCE9PTB8fHQlNDAwPT09MH12YXIgckUsQTA9TygoKT0+e1Z0KCk7ckU9bHF9KTtmdW5jdGlvbiBkcSh0LGUsaSxuLHMsbyxyLGEpe3Q9Wih0LDEpLGU9WihlLDEpLGk9WihpLDEpLG49WihuLDApLHM9WihzLDApLG89WihvLDApLHI9WihyLDApLGE9WihhLCExKSxJKCksQygpLHRoaXMueWVhcj10LHRoaXMubW9udGg9ZSx0aGlzLmRheT1pLHRoaXMuaG91cj1uLHRoaXMubWludXRlPXMsdGhpcy5zZWNvbmQ9byx0aGlzLm1pbGxpc2Vjb25kPXIsdGhpcy5pc0xlYXBTZWNvbmQ9YTtmdW5jdGlvbiBJKCl7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIlllYXIiLHQsMSkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIlllYXIiLHQsOTk5OSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIk1vbnRoIixlLDEpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJNb250aCIsZSwxMikscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIkRheSIsaSwxKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiRGF5IixpLDMxKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiSG91ciIsbiwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiSG91ciIsbiwyMykscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIk1pbnV0ZSIscywwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiTWludXRlIixzLDU5KSxwLnR5cGVPZi5ib29sKCJJc0xlYXBTZWNvbmQiLGEpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJTZWNvbmQiLG8sMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIlNlY29uZCIsbyxhPzYwOjU5KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiTWlsbGlzZWNvbmQiLHIsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuKCJNaWxsaXNlY29uZCIsciwxZTMpfWZ1bmN0aW9uIEMoKXtsZXQgTj1lPT09MiYmckUodCk/ZFdbZS0xXSsxOmRXW2UtMV07aWYoaT5OKXRocm93IG5ldyBZKCJNb250aCBhbmQgRGF5IHJlcHJlc2VudHMgaW52YWxpZCBkYXRlIil9fXZhciBkVyxhWixtVz1PKCgpPT57YWUoKTtidCgpO1Z0KCk7QTAoKTtkVz1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2FaPWRxfSk7ZnVuY3Rpb24gbXEodCxlKXt0aGlzLmp1bGlhbkRhdGU9dCx0aGlzLm9mZnNldD1lfXZhciB6aSxoMD1PKCgpPT57emk9bXF9KTt2YXIgZnEsYm4sQVo9TygoKT0+e2ZxPXtTRUNPTkRTX1BFUl9NSUxMSVNFQ09ORDouMDAxLFNFQ09ORFNfUEVSX01JTlVURTo2MCxNSU5VVEVTX1BFUl9IT1VSOjYwLEhPVVJTX1BFUl9EQVk6MjQsU0VDT05EU19QRVJfSE9VUjozNjAwLE1JTlVURVNfUEVSX0RBWToxNDQwLFNFQ09ORFNfUEVSX0RBWTo4NjQwMCxEQVlTX1BFUl9KVUxJQU5fQ0VOVFVSWTozNjUyNSxQSUNPU0VDT05EOjFlLTksTU9ESUZJRURfSlVMSUFOX0RBVEVfRElGRkVSRU5DRToyNDAwMDAwNWUtMX0sYm49T2JqZWN0LmZyZWV6ZShmcSl9KTt2YXIgRXEsRWksaFo9TygoKT0+e0VxPXtVVEM6MCxUQUk6MX0sRWk9T2JqZWN0LmZyZWV6ZShFcSl9KTtmdW5jdGlvbiBjMCh0LGUpe3JldHVybiBtZS5jb21wYXJlKHQuanVsaWFuRGF0ZSxlLmp1bGlhbkRhdGUpfWZ1bmN0aW9uIG1aKHQpe1ptLmp1bGlhbkRhdGU9dDtsZXQgZT1tZS5sZWFwU2Vjb25kcyxpPUJvKGUsWm0sYzApO2k8MCYmKGk9fmkpLGk+PWUubGVuZ3RoJiYoaT1lLmxlbmd0aC0xKTtsZXQgbj1lW2ldLm9mZnNldDtpPjAmJm1lLnNlY29uZHNEaWZmZXJlbmNlKGVbaV0uanVsaWFuRGF0ZSx0KT5uJiYoaS0tLG49ZVtpXS5vZmZzZXQpLG1lLmFkZFNlY29uZHModCxuLHQpfWZ1bmN0aW9uIGZXKHQsZSl7Wm0uanVsaWFuRGF0ZT10O2xldCBpPW1lLmxlYXBTZWNvbmRzLG49Qm8oaSxabSxjMCk7aWYobjwwJiYobj1+biksbj09PTApcmV0dXJuIG1lLmFkZFNlY29uZHModCwtaVswXS5vZmZzZXQsZSk7aWYobj49aS5sZW5ndGgpcmV0dXJuIG1lLmFkZFNlY29uZHModCwtaVtuLTFdLm9mZnNldCxlKTtsZXQgcz1tZS5zZWNvbmRzRGlmZmVyZW5jZShpW25dLmp1bGlhbkRhdGUsdCk7aWYocz09PTApcmV0dXJuIG1lLmFkZFNlY29uZHModCwtaVtuXS5vZmZzZXQsZSk7aWYoIShzPD0xKSlyZXR1cm4gbWUuYWRkU2Vjb25kcyh0LC1pWy0tbl0ub2Zmc2V0LGUpfWZ1bmN0aW9uIHNjKHQsZSxpKXtsZXQgbj1lL2JuLlNFQ09ORFNfUEVSX0RBWXwwO3JldHVybiB0Kz1uLGUtPWJuLlNFQ09ORFNfUEVSX0RBWSpuLGU8MCYmKHQtLSxlKz1ibi5TRUNPTkRTX1BFUl9EQVkpLGkuZGF5TnVtYmVyPXQsaS5zZWNvbmRzT2ZEYXk9ZSxpfWZ1bmN0aW9uIGwwKHQsZSxpLG4scyxvLHIpe2xldCBhPShlLTE0KS8xMnwwLGg9dCs0ODAwK2EsQT0oMTQ2MSpoLzR8MCkrKDM2NyooZS0yLTEyKmEpLzEyfDApLSgzKigoaCsxMDApLzEwMHwwKS80fDApK2ktMzIwNzU7bj1uLTEyLG48MCYmKG4rPTI0KTtsZXQgZD1vKyhuKmJuLlNFQ09ORFNfUEVSX0hPVVIrcypibi5TRUNPTkRTX1BFUl9NSU5VVEUrcipibi5TRUNPTkRTX1BFUl9NSUxMSVNFQ09ORCk7cmV0dXJuIGQ+PTQzMjAwJiYoQS09MSksW0EsZF19ZnVuY3Rpb24gbWUodCxlLGkpe3RoaXMuZGF5TnVtYmVyPXZvaWQgMCx0aGlzLnNlY29uZHNPZkRheT12b2lkIDAsdD1aKHQsMCksZT1aKGUsMCksaT1aKGksRWkuVVRDKTtsZXQgbj10fDA7ZT1lKyh0LW4pKmJuLlNFQ09ORFNfUEVSX0RBWSxzYyhuLGUsdGhpcyksaT09PUVpLlVUQyYmbVoodGhpcyl9dmFyIEVXLGNaLGxaLFptLF9xLFJxLFpxLElxLHBxLGQwLHVxLENxLGdxLFphLGRaLFplLFZyPU8oKCk9PntzRSgpO2J0KCk7bXQoKTtWdCgpO21XKCk7QTAoKTtoMCgpO0FaKCk7aFooKTtFVz1uZXcgYVosY1o9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxsWj0yOTtabT1uZXcgemk7X3E9L14oXGR7NH0pJC8sUnE9L14oXGR7NH0pLShcZHsyfSkkLyxacT0vXihcZHs0fSktPyhcZHszfSkkLyxJcT0vXihcZHs0fSktP1coXGR7Mn0pLT8oXGR7MX0pPyQvLHBxPS9eKFxkezR9KS0/KFxkezJ9KS0/KFxkezJ9KSQvLGQwPS8oW1orXC1dKT8oXGR7Mn0pPzo/KFxkezJ9KT8kLyx1cT0vXihcZHsyfSkoXC5cZCspPy8uc291cmNlK2QwLnNvdXJjZSxDcT0vXihcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK2QwLnNvdXJjZSxncT0vXihcZHsyfSk6PyhcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK2QwLnNvdXJjZSxaYT0iSW52YWxpZCBJU08gODYwMSBkYXRlLiI7bWUuZnJvbUdyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBhWikpdGhyb3cgbmV3IFkoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEdyZWdvcmlhbkRhdGUuIik7bGV0IGk9bDAodC55ZWFyLHQubW9udGgsdC5kYXksdC5ob3VyLHQubWludXRlLHQuc2Vjb25kLHQubWlsbGlzZWNvbmQpO3JldHVybiBtKGUpPyhzYyhpWzBdLGlbMV0sZSksbVooZSksZSk6bmV3IG1lKGlbMF0saVsxXSxFaS5VVEMpfTttZS5mcm9tRGF0ZT1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIERhdGUpfHxpc05hTih0LmdldFRpbWUoKSkpdGhyb3cgbmV3IFkoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZS4iKTtsZXQgaT1sMCh0LmdldFVUQ0Z1bGxZZWFyKCksdC5nZXRVVENNb250aCgpKzEsdC5nZXRVVENEYXRlKCksdC5nZXRVVENIb3VycygpLHQuZ2V0VVRDTWludXRlcygpLHQuZ2V0VVRDU2Vjb25kcygpLHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO3JldHVybiBtKGUpPyhzYyhpWzBdLGlbMV0sZSksbVooZSksZSk6bmV3IG1lKGlbMF0saVsxXSxFaS5VVEMpfTttZS5mcm9tSXNvODYwMT1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgWShaYSk7dD10LnJlcGxhY2UoIiwiLCIuIik7bGV0IGk9dC5zcGxpdCgiVCIpLG4scz0xLG89MSxyPTAsYT0wLGg9MCxBPTAsZD1pWzBdLGY9aVsxXSxFLF87aWYoIW0oZCkpdGhyb3cgbmV3IFkoWmEpO2xldCBSO2lmKGk9ZC5tYXRjaChwcSksaSE9PW51bGwpe2lmKFI9ZC5zcGxpdCgiLSIpLmxlbmd0aC0xLFI+MCYmUiE9PTIpdGhyb3cgbmV3IFkoWmEpO249K2lbMV0scz0raVsyXSxvPStpWzNdfWVsc2UgaWYoaT1kLm1hdGNoKFJxKSxpIT09bnVsbCluPStpWzFdLHM9K2lbMl07ZWxzZSBpZihpPWQubWF0Y2goX3EpLGkhPT1udWxsKW49K2lbMV07ZWxzZXtsZXQgVDtpZihpPWQubWF0Y2goWnEpLGkhPT1udWxsKXtpZihuPStpWzFdLFQ9K2lbMl0sXz1yRShuKSxUPDF8fF8mJlQ+MzY2fHwhXyYmVD4zNjUpdGhyb3cgbmV3IFkoWmEpfWVsc2UgaWYoaT1kLm1hdGNoKElxKSxpIT09bnVsbCl7bj0raVsxXTtsZXQgRj0raVsyXSxiPStpWzNdfHwwO2lmKFI9ZC5zcGxpdCgiLSIpLmxlbmd0aC0xLFI+MCYmKCFtKGlbM10pJiZSIT09MXx8bShpWzNdKSYmUiE9PTIpKXRocm93IG5ldyBZKFphKTtsZXQgRz1uZXcgRGF0ZShEYXRlLlVUQyhuLDAsNCkpO1Q9Rio3K2ItRy5nZXRVVENEYXkoKS0zfWVsc2UgdGhyb3cgbmV3IFkoWmEpO0U9bmV3IERhdGUoRGF0ZS5VVEMobiwwLDEpKSxFLnNldFVUQ0RhdGUoVCkscz1FLmdldFVUQ01vbnRoKCkrMSxvPUUuZ2V0VVRDRGF0ZSgpfWlmKF89ckUobiksczwxfHxzPjEyfHxvPDF8fChzIT09Mnx8IV8pJiZvPmNaW3MtMV18fF8mJnM9PT0yJiZvPmxaKXRocm93IG5ldyBZKFphKTtsZXQgSTtpZihtKGYpKXtpZihpPWYubWF0Y2goZ3EpLGkhPT1udWxsKXtpZihSPWYuc3BsaXQoIjoiKS5sZW5ndGgtMSxSPjAmJlIhPT0yJiZSIT09Myl0aHJvdyBuZXcgWShaYSk7cj0raVsxXSxhPStpWzJdLGg9K2lbM10sQT0rKGlbNF18fDApKjFlMyxJPTV9ZWxzZSBpZihpPWYubWF0Y2goQ3EpLGkhPT1udWxsKXtpZihSPWYuc3BsaXQoIjoiKS5sZW5ndGgtMSxSPjIpdGhyb3cgbmV3IFkoWmEpO3I9K2lbMV0sYT0raVsyXSxoPSsoaVszXXx8MCkqNjAsST00fWVsc2UgaWYoaT1mLm1hdGNoKHVxKSxpIT09bnVsbClyPStpWzFdLGE9KyhpWzJdfHwwKSo2MCxJPTM7ZWxzZSB0aHJvdyBuZXcgWShaYSk7aWYoYT49NjB8fGg+PTYxfHxyPjI0fHxyPT09MjQmJihhPjB8fGg+MHx8QT4wKSl0aHJvdyBuZXcgWShaYSk7bGV0IFQ9aVtJXSxGPStpW0krMV0sYj0rKGlbSSsyXXx8MCk7c3dpdGNoKFQpe2Nhc2UiKyI6cj1yLUYsYT1hLWI7YnJlYWs7Y2FzZSItIjpyPXIrRixhPWErYjticmVhaztjYXNlIloiOmJyZWFrO2RlZmF1bHQ6YT1hK25ldyBEYXRlKERhdGUuVVRDKG4scy0xLG8scixhKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTticmVha319bGV0IEM9aD09PTYwO2ZvcihDJiZoLS07YT49NjA7KWEtPTYwLHIrKztmb3IoO3I+PTI0OylyLT0yNCxvKys7Zm9yKEU9XyYmcz09PTI/bFo6Y1pbcy0xXTtvPkU7KW8tPUUscysrLHM+MTImJihzLT0xMixuKyspLEU9XyYmcz09PTI/bFo6Y1pbcy0xXTtmb3IoO2E8MDspYSs9NjAsci0tO2Zvcig7cjwwOylyKz0yNCxvLS07Zm9yKDtvPDE7KXMtLSxzPDEmJihzKz0xMixuLS0pLEU9XyYmcz09PTI/bFo6Y1pbcy0xXSxvKz1FO2xldCBOPWwwKG4scyxvLHIsYSxoLEEpO3JldHVybiBtKGUpPyhzYyhOWzBdLE5bMV0sZSksbVooZSkpOmU9bmV3IG1lKE5bMF0sTlsxXSxFaS5VVEMpLEMmJm1lLmFkZFNlY29uZHMoZSwxLGUpLGV9O21lLm5vdz1mdW5jdGlvbih0KXtyZXR1cm4gbWUuZnJvbURhdGUobmV3IERhdGUsdCl9O2RaPW5ldyBtZSgwLDAsRWkuVEFJKTttZS50b0dyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgaT0hMSxuPWZXKHQsZFopO20obil8fChtZS5hZGRTZWNvbmRzKHQsLTEsZFopLG49ZlcoZFosZFopLGk9ITApO2xldCBzPW4uZGF5TnVtYmVyLG89bi5zZWNvbmRzT2ZEYXk7bz49NDMyMDAmJihzKz0xKTtsZXQgcj1zKzY4NTY5fDAsYT00KnIvMTQ2MDk3fDA7cj1yLSgoMTQ2MDk3KmErMykvNHwwKXwwO2xldCBoPTRlMyoocisxKS8xNDYxMDAxfDA7cj1yLSgxNDYxKmgvNHwwKSszMXwwO2xldCBBPTgwKnIvMjQ0N3wwLGQ9ci0oMjQ0NypBLzgwfDApfDA7cj1BLzExfDA7bGV0IGY9QSsyLTEyKnJ8MCxFPTEwMCooYS00OSkraCtyfDAsXz1vL2JuLlNFQ09ORFNfUEVSX0hPVVJ8MCxSPW8tXypibi5TRUNPTkRTX1BFUl9IT1VSLEk9Ui9ibi5TRUNPTkRTX1BFUl9NSU5VVEV8MDtSPVItSSpibi5TRUNPTkRTX1BFUl9NSU5VVEU7bGV0IEM9UnwwLE49KFItQykvYm4uU0VDT05EU19QRVJfTUlMTElTRUNPTkQ7cmV0dXJuIF8rPTEyLF8+MjMmJihfLT0yNCksaSYmKEMrPTEpLG0oZSk/KGUueWVhcj1FLGUubW9udGg9ZixlLmRheT1kLGUuaG91cj1fLGUubWludXRlPUksZS5zZWNvbmQ9QyxlLm1pbGxpc2Vjb25kPU4sZS5pc0xlYXBTZWNvbmQ9aSxlKTpuZXcgYVooRSxmLGQsXyxJLEMsTixpKX07bWUudG9EYXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2xldCBlPW1lLnRvR3JlZ29yaWFuRGF0ZSh0LEVXKSxpPWUuc2Vjb25kO3JldHVybiBlLmlzTGVhcFNlY29uZCYmKGktPTEpLG5ldyBEYXRlKERhdGUuVVRDKGUueWVhcixlLm1vbnRoLTEsZS5kYXksZS5ob3VyLGUubWludXRlLGksZS5taWxsaXNlY29uZCkpfTttZS50b0lzbzg2MDE9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgaT1tZS50b0dyZWdvcmlhbkRhdGUodCxFVyksbj1pLnllYXIscz1pLm1vbnRoLG89aS5kYXkscj1pLmhvdXIsYT1pLm1pbnV0ZSxoPWkuc2Vjb25kLEE9aS5taWxsaXNlY29uZDtuPT09MWU0JiZzPT09MSYmbz09PTEmJnI9PT0wJiZhPT09MCYmaD09PTAmJkE9PT0wJiYobj05OTk5LHM9MTIsbz0zMSxyPTI0KTtsZXQgZDtyZXR1cm4hbShlKSYmQSE9PTA/KGQ9KEEqLjAxKS50b1N0cmluZygpLnJlcGxhY2UoIi4iLCIiKSxgJHtuLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwiMCIpfS0ke3MudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7by50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1UJHtyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2EudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7aC50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0uJHtkfVpgKTohbShlKXx8ZT09PTA/YCR7bi50b1N0cmluZygpLnBhZFN0YXJ0KDQsIjAiKX0tJHtzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0ke28udG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9VCR7ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHthLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2gudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9WmA6KGQ9KEEqLjAxKS50b0ZpeGVkKGUpLnJlcGxhY2UoIi4iLCIiKS5zbGljZSgwLGUpLGAke24udG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9LSR7cy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHtvLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVQke3IudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7YS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHtoLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS4ke2R9WmApfTttZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUuZGF5TnVtYmVyPXQuZGF5TnVtYmVyLGUuc2Vjb25kc09mRGF5PXQuc2Vjb25kc09mRGF5LGUpOm5ldyBtZSh0LmRheU51bWJlcix0LnNlY29uZHNPZkRheSxFaS5UQUkpfTttZS5jb21wYXJlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO2xldCBpPXQuZGF5TnVtYmVyLWUuZGF5TnVtYmVyO3JldHVybiBpIT09MD9pOnQuc2Vjb25kc09mRGF5LWUuc2Vjb25kc09mRGF5fTttZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQuZGF5TnVtYmVyPT09ZS5kYXlOdW1iZXImJnQuc2Vjb25kc09mRGF5PT09ZS5zZWNvbmRzT2ZEYXl9O21lLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnMobWUuc2Vjb25kc0RpZmZlcmVuY2UodCxlKSk8PWl9O21lLnRvdGFsRGF5cz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC5kYXlOdW1iZXIrdC5zZWNvbmRzT2ZEYXkvYm4uU0VDT05EU19QRVJfREFZfTttZS5zZWNvbmRzRGlmZmVyZW5jZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJsZWZ0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyaWdodCBpcyByZXF1aXJlZC4iKTtyZXR1cm4odC5kYXlOdW1iZXItZS5kYXlOdW1iZXIpKmJuLlNFQ09ORFNfUEVSX0RBWSsodC5zZWNvbmRzT2ZEYXktZS5zZWNvbmRzT2ZEYXkpfTttZS5kYXlzRGlmZmVyZW5jZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJsZWZ0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyaWdodCBpcyByZXF1aXJlZC4iKTtsZXQgaT10LmRheU51bWJlci1lLmRheU51bWJlcixuPSh0LnNlY29uZHNPZkRheS1lLnNlY29uZHNPZkRheSkvYm4uU0VDT05EU19QRVJfREFZO3JldHVybiBpK259O21lLmNvbXB1dGVUYWlNaW51c1V0Yz1mdW5jdGlvbih0KXtabS5qdWxpYW5EYXRlPXQ7bGV0IGU9bWUubGVhcFNlY29uZHMsaT1CbyhlLFptLGMwKTtyZXR1cm4gaTwwJiYoaT1+aSwtLWksaTwwJiYoaT0wKSksZVtpXS5vZmZzZXR9O21lLmFkZFNlY29uZHM9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzZWNvbmRzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHNjKHQuZGF5TnVtYmVyLHQuc2Vjb25kc09mRGF5K2UsaSl9O21lLmFkZE1pbnV0ZXM9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJtaW51dGVzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5zZWNvbmRzT2ZEYXkrZSpibi5TRUNPTkRTX1BFUl9NSU5VVEU7cmV0dXJuIHNjKHQuZGF5TnVtYmVyLG4saSl9O21lLmFkZEhvdXJzPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiaG91cnMgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbj10LnNlY29uZHNPZkRheStlKmJuLlNFQ09ORFNfUEVSX0hPVVI7cmV0dXJuIHNjKHQuZGF5TnVtYmVyLG4saSl9O21lLmFkZERheXM9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJkYXlzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5kYXlOdW1iZXIrZTtyZXR1cm4gc2Mobix0LnNlY29uZHNPZkRheSxpKX07bWUubGVzc1RoYW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gbWUuY29tcGFyZSh0LGUpPDB9O21lLmxlc3NUaGFuT3JFcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbWUuY29tcGFyZSh0LGUpPD0wfTttZS5ncmVhdGVyVGhhbj1mdW5jdGlvbih0LGUpe3JldHVybiBtZS5jb21wYXJlKHQsZSk+MH07bWUuZ3JlYXRlclRoYW5PckVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiBtZS5jb21wYXJlKHQsZSk+PTB9O21lLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbWUuY2xvbmUodGhpcyx0KX07bWUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbWUuZXF1YWxzKHRoaXMsdCl9O21lLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG1lLmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTttZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbWUudG9Jc284NjAxKHRoaXMpfTttZS5sZWFwU2Vjb25kcz1bbmV3IHppKG5ldyBtZSgyNDQxMzE3LDQzMjEwLEVpLlRBSSksMTApLG5ldyB6aShuZXcgbWUoMjQ0MTQ5OSw0MzIxMSxFaS5UQUkpLDExKSxuZXcgemkobmV3IG1lKDI0NDE2ODMsNDMyMTIsRWkuVEFJKSwxMiksbmV3IHppKG5ldyBtZSgyNDQyMDQ4LDQzMjEzLEVpLlRBSSksMTMpLG5ldyB6aShuZXcgbWUoMjQ0MjQxMyw0MzIxNCxFaS5UQUkpLDE0KSxuZXcgemkobmV3IG1lKDI0NDI3NzgsNDMyMTUsRWkuVEFJKSwxNSksbmV3IHppKG5ldyBtZSgyNDQzMTQ0LDQzMjE2LEVpLlRBSSksMTYpLG5ldyB6aShuZXcgbWUoMjQ0MzUwOSw0MzIxNyxFaS5UQUkpLDE3KSxuZXcgemkobmV3IG1lKDI0NDM4NzQsNDMyMTgsRWkuVEFJKSwxOCksbmV3IHppKG5ldyBtZSgyNDQ0MjM5LDQzMjE5LEVpLlRBSSksMTkpLG5ldyB6aShuZXcgbWUoMjQ0NDc4Niw0MzIyMCxFaS5UQUkpLDIwKSxuZXcgemkobmV3IG1lKDI0NDUxNTEsNDMyMjEsRWkuVEFJKSwyMSksbmV3IHppKG5ldyBtZSgyNDQ1NTE2LDQzMjIyLEVpLlRBSSksMjIpLG5ldyB6aShuZXcgbWUoMjQ0NjI0Nyw0MzIyMyxFaS5UQUkpLDIzKSxuZXcgemkobmV3IG1lKDI0NDcxNjEsNDMyMjQsRWkuVEFJKSwyNCksbmV3IHppKG5ldyBtZSgyNDQ3ODkyLDQzMjI1LEVpLlRBSSksMjUpLG5ldyB6aShuZXcgbWUoMjQ0ODI1Nyw0MzIyNixFaS5UQUkpLDI2KSxuZXcgemkobmV3IG1lKDI0NDg4MDQsNDMyMjcsRWkuVEFJKSwyNyksbmV3IHppKG5ldyBtZSgyNDQ5MTY5LDQzMjI4LEVpLlRBSSksMjgpLG5ldyB6aShuZXcgbWUoMjQ0OTUzNCw0MzIyOSxFaS5UQUkpLDI5KSxuZXcgemkobmV3IG1lKDI0NTAwODMsNDMyMzAsRWkuVEFJKSwzMCksbmV3IHppKG5ldyBtZSgyNDUwNjMwLDQzMjMxLEVpLlRBSSksMzEpLG5ldyB6aShuZXcgbWUoMjQ1MTE3OSw0MzIzMixFaS5UQUkpLDMyKSxuZXcgemkobmV3IG1lKDI0NTM3MzYsNDMyMzMsRWkuVEFJKSwzMyksbmV3IHppKG5ldyBtZSgyNDU0ODMyLDQzMjM0LEVpLlRBSSksMzQpLG5ldyB6aShuZXcgbWUoMjQ1NjEwOSw0MzIzNSxFaS5UQUkpLDM1KSxuZXcgemkobmV3IG1lKDI0NTcyMDQsNDMyMzYsRWkuVEFJKSwzNiksbmV3IHppKG5ldyBtZSgyNDU3NzU0LDQzMjM3LEVpLlRBSSksMzcpXTtaZT1tZX0pO3ZhciBfVz10cygoSW0scG0pPT57LyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjAgYnkgQG1hdGhpYXMgKi8oZnVuY3Rpb24odCl7dmFyIGU9dHlwZW9mIEltPT0ib2JqZWN0IiYmSW0mJiFJbS5ub2RlVHlwZSYmSW0saT10eXBlb2YgcG09PSJvYmplY3QiJiZwbSYmIXBtLm5vZGVUeXBlJiZwbSxuPXR5cGVvZiBnbG9iYWw9PSJvYmplY3QiJiZnbG9iYWw7KG4uZ2xvYmFsPT09bnx8bi53aW5kb3c9PT1ufHxuLnNlbGY9PT1uKSYmKHQ9bik7dmFyIHMsbz0yMTQ3NDgzNjQ3LHI9MzYsYT0xLGg9MjYsQT0zOCxkPTcwMCxmPTcyLEU9MTI4LF89Ii0iLFI9L154bi0tLyxJPS9bXlx4MjAtXHg3RV0vLEM9L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9nLE49e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCkiLCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBpbnB1dCJ9LFQ9ci1hLEY9TWF0aC5mbG9vcixiPVN0cmluZy5mcm9tQ2hhckNvZGUsRztmdW5jdGlvbiBNKGope3Rocm93IG5ldyBSYW5nZUVycm9yKE5bal0pfWZ1bmN0aW9uIFEoaixYKXtmb3IodmFyIHR0PWoubGVuZ3RoLEI9W107dHQtLTspQlt0dF09WChqW3R0XSk7cmV0dXJuIEJ9ZnVuY3Rpb24gVShqLFgpe3ZhciB0dD1qLnNwbGl0KCJAIiksQj0iIjt0dC5sZW5ndGg+MSYmKEI9dHRbMF0rIkAiLGo9dHRbMV0pLGo9ai5yZXBsYWNlKEMsIi4iKTt2YXIgSXQ9ai5zcGxpdCgiLiIpLGd0PVEoSXQsWCkuam9pbigiLiIpO3JldHVybiBCK2d0fWZ1bmN0aW9uIGsoail7Zm9yKHZhciBYPVtdLHR0PTAsQj1qLmxlbmd0aCxJdCxndDt0dDxCOylJdD1qLmNoYXJDb2RlQXQodHQrKyksSXQ+PTU1Mjk2JiZJdDw9NTYzMTkmJnR0PEI/KGd0PWouY2hhckNvZGVBdCh0dCsrKSwoZ3QmNjQ1MTIpPT01NjMyMD9YLnB1c2goKChJdCYxMDIzKTw8MTApKyhndCYxMDIzKSs2NTUzNik6KFgucHVzaChJdCksdHQtLSkpOlgucHVzaChJdCk7cmV0dXJuIFh9ZnVuY3Rpb24geShqKXtyZXR1cm4gUShqLGZ1bmN0aW9uKFgpe3ZhciB0dD0iIjtyZXR1cm4gWD42NTUzNSYmKFgtPTY1NTM2LHR0Kz1iKFg+Pj4xMCYxMDIzfDU1Mjk2KSxYPTU2MzIwfFgmMTAyMyksdHQrPWIoWCksdHR9KS5qb2luKCIiKX1mdW5jdGlvbiBjKGope3JldHVybiBqLTQ4PDEwP2otMjI6ai02NTwyNj9qLTY1OmotOTc8MjY/ai05NzpyfWZ1bmN0aW9uIGcoaixYKXtyZXR1cm4gaisyMis3NSooajwyNiktKChYIT0wKTw8NSl9ZnVuY3Rpb24gVihqLFgsdHQpe3ZhciBCPTA7Zm9yKGo9dHQ/RihqL2QpOmo+PjEsais9RihqL1gpO2o+VCpoPj4xO0IrPXIpaj1GKGovVCk7cmV0dXJuIEYoQisoVCsxKSpqLyhqK0EpKX1mdW5jdGlvbiBEKGope3ZhciBYPVtdLHR0PWoubGVuZ3RoLEIsSXQ9MCxndD1FLFl0PWYsTXQsQ3QsenQsa3QsSnQsV3QsRnQsZWUsY2U7Zm9yKE10PWoubGFzdEluZGV4T2YoXyksTXQ8MCYmKE10PTApLEN0PTA7Q3Q8TXQ7KytDdClqLmNoYXJDb2RlQXQoQ3QpPj0xMjgmJk0oIm5vdC1iYXNpYyIpLFgucHVzaChqLmNoYXJDb2RlQXQoQ3QpKTtmb3IoenQ9TXQ+MD9NdCsxOjA7enQ8dHQ7KXtmb3Ioa3Q9SXQsSnQ9MSxXdD1yO3p0Pj10dCYmTSgiaW52YWxpZC1pbnB1dCIpLEZ0PWMoai5jaGFyQ29kZUF0KHp0KyspKSwoRnQ+PXJ8fEZ0PkYoKG8tSXQpL0p0KSkmJk0oIm92ZXJmbG93IiksSXQrPUZ0Kkp0LGVlPVd0PD1ZdD9hOld0Pj1ZdCtoP2g6V3QtWXQsIShGdDxlZSk7V3QrPXIpY2U9ci1lZSxKdD5GKG8vY2UpJiZNKCJvdmVyZmxvdyIpLEp0Kj1jZTtCPVgubGVuZ3RoKzEsWXQ9VihJdC1rdCxCLGt0PT0wKSxGKEl0L0IpPm8tZ3QmJk0oIm92ZXJmbG93IiksZ3QrPUYoSXQvQiksSXQlPUIsWC5zcGxpY2UoSXQrKywwLGd0KX1yZXR1cm4geShYKX1mdW5jdGlvbiB3KGope3ZhciBYLHR0LEIsSXQsZ3QsWXQsTXQsQ3QsenQsa3QsSnQsV3Q9W10sRnQsZWUsY2UsamU7Zm9yKGo9ayhqKSxGdD1qLmxlbmd0aCxYPUUsdHQ9MCxndD1mLFl0PTA7WXQ8RnQ7KytZdClKdD1qW1l0XSxKdDwxMjgmJld0LnB1c2goYihKdCkpO2ZvcihCPUl0PVd0Lmxlbmd0aCxJdCYmV3QucHVzaChfKTtCPEZ0Oyl7Zm9yKE10PW8sWXQ9MDtZdDxGdDsrK1l0KUp0PWpbWXRdLEp0Pj1YJiZKdDxNdCYmKE10PUp0KTtmb3IoZWU9QisxLE10LVg+Rigoby10dCkvZWUpJiZNKCJvdmVyZmxvdyIpLHR0Kz0oTXQtWCkqZWUsWD1NdCxZdD0wO1l0PEZ0OysrWXQpaWYoSnQ9altZdF0sSnQ8WCYmKyt0dD5vJiZNKCJvdmVyZmxvdyIpLEp0PT1YKXtmb3IoQ3Q9dHQsenQ9cjtrdD16dDw9Z3Q/YTp6dD49Z3QraD9oOnp0LWd0LCEoQ3Q8a3QpO3p0Kz1yKWplPUN0LWt0LGNlPXIta3QsV3QucHVzaChiKGcoa3QramUlY2UsMCkpKSxDdD1GKGplL2NlKTtXdC5wdXNoKGIoZyhDdCwwKSkpLGd0PVYodHQsZWUsQj09SXQpLHR0PTAsKytCfSsrdHQsKytYfXJldHVybiBXdC5qb2luKCIiKX1mdW5jdGlvbiB4KGope3JldHVybiBVKGosZnVuY3Rpb24oWCl7cmV0dXJuIFIudGVzdChYKT9EKFguc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6WH0pfWZ1bmN0aW9uIEgoail7cmV0dXJuIFUoaixmdW5jdGlvbihYKXtyZXR1cm4gSS50ZXN0KFgpPyJ4bi0tIit3KFgpOlh9KX1pZihzPXt2ZXJzaW9uOiIxLjMuMiIsdWNzMjp7ZGVjb2RlOmssZW5jb2RlOnl9LGRlY29kZTpELGVuY29kZTp3LHRvQVNDSUk6SCx0b1VuaWNvZGU6eH0sdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmdHlwZW9mIGRlZmluZS5hbWQ9PSJvYmplY3QiJiZkZWZpbmUuYW1kKWRlZmluZSgicHVueWNvZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KTtlbHNlIGlmKGUmJmkpaWYocG0uZXhwb3J0cz09ZSlpLmV4cG9ydHM9cztlbHNlIGZvcihHIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShHKSYmKGVbR109c1tHXSk7ZWxzZSB0LnB1bnljb2RlPXN9KShJbSl9KTt2YXIgWlc9dHMoKFJXLGZaKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIElQdjYgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIGZaPT0ib2JqZWN0IiYmZlouZXhwb3J0cz9mWi5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LklQdjY9ZSh0KX0pKFJXLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10JiZ0LklQdjY7ZnVuY3Rpb24gaShzKXt2YXIgbz1zLnRvTG93ZXJDYXNlKCkscj1vLnNwbGl0KCI6IiksYT1yLmxlbmd0aCxoPTg7clswXT09PSIiJiZyWzFdPT09IiImJnJbMl09PT0iIj8oci5zaGlmdCgpLHIuc2hpZnQoKSk6clswXT09PSIiJiZyWzFdPT09IiI/ci5zaGlmdCgpOnJbYS0xXT09PSIiJiZyW2EtMl09PT0iIiYmci5wb3AoKSxhPXIubGVuZ3RoLHJbYS0xXS5pbmRleE9mKCIuIikhPT0tMSYmKGg9Nyk7dmFyIEE7Zm9yKEE9MDtBPGEmJnJbQV0hPT0iIjtBKyspO2lmKEE8aClmb3Ioci5zcGxpY2UoQSwxLCIwMDAwIik7ci5sZW5ndGg8aDspci5zcGxpY2UoQSwwLCIwMDAwIik7Zm9yKHZhciBkLGY9MDtmPGg7ZisrKXtkPXJbZl0uc3BsaXQoIiIpO2Zvcih2YXIgRT0wO0U8MyYmKGRbMF09PT0iMCImJmQubGVuZ3RoPjEpO0UrKylkLnNwbGljZSgwLDEpO3JbZl09ZC5qb2luKCIiKX12YXIgXz0tMSxSPTAsST0wLEM9LTEsTj0hMTtmb3IoZj0wO2Y8aDtmKyspTj9yW2ZdPT09IjAiP0krPTE6KE49ITEsST5SJiYoXz1DLFI9SSkpOnJbZl09PT0iMCImJihOPSEwLEM9ZixJPTEpO0k+UiYmKF89QyxSPUkpLFI+MSYmci5zcGxpY2UoXyxSLCIiKSxhPXIubGVuZ3RoO3ZhciBUPSIiO2ZvcihyWzBdPT09IiImJihUPSI6IiksZj0wO2Y8YSYmKFQrPXJbZl0sZiE9PWEtMSk7ZisrKVQrPSI6IjtyZXR1cm4gclthLTFdPT09IiImJihUKz0iOiIpLFR9ZnVuY3Rpb24gbigpe3JldHVybiB0LklQdjY9PT10aGlzJiYodC5JUHY2PWUpLHRoaXN9cmV0dXJue2Jlc3Q6aSxub0NvbmZsaWN0Om59fSl9KTt2YXIgcFc9dHMoKElXLEVaKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIFNlY29uZCBMZXZlbCBEb21haW4gKFNMRCkgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIEVaPT0ib2JqZWN0IiYmRVouZXhwb3J0cz9FWi5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LlNlY29uZExldmVsRG9tYWlucz1lKHQpfSkoSVcsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPXQmJnQuU2Vjb25kTGV2ZWxEb21haW5zLGk9e2xpc3Q6e2FjOiIgY29tIGdvdiBtaWwgbmV0IG9yZyAiLGFlOiIgYWMgY28gZ292IG1pbCBuYW1lIG5ldCBvcmcgcHJvIHNjaCAiLGFmOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGFsOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixhbzoiIGNvIGVkIGd2IGl0IG9nIHBiICIsYXI6IiBjb20gZWR1IGdvYiBnb3YgaW50IG1pbCBuZXQgb3JnIHR1ciAiLGF0OiIgYWMgY28gZ3Ygb3IgIixhdToiIGFzbiBjb20gY3Npcm8gZWR1IGdvdiBpZCBuZXQgb3JnICIsYmE6IiBjbyBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyBycyB1bmJpIHVubW8gdW5zYSB1bnR6IHVuemUgIixiYjoiIGJpeiBjbyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgc3RvcmUgdHYgIixiaDoiIGJpeiBjYyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixibjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixibzoiIGNvbSBlZHUgZ29iIGdvdiBpbnQgbWlsIG5ldCBvcmcgdHYgIixicjoiIGFkbSBhZHYgYWdyIGFtIGFycSBhcnQgYXRvIGIgYmlvIGJsb2cgYm1kIGNpbSBjbmcgY250IGNvbSBjb29wIGVjbiBlZHUgZW5nIGVzcCBldGMgZXRpIGZhciBmbG9nIGZtIGZuZCBmb3QgZnN0IGcxMiBnZ2YgZ292IGltYiBpbmQgaW5mIGpvciBqdXMgbGVsIG1hdCBtZWQgbWlsIG11cyBuZXQgbm9tIG5vdCBudHIgb2RvIG9yZyBwcGcgcHJvIHBzYyBwc2kgcXNsIHJlYyBzbGcgc3J2IHRtcCB0cmQgdHVyIHR2IHZldCB2bG9nIHdpa2kgemxnICIsYnM6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsYno6IiBkdSBldCBvbSBvdiByZyAiLGNhOiIgYWIgYmMgbWIgbmIgbmYgbmwgbnMgbnQgbnUgb24gcGUgcWMgc2sgeWsgIixjazoiIGJpeiBjbyBlZHUgZ2VuIGdvdiBpbmZvIG5ldCBvcmcgIixjbjoiIGFjIGFoIGJqIGNvbSBjcSBlZHUgZmogZ2QgZ292IGdzIGd4IGd6IGhhIGhiIGhlIGhpIGhsIGhuIGpsIGpzIGp4IGxuIG1pbCBuZXQgbm0gbnggb3JnIHFoIHNjIHNkIHNoIHNuIHN4IHRqIHR3IHhqIHh6IHluIHpqICIsY286IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5vbSBvcmcgIixjcjoiIGFjIGMgY28gZWQgZmkgZ28gb3Igc2EgIixjeToiIGFjIGJpeiBjb20gZWtsb2dlcyBnb3YgbHRkIG5hbWUgbmV0IG9yZyBwYXJsaWFtZW50IHByZXNzIHBybyB0bSAiLGRvOiIgYXJ0IGNvbSBlZHUgZ29iIGdvdiBtaWwgbmV0IG9yZyBzbGQgd2ViICIsZHo6IiBhcnQgYXNzbyBjb20gZWR1IGdvdiBuZXQgb3JnIHBvbCAiLGVjOiIgY29tIGVkdSBmaW4gZ292IGluZm8gbWVkIG1pbCBuZXQgb3JnIHBybyAiLGVnOiIgY29tIGVkdSBldW4gZ292IG1pbCBuYW1lIG5ldCBvcmcgc2NpICIsZXI6IiBjb20gZWR1IGdvdiBpbmQgbWlsIG5ldCBvcmcgcm9jaGVzdCB3ICIsZXM6IiBjb20gZWR1IGdvYiBub20gb3JnICIsZXQ6IiBiaXogY29tIGVkdSBnb3YgaW5mbyBuYW1lIG5ldCBvcmcgIixmajoiIGFjIGJpeiBjb20gaW5mbyBtaWwgbmFtZSBuZXQgb3JnIHBybyAiLGZrOiIgYWMgY28gZ292IG5ldCBub20gb3JnICIsZnI6IiBhc3NvIGNvbSBmIGdvdXYgbm9tIHByZCBwcmVzc2UgdG0gIixnZzoiIGNvIG5ldCBvcmcgIixnaDoiIGNvbSBlZHUgZ292IG1pbCBvcmcgIixnbjoiIGFjIGNvbSBnb3YgbmV0IG9yZyAiLGdyOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixndDoiIGNvbSBlZHUgZ29iIGluZCBtaWwgbmV0IG9yZyAiLGd1OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGhrOiIgY29tIGVkdSBnb3YgaWR2IG5ldCBvcmcgIixodToiIDIwMDAgYWdyYXIgYm9sdCBjYXNpbm8gY2l0eSBjbyBlcm90aWNhIGVyb3Rpa2EgZmlsbSBmb3J1bSBnYW1lcyBob3RlbCBpbmZvIGluZ2F0bGFuIGpvZ2FzeiBrb255dmVsbyBsYWthcyBtZWRpYSBuZXdzIG9yZyBwcml2IHJla2xhbSBzZXggc2hvcCBzcG9ydCBzdWxpIHN6ZXggdG0gdG96c2RlIHV0YXphcyB2aWRlbyAiLGlkOiIgYWMgY28gZ28gbWlsIG5ldCBvciBzY2ggd2ViICIsaWw6IiBhYyBjbyBnb3YgaWRmIGsxMiBtdW5pIG5ldCBvcmcgIixpbjoiIGFjIGNvIGVkdSBlcm5ldCBmaXJtIGdlbiBnb3YgaSBpbmQgbWlsIG5ldCBuaWMgb3JnIHJlcyAiLGlxOiIgY29tIGVkdSBnb3YgaSBtaWwgbmV0IG9yZyAiLGlyOiIgYWMgY28gZG5zc2VjIGdvdiBpIGlkIG5ldCBvcmcgc2NoICIsaXQ6IiBlZHUgZ292ICIsamU6IiBjbyBuZXQgb3JnICIsam86IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLGpwOiIgYWMgYWQgY28gZWQgZ28gZ3IgbGcgbmUgb3IgIixrZToiIGFjIGNvIGdvIGluZm8gbWUgbW9iaSBuZSBvciBzYyAiLGtoOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgcGVyICIsa2k6IiBiaXogY29tIGRlIGVkdSBnb3YgaW5mbyBtb2IgbmV0IG9yZyB0ZWwgIixrbToiIGFzc28gY29tIGNvb3AgZWR1IGdvdXYgayBtZWRlY2luIG1pbCBub20gbm90YWlyZXMgcGhhcm1hY2llbnMgcHJlc3NlIHRtIHZldGVyaW5haXJlICIsa246IiBlZHUgZ292IG5ldCBvcmcgIixrcjoiIGFjIGJ1c2FuIGNodW5nYnVrIGNodW5nbmFtIGNvIGRhZWd1IGRhZWplb24gZXMgZ2FuZ3dvbiBnbyBnd2FuZ2p1IGd5ZW9uZ2J1ayBneWVvbmdnaSBneWVvbmduYW0gaHMgaW5jaGVvbiBqZWp1IGplb25idWsgamVvbm5hbSBrIGtnIG1pbCBtcyBuZSBvciBwZSByZSBzYyBzZW91bCB1bHNhbiAiLGt3OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt5OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt6OiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixsYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsazoiIGFzc24gY29tIGVkdSBnb3YgZ3JwIGhvdGVsIGludCBsdGQgbmV0IG5nbyBvcmcgc2NoIHNvYyB3ZWIgIixscjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsdjoiIGFzbiBjb20gY29uZiBlZHUgZ292IGlkIG1pbCBuZXQgb3JnICIsbHk6IiBjb20gZWR1IGdvdiBpZCBtZWQgbmV0IG9yZyBwbGMgc2NoICIsbWE6IiBhYyBjbyBnb3YgbSBuZXQgb3JnIHByZXNzICIsbWM6IiBhc3NvIHRtICIsbWU6IiBhYyBjbyBlZHUgZ292IGl0cyBuZXQgb3JnIHByaXYgIixtZzoiIGNvbSBlZHUgZ292IG1pbCBub20gb3JnIHByZCB0bSAiLG1rOiIgY29tIGVkdSBnb3YgaW5mIG5hbWUgbmV0IG9yZyBwcm8gIixtbDoiIGNvbSBlZHUgZ292IG5ldCBvcmcgcHJlc3NlICIsbW46IiBlZHUgZ292IG9yZyAiLG1vOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG10OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG12OiIgYWVybyBiaXogY29tIGNvb3AgZWR1IGdvdiBpbmZvIGludCBtaWwgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gIixtdzoiIGFjIGNvIGNvbSBjb29wIGVkdSBnb3YgaW50IG11c2V1bSBuZXQgb3JnICIsbXg6IiBjb20gZWR1IGdvYiBuZXQgb3JnICIsbXk6IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLG5mOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5ldCBvdGhlciBwZXIgcmVjIHN0b3JlIHdlYiAiLG5nOiIgYml6IGNvbSBlZHUgZ292IG1pbCBtb2JpIG5hbWUgbmV0IG9yZyBzY2ggIixuaToiIGFjIGNvIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyAiLG5wOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixucjoiIGJpeiBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixvbToiIGFjIGJpeiBjbyBjb20gZWR1IGdvdiBtZWQgbWlsIG11c2V1bSBuZXQgb3JnIHBybyBzY2ggIixwZToiIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyBzbGQgIixwaDoiIGNvbSBlZHUgZ292IGkgbWlsIG5ldCBuZ28gb3JnICIscGs6IiBiaXogY29tIGVkdSBmYW0gZ29iIGdvayBnb24gZ29wIGdvcyBnb3YgbmV0IG9yZyB3ZWIgIixwbDoiIGFydCBiaWFseXN0b2sgYml6IGNvbSBlZHUgZ2RhIGdkYW5zayBnb3J6b3cgZ292IGluZm8ga2F0b3dpY2Uga3Jha293IGxvZHogbHVibGluIG1pbCBuZXQgbmdvIG9sc3p0eW4gb3JnIHBvem5hbiBwd3IgcmFkb20gc2x1cHNrIHN6Y3plY2luIHRvcnVuIHdhcnN6YXdhIHdhdyB3cm9jIHdyb2NsYXcgemdvcmEgIixwcjoiIGFjIGJpeiBjb20gZWR1IGVzdCBnb3YgaW5mbyBpc2xhIG5hbWUgbmV0IG9yZyBwcm8gcHJvZiAiLHBzOiIgY29tIGVkdSBnb3YgbmV0IG9yZyBwbG8gc2VjICIscHc6IiBiZWxhdSBjbyBlZCBnbyBuZSBvciAiLHJvOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5vbSBudCBvcmcgcmVjIHN0b3JlIHRtIHd3dyAiLHJzOiIgYWMgY28gZWR1IGdvdiBpbiBvcmcgIixzYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzYzoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzaDoiIGNvIGNvbSBlZHUgZ292IG5ldCBub20gb3JnICIsc2w6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsc3Q6IiBjbyBjb20gY29uc3VsYWRvIGVkdSBlbWJhaXhhZGEgZ292IG1pbCBuZXQgb3JnIHByaW5jaXBlIHNhb3RvbWUgc3RvcmUgIixzdjoiIGNvbSBlZHUgZ29iIG9yZyByZWQgIixzejoiIGFjIGNvIG9yZyAiLHRyOiIgYXYgYmJzIGJlbCBiaXogY29tIGRyIGVkdSBnZW4gZ292IGluZm8gazEyIG5hbWUgbmV0IG9yZyBwb2wgdGVsIHRzayB0diB3ZWIgIix0dDoiIGFlcm8gYml6IGNhdCBjbyBjb20gY29vcCBlZHUgZ292IGluZm8gaW50IGpvYnMgbWlsIG1vYmkgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gdGVsIHRyYXZlbCAiLHR3OiIgY2x1YiBjb20gZWJpeiBlZHUgZ2FtZSBnb3YgaWR2IG1pbCBuZXQgb3JnICIsbXU6IiBhYyBjbyBjb20gZ292IG5ldCBvciBvcmcgIixtejoiIGFjIGNvIGVkdSBnb3Ygb3JnICIsbmE6IiBjbyBjb20gIixuejoiIGFjIGNvIGNyaSBnZWVrIGdlbiBnb3Z0IGhlYWx0aCBpd2kgbWFvcmkgbWlsIG5ldCBvcmcgcGFybGlhbWVudCBzY2hvb2wgIixwYToiIGFibyBhYyBjb20gZWR1IGdvYiBpbmcgbWVkIG5ldCBub20gb3JnIHNsZCAiLHB0OiIgY29tIGVkdSBnb3YgaW50IG5ldCBub21lIG9yZyBwdWJsICIscHk6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyAiLHFhOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixyZToiIGFzc28gY29tIG5vbSAiLHJ1OiIgYWMgYWR5Z2V5YSBhbHRhaSBhbXVyIGFya2hhbmdlbHNrIGFzdHJha2hhbiBiYXNoa2lyaWEgYmVsZ29yb2QgYmlyIGJyeWFuc2sgYnVyeWF0aWEgY2JnIGNoZWwgY2hlbHlhYmluc2sgY2hpdGEgY2h1a290a2EgY2h1dmFzaGlhIGNvbSBkYWdlc3RhbiBlLWJ1cmcgZWR1IGdvdiBncm96bnkgaW50IGlya3V0c2sgaXZhbm92byBpemhldnNrIGphciBqb3Noa2FyLW9sYSBrYWxteWtpYSBrYWx1Z2Ega2FtY2hhdGthIGthcmVsaWEga2F6YW4ga2NociBrZW1lcm92byBraGFiYXJvdnNrIGtoYWthc3NpYSBraHYga2lyb3Yga29lbmlnIGtvbWkga29zdHJvbWEga3Jhbm95YXJzayBrdWJhbiBrdXJnYW4ga3Vyc2sgbGlwZXRzayBtYWdhZGFuIG1hcmkgbWFyaS1lbCBtYXJpbmUgbWlsIG1vcmRvdmlhIG1vc3JlZyBtc2sgbXVybWFuc2sgbmFsY2hpayBuZXQgbm5vdiBub3Ygbm92b3NpYmlyc2sgbnNrIG9tc2sgb3JlbmJ1cmcgb3JnIG9yeW9sIHBlbnphIHBlcm0gcHAgcHNrb3YgcHR6IHJuZCByeWF6YW4gc2FraGFsaW4gc2FtYXJhIHNhcmF0b3Ygc2ltYmlyc2sgc21vbGVuc2sgc3BiIHN0YXZyb3BvbCBzdHYgc3VyZ3V0IHRhbWJvdiB0YXRhcnN0YW4gdG9tIHRvbXNrIHRzYXJpdHN5biB0c2sgdHVsYSB0dXZhIHR2ZXIgdHl1bWVuIHVkbSB1ZG11cnRpYSB1bGFuLXVkZSB2bGFkaWthdmtheiB2bGFkaW1pciB2bGFkaXZvc3RvayB2b2xnb2dyYWQgdm9sb2dkYSB2b3JvbmV6aCB2cm4gdnlhdGthIHlha3V0aWEgeWFtYWwgeWVrYXRlcmluYnVyZyB5dXpobm8tc2FraGFsaW5zayAiLHJ3OiIgYWMgY28gY29tIGVkdSBnb3V2IGdvdiBpbnQgbWlsIG5ldCAiLHNhOiIgY29tIGVkdSBnb3YgbWVkIG5ldCBvcmcgcHViIHNjaCAiLHNkOiIgY29tIGVkdSBnb3YgaW5mbyBtZWQgbmV0IG9yZyB0diAiLHNlOiIgYSBhYyBiIGJkIGMgZCBlIGYgZyBoIGkgayBsIG0gbiBvIG9yZyBwIHBhcnRpIHBwIHByZXNzIHIgcyB0IHRtIHUgdyB4IHkgeiAiLHNnOiIgY29tIGVkdSBnb3YgaWRuIG5ldCBvcmcgcGVyICIsc246IiBhcnQgY29tIGVkdSBnb3V2IG9yZyBwZXJzbyB1bml2ICIsc3k6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5ld3Mgb3JnICIsdGg6IiBhYyBjbyBnbyBpbiBtaSBuZXQgb3IgIix0ajoiIGFjIGJpeiBjbyBjb20gZWR1IGdvIGdvdiBpbmZvIGludCBtaWwgbmFtZSBuZXQgbmljIG9yZyB0ZXN0IHdlYiAiLHRuOiIgYWdyaW5ldCBjb20gZGVmZW5zZSBlZHVuZXQgZW5zIGZpbiBnb3YgaW5kIGluZm8gaW50bCBtaW5jb20gbmF0IG5ldCBvcmcgcGVyc28gcm5ydCBybnMgcm51IHRvdXJpc20gIix0ejoiIGFjIGNvIGdvIG5lIG9yICIsdWE6IiBiaXogY2hlcmthc3N5IGNoZXJuaWdvdiBjaGVybm92dHN5IGNrIGNuIGNvIGNvbSBjcmltZWEgY3YgZG4gZG5lcHJvcGV0cm92c2sgZG9uZXRzayBkcCBlZHUgZ292IGlmIGluIGl2YW5vLWZyYW5raXZzayBraCBraGFya292IGtoZXJzb24ga2htZWxuaXRza2l5IGtpZXYga2lyb3ZvZ3JhZCBrbSBrciBrcyBrdiBsZyBsdWdhbnNrIGx1dHNrIGx2aXYgbWUgbWsgbmV0IG5pa29sYWV2IG9kIG9kZXNzYSBvcmcgcGwgcG9sdGF2YSBwcCByb3ZubyBydiBzZWJhc3RvcG9sIHN1bXkgdGUgdGVybm9waWwgdXpoZ29yb2QgdmlubmljYSB2biB6YXBvcml6aHpoZSB6aGl0b21pciB6cCB6dCAiLHVnOiIgYWMgY28gZ28gbmUgb3Igb3JnIHNjICIsdWs6IiBhYyBibCBicml0aXNoLWxpYnJhcnkgY28gY3ltIGdvdiBnb3Z0IGljbmV0IGpldCBsZWEgbHRkIG1lIG1pbCBtb2QgbmF0aW9uYWwtbGlicmFyeS1zY290bGFuZCBuZWwgbmV0IG5ocyBuaWMgbmxzIG9yZyBvcmduIHBhcmxpYW1lbnQgcGxjIHBvbGljZSBzY2ggc2NvdCBzb2MgIix1czoiIGRuaSBmZWQgaXNhIGtpZHMgbnNuICIsdXk6IiBjb20gZWR1IGd1YiBtaWwgbmV0IG9yZyAiLHZlOiIgY28gY29tIGVkdSBnb2IgaW5mbyBtaWwgbmV0IG9yZyB3ZWIgIix2aToiIGNvIGNvbSBrMTIgbmV0IG9yZyAiLHZuOiIgYWMgYml6IGNvbSBlZHUgZ292IGhlYWx0aCBpbmZvIGludCBuYW1lIG5ldCBvcmcgcHJvICIseWU6IiBjbyBjb20gZ292IGx0ZCBtZSBuZXQgb3JnIHBsYyAiLHl1OiIgYWMgY28gZWR1IGdvdiBvcmcgIix6YToiIGFjIGFncmljIGFsdCBib3Vyc2UgY2l0eSBjbyBjeWJlcm5ldCBkYiBlZHUgZ292IGdyb25kYXIgaWFjY2VzcyBpbXQgaW5jYSBsYW5kZXNpZ24gbGF3IG1pbCBuZXQgbmdvIG5pcyBub20gb2xpdmV0dGkgb3JnIHBpeCBzY2hvb2wgdG0gd2ViICIsem06IiBhYyBjbyBjb20gZWR1IGdvdiBuZXQgb3JnIHNjaCAiLGNvbToiYXIgYnIgY24gZGUgZXUgZ2IgZ3IgaHUganBuIGtyIG5vIHFjIHJ1IHNhIHNlIHVrIHVzIHV5IHphICIsbmV0OiJnYiBqcCBzZSB1ayAiLG9yZzoiYWUiLGRlOiJjb20gIn0saGFzOmZ1bmN0aW9uKG4pe3ZhciBzPW4ubGFzdEluZGV4T2YoIi4iKTtpZihzPD0wfHxzPj1uLmxlbmd0aC0xKXJldHVybiExO3ZhciBvPW4ubGFzdEluZGV4T2YoIi4iLHMtMSk7aWYobzw9MHx8bz49cy0xKXJldHVybiExO3ZhciByPWkubGlzdFtuLnNsaWNlKHMrMSldO3JldHVybiByP3IuaW5kZXhPZigiICIrbi5zbGljZShvKzEscykrIiAiKT49MDohMX0saXM6ZnVuY3Rpb24obil7dmFyIHM9bi5sYXN0SW5kZXhPZigiLiIpO2lmKHM8PTB8fHM+PW4ubGVuZ3RoLTEpcmV0dXJuITE7dmFyIG89bi5sYXN0SW5kZXhPZigiLiIscy0xKTtpZihvPj0wKXJldHVybiExO3ZhciByPWkubGlzdFtuLnNsaWNlKHMrMSldO3JldHVybiByP3IuaW5kZXhPZigiICIrbi5zbGljZSgwLHMpKyIgIik+PTA6ITF9LGdldDpmdW5jdGlvbihuKXt2YXIgcz1uLmxhc3RJbmRleE9mKCIuIik7aWYoczw9MHx8cz49bi5sZW5ndGgtMSlyZXR1cm4gbnVsbDt2YXIgbz1uLmxhc3RJbmRleE9mKCIuIixzLTEpO2lmKG88PTB8fG8+PXMtMSlyZXR1cm4gbnVsbDt2YXIgcj1pLmxpc3Rbbi5zbGljZShzKzEpXTtyZXR1cm4hcnx8ci5pbmRleE9mKCIgIituLnNsaWNlKG8rMSxzKSsiICIpPDA/bnVsbDpuLnNsaWNlKG8rMSl9LG5vQ29uZmxpY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdC5TZWNvbmRMZXZlbERvbWFpbnM9PT10aGlzJiYodC5TZWNvbmRMZXZlbERvbWFpbnM9ZSksdGhpc319O3JldHVybiBpfSl9KTt2YXIgb2M9dHMoKHVXLF9aKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqCiAqIFZlcnNpb246IDEuMTkuMTEKICoKICogQXV0aG9yOiBSb2RuZXkgUmVobQogKiBXZWI6IGh0dHA6Ly9tZWRpYWxpemUuZ2l0aHViLmlvL1VSSS5qcy8KICoKICogTGljZW5zZWQgdW5kZXIKICogICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAqCiAqLyhmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0Ijt0eXBlb2YgX1o9PSJvYmplY3QiJiZfWi5leHBvcnRzP19aLmV4cG9ydHM9ZShfVygpLFpXKCkscFcoKSk6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoWyIuL3B1bnljb2RlIiwiLi9JUHY2IiwiLi9TZWNvbmRMZXZlbERvbWFpbnMiXSxlKTp0LlVSST1lKHQucHVueWNvZGUsdC5JUHY2LHQuU2Vjb25kTGV2ZWxEb21haW5zLHQpfSkodVcsZnVuY3Rpb24odCxlLGksbil7InVzZSBzdHJpY3QiO3ZhciBzPW4mJm4uVVJJO2Z1bmN0aW9uIG8oZyxWKXt2YXIgRD1hcmd1bWVudHMubGVuZ3RoPj0xLHc9YXJndW1lbnRzLmxlbmd0aD49MjtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4gRD93P25ldyBvKGcsVik6bmV3IG8oZyk6bmV3IG87aWYoZz09PXZvaWQgMCl7aWYoRCl0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmRlZmluZWQgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQgZm9yIFVSSSIpO3R5cGVvZiBsb2NhdGlvbjwidSI/Zz1sb2NhdGlvbi5ocmVmKyIiOmc9IiJ9aWYoZz09PW51bGwmJkQpdGhyb3cgbmV3IFR5cGVFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgVVJJIik7cmV0dXJuIHRoaXMuaHJlZihnKSxWIT09dm9pZCAwP3RoaXMuYWJzb2x1dGVUbyhWKTp0aGlzfWZ1bmN0aW9uIHIoZyl7cmV0dXJuL15bMC05XSskLy50ZXN0KGcpfW8udmVyc2lvbj0iMS4xOS4xMSI7dmFyIGE9by5wcm90b3R5cGUsaD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEEoZyl7cmV0dXJuIGcucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9ZnVuY3Rpb24gZChnKXtyZXR1cm4gZz09PXZvaWQgMD8iVW5kZWZpbmVkIjpTdHJpbmcoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGcpKS5zbGljZSg4LC0xKX1mdW5jdGlvbiBmKGcpe3JldHVybiBkKGcpPT09IkFycmF5In1mdW5jdGlvbiBFKGcsVil7dmFyIEQ9e30sdyx4O2lmKGQoVik9PT0iUmVnRXhwIilEPW51bGw7ZWxzZSBpZihmKFYpKWZvcih3PTAseD1WLmxlbmd0aDt3PHg7dysrKURbVlt3XV09ITA7ZWxzZSBEW1ZdPSEwO2Zvcih3PTAseD1nLmxlbmd0aDt3PHg7dysrKXt2YXIgSD1EJiZEW2dbd11dIT09dm9pZCAwfHwhRCYmVi50ZXN0KGdbd10pO0gmJihnLnNwbGljZSh3LDEpLHgtLSx3LS0pfXJldHVybiBnfWZ1bmN0aW9uIF8oZyxWKXt2YXIgRCx3O2lmKGYoVikpe2ZvcihEPTAsdz1WLmxlbmd0aDtEPHc7RCsrKWlmKCFfKGcsVltEXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIHg9ZChWKTtmb3IoRD0wLHc9Zy5sZW5ndGg7RDx3O0QrKylpZih4PT09IlJlZ0V4cCIpe2lmKHR5cGVvZiBnW0RdPT0ic3RyaW5nIiYmZ1tEXS5tYXRjaChWKSlyZXR1cm4hMH1lbHNlIGlmKGdbRF09PT1WKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFIoZyxWKXtpZighZihnKXx8IWYoVil8fGcubGVuZ3RoIT09Vi5sZW5ndGgpcmV0dXJuITE7Zy5zb3J0KCksVi5zb3J0KCk7Zm9yKHZhciBEPTAsdz1nLmxlbmd0aDtEPHc7RCsrKWlmKGdbRF0hPT1WW0RdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEkoZyl7dmFyIFY9L15cLyt8XC8rJC9nO3JldHVybiBnLnJlcGxhY2UoViwiIil9by5fcGFydHM9ZnVuY3Rpb24oKXtyZXR1cm57cHJvdG9jb2w6bnVsbCx1c2VybmFtZTpudWxsLHBhc3N3b3JkOm51bGwsaG9zdG5hbWU6bnVsbCx1cm46bnVsbCxwb3J0Om51bGwscGF0aDpudWxsLHF1ZXJ5Om51bGwsZnJhZ21lbnQ6bnVsbCxwcmV2ZW50SW52YWxpZEhvc3RuYW1lOm8ucHJldmVudEludmFsaWRIb3N0bmFtZSxkdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM6by5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsZXNjYXBlUXVlcnlTcGFjZTpvLmVzY2FwZVF1ZXJ5U3BhY2V9fSxvLnByZXZlbnRJbnZhbGlkSG9zdG5hbWU9ITEsby5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM9ITEsby5lc2NhcGVRdWVyeVNwYWNlPSEwLG8ucHJvdG9jb2xfZXhwcmVzc2lvbj0vXlthLXpdW2EtejAtOS4rLV0qJC9pLG8uaWRuX2V4cHJlc3Npb249L1teYS16MC05XC5fLV0vaSxvLnB1bnljb2RlX2V4cHJlc3Npb249Lyh4bi0tKS9pLG8uaXA0X2V4cHJlc3Npb249L15cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9JC8sby5pcDZfZXhwcmVzc2lvbj0vXlxzKigoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKShcLigyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpKSglLispP1xzKiQvLG8uZmluZF91cmlfZXhwcmVzc2lvbj0vXGIoKD86W2Etel1bXHctXSs6KD86XC97MSwzfXxbYS16MC05JV0pfHd3d1xkezAsM31bLl18W2EtejAtOS5cLV0rWy5dW2Etel17Miw0fVwvKSg/OlteXHMoKTw+XSt8XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKSkrKD86XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKXxbXlxzYCEoKVxbXF17fTs6JyIuLDw+P8KrwrvigJzigJ3igJjigJldKSkvaWcsby5maW5kVXJpPXtzdGFydDovXGIoPzooW2Etel1bYS16MC05ListXSo6XC9cLyl8d3d3XC4pL2dpLGVuZDovW1xzXHJcbl18JC8sdHJpbTovW2AhKClcW1xde307OiciLiw8Pj/Cq8K74oCc4oCd4oCe4oCY4oCZXSskLyxwYXJlbnM6LyhcKFteXCldKlwpfFxbW15cXV0qXF18XHtbXn1dKlx9fDxbXj5dKj4pL2d9LG8ubGVhZGluZ193aGl0ZXNwYWNlX2V4cHJlc3Npb249L15bXHgwMC1ceDIwXHUwMGEwXHUxNjgwXHUyMDAwLVx1MjAwYVx1MjAyOFx1MjAyOVx1MjAyZlx1MjA1Zlx1MzAwMFx1ZmVmZl0rLyxvLmFzY2lpX3RhYl93aGl0ZXNwYWNlPS9bXHUwMDA5XHUwMDBBXHUwMDBEXSsvZyxvLmRlZmF1bHRQb3J0cz17aHR0cDoiODAiLGh0dHBzOiI0NDMiLGZ0cDoiMjEiLGdvcGhlcjoiNzAiLHdzOiI4MCIsd3NzOiI0NDMifSxvLmhvc3RQcm90b2NvbHM9WyJodHRwIiwiaHR0cHMiXSxvLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycz0vW15hLXpBLVowLTlcLlwtOl9dLyxvLmRvbUF0dHJpYnV0ZXM9e2E6ImhyZWYiLGJsb2NrcXVvdGU6ImNpdGUiLGxpbms6ImhyZWYiLGJhc2U6ImhyZWYiLHNjcmlwdDoic3JjIixmb3JtOiJhY3Rpb24iLGltZzoic3JjIixhcmVhOiJocmVmIixpZnJhbWU6InNyYyIsZW1iZWQ6InNyYyIsc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLGlucHV0OiJzcmMiLGF1ZGlvOiJzcmMiLHZpZGVvOiJzcmMifSxvLmdldERvbUF0dHJpYnV0ZT1mdW5jdGlvbihnKXtpZighKCFnfHwhZy5ub2RlTmFtZSkpe3ZhciBWPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighKFY9PT0iaW5wdXQiJiZnLnR5cGUhPT0iaW1hZ2UiKSlyZXR1cm4gby5kb21BdHRyaWJ1dGVzW1ZdfX07ZnVuY3Rpb24gQyhnKXtyZXR1cm4gZXNjYXBlKGcpfWZ1bmN0aW9uIE4oZyl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChnKS5yZXBsYWNlKC9bIScoKSpdL2csQykucmVwbGFjZSgvXCovZywiJTJBIil9by5lbmNvZGU9TixvLmRlY29kZT1kZWNvZGVVUklDb21wb25lbnQsby5pc284ODU5PWZ1bmN0aW9uKCl7by5lbmNvZGU9ZXNjYXBlLG8uZGVjb2RlPXVuZXNjYXBlfSxvLnVuaWNvZGU9ZnVuY3Rpb24oKXtvLmVuY29kZT1OLG8uZGVjb2RlPWRlY29kZVVSSUNvbXBvbmVudH0sby5jaGFyYWN0ZXJzPXtwYXRobmFtZTp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDI0fDI2fDJCfDJDfDNCfDNEfDNBfDQwKS9pZyxtYXA6eyIlMjQiOiIkIiwiJTI2IjoiJiIsIiUyQiI6IisiLCIlMkMiOiIsIiwiJTNCIjoiOyIsIiUzRCI6Ij0iLCIlM0EiOiI6IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/I10vZyxtYXA6eyIvIjoiJTJGIiwiPyI6IiUzRiIsIiMiOiIlMjMifX19LHJlc2VydmVkOntlbmNvZGU6e2V4cHJlc3Npb246LyUoMjF8MjN8MjR8MjZ8Mjd8Mjh8Mjl8MkF8MkJ8MkN8MkZ8M0F8M0J8M0R8M0Z8NDB8NUJ8NUQpL2lnLG1hcDp7IiUzQSI6IjoiLCIlMkYiOiIvIiwiJTNGIjoiPyIsIiUyMyI6IiMiLCIlNUIiOiJbIiwiJTVEIjoiXSIsIiU0MCI6IkAiLCIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNiI6IiYiLCIlMjciOiInIiwiJTI4IjoiKCIsIiUyOSI6IikiLCIlMkEiOiIqIiwiJTJCIjoiKyIsIiUyQyI6IiwiLCIlM0IiOiI7IiwiJTNEIjoiPSJ9fX0sdXJucGF0aDp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDIxfDI0fDI3fDI4fDI5fDJBfDJCfDJDfDNCfDNEfDQwKS9pZyxtYXA6eyIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNyI6IiciLCIlMjgiOiIoIiwiJTI5IjoiKSIsIiUyQSI6IioiLCIlMkIiOiIrIiwiJTJDIjoiLCIsIiUzQiI6IjsiLCIlM0QiOiI9IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/IzpdL2csbWFwOnsiLyI6IiUyRiIsIj8iOiIlM0YiLCIjIjoiJTIzIiwiOiI6IiUzQSJ9fX19LG8uZW5jb2RlUXVlcnk9ZnVuY3Rpb24oZyxWKXt2YXIgRD1vLmVuY29kZShnKyIiKTtyZXR1cm4gVj09PXZvaWQgMCYmKFY9by5lc2NhcGVRdWVyeVNwYWNlKSxWP0QucmVwbGFjZSgvJTIwL2csIisiKTpEfSxvLmRlY29kZVF1ZXJ5PWZ1bmN0aW9uKGcsVil7Zys9IiIsVj09PXZvaWQgMCYmKFY9by5lc2NhcGVRdWVyeVNwYWNlKTt0cnl7cmV0dXJuIG8uZGVjb2RlKFY/Zy5yZXBsYWNlKC9cKy9nLCIlMjAiKTpnKX1jYXRjaHtyZXR1cm4gZ319O3ZhciBUPXtlbmNvZGU6ImVuY29kZSIsZGVjb2RlOiJkZWNvZGUifSxGLGI9ZnVuY3Rpb24oZyxWKXtyZXR1cm4gZnVuY3Rpb24oRCl7dHJ5e3JldHVybiBvW1ZdKEQrIiIpLnJlcGxhY2Uoby5jaGFyYWN0ZXJzW2ddW1ZdLmV4cHJlc3Npb24sZnVuY3Rpb24odyl7cmV0dXJuIG8uY2hhcmFjdGVyc1tnXVtWXS5tYXBbd119KX1jYXRjaHtyZXR1cm4gRH19fTtmb3IoRiBpbiBUKW9bRisiUGF0aFNlZ21lbnQiXT1iKCJwYXRobmFtZSIsVFtGXSksb1tGKyJVcm5QYXRoU2VnbWVudCJdPWIoInVybnBhdGgiLFRbRl0pO3ZhciBHPWZ1bmN0aW9uKGcsVixEKXtyZXR1cm4gZnVuY3Rpb24odyl7dmFyIHg7RD94PWZ1bmN0aW9uKHR0KXtyZXR1cm4gb1tWXShvW0RdKHR0KSl9Ong9b1tWXTtmb3IodmFyIEg9KHcrIiIpLnNwbGl0KGcpLGo9MCxYPUgubGVuZ3RoO2o8WDtqKyspSFtqXT14KEhbal0pO3JldHVybiBILmpvaW4oZyl9fTtvLmRlY29kZVBhdGg9RygiLyIsImRlY29kZVBhdGhTZWdtZW50Iiksby5kZWNvZGVVcm5QYXRoPUcoIjoiLCJkZWNvZGVVcm5QYXRoU2VnbWVudCIpLG8ucmVjb2RlUGF0aD1HKCIvIiwiZW5jb2RlUGF0aFNlZ21lbnQiLCJkZWNvZGUiKSxvLnJlY29kZVVyblBhdGg9RygiOiIsImVuY29kZVVyblBhdGhTZWdtZW50IiwiZGVjb2RlIiksby5lbmNvZGVSZXNlcnZlZD1iKCJyZXNlcnZlZCIsImVuY29kZSIpLG8ucGFyc2U9ZnVuY3Rpb24oZyxWKXt2YXIgRDtyZXR1cm4gVnx8KFY9e3ByZXZlbnRJbnZhbGlkSG9zdG5hbWU6by5wcmV2ZW50SW52YWxpZEhvc3RuYW1lfSksZz1nLnJlcGxhY2Uoby5sZWFkaW5nX3doaXRlc3BhY2VfZXhwcmVzc2lvbiwiIiksZz1nLnJlcGxhY2Uoby5hc2NpaV90YWJfd2hpdGVzcGFjZSwiIiksRD1nLmluZGV4T2YoIiMiKSxEPi0xJiYoVi5mcmFnbWVudD1nLnN1YnN0cmluZyhEKzEpfHxudWxsLGc9Zy5zdWJzdHJpbmcoMCxEKSksRD1nLmluZGV4T2YoIj8iKSxEPi0xJiYoVi5xdWVyeT1nLnN1YnN0cmluZyhEKzEpfHxudWxsLGc9Zy5zdWJzdHJpbmcoMCxEKSksZz1nLnJlcGxhY2UoL14oaHR0cHM/fGZ0cHx3c3M/KT86K1svXFxdKi9pLCIkMTovLyIpLGc9Zy5yZXBsYWNlKC9eWy9cXF17Mix9L2ksIi8vIiksZy5zdWJzdHJpbmcoMCwyKT09PSIvLyI/KFYucHJvdG9jb2w9bnVsbCxnPWcuc3Vic3RyaW5nKDIpLGc9by5wYXJzZUF1dGhvcml0eShnLFYpKTooRD1nLmluZGV4T2YoIjoiKSxEPi0xJiYoVi5wcm90b2NvbD1nLnN1YnN0cmluZygwLEQpfHxudWxsLFYucHJvdG9jb2wmJiFWLnByb3RvY29sLm1hdGNoKG8ucHJvdG9jb2xfZXhwcmVzc2lvbik/Vi5wcm90b2NvbD12b2lkIDA6Zy5zdWJzdHJpbmcoRCsxLEQrMykucmVwbGFjZSgvXFwvZywiLyIpPT09Ii8vIj8oZz1nLnN1YnN0cmluZyhEKzMpLGc9by5wYXJzZUF1dGhvcml0eShnLFYpKTooZz1nLnN1YnN0cmluZyhEKzEpLFYudXJuPSEwKSkpLFYucGF0aD1nLFZ9LG8ucGFyc2VIb3N0PWZ1bmN0aW9uKGcsVil7Z3x8KGc9IiIpLGc9Zy5yZXBsYWNlKC9cXC9nLCIvIik7dmFyIEQ9Zy5pbmRleE9mKCIvIiksdyx4O2lmKEQ9PT0tMSYmKEQ9Zy5sZW5ndGgpLGcuY2hhckF0KDApPT09IlsiKXc9Zy5pbmRleE9mKCJdIiksVi5ob3N0bmFtZT1nLnN1YnN0cmluZygxLHcpfHxudWxsLFYucG9ydD1nLnN1YnN0cmluZyh3KzIsRCl8fG51bGwsVi5wb3J0PT09Ii8iJiYoVi5wb3J0PW51bGwpO2Vsc2V7dmFyIEg9Zy5pbmRleE9mKCI6Iiksaj1nLmluZGV4T2YoIi8iKSxYPWcuaW5kZXhPZigiOiIsSCsxKTtYIT09LTEmJihqPT09LTF8fFg8aik/KFYuaG9zdG5hbWU9Zy5zdWJzdHJpbmcoMCxEKXx8bnVsbCxWLnBvcnQ9bnVsbCk6KHg9Zy5zdWJzdHJpbmcoMCxEKS5zcGxpdCgiOiIpLFYuaG9zdG5hbWU9eFswXXx8bnVsbCxWLnBvcnQ9eFsxXXx8bnVsbCl9cmV0dXJuIFYuaG9zdG5hbWUmJmcuc3Vic3RyaW5nKEQpLmNoYXJBdCgwKSE9PSIvIiYmKEQrKyxnPSIvIitnKSxWLnByZXZlbnRJbnZhbGlkSG9zdG5hbWUmJm8uZW5zdXJlVmFsaWRIb3N0bmFtZShWLmhvc3RuYW1lLFYucHJvdG9jb2wpLFYucG9ydCYmby5lbnN1cmVWYWxpZFBvcnQoVi5wb3J0KSxnLnN1YnN0cmluZyhEKXx8Ii8ifSxvLnBhcnNlQXV0aG9yaXR5PWZ1bmN0aW9uKGcsVil7cmV0dXJuIGc9by5wYXJzZVVzZXJpbmZvKGcsViksby5wYXJzZUhvc3QoZyxWKX0sby5wYXJzZVVzZXJpbmZvPWZ1bmN0aW9uKGcsVil7dmFyIEQ9Zyx3PWcuaW5kZXhPZigiXFwiKTt3IT09LTEmJihnPWcucmVwbGFjZSgvXFwvZywiLyIpKTt2YXIgeD1nLmluZGV4T2YoIi8iKSxIPWcubGFzdEluZGV4T2YoIkAiLHg+LTE/eDpnLmxlbmd0aC0xKSxqO3JldHVybiBIPi0xJiYoeD09PS0xfHxIPHgpPyhqPWcuc3Vic3RyaW5nKDAsSCkuc3BsaXQoIjoiKSxWLnVzZXJuYW1lPWpbMF0/by5kZWNvZGUoalswXSk6bnVsbCxqLnNoaWZ0KCksVi5wYXNzd29yZD1qWzBdP28uZGVjb2RlKGouam9pbigiOiIpKTpudWxsLGc9RC5zdWJzdHJpbmcoSCsxKSk6KFYudXNlcm5hbWU9bnVsbCxWLnBhc3N3b3JkPW51bGwpLGd9LG8ucGFyc2VRdWVyeT1mdW5jdGlvbihnLFYpe2lmKCFnKXJldHVybnt9O2lmKGc9Zy5yZXBsYWNlKC8mKy9nLCImIikucmVwbGFjZSgvXlw/KiYqfCYrJC9nLCIiKSwhZylyZXR1cm57fTtmb3IodmFyIEQ9e30sdz1nLnNwbGl0KCImIikseD13Lmxlbmd0aCxILGosWCx0dD0wO3R0PHg7dHQrKylIPXdbdHRdLnNwbGl0KCI9Iiksaj1vLmRlY29kZVF1ZXJ5KEguc2hpZnQoKSxWKSxYPUgubGVuZ3RoP28uZGVjb2RlUXVlcnkoSC5qb2luKCI9IiksVik6bnVsbCxqIT09Il9fcHJvdG9fXyImJihoLmNhbGwoRCxqKT8oKHR5cGVvZiBEW2pdPT0ic3RyaW5nInx8RFtqXT09PW51bGwpJiYoRFtqXT1bRFtqXV0pLERbal0ucHVzaChYKSk6RFtqXT1YKTtyZXR1cm4gRH0sby5idWlsZD1mdW5jdGlvbihnKXt2YXIgVj0iIixEPSExO3JldHVybiBnLnByb3RvY29sJiYoVis9Zy5wcm90b2NvbCsiOiIpLCFnLnVybiYmKFZ8fGcuaG9zdG5hbWUpJiYoVis9Ii8vIixEPSEwKSxWKz1vLmJ1aWxkQXV0aG9yaXR5KGcpfHwiIix0eXBlb2YgZy5wYXRoPT0ic3RyaW5nIiYmKGcucGF0aC5jaGFyQXQoMCkhPT0iLyImJkQmJihWKz0iLyIpLFYrPWcucGF0aCksdHlwZW9mIGcucXVlcnk9PSJzdHJpbmciJiZnLnF1ZXJ5JiYoVis9Ij8iK2cucXVlcnkpLHR5cGVvZiBnLmZyYWdtZW50PT0ic3RyaW5nIiYmZy5mcmFnbWVudCYmKFYrPSIjIitnLmZyYWdtZW50KSxWfSxvLmJ1aWxkSG9zdD1mdW5jdGlvbihnKXt2YXIgVj0iIjtpZihnLmhvc3RuYW1lKW8uaXA2X2V4cHJlc3Npb24udGVzdChnLmhvc3RuYW1lKT9WKz0iWyIrZy5ob3N0bmFtZSsiXSI6Vis9Zy5ob3N0bmFtZTtlbHNlIHJldHVybiIiO3JldHVybiBnLnBvcnQmJihWKz0iOiIrZy5wb3J0KSxWfSxvLmJ1aWxkQXV0aG9yaXR5PWZ1bmN0aW9uKGcpe3JldHVybiBvLmJ1aWxkVXNlcmluZm8oZykrby5idWlsZEhvc3QoZyl9LG8uYnVpbGRVc2VyaW5mbz1mdW5jdGlvbihnKXt2YXIgVj0iIjtyZXR1cm4gZy51c2VybmFtZSYmKFYrPW8uZW5jb2RlKGcudXNlcm5hbWUpKSxnLnBhc3N3b3JkJiYoVis9IjoiK28uZW5jb2RlKGcucGFzc3dvcmQpKSxWJiYoVis9IkAiKSxWfSxvLmJ1aWxkUXVlcnk9ZnVuY3Rpb24oZyxWLEQpe3ZhciB3PSIiLHgsSCxqLFg7Zm9yKEggaW4gZylpZihIIT09Il9fcHJvdG9fXyImJmguY2FsbChnLEgpKWlmKGYoZ1tIXSkpZm9yKHg9e30saj0wLFg9Z1tIXS5sZW5ndGg7ajxYO2orKylnW0hdW2pdIT09dm9pZCAwJiZ4W2dbSF1bal0rIiJdPT09dm9pZCAwJiYodys9IiYiK28uYnVpbGRRdWVyeVBhcmFtZXRlcihILGdbSF1bal0sRCksViE9PSEwJiYoeFtnW0hdW2pdKyIiXT0hMCkpO2Vsc2UgZ1tIXSE9PXZvaWQgMCYmKHcrPSImIitvLmJ1aWxkUXVlcnlQYXJhbWV0ZXIoSCxnW0hdLEQpKTtyZXR1cm4gdy5zdWJzdHJpbmcoMSl9LG8uYnVpbGRRdWVyeVBhcmFtZXRlcj1mdW5jdGlvbihnLFYsRCl7cmV0dXJuIG8uZW5jb2RlUXVlcnkoZyxEKSsoViE9PW51bGw/Ij0iK28uZW5jb2RlUXVlcnkoVixEKToiIil9LG8uYWRkUXVlcnk9ZnVuY3Rpb24oZyxWLEQpe2lmKHR5cGVvZiBWPT0ib2JqZWN0Iilmb3IodmFyIHcgaW4gViloLmNhbGwoVix3KSYmby5hZGRRdWVyeShnLHcsVlt3XSk7ZWxzZSBpZih0eXBlb2YgVj09InN0cmluZyIpe2lmKGdbVl09PT12b2lkIDApe2dbVl09RDtyZXR1cm59ZWxzZSB0eXBlb2YgZ1tWXT09InN0cmluZyImJihnW1ZdPVtnW1ZdXSk7ZihEKXx8KEQ9W0RdKSxnW1ZdPShnW1ZdfHxbXSkuY29uY2F0KEQpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmFkZFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0sby5zZXRRdWVyeT1mdW5jdGlvbihnLFYsRCl7aWYodHlwZW9mIFY9PSJvYmplY3QiKWZvcih2YXIgdyBpbiBWKWguY2FsbChWLHcpJiZvLnNldFF1ZXJ5KGcsdyxWW3ddKTtlbHNlIGlmKHR5cGVvZiBWPT0ic3RyaW5nIilnW1ZdPUQ9PT12b2lkIDA/bnVsbDpEO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLnNldFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0sby5yZW1vdmVRdWVyeT1mdW5jdGlvbihnLFYsRCl7dmFyIHcseCxIO2lmKGYoVikpZm9yKHc9MCx4PVYubGVuZ3RoO3c8eDt3KyspZ1tWW3ddXT12b2lkIDA7ZWxzZSBpZihkKFYpPT09IlJlZ0V4cCIpZm9yKEggaW4gZylWLnRlc3QoSCkmJihnW0hdPXZvaWQgMCk7ZWxzZSBpZih0eXBlb2YgVj09Im9iamVjdCIpZm9yKEggaW4gViloLmNhbGwoVixIKSYmby5yZW1vdmVRdWVyeShnLEgsVltIXSk7ZWxzZSBpZih0eXBlb2YgVj09InN0cmluZyIpRCE9PXZvaWQgMD9kKEQpPT09IlJlZ0V4cCI/IWYoZ1tWXSkmJkQudGVzdChnW1ZdKT9nW1ZdPXZvaWQgMDpnW1ZdPUUoZ1tWXSxEKTpnW1ZdPT09U3RyaW5nKEQpJiYoIWYoRCl8fEQubGVuZ3RoPT09MSk/Z1tWXT12b2lkIDA6ZihnW1ZdKSYmKGdbVl09RShnW1ZdLEQpKTpnW1ZdPXZvaWQgMDtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5yZW1vdmVRdWVyeSgpIGFjY2VwdHMgYW4gb2JqZWN0LCBzdHJpbmcsIFJlZ0V4cCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIil9LG8uaGFzUXVlcnk9ZnVuY3Rpb24oZyxWLEQsdyl7c3dpdGNoKGQoVikpe2Nhc2UiU3RyaW5nIjpicmVhaztjYXNlIlJlZ0V4cCI6Zm9yKHZhciB4IGluIGcpaWYoaC5jYWxsKGcseCkmJlYudGVzdCh4KSYmKEQ9PT12b2lkIDB8fG8uaGFzUXVlcnkoZyx4LEQpKSlyZXR1cm4hMDtyZXR1cm4hMTtjYXNlIk9iamVjdCI6Zm9yKHZhciBIIGluIFYpaWYoaC5jYWxsKFYsSCkmJiFvLmhhc1F1ZXJ5KGcsSCxWW0hdKSlyZXR1cm4hMTtyZXR1cm4hMDtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5oYXNRdWVyeSgpIGFjY2VwdHMgYSBzdHJpbmcsIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBvYmplY3QgYXMgdGhlIG5hbWUgcGFyYW1ldGVyIil9c3dpdGNoKGQoRCkpe2Nhc2UiVW5kZWZpbmVkIjpyZXR1cm4gViBpbiBnO2Nhc2UiQm9vbGVhbiI6dmFyIGo9ISEoZihnW1ZdKT9nW1ZdLmxlbmd0aDpnW1ZdKTtyZXR1cm4gRD09PWo7Y2FzZSJGdW5jdGlvbiI6cmV0dXJuISFEKGdbVl0sVixnKTtjYXNlIkFycmF5IjppZighZihnW1ZdKSlyZXR1cm4hMTt2YXIgWD13P186UjtyZXR1cm4gWChnW1ZdLEQpO2Nhc2UiUmVnRXhwIjpyZXR1cm4gZihnW1ZdKT93P18oZ1tWXSxEKTohMTohIShnW1ZdJiZnW1ZdLm1hdGNoKEQpKTtjYXNlIk51bWJlciI6RD1TdHJpbmcoRCk7Y2FzZSJTdHJpbmciOnJldHVybiBmKGdbVl0pP3c/XyhnW1ZdLEQpOiExOmdbVl09PT1EO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmhhc1F1ZXJ5KCkgYWNjZXB0cyB1bmRlZmluZWQsIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBSZWdFeHAsIEZ1bmN0aW9uIGFzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIiKX19LG8uam9pblBhdGhzPWZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLFY9W10sRD0wLHc9MDt3PGFyZ3VtZW50cy5sZW5ndGg7dysrKXt2YXIgeD1uZXcgbyhhcmd1bWVudHNbd10pO2cucHVzaCh4KTtmb3IodmFyIEg9eC5zZWdtZW50KCksaj0wO2o8SC5sZW5ndGg7aisrKXR5cGVvZiBIW2pdPT0ic3RyaW5nIiYmVi5wdXNoKEhbal0pLEhbal0mJkQrK31pZighVi5sZW5ndGh8fCFEKXJldHVybiBuZXcgbygiIik7dmFyIFg9bmV3IG8oIiIpLnNlZ21lbnQoVik7cmV0dXJuKGdbMF0ucGF0aCgpPT09IiJ8fGdbMF0ucGF0aCgpLnNsaWNlKDAsMSk9PT0iLyIpJiZYLnBhdGgoIi8iK1gucGF0aCgpKSxYLm5vcm1hbGl6ZSgpfSxvLmNvbW1vblBhdGg9ZnVuY3Rpb24oZyxWKXt2YXIgRD1NYXRoLm1pbihnLmxlbmd0aCxWLmxlbmd0aCksdztmb3Iodz0wO3c8RDt3KyspaWYoZy5jaGFyQXQodykhPT1WLmNoYXJBdCh3KSl7dy0tO2JyZWFrfXJldHVybiB3PDE/Zy5jaGFyQXQoMCk9PT1WLmNoYXJBdCgwKSYmZy5jaGFyQXQoMCk9PT0iLyI/Ii8iOiIiOigoZy5jaGFyQXQodykhPT0iLyJ8fFYuY2hhckF0KHcpIT09Ii8iKSYmKHc9Zy5zdWJzdHJpbmcoMCx3KS5sYXN0SW5kZXhPZigiLyIpKSxnLnN1YnN0cmluZygwLHcrMSkpfSxvLndpdGhpblN0cmluZz1mdW5jdGlvbihnLFYsRCl7RHx8KEQ9e30pO3ZhciB3PUQuc3RhcnR8fG8uZmluZFVyaS5zdGFydCx4PUQuZW5kfHxvLmZpbmRVcmkuZW5kLEg9RC50cmltfHxvLmZpbmRVcmkudHJpbSxqPUQucGFyZW5zfHxvLmZpbmRVcmkucGFyZW5zLFg9L1thLXowLTktXT1bIiddPyQvaTtmb3Iody5sYXN0SW5kZXg9MDs7KXt2YXIgdHQ9dy5leGVjKGcpO2lmKCF0dClicmVhazt2YXIgQj10dC5pbmRleDtpZihELmlnbm9yZUh0bWwpe3ZhciBJdD1nLnNsaWNlKE1hdGgubWF4KEItMywwKSxCKTtpZihJdCYmWC50ZXN0KEl0KSljb250aW51ZX1mb3IodmFyIGd0PUIrZy5zbGljZShCKS5zZWFyY2goeCksWXQ9Zy5zbGljZShCLGd0KSxNdD0tMTs7KXt2YXIgQ3Q9ai5leGVjKFl0KTtpZighQ3QpYnJlYWs7dmFyIHp0PUN0LmluZGV4K0N0WzBdLmxlbmd0aDtNdD1NYXRoLm1heChNdCx6dCl9aWYoTXQ+LTE/WXQ9WXQuc2xpY2UoMCxNdCkrWXQuc2xpY2UoTXQpLnJlcGxhY2UoSCwiIik6WXQ9WXQucmVwbGFjZShILCIiKSwhKFl0Lmxlbmd0aDw9dHRbMF0ubGVuZ3RoKSYmIShELmlnbm9yZSYmRC5pZ25vcmUudGVzdChZdCkpKXtndD1CK1l0Lmxlbmd0aDt2YXIga3Q9VihZdCxCLGd0LGcpO2lmKGt0PT09dm9pZCAwKXt3Lmxhc3RJbmRleD1ndDtjb250aW51ZX1rdD1TdHJpbmcoa3QpLGc9Zy5zbGljZSgwLEIpK2t0K2cuc2xpY2UoZ3QpLHcubGFzdEluZGV4PUIra3QubGVuZ3RofX1yZXR1cm4gdy5sYXN0SW5kZXg9MCxnfSxvLmVuc3VyZVZhbGlkSG9zdG5hbWU9ZnVuY3Rpb24oZyxWKXt2YXIgRD0hIWcsdz0hIVYseD0hMTtpZih3JiYoeD1fKG8uaG9zdFByb3RvY29scyxWKSkseCYmIUQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSG9zdG5hbWUgY2Fubm90IGJlIGVtcHR5LCBpZiBwcm90b2NvbCBpcyAiK1YpO2lmKGcmJmcubWF0Y2goby5pbnZhbGlkX2hvc3RuYW1lX2NoYXJhY3RlcnMpKXtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdIb3N0bmFtZSAiJytnKyciIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05Li06X10gYW5kIFB1bnljb2RlLmpzIGlzIG5vdCBhdmFpbGFibGUnKTtpZih0LnRvQVNDSUkoZykubWF0Y2goby5pbnZhbGlkX2hvc3RuYW1lX2NoYXJhY3RlcnMpKXRocm93IG5ldyBUeXBlRXJyb3IoJ0hvc3RuYW1lICInK2crJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuLTpfXScpfX0sby5lbnN1cmVWYWxpZFBvcnQ9ZnVuY3Rpb24oZyl7aWYoZyl7dmFyIFY9TnVtYmVyKGcpO2lmKCEocihWKSYmVj4wJiZWPDY1NTM2KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQb3J0ICInK2crJyIgaXMgbm90IGEgdmFsaWQgcG9ydCcpfX0sby5ub0NvbmZsaWN0PWZ1bmN0aW9uKGcpe2lmKGcpe3ZhciBWPXtVUkk6dGhpcy5ub0NvbmZsaWN0KCl9O3JldHVybiBuLlVSSVRlbXBsYXRlJiZ0eXBlb2Ygbi5VUklUZW1wbGF0ZS5ub0NvbmZsaWN0PT0iZnVuY3Rpb24iJiYoVi5VUklUZW1wbGF0ZT1uLlVSSVRlbXBsYXRlLm5vQ29uZmxpY3QoKSksbi5JUHY2JiZ0eXBlb2Ygbi5JUHY2Lm5vQ29uZmxpY3Q9PSJmdW5jdGlvbiImJihWLklQdjY9bi5JUHY2Lm5vQ29uZmxpY3QoKSksbi5TZWNvbmRMZXZlbERvbWFpbnMmJnR5cGVvZiBuLlNlY29uZExldmVsRG9tYWlucy5ub0NvbmZsaWN0PT0iZnVuY3Rpb24iJiYoVi5TZWNvbmRMZXZlbERvbWFpbnM9bi5TZWNvbmRMZXZlbERvbWFpbnMubm9Db25mbGljdCgpKSxWfWVsc2Ugbi5VUkk9PT10aGlzJiYobi5VUkk9cyk7cmV0dXJuIHRoaXN9LGEuYnVpbGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGc9PT0hMD90aGlzLl9kZWZlcnJlZF9idWlsZD0hMDooZz09PXZvaWQgMHx8dGhpcy5fZGVmZXJyZWRfYnVpbGQpJiYodGhpcy5fc3RyaW5nPW8uYnVpbGQodGhpcy5fcGFydHMpLHRoaXMuX2RlZmVycmVkX2J1aWxkPSExKSx0aGlzfSxhLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvKHRoaXMpfSxhLnZhbHVlT2Y9YS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1aWxkKCExKS5fc3RyaW5nfTtmdW5jdGlvbiBNKGcpe3JldHVybiBmdW5jdGlvbihWLEQpe3JldHVybiBWPT09dm9pZCAwP3RoaXMuX3BhcnRzW2ddfHwiIjoodGhpcy5fcGFydHNbZ109Vnx8bnVsbCx0aGlzLmJ1aWxkKCFEKSx0aGlzKX19ZnVuY3Rpb24gUShnLFYpe3JldHVybiBmdW5jdGlvbihELHcpe3JldHVybiBEPT09dm9pZCAwP3RoaXMuX3BhcnRzW2ddfHwiIjooRCE9PW51bGwmJihEPUQrIiIsRC5jaGFyQXQoMCk9PT1WJiYoRD1ELnN1YnN0cmluZygxKSkpLHRoaXMuX3BhcnRzW2ddPUQsdGhpcy5idWlsZCghdyksdGhpcyl9fWEucHJvdG9jb2w9TSgicHJvdG9jb2wiKSxhLnVzZXJuYW1lPU0oInVzZXJuYW1lIiksYS5wYXNzd29yZD1NKCJwYXNzd29yZCIpLGEuaG9zdG5hbWU9TSgiaG9zdG5hbWUiKSxhLnBvcnQ9TSgicG9ydCIpLGEucXVlcnk9USgicXVlcnkiLCI/IiksYS5mcmFnbWVudD1RKCJmcmFnbWVudCIsIiMiKSxhLnNlYXJjaD1mdW5jdGlvbihnLFYpe3ZhciBEPXRoaXMucXVlcnkoZyxWKTtyZXR1cm4gdHlwZW9mIEQ9PSJzdHJpbmciJiZELmxlbmd0aD8iPyIrRDpEfSxhLmhhc2g9ZnVuY3Rpb24oZyxWKXt2YXIgRD10aGlzLmZyYWdtZW50KGcsVik7cmV0dXJuIHR5cGVvZiBEPT0ic3RyaW5nIiYmRC5sZW5ndGg/IiMiK0Q6RH0sYS5wYXRobmFtZT1mdW5jdGlvbihnLFYpe2lmKGc9PT12b2lkIDB8fGc9PT0hMCl7dmFyIEQ9dGhpcy5fcGFydHMucGF0aHx8KHRoaXMuX3BhcnRzLmhvc3RuYW1lPyIvIjoiIik7cmV0dXJuIGc/KHRoaXMuX3BhcnRzLnVybj9vLmRlY29kZVVyblBhdGg6by5kZWNvZGVQYXRoKShEKTpEfWVsc2UgcmV0dXJuIHRoaXMuX3BhcnRzLnVybj90aGlzLl9wYXJ0cy5wYXRoPWc/by5yZWNvZGVVcm5QYXRoKGcpOiIiOnRoaXMuX3BhcnRzLnBhdGg9Zz9vLnJlY29kZVBhdGgoZyk6Ii8iLHRoaXMuYnVpbGQoIVYpLHRoaXN9LGEucGF0aD1hLnBhdGhuYW1lLGEuaHJlZj1mdW5jdGlvbihnLFYpe3ZhciBEO2lmKGc9PT12b2lkIDApcmV0dXJuIHRoaXMudG9TdHJpbmcoKTt0aGlzLl9zdHJpbmc9IiIsdGhpcy5fcGFydHM9by5fcGFydHMoKTt2YXIgdz1nIGluc3RhbmNlb2Ygbyx4PXR5cGVvZiBnPT0ib2JqZWN0IiYmKGcuaG9zdG5hbWV8fGcucGF0aHx8Zy5wYXRobmFtZSk7aWYoZy5ub2RlTmFtZSl7dmFyIEg9by5nZXREb21BdHRyaWJ1dGUoZyk7Zz1nW0hdfHwiIix4PSExfWlmKCF3JiZ4JiZnLnBhdGhuYW1lIT09dm9pZCAwJiYoZz1nLnRvU3RyaW5nKCkpLHR5cGVvZiBnPT0ic3RyaW5nInx8ZyBpbnN0YW5jZW9mIFN0cmluZyl0aGlzLl9wYXJ0cz1vLnBhcnNlKFN0cmluZyhnKSx0aGlzLl9wYXJ0cyk7ZWxzZSBpZih3fHx4KXt2YXIgaj13P2cuX3BhcnRzOmc7Zm9yKEQgaW4gailEIT09InF1ZXJ5IiYmaC5jYWxsKHRoaXMuX3BhcnRzLEQpJiYodGhpcy5fcGFydHNbRF09altEXSk7ai5xdWVyeSYmdGhpcy5xdWVyeShqLnF1ZXJ5LCExKX1lbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaW5wdXQiKTtyZXR1cm4gdGhpcy5idWlsZCghViksdGhpc30sYS5pcz1mdW5jdGlvbihnKXt2YXIgVj0hMSxEPSExLHc9ITEseD0hMSxIPSExLGo9ITEsWD0hMSx0dD0hdGhpcy5fcGFydHMudXJuO3N3aXRjaCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSYmKHR0PSExLEQ9by5pcDRfZXhwcmVzc2lvbi50ZXN0KHRoaXMuX3BhcnRzLmhvc3RuYW1lKSx3PW8uaXA2X2V4cHJlc3Npb24udGVzdCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksVj1EfHx3LHg9IVYsSD14JiZpJiZpLmhhcyh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksaj14JiZvLmlkbl9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpLFg9eCYmby5wdW55Y29kZV9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpKSxnLnRvTG93ZXJDYXNlKCkpe2Nhc2UicmVsYXRpdmUiOnJldHVybiB0dDtjYXNlImFic29sdXRlIjpyZXR1cm4hdHQ7Y2FzZSJkb21haW4iOmNhc2UibmFtZSI6cmV0dXJuIHg7Y2FzZSJzbGQiOnJldHVybiBIO2Nhc2UiaXAiOnJldHVybiBWO2Nhc2UiaXA0IjpjYXNlImlwdjQiOmNhc2UiaW5ldDQiOnJldHVybiBEO2Nhc2UiaXA2IjpjYXNlImlwdjYiOmNhc2UiaW5ldDYiOnJldHVybiB3O2Nhc2UiaWRuIjpyZXR1cm4gajtjYXNlInVybCI6cmV0dXJuIXRoaXMuX3BhcnRzLnVybjtjYXNlInVybiI6cmV0dXJuISF0aGlzLl9wYXJ0cy51cm47Y2FzZSJwdW55Y29kZSI6cmV0dXJuIFh9cmV0dXJuIG51bGx9O3ZhciBVPWEucHJvdG9jb2wsaz1hLnBvcnQseT1hLmhvc3RuYW1lO2EucHJvdG9jb2w9ZnVuY3Rpb24oZyxWKXtpZihnJiYoZz1nLnJlcGxhY2UoLzooXC9cLyk/JC8sIiIpLCFnLm1hdGNoKG8ucHJvdG9jb2xfZXhwcmVzc2lvbikpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb3RvY29sICInK2crYCIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuKy1dIG9yIGRvZXNuJ3Qgc3RhcnQgd2l0aCBbQS1aXWApO3JldHVybiBVLmNhbGwodGhpcyxnLFYpfSxhLnNjaGVtZT1hLnByb3RvY29sLGEucG9ydD1mdW5jdGlvbihnLFYpe3JldHVybiB0aGlzLl9wYXJ0cy51cm4/Zz09PXZvaWQgMD8iIjp0aGlzOihnIT09dm9pZCAwJiYoZz09PTAmJihnPW51bGwpLGcmJihnKz0iIixnLmNoYXJBdCgwKT09PSI6IiYmKGc9Zy5zdWJzdHJpbmcoMSkpLG8uZW5zdXJlVmFsaWRQb3J0KGcpKSksay5jYWxsKHRoaXMsZyxWKSl9LGEuaG9zdG5hbWU9ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnIT09dm9pZCAwKXt2YXIgRD17cHJldmVudEludmFsaWRIb3N0bmFtZTp0aGlzLl9wYXJ0cy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lfSx3PW8ucGFyc2VIb3N0KGcsRCk7aWYodyE9PSIvIil0aHJvdyBuZXcgVHlwZUVycm9yKCdIb3N0bmFtZSAiJytnKyciIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05Li1dJyk7Zz1ELmhvc3RuYW1lLHRoaXMuX3BhcnRzLnByZXZlbnRJbnZhbGlkSG9zdG5hbWUmJm8uZW5zdXJlVmFsaWRIb3N0bmFtZShnLHRoaXMuX3BhcnRzLnByb3RvY29sKX1yZXR1cm4geS5jYWxsKHRoaXMsZyxWKX0sYS5vcmlnaW49ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwKXt2YXIgRD10aGlzLnByb3RvY29sKCksdz10aGlzLmF1dGhvcml0eSgpO3JldHVybiB3PyhEP0QrIjovLyI6IiIpK3RoaXMuYXV0aG9yaXR5KCk6IiJ9ZWxzZXt2YXIgeD1vKGcpO3JldHVybiB0aGlzLnByb3RvY29sKHgucHJvdG9jb2woKSkuYXV0aG9yaXR5KHguYXV0aG9yaXR5KCkpLmJ1aWxkKCFWKSx0aGlzfX0sYS5ob3N0PWZ1bmN0aW9uKGcsVil7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBnPT09dm9pZCAwPyIiOnRoaXM7aWYoZz09PXZvaWQgMClyZXR1cm4gdGhpcy5fcGFydHMuaG9zdG5hbWU/by5idWlsZEhvc3QodGhpcy5fcGFydHMpOiIiO3ZhciBEPW8ucGFyc2VIb3N0KGcsdGhpcy5fcGFydHMpO2lmKEQhPT0iLyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrZysnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tXScpO3JldHVybiB0aGlzLmJ1aWxkKCFWKSx0aGlzfSxhLmF1dGhvcml0eT1mdW5jdGlvbihnLFYpe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gZz09PXZvaWQgMD8iIjp0aGlzO2lmKGc9PT12b2lkIDApcmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lP28uYnVpbGRBdXRob3JpdHkodGhpcy5fcGFydHMpOiIiO3ZhciBEPW8ucGFyc2VBdXRob3JpdHkoZyx0aGlzLl9wYXJ0cyk7aWYoRCE9PSIvIil0aHJvdyBuZXcgVHlwZUVycm9yKCdIb3N0bmFtZSAiJytnKyciIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05Li1dJyk7cmV0dXJuIHRoaXMuYnVpbGQoIVYpLHRoaXN9LGEudXNlcmluZm89ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwKXt2YXIgRD1vLmJ1aWxkVXNlcmluZm8odGhpcy5fcGFydHMpO3JldHVybiBEJiZELnN1YnN0cmluZygwLEQubGVuZ3RoLTEpfWVsc2UgcmV0dXJuIGdbZy5sZW5ndGgtMV0hPT0iQCImJihnKz0iQCIpLG8ucGFyc2VVc2VyaW5mbyhnLHRoaXMuX3BhcnRzKSx0aGlzLmJ1aWxkKCFWKSx0aGlzfSxhLnJlc291cmNlPWZ1bmN0aW9uKGcsVil7dmFyIEQ7cmV0dXJuIGc9PT12b2lkIDA/dGhpcy5wYXRoKCkrdGhpcy5zZWFyY2goKSt0aGlzLmhhc2goKTooRD1vLnBhcnNlKGcpLHRoaXMuX3BhcnRzLnBhdGg9RC5wYXRoLHRoaXMuX3BhcnRzLnF1ZXJ5PUQucXVlcnksdGhpcy5fcGFydHMuZnJhZ21lbnQ9RC5mcmFnbWVudCx0aGlzLmJ1aWxkKCFWKSx0aGlzKX0sYS5zdWJkb21haW49ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwKXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpcmV0dXJuIiI7dmFyIEQ9dGhpcy5fcGFydHMuaG9zdG5hbWUubGVuZ3RoLXRoaXMuZG9tYWluKCkubGVuZ3RoLTE7cmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZygwLEQpfHwiIn1lbHNle3ZhciB3PXRoaXMuX3BhcnRzLmhvc3RuYW1lLmxlbmd0aC10aGlzLmRvbWFpbigpLmxlbmd0aCx4PXRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZygwLHcpLEg9bmV3IFJlZ0V4cCgiXiIrQSh4KSk7aWYoZyYmZy5jaGFyQXQoZy5sZW5ndGgtMSkhPT0iLiImJihnKz0iLiIpLGcuaW5kZXhPZigiOiIpIT09LTEpdGhyb3cgbmV3IFR5cGVFcnJvcigiRG9tYWlucyBjYW5ub3QgY29udGFpbiBjb2xvbnMiKTtyZXR1cm4gZyYmby5lbnN1cmVWYWxpZEhvc3RuYW1lKGcsdGhpcy5fcGFydHMucHJvdG9jb2wpLHRoaXMuX3BhcnRzLmhvc3RuYW1lPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnJlcGxhY2UoSCxnKSx0aGlzLmJ1aWxkKCFWKSx0aGlzfX0sYS5kb21haW49ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZih0eXBlb2YgZz09ImJvb2xlYW4iJiYoVj1nLGc9dm9pZCAwKSxnPT09dm9pZCAwKXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpcmV0dXJuIiI7dmFyIEQ9dGhpcy5fcGFydHMuaG9zdG5hbWUubWF0Y2goL1wuL2cpO2lmKEQmJkQubGVuZ3RoPDIpcmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lO3ZhciB3PXRoaXMuX3BhcnRzLmhvc3RuYW1lLmxlbmd0aC10aGlzLnRsZChWKS5sZW5ndGgtMTtyZXR1cm4gdz10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sYXN0SW5kZXhPZigiLiIsdy0xKSsxLHRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZyh3KXx8IiJ9ZWxzZXtpZighZyl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYW5ub3Qgc2V0IGRvbWFpbiBlbXB0eSIpO2lmKGcuaW5kZXhPZigiOiIpIT09LTEpdGhyb3cgbmV3IFR5cGVFcnJvcigiRG9tYWlucyBjYW5ub3QgY29udGFpbiBjb2xvbnMiKTtpZihvLmVuc3VyZVZhbGlkSG9zdG5hbWUoZyx0aGlzLl9wYXJ0cy5wcm90b2NvbCksIXRoaXMuX3BhcnRzLmhvc3RuYW1lfHx0aGlzLmlzKCJJUCIpKXRoaXMuX3BhcnRzLmhvc3RuYW1lPWc7ZWxzZXt2YXIgeD1uZXcgUmVnRXhwKEEodGhpcy5kb21haW4oKSkrIiQiKTt0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS5yZXBsYWNlKHgsZyl9cmV0dXJuIHRoaXMuYnVpbGQoIVYpLHRoaXN9fSxhLnRsZD1mdW5jdGlvbihnLFYpe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gZz09PXZvaWQgMD8iIjp0aGlzO2lmKHR5cGVvZiBnPT0iYm9vbGVhbiImJihWPWcsZz12b2lkIDApLGc9PT12b2lkIDApe2lmKCF0aGlzLl9wYXJ0cy5ob3N0bmFtZXx8dGhpcy5pcygiSVAiKSlyZXR1cm4iIjt2YXIgRD10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sYXN0SW5kZXhPZigiLiIpLHc9dGhpcy5fcGFydHMuaG9zdG5hbWUuc3Vic3RyaW5nKEQrMSk7cmV0dXJuIFYhPT0hMCYmaSYmaS5saXN0W3cudG9Mb3dlckNhc2UoKV0mJmkuZ2V0KHRoaXMuX3BhcnRzLmhvc3RuYW1lKXx8d31lbHNle3ZhciB4O2lmKGcpaWYoZy5tYXRjaCgvW15hLXpBLVowLTktXS8pKWlmKGkmJmkuaXMoZykpeD1uZXcgUmVnRXhwKEEodGhpcy50bGQoKSkrIiQiKSx0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS5yZXBsYWNlKHgsZyk7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCdUTEQgIicrZysnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOV0nKTtlbHNle2lmKCF0aGlzLl9wYXJ0cy5ob3N0bmFtZXx8dGhpcy5pcygiSVAiKSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoImNhbm5vdCBzZXQgVExEIG9uIG5vbi1kb21haW4gaG9zdCIpO3g9bmV3IFJlZ0V4cChBKHRoaXMudGxkKCkpKyIkIiksdGhpcy5fcGFydHMuaG9zdG5hbWU9dGhpcy5fcGFydHMuaG9zdG5hbWUucmVwbGFjZSh4LGcpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiY2Fubm90IHNldCBUTEQgZW1wdHkiKTtyZXR1cm4gdGhpcy5idWlsZCghViksdGhpc319LGEuZGlyZWN0b3J5PWZ1bmN0aW9uKGcsVil7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBnPT09dm9pZCAwPyIiOnRoaXM7aWYoZz09PXZvaWQgMHx8Zz09PSEwKXtpZighdGhpcy5fcGFydHMucGF0aCYmIXRoaXMuX3BhcnRzLmhvc3RuYW1lKXJldHVybiIiO2lmKHRoaXMuX3BhcnRzLnBhdGg9PT0iLyIpcmV0dXJuIi8iO3ZhciBEPXRoaXMuX3BhcnRzLnBhdGgubGVuZ3RoLXRoaXMuZmlsZW5hbWUoKS5sZW5ndGgtMSx3PXRoaXMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKDAsRCl8fCh0aGlzLl9wYXJ0cy5ob3N0bmFtZT8iLyI6IiIpO3JldHVybiBnP28uZGVjb2RlUGF0aCh3KTp3fWVsc2V7dmFyIHg9dGhpcy5fcGFydHMucGF0aC5sZW5ndGgtdGhpcy5maWxlbmFtZSgpLmxlbmd0aCxIPXRoaXMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKDAseCksaj1uZXcgUmVnRXhwKCJeIitBKEgpKTtyZXR1cm4gdGhpcy5pcygicmVsYXRpdmUiKXx8KGd8fChnPSIvIiksZy5jaGFyQXQoMCkhPT0iLyImJihnPSIvIitnKSksZyYmZy5jaGFyQXQoZy5sZW5ndGgtMSkhPT0iLyImJihnKz0iLyIpLGc9by5yZWNvZGVQYXRoKGcpLHRoaXMuX3BhcnRzLnBhdGg9dGhpcy5fcGFydHMucGF0aC5yZXBsYWNlKGosZyksdGhpcy5idWlsZCghViksdGhpc319LGEuZmlsZW5hbWU9ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZih0eXBlb2YgZyE9InN0cmluZyIpe2lmKCF0aGlzLl9wYXJ0cy5wYXRofHx0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiIiO3ZhciBEPXRoaXMuX3BhcnRzLnBhdGgubGFzdEluZGV4T2YoIi8iKSx3PXRoaXMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKEQrMSk7cmV0dXJuIGc/by5kZWNvZGVQYXRoU2VnbWVudCh3KTp3fWVsc2V7dmFyIHg9ITE7Zy5jaGFyQXQoMCk9PT0iLyImJihnPWcuc3Vic3RyaW5nKDEpKSxnLm1hdGNoKC9cLj9cLy8pJiYoeD0hMCk7dmFyIEg9bmV3IFJlZ0V4cChBKHRoaXMuZmlsZW5hbWUoKSkrIiQiKTtyZXR1cm4gZz1vLnJlY29kZVBhdGgoZyksdGhpcy5fcGFydHMucGF0aD10aGlzLl9wYXJ0cy5wYXRoLnJlcGxhY2UoSCxnKSx4P3RoaXMubm9ybWFsaXplUGF0aChWKTp0aGlzLmJ1aWxkKCFWKSx0aGlzfX0sYS5zdWZmaXg9ZnVuY3Rpb24oZyxWKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwfHxnPT09ITApe2lmKCF0aGlzLl9wYXJ0cy5wYXRofHx0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiIiO3ZhciBEPXRoaXMuZmlsZW5hbWUoKSx3PUQubGFzdEluZGV4T2YoIi4iKSx4LEg7cmV0dXJuIHc9PT0tMT8iIjooeD1ELnN1YnN0cmluZyh3KzEpLEg9L15bYS16MC05JV0rJC9pLnRlc3QoeCk/eDoiIixnP28uZGVjb2RlUGF0aFNlZ21lbnQoSCk6SCl9ZWxzZXtnLmNoYXJBdCgwKT09PSIuIiYmKGc9Zy5zdWJzdHJpbmcoMSkpO3ZhciBqPXRoaXMuc3VmZml4KCksWDtpZihqKWc/WD1uZXcgUmVnRXhwKEEoaikrIiQiKTpYPW5ldyBSZWdFeHAoQSgiLiIraikrIiQiKTtlbHNle2lmKCFnKXJldHVybiB0aGlzO3RoaXMuX3BhcnRzLnBhdGgrPSIuIitvLnJlY29kZVBhdGgoZyl9cmV0dXJuIFgmJihnPW8ucmVjb2RlUGF0aChnKSx0aGlzLl9wYXJ0cy5wYXRoPXRoaXMuX3BhcnRzLnBhdGgucmVwbGFjZShYLGcpKSx0aGlzLmJ1aWxkKCFWKSx0aGlzfX0sYS5zZWdtZW50PWZ1bmN0aW9uKGcsVixEKXt2YXIgdz10aGlzLl9wYXJ0cy51cm4/IjoiOiIvIix4PXRoaXMucGF0aCgpLEg9eC5zdWJzdHJpbmcoMCwxKT09PSIvIixqPXguc3BsaXQodyk7aWYoZyE9PXZvaWQgMCYmdHlwZW9mIGchPSJudW1iZXIiJiYoRD1WLFY9ZyxnPXZvaWQgMCksZyE9PXZvaWQgMCYmdHlwZW9mIGchPSJudW1iZXIiKXRocm93IG5ldyBFcnJvcignQmFkIHNlZ21lbnQgIicrZysnIiwgbXVzdCBiZSAwLWJhc2VkIGludGVnZXInKTtpZihIJiZqLnNoaWZ0KCksZzwwJiYoZz1NYXRoLm1heChqLmxlbmd0aCtnLDApKSxWPT09dm9pZCAwKXJldHVybiBnPT09dm9pZCAwP2o6altnXTtpZihnPT09bnVsbHx8altnXT09PXZvaWQgMClpZihmKFYpKXtqPVtdO2Zvcih2YXIgWD0wLHR0PVYubGVuZ3RoO1g8dHQ7WCsrKSFWW1hdLmxlbmd0aCYmKCFqLmxlbmd0aHx8IWpbai5sZW5ndGgtMV0ubGVuZ3RoKXx8KGoubGVuZ3RoJiYhaltqLmxlbmd0aC0xXS5sZW5ndGgmJmoucG9wKCksai5wdXNoKEkoVltYXSkpKX1lbHNlKFZ8fHR5cGVvZiBWPT0ic3RyaW5nIikmJihWPUkoViksaltqLmxlbmd0aC0xXT09PSIiP2pbai5sZW5ndGgtMV09VjpqLnB1c2goVikpO2Vsc2UgVj9qW2ddPUkoVik6ai5zcGxpY2UoZywxKTtyZXR1cm4gSCYmai51bnNoaWZ0KCIiKSx0aGlzLnBhdGgoai5qb2luKHcpLEQpfSxhLnNlZ21lbnRDb2RlZD1mdW5jdGlvbihnLFYsRCl7dmFyIHcseCxIO2lmKHR5cGVvZiBnIT0ibnVtYmVyIiYmKEQ9VixWPWcsZz12b2lkIDApLFY9PT12b2lkIDApe2lmKHc9dGhpcy5zZWdtZW50KGcsVixEKSwhZih3KSl3PXchPT12b2lkIDA/by5kZWNvZGUodyk6dm9pZCAwO2Vsc2UgZm9yKHg9MCxIPXcubGVuZ3RoO3g8SDt4Kyspd1t4XT1vLmRlY29kZSh3W3hdKTtyZXR1cm4gd31pZighZihWKSlWPXR5cGVvZiBWPT0ic3RyaW5nInx8ViBpbnN0YW5jZW9mIFN0cmluZz9vLmVuY29kZShWKTpWO2Vsc2UgZm9yKHg9MCxIPVYubGVuZ3RoO3g8SDt4KyspVlt4XT1vLmVuY29kZShWW3hdKTtyZXR1cm4gdGhpcy5zZWdtZW50KGcsVixEKX07dmFyIGM9YS5xdWVyeTtyZXR1cm4gYS5xdWVyeT1mdW5jdGlvbihnLFYpe2lmKGc9PT0hMClyZXR1cm4gby5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO2lmKHR5cGVvZiBnPT0iZnVuY3Rpb24iKXt2YXIgRD1vLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdz1nLmNhbGwodGhpcyxEKTtyZXR1cm4gdGhpcy5fcGFydHMucXVlcnk9by5idWlsZFF1ZXJ5KHd8fEQsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHRoaXMuYnVpbGQoIVYpLHRoaXN9ZWxzZSByZXR1cm4gZyE9PXZvaWQgMCYmdHlwZW9mIGchPSJzdHJpbmciPyh0aGlzLl9wYXJ0cy5xdWVyeT1vLmJ1aWxkUXVlcnkoZyx0aGlzLl9wYXJ0cy5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdGhpcy5idWlsZCghViksdGhpcyk6Yy5jYWxsKHRoaXMsZyxWKX0sYS5zZXRRdWVyeT1mdW5jdGlvbihnLFYsRCl7dmFyIHc9by5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO2lmKHR5cGVvZiBnPT0ic3RyaW5nInx8ZyBpbnN0YW5jZW9mIFN0cmluZyl3W2ddPVYhPT12b2lkIDA/VjpudWxsO2Vsc2UgaWYodHlwZW9mIGc9PSJvYmplY3QiKWZvcih2YXIgeCBpbiBnKWguY2FsbChnLHgpJiYod1t4XT1nW3hdKTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5hZGRRdWVyeSgpIGFjY2VwdHMgYW4gb2JqZWN0LCBzdHJpbmcgYXMgdGhlIG5hbWUgcGFyYW1ldGVyIik7cmV0dXJuIHRoaXMuX3BhcnRzLnF1ZXJ5PW8uYnVpbGRRdWVyeSh3LHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycyx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx0eXBlb2YgZyE9InN0cmluZyImJihEPVYpLHRoaXMuYnVpbGQoIUQpLHRoaXN9LGEuYWRkUXVlcnk9ZnVuY3Rpb24oZyxWLEQpe3ZhciB3PW8ucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKTtyZXR1cm4gby5hZGRRdWVyeSh3LGcsVj09PXZvaWQgMD9udWxsOlYpLHRoaXMuX3BhcnRzLnF1ZXJ5PW8uYnVpbGRRdWVyeSh3LHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycyx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx0eXBlb2YgZyE9InN0cmluZyImJihEPVYpLHRoaXMuYnVpbGQoIUQpLHRoaXN9LGEucmVtb3ZlUXVlcnk9ZnVuY3Rpb24oZyxWLEQpe3ZhciB3PW8ucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKTtyZXR1cm4gby5yZW1vdmVRdWVyeSh3LGcsViksdGhpcy5fcGFydHMucXVlcnk9by5idWlsZFF1ZXJ5KHcsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHR5cGVvZiBnIT0ic3RyaW5nIiYmKEQ9ViksdGhpcy5idWlsZCghRCksdGhpc30sYS5oYXNRdWVyeT1mdW5jdGlvbihnLFYsRCl7dmFyIHc9by5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO3JldHVybiBvLmhhc1F1ZXJ5KHcsZyxWLEQpfSxhLnNldFNlYXJjaD1hLnNldFF1ZXJ5LGEuYWRkU2VhcmNoPWEuYWRkUXVlcnksYS5yZW1vdmVTZWFyY2g9YS5yZW1vdmVRdWVyeSxhLmhhc1NlYXJjaD1hLmhhc1F1ZXJ5LGEubm9ybWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnRzLnVybj90aGlzLm5vcm1hbGl6ZVByb3RvY29sKCExKS5ub3JtYWxpemVQYXRoKCExKS5ub3JtYWxpemVRdWVyeSghMSkubm9ybWFsaXplRnJhZ21lbnQoITEpLmJ1aWxkKCk6dGhpcy5ub3JtYWxpemVQcm90b2NvbCghMSkubm9ybWFsaXplSG9zdG5hbWUoITEpLm5vcm1hbGl6ZVBvcnQoITEpLm5vcm1hbGl6ZVBhdGgoITEpLm5vcm1hbGl6ZVF1ZXJ5KCExKS5ub3JtYWxpemVGcmFnbWVudCghMSkuYnVpbGQoKX0sYS5ub3JtYWxpemVQcm90b2NvbD1mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIHRoaXMuX3BhcnRzLnByb3RvY29sPT0ic3RyaW5nIiYmKHRoaXMuX3BhcnRzLnByb3RvY29sPXRoaXMuX3BhcnRzLnByb3RvY29sLnRvTG93ZXJDYXNlKCksdGhpcy5idWlsZCghZykpLHRoaXN9LGEubm9ybWFsaXplSG9zdG5hbWU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lJiYodGhpcy5pcygiSUROIikmJnQ/dGhpcy5fcGFydHMuaG9zdG5hbWU9dC50b0FTQ0lJKHRoaXMuX3BhcnRzLmhvc3RuYW1lKTp0aGlzLmlzKCJJUHY2IikmJmUmJih0aGlzLl9wYXJ0cy5ob3N0bmFtZT1lLmJlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpKSx0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpLHRoaXMuYnVpbGQoIWcpKSx0aGlzfSxhLm5vcm1hbGl6ZVBvcnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiB0aGlzLl9wYXJ0cy5wcm90b2NvbD09InN0cmluZyImJnRoaXMuX3BhcnRzLnBvcnQ9PT1vLmRlZmF1bHRQb3J0c1t0aGlzLl9wYXJ0cy5wcm90b2NvbF0mJih0aGlzLl9wYXJ0cy5wb3J0PW51bGwsdGhpcy5idWlsZCghZykpLHRoaXN9LGEubm9ybWFsaXplUGF0aD1mdW5jdGlvbihnKXt2YXIgVj10aGlzLl9wYXJ0cy5wYXRoO2lmKCFWKXJldHVybiB0aGlzO2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gdGhpcy5fcGFydHMucGF0aD1vLnJlY29kZVVyblBhdGgodGhpcy5fcGFydHMucGF0aCksdGhpcy5idWlsZCghZyksdGhpcztpZih0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiB0aGlzO1Y9by5yZWNvZGVQYXRoKFYpO3ZhciBELHc9IiIseCxIO2ZvcihWLmNoYXJBdCgwKSE9PSIvIiYmKEQ9ITAsVj0iLyIrViksKFYuc2xpY2UoLTMpPT09Ii8uLiJ8fFYuc2xpY2UoLTIpPT09Ii8uIikmJihWKz0iLyIpLFY9Vi5yZXBsYWNlKC8oXC8oXC5cLykrKXwoXC9cLiQpL2csIi8iKS5yZXBsYWNlKC9cL3syLH0vZywiLyIpLEQmJih3PVYuc3Vic3RyaW5nKDEpLm1hdGNoKC9eKFwuXC5cLykrLyl8fCIiLHcmJih3PXdbMF0pKTt4PVYuc2VhcmNoKC9cL1wuXC4oXC98JCkvKSx4IT09LTE7KXtpZih4PT09MCl7Vj1WLnN1YnN0cmluZygzKTtjb250aW51ZX1IPVYuc3Vic3RyaW5nKDAseCkubGFzdEluZGV4T2YoIi8iKSxIPT09LTEmJihIPXgpLFY9Vi5zdWJzdHJpbmcoMCxIKStWLnN1YnN0cmluZyh4KzMpfXJldHVybiBEJiZ0aGlzLmlzKCJyZWxhdGl2ZSIpJiYoVj13K1Yuc3Vic3RyaW5nKDEpKSx0aGlzLl9wYXJ0cy5wYXRoPVYsdGhpcy5idWlsZCghZyksdGhpc30sYS5ub3JtYWxpemVQYXRobmFtZT1hLm5vcm1hbGl6ZVBhdGgsYS5ub3JtYWxpemVRdWVyeT1mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIHRoaXMuX3BhcnRzLnF1ZXJ5PT0ic3RyaW5nIiYmKHRoaXMuX3BhcnRzLnF1ZXJ5Lmxlbmd0aD90aGlzLnF1ZXJ5KG8ucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSk6dGhpcy5fcGFydHMucXVlcnk9bnVsbCx0aGlzLmJ1aWxkKCFnKSksdGhpc30sYS5ub3JtYWxpemVGcmFnbWVudD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fcGFydHMuZnJhZ21lbnR8fCh0aGlzLl9wYXJ0cy5mcmFnbWVudD1udWxsLHRoaXMuYnVpbGQoIWcpKSx0aGlzfSxhLm5vcm1hbGl6ZVNlYXJjaD1hLm5vcm1hbGl6ZVF1ZXJ5LGEubm9ybWFsaXplSGFzaD1hLm5vcm1hbGl6ZUZyYWdtZW50LGEuaXNvODg1OT1mdW5jdGlvbigpe3ZhciBnPW8uZW5jb2RlLFY9by5kZWNvZGU7by5lbmNvZGU9ZXNjYXBlLG8uZGVjb2RlPWRlY29kZVVSSUNvbXBvbmVudDt0cnl7dGhpcy5ub3JtYWxpemUoKX1maW5hbGx5e28uZW5jb2RlPWcsby5kZWNvZGU9Vn1yZXR1cm4gdGhpc30sYS51bmljb2RlPWZ1bmN0aW9uKCl7dmFyIGc9by5lbmNvZGUsVj1vLmRlY29kZTtvLmVuY29kZT1OLG8uZGVjb2RlPXVuZXNjYXBlO3RyeXt0aGlzLm5vcm1hbGl6ZSgpfWZpbmFsbHl7by5lbmNvZGU9ZyxvLmRlY29kZT1WfXJldHVybiB0aGlzfSxhLnJlYWRhYmxlPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jbG9uZSgpO2cudXNlcm5hbWUoIiIpLnBhc3N3b3JkKCIiKS5ub3JtYWxpemUoKTt2YXIgVj0iIjtpZihnLl9wYXJ0cy5wcm90b2NvbCYmKFYrPWcuX3BhcnRzLnByb3RvY29sKyI6Ly8iKSxnLl9wYXJ0cy5ob3N0bmFtZSYmKGcuaXMoInB1bnljb2RlIikmJnQ/KFYrPXQudG9Vbmljb2RlKGcuX3BhcnRzLmhvc3RuYW1lKSxnLl9wYXJ0cy5wb3J0JiYoVis9IjoiK2cuX3BhcnRzLnBvcnQpKTpWKz1nLmhvc3QoKSksZy5fcGFydHMuaG9zdG5hbWUmJmcuX3BhcnRzLnBhdGgmJmcuX3BhcnRzLnBhdGguY2hhckF0KDApIT09Ii8iJiYoVis9Ii8iKSxWKz1nLnBhdGgoITApLGcuX3BhcnRzLnF1ZXJ5KXtmb3IodmFyIEQ9IiIsdz0wLHg9Zy5fcGFydHMucXVlcnkuc3BsaXQoIiYiKSxIPXgubGVuZ3RoO3c8SDt3Kyspe3ZhciBqPSh4W3ddfHwiIikuc3BsaXQoIj0iKTtEKz0iJiIrby5kZWNvZGVRdWVyeShqWzBdLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLnJlcGxhY2UoLyYvZywiJTI2IiksalsxXSE9PXZvaWQgMCYmKEQrPSI9IitvLmRlY29kZVF1ZXJ5KGpbMV0sdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSkucmVwbGFjZSgvJi9nLCIlMjYiKSl9Vis9Ij8iK0Quc3Vic3RyaW5nKDEpfXJldHVybiBWKz1vLmRlY29kZVF1ZXJ5KGcuaGFzaCgpLCEwKSxWfSxhLmFic29sdXRlVG89ZnVuY3Rpb24oZyl7dmFyIFY9dGhpcy5jbG9uZSgpLEQ9WyJwcm90b2NvbCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJob3N0bmFtZSIsInBvcnQiXSx3LHgsSDtpZih0aGlzLl9wYXJ0cy51cm4pdGhyb3cgbmV3IEVycm9yKCJVUk5zIGRvIG5vdCBoYXZlIGFueSBnZW5lcmFsbHkgZGVmaW5lZCBoaWVyYXJjaGljYWwgY29tcG9uZW50cyIpO2lmKGcgaW5zdGFuY2VvZiBvfHwoZz1uZXcgbyhnKSksVi5fcGFydHMucHJvdG9jb2x8fChWLl9wYXJ0cy5wcm90b2NvbD1nLl9wYXJ0cy5wcm90b2NvbCx0aGlzLl9wYXJ0cy5ob3N0bmFtZSkpcmV0dXJuIFY7Zm9yKHg9MDtIPURbeF07eCsrKVYuX3BhcnRzW0hdPWcuX3BhcnRzW0hdO3JldHVybiBWLl9wYXJ0cy5wYXRoPyhWLl9wYXJ0cy5wYXRoLnN1YnN0cmluZygtMik9PT0iLi4iJiYoVi5fcGFydHMucGF0aCs9Ii8iKSxWLnBhdGgoKS5jaGFyQXQoMCkhPT0iLyImJih3PWcuZGlyZWN0b3J5KCksdz13fHwoZy5wYXRoKCkuaW5kZXhPZigiLyIpPT09MD8iLyI6IiIpLFYuX3BhcnRzLnBhdGg9KHc/dysiLyI6IiIpK1YuX3BhcnRzLnBhdGgsVi5ub3JtYWxpemVQYXRoKCkpKTooVi5fcGFydHMucGF0aD1nLl9wYXJ0cy5wYXRoLFYuX3BhcnRzLnF1ZXJ5fHwoVi5fcGFydHMucXVlcnk9Zy5fcGFydHMucXVlcnkpKSxWLmJ1aWxkKCksVn0sYS5yZWxhdGl2ZVRvPWZ1bmN0aW9uKGcpe3ZhciBWPXRoaXMuY2xvbmUoKS5ub3JtYWxpemUoKSxELHcseCxILGo7aWYoVi5fcGFydHMudXJuKXRocm93IG5ldyBFcnJvcigiVVJOcyBkbyBub3QgaGF2ZSBhbnkgZ2VuZXJhbGx5IGRlZmluZWQgaGllcmFyY2hpY2FsIGNvbXBvbmVudHMiKTtpZihnPW5ldyBvKGcpLm5vcm1hbGl6ZSgpLEQ9Vi5fcGFydHMsdz1nLl9wYXJ0cyxIPVYucGF0aCgpLGo9Zy5wYXRoKCksSC5jaGFyQXQoMCkhPT0iLyIpdGhyb3cgbmV3IEVycm9yKCJVUkkgaXMgYWxyZWFkeSByZWxhdGl2ZSIpO2lmKGouY2hhckF0KDApIT09Ii8iKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNhbGN1bGF0ZSBhIFVSSSByZWxhdGl2ZSB0byBhbm90aGVyIHJlbGF0aXZlIFVSSSIpO2lmKEQucHJvdG9jb2w9PT13LnByb3RvY29sJiYoRC5wcm90b2NvbD1udWxsKSxELnVzZXJuYW1lIT09dy51c2VybmFtZXx8RC5wYXNzd29yZCE9PXcucGFzc3dvcmR8fEQucHJvdG9jb2whPT1udWxsfHxELnVzZXJuYW1lIT09bnVsbHx8RC5wYXNzd29yZCE9PW51bGwpcmV0dXJuIFYuYnVpbGQoKTtpZihELmhvc3RuYW1lPT09dy5ob3N0bmFtZSYmRC5wb3J0PT09dy5wb3J0KUQuaG9zdG5hbWU9bnVsbCxELnBvcnQ9bnVsbDtlbHNlIHJldHVybiBWLmJ1aWxkKCk7aWYoSD09PWopcmV0dXJuIEQucGF0aD0iIixWLmJ1aWxkKCk7aWYoeD1vLmNvbW1vblBhdGgoSCxqKSwheClyZXR1cm4gVi5idWlsZCgpO3ZhciBYPXcucGF0aC5zdWJzdHJpbmcoeC5sZW5ndGgpLnJlcGxhY2UoL1teXC9dKiQvLCIiKS5yZXBsYWNlKC8uKj9cLy9nLCIuLi8iKTtyZXR1cm4gRC5wYXRoPVgrRC5wYXRoLnN1YnN0cmluZyh4Lmxlbmd0aCl8fCIuLyIsVi5idWlsZCgpfSxhLmVxdWFscz1mdW5jdGlvbihnKXt2YXIgVj10aGlzLmNsb25lKCksRD1uZXcgbyhnKSx3PXt9LHg9e30sSD17fSxqLFgsdHQ7aWYoVi5ub3JtYWxpemUoKSxELm5vcm1hbGl6ZSgpLFYudG9TdHJpbmcoKT09PUQudG9TdHJpbmcoKSlyZXR1cm4hMDtpZihqPVYucXVlcnkoKSxYPUQucXVlcnkoKSxWLnF1ZXJ5KCIiKSxELnF1ZXJ5KCIiKSxWLnRvU3RyaW5nKCkhPT1ELnRvU3RyaW5nKCl8fGoubGVuZ3RoIT09WC5sZW5ndGgpcmV0dXJuITE7dz1vLnBhcnNlUXVlcnkoaix0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx4PW8ucGFyc2VRdWVyeShYLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO2Zvcih0dCBpbiB3KWlmKGguY2FsbCh3LHR0KSl7aWYoZih3W3R0XSkpe2lmKCFSKHdbdHRdLHhbdHRdKSlyZXR1cm4hMX1lbHNlIGlmKHdbdHRdIT09eFt0dF0pcmV0dXJuITE7SFt0dF09ITB9Zm9yKHR0IGluIHgpaWYoaC5jYWxsKHgsdHQpJiYhSFt0dF0pcmV0dXJuITE7cmV0dXJuITB9LGEucHJldmVudEludmFsaWRIb3N0bmFtZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fcGFydHMucHJldmVudEludmFsaWRIb3N0bmFtZT0hIWcsdGhpc30sYS5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycz0hIWcsdGhpc30sYS5lc2NhcGVRdWVyeVNwYWNlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlPSEhZyx0aGlzfSxvfSl9KTtmdW5jdGlvbiBUcSh0KXtyZXR1cm4odC5sZW5ndGg9PT0wfHx0W3QubGVuZ3RoLTFdIT09Ii8iKSYmKHQ9YCR7dH0vYCksdH12YXIgQ1csZ1c9TygoKT0+e0NXPVRxfSk7ZnVuY3Rpb24gVFcodCxlKXtpZih0PT09bnVsbHx8dHlwZW9mIHQhPSJvYmplY3QiKXJldHVybiB0O2U9WihlLCExKTtsZXQgaT1uZXcgdC5jb25zdHJ1Y3Rvcjtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtsZXQgcz10W25dO2UmJihzPVRXKHMsZSkpLGlbbl09c31yZXR1cm4gaX12YXIgcXMsYUU9TygoKT0+e2J0KCk7cXM9VFd9KTtmdW5jdGlvbiBOVyh0LGUsaSl7aT1aKGksITEpO2xldCBuPXt9LHM9bSh0KSxvPW0oZSkscixhLGg7aWYocylmb3IociBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihhPXRbcl0sbyYmaSYmdHlwZW9mIGE9PSJvYmplY3QiJiZlLmhhc093blByb3BlcnR5KHIpPyhoPWVbcl0sdHlwZW9mIGg9PSJvYmplY3QiP25bcl09TlcoYSxoLGkpOm5bcl09YSk6bltyXT1hKTtpZihvKWZvcihyIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmIW4uaGFzT3duUHJvcGVydHkocikmJihoPWVbcl0sbltyXT1oKTtyZXR1cm4gbn12YXIgZXMsS0E9TygoKT0+e2J0KCk7bXQoKTtlcz1OV30pO2Z1bmN0aW9uIE5xKCl7bGV0IHQsZSxpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scyl7dD1uLGU9c30pO3JldHVybntyZXNvbHZlOnQscmVqZWN0OmUscHJvbWlzZTppfX12YXIgRWwsbTA9TygoKT0+e0VsPU5xfSk7ZnVuY3Rpb24gZjAodCxlKXtsZXQgaTtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PCJ1IiYmKGk9ZG9jdW1lbnQpLGYwLl9pbXBsZW1lbnRhdGlvbih0LGUsaSl9dmFyIGJXLEFFLEUwPU8oKCk9PntiVz1jbyhvYygpLDEpO2J0KCk7bXQoKTtWdCgpO2YwLl9pbXBsZW1lbnRhdGlvbj1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJlbGF0aXZlIHVyaSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl7aWYodHlwZW9mIGk+InUiKXJldHVybiB0O2U9WihpLmJhc2VVUkksaS5sb2NhdGlvbi5ocmVmKX1sZXQgbj1uZXcgYlcuZGVmYXVsdCh0KTtyZXR1cm4gbi5zY2hlbWUoKSE9PSIiP24udG9TdHJpbmcoKTpuLmFic29sdXRlVG8oZSkudG9TdHJpbmcoKX07QUU9ZjB9KTtmdW5jdGlvbiBicSh0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ1cmkgaXMgcmVxdWlyZWQuIik7bGV0IGk9IiIsbj10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIG4hPT0tMSYmKGk9dC5zdWJzdHJpbmcoMCxuKzEpKSxlJiYodD1uZXcgRlcuZGVmYXVsdCh0KSx0LnF1ZXJ5KCkubGVuZ3RoIT09MCYmKGkrPWA/JHt0LnF1ZXJ5KCl9YCksdC5mcmFnbWVudCgpLmxlbmd0aCE9PTAmJihpKz1gIyR7dC5mcmFnbWVudCgpfWApKSxpfXZhciBGVyxZVyxTVz1PKCgpPT57Rlc9Y28ob2MoKSwxKTttdCgpO1Z0KCk7WVc9YnF9KTtmdW5jdGlvbiBGcSh0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidXJpIGlzIHJlcXVpcmVkLiIpO2xldCBlPW5ldyBPVy5kZWZhdWx0KHQpO2Uubm9ybWFsaXplKCk7bGV0IGk9ZS5wYXRoKCksbj1pLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIG4hPT0tMSYmKGk9aS5zdWJzdHIobisxKSksbj1pLmxhc3RJbmRleE9mKCIuIiksbj09PS0xP2k9IiI6aT1pLnN1YnN0cihuKzEpLGl9dmFyIE9XLFZXLEdXPU8oKCk9PntPVz1jbyhvYygpLDEpO210KCk7VnQoKTtWVz1GcX0pO2Z1bmN0aW9uIFlxKHQsZSxpKXttKGUpfHwoZT10LndpZHRoKSxtKGkpfHwoaT10LmhlaWdodCk7bGV0IG49QldbZV07bShuKXx8KG49e30sQldbZV09bik7bGV0IHM9bltpXTtpZighbShzKSl7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7by53aWR0aD1lLG8uaGVpZ2h0PWkscz1vLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkscy5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249ImNvcHkiLG5baV09c31yZXR1cm4gcy5kcmF3SW1hZ2UodCwwLDAsZSxpKSxzLmdldEltYWdlRGF0YSgwLDAsZSxpKS5kYXRhfXZhciBCVyxfMCxXVz1PKCgpPT57bXQoKTtCVz17fTtfMD1ZcX0pO2Z1bmN0aW9uIE9xKHQpe3JldHVybiBwLnR5cGVPZi5zdHJpbmcoInVyaSIsdCksU3EudGVzdCh0KX12YXIgU3EsUlosUjA9TygoKT0+e2FlKCk7U3E9L15ibG9iOi9pO1JaPU9xfSk7ZnVuY3Rpb24gVnEodCl7bShhQSl8fChhQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLGFBLmhyZWY9d2luZG93LmxvY2F0aW9uLmhyZWY7bGV0IGU9YUEuaG9zdCxpPWFBLnByb3RvY29sO3JldHVybiBhQS5ocmVmPXQsYUEuaHJlZj1hQS5ocmVmLGkhPT1hQS5wcm90b2NvbHx8ZSE9PWFBLmhvc3R9dmFyIGFBLFpaLFowPU8oKCk9PnttdCgpO1paPVZxfSk7ZnVuY3Rpb24gQnEodCl7cmV0dXJuIHAudHlwZU9mLnN0cmluZygidXJpIix0KSxHcS50ZXN0KHQpfXZhciBHcSxJWixJMD1PKCgpPT57YWUoKTtHcT0vXmRhdGE6L2k7SVo9QnF9KTtmdW5jdGlvbiBXcSh0KXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtyZXR1cm4gZS5hc3luYz0hMCxlLnNyYz10LG5ldyBQcm9taXNlKChpLG4pPT57d2luZG93LmNyb3NzT3JpZ2luSXNvbGF0ZWQmJmUuc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsImFub255bW91cyIpO2xldCBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07ZS5vbmxvYWQ9ZnVuY3Rpb24oKXtlLm9ubG9hZD12b2lkIDAscy5yZW1vdmVDaGlsZChlKSxpKCl9LGUub25lcnJvcj1mdW5jdGlvbihvKXtuKG8pfSxzLmFwcGVuZENoaWxkKGUpfSl9dmFyIERXLE1XPU8oKCk9PntEVz1XcX0pO2Z1bmN0aW9uIERxKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJvYmogaXMgcmVxdWlyZWQuIik7bGV0IGU9IiI7Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IG49dFtpXSxzPWAke2VuY29kZVVSSUNvbXBvbmVudChpKX09YDtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgbz0wLHI9bi5sZW5ndGg7bzxyOysrbyllKz1gJHtzK2VuY29kZVVSSUNvbXBvbmVudChuW29dKX0mYDtlbHNlIGUrPWAke3MrZW5jb2RlVVJJQ29tcG9uZW50KG4pfSZgfXJldHVybiBlPWUuc2xpY2UoMCwtMSksZX12YXIgVVcsUVc9TygoKT0+e210KCk7VnQoKTtVVz1EcX0pO2Z1bmN0aW9uIE1xKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJxdWVyeVN0cmluZyBpcyByZXF1aXJlZC4iKTtsZXQgZT17fTtpZih0PT09IiIpcmV0dXJuIGU7bGV0IGk9dC5yZXBsYWNlKC9cKy9nLCIlMjAiKS5zcGxpdCgvWyY7XS8pO2ZvcihsZXQgbj0wLHM9aS5sZW5ndGg7bjxzOysrbil7bGV0IG89aVtuXS5zcGxpdCgiPSIpLHI9ZGVjb2RlVVJJQ29tcG9uZW50KG9bMF0pLGE9b1sxXTttKGEpP2E9ZGVjb2RlVVJJQ29tcG9uZW50KGEpOmE9IiI7bGV0IGg9ZVtyXTt0eXBlb2YgaD09InN0cmluZyI/ZVtyXT1baCxhXTpBcnJheS5pc0FycmF5KGgpP2gucHVzaChhKTplW3JdPWF9cmV0dXJuIGV9dmFyIGtXLExXPU8oKCk9PnttdCgpO1Z0KCk7a1c9TXF9KTt2YXIgVXEsVW4scFo9TygoKT0+e1VxPXtVTklTU1VFRDowLElTU1VFRDoxLEFDVElWRToyLFJFQ0VJVkVEOjMsQ0FOQ0VMTEVEOjQsRkFJTEVEOjV9LFVuPU9iamVjdC5mcmVlemUoVXEpfSk7dmFyIFFxLHlXLHdXPU8oKCk9PntRcT17VEVSUkFJTjowLElNQUdFUlk6MSxUSUxFUzNEOjIsT1RIRVI6M30seVc9T2JqZWN0LmZyZWV6ZShRcSl9KTtmdW5jdGlvbiB1Wih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9Wih0LnRocm90dGxlQnlTZXJ2ZXIsITEpLGk9Wih0LnRocm90dGxlLCExKTt0aGlzLnVybD10LnVybCx0aGlzLnJlcXVlc3RGdW5jdGlvbj10LnJlcXVlc3RGdW5jdGlvbix0aGlzLmNhbmNlbEZ1bmN0aW9uPXQuY2FuY2VsRnVuY3Rpb24sdGhpcy5wcmlvcml0eUZ1bmN0aW9uPXQucHJpb3JpdHlGdW5jdGlvbix0aGlzLnByaW9yaXR5PVoodC5wcmlvcml0eSwwKSx0aGlzLnRocm90dGxlPWksdGhpcy50aHJvdHRsZUJ5U2VydmVyPWUsdGhpcy50eXBlPVoodC50eXBlLHlXLk9USEVSKSx0aGlzLnNlcnZlcktleT10LnNlcnZlcktleSx0aGlzLnN0YXRlPVVuLlVOSVNTVUVELHRoaXMuZGVmZXJyZWQ9dm9pZCAwLHRoaXMuY2FuY2VsbGVkPSExfXZhciB4VyxQVz1PKCgpPT57YnQoKTttdCgpO3BaKCk7d1coKTt1Wi5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxsZWQ9ITB9O3VaLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC51cmw9dGhpcy51cmwsdC5yZXF1ZXN0RnVuY3Rpb249dGhpcy5yZXF1ZXN0RnVuY3Rpb24sdC5jYW5jZWxGdW5jdGlvbj10aGlzLmNhbmNlbEZ1bmN0aW9uLHQucHJpb3JpdHlGdW5jdGlvbj10aGlzLnByaW9yaXR5RnVuY3Rpb24sdC5wcmlvcml0eT10aGlzLnByaW9yaXR5LHQudGhyb3R0bGU9dGhpcy50aHJvdHRsZSx0LnRocm90dGxlQnlTZXJ2ZXI9dGhpcy50aHJvdHRsZUJ5U2VydmVyLHQudHlwZT10aGlzLnR5cGUsdC5zZXJ2ZXJLZXk9dGhpcy5zZXJ2ZXJLZXksdC5zdGF0ZT1Vbi5VTklTU1VFRCx0LmRlZmVycmVkPXZvaWQgMCx0LmNhbmNlbGxlZD0hMSx0KTpuZXcgdVoodGhpcyl9O3hXPXVafSk7ZnVuY3Rpb24ga3EodCl7bGV0IGU9e307aWYoIXQpcmV0dXJuIGU7bGV0IGk9dC5zcGxpdChgXHIKYCk7Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDsrK24pe2xldCBzPWlbbl0sbz1zLmluZGV4T2YoIjogIik7aWYobz4wKXtsZXQgcj1zLnN1YnN0cmluZygwLG8pLGE9cy5zdWJzdHJpbmcobysyKTtlW3JdPWF9fXJldHVybiBlfXZhciBKVyxqVz1PKCgpPT57Slc9a3F9KTtmdW5jdGlvbiBIVyh0LGUsaSl7dGhpcy5zdGF0dXNDb2RlPXQsdGhpcy5yZXNwb25zZT1lLHRoaXMucmVzcG9uc2VIZWFkZXJzPWksdHlwZW9mIHRoaXMucmVzcG9uc2VIZWFkZXJzPT0ic3RyaW5nIiYmKHRoaXMucmVzcG9uc2VIZWFkZXJzPUpXKHRoaXMucmVzcG9uc2VIZWFkZXJzKSl9dmFyIGhFLHZXPU8oKCk9PnttdCgpO2pXKCk7SFcucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHQ9IlJlcXVlc3QgaGFzIGZhaWxlZC4iO3JldHVybiBtKHRoaXMuc3RhdHVzQ29kZSkmJih0Kz1gIFN0YXR1cyBDb2RlOiAke3RoaXMuc3RhdHVzQ29kZX1gKSx0fTtoRT1IV30pO2Z1bmN0aW9uIF9sKHQpe3AudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbXBhcmF0b3IiLHQuY29tcGFyYXRvciksdGhpcy5fY29tcGFyYXRvcj10LmNvbXBhcmF0b3IsdGhpcy5fYXJyYXk9W10sdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWF4aW11bUxlbmd0aD12b2lkIDB9ZnVuY3Rpb24gcDAodCxlLGkpe2xldCBuPXRbZV07dFtlXT10W2ldLHRbaV09bn12YXIgelcsS1c9TygoKT0+e2FlKCk7YnQoKTttdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKF9sLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGVuZ3RofX0saW50ZXJuYWxBcnJheTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fX0sbWF4aW11bUxlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heGltdW1MZW5ndGh9LHNldDpmdW5jdGlvbih0KXtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygibWF4aW11bUxlbmd0aCIsdCwwKTtsZXQgZT10aGlzLl9sZW5ndGg7aWYodDxlKXtsZXQgaT10aGlzLl9hcnJheTtmb3IobGV0IG49dDtuPGU7KytuKWlbbl09dm9pZCAwO3RoaXMuX2xlbmd0aD10LGkubGVuZ3RoPXR9dGhpcy5fbWF4aW11bUxlbmd0aD10fX0sY29tcGFyYXRvcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBhcmF0b3J9fX0pO19sLnByb3RvdHlwZS5yZXNlcnZlPWZ1bmN0aW9uKHQpe3Q9Wih0LHRoaXMuX2xlbmd0aCksdGhpcy5fYXJyYXkubGVuZ3RoPXR9O19sLnByb3RvdHlwZS5oZWFwaWZ5PWZ1bmN0aW9uKHQpe3Q9Wih0LDApO2xldCBlPXRoaXMuX2xlbmd0aCxpPXRoaXMuX2NvbXBhcmF0b3Isbj10aGlzLl9hcnJheSxzPS0xLG89ITA7Zm9yKDtvOyl7bGV0IHI9MioodCsxKSxhPXItMTthPGUmJmkoblthXSxuW3RdKTwwP3M9YTpzPXQscjxlJiZpKG5bcl0sbltzXSk8MCYmKHM9cikscyE9PXQ/KHAwKG4scyx0KSx0PXMpOm89ITF9fTtfbC5wcm90b3R5cGUucmVzb3J0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fbGVuZ3RoO2ZvcihsZXQgZT1NYXRoLmNlaWwodC8yKTtlPj0wOy0tZSl0aGlzLmhlYXBpZnkoZSl9O19sLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJlbGVtZW50Iix0KTtsZXQgZT10aGlzLl9hcnJheSxpPXRoaXMuX2NvbXBhcmF0b3Isbj10aGlzLl9tYXhpbXVtTGVuZ3RoLHM9dGhpcy5fbGVuZ3RoKys7Zm9yKHM8ZS5sZW5ndGg/ZVtzXT10OmUucHVzaCh0KTtzIT09MDspe2xldCByPU1hdGguZmxvb3IoKHMtMSkvMik7aWYoaShlW3NdLGVbcl0pPDApcDAoZSxzLHIpLHM9cjtlbHNlIGJyZWFrfWxldCBvO3JldHVybiBtKG4pJiZ0aGlzLl9sZW5ndGg+biYmKG89ZVtuXSx0aGlzLl9sZW5ndGg9biksb307X2wucHJvdG90eXBlLnBvcD1mdW5jdGlvbih0KXtpZih0PVoodCwwKSx0aGlzLl9sZW5ndGg9PT0wKXJldHVybjtwLnR5cGVPZi5udW1iZXIubGVzc1RoYW4oImluZGV4Iix0LHRoaXMuX2xlbmd0aCk7bGV0IGU9dGhpcy5fYXJyYXksaT1lW3RdO3JldHVybiBwMChlLHQsLS10aGlzLl9sZW5ndGgpLHRoaXMuaGVhcGlmeSh0KSxlW3RoaXMuX2xlbmd0aF09dm9pZCAwLGl9O3pXPV9sfSk7ZnVuY3Rpb24gTHEodCxlKXtyZXR1cm4gdC5wcmlvcml0eS1lLnByaW9yaXR5fWZ1bmN0aW9uIEduKCl7fWZ1bmN0aW9uIFhXKHQpe20odC5wcmlvcml0eUZ1bmN0aW9uKSYmKHQucHJpb3JpdHk9dC5wcmlvcml0eUZ1bmN0aW9uKCkpfWZ1bmN0aW9uIHFXKHQpe3JldHVybiB0LnN0YXRlPT09VW4uVU5JU1NVRUQmJih0LnN0YXRlPVVuLklTU1VFRCx0LmRlZmVycmVkPUVsKCkpLHQuZGVmZXJyZWQucHJvbWlzZX1mdW5jdGlvbiB3cSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodC5zdGF0ZT09PVVuLkNBTkNFTExFRClyZXR1cm47bGV0IGk9dC5kZWZlcnJlZDstLVBpLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsLS1YQVt0LnNlcnZlcktleV0sZ1oucmFpc2VFdmVudCgpLHQuc3RhdGU9VW4uUkVDRUlWRUQsdC5kZWZlcnJlZD12b2lkIDAsaS5yZXNvbHZlKGUpfX1mdW5jdGlvbiB4cSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5zdGF0ZSE9PVVuLkNBTkNFTExFRCYmKCsrUGkubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cywtLVBpLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsLS1YQVt0LnNlcnZlcktleV0sZ1oucmFpc2VFdmVudChlKSx0LnN0YXRlPVVuLkZBSUxFRCx0LmRlZmVycmVkLnJlamVjdChlKSl9fWZ1bmN0aW9uICRXKHQpe2xldCBlPXFXKHQpO3JldHVybiB0LnN0YXRlPVVuLkFDVElWRSxBQS5wdXNoKHQpLCsrUGkubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cywrK1BpLm51bWJlck9mQWN0aXZlUmVxdWVzdHNFdmVyLCsrWEFbdC5zZXJ2ZXJLZXldLHQucmVxdWVzdEZ1bmN0aW9uKCkudGhlbih3cSh0KSkuY2F0Y2goeHEodCkpLGV9ZnVuY3Rpb24gUmwodCl7bGV0IGU9dC5zdGF0ZT09PVVuLkFDVElWRTtpZih0LnN0YXRlPVVuLkNBTkNFTExFRCwrK1BpLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHMsbSh0LmRlZmVycmVkKSl7bGV0IGk9dC5kZWZlcnJlZDt0LmRlZmVycmVkPXZvaWQgMCxpLnJlamVjdCgpfWUmJigtLVBpLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsLS1YQVt0LnNlcnZlcktleV0sKytQaS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzKSxtKHQuY2FuY2VsRnVuY3Rpb24pJiZ0LmNhbmNlbEZ1bmN0aW9uKCl9ZnVuY3Rpb24gUHEoKXtHbi5kZWJ1Z1Nob3dTdGF0aXN0aWNzJiYoUGkubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz09PTAmJlBpLmxhc3ROdW1iZXJPZkFjdGl2ZVJlcXVlc3RzPjAmJihQaS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzPjAmJihjb25zb2xlLmxvZyhgTnVtYmVyIG9mIGF0dGVtcHRlZCByZXF1ZXN0czogJHtQaS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzfWApLFBpLm51bWJlck9mQXR0ZW1wdGVkUmVxdWVzdHM9MCksUGkubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0cz4wJiYoY29uc29sZS5sb2coYE51bWJlciBvZiBjYW5jZWxsZWQgcmVxdWVzdHM6ICR7UGkubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0c31gKSxQaS5udW1iZXJPZkNhbmNlbGxlZFJlcXVlc3RzPTApLFBpLm51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM+MCYmKGNvbnNvbGUubG9nKGBOdW1iZXIgb2YgY2FuY2VsbGVkIGFjdGl2ZSByZXF1ZXN0czogJHtQaS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzfWApLFBpLm51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM9MCksUGkubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cz4wJiYoY29uc29sZS5sb2coYE51bWJlciBvZiBmYWlsZWQgcmVxdWVzdHM6ICR7UGkubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0c31gKSxQaS5udW1iZXJPZkZhaWxlZFJlcXVlc3RzPTApKSxQaS5sYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz1QaS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzKX12YXIgQ1osUGksdW0sbW8sQUEsWEEseXEsZ1osVFosdDI9TygoKT0+e0NaPWNvKG9jKCksMSk7YWUoKTtidCgpO20wKCk7bXQoKTt4aSgpO0tXKCk7UjAoKTtJMCgpO3BaKCk7UGk9e251bWJlck9mQXR0ZW1wdGVkUmVxdWVzdHM6MCxudW1iZXJPZkFjdGl2ZVJlcXVlc3RzOjAsbnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0czowLG51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM6MCxudW1iZXJPZkZhaWxlZFJlcXVlc3RzOjAsbnVtYmVyT2ZBY3RpdmVSZXF1ZXN0c0V2ZXI6MCxsYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0czowfSx1bT0yMCxtbz1uZXcgelcoe2NvbXBhcmF0b3I6THF9KTttby5tYXhpbXVtTGVuZ3RoPXVtO21vLnJlc2VydmUodW0pO0FBPVtdLFhBPXt9LHlxPXR5cGVvZiBkb2N1bWVudDwidSI/bmV3IENaLmRlZmF1bHQoZG9jdW1lbnQubG9jYXRpb24uaHJlZik6bmV3IENaLmRlZmF1bHQsZ1o9bmV3IFdlO0duLm1heGltdW1SZXF1ZXN0cz01MDtHbi5tYXhpbXVtUmVxdWVzdHNQZXJTZXJ2ZXI9MTg7R24ucmVxdWVzdHNCeVNlcnZlcj17fTtHbi50aHJvdHRsZVJlcXVlc3RzPSEwO0duLmRlYnVnU2hvd1N0YXRpc3RpY3M9ITE7R24ucmVxdWVzdENvbXBsZXRlZEV2ZW50PWdaO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEduLHtzdGF0aXN0aWNzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUGl9fSxwcmlvcml0eUhlYXBMZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB1bX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHQ8dW0pZm9yKDttby5sZW5ndGg+dDspe2xldCBlPW1vLnBvcCgpO1JsKGUpfXVtPXQsbW8ubWF4aW11bUxlbmd0aD10LG1vLnJlc2VydmUodCl9fX0pO0duLnNlcnZlckhhc09wZW5TbG90cz1mdW5jdGlvbih0LGUpe2U9WihlLDEpO2xldCBpPVooR24ucmVxdWVzdHNCeVNlcnZlclt0XSxHbi5tYXhpbXVtUmVxdWVzdHNQZXJTZXJ2ZXIpO3JldHVybiBYQVt0XStlPD1pfTtHbi5oZWFwSGFzT3BlblNsb3RzPWZ1bmN0aW9uKHQpe3JldHVybiBtby5sZW5ndGgrdDw9dW19O0duLnVwZGF0ZT1mdW5jdGlvbigpe2xldCB0LGUsaT0wLG49QUEubGVuZ3RoO2Zvcih0PTA7dDxuOysrdCl7aWYoZT1BQVt0XSxlLmNhbmNlbGxlZCYmUmwoZSksZS5zdGF0ZSE9PVVuLkFDVElWRSl7KytpO2NvbnRpbnVlfWk+MCYmKEFBW3QtaV09ZSl9QUEubGVuZ3RoLT1pO2xldCBzPW1vLmludGVybmFsQXJyYXksbz1tby5sZW5ndGg7Zm9yKHQ9MDt0PG87Kyt0KVhXKHNbdF0pO21vLnJlc29ydCgpO2xldCByPU1hdGgubWF4KEduLm1heGltdW1SZXF1ZXN0cy1BQS5sZW5ndGgsMCksYT0wO2Zvcig7YTxyJiZtby5sZW5ndGg+MDspe2lmKGU9bW8ucG9wKCksZS5jYW5jZWxsZWQpe1JsKGUpO2NvbnRpbnVlfWlmKGUudGhyb3R0bGVCeVNlcnZlciYmIUduLnNlcnZlckhhc09wZW5TbG90cyhlLnNlcnZlcktleSkpe1JsKGUpO2NvbnRpbnVlfSRXKGUpLCsrYX1QcSgpfTtHbi5nZXRTZXJ2ZXJLZXk9ZnVuY3Rpb24odCl7cC50eXBlT2Yuc3RyaW5nKCJ1cmwiLHQpO2xldCBlPW5ldyBDWi5kZWZhdWx0KHQpO2Uuc2NoZW1lKCk9PT0iIiYmKGU9ZS5hYnNvbHV0ZVRvKHlxKSxlLm5vcm1hbGl6ZSgpKTtsZXQgaT1lLmF1dGhvcml0eSgpOy86Ly50ZXN0KGkpfHwoaT1gJHtpfToke2Uuc2NoZW1lKCk9PT0iaHR0cHMiPyI0NDMiOiI4MCJ9YCk7bGV0IG49WEFbaV07cmV0dXJuIG0obil8fChYQVtpXT0wKSxpfTtHbi5yZXF1ZXN0PWZ1bmN0aW9uKHQpe2lmKHAudHlwZU9mLm9iamVjdCgicmVxdWVzdCIsdCkscC50eXBlT2Yuc3RyaW5nKCJyZXF1ZXN0LnVybCIsdC51cmwpLHAudHlwZU9mLmZ1bmMoInJlcXVlc3QucmVxdWVzdEZ1bmN0aW9uIix0LnJlcXVlc3RGdW5jdGlvbiksSVoodC51cmwpfHxSWih0LnVybCkpcmV0dXJuIGdaLnJhaXNlRXZlbnQoKSx0LnN0YXRlPVVuLlJFQ0VJVkVELHQucmVxdWVzdEZ1bmN0aW9uKCk7aWYoKytQaS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzLG0odC5zZXJ2ZXJLZXkpfHwodC5zZXJ2ZXJLZXk9R24uZ2V0U2VydmVyS2V5KHQudXJsKSksR24udGhyb3R0bGVSZXF1ZXN0cyYmdC50aHJvdHRsZUJ5U2VydmVyJiYhR24uc2VydmVySGFzT3BlblNsb3RzKHQuc2VydmVyS2V5KSlyZXR1cm47aWYoIUduLnRocm90dGxlUmVxdWVzdHN8fCF0LnRocm90dGxlKXJldHVybiAkVyh0KTtpZihBQS5sZW5ndGg+PUduLm1heGltdW1SZXF1ZXN0cylyZXR1cm47WFcodCk7bGV0IGU9bW8uaW5zZXJ0KHQpO2lmKG0oZSkpe2lmKGU9PT10KXJldHVybjtSbChlKX1yZXR1cm4gcVcodCl9O0duLmNsZWFyRm9yU3BlY3M9ZnVuY3Rpb24oKXtmb3IoO21vLmxlbmd0aD4wOyl7bGV0IGU9bW8ucG9wKCk7UmwoZSl9bGV0IHQ9QUEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8dDsrK2UpUmwoQUFbZV0pO0FBLmxlbmd0aD0wLFhBPXt9LFBpLm51bWJlck9mQXR0ZW1wdGVkUmVxdWVzdHM9MCxQaS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzPTAsUGkubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0cz0wLFBpLm51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM9MCxQaS5udW1iZXJPZkZhaWxlZFJlcXVlc3RzPTAsUGkubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0c0V2ZXI9MCxQaS5sYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz0wfTtHbi5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzQnlTZXJ2ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIFhBW3RdfTtHbi5yZXF1ZXN0SGVhcD1tbztUWj1Hbn0pO2Z1bmN0aW9uIGNFKHQpe3RoaXMubmFtZT0iUnVudGltZUVycm9yIix0aGlzLm1lc3NhZ2U9dDtsZXQgZTt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGkpe2U9aS5zdGFja310aGlzLnN0YWNrPWV9dmFyIGtlLFBzPU8oKCk9PnttdCgpO20oT2JqZWN0LmNyZWF0ZSkmJihjRS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGNFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jRSk7Y0UucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHQ9YCR7dGhpcy5uYW1lfTogJHt0aGlzLm1lc3NhZ2V9YDtyZXR1cm4gbSh0aGlzLnN0YWNrKSYmKHQrPWAKJHt0aGlzLnN0YWNrLnRvU3RyaW5nKCl9YCksdH07a2U9Y0V9KTtmdW5jdGlvbiBKcSh0KXtsZXQgZT1uZXcgZTIuZGVmYXVsdCh0KTtlLm5vcm1hbGl6ZSgpO2xldCBpPWUuYXV0aG9yaXR5KCk7aWYoaS5sZW5ndGghPT0wKXtpZihlLmF1dGhvcml0eShpKSxpLmluZGV4T2YoIkAiKSE9PS0xJiYoaT1pLnNwbGl0KCJAIilbMV0pLGkuaW5kZXhPZigiOiIpPT09LTEpe2xldCBuPWUuc2NoZW1lKCk7aWYobi5sZW5ndGg9PT0wJiYobj13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsbj1uLnN1YnN0cmluZygwLG4ubGVuZ3RoLTEpKSxuPT09Imh0dHAiKWkrPSI6ODAiO2Vsc2UgaWYobj09PSJodHRwcyIpaSs9Ijo0NDMiO2Vsc2UgcmV0dXJufXJldHVybiBpfX12YXIgZTIsbEUsQ20sdTAsaTI9TygoKT0+e2UyPWNvKG9jKCksMSk7bXQoKTtWdCgpO2xFPXt9LENtPXt9O2xFLmFkZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBZKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBpPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShDbVtpXSl8fChDbVtpXT0hMCl9O2xFLnJlbW92ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBZKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBpPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShDbVtpXSkmJmRlbGV0ZSBDbVtpXX07bEUuY29udGFpbnM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInVybCBpcyByZXF1aXJlZC4iKTtsZXQgZT1KcSh0KTtyZXR1cm4hIShtKGUpJiZtKENtW2VdKSl9O2xFLmNsZWFyPWZ1bmN0aW9uKCl7Q209e319O3UwPWxFfSk7ZnVuY3Rpb24gbGUodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9e3VybDp0fSkscC50eXBlT2Yuc3RyaW5nKCJvcHRpb25zLnVybCIsdC51cmwpLHRoaXMuX3VybD12b2lkIDAsdGhpcy5fdGVtcGxhdGVWYWx1ZXM9aEEodC50ZW1wbGF0ZVZhbHVlcyx7fSksdGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWhBKHQucXVlcnlQYXJhbWV0ZXJzLHt9KSx0aGlzLmhlYWRlcnM9aEEodC5oZWFkZXJzLHt9KSx0aGlzLnJlcXVlc3Q9Wih0LnJlcXVlc3QsbmV3IHhXKSx0aGlzLnByb3h5PXQucHJveHksdGhpcy5yZXRyeUNhbGxiYWNrPXQucmV0cnlDYWxsYmFjayx0aGlzLnJldHJ5QXR0ZW1wdHM9Wih0LnJldHJ5QXR0ZW1wdHMsMCksdGhpcy5fcmV0cnlDb3VudD0wLFoodC5wYXJzZVVybCwhMCk/dGhpcy5wYXJzZVVybCh0LnVybCwhMCwhMCk6dGhpcy5fdXJsPXQudXJsLHRoaXMuX2NyZWRpdHM9dC5jcmVkaXRzfWZ1bmN0aW9uIGhBKHQsZSl7cmV0dXJuIG0odCk/cXModCk6ZX1mdW5jdGlvbiBqcSh0KXtyZXR1cm4gdC5sZW5ndGg9PT0wP3t9OnQuaW5kZXhPZigiPSIpPT09LTE/e1t0XTp2b2lkIDB9OmtXKHQpfWZ1bmN0aW9uIGJaKHQsZSxpKXtpZighaSlyZXR1cm4gZXModCxlKTtsZXQgbj1xcyh0LCEwKTtmb3IobGV0IHMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHMpKXtsZXQgbz1uW3NdLHI9ZVtzXTttKG8pPyhBcnJheS5pc0FycmF5KG8pfHwobz1uW3NdPVtvXSksbltzXT1vLmNvbmNhdChyKSk6bltzXT1BcnJheS5pc0FycmF5KHIpP3Iuc2xpY2UoKTpyfXJldHVybiBufWZ1bmN0aW9uIEhxKHQpe2xldCBlPU9iamVjdC5rZXlzKHQpO3JldHVybiBlLmxlbmd0aD09PTA/IiI6ZS5sZW5ndGg9PT0xJiYhbSh0W2VbMF1dKT9gPyR7ZVswXX1gOmA/JHtVVyh0KX1gfWZ1bmN0aW9uIEMwKHQpe2xldCBlPXQucmVzb3VyY2UsaT10LmZsaXBZLG49dC5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24scz10LnByZWZlckltYWdlQml0bWFwLG89ZS5yZXF1ZXN0O28udXJsPWUudXJsLG8ucmVxdWVzdEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bGV0IGE9ITE7IWUuaXNEYXRhVXJpJiYhZS5pc0Jsb2JVcmkmJihhPWUuaXNDcm9zc09yaWdpblVybCk7bGV0IGg9RWwoKTtyZXR1cm4gbGUuX0ltcGxlbWVudGF0aW9ucy5jcmVhdGVJbWFnZShvLGEsaCxpLG4scyksaC5wcm9taXNlfTtsZXQgcj1UWi5yZXF1ZXN0KG8pO2lmKG0ocikpcmV0dXJuIHIuY2F0Y2goZnVuY3Rpb24oYSl7cmV0dXJuIG8uc3RhdGUhPT1Vbi5GQUlMRUQ/UHJvbWlzZS5yZWplY3QoYSk6ZS5yZXRyeU9uRXJyb3IoYSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gaD8oby5zdGF0ZT1Vbi5VTklTU1VFRCxvLmRlZmVycmVkPXZvaWQgMCxDMCh7cmVzb3VyY2U6ZSxmbGlwWTppLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjpuLHByZWZlckltYWdlQml0bWFwOnN9KSk6UHJvbWlzZS5yZWplY3QoYSl9KX0pfWZ1bmN0aW9uIHIyKHQsZSxpKXtsZXQgbj17fTtuW2VdPWksdC5zZXRRdWVyeVBhcmFtZXRlcnMobik7bGV0IHM9dC5yZXF1ZXN0LG89dC51cmw7cy51cmw9byxzLnJlcXVlc3RGdW5jdGlvbj1mdW5jdGlvbigpe2xldCBhPUVsKCk7cmV0dXJuIHdpbmRvd1tpXT1mdW5jdGlvbihoKXthLnJlc29sdmUoaCk7dHJ5e2RlbGV0ZSB3aW5kb3dbaV19Y2F0Y2h7d2luZG93W2ldPXZvaWQgMH19LGxlLl9JbXBsZW1lbnRhdGlvbnMubG9hZEFuZEV4ZWN1dGVTY3JpcHQobyxpLGEpLGEucHJvbWlzZX07bGV0IHI9VFoucmVxdWVzdChzKTtpZihtKHIpKXJldHVybiByLmNhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBzLnN0YXRlIT09VW4uRkFJTEVEP1Byb21pc2UucmVqZWN0KGEpOnQucmV0cnlPbkVycm9yKGEpLnRoZW4oZnVuY3Rpb24oaCl7cmV0dXJuIGg/KHMuc3RhdGU9VW4uVU5JU1NVRUQscy5kZWZlcnJlZD12b2lkIDAscjIodCxlLGkpKTpQcm9taXNlLnJlamVjdChhKX0pfSl9ZnVuY3Rpb24gZzAodCl7aWYodC5zdGF0ZT09PVVuLklTU1VFRHx8dC5zdGF0ZT09PVVuLkFDVElWRSl0aHJvdyBuZXcga2UoIlRoZSBSZXNvdXJjZSBpcyBhbHJlYWR5IGJlaW5nIGZldGNoZWQuIik7dC5zdGF0ZT1Vbi5VTklTU1VFRCx0LmRlZmVycmVkPXZvaWQgMH1mdW5jdGlvbiBOWih0LGUpe2xldCBpPWRlY29kZVVSSUNvbXBvbmVudChlKTtyZXR1cm4gdD9hdG9iKGkpOml9ZnVuY3Rpb24gbjIodCxlKXtsZXQgaT1OWih0LGUpLG49bmV3IEFycmF5QnVmZmVyKGkubGVuZ3RoKSxzPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXNbb109aS5jaGFyQ29kZUF0KG8pO3JldHVybiBufWZ1bmN0aW9uIHpxKHQsZSl7ZT1aKGUsIiIpO2xldCBpPXRbMV0sbj0hIXRbMl0scz10WzNdLG8scjtzd2l0Y2goZSl7Y2FzZSIiOmNhc2UidGV4dCI6cmV0dXJuIE5aKG4scyk7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIG4yKG4scyk7Y2FzZSJibG9iIjpyZXR1cm4gbz1uMihuLHMpLG5ldyBCbG9iKFtvXSx7dHlwZTppfSk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIHI9bmV3IERPTVBhcnNlcixyLnBhcnNlRnJvbVN0cmluZyhOWihuLHMpLGkpO2Nhc2UianNvbiI6cmV0dXJuIEpTT04ucGFyc2UoTloobixzKSk7ZGVmYXVsdDp0aHJvdyBuZXcgWShgVW5oYW5kbGVkIHJlc3BvbnNlVHlwZTogJHtlfWApfX1mdW5jdGlvbiBLcSh0LGUsaSxuLHMsbyxyKXtmZXRjaCh0LHttZXRob2Q6aSxoZWFkZXJzOnN9KS50aGVuKGFzeW5jIGE9PntpZighYS5vayl7bGV0IGg9e307YS5oZWFkZXJzLmZvckVhY2goKEEsZCk9PntoW2RdPUF9KSxvLnJlamVjdChuZXcgaEUoYS5zdGF0dXMsYSxoKSk7cmV0dXJufXN3aXRjaChlKXtjYXNlInRleHQiOm8ucmVzb2x2ZShhLnRleHQoKSk7YnJlYWs7Y2FzZSJqc29uIjpvLnJlc29sdmUoYS5qc29uKCkpO2JyZWFrO2RlZmF1bHQ6by5yZXNvbHZlKG5ldyBVaW50OEFycmF5KGF3YWl0IGEuYXJyYXlCdWZmZXIoKSkuYnVmZmVyKTticmVha319KS5jYXRjaCgoKT0+e28ucmVqZWN0KG5ldyBoRSl9KX12YXIgczIsbzIsZ20sdnEsWHEsdG4sSWE9TygoKT0+e3MyPWNvKG9jKCksMSk7Z1coKTthZSgpO2FFKCk7S0EoKTtidCgpO20wKCk7bXQoKTtWdCgpO0UwKCk7U1coKTtHVygpO1dXKCk7UjAoKTtaMCgpO0kwKCk7TVcoKTtfZSgpO1FXKCk7TFcoKTtQVygpO3ZXKCk7dDIoKTtwWigpO1BzKCk7aTIoKTtvMj1mdW5jdGlvbigpe3RyeXtsZXQgdD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbigiR0VUIiwiIyIsITApLHQucmVzcG9uc2VUeXBlPSJibG9iIix0LnJlc3BvbnNlVHlwZT09PSJibG9iIn1jYXRjaHtyZXR1cm4hMX19KCk7bGUuY3JlYXRlSWZOZWVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBsZT90LmdldERlcml2ZWRSZXNvdXJjZSh7cmVxdWVzdDp0LnJlcXVlc3R9KTp0eXBlb2YgdCE9InN0cmluZyI/dDpuZXcgbGUoe3VybDp0fSl9O2xlLnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG0oZ20pP2dtOnR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCE9ImZ1bmN0aW9uIj8oZ209UHJvbWlzZS5yZXNvbHZlKCExKSxnbSk6KGdtPWxlLmZldGNoQmxvYih7dXJsOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQUlBQUFDUWQxUGVBQUFBQkdkQlRVRUFBRTRnM3JFaURnQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFERWxFUVZRSTEyTmc2R0FBQUFFVUFJbmdFM1ppQUFBQUFFbEZUa1N1UW1DQyJ9KS50aGVuKGZ1bmN0aW9uKGUpe2xldCBpPXtpbWFnZU9yaWVudGF0aW9uOiJmbGlwWSIscHJlbXVsdGlwbHlBbHBoYToibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifTtyZXR1cm4gUHJvbWlzZS5hbGwoW2NyZWF0ZUltYWdlQml0bWFwKGUsaSksY3JlYXRlSW1hZ2VCaXRtYXAoZSldKX0pLnRoZW4oZnVuY3Rpb24oZSl7bGV0IGk9XzAoZVswXSksbj1fMChlWzFdKTtyZXR1cm4gaVsxXSE9PW5bMV19KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSksZ20pfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsZSx7aXNCbG9iU3VwcG9ydGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbzJ9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxlLnByb3RvdHlwZSx7cXVlcnlQYXJhbWV0ZXJzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbWV0ZXJzfX0sdGVtcGxhdGVWYWx1ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZW1wbGF0ZVZhbHVlc319LHVybDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VXJsQ29tcG9uZW50KCEwLCEwKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucGFyc2VVcmwodCwhMSwhMSl9fSxleHRlbnNpb246e2dldDpmdW5jdGlvbigpe3JldHVybiBWVyh0aGlzLl91cmwpfX0saXNEYXRhVXJpOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSVoodGhpcy5fdXJsKX19LGlzQmxvYlVyaTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJaKHRoaXMuX3VybCl9fSxpc0Nyb3NzT3JpZ2luVXJsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWloodGhpcy5fdXJsKX19LGhhc0hlYWRlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmhlYWRlcnMpLmxlbmd0aD4wfX0sY3JlZGl0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWRpdHN9fX0pO2xlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFVybENvbXBvbmVudCghMCwhMCl9O2xlLnByb3RvdHlwZS5wYXJzZVVybD1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz1uZXcgczIuZGVmYXVsdCh0KSxvPWpxKHMucXVlcnkoKSk7dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWU/Yloobyx0aGlzLnF1ZXJ5UGFyYW1ldGVycyxpKTpvLHMuc2VhcmNoKCIiKSxzLmZyYWdtZW50KCIiKSxtKG4pJiZzLnNjaGVtZSgpPT09IiImJihzPXMuYWJzb2x1dGVUbyhBRShuKSkpLHRoaXMuX3VybD1zLnRvU3RyaW5nKCl9O2xlLnByb3RvdHlwZS5nZXRVcmxDb21wb25lbnQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmlzRGF0YVVyaSlyZXR1cm4gdGhpcy5fdXJsO2xldCBpPXRoaXMuX3VybDt0JiYoaT1gJHtpfSR7SHEodGhpcy5xdWVyeVBhcmFtZXRlcnMpfWApLGk9aS5yZXBsYWNlKC8lN0IvZywieyIpLnJlcGxhY2UoLyU3RC9nLCJ9Iik7bGV0IG49dGhpcy5fdGVtcGxhdGVWYWx1ZXM7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wJiYoaT1pLnJlcGxhY2UoL3soLio/KX0vZyxmdW5jdGlvbihzLG8pe2xldCByPW5bb107cmV0dXJuIG0ocik/ZW5jb2RlVVJJQ29tcG9uZW50KHIpOnN9KSksZSYmbSh0aGlzLnByb3h5KSYmKGk9dGhpcy5wcm94eS5nZXRVUkwoaSkpLGl9O2xlLnByb3RvdHlwZS5zZXRRdWVyeVBhcmFtZXRlcnM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3F1ZXJ5UGFyYW1ldGVycz1iWih0aGlzLl9xdWVyeVBhcmFtZXRlcnMsdCwhMSk6dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWJaKHQsdGhpcy5fcXVlcnlQYXJhbWV0ZXJzLCExKX07bGUucHJvdG90eXBlLmFwcGVuZFF1ZXJ5UGFyYW1ldGVycz1mdW5jdGlvbih0KXt0aGlzLl9xdWVyeVBhcmFtZXRlcnM9YloodCx0aGlzLl9xdWVyeVBhcmFtZXRlcnMsITApfTtsZS5wcm90b3R5cGUuc2V0VGVtcGxhdGVWYWx1ZXM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3RlbXBsYXRlVmFsdWVzPWVzKHRoaXMuX3RlbXBsYXRlVmFsdWVzLHQpOnRoaXMuX3RlbXBsYXRlVmFsdWVzPWVzKHQsdGhpcy5fdGVtcGxhdGVWYWx1ZXMpfTtsZS5wcm90b3R5cGUuZ2V0RGVyaXZlZFJlc291cmNlPWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuY2xvbmUoKTtpZihlLl9yZXRyeUNvdW50PTAsbSh0LnVybCkpe2xldCBpPVoodC5wcmVzZXJ2ZVF1ZXJ5UGFyYW1ldGVycywhMSk7ZS5wYXJzZVVybCh0LnVybCwhMCxpLHRoaXMuX3VybCl9cmV0dXJuIG0odC5xdWVyeVBhcmFtZXRlcnMpJiYoZS5fcXVlcnlQYXJhbWV0ZXJzPWVzKHQucXVlcnlQYXJhbWV0ZXJzLGUucXVlcnlQYXJhbWV0ZXJzKSksbSh0LnRlbXBsYXRlVmFsdWVzKSYmKGUuX3RlbXBsYXRlVmFsdWVzPWVzKHQudGVtcGxhdGVWYWx1ZXMsZS50ZW1wbGF0ZVZhbHVlcykpLG0odC5oZWFkZXJzKSYmKGUuaGVhZGVycz1lcyh0LmhlYWRlcnMsZS5oZWFkZXJzKSksbSh0LnByb3h5KSYmKGUucHJveHk9dC5wcm94eSksbSh0LnJlcXVlc3QpJiYoZS5yZXF1ZXN0PXQucmVxdWVzdCksbSh0LnJldHJ5Q2FsbGJhY2spJiYoZS5yZXRyeUNhbGxiYWNrPXQucmV0cnlDYWxsYmFjayksbSh0LnJldHJ5QXR0ZW1wdHMpJiYoZS5yZXRyeUF0dGVtcHRzPXQucmV0cnlBdHRlbXB0cyksZX07bGUucHJvdG90eXBlLnJldHJ5T25FcnJvcj1mdW5jdGlvbih0KXtsZXQgZT10aGlzLnJldHJ5Q2FsbGJhY2s7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiJ8fHRoaXMuX3JldHJ5Q291bnQ+PXRoaXMucmV0cnlBdHRlbXB0cylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCExKTtsZXQgaT10aGlzO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSh0aGlzLHQpKS50aGVuKGZ1bmN0aW9uKG4pe3JldHVybisraS5fcmV0cnlDb3VudCxufSl9O2xlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5fdXJsPXRoaXMuX3VybCx0Ll9xdWVyeVBhcmFtZXRlcnM9cXModGhpcy5fcXVlcnlQYXJhbWV0ZXJzKSx0Ll90ZW1wbGF0ZVZhbHVlcz1xcyh0aGlzLl90ZW1wbGF0ZVZhbHVlcyksdC5oZWFkZXJzPXFzKHRoaXMuaGVhZGVycyksdC5wcm94eT10aGlzLnByb3h5LHQucmV0cnlDYWxsYmFjaz10aGlzLnJldHJ5Q2FsbGJhY2ssdC5yZXRyeUF0dGVtcHRzPXRoaXMucmV0cnlBdHRlbXB0cyx0Ll9yZXRyeUNvdW50PTAsdC5yZXF1ZXN0PXRoaXMucmVxdWVzdC5jbG9uZSgpLHQpOm5ldyBsZSh7dXJsOnRoaXMuX3VybCxxdWVyeVBhcmFtZXRlcnM6dGhpcy5xdWVyeVBhcmFtZXRlcnMsdGVtcGxhdGVWYWx1ZXM6dGhpcy50ZW1wbGF0ZVZhbHVlcyxoZWFkZXJzOnRoaXMuaGVhZGVycyxwcm94eTp0aGlzLnByb3h5LHJldHJ5Q2FsbGJhY2s6dGhpcy5yZXRyeUNhbGxiYWNrLHJldHJ5QXR0ZW1wdHM6dGhpcy5yZXRyeUF0dGVtcHRzLHJlcXVlc3Q6dGhpcy5yZXF1ZXN0LmNsb25lKCkscGFyc2VVcmw6ITEsY3JlZGl0czptKHRoaXMuY3JlZGl0cyk/dGhpcy5jcmVkaXRzLnNsaWNlKCk6dm9pZCAwfSl9O2xlLnByb3RvdHlwZS5nZXRCYXNlVXJpPWZ1bmN0aW9uKHQpe3JldHVybiBZVyh0aGlzLmdldFVybENvbXBvbmVudCh0KSx0KX07bGUucHJvdG90eXBlLmFwcGVuZEZvcndhcmRTbGFzaD1mdW5jdGlvbigpe3RoaXMuX3VybD1DVyh0aGlzLl91cmwpfTtsZS5wcm90b3R5cGUuZmV0Y2hBcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIn0pfTtsZS5mZXRjaEFycmF5QnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2hBcnJheUJ1ZmZlcigpfTtsZS5wcm90b3R5cGUuZmV0Y2hCbG9iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmV0Y2goe3Jlc3BvbnNlVHlwZToiYmxvYiJ9KX07bGUuZmV0Y2hCbG9iPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2hCbG9iKCl9O2xlLnByb3RvdHlwZS5mZXRjaEltYWdlPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQucHJlZmVySW1hZ2VCaXRtYXAsITEpLGk9Wih0LnByZWZlckJsb2IsITEpLG49Wih0LmZsaXBZLCExKSxzPVoodC5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24sITEpO2lmKGcwKHRoaXMucmVxdWVzdCksIW8yfHx0aGlzLmlzRGF0YVVyaXx8dGhpcy5pc0Jsb2JVcml8fCF0aGlzLmhhc0hlYWRlcnMmJiFpKXJldHVybiBDMCh7cmVzb3VyY2U6dGhpcyxmbGlwWTpuLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjpzLHByZWZlckltYWdlQml0bWFwOmV9KTtsZXQgbz10aGlzLmZldGNoQmxvYigpO2lmKCFtKG8pKXJldHVybjtsZXQgcixhLGgsQTtyZXR1cm4gbGUuc3VwcG9ydHNJbWFnZUJpdG1hcE9wdGlvbnMoKS50aGVuKGZ1bmN0aW9uKGQpe3JldHVybiByPWQsYT1yJiZlLG99KS50aGVuKGZ1bmN0aW9uKGQpe2lmKCFtKGQpKXJldHVybjtpZihBPWQsYSlyZXR1cm4gbGUuY3JlYXRlSW1hZ2VCaXRtYXBGcm9tQmxvYihkLHtmbGlwWTpuLHByZW11bHRpcGx5QWxwaGE6ITEsc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnN9KTtsZXQgZj13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChkKTtyZXR1cm4gaD1uZXcgbGUoe3VybDpmfSksQzAoe3Jlc291cmNlOmgsZmxpcFk6bixza2lwQ29sb3JTcGFjZUNvbnZlcnNpb246cyxwcmVmZXJJbWFnZUJpdG1hcDohMX0pfSkudGhlbihmdW5jdGlvbihkKXtpZihtKGQpKXJldHVybiBkLmJsb2I9QSxhfHx3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChoLnVybCksZH0pLmNhdGNoKGZ1bmN0aW9uKGQpe3JldHVybiBtKGgpJiZ3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChoLnVybCksZC5ibG9iPUEsUHJvbWlzZS5yZWplY3QoZCl9KX07bGUuZmV0Y2hJbWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLmZldGNoSW1hZ2Uoe2ZsaXBZOnQuZmxpcFksc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uLHByZWZlckJsb2I6dC5wcmVmZXJCbG9iLHByZWZlckltYWdlQml0bWFwOnQucHJlZmVySW1hZ2VCaXRtYXB9KX07bGUucHJvdG90eXBlLmZldGNoVGV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6InRleHQifSl9O2xlLmZldGNoVGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLmZldGNoVGV4dCgpfTtsZS5wcm90b3R5cGUuZmV0Y2hKc29uPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJ0ZXh0IixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sKi8qO3E9MC4wMSJ9fSk7aWYobSh0KSlyZXR1cm4gdC50aGVuKGZ1bmN0aW9uKGUpe2lmKG0oZSkpcmV0dXJuIEpTT04ucGFyc2UoZSl9KX07bGUuZmV0Y2hKc29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2hKc29uKCl9O2xlLnByb3RvdHlwZS5mZXRjaFhNTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6ImRvY3VtZW50IixvdmVycmlkZU1pbWVUeXBlOiJ0ZXh0L3htbCJ9KX07bGUuZmV0Y2hYTUw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5mZXRjaFhNTCgpfTtsZS5wcm90b3R5cGUuZmV0Y2hKc29ucD1mdW5jdGlvbih0KXt0PVoodCwiY2FsbGJhY2siKSxnMCh0aGlzLnJlcXVlc3QpO2xldCBlO2RvIGU9YGxvYWRKc29ucCR7TC5uZXh0UmFuZG9tTnVtYmVyKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiw4KX1gO3doaWxlKG0od2luZG93W2VdKSk7cmV0dXJuIHIyKHRoaXMsdCxlKX07bGUuZmV0Y2hKc29ucD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLmZldGNoSnNvbnAodC5jYWxsYmFja1BhcmFtZXRlck5hbWUpfTtsZS5wcm90b3R5cGUuX21ha2VSZXF1ZXN0PWZ1bmN0aW9uKHQpe2xldCBlPXRoaXM7ZzAoZS5yZXF1ZXN0KTtsZXQgaT1lLnJlcXVlc3Qsbj1lLnVybDtpLnVybD1uLGkucmVxdWVzdEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bGV0IG89dC5yZXNwb25zZVR5cGUscj1lcyh0LmhlYWRlcnMsZS5oZWFkZXJzKSxhPXQub3ZlcnJpZGVNaW1lVHlwZSxoPXQubWV0aG9kLEE9dC5kYXRhLGQ9RWwoKSxmPWxlLl9JbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHIobixvLGgsQSxyLGQsYSk7cmV0dXJuIG0oZikmJm0oZi5hYm9ydCkmJihpLmNhbmNlbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7Zi5hYm9ydCgpfSksZC5wcm9taXNlfTtsZXQgcz1UWi5yZXF1ZXN0KGkpO2lmKG0ocykpcmV0dXJuIHMudGhlbihmdW5jdGlvbihvKXtyZXR1cm4gaS5jYW5jZWxGdW5jdGlvbj12b2lkIDAsb30pLmNhdGNoKGZ1bmN0aW9uKG8pe3JldHVybiBpLmNhbmNlbEZ1bmN0aW9uPXZvaWQgMCxpLnN0YXRlIT09VW4uRkFJTEVEP1Byb21pc2UucmVqZWN0KG8pOmUucmV0cnlPbkVycm9yKG8pLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHI/KGkuc3RhdGU9VW4uVU5JU1NVRUQsaS5kZWZlcnJlZD12b2lkIDAsZS5mZXRjaCh0KSk6UHJvbWlzZS5yZWplY3Qobyl9KX0pfTt2cT0vXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLztsZS5wcm90b3R5cGUuZmV0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aEEodCx7fSksdC5tZXRob2Q9IkdFVCIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O2xlLmZldGNoPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2goe3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZX0pfTtsZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PWhBKHQse30pLHQubWV0aG9kPSJERUxFVEUiLHRoaXMuX21ha2VSZXF1ZXN0KHQpfTtsZS5kZWxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5kZWxldGUoe3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZSxkYXRhOnQuZGF0YX0pfTtsZS5wcm90b3R5cGUuaGVhZD1mdW5jdGlvbih0KXtyZXR1cm4gdD1oQSh0LHt9KSx0Lm1ldGhvZD0iSEVBRCIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O2xlLmhlYWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5oZWFkKHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07bGUucHJvdG90eXBlLm9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aEEodCx7fSksdC5tZXRob2Q9Ik9QVElPTlMiLHRoaXMuX21ha2VSZXF1ZXN0KHQpfTtsZS5vcHRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkub3B0aW9ucyh7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O2xlLnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgiZGF0YSIsdCksZT1oQShlLHt9KSxlLm1ldGhvZD0iUE9TVCIsZS5kYXRhPXQsdGhpcy5fbWFrZVJlcXVlc3QoZSl9O2xlLnBvc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5wb3N0KHQuZGF0YSx7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O2xlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC5kZWZpbmVkKCJkYXRhIix0KSxlPWhBKGUse30pLGUubWV0aG9kPSJQVVQiLGUuZGF0YT10LHRoaXMuX21ha2VSZXF1ZXN0KGUpfTtsZS5wdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5wdXQodC5kYXRhLHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07bGUucHJvdG90eXBlLnBhdGNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgiZGF0YSIsdCksZT1oQShlLHt9KSxlLm1ldGhvZD0iUEFUQ0giLGUuZGF0YT10LHRoaXMuX21ha2VSZXF1ZXN0KGUpfTtsZS5wYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLnBhdGNoKHQuZGF0YSx7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O2xlLl9JbXBsZW1lbnRhdGlvbnM9e307bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkSW1hZ2VFbGVtZW50PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1uZXcgSW1hZ2U7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtuLm5hdHVyYWxXaWR0aD09PTAmJm4ubmF0dXJhbEhlaWdodD09PTAmJm4ud2lkdGg9PT0wJiZuLmhlaWdodD09PTAmJihuLndpZHRoPTMwMCxuLmhlaWdodD0xNTApLGkucmVzb2x2ZShuKX0sbi5vbmVycm9yPWZ1bmN0aW9uKHMpe2kucmVqZWN0KHMpfSxlJiYodTAuY29udGFpbnModCk/bi5jcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIjpuLmNyb3NzT3JpZ2luPSIiKSxuLnNyYz10fTtsZS5fSW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj10LnVybDtsZS5zdXBwb3J0c0ltYWdlQml0bWFwT3B0aW9ucygpLnRoZW4oZnVuY3Rpb24oYSl7aWYoIShhJiZvKSl7bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkSW1hZ2VFbGVtZW50KHIsZSxpKTtyZXR1cm59bGV0IGg9ImJsb2IiLEE9IkdFVCIsZD1FbCgpLGY9bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkV2l0aFhocihyLGgsQSx2b2lkIDAsdm9pZCAwLGQsdm9pZCAwLHZvaWQgMCx2b2lkIDApO3JldHVybiBtKGYpJiZtKGYuYWJvcnQpJiYodC5jYW5jZWxGdW5jdGlvbj1mdW5jdGlvbigpe2YuYWJvcnQoKX0pLGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uKEUpe2lmKCFtKEUpKXtpLnJlamVjdChuZXcga2UoYFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgJHtyfSBidXQgaXQgY29udGFpbmVkIG5vIGNvbnRlbnQuYCkpO3JldHVybn1yZXR1cm4gbGUuY3JlYXRlSW1hZ2VCaXRtYXBGcm9tQmxvYihFLHtmbGlwWTpuLHByZW11bHRpcGx5QWxwaGE6ITEsc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnN9KX0pLnRoZW4oZnVuY3Rpb24oRSl7aS5yZXNvbHZlKEUpfSl9KS5jYXRjaChmdW5jdGlvbihhKXtpLnJlamVjdChhKX0pfTtsZS5jcmVhdGVJbWFnZUJpdG1hcEZyb21CbG9iPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgib3B0aW9ucyIsZSkscC50eXBlT2YuYm9vbCgib3B0aW9ucy5mbGlwWSIsZS5mbGlwWSkscC50eXBlT2YuYm9vbCgib3B0aW9ucy5wcmVtdWx0aXBseUFscGhhIixlLnByZW11bHRpcGx5QWxwaGEpLHAudHlwZU9mLmJvb2woIm9wdGlvbnMuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uIixlLnNraXBDb2xvclNwYWNlQ29udmVyc2lvbiksY3JlYXRlSW1hZ2VCaXRtYXAodCx7aW1hZ2VPcmllbnRhdGlvbjplLmZsaXBZPyJmbGlwWSI6Im5vbmUiLHByZW11bHRpcGx5QWxwaGE6ZS5wcmVtdWx0aXBseUFscGhhPyJwcmVtdWx0aXBseSI6Im5vbmUiLGNvbG9yU3BhY2VDb252ZXJzaW9uOmUuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uPyJub25lIjoiZGVmYXVsdCJ9KX07WHE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PiJ1IjtsZS5fSW1wbGVtZW50YXRpb25zLmxvYWRXaXRoWGhyPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2xldCBhPXZxLmV4ZWModCk7aWYoYSE9PW51bGwpe28ucmVzb2x2ZSh6cShhLGUpKTtyZXR1cm59aWYoWHEpe0txKHQsZSxpLG4scyxvLHIpO3JldHVybn1sZXQgaD1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYodTAuY29udGFpbnModCkmJihoLndpdGhDcmVkZW50aWFscz0hMCksaC5vcGVuKGksdCwhMCksbShyKSYmbShoLm92ZXJyaWRlTWltZVR5cGUpJiZoLm92ZXJyaWRlTWltZVR5cGUociksbShzKSlmb3IobGV0IGQgaW4gcylzLmhhc093blByb3BlcnR5KGQpJiZoLnNldFJlcXVlc3RIZWFkZXIoZCxzW2RdKTttKGUpJiYoaC5yZXNwb25zZVR5cGU9ZSk7bGV0IEE9ITE7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIiYmKEE9dC5pbmRleE9mKCJmaWxlOi8vIik9PT0wfHx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmxvY2F0aW9uLm9yaWdpbj09PSJmaWxlOi8vIiksaC5vbmxvYWQ9ZnVuY3Rpb24oKXtpZigoaC5zdGF0dXM8MjAwfHxoLnN0YXR1cz49MzAwKSYmIShBJiZoLnN0YXR1cz09PTApKXtvLnJlamVjdChuZXcgaEUoaC5zdGF0dXMsaC5yZXNwb25zZSxoLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSk7cmV0dXJufWxldCBkPWgucmVzcG9uc2UsZj1oLnJlc3BvbnNlVHlwZTtpZihpPT09IkhFQUQifHxpPT09Ik9QVElPTlMiKXtsZXQgXz1oLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLnRyaW0oKS5zcGxpdCgvW1xyXG5dKy8pLFI9e307Xy5mb3JFYWNoKGZ1bmN0aW9uKEkpe2xldCBDPUkuc3BsaXQoIjogIiksTj1DLnNoaWZ0KCk7UltOXT1DLmpvaW4oIjogIil9KSxvLnJlc29sdmUoUik7cmV0dXJufWlmKGguc3RhdHVzPT09MjA0KW8ucmVzb2x2ZSh2b2lkIDApO2Vsc2UgaWYobShkKSYmKCFtKGUpfHxmPT09ZSkpby5yZXNvbHZlKGQpO2Vsc2UgaWYoZT09PSJqc29uIiYmdHlwZW9mIGQ9PSJzdHJpbmciKXRyeXtvLnJlc29sdmUoSlNPTi5wYXJzZShkKSl9Y2F0Y2goRSl7by5yZWplY3QoRSl9ZWxzZShmPT09IiJ8fGY9PT0iZG9jdW1lbnQiKSYmbShoLnJlc3BvbnNlWE1MKSYmaC5yZXNwb25zZVhNTC5oYXNDaGlsZE5vZGVzKCk/by5yZXNvbHZlKGgucmVzcG9uc2VYTUwpOihmPT09IiJ8fGY9PT0idGV4dCIpJiZtKGgucmVzcG9uc2VUZXh0KT9vLnJlc29sdmUoaC5yZXNwb25zZVRleHQpOm8ucmVqZWN0KG5ldyBrZSgiSW52YWxpZCBYTUxIdHRwUmVxdWVzdCByZXNwb25zZSB0eXBlLiIpKX0saC5vbmVycm9yPWZ1bmN0aW9uKGQpe28ucmVqZWN0KG5ldyBoRSl9LGguc2VuZChuKSxofTtsZS5fSW1wbGVtZW50YXRpb25zLmxvYWRBbmRFeGVjdXRlU2NyaXB0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gRFcodCxlKS5jYXRjaChmdW5jdGlvbihuKXtpLnJlamVjdChuKX0pfTtsZS5fRGVmYXVsdEltcGxlbWVudGF0aW9ucz17fTtsZS5fRGVmYXVsdEltcGxlbWVudGF0aW9ucy5jcmVhdGVJbWFnZT1sZS5fSW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlO2xlLl9EZWZhdWx0SW1wbGVtZW50YXRpb25zLmxvYWRXaXRoWGhyPWxlLl9JbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHI7bGUuX0RlZmF1bHRJbXBsZW1lbnRhdGlvbnMubG9hZEFuZEV4ZWN1dGVTY3JpcHQ9bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkQW5kRXhlY3V0ZVNjcmlwdDtsZS5ERUZBVUxUPU9iamVjdC5mcmVlemUobmV3IGxlKHt1cmw6dHlwZW9mIGRvY3VtZW50PiJ1Ij8iIjpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLnNwbGl0KCI/IilbMF19KSk7dG49bGV9KTtmdW5jdGlvbiBtRSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZGF0ZXM9dm9pZCAwLHRoaXMuX3NhbXBsZXM9dm9pZCAwLHRoaXMuX2RhdGVDb2x1bW49LTEsdGhpcy5feFBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uPS0xLHRoaXMuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj0tMSx0aGlzLl91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW49LTEsdGhpcy5feENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uPS0xLHRoaXMuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj0tMSx0aGlzLl90YWlNaW51c1V0Y1NlY29uZHNDb2x1bW49LTEsdGhpcy5fY29sdW1uQ291bnQ9MCx0aGlzLl9sYXN0SW5kZXg9LTEsdGhpcy5fYWRkTmV3TGVhcFNlY29uZHM9Wih0LmFkZE5ld0xlYXBTZWNvbmRzLCEwKSxtKHQuZGF0YSk/YTIodGhpcyx0LmRhdGEpOmEyKHRoaXMse2NvbHVtbk5hbWVzOlsiZGF0ZUlzbzg2MDEiLCJtb2RpZmllZEp1bGlhbkRhdGVVdGMiLCJ4UG9sZVdhbmRlclJhZGlhbnMiLCJ5UG9sZVdhbmRlclJhZGlhbnMiLCJ1dDFNaW51c1V0Y1NlY29uZHMiLCJsZW5ndGhPZkRheUNvcnJlY3Rpb25TZWNvbmRzIiwieENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zIiwieUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zIiwidGFpTWludXNVdGNTZWNvbmRzIl0sc2FtcGxlczpbXX0pfWZ1bmN0aW9uIHFxKHQsZSl7cmV0dXJuIFplLmNvbXBhcmUodC5qdWxpYW5EYXRlLGUpfWZ1bmN0aW9uIGEyKHQsZSl7aWYoIW0oZS5jb2x1bW5OYW1lcykpdGhyb3cgbmV3IGtlKCJFcnJvciBpbiBsb2FkZWQgRU9QIGRhdGE6IFRoZSBjb2x1bW5OYW1lcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC4iKTtpZighbShlLnNhbXBsZXMpKXRocm93IG5ldyBrZSgiRXJyb3IgaW4gbG9hZGVkIEVPUCBkYXRhOiBUaGUgc2FtcGxlcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC4iKTtsZXQgaT1lLmNvbHVtbk5hbWVzLmluZGV4T2YoIm1vZGlmaWVkSnVsaWFuRGF0ZVV0YyIpLG49ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ4UG9sZVdhbmRlclJhZGlhbnMiKSxzPWUuY29sdW1uTmFtZXMuaW5kZXhPZigieVBvbGVXYW5kZXJSYWRpYW5zIiksbz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInV0MU1pbnVzVXRjU2Vjb25kcyIpLHI9ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ4Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiKSxhPWUuY29sdW1uTmFtZXMuaW5kZXhPZigieUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zIiksaD1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInRhaU1pbnVzVXRjU2Vjb25kcyIpO2lmKGk8MHx8bjwwfHxzPDB8fG88MHx8cjwwfHxhPDB8fGg8MCl0aHJvdyBuZXcga2UoIkVycm9yIGluIGxvYWRlZCBFT1AgZGF0YTogVGhlIGNvbHVtbk5hbWVzIHByb3BlcnR5IG11c3QgaW5jbHVkZSBtb2RpZmllZEp1bGlhbkRhdGVVdGMsIHhQb2xlV2FuZGVyUmFkaWFucywgeVBvbGVXYW5kZXJSYWRpYW5zLCB1dDFNaW51c1V0Y1NlY29uZHMsIHhDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFucywgeUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zLCBhbmQgdGFpTWludXNVdGNTZWNvbmRzIGNvbHVtbnMiKTtsZXQgQT10Ll9zYW1wbGVzPWUuc2FtcGxlcyxkPXQuX2RhdGVzPVtdO3QuX2RhdGVDb2x1bW49aSx0Ll94UG9sZVdhbmRlclJhZGlhbnNDb2x1bW49bix0Ll95UG9sZVdhbmRlclJhZGlhbnNDb2x1bW49cyx0Ll91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW49byx0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW49cix0Ll95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW49YSx0Ll90YWlNaW51c1V0Y1NlY29uZHNDb2x1bW49aCx0Ll9jb2x1bW5Db3VudD1lLmNvbHVtbk5hbWVzLmxlbmd0aCx0Ll9sYXN0SW5kZXg9dm9pZCAwO2xldCBmLEU9dC5fYWRkTmV3TGVhcFNlY29uZHM7Zm9yKGxldCBfPTAsUj1BLmxlbmd0aDtfPFI7Xys9dC5fY29sdW1uQ291bnQpe2xldCBJPUFbXytpXSxDPUFbXytoXSxOPUkrYm4uTU9ESUZJRURfSlVMSUFOX0RBVEVfRElGRkVSRU5DRSxUPW5ldyBaZShOLEMsRWkuVEFJKTtpZihkLnB1c2goVCksRSl7aWYoQyE9PWYmJm0oZikpe2xldCBGPVplLmxlYXBTZWNvbmRzLGI9Qm8oRixULHFxKTtpZihiPDApe2xldCBHPW5ldyB6aShULEMpO0Yuc3BsaWNlKH5iLDAsRyl9fWY9Q319fWZ1bmN0aW9uIEEyKHQsZSxpLG4scyl7bGV0IG89aSpuO3MueFBvbGVXYW5kZXI9ZVtvK3QuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0scy55UG9sZVdhbmRlcj1lW28rdC5feVBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSxzLnhQb2xlT2Zmc2V0PWVbbyt0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dLHMueVBvbGVPZmZzZXQ9ZVtvK3QuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0scy51dDFNaW51c1V0Yz1lW28rdC5fdXQxTWludXNVdGNTZWNvbmRzQ29sdW1uXX1mdW5jdGlvbiBkRSh0LGUsaSl7cmV0dXJuIGUrdCooaS1lKX1mdW5jdGlvbiBoMih0LGUsaSxuLHMsbyxyKXtsZXQgYT10Ll9jb2x1bW5Db3VudDtpZihvPmUubGVuZ3RoLTEpcmV0dXJuIHIueFBvbGVXYW5kZXI9MCxyLnlQb2xlV2FuZGVyPTAsci54UG9sZU9mZnNldD0wLHIueVBvbGVPZmZzZXQ9MCxyLnV0MU1pbnVzVXRjPTAscjtsZXQgaD1lW3NdLEE9ZVtvXTtpZihoLmVxdWFscyhBKXx8bi5lcXVhbHMoaCkpcmV0dXJuIEEyKHQsaSxzLGEscikscjtpZihuLmVxdWFscyhBKSlyZXR1cm4gQTIodCxpLG8sYSxyKSxyO2xldCBkPVplLnNlY29uZHNEaWZmZXJlbmNlKG4saCkvWmUuc2Vjb25kc0RpZmZlcmVuY2UoQSxoKSxmPXMqYSxFPW8qYSxfPWlbZit0Ll91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW5dLFI9aVtFK3QuX3V0MU1pbnVzVXRjU2Vjb25kc0NvbHVtbl0sST1SLV87aWYoST4uNXx8STwtLjUpe2xldCBDPWlbZit0Ll90YWlNaW51c1V0Y1NlY29uZHNDb2x1bW5dLE49aVtFK3QuX3RhaU1pbnVzVXRjU2Vjb25kc0NvbHVtbl07QyE9PU4mJihBLmVxdWFscyhuKT9fPVI6Ui09Ti1DKX1yZXR1cm4gci54UG9sZVdhbmRlcj1kRShkLGlbZit0Ll94UG9sZVdhbmRlclJhZGlhbnNDb2x1bW5dLGlbRSt0Ll94UG9sZVdhbmRlclJhZGlhbnNDb2x1bW5dKSxyLnlQb2xlV2FuZGVyPWRFKGQsaVtmK3QuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0saVtFK3QuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0pLHIueFBvbGVPZmZzZXQ9ZEUoZCxpW2YrdC5feENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uXSxpW0UrdC5feENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uXSksci55UG9sZU9mZnNldD1kRShkLGlbZit0Ll95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dLGlbRSt0Ll95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dKSxyLnV0MU1pbnVzVXRjPWRFKGQsXyxSKSxyfXZhciBjMixsMj1PKCgpPT57c0UoKTthZSgpO2J0KCk7bXQoKTthMCgpO1ZyKCk7aDAoKTtJYSgpO1BzKCk7QVooKTtoWigpO21FLmZyb21Vcmw9YXN5bmMgZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoInVybCIsdCksZT1aKGUsWi5FTVBUWV9PQkpFQ1QpO2xldCBpPXRuLmNyZWF0ZUlmTmVlZGVkKHQpLG47dHJ5e249YXdhaXQgaS5mZXRjaEpzb24oKX1jYXRjaHt0aHJvdyBuZXcga2UoYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHJldHJpZXZpbmcgdGhlIEVPUCBkYXRhIGZyb20gdGhlIFVSTCAke2kudXJsfS5gKX1yZXR1cm4gbmV3IG1FKHthZGROZXdMZWFwU2Vjb25kczplLmFkZE5ld0xlYXBTZWNvbmRzLGRhdGE6bn0pfTttRS5OT05FPU9iamVjdC5mcmVlemUoe2NvbXB1dGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbShlKT8oZS54UG9sZVdhbmRlcj0wLGUueVBvbGVXYW5kZXI9MCxlLnhQb2xlT2Zmc2V0PTAsZS55UG9sZU9mZnNldD0wLGUudXQxTWludXNVdGM9MCk6ZT1uZXcgb0UoMCwwLDAsMCwwKSxlfX0pO21FLnByb3RvdHlwZS5jb21wdXRlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odGhpcy5fc2FtcGxlcykpcmV0dXJuO2lmKG0oZSl8fChlPW5ldyBvRSgwLDAsMCwwLDApKSx0aGlzLl9zYW1wbGVzLmxlbmd0aD09PTApcmV0dXJuIGUueFBvbGVXYW5kZXI9MCxlLnlQb2xlV2FuZGVyPTAsZS54UG9sZU9mZnNldD0wLGUueVBvbGVPZmZzZXQ9MCxlLnV0MU1pbnVzVXRjPTAsZTtsZXQgaT10aGlzLl9kYXRlcyxuPXRoaXMuX2xhc3RJbmRleCxzPTAsbz0wO2lmKG0obikpe2xldCBhPWlbbl0saD1pW24rMV0sQT1aZS5sZXNzVGhhbk9yRXF1YWxzKGEsdCksZD0hbShoKSxmPWR8fFplLmdyZWF0ZXJUaGFuT3JFcXVhbHMoaCx0KTtpZihBJiZmKXJldHVybiBzPW4sIWQmJmguZXF1YWxzKHQpJiYrK3Msbz1zKzEsaDIodGhpcyxpLHRoaXMuX3NhbXBsZXMsdCxzLG8sZSksZX1sZXQgcj1CbyhpLHQsWmUuY29tcGFyZSx0aGlzLl9kYXRlQ29sdW1uKTtyZXR1cm4gcj49MD8ocjxpLmxlbmd0aC0xJiZpW3IrMV0uZXF1YWxzKHQpJiYrK3Iscz1yLG89cik6KG89fnIscz1vLTEsczwwJiYocz0wKSksdGhpcy5fbGFzdEluZGV4PXMsaDIodGhpcyxpLHRoaXMuX3NhbXBsZXMsdCxzLG8sZSksZX07YzI9bUV9KTtmdW5jdGlvbiB4dCh0LGUsaSxuLHMsbyxyLGEsaCl7dGhpc1swXT1aKHQsMCksdGhpc1sxXT1aKG4sMCksdGhpc1syXT1aKHIsMCksdGhpc1szXT1aKGUsMCksdGhpc1s0XT1aKHMsMCksdGhpc1s1XT1aKGEsMCksdGhpc1s2XT1aKGksMCksdGhpc1s3XT1aKG8sMCksdGhpc1s4XT1aKGgsMCl9ZnVuY3Rpb24gbjkodCl7bGV0IGU9MDtmb3IobGV0IGk9MDtpPDk7KytpKXtsZXQgbj10W2ldO2UrPW4qbn1yZXR1cm4gTWF0aC5zcXJ0KGUpfWZ1bmN0aW9uIHM5KHQpe2xldCBlPTA7Zm9yKGxldCBpPTA7aTwzOysraSl7bGV0IG49dFt4dC5nZXRFbGVtZW50SW5kZXgoYjBbaV0sTjBbaV0pXTtlKz0yKm4qbn1yZXR1cm4gTWF0aC5zcXJ0KGUpfWZ1bmN0aW9uIG85KHQsZSl7bGV0IGk9TC5FUFNJTE9OMTUsbj0wLHM9MTtmb3IobGV0IEE9MDtBPDM7KytBKXtsZXQgZD1NYXRoLmFicyh0W3h0LmdldEVsZW1lbnRJbmRleChiMFtBXSxOMFtBXSldKTtkPm4mJihzPUEsbj1kKX1sZXQgbz0xLHI9MCxhPU4wW3NdLGg9YjBbc107aWYoTWF0aC5hYnModFt4dC5nZXRFbGVtZW50SW5kZXgoaCxhKV0pPmkpe2xldCBBPXRbeHQuZ2V0RWxlbWVudEluZGV4KGgsaCldLGQ9dFt4dC5nZXRFbGVtZW50SW5kZXgoYSxhKV0sZj10W3h0LmdldEVsZW1lbnRJbmRleChoLGEpXSxFPShBLWQpLzIvZixfO0U8MD9fPS0xLygtRStNYXRoLnNxcnQoMStFKkUpKTpfPTEvKEUrTWF0aC5zcXJ0KDErRSpFKSksbz0xL01hdGguc3FydCgxK18qXykscj1fKm99cmV0dXJuIGU9eHQuY2xvbmUoeHQuSURFTlRJVFksZSksZVt4dC5nZXRFbGVtZW50SW5kZXgoYSxhKV09ZVt4dC5nZXRFbGVtZW50SW5kZXgoaCxoKV09byxlW3h0LmdldEVsZW1lbnRJbmRleChoLGEpXT1yLGVbeHQuZ2V0RWxlbWVudEluZGV4KGEsaCldPS1yLGV9dmFyICRxLHQ5LFQwLGQyLGU5LGk5LE4wLGIwLEZaLG0yLHI5LGx0LGRuPU8oKCk9PntIdCgpO2FlKCk7YnQoKTttdCgpO1Z0KCk7X2UoKTt4dC5wYWNrZWRMZW5ndGg9OTt4dC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksZVtpKytdPXRbMF0sZVtpKytdPXRbMV0sZVtpKytdPXRbMl0sZVtpKytdPXRbM10sZVtpKytdPXRbNF0sZVtpKytdPXRbNV0sZVtpKytdPXRbNl0sZVtpKytdPXRbN10sZVtpKytdPXRbOF0sZX07eHQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCksbShpKXx8KGk9bmV3IHh0KSxpWzBdPXRbZSsrXSxpWzFdPXRbZSsrXSxpWzJdPXRbZSsrXSxpWzNdPXRbZSsrXSxpWzRdPXRbZSsrXSxpWzVdPXRbZSsrXSxpWzZdPXRbZSsrXSxpWzddPXRbZSsrXSxpWzhdPXRbZSsrXSxpfTt4dC5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImFycmF5Iix0KTtsZXQgaT10Lmxlbmd0aCxuPWkqOTtpZighbShlKSllPW5ldyBBcnJheShuKTtlbHNle2lmKCFBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aCE9PW4pdGhyb3cgbmV3IFkoIklmIHJlc3VsdCBpcyBhIHR5cGVkIGFycmF5LCBpdCBtdXN0IGhhdmUgZXhhY3RseSBhcnJheS5sZW5ndGggKiA5IGVsZW1lbnRzIik7ZS5sZW5ndGghPT1uJiYoZS5sZW5ndGg9bil9Zm9yKGxldCBzPTA7czxpOysrcyl4dC5wYWNrKHRbc10sZSxzKjkpO3JldHVybiBlfTt4dC51bnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe2lmKHAuZGVmaW5lZCgiYXJyYXkiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJhcnJheS5sZW5ndGgiLHQubGVuZ3RoLDkpLHQubGVuZ3RoJTkhPT0wKXRocm93IG5ldyBZKCJhcnJheSBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDkuIik7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pLzk6ZT1uZXcgQXJyYXkoaS85KTtmb3IobGV0IG49MDtuPGk7bis9OSl7bGV0IHM9bi85O2Vbc109eHQudW5wYWNrKHQsbixlW3NdKX1yZXR1cm4gZX07eHQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZVs0XT10WzRdLGVbNV09dFs1XSxlWzZdPXRbNl0sZVs3XT10WzddLGVbOF09dFs4XSxlKTpuZXcgeHQodFswXSx0WzNdLHRbNl0sdFsxXSx0WzRdLHRbN10sdFsyXSx0WzVdLHRbOF0pfTt4dC5mcm9tQXJyYXk9eHQudW5wYWNrO3h0LmZyb21Db2x1bW5NYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWVzIix0KSx4dC5jbG9uZSh0LGUpfTt4dC5mcm9tUm93TWFqb3JBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBwLmRlZmluZWQoInZhbHVlcyIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFszXSxlWzJdPXRbNl0sZVszXT10WzFdLGVbNF09dFs0XSxlWzVdPXRbN10sZVs2XT10WzJdLGVbN109dFs1XSxlWzhdPXRbOF0sZSk6bmV3IHh0KHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl0sdFs3XSx0WzhdKX07eHQuZnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpO2xldCBpPXQueCp0Lngsbj10LngqdC55LHM9dC54KnQueixvPXQueCp0Lncscj10LnkqdC55LGE9dC55KnQueixoPXQueSp0LncsQT10LnoqdC56LGQ9dC56KnQudyxmPXQudyp0LncsRT1pLXItQStmLF89Mioobi1kKSxSPTIqKHMraCksST0yKihuK2QpLEM9LWkrci1BK2YsTj0yKihhLW8pLFQ9Mioocy1oKSxGPTIqKGErbyksYj0taS1yK0ErZjtyZXR1cm4gbShlKT8oZVswXT1FLGVbMV09SSxlWzJdPVQsZVszXT1fLGVbNF09QyxlWzVdPUYsZVs2XT1SLGVbN109TixlWzhdPWIsZSk6bmV3IHh0KEUsXyxSLEksQyxOLFQsRixiKX07eHQuZnJvbUhlYWRpbmdQaXRjaFJvbGw9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImhlYWRpbmdQaXRjaFJvbGwiLHQpO2xldCBpPU1hdGguY29zKC10LnBpdGNoKSxuPU1hdGguY29zKC10LmhlYWRpbmcpLHM9TWF0aC5jb3ModC5yb2xsKSxvPU1hdGguc2luKC10LnBpdGNoKSxyPU1hdGguc2luKC10LmhlYWRpbmcpLGE9TWF0aC5zaW4odC5yb2xsKSxoPWkqbixBPS1zKnIrYSpvKm4sZD1hKnIrcypvKm4sZj1pKnIsRT1zKm4rYSpvKnIsXz0tYSpuK3MqbypyLFI9LW8sST1hKmksQz1zKmk7cmV0dXJuIG0oZSk/KGVbMF09aCxlWzFdPWYsZVsyXT1SLGVbM109QSxlWzRdPUUsZVs1XT1JLGVbNl09ZCxlWzddPV8sZVs4XT1DLGUpOm5ldyB4dChoLEEsZCxmLEUsXyxSLEksQyl9O3h0LmZyb21TY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNjYWxlIix0KSxtKGUpPyhlWzBdPXQueCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPXQueSxlWzVdPTAsZVs2XT0wLGVbN109MCxlWzhdPXQueixlKTpuZXcgeHQodC54LDAsMCwwLHQueSwwLDAsMCx0LnopfTt4dC5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPXQsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT10LGUpOm5ldyB4dCh0LDAsMCwwLHQsMCwwLDAsdCl9O3h0LmZyb21Dcm9zc1Byb2R1Y3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2ZWN0b3IiLHQpLG0oZSk/KGVbMF09MCxlWzFdPXQueixlWzJdPS10LnksZVszXT0tdC56LGVbNF09MCxlWzVdPXQueCxlWzZdPXQueSxlWzddPS10LngsZVs4XT0wLGUpOm5ldyB4dCgwLC10LnosdC55LHQueiwwLC10LngsLXQueSx0LngsMCl9O3h0LmZyb21Sb3RhdGlvblg9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5udW1iZXIoImFuZ2xlIix0KTtsZXQgaT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiBtKGUpPyhlWzBdPTEsZVsxXT0wLGVbMl09MCxlWzNdPTAsZVs0XT1pLGVbNV09bixlWzZdPTAsZVs3XT0tbixlWzhdPWksZSk6bmV3IHh0KDEsMCwwLDAsaSwtbiwwLG4saSl9O3h0LmZyb21Sb3RhdGlvblk9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5udW1iZXIoImFuZ2xlIix0KTtsZXQgaT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiBtKGUpPyhlWzBdPWksZVsxXT0wLGVbMl09LW4sZVszXT0wLGVbNF09MSxlWzVdPTAsZVs2XT1uLGVbN109MCxlWzhdPWksZSk6bmV3IHh0KGksMCxuLDAsMSwwLC1uLDAsaSl9O3h0LmZyb21Sb3RhdGlvblo9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5udW1iZXIoImFuZ2xlIix0KTtsZXQgaT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiBtKGUpPyhlWzBdPWksZVsxXT1uLGVbMl09MCxlWzNdPS1uLGVbNF09aSxlWzVdPTAsZVs2XT0wLGVbN109MCxlWzhdPTEsZSk6bmV3IHh0KGksLW4sMCxuLGksMCwwLDAsMSl9O3h0LnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4XT10WzhdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdLHRbN10sdFs4XV19O3h0LmdldEVsZW1lbnRJbmRleD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicm93IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJyb3ciLGUsMikscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImNvbHVtbiIsdCwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiY29sdW1uIix0LDIpLHQqMytlfTt4dC5nZXRDb2x1bW49ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDIpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1lKjMscz10W25dLG89dFtuKzFdLHI9dFtuKzJdO3JldHVybiBpLng9cyxpLnk9byxpLno9cixpfTt4dC5zZXRDb2x1bW49ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMikscC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuPXh0LmNsb25lKHQsbik7bGV0IHM9ZSozO3JldHVybiBuW3NdPWkueCxuW3MrMV09aS55LG5bcysyXT1pLnosbn07eHQuZ2V0Um93PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwyKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFtlXSxzPXRbZSszXSxvPXRbZSs2XTtyZXR1cm4gaS54PW4saS55PXMsaS56PW8saX07eHQuc2V0Um93PWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwyKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49eHQuY2xvbmUodCxuKSxuW2VdPWkueCxuW2UrM109aS55LG5bZSs2XT1pLnosbn07JHE9bmV3IGw7eHQuc2V0U2NhbGU9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInNjYWxlIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49eHQuZ2V0U2NhbGUodCwkcSkscz1lLngvbi54LG89ZS55L24ueSxyPWUuei9uLno7cmV0dXJuIGlbMF09dFswXSpzLGlbMV09dFsxXSpzLGlbMl09dFsyXSpzLGlbM109dFszXSpvLGlbNF09dFs0XSpvLGlbNV09dFs1XSpvLGlbNl09dFs2XSpyLGlbN109dFs3XSpyLGlbOF09dFs4XSpyLGl9O3Q5PW5ldyBsO3h0LnNldFVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj14dC5nZXRTY2FsZSh0LHQ5KSxzPWUvbi54LG89ZS9uLnkscj1lL24uejtyZXR1cm4gaVswXT10WzBdKnMsaVsxXT10WzFdKnMsaVsyXT10WzJdKnMsaVszXT10WzNdKm8saVs0XT10WzRdKm8saVs1XT10WzVdKm8saVs2XT10WzZdKnIsaVs3XT10WzddKnIsaVs4XT10WzhdKnIsaX07VDA9bmV3IGw7eHQuZ2V0U2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFswXSx0WzFdLHRbMl0sVDApKSxlLnk9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFszXSx0WzRdLHRbNV0sVDApKSxlLno9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFs2XSx0WzddLHRbOF0sVDApKSxlfTtkMj1uZXcgbDt4dC5nZXRNYXhpbXVtU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHh0LmdldFNjYWxlKHQsZDIpLGwubWF4aW11bUNvbXBvbmVudChkMil9O2U5PW5ldyBsO3h0LnNldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXh0LmdldFNjYWxlKHQsZTkpO3JldHVybiBpWzBdPWVbMF0qbi54LGlbMV09ZVsxXSpuLngsaVsyXT1lWzJdKm4ueCxpWzNdPWVbM10qbi55LGlbNF09ZVs0XSpuLnksaVs1XT1lWzVdKm4ueSxpWzZdPWVbNl0qbi56LGlbN109ZVs3XSpuLnosaVs4XT1lWzhdKm4ueixpfTtpOT1uZXcgbDt4dC5nZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9eHQuZ2V0U2NhbGUodCxpOSk7cmV0dXJuIGVbMF09dFswXS9pLngsZVsxXT10WzFdL2kueCxlWzJdPXRbMl0vaS54LGVbM109dFszXS9pLnksZVs0XT10WzRdL2kueSxlWzVdPXRbNV0vaS55LGVbNl09dFs2XS9pLnosZVs3XT10WzddL2kueixlWzhdPXRbOF0vaS56LGV9O3h0Lm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10WzBdKmVbMF0rdFszXSplWzFdK3RbNl0qZVsyXSxzPXRbMV0qZVswXSt0WzRdKmVbMV0rdFs3XSplWzJdLG89dFsyXSplWzBdK3RbNV0qZVsxXSt0WzhdKmVbMl0scj10WzBdKmVbM10rdFszXSplWzRdK3RbNl0qZVs1XSxhPXRbMV0qZVszXSt0WzRdKmVbNF0rdFs3XSplWzVdLGg9dFsyXSplWzNdK3RbNV0qZVs0XSt0WzhdKmVbNV0sQT10WzBdKmVbNl0rdFszXSplWzddK3RbNl0qZVs4XSxkPXRbMV0qZVs2XSt0WzRdKmVbN10rdFs3XSplWzhdLGY9dFsyXSplWzZdK3RbNV0qZVs3XSt0WzhdKmVbOF07cmV0dXJuIGlbMF09bixpWzFdPXMsaVsyXT1vLGlbM109cixpWzRdPWEsaVs1XT1oLGlbNl09QSxpWzddPWQsaVs4XT1mLGl9O3h0LmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGlbMF09dFswXStlWzBdLGlbMV09dFsxXStlWzFdLGlbMl09dFsyXStlWzJdLGlbM109dFszXStlWzNdLGlbNF09dFs0XStlWzRdLGlbNV09dFs1XStlWzVdLGlbNl09dFs2XStlWzZdLGlbN109dFs3XStlWzddLGlbOF09dFs4XStlWzhdLGl9O3h0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdLWVbMF0saVsxXT10WzFdLWVbMV0saVsyXT10WzJdLWVbMl0saVszXT10WzNdLWVbM10saVs0XT10WzRdLWVbNF0saVs1XT10WzVdLWVbNV0saVs2XT10WzZdLWVbNl0saVs3XT10WzddLWVbN10saVs4XT10WzhdLWVbOF0saX07eHQubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9dFswXSpuK3RbM10qcyt0WzZdKm8sYT10WzFdKm4rdFs0XSpzK3RbN10qbyxoPXRbMl0qbit0WzVdKnMrdFs4XSpvO3JldHVybiBpLng9cixpLnk9YSxpLno9aCxpfTt4dC5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdKmUsaVsxXT10WzFdKmUsaVsyXT10WzJdKmUsaVszXT10WzNdKmUsaVs0XT10WzRdKmUsaVs1XT10WzVdKmUsaVs2XT10WzZdKmUsaVs3XT10WzddKmUsaVs4XT10WzhdKmUsaX07eHQubXVsdGlwbHlCeVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZS54LGlbMV09dFsxXSplLngsaVsyXT10WzJdKmUueCxpWzNdPXRbM10qZS55LGlbNF09dFs0XSplLnksaVs1XT10WzVdKmUueSxpWzZdPXRbNl0qZS56LGlbN109dFs3XSplLnosaVs4XT10WzhdKmUueixpfTt4dC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZSxpWzFdPXRbMV0qZSxpWzJdPXRbMl0qZSxpWzNdPXRbM10qZSxpWzRdPXRbNF0qZSxpWzVdPXRbNV0qZSxpWzZdPXRbNl0qZSxpWzddPXRbN10qZSxpWzhdPXRbOF0qZSxpfTt4dC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPS10WzBdLGVbMV09LXRbMV0sZVsyXT0tdFsyXSxlWzNdPS10WzNdLGVbNF09LXRbNF0sZVs1XT0tdFs1XSxlWzZdPS10WzZdLGVbN109LXRbN10sZVs4XT0tdFs4XSxlfTt4dC50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXRbMF0sbj10WzNdLHM9dFs2XSxvPXRbMV0scj10WzRdLGE9dFs3XSxoPXRbMl0sQT10WzVdLGQ9dFs4XTtyZXR1cm4gZVswXT1pLGVbMV09bixlWzJdPXMsZVszXT1vLGVbNF09cixlWzVdPWEsZVs2XT1oLGVbN109QSxlWzhdPWQsZX07TjA9WzEsMCwwXSxiMD1bMiwyLDFdO0ZaPW5ldyB4dCxtMj1uZXcgeHQ7eHQuY29tcHV0ZUVpZ2VuRGVjb21wb3NpdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KTtsZXQgaT1MLkVQU0lMT04yMCxuPTEwLHM9MCxvPTA7bShlKXx8KGU9e30pO2xldCByPWUudW5pdGFyeT14dC5jbG9uZSh4dC5JREVOVElUWSxlLnVuaXRhcnkpLGE9ZS5kaWFnb25hbD14dC5jbG9uZSh0LGUuZGlhZ29uYWwpLGg9aSpuOShhKTtmb3IoO288biYmczkoYSk+aDspbzkoYSxGWikseHQudHJhbnNwb3NlKEZaLG0yKSx4dC5tdWx0aXBseShhLEZaLGEpLHh0Lm11bHRpcGx5KG0yLGEsYSkseHQubXVsdGlwbHkocixGWixyKSwrK3M+MiYmKCsrbyxzPTApO3JldHVybiBlfTt4dC5hYnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPU1hdGguYWJzKHRbMF0pLGVbMV09TWF0aC5hYnModFsxXSksZVsyXT1NYXRoLmFicyh0WzJdKSxlWzNdPU1hdGguYWJzKHRbM10pLGVbNF09TWF0aC5hYnModFs0XSksZVs1XT1NYXRoLmFicyh0WzVdKSxlWzZdPU1hdGguYWJzKHRbNl0pLGVbN109TWF0aC5hYnModFs3XSksZVs4XT1NYXRoLmFicyh0WzhdKSxlfTt4dC5kZXRlcm1pbmFudD1mdW5jdGlvbih0KXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IGU9dFswXSxpPXRbM10sbj10WzZdLHM9dFsxXSxvPXRbNF0scj10WzddLGE9dFsyXSxoPXRbNV0sQT10WzhdO3JldHVybiBlKihvKkEtaCpyKStzKihoKm4taSpBKSthKihpKnItbypuKX07eHQuaW52ZXJzZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9dFswXSxuPXRbMV0scz10WzJdLG89dFszXSxyPXRbNF0sYT10WzVdLGg9dFs2XSxBPXRbN10sZD10WzhdLGY9eHQuZGV0ZXJtaW5hbnQodCk7aWYoTWF0aC5hYnMoZik8PUwuRVBTSUxPTjE1KXRocm93IG5ldyBZKCJtYXRyaXggaXMgbm90IGludmVydGlibGUiKTtlWzBdPXIqZC1BKmEsZVsxXT1BKnMtbipkLGVbMl09biphLXIqcyxlWzNdPWgqYS1vKmQsZVs0XT1pKmQtaCpzLGVbNV09bypzLWkqYSxlWzZdPW8qQS1oKnIsZVs3XT1oKm4taSpBLGVbOF09aSpyLW8qbjtsZXQgRT0xL2Y7cmV0dXJuIHh0Lm11bHRpcGx5QnlTY2FsYXIoZSxFLGUpfTtyOT1uZXcgeHQ7eHQuaW52ZXJzZVRyYW5zcG9zZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLHh0LmludmVyc2UoeHQudHJhbnNwb3NlKHQscjkpLGUpfTt4dC5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnRbMF09PT1lWzBdJiZ0WzFdPT09ZVsxXSYmdFsyXT09PWVbMl0mJnRbM109PT1lWzNdJiZ0WzRdPT09ZVs0XSYmdFs1XT09PWVbNV0mJnRbNl09PT1lWzZdJiZ0WzddPT09ZVs3XSYmdFs4XT09PWVbOF19O3h0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModFswXS1lWzBdKTw9aSYmTWF0aC5hYnModFsxXS1lWzFdKTw9aSYmTWF0aC5hYnModFsyXS1lWzJdKTw9aSYmTWF0aC5hYnModFszXS1lWzNdKTw9aSYmTWF0aC5hYnModFs0XS1lWzRdKTw9aSYmTWF0aC5hYnModFs1XS1lWzVdKTw9aSYmTWF0aC5hYnModFs2XS1lWzZdKTw9aSYmTWF0aC5hYnModFs3XS1lWzddKTw9aSYmTWF0aC5hYnModFs4XS1lWzhdKTw9aX07eHQuSURFTlRJVFk9T2JqZWN0LmZyZWV6ZShuZXcgeHQoMSwwLDAsMCwxLDAsMCwwLDEpKTt4dC5aRVJPPU9iamVjdC5mcmVlemUobmV3IHh0KDAsMCwwLDAsMCwwLDAsMCwwKSk7eHQuQ09MVU1OMFJPVzA9MDt4dC5DT0xVTU4wUk9XMT0xO3h0LkNPTFVNTjBST1cyPTI7eHQuQ09MVU1OMVJPVzA9Mzt4dC5DT0xVTU4xUk9XMT00O3h0LkNPTFVNTjFST1cyPTU7eHQuQ09MVU1OMlJPVzA9Njt4dC5DT0xVTU4yUk9XMT03O3h0LkNPTFVNTjJST1cyPTg7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeHQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB4dC5wYWNrZWRMZW5ndGh9fX0pO3h0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4geHQuY2xvbmUodGhpcyx0KX07eHQucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4geHQuZXF1YWxzKHRoaXMsdCl9O3h0LmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdFswXT09PWVbaV0mJnRbMV09PT1lW2krMV0mJnRbMl09PT1lW2krMl0mJnRbM109PT1lW2krM10mJnRbNF09PT1lW2krNF0mJnRbNV09PT1lW2krNV0mJnRbNl09PT1lW2krNl0mJnRbN109PT1lW2krN10mJnRbOF09PT1lW2krOF19O3h0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHh0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTt4dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpc1swXX0sICR7dGhpc1szXX0sICR7dGhpc1s2XX0pCigke3RoaXNbMV19LCAke3RoaXNbNF19LCAke3RoaXNbN119KQooJHt0aGlzWzJdfSwgJHt0aGlzWzVdfSwgJHt0aGlzWzhdfSlgfTtsdD14dH0pO2Z1bmN0aW9uIHl0KHQsZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEkpe3RoaXNbMF09Wih0LDApLHRoaXNbMV09WihzLDApLHRoaXNbMl09WihoLDApLHRoaXNbM109WihFLDApLHRoaXNbNF09WihlLDApLHRoaXNbNV09WihvLDApLHRoaXNbNl09WihBLDApLHRoaXNbN109WihfLDApLHRoaXNbOF09WihpLDApLHRoaXNbOV09WihyLDApLHRoaXNbMTBdPVooZCwwKSx0aGlzWzExXT1aKFIsMCksdGhpc1sxMl09WihuLDApLHRoaXNbMTNdPVooYSwwKSx0aGlzWzE0XT1aKGYsMCksdGhpc1sxNV09WihJLDApfXZhciBUbSxObSxmRSxhOSxBOSxGMCxmMixoOSxjOSxsOSxkOSxtOSxmOSxFOSxhdCxGaT1PKCgpPT57SHQoKTtWcygpO2FlKCk7YnQoKTttdCgpO1Z0KCk7X2UoKTtkbigpO1BzKCk7eXQucGFja2VkTGVuZ3RoPTE2O3l0LnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dFswXSxlW2krK109dFsxXSxlW2krK109dFsyXSxlW2krK109dFszXSxlW2krK109dFs0XSxlW2krK109dFs1XSxlW2krK109dFs2XSxlW2krK109dFs3XSxlW2krK109dFs4XSxlW2krK109dFs5XSxlW2krK109dFsxMF0sZVtpKytdPXRbMTFdLGVbaSsrXT10WzEyXSxlW2krK109dFsxM10sZVtpKytdPXRbMTRdLGVbaV09dFsxNV0sZX07eXQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCksbShpKXx8KGk9bmV3IHl0KSxpWzBdPXRbZSsrXSxpWzFdPXRbZSsrXSxpWzJdPXRbZSsrXSxpWzNdPXRbZSsrXSxpWzRdPXRbZSsrXSxpWzVdPXRbZSsrXSxpWzZdPXRbZSsrXSxpWzddPXRbZSsrXSxpWzhdPXRbZSsrXSxpWzldPXRbZSsrXSxpWzEwXT10W2UrK10saVsxMV09dFtlKytdLGlbMTJdPXRbZSsrXSxpWzEzXT10W2UrK10saVsxNF09dFtlKytdLGlbMTVdPXRbZV0saX07eXQucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IGk9dC5sZW5ndGgsbj1pKjE2O2lmKCFtKGUpKWU9bmV3IEFycmF5KG4pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09bil0aHJvdyBuZXcgWSgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDE2IGVsZW1lbnRzIik7ZS5sZW5ndGghPT1uJiYoZS5sZW5ndGg9bil9Zm9yKGxldCBzPTA7czxpOysrcyl5dC5wYWNrKHRbc10sZSxzKjE2KTtyZXR1cm4gZX07eXQudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZihwLmRlZmluZWQoImFycmF5Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCwxNiksdC5sZW5ndGglMTYhPT0wKXRocm93IG5ldyBZKCJhcnJheSBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LiIpO2xldCBpPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9aS8xNjplPW5ldyBBcnJheShpLzE2KTtmb3IobGV0IG49MDtuPGk7bis9MTYpe2xldCBzPW4vMTY7ZVtzXT15dC51bnBhY2sodCxuLGVbc10pfXJldHVybiBlfTt5dC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4XT10WzhdLGVbOV09dFs5XSxlWzEwXT10WzEwXSxlWzExXT10WzExXSxlWzEyXT10WzEyXSxlWzEzXT10WzEzXSxlWzE0XT10WzE0XSxlWzE1XT10WzE1XSxlKTpuZXcgeXQodFswXSx0WzRdLHRbOF0sdFsxMl0sdFsxXSx0WzVdLHRbOV0sdFsxM10sdFsyXSx0WzZdLHRbMTBdLHRbMTRdLHRbM10sdFs3XSx0WzExXSx0WzE1XSl9O3l0LmZyb21BcnJheT15dC51bnBhY2s7eXQuZnJvbUNvbHVtbk1ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC5kZWZpbmVkKCJ2YWx1ZXMiLHQpLHl0LmNsb25lKHQsZSl9O3l0LmZyb21Sb3dNYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWVzIix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzRdLGVbMl09dFs4XSxlWzNdPXRbMTJdLGVbNF09dFsxXSxlWzVdPXRbNV0sZVs2XT10WzldLGVbN109dFsxM10sZVs4XT10WzJdLGVbOV09dFs2XSxlWzEwXT10WzEwXSxlWzExXT10WzE0XSxlWzEyXT10WzNdLGVbMTNdPXRbN10sZVsxNF09dFsxMV0sZVsxNV09dFsxNV0sZSk6bmV3IHl0KHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl0sdFs3XSx0WzhdLHRbOV0sdFsxMF0sdFsxMV0sdFsxMl0sdFsxM10sdFsxNF0sdFsxNV0pfTt5dC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicm90YXRpb24iLHQpLGU9WihlLGwuWkVSTyksbShpKT8oaVswXT10WzBdLGlbMV09dFsxXSxpWzJdPXRbMl0saVszXT0wLGlbNF09dFszXSxpWzVdPXRbNF0saVs2XT10WzVdLGlbN109MCxpWzhdPXRbNl0saVs5XT10WzddLGlbMTBdPXRbOF0saVsxMV09MCxpWzEyXT1lLngsaVsxM109ZS55LGlbMTRdPWUueixpWzE1XT0xLGkpOm5ldyB5dCh0WzBdLHRbM10sdFs2XSxlLngsdFsxXSx0WzRdLHRbN10sZS55LHRbMl0sdFs1XSx0WzhdLGUueiwwLDAsMCwxKX07eXQuZnJvbVRyYW5zbGF0aW9uUXVhdGVybmlvblJvdGF0aW9uU2NhbGU9ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJ0cmFuc2xhdGlvbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyb3RhdGlvbiIsZSkscC50eXBlT2Yub2JqZWN0KCJzY2FsZSIsaSksbShuKXx8KG49bmV3IHl0KTtsZXQgcz1pLngsbz1pLnkscj1pLnosYT1lLngqZS54LGg9ZS54KmUueSxBPWUueCplLnosZD1lLngqZS53LGY9ZS55KmUueSxFPWUueSplLnosXz1lLnkqZS53LFI9ZS56KmUueixJPWUueiplLncsQz1lLncqZS53LE49YS1mLVIrQyxUPTIqKGgtSSksRj0yKihBK18pLGI9MiooaCtJKSxHPS1hK2YtUitDLE09MiooRS1kKSxRPTIqKEEtXyksVT0yKihFK2QpLGs9LWEtZitSK0M7cmV0dXJuIG5bMF09TipzLG5bMV09YipzLG5bMl09USpzLG5bM109MCxuWzRdPVQqbyxuWzVdPUcqbyxuWzZdPVUqbyxuWzddPTAsbls4XT1GKnIsbls5XT1NKnIsblsxMF09aypyLG5bMTFdPTAsblsxMl09dC54LG5bMTNdPXQueSxuWzE0XT10LnosblsxNV09MSxufTt5dC5mcm9tVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlIix0KSx5dC5mcm9tVHJhbnNsYXRpb25RdWF0ZXJuaW9uUm90YXRpb25TY2FsZSh0LnRyYW5zbGF0aW9uLHQucm90YXRpb24sdC5zY2FsZSxlKX07eXQuZnJvbVRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb24iLHQpLHl0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKGx0LklERU5USVRZLHQsZSl9O3l0LmZyb21TY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNjYWxlIix0KSxtKGUpPyhlWzBdPXQueCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT10LnksZVs2XT0wLGVbN109MCxlWzhdPTAsZVs5XT0wLGVbMTBdPXQueixlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsZSk6bmV3IHl0KHQueCwwLDAsMCwwLHQueSwwLDAsMCwwLHQueiwwLDAsMCwwLDEpfTt5dC5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT10LGVbNl09MCxlWzddPTAsZVs4XT0wLGVbOV09MCxlWzEwXT10LGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSxlKTpuZXcgeXQodCwwLDAsMCwwLHQsMCwwLDAsMCx0LDAsMCwwLDAsMSl9O3l0LmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJvdGF0aW9uIix0KSxtKGUpfHwoZT1uZXcgeXQpLGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109MCxlWzRdPXRbM10sZVs1XT10WzRdLGVbNl09dFs1XSxlWzddPTAsZVs4XT10WzZdLGVbOV09dFs3XSxlWzEwXT10WzhdLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSxlfTtUbT1uZXcgbCxObT1uZXcgbCxmRT1uZXcgbDt5dC5mcm9tQ2FtZXJhPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJjYW1lcmEiLHQpO2xldCBpPXQucG9zaXRpb24sbj10LmRpcmVjdGlvbixzPXQudXA7cC50eXBlT2Yub2JqZWN0KCJjYW1lcmEucG9zaXRpb24iLGkpLHAudHlwZU9mLm9iamVjdCgiY2FtZXJhLmRpcmVjdGlvbiIsbikscC50eXBlT2Yub2JqZWN0KCJjYW1lcmEudXAiLHMpLGwubm9ybWFsaXplKG4sVG0pLGwubm9ybWFsaXplKGwuY3Jvc3MoVG0scyxObSksTm0pLGwubm9ybWFsaXplKGwuY3Jvc3MoTm0sVG0sZkUpLGZFKTtsZXQgbz1ObS54LHI9Tm0ueSxhPU5tLnosaD1UbS54LEE9VG0ueSxkPVRtLnosZj1mRS54LEU9ZkUueSxfPWZFLnosUj1pLngsST1pLnksQz1pLnosTj1vKi1SK3IqLUkrYSotQyxUPWYqLVIrRSotSStfKi1DLEY9aCpSK0EqSStkKkM7cmV0dXJuIG0oZSk/KGVbMF09byxlWzFdPWYsZVsyXT0taCxlWzNdPTAsZVs0XT1yLGVbNV09RSxlWzZdPS1BLGVbN109MCxlWzhdPWEsZVs5XT1fLGVbMTBdPS1kLGVbMTFdPTAsZVsxMl09TixlWzEzXT1ULGVbMTRdPUYsZVsxNV09MSxlKTpuZXcgeXQobyxyLGEsTixmLEUsXyxULC1oLC1BLC1kLEYsMCwwLDAsMSl9O3l0LmNvbXB1dGVQZXJzcGVjdGl2ZUZpZWxkT2ZWaWV3PWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJmb3ZZIix0LDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbigiZm92WSIsdCxNYXRoLlBJKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oIm5lYXIiLGksMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJmYXIiLG4sMCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLHMpO2xldCByPTEvTWF0aC50YW4odCouNSksYT1yL2UsaD0obitpKS8oaS1uKSxBPTIqbippLyhpLW4pO3JldHVybiBzWzBdPWEsc1sxXT0wLHNbMl09MCxzWzNdPTAsc1s0XT0wLHNbNV09cixzWzZdPTAsc1s3XT0wLHNbOF09MCxzWzldPTAsc1sxMF09aCxzWzExXT0tMSxzWzEyXT0wLHNbMTNdPTAsc1sxNF09QSxzWzE1XT0wLHN9O3l0LmNvbXB1dGVPcnRob2dyYXBoaWNPZmZDZW50ZXI9ZnVuY3Rpb24odCxlLGksbixzLG8scil7cC50eXBlT2YubnVtYmVyKCJsZWZ0Iix0KSxwLnR5cGVPZi5udW1iZXIoInJpZ2h0IixlKSxwLnR5cGVPZi5udW1iZXIoImJvdHRvbSIsaSkscC50eXBlT2YubnVtYmVyKCJ0b3AiLG4pLHAudHlwZU9mLm51bWJlcigibmVhciIscykscC50eXBlT2YubnVtYmVyKCJmYXIiLG8pLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixyKTtsZXQgYT0xLyhlLXQpLGg9MS8obi1pKSxBPTEvKG8tcyksZD0tKGUrdCkqYSxmPS0obitpKSpoLEU9LShvK3MpKkE7cmV0dXJuIGEqPTIsaCo9MixBKj0tMixyWzBdPWEsclsxXT0wLHJbMl09MCxyWzNdPTAscls0XT0wLHJbNV09aCxyWzZdPTAscls3XT0wLHJbOF09MCxyWzldPTAsclsxMF09QSxyWzExXT0wLHJbMTJdPWQsclsxM109ZixyWzE0XT1FLHJbMTVdPTEscn07eXQuY29tcHV0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe3AudHlwZU9mLm51bWJlcigibGVmdCIsdCkscC50eXBlT2YubnVtYmVyKCJyaWdodCIsZSkscC50eXBlT2YubnVtYmVyKCJib3R0b20iLGkpLHAudHlwZU9mLm51bWJlcigidG9wIixuKSxwLnR5cGVPZi5udW1iZXIoIm5lYXIiLHMpLHAudHlwZU9mLm51bWJlcigiZmFyIixvKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIscik7bGV0IGE9MipzLyhlLXQpLGg9MipzLyhuLWkpLEE9KGUrdCkvKGUtdCksZD0obitpKS8obi1pKSxmPS0obytzKS8oby1zKSxFPS0xLF89LTIqbypzLyhvLXMpO3JldHVybiByWzBdPWEsclsxXT0wLHJbMl09MCxyWzNdPTAscls0XT0wLHJbNV09aCxyWzZdPTAscls3XT0wLHJbOF09QSxyWzldPWQsclsxMF09ZixyWzExXT1FLHJbMTJdPTAsclsxM109MCxyWzE0XT1fLHJbMTVdPTAscn07eXQuY29tcHV0ZUluZmluaXRlUGVyc3BlY3RpdmVPZmZDZW50ZXI9ZnVuY3Rpb24odCxlLGksbixzLG8pe3AudHlwZU9mLm51bWJlcigibGVmdCIsdCkscC50eXBlT2YubnVtYmVyKCJyaWdodCIsZSkscC50eXBlT2YubnVtYmVyKCJib3R0b20iLGkpLHAudHlwZU9mLm51bWJlcigidG9wIixuKSxwLnR5cGVPZi5udW1iZXIoIm5lYXIiLHMpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKTtsZXQgcj0yKnMvKGUtdCksYT0yKnMvKG4taSksaD0oZSt0KS8oZS10KSxBPShuK2kpLyhuLWkpLGQ9LTEsZj0tMSxFPS0yKnM7cmV0dXJuIG9bMF09cixvWzFdPTAsb1syXT0wLG9bM109MCxvWzRdPTAsb1s1XT1hLG9bNl09MCxvWzddPTAsb1s4XT1oLG9bOV09QSxvWzEwXT1kLG9bMTFdPWYsb1sxMl09MCxvWzEzXT0wLG9bMTRdPUUsb1sxNV09MCxvfTt5dC5jb21wdXRlVmlld3BvcnRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSxuKXttKG4pfHwobj1uZXcgeXQpLHQ9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgcz1aKHQueCwwKSxvPVoodC55LDApLHI9Wih0LndpZHRoLDApLGE9Wih0LmhlaWdodCwwKTtlPVooZSwwKSxpPVooaSwxKTtsZXQgaD1yKi41LEE9YSouNSxkPShpLWUpKi41LGY9aCxFPUEsXz1kLFI9cytoLEk9bytBLEM9ZStkLE49MTtyZXR1cm4gblswXT1mLG5bMV09MCxuWzJdPTAsblszXT0wLG5bNF09MCxuWzVdPUUsbls2XT0wLG5bN109MCxuWzhdPTAsbls5XT0wLG5bMTBdPV8sblsxMV09MCxuWzEyXT1SLG5bMTNdPUksblsxNF09QyxuWzE1XT1OLG59O3l0LmNvbXB1dGVWaWV3PWZ1bmN0aW9uKHQsZSxpLG4scyl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicG9zaXRpb24iLHQpLHAudHlwZU9mLm9iamVjdCgiZGlyZWN0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInVwIixpKSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixuKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIscyksc1swXT1uLngsc1sxXT1pLngsc1syXT0tZS54LHNbM109MCxzWzRdPW4ueSxzWzVdPWkueSxzWzZdPS1lLnksc1s3XT0wLHNbOF09bi56LHNbOV09aS56LHNbMTBdPS1lLnosc1sxMV09MCxzWzEyXT0tbC5kb3Qobix0KSxzWzEzXT0tbC5kb3QoaSx0KSxzWzE0XT1sLmRvdChlLHQpLHNbMTVdPTEsc307eXQudG9BcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdLHRbN10sdFs4XSx0WzldLHRbMTBdLHRbMTFdLHRbMTJdLHRbMTNdLHRbMTRdLHRbMTVdXX07eXQuZ2V0RWxlbWVudEluZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJyb3ciLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoInJvdyIsZSwzKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiY29sdW1uIix0LDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMyksdCo0K2V9O3l0LmdldENvbHVtbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPWUqNCxzPXRbbl0sbz10W24rMV0scj10W24rMl0sYT10W24rM107cmV0dXJuIGkueD1zLGkueT1vLGkuej1yLGkudz1hLGl9O3l0LnNldENvbHVtbj1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwzKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49eXQuY2xvbmUodCxuKTtsZXQgcz1lKjQ7cmV0dXJuIG5bc109aS54LG5bcysxXT1pLnksbltzKzJdPWkueixuW3MrM109aS53LG59O3l0LmdldFJvdz1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXRbZV0scz10W2UrNF0sbz10W2UrOF0scj10W2UrMTJdO3JldHVybiBpLng9bixpLnk9cyxpLno9byxpLnc9cixpfTt5dC5zZXRSb3c9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDMpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbj15dC5jbG9uZSh0LG4pLG5bZV09aS54LG5bZSs0XT1pLnksbltlKzhdPWkueixuW2UrMTJdPWkudyxufTt5dC5zZXRUcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInRyYW5zbGF0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdLGlbMV09dFsxXSxpWzJdPXRbMl0saVszXT10WzNdLGlbNF09dFs0XSxpWzVdPXRbNV0saVs2XT10WzZdLGlbN109dFs3XSxpWzhdPXRbOF0saVs5XT10WzldLGlbMTBdPXRbMTBdLGlbMTFdPXRbMTFdLGlbMTJdPWUueCxpWzEzXT1lLnksaVsxNF09ZS56LGlbMTVdPXRbMTVdLGl9O2E5PW5ldyBsO3l0LnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXl0LmdldFNjYWxlKHQsYTkpLHM9ZS54L24ueCxvPWUueS9uLnkscj1lLnovbi56O3JldHVybiBpWzBdPXRbMF0qcyxpWzFdPXRbMV0qcyxpWzJdPXRbMl0qcyxpWzNdPXRbM10saVs0XT10WzRdKm8saVs1XT10WzVdKm8saVs2XT10WzZdKm8saVs3XT10WzddLGlbOF09dFs4XSpyLGlbOV09dFs5XSpyLGlbMTBdPXRbMTBdKnIsaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07QTk9bmV3IGw7eXQuc2V0VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXl0LmdldFNjYWxlKHQsQTkpLHM9ZS9uLngsbz1lL24ueSxyPWUvbi56O3JldHVybiBpWzBdPXRbMF0qcyxpWzFdPXRbMV0qcyxpWzJdPXRbMl0qcyxpWzNdPXRbM10saVs0XT10WzRdKm8saVs1XT10WzVdKm8saVs2XT10WzZdKm8saVs3XT10WzddLGlbOF09dFs4XSpyLGlbOV09dFs5XSpyLGlbMTBdPXRbMTBdKnIsaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07RjA9bmV3IGw7eXQuZ2V0U2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFswXSx0WzFdLHRbMl0sRjApKSxlLnk9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFs0XSx0WzVdLHRbNl0sRjApKSxlLno9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFs4XSx0WzldLHRbMTBdLEYwKSksZX07ZjI9bmV3IGw7eXQuZ2V0TWF4aW11bVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB5dC5nZXRTY2FsZSh0LGYyKSxsLm1heGltdW1Db21wb25lbnQoZjIpfTtoOT1uZXcgbDt5dC5zZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj15dC5nZXRTY2FsZSh0LGg5KTtyZXR1cm4gaVswXT1lWzBdKm4ueCxpWzFdPWVbMV0qbi54LGlbMl09ZVsyXSpuLngsaVszXT10WzNdLGlbNF09ZVszXSpuLnksaVs1XT1lWzRdKm4ueSxpWzZdPWVbNV0qbi55LGlbN109dFs3XSxpWzhdPWVbNl0qbi56LGlbOV09ZVs3XSpuLnosaVsxMF09ZVs4XSpuLnosaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07Yzk9bmV3IGw7eXQuZ2V0Um90YXRpb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXl0LmdldFNjYWxlKHQsYzkpO3JldHVybiBlWzBdPXRbMF0vaS54LGVbMV09dFsxXS9pLngsZVsyXT10WzJdL2kueCxlWzNdPXRbNF0vaS55LGVbNF09dFs1XS9pLnksZVs1XT10WzZdL2kueSxlWzZdPXRbOF0vaS56LGVbN109dFs5XS9pLnosZVs4XT10WzEwXS9pLnosZX07eXQubXVsdGlwbHk9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXRbMF0scz10WzFdLG89dFsyXSxyPXRbM10sYT10WzRdLGg9dFs1XSxBPXRbNl0sZD10WzddLGY9dFs4XSxFPXRbOV0sXz10WzEwXSxSPXRbMTFdLEk9dFsxMl0sQz10WzEzXSxOPXRbMTRdLFQ9dFsxNV0sRj1lWzBdLGI9ZVsxXSxHPWVbMl0sTT1lWzNdLFE9ZVs0XSxVPWVbNV0saz1lWzZdLHk9ZVs3XSxjPWVbOF0sZz1lWzldLFY9ZVsxMF0sRD1lWzExXSx3PWVbMTJdLHg9ZVsxM10sSD1lWzE0XSxqPWVbMTVdLFg9bipGK2EqYitmKkcrSSpNLHR0PXMqRitoKmIrRSpHK0MqTSxCPW8qRitBKmIrXypHK04qTSxJdD1yKkYrZCpiK1IqRytUKk0sZ3Q9bipRK2EqVStmKmsrSSp5LFl0PXMqUStoKlUrRSprK0MqeSxNdD1vKlErQSpVK18qaytOKnksQ3Q9cipRK2QqVStSKmsrVCp5LHp0PW4qYythKmcrZipWK0kqRCxrdD1zKmMraCpnK0UqVitDKkQsSnQ9bypjK0EqZytfKlYrTipELFd0PXIqYytkKmcrUipWK1QqRCxGdD1uKncrYSp4K2YqSCtJKmosZWU9cyp3K2gqeCtFKkgrQypqLGNlPW8qdytBKngrXypIK04qaixqZT1yKncrZCp4K1IqSCtUKmo7cmV0dXJuIGlbMF09WCxpWzFdPXR0LGlbMl09QixpWzNdPUl0LGlbNF09Z3QsaVs1XT1ZdCxpWzZdPU10LGlbN109Q3QsaVs4XT16dCxpWzldPWt0LGlbMTBdPUp0LGlbMTFdPVd0LGlbMTJdPUZ0LGlbMTNdPWVlLGlbMTRdPWNlLGlbMTVdPWplLGl9O3l0LmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGlbMF09dFswXStlWzBdLGlbMV09dFsxXStlWzFdLGlbMl09dFsyXStlWzJdLGlbM109dFszXStlWzNdLGlbNF09dFs0XStlWzRdLGlbNV09dFs1XStlWzVdLGlbNl09dFs2XStlWzZdLGlbN109dFs3XStlWzddLGlbOF09dFs4XStlWzhdLGlbOV09dFs5XStlWzldLGlbMTBdPXRbMTBdK2VbMTBdLGlbMTFdPXRbMTFdK2VbMTFdLGlbMTJdPXRbMTJdK2VbMTJdLGlbMTNdPXRbMTNdK2VbMTNdLGlbMTRdPXRbMTRdK2VbMTRdLGlbMTVdPXRbMTVdK2VbMTVdLGl9O3l0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdLWVbMF0saVsxXT10WzFdLWVbMV0saVsyXT10WzJdLWVbMl0saVszXT10WzNdLWVbM10saVs0XT10WzRdLWVbNF0saVs1XT10WzVdLWVbNV0saVs2XT10WzZdLWVbNl0saVs3XT10WzddLWVbN10saVs4XT10WzhdLWVbOF0saVs5XT10WzldLWVbOV0saVsxMF09dFsxMF0tZVsxMF0saVsxMV09dFsxMV0tZVsxMV0saVsxMl09dFsxMl0tZVsxMl0saVsxM109dFsxM10tZVsxM10saVsxNF09dFsxNF0tZVsxNF0saVsxNV09dFsxNV0tZVsxNV0saX07eXQubXVsdGlwbHlUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFswXSxzPXRbMV0sbz10WzJdLHI9dFs0XSxhPXRbNV0saD10WzZdLEE9dFs4XSxkPXRbOV0sZj10WzEwXSxFPXRbMTJdLF89dFsxM10sUj10WzE0XSxJPWVbMF0sQz1lWzFdLE49ZVsyXSxUPWVbNF0sRj1lWzVdLGI9ZVs2XSxHPWVbOF0sTT1lWzldLFE9ZVsxMF0sVT1lWzEyXSxrPWVbMTNdLHk9ZVsxNF0sYz1uKkkrcipDK0EqTixnPXMqSSthKkMrZCpOLFY9bypJK2gqQytmKk4sRD1uKlQrcipGK0EqYix3PXMqVCthKkYrZCpiLHg9bypUK2gqRitmKmIsSD1uKkcrcipNK0EqUSxqPXMqRythKk0rZCpRLFg9bypHK2gqTStmKlEsdHQ9bipVK3IqaytBKnkrRSxCPXMqVSthKmsrZCp5K18sSXQ9bypVK2gqaytmKnkrUjtyZXR1cm4gaVswXT1jLGlbMV09ZyxpWzJdPVYsaVszXT0wLGlbNF09RCxpWzVdPXcsaVs2XT14LGlbN109MCxpWzhdPUgsaVs5XT1qLGlbMTBdPVgsaVsxMV09MCxpWzEyXT10dCxpWzEzXT1CLGlbMTRdPUl0LGlbMTVdPTEsaX07eXQubXVsdGlwbHlCeU1hdHJpeDM9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJvdGF0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFswXSxzPXRbMV0sbz10WzJdLHI9dFs0XSxhPXRbNV0saD10WzZdLEE9dFs4XSxkPXRbOV0sZj10WzEwXSxFPWVbMF0sXz1lWzFdLFI9ZVsyXSxJPWVbM10sQz1lWzRdLE49ZVs1XSxUPWVbNl0sRj1lWzddLGI9ZVs4XSxHPW4qRStyKl8rQSpSLE09cypFK2EqXytkKlIsUT1vKkUraCpfK2YqUixVPW4qSStyKkMrQSpOLGs9cypJK2EqQytkKk4seT1vKkkraCpDK2YqTixjPW4qVCtyKkYrQSpiLGc9cypUK2EqRitkKmIsVj1vKlQraCpGK2YqYjtyZXR1cm4gaVswXT1HLGlbMV09TSxpWzJdPVEsaVszXT0wLGlbNF09VSxpWzVdPWssaVs2XT15LGlbN109MCxpWzhdPWMsaVs5XT1nLGlbMTBdPVYsaVsxMV09MCxpWzEyXT10WzEyXSxpWzEzXT10WzEzXSxpWzE0XT10WzE0XSxpWzE1XT10WzE1XSxpfTt5dC5tdWx0aXBseUJ5VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInRyYW5zbGF0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9bip0WzBdK3MqdFs0XStvKnRbOF0rdFsxMl0sYT1uKnRbMV0rcyp0WzVdK28qdFs5XSt0WzEzXSxoPW4qdFsyXStzKnRbNl0rbyp0WzEwXSt0WzE0XTtyZXR1cm4gaVswXT10WzBdLGlbMV09dFsxXSxpWzJdPXRbMl0saVszXT10WzNdLGlbNF09dFs0XSxpWzVdPXRbNV0saVs2XT10WzZdLGlbN109dFs3XSxpWzhdPXRbOF0saVs5XT10WzldLGlbMTBdPXRbMTBdLGlbMTFdPXRbMTFdLGlbMTJdPXIsaVsxM109YSxpWzE0XT1oLGlbMTVdPXRbMTVdLGl9O3l0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1lLngscz1lLnksbz1lLno7cmV0dXJuIG49PT0xJiZzPT09MSYmbz09PTE/eXQuY2xvbmUodCxpKTooaVswXT1uKnRbMF0saVsxXT1uKnRbMV0saVsyXT1uKnRbMl0saVszXT10WzNdLGlbNF09cyp0WzRdLGlbNV09cyp0WzVdLGlbNl09cyp0WzZdLGlbN109dFs3XSxpWzhdPW8qdFs4XSxpWzldPW8qdFs5XSxpWzEwXT1vKnRbMTBdLGlbMTFdPXRbMTFdLGlbMTJdPXRbMTJdLGlbMTNdPXRbMTNdLGlbMTRdPXRbMTRdLGlbMTVdPXRbMTVdLGkpfTt5dC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZSxpWzFdPXRbMV0qZSxpWzJdPXRbMl0qZSxpWzNdPXRbM10saVs0XT10WzRdKmUsaVs1XT10WzVdKmUsaVs2XT10WzZdKmUsaVs3XT10WzddLGlbOF09dFs4XSplLGlbOV09dFs5XSplLGlbMTBdPXRbMTBdKmUsaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07eXQubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9ZS53LGE9dFswXSpuK3RbNF0qcyt0WzhdKm8rdFsxMl0qcixoPXRbMV0qbit0WzVdKnMrdFs5XSpvK3RbMTNdKnIsQT10WzJdKm4rdFs2XSpzK3RbMTBdKm8rdFsxNF0qcixkPXRbM10qbit0WzddKnMrdFsxMV0qbyt0WzE1XSpyO3JldHVybiBpLng9YSxpLnk9aCxpLno9QSxpLnc9ZCxpfTt5dC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9dFswXSpuK3RbNF0qcyt0WzhdKm8sYT10WzFdKm4rdFs1XSpzK3RbOV0qbyxoPXRbMl0qbit0WzZdKnMrdFsxMF0qbztyZXR1cm4gaS54PXIsaS55PWEsaS56PWgsaX07eXQubXVsdGlwbHlCeVBvaW50PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1lLngscz1lLnksbz1lLnoscj10WzBdKm4rdFs0XSpzK3RbOF0qbyt0WzEyXSxhPXRbMV0qbit0WzVdKnMrdFs5XSpvK3RbMTNdLGg9dFsyXSpuK3RbNl0qcyt0WzEwXSpvK3RbMTRdO3JldHVybiBpLng9cixpLnk9YSxpLno9aCxpfTt5dC5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdKmUsaVsxXT10WzFdKmUsaVsyXT10WzJdKmUsaVszXT10WzNdKmUsaVs0XT10WzRdKmUsaVs1XT10WzVdKmUsaVs2XT10WzZdKmUsaVs3XT10WzddKmUsaVs4XT10WzhdKmUsaVs5XT10WzldKmUsaVsxMF09dFsxMF0qZSxpWzExXT10WzExXSplLGlbMTJdPXRbMTJdKmUsaVsxM109dFsxM10qZSxpWzE0XT10WzE0XSplLGlbMTVdPXRbMTVdKmUsaX07eXQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT0tdFswXSxlWzFdPS10WzFdLGVbMl09LXRbMl0sZVszXT0tdFszXSxlWzRdPS10WzRdLGVbNV09LXRbNV0sZVs2XT0tdFs2XSxlWzddPS10WzddLGVbOF09LXRbOF0sZVs5XT0tdFs5XSxlWzEwXT0tdFsxMF0sZVsxMV09LXRbMTFdLGVbMTJdPS10WzEyXSxlWzEzXT0tdFsxM10sZVsxNF09LXRbMTRdLGVbMTVdPS10WzE1XSxlfTt5dC50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXRbMV0sbj10WzJdLHM9dFszXSxvPXRbNl0scj10WzddLGE9dFsxMV07cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbNF0sZVsyXT10WzhdLGVbM109dFsxMl0sZVs0XT1pLGVbNV09dFs1XSxlWzZdPXRbOV0sZVs3XT10WzEzXSxlWzhdPW4sZVs5XT1vLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTRdLGVbMTJdPXMsZVsxM109cixlWzE0XT1hLGVbMTVdPXRbMTVdLGV9O3l0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09TWF0aC5hYnModFswXSksZVsxXT1NYXRoLmFicyh0WzFdKSxlWzJdPU1hdGguYWJzKHRbMl0pLGVbM109TWF0aC5hYnModFszXSksZVs0XT1NYXRoLmFicyh0WzRdKSxlWzVdPU1hdGguYWJzKHRbNV0pLGVbNl09TWF0aC5hYnModFs2XSksZVs3XT1NYXRoLmFicyh0WzddKSxlWzhdPU1hdGguYWJzKHRbOF0pLGVbOV09TWF0aC5hYnModFs5XSksZVsxMF09TWF0aC5hYnModFsxMF0pLGVbMTFdPU1hdGguYWJzKHRbMTFdKSxlWzEyXT1NYXRoLmFicyh0WzEyXSksZVsxM109TWF0aC5hYnModFsxM10pLGVbMTRdPU1hdGguYWJzKHRbMTRdKSxlWzE1XT1NYXRoLmFicyh0WzE1XSksZX07eXQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzEyXT09PWVbMTJdJiZ0WzEzXT09PWVbMTNdJiZ0WzE0XT09PWVbMTRdJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzRdPT09ZVs0XSYmdFs1XT09PWVbNV0mJnRbNl09PT1lWzZdJiZ0WzhdPT09ZVs4XSYmdFs5XT09PWVbOV0mJnRbMTBdPT09ZVsxMF0mJnRbM109PT1lWzNdJiZ0WzddPT09ZVs3XSYmdFsxMV09PT1lWzExXSYmdFsxNV09PT1lWzE1XX07eXQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGk9WihpLDApLHQ9PT1lfHxtKHQpJiZtKGUpJiZNYXRoLmFicyh0WzBdLWVbMF0pPD1pJiZNYXRoLmFicyh0WzFdLWVbMV0pPD1pJiZNYXRoLmFicyh0WzJdLWVbMl0pPD1pJiZNYXRoLmFicyh0WzNdLWVbM10pPD1pJiZNYXRoLmFicyh0WzRdLWVbNF0pPD1pJiZNYXRoLmFicyh0WzVdLWVbNV0pPD1pJiZNYXRoLmFicyh0WzZdLWVbNl0pPD1pJiZNYXRoLmFicyh0WzddLWVbN10pPD1pJiZNYXRoLmFicyh0WzhdLWVbOF0pPD1pJiZNYXRoLmFicyh0WzldLWVbOV0pPD1pJiZNYXRoLmFicyh0WzEwXS1lWzEwXSk8PWkmJk1hdGguYWJzKHRbMTFdLWVbMTFdKTw9aSYmTWF0aC5hYnModFsxMl0tZVsxMl0pPD1pJiZNYXRoLmFicyh0WzEzXS1lWzEzXSk8PWkmJk1hdGguYWJzKHRbMTRdLWVbMTRdKTw9aSYmTWF0aC5hYnModFsxNV0tZVsxNV0pPD1pfTt5dC5nZXRUcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD10WzEyXSxlLnk9dFsxM10sZS56PXRbMTRdLGV9O3l0LmdldE1hdHJpeDM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbNF0sZVs0XT10WzVdLGVbNV09dFs2XSxlWzZdPXRbOF0sZVs3XT10WzldLGVbOF09dFsxMF0sZX07bDk9bmV3IGx0LGQ5PW5ldyBsdCxtOT1uZXcgaWUsZjk9bmV3IGllKDAsMCwwLDEpO3l0LmludmVyc2U9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXRbMF0sbj10WzRdLHM9dFs4XSxvPXRbMTJdLHI9dFsxXSxhPXRbNV0saD10WzldLEE9dFsxM10sZD10WzJdLGY9dFs2XSxFPXRbMTBdLF89dFsxNF0sUj10WzNdLEk9dFs3XSxDPXRbMTFdLE49dFsxNV0sVD1FKk4sRj1fKkMsYj1mKk4sRz1fKkksTT1mKkMsUT1FKkksVT1kKk4saz1fKlIseT1kKkMsYz1FKlIsZz1kKkksVj1mKlIsRD1UKmErRypoK00qQS0oRiphK2IqaCtRKkEpLHc9RipyK1UqaCtjKkEtKFQqcitrKmgreSpBKSx4PWIqcitrKmErZypBLShHKnIrVSphK1YqQSksSD1RKnIreSphK1YqaC0oTSpyK2MqYStnKmgpLGo9RipuK2IqcytRKm8tKFQqbitHKnMrTSpvKSxYPVQqaStrKnMreSpvLShGKmkrVSpzK2MqbyksdHQ9RyppK1UqbitWKm8tKGIqaStrKm4rZypvKSxCPU0qaStjKm4rZypzLShRKmkreSpuK1Yqcyk7VD1zKkEsRj1vKmgsYj1uKkEsRz1vKmEsTT1uKmgsUT1zKmEsVT1pKkEsaz1vKnIseT1pKmgsYz1zKnIsZz1pKmEsVj1uKnI7bGV0IEl0PVQqSStHKkMrTSpOLShGKkkrYipDK1EqTiksZ3Q9RipSK1UqQytjKk4tKFQqUitrKkMreSpOKSxZdD1iKlIraypJK2cqTi0oRypSK1UqSStWKk4pLE10PVEqUit5KkkrVipDLShNKlIrYypJK2cqQyksQ3Q9YipFK1EqXytGKmYtKE0qXytUKmYrRypFKSx6dD15Kl8rVCpkK2sqRS0oVSpFK2MqXytGKmQpLGt0PVUqZitWKl8rRypkLShnKl8rYipkK2sqZiksSnQ9ZypFK00qZCtjKmYtKHkqZitWKkUrUSpkKSxXdD1pKkQrbip3K3MqeCtvKkg7aWYoTWF0aC5hYnMoV3QpPEwuRVBTSUxPTjIxKXtpZihsdC5lcXVhbHNFcHNpbG9uKHl0LmdldE1hdHJpeDModCxsOSksZDksTC5FUFNJTE9ONykmJmllLmVxdWFscyh5dC5nZXRSb3codCwzLG05KSxmOSkpcmV0dXJuIGVbMF09MCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0wLGVbOV09MCxlWzEwXT0wLGVbMTFdPTAsZVsxMl09LXRbMTJdLGVbMTNdPS10WzEzXSxlWzE0XT0tdFsxNF0sZVsxNV09MSxlO3Rocm93IG5ldyBrZSgibWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIGJlY2F1c2UgaXRzIGRldGVybWluYXRlIGlzIHplcm8uIil9cmV0dXJuIFd0PTEvV3QsZVswXT1EKld0LGVbMV09dypXdCxlWzJdPXgqV3QsZVszXT1IKld0LGVbNF09aipXdCxlWzVdPVgqV3QsZVs2XT10dCpXdCxlWzddPUIqV3QsZVs4XT1JdCpXdCxlWzldPWd0Kld0LGVbMTBdPVl0Kld0LGVbMTFdPU10Kld0LGVbMTJdPUN0Kld0LGVbMTNdPXp0Kld0LGVbMTRdPWt0Kld0LGVbMTVdPUp0Kld0LGV9O3l0LmludmVyc2VUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9dFswXSxuPXRbMV0scz10WzJdLG89dFs0XSxyPXRbNV0sYT10WzZdLGg9dFs4XSxBPXRbOV0sZD10WzEwXSxmPXRbMTJdLEU9dFsxM10sXz10WzE0XSxSPS1pKmYtbipFLXMqXyxJPS1vKmYtcipFLWEqXyxDPS1oKmYtQSpFLWQqXztyZXR1cm4gZVswXT1pLGVbMV09byxlWzJdPWgsZVszXT0wLGVbNF09bixlWzVdPXIsZVs2XT1BLGVbN109MCxlWzhdPXMsZVs5XT1hLGVbMTBdPWQsZVsxMV09MCxlWzEyXT1SLGVbMTNdPUksZVsxNF09QyxlWzE1XT0xLGV9O0U5PW5ldyB5dDt5dC5pbnZlcnNlVHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSkseXQuaW52ZXJzZSh5dC50cmFuc3Bvc2UodCxFOSksZSl9O3l0LklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IHl0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpKTt5dC5aRVJPPU9iamVjdC5mcmVlemUobmV3IHl0KDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDApKTt5dC5DT0xVTU4wUk9XMD0wO3l0LkNPTFVNTjBST1cxPTE7eXQuQ09MVU1OMFJPVzI9Mjt5dC5DT0xVTU4wUk9XMz0zO3l0LkNPTFVNTjFST1cwPTQ7eXQuQ09MVU1OMVJPVzE9NTt5dC5DT0xVTU4xUk9XMj02O3l0LkNPTFVNTjFST1czPTc7eXQuQ09MVU1OMlJPVzA9ODt5dC5DT0xVTU4yUk9XMT05O3l0LkNPTFVNTjJST1cyPTEwO3l0LkNPTFVNTjJST1czPTExO3l0LkNPTFVNTjNST1cwPTEyO3l0LkNPTFVNTjNST1cxPTEzO3l0LkNPTFVNTjNST1cyPTE0O3l0LkNPTFVNTjNST1czPTE1O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHl0LnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geXQucGFja2VkTGVuZ3RofX19KTt5dC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHl0LmNsb25lKHRoaXMsdCl9O3l0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHl0LmVxdWFscyh0aGlzLHQpfTt5dC5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRbMF09PT1lW2ldJiZ0WzFdPT09ZVtpKzFdJiZ0WzJdPT09ZVtpKzJdJiZ0WzNdPT09ZVtpKzNdJiZ0WzRdPT09ZVtpKzRdJiZ0WzVdPT09ZVtpKzVdJiZ0WzZdPT09ZVtpKzZdJiZ0WzddPT09ZVtpKzddJiZ0WzhdPT09ZVtpKzhdJiZ0WzldPT09ZVtpKzldJiZ0WzEwXT09PWVbaSsxMF0mJnRbMTFdPT09ZVtpKzExXSYmdFsxMl09PT1lW2krMTJdJiZ0WzEzXT09PWVbaSsxM10mJnRbMTRdPT09ZVtpKzE0XSYmdFsxNV09PT1lW2krMTVdfTt5dC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiB5dC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07eXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXNbMF19LCAke3RoaXNbNF19LCAke3RoaXNbOF19LCAke3RoaXNbMTJdfSkKKCR7dGhpc1sxXX0sICR7dGhpc1s1XX0sICR7dGhpc1s5XX0sICR7dGhpc1sxM119KQooJHt0aGlzWzJdfSwgJHt0aGlzWzZdfSwgJHt0aGlzWzEwXX0sICR7dGhpc1sxNF19KQooJHt0aGlzWzNdfSwgJHt0aGlzWzddfSwgJHt0aGlzWzExXX0sICR7dGhpc1sxNV19KWB9O2F0PXl0fSk7dmFyIHJjLGlzLHFvLEUyLF8yPU8oKCk9PnttdCgpO2lzPXtyZXF1ZXN0RnVsbHNjcmVlbjp2b2lkIDAsZXhpdEZ1bGxzY3JlZW46dm9pZCAwLGZ1bGxzY3JlZW5FbmFibGVkOnZvaWQgMCxmdWxsc2NyZWVuRWxlbWVudDp2b2lkIDAsZnVsbHNjcmVlbmNoYW5nZTp2b2lkIDAsZnVsbHNjcmVlbmVycm9yOnZvaWQgMH0scW89e307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocW8se2VsZW1lbnQ6e2dldDpmdW5jdGlvbigpe2lmKHFvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBkb2N1bWVudFtpcy5mdWxsc2NyZWVuRWxlbWVudF19fSxjaGFuZ2VFdmVudE5hbWU6e2dldDpmdW5jdGlvbigpe2lmKHFvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBpcy5mdWxsc2NyZWVuY2hhbmdlfX0sZXJyb3JFdmVudE5hbWU6e2dldDpmdW5jdGlvbigpe2lmKHFvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBpcy5mdWxsc2NyZWVuZXJyb3J9fSxlbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtpZihxby5zdXBwb3J0c0Z1bGxzY3JlZW4oKSlyZXR1cm4gZG9jdW1lbnRbaXMuZnVsbHNjcmVlbkVuYWJsZWRdfX0sZnVsbHNjcmVlbjp7Z2V0OmZ1bmN0aW9uKCl7aWYocW8uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIHFvLmVsZW1lbnQhPT1udWxsfX19KTtxby5zdXBwb3J0c0Z1bGxzY3JlZW49ZnVuY3Rpb24oKXtpZihtKHJjKSlyZXR1cm4gcmM7cmM9ITE7bGV0IHQ9ZG9jdW1lbnQuYm9keTtpZih0eXBlb2YgdC5yZXF1ZXN0RnVsbHNjcmVlbj09ImZ1bmN0aW9uIilyZXR1cm4gaXMucmVxdWVzdEZ1bGxzY3JlZW49InJlcXVlc3RGdWxsc2NyZWVuIixpcy5leGl0RnVsbHNjcmVlbj0iZXhpdEZ1bGxzY3JlZW4iLGlzLmZ1bGxzY3JlZW5FbmFibGVkPSJmdWxsc2NyZWVuRW5hYmxlZCIsaXMuZnVsbHNjcmVlbkVsZW1lbnQ9ImZ1bGxzY3JlZW5FbGVtZW50Iixpcy5mdWxsc2NyZWVuY2hhbmdlPSJmdWxsc2NyZWVuY2hhbmdlIixpcy5mdWxsc2NyZWVuZXJyb3I9ImZ1bGxzY3JlZW5lcnJvciIscmM9ITAscmM7bGV0IGU9WyJ3ZWJraXQiLCJtb3oiLCJvIiwibXMiLCJraHRtbCJdLGk7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7KytuKXtsZXQgbz1lW25dO2k9YCR7b31SZXF1ZXN0RnVsbHNjcmVlbmAsdHlwZW9mIHRbaV09PSJmdW5jdGlvbiI/KGlzLnJlcXVlc3RGdWxsc2NyZWVuPWkscmM9ITApOihpPWAke299UmVxdWVzdEZ1bGxTY3JlZW5gLHR5cGVvZiB0W2ldPT0iZnVuY3Rpb24iJiYoaXMucmVxdWVzdEZ1bGxzY3JlZW49aSxyYz0hMCkpLGk9YCR7b31FeGl0RnVsbHNjcmVlbmAsdHlwZW9mIGRvY3VtZW50W2ldPT0iZnVuY3Rpb24iP2lzLmV4aXRGdWxsc2NyZWVuPWk6KGk9YCR7b31DYW5jZWxGdWxsU2NyZWVuYCx0eXBlb2YgZG9jdW1lbnRbaV09PSJmdW5jdGlvbiImJihpcy5leGl0RnVsbHNjcmVlbj1pKSksaT1gJHtvfUZ1bGxzY3JlZW5FbmFibGVkYCxkb2N1bWVudFtpXSE9PXZvaWQgMD9pcy5mdWxsc2NyZWVuRW5hYmxlZD1pOihpPWAke299RnVsbFNjcmVlbkVuYWJsZWRgLGRvY3VtZW50W2ldIT09dm9pZCAwJiYoaXMuZnVsbHNjcmVlbkVuYWJsZWQ9aSkpLGk9YCR7b31GdWxsc2NyZWVuRWxlbWVudGAsZG9jdW1lbnRbaV0hPT12b2lkIDA/aXMuZnVsbHNjcmVlbkVsZW1lbnQ9aTooaT1gJHtvfUZ1bGxTY3JlZW5FbGVtZW50YCxkb2N1bWVudFtpXSE9PXZvaWQgMCYmKGlzLmZ1bGxzY3JlZW5FbGVtZW50PWkpKSxpPWAke299ZnVsbHNjcmVlbmNoYW5nZWAsZG9jdW1lbnRbYG9uJHtpfWBdIT09dm9pZCAwJiYobz09PSJtcyImJihpPSJNU0Z1bGxzY3JlZW5DaGFuZ2UiKSxpcy5mdWxsc2NyZWVuY2hhbmdlPWkpLGk9YCR7b31mdWxsc2NyZWVuZXJyb3JgLGRvY3VtZW50W2BvbiR7aX1gXSE9PXZvaWQgMCYmKG89PT0ibXMiJiYoaT0iTVNGdWxsc2NyZWVuRXJyb3IiKSxpcy5mdWxsc2NyZWVuZXJyb3I9aSl9cmV0dXJuIHJjfTtxby5yZXF1ZXN0RnVsbHNjcmVlbj1mdW5jdGlvbih0LGUpe3FvLnN1cHBvcnRzRnVsbHNjcmVlbigpJiZ0W2lzLnJlcXVlc3RGdWxsc2NyZWVuXSh7dnJEaXNwbGF5OmV9KX07cW8uZXhpdEZ1bGxzY3JlZW49ZnVuY3Rpb24oKXtxby5zdXBwb3J0c0Z1bGxzY3JlZW4oKSYmZG9jdW1lbnRbaXMuZXhpdEZ1bGxzY3JlZW5dKCl9O3FvLl9uYW1lcz1pcztFMj1xb30pO2Z1bmN0aW9uIFpsKHQpe2xldCBlPXQuc3BsaXQoIi4iKTtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjsrK2kpZVtpXT1wYXJzZUludChlW2ldLDEwKTtyZXR1cm4gZX1mdW5jdGlvbiBCMCgpe2lmKCFtKFlaKSYmKFlaPSExLCFXWigpKSl7bGV0IHQ9LyBDaHJvbWVcLyhbXC4wLTldKykvLmV4ZWMoRW8udXNlckFnZW50KTt0IT09bnVsbCYmKFlaPSEwLFIyPVpsKHRbMV0pKX1yZXR1cm4gWVp9ZnVuY3Rpb24gXzkoKXtyZXR1cm4gQjAoKSYmUjJ9ZnVuY3Rpb24gSTIoKXtpZighbShTWikmJihTWj0hMSwhQjAoKSYmIVdaKCkmJi8gU2FmYXJpXC9bXC4wLTldKy8udGVzdChFby51c2VyQWdlbnQpKSl7bGV0IHQ9LyBWZXJzaW9uXC8oW1wuMC05XSspLy5leGVjKEVvLnVzZXJBZ2VudCk7dCE9PW51bGwmJihTWj0hMCxaMj1abCh0WzFdKSl9cmV0dXJuIFNafWZ1bmN0aW9uIFI5KCl7cmV0dXJuIEkyKCkmJloyfWZ1bmN0aW9uIHAyKCl7aWYoIW0oT1opKXtPWj0hMTtsZXQgdD0vIEFwcGxlV2ViS2l0XC8oW1wuMC05XSspKFwrPykvLmV4ZWMoRW8udXNlckFnZW50KTt0IT09bnVsbCYmKE9aPSEwLFYwPVpsKHRbMV0pLFYwLmlzTmlnaHRseT0hIXRbMl0pfXJldHVybiBPWn1mdW5jdGlvbiBaOSgpe3JldHVybiBwMigpJiZWMH1mdW5jdGlvbiB1Migpe2lmKCFtKEVFKSl7RUU9ITE7bGV0IHQ7RW8uYXBwTmFtZT09PSJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiPyh0PS9NU0lFIChbMC05XXsxLH1bXC4wLTldezAsfSkvLmV4ZWMoRW8udXNlckFnZW50KSx0IT09bnVsbCYmKEVFPSEwLEcwPVpsKHRbMV0pKSk6RW8uYXBwTmFtZT09PSJOZXRzY2FwZSImJih0PS9UcmlkZW50XC8uKnJ2OihbMC05XXsxLH1bXC4wLTldezAsfSkvLmV4ZWMoRW8udXNlckFnZW50KSx0IT09bnVsbCYmKEVFPSEwLEcwPVpsKHRbMV0pKSl9cmV0dXJuIEVFfWZ1bmN0aW9uIEk5KCl7cmV0dXJuIHUyKCkmJkcwfWZ1bmN0aW9uIFdaKCl7aWYoIW0oVlopKXtWWj0hMTtsZXQgdD0vIEVkZ1wvKFtcLjAtOV0rKS8uZXhlYyhFby51c2VyQWdlbnQpO3QhPT1udWxsJiYoVlo9ITAsQzI9WmwodFsxXSkpfXJldHVybiBWWn1mdW5jdGlvbiBwOSgpe3JldHVybiBXWigpJiZDMn1mdW5jdGlvbiBEWigpe2lmKCFtKEdaKSl7R1o9ITE7bGV0IHQ9L0ZpcmVmb3hcLyhbXC4wLTldKykvLmV4ZWMoRW8udXNlckFnZW50KTt0IT09bnVsbCYmKEdaPSEwLFcwPVpsKHRbMV0pKX1yZXR1cm4gR1p9ZnVuY3Rpb24gdTkoKXtyZXR1cm4gbShZMCl8fChZMD0vV2luZG93cy9pLnRlc3QoRW8uYXBwVmVyc2lvbikpLFkwfWZ1bmN0aW9uIEM5KCl7cmV0dXJuIG0oUzApfHwoUzA9bmF2aWdhdG9yLnBsYXRmb3JtPT09ImlQaG9uZSJ8fG5hdmlnYXRvci5wbGF0Zm9ybT09PSJpUG9kInx8bmF2aWdhdG9yLnBsYXRmb3JtPT09ImlQYWQiKSxTMH1mdW5jdGlvbiBnOSgpe3JldHVybiBEWigpJiZXMH1mdW5jdGlvbiBUOSgpe3JldHVybiBtKE8wKXx8KE8wPSFEWigpJiZ0eXBlb2YgUG9pbnRlckV2ZW50PCJ1IiYmKCFtKEVvLnBvaW50ZXJFbmFibGVkKXx8RW8ucG9pbnRlckVuYWJsZWQpKSxPMH1mdW5jdGlvbiBUMigpe2lmKCFtKEJaKSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO2ltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyIpO2xldCBlPXQuc3R5bGUuaW1hZ2VSZW5kZXJpbmc7Qlo9bShlKSYmZSE9PSIiLEJaJiYoZzI9ZSl9cmV0dXJuIEJafWZ1bmN0aW9uIE45KCl7cmV0dXJuIFQyKCk/ZzI6dm9pZCAwfWZ1bmN0aW9uIGZvKCl7aWYoIWZvLmluaXRpYWxpemVkKXRocm93IG5ldyBZKCJZb3UgbXVzdCBjYWxsIEZlYXR1cmVEZXRlY3Rpb24uc3VwcG9ydHNXZWJQLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGNhbGxpbmcgRmVhdHVyZURldGVjdGlvbi5zdXBwb3J0c1dlYlAiKTtyZXR1cm4gZm8uX3Jlc3VsdH12YXIgRW8sWVosUjIsU1osWjIsT1osVjAsRUUsRzAsVlosQzIsR1osVzAsWTAsUzAsTzAsZzIsQlosYm0sR3IsX28sSWw9TygoKT0+e2FlKCk7YnQoKTttdCgpO1Z0KCk7XzIoKTt0eXBlb2YgbmF2aWdhdG9yPCJ1Ij9Fbz1uYXZpZ2F0b3I6RW89e307Zm8uX3Byb21pc2U9dm9pZCAwO2ZvLl9yZXN1bHQ9dm9pZCAwO2ZvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gbShmby5fcHJvbWlzZSl8fChmby5fcHJvbWlzZT1uZXcgUHJvbWlzZSh0PT57bGV0IGU9bmV3IEltYWdlO2Uub25sb2FkPWZ1bmN0aW9uKCl7Zm8uX3Jlc3VsdD1lLndpZHRoPjAmJmUuaGVpZ2h0PjAsdChmby5fcmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7Zm8uX3Jlc3VsdD0hMSx0KGZvLl9yZXN1bHQpfSxlLnNyYz0iZGF0YTppbWFnZS93ZWJwO2Jhc2U2NCxVa2xHUmlJQUFBQlhSVUpRVmxBNElCWUFBQUF3QVFDZEFTb0JBQUVBRHNEK0phUUFBM0FBQUFBQSJ9KSksZm8uX3Byb21pc2V9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGZvLHtpbml0aWFsaXplZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0oZm8uX3Jlc3VsdCl9fX0pO2JtPVtdO3R5cGVvZiBBcnJheUJ1ZmZlcjwidSImJihibS5wdXNoKEludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZibS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZibS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgQmlnSW50NjRBcnJheTwidSImJmJtLnB1c2goQmlnSW50NjRBcnJheSksdHlwZW9mIEJpZ1VpbnQ2NEFycmF5PCJ1IiYmYm0ucHVzaChCaWdVaW50NjRBcnJheSkpO0dyPXtpc0Nocm9tZTpCMCxjaHJvbWVWZXJzaW9uOl85LGlzU2FmYXJpOkkyLHNhZmFyaVZlcnNpb246UjksaXNXZWJraXQ6cDIsd2Via2l0VmVyc2lvbjpaOSxpc0ludGVybmV0RXhwbG9yZXI6dTIsaW50ZXJuZXRFeHBsb3JlclZlcnNpb246STksaXNFZGdlOldaLGVkZ2VWZXJzaW9uOnA5LGlzRmlyZWZveDpEWixmaXJlZm94VmVyc2lvbjpnOSxpc1dpbmRvd3M6dTksaXNJUGFkT3JJT1M6QzksaGFyZHdhcmVDb25jdXJyZW5jeTpaKEVvLmhhcmR3YXJlQ29uY3VycmVuY3ksMyksc3VwcG9ydHNQb2ludGVyRXZlbnRzOlQ5LHN1cHBvcnRzSW1hZ2VSZW5kZXJpbmdQaXhlbGF0ZWQ6VDIsc3VwcG9ydHNXZWJQOmZvLGltYWdlUmVuZGVyaW5nVmFsdWU6TjksdHlwZWRBcnJheVR5cGVzOmJtfTtHci5zdXBwb3J0c0Jhc2lzPWZ1bmN0aW9uKHQpe3JldHVybiBHci5zdXBwb3J0c1dlYkFzc2VtYmx5KCkmJnQuY29udGV4dC5zdXBwb3J0c0Jhc2lzfTtHci5zdXBwb3J0c0Z1bGxzY3JlZW49ZnVuY3Rpb24oKXtyZXR1cm4gRTIuc3VwcG9ydHNGdWxsc2NyZWVuKCl9O0dyLnN1cHBvcnRzVHlwZWRBcnJheXM9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyPCJ1In07R3Iuc3VwcG9ydHNCaWdJbnQ2NEFycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ2NEFycmF5PCJ1In07R3Iuc3VwcG9ydHNCaWdVaW50NjRBcnJheT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnVWludDY0QXJyYXk8InUifTtHci5zdXBwb3J0c0JpZ0ludD1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnSW50PCJ1In07R3Iuc3VwcG9ydHNXZWJXb3JrZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBXb3JrZXI8InUifTtHci5zdXBwb3J0c1dlYkFzc2VtYmx5PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBXZWJBc3NlbWJseTwidSJ9O0dyLnN1cHBvcnRzV2ViZ2wyPWZ1bmN0aW9uKHQpe3JldHVybiBwLmRlZmluZWQoInNjZW5lIix0KSx0LmNvbnRleHQud2ViZ2wyfTtHci5zdXBwb3J0c0VzbVdlYldvcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4hRFooKXx8cGFyc2VJbnQoVzApPj0xMTR9O19vPUdyfSk7ZnVuY3Rpb24gUHQodCxlLGksbil7dGhpcy54PVoodCwwKSx0aGlzLnk9WihlLDApLHRoaXMuej1aKGksMCksdGhpcy53PVoobiwwKX12YXIgX0UsYjksRjksTjIsYjIsRDAsRjIsTVosTTAscGEsWTIsVVosVTAsUzIsUTAsazAsWTksUzksUkUsRm0sTzksTzIsUVosa1oscUEsJEEsQWUsJHM9TygoKT0+e0h0KCk7YWUoKTtidCgpO210KCk7SWwoKTtfZSgpO2RuKCk7X0U9bmV3IGw7UHQuZnJvbUF4aXNBbmdsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJheGlzIix0KSxwLnR5cGVPZi5udW1iZXIoImFuZ2xlIixlKTtsZXQgbj1lLzIscz1NYXRoLnNpbihuKTtfRT1sLm5vcm1hbGl6ZSh0LF9FKTtsZXQgbz1fRS54KnMscj1fRS55KnMsYT1fRS56KnMsaD1NYXRoLmNvcyhuKTtyZXR1cm4gbShpKT8oaS54PW8saS55PXIsaS56PWEsaS53PWgsaSk6bmV3IFB0KG8scixhLGgpfTtiOT1bMSwyLDBdLEY5PW5ldyBBcnJheSgzKTtQdC5mcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IGksbixzLG8scixhPXRbbHQuQ09MVU1OMFJPVzBdLGg9dFtsdC5DT0xVTU4xUk9XMV0sQT10W2x0LkNPTFVNTjJST1cyXSxkPWEraCtBO2lmKGQ+MClpPU1hdGguc3FydChkKzEpLHI9LjUqaSxpPS41L2ksbj0odFtsdC5DT0xVTU4xUk9XMl0tdFtsdC5DT0xVTU4yUk9XMV0pKmkscz0odFtsdC5DT0xVTU4yUk9XMF0tdFtsdC5DT0xVTU4wUk9XMl0pKmksbz0odFtsdC5DT0xVTU4wUk9XMV0tdFtsdC5DT0xVTU4xUk9XMF0pKmk7ZWxzZXtsZXQgZj1iOSxFPTA7aD5hJiYoRT0xKSxBPmEmJkE+aCYmKEU9Mik7bGV0IF89ZltFXSxSPWZbX107aT1NYXRoLnNxcnQodFtsdC5nZXRFbGVtZW50SW5kZXgoRSxFKV0tdFtsdC5nZXRFbGVtZW50SW5kZXgoXyxfKV0tdFtsdC5nZXRFbGVtZW50SW5kZXgoUixSKV0rMSk7bGV0IEk9Rjk7SVtFXT0uNSppLGk9LjUvaSxyPSh0W2x0LmdldEVsZW1lbnRJbmRleChSLF8pXS10W2x0LmdldEVsZW1lbnRJbmRleChfLFIpXSkqaSxJW19dPSh0W2x0LmdldEVsZW1lbnRJbmRleChfLEUpXSt0W2x0LmdldEVsZW1lbnRJbmRleChFLF8pXSkqaSxJW1JdPSh0W2x0LmdldEVsZW1lbnRJbmRleChSLEUpXSt0W2x0LmdldEVsZW1lbnRJbmRleChFLFIpXSkqaSxuPS1JWzBdLHM9LUlbMV0sbz0tSVsyXX1yZXR1cm4gbShlKT8oZS54PW4sZS55PXMsZS56PW8sZS53PXIsZSk6bmV3IFB0KG4scyxvLHIpfTtOMj1uZXcgUHQsYjI9bmV3IFB0LEQwPW5ldyBQdCxGMj1uZXcgUHQ7UHQuZnJvbUhlYWRpbmdQaXRjaFJvbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJoZWFkaW5nUGl0Y2hSb2xsIix0KSxGMj1QdC5mcm9tQXhpc0FuZ2xlKGwuVU5JVF9YLHQucm9sbCxOMiksRDA9UHQuZnJvbUF4aXNBbmdsZShsLlVOSVRfWSwtdC5waXRjaCxlKSxlPVB0Lm11bHRpcGx5KEQwLEYyLEQwKSxiMj1QdC5mcm9tQXhpc0FuZ2xlKGwuVU5JVF9aLC10LmhlYWRpbmcsTjIpLFB0Lm11bHRpcGx5KGIyLGUsZSl9O01aPW5ldyBsLE0wPW5ldyBsLHBhPW5ldyBQdCxZMj1uZXcgUHQsVVo9bmV3IFB0O1B0LnBhY2tlZExlbmd0aD00O1B0LnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaSsrXT10LnksZVtpKytdPXQueixlW2ldPXQudyxlfTtQdC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgUHQpLGkueD10W2VdLGkueT10W2UrMV0saS56PXRbZSsyXSxpLnc9dFtlKzNdLGl9O1B0LnBhY2tlZEludGVycG9sYXRpb25MZW5ndGg9MztQdC5jb252ZXJ0UGFja2VkQXJyYXlGb3JJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKHQsZSxpLG4pe1B0LnVucGFjayh0LGkqNCxVWiksUHQuY29uanVnYXRlKFVaLFVaKTtmb3IobGV0IHM9MCxvPWktZSsxO3M8bztzKyspe2xldCByPXMqMztQdC51bnBhY2sodCwoZStzKSo0LHBhKSxQdC5tdWx0aXBseShwYSxVWixwYSkscGEudzwwJiZQdC5uZWdhdGUocGEscGEpLFB0LmNvbXB1dGVBeGlzKHBhLE1aKTtsZXQgYT1QdC5jb21wdXRlQW5nbGUocGEpO20obil8fChuPVtdKSxuW3JdPU1aLngqYSxuW3IrMV09TVoueSphLG5bcisyXT1NWi56KmF9fTtQdC51bnBhY2tJbnRlcnBvbGF0aW9uUmVzdWx0PWZ1bmN0aW9uKHQsZSxpLG4scyl7bShzKXx8KHM9bmV3IFB0KSxsLmZyb21BcnJheSh0LDAsTTApO2xldCBvPWwubWFnbml0dWRlKE0wKTtyZXR1cm4gUHQudW5wYWNrKGUsbio0LFkyKSxvPT09MD9QdC5jbG9uZShQdC5JREVOVElUWSxwYSk6UHQuZnJvbUF4aXNBbmdsZShNMCxvLHBhKSxQdC5tdWx0aXBseShwYSxZMixzKX07UHQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS56PXQueixlLnc9dC53LGUpOm5ldyBQdCh0LngsdC55LHQueix0LncpfTtQdC5jb25qdWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PXQudyxlfTtQdC5tYWduaXR1ZGVTcXVhcmVkPWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHQueCp0LngrdC55KnQueSt0LnoqdC56K3Qudyp0Lnd9O1B0Lm1hZ25pdHVkZT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KFB0Lm1hZ25pdHVkZVNxdWFyZWQodCkpfTtQdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9MS9QdC5tYWduaXR1ZGUodCksbj10LngqaSxzPXQueSppLG89dC56Kmkscj10LncqaTtyZXR1cm4gZS54PW4sZS55PXMsZS56PW8sZS53PXIsZX07UHQuaW52ZXJzZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgaT1QdC5tYWduaXR1ZGVTcXVhcmVkKHQpO3JldHVybiBlPVB0LmNvbmp1Z2F0ZSh0LGUpLFB0Lm11bHRpcGx5QnlTY2FsYXIoZSwxL2ksZSl9O1B0LmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngrZS54LGkueT10LnkrZS55LGkuej10LnorZS56LGkudz10LncrZS53LGl9O1B0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueC1lLngsaS55PXQueS1lLnksaS56PXQuei1lLnosaS53PXQudy1lLncsaX07UHQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD0tdC54LGUueT0tdC55LGUuej0tdC56LGUudz0tdC53LGV9O1B0LmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueSt0LnoqZS56K3QudyplLnd9O1B0Lm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10Lngscz10Lnksbz10Lnoscj10LncsYT1lLngsaD1lLnksQT1lLnosZD1lLncsZj1yKmErbipkK3MqQS1vKmgsRT1yKmgtbipBK3MqZCtvKmEsXz1yKkErbipoLXMqYStvKmQsUj1yKmQtbiphLXMqaC1vKkE7cmV0dXJuIGkueD1mLGkueT1FLGkuej1fLGkudz1SLGl9O1B0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueCplLGkueT10LnkqZSxpLno9dC56KmUsaS53PXQudyplLGl9O1B0LmRpdmlkZUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngvZSxpLnk9dC55L2UsaS56PXQuei9lLGkudz10LncvZSxpfTtQdC5jb21wdXRlQXhpcz1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXQudztpZihNYXRoLmFicyhpLTEpPEwuRVBTSUxPTjZ8fE1hdGguYWJzKGkrMSk8TC5FUFNJTE9ONilyZXR1cm4gZS54PTEsZS55PWUuej0wLGU7bGV0IG49MS9NYXRoLnNxcnQoMS1pKmkpO3JldHVybiBlLng9dC54Km4sZS55PXQueSpuLGUuej10LnoqbixlfTtQdC5jb21wdXRlQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCksTWF0aC5hYnModC53LTEpPEwuRVBTSUxPTjY/MDoyKk1hdGguYWNvcyh0LncpfTtVMD1uZXcgUHQ7UHQubGVycD1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkscC50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHAudHlwZU9mLm51bWJlcigidCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLFUwPVB0Lm11bHRpcGx5QnlTY2FsYXIoZSxpLFUwKSxuPVB0Lm11bHRpcGx5QnlTY2FsYXIodCwxLWksbiksUHQuYWRkKFUwLG4sbil9O1MyPW5ldyBQdCxRMD1uZXcgUHQsazA9bmV3IFB0O1B0LnNsZXJwPWZ1bmN0aW9uKHQsZSxpLG4pe3AudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHAudHlwZU9mLm9iamVjdCgiZW5kIixlKSxwLnR5cGVPZi5udW1iZXIoInQiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgcz1QdC5kb3QodCxlKSxvPWU7aWYoczwwJiYocz0tcyxvPVMyPVB0Lm5lZ2F0ZShlLFMyKSksMS1zPEwuRVBTSUxPTjYpcmV0dXJuIFB0LmxlcnAodCxvLGksbik7bGV0IHI9TWF0aC5hY29zKHMpO3JldHVybiBRMD1QdC5tdWx0aXBseUJ5U2NhbGFyKHQsTWF0aC5zaW4oKDEtaSkqciksUTApLGswPVB0Lm11bHRpcGx5QnlTY2FsYXIobyxNYXRoLnNpbihpKnIpLGswKSxuPVB0LmFkZChRMCxrMCxuKSxQdC5tdWx0aXBseUJ5U2NhbGFyKG4sMS9NYXRoLnNpbihyKSxuKX07UHQubG9nPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9TC5hY29zQ2xhbXBlZCh0LncpLG49MDtyZXR1cm4gaSE9PTAmJihuPWkvTWF0aC5zaW4oaSkpLGwubXVsdGlwbHlCeVNjYWxhcih0LG4sZSl9O1B0LmV4cD1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9bC5tYWduaXR1ZGUodCksbj0wO3JldHVybiBpIT09MCYmKG49TWF0aC5zaW4oaSkvaSksZS54PXQueCpuLGUueT10LnkqbixlLno9dC56Km4sZS53PU1hdGguY29zKGkpLGV9O1k5PW5ldyBsLFM5PW5ldyBsLFJFPW5ldyBQdCxGbT1uZXcgUHQ7UHQuY29tcHV0ZUlubmVyUXVhZHJhbmdsZT1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInEwIix0KSxwLnR5cGVPZi5vYmplY3QoInExIixlKSxwLnR5cGVPZi5vYmplY3QoInEyIixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IHM9UHQuY29uanVnYXRlKGUsUkUpO1B0Lm11bHRpcGx5KHMsaSxGbSk7bGV0IG89UHQubG9nKEZtLFk5KTtQdC5tdWx0aXBseShzLHQsRm0pO2xldCByPVB0LmxvZyhGbSxTOSk7cmV0dXJuIGwuYWRkKG8scixvKSxsLm11bHRpcGx5QnlTY2FsYXIobywuMjUsbyksbC5uZWdhdGUobyxvKSxQdC5leHAobyxSRSksUHQubXVsdGlwbHkoZSxSRSxuKX07UHQuc3F1YWQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe3AudHlwZU9mLm9iamVjdCgicTAiLHQpLHAudHlwZU9mLm9iamVjdCgicTEiLGUpLHAudHlwZU9mLm9iamVjdCgiczAiLGkpLHAudHlwZU9mLm9iamVjdCgiczEiLG4pLHAudHlwZU9mLm51bWJlcigidCIscykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVB0LnNsZXJwKHQsZSxzLFJFKSxhPVB0LnNsZXJwKGksbixzLEZtKTtyZXR1cm4gUHQuc2xlcnAocixhLDIqcyooMS1zKSxvKX07Tzk9bmV3IFB0LE8yPTEuOTAxMTA3NDUzNTE3MzAwMyxRWj1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXSxrWj1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXSxxQT1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXSwkQT1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXTtmb3IobGV0IHQ9MDt0PDc7Kyt0KXtsZXQgZT10KzEsaT0yKmUrMTtRWlt0XT0xLyhlKmkpLGtaW3RdPWUvaX1RWls3XT1PMi8oOCoxNyk7a1pbN109TzIqOC8xNztQdC5mYXN0U2xlcnA9ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkscC50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHAudHlwZU9mLm51bWJlcigidCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBzPVB0LmRvdCh0LGUpLG87cz49MD9vPTE6KG89LTEscz0tcyk7bGV0IHI9cy0xLGE9MS1pLGg9aSppLEE9YSphO2ZvcihsZXQgXz03O18+PTA7LS1fKXFBW19dPShRWltfXSpoLWtaW19dKSpyLCRBW19dPShRWltfXSpBLWtaW19dKSpyO2xldCBkPW8qaSooMStxQVswXSooMStxQVsxXSooMStxQVsyXSooMStxQVszXSooMStxQVs0XSooMStxQVs1XSooMStxQVs2XSooMStxQVs3XSkpKSkpKSkpLGY9YSooMSskQVswXSooMSskQVsxXSooMSskQVsyXSooMSskQVszXSooMSskQVs0XSooMSskQVs1XSooMSskQVs2XSooMSskQVs3XSkpKSkpKSkpLEU9UHQubXVsdGlwbHlCeVNjYWxhcih0LGYsTzkpO3JldHVybiBQdC5tdWx0aXBseUJ5U2NhbGFyKGUsZCxuKSxQdC5hZGQoRSxuLG4pfTtQdC5mYXN0U3F1YWQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe3AudHlwZU9mLm9iamVjdCgicTAiLHQpLHAudHlwZU9mLm9iamVjdCgicTEiLGUpLHAudHlwZU9mLm9iamVjdCgiczAiLGkpLHAudHlwZU9mLm9iamVjdCgiczEiLG4pLHAudHlwZU9mLm51bWJlcigidCIscykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVB0LmZhc3RTbGVycCh0LGUscyxSRSksYT1QdC5mYXN0U2xlcnAoaSxuLHMsRm0pO3JldHVybiBQdC5mYXN0U2xlcnAocixhLDIqcyooMS1zKSxvKX07UHQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lng9PT1lLngmJnQueT09PWUueSYmdC56PT09ZS56JiZ0Lnc9PT1lLnd9O1B0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC54LWUueCk8PWkmJk1hdGguYWJzKHQueS1lLnkpPD1pJiZNYXRoLmFicyh0LnotZS56KTw9aSYmTWF0aC5hYnModC53LWUudyk8PWl9O1B0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgUHQoMCwwLDAsMCkpO1B0LklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IFB0KDAsMCwwLDEpKTtQdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIFB0LmNsb25lKHRoaXMsdCl9O1B0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIFB0LmVxdWFscyh0aGlzLHQpfTtQdC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBQdC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07UHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMueH0sICR7dGhpcy55fSwgJHt0aGlzLnp9LCAke3RoaXMud30pYH07QWU9UHR9KTtmdW5jdGlvbiBSbyh0LGUsaSl7dGhpcy5oZWFkaW5nPVoodCwwKSx0aGlzLnBpdGNoPVooZSwwKSx0aGlzLnJvbGw9WihpLDApfXZhciBaRSxWMj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7X2UoKTtkbigpO0ZpKCk7JHMoKTtSby5mcm9tUXVhdGVybmlvbj1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInF1YXRlcm5pb24gaXMgcmVxdWlyZWQiKTttKGUpfHwoZT1uZXcgUm8pO2xldCBuLHM7aWYobShpKSl7aWYodHlwZW9mIGk9PSJmdW5jdGlvbiIpbj1pKCk7ZWxzZSBpZihpIGluc3RhbmNlb2YgYXQpbj1pO2Vsc2UgdGhyb3cgbmV3IFkoInJlZmVyZW5jZUZyYW1lIG11c3QgYmUgYSBNYXRyaXg0IG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgTWF0cml4NCIpO2xldCBkPWF0LmludmVyc2UobixuZXcgYXQpLGY9YXQuZ2V0Um90YXRpb24oZCxuZXcgbHQpLEU9QWUuZnJvbVJvdGF0aW9uTWF0cml4KGYsbmV3IEFlKTtzPUFlLm11bHRpcGx5KEUsdCxuZXcgQWUpfWVsc2Ugcz10O2xldCBvPTIqKHMudypzLnktcy56KnMueCkscj0xLTIqKHMueCpzLngrcy55KnMueSksYT0yKihzLncqcy54K3MueSpzLnopLGg9MS0yKihzLnkqcy55K3MueipzLnopLEE9Mioocy53KnMueitzLngqcy55KTtyZXR1cm4gZS5oZWFkaW5nPS1NYXRoLmF0YW4yKEEsaCksZS5yb2xsPU1hdGguYXRhbjIoYSxyKSxlLnBpdGNoPS1MLmFzaW5DbGFtcGVkKG8pLGV9O1JvLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJoZWFkaW5nIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInBpdGNoIGlzIHJlcXVpcmVkIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInJvbGwgaXMgcmVxdWlyZWQiKTtyZXR1cm4gbShuKXx8KG49bmV3IFJvKSxuLmhlYWRpbmc9dCpMLlJBRElBTlNfUEVSX0RFR1JFRSxuLnBpdGNoPWUqTC5SQURJQU5TX1BFUl9ERUdSRUUsbi5yb2xsPWkqTC5SQURJQU5TX1BFUl9ERUdSRUUsbn07Um8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLmhlYWRpbmc9dC5oZWFkaW5nLGUucGl0Y2g9dC5waXRjaCxlLnJvbGw9dC5yb2xsLGUpOm5ldyBSbyh0LmhlYWRpbmcsdC5waXRjaCx0LnJvbGwpfTtSby5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQuaGVhZGluZz09PWUuaGVhZGluZyYmdC5waXRjaD09PWUucGl0Y2gmJnQucm9sbD09PWUucm9sbH07Um8uZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJkwuZXF1YWxzRXBzaWxvbih0LmhlYWRpbmcsZS5oZWFkaW5nLGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnBpdGNoLGUucGl0Y2gsaSxuKSYmTC5lcXVhbHNFcHNpbG9uKHQucm9sbCxlLnJvbGwsaSxuKX07Um8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBSby5jbG9uZSh0aGlzLHQpfTtSby5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBSby5lcXVhbHModGhpcyx0KX07Um8ucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBSby5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLGkpfTtSby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy5oZWFkaW5nfSwgJHt0aGlzLnBpdGNofSwgJHt0aGlzLnJvbGx9KWB9O1pFPVJvfSk7dmFyIEwwLExaLEcyLHlaPU8oKCk9PntMMD17fSxMWj1bXSxHMj17fX0pO2Z1bmN0aW9uIFY5KCl7bGV0IHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7bGV0IG49dFtlXS5nZXRBdHRyaWJ1dGUoInNyYyIpLHM9VzIuZXhlYyhuKTtpZihzIT09bnVsbClyZXR1cm4gc1sxXX19ZnVuY3Rpb24gRDIodCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudD4idSI/dDoobSh3Wil8fCh3Wj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLHdaLmhyZWY9dCx3Wi5ocmVmKX1mdW5jdGlvbiBNMigpe2lmKG0ocGwpKXJldHVybiBwbDtsZXQgdDtyZXR1cm4gdHlwZW9mIENFU0lVTV9CQVNFX1VSTDwidSI/dD1DRVNJVU1fQkFTRV9VUkw6bShCMj8udXJsKT90PUFFKCIuIixCMi51cmwpOnR5cGVvZiBkZWZpbmU9PSJvYmplY3QiJiZtKGRlZmluZS5hbWQpJiYhZGVmaW5lLmFtZC50b1VybFVuZGVmaW5lZCYmbShYby50b1VybCk/dD1BRSgiLi4iLHVsKCJDb3JlL2J1aWxkTW9kdWxlVXJsLmpzIikpOnQ9VjkoKSxtKHQpfHwodD0iLyIpLHBsPW5ldyB0bih7dXJsOkQyKHQpfSkscGwuYXBwZW5kRm9yd2FyZFNsYXNoKCkscGx9ZnVuY3Rpb24gRzkodCl7cmV0dXJuIEQyKFhvLnRvVXJsKGAuLi8ke3R9YCkpfWZ1bmN0aW9uIFUyKHQpe3JldHVybiBNMigpLmdldERlcml2ZWRSZXNvdXJjZSh7dXJsOnR9KS51cmx9ZnVuY3Rpb24gdWwodCl7cmV0dXJuIEwwW3RdP0wwW3RdOihtKHhaKXx8KHR5cGVvZiBkZWZpbmU9PSJvYmplY3QiJiZtKGRlZmluZS5hbWQpJiYhZGVmaW5lLmFtZC50b1VybFVuZGVmaW5lZCYmbShYby50b1VybCk/eFo9Rzk6eFo9VTIpLHhaKHQpKX12YXIgQjIsVzIsd1oscGwseFosdGgsUFo9TygoKT0+e210KCk7RTAoKTtJYSgpO3laKCk7QjI9e30sVzI9LygoPzouKlwvKXxeKUNlc2l1bVwuanMoPzpcP3xcI3wkKS87dWwuX2Nlc2l1bVNjcmlwdFJlZ2V4PVcyO3VsLl9idWlsZE1vZHVsZVVybEZyb21CYXNlVXJsPVUyO3VsLl9jbGVhckJhc2VSZXNvdXJjZT1mdW5jdGlvbigpe3BsPXZvaWQgMH07dWwuc2V0QmFzZVVybD1mdW5jdGlvbih0KXtwbD10bi5ERUZBVUxULmdldERlcml2ZWRSZXNvdXJjZSh7dXJsOnR9KX07dWwuZ2V0Q2VzaXVtQmFzZVVybD1NMjt0aD11bH0pO2Z1bmN0aW9uIEI5KHQsZSxpKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLnM9aX12YXIgSloseTA9TygoKT0+e0paPUI5fSk7ZnVuY3Rpb24gUDAodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuX3h5c0ZpbGVVcmxUZW1wbGF0ZT10bi5jcmVhdGVJZk5lZWRlZCh0Lnh5c0ZpbGVVcmxUZW1wbGF0ZSksdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyPVoodC5pbnRlcnBvbGF0aW9uT3JkZXIsOSksdGhpcy5fc2FtcGxlWmVyb0p1bGlhbkVwaGVtZXJpc0RhdGU9Wih0LnNhbXBsZVplcm9KdWxpYW5FcGhlbWVyaXNEYXRlLDI0NDIzOTY1ZS0xKSx0aGlzLl9zYW1wbGVaZXJvRGF0ZVRUPW5ldyBaZSh0aGlzLl9zYW1wbGVaZXJvSnVsaWFuRXBoZW1lcmlzRGF0ZSwwLEVpLlRBSSksdGhpcy5fc3RlcFNpemVEYXlzPVoodC5zdGVwU2l6ZURheXMsMSksdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGU9Wih0LnNhbXBsZXNQZXJYeXNGaWxlLDFlMyksdGhpcy5fdG90YWxTYW1wbGVzPVoodC50b3RhbFNhbXBsZXMsMjc0MjYpLHRoaXMuX3NhbXBsZXM9RzJ8fG5ldyBBcnJheSh0aGlzLl90b3RhbFNhbXBsZXMqMyksdGhpcy5fY2h1bmtEb3dubG9hZHNJblByb2dyZXNzPVtdO2xldCBlPXRoaXMuX2ludGVycG9sYXRpb25PcmRlcixpPXRoaXMuX2Rlbm9taW5hdG9ycz1uZXcgQXJyYXkoZSsxKSxuPXRoaXMuX3hUYWJsZT1uZXcgQXJyYXkoZSsxKSxzPU1hdGgucG93KHRoaXMuX3N0ZXBTaXplRGF5cyxlKTtmb3IobGV0IG89MDtvPD1lOysrbyl7aVtvXT1zLG5bb109byp0aGlzLl9zdGVwU2l6ZURheXM7Zm9yKGxldCByPTA7cjw9ZTsrK3IpciE9PW8mJihpW29dKj1vLXIpO2lbb109MS9pW29dfXRoaXMuX3dvcms9bmV3IEFycmF5KGUrMSksdGhpcy5fY29lZj1uZXcgQXJyYXkoZSsxKX1mdW5jdGlvbiB3MCh0LGUsaSl7bGV0IG49Vzk7cmV0dXJuIG4uZGF5TnVtYmVyPWUsbi5zZWNvbmRzT2ZEYXk9aSxaZS5kYXlzRGlmZmVyZW5jZShuLHQuX3NhbXBsZVplcm9EYXRlVFQpfWZ1bmN0aW9uIHgwKHQsZSl7aWYodC5fY2h1bmtEb3dubG9hZHNJblByb2dyZXNzW2VdKXJldHVybiB0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV07bGV0IGksbj10Ll94eXNGaWxlVXJsVGVtcGxhdGU7bShuKT9pPW4uZ2V0RGVyaXZlZFJlc291cmNlKHt0ZW1wbGF0ZVZhbHVlczp7MDplfX0pOmk9bmV3IHRuKHt1cmw6dGgoYEFzc2V0cy9JQVUyMDA2X1hZUy9JQVUyMDA2X1hZU18ke2V9Lmpzb25gKX0pO2xldCBzPWkuZmV0Y2hKc29uKCkudGhlbihmdW5jdGlvbihvKXt0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV09ITE7bGV0IHI9dC5fc2FtcGxlcyxhPW8uc2FtcGxlcyxoPWUqdC5fc2FtcGxlc1Blclh5c0ZpbGUqMztmb3IobGV0IEE9MCxkPWEubGVuZ3RoO0E8ZDsrK0EpcltoK0FdPWFbQV19KTtyZXR1cm4gdC5fY2h1bmtEb3dubG9hZHNJblByb2dyZXNzW2VdPXMsc312YXIgVzksUTIsazI9TygoKT0+e1BaKCk7YnQoKTttdCgpO3kwKCk7VnIoKTtJYSgpO2haKCk7eVooKTtXOT1uZXcgWmUoMCwwLEVpLlRBSSk7UDAucHJvdG90eXBlLnByZWxvYWQ9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9dzAodGhpcyx0LGUpLG89dzAodGhpcyxpLG4pLHI9cy90aGlzLl9zdGVwU2l6ZURheXMtdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyLzJ8MDtyPDAmJihyPTApO2xldCBhPW8vdGhpcy5fc3RlcFNpemVEYXlzLXRoaXMuX2ludGVycG9sYXRpb25PcmRlci8yfDArdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyO2E+PXRoaXMuX3RvdGFsU2FtcGxlcyYmKGE9dGhpcy5fdG90YWxTYW1wbGVzLTEpO2xldCBoPXIvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxBPWEvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxkPVtdO2ZvcihsZXQgZj1oO2Y8PUE7KytmKWQucHVzaCh4MCh0aGlzLGYpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCl9O1AwLnByb3RvdHlwZS5jb21wdXRlWHlzUmFkaWFucz1mdW5jdGlvbih0LGUsaSl7bGV0IG49dzAodGhpcyx0LGUpO2lmKG48MClyZXR1cm47bGV0IHM9bi90aGlzLl9zdGVwU2l6ZURheXN8MDtpZihzPj10aGlzLl90b3RhbFNhbXBsZXMpcmV0dXJuO2xldCBvPXRoaXMuX2ludGVycG9sYXRpb25PcmRlcixyPXMtKG8vMnwwKTtyPDAmJihyPTApO2xldCBhPXIrbzthPj10aGlzLl90b3RhbFNhbXBsZXMmJihhPXRoaXMuX3RvdGFsU2FtcGxlcy0xLHI9YS1vLHI8MCYmKHI9MCkpO2xldCBoPSExLEE9dGhpcy5fc2FtcGxlcztpZihtKEFbciozXSl8fCh4MCh0aGlzLHIvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCksaD0hMCksbShBW2EqM10pfHwoeDAodGhpcyxhL3RoaXMuX3NhbXBsZXNQZXJYeXNGaWxlfDApLGg9ITApLGgpcmV0dXJuO20oaSk/KGkueD0wLGkueT0wLGkucz0wKTppPW5ldyBKWigwLDAsMCk7bGV0IGQ9bi1yKnRoaXMuX3N0ZXBTaXplRGF5cyxmPXRoaXMuX3dvcmssRT10aGlzLl9kZW5vbWluYXRvcnMsXz10aGlzLl9jb2VmLFI9dGhpcy5feFRhYmxlLEksQztmb3IoST0wO0k8PW87KytJKWZbSV09ZC1SW0ldO2ZvcihJPTA7STw9bzsrK0kpe2ZvcihfW0ldPTEsQz0wO0M8PW87KytDKUMhPT1JJiYoX1tJXSo9ZltDXSk7X1tJXSo9RVtJXTtsZXQgTj0ocitJKSozO2kueCs9X1tJXSpBW04rK10saS55Kz1fW0ldKkFbTisrXSxpLnMrPV9bSV0qQVtOXX1yZXR1cm4gaX07UTI9UDB9KTt2YXIgS2UsSjAsWW0sajAsJG8sYWMsQWMsaGMsRDksTTksVTksUTksazksTDkseTksTDIsdzkseDksUDksSjksajksSDksdjksejksSzksWDksalosSzAscTksJDksdDcsSDAsdjAsZTcsaTcsbjcsczcsdzIseDIsWDAsbzcscjcscTAsUDIsYTcsQTcsaDcsYzcsbDcsZDcsbTcsZjcsejAsRTcsXzcsUjcsaVR0LHkyLEluLGZyPU8oKCk9PntYZSgpO0h0KCk7VnMoKTtyaSgpO2FlKCk7YnQoKTttdCgpO1Z0KCk7bDIoKTthMCgpO1ZlKCk7VjIoKTtrMigpO3kwKCk7VnIoKTtfZSgpO2RuKCk7RmkoKTskcygpO0FaKCk7aWMoKTtLZT17fSxKMD17dXA6e3NvdXRoOiJlYXN0Iixub3J0aDoid2VzdCIsd2VzdDoic291dGgiLGVhc3Q6Im5vcnRoIn0sZG93bjp7c291dGg6Indlc3QiLG5vcnRoOiJlYXN0Iix3ZXN0OiJub3J0aCIsZWFzdDoic291dGgifSxzb3V0aDp7dXA6Indlc3QiLGRvd246ImVhc3QiLHdlc3Q6ImRvd24iLGVhc3Q6InVwIn0sbm9ydGg6e3VwOiJlYXN0Iixkb3duOiJ3ZXN0Iix3ZXN0OiJ1cCIsZWFzdDoiZG93biJ9LHdlc3Q6e3VwOiJub3J0aCIsZG93bjoic291dGgiLG5vcnRoOiJkb3duIixzb3V0aDoidXAifSxlYXN0Ont1cDoic291dGgiLGRvd246Im5vcnRoIixub3J0aDoidXAiLHNvdXRoOiJkb3duIn19LFltPXtub3J0aDpbLTEsMCwwXSxlYXN0OlswLDEsMF0sdXA6WzAsMCwxXSxzb3V0aDpbMSwwLDBdLHdlc3Q6WzAsLTEsMF0sZG93bjpbMCwwLC0xXX0sajA9e30sJG89e2Vhc3Q6bmV3IGwsbm9ydGg6bmV3IGwsdXA6bmV3IGwsd2VzdDpuZXcgbCxzb3V0aDpuZXcgbCxkb3duOm5ldyBsfSxhYz1uZXcgbCxBYz1uZXcgbCxoYz1uZXcgbDtLZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yPWZ1bmN0aW9uKHQsZSl7aWYoIUowLmhhc093blByb3BlcnR5KHQpfHwhSjBbdF0uaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IFkoImZpcnN0QXhpcyBhbmQgc2Vjb25kQXhpcyBtdXN0IGJlIGVhc3QsIG5vcnRoLCB1cCwgd2VzdCwgc291dGggb3IgZG93bi4iKTtsZXQgaT1KMFt0XVtlXSxuLHM9dCtlO3JldHVybiBtKGowW3NdKT9uPWowW3NdOihuPWZ1bmN0aW9uKG8scixhKXtpZighbShvKSl0aHJvdyBuZXcgWSgib3JpZ2luIGlzIHJlcXVpcmVkLiIpO2lmKGlzTmFOKG8ueCl8fGlzTmFOKG8ueSl8fGlzTmFOKG8ueikpdGhyb3cgbmV3IFkoIm9yaWdpbiBoYXMgYSBOYU4gY29tcG9uZW50Iik7aWYobShhKXx8KGE9bmV3IGF0KSxsLmVxdWFsc0Vwc2lsb24obyxsLlpFUk8sTC5FUFNJTE9OMTQpKWwudW5wYWNrKFltW3RdLDAsYWMpLGwudW5wYWNrKFltW2VdLDAsQWMpLGwudW5wYWNrKFltW2ldLDAsaGMpO2Vsc2UgaWYoTC5lcXVhbHNFcHNpbG9uKG8ueCwwLEwuRVBTSUxPTjE0KSYmTC5lcXVhbHNFcHNpbG9uKG8ueSwwLEwuRVBTSUxPTjE0KSl7bGV0IGg9TC5zaWduKG8ueik7bC51bnBhY2soWW1bdF0sMCxhYyksdCE9PSJlYXN0IiYmdCE9PSJ3ZXN0IiYmbC5tdWx0aXBseUJ5U2NhbGFyKGFjLGgsYWMpLGwudW5wYWNrKFltW2VdLDAsQWMpLGUhPT0iZWFzdCImJmUhPT0id2VzdCImJmwubXVsdGlwbHlCeVNjYWxhcihBYyxoLEFjKSxsLnVucGFjayhZbVtpXSwwLGhjKSxpIT09ImVhc3QiJiZpIT09Indlc3QiJiZsLm11bHRpcGx5QnlTY2FsYXIoaGMsaCxoYyl9ZWxzZXtyPVoocixvdC5XR1M4NCksci5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobywkby51cCk7bGV0IGg9JG8udXAsQT0kby5lYXN0O0EueD0tby55LEEueT1vLngsQS56PTAsbC5ub3JtYWxpemUoQSwkby5lYXN0KSxsLmNyb3NzKGgsQSwkby5ub3J0aCksbC5tdWx0aXBseUJ5U2NhbGFyKCRvLnVwLC0xLCRvLmRvd24pLGwubXVsdGlwbHlCeVNjYWxhcigkby5lYXN0LC0xLCRvLndlc3QpLGwubXVsdGlwbHlCeVNjYWxhcigkby5ub3J0aCwtMSwkby5zb3V0aCksYWM9JG9bdF0sQWM9JG9bZV0saGM9JG9baV19cmV0dXJuIGFbMF09YWMueCxhWzFdPWFjLnksYVsyXT1hYy56LGFbM109MCxhWzRdPUFjLngsYVs1XT1BYy55LGFbNl09QWMueixhWzddPTAsYVs4XT1oYy54LGFbOV09aGMueSxhWzEwXT1oYy56LGFbMTFdPTAsYVsxMl09by54LGFbMTNdPW8ueSxhWzE0XT1vLnosYVsxNV09MSxhfSxqMFtzXT1uKSxufTtLZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZT1LZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJlYXN0Iiwibm9ydGgiKTtLZS5ub3J0aEVhc3REb3duVG9GaXhlZEZyYW1lPUtlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwiZWFzdCIpO0tlLm5vcnRoVXBFYXN0VG9GaXhlZEZyYW1lPUtlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwidXAiKTtLZS5ub3J0aFdlc3RVcFRvRml4ZWRGcmFtZT1LZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJub3J0aCIsIndlc3QiKTtEOT1uZXcgQWUsTTk9bmV3IGwoMSwxLDEpLFU5PW5ldyBhdDtLZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKSxuPVoobixLZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSk7bGV0IG89QWUuZnJvbUhlYWRpbmdQaXRjaFJvbGwoZSxEOSkscj1hdC5mcm9tVHJhbnNsYXRpb25RdWF0ZXJuaW9uUm90YXRpb25TY2FsZShsLlpFUk8sbyxNOSxVOSk7cmV0dXJuIHM9bih0LGkscyksYXQubXVsdGlwbHkocyxyLHMpfTtLZS5sb2NhbFRvRml4ZWRGcmFtZVF1YXRlcm5pb249ZnVuY3Rpb24odCxlLGksbixzKXtpZighbShlKSl0aHJvdyBuZXcgWSgibG9jYWxRdWF0ZXJuaW9uIGlzIHJlcXVpcmVkIik7bj1aKG4sS2UuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUpO2xldCBvPW4odCxpKSxyPWF0LmdldE1hdHJpeDMobyxuZXcgbHQpLGE9QWUuZnJvbVJvdGF0aW9uTWF0cml4KHIpO3JldHVybiBzPW0ocyk/czpuZXcgQWUsQWUubXVsdGlwbHkoYSxlLHMpfTtROT1uZXcgYXQsazk9bmV3IGx0O0tlLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKTtsZXQgbz1LZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKHQsZSxpLG4sUTkpLHI9YXQuZ2V0TWF0cml4MyhvLGs5KTtyZXR1cm4gQWUuZnJvbVJvdGF0aW9uTWF0cml4KHIscyl9O0w5PW5ldyBsKDEsMSwxKSx5OT1uZXcgbCxMMj1uZXcgYXQsdzk9bmV3IGF0LHg5PW5ldyBsdCxQOT1uZXcgQWU7S2UuZml4ZWRGcmFtZVRvSGVhZGluZ1BpdGNoUm9sbD1mdW5jdGlvbih0LGUsaSxuKXtwLmRlZmluZWQoInRyYW5zZm9ybSIsdCksZT1aKGUsb3QuV0dTODQpLGk9WihpLEtlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKSxtKG4pfHwobj1uZXcgWkUpO2xldCBzPWF0LmdldFRyYW5zbGF0aW9uKHQseTkpO2lmKGwuZXF1YWxzKHMsbC5aRVJPKSlyZXR1cm4gbi5oZWFkaW5nPTAsbi5waXRjaD0wLG4ucm9sbD0wLG47bGV0IG89YXQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKGkocyxlLEwyKSxMMikscj1hdC5zZXRTY2FsZSh0LEw5LHc5KTtyPWF0LnNldFRyYW5zbGF0aW9uKHIsbC5aRVJPLHIpLG89YXQubXVsdGlwbHkobyxyLG8pO2xldCBhPUFlLmZyb21Sb3RhdGlvbk1hdHJpeChhdC5nZXRNYXRyaXgzKG8seDkpLFA5KTtyZXR1cm4gYT1BZS5ub3JtYWxpemUoYSxhKSxaRS5mcm9tUXVhdGVybmlvbihhLG4pfTtKOT02KjM2MDArNDEqNjArNTAuNTQ4NDEsajk9ODY0MDE4NDgxMjg2NmUtNixIOT0uMDkzMTA0LHY5PS02MmUtNyx6OT0xMTc3Mjc1ODM4NDY2OGUtMzIsSzk9NzI5MjExNTg1NTNlLTE1LFg5PUwuVFdPX1BJLzg2NDAwLGpaPW5ldyBaZTtLZS5jb21wdXRlVGVtZVRvUHNldWRvRml4ZWRNYXRyaXg9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZGF0ZSBpcyByZXF1aXJlZC4iKTtqWj1aZS5hZGRTZWNvbmRzKHQsLVplLmNvbXB1dGVUYWlNaW51c1V0Yyh0KSxqWik7bGV0IGk9alouZGF5TnVtYmVyLG49alouc2Vjb25kc09mRGF5LHMsbz1pLTI0NTE1NDU7bj49NDMyMDA/cz0obysuNSkvYm4uREFZU19QRVJfSlVMSUFOX0NFTlRVUlk6cz0oby0uNSkvYm4uREFZU19QRVJfSlVMSUFOX0NFTlRVUlk7bGV0IGE9KEo5K3MqKGo5K3MqKEg5K3MqdjkpKSkqWDklTC5UV09fUEksaD1LOSt6OSooaS0yNDUxNTQ1NWUtMSksQT0obitibi5TRUNPTkRTX1BFUl9EQVkqLjUpJWJuLlNFQ09ORFNfUEVSX0RBWSxkPWEraCpBLGY9TWF0aC5jb3MoZCksRT1NYXRoLnNpbihkKTtyZXR1cm4gbShlKT8oZVswXT1mLGVbMV09LUUsZVsyXT0wLGVbM109RSxlWzRdPWYsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0xLGUpOm5ldyBsdChmLEUsMCwtRSxmLDAsMCwwLDEpfTtLZS5pYXUyMDA2WHlzRGF0YT1uZXcgUTI7S2UuZWFydGhPcmllbnRhdGlvblBhcmFtZXRlcnM9YzIuTk9ORTtLMD0zMi4xODQscTk9MjQ1MTU0NTtLZS5wcmVsb2FkSWNyZkZpeGVkPWZ1bmN0aW9uKHQpe2xldCBlPXQuc3RhcnQuZGF5TnVtYmVyLGk9dC5zdGFydC5zZWNvbmRzT2ZEYXkrSzAsbj10LnN0b3AuZGF5TnVtYmVyLHM9dC5zdG9wLnNlY29uZHNPZkRheStLMDtyZXR1cm4gS2UuaWF1MjAwNlh5c0RhdGEucHJlbG9hZChlLGksbixzKX07S2UuY29tcHV0ZUljcmZUb0ZpeGVkTWF0cml4PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImRhdGUgaXMgcmVxdWlyZWQuIik7bShlKXx8KGU9bmV3IGx0KTtsZXQgaT1LZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgodCxlKTtpZihtKGkpKXJldHVybiBsdC50cmFuc3Bvc2UoaSxlKX07JDk9bmV3IEpaKDAsMCwwKSx0Nz1uZXcgb0UoMCwwLDAsMCwwLDApLEgwPW5ldyBsdCx2MD1uZXcgbHQ7S2UuY29tcHV0ZUZpeGVkVG9JY3JmTWF0cml4PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImRhdGUgaXMgcmVxdWlyZWQuIik7bShlKXx8KGU9bmV3IGx0KTtsZXQgaT1LZS5lYXJ0aE9yaWVudGF0aW9uUGFyYW1ldGVycy5jb21wdXRlKHQsdDcpO2lmKCFtKGkpKXJldHVybjtsZXQgbj10LmRheU51bWJlcixzPXQuc2Vjb25kc09mRGF5K0swLG89S2UuaWF1MjAwNlh5c0RhdGEuY29tcHV0ZVh5c1JhZGlhbnMobixzLCQ5KTtpZighbShvKSlyZXR1cm47bGV0IHI9by54K2kueFBvbGVPZmZzZXQsYT1vLnkraS55UG9sZU9mZnNldCxoPTEvKDErTWF0aC5zcXJ0KDEtcipyLWEqYSkpLEE9SDA7QVswXT0xLWgqcipyLEFbM109LWgqciphLEFbNl09cixBWzFdPS1oKnIqYSxBWzRdPTEtaCphKmEsQVs3XT1hLEFbMl09LXIsQVs1XT0tYSxBWzhdPTEtaCoocipyK2EqYSk7bGV0IGQ9bHQuZnJvbVJvdGF0aW9uWigtby5zLHYwKSxmPWx0Lm11bHRpcGx5KEEsZCxIMCksRT10LmRheU51bWJlcixfPXQuc2Vjb25kc09mRGF5LVplLmNvbXB1dGVUYWlNaW51c1V0Yyh0KStpLnV0MU1pbnVzVXRjLFI9RS0yNDUxNTQ1LEk9Xy9ibi5TRUNPTkRTX1BFUl9EQVksQz0uNzc5MDU3MjczMjY0K0krLjAwMjczNzgxMTkxMTM1NDQ4KihSK0kpO0M9QyUxKkwuVFdPX1BJO2xldCBOPWx0LmZyb21Sb3RhdGlvblooQyx2MCksVD1sdC5tdWx0aXBseShmLE4sSDApLEY9TWF0aC5jb3MoaS54UG9sZVdhbmRlciksYj1NYXRoLmNvcyhpLnlQb2xlV2FuZGVyKSxHPU1hdGguc2luKGkueFBvbGVXYW5kZXIpLE09TWF0aC5zaW4oaS55UG9sZVdhbmRlciksUT1uLXE5K3MvYm4uU0VDT05EU19QRVJfREFZO1EvPTM2NTI1O2xldCBVPS00N2UtNipRKkwuUkFESUFOU19QRVJfREVHUkVFLzM2MDAsaz1NYXRoLmNvcyhVKSx5PU1hdGguc2luKFUpLGM9djA7cmV0dXJuIGNbMF09RiprLGNbMV09Rip5LGNbMl09RyxjWzNdPS1iKnkrTSpHKmssY1s0XT1iKmsrTSpHKnksY1s1XT0tTSpGLGNbNl09LU0qeS1iKkcqayxjWzddPU0qay1iKkcqeSxjWzhdPWIqRixsdC5tdWx0aXBseShULGMsZSl9O2U3PW5ldyBpZTtLZS5wb2ludFRvV2luZG93Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIG49S2UucG9pbnRUb0dMV2luZG93Q29vcmRpbmF0ZXModCxlLGksbiksbi55PTIqZVs1XS1uLnksbn07S2UucG9pbnRUb0dMV2luZG93Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoIm1vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInZpZXdwb3J0VHJhbnNmb3JtYXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInBvaW50IGlzIHJlcXVpcmVkLiIpO20obil8fChuPW5ldyBudCk7bGV0IHM9ZTc7cmV0dXJuIGF0Lm11bHRpcGx5QnlWZWN0b3IodCxpZS5mcm9tRWxlbWVudHMoaS54LGkueSxpLnosMSxzKSxzKSxpZS5tdWx0aXBseUJ5U2NhbGFyKHMsMS9zLncscyksYXQubXVsdGlwbHlCeVZlY3RvcihlLHMscyksbnQuZnJvbUNhcnRlc2lhbjQocyxuKX07aTc9bmV3IGwsbjc9bmV3IGwsczc9bmV3IGw7S2Uucm90YXRpb25NYXRyaXhGcm9tUG9zaXRpb25WZWxvY2l0eT1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicG9zaXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInZlbG9jaXR5IGlzIHJlcXVpcmVkLiIpO2xldCBzPVooaSxvdC5XR1M4NCkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsaTcpLG89bC5jcm9zcyhlLHMsbjcpO2wuZXF1YWxzRXBzaWxvbihvLGwuWkVSTyxMLkVQU0lMT042KSYmKG89bC5jbG9uZShsLlVOSVRfWCxvKSk7bGV0IHI9bC5jcm9zcyhvLGUsczcpO3JldHVybiBsLm5vcm1hbGl6ZShyLHIpLGwuY3Jvc3MoZSxyLG8pLGwubmVnYXRlKG8sbyksbC5ub3JtYWxpemUobyxvKSxtKG4pfHwobj1uZXcgbHQpLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56LG5bM109by54LG5bNF09by55LG5bNV09by56LG5bNl09ci54LG5bN109ci55LG5bOF09ci56LG59O3cyPW5ldyBhdCgwLDAsMSwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMCwxKSx4Mj1uZXcgdXQsWDA9bmV3IGwsbzc9bmV3IGwscjc9bmV3IGx0LHEwPW5ldyBhdCxQMj1uZXcgYXQ7S2UuYmFzaXNUbzJEPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicHJvamVjdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgibWF0cml4IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49YXQuZ2V0VHJhbnNsYXRpb24oZSxvNykscz10LmVsbGlwc29pZCxvO2lmKGwuZXF1YWxzKG4sbC5aRVJPKSlvPWwuY2xvbmUobC5aRVJPLFgwKTtlbHNle2xldCBkPXMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobix4Mik7bz10LnByb2plY3QoZCxYMCksbC5mcm9tRWxlbWVudHMoby56LG8ueCxvLnksbyl9bGV0IHI9S2UuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUobixzLHEwKSxhPWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihyLFAyKSxoPWF0LmdldE1hdHJpeDMoZSxyNyksQT1hdC5tdWx0aXBseUJ5TWF0cml4MyhhLGgsaSk7cmV0dXJuIGF0Lm11bHRpcGx5KHcyLEEsaSksYXQuc2V0VHJhbnNsYXRpb24oaSxvLGkpLGl9O0tlLndnczg0VG8yRE1vZGVsTWF0cml4PWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicHJvamVjdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiY2VudGVyIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5lbGxpcHNvaWQscz1LZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShlLG4scTApLG89YXQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKHMsUDIpLHI9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLHgyKSxhPXQucHJvamVjdChyLFgwKTtsLmZyb21FbGVtZW50cyhhLnosYS54LGEueSxhKTtsZXQgaD1hdC5mcm9tVHJhbnNsYXRpb24oYSxxMCk7cmV0dXJuIGF0Lm11bHRpcGx5KHcyLG8saSksYXQubXVsdGlwbHkoaCxpLGkpLGl9O2E3PW5ldyBsLEE3PW5ldyBsLGg3PW5ldyBsLGM3PW5ldyBsLGw3PW5ldyBsLGQ3PW5ldyBsLG03PW5ldyBsLGY3PW5ldyBsLHowPW5ldyBaZSxFNz1uZXcgbHQsXzc9bmV3IGx0LFI3PW5ldyBsdDtLZS52dmxoVG9GaXhlZD1mdW5jdGlvbih0LGUsaSl7bGV0IG49dC5nZXRWYWx1ZShlLGE3KTtaZS5hZGRTZWNvbmRzKGUsLjAxLHowKTtsZXQgcz10LmdldFZhbHVlKHowLEE3KSxvPW90LldHUzg0LHI9by5tYXhpbXVtUmFkaXVzKzFlNTtpZihtKGkpfHwoaT1uZXcgYXQpLGwubWFnbml0dWRlKG4pPD1yKXtsZXQgRT1sLnN1YnRyYWN0KHMsbixuZXcgbCksXztpZihsLm1hZ25pdHVkZShFKT09PTApe2xldCBDPUtlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG4sbyk7Xz1uZXcgbChDWzBdLENbMV0sQ1syXSl9ZWxzZSBfPWwubm9ybWFsaXplKEUsbmV3IGwpO2xldCBSPW8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKG4sbmV3IGwpLEk9bC5jcm9zcyhSLF8sbmV3IGwpO3JldHVybiBpWzBdPV8ueCxpWzFdPV8ueSxpWzJdPV8ueixpWzNdPTAsaVs0XT1JLngsaVs1XT1JLnksaVs2XT1JLnosaVs3XT0wLGlbOF09Ui54LGlbOV09Ui55LGlbMTBdPVIueixpWzExXT0wLGlbMTJdPW4ueCxpWzEzXT1uLnksaVsxNF09bi56LGlbMTVdPTEsaX1sZXQgYT1LZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgoZSxFNyk7aWYoIWEpcmV0dXJuIG5ldyBhdDtsZXQgaD1LZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgoejAsXzcpLEE9bHQudHJhbnNwb3NlKGEsUjcpLGQ9bHQubXVsdGlwbHlCeVZlY3RvcihhLG4saDcpLGY9bHQubXVsdGlwbHlCeVZlY3RvcihoLHMsYzcpO2lmKCFsLmVxdWFsc0Vwc2lsb24oZCxmLEwuRVBTSUxPTjE0KSl7bGV0IEU9bC5zdWJ0cmFjdChmLGQsbDcpLF89ZDc7dHJ5e2wubmVnYXRlKGwubm9ybWFsaXplKGQsXyksXyl9Y2F0Y2h7Y29uc29sZS5sb2coZCxfKX1sZXQgUj1sLmNyb3NzKEUsXyxtNyk7bC5uZWdhdGUoUixSKTtsZXQgST1sLmNyb3NzKFIsXyxmNyk7dHJ5e2x0Lm11bHRpcGx5QnlWZWN0b3IoQSxJLEkpLGx0Lm11bHRpcGx5QnlWZWN0b3IoQSxSLFIpLGx0Lm11bHRpcGx5QnlWZWN0b3IoQSxfLF8pLGwubm9ybWFsaXplKEksSSksbC5ub3JtYWxpemUoUixSKSxsLm5vcm1hbGl6ZShfLF8pLGlbMF09SS54LGlbMV09SS55LGlbMl09SS56LGlbM109MCxpWzRdPVIueCxpWzVdPVIueSxpWzZdPVIueixpWzddPTAsaVs4XT1fLngsaVs5XT1fLnksaVsxMF09Xy56LGlbMTFdPTAsaVsxMl09bi54LGlbMTNdPW4ueSxpWzE0XT1uLnosaVsxNV09MX1jYXRjaChDKXtyZXR1cm4gY29uc29sZS5sb2coQyxJLFIsXyxFLG4scyx0KSxuZXcgQXJyYXkoMTYpLmZpbGwoMCl9fXJldHVybiBhdC5tdWx0aXBseShpLG5ldyBhdCgxLDAsMCwwLDAsLTEsMCwwLDAsMCwtMSwwLDAsMCwwLDEpLGkpLGl9O0tlLnJldmVyc2VIZWFkaW5nUXVhdGVybmlvbj1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgib3JpZW50YXRpb24gaXMgcmVxdWlyZWQiKTtsZXQgZT1uZXcgWkU7WkUuZnJvbVF1YXRlcm5pb24odCxlKSxlLmhlYWRpbmc9LWUuaGVhZGluZyxlLnJvbGw9LWUucm9sbDtsZXQgaT1uZXcgQWU7cmV0dXJuIEFlLmZyb21IZWFkaW5nUGl0Y2hSb2xsKGUsaSksaX07aVR0PW5ldyBhdCgwLDAsMSwwLDAsMSwwLDAsLTEsMCwwLDAsMCwwLDAsMSk7S2UuZ2V0UG9zaXRpb25JblZWTEg9ZnVuY3Rpb24odCxlLGksbixzPSRpLkZJWEVEKXtsZXQgbz1lLnBvc2l0aW9uLmdldFZhbHVlSW5SZWZlcmVuY2VGcmFtZShpLHMuRklYRUQpLHI9dC5wb3NpdGlvbi5nZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWUobixzLkZJWEVEKSxhO3RyeXthPWF0LmludmVyc2UoS2UudnZsaFRvRml4ZWQodC5wb3NpdGlvbixpKSxuZXcgYXQpfWNhdGNoe2E9bmV3IGF0fWxldCBoPWF0Lm11bHRpcGx5QnlQb2ludChhLG8sbmV3IGwpLEE9YXQuZ2V0Um90YXRpb24oS2UudnZsaFRvRml4ZWQodC5wb3NpdGlvbixuKSxuZXcgbHQpLGQ9bHQubXVsdGlwbHlCeVZlY3RvcihBLGgsbmV3IGwpLGY9bC5hZGQocixkLG5ldyBsKTtpZihzPT09JGkuSU5FUlRJQUwpe2xldCBFPUtlLmNvbXB1dGVGaXhlZFRvSWNyZk1hdHJpeChuKTtFJiYoZj1sdC5tdWx0aXBseUJ5VmVjdG9yKEUsZixuZXcgbCkpfXJldHVybiBmfTt5Mj1LZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJub3J0aCIsIndlc3QiKTtLZS5nZXRUcmFuc2Zvcm1Ub0ZpeGVkRnJhbWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuLHM9e1skaS5GSVhFRF06KCk9PmF0LklERU5USVRZLFskaS5JTkVSVElBTF06KCk9PntpZighbShlKSl0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIElORVJUSUFMIHRvIEZJWEVEIHJlcXVpcmVzIGEgdGltZS4iKTtyZXR1cm4gS2UuY29tcHV0ZUljcmZUb0ZpeGVkTWF0cml4KGUpfSxbJGkuVEVNRV06KCk9Pnt0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIFRFTUUgdG8gRklYRUQgaXMgbm90IGltcGxlbWVudGVkLiIpfSxbJGkuVlZMSF06KCk9PntpZighbShlKXx8IW0oaSkpdGhyb3cgbmV3IFkoIkNvbnZlcnNpb24gZnJvbSBWVkxIIHRvIEZJWEVEIHJlcXVpcmVzIGJvdGggdGltZSBhbmQgcG9zaXRpb24uIik7bGV0IG89S2UudnZsaFRvRml4ZWQoaSxlKSxyPWF0LmZyb21TY2FsZShuZXcgbCgxLC0xLC0xKSk7cmV0dXJuIGF0Lm11bHRpcGx5KG8scixuZXcgYXQpfSxbJGkuTkVEXTooKT0+e2lmKCFtKGUpfHwhbShpKSl0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIE5FRCB0byBGSVhFRCByZXF1aXJlcyBib3RoIHRpbWUgYW5kIHBvc2l0aW9uLiIpO2xldCBvPXkyKGkuZ2V0VmFsdWUoZSkpLHI9YXQuZnJvbVNjYWxlKG5ldyBsKDEsLTEsLTEpKTtyZXR1cm4gYXQubXVsdGlwbHkobyxyLG5ldyBhdCl9LFskaS5ORVVdOigpPT57aWYoIW0oZSl8fCFtKGkpKXRocm93IG5ldyBZKCJDb252ZXJzaW9uIGZyb20gTkVVIHRvIEZJWEVEIHJlcXVpcmVzIGJvdGggdGltZSBhbmQgcG9zaXRpb24uIik7bGV0IG89eTIoaS5nZXRWYWx1ZShlKSkscj1hdC5mcm9tU2NhbGUobmV3IGwoMSwtMSwxKSk7cmV0dXJuIGF0Lm11bHRpcGx5KG8scixuZXcgYXQpfSxbJGkuUklDXTooKT0+e2lmKCFtKGUpfHwhbShpKSl0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIFJJQyB0byBGSVhFRCByZXF1aXJlcyBib3RoIHRpbWUgYW5kIHBvc2l0aW9uLiIpO2xldCBvPUtlLnZ2bGhUb0ZpeGVkKGksZSkscj1hdC5mcm9tQXJyYXkoWzAsMCwxLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDFdKTtyZXR1cm4gYXQubXVsdGlwbHkobyxyLG5ldyBhdCl9fTtyZXR1cm4gcy5oYXNPd25Qcm9wZXJ0eSh0KT9uPXNbdF06bj1LZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSxufTtJbj1LZX0pO2Z1bmN0aW9uIEplKHQsZSxpLG4pe3RoaXMud2VzdD1aKHQsMCksdGhpcy5zb3V0aD1aKGUsMCksdGhpcy5lYXN0PVooaSwwKSx0aGlzLm5vcnRoPVoobiwwKX12YXIgWjcsSTcscDcsdTcsQzcsJDAsZzcsWHQscG49TygoKT0+e0h0KCk7cmkoKTthZSgpO2J0KCk7bXQoKTtWZSgpO19lKCk7ZnIoKTtGaSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEplLnByb3RvdHlwZSx7d2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBKZS5jb21wdXRlV2lkdGgodGhpcyl9fSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBKZS5jb21wdXRlSGVpZ2h0KHRoaXMpfX19KTtKZS5wYWNrZWRMZW5ndGg9NDtKZS5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksZVtpKytdPXQud2VzdCxlW2krK109dC5zb3V0aCxlW2krK109dC5lYXN0LGVbaV09dC5ub3J0aCxlfTtKZS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgSmUpLGkud2VzdD10W2UrK10saS5zb3V0aD10W2UrK10saS5lYXN0PXRbZSsrXSxpLm5vcnRoPXRbZV0saX07SmUuY29tcHV0ZVdpZHRoPWZ1bmN0aW9uKHQpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KTtsZXQgZT10LmVhc3QsaT10Lndlc3Q7cmV0dXJuIGU8aSYmKGUrPUwuVFdPX1BJKSxlLWl9O0plLmNvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSx0Lm5vcnRoLXQuc291dGh9O0plLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxpLG4scyl7cmV0dXJuIHQ9TC50b1JhZGlhbnMoWih0LDApKSxlPUwudG9SYWRpYW5zKFooZSwwKSksaT1MLnRvUmFkaWFucyhaKGksMCkpLG49TC50b1JhZGlhbnMoWihuLDApKSxtKHMpPyhzLndlc3Q9dCxzLnNvdXRoPWUscy5lYXN0PWkscy5ub3J0aD1uLHMpOm5ldyBKZSh0LGUsaSxuKX07SmUuZnJvbVJhZGlhbnM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gbShzKT8ocy53ZXN0PVoodCwwKSxzLnNvdXRoPVooZSwwKSxzLmVhc3Q9WihpLDApLHMubm9ydGg9WihuLDApLHMpOm5ldyBKZSh0LGUsaSxuKX07SmUuZnJvbUNhcnRvZ3JhcGhpY0FycmF5PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjYXJ0b2dyYXBoaWNzIix0KTtsZXQgaT1OdW1iZXIuTUFYX1ZBTFVFLG49LU51bWJlci5NQVhfVkFMVUUscz1OdW1iZXIuTUFYX1ZBTFVFLG89LU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLGE9LU51bWJlci5NQVhfVkFMVUU7Zm9yKGxldCBoPTAsQT10Lmxlbmd0aDtoPEE7aCsrKXtsZXQgZD10W2hdO2k9TWF0aC5taW4oaSxkLmxvbmdpdHVkZSksbj1NYXRoLm1heChuLGQubG9uZ2l0dWRlKSxyPU1hdGgubWluKHIsZC5sYXRpdHVkZSksYT1NYXRoLm1heChhLGQubGF0aXR1ZGUpO2xldCBmPWQubG9uZ2l0dWRlPj0wP2QubG9uZ2l0dWRlOmQubG9uZ2l0dWRlK0wuVFdPX1BJO3M9TWF0aC5taW4ocyxmKSxvPU1hdGgubWF4KG8sZil9cmV0dXJuIG4taT5vLXMmJihpPXMsbj1vLG4+TC5QSSYmKG49bi1MLlRXT19QSSksaT5MLlBJJiYoaT1pLUwuVFdPX1BJKSksbShlKT8oZS53ZXN0PWksZS5zb3V0aD1yLGUuZWFzdD1uLGUubm9ydGg9YSxlKTpuZXcgSmUoaSxyLG4sYSl9O0plLmZyb21DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJjYXJ0ZXNpYW5zIix0KSxlPVooZSxvdC5XR1M4NCk7bGV0IG49TnVtYmVyLk1BWF9WQUxVRSxzPS1OdW1iZXIuTUFYX1ZBTFVFLG89TnVtYmVyLk1BWF9WQUxVRSxyPS1OdW1iZXIuTUFYX1ZBTFVFLGE9TnVtYmVyLk1BWF9WQUxVRSxoPS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgQT0wLGQ9dC5sZW5ndGg7QTxkO0ErKyl7bGV0IGY9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0W0FdKTtuPU1hdGgubWluKG4sZi5sb25naXR1ZGUpLHM9TWF0aC5tYXgocyxmLmxvbmdpdHVkZSksYT1NYXRoLm1pbihhLGYubGF0aXR1ZGUpLGg9TWF0aC5tYXgoaCxmLmxhdGl0dWRlKTtsZXQgRT1mLmxvbmdpdHVkZT49MD9mLmxvbmdpdHVkZTpmLmxvbmdpdHVkZStMLlRXT19QSTtvPU1hdGgubWluKG8sRSkscj1NYXRoLm1heChyLEUpfXJldHVybiBzLW4+ci1vJiYobj1vLHM9cixzPkwuUEkmJihzPXMtTC5UV09fUEkpLG4+TC5QSSYmKG49bi1MLlRXT19QSSkpLG0oaSk/KGkud2VzdD1uLGkuc291dGg9YSxpLmVhc3Q9cyxpLm5vcnRoPWgsaSk6bmV3IEplKG4sYSxzLGgpfTtaNz1uZXcgbCxJNz1uZXcgbCxwNz1uZXcgbCx1Nz1uZXcgbCxDNz1uZXcgbCwkMD1uZXcgQXJyYXkoNSk7Zm9yKGxldCB0PTA7dDwkMC5sZW5ndGg7Kyt0KSQwW3RdPW5ldyBsO0plLmZyb21Cb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJib3VuZGluZ1NwaGVyZSIsdCk7bGV0IG49dC5jZW50ZXIscz10LnJhZGl1cztpZihtKGUpfHwoZT1vdC5XR1M4NCksbShpKXx8KGk9bmV3IEplKSxsLmVxdWFscyhuLGwuWkVSTykpcmV0dXJuIEplLmNsb25lKEplLk1BWF9WQUxVRSxpKSxpO2xldCBvPUluLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG4sZSxaNykscj1hdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihvLGwuVU5JVF9YLEk3KTtsLm5vcm1hbGl6ZShyLHIpO2xldCBhPWF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKG8sbC5VTklUX1kscDcpO2wubm9ybWFsaXplKGEsYSksbC5tdWx0aXBseUJ5U2NhbGFyKGEscyxhKSxsLm11bHRpcGx5QnlTY2FsYXIocixzLHIpO2xldCBoPWwubmVnYXRlKGEsQzcpLEE9bC5uZWdhdGUocix1NyksZD0kMCxmPWRbMF07cmV0dXJuIGwuYWRkKG4sYSxmKSxmPWRbMV0sbC5hZGQobixBLGYpLGY9ZFsyXSxsLmFkZChuLGgsZiksZj1kWzNdLGwuYWRkKG4scixmKSxkWzRdPW4sSmUuZnJvbUNhcnRlc2lhbkFycmF5KGQsZSxpKX07SmUuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLndlc3Q9dC53ZXN0LGUuc291dGg9dC5zb3V0aCxlLmVhc3Q9dC5lYXN0LGUubm9ydGg9dC5ub3J0aCxlKTpuZXcgSmUodC53ZXN0LHQuc291dGgsdC5lYXN0LHQubm9ydGgpfTtKZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaT1aKGksMCksdD09PWV8fG0odCkmJm0oZSkmJk1hdGguYWJzKHQud2VzdC1lLndlc3QpPD1pJiZNYXRoLmFicyh0LnNvdXRoLWUuc291dGgpPD1pJiZNYXRoLmFicyh0LmVhc3QtZS5lYXN0KTw9aSYmTWF0aC5hYnModC5ub3J0aC1lLm5vcnRoKTw9aX07SmUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBKZS5jbG9uZSh0aGlzLHQpfTtKZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBKZS5lcXVhbHModGhpcyx0KX07SmUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lndlc3Q9PT1lLndlc3QmJnQuc291dGg9PT1lLnNvdXRoJiZ0LmVhc3Q9PT1lLmVhc3QmJnQubm9ydGg9PT1lLm5vcnRofTtKZS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBKZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07SmUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQubm9ydGg7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoIixlLC1MLlBJX09WRVJfVFdPKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGgiLGUsTC5QSV9PVkVSX1RXTyk7bGV0IGk9dC5zb3V0aDtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygic291dGgiLGksLUwuUElfT1ZFUl9UV08pLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJzb3V0aCIsaSxMLlBJX09WRVJfVFdPKTtsZXQgbj10Lndlc3Q7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIndlc3QiLG4sLU1hdGguUEkpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0IixuLE1hdGguUEkpO2xldCBzPXQuZWFzdDtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZWFzdCIscywtTWF0aC5QSSkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImVhc3QiLHMsTWF0aC5QSSl9O0plLnNvdXRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0Lndlc3QsdC5zb3V0aCl9O0plLm5vcnRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0Lndlc3QsdC5ub3J0aCl9O0plLm5vcnRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0LmVhc3QsdC5ub3J0aCl9O0plLnNvdXRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0LmVhc3QsdC5zb3V0aCl9O0plLmNlbnRlcj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KTtsZXQgaT10LmVhc3Qsbj10Lndlc3Q7aTxuJiYoaSs9TC5UV09fUEkpO2xldCBzPUwubmVnYXRpdmVQaVRvUGkoKG4raSkqLjUpLG89KHQuc291dGgrdC5ub3J0aCkqLjU7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPXMsZS5sYXRpdHVkZT1vLGUuaGVpZ2h0PTAsZSk6bmV3IHV0KHMsbyl9O0plLmludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHAudHlwZU9mLm9iamVjdCgib3RoZXJSZWN0YW5nbGUiLGUpO2xldCBuPXQuZWFzdCxzPXQud2VzdCxvPWUuZWFzdCxyPWUud2VzdDtuPHMmJm8+MD9uKz1MLlRXT19QSTpvPHImJm4+MCYmKG8rPUwuVFdPX1BJKSxuPHMmJnI8MD9yKz1MLlRXT19QSTpvPHImJnM8MCYmKHMrPUwuVFdPX1BJKTtsZXQgYT1MLm5lZ2F0aXZlUGlUb1BpKE1hdGgubWF4KHMscikpLGg9TC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihuLG8pKTtpZigodC53ZXN0PHQuZWFzdHx8ZS53ZXN0PGUuZWFzdCkmJmg8PWEpcmV0dXJuO2xldCBBPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksZD1NYXRoLm1pbih0Lm5vcnRoLGUubm9ydGgpO2lmKCEoQT49ZCkpcmV0dXJuIG0oaSk/KGkud2VzdD1hLGkuc291dGg9QSxpLmVhc3Q9aCxpLm5vcnRoPWQsaSk6bmV3IEplKGEsQSxoLGQpfTtKZS5zaW1wbGVJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSxwLnR5cGVPZi5vYmplY3QoIm90aGVyUmVjdGFuZ2xlIixlKTtsZXQgbj1NYXRoLm1heCh0Lndlc3QsZS53ZXN0KSxzPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksbz1NYXRoLm1pbih0LmVhc3QsZS5lYXN0KSxyPU1hdGgubWluKHQubm9ydGgsZS5ub3J0aCk7aWYoIShzPj1yfHxuPj1vKSlyZXR1cm4gbShpKT8oaS53ZXN0PW4saS5zb3V0aD1zLGkuZWFzdD1vLGkubm9ydGg9cixpKTpuZXcgSmUobixzLG8scil9O0plLnVuaW9uPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkscC50eXBlT2Yub2JqZWN0KCJvdGhlclJlY3RhbmdsZSIsZSksbShpKXx8KGk9bmV3IEplKTtsZXQgbj10LmVhc3Qscz10Lndlc3Qsbz1lLmVhc3Qscj1lLndlc3Q7bjxzJiZvPjA/bis9TC5UV09fUEk6bzxyJiZuPjAmJihvKz1MLlRXT19QSSksbjxzJiZyPDA/cis9TC5UV09fUEk6bzxyJiZzPDAmJihzKz1MLlRXT19QSSk7bGV0IGE9TC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihzLHIpKSxoPUwubmVnYXRpdmVQaVRvUGkoTWF0aC5tYXgobixvKSk7cmV0dXJuIGkud2VzdD1hLGkuc291dGg9TWF0aC5taW4odC5zb3V0aCxlLnNvdXRoKSxpLmVhc3Q9aCxpLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5ub3J0aCksaX07SmUuZXhwYW5kPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydG9ncmFwaGljIixlKSxtKGkpfHwoaT1uZXcgSmUpLGkud2VzdD1NYXRoLm1pbih0Lndlc3QsZS5sb25naXR1ZGUpLGkuc291dGg9TWF0aC5taW4odC5zb3V0aCxlLmxhdGl0dWRlKSxpLmVhc3Q9TWF0aC5tYXgodC5lYXN0LGUubG9uZ2l0dWRlKSxpLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5sYXRpdHVkZSksaX07SmUuY29udGFpbnM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkscC50eXBlT2Yub2JqZWN0KCJjYXJ0b2dyYXBoaWMiLGUpO2xldCBpPWUubG9uZ2l0dWRlLG49ZS5sYXRpdHVkZSxzPXQud2VzdCxvPXQuZWFzdDtyZXR1cm4gbzxzJiYobys9TC5UV09fUEksaTwwJiYoaSs9TC5UV09fUEkpKSwoaT5zfHxMLmVxdWFsc0Vwc2lsb24oaSxzLEwuRVBTSUxPTjE0KSkmJihpPG98fEwuZXF1YWxzRXBzaWxvbihpLG8sTC5FUFNJTE9OMTQpKSYmbj49dC5zb3V0aCYmbjw9dC5ub3J0aH07Zzc9bmV3IHV0O0plLnN1YnNhbXBsZT1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksZT1aKGUsb3QuV0dTODQpLGk9WihpLDApLG0obil8fChuPVtdKTtsZXQgcz0wLG89dC5ub3J0aCxyPXQuc291dGgsYT10LmVhc3QsaD10Lndlc3QsQT1nNztBLmhlaWdodD1pLEEubG9uZ2l0dWRlPWgsQS5sYXRpdHVkZT1vLG5bc109ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihBLG5bc10pLHMrKyxBLmxvbmdpdHVkZT1hLG5bc109ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihBLG5bc10pLHMrKyxBLmxhdGl0dWRlPXIsbltzXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEEsbltzXSkscysrLEEubG9uZ2l0dWRlPWgsbltzXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEEsbltzXSkscysrLG88MD9BLmxhdGl0dWRlPW86cj4wP0EubGF0aXR1ZGU9cjpBLmxhdGl0dWRlPTA7Zm9yKGxldCBkPTE7ZDw4OysrZClBLmxvbmdpdHVkZT0tTWF0aC5QSStkKkwuUElfT1ZFUl9UV08sSmUuY29udGFpbnModCxBKSYmKG5bc109ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihBLG5bc10pLHMrKyk7cmV0dXJuIEEubGF0aXR1ZGU9PT0wJiYoQS5sb25naXR1ZGU9aCxuW3NdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oQSxuW3NdKSxzKyssQS5sb25naXR1ZGU9YSxuW3NdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oQSxuW3NdKSxzKyspLG4ubGVuZ3RoPXMsbn07SmUuc3Vic2VjdGlvbj1mdW5jdGlvbih0LGUsaSxuLHMsbyl7aWYocC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygid2VzdExlcnAiLGUsMSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInNvdXRoTGVycCIsaSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixpLDEpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJlYXN0TGVycCIsbiwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiZWFzdExlcnAiLG4sMSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoTGVycCIscywwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGhMZXJwIixzLDEpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSxuKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixpLHMpLG0obyl8fChvPW5ldyBKZSksdC53ZXN0PD10LmVhc3Qpe2xldCBhPXQuZWFzdC10Lndlc3Q7by53ZXN0PXQud2VzdCtlKmEsby5lYXN0PXQud2VzdCtuKmF9ZWxzZXtsZXQgYT1MLlRXT19QSSt0LmVhc3QtdC53ZXN0O28ud2VzdD1MLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtlKmEpLG8uZWFzdD1MLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtuKmEpfWxldCByPXQubm9ydGgtdC5zb3V0aDtyZXR1cm4gby5zb3V0aD10LnNvdXRoK2kqcixvLm5vcnRoPXQuc291dGgrcypyLGU9PT0xJiYoby53ZXN0PXQuZWFzdCksbj09PTEmJihvLmVhc3Q9dC5lYXN0KSxpPT09MSYmKG8uc291dGg9dC5ub3J0aCkscz09PTEmJihvLm5vcnRoPXQubm9ydGgpLG99O0plLk1BWF9WQUxVRT1PYmplY3QuZnJlZXplKG5ldyBKZSgtTWF0aC5QSSwtTC5QSV9PVkVSX1RXTyxNYXRoLlBJLEwuUElfT1ZFUl9UV08pKTtYdD1KZX0pO2Z1bmN0aW9uIG5zKHQsZSxpLG4pe3RoaXMueD1aKHQsMCksdGhpcy55PVooZSwwKSx0aGlzLndpZHRoPVooaSwwKSx0aGlzLmhlaWdodD1aKG4sMCl9dmFyIFQ3LE43LGI3LG1pLEVyPU8oKCk9PntYZSgpO3JpKCk7YWUoKTtidCgpO210KCk7ekEoKTtuYygpO3BuKCk7bnMucGFja2VkTGVuZ3RoPTQ7bnMucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGVbaSsrXT10LngsZVtpKytdPXQueSxlW2krK109dC53aWR0aCxlW2ldPXQuaGVpZ2h0LGV9O25zLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApLG0oaSl8fChpPW5ldyBucyksaS54PXRbZSsrXSxpLnk9dFtlKytdLGkud2lkdGg9dFtlKytdLGkuaGVpZ2h0PXRbZV0saX07bnMuZnJvbVBvaW50cz1mdW5jdGlvbih0LGUpe2lmKG0oZSl8fChlPW5ldyBucyksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gZS54PTAsZS55PTAsZS53aWR0aD0wLGUuaGVpZ2h0PTAsZTtsZXQgaT10Lmxlbmd0aCxuPXRbMF0ueCxzPXRbMF0ueSxvPXRbMF0ueCxyPXRbMF0ueTtmb3IobGV0IGE9MTthPGk7YSsrKXtsZXQgaD10W2FdLEE9aC54LGQ9aC55O249TWF0aC5taW4oQSxuKSxvPU1hdGgubWF4KEEsbykscz1NYXRoLm1pbihkLHMpLHI9TWF0aC5tYXgoZCxyKX1yZXR1cm4gZS54PW4sZS55PXMsZS53aWR0aD1vLW4sZS5oZWlnaHQ9ci1zLGV9O1Q3PW5ldyBPcyxONz1uZXcgdXQsYjc9bmV3IHV0O25zLmZyb21SZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGkpe2lmKG0oaSl8fChpPW5ldyBucyksIW0odCkpcmV0dXJuIGkueD0wLGkueT0wLGkud2lkdGg9MCxpLmhlaWdodD0wLGk7ZT1aKGUsVDcpO2xldCBuPWUucHJvamVjdChYdC5zb3V0aHdlc3QodCxONykpLHM9ZS5wcm9qZWN0KFh0Lm5vcnRoZWFzdCh0LGI3KSk7cmV0dXJuIG50LnN1YnRyYWN0KHMsbixzKSxpLng9bi54LGkueT1uLnksaS53aWR0aD1zLngsaS5oZWlnaHQ9cy55LGl9O25zLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS54PXQueCxlLnk9dC55LGUud2lkdGg9dC53aWR0aCxlLmhlaWdodD10LmhlaWdodCxlKTpuZXcgbnModC54LHQueSx0LndpZHRoLHQuaGVpZ2h0KX07bnMudW5pb249ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksbShpKXx8KGk9bmV3IG5zKTtsZXQgbj1NYXRoLm1pbih0LngsZS54KSxzPU1hdGgubWluKHQueSxlLnkpLG89TWF0aC5tYXgodC54K3Qud2lkdGgsZS54K2Uud2lkdGgpLHI9TWF0aC5tYXgodC55K3QuaGVpZ2h0LGUueStlLmhlaWdodCk7cmV0dXJuIGkueD1uLGkueT1zLGkud2lkdGg9by1uLGkuaGVpZ2h0PXItcyxpfTtucy5leHBhbmQ9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSxwLnR5cGVPZi5vYmplY3QoInBvaW50IixlKSxpPW5zLmNsb25lKHQsaSk7bGV0IG49ZS54LWkueCxzPWUueS1pLnk7cmV0dXJuIG4+aS53aWR0aD9pLndpZHRoPW46bjwwJiYoaS53aWR0aC09bixpLng9ZS54KSxzPmkuaGVpZ2h0P2kuaGVpZ2h0PXM6czwwJiYoaS5oZWlnaHQtPXMsaS55PWUueSksaX07bnMuaW50ZXJzZWN0PWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKTtsZXQgaT10Lngsbj10Lnkscz1lLngsbz1lLnk7cmV0dXJuIGk+cytlLndpZHRofHxpK3Qud2lkdGg8c3x8bit0LmhlaWdodDxvfHxuPm8rZS5oZWlnaHQ/Tm4uT1VUU0lERTpObi5JTlRFUlNFQ1RJTkd9O25zLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQud2lkdGg9PT1lLndpZHRoJiZ0LmhlaWdodD09PWUuaGVpZ2h0fTtucy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5zLmNsb25lKHRoaXMsdCl9O25zLnByb3RvdHlwZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG5zLmludGVyc2VjdCh0aGlzLHQpfTtucy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBucy5lcXVhbHModGhpcyx0KX07bWk9bnN9KTtmdW5jdGlvbiBGNyh0LGUpe3RoaXMuc3RhcnQ9Wih0LDApLHRoaXMuc3RvcD1aKGUsMCl9dmFyIGNBLEhaPU8oKCk9PntidCgpO2NBPUY3fSk7ZnVuY3Rpb24gTGUodCxlKXt0aGlzLmNlbnRlcj1sLmNsb25lKFoodCxsLlpFUk8pKSx0aGlzLnJhZGl1cz1aKGUsMCl9dmFyIGlULG5ULHNULG9ULHJULGFULEFULEpzLGhULGNULGxULGRULFk3LFM3LE83LFY3LHRULGVULEc3LEI3LFc3LEQ3LE03LFU3LFE3LGs3LEw3LHk3LHc3LHg3LEoyLFA3LEo3LGo3LEg3LHY3LGoyLHo3LE50LF9pPU8oKCk9PntIdCgpO3JpKCk7YWUoKTtidCgpO210KCk7VmUoKTt6QSgpO25jKCk7SFooKTtfZSgpO2RuKCk7RmkoKTtwbigpO2lUPW5ldyBsLG5UPW5ldyBsLHNUPW5ldyBsLG9UPW5ldyBsLHJUPW5ldyBsLGFUPW5ldyBsLEFUPW5ldyBsLEpzPW5ldyBsLGhUPW5ldyBsLGNUPW5ldyBsLGxUPW5ldyBsLGRUPW5ldyBsLFk3PTQvMypMLlBJO0xlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXtpZihtKGUpfHwoZT1uZXcgTGUpLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIGUuY2VudGVyPWwuY2xvbmUobC5aRVJPLGUuY2VudGVyKSxlLnJhZGl1cz0wLGU7bGV0IGk9bC5jbG9uZSh0WzBdLEFUKSxuPWwuY2xvbmUoaSxpVCkscz1sLmNsb25lKGksblQpLG89bC5jbG9uZShpLHNUKSxyPWwuY2xvbmUoaSxvVCksYT1sLmNsb25lKGksclQpLGg9bC5jbG9uZShpLGFUKSxBPXQubGVuZ3RoLGQ7Zm9yKGQ9MTtkPEE7ZCsrKXtsLmNsb25lKHRbZF0saSk7bGV0IFU9aS54LGs9aS55LHk9aS56O1U8bi54JiZsLmNsb25lKGksbiksVT5yLngmJmwuY2xvbmUoaSxyKSxrPHMueSYmbC5jbG9uZShpLHMpLGs+YS55JiZsLmNsb25lKGksYSkseTxvLnomJmwuY2xvbmUoaSxvKSx5PmgueiYmbC5jbG9uZShpLGgpfWxldCBmPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KHIsbixKcykpLEU9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoYSxzLEpzKSksXz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChoLG8sSnMpKSxSPW4sST1yLEM9ZjtFPkMmJihDPUUsUj1zLEk9YSksXz5DJiYoQz1fLFI9byxJPWgpO2xldCBOPWhUO04ueD0oUi54K0kueCkqLjUsTi55PShSLnkrSS55KSouNSxOLno9KFIueitJLnopKi41O2xldCBUPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEksTixKcykpLEY9TWF0aC5zcXJ0KFQpLGI9Y1Q7Yi54PW4ueCxiLnk9cy55LGIuej1vLno7bGV0IEc9bFQ7Ry54PXIueCxHLnk9YS55LEcuej1oLno7bGV0IE09bC5taWRwb2ludChiLEcsZFQpLFE9MDtmb3IoZD0wO2Q8QTtkKyspe2wuY2xvbmUodFtkXSxpKTtsZXQgVT1sLm1hZ25pdHVkZShsLnN1YnRyYWN0KGksTSxKcykpO1U+USYmKFE9VSk7bGV0IGs9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoaSxOLEpzKSk7aWYoaz5UKXtsZXQgeT1NYXRoLnNxcnQoayk7Rj0oRit5KSouNSxUPUYqRjtsZXQgYz15LUY7Ti54PShGKk4ueCtjKmkueCkveSxOLnk9KEYqTi55K2MqaS55KS95LE4uej0oRipOLnorYyppLnopL3l9fXJldHVybiBGPFE/KGwuY2xvbmUoTixlLmNlbnRlciksZS5yYWRpdXM9Rik6KGwuY2xvbmUoTSxlLmNlbnRlciksZS5yYWRpdXM9USksZX07Uzc9bmV3IE9zLE83PW5ldyBsLFY3PW5ldyBsLHRUPW5ldyB1dCxlVD1uZXcgdXQ7TGUuZnJvbVJlY3RhbmdsZTJEPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gTGUuZnJvbVJlY3RhbmdsZVdpdGhIZWlnaHRzMkQodCxlLDAsMCxpKX07TGUuZnJvbVJlY3RhbmdsZVdpdGhIZWlnaHRzMkQ9ZnVuY3Rpb24odCxlLGksbixzKXtpZihtKHMpfHwocz1uZXcgTGUpLCFtKHQpKXJldHVybiBzLmNlbnRlcj1sLmNsb25lKGwuWkVSTyxzLmNlbnRlcikscy5yYWRpdXM9MCxzO2U9WihlLFM3KSxYdC5zb3V0aHdlc3QodCx0VCksdFQuaGVpZ2h0PWksWHQubm9ydGhlYXN0KHQsZVQpLGVULmhlaWdodD1uO2xldCBvPWUucHJvamVjdCh0VCxPNykscj1lLnByb2plY3QoZVQsVjcpLGE9ci54LW8ueCxoPXIueS1vLnksQT1yLnotby56O3MucmFkaXVzPU1hdGguc3FydChhKmEraCpoK0EqQSkqLjU7bGV0IGQ9cy5jZW50ZXI7cmV0dXJuIGQueD1vLngrYSouNSxkLnk9by55K2gqLjUsZC56PW8ueitBKi41LHN9O0c3PVtdO0xlLmZyb21SZWN0YW5nbGUzRD1mdW5jdGlvbih0LGUsaSxuKXtpZihlPVooZSxvdC5XR1M4NCksaT1aKGksMCksbShuKXx8KG49bmV3IExlKSwhbSh0KSlyZXR1cm4gbi5jZW50ZXI9bC5jbG9uZShsLlpFUk8sbi5jZW50ZXIpLG4ucmFkaXVzPTAsbjtsZXQgcz1YdC5zdWJzYW1wbGUodCxlLGksRzcpO3JldHVybiBMZS5mcm9tUG9pbnRzKHMsbil9O0xlLmZyb21WZXJ0aWNlcz1mdW5jdGlvbih0LGUsaSxuKXtpZihtKG4pfHwobj1uZXcgTGUpLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIG4uY2VudGVyPWwuY2xvbmUobC5aRVJPLG4uY2VudGVyKSxuLnJhZGl1cz0wLG47ZT1aKGUsbC5aRVJPKSxpPVooaSwzKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygic3RyaWRlIixpLDMpO2xldCBzPUFUO3MueD10WzBdK2UueCxzLnk9dFsxXStlLnkscy56PXRbMl0rZS56O2xldCBvPWwuY2xvbmUocyxpVCkscj1sLmNsb25lKHMsblQpLGE9bC5jbG9uZShzLHNUKSxoPWwuY2xvbmUocyxvVCksQT1sLmNsb25lKHMsclQpLGQ9bC5jbG9uZShzLGFUKSxmPXQubGVuZ3RoLEU7Zm9yKEU9MDtFPGY7RSs9aSl7bGV0IHk9dFtFXStlLngsYz10W0UrMV0rZS55LGc9dFtFKzJdK2UuejtzLng9eSxzLnk9YyxzLno9Zyx5PG8ueCYmbC5jbG9uZShzLG8pLHk+aC54JiZsLmNsb25lKHMsaCksYzxyLnkmJmwuY2xvbmUocyxyKSxjPkEueSYmbC5jbG9uZShzLEEpLGc8YS56JiZsLmNsb25lKHMsYSksZz5kLnomJmwuY2xvbmUocyxkKX1sZXQgXz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChoLG8sSnMpKSxSPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEEscixKcykpLEk9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoZCxhLEpzKSksQz1vLE49aCxUPV87Uj5UJiYoVD1SLEM9cixOPUEpLEk+VCYmKFQ9SSxDPWEsTj1kKTtsZXQgRj1oVDtGLng9KEMueCtOLngpKi41LEYueT0oQy55K04ueSkqLjUsRi56PShDLnorTi56KSouNTtsZXQgYj1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChOLEYsSnMpKSxHPU1hdGguc3FydChiKSxNPWNUO00ueD1vLngsTS55PXIueSxNLno9YS56O2xldCBRPWxUO1EueD1oLngsUS55PUEueSxRLno9ZC56O2xldCBVPWwubWlkcG9pbnQoTSxRLGRUKSxrPTA7Zm9yKEU9MDtFPGY7RSs9aSl7cy54PXRbRV0rZS54LHMueT10W0UrMV0rZS55LHMuej10W0UrMl0rZS56O2xldCB5PWwubWFnbml0dWRlKGwuc3VidHJhY3QocyxVLEpzKSk7eT5rJiYoaz15KTtsZXQgYz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChzLEYsSnMpKTtpZihjPmIpe2xldCBnPU1hdGguc3FydChjKTtHPShHK2cpKi41LGI9RypHO2xldCBWPWctRztGLng9KEcqRi54K1Yqcy54KS9nLEYueT0oRypGLnkrVipzLnkpL2csRi56PShHKkYueitWKnMueikvZ319cmV0dXJuIEc8az8obC5jbG9uZShGLG4uY2VudGVyKSxuLnJhZGl1cz1HKToobC5jbG9uZShVLG4uY2VudGVyKSxuLnJhZGl1cz1rKSxufTtMZS5mcm9tRW5jb2RlZENhcnRlc2lhblZlcnRpY2VzPWZ1bmN0aW9uKHQsZSxpKXtpZihtKGkpfHwoaT1uZXcgTGUpLCFtKHQpfHwhbShlKXx8dC5sZW5ndGghPT1lLmxlbmd0aHx8dC5sZW5ndGg9PT0wKXJldHVybiBpLmNlbnRlcj1sLmNsb25lKGwuWkVSTyxpLmNlbnRlciksaS5yYWRpdXM9MCxpO2xldCBuPUFUO24ueD10WzBdK2VbMF0sbi55PXRbMV0rZVsxXSxuLno9dFsyXStlWzJdO2xldCBzPWwuY2xvbmUobixpVCksbz1sLmNsb25lKG4sblQpLHI9bC5jbG9uZShuLHNUKSxhPWwuY2xvbmUobixvVCksaD1sLmNsb25lKG4sclQpLEE9bC5jbG9uZShuLGFUKSxkPXQubGVuZ3RoLGY7Zm9yKGY9MDtmPGQ7Zis9Myl7bGV0IGs9dFtmXStlW2ZdLHk9dFtmKzFdK2VbZisxXSxjPXRbZisyXStlW2YrMl07bi54PWssbi55PXksbi56PWMsazxzLngmJmwuY2xvbmUobixzKSxrPmEueCYmbC5jbG9uZShuLGEpLHk8by55JiZsLmNsb25lKG4sbykseT5oLnkmJmwuY2xvbmUobixoKSxjPHIueiYmbC5jbG9uZShuLHIpLGM+QS56JiZsLmNsb25lKG4sQSl9bGV0IEU9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoYSxzLEpzKSksXz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChoLG8sSnMpKSxSPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEEscixKcykpLEk9cyxDPWEsTj1FO18+TiYmKE49XyxJPW8sQz1oKSxSPk4mJihOPVIsST1yLEM9QSk7bGV0IFQ9aFQ7VC54PShJLngrQy54KSouNSxULnk9KEkueStDLnkpKi41LFQuej0oSS56K0MueikqLjU7bGV0IEY9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoQyxULEpzKSksYj1NYXRoLnNxcnQoRiksRz1jVDtHLng9cy54LEcueT1vLnksRy56PXIuejtsZXQgTT1sVDtNLng9YS54LE0ueT1oLnksTS56PUEuejtsZXQgUT1sLm1pZHBvaW50KEcsTSxkVCksVT0wO2ZvcihmPTA7ZjxkO2YrPTMpe24ueD10W2ZdK2VbZl0sbi55PXRbZisxXStlW2YrMV0sbi56PXRbZisyXStlW2YrMl07bGV0IGs9bC5tYWduaXR1ZGUobC5zdWJ0cmFjdChuLFEsSnMpKTtrPlUmJihVPWspO2xldCB5PWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KG4sVCxKcykpO2lmKHk+Ril7bGV0IGM9TWF0aC5zcXJ0KHkpO2I9KGIrYykqLjUsRj1iKmI7bGV0IGc9Yy1iO1QueD0oYipULngrZypuLngpL2MsVC55PShiKlQueStnKm4ueSkvYyxULno9KGIqVC56K2cqbi56KS9jfX1yZXR1cm4gYjxVPyhsLmNsb25lKFQsaS5jZW50ZXIpLGkucmFkaXVzPWIpOihsLmNsb25lKFEsaS5jZW50ZXIpLGkucmFkaXVzPVUpLGl9O0xlLmZyb21Db3JuZXJQb2ludHM9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgiY29ybmVyIix0KSxwLnR5cGVPZi5vYmplY3QoIm9wcG9zaXRlQ29ybmVyIixlKSxtKGkpfHwoaT1uZXcgTGUpO2xldCBuPWwubWlkcG9pbnQodCxlLGkuY2VudGVyKTtyZXR1cm4gaS5yYWRpdXM9bC5kaXN0YW5jZShuLGUpLGl9O0xlLmZyb21FbGxpcHNvaWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJlbGxpcHNvaWQiLHQpLG0oZSl8fChlPW5ldyBMZSksbC5jbG9uZShsLlpFUk8sZS5jZW50ZXIpLGUucmFkaXVzPXQubWF4aW11bVJhZGl1cyxlfTtCNz1uZXcgbDtMZS5mcm9tQm91bmRpbmdTcGhlcmVzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IExlKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLmNlbnRlcj1sLmNsb25lKGwuWkVSTyxlLmNlbnRlciksZS5yYWRpdXM9MCxlO2xldCBpPXQubGVuZ3RoO2lmKGk9PT0xKXJldHVybiBMZS5jbG9uZSh0WzBdLGUpO2lmKGk9PT0yKXJldHVybiBMZS51bmlvbih0WzBdLHRbMV0sZSk7bGV0IG49W10scztmb3Iocz0wO3M8aTtzKyspbi5wdXNoKHRbc10uY2VudGVyKTtlPUxlLmZyb21Qb2ludHMobixlKTtsZXQgbz1lLmNlbnRlcixyPWUucmFkaXVzO2ZvcihzPTA7czxpO3MrKyl7bGV0IGE9dFtzXTtyPU1hdGgubWF4KHIsbC5kaXN0YW5jZShvLGEuY2VudGVyLEI3KSthLnJhZGl1cyl9cmV0dXJuIGUucmFkaXVzPXIsZX07Vzc9bmV3IGwsRDc9bmV3IGwsTTc9bmV3IGw7TGUuZnJvbU9yaWVudGVkQm91bmRpbmdCb3g9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoIm9yaWVudGVkQm91bmRpbmdCb3giLHQpLG0oZSl8fChlPW5ldyBMZSk7bGV0IGk9dC5oYWxmQXhlcyxuPWx0LmdldENvbHVtbihpLDAsVzcpLHM9bHQuZ2V0Q29sdW1uKGksMSxENyksbz1sdC5nZXRDb2x1bW4oaSwyLE03KTtyZXR1cm4gbC5hZGQobixzLG4pLGwuYWRkKG4sbyxuKSxlLmNlbnRlcj1sLmNsb25lKHQuY2VudGVyLGUuY2VudGVyKSxlLnJhZGl1cz1sLm1hZ25pdHVkZShuKSxlfTtVNz1uZXcgbCxRNz1uZXcgbDtMZS5mcm9tVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybWF0aW9uIix0KSxtKGUpfHwoZT1uZXcgTGUpO2xldCBpPWF0LmdldFRyYW5zbGF0aW9uKHQsVTcpLG49YXQuZ2V0U2NhbGUodCxRNykscz0uNSpsLm1hZ25pdHVkZShuKTtyZXR1cm4gZS5jZW50ZXI9bC5jbG9uZShpLGUuY2VudGVyKSxlLnJhZGl1cz1zLGV9O0xlLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5jZW50ZXI9bC5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksZS5yYWRpdXM9dC5yYWRpdXMsZSk6bmV3IExlKHQuY2VudGVyLHQucmFkaXVzKX07TGUucGFja2VkTGVuZ3RoPTQ7TGUucGFjaz1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCk7bGV0IG49dC5jZW50ZXI7cmV0dXJuIGVbaSsrXT1uLngsZVtpKytdPW4ueSxlW2krK109bi56LGVbaV09dC5yYWRpdXMsZX07TGUudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgTGUpO2xldCBuPWkuY2VudGVyO3JldHVybiBuLng9dFtlKytdLG4ueT10W2UrK10sbi56PXRbZSsrXSxpLnJhZGl1cz10W2VdLGl9O2s3PW5ldyBsLEw3PW5ldyBsO0xlLnVuaW9uPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLG0oaSl8fChpPW5ldyBMZSk7bGV0IG49dC5jZW50ZXIscz10LnJhZGl1cyxvPWUuY2VudGVyLHI9ZS5yYWRpdXMsYT1sLnN1YnRyYWN0KG8sbixrNyksaD1sLm1hZ25pdHVkZShhKTtpZihzPj1oK3IpcmV0dXJuIHQuY2xvbmUoaSksaTtpZihyPj1oK3MpcmV0dXJuIGUuY2xvbmUoaSksaTtsZXQgQT0ocytoK3IpKi41LGQ9bC5tdWx0aXBseUJ5U2NhbGFyKGEsKC1zK0EpL2gsTDcpO3JldHVybiBsLmFkZChkLG4sZCksbC5jbG9uZShkLGkuY2VudGVyKSxpLnJhZGl1cz1BLGl9O3k3PW5ldyBsO0xlLmV4cGFuZD1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHAudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLGk9TGUuY2xvbmUodCxpKTtsZXQgbj1sLm1hZ25pdHVkZShsLnN1YnRyYWN0KGUsaS5jZW50ZXIseTcpKTtyZXR1cm4gbj5pLnJhZGl1cyYmKGkucmFkaXVzPW4pLGl9O0xlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHAudHlwZU9mLm9iamVjdCgicGxhbmUiLGUpO2xldCBpPXQuY2VudGVyLG49dC5yYWRpdXMscz1lLm5vcm1hbCxvPWwuZG90KHMsaSkrZS5kaXN0YW5jZTtyZXR1cm4gbzwtbj9Obi5PVVRTSURFOm88bj9Obi5JTlRFUlNFQ1RJTkc6Tm4uSU5TSURFfTtMZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkscC50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0oaSl8fChpPW5ldyBMZSksaS5jZW50ZXI9YXQubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsaS5jZW50ZXIpLGkucmFkaXVzPWF0LmdldE1heGltdW1TY2FsZShlKSp0LnJhZGl1cyxpfTt3Nz1uZXcgbDtMZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgic3BoZXJlIix0KSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsZSk7bGV0IGk9bC5zdWJ0cmFjdCh0LmNlbnRlcixlLHc3KSxuPWwubWFnbml0dWRlKGkpLXQucmFkaXVzO3JldHVybiBuPD0wPzA6bipufTtMZS50cmFuc2Zvcm1XaXRob3V0U2NhbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkscC50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0oaSl8fChpPW5ldyBMZSksaS5jZW50ZXI9YXQubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsaS5jZW50ZXIpLGkucmFkaXVzPXQucmFkaXVzLGl9O3g3PW5ldyBsO0xlLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkscC50eXBlT2Yub2JqZWN0KCJwb3NpdGlvbiIsZSkscC50eXBlT2Yub2JqZWN0KCJkaXJlY3Rpb24iLGkpLG0obil8fChuPW5ldyBjQSk7bGV0IHM9bC5zdWJ0cmFjdCh0LmNlbnRlcixlLHg3KSxvPWwuZG90KGkscyk7cmV0dXJuIG4uc3RhcnQ9by10LnJhZGl1cyxuLnN0b3A9byt0LnJhZGl1cyxufTtKMj1uZXcgbCxQNz1uZXcgbCxKNz1uZXcgbCxqNz1uZXcgbCxINz1uZXcgbCx2Nz1uZXcgdXQsajI9bmV3IEFycmF5KDgpO2ZvcihsZXQgdD0wO3Q8ODsrK3QpajJbdF09bmV3IGw7ejc9bmV3IE9zO0xlLnByb2plY3RUbzJEPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCksZT1aKGUsejcpO2xldCBuPWUuZWxsaXBzb2lkLHM9dC5jZW50ZXIsbz10LnJhZGl1cyxyO2wuZXF1YWxzKHMsbC5aRVJPKT9yPWwuY2xvbmUobC5VTklUX1gsSjIpOnI9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwocyxKMik7bGV0IGE9bC5jcm9zcyhsLlVOSVRfWixyLFA3KTtsLm5vcm1hbGl6ZShhLGEpO2xldCBoPWwuY3Jvc3MocixhLEo3KTtsLm5vcm1hbGl6ZShoLGgpLGwubXVsdGlwbHlCeVNjYWxhcihyLG8sciksbC5tdWx0aXBseUJ5U2NhbGFyKGgsbyxoKSxsLm11bHRpcGx5QnlTY2FsYXIoYSxvLGEpO2xldCBBPWwubmVnYXRlKGgsSDcpLGQ9bC5uZWdhdGUoYSxqNyksZj1qMixFPWZbMF07bC5hZGQocixoLEUpLGwuYWRkKEUsYSxFKSxFPWZbMV0sbC5hZGQocixoLEUpLGwuYWRkKEUsZCxFKSxFPWZbMl0sbC5hZGQocixBLEUpLGwuYWRkKEUsZCxFKSxFPWZbM10sbC5hZGQocixBLEUpLGwuYWRkKEUsYSxFKSxsLm5lZ2F0ZShyLHIpLEU9Zls0XSxsLmFkZChyLGgsRSksbC5hZGQoRSxhLEUpLEU9Zls1XSxsLmFkZChyLGgsRSksbC5hZGQoRSxkLEUpLEU9Zls2XSxsLmFkZChyLEEsRSksbC5hZGQoRSxkLEUpLEU9Zls3XSxsLmFkZChyLEEsRSksbC5hZGQoRSxhLEUpO2xldCBfPWYubGVuZ3RoO2ZvcihsZXQgTj0wO048XzsrK04pe2xldCBUPWZbTl07bC5hZGQocyxULFQpO2xldCBGPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoVCx2Nyk7ZS5wcm9qZWN0KEYsVCl9aT1MZS5mcm9tUG9pbnRzKGYsaSkscz1pLmNlbnRlcjtsZXQgUj1zLngsST1zLnksQz1zLno7cmV0dXJuIHMueD1DLHMueT1SLHMuej1JLGl9O0xlLmlzT2NjbHVkZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHAudHlwZU9mLm9iamVjdCgib2NjbHVkZXIiLGUpLCFlLmlzQm91bmRpbmdTcGhlcmVWaXNpYmxlKHQpfTtMZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJmwuZXF1YWxzKHQuY2VudGVyLGUuY2VudGVyKSYmdC5yYWRpdXM9PT1lLnJhZGl1c307TGUucHJvdG90eXBlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBMZS5pbnRlcnNlY3RQbGFuZSh0aGlzLHQpfTtMZS5wcm90b3R5cGUuZGlzdGFuY2VTcXVhcmVkVG89ZnVuY3Rpb24odCl7cmV0dXJuIExlLmRpc3RhbmNlU3F1YXJlZFRvKHRoaXMsdCl9O0xlLnByb3RvdHlwZS5jb21wdXRlUGxhbmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBMZS5jb21wdXRlUGxhbmVEaXN0YW5jZXModGhpcyx0LGUsaSl9O0xlLnByb3RvdHlwZS5pc09jY2x1ZGVkPWZ1bmN0aW9uKHQpe3JldHVybiBMZS5pc09jY2x1ZGVkKHRoaXMsdCl9O0xlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIExlLmVxdWFscyh0aGlzLHQpfTtMZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIExlLmNsb25lKHRoaXMsdCl9O0xlLnByb3RvdHlwZS52b2x1bWU9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnJhZGl1cztyZXR1cm4gWTcqdCp0KnR9O050PUxlfSk7ZnVuY3Rpb24gbEEodCxlKXtwLnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCksdGhpcy5fZWxsaXBzb2lkPXQsdGhpcy5fY2FtZXJhUG9zaXRpb249bmV3IGwsdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlPW5ldyBsLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQ9MCxtKGUpJiYodGhpcy5jYW1lcmFQb3NpdGlvbj1lKX1mdW5jdGlvbiB6Mih0LGUsaSl7aWYobShlKSYmZTwwJiZ0Lm1pbmltdW1SYWRpdXM+LWUpe2xldCBuPWwuZnJvbUVsZW1lbnRzKHQucmFkaWkueCtlLHQucmFkaWkueStlLHQucmFkaWkueitlLHE3KTt0PW90LmZyb21DYXJ0ZXNpYW4zKG4saSl9cmV0dXJuIHR9ZnVuY3Rpb24gSzIodCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJkaXJlY3Rpb25Ub1BvaW50IixlKSxwLmRlZmluZWQoInBvc2l0aW9ucyIsaSksbShuKXx8KG49bmV3IGwpO2xldCBzPXREKHQsZSksbz0wO2ZvcihsZXQgcj0wLGE9aS5sZW5ndGg7cjxhOysrcil7bGV0IGg9aVtyXSxBPXEyKHQsaCxzKTtpZihBPDApcmV0dXJuO289TWF0aC5tYXgobyxBKX1yZXR1cm4gJDIocyxvLG4pfWZ1bmN0aW9uIFgyKHQsZSxpLG4scyxvKXtwLnR5cGVPZi5vYmplY3QoImRpcmVjdGlvblRvUG9pbnQiLGUpLHAuZGVmaW5lZCgidmVydGljZXMiLGkpLHAudHlwZU9mLm51bWJlcigic3RyaWRlIixuKSxtKG8pfHwobz1uZXcgbCksbj1aKG4sMykscz1aKHMsbC5aRVJPKTtsZXQgcj10RCh0LGUpLGE9MDtmb3IobGV0IGg9MCxBPWkubGVuZ3RoO2g8QTtoKz1uKXt2Wi54PWlbaF0rcy54LHZaLnk9aVtoKzFdK3MueSx2Wi56PWlbaCsyXStzLno7bGV0IGQ9cTIodCx2WixyKTtpZihkPDApcmV0dXJuO2E9TWF0aC5tYXgoYSxkKX1yZXR1cm4gJDIocixhLG8pfWZ1bmN0aW9uIGZUKHQsZSxpKXtsZXQgbj1lLHM9aSxvPWwuc3VidHJhY3QodCxuLEgyKSxyPS1sLmRvdChvLG4pO3JldHVybiEoczwwP3I+MDpyPnMmJnIqci9sLm1hZ25pdHVkZVNxdWFyZWQobyk+cyl9ZnVuY3Rpb24gcTIodCxlLGkpe2xldCBuPXQudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlKGUsJDcpLHM9bC5tYWduaXR1ZGVTcXVhcmVkKG4pLG89TWF0aC5zcXJ0KHMpLHI9bC5kaXZpZGVCeVNjYWxhcihuLG8sdCQpO3M9TWF0aC5tYXgoMSxzKSxvPU1hdGgubWF4KDEsbyk7bGV0IGE9bC5kb3QocixpKSxoPWwubWFnbml0dWRlKGwuY3Jvc3MocixpLHIpKSxBPTEvbyxkPU1hdGguc3FydChzLTEpKkE7cmV0dXJuIDEvKGEqQS1oKmQpfWZ1bmN0aW9uICQyKHQsZSxpKXtpZighKGU8PTB8fGU9PT0xLzB8fGUhPT1lKSlyZXR1cm4gbC5tdWx0aXBseUJ5U2NhbGFyKHQsZSxpKX1mdW5jdGlvbiB0RCh0LGUpe3JldHVybiBsLmVxdWFscyhlLGwuWkVSTyk/ZToodC50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UoZSxtVCksbC5ub3JtYWxpemUobVQsbVQpKX12YXIgSDIsSzcsdjIsWDcscTcsdlosJDcsdCQsbVQsZEEsU209TygoKT0+e19pKCk7SHQoKTthZSgpO2J0KCk7bXQoKTtWZSgpO3BuKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobEEucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxjYW1lcmFQb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbWVyYVBvc2l0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7bGV0IGk9dGhpcy5fZWxsaXBzb2lkLnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZSh0LHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5TY2FsZWRTcGFjZSksbj1sLm1hZ25pdHVkZVNxdWFyZWQoaSktMTtsLmNsb25lKHQsdGhpcy5fY2FtZXJhUG9zaXRpb24pLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5TY2FsZWRTcGFjZT1pLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQ9bn19fSk7SDI9bmV3IGw7bEEucHJvdG90eXBlLmlzUG9pbnRWaXNpYmxlPWZ1bmN0aW9uKHQpe2xldCBpPXRoaXMuX2VsbGlwc29pZC50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UodCxIMik7cmV0dXJuIGZUKGksdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQpfTtsQS5wcm90b3R5cGUuaXNTY2FsZWRTcGFjZVBvaW50VmlzaWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gZlQodCx0aGlzLl9jYW1lcmFQb3NpdGlvbkluU2NhbGVkU3BhY2UsdGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZCl9O0s3PW5ldyBsO2xBLnByb3RvdHlwZS5pc1NjYWxlZFNwYWNlUG9pbnRWaXNpYmxlUG9zc2libHlVbmRlckVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2xldCBpPXRoaXMuX2VsbGlwc29pZCxuLHM7cmV0dXJuIG0oZSkmJmU8MCYmaS5taW5pbXVtUmFkaXVzPi1lPyhzPUs3LHMueD10aGlzLl9jYW1lcmFQb3NpdGlvbi54LyhpLnJhZGlpLngrZSkscy55PXRoaXMuX2NhbWVyYVBvc2l0aW9uLnkvKGkucmFkaWkueStlKSxzLno9dGhpcy5fY2FtZXJhUG9zaXRpb24uei8oaS5yYWRpaS56K2UpLG49cy54KnMueCtzLnkqcy55K3MueipzLnotMSk6KHM9dGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlLG49dGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZCksZlQodCxzLG4pfTtsQS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBLMih0aGlzLl9lbGxpcHNvaWQsdCxlLGkpfTt2Mj1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSk7bEEucHJvdG90eXBlLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZD1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz16Mih0aGlzLl9lbGxpcHNvaWQsaSx2Mik7cmV0dXJuIEsyKHMsdCxlLG4pfTtsQS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tVmVydGljZXM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gWDIodGhpcy5fZWxsaXBzb2lkLHQsZSxpLG4scyl9O2xBLnByb3RvdHlwZS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe2xldCByPXoyKHRoaXMuX2VsbGlwc29pZCxzLHYyKTtyZXR1cm4gWDIocix0LGUsaSxuLG8pfTtYNz1bXTtsQS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCk7bGV0IG49WHQuc3Vic2FtcGxlKHQsZSwwLFg3KSxzPU50LmZyb21Qb2ludHMobik7aWYoIShsLm1hZ25pdHVkZShzLmNlbnRlcik8LjEqZS5taW5pbXVtUmFkaXVzKSlyZXR1cm4gdGhpcy5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludChzLmNlbnRlcixuLGkpfTtxNz1uZXcgbDt2Wj1uZXcgbDskNz1uZXcgbCx0JD1uZXcgbDttVD1uZXcgbDtkQT1sQX0pO2Z1bmN0aW9uIEVUKHQsZSxpKXtyZXR1cm4gaTwwJiYoaSs9MSksaT4xJiYoaS09MSksaSo2PDE/dCsoZS10KSo2Kmk6aSoyPDE/ZTppKjM8Mj90KyhlLXQpKigyLzMtaSkqNjp0fWZ1bmN0aW9uIHEodCxlLGksbil7dGhpcy5yZWQ9Wih0LDEpLHRoaXMuZ3JlZW49WihlLDEpLHRoaXMuYmx1ZT1aKGksMSksdGhpcy5hbHBoYT1aKG4sMSl9dmFyIF9ULFJULGVoLGUkLGkkLG4kLHMkLFp0LFFuPU8oKCk9PnthZSgpO2J0KCk7bXQoKTtJbCgpO19lKCk7cS5mcm9tQ2FydGVzaWFuND1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksbShlKT8oZS5yZWQ9dC54LGUuZ3JlZW49dC55LGUuYmx1ZT10LnosZS5hbHBoYT10LncsZSk6bmV3IHEodC54LHQueSx0LnosdC53KX07cS5mcm9tQnl0ZXM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gdD1xLmJ5dGVUb0Zsb2F0KFoodCwyNTUpKSxlPXEuYnl0ZVRvRmxvYXQoWihlLDI1NSkpLGk9cS5ieXRlVG9GbG9hdChaKGksMjU1KSksbj1xLmJ5dGVUb0Zsb2F0KFoobiwyNTUpKSxtKHMpPyhzLnJlZD10LHMuZ3JlZW49ZSxzLmJsdWU9aSxzLmFscGhhPW4scyk6bmV3IHEodCxlLGksbil9O3EuZnJvbUFscGhhPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjb2xvciIsdCkscC50eXBlT2YubnVtYmVyKCJhbHBoYSIsZSksbShpKT8oaS5yZWQ9dC5yZWQsaS5ncmVlbj10LmdyZWVuLGkuYmx1ZT10LmJsdWUsaS5hbHBoYT1lLGkpOm5ldyBxKHQucmVkLHQuZ3JlZW4sdC5ibHVlLGUpfTtfby5zdXBwb3J0c1R5cGVkQXJyYXlzKCkmJihfVD1uZXcgQXJyYXlCdWZmZXIoNCksUlQ9bmV3IFVpbnQzMkFycmF5KF9UKSxlaD1uZXcgVWludDhBcnJheShfVCkpO3EuZnJvbVJnYmE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUlRbMF09dCxxLmZyb21CeXRlcyhlaFswXSxlaFsxXSxlaFsyXSxlaFszXSxlKX07cS5mcm9tSHNsPWZ1bmN0aW9uKHQsZSxpLG4scyl7dD1aKHQsMCklMSxlPVooZSwwKSxpPVooaSwwKSxuPVoobiwxKTtsZXQgbz1pLHI9aSxhPWk7aWYoZSE9PTApe2xldCBoO2k8LjU/aD1pKigxK2UpOmg9aStlLWkqZTtsZXQgQT0yKmktaDtvPUVUKEEsaCx0KzEvMykscj1FVChBLGgsdCksYT1FVChBLGgsdC0xLzMpfXJldHVybiBtKHMpPyhzLnJlZD1vLHMuZ3JlZW49cixzLmJsdWU9YSxzLmFscGhhPW4scyk6bmV3IHEobyxyLGEsbil9O3EuZnJvbVJhbmRvbT1mdW5jdGlvbih0LGUpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgaT10LnJlZDtpZighbShpKSl7bGV0IHI9Wih0Lm1pbmltdW1SZWQsMCksYT1aKHQubWF4aW11bVJlZCwxKTtwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibWluaW11bVJlZCIscixhKSxpPXIrTC5uZXh0UmFuZG9tTnVtYmVyKCkqKGEtcil9bGV0IG49dC5ncmVlbjtpZighbShuKSl7bGV0IHI9Wih0Lm1pbmltdW1HcmVlbiwwKSxhPVoodC5tYXhpbXVtR3JlZW4sMSk7cC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIm1pbmltdW1HcmVlbiIscixhKSxuPXIrTC5uZXh0UmFuZG9tTnVtYmVyKCkqKGEtcil9bGV0IHM9dC5ibHVlO2lmKCFtKHMpKXtsZXQgcj1aKHQubWluaW11bUJsdWUsMCksYT1aKHQubWF4aW11bUJsdWUsMSk7cC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIm1pbmltdW1CbHVlIixyLGEpLHM9citMLm5leHRSYW5kb21OdW1iZXIoKSooYS1yKX1sZXQgbz10LmFscGhhO2lmKCFtKG8pKXtsZXQgcj1aKHQubWluaW11bUFscGhhLDApLGE9Wih0Lm1heGltdW1BbHBoYSwxKTtwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibWludW11bUFscGhhIixyLGEpLG89citMLm5leHRSYW5kb21OdW1iZXIoKSooYS1yKX1yZXR1cm4gbShlKT8oZS5yZWQ9aSxlLmdyZWVuPW4sZS5ibHVlPXMsZS5hbHBoYT1vLGUpOm5ldyBxKGksbixzLG8pfTtlJD0vXiMoWzAtOWEtZl0pKFswLTlhLWZdKShbMC05YS1mXSkoWzAtOWEtZl0pPyQvaSxpJD0vXiMoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSkoWzAtOWEtZl17Mn0pPyQvaSxuJD0vXnJnYmE/XHMqXChccyooWzAtOS5dKyU/KVxzKlssXHNdK1xzKihbMC05Ll0rJT8pXHMqWyxcc10rXHMqKFswLTkuXSslPykoPzpccypbLFxzL10rXHMqKFswLTkuXSspKT9ccypcKSQvaSxzJD0vXmhzbGE/XHMqXChccyooWzAtOS5dKylccypbLFxzXStccyooWzAtOS5dKyUpXHMqWyxcc10rXHMqKFswLTkuXSslKSg/OlxzKlssXHMvXStccyooWzAtOS5dKykpP1xzKlwpJC9pO3EuZnJvbUNzc0NvbG9yU3RyaW5nPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yuc3RyaW5nKCJjb2xvciIsdCksbShlKXx8KGU9bmV3IHEpLHQ9dC50cmltKCk7bGV0IGk9cVt0LnRvVXBwZXJDYXNlKCldO2lmKG0oaSkpcmV0dXJuIHEuY2xvbmUoaSxlKSxlO2xldCBuPWUkLmV4ZWModCk7cmV0dXJuIG4hPT1udWxsPyhlLnJlZD1wYXJzZUludChuWzFdLDE2KS8xNSxlLmdyZWVuPXBhcnNlSW50KG5bMl0sMTYpLzE1LGUuYmx1ZT1wYXJzZUludChuWzNdLDE2KS8xNSxlLmFscGhhPXBhcnNlSW50KFoobls0XSwiZiIpLDE2KS8xNSxlKToobj1pJC5leGVjKHQpLG4hPT1udWxsPyhlLnJlZD1wYXJzZUludChuWzFdLDE2KS8yNTUsZS5ncmVlbj1wYXJzZUludChuWzJdLDE2KS8yNTUsZS5ibHVlPXBhcnNlSW50KG5bM10sMTYpLzI1NSxlLmFscGhhPXBhcnNlSW50KFoobls0XSwiZmYiKSwxNikvMjU1LGUpOihuPW4kLmV4ZWModCksbiE9PW51bGw/KGUucmVkPXBhcnNlRmxvYXQoblsxXSkvKG5bMV0uc3Vic3RyKC0xKT09PSIlIj8xMDA6MjU1KSxlLmdyZWVuPXBhcnNlRmxvYXQoblsyXSkvKG5bMl0uc3Vic3RyKC0xKT09PSIlIj8xMDA6MjU1KSxlLmJsdWU9cGFyc2VGbG9hdChuWzNdKS8oblszXS5zdWJzdHIoLTEpPT09IiUiPzEwMDoyNTUpLGUuYWxwaGE9cGFyc2VGbG9hdChaKG5bNF0sIjEuMCIpKSxlKToobj1zJC5leGVjKHQpLG4hPT1udWxsP3EuZnJvbUhzbChwYXJzZUZsb2F0KG5bMV0pLzM2MCxwYXJzZUZsb2F0KG5bMl0pLzEwMCxwYXJzZUZsb2F0KG5bM10pLzEwMCxwYXJzZUZsb2F0KFoobls0XSwiMS4wIikpLGUpOihlPXZvaWQgMCxlKSkpKX07cS5wYWNrZWRMZW5ndGg9NDtxLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC5yZWQsZVtpKytdPXQuZ3JlZW4sZVtpKytdPXQuYmx1ZSxlW2ldPXQuYWxwaGEsZX07cS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgcSksaS5yZWQ9dFtlKytdLGkuZ3JlZW49dFtlKytdLGkuYmx1ZT10W2UrK10saS5hbHBoYT10W2VdLGl9O3EuYnl0ZVRvRmxvYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQvMjU1fTtxLmZsb2F0VG9CeXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09MT8yNTU6dCoyNTZ8MH07cS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUucmVkPXQucmVkLGUuZ3JlZW49dC5ncmVlbixlLmJsdWU9dC5ibHVlLGUuYWxwaGE9dC5hbHBoYSxlKTpuZXcgcSh0LnJlZCx0LmdyZWVuLHQuYmx1ZSx0LmFscGhhKX07cS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQucmVkPT09ZS5yZWQmJnQuZ3JlZW49PT1lLmdyZWVuJiZ0LmJsdWU9PT1lLmJsdWUmJnQuYWxwaGE9PT1lLmFscGhhfTtxLmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5yZWQ9PT1lW2ldJiZ0LmdyZWVuPT09ZVtpKzFdJiZ0LmJsdWU9PT1lW2krMl0mJnQuYWxwaGE9PT1lW2krM119O3EucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBxLmNsb25lKHRoaXMsdCl9O3EucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gcS5lcXVhbHModGhpcyx0KX07cS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmTWF0aC5hYnModGhpcy5yZWQtdC5yZWQpPD1lJiZNYXRoLmFicyh0aGlzLmdyZWVuLXQuZ3JlZW4pPD1lJiZNYXRoLmFicyh0aGlzLmJsdWUtdC5ibHVlKTw9ZSYmTWF0aC5hYnModGhpcy5hbHBoYS10LmFscGhhKTw9ZX07cS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy5yZWR9LCAke3RoaXMuZ3JlZW59LCAke3RoaXMuYmx1ZX0sICR7dGhpcy5hbHBoYX0pYH07cS5wcm90b3R5cGUudG9Dc3NDb2xvclN0cmluZz1mdW5jdGlvbigpe2xldCB0PXEuZmxvYXRUb0J5dGUodGhpcy5yZWQpLGU9cS5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKSxpPXEuZmxvYXRUb0J5dGUodGhpcy5ibHVlKTtyZXR1cm4gdGhpcy5hbHBoYT09PTE/YHJnYigke3R9LCR7ZX0sJHtpfSlgOmByZ2JhKCR7dH0sJHtlfSwke2l9LCR7dGhpcy5hbHBoYX0pYH07cS5wcm90b3R5cGUudG9Dc3NIZXhTdHJpbmc9ZnVuY3Rpb24oKXtsZXQgdD1xLmZsb2F0VG9CeXRlKHRoaXMucmVkKS50b1N0cmluZygxNik7dC5sZW5ndGg8MiYmKHQ9YDAke3R9YCk7bGV0IGU9cS5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKS50b1N0cmluZygxNik7ZS5sZW5ndGg8MiYmKGU9YDAke2V9YCk7bGV0IGk9cS5mbG9hdFRvQnl0ZSh0aGlzLmJsdWUpLnRvU3RyaW5nKDE2KTtpZihpLmxlbmd0aDwyJiYoaT1gMCR7aX1gKSx0aGlzLmFscGhhPDEpe2xldCBuPXEuZmxvYXRUb0J5dGUodGhpcy5hbHBoYSkudG9TdHJpbmcoMTYpO3JldHVybiBuLmxlbmd0aDwyJiYobj1gMCR7bn1gKSxgIyR7dH0ke2V9JHtpfSR7bn1gfXJldHVybmAjJHt0fSR7ZX0ke2l9YH07cS5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbih0KXtsZXQgZT1xLmZsb2F0VG9CeXRlKHRoaXMucmVkKSxpPXEuZmxvYXRUb0J5dGUodGhpcy5ncmVlbiksbj1xLmZsb2F0VG9CeXRlKHRoaXMuYmx1ZSkscz1xLmZsb2F0VG9CeXRlKHRoaXMuYWxwaGEpO3JldHVybiBtKHQpPyh0WzBdPWUsdFsxXT1pLHRbMl09bix0WzNdPXMsdCk6W2UsaSxuLHNdfTtxLnByb3RvdHlwZS50b1JnYmE9ZnVuY3Rpb24oKXtyZXR1cm4gZWhbMF09cS5mbG9hdFRvQnl0ZSh0aGlzLnJlZCksZWhbMV09cS5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKSxlaFsyXT1xLmZsb2F0VG9CeXRlKHRoaXMuYmx1ZSksZWhbM109cS5mbG9hdFRvQnl0ZSh0aGlzLmFscGhhKSxSVFswXX07cS5wcm90b3R5cGUuYnJpZ2h0ZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJtYWduaXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJtYWduaXR1ZGUiLHQsMCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLHQ9MS10LGUucmVkPTEtKDEtdGhpcy5yZWQpKnQsZS5ncmVlbj0xLSgxLXRoaXMuZ3JlZW4pKnQsZS5ibHVlPTEtKDEtdGhpcy5ibHVlKSp0LGUuYWxwaGE9dGhpcy5hbHBoYSxlfTtxLnByb3RvdHlwZS5kYXJrZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJtYWduaXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJtYWduaXR1ZGUiLHQsMCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLHQ9MS10LGUucmVkPXRoaXMucmVkKnQsZS5ncmVlbj10aGlzLmdyZWVuKnQsZS5ibHVlPXRoaXMuYmx1ZSp0LGUuYWxwaGE9dGhpcy5hbHBoYSxlfTtxLnByb3RvdHlwZS53aXRoQWxwaGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcS5mcm9tQWxwaGEodGhpcyx0LGUpfTtxLmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkK2UucmVkLGkuZ3JlZW49dC5ncmVlbitlLmdyZWVuLGkuYmx1ZT10LmJsdWUrZS5ibHVlLGkuYWxwaGE9dC5hbHBoYStlLmFscGhhLGl9O3Euc3VidHJhY3Q9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLnJlZD10LnJlZC1lLnJlZCxpLmdyZWVuPXQuZ3JlZW4tZS5ncmVlbixpLmJsdWU9dC5ibHVlLWUuYmx1ZSxpLmFscGhhPXQuYWxwaGEtZS5hbHBoYSxpfTtxLm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS5yZWQ9dC5yZWQqZS5yZWQsaS5ncmVlbj10LmdyZWVuKmUuZ3JlZW4saS5ibHVlPXQuYmx1ZSplLmJsdWUsaS5hbHBoYT10LmFscGhhKmUuYWxwaGEsaX07cS5kaXZpZGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLnJlZD10LnJlZC9lLnJlZCxpLmdyZWVuPXQuZ3JlZW4vZS5ncmVlbixpLmJsdWU9dC5ibHVlL2UuYmx1ZSxpLmFscGhhPXQuYWxwaGEvZS5hbHBoYSxpfTtxLm1vZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkJWUucmVkLGkuZ3JlZW49dC5ncmVlbiVlLmdyZWVuLGkuYmx1ZT10LmJsdWUlZS5ibHVlLGkuYWxwaGE9dC5hbHBoYSVlLmFscGhhLGl9O3EubGVycD1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkscC50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHAudHlwZU9mLm51bWJlcigidCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ucmVkPUwubGVycCh0LnJlZCxlLnJlZCxpKSxuLmdyZWVuPUwubGVycCh0LmdyZWVuLGUuZ3JlZW4saSksbi5ibHVlPUwubGVycCh0LmJsdWUsZS5ibHVlLGkpLG4uYWxwaGE9TC5sZXJwKHQuYWxwaGEsZS5hbHBoYSxpKSxufTtxLm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNvbG9yIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkKmUsaS5ncmVlbj10LmdyZWVuKmUsaS5ibHVlPXQuYmx1ZSplLGkuYWxwaGE9dC5hbHBoYSplLGl9O3EuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNvbG9yIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkL2UsaS5ncmVlbj10LmdyZWVuL2UsaS5ibHVlPXQuYmx1ZS9lLGkuYWxwaGE9dC5hbHBoYS9lLGl9O3EuQUxJQ0VCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEY4RkYiKSk7cS5BTlRJUVVFV0hJVEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZBRUJENyIpKTtxLkFRVUE9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwRkZGRiIpKTtxLkFRVUFNQVJJTkU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzdGRkZENCIpKTtxLkFaVVJFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEZGRkYiKSk7cS5CRUlHRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjVGNURDIikpO3EuQklTUVVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkU0QzQiKSk7cS5CTEFDSz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMDAwIikpO3EuQkxBTkNIRURBTE1PTkQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRUJDRCIpKTtxLkJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwMDBGRiIpKTtxLkJMVUVWSU9MRVQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzhBMkJFMiIpKTtxLkJST1dOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBNTJBMkEiKSk7cS5CVVJMWVdPT0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0RFQjg4NyIpKTtxLkNBREVUQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNUY5RUEwIikpO3EuQ0hBUlRSRVVTRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0ZGRjAwIikpO3EuQ0hPQ09MQVRFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEMjY5MUUiKSk7cS5DT1JBTD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY3RjUwIikpO3EuQ09STkZMT1dFUkJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzY0OTVFRCIpKTtxLkNPUk5TSUxLPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkY4REMiKSk7cS5DUklNU09OPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEQzE0M0MiKSk7cS5DWUFOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEZGRkYiKSk7cS5EQVJLQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMDhCIikpO3EuREFSS0NZQU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwOEI4QiIpKTtxLkRBUktHT0xERU5ST0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0I4ODYwQiIpKTtxLkRBUktHUkFZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBOUE5QTkiKSk7cS5EQVJLR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwNjQwMCIpKTtxLkRBUktHUkVZPXEuREFSS0dSQVk7cS5EQVJLS0hBS0k9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0JEQjc2QiIpKTtxLkRBUktNQUdFTlRBPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4QjAwOEIiKSk7cS5EQVJLT0xJVkVHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNTU2QjJGIikpO3EuREFSS09SQU5HRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY4QzAwIikpO3EuREFSS09SQ0hJRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTkzMkNDIikpO3EuREFSS1JFRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOEIwMDAwIikpO3EuREFSS1NBTE1PTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRTk5NjdBIikpO3EuREFSS1NFQUdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4RkJDOEYiKSk7cS5EQVJLU0xBVEVCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0ODNEOEIiKSk7cS5EQVJLU0xBVEVHUkFZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyRjRGNEYiKSk7cS5EQVJLU0xBVEVHUkVZPXEuREFSS1NMQVRFR1JBWTtxLkRBUktUVVJRVU9JU0U9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwQ0VEMSIpKTtxLkRBUktWSU9MRVQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzk0MDBEMyIpKTtxLkRFRVBQSU5LPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjE0OTMiKSk7cS5ERUVQU0tZQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBCRkZGIikpO3EuRElNR1JBWT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNjk2OTY5IikpO3EuRElNR1JFWT1xLkRJTUdSQVk7cS5ET0RHRVJCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMxRTkwRkYiKSk7cS5GSVJFQlJJQ0s9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0IyMjIyMiIpKTtxLkZMT1JBTFdISVRFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZBRjAiKSk7cS5GT1JFU1RHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMjI4QjIyIikpO3EuRlVDSFNJQT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkYwMEZGIikpO3EuR0FJTlNCT1JPPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEQ0RDREMiKSk7cS5HSE9TVFdISVRFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGOEY4RkYiKSk7cS5HT0xEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkQ3MDAiKSk7cS5HT0xERU5ST0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0RBQTUyMCIpKTtxLkdSQVk9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzgwODA4MCIpKTtxLkdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDgwMDAiKSk7cS5HUkVFTllFTExPVz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjQURGRjJGIikpO3EuR1JFWT1xLkdSQVk7cS5IT05FWURFVz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjBGRkYwIikpO3EuSE9UUElOSz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY2OUI0IikpO3EuSU5ESUFOUkVEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNDRDVDNUMiKSk7cS5JTkRJR089T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzRCMDA4MiIpKTtxLklWT1JZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGRjAiKSk7cS5LSEFLST1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjBFNjhDIikpO3EuTEFWRU5ERVI9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0U2RTZGQSIpKTtxLkxBVkVOREFSX0JMVVNIPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkYwRjUiKSk7cS5MQVdOR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzdDRkMwMCIpKTtxLkxFTU9OQ0hJRkZPTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGQUNEIikpO3EuTElHSFRCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBREQ4RTYiKSk7cS5MSUdIVENPUkFMPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMDgwODAiKSk7cS5MSUdIVENZQU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0UwRkZGRiIpKTtxLkxJR0hUR09MREVOUk9EWUVMTE9XPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGQUZBRDIiKSk7cS5MSUdIVEdSQVk9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0QzRDNEMyIpKTtxLkxJR0hUR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzkwRUU5MCIpKTtxLkxJR0hUR1JFWT1xLkxJR0hUR1JBWTtxLkxJR0hUUElOSz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZCNkMxIikpO3EuTElHSFRTRUFHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMjBCMkFBIikpO3EuTElHSFRTS1lCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4N0NFRkEiKSk7cS5MSUdIVFNMQVRFR1JBWT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNzc4ODk5IikpO3EuTElHSFRTTEFURUdSRVk9cS5MSUdIVFNMQVRFR1JBWTtxLkxJR0hUU1RFRUxCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNCMEM0REUiKSk7cS5MSUdIVFlFTExPVz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGRkUwIikpO3EuTElNRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGRjAwIikpO3EuTElNRUdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMzMkNEMzIiKSk7cS5MSU5FTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkFGMEU2IikpO3EuTUFHRU5UQT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkYwMEZGIikpO3EuTUFST09OPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4MDAwMDAiKSk7cS5NRURJVU1BUVVBTUFSSU5FPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM2NkNEQUEiKSk7cS5NRURJVU1CTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDAwQ0QiKSk7cS5NRURJVU1PUkNISUQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0JBNTVEMyIpKTtxLk1FRElVTVBVUlBMRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTM3MERCIikpO3EuTUVESVVNU0VBR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzNDQjM3MSIpKTtxLk1FRElVTVNMQVRFQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0I2OEVFIikpO3EuTUVESVVNU1BSSU5HR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwRkE5QSIpKTtxLk1FRElVTVRVUlFVT0lTRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNDhEMUNDIikpO3EuTUVESVVNVklPTEVUUkVEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNDNzE1ODUiKSk7cS5NSUROSUdIVEJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzE5MTk3MCIpKTtxLk1JTlRDUkVBTT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjVGRkZBIikpO3EuTUlTVFlST1NFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkU0RTEiKSk7cS5NT0NDQVNJTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZFNEI1IikpO3EuTkFWQUpPV0hJVEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZGREVBRCIpKTtxLk5BVlk9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwMDA4MCIpKTtxLk9MRExBQ0U9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZERjVFNiIpKTtxLk9MSVZFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4MDgwMDAiKSk7cS5PTElWRURSQUI9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzZCOEUyMyIpKTtxLk9SQU5HRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZBNTAwIikpO3EuT1JBTkdFUkVEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjQ1MDAiKSk7cS5PUkNISUQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0RBNzBENiIpKTtxLlBBTEVHT0xERU5ST0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0VFRThBQSIpKTtxLlBBTEVHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOThGQjk4IikpO3EuUEFMRVRVUlFVT0lTRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjQUZFRUVFIikpO3EuUEFMRVZJT0xFVFJFRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjREI3MDkzIikpO3EuUEFQQVlBV0hJUD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZFRkQ1IikpO3EuUEVBQ0hQVUZGPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkRBQjkiKSk7cS5QRVJVPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNDRDg1M0YiKSk7cS5QSU5LPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkMwQ0IiKSk7cS5QTFVNPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEREEwREQiKSk7cS5QT1dERVJCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNCMEUwRTYiKSk7cS5QVVJQTEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzgwMDA4MCIpKTtxLlJFRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkYwMDAwIikpO3EuUk9TWUJST1dOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNCQzhGOEYiKSk7cS5ST1lBTEJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzQxNjlFMSIpKTtxLlNBRERMRUJST1dOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4QjQ1MTMiKSk7cS5TQUxNT049T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZBODA3MiIpKTtxLlNBTkRZQlJPV049T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0Y0QTQ2MCIpKTtxLlNFQUdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyRThCNTciKSk7cS5TRUFTSEVMTD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGNUVFIikpO3EuU0lFTk5BPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBMDUyMkQiKSk7cS5TSUxWRVI9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0MwQzBDMCIpKTtxLlNLWUJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzg3Q0VFQiIpKTtxLlNMQVRFQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNkE1QUNEIikpO3EuU0xBVEVHUkFZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3MDgwOTAiKSk7cS5TTEFURUdSRVk9cS5TTEFURUdSQVk7cS5TTk9XPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZBRkEiKSk7cS5TUFJJTkdHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGRjdGIikpO3EuU1RFRUxCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0NjgyQjQiKSk7cS5UQU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0QyQjQ4QyIpKTtxLlRFQUw9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwODA4MCIpKTtxLlRISVNUTEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0Q4QkZEOCIpKTtxLlRPTUFUTz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY2MzQ3IikpO3EuVFVSUVVPSVNFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0MEUwRDAiKSk7cS5WSU9MRVQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0VFODJFRSIpKTtxLldIRUFUPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNURFQjMiKSk7cS5XSElURT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGRkZGIikpO3EuV0hJVEVTTU9LRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjVGNUY1IikpO3EuWUVMTE9XPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGMDAiKSk7cS5ZRUxMT1dHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOUFDRDMyIikpO3EuVFJBTlNQQVJFTlQ9T2JqZWN0LmZyZWV6ZShuZXcgcSgwLDAsMCwwKSk7WnQ9cX0pO2Z1bmN0aW9uIG8kKCl7cmV0dXJuInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIucmVwbGFjZSgvW3h5XS9nLGZ1bmN0aW9uKHQpe2xldCBlPU1hdGgucmFuZG9tKCkqMTZ8MDtyZXR1cm4odD09PSJ4Ij9lOmUmM3w4KS50b1N0cmluZygxNil9KX12YXIgR3MsaWg9TygoKT0+e0dzPW8kfSk7ZnVuY3Rpb24gX3IodCxlKXt0PVoodCwwKSx0aGlzLl9uZWFyPXQsZT1aKGUsTnVtYmVyLk1BWF9WQUxVRSksdGhpcy5fZmFyPWV9dmFyIFdvLHpaPU8oKCk9PntidCgpO210KCk7VnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhfci5wcm90b3R5cGUse25lYXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWFyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmVhcj10fX0sZmFyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmFyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZmFyPXR9fX0pO19yLnBhY2tlZExlbmd0aD0yO19yLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxlW2krK109dC5uZWFyLGVbaV09dC5mYXIsZX07X3IudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gZT1aKGUsMCksbShpKXx8KGk9bmV3IF9yKSxpLm5lYXI9dFtlKytdLGkuZmFyPXRbZV0saX07X3IuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lm5lYXI9PT1lLm5lYXImJnQuZmFyPT09ZS5mYXJ9O19yLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKXx8KGU9bmV3IF9yKSxlLm5lYXI9dC5uZWFyLGUuZmFyPXQuZmFyLGV9O19yLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gX3IuY2xvbmUodGhpcyx0KX07X3IucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gX3IuZXF1YWxzKHRoaXMsdCl9O1dvPV9yfSk7ZnVuY3Rpb24gQnIodCxlLGksbil7dGhpcy5uZWFyPVoodCwwKSx0aGlzLm5lYXJWYWx1ZT1aKGUsMCksdGhpcy5mYXI9WihpLDEpLHRoaXMuZmFyVmFsdWU9WihuLDApfXZhciBnaSxJRT1PKCgpPT57YnQoKTttdCgpO1Z0KCk7QnIuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLm5lYXI9dC5uZWFyLGUubmVhclZhbHVlPXQubmVhclZhbHVlLGUuZmFyPXQuZmFyLGUuZmFyVmFsdWU9dC5mYXJWYWx1ZSxlKTpuZXcgQnIodC5uZWFyLHQubmVhclZhbHVlLHQuZmFyLHQuZmFyVmFsdWUpfTtCci5wYWNrZWRMZW5ndGg9NDtCci5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gaT1aKGksMCksZVtpKytdPXQubmVhcixlW2krK109dC5uZWFyVmFsdWUsZVtpKytdPXQuZmFyLGVbaV09dC5mYXJWYWx1ZSxlfTtCci51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBlPVooZSwwKSxtKGkpfHwoaT1uZXcgQnIpLGkubmVhcj10W2UrK10saS5uZWFyVmFsdWU9dFtlKytdLGkuZmFyPXRbZSsrXSxpLmZhclZhbHVlPXRbZV0saX07QnIuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lm5lYXI9PT1lLm5lYXImJnQubmVhclZhbHVlPT09ZS5uZWFyVmFsdWUmJnQuZmFyPT09ZS5mYXImJnQuZmFyVmFsdWU9PT1lLmZhclZhbHVlfTtCci5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEJyLmNsb25lKHRoaXMsdCl9O0JyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIEJyLmVxdWFscyh0aGlzLHQpfTtnaT1Ccn0pO2Z1bmN0aW9uIGdsKHQpe3JldHVybiB0PT09Q2wuQ0xBTVBfVE9fR1JPVU5EfHx0PT09Q2wuQ0xBTVBfVE9fM0RfVElMRXx8dD09PUNsLkNMQU1QX1RPX1RFUlJBSU59ZnVuY3Rpb24gZUQodCl7cmV0dXJuIHQ9PT1DbC5SRUxBVElWRV9UT19HUk9VTkR8fHQ9PT1DbC5SRUxBVElWRV9UT18zRF9USUxFfHx0PT09Q2wuUkVMQVRJVkVfVE9fVEVSUkFJTn12YXIgQ2wsV3IsT209TygoKT0+e0NsPXtOT05FOjAsQ0xBTVBfVE9fR1JPVU5EOjEsUkVMQVRJVkVfVE9fR1JPVU5EOjIsQ0xBTVBfVE9fVEVSUkFJTjozLFJFTEFUSVZFX1RPX1RFUlJBSU46NCxDTEFNUF9UT18zRF9USUxFOjUsUkVMQVRJVkVfVE9fM0RfVElMRTo2fSxXcj1PYmplY3QuZnJlZXplKENsKX0pO3ZhciByJCx0byxWbT1PKCgpPT57ciQ9e0NFTlRFUjowLExFRlQ6MSxSSUdIVDotMX0sdG89T2JqZWN0LmZyZWV6ZShyJCl9KTt2YXIgS1oseWUsdWE9TygoKT0+e0taPXtNT1JQSElORzowLENPTFVNQlVTX1ZJRVc6MSxTQ0VORTJEOjIsU0NFTkUzRDozfTtLWi5nZXRNb3JwaFRpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1LWi5TQ0VORTNEPzE6dD09PUtaLk1PUlBISU5HP3ZvaWQgMDowfTt5ZT1PYmplY3QuZnJlZXplKEtaKX0pO2Z1bmN0aW9uIEJzKHQsZSl7aWYocC50eXBlT2Yub2JqZWN0KCJub3JtYWwiLHQpLCFMLmVxdWFsc0Vwc2lsb24obC5tYWduaXR1ZGUodCksMSxMLkVQU0lMT042KSl0aHJvdyBuZXcgWSgibm9ybWFsIG11c3QgYmUgbm9ybWFsaXplZC4iKTtwLnR5cGVPZi5udW1iZXIoImRpc3RhbmNlIixlKSx0aGlzLm5vcm1hbD1sLmNsb25lKHQpLHRoaXMuZGlzdGFuY2U9ZX12YXIgYSQsQSQsaCQsYyQsbCQsS2ksbmg9TygoKT0+e0h0KCk7VnMoKTthZSgpO210KCk7VnQoKTtfZSgpO0ZpKCk7QnMuZnJvbVBvaW50Tm9ybWFsPWZ1bmN0aW9uKHQsZSxpKXtpZihwLnR5cGVPZi5vYmplY3QoInBvaW50Iix0KSxwLnR5cGVPZi5vYmplY3QoIm5vcm1hbCIsZSksIUwuZXF1YWxzRXBzaWxvbihsLm1hZ25pdHVkZShlKSwxLEwuRVBTSUxPTjYpKXRocm93IG5ldyBZKCJub3JtYWwgbXVzdCBiZSBub3JtYWxpemVkLiIpO2xldCBuPS1sLmRvdChlLHQpO3JldHVybiBtKGkpPyhsLmNsb25lKGUsaS5ub3JtYWwpLGkuZGlzdGFuY2U9bixpKTpuZXcgQnMoZSxuKX07YSQ9bmV3IGw7QnMuZnJvbUNhcnRlc2lhbjQ9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNvZWZmaWNpZW50cyIsdCk7bGV0IGk9bC5mcm9tQ2FydGVzaWFuNCh0LGEkKSxuPXQudztpZighTC5lcXVhbHNFcHNpbG9uKGwubWFnbml0dWRlKGkpLDEsTC5FUFNJTE9ONikpdGhyb3cgbmV3IFkoIm5vcm1hbCBtdXN0IGJlIG5vcm1hbGl6ZWQuIik7cmV0dXJuIG0oZSk/KGwuY2xvbmUoaSxlLm5vcm1hbCksZS5kaXN0YW5jZT1uLGUpOm5ldyBCcyhpLG4pfTtCcy5nZXRQb2ludERpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicGxhbmUiLHQpLHAudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLGwuZG90KHQubm9ybWFsLGUpK3QuZGlzdGFuY2V9O0EkPW5ldyBsO0JzLnByb2plY3RQb2ludE9udG9QbGFuZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJwbGFuZSIsdCkscC50eXBlT2Yub2JqZWN0KCJwb2ludCIsZSksbShpKXx8KGk9bmV3IGwpO2xldCBuPUJzLmdldFBvaW50RGlzdGFuY2UodCxlKSxzPWwubXVsdGlwbHlCeVNjYWxhcih0Lm5vcm1hbCxuLEEkKTtyZXR1cm4gbC5zdWJ0cmFjdChlLHMsaSl9O2gkPW5ldyBhdCxjJD1uZXcgaWUsbCQ9bmV3IGw7QnMudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInBsYW5lIix0KSxwLnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybSIsZSk7bGV0IG49dC5ub3JtYWwscz10LmRpc3RhbmNlLG89YXQuaW52ZXJzZVRyYW5zcG9zZShlLGgkKSxyPWllLmZyb21FbGVtZW50cyhuLngsbi55LG4ueixzLGMkKTtyPWF0Lm11bHRpcGx5QnlWZWN0b3IobyxyLHIpO2xldCBhPWwuZnJvbUNhcnRlc2lhbjQocixsJCk7cmV0dXJuIHI9aWUuZGl2aWRlQnlTY2FsYXIocixsLm1hZ25pdHVkZShhKSxyKSxCcy5mcm9tQ2FydGVzaWFuNChyLGkpfTtCcy5jbG9uZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInBsYW5lIix0KSxtKGUpPyhsLmNsb25lKHQubm9ybWFsLGUubm9ybWFsKSxlLmRpc3RhbmNlPXQuZGlzdGFuY2UsZSk6bmV3IEJzKHQubm9ybWFsLHQuZGlzdGFuY2UpfTtCcy5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx0LmRpc3RhbmNlPT09ZS5kaXN0YW5jZSYmbC5lcXVhbHModC5ub3JtYWwsZS5ub3JtYWwpfTtCcy5PUklHSU5fWFlfUExBTkU9T2JqZWN0LmZyZWV6ZShuZXcgQnMobC5VTklUX1osMCkpO0JzLk9SSUdJTl9ZWl9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBCcyhsLlVOSVRfWCwwKSk7QnMuT1JJR0lOX1pYX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IEJzKGwuVU5JVF9ZLDApKTtLaT1Cc30pO2Z1bmN0aW9uIERyKHQpe3RoaXMucGxhbmVzPVoodCxbXSl9dmFyIHBFLGNjLGQkLGlELFhaLFpUPU8oKCk9PntIdCgpO1ZzKCk7YnQoKTttdCgpO1Z0KCk7bmMoKTtuaCgpO3BFPVtuZXcgbCxuZXcgbCxuZXcgbF07bC5jbG9uZShsLlVOSVRfWCxwRVswXSk7bC5jbG9uZShsLlVOSVRfWSxwRVsxXSk7bC5jbG9uZShsLlVOSVRfWixwRVsyXSk7Y2M9bmV3IGwsZCQ9bmV3IGwsaUQ9bmV3IEtpKG5ldyBsKDEsMCwwKSwwKTtEci5mcm9tQm91bmRpbmdTcGhlcmU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYm91bmRpbmdTcGhlcmUgaXMgcmVxdWlyZWQuIik7bShlKXx8KGU9bmV3IERyKTtsZXQgaT1wRS5sZW5ndGgsbj1lLnBsYW5lcztuLmxlbmd0aD0yKmk7bGV0IHM9dC5jZW50ZXIsbz10LnJhZGl1cyxyPTA7Zm9yKGxldCBhPTA7YTxpOysrYSl7bGV0IGg9cEVbYV0sQT1uW3JdLGQ9bltyKzFdO20oQSl8fChBPW5bcl09bmV3IGllKSxtKGQpfHwoZD1uW3IrMV09bmV3IGllKSxsLm11bHRpcGx5QnlTY2FsYXIoaCwtbyxjYyksbC5hZGQocyxjYyxjYyksQS54PWgueCxBLnk9aC55LEEuej1oLnosQS53PS1sLmRvdChoLGNjKSxsLm11bHRpcGx5QnlTY2FsYXIoaCxvLGNjKSxsLmFkZChzLGNjLGNjKSxkLng9LWgueCxkLnk9LWgueSxkLno9LWgueixkLnc9LWwuZG90KGwubmVnYXRlKGgsZCQpLGNjKSxyKz0yfXJldHVybiBlfTtEci5wcm90b3R5cGUuY29tcHV0ZVZpc2liaWxpdHk9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImJvdW5kaW5nVm9sdW1lIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMucGxhbmVzLGk9ITE7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7KytuKXtsZXQgbz10LmludGVyc2VjdFBsYW5lKEtpLmZyb21DYXJ0ZXNpYW40KGVbbl0saUQpKTtpZihvPT09Tm4uT1VUU0lERSlyZXR1cm4gTm4uT1VUU0lERTtvPT09Tm4uSU5URVJTRUNUSU5HJiYoaT0hMCl9cmV0dXJuIGk/Tm4uSU5URVJTRUNUSU5HOk5uLklOU0lERX07RHIucHJvdG90eXBlLmNvbXB1dGVWaXNpYmlsaXR5V2l0aFBsYW5lTWFzaz1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJib3VuZGluZ1ZvbHVtZSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicGFyZW50UGxhbmVNYXNrIGlzIHJlcXVpcmVkLiIpO2lmKGU9PT1Eci5NQVNLX09VVFNJREV8fGU9PT1Eci5NQVNLX0lOU0lERSlyZXR1cm4gZTtsZXQgaT1Eci5NQVNLX0lOU0lERSxuPXRoaXMucGxhbmVzO2ZvcihsZXQgcz0wLG89bi5sZW5ndGg7czxvOysrcyl7bGV0IHI9czwzMT8xPDxzOjA7aWYoczwzMSYmIShlJnIpKWNvbnRpbnVlO2xldCBhPXQuaW50ZXJzZWN0UGxhbmUoS2kuZnJvbUNhcnRlc2lhbjQobltzXSxpRCkpO2lmKGE9PT1Obi5PVVRTSURFKXJldHVybiBEci5NQVNLX09VVFNJREU7YT09PU5uLklOVEVSU0VDVElORyYmKGl8PXIpfXJldHVybiBpfTtEci5NQVNLX09VVFNJREU9NDI5NDk2NzI5NTtEci5NQVNLX0lOU0lERT0wO0RyLk1BU0tfSU5ERVRFUk1JTkFURT0yMTQ3NDgzNjQ3O1haPURyfSk7ZnVuY3Rpb24gbUEodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMubGVmdD10LmxlZnQsdGhpcy5fbGVmdD12b2lkIDAsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMuX3JpZ2h0PXZvaWQgMCx0aGlzLnRvcD10LnRvcCx0aGlzLl90b3A9dm9pZCAwLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMuX2JvdHRvbT12b2lkIDAsdGhpcy5uZWFyPVoodC5uZWFyLDEpLHRoaXMuX25lYXI9dGhpcy5uZWFyLHRoaXMuZmFyPVoodC5mYXIsNWU4KSx0aGlzLl9mYXI9dGhpcy5mYXIsdGhpcy5fY3VsbGluZ1ZvbHVtZT1uZXcgWFosdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4PW5ldyBhdH1mdW5jdGlvbiBuRCh0KXtpZighbSh0LnJpZ2h0KXx8IW0odC5sZWZ0KXx8IW0odC50b3ApfHwhbSh0LmJvdHRvbSl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgWSgicmlnaHQsIGxlZnQsIHRvcCwgYm90dG9tLCBuZWFyLCBvciBmYXIgcGFyYW1ldGVycyBhcmUgbm90IHNldC4iKTtpZih0LnRvcCE9PXQuX3RvcHx8dC5ib3R0b20hPT10Ll9ib3R0b218fHQubGVmdCE9PXQuX2xlZnR8fHQucmlnaHQhPT10Ll9yaWdodHx8dC5uZWFyIT09dC5fbmVhcnx8dC5mYXIhPT10Ll9mYXIpe2lmKHQubGVmdD50LnJpZ2h0KXRocm93IG5ldyBZKCJyaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBsZWZ0LiIpO2lmKHQuYm90dG9tPnQudG9wKXRocm93IG5ldyBZKCJ0b3AgbXVzdCBiZSBncmVhdGVyIHRoYW4gYm90dG9tLiIpO2lmKHQubmVhcjw9MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBZKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fbGVmdD10LmxlZnQsdC5fcmlnaHQ9dC5yaWdodCx0Ll90b3A9dC50b3AsdC5fYm90dG9tPXQuYm90dG9tLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcix0Ll9vcnRob2dyYXBoaWNNYXRyaXg9YXQuY29tcHV0ZU9ydGhvZ3JhcGhpY09mZkNlbnRlcih0LmxlZnQsdC5yaWdodCx0LmJvdHRvbSx0LnRvcCx0Lm5lYXIsdC5mYXIsdC5fb3J0aG9ncmFwaGljTWF0cml4KX19dmFyIG0kLGYkLEUkLElULHFaLHBUPU8oKCk9PntIdCgpO1ZzKCk7WlQoKTtidCgpO210KCk7VnQoKTtfZSgpO0ZpKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobUEucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbkQodGhpcyksdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4fX19KTttJD1uZXcgbCxmJD1uZXcgbCxFJD1uZXcgbCxJVD1uZXcgbDttQS5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJ1cCBpcyByZXF1aXJlZC4iKTtsZXQgbj10aGlzLl9jdWxsaW5nVm9sdW1lLnBsYW5lcyxzPXRoaXMudG9wLG89dGhpcy5ib3R0b20scj10aGlzLnJpZ2h0LGE9dGhpcy5sZWZ0LGg9dGhpcy5uZWFyLEE9dGhpcy5mYXIsZD1sLmNyb3NzKGUsaSxtJCk7bC5ub3JtYWxpemUoZCxkKTtsZXQgZj1mJDtsLm11bHRpcGx5QnlTY2FsYXIoZSxoLGYpLGwuYWRkKHQsZixmKTtsZXQgRT1FJDtsLm11bHRpcGx5QnlTY2FsYXIoZCxhLEUpLGwuYWRkKGYsRSxFKTtsZXQgXz1uWzBdO3JldHVybiBtKF8pfHwoXz1uWzBdPW5ldyBpZSksXy54PWQueCxfLnk9ZC55LF8uej1kLnosXy53PS1sLmRvdChkLEUpLGwubXVsdGlwbHlCeVNjYWxhcihkLHIsRSksbC5hZGQoZixFLEUpLF89blsxXSxtKF8pfHwoXz1uWzFdPW5ldyBpZSksXy54PS1kLngsXy55PS1kLnksXy56PS1kLnosXy53PS1sLmRvdChsLm5lZ2F0ZShkLElUKSxFKSxsLm11bHRpcGx5QnlTY2FsYXIoaSxvLEUpLGwuYWRkKGYsRSxFKSxfPW5bMl0sbShfKXx8KF89blsyXT1uZXcgaWUpLF8ueD1pLngsXy55PWkueSxfLno9aS56LF8udz0tbC5kb3QoaSxFKSxsLm11bHRpcGx5QnlTY2FsYXIoaSxzLEUpLGwuYWRkKGYsRSxFKSxfPW5bM10sbShfKXx8KF89blszXT1uZXcgaWUpLF8ueD0taS54LF8ueT0taS55LF8uej0taS56LF8udz0tbC5kb3QobC5uZWdhdGUoaSxJVCksRSksXz1uWzRdLG0oXyl8fChfPW5bNF09bmV3IGllKSxfLng9ZS54LF8ueT1lLnksXy56PWUueixfLnc9LWwuZG90KGUsZiksbC5tdWx0aXBseUJ5U2NhbGFyKGUsQSxFKSxsLmFkZCh0LEUsRSksXz1uWzVdLG0oXyl8fChfPW5bNV09bmV3IGllKSxfLng9LWUueCxfLnk9LWUueSxfLno9LWUueixfLnc9LWwuZG90KGwubmVnYXRlKGUsSVQpLEUpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O21BLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLGksbixzKXtpZihuRCh0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IFkoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBZKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBZKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkLiIpO2lmKG48PTApdGhyb3cgbmV3IFkoInBpeGVsUmF0aW8gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZighbShzKSl0aHJvdyBuZXcgWSgiQSByZXN1bHQgb2JqZWN0IGlzIHJlcXVpcmVkLiIpO2xldCBvPXRoaXMucmlnaHQtdGhpcy5sZWZ0LHI9dGhpcy50b3AtdGhpcy5ib3R0b20sYT1uKm8vdCxoPW4qci9lO3JldHVybiBzLng9YSxzLnk9aCxzfTttQS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBtQSksdC5sZWZ0PXRoaXMubGVmdCx0LnJpZ2h0PXRoaXMucmlnaHQsdC50b3A9dGhpcy50b3AsdC5ib3R0b209dGhpcy5ib3R0b20sdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9sZWZ0PXZvaWQgMCx0Ll9yaWdodD12b2lkIDAsdC5fdG9wPXZvaWQgMCx0Ll9ib3R0b209dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdH07bUEucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdCBpbnN0YW5jZW9mIG1BJiZ0aGlzLnJpZ2h0PT09dC5yaWdodCYmdGhpcy5sZWZ0PT09dC5sZWZ0JiZ0aGlzLnRvcD09PXQudG9wJiZ0aGlzLmJvdHRvbT09PXQuYm90dG9tJiZ0aGlzLm5lYXI9PT10Lm5lYXImJnRoaXMuZmFyPT09dC5mYXJ9O21BLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PXRoaXN8fG0odCkmJnQgaW5zdGFuY2VvZiBtQSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMucmlnaHQsdC5yaWdodCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5sZWZ0LHQubGVmdCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy50b3AsdC50b3AsZSxpKSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMuYm90dG9tLHQuYm90dG9tLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLm5lYXIsdC5uZWFyLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLmZhcix0LmZhcixlLGkpfTtxWj1tQX0pO2Z1bmN0aW9uIHRyKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtPW5ldyBxWix0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5fd2lkdGg9dm9pZCAwLHRoaXMuYXNwZWN0UmF0aW89dC5hc3BlY3RSYXRpbyx0aGlzLl9hc3BlY3RSYXRpbz12b2lkIDAsdGhpcy5uZWFyPVoodC5uZWFyLDEpLHRoaXMuX25lYXI9dGhpcy5uZWFyLHRoaXMuZmFyPVoodC5mYXIsNWU4KSx0aGlzLl9mYXI9dGhpcy5mYXJ9ZnVuY3Rpb24gbGModCl7aWYoIW0odC53aWR0aCl8fCFtKHQuYXNwZWN0UmF0aW8pfHwhbSh0Lm5lYXIpfHwhbSh0LmZhcikpdGhyb3cgbmV3IFkoIndpZHRoLCBhc3BlY3RSYXRpbywgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7bGV0IGU9dC5fb2ZmQ2VudGVyRnJ1c3R1bTtpZih0LndpZHRoIT09dC5fd2lkdGh8fHQuYXNwZWN0UmF0aW8hPT10Ll9hc3BlY3RSYXRpb3x8dC5uZWFyIT09dC5fbmVhcnx8dC5mYXIhPT10Ll9mYXIpe2lmKHQuYXNwZWN0UmF0aW88MCl0aHJvdyBuZXcgWSgiYXNwZWN0UmF0aW8gbXVzdCBiZSBwb3NpdGl2ZS4iKTtpZih0Lm5lYXI8MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBZKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fYXNwZWN0UmF0aW89dC5hc3BlY3RSYXRpbyx0Ll93aWR0aD10LndpZHRoLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcjtsZXQgaT0xL3QuYXNwZWN0UmF0aW87ZS5yaWdodD10LndpZHRoKi41LGUubGVmdD0tZS5yaWdodCxlLnRvcD1pKmUucmlnaHQsZS5ib3R0b209LWUudG9wLGUubmVhcj10Lm5lYXIsZS5mYXI9dC5mYXJ9fXZhciBqcywkWj1PKCgpPT57YWUoKTtidCgpO210KCk7VnQoKTtfZSgpO3BUKCk7dHIucGFja2VkTGVuZ3RoPTQ7dHIucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGVbaSsrXT10LndpZHRoLGVbaSsrXT10LmFzcGVjdFJhdGlvLGVbaSsrXT10Lm5lYXIsZVtpXT10LmZhcixlfTt0ci51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgdHIpLGkud2lkdGg9dFtlKytdLGkuYXNwZWN0UmF0aW89dFtlKytdLGkubmVhcj10W2UrK10saS5mYXI9dFtlXSxpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0ci5wcm90b3R5cGUse3Byb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBsYyh0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLnByb2plY3Rpb25NYXRyaXh9fSxvZmZDZW50ZXJGcnVzdHVtOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bX19fSk7dHIucHJvdG90eXBlLmNvbXB1dGVDdWxsaW5nVm9sdW1lPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbGModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jb21wdXRlQ3VsbGluZ1ZvbHVtZSh0LGUsaSl9O3RyLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gbGModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5nZXRQaXhlbERpbWVuc2lvbnModCxlLGksbixzKX07dHIucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgdHIpLHQuYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx0LndpZHRoPXRoaXMud2lkdGgsdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9hc3BlY3RSYXRpbz12b2lkIDAsdC5fd2lkdGg9dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jbG9uZSh0Ll9vZmZDZW50ZXJGcnVzdHVtKSx0fTt0ci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiB0cik/ITE6KGxjKHRoaXMpLGxjKHQpLHRoaXMud2lkdGg9PT10LndpZHRoJiZ0aGlzLmFzcGVjdFJhdGlvPT09dC5hc3BlY3RSYXRpbyYmdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5lcXVhbHModC5fb2ZmQ2VudGVyRnJ1c3R1bSkpfTt0ci5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIHRyKT8hMToobGModGhpcyksbGModCksTC5lcXVhbHNFcHNpbG9uKHRoaXMud2lkdGgsdC53aWR0aCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5hc3BlY3RSYXRpbyx0LmFzcGVjdFJhdGlvLGUsaSkmJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzRXBzaWxvbih0Ll9vZmZDZW50ZXJGcnVzdHVtLGUsaSkpfTtqcz10cn0pO2Z1bmN0aW9uIHVFKHQsZSxpLG4pe2xldCBzPWkudmlld01hdHJpeCxvPWF0Lm11bHRpcGx5QnlWZWN0b3IocyxpZS5mcm9tRWxlbWVudHModC54LHQueSx0LnosMSxzRCksc0QpLHI9bC5tdWx0aXBseUNvbXBvbmVudHMoZSxsLm5vcm1hbGl6ZShvLG9EKSxvRCk7cmV0dXJuIG8ueCs9ZS54K3IueCxvLnkrPWUueStyLnksby56Kz1yLnosYXQubXVsdGlwbHlCeVZlY3RvcihpLmZydXN0dW0ucHJvamVjdGlvbk1hdHJpeCxvLG4pfXZhciBlbyxfJCxabyxSJCx1VCxDVCxzRCxvRCxaJCxJJCxwJCxzaCx1JCxyRCxhRCxBRCxDJCxoRCxHbSxnVD1PKCgpPT57RXIoKTtYZSgpO0h0KCk7VnMoKTtyaSgpO210KCk7VnQoKTtfZSgpO0ZpKCk7JFooKTtwVCgpO2ZyKCk7dWEoKTtlbz17fSxfJD1uZXcgaWUoMCwwLDAsMSksWm89bmV3IGllLFIkPW5ldyBtaSx1VD1uZXcgbnQsQ1Q9bmV3IG50O2VvLndnczg0VG9XaW5kb3dDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGVvLndnczg0V2l0aEV5ZU9mZnNldFRvV2luZG93Q29vcmRpbmF0ZXModCxlLGwuWkVSTyxpKX07c0Q9bmV3IGllLG9EPW5ldyBsO1okPW5ldyB1dChNYXRoLlBJLEwuUElfT1ZFUl9UV08pLEkkPW5ldyBsLHAkPW5ldyBsO2VvLndnczg0V2l0aEV5ZU9mZnNldFRvV2luZG93Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNjZW5lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtsZXQgcz10LmZyYW1lU3RhdGUsbz1lby5jb21wdXRlQWN0dWFsV2dzODRQb3NpdGlvbihzLGUsXyQpO2lmKCFtKG8pKXJldHVybjtsZXQgcj10LmNhbnZhcyxhPVIkO2EueD0wLGEueT0wLGEud2lkdGg9ci5jbGllbnRXaWR0aCxhLmhlaWdodD1yLmNsaWVudEhlaWdodDtsZXQgaD10LmNhbWVyYSxBPSExO2lmKHMubW9kZT09PXllLlNDRU5FMkQpe2xldCBkPXQubWFwUHJvamVjdGlvbixmPVokLEU9ZC5wcm9qZWN0KGYsSSQpLF89bC5jbG9uZShoLnBvc2l0aW9uLHAkKSxSPWguZnJ1c3R1bS5jbG9uZSgpLEk9YXQuY29tcHV0ZVZpZXdwb3J0VHJhbnNmb3JtYXRpb24oYSwwLDEsbmV3IGF0KSxDPWguZnJ1c3R1bS5wcm9qZWN0aW9uTWF0cml4LE49aC5wb3NpdGlvbldDLnksVD1sLmZyb21FbGVtZW50cyhMLnNpZ24oTikqRS54LU4sMCwtaC5wb3NpdGlvbldDLngpLEY9SW4ucG9pbnRUb0dMV2luZG93Q29vcmRpbmF0ZXMoQyxJLFQpO2lmKE49PT0wfHxGLng8PTB8fEYueD49ci5jbGllbnRXaWR0aClBPSEwO2Vsc2V7aWYoRi54PnIuY2xpZW50V2lkdGgqLjUpe2Eud2lkdGg9Ri54LGguZnJ1c3R1bS5yaWdodD1FLngtTixabz11RShvLGksaCxabyksZW8uY2xpcFRvR0xXaW5kb3dDb29yZGluYXRlcyhhLFpvLHVUKSxhLngrPUYueCxoLnBvc2l0aW9uLng9LWgucG9zaXRpb24ueDtsZXQgYj1oLmZydXN0dW0ucmlnaHQ7aC5mcnVzdHVtLnJpZ2h0PS1oLmZydXN0dW0ubGVmdCxoLmZydXN0dW0ubGVmdD0tYixabz11RShvLGksaCxabyksZW8uY2xpcFRvR0xXaW5kb3dDb29yZGluYXRlcyhhLFpvLENUKX1lbHNle2EueCs9Ri54LGEud2lkdGgtPUYueCxoLmZydXN0dW0ubGVmdD0tRS54LU4sWm89dUUobyxpLGgsWm8pLGVvLmNsaXBUb0dMV2luZG93Q29vcmRpbmF0ZXMoYSxabyx1VCksYS54PWEueC1hLndpZHRoLGgucG9zaXRpb24ueD0taC5wb3NpdGlvbi54O2xldCBiPWguZnJ1c3R1bS5sZWZ0O2guZnJ1c3R1bS5sZWZ0PS1oLmZydXN0dW0ucmlnaHQsaC5mcnVzdHVtLnJpZ2h0PS1iLFpvPXVFKG8saSxoLFpvKSxlby5jbGlwVG9HTFdpbmRvd0Nvb3JkaW5hdGVzKGEsWm8sQ1QpfWwuY2xvbmUoXyxoLnBvc2l0aW9uKSxoLmZydXN0dW09Ui5jbG9uZSgpLG49bnQuY2xvbmUodVQsbiksKG4ueDwwfHxuLng+ci5jbGllbnRXaWR0aCkmJihuLng9Q1QueCl9fWlmKHMubW9kZSE9PXllLlNDRU5FMkR8fEEpe2lmKFpvPXVFKG8saSxoLFpvKSxaby56PDAmJiEoaC5mcnVzdHVtIGluc3RhbmNlb2YganMpJiYhKGguZnJ1c3R1bSBpbnN0YW5jZW9mIHFaKSlyZXR1cm47bj1lby5jbGlwVG9HTFdpbmRvd0Nvb3JkaW5hdGVzKGEsWm8sbil9cmV0dXJuIG4ueT1yLmNsaWVudEhlaWdodC1uLnksbn07ZW8ud2dzODRUb0RyYXdpbmdCdWZmZXJDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7aWYoaT1lby53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXModCxlLGkpLCEhbShpKSlyZXR1cm4gZW8udHJhbnNmb3JtV2luZG93VG9EcmF3aW5nQnVmZmVyKHQsaSxpKX07c2g9bmV3IGwsdSQ9bmV3IHV0O2VvLmNvbXB1dGVBY3R1YWxXZ3M4NFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10Lm1vZGU7aWYobj09PXllLlNDRU5FM0QpcmV0dXJuIGwuY2xvbmUoZSxpKTtsZXQgcz10Lm1hcFByb2plY3Rpb24sbz1zLmVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLHUkKTtpZighbShvKSlyZXR1cm47aWYocy5wcm9qZWN0KG8sc2gpLG49PT15ZS5DT0xVTUJVU19WSUVXKXJldHVybiBsLmZyb21FbGVtZW50cyhzaC56LHNoLngsc2gueSxpKTtpZihuPT09eWUuU0NFTkUyRClyZXR1cm4gbC5mcm9tRWxlbWVudHMoMCxzaC54LHNoLnksaSk7bGV0IHI9dC5tb3JwaFRpbWU7cmV0dXJuIGwuZnJvbUVsZW1lbnRzKEwubGVycChzaC56LGUueCxyKSxMLmxlcnAoc2gueCxlLnksciksTC5sZXJwKHNoLnksZS56LHIpLGkpfTtyRD1uZXcgbCxhRD1uZXcgbCxBRD1uZXcgYXQ7ZW8uY2xpcFRvR0xXaW5kb3dDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGwuZGl2aWRlQnlTY2FsYXIoZSxlLncsckQpLGF0LmNvbXB1dGVWaWV3cG9ydFRyYW5zZm9ybWF0aW9uKHQsMCwxLEFEKSxhdC5tdWx0aXBseUJ5UG9pbnQoQUQsckQsYUQpLG50LmZyb21DYXJ0ZXNpYW4zKGFELGkpfTtlby50cmFuc2Zvcm1XaW5kb3dUb0RyYXdpbmdCdWZmZXI9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuY2FudmFzLHM9dC5kcmF3aW5nQnVmZmVyV2lkdGgvbi5jbGllbnRXaWR0aCxvPXQuZHJhd2luZ0J1ZmZlckhlaWdodC9uLmNsaWVudEhlaWdodDtyZXR1cm4gbnQuZnJvbUVsZW1lbnRzKGUueCpzLGUueSpvLGkpfTtDJD1uZXcgaWUsaEQ9bmV3IGllO2VvLmRyYXdpbmdCdWZmZXJUb1dnczg0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7bGV0IG89dC5jb250ZXh0LnVuaWZvcm1TdGF0ZSxyPW8uY3VycmVudEZydXN0dW0sYT1yLngsaD1yLnk7aWYodC5mcmFtZVN0YXRlLnVzZUxvZ0RlcHRoKXtsZXQgXz1pKm8ubG9nMkZhckRlcHRoRnJvbU5lYXJQbHVzT25lLFI9TWF0aC5wb3coMixfKS0xO2k9aCooMS1hLyhSK2EpKS8oaC1hKX1sZXQgQT10LnZpZXcucGFzc1N0YXRlLnZpZXdwb3J0LGQ9aWUuY2xvbmUoaWUuVU5JVF9XLEMkKTtkLng9KGUueC1BLngpL0Eud2lkdGgqMi0xLGQueT0oZS55LUEueSkvQS5oZWlnaHQqMi0xLGQuej1pKjItMSxkLnc9MTtsZXQgZixFPXQuY2FtZXJhLmZydXN0dW07aWYobShFLmZvdnkpKXtmPWF0Lm11bHRpcGx5QnlWZWN0b3Ioby5pbnZlcnNlVmlld1Byb2plY3Rpb24sZCxoRCk7bGV0IF89MS9mLnc7bC5tdWx0aXBseUJ5U2NhbGFyKGYsXyxmKX1lbHNle2xldCBfPUUub2ZmQ2VudGVyRnJ1c3R1bTttKF8pJiYoRT1fKSxmPWhELGYueD0oZC54KihFLnJpZ2h0LUUubGVmdCkrRS5sZWZ0K0UucmlnaHQpKi41LGYueT0oZC55KihFLnRvcC1FLmJvdHRvbSkrRS5ib3R0b20rRS50b3ApKi41LGYuej0oZC56KihhLWgpLWEtaCkqLjUsZi53PTEsZj1hdC5tdWx0aXBseUJ5VmVjdG9yKG8uaW52ZXJzZVZpZXcsZixmKX1yZXR1cm4gbC5mcm9tQ2FydGVzaWFuNChmLG4pfTtHbT1lb30pO3ZhciBnJCxtbixDRT1PKCgpPT57ZyQ9e0NFTlRFUjowLEJPVFRPTToxLEJBU0VMSU5FOjIsVE9QOi0xfSxtbj1PYmplY3QuZnJlZXplKGckKX0pO2Z1bmN0aW9uIFRpKHQsZSl7aWYodD1aKHQsWi5FTVBUWV9PQkpFQ1QpLG0odC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UpJiZ0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTwwKXRocm93IG5ldyBZKCJkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4wLiIpO2xldCBpPXQudHJhbnNsdWNlbmN5QnlEaXN0YW5jZSxuPXQucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2Uscz10LnNjYWxlQnlEaXN0YW5jZSxvPXQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uO2lmKG0oaSkpe2lmKGkuZmFyPD1pLm5lYXIpdGhyb3cgbmV3IFkoInRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UubmVhci4iKTtpPWdpLmNsb25lKGkpfWlmKG0obikpe2lmKG4uZmFyPD1uLm5lYXIpdGhyb3cgbmV3IFkoInBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZS5uZWFyLiIpO249Z2kuY2xvbmUobil9aWYobShzKSl7aWYocy5mYXI8PXMubmVhcil0aHJvdyBuZXcgWSgic2NhbGVCeURpc3RhbmNlLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBzY2FsZUJ5RGlzdGFuY2UubmVhci4iKTtzPWdpLmNsb25lKHMpfWlmKG0obykpe2lmKG8uZmFyPD1vLm5lYXIpdGhyb3cgbmV3IFkoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbi5mYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLm5lYXIuIik7bz1Xby5jbG9uZShvKX10aGlzLl9zaG93PVoodC5zaG93LCEwKSx0aGlzLl9wb3NpdGlvbj1sLmNsb25lKFoodC5wb3NpdGlvbixsLlpFUk8pKSx0aGlzLl9hY3R1YWxQb3NpdGlvbj1sLmNsb25lKHRoaXMuX3Bvc2l0aW9uKSx0aGlzLl9waXhlbE9mZnNldD1udC5jbG9uZShaKHQucGl4ZWxPZmZzZXQsbnQuWkVSTykpLHRoaXMuX3RyYW5zbGF0ZT1uZXcgbnQoMCwwKSx0aGlzLl9leWVPZmZzZXQ9bC5jbG9uZShaKHQuZXllT2Zmc2V0LGwuWkVSTykpLHRoaXMuX2hlaWdodFJlZmVyZW5jZT1aKHQuaGVpZ2h0UmVmZXJlbmNlLFdyLk5PTkUpLHRoaXMuX3ZlcnRpY2FsT3JpZ2luPVoodC52ZXJ0aWNhbE9yaWdpbixtbi5DRU5URVIpLHRoaXMuX2hvcml6b250YWxPcmlnaW49Wih0Lmhvcml6b250YWxPcmlnaW4sdG8uQ0VOVEVSKSx0aGlzLl9zY2FsZT1aKHQuc2NhbGUsMSksdGhpcy5fY29sb3I9WnQuY2xvbmUoWih0LmNvbG9yLFp0LldISVRFKSksdGhpcy5fcm90YXRpb249Wih0LnJvdGF0aW9uLDApLHRoaXMuX2FsaWduZWRBeGlzPWwuY2xvbmUoWih0LmFsaWduZWRBeGlzLGwuWkVSTykpLHRoaXMuX3dpZHRoPXQud2lkdGgsdGhpcy5faGVpZ2h0PXQuaGVpZ2h0LHRoaXMuX3NjYWxlQnlEaXN0YW5jZT1zLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9aSx0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1uLHRoaXMuX3NpemVJbk1ldGVycz1aKHQuc2l6ZUluTWV0ZXJzLCExKSx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249byx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsdGhpcy5faWQ9dC5pZCx0aGlzLl9jb2xsZWN0aW9uPVoodC5jb2xsZWN0aW9uLGUpLHRoaXMuX3BpY2tJZD12b2lkIDAsdGhpcy5fcGlja1ByaW1pdGl2ZT1aKHQuX3BpY2tQcmltaXRpdmUsdGhpcyksdGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbj1lLHRoaXMuX2RpcnR5PSExLHRoaXMuX2luZGV4PS0xLHRoaXMuX2JhdGNoSW5kZXg9dm9pZCAwLHRoaXMuX2ltYWdlSW5kZXg9LTEsdGhpcy5faW1hZ2VJbmRleFByb21pc2U9dm9pZCAwLHRoaXMuX2ltYWdlSWQ9dm9pZCAwLHRoaXMuX2ltYWdlPXZvaWQgMCx0aGlzLl9pbWFnZVN1YlJlZ2lvbj12b2lkIDAsdGhpcy5faW1hZ2VXaWR0aD12b2lkIDAsdGhpcy5faW1hZ2VIZWlnaHQ9dm9pZCAwLHRoaXMuX2xhYmVsRGltZW5zaW9ucz12b2lkIDAsdGhpcy5fbGFiZWxIb3Jpem9udGFsT3JpZ2luPXZvaWQgMCx0aGlzLl9sYWJlbFRyYW5zbGF0ZT12b2lkIDA7bGV0IHI9dC5pbWFnZSxhPXQuaW1hZ2VJZDttKHIpJiYobShhKXx8KHR5cGVvZiByPT0ic3RyaW5nIj9hPXI6bShyLnNyYyk/YT1yLnNyYzphPUdzKCkpLHRoaXMuX2ltYWdlSWQ9YSx0aGlzLl9pbWFnZT1yKSxtKHQuaW1hZ2VTdWJSZWdpb24pJiYodGhpcy5faW1hZ2VJZD1hLHRoaXMuX2ltYWdlU3ViUmVnaW9uPXQuaW1hZ2VTdWJSZWdpb24pLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbi5fdGV4dHVyZUF0bGFzKSYmdGhpcy5fbG9hZEltYWdlKCksdGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uPXZvaWQgMCx0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwLHRoaXMuX21vZGU9eWUuU0NFTkUzRCx0aGlzLl9jbHVzdGVyU2hvdz0hMCx0aGlzLl9vdXRsaW5lQ29sb3I9WnQuY2xvbmUoWih0Lm91dGxpbmVDb2xvcixadC5CTEFDSykpLHRoaXMuX291dGxpbmVXaWR0aD1aKHQub3V0bGluZVdpZHRoLDApLHRoaXMuX3VwZGF0ZUNsYW1waW5nKCl9ZnVuY3Rpb24gRm4odCxlKXtsZXQgaT10Ll9iaWxsYm9hcmRDb2xsZWN0aW9uO20oaSkmJihpLl91cGRhdGVCaWxsYm9hcmQodCxlKSx0Ll9kaXJ0eT0hMCl9dmFyIGNELGVJLGZELFQkLE4kLGIkLEYkLGlJLGxELFkkLFMkLE8kLFYkLEckLEIkLFckLGRELG5JLG1ELEVELHRJLHVuLHNJPU8oKCk9PntFcigpO1hlKCk7SHQoKTtWcygpO3JpKCk7YWUoKTtRbigpO2loKCk7YnQoKTttdCgpO1Z0KCk7elooKTtWZSgpO0ZpKCk7SUUoKTtJYSgpO09tKCk7Vm0oKTt1YSgpO2dUKCk7Q0UoKTtjRD1UaS5TSE9XX0lOREVYPTAsZUk9VGkuUE9TSVRJT05fSU5ERVg9MSxmRD1UaS5QSVhFTF9PRkZTRVRfSU5ERVg9MixUJD1UaS5FWUVfT0ZGU0VUX0lOREVYPTMsTiQ9VGkuSE9SSVpPTlRBTF9PUklHSU5fSU5ERVg9NCxiJD1UaS5WRVJUSUNBTF9PUklHSU5fSU5ERVg9NSxGJD1UaS5TQ0FMRV9JTkRFWD02LGlJPVRpLklNQUdFX0lOREVYX0lOREVYPTcsbEQ9VGkuQ09MT1JfSU5ERVg9OCxZJD1UaS5ST1RBVElPTl9JTkRFWD05LFMkPVRpLkFMSUdORURfQVhJU19JTkRFWD0xMCxPJD1UaS5TQ0FMRV9CWV9ESVNUQU5DRV9JTkRFWD0xMSxWJD1UaS5UUkFOU0xVQ0VOQ1lfQllfRElTVEFOQ0VfSU5ERVg9MTIsRyQ9VGkuUElYRUxfT0ZGU0VUX1NDQUxFX0JZX0RJU1RBTkNFX0lOREVYPTEzLEIkPVRpLkRJU1RBTkNFX0RJU1BMQVlfQ09ORElUSU9OPTE0LFckPVRpLkRJU0FCTEVfREVQVEhfRElTVEFOQ0U9MTU7VGkuVEVYVFVSRV9DT09SRElOQVRFX0JPVU5EUz0xNjtkRD1UaS5TREZfSU5ERVg9MTc7VGkuTlVNQkVSX09GX1BST1BFUlRJRVM9MTg7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVGkucHJvdG90eXBlLHtzaG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd30sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLmJvb2woInZhbHVlIix0KSx0aGlzLl9zaG93IT09dCYmKHRoaXMuX3Nob3c9dCxGbih0aGlzLGNEKSl9fSxwb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5fcG9zaXRpb247bC5lcXVhbHMoZSx0KXx8KGwuY2xvbmUodCxlKSxsLmNsb25lKHQsdGhpcy5fYWN0dWFsUG9zaXRpb24pLHRoaXMuX3VwZGF0ZUNsYW1waW5nKCksRm4odGhpcyxlSSkpfX0saGVpZ2h0UmVmZXJlbmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0UmVmZXJlbmNlfSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5faGVpZ2h0UmVmZXJlbmNlO3QhPT1lJiYodGhpcy5faGVpZ2h0UmVmZXJlbmNlPXQsdGhpcy5fdXBkYXRlQ2xhbXBpbmcoKSxGbih0aGlzLGVJKSl9fSxwaXhlbE9mZnNldDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpeGVsT2Zmc2V0fSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5fcGl4ZWxPZmZzZXQ7bnQuZXF1YWxzKGUsdCl8fChudC5jbG9uZSh0LGUpLEZuKHRoaXMsZkQpKX19LHNjYWxlQnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NjYWxlQnlEaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJihwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx0LmZhcjw9dC5uZWFyKSl0aHJvdyBuZXcgWSgiZmFyIGRpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIgZGlzdGFuY2UuIik7bGV0IGU9dGhpcy5fc2NhbGVCeURpc3RhbmNlO2dpLmVxdWFscyhlLHQpfHwodGhpcy5fc2NhbGVCeURpc3RhbmNlPWdpLmNsb25lKHQsZSksRm4odGhpcyxPJCkpfX0sdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiYocC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksdC5mYXI8PXQubmVhcikpdGhyb3cgbmV3IFkoImZhciBkaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIGRpc3RhbmNlLiIpO2xldCBlPXRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U7Z2kuZXF1YWxzKGUsdCl8fCh0aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlPWdpLmNsb25lKHQsZSksRm4odGhpcyxWJCkpfX0scGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJihwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx0LmZhcjw9dC5uZWFyKSl0aHJvdyBuZXcgWSgiZmFyIGRpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIgZGlzdGFuY2UuIik7bGV0IGU9dGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U7Z2kuZXF1YWxzKGUsdCl8fCh0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpLEZuKHRoaXMsRyQpKX19LGV5ZU9mZnNldDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V5ZU9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpO2xldCBlPXRoaXMuX2V5ZU9mZnNldDtsLmVxdWFscyhlLHQpfHwobC5jbG9uZSh0LGUpLEZuKHRoaXMsVCQpKX19LGhvcml6b250YWxPcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ob3Jpem9udGFsT3JpZ2lufSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksdGhpcy5faG9yaXpvbnRhbE9yaWdpbiE9PXQmJih0aGlzLl9ob3Jpem9udGFsT3JpZ2luPXQsRm4odGhpcyxOJCkpfX0sdmVydGljYWxPcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0aWNhbE9yaWdpbn0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHRoaXMuX3ZlcnRpY2FsT3JpZ2luIT09dCYmKHRoaXMuX3ZlcnRpY2FsT3JpZ2luPXQsRm4odGhpcyxiJCkpfX0sc2NhbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZX0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHRoaXMuX3NjYWxlIT09dCYmKHRoaXMuX3NjYWxlPXQsRm4odGhpcyxGJCkpfX0sY29sb3I6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvcn0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpO2xldCBlPXRoaXMuX2NvbG9yO1p0LmVxdWFscyhlLHQpfHwoWnQuY2xvbmUodCxlKSxGbih0aGlzLGxEKSl9fSxyb3RhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdGF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksdGhpcy5fcm90YXRpb24hPT10JiYodGhpcy5fcm90YXRpb249dCxGbih0aGlzLFkkKSl9fSxhbGlnbmVkQXhpczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsaWduZWRBeGlzfSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5fYWxpZ25lZEF4aXM7bC5lcXVhbHMoZSx0KXx8KGwuY2xvbmUodCxlKSxGbih0aGlzLFMkKSl9fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFoodGhpcy5fd2lkdGgsdGhpcy5faW1hZ2VXaWR0aCl9LHNldDpmdW5jdGlvbih0KXttKHQpJiZwLnR5cGVPZi5udW1iZXIoInZhbHVlIix0KSx0aGlzLl93aWR0aCE9PXQmJih0aGlzLl93aWR0aD10LEZuKHRoaXMsaUkpKX19LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFoodGhpcy5faGVpZ2h0LHRoaXMuX2ltYWdlSGVpZ2h0KX0sc2V0OmZ1bmN0aW9uKHQpe20odCkmJnAudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHRoaXMuX2hlaWdodCE9PXQmJih0aGlzLl9oZWlnaHQ9dCxGbih0aGlzLGlJKSl9fSxzaXplSW5NZXRlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplSW5NZXRlcnN9LHNldDpmdW5jdGlvbih0KXtwLnR5cGVPZi5ib29sKCJ2YWx1ZSIsdCksdGhpcy5fc2l6ZUluTWV0ZXJzIT09dCYmKHRoaXMuX3NpemVJbk1ldGVycz10LEZuKHRoaXMsbEQpKX19LGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFXby5lcXVhbHModCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pKXtpZihtKHQpJiYocC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksdC5mYXI8PXQubmVhcikpdGhyb3cgbmV3IFkoImZhciBkaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIGRpc3RhbmNlLiIpO3RoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1Xby5jbG9uZSh0LHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksRm4odGhpcyxCJCl9fX0sZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlfSxzZXQ6ZnVuY3Rpb24odCl7aWYobSh0KSYmKHAudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHQ8MCkpdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAuIik7dGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIT09dCYmKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZT10LEZuKHRoaXMsVyQpKX19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9pZD10LG0odGhpcy5fcGlja0lkKSYmKHRoaXMuX3BpY2tJZC5vYmplY3QuaWQ9dCl9fSxwaWNrUHJpbWl0aXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGlja1ByaW1pdGl2ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3BpY2tQcmltaXRpdmU9dCxtKHRoaXMuX3BpY2tJZCkmJih0aGlzLl9waWNrSWQub2JqZWN0LnByaW1pdGl2ZT10KX19LHBpY2tJZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpY2tJZH19LGltYWdlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW1hZ2VJZH0sc2V0OmZ1bmN0aW9uKHQpe20odCk/dHlwZW9mIHQ9PSJzdHJpbmciP3RoaXMuc2V0SW1hZ2UodCx0KTp0IGluc3RhbmNlb2YgdG4/dGhpcy5zZXRJbWFnZSh0LnVybCx0KTptKHQuc3JjKT90aGlzLnNldEltYWdlKHQuc3JjLHQpOnRoaXMuc2V0SW1hZ2UoR3MoKSx0KToodGhpcy5faW1hZ2VJbmRleD0tMSx0aGlzLl9pbWFnZVN1YlJlZ2lvbj12b2lkIDAsdGhpcy5faW1hZ2VJZD12b2lkIDAsdGhpcy5faW1hZ2U9dm9pZCAwLHRoaXMuX2ltYWdlSW5kZXhQcm9taXNlPXZvaWQgMCxGbih0aGlzLGlJKSl9fSxyZWFkeTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ltYWdlSW5kZXghPT0tMX19LF9jbGFtcGVkUG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3R1YWxDbGFtcGVkUG9zaXRpb259LHNldDpmdW5jdGlvbih0KXt0aGlzLl9hY3R1YWxDbGFtcGVkUG9zaXRpb249bC5jbG9uZSh0LHRoaXMuX2FjdHVhbENsYW1wZWRQb3NpdGlvbiksRm4odGhpcyxlSSl9fSxjbHVzdGVyU2hvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJTaG93fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlclNob3chPT10JiYodGhpcy5fY2x1c3RlclNob3c9dCxGbih0aGlzLGNEKSl9fSxvdXRsaW5lQ29sb3I6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vdXRsaW5lQ29sb3J9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5fb3V0bGluZUNvbG9yO1p0LmVxdWFscyhlLHQpfHwoWnQuY2xvbmUodCxlKSxGbih0aGlzLGREKSl9fSxvdXRsaW5lV2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vdXRsaW5lV2lkdGh9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9vdXRsaW5lV2lkdGghPT10JiYodGhpcy5fb3V0bGluZVdpZHRoPXQsRm4odGhpcyxkRCkpfX19KTtUaS5wcm90b3R5cGUuZ2V0UGlja0lkPWZ1bmN0aW9uKHQpe3JldHVybiBtKHRoaXMuX3BpY2tJZCl8fCh0aGlzLl9waWNrSWQ9dC5jcmVhdGVQaWNrSWQoe3ByaW1pdGl2ZTp0aGlzLl9waWNrUHJpbWl0aXZlLGNvbGxlY3Rpb246dGhpcy5fY29sbGVjdGlvbixpZDp0aGlzLl9pZH0pKSx0aGlzLl9waWNrSWR9O1RpLnByb3RvdHlwZS5fdXBkYXRlQ2xhbXBpbmc9ZnVuY3Rpb24oKXtUaS5fdXBkYXRlQ2xhbXBpbmcodGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbix0aGlzKX07bkk9bmV3IHV0O1RpLl91cGRhdGVDbGFtcGluZz1mdW5jdGlvbih0LGUpe2xldCBpPXQuX3NjZW5lO2lmKCFtKGkpKXtpZihlLl9oZWlnaHRSZWZlcmVuY2UhPT1Xci5OT05FKXRocm93IG5ldyBZKCJIZWlnaHQgcmVmZXJlbmNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBhIHNjZW5lLiIpO3JldHVybn1sZXQgbj1pLmdsb2JlLHM9WihuPy5lbGxpcHNvaWQsb3QuV0dTODQpLG89aS5mcmFtZVN0YXRlLm1vZGUscj1vIT09ZS5fbW9kZTtpZihlLl9tb2RlPW8sKGUuX2hlaWdodFJlZmVyZW5jZT09PVdyLk5PTkV8fHIpJiZtKGUuX3JlbW92ZUNhbGxiYWNrRnVuYykmJihlLl9yZW1vdmVDYWxsYmFja0Z1bmMoKSxlLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwLGUuX2NsYW1wZWRQb3NpdGlvbj12b2lkIDApLGUuX2hlaWdodFJlZmVyZW5jZT09PVdyLk5PTkV8fCFtKGUuX3Bvc2l0aW9uKSlyZXR1cm47bShlLl9yZW1vdmVDYWxsYmFja0Z1bmMpJiZlLl9yZW1vdmVDYWxsYmFja0Z1bmMoKTtsZXQgYT1zLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUuX3Bvc2l0aW9uKTtpZighbShhKSl7ZS5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uPXZvaWQgMDtyZXR1cm59ZnVuY3Rpb24gaChkKXtsZXQgZj1zLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGQsZS5fY2xhbXBlZFBvc2l0aW9uKTtlRChlLl9oZWlnaHRSZWZlcmVuY2UpJiYoZS5fbW9kZT09PXllLlNDRU5FM0Q/KGQuaGVpZ2h0Kz1hLmhlaWdodCxzLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGQsZikpOmYueCs9YS5oZWlnaHQpLGUuX2NsYW1wZWRQb3NpdGlvbj1mfWUuX3JlbW92ZUNhbGxiYWNrRnVuYz1pLnVwZGF0ZUhlaWdodChhLGgsZS5faGVpZ2h0UmVmZXJlbmNlKSx1dC5jbG9uZShhLG5JKTtsZXQgQT1pLmdldEhlaWdodChhLGUuX2hlaWdodFJlZmVyZW5jZSk7bShBKSYmKG5JLmhlaWdodD1BKSxoKG5JKX07VGkucHJvdG90eXBlLl9sb2FkSW1hZ2U9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl90ZXh0dXJlQXRsYXMsZT10aGlzLl9pbWFnZUlkLGk9dGhpcy5faW1hZ2Usbj10aGlzLl9pbWFnZVN1YlJlZ2lvbixzLG89dGhpcztmdW5jdGlvbiByKGgpe2lmKG8uX2ltYWdlSWQhPT1lfHxvLl9pbWFnZSE9PWl8fCFtaS5lcXVhbHMoby5faW1hZ2VTdWJSZWdpb24sbikpcmV0dXJuO2xldCBBPXQudGV4dHVyZUNvb3JkaW5hdGVzW2hdO28uX2ltYWdlV2lkdGg9dC50ZXh0dXJlLndpZHRoKkEud2lkdGgsby5faW1hZ2VIZWlnaHQ9dC50ZXh0dXJlLmhlaWdodCpBLmhlaWdodCxvLl9pbWFnZUluZGV4PWgsby5fcmVhZHk9ITAsby5faW1hZ2U9dm9pZCAwLG8uX2ltYWdlSW5kZXhQcm9taXNlPXZvaWQgMCxGbihvLGlJKTtsZXQgZD1vLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl9zY2VuZTttKGQpJiZkLmZyYW1lU3RhdGUuYWZ0ZXJSZW5kZXIucHVzaCgoKT0+ITApfWlmKG0oaSkmJihzPXQuYWRkSW1hZ2UoZSxpKSksbShuKSYmKHM9dC5hZGRTdWJSZWdpb24oZSxuKSksdGhpcy5faW1hZ2VJbmRleFByb21pc2U9cywhbShzKSlyZXR1cm47bGV0IGE9dC5nZXRJbWFnZUluZGV4KGUpO2lmKG0oYSkmJiFtKG4pKXtyKGEpO3JldHVybn1zLnRoZW4ocikuY2F0Y2goZnVuY3Rpb24oaCl7Y29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBpbWFnZSBmb3IgYmlsbGJvYXJkOiAke2h9YCksby5faW1hZ2VJbmRleFByb21pc2U9dm9pZCAwfSl9O1RpLnByb3RvdHlwZS5zZXRJbWFnZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpZCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiaW1hZ2UgaXMgcmVxdWlyZWQuIik7dGhpcy5faW1hZ2VJZCE9PXQmJih0aGlzLl9pbWFnZUluZGV4PS0xLHRoaXMuX2ltYWdlU3ViUmVnaW9uPXZvaWQgMCx0aGlzLl9pbWFnZUlkPXQsdGhpcy5faW1hZ2U9ZSxtKHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uX3RleHR1cmVBdGxhcykmJnRoaXMuX2xvYWRJbWFnZSgpKX07VGkucHJvdG90eXBlLnNldEltYWdlU3ViUmVnaW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzdWJSZWdpb24gaXMgcmVxdWlyZWQuIik7dGhpcy5faW1hZ2VJZD09PXQmJm1pLmVxdWFscyh0aGlzLl9pbWFnZVN1YlJlZ2lvbixlKXx8KHRoaXMuX2ltYWdlSW5kZXg9LTEsdGhpcy5faW1hZ2VJZD10LHRoaXMuX2ltYWdlU3ViUmVnaW9uPW1pLmNsb25lKGUpLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbi5fdGV4dHVyZUF0bGFzKSYmdGhpcy5fbG9hZEltYWdlKCkpfTtUaS5wcm90b3R5cGUuX3NldFRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5fdHJhbnNsYXRlO250LmVxdWFscyhlLHQpfHwobnQuY2xvbmUodCxlKSxGbih0aGlzLGZEKSl9O1RpLnByb3RvdHlwZS5fZ2V0QWN0dWFsUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9jbGFtcGVkUG9zaXRpb24pP3RoaXMuX2NsYW1wZWRQb3NpdGlvbjp0aGlzLl9hY3R1YWxQb3NpdGlvbn07VGkucHJvdG90eXBlLl9zZXRBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbih0KXttKHRoaXMuX2NsYW1wZWRQb3NpdGlvbil8fGwuY2xvbmUodCx0aGlzLl9hY3R1YWxQb3NpdGlvbiksRm4odGhpcyxlSSl9O21EPW5ldyBpZTtUaS5fY29tcHV0ZUFjdHVhbFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBtKHQuX2NsYW1wZWRQb3NpdGlvbik/KGkubW9kZSE9PXQuX21vZGUmJnQuX3VwZGF0ZUNsYW1waW5nKCksdC5fY2xhbXBlZFBvc2l0aW9uKTppLm1vZGU9PT15ZS5TQ0VORTNEP2U6KGF0Lm11bHRpcGx5QnlQb2ludChuLGUsbUQpLEdtLmNvbXB1dGVBY3R1YWxXZ3M4NFBvc2l0aW9uKGksbUQpKX07RUQ9bmV3IGw7VGkuX2NvbXB1dGVTY3JlZW5TcGFjZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj1hdC5tdWx0aXBseUJ5UG9pbnQodCxlLEVEKSxhPUdtLndnczg0V2l0aEV5ZU9mZnNldFRvV2luZG93Q29vcmRpbmF0ZXMocyxyLGksbyk7aWYobShhKSlyZXR1cm4gbnQuYWRkKGEsbixhKSxhfTt0ST1uZXcgbnQoMCwwKTtUaS5wcm90b3R5cGUuY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb249ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uO2lmKG0oZSl8fChlPW5ldyBudCksIW0oaSkpdGhyb3cgbmV3IFkoIkJpbGxib2FyZCBtdXN0IGJlIGluIGEgY29sbGVjdGlvbi4gIFdhcyBpdCByZW1vdmVkPyIpO2lmKCFtKHQpKXRocm93IG5ldyBZKCJzY2VuZSBpcyByZXF1aXJlZC4iKTtudC5jbG9uZSh0aGlzLl9waXhlbE9mZnNldCx0SSksbnQuYWRkKHRJLHRoaXMuX3RyYW5zbGF0ZSx0SSk7bGV0IG49aS5tb2RlbE1hdHJpeCxzPXRoaXMuX3Bvc2l0aW9uO2lmKG0odGhpcy5fY2xhbXBlZFBvc2l0aW9uKSYmKHM9dGhpcy5fY2xhbXBlZFBvc2l0aW9uLHQubW9kZSE9PXllLlNDRU5FM0QpKXtsZXQgcj10Lm1hcFByb2plY3Rpb24sYT1yLmVsbGlwc29pZCxoPXIudW5wcm9qZWN0KHMsbkkpO3M9YS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihoLEVEKSxuPWF0LklERU5USVRZfXJldHVybiBUaS5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24obixzLHRoaXMuX2V5ZU9mZnNldCx0SSx0LGUpfTtUaS5nZXRTY3JlZW5TcGFjZUJvdW5kaW5nQm94PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LndpZHRoLHM9dC5oZWlnaHQsbz10LnNjYWxlO24qPW8scyo9bztsZXQgcj1lLng7dC5ob3Jpem9udGFsT3JpZ2luPT09dG8uUklHSFQ/ci09bjp0Lmhvcml6b250YWxPcmlnaW49PT10by5DRU5URVImJihyLT1uKi41KTtsZXQgYT1lLnk7cmV0dXJuIHQudmVydGljYWxPcmlnaW49PT1tbi5CT1RUT018fHQudmVydGljYWxPcmlnaW49PT1tbi5CQVNFTElORT9hLT1zOnQudmVydGljYWxPcmlnaW49PT1tbi5DRU5URVImJihhLT1zKi41KSxtKGkpfHwoaT1uZXcgbWkpLGkueD1yLGkueT1hLGkud2lkdGg9bixpLmhlaWdodD1zLGl9O1RpLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHxtKHQpJiZ0aGlzLl9pZD09PXQuX2lkJiZsLmVxdWFscyh0aGlzLl9wb3NpdGlvbix0Ll9wb3NpdGlvbikmJnRoaXMuX2ltYWdlSWQ9PT10Ll9pbWFnZUlkJiZ0aGlzLl9zaG93PT09dC5fc2hvdyYmdGhpcy5fc2NhbGU9PT10Ll9zY2FsZSYmdGhpcy5fdmVydGljYWxPcmlnaW49PT10Ll92ZXJ0aWNhbE9yaWdpbiYmdGhpcy5faG9yaXpvbnRhbE9yaWdpbj09PXQuX2hvcml6b250YWxPcmlnaW4mJnRoaXMuX2hlaWdodFJlZmVyZW5jZT09PXQuX2hlaWdodFJlZmVyZW5jZSYmbWkuZXF1YWxzKHRoaXMuX2ltYWdlU3ViUmVnaW9uLHQuX2ltYWdlU3ViUmVnaW9uKSYmWnQuZXF1YWxzKHRoaXMuX2NvbG9yLHQuX2NvbG9yKSYmbnQuZXF1YWxzKHRoaXMuX3BpeGVsT2Zmc2V0LHQuX3BpeGVsT2Zmc2V0KSYmbnQuZXF1YWxzKHRoaXMuX3RyYW5zbGF0ZSx0Ll90cmFuc2xhdGUpJiZsLmVxdWFscyh0aGlzLl9leWVPZmZzZXQsdC5fZXllT2Zmc2V0KSYmZ2kuZXF1YWxzKHRoaXMuX3NjYWxlQnlEaXN0YW5jZSx0Ll9zY2FsZUJ5RGlzdGFuY2UpJiZnaS5lcXVhbHModGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0Ll90cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSYmZ2kuZXF1YWxzKHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLHQuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlKSYmV28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0Ll9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pJiZ0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9PT10Ll9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2V9O1RpLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbigpe20odGhpcy5fY3VzdG9tRGF0YSkmJih0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl9zY2VuZS5nbG9iZS5fc3VyZmFjZS5yZW1vdmVUaWxlQ3VzdG9tRGF0YSh0aGlzLl9jdXN0b21EYXRhKSx0aGlzLl9jdXN0b21EYXRhPXZvaWQgMCksbSh0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmMpJiYodGhpcy5fcmVtb3ZlQ2FsbGJhY2tGdW5jKCksdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGdW5jPXZvaWQgMCksdGhpcy5pbWFnZT12b2lkIDAsdGhpcy5fcGlja0lkPXRoaXMuX3BpY2tJZCYmdGhpcy5fcGlja0lkLmRlc3Ryb3koKSx0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uPXZvaWQgMH07dW49VGl9KTt2YXIgRCQsaXQsc3M9TygoKT0+e0QkPXtERVBUSF9CVUZGRVJfQklUOjI1NixTVEVOQ0lMX0JVRkZFUl9CSVQ6MTAyNCxDT0xPUl9CVUZGRVJfQklUOjE2Mzg0LFBPSU5UUzowLExJTkVTOjEsTElORV9MT09QOjIsTElORV9TVFJJUDozLFRSSUFOR0xFUzo0LFRSSUFOR0xFX1NUUklQOjUsVFJJQU5HTEVfRkFOOjYsWkVSTzowLE9ORToxLFNSQ19DT0xPUjo3NjgsT05FX01JTlVTX1NSQ19DT0xPUjo3NjksU1JDX0FMUEhBOjc3MCxPTkVfTUlOVVNfU1JDX0FMUEhBOjc3MSxEU1RfQUxQSEE6NzcyLE9ORV9NSU5VU19EU1RfQUxQSEE6NzczLERTVF9DT0xPUjo3NzQsT05FX01JTlVTX0RTVF9DT0xPUjo3NzUsU1JDX0FMUEhBX1NBVFVSQVRFOjc3NixGVU5DX0FERDozMjc3NCxCTEVORF9FUVVBVElPTjozMjc3NyxCTEVORF9FUVVBVElPTl9SR0I6MzI3NzcsQkxFTkRfRVFVQVRJT05fQUxQSEE6MzQ4NzcsRlVOQ19TVUJUUkFDVDozMjc3OCxGVU5DX1JFVkVSU0VfU1VCVFJBQ1Q6MzI3NzksQkxFTkRfRFNUX1JHQjozMjk2OCxCTEVORF9TUkNfUkdCOjMyOTY5LEJMRU5EX0RTVF9BTFBIQTozMjk3MCxCTEVORF9TUkNfQUxQSEE6MzI5NzEsQ09OU1RBTlRfQ09MT1I6MzI3NjksT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOjMyNzcwLENPTlNUQU5UX0FMUEhBOjMyNzcxLE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQTozMjc3MixCTEVORF9DT0xPUjozMjc3MyxBUlJBWV9CVUZGRVI6MzQ5NjIsRUxFTUVOVF9BUlJBWV9CVUZGRVI6MzQ5NjMsQVJSQVlfQlVGRkVSX0JJTkRJTkc6MzQ5NjQsRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzozNDk2NSxTVFJFQU1fRFJBVzozNTA0MCxTVEFUSUNfRFJBVzozNTA0NCxEWU5BTUlDX0RSQVc6MzUwNDgsQlVGRkVSX1NJWkU6MzQ2NjAsQlVGRkVSX1VTQUdFOjM0NjYxLENVUlJFTlRfVkVSVEVYX0FUVFJJQjozNDM0MixGUk9OVDoxMDI4LEJBQ0s6MTAyOSxGUk9OVF9BTkRfQkFDSzoxMDMyLENVTExfRkFDRToyODg0LEJMRU5EOjMwNDIsRElUSEVSOjMwMjQsU1RFTkNJTF9URVNUOjI5NjAsREVQVEhfVEVTVDoyOTI5LFNDSVNTT1JfVEVTVDozMDg5LFBPTFlHT05fT0ZGU0VUX0ZJTEw6MzI4MjMsU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOjMyOTI2LFNBTVBMRV9DT1ZFUkFHRTozMjkyOCxOT19FUlJPUjowLElOVkFMSURfRU5VTToxMjgwLElOVkFMSURfVkFMVUU6MTI4MSxJTlZBTElEX09QRVJBVElPTjoxMjgyLE9VVF9PRl9NRU1PUlk6MTI4NSxDVzoyMzA0LENDVzoyMzA1LExJTkVfV0lEVEg6Mjg0OSxBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6MzM5MDEsQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOjMzOTAyLENVTExfRkFDRV9NT0RFOjI4ODUsRlJPTlRfRkFDRToyODg2LERFUFRIX1JBTkdFOjI5MjgsREVQVEhfV1JJVEVNQVNLOjI5MzAsREVQVEhfQ0xFQVJfVkFMVUU6MjkzMSxERVBUSF9GVU5DOjI5MzIsU1RFTkNJTF9DTEVBUl9WQUxVRToyOTYxLFNURU5DSUxfRlVOQzoyOTYyLFNURU5DSUxfRkFJTDoyOTY0LFNURU5DSUxfUEFTU19ERVBUSF9GQUlMOjI5NjUsU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6Mjk2NixTVEVOQ0lMX1JFRjoyOTY3LFNURU5DSUxfVkFMVUVfTUFTSzoyOTYzLFNURU5DSUxfV1JJVEVNQVNLOjI5NjgsU1RFTkNJTF9CQUNLX0ZVTkM6MzQ4MTYsU1RFTkNJTF9CQUNLX0ZBSUw6MzQ4MTcsU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTDozNDgxOCxTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTOjM0ODE5LFNURU5DSUxfQkFDS19SRUY6MzYwMDMsU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6MzYwMDQsU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzozNjAwNSxWSUVXUE9SVDoyOTc4LFNDSVNTT1JfQk9YOjMwODgsQ09MT1JfQ0xFQVJfVkFMVUU6MzEwNixDT0xPUl9XUklURU1BU0s6MzEwNyxVTlBBQ0tfQUxJR05NRU5UOjMzMTcsUEFDS19BTElHTk1FTlQ6MzMzMyxNQVhfVEVYVFVSRV9TSVpFOjMzNzksTUFYX1ZJRVdQT1JUX0RJTVM6MzM4NixTVUJQSVhFTF9CSVRTOjM0MDgsUkVEX0JJVFM6MzQxMCxHUkVFTl9CSVRTOjM0MTEsQkxVRV9CSVRTOjM0MTIsQUxQSEFfQklUUzozNDEzLERFUFRIX0JJVFM6MzQxNCxTVEVOQ0lMX0JJVFM6MzQxNSxQT0xZR09OX09GRlNFVF9VTklUUzoxMDc1MixQT0xZR09OX09GRlNFVF9GQUNUT1I6MzI4MjQsVEVYVFVSRV9CSU5ESU5HXzJEOjMyODczLFNBTVBMRV9CVUZGRVJTOjMyOTM2LFNBTVBMRVM6MzI5MzcsU0FNUExFX0NPVkVSQUdFX1ZBTFVFOjMyOTM4LFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6MzI5MzksQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6MzQ0NjcsRE9OVF9DQVJFOjQzNTIsRkFTVEVTVDo0MzUzLE5JQ0VTVDo0MzU0LEdFTkVSQVRFX01JUE1BUF9ISU5UOjMzMTcwLEJZVEU6NTEyMCxVTlNJR05FRF9CWVRFOjUxMjEsU0hPUlQ6NTEyMixVTlNJR05FRF9TSE9SVDo1MTIzLElOVDo1MTI0LFVOU0lHTkVEX0lOVDo1MTI1LEZMT0FUOjUxMjYsREVQVEhfQ09NUE9ORU5UOjY0MDIsQUxQSEE6NjQwNixSR0I6NjQwNyxSR0JBOjY0MDgsTFVNSU5BTkNFOjY0MDksTFVNSU5BTkNFX0FMUEhBOjY0MTAsVU5TSUdORURfU0hPUlRfNF80XzRfNDozMjgxOSxVTlNJR05FRF9TSE9SVF81XzVfNV8xOjMyODIwLFVOU0lHTkVEX1NIT1JUXzVfNl81OjMzNjM1LEZSQUdNRU5UX1NIQURFUjozNTYzMixWRVJURVhfU0hBREVSOjM1NjMzLE1BWF9WRVJURVhfQVRUUklCUzozNDkyMSxNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzozNjM0NyxNQVhfVkFSWUlOR19WRUNUT1JTOjM2MzQ4LE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOjM1NjYxLE1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUzozNTY2MCxNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzozNDkzMCxNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOjM2MzQ5LFNIQURFUl9UWVBFOjM1NjYzLERFTEVURV9TVEFUVVM6MzU3MTIsTElOS19TVEFUVVM6MzU3MTQsVkFMSURBVEVfU1RBVFVTOjM1NzE1LEFUVEFDSEVEX1NIQURFUlM6MzU3MTcsQUNUSVZFX1VOSUZPUk1TOjM1NzE4LEFDVElWRV9BVFRSSUJVVEVTOjM1NzIxLFNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTjozNTcyNCxDVVJSRU5UX1BST0dSQU06MzU3MjUsTkVWRVI6NTEyLExFU1M6NTEzLEVRVUFMOjUxNCxMRVFVQUw6NTE1LEdSRUFURVI6NTE2LE5PVEVRVUFMOjUxNyxHRVFVQUw6NTE4LEFMV0FZUzo1MTksS0VFUDo3NjgwLFJFUExBQ0U6NzY4MSxJTkNSOjc2ODIsREVDUjo3NjgzLElOVkVSVDo1Mzg2LElOQ1JfV1JBUDozNDA1NSxERUNSX1dSQVA6MzQwNTYsVkVORE9SOjc5MzYsUkVOREVSRVI6NzkzNyxWRVJTSU9OOjc5MzgsTkVBUkVTVDo5NzI4LExJTkVBUjo5NzI5LE5FQVJFU1RfTUlQTUFQX05FQVJFU1Q6OTk4NCxMSU5FQVJfTUlQTUFQX05FQVJFU1Q6OTk4NSxORUFSRVNUX01JUE1BUF9MSU5FQVI6OTk4NixMSU5FQVJfTUlQTUFQX0xJTkVBUjo5OTg3LFRFWFRVUkVfTUFHX0ZJTFRFUjoxMDI0MCxURVhUVVJFX01JTl9GSUxURVI6MTAyNDEsVEVYVFVSRV9XUkFQX1M6MTAyNDIsVEVYVFVSRV9XUkFQX1Q6MTAyNDMsVEVYVFVSRV8yRDozNTUzLFRFWFRVUkU6NTg5MCxURVhUVVJFX0NVQkVfTUFQOjM0MDY3LFRFWFRVUkVfQklORElOR19DVUJFX01BUDozNDA2OCxURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6MzQwNjksVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOjM0MDcwLFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWTozNDA3MSxURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6MzQwNzIsVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOjM0MDczLFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjozNDA3NCxNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOjM0MDc2LFRFWFRVUkUwOjMzOTg0LFRFWFRVUkUxOjMzOTg1LFRFWFRVUkUyOjMzOTg2LFRFWFRVUkUzOjMzOTg3LFRFWFRVUkU0OjMzOTg4LFRFWFRVUkU1OjMzOTg5LFRFWFRVUkU2OjMzOTkwLFRFWFRVUkU3OjMzOTkxLFRFWFRVUkU4OjMzOTkyLFRFWFRVUkU5OjMzOTkzLFRFWFRVUkUxMDozMzk5NCxURVhUVVJFMTE6MzM5OTUsVEVYVFVSRTEyOjMzOTk2LFRFWFRVUkUxMzozMzk5NyxURVhUVVJFMTQ6MzM5OTgsVEVYVFVSRTE1OjMzOTk5LFRFWFRVUkUxNjozNGUzLFRFWFRVUkUxNzozNDAwMSxURVhUVVJFMTg6MzQwMDIsVEVYVFVSRTE5OjM0MDAzLFRFWFRVUkUyMDozNDAwNCxURVhUVVJFMjE6MzQwMDUsVEVYVFVSRTIyOjM0MDA2LFRFWFRVUkUyMzozNDAwNyxURVhUVVJFMjQ6MzQwMDgsVEVYVFVSRTI1OjM0MDA5LFRFWFRVUkUyNjozNDAxMCxURVhUVVJFMjc6MzQwMTEsVEVYVFVSRTI4OjM0MDEyLFRFWFRVUkUyOTozNDAxMyxURVhUVVJFMzA6MzQwMTQsVEVYVFVSRTMxOjM0MDE1LEFDVElWRV9URVhUVVJFOjM0MDE2LFJFUEVBVDoxMDQ5NyxDTEFNUF9UT19FREdFOjMzMDcxLE1JUlJPUkVEX1JFUEVBVDozMzY0OCxGTE9BVF9WRUMyOjM1NjY0LEZMT0FUX1ZFQzM6MzU2NjUsRkxPQVRfVkVDNDozNTY2NixJTlRfVkVDMjozNTY2NyxJTlRfVkVDMzozNTY2OCxJTlRfVkVDNDozNTY2OSxCT09MOjM1NjcwLEJPT0xfVkVDMjozNTY3MSxCT09MX1ZFQzM6MzU2NzIsQk9PTF9WRUM0OjM1NjczLEZMT0FUX01BVDI6MzU2NzQsRkxPQVRfTUFUMzozNTY3NSxGTE9BVF9NQVQ0OjM1Njc2LFNBTVBMRVJfMkQ6MzU2NzgsU0FNUExFUl9DVUJFOjM1NjgwLFZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDozNDMzOCxWRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6MzQzMzksVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6MzQzNDAsVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOjM0MzQxLFZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDozNDkyMixWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVI6MzQzNzMsVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzozNDk3NSxJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6MzU3MzgsSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6MzU3MzksQ09NUElMRV9TVEFUVVM6MzU3MTMsTE9XX0ZMT0FUOjM2MzM2LE1FRElVTV9GTE9BVDozNjMzNyxISUdIX0ZMT0FUOjM2MzM4LExPV19JTlQ6MzYzMzksTUVESVVNX0lOVDozNjM0MCxISUdIX0lOVDozNjM0MSxGUkFNRUJVRkZFUjozNjE2MCxSRU5ERVJCVUZGRVI6MzYxNjEsUkdCQTQ6MzI4NTQsUkdCNV9BMTozMjg1NSxSR0I1NjU6MzYxOTQsREVQVEhfQ09NUE9ORU5UMTY6MzMxODksU1RFTkNJTF9JTkRFWDo2NDAxLFNURU5DSUxfSU5ERVg4OjM2MTY4LERFUFRIX1NURU5DSUw6MzQwNDEsUkVOREVSQlVGRkVSX1dJRFRIOjM2MTYyLFJFTkRFUkJVRkZFUl9IRUlHSFQ6MzYxNjMsUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDozNjE2NCxSRU5ERVJCVUZGRVJfUkVEX1NJWkU6MzYxNzYsUkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6MzYxNzcsUkVOREVSQlVGRkVSX0JMVUVfU0laRTozNjE3OCxSRU5ERVJCVUZGRVJfQUxQSEFfU0laRTozNjE3OSxSRU5ERVJCVUZGRVJfREVQVEhfU0laRTozNjE4MCxSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOjM2MTgxLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6MzYwNDgsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRTozNjA0OSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6MzYwNTAsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6MzYwNTEsQ09MT1JfQVRUQUNITUVOVDA6MzYwNjQsREVQVEhfQVRUQUNITUVOVDozNjA5NixTVEVOQ0lMX0FUVEFDSE1FTlQ6MzYxMjgsREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOjMzMzA2LE5PTkU6MCxGUkFNRUJVRkZFUl9DT01QTEVURTozNjA1MyxGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ6MzYwNTQsRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQ6MzYwNTUsRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TOjM2MDU3LEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOjM2MDYxLEZSQU1FQlVGRkVSX0JJTkRJTkc6MzYwMDYsUkVOREVSQlVGRkVSX0JJTkRJTkc6MzYwMDcsTUFYX1JFTkRFUkJVRkZFUl9TSVpFOjM0MDI0LElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OOjEyODYsVU5QQUNLX0ZMSVBfWV9XRUJHTDozNzQ0MCxVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0w6Mzc0NDEsQ09OVEVYVF9MT1NUX1dFQkdMOjM3NDQyLFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0w6Mzc0NDMsQlJPV1NFUl9ERUZBVUxUX1dFQkdMOjM3NDQ0LENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6MzM3NzYsQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6MzM3NzcsQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6MzM3NzgsQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6MzM3NzksQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzozNTg0MCxDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOjM1ODQxLENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOjM1ODQyLENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOjM1ODQzLENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9XRUJHTDozNzgwOCxDT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOjM2MTk2LENPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNOjM2NDkyLEhBTEZfRkxPQVRfT0VTOjM2MTkzLERPVUJMRTo1MTMwLFJFQURfQlVGRkVSOjMwNzQsVU5QQUNLX1JPV19MRU5HVEg6MzMxNCxVTlBBQ0tfU0tJUF9ST1dTOjMzMTUsVU5QQUNLX1NLSVBfUElYRUxTOjMzMTYsUEFDS19ST1dfTEVOR1RIOjMzMzAsUEFDS19TS0lQX1JPV1M6MzMzMSxQQUNLX1NLSVBfUElYRUxTOjMzMzIsQ09MT1I6NjE0NCxERVBUSDo2MTQ1LFNURU5DSUw6NjE0NixSRUQ6NjQwMyxSR0I4OjMyODQ5LFJHQkE4OjMyODU2LFJHQjEwX0EyOjMyODU3LFRFWFRVUkVfQklORElOR18zRDozMjg3NCxVTlBBQ0tfU0tJUF9JTUFHRVM6MzI4NzcsVU5QQUNLX0lNQUdFX0hFSUdIVDozMjg3OCxURVhUVVJFXzNEOjMyODc5LFRFWFRVUkVfV1JBUF9SOjMyODgyLE1BWF8zRF9URVhUVVJFX1NJWkU6MzI4ODMsVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOjMzNjQwLE1BWF9FTEVNRU5UU19WRVJUSUNFUzozM2UzLE1BWF9FTEVNRU5UU19JTkRJQ0VTOjMzMDAxLFRFWFRVUkVfTUlOX0xPRDozMzA4MixURVhUVVJFX01BWF9MT0Q6MzMwODMsVEVYVFVSRV9CQVNFX0xFVkVMOjMzMDg0LFRFWFRVUkVfTUFYX0xFVkVMOjMzMDg1LE1JTjozMjc3NSxNQVg6MzI3NzYsREVQVEhfQ09NUE9ORU5UMjQ6MzMxOTAsTUFYX1RFWFRVUkVfTE9EX0JJQVM6MzQwNDUsVEVYVFVSRV9DT01QQVJFX01PREU6MzQ4OTIsVEVYVFVSRV9DT01QQVJFX0ZVTkM6MzQ4OTMsQ1VSUkVOVF9RVUVSWTozNDkxNyxRVUVSWV9SRVNVTFQ6MzQ5MTgsUVVFUllfUkVTVUxUX0FWQUlMQUJMRTozNDkxOSxTVFJFQU1fUkVBRDozNTA0MSxTVFJFQU1fQ09QWTozNTA0MixTVEFUSUNfUkVBRDozNTA0NSxTVEFUSUNfQ09QWTozNTA0NixEWU5BTUlDX1JFQUQ6MzUwNDksRFlOQU1JQ19DT1BZOjM1MDUwLE1BWF9EUkFXX0JVRkZFUlM6MzQ4NTIsRFJBV19CVUZGRVIwOjM0ODUzLERSQVdfQlVGRkVSMTozNDg1NCxEUkFXX0JVRkZFUjI6MzQ4NTUsRFJBV19CVUZGRVIzOjM0ODU2LERSQVdfQlVGRkVSNDozNDg1NyxEUkFXX0JVRkZFUjU6MzQ4NTgsRFJBV19CVUZGRVI2OjM0ODU5LERSQVdfQlVGRkVSNzozNDg2MCxEUkFXX0JVRkZFUjg6MzQ4NjEsRFJBV19CVUZGRVI5OjM0ODYyLERSQVdfQlVGRkVSMTA6MzQ4NjMsRFJBV19CVUZGRVIxMTozNDg2NCxEUkFXX0JVRkZFUjEyOjM0ODY1LERSQVdfQlVGRkVSMTM6MzQ4NjYsRFJBV19CVUZGRVIxNDozNDg2NyxEUkFXX0JVRkZFUjE1OjM0ODY4LE1BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFM6MzU2NTcsTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFM6MzU2NTgsU0FNUExFUl8zRDozNTY3OSxTQU1QTEVSXzJEX1NIQURPVzozNTY4MixGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UOjM1NzIzLFBJWEVMX1BBQ0tfQlVGRkVSOjM1MDUxLFBJWEVMX1VOUEFDS19CVUZGRVI6MzUwNTIsUElYRUxfUEFDS19CVUZGRVJfQklORElORzozNTA1MyxQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc6MzUwNTUsRkxPQVRfTUFUMngzOjM1Njg1LEZMT0FUX01BVDJ4NDozNTY4NixGTE9BVF9NQVQzeDI6MzU2ODcsRkxPQVRfTUFUM3g0OjM1Njg4LEZMT0FUX01BVDR4MjozNTY4OSxGTE9BVF9NQVQ0eDM6MzU2OTAsU1JHQjozNTkwNCxTUkdCODozNTkwNSxTUkdCOF9BTFBIQTg6MzU5MDcsQ09NUEFSRV9SRUZfVE9fVEVYVFVSRTozNDg5NCxSR0JBMzJGOjM0ODM2LFJHQjMyRjozNDgzNyxSR0JBMTZGOjM0ODQyLFJHQjE2RjozNDg0MyxWRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVI6MzUwNjksTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTOjM1MDcxLE1JTl9QUk9HUkFNX1RFWEVMX09GRlNFVDozNTA3NixNQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQ6MzUwNzcsTUFYX1ZBUllJTkdfQ09NUE9ORU5UUzozNTY1OSxURVhUVVJFXzJEX0FSUkFZOjM1ODY2LFRFWFRVUkVfQklORElOR18yRF9BUlJBWTozNTg2OSxSMTFGX0cxMUZfQjEwRjozNTg5OCxVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWOjM1ODk5LFJHQjlfRTU6MzU5MDEsVU5TSUdORURfSU5UXzVfOV85XzlfUkVWOjM1OTAyLFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERTozNTk2NyxNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFM6MzU5NjgsVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTOjM1OTcxLFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6MzU5NzIsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOjM1OTczLFRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU46MzU5NzYsUkFTVEVSSVpFUl9ESVNDQVJEOjM1OTc3LE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzozNTk3OCxNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlM6MzU5NzksSU5URVJMRUFWRURfQVRUUklCUzozNTk4MCxTRVBBUkFURV9BVFRSSUJTOjM1OTgxLFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6MzU5ODIsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOjM1OTgzLFJHQkEzMlVJOjM2MjA4LFJHQjMyVUk6MzYyMDksUkdCQTE2VUk6MzYyMTQsUkdCMTZVSTozNjIxNSxSR0JBOFVJOjM2MjIwLFJHQjhVSTozNjIyMSxSR0JBMzJJOjM2MjI2LFJHQjMySTozNjIyNyxSR0JBMTZJOjM2MjMyLFJHQjE2STozNjIzMyxSR0JBOEk6MzYyMzgsUkdCOEk6MzYyMzksUkVEX0lOVEVHRVI6MzYyNDQsUkdCX0lOVEVHRVI6MzYyNDgsUkdCQV9JTlRFR0VSOjM2MjQ5LFNBTVBMRVJfMkRfQVJSQVk6MzYyODksU0FNUExFUl8yRF9BUlJBWV9TSEFET1c6MzYyOTIsU0FNUExFUl9DVUJFX1NIQURPVzozNjI5MyxVTlNJR05FRF9JTlRfVkVDMjozNjI5NCxVTlNJR05FRF9JTlRfVkVDMzozNjI5NSxVTlNJR05FRF9JTlRfVkVDNDozNjI5NixJTlRfU0FNUExFUl8yRDozNjI5OCxJTlRfU0FNUExFUl8zRDozNjI5OSxJTlRfU0FNUExFUl9DVUJFOjM2MzAwLElOVF9TQU1QTEVSXzJEX0FSUkFZOjM2MzAzLFVOU0lHTkVEX0lOVF9TQU1QTEVSXzJEOjM2MzA2LFVOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOjM2MzA3LFVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6MzYzMDgsVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk6MzYzMTEsREVQVEhfQ09NUE9ORU5UMzJGOjM2MDEyLERFUFRIMzJGX1NURU5DSUw4OjM2MDEzLEZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVjozNjI2OSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HOjMzMjk2LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6MzMyOTcsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRTozMzI5OCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6MzMyOTksRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6MzMzMDAsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOjMzMzAxLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRTozMzMwMixGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRTozMzMwMyxGUkFNRUJVRkZFUl9ERUZBVUxUOjMzMzA0LFVOU0lHTkVEX0lOVF8yNF84OjM0MDQyLERFUFRIMjRfU1RFTkNJTDg6MzUwNTYsVU5TSUdORURfTk9STUFMSVpFRDozNTg2MyxEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkc6MzYwMDYsUkVBRF9GUkFNRUJVRkZFUjozNjAwOCxEUkFXX0ZSQU1FQlVGRkVSOjM2MDA5LFJFQURfRlJBTUVCVUZGRVJfQklORElORzozNjAxMCxSRU5ERVJCVUZGRVJfU0FNUExFUzozNjAxMSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVI6MzYwNTIsTUFYX0NPTE9SX0FUVEFDSE1FTlRTOjM2MDYzLENPTE9SX0FUVEFDSE1FTlQxOjM2MDY1LENPTE9SX0FUVEFDSE1FTlQyOjM2MDY2LENPTE9SX0FUVEFDSE1FTlQzOjM2MDY3LENPTE9SX0FUVEFDSE1FTlQ0OjM2MDY4LENPTE9SX0FUVEFDSE1FTlQ1OjM2MDY5LENPTE9SX0FUVEFDSE1FTlQ2OjM2MDcwLENPTE9SX0FUVEFDSE1FTlQ3OjM2MDcxLENPTE9SX0FUVEFDSE1FTlQ4OjM2MDcyLENPTE9SX0FUVEFDSE1FTlQ5OjM2MDczLENPTE9SX0FUVEFDSE1FTlQxMDozNjA3NCxDT0xPUl9BVFRBQ0hNRU5UMTE6MzYwNzUsQ09MT1JfQVRUQUNITUVOVDEyOjM2MDc2LENPTE9SX0FUVEFDSE1FTlQxMzozNjA3NyxDT0xPUl9BVFRBQ0hNRU5UMTQ6MzYwNzgsQ09MT1JfQVRUQUNITUVOVDE1OjM2MDc5LEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEU6MzYxODIsTUFYX1NBTVBMRVM6MzYxODMsSEFMRl9GTE9BVDo1MTMxLFJHOjMzMzE5LFJHX0lOVEVHRVI6MzMzMjAsUjg6MzMzMjEsUkc4OjMzMzIzLFIxNkY6MzMzMjUsUjMyRjozMzMyNixSRzE2RjozMzMyNyxSRzMyRjozMzMyOCxSOEk6MzMzMjksUjhVSTozMzMzMCxSMTZJOjMzMzMxLFIxNlVJOjMzMzMyLFIzMkk6MzMzMzMsUjMyVUk6MzMzMzQsUkc4STozMzMzNSxSRzhVSTozMzMzNixSRzE2STozMzMzNyxSRzE2VUk6MzMzMzgsUkczMkk6MzMzMzksUkczMlVJOjMzMzQwLFZFUlRFWF9BUlJBWV9CSU5ESU5HOjM0MjI5LFI4X1NOT1JNOjM2NzU2LFJHOF9TTk9STTozNjc1NyxSR0I4X1NOT1JNOjM2NzU4LFJHQkE4X1NOT1JNOjM2NzU5LFNJR05FRF9OT1JNQUxJWkVEOjM2NzY0LENPUFlfUkVBRF9CVUZGRVI6MzY2NjIsQ09QWV9XUklURV9CVUZGRVI6MzY2NjMsQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HOjM2NjYyLENPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkc6MzY2NjMsVU5JRk9STV9CVUZGRVI6MzUzNDUsVU5JRk9STV9CVUZGRVJfQklORElORzozNTM2OCxVTklGT1JNX0JVRkZFUl9TVEFSVDozNTM2OSxVTklGT1JNX0JVRkZFUl9TSVpFOjM1MzcwLE1BWF9WRVJURVhfVU5JRk9STV9CTE9DS1M6MzUzNzEsTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTOjM1MzczLE1BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUzozNTM3NCxNQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1M6MzUzNzUsTUFYX1VOSUZPUk1fQkxPQ0tfU0laRTozNTM3NixNQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzozNTM3NyxNQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTOjM1Mzc5LFVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQ6MzUzODAsQUNUSVZFX1VOSUZPUk1fQkxPQ0tTOjM1MzgyLFVOSUZPUk1fVFlQRTozNTM4MyxVTklGT1JNX1NJWkU6MzUzODQsVU5JRk9STV9CTE9DS19JTkRFWDozNTM4NixVTklGT1JNX09GRlNFVDozNTM4NyxVTklGT1JNX0FSUkFZX1NUUklERTozNTM4OCxVTklGT1JNX01BVFJJWF9TVFJJREU6MzUzODksVU5JRk9STV9JU19ST1dfTUFKT1I6MzUzOTAsVU5JRk9STV9CTE9DS19CSU5ESU5HOjM1MzkxLFVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOjM1MzkyLFVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TOjM1Mzk0LFVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzozNTM5NSxVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjozNTM5NixVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOjM1Mzk4LElOVkFMSURfSU5ERVg6NDI5NDk2NzI5NSxNQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTOjM3MTU0LE1BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTOjM3MTU3LE1BWF9TRVJWRVJfV0FJVF9USU1FT1VUOjM3MTM3LE9CSkVDVF9UWVBFOjM3MTM4LFNZTkNfQ09ORElUSU9OOjM3MTM5LFNZTkNfU1RBVFVTOjM3MTQwLFNZTkNfRkxBR1M6MzcxNDEsU1lOQ19GRU5DRTozNzE0MixTWU5DX0dQVV9DT01NQU5EU19DT01QTEVURTozNzE0MyxVTlNJR05BTEVEOjM3MTQ0LFNJR05BTEVEOjM3MTQ1LEFMUkVBRFlfU0lHTkFMRUQ6MzcxNDYsVElNRU9VVF9FWFBJUkVEOjM3MTQ3LENPTkRJVElPTl9TQVRJU0ZJRUQ6MzcxNDgsV0FJVF9GQUlMRUQ6MzcxNDksU1lOQ19GTFVTSF9DT01NQU5EU19CSVQ6MSxWRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1I6MzUwNzAsQU5ZX1NBTVBMRVNfUEFTU0VEOjM1ODg3LEFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU6MzYyMDIsU0FNUExFUl9CSU5ESU5HOjM1MDk3LFJHQjEwX0EyVUk6MzY5NzUsSU5UXzJfMTBfMTBfMTBfUkVWOjM2MjU1LFRSQU5TRk9STV9GRUVEQkFDSzozNjM4NixUUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEOjM2Mzg3LFRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkU6MzYzODgsVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc6MzYzODksQ09NUFJFU1NFRF9SMTFfRUFDOjM3NDg4LENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Mzc0ODksQ09NUFJFU1NFRF9SRzExX0VBQzozNzQ5MCxDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzozNzQ5MSxDT01QUkVTU0VEX1JHQjhfRVRDMjozNzQ5MixDT01QUkVTU0VEX1NSR0I4X0VUQzI6Mzc0OTMsQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjozNzQ5NCxDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjozNzQ5NSxDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOjM3NDk2LENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOjM3NDk3LFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDozNzE2NyxNQVhfRUxFTUVOVF9JTkRFWDozNjIwMyxURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6MzM1MDMsTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOjM0MDQ3fSxpdD1PYmplY3QuZnJlZXplKEQkKX0pO3ZhciB4ZSxBdCxvaT1PKCgpPT57YnQoKTttdCgpO1Z0KCk7c3MoKTt4ZT17QllURTppdC5CWVRFLFVOU0lHTkVEX0JZVEU6aXQuVU5TSUdORURfQllURSxTSE9SVDppdC5TSE9SVCxVTlNJR05FRF9TSE9SVDppdC5VTlNJR05FRF9TSE9SVCxJTlQ6aXQuSU5ULFVOU0lHTkVEX0lOVDppdC5VTlNJR05FRF9JTlQsRkxPQVQ6aXQuRkxPQVQsRE9VQkxFOml0LkRPVUJMRX07eGUuZ2V0U2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3N3aXRjaCh0KXtjYXNlIHhlLkJZVEU6cmV0dXJuIEludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSB4ZS5TSE9SVDpyZXR1cm4gSW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLlVOU0lHTkVEX1NIT1JUOnJldHVybiBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLklOVDpyZXR1cm4gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLlVOU0lHTkVEX0lOVDpyZXR1cm4gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSB4ZS5GTE9BVDpyZXR1cm4gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2UgeGUuRE9VQkxFOnJldHVybiBGbG9hdDY0QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTt4ZS5mcm9tVHlwZWRBcnJheT1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgSW50OEFycmF5KXJldHVybiB4ZS5CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB4ZS5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5KXJldHVybiB4ZS5TSE9SVDtpZih0IGluc3RhbmNlb2YgVWludDE2QXJyYXkpcmV0dXJuIHhlLlVOU0lHTkVEX1NIT1JUO2lmKHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KXJldHVybiB4ZS5JTlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiB4ZS5VTlNJR05FRF9JTlQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSlyZXR1cm4geGUuRkxPQVQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSlyZXR1cm4geGUuRE9VQkxFO3Rocm93IG5ldyBZKCJhcnJheSBtdXN0IGJlIGFuIEludDhBcnJheSwgVWludDhBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIG9yIEZsb2F0NjRBcnJheS4iKX07eGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJih0PT09eGUuQllURXx8dD09PXhlLlVOU0lHTkVEX0JZVEV8fHQ9PT14ZS5TSE9SVHx8dD09PXhlLlVOU0lHTkVEX1NIT1JUfHx0PT09eGUuSU5UfHx0PT09eGUuVU5TSUdORURfSU5UfHx0PT09eGUuRkxPQVR8fHQ9PT14ZS5ET1VCTEUpfTt4ZS5jcmVhdGVUeXBlZEFycmF5PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJ2YWx1ZXNPckxlbmd0aCBpcyByZXF1aXJlZC4iKTtzd2l0Y2godCl7Y2FzZSB4ZS5CWVRFOnJldHVybiBuZXcgSW50OEFycmF5KGUpO2Nhc2UgeGUuVU5TSUdORURfQllURTpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSk7Y2FzZSB4ZS5TSE9SVDpyZXR1cm4gbmV3IEludDE2QXJyYXkoZSk7Y2FzZSB4ZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGUpO2Nhc2UgeGUuSU5UOnJldHVybiBuZXcgSW50MzJBcnJheShlKTtjYXNlIHhlLlVOU0lHTkVEX0lOVDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUpO2Nhc2UgeGUuRkxPQVQ6cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZSk7Y2FzZSB4ZS5ET1VCTEU6cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoZSk7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTt4ZS5jcmVhdGVBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJidWZmZXIgaXMgcmVxdWlyZWQuIik7c3dpdGNoKGk9WihpLDApLG49WihuLChlLmJ5dGVMZW5ndGgtaSkveGUuZ2V0U2l6ZUluQnl0ZXModCkpLHQpe2Nhc2UgeGUuQllURTpyZXR1cm4gbmV3IEludDhBcnJheShlLGksbik7Y2FzZSB4ZS5VTlNJR05FRF9CWVRFOnJldHVybiBuZXcgVWludDhBcnJheShlLGksbik7Y2FzZSB4ZS5TSE9SVDpyZXR1cm4gbmV3IEludDE2QXJyYXkoZSxpLG4pO2Nhc2UgeGUuVU5TSUdORURfU0hPUlQ6cmV0dXJuIG5ldyBVaW50MTZBcnJheShlLGksbik7Y2FzZSB4ZS5JTlQ6cmV0dXJuIG5ldyBJbnQzMkFycmF5KGUsaSxuKTtjYXNlIHhlLlVOU0lHTkVEX0lOVDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUsaSxuKTtjYXNlIHhlLkZMT0FUOnJldHVybiBuZXcgRmxvYXQzMkFycmF5KGUsaSxuKTtjYXNlIHhlLkRPVUJMRTpyZXR1cm4gbmV3IEZsb2F0NjRBcnJheShlLGksbik7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTt4ZS5mcm9tTmFtZT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJCWVRFIjpyZXR1cm4geGUuQllURTtjYXNlIlVOU0lHTkVEX0JZVEUiOnJldHVybiB4ZS5VTlNJR05FRF9CWVRFO2Nhc2UiU0hPUlQiOnJldHVybiB4ZS5TSE9SVDtjYXNlIlVOU0lHTkVEX1NIT1JUIjpyZXR1cm4geGUuVU5TSUdORURfU0hPUlQ7Y2FzZSJJTlQiOnJldHVybiB4ZS5JTlQ7Y2FzZSJVTlNJR05FRF9JTlQiOnJldHVybiB4ZS5VTlNJR05FRF9JTlQ7Y2FzZSJGTE9BVCI6cmV0dXJuIHhlLkZMT0FUO2Nhc2UiRE9VQkxFIjpyZXR1cm4geGUuRE9VQkxFO2RlZmF1bHQ6dGhyb3cgbmV3IFkoIm5hbWUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtBdD1PYmplY3QuZnJlZXplKHhlKX0pO2Z1bmN0aW9uIFRlKHQsZSxpLG4pe3RoaXNbMF09Wih0LDApLHRoaXNbMV09WihpLDApLHRoaXNbMl09WihlLDApLHRoaXNbM109WihuLDApfXZhciBNJCxVJCxfRCxSRCxRJCxrJCxIbixkYz1PKCgpPT57WGUoKTthZSgpO2J0KCk7bXQoKTtWdCgpO1RlLnBhY2tlZExlbmd0aD00O1RlLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dFswXSxlW2krK109dFsxXSxlW2krK109dFsyXSxlW2krK109dFszXSxlfTtUZS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgVGUpLGlbMF09dFtlKytdLGlbMV09dFtlKytdLGlbMl09dFtlKytdLGlbM109dFtlKytdLGl9O1RlLnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBpPXQubGVuZ3RoLG49aSo0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG4pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09bil0aHJvdyBuZXcgWSgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW4mJihlLmxlbmd0aD1uKX1mb3IobGV0IHM9MDtzPGk7KytzKVRlLnBhY2sodFtzXSxlLHMqNCk7cmV0dXJuIGV9O1RlLnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYocC5kZWZpbmVkKCJhcnJheSIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IFkoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgaT10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPWkvNDplPW5ldyBBcnJheShpLzQpO2ZvcihsZXQgbj0wO248aTtuKz00KXtsZXQgcz1uLzQ7ZVtzXT1UZS51bnBhY2sodCxuLGVbc10pfXJldHVybiBlfTtUZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlKTpuZXcgVGUodFswXSx0WzJdLHRbMV0sdFszXSl9O1RlLmZyb21BcnJheT1UZS51bnBhY2s7VGUuZnJvbUNvbHVtbk1ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC5kZWZpbmVkKCJ2YWx1ZXMiLHQpLFRlLmNsb25lKHQsZSl9O1RlLmZyb21Sb3dNYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWVzIix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzJdLGVbMl09dFsxXSxlWzNdPXRbM10sZSk6bmV3IFRlKHRbMF0sdFsxXSx0WzJdLHRbM10pfTtUZS5mcm9tU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzY2FsZSIsdCksbShlKT8oZVswXT10LngsZVsxXT0wLGVbMl09MCxlWzNdPXQueSxlKTpuZXcgVGUodC54LDAsMCx0LnkpfTtUZS5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109dCxlKTpuZXcgVGUodCwwLDAsdCl9O1RlLmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm51bWJlcigiYW5nbGUiLHQpO2xldCBpPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIG0oZSk/KGVbMF09aSxlWzFdPW4sZVsyXT0tbixlWzNdPWksZSk6bmV3IFRlKGksLW4sbixpKX07VGUudG9BcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdXX07VGUuZ2V0RWxlbWVudEluZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJyb3ciLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoInJvdyIsZSwxKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiY29sdW1uIix0LDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMSksdCoyK2V9O1RlLmdldENvbHVtbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPWUqMixzPXRbbl0sbz10W24rMV07cmV0dXJuIGkueD1zLGkueT1vLGl9O1RlLnNldENvbHVtbj1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49VGUuY2xvbmUodCxuKTtsZXQgcz1lKjI7cmV0dXJuIG5bc109aS54LG5bcysxXT1pLnksbn07VGUuZ2V0Um93PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFtlXSxzPXRbZSsyXTtyZXR1cm4gaS54PW4saS55PXMsaX07VGUuc2V0Um93PWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49VGUuY2xvbmUodCxuKSxuW2VdPWkueCxuW2UrMl09aS55LG59O00kPW5ldyBudDtUZS5zZXRTY2FsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1UZS5nZXRTY2FsZSh0LE0kKSxzPWUueC9uLngsbz1lLnkvbi55O3JldHVybiBpWzBdPXRbMF0qcyxpWzFdPXRbMV0qcyxpWzJdPXRbMl0qbyxpWzNdPXRbM10qbyxpfTtVJD1uZXcgbnQ7VGUuc2V0VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPVRlLmdldFNjYWxlKHQsVSQpLHM9ZS9uLngsbz1lL24ueTtyZXR1cm4gaVswXT10WzBdKnMsaVsxXT10WzFdKnMsaVsyXT10WzJdKm8saVszXT10WzNdKm8saX07X0Q9bmV3IG50O1RlLmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PW50Lm1hZ25pdHVkZShudC5mcm9tRWxlbWVudHModFswXSx0WzFdLF9EKSksZS55PW50Lm1hZ25pdHVkZShudC5mcm9tRWxlbWVudHModFsyXSx0WzNdLF9EKSksZX07UkQ9bmV3IG50O1RlLmdldE1heGltdW1TY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gVGUuZ2V0U2NhbGUodCxSRCksbnQubWF4aW11bUNvbXBvbmVudChSRCl9O1EkPW5ldyBudDtUZS5zZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1UZS5nZXRTY2FsZSh0LFEkKTtyZXR1cm4gaVswXT1lWzBdKm4ueCxpWzFdPWVbMV0qbi54LGlbMl09ZVsyXSpuLnksaVszXT1lWzNdKm4ueSxpfTtrJD1uZXcgbnQ7VGUuZ2V0Um90YXRpb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPVRlLmdldFNjYWxlKHQsayQpO3JldHVybiBlWzBdPXRbMF0vaS54LGVbMV09dFsxXS9pLngsZVsyXT10WzJdL2kueSxlWzNdPXRbM10vaS55LGV9O1RlLm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10WzBdKmVbMF0rdFsyXSplWzFdLHM9dFswXSplWzJdK3RbMl0qZVszXSxvPXRbMV0qZVswXSt0WzNdKmVbMV0scj10WzFdKmVbMl0rdFszXSplWzNdO3JldHVybiBpWzBdPW4saVsxXT1vLGlbMl09cyxpWzNdPXIsaX07VGUuYWRkPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdK2VbMF0saVsxXT10WzFdK2VbMV0saVsyXT10WzJdK2VbMl0saVszXT10WzNdK2VbM10saX07VGUuc3VidHJhY3Q9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0tZVswXSxpWzFdPXRbMV0tZVsxXSxpWzJdPXRbMl0tZVsyXSxpWzNdPXRbM10tZVszXSxpfTtUZS5tdWx0aXBseUJ5VmVjdG9yPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10WzBdKmUueCt0WzJdKmUueSxzPXRbMV0qZS54K3RbM10qZS55O3JldHVybiBpLng9bixpLnk9cyxpfTtUZS5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdKmUsaVsxXT10WzFdKmUsaVsyXT10WzJdKmUsaVszXT10WzNdKmUsaX07VGUubXVsdGlwbHlCeVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZS54LGlbMV09dFsxXSplLngsaVsyXT10WzJdKmUueSxpWzNdPXRbM10qZS55LGl9O1RlLm11bHRpcGx5QnlVbmlmb3JtU2NhbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGlbMF09dFswXSplLGlbMV09dFsxXSplLGlbMl09dFsyXSplLGlbM109dFszXSplLGl9O1RlLm5lZ2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09LXRbMF0sZVsxXT0tdFsxXSxlWzJdPS10WzJdLGVbM109LXRbM10sZX07VGUudHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgaT10WzBdLG49dFsyXSxzPXRbMV0sbz10WzNdO3JldHVybiBlWzBdPWksZVsxXT1uLGVbMl09cyxlWzNdPW8sZX07VGUuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT1NYXRoLmFicyh0WzBdKSxlWzFdPU1hdGguYWJzKHRbMV0pLGVbMl09TWF0aC5hYnModFsyXSksZVszXT1NYXRoLmFicyh0WzNdKSxlfTtUZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnRbMF09PT1lWzBdJiZ0WzFdPT09ZVsxXSYmdFsyXT09PWVbMl0mJnRbM109PT1lWzNdfTtUZS5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRbMF09PT1lW2ldJiZ0WzFdPT09ZVtpKzFdJiZ0WzJdPT09ZVtpKzJdJiZ0WzNdPT09ZVtpKzNdfTtUZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaT1aKGksMCksdD09PWV8fG0odCkmJm0oZSkmJk1hdGguYWJzKHRbMF0tZVswXSk8PWkmJk1hdGguYWJzKHRbMV0tZVsxXSk8PWkmJk1hdGguYWJzKHRbMl0tZVsyXSk8PWkmJk1hdGguYWJzKHRbM10tZVszXSk8PWl9O1RlLklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IFRlKDEsMCwwLDEpKTtUZS5aRVJPPU9iamVjdC5mcmVlemUobmV3IFRlKDAsMCwwLDApKTtUZS5DT0xVTU4wUk9XMD0wO1RlLkNPTFVNTjBST1cxPTE7VGUuQ09MVU1OMVJPVzA9MjtUZS5DT0xVTU4xUk9XMT0zO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRlLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVGUucGFja2VkTGVuZ3RofX19KTtUZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIFRlLmNsb25lKHRoaXMsdCl9O1RlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIFRlLmVxdWFscyh0aGlzLHQpfTtUZS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBUZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07VGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXNbMF19LCAke3RoaXNbMl19KQooJHt0aGlzWzFdfSwgJHt0aGlzWzNdfSlgfTtIbj1UZX0pO3ZhciBKaSxaRCxJRD1PKCgpPT57WGUoKTtIdCgpO1ZzKCk7YWUoKTtWdCgpO2RjKCk7ZG4oKTtGaSgpO0ppPXtTQ0FMQVI6IlNDQUxBUiIsVkVDMjoiVkVDMiIsVkVDMzoiVkVDMyIsVkVDNDoiVkVDNCIsTUFUMjoiTUFUMiIsTUFUMzoiTUFUMyIsTUFUNDoiTUFUNCJ9O0ppLmdldE1hdGhUeXBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIEppLlNDQUxBUjpyZXR1cm4gTnVtYmVyO2Nhc2UgSmkuVkVDMjpyZXR1cm4gbnQ7Y2FzZSBKaS5WRUMzOnJldHVybiBsO2Nhc2UgSmkuVkVDNDpyZXR1cm4gaWU7Y2FzZSBKaS5NQVQyOnJldHVybiBIbjtjYXNlIEppLk1BVDM6cmV0dXJuIGx0O2Nhc2UgSmkuTUFUNDpyZXR1cm4gYXQ7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiYXR0cmlidXRlVHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O0ppLmdldE51bWJlck9mQ29tcG9uZW50cz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBKaS5TQ0FMQVI6cmV0dXJuIDE7Y2FzZSBKaS5WRUMyOnJldHVybiAyO2Nhc2UgSmkuVkVDMzpyZXR1cm4gMztjYXNlIEppLlZFQzQ6Y2FzZSBKaS5NQVQyOnJldHVybiA0O2Nhc2UgSmkuTUFUMzpyZXR1cm4gOTtjYXNlIEppLk1BVDQ6cmV0dXJuIDE2O2RlZmF1bHQ6dGhyb3cgbmV3IFkoImF0dHJpYnV0ZVR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtKaS5nZXRBdHRyaWJ1dGVMb2NhdGlvbkNvdW50PWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIEppLlNDQUxBUjpjYXNlIEppLlZFQzI6Y2FzZSBKaS5WRUMzOmNhc2UgSmkuVkVDNDpyZXR1cm4gMTtjYXNlIEppLk1BVDI6cmV0dXJuIDI7Y2FzZSBKaS5NQVQzOnJldHVybiAzO2Nhc2UgSmkuTUFUNDpyZXR1cm4gNDtkZWZhdWx0OnRocm93IG5ldyBZKCJhdHRyaWJ1dGVUeXBlIGlzIG5vdCBhIHZhbGlkIHZhbHVlLiIpfX07SmkuZ2V0R2xzbFR5cGU9ZnVuY3Rpb24odCl7c3dpdGNoKHAudHlwZU9mLnN0cmluZygiYXR0cmlidXRlVHlwZSIsdCksdCl7Y2FzZSBKaS5TQ0FMQVI6cmV0dXJuImZsb2F0IjtjYXNlIEppLlZFQzI6cmV0dXJuInZlYzIiO2Nhc2UgSmkuVkVDMzpyZXR1cm4idmVjMyI7Y2FzZSBKaS5WRUM0OnJldHVybiJ2ZWM0IjtjYXNlIEppLk1BVDI6cmV0dXJuIm1hdDIiO2Nhc2UgSmkuTUFUMzpyZXR1cm4ibWF0MyI7Y2FzZSBKaS5NQVQ0OnJldHVybiJtYXQ0IjtkZWZhdWx0OnRocm93IG5ldyBZKCJhdHRyaWJ1dGVUeXBlIGlzIG5vdCBhIHZhbGlkIHZhbHVlLiIpfX07WkQ9T2JqZWN0LmZyZWV6ZShKaSl9KTtmdW5jdGlvbiBvSSh0KXtyZXR1cm4gQ0RbMF09dCxDRFswXX1mdW5jdGlvbiBUVCh0KXtyZXR1cm4gdD4+MV4tKHQmMSl9dmFyIHBELHVELHJuLGdFLENELE5ULFlpLG9oPU8oKCk9PntYZSgpO0h0KCk7b2koKTthZSgpO210KCk7VnQoKTtfZSgpO0lEKCk7cEQ9MS8yNTYsdUQ9MjU2LHJuPXt9O3JuLm9jdEVuY29kZUluUmFuZ2U9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgidmVjdG9yIix0KSxwLmRlZmluZWQoInJlc3VsdCIsaSk7bGV0IG49bC5tYWduaXR1ZGVTcXVhcmVkKHQpO2lmKE1hdGguYWJzKG4tMSk+TC5FUFNJTE9ONil0aHJvdyBuZXcgWSgidmVjdG9yIG11c3QgYmUgbm9ybWFsaXplZC4iKTtpZihpLng9dC54LyhNYXRoLmFicyh0LngpK01hdGguYWJzKHQueSkrTWF0aC5hYnModC56KSksaS55PXQueS8oTWF0aC5hYnModC54KStNYXRoLmFicyh0LnkpK01hdGguYWJzKHQueikpLHQuejwwKXtsZXQgcz1pLngsbz1pLnk7aS54PSgxLU1hdGguYWJzKG8pKSpMLnNpZ25Ob3RaZXJvKHMpLGkueT0oMS1NYXRoLmFicyhzKSkqTC5zaWduTm90WmVybyhvKX1yZXR1cm4gaS54PUwudG9TTm9ybShpLngsZSksaS55PUwudG9TTm9ybShpLnksZSksaX07cm4ub2N0RW5jb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJuLm9jdEVuY29kZUluUmFuZ2UodCwyNTUsZSl9O2dFPW5ldyBudCxDRD1uZXcgVWludDhBcnJheSgxKTtybi5vY3RFbmNvZGVUb0NhcnRlc2lhbjQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcm4ub2N0RW5jb2RlSW5SYW5nZSh0LDY1NTM1LGdFKSxlLng9b0koZ0UueCpwRCksZS55PW9JKGdFLngpLGUuej1vSShnRS55KnBEKSxlLnc9b0koZ0UueSksZX07cm4ub2N0RGVjb2RlSW5SYW5nZT1mdW5jdGlvbih0LGUsaSxuKXtpZihwLmRlZmluZWQoInJlc3VsdCIsbiksdDwwfHx0Pml8fGU8MHx8ZT5pKXRocm93IG5ldyBZKGB4IGFuZCB5IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kICR7aX1gKTtpZihuLng9TC5mcm9tU05vcm0odCxpKSxuLnk9TC5mcm9tU05vcm0oZSxpKSxuLno9MS0oTWF0aC5hYnMobi54KStNYXRoLmFicyhuLnkpKSxuLno8MCl7bGV0IHM9bi54O24ueD0oMS1NYXRoLmFicyhuLnkpKSpMLnNpZ25Ob3RaZXJvKHMpLG4ueT0oMS1NYXRoLmFicyhzKSkqTC5zaWduTm90WmVybyhuLnkpfXJldHVybiBsLm5vcm1hbGl6ZShuLG4pfTtybi5vY3REZWNvZGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBybi5vY3REZWNvZGVJblJhbmdlKHQsZSwyNTUsaSl9O3JuLm9jdERlY29kZUZyb21DYXJ0ZXNpYW40PWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJlbmNvZGVkIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9dC54LG49dC55LHM9dC56LG89dC53O2lmKGk8MHx8aT4yNTV8fG48MHx8bj4yNTV8fHM8MHx8cz4yNTV8fG88MHx8bz4yNTUpdGhyb3cgbmV3IFkoIngsIHksIHosIGFuZCB3IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kIDI1NSIpO2xldCByPWkqdUQrbixhPXMqdUQrbztyZXR1cm4gcm4ub2N0RGVjb2RlSW5SYW5nZShyLGEsNjU1MzUsZSl9O3JuLm9jdFBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gcC5kZWZpbmVkKCJlbmNvZGVkIix0KSwyNTYqdC54K3QueX07TlQ9bmV3IG50O3JuLm9jdEVuY29kZUZsb2F0PWZ1bmN0aW9uKHQpe3JldHVybiBybi5vY3RFbmNvZGUodCxOVCkscm4ub2N0UGFja0Zsb2F0KE5UKX07cm4ub2N0RGVjb2RlRmxvYXQ9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoInZhbHVlIix0KTtsZXQgaT10LzI1NixuPU1hdGguZmxvb3IoaSkscz0oaS1uKSoyNTY7cmV0dXJuIHJuLm9jdERlY29kZShuLHMsZSl9O3JuLm9jdFBhY2s9ZnVuY3Rpb24odCxlLGksbil7cC5kZWZpbmVkKCJ2MSIsdCkscC5kZWZpbmVkKCJ2MiIsZSkscC5kZWZpbmVkKCJ2MyIsaSkscC5kZWZpbmVkKCJyZXN1bHQiLG4pO2xldCBzPXJuLm9jdEVuY29kZUZsb2F0KHQpLG89cm4ub2N0RW5jb2RlRmxvYXQoZSkscj1ybi5vY3RFbmNvZGUoaSxOVCk7cmV0dXJuIG4ueD02NTUzNipyLngrcyxuLnk9NjU1MzYqci55K28sbn07cm4ub2N0VW5wYWNrPWZ1bmN0aW9uKHQsZSxpLG4pe3AuZGVmaW5lZCgicGFja2VkIix0KSxwLmRlZmluZWQoInYxIixlKSxwLmRlZmluZWQoInYyIixpKSxwLmRlZmluZWQoInYzIixuKTtsZXQgcz10LngvNjU1MzYsbz1NYXRoLmZsb29yKHMpLHI9KHMtbykqNjU1MzY7cz10LnkvNjU1MzY7bGV0IGE9TWF0aC5mbG9vcihzKSxoPShzLWEpKjY1NTM2O3JuLm9jdERlY29kZUZsb2F0KHIsZSkscm4ub2N0RGVjb2RlRmxvYXQoaCxpKSxybi5vY3REZWNvZGUobyxhLG4pfTtybi5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcz1mdW5jdGlvbih0KXtwLmRlZmluZWQoInRleHR1cmVDb29yZGluYXRlcyIsdCk7bGV0IGU9dC54KjQwOTV8MCxpPXQueSo0MDk1fDA7cmV0dXJuIDQwOTYqZStpfTtybi5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjb21wcmVzc2VkIix0KSxwLmRlZmluZWQoInJlc3VsdCIsZSk7bGV0IGk9dC80MDk2LG49TWF0aC5mbG9vcihpKTtyZXR1cm4gZS54PW4vNDA5NSxlLnk9KHQtbio0MDk2KS80MDk1LGV9O3JuLnppZ1phZ0RlbHRhRGVjb2RlPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoInVCdWZmZXIiLHQpLHAuZGVmaW5lZCgidkJ1ZmZlciIsZSkscC50eXBlT2YubnVtYmVyLmVxdWFscygidUJ1ZmZlci5sZW5ndGgiLCJ2QnVmZmVyLmxlbmd0aCIsdC5sZW5ndGgsZS5sZW5ndGgpLG0oaSkmJnAudHlwZU9mLm51bWJlci5lcXVhbHMoInVCdWZmZXIubGVuZ3RoIiwiaGVpZ2h0QnVmZmVyLmxlbmd0aCIsdC5sZW5ndGgsaS5sZW5ndGgpO2xldCBuPXQubGVuZ3RoLHM9MCxvPTAscj0wO2ZvcihsZXQgYT0wO2E8bjsrK2Epcys9VFQodFthXSksbys9VFQoZVthXSksdFthXT1zLGVbYV09byxtKGkpJiYocis9VFQoaVthXSksaVthXT1yKX07cm4uZGVxdWFudGl6ZT1mdW5jdGlvbih0LGUsaSxuKXtwLmRlZmluZWQoInR5cGVkQXJyYXkiLHQpLHAuZGVmaW5lZCgiY29tcG9uZW50RGF0YXR5cGUiLGUpLHAuZGVmaW5lZCgidHlwZSIsaSkscC5kZWZpbmVkKCJjb3VudCIsbik7bGV0IHM9WkQuZ2V0TnVtYmVyT2ZDb21wb25lbnRzKGkpLG87c3dpdGNoKGUpe2Nhc2UgQXQuQllURTpvPTEyNzticmVhaztjYXNlIEF0LlVOU0lHTkVEX0JZVEU6bz0yNTU7YnJlYWs7Y2FzZSBBdC5TSE9SVDpvPTMyNzY3O2JyZWFrO2Nhc2UgQXQuVU5TSUdORURfU0hPUlQ6bz02NTUzNTticmVhaztjYXNlIEF0LklOVDpvPTIxNDc0ODM2NDc7YnJlYWs7Y2FzZSBBdC5VTlNJR05FRF9JTlQ6bz00Mjk0OTY3Mjk1O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFkoYENhbm5vdCBkZXF1YW50aXplIGNvbXBvbmVudCBkYXRhdHlwZTogJHtlfWApfWxldCByPW5ldyBGbG9hdDMyQXJyYXkobipzKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgaD0wO2g8cztoKyspe2xldCBBPWEqcytoO3JbQV09TWF0aC5tYXgodFtBXS9vLC0xKX1yZXR1cm4gcn07cm4uZGVjb2RlUkdCNTY1PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJ0eXBlZEFycmF5Iix0KTtsZXQgaT10Lmxlbmd0aCozO20oZSkmJnAudHlwZU9mLm51bWJlci5lcXVhbHMoInJlc3VsdC5sZW5ndGgiLCJ0eXBlZEFycmF5Lmxlbmd0aCAqIDMiLGUubGVuZ3RoLGkpO2xldCBuPXQubGVuZ3RoO20oZSl8fChlPW5ldyBGbG9hdDMyQXJyYXkobiozKSk7bGV0IHM9MzEsbz02MyxyPTEvMzEsYT0xLzYzO2ZvcihsZXQgaD0wO2g8bjtoKyspe2xldCBBPXRbaF0sZD1BPj4xMSxmPUE+PjUmbyxFPUEmcyxfPTMqaDtlW19dPWQqcixlW18rMV09ZiphLGVbXysyXT1FKnJ9cmV0dXJuIGV9O1lpPXJufSk7ZnVuY3Rpb24gTCQoKXtyZXR1cm4hMH1mdW5jdGlvbiB5JCh0LGUpe2U9WihlLCJUaGlzIG9iamVjdCB3YXMgZGVzdHJveWVkLCBpLmUuLCBkZXN0cm95KCkgd2FzIGNhbGxlZC4iKTtmdW5jdGlvbiBpKCl7dGhyb3cgbmV3IFkoZSl9Zm9yKGxldCBuIGluIHQpdHlwZW9mIHRbbl09PSJmdW5jdGlvbiImJih0W25dPWkpO3QuaXNEZXN0cm95ZWQ9TCR9dmFyIGxpLFdzPU8oKCk9PntidCgpO1Z0KCk7bGk9eSR9KTtmdW5jdGlvbiBmQSgpe3RoaXMuaGlnaD1sLmNsb25lKGwuWkVSTyksdGhpcy5sb3c9bC5jbG9uZShsLlpFUk8pfXZhciByaCxiVCxCbixUbD1PKCgpPT57SHQoKTthZSgpO210KCk7ZkEuZW5jb2RlPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksbShlKXx8KGU9e2hpZ2g6MCxsb3c6MH0pO2xldCBpO3JldHVybiB0Pj0wPyhpPU1hdGguZmxvb3IodC82NTUzNikqNjU1MzYsZS5oaWdoPWksZS5sb3c9dC1pKTooaT1NYXRoLmZsb29yKC10LzY1NTM2KSo2NTUzNixlLmhpZ2g9LWksZS5sb3c9dCtpKSxlfTtyaD17aGlnaDowLGxvdzowfTtmQS5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBmQSk7bGV0IGk9ZS5oaWdoLG49ZS5sb3c7cmV0dXJuIGZBLmVuY29kZSh0LngscmgpLGkueD1yaC5oaWdoLG4ueD1yaC5sb3csZkEuZW5jb2RlKHQueSxyaCksaS55PXJoLmhpZ2gsbi55PXJoLmxvdyxmQS5lbmNvZGUodC56LHJoKSxpLno9cmguaGlnaCxuLno9cmgubG93LGV9O2JUPW5ldyBmQTtmQS53cml0ZUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImNhcnRlc2lhbkFycmF5IixlKSxwLnR5cGVPZi5udW1iZXIoImluZGV4IixpKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGksMCksZkEuZnJvbUNhcnRlc2lhbih0LGJUKTtsZXQgbj1iVC5oaWdoLHM9YlQubG93O2VbaV09bi54LGVbaSsxXT1uLnksZVtpKzJdPW4ueixlW2krM109cy54LGVbaSs0XT1zLnksZVtpKzVdPXMuen07Qm49ZkF9KTt2YXIgRHMsdGUsRGk9TygoKT0+e210KCk7VnQoKTtfZSgpO3NzKCk7RHM9e1VOU0lHTkVEX0JZVEU6aXQuVU5TSUdORURfQllURSxVTlNJR05FRF9TSE9SVDppdC5VTlNJR05FRF9TSE9SVCxVTlNJR05FRF9JTlQ6aXQuVU5TSUdORURfSU5UfTtEcy5nZXRTaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBEcy5VTlNJR05FRF9CWVRFOnJldHVybiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2UgRHMuVU5TSUdORURfU0hPUlQ6cmV0dXJuIFVpbnQxNkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2UgRHMuVU5TSUdORURfSU5UOnJldHVybiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVH10aHJvdyBuZXcgWSgiaW5kZXhEYXRhdHlwZSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHZhbGlkIEluZGV4RGF0YXR5cGUgY29uc3RhbnQuIil9O0RzLmZyb21TaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSAyOnJldHVybiBEcy5VTlNJR05FRF9TSE9SVDtjYXNlIDQ6cmV0dXJuIERzLlVOU0lHTkVEX0lOVDtjYXNlIDE6cmV0dXJuIERzLlVOU0lHTkVEX0JZVEU7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiU2l6ZSBpbiBieXRlcyBjYW5ub3QgYmUgbWFwcGVkIHRvIGFuIEluZGV4RGF0YXR5cGUiKX19O0RzLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiYodD09PURzLlVOU0lHTkVEX0JZVEV8fHQ9PT1Ecy5VTlNJR05FRF9TSE9SVHx8dD09PURzLlVOU0lHTkVEX0lOVCl9O0RzLmNyZWF0ZVR5cGVkQXJyYXk9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgibnVtYmVyT2ZWZXJ0aWNlcyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49TC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSk6bmV3IFVpbnQxNkFycmF5KGUpfTtEcy5jcmVhdGVUeXBlZEFycmF5RnJvbUFycmF5QnVmZmVyPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJudW1iZXJPZlZlcnRpY2VzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzb3VyY2VBcnJheSBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiYnl0ZU9mZnNldCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49TC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSxpLG4pOm5ldyBVaW50MTZBcnJheShlLGksbil9O0RzLmZyb21UeXBlZEFycmF5PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBEcy5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheSlyZXR1cm4gRHMuVU5TSUdORURfU0hPUlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiBEcy5VTlNJR05FRF9JTlQ7dGhyb3cgbmV3IFkoImFycmF5IG11c3QgYmUgYSBVaW50OEFycmF5LCBVaW50MTZBcnJheSwgb3IgVWludDMyQXJyYXkuIil9O3RlPU9iamVjdC5mcmVlemUoRHMpfSk7dmFyIHJJLGFpLE5sPU8oKCk9PntzcygpO3JJPXtTVFJFQU1fRFJBVzppdC5TVFJFQU1fRFJBVyxTVEFUSUNfRFJBVzppdC5TVEFUSUNfRFJBVyxEWU5BTUlDX0RSQVc6aXQuRFlOQU1JQ19EUkFXLHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PT09ckkuU1RSRUFNX0RSQVd8fHQ9PT1ySS5TVEFUSUNfRFJBV3x8dD09PXJJLkRZTkFNSUNfRFJBV319LGFpPU9iamVjdC5mcmVlemUockkpfSk7ZnVuY3Rpb24gTXIodCl7aWYodD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpLCFtKHQudHlwZWRBcnJheSkmJiFtKHQuc2l6ZUluQnl0ZXMpKXRocm93IG5ldyBZKCJFaXRoZXIgb3B0aW9ucy5zaXplSW5CeXRlcyBvciBvcHRpb25zLnR5cGVkQXJyYXkgaXMgcmVxdWlyZWQuIik7aWYobSh0LnR5cGVkQXJyYXkpJiZtKHQuc2l6ZUluQnl0ZXMpKXRocm93IG5ldyBZKCJDYW5ub3QgcGFzcyBpbiBib3RoIG9wdGlvbnMuc2l6ZUluQnl0ZXMgYW5kIG9wdGlvbnMudHlwZWRBcnJheS4iKTtpZihtKHQudHlwZWRBcnJheSkmJihwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMudHlwZWRBcnJheSIsdC50eXBlZEFycmF5KSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMudHlwZWRBcnJheS5ieXRlTGVuZ3RoIix0LnR5cGVkQXJyYXkuYnl0ZUxlbmd0aCkpLCFhaS52YWxpZGF0ZSh0LnVzYWdlKSl0aHJvdyBuZXcgWSgidXNhZ2UgaXMgaW52YWxpZC4iKTtsZXQgZT10LmNvbnRleHQuX2dsLGk9dC5idWZmZXJUYXJnZXQsbj10LnR5cGVkQXJyYXkscz10LnNpemVJbkJ5dGVzLG89dC51c2FnZSxyPW0obik7ciYmKHM9bi5ieXRlTGVuZ3RoKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oInNpemVJbkJ5dGVzIixzLDApO2xldCBhPWUuY3JlYXRlQnVmZmVyKCk7ZS5iaW5kQnVmZmVyKGksYSksZS5idWZmZXJEYXRhKGkscj9uOnMsbyksZS5iaW5kQnVmZmVyKGksbnVsbCksdGhpcy5faWQ9R3MoKSx0aGlzLl9nbD1lLHRoaXMuX3dlYmdsMj10LmNvbnRleHQuX3dlYmdsMix0aGlzLl9idWZmZXJUYXJnZXQ9aSx0aGlzLl9zaXplSW5CeXRlcz1zLHRoaXMuX3VzYWdlPW8sdGhpcy5fYnVmZmVyPWEsdGhpcy52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlPSEwfXZhciBDYSxhST1PKCgpPT57YWUoKTtpaCgpO2J0KCk7bXQoKTtXcygpO1Z0KCk7RGkoKTtzcygpO05sKCk7TXIuY3JlYXRlVmVydGV4QnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBwLmRlZmluZWQoIm9wdGlvbnMuY29udGV4dCIsdC5jb250ZXh0KSxuZXcgTXIoe2NvbnRleHQ6dC5jb250ZXh0LGJ1ZmZlclRhcmdldDppdC5BUlJBWV9CVUZGRVIsdHlwZWRBcnJheTp0LnR5cGVkQXJyYXksc2l6ZUluQnl0ZXM6dC5zaXplSW5CeXRlcyx1c2FnZTp0LnVzYWdlfSl9O01yLmNyZWF0ZUluZGV4QnVmZmVyPWZ1bmN0aW9uKHQpe2lmKHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpLCF0ZS52YWxpZGF0ZSh0LmluZGV4RGF0YXR5cGUpKXRocm93IG5ldyBZKCJJbnZhbGlkIGluZGV4RGF0YXR5cGUuIik7aWYodC5pbmRleERhdGF0eXBlPT09dGUuVU5TSUdORURfSU5UJiYhdC5jb250ZXh0LmVsZW1lbnRJbmRleFVpbnQpdGhyb3cgbmV3IFkoIkluZGV4RGF0YXR5cGUuVU5TSUdORURfSU5UIHJlcXVpcmVzIE9FU19lbGVtZW50X2luZGV4X3VpbnQsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0uICBDaGVjayBjb250ZXh0LmVsZW1lbnRJbmRleFVpbnQuIik7bGV0IGU9dC5jb250ZXh0LGk9dC5pbmRleERhdGF0eXBlLG49dGUuZ2V0U2l6ZUluQnl0ZXMoaSkscz1uZXcgTXIoe2NvbnRleHQ6ZSxidWZmZXJUYXJnZXQ6aXQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsdHlwZWRBcnJheTp0LnR5cGVkQXJyYXksc2l6ZUluQnl0ZXM6dC5zaXplSW5CeXRlcyx1c2FnZTp0LnVzYWdlfSksbz1zLnNpemVJbkJ5dGVzL247cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHMse2luZGV4RGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBpfX0sYnl0ZXNQZXJJbmRleDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSxudW1iZXJPZkluZGljZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBvfX19KSxzfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhNci5wcm90b3R5cGUse3NpemVJbkJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZUluQnl0ZXN9fSx1c2FnZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VzYWdlfX19KTtNci5wcm90b3R5cGUuX2dldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJ9O01yLnByb3RvdHlwZS5jb3B5RnJvbUFycmF5Vmlldz1mdW5jdGlvbih0LGUpe2U9WihlLDApLHAuZGVmaW5lZCgiYXJyYXlWaWV3Iix0KSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygib2Zmc2V0SW5CeXRlcyArIGFycmF5Vmlldy5ieXRlTGVuZ3RoIixlK3QuYnl0ZUxlbmd0aCx0aGlzLl9zaXplSW5CeXRlcyk7bGV0IGk9dGhpcy5fZ2wsbj10aGlzLl9idWZmZXJUYXJnZXQ7aS5iaW5kQnVmZmVyKG4sdGhpcy5fYnVmZmVyKSxpLmJ1ZmZlclN1YkRhdGEobixlLHQpLGkuYmluZEJ1ZmZlcihuLG51bGwpfTtNci5wcm90b3R5cGUuY29weUZyb21CdWZmZXI9ZnVuY3Rpb24odCxlLGksbil7aWYoIXRoaXMuX3dlYmdsMil0aHJvdyBuZXcgWSgiQSBXZWJHTCAyIGNvbnRleHQgaXMgcmVxdWlyZWQuIik7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJlYWRCdWZmZXIgbXVzdCBiZSBkZWZpbmVkLiIpO2lmKCFtKG4pfHxuPD0wKXRocm93IG5ldyBZKCJzaXplSW5CeXRlcyBtdXN0IGJlIGRlZmluZWQgYW5kIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKCFtKGUpfHxlPDB8fGUrbj50Ll9zaXplSW5CeXRlcyl0aHJvdyBuZXcgWSgicmVhZE9mZnNldCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvIGFuZCByZWFkT2Zmc2V0ICsgc2l6ZUluQnl0ZXMgbXVzdCBiZSBsZXNzIHRoYW4gb2YgZXF1YWwgdG8gcmVhZEJ1ZmZlci5zaXplSW5CeXRlcy4iKTtpZighbShpKXx8aTwwfHxpK24+dGhpcy5fc2l6ZUluQnl0ZXMpdGhyb3cgbmV3IFkoIndyaXRlT2Zmc2V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8gYW5kIHdyaXRlT2Zmc2V0ICsgc2l6ZUluQnl0ZXMgbXVzdCBiZSBsZXNzIHRoYW4gb2YgZXF1YWwgdG8gdGhpcy5zaXplSW5CeXRlcy4iKTtpZih0aGlzLl9idWZmZXI9PT10Ll9idWZmZXImJihpPj1lJiZpPGUrbnx8ZT5pJiZlPGkrbikpdGhyb3cgbmV3IFkoIldoZW4gcmVhZEJ1ZmZlciBpcyBlcXVhbCB0byB0aGlzLCB0aGUgcmFuZ2VzIFtyZWFkT2Zmc2V0ICsgc2l6ZUluQnl0ZXMpIGFuZCBbd3JpdGVPZmZzZXQsIHdyaXRlT2Zmc2V0ICsgc2l6ZUluQnl0ZXMpIG11c3Qgbm90IG92ZXJsYXAuIik7aWYodGhpcy5fYnVmZmVyVGFyZ2V0PT09aXQuRUxFTUVOVF9BUlJBWV9CVUZGRVImJnQuX2J1ZmZlclRhcmdldCE9PWl0LkVMRU1FTlRfQVJSQVlfQlVGRkVSfHx0aGlzLl9idWZmZXJUYXJnZXQhPT1pdC5FTEVNRU5UX0FSUkFZX0JVRkZFUiYmdC5fYnVmZmVyVGFyZ2V0PT09aXQuRUxFTUVOVF9BUlJBWV9CVUZGRVIpdGhyb3cgbmV3IFkoIkNhbiBub3QgY29weSBhbiBpbmRleCBidWZmZXIgaW50byBhbm90aGVyIGJ1ZmZlciB0eXBlLiIpO2xldCBzPWl0LkNPUFlfUkVBRF9CVUZGRVIsbz1pdC5DT1BZX1dSSVRFX0JVRkZFUixyPXRoaXMuX2dsO3IuYmluZEJ1ZmZlcihvLHRoaXMuX2J1ZmZlciksci5iaW5kQnVmZmVyKHMsdC5fYnVmZmVyKSxyLmNvcHlCdWZmZXJTdWJEYXRhKHMsbyxlLGksbiksci5iaW5kQnVmZmVyKG8sbnVsbCksci5iaW5kQnVmZmVyKHMsbnVsbCl9O01yLnByb3RvdHlwZS5nZXRCdWZmZXJEYXRhPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKGU9WihlLDApLGk9WihpLDApLCF0aGlzLl93ZWJnbDIpdGhyb3cgbmV3IFkoIkEgV2ViR0wgMiBjb250ZXh0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheVZpZXcgaXMgcmVxdWlyZWQuIik7bGV0IHMsbyxyPXQuYnl0ZUxlbmd0aDtpZihtKG4pPyhzPW4sbShyKT9vPTE6KHI9dC5sZW5ndGgsbz10LkJZVEVTX1BFUl9FTEVNRU5UKSk6bShyKT8ocz1yLWksbz0xKToocj10Lmxlbmd0aCxzPXItaSxvPXQuQllURVNfUEVSX0VMRU1FTlQpLGk8MHx8aT5yKXRocm93IG5ldyBZKCJkZXN0aW5hdGlvbk9mZnNldCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gdGhlIGFycmF5VmlldyBsZW5ndGguIik7aWYoaStzPnIpdGhyb3cgbmV3IFkoImRlc3RpbmF0aW9uT2Zmc2V0ICsgbGVuZ3RoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBhcnJheVZpZXdMZW5ndGguIik7aWYoZTwwfHxlPnRoaXMuX3NpemVJbkJ5dGVzKXRocm93IG5ldyBZKCJzb3VyY2VPZmZzZXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBidWZmZXJzIHNpemUuIik7aWYoZStzKm8+dGhpcy5fc2l6ZUluQnl0ZXMpdGhyb3cgbmV3IFkoInNvdXJjZU9mZnNldCArIGxlbmd0aCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgYnVmZmVycyBzaXplLiIpO2xldCBhPXRoaXMuX2dsLGg9aXQuQ09QWV9SRUFEX0JVRkZFUjthLmJpbmRCdWZmZXIoaCx0aGlzLl9idWZmZXIpLGEuZ2V0QnVmZmVyU3ViRGF0YShoLGUsdCxpLG4pLGEuYmluZEJ1ZmZlcihoLG51bGwpfTtNci5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07TXIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2wuZGVsZXRlQnVmZmVyKHRoaXMuX2J1ZmZlciksbGkodGhpcyl9O0NhPU1yfSk7dmFyIHZuLGVuLGdhPU8oKCk9Pnt2bj17X21heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOjAsX21heGltdW1DdWJlTWFwU2l6ZTowLF9tYXhpbXVtRnJhZ21lbnRVbmlmb3JtVmVjdG9yczowLF9tYXhpbXVtVGV4dHVyZUltYWdlVW5pdHM6MCxfbWF4aW11bVJlbmRlcmJ1ZmZlclNpemU6MCxfbWF4aW11bVRleHR1cmVTaXplOjAsX21heGltdW1WYXJ5aW5nVmVjdG9yczowLF9tYXhpbXVtVmVydGV4QXR0cmlidXRlczowLF9tYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHM6MCxfbWF4aW11bVZlcnRleFVuaWZvcm1WZWN0b3JzOjAsX21pbmltdW1BbGlhc2VkTGluZVdpZHRoOjAsX21heGltdW1BbGlhc2VkTGluZVdpZHRoOjAsX21pbmltdW1BbGlhc2VkUG9pbnRTaXplOjAsX21heGltdW1BbGlhc2VkUG9pbnRTaXplOjAsX21heGltdW1WaWV3cG9ydFdpZHRoOjAsX21heGltdW1WaWV3cG9ydEhlaWdodDowLF9tYXhpbXVtVGV4dHVyZUZpbHRlckFuaXNvdHJvcHk6MCxfbWF4aW11bURyYXdCdWZmZXJzOjAsX21heGltdW1Db2xvckF0dGFjaG1lbnRzOjAsX21heGltdW1TYW1wbGVzOjAsX2hpZ2hwRmxvYXRTdXBwb3J0ZWQ6ITEsX2hpZ2hwSW50U3VwcG9ydGVkOiExfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh2bix7bWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHN9fSxtYXhpbXVtQ3ViZU1hcFNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUN1YmVNYXBTaXplfX0sbWF4aW11bUZyYWdtZW50VW5pZm9ybVZlY3RvcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUZyYWdtZW50VW5pZm9ybVZlY3RvcnN9fSxtYXhpbXVtVGV4dHVyZUltYWdlVW5pdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bVRleHR1cmVJbWFnZVVuaXRzfX0sbWF4aW11bVJlbmRlcmJ1ZmZlclNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bVJlbmRlcmJ1ZmZlclNpemV9fSxtYXhpbXVtVGV4dHVyZVNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bVRleHR1cmVTaXplfX0sbWF4aW11bVZhcnlpbmdWZWN0b3JzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WYXJ5aW5nVmVjdG9yc319LG1heGltdW1WZXJ0ZXhBdHRyaWJ1dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WZXJ0ZXhBdHRyaWJ1dGVzfX0sbWF4aW11bVZlcnRleFRleHR1cmVJbWFnZVVuaXRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0c319LG1heGltdW1WZXJ0ZXhVbmlmb3JtVmVjdG9yczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtVmVydGV4VW5pZm9ybVZlY3RvcnN9fSxtaW5pbXVtQWxpYXNlZExpbmVXaWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9taW5pbXVtQWxpYXNlZExpbmVXaWR0aH19LG1heGltdW1BbGlhc2VkTGluZVdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1BbGlhc2VkTGluZVdpZHRofX0sbWluaW11bUFsaWFzZWRQb2ludFNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWluaW11bUFsaWFzZWRQb2ludFNpemV9fSxtYXhpbXVtQWxpYXNlZFBvaW50U2l6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtQWxpYXNlZFBvaW50U2l6ZX19LG1heGltdW1WaWV3cG9ydFdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WaWV3cG9ydFdpZHRofX0sbWF4aW11bVZpZXdwb3J0SGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WaWV3cG9ydEhlaWdodH19LG1heGltdW1UZXh0dXJlRmlsdGVyQW5pc290cm9weTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtVGV4dHVyZUZpbHRlckFuaXNvdHJvcHl9fSxtYXhpbXVtRHJhd0J1ZmZlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bURyYXdCdWZmZXJzfX0sbWF4aW11bUNvbG9yQXR0YWNobWVudHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUNvbG9yQXR0YWNobWVudHN9fSxtYXhpbXVtU2FtcGxlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtU2FtcGxlc319LGhpZ2hwRmxvYXRTdXBwb3J0ZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5faGlnaHBGbG9hdFN1cHBvcnRlZH19LGhpZ2hwSW50U3VwcG9ydGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX2hpZ2hwSW50U3VwcG9ydGVkfX19KTtlbj12bn0pO3ZhciBpbyxuZSxYaT1PKCgpPT57c3MoKTtpbz17UE9JTlRTOml0LlBPSU5UUyxMSU5FUzppdC5MSU5FUyxMSU5FX0xPT1A6aXQuTElORV9MT09QLExJTkVfU1RSSVA6aXQuTElORV9TVFJJUCxUUklBTkdMRVM6aXQuVFJJQU5HTEVTLFRSSUFOR0xFX1NUUklQOml0LlRSSUFOR0xFX1NUUklQLFRSSUFOR0xFX0ZBTjppdC5UUklBTkdMRV9GQU59O2lvLmlzTGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1pby5MSU5FU3x8dD09PWlvLkxJTkVfTE9PUHx8dD09PWlvLkxJTkVfU1RSSVB9O2lvLmlzVHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09aW8uVFJJQU5HTEVTfHx0PT09aW8uVFJJQU5HTEVfU1RSSVB8fHQ9PT1pby5UUklBTkdMRV9GQU59O2lvLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09aW8uUE9JTlRTfHx0PT09aW8uTElORVN8fHQ9PT1pby5MSU5FX0xPT1B8fHQ9PT1pby5MSU5FX1NUUklQfHx0PT09aW8uVFJJQU5HTEVTfHx0PT09aW8uVFJJQU5HTEVfU1RSSVB8fHQ9PT1pby5UUklBTkdMRV9GQU59O25lPU9iamVjdC5mcmVlemUoaW8pfSk7ZnVuY3Rpb24gVEUodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuX2JvdW5kaW5nVm9sdW1lPXQuYm91bmRpbmdWb2x1bWUsdGhpcy5fb3JpZW50ZWRCb3VuZGluZ0JveD10Lm9yaWVudGVkQm91bmRpbmdCb3gsdGhpcy5fbW9kZWxNYXRyaXg9dC5tb2RlbE1hdHJpeCx0aGlzLl9wcmltaXRpdmVUeXBlPVoodC5wcmltaXRpdmVUeXBlLG5lLlRSSUFOR0xFUyksdGhpcy5fdmVydGV4QXJyYXk9dC52ZXJ0ZXhBcnJheSx0aGlzLl9jb3VudD10LmNvdW50LHRoaXMuX29mZnNldD1aKHQub2Zmc2V0LDApLHRoaXMuX2luc3RhbmNlQ291bnQ9Wih0Lmluc3RhbmNlQ291bnQsMCksdGhpcy5fc2hhZGVyUHJvZ3JhbT10LnNoYWRlclByb2dyYW0sdGhpcy5fdW5pZm9ybU1hcD10LnVuaWZvcm1NYXAsdGhpcy5fcmVuZGVyU3RhdGU9dC5yZW5kZXJTdGF0ZSx0aGlzLl9mcmFtZWJ1ZmZlcj10LmZyYW1lYnVmZmVyLHRoaXMuX3Bhc3M9dC5wYXNzLHRoaXMuX293bmVyPXQub3duZXIsdGhpcy5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zPTAsdGhpcy5fcGlja0lkPXQucGlja0lkLHRoaXMuX2ZsYWdzPTAsdGhpcy5jdWxsPVoodC5jdWxsLCEwKSx0aGlzLm9jY2x1ZGU9Wih0Lm9jY2x1ZGUsITApLHRoaXMuZXhlY3V0ZUluQ2xvc2VzdEZydXN0dW09Wih0LmV4ZWN1dGVJbkNsb3Nlc3RGcnVzdHVtLCExKSx0aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPVoodC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSwhMSksdGhpcy5jYXN0U2hhZG93cz1aKHQuY2FzdFNoYWRvd3MsITEpLHRoaXMucmVjZWl2ZVNoYWRvd3M9Wih0LnJlY2VpdmVTaGFkb3dzLCExKSx0aGlzLnBpY2tPbmx5PVoodC5waWNrT25seSwhMSksdGhpcy5kZXB0aEZvclRyYW5zbHVjZW50Q2xhc3NpZmljYXRpb249Wih0LmRlcHRoRm9yVHJhbnNsdWNlbnRDbGFzc2lmaWNhdGlvbiwhMSksdGhpcy5kaXJ0eT0hMCx0aGlzLmxhc3REaXJ0eVRpbWU9MCx0aGlzLmRlcml2ZWRDb21tYW5kcz17fX1mdW5jdGlvbiBJbyh0LGUpe3JldHVybih0Ll9mbGFncyZlKT09PWV9ZnVuY3Rpb24gbWModCxlLGkpe2k/dC5fZmxhZ3N8PWU6dC5fZmxhZ3MmPX5lfXZhciB6bixmbixCbT1PKCgpPT57YnQoKTttdCgpO1hpKCk7em49e0NVTEw6MSxPQ0NMVURFOjIsRVhFQ1VURV9JTl9DTE9TRVNUX0ZSVVNUVU06NCxERUJVR19TSE9XX0JPVU5ESU5HX1ZPTFVNRTo4LENBU1RfU0hBRE9XUzoxNixSRUNFSVZFX1NIQURPV1M6MzIsUElDS19PTkxZOjY0LERFUFRIX0ZPUl9UUkFOU0xVQ0VOVF9DTEFTU0lGSUNBVElPTjoxMjh9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRFLnByb3RvdHlwZSx7Ym91bmRpbmdWb2x1bWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZGluZ1ZvbHVtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2JvdW5kaW5nVm9sdW1lIT09dCYmKHRoaXMuX2JvdW5kaW5nVm9sdW1lPXQsdGhpcy5kaXJ0eT0hMCl9fSxvcmllbnRlZEJvdW5kaW5nQm94OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZW50ZWRCb3VuZGluZ0JveH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX29yaWVudGVkQm91bmRpbmdCb3ghPT10JiYodGhpcy5fb3JpZW50ZWRCb3VuZGluZ0JveD10LHRoaXMuZGlydHk9ITApfX0sY3VsbDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIElvKHRoaXMsem4uQ1VMTCl9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLkNVTEwpIT09dCYmKG1jKHRoaXMsem4uQ1VMTCx0KSx0aGlzLmRpcnR5PSEwKX19LG9jY2x1ZGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLk9DQ0xVREUpfSxzZXQ6ZnVuY3Rpb24odCl7SW8odGhpcyx6bi5PQ0NMVURFKSE9PXQmJihtYyh0aGlzLHpuLk9DQ0xVREUsdCksdGhpcy5kaXJ0eT0hMCl9fSxtb2RlbE1hdHJpeDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vZGVsTWF0cml4fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbW9kZWxNYXRyaXghPT10JiYodGhpcy5fbW9kZWxNYXRyaXg9dCx0aGlzLmRpcnR5PSEwKX19LHByaW1pdGl2ZVR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVUeXBlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcHJpbWl0aXZlVHlwZSE9PXQmJih0aGlzLl9wcmltaXRpdmVUeXBlPXQsdGhpcy5kaXJ0eT0hMCl9fSx2ZXJ0ZXhBcnJheTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleEFycmF5fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fdmVydGV4QXJyYXkhPT10JiYodGhpcy5fdmVydGV4QXJyYXk9dCx0aGlzLmRpcnR5PSEwKX19LGNvdW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY291bnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jb3VudCE9PXQmJih0aGlzLl9jb3VudD10LHRoaXMuZGlydHk9ITApfX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2Zmc2V0fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fb2Zmc2V0IT09dCYmKHRoaXMuX29mZnNldD10LHRoaXMuZGlydHk9ITApfX0saW5zdGFuY2VDb3VudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlQ291bnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9pbnN0YW5jZUNvdW50IT09dCYmKHRoaXMuX2luc3RhbmNlQ291bnQ9dCx0aGlzLmRpcnR5PSEwKX19LHNoYWRlclByb2dyYW06e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaGFkZXJQcm9ncmFtfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2hhZGVyUHJvZ3JhbSE9PXQmJih0aGlzLl9zaGFkZXJQcm9ncmFtPXQsdGhpcy5kaXJ0eT0hMCl9fSxjYXN0U2hhZG93czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIElvKHRoaXMsem4uQ0FTVF9TSEFET1dTKX0sc2V0OmZ1bmN0aW9uKHQpe0lvKHRoaXMsem4uQ0FTVF9TSEFET1dTKSE9PXQmJihtYyh0aGlzLHpuLkNBU1RfU0hBRE9XUyx0KSx0aGlzLmRpcnR5PSEwKX19LHJlY2VpdmVTaGFkb3dzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSW8odGhpcyx6bi5SRUNFSVZFX1NIQURPV1MpfSxzZXQ6ZnVuY3Rpb24odCl7SW8odGhpcyx6bi5SRUNFSVZFX1NIQURPV1MpIT09dCYmKG1jKHRoaXMsem4uUkVDRUlWRV9TSEFET1dTLHQpLHRoaXMuZGlydHk9ITApfX0sdW5pZm9ybU1hcDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VuaWZvcm1NYXB9LHNldDpmdW5jdGlvbih0KXt0aGlzLl91bmlmb3JtTWFwIT09dCYmKHRoaXMuX3VuaWZvcm1NYXA9dCx0aGlzLmRpcnR5PSEwKX19LHJlbmRlclN0YXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RhdGV9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJTdGF0ZSE9PXQmJih0aGlzLl9yZW5kZXJTdGF0ZT10LHRoaXMuZGlydHk9ITApfX0sZnJhbWVidWZmZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mcmFtZWJ1ZmZlcn0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2ZyYW1lYnVmZmVyIT09dCYmKHRoaXMuX2ZyYW1lYnVmZmVyPXQsdGhpcy5kaXJ0eT0hMCl9fSxwYXNzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFzc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3Bhc3MhPT10JiYodGhpcy5fcGFzcz10LHRoaXMuZGlydHk9ITApfX0sZXhlY3V0ZUluQ2xvc2VzdEZydXN0dW06e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLkVYRUNVVEVfSU5fQ0xPU0VTVF9GUlVTVFVNKX0sc2V0OmZ1bmN0aW9uKHQpe0lvKHRoaXMsem4uRVhFQ1VURV9JTl9DTE9TRVNUX0ZSVVNUVU0pIT09dCYmKG1jKHRoaXMsem4uRVhFQ1VURV9JTl9DTE9TRVNUX0ZSVVNUVU0sdCksdGhpcy5kaXJ0eT0hMCl9fSxvd25lcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX293bmVyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fb3duZXIhPT10JiYodGhpcy5fb3duZXI9dCx0aGlzLmRpcnR5PSEwKX19LGRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSW8odGhpcyx6bi5ERUJVR19TSE9XX0JPVU5ESU5HX1ZPTFVNRSl9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLkRFQlVHX1NIT1dfQk9VTkRJTkdfVk9MVU1FKSE9PXQmJihtYyh0aGlzLHpuLkRFQlVHX1NIT1dfQk9VTkRJTkdfVk9MVU1FLHQpLHRoaXMuZGlydHk9ITApfX0sZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zIT09dCYmKHRoaXMuX2RlYnVnT3ZlcmxhcHBpbmdGcnVzdHVtcz10LHRoaXMuZGlydHk9ITApfX0scGlja0lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGlja0lkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcGlja0lkIT09dCYmKHRoaXMuX3BpY2tJZD10LHRoaXMuZGlydHk9ITApfX0scGlja09ubHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLlBJQ0tfT05MWSl9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLlBJQ0tfT05MWSkhPT10JiYobWModGhpcyx6bi5QSUNLX09OTFksdCksdGhpcy5kaXJ0eT0hMCl9fSxkZXB0aEZvclRyYW5zbHVjZW50Q2xhc3NpZmljYXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLkRFUFRIX0ZPUl9UUkFOU0xVQ0VOVF9DTEFTU0lGSUNBVElPTil9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLkRFUFRIX0ZPUl9UUkFOU0xVQ0VOVF9DTEFTU0lGSUNBVElPTikhPT10JiYobWModGhpcyx6bi5ERVBUSF9GT1JfVFJBTlNMVUNFTlRfQ0xBU1NJRklDQVRJT04sdCksdGhpcy5kaXJ0eT0hMCl9fX0pO1RFLnNoYWxsb3dDbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSl8fChlPW5ldyBURSksZS5fYm91bmRpbmdWb2x1bWU9dC5fYm91bmRpbmdWb2x1bWUsZS5fb3JpZW50ZWRCb3VuZGluZ0JveD10Ll9vcmllbnRlZEJvdW5kaW5nQm94LGUuX21vZGVsTWF0cml4PXQuX21vZGVsTWF0cml4LGUuX3ByaW1pdGl2ZVR5cGU9dC5fcHJpbWl0aXZlVHlwZSxlLl92ZXJ0ZXhBcnJheT10Ll92ZXJ0ZXhBcnJheSxlLl9jb3VudD10Ll9jb3VudCxlLl9vZmZzZXQ9dC5fb2Zmc2V0LGUuX2luc3RhbmNlQ291bnQ9dC5faW5zdGFuY2VDb3VudCxlLl9zaGFkZXJQcm9ncmFtPXQuX3NoYWRlclByb2dyYW0sZS5fdW5pZm9ybU1hcD10Ll91bmlmb3JtTWFwLGUuX3JlbmRlclN0YXRlPXQuX3JlbmRlclN0YXRlLGUuX2ZyYW1lYnVmZmVyPXQuX2ZyYW1lYnVmZmVyLGUuX3Bhc3M9dC5fcGFzcyxlLl9vd25lcj10Ll9vd25lcixlLl9kZWJ1Z092ZXJsYXBwaW5nRnJ1c3R1bXM9dC5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zLGUuX3BpY2tJZD10Ll9waWNrSWQsZS5fZmxhZ3M9dC5fZmxhZ3MsZS5kaXJ0eT0hMCxlLmxhc3REaXJ0eVRpbWU9MCxlfTtURS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbih0LGUpe3QuZHJhdyh0aGlzLGUpfTtmbj1URX0pO3ZhciB3JCxvcyxXbT1PKCgpPT57dyQ9e0VOVklST05NRU5UOjAsQ09NUFVURToxLEdMT0JFOjIsVEVSUkFJTl9DTEFTU0lGSUNBVElPTjozLENFU0lVTV8zRF9USUxFOjQsQ0VTSVVNXzNEX1RJTEVfQ0xBU1NJRklDQVRJT046NSxDRVNJVU1fM0RfVElMRV9DTEFTU0lGSUNBVElPTl9JR05PUkVfU0hPVzo2LE9QQVFVRTo3LFRSQU5TTFVDRU5UOjgsVk9YRUxTOjksT1ZFUkxBWToxMCxOVU1CRVJfT0ZfUEFTU0VTOjExfSxvcz1PYmplY3QuZnJlZXplKHckKX0pO3ZhciBBSSxNcyxmYz1PKCgpPT57c3MoKTtBST17Q0xPQ0tXSVNFOml0LkNXLENPVU5URVJfQ0xPQ0tXSVNFOml0LkNDV307QUkudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1BSS5DTE9DS1dJU0V8fHQ9PT1BSS5DT1VOVEVSX0NMT0NLV0lTRX07TXM9T2JqZWN0LmZyZWV6ZShBSSl9KTtmdW5jdGlvbiBnRCh0KXtpZih0eXBlb2YgdCE9Im9iamVjdCJ8fHQ9PT1udWxsKXJldHVybiB0O2xldCBlLGk9T2JqZWN0LmtleXModCk7Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDtuKyspZT1pW25dLHQuaGFzT3duUHJvcGVydHkoZSkmJmUhPT0iX2FwcGx5RnVuY3Rpb25zIiYmKHRbZV09Z0QodFtlXSkpO3JldHVybiBPYmplY3QuZnJlZXplKHQpfXZhciBURCxORD1PKCgpPT57VEQ9Z0R9KTtmdW5jdGlvbiBiRCh0KXtyZXR1cm4gdD09PWl0LkZVTkNfQUREfHx0PT09aXQuRlVOQ19TVUJUUkFDVHx8dD09PWl0LkZVTkNfUkVWRVJTRV9TVUJUUkFDVHx8dD09PWl0Lk1JTnx8dD09PWl0Lk1BWH1mdW5jdGlvbiBoSSh0KXtyZXR1cm4gdD09PWl0LlpFUk98fHQ9PT1pdC5PTkV8fHQ9PT1pdC5TUkNfQ09MT1J8fHQ9PT1pdC5PTkVfTUlOVVNfU1JDX0NPTE9SfHx0PT09aXQuRFNUX0NPTE9SfHx0PT09aXQuT05FX01JTlVTX0RTVF9DT0xPUnx8dD09PWl0LlNSQ19BTFBIQXx8dD09PWl0Lk9ORV9NSU5VU19TUkNfQUxQSEF8fHQ9PT1pdC5EU1RfQUxQSEF8fHQ9PT1pdC5PTkVfTUlOVVNfRFNUX0FMUEhBfHx0PT09aXQuQ09OU1RBTlRfQ09MT1J8fHQ9PT1pdC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1J8fHQ9PT1pdC5DT05TVEFOVF9BTFBIQXx8dD09PWl0Lk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQXx8dD09PWl0LlNSQ19BTFBIQV9TQVRVUkFURX1mdW5jdGlvbiB4JCh0KXtyZXR1cm4gdD09PWl0LkZST05UfHx0PT09aXQuQkFDS3x8dD09PWl0LkZST05UX0FORF9CQUNLfWZ1bmN0aW9uIFAkKHQpe3JldHVybiB0PT09aXQuTkVWRVJ8fHQ9PT1pdC5MRVNTfHx0PT09aXQuRVFVQUx8fHQ9PT1pdC5MRVFVQUx8fHQ9PT1pdC5HUkVBVEVSfHx0PT09aXQuTk9URVFVQUx8fHQ9PT1pdC5HRVFVQUx8fHQ9PT1pdC5BTFdBWVN9ZnVuY3Rpb24gRkQodCl7cmV0dXJuIHQ9PT1pdC5ORVZFUnx8dD09PWl0LkxFU1N8fHQ9PT1pdC5FUVVBTHx8dD09PWl0LkxFUVVBTHx8dD09PWl0LkdSRUFURVJ8fHQ9PT1pdC5OT1RFUVVBTHx8dD09PWl0LkdFUVVBTHx8dD09PWl0LkFMV0FZU31mdW5jdGlvbiBEbSh0KXtyZXR1cm4gdD09PWl0LlpFUk98fHQ9PT1pdC5LRUVQfHx0PT09aXQuUkVQTEFDRXx8dD09PWl0LklOQ1J8fHQ9PT1pdC5ERUNSfHx0PT09aXQuSU5WRVJUfHx0PT09aXQuSU5DUl9XUkFQfHx0PT09aXQuREVDUl9XUkFQfWZ1bmN0aW9uIF9BKHQpe2xldCBlPVoodCxaLkVNUFRZX09CSkVDVCksaT1aKGUuY3VsbCxaLkVNUFRZX09CSkVDVCksbj1aKGUucG9seWdvbk9mZnNldCxaLkVNUFRZX09CSkVDVCkscz1aKGUuc2Npc3NvclRlc3QsWi5FTVBUWV9PQkpFQ1QpLG89WihzLnJlY3RhbmdsZSxaLkVNUFRZX09CSkVDVCkscj1aKGUuZGVwdGhSYW5nZSxaLkVNUFRZX09CSkVDVCksYT1aKGUuZGVwdGhUZXN0LFouRU1QVFlfT0JKRUNUKSxoPVooZS5jb2xvck1hc2ssWi5FTVBUWV9PQkpFQ1QpLEE9WihlLmJsZW5kaW5nLFouRU1QVFlfT0JKRUNUKSxkPVooQS5jb2xvcixaLkVNUFRZX09CSkVDVCksZj1aKGUuc3RlbmNpbFRlc3QsWi5FTVBUWV9PQkpFQ1QpLEU9WihmLmZyb250T3BlcmF0aW9uLFouRU1QVFlfT0JKRUNUKSxfPVooZi5iYWNrT3BlcmF0aW9uLFouRU1QVFlfT0JKRUNUKSxSPVooZS5zYW1wbGVDb3ZlcmFnZSxaLkVNUFRZX09CSkVDVCksST1lLnZpZXdwb3J0O2lmKHRoaXMuZnJvbnRGYWNlPVooZS5mcm9udEZhY2UsTXMuQ09VTlRFUl9DTE9DS1dJU0UpLHRoaXMuY3VsbD17ZW5hYmxlZDpaKGkuZW5hYmxlZCwhMSksZmFjZTpaKGkuZmFjZSxpdC5CQUNLKX0sdGhpcy5saW5lV2lkdGg9WihlLmxpbmVXaWR0aCwxKSx0aGlzLnBvbHlnb25PZmZzZXQ9e2VuYWJsZWQ6WihuLmVuYWJsZWQsITEpLGZhY3RvcjpaKG4uZmFjdG9yLDApLHVuaXRzOloobi51bml0cywwKX0sdGhpcy5zY2lzc29yVGVzdD17ZW5hYmxlZDpaKHMuZW5hYmxlZCwhMSkscmVjdGFuZ2xlOm1pLmNsb25lKG8pfSx0aGlzLmRlcHRoUmFuZ2U9e25lYXI6WihyLm5lYXIsMCksZmFyOlooci5mYXIsMSl9LHRoaXMuZGVwdGhUZXN0PXtlbmFibGVkOlooYS5lbmFibGVkLCExKSxmdW5jOlooYS5mdW5jLGl0LkxFU1MpfSx0aGlzLmNvbG9yTWFzaz17cmVkOlooaC5yZWQsITApLGdyZWVuOlooaC5ncmVlbiwhMCksYmx1ZTpaKGguYmx1ZSwhMCksYWxwaGE6WihoLmFscGhhLCEwKX0sdGhpcy5kZXB0aE1hc2s9WihlLmRlcHRoTWFzaywhMCksdGhpcy5zdGVuY2lsTWFzaz1aKGUuc3RlbmNpbE1hc2ssLTEpLHRoaXMuYmxlbmRpbmc9e2VuYWJsZWQ6WihBLmVuYWJsZWQsITEpLGNvbG9yOm5ldyBadChaKGQucmVkLDApLFooZC5ncmVlbiwwKSxaKGQuYmx1ZSwwKSxaKGQuYWxwaGEsMCkpLGVxdWF0aW9uUmdiOlooQS5lcXVhdGlvblJnYixpdC5GVU5DX0FERCksZXF1YXRpb25BbHBoYTpaKEEuZXF1YXRpb25BbHBoYSxpdC5GVU5DX0FERCksZnVuY3Rpb25Tb3VyY2VSZ2I6WihBLmZ1bmN0aW9uU291cmNlUmdiLGl0Lk9ORSksZnVuY3Rpb25Tb3VyY2VBbHBoYTpaKEEuZnVuY3Rpb25Tb3VyY2VBbHBoYSxpdC5PTkUpLGZ1bmN0aW9uRGVzdGluYXRpb25SZ2I6WihBLmZ1bmN0aW9uRGVzdGluYXRpb25SZ2IsaXQuWkVSTyksZnVuY3Rpb25EZXN0aW5hdGlvbkFscGhhOlooQS5mdW5jdGlvbkRlc3RpbmF0aW9uQWxwaGEsaXQuWkVSTyl9LHRoaXMuc3RlbmNpbFRlc3Q9e2VuYWJsZWQ6WihmLmVuYWJsZWQsITEpLGZyb250RnVuY3Rpb246WihmLmZyb250RnVuY3Rpb24saXQuQUxXQVlTKSxiYWNrRnVuY3Rpb246WihmLmJhY2tGdW5jdGlvbixpdC5BTFdBWVMpLHJlZmVyZW5jZTpaKGYucmVmZXJlbmNlLDApLG1hc2s6WihmLm1hc2ssLTEpLGZyb250T3BlcmF0aW9uOntmYWlsOlooRS5mYWlsLGl0LktFRVApLHpGYWlsOlooRS56RmFpbCxpdC5LRUVQKSx6UGFzczpaKEUuelBhc3MsaXQuS0VFUCl9LGJhY2tPcGVyYXRpb246e2ZhaWw6WihfLmZhaWwsaXQuS0VFUCksekZhaWw6WihfLnpGYWlsLGl0LktFRVApLHpQYXNzOlooXy56UGFzcyxpdC5LRUVQKX19LHRoaXMuc2FtcGxlQ292ZXJhZ2U9e2VuYWJsZWQ6WihSLmVuYWJsZWQsITEpLHZhbHVlOlooUi52YWx1ZSwxKSxpbnZlcnQ6WihSLmludmVydCwhMSl9LHRoaXMudmlld3BvcnQ9bShJKT9uZXcgbWkoSS54LEkueSxJLndpZHRoLEkuaGVpZ2h0KTp2b2lkIDAsdGhpcy5saW5lV2lkdGg8ZW4ubWluaW11bUFsaWFzZWRMaW5lV2lkdGh8fHRoaXMubGluZVdpZHRoPmVuLm1heGltdW1BbGlhc2VkTGluZVdpZHRoKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5saW5lV2lkdGggaXMgb3V0IG9mIHJhbmdlLiAgQ2hlY2sgbWluaW11bUFsaWFzZWRMaW5lV2lkdGggYW5kIG1heGltdW1BbGlhc2VkTGluZVdpZHRoLiIpO2lmKCFNcy52YWxpZGF0ZSh0aGlzLmZyb250RmFjZSkpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuZnJvbnRGYWNlLiIpO2lmKCF4JCh0aGlzLmN1bGwuZmFjZSkpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuY3VsbC5mYWNlLiIpO2lmKHRoaXMuc2Npc3NvclRlc3QucmVjdGFuZ2xlLndpZHRoPDB8fHRoaXMuc2Npc3NvclRlc3QucmVjdGFuZ2xlLmhlaWdodDwwKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5zY2lzc29yVGVzdC5yZWN0YW5nbGUud2lkdGggYW5kIHJlbmRlclN0YXRlLnNjaXNzb3JUZXN0LnJlY3RhbmdsZS5oZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVyby4iKTtpZih0aGlzLmRlcHRoUmFuZ2UubmVhcj50aGlzLmRlcHRoUmFuZ2UuZmFyKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5kZXB0aFJhbmdlLm5lYXIgY2FuIG5vdCBiZSBncmVhdGVyIHRoYW4gcmVuZGVyU3RhdGUuZGVwdGhSYW5nZS5mYXIuIik7aWYodGhpcy5kZXB0aFJhbmdlLm5lYXI8MCl0aHJvdyBuZXcgWSgicmVuZGVyU3RhdGUuZGVwdGhSYW5nZS5uZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8uIik7aWYodGhpcy5kZXB0aFJhbmdlLmZhcj4xKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5kZXB0aFJhbmdlLmZhciBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUuIik7aWYoIVAkKHRoaXMuZGVwdGhUZXN0LmZ1bmMpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmRlcHRoVGVzdC5mdW5jLiIpO2lmKHRoaXMuYmxlbmRpbmcuY29sb3IucmVkPDB8fHRoaXMuYmxlbmRpbmcuY29sb3IucmVkPjF8fHRoaXMuYmxlbmRpbmcuY29sb3IuZ3JlZW48MHx8dGhpcy5ibGVuZGluZy5jb2xvci5ncmVlbj4xfHx0aGlzLmJsZW5kaW5nLmNvbG9yLmJsdWU8MHx8dGhpcy5ibGVuZGluZy5jb2xvci5ibHVlPjF8fHRoaXMuYmxlbmRpbmcuY29sb3IuYWxwaGE8MHx8dGhpcy5ibGVuZGluZy5jb2xvci5hbHBoYT4xKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5ibGVuZGluZy5jb2xvciBjb21wb25lbnRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUuIik7aWYoIWJEKHRoaXMuYmxlbmRpbmcuZXF1YXRpb25SZ2IpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmVxdWF0aW9uUmdiLiIpO2lmKCFiRCh0aGlzLmJsZW5kaW5nLmVxdWF0aW9uQWxwaGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmVxdWF0aW9uQWxwaGEuIik7aWYoIWhJKHRoaXMuYmxlbmRpbmcuZnVuY3Rpb25Tb3VyY2VSZ2IpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlUmdiLiIpO2lmKCFoSSh0aGlzLmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlQWxwaGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlQWxwaGEuIik7aWYoIWhJKHRoaXMuYmxlbmRpbmcuZnVuY3Rpb25EZXN0aW5hdGlvblJnYikpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuYmxlbmRpbmcuZnVuY3Rpb25EZXN0aW5hdGlvblJnYi4iKTtpZighaEkodGhpcy5ibGVuZGluZy5mdW5jdGlvbkRlc3RpbmF0aW9uQWxwaGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYS4iKTtpZighRkQodGhpcy5zdGVuY2lsVGVzdC5mcm9udEZ1bmN0aW9uKSl0aHJvdyBuZXcgWSgiSW52YWxpZCByZW5kZXJTdGF0ZS5zdGVuY2lsVGVzdC5mcm9udEZ1bmN0aW9uLiIpO2lmKCFGRCh0aGlzLnN0ZW5jaWxUZXN0LmJhY2tGdW5jdGlvbikpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuc3RlbmNpbFRlc3QuYmFja0Z1bmN0aW9uLiIpO2lmKCFEbSh0aGlzLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLmZhaWwpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLmZhaWwuIik7aWYoIURtKHRoaXMuc3RlbmNpbFRlc3QuZnJvbnRPcGVyYXRpb24uekZhaWwpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLnpGYWlsLiIpO2lmKCFEbSh0aGlzLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLnpQYXNzKSl0aHJvdyBuZXcgWSgiSW52YWxpZCByZW5kZXJTdGF0ZS5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi56UGFzcy4iKTtpZighRG0odGhpcy5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLmZhaWwpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uZmFpbC4iKTtpZighRG0odGhpcy5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsKSl0aHJvdyBuZXcgWSgiSW52YWxpZCByZW5kZXJTdGF0ZS5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsLiIpO2lmKCFEbSh0aGlzLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MuIik7aWYobSh0aGlzLnZpZXdwb3J0KSl7aWYodGhpcy52aWV3cG9ydC53aWR0aDwwKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS52aWV3cG9ydC53aWR0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLiIpO2lmKHRoaXMudmlld3BvcnQuaGVpZ2h0PDApdGhyb3cgbmV3IFkoInJlbmRlclN0YXRlLnZpZXdwb3J0LmhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLiIpO2lmKHRoaXMudmlld3BvcnQud2lkdGg+ZW4ubWF4aW11bVZpZXdwb3J0V2lkdGgpdGhyb3cgbmV3IFkoYHJlbmRlclN0YXRlLnZpZXdwb3J0LndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHZpZXdwb3J0IHdpZHRoICgke2VuLm1heGltdW1WaWV3cG9ydFdpZHRoLnRvU3RyaW5nKCl9KS4gIENoZWNrIG1heGltdW1WaWV3cG9ydFdpZHRoLmApO2lmKHRoaXMudmlld3BvcnQuaGVpZ2h0PmVuLm1heGltdW1WaWV3cG9ydEhlaWdodCl0aHJvdyBuZXcgWShgcmVuZGVyU3RhdGUudmlld3BvcnQuaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHZpZXdwb3J0IGhlaWdodCAoJHtlbi5tYXhpbXVtVmlld3BvcnRIZWlnaHQudG9TdHJpbmcoKX0pLiAgQ2hlY2sgbWF4aW11bVZpZXdwb3J0SGVpZ2h0LmApfXRoaXMuaWQ9MCx0aGlzLl9hcHBseUZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBibCh0LGUsaSl7aT90LmVuYWJsZShlKTp0LmRpc2FibGUoZSl9ZnVuY3Rpb24gWUQodCxlKXt0LmZyb250RmFjZShlLmZyb250RmFjZSl9ZnVuY3Rpb24gU0QodCxlKXtsZXQgaT1lLmN1bGwsbj1pLmVuYWJsZWQ7YmwodCx0LkNVTExfRkFDRSxuKSxuJiZ0LmN1bGxGYWNlKGkuZmFjZSl9ZnVuY3Rpb24gT0QodCxlKXt0LmxpbmVXaWR0aChlLmxpbmVXaWR0aCl9ZnVuY3Rpb24gVkQodCxlKXtsZXQgaT1lLnBvbHlnb25PZmZzZXQsbj1pLmVuYWJsZWQ7YmwodCx0LlBPTFlHT05fT0ZGU0VUX0ZJTEwsbiksbiYmdC5wb2x5Z29uT2Zmc2V0KGkuZmFjdG9yLGkudW5pdHMpfWZ1bmN0aW9uIEdEKHQsZSxpKXtsZXQgbj1lLnNjaXNzb3JUZXN0LHM9bShpLnNjaXNzb3JUZXN0KT9pLnNjaXNzb3JUZXN0LmVuYWJsZWQ6bi5lbmFibGVkO2lmKGJsKHQsdC5TQ0lTU09SX1RFU1Qscykscyl7bGV0IG89bShpLnNjaXNzb3JUZXN0KT9pLnNjaXNzb3JUZXN0LnJlY3RhbmdsZTpuLnJlY3RhbmdsZTt0LnNjaXNzb3Ioby54LG8ueSxvLndpZHRoLG8uaGVpZ2h0KX19ZnVuY3Rpb24gQkQodCxlKXtsZXQgaT1lLmRlcHRoUmFuZ2U7dC5kZXB0aFJhbmdlKGkubmVhcixpLmZhcil9ZnVuY3Rpb24gV0QodCxlKXtsZXQgaT1lLmRlcHRoVGVzdCxuPWkuZW5hYmxlZDtibCh0LHQuREVQVEhfVEVTVCxuKSxuJiZ0LmRlcHRoRnVuYyhpLmZ1bmMpfWZ1bmN0aW9uIEREKHQsZSl7bGV0IGk9ZS5jb2xvck1hc2s7dC5jb2xvck1hc2soaS5yZWQsaS5ncmVlbixpLmJsdWUsaS5hbHBoYSl9ZnVuY3Rpb24gTUQodCxlKXt0LmRlcHRoTWFzayhlLmRlcHRoTWFzayl9ZnVuY3Rpb24gVUQodCxlKXt0LnN0ZW5jaWxNYXNrKGUuc3RlbmNpbE1hc2spfWZ1bmN0aW9uIGokKHQsZSl7dC5ibGVuZENvbG9yKGUucmVkLGUuZ3JlZW4sZS5ibHVlLGUuYWxwaGEpfWZ1bmN0aW9uIFFEKHQsZSxpKXtsZXQgbj1lLmJsZW5kaW5nLHM9bShpLmJsZW5kaW5nRW5hYmxlZCk/aS5ibGVuZGluZ0VuYWJsZWQ6bi5lbmFibGVkO2JsKHQsdC5CTEVORCxzKSxzJiYoaiQodCxuLmNvbG9yKSx0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShuLmVxdWF0aW9uUmdiLG4uZXF1YXRpb25BbHBoYSksdC5ibGVuZEZ1bmNTZXBhcmF0ZShuLmZ1bmN0aW9uU291cmNlUmdiLG4uZnVuY3Rpb25EZXN0aW5hdGlvblJnYixuLmZ1bmN0aW9uU291cmNlQWxwaGEsbi5mdW5jdGlvbkRlc3RpbmF0aW9uQWxwaGEpKX1mdW5jdGlvbiBrRCh0LGUpe2xldCBpPWUuc3RlbmNpbFRlc3Qsbj1pLmVuYWJsZWQ7aWYoYmwodCx0LlNURU5DSUxfVEVTVCxuKSxuKXtsZXQgcz1pLmZyb250RnVuY3Rpb24sbz1pLmJhY2tGdW5jdGlvbixyPWkucmVmZXJlbmNlLGE9aS5tYXNrO3Quc3RlbmNpbEZ1bmMocyxyLGEpLHQuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0LkJBQ0ssbyxyLGEpLHQuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0LkZST05ULHMscixhKTtsZXQgaD1pLmZyb250T3BlcmF0aW9uLEE9aC5mYWlsLGQ9aC56RmFpbCxmPWguelBhc3M7dC5zdGVuY2lsT3BTZXBhcmF0ZSh0LkZST05ULEEsZCxmKTtsZXQgRT1pLmJhY2tPcGVyYXRpb24sXz1FLmZhaWwsUj1FLnpGYWlsLEk9RS56UGFzczt0LnN0ZW5jaWxPcFNlcGFyYXRlKHQuQkFDSyxfLFIsSSl9fWZ1bmN0aW9uIExEKHQsZSl7bGV0IGk9ZS5zYW1wbGVDb3ZlcmFnZSxuPWkuZW5hYmxlZDtibCh0LHQuU0FNUExFX0NPVkVSQUdFLG4pLG4mJnQuc2FtcGxlQ292ZXJhZ2UoaS52YWx1ZSxpLmludmVydCl9ZnVuY3Rpb24geUQodCxlLGkpe2xldCBuPVooZS52aWV3cG9ydCxpLnZpZXdwb3J0KTttKG4pfHwobj1IJCxuLndpZHRoPWkuY29udGV4dC5kcmF3aW5nQnVmZmVyV2lkdGgsbi5oZWlnaHQ9aS5jb250ZXh0LmRyYXdpbmdCdWZmZXJIZWlnaHQpLGkuY29udGV4dC51bmlmb3JtU3RhdGUudmlld3BvcnQ9bix0LnZpZXdwb3J0KG4ueCxuLnksbi53aWR0aCxuLmhlaWdodCl9ZnVuY3Rpb24gdiQodCxlKXtsZXQgaT1bXTtyZXR1cm4gdC5mcm9udEZhY2UhPT1lLmZyb250RmFjZSYmaS5wdXNoKFlEKSwodC5jdWxsLmVuYWJsZWQhPT1lLmN1bGwuZW5hYmxlZHx8dC5jdWxsLmZhY2UhPT1lLmN1bGwuZmFjZSkmJmkucHVzaChTRCksdC5saW5lV2lkdGghPT1lLmxpbmVXaWR0aCYmaS5wdXNoKE9EKSwodC5wb2x5Z29uT2Zmc2V0LmVuYWJsZWQhPT1lLnBvbHlnb25PZmZzZXQuZW5hYmxlZHx8dC5wb2x5Z29uT2Zmc2V0LmZhY3RvciE9PWUucG9seWdvbk9mZnNldC5mYWN0b3J8fHQucG9seWdvbk9mZnNldC51bml0cyE9PWUucG9seWdvbk9mZnNldC51bml0cykmJmkucHVzaChWRCksKHQuZGVwdGhSYW5nZS5uZWFyIT09ZS5kZXB0aFJhbmdlLm5lYXJ8fHQuZGVwdGhSYW5nZS5mYXIhPT1lLmRlcHRoUmFuZ2UuZmFyKSYmaS5wdXNoKEJEKSwodC5kZXB0aFRlc3QuZW5hYmxlZCE9PWUuZGVwdGhUZXN0LmVuYWJsZWR8fHQuZGVwdGhUZXN0LmZ1bmMhPT1lLmRlcHRoVGVzdC5mdW5jKSYmaS5wdXNoKFdEKSwodC5jb2xvck1hc2sucmVkIT09ZS5jb2xvck1hc2sucmVkfHx0LmNvbG9yTWFzay5ncmVlbiE9PWUuY29sb3JNYXNrLmdyZWVufHx0LmNvbG9yTWFzay5ibHVlIT09ZS5jb2xvck1hc2suYmx1ZXx8dC5jb2xvck1hc2suYWxwaGEhPT1lLmNvbG9yTWFzay5hbHBoYSkmJmkucHVzaChERCksdC5kZXB0aE1hc2shPT1lLmRlcHRoTWFzayYmaS5wdXNoKE1EKSx0LnN0ZW5jaWxNYXNrIT09ZS5zdGVuY2lsTWFzayYmaS5wdXNoKFVEKSwodC5zdGVuY2lsVGVzdC5lbmFibGVkIT09ZS5zdGVuY2lsVGVzdC5lbmFibGVkfHx0LnN0ZW5jaWxUZXN0LmZyb250RnVuY3Rpb24hPT1lLnN0ZW5jaWxUZXN0LmZyb250RnVuY3Rpb258fHQuc3RlbmNpbFRlc3QuYmFja0Z1bmN0aW9uIT09ZS5zdGVuY2lsVGVzdC5iYWNrRnVuY3Rpb258fHQuc3RlbmNpbFRlc3QucmVmZXJlbmNlIT09ZS5zdGVuY2lsVGVzdC5yZWZlcmVuY2V8fHQuc3RlbmNpbFRlc3QubWFzayE9PWUuc3RlbmNpbFRlc3QubWFza3x8dC5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi5mYWlsIT09ZS5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi5mYWlsfHx0LnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLnpGYWlsIT09ZS5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi56RmFpbHx8dC5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLmZhaWwhPT1lLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uZmFpbHx8dC5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsIT09ZS5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsfHx0LnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MhPT1lLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MpJiZpLnB1c2goa0QpLCh0LnNhbXBsZUNvdmVyYWdlLmVuYWJsZWQhPT1lLnNhbXBsZUNvdmVyYWdlLmVuYWJsZWR8fHQuc2FtcGxlQ292ZXJhZ2UudmFsdWUhPT1lLnNhbXBsZUNvdmVyYWdlLnZhbHVlfHx0LnNhbXBsZUNvdmVyYWdlLmludmVydCE9PWUuc2FtcGxlQ292ZXJhZ2UuaW52ZXJ0KSYmaS5wdXNoKExEKSxpfXZhciBKJCxFQSxIJCxZbixNbT1PKCgpPT57RXIoKTtRbigpO2J0KCk7bXQoKTtWdCgpO3NzKCk7ZmMoKTtnYSgpO05EKCk7SiQ9MCxFQT17fTtfQS5mcm9tQ2FjaGU9ZnVuY3Rpb24odCl7bGV0IGU9SlNPTi5zdHJpbmdpZnkodCksaT1FQVtlXTtpZihtKGkpKXJldHVybisraS5yZWZlcmVuY2VDb3VudCxpLnN0YXRlO2xldCBuPW5ldyBfQSh0KSxzPUpTT04uc3RyaW5naWZ5KG4pO3JldHVybiBpPUVBW3NdLG0oaSl8fChuLmlkPUokKyssbj1URChuKSxpPXtyZWZlcmVuY2VDb3VudDowLHN0YXRlOm59LEVBW3NdPWkpLCsraS5yZWZlcmVuY2VDb3VudCxFQVtlXT17cmVmZXJlbmNlQ291bnQ6MSxzdGF0ZTppLnN0YXRlfSxpLnN0YXRlfTtfQS5yZW1vdmVGcm9tQ2FjaGU9ZnVuY3Rpb24odCl7bGV0IGU9bmV3IF9BKHQpLGk9SlNPTi5zdHJpbmdpZnkoZSksbj1FQVtpXSxzPUpTT04uc3RyaW5naWZ5KHQpLG89RUFbc107bShvKSYmKC0tby5yZWZlcmVuY2VDb3VudCxvLnJlZmVyZW5jZUNvdW50PT09MCYmKGRlbGV0ZSBFQVtzXSxtKG4pJiYtLW4ucmVmZXJlbmNlQ291bnQpKSxtKG4pJiZuLnJlZmVyZW5jZUNvdW50PT09MCYmZGVsZXRlIEVBW2ldfTtfQS5nZXRDYWNoZT1mdW5jdGlvbigpe3JldHVybiBFQX07X0EuY2xlYXJDYWNoZT1mdW5jdGlvbigpe0VBPXt9fTtIJD1uZXcgbWk7X0EuYXBwbHk9ZnVuY3Rpb24odCxlLGkpe1lEKHQsZSksU0QodCxlKSxPRCh0LGUpLFZEKHQsZSksQkQodCxlKSxXRCh0LGUpLEREKHQsZSksTUQodCxlKSxVRCh0LGUpLGtEKHQsZSksTEQodCxlKSxHRCh0LGUsaSksUUQodCxlLGkpLHlEKHQsZSxpKX07X0EucGFydGlhbEFwcGx5PWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtpZihlIT09aSl7bGV0IGQ9aS5fYXBwbHlGdW5jdGlvbnNbZS5pZF07bShkKXx8KGQ9diQoZSxpKSxpLl9hcHBseUZ1bmN0aW9uc1tlLmlkXT1kKTtsZXQgZj1kLmxlbmd0aDtmb3IobGV0IEU9MDtFPGY7KytFKWRbRV0odCxpKX1sZXQgcj1tKG4uc2Npc3NvclRlc3QpP24uc2Npc3NvclRlc3Q6ZS5zY2lzc29yVGVzdCxhPW0ocy5zY2lzc29yVGVzdCk/cy5zY2lzc29yVGVzdDppLnNjaXNzb3JUZXN0OyhyIT09YXx8bykmJkdEKHQsaSxzKTtsZXQgaD1tKG4uYmxlbmRpbmdFbmFibGVkKT9uLmJsZW5kaW5nRW5hYmxlZDplLmJsZW5kaW5nLmVuYWJsZWQsQT1tKHMuYmxlbmRpbmdFbmFibGVkKT9zLmJsZW5kaW5nRW5hYmxlZDppLmJsZW5kaW5nLmVuYWJsZWQ7KGghPT1BfHxBJiZlLmJsZW5kaW5nIT09aS5ibGVuZGluZykmJlFEKHQsaSxzKSwoZSE9PWl8fG4hPT1zfHxuLmNvbnRleHQhPT1zLmNvbnRleHQpJiZ5RCh0LGkscyl9O19BLmdldFN0YXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZSBpcyByZXF1aXJlZC4iKTtyZXR1cm57ZnJvbnRGYWNlOnQuZnJvbnRGYWNlLGN1bGw6e2VuYWJsZWQ6dC5jdWxsLmVuYWJsZWQsZmFjZTp0LmN1bGwuZmFjZX0sbGluZVdpZHRoOnQubGluZVdpZHRoLHBvbHlnb25PZmZzZXQ6e2VuYWJsZWQ6dC5wb2x5Z29uT2Zmc2V0LmVuYWJsZWQsZmFjdG9yOnQucG9seWdvbk9mZnNldC5mYWN0b3IsdW5pdHM6dC5wb2x5Z29uT2Zmc2V0LnVuaXRzfSxzY2lzc29yVGVzdDp7ZW5hYmxlZDp0LnNjaXNzb3JUZXN0LmVuYWJsZWQscmVjdGFuZ2xlOm1pLmNsb25lKHQuc2Npc3NvclRlc3QucmVjdGFuZ2xlKX0sZGVwdGhSYW5nZTp7bmVhcjp0LmRlcHRoUmFuZ2UubmVhcixmYXI6dC5kZXB0aFJhbmdlLmZhcn0sZGVwdGhUZXN0OntlbmFibGVkOnQuZGVwdGhUZXN0LmVuYWJsZWQsZnVuYzp0LmRlcHRoVGVzdC5mdW5jfSxjb2xvck1hc2s6e3JlZDp0LmNvbG9yTWFzay5yZWQsZ3JlZW46dC5jb2xvck1hc2suZ3JlZW4sYmx1ZTp0LmNvbG9yTWFzay5ibHVlLGFscGhhOnQuY29sb3JNYXNrLmFscGhhfSxkZXB0aE1hc2s6dC5kZXB0aE1hc2ssc3RlbmNpbE1hc2s6dC5zdGVuY2lsTWFzayxibGVuZGluZzp7ZW5hYmxlZDp0LmJsZW5kaW5nLmVuYWJsZWQsY29sb3I6WnQuY2xvbmUodC5ibGVuZGluZy5jb2xvciksZXF1YXRpb25SZ2I6dC5ibGVuZGluZy5lcXVhdGlvblJnYixlcXVhdGlvbkFscGhhOnQuYmxlbmRpbmcuZXF1YXRpb25BbHBoYSxmdW5jdGlvblNvdXJjZVJnYjp0LmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlUmdiLGZ1bmN0aW9uU291cmNlQWxwaGE6dC5ibGVuZGluZy5mdW5jdGlvblNvdXJjZUFscGhhLGZ1bmN0aW9uRGVzdGluYXRpb25SZ2I6dC5ibGVuZGluZy5mdW5jdGlvbkRlc3RpbmF0aW9uUmdiLGZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYTp0LmJsZW5kaW5nLmZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYX0sc3RlbmNpbFRlc3Q6e2VuYWJsZWQ6dC5zdGVuY2lsVGVzdC5lbmFibGVkLGZyb250RnVuY3Rpb246dC5zdGVuY2lsVGVzdC5mcm9udEZ1bmN0aW9uLGJhY2tGdW5jdGlvbjp0LnN0ZW5jaWxUZXN0LmJhY2tGdW5jdGlvbixyZWZlcmVuY2U6dC5zdGVuY2lsVGVzdC5yZWZlcmVuY2UsbWFzazp0LnN0ZW5jaWxUZXN0Lm1hc2ssZnJvbnRPcGVyYXRpb246e2ZhaWw6dC5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi5mYWlsLHpGYWlsOnQuc3RlbmNpbFRlc3QuZnJvbnRPcGVyYXRpb24uekZhaWwselBhc3M6dC5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi56UGFzc30sYmFja09wZXJhdGlvbjp7ZmFpbDp0LnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uZmFpbCx6RmFpbDp0LnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uekZhaWwselBhc3M6dC5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpQYXNzfX0sc2FtcGxlQ292ZXJhZ2U6e2VuYWJsZWQ6dC5zYW1wbGVDb3ZlcmFnZS5lbmFibGVkLHZhbHVlOnQuc2FtcGxlQ292ZXJhZ2UudmFsdWUsaW52ZXJ0OnQuc2FtcGxlQ292ZXJhZ2UuaW52ZXJ0fSx2aWV3cG9ydDptKHQudmlld3BvcnQpP21pLmNsb25lKHQudmlld3BvcnQpOnZvaWQgMH19O1luPV9BfSk7ZnVuY3Rpb24gZGUodCl7dGhpcy5fc2l6ZT10LnNpemUsdGhpcy5fZGF0YXR5cGU9dC5kYXRhdHlwZSx0aGlzLmdldFZhbHVlPXQuZ2V0VmFsdWV9dmFyIHokLEhzLEskLFVtLEZUPU8oKCk9PntIdCgpO0ZpKCk7c3MoKTt6JD1uZXcgbDtIcz17fTtIc1tpdC5GTE9BVF09ImZsb2F0IjtIc1tpdC5GTE9BVF9WRUMyXT0idmVjMiI7SHNbaXQuRkxPQVRfVkVDM109InZlYzMiO0hzW2l0LkZMT0FUX1ZFQzRdPSJ2ZWM0IjtIc1tpdC5JTlRdPSJpbnQiO0hzW2l0LklOVF9WRUMyXT0iaXZlYzIiO0hzW2l0LklOVF9WRUMzXT0iaXZlYzMiO0hzW2l0LklOVF9WRUM0XT0iaXZlYzQiO0hzW2l0LkJPT0xdPSJib29sIjtIc1tpdC5CT09MX1ZFQzJdPSJidmVjMiI7SHNbaXQuQk9PTF9WRUMzXT0iYnZlYzMiO0hzW2l0LkJPT0xfVkVDNF09ImJ2ZWM0IjtIc1tpdC5GTE9BVF9NQVQyXT0ibWF0MiI7SHNbaXQuRkxPQVRfTUFUM109Im1hdDMiO0hzW2l0LkZMT0FUX01BVDRdPSJtYXQ0IjtIc1tpdC5TQU1QTEVSXzJEXT0ic2FtcGxlcjJEIjtIc1tpdC5TQU1QTEVSX0NVQkVdPSJzYW1wbGVyQ3ViZSI7ZGUucHJvdG90eXBlLmdldERlY2xhcmF0aW9uPWZ1bmN0aW9uKHQpe2xldCBlPWB1bmlmb3JtICR7SHNbdGhpcy5fZGF0YXR5cGVdfSAke3R9YCxpPXRoaXMuX3NpemU7cmV0dXJuIGk9PT0xP2UrPSI7IjplKz1gWyR7aS50b1N0cmluZygpfV07YCxlfTtLJD17Y3ptX3ZpZXdwb3J0Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld3BvcnRDYXJ0ZXNpYW40fX0pLGN6bV92aWV3cG9ydE9ydGhvZ3JhcGhpYzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnZpZXdwb3J0T3J0aG9ncmFwaGljfX0pLGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld3BvcnRUcmFuc2Zvcm1hdGlvbn19KSxjem1fZ2xvYmVEZXB0aFRleHR1cmU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuU0FNUExFUl8yRCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iZURlcHRoVGV4dHVyZX19KSxjem1fbW9kZWw6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbH19KSxjem1faW52ZXJzZU1vZGVsOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZU1vZGVsfX0pLGN6bV92aWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld319KSxjem1fdmlldzNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlldzNEfX0pLGN6bV92aWV3Um90YXRpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC52aWV3Um90YXRpb259fSksY3ptX3ZpZXdSb3RhdGlvbjNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld1JvdGF0aW9uM0R9fSksY3ptX2ludmVyc2VWaWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZVZpZXd9fSksY3ptX2ludmVyc2VWaWV3M0Q6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZlcnNlVmlldzNEfX0pLGN6bV9pbnZlcnNlVmlld1JvdGF0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZVZpZXdSb3RhdGlvbn19KSxjem1faW52ZXJzZVZpZXdSb3RhdGlvbjNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZVZpZXdSb3RhdGlvbjNEfX0pLGN6bV9wcm9qZWN0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucHJvamVjdGlvbn19KSxjem1faW52ZXJzZVByb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZlcnNlUHJvamVjdGlvbn19KSxjem1faW5maW5pdGVQcm9qZWN0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5maW5pdGVQcm9qZWN0aW9ufX0pLGN6bV9tb2RlbFZpZXc6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXd9fSksY3ptX21vZGVsVmlldzNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWxWaWV3M0R9fSksY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXdSZWxhdGl2ZVRvRXllfX0pLGN6bV9pbnZlcnNlTW9kZWxWaWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZU1vZGVsVmlld319KSxjem1faW52ZXJzZU1vZGVsVmlldzNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZU1vZGVsVmlldzNEfX0pLGN6bV92aWV3UHJvamVjdGlvbjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnZpZXdQcm9qZWN0aW9ufX0pLGN6bV9pbnZlcnNlVmlld1Byb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZlcnNlVmlld1Byb2plY3Rpb259fSksY3ptX21vZGVsVmlld1Byb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXdQcm9qZWN0aW9ufX0pLGN6bV9pbnZlcnNlTW9kZWxWaWV3UHJvamVjdGlvbjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVyc2VNb2RlbFZpZXdQcm9qZWN0aW9ufX0pLGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9uUmVsYXRpdmVUb0V5ZTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllfX0pLGN6bV9tb2RlbFZpZXdJbmZpbml0ZVByb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXdJbmZpbml0ZVByb2plY3Rpb259fSksY3ptX29ydGhvZ3JhcGhpY0luM0Q6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQub3J0aG9ncmFwaGljSW4zRD8xOjB9fSksY3ptX25vcm1hbDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vcm1hbH19KSxjem1fbm9ybWFsM0Q6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5ub3JtYWwzRH19KSxjem1faW52ZXJzZU5vcm1hbDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVyc2VOb3JtYWx9fSksY3ptX2ludmVyc2VOb3JtYWwzRDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVyc2VOb3JtYWwzRH19KSxjem1fZXllSGVpZ2h0Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmV5ZUhlaWdodH19KSxjem1fZXllSGVpZ2h0MkQ6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5leWVIZWlnaHQyRH19KSxjem1fZXllRWxsaXBzb2lkTm9ybWFsRUM6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5leWVFbGxpcHNvaWROb3JtYWxFQ319KSxjem1fZXllRWxsaXBzb2lkQ3VydmF0dXJlOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzIsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXllRWxsaXBzb2lkQ3VydmF0dXJlfX0pLGN6bV9tb2RlbFRvRW51Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWxUb0VudX19KSxjem1fZW51VG9Nb2RlbDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmVudVRvTW9kZWx9fSksY3ptX2VudGlyZUZydXN0dW06bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5lbnRpcmVGcnVzdHVtfX0pLGN6bV9jdXJyZW50RnJ1c3R1bTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMyLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmN1cnJlbnRGcnVzdHVtfX0pLGN6bV9mcnVzdHVtUGxhbmVzOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJ1c3R1bVBsYW5lc319KSxjem1fZmFyRGVwdGhGcm9tTmVhclBsdXNPbmU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmFyRGVwdGhGcm9tTmVhclBsdXNPbmV9fSksY3ptX2xvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5sb2cyRmFyRGVwdGhGcm9tTmVhclBsdXNPbmV9fSksY3ptX29uZU92ZXJMb2cyRmFyRGVwdGhGcm9tTmVhclBsdXNPbmU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQub25lT3ZlckxvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZX19KSxjem1fc3VuUG9zaXRpb25XQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnN1blBvc2l0aW9uV0N9fSksY3ptX3N1blBvc2l0aW9uQ29sdW1idXNWaWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3VuUG9zaXRpb25Db2x1bWJ1c1ZpZXd9fSksY3ptX3N1bkRpcmVjdGlvbkVDOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3VuRGlyZWN0aW9uRUN9fSksY3ptX3N1bkRpcmVjdGlvbldDOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3VuRGlyZWN0aW9uV0N9fSksY3ptX21vb25EaXJlY3Rpb25FQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vb25EaXJlY3Rpb25FQ319KSxjem1fbGlnaHREaXJlY3Rpb25FQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmxpZ2h0RGlyZWN0aW9uRUN9fSksY3ptX2xpZ2h0RGlyZWN0aW9uV0M6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5saWdodERpcmVjdGlvbldDfX0pLGN6bV9saWdodENvbG9yOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGlnaHRDb2xvcn19KSxjem1fbGlnaHRDb2xvckhkcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmxpZ2h0Q29sb3JIZHJ9fSksY3ptX2VuY29kZWRDYW1lcmFQb3NpdGlvbk1DSGlnaDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmVuY29kZWRDYW1lcmFQb3NpdGlvbk1DSGlnaH19KSxjem1fZW5jb2RlZENhbWVyYVBvc2l0aW9uTUNMb3c6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5lbmNvZGVkQ2FtZXJhUG9zaXRpb25NQ0xvd319KSxjem1fdmlld2VyUG9zaXRpb25XQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBhdC5nZXRUcmFuc2xhdGlvbih0LmludmVyc2VWaWV3LHokKX19KSxjem1fZnJhbWVOdW1iZXI6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJhbWVTdGF0ZS5mcmFtZU51bWJlcn19KSxjem1fbW9ycGhUaW1lOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmZyYW1lU3RhdGUubW9ycGhUaW1lfX0pLGN6bV9zY2VuZU1vZGU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJhbWVTdGF0ZS5tb2RlfX0pLGN6bV9wYXNzOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnBhc3N9fSksY3ptX2JhY2tncm91bmRDb2xvcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUM0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmJhY2tncm91bmRDb2xvcn19KSxjem1fYnJkZkx1dDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5TQU1QTEVSXzJELGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmJyZGZMdXR9fSksY3ptX2Vudmlyb25tZW50TWFwOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LlNBTVBMRVJfQ1VCRSxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5lbnZpcm9ubWVudE1hcH19KSxjem1fc3BlY3VsYXJFbnZpcm9ubWVudE1hcHM6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuU0FNUExFUl8yRCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGVjdWxhckVudmlyb25tZW50TWFwc319KSxjem1fc3BlY3VsYXJFbnZpcm9ubWVudE1hcFNpemU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGVjdWxhckVudmlyb25tZW50TWFwc0RpbWVuc2lvbnN9fSksY3ptX3NwZWN1bGFyRW52aXJvbm1lbnRNYXBzTWF4aW11bUxPRDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGVjdWxhckVudmlyb25tZW50TWFwc01heGltdW1MT0R9fSksY3ptX3NwaGVyaWNhbEhhcm1vbmljQ29lZmZpY2llbnRzOm5ldyBkZSh7c2l6ZTo5LGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3BoZXJpY2FsSGFybW9uaWNDb2VmZmljaWVudHN9fSksY3ptX3RlbWVUb1BzZXVkb0ZpeGVkOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudGVtZVRvUHNldWRvRml4ZWRNYXRyaXh9fSksY3ptX3BpeGVsUmF0aW86bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucGl4ZWxSYXRpb319KSxjem1fZm9nRGVuc2l0eTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5mb2dEZW5zaXR5fX0pLGN6bV9mb2dNaW5pbXVtQnJpZ2h0bmVzczpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5mb2dNaW5pbXVtQnJpZ2h0bmVzc319KSxjem1fYXRtb3NwaGVyZUhzYlNoaWZ0Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZUhzYlNoaWZ0fX0pLGN6bV9hdG1vc3BoZXJlTGlnaHRJbnRlbnNpdHk6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZUxpZ2h0SW50ZW5zaXR5fX0pLGN6bV9hdG1vc3BoZXJlUmF5bGVpZ2hDb2VmZmljaWVudDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmF0bW9zcGhlcmVSYXlsZWlnaENvZWZmaWNpZW50fX0pLGN6bV9hdG1vc3BoZXJlUmF5bGVpZ2hTY2FsZUhlaWdodDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdG1vc3BoZXJlUmF5bGVpZ2hTY2FsZUhlaWdodH19KSxjem1fYXRtb3NwaGVyZU1pZUNvZWZmaWNpZW50Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZU1pZUNvZWZmaWNpZW50fX0pLGN6bV9hdG1vc3BoZXJlTWllU2NhbGVIZWlnaHQ6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZU1pZVNjYWxlSGVpZ2h0fX0pLGN6bV9hdG1vc3BoZXJlTWllQW5pc290cm9weTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdG1vc3BoZXJlTWllQW5pc290cm9weX19KSxjem1fYXRtb3NwaGVyZUR5bmFtaWNMaWdodGluZzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdG1vc3BoZXJlRHluYW1pY0xpZ2h0aW5nfX0pLGN6bV9zcGxpdFBvc2l0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0UG9zaXRpb259fSksY3ptX2dlb21ldHJpY1RvbGVyYW5jZU92ZXJNZXRlcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZW9tZXRyaWNUb2xlcmFuY2VPdmVyTWV0ZXJ9fSksY3ptX21pbmltdW1EaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZX19KSxjem1faW52ZXJ0Q2xhc3NpZmljYXRpb25Db2xvcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUM0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVydENsYXNzaWZpY2F0aW9uQ29sb3J9fSksY3ptX2dhbW1hOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdhbW1hfX0pLGN6bV9lbGxpcHNvaWRSYWRpaTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmVsbGlwc29pZC5yYWRpaX19KSxjem1fZWxsaXBzb2lkSW52ZXJzZVJhZGlpOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxsaXBzb2lkLm9uZU92ZXJSYWRpaX19KX0sVW09SyR9KTtmdW5jdGlvbiBYJCh0LGUsaSxuKXtzd2l0Y2goZS50eXBlKXtjYXNlIHQuRkxPQVQ6cmV0dXJuIG5ldyB3RCh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfVkVDMjpyZXR1cm4gbmV3IHhEKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9WRUMzOnJldHVybiBuZXcgUEQodCxlLGksbik7Y2FzZSB0LkZMT0FUX1ZFQzQ6cmV0dXJuIG5ldyBKRCh0LGUsaSxuKTtjYXNlIHQuU0FNUExFUl8yRDpjYXNlIHQuU0FNUExFUl9DVUJFOnJldHVybiBuZXcgWVQodCxlLGksbik7Y2FzZSB0LklOVDpjYXNlIHQuQk9PTDpyZXR1cm4gbmV3IGpEKHQsZSxpLG4pO2Nhc2UgdC5JTlRfVkVDMjpjYXNlIHQuQk9PTF9WRUMyOnJldHVybiBuZXcgSEQodCxlLGksbik7Y2FzZSB0LklOVF9WRUMzOmNhc2UgdC5CT09MX1ZFQzM6cmV0dXJuIG5ldyB2RCh0LGUsaSxuKTtjYXNlIHQuSU5UX1ZFQzQ6Y2FzZSB0LkJPT0xfVkVDNDpyZXR1cm4gbmV3IHpEKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9NQVQyOnJldHVybiBuZXcgS0QodCxlLGksbik7Y2FzZSB0LkZMT0FUX01BVDM6cmV0dXJuIG5ldyBYRCh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfTUFUNDpyZXR1cm4gbmV3IHFEKHQsZSxpLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IGtlKGBVbnJlY29nbml6ZWQgdW5pZm9ybSB0eXBlOiAke2UudHlwZX0gZm9yIHVuaWZvcm0gIiR7aX0iLmApfX1mdW5jdGlvbiB3RCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT0wLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiB4RCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgbnQsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufWZ1bmN0aW9uIFBEKHQsZSxpLG4pe3RoaXMubmFtZT1pLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW59ZnVuY3Rpb24gSkQodCxlLGksbil7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT12b2lkIDAsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiBZVCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW4sdGhpcy50ZXh0dXJlVW5pdEluZGV4PXZvaWQgMH1mdW5jdGlvbiBqRCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT0wLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiBIRCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgbnQsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufWZ1bmN0aW9uIHZEKHQsZSxpLG4pe3RoaXMubmFtZT1pLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlPW5ldyBsLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiB6RCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgaWUsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufWZ1bmN0aW9uIEtEKHQsZSxpLG4pe3RoaXMubmFtZT1pLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlPW5ldyBIbix0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW59ZnVuY3Rpb24gWEQodCxlLGksbil7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT12b2lkIDAsdGhpcy5fdmFsdWU9bmV3IGx0LHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiBxRCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgYXQsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufXZhciBxJCwkJCx0dHQsJEQsdE09TygoKT0+e1hlKCk7SHQoKTtWcygpO1FuKCk7bXQoKTtWdCgpO2RjKCk7ZG4oKTtGaSgpO1BzKCk7d0QucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLl92YWx1ZSYmKHRoaXMuX3ZhbHVlPXRoaXMudmFsdWUsdGhpcy5fZ2wudW5pZm9ybTFmKHRoaXMuX2xvY2F0aW9uLHRoaXMudmFsdWUpKX07eEQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7bnQuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwobnQuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTJmKHRoaXMuX2xvY2F0aW9uLHQueCx0LnkpKX07UEQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7aWYobSh0LnJlZCkpWnQuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwodGhpcy5fdmFsdWU9WnQuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTNmKHRoaXMuX2xvY2F0aW9uLHQucmVkLHQuZ3JlZW4sdC5ibHVlKSk7ZWxzZSBpZihtKHQueCkpbC5lcXVhbHModCx0aGlzLl92YWx1ZSl8fCh0aGlzLl92YWx1ZT1sLmNsb25lKHQsdGhpcy5fdmFsdWUpLHRoaXMuX2dsLnVuaWZvcm0zZih0aGlzLl9sb2NhdGlvbix0LngsdC55LHQueikpO2Vsc2UgdGhyb3cgbmV3IFkoYEludmFsaWQgdmVjMyB2YWx1ZSBmb3IgdW5pZm9ybSAiJHt0aGlzLm5hbWV9Ii5gKX07SkQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7aWYobSh0LnJlZCkpWnQuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwodGhpcy5fdmFsdWU9WnQuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTRmKHRoaXMuX2xvY2F0aW9uLHQucmVkLHQuZ3JlZW4sdC5ibHVlLHQuYWxwaGEpKTtlbHNlIGlmKG0odC54KSlpZS5lcXVhbHModCx0aGlzLl92YWx1ZSl8fCh0aGlzLl92YWx1ZT1pZS5jbG9uZSh0LHRoaXMuX3ZhbHVlKSx0aGlzLl9nbC51bmlmb3JtNGYodGhpcy5fbG9jYXRpb24sdC54LHQueSx0LnosdC53KSk7ZWxzZSB0aHJvdyBuZXcgWShgSW52YWxpZCB2ZWM0IHZhbHVlIGZvciB1bmlmb3JtICIke3RoaXMubmFtZX0iLmApfTtZVC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fZ2w7dC5hY3RpdmVUZXh0dXJlKHQuVEVYVFVSRTArdGhpcy50ZXh0dXJlVW5pdEluZGV4KTtsZXQgZT10aGlzLnZhbHVlO3QuYmluZFRleHR1cmUoZS5fdGFyZ2V0LGUuX3RleHR1cmUpfTtZVC5wcm90b3R5cGUuX3NldFNhbXBsZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGV4dHVyZVVuaXRJbmRleD10LHRoaXMuX2dsLnVuaWZvcm0xaSh0aGlzLl9sb2NhdGlvbix0KSx0KzF9O2pELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlIT09dGhpcy5fdmFsdWUmJih0aGlzLl92YWx1ZT10aGlzLnZhbHVlLHRoaXMuX2dsLnVuaWZvcm0xaSh0aGlzLl9sb2NhdGlvbix0aGlzLnZhbHVlKSl9O0hELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlO250LmVxdWFscyh0LHRoaXMuX3ZhbHVlKXx8KG50LmNsb25lKHQsdGhpcy5fdmFsdWUpLHRoaXMuX2dsLnVuaWZvcm0yaSh0aGlzLl9sb2NhdGlvbix0LngsdC55KSl9O3ZELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlO2wuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwobC5jbG9uZSh0LHRoaXMuX3ZhbHVlKSx0aGlzLl9nbC51bmlmb3JtM2kodGhpcy5fbG9jYXRpb24sdC54LHQueSx0LnopKX07ekQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7aWUuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwoaWUuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTRpKHRoaXMuX2xvY2F0aW9uLHQueCx0LnksdC56LHQudykpfTtxJD1uZXcgRmxvYXQzMkFycmF5KDQpO0tELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtpZighSG4uZXF1YWxzQXJyYXkodGhpcy52YWx1ZSx0aGlzLl92YWx1ZSwwKSl7SG4uY2xvbmUodGhpcy52YWx1ZSx0aGlzLl92YWx1ZSk7bGV0IHQ9SG4udG9BcnJheSh0aGlzLnZhbHVlLHEkKTt0aGlzLl9nbC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuX2xvY2F0aW9uLCExLHQpfX07JCQ9bmV3IEZsb2F0MzJBcnJheSg5KTtYRC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7aWYoIWx0LmVxdWFsc0FycmF5KHRoaXMudmFsdWUsdGhpcy5fdmFsdWUsMCkpe2x0LmNsb25lKHRoaXMudmFsdWUsdGhpcy5fdmFsdWUpO2xldCB0PWx0LnRvQXJyYXkodGhpcy52YWx1ZSwkJCk7dGhpcy5fZ2wudW5pZm9ybU1hdHJpeDNmdih0aGlzLl9sb2NhdGlvbiwhMSx0KX19O3R0dD1uZXcgRmxvYXQzMkFycmF5KDE2KTtxRC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7aWYoIWF0LmVxdWFsc0FycmF5KHRoaXMudmFsdWUsdGhpcy5fdmFsdWUsMCkpe2F0LmNsb25lKHRoaXMudmFsdWUsdGhpcy5fdmFsdWUpO2xldCB0PWF0LnRvQXJyYXkodGhpcy52YWx1ZSx0dHQpO3RoaXMuX2dsLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5fbG9jYXRpb24sITEsdCl9fTskRD1YJH0pO2Z1bmN0aW9uIGV0dCh0LGUsaSxuKXtzd2l0Y2goZS50eXBlKXtjYXNlIHQuRkxPQVQ6cmV0dXJuIG5ldyBlTSh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfVkVDMjpyZXR1cm4gbmV3IGlNKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9WRUMzOnJldHVybiBuZXcgbk0odCxlLGksbik7Y2FzZSB0LkZMT0FUX1ZFQzQ6cmV0dXJuIG5ldyBzTSh0LGUsaSxuKTtjYXNlIHQuU0FNUExFUl8yRDpjYXNlIHQuU0FNUExFUl9DVUJFOnJldHVybiBuZXcgU1QodCxlLGksbik7Y2FzZSB0LklOVDpjYXNlIHQuQk9PTDpyZXR1cm4gbmV3IG9NKHQsZSxpLG4pO2Nhc2UgdC5JTlRfVkVDMjpjYXNlIHQuQk9PTF9WRUMyOnJldHVybiBuZXcgck0odCxlLGksbik7Y2FzZSB0LklOVF9WRUMzOmNhc2UgdC5CT09MX1ZFQzM6cmV0dXJuIG5ldyBhTSh0LGUsaSxuKTtjYXNlIHQuSU5UX1ZFQzQ6Y2FzZSB0LkJPT0xfVkVDNDpyZXR1cm4gbmV3IEFNKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9NQVQyOnJldHVybiBuZXcgaE0odCxlLGksbik7Y2FzZSB0LkZMT0FUX01BVDM6cmV0dXJuIG5ldyBjTSh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfTUFUNDpyZXR1cm4gbmV3IGxNKHQsZSxpLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IGtlKGBVbnJlY29nbml6ZWQgdW5pZm9ybSB0eXBlOiAke2UudHlwZX0gZm9yIHVuaWZvcm0gIiR7aX0iLmApfX1mdW5jdGlvbiBlTSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249blswXX1mdW5jdGlvbiBpTSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMqMiksdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1uWzBdfWZ1bmN0aW9uIG5NKHQsZSxpLG4pe2xldCBzPW4ubGVuZ3RoO3RoaXMubmFtZT1pLHRoaXMudmFsdWU9bmV3IEFycmF5KHMpLHRoaXMuX3ZhbHVlPW5ldyBGbG9hdDMyQXJyYXkocyozKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gc00odCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEZsb2F0MzJBcnJheShzKjQpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249blswXX1mdW5jdGlvbiBTVCh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb25zPW4sdGhpcy50ZXh0dXJlVW5pdEluZGV4PXZvaWQgMH1mdW5jdGlvbiBvTSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgSW50MzJBcnJheShzKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gck0odCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEludDMyQXJyYXkocyoyKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gYU0odCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEludDMyQXJyYXkocyozKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gQU0odCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEludDMyQXJyYXkocyo0KSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gaE0odCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEZsb2F0MzJBcnJheShzKjQpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249blswXX1mdW5jdGlvbiBjTSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMqOSksdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1uWzBdfWZ1bmN0aW9uIGxNKHQsZSxpLG4pe2xldCBzPW4ubGVuZ3RoO3RoaXMubmFtZT1pLHRoaXMudmFsdWU9bmV3IEFycmF5KHMpLHRoaXMuX3ZhbHVlPW5ldyBGbG9hdDMyQXJyYXkocyoxNiksdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1uWzBdfXZhciBkTSxtTT1PKCgpPT57WGUoKTtIdCgpO1ZzKCk7UW4oKTttdCgpO1Z0KCk7ZGMoKTtkbigpO0ZpKCk7UHMoKTtlTS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy52YWx1ZSxlPXQubGVuZ3RoLGk9dGhpcy5fdmFsdWUsbj0hMTtmb3IobGV0IHM9MDtzPGU7KytzKXtsZXQgbz10W3NdO28hPT1pW3NdJiYoaVtzXT1vLG49ITApfW4mJnRoaXMuX2dsLnVuaWZvcm0xZnYodGhpcy5fbG9jYXRpb24saSl9O2lNLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO250LmVxdWFsc0FycmF5KHIsaSxzKXx8KG50LnBhY2socixpLHMpLG49ITApLHMrPTJ9biYmdGhpcy5fZ2wudW5pZm9ybTJmdih0aGlzLl9sb2NhdGlvbixpKX07bk0ucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITEscz0wO2ZvcihsZXQgbz0wO288ZTsrK28pe2xldCByPXRbb107aWYobShyLnJlZCkpKHIucmVkIT09aVtzXXx8ci5ncmVlbiE9PWlbcysxXXx8ci5ibHVlIT09aVtzKzJdKSYmKGlbc109ci5yZWQsaVtzKzFdPXIuZ3JlZW4saVtzKzJdPXIuYmx1ZSxuPSEwKTtlbHNlIGlmKG0oci54KSlsLmVxdWFsc0FycmF5KHIsaSxzKXx8KGwucGFjayhyLGkscyksbj0hMCk7ZWxzZSB0aHJvdyBuZXcgWSgiSW52YWxpZCB2ZWMzIHZhbHVlLiIpO3MrPTN9biYmdGhpcy5fZ2wudW5pZm9ybTNmdih0aGlzLl9sb2NhdGlvbixpKX07c00ucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITEscz0wO2ZvcihsZXQgbz0wO288ZTsrK28pe2xldCByPXRbb107aWYobShyLnJlZCkpWnQuZXF1YWxzQXJyYXkocixpLHMpfHwoWnQucGFjayhyLGkscyksbj0hMCk7ZWxzZSBpZihtKHIueCkpaWUuZXF1YWxzQXJyYXkocixpLHMpfHwoaWUucGFjayhyLGkscyksbj0hMCk7ZWxzZSB0aHJvdyBuZXcgWSgiSW52YWxpZCB2ZWM0IHZhbHVlLiIpO3MrPTR9biYmdGhpcy5fZ2wudW5pZm9ybTRmdih0aGlzLl9sb2NhdGlvbixpKX07U1QucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsLGU9dC5URVhUVVJFMCt0aGlzLnRleHR1cmVVbml0SW5kZXgsaT10aGlzLnZhbHVlLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuOysrcyl7bGV0IG89aVtzXTt0LmFjdGl2ZVRleHR1cmUoZStzKSx0LmJpbmRUZXh0dXJlKG8uX3RhcmdldCxvLl90ZXh0dXJlKX19O1NULnByb3RvdHlwZS5fc2V0U2FtcGxlcj1mdW5jdGlvbih0KXt0aGlzLnRleHR1cmVVbml0SW5kZXg9dDtsZXQgZT10aGlzLl9sb2NhdGlvbnMsaT1lLmxlbmd0aDtmb3IobGV0IG49MDtuPGk7KytuKXtsZXQgcz10K247dGhpcy5fZ2wudW5pZm9ybTFpKGVbbl0scyl9cmV0dXJuIHQraX07b00ucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITE7Zm9yKGxldCBzPTA7czxlOysrcyl7bGV0IG89dFtzXTtvIT09aVtzXSYmKGlbc109byxuPSEwKX1uJiZ0aGlzLl9nbC51bmlmb3JtMWl2KHRoaXMuX2xvY2F0aW9uLGkpfTtyTS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy52YWx1ZSxlPXQubGVuZ3RoLGk9dGhpcy5fdmFsdWUsbj0hMSxzPTA7Zm9yKGxldCBvPTA7bzxlOysrbyl7bGV0IHI9dFtvXTtudC5lcXVhbHNBcnJheShyLGkscyl8fChudC5wYWNrKHIsaSxzKSxuPSEwKSxzKz0yfW4mJnRoaXMuX2dsLnVuaWZvcm0yaXYodGhpcy5fbG9jYXRpb24saSl9O2FNLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO2wuZXF1YWxzQXJyYXkocixpLHMpfHwobC5wYWNrKHIsaSxzKSxuPSEwKSxzKz0zfW4mJnRoaXMuX2dsLnVuaWZvcm0zaXYodGhpcy5fbG9jYXRpb24saSl9O0FNLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO2llLmVxdWFsc0FycmF5KHIsaSxzKXx8KGllLnBhY2socixpLHMpLG49ITApLHMrPTR9biYmdGhpcy5fZ2wudW5pZm9ybTRpdih0aGlzLl9sb2NhdGlvbixpKX07aE0ucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITEscz0wO2ZvcihsZXQgbz0wO288ZTsrK28pe2xldCByPXRbb107SG4uZXF1YWxzQXJyYXkocixpLHMpfHwoSG4ucGFjayhyLGkscyksbj0hMCkscys9NH1uJiZ0aGlzLl9nbC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuX2xvY2F0aW9uLCExLGkpfTtjTS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy52YWx1ZSxlPXQubGVuZ3RoLGk9dGhpcy5fdmFsdWUsbj0hMSxzPTA7Zm9yKGxldCBvPTA7bzxlOysrbyl7bGV0IHI9dFtvXTtsdC5lcXVhbHNBcnJheShyLGkscyl8fChsdC5wYWNrKHIsaSxzKSxuPSEwKSxzKz05fW4mJnRoaXMuX2dsLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5fbG9jYXRpb24sITEsaSl9O2xNLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO2F0LmVxdWFsc0FycmF5KHIsaSxzKXx8KGF0LnBhY2socixpLHMpLG49ITApLHMrPTE2fW4mJnRoaXMuX2dsLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5fbG9jYXRpb24sITEsaSl9O2RNPWV0dH0pO2Z1bmN0aW9uIGFoKHQpe2xldCBlPXQudmVydGV4U2hhZGVyVGV4dCxpPXQuZnJhZ21lbnRTaGFkZXJUZXh0O3R5cGVvZiBzcGVjdG9yPCJ1IiYmKGU9ZS5yZXBsYWNlKC9eI2xpbmUvZ20sIi8vI2xpbmUiKSxpPWkucmVwbGFjZSgvXiNsaW5lL2dtLCIvLyNsaW5lIikpO2xldCBuPW50dChlLGkpO3RoaXMuX2dsPXQuZ2wsdGhpcy5fbG9nU2hhZGVyQ29tcGlsYXRpb249dC5sb2dTaGFkZXJDb21waWxhdGlvbix0aGlzLl9kZWJ1Z1NoYWRlcnM9dC5kZWJ1Z1NoYWRlcnMsdGhpcy5fYXR0cmlidXRlTG9jYXRpb25zPXQuYXR0cmlidXRlTG9jYXRpb25zLHRoaXMuX3Byb2dyYW09dm9pZCAwLHRoaXMuX251bWJlck9mVmVydGV4QXR0cmlidXRlcz12b2lkIDAsdGhpcy5fdmVydGV4QXR0cmlidXRlcz12b2lkIDAsdGhpcy5fdW5pZm9ybXNCeU5hbWU9dm9pZCAwLHRoaXMuX3VuaWZvcm1zPXZvaWQgMCx0aGlzLl9hdXRvbWF0aWNVbmlmb3Jtcz12b2lkIDAsdGhpcy5fbWFudWFsVW5pZm9ybXM9dm9pZCAwLHRoaXMuX2R1cGxpY2F0ZVVuaWZvcm1OYW1lcz1uLmR1cGxpY2F0ZVVuaWZvcm1OYW1lcyx0aGlzLl9jYWNoZWRTaGFkZXI9dm9pZCAwLHRoaXMubWF4aW11bVRleHR1cmVVbml0SW5kZXg9dm9pZCAwLHRoaXMuX3ZlcnRleFNoYWRlclNvdXJjZT10LnZlcnRleFNoYWRlclNvdXJjZSx0aGlzLl92ZXJ0ZXhTaGFkZXJUZXh0PXQudmVydGV4U2hhZGVyVGV4dCx0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZT10LmZyYWdtZW50U2hhZGVyU291cmNlLHRoaXMuX2ZyYWdtZW50U2hhZGVyVGV4dD1uLmZyYWdtZW50U2hhZGVyVGV4dCx0aGlzLmlkPWl0dCsrfWZ1bmN0aW9uIGZNKHQpe2xldCBlPVtdLGk9dC5tYXRjaCgvdW5pZm9ybS4qPyg/IVtee10qfSkoPz1bPVxbO10pL2cpO2lmKG0oaSkpe2xldCBuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjtzKyspe2xldCBvPWlbc10udHJpbSgpLHI9by5zbGljZShvLmxhc3RJbmRleE9mKCIgIikrMSk7ZS5wdXNoKHIpfX1yZXR1cm4gZX1mdW5jdGlvbiBudHQodCxlKXtsZXQgaT17fTtpZighZW4uaGlnaHBGbG9hdFN1cHBvcnRlZHx8IWVuLmhpZ2hwSW50U3VwcG9ydGVkKXtsZXQgbixzLG8scixhPWZNKHQpLGg9Zk0oZSksQT1hLmxlbmd0aCxkPWgubGVuZ3RoO2ZvcihuPTA7bjxBO24rKylmb3Iocz0wO3M8ZDtzKyspaWYoYVtuXT09PWhbc10pe289YVtuXSxyPWBjem1fbWVkaXVtcF8ke299YDtsZXQgZj1uZXcgUmVnRXhwKGAke299XFxiYCwiZyIpO2U9ZS5yZXBsYWNlKGYsciksaVtyXT1vfX1yZXR1cm57ZnJhZ21lbnRTaGFkZXJUZXh0OmUsZHVwbGljYXRlVW5pZm9ybU5hbWVzOml9fWZ1bmN0aW9uIHN0dCh0LGUpe2xldCBpPWUuX3ZlcnRleFNoYWRlclRleHQsbj1lLl9mcmFnbWVudFNoYWRlclRleHQscz10LmNyZWF0ZVNoYWRlcih0LlZFUlRFWF9TSEFERVIpO3Quc2hhZGVyU291cmNlKHMsaSksdC5jb21waWxlU2hhZGVyKHMpO2xldCBvPXQuY3JlYXRlU2hhZGVyKHQuRlJBR01FTlRfU0hBREVSKTt0LnNoYWRlclNvdXJjZShvLG4pLHQuY29tcGlsZVNoYWRlcihvKTtsZXQgcj10LmNyZWF0ZVByb2dyYW0oKTt0LmF0dGFjaFNoYWRlcihyLHMpLHQuYXR0YWNoU2hhZGVyKHIsbyk7bGV0IGE9ZS5fYXR0cmlidXRlTG9jYXRpb25zO2lmKG0oYSkpZm9yKGxldCBFIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShFKSYmdC5iaW5kQXR0cmliTG9jYXRpb24ocixhW0VdLEUpO3QubGlua1Byb2dyYW0ocik7bGV0IGg7aWYodC5nZXRQcm9ncmFtUGFyYW1ldGVyKHIsdC5MSU5LX1NUQVRVUykpcmV0dXJuIGUuX2xvZ1NoYWRlckNvbXBpbGF0aW9uJiYoaD10LmdldFNoYWRlckluZm9Mb2cocyksbShoKSYmaC5sZW5ndGg+MCYmY29uc29sZS5sb2coYCR7UkF9VmVydGV4IHNoYWRlciBjb21waWxlIGxvZzogJHtofWApLGg9dC5nZXRTaGFkZXJJbmZvTG9nKG8pLG0oaCkmJmgubGVuZ3RoPjAmJmNvbnNvbGUubG9nKGAke1JBfUZyYWdtZW50IHNoYWRlciBjb21waWxlIGxvZzogJHtofWApLGg9dC5nZXRQcm9ncmFtSW5mb0xvZyhyKSxtKGgpJiZoLmxlbmd0aD4wJiZjb25zb2xlLmxvZyhgJHtSQX1TaGFkZXIgcHJvZ3JhbSBsaW5rIGxvZzogJHtofWApKSx0LmRlbGV0ZVNoYWRlcihzKSx0LmRlbGV0ZVNoYWRlcihvKSxyO2xldCBBLGQ9ZS5fZGVidWdTaGFkZXJzO3Rocm93IHQuZ2V0U2hhZGVyUGFyYW1ldGVyKG8sdC5DT01QSUxFX1NUQVRVUyk/dC5nZXRTaGFkZXJQYXJhbWV0ZXIocyx0LkNPTVBJTEVfU1RBVFVTKT8oaD10LmdldFByb2dyYW1JbmZvTG9nKHIpLGNvbnNvbGUuZXJyb3IoYCR7UkF9U2hhZGVyIHByb2dyYW0gbGluayBsb2c6ICR7aH1gKSxmKHMsInZlcnRleCIpLGYobywiZnJhZ21lbnQiKSxBPWBQcm9ncmFtIGZhaWxlZCB0byBsaW5rLiAgTGluayBsb2c6ICR7aH1gKTooaD10LmdldFNoYWRlckluZm9Mb2cocyksY29uc29sZS5lcnJvcihgJHtSQX1WZXJ0ZXggc2hhZGVyIGNvbXBpbGUgbG9nOiAke2h9YCksY29uc29sZS5lcnJvcihgJHtSQX0gVmVydGV4IHNoYWRlciBzb3VyY2U6CiR7aX1gKSxBPWBWZXJ0ZXggc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiAgQ29tcGlsZSBsb2c6ICR7aH1gKTooaD10LmdldFNoYWRlckluZm9Mb2cobyksY29uc29sZS5lcnJvcihgJHtSQX1GcmFnbWVudCBzaGFkZXIgY29tcGlsZSBsb2c6ICR7aH1gKSxjb25zb2xlLmVycm9yKGAke1JBfSBGcmFnbWVudCBzaGFkZXIgc291cmNlOgoke259YCksQT1gRnJhZ21lbnQgc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiAgQ29tcGlsZSBsb2c6ICR7aH1gKSx0LmRlbGV0ZVNoYWRlcihzKSx0LmRlbGV0ZVNoYWRlcihvKSx0LmRlbGV0ZVByb2dyYW0ociksbmV3IGtlKEEpO2Z1bmN0aW9uIGYoRSxfKXtpZighbShkKSlyZXR1cm47bGV0IFI9ZC5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKEUpO2lmKFI9PT0iIil7Y29uc29sZS5lcnJvcihgJHtSQX0ke199IHNoYWRlciB0cmFuc2xhdGlvbiBmYWlsZWQuYCk7cmV0dXJufWNvbnNvbGUuZXJyb3IoYCR7UkF9VHJhbnNsYXRlZCAke199IHNoYWRlclNvdXJjZToKJHtSfWApfX1mdW5jdGlvbiBvdHQodCxlLGkpe2xldCBuPXt9O2ZvcihsZXQgcz0wO3M8aTsrK3Mpe2xldCBvPXQuZ2V0QWN0aXZlQXR0cmliKGUscykscj10LmdldEF0dHJpYkxvY2F0aW9uKGUsby5uYW1lKTtuW28ubmFtZV09e25hbWU6by5uYW1lLHR5cGU6by50eXBlLGluZGV4OnJ9fXJldHVybiBufWZ1bmN0aW9uIHJ0dCh0LGUpe2xldCBpPXt9LG49W10scz1bXSxvPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLHQuQUNUSVZFX1VOSUZPUk1TKTtmb3IobGV0IHI9MDtyPG87KytyKXtsZXQgYT10LmdldEFjdGl2ZVVuaWZvcm0oZSxyKSxoPSJbMF0iLEE9YS5uYW1lLmluZGV4T2YoaCxhLm5hbWUubGVuZ3RoLWgubGVuZ3RoKSE9PS0xP2EubmFtZS5zbGljZSgwLGEubmFtZS5sZW5ndGgtMyk6YS5uYW1lO2lmKEEuaW5kZXhPZigiZ2xfIikhPT0wKWlmKGEubmFtZS5pbmRleE9mKCJbIik8MCl7bGV0IGQ9dC5nZXRVbmlmb3JtTG9jYXRpb24oZSxBKTtpZihkIT09bnVsbCl7bGV0IGY9JEQodCxhLEEsZCk7aVtBXT1mLG4ucHVzaChmKSxmLl9zZXRTYW1wbGVyJiZzLnB1c2goZil9fWVsc2V7bGV0IGQsZixFLF8sUj1BLmluZGV4T2YoIlsiKTtpZihSPj0wKXtpZihkPWlbQS5zbGljZSgwLFIpXSwhbShkKSljb250aW51ZTtmPWQuX2xvY2F0aW9ucyxmLmxlbmd0aDw9MSYmKEU9ZC52YWx1ZSxfPXQuZ2V0VW5pZm9ybUxvY2F0aW9uKGUsQSksXyE9PW51bGwmJihmLnB1c2goXyksRS5wdXNoKHQuZ2V0VW5pZm9ybShlLF8pKSkpfWVsc2V7Zj1bXTtmb3IobGV0IEk9MDtJPGEuc2l6ZTsrK0kpXz10LmdldFVuaWZvcm1Mb2NhdGlvbihlLGAke0F9WyR7SX1dYCksXyE9PW51bGwmJmYucHVzaChfKTtkPWRNKHQsYSxBLGYpLGlbQV09ZCxuLnB1c2goZCksZC5fc2V0U2FtcGxlciYmcy5wdXNoKGQpfX19cmV0dXJue3VuaWZvcm1zQnlOYW1lOmksdW5pZm9ybXM6bixzYW1wbGVyVW5pZm9ybXM6c319ZnVuY3Rpb24gYXR0KHQsZSl7bGV0IGk9W10sbj1bXTtmb3IobGV0IHMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHMpKXtsZXQgbz1lW3NdLHI9cyxhPXQuX2R1cGxpY2F0ZVVuaWZvcm1OYW1lc1tyXTttKGEpJiYoby5uYW1lPWEscj1hKTtsZXQgaD1VbVtyXTttKGgpP2kucHVzaCh7dW5pZm9ybTpvLGF1dG9tYXRpY1VuaWZvcm06aH0pOm4ucHVzaChvKX1yZXR1cm57YXV0b21hdGljVW5pZm9ybXM6aSxtYW51YWxVbmlmb3JtczpufX1mdW5jdGlvbiBBdHQodCxlLGkpe3QudXNlUHJvZ3JhbShlKTtsZXQgbj0wLHM9aS5sZW5ndGg7Zm9yKGxldCBvPTA7bzxzOysrbyluPWlbb10uX3NldFNhbXBsZXIobik7cmV0dXJuIHQudXNlUHJvZ3JhbShudWxsKSxufWZ1bmN0aW9uIGNJKHQpe20odC5fcHJvZ3JhbSl8fEVNKHQpfWZ1bmN0aW9uIEVNKHQpe2xldCBlPXQuX3Byb2dyYW0saT10Ll9nbCxuPXN0dChpLHQsdC5fZGVidWdTaGFkZXJzKSxzPWkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLGkuQUNUSVZFX0FUVFJJQlVURVMpLG89cnR0KGksbikscj1hdHQodCxvLnVuaWZvcm1zQnlOYW1lKTt0Ll9wcm9ncmFtPW4sdC5fbnVtYmVyT2ZWZXJ0ZXhBdHRyaWJ1dGVzPXMsdC5fdmVydGV4QXR0cmlidXRlcz1vdHQoaSxuLHMpLHQuX3VuaWZvcm1zQnlOYW1lPW8udW5pZm9ybXNCeU5hbWUsdC5fdW5pZm9ybXM9by51bmlmb3Jtcyx0Ll9hdXRvbWF0aWNVbmlmb3Jtcz1yLmF1dG9tYXRpY1VuaWZvcm1zLHQuX21hbnVhbFVuaWZvcm1zPXIubWFudWFsVW5pZm9ybXMsdC5tYXhpbXVtVGV4dHVyZVVuaXRJbmRleD1BdHQoaSxuLG8uc2FtcGxlclVuaWZvcm1zKSxlJiZ0Ll9nbC5kZWxldGVQcm9ncmFtKGUpLHR5cGVvZiBzcGVjdG9yPCJ1IiYmKHQuX3Byb2dyYW0uX19TUEVDVE9SX3JlYnVpbGRQcm9ncmFtPWZ1bmN0aW9uKGEsaCxBLGQpe2xldCBmPXQuX3ZlcnRleFNoYWRlclRleHQsRT10Ll9mcmFnbWVudFNoYWRlclRleHQsXz0vICEgPSAvZzt0Ll92ZXJ0ZXhTaGFkZXJUZXh0PWEucmVwbGFjZShfLCIgIT0gIiksdC5fZnJhZ21lbnRTaGFkZXJUZXh0PWgucmVwbGFjZShfLCIgIT0gIik7dHJ5e0VNKHQpLEEodC5fcHJvZ3JhbSl9Y2F0Y2goUil7dC5fdmVydGV4U2hhZGVyVGV4dD1mLHQuX2ZyYWdtZW50U2hhZGVyVGV4dD1FO2xldCBDPS8oPzpDb21waWxlfExpbmspIGVycm9yOiAoW15dKikvLmV4ZWMoUi5tZXNzYWdlKTtkKEM/Q1sxXTpSLm1lc3NhZ2UpfX0pfXZhciBpdHQsUkEsRXMsUW09TygoKT0+e2FlKCk7YnQoKTttdCgpO1dzKCk7VnQoKTtQcygpO0ZUKCk7Z2EoKTt0TSgpO21NKCk7aXR0PTA7YWguZnJvbUNhY2hlPWZ1bmN0aW9uKHQpe3JldHVybiB0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCksdC5jb250ZXh0LnNoYWRlckNhY2hlLmdldFNoYWRlclByb2dyYW0odCl9O2FoLnJlcGxhY2VDYWNoZT1mdW5jdGlvbih0KXtyZXR1cm4gdD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpLHQuY29udGV4dC5zaGFkZXJDYWNoZS5yZXBsYWNlU2hhZGVyUHJvZ3JhbSh0KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYWgucHJvdG90eXBlLHt2ZXJ0ZXhTaGFkZXJTb3VyY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2V9fSxmcmFnbWVudFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYWdtZW50U2hhZGVyU291cmNlfX0sdmVydGV4QXR0cmlidXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNJKHRoaXMpLHRoaXMuX3ZlcnRleEF0dHJpYnV0ZXN9fSxudW1iZXJPZlZlcnRleEF0dHJpYnV0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjSSh0aGlzKSx0aGlzLl9udW1iZXJPZlZlcnRleEF0dHJpYnV0ZXN9fSxhbGxVbmlmb3Jtczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNJKHRoaXMpLHRoaXMuX3VuaWZvcm1zQnlOYW1lfX19KTtSQT0iW0Nlc2l1bSBXZWJHTF0gIjthaC5wcm90b3R5cGUuX2JpbmQ9ZnVuY3Rpb24oKXtjSSh0aGlzKSx0aGlzLl9nbC51c2VQcm9ncmFtKHRoaXMuX3Byb2dyYW0pfTthaC5wcm90b3R5cGUuX3NldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbixzO2lmKG0odCkpe2xldCBhPXRoaXMuX21hbnVhbFVuaWZvcm1zO2ZvcihuPWEubGVuZ3RoLHM9MDtzPG47KytzKXtsZXQgaD1hW3NdO2gudmFsdWU9dFtoLm5hbWVdKCl9fWxldCBvPXRoaXMuX2F1dG9tYXRpY1VuaWZvcm1zO2ZvcihuPW8ubGVuZ3RoLHM9MDtzPG47KytzKXtsZXQgYT1vW3NdO2EudW5pZm9ybS52YWx1ZT1hLmF1dG9tYXRpY1VuaWZvcm0uZ2V0VmFsdWUoZSl9bGV0IHI9dGhpcy5fdW5pZm9ybXM7Zm9yKG49ci5sZW5ndGgscz0wO3M8bjsrK3MpcltzXS5zZXQoKTtpZihpKXtsZXQgYT10aGlzLl9nbCxoPXRoaXMuX3Byb2dyYW07aWYoYS52YWxpZGF0ZVByb2dyYW0oaCksIWEuZ2V0UHJvZ3JhbVBhcmFtZXRlcihoLGEuVkFMSURBVEVfU1RBVFVTKSl0aHJvdyBuZXcgWShgUHJvZ3JhbSB2YWxpZGF0aW9uIGZhaWxlZC4gIFByb2dyYW0gaW5mbyBsb2c6ICR7YS5nZXRQcm9ncmFtSW5mb0xvZyhoKX1gKX19O2FoLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTthaC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2NhY2hlZFNoYWRlci5jYWNoZS5yZWxlYXNlU2hhZGVyUHJvZ3JhbSh0aGlzKX07YWgucHJvdG90eXBlLmZpbmFsRGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nbC5kZWxldGVQcm9ncmFtKHRoaXMuX3Byb2dyYW0pLGxpKHRoaXMpfTtFcz1haH0pO3ZhciBfTSxSTT1PKCgpPT57X009YC8qKgogKiBBIGJ1aWx0LWluIEdMU0wgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQgZm9yIGNvbnZlcnRpbmcgcmFkaWFucyB0byBkZWdyZWVzLgogKgogKiBAYWxpYXMgY3ptX2RlZ3JlZXNQZXJSYWRpYW4KICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguREVHUkVFU19QRVJfUkFESUFOCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX2RlZ3JlZXNQZXJSYWRpYW4gPSAuLi47CiAqCiAqIC8vIEV4YW1wbGUKICogZmxvYXQgZGVnID0gY3ptX2RlZ3JlZXNQZXJSYWRpYW4gKiByYWQ7CiAqLwpjb25zdCBmbG9hdCBjem1fZGVncmVlc1BlclJhZGlhbiA9IDU3LjI5NTc3OTUxMzA4MjMyOwpgfSk7dmFyIFpNLElNPU8oKCk9PntaTT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCB2ZWMyIGNvbnN0YW50IGZvciBkZWZpbmluZyB0aGUgZGVwdGggcmFuZ2UuCiAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGEgYnVnIHdoZXJlIElFMTEgZG9lcyBub3QgaW1wbGVtZW50IGdsX0RlcHRoUmFuZ2UuCiAqCiAqIEBhbGlhcyBjem1fZGVwdGhSYW5nZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogZmxvYXQgZGVwdGhSYW5nZU5lYXIgPSBjem1fZGVwdGhSYW5nZS5uZWFyOwogKiBmbG9hdCBkZXB0aFJhbmdlRmFyID0gY3ptX2RlcHRoUmFuZ2UuZmFyOwogKgogKi8KY29uc3QgY3ptX2RlcHRoUmFuZ2VTdHJ1Y3QgY3ptX2RlcHRoUmFuZ2UgPSBjem1fZGVwdGhSYW5nZVN0cnVjdCgwLjAsIDEuMCk7CmB9KTt2YXIgcE0sdU09TygoKT0+e3BNPWAvKioKICogMC4xCiAqCiAqIEBuYW1lIGN6bV9lcHNpbG9uMQogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fZXBzaWxvbjEgPSAwLjE7CmB9KTt2YXIgQ00sZ009TygoKT0+e0NNPWAvKioKICogMC4wMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjIKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb24yID0gMC4wMTsKYH0pO3ZhciBUTSxOTT1PKCgpPT57VE09YC8qKgogKiAwLjAwMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjMKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb24zID0gMC4wMDE7CmB9KTt2YXIgYk0sRk09TygoKT0+e2JNPWAvKioKICogMC4wMDAxCiAqCiAqIEBuYW1lIGN6bV9lcHNpbG9uNAogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fZXBzaWxvbjQgPSAwLjAwMDE7CmB9KTt2YXIgWU0sU009TygoKT0+e1lNPWAvKioKICogMC4wMDAwMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjUKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb241ID0gMC4wMDAwMTsKYH0pO3ZhciBPTSxWTT1PKCgpPT57T009YC8qKgogKiAwLjAwMDAwMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjYKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb242ID0gMC4wMDAwMDE7CmB9KTt2YXIgR00sQk09TygoKT0+e0dNPWAvKioKICogMC4wMDAwMDAxCiAqCiAqIEBuYW1lIGN6bV9lcHNpbG9uNwogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fZXBzaWxvbjcgPSAwLjAwMDAwMDE7CmB9KTt2YXIgV00sRE09TygoKT0+e1dNPWAvKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1faW5maW5pdHkKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2luZmluaXR5ID0gNTkwNjM3NjI3MjAwMC4wOyAgLy8gRGlzdGFuY2UgZnJvbSB0aGUgU3VuIHRvIFBsdXRvIGluIG1ldGVycy4gIFRPRE86IFdoYXQgaXMgYmVzdCBnaXZlbiBsb3dwLCBtZWRpdW1wLCBhbmQgaGlnaHA/CmB9KTt2YXIgTU0sVU09TygoKT0+e01NPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT4xL3BpPC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9vbmVPdmVyUGkKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguT05FX09WRVJfUEkKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fb25lT3ZlclBpID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gMS4wIC8gY3ptX29uZU92ZXJQaTsKICovCmNvbnN0IGZsb2F0IGN6bV9vbmVPdmVyUGkgPSAwLjMxODMwOTg4NjE4Mzc5MDc7CmB9KTt2YXIgUU0sa009TygoKT0+e1FNPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT4xLzJwaTwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fb25lT3ZlclR3b1BpCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBDZXNpdW1NYXRoLk9ORV9PVkVSX1RXT19QSQogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV9vbmVPdmVyVHdvUGkgPSAuLi47CiAqCiAqIC8vIEV4YW1wbGUKICogZmxvYXQgcGkgPSAyLjAgKiBjem1fb25lT3ZlclR3b1BpOwogKi8KY29uc3QgZmxvYXQgY3ptX29uZU92ZXJUd29QaSA9IDAuMTU5MTU0OTQzMDkxODk1MzU7CmB9KTt2YXIgTE0seU09TygoKT0+e0xNPWAvKioKICogVGhlIGF1dG9tYXRpYyBHTFNMIGNvbnN0YW50IGZvciB7QGxpbmsgUGFzcyNDRVNJVU1fM0RfVElMRX0KICoKICogQG5hbWUgY3ptX3Bhc3NDZXNpdW0zRFRpbGUKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0Nlc2l1bTNEVGlsZSA9IDQuMDsKYH0pO3ZhciB3TSx4TT1PKCgpPT57d009YC8qKgogKiBUaGUgYXV0b21hdGljIEdMU0wgY29uc3RhbnQgZm9yIHtAbGluayBQYXNzI0NFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OfQogKgogKiBAbmFtZSBjem1fcGFzc0Nlc2l1bTNEVGlsZUNsYXNzaWZpY2F0aW9uCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NDZXNpdW0zRFRpbGVDbGFzc2lmaWNhdGlvbiA9IDUuMDsKYH0pO3ZhciBQTSxKTT1PKCgpPT57UE09YC8qKgogKiBUaGUgYXV0b21hdGljIEdMU0wgY29uc3RhbnQgZm9yIHtAbGluayBQYXNzI0NFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OX0lHTk9SRV9TSE9XfQogKgogKiBAbmFtZSBjem1fcGFzc0Nlc2l1bTNEVGlsZUNsYXNzaWZpY2F0aW9uSWdub3JlU2hvdwogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgY3ptX3Bhc3MKICovCmNvbnN0IGZsb2F0IGN6bV9wYXNzQ2VzaXVtM0RUaWxlQ2xhc3NpZmljYXRpb25JZ25vcmVTaG93ID0gNi4wOwpgfSk7dmFyIGpNLEhNPU8oKCk9PntqTT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjQ0xBU1NJRklDQVRJT059CiAqCiAqIEBuYW1lIGN6bV9wYXNzQ2xhc3NpZmljYXRpb24KICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0NsYXNzaWZpY2F0aW9uID0gNy4wOwpgfSk7dmFyIHZNLHpNPU8oKCk9Pnt2TT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjQ09NUFVURX0KICoKICogQG5hbWUgY3ptX3Bhc3NDb21wdXRlCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NDb21wdXRlID0gMS4wOwpgfSk7dmFyIEtNLFhNPU8oKCk9PntLTT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjRU5WSVJPTk1FTlR9CiAqCiAqIEBuYW1lIGN6bV9wYXNzRW52aXJvbm1lbnQKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0Vudmlyb25tZW50ID0gMC4wOwpgfSk7dmFyIHFNLCRNPU8oKCk9PntxTT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjR0xPQkV9CiAqCiAqIEBuYW1lIGN6bV9wYXNzR2xvYmUKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0dsb2JlID0gMi4wOwpgfSk7dmFyIHRVLGVVPU8oKCk9Pnt0VT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjT1BBUVVFfQogKgogKiBAbmFtZSBjem1fcGFzc09wYXF1ZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgY3ptX3Bhc3MKICovCmNvbnN0IGZsb2F0IGN6bV9wYXNzT3BhcXVlID0gNy4wOwpgfSk7dmFyIGlVLG5VPU8oKCk9PntpVT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjT1ZFUkxBWX0KICoKICogQG5hbWUgY3ptX3Bhc3NPdmVybGF5CiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NPdmVybGF5ID0gMTAuMDsKYH0pO3ZhciBzVSxvVT1PKCgpPT57c1U9YC8qKgogKiBUaGUgYXV0b21hdGljIEdMU0wgY29uc3RhbnQgZm9yIHtAbGluayBQYXNzI1RFUlJBSU5fQ0xBU1NJRklDQVRJT059CiAqCiAqIEBuYW1lIGN6bV9wYXNzVGVycmFpbkNsYXNzaWZpY2F0aW9uCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NUZXJyYWluQ2xhc3NpZmljYXRpb24gPSAzLjA7CmB9KTt2YXIgclUsYVU9TygoKT0+e3JVPWAvKioKICogVGhlIGF1dG9tYXRpYyBHTFNMIGNvbnN0YW50IGZvciB7QGxpbmsgUGFzcyNUUkFOU0xVQ0VOVH0KICoKICogQG5hbWUgY3ptX3Bhc3NUcmFuc2x1Y2VudAogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgY3ptX3Bhc3MKICovCmNvbnN0IGZsb2F0IGN6bV9wYXNzVHJhbnNsdWNlbnQgPSA4LjA7CmB9KTt2YXIgQVUsaFU9TygoKT0+e0FVPWAvKioKICogVGhlIGF1dG9tYXRpYyBHTFNMIGNvbnN0YW50IGZvciB7QGxpbmsgUGFzcyNWT1hFTFN9CiAqCiAqIEBuYW1lIGN6bV9wYXNzVm94ZWxzCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NWb3hlbHMgPSA5LjA7CmB9KTt2YXIgY1UsbFU9TygoKT0+e2NVPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT5NYXRoLlBJPC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9waQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5QSQogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV9waSA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCB0d29QaSA9IDIuMCAqIGN6bV9waTsKICovCmNvbnN0IGZsb2F0IGN6bV9waSA9IDMuMTQxNTkyNjUzNTg5NzkzOwpgfSk7dmFyIGRVLG1VPU8oKCk9PntkVT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgPGNvZGU+cGkvNDwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fcGlPdmVyRm91cgogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5QSV9PVkVSX0ZPVVIKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fcGlPdmVyRm91ciA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCBwaSA9IDQuMCAqIGN6bV9waU92ZXJGb3VyOwogKi8KY29uc3QgZmxvYXQgY3ptX3BpT3ZlckZvdXIgPSAwLjc4NTM5ODE2MzM5NzQ0ODM7CmB9KTt2YXIgZlUsRVU9TygoKT0+e2ZVPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT5waS82PC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9waU92ZXJTaXgKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguUElfT1ZFUl9TSVgKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fcGlPdmVyU2l4ID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gNi4wICogY3ptX3BpT3ZlclNpeDsKICovCmNvbnN0IGZsb2F0IGN6bV9waU92ZXJTaXggPSAwLjUyMzU5ODc3NTU5ODI5ODg7CmB9KTt2YXIgX1UsUlU9TygoKT0+e19VPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT5waS8zPC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9waU92ZXJUaHJlZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5QSV9PVkVSX1RIUkVFCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX3BpT3ZlclRocmVlID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gMy4wICogY3ptX3BpT3ZlclRocmVlOwogKi8KY29uc3QgZmxvYXQgY3ptX3BpT3ZlclRocmVlID0gMS4wNDcxOTc1NTExOTY1OTc2OwpgfSk7dmFyIFpVLElVPU8oKCk9PntaVT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgPGNvZGU+cGkvMjwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fcGlPdmVyVHdvCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBDZXNpdW1NYXRoLlBJX09WRVJfVFdPCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX3BpT3ZlclR3byA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCBwaSA9IDIuMCAqIGN6bV9waU92ZXJUd287CiAqLwpjb25zdCBmbG9hdCBjem1fcGlPdmVyVHdvID0gMS41NzA3OTYzMjY3OTQ4OTY2OwpgfSk7dmFyIHBVLHVVPU8oKCk9PntwVT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgY29udmVydGluZyBkZWdyZWVzIHRvIHJhZGlhbnMuCiAqCiAqIEBhbGlhcyBjem1fcmFkaWFuc1BlckRlZ3JlZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5SQURJQU5TX1BFUl9ERUdSRUUKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fcmFkaWFuc1BlckRlZ3JlZSA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCByYWQgPSBjem1fcmFkaWFuc1BlckRlZ3JlZSAqIGRlZzsKICovCmNvbnN0IGZsb2F0IGN6bV9yYWRpYW5zUGVyRGVncmVlID0gMC4wMTc0NTMyOTI1MTk5NDMyOTU7CmB9KTt2YXIgQ1UsZ1U9TygoKT0+e0NVPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSAyRCB7QGxpbmsgU2NlbmVNb2RlfQogKgogKiBAbmFtZSBjem1fc2NlbmVNb2RlMkQKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3CiAqIEBzZWUgY3ptX3NjZW5lTW9kZTNECiAqIEBzZWUgY3ptX3NjZW5lTW9kZU1vcnBoaW5nCiAqLwpjb25zdCBmbG9hdCBjem1fc2NlbmVNb2RlMkQgPSAyLjA7CmB9KTt2YXIgVFUsTlU9TygoKT0+e1RVPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSAzRCB7QGxpbmsgU2NlbmVNb2RlfQogKgogKiBAbmFtZSBjem1fc2NlbmVNb2RlM0QKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlMkQKICogQHNlZSBjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3CiAqIEBzZWUgY3ptX3NjZW5lTW9kZU1vcnBoaW5nCiAqLwpjb25zdCBmbG9hdCBjem1fc2NlbmVNb2RlM0QgPSAzLjA7CmB9KTt2YXIgYlUsRlU9TygoKT0+e2JVPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSBDb2x1bWJ1cyBWaWV3IHtAbGluayBTY2VuZU1vZGV9CiAqCiAqIEBuYW1lIGN6bV9zY2VuZU1vZGVDb2x1bWJ1c1ZpZXcKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlMkQKICogQHNlZSBjem1fc2NlbmVNb2RlM0QKICogQHNlZSBjem1fc2NlbmVNb2RlTW9ycGhpbmcKICovCmNvbnN0IGZsb2F0IGN6bV9zY2VuZU1vZGVDb2x1bWJ1c1ZpZXcgPSAxLjA7CmB9KTt2YXIgWVUsU1U9TygoKT0+e1lVPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSBNb3JwaGluZyB7QGxpbmsgU2NlbmVNb2RlfQogKgogKiBAbmFtZSBjem1fc2NlbmVNb2RlTW9ycGhpbmcKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlMkQKICogQHNlZSBjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3CiAqIEBzZWUgY3ptX3NjZW5lTW9kZTNECiAqLwpjb25zdCBmbG9hdCBjem1fc2NlbmVNb2RlTW9ycGhpbmcgPSAwLjA7CmB9KTt2YXIgT1UsVlU9TygoKT0+e09VPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciBvbmUgc29sYXIgcmFkaXVzLgogKgogKiBAYWxpYXMgY3ptX3NvbGFyUmFkaXVzCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBDZXNpdW1NYXRoLlNPTEFSX1JBRElVUwogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV9zb2xhclJhZGl1cyA9IC4uLjsKICovCmNvbnN0IGZsb2F0IGN6bV9zb2xhclJhZGl1cyA9IDY5NTUwMDAwMC4wOwpgfSk7dmFyIEdVLEJVPU8oKCk9PntHVT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgPGNvZGU+M3BpLzI8L2NvZGU+LgogKgogKiBAYWxpYXMgY3ptX3RocmVlUGlPdmVyMgogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5USFJFRV9QSV9PVkVSX1RXTwogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV90aHJlZVBpT3ZlcjIgPSAuLi47CiAqCiAqIC8vIEV4YW1wbGUKICogZmxvYXQgcGkgPSAoMi4wIC8gMy4wKSAqIGN6bV90aHJlZVBpT3ZlcjI7CiAqLwpjb25zdCBmbG9hdCBjem1fdGhyZWVQaU92ZXIyID0gNC43MTIzODg5ODAzODQ2OTsKYH0pO3ZhciBXVSxEVT1PKCgpPT57V1U9YC8qKgogKiBBIGJ1aWx0LWluIEdMU0wgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQgZm9yIDxjb2RlPjJwaTwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fdHdvUGkKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguVFdPX1BJCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX3R3b1BpID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gY3ptX3R3b1BpIC8gMi4wOwogKi8KY29uc3QgZmxvYXQgY3ptX3R3b1BpID0gNi4yODMxODUzMDcxNzk1ODY7CmB9KTt2YXIgTVUsVVU9TygoKT0+e01VPWAvKioKICogVGhlIG1heGltdW0gbGF0aXR1ZGUsIGluIHJhZGlhbnMsIGJvdGggTm9ydGggYW5kIFNvdXRoLCBzdXBwb3J0ZWQgYnkgYSBXZWIgTWVyY2F0b3IKICogKEVQU0c6Mzg1NykgcHJvamVjdGlvbi4gIFRlY2huaWNhbGx5LCB0aGUgTWVyY2F0b3IgcHJvamVjdGlvbiBpcyBkZWZpbmVkCiAqIGZvciBhbnkgbGF0aXR1ZGUgdXAgdG8gKGJ1dCBub3QgaW5jbHVkaW5nKSA5MCBkZWdyZWVzLCBidXQgaXQgbWFrZXMgc2Vuc2UKICogdG8gY3V0IGl0IG9mZiBzb29uZXIgYmVjYXVzZSBpdCBncm93cyBleHBvbmVudGlhbGx5IHdpdGggaW5jcmVhc2luZyBsYXRpdHVkZS4KICogVGhlIGxvZ2ljIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgY3V0b2ZmIHZhbHVlLCB3aGljaCBpcyB0aGUgb25lIHVzZWQgYnkKICogR29vZ2xlIE1hcHMsIEJpbmcgTWFwcywgYW5kIEVzcmksIGlzIHRoYXQgaXQgbWFrZXMgdGhlIHByb2plY3Rpb24KICogc3F1YXJlLiAgVGhhdCBpcywgdGhlIHJlY3RhbmdsZSBpcyBlcXVhbCBpbiB0aGUgWCBhbmQgWSBkaXJlY3Rpb25zLgogKgogKiBUaGUgY29uc3RhbnQgdmFsdWUgaXMgY29tcHV0ZWQgYXMgZm9sbG93czoKICogICBjem1fcGkgKiAwLjUgLSAoMi4wICogYXRhbihleHAoLWN6bV9waSkpKQogKgogKiBAbmFtZSBjem1fd2ViTWVyY2F0b3JNYXhMYXRpdHVkZQogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fd2ViTWVyY2F0b3JNYXhMYXRpdHVkZSA9IDEuNDg0NDIyMjI5NzQ1MzMyNDsKYH0pO3ZhciBRVSxrVT1PKCgpPT57UVU9YC8qKgogKiBAbmFtZSBjem1fZGVwdGhSYW5nZVN0cnVjdAogKiBAZ2xzbFN0cnVjdAogKi8Kc3RydWN0IGN6bV9kZXB0aFJhbmdlU3RydWN0CnsKICAgIGZsb2F0IG5lYXI7CiAgICBmbG9hdCBmYXI7Cn07CmB9KTt2YXIgTFUseVU9TygoKT0+e0xVPWAvKioKICogSG9sZHMgbWF0ZXJpYWwgaW5mb3JtYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBmb3IgbGlnaHRpbmcuIFJldHVybmVkIGJ5IGFsbCBjem1fZ2V0TWF0ZXJpYWwgZnVuY3Rpb25zLgogKgogKiBAbmFtZSBjem1fbWF0ZXJpYWwKICogQGdsc2xTdHJ1Y3QKICoKICogQHByb3BlcnR5IHt2ZWMzfSBkaWZmdXNlIEluY29taW5nIGxpZ2h0IHRoYXQgc2NhdHRlcnMgZXZlbmx5IGluIGFsbCBkaXJlY3Rpb25zLgogKiBAcHJvcGVydHkge2Zsb2F0fSBzcGVjdWxhciBJbnRlbnNpdHkgb2YgaW5jb21pbmcgbGlnaHQgcmVmbGVjdGluZyBpbiBhIHNpbmdsZSBkaXJlY3Rpb24uCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IHNoaW5pbmVzcyBUaGUgc2hhcnBuZXNzIG9mIHRoZSBzcGVjdWxhciByZWZsZWN0aW9uLiAgSGlnaGVyIHZhbHVlcyBjcmVhdGUgYSBzbWFsbGVyLCBtb3JlIGZvY3VzZWQgc3BlY3VsYXIgaGlnaGxpZ2h0LgogKiBAcHJvcGVydHkge3ZlYzN9IG5vcm1hbCBTdXJmYWNlJ3Mgbm9ybWFsIGluIGV5ZSBjb29yZGluYXRlcy4gSXQgaXMgdXNlZCBmb3IgZWZmZWN0cyBzdWNoIGFzIG5vcm1hbCBtYXBwaW5nLiBUaGUgZGVmYXVsdCBpcyB0aGUgc3VyZmFjZSdzIHVubW9kaWZpZWQgbm9ybWFsLgogKiBAcHJvcGVydHkge3ZlYzN9IGVtaXNzaW9uIExpZ2h0IGVtaXR0ZWQgYnkgdGhlIG1hdGVyaWFsIGVxdWFsbHkgaW4gYWxsIGRpcmVjdGlvbnMuIFRoZSBkZWZhdWx0IGlzIHZlYzMoMC4wKSwgd2hpY2ggZW1pdHMgbm8gbGlnaHQuCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IGFscGhhIEFscGhhIG9mIHRoaXMgbWF0ZXJpYWwuIDAuMCBpcyBjb21wbGV0ZWx5IHRyYW5zcGFyZW50OyAxLjAgaXMgY29tcGxldGVseSBvcGFxdWUuCiAqLwpzdHJ1Y3QgY3ptX21hdGVyaWFsCnsKICAgIHZlYzMgZGlmZnVzZTsKICAgIGZsb2F0IHNwZWN1bGFyOwogICAgZmxvYXQgc2hpbmluZXNzOwogICAgdmVjMyBub3JtYWw7CiAgICB2ZWMzIGVtaXNzaW9uOwogICAgZmxvYXQgYWxwaGE7Cn07CmB9KTt2YXIgd1UseFU9TygoKT0+e3dVPWAvKioKICogVXNlZCBhcyBpbnB1dCB0byBldmVyeSBtYXRlcmlhbCdzIGN6bV9nZXRNYXRlcmlhbCBmdW5jdGlvbi4KICoKICogQG5hbWUgY3ptX21hdGVyaWFsSW5wdXQKICogQGdsc2xTdHJ1Y3QKICoKICogQHByb3BlcnR5IHtmbG9hdH0gcyAxRCB0ZXh0dXJlIGNvb3JkaW5hdGVzLgogKiBAcHJvcGVydHkge3ZlYzJ9IHN0IDJEIHRleHR1cmUgY29vcmRpbmF0ZXMuCiAqIEBwcm9wZXJ0eSB7dmVjM30gc3RyIDNEIHRleHR1cmUgY29vcmRpbmF0ZXMuCiAqIEBwcm9wZXJ0eSB7dmVjM30gbm9ybWFsRUMgVW5wZXJ0dXJiZWQgc3VyZmFjZSBub3JtYWwgaW4gZXllIGNvb3JkaW5hdGVzLgogKiBAcHJvcGVydHkge21hdDN9IHRhbmdlbnRUb0V5ZU1hdHJpeCBNYXRyaXggZm9yIGNvbnZlcnRpbmcgYSB0YW5nZW50IHNwYWNlIG5vcm1hbCB0byBleWUgc3BhY2UuCiAqIEBwcm9wZXJ0eSB7dmVjM30gcG9zaXRpb25Ub0V5ZUVDIFZlY3RvciBmcm9tIHRoZSBmcmFnbWVudCB0byB0aGUgZXllIGluIGV5ZSBjb29yZGluYXRlcy4gIFRoZSBtYWduaXR1ZGUgaXMgdGhlIGRpc3RhbmNlIGluIG1ldGVycyBmcm9tIHRoZSBmcmFnbWVudCB0byB0aGUgZXllLgogKiBAcHJvcGVydHkge2Zsb2F0fSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgdGVycmFpbiBpbiBtZXRlcnMgYWJvdmUgb3IgYmVsb3cgdGhlIFdHUzg0IGVsbGlwc29pZC4gIE9ubHkgYXZhaWxhYmxlIGZvciBnbG9iZSBtYXRlcmlhbHMuCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IHNsb3BlIFRoZSBzbG9wZSBvZiB0aGUgdGVycmFpbiBpbiByYWRpYW5zLiAgMCBpcyBmbGF0OyBwaS8yIGlzIHZlcnRpY2FsLiAgT25seSBhdmFpbGFibGUgZm9yIGdsb2JlIG1hdGVyaWFscy4KICogQHByb3BlcnR5IHtmbG9hdH0gYXNwZWN0IFRoZSBhc3BlY3Qgb2YgdGhlIHRlcnJhaW4gaW4gcmFkaWFucy4gIDAgaXMgRWFzdCwgcGkvMiBpcyBOb3J0aCwgcGkgaXMgV2VzdCwgM3BpLzIgaXMgU291dGguICBPbmx5IGF2YWlsYWJsZSBmb3IgZ2xvYmUgbWF0ZXJpYWxzLgogKi8Kc3RydWN0IGN6bV9tYXRlcmlhbElucHV0CnsKICAgIGZsb2F0IHM7CiAgICB2ZWMyIHN0OwogICAgdmVjMyBzdHI7CiAgICB2ZWMzIG5vcm1hbEVDOwogICAgbWF0MyB0YW5nZW50VG9FeWVNYXRyaXg7CiAgICB2ZWMzIHBvc2l0aW9uVG9FeWVFQzsKICAgIGZsb2F0IGhlaWdodDsKICAgIGZsb2F0IHNsb3BlOwogICAgZmxvYXQgYXNwZWN0Owp9OwpgfSk7dmFyIFBVLEpVPU8oKCk9PntQVT1gLyoqCiAqIFN0cnVjdCBmb3IgcmVwcmVzZW50aW5nIGEgbWF0ZXJpYWwgZm9yIGEge0BsaW5rIE1vZGVsfS4gVGhlIG1vZGVsCiAqIHJlbmRlcmluZyBwaXBlbGluZSB3aWxsIHBhc3MgdGhpcyBzdHJ1Y3QgYmV0d2VlbiBtYXRlcmlhbCwgY3VzdG9tIHNoYWRlcnMsCiAqIGFuZCBsaWdodGluZyBzdGFnZXMuIFRoaXMgaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGgge0BsaW5rIGN6bV9tYXRlcmlhbH0KICogd2hpY2ggaXMgdXNlZCBieSB0aGUgb2xkZXIgRmFicmljIG1hdGVyaWFscyBzeXN0ZW0sIGFsdGhvdWdoIHRoZXkgYXJlIHNpbWlsYXIuCiAqIDxwPgogKiBBbGwgY29sb3IgdmFsdWVzIChkaWZmdXNlLCBzcGVjdWxhciwgZW1pc3NpdmUpIGFyZSBpbiBsaW5lYXIgY29sb3Igc3BhY2UuCiAqIDwvcD4KICoKICogQG5hbWUgY3ptX21vZGVsTWF0ZXJpYWwKICogQGdsc2xTdHJ1Y3QKICoKICogQHByb3BlcnR5IHt2ZWMzfSBkaWZmdXNlIEluY29taW5nIGxpZ2h0IHRoYXQgc2NhdHRlcnMgZXZlbmx5IGluIGFsbCBkaXJlY3Rpb25zLgogKiBAcHJvcGVydHkge2Zsb2F0fSBhbHBoYSBBbHBoYSBvZiB0aGlzIG1hdGVyaWFsLiAwLjAgaXMgY29tcGxldGVseSB0cmFuc3BhcmVudDsgMS4wIGlzIGNvbXBsZXRlbHkgb3BhcXVlLgogKiBAcHJvcGVydHkge3ZlYzN9IHNwZWN1bGFyIENvbG9yIG9mIHJlZmxlY3RlZCBsaWdodCBhdCBub3JtYWwgaW5jaWRlbmNlIGluIFBCUiBtYXRlcmlhbHMuIFRoaXMgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIGYwIGluIHRoZSBsaXRlcmF0dXJlLgogKiBAcHJvcGVydHkge2Zsb2F0fSByb3VnaG5lc3MgQSBudW1iZXIgZnJvbSAwLjAgdG8gMS4wIHJlcHJlc2VudGluZyBob3cgcm91Z2ggdGhlIHN1cmZhY2UgaXMuIFZhbHVlcyBuZWFyIDAuMCBwcm9kdWNlIGdsb3NzeSBzdXJmYWNlcywgd2hpbGUgdmFsdWVzIG5lYXIgMS4wIHByb2R1Y2Ugcm91Z2ggc3VyZmFjZXMuCiAqIEBwcm9wZXJ0eSB7dmVjM30gbm9ybWFsRUMgU3VyZmFjZSdzIG5vcm1hbCBpbiBleWUgY29vcmRpbmF0ZXMuIEl0IGlzIHVzZWQgZm9yIGVmZmVjdHMgc3VjaCBhcyBub3JtYWwgbWFwcGluZy4gVGhlIGRlZmF1bHQgaXMgdGhlIHN1cmZhY2UncyB1bm1vZGlmaWVkIG5vcm1hbC4KICogQHByb3BlcnR5IHtmbG9hdH0gb2NjbHVzaW9uIEFtYmllbnQgb2NjbHVzaW9uIHJlY2lldmVkIGF0IHRoaXMgcG9pbnQgb24gdGhlIG1hdGVyaWFsLiAxLjAgbWVhbnMgZnVsbHkgbGl0LCAwLjAgbWVhbnMgZnVsbHkgb2NjbHVkZWQuCiAqIEBwcm9wZXJ0eSB7dmVjM30gZW1pc3NpdmUgTGlnaHQgZW1pdHRlZCBieSB0aGUgbWF0ZXJpYWwgZXF1YWxseSBpbiBhbGwgZGlyZWN0aW9ucy4gVGhlIGRlZmF1bHQgaXMgdmVjMygwLjApLCB3aGljaCBlbWl0cyBubyBsaWdodC4KICovCnN0cnVjdCBjem1fbW9kZWxNYXRlcmlhbCB7CiAgICB2ZWMzIGRpZmZ1c2U7CiAgICBmbG9hdCBhbHBoYTsKICAgIHZlYzMgc3BlY3VsYXI7CiAgICBmbG9hdCByb3VnaG5lc3M7CiAgICB2ZWMzIG5vcm1hbEVDOwogICAgZmxvYXQgb2NjbHVzaW9uOwogICAgdmVjMyBlbWlzc2l2ZTsKfTsKYH0pO3ZhciBqVSxIVT1PKCgpPT57alU9YC8qKgogKiBTdHJ1Y3QgZm9yIHJlcHJlc2VudGluZyB0aGUgb3V0cHV0IG9mIGEgY3VzdG9tIHZlcnRleCBzaGFkZXIuCiAqIAogKiBAbmFtZSBjem1fbW9kZWxWZXJ0ZXhPdXRwdXQKICogQGdsc2xTdHJ1Y3QKICoKICogQHNlZSB7QGxpbmsgQ3VzdG9tU2hhZGVyfQogKiBAc2VlIHtAbGluayBNb2RlbH0KICoKICogQHByb3BlcnR5IHt2ZWMzfSBwb3NpdGlvbk1DIFRoZSBwb3NpdGlvbiBvZiB0aGUgdmVydGV4IGluIG1vZGVsIGNvb3JkaW5hdGVzCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IHBvaW50U2l6ZSBBIGN1c3RvbSB2YWx1ZSBmb3IgZ2xfUG9pbnRTaXplLiBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgcG9pbnQgcHJpbWl0aXZlcy4gCiAqLwpzdHJ1Y3QgY3ptX21vZGVsVmVydGV4T3V0cHV0IHsKICB2ZWMzIHBvc2l0aW9uTUM7CiAgZmxvYXQgcG9pbnRTaXplOwp9OwpgfSk7dmFyIHZVLHpVPU8oKCk9Pnt2VT1gLyoqCiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjem1fcGJyTGlnaHRpbmd9CiAqCiAqIEBuYW1lIGN6bV9tYXRlcmlhbAogKiBAZ2xzbFN0cnVjdAogKgogKiBAcHJvcGVydHkge3ZlYzN9IGRpZmZ1c2VDb2xvciB0aGUgZGlmZnVzZSBjb2xvciBvZiB0aGUgbWF0ZXJpYWwgZm9yIHRoZSBsYW1iZXJ0IHRlcm0gb2YgdGhlIHJlbmRlcmluZyBlcXVhdGlvbgogKiBAcHJvcGVydHkge2Zsb2F0fSByb3VnaG5lc3MgYSB2YWx1ZSBmcm9tIDAuMCB0byAxLjAgdGhhdCBpbmRpY2F0ZXMgaG93IHJvdWdoIHRoZSBzdXJmYWNlIG9mIHRoZSBtYXRlcmlhbCBpcy4KICogQHByb3BlcnR5IHt2ZWMzfSBmMCBUaGUgcmVmbGVjdGFuY2Ugb2YgdGhlIG1hdGVyaWFsIGF0IG5vcm1hbCBpbmNpZGVuY2UKICovCnN0cnVjdCBjem1fcGJyUGFyYW1ldGVycwp7CiAgICB2ZWMzIGRpZmZ1c2VDb2xvcjsKICAgIGZsb2F0IHJvdWdobmVzczsKICAgIHZlYzMgZjA7Cn07CmB9KTt2YXIgS1UsWFU9TygoKT0+e0tVPWAvKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fcmF5CiAqIEBnbHNsU3RydWN0CiAqLwpzdHJ1Y3QgY3ptX3JheQp7CiAgICB2ZWMzIG9yaWdpbjsKICAgIHZlYzMgZGlyZWN0aW9uOwp9OwpgfSk7dmFyIHFVLCRVPU8oKCk9PntxVT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX3JheVNlZ21lbnQKICogQGdsc2xTdHJ1Y3QKICovCnN0cnVjdCBjem1fcmF5U2VnbWVudAp7CiAgICBmbG9hdCBzdGFydDsKICAgIGZsb2F0IHN0b3A7Cn07CgovKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fZW1wdHlSYXlTZWdtZW50CiAqIEBnbHNsQ29uc3RhbnQgCiAqLwpjb25zdCBjem1fcmF5U2VnbWVudCBjem1fZW1wdHlSYXlTZWdtZW50ID0gY3ptX3JheVNlZ21lbnQoLWN6bV9pbmZpbml0eSwgLWN6bV9pbmZpbml0eSk7CgovKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fZnVsbFJheVNlZ21lbnQKICogQGdsc2xDb25zdGFudCAKICovCmNvbnN0IGN6bV9yYXlTZWdtZW50IGN6bV9mdWxsUmF5U2VnbWVudCA9IGN6bV9yYXlTZWdtZW50KDAuMCwgY3ptX2luZmluaXR5KTsKYH0pO3ZhciB0USxlUT1PKCgpPT57dFE9YHN0cnVjdCBjem1fc2hhZG93UGFyYW1ldGVycwp7CiNpZmRlZiBVU0VfQ1VCRV9NQVBfU0hBRE9XCiAgICB2ZWMzIHRleENvb3JkczsKI2Vsc2UKICAgIHZlYzIgdGV4Q29vcmRzOwojZW5kaWYKCiAgICBmbG9hdCBkZXB0aEJpYXM7CiAgICBmbG9hdCBkZXB0aDsKICAgIGZsb2F0IG5Eb3RMOwogICAgdmVjMiB0ZXhlbFN0ZXBTaXplOwogICAgZmxvYXQgbm9ybWFsU2hhZGluZ1Ntb290aDsKICAgIGZsb2F0IGRhcmtuZXNzOwp9OwpgfSk7dmFyIGlRLG5RPU8oKCk9PntpUT1gLyoqCiAqIENvbnZlcnRzIGFuIEhTQiBjb2xvciAoaHVlLCBzYXR1cmF0aW9uLCBicmlnaHRuZXNzKSB0byBSR0IKICogSFNCIDwtPiBSR0IgY29udmVyc2lvbiB3aXRoIG1pbmltYWwgYnJhbmNoaW5nOiB7QGxpbmsgaHR0cDovL2xvbGVuZ2luZS5uZXQvYmxvZy8yMDEzLzA3LzI3L3JnYi10by1oc3YtaW4tZ2xzbH0KICoKICogQG5hbWUgY3ptX0hTQlRvUkdCCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gaHNiIFRoZSBjb2xvciBpbiBIU0IuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gUkdCLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIGhzYiA9IGN6bV9SR0JUb0hTQihyZ2IpOwogKiBoc2IueiAqPSAwLjE7CiAqIHJnYiA9IGN6bV9IU0JUb1JHQihoc2IpOwogKi8KCmNvbnN0IHZlYzQgS19IU0IyUkdCID0gdmVjNCgxLjAsIDIuMCAvIDMuMCwgMS4wIC8gMy4wLCAzLjApOwoKdmVjMyBjem1fSFNCVG9SR0IodmVjMyBoc2IpCnsKICAgIHZlYzMgcCA9IGFicyhmcmFjdChoc2IueHh4ICsgS19IU0IyUkdCLnh5eikgKiA2LjAgLSBLX0hTQjJSR0Iud3d3KTsKICAgIHJldHVybiBoc2IueiAqIG1peChLX0hTQjJSR0IueHh4LCBjbGFtcChwIC0gS19IU0IyUkdCLnh4eCwgMC4wLCAxLjApLCBoc2IueSk7Cn0KYH0pO3ZhciBzUSxvUT1PKCgpPT57c1E9YC8qKgogKiBDb252ZXJ0cyBhbiBIU0wgY29sb3IgKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKSB0byBSR0IKICogSFNMIDwtPiBSR0IgY29udmVyc2lvbjoge0BsaW5rIGh0dHA6Ly93d3cuY2hpbGxpYW50LmNvbS9yZ2IyaHN2Lmh0bWx9CiAqCiAqIEBuYW1lIGN6bV9IU0xUb1JHQgogKiBAZ2xzbEZ1bmN0aW9uCiAqIAogKiBAcGFyYW0ge3ZlYzN9IHJnYiBUaGUgY29sb3IgaW4gSFNMLgogKgogKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIGluIFJHQi4KICoKICogQGV4YW1wbGUKICogdmVjMyBoc2wgPSBjem1fUkdCVG9IU0wocmdiKTsKICogaHNsLnogKj0gMC4xOwogKiByZ2IgPSBjem1fSFNMVG9SR0IoaHNsKTsKICovCgp2ZWMzIGh1ZVRvUkdCKGZsb2F0IGh1ZSkKewogICAgZmxvYXQgciA9IGFicyhodWUgKiA2LjAgLSAzLjApIC0gMS4wOwogICAgZmxvYXQgZyA9IDIuMCAtIGFicyhodWUgKiA2LjAgLSAyLjApOwogICAgZmxvYXQgYiA9IDIuMCAtIGFicyhodWUgKiA2LjAgLSA0LjApOwogICAgcmV0dXJuIGNsYW1wKHZlYzMociwgZywgYiksIDAuMCwgMS4wKTsKfQoKdmVjMyBjem1fSFNMVG9SR0IodmVjMyBoc2wpCnsKICAgIHZlYzMgcmdiID0gaHVlVG9SR0IoaHNsLngpOwogICAgZmxvYXQgYyA9ICgxLjAgLSBhYnMoMi4wICogaHNsLnogLSAxLjApKSAqIGhzbC55OwogICAgcmV0dXJuIChyZ2IgLSAwLjUpICogYyArIGhzbC56Owp9CmB9KTt2YXIgclEsYVE9TygoKT0+e3JRPWAvKioKICogQ29udmVydHMgYW4gUkdCIGNvbG9yIHRvIEhTQiAoaHVlLCBzYXR1cmF0aW9uLCBicmlnaHRuZXNzKQogKiBIU0IgPC0+IFJHQiBjb252ZXJzaW9uIHdpdGggbWluaW1hbCBicmFuY2hpbmc6IHtAbGluayBodHRwOi8vbG9sZW5naW5lLm5ldC9ibG9nLzIwMTMvMDcvMjcvcmdiLXRvLWhzdi1pbi1nbHNsfQogKgogKiBAbmFtZSBjem1fUkdCVG9IU0IKICogQGdsc2xGdW5jdGlvbgogKiAKICogQHBhcmFtIHt2ZWMzfSByZ2IgVGhlIGNvbG9yIGluIFJHQi4KICoKICogQHJldHVybnMge3ZlYzN9IFRoZSBjb2xvciBpbiBIU0IuCiAqCiAqIEBleGFtcGxlCiAqIHZlYzMgaHNiID0gY3ptX1JHQlRvSFNCKHJnYik7CiAqIGhzYi56ICo9IDAuMTsKICogcmdiID0gY3ptX0hTQlRvUkdCKGhzYik7CiAqLwoKY29uc3QgdmVjNCBLX1JHQjJIU0IgPSB2ZWM0KDAuMCwgLTEuMCAvIDMuMCwgMi4wIC8gMy4wLCAtMS4wKTsKCnZlYzMgY3ptX1JHQlRvSFNCKHZlYzMgcmdiKQp7CiAgICB2ZWM0IHAgPSBtaXgodmVjNChyZ2IuYmcsIEtfUkdCMkhTQi53eiksIHZlYzQocmdiLmdiLCBLX1JHQjJIU0IueHkpLCBzdGVwKHJnYi5iLCByZ2IuZykpOwogICAgdmVjNCBxID0gbWl4KHZlYzQocC54eXcsIHJnYi5yKSwgdmVjNChyZ2IuciwgcC55engpLCBzdGVwKHAueCwgcmdiLnIpKTsKCiAgICBmbG9hdCBkID0gcS54IC0gbWluKHEudywgcS55KTsKICAgIHJldHVybiB2ZWMzKGFicyhxLnogKyAocS53IC0gcS55KSAvICg2LjAgKiBkICsgY3ptX2Vwc2lsb243KSksIGQgLyAocS54ICsgY3ptX2Vwc2lsb243KSwgcS54KTsKfQpgfSk7dmFyIEFRLGhRPU8oKCk9PntBUT1gLyoqCiAqIENvbnZlcnRzIGFuIFJHQiBjb2xvciB0byBIU0wgKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKQogKiBIU0wgPC0+IFJHQiBjb252ZXJzaW9uOiB7QGxpbmsgaHR0cDovL3d3dy5jaGlsbGlhbnQuY29tL3JnYjJoc3YuaHRtbH0KICoKICogQG5hbWUgY3ptX1JHQlRvSFNMCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvciBpbiBSR0IuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gSFNMLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIGhzbCA9IGN6bV9SR0JUb0hTTChyZ2IpOwogKiBoc2wueiAqPSAwLjE7CiAqIHJnYiA9IGN6bV9IU0xUb1JHQihoc2wpOwogKi8KIAp2ZWMzIFJHQnRvSENWKHZlYzMgcmdiKQp7CiAgICAvLyBCYXNlZCBvbiB3b3JrIGJ5IFNhbSBIb2NldmFyIGFuZCBFbWlsIFBlcnNzb24KICAgIHZlYzQgcCA9IChyZ2IuZyA8IHJnYi5iKSA/IHZlYzQocmdiLmJnLCAtMS4wLCAyLjAgLyAzLjApIDogdmVjNChyZ2IuZ2IsIDAuMCwgLTEuMCAvIDMuMCk7CiAgICB2ZWM0IHEgPSAocmdiLnIgPCBwLngpID8gdmVjNChwLnh5dywgcmdiLnIpIDogdmVjNChyZ2IuciwgcC55engpOwogICAgZmxvYXQgYyA9IHEueCAtIG1pbihxLncsIHEueSk7CiAgICBmbG9hdCBoID0gYWJzKChxLncgLSBxLnkpIC8gKDYuMCAqIGMgKyBjem1fZXBzaWxvbjcpICsgcS56KTsKICAgIHJldHVybiB2ZWMzKGgsIGMsIHEueCk7Cn0KCnZlYzMgY3ptX1JHQlRvSFNMKHZlYzMgcmdiKQp7CiAgICB2ZWMzIGhjdiA9IFJHQnRvSENWKHJnYik7CiAgICBmbG9hdCBsID0gaGN2LnogLSBoY3YueSAqIDAuNTsKICAgIGZsb2F0IHMgPSBoY3YueSAvICgxLjAgLSBhYnMobCAqIDIuMCAtIDEuMCkgKyBjem1fZXBzaWxvbjcpOwogICAgcmV0dXJuIHZlYzMoaGN2LngsIHMsIGwpOwp9CmB9KTt2YXIgY1EsbFE9TygoKT0+e2NRPWAvKioKICogQ29udmVydHMgYW4gUkdCIGNvbG9yIHRvIENJRSBZeHkuCiAqIDxwPlRoZSBjb252ZXJzaW9uIGlzIGRlc2NyaWJlZCBpbgogKiB7QGxpbmsgaHR0cDovL2NvbnRlbnQuZ3B3aWtpLm9yZy9pbmRleC5waHAvRDNEQm9vazpIaWdoLUR5bmFtaWNfUmFuZ2VfUmVuZGVyaW5nI0x1bWluYW5jZV9UcmFuc2Zvcm18THVtaW5hbmNlIFRyYW5zZm9ybX0KICogPC9wPgogKiAKICogQG5hbWUgY3ptX1JHQlRvWFlaCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvciBpbiBSR0IuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gQ0lFIFl4eS4KICoKICogQGV4YW1wbGUKICogdmVjMyB4eXogPSBjem1fUkdCVG9YWVoocmdiKTsKICogeHl6LnggPSBtYXgoeHl6LnggLSBsdW1pbmFuY2VUaHJlc2hvbGQsIDAuMCk7CiAqIHJnYiA9IGN6bV9YWVpUb1JHQih4eXopOwogKi8KdmVjMyBjem1fUkdCVG9YWVoodmVjMyByZ2IpCnsKICAgIGNvbnN0IG1hdDMgUkdCMlhZWiA9IG1hdDMoMC40MTI0LCAwLjIxMjYsIDAuMDE5MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTc2LCAwLjcxNTIsIDAuMTE5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4xODA1LCAwLjA3MjIsIDAuOTUwNSk7CiAgICB2ZWMzIHh5eiA9IFJHQjJYWVogKiByZ2I7CiAgICB2ZWMzIFl4eTsKICAgIFl4eS5yID0geHl6Lmc7CiAgICBmbG9hdCB0ZW1wID0gZG90KHZlYzMoMS4wKSwgeHl6KTsKICAgIFl4eS5nYiA9IHh5ei5yZyAvIHRlbXA7CiAgICByZXR1cm4gWXh5Owp9CmB9KTt2YXIgZFEsbVE9TygoKT0+e2RRPWAvKioKICogQ29udmVydHMgYSBDSUUgWXh5IGNvbG9yIHRvIFJHQi4KICogPHA+VGhlIGNvbnZlcnNpb24gaXMgZGVzY3JpYmVkIGluCiAqIHtAbGluayBodHRwOi8vY29udGVudC5ncHdpa2kub3JnL2luZGV4LnBocC9EM0RCb29rOkhpZ2gtRHluYW1pY19SYW5nZV9SZW5kZXJpbmcjTHVtaW5hbmNlX1RyYW5zZm9ybXxMdW1pbmFuY2UgVHJhbnNmb3JtfQogKiA8L3A+CiAqIAogKiBAbmFtZSBjem1fWFlaVG9SR0IKICogQGdsc2xGdW5jdGlvbgogKiAKICogQHBhcmFtIHt2ZWMzfSBZeHkgVGhlIGNvbG9yIGluIENJRSBZeHkuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gUkdCLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIHh5eiA9IGN6bV9SR0JUb1hZWihyZ2IpOwogKiB4eXoueCA9IG1heCh4eXoueCAtIGx1bWluYW5jZVRocmVzaG9sZCwgMC4wKTsKICogcmdiID0gY3ptX1hZWlRvUkdCKHh5eik7CiAqLwp2ZWMzIGN6bV9YWVpUb1JHQih2ZWMzIFl4eSkKewogICAgY29uc3QgbWF0MyBYWVoyUkdCID0gbWF0MyggMy4yNDA1LCAtMC45NjkzLCAgMC4wNTU2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS41MzcxLCAgMS44NzYwLCAtMC4yMDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMC40OTg1LCAgMC4wNDE2LCAgMS4wNTcyKTsKICAgIHZlYzMgeHl6OwogICAgeHl6LnIgPSBZeHkuciAqIFl4eS5nIC8gWXh5LmI7CiAgICB4eXouZyA9IFl4eS5yOwogICAgeHl6LmIgPSBZeHkuciAqICgxLjAgLSBZeHkuZyAtIFl4eS5iKSAvIFl4eS5iOwogICAgCiAgICByZXR1cm4gWFlaMlJHQiAqIHh5ejsKfQpgfSk7dmFyIGZRLEVRPU8oKCk9PntmUT1gLy8gU2VlOgovLyAgICBodHRwczovL2tuYXJrb3dpY3oud29yZHByZXNzLmNvbS8yMDE2LzAxLzA2L2FjZXMtZmlsbWljLXRvbmUtbWFwcGluZy1jdXJ2ZS8KCnZlYzMgY3ptX2FjZXNUb25lbWFwcGluZyh2ZWMzIGNvbG9yKSB7CiAgICBmbG9hdCBnID0gMC45ODU7CiAgICBmbG9hdCBhID0gMC4wNjU7CiAgICBmbG9hdCBiID0gMC4wMDAxOwogICAgZmxvYXQgYyA9IDAuNDMzOwogICAgZmxvYXQgZCA9IDAuMjM4OwoKICAgIGNvbG9yID0gKGNvbG9yICogKGNvbG9yICsgYSkgLSBiKSAvIChjb2xvciAqIChnICogY29sb3IgKyBjKSArIGQpOwoKICAgIGNvbG9yID0gY2xhbXAoY29sb3IsIDAuMCwgMS4wKTsKCiAgICByZXR1cm4gY29sb3I7Cn0KYH0pO3ZhciBfUSxSUT1PKCgpPT57X1E9YC8qKgogKiBAcHJpdmF0ZQogKi8KZmxvYXQgY3ptX2FscGhhV2VpZ2h0KGZsb2F0IGEpCnsKICAgIGZsb2F0IHogPSAoZ2xfRnJhZ0Nvb3JkLnogLSBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvblszXVsyXSkgLyBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvblsyXVsyXTsKCiAgICAvLyBTZWUgV2VpZ2h0ZWQgQmxlbmRlZCBPcmRlci1JbmRlcGVuZGVudCBUcmFuc3BhcmVuY3kgZm9yIGV4YW1wbGVzIG9mIGRpZmZlcmVudCB3ZWlnaHRpbmcgZnVuY3Rpb25zOgogICAgLy8gaHR0cDovL2pjZ3Qub3JnL3B1Ymxpc2hlZC8wMDAyLzAyLzA5LwogICAgcmV0dXJuIHBvdyhhICsgMC4wMSwgNC4wKSArIG1heCgxZS0yLCBtaW4oMy4wICogMWUzLCAwLjAwMyAvICgxZS01ICsgcG93KGFicyh6KSAvIDIwMC4wLCA0LjApKSkpOwp9CmB9KTt2YXIgWlEsSVE9TygoKT0+e1pRPWAvKioKICogUHJvY2VkdXJhbCBhbnRpLWFsaWFzaW5nIGJ5IGJsdXJyaW5nIHR3byBjb2xvcnMgdGhhdCBtZWV0IGF0IGEgc2hhcnAgZWRnZS4KICoKICogQG5hbWUgY3ptX2FudGlhbGlhcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gY29sb3IxIFRoZSBjb2xvciBvbiBvbmUgc2lkZSBvZiB0aGUgZWRnZS4KICogQHBhcmFtIHt2ZWM0fSBjb2xvcjIgVGhlIGNvbG9yIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBlZGdlLgogKiBAcGFyYW0ge3ZlYzR9IGN1cnJlbnRjb2xvciBUaGUgY3VycmVudCBjb2xvciwgZWl0aGVyIDxjb2RlPmNvbG9yMTwvY29kZT4gb3IgPGNvZGU+Y29sb3IyPC9jb2RlPi4KICogQHBhcmFtIHtmbG9hdH0gZGlzdCBUaGUgZGlzdGFuY2UgdG8gdGhlIGVkZ2UgaW4gdGV4dHVyZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHtmbG9hdH0gW2Z1enpGYWN0b3I9MC4xXSBDb250cm9scyB0aGUgYmx1cnJpbmVzcyBiZXR3ZWVuIHRoZSB0d28gY29sb3JzLgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIGFudGktYWxpYXNlZCBjb2xvci4KICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbnMKICogdmVjNCBjem1fYW50aWFsaWFzKHZlYzQgY29sb3IxLCB2ZWM0IGNvbG9yMiwgdmVjNCBjdXJyZW50Q29sb3IsIGZsb2F0IGRpc3QsIGZsb2F0IGZ1enpGYWN0b3IpOwogKiB2ZWM0IGN6bV9hbnRpYWxpYXModmVjNCBjb2xvcjEsIHZlYzQgY29sb3IyLCB2ZWM0IGN1cnJlbnRDb2xvciwgZmxvYXQgZGlzdCk7CiAqCiAqIC8vIGdldCB0aGUgY29sb3IgZm9yIGEgbWF0ZXJpYWwgdGhhdCBoYXMgYSBzaGFycCBlZGdlIGF0IHRoZSBsaW5lIHkgPSAwLjUgaW4gdGV4dHVyZSBzcGFjZQogKiBmbG9hdCBkaXN0ID0gYWJzKHRleHR1cmVDb29yZGluYXRlcy50IC0gMC41KTsKICogdmVjNCBjdXJyZW50Q29sb3IgPSBtaXgoYm90dG9tQ29sb3IsIHRvcENvbG9yLCBzdGVwKDAuNSwgdGV4dHVyZUNvb3JkaW5hdGVzLnQpKTsKICogdmVjNCBjb2xvciA9IGN6bV9hbnRpYWxpYXMoYm90dG9tQ29sb3IsIHRvcENvbG9yLCBjdXJyZW50Q29sb3IsIGRpc3QsIDAuMSk7CiAqLwp2ZWM0IGN6bV9hbnRpYWxpYXModmVjNCBjb2xvcjEsIHZlYzQgY29sb3IyLCB2ZWM0IGN1cnJlbnRDb2xvciwgZmxvYXQgZGlzdCwgZmxvYXQgZnV6ekZhY3RvcikKewogICAgZmxvYXQgdmFsMSA9IGNsYW1wKGRpc3QgLyBmdXp6RmFjdG9yLCAwLjAsIDEuMCk7CiAgICBmbG9hdCB2YWwyID0gY2xhbXAoKGRpc3QgLSAwLjUpIC8gZnV6ekZhY3RvciwgMC4wLCAxLjApOwogICAgdmFsMSA9IHZhbDEgKiAoMS4wIC0gdmFsMik7CiAgICB2YWwxID0gdmFsMSAqIHZhbDEgKiAoMy4wIC0gKDIuMCAqIHZhbDEpKTsKICAgIHZhbDEgPSBwb3codmFsMSwgMC41KTsgLy9tYWtlcyB0aGUgdHJhbnNpdGlvbiBuaWNlcgogICAgCiAgICB2ZWM0IG1pZENvbG9yID0gKGNvbG9yMSArIGNvbG9yMikgKiAwLjU7CiAgICByZXR1cm4gbWl4KG1pZENvbG9yLCBjdXJyZW50Q29sb3IsIHZhbDEpOwp9Cgp2ZWM0IGN6bV9hbnRpYWxpYXModmVjNCBjb2xvcjEsIHZlYzQgY29sb3IyLCB2ZWM0IGN1cnJlbnRDb2xvciwgZmxvYXQgZGlzdCkKewogICAgcmV0dXJuIGN6bV9hbnRpYWxpYXMoY29sb3IxLCBjb2xvcjIsIGN1cnJlbnRDb2xvciwgZGlzdCwgMC4xKTsKfQpgfSk7dmFyIHBRLHVRPU8oKCk9PntwUT1gLyoqCiAqIEFwcGx5IGEgSFNCIGNvbG9yIHNoaWZ0IHRvIGFuIFJHQiBjb2xvci4KICoKICogQHBhcmFtIHt2ZWMzfSByZ2IgVGhlIGNvbG9yIGluIFJHQiBzcGFjZS4KICogQHBhcmFtIHt2ZWMzfSBoc2JTaGlmdCBUaGUgYW1vdW50IHRvIHNoaWZ0IGVhY2ggY29tcG9uZW50LiBUaGUgeHl6IGNvbXBvbmVudHMgY29ycmVzcG9uZCB0byBodWUsIHNhdHVyYXRpb24sIGFuZCBicmlnaHRuZXNzLiBTaGlmdGluZyB0aGUgaHVlIGJ5ICsvLSAxLjAgY29ycmVzcG9uZHMgdG8gc2hpZnRpbmcgdGhlIGh1ZSBieSBhIGZ1bGwgY3ljbGUuIFNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3MgYXJlIGNsYW1wZWQgYmV0d2VlbiAwIGFuZCAxIGFmdGVyIHRoZSBhZGp1c3RtZW50CiAqIEBwYXJhbSB7Ym9vbH0gaWdub3JlQmxhY2tQaXhlbHMgSWYgdHJ1ZSwgYmxhY2sgcGl4ZWxzIHdpbGwgYmUgdW5jaGFuZ2VkLiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBzb21lIHNoYWRlcnMgc3VjaCBhcyBhdG1vc3BoZXJlLXJlbGF0ZWQgZWZmZWN0cy4KICoKICogQHJldHVybiB7dmVjM30gVGhlIFJHQiBjb2xvciBhZnRlciBzaGlmdGluZyBpbiBIU0Igc3BhY2UgYW5kIGNsYW1waW5nIHNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3MgdG8gYSB2YWxpZCByYW5nZS4KICovCnZlYzMgY3ptX2FwcGx5SFNCU2hpZnQodmVjMyByZ2IsIHZlYzMgaHNiU2hpZnQsIGJvb2wgaWdub3JlQmxhY2tQaXhlbHMpIHsKICAgIC8vIENvbnZlcnQgcmdiIGNvbG9yIHRvIGhzYgogICAgdmVjMyBoc2IgPSBjem1fUkdCVG9IU0IocmdiKTsKCiAgICAvLyBQZXJmb3JtIGhzYiBzaGlmdAogICAgLy8gSHVlIGN5Y2xlcyBhcm91bmQgc28gbm8gY2xhbXAgaXMgbmVlZGVkLgogICAgaHNiLnggKz0gaHNiU2hpZnQueDsgLy8gaHVlCiAgICBoc2IueSA9IGNsYW1wKGhzYi55ICsgaHNiU2hpZnQueSwgMC4wLCAxLjApOyAvLyBzYXR1cmF0aW9uCgogICAgLy8gYnJpZ2h0bmVzcwogICAgLy8KICAgIC8vIFNvbWUgc2hhZGVycyBzdWNoIGFzIGF0bW9zcGhlcmUtcmVsYXRlZCBlZmZlY3RzIG5lZWQgdG8gbGVhdmUgYmxhY2sKICAgIC8vIHBpeGVscyB1bmNoYW5nZWQKICAgIGlmIChpZ25vcmVCbGFja1BpeGVscykgewogICAgICAgIGhzYi56ID0gaHNiLnogPiBjem1fZXBzaWxvbjcgPyBoc2IueiArIGhzYlNoaWZ0LnogOiAwLjA7CiAgICB9IGVsc2UgewogICAgICAgIGhzYi56ID0gaHNiLnogKyBoc2JTaGlmdC56OwogICAgfQogICAgaHNiLnogPSBjbGFtcChoc2IueiwgMC4wLCAxLjApOwoKICAgIC8vIENvbnZlcnQgc2hpZnRlZCBoc2IgYmFjayB0byByZ2IKICAgIHJldHVybiBjem1fSFNCVG9SR0IoaHNiKTsKfQpgfSk7dmFyIENRLGdRPU8oKCk9PntDUT1gLyoqCiAqIEFwcHJveGltYXRlbHkgY29tcHV0ZXMgc3BoZXJpY2FsIGNvb3JkaW5hdGVzIGdpdmVuIGEgbm9ybWFsLgogKiBVc2VzIGFwcHJveGltYXRlIGludmVyc2UgdHJpZ29ub21ldHJ5IGZvciBzcGVlZCBhbmQgY29uc2lzdGVuY3ksCiAqIHNpbmNlIGludmVyc2UgdHJpZ29ub21ldHJ5IGNhbiBkaWZmZXIgZnJvbSB2ZW5kb3ItdG8tdmVuZG9yIGFuZCB3aGVuIGNvbXBhcmVkIHdpdGggdGhlIENQVS4KICoKICogQG5hbWUgY3ptX2FwcHJveGltYXRlU3BoZXJpY2FsQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IG5vcm1hbCBhcmJpdHJhcnktbGVuZ3RoIG5vcm1hbC4KICoKICogQHJldHVybnMge3ZlYzJ9IEFwcHJveGltYXRlIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgc3BoZXJpY2FsIGNvb3JkaW5hdGVzLgogKi8KdmVjMiBjem1fYXBwcm94aW1hdGVTcGhlcmljYWxDb29yZGluYXRlcyh2ZWMzIG5vcm1hbCkgewogICAgLy8gUHJvamVjdCBpbnRvIHBsYW5lIHdpdGggdmVydGljYWwgZm9yIGxhdGl0dWRlCiAgICBmbG9hdCBsYXRpdHVkZUFwcHJveGltYXRpb24gPSBjem1fZmFzdEFwcHJveGltYXRlQXRhbihzcXJ0KG5vcm1hbC54ICogbm9ybWFsLnggKyBub3JtYWwueSAqIG5vcm1hbC55KSwgbm9ybWFsLnopOwogICAgZmxvYXQgbG9uZ2l0dWRlQXBwcm94aW1hdGlvbiA9IGN6bV9mYXN0QXBwcm94aW1hdGVBdGFuKG5vcm1hbC54LCBub3JtYWwueSk7CiAgICByZXR1cm4gdmVjMihsYXRpdHVkZUFwcHJveGltYXRpb24sIGxvbmdpdHVkZUFwcHJveGltYXRpb24pOwp9CmB9KTt2YXIgVFEsTlE9TygoKT0+e1RRPWAvKioKICogQ29tcHV0ZSBhIHJhdGlvbmFsIGFwcHJveGltYXRpb24gdG8gdGFuaCh4KQogKgogKiBAcGFyYW0ge2Zsb2F0fSB4IEEgcmVhbCBudW1iZXIgaW5wdXQKICogQHJldHVybnMge2Zsb2F0fSBBbiBhcHByb3hpbWF0aW9uIGZvciB0YW5oKHgpCiovCmZsb2F0IGN6bV9hcHByb3hpbWF0ZVRhbmgoZmxvYXQgeCkgewogICAgZmxvYXQgeDIgPSB4ICogeDsKICAgIHJldHVybiBtYXgoLTEuMCwgbWluKDEuMCwgeCAqICgyNy4wICsgeDIpIC8gKDI3LjAgKyA5LjAgKiB4MikpKTsKfQpgfSk7dmFyIGJRLEZRPU8oKCk9PntiUT1gLyoqCiAqIERldGVybWluZXMgaWYgdGhlIGZyYWdtZW50IGlzIGJhY2sgZmFjaW5nCiAqCiAqIEBuYW1lIGN6bV9iYWNrRmFjaW5nCiAqIEBnbHNsRnVuY3Rpb24gCiAqIAogKiBAcmV0dXJucyB7Ym9vbH0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGZyYWdtZW50IGlzIGJhY2sgZmFjaW5nOyBvdGhlcndpc2UsIDxjb2RlPmZhbHNlPC9jb2RlPi4KICovCmJvb2wgY3ptX2JhY2tGYWNpbmcoKQp7CiAgICAvLyAhZ2xfRnJvbnRGYWNpbmcgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIG9uIE1hYy9JbnRlbCBzbyB1c2UgdGhlIG1vcmUgdmVyYm9zZSBmb3JtIGluc3RlYWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vQ2VzaXVtR1MvY2VzaXVtL3B1bGwvODQ5NC4KICAgIHJldHVybiBnbF9Gcm9udEZhY2luZyA9PSBmYWxzZTsKfQpgfSk7dmFyIFlRLFNRPU8oKCk9PntZUT1gLyoqCiAqIEJyYW5jaGxlc3MgdGVybmFyeSBvcGVyYXRvciB0byBiZSB1c2VkIHdoZW4gaXQncyBpbmV4cGVuc2l2ZSB0byBleHBsaWNpdGx5CiAqIGV2YWx1YXRlIGJvdGggcG9zc2liaWxpdGllcyBmb3IgYSBmbG9hdCBleHByZXNzaW9uLgogKgogKiBAbmFtZSBjem1fYnJhbmNoRnJlZVRlcm5hcnkKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Jvb2x9IGNvbXBhcmlzb24gQSBjb21wYXJpc29uIHN0YXRlbWVudAogKiBAcGFyYW0ge2Zsb2F0fSBhIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgogKiBAcGFyYW0ge2Zsb2F0fSBiIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KICoKICogQHJldHVybnMge2Zsb2F0fSBlcXVpdmFsZW50IG9mIGNvbXBhcmlzb24gPyBhIDogYgogKi8KZmxvYXQgY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGJvb2wgY29tcGFyaXNvbiwgZmxvYXQgYSwgZmxvYXQgYikgewogICAgZmxvYXQgdXNlQSA9IGZsb2F0KGNvbXBhcmlzb24pOwogICAgcmV0dXJuIGEgKiB1c2VBICsgYiAqICgxLjAgLSB1c2VBKTsKfQoKLyoqCiAqIEJyYW5jaGxlc3MgdGVybmFyeSBvcGVyYXRvciB0byBiZSB1c2VkIHdoZW4gaXQncyBpbmV4cGVuc2l2ZSB0byBleHBsaWNpdGx5CiAqIGV2YWx1YXRlIGJvdGggcG9zc2liaWxpdGllcyBmb3IgYSB2ZWMyIGV4cHJlc3Npb24uCiAqCiAqIEBuYW1lIGN6bV9icmFuY2hGcmVlVGVybmFyeQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7Ym9vbH0gY29tcGFyaXNvbiBBIGNvbXBhcmlzb24gc3RhdGVtZW50CiAqIEBwYXJhbSB7dmVjMn0gYSBWYWx1ZSB0byByZXR1cm4gaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KICogQHBhcmFtIHt2ZWMyfSBiIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KICoKICogQHJldHVybnMge3ZlYzJ9IGVxdWl2YWxlbnQgb2YgY29tcGFyaXNvbiA/IGEgOiBiCiAqLwp2ZWMyIGN6bV9icmFuY2hGcmVlVGVybmFyeShib29sIGNvbXBhcmlzb24sIHZlYzIgYSwgdmVjMiBiKSB7CiAgICBmbG9hdCB1c2VBID0gZmxvYXQoY29tcGFyaXNvbik7CiAgICByZXR1cm4gYSAqIHVzZUEgKyBiICogKDEuMCAtIHVzZUEpOwp9CgovKioKICogQnJhbmNobGVzcyB0ZXJuYXJ5IG9wZXJhdG9yIHRvIGJlIHVzZWQgd2hlbiBpdCdzIGluZXhwZW5zaXZlIHRvIGV4cGxpY2l0bHkKICogZXZhbHVhdGUgYm90aCBwb3NzaWJpbGl0aWVzIGZvciBhIHZlYzMgZXhwcmVzc2lvbi4KICoKICogQG5hbWUgY3ptX2JyYW5jaEZyZWVUZXJuYXJ5CiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtib29sfSBjb21wYXJpc29uIEEgY29tcGFyaXNvbiBzdGF0ZW1lbnQKICogQHBhcmFtIHt2ZWMzfSBhIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgogKiBAcGFyYW0ge3ZlYzN9IGIgVmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLgogKgogKiBAcmV0dXJucyB7dmVjM30gZXF1aXZhbGVudCBvZiBjb21wYXJpc29uID8gYSA6IGIKICovCnZlYzMgY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGJvb2wgY29tcGFyaXNvbiwgdmVjMyBhLCB2ZWMzIGIpIHsKICAgIGZsb2F0IHVzZUEgPSBmbG9hdChjb21wYXJpc29uKTsKICAgIHJldHVybiBhICogdXNlQSArIGIgKiAoMS4wIC0gdXNlQSk7Cn0KCi8qKgogKiBCcmFuY2hsZXNzIHRlcm5hcnkgb3BlcmF0b3IgdG8gYmUgdXNlZCB3aGVuIGl0J3MgaW5leHBlbnNpdmUgdG8gZXhwbGljaXRseQogKiBldmFsdWF0ZSBib3RoIHBvc3NpYmlsaXRpZXMgZm9yIGEgdmVjNCBleHByZXNzaW9uLgogKgogKiBAbmFtZSBjem1fYnJhbmNoRnJlZVRlcm5hcnkKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Jvb2x9IGNvbXBhcmlzb24gQSBjb21wYXJpc29uIHN0YXRlbWVudAogKiBAcGFyYW0ge3ZlYzN9IGEgVmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUuCiAqIEBwYXJhbSB7dmVjM30gYiBWYWx1ZSB0byByZXR1cm4gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBlcXVpdmFsZW50IG9mIGNvbXBhcmlzb24gPyBhIDogYgogKi8KdmVjNCBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYm9vbCBjb21wYXJpc29uLCB2ZWM0IGEsIHZlYzQgYikgewogICAgZmxvYXQgdXNlQSA9IGZsb2F0KGNvbXBhcmlzb24pOwogICAgcmV0dXJuIGEgKiB1c2VBICsgYiAqICgxLjAgLSB1c2VBKTsKfQpgfSk7dmFyIE9RLFZRPU8oKCk9PntPUT1gCnZlYzQgY3ptX2Nhc2NhZGVDb2xvcih2ZWM0IHdlaWdodHMpCnsKICAgIHJldHVybiB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCkgKiB3ZWlnaHRzLnggKwogICAgICAgICAgIHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKSAqIHdlaWdodHMueSArCiAgICAgICAgICAgdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApICogd2VpZ2h0cy56ICsKICAgICAgICAgICB2ZWM0KDEuMCwgMC4wLCAxLjAsIDEuMCkgKiB3ZWlnaHRzLnc7Cn0KYH0pO3ZhciBHUSxCUT1PKCgpPT57R1E9YAp1bmlmb3JtIHZlYzQgc2hhZG93TWFwX2Nhc2NhZGVEaXN0YW5jZXM7CgpmbG9hdCBjem1fY2FzY2FkZURpc3RhbmNlKHZlYzQgd2VpZ2h0cykKewogICAgcmV0dXJuIGRvdChzaGFkb3dNYXBfY2FzY2FkZURpc3RhbmNlcywgd2VpZ2h0cyk7Cn0KYH0pO3ZhciBXUSxEUT1PKCgpPT57V1E9YAp1bmlmb3JtIG1hdDQgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1s0XTsKCm1hdDQgY3ptX2Nhc2NhZGVNYXRyaXgodmVjNCB3ZWlnaHRzKQp7CiAgICByZXR1cm4gc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1swXSAqIHdlaWdodHMueCArCiAgICAgICAgICAgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1sxXSAqIHdlaWdodHMueSArCiAgICAgICAgICAgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1syXSAqIHdlaWdodHMueiArCiAgICAgICAgICAgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1szXSAqIHdlaWdodHMudzsKfQpgfSk7dmFyIE1RLFVRPU8oKCk9PntNUT1gCnVuaWZvcm0gdmVjNCBzaGFkb3dNYXBfY2FzY2FkZVNwbGl0c1syXTsKCnZlYzQgY3ptX2Nhc2NhZGVXZWlnaHRzKGZsb2F0IGRlcHRoRXllKQp7CiAgICAvLyBPbmUgY29tcG9uZW50IGlzIHNldCB0byAxLjAgYW5kIGFsbCBvdGhlcnMgc2V0IHRvIDAuMC4KICAgIHZlYzQgbmVhciA9IHN0ZXAoc2hhZG93TWFwX2Nhc2NhZGVTcGxpdHNbMF0sIHZlYzQoZGVwdGhFeWUpKTsKICAgIHZlYzQgZmFyID0gc3RlcChkZXB0aEV5ZSwgc2hhZG93TWFwX2Nhc2NhZGVTcGxpdHNbMV0pOwogICAgcmV0dXJuIG5lYXIgKiBmYXI7Cn0KYH0pO3ZhciBRUSxrUT1PKCgpPT57UVE9YGZsb2F0IGdldFNpZ25lZERpc3RhbmNlKHZlYzIgdXYsIGhpZ2hwIHNhbXBsZXIyRCBjbGlwcGluZ0Rpc3RhbmNlKSB7CiAgICBmbG9hdCBzaWduZWREaXN0YW5jZSA9IHRleHR1cmUoY2xpcHBpbmdEaXN0YW5jZSwgdXYpLnI7CiAgICByZXR1cm4gKHNpZ25lZERpc3RhbmNlIC0gMC41KSAqIDIuMDsKfQoKdm9pZCBjem1fY2xpcFBvbHlnb25zKGhpZ2hwIHNhbXBsZXIyRCBjbGlwcGluZ0Rpc3RhbmNlLCBpbnQgZXh0ZW50c0xlbmd0aCwgdmVjMiBjbGlwcGluZ1Bvc2l0aW9uLCBpbnQgcmVnaW9uSW5kZXgpIHsKICAgIC8vIFBvc2l0aW9uIGlzIGNvbXBsZXRlbHkgb3V0c2lkZSBvZiBwb2x5Z29ucyBib3VuZHMKICAgIHZlYzIgcmVjdFV2ID0gY2xpcHBpbmdQb3NpdGlvbjsKICAgIGlmIChyZWdpb25JbmRleCA8IDAgfHwgcmVjdFV2LnggPD0gMC4wIHx8IHJlY3RVdi55IDw9IDAuMCB8fCByZWN0VXYueCA+PSAxLjAgfHwgcmVjdFV2LnkgPj0gMS4wKSB7CiAgICAgICAgI2lmZGVmIENMSVBQSU5HX0lOVkVSU0UgCiAgICAgICAgICAgIGRpc2NhcmQ7CiAgICAgICAgI2VuZGlmCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZlYzIgY2xpcHBpbmdEaXN0YW5jZVRleHR1cmVEaW1lbnNpb25zID0gdmVjMih0ZXh0dXJlU2l6ZShjbGlwcGluZ0Rpc3RhbmNlLCAwKSk7CiAgICB2ZWMyIHNhbXBsZU9mZnNldCA9IG1heCgxLjAgLyBjbGlwcGluZ0Rpc3RhbmNlVGV4dHVyZURpbWVuc2lvbnMsIHZlYzIoMC4wMDUpKTsKICAgIGZsb2F0IGRpbWVuc2lvbiA9IGZsb2F0KGV4dGVudHNMZW5ndGgpOwogICAgaWYgKGV4dGVudHNMZW5ndGggPiAyKSB7CiAgICAgICBkaW1lbnNpb24gPSBjZWlsKGxvZzIoZmxvYXQoZXh0ZW50c0xlbmd0aCkpKTsKICAgIH0KCiAgICB2ZWMyIHRleHR1cmVPZmZzZXQgPSB2ZWMyKG1vZChmbG9hdChyZWdpb25JbmRleCksIGRpbWVuc2lvbiksIGZsb29yKGZsb2F0KHJlZ2lvbkluZGV4KSAvIGRpbWVuc2lvbikpIC8gZGltZW5zaW9uOwogICAgdmVjMiB1diA9IHRleHR1cmVPZmZzZXQgKyByZWN0VXYgLyBkaW1lbnNpb247CgogICAgZmxvYXQgc2lnbmVkRGlzdGFuY2UgPSBnZXRTaWduZWREaXN0YW5jZSh1diwgY2xpcHBpbmdEaXN0YW5jZSk7CgogICAgI2lmZGVmIENMSVBQSU5HX0lOVkVSU0UKICAgIGlmIChzaWduZWREaXN0YW5jZSA+IDAuMCkgIHsKICAgICAgICBkaXNjYXJkOwogICAgfQogICAgI2Vsc2UKICAgIGlmIChzaWduZWREaXN0YW5jZSA8IDAuMCkgIHsKICAgICAgICBkaXNjYXJkOwogICAgfQogICAgI2VuZGlmCn0KYH0pO3ZhciBMUSx5UT1PKCgpPT57TFE9YC8qKgogKiBET0NfVEJBCiAqCiAqIEBuYW1lIGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaAogKiBAZ2xzbEZ1bmN0aW9uCiAqLwp2ZWM0IGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaCh2ZWM0IHBvc2l0aW9uMkQsIHZlYzQgcG9zaXRpb24zRCwgZmxvYXQgdGltZSkKewogICAgLy8gSnVzdCBsaW5lYXIgZm9yIG5vdy4KICAgIHZlYzMgcCA9IG1peChwb3NpdGlvbjJELnh5eiwgcG9zaXRpb24zRC54eXosIHRpbWUpOwogICAgcmV0dXJuIHZlYzQocCwgMS4wKTsKfQpgfSk7dmFyIHdRLHhRPU8oKCk9Pnt3UT1gLyoqCiAqIENvbXB1dGUgdGhlIGF0bW9zcGhlcmUgY29sb3IsIGFwcGx5aW5nIFJheWxlaWdoIGFuZCBNaWUgc2NhdHRlcmluZy4gVGhpcwogKiBidWlsdGluIHVzZXMgYXV0b21hdGljIHVuaWZvcm1zIHNvIHRoZSBhdG1vcGhlcmUgc2V0dGluZ3MgYXJlIHN5bmNlZCB3aXRoIHRoZQogKiBzdGF0ZSBvZiB0aGUgU2NlbmUsIGV2ZW4gaW4gb3RoZXIgY29udGV4dHMgbGlrZSBNb2RlbC4KICoKICogQG5hbWUgY3ptX2NvbXB1dGVBdG1vc3BoZXJlQ29sb3IKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IHBvc2l0aW9uV0MgUG9zaXRpb24gb2YgdGhlIGZyYWdtZW50IGluIHdvcmxkIGNvb3JkcyAobG93IHByZWNpc2lvbikKICogQHBhcmFtIHt2ZWMzfSBsaWdodERpcmVjdGlvbiBMaWdodCBkaXJlY3Rpb24gZnJvbSB0aGUgc3VuIG9yIG90aGVyIGxpZ2h0IHNvdXJjZS4KICogQHBhcmFtIHt2ZWMzfSByYXlsZWlnaENvbG9yIFRoZSBSYXlsZWlnaCBzY2F0dGVyaW5nIGNvbG9yIGNvbXB1dGVkIGJ5IGEgc2NhdHRlcmluZyBmdW5jdGlvbgogKiBAcGFyYW0ge3ZlYzN9IG1pZUNvbG9yIFRoZSBNaWUgc2NhdHRlcmluZyBjb2xvciBjb21wdXRlZCBieSBhIHNjYXR0ZXJpbmcgZnVuY3Rpb24KICogQHBhcmFtIHtmbG9hdH0gb3BhY2l0eSBUaGUgb3BhY2l0eSBjb21wdXRlZCBieSBhIHNjYXR0ZXJpbmcgZnVuY3Rpb24uCiAqLwp2ZWM0IGN6bV9jb21wdXRlQXRtb3NwaGVyZUNvbG9yKAogICAgdmVjMyBwb3NpdGlvbldDLAogICAgdmVjMyBsaWdodERpcmVjdGlvbiwKICAgIHZlYzMgcmF5bGVpZ2hDb2xvciwKICAgIHZlYzMgbWllQ29sb3IsCiAgICBmbG9hdCBvcGFjaXR5CikgewogICAgLy8gU2V0dXAgdGhlIHByaW1hcnkgcmF5OiBmcm9tIHRoZSBjYW1lcmEgcG9zaXRpb24gdG8gdGhlIHZlcnRleCBwb3NpdGlvbi4KICAgIHZlYzMgY2FtZXJhVG9Qb3NpdGlvbldDID0gcG9zaXRpb25XQyAtIGN6bV92aWV3ZXJQb3NpdGlvbldDOwogICAgdmVjMyBjYW1lcmFUb1Bvc2l0aW9uV0NEaXJlY3Rpb24gPSBub3JtYWxpemUoY2FtZXJhVG9Qb3NpdGlvbldDKTsKCiAgICBmbG9hdCBjb3NBbmdsZSA9IGRvdChjYW1lcmFUb1Bvc2l0aW9uV0NEaXJlY3Rpb24sIGxpZ2h0RGlyZWN0aW9uKTsKICAgIGZsb2F0IGNvc0FuZ2xlU3EgPSBjb3NBbmdsZSAqIGNvc0FuZ2xlOwoKICAgIGZsb2F0IEcgPSBjem1fYXRtb3NwaGVyZU1pZUFuaXNvdHJvcHk7CiAgICBmbG9hdCBHU3EgPSBHICogRzsKCiAgICAvLyBUaGUgUmF5bGVpZ2ggcGhhc2UgZnVuY3Rpb24uCiAgICBmbG9hdCByYXlsZWlnaFBoYXNlID0gMy4wIC8gKDUwLjI2NTQ4MjQ1NzQpICogKDEuMCArIGNvc0FuZ2xlU3EpOwogICAgLy8gVGhlIE1pZSBwaGFzZSBmdW5jdGlvbi4KICAgIGZsb2F0IG1pZVBoYXNlID0gMy4wIC8gKDI1LjEzMjc0MTIyODcpICogKCgxLjAgLSBHU3EpICogKGNvc0FuZ2xlU3EgKyAxLjApKSAvIChwb3coMS4wICsgR1NxIC0gMi4wICogY29zQW5nbGUgKiBHLCAxLjUpICogKDIuMCArIEdTcSkpOwoKICAgIC8vIFRoZSBmaW5hbCBjb2xvciBpcyBnZW5lcmF0ZWQgYnkgY29tYmluaW5nIHRoZSBlZmZlY3RzIG9mIHRoZSBSYXlsZWlnaCBhbmQgTWllIHNjYXR0ZXJpbmcuCiAgICB2ZWMzIHJheWxlaWdoID0gcmF5bGVpZ2hQaGFzZSAqIHJheWxlaWdoQ29sb3I7CiAgICB2ZWMzIG1pZSA9IG1pZVBoYXNlICogbWllQ29sb3I7CgogICAgdmVjMyBjb2xvciA9IChyYXlsZWlnaCArIG1pZSkgKiBjem1fYXRtb3NwaGVyZUxpZ2h0SW50ZW5zaXR5OwoKICAgIHJldHVybiB2ZWM0KGNvbG9yLCBvcGFjaXR5KTsKfQpgfSk7dmFyIFBRLEpRPU8oKCk9PntQUT1gLyoqCiAqIENvbXB1dGUgYXRtb3NwaGVyZSBzY2F0dGVyaW5nIGZvciB0aGUgZ3JvdW5kIGF0bW9zcGhlcmUgYW5kIGZvZy4gVGhpcyBtZXRob2QKICogdXNlcyBhdXRvbWF0aWMgdW5pZm9ybXMgc28gaXQgaXMgYWx3YXlzIHN5bmNlZCB3aXRoIHRoZSBzY2VuZSBzZXR0aW5ncy4KICoKICogQG5hbWUgY3ptX2NvbXB1dGVHcm91bmRBdG1vc3BoZXJlU2NhdHRlcmluZwogKiBAZ2xzbGZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25XQyBUaGUgcG9zaXRpb24gb2YgdGhlIGZyYWdtZW50IGluIHdvcmxkIGNvb3JkaW5hdGVzLgogKiBAcGFyYW0ge3ZlYzN9IGxpZ2h0RGlyZWN0aW9uIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxpZ2h0IHRvIGNhbGN1bGF0ZSB0aGUgc2NhdHRlcmluZyBmcm9tLgogKiBAcGFyYW0ge3ZlYzN9IHJheWxlaWdoQ29sb3IgVGhlIHZhcmlhYmxlIHRoZSBSYXlsZWlnaCBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHt2ZWMzfSBtaWVDb2xvciBUaGUgdmFyaWFibGUgdGhlIE1pZSBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHtmbG9hdH0gb3BhY2l0eSBUaGUgdmFyaWFibGUgdGhlIHRyYW5zbWl0dGFuY2Ugd2lsbCBiZSB3cml0dGVuIHRvLgogKi8Kdm9pZCBjem1fY29tcHV0ZUdyb3VuZEF0bW9zcGhlcmVTY2F0dGVyaW5nKHZlYzMgcG9zaXRpb25XQywgdmVjMyBsaWdodERpcmVjdGlvbiwgb3V0IHZlYzMgcmF5bGVpZ2hDb2xvciwgb3V0IHZlYzMgbWllQ29sb3IsIG91dCBmbG9hdCBvcGFjaXR5KSB7CiAgICB2ZWMzIGNhbWVyYVRvUG9zaXRpb25XQyA9IHBvc2l0aW9uV0MgLSBjem1fdmlld2VyUG9zaXRpb25XQzsKICAgIHZlYzMgY2FtZXJhVG9Qb3NpdGlvbldDRGlyZWN0aW9uID0gbm9ybWFsaXplKGNhbWVyYVRvUG9zaXRpb25XQyk7CiAgICBjem1fcmF5IHByaW1hcnlSYXkgPSBjem1fcmF5KGN6bV92aWV3ZXJQb3NpdGlvbldDLCBjYW1lcmFUb1Bvc2l0aW9uV0NEaXJlY3Rpb24pOwoKICAgIGZsb2F0IGF0bW9zcGhlcmVJbm5lclJhZGl1cyA9IGxlbmd0aChwb3NpdGlvbldDKTsKCiAgICBjem1fY29tcHV0ZVNjYXR0ZXJpbmcoCiAgICAgICAgcHJpbWFyeVJheSwKICAgICAgICBsZW5ndGgoY2FtZXJhVG9Qb3NpdGlvbldDKSwKICAgICAgICBsaWdodERpcmVjdGlvbiwKICAgICAgICBhdG1vc3BoZXJlSW5uZXJSYWRpdXMsCiAgICAgICAgcmF5bGVpZ2hDb2xvciwKICAgICAgICBtaWVDb2xvciwKICAgICAgICBvcGFjaXR5CiAgICApOwp9CmB9KTt2YXIgalEsSFE9TygoKT0+e2pRPWAvKioKICogUmV0dXJucyBhIHBvc2l0aW9uIGluIG1vZGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIGV5ZSB0YWtpbmcgaW50bwogKiBhY2NvdW50IHRoZSBjdXJyZW50IHNjZW5lIG1vZGU6IDNELCAyRCwgb3IgQ29sdW1idXMgdmlldy4KICogPHA+CiAqIFRoaXMgdXNlcyBzdGFuZGFyZCBwb3NpdGlvbiBhdHRyaWJ1dGVzLCA8Y29kZT5wb3NpdGlvbjNESGlnaDwvY29kZT4sIAogKiA8Y29kZT5wb3NpdGlvbjNETG93PC9jb2RlPiwgPGNvZGU+cG9zaXRpb24yREhpZ2g8L2NvZGU+LCBhbmQgPGNvZGU+cG9zaXRpb24yRExvdzwvY29kZT4sIAogKiBhbmQgc2hvdWxkIGJlIHVzZWQgd2hlbiB3cml0aW5nIGEgdmVydGV4IHNoYWRlciBmb3IgYW4ge0BsaW5rIEFwcGVhcmFuY2V9LgogKiA8L3A+CiAqCiAqIEBuYW1lIGN6bV9jb21wdXRlUG9zaXRpb24KICogQGdsc2xGdW5jdGlvbgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGV5ZS4KICoKICogQGV4YW1wbGUKICogdmVjNCBwID0gY3ptX2NvbXB1dGVQb3NpdGlvbigpOwogKiB2X3Bvc2l0aW9uRUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwKS54eXo7CiAqIGdsX1Bvc2l0aW9uID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcDsKICoKICogQHNlZSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZQogKi8KdmVjNCBjem1fY29tcHV0ZVBvc2l0aW9uKCk7CmB9KTt2YXIgdlEselE9TygoKT0+e3ZRPWAvKioKICogVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgY29sb3JzIGNvbnRyaWJ1dGVkIGJ5IFJheWxpZWdoIGFuZCBNaWUgc2NhdHRlcmluZyBvbiBhIGdpdmVuIHJheSwgYXMgd2VsbCBhcwogKiB0aGUgdHJhbnNtaXR0YW5jZSB2YWx1ZSBmb3IgdGhlIHJheS4gVGhpcyBmdW5jdGlvbiB1c2VzIGF1dG9tYXRpYyB1bmlmb3JtcwogKiBzbyB0aGUgYXRtb3NwaGVyZSBzZXR0aW5ncyBhcmUgYWx3YXlzIHN5bmNlZCB3aXRoIHRoZSBjdXJyZW50IHNjZW5lLgogKgogKiBAbmFtZSBjem1fY29tcHV0ZVNjYXR0ZXJpbmcKICogQGdsc2xmdW5jdGlvbgogKgogKiBAcGFyYW0ge2N6bV9yYXl9IHByaW1hcnlSYXkgVGhlIHJheSBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIHBvc2l0aW9uLgogKiBAcGFyYW0ge2Zsb2F0fSBwcmltYXJ5UmF5TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHByaW1hcnkgcmF5LgogKiBAcGFyYW0ge3ZlYzN9IGxpZ2h0RGlyZWN0aW9uIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxpZ2h0IHRvIGNhbGN1bGF0ZSB0aGUgc2NhdHRlcmluZyBmcm9tLgogKiBAcGFyYW0ge3ZlYzN9IHJheWxlaWdoQ29sb3IgVGhlIHZhcmlhYmxlIHRoZSBSYXlsZWlnaCBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHt2ZWMzfSBtaWVDb2xvciBUaGUgdmFyaWFibGUgdGhlIE1pZSBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHtmbG9hdH0gb3BhY2l0eSBUaGUgdmFyaWFibGUgdGhlIHRyYW5zbWl0dGFuY2Ugd2lsbCBiZSB3cml0dGVuIHRvLgogKi8Kdm9pZCBjem1fY29tcHV0ZVNjYXR0ZXJpbmcoCiAgICBjem1fcmF5IHByaW1hcnlSYXksCiAgICBmbG9hdCBwcmltYXJ5UmF5TGVuZ3RoLAogICAgdmVjMyBsaWdodERpcmVjdGlvbiwKICAgIGZsb2F0IGF0bW9zcGhlcmVJbm5lclJhZGl1cywKICAgIG91dCB2ZWMzIHJheWxlaWdoQ29sb3IsCiAgICBvdXQgdmVjMyBtaWVDb2xvciwKICAgIG91dCBmbG9hdCBvcGFjaXR5CikgewogICAgY29uc3QgZmxvYXQgQVRNT1NQSEVSRV9USElDS05FU1MgPSAxMTFlMzsgLy8gVGhlIHRoaWNrbmVzcyBvZiB0aGUgYXRtb3NwaGVyZSBpbiBtZXRlcnMuCiAgICBjb25zdCBpbnQgUFJJTUFSWV9TVEVQU19NQVggPSAxNjsgLy8gTWF4aW11bSBudW1iZXIgb2YgdGltZXMgdGhlIHJheSBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIHdvcmxkIHBvc2l0aW9uIChwcmltYXJ5IHJheSkgaXMgc2FtcGxlZC4KICAgIGNvbnN0IGludCBMSUdIVF9TVEVQU19NQVggPSA0OyAvLyBNYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgbGlnaHQgaXMgc2FtcGxlZCBmcm9tIHRoZSBsaWdodCBzb3VyY2UncyBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgYXRtb3NwaGVyZSB0byBhIHNhbXBsZSBwb3NpdGlvbiBvbiB0aGUgcHJpbWFyeSByYXkuCgogICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBzY2F0dGVyaW5nIGFtb3VudHMgdG8gMC4KICAgIHJheWxlaWdoQ29sb3IgPSB2ZWMzKDAuMCk7CiAgICBtaWVDb2xvciA9IHZlYzMoMC4wKTsKICAgIG9wYWNpdHkgPSAwLjA7CgogICAgZmxvYXQgYXRtb3NwaGVyZU91dGVyUmFkaXVzID0gYXRtb3NwaGVyZUlubmVyUmFkaXVzICsgQVRNT1NQSEVSRV9USElDS05FU1M7CgogICAgdmVjMyBvcmlnaW4gPSB2ZWMzKDAuMCk7CgogICAgLy8gQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIG91dGVyIHJpbmcgb2YgdGhlIGF0bW9zcGhlcmUuCiAgICBjem1fcmF5U2VnbWVudCBwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdCA9IGN6bV9yYXlTcGhlcmVJbnRlcnNlY3Rpb25JbnRlcnZhbChwcmltYXJ5UmF5LCBvcmlnaW4sIGF0bW9zcGhlcmVPdXRlclJhZGl1cyk7CgogICAgLy8gUmV0dXJuIGVtcHR5IGNvbG9ycyBpZiBubyBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgYXRtb3NwaGVyZSBnZW9tZXRyeS4KICAgIGlmIChwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdCA9PSBjem1fZW1wdHlSYXlTZWdtZW50KSB7CiAgICAgICAgcmF5bGVpZ2hDb2xvciA9IHZlYzMoMS4wLCAwLjAsIDEuMCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFRvIGRlYWwgd2l0aCBzbWFsbGVyIHZhbHVlcyBvZiBQUklNQVJZX1NURVBTIChlLmcuIDQpCiAgICAvLyB3ZSBpbXBsZW1lbnQgYSBzcGxpdCBzdHJhdGVneTogc2t5IG9yIGhvcml6b24uCiAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgaW5zdGVhZCBvZiBhIGlmL2Vsc2UgYnJhbmNoCiAgICAvLyBhIHNvZnQgY2hvaWNlIGlzIGltcGxlbWVudGVkIHRocm91Z2ggYSB3ZWlnaHQgMC4wIDw9IHdfc3RvcF9ndF9scHJsIDw9IDEuMAogICAgZmxvYXQgeCA9IDFlLTcgKiBwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdC5zdG9wIC8gbGVuZ3RoKHByaW1hcnlSYXlMZW5ndGgpOwogICAgLy8gVmFsdWUgY2xvc2UgdG8gMC4wOiBjbG9zZSB0byB0aGUgaG9yaXpvbgogICAgLy8gVmFsdWUgY2xvc2UgdG8gMS4wOiBhYm92ZSBpbiB0aGUgc2t5CiAgICBmbG9hdCB3X3N0b3BfZ3RfbHBybCA9IDAuNSAqICgxLjAgKyBjem1fYXBwcm94aW1hdGVUYW5oKHgpKTsKCiAgICAvLyBUaGUgcmF5IHNob3VsZCBzdGFydCBmcm9tIHRoZSBmaXJzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgb3V0ZXIgYXRtb3BzaGVyZSwgb3IgZnJvbSB0aGUgY2FtZXJhIHBvc2l0aW9uLCBpZiBpdCBpcyBpbnNpZGUgdGhlIGF0bW9zcGhlcmUuCiAgICBmbG9hdCBzdGFydF8wID0gcHJpbWFyeVJheUF0bW9zcGhlcmVJbnRlcnNlY3Quc3RhcnQ7CiAgICBwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdC5zdGFydCA9IG1heChwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdC5zdGFydCwgMC4wKTsKICAgIC8vIFRoZSByYXkgc2hvdWxkIGVuZCBhdCB0aGUgZXhpdCBmcm9tIHRoZSBhdG1vc3BoZXJlIG9yIGF0IHRoZSBkaXN0YW5jZSB0byB0aGUgdmVydGV4LCB3aGljaGV2ZXIgaXMgc21hbGxlci4KICAgIHByaW1hcnlSYXlBdG1vc3BoZXJlSW50ZXJzZWN0LnN0b3AgPSBtaW4ocHJpbWFyeVJheUF0bW9zcGhlcmVJbnRlcnNlY3Quc3RvcCwgbGVuZ3RoKHByaW1hcnlSYXlMZW5ndGgpKTsKCiAgICAvLyBGb3IgdGhlIG51bWJlciBvZiByYXkgc3RlcHMsIGRpc3Rpbmd1aXNoIGluc2lkZSBvciBvdXRzaWRlIGF0bW9zcGhlcmUgKG91dGVyIHNwYWNlKQogICAgLy8gKDEpIGZyb20gb3V0ZXIgc3BhY2Ugd2UgaGF2ZSB0byB1c2UgbW9yZSByYXkgc3RlcHMgdG8gZ2V0IGEgcmVhbGlzdGljIHJlbmRlcmluZwogICAgLy8gKDIpIHdpdGhpbiBhdG1vc3BoZXJlIHdlIG5lZWQgZmV3ZXIgc3RlcHMgZm9yIGZhc3RlciByZW5kZXJpbmcKICAgIGZsb2F0IHhfb19hID0gc3RhcnRfMCAtIEFUTU9TUEhFUkVfVEhJQ0tORVNTOyAvLyBBVE1PU1BIRVJFX1RISUNLTkVTUyB1c2VkIGFzIGFuIGFkLWhvYyBjb25zdGFudCwgbm8gcHJlY2lzZSBtZWFuaW5nIGhlcmUsIG9ubHkgdGhlIG9yZGVyIG9mIG1hZ25pdHVkZSBtYXR0ZXJzCiAgICBmbG9hdCB3X2luc2lkZV9hdG1vc3BoZXJlID0gMS4wIC0gMC41ICogKDEuMCArIGN6bV9hcHByb3hpbWF0ZVRhbmgoeF9vX2EpKTsKICAgIGludCBQUklNQVJZX1NURVBTID0gUFJJTUFSWV9TVEVQU19NQVggLSBpbnQod19pbnNpZGVfYXRtb3NwaGVyZSAqIDEyLjApOyAvLyBOdW1iZXIgb2YgdGltZXMgdGhlIHJheSBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIHdvcmxkIHBvc2l0aW9uIChwcmltYXJ5IHJheSkgaXMgc2FtcGxlZC4KICAgIGludCBMSUdIVF9TVEVQUyA9IExJR0hUX1NURVBTX01BWCAtIGludCh3X2luc2lkZV9hdG1vc3BoZXJlICogMi4wKTsgLy8gTnVtYmVyIG9mIHRpbWVzIHRoZSBsaWdodCBpcyBzYW1wbGVkIGZyb20gdGhlIGxpZ2h0IHNvdXJjZSdzIGludGVyc2VjdGlvbiB3aXRoIHRoZSBhdG1vc3BoZXJlIHRvIGEgc2FtcGxlIHBvc2l0aW9uIG9uIHRoZSBwcmltYXJ5IHJheS4KCiAgICAvLyBTZXR1cCBmb3Igc2FtcGxpbmcgcG9zaXRpb25zIGFsb25nIHRoZSByYXkgLSBzdGFydGluZyBmcm9tIHRoZSBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgb3V0ZXIgcmluZyBvZiB0aGUgYXRtb3NwaGVyZS4KICAgIGZsb2F0IHJheVBvc2l0aW9uTGVuZ3RoID0gcHJpbWFyeVJheUF0bW9zcGhlcmVJbnRlcnNlY3Quc3RhcnQ7CiAgICAvLyAoMSkgT3V0c2lkZSB0aGUgYXRtb3NwaGVyZTogY29uc3RhbnQgcmF5U3RlcExlbmd0aAogICAgLy8gKDIpIEluc2lkZSBhdG1vc3BoZXJlOiB2YXJpYWJsZSByYXlTdGVwTGVuZ3RoIHRvIGNvbXBlbnNhdGUgdGhlIHJvdWdoIHJlbmRlcmluZyBvZiB0aGUgc21hbGxlciBudW1iZXIgb2YgcmF5IHN0ZXBzCiAgICBmbG9hdCB0b3RhbFJheUxlbmd0aCA9IHByaW1hcnlSYXlBdG1vc3BoZXJlSW50ZXJzZWN0LnN0b3AgLSByYXlQb3NpdGlvbkxlbmd0aDsKICAgIGZsb2F0IHJheVN0ZXBMZW5ndGhJbmNyZWFzZSA9IHdfaW5zaWRlX2F0bW9zcGhlcmUgKiAoKDEuMCAtIHdfc3RvcF9ndF9scHJsKSAqIHRvdGFsUmF5TGVuZ3RoIC8gKGZsb2F0KFBSSU1BUllfU1RFUFMgKiAoUFJJTUFSWV9TVEVQUyArIDEpKSAvIDIuMCkpOwogICAgZmxvYXQgcmF5U3RlcExlbmd0aCA9IG1heCgxLjAgLSB3X2luc2lkZV9hdG1vc3BoZXJlLCB3X3N0b3BfZ3RfbHBybCkgKiB0b3RhbFJheUxlbmd0aCAvIG1heCg3LjAgKiB3X2luc2lkZV9hdG1vc3BoZXJlLCBmbG9hdChQUklNQVJZX1NURVBTKSk7CgogICAgdmVjMyByYXlsZWlnaEFjY3VtdWxhdGlvbiA9IHZlYzMoMC4wKTsKICAgIHZlYzMgbWllQWNjdW11bGF0aW9uID0gdmVjMygwLjApOwogICAgdmVjMiBvcHRpY2FsRGVwdGggPSB2ZWMyKDAuMCk7CiAgICB2ZWMyIGhlaWdodFNjYWxlID0gdmVjMihjem1fYXRtb3NwaGVyZVJheWxlaWdoU2NhbGVIZWlnaHQsIGN6bV9hdG1vc3BoZXJlTWllU2NhbGVIZWlnaHQpOwoKICAgIC8vIFNhbXBsZSBwb3NpdGlvbnMgb24gdGhlIHByaW1hcnkgcmF5LgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQUklNQVJZX1NURVBTX01BWDsgKytpKSB7CgogICAgICAgIC8vIFRoZSBsb29wIHNob3VsZCBiZTogZm9yIChpbnQgaSA9IDA7IGkgPCBQUklNQVJZX1NURVBTOyArK2kpIHsuLi59IGJ1dCBXZWJHTDEgY2Fubm90CiAgICAgICAgLy8gbG9vcCB3aXRoIG5vbi1jb25zdGFudCBjb25kaXRpb24sIHNvIGl0IGhhcyB0byBicmVhayBlYXJseSBpbnN0ZWFkCiAgICAgICAgaWYgKGkgPj0gUFJJTUFSWV9TVEVQUykgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIC8vIENhbGN1bGF0ZSBzYW1wbGUgcG9zaXRpb24gYWxvbmcgdmlld3BvaW50IHJheS4KICAgICAgICB2ZWMzIHNhbXBsZVBvc2l0aW9uID0gcHJpbWFyeVJheS5vcmlnaW4gKyBwcmltYXJ5UmF5LmRpcmVjdGlvbiAqIChyYXlQb3NpdGlvbkxlbmd0aCArIHJheVN0ZXBMZW5ndGgpOwoKICAgICAgICAvLyBDYWxjdWxhdGUgaGVpZ2h0IG9mIHNhbXBsZSBwb3NpdGlvbiBhYm92ZSBlbGxpcHNvaWQuCiAgICAgICAgZmxvYXQgc2FtcGxlSGVpZ2h0ID0gbGVuZ3RoKHNhbXBsZVBvc2l0aW9uKSAtIGF0bW9zcGhlcmVJbm5lclJhZGl1czsKCiAgICAgICAgLy8gQ2FsY3VsYXRlIGFuZCBhY2N1bXVsYXRlIGRlbnNpdHkgb2YgcGFydGljbGVzIGF0IHRoZSBzYW1wbGUgcG9zaXRpb24uCiAgICAgICAgdmVjMiBzYW1wbGVEZW5zaXR5ID0gZXhwKC1zYW1wbGVIZWlnaHQgLyBoZWlnaHRTY2FsZSkgKiByYXlTdGVwTGVuZ3RoOwogICAgICAgIG9wdGljYWxEZXB0aCArPSBzYW1wbGVEZW5zaXR5OwoKICAgICAgICAvLyBHZW5lcmF0ZSByYXkgZnJvbSB0aGUgc2FtcGxlIHBvc2l0aW9uIHNlZ21lbnQgdG8gdGhlIGxpZ2h0IHNvdXJjZSwgdXAgdG8gdGhlIG91dGVyIHJpbmcgb2YgdGhlIGF0bW9zcGhlcmUuCiAgICAgICAgY3ptX3JheSBsaWdodFJheSA9IGN6bV9yYXkoc2FtcGxlUG9zaXRpb24sIGxpZ2h0RGlyZWN0aW9uKTsKICAgICAgICBjem1fcmF5U2VnbWVudCBsaWdodFJheUF0bW9zcGhlcmVJbnRlcnNlY3QgPSBjem1fcmF5U3BoZXJlSW50ZXJzZWN0aW9uSW50ZXJ2YWwobGlnaHRSYXksIG9yaWdpbiwgYXRtb3NwaGVyZU91dGVyUmFkaXVzKTsKCiAgICAgICAgZmxvYXQgbGlnaHRTdGVwTGVuZ3RoID0gbGlnaHRSYXlBdG1vc3BoZXJlSW50ZXJzZWN0LnN0b3AgLyBmbG9hdChMSUdIVF9TVEVQUyk7CiAgICAgICAgZmxvYXQgbGlnaHRQb3NpdGlvbkxlbmd0aCA9IDAuMDsKCiAgICAgICAgdmVjMiBsaWdodE9wdGljYWxEZXB0aCA9IHZlYzIoMC4wKTsKCiAgICAgICAgLy8gU2FtcGxlIHBvc2l0aW9ucyBhbG9uZyB0aGUgbGlnaHQgcmF5LCB0byBhY2N1bXVsYXRlIGluY2lkZW5jZSBvZiBsaWdodCBvbiB0aGUgbGF0ZXN0IHNhbXBsZSBzZWdtZW50LgogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTElHSFRfU1RFUFNfTUFYOyArK2opIHsKCiAgICAgICAgICAgIC8vIFRoZSBsb29wIHNob3VsZCBiZTogZm9yIChpbnQgaiA9IDA7IGkgPCBMSUdIVF9TVEVQUzsgKytqKSB7Li4ufSBidXQgV2ViR0wxIGNhbm5vdAogICAgICAgICAgICAvLyBsb29wIHdpdGggbm9uLWNvbnN0YW50IGNvbmRpdGlvbiwgc28gaXQgaGFzIHRvIGJyZWFrIGVhcmx5IGluc3RlYWQKICAgICAgICAgICAgaWYgKGogPj0gTElHSFRfU1RFUFMpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHBvc2l0aW9uIGFsb25nIGxpZ2h0IHJheS4KICAgICAgICAgICAgdmVjMyBsaWdodFBvc2l0aW9uID0gc2FtcGxlUG9zaXRpb24gKyBsaWdodERpcmVjdGlvbiAqIChsaWdodFBvc2l0aW9uTGVuZ3RoICsgbGlnaHRTdGVwTGVuZ3RoICogMC41KTsKCiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBoZWlnaHQgb2YgdGhlIGxpZ2h0IHNhbXBsZSBwb3NpdGlvbiBhYm92ZSBlbGxpcHNvaWQuCiAgICAgICAgICAgIGZsb2F0IGxpZ2h0SGVpZ2h0ID0gbGVuZ3RoKGxpZ2h0UG9zaXRpb24pIC0gYXRtb3NwaGVyZUlubmVyUmFkaXVzOwoKICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGRlbnNpdHkgb2YgcGhvdG9ucyBhdCB0aGUgbGlnaHQgc2FtcGxlIHBvc2l0aW9uLgogICAgICAgICAgICBsaWdodE9wdGljYWxEZXB0aCArPSBleHAoLWxpZ2h0SGVpZ2h0IC8gaGVpZ2h0U2NhbGUpICogbGlnaHRTdGVwTGVuZ3RoOwoKICAgICAgICAgICAgLy8gSW5jcmVtZW50IGRpc3RhbmNlIG9uIGxpZ2h0IHJheS4KICAgICAgICAgICAgbGlnaHRQb3NpdGlvbkxlbmd0aCArPSBsaWdodFN0ZXBMZW5ndGg7CiAgICAgICAgfQoKICAgICAgICAvLyBDb21wdXRlIGF0dGVudWF0aW9uIHZpYSB0aGUgcHJpbWFyeSByYXkgYW5kIHRoZSBsaWdodCByYXkuCiAgICAgICAgdmVjMyBhdHRlbnVhdGlvbiA9IGV4cCgtKChjem1fYXRtb3NwaGVyZU1pZUNvZWZmaWNpZW50ICogKG9wdGljYWxEZXB0aC55ICsgbGlnaHRPcHRpY2FsRGVwdGgueSkpICsgKGN6bV9hdG1vc3BoZXJlUmF5bGVpZ2hDb2VmZmljaWVudCAqIChvcHRpY2FsRGVwdGgueCArIGxpZ2h0T3B0aWNhbERlcHRoLngpKSkpOwoKICAgICAgICAvLyBBY2N1bXVsYXRlIHRoZSBzY2F0dGVyaW5nLgogICAgICAgIHJheWxlaWdoQWNjdW11bGF0aW9uICs9IHNhbXBsZURlbnNpdHkueCAqIGF0dGVudWF0aW9uOwogICAgICAgIG1pZUFjY3VtdWxhdGlvbiArPSBzYW1wbGVEZW5zaXR5LnkgKiBhdHRlbnVhdGlvbjsKCiAgICAgICAgLy8gSW5jcmVtZW50IGRpc3RhbmNlIG9uIHByaW1hcnkgcmF5LgogICAgICAgIHJheVBvc2l0aW9uTGVuZ3RoICs9IChyYXlTdGVwTGVuZ3RoICs9IHJheVN0ZXBMZW5ndGhJbmNyZWFzZSk7CiAgICB9CgogICAgLy8gQ29tcHV0ZSB0aGUgc2NhdHRlcmluZyBhbW91bnQuCiAgICByYXlsZWlnaENvbG9yID0gY3ptX2F0bW9zcGhlcmVSYXlsZWlnaENvZWZmaWNpZW50ICogcmF5bGVpZ2hBY2N1bXVsYXRpb247CiAgICBtaWVDb2xvciA9IGN6bV9hdG1vc3BoZXJlTWllQ29lZmZpY2llbnQgKiBtaWVBY2N1bXVsYXRpb247CgogICAgLy8gQ29tcHV0ZSB0aGUgdHJhbnNtaXR0YW5jZSBpLmUuIGhvdyBtdWNoIGxpZ2h0IGlzIHBhc3NpbmcgdGhyb3VnaCB0aGUgYXRtb3NwaGVyZS4KICAgIG9wYWNpdHkgPSBsZW5ndGgoZXhwKC0oKGN6bV9hdG1vc3BoZXJlTWllQ29lZmZpY2llbnQgKiBvcHRpY2FsRGVwdGgueSkgKyAoY3ptX2F0bW9zcGhlcmVSYXlsZWlnaENvZWZmaWNpZW50ICogb3B0aWNhbERlcHRoLngpKSkpOwp9CmB9KTt2YXIgS1EsWFE9TygoKT0+e0tRPWAvKioKICogQHByaXZhdGUKICovCnZlYzIgY29yZGljKGZsb2F0IGFuZ2xlKQp7Ci8vIFNjYWxlIHRoZSB2ZWN0b3IgYnkgdGhlIGFwcHJvcHJpYXRlIGZhY3RvciBmb3IgdGhlIDI0IGl0ZXJhdGlvbnMgdG8gZm9sbG93LgogICAgdmVjMiB2ZWN0b3IgPSB2ZWMyKDYuMDcyNTI5MzUwMDg4ODI2N2UtMSwgMC4wKTsKLy8gSXRlcmF0aW9uIDEKICAgIGZsb2F0IHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAvLyAgIGZsb2F0IGZhY3RvciA9IHNlbnNlICogMS4wOyAgLy8gMl4tMAogICAgbWF0MiByb3RhdGlvbiA9IG1hdDIoMS4wLCBzZW5zZSwgLXNlbnNlLCAxLjApOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDcuODUzOTgxNjMzOTc0NDgyOGUtMTsgIC8vIGF0YW4oMl4tMCkKLy8gSXRlcmF0aW9uIDIKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmbG9hdCBmYWN0b3IgPSBzZW5zZSAqIDUuMGUtMTsgIC8vIDJeLTEKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDQuNjM2NDc2MDkwMDA4MDYwOWUtMTsgIC8vIGF0YW4oMl4tMSkKLy8gSXRlcmF0aW9uIDMKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDIuNWUtMTsgIC8vIDJeLTIKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDIuNDQ5Nzg2NjMxMjY4NjQxNGUtMTsgIC8vIGF0YW4oMl4tMikKLy8gSXRlcmF0aW9uIDQKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDEuMjVlLTE7ICAvLyAyXi0zCiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAxLjI0MzU0OTk0NTQ2NzYxNDRlLTE7ICAvLyBhdGFuKDJeLTMpCi8vIEl0ZXJhdGlvbiA1CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiA2LjI1ZS0yOyAgLy8gMl4tNAogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogNi4yNDE4ODA5OTk1OTU3MzUwZS0yOyAgLy8gYXRhbigyXi00KQovLyBJdGVyYXRpb24gNgogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMy4xMjVlLTI7ICAvLyAyXi01CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAzLjEyMzk4MzM0MzAyNjgyNzdlLTI7ICAvLyBhdGFuKDJeLTUpCi8vIEl0ZXJhdGlvbiA3CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAxLjU2MjVlLTI7ICAvLyAyXi02CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAxLjU2MjM3Mjg2MjA0NzY4MzFlLTI7ICAvLyBhdGFuKDJeLTYpCi8vIEl0ZXJhdGlvbiA4CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiA3LjgxMjVlLTM7ICAvLyAyXi03CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiA3LjgxMjM0MTA2MDEwMTExMTFlLTM7ICAvLyBhdGFuKDJeLTcpCi8vIEl0ZXJhdGlvbiA5CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAzLjkwNjI1ZS0zOyAgLy8gMl4tOAogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogMy45MDYyMzAxMzE5NjY5NzE4ZS0zOyAgLy8gYXRhbigyXi04KQovLyBJdGVyYXRpb24gMTAKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDEuOTUzMTI1ZS0zOyAgLy8gMl4tOQogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogMS45NTMxMjI1MTY0Nzg4MTg4ZS0zOyAgLy8gYXRhbigyXi05KQovLyBJdGVyYXRpb24gMTEKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDkuNzY1NjI1ZS00OyAgLy8gMl4tMTAKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDkuNzY1NjIxODk1NTkzMTk0NmUtNDsgIC8vIGF0YW4oMl4tMTApCi8vIEl0ZXJhdGlvbiAxMgogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNC44ODI4MTI1ZS00OyAgLy8gMl4tMTEKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDQuODgyODEyMTExOTQ4OTgyOWUtNDsgIC8vIGF0YW4oMl4tMTEpCi8vIEl0ZXJhdGlvbiAxMwogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMi40NDE0MDYyNWUtNDsgIC8vIDJeLTEyCiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAyLjQ0MTQwNjIwMTQ5MzYxNzdlLTQ7ICAvLyBhdGFuKDJeLTEyKQovLyBJdGVyYXRpb24gMTQKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDEuMjIwNzAzMTI1ZS00OyAgLy8gMl4tMTMKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDEuMjIwNzAzMTE4OTM2NzAyMWUtNDsgIC8vIGF0YW4oMl4tMTMpCi8vIEl0ZXJhdGlvbiAxNQogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNi4xMDM1MTU2MjVlLTU7ICAvLyAyXi0xNAogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogNi4xMDM1MTU2MTc0MjA4NzczZS01OyAgLy8gYXRhbigyXi0xNCkKLy8gSXRlcmF0aW9uIDE2CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAzLjA1MTc1NzgxMjVlLTU7ICAvLyAyXi0xNQogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogMy4wNTE3NTc4MTE1NTI2MDk2ZS01OyAgLy8gYXRhbigyXi0xNSkKLy8gSXRlcmF0aW9uIDE3CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAxLjUyNTg3ODkwNjI1ZS01OyAgLy8gMl4tMTYKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDEuNTI1ODc4OTA2MTMxNTc2MmUtNTsgIC8vIGF0YW4oMl4tMTYpCi8vIEl0ZXJhdGlvbiAxOAogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNy42MjkzOTQ1MzEyNWUtNjsgIC8vIDJeLTE3CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiA3LjYyOTM5NDUzMTEwMTk3MDBlLTY7ICAvLyBhdGFuKDJeLTE3KQovLyBJdGVyYXRpb24gMTkKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDMuODE0Njk3MjY1NjI1ZS02OyAgLy8gMl4tMTgKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDMuODE0Njk3MjY1NjA2NDk2MWUtNjsgIC8vIGF0YW4oMl4tMTgpCi8vIEl0ZXJhdGlvbiAyMAogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMS45MDczNDg2MzI4MTI1ZS02OyAgLy8gMl4tMTkKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDEuOTA3MzQ4NjMyODEwMTg3MGUtNjsgIC8vIGF0YW4oMl4tMTkpCi8vIEl0ZXJhdGlvbiAyMQogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogOS41MzY3NDMxNjQwNjI1ZS03OyAgLy8gMl4tMjAKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDkuNTM2NzQzMTY0MDU5NjA4NGUtNzsgIC8vIGF0YW4oMl4tMjApCi8vIEl0ZXJhdGlvbiAyMgogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNC43NjgzNzE1ODIwMzEyNWUtNzsgIC8vIDJeLTIxCiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiA0Ljc2ODM3MTU4MjAzMDg4ODRlLTc7ICAvLyBhdGFuKDJeLTIxKQovLyBJdGVyYXRpb24gMjMKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDIuMzg0MTg1NzkxMDE1NjI1ZS03OyAgLy8gMl4tMjIKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDIuMzg0MTg1NzkxMDE1NTc5N2UtNzsgIC8vIGF0YW4oMl4tMjIpCi8vIEl0ZXJhdGlvbiAyNAogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMS4xOTIwOTI4OTU1MDc4MTI1ZS03OyAgLy8gMl4tMjMKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7Ci8vICAgIGFuZ2xlIC09IHNlbnNlICogMS4xOTIwOTI4OTU1MDc4MDY4ZS03OyAgLy8gYXRhbigyXi0yMykKCiAgICByZXR1cm4gdmVjdG9yOwp9CgovKioKICogQ29tcHV0ZXMgdGhlIGNvc2luZSBhbmQgc2luZSBvZiB0aGUgcHJvdmlkZWQgYW5nbGUgdXNpbmcgdGhlIENPUkRJQyBhbGdvcml0aG0uCiAqCiAqIEBuYW1lIGN6bV9jb3NpbmVBbmRTaW5lCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtmbG9hdH0gYW5nbGUgVGhlIGFuZ2xlIGluIHJhZGlhbnMuCiAqCiAqIEByZXR1cm5zIHt2ZWMyfSBUaGUgcmVzdWx0aW5nIGNvc2luZSBvZiB0aGUgYW5nbGUgKGFzIHRoZSB4IGNvb3JkaW5hdGUpIGFuZCBzaW5lIG9mIHRoZSBhbmdsZSAoYXMgdGhlIHkgY29vcmRpbmF0ZSkuCiAqCiAqIEBleGFtcGxlCiAqIHZlYzIgdiA9IGN6bV9jb3NpbmVBbmRTaW5lKGN6bV9waU92ZXJTaXgpOwogKiBmbG9hdCBjb3NpbmUgPSB2Lng7CiAqIGZsb2F0IHNpbmUgPSB2Lnk7CiAqLwp2ZWMyIGN6bV9jb3NpbmVBbmRTaW5lKGZsb2F0IGFuZ2xlKQp7CiAgICBpZiAoYW5nbGUgPCAtY3ptX3BpT3ZlclR3byB8fCBhbmdsZSA+IGN6bV9waU92ZXJUd28pCiAgICB7CiAgICAgICAgaWYgKGFuZ2xlIDwgMC4wKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIC1jb3JkaWMoYW5nbGUgKyBjem1fcGkpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gLWNvcmRpYyhhbmdsZSAtIGN6bV9waSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHJldHVybiBjb3JkaWMoYW5nbGUpOwogICAgfQp9CmB9KTt2YXIgcVEsJFE9TygoKT0+e3FRPWAvKioKICogRGVjb21wcmVzc2VzIHRleHR1cmUgY29vcmRpbmF0ZXMgdGhhdCB3ZXJlIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGZsb2F0LgogKgogKiBAbmFtZSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGVuY29kZWQgVGhlIGNvbXByZXNzZWQgdGV4dHVyZSBjb29yZGluYXRlcy4KICogQHJldHVybnMge3ZlYzJ9IFRoZSBkZWNvbXByZXNzZWQgdGV4dHVyZSBjb29yZGluYXRlcy4KICovCiB2ZWMyIGN6bV9kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKGZsb2F0IGVuY29kZWQpCiB7CiAgICBmbG9hdCB0ZW1wID0gZW5jb2RlZCAvIDQwOTYuMDsKICAgIGZsb2F0IHhaZXJvVG80MDk1ID0gZmxvb3IodGVtcCk7CiAgICBmbG9hdCBzdHggPSB4WmVyb1RvNDA5NSAvIDQwOTUuMDsKICAgIGZsb2F0IHN0eSA9IChlbmNvZGVkIC0geFplcm9UbzQwOTUgKiA0MDk2LjApIC8gNDA5NS4wOwogICAgcmV0dXJuIHZlYzIoc3R4LCBzdHkpOwogfQpgfSk7dmFyIHQxLGUxPU8oKCk9Pnt0MT1gLyoqCiAqIEdldCBkZWZhdWx0IHBhcmFtZXRlcnMgZm9yIHBoeXNpY2FsbHkgYmFzZWQgcmVuZGVyaW5nLiBUaGVzZSBkZWZhdWx0cwogKiBkZXNjcmliZSBhIHJvdWdoIGRpZWxlY3RyaWMgKG5vbi1tZXRhbCkgc3VyZmFjZSAoZS5nLiByb3VnaCBwbGFzdGljKS4KICoKICogQHJldHVybiB7Y3ptX3BiclBhcmFtZXRlcnN9IERlZmF1bHQgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGN6bV9wYnJMaWdodGluZ30KICovCmN6bV9wYnJQYXJhbWV0ZXJzIGN6bV9kZWZhdWx0UGJyTWF0ZXJpYWwoKQp7CiAgICBjem1fcGJyUGFyYW1ldGVycyByZXN1bHRzOwogICAgcmVzdWx0cy5kaWZmdXNlQ29sb3IgPSB2ZWMzKDEuMCk7CiAgICByZXN1bHRzLnJvdWdobmVzcyA9IDEuMDsKCiAgICBjb25zdCB2ZWMzIFJFRkxFQ1RBTkNFX0RJRUxFQ1RSSUMgPSB2ZWMzKDAuMDQpOwogICAgcmVzdWx0cy5mMCA9IFJFRkxFQ1RBTkNFX0RJRUxFQ1RSSUM7CiAgICByZXR1cm4gcmVzdWx0czsKfQpgfSk7dmFyIGkxLG4xPU8oKCk9PntpMT1gLy8gZW11bGF0ZWQgbm9wZXJzcGVjdGl2ZQojaWYgKF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX0VYVF9mcmFnX2RlcHRoKSkgJiYgIWRlZmluZWQoTE9HX0RFUFRIKQpvdXQgZmxvYXQgdl9XaW5kb3daOwojZW5kaWYKCi8qKgogKiBFbXVsYXRlcyBHTF9ERVBUSF9DTEFNUCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBXZWJHTCAxIG9yIDIuCiAqIEdMX0RFUFRIX0NMQU1QIGNsYW1wcyBnZW9tZXRyeSB0aGF0IGlzIG91dHNpZGUgdGhlIG5lYXIgYW5kIGZhciBwbGFuZXMsIAogKiBjYXBwaW5nIHRoZSBzaGFkb3cgdm9sdW1lLiBNb3JlIGluZm9ybWF0aW9uIGhlcmU6IAogKiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9PcGVuR0wvZXh0ZW5zaW9ucy9BUkIvQVJCX2RlcHRoX2NsYW1wLnR4dC4KICoKICogV2hlbiBHTF9FWFRfZnJhZ19kZXB0aCBpcyBhdmFpbGFibGUgd2UgZW11bGF0ZSBHTF9ERVBUSF9DTEFNUCBieSBlbnN1cmluZyAKICogbm8gZ2VvbWV0cnkgZ2V0cyBjbGlwcGVkIGJ5IHNldHRpbmcgdGhlIGNsaXAgc3BhY2UgeiB2YWx1ZSB0byAwLjAgYW5kIHRoZW4KICogc2VuZGluZyB0aGUgdW5hbHRlcmVkIHNjcmVlbiBzcGFjZSB6IHZhbHVlICh1c2luZyBlbXVsYXRlZCBub3BlcnNwZWN0aXZlCiAqIGludGVycG9sYXRpb24pIHRvIHRoZSBmcmFnIHNoYWRlciB3aGVyZSBpdCBpcyBjbGFtcGVkIHRvIFswLDFdIGFuZCB0aGVuCiAqIHdyaXR0ZW4gd2l0aCBnbF9GcmFnRGVwdGggKHNlZSBjem1fd3JpdGVEZXB0aENsYW1wKS4gVGhpcyB0ZWNobmlxdWUgaXMgYmFzZWQgb246CiAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5NjA3NTcvaG93LXRvLWVtdWxhdGUtZ2wtZGVwdGgtY2xhbXAtbnYuCiAqCiAqIFdoZW4gR0xfRVhUX2ZyYWdfZGVwdGggaXMgbm90IGF2YWlsYWJsZSwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gc29tZSBtb2JpbGUgCiAqIGRldmljZXMsIHdlIG11c3QgYXR0ZW1wdCB0byBmaXggdGhpcyBvbmx5IGluIHRoZSB2ZXJ0ZXggc2hhZGVyLiAKICogVGhlIGFwcHJvYWNoIGlzIHRvIGNsYW1wIHRoZSB6IHZhbHVlIHRvIHRoZSBmYXIgcGxhbmUsIHdoaWNoIGNsb3NlcyB0aGUgCiAqIHNoYWRvdyB2b2x1bWUgYnV0IGFsc28gZGlzdG9ydHMgdGhlIGdlb21ldHJ5LCBzbyB0aGVyZSBjYW4gc3RpbGwgYmUgYXJ0aWZhY3RzCiAqIG9uIGZydXN0dW0gc2VhbXMuCiAqCiAqIEBuYW1lIGN6bV9kZXB0aENsYW1wCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBjb29yZHMgVGhlIHZlcnRleCBpbiBjbGlwIGNvb3JkaW5hdGVzLgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIG1vZGlmaWVkIHZlcnRleC4KICoKICogQGV4YW1wbGUKICogZ2xfUG9zaXRpb24gPSBjem1fZGVwdGhDbGFtcChjem1fbW9kZWxWaWV3UHJvamVjdGlvbiAqIHZlYzQocG9zaXRpb24sIDEuMCkpOwogKgogKiBAc2VlIGN6bV93cml0ZURlcHRoQ2xhbXAKICovCnZlYzQgY3ptX2RlcHRoQ2xhbXAodmVjNCBjb29yZHMpCnsKI2lmbmRlZiBMT0dfREVQVEgKI2lmIF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX0VYVF9mcmFnX2RlcHRoKQogICAgdl9XaW5kb3daID0gKDAuNSAqIChjb29yZHMueiAvIGNvb3Jkcy53KSArIDAuNSkgKiBjb29yZHMudzsKICAgIGNvb3Jkcy56ID0gMC4wOwojZWxzZQogICAgY29vcmRzLnogPSBtaW4oY29vcmRzLnosIGNvb3Jkcy53KTsKI2VuZGlmCiNlbmRpZgogICAgcmV0dXJuIGNvb3JkczsKfQpgfSk7dmFyIHMxLG8xPU8oKCk9PntzMT1gLyoqCiAqIENvbXB1dGVzIGEgM3gzIHJvdGF0aW9uIG1hdHJpeCB0aGF0IHRyYW5zZm9ybXMgdmVjdG9ycyBmcm9tIGFuIGVsbGlwc29pZCdzIGVhc3Qtbm9ydGgtdXAgY29vcmRpbmF0ZSBzeXN0ZW0gCiAqIHRvIGV5ZSBjb29yZGluYXRlcy4gIEluIGVhc3Qtbm9ydGgtdXAgY29vcmRpbmF0ZXMsIHggcG9pbnRzIGVhc3QsIHkgcG9pbnRzIG5vcnRoLCBhbmQgeiBwb2ludHMgYWxvbmcgdGhlIAogKiBzdXJmYWNlIG5vcm1hbC4gIEVhc3Qtbm9ydGgtdXAgY2FuIGJlIHVzZWQgYXMgYW4gZWxsaXBzb2lkJ3MgdGFuZ2VudCBzcGFjZSBmb3Igb3BlcmF0aW9ucyBzdWNoIGFzIGJ1bXAgbWFwcGluZy4KICogPGJyIC8+PGJyIC8+CiAqIFRoZSBlbGxpcHNvaWQgaXMgYXNzdW1lZCB0byBiZSBjZW50ZXJlZCBhdCB0aGUgbW9kZWwgY29vcmRpbmF0ZSdzIG9yaWdpbi4KICoKICogQG5hbWUgY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25NQyBUaGUgcG9zaXRpb24gb24gdGhlIGVsbGlwc29pZCBpbiBtb2RlbCBjb29yZGluYXRlcy4KICogQHBhcmFtIHt2ZWMzfSBub3JtYWxFQyBUaGUgbm9ybWFsaXplZCBlbGxpcHNvaWQgc3VyZmFjZSBub3JtYWwsIGF0IDxjb2RlPnBvc2l0aW9uTUM8L2NvZGU+LCBpbiBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEByZXR1cm5zIHttYXQzfSBBIDN4MyByb3RhdGlvbiBtYXRyaXggdGhhdCB0cmFuc2Zvcm1zIHZlY3RvcnMgZnJvbSB0aGUgZWFzdC1ub3J0aC11cCBjb29yZGluYXRlIHN5c3RlbSB0byBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEBleGFtcGxlCiAqIC8vIFRyYW5zZm9ybSBhIHZlY3RvciBkZWZpbmVkIGluIHRoZSBlYXN0LW5vcnRoLXVwIGNvb3JkaW5hdGUgCiAqIC8vIHN5c3RlbSwgKDAsIDAsIDEpIHdoaWNoIGlzIHRoZSBzdXJmYWNlIG5vcm1hbCwgdG8gZXllIAogKiAvLyBjb29yZGluYXRlcy4KICogbWF0MyBtID0gY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlcyhwb3NpdGlvbk1DLCBub3JtYWxFQyk7CiAqIHZlYzMgbm9ybWFsRUMgPSBtICogdmVjMygwLjAsIDAuMCwgMS4wKTsKICovCm1hdDMgY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlcyh2ZWMzIHBvc2l0aW9uTUMsIHZlYzMgbm9ybWFsRUMpCnsKICAgIHZlYzMgdGFuZ2VudE1DID0gbm9ybWFsaXplKHZlYzMoLXBvc2l0aW9uTUMueSwgcG9zaXRpb25NQy54LCAwLjApKTsgIC8vIG5vcm1hbGl6ZWQgc3VyZmFjZSB0YW5nZW50IGluIG1vZGVsIGNvb3JkaW5hdGVzCiAgICB2ZWMzIHRhbmdlbnRFQyA9IG5vcm1hbGl6ZShjem1fbm9ybWFsM0QgKiB0YW5nZW50TUMpOyAgICAgICAgICAgICAgICAvLyBub3JtYWxpemVkIHN1cmZhY2UgdGFuZ2VudCBpbiBleWUgY29vcmRpbmF0ZXMKICAgIHZlYzMgYml0YW5nZW50RUMgPSBub3JtYWxpemUoY3Jvc3Mobm9ybWFsRUMsIHRhbmdlbnRFQykpOyAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgc3VyZmFjZSBiaXRhbmdlbnQgaW4gZXllIGNvb3JkaW5hdGVzCgogICAgcmV0dXJuIG1hdDMoCiAgICAgICAgdGFuZ2VudEVDLngsICAgdGFuZ2VudEVDLnksICAgdGFuZ2VudEVDLnosCiAgICAgICAgYml0YW5nZW50RUMueCwgYml0YW5nZW50RUMueSwgYml0YW5nZW50RUMueiwKICAgICAgICBub3JtYWxFQy54LCAgICBub3JtYWxFQy55LCAgICBub3JtYWxFQy56KTsKfQpgfSk7dmFyIHIxLGExPU8oKCk9PntyMT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX2VsbGlwc29pZENvbnRhaW5zUG9pbnQKICogQGdsc2xGdW5jdGlvbgogKgogKi8KYm9vbCBjem1fZWxsaXBzb2lkQ29udGFpbnNQb2ludCh2ZWMzIGVsbGlwc29pZF9pbnZlcnNlUmFkaWksIHZlYzMgcG9pbnQpCnsKICAgIHZlYzMgc2NhbGVkID0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQocG9pbnQsIDEuMCkpLnh5ejsKICAgIHJldHVybiAoZG90KHNjYWxlZCwgc2NhbGVkKSA8PSAxLjApOwp9CmB9KTt2YXIgQTEsaDE9TygoKT0+e0ExPWAvKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fZWxsaXBzb2lkV2dzODRUZXh0dXJlQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKi8KdmVjMiBjem1fZWxsaXBzb2lkV2dzODRUZXh0dXJlQ29vcmRpbmF0ZXModmVjMyBub3JtYWwpCnsKICAgIHJldHVybiB2ZWMyKGF0YW4obm9ybWFsLnksIG5vcm1hbC54KSAqIGN6bV9vbmVPdmVyVHdvUGkgKyAwLjUsIGFzaW4obm9ybWFsLnopICogY3ptX29uZU92ZXJQaSArIDAuNSk7Cn0KYH0pO3ZhciBjMSxsMT1PKCgpPT57YzE9YC8qKgogKiBDb21wYXJlcyA8Y29kZT5sZWZ0PC9jb2RlPiBhbmQgPGNvZGU+cmlnaHQ8L2NvZGU+IGNvbXBvbmVudHdpc2UuIFJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4KICogaWYgdGhleSBhcmUgd2l0aGluIDxjb2RlPmVwc2lsb248L2NvZGU+IGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLiBUaGUgaW5wdXRzCiAqIDxjb2RlPmxlZnQ8L2NvZGU+IGFuZCA8Y29kZT5yaWdodDwvY29kZT4gY2FuIGJlIDxjb2RlPmZsb2F0PC9jb2RlPnMsIDxjb2RlPnZlYzI8L2NvZGU+cywKICogPGNvZGU+dmVjMzwvY29kZT5zLCBvciA8Y29kZT52ZWM0PC9jb2RlPnMuCiAqCiAqIEBuYW1lIGN6bV9lcXVhbHNFcHNpbG9uCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt9IGxlZnQgVGhlIGZpcnN0IHZlY3Rvci4KICogQHBhcmFtIHt9IHJpZ2h0IFRoZSBzZWNvbmQgdmVjdG9yLgogKiBAcGFyYW0ge2Zsb2F0fSBlcHNpbG9uIFRoZSBlcHNpbG9uIHRvIHVzZSBmb3IgZXF1YWxpdHkgdGVzdGluZy4KICogQHJldHVybnMge2Jvb2x9IDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBjb21wb25lbnRzIGFyZSB3aXRoaW4gPGNvZGU+ZXBzaWxvbjwvY29kZT4gYW5kIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb25zCiAqIGJvb2wgY3ptX2VxdWFsc0Vwc2lsb24oZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGVwc2lsb24pOwogKiBib29sIGN6bV9lcXVhbHNFcHNpbG9uKHZlYzIgbGVmdCwgdmVjMiByaWdodCwgZmxvYXQgZXBzaWxvbik7CiAqIGJvb2wgY3ptX2VxdWFsc0Vwc2lsb24odmVjMyBsZWZ0LCB2ZWMzIHJpZ2h0LCBmbG9hdCBlcHNpbG9uKTsKICogYm9vbCBjem1fZXF1YWxzRXBzaWxvbih2ZWM0IGxlZnQsIHZlYzQgcmlnaHQsIGZsb2F0IGVwc2lsb24pOwogKi8KYm9vbCBjem1fZXF1YWxzRXBzaWxvbih2ZWM0IGxlZnQsIHZlYzQgcmlnaHQsIGZsb2F0IGVwc2lsb24pIHsKICAgIHJldHVybiBhbGwobGVzc1RoYW5FcXVhbChhYnMobGVmdCAtIHJpZ2h0KSwgdmVjNChlcHNpbG9uKSkpOwp9Cgpib29sIGN6bV9lcXVhbHNFcHNpbG9uKHZlYzMgbGVmdCwgdmVjMyByaWdodCwgZmxvYXQgZXBzaWxvbikgewogICAgcmV0dXJuIGFsbChsZXNzVGhhbkVxdWFsKGFicyhsZWZ0IC0gcmlnaHQpLCB2ZWMzKGVwc2lsb24pKSk7Cn0KCmJvb2wgY3ptX2VxdWFsc0Vwc2lsb24odmVjMiBsZWZ0LCB2ZWMyIHJpZ2h0LCBmbG9hdCBlcHNpbG9uKSB7CiAgICByZXR1cm4gYWxsKGxlc3NUaGFuRXF1YWwoYWJzKGxlZnQgLSByaWdodCksIHZlYzIoZXBzaWxvbikpKTsKfQoKYm9vbCBjem1fZXF1YWxzRXBzaWxvbihmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgZXBzaWxvbikgewogICAgcmV0dXJuIChhYnMobGVmdCAtIHJpZ2h0KSA8PSBlcHNpbG9uKTsKfQpgfSk7dmFyIGQxLG0xPU8oKCk9PntkMT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX2V5ZU9mZnNldAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcG9zaXRpb25FQyBET0NfVEJBLgogKiBAcGFyYW0ge3ZlYzN9IGV5ZU9mZnNldCBET0NfVEJBLgogKgogKiBAcmV0dXJucyB7dmVjNH0gRE9DX1RCQS4KICovCnZlYzQgY3ptX2V5ZU9mZnNldCh2ZWM0IHBvc2l0aW9uRUMsIHZlYzMgZXllT2Zmc2V0KQp7CiAgICAvLyBUaGlzIGVxdWF0aW9uIGlzIGFwcHJveGltYXRlIGluIHggYW5kIHkuCiAgICB2ZWM0IHAgPSBwb3NpdGlvbkVDOwogICAgdmVjNCB6RXllT2Zmc2V0ID0gbm9ybWFsaXplKHApICogZXllT2Zmc2V0Lno7CiAgICBwLnh5ICs9IGV5ZU9mZnNldC54eSArIHpFeWVPZmZzZXQueHk7CiAgICBwLnogKz0gekV5ZU9mZnNldC56OwogICAgcmV0dXJuIHA7Cn0KYH0pO3ZhciBmMSxFMT1PKCgpPT57ZjE9YC8qKgogKiBUcmFuc2Zvcm1zIGEgcG9zaXRpb24gZnJvbSBleWUgdG8gd2luZG93IGNvb3JkaW5hdGVzLiAgVGhlIHRyYW5zZm9ybWF0aW9uCiAqIGZyb20gZXllIHRvIGNsaXAgY29vcmRpbmF0ZXMgaXMgZG9uZSB1c2luZyB7QGxpbmsgY3ptX3Byb2plY3Rpb259LgogKiBUaGUgdHJhbnNmb3JtIGZyb20gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMgdG8gd2luZG93IGNvb3JkaW5hdGVzIGlzCiAqIGRvbmUgdXNpbmcge0BsaW5rIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9ufSwgd2hpY2ggYXNzdW1lcyBhIGRlcHRoIHJhbmdlCiAqIG9mIDxjb2RlPm5lYXIgPSAwPC9jb2RlPiBhbmQgPGNvZGU+ZmFyID0gMTwvY29kZT4uCiAqIDxiciAvPjxiciAvPgogKiBUaGlzIHRyYW5zZm9ybSBpcyB1c2VmdWwgd2hlbiB0aGVyZSBpcyBhIG5lZWQgdG8gbWFuaXB1bGF0ZSB3aW5kb3cgY29vcmRpbmF0ZXMKICogaW4gYSB2ZXJ0ZXggc2hhZGVyIGFzIGRvbmUgYnkge0BsaW5rIEJpbGxib2FyZENvbGxlY3Rpb259LgogKgogKiBAbmFtZSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIGluIGV5ZSBjb29yZGluYXRlcyB0byB0cmFuc2Zvcm0uCiAqCiAqIEByZXR1cm5zIHt2ZWM0fSBUaGUgdHJhbnNmb3JtZWQgcG9zaXRpb24gaW4gd2luZG93IGNvb3JkaW5hdGVzLgogKgogKiBAc2VlIGN6bV9tb2RlbFRvV2luZG93Q29vcmRpbmF0ZXMKICogQHNlZSBjem1fcHJvamVjdGlvbgogKiBAc2VlIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uCiAqIEBzZWUgQmlsbGJvYXJkQ29sbGVjdGlvbgogKgogKiBAZXhhbXBsZQogKiB2ZWM0IHBvc2l0aW9uV0MgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhwb3NpdGlvbkVDKTsKICovCnZlYzQgY3ptX2V5ZVRvV2luZG93Q29vcmRpbmF0ZXModmVjNCBwb3NpdGlvbkVDKQp7CiAgICB2ZWM0IHEgPSBjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUM7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xpcCBjb29yZGluYXRlcwogICAgcS54eXogLz0gcS53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzCiAgICBxLnh5eiA9IChjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbiAqIHZlYzQocS54eXosIDEuMCkpLnh5ejsgLy8gd2luZG93IGNvb3JkaW5hdGVzCiAgICByZXR1cm4gcTsKfQpgfSk7dmFyIF8xLFIxPU8oKCk9PntfMT1gLyoqCiAqIEFwcHJveGlhbXRlcyBhdGFuIG92ZXIgdGhlIHJhbmdlIFswLCAxXS4gU2FmZSB0byBmbGlwIG91dHB1dCBmb3IgbmVnYXRpdmUgaW5wdXQuCiAqCiAqIEJhc2VkIG9uIE1pY2hhbCBEcm9ib3QncyBhcHByb3hpbWF0aW9uIGZyb20gU2hhZGVyRmFzdExpYnMsIHdoaWNoIGluIHR1cm4gaXMgYmFzZWQgb24KICogIkVmZmljaWVudCBhcHByb3hpbWF0aW9ucyBmb3IgdGhlIGFyY3RhbmdlbnQgZnVuY3Rpb24sIiBSYWphbiwgUy4gU2ljaHVuIFdhbmcgSW5rb2wsIFIuIEpveWFsLCBBLiwgTWF5IDIwMDYuCiAqIEFkYXB0ZWQgZnJvbSBTaGFkZXJGYXN0TGlicyB1bmRlciBNSVQgTGljZW5zZS4KICoKICogQ2hvc2VuIGZvciB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcmlzdGljcyBvdmVyIHJhbmdlIFswLCAxXToKICogLSBiYXNpY2FsbHkgbm8gZXJyb3IgYXQgMCBhbmQgMSwgaW1wb3J0YW50IGZvciBnZXR0aW5nIGFyb3VuZCByYW5nZSBsaW1pdCAobmFpdmUgYXRhbjIgdmlhIGF0YW4gcmVxdWlyZXMgaW5maW5pdGUgcmFuZ2UgYXRhbikKICogLSBubyB2aXNpYmxlIGFydGlmYWN0cyBmcm9tIGZpcnN0LWRlcml2YXRpdmUgZGlzY29udGludWl0aWVzLCB1bmxpa2UgbGF0aXR1ZGUgdmlhIHJhbmdlLXJlZHVjZWQgc3FydCBhc2luIGFwcHJveGltYXRpb25zIChhdCBlcXVhdG9yKQogKgogKiBUaGUgb3JpZ2luYWwgY29kZSBpcyB4ICogKC0wLjE3ODQgKiBhYnMoeCkgLSAwLjA2NjMgKiB4ICogeCArIDEuMDMwMSk7CiAqIFJlbW92ZWQgdGhlIGFicygpIGluIGhlcmUgYmVjYXVzZSBpdCBpc24ndCBuZWVkZWQsIHRoZSBpbnB1dCByYW5nZSBpcyBndWFyYW50ZWVkIGFzIFswLCAxXSBieSBob3cgd2UncmUgYXBwcm94aW1hdGluZyBhdGFuMi4KICoKICogQG5hbWUgY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4KICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Zsb2F0fSB4IFZhbHVlIGJldHdlZW4gMCBhbmQgMSBpbmNsdXNpdmUuCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gQXBwcm94aW1hdGlvbiBvZiBhdGFuKHgpCiAqLwpmbG9hdCBjem1fZmFzdEFwcHJveGltYXRlQXRhbihmbG9hdCB4KSB7CiAgICByZXR1cm4geCAqICgtMC4xNzg0ICogeCAtIDAuMDY2MyAqIHggKiB4ICsgMS4wMzAxKTsKfQoKLyoqCiAqIEFwcHJveGltYXRpb24gb2YgYXRhbjIuCiAqCiAqIFJhbmdlIHJlZHVjdGlvbiBtYXRoIGJhc2VkIG9uIG52aWRpYSdzIGNnIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmb3IgYXRhbjI6IGh0dHA6Ly9kZXZlbG9wZXIuZG93bmxvYWQubnZpZGlhLmNvbS9jZy9hdGFuMi5odG1sCiAqIEhvd2V2ZXIsIHdlIHJlcGxhY2VkIHRoZWlyIGF0YW4gY3VydmUgd2l0aCBNaWNoYWVsIERyb2JvdCdzIChzZWUgYWJvdmUpLgogKgogKiBAbmFtZSBjem1fZmFzdEFwcHJveGltYXRlQXRhbgogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IHggVmFsdWUgYmV0d2VlbiAtMSBhbmQgMSBpbmNsdXNpdmUuCiAqIEBwYXJhbSB7ZmxvYXR9IHkgVmFsdWUgYmV0d2VlbiAtMSBhbmQgMSBpbmNsdXNpdmUuCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gQXBwcm94aW1hdGlvbiBvZiBhdGFuMih4LCB5KQogKi8KZmxvYXQgY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4oZmxvYXQgeCwgZmxvYXQgeSkgewogICAgLy8gYXRhbiBhcHByb3hpbWF0aW9ucyBhcmUgdXN1YWxseSBvbmx5IHJlbGlhYmxlIG92ZXIgWy0xLCAxXSwgb3IsIGluIG91ciBjYXNlLCBbMCwgMV0gZHVlIHRvIG1vZGlmaWNhdGlvbnMuCiAgICAvLyBTbyByYW5nZS1yZWR1Y2UgdXNpbmcgYWJzIGFuZCBieSBmbGlwcGluZyB3aGV0aGVyIHggb3IgeSBpcyBvbiB0b3AuCiAgICBmbG9hdCB0ID0gYWJzKHgpOyAvLyB0IHVzZWQgYXMgc3dhcCBhbmQgYXRhbiByZXN1bHQuCiAgICBmbG9hdCBvcHBvc2l0ZSA9IGFicyh5KTsKICAgIGZsb2F0IGFkamFjZW50ID0gbWF4KHQsIG9wcG9zaXRlKTsKICAgIG9wcG9zaXRlID0gbWluKHQsIG9wcG9zaXRlKTsKCiAgICB0ID0gY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4ob3Bwb3NpdGUgLyBhZGphY2VudCk7CgogICAgLy8gVW5kbyByYW5nZSByZWR1Y3Rpb24KICAgIHQgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYWJzKHkpID4gYWJzKHgpLCBjem1fcGlPdmVyVHdvIC0gdCwgdCk7CiAgICB0ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KHggPCAwLjAsIGN6bV9waSAtIHQsIHQpOwogICAgdCA9IGN6bV9icmFuY2hGcmVlVGVybmFyeSh5IDwgMC4wLCAtdCwgdCk7CiAgICByZXR1cm4gdDsKfQpgfSk7dmFyIFoxLEkxPU8oKCk9PntaMT1gLyoqCiAqIEdldHMgdGhlIGNvbG9yIHdpdGggZm9nIGF0IGEgZGlzdGFuY2UgZnJvbSB0aGUgY2FtZXJhLgogKgogKiBAbmFtZSBjem1fZm9nCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtmbG9hdH0gZGlzdGFuY2VUb0NhbWVyYSBUaGUgZGlzdGFuY2UgdG8gdGhlIGNhbWVyYSBpbiBtZXRlcnMuCiAqIEBwYXJhbSB7dmVjM30gY29sb3IgVGhlIG9yaWdpbmFsIGNvbG9yLgogKiBAcGFyYW0ge3ZlYzN9IGZvZ0NvbG9yIFRoZSBjb2xvciBvZiB0aGUgZm9nLgogKgogKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIGFkanVzdGVkIGZvciBmb2cgYXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNhbWVyYS4KICovCnZlYzMgY3ptX2ZvZyhmbG9hdCBkaXN0YW5jZVRvQ2FtZXJhLCB2ZWMzIGNvbG9yLCB2ZWMzIGZvZ0NvbG9yKQp7CiAgICBmbG9hdCBzY2FsYXIgPSBkaXN0YW5jZVRvQ2FtZXJhICogY3ptX2ZvZ0RlbnNpdHk7CiAgICBmbG9hdCBmb2cgPSAxLjAgLSBleHAoLShzY2FsYXIgKiBzY2FsYXIpKTsKICAgIHJldHVybiBtaXgoY29sb3IsIGZvZ0NvbG9yLCBmb2cpOwp9CgovKioKICogR2V0cyB0aGUgY29sb3Igd2l0aCBmb2cgYXQgYSBkaXN0YW5jZSBmcm9tIHRoZSBjYW1lcmEuCiAqCiAqIEBuYW1lIGN6bV9mb2cKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Zsb2F0fSBkaXN0YW5jZVRvQ2FtZXJhIFRoZSBkaXN0YW5jZSB0byB0aGUgY2FtZXJhIGluIG1ldGVycy4KICogQHBhcmFtIHt2ZWMzfSBjb2xvciBUaGUgb3JpZ2luYWwgY29sb3IuCiAqIEBwYXJhbSB7dmVjM30gZm9nQ29sb3IgVGhlIGNvbG9yIG9mIHRoZSBmb2cuCiAqIEBwYXJhbSB7ZmxvYXR9IGZvZ01vZGlmaWVyQ29uc3RhbnQgQSBjb25zdGFudCB0byBtb2RpZnkgdGhlIGFwcGVhcmFuY2Ugb2YgZm9nLgogKgogKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIGFkanVzdGVkIGZvciBmb2cgYXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNhbWVyYS4KICovCnZlYzMgY3ptX2ZvZyhmbG9hdCBkaXN0YW5jZVRvQ2FtZXJhLCB2ZWMzIGNvbG9yLCB2ZWMzIGZvZ0NvbG9yLCBmbG9hdCBmb2dNb2RpZmllckNvbnN0YW50KQp7CiAgICBmbG9hdCBzY2FsYXIgPSBkaXN0YW5jZVRvQ2FtZXJhICogY3ptX2ZvZ0RlbnNpdHk7CiAgICBmbG9hdCBmb2cgPSAxLjAgLSBleHAoLSgoZm9nTW9kaWZpZXJDb25zdGFudCAqIHNjYWxhciArIGZvZ01vZGlmaWVyQ29uc3RhbnQpICogKHNjYWxhciAqICgxLjAgKyBmb2dNb2RpZmllckNvbnN0YW50KSkpKTsKICAgIHJldHVybiBtaXgoY29sb3IsIGZvZ0NvbG9yLCBmb2cpOwp9CmB9KTt2YXIgcDEsdTE9TygoKT0+e3AxPWAvKioKICogQ29udmVydHMgYSBjb2xvciBmcm9tIFJHQiBzcGFjZSB0byBsaW5lYXIgc3BhY2UuCiAqCiAqIEBuYW1lIGN6bV9nYW1tYUNvcnJlY3QKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGNvbG9yIFRoZSBjb2xvciBpbiBSR0Igc3BhY2UuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gbGluZWFyIHNwYWNlLgogKi8KdmVjMyBjem1fZ2FtbWFDb3JyZWN0KHZlYzMgY29sb3IpIHsKI2lmZGVmIEhEUgogICAgY29sb3IgPSBwb3coY29sb3IsIHZlYzMoY3ptX2dhbW1hKSk7CiNlbmRpZgogICAgcmV0dXJuIGNvbG9yOwp9Cgp2ZWM0IGN6bV9nYW1tYUNvcnJlY3QodmVjNCBjb2xvcikgewojaWZkZWYgSERSCiAgICBjb2xvci5yZ2IgPSBwb3coY29sb3IucmdiLCB2ZWMzKGN6bV9nYW1tYSkpOwojZW5kaWYKICAgIHJldHVybiBjb2xvcjsKfQpgfSk7dmFyIEMxLGcxPU8oKCk9PntDMT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX2dlb2RldGljU3VyZmFjZU5vcm1hbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25PbkVsbGlwc29pZCBET0NfVEJBCiAqIEBwYXJhbSB7dmVjM30gZWxsaXBzb2lkQ2VudGVyIERPQ19UQkEKICogQHBhcmFtIHt2ZWMzfSBvbmVPdmVyRWxsaXBzb2lkUmFkaWlTcXVhcmVkIERPQ19UQkEKICogCiAqIEByZXR1cm5zIHt2ZWMzfSBET0NfVEJBLgogKi8KdmVjMyBjem1fZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHZlYzMgcG9zaXRpb25PbkVsbGlwc29pZCwgdmVjMyBlbGxpcHNvaWRDZW50ZXIsIHZlYzMgb25lT3ZlckVsbGlwc29pZFJhZGlpU3F1YXJlZCkKewogICAgcmV0dXJuIG5vcm1hbGl6ZSgocG9zaXRpb25PbkVsbGlwc29pZCAtIGVsbGlwc29pZENlbnRlcikgKiBvbmVPdmVyRWxsaXBzb2lkUmFkaWlTcXVhcmVkKTsKfQpgfSk7dmFyIFQxLE4xPU8oKCk9PntUMT1gLyoqCiAqIEFuIGN6bV9tYXRlcmlhbCB3aXRoIGRlZmF1bHQgdmFsdWVzLiBFdmVyeSBtYXRlcmlhbCdzIGN6bV9nZXRNYXRlcmlhbAogKiBzaG91bGQgdXNlIHRoaXMgZGVmYXVsdCBtYXRlcmlhbCBhcyBhIGJhc2UgZm9yIHRoZSBtYXRlcmlhbCBpdCByZXR1cm5zLgogKiBUaGUgZGVmYXVsdCBub3JtYWwgdmFsdWUgaXMgZ2l2ZW4gYnkgbWF0ZXJpYWxJbnB1dC5ub3JtYWxFQy4KICoKICogQG5hbWUgY3ptX2dldERlZmF1bHRNYXRlcmlhbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7Y3ptX21hdGVyaWFsSW5wdXR9IGlucHV0IFRoZSBpbnB1dCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgZGVmYXVsdCBtYXRlcmlhbC4KICoKICogQHJldHVybnMge2N6bV9tYXRlcmlhbH0gVGhlIGRlZmF1bHQgbWF0ZXJpYWwuCiAqCiAqIEBzZWUgY3ptX21hdGVyaWFsSW5wdXQKICogQHNlZSBjem1fbWF0ZXJpYWwKICogQHNlZSBjem1fZ2V0TWF0ZXJpYWwKICovCmN6bV9tYXRlcmlhbCBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbDsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSB2ZWMzKDAuMCk7CiAgICBtYXRlcmlhbC5zcGVjdWxhciA9IDAuMDsKICAgIG1hdGVyaWFsLnNoaW5pbmVzcyA9IDEuMDsKICAgIG1hdGVyaWFsLm5vcm1hbCA9IG1hdGVyaWFsSW5wdXQubm9ybWFsRUM7CiAgICBtYXRlcmlhbC5lbWlzc2lvbiA9IHZlYzMoMC4wKTsKICAgIG1hdGVyaWFsLmFscGhhID0gMS4wOwogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgYjEsRjE9TygoKT0+e2IxPWAvKioKICogU2VsZWN0IHdoaWNoIGRpcmVjdGlvbiB2ZWN0b3IgdG8gdXNlIGZvciBkeW5hbWljIGF0bW9zcGhlcmUgbGlnaHRpbmcgYmFzZWQgb24gYW4gZW51bSB2YWx1ZQogKgogKiBAbmFtZSBjem1fZ2V0RHluYW1pY0F0bW9zcGhlcmVMaWdodERpcmVjdGlvbgogKiBAZ2xzbGZ1bmN0aW9uCiAqIEBzZWUgRHluYW1pY0F0bW9zcGhlcmVMaWdodGluZ1R5cGUuanMKICoKICogQHBhcmFtIHt2ZWMzfSBwb3NpdGlvbldDIHRoZSBwb3NpdGlvbiBvZiB0aGUgdmVydGV4L2ZyYWdtZW50IGluIHdvcmxkIGNvb3JkaW5hdGVzLiBUaGlzIGlzIG5vcm1hbGl6ZWQgYW5kIHJldHVybmVkIHdoZW4gZHluYW1pYyBsaWdodGluZyBpcyB0dXJuZWQgb2ZmLgogKiBAcGFyYW0ge2Zsb2F0fSBsaWdodEVudW0gVGhlIGVudW0gdmFsdWUgZm9yIHNlbGVjdGluZyBiZXR3ZWVuIGxpZ2h0IHNvdXJjZXMuCiAqIEByZXR1cm4ge3ZlYzN9IFRoZSBub3JtYWxpemVkIGxpZ2h0IGRpcmVjdGlvbiB2ZWN0b3IuIERlcGVuZGluZyBvbiB0aGUgZW51bSB2YWx1ZSwgaXQgaXMgZWl0aGVyIHBvc2l0aW9uV0MsIGN6bV9saWdodERpcmVjdGlvbldDIG9yIGN6bV9zdW5EaXJlY3Rpb25XQwogKi8KdmVjMyBjem1fZ2V0RHluYW1pY0F0bW9zcGhlcmVMaWdodERpcmVjdGlvbih2ZWMzIHBvc2l0aW9uV0MsIGZsb2F0IGxpZ2h0RW51bSkgewogICAgY29uc3QgZmxvYXQgTk9ORSA9IDAuMDsKICAgIGNvbnN0IGZsb2F0IFNDRU5FX0xJR0hUID0gMS4wOwogICAgY29uc3QgZmxvYXQgU1VOTElHSFQgPSAyLjA7CgogICAgdmVjMyBsaWdodERpcmVjdGlvbiA9CiAgICAgICAgcG9zaXRpb25XQyAqIGZsb2F0KGxpZ2h0RW51bSA9PSBOT05FKSArCiAgICAgICAgY3ptX2xpZ2h0RGlyZWN0aW9uV0MgKiBmbG9hdChsaWdodEVudW0gPT0gU0NFTkVfTElHSFQpICsKICAgICAgICBjem1fc3VuRGlyZWN0aW9uV0MgKiBmbG9hdChsaWdodEVudW0gPT0gU1VOTElHSFQpOwogICAgcmV0dXJuIG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbik7Cn0KYH0pO3ZhciBZMSxTMT1PKCgpPT57WTE9YC8qKgogKiBDYWxjdWxhdGVzIHRoZSBpbnRlbnNpdHkgb2YgZGlmZnVzZWx5IHJlZmxlY3RlZCBsaWdodC4KICoKICogQG5hbWUgY3ptX2dldExhbWJlcnREaWZmdXNlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWMzfSBsaWdodERpcmVjdGlvbkVDIFVuaXQgdmVjdG9yIHBvaW50aW5nIHRvIHRoZSBsaWdodCBzb3VyY2UgaW4gZXllIGNvb3JkaW5hdGVzLgogKiBAcGFyYW0ge3ZlYzN9IG5vcm1hbEVDIFRoZSBzdXJmYWNlIG5vcm1hbCBpbiBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gVGhlIGludGVuc2l0eSBvZiB0aGUgZGlmZnVzZSByZWZsZWN0aW9uLgogKgogKiBAc2VlIGN6bV9waG9uZwogKgogKiBAZXhhbXBsZQogKiBmbG9hdCBkaWZmdXNlSW50ZW5zaXR5ID0gY3ptX2dldExhbWJlcnREaWZmdXNlKGxpZ2h0RGlyZWN0aW9uRUMsIG5vcm1hbEVDKTsKICogZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHkgPSBjem1fZ2V0U3BlY3VsYXIobGlnaHREaXJlY3Rpb25FQywgdG9FeWVFQywgbm9ybWFsRUMsIDIwMCk7CiAqIHZlYzMgY29sb3IgPSAoZGlmZnVzZUNvbG9yICogZGlmZnVzZUludGVuc2l0eSkgKyAoc3BlY3VsYXJDb2xvciAqIHNwZWN1bGFySW50ZW5zaXR5KTsKICovCmZsb2F0IGN6bV9nZXRMYW1iZXJ0RGlmZnVzZSh2ZWMzIGxpZ2h0RGlyZWN0aW9uRUMsIHZlYzMgbm9ybWFsRUMpCnsKICAgIHJldHVybiBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uRUMsIG5vcm1hbEVDKSwgMC4wKTsKfQpgfSk7dmFyIE8xLFYxPU8oKCk9PntPMT1gLyoqCiAqIENhbGN1bGF0ZXMgdGhlIHNwZWN1bGFyIGludGVuc2l0eSBvZiByZWZsZWN0ZWQgbGlnaHQuCiAqCiAqIEBuYW1lIGN6bV9nZXRTcGVjdWxhcgogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gbGlnaHREaXJlY3Rpb25FQyBVbml0IHZlY3RvciBwb2ludGluZyB0byB0aGUgbGlnaHQgc291cmNlIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHt2ZWMzfSB0b0V5ZUVDIFVuaXQgdmVjdG9yIHBvaW50aW5nIHRvIHRoZSBleWUgcG9zaXRpb24gaW4gZXllIGNvb3JkaW5hdGVzLgogKiBAcGFyYW0ge3ZlYzN9IG5vcm1hbEVDIFRoZSBzdXJmYWNlIG5vcm1hbCBpbiBleWUgY29vcmRpbmF0ZXMuCiAqIEBwYXJhbSB7ZmxvYXR9IHNoaW5pbmVzcyBUaGUgc2hhcnBuZXNzIG9mIHRoZSBzcGVjdWxhciByZWZsZWN0aW9uLiAgSGlnaGVyIHZhbHVlcyBjcmVhdGUgYSBzbWFsbGVyLCBtb3JlIGZvY3VzZWQgc3BlY3VsYXIgaGlnaGxpZ2h0LgogKgogKiBAcmV0dXJucyB7ZmxvYXR9IFRoZSBpbnRlbnNpdHkgb2YgdGhlIHNwZWN1bGFyIGhpZ2hsaWdodC4KICoKICogQHNlZSBjem1fcGhvbmcKICoKICogQGV4YW1wbGUKICogZmxvYXQgZGlmZnVzZUludGVuc2l0eSA9IGN6bV9nZXRMYW1iZXJ0RGlmZnVzZShsaWdodERpcmVjdGlvbkVDLCBub3JtYWxFQyk7CiAqIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5ID0gY3ptX2dldFNwZWN1bGFyKGxpZ2h0RGlyZWN0aW9uRUMsIHRvRXllRUMsIG5vcm1hbEVDLCAyMDApOwogKiB2ZWMzIGNvbG9yID0gKGRpZmZ1c2VDb2xvciAqIGRpZmZ1c2VJbnRlbnNpdHkpICsgKHNwZWN1bGFyQ29sb3IgKiBzcGVjdWxhckludGVuc2l0eSk7CiAqLwpmbG9hdCBjem1fZ2V0U3BlY3VsYXIodmVjMyBsaWdodERpcmVjdGlvbkVDLCB2ZWMzIHRvRXllRUMsIHZlYzMgbm9ybWFsRUMsIGZsb2F0IHNoaW5pbmVzcykKewogICAgdmVjMyB0b1JlZmxlY3RlZExpZ2h0ID0gcmVmbGVjdCgtbGlnaHREaXJlY3Rpb25FQywgbm9ybWFsRUMpOwogICAgZmxvYXQgc3BlY3VsYXIgPSBtYXgoZG90KHRvUmVmbGVjdGVkTGlnaHQsIHRvRXllRUMpLCAwLjApOwoKICAgIC8vIHBvdyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGJvdGggcGFyYW1ldGVycyA8PSAwLgogICAgLy8gUHJldmVudCB0aGlzIGJ5IG1ha2luZyBzdXJlIHNoaW5pbmVzcyBpcyBhdCBsZWFzdCBjem1fZXBzaWxvbjIuCiAgICByZXR1cm4gcG93KHNwZWN1bGFyLCBtYXgoc2hpbmluZXNzLCBjem1fZXBzaWxvbjIpKTsKfQpgfSk7dmFyIEcxLEIxPU8oKCk9PntHMT1gLyoqCiAqIEBwcml2YXRlCiAqLwp2ZWM0IGN6bV9nZXRXYXRlck5vaXNlKHNhbXBsZXIyRCBub3JtYWxNYXAsIHZlYzIgdXYsIGZsb2F0IHRpbWUsIGZsb2F0IGFuZ2xlSW5SYWRpYW5zKQp7CiAgICBmbG9hdCBjb3NBbmdsZSA9IGNvcyhhbmdsZUluUmFkaWFucyk7CiAgICBmbG9hdCBzaW5BbmdsZSA9IHNpbihhbmdsZUluUmFkaWFucyk7CgogICAgLy8gdGltZSBkZXBlbmRlbnQgc2FtcGxpbmcgZGlyZWN0aW9ucwogICAgdmVjMiBzMCA9IHZlYzIoMS4wLzE3LjAsIDAuMCk7CiAgICB2ZWMyIHMxID0gdmVjMigtMS4wLzI5LjAsIDAuMCk7CiAgICB2ZWMyIHMyID0gdmVjMigxLjAvMTAxLjAsIDEuMC81OS4wKTsKICAgIHZlYzIgczMgPSB2ZWMyKC0xLjAvMTA5LjAsIC0xLjAvNTcuMCk7CgogICAgLy8gcm90YXRlIHNhbXBsaW5nIGRpcmVjdGlvbiBieSBzcGVjaWZpZWQgYW5nbGUKICAgIHMwID0gdmVjMigoY29zQW5nbGUgKiBzMC54KSAtIChzaW5BbmdsZSAqIHMwLnkpLCAoc2luQW5nbGUgKiBzMC54KSArIChjb3NBbmdsZSAqIHMwLnkpKTsKICAgIHMxID0gdmVjMigoY29zQW5nbGUgKiBzMS54KSAtIChzaW5BbmdsZSAqIHMxLnkpLCAoc2luQW5nbGUgKiBzMS54KSArIChjb3NBbmdsZSAqIHMxLnkpKTsKICAgIHMyID0gdmVjMigoY29zQW5nbGUgKiBzMi54KSAtIChzaW5BbmdsZSAqIHMyLnkpLCAoc2luQW5nbGUgKiBzMi54KSArIChjb3NBbmdsZSAqIHMyLnkpKTsKICAgIHMzID0gdmVjMigoY29zQW5nbGUgKiBzMy54KSAtIChzaW5BbmdsZSAqIHMzLnkpLCAoc2luQW5nbGUgKiBzMy54KSArIChjb3NBbmdsZSAqIHMzLnkpKTsKCiAgICB2ZWMyIHV2MCA9ICh1di8xMDMuMCkgKyAodGltZSAqIHMwKTsKICAgIHZlYzIgdXYxID0gdXYvMTA3LjAgKyAodGltZSAqIHMxKSArIHZlYzIoMC4yMyk7CiAgICB2ZWMyIHV2MiA9IHV2L3ZlYzIoODk3LjAsIDk4My4wKSArICh0aW1lICogczIpICsgdmVjMigwLjUxKTsKICAgIHZlYzIgdXYzID0gdXYvdmVjMig5OTEuMCwgODc3LjApICsgKHRpbWUgKiBzMykgKyB2ZWMyKDAuNzEpOwoKICAgIHV2MCA9IGZyYWN0KHV2MCk7CiAgICB1djEgPSBmcmFjdCh1djEpOwogICAgdXYyID0gZnJhY3QodXYyKTsKICAgIHV2MyA9IGZyYWN0KHV2Myk7CiAgICB2ZWM0IG5vaXNlID0gKHRleHR1cmUobm9ybWFsTWFwLCB1djApKSArCiAgICAgICAgICAgICAgICAgKHRleHR1cmUobm9ybWFsTWFwLCB1djEpKSArCiAgICAgICAgICAgICAgICAgKHRleHR1cmUobm9ybWFsTWFwLCB1djIpKSArCiAgICAgICAgICAgICAgICAgKHRleHR1cmUobm9ybWFsTWFwLCB1djMpKTsKCiAgICAvLyBhdmVyYWdlIGFuZCBzY2FsZSB0byBiZXR3ZWVuIC0xIGFuZCAxCiAgICByZXR1cm4gKChub2lzZSAvIDQuMCkgLSAwLjUpICogMi4wOwp9CmB9KTt2YXIgVzEsRDE9TygoKT0+e1cxPWAvKioKICogQWRqdXN0cyB0aGUgaHVlIG9mIGEgY29sb3IuCiAqIAogKiBAbmFtZSBjem1faHVlCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvci4KICogQHBhcmFtIHtmbG9hdH0gYWRqdXN0bWVudCBUaGUgYW1vdW50IHRvIGFkanVzdCB0aGUgaHVlIG9mIHRoZSBjb2xvciBpbiByYWRpYW5zLgogKgogKiBAcmV0dXJucyB7ZmxvYXR9IFRoZSBjb2xvciB3aXRoIHRoZSBodWUgYWRqdXN0ZWQuCiAqCiAqIEBleGFtcGxlCiAqIHZlYzMgYWRqdXN0SHVlID0gY3ptX2h1ZShjb2xvciwgY3ptX3BpKTsgLy8gVGhlIHNhbWUgYXMgY3ptX2h1ZShjb2xvciwgLWN6bV9waSkKICovCnZlYzMgY3ptX2h1ZSh2ZWMzIHJnYiwgZmxvYXQgYWRqdXN0bWVudCkKewogICAgY29uc3QgbWF0MyB0b1lJUSA9IG1hdDMoMC4yOTksICAgICAwLjU4NywgICAgIDAuMTE0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41OTU3MTYsIC0wLjI3NDQ1MywgLTAuMzIxMjYzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTE0NTYsIC0wLjUyMjU5MSwgIDAuMzExMTM1KTsKICAgIGNvbnN0IG1hdDMgdG9SR0IgPSBtYXQzKDEuMCwgIDAuOTU2MywgIDAuNjIxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCwgLTAuMjcyMSwgLTAuNjQ3NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCwgLTEuMTA3LCAgIDEuNzA0Nik7CiAgICAKICAgIHZlYzMgeWlxID0gdG9ZSVEgKiByZ2I7CiAgICBmbG9hdCBodWUgPSBhdGFuKHlpcS56LCB5aXEueSkgKyBhZGp1c3RtZW50OwogICAgZmxvYXQgY2hyb21hID0gc3FydCh5aXEueiAqIHlpcS56ICsgeWlxLnkgKiB5aXEueSk7CiAgICAKICAgIHZlYzMgY29sb3IgPSB2ZWMzKHlpcS54LCBjaHJvbWEgKiBjb3MoaHVlKSwgY2hyb21hICogc2luKGh1ZSkpOwogICAgcmV0dXJuIHRvUkdCICogY29sb3I7Cn0KYH0pO3ZhciBNMSxVMT1PKCgpPT57TTE9YC8qKgogKiBDb252ZXJ0cyBhIGNvbG9yIGluIGxpbmVhciBzcGFjZSB0byBSR0Igc3BhY2UuCiAqCiAqIEBuYW1lIGN6bV9pbnZlcnNlR2FtbWEKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGNvbG9yIFRoZSBjb2xvciBpbiBsaW5lYXIgc3BhY2UuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gUkdCIHNwYWNlLgogKi8KdmVjMyBjem1faW52ZXJzZUdhbW1hKHZlYzMgY29sb3IpIHsKICAgIHJldHVybiBwb3coY29sb3IsIHZlYzMoMS4wIC8gY3ptX2dhbW1hKSk7Cn0KYH0pO3ZhciBRMSxrMT1PKCgpPT57UTE9YC8qKgogKiBEZXRlcm1pbmVzIGlmIGEgdGltZSBpbnRlcnZhbCBpcyBlbXB0eS4KICoKICogQG5hbWUgY3ptX2lzRW1wdHkKICogQGdsc2xGdW5jdGlvbiAKICogCiAqIEBwYXJhbSB7Y3ptX3JheVNlZ21lbnR9IGludGVydmFsIFRoZSBpbnRlcnZhbCB0byB0ZXN0LgogKiAKICogQHJldHVybnMge2Jvb2x9IDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSB0aW1lIGludGVydmFsIGlzIGVtcHR5OyBvdGhlcndpc2UsIDxjb2RlPmZhbHNlPC9jb2RlPi4KICoKICogQGV4YW1wbGUKICogYm9vbCBiMCA9IGN6bV9pc0VtcHR5KGN6bV9lbXB0eVJheVNlZ21lbnQpOyAgICAgIC8vIHRydWUKICogYm9vbCBiMSA9IGN6bV9pc0VtcHR5KGN6bV9yYXlTZWdtZW50KDAuMCwgMS4wKSk7IC8vIGZhbHNlCiAqIGJvb2wgYjIgPSBjem1faXNFbXB0eShjem1fcmF5U2VnbWVudCgxLjAsIDEuMCkpOyAvLyBmYWxzZSwgY29udGFpbnMgMS4wLgogKi8KYm9vbCBjem1faXNFbXB0eShjem1fcmF5U2VnbWVudCBpbnRlcnZhbCkKewogICAgcmV0dXJuIChpbnRlcnZhbC5zdG9wIDwgMC4wKTsKfQpgfSk7dmFyIEwxLHkxPU8oKCk9PntMMT1gLyoqCiAqIERldGVybWluZXMgaWYgYSB0aW1lIGludGVydmFsIGlzIGVtcHR5LgogKgogKiBAbmFtZSBjem1faXNGdWxsCiAqIEBnbHNsRnVuY3Rpb24gCiAqIAogKiBAcGFyYW0ge2N6bV9yYXlTZWdtZW50fSBpbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdG8gdGVzdC4KICogCiAqIEByZXR1cm5zIHtib29sfSA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgdGltZSBpbnRlcnZhbCBpcyBlbXB0eTsgb3RoZXJ3aXNlLCA8Y29kZT5mYWxzZTwvY29kZT4uCiAqCiAqIEBleGFtcGxlCiAqIGJvb2wgYjAgPSBjem1faXNFbXB0eShjem1fZW1wdHlSYXlTZWdtZW50KTsgICAgICAvLyB0cnVlCiAqIGJvb2wgYjEgPSBjem1faXNFbXB0eShjem1fcmF5U2VnbWVudCgwLjAsIDEuMCkpOyAvLyBmYWxzZQogKiBib29sIGIyID0gY3ptX2lzRW1wdHkoY3ptX3JheVNlZ21lbnQoMS4wLCAxLjApKTsgLy8gZmFsc2UsIGNvbnRhaW5zIDEuMC4KICovCmJvb2wgY3ptX2lzRnVsbChjem1fcmF5U2VnbWVudCBpbnRlcnZhbCkKewogICAgcmV0dXJuIChpbnRlcnZhbC5zdGFydCA9PSAwLjAgJiYgaW50ZXJ2YWwuc3RvcCA9PSBjem1faW5maW5pdHkpOwp9CmB9KTt2YXIgdzEseDE9TygoKT0+e3cxPWAvKioKICogQ29tcHV0ZXMgdGhlIGZyYWN0aW9uIG9mIGEgV2ViIFdlcmNhdG9yIHJlY3RhbmdsZSBhdCB3aGljaCBhIGdpdmVuIGdlb2RldGljIGxhdGl0dWRlIGlzIGxvY2F0ZWQuCiAqCiAqIEBuYW1lIGN6bV9sYXRpdHVkZVRvV2ViTWVyY2F0b3JGcmFjdGlvbgogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGxhdGl0dWRlIFRoZSBnZW9kZXRpYyBsYXRpdHVkZSwgaW4gcmFkaWFucy4KICogQHBhcmFtIHtmbG9hdH0gc291dGhNZXJjYXRvclkgVGhlIFdlYiBNZXJjYXRvciBjb29yZGluYXRlIG9mIHRoZSBzb3V0aGVybiBib3VuZGFyeSBvZiB0aGUgcmVjdGFuZ2xlLgogKiBAcGFyYW0ge2Zsb2F0fSBvbmVPdmVyTWVyY2F0b3JIZWlnaHQgVGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlIGluIFdlYiBNZXJjYXRvciBjb29yZGluYXRlcy4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgZnJhY3Rpb24gb2YgdGhlIHJlY3RhbmdsZSBhdCB3aGljaCB0aGUgbGF0aXR1ZGUgb2NjdXJzLiAgSWYgdGhlIGxhdGl0dWRlIGlzIHRoZSBzb3V0aGVybgogKiAgICAgICAgICBib3VuZGFyeSBvZiB0aGUgcmVjdGFuZ2xlLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgemVyby4gIElmIGl0IGlzIHRoZSBub3J0aGVybiBib3VuZGFyeSwgdGhlIHJldHVybgogKiAgICAgICAgICB2YWx1ZSB3aWxsIGJlIDEuMC4gIExhdGl0dWRlcyBpbiBiZXR3ZWVuIGFyZSBtYXBwZWQgYWNjb3JkaW5nIHRvIHRoZSBXZWIgTWVyY2F0b3IgcHJvamVjdGlvbi4KICovIApmbG9hdCBjem1fbGF0aXR1ZGVUb1dlYk1lcmNhdG9yRnJhY3Rpb24oZmxvYXQgbGF0aXR1ZGUsIGZsb2F0IHNvdXRoTWVyY2F0b3JZLCBmbG9hdCBvbmVPdmVyTWVyY2F0b3JIZWlnaHQpCnsKICAgIGZsb2F0IHNpbkxhdGl0dWRlID0gc2luKGxhdGl0dWRlKTsKICAgIGZsb2F0IG1lcmNhdG9yWSA9IDAuNSAqIGxvZygoMS4wICsgc2luTGF0aXR1ZGUpIC8gKDEuMCAtIHNpbkxhdGl0dWRlKSk7CiAgICAKICAgIHJldHVybiAobWVyY2F0b3JZIC0gc291dGhNZXJjYXRvclkpICogb25lT3Zlck1lcmNhdG9ySGVpZ2h0Owp9CmB9KTt2YXIgUDEsSjE9TygoKT0+e1AxPWAvKioKICogQ29tcHV0ZXMgZGlzdGFuY2UgZnJvbSBhbiBwb2ludCBpbiAyRCB0byBhIGxpbmUgaW4gMkQuCiAqCiAqIEBuYW1lIGN6bV9saW5lRGlzdGFuY2UKICogQGdsc2xGdW5jdGlvbgogKgogKiBwYXJhbSB7dmVjMn0gcG9pbnQxIEEgcG9pbnQgYWxvbmcgdGhlIGxpbmUuCiAqIHBhcmFtIHt2ZWMyfSBwb2ludDIgQSBwb2ludCBhbG9uZyB0aGUgbGluZS4KICogcGFyYW0ge3ZlYzJ9IHBvaW50IEEgcG9pbnQgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBvbiB0aGUgbGluZS4KICogcmV0dXJucyB7ZmxvYXR9IFRoZSBkaXN0YW5jZSBmcm9tIHRoZSBwb2ludCB0byB0aGUgbGluZS4KICovCmZsb2F0IGN6bV9saW5lRGlzdGFuY2UodmVjMiBwb2ludDEsIHZlYzIgcG9pbnQyLCB2ZWMyIHBvaW50KSB7CiAgICByZXR1cm4gYWJzKChwb2ludDIueSAtIHBvaW50MS55KSAqIHBvaW50LnggLSAocG9pbnQyLnggLSBwb2ludDEueCkgKiBwb2ludC55ICsgcG9pbnQyLnggKiBwb2ludDEueSAtIHBvaW50Mi55ICogcG9pbnQxLngpIC8gZGlzdGFuY2UocG9pbnQyLCBwb2ludDEpOwp9CmB9KTt2YXIgajEsSDE9TygoKT0+e2oxPWAvKioKICogQ29udmVydHMgYSBsaW5lYXIgUkdCIGNvbG9yIHRvIGFuIHNSR0IgY29sb3IuCiAqCiAqIEBwYXJhbSB7dmVjM3x2ZWM0fSBsaW5lYXJJbiBUaGUgY29sb3IgaW4gbGluZWFyIGNvbG9yIHNwYWNlLgogKiBAcmV0dXJucyB7dmVjM3x2ZWM0fSBUaGUgY29sb3IgaW4gc1JHQiBjb2xvciBzcGFjZS4gVGhlIHZlY3RvciB0eXBlIG1hdGNoZXMgdGhlIGlucHV0LgogKi8KdmVjMyBjem1fbGluZWFyVG9TcmdiKHZlYzMgbGluZWFySW4pIAp7CiAgICByZXR1cm4gcG93KGxpbmVhckluLCB2ZWMzKDEuMC8yLjIpKTsKfQoKdmVjNCBjem1fbGluZWFyVG9TcmdiKHZlYzQgbGluZWFySW4pIAp7CiAgICB2ZWMzIHNyZ2JPdXQgPSBwb3cobGluZWFySW4ucmdiLCB2ZWMzKDEuMC8yLjIpKTsKICAgIHJldHVybiB2ZWM0KHNyZ2JPdXQsIGxpbmVhckluLmEpOwp9CmB9KTt2YXIgdjEsejE9TygoKT0+e3YxPWAvKioKICogQ29tcHV0ZXMgdGhlIGx1bWluYW5jZSBvZiBhIGNvbG9yLiAKICoKICogQG5hbWUgY3ptX2x1bWluYW5jZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvci4KICogCiAqIEByZXR1cm5zIHtmbG9hdH0gVGhlIGx1bWluYW5jZS4KICoKICogQGV4YW1wbGUKICogZmxvYXQgbGlnaHQgPSBjem1fbHVtaW5hbmNlKHZlYzMoMC4wKSk7IC8vIDAuMAogKiBmbG9hdCBkYXJrID0gY3ptX2x1bWluYW5jZSh2ZWMzKDEuMCkpOyAgLy8gfjEuMCAKICovCmZsb2F0IGN6bV9sdW1pbmFuY2UodmVjMyByZ2IpCnsKICAgIC8vIEFsZ29yaXRobSBmcm9tIENoYXB0ZXIgMTAgb2YgR3JhcGhpY3MgU2hhZGVycy4KICAgIGNvbnN0IHZlYzMgVyA9IHZlYzMoMC4yMTI1LCAwLjcxNTQsIDAuMDcyMSk7CiAgICByZXR1cm4gZG90KHJnYiwgVyk7Cn0KYH0pO3ZhciBLMSxYMT1PKCgpPT57SzE9YC8qKgogKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIHBpeGVsIGluIG1ldGVycyBhdCBhIGRpc3RhbmNlIGZyb20gdGhlIGV5ZS4KICogPHA+CiAqIFVzZSB0aGlzIHZlcnNpb24gd2hlbiBwYXNzaW5nIGluIGEgY3VzdG9tIHBpeGVsIHJhdGlvLiBGb3IgZXhhbXBsZSwgcGFzc2luZyBpbiAxLjAgd2lsbCByZXR1cm4gbWV0ZXJzIHBlciBuYXRpdmUgZGV2aWNlIHBpeGVsLgogKiA8L3A+CiAqIEBuYW1lIGN6bV9tZXRlcnNQZXJQaXhlbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25FQyBUaGUgcG9zaXRpb24gdG8gZ2V0IHRoZSBtZXRlcnMgcGVyIHBpeGVsIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHtmbG9hdH0gcGl4ZWxSYXRpbyBUaGUgc2NhbGluZyBmYWN0b3IgZnJvbSBwaXhlbCBzcGFjZSB0byBjb29yZGluYXRlIHNwYWNlCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gVGhlIG1ldGVycyBwZXIgcGl4ZWwgYXQgcG9zaXRpb25FQy4KICovCmZsb2F0IGN6bV9tZXRlcnNQZXJQaXhlbCh2ZWM0IHBvc2l0aW9uRUMsIGZsb2F0IHBpeGVsUmF0aW8pCnsKICAgIGZsb2F0IHdpZHRoID0gY3ptX3ZpZXdwb3J0Lno7CiAgICBmbG9hdCBoZWlnaHQgPSBjem1fdmlld3BvcnQudzsKICAgIGZsb2F0IHBpeGVsV2lkdGg7CiAgICBmbG9hdCBwaXhlbEhlaWdodDsKCiAgICBmbG9hdCB0b3AgPSBjem1fZnJ1c3R1bVBsYW5lcy54OwogICAgZmxvYXQgYm90dG9tID0gY3ptX2ZydXN0dW1QbGFuZXMueTsKICAgIGZsb2F0IGxlZnQgPSBjem1fZnJ1c3R1bVBsYW5lcy56OwogICAgZmxvYXQgcmlnaHQgPSBjem1fZnJ1c3R1bVBsYW5lcy53OwoKICAgIGlmIChjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUyRCB8fCBjem1fb3J0aG9ncmFwaGljSW4zRCA9PSAxLjApCiAgICB7CiAgICAgICAgZmxvYXQgZnJ1c3R1bVdpZHRoID0gcmlnaHQgLSBsZWZ0OwogICAgICAgIGZsb2F0IGZydXN0dW1IZWlnaHQgPSB0b3AgLSBib3R0b207CiAgICAgICAgcGl4ZWxXaWR0aCA9IGZydXN0dW1XaWR0aCAvIHdpZHRoOwogICAgICAgIHBpeGVsSGVpZ2h0ID0gZnJ1c3R1bUhlaWdodCAvIGhlaWdodDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBmbG9hdCBkaXN0YW5jZVRvUGl4ZWwgPSAtcG9zaXRpb25FQy56OwogICAgICAgIGZsb2F0IGludmVyc2VOZWFyID0gMS4wIC8gY3ptX2N1cnJlbnRGcnVzdHVtLng7CiAgICAgICAgZmxvYXQgdGFuVGhldGEgPSB0b3AgKiBpbnZlcnNlTmVhcjsKICAgICAgICBwaXhlbEhlaWdodCA9IDIuMCAqIGRpc3RhbmNlVG9QaXhlbCAqIHRhblRoZXRhIC8gaGVpZ2h0OwogICAgICAgIHRhblRoZXRhID0gcmlnaHQgKiBpbnZlcnNlTmVhcjsKICAgICAgICBwaXhlbFdpZHRoID0gMi4wICogZGlzdGFuY2VUb1BpeGVsICogdGFuVGhldGEgLyB3aWR0aDsKICAgIH0KCiAgICByZXR1cm4gbWF4KHBpeGVsV2lkdGgsIHBpeGVsSGVpZ2h0KSAqIHBpeGVsUmF0aW87Cn0KCi8qKgogKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIHBpeGVsIGluIG1ldGVycyBhdCBhIGRpc3RhbmNlIGZyb20gdGhlIGV5ZS4KICogPHA+CiAqIFVzZSB0aGlzIHZlcnNpb24gd2hlbiBzY2FsaW5nIGJ5IHBpeGVsIHJhdGlvLgogKiA8L3A+CiAqIEBuYW1lIGN6bV9tZXRlcnNQZXJQaXhlbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25FQyBUaGUgcG9zaXRpb24gdG8gZ2V0IHRoZSBtZXRlcnMgcGVyIHBpeGVsIGluIGV5ZSBjb29yZGluYXRlcy4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgbWV0ZXJzIHBlciBwaXhlbCBhdCBwb3NpdGlvbkVDLgogKi8KZmxvYXQgY3ptX21ldGVyc1BlclBpeGVsKHZlYzQgcG9zaXRpb25FQykKewogICAgcmV0dXJuIGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVDLCBjem1fcGl4ZWxSYXRpbyk7Cn0KYH0pO3ZhciBxMSwkMT1PKCgpPT57cTE9YC8qKgogKiBUcmFuc2Zvcm1zIGEgcG9zaXRpb24gZnJvbSBtb2RlbCB0byB3aW5kb3cgY29vcmRpbmF0ZXMuICBUaGUgdHJhbnNmb3JtYXRpb24KICogZnJvbSBtb2RlbCB0byBjbGlwIGNvb3JkaW5hdGVzIGlzIGRvbmUgdXNpbmcge0BsaW5rIGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9ufS4KICogVGhlIHRyYW5zZm9ybSBmcm9tIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzIHRvIHdpbmRvdyBjb29yZGluYXRlcyBpcwogKiBkb25lIHVzaW5nIHtAbGluayBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbn0sIHdoaWNoIGFzc3VtZXMgYSBkZXB0aCByYW5nZQogKiBvZiA8Y29kZT5uZWFyID0gMDwvY29kZT4gYW5kIDxjb2RlPmZhciA9IDE8L2NvZGU+LgogKiA8YnIgLz48YnIgLz4KICogVGhpcyB0cmFuc2Zvcm0gaXMgdXNlZnVsIHdoZW4gdGhlcmUgaXMgYSBuZWVkIHRvIG1hbmlwdWxhdGUgd2luZG93IGNvb3JkaW5hdGVzCiAqIGluIGEgdmVydGV4IHNoYWRlciBhcyBkb25lIGJ5IHtAbGluayBCaWxsYm9hcmRDb2xsZWN0aW9ufS4KICogPGJyIC8+PGJyIC8+CiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHtAbGluayBjem1fdmlld3BvcnRPcnRob2dyYXBoaWN9LAogKiB3aGljaCBpcyBhbiBvcnRob2dyYXBoaWMgcHJvamVjdGlvbiBtYXRyaXggdGhhdCB0cmFuc2Zvcm1zIGZyb20gd2luZG93IAogKiBjb29yZGluYXRlcyB0byBjbGlwIGNvb3JkaW5hdGVzLgogKgogKiBAbmFtZSBjem1fbW9kZWxUb1dpbmRvd0Nvb3JkaW5hdGVzCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBwb3NpdGlvbiBUaGUgcG9zaXRpb24gaW4gbW9kZWwgY29vcmRpbmF0ZXMgdG8gdHJhbnNmb3JtLgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIHRyYW5zZm9ybWVkIHBvc2l0aW9uIGluIHdpbmRvdyBjb29yZGluYXRlcy4KICoKICogQHNlZSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcwogKiBAc2VlIGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9uCiAqIEBzZWUgY3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb24KICogQHNlZSBjem1fdmlld3BvcnRPcnRob2dyYXBoaWMKICogQHNlZSBCaWxsYm9hcmRDb2xsZWN0aW9uCiAqCiAqIEBleGFtcGxlCiAqIHZlYzQgcG9zaXRpb25XQyA9IGN6bV9tb2RlbFRvV2luZG93Q29vcmRpbmF0ZXMocG9zaXRpb25NQyk7CiAqLwp2ZWM0IGN6bV9tb2RlbFRvV2luZG93Q29vcmRpbmF0ZXModmVjNCBwb3NpdGlvbikKewogICAgdmVjNCBxID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb24gKiBwb3NpdGlvbjsgICAgICAgICAgICAgICAgLy8gY2xpcCBjb29yZGluYXRlcwogICAgcS54eXogLz0gcS53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzCiAgICBxLnh5eiA9IChjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbiAqIHZlYzQocS54eXosIDEuMCkpLnh5ejsgLy8gd2luZG93IGNvb3JkaW5hdGVzCiAgICByZXR1cm4gcTsKfQpgfSk7dmFyIHRrLGVrPU8oKCk9Pnt0az1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX211bHRpcGx5V2l0aENvbG9yQmFsYW5jZQogKiBAZ2xzbEZ1bmN0aW9uCiAqLwp2ZWMzIGN6bV9tdWx0aXBseVdpdGhDb2xvckJhbGFuY2UodmVjMyBsZWZ0LCB2ZWMzIHJpZ2h0KQp7CiAgICAvLyBBbGdvcml0aG0gZnJvbSBDaGFwdGVyIDEwIG9mIEdyYXBoaWNzIFNoYWRlcnMuCiAgICBjb25zdCB2ZWMzIFcgPSB2ZWMzKDAuMjEyNSwgMC43MTU0LCAwLjA3MjEpOwogICAgCiAgICB2ZWMzIHRhcmdldCA9IGxlZnQgKiByaWdodDsKICAgIGZsb2F0IGxlZnRMdW1pbmFuY2UgPSBkb3QobGVmdCwgVyk7CiAgICBmbG9hdCByaWdodEx1bWluYW5jZSA9IGRvdChyaWdodCwgVyk7CiAgICBmbG9hdCB0YXJnZXRMdW1pbmFuY2UgPSBkb3QodGFyZ2V0LCBXKTsKICAgIAogICAgcmV0dXJuICgobGVmdEx1bWluYW5jZSArIHJpZ2h0THVtaW5hbmNlKSAvICgyLjAgKiB0YXJnZXRMdW1pbmFuY2UpKSAqIHRhcmdldDsKfQpgfSk7dmFyIGlrLG5rPU8oKCk9Pntpaz1gLyoqCiAqIENvbXB1dGVzIGEgdmFsdWUgdGhhdCBzY2FsZXMgd2l0aCBkaXN0YW5jZS4gIFRoZSBzY2FsaW5nIGlzIGNsYW1wZWQgYXQgdGhlIG5lYXIgYW5kCiAqIGZhciBkaXN0YW5jZXMsIGFuZCBkb2VzIG5vdCBleHRyYXBvbGF0ZS4gIFRoaXMgZnVuY3Rpb24gd29ya3Mgd2l0aCB0aGUKICoge0BsaW5rIE5lYXJGYXJTY2FsYXJ9IEphdmFTY3JpcHQgY2xhc3MuCiAqCiAqIEBuYW1lIGN6bV9uZWFyRmFyU2NhbGFyCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBuZWFyRmFyU2NhbGFyIEEgdmVjdG9yIHdpdGggNCBjb21wb25lbnRzOiBOZWFyIGRpc3RhbmNlICh4KSwgTmVhciB2YWx1ZSAoeSksIEZhciBkaXN0YW5jZSAoeiksIEZhciB2YWx1ZSAodykuCiAqIEBwYXJhbSB7ZmxvYXR9IGNhbWVyYURpc3RTcSBUaGUgc3F1YXJlIG9mIHRoZSBjdXJyZW50IGRpc3RhbmNlIGZyb20gdGhlIGNhbWVyYS4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgdmFsdWUgYXQgdGhpcyBkaXN0YW5jZS4KICovCmZsb2F0IGN6bV9uZWFyRmFyU2NhbGFyKHZlYzQgbmVhckZhclNjYWxhciwgZmxvYXQgY2FtZXJhRGlzdFNxKQp7CiAgICBmbG9hdCB2YWx1ZUF0TWluID0gbmVhckZhclNjYWxhci55OwogICAgZmxvYXQgdmFsdWVBdE1heCA9IG5lYXJGYXJTY2FsYXIudzsKICAgIGZsb2F0IG5lYXJEaXN0YW5jZVNxID0gbmVhckZhclNjYWxhci54ICogbmVhckZhclNjYWxhci54OwogICAgZmxvYXQgZmFyRGlzdGFuY2VTcSA9IG5lYXJGYXJTY2FsYXIueiAqIG5lYXJGYXJTY2FsYXIuejsKCiAgICBmbG9hdCB0ID0gKGNhbWVyYURpc3RTcSAtIG5lYXJEaXN0YW5jZVNxKSAvIChmYXJEaXN0YW5jZVNxIC0gbmVhckRpc3RhbmNlU3EpOwoKICAgIHQgPSBwb3coY2xhbXAodCwgMC4wLCAxLjApLCAwLjIpOwoKICAgIHJldHVybiBtaXgodmFsdWVBdE1pbiwgdmFsdWVBdE1heCwgdCk7Cn0KYH0pO3ZhciBzayxvaz1PKCgpPT57c2s9YCAvKioKICAqIERlY29kZXMgYSB1bml0LWxlbmd0aCB2ZWN0b3IgaW4gJ29jdCcgZW5jb2RpbmcgdG8gYSBub3JtYWxpemVkIDMtY29tcG9uZW50IENhcnRlc2lhbiB2ZWN0b3IuCiAgKiBUaGUgJ29jdCcgZW5jb2RpbmcgaXMgZGVzY3JpYmVkIGluICJBIFN1cnZleSBvZiBFZmZpY2llbnQgUmVwcmVzZW50YXRpb25zIG9mIEluZGVwZW5kZW50IFVuaXQgVmVjdG9ycyIsCiAgKiBDaWdvbGxlIGV0IGFsIDIwMTQ6IGh0dHA6Ly9qY2d0Lm9yZy9wdWJsaXNoZWQvMDAwMy8wMi8wMS8KICAqCiAgKiBAbmFtZSBjem1fb2N0RGVjb2RlCiAgKiBAcGFyYW0ge3ZlYzJ9IGVuY29kZWQgVGhlIG9jdC1lbmNvZGVkLCB1bml0LWxlbmd0aCB2ZWN0b3IKICAqIEBwYXJhbSB7ZmxvYXR9IHJhbmdlIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBTTk9STSByYW5nZS4gVGhlIGVuY29kZWQgdmVjdG9yIGlzIHN0b3JlZCBpbiBsb2cyKHJhbmdlTWF4KzEpIGJpdHMuCiAgKiBAcmV0dXJucyB7dmVjM30gVGhlIGRlY29kZWQgYW5kIG5vcm1hbGl6ZWQgdmVjdG9yCiAgKi8KICB2ZWMzIGN6bV9vY3REZWNvZGUodmVjMiBlbmNvZGVkLCBmbG9hdCByYW5nZSkKICB7CiAgICAgIGlmIChlbmNvZGVkLnggPT0gMC4wICYmIGVuY29kZWQueSA9PSAwLjApIHsKICAgICAgICAgIHJldHVybiB2ZWMzKDAuMCwgMC4wLCAwLjApOwogICAgICB9CgogICAgIGVuY29kZWQgPSBlbmNvZGVkIC8gcmFuZ2UgKiAyLjAgLSAxLjA7CiAgICAgdmVjMyB2ID0gdmVjMyhlbmNvZGVkLngsIGVuY29kZWQueSwgMS4wIC0gYWJzKGVuY29kZWQueCkgLSBhYnMoZW5jb2RlZC55KSk7CiAgICAgaWYgKHYueiA8IDAuMCkKICAgICB7CiAgICAgICAgIHYueHkgPSAoMS4wIC0gYWJzKHYueXgpKSAqIGN6bV9zaWduTm90WmVybyh2Lnh5KTsKICAgICB9CgogICAgIHJldHVybiBub3JtYWxpemUodik7CiAgfQoKLyoqCiAqIERlY29kZXMgYSB1bml0LWxlbmd0aCB2ZWN0b3IgaW4gJ29jdCcgZW5jb2RpbmcgdG8gYSBub3JtYWxpemVkIDMtY29tcG9uZW50IENhcnRlc2lhbiB2ZWN0b3IuCiAqIFRoZSAnb2N0JyBlbmNvZGluZyBpcyBkZXNjcmliZWQgaW4gIkEgU3VydmV5IG9mIEVmZmljaWVudCBSZXByZXNlbnRhdGlvbnMgb2YgSW5kZXBlbmRlbnQgVW5pdCBWZWN0b3JzIiwKICogQ2lnb2xsZSBldCBhbCAyMDE0OiBodHRwOi8vamNndC5vcmcvcHVibGlzaGVkLzAwMDMvMDIvMDEvCiAqCiAqIEBuYW1lIGN6bV9vY3REZWNvZGUKICogQHBhcmFtIHt2ZWMyfSBlbmNvZGVkIFRoZSBvY3QtZW5jb2RlZCwgdW5pdC1sZW5ndGggdmVjdG9yCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgZGVjb2RlZCBhbmQgbm9ybWFsaXplZCB2ZWN0b3IKICovCiB2ZWMzIGN6bV9vY3REZWNvZGUodmVjMiBlbmNvZGVkKQogewogICAgcmV0dXJuIGN6bV9vY3REZWNvZGUoZW5jb2RlZCwgMjU1LjApOwogfQoKIC8qKgogKiBEZWNvZGVzIGEgdW5pdC1sZW5ndGggdmVjdG9yIGluICdvY3QnIGVuY29kaW5nIHBhY2tlZCBpbnRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgbm9ybWFsaXplZCAzLWNvbXBvbmVudCBDYXJ0ZXNpYW4gdmVjdG9yLgogKiBUaGUgJ29jdCcgZW5jb2RpbmcgaXMgZGVzY3JpYmVkIGluICJBIFN1cnZleSBvZiBFZmZpY2llbnQgUmVwcmVzZW50YXRpb25zIG9mIEluZGVwZW5kZW50IFVuaXQgVmVjdG9ycyIsCiAqIENpZ29sbGUgZXQgYWwgMjAxNDogaHR0cDovL2pjZ3Qub3JnL3B1Ymxpc2hlZC8wMDAzLzAyLzAxLwogKgogKiBAbmFtZSBjem1fb2N0RGVjb2RlCiAqIEBwYXJhbSB7ZmxvYXR9IGVuY29kZWQgVGhlIG9jdC1lbmNvZGVkLCB1bml0LWxlbmd0aCB2ZWN0b3IKICogQHJldHVybnMge3ZlYzN9IFRoZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3RvcgogKi8KIHZlYzMgY3ptX29jdERlY29kZShmbG9hdCBlbmNvZGVkKQogewogICAgZmxvYXQgdGVtcCA9IGVuY29kZWQgLyAyNTYuMDsKICAgIGZsb2F0IHggPSBmbG9vcih0ZW1wKTsKICAgIGZsb2F0IHkgPSAodGVtcCAtIHgpICogMjU2LjA7CiAgICByZXR1cm4gY3ptX29jdERlY29kZSh2ZWMyKHgsIHkpKTsKIH0KCi8qKgogKiBEZWNvZGVzIHRocmVlIHVuaXQtbGVuZ3RoIHZlY3RvcnMgaW4gJ29jdCcgZW5jb2RpbmcgcGFja2VkIGludG8gdHdvIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgdG8gbm9ybWFsaXplZCAzLWNvbXBvbmVudCBDYXJ0ZXNpYW4gdmVjdG9ycy4KICogVGhlICdvY3QnIGVuY29kaW5nIGlzIGRlc2NyaWJlZCBpbiAiQSBTdXJ2ZXkgb2YgRWZmaWNpZW50IFJlcHJlc2VudGF0aW9ucyBvZiBJbmRlcGVuZGVudCBVbml0IFZlY3RvcnMiLAogKiBDaWdvbGxlIGV0IGFsIDIwMTQ6IGh0dHA6Ly9qY2d0Lm9yZy9wdWJsaXNoZWQvMDAwMy8wMi8wMS8KICoKICogQG5hbWUgY3ptX29jdERlY29kZQogKiBAcGFyYW0ge3ZlYzJ9IGVuY29kZWQgVGhlIHBhY2tlZCBvY3QtZW5jb2RlZCwgdW5pdC1sZW5ndGggdmVjdG9ycy4KICogQHBhcmFtIHt2ZWMzfSB2ZWN0b3IxIE9uZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3Rvci4KICogQHBhcmFtIHt2ZWMzfSB2ZWN0b3IyIE9uZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3Rvci4KICogQHBhcmFtIHt2ZWMzfSB2ZWN0b3IzIE9uZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3Rvci4KICovCiAgdm9pZCBjem1fb2N0RGVjb2RlKHZlYzIgZW5jb2RlZCwgb3V0IHZlYzMgdmVjdG9yMSwgb3V0IHZlYzMgdmVjdG9yMiwgb3V0IHZlYzMgdmVjdG9yMykKIHsKICAgIGZsb2F0IHRlbXAgPSBlbmNvZGVkLnggLyA2NTUzNi4wOwogICAgZmxvYXQgeCA9IGZsb29yKHRlbXApOwogICAgZmxvYXQgZW5jb2RlZEZsb2F0MSA9ICh0ZW1wIC0geCkgKiA2NTUzNi4wOwoKICAgIHRlbXAgPSBlbmNvZGVkLnkgLyA2NTUzNi4wOwogICAgZmxvYXQgeSA9IGZsb29yKHRlbXApOwogICAgZmxvYXQgZW5jb2RlZEZsb2F0MiA9ICh0ZW1wIC0geSkgKiA2NTUzNi4wOwoKICAgIHZlY3RvcjEgPSBjem1fb2N0RGVjb2RlKGVuY29kZWRGbG9hdDEpOwogICAgdmVjdG9yMiA9IGN6bV9vY3REZWNvZGUoZW5jb2RlZEZsb2F0Mik7CiAgICB2ZWN0b3IzID0gY3ptX29jdERlY29kZSh2ZWMyKHgsIHkpKTsKIH0KCmB9KTt2YXIgcmssYWs9TygoKT0+e3JrPWAvKioKICogUGFja3MgYSBkZXB0aCB2YWx1ZSBpbnRvIGEgdmVjMyB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBieSB1bnNpZ25lZCBieXRlcy4KICoKICogQG5hbWUgY3ptX3BhY2tEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGRlcHRoIFRoZSBmbG9hdGluZy1wb2ludCBkZXB0aC4KICogQHJldHVybnMge3ZlYzN9IFRoZSBwYWNrZWQgZGVwdGguCiAqLwp2ZWM0IGN6bV9wYWNrRGVwdGgoZmxvYXQgZGVwdGgpCnsKICAgIC8vIFNlZSBBcmFzIFByYW5ja2V2aVx1MDEwRGl1cycgcG9zdCBFbmNvZGluZyBGbG9hdHMgdG8gUkdCQQogICAgLy8gaHR0cDovL2FyYXMtcC5pbmZvL2Jsb2cvMjAwOS8wNy8zMC9lbmNvZGluZy1mbG9hdHMtdG8tcmdiYS10aGUtZmluYWwvCiAgICB2ZWM0IGVuYyA9IHZlYzQoMS4wLCAyNTUuMCwgNjUwMjUuMCwgMTY1ODEzNzUuMCkgKiBkZXB0aDsKICAgIGVuYyA9IGZyYWN0KGVuYyk7CiAgICBlbmMgLT0gZW5jLnl6d3cgKiB2ZWM0KDEuMCAvIDI1NS4wLCAxLjAgLyAyNTUuMCwgMS4wIC8gMjU1LjAsIDAuMCk7CiAgICByZXR1cm4gZW5jOwp9CmB9KTt2YXIgQWssaGs9TygoKT0+e0FrPWB2ZWMzIGxhbWJlcnRpYW5EaWZmdXNlKHZlYzMgZGlmZnVzZUNvbG9yKQp7CiAgICByZXR1cm4gZGlmZnVzZUNvbG9yIC8gY3ptX3BpOwp9Cgp2ZWMzIGZyZXNuZWxTY2hsaWNrMih2ZWMzIGYwLCB2ZWMzIGY5MCwgZmxvYXQgVmRvdEgpCnsKICAgIHJldHVybiBmMCArIChmOTAgLSBmMCkgKiBwb3coY2xhbXAoMS4wIC0gVmRvdEgsIDAuMCwgMS4wKSwgNS4wKTsKfQoKZmxvYXQgc21pdGhWaXNpYmlsaXR5RzEoZmxvYXQgTmRvdFYsIGZsb2F0IHJvdWdobmVzcykKewogICAgLy8gdGhpcyBpcyB0aGUgayB2YWx1ZSBmb3IgZGlyZWN0IGxpZ2h0aW5nLgogICAgLy8gZm9yIGltYWdlIGJhc2VkIGxpZ2h0aW5nIGl0IHdpbGwgYmUgcm91Z2huZXNzXjIgLyAyCiAgICBmbG9hdCBrID0gKHJvdWdobmVzcyArIDEuMCkgKiAocm91Z2huZXNzICsgMS4wKSAvIDguMDsKICAgIHJldHVybiBOZG90ViAvIChOZG90ViAqICgxLjAgLSBrKSArIGspOwp9CgpmbG9hdCBzbWl0aFZpc2liaWxpdHlHR1goZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOZG90TCwgZmxvYXQgTmRvdFYpCnsKICAgIHJldHVybiAoCiAgICAgICAgc21pdGhWaXNpYmlsaXR5RzEoTmRvdEwsIHJvdWdobmVzcykgKgogICAgICAgIHNtaXRoVmlzaWJpbGl0eUcxKE5kb3RWLCByb3VnaG5lc3MpCiAgICApOwp9CgpmbG9hdCBHR1goZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOZG90SCkKewogICAgZmxvYXQgcm91Z2huZXNzU3F1YXJlZCA9IHJvdWdobmVzcyAqIHJvdWdobmVzczsKICAgIGZsb2F0IGYgPSAoTmRvdEggKiByb3VnaG5lc3NTcXVhcmVkIC0gTmRvdEgpICogTmRvdEggKyAxLjA7CiAgICByZXR1cm4gcm91Z2huZXNzU3F1YXJlZCAvIChjem1fcGkgKiBmICogZik7Cn0KCi8qKgogKiBDb21wdXRlIHRoZSBkaWZmdXNlIGFuZCBzcGVjdWxhciBjb250cmlidXRpb25zIHVzaW5nIHBoeXNpY2FsbHkgYmFzZWQKICogcmVuZGVyaW5nLiBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBkaXJlY3QgbGlnaHRpbmcuCiAqIDxwPgogKiBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyB0aGUgbGlnaHRpbmcgY2FsY3VsYXRpb25zLiBNZXRhbGxpYy9yb3VnaG5lc3MKICogYW5kIHNwZWN1bGFyL2dsb3NzeSBtdXN0IGJlIGhhbmRsZWQgc2VwYXJhdGVseS4gU2VlIHtAY3ptX3Bick1ldGFsbGljUm91Z2huZXNzTWF0ZXJpYWx9LCB7QGN6bV9wYnJTcGVjdWxhckdsb3NzaW5lc3NNYXRlcmlhbH0gYW5kIHtAY3ptX2RlZmF1bHRQYnJNYXRlcmlhbH0KICogPC9wPgogKgogKiBAbmFtZSBjem1fcGJybGlnaHRpbmcKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IHBvc2l0aW9uRUMgVGhlIHBvc2l0aW9uIG9mIHRoZSBmcmFnbWVudCBpbiBleWUgY29vcmRpbmF0ZXMKICogQHBhcmFtIHt2ZWMzfSBub3JtYWxFQyBUaGUgc3VyZmFjZSBub3JtYWwgaW4gZXllIGNvb3JkaW5hdGVzCiAqIEBwYXJhbSB7dmVjM30gbGlnaHREaXJlY3Rpb25FQyBVbml0IHZlY3RvciBwb2ludGluZyB0byB0aGUgbGlnaHQgc291cmNlIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHt2ZWMzfSBsaWdodENvbG9ySGRyIHJhZGlhbmNlIG9mIHRoZSBsaWdodCBzb3VyY2UuIFRoaXMgaXMgYSBIRFIgdmFsdWUuCiAqIEBwYXJhbSB7Y3ptX3BiclBhcmFtZXRlcnN9IFRoZSBjb21wdXRlZCBQQlIgcGFyYW1ldGVycy4KICogQHJldHVybiB7dmVjM30gVGhlIGNvbXB1dGVkIEhEUiBjb2xvcgogKgogKiBAZXhhbXBsZQogKiBjem1fcGJyUGFyYW1ldGVycyBwYnJQYXJhbWV0ZXJzID0gY3ptX3Bick1ldGFsbGljUm91Z2huZXNzTWF0ZXJpYWwoCiAqICBiYXNlQ29sb3IsCiAqICBtZXRhbGxpYywKICogIHJvdWdobmVzcwogKiApOwogKiB2ZWMzIGNvbG9yID0gY3ptX3BicmxpZ2h0aW5nKAogKiAgcG9zaXRpb25FQywKICogIG5vcm1hbEVDLAogKiAgbGlnaHREaXJlY3Rpb25FQywKICogIGxpZ2h0Q29sb3JIZHIsCiAqICBwYnJQYXJhbWV0ZXJzKTsKICovCnZlYzMgY3ptX3BickxpZ2h0aW5nKAogICAgdmVjMyBwb3NpdGlvbkVDLAogICAgdmVjMyBub3JtYWxFQywKICAgIHZlYzMgbGlnaHREaXJlY3Rpb25FQywKICAgIHZlYzMgbGlnaHRDb2xvckhkciwKICAgIGN6bV9wYnJQYXJhbWV0ZXJzIHBiclBhcmFtZXRlcnMKKQp7CiAgICB2ZWMzIHYgPSAtbm9ybWFsaXplKHBvc2l0aW9uRUMpOwogICAgdmVjMyBsID0gbm9ybWFsaXplKGxpZ2h0RGlyZWN0aW9uRUMpOwogICAgdmVjMyBoID0gbm9ybWFsaXplKHYgKyBsKTsKICAgIHZlYzMgbiA9IG5vcm1hbEVDOwogICAgZmxvYXQgTmRvdEwgPSBjbGFtcChkb3QobiwgbCksIDAuMDAxLCAxLjApOwogICAgZmxvYXQgTmRvdFYgPSBhYnMoZG90KG4sIHYpKSArIDAuMDAxOwogICAgZmxvYXQgTmRvdEggPSBjbGFtcChkb3QobiwgaCksIDAuMCwgMS4wKTsKICAgIGZsb2F0IExkb3RIID0gY2xhbXAoZG90KGwsIGgpLCAwLjAsIDEuMCk7CiAgICBmbG9hdCBWZG90SCA9IGNsYW1wKGRvdCh2LCBoKSwgMC4wLCAxLjApOwoKICAgIHZlYzMgZjAgPSBwYnJQYXJhbWV0ZXJzLmYwOwogICAgZmxvYXQgcmVmbGVjdGFuY2UgPSBtYXgobWF4KGYwLnIsIGYwLmcpLCBmMC5iKTsKICAgIHZlYzMgZjkwID0gdmVjMyhjbGFtcChyZWZsZWN0YW5jZSAqIDI1LjAsIDAuMCwgMS4wKSk7CiAgICB2ZWMzIEYgPSBmcmVzbmVsU2NobGljazIoZjAsIGY5MCwgVmRvdEgpOwoKICAgIGZsb2F0IGFscGhhID0gcGJyUGFyYW1ldGVycy5yb3VnaG5lc3M7CiAgICBmbG9hdCBHID0gc21pdGhWaXNpYmlsaXR5R0dYKGFscGhhLCBOZG90TCwgTmRvdFYpOwogICAgZmxvYXQgRCA9IEdHWChhbHBoYSwgTmRvdEgpOwogICAgdmVjMyBzcGVjdWxhckNvbnRyaWJ1dGlvbiA9IEYgKiBHICogRCAvICg0LjAgKiBOZG90TCAqIE5kb3RWKTsKCiAgICB2ZWMzIGRpZmZ1c2VDb2xvciA9IHBiclBhcmFtZXRlcnMuZGlmZnVzZUNvbG9yOwogICAgLy8gRiBoZXJlIHJlcHJlc2VudHMgdGhlIHNwZWN1bGFyIGNvbnRyaWJ1dGlvbgogICAgdmVjMyBkaWZmdXNlQ29udHJpYnV0aW9uID0gKDEuMCAtIEYpICogbGFtYmVydGlhbkRpZmZ1c2UoZGlmZnVzZUNvbG9yKTsKCiAgICAvLyBMbyA9IChkaWZmdXNlICsgc3BlY3VsYXIpICogTGkgKiBOZG90TAogICAgcmV0dXJuIChkaWZmdXNlQ29udHJpYnV0aW9uICsgc3BlY3VsYXJDb250cmlidXRpb24pICogTmRvdEwgKiBsaWdodENvbG9ySGRyOwp9CmB9KTt2YXIgY2ssbGs9TygoKT0+e2NrPWAvKioKICogQ29tcHV0ZSBwYXJhbWV0ZXJzIGZvciBwaHlzaWNhbGx5IGJhc2VkIHJlbmRlcmluZyB1c2luZyB0aGUKICogbWV0YWxsaWMvcm91Z2huZXNzIHdvcmtmbG93LiBBbGwgaW5wdXRzIGFyZSBsaW5lYXI7IHNSR0IgdGV4dHVyZSB2YWx1ZXMgbXVzdAogKiBiZSBkZWNvZGVkIGJlZm9yZWhhbmQKICoKICogQG5hbWUgY3ptX3Bick1ldGFsbGljUm91Z2huZXNzTWF0ZXJpYWwKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGJhc2VDb2xvciBGb3IgZGllbGVjdHJpY3MsIHRoaXMgaXMgdGhlIGJhc2UgY29sb3IuIEZvciBtZXRhbHMsIHRoaXMgaXMgdGhlIGYwIHZhbHVlIChyZWZsZWN0YW5jZSBhdCBub3JtYWwgaW5jaWRlbmNlKQogKiBAcGFyYW0ge2Zsb2F0fSBtZXRhbGxpYyAwLjAgaW5kaWNhdGVzIGRpZWxlY3RyaWMuIDEuMCBpbmRpY2F0ZXMgbWV0YWwuIFZhbHVlcyBpbiBiZXR3ZWVuIGFyZSBhbGxvd2VkIChlLmcuIHRvIG1vZGVsIHJ1c3Qgb3IgZGlydCk7CiAqIEBwYXJhbSB7ZmxvYXR9IHJvdWdobmVzcyBBIHZhbHVlIGJldHdlZW4gMC4wIGFuZCAxLjAKICogQHJldHVybiB7Y3ptX3BiclBhcmFtZXRlcnN9IHBhcmFtZXRlcnMgdG8gcGFzcyBpbnRvIHtAbGluayBjem1fcGJyTGlnaHRpbmd9CiAqLwpjem1fcGJyUGFyYW1ldGVycyBjem1fcGJyTWV0YWxsaWNSb3VnaG5lc3NNYXRlcmlhbCgKICAgIHZlYzMgYmFzZUNvbG9yLAogICAgZmxvYXQgbWV0YWxsaWMsCiAgICBmbG9hdCByb3VnaG5lc3MKKSAKewogICAgY3ptX3BiclBhcmFtZXRlcnMgcmVzdWx0czsKCiAgICAvLyByb3VnaG5lc3MgaXMgYXV0aG9yZWQgYXMgcGVyY2VwdHVhbCByb3VnaG5lc3MKICAgIC8vIHNxdWFyZSBpdCB0byBnZXQgbWF0ZXJpYWwgcm91Z2huZXNzCiAgICByb3VnaG5lc3MgPSBjbGFtcChyb3VnaG5lc3MsIDAuMCwgMS4wKTsKICAgIHJlc3VsdHMucm91Z2huZXNzID0gcm91Z2huZXNzICogcm91Z2huZXNzOwoKICAgIC8vIGRpZWxlY3RyaWNzIHVzZSBmMCA9IDAuMDQsIG1ldGFscyB1c2UgYWxiZWRvIGFzIGYwCiAgICBtZXRhbGxpYyA9IGNsYW1wKG1ldGFsbGljLCAwLjAsIDEuMCk7CiAgICBjb25zdCB2ZWMzIFJFRkxFQ1RBTkNFX0RJRUxFQ1RSSUMgPSB2ZWMzKDAuMDQpOwogICAgdmVjMyBmMCA9IG1peChSRUZMRUNUQU5DRV9ESUVMRUNUUklDLCBiYXNlQ29sb3IsIG1ldGFsbGljKTsKICAgIHJlc3VsdHMuZjAgPSBmMDsKCiAgICAvLyBkaWZmdXNlIG9ubHkgYXBwbGllcyB0byBkaWVsZWN0cmljcy4KICAgIHJlc3VsdHMuZGlmZnVzZUNvbG9yID0gYmFzZUNvbG9yICogKDEuMCAtIGYwKSAqICgxLjAgLSBtZXRhbGxpYyk7CgogICAgcmV0dXJuIHJlc3VsdHM7Cn0KYH0pO3ZhciBkayxtaz1PKCgpPT57ZGs9YC8qKgogKiBDb21wdXRlIHBhcmFtZXRlcnMgZm9yIHBoeXNpY2FsbHkgYmFzZWQgcmVuZGVyaW5nIHVzaW5nIHRoZQogKiBzcGVjdWxhci9nbG9zc3kgd29ya2Zsb3cuIEFsbCBpbnB1dHMgYXJlIGxpbmVhcjsgc1JHQiB0ZXh0dXJlIHZhbHVlcyBtdXN0CiAqIGJlIGRlY29kZWQgYmVmb3JlaGFuZAogKgogKiBAbmFtZSBjem1fcGJyU3BlY3VsYXJHbG9zc2luZXNzTWF0ZXJpYWwKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGRpZmZ1c2UgVGhlIGRpZmZ1c2UgY29sb3IgZm9yIGRpZWxlY3RyaWNzIChub24tbWV0YWxzKQogKiBAcGFyYW0ge3ZlYzN9IHNwZWN1bGFyIFRoZSByZWZsZWN0YW5jZSBhdCBub3JtYWwgaW5jaWRlbmNlIChmMCkKICogQHBhcmFtIHtmbG9hdH0gZ2xvc3NpbmVzcyBBIG51bWJlciBmcm9tIDAuMCB0byAxLjAgaW5kaWNhdGluZyBob3cgc21vb3RoIHRoZSBzdXJmYWNlIGlzLgogKiBAcmV0dXJuIHtjem1fcGJyUGFyYW1ldGVyc30gcGFyYW1ldGVycyB0byBwYXNzIGludG8ge0BsaW5rIGN6bV9wYnJMaWdodGluZ30KICovCmN6bV9wYnJQYXJhbWV0ZXJzIGN6bV9wYnJTcGVjdWxhckdsb3NzaW5lc3NNYXRlcmlhbCgKICAgIHZlYzMgZGlmZnVzZSwKICAgIHZlYzMgc3BlY3VsYXIsCiAgICBmbG9hdCBnbG9zc2luZXNzCikgCnsKICAgIGN6bV9wYnJQYXJhbWV0ZXJzIHJlc3VsdHM7CgogICAgLy8gZ2xvc3NpbmVzcyBpcyB0aGUgb3Bwb3NpdGUgb2Ygcm91Z2huZXNzLCBidXQgZWFzaWVyIGZvciBhcnRpc3RzIHRvIHVzZS4KICAgIGZsb2F0IHJvdWdobmVzcyA9IDEuMCAtIGdsb3NzaW5lc3M7CiAgICByZXN1bHRzLnJvdWdobmVzcyA9IHJvdWdobmVzcyAqIHJvdWdobmVzczsKCiAgICByZXN1bHRzLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2UgKiAoMS4wIC0gbWF4KG1heChzcGVjdWxhci5yLCBzcGVjdWxhci5nKSwgc3BlY3VsYXIuYikpOwogICAgcmVzdWx0cy5mMCA9IHNwZWN1bGFyOwoKICAgIHJldHVybiByZXN1bHRzOwp9CmB9KTt2YXIgZmssRWs9TygoKT0+e2ZrPWBmbG9hdCBjem1fcHJpdmF0ZV9nZXRMYW1iZXJ0RGlmZnVzZU9mTWF0ZXJpYWwodmVjMyBsaWdodERpcmVjdGlvbkVDLCBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwpCnsKICAgIHJldHVybiBjem1fZ2V0TGFtYmVydERpZmZ1c2UobGlnaHREaXJlY3Rpb25FQywgbWF0ZXJpYWwubm9ybWFsKTsKfQoKZmxvYXQgY3ptX3ByaXZhdGVfZ2V0U3BlY3VsYXJPZk1hdGVyaWFsKHZlYzMgbGlnaHREaXJlY3Rpb25FQywgdmVjMyB0b0V5ZUVDLCBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwpCnsKICAgIHJldHVybiBjem1fZ2V0U3BlY3VsYXIobGlnaHREaXJlY3Rpb25FQywgdG9FeWVFQywgbWF0ZXJpYWwubm9ybWFsLCBtYXRlcmlhbC5zaGluaW5lc3MpOwp9CgovKioKICogQ29tcHV0ZXMgYSBjb2xvciB1c2luZyB0aGUgUGhvbmcgbGlnaHRpbmcgbW9kZWwuCiAqCiAqIEBuYW1lIGN6bV9waG9uZwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gdG9FeWUgQSBub3JtYWxpemVkIHZlY3RvciBmcm9tIHRoZSBmcmFnbWVudCB0byB0aGUgZXllIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHtjem1fbWF0ZXJpYWx9IG1hdGVyaWFsIFRoZSBmcmFnbWVudCdzIG1hdGVyaWFsLgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIGNvbXB1dGVkIGNvbG9yLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIHBvc2l0aW9uVG9FeWVFQyA9IC8vIC4uLgogKiBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSAvLyAuLi4KICogdmVjMyBsaWdodERpcmVjdGlvbkVDID0gLy8gLi4uCiAqIG91dF9GcmFnQ29sb3IgPSBjem1fcGhvbmcobm9ybWFsaXplKHBvc2l0aW9uVG9FeWVFQyksIG1hdGVyaWFsLCBsaWdodERpcmVjdGlvbkVDKTsKICoKICogQHNlZSBjem1fZ2V0TWF0ZXJpYWwKICovCnZlYzQgY3ptX3Bob25nKHZlYzMgdG9FeWUsIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCwgdmVjMyBsaWdodERpcmVjdGlvbkVDKQp7CiAgICAvLyBEaWZmdXNlIGZyb20gZGlyZWN0aW9uYWwgbGlnaHQgc291cmNlcyBhdCBleWUgKGZvciB0b3AtZG93bikKICAgIGZsb2F0IGRpZmZ1c2UgPSBjem1fcHJpdmF0ZV9nZXRMYW1iZXJ0RGlmZnVzZU9mTWF0ZXJpYWwodmVjMygwLjAsIDAuMCwgMS4wKSwgbWF0ZXJpYWwpOwogICAgaWYgKGN6bV9zY2VuZU1vZGUgPT0gY3ptX3NjZW5lTW9kZTNEKSB7CiAgICAgICAgLy8gKGFuZCBob3Jpem9uIHZpZXdzIGluIDNEKQogICAgICAgIGRpZmZ1c2UgKz0gY3ptX3ByaXZhdGVfZ2V0TGFtYmVydERpZmZ1c2VPZk1hdGVyaWFsKHZlYzMoMC4wLCAxLjAsIDAuMCksIG1hdGVyaWFsKTsKICAgIH0KCiAgICBmbG9hdCBzcGVjdWxhciA9IGN6bV9wcml2YXRlX2dldFNwZWN1bGFyT2ZNYXRlcmlhbChsaWdodERpcmVjdGlvbkVDLCB0b0V5ZSwgbWF0ZXJpYWwpOwoKICAgIC8vIFRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciBhZGRpbmcgYW1iaWVudC4KICAgIHZlYzMgbWF0ZXJpYWxEaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZSAqIDAuNTsKCiAgICB2ZWMzIGFtYmllbnQgPSBtYXRlcmlhbERpZmZ1c2U7CiAgICB2ZWMzIGNvbG9yID0gYW1iaWVudCArIG1hdGVyaWFsLmVtaXNzaW9uOwogICAgY29sb3IgKz0gbWF0ZXJpYWxEaWZmdXNlICogZGlmZnVzZSAqIGN6bV9saWdodENvbG9yOwogICAgY29sb3IgKz0gbWF0ZXJpYWwuc3BlY3VsYXIgKiBzcGVjdWxhciAqIGN6bV9saWdodENvbG9yOwoKICAgIHJldHVybiB2ZWM0KGNvbG9yLCBtYXRlcmlhbC5hbHBoYSk7Cn0KCnZlYzQgY3ptX3ByaXZhdGVfcGhvbmcodmVjMyB0b0V5ZSwgY3ptX21hdGVyaWFsIG1hdGVyaWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uRUMpCnsKICAgIGZsb2F0IGRpZmZ1c2UgPSBjem1fcHJpdmF0ZV9nZXRMYW1iZXJ0RGlmZnVzZU9mTWF0ZXJpYWwobGlnaHREaXJlY3Rpb25FQywgbWF0ZXJpYWwpOwogICAgZmxvYXQgc3BlY3VsYXIgPSBjem1fcHJpdmF0ZV9nZXRTcGVjdWxhck9mTWF0ZXJpYWwobGlnaHREaXJlY3Rpb25FQywgdG9FeWUsIG1hdGVyaWFsKTsKCiAgICB2ZWMzIGFtYmllbnQgPSB2ZWMzKDAuMCk7CiAgICB2ZWMzIGNvbG9yID0gYW1iaWVudCArIG1hdGVyaWFsLmVtaXNzaW9uOwogICAgY29sb3IgKz0gbWF0ZXJpYWwuZGlmZnVzZSAqIGRpZmZ1c2UgKiBjem1fbGlnaHRDb2xvcjsKICAgIGNvbG9yICs9IG1hdGVyaWFsLnNwZWN1bGFyICogc3BlY3VsYXIgKiBjem1fbGlnaHRDb2xvcjsKCiAgICByZXR1cm4gdmVjNChjb2xvciwgbWF0ZXJpYWwuYWxwaGEpOwp9CmB9KTt2YXIgX2ssUms9TygoKT0+e19rPWAvKioKICogQ29tcHV0ZXMgZGlzdGFuY2UgZnJvbSBhIHBvaW50IHRvIGEgcGxhbmUuCiAqCiAqIEBuYW1lIGN6bV9wbGFuZURpc3RhbmNlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogcGFyYW0ge3ZlYzR9IHBsYW5lIEEgUGxhbmUgaW4gSGVzc2lhbiBOb3JtYWwgRm9ybS4gU2VlIFBsYW5lLmpzCiAqIHBhcmFtIHt2ZWMzfSBwb2ludCBBIHBvaW50IGluIHRoZSBzYW1lIHNwYWNlIGFzIHRoZSBwbGFuZS4KICogcmV0dXJucyB7ZmxvYXR9IFRoZSBkaXN0YW5jZSBmcm9tIHRoZSBwb2ludCB0byB0aGUgcGxhbmUuCiAqLwpmbG9hdCBjem1fcGxhbmVEaXN0YW5jZSh2ZWM0IHBsYW5lLCB2ZWMzIHBvaW50KSB7CiAgICByZXR1cm4gKGRvdChwbGFuZS54eXosIHBvaW50KSArIHBsYW5lLncpOwp9CgovKioKICogQ29tcHV0ZXMgZGlzdGFuY2UgZnJvbSBhIHBvaW50IHRvIGEgcGxhbmUuCiAqCiAqIEBuYW1lIGN6bV9wbGFuZURpc3RhbmNlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogcGFyYW0ge3ZlYzN9IHBsYW5lTm9ybWFsIE5vcm1hbCBmb3IgYSBwbGFuZSBpbiBIZXNzaWFuIE5vcm1hbCBGb3JtLiBTZWUgUGxhbmUuanMKICogcGFyYW0ge2Zsb2F0fSBwbGFuZURpc3RhbmNlIERpc3RhbmNlIGZvciBhIHBsYW5lIGluIEhlc3NpYW4gTm9ybWFsIGZvcm0uIFNlZSBQbGFuZS5qcwogKiBwYXJhbSB7dmVjM30gcG9pbnQgQSBwb2ludCBpbiB0aGUgc2FtZSBzcGFjZSBhcyB0aGUgcGxhbmUuCiAqIHJldHVybnMge2Zsb2F0fSBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgcG9pbnQgdG8gdGhlIHBsYW5lLgogKi8KZmxvYXQgY3ptX3BsYW5lRGlzdGFuY2UodmVjMyBwbGFuZU5vcm1hbCwgZmxvYXQgcGxhbmVEaXN0YW5jZSwgdmVjMyBwb2ludCkgewogICAgcmV0dXJuIChkb3QocGxhbmVOb3JtYWwsIHBvaW50KSArIHBsYW5lRGlzdGFuY2UpOwp9CmB9KTt2YXIgWmssSWs9TygoKT0+e1prPWAvKioKICogQ29tcHV0ZXMgdGhlIHBvaW50IGFsb25nIGEgcmF5IGF0IHRoZSBnaXZlbiB0aW1lLiAgPGNvZGU+dGltZTwvY29kZT4gY2FuIGJlIHBvc2l0aXZlLCBuZWdhdGl2ZSwgb3IgemVyby4KICoKICogQG5hbWUgY3ptX3BvaW50QWxvbmdSYXkKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2N6bV9yYXl9IHJheSBUaGUgcmF5IHRvIGNvbXB1dGUgdGhlIHBvaW50IGFsb25nLgogKiBAcGFyYW0ge2Zsb2F0fSB0aW1lIFRoZSB0aW1lIGFsb25nIHRoZSByYXkuCiAqIAogKiBAcmV0dXJucyB7dmVjM30gVGhlIHBvaW50IGFsb25nIHRoZSByYXkgYXQgdGhlIGdpdmVuIHRpbWUuCiAqIAogKiBAZXhhbXBsZQogKiBjem1fcmF5IHJheSA9IGN6bV9yYXkodmVjMygwLjApLCB2ZWMzKDEuMCwgMC4wLCAwLjApKTsgLy8gb3JpZ2luLCBkaXJlY3Rpb24KICogdmVjMyB2ID0gY3ptX3BvaW50QWxvbmdSYXkocmF5LCAyLjApOyAvLyAoMi4wLCAwLjAsIDAuMCkKICovCnZlYzMgY3ptX3BvaW50QWxvbmdSYXkoY3ptX3JheSByYXksIGZsb2F0IHRpbWUpCnsKICAgIHJldHVybiByYXkub3JpZ2luICsgKHRpbWUgKiByYXkuZGlyZWN0aW9uKTsKfQpgfSk7dmFyIHBrLHVrPU8oKCk9Pntwaz1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX3JheUVsbGlwc29pZEludGVyc2VjdGlvbkludGVydmFsCiAqIEBnbHNsRnVuY3Rpb24KICovCmN6bV9yYXlTZWdtZW50IGN6bV9yYXlFbGxpcHNvaWRJbnRlcnNlY3Rpb25JbnRlcnZhbChjem1fcmF5IHJheSwgdmVjMyBlbGxpcHNvaWRfY2VudGVyLCB2ZWMzIGVsbGlwc29pZF9pbnZlcnNlUmFkaWkpCnsKICAgLy8gcmF5IGFuZCBlbGxpcHNvaWQgY2VudGVyIGluIGV5ZSBjb29yZGluYXRlcy4gIHJhZGlpIGluIG1vZGVsIGNvb3JkaW5hdGVzLgogICAgdmVjMyBxID0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQocmF5Lm9yaWdpbiwgMS4wKSkueHl6OwogICAgdmVjMyB3ID0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQocmF5LmRpcmVjdGlvbiwgMC4wKSkueHl6OwoKICAgIHEgPSBxIC0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQoZWxsaXBzb2lkX2NlbnRlciwgMS4wKSkueHl6OwoKICAgIGZsb2F0IHEyID0gZG90KHEsIHEpOwogICAgZmxvYXQgcXcgPSBkb3QocSwgdyk7CgogICAgaWYgKHEyID4gMS4wKSAvLyBPdXRzaWRlIGVsbGlwc29pZC4KICAgIHsKICAgICAgICBpZiAocXcgPj0gMC4wKSAvLyBMb29raW5nIG91dHdhcmQgb3IgdGFuZ2VudCAoMCBpbnRlcnNlY3Rpb25zKS4KICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBjem1fZW1wdHlSYXlTZWdtZW50OwogICAgICAgIH0KICAgICAgICBlbHNlIC8vIHF3IDwgMC4wLgogICAgICAgIHsKICAgICAgICAgICAgZmxvYXQgcXcyID0gcXcgKiBxdzsKICAgICAgICAgICAgZmxvYXQgZGlmZmVyZW5jZSA9IHEyIC0gMS4wOyAvLyBQb3NpdGl2ZWx5IHZhbHVlZC4KICAgICAgICAgICAgZmxvYXQgdzIgPSBkb3Qodywgdyk7CiAgICAgICAgICAgIGZsb2F0IHByb2R1Y3QgPSB3MiAqIGRpZmZlcmVuY2U7CgogICAgICAgICAgICBpZiAocXcyIDwgcHJvZHVjdCkgLy8gSW1hZ2luYXJ5IHJvb3RzICgwIGludGVyc2VjdGlvbnMpLgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gY3ptX2VtcHR5UmF5U2VnbWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChxdzIgPiBwcm9kdWN0KSAvLyBEaXN0aW5jdCByb290cyAoMiBpbnRlcnNlY3Rpb25zKS4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxvYXQgZGlzY3JpbWluYW50ID0gcXcgKiBxdyAtIHByb2R1Y3Q7CiAgICAgICAgICAgICAgICBmbG9hdCB0ZW1wID0gLXF3ICsgc3FydChkaXNjcmltaW5hbnQpOyAvLyBBdm9pZCBjYW5jZWxsYXRpb24uCiAgICAgICAgICAgICAgICBmbG9hdCByb290MCA9IHRlbXAgLyB3MjsKICAgICAgICAgICAgICAgIGZsb2F0IHJvb3QxID0gZGlmZmVyZW5jZSAvIHRlbXA7CiAgICAgICAgICAgICAgICBpZiAocm9vdDAgPCByb290MSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQocm9vdDAsIHJvb3QxKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQocm9vdDEsIHJvb3QwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIC8vIHF3MiA9PSBwcm9kdWN0LiAgUmVwZWF0ZWQgcm9vdHMgKDIgaW50ZXJzZWN0aW9ucykuCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZsb2F0IHJvb3QgPSBzcXJ0KGRpZmZlcmVuY2UgLyB3Mik7CiAgICAgICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQocm9vdCwgcm9vdCk7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYgKHEyIDwgMS4wKSAvLyBJbnNpZGUgZWxsaXBzb2lkICgyIGludGVyc2VjdGlvbnMpLgogICAgewogICAgICAgIGZsb2F0IGRpZmZlcmVuY2UgPSBxMiAtIDEuMDsgLy8gTmVnYXRpdmVseSB2YWx1ZWQuCiAgICAgICAgZmxvYXQgdzIgPSBkb3Qodywgdyk7CiAgICAgICAgZmxvYXQgcHJvZHVjdCA9IHcyICogZGlmZmVyZW5jZTsgLy8gTmVnYXRpdmVseSB2YWx1ZWQuCiAgICAgICAgZmxvYXQgZGlzY3JpbWluYW50ID0gcXcgKiBxdyAtIHByb2R1Y3Q7CiAgICAgICAgZmxvYXQgdGVtcCA9IC1xdyArIHNxcnQoZGlzY3JpbWluYW50KTsgLy8gUG9zaXRpdmVseSB2YWx1ZWQuCiAgICAgICAgY3ptX3JheVNlZ21lbnQgaSA9IGN6bV9yYXlTZWdtZW50KDAuMCwgdGVtcCAvIHcyKTsKICAgICAgICByZXR1cm4gaTsKICAgIH0KICAgIGVsc2UgLy8gcTIgPT0gMS4wLiBPbiBlbGxpcHNvaWQuCiAgICB7CiAgICAgICAgaWYgKHF3IDwgMC4wKSAvLyBMb29raW5nIGlud2FyZC4KICAgICAgICB7CiAgICAgICAgICAgIGZsb2F0IHcyID0gZG90KHcsIHcpOwogICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQoMC4wLCAtcXcgLyB3Mik7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICBlbHNlIC8vIHF3ID49IDAuMC4gIExvb2tpbmcgb3V0d2FyZCBvciB0YW5nZW50LgogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGN6bV9lbXB0eVJheVNlZ21lbnQ7CiAgICAgICAgfQogICAgfQp9CmB9KTt2YXIgQ2ssZ2s9TygoKT0+e0NrPWAvKioKICogQ29tcHV0ZSB0aGUgaW50ZXJzZWN0aW9uIGludGVydmFsIG9mIGEgcmF5IHdpdGggYSBzcGhlcmUuCiAqCiAqIEBuYW1lIGN6bV9yYXlTcGhlcmVJbnRlcnNlY3Rpb25JbnRlcnZhbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7Y3ptX3JheX0gcmF5IFRoZSByYXkuCiAqIEBwYXJhbSB7dmVjM30gY2VudGVyIFRoZSBjZW50ZXIgb2YgdGhlIHNwaGVyZS4KICogQHBhcmFtIHtmbG9hdH0gcmFkaXVzIFRoZSByYWRpdXMgb2YgdGhlIHNwaGVyZS4KICogQHJldHVybiB7Y3ptX3JheVNlZ21lbnR9IFRoZSBpbnRlcnNlY3Rpb24gaW50ZXJ2YWwgb2YgdGhlIHJheSB3aXRoIHRoZSBzcGhlcmUuCiAqLwpjem1fcmF5U2VnbWVudCBjem1fcmF5U3BoZXJlSW50ZXJzZWN0aW9uSW50ZXJ2YWwoY3ptX3JheSByYXksIHZlYzMgY2VudGVyLCBmbG9hdCByYWRpdXMpCnsKICAgIHZlYzMgbyA9IHJheS5vcmlnaW47CiAgICB2ZWMzIGQgPSByYXkuZGlyZWN0aW9uOwoKICAgIHZlYzMgb2MgPSBvIC0gY2VudGVyOwoKICAgIGZsb2F0IGEgPSBkb3QoZCwgZCk7CiAgICBmbG9hdCBiID0gMi4wICogZG90KGQsIG9jKTsKICAgIGZsb2F0IGMgPSBkb3Qob2MsIG9jKSAtIChyYWRpdXMgKiByYWRpdXMpOwoKICAgIGZsb2F0IGRldCA9IChiICogYikgLSAoNC4wICogYSAqIGMpOwoKICAgIGlmIChkZXQgPCAwLjApIHsKICAgICAgICByZXR1cm4gY3ptX2VtcHR5UmF5U2VnbWVudDsKICAgIH0KCiAgICBmbG9hdCBzcXJ0RGV0ID0gc3FydChkZXQpOwoKICAgIGZsb2F0IHQwID0gKC1iIC0gc3FydERldCkgLyAoMi4wICogYSk7CiAgICBmbG9hdCB0MSA9ICgtYiArIHNxcnREZXQpIC8gKDIuMCAqIGEpOwoKICAgIGN6bV9yYXlTZWdtZW50IHJlc3VsdCA9IGN6bV9yYXlTZWdtZW50KHQwLCB0MSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CmB9KTt2YXIgVGssTms9TygoKT0+e1RrPWBmbG9hdCBjem1fcmVhZERlcHRoKHNhbXBsZXIyRCBkZXB0aFRleHR1cmUsIHZlYzIgdGV4Q29vcmRzKQp7CiAgICByZXR1cm4gY3ptX3JldmVyc2VMb2dEZXB0aCh0ZXh0dXJlKGRlcHRoVGV4dHVyZSwgdGV4Q29vcmRzKS5yKTsKfQpgfSk7dmFyIGJrLEZrPU8oKCk9Pntiaz1gLyoqCiAqIFJlYWRzIGEgdmFsdWUgcHJldmlvdXNseSB0cmFuc2Zvcm1lZCB3aXRoIHtAbGluayBjem1fd3JpdGVOb25QZXJzcGVjdGl2ZX0KICogYnkgZGl2aWRpbmcgaXQgYnkgXGB3XGAsIHRoZSB2YWx1ZSB1c2VkIGluIHRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUuCiAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGluIGEgZnJhZ21lbnQgc2hhZGVyIHRvIGFjY2VzcyBhCiAqIFxgdmFyeWluZ1xgIHRoYXQgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHBlcnNwZWN0aXZlIGludGVycG9sYXRpb24uCiAqIEZvciBleGFtcGxlLCBzY3JlZW4tc3BhY2UgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhlIHZhbHVlIHNob3VsZCBoYXZlIGJlZW4KICogcHJldmlvdXNseSB3cml0dGVuIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIHdpdGggYSBjYWxsIHRvCiAqIHtAbGluayBjem1fd3JpdGVOb25QZXJzcGVjdGl2ZX0uCiAqCiAqIEBuYW1lIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSB2YWx1ZSBUaGUgbm9uLXBlcnNwZWN0aXZlIHZhbHVlIHRvIGJlIHJlYWQuCiAqIEBwYXJhbSB7ZmxvYXR9IG9uZU92ZXJXIE9uZSBvdmVyIHRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUgdmFsdWUsIFxgd1xgLiBVc3VhbGx5IHRoaXMgaXMgc2ltcGx5IFxgZ2xfRnJhZ0Nvb3JkLndcYC4KICogQHJldHVybnMge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSBUaGUgdXNhYmxlIHZhbHVlLgogKi8KZmxvYXQgY3ptX3JlYWROb25QZXJzcGVjdGl2ZShmbG9hdCB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9Cgp2ZWMyIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUodmVjMiB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9Cgp2ZWMzIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUodmVjMyB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9Cgp2ZWM0IGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUodmVjNCB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9CmB9KTt2YXIgWWssU2s9TygoKT0+e1lrPWBmbG9hdCBjem1fcmV2ZXJzZUxvZ0RlcHRoKGZsb2F0IGxvZ1opCnsKI2lmZGVmIExPR19ERVBUSAogICAgZmxvYXQgbmVhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS54OwogICAgZmxvYXQgZmFyID0gY3ptX2N1cnJlbnRGcnVzdHVtLnk7CiAgICBmbG9hdCBsb2cyRGVwdGggPSBsb2daICogY3ptX2xvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZTsKICAgIGZsb2F0IGRlcHRoRnJvbU5lYXIgPSBwb3coMi4wLCBsb2cyRGVwdGgpIC0gMS4wOwogICAgcmV0dXJuIGZhciAqICgxLjAgLSBuZWFyIC8gKGRlcHRoRnJvbU5lYXIgKyBuZWFyKSkgLyAoZmFyIC0gbmVhcik7CiNlbmRpZgogICAgcmV0dXJuIGxvZ1o7Cn0KYH0pO3ZhciBPayxWaz1PKCgpPT57T2s9YC8qKgogKiBSb3VuZCBhIGZsb2F0aW5nIHBvaW50IHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBiZWNhdXNlIHJvdW5kKCkgZG9lc24ndAogKiBleGlzdCBpbiBHTFNMIDEuMDAuIAogKgogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSB2YWx1ZSBUaGUgdmFsdWUgdG8gcm91bmQKICogQHBhcmFtIHtmbG9hdHx2ZWMyfHZlYzN8dmVjM30gVGhlIHJvdW5kZWQgdmFsdWUuIFRoZSB0eXBlIG1hdGNoZXMgdGhlIGlucHV0LgogKi8KZmxvYXQgY3ptX3JvdW5kKGZsb2F0IHZhbHVlKSB7CiAgcmV0dXJuIGZsb29yKHZhbHVlICsgMC41KTsKfQoKdmVjMiBjem1fcm91bmQodmVjMiB2YWx1ZSkgewogIHJldHVybiBmbG9vcih2YWx1ZSArIDAuNSk7Cn0KCnZlYzMgY3ptX3JvdW5kKHZlYzMgdmFsdWUpIHsKICByZXR1cm4gZmxvb3IodmFsdWUgKyAwLjUpOwp9Cgp2ZWM0IGN6bV9yb3VuZCh2ZWM0IHZhbHVlKSB7CiAgcmV0dXJuIGZsb29yKHZhbHVlICsgMC41KTsKfQpgfSk7dmFyIEdrLEJrPU8oKCk9PntHaz1gLyoqCiAqIFNhbXBsZXMgdGhlIDQgbmVpZ2hib3JpbmcgcGl4ZWxzIGFuZCByZXR1cm4gdGhlIHdlaWdodGVkIGF2ZXJhZ2UuCiAqCiAqIEBwcml2YXRlCiAqLwp2ZWMzIGN6bV9zYW1wbGVPY3RhaGVkcmFsUHJvamVjdGlvbldpdGhGaWx0ZXJpbmcoc2FtcGxlcjJEIHByb2plY3RlZE1hcCwgdmVjMiB0ZXh0dXJlU2l6ZSwgdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGxvZCkKewogICAgZGlyZWN0aW9uIC89IGRvdCh2ZWMzKDEuMCksIGFicyhkaXJlY3Rpb24pKTsKICAgIHZlYzIgcmV2ID0gYWJzKGRpcmVjdGlvbi56eCkgLSB2ZWMyKDEuMCk7CiAgICB2ZWMyIG5lZyA9IHZlYzIoZGlyZWN0aW9uLnggPCAwLjAgPyByZXYueCA6IC1yZXYueCwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24ueiA8IDAuMCA/IHJldi55IDogLXJldi55KTsKICAgIHZlYzIgdXYgPSBkaXJlY3Rpb24ueSA8IDAuMCA/IG5lZyA6IGRpcmVjdGlvbi54ejsKICAgIHZlYzIgY29vcmQgPSAwLjUgKiB1diArIHZlYzIoMC41KTsKICAgIHZlYzIgcGl4ZWwgPSAxLjAgLyB0ZXh0dXJlU2l6ZTsKCiAgICBpZiAobG9kID4gMC4wKQogICAgewogICAgICAgIC8vIEVhY2ggc3Vic2VxZXVlbnQgbWlwIGxldmVsIGlzIGhhbGYgdGhlIHNpemUKICAgICAgICBmbG9hdCBzY2FsZSA9IDEuMCAvIHBvdygyLjAsIGxvZCk7CiAgICAgICAgZmxvYXQgb2Zmc2V0ID0gKCh0ZXh0dXJlU2l6ZS55ICsgMS4wKSAvIHRleHR1cmVTaXplLngpOwoKICAgICAgICBjb29yZC54ICo9IG9mZnNldDsKICAgICAgICBjb29yZCAqPSBzY2FsZTsKCiAgICAgICAgY29vcmQueCArPSBvZmZzZXQgKyBwaXhlbC54OwogICAgICAgIGNvb3JkLnkgKz0gKDEuMCAtICgxLjAgLyBwb3coMi4wLCBsb2QgLSAxLjApKSkgKyBwaXhlbC55ICogKGxvZCAtIDEuMCkgKiAyLjA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgY29vcmQueCAqPSAodGV4dHVyZVNpemUueSAvIHRleHR1cmVTaXplLngpOwogICAgfQoKICAgIC8vIERvIGJpbGluZWFyIGZpbHRlcmluZwogICAgI2lmbmRlZiBPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKICAgICAgICB2ZWMzIGNvbG9yMSA9IHRleHR1cmUocHJvamVjdGVkTWFwLCBjb29yZCArIHZlYzIoMC4wLCBwaXhlbC55KSkucmdiOwogICAgICAgIHZlYzMgY29sb3IyID0gdGV4dHVyZShwcm9qZWN0ZWRNYXAsIGNvb3JkICsgdmVjMihwaXhlbC54LCAwLjApKS5yZ2I7CiAgICAgICAgdmVjMyBjb2xvcjMgPSB0ZXh0dXJlKHByb2plY3RlZE1hcCwgY29vcmQgKyBwaXhlbCkucmdiOwogICAgICAgIHZlYzMgY29sb3I0ID0gdGV4dHVyZShwcm9qZWN0ZWRNYXAsIGNvb3JkKS5yZ2I7CgogICAgICAgIHZlYzIgdGV4dHVyZVBvc2l0aW9uID0gY29vcmQgKiB0ZXh0dXJlU2l6ZTsKCiAgICAgICAgZmxvYXQgZnUgPSBmcmFjdCh0ZXh0dXJlUG9zaXRpb24ueCk7CiAgICAgICAgZmxvYXQgZnYgPSBmcmFjdCh0ZXh0dXJlUG9zaXRpb24ueSk7CgogICAgICAgIHZlYzMgYXZlcmFnZTEgPSBtaXgoY29sb3I0LCBjb2xvcjIsIGZ1KTsKICAgICAgICB2ZWMzIGF2ZXJhZ2UyID0gbWl4KGNvbG9yMSwgY29sb3IzLCBmdSk7CgogICAgICAgIHZlYzMgY29sb3IgPSBtaXgoYXZlcmFnZTEsIGF2ZXJhZ2UyLCBmdik7CiAgICAjZWxzZQogICAgICAgIHZlYzMgY29sb3IgPSB0ZXh0dXJlKHByb2plY3RlZE1hcCwgY29vcmQpLnJnYjsKICAgICNlbmRpZgoKICAgIHJldHVybiBjb2xvcjsKfQoKCi8qKgogKiBTYW1wbGVzIGZyb20gYSBjdWJlIG1hcCB0aGF0IGhhcyBiZWVuIHByb2plY3RlZCB1c2luZyBhbiBvY3RhaGVkcmFsIHByb2plY3Rpb24gZnJvbSB0aGUgZ2l2ZW4gZGlyZWN0aW9uLgogKgogKiBAbmFtZSBjem1fc2FtcGxlT2N0YWhlZHJhbFByb2plY3Rpb24KICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3NhbXBsZXIyRH0gcHJvamVjdGVkTWFwIFRoZSB0ZXh0dXJlIHdpdGggdGhlIG9jdGFoZWRyYWwgcHJvamVjdGVkIGN1YmUgbWFwLgogKiBAcGFyYW0ge3ZlYzJ9IHRleHR1cmVTaXplIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IGRpbWVuc2lvbnMgaW4gcGl4ZWxzIG9mIHRoZSBwcm9qZWN0ZWQgbWFwLgogKiBAcGFyYW0ge3ZlYzN9IGRpcmVjdGlvbiBUaGUgbm9ybWFsaXplZCBkaXJlY3Rpb24gdXNlZCB0byBzYW1wbGUgdGhlIGN1YmUgbWFwLgogKiBAcGFyYW0ge2Zsb2F0fSBsb2QgVGhlIGxldmVsIG9mIGRldGFpbCB0byBzYW1wbGUuCiAqIEBwYXJhbSB7ZmxvYXR9IG1heExvZCBUaGUgbWF4aW11bSBsZXZlbCBvZiBkZXRhaWwuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3Igb2YgdGhlIGN1YmUgbWFwIGF0IHRoZSBkaXJlY3Rpb24uCiAqLwp2ZWMzIGN6bV9zYW1wbGVPY3RhaGVkcmFsUHJvamVjdGlvbihzYW1wbGVyMkQgcHJvamVjdGVkTWFwLCB2ZWMyIHRleHR1cmVTaXplLCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgbG9kLCBmbG9hdCBtYXhMb2QpIHsKICAgIGZsb2F0IGN1cnJlbnRMb2QgPSBmbG9vcihsb2QgKyAwLjUpOwogICAgZmxvYXQgbmV4dExvZCA9IG1pbihjdXJyZW50TG9kICsgMS4wLCBtYXhMb2QpOwoKICAgIHZlYzMgY29sb3JDdXJyZW50TG9kID0gY3ptX3NhbXBsZU9jdGFoZWRyYWxQcm9qZWN0aW9uV2l0aEZpbHRlcmluZyhwcm9qZWN0ZWRNYXAsIHRleHR1cmVTaXplLCBkaXJlY3Rpb24sIGN1cnJlbnRMb2QpOwogICAgdmVjMyBjb2xvck5leHRMb2QgPSBjem1fc2FtcGxlT2N0YWhlZHJhbFByb2plY3Rpb25XaXRoRmlsdGVyaW5nKHByb2plY3RlZE1hcCwgdGV4dHVyZVNpemUsIGRpcmVjdGlvbiwgbmV4dExvZCk7CgogICAgcmV0dXJuIG1peChjb2xvck5leHRMb2QsIGNvbG9yQ3VycmVudExvZCwgbmV4dExvZCAtIGxvZCk7Cn0KYH0pO3ZhciBXayxEaz1PKCgpPT57V2s9YC8qKgogKiBBZGp1c3RzIHRoZSBzYXR1cmF0aW9uIG9mIGEgY29sb3IuCiAqIAogKiBAbmFtZSBjem1fc2F0dXJhdGlvbgogKiBAZ2xzbEZ1bmN0aW9uCiAqIAogKiBAcGFyYW0ge3ZlYzN9IHJnYiBUaGUgY29sb3IuCiAqIEBwYXJhbSB7ZmxvYXR9IGFkanVzdG1lbnQgVGhlIGFtb3VudCB0byBhZGp1c3QgdGhlIHNhdHVyYXRpb24gb2YgdGhlIGNvbG9yLgogKgogKiBAcmV0dXJucyB7ZmxvYXR9IFRoZSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIGFkanVzdGVkLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIGdyZXlTY2FsZSA9IGN6bV9zYXR1cmF0aW9uKGNvbG9yLCAwLjApOwogKiB2ZWMzIGRvdWJsZVNhdHVyYXRpb24gPSBjem1fc2F0dXJhdGlvbihjb2xvciwgMi4wKTsKICovCnZlYzMgY3ptX3NhdHVyYXRpb24odmVjMyByZ2IsIGZsb2F0IGFkanVzdG1lbnQpCnsKICAgIC8vIEFsZ29yaXRobSBmcm9tIENoYXB0ZXIgMTYgb2YgT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UKICAgIGNvbnN0IHZlYzMgVyA9IHZlYzMoMC4yMTI1LCAwLjcxNTQsIDAuMDcyMSk7CiAgICB2ZWMzIGludGVuc2l0eSA9IHZlYzMoZG90KHJnYiwgVykpOwogICAgcmV0dXJuIG1peChpbnRlbnNpdHksIHJnYiwgYWRqdXN0bWVudCk7Cn0KYH0pO3ZhciBNayxVaz1PKCgpPT57TWs9YApmbG9hdCBjem1fc2FtcGxlU2hhZG93TWFwKGhpZ2hwIHNhbXBsZXJDdWJlIHNoYWRvd01hcCwgdmVjMyBkKQp7CiAgICByZXR1cm4gY3ptX3VucGFja0RlcHRoKGN6bV90ZXh0dXJlQ3ViZShzaGFkb3dNYXAsIGQpKTsKfQoKZmxvYXQgY3ptX3NhbXBsZVNoYWRvd01hcChoaWdocCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHV2KQp7CiNpZmRlZiBVU0VfU0hBRE9XX0RFUFRIX1RFWFRVUkUKICAgIHJldHVybiB0ZXh0dXJlKHNoYWRvd01hcCwgdXYpLnI7CiNlbHNlCiAgICByZXR1cm4gY3ptX3VucGFja0RlcHRoKHRleHR1cmUoc2hhZG93TWFwLCB1dikpOwojZW5kaWYKfQoKZmxvYXQgY3ptX3NoYWRvd0RlcHRoQ29tcGFyZShzYW1wbGVyQ3ViZSBzaGFkb3dNYXAsIHZlYzMgdXYsIGZsb2F0IGRlcHRoKQp7CiAgICByZXR1cm4gc3RlcChkZXB0aCwgY3ptX3NhbXBsZVNoYWRvd01hcChzaGFkb3dNYXAsIHV2KSk7Cn0KCmZsb2F0IGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiB1diwgZmxvYXQgZGVwdGgpCnsKICAgIHJldHVybiBzdGVwKGRlcHRoLCBjem1fc2FtcGxlU2hhZG93TWFwKHNoYWRvd01hcCwgdXYpKTsKfQpgfSk7dmFyIFFrLGtrPU8oKCk9PntRaz1gCmZsb2F0IGN6bV9wcml2YXRlX3NoYWRvd1Zpc2liaWxpdHkoZmxvYXQgdmlzaWJpbGl0eSwgZmxvYXQgbkRvdEwsIGZsb2F0IG5vcm1hbFNoYWRpbmdTbW9vdGgsIGZsb2F0IGRhcmtuZXNzKQp7CiNpZmRlZiBVU0VfTk9STUFMX1NIQURJTkcKI2lmZGVmIFVTRV9OT1JNQUxfU0hBRElOR19TTU9PVEgKICAgIGZsb2F0IHN0cmVuZ3RoID0gY2xhbXAobkRvdEwgLyBub3JtYWxTaGFkaW5nU21vb3RoLCAwLjAsIDEuMCk7CiNlbHNlCiAgICBmbG9hdCBzdHJlbmd0aCA9IHN0ZXAoMC4wLCBuRG90TCk7CiNlbmRpZgogICAgdmlzaWJpbGl0eSAqPSBzdHJlbmd0aDsKI2VuZGlmCgogICAgdmlzaWJpbGl0eSA9IG1heCh2aXNpYmlsaXR5LCBkYXJrbmVzcyk7CiAgICByZXR1cm4gdmlzaWJpbGl0eTsKfQoKI2lmZGVmIFVTRV9DVUJFX01BUF9TSEFET1cKZmxvYXQgY3ptX3NoYWRvd1Zpc2liaWxpdHkoc2FtcGxlckN1YmUgc2hhZG93TWFwLCBjem1fc2hhZG93UGFyYW1ldGVycyBzaGFkb3dQYXJhbWV0ZXJzKQp7CiAgICBmbG9hdCBkZXB0aEJpYXMgPSBzaGFkb3dQYXJhbWV0ZXJzLmRlcHRoQmlhczsKICAgIGZsb2F0IGRlcHRoID0gc2hhZG93UGFyYW1ldGVycy5kZXB0aDsKICAgIGZsb2F0IG5Eb3RMID0gc2hhZG93UGFyYW1ldGVycy5uRG90TDsKICAgIGZsb2F0IG5vcm1hbFNoYWRpbmdTbW9vdGggPSBzaGFkb3dQYXJhbWV0ZXJzLm5vcm1hbFNoYWRpbmdTbW9vdGg7CiAgICBmbG9hdCBkYXJrbmVzcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGFya25lc3M7CiAgICB2ZWMzIHV2dyA9IHNoYWRvd1BhcmFtZXRlcnMudGV4Q29vcmRzOwoKICAgIGRlcHRoIC09IGRlcHRoQmlhczsKICAgIGZsb2F0IHZpc2liaWxpdHkgPSBjem1fc2hhZG93RGVwdGhDb21wYXJlKHNoYWRvd01hcCwgdXZ3LCBkZXB0aCk7CiAgICByZXR1cm4gY3ptX3ByaXZhdGVfc2hhZG93VmlzaWJpbGl0eSh2aXNpYmlsaXR5LCBuRG90TCwgbm9ybWFsU2hhZGluZ1Ntb290aCwgZGFya25lc3MpOwp9CiNlbHNlCmZsb2F0IGN6bV9zaGFkb3dWaXNpYmlsaXR5KHNhbXBsZXIyRCBzaGFkb3dNYXAsIGN6bV9zaGFkb3dQYXJhbWV0ZXJzIHNoYWRvd1BhcmFtZXRlcnMpCnsKICAgIGZsb2F0IGRlcHRoQmlhcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGVwdGhCaWFzOwogICAgZmxvYXQgZGVwdGggPSBzaGFkb3dQYXJhbWV0ZXJzLmRlcHRoOwogICAgZmxvYXQgbkRvdEwgPSBzaGFkb3dQYXJhbWV0ZXJzLm5Eb3RMOwogICAgZmxvYXQgbm9ybWFsU2hhZGluZ1Ntb290aCA9IHNoYWRvd1BhcmFtZXRlcnMubm9ybWFsU2hhZGluZ1Ntb290aDsKICAgIGZsb2F0IGRhcmtuZXNzID0gc2hhZG93UGFyYW1ldGVycy5kYXJrbmVzczsKICAgIHZlYzIgdXYgPSBzaGFkb3dQYXJhbWV0ZXJzLnRleENvb3JkczsKCiAgICBkZXB0aCAtPSBkZXB0aEJpYXM7CiNpZmRlZiBVU0VfU09GVF9TSEFET1dTCiAgICB2ZWMyIHRleGVsU3RlcFNpemUgPSBzaGFkb3dQYXJhbWV0ZXJzLnRleGVsU3RlcFNpemU7CiAgICBmbG9hdCByYWRpdXMgPSAxLjA7CiAgICBmbG9hdCBkeDAgPSAtdGV4ZWxTdGVwU2l6ZS54ICogcmFkaXVzOwogICAgZmxvYXQgZHkwID0gLXRleGVsU3RlcFNpemUueSAqIHJhZGl1czsKICAgIGZsb2F0IGR4MSA9IHRleGVsU3RlcFNpemUueCAqIHJhZGl1czsKICAgIGZsb2F0IGR5MSA9IHRleGVsU3RlcFNpemUueSAqIHJhZGl1czsKICAgIGZsb2F0IHZpc2liaWxpdHkgPSAoCiAgICAgICAgY3ptX3NoYWRvd0RlcHRoQ29tcGFyZShzaGFkb3dNYXAsIHV2LCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgwLCBkeTApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoMC4wLCBkeTApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgxLCBkeTApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgwLCAwLjApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgxLCAwLjApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgwLCBkeTEpLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoMC4wLCBkeTEpLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgxLCBkeTEpLCBkZXB0aCkKICAgICkgKiAoMS4wIC8gOS4wKTsKI2Vsc2UKICAgIGZsb2F0IHZpc2liaWxpdHkgPSBjem1fc2hhZG93RGVwdGhDb21wYXJlKHNoYWRvd01hcCwgdXYsIGRlcHRoKTsKI2VuZGlmCgogICAgcmV0dXJuIGN6bV9wcml2YXRlX3NoYWRvd1Zpc2liaWxpdHkodmlzaWJpbGl0eSwgbkRvdEwsIG5vcm1hbFNoYWRpbmdTbW9vdGgsIGRhcmtuZXNzKTsKfQojZW5kaWYKYH0pO3ZhciBMayx5az1PKCgpPT57TGs9YC8qKgogKiBSZXR1cm5zIDEuMCBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgcG9zaXRpdmUgb3IgemVybywgYW5kIC0xLjAgaWYgaXQgaXMgbmVnYXRpdmUuICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIEdMU0wKICogYnVpbHQtaW4gZnVuY3Rpb24gPGNvZGU+c2lnbjwvY29kZT4gZXhjZXB0IHRoYXQgcmV0dXJucyAxLjAgaW5zdGVhZCBvZiAwLjAgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMgMC4wLgogKiAKICogQG5hbWUgY3ptX3NpZ25Ob3RaZXJvCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt9IHZhbHVlIFRoZSB2YWx1ZSBmb3Igd2hpY2ggdG8gZGV0ZXJtaW5lIHRoZSBzaWduLgogKiBAcmV0dXJucyB7fSAxLjAgaWYgdGhlIHZhbHVlIGlzIHBvc2l0aXZlIG9yIHplcm8sIC0xLjAgaWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlLgogKi8KZmxvYXQgY3ptX3NpZ25Ob3RaZXJvKGZsb2F0IHZhbHVlKQp7CiAgICByZXR1cm4gdmFsdWUgPj0gMC4wID8gMS4wIDogLTEuMDsKfQoKdmVjMiBjem1fc2lnbk5vdFplcm8odmVjMiB2YWx1ZSkKewogICAgcmV0dXJuIHZlYzIoY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLngpLCBjem1fc2lnbk5vdFplcm8odmFsdWUueSkpOwp9Cgp2ZWMzIGN6bV9zaWduTm90WmVybyh2ZWMzIHZhbHVlKQp7CiAgICByZXR1cm4gdmVjMyhjem1fc2lnbk5vdFplcm8odmFsdWUueCksIGN6bV9zaWduTm90WmVybyh2YWx1ZS55KSwgY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLnopKTsKfQoKdmVjNCBjem1fc2lnbk5vdFplcm8odmVjNCB2YWx1ZSkKewogICAgcmV0dXJuIHZlYzQoY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLngpLCBjem1fc2lnbk5vdFplcm8odmFsdWUueSksIGN6bV9zaWduTm90WmVybyh2YWx1ZS56KSwgY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLncpKTsKfQpgfSk7dmFyIHdrLHhrPU8oKCk9Pnt3az1gLyoqCiAqIENvbXB1dGVzIGEgY29sb3IgZnJvbSB0aGUgdGhpcmQgb3JkZXIgc3BoZXJpY2FsIGhhcm1vbmljIGNvZWZmaWNpZW50cyBhbmQgYSBub3JtYWxpemVkIGRpcmVjdGlvbiB2ZWN0b3IuCiAqIDxwPgogKiBUaGUgb3JkZXIgb2YgdGhlIGNvZWZmaWNpZW50cyBpcyBbTDAwLCBMMV8xLCBMMTAsIEwxMSwgTDJfMiwgTDJfMSwgTDIwLCBMMjEsIEwyMl0uCiAqIDwvcD4KICoKICogQG5hbWUgY3ptX3NwaGVyaWNhbEhhcm1vbmljcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gbm9ybWFsIFRoZSBub3JtYWxpemVkIGRpcmVjdGlvbi4KICogQHBhcmFtIHt2ZWMzWzldfSBjb2VmZmljaWVudHMgVGhlIHRoaXJkIG9yZGVyIHNwaGVyaWNhbCBoYXJtb25pYyBjb2VmZmljaWVudHMuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgYXQgdGhlIGRpcmVjdGlvbi4KICoKICogQHNlZSBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9wYXBlcnMvZW52bWFwL2Vudm1hcC5wZGYKICovCnZlYzMgY3ptX3NwaGVyaWNhbEhhcm1vbmljcyh2ZWMzIG5vcm1hbCwgdmVjMyBjb2VmZmljaWVudHNbOV0pCnsKICAgIHZlYzMgTDAwID0gY29lZmZpY2llbnRzWzBdOwogICAgdmVjMyBMMV8xID0gY29lZmZpY2llbnRzWzFdOwogICAgdmVjMyBMMTAgPSBjb2VmZmljaWVudHNbMl07CiAgICB2ZWMzIEwxMSA9IGNvZWZmaWNpZW50c1szXTsKICAgIHZlYzMgTDJfMiA9IGNvZWZmaWNpZW50c1s0XTsKICAgIHZlYzMgTDJfMSA9IGNvZWZmaWNpZW50c1s1XTsKICAgIHZlYzMgTDIwID0gY29lZmZpY2llbnRzWzZdOwogICAgdmVjMyBMMjEgPSBjb2VmZmljaWVudHNbN107CiAgICB2ZWMzIEwyMiA9IGNvZWZmaWNpZW50c1s4XTsKCiAgICBmbG9hdCB4ID0gbm9ybWFsLng7CiAgICBmbG9hdCB5ID0gbm9ybWFsLnk7CiAgICBmbG9hdCB6ID0gbm9ybWFsLno7CgogICAgcmV0dXJuCiAgICAgICAgICBMMDAKICAgICAgICArIEwxXzEgKiB5CiAgICAgICAgKyBMMTAgKiB6CiAgICAgICAgKyBMMTEgKiB4CiAgICAgICAgKyBMMl8yICogKHkgKiB4KQogICAgICAgICsgTDJfMSAqICh5ICogeikKICAgICAgICArIEwyMCAqICgzLjAgKiB6ICogeiAtIDEuMCkKICAgICAgICArIEwyMSAqICh6ICogeCkKICAgICAgICArIEwyMiAqICh4ICogeCAtIHkgKiB5KTsKfQpgfSk7dmFyIFBrLEprPU8oKCk9PntQaz1gLyoqCiAqIENvbnZlcnRzIGFuIHNSR0IgY29sb3IgdG8gYSBsaW5lYXIgUkdCIGNvbG9yLgogKgogKiBAcGFyYW0ge3ZlYzN8dmVjNH0gc3JnYkluIFRoZSBjb2xvciBpbiBzUkdCIHNwYWNlCiAqIEByZXR1cm5zIHt2ZWMzfHZlYzR9IFRoZSBjb2xvciBpbiBsaW5lYXIgY29sb3Igc3BhY2UuIFRoZSB2ZWN0b3IgdHlwZSBtYXRjaGVzIHRoZSBpbnB1dC4KICovCnZlYzMgY3ptX3NyZ2JUb0xpbmVhcih2ZWMzIHNyZ2JJbikKewogICAgcmV0dXJuIHBvdyhzcmdiSW4sIHZlYzMoMi4yKSk7Cn0KCnZlYzQgY3ptX3NyZ2JUb0xpbmVhcih2ZWM0IHNyZ2JJbikgCnsKICAgIHZlYzMgbGluZWFyT3V0ID0gcG93KHNyZ2JJbi5yZ2IsIHZlYzMoMi4yKSk7CiAgICByZXR1cm4gdmVjNChsaW5lYXJPdXQsIHNyZ2JJbi5hKTsKfQpgfSk7dmFyIGprLEhrPU8oKCk9Pntqaz1gLyoqCiAqIENyZWF0ZXMgYSBtYXRyaXggdGhhdCB0cmFuc2Zvcm1zIHZlY3RvcnMgZnJvbSB0YW5nZW50IHNwYWNlIHRvIGV5ZSBzcGFjZS4KICoKICogQG5hbWUgY3ptX3RhbmdlbnRUb0V5ZVNwYWNlTWF0cml4CiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWMzfSBub3JtYWxFQyBUaGUgbm9ybWFsIHZlY3RvciBpbiBleWUgY29vcmRpbmF0ZXMuCiAqIEBwYXJhbSB7dmVjM30gdGFuZ2VudEVDIFRoZSB0YW5nZW50IHZlY3RvciBpbiBleWUgY29vcmRpbmF0ZXMuCiAqIEBwYXJhbSB7dmVjM30gYml0YW5nZW50RUMgVGhlIGJpdGFuZ2VudCB2ZWN0b3IgaW4gZXllIGNvb3JkaW5hdGVzLgogKgogKiBAcmV0dXJucyB7bWF0M30gVGhlIG1hdHJpeCB0aGF0IHRyYW5zZm9ybXMgZnJvbSB0YW5nZW50IHNwYWNlIHRvIGV5ZSBzcGFjZS4KICoKICogQGV4YW1wbGUKICogbWF0MyB0YW5nZW50VG9FeWUgPSBjem1fdGFuZ2VudFRvRXllU3BhY2VNYXRyaXgobm9ybWFsRUMsIHRhbmdlbnRFQywgYml0YW5nZW50RUMpOwogKiB2ZWMzIG5vcm1hbCA9IHRhbmdlbnRUb0V5ZSAqIHRleHR1cmUobm9ybWFsTWFwLCBzdCkueHl6OwogKi8KbWF0MyBjem1fdGFuZ2VudFRvRXllU3BhY2VNYXRyaXgodmVjMyBub3JtYWxFQywgdmVjMyB0YW5nZW50RUMsIHZlYzMgYml0YW5nZW50RUMpCnsKICAgIHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKG5vcm1hbEVDKTsKICAgIHZlYzMgdGFuZ2VudCA9IG5vcm1hbGl6ZSh0YW5nZW50RUMpOwogICAgdmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoYml0YW5nZW50RUMpOwogICAgcmV0dXJuIG1hdDModGFuZ2VudC54ICAsIHRhbmdlbnQueSAgLCB0YW5nZW50LnosCiAgICAgICAgICAgICAgICBiaXRhbmdlbnQueCwgYml0YW5nZW50LnksIGJpdGFuZ2VudC56LAogICAgICAgICAgICAgICAgbm9ybWFsLnggICAsIG5vcm1hbC55ICAgLCBub3JtYWwueik7Cn0KYH0pO3ZhciB2ayx6az1PKCgpPT57dms9YC8qKgogKiBBIHdyYXBwZXIgYXJvdW5kIHRoZSB0ZXh0dXJlIChXZWJHTDIpIC8gdGV4dHVyZUN1YmUgKFdlYkdMMSkKICogZnVuY3Rpb24gdG8gYWxsb3cgZm9yIFdlYkdMIDEgc3VwcG9ydC4KICogCiAqIEBuYW1lIGN6bV90ZXh0dXJlQ3ViZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7c2FtcGxlckN1YmV9IHNhbXBsZXIgVGhlIHNhbXBsZXIuCiAqIEBwYXJhbSB7dmVjM30gcCBUaGUgY29vcmRpbmF0ZXMgdG8gc2FtcGxlIHRoZSB0ZXh0dXJlIGF0LgogKi8KdmVjNCBjem1fdGV4dHVyZUN1YmUoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBwKSB7CiNpZiBfX1ZFUlNJT05fXyA9PSAzMDAKICAgIHJldHVybiB0ZXh0dXJlKHNhbXBsZXIsIHApOwojZWxzZSAgCiAgICByZXR1cm4gdGV4dHVyZUN1YmUoc2FtcGxlciwgcCk7CiNlbmRpZgp9YH0pO3ZhciBLayxYaz1PKCgpPT57S2s9YC8qKgogKiBUcmFuc2Zvcm1zIGEgcGxhbmUuCiAqIAogKiBAbmFtZSBjem1fdHJhbnNmb3JtUGxhbmUKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzR9IHBsYW5lIFRoZSBwbGFuZSBpbiBIZXNzaWFuIE5vcm1hbCBGb3JtLgogKiBAcGFyYW0ge21hdDR9IHRyYW5zZm9ybSBUaGUgaW52ZXJzZS10cmFuc3Bvc2Ugb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCiAqLwp2ZWM0IGN6bV90cmFuc2Zvcm1QbGFuZSh2ZWM0IHBsYW5lLCBtYXQ0IHRyYW5zZm9ybSkgewogICAgdmVjNCB0cmFuc2Zvcm1lZFBsYW5lID0gdHJhbnNmb3JtICogcGxhbmU7CiAgICAvLyBDb252ZXJ0IHRoZSB0cmFuc2Zvcm1lZCBwbGFuZSB0byBIZXNzaWFuIE5vcm1hbCBGb3JtCiAgICBmbG9hdCBub3JtYWxNYWduaXR1ZGUgPSBsZW5ndGgodHJhbnNmb3JtZWRQbGFuZS54eXopOwogICAgcmV0dXJuIHRyYW5zZm9ybWVkUGxhbmUgLyBub3JtYWxNYWduaXR1ZGU7Cn0KYH0pO3ZhciBxaywkaz1PKCgpPT57cWs9YC8qKgogKiBUcmFuc2xhdGVzIGEgcG9zaXRpb24gKG9yIGFueSA8Y29kZT52ZWMzPC9jb2RlPikgdGhhdCB3YXMgZW5jb2RlZCB3aXRoIHtAbGluayBFbmNvZGVkQ2FydGVzaWFuM30sCiAqIGFuZCB0aGVuIHByb3ZpZGVkIHRvIHRoZSBzaGFkZXIgYXMgc2VwYXJhdGUgPGNvZGU+aGlnaDwvY29kZT4gYW5kIDxjb2RlPmxvdzwvY29kZT4gYml0cyB0bwogKiBiZSByZWxhdGl2ZSB0byB0aGUgZXllLiAgQXMgc2hvd24gaW4gdGhlIGV4YW1wbGUsIHRoZSBwb3NpdGlvbiBjYW4gdGhlbiBiZSB0cmFuc2Zvcm1lZCBpbiBleWUKICogb3IgY2xpcCBjb29yZGluYXRlcyB1c2luZyB7QGxpbmsgY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWV9IG9yIHtAbGluayBjem1fbW9kZWxWaWV3UHJvamVjdGlvblJlbGF0aXZlVG9FeWV9LAogKiByZXNwZWN0aXZlbHkuCiAqIDxwPgogKiBUaGlzIHRlY2huaXF1ZSwgY2FsbGVkIEdQVSBSVEUsIGVsaW1pbmF0ZXMgaml0dGVyaW5nIGFydGlmYWN0cyB3aGVuIHVzaW5nIGxhcmdlIGNvb3JkaW5hdGVzIGFzCiAqIGRlc2NyaWJlZCBpbiB7QGxpbmsgaHR0cDovL2hlbHAuYWdpLmNvbS9BR0lDb21wb25lbnRzL2h0bWwvQmxvZ1ByZWNpc2lvbnNQcmVjaXNpb25zLmh0bXxQcmVjaXNpb25zLCBQcmVjaXNpb25zfS4KICogPC9wPgogKgogKiBAbmFtZSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gaGlnaCBUaGUgcG9zaXRpb24ncyBoaWdoIGJpdHMuCiAqIEBwYXJhbSB7dmVjM30gbG93IFRoZSBwb3NpdGlvbidzIGxvdyBiaXRzLgogKiBAcmV0dXJucyB7dmVjM30gVGhlIHBvc2l0aW9uIHRyYW5zbGF0ZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGNhbWVyYSdzIHBvc2l0aW9uLgogKgogKiBAZXhhbXBsZQogKiBpbiB2ZWMzIHBvc2l0aW9uSGlnaDsKICogaW4gdmVjMyBwb3NpdGlvbkxvdzsKICoKICogdm9pZCBtYWluKCkKICogewogKiAgIHZlYzQgcCA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHBvc2l0aW9uSGlnaCwgcG9zaXRpb25Mb3cpOwogKiAgIGdsX1Bvc2l0aW9uID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcDsKICogfQogKgogKiBAc2VlIGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllCiAqIEBzZWUgY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllCiAqIEBzZWUgY3ptX2NvbXB1dGVQb3NpdGlvbgogKiBAc2VlIEVuY29kZWRDYXJ0ZXNpYW4zCiAqLwp2ZWM0IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHZlYzMgaGlnaCwgdmVjMyBsb3cpCnsKICAgIHZlYzMgaGlnaERpZmZlcmVuY2UgPSBoaWdoIC0gY3ptX2VuY29kZWRDYW1lcmFQb3NpdGlvbk1DSGlnaDsKICAgIC8vIFRoaXMgY2hlY2sgaGFuZGxlcyB0aGUgY2FzZSB3aGVuIE5hTiB2YWx1ZXMgaGF2ZSBnb3R0ZW4gaW50byBcYGhpZ2hEaWZmZXJlbmNlXGAuCiAgICAvLyBTdWNoIGEgdGhpbmcgY291bGQgaGFwcGVuIG9uIGRldmljZXMgcnVubmluZyBpT1MuCiAgICBpZiAobGVuZ3RoKGhpZ2hEaWZmZXJlbmNlKSA9PSAwLjApIHsgIAogICAgICAgIGhpZ2hEaWZmZXJlbmNlID0gdmVjMygwKTsgIAogICAgfQogICAgdmVjMyBsb3dEaWZmZXJlbmNlID0gbG93IC0gY3ptX2VuY29kZWRDYW1lcmFQb3NpdGlvbk1DTG93OwoKICAgIHJldHVybiB2ZWM0KGhpZ2hEaWZmZXJlbmNlICsgbG93RGlmZmVyZW5jZSwgMS4wKTsKfQpgfSk7dmFyIHRMLGVMPU8oKCk9Pnt0TD1gLyoqCiAqIEBwcml2YXRlCiAqLwp2ZWM0IGN6bV90cmFuc2x1Y2VudFBob25nKHZlYzMgdG9FeWUsIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCwgdmVjMyBsaWdodERpcmVjdGlvbkVDKQp7CiAgICAvLyBEaWZmdXNlIGZyb20gZGlyZWN0aW9uYWwgbGlnaHQgc291cmNlcyBhdCBleWUgKGZvciB0b3AtZG93biBhbmQgaG9yaXpvbiB2aWV3cykKICAgIGZsb2F0IGRpZmZ1c2UgPSBjem1fZ2V0TGFtYmVydERpZmZ1c2UodmVjMygwLjAsIDAuMCwgMS4wKSwgbWF0ZXJpYWwubm9ybWFsKTsKCiAgICBpZiAoY3ptX3NjZW5lTW9kZSA9PSBjem1fc2NlbmVNb2RlM0QpIHsKICAgICAgICAvLyAoYW5kIGhvcml6b24gdmlld3MgaW4gM0QpCiAgICAgICAgZGlmZnVzZSArPSBjem1fZ2V0TGFtYmVydERpZmZ1c2UodmVjMygwLjAsIDEuMCwgMC4wKSwgbWF0ZXJpYWwubm9ybWFsKTsKICAgIH0KCiAgICBkaWZmdXNlID0gY2xhbXAoZGlmZnVzZSwgMC4wLCAxLjApOwoKICAgIGZsb2F0IHNwZWN1bGFyID0gY3ptX2dldFNwZWN1bGFyKGxpZ2h0RGlyZWN0aW9uRUMsIHRvRXllLCBtYXRlcmlhbC5ub3JtYWwsIG1hdGVyaWFsLnNoaW5pbmVzcyk7CgogICAgLy8gVGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIGFkZGluZyBhbWJpZW50LgogICAgdmVjMyBtYXRlcmlhbERpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlICogMC41OwoKICAgIHZlYzMgYW1iaWVudCA9IG1hdGVyaWFsRGlmZnVzZTsKICAgIHZlYzMgY29sb3IgPSBhbWJpZW50ICsgbWF0ZXJpYWwuZW1pc3Npb247CiAgICBjb2xvciArPSBtYXRlcmlhbERpZmZ1c2UgKiBkaWZmdXNlICogY3ptX2xpZ2h0Q29sb3I7CiAgICBjb2xvciArPSBtYXRlcmlhbC5zcGVjdWxhciAqIHNwZWN1bGFyICogY3ptX2xpZ2h0Q29sb3I7CgogICAgcmV0dXJuIHZlYzQoY29sb3IsIG1hdGVyaWFsLmFscGhhKTsKfQpgfSk7dmFyIGlMLG5MPU8oKCk9PntpTD1gLyoqCiAqIFJldHVybnMgdGhlIHRyYW5zcG9zZSBvZiB0aGUgbWF0cml4LiAgVGhlIGlucHV0IDxjb2RlPm1hdHJpeDwvY29kZT4gY2FuIGJlCiAqIGEgPGNvZGU+bWF0MjwvY29kZT4sIDxjb2RlPm1hdDM8L2NvZGU+LCBvciA8Y29kZT5tYXQ0PC9jb2RlPi4KICoKICogQG5hbWUgY3ptX3RyYW5zcG9zZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7fSBtYXRyaXggVGhlIG1hdHJpeCB0byB0cmFuc3Bvc2UuCiAqCiAqIEByZXR1cm5zIHt9IFRoZSB0cmFuc3Bvc2VkIG1hdHJpeC4KICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbnMKICogbWF0MiBjem1fdHJhbnNwb3NlKG1hdDIgbWF0cml4KTsKICogbWF0MyBjem1fdHJhbnNwb3NlKG1hdDMgbWF0cml4KTsKICogbWF0NCBjem1fdHJhbnNwb3NlKG1hdDQgbWF0cml4KTsKICoKICogLy8gVHJhbnNwb3NlIGEgM3gzIHJvdGF0aW9uIG1hdHJpeCB0byBmaW5kIGl0cyBpbnZlcnNlLgogKiBtYXQzIGVhc3ROb3J0aFVwVG9FeWUgPSBjem1fZWFzdE5vcnRoVXBUb0V5ZUNvb3JkaW5hdGVzKAogKiAgICAgcG9zaXRpb25NQywgbm9ybWFsRUMpOwogKiBtYXQzIGV5ZVRvRWFzdE5vcnRoVXAgPSBjem1fdHJhbnNwb3NlKGVhc3ROb3J0aFVwVG9FeWUpOwogKi8KbWF0MiBjem1fdHJhbnNwb3NlKG1hdDIgbWF0cml4KQp7CiAgICByZXR1cm4gbWF0MigKICAgICAgICBtYXRyaXhbMF1bMF0sIG1hdHJpeFsxXVswXSwKICAgICAgICBtYXRyaXhbMF1bMV0sIG1hdHJpeFsxXVsxXSk7Cn0KCm1hdDMgY3ptX3RyYW5zcG9zZShtYXQzIG1hdHJpeCkKewogICAgcmV0dXJuIG1hdDMoCiAgICAgICAgbWF0cml4WzBdWzBdLCBtYXRyaXhbMV1bMF0sIG1hdHJpeFsyXVswXSwKICAgICAgICBtYXRyaXhbMF1bMV0sIG1hdHJpeFsxXVsxXSwgbWF0cml4WzJdWzFdLAogICAgICAgIG1hdHJpeFswXVsyXSwgbWF0cml4WzFdWzJdLCBtYXRyaXhbMl1bMl0pOwp9CgptYXQ0IGN6bV90cmFuc3Bvc2UobWF0NCBtYXRyaXgpCnsKICAgIHJldHVybiBtYXQ0KAogICAgICAgIG1hdHJpeFswXVswXSwgbWF0cml4WzFdWzBdLCBtYXRyaXhbMl1bMF0sIG1hdHJpeFszXVswXSwKICAgICAgICBtYXRyaXhbMF1bMV0sIG1hdHJpeFsxXVsxXSwgbWF0cml4WzJdWzFdLCBtYXRyaXhbM11bMV0sCiAgICAgICAgbWF0cml4WzBdWzJdLCBtYXRyaXhbMV1bMl0sIG1hdHJpeFsyXVsyXSwgbWF0cml4WzNdWzJdLAogICAgICAgIG1hdHJpeFswXVszXSwgbWF0cml4WzFdWzNdLCBtYXRyaXhbMl1bM10sIG1hdHJpeFszXVszXSk7Cn0KYH0pO3ZhciBzTCxvTD1PKCgpPT57c0w9YHZlYzIgZ2V0TG9va3VwVXYodmVjMiBkaW1lbnNpb25zLCBpbnQgaSkgewogICAgaW50IHBpeFkgPSBpIC8gaW50KGRpbWVuc2lvbnMueCk7CiAgICBpbnQgcGl4WCA9IGkgLSAocGl4WSAqIGludChkaW1lbnNpb25zLngpKTsKICAgIGZsb2F0IHBpeGVsV2lkdGggPSAxLjAgLyBkaW1lbnNpb25zLng7CiAgICBmbG9hdCBwaXhlbEhlaWdodCA9IDEuMCAvIGRpbWVuc2lvbnMueTsKICAgIGZsb2F0IHUgPSAoZmxvYXQocGl4WCkgKyAwLjUpICogcGl4ZWxXaWR0aDsgLy8gc2FtcGxlIGZyb20gY2VudGVyIG9mIHBpeGVsCiAgICBmbG9hdCB2ID0gKGZsb2F0KHBpeFkpICsgMC41KSAqIHBpeGVsSGVpZ2h0OwogICAgcmV0dXJuIHZlYzIodSwgdik7Cn0KCnZlYzQgY3ptX3VucGFja0NsaXBwaW5nRXh0ZW50cyhoaWdocCBzYW1wbGVyMkQgZXh0ZW50c1RleHR1cmUsIGludCBpbmRleCkgewogICAgdmVjMiB0ZXh0dXJlRGltZW5zaW9ucyA9IHZlYzIodGV4dHVyZVNpemUoZXh0ZW50c1RleHR1cmUsIDApKTsKICAgIHJldHVybiB0ZXh0dXJlKGV4dGVudHNUZXh0dXJlLCBnZXRMb29rdXBVdih0ZXh0dXJlRGltZW5zaW9ucywgaW5kZXgpKTsKfWB9KTt2YXIgckwsYUw9TygoKT0+e3JMPWAvKioKICogVW5wYWNrcyBhIHZlYzQgZGVwdGggdmFsdWUgdG8gYSBmbG9hdCBpbiBbMCwgMSkgcmFuZ2UuCiAqCiAqIEBuYW1lIGN6bV91bnBhY2tEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcGFja2VkRGVwdGggVGhlIHBhY2tlZCBkZXB0aC4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgZmxvYXRpbmctcG9pbnQgZGVwdGggaW4gWzAsIDEpIHJhbmdlLgogKi8KIGZsb2F0IGN6bV91bnBhY2tEZXB0aCh2ZWM0IHBhY2tlZERlcHRoKQogewogICAgLy8gU2VlIEFyYXMgUHJhbmNrZXZpXHUwMTBEaXVzJyBwb3N0IEVuY29kaW5nIEZsb2F0cyB0byBSR0JBCiAgICAvLyBodHRwOi8vYXJhcy1wLmluZm8vYmxvZy8yMDA5LzA3LzMwL2VuY29kaW5nLWZsb2F0cy10by1yZ2JhLXRoZS1maW5hbC8KICAgIHJldHVybiBkb3QocGFja2VkRGVwdGgsIHZlYzQoMS4wLCAxLjAgLyAyNTUuMCwgMS4wIC8gNjUwMjUuMCwgMS4wIC8gMTY1ODEzNzUuMCkpOwogfQpgfSk7dmFyIEFMLGhMPU8oKCk9PntBTD1gLyoqCiAqIFVucGFjayBhbiBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0IHRoYXQgaXMgcGFja2VkIGFzIGEgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBub3JtYWxpemVkIHZlYzQuCiAqCiAqIEBuYW1lIGN6bV91bnBhY2tGbG9hdAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcGFja2VkRmxvYXQgVGhlIHBhY2tlZCBmbG9hdC4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgZmxvYXRpbmctcG9pbnQgZGVwdGggaW4gYXJiaXRyYXJ5IHJhbmdlLgogKi8KZmxvYXQgY3ptX3VucGFja0Zsb2F0KHZlYzQgcGFja2VkRmxvYXQpCnsKICAgIC8vIENvbnZlcnQgdG8gWzAuMCwgMjU1LjBdIGFuZCByb3VuZCB0byBpbnRlZ2VyCiAgICBwYWNrZWRGbG9hdCA9IGZsb29yKHBhY2tlZEZsb2F0ICogMjU1LjAgKyAwLjUpOwogICAgZmxvYXQgc2lnbiA9IDEuMCAtIHN0ZXAoMTI4LjAsIHBhY2tlZEZsb2F0WzNdKSAqIDIuMDsKICAgIGZsb2F0IGV4cG9uZW50ID0gMi4wICogbW9kKHBhY2tlZEZsb2F0WzNdLCAxMjguMCkgKyBzdGVwKDEyOC4wLCBwYWNrZWRGbG9hdFsyXSkgLSAxMjcuMDsgICAgCiAgICBpZiAoZXhwb25lbnQgPT0gLTEyNy4wKQogICAgewogICAgICAgIHJldHVybiAwLjA7CiAgICB9CiAgICBmbG9hdCBtYW50aXNzYSA9IG1vZChwYWNrZWRGbG9hdFsyXSwgMTI4LjApICogNjU1MzYuMCArIHBhY2tlZEZsb2F0WzFdICogMjU2LjAgKyBwYWNrZWRGbG9hdFswXSArIGZsb2F0KDB4ODAwMDAwKTsKICAgIGZsb2F0IHJlc3VsdCA9IHNpZ24gKiBleHAyKGV4cG9uZW50IC0gMjMuMCkgKiBtYW50aXNzYTsKICAgIHJldHVybiByZXN1bHQ7Cn0KYH0pO3ZhciBjTCxsTD1PKCgpPT57Y0w9YC8qKgogKiBVbnBhY2sgdW5zaWduZWQgaW50ZWdlcnMgb2YgMS00IGJ5dGVzLiBpbiBXZWJHTCAxLCB0aGVyZSBpcyBubyB1aW50IHR5cGUsCiAqIHNvIHRoZSByZXR1cm4gdmFsdWUgaXMgYW4gaW50LgogKiA8cD4KICogVGhlcmUgYXJlIGFsc28gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIFdlYkdMIDEuIGhpZ2hwIGludCBpcyBzdGlsbCBsaW1pdGVkCiAqIHRvIDI0IGJpdHMuIEFib3ZlIHRoZSB2YWx1ZSBvZiAyXjI0ID0gMTY3NzcyMTYsIHByZWNpc2lvbiBsb3NzIG1heSBvY2N1ci4KICogPC9wPgogKgogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSBwYWNrZWQgVGhlIHBhY2tlZCB2YWx1ZS4gRm9yIHZlY3RvcnMsIHRoZSBjb21wb25lbnRzIGFyZSBsaXN0ZWQgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KICoKICogQHJldHVybiB7aW50fSBUaGUgdW5wYWNrZWQgdmFsdWUuCiAqLwogaW50IGN6bV91bnBhY2tVaW50KGZsb2F0IHBhY2tlZFZhbHVlKSB7CiAgIGZsb2F0IHJvdW5kZWQgPSBjem1fcm91bmQocGFja2VkVmFsdWUgKiAyNTUuMCk7CiAgIHJldHVybiBpbnQocm91bmRlZCk7CiB9CgogaW50IGN6bV91bnBhY2tVaW50KHZlYzIgcGFja2VkVmFsdWUpIHsKICAgdmVjMiByb3VuZGVkID0gY3ptX3JvdW5kKHBhY2tlZFZhbHVlICogMjU1LjApOwogICByZXR1cm4gaW50KGRvdChyb3VuZGVkLCB2ZWMyKDEuMCwgMjU2LjApKSk7CiB9CgogaW50IGN6bV91bnBhY2tVaW50KHZlYzMgcGFja2VkVmFsdWUpIHsKICAgdmVjMyByb3VuZGVkID0gY3ptX3JvdW5kKHBhY2tlZFZhbHVlICogMjU1LjApOwogICByZXR1cm4gaW50KGRvdChyb3VuZGVkLCB2ZWMzKDEuMCwgMjU2LjAsIDY1NTM2LjApKSk7CiB9CgogaW50IGN6bV91bnBhY2tVaW50KHZlYzQgcGFja2VkVmFsdWUpIHsKICAgdmVjNCByb3VuZGVkID0gY3ptX3JvdW5kKHBhY2tlZFZhbHVlICogMjU1LjApOwogICByZXR1cm4gaW50KGRvdChyb3VuZGVkLCB2ZWM0KDEuMCwgMjU2LjAsIDY1NTM2LjAsIDE2Nzc3MjE2LjApKSk7CiB9CmB9KTt2YXIgZEwsbUw9TygoKT0+e2RMPWAvKioKICogVHJhbnNmb3JtIG1ldGFkYXRhIHZhbHVlcyBmb2xsb3dpbmcgdGhlIEVYVF9zdHJ1Y3R1cmFsX21ldGFkYXRhIHNwZWMKICogYnkgbXVsdGlwbHlpbmcgYnkgc2NhbGUgYW5kIGFkZGluZyB0aGUgb2Zmc2V0LiBPcGVyYXRpb25zIGFyZSBhbHdheXMKICogcGVyZm9ybWVkIGNvbXBvbmVudC13aXNlLCBldmVuIGZvciBtYXRyaWNlcy4KICogCiAqIEBwYXJhbSB7ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDR9IG9mZnNldCBUaGUgb2Zmc2V0IHRvIGFkZAogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fG1hdDJ8bWF0M3xtYXQ0fSBzY2FsZSBUaGUgc2NhbGUgZmFjdG9yIHRvIG11bHRpcGx5CiAqIEBwYXJhbSB7ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDR9IHZhbHVlIFRoZSBvcmlnaW5hbCB2YWx1ZS4KICoKICogQHJldHVybiB7ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDR9IFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgc2FtZSBzY2FsYXIvdmVjdG9yL21hdHJpeCB0eXBlIGFzIHRoZSBpbnB1dC4KICovCmZsb2F0IGN6bV92YWx1ZVRyYW5zZm9ybShmbG9hdCBvZmZzZXQsIGZsb2F0IHNjYWxlLCBmbG9hdCB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9Cgp2ZWMyIGN6bV92YWx1ZVRyYW5zZm9ybSh2ZWMyIG9mZnNldCwgdmVjMiBzY2FsZSwgdmVjMiB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9Cgp2ZWMzIGN6bV92YWx1ZVRyYW5zZm9ybSh2ZWMzIG9mZnNldCwgdmVjMyBzY2FsZSwgdmVjMyB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9Cgp2ZWM0IGN6bV92YWx1ZVRyYW5zZm9ybSh2ZWM0IG9mZnNldCwgdmVjNCBzY2FsZSwgdmVjNCB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9CgptYXQyIGN6bV92YWx1ZVRyYW5zZm9ybShtYXQyIG9mZnNldCwgbWF0MiBzY2FsZSwgbWF0MiB2YWx1ZSkgewogIHJldHVybiBtYXRyaXhDb21wTXVsdChzY2FsZSwgdmFsdWUpICsgb2Zmc2V0Owp9CgptYXQzIGN6bV92YWx1ZVRyYW5zZm9ybShtYXQzIG9mZnNldCwgbWF0MyBzY2FsZSwgbWF0MyB2YWx1ZSkgewogIHJldHVybiBtYXRyaXhDb21wTXVsdChzY2FsZSwgdmFsdWUpICsgb2Zmc2V0Owp9CgptYXQ0IGN6bV92YWx1ZVRyYW5zZm9ybShtYXQ0IG9mZnNldCwgbWF0NCBzY2FsZSwgbWF0NCB2YWx1ZSkgewogIHJldHVybiBtYXRyaXhDb21wTXVsdChzY2FsZSwgdmFsdWUpICsgb2Zmc2V0Owp9CmB9KTt2YXIgZkwsRUw9TygoKT0+e2ZMPWAjaWZkZWYgTE9HX0RFUFRICi8vIDEuMCBhdCB0aGUgbmVhciBwbGFuZSwgaW5jcmVhc2luZyBsaW5lYXJseSBmcm9tIHRoZXJlLgpvdXQgZmxvYXQgdl9kZXB0aEZyb21OZWFyUGx1c09uZTsKI2lmZGVmIFNIQURPV19NQVAKb3V0IHZlYzMgdl9sb2dQb3NpdGlvbkVDOwojZW5kaWYKI2VuZGlmCgp2ZWM0IGN6bV91cGRhdGVQb3NpdGlvbkRlcHRoKHZlYzQgY29vcmRzKSB7CiNpZiBkZWZpbmVkKExPR19ERVBUSCkKCiNpZmRlZiBTSEFET1dfTUFQCiAgICB2ZWMzIGxvZ1Bvc2l0aW9uRUMgPSAoY3ptX2ludmVyc2VQcm9qZWN0aW9uICogY29vcmRzKS54eXo7CiAgICB2X2xvZ1Bvc2l0aW9uRUMgPSBsb2dQb3NpdGlvbkVDOwojZW5kaWYKCiAgICAvLyBXaXRoIHRoZSB2ZXJ5IGhpZ2ggZmFyL25lYXIgcmF0aW9zIHVzZWQgd2l0aCB0aGUgbG9nYXJpdGhtaWMgZGVwdGgKICAgIC8vIGJ1ZmZlciwgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzIGNhbiBjYXVzZSBsaW5lYXIgZGVwdGggdmFsdWVzCiAgICAvLyB0byBlbmQgdXAgb24gdGhlIHdyb25nIHNpZGUgb2YgdGhlIGZhciBwbGFuZSwgZXZlbiBmb3IgdmVydGljZXMgdGhhdAogICAgLy8gYXJlIHJlYWxseSBub3doZXJlIG5lYXIgaXQuIFNpbmNlIHdlIGFsd2F5cyB3cml0ZSBhIGNvcnJlY3QgbG9nYXJpdGhtaWMKICAgIC8vIGRlcHRoIHZhbHVlIGluIHRoZSBmcmFnbWVudCBzaGFkZXIgYW55d2F5LCB3ZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlCiAgICAvLyBzdWNoIGVycm9ycyBkb24ndCBjYXVzZSB0aGUgcHJpbWl0aXZlIHRvIGJlIGNsaXBwZWQgZW50aXJlbHkgYmVmb3JlCiAgICAvLyB3ZSBldmVuIGdldCB0byB0aGUgZnJhZ21lbnQgc2hhZGVyLgogICAgY29vcmRzLnogPSBjbGFtcChjb29yZHMueiAvIGNvb3Jkcy53LCAtMS4wLCAxLjApICogY29vcmRzLnc7CiNlbmRpZgoKICAgIHJldHVybiBjb29yZHM7Cn0KCi8qKgogKiBXcml0ZXMgdGhlIGxvZ2FyaXRobWljIGRlcHRoIHRvIGdsX1Bvc2l0aW9uIHVzaW5nIHRoZSBhbHJlYWR5IGNvbXB1dGVkIGdsX1Bvc2l0aW9uLgogKgogKiBAbmFtZSBjem1fdmVydGV4TG9nRGVwdGgKICogQGdsc2xGdW5jdGlvbgogKi8Kdm9pZCBjem1fdmVydGV4TG9nRGVwdGgoKQp7CiNpZmRlZiBMT0dfREVQVEgKICAgIHZfZGVwdGhGcm9tTmVhclBsdXNPbmUgPSAoZ2xfUG9zaXRpb24udyAtIGN6bV9jdXJyZW50RnJ1c3R1bS54KSArIDEuMDsKICAgIGdsX1Bvc2l0aW9uID0gY3ptX3VwZGF0ZVBvc2l0aW9uRGVwdGgoZ2xfUG9zaXRpb24pOwojZW5kaWYKfQoKLyoqCiAqIFdyaXRlcyB0aGUgbG9nYXJpdGhtaWMgZGVwdGggdG8gZ2xfUG9zaXRpb24gdXNpbmcgdGhlIHByb3ZpZGVkIGNsaXAgY29vcmRpbmF0ZXMuCiAqIDxwPgogKiBBbiBleGFtcGxlIHVzZSBjYXNlIGZvciB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIG1vdmluZyB0aGUgdmVydGV4IGluIHdpbmRvdyBjb29yZGluYXRlcwogKiBiZWZvcmUgY29udmVydGluZyBiYWNrIHRvIGNsaXAgY29vcmRpbmF0ZXMuIFVzZSB0aGUgb3JpZ2luYWwgdmVydGV4IGNsaXAgY29vcmRpbmF0ZXMuCiAqIDwvcD4KICogQG5hbWUgY3ptX3ZlcnRleExvZ0RlcHRoCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBjbGlwQ29vcmRzIFRoZSB2ZXJ0ZXggaW4gY2xpcCBjb29yZGluYXRlcy4KICoKICogQGV4YW1wbGUKICogY3ptX3ZlcnRleExvZ0RlcHRoKGN6bV9wcm9qZWN0aW9uICogdmVjNChwb3NpdGlvbkV5ZUNvb3JkaW5hdGVzLCAxLjApKTsKICovCnZvaWQgY3ptX3ZlcnRleExvZ0RlcHRoKHZlYzQgY2xpcENvb3JkcykKewojaWZkZWYgTE9HX0RFUFRICiAgICB2X2RlcHRoRnJvbU5lYXJQbHVzT25lID0gKGNsaXBDb29yZHMudyAtIGN6bV9jdXJyZW50RnJ1c3R1bS54KSArIDEuMDsKICAgIGN6bV91cGRhdGVQb3NpdGlvbkRlcHRoKGNsaXBDb29yZHMpOwojZW5kaWYKfQpgfSk7dmFyIF9MLFJMPU8oKCk9PntfTD1gdmVjNCBjem1fc2NyZWVuVG9FeWVDb29yZGluYXRlcyh2ZWM0IHNjcmVlbkNvb3JkaW5hdGUpCnsKICAgIC8vIFJlY29uc3RydWN0IE5EQyBjb29yZGluYXRlcwogICAgZmxvYXQgeCA9IDIuMCAqIHNjcmVlbkNvb3JkaW5hdGUueCAtIDEuMDsKICAgIGZsb2F0IHkgPSAyLjAgKiBzY3JlZW5Db29yZGluYXRlLnkgLSAxLjA7CiAgICBmbG9hdCB6ID0gKHNjcmVlbkNvb3JkaW5hdGUueiAtIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uWzNdWzJdKSAvIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uWzJdWzJdOwogICAgdmVjNCBxID0gdmVjNCh4LCB5LCB6LCAxLjApOwoKICAgIC8vIFJldmVyc2UgdGhlIHBlcnNwZWN0aXZlIGRpdmlzaW9uIHRvIG9idGFpbiBjbGlwIGNvb3JkaW5hdGVzLgogICAgcSAvPSBzY3JlZW5Db29yZGluYXRlLnc7CgogICAgLy8gUmV2ZXJzZSB0aGUgcHJvamVjdGlvbiB0cmFuc2Zvcm1hdGlvbiB0byBvYnRhaW4gZXllIGNvb3JkaW5hdGVzLgogICAgaWYgKCEoY3ptX2ludmVyc2VQcm9qZWN0aW9uID09IG1hdDQoMC4wKSkpIC8vIElFIGFuZCBFZGdlIHNvbWV0aW1lcyBkbyBzb21ldGhpbmcgd2VpcmQgd2l0aCAhPSBiZXR3ZWVuIG1hdDRzCiAgICB7CiAgICAgICAgcSA9IGN6bV9pbnZlcnNlUHJvamVjdGlvbiAqIHE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZmxvYXQgdG9wID0gY3ptX2ZydXN0dW1QbGFuZXMueDsKICAgICAgICBmbG9hdCBib3R0b20gPSBjem1fZnJ1c3R1bVBsYW5lcy55OwogICAgICAgIGZsb2F0IGxlZnQgPSBjem1fZnJ1c3R1bVBsYW5lcy56OwogICAgICAgIGZsb2F0IHJpZ2h0ID0gY3ptX2ZydXN0dW1QbGFuZXMudzsKCiAgICAgICAgZmxvYXQgbmVhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS54OwogICAgICAgIGZsb2F0IGZhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS55OwoKICAgICAgICBxLnggPSAocS54ICogKHJpZ2h0IC0gbGVmdCkgKyBsZWZ0ICsgcmlnaHQpICogMC41OwogICAgICAgIHEueSA9IChxLnkgKiAodG9wIC0gYm90dG9tKSArIGJvdHRvbSArIHRvcCkgKiAwLjU7CiAgICAgICAgcS56ID0gKHEueiAqIChuZWFyIC0gZmFyKSAtIG5lYXIgLSBmYXIpICogMC41OwogICAgICAgIHEudyA9IDEuMDsKICAgIH0KCiAgICByZXR1cm4gcTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYSBwb3NpdGlvbiBmcm9tIHdpbmRvdyB0byBleWUgY29vcmRpbmF0ZXMuCiAqIFRoZSB0cmFuc2Zvcm0gZnJvbSB3aW5kb3cgdG8gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMgaXMgZG9uZSB1c2luZyBjb21wb25lbnRzCiAqIG9mIChAbGluayBjem1fdmlld3BvcnR9IGFuZCB7QGxpbmsgY3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb259IGluc3RlYWQgb2YgY2FsY3VsYXRpbmcKICogdGhlIGludmVyc2Ugb2YgPGNvZGU+Y3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb248L2NvZGU+LiBUaGUgdHJhbnNmb3JtYXRpb24gZnJvbQogKiBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcyB0byBjbGlwIGNvb3JkaW5hdGVzIGlzIGRvbmUgdXNpbmcgPGNvZGU+ZnJhZ21lbnRDb29yZGluYXRlLnc8L2NvZGU+LAogKiB3aGljaCBpcyBleHBlY3RlZCB0byBiZSB0aGUgc2NhbGFyIHVzZWQgaW4gdGhlIHBlcnNwZWN0aXZlIGRpdmlkZS4gVGhlIHRyYW5zZm9ybWF0aW9uCiAqIGZyb20gY2xpcCB0byBleWUgY29vcmRpbmF0ZXMgaXMgZG9uZSB1c2luZyB7QGxpbmsgY3ptX2ludmVyc2VQcm9qZWN0aW9ufS4KICoKICogQG5hbWUgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzR9IGZyYWdtZW50Q29vcmRpbmF0ZSBUaGUgcG9zaXRpb24gaW4gd2luZG93IGNvb3JkaW5hdGVzIHRvIHRyYW5zZm9ybS4KICoKICogQHJldHVybnMge3ZlYzR9IFRoZSB0cmFuc2Zvcm1lZCBwb3NpdGlvbiBpbiBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEBzZWUgY3ptX21vZGVsVG9XaW5kb3dDb29yZGluYXRlcwogKiBAc2VlIGN6bV9leWVUb1dpbmRvd0Nvb3JkaW5hdGVzCiAqIEBzZWUgY3ptX2ludmVyc2VQcm9qZWN0aW9uCiAqIEBzZWUgY3ptX3ZpZXdwb3J0CiAqIEBzZWUgY3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb24KICoKICogQGV4YW1wbGUKICogdmVjNCBwb3NpdGlvbkVDID0gY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMoZ2xfRnJhZ0Nvb3JkKTsKICovCnZlYzQgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXModmVjNCBmcmFnbWVudENvb3JkaW5hdGUpCnsKICAgIHZlYzIgc2NyZWVuQ29vcmRYWSA9IChmcmFnbWVudENvb3JkaW5hdGUueHkgLSBjem1fdmlld3BvcnQueHkpIC8gY3ptX3ZpZXdwb3J0Lnp3OwogICAgcmV0dXJuIGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHZlYzQoc2NyZWVuQ29vcmRYWSwgZnJhZ21lbnRDb29yZGluYXRlLnp3KSk7Cn0KCnZlYzQgY3ptX3NjcmVlblRvRXllQ29vcmRpbmF0ZXModmVjMiBzY3JlZW5Db29yZGluYXRlWFksIGZsb2F0IGRlcHRoT3JMb2dEZXB0aCkKewogICAgLy8gU2VlIHJldmVyc2VMb2dEZXB0aC5nbHNsLiBUaGlzIGlzIHNlcGFyYXRlIHRvIHJlLXVzZSB0aGUgcG93LgojaWYgZGVmaW5lZChMT0dfREVQVEgpIHx8IGRlZmluZWQoTE9HX0RFUFRIX1JFQURfT05MWSkKICAgIGZsb2F0IG5lYXIgPSBjem1fY3VycmVudEZydXN0dW0ueDsKICAgIGZsb2F0IGZhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS55OwogICAgZmxvYXQgbG9nMkRlcHRoID0gZGVwdGhPckxvZ0RlcHRoICogY3ptX2xvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZTsKICAgIGZsb2F0IGRlcHRoRnJvbU5lYXIgPSBwb3coMi4wLCBsb2cyRGVwdGgpIC0gMS4wOwogICAgZmxvYXQgZGVwdGhGcm9tQ2FtZXJhID0gZGVwdGhGcm9tTmVhciArIG5lYXI7CiAgICB2ZWM0IHNjcmVlbkNvb3JkID0gdmVjNChzY3JlZW5Db29yZGluYXRlWFksIGZhciAqICgxLjAgLSBuZWFyIC8gZGVwdGhGcm9tQ2FtZXJhKSAvIChmYXIgLSBuZWFyKSwgMS4wKTsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHNjcmVlbkNvb3JkKTsKICAgIGV5ZUNvb3JkaW5hdGUudyA9IDEuMCAvIGRlcHRoRnJvbUNhbWVyYTsgLy8gQmV0dGVyIHByZWNpc2lvbgogICAgcmV0dXJuIGV5ZUNvb3JkaW5hdGU7CiNlbHNlCiAgICB2ZWM0IHNjcmVlbkNvb3JkID0gdmVjNChzY3JlZW5Db29yZGluYXRlWFksIGRlcHRoT3JMb2dEZXB0aCwgMS4wKTsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHNjcmVlbkNvb3JkKTsKI2VuZGlmCiAgICByZXR1cm4gZXllQ29vcmRpbmF0ZTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYSBwb3NpdGlvbiBnaXZlbiBhcyB3aW5kb3cgeC95IGFuZCBhIGRlcHRoIG9yIGEgbG9nIGRlcHRoIGZyb20gd2luZG93IHRvIGV5ZSBjb29yZGluYXRlcy4KICogVGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBtb3JlIGFjY3VyYXRlIHJlc3VsdHMgZm9yIHdpbmRvdyBwb3NpdGlvbnMgd2l0aCBsb2cgZGVwdGggdGhhbgogKiBjb252ZW50aW9uYWxseSB1bnBhY2tpbmcgdGhlIGxvZyBkZXB0aCB1c2luZyBjem1fcmV2ZXJzZUxvZ0RlcHRoIGFuZCB1c2luZyB0aGUgc3RhbmRhcmQgdmVyc2lvbgogKiBvZiBjem1fd2luZG93VG9FeWVDb29yZGluYXRlcy4KICoKICogQG5hbWUgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzJ9IGZyYWdtZW50Q29vcmRpbmF0ZVhZIFRoZSBYWSBwb3NpdGlvbiBpbiB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gdHJhbnNmb3JtLgogKiBAcGFyYW0ge2Zsb2F0fSBkZXB0aE9yTG9nRGVwdGggQSBkZXB0aCBvciBsb2cgZGVwdGggZm9yIHRoZSBmcmFnbWVudC4KICoKICogQHNlZSBjem1fbW9kZWxUb1dpbmRvd0Nvb3JkaW5hdGVzCiAqIEBzZWUgY3ptX2V5ZVRvV2luZG93Q29vcmRpbmF0ZXMKICogQHNlZSBjem1faW52ZXJzZVByb2plY3Rpb24KICogQHNlZSBjem1fdmlld3BvcnQKICogQHNlZSBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIHRyYW5zZm9ybWVkIHBvc2l0aW9uIGluIGV5ZSBjb29yZGluYXRlcy4KICovCnZlYzQgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXModmVjMiBmcmFnbWVudENvb3JkaW5hdGVYWSwgZmxvYXQgZGVwdGhPckxvZ0RlcHRoKQp7CiAgICB2ZWMyIHNjcmVlbkNvb3JkWFkgPSAoZnJhZ21lbnRDb29yZGluYXRlWFkueHkgLSBjem1fdmlld3BvcnQueHkpIC8gY3ptX3ZpZXdwb3J0Lnp3OwogICAgcmV0dXJuIGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHNjcmVlbkNvb3JkWFksIGRlcHRoT3JMb2dEZXB0aCk7Cn0KYH0pO3ZhciBaTCxJTD1PKCgpPT57Wkw9YC8vIGVtdWxhdGVkIG5vcGVyc3BlY3RpdmUKI2lmICFkZWZpbmVkKExPR19ERVBUSCkKaW4gZmxvYXQgdl9XaW5kb3daOwojZW5kaWYKCi8qKgogKiBFbXVsYXRlcyBHTF9ERVBUSF9DTEFNUC4gQ2xhbXBzIGEgZnJhZ21lbnQgdG8gdGhlIG5lYXIgYW5kIGZhciBwbGFuZQogKiBieSB3cml0aW5nIHRoZSBmcmFnbWVudCdzIGRlcHRoLiBTZWUgY3ptX2RlcHRoQ2xhbXAgZm9yIG1vcmUgZGV0YWlscy4KICoKICogQG5hbWUgY3ptX3dyaXRlRGVwdGhDbGFtcAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBleGFtcGxlCiAqIG91dF9GcmFnQ29sb3IgPSBjb2xvcjsKICogY3ptX3dyaXRlRGVwdGhDbGFtcCgpOwogKgogKiBAc2VlIGN6bV9kZXB0aENsYW1wCiAqLwp2b2lkIGN6bV93cml0ZURlcHRoQ2xhbXAoKQp7CiNpZiAoIWRlZmluZWQoTE9HX0RFUFRIKSAmJiAoX19WRVJTSU9OX18gPT0gMzAwIHx8IGRlZmluZWQoR0xfRVhUX2ZyYWdfZGVwdGgpKSkKICAgIGdsX0ZyYWdEZXB0aCA9IGNsYW1wKHZfV2luZG93WiAqIGdsX0ZyYWdDb29yZC53LCAwLjAsIDEuMCk7CiNlbmRpZgp9CmB9KTt2YXIgcEwsdUw9TygoKT0+e3BMPWAjaWZkZWYgTE9HX0RFUFRICmluIGZsb2F0IHZfZGVwdGhGcm9tTmVhclBsdXNPbmU7CgojaWZkZWYgUE9MWUdPTl9PRkZTRVQKdW5pZm9ybSB2ZWMyIHVfcG9seWdvbk9mZnNldDsKI2VuZGlmCgojZW5kaWYKCi8qKgogKiBXcml0ZXMgdGhlIGZyYWdtZW50IGRlcHRoIHRvIHRoZSBsb2dhcml0aG1pYyBkZXB0aCBidWZmZXIuCiAqIDxwPgogKiBVc2UgdGhpcyB3aGVuIHRoZSB2ZXJ0ZXggc2hhZGVyIGRvZXMgbm90IGNhbGwge0BsaW5rIGN6bV92ZXJ0ZXhsb2dEZXB0aH0sIGZvciBleGFtcGxlLCB3aGVuCiAqIHJheS1jYXN0aW5nIGdlb21ldHJ5IHVzaW5nIGEgZnVsbCBzY3JlZW4gcXVhZC4KICogPC9wPgogKiBAbmFtZSBjem1fd3JpdGVMb2dEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGRlcHRoIFRoZSBkZXB0aCBjb29yZGluYXRlLCB3aGVyZSAxLjAgaXMgb24gdGhlIG5lYXIgcGxhbmUgYW5kCiAqICAgICAgICAgICAgICAgICAgICAgIGRlcHRoIGluY3JlYXNlcyBpbiBleWUtc3BhY2UgdW5pdHMgZnJvbSB0aGVyZQogKgogKiBAZXhhbXBsZQogKiBjem1fd3JpdGVMb2dEZXB0aCgoY3ptX3Byb2plY3Rpb24gKiB2X3Bvc2l0aW9uRXllQ29vcmRpbmF0ZXMpLncgKyAxLjApOwogKi8Kdm9pZCBjem1fd3JpdGVMb2dEZXB0aChmbG9hdCBkZXB0aCkKewojaWYgKGRlZmluZWQoTE9HX0RFUFRIKSAmJiAoX19WRVJTSU9OX18gPT0gMzAwIHx8IGRlZmluZWQoR0xfRVhUX2ZyYWdfZGVwdGgpKSkKICAgIC8vIERpc2NhcmQgdGhlIHZlcnRleCBpZiBpdCdzIG5vdCBiZXR3ZWVuIHRoZSBuZWFyIGFuZCBmYXIgcGxhbmVzLgogICAgLy8gV2UgYWxsb3cgYSBiaXQgb2YgZXBzaWxvbiBvbiB0aGUgbmVhciBwbGFuZSBjb21wYXJpc29uIGJlY2F1c2UgYSAxLjAKICAgIC8vIGZyb20gdGhlIHZlcnRleCBzaGFkZXIgKGluZGljYXRpbmcgdGhlIHZlcnRleCBzaG91bGQgYmUgX29uXyB0aGUgbmVhcgogICAgLy8gcGxhbmUpIHdpbGwgbm90IG5lY2Vzc2FyaWx5IGNvbWUgaGVyZSBhcyBleGFjdGx5IDEuMC4KICAgIGlmIChkZXB0aCA8PSAwLjk5OTk5OTkgfHwgZGVwdGggPiBjem1fZmFyRGVwdGhGcm9tTmVhclBsdXNPbmUpIHsKICAgICAgICBkaXNjYXJkOwogICAgfQoKI2lmZGVmIFBPTFlHT05fT0ZGU0VUCiAgICAvLyBQb2x5Z29uIG9mZnNldDogbSAqIGZhY3RvciArIHIgKiB1bml0cwogICAgZmxvYXQgZmFjdG9yID0gdV9wb2x5Z29uT2Zmc2V0WzBdOwogICAgZmxvYXQgdW5pdHMgPSB1X3BvbHlnb25PZmZzZXRbMV07CgojaWYgKF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykpCiAgICAvLyBUaGlzIGZhY3RvciBkb2Vzbid0IHdvcmsgaW4gSUUgMTAKICAgIGlmIChmYWN0b3IgIT0gMC4wKSB7CiAgICAgICAgLy8gbSA9IHNxcnQoZFpkWF4yICsgZFpkWV4yKTsKICAgICAgICBmbG9hdCB4ID0gZEZkeChkZXB0aCk7CiAgICAgICAgZmxvYXQgeSA9IGRGZHkoZGVwdGgpOwogICAgICAgIGZsb2F0IG0gPSBzcXJ0KHggKiB4ICsgeSAqIHkpOwoKICAgICAgICAvLyBBcHBseSB0aGUgZmFjdG9yIGJlZm9yZSBjb21wdXRpbmcgdGhlIGxvZyBkZXB0aC4KICAgICAgICBkZXB0aCArPSBtICogZmFjdG9yOwogICAgfQojZW5kaWYKCiNlbmRpZgoKICAgIGdsX0ZyYWdEZXB0aCA9IGxvZzIoZGVwdGgpICogY3ptX29uZU92ZXJMb2cyRmFyRGVwdGhGcm9tTmVhclBsdXNPbmU7CgojaWZkZWYgUE9MWUdPTl9PRkZTRVQKICAgIC8vIEFwcGx5IHRoZSB1bml0cyBhZnRlciB0aGUgbG9nIGRlcHRoLgogICAgZ2xfRnJhZ0RlcHRoICs9IGN6bV9lcHNpbG9uNyAqIHVuaXRzOwojZW5kaWYKCiNlbmRpZgp9CgovKioKICogV3JpdGVzIHRoZSBmcmFnbWVudCBkZXB0aCB0byB0aGUgbG9nYXJpdGhtaWMgZGVwdGggYnVmZmVyLgogKiA8cD4KICogVXNlIHRoaXMgd2hlbiB0aGUgdmVydGV4IHNoYWRlciBjYWxscyB7QGxpbmsgY3ptX3ZlcnRleGxvZ0RlcHRofS4KICogPC9wPgogKgogKiBAbmFtZSBjem1fd3JpdGVMb2dEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqLwp2b2lkIGN6bV93cml0ZUxvZ0RlcHRoKCkgewojaWZkZWYgTE9HX0RFUFRICiAgICBjem1fd3JpdGVMb2dEZXB0aCh2X2RlcHRoRnJvbU5lYXJQbHVzT25lKTsKI2VuZGlmCn0KYH0pO3ZhciBDTCxnTD1PKCgpPT57Q0w9YC8qKgogKiBUcmFuc2Zvcm1zIGEgdmFsdWUgZm9yIG5vbi1wZXJzcGVjdGl2ZSBpbnRlcnBvbGF0aW9uIGJ5IG11bHRpcGx5aW5nCiAqIGl0IGJ5IHcsIHRoZSB2YWx1ZSB1c2VkIGluIHRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUuIFRoaXMgZnVuY3Rpb24gaXMKICogaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGluIGEgdmVydGV4IHNoYWRlciB0byBjb21wdXRlIHRoZSB2YWx1ZSBvZiBhCiAqIFxgdmFyeWluZ1xgIHRoYXQgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHBlcnNwZWN0aXZlIGludGVycG9sYXRpb24uCiAqIEZvciBleGFtcGxlLCBzY3JlZW4tc3BhY2UgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhlIGZyYWdtZW50IHNoYWRlcgogKiBtdXN0IGNhbGwge0BsaW5rIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmV9IHRvIHJldHJpZXZlIHRoZSBmaW5hbAogKiBub24tcGVyc3BlY3RpdmUgdmFsdWUuCiAqCiAqIEBuYW1lIGN6bV93cml0ZU5vblBlcnNwZWN0aXZlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtmbG9hdHx2ZWMyfHZlYzN8dmVjNH0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGludGVycG9sYXRlZCB3aXRob3V0IGFjY291bnRpbmcgZm9yIHBlcnNwZWN0aXZlLgogKiBAcGFyYW0ge2Zsb2F0fSB3IFRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUgdmFsdWUuIFVzdWFsbHkgdGhpcyBpcyB0aGUgY29tcHV0ZWQgXGBnbF9Qb3NpdGlvbi53XGAuCiAqIEByZXR1cm5zIHtmbG9hdHx2ZWMyfHZlYzN8dmVjNH0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlLCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gYSBcYHZhcnlpbmdcYCBhbmQgcmVhZCBpbiB0aGUKICogICAgICAgICAgZnJhZ21lbnQgc2hhZGVyIHdpdGgge0BsaW5rIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmV9LgogKi8KZmxvYXQgY3ptX3dyaXRlTm9uUGVyc3BlY3RpdmUoZmxvYXQgdmFsdWUsIGZsb2F0IHcpIHsKICAgIHJldHVybiB2YWx1ZSAqIHc7Cn0KCnZlYzIgY3ptX3dyaXRlTm9uUGVyc3BlY3RpdmUodmVjMiB2YWx1ZSwgZmxvYXQgdykgewogICAgcmV0dXJuIHZhbHVlICogdzsKfQoKdmVjMyBjem1fd3JpdGVOb25QZXJzcGVjdGl2ZSh2ZWMzIHZhbHVlLCBmbG9hdCB3KSB7CiAgICByZXR1cm4gdmFsdWUgKiB3Owp9Cgp2ZWM0IGN6bV93cml0ZU5vblBlcnNwZWN0aXZlKHZlYzQgdmFsdWUsIGZsb2F0IHcpIHsKICAgIHJldHVybiB2YWx1ZSAqIHc7Cn0KYH0pO3ZhciBsSSxUTD1PKCgpPT57Uk0oKTtJTSgpO3VNKCk7Z00oKTtOTSgpO0ZNKCk7U00oKTtWTSgpO0JNKCk7RE0oKTtVTSgpO2tNKCk7eU0oKTt4TSgpO0pNKCk7SE0oKTt6TSgpO1hNKCk7JE0oKTtlVSgpO25VKCk7b1UoKTthVSgpO2hVKCk7bFUoKTttVSgpO0VVKCk7UlUoKTtJVSgpO3VVKCk7Z1UoKTtOVSgpO0ZVKCk7U1UoKTtWVSgpO0JVKCk7RFUoKTtVVSgpO2tVKCk7eVUoKTt4VSgpO0pVKCk7SFUoKTt6VSgpO1hVKCk7JFUoKTtlUSgpO25RKCk7b1EoKTthUSgpO2hRKCk7bFEoKTttUSgpO0VRKCk7UlEoKTtJUSgpO3VRKCk7Z1EoKTtOUSgpO0ZRKCk7U1EoKTtWUSgpO0JRKCk7RFEoKTtVUSgpO2tRKCk7eVEoKTt4USgpO0pRKCk7SFEoKTt6USgpO1hRKCk7JFEoKTtlMSgpO24xKCk7bzEoKTthMSgpO2gxKCk7bDEoKTttMSgpO0UxKCk7UjEoKTtJMSgpO3UxKCk7ZzEoKTtOMSgpO0YxKCk7UzEoKTtWMSgpO0IxKCk7RDEoKTtVMSgpO2sxKCk7eTEoKTt4MSgpO0oxKCk7SDEoKTt6MSgpO1gxKCk7JDEoKTtlaygpO25rKCk7b2soKTthaygpO2hrKCk7bGsoKTttaygpO0VrKCk7UmsoKTtJaygpO3VrKCk7Z2soKTtOaygpO0ZrKCk7U2soKTtWaygpO0JrKCk7RGsoKTtVaygpO2trKCk7eWsoKTt4aygpO0prKCk7SGsoKTt6aygpO1hrKCk7JGsoKTtlTCgpO25MKCk7b0woKTthTCgpO2hMKCk7bEwoKTttTCgpO0VMKCk7UkwoKTtJTCgpO3VMKCk7Z0woKTtsST17Y3ptX2RlZ3JlZXNQZXJSYWRpYW46X00sY3ptX2RlcHRoUmFuZ2U6Wk0sY3ptX2Vwc2lsb24xOnBNLGN6bV9lcHNpbG9uMjpDTSxjem1fZXBzaWxvbjM6VE0sY3ptX2Vwc2lsb240OmJNLGN6bV9lcHNpbG9uNTpZTSxjem1fZXBzaWxvbjY6T00sY3ptX2Vwc2lsb243OkdNLGN6bV9pbmZpbml0eTpXTSxjem1fb25lT3ZlclBpOk1NLGN6bV9vbmVPdmVyVHdvUGk6UU0sY3ptX3Bhc3NDZXNpdW0zRFRpbGU6TE0sY3ptX3Bhc3NDZXNpdW0zRFRpbGVDbGFzc2lmaWNhdGlvbjp3TSxjem1fcGFzc0Nlc2l1bTNEVGlsZUNsYXNzaWZpY2F0aW9uSWdub3JlU2hvdzpQTSxjem1fcGFzc0NsYXNzaWZpY2F0aW9uOmpNLGN6bV9wYXNzQ29tcHV0ZTp2TSxjem1fcGFzc0Vudmlyb25tZW50OktNLGN6bV9wYXNzR2xvYmU6cU0sY3ptX3Bhc3NPcGFxdWU6dFUsY3ptX3Bhc3NPdmVybGF5OmlVLGN6bV9wYXNzVGVycmFpbkNsYXNzaWZpY2F0aW9uOnNVLGN6bV9wYXNzVHJhbnNsdWNlbnQ6clUsY3ptX3Bhc3NWb3hlbHM6QVUsY3ptX3BpOmNVLGN6bV9waU92ZXJGb3VyOmRVLGN6bV9waU92ZXJTaXg6ZlUsY3ptX3BpT3ZlclRocmVlOl9VLGN6bV9waU92ZXJUd286WlUsY3ptX3JhZGlhbnNQZXJEZWdyZWU6cFUsY3ptX3NjZW5lTW9kZTJEOkNVLGN6bV9zY2VuZU1vZGUzRDpUVSxjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3OmJVLGN6bV9zY2VuZU1vZGVNb3JwaGluZzpZVSxjem1fc29sYXJSYWRpdXM6T1UsY3ptX3RocmVlUGlPdmVyMjpHVSxjem1fdHdvUGk6V1UsY3ptX3dlYk1lcmNhdG9yTWF4TGF0aXR1ZGU6TVUsY3ptX2RlcHRoUmFuZ2VTdHJ1Y3Q6UVUsY3ptX21hdGVyaWFsOkxVLGN6bV9tYXRlcmlhbElucHV0OndVLGN6bV9tb2RlbE1hdGVyaWFsOlBVLGN6bV9tb2RlbFZlcnRleE91dHB1dDpqVSxjem1fcGJyUGFyYW1ldGVyczp2VSxjem1fcmF5OktVLGN6bV9yYXlTZWdtZW50OnFVLGN6bV9zaGFkb3dQYXJhbWV0ZXJzOnRRLGN6bV9IU0JUb1JHQjppUSxjem1fSFNMVG9SR0I6c1EsY3ptX1JHQlRvSFNCOnJRLGN6bV9SR0JUb0hTTDpBUSxjem1fUkdCVG9YWVo6Y1EsY3ptX1hZWlRvUkdCOmRRLGN6bV9hY2VzVG9uZW1hcHBpbmc6ZlEsY3ptX2FscGhhV2VpZ2h0Ol9RLGN6bV9hbnRpYWxpYXM6WlEsY3ptX2FwcGx5SFNCU2hpZnQ6cFEsY3ptX2FwcHJveGltYXRlU3BoZXJpY2FsQ29vcmRpbmF0ZXM6Q1EsY3ptX2FwcHJveGltYXRlVGFuaDpUUSxjem1fYmFja0ZhY2luZzpiUSxjem1fYnJhbmNoRnJlZVRlcm5hcnk6WVEsY3ptX2Nhc2NhZGVDb2xvcjpPUSxjem1fY2FzY2FkZURpc3RhbmNlOkdRLGN6bV9jYXNjYWRlTWF0cml4OldRLGN6bV9jYXNjYWRlV2VpZ2h0czpNUSxjem1fY2xpcFBvbHlnb25zOlFRLGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaDpMUSxjem1fY29tcHV0ZUF0bW9zcGhlcmVDb2xvcjp3USxjem1fY29tcHV0ZUdyb3VuZEF0bW9zcGhlcmVTY2F0dGVyaW5nOlBRLGN6bV9jb21wdXRlUG9zaXRpb246alEsY3ptX2NvbXB1dGVTY2F0dGVyaW5nOnZRLGN6bV9jb3NpbmVBbmRTaW5lOktRLGN6bV9kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzOnFRLGN6bV9kZWZhdWx0UGJyTWF0ZXJpYWw6dDEsY3ptX2RlcHRoQ2xhbXA6aTEsY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlczpzMSxjem1fZWxsaXBzb2lkQ29udGFpbnNQb2ludDpyMSxjem1fZWxsaXBzb2lkV2dzODRUZXh0dXJlQ29vcmRpbmF0ZXM6QTEsY3ptX2VxdWFsc0Vwc2lsb246YzEsY3ptX2V5ZU9mZnNldDpkMSxjem1fZXllVG9XaW5kb3dDb29yZGluYXRlczpmMSxjem1fZmFzdEFwcHJveGltYXRlQXRhbjpfMSxjem1fZm9nOloxLGN6bV9nYW1tYUNvcnJlY3Q6cDEsY3ptX2dlb2RldGljU3VyZmFjZU5vcm1hbDpDMSxjem1fZ2V0RGVmYXVsdE1hdGVyaWFsOlQxLGN6bV9nZXREeW5hbWljQXRtb3NwaGVyZUxpZ2h0RGlyZWN0aW9uOmIxLGN6bV9nZXRMYW1iZXJ0RGlmZnVzZTpZMSxjem1fZ2V0U3BlY3VsYXI6TzEsY3ptX2dldFdhdGVyTm9pc2U6RzEsY3ptX2h1ZTpXMSxjem1faW52ZXJzZUdhbW1hOk0xLGN6bV9pc0VtcHR5OlExLGN6bV9pc0Z1bGw6TDEsY3ptX2xhdGl0dWRlVG9XZWJNZXJjYXRvckZyYWN0aW9uOncxLGN6bV9saW5lRGlzdGFuY2U6UDEsY3ptX2xpbmVhclRvU3JnYjpqMSxjem1fbHVtaW5hbmNlOnYxLGN6bV9tZXRlcnNQZXJQaXhlbDpLMSxjem1fbW9kZWxUb1dpbmRvd0Nvb3JkaW5hdGVzOnExLGN6bV9tdWx0aXBseVdpdGhDb2xvckJhbGFuY2U6dGssY3ptX25lYXJGYXJTY2FsYXI6aWssY3ptX29jdERlY29kZTpzayxjem1fcGFja0RlcHRoOnJrLGN6bV9wYnJMaWdodGluZzpBayxjem1fcGJyTWV0YWxsaWNSb3VnaG5lc3NNYXRlcmlhbDpjayxjem1fcGJyU3BlY3VsYXJHbG9zc2luZXNzTWF0ZXJpYWw6ZGssY3ptX3Bob25nOmZrLGN6bV9wbGFuZURpc3RhbmNlOl9rLGN6bV9wb2ludEFsb25nUmF5OlprLGN6bV9yYXlFbGxpcHNvaWRJbnRlcnNlY3Rpb25JbnRlcnZhbDpwayxjem1fcmF5U3BoZXJlSW50ZXJzZWN0aW9uSW50ZXJ2YWw6Q2ssY3ptX3JlYWREZXB0aDpUayxjem1fcmVhZE5vblBlcnNwZWN0aXZlOmJrLGN6bV9yZXZlcnNlTG9nRGVwdGg6WWssY3ptX3JvdW5kOk9rLGN6bV9zYW1wbGVPY3RhaGVkcmFsUHJvamVjdGlvbjpHayxjem1fc2F0dXJhdGlvbjpXayxjem1fc2hhZG93RGVwdGhDb21wYXJlOk1rLGN6bV9zaGFkb3dWaXNpYmlsaXR5OlFrLGN6bV9zaWduTm90WmVybzpMayxjem1fc3BoZXJpY2FsSGFybW9uaWNzOndrLGN6bV9zcmdiVG9MaW5lYXI6UGssY3ptX3RhbmdlbnRUb0V5ZVNwYWNlTWF0cml4OmprLGN6bV90ZXh0dXJlQ3ViZTp2ayxjem1fdHJhbnNmb3JtUGxhbmU6S2ssY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWU6cWssY3ptX3RyYW5zbHVjZW50UGhvbmc6dEwsY3ptX3RyYW5zcG9zZTppTCxjem1fdW5wYWNrQ2xpcHBpbmdFeHRlbnRzOnNMLGN6bV91bnBhY2tEZXB0aDpyTCxjem1fdW5wYWNrRmxvYXQ6QUwsY3ptX3VucGFja1VpbnQ6Y0wsY3ptX3ZhbHVlVHJhbnNmb3JtOmRMLGN6bV92ZXJ0ZXhMb2dEZXB0aDpmTCxjem1fd2luZG93VG9FeWVDb29yZGluYXRlczpfTCxjem1fd3JpdGVEZXB0aENsYW1wOlpMLGN6bV93cml0ZUxvZ0RlcHRoOnBMLGN6bV93cml0ZU5vblBlcnNwZWN0aXZlOkNMfX0pO2Z1bmN0aW9uIGh0dCh0LGUpe2xldCBpPXQ7cmV0dXJuIGk9aS5yZXBsYWNlQWxsKCJ2ZXJzaW9uIDMwMCBlcyIsIiIpLGk9aS5yZXBsYWNlQWxsKC8odGV4dHVyZVwoKS9nLCJ0ZXh0dXJlMkQoIiksZT8oaT1pLnJlcGxhY2VBbGwoL1xuXHMqKGluKVxzKyh2ZWNcZHxtYXRcZHxmbG9hdCkvZyxgCnZhcnlpbmcgJDJgKSwvb3V0X0ZyYWdEYXRhXyhcZCspLy50ZXN0KGkpJiYoaT1gI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogZW5hYmxlCiR7aX1gLGk9aS5yZXBsYWNlQWxsKC9sYXlvdXRccytcKGxvY2F0aW9uXHMqPVxzKlxkK1wpXHMqb3V0XHMrdmVjNFxzK291dF9GcmFnRGF0YV9cZCs7L2csIiIpLGk9aS5yZXBsYWNlQWxsKC9vdXRfRnJhZ0RhdGFfKFxkKykvZywiZ2xfRnJhZ0RhdGFbJDFdIikpLGk9aS5yZXBsYWNlQWxsKC9sYXlvdXRccytcKGxvY2F0aW9uXHMqPVxzKjBcKVxzKm91dFxzK3ZlYzRccytvdXRfRnJhZ0NvbG9yOy9nLCIiKSxpPWkucmVwbGFjZUFsbCgvb3V0X0ZyYWdDb2xvci9nLCJnbF9GcmFnQ29sb3IiKSxpPWkucmVwbGFjZUFsbCgvb3V0X0ZyYWdDb2xvclxbKFxkKylcXS9nLCJnbF9GcmFnQ29sb3JbJDFdIiksL2dsX0ZyYWdEZXB0aC8udGVzdChpKSYmKGk9YCNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUKJHtpfWAsaT1pLnJlcGxhY2VBbGwoL2dsX0ZyYWdEZXB0aC9nLCJnbF9GcmFnRGVwdGhFWFQiKSksaT1gI2lmZGVmIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwojZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZQojZW5kaWYKJHtpfWApOihpPWkucmVwbGFjZUFsbCgvKGluKVxzKyh2ZWNcZHxtYXRcZHxmbG9hdCkvZywiYXR0cmlidXRlICQyIiksaT1pLnJlcGxhY2VBbGwoLyhvdXQpXHMrKHZlY1xkfG1hdFxkfGZsb2F0KVxzKyhbXHddKyk7L2csInZhcnlpbmcgJDIgJDM7IikpLGk9YCN2ZXJzaW9uIDEwMAoke2l9YCxpfXZhciBOTCxiTD1PKCgpPT57Tkw9aHR0fSk7ZnVuY3Rpb24gRkwodCl7cmV0dXJuIHQ9dC5yZXBsYWNlKC9cL1wvLiovZywiIiksdC5yZXBsYWNlKC9cL1wqXCpbXHNcU10qP1wqXC8vZ20sZnVuY3Rpb24oZSl7bGV0IGk9ZS5tYXRjaCgvXG4vZ20pLmxlbmd0aCxuPSIiO2ZvcihsZXQgcz0wO3M8aTsrK3Mpbis9YApgO3JldHVybiBufSl9ZnVuY3Rpb24gWUwodCxlLGkpe2xldCBuO2ZvcihsZXQgcz0wO3M8aS5sZW5ndGg7KytzKWlbc10ubmFtZT09PXQmJihuPWlbc10pO3JldHVybiBtKG4pfHwoZT1GTChlKSxuPXtuYW1lOnQsZ2xzbFNvdXJjZTplLGRlcGVuZHNPbjpbXSxyZXF1aXJlZEJ5OltdLGV2YWx1YXRlZDohMX0saS5wdXNoKG4pKSxufWZ1bmN0aW9uIFNMKHQsZSl7aWYodC5ldmFsdWF0ZWQpcmV0dXJuO3QuZXZhbHVhdGVkPSEwO2xldCBpPXQuZ2xzbFNvdXJjZS5tYXRjaCgvXGJjem1fW2EtekEtWjAtOV9dKi9nKTttKGkpJiZpIT09bnVsbCYmKGk9aS5maWx0ZXIoZnVuY3Rpb24obixzKXtyZXR1cm4gaS5pbmRleE9mKG4pPT09c30pLGkuZm9yRWFjaChmdW5jdGlvbihuKXtpZihuIT09dC5uYW1lJiZVcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtcy5oYXNPd25Qcm9wZXJ0eShuKSl7bGV0IHM9WUwobixVcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtc1tuXSxlKTt0LmRlcGVuZHNPbi5wdXNoKHMpLHMucmVxdWlyZWRCeS5wdXNoKHQpLFNMKHMsZSl9fSkpfWZ1bmN0aW9uIGN0dCh0KXtsZXQgZT1bXSxpPVtdO2Zvcig7dC5sZW5ndGg+MDspe2xldCBzPXQucG9wKCk7aS5wdXNoKHMpLHMucmVxdWlyZWRCeS5sZW5ndGg9PT0wJiZlLnB1c2gocyl9Zm9yKDtlLmxlbmd0aD4wOyl7bGV0IHM9ZS5zaGlmdCgpO3QucHVzaChzKTtmb3IobGV0IG89MDtvPHMuZGVwZW5kc09uLmxlbmd0aDsrK28pe2xldCByPXMuZGVwZW5kc09uW29dLGE9ci5yZXF1aXJlZEJ5LmluZGV4T2Yocyk7ci5yZXF1aXJlZEJ5LnNwbGljZShhLDEpLHIucmVxdWlyZWRCeS5sZW5ndGg9PT0wJiZlLnB1c2gocil9fWxldCBuPVtdO2ZvcihsZXQgcz0wO3M8aS5sZW5ndGg7KytzKWlbc10ucmVxdWlyZWRCeS5sZW5ndGghPT0wJiZuLnB1c2goaVtzXSk7aWYobi5sZW5ndGghPT0wKXtsZXQgcz1gQSBjaXJjdWxhciBkZXBlbmRlbmN5IHdhcyBmb3VuZCBpbiB0aGUgZm9sbG93aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucy9zdHJ1Y3RzL2NvbnN0YW50czogCmA7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDsrK28pcz1gJHtzK25bb10ubmFtZX0KYDt0aHJvdyBuZXcgWShzKX19ZnVuY3Rpb24gbHR0KHQpe2xldCBlPVtdLGk9WUwoIm1haW4iLHQsZSk7U0woaSxlKSxjdHQoZSk7bGV0IG49IiI7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MDstLXMpbj1gJHtuK2Vbc10uZ2xzbFNvdXJjZX0KYDtyZXR1cm4gbi5yZXBsYWNlKGkuZ2xzbFNvdXJjZSwiIil9ZnVuY3Rpb24gT0wodCxlLGkpe2xldCBuLHMsbz0iIixyPXQuc291cmNlcztpZihtKHIpKWZvcihuPTAscz1yLmxlbmd0aDtuPHM7KytuKW8rPWAKI2xpbmUgMAoke3Jbbl19YDtvPUZMKG8pO2xldCBhO289by5yZXBsYWNlKC8jdmVyc2lvblxzKyguKj8pXG4vZ20sZnVuY3Rpb24oSSxDKXtpZihtKGEpJiZhIT09Qyl0aHJvdyBuZXcgWShgaW5jb25zaXN0ZW50IHZlcnNpb25zIGZvdW5kOiAke2F9IGFuZCAke0N9YCk7cmV0dXJuIGE9QyxgCmB9KTtsZXQgaD1bXTtvPW8ucmVwbGFjZSgvI2V4dGVuc2lvbi4qXG4vZ20sZnVuY3Rpb24oSSl7cmV0dXJuIGgucHVzaChJKSxgCmB9KSxvPW8ucmVwbGFjZSgvcHJlY2lzaW9uXHMobG93cHxtZWRpdW1wfGhpZ2hwKVxzKGZsb2F0fGludCk7LywiIik7bGV0IEE9dC5waWNrQ29sb3JRdWFsaWZpZXI7bShBKSYmKG89VXMuY3JlYXRlUGlja0ZyYWdtZW50U2hhZGVyU291cmNlKG8sQSkpO2xldCBkPSIiLGY9aC5sZW5ndGg7Zm9yKG49MDtuPGY7bisrKWQrPWhbbl07ZSYmKGQrPWAjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKICAgIHByZWNpc2lvbiBoaWdocCBpbnQ7CiNlbHNlCiAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICAgIHByZWNpc2lvbiBtZWRpdW1wIGludDsKICAgICNkZWZpbmUgaGlnaHAgbWVkaXVtcAojZW5kaWYKCmApO2xldCBFPXQuZGVmaW5lcztpZihtKEUpKWZvcihuPTAscz1FLmxlbmd0aDtuPHM7KytuKXtsZXQgST1FW25dO0kubGVuZ3RoIT09MCYmKGQrPWAjZGVmaW5lICR7SX0KYCl9aS50ZXh0dXJlRmxvYXRMaW5lYXImJihkKz1gI2RlZmluZSBPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKCmApLGkuZmxvYXRpbmdQb2ludFRleHR1cmUmJihkKz1gI2RlZmluZSBPRVNfdGV4dHVyZV9mbG9hdAoKYCk7bGV0IF89IiI7dC5pbmNsdWRlQnVpbHRJbnMmJihfPWx0dChvKSksZCs9YAojbGluZSAwCmA7bGV0IFI9XytvO3JldHVybiBpLndlYmdsMiYmZSYmIS9sYXlvdXRccypcKGxvY2F0aW9uXHMqPVxzKjBcKVxzKm91dFxzK3ZlYzRccytvdXRfRnJhZ0NvbG9yOy9nLnRlc3QoUikmJiEvY3ptX291dF9GcmFnQ29sb3IvZy50ZXN0KFIpJiYvb3V0X0ZyYWdDb2xvci9nLnRlc3QoUikmJihkKz1gbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgb3V0X0ZyYWdDb2xvcjsKCmApLGQrPV8sZCs9byxpLndlYmdsMj9kPWAjdmVyc2lvbiAzMDAgZXMKJHtkfWA6ZD1OTChkLGUpLGR9ZnVuY3Rpb24gVXModCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucGlja0NvbG9yUXVhbGlmaWVyO2lmKG0oZSkmJmUhPT0idW5pZm9ybSImJmUhPT0iaW4iKXRocm93IG5ldyBZKCJvcHRpb25zLnBpY2tDb2xvclF1YWxpZmllciBtdXN0IGJlICd1bmlmb3JtJyBvciAnaW4nLiIpO3RoaXMuZGVmaW5lcz1tKHQuZGVmaW5lcyk/dC5kZWZpbmVzLnNsaWNlKDApOltdLHRoaXMuc291cmNlcz1tKHQuc291cmNlcyk/dC5zb3VyY2VzLnNsaWNlKDApOltdLHRoaXMucGlja0NvbG9yUXVhbGlmaWVyPWUsdGhpcy5pbmNsdWRlQnVpbHRJbnM9Wih0LmluY2x1ZGVCdWlsdElucywhMCl9ZnVuY3Rpb24gZHR0KHQsZSl7bGV0IGk9dC5kZWZpbmVzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuOysrcylpZihpW3NdPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBWTCh0LGUpe2xldCBpPXQuc291cmNlcyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3MpaWYoaVtzXS5pbmRleE9mKGUpIT09LTEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gR0wodCxlKXtsZXQgaT1lLmxlbmd0aDtmb3IobGV0IG49MDtuPGk7KytuKXtsZXQgcz1lW25dO2lmKFZMKHQscykpcmV0dXJuIHN9fXZhciBtdHQsZnR0LE1pLEZsPU8oKCk9PntidCgpO210KCk7VnQoKTtUTCgpO0ZUKCk7YkwoKTtVcy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFVzKHtzb3VyY2VzOnRoaXMuc291cmNlcyxkZWZpbmVzOnRoaXMuZGVmaW5lcyxwaWNrQ29sb3JRdWFsaWZpZXI6dGhpcy5waWNrQ29sb3JRdWFsaWZpZXIsaW5jbHVkZUJ1aWx0SW5zOnRoaXMuaW5jbHVkZUJ1aWx0SW5zfSl9O1VzLnJlcGxhY2VNYWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9YHZvaWQgJHtlfSgpYCx0LnJlcGxhY2UoL3ZvaWRccyttYWluXHMqXChccyooPzp2b2lkKT9ccypcKS9nLGUpfTtVcy5wcm90b3R5cGUuZ2V0Q2FjaGVLZXk9ZnVuY3Rpb24oKXtsZXQgZT10aGlzLmRlZmluZXMuc2xpY2UoKS5zb3J0KCkuam9pbigiLCIpLGk9dGhpcy5waWNrQ29sb3JRdWFsaWZpZXIsbj10aGlzLmluY2x1ZGVCdWlsdElucyxzPXRoaXMuc291cmNlcy5qb2luKGAKYCk7cmV0dXJuYCR7ZX06JHtpfToke259OiR7c31gfTtVcy5wcm90b3R5cGUuY3JlYXRlQ29tYmluZWRWZXJ0ZXhTaGFkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIE9MKHRoaXMsITEsdCl9O1VzLnByb3RvdHlwZS5jcmVhdGVDb21iaW5lZEZyYWdtZW50U2hhZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBPTCh0aGlzLCEwLHQpfTtVcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtcz17fTtmb3IobGV0IHQgaW4gbEkpbEkuaGFzT3duUHJvcGVydHkodCkmJihVcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtc1t0XT1sSVt0XSk7Zm9yKGxldCB0IGluIFVtKWlmKFVtLmhhc093blByb3BlcnR5KHQpKXtsZXQgZT1VbVt0XTt0eXBlb2YgZS5nZXREZWNsYXJhdGlvbj09ImZ1bmN0aW9uIiYmKFVzLl9jem1CdWlsdGluc0FuZFVuaWZvcm1zW3RdPWUuZ2V0RGVjbGFyYXRpb24odCkpfVVzLmNyZWF0ZVBpY2tWZXJ0ZXhTaGFkZXJTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuYCR7VXMucmVwbGFjZU1haW4odCwiY3ptX29sZF9tYWluIil9CmluIHZlYzQgcGlja0NvbG9yOyAKb3V0IHZlYzQgY3ptX3BpY2tDb2xvcjsgCnZvaWQgbWFpbigpIAp7IAogICAgY3ptX29sZF9tYWluKCk7IAogICAgY3ptX3BpY2tDb2xvciA9IHBpY2tDb2xvcjsgCn1gfTtVcy5jcmVhdGVQaWNrRnJhZ21lbnRTaGFkZXJTb3VyY2U9ZnVuY3Rpb24odCxlKXtsZXQgaT1Vcy5yZXBsYWNlTWFpbih0LCJjem1fb2xkX21haW4iKSxuPWAke2V9IHZlYzQgY3ptX3BpY2tDb2xvcjsgCnZvaWQgbWFpbigpIAp7IAogICAgY3ptX29sZF9tYWluKCk7IAogICAgaWYgKG91dF9GcmFnQ29sb3IuYSA9PSAwLjApIHsgCiAgICAgICBkaXNjYXJkOyAKICAgIH0gCiAgICBvdXRfRnJhZ0NvbG9yID0gY3ptX3BpY2tDb2xvcjsgCn1gO3JldHVybmAke2l9CiR7bn1gfTttdHQ9WyJ2X25vcm1hbEVDIiwidl9ub3JtYWwiXTtVcy5maW5kTm9ybWFsVmFyeWluZz1mdW5jdGlvbih0KXtyZXR1cm4gVkwodCwiI2lmZGVmIEhBU19OT1JNQUxTIik/ZHR0KHQsIkhBU19OT1JNQUxTIik/InZfbm9ybWFsRUMiOnZvaWQgMDpHTCh0LG10dCl9O2Z0dD1bInZfcG9zaXRpb25FQyJdO1VzLmZpbmRQb3NpdGlvblZhcnlpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIEdMKHQsZnR0KX07TWk9VXN9KTt2YXIgRXR0LEFoLGRJPU8oKCk9PntFdHQ9e05PTkU6MCxUUklBTkdMRVM6MSxMSU5FUzoyLFBPTFlMSU5FUzozfSxBaD1PYmplY3QuZnJlZXplKEV0dCl9KTtmdW5jdGlvbiBPVCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC50eXBlT2Yub2JqZWN0KCJvcHRpb25zLmF0dHJpYnV0ZXMiLHQuYXR0cmlidXRlcyksdGhpcy5hdHRyaWJ1dGVzPXQuYXR0cmlidXRlcyx0aGlzLmluZGljZXM9dC5pbmRpY2VzLHRoaXMucHJpbWl0aXZlVHlwZT1aKHQucHJpbWl0aXZlVHlwZSxuZS5UUklBTkdMRVMpLHRoaXMuYm91bmRpbmdTcGhlcmU9dC5ib3VuZGluZ1NwaGVyZSx0aGlzLmdlb21ldHJ5VHlwZT1aKHQuZ2VvbWV0cnlUeXBlLEFoLk5PTkUpLHRoaXMuYm91bmRpbmdTcGhlcmVDVj10LmJvdW5kaW5nU3BoZXJlQ1YsdGhpcy5vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGV9dmFyIF90dCxSdHQsQkwsWnR0LEl0dCxwdHQsdXR0LEN0dCxndHQsVHR0LHNlLHlpPU8oKCk9PntYZSgpO0h0KCk7cmkoKTthZSgpO2J0KCk7bXQoKTtkSSgpO2RjKCk7ZG4oKTtGaSgpO1hpKCk7JHMoKTtwbigpO2ZyKCk7T1QuY29tcHV0ZU51bWJlck9mVmVydGljZXM9ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJnZW9tZXRyeSIsdCk7bGV0IGU9LTE7Zm9yKGxldCBpIGluIHQuYXR0cmlidXRlcylpZih0LmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoaSkmJm0odC5hdHRyaWJ1dGVzW2ldKSYmbSh0LmF0dHJpYnV0ZXNbaV0udmFsdWVzKSl7bGV0IG49dC5hdHRyaWJ1dGVzW2ldLHM9bi52YWx1ZXMubGVuZ3RoL24uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtlPXN9cmV0dXJuIGV9O190dD1uZXcgdXQsUnR0PW5ldyBsLEJMPW5ldyBhdCxadHQ9W25ldyB1dCxuZXcgdXQsbmV3IHV0XSxJdHQ9W25ldyBudCxuZXcgbnQsbmV3IG50XSxwdHQ9W25ldyBudCxuZXcgbnQsbmV3IG50XSx1dHQ9bmV3IGwsQ3R0PW5ldyBBZSxndHQ9bmV3IGF0LFR0dD1uZXcgSG47T1QuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9ZnVuY3Rpb24odCxlLGksbil7bGV0IHMsbz1YdC5jZW50ZXIobixfdHQpLHI9dXQudG9DYXJ0ZXNpYW4obyxpLFJ0dCksYT1Jbi5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShyLGksQkwpLGg9YXQuaW52ZXJzZShhLEJMKSxBPUl0dCxkPVp0dDtkWzBdLmxvbmdpdHVkZT1uLndlc3QsZFswXS5sYXRpdHVkZT1uLnNvdXRoLGRbMV0ubG9uZ2l0dWRlPW4ud2VzdCxkWzFdLmxhdGl0dWRlPW4ubm9ydGgsZFsyXS5sb25naXR1ZGU9bi5lYXN0LGRbMl0ubGF0aXR1ZGU9bi5zb3V0aDtsZXQgZj11dHQ7Zm9yKHM9MDtzPDM7cysrKXV0LnRvQ2FydGVzaWFuKGRbc10saSxmKSxmPWF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKGgsZixmKSxBW3NdLng9Zi54LEFbc10ueT1mLnk7bGV0IEU9QWUuZnJvbUF4aXNBbmdsZShsLlVOSVRfWiwtZSxDdHQpLF89bHQuZnJvbVF1YXRlcm5pb24oRSxndHQpLFI9dC5sZW5ndGgsST1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksVD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKHM9MDtzPFI7cysrKWY9YXQubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IoaCx0W3NdLGYpLGY9bHQubXVsdGlwbHlCeVZlY3RvcihfLGYsZiksST1NYXRoLm1pbihJLGYueCksQz1NYXRoLm1pbihDLGYueSksTj1NYXRoLm1heChOLGYueCksVD1NYXRoLm1heChULGYueSk7bGV0IEY9SG4uZnJvbVJvdGF0aW9uKGUsVHR0KSxiPXB0dDtiWzBdLng9SSxiWzBdLnk9QyxiWzFdLng9SSxiWzFdLnk9VCxiWzJdLng9TixiWzJdLnk9QztsZXQgRz1BWzBdLE09QVsyXS54LUcueCxRPUFbMV0ueS1HLnk7Zm9yKHM9MDtzPDM7cysrKXtsZXQgZz1iW3NdO0huLm11bHRpcGx5QnlWZWN0b3IoRixnLGcpLGcueD0oZy54LUcueCkvTSxnLnk9KGcueS1HLnkpL1F9bGV0IFU9YlswXSxrPWJbMV0seT1iWzJdLGM9bmV3IEFycmF5KDYpO3JldHVybiBudC5wYWNrKFUsYyksbnQucGFjayhrLGMsMiksbnQucGFjayh5LGMsNCksY307c2U9T1R9KTtmdW5jdGlvbiBOdHQodCxlLGksbil7bGV0IHM9bShlLnZlcnRleEJ1ZmZlciksbz1tKGUudmFsdWUpLHI9ZS52YWx1ZT9lLnZhbHVlLmxlbmd0aDplLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU7aWYoIXMmJiFvKXRocm93IG5ldyBZKCJhdHRyaWJ1dGUgbXVzdCBoYXZlIGEgdmVydGV4QnVmZmVyIG9yIGEgdmFsdWUuIik7aWYocyYmbyl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIGNhbm5vdCBoYXZlIGJvdGggYSB2ZXJ0ZXhCdWZmZXIgYW5kIGEgdmFsdWUuICBJdCBtdXN0IGhhdmUgZWl0aGVyIGEgdmVydGV4QnVmZmVyIHByb3BlcnR5IGRlZmluaW5nIHBlci12ZXJ0ZXggZGF0YSBvciBhIHZhbHVlIHByb3BlcnR5IGRlZmluaW5nIGRhdGEgZm9yIGFsbCB2ZXJ0aWNlcy4iKTtpZihyIT09MSYmciE9PTImJnIhPT0zJiZyIT09NCl0aHJvdyBvP25ldyBZKCJhdHRyaWJ1dGUudmFsdWUubGVuZ3RoIG11c3QgYmUgaW4gdGhlIHJhbmdlIFsxLCA0XS4iKTpuZXcgWSgiYXR0cmlidXRlLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzEsIDRdLiIpO2lmKG0oZS5jb21wb25lbnREYXRhdHlwZSkmJiFBdC52YWxpZGF0ZShlLmNvbXBvbmVudERhdGF0eXBlKSl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIG11c3QgaGF2ZSBhIHZhbGlkIGNvbXBvbmVudERhdGF0eXBlIG9yIG5vdCBzcGVjaWZ5IGl0LiIpO2lmKG0oZS5zdHJpZGVJbkJ5dGVzKSYmZS5zdHJpZGVJbkJ5dGVzPjI1NSl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIG11c3QgaGF2ZSBhIHN0cmlkZUluQnl0ZXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDI1NSBvciBub3Qgc3BlY2lmeSBpdC4iKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmZS5pbnN0YW5jZURpdmlzb3I+MCYmIW4uaW5zdGFuY2VkQXJyYXlzKXRocm93IG5ldyBZKCJpbnN0YW5jZWQgYXJyYXlzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmZS5pbnN0YW5jZURpdmlzb3I8MCl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIG11c3QgaGF2ZSBhbiBpbnN0YW5jZURpdmlzb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8iKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmbyl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIGNhbm5vdCBoYXZlIGhhdmUgYW4gaW5zdGFuY2VEaXZpc29yIGlmIGl0IGlzIG5vdCBiYWNrZWQgYnkgYSBidWZmZXIiKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmZS5pbnN0YW5jZURpdmlzb3I+MCYmZS5pbmRleD09PTApdGhyb3cgbmV3IFkoImF0dHJpYnV0ZSB6ZXJvIGNhbm5vdCBoYXZlIGFuIGluc3RhbmNlRGl2aXNvciBncmVhdGVyIHRoYW4gMCIpO2xldCBhPXtpbmRleDpaKGUuaW5kZXgsaSksZW5hYmxlZDpaKGUuZW5hYmxlZCwhMCksdmVydGV4QnVmZmVyOmUudmVydGV4QnVmZmVyLHZhbHVlOm8/ZS52YWx1ZS5zbGljZSgwKTp2b2lkIDAsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpyLGNvbXBvbmVudERhdGF0eXBlOlooZS5jb21wb25lbnREYXRhdHlwZSxBdC5GTE9BVCksbm9ybWFsaXplOlooZS5ub3JtYWxpemUsITEpLG9mZnNldEluQnl0ZXM6WihlLm9mZnNldEluQnl0ZXMsMCksc3RyaWRlSW5CeXRlczpaKGUuc3RyaWRlSW5CeXRlcywwKSxpbnN0YW5jZURpdmlzb3I6WihlLmluc3RhbmNlRGl2aXNvciwwKX07aWYocylhLnZlcnRleEF0dHJpYj1mdW5jdGlvbihoKXtsZXQgQT10aGlzLmluZGV4O2guYmluZEJ1ZmZlcihoLkFSUkFZX0JVRkZFUix0aGlzLnZlcnRleEJ1ZmZlci5fZ2V0QnVmZmVyKCkpLGgudmVydGV4QXR0cmliUG9pbnRlcihBLHRoaXMuY29tcG9uZW50c1BlckF0dHJpYnV0ZSx0aGlzLmNvbXBvbmVudERhdGF0eXBlLHRoaXMubm9ybWFsaXplLHRoaXMuc3RyaWRlSW5CeXRlcyx0aGlzLm9mZnNldEluQnl0ZXMpLGguZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoQSksdGhpcy5pbnN0YW5jZURpdmlzb3I+MCYmKG4uZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yKEEsdGhpcy5pbnN0YW5jZURpdmlzb3IpLG4uX3ZlcnRleEF0dHJpYkRpdmlzb3JzW0FdPXRoaXMuaW5zdGFuY2VEaXZpc29yLG4uX3ByZXZpb3VzRHJhd0luc3RhbmNlZD0hMCl9LGEuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5PWZ1bmN0aW9uKGgpe2guZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMuaW5kZXgpLHRoaXMuaW5zdGFuY2VEaXZpc29yPjAmJm4uZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yKGksMCl9O2Vsc2V7c3dpdGNoKGEuY29tcG9uZW50c1BlckF0dHJpYnV0ZSl7Y2FzZSAxOmEudmVydGV4QXR0cmliPWZ1bmN0aW9uKGgpe2gudmVydGV4QXR0cmliMWZ2KHRoaXMuaW5kZXgsdGhpcy52YWx1ZSl9O2JyZWFrO2Nhc2UgMjphLnZlcnRleEF0dHJpYj1mdW5jdGlvbihoKXtoLnZlcnRleEF0dHJpYjJmdih0aGlzLmluZGV4LHRoaXMudmFsdWUpfTticmVhaztjYXNlIDM6YS52ZXJ0ZXhBdHRyaWI9ZnVuY3Rpb24oaCl7aC52ZXJ0ZXhBdHRyaWIzZnYodGhpcy5pbmRleCx0aGlzLnZhbHVlKX07YnJlYWs7Y2FzZSA0OmEudmVydGV4QXR0cmliPWZ1bmN0aW9uKGgpe2gudmVydGV4QXR0cmliNGZ2KHRoaXMuaW5kZXgsdGhpcy52YWx1ZSl9O2JyZWFrfWEuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5PWZ1bmN0aW9uKGgpe319dC5wdXNoKGEpfWZ1bmN0aW9uIERMKHQsZSxpKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoOysrbil7bGV0IHM9ZVtuXTtzLmVuYWJsZWQmJnMudmVydGV4QXR0cmliKHQpfW0oaSkmJnQuYmluZEJ1ZmZlcih0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLGkuX2dldEJ1ZmZlcigpKX1mdW5jdGlvbiBoaCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCkscC5kZWZpbmVkKCJvcHRpb25zLmF0dHJpYnV0ZXMiLHQuYXR0cmlidXRlcyk7bGV0IGU9dC5jb250ZXh0LGk9ZS5fZ2wsbj10LmF0dHJpYnV0ZXMscz10LmluZGV4QnVmZmVyLG8scj1bXSxhPTEsaD0hMSxBPSExLGQ9bi5sZW5ndGg7Zm9yKG89MDtvPGQ7KytvKU50dChyLG5bb10sbyxlKTtmb3IoZD1yLmxlbmd0aCxvPTA7bzxkOysrbyl7bGV0IF89cltvXTtpZihtKF8udmVydGV4QnVmZmVyKSYmXy5pbnN0YW5jZURpdmlzb3I9PT0wKXtsZXQgUj1fLnN0cmlkZUluQnl0ZXN8fF8uY29tcG9uZW50c1BlckF0dHJpYnV0ZSpBdC5nZXRTaXplSW5CeXRlcyhfLmNvbXBvbmVudERhdGF0eXBlKTthPV8udmVydGV4QnVmZmVyLnNpemVJbkJ5dGVzL1I7YnJlYWt9fWZvcihvPTA7bzxkOysrbylyW29dLmluc3RhbmNlRGl2aXNvcj4wJiYoaD0hMCksbShyW29dLnZhbHVlKSYmKEE9ITApO2xldCBmPXt9O2ZvcihvPTA7bzxkOysrbyl7bGV0IF89cltvXS5pbmRleDtpZihmW19dKXRocm93IG5ldyBZKGBJbmRleCAke199IGlzIHVzZWQgYnkgbW9yZSB0aGFuIG9uZSBhdHRyaWJ1dGUuYCk7ZltfXT0hMH1sZXQgRTtlLnZlcnRleEFycmF5T2JqZWN0JiYoRT1lLmdsQ3JlYXRlVmVydGV4QXJyYXkoKSxlLmdsQmluZFZlcnRleEFycmF5KEUpLERMKGkscixzKSxlLmdsQmluZFZlcnRleEFycmF5KG51bGwpKSx0aGlzLl9udW1iZXJPZlZlcnRpY2VzPWEsdGhpcy5faGFzSW5zdGFuY2VkQXR0cmlidXRlcz1oLHRoaXMuX2hhc0NvbnN0YW50QXR0cmlidXRlcz1BLHRoaXMuX2NvbnRleHQ9ZSx0aGlzLl9nbD1pLHRoaXMuX3Zhbz1FLHRoaXMuX2F0dHJpYnV0ZXM9cix0aGlzLl9pbmRleEJ1ZmZlcj1zfWZ1bmN0aW9uIFdMKHQpe3JldHVybiB0LnZhbHVlcy5sZW5ndGgvdC5jb21wb25lbnRzUGVyQXR0cmlidXRlfWZ1bmN0aW9uIGJ0dCh0KXtyZXR1cm4gQXQuZ2V0U2l6ZUluQnl0ZXModC5jb21wb25lbnREYXRhdHlwZSkqdC5jb21wb25lbnRzUGVyQXR0cmlidXRlfWZ1bmN0aW9uIEZ0dCh0KXtsZXQgZSxpLG4scz1bXTtmb3IoaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJm0odFtpXSkmJm0odFtpXS52YWx1ZXMpJiYocy5wdXNoKGkpLHRbaV0uY29tcG9uZW50RGF0YXR5cGU9PT1BdC5ET1VCTEUmJih0W2ldLmNvbXBvbmVudERhdGF0eXBlPUF0LkZMT0FULHRbaV0udmFsdWVzPUF0LmNyZWF0ZVR5cGVkQXJyYXkoQXQuRkxPQVQsdFtpXS52YWx1ZXMpKSk7bGV0IG8scj1zLmxlbmd0aDtpZihyPjApZm9yKG89V0wodFtzWzBdXSksZT0xO2U8cjsrK2Upe2xldCBBPVdMKHRbc1tlXV0pO2lmKEEhPT1vKXRocm93IG5ldyBrZShgRWFjaCBhdHRyaWJ1dGUgbGlzdCBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHZlcnRpY2VzLiAgQXR0cmlidXRlICR7c1tlXX0gaGFzIGEgZGlmZmVyZW50IG51bWJlciBvZiB2ZXJ0aWNlcyAoJHtBLnRvU3RyaW5nKCl9KSB0aGFuIGF0dHJpYnV0ZSAke3NbMF19ICgke28udG9TdHJpbmcoKX0pLmApfXMuc29ydChmdW5jdGlvbihBLGQpe3JldHVybiBBdC5nZXRTaXplSW5CeXRlcyh0W2RdLmNvbXBvbmVudERhdGF0eXBlKS1BdC5nZXRTaXplSW5CeXRlcyh0W0FdLmNvbXBvbmVudERhdGF0eXBlKX0pO2xldCBhPTAsaD17fTtmb3IoZT0wO2U8cjsrK2UpaT1zW2VdLG49dFtpXSxoW2ldPWEsYSs9YnR0KG4pO2lmKGE+MCl7bGV0IEE9QXQuZ2V0U2l6ZUluQnl0ZXModFtzWzBdXS5jb21wb25lbnREYXRhdHlwZSksZD1hJUE7ZCE9PTAmJihhKz1BLWQpO2xldCBmPW8qYSxFPW5ldyBBcnJheUJ1ZmZlcihmKSxfPXt9O2ZvcihlPTA7ZTxyOysrZSl7aT1zW2VdO2xldCBSPUF0LmdldFNpemVJbkJ5dGVzKHRbaV0uY29tcG9uZW50RGF0YXR5cGUpO19baV09e3BvaW50ZXI6QXQuY3JlYXRlVHlwZWRBcnJheSh0W2ldLmNvbXBvbmVudERhdGF0eXBlLEUpLGluZGV4OmhbaV0vUixzdHJpZGVJbkNvbXBvbmVudFR5cGU6YS9SfX1mb3IoZT0wO2U8bzsrK2UpZm9yKGxldCBSPTA7UjxyOysrUil7aT1zW1JdLG49dFtpXTtsZXQgST1uLnZhbHVlcyxDPV9baV0sTj1DLnBvaW50ZXIsVD1uLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU7Zm9yKGxldCBGPTA7RjxUOysrRilOW0MuaW5kZXgrRl09SVtlKlQrRl07Qy5pbmRleCs9Qy5zdHJpZGVJbkNvbXBvbmVudFR5cGV9cmV0dXJue2J1ZmZlcjpFLG9mZnNldHNJbkJ5dGVzOmgsdmVydGV4U2l6ZUluQnl0ZXM6YX19fWZ1bmN0aW9uIFl0dCh0KXtsZXQgZT10Ll9jb250ZXh0LGk9dC5faGFzSW5zdGFuY2VkQXR0cmlidXRlcztpZighaSYmIWUuX3ByZXZpb3VzRHJhd0luc3RhbmNlZClyZXR1cm47ZS5fcHJldmlvdXNEcmF3SW5zdGFuY2VkPWk7bGV0IG49ZS5fdmVydGV4QXR0cmliRGl2aXNvcnMscz10Ll9hdHRyaWJ1dGVzLG89ZW4ubWF4aW11bVZlcnRleEF0dHJpYnV0ZXMscjtpZihpKXtsZXQgYT1zLmxlbmd0aDtmb3Iocj0wO3I8YTsrK3Ipe2xldCBoPXNbcl07aWYoaC5lbmFibGVkKXtsZXQgQT1oLmluc3RhbmNlRGl2aXNvcixkPWguaW5kZXg7QSE9PW5bZF0mJihlLmdsVmVydGV4QXR0cmliRGl2aXNvcihkLEEpLG5bZF09QSl9fX1lbHNlIGZvcihyPTA7cjxvOysrciluW3JdPjAmJihlLmdsVmVydGV4QXR0cmliRGl2aXNvcihyLDApLG5bcl09MCl9ZnVuY3Rpb24gU3R0KHQsZSl7bGV0IGk9dC5fYXR0cmlidXRlcyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe2xldCBvPWlbc107by5lbmFibGVkJiZtKG8udmFsdWUpJiZvLnZlcnRleEF0dHJpYihlKX19dmFyIG1JLFZUPU8oKCk9PnthZSgpO29pKCk7YnQoKTttdCgpO1dzKCk7VnQoKTt5aSgpO0RpKCk7X2UoKTtQcygpO2FJKCk7TmwoKTtnYSgpO2hoLmZyb21HZW9tZXRyeT1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCk7bGV0IGU9dC5jb250ZXh0LGk9Wih0Lmdlb21ldHJ5LFouRU1QVFlfT0JKRUNUKSxuPVoodC5idWZmZXJVc2FnZSxhaS5EWU5BTUlDX0RSQVcpLHM9Wih0LmF0dHJpYnV0ZUxvY2F0aW9ucyxaLkVNUFRZX09CSkVDVCksbz1aKHQuaW50ZXJsZWF2ZSwhMSkscj10LnZlcnRleEFycmF5QXR0cmlidXRlcyxhLGgsQSxkPW0ocik/cjpbXSxmPWkuYXR0cmlidXRlcztpZihvKXtsZXQgUj1GdHQoZik7aWYobShSKSl7QT1DYS5jcmVhdGVWZXJ0ZXhCdWZmZXIoe2NvbnRleHQ6ZSx0eXBlZEFycmF5OlIuYnVmZmVyLHVzYWdlOm59KTtsZXQgST1SLm9mZnNldHNJbkJ5dGVzLEM9Ui52ZXJ0ZXhTaXplSW5CeXRlcztmb3IoYSBpbiBmKWYuaGFzT3duUHJvcGVydHkoYSkmJm0oZlthXSkmJihoPWZbYV0sbShoLnZhbHVlcyk/ZC5wdXNoKHtpbmRleDpzW2FdLHZlcnRleEJ1ZmZlcjpBLGNvbXBvbmVudERhdGF0eXBlOmguY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpoLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOmgubm9ybWFsaXplLG9mZnNldEluQnl0ZXM6SVthXSxzdHJpZGVJbkJ5dGVzOkN9KTpkLnB1c2goe2luZGV4OnNbYV0sdmFsdWU6aC52YWx1ZSxjb21wb25lbnREYXRhdHlwZTpoLmNvbXBvbmVudERhdGF0eXBlLG5vcm1hbGl6ZTpoLm5vcm1hbGl6ZX0pKX19ZWxzZSBmb3IoYSBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoYSkmJm0oZlthXSkpe2g9ZlthXTtsZXQgUj1oLmNvbXBvbmVudERhdGF0eXBlO1I9PT1BdC5ET1VCTEUmJihSPUF0LkZMT0FUKSxBPXZvaWQgMCxtKGgudmFsdWVzKSYmKEE9Q2EuY3JlYXRlVmVydGV4QnVmZmVyKHtjb250ZXh0OmUsdHlwZWRBcnJheTpBdC5jcmVhdGVUeXBlZEFycmF5KFIsaC52YWx1ZXMpLHVzYWdlOm59KSksZC5wdXNoKHtpbmRleDpzW2FdLHZlcnRleEJ1ZmZlcjpBLHZhbHVlOmgudmFsdWUsY29tcG9uZW50RGF0YXR5cGU6Uixjb21wb25lbnRzUGVyQXR0cmlidXRlOmguY29tcG9uZW50c1BlckF0dHJpYnV0ZSxub3JtYWxpemU6aC5ub3JtYWxpemV9KX1sZXQgRSxfPWkuaW5kaWNlcztyZXR1cm4gbShfKSYmKHNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKGkpPj1MLlNJWFRZX0ZPVVJfS0lMT0JZVEVTJiZlLmVsZW1lbnRJbmRleFVpbnQ/RT1DYS5jcmVhdGVJbmRleEJ1ZmZlcih7Y29udGV4dDplLHR5cGVkQXJyYXk6bmV3IFVpbnQzMkFycmF5KF8pLHVzYWdlOm4saW5kZXhEYXRhdHlwZTp0ZS5VTlNJR05FRF9JTlR9KTpFPUNhLmNyZWF0ZUluZGV4QnVmZmVyKHtjb250ZXh0OmUsdHlwZWRBcnJheTpuZXcgVWludDE2QXJyYXkoXyksdXNhZ2U6bixpbmRleERhdGF0eXBlOnRlLlVOU0lHTkVEX1NIT1JUfSkpLG5ldyBoaCh7Y29udGV4dDplLGF0dHJpYnV0ZXM6ZCxpbmRleEJ1ZmZlcjpFfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGhoLnByb3RvdHlwZSx7bnVtYmVyT2ZBdHRyaWJ1dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXR0cmlidXRlcy5sZW5ndGh9fSxudW1iZXJPZlZlcnRpY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbnVtYmVyT2ZWZXJ0aWNlc319LGluZGV4QnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5kZXhCdWZmZXJ9fX0pO2hoLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIHAuZGVmaW5lZCgiaW5kZXgiLHQpLHRoaXMuX2F0dHJpYnV0ZXNbdF19O2hoLnByb3RvdHlwZS5fYmluZD1mdW5jdGlvbigpe20odGhpcy5fdmFvKT8odGhpcy5fY29udGV4dC5nbEJpbmRWZXJ0ZXhBcnJheSh0aGlzLl92YW8pLHRoaXMuX2NvbnRleHQuaW5zdGFuY2VkQXJyYXlzJiZZdHQodGhpcyksdGhpcy5faGFzQ29uc3RhbnRBdHRyaWJ1dGVzJiZTdHQodGhpcyx0aGlzLl9nbCkpOkRMKHRoaXMuX2dsLHRoaXMuX2F0dHJpYnV0ZXMsdGhpcy5faW5kZXhCdWZmZXIpfTtoaC5wcm90b3R5cGUuX3VuQmluZD1mdW5jdGlvbigpe2lmKG0odGhpcy5fdmFvKSl0aGlzLl9jb250ZXh0LmdsQmluZFZlcnRleEFycmF5KG51bGwpO2Vsc2V7bGV0IHQ9dGhpcy5fYXR0cmlidXRlcyxlPXRoaXMuX2dsO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKXtsZXQgbj10W2ldO24uZW5hYmxlZCYmbi5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoZSl9dGhpcy5faW5kZXhCdWZmZXImJmUuYmluZEJ1ZmZlcihlLkVMRU1FTlRfQVJSQVlfQlVGRkVSLG51bGwpfX07aGgucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2hoLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fYXR0cmlidXRlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSl7bGV0IG49dFtpXS52ZXJ0ZXhCdWZmZXI7bShuKSYmIW4uaXNEZXN0cm95ZWQoKSYmbi52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlJiZuLmRlc3Ryb3koKX1sZXQgZT10aGlzLl9pbmRleEJ1ZmZlcjtyZXR1cm4gbShlKSYmIWUuaXNEZXN0cm95ZWQoKSYmZS52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlJiZlLmRlc3Ryb3koKSxtKHRoaXMuX3ZhbykmJnRoaXMuX2NvbnRleHQuZ2xEZWxldGVWZXJ0ZXhBcnJheSh0aGlzLl92YW8pLGxpKHRoaXMpfTttST1oaH0pO2Z1bmN0aW9uIFFzKHQsZSxpLG4pe2lmKHAuZGVmaW5lZCgiY29udGV4dCIsdCksIWV8fGUubGVuZ3RoPT09MCl0aHJvdyBuZXcgWSgiQXQgbGVhc3Qgb25lIGF0dHJpYnV0ZSBpcyByZXF1aXJlZC4iKTtsZXQgcz1Rcy5fdmVyaWZ5QXR0cmlidXRlcyhlKTtpPVooaSwwKTtsZXQgbz1bXSxyPXt9LGEsaCxBPXMubGVuZ3RoO2ZvcihsZXQgZj0wO2Y8QTsrK2Ype2xldCBFPXNbZl07aWYoRS52ZXJ0ZXhCdWZmZXIpe28ucHVzaChFKTtjb250aW51ZX1oPUUudXNhZ2UsYT1yW2hdLG0oYSl8fChhPXJbaF09W10pLGEucHVzaChFKX1mdW5jdGlvbiBkKGYsRSl7cmV0dXJuIEF0LmdldFNpemVJbkJ5dGVzKEUuY29tcG9uZW50RGF0YXR5cGUpLUF0LmdldFNpemVJbkJ5dGVzKGYuY29tcG9uZW50RGF0YXR5cGUpfXRoaXMuX2FsbEJ1ZmZlcnM9W107Zm9yKGggaW4gcilpZihyLmhhc093blByb3BlcnR5KGgpKXthPXJbaF0sYS5zb3J0KGQpO2xldCBmPVFzLl92ZXJ0ZXhTaXplSW5CeXRlcyhhKSxFPWFbMF0udXNhZ2UsXz17dmVydGV4U2l6ZUluQnl0ZXM6Zix2ZXJ0ZXhCdWZmZXI6dm9pZCAwLHVzYWdlOkUsbmVlZHNDb21taXQ6ITEsYXJyYXlCdWZmZXI6dm9pZCAwLGFycmF5Vmlld3M6UXMuX2NyZWF0ZUFycmF5Vmlld3MoYSxmKX07dGhpcy5fYWxsQnVmZmVycy5wdXNoKF8pfXRoaXMuX3NpemU9MCx0aGlzLl9pbnN0YW5jZWQ9WihuLCExKSx0aGlzLl9wcmVjcmVhdGVkPW8sdGhpcy5fY29udGV4dD10LHRoaXMud3JpdGVycz12b2lkIDAsdGhpcy52YT12b2lkIDAsdGhpcy5yZXNpemUoaSl9ZnVuY3Rpb24gVnR0KHQsZSl7aWYoZS5uZWVkc0NvbW1pdCYmZS52ZXJ0ZXhTaXplSW5CeXRlcz4wKXtlLm5lZWRzQ29tbWl0PSExO2xldCBpPWUudmVydGV4QnVmZmVyLG49dC5fc2l6ZSplLnZlcnRleFNpemVJbkJ5dGVzLHM9bShpKTtpZighc3x8aS5zaXplSW5CeXRlczxuKXJldHVybiBzJiZpLmRlc3Ryb3koKSxlLnZlcnRleEJ1ZmZlcj1DYS5jcmVhdGVWZXJ0ZXhCdWZmZXIoe2NvbnRleHQ6dC5fY29udGV4dCx0eXBlZEFycmF5OmUuYXJyYXlCdWZmZXIsdXNhZ2U6ZS51c2FnZX0pLGUudmVydGV4QnVmZmVyLnZlcnRleEFycmF5RGVzdHJveWFibGU9ITEsITA7ZS52ZXJ0ZXhCdWZmZXIuY29weUZyb21BcnJheVZpZXcoZS5hcnJheUJ1ZmZlcil9cmV0dXJuITF9ZnVuY3Rpb24gR3R0KHQsZSxpKXtpZih0Lm5lZWRzQ29tbWl0JiZ0LnZlcnRleFNpemVJbkJ5dGVzPjApe2xldCBuPXQudmVydGV4U2l6ZUluQnl0ZXMqZSxzPXQudmVydGV4U2l6ZUluQnl0ZXMqaTt0LnZlcnRleEJ1ZmZlci5jb3B5RnJvbUFycmF5VmlldyhuZXcgVWludDhBcnJheSh0LmFycmF5QnVmZmVyLG4scyksbil9fWZ1bmN0aW9uIEdUKHQpe2xldCBlPXQudmE7aWYoIW0oZSkpcmV0dXJuO2xldCBpPWUubGVuZ3RoO2ZvcihsZXQgbj0wO248aTsrK24pZVtuXS52YS5kZXN0cm95KCk7dC52YT12b2lkIDB9dmFyIE90dCxmSSxCVD1PKCgpPT57YWUoKTtvaSgpO2J0KCk7bXQoKTtXcygpO1Z0KCk7X2UoKTthSSgpO05sKCk7VlQoKTtRcy5fdmVyaWZ5QXR0cmlidXRlcz1mdW5jdGlvbih0KXtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoOysrbil7bGV0IHM9dFtuXSxvPXtpbmRleDpaKHMuaW5kZXgsbiksZW5hYmxlZDpaKHMuZW5hYmxlZCwhMCksY29tcG9uZW50c1BlckF0dHJpYnV0ZTpzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsY29tcG9uZW50RGF0YXR5cGU6WihzLmNvbXBvbmVudERhdGF0eXBlLEF0LkZMT0FUKSxub3JtYWxpemU6WihzLm5vcm1hbGl6ZSwhMSksdmVydGV4QnVmZmVyOnMudmVydGV4QnVmZmVyLHVzYWdlOloocy51c2FnZSxhaS5TVEFUSUNfRFJBVyl9O2lmKGUucHVzaChvKSxvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT0xJiZvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT0yJiZvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT0zJiZvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT00KXRocm93IG5ldyBZKCJhdHRyaWJ1dGUuY29tcG9uZW50c1BlckF0dHJpYnV0ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMSwgNF0uIik7bGV0IHI9by5jb21wb25lbnREYXRhdHlwZTtpZighQXQudmFsaWRhdGUocikpdGhyb3cgbmV3IFkoIkF0dHJpYnV0ZSBtdXN0IGhhdmUgYSB2YWxpZCBjb21wb25lbnREYXRhdHlwZSBvciBub3Qgc3BlY2lmeSBpdC4iKTtpZighYWkudmFsaWRhdGUoby51c2FnZSkpdGhyb3cgbmV3IFkoIkF0dHJpYnV0ZSBtdXN0IGhhdmUgYSB2YWxpZCB1c2FnZSBvciBub3Qgc3BlY2lmeSBpdC4iKX1sZXQgaT1uZXcgQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtsZXQgbz1lW25dLmluZGV4O2lmKGlbb10pdGhyb3cgbmV3IFkoYEluZGV4ICR7b30gaXMgdXNlZCBieSBtb3JlIHRoYW4gb25lIGF0dHJpYnV0ZS5gKTtpW29dPSEwfXJldHVybiBlfTtRcy5fdmVydGV4U2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCl7bGV0IGU9MCxpPXQubGVuZ3RoO2ZvcihsZXQgcj0wO3I8aTsrK3Ipe2xldCBhPXRbcl07ZSs9YS5jb21wb25lbnRzUGVyQXR0cmlidXRlKkF0LmdldFNpemVJbkJ5dGVzKGEuY29tcG9uZW50RGF0YXR5cGUpfWxldCBuPWk+MD9BdC5nZXRTaXplSW5CeXRlcyh0WzBdLmNvbXBvbmVudERhdGF0eXBlKTowLHM9bj4wP2UlbjowLG89cz09PTA/MDpuLXM7cmV0dXJuIGUrPW8sZX07UXMuX2NyZWF0ZUFycmF5Vmlld3M9ZnVuY3Rpb24odCxlKXtsZXQgaT1bXSxuPTAscz10Lmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKXtsZXQgcj10W29dLGE9ci5jb21wb25lbnREYXRhdHlwZTtpLnB1c2goe2luZGV4OnIuaW5kZXgsZW5hYmxlZDpyLmVuYWJsZWQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpyLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsY29tcG9uZW50RGF0YXR5cGU6YSxub3JtYWxpemU6ci5ub3JtYWxpemUsb2Zmc2V0SW5CeXRlczpuLHZlcnRleFNpemVJbkNvbXBvbmVudFR5cGU6ZS9BdC5nZXRTaXplSW5CeXRlcyhhKSx2aWV3OnZvaWQgMH0pLG4rPXIuY29tcG9uZW50c1BlckF0dHJpYnV0ZSpBdC5nZXRTaXplSW5CeXRlcyhhKX1yZXR1cm4gaX07UXMucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt0aGlzLl9zaXplPXQ7bGV0IGU9dGhpcy5fYWxsQnVmZmVyczt0aGlzLndyaXRlcnM9W107Zm9yKGxldCBpPTAsbj1lLmxlbmd0aDtpPG47KytpKXtsZXQgcz1lW2ldO1FzLl9yZXNpemUocyx0aGlzLl9zaXplKSxRcy5fYXBwZW5kV3JpdGVycyh0aGlzLndyaXRlcnMscyl9R1QodGhpcyl9O1FzLl9yZXNpemU9ZnVuY3Rpb24odCxlKXtpZih0LnZlcnRleFNpemVJbkJ5dGVzPjApe2xldCBpPW5ldyBBcnJheUJ1ZmZlcihlKnQudmVydGV4U2l6ZUluQnl0ZXMpO2lmKG0odC5hcnJheUJ1ZmZlcikpe2xldCBvPW5ldyBVaW50OEFycmF5KGkpLHI9bmV3IFVpbnQ4QXJyYXkodC5hcnJheUJ1ZmZlciksYT1yLmxlbmd0aDtmb3IobGV0IGg9MDtoPGE7KytoKW9baF09cltoXX1sZXQgbj10LmFycmF5Vmlld3Mscz1uLmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKXtsZXQgcj1uW29dO3Iudmlldz1BdC5jcmVhdGVBcnJheUJ1ZmZlclZpZXcoci5jb21wb25lbnREYXRhdHlwZSxpLHIub2Zmc2V0SW5CeXRlcyl9dC5hcnJheUJ1ZmZlcj1pfX07T3R0PVtmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uKG4scyl7ZVtuKmldPXMsdC5uZWVkc0NvbW1pdD0hMH19LGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24obixzLG8pe2xldCByPW4qaTtlW3JdPXMsZVtyKzFdPW8sdC5uZWVkc0NvbW1pdD0hMH19LGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24obixzLG8scil7bGV0IGE9bippO2VbYV09cyxlW2ErMV09byxlW2ErMl09cix0Lm5lZWRzQ29tbWl0PSEwfX0sZnVuY3Rpb24odCxlLGkpe3JldHVybiBmdW5jdGlvbihuLHMsbyxyLGEpe2xldCBoPW4qaTtlW2hdPXMsZVtoKzFdPW8sZVtoKzJdPXIsZVtoKzNdPWEsdC5uZWVkc0NvbW1pdD0hMH19XTtRcy5fYXBwZW5kV3JpdGVycz1mdW5jdGlvbih0LGUpe2xldCBpPWUuYXJyYXlWaWV3cyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe2xldCBvPWlbc107dFtvLmluZGV4XT1PdHRbby5jb21wb25lbnRzUGVyQXR0cmlidXRlLTFdKGUsby52aWV3LG8udmVydGV4U2l6ZUluQ29tcG9uZW50VHlwZSl9fTtRcy5wcm90b3R5cGUuY29tbWl0PWZ1bmN0aW9uKHQpe2xldCBlPSExLGk9dGhpcy5fYWxsQnVmZmVycyxuLHMsbztmb3Iocz0wLG89aS5sZW5ndGg7czxvOysrcyluPWlbc10sZT1WdHQodGhpcyxuKXx8ZTtpZihlfHwhbSh0aGlzLnZhKSl7R1QodGhpcyk7bGV0IHI9dGhpcy52YT1bXSxhPUwuU0lYVFlfRk9VUl9LSUxPQllURVMtNCxoPW0odCkmJiF0aGlzLl9pbnN0YW5jZWQ/TWF0aC5jZWlsKHRoaXMuX3NpemUvYSk6MTtmb3IobGV0IEE9MDtBPGg7KytBKXtsZXQgZD1bXTtmb3Iocz0wLG89aS5sZW5ndGg7czxvOysrcyl7bj1pW3NdO2xldCBmPUEqKG4udmVydGV4U2l6ZUluQnl0ZXMqYSk7UXMuX2FwcGVuZEF0dHJpYnV0ZXMoZCxuLGYsdGhpcy5faW5zdGFuY2VkKX1kPWQuY29uY2F0KHRoaXMuX3ByZWNyZWF0ZWQpLHIucHVzaCh7dmE6bmV3IG1JKHtjb250ZXh0OnRoaXMuX2NvbnRleHQsYXR0cmlidXRlczpkLGluZGV4QnVmZmVyOnR9KSxpbmRpY2VzQ291bnQ6MS41KihBIT09aC0xP2E6dGhpcy5fc2l6ZSVhKX0pfX19O1FzLl9hcHBlbmRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzPWUuYXJyYXlWaWV3cyxvPXMubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bzsrK3Ipe2xldCBhPXNbcl07dC5wdXNoKHtpbmRleDphLmluZGV4LGVuYWJsZWQ6YS5lbmFibGVkLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6YS5jb21wb25lbnRzUGVyQXR0cmlidXRlLGNvbXBvbmVudERhdGF0eXBlOmEuY29tcG9uZW50RGF0YXR5cGUsbm9ybWFsaXplOmEubm9ybWFsaXplLHZlcnRleEJ1ZmZlcjplLnZlcnRleEJ1ZmZlcixvZmZzZXRJbkJ5dGVzOmkrYS5vZmZzZXRJbkJ5dGVzLHN0cmlkZUluQnl0ZXM6ZS52ZXJ0ZXhTaXplSW5CeXRlcyxpbnN0YW5jZURpdmlzb3I6bj8xOjB9KX19O1FzLnByb3RvdHlwZS5zdWJDb21taXQ9ZnVuY3Rpb24odCxlKXtpZih0PDB8fHQ+PXRoaXMuX3NpemUpdGhyb3cgbmV3IFkoIm9mZnNldEluVmVydGljZXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybyBhbmQgbGVzcyB0aGFuIHRoZSB2ZXJ0ZXggYXJyYXkgc2l6ZS4iKTtpZih0K2U+dGhpcy5fc2l6ZSl0aHJvdyBuZXcgWSgib2Zmc2V0SW5WZXJ0aWNlcyArIGxlbmd0aEluVmVydGljZXMgY2Fubm90IGV4Y2VlZCB0aGUgdmVydGV4IGFycmF5IHNpemUuIik7bGV0IGk9dGhpcy5fYWxsQnVmZmVycztmb3IobGV0IG49MCxzPWkubGVuZ3RoO248czsrK24pR3R0KGlbbl0sdCxlKX07UXMucHJvdG90eXBlLmVuZFN1YkNvbW1pdHM9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9hbGxCdWZmZXJzO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl0W2VdLm5lZWRzQ29tbWl0PSExfTtRcy5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07UXMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9hbGxCdWZmZXJzO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7bGV0IG49dFtlXTtuLnZlcnRleEJ1ZmZlcj1uLnZlcnRleEJ1ZmZlciYmbi52ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpfXJldHVybiBHVCh0aGlzKSxsaSh0aGlzKX07Zkk9UXN9KTt2YXIgTUwsVUw9TygoKT0+e01MPWB1bmlmb3JtIHNhbXBsZXIyRCB1X2F0bGFzOwoKI2lmZGVmIFZFQ1RPUl9USUxFCnVuaWZvcm0gdmVjNCB1X2hpZ2hsaWdodENvbG9yOwojZW5kaWYKCmluIHZlYzIgdl90ZXh0dXJlQ29vcmRpbmF0ZXM7CmluIHZlYzQgdl9waWNrQ29sb3I7CmluIHZlYzQgdl9jb2xvcjsKCiNpZmRlZiBTREYKaW4gdmVjNCB2X291dGxpbmVDb2xvcjsKaW4gZmxvYXQgdl9vdXRsaW5lV2lkdGg7CiNlbmRpZgoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCmluIHZlYzQgdl90ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kczsgICAgICAgICAgICAgICAgICAvLyB0aGUgbWluIGFuZCBtYXggeCBhbmQgeSB2YWx1ZXMgZm9yIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGVzCmluIHZlYzQgdl9vcmlnaW5UZXh0dXJlQ29vcmRpbmF0ZUFuZFRyYW5zbGF0ZTsgICAgICAvLyB0ZXh0dXJlIGNvb3JkaW5hdGUgYXQgdGhlIG9yaWdpbiwgYmlsbGJvYXJkIHRyYW5zbGF0ZSAodXNlZCBmb3IgbGFiZWwgZ2x5cGhzKQppbiB2ZWM0IHZfY29tcHJlc3NlZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geDogZXllRGVwdGgsIHk6IGFwcGx5VHJhbnNsYXRlICYgZW5hYmxlRGVwdGhDaGVjaywgejogZGltZW5zaW9ucywgdzogaW1hZ2VTaXplCmluIG1hdDIgdl9yb3RhdGlvbk1hdHJpeDsKCmNvbnN0IGZsb2F0IFNISUZUX0xFRlQxMiA9IDQwOTYuMDsKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDEgPSAyLjA7Cgpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEyID0gMS4wIC8gNDA5Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEgPSAxLjAgLyAyLjA7CgpmbG9hdCBnZXRHbG9iZURlcHRoKHZlYzIgYWRqdXN0ZWRTVCwgdmVjMiBkZXB0aExvb2t1cFNULCBib29sIGFwcGx5VHJhbnNsYXRlLCB2ZWMyIGRpbWVuc2lvbnMsIHZlYzIgaW1hZ2VTaXplKQp7CiAgICB2ZWMyIGxvb2t1cFZlY3RvciA9IGltYWdlU2l6ZSAqIChkZXB0aExvb2t1cFNUIC0gYWRqdXN0ZWRTVCk7CiAgICBsb29rdXBWZWN0b3IgPSB2X3JvdGF0aW9uTWF0cml4ICogbG9va3VwVmVjdG9yOwogICAgdmVjMiBsYWJlbE9mZnNldCA9IChkaW1lbnNpb25zIC0gaW1hZ2VTaXplKSAqIChkZXB0aExvb2t1cFNUIC0gdmVjMigwLjAsIHZfb3JpZ2luVGV4dHVyZUNvb3JkaW5hdGVBbmRUcmFuc2xhdGUueSkpOyAvLyBhbGlnbnMgbGFiZWwgZ2x5cGggd2l0aCBib3VuZGluZyByZWN0YW5nbGUuICBXaWxsIGJlIHplcm8gZm9yIGJpbGxib2FyZHMgYmVjYXVzZSBkaW1lbnNpb25zIGFuZCBpbWFnZVNpemUgd2lsbCBiZSBlcXVhbAoKICAgIHZlYzIgdHJhbnNsYXRpb24gPSB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnp3OwoKICAgIGlmIChhcHBseVRyYW5zbGF0ZSkKICAgIHsKICAgICAgICAvLyB0aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsYWJlbHMgd2hlcmUgdGhlIGhvcml6b250YWwgb3JpZ2luIGlzIG5vdCBMRUZUCiAgICAgICAgLy8gaXQgbW92ZXMgdGhlIGxhYmVsIGJhY2sgdG8gd2hlcmUgdGhlICJvcmlnaW4iIHNob3VsZCBiZSBzaW5jZSBhbGwgbGFiZWwgZ2x5cGhzIGFyZSBzZXQgdG8gSG9yaXpvbnRhbE9yaWdpbi5MRUZUCiAgICAgICAgdHJhbnNsYXRpb24gKz0gKGRpbWVuc2lvbnMgKiB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnh5ICogdmVjMigxLjAsIDAuMCkpOwogICAgfQoKICAgIHZlYzIgc3QgPSAoKGxvb2t1cFZlY3RvciAtIHRyYW5zbGF0aW9uICsgbGFiZWxPZmZzZXQpICsgZ2xfRnJhZ0Nvb3JkLnh5KSAvIGN6bV92aWV3cG9ydC56dzsKICAgIGZsb2F0IGxvZ0RlcHRoT3JEZXB0aCA9IGN6bV91bnBhY2tEZXB0aCh0ZXh0dXJlKGN6bV9nbG9iZURlcHRoVGV4dHVyZSwgc3QpKTsKCiAgICBpZiAobG9nRGVwdGhPckRlcHRoID09IDAuMCkKICAgIHsKICAgICAgICByZXR1cm4gMC4wOyAvLyBub3Qgb24gdGhlIGdsb2JlCiAgICB9CgogICAgdmVjNCBleWVDb29yZGluYXRlID0gY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMoZ2xfRnJhZ0Nvb3JkLnh5LCBsb2dEZXB0aE9yRGVwdGgpOwogICAgcmV0dXJuIGV5ZUNvb3JkaW5hdGUueiAvIGV5ZUNvb3JkaW5hdGUudzsKfQojZW5kaWYKCgojaWZkZWYgU0RGCgovLyBHZXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGVkZ2Ugb2YgYSBnbHlwaCBhdCBhIGdpdmVuIHBvc2l0aW9uIHNhbXBsaW5nIGFuIFNERiB0ZXh0dXJlLgpmbG9hdCBnZXREaXN0YW5jZSh2ZWMyIHBvc2l0aW9uKQp7CiAgICByZXR1cm4gdGV4dHVyZSh1X2F0bGFzLCBwb3NpdGlvbikucjsKfQoKLy8gU2FtcGxlcyB0aGUgc2RmIHRleHR1cmUgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGFuZCBwcm9kdWNlcyBhIGNvbG9yIGJhc2VkIG9uIHRoZSBmaWxsIGNvbG9yIGFuZCB0aGUgb3V0bGluZS4KdmVjNCBnZXRTREZDb2xvcih2ZWMyIHBvc2l0aW9uLCBmbG9hdCBvdXRsaW5lV2lkdGgsIHZlYzQgb3V0bGluZUNvbG9yLCBmbG9hdCBzbW9vdGhpbmcpCnsKICAgIGZsb2F0IGRpc3RhbmNlID0gZ2V0RGlzdGFuY2UocG9zaXRpb24pOwoKICAgIGlmIChvdXRsaW5lV2lkdGggPiAwLjApCiAgICB7CiAgICAgICAgLy8gRG9uJ3QgZ2V0IHRoZSBvdXRsaW5lIGVkZ2UgZXhjZWVkIHRoZSBTREZfRURHRQogICAgICAgIGZsb2F0IG91dGxpbmVFZGdlID0gY2xhbXAoU0RGX0VER0UgLSBvdXRsaW5lV2lkdGgsIDAuMCwgU0RGX0VER0UpOwogICAgICAgIGZsb2F0IG91dGxpbmVGYWN0b3IgPSBzbW9vdGhzdGVwKFNERl9FREdFIC0gc21vb3RoaW5nLCBTREZfRURHRSArIHNtb290aGluZywgZGlzdGFuY2UpOwogICAgICAgIHZlYzQgc2RmQ29sb3IgPSBtaXgob3V0bGluZUNvbG9yLCB2X2NvbG9yLCBvdXRsaW5lRmFjdG9yKTsKICAgICAgICBmbG9hdCBhbHBoYSA9IHNtb290aHN0ZXAob3V0bGluZUVkZ2UgLSBzbW9vdGhpbmcsIG91dGxpbmVFZGdlICsgc21vb3RoaW5nLCBkaXN0YW5jZSk7CiAgICAgICAgcmV0dXJuIHZlYzQoc2RmQ29sb3IucmdiLCBzZGZDb2xvci5hICogYWxwaGEpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZsb2F0IGFscGhhID0gc21vb3Roc3RlcChTREZfRURHRSAtIHNtb290aGluZywgU0RGX0VER0UgKyBzbW9vdGhpbmcsIGRpc3RhbmNlKTsKICAgICAgICByZXR1cm4gdmVjNCh2X2NvbG9yLnJnYiwgdl9jb2xvci5hICogYWxwaGEpOwogICAgfQp9CiNlbmRpZgoKdm9pZCBtYWluKCkKewogICAgdmVjNCBjb2xvciA9IHRleHR1cmUodV9hdGxhcywgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpOwoKI2lmZGVmIFNERgogICAgZmxvYXQgb3V0bGluZVdpZHRoID0gdl9vdXRsaW5lV2lkdGg7CiAgICB2ZWM0IG91dGxpbmVDb2xvciA9IHZfb3V0bGluZUNvbG9yOwoKICAgIC8vIEdldCB0aGUgY3VycmVudCBkaXN0YW5jZQogICAgZmxvYXQgZGlzdGFuY2UgPSBnZXREaXN0YW5jZSh2X3RleHR1cmVDb29yZGluYXRlcyk7CgojaWYgKF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykpCiAgICBmbG9hdCBzbW9vdGhpbmcgPSBmd2lkdGgoZGlzdGFuY2UpOwogICAgLy8gR2V0IGFuIG9mZnNldCB0aGF0IGlzIGFwcHJveGltYXRlbHkgaGFsZiB0aGUgZGlzdGFuY2UgdG8gdGhlIG5laWdoYm9yIHBpeGVscwogICAgLy8gMC4zNTQgaXMgYXBwcm94aW1hdGVseSBoYWxmIG9mIDEvc3FydCgyKQogICAgdmVjMiBzYW1wbGVPZmZzZXQgPSAwLjM1NCAqIHZlYzIoZEZkeCh2X3RleHR1cmVDb29yZGluYXRlcykgKyBkRmR5KHZfdGV4dHVyZUNvb3JkaW5hdGVzKSk7CgogICAgLy8gU2FtcGxlIHRoZSBjZW50ZXIgcG9pbnQKICAgIHZlYzQgY2VudGVyID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMsIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwoKICAgIC8vIFNhbXBsZSB0aGUgNCBuZWlnaGJvcnMKICAgIHZlYzQgY29sb3IxID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMgKyB2ZWMyKHNhbXBsZU9mZnNldC54LCBzYW1wbGVPZmZzZXQueSksIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwogICAgdmVjNCBjb2xvcjIgPSBnZXRTREZDb2xvcih2X3RleHR1cmVDb29yZGluYXRlcyArIHZlYzIoLXNhbXBsZU9mZnNldC54LCBzYW1wbGVPZmZzZXQueSksIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwogICAgdmVjNCBjb2xvcjMgPSBnZXRTREZDb2xvcih2X3RleHR1cmVDb29yZGluYXRlcyArIHZlYzIoLXNhbXBsZU9mZnNldC54LCAtc2FtcGxlT2Zmc2V0LnkpLCBvdXRsaW5lV2lkdGgsIG91dGxpbmVDb2xvciwgc21vb3RoaW5nKTsKICAgIHZlYzQgY29sb3I0ID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMgKyB2ZWMyKHNhbXBsZU9mZnNldC54LCAtc2FtcGxlT2Zmc2V0LnkpLCBvdXRsaW5lV2lkdGgsIG91dGxpbmVDb2xvciwgc21vb3RoaW5nKTsKCiAgICAvLyBFcXVhbGx5IHdlaWdodCB0aGUgY2VudGVyIHNhbXBsZSBhbmQgdGhlIDQgbmVpZ2hib3Jpbmcgc2FtcGxlcwogICAgY29sb3IgPSAoY2VudGVyICsgY29sb3IxICsgY29sb3IyICsgY29sb3IzICsgY29sb3I0KS81LjA7CiNlbHNlCiAgICAvLyBJZiBubyBkZXJpdmF0aXZlcyBhdmFpbGFibGUgKElFIDEwPyksIGp1c3QgZG8gYSBzaW5nbGUgc2FtcGxlCiAgICBmbG9hdCBzbW9vdGhpbmcgPSAxLjAvMzIuMDsKICAgIGNvbG9yID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMsIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwojZW5kaWYKCiAgICBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwojZWxzZQogICAgY29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KGNvbG9yKTsKICAgIGNvbG9yICo9IGN6bV9nYW1tYUNvcnJlY3Qodl9jb2xvcik7CiNlbmRpZgoKLy8gRnVsbHkgdHJhbnNwYXJlbnQgcGFydHMgb2YgdGhlIGJpbGxib2FyZCBhcmUgbm90IHBpY2thYmxlLgojaWYgIWRlZmluZWQoT1BBUVVFKSAmJiAhZGVmaW5lZChUUkFOU0xVQ0VOVCkKICAgIGlmIChjb2xvci5hIDwgMC4wMDUpICAgLy8gbWF0Y2hlcyAwLzI1NSBhbmQgMS8yNTUKICAgIHsKICAgICAgICBkaXNjYXJkOwogICAgfQojZWxzZQovLyBUaGUgYmlsbGJvYXJkIGlzIHJlbmRlcmVkIHR3aWNlLiBUaGUgb3BhcXVlIHBhc3MgZGlzY2FyZHMgdHJhbnNsdWNlbnQgZnJhZ21lbnRzCi8vIGFuZCB0aGUgdHJhbnNsdWNlbnQgcGFzcyBkaXNjYXJkcyBvcGFxdWUgZnJhZ21lbnRzLgojaWZkZWYgT1BBUVVFCiAgICBpZiAoY29sb3IuYSA8IDAuOTk1KSAgIC8vIG1hdGNoZXMgPCAyNTQvMjU1CiAgICB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2Vsc2UKICAgIGlmIChjb2xvci5hID49IDAuOTk1KSAgLy8gbWF0Y2hlcyAyNTQvMjU1IGFuZCAyNTUvMjU1CiAgICB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2VuZGlmCiNlbmRpZgoKI2lmZGVmIFZFQ1RPUl9USUxFCiAgICBjb2xvciAqPSB1X2hpZ2hsaWdodENvbG9yOwojZW5kaWYKICAgIG91dF9GcmFnQ29sb3IgPSBjb2xvcjsKCiNpZmRlZiBMT0dfREVQVEgKICAgIGN6bV93cml0ZUxvZ0RlcHRoKCk7CiNlbmRpZgoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCiAgICBmbG9hdCB0ZW1wID0gdl9jb21wcmVzc2VkLnk7CgogICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDE7CgogICAgZmxvYXQgdGVtcDIgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQxOwogICAgYm9vbCBlbmFibGVEZXB0aFRlc3QgPSB0ZW1wMiAhPSAwLjA7CiAgICBib29sIGFwcGx5VHJhbnNsYXRlID0gZmxvb3IodGVtcCkgIT0gMC4wOwoKICAgIGlmIChlbmFibGVEZXB0aFRlc3QpIHsKICAgICAgICB0ZW1wID0gdl9jb21wcmVzc2VkLno7CiAgICAgICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDEyOwoKICAgICAgICB2ZWMyIGRpbWVuc2lvbnM7CiAgICAgICAgZGltZW5zaW9ucy55ID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUMTI7CiAgICAgICAgZGltZW5zaW9ucy54ID0gZmxvb3IodGVtcCk7CgogICAgICAgIHRlbXAgPSB2X2NvbXByZXNzZWQudzsKICAgICAgICB0ZW1wID0gdGVtcCAqIFNISUZUX1JJR0hUMTI7CgogICAgICAgIHZlYzIgaW1hZ2VTaXplOwogICAgICAgIGltYWdlU2l6ZS55ID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUMTI7CiAgICAgICAgaW1hZ2VTaXplLnggPSBmbG9vcih0ZW1wKTsKCiAgICAgICAgdmVjMiBhZGp1c3RlZFNUID0gdl90ZXh0dXJlQ29vcmRpbmF0ZXMgLSB2X3RleHR1cmVDb29yZGluYXRlQm91bmRzLnh5OwogICAgICAgIGFkanVzdGVkU1QgPSBhZGp1c3RlZFNUIC8gdmVjMih2X3RleHR1cmVDb29yZGluYXRlQm91bmRzLnogLSB2X3RleHR1cmVDb29yZGluYXRlQm91bmRzLngsIHZfdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHMudyAtIHZfdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHMueSk7CgogICAgICAgIGZsb2F0IGVwc2lsb25FeWVEZXB0aCA9IHZfY29tcHJlc3NlZC54ICsgY3ptX2Vwc2lsb24xOwogICAgICAgIGZsb2F0IGdsb2JlRGVwdGgxID0gZ2V0R2xvYmVEZXB0aChhZGp1c3RlZFNULCB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnh5LCBhcHBseVRyYW5zbGF0ZSwgZGltZW5zaW9ucywgaW1hZ2VTaXplKTsKCiAgICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzIGdvIGludG8gdGhlIHNjcmVlbgogICAgICAgIGlmIChnbG9iZURlcHRoMSAhPSAwLjAgJiYgZ2xvYmVEZXB0aDEgPiBlcHNpbG9uRXllRGVwdGgpCiAgICAgICAgewogICAgICAgICAgICBmbG9hdCBnbG9iZURlcHRoMiA9IGdldEdsb2JlRGVwdGgoYWRqdXN0ZWRTVCwgdmVjMigwLjAsIDEuMCksIGFwcGx5VHJhbnNsYXRlLCBkaW1lbnNpb25zLCBpbWFnZVNpemUpOyAvLyB0b3AgbGVmdCBjb3JuZXIKICAgICAgICAgICAgaWYgKGdsb2JlRGVwdGgyICE9IDAuMCAmJiBnbG9iZURlcHRoMiA+IGVwc2lsb25FeWVEZXB0aCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxvYXQgZ2xvYmVEZXB0aDMgPSBnZXRHbG9iZURlcHRoKGFkanVzdGVkU1QsIHZlYzIoMS4wLCAxLjApLCBhcHBseVRyYW5zbGF0ZSwgZGltZW5zaW9ucywgaW1hZ2VTaXplKTsgLy8gdG9wIHJpZ2h0IGNvcm5lcgogICAgICAgICAgICAgICAgaWYgKGdsb2JlRGVwdGgzICE9IDAuMCAmJiBnbG9iZURlcHRoMyA+IGVwc2lsb25FeWVEZXB0aCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkaXNjYXJkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQojZW5kaWYKCn0KYH0pO3ZhciBRTCxrTD1PKCgpPT57UUw9YCNpZmRlZiBJTlNUQU5DRUQKaW4gdmVjMiBkaXJlY3Rpb247CiNlbmRpZgppbiB2ZWM0IHBvc2l0aW9uSGlnaEFuZFNjYWxlOwppbiB2ZWM0IHBvc2l0aW9uTG93QW5kUm90YXRpb247CmluIHZlYzQgY29tcHJlc3NlZEF0dHJpYnV0ZTA7ICAgICAgICAgICAgICAgICAgICAgICAvLyBwaXhlbCBvZmZzZXQsIHRyYW5zbGF0ZSwgaG9yaXpvbnRhbCBvcmlnaW4sIHZlcnRpY2FsIG9yaWdpbiwgc2hvdywgZGlyZWN0aW9uLCB0ZXh0dXJlIGNvb3JkaW5hdGVzICh0ZXh0dXJlIG9mZnNldCkKaW4gdmVjNCBjb21wcmVzc2VkQXR0cmlidXRlMTsgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsaWduZWQgYXhpcywgdHJhbnNsdWNlbmN5IGJ5IGRpc3RhbmNlLCBpbWFnZSB3aWR0aAppbiB2ZWM0IGNvbXByZXNzZWRBdHRyaWJ1dGUyOyAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFiZWwgaG9yaXpvbnRhbCBvcmlnaW4sIGltYWdlIGhlaWdodCwgY29sb3IsIHBpY2sgY29sb3IsIHNpemUgaW4gbWV0ZXJzLCB2YWxpZCBhbGlnbmVkIGF4aXMsIDEzIGJpdHMgZnJlZQppbiB2ZWM0IGV5ZU9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXllIG9mZnNldCBpbiBtZXRlcnMsIDQgYnl0ZXMgZnJlZSAodGV4dHVyZSByYW5nZSkKaW4gdmVjNCBzY2FsZUJ5RGlzdGFuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lYXIsIG5lYXJTY2FsZSwgZmFyLCBmYXJTY2FsZQppbiB2ZWM0IHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOyAgICAgICAgICAgICAgICAgLy8gbmVhciwgbmVhclNjYWxlLCBmYXIsIGZhclNjYWxlCmluIHZlYzQgY29tcHJlc3NlZEF0dHJpYnV0ZTM7ICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXN0YW5jZSBkaXNwbGF5IGNvbmRpdGlvbiBuZWFyLCBmYXIsIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSwgZGltZW5zaW9ucwppbiB2ZWMyIHNkZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2RmIG91dGxpbmUgY29sb3IgKHJnYikgYW5kIHdpZHRoICh3KQojaWYgZGVmaW5lZChWRVJURVhfREVQVEhfQ0hFQ0spIHx8IGRlZmluZWQoRlJBR01FTlRfREVQVEhfQ0hFQ0spCmluIHZlYzQgdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHNPckxhYmVsVHJhbnNsYXRlOyAgICAvLyB0aGUgbWluIGFuZCBtYXggeCBhbmQgeSB2YWx1ZXMgZm9yIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGVzCiNlbmRpZgojaWZkZWYgVkVDVE9SX1RJTEUKaW4gZmxvYXQgYV9iYXRjaElkOwojZW5kaWYKCm91dCB2ZWMyIHZfdGV4dHVyZUNvb3JkaW5hdGVzOwojaWZkZWYgRlJBR01FTlRfREVQVEhfQ0hFQ0sKb3V0IHZlYzQgdl90ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kczsKb3V0IHZlYzQgdl9vcmlnaW5UZXh0dXJlQ29vcmRpbmF0ZUFuZFRyYW5zbGF0ZTsKb3V0IHZlYzQgdl9jb21wcmVzc2VkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHg6IGV5ZURlcHRoLCB5OiBhcHBseVRyYW5zbGF0ZSAmIGVuYWJsZURlcHRoQ2hlY2ssIHo6IGRpbWVuc2lvbnMsIHc6IGltYWdlU2l6ZQpvdXQgbWF0MiB2X3JvdGF0aW9uTWF0cml4OwojZW5kaWYKCm91dCB2ZWM0IHZfcGlja0NvbG9yOwpvdXQgdmVjNCB2X2NvbG9yOwojaWZkZWYgU0RGCm91dCB2ZWM0IHZfb3V0bGluZUNvbG9yOwpvdXQgZmxvYXQgdl9vdXRsaW5lV2lkdGg7CiNlbmRpZgoKY29uc3QgZmxvYXQgVVBQRVJfQk9VTkQgPSAzMjc2OC4wOwoKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDE2ID0gNjU1MzYuMDsKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDEyID0gNDA5Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUOCA9IDI1Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUNyA9IDEyOC4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUNSA9IDMyLjA7CmNvbnN0IGZsb2F0IFNISUZUX0xFRlQzID0gOC4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUMiA9IDQuMDsKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDEgPSAyLjA7Cgpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEyID0gMS4wIC8gNDA5Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDggPSAxLjAgLyAyNTYuMDsKY29uc3QgZmxvYXQgU0hJRlRfUklHSFQ3ID0gMS4wIC8gMTI4LjA7CmNvbnN0IGZsb2F0IFNISUZUX1JJR0hUNSA9IDEuMCAvIDMyLjA7CmNvbnN0IGZsb2F0IFNISUZUX1JJR0hUMyA9IDEuMCAvIDguMDsKY29uc3QgZmxvYXQgU0hJRlRfUklHSFQyID0gMS4wIC8gNC4wOwpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEgPSAxLjAgLyAyLjA7Cgp2ZWM0IGFkZFNjcmVlblNwYWNlT2Zmc2V0KHZlYzQgcG9zaXRpb25FQywgdmVjMiBpbWFnZVNpemUsIGZsb2F0IHNjYWxlLCB2ZWMyIGRpcmVjdGlvbiwgdmVjMiBvcmlnaW4sIHZlYzIgdHJhbnNsYXRlLCB2ZWMyIHBpeGVsT2Zmc2V0LCB2ZWMzIGFsaWduZWRBeGlzLCBib29sIHZhbGlkQWxpZ25lZEF4aXMsIGZsb2F0IHJvdGF0aW9uLCBib29sIHNpemVJbk1ldGVycywgb3V0IG1hdDIgcm90YXRpb25NYXRyaXgsIG91dCBmbG9hdCBtcHApCnsKICAgIC8vIE5vdGUgdGhlIGhhbGZTaXplIGNhbm5vdCBiZSBjb21wdXRlZCBpbiBKYXZhU2NyaXB0IGJlY2F1c2UgaXQgaXMgc2VudCB2aWEKICAgIC8vIGNvbXByZXNzZWQgdmVydGV4IGF0dHJpYnV0ZXMgdGhhdCBjb2VyY2UgaXQgdG8gYW4gaW50ZWdlci4KICAgIHZlYzIgaGFsZlNpemUgPSBpbWFnZVNpemUgKiBzY2FsZSAqIDAuNTsKICAgIGhhbGZTaXplICo9ICgoZGlyZWN0aW9uICogMi4wKSAtIDEuMCk7CgogICAgdmVjMiBvcmlnaW5UcmFuc2xhdGUgPSBvcmlnaW4gKiBhYnMoaGFsZlNpemUpOwoKI2lmIGRlZmluZWQoUk9UQVRJT04pIHx8IGRlZmluZWQoQUxJR05FRF9BWElTKQogICAgaWYgKHZhbGlkQWxpZ25lZEF4aXMgfHwgcm90YXRpb24gIT0gMC4wKQogICAgewogICAgICAgIGZsb2F0IGFuZ2xlID0gcm90YXRpb247CiAgICAgICAgaWYgKHZhbGlkQWxpZ25lZEF4aXMpCiAgICAgICAgewogICAgICAgICAgICB2ZWM0IHByb2plY3RlZEFsaWduZWRBeGlzID0gY3ptX21vZGVsVmlldzNEICogdmVjNChhbGlnbmVkQXhpcywgMC4wKTsKICAgICAgICAgICAgYW5nbGUgKz0gc2lnbigtcHJvamVjdGVkQWxpZ25lZEF4aXMueCkgKiBhY29zKHNpZ24ocHJvamVjdGVkQWxpZ25lZEF4aXMueSkgKiAocHJvamVjdGVkQWxpZ25lZEF4aXMueSAqIHByb2plY3RlZEFsaWduZWRBeGlzLnkpIC8KICAgICAgICAgICAgICAgICAgICAocHJvamVjdGVkQWxpZ25lZEF4aXMueCAqIHByb2plY3RlZEFsaWduZWRBeGlzLnggKyBwcm9qZWN0ZWRBbGlnbmVkQXhpcy55ICogcHJvamVjdGVkQWxpZ25lZEF4aXMueSkpOwogICAgICAgIH0KCiAgICAgICAgZmxvYXQgY29zVGhldGEgPSBjb3MoYW5nbGUpOwogICAgICAgIGZsb2F0IHNpblRoZXRhID0gc2luKGFuZ2xlKTsKICAgICAgICByb3RhdGlvbk1hdHJpeCA9IG1hdDIoY29zVGhldGEsIHNpblRoZXRhLCAtc2luVGhldGEsIGNvc1RoZXRhKTsKICAgICAgICBoYWxmU2l6ZSA9IHJvdGF0aW9uTWF0cml4ICogaGFsZlNpemU7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcm90YXRpb25NYXRyaXggPSBtYXQyKDEuMCwgMC4wLCAwLjAsIDEuMCk7CiAgICB9CiNlbmRpZgoKICAgIG1wcCA9IGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVDKTsKICAgIHBvc2l0aW9uRUMueHkgKz0gKG9yaWdpblRyYW5zbGF0ZSArIGhhbGZTaXplKSAqIGN6bV9icmFuY2hGcmVlVGVybmFyeShzaXplSW5NZXRlcnMsIDEuMCwgbXBwKTsKICAgIHBvc2l0aW9uRUMueHkgKz0gKHRyYW5zbGF0ZSArIHBpeGVsT2Zmc2V0KSAqIG1wcDsKCiAgICByZXR1cm4gcG9zaXRpb25FQzsKfQoKI2lmZGVmIFZFUlRFWF9ERVBUSF9DSEVDSwpmbG9hdCBnZXRHbG9iZURlcHRoKHZlYzQgcG9zaXRpb25FQykKewogICAgdmVjNCBwb3NXQyA9IGN6bV9leWVUb1dpbmRvd0Nvb3JkaW5hdGVzKHBvc2l0aW9uRUMpOwoKICAgIGZsb2F0IGdsb2JlRGVwdGggPSBjem1fdW5wYWNrRGVwdGgodGV4dHVyZShjem1fZ2xvYmVEZXB0aFRleHR1cmUsIHBvc1dDLnh5IC8gY3ptX3ZpZXdwb3J0Lnp3KSk7CgogICAgaWYgKGdsb2JlRGVwdGggPT0gMC4wKQogICAgewogICAgICAgIHJldHVybiAwLjA7IC8vIG5vdCBvbiB0aGUgZ2xvYmUKICAgIH0KCiAgICB2ZWM0IGV5ZUNvb3JkaW5hdGUgPSBjem1fd2luZG93VG9FeWVDb29yZGluYXRlcyhwb3NXQy54eSwgZ2xvYmVEZXB0aCk7CiAgICByZXR1cm4gZXllQ29vcmRpbmF0ZS56IC8gZXllQ29vcmRpbmF0ZS53Owp9CiNlbmRpZgp2b2lkIG1haW4oKQp7CiAgICAvLyBNb2RpZnlpbmcgdGhpcyBzaGFkZXIgbWF5IGFsc28gcmVxdWlyZSBtb2RpZmljYXRpb25zIHRvIEJpbGxib2FyZC5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24KCiAgICAvLyB1bnBhY2sgYXR0cmlidXRlcwogICAgdmVjMyBwb3NpdGlvbkhpZ2ggPSBwb3NpdGlvbkhpZ2hBbmRTY2FsZS54eXo7CiAgICB2ZWMzIHBvc2l0aW9uTG93ID0gcG9zaXRpb25Mb3dBbmRSb3RhdGlvbi54eXo7CiAgICBmbG9hdCBzY2FsZSA9IHBvc2l0aW9uSGlnaEFuZFNjYWxlLnc7CgojaWYgZGVmaW5lZChST1RBVElPTikgfHwgZGVmaW5lZChBTElHTkVEX0FYSVMpCiAgICBmbG9hdCByb3RhdGlvbiA9IHBvc2l0aW9uTG93QW5kUm90YXRpb24udzsKI2Vsc2UKICAgIGZsb2F0IHJvdGF0aW9uID0gMC4wOwojZW5kaWYKCiAgICBmbG9hdCBjb21wcmVzc2VkID0gY29tcHJlc3NlZEF0dHJpYnV0ZTAueDsKCiAgICB2ZWMyIHBpeGVsT2Zmc2V0OwogICAgcGl4ZWxPZmZzZXQueCA9IGZsb29yKGNvbXByZXNzZWQgKiBTSElGVF9SSUdIVDcpOwogICAgY29tcHJlc3NlZCAtPSBwaXhlbE9mZnNldC54ICogU0hJRlRfTEVGVDc7CiAgICBwaXhlbE9mZnNldC54IC09IFVQUEVSX0JPVU5EOwoKICAgIHZlYzIgb3JpZ2luOwogICAgb3JpZ2luLnggPSBmbG9vcihjb21wcmVzc2VkICogU0hJRlRfUklHSFQ1KTsKICAgIGNvbXByZXNzZWQgLT0gb3JpZ2luLnggKiBTSElGVF9MRUZUNTsKCiAgICBvcmlnaW4ueSA9IGZsb29yKGNvbXByZXNzZWQgKiBTSElGVF9SSUdIVDMpOwogICAgY29tcHJlc3NlZCAtPSBvcmlnaW4ueSAqIFNISUZUX0xFRlQzOwoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCiAgICB2ZWMyIGRlcHRoT3JpZ2luID0gb3JpZ2luLnh5OwojZW5kaWYKICAgIG9yaWdpbiAtPSB2ZWMyKDEuMCk7CgogICAgZmxvYXQgc2hvdyA9IGZsb29yKGNvbXByZXNzZWQgKiBTSElGVF9SSUdIVDIpOwogICAgY29tcHJlc3NlZCAtPSBzaG93ICogU0hJRlRfTEVGVDI7CgojaWZkZWYgSU5TVEFOQ0VECiAgICB2ZWMyIHRleHR1cmVDb29yZGluYXRlc0JvdHRvbUxlZnQgPSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhjb21wcmVzc2VkQXR0cmlidXRlMC53KTsKICAgIHZlYzIgdGV4dHVyZUNvb3JkaW5hdGVzUmFuZ2UgPSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhleWVPZmZzZXQudyk7CiAgICB2ZWMyIHRleHR1cmVDb29yZGluYXRlcyA9IHRleHR1cmVDb29yZGluYXRlc0JvdHRvbUxlZnQgKyBkaXJlY3Rpb24gKiB0ZXh0dXJlQ29vcmRpbmF0ZXNSYW5nZTsKI2Vsc2UKICAgIHZlYzIgZGlyZWN0aW9uOwogICAgZGlyZWN0aW9uLnggPSBmbG9vcihjb21wcmVzc2VkICogU0hJRlRfUklHSFQxKTsKICAgIGRpcmVjdGlvbi55ID0gY29tcHJlc3NlZCAtIGRpcmVjdGlvbi54ICogU0hJRlRfTEVGVDE7CgogICAgdmVjMiB0ZXh0dXJlQ29vcmRpbmF0ZXMgPSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhjb21wcmVzc2VkQXR0cmlidXRlMC53KTsKI2VuZGlmCgogICAgZmxvYXQgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUwLnkgICogU0hJRlRfUklHSFQ4OwogICAgcGl4ZWxPZmZzZXQueSA9IC0oZmxvb3IodGVtcCkgLSBVUFBFUl9CT1VORCk7CgogICAgdmVjMiB0cmFuc2xhdGU7CiAgICB0cmFuc2xhdGUueSA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDE2OwoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMC56ICogU0hJRlRfUklHSFQ4OwogICAgdHJhbnNsYXRlLnggPSBmbG9vcih0ZW1wKSAtIFVQUEVSX0JPVU5EOwoKICAgIHRyYW5zbGF0ZS55ICs9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICB0cmFuc2xhdGUueSAtPSBVUFBFUl9CT1VORDsKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTEueCAqIFNISUZUX1JJR0hUODsKICAgIGZsb2F0IHRlbXAyID0gZmxvb3IoY29tcHJlc3NlZEF0dHJpYnV0ZTIudyAqIFNISUZUX1JJR0hUMik7CgogICAgdmVjMiBpbWFnZVNpemUgPSB2ZWMyKGZsb29yKHRlbXApLCB0ZW1wMik7CgojaWZkZWYgRlJBR01FTlRfREVQVEhfQ0hFQ0sKICAgIGZsb2F0IGxhYmVsSG9yaXpvbnRhbE9yaWdpbiA9IGZsb29yKGNvbXByZXNzZWRBdHRyaWJ1dGUyLncgLSAodGVtcDIgKiBTSElGVF9MRUZUMikpOwogICAgZmxvYXQgYXBwbHlUcmFuc2xhdGUgPSAwLjA7CiAgICBpZiAobGFiZWxIb3Jpem9udGFsT3JpZ2luICE9IDAuMCkgLy8gaXMgYSBiaWxsYm9hcmQsIHNvIHNldCBhcHBseSB0cmFuc2xhdGUgdG8gZmFsc2UKICAgIHsKICAgICAgICBhcHBseVRyYW5zbGF0ZSA9IDEuMDsKICAgICAgICBsYWJlbEhvcml6b250YWxPcmlnaW4gLT0gMi4wOwogICAgICAgIGRlcHRoT3JpZ2luLnggPSBsYWJlbEhvcml6b250YWxPcmlnaW4gKyAxLjA7CiAgICB9CgogICAgZGVwdGhPcmlnaW4gPSB2ZWMyKDEuMCkgLSAoZGVwdGhPcmlnaW4gKiAwLjUpOwojZW5kaWYKCiNpZmRlZiBFWUVfRElTVEFOQ0VfVFJBTlNMVUNFTkNZCiAgICB2ZWM0IHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U7CiAgICB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLnggPSBjb21wcmVzc2VkQXR0cmlidXRlMS56OwogICAgdHJhbnNsdWNlbmN5QnlEaXN0YW5jZS56ID0gY29tcHJlc3NlZEF0dHJpYnV0ZTEudzsKCiAgICB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLnkgPSAoKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUOCkgLyAyNTUuMDsKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTEueSAqIFNISUZUX1JJR0hUODsKICAgIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UudyA9ICgodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4KSAvIDI1NS4wOwojZW5kaWYKCiNpZiBkZWZpbmVkKFZFUlRFWF9ERVBUSF9DSEVDSykgfHwgZGVmaW5lZChGUkFHTUVOVF9ERVBUSF9DSEVDSykKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMy53OwogICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDEyOwoKICAgIHZlYzIgZGltZW5zaW9uczsKICAgIGRpbWVuc2lvbnMueSA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDEyOwogICAgZGltZW5zaW9ucy54ID0gZmxvb3IodGVtcCk7CiNlbmRpZgoKI2lmZGVmIEFMSUdORURfQVhJUwogICAgdmVjMyBhbGlnbmVkQXhpcyA9IGN6bV9vY3REZWNvZGUoZmxvb3IoY29tcHJlc3NlZEF0dHJpYnV0ZTEueSAqIFNISUZUX1JJR0hUOCkpOwogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLnogKiBTSElGVF9SSUdIVDU7CiAgICBib29sIHZhbGlkQWxpZ25lZEF4aXMgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQxID4gMC4wOwojZWxzZQogICAgdmVjMyBhbGlnbmVkQXhpcyA9IHZlYzMoMC4wKTsKICAgIGJvb2wgdmFsaWRBbGlnbmVkQXhpcyA9IGZhbHNlOwojZW5kaWYKCiAgICB2ZWM0IHBpY2tDb2xvcjsKICAgIHZlYzQgY29sb3I7CgogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLnk7CiAgICB0ZW1wID0gdGVtcCAqIFNISUZUX1JJR0hUODsKICAgIHBpY2tDb2xvci5iID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHRlbXAgPSBmbG9vcih0ZW1wKSAqIFNISUZUX1JJR0hUODsKICAgIHBpY2tDb2xvci5nID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHBpY2tDb2xvci5yID0gZmxvb3IodGVtcCk7CgogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLng7CiAgICB0ZW1wID0gdGVtcCAqIFNISUZUX1JJR0hUODsKICAgIGNvbG9yLmIgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwogICAgY29sb3IuZyA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICBjb2xvci5yID0gZmxvb3IodGVtcCk7CgogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLnogKiBTSElGVF9SSUdIVDg7CiAgICBib29sIHNpemVJbk1ldGVycyA9IGZsb29yKCh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDcpID4gMC4wOwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwoKICAgIHBpY2tDb2xvci5hID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHBpY2tDb2xvciAvPSAyNTUuMDsKCiAgICBjb2xvci5hID0gZmxvb3IodGVtcCk7CiAgICBjb2xvciAvPSAyNTUuMDsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB2ZWM0IHAgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShwb3NpdGlvbkhpZ2gsIHBvc2l0aW9uTG93KTsKICAgIHZlYzQgcG9zaXRpb25FQyA9IGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogcDsKCiNpZiBkZWZpbmVkKEZSQUdNRU5UX0RFUFRIX0NIRUNLKSB8fCBkZWZpbmVkKFZFUlRFWF9ERVBUSF9DSEVDSykKICAgIGZsb2F0IGV5ZURlcHRoID0gcG9zaXRpb25FQy56OwojZW5kaWYKCiAgICBwb3NpdGlvbkVDID0gY3ptX2V5ZU9mZnNldChwb3NpdGlvbkVDLCBleWVPZmZzZXQueHl6KTsKICAgIHBvc2l0aW9uRUMueHl6ICo9IHNob3c7CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgojaWYgZGVmaW5lZChFWUVfRElTVEFOQ0VfU0NBTElORykgfHwgZGVmaW5lZChFWUVfRElTVEFOQ0VfVFJBTlNMVUNFTkNZKSB8fCBkZWZpbmVkKEVZRV9ESVNUQU5DRV9QSVhFTF9PRkZTRVQpIHx8IGRlZmluZWQoRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT04pIHx8IGRlZmluZWQoRElTQUJMRV9ERVBUSF9ESVNUQU5DRSkKICAgIGZsb2F0IGxlbmd0aFNxOwogICAgaWYgKGN6bV9zY2VuZU1vZGUgPT0gY3ptX3NjZW5lTW9kZTJEKQogICAgewogICAgICAgIC8vIDJEIGNhbWVyYSBkaXN0YW5jZSBpcyBhIHNwZWNpYWwgY2FzZQogICAgICAgIC8vIHRyZWF0IGFsbCBiaWxsYm9hcmRzIGFzIGZsYXR0ZW5lZCB0byB0aGUgej0wLjAgcGxhbmUKICAgICAgICBsZW5ndGhTcSA9IGN6bV9leWVIZWlnaHQyRC55OwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGxlbmd0aFNxID0gZG90KHBvc2l0aW9uRUMueHl6LCBwb3NpdGlvbkVDLnh5eik7CiAgICB9CiNlbmRpZgoKI2lmZGVmIEVZRV9ESVNUQU5DRV9TQ0FMSU5HCiAgICBmbG9hdCBkaXN0YW5jZVNjYWxlID0gY3ptX25lYXJGYXJTY2FsYXIoc2NhbGVCeURpc3RhbmNlLCBsZW5ndGhTcSk7CiAgICBzY2FsZSAqPSBkaXN0YW5jZVNjYWxlOwogICAgdHJhbnNsYXRlICo9IGRpc3RhbmNlU2NhbGU7CiAgICAvLyBwdXNoIHZlcnRleCBiZWhpbmQgbmVhciBwbGFuZSBmb3IgY2xpcHBpbmcKICAgIGlmIChzY2FsZSA9PSAwLjApCiAgICB7CiAgICAgICAgcG9zaXRpb25FQy54eXogPSB2ZWMzKDAuMCk7CiAgICB9CiNlbmRpZgoKICAgIGZsb2F0IHRyYW5zbHVjZW5jeSA9IDEuMDsKI2lmZGVmIEVZRV9ESVNUQU5DRV9UUkFOU0xVQ0VOQ1kKICAgIHRyYW5zbHVjZW5jeSA9IGN6bV9uZWFyRmFyU2NhbGFyKHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsIGxlbmd0aFNxKTsKICAgIC8vIHB1c2ggdmVydGV4IGJlaGluZCBuZWFyIHBsYW5lIGZvciBjbGlwcGluZwogICAgaWYgKHRyYW5zbHVjZW5jeSA9PSAwLjApCiAgICB7CiAgICAgICAgcG9zaXRpb25FQy54eXogPSB2ZWMzKDAuMCk7CiAgICB9CiNlbmRpZgoKI2lmZGVmIEVZRV9ESVNUQU5DRV9QSVhFTF9PRkZTRVQKICAgIGZsb2F0IHBpeGVsT2Zmc2V0U2NhbGUgPSBjem1fbmVhckZhclNjYWxhcihwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSwgbGVuZ3RoU3EpOwogICAgcGl4ZWxPZmZzZXQgKj0gcGl4ZWxPZmZzZXRTY2FsZTsKI2VuZGlmCgojaWZkZWYgRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT04KICAgIGZsb2F0IG5lYXJTcSA9IGNvbXByZXNzZWRBdHRyaWJ1dGUzLng7CiAgICBmbG9hdCBmYXJTcSA9IGNvbXByZXNzZWRBdHRyaWJ1dGUzLnk7CiAgICBpZiAobGVuZ3RoU3EgPCBuZWFyU3EgfHwgbGVuZ3RoU3EgPiBmYXJTcSkKICAgIHsKICAgICAgICBwb3NpdGlvbkVDLnh5eiA9IHZlYzMoMC4wKTsKICAgIH0KI2VuZGlmCgogICAgbWF0MiByb3RhdGlvbk1hdHJpeDsKICAgIGZsb2F0IG1wcDsKCiNpZmRlZiBESVNBQkxFX0RFUFRIX0RJU1RBTkNFCiAgICBmbG9hdCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBjb21wcmVzc2VkQXR0cmlidXRlMy56OwojZW5kaWYKCiNpZmRlZiBWRVJURVhfREVQVEhfQ0hFQ0sKaWYgKGxlbmd0aFNxIDwgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlKSB7CiAgICBmbG9hdCBkZXB0aHNpbG9uID0gMTAuMDsKCiAgICB2ZWMyIGxhYmVsVHJhbnNsYXRlID0gdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHNPckxhYmVsVHJhbnNsYXRlLnh5OwogICAgdmVjNCBwRUMxID0gYWRkU2NyZWVuU3BhY2VPZmZzZXQocG9zaXRpb25FQywgZGltZW5zaW9ucywgc2NhbGUsIHZlYzIoMC4wKSwgb3JpZ2luLCBsYWJlbFRyYW5zbGF0ZSwgcGl4ZWxPZmZzZXQsIGFsaWduZWRBeGlzLCB2YWxpZEFsaWduZWRBeGlzLCByb3RhdGlvbiwgc2l6ZUluTWV0ZXJzLCByb3RhdGlvbk1hdHJpeCwgbXBwKTsKICAgIGZsb2F0IGdsb2JlRGVwdGgxID0gZ2V0R2xvYmVEZXB0aChwRUMxKTsKCiAgICBpZiAoZ2xvYmVEZXB0aDEgIT0gMC4wICYmIHBFQzEueiArIGRlcHRoc2lsb24gPCBnbG9iZURlcHRoMSkKICAgIHsKICAgICAgICB2ZWM0IHBFQzIgPSBhZGRTY3JlZW5TcGFjZU9mZnNldChwb3NpdGlvbkVDLCBkaW1lbnNpb25zLCBzY2FsZSwgdmVjMigwLjAsIDEuMCksIG9yaWdpbiwgbGFiZWxUcmFuc2xhdGUsIHBpeGVsT2Zmc2V0LCBhbGlnbmVkQXhpcywgdmFsaWRBbGlnbmVkQXhpcywgcm90YXRpb24sIHNpemVJbk1ldGVycywgcm90YXRpb25NYXRyaXgsIG1wcCk7CiAgICAgICAgZmxvYXQgZ2xvYmVEZXB0aDIgPSBnZXRHbG9iZURlcHRoKHBFQzIpOwoKICAgICAgICBpZiAoZ2xvYmVEZXB0aDIgIT0gMC4wICYmIHBFQzIueiArIGRlcHRoc2lsb24gPCBnbG9iZURlcHRoMikKICAgICAgICB7CiAgICAgICAgICAgIHZlYzQgcEVDMyA9IGFkZFNjcmVlblNwYWNlT2Zmc2V0KHBvc2l0aW9uRUMsIGRpbWVuc2lvbnMsIHNjYWxlLCB2ZWMyKDEuMCksIG9yaWdpbiwgbGFiZWxUcmFuc2xhdGUsIHBpeGVsT2Zmc2V0LCBhbGlnbmVkQXhpcywgdmFsaWRBbGlnbmVkQXhpcywgcm90YXRpb24sIHNpemVJbk1ldGVycywgcm90YXRpb25NYXRyaXgsIG1wcCk7CiAgICAgICAgICAgIGZsb2F0IGdsb2JlRGVwdGgzID0gZ2V0R2xvYmVEZXB0aChwRUMzKTsKICAgICAgICAgICAgaWYgKGdsb2JlRGVwdGgzICE9IDAuMCAmJiBwRUMzLnogKyBkZXB0aHNpbG9uIDwgZ2xvYmVEZXB0aDMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uRUMueHl6ID0gdmVjMygwLjApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CiNlbmRpZgoKICAgIHBvc2l0aW9uRUMgPSBhZGRTY3JlZW5TcGFjZU9mZnNldChwb3NpdGlvbkVDLCBpbWFnZVNpemUsIHNjYWxlLCBkaXJlY3Rpb24sIG9yaWdpbiwgdHJhbnNsYXRlLCBwaXhlbE9mZnNldCwgYWxpZ25lZEF4aXMsIHZhbGlkQWxpZ25lZEF4aXMsIHJvdGF0aW9uLCBzaXplSW5NZXRlcnMsIHJvdGF0aW9uTWF0cml4LCBtcHApOwogICAgZ2xfUG9zaXRpb24gPSBjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUM7CiAgICB2X3RleHR1cmVDb29yZGluYXRlcyA9IHRleHR1cmVDb29yZGluYXRlczsKCiNpZmRlZiBMT0dfREVQVEgKICAgIGN6bV92ZXJ0ZXhMb2dEZXB0aCgpOwojZW5kaWYKCiNpZmRlZiBESVNBQkxFX0RFUFRIX0RJU1RBTkNFCiAgICBpZiAoZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlID09IDAuMCAmJiBjem1fbWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZSAhPSAwLjApCiAgICB7CiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlID0gY3ptX21pbmltdW1EaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U7CiAgICB9CgogICAgaWYgKGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSAhPSAwLjApCiAgICB7CiAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvICJtdWx0aXBseSBib3RoIHNpZGVzIiBieSB3LiAgR3JlYXRlci9sZXNzLXRoYW4gY29tcGFyaXNvbnMgd29uJ3Qgd29yayBmb3IgbmVnYXRpdmUgdmFsdWVzIG9mIHcuCiAgICAgICAgZmxvYXQgemNsaXAgPSBnbF9Qb3NpdGlvbi56IC8gZ2xfUG9zaXRpb24udzsKICAgICAgICBib29sIGNsaXBwZWQgPSAoemNsaXAgPCAtMS4wIHx8IHpjbGlwID4gMS4wKTsKICAgICAgICBpZiAoIWNsaXBwZWQgJiYgKGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSA8IDAuMCB8fCAobGVuZ3RoU3EgPiAwLjAgJiYgbGVuZ3RoU3EgPCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UpKSkKICAgICAgICB7CiAgICAgICAgICAgIC8vIFBvc2l0aW9uIHogb24gdGhlIG5lYXIgcGxhbmUuCiAgICAgICAgICAgIGdsX1Bvc2l0aW9uLnogPSAtZ2xfUG9zaXRpb24udzsKI2lmZGVmIExPR19ERVBUSAogICAgICAgICAgICB2X2RlcHRoRnJvbU5lYXJQbHVzT25lID0gMS4wOwojZW5kaWYKICAgICAgICB9CiAgICB9CiNlbmRpZgoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCiAgICBpZiAoc2l6ZUluTWV0ZXJzKSB7CiAgICAgICAgdHJhbnNsYXRlIC89IG1wcDsKICAgICAgICBkaW1lbnNpb25zIC89IG1wcDsKICAgICAgICBpbWFnZVNpemUgLz0gbXBwOwogICAgfQoKI2lmIGRlZmluZWQoUk9UQVRJT04pIHx8IGRlZmluZWQoQUxJR05FRF9BWElTKQogICAgdl9yb3RhdGlvbk1hdHJpeCA9IHJvdGF0aW9uTWF0cml4OwojZWxzZQogICAgdl9yb3RhdGlvbk1hdHJpeCA9IG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKTsKI2VuZGlmCgogICAgZmxvYXQgZW5hYmxlRGVwdGhDaGVjayA9IDAuMDsKICAgIGlmIChsZW5ndGhTcSA8IGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkKICAgIHsKICAgICAgICBlbmFibGVEZXB0aENoZWNrID0gMS4wOwogICAgfQoKICAgIGZsb2F0IGR3ID0gZmxvb3IoY2xhbXAoZGltZW5zaW9ucy54LCAwLjAsIFNISUZUX0xFRlQxMikpOwogICAgZmxvYXQgZGggPSBmbG9vcihjbGFtcChkaW1lbnNpb25zLnksIDAuMCwgU0hJRlRfTEVGVDEyKSk7CgogICAgZmxvYXQgaXcgPSBmbG9vcihjbGFtcChpbWFnZVNpemUueCwgMC4wLCBTSElGVF9MRUZUMTIpKTsKICAgIGZsb2F0IGloID0gZmxvb3IoY2xhbXAoaW1hZ2VTaXplLnksIDAuMCwgU0hJRlRfTEVGVDEyKSk7CgogICAgdl9jb21wcmVzc2VkLnggPSBleWVEZXB0aDsKICAgIHZfY29tcHJlc3NlZC55ID0gYXBwbHlUcmFuc2xhdGUgKiBTSElGVF9MRUZUMSArIGVuYWJsZURlcHRoQ2hlY2s7CiAgICB2X2NvbXByZXNzZWQueiA9IGR3ICogU0hJRlRfTEVGVDEyICsgZGg7CiAgICB2X2NvbXByZXNzZWQudyA9IGl3ICogU0hJRlRfTEVGVDEyICsgaWg7CiAgICB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnh5ID0gZGVwdGhPcmlnaW47CiAgICB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnp3ID0gdHJhbnNsYXRlOwogICAgdl90ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kcyA9IHRleHR1cmVDb29yZGluYXRlQm91bmRzT3JMYWJlbFRyYW5zbGF0ZTsKCiNlbmRpZgoKI2lmZGVmIFNERgogICAgdmVjNCBvdXRsaW5lQ29sb3I7CiAgICBmbG9hdCBvdXRsaW5lV2lkdGg7CgogICAgdGVtcCA9IHNkZi54OwogICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDg7CiAgICBvdXRsaW5lQ29sb3IuYiA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICB0ZW1wID0gZmxvb3IodGVtcCkgKiBTSElGVF9SSUdIVDg7CiAgICBvdXRsaW5lQ29sb3IuZyA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICBvdXRsaW5lQ29sb3IuciA9IGZsb29yKHRlbXApOwoKICAgIHRlbXAgPSBzZGYueTsKICAgIHRlbXAgPSB0ZW1wICogU0hJRlRfUklHSFQ4OwogICAgZmxvYXQgdGVtcDMgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwogICAgb3V0bGluZVdpZHRoID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIG91dGxpbmVDb2xvci5hID0gZmxvb3IodGVtcCk7CiAgICBvdXRsaW5lQ29sb3IgLz0gMjU1LjA7CgogICAgdl9vdXRsaW5lV2lkdGggPSBvdXRsaW5lV2lkdGggLyAyNTUuMDsKICAgIHZfb3V0bGluZUNvbG9yID0gb3V0bGluZUNvbG9yOwogICAgdl9vdXRsaW5lQ29sb3IuYSAqPSB0cmFuc2x1Y2VuY3k7CiNlbmRpZgoKICAgIHZfcGlja0NvbG9yID0gcGlja0NvbG9yOwoKICAgIHZfY29sb3IgPSBjb2xvcjsKICAgIHZfY29sb3IuYSAqPSB0cmFuc2x1Y2VuY3k7Cgp9CmB9KTt2YXIgQnR0LFlsLExMPU8oKCk9PntzcygpO0J0dD17QUREOml0LkZVTkNfQURELFNVQlRSQUNUOml0LkZVTkNfU1VCVFJBQ1QsUkVWRVJTRV9TVUJUUkFDVDppdC5GVU5DX1JFVkVSU0VfU1VCVFJBQ1QsTUlOOml0Lk1JTixNQVg6aXQuTUFYfSxZbD1PYmplY3QuZnJlZXplKEJ0dCl9KTt2YXIgV3R0LFJyLHlMPU8oKCk9PntzcygpO1d0dD17WkVSTzppdC5aRVJPLE9ORTppdC5PTkUsU09VUkNFX0NPTE9SOml0LlNSQ19DT0xPUixPTkVfTUlOVVNfU09VUkNFX0NPTE9SOml0Lk9ORV9NSU5VU19TUkNfQ09MT1IsREVTVElOQVRJT05fQ09MT1I6aXQuRFNUX0NPTE9SLE9ORV9NSU5VU19ERVNUSU5BVElPTl9DT0xPUjppdC5PTkVfTUlOVVNfRFNUX0NPTE9SLFNPVVJDRV9BTFBIQTppdC5TUkNfQUxQSEEsT05FX01JTlVTX1NPVVJDRV9BTFBIQTppdC5PTkVfTUlOVVNfU1JDX0FMUEhBLERFU1RJTkFUSU9OX0FMUEhBOml0LkRTVF9BTFBIQSxPTkVfTUlOVVNfREVTVElOQVRJT05fQUxQSEE6aXQuT05FX01JTlVTX0RTVF9BTFBIQSxDT05TVEFOVF9DT0xPUjppdC5DT05TVEFOVF9DT0xPUixPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6aXQuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLENPTlNUQU5UX0FMUEhBOml0LkNPTlNUQU5UX0FMUEhBLE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQTppdC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsU09VUkNFX0FMUEhBX1NBVFVSQVRFOml0LlNSQ19BTFBIQV9TQVRVUkFURX0sUnI9T2JqZWN0LmZyZWV6ZShXdHQpfSk7dmFyIER0dCxVcixrbT1PKCgpPT57TEwoKTt5TCgpO0R0dD17RElTQUJMRUQ6T2JqZWN0LmZyZWV6ZSh7ZW5hYmxlZDohMX0pLEFMUEhBX0JMRU5EOk9iamVjdC5mcmVlemUoe2VuYWJsZWQ6ITAsZXF1YXRpb25SZ2I6WWwuQURELGVxdWF0aW9uQWxwaGE6WWwuQURELGZ1bmN0aW9uU291cmNlUmdiOlJyLlNPVVJDRV9BTFBIQSxmdW5jdGlvblNvdXJjZUFscGhhOlJyLk9ORSxmdW5jdGlvbkRlc3RpbmF0aW9uUmdiOlJyLk9ORV9NSU5VU19TT1VSQ0VfQUxQSEEsZnVuY3Rpb25EZXN0aW5hdGlvbkFscGhhOlJyLk9ORV9NSU5VU19TT1VSQ0VfQUxQSEF9KSxQUkVfTVVMVElQTElFRF9BTFBIQV9CTEVORDpPYmplY3QuZnJlZXplKHtlbmFibGVkOiEwLGVxdWF0aW9uUmdiOllsLkFERCxlcXVhdGlvbkFscGhhOllsLkFERCxmdW5jdGlvblNvdXJjZVJnYjpSci5PTkUsZnVuY3Rpb25Tb3VyY2VBbHBoYTpSci5PTkUsZnVuY3Rpb25EZXN0aW5hdGlvblJnYjpSci5PTkVfTUlOVVNfU09VUkNFX0FMUEhBLGZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYTpSci5PTkVfTUlOVVNfU09VUkNFX0FMUEhBfSksQURESVRJVkVfQkxFTkQ6T2JqZWN0LmZyZWV6ZSh7ZW5hYmxlZDohMCxlcXVhdGlvblJnYjpZbC5BREQsZXF1YXRpb25BbHBoYTpZbC5BREQsZnVuY3Rpb25Tb3VyY2VSZ2I6UnIuU09VUkNFX0FMUEhBLGZ1bmN0aW9uU291cmNlQWxwaGE6UnIuT05FLGZ1bmN0aW9uRGVzdGluYXRpb25SZ2I6UnIuT05FLGZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYTpSci5PTkV9KX0sVXI9T2JqZWN0LmZyZWV6ZShEdHQpfSk7dmFyIE10dCxXbixFST1PKCgpPT57TXR0PXtPUEFRVUU6MCxUUkFOU0xVQ0VOVDoxLE9QQVFVRV9BTkRfVFJBTlNMVUNFTlQ6Mn0sV249T2JqZWN0LmZyZWV6ZShNdHQpfSk7dmFyIFV0dCxwbyxfST1PKCgpPT57VXR0PXtGT05UX1NJWkU6NDgsUEFERElORzoxMCxSQURJVVM6OCxDVVRPRkY6LjI1fSxwbz1PYmplY3QuZnJlZXplKFV0dCl9KTt2YXIgU2ksZ2UsRWM9TygoKT0+e3NzKCk7U2k9e1VOU0lHTkVEX0JZVEU6aXQuVU5TSUdORURfQllURSxVTlNJR05FRF9TSE9SVDppdC5VTlNJR05FRF9TSE9SVCxVTlNJR05FRF9JTlQ6aXQuVU5TSUdORURfSU5ULEZMT0FUOml0LkZMT0FULEhBTEZfRkxPQVQ6aXQuSEFMRl9GTE9BVF9PRVMsVU5TSUdORURfSU5UXzI0Xzg6aXQuVU5TSUdORURfSU5UXzI0XzgsVU5TSUdORURfU0hPUlRfNF80XzRfNDppdC5VTlNJR05FRF9TSE9SVF80XzRfNF80LFVOU0lHTkVEX1NIT1JUXzVfNV81XzE6aXQuVU5TSUdORURfU0hPUlRfNV81XzVfMSxVTlNJR05FRF9TSE9SVF81XzZfNTppdC5VTlNJR05FRF9TSE9SVF81XzZfNX07U2kudG9XZWJHTENvbnN0YW50PWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQpe2Nhc2UgU2kuVU5TSUdORURfQllURTpyZXR1cm4gaXQuVU5TSUdORURfQllURTtjYXNlIFNpLlVOU0lHTkVEX1NIT1JUOnJldHVybiBpdC5VTlNJR05FRF9TSE9SVDtjYXNlIFNpLlVOU0lHTkVEX0lOVDpyZXR1cm4gaXQuVU5TSUdORURfSU5UO2Nhc2UgU2kuRkxPQVQ6cmV0dXJuIGl0LkZMT0FUO2Nhc2UgU2kuSEFMRl9GTE9BVDpyZXR1cm4gZS53ZWJnbDI/aXQuSEFMRl9GTE9BVDppdC5IQUxGX0ZMT0FUX09FUztjYXNlIFNpLlVOU0lHTkVEX0lOVF8yNF84OnJldHVybiBpdC5VTlNJR05FRF9JTlRfMjRfODtjYXNlIFNpLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6cmV0dXJuIGl0LlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ7Y2FzZSBTaS5VTlNJR05FRF9TSE9SVF81XzVfNV8xOnJldHVybiBpdC5VTlNJR05FRF9TSE9SVF81XzVfNV8xO2Nhc2UgU2kuVU5TSUdORURfU0hPUlRfNV82XzU6cmV0dXJuIFNpLlVOU0lHTkVEX1NIT1JUXzVfNl81fX07U2kuaXNQYWNrZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1TaS5VTlNJR05FRF9JTlRfMjRfOHx8dD09PVNpLlVOU0lHTkVEX1NIT1JUXzRfNF80XzR8fHQ9PT1TaS5VTlNJR05FRF9TSE9SVF81XzVfNV8xfHx0PT09U2kuVU5TSUdORURfU0hPUlRfNV82XzV9O1NpLnNpemVJbkJ5dGVzPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIFNpLlVOU0lHTkVEX0JZVEU6cmV0dXJuIDE7Y2FzZSBTaS5VTlNJR05FRF9TSE9SVDpjYXNlIFNpLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6Y2FzZSBTaS5VTlNJR05FRF9TSE9SVF81XzVfNV8xOmNhc2UgU2kuVU5TSUdORURfU0hPUlRfNV82XzU6Y2FzZSBTaS5IQUxGX0ZMT0FUOnJldHVybiAyO2Nhc2UgU2kuVU5TSUdORURfSU5UOmNhc2UgU2kuRkxPQVQ6Y2FzZSBTaS5VTlNJR05FRF9JTlRfMjRfODpyZXR1cm4gNH19O1NpLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09U2kuVU5TSUdORURfQllURXx8dD09PVNpLlVOU0lHTkVEX1NIT1JUfHx0PT09U2kuVU5TSUdORURfSU5UfHx0PT09U2kuRkxPQVR8fHQ9PT1TaS5IQUxGX0ZMT0FUfHx0PT09U2kuVU5TSUdORURfSU5UXzI0Xzh8fHQ9PT1TaS5VTlNJR05FRF9TSE9SVF80XzRfNF80fHx0PT09U2kuVU5TSUdORURfU0hPUlRfNV81XzVfMXx8dD09PVNpLlVOU0lHTkVEX1NIT1JUXzVfNl81fTtnZT1PYmplY3QuZnJlZXplKFNpKX0pO3ZhciB2dCxJZSxfYz1PKCgpPT57RWMoKTtzcygpO3Z0PXtERVBUSF9DT01QT05FTlQ6aXQuREVQVEhfQ09NUE9ORU5ULERFUFRIX1NURU5DSUw6aXQuREVQVEhfU1RFTkNJTCxBTFBIQTppdC5BTFBIQSxSRUQ6aXQuUkVELFJHOml0LlJHLFJHQjppdC5SR0IsUkdCQTppdC5SR0JBLExVTUlOQU5DRTppdC5MVU1JTkFOQ0UsTFVNSU5BTkNFX0FMUEhBOml0LkxVTUlOQU5DRV9BTFBIQSxSR0JfRFhUMTppdC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULFJHQkFfRFhUMTppdC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCxSR0JBX0RYVDM6aXQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsUkdCQV9EWFQ1Oml0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhULFJHQl9QVlJUQ180QlBQVjE6aXQuQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyxSR0JfUFZSVENfMkJQUFYxOml0LkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9QVlJUQ180QlBQVjE6aXQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcsUkdCQV9QVlJUQ18yQlBQVjE6aXQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9BU1RDOml0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9XRUJHTCxSR0JfRVRDMTppdC5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMLFJHQjhfRVRDMjppdC5DT01QUkVTU0VEX1JHQjhfRVRDMixSR0JBOF9FVEMyX0VBQzppdC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLFJHQkFfQkM3Oml0LkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNfTt2dC5jb21wb25lbnRzTGVuZ3RoPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIHZ0LlJHQjpyZXR1cm4gMztjYXNlIHZ0LlJHQkE6cmV0dXJuIDQ7Y2FzZSB2dC5MVU1JTkFOQ0VfQUxQSEE6Y2FzZSB2dC5SRzpyZXR1cm4gMjtjYXNlIHZ0LkFMUEhBOmNhc2UgdnQuUkVEOmNhc2UgdnQuTFVNSU5BTkNFOnJldHVybiAxO2RlZmF1bHQ6cmV0dXJuIDF9fTt2dC52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LkRFUFRIX0NPTVBPTkVOVHx8dD09PXZ0LkRFUFRIX1NURU5DSUx8fHQ9PT12dC5BTFBIQXx8dD09PXZ0LlJFRHx8dD09PXZ0LlJHfHx0PT09dnQuUkdCfHx0PT09dnQuUkdCQXx8dD09PXZ0LkxVTUlOQU5DRXx8dD09PXZ0LkxVTUlOQU5DRV9BTFBIQXx8dD09PXZ0LlJHQl9EWFQxfHx0PT09dnQuUkdCQV9EWFQxfHx0PT09dnQuUkdCQV9EWFQzfHx0PT09dnQuUkdCQV9EWFQ1fHx0PT09dnQuUkdCX1BWUlRDXzRCUFBWMXx8dD09PXZ0LlJHQl9QVlJUQ18yQlBQVjF8fHQ9PT12dC5SR0JBX1BWUlRDXzRCUFBWMXx8dD09PXZ0LlJHQkFfUFZSVENfMkJQUFYxfHx0PT09dnQuUkdCQV9BU1RDfHx0PT09dnQuUkdCX0VUQzF8fHQ9PT12dC5SR0I4X0VUQzJ8fHQ9PT12dC5SR0JBOF9FVEMyX0VBQ3x8dD09PXZ0LlJHQkFfQkM3fTt2dC5pc0NvbG9yRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkVEfHx0PT09dnQuQUxQSEF8fHQ9PT12dC5SR0J8fHQ9PT12dC5SR0JBfHx0PT09dnQuTFVNSU5BTkNFfHx0PT09dnQuTFVNSU5BTkNFX0FMUEhBfTt2dC5pc0RlcHRoRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuREVQVEhfQ09NUE9ORU5UfHx0PT09dnQuREVQVEhfU1RFTkNJTH07dnQuaXNDb21wcmVzc2VkRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkdCX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDN8fHQ9PT12dC5SR0JBX0RYVDV8fHQ9PT12dC5SR0JfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCX1BWUlRDXzJCUFBWMXx8dD09PXZ0LlJHQkFfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCQV9QVlJUQ18yQlBQVjF8fHQ9PT12dC5SR0JBX0FTVEN8fHQ9PT12dC5SR0JfRVRDMXx8dD09PXZ0LlJHQjhfRVRDMnx8dD09PXZ0LlJHQkE4X0VUQzJfRUFDfHx0PT09dnQuUkdCQV9CQzd9O3Z0LmlzRFhURm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkdCX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDN8fHQ9PT12dC5SR0JBX0RYVDV9O3Z0LmlzUFZSVENGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT12dC5SR0JfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCX1BWUlRDXzJCUFBWMXx8dD09PXZ0LlJHQkFfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCQV9QVlJUQ18yQlBQVjF9O3Z0LmlzQVNUQ0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LlJHQkFfQVNUQ307dnQuaXNFVEMxRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkdCX0VUQzF9O3Z0LmlzRVRDMkZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LlJHQjhfRVRDMnx8dD09PXZ0LlJHQkE4X0VUQzJfRUFDfTt2dC5pc0JDN0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LlJHQkFfQkM3fTt2dC5jb21wcmVzc2VkVGV4dHVyZVNpemVJbkJ5dGVzPWZ1bmN0aW9uKHQsZSxpKXtzd2l0Y2godCl7Y2FzZSB2dC5SR0JfRFhUMTpjYXNlIHZ0LlJHQkFfRFhUMTpjYXNlIHZ0LlJHQl9FVEMxOmNhc2UgdnQuUkdCOF9FVEMyOnJldHVybiBNYXRoLmZsb29yKChlKzMpLzQpKk1hdGguZmxvb3IoKGkrMykvNCkqODtjYXNlIHZ0LlJHQkFfRFhUMzpjYXNlIHZ0LlJHQkFfRFhUNTpjYXNlIHZ0LlJHQkFfQVNUQzpjYXNlIHZ0LlJHQkE4X0VUQzJfRUFDOnJldHVybiBNYXRoLmZsb29yKChlKzMpLzQpKk1hdGguZmxvb3IoKGkrMykvNCkqMTY7Y2FzZSB2dC5SR0JfUFZSVENfNEJQUFYxOmNhc2UgdnQuUkdCQV9QVlJUQ180QlBQVjE6cmV0dXJuIE1hdGguZmxvb3IoKE1hdGgubWF4KGUsOCkqTWF0aC5tYXgoaSw4KSo0KzcpLzgpO2Nhc2UgdnQuUkdCX1BWUlRDXzJCUFBWMTpjYXNlIHZ0LlJHQkFfUFZSVENfMkJQUFYxOnJldHVybiBNYXRoLmZsb29yKChNYXRoLm1heChlLDE2KSpNYXRoLm1heChpLDgpKjIrNykvOCk7Y2FzZSB2dC5SR0JBX0JDNzpyZXR1cm4gTWF0aC5jZWlsKGUvNCkqTWF0aC5jZWlsKGkvNCkqMTY7ZGVmYXVsdDpyZXR1cm4gMH19O3Z0LnRleHR1cmVTaXplSW5CeXRlcz1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz12dC5jb21wb25lbnRzTGVuZ3RoKHQpO3JldHVybiBnZS5pc1BhY2tlZChlKSYmKHM9MSkscypnZS5zaXplSW5CeXRlcyhlKSppKm59O3Z0LmFsaWdubWVudEluQnl0ZXM9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXZ0LnRleHR1cmVTaXplSW5CeXRlcyh0LGUsaSwxKSU0O3JldHVybiBuPT09MD80Om49PT0yPzI6MX07dnQuY3JlYXRlVHlwZWRBcnJheT1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcyxvPWdlLnNpemVJbkJ5dGVzKGUpO289PT1VaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UP3M9VWludDhBcnJheTpvPT09VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ/cz1VaW50MTZBcnJheTpvPT09RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UJiZlPT09Z2UuRkxPQVQ/cz1GbG9hdDMyQXJyYXk6cz1VaW50MzJBcnJheTtsZXQgcj12dC5jb21wb25lbnRzTGVuZ3RoKHQpKmkqbjtyZXR1cm4gbmV3IHMocil9O3Z0LmZsaXBZPWZ1bmN0aW9uKHQsZSxpLG4scyl7aWYocz09PTEpcmV0dXJuIHQ7bGV0IG89dnQuY3JlYXRlVHlwZWRBcnJheShlLGksbixzKSxyPXZ0LmNvbXBvbmVudHNMZW5ndGgoZSksYT1uKnI7Zm9yKGxldCBoPTA7aDxzOysraCl7bGV0IEE9aCpuKnIsZD0ocy1oLTEpKm4qcjtmb3IobGV0IGY9MDtmPGE7KytmKW9bZCtmXT10W0ErZl19cmV0dXJuIG99O3Z0LnRvSW50ZXJuYWxGb3JtYXQ9ZnVuY3Rpb24odCxlLGkpe2lmKCFpLndlYmdsMilyZXR1cm4gdDtpZih0PT09dnQuREVQVEhfU1RFTkNJTClyZXR1cm4gaXQuREVQVEgyNF9TVEVOQ0lMODtpZih0PT09dnQuREVQVEhfQ09NUE9ORU5UKXtpZihlPT09Z2UuVU5TSUdORURfU0hPUlQpcmV0dXJuIGl0LkRFUFRIX0NPTVBPTkVOVDE2O2lmKGU9PT1nZS5VTlNJR05FRF9JTlQpcmV0dXJuIGl0LkRFUFRIX0NPTVBPTkVOVDI0fWlmKGU9PT1nZS5GTE9BVClzd2l0Y2godCl7Y2FzZSB2dC5SR0JBOnJldHVybiBpdC5SR0JBMzJGO2Nhc2UgdnQuUkdCOnJldHVybiBpdC5SR0IzMkY7Y2FzZSB2dC5SRzpyZXR1cm4gaXQuUkczMkY7Y2FzZSB2dC5SRUQ6cmV0dXJuIGl0LlIzMkZ9aWYoZT09PWdlLkhBTEZfRkxPQVQpc3dpdGNoKHQpe2Nhc2UgdnQuUkdCQTpyZXR1cm4gaXQuUkdCQTE2RjtjYXNlIHZ0LlJHQjpyZXR1cm4gaXQuUkdCMTZGO2Nhc2UgdnQuUkc6cmV0dXJuIGl0LlJHMTZGO2Nhc2UgdnQuUkVEOnJldHVybiBpdC5SMTZGfXJldHVybiB0fTtJZT1PYmplY3QuZnJlZXplKHZ0KX0pO2Z1bmN0aW9uIFdUKHQsZSxpKXtsZXQgbj10Ll9nbDtuLmZyYW1lYnVmZmVyVGV4dHVyZTJEKG4uRlJBTUVCVUZGRVIsZSxpLl90YXJnZXQsaS5fdGV4dHVyZSwwKX1mdW5jdGlvbiBSSSh0LGUsaSl7bGV0IG49dC5fZ2w7bi5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihuLkZSQU1FQlVGRkVSLGUsbi5SRU5ERVJCVUZGRVIsaS5fZ2V0UmVuZGVyYnVmZmVyKCkpfWZ1bmN0aW9uIFRhKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LmNvbnRleHQ7cC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLGUpO2xldCBpPWUuX2dsLG49ZW4ubWF4aW11bUNvbG9yQXR0YWNobWVudHM7aWYodGhpcy5fZ2w9aSx0aGlzLl9mcmFtZWJ1ZmZlcj1pLmNyZWF0ZUZyYW1lYnVmZmVyKCksdGhpcy5fY29sb3JUZXh0dXJlcz1bXSx0aGlzLl9jb2xvclJlbmRlcmJ1ZmZlcnM9W10sdGhpcy5fYWN0aXZlQ29sb3JBdHRhY2htZW50cz1bXSx0aGlzLl9kZXB0aFRleHR1cmU9dm9pZCAwLHRoaXMuX2RlcHRoUmVuZGVyYnVmZmVyPXZvaWQgMCx0aGlzLl9zdGVuY2lsUmVuZGVyYnVmZmVyPXZvaWQgMCx0aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlPXZvaWQgMCx0aGlzLl9kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXI9dm9pZCAwLHRoaXMuZGVzdHJveUF0dGFjaG1lbnRzPVoodC5kZXN0cm95QXR0YWNobWVudHMsITApLG0odC5jb2xvclRleHR1cmVzKSYmbSh0LmNvbG9yUmVuZGVyYnVmZmVycykpdGhyb3cgbmV3IFkoIkNhbm5vdCBoYXZlIGJvdGggY29sb3IgdGV4dHVyZSBhbmQgY29sb3IgcmVuZGVyYnVmZmVyIGF0dGFjaG1lbnRzLiIpO2lmKG0odC5kZXB0aFRleHR1cmUpJiZtKHQuZGVwdGhSZW5kZXJidWZmZXIpKXRocm93IG5ldyBZKCJDYW5ub3QgaGF2ZSBib3RoIGEgZGVwdGggdGV4dHVyZSBhbmQgZGVwdGggcmVuZGVyYnVmZmVyIGF0dGFjaG1lbnQuIik7aWYobSh0LmRlcHRoU3RlbmNpbFRleHR1cmUpJiZtKHQuZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKSl0aHJvdyBuZXcgWSgiQ2Fubm90IGhhdmUgYm90aCBhIGRlcHRoLXN0ZW5jaWwgdGV4dHVyZSBhbmQgZGVwdGgtc3RlbmNpbCByZW5kZXJidWZmZXIgYXR0YWNobWVudC4iKTtsZXQgcz1tKHQuZGVwdGhUZXh0dXJlKXx8bSh0LmRlcHRoUmVuZGVyYnVmZmVyKSxvPW0odC5kZXB0aFN0ZW5jaWxUZXh0dXJlKXx8bSh0LmRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcik7aWYocyYmbyl0aHJvdyBuZXcgWSgiQ2Fubm90IGhhdmUgYm90aCBhIGRlcHRoIGFuZCBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnQuIik7aWYobSh0LnN0ZW5jaWxSZW5kZXJidWZmZXIpJiZvKXRocm93IG5ldyBZKCJDYW5ub3QgaGF2ZSBib3RoIGEgc3RlbmNpbCBhbmQgZGVwdGgtc3RlbmNpbCBhdHRhY2htZW50LiIpO2lmKHMmJm0odC5zdGVuY2lsUmVuZGVyYnVmZmVyKSl0aHJvdyBuZXcgWSgiQ2Fubm90IGhhdmUgYm90aCBhIGRlcHRoIGFuZCBzdGVuY2lsIGF0dGFjaG1lbnQuIik7dGhpcy5fYmluZCgpO2xldCByLGEsaCxBLGQ7aWYobSh0LmNvbG9yVGV4dHVyZXMpKXtsZXQgZj10LmNvbG9yVGV4dHVyZXM7aWYoQT10aGlzLl9jb2xvclRleHR1cmVzLmxlbmd0aD10aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzLmxlbmd0aD1mLmxlbmd0aCxBPm4pdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgZXhjZWVkcyB0aGUgbnVtYmVyIHN1cHBvcnRlZC4iKTtmb3IoaD0wO2g8QTsrK2gpe2lmKHI9ZltoXSwhSWUuaXNDb2xvckZvcm1hdChyLnBpeGVsRm9ybWF0KSl0aHJvdyBuZXcgWSgiVGhlIGNvbG9yLXRleHR1cmUgcGl4ZWwtZm9ybWF0IG11c3QgYmUgYSBjb2xvciBmb3JtYXQuIik7aWYoci5waXhlbERhdGF0eXBlPT09Z2UuRkxPQVQmJiFlLmNvbG9yQnVmZmVyRmxvYXQpdGhyb3cgbmV3IFkoIlRoZSBjb2xvciB0ZXh0dXJlIHBpeGVsIGRhdGF0eXBlIGlzIEZMT0FUIGFuZCB0aGUgV2ViR0wgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCB0aGUgRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCBvciBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZXh0ZW5zaW9ucy4gU2VlIENvbnRleHQuY29sb3JCdWZmZXJGbG9hdC4iKTtpZihyLnBpeGVsRGF0YXR5cGU9PT1nZS5IQUxGX0ZMT0FUJiYhZS5jb2xvckJ1ZmZlckhhbGZGbG9hdCl0aHJvdyBuZXcgWSgiVGhlIGNvbG9yIHRleHR1cmUgcGl4ZWwgZGF0YXR5cGUgaXMgSEFMRl9GTE9BVCBhbmQgdGhlIFdlYkdMIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCBleHRlbnNpb24uIFNlZSBDb250ZXh0LmNvbG9yQnVmZmVySGFsZkZsb2F0LiIpO2Q9dGhpcy5fZ2wuQ09MT1JfQVRUQUNITUVOVDAraCxXVCh0aGlzLGQsciksdGhpcy5fYWN0aXZlQ29sb3JBdHRhY2htZW50c1toXT1kLHRoaXMuX2NvbG9yVGV4dHVyZXNbaF09cn19aWYobSh0LmNvbG9yUmVuZGVyYnVmZmVycykpe2xldCBmPXQuY29sb3JSZW5kZXJidWZmZXJzO2lmKEE9dGhpcy5fY29sb3JSZW5kZXJidWZmZXJzLmxlbmd0aD10aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzLmxlbmd0aD1mLmxlbmd0aCxBPm4pdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgZXhjZWVkcyB0aGUgbnVtYmVyIHN1cHBvcnRlZC4iKTtmb3IoaD0wO2g8QTsrK2gpYT1mW2hdLGQ9dGhpcy5fZ2wuQ09MT1JfQVRUQUNITUVOVDAraCxSSSh0aGlzLGQsYSksdGhpcy5fYWN0aXZlQ29sb3JBdHRhY2htZW50c1toXT1kLHRoaXMuX2NvbG9yUmVuZGVyYnVmZmVyc1toXT1hfWlmKG0odC5kZXB0aFRleHR1cmUpKXtpZihyPXQuZGVwdGhUZXh0dXJlLHIucGl4ZWxGb3JtYXQhPT1JZS5ERVBUSF9DT01QT05FTlQpdGhyb3cgbmV3IFkoIlRoZSBkZXB0aC10ZXh0dXJlIHBpeGVsLWZvcm1hdCBtdXN0IGJlIERFUFRIX0NPTVBPTkVOVC4iKTtXVCh0aGlzLHRoaXMuX2dsLkRFUFRIX0FUVEFDSE1FTlQsciksdGhpcy5fZGVwdGhUZXh0dXJlPXJ9aWYobSh0LmRlcHRoUmVuZGVyYnVmZmVyKSYmKGE9dC5kZXB0aFJlbmRlcmJ1ZmZlcixSSSh0aGlzLHRoaXMuX2dsLkRFUFRIX0FUVEFDSE1FTlQsYSksdGhpcy5fZGVwdGhSZW5kZXJidWZmZXI9YSksbSh0LnN0ZW5jaWxSZW5kZXJidWZmZXIpJiYoYT10LnN0ZW5jaWxSZW5kZXJidWZmZXIsUkkodGhpcyx0aGlzLl9nbC5TVEVOQ0lMX0FUVEFDSE1FTlQsYSksdGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlcj1hKSxtKHQuZGVwdGhTdGVuY2lsVGV4dHVyZSkpe2lmKHI9dC5kZXB0aFN0ZW5jaWxUZXh0dXJlLHIucGl4ZWxGb3JtYXQhPT1JZS5ERVBUSF9TVEVOQ0lMKXRocm93IG5ldyBZKCJUaGUgZGVwdGgtc3RlbmNpbCBwaXhlbC1mb3JtYXQgbXVzdCBiZSBERVBUSF9TVEVOQ0lMLiIpO1dUKHRoaXMsdGhpcy5fZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULHIpLHRoaXMuX2RlcHRoU3RlbmNpbFRleHR1cmU9cn1tKHQuZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKSYmKGE9dC5kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIsUkkodGhpcyx0aGlzLl9nbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsYSksdGhpcy5fZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyPWEpLHRoaXMuX3VuQmluZCgpfXZhciB3TCx4TD1PKCgpPT57YWUoKTtidCgpO210KCk7V3MoKTtWdCgpO19jKCk7Z2EoKTtFYygpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRhLnByb3RvdHlwZSx7c3RhdHVzOntnZXQ6ZnVuY3Rpb24oKXt0aGlzLl9iaW5kKCk7bGV0IHQ9dGhpcy5fZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0aGlzLl9nbC5GUkFNRUJVRkZFUik7cmV0dXJuIHRoaXMuX3VuQmluZCgpLHR9fSxudW1iZXJPZkNvbG9yQXR0YWNobWVudHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzLmxlbmd0aH19LGRlcHRoVGV4dHVyZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlcHRoVGV4dHVyZX19LGRlcHRoUmVuZGVyYnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVwdGhSZW5kZXJidWZmZXJ9fSxzdGVuY2lsUmVuZGVyYnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlcn19LGRlcHRoU3RlbmNpbFRleHR1cmU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlfX0sZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyfX0saGFzRGVwdGhBdHRhY2htZW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLmRlcHRoVGV4dHVyZXx8dGhpcy5kZXB0aFJlbmRlcmJ1ZmZlcnx8dGhpcy5kZXB0aFN0ZW5jaWxUZXh0dXJlfHx0aGlzLmRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcil9fX0pO1RhLnByb3RvdHlwZS5fYmluZD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuRlJBTUVCVUZGRVIsdGhpcy5fZnJhbWVidWZmZXIpfTtUYS5wcm90b3R5cGUuX3VuQmluZD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuRlJBTUVCVUZGRVIsbnVsbCl9O1RhLnByb3RvdHlwZS5iaW5kRHJhdz1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuRFJBV19GUkFNRUJVRkZFUix0aGlzLl9mcmFtZWJ1ZmZlcil9O1RhLnByb3RvdHlwZS5iaW5kUmVhZD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuUkVBRF9GUkFNRUJVRkZFUix0aGlzLl9mcmFtZWJ1ZmZlcil9O1RhLnByb3RvdHlwZS5fZ2V0QWN0aXZlQ29sb3JBdHRhY2htZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzfTtUYS5wcm90b3R5cGUuZ2V0Q29sb3JUZXh0dXJlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHx0PDB8fHQ+PXRoaXMuX2NvbG9yVGV4dHVyZXMubGVuZ3RoKXRocm93IG5ldyBZKCJpbmRleCBpcyByZXF1aXJlZCwgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybyBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50cy4iKTtyZXR1cm4gdGhpcy5fY29sb3JUZXh0dXJlc1t0XX07VGEucHJvdG90eXBlLmdldENvbG9yUmVuZGVyYnVmZmVyPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHx0PDB8fHQ+PXRoaXMuX2NvbG9yUmVuZGVyYnVmZmVycy5sZW5ndGgpdGhyb3cgbmV3IFkoImluZGV4IGlzIHJlcXVpcmVkLCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvIGFuZCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnRzLiIpO3JldHVybiB0aGlzLl9jb2xvclJlbmRlcmJ1ZmZlcnNbdF19O1RhLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtUYS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuZGVzdHJveUF0dGFjaG1lbnRzKXtsZXQgdD0wLGU9dGhpcy5fY29sb3JUZXh0dXJlcyxpPWUubGVuZ3RoO2Zvcig7dDxpOysrdCl7bGV0IHM9ZVt0XTttKHMpJiZzLmRlc3Ryb3koKX1sZXQgbj10aGlzLl9jb2xvclJlbmRlcmJ1ZmZlcnM7Zm9yKGk9bi5sZW5ndGgsdD0wO3Q8aTsrK3Qpe2xldCBzPW5bdF07bShzKSYmcy5kZXN0cm95KCl9dGhpcy5fZGVwdGhUZXh0dXJlPXRoaXMuX2RlcHRoVGV4dHVyZSYmdGhpcy5fZGVwdGhUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLl9kZXB0aFJlbmRlcmJ1ZmZlcj10aGlzLl9kZXB0aFJlbmRlcmJ1ZmZlciYmdGhpcy5fZGVwdGhSZW5kZXJidWZmZXIuZGVzdHJveSgpLHRoaXMuX3N0ZW5jaWxSZW5kZXJidWZmZXI9dGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlciYmdGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlci5kZXN0cm95KCksdGhpcy5fZGVwdGhTdGVuY2lsVGV4dHVyZT10aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlJiZ0aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLl9kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXI9dGhpcy5fZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyJiZ0aGlzLl9kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIuZGVzdHJveSgpfXJldHVybiB0aGlzLl9nbC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLl9mcmFtZWJ1ZmZlciksbGkodGhpcyl9O3dMPVRhfSk7dmFyIFpJLExtLERUPU8oKCk9PntzcygpO1pJPXtET05UX0NBUkU6aXQuRE9OVF9DQVJFLEZBU1RFU1Q6aXQuRkFTVEVTVCxOSUNFU1Q6aXQuTklDRVNULHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PT09WkkuRE9OVF9DQVJFfHx0PT09WkkuRkFTVEVTVHx8dD09PVpJLk5JQ0VTVH19LExtPU9iamVjdC5mcmVlemUoWkkpfSk7dmFyIElJLE5hLE5FPU8oKCk9PntzcygpO0lJPXtORUFSRVNUOml0Lk5FQVJFU1QsTElORUFSOml0LkxJTkVBUn07SUkudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1JSS5ORUFSRVNUfHx0PT09SUkuTElORUFSfTtOYT1PYmplY3QuZnJlZXplKElJKX0pO3ZhciBSYyxfcyxiRT1PKCgpPT57c3MoKTtSYz17TkVBUkVTVDppdC5ORUFSRVNULExJTkVBUjppdC5MSU5FQVIsTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDppdC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULExJTkVBUl9NSVBNQVBfTkVBUkVTVDppdC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsTkVBUkVTVF9NSVBNQVBfTElORUFSOml0Lk5FQVJFU1RfTUlQTUFQX0xJTkVBUixMSU5FQVJfTUlQTUFQX0xJTkVBUjppdC5MSU5FQVJfTUlQTUFQX0xJTkVBUn07UmMudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1SYy5ORUFSRVNUfHx0PT09UmMuTElORUFSfHx0PT09UmMuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVHx8dD09PVJjLkxJTkVBUl9NSVBNQVBfTkVBUkVTVHx8dD09PVJjLk5FQVJFU1RfTUlQTUFQX0xJTkVBUnx8dD09PVJjLkxJTkVBUl9NSVBNQVBfTElORUFSfTtfcz1PYmplY3QuZnJlZXplKFJjKX0pO3ZhciBwSSxTbCxQTD1PKCgpPT57c3MoKTtwST17Q0xBTVBfVE9fRURHRTppdC5DTEFNUF9UT19FREdFLFJFUEVBVDppdC5SRVBFQVQsTUlSUk9SRURfUkVQRUFUOml0Lk1JUlJPUkVEX1JFUEVBVCx2YWxpZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PXBJLkNMQU1QX1RPX0VER0V8fHQ9PT1wSS5SRVBFQVR8fHQ9PT1wSS5NSVJST1JFRF9SRVBFQVR9fSxTbD1PYmplY3QuZnJlZXplKHBJKX0pO2Z1bmN0aW9uIEZFKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQud3JhcFMsU2wuQ0xBTVBfVE9fRURHRSksaT1aKHQud3JhcFQsU2wuQ0xBTVBfVE9fRURHRSksbj1aKHQubWluaWZpY2F0aW9uRmlsdGVyLF9zLkxJTkVBUikscz1aKHQubWFnbmlmaWNhdGlvbkZpbHRlcixOYS5MSU5FQVIpLG89bSh0Lm1heGltdW1Bbmlzb3Ryb3B5KT90Lm1heGltdW1Bbmlzb3Ryb3B5OjE7aWYoIVNsLnZhbGlkYXRlKGUpKXRocm93IG5ldyBZKCJJbnZhbGlkIHNhbXBsZXIud3JhcFMuIik7aWYoIVNsLnZhbGlkYXRlKGkpKXRocm93IG5ldyBZKCJJbnZhbGlkIHNhbXBsZXIud3JhcFQuIik7aWYoIV9zLnZhbGlkYXRlKG4pKXRocm93IG5ldyBZKCJJbnZhbGlkIHNhbXBsZXIubWluaWZpY2F0aW9uRmlsdGVyLiIpO2lmKCFOYS52YWxpZGF0ZShzKSl0aHJvdyBuZXcgWSgiSW52YWxpZCBzYW1wbGVyLm1hZ25pZmljYXRpb25GaWx0ZXIuIik7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1heGltdW1Bbmlzb3Ryb3B5IixvLDEpLHRoaXMuX3dyYXBTPWUsdGhpcy5fd3JhcFQ9aSx0aGlzLl9taW5pZmljYXRpb25GaWx0ZXI9bix0aGlzLl9tYWduaWZpY2F0aW9uRmlsdGVyPXMsdGhpcy5fbWF4aW11bUFuaXNvdHJvcHk9b312YXIgWkEsWUU9TygoKT0+e2FlKCk7YnQoKTttdCgpO1Z0KCk7TkUoKTtiRSgpO1BMKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRkUucHJvdG90eXBlLHt3cmFwUzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyYXBTfX0sd3JhcFQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cmFwVH19LG1pbmlmaWNhdGlvbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21pbmlmaWNhdGlvbkZpbHRlcn19LG1hZ25pZmljYXRpb25GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYWduaWZpY2F0aW9uRmlsdGVyfX0sbWF4aW11bUFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhpbXVtQW5pc290cm9weX19fSk7RkUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Ll93cmFwUz09PWUuX3dyYXBTJiZ0Ll93cmFwVD09PWUuX3dyYXBUJiZ0Ll9taW5pZmljYXRpb25GaWx0ZXI9PT1lLl9taW5pZmljYXRpb25GaWx0ZXImJnQuX21hZ25pZmljYXRpb25GaWx0ZXI9PT1lLl9tYWduaWZpY2F0aW9uRmlsdGVyJiZ0Ll9tYXhpbXVtQW5pc290cm9weT09PWUuX21heGltdW1Bbmlzb3Ryb3B5fTtGRS5ORUFSRVNUPU9iamVjdC5mcmVlemUobmV3IEZFKHt3cmFwUzpTbC5DTEFNUF9UT19FREdFLHdyYXBUOlNsLkNMQU1QX1RPX0VER0UsbWluaWZpY2F0aW9uRmlsdGVyOl9zLk5FQVJFU1QsbWFnbmlmaWNhdGlvbkZpbHRlcjpOYS5ORUFSRVNUfSkpO1pBPUZFfSk7ZnVuY3Rpb24gYmEodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpO2xldCBlPXQuY29udGV4dCxpPXQud2lkdGgsbj10LmhlaWdodCxzPXQuc291cmNlO20ocykmJihtKGkpfHwoaT1aKHMudmlkZW9XaWR0aCxzLndpZHRoKSksbShuKXx8KG49WihzLnZpZGVvSGVpZ2h0LHMuaGVpZ2h0KSkpO2xldCBvPVoodC5waXhlbEZvcm1hdCxJZS5SR0JBKSxyPVoodC5waXhlbERhdGF0eXBlLGdlLlVOU0lHTkVEX0JZVEUpLGE9SWUudG9JbnRlcm5hbEZvcm1hdChvLHIsZSksaD1JZS5pc0NvbXByZXNzZWRGb3JtYXQoYSk7aWYoIW0oaSl8fCFtKG4pKXRocm93IG5ldyBZKCJvcHRpb25zIHJlcXVpcmVzIGEgc291cmNlIGZpZWxkIHRvIGNyZWF0ZSBhbiBpbml0aWFsaXplZCB0ZXh0dXJlIG9yIHdpZHRoIGFuZCBoZWlnaHQgZmllbGRzIHRvIGNyZWF0ZSBhIGJsYW5rIHRleHR1cmUuIik7aWYocC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJ3aWR0aCIsaSwwKSxpPmVuLm1heGltdW1UZXh0dXJlU2l6ZSl0aHJvdyBuZXcgWShgV2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gdGV4dHVyZSBzaXplICgke2VuLm1heGltdW1UZXh0dXJlU2l6ZX0pLiAgQ2hlY2sgbWF4aW11bVRleHR1cmVTaXplLmApO2lmKHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiaGVpZ2h0IixuLDApLG4+ZW4ubWF4aW11bVRleHR1cmVTaXplKXRocm93IG5ldyBZKGBIZWlnaHQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gdGV4dHVyZSBzaXplICgke2VuLm1heGltdW1UZXh0dXJlU2l6ZX0pLiAgQ2hlY2sgbWF4aW11bVRleHR1cmVTaXplLmApO2lmKCFJZS52YWxpZGF0ZShvKSl0aHJvdyBuZXcgWSgiSW52YWxpZCBvcHRpb25zLnBpeGVsRm9ybWF0LiIpO2lmKCFoJiYhZ2UudmFsaWRhdGUocikpdGhyb3cgbmV3IFkoIkludmFsaWQgb3B0aW9ucy5waXhlbERhdGF0eXBlLiIpO2lmKG89PT1JZS5ERVBUSF9DT01QT05FTlQmJnIhPT1nZS5VTlNJR05FRF9TSE9SVCYmciE9PWdlLlVOU0lHTkVEX0lOVCl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRm9ybWF0IGlzIERFUFRIX0NPTVBPTkVOVCwgb3B0aW9ucy5waXhlbERhdGF0eXBlIG11c3QgYmUgVU5TSUdORURfU0hPUlQgb3IgVU5TSUdORURfSU5ULiIpO2lmKG89PT1JZS5ERVBUSF9TVEVOQ0lMJiZyIT09Z2UuVU5TSUdORURfSU5UXzI0XzgpdGhyb3cgbmV3IFkoIldoZW4gb3B0aW9ucy5waXhlbEZvcm1hdCBpcyBERVBUSF9TVEVOQ0lMLCBvcHRpb25zLnBpeGVsRGF0YXR5cGUgbXVzdCBiZSBVTlNJR05FRF9JTlRfMjRfOC4iKTtpZihyPT09Z2UuRkxPQVQmJiFlLmZsb2F0aW5nUG9pbnRUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxEYXRhdHlwZSBpcyBGTE9BVCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbi4gIENoZWNrIGNvbnRleHQuZmxvYXRpbmdQb2ludFRleHR1cmUuIik7aWYocj09PWdlLkhBTEZfRkxPQVQmJiFlLmhhbGZGbG9hdGluZ1BvaW50VGV4dHVyZSl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRGF0YXR5cGUgaXMgSEFMRl9GTE9BVCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgZXh0ZW5zaW9uLiBDaGVjayBjb250ZXh0LmhhbGZGbG9hdGluZ1BvaW50VGV4dHVyZS4iKTtpZihJZS5pc0RlcHRoRm9ybWF0KG8pKXtpZihtKHMpKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwsIHNvdXJjZSBjYW5ub3QgYmUgcHJvdmlkZWQuIik7aWYoIWUuZGVwdGhUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwsIHRoaXMgV2ViR0wgaW1wbGVtZW50YXRpb24gbXVzdCBzdXBwb3J0IFdFQkdMX2RlcHRoX3RleHR1cmUuICBDaGVjayBjb250ZXh0LmRlcHRoVGV4dHVyZS4iKX1pZihoKXtpZighbShzKXx8IW0ocy5hcnJheUJ1ZmZlclZpZXcpKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgY29tcHJlc3NlZCwgb3B0aW9ucy5zb3VyY2UuYXJyYXlCdWZmZXJWaWV3IG11c3QgYmUgZGVmaW5lZC4iKTtpZihJZS5pc0RYVEZvcm1hdChhKSYmIWUuczN0Yyl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRm9ybWF0IGlzIFMzVEMgY29tcHJlc3NlZCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIGV4dGVuc2lvbi4gQ2hlY2sgY29udGV4dC5zM3RjLiIpO2lmKEllLmlzUFZSVENGb3JtYXQoYSkmJiFlLnB2cnRjKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgUFZSVEMgY29tcHJlc3NlZCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyBleHRlbnNpb24uIENoZWNrIGNvbnRleHQucHZydGMuIik7aWYoSWUuaXNBU1RDRm9ybWF0KGEpJiYhZS5hc3RjKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgQVNUQyBjb21wcmVzc2VkLCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMgZXh0ZW5zaW9uLiBDaGVjayBjb250ZXh0LmFzdGMuIik7aWYoSWUuaXNFVEMyRm9ybWF0KGEpJiYhZS5ldGMpdGhyb3cgbmV3IFkoIldoZW4gb3B0aW9ucy5waXhlbEZvcm1hdCBpcyBFVEMyIGNvbXByZXNzZWQsIHRoaXMgV2ViR0wgaW1wbGVtZW50YXRpb24gbXVzdCBzdXBwb3J0IHRoZSBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIGV4dGVuc2lvbi4gQ2hlY2sgY29udGV4dC5ldGMuIik7aWYoSWUuaXNFVEMxRm9ybWF0KGEpJiYhZS5ldGMxKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgRVRDMSBjb21wcmVzc2VkLCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEgZXh0ZW5zaW9uLiBDaGVjayBjb250ZXh0LmV0YzEuIik7aWYoSWUuaXNCQzdGb3JtYXQoYSkmJiFlLmJjNyl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRm9ybWF0IGlzIEJDNyBjb21wcmVzc2VkLCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyBleHRlbnNpb24uIENoZWNrIGNvbnRleHQuYmM3LiIpO2lmKEllLmNvbXByZXNzZWRUZXh0dXJlU2l6ZUluQnl0ZXMoYSxpLG4pIT09cy5hcnJheUJ1ZmZlclZpZXcuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgWSgiVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBidWZmZXIgaXMgaW52YWxpZCBmb3IgdGhlIGNvbXByZXNzZWQgdGV4dHVyZSB3aXRoIHRoZSBnaXZlbiB3aWR0aCBhbmQgaGVpZ2h0LiIpfWxldCBBPXQucHJlTXVsdGlwbHlBbHBoYXx8bz09PUllLlJHQnx8bz09PUllLkxVTUlOQU5DRSxkPVoodC5mbGlwWSwhMCksZj1aKHQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uLCExKSxFPSEwLF89ZS5fZ2wsUj1fLlRFWFRVUkVfMkQsST1fLmNyZWF0ZVRleHR1cmUoKTtfLmFjdGl2ZVRleHR1cmUoXy5URVhUVVJFMCksXy5iaW5kVGV4dHVyZShSLEkpO2xldCBDPTQ7aWYobShzKSYmbShzLmFycmF5QnVmZmVyVmlldykmJiFoJiYoQz1JZS5hbGlnbm1lbnRJbkJ5dGVzKG8scixpKSksXy5waXhlbFN0b3JlaShfLlVOUEFDS19BTElHTk1FTlQsQyksZj9fLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxfLk5PTkUpOl8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLF8uQlJPV1NFUl9ERUZBVUxUX1dFQkdMKSxtKHMpKWlmKG0ocy5hcnJheUJ1ZmZlclZpZXcpKXtfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSk7bGV0IFQ9cy5hcnJheUJ1ZmZlclZpZXcsRixiLEc7aWYoaCl7aWYoXy5jb21wcmVzc2VkVGV4SW1hZ2UyRChSLDAsYSxpLG4sMCxUKSxtKHMubWlwTGV2ZWxzKSlmb3IoYj1pLEc9bixGPTA7RjxzLm1pcExldmVscy5sZW5ndGg7KytGKWI9TWF0aC5mbG9vcihiLzIpfDAsYjwxJiYoYj0xKSxHPU1hdGguZmxvb3IoRy8yKXwwLEc8MSYmKEc9MSksXy5jb21wcmVzc2VkVGV4SW1hZ2UyRChSLEYrMSxhLGIsRywwLHMubWlwTGV2ZWxzW0ZdKX1lbHNlIGlmKGQmJihUPUllLmZsaXBZKFQsbyxyLGksbikpLF8udGV4SW1hZ2UyRChSLDAsYSxpLG4sMCxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLFQpLG0ocy5taXBMZXZlbHMpKWZvcihiPWksRz1uLEY9MDtGPHMubWlwTGV2ZWxzLmxlbmd0aDsrK0YpYj1NYXRoLmZsb29yKGIvMil8MCxiPDEmJihiPTEpLEc9TWF0aC5mbG9vcihHLzIpfDAsRzwxJiYoRz0xKSxfLnRleEltYWdlMkQoUixGKzEsYSxiLEcsMCxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLHMubWlwTGV2ZWxzW0ZdKX1lbHNlIG0ocy5mcmFtZWJ1ZmZlcik/KF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsITEpLF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCExKSxzLmZyYW1lYnVmZmVyIT09ZS5kZWZhdWx0RnJhbWVidWZmZXImJnMuZnJhbWVidWZmZXIuX2JpbmQoKSxfLmNvcHlUZXhJbWFnZTJEKFIsMCxhLHMueE9mZnNldCxzLnlPZmZzZXQsaSxuLDApLHMuZnJhbWVidWZmZXIhPT1lLmRlZmF1bHRGcmFtZWJ1ZmZlciYmcy5mcmFtZWJ1ZmZlci5fdW5CaW5kKCkpOihfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLEEpLF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLGQpLF8udGV4SW1hZ2UyRChSLDAsYSxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLHMpKTtlbHNlIF8udGV4SW1hZ2UyRChSLDAsYSxpLG4sMCxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLG51bGwpLEU9ITE7Xy5iaW5kVGV4dHVyZShSLG51bGwpO2xldCBOO2g/Tj1JZS5jb21wcmVzc2VkVGV4dHVyZVNpemVJbkJ5dGVzKG8saSxuKTpOPUllLnRleHR1cmVTaXplSW5CeXRlcyhvLHIsaSxuKSx0aGlzLl9pZD1HcygpLHRoaXMuX2NvbnRleHQ9ZSx0aGlzLl90ZXh0dXJlRmlsdGVyQW5pc290cm9waWM9ZS5fdGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLHRoaXMuX3RleHR1cmVUYXJnZXQ9Uix0aGlzLl90ZXh0dXJlPUksdGhpcy5faW50ZXJuYWxGb3JtYXQ9YSx0aGlzLl9waXhlbEZvcm1hdD1vLHRoaXMuX3BpeGVsRGF0YXR5cGU9cix0aGlzLl93aWR0aD1pLHRoaXMuX2hlaWdodD1uLHRoaXMuX2RpbWVuc2lvbnM9bmV3IG50KGksbiksdGhpcy5faGFzTWlwbWFwPSExLHRoaXMuX3NpemVJbkJ5dGVzPU4sdGhpcy5fcHJlTXVsdGlwbHlBbHBoYT1BLHRoaXMuX2ZsaXBZPWQsdGhpcy5faW5pdGlhbGl6ZWQ9RSx0aGlzLl9zYW1wbGVyPXZvaWQgMCx0aGlzLnNhbXBsZXI9bSh0LnNhbXBsZXIpP3Quc2FtcGxlcjpuZXcgWkF9dmFyIEZhLHVJPU8oKCk9PntYZSgpO2FlKCk7aWgoKTtidCgpO210KCk7V3MoKTtWdCgpO19lKCk7X2MoKTtnYSgpO0RUKCk7RWMoKTtZRSgpO05FKCk7YkUoKTtiYS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBiYSh0KX07YmEuZnJvbUZyYW1lYnVmZmVyPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSxwLmRlZmluZWQoIm9wdGlvbnMuY29udGV4dCIsdC5jb250ZXh0KTtsZXQgZT10LmNvbnRleHQsaT1lLl9nbCxuPVoodC5waXhlbEZvcm1hdCxJZS5SR0IpLHM9Wih0LmZyYW1lYnVmZmVyWE9mZnNldCwwKSxvPVoodC5mcmFtZWJ1ZmZlcllPZmZzZXQsMCkscj1aKHQud2lkdGgsaS5kcmF3aW5nQnVmZmVyV2lkdGgpLGE9Wih0LmhlaWdodCxpLmRyYXdpbmdCdWZmZXJIZWlnaHQpLGg9dC5mcmFtZWJ1ZmZlcjtpZighSWUudmFsaWRhdGUobikpdGhyb3cgbmV3IFkoIkludmFsaWQgcGl4ZWxGb3JtYXQuIik7aWYoSWUuaXNEZXB0aEZvcm1hdChuKXx8SWUuaXNDb21wcmVzc2VkRm9ybWF0KG4pKXRocm93IG5ldyBZKCJwaXhlbEZvcm1hdCBjYW5ub3QgYmUgREVQVEhfQ09NUE9ORU5ULCBERVBUSF9TVEVOQ0lMIG9yIGEgY29tcHJlc3NlZCBmb3JtYXQuIik7aWYocC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImZyYW1lYnVmZmVyWE9mZnNldCIscywwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZnJhbWVidWZmZXJZT2Zmc2V0IixvLDApLHMrcj5pLmRyYXdpbmdCdWZmZXJXaWR0aCl0aHJvdyBuZXcgWSgiZnJhbWVidWZmZXJYT2Zmc2V0ICsgd2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gZHJhd2luZ0J1ZmZlcldpZHRoIik7aWYobythPmkuZHJhd2luZ0J1ZmZlckhlaWdodCl0aHJvdyBuZXcgWSgiZnJhbWVidWZmZXJZT2Zmc2V0ICsgaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGRyYXdpbmdCdWZmZXJIZWlnaHQuIik7cmV0dXJuIG5ldyBiYSh7Y29udGV4dDplLHdpZHRoOnIsaGVpZ2h0OmEscGl4ZWxGb3JtYXQ6bixzb3VyY2U6e2ZyYW1lYnVmZmVyOm0oaCk/aDplLmRlZmF1bHRGcmFtZWJ1ZmZlcix4T2Zmc2V0OnMseU9mZnNldDpvLHdpZHRoOnIsaGVpZ2h0OmF9fSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGJhLnByb3RvdHlwZSx7aWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pZH19LHNhbXBsZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zYW1wbGVyfSxzZXQ6ZnVuY3Rpb24odCl7bGV0IGU9dC5taW5pZmljYXRpb25GaWx0ZXIsaT10Lm1hZ25pZmljYXRpb25GaWx0ZXIsbj10aGlzLl9jb250ZXh0LHM9dGhpcy5fcGl4ZWxGb3JtYXQsbz10aGlzLl9waXhlbERhdGF0eXBlLHI9ZT09PV9zLk5FQVJFU1RfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5ORUFSRVNUX01JUE1BUF9MSU5FQVJ8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX0xJTkVBUjsobz09PWdlLkZMT0FUJiYhbi50ZXh0dXJlRmxvYXRMaW5lYXJ8fG89PT1nZS5IQUxGX0ZMT0FUJiYhbi50ZXh0dXJlSGFsZkZsb2F0TGluZWFyKSYmKGU9cj9fcy5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOl9zLk5FQVJFU1QsaT1OYS5ORUFSRVNUKSxuLndlYmdsMiYmSWUuaXNEZXB0aEZvcm1hdChzKSYmKGU9X3MuTkVBUkVTVCxpPU5hLk5FQVJFU1QpO2xldCBhPW4uX2dsLGg9dGhpcy5fdGV4dHVyZVRhcmdldDthLmFjdGl2ZVRleHR1cmUoYS5URVhUVVJFMCksYS5iaW5kVGV4dHVyZShoLHRoaXMuX3RleHR1cmUpLGEudGV4UGFyYW1ldGVyaShoLGEuVEVYVFVSRV9NSU5fRklMVEVSLGUpLGEudGV4UGFyYW1ldGVyaShoLGEuVEVYVFVSRV9NQUdfRklMVEVSLGkpLGEudGV4UGFyYW1ldGVyaShoLGEuVEVYVFVSRV9XUkFQX1MsdC53cmFwUyksYS50ZXhQYXJhbWV0ZXJpKGgsYS5URVhUVVJFX1dSQVBfVCx0LndyYXBUKSxtKHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykmJmEudGV4UGFyYW1ldGVyaShoLHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCx0Lm1heGltdW1Bbmlzb3Ryb3B5KSxhLmJpbmRUZXh0dXJlKGgsbnVsbCksdGhpcy5fc2FtcGxlcj10fX0scGl4ZWxGb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbEZvcm1hdH19LHBpeGVsRGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbERhdGF0eXBlfX0sZGltZW5zaW9uczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpbWVuc2lvbnN9fSxwcmVNdWx0aXBseUFscGhhOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJlTXVsdGlwbHlBbHBoYX19LGZsaXBZOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmxpcFl9fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpZHRofX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0fX0sc2l6ZUluQnl0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNNaXBtYXA/TWF0aC5mbG9vcih0aGlzLl9zaXplSW5CeXRlcyo0LzMpOnRoaXMuX3NpemVJbkJ5dGVzfX0sX3RhcmdldDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVUYXJnZXR9fX0pO2JhLnByb3RvdHlwZS5jb3B5RnJvbT1mdW5jdGlvbih0KXtwLmRlZmluZWQoIm9wdGlvbnMiLHQpO2xldCBlPVoodC54T2Zmc2V0LDApLGk9Wih0LnlPZmZzZXQsMCk7aWYocC5kZWZpbmVkKCJvcHRpb25zLnNvdXJjZSIsdC5zb3VyY2UpLEllLmlzRGVwdGhGb3JtYXQodGhpcy5fcGl4ZWxGb3JtYXQpKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbSB3aGVuIHRoZSB0ZXh0dXJlIHBpeGVsIGZvcm1hdCBpcyBERVBUSF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTC4iKTtpZihJZS5pc0NvbXByZXNzZWRGb3JtYXQodGhpcy5fcGl4ZWxGb3JtYXQpKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbSB3aXRoIGEgY29tcHJlc3NlZCB0ZXh0dXJlIHBpeGVsIGZvcm1hdC4iKTtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieE9mZnNldCIsZSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieU9mZnNldCIsaSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygieE9mZnNldCArIG9wdGlvbnMuc291cmNlLndpZHRoIixlK3Quc291cmNlLndpZHRoLHRoaXMuX3dpZHRoKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygieU9mZnNldCArIG9wdGlvbnMuc291cmNlLmhlaWdodCIsaSt0LnNvdXJjZS5oZWlnaHQsdGhpcy5faGVpZ2h0KTtsZXQgbj10LnNvdXJjZSxzPXRoaXMuX2NvbnRleHQsbz1zLl9nbCxyPXRoaXMuX3RleHR1cmVUYXJnZXQ7by5hY3RpdmVUZXh0dXJlKG8uVEVYVFVSRTApLG8uYmluZFRleHR1cmUocix0aGlzLl90ZXh0dXJlKTtsZXQgYT1uLndpZHRoLGg9bi5oZWlnaHQsQT1uLmFycmF5QnVmZmVyVmlldyxkPXRoaXMuX3dpZHRoLGY9dGhpcy5faGVpZ2h0LEU9dGhpcy5faW50ZXJuYWxGb3JtYXQsXz10aGlzLl9waXhlbEZvcm1hdCxSPXRoaXMuX3BpeGVsRGF0YXR5cGUsST10aGlzLl9wcmVNdWx0aXBseUFscGhhLEM9dGhpcy5fZmxpcFksTj1aKHQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uLCExKSxUPTQ7bShBKSYmKFQ9SWUuYWxpZ25tZW50SW5CeXRlcyhfLFIsYSkpLG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfQUxJR05NRU5ULFQpLE4/by5waXhlbFN0b3JlaShvLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wsby5OT05FKTpvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxvLkJST1dTRVJfREVGQVVMVF9XRUJHTCk7bGV0IEY9ITE7aWYoIXRoaXMuX2luaXRpYWxpemVkKXtpZihlPT09MCYmaT09PTAmJmE9PT1kJiZoPT09ZiltKEEpPyhvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSksQyYmKEE9SWUuZmxpcFkoQSxfLFIsZCxmKSksby50ZXhJbWFnZTJEKHIsMCxFLGQsZiwwLF8sZ2UudG9XZWJHTENvbnN0YW50KFIscyksQSkpOihvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLEkpLG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfRkxJUF9ZX1dFQkdMLEMpLG8udGV4SW1hZ2UyRChyLDAsRSxfLGdlLnRvV2ViR0xDb25zdGFudChSLHMpLG4pKSxGPSEwO2Vsc2V7by5waXhlbFN0b3JlaShvLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwhMSksby5waXhlbFN0b3JlaShvLlVOUEFDS19GTElQX1lfV0VCR0wsITEpO2xldCBiPUllLmNyZWF0ZVR5cGVkQXJyYXkoXyxSLGQsZik7by50ZXhJbWFnZTJEKHIsMCxFLGQsZiwwLF8sZ2UudG9XZWJHTENvbnN0YW50KFIscyksYil9dGhpcy5faW5pdGlhbGl6ZWQ9ITB9Rnx8KG0oQSk/KG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsITEpLG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCExKSxDJiYoQT1JZS5mbGlwWShBLF8sUixhLGgpKSxvLnRleFN1YkltYWdlMkQociwwLGUsaSxhLGgsXyxnZS50b1dlYkdMQ29uc3RhbnQoUixzKSxBKSk6KG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsSSksby5waXhlbFN0b3JlaShvLlVOUEFDS19GTElQX1lfV0VCR0wsQyksby50ZXhTdWJJbWFnZTJEKHIsMCxlLGksXyxnZS50b1dlYkdMQ29uc3RhbnQoUixzKSxuKSkpLG8uYmluZFRleHR1cmUocixudWxsKX07YmEucHJvdG90eXBlLmNvcHlGcm9tRnJhbWVidWZmZXI9ZnVuY3Rpb24odCxlLGksbixzLG8pe2lmKHQ9Wih0LDApLGU9WihlLDApLGk9WihpLDApLG49WihuLDApLHM9WihzLHRoaXMuX3dpZHRoKSxvPVoobyx0aGlzLl9oZWlnaHQpLEllLmlzRGVwdGhGb3JtYXQodGhpcy5fcGl4ZWxGb3JtYXQpKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbUZyYW1lYnVmZmVyIHdoZW4gdGhlIHRleHR1cmUgcGl4ZWwgZm9ybWF0IGlzIERFUFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMLiIpO2lmKHRoaXMuX3BpeGVsRGF0YXR5cGU9PT1nZS5GTE9BVCl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgY29weUZyb21GcmFtZWJ1ZmZlciB3aGVuIHRoZSB0ZXh0dXJlIHBpeGVsIGRhdGEgdHlwZSBpcyBGTE9BVC4iKTtpZih0aGlzLl9waXhlbERhdGF0eXBlPT09Z2UuSEFMRl9GTE9BVCl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgY29weUZyb21GcmFtZWJ1ZmZlciB3aGVuIHRoZSB0ZXh0dXJlIHBpeGVsIGRhdGEgdHlwZSBpcyBIQUxGX0ZMT0FULiIpO2lmKEllLmlzQ29tcHJlc3NlZEZvcm1hdCh0aGlzLl9waXhlbEZvcm1hdCkpdGhyb3cgbmV3IFkoIkNhbm5vdCBjYWxsIGNvcHlGcm9tIHdpdGggYSBjb21wcmVzc2VkIHRleHR1cmUgcGl4ZWwgZm9ybWF0LiIpO3AudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ4T2Zmc2V0Iix0LDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ5T2Zmc2V0IixlLDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJmcmFtZWJ1ZmZlclhPZmZzZXQiLGksMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImZyYW1lYnVmZmVyWU9mZnNldCIsbiwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygieE9mZnNldCArIHdpZHRoIix0K3MsdGhpcy5fd2lkdGgpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ5T2Zmc2V0ICsgaGVpZ2h0IixlK28sdGhpcy5faGVpZ2h0KTtsZXQgcj10aGlzLl9jb250ZXh0Ll9nbCxhPXRoaXMuX3RleHR1cmVUYXJnZXQ7ci5hY3RpdmVUZXh0dXJlKHIuVEVYVFVSRTApLHIuYmluZFRleHR1cmUoYSx0aGlzLl90ZXh0dXJlKSxyLmNvcHlUZXhTdWJJbWFnZTJEKGEsMCx0LGUsaSxuLHMsbyksci5iaW5kVGV4dHVyZShhLG51bGwpLHRoaXMuX2luaXRpYWxpemVkPSEwfTtiYS5wcm90b3R5cGUuZ2VuZXJhdGVNaXBtYXA9ZnVuY3Rpb24odCl7aWYodD1aKHQsTG0uRE9OVF9DQVJFKSxJZS5pc0RlcHRoRm9ybWF0KHRoaXMuX3BpeGVsRm9ybWF0KSl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgZ2VuZXJhdGVNaXBtYXAgd2hlbiB0aGUgdGV4dHVyZSBwaXhlbCBmb3JtYXQgaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwuIik7aWYoSWUuaXNDb21wcmVzc2VkRm9ybWF0KHRoaXMuX3BpeGVsRm9ybWF0KSl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgZ2VuZXJhdGVNaXBtYXAgd2l0aCBhIGNvbXByZXNzZWQgcGl4ZWwgZm9ybWF0LiIpO2lmKCF0aGlzLl9jb250ZXh0LndlYmdsMil7aWYodGhpcy5fd2lkdGg+MSYmIUwuaXNQb3dlck9mVHdvKHRoaXMuX3dpZHRoKSl0aHJvdyBuZXcgWSgid2lkdGggbXVzdCBiZSBhIHBvd2VyIG9mIHR3byB0byBjYWxsIGdlbmVyYXRlTWlwbWFwKCkgaW4gYSBXZWJHTDEgY29udGV4dC4iKTtpZih0aGlzLl9oZWlnaHQ+MSYmIUwuaXNQb3dlck9mVHdvKHRoaXMuX2hlaWdodCkpdGhyb3cgbmV3IFkoImhlaWdodCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIHRvIGNhbGwgZ2VuZXJhdGVNaXBtYXAoKSBpbiBhIFdlYkdMMSBjb250ZXh0LiIpfWlmKCFMbS52YWxpZGF0ZSh0KSl0aHJvdyBuZXcgWSgiaGludCBpcyBpbnZhbGlkLiIpO3RoaXMuX2hhc01pcG1hcD0hMDtsZXQgZT10aGlzLl9jb250ZXh0Ll9nbCxpPXRoaXMuX3RleHR1cmVUYXJnZXQ7ZS5oaW50KGUuR0VORVJBVEVfTUlQTUFQX0hJTlQsdCksZS5hY3RpdmVUZXh0dXJlKGUuVEVYVFVSRTApLGUuYmluZFRleHR1cmUoaSx0aGlzLl90ZXh0dXJlKSxlLmdlbmVyYXRlTWlwbWFwKGkpLGUuYmluZFRleHR1cmUoaSxudWxsKX07YmEucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2JhLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRleHQuX2dsLmRlbGV0ZVRleHR1cmUodGhpcy5fdGV4dHVyZSksbGkodGhpcyl9O0ZhPWJhfSk7ZnVuY3Rpb24gY2godCxlLGksbixzKXt0aGlzLmJvdHRvbUxlZnQ9Wih0LG50LlpFUk8pLHRoaXMudG9wUmlnaHQ9WihlLG50LlpFUk8pLHRoaXMuY2hpbGROb2RlMT1pLHRoaXMuY2hpbGROb2RlMj1uLHRoaXMuaW1hZ2VJbmRleD1zfWZ1bmN0aW9uIFpjKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQuYm9yZGVyV2lkdGhJblBpeGVscywxKSxpPVoodC5pbml0aWFsU2l6ZSxRdHQpO2lmKCFtKHQuY29udGV4dCkpdGhyb3cgbmV3IFkoImNvbnRleHQgaXMgcmVxdWlyZWQuIik7aWYoZTwwKXRocm93IG5ldyBZKCJib3JkZXJXaWR0aEluUGl4ZWxzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8uIik7aWYoaS54PDF8fGkueTwxKXRocm93IG5ldyBZKCJpbml0aWFsU2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO3RoaXMuX2NvbnRleHQ9dC5jb250ZXh0LHRoaXMuX3BpeGVsRm9ybWF0PVoodC5waXhlbEZvcm1hdCxJZS5SR0JBKSx0aGlzLl9ib3JkZXJXaWR0aEluUGl4ZWxzPWUsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVzPVtdLHRoaXMuX2d1aWQ9R3MoKSx0aGlzLl9pZEhhc2g9e30sdGhpcy5faW5kZXhIYXNoPXt9LHRoaXMuX2luaXRpYWxTaXplPWksdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24ga3R0KHQsZSl7bGV0IGk9dC5fY29udGV4dCxuPXQubnVtYmVyT2ZJbWFnZXMscz0yLG89dC5fYm9yZGVyV2lkdGhJblBpeGVscztpZihuPjApe2xldCByPXQuX3RleHR1cmUud2lkdGgsYT10Ll90ZXh0dXJlLmhlaWdodCxoPXMqKHIrZS53aWR0aCtvKSxBPXMqKGErZS5oZWlnaHQrbyksZD1yL2gsZj1hL0EsRT1uZXcgY2gobmV3IG50KHIrbyxvKSxuZXcgbnQoaCxhKSksXz1uZXcgY2gobmV3IG50LG5ldyBudChoLGEpLHQuX3Jvb3QsRSksUj1uZXcgY2gobmV3IG50KG8sYStvKSxuZXcgbnQoaCxBKSksST1uZXcgY2gobmV3IG50LG5ldyBudChoLEEpLF8sUik7Zm9yKGxldCBUPTA7VDx0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMubGVuZ3RoO1QrKyl7bGV0IEY9dC5fdGV4dHVyZUNvb3JkaW5hdGVzW1RdO20oRikmJihGLngqPWQsRi55Kj1mLEYud2lkdGgqPWQsRi5oZWlnaHQqPWYpfWxldCBDPW5ldyBGYSh7Y29udGV4dDp0Ll9jb250ZXh0LHdpZHRoOmgsaGVpZ2h0OkEscGl4ZWxGb3JtYXQ6dC5fcGl4ZWxGb3JtYXR9KSxOPW5ldyB3TCh7Y29udGV4dDppLGNvbG9yVGV4dHVyZXM6W3QuX3RleHR1cmVdLGRlc3Ryb3lBdHRhY2htZW50czohMX0pO04uX2JpbmQoKSxDLmNvcHlGcm9tRnJhbWVidWZmZXIoMCwwLDAsMCxoLEEpLE4uX3VuQmluZCgpLE4uZGVzdHJveSgpLHQuX3RleHR1cmU9dC5fdGV4dHVyZSYmdC5fdGV4dHVyZS5kZXN0cm95KCksdC5fdGV4dHVyZT1DLHQuX3Jvb3Q9SX1lbHNle2xldCByPXMqKGUud2lkdGgrMipvKSxhPXMqKGUuaGVpZ2h0KzIqbyk7cjx0Ll9pbml0aWFsU2l6ZS54JiYocj10Ll9pbml0aWFsU2l6ZS54KSxhPHQuX2luaXRpYWxTaXplLnkmJihhPXQuX2luaXRpYWxTaXplLnkpLHQuX3RleHR1cmU9dC5fdGV4dHVyZSYmdC5fdGV4dHVyZS5kZXN0cm95KCksdC5fdGV4dHVyZT1uZXcgRmEoe2NvbnRleHQ6dC5fY29udGV4dCx3aWR0aDpyLGhlaWdodDphLHBpeGVsRm9ybWF0OnQuX3BpeGVsRm9ybWF0fSksdC5fcm9vdD1uZXcgY2gobmV3IG50KG8sbyksbmV3IG50KHIsYSkpfX1mdW5jdGlvbiBDSSh0LGUsaSl7aWYobShlKSl7aWYoIW0oZS5jaGlsZE5vZGUxKSYmIW0oZS5jaGlsZE5vZGUyKSl7aWYobShlLmltYWdlSW5kZXgpKXJldHVybjtsZXQgbj1lLnRvcFJpZ2h0LngtZS5ib3R0b21MZWZ0Lngscz1lLnRvcFJpZ2h0LnktZS5ib3R0b21MZWZ0Lnksbz1uLWkud2lkdGgscj1zLWkuaGVpZ2h0O2lmKG88MHx8cjwwKXJldHVybjtpZihvPT09MCYmcj09PTApcmV0dXJuIGU7aWYobz5yKXtlLmNoaWxkTm9kZTE9bmV3IGNoKG5ldyBudChlLmJvdHRvbUxlZnQueCxlLmJvdHRvbUxlZnQueSksbmV3IG50KGUuYm90dG9tTGVmdC54K2kud2lkdGgsZS50b3BSaWdodC55KSk7bGV0IGE9ZS5ib3R0b21MZWZ0LngraS53aWR0aCt0Ll9ib3JkZXJXaWR0aEluUGl4ZWxzO2E8ZS50b3BSaWdodC54JiYoZS5jaGlsZE5vZGUyPW5ldyBjaChuZXcgbnQoYSxlLmJvdHRvbUxlZnQueSksbmV3IG50KGUudG9wUmlnaHQueCxlLnRvcFJpZ2h0LnkpKSl9ZWxzZXtlLmNoaWxkTm9kZTE9bmV3IGNoKG5ldyBudChlLmJvdHRvbUxlZnQueCxlLmJvdHRvbUxlZnQueSksbmV3IG50KGUudG9wUmlnaHQueCxlLmJvdHRvbUxlZnQueStpLmhlaWdodCkpO2xldCBhPWUuYm90dG9tTGVmdC55K2kuaGVpZ2h0K3QuX2JvcmRlcldpZHRoSW5QaXhlbHM7YTxlLnRvcFJpZ2h0LnkmJihlLmNoaWxkTm9kZTI9bmV3IGNoKG5ldyBudChlLmJvdHRvbUxlZnQueCxhKSxuZXcgbnQoZS50b3BSaWdodC54LGUudG9wUmlnaHQueSkpKX1yZXR1cm4gQ0kodCxlLmNoaWxkTm9kZTEsaSl9cmV0dXJuIENJKHQsZS5jaGlsZE5vZGUxLGkpfHxDSSh0LGUuY2hpbGROb2RlMixpKX19ZnVuY3Rpb24gSkwodCxlLGkpe2xldCBuPUNJKHQsdC5fcm9vdCxlKTtpZihtKG4pKXtuLmltYWdlSW5kZXg9aTtsZXQgcz10Ll90ZXh0dXJlLndpZHRoLG89dC5fdGV4dHVyZS5oZWlnaHQscj1uLnRvcFJpZ2h0Lngtbi5ib3R0b21MZWZ0LngsYT1uLnRvcFJpZ2h0Lnktbi5ib3R0b21MZWZ0LnksaD1uLmJvdHRvbUxlZnQueC9zLEE9bi5ib3R0b21MZWZ0LnkvbyxkPXIvcyxmPWEvbzt0Ll90ZXh0dXJlQ29vcmRpbmF0ZXNbaV09bmV3IG1pKGgsQSxkLGYpLHQuX3RleHR1cmUuY29weUZyb20oe3NvdXJjZTplLHhPZmZzZXQ6bi5ib3R0b21MZWZ0LngseU9mZnNldDpuLmJvdHRvbUxlZnQueX0pfWVsc2Uga3R0KHQsZSksSkwodCxlLGkpO3QuX2d1aWQ9R3MoKX1mdW5jdGlvbiBqTCh0LGUpe2lmKCFtKHQpfHx0LmlzRGVzdHJveWVkKCkpcmV0dXJuLTE7bGV0IGk9dC5udW1iZXJPZkltYWdlcztyZXR1cm4gSkwodCxlLGkpLGl9dmFyIFF0dCxTRSxNVD1PKCgpPT57RXIoKTtYZSgpO2loKCk7YnQoKTttdCgpO1dzKCk7VnQoKTtfYygpO0lhKCk7UHMoKTt4TCgpO3VJKCk7UXR0PW5ldyBudCgxNiwxNik7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWmMucHJvdG90eXBlLHtib3JkZXJXaWR0aEluUGl4ZWxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm9yZGVyV2lkdGhJblBpeGVsc319LHRleHR1cmVDb29yZGluYXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVDb29yZGluYXRlc319LHRleHR1cmU6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmUpfHwodGhpcy5fdGV4dHVyZT1uZXcgRmEoe2NvbnRleHQ6dGhpcy5fY29udGV4dCx3aWR0aDp0aGlzLl9pbml0aWFsU2l6ZS54LGhlaWdodDp0aGlzLl9pbml0aWFsU2l6ZS55LHBpeGVsRm9ybWF0OnRoaXMuX3BpeGVsRm9ybWF0fSkpLHRoaXMuX3RleHR1cmV9fSxudW1iZXJPZkltYWdlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVDb29yZGluYXRlcy5sZW5ndGh9fSxndWlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ3VpZH19fSk7WmMucHJvdG90eXBlLmdldEltYWdlSW5kZXg9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0aGlzLl9pbmRleEhhc2hbdF19O1pjLnByb3RvdHlwZS5hZGRJbWFnZVN5bmM9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImltYWdlIGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX2luZGV4SGFzaFt0XTtyZXR1cm4gbShpKXx8KGk9akwodGhpcyxlKSx0aGlzLl9pZEhhc2hbdF09UHJvbWlzZS5yZXNvbHZlKGkpLHRoaXMuX2luZGV4SGFzaFt0XT1pKSxpfTtaYy5wcm90b3R5cGUuYWRkSW1hZ2U9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImltYWdlIGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX2lkSGFzaFt0XTtpZihtKGkpKXJldHVybiBpO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXtpZihlPWUodCksIW0oZSkpdGhyb3cgbmV3IFkoImltYWdlIGlzIHJlcXVpcmVkLiIpfWVsc2UodHlwZW9mIGU9PSJzdHJpbmcifHxlIGluc3RhbmNlb2YgdG4pJiYoZT10bi5jcmVhdGVJZk5lZWRlZChlKS5mZXRjaEltYWdlKCkpO2xldCBuPXRoaXM7cmV0dXJuIGk9UHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oZnVuY3Rpb24ocyl7bGV0IG89akwobixzKTtyZXR1cm4gbi5faW5kZXhIYXNoW3RdPW8sb30pLHRoaXMuX2lkSGFzaFt0XT1pLGl9O1pjLnByb3RvdHlwZS5hZGRTdWJSZWdpb249ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInN1YlJlZ2lvbiBpcyByZXF1aXJlZC4iKTtsZXQgaT10aGlzLl9pZEhhc2hbdF07aWYoIW0oaSkpdGhyb3cgbmV3IGtlKGBpbWFnZSB3aXRoIGlkICIke3R9IiBub3QgZm91bmQgaW4gdGhlIGF0bGFzLmApO2xldCBuPXRoaXM7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKS50aGVuKGZ1bmN0aW9uKHMpe2lmKHM9PT0tMSlyZXR1cm4tMTtsZXQgbz1uLl90ZXh0dXJlLndpZHRoLHI9bi5fdGV4dHVyZS5oZWlnaHQsYT1uLl90ZXh0dXJlQ29vcmRpbmF0ZXNbc10saD1hLngrZS54L28sQT1hLnkrZS55L3IsZD1lLndpZHRoL28sZj1lLmhlaWdodC9yLEU9bi5fdGV4dHVyZUNvb3JkaW5hdGVzLnB1c2gobmV3IG1pKGgsQSxkLGYpKS0xO3JldHVybiBuLl9pbmRleEhhc2hbdF09RSxuLl9ndWlkPUdzKCksRX0pfTtaYy5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07WmMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGV4dHVyZT10aGlzLl90ZXh0dXJlJiZ0aGlzLl90ZXh0dXJlLmRlc3Ryb3koKSxsaSh0aGlzKX07U0U9WmN9KTtmdW5jdGlvbiBMcih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fc2NlbmU9dC5zY2VuZSx0aGlzLl9iYXRjaFRhYmxlPXQuYmF0Y2hUYWJsZSx0aGlzLl90ZXh0dXJlQXRsYXM9dm9pZCAwLHRoaXMuX3RleHR1cmVBdGxhc0dVSUQ9dm9pZCAwLHRoaXMuX2Rlc3Ryb3lUZXh0dXJlQXRsYXM9ITAsdGhpcy5fc3A9dm9pZCAwLHRoaXMuX3NwVHJhbnNsdWNlbnQ9dm9pZCAwLHRoaXMuX3JzT3BhcXVlPXZvaWQgMCx0aGlzLl9yc1RyYW5zbHVjZW50PXZvaWQgMCx0aGlzLl92YWY9dm9pZCAwLHRoaXMuX2JpbGxib2FyZHM9W10sdGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlPVtdLHRoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZUluZGV4PTAsdGhpcy5fYmlsbGJvYXJkc1JlbW92ZWQ9ITEsdGhpcy5fY3JlYXRlVmVydGV4QXJyYXk9ITEsdGhpcy5fc2hhZGVyUm90YXRpb249ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJSb3RhdGlvbj0hMSx0aGlzLl9zaGFkZXJBbGlnbmVkQXhpcz0hMSx0aGlzLl9jb21waWxlZFNoYWRlckFsaWduZWRBeGlzPSExLHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPSExLHRoaXMuX2NvbXBpbGVkU2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlclBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPSExLHRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj0hMSx0aGlzLl9jb21waWxlZFNoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj0hMSx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlPSExLHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQ9ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJDbGFtcFRvR3JvdW5kPSExLHRoaXMuX3Byb3BlcnRpZXNDaGFuZ2VkPW5ldyBVaW50MzJBcnJheSh4VCksdGhpcy5fbWF4U2l6ZT0wLHRoaXMuX21heEV5ZU9mZnNldD0wLHRoaXMuX21heFNjYWxlPTEsdGhpcy5fbWF4UGl4ZWxPZmZzZXQ9MCx0aGlzLl9hbGxIb3Jpem9udGFsQ2VudGVyPSEwLHRoaXMuX2FsbFZlcnRpY2FsQ2VudGVyPSEwLHRoaXMuX2FsbFNpemVkSW5NZXRlcnM9ITAsdGhpcy5fYmFzZVZvbHVtZT1uZXcgTnQsdGhpcy5fYmFzZVZvbHVtZVdDPW5ldyBOdCx0aGlzLl9iYXNlVm9sdW1lMkQ9bmV3IE50LHRoaXMuX2JvdW5kaW5nVm9sdW1lPW5ldyBOdCx0aGlzLl9ib3VuZGluZ1ZvbHVtZURpcnR5PSExLHRoaXMuX2NvbG9yQ29tbWFuZHM9W10sdGhpcy5zaG93PVoodC5zaG93LCEwKSx0aGlzLm1vZGVsTWF0cml4PWF0LmNsb25lKFoodC5tb2RlbE1hdHJpeCxhdC5JREVOVElUWSkpLHRoaXMuX21vZGVsTWF0cml4PWF0LmNsb25lKGF0LklERU5USVRZKSx0aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPVoodC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSwhMSksdGhpcy5kZWJ1Z1Nob3dUZXh0dXJlQXRsYXM9Wih0LmRlYnVnU2hvd1RleHR1cmVBdGxhcywhMSksdGhpcy5ibGVuZE9wdGlvbj1aKHQuYmxlbmRPcHRpb24sV24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVCksdGhpcy5fYmxlbmRPcHRpb249dm9pZCAwLHRoaXMuX21vZGU9eWUuU0NFTkUzRCx0aGlzLl9idWZmZXJzVXNhZ2U9W2FpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXXSx0aGlzLl9oaWdobGlnaHRDb2xvcj1adC5jbG9uZShadC5XSElURSk7bGV0IGU9dGhpczt0aGlzLl91bmlmb3Jtcz17dV9hdGxhczpmdW5jdGlvbigpe3JldHVybiBlLl90ZXh0dXJlQXRsYXMudGV4dHVyZX0sdV9oaWdobGlnaHRDb2xvcjpmdW5jdGlvbigpe3JldHVybiBlLl9oaWdobGlnaHRDb2xvcn19O2xldCBpPXRoaXMuX3NjZW5lO20oaSkmJm0oaS50ZXJyYWluUHJvdmlkZXJDaGFuZ2VkKSYmKHRoaXMuX3JlbW92ZUNhbGxiYWNrRnVuYz1pLnRlcnJhaW5Qcm92aWRlckNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbigpe2xldCBuPXRoaXMuX2JpbGxib2FyZHMscz1uLmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKW0obltvXSkmJm5bb10uX3VwZGF0ZUNsYW1waW5nKCl9LHRoaXMpKX1mdW5jdGlvbiBleSh0KXtsZXQgZT10Lmxlbmd0aDtmb3IobGV0IGk9MDtpPGU7KytpKXRbaV0mJnRbaV0uX2Rlc3Ryb3koKX1mdW5jdGlvbiBQVCh0KXtpZih0Ll9iaWxsYm9hcmRzUmVtb3ZlZCl7dC5fYmlsbGJvYXJkc1JlbW92ZWQ9ITE7bGV0IGU9W10saT10Ll9iaWxsYm9hcmRzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTAsbz0wO3M8bjsrK3Mpe2xldCByPWlbc107bShyKSYmKHIuX2luZGV4PW8rKyxlLnB1c2gocikpfXQuX2JpbGxib2FyZHM9ZX19ZnVuY3Rpb24gS3R0KHQpe2xldCBpPXQuY2FjaGUuYmlsbGJvYXJkQ29sbGVjdGlvbl9pbmRleEJ1ZmZlckJhdGNoZWQ7aWYobShpKSlyZXR1cm4gaTtsZXQgbj0xNjM4NCo2LTYscz1uZXcgVWludDE2QXJyYXkobik7Zm9yKGxldCBvPTAscj0wO288bjtvKz02LHIrPTQpc1tvXT1yLHNbbysxXT1yKzEsc1tvKzJdPXIrMixzW28rM109ciswLHNbbys0XT1yKzIsc1tvKzVdPXIrMztyZXR1cm4gaT1DYS5jcmVhdGVJbmRleEJ1ZmZlcih7Y29udGV4dDp0LHR5cGVkQXJyYXk6cyx1c2FnZTphaS5TVEFUSUNfRFJBVyxpbmRleERhdGF0eXBlOnRlLlVOU0lHTkVEX1NIT1JUfSksaS52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlPSExLHQuY2FjaGUuYmlsbGJvYXJkQ29sbGVjdGlvbl9pbmRleEJ1ZmZlckJhdGNoZWQ9aSxpfWZ1bmN0aW9uIFh0dCh0KXtsZXQgZT10LmNhY2hlLmJpbGxib2FyZENvbGxlY3Rpb25faW5kZXhCdWZmZXJJbnN0YW5jZWQ7cmV0dXJuIG0oZSl8fChlPUNhLmNyZWF0ZUluZGV4QnVmZmVyKHtjb250ZXh0OnQsdHlwZWRBcnJheTpuZXcgVWludDE2QXJyYXkoWzAsMSwyLDAsMiwzXSksdXNhZ2U6YWkuU1RBVElDX0RSQVcsaW5kZXhEYXRhdHlwZTp0ZS5VTlNJR05FRF9TSE9SVH0pLGUudmVydGV4QXJyYXlEZXN0cm95YWJsZT0hMSx0LmNhY2hlLmJpbGxib2FyZENvbGxlY3Rpb25faW5kZXhCdWZmZXJJbnN0YW5jZWQ9ZSksZX1mdW5jdGlvbiBxdHQodCl7bGV0IGU9dC5jYWNoZS5iaWxsYm9hcmRDb2xsZWN0aW9uX3ZlcnRleEJ1ZmZlckluc3RhbmNlZDtyZXR1cm4gbShlKXx8KGU9Q2EuY3JlYXRlVmVydGV4QnVmZmVyKHtjb250ZXh0OnQsdHlwZWRBcnJheTpuZXcgRmxvYXQzMkFycmF5KFswLDAsMSwwLDEsMSwwLDFdKSx1c2FnZTphaS5TVEFUSUNfRFJBV30pLGUudmVydGV4QXJyYXlEZXN0cm95YWJsZT0hMSx0LmNhY2hlLmJpbGxib2FyZENvbGxlY3Rpb25fdmVydGV4QnVmZmVySW5zdGFuY2VkPWUpLGV9ZnVuY3Rpb24gJHR0KHQsZSxpLG4scyxvKXtsZXQgcj1be2luZGV4OmFuLnBvc2l0aW9uSGlnaEFuZFNjYWxlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW1ZFXX0se2luZGV4OmFuLnBvc2l0aW9uTG93QW5kUm90YXRpb24sY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbVkVdfSx7aW5kZXg6YW4uY29tcHJlc3NlZEF0dHJpYnV0ZTAsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbSExdfSx7aW5kZXg6YW4uY29tcHJlc3NlZEF0dHJpYnV0ZTEsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbWExdfSx7aW5kZXg6YW4uY29tcHJlc3NlZEF0dHJpYnV0ZTIsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbekxdfSx7aW5kZXg6YW4uZXllT2Zmc2V0LGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW3ZMXX0se2luZGV4OmFuLnNjYWxlQnlEaXN0YW5jZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVtLTF19LHtpbmRleDphbi5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVtxTF19LHtpbmRleDphbi5jb21wcmVzc2VkQXR0cmlidXRlMyxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVskTF19LHtpbmRleDphbi50ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kc09yTGFiZWxUcmFuc2xhdGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbSHR0XX1dO24mJnIucHVzaCh7aW5kZXg6YW4uZGlyZWN0aW9uLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mixjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx2ZXJ0ZXhCdWZmZXI6cXR0KHQpfSksbShzKSYmci5wdXNoKHtpbmRleDphbi5hX2JhdGNoSWQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGJ1ZmZlclVzYWdlOmFpLlNUQVRJQ19EUkFXfSksbyYmci5wdXNoKHtpbmRleDphbi5zZGYsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbdHldfSk7bGV0IGE9bj9lOjQqZTtyZXR1cm4gbmV3IGZJKHQscixhLG4pfWZ1bmN0aW9uIGl5KHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLnBvc2l0aW9uSGlnaEFuZFNjYWxlXSxhPW5bYW4ucG9zaXRpb25Mb3dBbmRSb3RhdGlvbl0saD1zLl9nZXRBY3R1YWxQb3NpdGlvbigpO3QuX21vZGU9PT15ZS5TQ0VORTNEJiYoTnQuZXhwYW5kKHQuX2Jhc2VWb2x1bWUsaCx0Ll9iYXNlVm9sdW1lKSx0Ll9ib3VuZGluZ1ZvbHVtZURpcnR5PSEwKSxCbi5mcm9tQ2FydGVzaWFuKGgsUVQpO2xldCBBPXMuc2NhbGUsZD1zLnJvdGF0aW9uO2QhPT0wJiYodC5fc2hhZGVyUm90YXRpb249ITApLHQuX21heFNjYWxlPU1hdGgubWF4KHQuX21heFNjYWxlLEEpO2xldCBmPVFULmhpZ2gsRT1RVC5sb3c7dC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxmLngsZi55LGYueixBKSxhKG8sRS54LEUueSxFLnosZCkpOihvPXMuX2luZGV4KjQscihvKzAsZi54LGYueSxmLnosQSkscihvKzEsZi54LGYueSxmLnosQSkscihvKzIsZi54LGYueSxmLnosQSkscihvKzMsZi54LGYueSxmLnosQSksYShvKzAsRS54LEUueSxFLnosZCksYShvKzEsRS54LEUueSxFLnosZCksYShvKzIsRS54LEUueSxFLnosZCksYShvKzMsRS54LEUueSxFLnosZCkpfWZ1bmN0aW9uIEF5KHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLmNvbXByZXNzZWRBdHRyaWJ1dGUwXSxhPXMucGl4ZWxPZmZzZXQsaD1hLngsQT1hLnksZD1zLl90cmFuc2xhdGUsZj1kLngsRT1kLnk7dC5fbWF4UGl4ZWxPZmZzZXQ9TWF0aC5tYXgodC5fbWF4UGl4ZWxPZmZzZXQsTWF0aC5hYnMoaCtmKSxNYXRoLmFicygtQStFKSk7bGV0IF89cy5ob3Jpem9udGFsT3JpZ2luLFI9cy5fdmVydGljYWxPcmlnaW4sST1zLnNob3cmJnMuY2x1c3RlclNob3c7cy5jb2xvci5hbHBoYT09PTAmJihJPSExKSxSPT09bW4uQkFTRUxJTkUmJihSPW1uLkJPVFRPTSksdC5fYWxsSG9yaXpvbnRhbENlbnRlcj10Ll9hbGxIb3Jpem9udGFsQ2VudGVyJiZfPT09dG8uQ0VOVEVSLHQuX2FsbFZlcnRpY2FsQ2VudGVyPXQuX2FsbFZlcnRpY2FsQ2VudGVyJiZSPT09bW4uQ0VOVEVSO2xldCBDPTAsTj0wLFQ9MCxGPTAsYj1zLl9pbWFnZUluZGV4O2lmKGIhPT0tMSl7bGV0IEg9aVtiXTtpZighbShIKSl0aHJvdyBuZXcgWShgSW52YWxpZCBiaWxsYm9hcmQgaW1hZ2UgaW5kZXg6ICR7Yn1gKTtDPUgueCxOPUgueSxUPUgud2lkdGgsRj1ILmhlaWdodH1sZXQgRz1DK1QsTT1OK0YsUT1NYXRoLmZsb29yKEwuY2xhbXAoaCwtUXIsUXIpK1FyKSp0ZXQ7USs9KF8rMSkqZWV0LFErPShSKzEpKmlldCxRKz0oST8xOjApKm55O2xldCBVPU1hdGguZmxvb3IoTC5jbGFtcChBLC1RcixRcikrUXIpKklBLGs9TWF0aC5mbG9vcihMLmNsYW1wKGYsLVFyLFFyKStRcikqSUEseT0oTC5jbGFtcChFLC1RcixRcikrUXIpKm5ldCxjPU1hdGguZmxvb3IoeSksZz1NYXRoLmZsb29yKCh5LWMpKklBKTtVKz1jLGsrPWcsa3IueD1DLGtyLnk9TjtsZXQgVj1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhrcik7a3IueD1HO2xldCBEPVlpLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKGtyKTtrci55PU07bGV0IHc9WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoa3IpO2tyLng9QztsZXQgeD1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhrcik7dC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxRLFUsayxWKSk6KG89cy5faW5kZXgqNCxyKG8rMCxRK3N5LFUsayxWKSxyKG8rMSxRK295LFUsayxEKSxyKG8rMixRK3J5LFUsayx3KSxyKG8rMyxRK2F5LFUsayx4KSl9ZnVuY3Rpb24gaHkodCxlLGksbixzKXtsZXQgbyxyPW5bYW4uY29tcHJlc3NlZEF0dHJpYnV0ZTFdLGE9cy5hbGlnbmVkQXhpcztsLmVxdWFscyhhLGwuWkVSTyl8fCh0Ll9zaGFkZXJBbGlnbmVkQXhpcz0hMCk7bGV0IGg9MCxBPTEsZD0xLGY9MSxFPXMudHJhbnNsdWNlbmN5QnlEaXN0YW5jZTttKEUpJiYoaD1FLm5lYXIsQT1FLm5lYXJWYWx1ZSxkPUUuZmFyLGY9RS5mYXJWYWx1ZSwoQSE9PTF8fGYhPT0xKSYmKHQuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9ITApKTtsZXQgXz0wLFI9cy5faW1hZ2VJbmRleDtpZihSIT09LTEpe2xldCBGPWlbUl07aWYoIW0oRikpdGhyb3cgbmV3IFkoYEludmFsaWQgYmlsbGJvYXJkIGltYWdlIGluZGV4OiAke1J9YCk7Xz1GLndpZHRofWxldCBJPXQuX3RleHR1cmVBdGxhcy50ZXh0dXJlLndpZHRoLEM9TWF0aC5yb3VuZChaKHMud2lkdGgsSSpfKSk7dC5fbWF4U2l6ZT1NYXRoLm1heCh0Ll9tYXhTaXplLEMpO2xldCBOPUwuY2xhbXAoQywwLHltKSxUPTA7TWF0aC5hYnMobC5tYWduaXR1ZGVTcXVhcmVkKGEpLTEpPEwuRVBTSUxPTjYmJihUPVlpLm9jdEVuY29kZUZsb2F0KGEpKSxBPUwuY2xhbXAoQSwwLDEpLEE9QT09PTE/MjU1OkEqMjU1fDAsTj1OKklBK0EsZj1MLmNsYW1wKGYsMCwxKSxmPWY9PT0xPzI1NTpmKjI1NXwwLFQ9VCpJQStmLHQuX2luc3RhbmNlZD8obz1zLl9pbmRleCxyKG8sTixULGgsZCkpOihvPXMuX2luZGV4KjQscihvKzAsTixULGgsZCkscihvKzEsTixULGgsZCkscihvKzIsTixULGgsZCkscihvKzMsTixULGgsZCkpfWZ1bmN0aW9uIHlUKHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLmNvbXByZXNzZWRBdHRyaWJ1dGUyXSxhPXMuY29sb3IsaD1tKHQuX2JhdGNoVGFibGUpP1p0LldISVRFOnMuZ2V0UGlja0lkKGUuY29udGV4dCkuY29sb3IsQT1zLnNpemVJbk1ldGVycz8xOjAsZD1NYXRoLmFicyhsLm1hZ25pdHVkZVNxdWFyZWQocy5hbGlnbmVkQXhpcyktMSk8TC5FUFNJTE9ONj8xOjA7dC5fYWxsU2l6ZWRJbk1ldGVycz10Ll9hbGxTaXplZEluTWV0ZXJzJiZBPT09MTtsZXQgZj0wLEU9cy5faW1hZ2VJbmRleDtpZihFIT09LTEpe2xldCBRPWlbRV07aWYoIW0oUSkpdGhyb3cgbmV3IFkoYEludmFsaWQgYmlsbGJvYXJkIGltYWdlIGluZGV4OiAke0V9YCk7Zj1RLmhlaWdodH1sZXQgXz10Ll90ZXh0dXJlQXRsYXMudGV4dHVyZS5kaW1lbnNpb25zLFI9TWF0aC5yb3VuZChaKHMuaGVpZ2h0LF8ueSpmKSk7dC5fbWF4U2l6ZT1NYXRoLm1heCh0Ll9tYXhTaXplLFIpO2xldCBJPVoocy5fbGFiZWxIb3Jpem9udGFsT3JpZ2luLC0yKTtJKz0yO2xldCBDPVIqbnkrSSxOPVp0LmZsb2F0VG9CeXRlKGEucmVkKSxUPVp0LmZsb2F0VG9CeXRlKGEuZ3JlZW4pLEY9WnQuZmxvYXRUb0J5dGUoYS5ibHVlKSxiPU4qeW0rVCpJQStGO049WnQuZmxvYXRUb0J5dGUoaC5yZWQpLFQ9WnQuZmxvYXRUb0J5dGUoaC5ncmVlbiksRj1adC5mbG9hdFRvQnl0ZShoLmJsdWUpO2xldCBHPU4qeW0rVCpJQStGLE09WnQuZmxvYXRUb0J5dGUoYS5hbHBoYSkqeW0rWnQuZmxvYXRUb0J5dGUoaC5hbHBoYSkqSUE7TSs9QSoyK2QsdC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxiLEcsTSxDKSk6KG89cy5faW5kZXgqNCxyKG8rMCxiLEcsTSxDKSxyKG8rMSxiLEcsTSxDKSxyKG8rMixiLEcsTSxDKSxyKG8rMyxiLEcsTSxDKSl9ZnVuY3Rpb24gd1QodCxlLGksbixzKXtsZXQgbyxyPW5bYW4uZXllT2Zmc2V0XSxhPXMuZXllT2Zmc2V0LGg9YS56O2lmKHMuX2hlaWdodFJlZmVyZW5jZSE9PVdyLk5PTkUmJihoKj0xLjAwNSksdC5fbWF4RXllT2Zmc2V0PU1hdGgubWF4KHQuX21heEV5ZU9mZnNldCxNYXRoLmFicyhhLngpLE1hdGguYWJzKGEueSksTWF0aC5hYnMoaCkpLHQuX2luc3RhbmNlZCl7bGV0IEE9MCxkPTAsZj1zLl9pbWFnZUluZGV4O2lmKGYhPT0tMSl7bGV0IF89aVtmXTtpZighbShfKSl0aHJvdyBuZXcgWShgSW52YWxpZCBiaWxsYm9hcmQgaW1hZ2UgaW5kZXg6ICR7Zn1gKTtBPV8ud2lkdGgsZD1fLmhlaWdodH1rci54PUEsa3IueT1kO2xldCBFPVlpLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKGtyKTtvPXMuX2luZGV4LHIobyxhLngsYS55LGgsRSl9ZWxzZSBvPXMuX2luZGV4KjQscihvKzAsYS54LGEueSxoLDApLHIobysxLGEueCxhLnksaCwwKSxyKG8rMixhLngsYS55LGgsMCkscihvKzMsYS54LGEueSxoLDApfWZ1bmN0aW9uIGN5KHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLnNjYWxlQnlEaXN0YW5jZV0sYT0wLGg9MSxBPTEsZD0xLGY9cy5zY2FsZUJ5RGlzdGFuY2U7bShmKSYmKGE9Zi5uZWFyLGg9Zi5uZWFyVmFsdWUsQT1mLmZhcixkPWYuZmFyVmFsdWUsKGghPT0xfHxkIT09MSkmJih0Ll9zaGFkZXJTY2FsZUJ5RGlzdGFuY2U9ITApKSx0Ll9pbnN0YW5jZWQ/KG89cy5faW5kZXgscihvLGEsaCxBLGQpKToobz1zLl9pbmRleCo0LHIobyswLGEsaCxBLGQpLHIobysxLGEsaCxBLGQpLHIobysyLGEsaCxBLGQpLHIobyszLGEsaCxBLGQpKX1mdW5jdGlvbiBseSh0LGUsaSxuLHMpe2xldCBvLHI9blthbi5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZV0sYT0wLGg9MSxBPTEsZD0xLGY9cy5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZTttKGYpJiYoYT1mLm5lYXIsaD1mLm5lYXJWYWx1ZSxBPWYuZmFyLGQ9Zi5mYXJWYWx1ZSwoaCE9PTF8fGQhPT0xKSYmKHQuX3NoYWRlclBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPSEwKSksdC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxhLGgsQSxkKSk6KG89cy5faW5kZXgqNCxyKG8rMCxhLGgsQSxkKSxyKG8rMSxhLGgsQSxkKSxyKG8rMixhLGgsQSxkKSxyKG8rMyxhLGgsQSxkKSl9ZnVuY3Rpb24gZHkodCxlLGksbixzKXtsZXQgbyxyPW5bYW4uY29tcHJlc3NlZEF0dHJpYnV0ZTNdLGE9MCxoPU51bWJlci5NQVhfVkFMVUUsQT1zLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjttKEEpJiYoYT1BLm5lYXIsaD1BLmZhcixhKj1hLGgqPWgsdC5fc2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPSEwKTtsZXQgZD1zLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSxmPWdsKHMuaGVpZ2h0UmVmZXJlbmNlKSYmZS5jb250ZXh0LmRlcHRoVGV4dHVyZTttKGQpfHwoZD1mPzVlMzowKSxkKj1kLChmfHxkPjApJiYodC5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2U9ITAsZD09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmKGQ9LTEpKTtsZXQgRSxfO2lmKG0ocy5fbGFiZWxEaW1lbnNpb25zKSlfPXMuX2xhYmVsRGltZW5zaW9ucy54LEU9cy5fbGFiZWxEaW1lbnNpb25zLnk7ZWxzZXtsZXQgTj0wLFQ9MCxGPXMuX2ltYWdlSW5kZXg7aWYoRiE9PS0xKXtsZXQgRz1pW0ZdO2lmKCFtKEcpKXRocm93IG5ldyBZKGBJbnZhbGlkIGJpbGxib2FyZCBpbWFnZSBpbmRleDogJHtGfWApO049Ry5oZWlnaHQsVD1HLndpZHRofUU9TWF0aC5yb3VuZChaKHMuaGVpZ2h0LHQuX3RleHR1cmVBdGxhcy50ZXh0dXJlLmRpbWVuc2lvbnMueSpOKSk7bGV0IGI9dC5fdGV4dHVyZUF0bGFzLnRleHR1cmUud2lkdGg7Xz1NYXRoLnJvdW5kKFoocy53aWR0aCxiKlQpKX1sZXQgUj1NYXRoLmZsb29yKEwuY2xhbXAoXywwLGtUKSksST1NYXRoLmZsb29yKEwuY2xhbXAoRSwwLGtUKSksQz1SKmtUK0k7dC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxhLGgsZCxDKSk6KG89cy5faW5kZXgqNCxyKG8rMCxhLGgsZCxDKSxyKG8rMSxhLGgsZCxDKSxyKG8rMixhLGgsZCxDKSxyKG8rMyxhLGgsZCxDKSl9ZnVuY3Rpb24gbXkodCxlLGksbixzKXtpZihnbChzLmhlaWdodFJlZmVyZW5jZSkpe2xldCBSPXQuX3NjZW5lLEk9ZS5jb250ZXh0LEM9ZS5nbG9iZVRyYW5zbHVjZW5jeVN0YXRlLnRyYW5zbHVjZW50LE49bShSLmdsb2JlKSYmUi5nbG9iZS5kZXB0aFRlc3RBZ2FpbnN0VGVycmFpbjt0Ll9zaGFkZXJDbGFtcFRvR3JvdW5kPUkuZGVwdGhUZXh0dXJlJiYhQyYmTn1sZXQgbyxyPW5bYW4udGV4dHVyZUNvb3JkaW5hdGVCb3VuZHNPckxhYmVsVHJhbnNsYXRlXTtpZihlbi5tYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHM+MCl7bGV0IFI9MCxJPTA7bShzLl9sYWJlbFRyYW5zbGF0ZSkmJihSPXMuX2xhYmVsVHJhbnNsYXRlLngsST1zLl9sYWJlbFRyYW5zbGF0ZS55KSx0Ll9pbnN0YW5jZWQ/KG89cy5faW5kZXgscihvLFIsSSwwLDApKToobz1zLl9pbmRleCo0LHIobyswLFIsSSwwLDApLHIobysxLFIsSSwwLDApLHIobysyLFIsSSwwLDApLHIobyszLFIsSSwwLDApKTtyZXR1cm59bGV0IGE9MCxoPTAsQT0wLGQ9MCxmPXMuX2ltYWdlSW5kZXg7aWYoZiE9PS0xKXtsZXQgUj1pW2ZdO2lmKCFtKFIpKXRocm93IG5ldyBZKGBJbnZhbGlkIGJpbGxib2FyZCBpbWFnZSBpbmRleDogJHtmfWApO2E9Ui54LGg9Ui55LEE9Ui53aWR0aCxkPVIuaGVpZ2h0fWxldCBFPWErQSxfPWgrZDt0Ll9pbnN0YW5jZWQ/KG89cy5faW5kZXgscihvLGEsaCxFLF8pKToobz1zLl9pbmRleCo0LHIobyswLGEsaCxFLF8pLHIobysxLGEsaCxFLF8pLHIobysyLGEsaCxFLF8pLHIobyszLGEsaCxFLF8pKX1mdW5jdGlvbiBzZXQodCxlLGksbixzKXtpZighbSh0Ll9iYXRjaFRhYmxlKSlyZXR1cm47bGV0IG89blthbi5hX2JhdGNoSWRdLHI9cy5fYmF0Y2hJbmRleCxhO3QuX2luc3RhbmNlZD8oYT1zLl9pbmRleCxvKGEscikpOihhPXMuX2luZGV4KjQsbyhhKzAsciksbyhhKzEsciksbyhhKzIsciksbyhhKzMscikpfWZ1bmN0aW9uIGZ5KHQsZSxpLG4scyl7aWYoIXQuX3NkZilyZXR1cm47bGV0IG8scj1uW2FuLnNkZl0sYT1zLm91dGxpbmVDb2xvcixoPXMub3V0bGluZVdpZHRoLEE9WnQuZmxvYXRUb0J5dGUoYS5yZWQpLGQ9WnQuZmxvYXRUb0J5dGUoYS5ncmVlbiksZj1adC5mbG9hdFRvQnl0ZShhLmJsdWUpLEU9QSp5bStkKklBK2YsXz1oL3BvLlJBRElVUyxSPVp0LmZsb2F0VG9CeXRlKGEuYWxwaGEpKnltK1p0LmZsb2F0VG9CeXRlKF8pKklBO3QuX2luc3RhbmNlZD8obz1zLl9pbmRleCxyKG8sRSxSKSk6KG89cy5faW5kZXgqNCxyKG8rMCxFK3N5LFIpLHIobysxLEUrb3ksUikscihvKzIsRStyeSxSKSxyKG8rMyxFK2F5LFIpKX1mdW5jdGlvbiBvZXQodCxlLGksbixzKXtpeSh0LGUsaSxuLHMpLEF5KHQsZSxpLG4scyksaHkodCxlLGksbixzKSx5VCh0LGUsaSxuLHMpLHdUKHQsZSxpLG4scyksY3kodCxlLGksbixzKSxseSh0LGUsaSxuLHMpLGR5KHQsZSxpLG4scyksbXkodCxlLGksbixzKSxzZXQodCxlLGksbixzKSxmeSh0LGUsaSxuLHMpfWZ1bmN0aW9uIExUKHQsZSxpLG4scyxvKXtsZXQgcjtuLm1vZGU9PT15ZS5TQ0VORTNEPyhyPXQuX2Jhc2VWb2x1bWUsdC5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMCk6cj10Ll9iYXNlVm9sdW1lMkQ7bGV0IGE9W107Zm9yKGxldCBoPTA7aDxpOysraCl7bGV0IEE9ZVtoXSxkPUEucG9zaXRpb24sZj11bi5fY29tcHV0ZUFjdHVhbFBvc2l0aW9uKEEsZCxuLHMpO20oZikmJihBLl9zZXRBY3R1YWxQb3NpdGlvbihmKSxvP2EucHVzaChmKTpOdC5leHBhbmQocixmLHIpKX1vJiZOdC5mcm9tUG9pbnRzKGEscil9ZnVuY3Rpb24gcmV0KHQsZSl7bGV0IGk9ZS5tb2RlLG49dC5fYmlsbGJvYXJkcyxzPXQuX2JpbGxib2FyZHNUb1VwZGF0ZSxvPXQuX21vZGVsTWF0cml4O3QuX2NyZWF0ZVZlcnRleEFycmF5fHx0Ll9tb2RlIT09aXx8aSE9PXllLlNDRU5FM0QmJiFhdC5lcXVhbHMobyx0Lm1vZGVsTWF0cml4KT8odC5fbW9kZT1pLGF0LmNsb25lKHQubW9kZWxNYXRyaXgsbyksdC5fY3JlYXRlVmVydGV4QXJyYXk9ITAsKGk9PT15ZS5TQ0VORTNEfHxpPT09eWUuU0NFTkUyRHx8aT09PXllLkNPTFVNQlVTX1ZJRVcpJiZMVCh0LG4sbi5sZW5ndGgsZSxvLCEwKSk6aT09PXllLk1PUlBISU5HP0xUKHQsbixuLmxlbmd0aCxlLG8sITApOihpPT09eWUuU0NFTkUyRHx8aT09PXllLkNPTFVNQlVTX1ZJRVcpJiZMVCh0LHMsdC5fYmlsbGJvYXJkc1RvVXBkYXRlSW5kZXgsZSxvLCExKX1mdW5jdGlvbiBhZXQodCxlLGkpe2xldCBuPTE7KCF0Ll9hbGxTaXplZEluTWV0ZXJzfHx0Ll9tYXhQaXhlbE9mZnNldCE9PTApJiYobj1lLmNhbWVyYS5nZXRQaXhlbFNpemUoaSxlLmNvbnRleHQuZHJhd2luZ0J1ZmZlcldpZHRoLGUuY29udGV4dC5kcmF3aW5nQnVmZmVySGVpZ2h0KSk7bGV0IHM9bip0Ll9tYXhTY2FsZSp0Ll9tYXhTaXplKjI7dC5fYWxsSG9yaXpvbnRhbENlbnRlciYmdC5fYWxsVmVydGljYWxDZW50ZXImJihzKj0uNSk7bGV0IG89bip0Ll9tYXhQaXhlbE9mZnNldCt0Ll9tYXhFeWVPZmZzZXQ7aS5yYWRpdXMrPXMrb31mdW5jdGlvbiBBZXQodCxlKXtsZXQgbj1lLmNyZWF0ZVZpZXdwb3J0UXVhZENvbW1hbmQoYHVuaWZvcm0gc2FtcGxlcjJEIGJpbGxib2FyZF90ZXh0dXJlOyAKaW4gdmVjMiB2X3RleHR1cmVDb29yZGluYXRlczsgCnZvaWQgbWFpbigpIAp7IAogICAgb3V0X0ZyYWdDb2xvciA9IHRleHR1cmUoYmlsbGJvYXJkX3RleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKTsgCn0gCmAse3VuaWZvcm1NYXA6e2JpbGxib2FyZF90ZXh0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVBdGxhcy50ZXh0dXJlfX19KTtyZXR1cm4gbi5wYXNzPW9zLk9WRVJMQVksbn12YXIgTHR0LFZFLEhMLHZMLHl0dCx3dHQseHR0LE9FLHpMLFB0dCxKdHQsS0wsWEwscUwsJEwsanR0LEh0dCx0eSx4VCxhbix2dHQsenR0LFVULFFULGtyLFFyLHltLGtULElBLHRldCxlZXQsaWV0LG55LG5ldCxzeSxveSxyeSxheSxoZXQsd20sSlQ9TygoKT0+e29oKCk7X2koKTtYZSgpO0h0KCk7YWUoKTtRbigpO29pKCk7YnQoKTttdCgpO1dzKCk7VnQoKTtUbCgpO0RpKCk7X2UoKTtGaSgpO3NzKCk7YUkoKTtObCgpO2dhKCk7Qm0oKTtXbSgpO01tKCk7UW0oKTtGbCgpO0JUKCk7VUwoKTtrTCgpO3NJKCk7a20oKTtFSSgpO09tKCk7Vm0oKTt1YSgpO19JKCk7TVQoKTtDRSgpO0x0dD11bi5TSE9XX0lOREVYLFZFPXVuLlBPU0lUSU9OX0lOREVYLEhMPXVuLlBJWEVMX09GRlNFVF9JTkRFWCx2TD11bi5FWUVfT0ZGU0VUX0lOREVYLHl0dD11bi5IT1JJWk9OVEFMX09SSUdJTl9JTkRFWCx3dHQ9dW4uVkVSVElDQUxfT1JJR0lOX0lOREVYLHh0dD11bi5TQ0FMRV9JTkRFWCxPRT11bi5JTUFHRV9JTkRFWF9JTkRFWCx6TD11bi5DT0xPUl9JTkRFWCxQdHQ9dW4uUk9UQVRJT05fSU5ERVgsSnR0PXVuLkFMSUdORURfQVhJU19JTkRFWCxLTD11bi5TQ0FMRV9CWV9ESVNUQU5DRV9JTkRFWCxYTD11bi5UUkFOU0xVQ0VOQ1lfQllfRElTVEFOQ0VfSU5ERVgscUw9dW4uUElYRUxfT0ZGU0VUX1NDQUxFX0JZX0RJU1RBTkNFX0lOREVYLCRMPXVuLkRJU1RBTkNFX0RJU1BMQVlfQ09ORElUSU9OLGp0dD11bi5ESVNBQkxFX0RFUFRIX0RJU1RBTkNFLEh0dD11bi5URVhUVVJFX0NPT1JESU5BVEVfQk9VTkRTLHR5PXVuLlNERl9JTkRFWCx4VD11bi5OVU1CRVJfT0ZfUFJPUEVSVElFUyx2dHQ9e3Bvc2l0aW9uSGlnaEFuZFNjYWxlOjAscG9zaXRpb25Mb3dBbmRSb3RhdGlvbjoxLGNvbXByZXNzZWRBdHRyaWJ1dGUwOjIsY29tcHJlc3NlZEF0dHJpYnV0ZTE6Myxjb21wcmVzc2VkQXR0cmlidXRlMjo0LGV5ZU9mZnNldDo1LHNjYWxlQnlEaXN0YW5jZTo2LHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOjcsY29tcHJlc3NlZEF0dHJpYnV0ZTM6OCx0ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kc09yTGFiZWxUcmFuc2xhdGU6OSxhX2JhdGNoSWQ6MTAsc2RmOjExfSx6dHQ9e2RpcmVjdGlvbjowLHBvc2l0aW9uSGlnaEFuZFNjYWxlOjEscG9zaXRpb25Mb3dBbmRSb3RhdGlvbjoyLGNvbXByZXNzZWRBdHRyaWJ1dGUwOjMsY29tcHJlc3NlZEF0dHJpYnV0ZTE6NCxjb21wcmVzc2VkQXR0cmlidXRlMjo1LGV5ZU9mZnNldDo2LHNjYWxlQnlEaXN0YW5jZTo3LHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOjgsY29tcHJlc3NlZEF0dHJpYnV0ZTM6OSx0ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kc09yTGFiZWxUcmFuc2xhdGU6MTAsYV9iYXRjaElkOjExLHNkZjoxMn07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTHIucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBQVCh0aGlzKSx0aGlzLl9iaWxsYm9hcmRzLmxlbmd0aH19LHRleHR1cmVBdGxhczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVBdGxhc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3RleHR1cmVBdGxhcyE9PXQmJih0aGlzLl90ZXh0dXJlQXRsYXM9dGhpcy5fZGVzdHJveVRleHR1cmVBdGxhcyYmdGhpcy5fdGV4dHVyZUF0bGFzJiZ0aGlzLl90ZXh0dXJlQXRsYXMuZGVzdHJveSgpLHRoaXMuX3RleHR1cmVBdGxhcz10LHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSEwKX19LGRlc3Ryb3lUZXh0dXJlQXRsYXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXN0cm95VGV4dHVyZUF0bGFzfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZGVzdHJveVRleHR1cmVBdGxhcz10fX19KTtMci5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe2xldCBlPW5ldyB1bih0LHRoaXMpO3JldHVybiBlLl9pbmRleD10aGlzLl9iaWxsYm9hcmRzLmxlbmd0aCx0aGlzLl9iaWxsYm9hcmRzLnB1c2goZSksdGhpcy5fY3JlYXRlVmVydGV4QXJyYXk9ITAsZX07THIucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb250YWlucyh0KT8odGhpcy5fYmlsbGJvYXJkc1t0Ll9pbmRleF09dm9pZCAwLHRoaXMuX2JpbGxib2FyZHNSZW1vdmVkPSEwLHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSEwLHQuX2Rlc3Ryb3koKSwhMCk6ITF9O0xyLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtleSh0aGlzLl9iaWxsYm9hcmRzKSx0aGlzLl9iaWxsYm9hcmRzPVtdLHRoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZT1bXSx0aGlzLl9iaWxsYm9hcmRzVG9VcGRhdGVJbmRleD0wLHRoaXMuX2JpbGxib2FyZHNSZW1vdmVkPSExLHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSEwfTtMci5wcm90b3R5cGUuX3VwZGF0ZUJpbGxib2FyZD1mdW5jdGlvbih0LGUpe3QuX2RpcnR5fHwodGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlW3RoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZUluZGV4KytdPXQpLCsrdGhpcy5fcHJvcGVydGllc0NoYW5nZWRbZV19O0xyLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdC5fYmlsbGJvYXJkQ29sbGVjdGlvbj09PXRoaXN9O0xyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigiaW5kZXgiLHQpLFBUKHRoaXMpLHRoaXMuX2JpbGxib2FyZHNbdF19O0xyLnByb3RvdHlwZS5jb21wdXRlTmV3QnVmZmVyc1VzYWdlPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fYnVmZmVyc1VzYWdlLGU9ITEsaT10aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZDtmb3IobGV0IG49MDtuPHhUOysrbil7bGV0IHM9aVtuXT09PTA/YWkuU1RBVElDX0RSQVc6YWkuU1RSRUFNX0RSQVc7ZT1lfHx0W25dIT09cyx0W25dPXN9cmV0dXJuIGV9O1FUPW5ldyBCbjtrcj1uZXcgbnQsUXI9MzI3NjgseW09NjU1MzYsa1Q9NDA5NixJQT0yNTYsdGV0PTEyOCxlZXQ9MzIsaWV0PTgsbnk9NCxuZXQ9MS8yNTYsc3k9MCxveT0yLHJ5PTMsYXk9MTtoZXQ9W107THIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZihQVCh0aGlzKSwhdGhpcy5zaG93KXJldHVybjtsZXQgZT10aGlzLl9iaWxsYm9hcmRzLGk9ZS5sZW5ndGgsbj10LmNvbnRleHQ7dGhpcy5faW5zdGFuY2VkPW4uaW5zdGFuY2VkQXJyYXlzLGFuPXRoaXMuX2luc3RhbmNlZD96dHQ6dnR0LFVUPXRoaXMuX2luc3RhbmNlZD9YdHQ6S3R0O2xldCBzPXRoaXMuX3RleHR1cmVBdGxhcztpZighbShzKSl7cz10aGlzLl90ZXh0dXJlQXRsYXM9bmV3IFNFKHtjb250ZXh0Om59KTtmb3IobGV0IFU9MDtVPGk7KytVKWVbVV0uX2xvYWRJbWFnZSgpfWxldCBvPXMudGV4dHVyZUNvb3JkaW5hdGVzO2lmKG8ubGVuZ3RoPT09MClyZXR1cm47cmV0KHRoaXMsdCksZT10aGlzLl9iaWxsYm9hcmRzLGk9ZS5sZW5ndGg7bGV0IHI9dGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlLGE9dGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlSW5kZXgsaD10aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCxBPXMuZ3VpZCxkPXRoaXMuX2NyZWF0ZVZlcnRleEFycmF5fHx0aGlzLl90ZXh0dXJlQXRsYXNHVUlEIT09QTt0aGlzLl90ZXh0dXJlQXRsYXNHVUlEPUE7bGV0IGYsRT10LnBhc3NlcyxfPUUucGljaztpZihkfHwhXyYmdGhpcy5jb21wdXRlTmV3QnVmZmVyc1VzYWdlKCkpe3RoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSExO2ZvcihsZXQgVT0wO1U8eFQ7KytVKWhbVV09MDtpZih0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLGk+MCl7dGhpcy5fdmFmPSR0dChuLGksdGhpcy5fYnVmZmVyc1VzYWdlLHRoaXMuX2luc3RhbmNlZCx0aGlzLl9iYXRjaFRhYmxlLHRoaXMuX3NkZiksZj10aGlzLl92YWYud3JpdGVycztmb3IobGV0IFU9MDtVPGk7KytVKXtsZXQgaz10aGlzLl9iaWxsYm9hcmRzW1VdO2suX2RpcnR5PSExLG9ldCh0aGlzLHQsbyxmLGspfXRoaXMuX3ZhZi5jb21taXQoVVQobikpfXRoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZUluZGV4PTB9ZWxzZSBpZihhPjApe2xldCBVPWhldDtVLmxlbmd0aD0wLChoW1ZFXXx8aFtQdHRdfHxoW3h0dF0pJiZVLnB1c2goaXkpLChoW09FXXx8aFtITF18fGhbeXR0XXx8aFt3dHRdfHxoW0x0dF0pJiYoVS5wdXNoKEF5KSx0aGlzLl9pbnN0YW5jZWQmJlUucHVzaCh3VCkpLChoW09FXXx8aFtKdHRdfHxoW1hMXSkmJihVLnB1c2goaHkpLFUucHVzaCh5VCkpLChoW09FXXx8aFt6TF0pJiZVLnB1c2goeVQpLGhbdkxdJiZVLnB1c2god1QpLGhbS0xdJiZVLnB1c2goY3kpLGhbcUxdJiZVLnB1c2gobHkpLChoWyRMXXx8aFtqdHRdfHxoW09FXXx8aFtWRV0pJiZVLnB1c2goZHkpLChoW09FXXx8aFtWRV0pJiZVLnB1c2gobXkpLGhbdHldJiZVLnB1c2goZnkpO2xldCBrPVUubGVuZ3RoO2lmKGY9dGhpcy5fdmFmLndyaXRlcnMsYS9pPi4xKXtmb3IobGV0IHk9MDt5PGE7Kyt5KXtsZXQgYz1yW3ldO2MuX2RpcnR5PSExO2ZvcihsZXQgZz0wO2c8azsrK2cpVVtnXSh0aGlzLHQsbyxmLGMpfXRoaXMuX3ZhZi5jb21taXQoVVQobikpfWVsc2V7Zm9yKGxldCB5PTA7eTxhOysreSl7bGV0IGM9clt5XTtjLl9kaXJ0eT0hMTtmb3IobGV0IGc9MDtnPGs7KytnKVVbZ10odGhpcyx0LG8sZixjKTt0aGlzLl9pbnN0YW5jZWQ/dGhpcy5fdmFmLnN1YkNvbW1pdChjLl9pbmRleCwxKTp0aGlzLl92YWYuc3ViQ29tbWl0KGMuX2luZGV4KjQsNCl9dGhpcy5fdmFmLmVuZFN1YkNvbW1pdHMoKX10aGlzLl9iaWxsYm9hcmRzVG9VcGRhdGVJbmRleD0wfWlmKGE+aSoxLjUmJihyLmxlbmd0aD1pKSwhbSh0aGlzLl92YWYpfHwhbSh0aGlzLl92YWYudmEpKXJldHVybjt0aGlzLl9ib3VuZGluZ1ZvbHVtZURpcnR5JiYodGhpcy5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMSxOdC50cmFuc2Zvcm0odGhpcy5fYmFzZVZvbHVtZSx0aGlzLm1vZGVsTWF0cml4LHRoaXMuX2Jhc2VWb2x1bWVXQykpO2xldCBSLEk9YXQuSURFTlRJVFk7dC5tb2RlPT09eWUuU0NFTkUzRD8oST10aGlzLm1vZGVsTWF0cml4LFI9TnQuY2xvbmUodGhpcy5fYmFzZVZvbHVtZVdDLHRoaXMuX2JvdW5kaW5nVm9sdW1lKSk6Uj1OdC5jbG9uZSh0aGlzLl9iYXNlVm9sdW1lMkQsdGhpcy5fYm91bmRpbmdWb2x1bWUpLGFldCh0aGlzLHQsUik7bGV0IEM9dGhpcy5fYmxlbmRPcHRpb24hPT10aGlzLmJsZW5kT3B0aW9uO2lmKHRoaXMuX2JsZW5kT3B0aW9uPXRoaXMuYmxlbmRPcHRpb24sQyl7dGhpcy5fYmxlbmRPcHRpb249PT1Xbi5PUEFRVUV8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc09wYXF1ZT1Zbi5mcm9tQ2FjaGUoe2RlcHRoVGVzdDp7ZW5hYmxlZDohMCxmdW5jOml0LkxFU1N9LGRlcHRoTWFzazohMH0pOnRoaXMuX3JzT3BhcXVlPXZvaWQgMDtsZXQgVT10aGlzLl9ibGVuZE9wdGlvbj09PVduLlRSQU5TTFVDRU5UO3RoaXMuX2JsZW5kT3B0aW9uPT09V24uVFJBTlNMVUNFTlR8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc1RyYW5zbHVjZW50PVluLmZyb21DYWNoZSh7ZGVwdGhUZXN0OntlbmFibGVkOiEwLGZ1bmM6VT9pdC5MRVFVQUw6aXQuTEVTU30sZGVwdGhNYXNrOlUsYmxlbmRpbmc6VXIuQUxQSEFfQkxFTkR9KTp0aGlzLl9yc1RyYW5zbHVjZW50PXZvaWQgMH10aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT10aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZXx8dC5taW5pbXVtRGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIT09MDtsZXQgTixULEYsYixHLE09ZW4ubWF4aW11bVZlcnRleFRleHR1cmVJbWFnZVVuaXRzPjA7aWYoQ3x8dGhpcy5fc2hhZGVyUm90YXRpb24hPT10aGlzLl9jb21waWxlZFNoYWRlclJvdGF0aW9ufHx0aGlzLl9zaGFkZXJBbGlnbmVkQXhpcyE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyQWxpZ25lZEF4aXN8fHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyU2NhbGVCeURpc3RhbmNlfHx0aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlIT09dGhpcy5fY29tcGlsZWRTaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlfHx0aGlzLl9zaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyUGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2V8fHRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9ufHx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2V8fHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQhPT10aGlzLl9jb21waWxlZFNoYWRlckNsYW1wVG9Hcm91bmR8fHRoaXMuX3NkZiE9PXRoaXMuX2NvbXBpbGVkU0RGKXtOPVFMLFQ9TUwsRz1bXSxtKHRoaXMuX2JhdGNoVGFibGUpJiYoRy5wdXNoKCJWRUNUT1JfVElMRSIpLE49dGhpcy5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjayghMSwiYV9iYXRjaElkIix2b2lkIDApKE4pLFQ9dGhpcy5fYmF0Y2hUYWJsZS5nZXRGcmFnbWVudFNoYWRlckNhbGxiYWNrKCExLHZvaWQgMCkoVCkpLEY9bmV3IE1pKHtkZWZpbmVzOkcsc291cmNlczpbTl19KSx0aGlzLl9pbnN0YW5jZWQmJkYuZGVmaW5lcy5wdXNoKCJJTlNUQU5DRUQiKSx0aGlzLl9zaGFkZXJSb3RhdGlvbiYmRi5kZWZpbmVzLnB1c2goIlJPVEFUSU9OIiksdGhpcy5fc2hhZGVyQWxpZ25lZEF4aXMmJkYuZGVmaW5lcy5wdXNoKCJBTElHTkVEX0FYSVMiKSx0aGlzLl9zaGFkZXJTY2FsZUJ5RGlzdGFuY2UmJkYuZGVmaW5lcy5wdXNoKCJFWUVfRElTVEFOQ0VfU0NBTElORyIpLHRoaXMuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UmJkYuZGVmaW5lcy5wdXNoKCJFWUVfRElTVEFOQ0VfVFJBTlNMVUNFTkNZIiksdGhpcy5fc2hhZGVyUGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UmJkYuZGVmaW5lcy5wdXNoKCJFWUVfRElTVEFOQ0VfUElYRUxfT0ZGU0VUIiksdGhpcy5fc2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uJiZGLmRlZmluZXMucHVzaCgiRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT04iKSx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSYmRi5kZWZpbmVzLnB1c2goIkRJU0FCTEVfREVQVEhfRElTVEFOQ0UiKSx0aGlzLl9zaGFkZXJDbGFtcFRvR3JvdW5kJiYoTT9GLmRlZmluZXMucHVzaCgiVkVSVEVYX0RFUFRIX0NIRUNLIik6Ri5kZWZpbmVzLnB1c2goIkZSQUdNRU5UX0RFUFRIX0NIRUNLIikpO2xldCBVPTEtcG8uQ1VUT0ZGO3RoaXMuX3NkZiYmRi5kZWZpbmVzLnB1c2goIlNERiIpO2xldCBrPW0odGhpcy5fYmF0Y2hUYWJsZSk/IlZFQ1RPUl9USUxFIjoiIjt0aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRV9BTkRfVFJBTlNMVUNFTlQmJihiPW5ldyBNaSh7ZGVmaW5lczpbIk9QQVFVRSIsa10sc291cmNlczpbVF19KSx0aGlzLl9zaGFkZXJDbGFtcFRvR3JvdW5kJiYoTT9iLmRlZmluZXMucHVzaCgiVkVSVEVYX0RFUFRIX0NIRUNLIik6Yi5kZWZpbmVzLnB1c2goIkZSQUdNRU5UX0RFUFRIX0NIRUNLIikpLHRoaXMuX3NkZiYmKGIuZGVmaW5lcy5wdXNoKCJTREYiKSxiLmRlZmluZXMucHVzaChgU0RGX0VER0UgJHtVfWApKSx0aGlzLl9zcD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6bixzaGFkZXJQcm9ncmFtOnRoaXMuX3NwLHZlcnRleFNoYWRlclNvdXJjZTpGLGZyYWdtZW50U2hhZGVyU291cmNlOmIsYXR0cmlidXRlTG9jYXRpb25zOmFufSksYj1uZXcgTWkoe2RlZmluZXM6WyJUUkFOU0xVQ0VOVCIsa10sc291cmNlczpbVF19KSx0aGlzLl9zaGFkZXJDbGFtcFRvR3JvdW5kJiYoTT9iLmRlZmluZXMucHVzaCgiVkVSVEVYX0RFUFRIX0NIRUNLIik6Yi5kZWZpbmVzLnB1c2goIkZSQUdNRU5UX0RFUFRIX0NIRUNLIikpLHRoaXMuX3NkZiYmKGIuZGVmaW5lcy5wdXNoKCJTREYiKSxiLmRlZmluZXMucHVzaChgU0RGX0VER0UgJHtVfWApKSx0aGlzLl9zcFRyYW5zbHVjZW50PUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dGhpcy5fc3BUcmFuc2x1Y2VudCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6RixmcmFnbWVudFNoYWRlclNvdXJjZTpiLGF0dHJpYnV0ZUxvY2F0aW9uczphbn0pKSx0aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRSYmKGI9bmV3IE1pKHtkZWZpbmVzOltrXSxzb3VyY2VzOltUXX0pLHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQmJihNP2IuZGVmaW5lcy5wdXNoKCJWRVJURVhfREVQVEhfQ0hFQ0siKTpiLmRlZmluZXMucHVzaCgiRlJBR01FTlRfREVQVEhfQ0hFQ0siKSksdGhpcy5fc2RmJiYoYi5kZWZpbmVzLnB1c2goIlNERiIpLGIuZGVmaW5lcy5wdXNoKGBTREZfRURHRSAke1V9YCkpLHRoaXMuX3NwPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dGhpcy5fc3AsdmVydGV4U2hhZGVyU291cmNlOkYsZnJhZ21lbnRTaGFkZXJTb3VyY2U6YixhdHRyaWJ1dGVMb2NhdGlvbnM6YW59KSksdGhpcy5fYmxlbmRPcHRpb249PT1Xbi5UUkFOU0xVQ0VOVCYmKGI9bmV3IE1pKHtkZWZpbmVzOltrXSxzb3VyY2VzOltUXX0pLHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQmJihNP2IuZGVmaW5lcy5wdXNoKCJWRVJURVhfREVQVEhfQ0hFQ0siKTpiLmRlZmluZXMucHVzaCgiRlJBR01FTlRfREVQVEhfQ0hFQ0siKSksdGhpcy5fc2RmJiYoYi5kZWZpbmVzLnB1c2goIlNERiIpLGIuZGVmaW5lcy5wdXNoKGBTREZfRURHRSAke1V9YCkpLHRoaXMuX3NwVHJhbnNsdWNlbnQ9RXMucmVwbGFjZUNhY2hlKHtjb250ZXh0Om4sc2hhZGVyUHJvZ3JhbTp0aGlzLl9zcFRyYW5zbHVjZW50LHZlcnRleFNoYWRlclNvdXJjZTpGLGZyYWdtZW50U2hhZGVyU291cmNlOmIsYXR0cmlidXRlTG9jYXRpb25zOmFufSkpLHRoaXMuX2NvbXBpbGVkU2hhZGVyUm90YXRpb249dGhpcy5fc2hhZGVyUm90YXRpb24sdGhpcy5fY29tcGlsZWRTaGFkZXJBbGlnbmVkQXhpcz10aGlzLl9zaGFkZXJBbGlnbmVkQXhpcyx0aGlzLl9jb21waWxlZFNoYWRlclNjYWxlQnlEaXN0YW5jZT10aGlzLl9zaGFkZXJTY2FsZUJ5RGlzdGFuY2UsdGhpcy5fY29tcGlsZWRTaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPXRoaXMuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdGhpcy5fY29tcGlsZWRTaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT10aGlzLl9zaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSx0aGlzLl9jb21waWxlZFNoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLl9zaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdGhpcy5fY29tcGlsZWRTaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT10aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSx0aGlzLl9jb21waWxlZFNoYWRlckNsYW1wVG9Hcm91bmQ9dGhpcy5fc2hhZGVyQ2xhbXBUb0dyb3VuZCx0aGlzLl9jb21waWxlZFNERj10aGlzLl9zZGZ9bGV0IFE9dC5jb21tYW5kTGlzdDtpZihFLnJlbmRlcnx8RS5waWNrKXtsZXQgVT10aGlzLl9jb2xvckNvbW1hbmRzLGs9dGhpcy5fYmxlbmRPcHRpb249PT1Xbi5PUEFRVUUseT10aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRV9BTkRfVFJBTlNMVUNFTlQsYz10aGlzLl92YWYudmEsZz1jLmxlbmd0aCxWPXRoaXMuX3VuaWZvcm1zLEQ7bSh0aGlzLl9iYXRjaFRhYmxlKT8oVj10aGlzLl9iYXRjaFRhYmxlLmdldFVuaWZvcm1NYXBDYWxsYmFjaygpKFYpLEQ9dGhpcy5fYmF0Y2hUYWJsZS5nZXRQaWNrSWQoKSk6RD0idl9waWNrQ29sb3IiLFUubGVuZ3RoPWc7bGV0IHc9eT9nKjI6Zztmb3IobGV0IHg9MDt4PHc7Kyt4KXtsZXQgSD1VW3hdO20oSCl8fChIPVVbeF09bmV3IGZuKTtsZXQgaj1rfHx5JiZ4JTI9PT0wO0gucGFzcz1qfHwheT9vcy5PUEFRVUU6b3MuVFJBTlNMVUNFTlQsSC5vd25lcj10aGlzO2xldCBYPXk/TWF0aC5mbG9vcih4LzIpOng7SC5ib3VuZGluZ1ZvbHVtZT1SLEgubW9kZWxNYXRyaXg9SSxILmNvdW50PWNbWF0uaW5kaWNlc0NvdW50LEguc2hhZGVyUHJvZ3JhbT1qP3RoaXMuX3NwOnRoaXMuX3NwVHJhbnNsdWNlbnQsSC51bmlmb3JtTWFwPVYsSC52ZXJ0ZXhBcnJheT1jW1hdLnZhLEgucmVuZGVyU3RhdGU9aj90aGlzLl9yc09wYXF1ZTp0aGlzLl9yc1RyYW5zbHVjZW50LEguZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9dGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSxILnBpY2tJZD1ELHRoaXMuX2luc3RhbmNlZCYmKEguY291bnQ9NixILmluc3RhbmNlQ291bnQ9aSksUS5wdXNoKEgpfXRoaXMuZGVidWdTaG93VGV4dHVyZUF0bGFzJiYobSh0aGlzLmRlYnVnQ29tbWFuZCl8fCh0aGlzLmRlYnVnQ29tbWFuZD1BZXQodGhpcyx0LmNvbnRleHQpKSxRLnB1c2godGhpcy5kZWJ1Z0NvbW1hbmQpKX19O0xyLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtMci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3JlbW92ZUNhbGxiYWNrRnVuYykmJih0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmMoKSx0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwKSx0aGlzLl90ZXh0dXJlQXRsYXM9dGhpcy5fZGVzdHJveVRleHR1cmVBdGxhcyYmdGhpcy5fdGV4dHVyZUF0bGFzJiZ0aGlzLl90ZXh0dXJlQXRsYXMuZGVzdHJveSgpLHRoaXMuX3NwPXRoaXMuX3NwJiZ0aGlzLl9zcC5kZXN0cm95KCksdGhpcy5fc3BUcmFuc2x1Y2VudD10aGlzLl9zcFRyYW5zbHVjZW50JiZ0aGlzLl9zcFRyYW5zbHVjZW50LmRlc3Ryb3koKSx0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLGV5KHRoaXMuX2JpbGxib2FyZHMpLGxpKHRoaXMpfTt3bT1Mcn0pO3ZhciBjZXQsWWEsalQ9TygoKT0+e2NldD17RklMTDowLE9VVExJTkU6MSxGSUxMX0FORF9PVVRMSU5FOjJ9LFlhPU9iamVjdC5mcmVlemUoY2V0KX0pO2Z1bmN0aW9uIE9sKHQpeyF0Ll9yZWJpbmRBbGxHbHlwaHMmJiF0Ll9yZXBvc2l0aW9uQWxsR2x5cGhzJiZ0Ll9sYWJlbENvbGxlY3Rpb24uX2xhYmVsc1RvVXBkYXRlLnB1c2godCksdC5fcmViaW5kQWxsR2x5cGhzPSEwfWZ1bmN0aW9uIEdFKHQpeyF0Ll9yZWJpbmRBbGxHbHlwaHMmJiF0Ll9yZXBvc2l0aW9uQWxsR2x5cGhzJiZ0Ll9sYWJlbENvbGxlY3Rpb24uX2xhYmVsc1RvVXBkYXRlLnB1c2godCksdC5fcmVwb3NpdGlvbkFsbEdseXBocz0hMH1mdW5jdGlvbiBCRSh0LGUpe3JldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBaeSh0KXtsZXQgZT1FeVt0Ll9mb250XTtpZighbShlKSl7bGV0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGkuc3R5bGUub3BhY2l0eT0wLGkuc3R5bGUuZm9udD10Ll9mb250LGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7bGV0IG49cGFyc2VGbG9hdChCRShpLCJsaW5lLWhlaWdodCIpKTtpc05hTihuKSYmKG49dm9pZCAwKSxlPXtmYW1pbHk6QkUoaSwiZm9udC1mYW1pbHkiKSxzaXplOkJFKGksImZvbnQtc2l6ZSIpLnJlcGxhY2UoInB4IiwiIiksc3R5bGU6QkUoaSwiZm9udC1zdHlsZSIpLHdlaWdodDpCRShpLCJmb250LXdlaWdodCIpLGxpbmVIZWlnaHQ6bn0sZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpKSxfeTxkZXQmJihFeVt0Ll9mb250XT1lLF95KyspfXQuX2ZvbnRGYW1pbHk9ZS5mYW1pbHksdC5fZm9udFNpemU9ZS5zaXplLHQuX2ZvbnRTdHlsZT1lLnN0eWxlLHQuX2ZvbnRXZWlnaHQ9ZS53ZWlnaHQsdC5fbGluZUhlaWdodD1lLmxpbmVIZWlnaHR9ZnVuY3Rpb24gbGgodCxlKXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksbSh0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkmJnQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPDApdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLjAuIik7bGV0IGk9dC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlLG49dC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSxzPXQuc2NhbGVCeURpc3RhbmNlLG89dC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb247aWYobShpKSl7aWYoaS5mYXI8PWkubmVhcil0aHJvdyBuZXcgWSgidHJhbnNsdWNlbmN5QnlEaXN0YW5jZS5mYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHJhbnNsdWNlbmN5QnlEaXN0YW5jZS5uZWFyLiIpO2k9Z2kuY2xvbmUoaSl9aWYobShuKSl7aWYobi5mYXI8PW4ubmVhcil0aHJvdyBuZXcgWSgicGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLm5lYXIuIik7bj1naS5jbG9uZShuKX1pZihtKHMpKXtpZihzLmZhcjw9cy5uZWFyKXRocm93IG5ldyBZKCJzY2FsZUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlQnlEaXN0YW5jZS5uZWFyLiIpO3M9Z2kuY2xvbmUocyl9aWYobShvKSl7aWYoby5mYXI8PW8ubmVhcil0aHJvdyBuZXcgWSgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBkaXN0YW5jZURpc3BsYXlDb25kaXRpb24ubmVhci4iKTtvPVdvLmNsb25lKG8pfXRoaXMuX3JlbmRlcmVkVGV4dD12b2lkIDAsdGhpcy5fdGV4dD12b2lkIDAsdGhpcy5fc2hvdz1aKHQuc2hvdywhMCksdGhpcy5fZm9udD1aKHQuZm9udCwiMzBweCBzYW5zLXNlcmlmIiksdGhpcy5fZmlsbENvbG9yPVp0LmNsb25lKFoodC5maWxsQ29sb3IsWnQuV0hJVEUpKSx0aGlzLl9vdXRsaW5lQ29sb3I9WnQuY2xvbmUoWih0Lm91dGxpbmVDb2xvcixadC5CTEFDSykpLHRoaXMuX291dGxpbmVXaWR0aD1aKHQub3V0bGluZVdpZHRoLDEpLHRoaXMuX3Nob3dCYWNrZ3JvdW5kPVoodC5zaG93QmFja2dyb3VuZCwhMSksdGhpcy5fYmFja2dyb3VuZENvbG9yPVp0LmNsb25lKFoodC5iYWNrZ3JvdW5kQ29sb3IsbWV0KSksdGhpcy5fYmFja2dyb3VuZFBhZGRpbmc9bnQuY2xvbmUoWih0LmJhY2tncm91bmRQYWRkaW5nLGZldCkpLHRoaXMuX3N0eWxlPVoodC5zdHlsZSxZYS5GSUxMKSx0aGlzLl92ZXJ0aWNhbE9yaWdpbj1aKHQudmVydGljYWxPcmlnaW4sbW4uQkFTRUxJTkUpLHRoaXMuX2hvcml6b250YWxPcmlnaW49Wih0Lmhvcml6b250YWxPcmlnaW4sdG8uTEVGVCksdGhpcy5fcGl4ZWxPZmZzZXQ9bnQuY2xvbmUoWih0LnBpeGVsT2Zmc2V0LG50LlpFUk8pKSx0aGlzLl9leWVPZmZzZXQ9bC5jbG9uZShaKHQuZXllT2Zmc2V0LGwuWkVSTykpLHRoaXMuX3Bvc2l0aW9uPWwuY2xvbmUoWih0LnBvc2l0aW9uLGwuWkVSTykpLHRoaXMuX3NjYWxlPVoodC5zY2FsZSwxKSx0aGlzLl9pZD10LmlkLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9aSx0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1uLHRoaXMuX3NjYWxlQnlEaXN0YW5jZT1zLHRoaXMuX2hlaWdodFJlZmVyZW5jZT1aKHQuaGVpZ2h0UmVmZXJlbmNlLFdyLk5PTkUpLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1vLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZT10LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSx0aGlzLl9sYWJlbENvbGxlY3Rpb249ZSx0aGlzLl9nbHlwaHM9W10sdGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZD12b2lkIDAsdGhpcy5fYmF0Y2hJbmRleD12b2lkIDAsdGhpcy5fcmViaW5kQWxsR2x5cGhzPSEwLHRoaXMuX3JlcG9zaXRpb25BbGxHbHlwaHM9ITAsdGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uPXZvaWQgMCx0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwLHRoaXMuX21vZGU9dm9pZCAwLHRoaXMuX2NsdXN0ZXJTaG93PSEwLHRoaXMudGV4dD1aKHQudGV4dCwiIiksdGhpcy5fcmVsYXRpdmVTaXplPTEsWnkodGhpcyksdGhpcy5fdXBkYXRlQ2xhbXBpbmcoKX1mdW5jdGlvbiBFZXQodCxlKXtsZXQgaT0vW2EtekEtWjAtOV0vLG49L1soKVtcXXt9PD5dLyxzPVtdLG89IiIscj1Scy5MVFIsYT0iIixoPXQubGVuZ3RoO2ZvcihsZXQgQT0wO0E8aDsrK0Epe2xldCBkPXQuY2hhckF0KEEpO2UudGVzdChkKT9hPVJzLlJUTDppLnRlc3QoZCk/YT1Scy5MVFI6bi50ZXN0KGQpP2E9UnMuQlJBQ0tFVFM6YT1Scy5XRUFLLEE9PT0wJiYocj1hKSxyPT09YSYmYSE9PVJzLkJSQUNLRVRTP28rPWQ6KG8hPT0iIiYmcy5wdXNoKHtUeXBlOnIsV29yZDpvfSkscj1hLG89ZCl9cmV0dXJuIHMucHVzaCh7VHlwZTphLFdvcmQ6b30pLHN9ZnVuY3Rpb24gX2V0KHQpe3JldHVybiB0LnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIil9ZnVuY3Rpb24gV0UodCxlLGkpe3JldHVybiB0LnNsaWNlKDAsZSkraSt0LnNsaWNlKGUpfWZ1bmN0aW9uIFJldCh0KXtzd2l0Y2godCl7Y2FzZSIoIjpyZXR1cm4iKSI7Y2FzZSIpIjpyZXR1cm4iKCI7Y2FzZSJbIjpyZXR1cm4iXSI7Y2FzZSJdIjpyZXR1cm4iWyI7Y2FzZSJ7IjpyZXR1cm4ifSI7Y2FzZSJ9IjpyZXR1cm4ieyI7Y2FzZSI8IjpyZXR1cm4iPiI7Y2FzZSI+IjpyZXR1cm4iPCJ9fWZ1bmN0aW9uIHBldCh0KXtsZXQgZT10LnNwbGl0KGAKYCksaT0iIjtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHM9ZVtuXSxvPVJ5LnRlc3Qocy5jaGFyQXQoMCkpLHI9RWV0KHMsUnkpLGE9MCxoPSIiO2ZvcihsZXQgQT0wO0E8ci5sZW5ndGg7KytBKXtsZXQgZD1yW0FdLGY9ZC5UeXBlPT09UnMuQlJBQ0tFVFM/UmV0KGQuV29yZCk6X2V0KGQuV29yZCk7bz9kLlR5cGU9PT1Scy5SVEw/KGg9ZitoLGE9MCk6ZC5UeXBlPT09UnMuTFRSPyhoPVdFKGgsYSxkLldvcmQpLGErPWQuV29yZC5sZW5ndGgpOihkLlR5cGU9PT1Scy5XRUFLfHxkLlR5cGU9PT1Scy5CUkFDS0VUUykmJihkLlR5cGU9PT1Scy5XRUFLJiZyW0EtMV0uVHlwZT09PVJzLkJSQUNLRVRTP2g9ZitoOnJbQS0xXS5UeXBlPT09UnMuUlRMPyhoPWYraCxhPTApOnIubGVuZ3RoPkErMT9yW0ErMV0uVHlwZT09PVJzLlJUTD8oaD1mK2gsYT0wKTooaD1XRShoLGEsZC5Xb3JkKSxhKz1kLldvcmQubGVuZ3RoKTpoPVdFKGgsMCxmKSk6ZC5UeXBlPT09UnMuUlRMP2g9V0UoaCxhLGYpOmQuVHlwZT09PVJzLkxUUj8oaCs9ZC5Xb3JkLGE9aC5sZW5ndGgpOihkLlR5cGU9PT1Scy5XRUFLfHxkLlR5cGU9PT1Scy5CUkFDS0VUUykmJihBPjAmJnJbQS0xXS5UeXBlPT09UnMuUlRMP3IubGVuZ3RoPkErMT9yW0ErMV0uVHlwZT09PVJzLlJUTD9oPVdFKGgsYSxmKTooaCs9ZC5Xb3JkLGE9aC5sZW5ndGgpOmgrPWQuV29yZDooaCs9ZC5Xb3JkLGE9aC5sZW5ndGgpKX1pKz1oLG48ZS5sZW5ndGgtMSYmKGkrPWAKYCl9cmV0dXJuIGl9dmFyIEV5LF95LGRldCxtZXQsZmV0LFJzLFpldCxJZXQsUnksREUsSFQ9TygoKT0+e0VyKCk7WGUoKTtIdCgpO1FuKCk7YnQoKTttdCgpO1Z0KCk7elooKTtJRSgpO3NJKCk7T20oKTtWbSgpO2pUKCk7X0koKTtDRSgpO0V5PXt9LF95PTAsZGV0PTI1NixtZXQ9bmV3IFp0KC4xNjUsLjE2NSwuMTY1LC44KSxmZXQ9bmV3IG50KDcsNSksUnM9T2JqZWN0LmZyZWV6ZSh7TFRSOjAsUlRMOjEsV0VBSzoyLEJSQUNLRVRTOjN9KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsaC5wcm90b3R5cGUse3Nob3c6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaG93fSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2lmKHRoaXMuX3Nob3chPT10KXt0aGlzLl9zaG93PXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXS5iaWxsYm9hcmQ7bShvKSYmKG8uc2hvdz10KX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLnNob3c9dCl9fX0scG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10aGlzLl9wb3NpdGlvbjtpZighbC5lcXVhbHMoZSx0KSl7bC5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc10uYmlsbGJvYXJkO20ocikmJihyLnBvc2l0aW9uPXQpfWxldCBuPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShuKSYmKG4ucG9zaXRpb249dCksdGhpcy5fdXBkYXRlQ2xhbXBpbmcoKX19fSxoZWlnaHRSZWZlcmVuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWlnaHRSZWZlcmVuY2V9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7aWYodCE9PXRoaXMuX2hlaWdodFJlZmVyZW5jZSl7dGhpcy5faGVpZ2h0UmVmZXJlbmNlPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXS5iaWxsYm9hcmQ7bShvKSYmKG8uaGVpZ2h0UmVmZXJlbmNlPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuaGVpZ2h0UmVmZXJlbmNlPXQpLEdFKHRoaXMpLHRoaXMuX3VwZGF0ZUNsYW1waW5nKCl9fX0sdGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7aWYodGhpcy5fdGV4dCE9PXQpe3RoaXMuX3RleHQ9dDtsZXQgZT10LnJlcGxhY2UoL1x1MDBhZC9nLCIiKTt0aGlzLl9yZW5kZXJlZFRleHQ9bGguZW5hYmxlUmlnaHRUb0xlZnREZXRlY3Rpb24/cGV0KGUpOmUsT2wodGhpcyl9fX0sZm9udDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvbnR9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7dGhpcy5fZm9udCE9PXQmJih0aGlzLl9mb250PXQsT2wodGhpcyksWnkodGhpcykpfX0sZmlsbENvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2ZpbGxDb2xvcjtadC5lcXVhbHMoZSx0KXx8KFp0LmNsb25lKHQsZSksT2wodGhpcykpfX0sb3V0bGluZUNvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0bGluZUNvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX291dGxpbmVDb2xvcjtadC5lcXVhbHMoZSx0KXx8KFp0LmNsb25lKHQsZSksT2wodGhpcykpfX0sb3V0bGluZVdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0bGluZVdpZHRofSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuX291dGxpbmVXaWR0aCE9PXQmJih0aGlzLl9vdXRsaW5lV2lkdGg9dCxPbCh0aGlzKSl9fSxzaG93QmFja2dyb3VuZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nob3dCYWNrZ3JvdW5kfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3Nob3dCYWNrZ3JvdW5kIT09dCYmKHRoaXMuX3Nob3dCYWNrZ3JvdW5kPXQsT2wodGhpcykpfX0sYmFja2dyb3VuZENvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2JhY2tncm91bmRDb2xvcjtpZighWnQuZXF1YWxzKGUsdCkpe1p0LmNsb25lKHQsZSk7bGV0IGk9dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZDttKGkpJiYoaS5jb2xvcj1lKX19fSxiYWNrZ3JvdW5kUGFkZGluZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRQYWRkaW5nfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2JhY2tncm91bmRQYWRkaW5nO250LmVxdWFscyhlLHQpfHwobnQuY2xvbmUodCxlKSxHRSh0aGlzKSl9fSxzdHlsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0eWxlfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3N0eWxlIT09dCYmKHRoaXMuX3N0eWxlPXQsT2wodGhpcykpfX0scGl4ZWxPZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbE9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10aGlzLl9waXhlbE9mZnNldDtpZighbnQuZXF1YWxzKGUsdCkpe250LmNsb25lKHQsZSk7bGV0IGk9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgcz0wLG89aS5sZW5ndGg7czxvO3MrKyl7bGV0IHI9aVtzXTttKHIuYmlsbGJvYXJkKSYmKHIuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0PXQpfWxldCBuPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShuKSYmKG4ucGl4ZWxPZmZzZXQ9dCl9fX0sdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiZ0LmZhcjw9dC5uZWFyKXRocm93IG5ldyBZKCJmYXIgZGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gbmVhciBkaXN0YW5jZS4iKTtsZXQgZT10aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlO2lmKCFnaS5lcXVhbHMoZSx0KSl7dGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlPXQpfWxldCBuPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShuKSYmKG4udHJhbnNsdWNlbmN5QnlEaXN0YW5jZT10KX19fSxwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlfSxzZXQ6ZnVuY3Rpb24odCl7aWYobSh0KSYmdC5mYXI8PXQubmVhcil0aHJvdyBuZXcgWSgiZmFyIGRpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIgZGlzdGFuY2UuIik7bGV0IGU9dGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U7aWYoIWdpLmVxdWFscyhlLHQpKXt0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT10KX1sZXQgbj10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20obikmJihuLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPXQpfX19LHNjYWxlQnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NjYWxlQnlEaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJnQuZmFyPD10Lm5lYXIpdGhyb3cgbmV3IFkoImZhciBkaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIGRpc3RhbmNlLiIpO2xldCBlPXRoaXMuX3NjYWxlQnlEaXN0YW5jZTtpZighZ2kuZXF1YWxzKGUsdCkpe3RoaXMuX3NjYWxlQnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2U9dCl9bGV0IG49dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZDttKG4pJiYobi5zY2FsZUJ5RGlzdGFuY2U9dCl9fX0sZXllT2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXllT2Zmc2V0fSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2V5ZU9mZnNldDtpZighbC5lcXVhbHMoZSx0KSl7bC5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC5leWVPZmZzZXQ9dCl9bGV0IG49dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZDttKG4pJiYobi5leWVPZmZzZXQ9dCl9fX0saG9yaXpvbnRhbE9yaWdpbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hvcml6b250YWxPcmlnaW59LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7dGhpcy5faG9yaXpvbnRhbE9yaWdpbiE9PXQmJih0aGlzLl9ob3Jpem9udGFsT3JpZ2luPXQsR0UodGhpcykpfX0sdmVydGljYWxPcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0aWNhbE9yaWdpbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtpZih0aGlzLl92ZXJ0aWNhbE9yaWdpbiE9PXQpe3RoaXMuX3ZlcnRpY2FsT3JpZ2luPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXTttKG8uYmlsbGJvYXJkKSYmKG8uYmlsbGJvYXJkLnZlcnRpY2FsT3JpZ2luPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkudmVydGljYWxPcmlnaW49dCksR0UodGhpcyl9fX0sc2NhbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtpZih0aGlzLl9zY2FsZSE9PXQpe3RoaXMuX3NjYWxlPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXTttKG8uYmlsbGJvYXJkKSYmKG8uYmlsbGJvYXJkLnNjYWxlPXQqdGhpcy5fcmVsYXRpdmVTaXplKX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLnNjYWxlPXQqdGhpcy5fcmVsYXRpdmVTaXplKSxHRSh0aGlzKX19fSx0b3RhbFNjYWxlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2NhbGUqdGhpcy5fcmVsYXRpdmVTaXplfX0sZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7aWYobSh0KSYmdC5mYXI8PXQubmVhcil0aHJvdyBuZXcgWSgiZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIiKTtpZighV28uZXF1YWxzKHQsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSl7dGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVdvLmNsb25lKHQsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKTtsZXQgZT10aGlzLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtsZXQgbz1lW25dO20oby5iaWxsYm9hcmQpJiYoby5iaWxsYm9hcmQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXQpfX19LGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSE9PXQpe2lmKG0odCkmJnQ8MCl0aHJvdyBuZXcgWSgiZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuMC4iKTt0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dDtsZXQgZT10aGlzLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtsZXQgbz1lW25dO20oby5iaWxsYm9hcmQpJiYoby5iaWxsYm9hcmQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXQpfX19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLl9pZCE9PXQpe3RoaXMuX2lkPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXTttKG8uYmlsbGJvYXJkKSYmKG8uYmlsbGJvYXJkLmlkPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuaWQ9dCl9fX0scGlja0lkOntnZXQ6ZnVuY3Rpb24oKXtpZighKHRoaXMuX2dseXBocy5sZW5ndGg9PT0wfHwhbSh0aGlzLl9nbHlwaHNbMF0uYmlsbGJvYXJkKSkpcmV0dXJuIHRoaXMuX2dseXBoc1swXS5iaWxsYm9hcmQucGlja0lkfX0sX2NsYW1wZWRQb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdHVhbENsYW1wZWRQb3NpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2FjdHVhbENsYW1wZWRQb3NpdGlvbj1sLmNsb25lKHQsdGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uKTtsZXQgZT10aGlzLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtsZXQgbz1lW25dO20oby5iaWxsYm9hcmQpJiYoby5iaWxsYm9hcmQuX2NsYW1wZWRQb3NpdGlvbj10KX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLl9jbGFtcGVkUG9zaXRpb249dCl9fSxjbHVzdGVyU2hvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJTaG93fSxzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fY2x1c3RlclNob3chPT10KXt0aGlzLl9jbHVzdGVyU2hvdz10O2xldCBlPXRoaXMuX2dseXBocztmb3IobGV0IG49MCxzPWUubGVuZ3RoO248cztuKyspe2xldCBvPWVbbl07bShvLmJpbGxib2FyZCkmJihvLmJpbGxib2FyZC5jbHVzdGVyU2hvdz10KX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLmNsdXN0ZXJTaG93PXQpfX19fSk7bGgucHJvdG90eXBlLl91cGRhdGVDbGFtcGluZz1mdW5jdGlvbigpe3VuLl91cGRhdGVDbGFtcGluZyh0aGlzLl9sYWJlbENvbGxlY3Rpb24sdGhpcyl9O2xoLnByb3RvdHlwZS5jb21wdXRlU2NyZWVuU3BhY2VQb3NpdGlvbj1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzY2VuZSBpcyByZXF1aXJlZC4iKTttKGUpfHwoZT1uZXcgbnQpO2xldCBuPXRoaXMuX2xhYmVsQ29sbGVjdGlvbi5tb2RlbE1hdHJpeCxzPW0odGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uKT90aGlzLl9hY3R1YWxDbGFtcGVkUG9zaXRpb246dGhpcy5fcG9zaXRpb247cmV0dXJuIHVuLl9jb21wdXRlU2NyZWVuU3BhY2VQb3NpdGlvbihuLHMsdGhpcy5fZXllT2Zmc2V0LHRoaXMuX3BpeGVsT2Zmc2V0LHQsZSl9O2xoLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3g9ZnVuY3Rpb24odCxlLGkpe2xldCBuPTAscz0wLG89MCxyPTAsYT10LnRvdGFsU2NhbGUsaD10Ll9iYWNrZ3JvdW5kQmlsbGJvYXJkO2lmKG0oaCkpbj1lLngraC5fdHJhbnNsYXRlLngscz1lLnktaC5fdHJhbnNsYXRlLnksbz1oLndpZHRoKmEscj1oLmhlaWdodCphLHQudmVydGljYWxPcmlnaW49PT1tbi5CT1RUT018fHQudmVydGljYWxPcmlnaW49PT1tbi5CQVNFTElORT9zLT1yOnQudmVydGljYWxPcmlnaW49PT1tbi5DRU5URVImJihzLT1yKi41KTtlbHNle249TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBBPTAsZD0wLGY9dC5fZ2x5cGhzLEU9Zi5sZW5ndGg7Zm9yKGxldCBfPTA7XzxFOysrXyl7bGV0IFI9ZltfXSxJPVIuYmlsbGJvYXJkO2lmKCFtKEkpKWNvbnRpbnVlO2xldCBDPWUueCtJLl90cmFuc2xhdGUueCxOPWUueS1JLl90cmFuc2xhdGUueSxUPVIuZGltZW5zaW9ucy53aWR0aCphLEY9Ui5kaW1lbnNpb25zLmhlaWdodCphO3QudmVydGljYWxPcmlnaW49PT1tbi5CT1RUT018fHQudmVydGljYWxPcmlnaW49PT1tbi5CQVNFTElORT9OLT1GOnQudmVydGljYWxPcmlnaW49PT1tbi5DRU5URVImJihOLT1GKi41KSx0Ll92ZXJ0aWNhbE9yaWdpbj09PW1uLlRPUD9OKz1wby5QQURESU5HKmE6KHQuX3ZlcnRpY2FsT3JpZ2luPT09bW4uQk9UVE9NfHx0Ll92ZXJ0aWNhbE9yaWdpbj09PW1uLkJBU0VMSU5FKSYmKE4tPXBvLlBBRERJTkcqYSksbj1NYXRoLm1pbihuLEMpLHM9TWF0aC5taW4ocyxOKSxBPU1hdGgubWF4KEEsQytUKSxkPU1hdGgubWF4KGQsTitGKX1vPUEtbixyPWQtc31yZXR1cm4gbShpKXx8KGk9bmV3IG1pKSxpLng9bixpLnk9cyxpLndpZHRoPW8saS5oZWlnaHQ9cixpfTtsaC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmdGhpcy5fc2hvdz09PXQuX3Nob3cmJnRoaXMuX3NjYWxlPT09dC5fc2NhbGUmJnRoaXMuX291dGxpbmVXaWR0aD09PXQuX291dGxpbmVXaWR0aCYmdGhpcy5fc2hvd0JhY2tncm91bmQ9PT10Ll9zaG93QmFja2dyb3VuZCYmdGhpcy5fc3R5bGU9PT10Ll9zdHlsZSYmdGhpcy5fdmVydGljYWxPcmlnaW49PT10Ll92ZXJ0aWNhbE9yaWdpbiYmdGhpcy5faG9yaXpvbnRhbE9yaWdpbj09PXQuX2hvcml6b250YWxPcmlnaW4mJnRoaXMuX2hlaWdodFJlZmVyZW5jZT09PXQuX2hlaWdodFJlZmVyZW5jZSYmdGhpcy5fcmVuZGVyZWRUZXh0PT09dC5fcmVuZGVyZWRUZXh0JiZ0aGlzLl9mb250PT09dC5fZm9udCYmbC5lcXVhbHModGhpcy5fcG9zaXRpb24sdC5fcG9zaXRpb24pJiZadC5lcXVhbHModGhpcy5fZmlsbENvbG9yLHQuX2ZpbGxDb2xvcikmJlp0LmVxdWFscyh0aGlzLl9vdXRsaW5lQ29sb3IsdC5fb3V0bGluZUNvbG9yKSYmWnQuZXF1YWxzKHRoaXMuX2JhY2tncm91bmRDb2xvcix0Ll9iYWNrZ3JvdW5kQ29sb3IpJiZudC5lcXVhbHModGhpcy5fYmFja2dyb3VuZFBhZGRpbmcsdC5fYmFja2dyb3VuZFBhZGRpbmcpJiZudC5lcXVhbHModGhpcy5fcGl4ZWxPZmZzZXQsdC5fcGl4ZWxPZmZzZXQpJiZsLmVxdWFscyh0aGlzLl9leWVPZmZzZXQsdC5fZXllT2Zmc2V0KSYmZ2kuZXF1YWxzKHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdC5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSkmJmdpLmVxdWFscyh0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSx0Ll9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSkmJmdpLmVxdWFscyh0aGlzLl9zY2FsZUJ5RGlzdGFuY2UsdC5fc2NhbGVCeURpc3RhbmNlKSYmV28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0Ll9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pJiZ0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9PT10Ll9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UmJnRoaXMuX2lkPT09dC5faWR9O2xoLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtsaC5lbmFibGVSaWdodFRvTGVmdERldGVjdGlvbj0hMTtaZXQ9Ilx1MDVEMC1cdTA1RUEiLElldD0iXHUwNjAwLVx1MDZGRlx1MDc1MC1cdTA3N0ZcdTA4QTAtXHUwOEZGIixSeT1uZXcgUmVnRXhwKGBbJHtaZXR9JHtJZXR9XWApO0RFPWxofSk7ZnVuY3Rpb24gdWV0KHQsZSxpLG4scyl7bGV0IG89dC5tZWFzdXJlVGV4dChlKTtpZighIS9cUy8udGVzdChlKSl7bGV0IGE9ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LmNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgiZm9udC1zaXplIikucmVwbGFjZSgicHgiLCIiKSxoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLEE9MTAwLGQ9by53aWR0aCtBfDAsZj0zKmEsRT1mLzI7aC53aWR0aD1kLGguaGVpZ2h0PWY7bGV0IF89aC5nZXRDb250ZXh0KCIyZCIpO18uZm9udD1pLF8uZmlsbFN0eWxlPSJ3aGl0ZSIsXy5maWxsUmVjdCgwLDAsaC53aWR0aCsxLGguaGVpZ2h0KzEpLG4mJihfLnN0cm9rZVN0eWxlPSJibGFjayIsXy5saW5lV2lkdGg9dC5saW5lV2lkdGgsXy5zdHJva2VUZXh0KGUsQS8yLEUpKSxzJiYoXy5maWxsU3R5bGU9ImJsYWNrIixfLmZpbGxUZXh0KGUsQS8yLEUpKTtsZXQgUj1fLmdldEltYWdlRGF0YSgwLDAsZCxmKS5kYXRhLEk9Ui5sZW5ndGgsQz1kKjQsTixULEYsYjtmb3IoTj0wO048STsrK04paWYoUltOXSE9PTI1NSl7Rj1OL0N8MDticmVha31mb3IoTj1JLTE7Tj49MDstLU4paWYoUltOXSE9PTI1NSl7Yj1OL0N8MDticmVha31sZXQgRz0tMTtmb3IoTj0wO048ZCYmRz09PS0xOysrTilmb3IoVD0wO1Q8ZjsrK1Qpe2xldCBNPU4qNCtUKkM7aWYoUltNXSE9PTI1NXx8UltNKzFdIT09MjU1fHxSW00rMl0hPT0yNTV8fFJbTSszXSE9PTI1NSl7Rz1OO2JyZWFrfX1yZXR1cm57d2lkdGg6by53aWR0aCxoZWlnaHQ6Yi1GLGFzY2VudDpFLUYsZGVzY2VudDpiLUUsbWlueDpHLUEvMn19cmV0dXJue3dpZHRoOm8ud2lkdGgsaGVpZ2h0OjAsYXNjZW50OjAsZGVzY2VudDowLG1pbng6MH19ZnVuY3Rpb24gQ2V0KHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInRleHQgaXMgcmVxdWlyZWQuIik7aWYodD09PSIiKXJldHVybjtlPVooZSxaLkVNUFRZX09CSkVDVCk7bGV0IGk9WihlLmZvbnQsIjEwcHggc2Fucy1zZXJpZiIpLG49WihlLnN0cm9rZSwhMSkscz1aKGUuZmlsbCwhMCksbz1aKGUuc3Ryb2tlV2lkdGgsMSkscj1aKGUuYmFja2dyb3VuZENvbG9yLFp0LlRSQU5TUEFSRU5UKSxhPVooZS5wYWRkaW5nLDApLGg9YSoyLEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7QS53aWR0aD0xLEEuaGVpZ2h0PTEsQS5zdHlsZS5mb250PWk7bGV0IGQ9QS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO20oVmwpfHwobShkLmltYWdlU21vb3RoaW5nRW5hYmxlZCk/Vmw9ImltYWdlU21vb3RoaW5nRW5hYmxlZCI6bShkLm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCk/Vmw9Im1vekltYWdlU21vb3RoaW5nRW5hYmxlZCI6bShkLndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCk/Vmw9IndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCI6bShkLm1zSW1hZ2VTbW9vdGhpbmdFbmFibGVkKSYmKFZsPSJtc0ltYWdlU21vb3RoaW5nRW5hYmxlZCIpKSxkLmZvbnQ9aSxkLmxpbmVKb2luPSJyb3VuZCIsZC5saW5lV2lkdGg9byxkW1ZsXT0hMSxBLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChBKTtsZXQgZj11ZXQoZCx0LGksbixzKTtBLmRpbWVuc2lvbnM9Zixkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKEEpLEEuc3R5bGUudmlzaWJpbGl0eT0iIjtsZXQgRT0tZi5taW54LF89TWF0aC5jZWlsKGYud2lkdGgpK0UraCxSPWYuaGVpZ2h0K2gsST1SLWYuYXNjZW50K2EsQz1SLUkraDtpZihBLndpZHRoPV8sQS5oZWlnaHQ9UixkLmZvbnQ9aSxkLmxpbmVKb2luPSJyb3VuZCIsZC5saW5lV2lkdGg9byxkW1ZsXT0hMSxyIT09WnQuVFJBTlNQQVJFTlQmJihkLmZpbGxTdHlsZT1yLnRvQ3NzQ29sb3JTdHJpbmcoKSxkLmZpbGxSZWN0KDAsMCxBLndpZHRoLEEuaGVpZ2h0KSksbil7bGV0IE49WihlLnN0cm9rZUNvbG9yLFp0LkJMQUNLKTtkLnN0cm9rZVN0eWxlPU4udG9Dc3NDb2xvclN0cmluZygpLGQuc3Ryb2tlVGV4dCh0LEUrYSxDKX1pZihzKXtsZXQgTj1aKGUuZmlsbENvbG9yLFp0LldISVRFKTtkLmZpbGxTdHlsZT1OLnRvQ3NzQ29sb3JTdHJpbmcoKSxkLmZpbGxUZXh0KHQsRSthLEMpfXJldHVybiBBfXZhciBWbCxJeSxweT1PKCgpPT57UW4oKTtidCgpO210KCk7VnQoKTtJeT1DZXR9KTt2YXIgVHk9dHMoKGVNdCxneSk9PnsidXNlIHN0cmljdCI7Z3kuZXhwb3J0cz1nZXQ7dmFyIE1FPTFlMjA7ZnVuY3Rpb24gZ2V0KHQsZSl7ZXx8KGU9e30pO3ZhciBpPWUuY3V0b2ZmPT1udWxsPy4yNTplLmN1dG9mZixuPWUucmFkaXVzPT1udWxsPzg6ZS5yYWRpdXMscz1lLmNoYW5uZWx8fDAsbyxyLGEsaCxBLGQsZixFLF8sUixJO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KXx8QXJyYXkuaXNBcnJheSh0KSl7aWYoIWUud2lkdGh8fCFlLmhlaWdodCl0aHJvdyBFcnJvcigiRm9yIHJhdyBkYXRhIHdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGJlIHByb3ZpZGVkIGJ5IG9wdGlvbnMiKTtvPWUud2lkdGgscj1lLmhlaWdodCxoPXQsZS5zdHJpZGU/ZD1lLnN0cmlkZTpkPU1hdGguZmxvb3IodC5sZW5ndGgvby9yKX1lbHNlIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudD8oRT10LGY9RS5nZXRDb250ZXh0KCIyZCIpLG89RS53aWR0aCxyPUUuaGVpZ2h0LF89Zi5nZXRJbWFnZURhdGEoMCwwLG8sciksaD1fLmRhdGEsZD00KTp3aW5kb3cuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJiZ0IGluc3RhbmNlb2Ygd2luZG93LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD8oRT10LmNhbnZhcyxmPXQsbz1FLndpZHRoLHI9RS5oZWlnaHQsXz1mLmdldEltYWdlRGF0YSgwLDAsbyxyKSxoPV8uZGF0YSxkPTQpOndpbmRvdy5JbWFnZURhdGEmJnQgaW5zdGFuY2VvZiB3aW5kb3cuSW1hZ2VEYXRhJiYoXz10LG89dC53aWR0aCxyPXQuaGVpZ2h0LGg9Xy5kYXRhLGQ9NCk7aWYoYT1NYXRoLm1heChvLHIpLHdpbmRvdy5VaW50OENsYW1wZWRBcnJheSYmaCBpbnN0YW5jZW9mIHdpbmRvdy5VaW50OENsYW1wZWRBcnJheXx8d2luZG93LlVpbnQ4QXJyYXkmJmggaW5zdGFuY2VvZiB3aW5kb3cuVWludDhBcnJheSlmb3IoQT1oLGg9QXJyYXkobypyKSxSPTAsST1NYXRoLmZsb29yKEEubGVuZ3RoL2QpO1I8STtSKyspaFtSXT1BW1IqZCtzXS8yNTU7ZWxzZSBpZihkIT09MSl0aHJvdyBFcnJvcigiUmF3IGRhdGEgY2FuIGhhdmUgb25seSAxIHZhbHVlIHBlciBwaXhlbCIpO3ZhciBDPUFycmF5KG8qciksTj1BcnJheShvKnIpLFQ9QXJyYXkoYSksRj1BcnJheShhKSxiPUFycmF5KGErMSksRz1BcnJheShhKTtmb3IoUj0wLEk9bypyO1I8STtSKyspe3ZhciBNPWhbUl07Q1tSXT1NPT09MT8wOk09PT0wP01FOk1hdGgucG93KE1hdGgubWF4KDAsLjUtTSksMiksTltSXT1NPT09MT9NRTpNPT09MD8wOk1hdGgucG93KE1hdGgubWF4KDAsTS0uNSksMil9dXkoQyxvLHIsVCxGLEcsYiksdXkoTixvLHIsVCxGLEcsYik7dmFyIFE9d2luZG93LkZsb2F0MzJBcnJheT9uZXcgRmxvYXQzMkFycmF5KG8qcik6bmV3IEFycmF5KG8qcik7Zm9yKFI9MCxJPW8qcjtSPEk7UisrKVFbUl09TWF0aC5taW4oTWF0aC5tYXgoMS0oKENbUl0tTltSXSkvbitpKSwwKSwxKTtyZXR1cm4gUX1mdW5jdGlvbiB1eSh0LGUsaSxuLHMsbyxyKXtmb3IodmFyIGE9MDthPGU7YSsrKXtmb3IodmFyIGg9MDtoPGk7aCsrKW5baF09dFtoKmUrYV07Zm9yKEN5KG4scyxvLHIsaSksaD0wO2g8aTtoKyspdFtoKmUrYV09c1toXX1mb3IoaD0wO2g8aTtoKyspe2ZvcihhPTA7YTxlO2ErKyluW2FdPXRbaCplK2FdO2ZvcihDeShuLHMsbyxyLGUpLGE9MDthPGU7YSsrKXRbaCplK2FdPU1hdGguc3FydChzW2FdKX19ZnVuY3Rpb24gQ3kodCxlLGksbixzKXtpWzBdPTAsblswXT0tTUUsblsxXT0rTUU7Zm9yKHZhciBvPTEscj0wO288cztvKyspe2Zvcih2YXIgYT0odFtvXStvKm8tKHRbaVtyXV0raVtyXSppW3JdKSkvKDIqby0yKmlbcl0pO2E8PW5bcl07KXItLSxhPSh0W29dK28qby0odFtpW3JdXStpW3JdKmlbcl0pKS8oMipvLTIqaVtyXSk7cisrLGlbcl09byxuW3JdPWEsbltyKzFdPStNRX1mb3Iobz0wLHI9MDtvPHM7bysrKXtmb3IoO25bcisxXTxvOylyKys7ZVtvXT0oby1pW3JdKSooby1pW3JdKSt0W2lbcl1dfX19KTt2YXIgTnk9dHMoKGlNdCxnSSk9PntmdW5jdGlvbiBUZXQoKXt2YXIgdD0wLGU9MSxpPTIsbj0zLHM9NCxvPTUscj02LGE9NyxoPTgsQT05LGQ9MTAsZj0xMSxFPTEyLF89MTMsUj0xNCxJPTE1LEM9MTYsTj0xNyxUPTAsRj0xLGI9MixHPTMsTT00O2Z1bmN0aW9uIFEoYyxnKXtyZXR1cm4gNTUyOTY8PWMuY2hhckNvZGVBdChnKSYmYy5jaGFyQ29kZUF0KGcpPD01NjMxOSYmNTYzMjA8PWMuY2hhckNvZGVBdChnKzEpJiZjLmNoYXJDb2RlQXQoZysxKTw9NTczNDN9ZnVuY3Rpb24gVShjLGcpe2c9PT12b2lkIDAmJihnPTApO3ZhciBWPWMuY2hhckNvZGVBdChnKTtpZig1NTI5Njw9ViYmVjw9NTYzMTkmJmc8Yy5sZW5ndGgtMSl7dmFyIEQ9Vix3PWMuY2hhckNvZGVBdChnKzEpO3JldHVybiA1NjMyMDw9dyYmdzw9NTczNDM/KEQtNTUyOTYpKjEwMjQrKHctNTYzMjApKzY1NTM2OkR9aWYoNTYzMjA8PVYmJlY8PTU3MzQzJiZnPj0xKXt2YXIgRD1jLmNoYXJDb2RlQXQoZy0xKSx3PVY7cmV0dXJuIDU1Mjk2PD1EJiZEPD01NjMxOT8oRC01NTI5NikqMTAyNCsody01NjMyMCkrNjU1MzY6d31yZXR1cm4gVn1mdW5jdGlvbiBrKGMsZyxWKXt2YXIgRD1bY10uY29uY2F0KGcpLmNvbmNhdChbVl0pLHc9RFtELmxlbmd0aC0yXSx4PVYsSD1ELmxhc3RJbmRleE9mKFIpO2lmKEg+MSYmRC5zbGljZSgxLEgpLmV2ZXJ5KGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PW59KSYmW24sXyxOXS5pbmRleE9mKGMpPT0tMSlyZXR1cm4gYjt2YXIgaj1ELmxhc3RJbmRleE9mKHMpO2lmKGo+MCYmRC5zbGljZSgxLGopLmV2ZXJ5KGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PXN9KSYmW0Usc10uaW5kZXhPZih3KT09LTEpcmV0dXJuIEQuZmlsdGVyKGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PXN9KS5sZW5ndGglMj09MT9HOk07aWYodz09dCYmeD09ZSlyZXR1cm4gVDtpZih3PT1pfHx3PT10fHx3PT1lKXJldHVybiB4PT1SJiZnLmV2ZXJ5KGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PW59KT9iOkY7aWYoeD09aXx8eD09dHx8eD09ZSlyZXR1cm4gRjtpZih3PT1yJiYoeD09cnx8eD09YXx8eD09QXx8eD09ZCkpcmV0dXJuIFQ7aWYoKHc9PUF8fHc9PWEpJiYoeD09YXx8eD09aCkpcmV0dXJuIFQ7aWYoKHc9PWR8fHc9PWgpJiZ4PT1oKXJldHVybiBUO2lmKHg9PW58fHg9PUkpcmV0dXJuIFQ7aWYoeD09bylyZXR1cm4gVDtpZih3PT1FKXJldHVybiBUO3ZhciBYPUQuaW5kZXhPZihuKSE9LTE/RC5sYXN0SW5kZXhPZihuKS0xOkQubGVuZ3RoLTI7cmV0dXJuW18sTl0uaW5kZXhPZihEW1hdKSE9LTEmJkQuc2xpY2UoWCsxLC0xKS5ldmVyeShmdW5jdGlvbih0dCl7cmV0dXJuIHR0PT1ufSkmJng9PVJ8fHc9PUkmJltDLE5dLmluZGV4T2YoeCkhPS0xP1Q6Zy5pbmRleE9mKHMpIT0tMT9iOnc9PXMmJng9PXM/VDpGfXRoaXMubmV4dEJyZWFrPWZ1bmN0aW9uKGMsZyl7aWYoZz09PXZvaWQgMCYmKGc9MCksZzwwKXJldHVybiAwO2lmKGc+PWMubGVuZ3RoLTEpcmV0dXJuIGMubGVuZ3RoO2Zvcih2YXIgVj15KFUoYyxnKSksRD1bXSx3PWcrMTt3PGMubGVuZ3RoO3crKylpZighUShjLHctMSkpe3ZhciB4PXkoVShjLHcpKTtpZihrKFYsRCx4KSlyZXR1cm4gdztELnB1c2goeCl9cmV0dXJuIGMubGVuZ3RofSx0aGlzLnNwbGl0R3JhcGhlbWVzPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZz1bXSxWPTAsRDsoRD10aGlzLm5leHRCcmVhayhjLFYpKTxjLmxlbmd0aDspZy5wdXNoKGMuc2xpY2UoVixEKSksVj1EO3JldHVybiBWPGMubGVuZ3RoJiZnLnB1c2goYy5zbGljZShWKSksZ30sdGhpcy5pdGVyYXRlR3JhcGhlbWVzPWZ1bmN0aW9uKGMpe3ZhciBnPTAsVj17bmV4dDpmdW5jdGlvbigpe3ZhciBELHc7cmV0dXJuKHc9dGhpcy5uZXh0QnJlYWsoYyxnKSk8Yy5sZW5ndGg/KEQ9Yy5zbGljZShnLHcpLGc9dyx7dmFsdWU6RCxkb25lOiExfSk6ZzxjLmxlbmd0aD8oRD1jLnNsaWNlKGcpLGc9Yy5sZW5ndGgse3ZhbHVlOkQsZG9uZTohMX0pOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19LmJpbmQodGhpcyl9O3JldHVybiB0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLml0ZXJhdG9yJiYoVltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIFZ9KSxWfSx0aGlzLmNvdW50R3JhcGhlbWVzPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZz0wLFY9MCxEOyhEPXRoaXMubmV4dEJyZWFrKGMsVikpPGMubGVuZ3RoOylWPUQsZysrO3JldHVybiBWPGMubGVuZ3RoJiZnKyssZ307ZnVuY3Rpb24geShjKXtyZXR1cm4gMTUzNjw9YyYmYzw9MTU0MXx8Yz09MTc1N3x8Yz09MTgwN3x8Yz09MjI3NHx8Yz09MzQwNnx8Yz09Njk4MjF8fDcwMDgyPD1jJiZjPD03MDA4M3x8Yz09NzIyNTB8fDcyMzI2PD1jJiZjPD03MjMyOXx8Yz09NzMwMzA/RTpjPT0xMz90OmM9PTEwP2U6MDw9YyYmYzw9OXx8MTE8PWMmJmM8PTEyfHwxNDw9YyYmYzw9MzF8fDEyNzw9YyYmYzw9MTU5fHxjPT0xNzN8fGM9PTE1NjR8fGM9PTYxNTh8fGM9PTgyMDN8fDgyMDY8PWMmJmM8PTgyMDd8fGM9PTgyMzJ8fGM9PTgyMzN8fDgyMzQ8PWMmJmM8PTgyMzh8fDgyODg8PWMmJmM8PTgyOTJ8fGM9PTgyOTN8fDgyOTQ8PWMmJmM8PTgzMDN8fDU1Mjk2PD1jJiZjPD01NzM0M3x8Yz09NjUyNzl8fDY1NTIwPD1jJiZjPD02NTUyOHx8NjU1Mjk8PWMmJmM8PTY1NTMxfHwxMTM4MjQ8PWMmJmM8PTExMzgyN3x8MTE5MTU1PD1jJiZjPD0xMTkxNjJ8fGM9PTkxNzUwNHx8Yz09OTE3NTA1fHw5MTc1MDY8PWMmJmM8PTkxNzUzNXx8OTE3NjMyPD1jJiZjPD05MTc3NTl8fDkxOGUzPD1jJiZjPD05MjE1OTk/aTo3Njg8PWMmJmM8PTg3OXx8MTE1NTw9YyYmYzw9MTE1OXx8MTE2MDw9YyYmYzw9MTE2MXx8MTQyNTw9YyYmYzw9MTQ2OXx8Yz09MTQ3MXx8MTQ3Mzw9YyYmYzw9MTQ3NHx8MTQ3Njw9YyYmYzw9MTQ3N3x8Yz09MTQ3OXx8MTU1Mjw9YyYmYzw9MTU2Mnx8MTYxMTw9YyYmYzw9MTYzMXx8Yz09MTY0OHx8MTc1MDw9YyYmYzw9MTc1Nnx8MTc1OTw9YyYmYzw9MTc2NHx8MTc2Nzw9YyYmYzw9MTc2OHx8MTc3MDw9YyYmYzw9MTc3M3x8Yz09MTgwOXx8MTg0MDw9YyYmYzw9MTg2Nnx8MTk1ODw9YyYmYzw9MTk2OHx8MjAyNzw9YyYmYzw9MjAzNXx8MjA3MDw9YyYmYzw9MjA3M3x8MjA3NTw9YyYmYzw9MjA4M3x8MjA4NTw9YyYmYzw9MjA4N3x8MjA4OTw9YyYmYzw9MjA5M3x8MjEzNzw9YyYmYzw9MjEzOXx8MjI2MDw9YyYmYzw9MjI3M3x8MjI3NTw9YyYmYzw9MjMwNnx8Yz09MjM2Mnx8Yz09MjM2NHx8MjM2OTw9YyYmYzw9MjM3Nnx8Yz09MjM4MXx8MjM4NTw9YyYmYzw9MjM5MXx8MjQwMjw9YyYmYzw9MjQwM3x8Yz09MjQzM3x8Yz09MjQ5Mnx8Yz09MjQ5NHx8MjQ5Nzw9YyYmYzw9MjUwMHx8Yz09MjUwOXx8Yz09MjUxOXx8MjUzMDw9YyYmYzw9MjUzMXx8MjU2MTw9YyYmYzw9MjU2Mnx8Yz09MjYyMHx8MjYyNTw9YyYmYzw9MjYyNnx8MjYzMTw9YyYmYzw9MjYzMnx8MjYzNTw9YyYmYzw9MjYzN3x8Yz09MjY0MXx8MjY3Mjw9YyYmYzw9MjY3M3x8Yz09MjY3N3x8MjY4OTw9YyYmYzw9MjY5MHx8Yz09Mjc0OHx8Mjc1Mzw9YyYmYzw9Mjc1N3x8Mjc1OTw9YyYmYzw9Mjc2MHx8Yz09Mjc2NXx8Mjc4Njw9YyYmYzw9Mjc4N3x8MjgxMDw9YyYmYzw9MjgxNXx8Yz09MjgxN3x8Yz09Mjg3Nnx8Yz09Mjg3OHx8Yz09Mjg3OXx8Mjg4MTw9YyYmYzw9Mjg4NHx8Yz09Mjg5M3x8Yz09MjkwMnx8Yz09MjkwM3x8MjkxNDw9YyYmYzw9MjkxNXx8Yz09Mjk0Nnx8Yz09MzAwNnx8Yz09MzAwOHx8Yz09MzAyMXx8Yz09MzAzMXx8Yz09MzA3Mnx8MzEzNDw9YyYmYzw9MzEzNnx8MzE0Mjw9YyYmYzw9MzE0NHx8MzE0Njw9YyYmYzw9MzE0OXx8MzE1Nzw9YyYmYzw9MzE1OHx8MzE3MDw9YyYmYzw9MzE3MXx8Yz09MzIwMXx8Yz09MzI2MHx8Yz09MzI2M3x8Yz09MzI2Nnx8Yz09MzI3MHx8MzI3Njw9YyYmYzw9MzI3N3x8MzI4NTw9YyYmYzw9MzI4Nnx8MzI5ODw9YyYmYzw9MzI5OXx8MzMyODw9YyYmYzw9MzMyOXx8MzM4Nzw9YyYmYzw9MzM4OHx8Yz09MzM5MHx8MzM5Mzw9YyYmYzw9MzM5Nnx8Yz09MzQwNXx8Yz09MzQxNXx8MzQyNjw9YyYmYzw9MzQyN3x8Yz09MzUzMHx8Yz09MzUzNXx8MzUzODw9YyYmYzw9MzU0MHx8Yz09MzU0Mnx8Yz09MzU1MXx8Yz09MzYzM3x8MzYzNjw9YyYmYzw9MzY0Mnx8MzY1NTw9YyYmYzw9MzY2Mnx8Yz09Mzc2MXx8Mzc2NDw9YyYmYzw9Mzc2OXx8Mzc3MTw9YyYmYzw9Mzc3Mnx8Mzc4NDw9YyYmYzw9Mzc4OXx8Mzg2NDw9YyYmYzw9Mzg2NXx8Yz09Mzg5M3x8Yz09Mzg5NXx8Yz09Mzg5N3x8Mzk1Mzw9YyYmYzw9Mzk2Nnx8Mzk2ODw9YyYmYzw9Mzk3Mnx8Mzk3NDw9YyYmYzw9Mzk3NXx8Mzk4MTw9YyYmYzw9Mzk5MXx8Mzk5Mzw9YyYmYzw9NDAyOHx8Yz09NDAzOHx8NDE0MTw9YyYmYzw9NDE0NHx8NDE0Njw9YyYmYzw9NDE1MXx8NDE1Mzw9YyYmYzw9NDE1NHx8NDE1Nzw9YyYmYzw9NDE1OHx8NDE4NDw9YyYmYzw9NDE4NXx8NDE5MDw9YyYmYzw9NDE5Mnx8NDIwOTw9YyYmYzw9NDIxMnx8Yz09NDIyNnx8NDIyOTw9YyYmYzw9NDIzMHx8Yz09NDIzN3x8Yz09NDI1M3x8NDk1Nzw9YyYmYzw9NDk1OXx8NTkwNjw9YyYmYzw9NTkwOHx8NTkzODw9YyYmYzw9NTk0MHx8NTk3MDw9YyYmYzw9NTk3MXx8NjAwMjw9YyYmYzw9NjAwM3x8NjA2ODw9YyYmYzw9NjA2OXx8NjA3MTw9YyYmYzw9NjA3N3x8Yz09NjA4Nnx8NjA4OTw9YyYmYzw9NjA5OXx8Yz09NjEwOXx8NjE1NTw9YyYmYzw9NjE1N3x8NjI3Nzw9YyYmYzw9NjI3OHx8Yz09NjMxM3x8NjQzMjw9YyYmYzw9NjQzNHx8NjQzOTw9YyYmYzw9NjQ0MHx8Yz09NjQ1MHx8NjQ1Nzw9YyYmYzw9NjQ1OXx8NjY3OTw9YyYmYzw9NjY4MHx8Yz09NjY4M3x8Yz09Njc0Mnx8Njc0NDw9YyYmYzw9Njc1MHx8Yz09Njc1Mnx8Yz09Njc1NHx8Njc1Nzw9YyYmYzw9Njc2NHx8Njc3MTw9YyYmYzw9Njc4MHx8Yz09Njc4M3x8NjgzMjw9YyYmYzw9Njg0NXx8Yz09Njg0Nnx8NjkxMjw9YyYmYzw9NjkxNXx8Yz09Njk2NHx8Njk2Njw9YyYmYzw9Njk3MHx8Yz09Njk3Mnx8Yz09Njk3OHx8NzAxOTw9YyYmYzw9NzAyN3x8NzA0MDw9YyYmYzw9NzA0MXx8NzA3NDw9YyYmYzw9NzA3N3x8NzA4MDw9YyYmYzw9NzA4MXx8NzA4Mzw9YyYmYzw9NzA4NXx8Yz09NzE0Mnx8NzE0NDw9YyYmYzw9NzE0NXx8Yz09NzE0OXx8NzE1MTw9YyYmYzw9NzE1M3x8NzIxMjw9YyYmYzw9NzIxOXx8NzIyMjw9YyYmYzw9NzIyM3x8NzM3Njw9YyYmYzw9NzM3OHx8NzM4MDw9YyYmYzw9NzM5Mnx8NzM5NDw9YyYmYzw9NzQwMHx8Yz09NzQwNXx8Yz09NzQxMnx8NzQxNjw9YyYmYzw9NzQxN3x8NzYxNjw9YyYmYzw9NzY3M3x8NzY3NTw9YyYmYzw9NzY3OXx8Yz09ODIwNHx8ODQwMDw9YyYmYzw9ODQxMnx8ODQxMzw9YyYmYzw9ODQxNnx8Yz09ODQxN3x8ODQxODw9YyYmYzw9ODQyMHx8ODQyMTw9YyYmYzw9ODQzMnx8MTE1MDM8PWMmJmM8PTExNTA1fHxjPT0xMTY0N3x8MTE3NDQ8PWMmJmM8PTExNzc1fHwxMjMzMDw9YyYmYzw9MTIzMzN8fDEyMzM0PD1jJiZjPD0xMjMzNXx8MTI0NDE8PWMmJmM8PTEyNDQyfHxjPT00MjYwN3x8NDI2MDg8PWMmJmM8PTQyNjEwfHw0MjYxMjw9YyYmYzw9NDI2MjF8fDQyNjU0PD1jJiZjPD00MjY1NXx8NDI3MzY8PWMmJmM8PTQyNzM3fHxjPT00MzAxMHx8Yz09NDMwMTR8fGM9PTQzMDE5fHw0MzA0NTw9YyYmYzw9NDMwNDZ8fDQzMjA0PD1jJiZjPD00MzIwNXx8NDMyMzI8PWMmJmM8PTQzMjQ5fHw0MzMwMjw9YyYmYzw9NDMzMDl8fDQzMzM1PD1jJiZjPD00MzM0NXx8NDMzOTI8PWMmJmM8PTQzMzk0fHxjPT00MzQ0M3x8NDM0NDY8PWMmJmM8PTQzNDQ5fHxjPT00MzQ1Mnx8Yz09NDM0OTN8fDQzNTYxPD1jJiZjPD00MzU2Nnx8NDM1Njk8PWMmJmM8PTQzNTcwfHw0MzU3Mzw9YyYmYzw9NDM1NzR8fGM9PTQzNTg3fHxjPT00MzU5Nnx8Yz09NDM2NDR8fGM9PTQzNjk2fHw0MzY5ODw9YyYmYzw9NDM3MDB8fDQzNzAzPD1jJiZjPD00MzcwNHx8NDM3MTA8PWMmJmM8PTQzNzExfHxjPT00MzcxM3x8NDM3NTY8PWMmJmM8PTQzNzU3fHxjPT00Mzc2Nnx8Yz09NDQwMDV8fGM9PTQ0MDA4fHxjPT00NDAxM3x8Yz09NjQyODZ8fDY1MDI0PD1jJiZjPD02NTAzOXx8NjUwNTY8PWMmJmM8PTY1MDcxfHw2NTQzODw9YyYmYzw9NjU0Mzl8fGM9PTY2MDQ1fHxjPT02NjI3Mnx8NjY0MjI8PWMmJmM8PTY2NDI2fHw2ODA5Nzw9YyYmYzw9NjgwOTl8fDY4MTAxPD1jJiZjPD02ODEwMnx8NjgxMDg8PWMmJmM8PTY4MTExfHw2ODE1Mjw9YyYmYzw9NjgxNTR8fGM9PTY4MTU5fHw2ODMyNTw9YyYmYzw9NjgzMjZ8fGM9PTY5NjMzfHw2OTY4ODw9YyYmYzw9Njk3MDJ8fDY5NzU5PD1jJiZjPD02OTc2MXx8Njk4MTE8PWMmJmM8PTY5ODE0fHw2OTgxNzw9YyYmYzw9Njk4MTh8fDY5ODg4PD1jJiZjPD02OTg5MHx8Njk5Mjc8PWMmJmM8PTY5OTMxfHw2OTkzMzw9YyYmYzw9Njk5NDB8fGM9PTcwMDAzfHw3MDAxNjw9YyYmYzw9NzAwMTd8fDcwMDcwPD1jJiZjPD03MDA3OHx8NzAwOTA8PWMmJmM8PTcwMDkyfHw3MDE5MTw9YyYmYzw9NzAxOTN8fGM9PTcwMTk2fHw3MDE5ODw9YyYmYzw9NzAxOTl8fGM9PTcwMjA2fHxjPT03MDM2N3x8NzAzNzE8PWMmJmM8PTcwMzc4fHw3MDQwMDw9YyYmYzw9NzA0MDF8fGM9PTcwNDYwfHxjPT03MDQ2Mnx8Yz09NzA0NjR8fGM9PTcwNDg3fHw3MDUwMjw9YyYmYzw9NzA1MDh8fDcwNTEyPD1jJiZjPD03MDUxNnx8NzA3MTI8PWMmJmM8PTcwNzE5fHw3MDcyMjw9YyYmYzw9NzA3MjR8fGM9PTcwNzI2fHxjPT03MDgzMnx8NzA4MzU8PWMmJmM8PTcwODQwfHxjPT03MDg0Mnx8Yz09NzA4NDV8fDcwODQ3PD1jJiZjPD03MDg0OHx8NzA4NTA8PWMmJmM8PTcwODUxfHxjPT03MTA4N3x8NzEwOTA8PWMmJmM8PTcxMDkzfHw3MTEwMDw9YyYmYzw9NzExMDF8fDcxMTAzPD1jJiZjPD03MTEwNHx8NzExMzI8PWMmJmM8PTcxMTMzfHw3MTIxOTw9YyYmYzw9NzEyMjZ8fGM9PTcxMjI5fHw3MTIzMTw9YyYmYzw9NzEyMzJ8fGM9PTcxMzM5fHxjPT03MTM0MXx8NzEzNDQ8PWMmJmM8PTcxMzQ5fHxjPT03MTM1MXx8NzE0NTM8PWMmJmM8PTcxNDU1fHw3MTQ1ODw9YyYmYzw9NzE0NjF8fDcxNDYzPD1jJiZjPD03MTQ2N3x8NzIxOTM8PWMmJmM8PTcyMTk4fHw3MjIwMTw9YyYmYzw9NzIyMDJ8fDcyMjQzPD1jJiZjPD03MjI0OHx8NzIyNTE8PWMmJmM8PTcyMjU0fHxjPT03MjI2M3x8NzIyNzM8PWMmJmM8PTcyMjc4fHw3MjI4MTw9YyYmYzw9NzIyODN8fDcyMzMwPD1jJiZjPD03MjM0Mnx8NzIzNDQ8PWMmJmM8PTcyMzQ1fHw3Mjc1Mjw9YyYmYzw9NzI3NTh8fDcyNzYwPD1jJiZjPD03Mjc2NXx8Yz09NzI3Njd8fDcyODUwPD1jJiZjPD03Mjg3MXx8NzI4NzQ8PWMmJmM8PTcyODgwfHw3Mjg4Mjw9YyYmYzw9NzI4ODN8fDcyODg1PD1jJiZjPD03Mjg4Nnx8NzMwMDk8PWMmJmM8PTczMDE0fHxjPT03MzAxOHx8NzMwMjA8PWMmJmM8PTczMDIxfHw3MzAyMzw9YyYmYzw9NzMwMjl8fGM9PTczMDMxfHw5MjkxMjw9YyYmYzw9OTI5MTZ8fDkyOTc2PD1jJiZjPD05Mjk4Mnx8OTQwOTU8PWMmJmM8PTk0MDk4fHwxMTM4MjE8PWMmJmM8PTExMzgyMnx8Yz09MTE5MTQxfHwxMTkxNDM8PWMmJmM8PTExOTE0NXx8MTE5MTUwPD1jJiZjPD0xMTkxNTR8fDExOTE2Mzw9YyYmYzw9MTE5MTcwfHwxMTkxNzM8PWMmJmM8PTExOTE3OXx8MTE5MjEwPD1jJiZjPD0xMTkyMTN8fDExOTM2Mjw9YyYmYzw9MTE5MzY0fHwxMjEzNDQ8PWMmJmM8PTEyMTM5OHx8MTIxNDAzPD1jJiZjPD0xMjE0NTJ8fGM9PTEyMTQ2MXx8Yz09MTIxNDc2fHwxMjE0OTk8PWMmJmM8PTEyMTUwM3x8MTIxNTA1PD1jJiZjPD0xMjE1MTl8fDEyMjg4MDw9YyYmYzw9MTIyODg2fHwxMjI4ODg8PWMmJmM8PTEyMjkwNHx8MTIyOTA3PD1jJiZjPD0xMjI5MTN8fDEyMjkxNTw9YyYmYzw9MTIyOTE2fHwxMjI5MTg8PWMmJmM8PTEyMjkyMnx8MTI1MTM2PD1jJiZjPD0xMjUxNDJ8fDEyNTI1Mjw9YyYmYzw9MTI1MjU4fHw5MTc1MzY8PWMmJmM8PTkxNzYzMXx8OTE3NzYwPD1jJiZjPD05MTc5OTk/bjoxMjc0NjI8PWMmJmM8PTEyNzQ4Nz9zOmM9PTIzMDd8fGM9PTIzNjN8fDIzNjY8PWMmJmM8PTIzNjh8fDIzNzc8PWMmJmM8PTIzODB8fDIzODI8PWMmJmM8PTIzODN8fDI0MzQ8PWMmJmM8PTI0MzV8fDI0OTU8PWMmJmM8PTI0OTZ8fDI1MDM8PWMmJmM8PTI1MDR8fDI1MDc8PWMmJmM8PTI1MDh8fGM9PTI1NjN8fDI2MjI8PWMmJmM8PTI2MjR8fGM9PTI2OTF8fDI3NTA8PWMmJmM8PTI3NTJ8fGM9PTI3NjF8fDI3NjM8PWMmJmM8PTI3NjR8fDI4MTg8PWMmJmM8PTI4MTl8fGM9PTI4ODB8fDI4ODc8PWMmJmM8PTI4ODh8fDI4OTE8PWMmJmM8PTI4OTJ8fGM9PTMwMDd8fDMwMDk8PWMmJmM8PTMwMTB8fDMwMTQ8PWMmJmM8PTMwMTZ8fDMwMTg8PWMmJmM8PTMwMjB8fDMwNzM8PWMmJmM8PTMwNzV8fDMxMzc8PWMmJmM8PTMxNDB8fDMyMDI8PWMmJmM8PTMyMDN8fGM9PTMyNjJ8fDMyNjQ8PWMmJmM8PTMyNjV8fDMyNjc8PWMmJmM8PTMyNjh8fDMyNzE8PWMmJmM8PTMyNzJ8fDMyNzQ8PWMmJmM8PTMyNzV8fDMzMzA8PWMmJmM8PTMzMzF8fDMzOTE8PWMmJmM8PTMzOTJ8fDMzOTg8PWMmJmM8PTM0MDB8fDM0MDI8PWMmJmM8PTM0MDR8fDM0NTg8PWMmJmM8PTM0NTl8fDM1MzY8PWMmJmM8PTM1Mzd8fDM1NDQ8PWMmJmM8PTM1NTB8fDM1NzA8PWMmJmM8PTM1NzF8fGM9PTM2MzV8fGM9PTM3NjN8fDM5MDI8PWMmJmM8PTM5MDN8fGM9PTM5Njd8fGM9PTQxNDV8fDQxNTU8PWMmJmM8PTQxNTZ8fDQxODI8PWMmJmM8PTQxODN8fGM9PTQyMjh8fGM9PTYwNzB8fDYwNzg8PWMmJmM8PTYwODV8fDYwODc8PWMmJmM8PTYwODh8fDY0MzU8PWMmJmM8PTY0Mzh8fDY0NDE8PWMmJmM8PTY0NDN8fDY0NDg8PWMmJmM8PTY0NDl8fDY0NTE8PWMmJmM8PTY0NTZ8fDY2ODE8PWMmJmM8PTY2ODJ8fGM9PTY3NDF8fGM9PTY3NDN8fDY3NjU8PWMmJmM8PTY3NzB8fGM9PTY5MTZ8fGM9PTY5NjV8fGM9PTY5NzF8fDY5NzM8PWMmJmM8PTY5Nzd8fDY5Nzk8PWMmJmM8PTY5ODB8fGM9PTcwNDJ8fGM9PTcwNzN8fDcwNzg8PWMmJmM8PTcwNzl8fGM9PTcwODJ8fGM9PTcxNDN8fDcxNDY8PWMmJmM8PTcxNDh8fGM9PTcxNTB8fDcxNTQ8PWMmJmM8PTcxNTV8fDcyMDQ8PWMmJmM8PTcyMTF8fDcyMjA8PWMmJmM8PTcyMjF8fGM9PTczOTN8fDc0MTA8PWMmJmM8PTc0MTF8fGM9PTc0MTV8fDQzMDQzPD1jJiZjPD00MzA0NHx8Yz09NDMwNDd8fDQzMTM2PD1jJiZjPD00MzEzN3x8NDMxODg8PWMmJmM8PTQzMjAzfHw0MzM0Njw9YyYmYzw9NDMzNDd8fGM9PTQzMzk1fHw0MzQ0NDw9YyYmYzw9NDM0NDV8fDQzNDUwPD1jJiZjPD00MzQ1MXx8NDM0NTM8PWMmJmM8PTQzNDU2fHw0MzU2Nzw9YyYmYzw9NDM1Njh8fDQzNTcxPD1jJiZjPD00MzU3Mnx8Yz09NDM1OTd8fGM9PTQzNzU1fHw0Mzc1ODw9YyYmYzw9NDM3NTl8fGM9PTQzNzY1fHw0NDAwMzw9YyYmYzw9NDQwMDR8fDQ0MDA2PD1jJiZjPD00NDAwN3x8NDQwMDk8PWMmJmM8PTQ0MDEwfHxjPT00NDAxMnx8Yz09Njk2MzJ8fGM9PTY5NjM0fHxjPT02OTc2Mnx8Njk4MDg8PWMmJmM8PTY5ODEwfHw2OTgxNTw9YyYmYzw9Njk4MTZ8fGM9PTY5OTMyfHxjPT03MDAxOHx8NzAwNjc8PWMmJmM8PTcwMDY5fHw3MDA3OTw9YyYmYzw9NzAwODB8fDcwMTg4PD1jJiZjPD03MDE5MHx8NzAxOTQ8PWMmJmM8PTcwMTk1fHxjPT03MDE5N3x8NzAzNjg8PWMmJmM8PTcwMzcwfHw3MDQwMjw9YyYmYzw9NzA0MDN8fGM9PTcwNDYzfHw3MDQ2NTw9YyYmYzw9NzA0Njh8fDcwNDcxPD1jJiZjPD03MDQ3Mnx8NzA0NzU8PWMmJmM8PTcwNDc3fHw3MDQ5ODw9YyYmYzw9NzA0OTl8fDcwNzA5PD1jJiZjPD03MDcxMXx8NzA3MjA8PWMmJmM8PTcwNzIxfHxjPT03MDcyNXx8NzA4MzM8PWMmJmM8PTcwODM0fHxjPT03MDg0MXx8NzA4NDM8PWMmJmM8PTcwODQ0fHxjPT03MDg0Nnx8Yz09NzA4NDl8fDcxMDg4PD1jJiZjPD03MTA4OXx8NzEwOTY8PWMmJmM8PTcxMDk5fHxjPT03MTEwMnx8NzEyMTY8PWMmJmM8PTcxMjE4fHw3MTIyNzw9YyYmYzw9NzEyMjh8fGM9PTcxMjMwfHxjPT03MTM0MHx8NzEzNDI8PWMmJmM8PTcxMzQzfHxjPT03MTM1MHx8NzE0NTY8PWMmJmM8PTcxNDU3fHxjPT03MTQ2Mnx8NzIxOTk8PWMmJmM8PTcyMjAwfHxjPT03MjI0OXx8NzIyNzk8PWMmJmM8PTcyMjgwfHxjPT03MjM0M3x8Yz09NzI3NTF8fGM9PTcyNzY2fHxjPT03Mjg3M3x8Yz09NzI4ODF8fGM9PTcyODg0fHw5NDAzMzw9YyYmYzw9OTQwNzh8fGM9PTExOTE0Mnx8Yz09MTE5MTQ5P286NDM1Mjw9YyYmYzw9NDQ0N3x8NDMzNjA8PWMmJmM8PTQzMzg4P3I6NDQ0ODw9YyYmYzw9NDUxOXx8NTUyMTY8PWMmJmM8PTU1MjM4P2E6NDUyMDw9YyYmYzw9NDYwN3x8NTUyNDM8PWMmJmM8PTU1MjkxP2g6Yz09NDQwMzJ8fGM9PTQ0MDYwfHxjPT00NDA4OHx8Yz09NDQxMTZ8fGM9PTQ0MTQ0fHxjPT00NDE3Mnx8Yz09NDQyMDB8fGM9PTQ0MjI4fHxjPT00NDI1Nnx8Yz09NDQyODR8fGM9PTQ0MzEyfHxjPT00NDM0MHx8Yz09NDQzNjh8fGM9PTQ0Mzk2fHxjPT00NDQyNHx8Yz09NDQ0NTJ8fGM9PTQ0NDgwfHxjPT00NDUwOHx8Yz09NDQ1MzZ8fGM9PTQ0NTY0fHxjPT00NDU5Mnx8Yz09NDQ2MjB8fGM9PTQ0NjQ4fHxjPT00NDY3Nnx8Yz09NDQ3MDR8fGM9PTQ0NzMyfHxjPT00NDc2MHx8Yz09NDQ3ODh8fGM9PTQ0ODE2fHxjPT00NDg0NHx8Yz09NDQ4NzJ8fGM9PTQ0OTAwfHxjPT00NDkyOHx8Yz09NDQ5NTZ8fGM9PTQ0OTg0fHxjPT00NTAxMnx8Yz09NDUwNDB8fGM9PTQ1MDY4fHxjPT00NTA5Nnx8Yz09NDUxMjR8fGM9PTQ1MTUyfHxjPT00NTE4MHx8Yz09NDUyMDh8fGM9PTQ1MjM2fHxjPT00NTI2NHx8Yz09NDUyOTJ8fGM9PTQ1MzIwfHxjPT00NTM0OHx8Yz09NDUzNzZ8fGM9PTQ1NDA0fHxjPT00NTQzMnx8Yz09NDU0NjB8fGM9PTQ1NDg4fHxjPT00NTUxNnx8Yz09NDU1NDR8fGM9PTQ1NTcyfHxjPT00NTYwMHx8Yz09NDU2Mjh8fGM9PTQ1NjU2fHxjPT00NTY4NHx8Yz09NDU3MTJ8fGM9PTQ1NzQwfHxjPT00NTc2OHx8Yz09NDU3OTZ8fGM9PTQ1ODI0fHxjPT00NTg1Mnx8Yz09NDU4ODB8fGM9PTQ1OTA4fHxjPT00NTkzNnx8Yz09NDU5NjR8fGM9PTQ1OTkyfHxjPT00NjAyMHx8Yz09NDYwNDh8fGM9PTQ2MDc2fHxjPT00NjEwNHx8Yz09NDYxMzJ8fGM9PTQ2MTYwfHxjPT00NjE4OHx8Yz09NDYyMTZ8fGM9PTQ2MjQ0fHxjPT00NjI3Mnx8Yz09NDYzMDB8fGM9PTQ2MzI4fHxjPT00NjM1Nnx8Yz09NDYzODR8fGM9PTQ2NDEyfHxjPT00NjQ0MHx8Yz09NDY0Njh8fGM9PTQ2NDk2fHxjPT00NjUyNHx8Yz09NDY1NTJ8fGM9PTQ2NTgwfHxjPT00NjYwOHx8Yz09NDY2MzZ8fGM9PTQ2NjY0fHxjPT00NjY5Mnx8Yz09NDY3MjB8fGM9PTQ2NzQ4fHxjPT00Njc3Nnx8Yz09NDY4MDR8fGM9PTQ2ODMyfHxjPT00Njg2MHx8Yz09NDY4ODh8fGM9PTQ2OTE2fHxjPT00Njk0NHx8Yz09NDY5NzJ8fGM9PTQ3ZTN8fGM9PTQ3MDI4fHxjPT00NzA1Nnx8Yz09NDcwODR8fGM9PTQ3MTEyfHxjPT00NzE0MHx8Yz09NDcxNjh8fGM9PTQ3MTk2fHxjPT00NzIyNHx8Yz09NDcyNTJ8fGM9PTQ3MjgwfHxjPT00NzMwOHx8Yz09NDczMzZ8fGM9PTQ3MzY0fHxjPT00NzM5Mnx8Yz09NDc0MjB8fGM9PTQ3NDQ4fHxjPT00NzQ3Nnx8Yz09NDc1MDR8fGM9PTQ3NTMyfHxjPT00NzU2MHx8Yz09NDc1ODh8fGM9PTQ3NjE2fHxjPT00NzY0NHx8Yz09NDc2NzJ8fGM9PTQ3NzAwfHxjPT00NzcyOHx8Yz09NDc3NTZ8fGM9PTQ3Nzg0fHxjPT00NzgxMnx8Yz09NDc4NDB8fGM9PTQ3ODY4fHxjPT00Nzg5Nnx8Yz09NDc5MjR8fGM9PTQ3OTUyfHxjPT00Nzk4MHx8Yz09NDgwMDh8fGM9PTQ4MDM2fHxjPT00ODA2NHx8Yz09NDgwOTJ8fGM9PTQ4MTIwfHxjPT00ODE0OHx8Yz09NDgxNzZ8fGM9PTQ4MjA0fHxjPT00ODIzMnx8Yz09NDgyNjB8fGM9PTQ4Mjg4fHxjPT00ODMxNnx8Yz09NDgzNDR8fGM9PTQ4MzcyfHxjPT00ODQwMHx8Yz09NDg0Mjh8fGM9PTQ4NDU2fHxjPT00ODQ4NHx8Yz09NDg1MTJ8fGM9PTQ4NTQwfHxjPT00ODU2OHx8Yz09NDg1OTZ8fGM9PTQ4NjI0fHxjPT00ODY1Mnx8Yz09NDg2ODB8fGM9PTQ4NzA4fHxjPT00ODczNnx8Yz09NDg3NjR8fGM9PTQ4NzkyfHxjPT00ODgyMHx8Yz09NDg4NDh8fGM9PTQ4ODc2fHxjPT00ODkwNHx8Yz09NDg5MzJ8fGM9PTQ4OTYwfHxjPT00ODk4OHx8Yz09NDkwMTZ8fGM9PTQ5MDQ0fHxjPT00OTA3Mnx8Yz09NDkxMDB8fGM9PTQ5MTI4fHxjPT00OTE1Nnx8Yz09NDkxODR8fGM9PTQ5MjEyfHxjPT00OTI0MHx8Yz09NDkyNjh8fGM9PTQ5Mjk2fHxjPT00OTMyNHx8Yz09NDkzNTJ8fGM9PTQ5MzgwfHxjPT00OTQwOHx8Yz09NDk0MzZ8fGM9PTQ5NDY0fHxjPT00OTQ5Mnx8Yz09NDk1MjB8fGM9PTQ5NTQ4fHxjPT00OTU3Nnx8Yz09NDk2MDR8fGM9PTQ5NjMyfHxjPT00OTY2MHx8Yz09NDk2ODh8fGM9PTQ5NzE2fHxjPT00OTc0NHx8Yz09NDk3NzJ8fGM9PTQ5ODAwfHxjPT00OTgyOHx8Yz09NDk4NTZ8fGM9PTQ5ODg0fHxjPT00OTkxMnx8Yz09NDk5NDB8fGM9PTQ5OTY4fHxjPT00OTk5Nnx8Yz09NTAwMjR8fGM9PTUwMDUyfHxjPT01MDA4MHx8Yz09NTAxMDh8fGM9PTUwMTM2fHxjPT01MDE2NHx8Yz09NTAxOTJ8fGM9PTUwMjIwfHxjPT01MDI0OHx8Yz09NTAyNzZ8fGM9PTUwMzA0fHxjPT01MDMzMnx8Yz09NTAzNjB8fGM9PTUwMzg4fHxjPT01MDQxNnx8Yz09NTA0NDR8fGM9PTUwNDcyfHxjPT01MDUwMHx8Yz09NTA1Mjh8fGM9PTUwNTU2fHxjPT01MDU4NHx8Yz09NTA2MTJ8fGM9PTUwNjQwfHxjPT01MDY2OHx8Yz09NTA2OTZ8fGM9PTUwNzI0fHxjPT01MDc1Mnx8Yz09NTA3ODB8fGM9PTUwODA4fHxjPT01MDgzNnx8Yz09NTA4NjR8fGM9PTUwODkyfHxjPT01MDkyMHx8Yz09NTA5NDh8fGM9PTUwOTc2fHxjPT01MTAwNHx8Yz09NTEwMzJ8fGM9PTUxMDYwfHxjPT01MTA4OHx8Yz09NTExMTZ8fGM9PTUxMTQ0fHxjPT01MTE3Mnx8Yz09NTEyMDB8fGM9PTUxMjI4fHxjPT01MTI1Nnx8Yz09NTEyODR8fGM9PTUxMzEyfHxjPT01MTM0MHx8Yz09NTEzNjh8fGM9PTUxMzk2fHxjPT01MTQyNHx8Yz09NTE0NTJ8fGM9PTUxNDgwfHxjPT01MTUwOHx8Yz09NTE1MzZ8fGM9PTUxNTY0fHxjPT01MTU5Mnx8Yz09NTE2MjB8fGM9PTUxNjQ4fHxjPT01MTY3Nnx8Yz09NTE3MDR8fGM9PTUxNzMyfHxjPT01MTc2MHx8Yz09NTE3ODh8fGM9PTUxODE2fHxjPT01MTg0NHx8Yz09NTE4NzJ8fGM9PTUxOTAwfHxjPT01MTkyOHx8Yz09NTE5NTZ8fGM9PTUxOTg0fHxjPT01MjAxMnx8Yz09NTIwNDB8fGM9PTUyMDY4fHxjPT01MjA5Nnx8Yz09NTIxMjR8fGM9PTUyMTUyfHxjPT01MjE4MHx8Yz09NTIyMDh8fGM9PTUyMjM2fHxjPT01MjI2NHx8Yz09NTIyOTJ8fGM9PTUyMzIwfHxjPT01MjM0OHx8Yz09NTIzNzZ8fGM9PTUyNDA0fHxjPT01MjQzMnx8Yz09NTI0NjB8fGM9PTUyNDg4fHxjPT01MjUxNnx8Yz09NTI1NDR8fGM9PTUyNTcyfHxjPT01MjYwMHx8Yz09NTI2Mjh8fGM9PTUyNjU2fHxjPT01MjY4NHx8Yz09NTI3MTJ8fGM9PTUyNzQwfHxjPT01Mjc2OHx8Yz09NTI3OTZ8fGM9PTUyODI0fHxjPT01Mjg1Mnx8Yz09NTI4ODB8fGM9PTUyOTA4fHxjPT01MjkzNnx8Yz09NTI5NjR8fGM9PTUyOTkyfHxjPT01MzAyMHx8Yz09NTMwNDh8fGM9PTUzMDc2fHxjPT01MzEwNHx8Yz09NTMxMzJ8fGM9PTUzMTYwfHxjPT01MzE4OHx8Yz09NTMyMTZ8fGM9PTUzMjQ0fHxjPT01MzI3Mnx8Yz09NTMzMDB8fGM9PTUzMzI4fHxjPT01MzM1Nnx8Yz09NTMzODR8fGM9PTUzNDEyfHxjPT01MzQ0MHx8Yz09NTM0Njh8fGM9PTUzNDk2fHxjPT01MzUyNHx8Yz09NTM1NTJ8fGM9PTUzNTgwfHxjPT01MzYwOHx8Yz09NTM2MzZ8fGM9PTUzNjY0fHxjPT01MzY5Mnx8Yz09NTM3MjB8fGM9PTUzNzQ4fHxjPT01Mzc3Nnx8Yz09NTM4MDR8fGM9PTUzODMyfHxjPT01Mzg2MHx8Yz09NTM4ODh8fGM9PTUzOTE2fHxjPT01Mzk0NHx8Yz09NTM5NzJ8fGM9PTU0ZTN8fGM9PTU0MDI4fHxjPT01NDA1Nnx8Yz09NTQwODR8fGM9PTU0MTEyfHxjPT01NDE0MHx8Yz09NTQxNjh8fGM9PTU0MTk2fHxjPT01NDIyNHx8Yz09NTQyNTJ8fGM9PTU0MjgwfHxjPT01NDMwOHx8Yz09NTQzMzZ8fGM9PTU0MzY0fHxjPT01NDM5Mnx8Yz09NTQ0MjB8fGM9PTU0NDQ4fHxjPT01NDQ3Nnx8Yz09NTQ1MDR8fGM9PTU0NTMyfHxjPT01NDU2MHx8Yz09NTQ1ODh8fGM9PTU0NjE2fHxjPT01NDY0NHx8Yz09NTQ2NzJ8fGM9PTU0NzAwfHxjPT01NDcyOHx8Yz09NTQ3NTZ8fGM9PTU0Nzg0fHxjPT01NDgxMnx8Yz09NTQ4NDB8fGM9PTU0ODY4fHxjPT01NDg5Nnx8Yz09NTQ5MjR8fGM9PTU0OTUyfHxjPT01NDk4MHx8Yz09NTUwMDh8fGM9PTU1MDM2fHxjPT01NTA2NHx8Yz09NTUwOTJ8fGM9PTU1MTIwfHxjPT01NTE0OHx8Yz09NTUxNzY/QTo0NDAzMzw9YyYmYzw9NDQwNTl8fDQ0MDYxPD1jJiZjPD00NDA4N3x8NDQwODk8PWMmJmM8PTQ0MTE1fHw0NDExNzw9YyYmYzw9NDQxNDN8fDQ0MTQ1PD1jJiZjPD00NDE3MXx8NDQxNzM8PWMmJmM8PTQ0MTk5fHw0NDIwMTw9YyYmYzw9NDQyMjd8fDQ0MjI5PD1jJiZjPD00NDI1NXx8NDQyNTc8PWMmJmM8PTQ0MjgzfHw0NDI4NTw9YyYmYzw9NDQzMTF8fDQ0MzEzPD1jJiZjPD00NDMzOXx8NDQzNDE8PWMmJmM8PTQ0MzY3fHw0NDM2OTw9YyYmYzw9NDQzOTV8fDQ0Mzk3PD1jJiZjPD00NDQyM3x8NDQ0MjU8PWMmJmM8PTQ0NDUxfHw0NDQ1Mzw9YyYmYzw9NDQ0Nzl8fDQ0NDgxPD1jJiZjPD00NDUwN3x8NDQ1MDk8PWMmJmM8PTQ0NTM1fHw0NDUzNzw9YyYmYzw9NDQ1NjN8fDQ0NTY1PD1jJiZjPD00NDU5MXx8NDQ1OTM8PWMmJmM8PTQ0NjE5fHw0NDYyMTw9YyYmYzw9NDQ2NDd8fDQ0NjQ5PD1jJiZjPD00NDY3NXx8NDQ2Nzc8PWMmJmM8PTQ0NzAzfHw0NDcwNTw9YyYmYzw9NDQ3MzF8fDQ0NzMzPD1jJiZjPD00NDc1OXx8NDQ3NjE8PWMmJmM8PTQ0Nzg3fHw0NDc4OTw9YyYmYzw9NDQ4MTV8fDQ0ODE3PD1jJiZjPD00NDg0M3x8NDQ4NDU8PWMmJmM8PTQ0ODcxfHw0NDg3Mzw9YyYmYzw9NDQ4OTl8fDQ0OTAxPD1jJiZjPD00NDkyN3x8NDQ5Mjk8PWMmJmM8PTQ0OTU1fHw0NDk1Nzw9YyYmYzw9NDQ5ODN8fDQ0OTg1PD1jJiZjPD00NTAxMXx8NDUwMTM8PWMmJmM8PTQ1MDM5fHw0NTA0MTw9YyYmYzw9NDUwNjd8fDQ1MDY5PD1jJiZjPD00NTA5NXx8NDUwOTc8PWMmJmM8PTQ1MTIzfHw0NTEyNTw9YyYmYzw9NDUxNTF8fDQ1MTUzPD1jJiZjPD00NTE3OXx8NDUxODE8PWMmJmM8PTQ1MjA3fHw0NTIwOTw9YyYmYzw9NDUyMzV8fDQ1MjM3PD1jJiZjPD00NTI2M3x8NDUyNjU8PWMmJmM8PTQ1MjkxfHw0NTI5Mzw9YyYmYzw9NDUzMTl8fDQ1MzIxPD1jJiZjPD00NTM0N3x8NDUzNDk8PWMmJmM8PTQ1Mzc1fHw0NTM3Nzw9YyYmYzw9NDU0MDN8fDQ1NDA1PD1jJiZjPD00NTQzMXx8NDU0MzM8PWMmJmM8PTQ1NDU5fHw0NTQ2MTw9YyYmYzw9NDU0ODd8fDQ1NDg5PD1jJiZjPD00NTUxNXx8NDU1MTc8PWMmJmM8PTQ1NTQzfHw0NTU0NTw9YyYmYzw9NDU1NzF8fDQ1NTczPD1jJiZjPD00NTU5OXx8NDU2MDE8PWMmJmM8PTQ1NjI3fHw0NTYyOTw9YyYmYzw9NDU2NTV8fDQ1NjU3PD1jJiZjPD00NTY4M3x8NDU2ODU8PWMmJmM8PTQ1NzExfHw0NTcxMzw9YyYmYzw9NDU3Mzl8fDQ1NzQxPD1jJiZjPD00NTc2N3x8NDU3Njk8PWMmJmM8PTQ1Nzk1fHw0NTc5Nzw9YyYmYzw9NDU4MjN8fDQ1ODI1PD1jJiZjPD00NTg1MXx8NDU4NTM8PWMmJmM8PTQ1ODc5fHw0NTg4MTw9YyYmYzw9NDU5MDd8fDQ1OTA5PD1jJiZjPD00NTkzNXx8NDU5Mzc8PWMmJmM8PTQ1OTYzfHw0NTk2NTw9YyYmYzw9NDU5OTF8fDQ1OTkzPD1jJiZjPD00NjAxOXx8NDYwMjE8PWMmJmM8PTQ2MDQ3fHw0NjA0OTw9YyYmYzw9NDYwNzV8fDQ2MDc3PD1jJiZjPD00NjEwM3x8NDYxMDU8PWMmJmM8PTQ2MTMxfHw0NjEzMzw9YyYmYzw9NDYxNTl8fDQ2MTYxPD1jJiZjPD00NjE4N3x8NDYxODk8PWMmJmM8PTQ2MjE1fHw0NjIxNzw9YyYmYzw9NDYyNDN8fDQ2MjQ1PD1jJiZjPD00NjI3MXx8NDYyNzM8PWMmJmM8PTQ2Mjk5fHw0NjMwMTw9YyYmYzw9NDYzMjd8fDQ2MzI5PD1jJiZjPD00NjM1NXx8NDYzNTc8PWMmJmM8PTQ2MzgzfHw0NjM4NTw9YyYmYzw9NDY0MTF8fDQ2NDEzPD1jJiZjPD00NjQzOXx8NDY0NDE8PWMmJmM8PTQ2NDY3fHw0NjQ2OTw9YyYmYzw9NDY0OTV8fDQ2NDk3PD1jJiZjPD00NjUyM3x8NDY1MjU8PWMmJmM8PTQ2NTUxfHw0NjU1Mzw9YyYmYzw9NDY1Nzl8fDQ2NTgxPD1jJiZjPD00NjYwN3x8NDY2MDk8PWMmJmM8PTQ2NjM1fHw0NjYzNzw9YyYmYzw9NDY2NjN8fDQ2NjY1PD1jJiZjPD00NjY5MXx8NDY2OTM8PWMmJmM8PTQ2NzE5fHw0NjcyMTw9YyYmYzw9NDY3NDd8fDQ2NzQ5PD1jJiZjPD00Njc3NXx8NDY3Nzc8PWMmJmM8PTQ2ODAzfHw0NjgwNTw9YyYmYzw9NDY4MzF8fDQ2ODMzPD1jJiZjPD00Njg1OXx8NDY4NjE8PWMmJmM8PTQ2ODg3fHw0Njg4OTw9YyYmYzw9NDY5MTV8fDQ2OTE3PD1jJiZjPD00Njk0M3x8NDY5NDU8PWMmJmM8PTQ2OTcxfHw0Njk3Mzw9YyYmYzw9NDY5OTl8fDQ3MDAxPD1jJiZjPD00NzAyN3x8NDcwMjk8PWMmJmM8PTQ3MDU1fHw0NzA1Nzw9YyYmYzw9NDcwODN8fDQ3MDg1PD1jJiZjPD00NzExMXx8NDcxMTM8PWMmJmM8PTQ3MTM5fHw0NzE0MTw9YyYmYzw9NDcxNjd8fDQ3MTY5PD1jJiZjPD00NzE5NXx8NDcxOTc8PWMmJmM8PTQ3MjIzfHw0NzIyNTw9YyYmYzw9NDcyNTF8fDQ3MjUzPD1jJiZjPD00NzI3OXx8NDcyODE8PWMmJmM8PTQ3MzA3fHw0NzMwOTw9YyYmYzw9NDczMzV8fDQ3MzM3PD1jJiZjPD00NzM2M3x8NDczNjU8PWMmJmM8PTQ3MzkxfHw0NzM5Mzw9YyYmYzw9NDc0MTl8fDQ3NDIxPD1jJiZjPD00NzQ0N3x8NDc0NDk8PWMmJmM8PTQ3NDc1fHw0NzQ3Nzw9YyYmYzw9NDc1MDN8fDQ3NTA1PD1jJiZjPD00NzUzMXx8NDc1MzM8PWMmJmM8PTQ3NTU5fHw0NzU2MTw9YyYmYzw9NDc1ODd8fDQ3NTg5PD1jJiZjPD00NzYxNXx8NDc2MTc8PWMmJmM8PTQ3NjQzfHw0NzY0NTw9YyYmYzw9NDc2NzF8fDQ3NjczPD1jJiZjPD00NzY5OXx8NDc3MDE8PWMmJmM8PTQ3NzI3fHw0NzcyOTw9YyYmYzw9NDc3NTV8fDQ3NzU3PD1jJiZjPD00Nzc4M3x8NDc3ODU8PWMmJmM8PTQ3ODExfHw0NzgxMzw9YyYmYzw9NDc4Mzl8fDQ3ODQxPD1jJiZjPD00Nzg2N3x8NDc4Njk8PWMmJmM8PTQ3ODk1fHw0Nzg5Nzw9YyYmYzw9NDc5MjN8fDQ3OTI1PD1jJiZjPD00Nzk1MXx8NDc5NTM8PWMmJmM8PTQ3OTc5fHw0Nzk4MTw9YyYmYzw9NDgwMDd8fDQ4MDA5PD1jJiZjPD00ODAzNXx8NDgwMzc8PWMmJmM8PTQ4MDYzfHw0ODA2NTw9YyYmYzw9NDgwOTF8fDQ4MDkzPD1jJiZjPD00ODExOXx8NDgxMjE8PWMmJmM8PTQ4MTQ3fHw0ODE0OTw9YyYmYzw9NDgxNzV8fDQ4MTc3PD1jJiZjPD00ODIwM3x8NDgyMDU8PWMmJmM8PTQ4MjMxfHw0ODIzMzw9YyYmYzw9NDgyNTl8fDQ4MjYxPD1jJiZjPD00ODI4N3x8NDgyODk8PWMmJmM8PTQ4MzE1fHw0ODMxNzw9YyYmYzw9NDgzNDN8fDQ4MzQ1PD1jJiZjPD00ODM3MXx8NDgzNzM8PWMmJmM8PTQ4Mzk5fHw0ODQwMTw9YyYmYzw9NDg0Mjd8fDQ4NDI5PD1jJiZjPD00ODQ1NXx8NDg0NTc8PWMmJmM8PTQ4NDgzfHw0ODQ4NTw9YyYmYzw9NDg1MTF8fDQ4NTEzPD1jJiZjPD00ODUzOXx8NDg1NDE8PWMmJmM8PTQ4NTY3fHw0ODU2OTw9YyYmYzw9NDg1OTV8fDQ4NTk3PD1jJiZjPD00ODYyM3x8NDg2MjU8PWMmJmM8PTQ4NjUxfHw0ODY1Mzw9YyYmYzw9NDg2Nzl8fDQ4NjgxPD1jJiZjPD00ODcwN3x8NDg3MDk8PWMmJmM8PTQ4NzM1fHw0ODczNzw9YyYmYzw9NDg3NjN8fDQ4NzY1PD1jJiZjPD00ODc5MXx8NDg3OTM8PWMmJmM8PTQ4ODE5fHw0ODgyMTw9YyYmYzw9NDg4NDd8fDQ4ODQ5PD1jJiZjPD00ODg3NXx8NDg4Nzc8PWMmJmM8PTQ4OTAzfHw0ODkwNTw9YyYmYzw9NDg5MzF8fDQ4OTMzPD1jJiZjPD00ODk1OXx8NDg5NjE8PWMmJmM8PTQ4OTg3fHw0ODk4OTw9YyYmYzw9NDkwMTV8fDQ5MDE3PD1jJiZjPD00OTA0M3x8NDkwNDU8PWMmJmM8PTQ5MDcxfHw0OTA3Mzw9YyYmYzw9NDkwOTl8fDQ5MTAxPD1jJiZjPD00OTEyN3x8NDkxMjk8PWMmJmM8PTQ5MTU1fHw0OTE1Nzw9YyYmYzw9NDkxODN8fDQ5MTg1PD1jJiZjPD00OTIxMXx8NDkyMTM8PWMmJmM8PTQ5MjM5fHw0OTI0MTw9YyYmYzw9NDkyNjd8fDQ5MjY5PD1jJiZjPD00OTI5NXx8NDkyOTc8PWMmJmM8PTQ5MzIzfHw0OTMyNTw9YyYmYzw9NDkzNTF8fDQ5MzUzPD1jJiZjPD00OTM3OXx8NDkzODE8PWMmJmM8PTQ5NDA3fHw0OTQwOTw9YyYmYzw9NDk0MzV8fDQ5NDM3PD1jJiZjPD00OTQ2M3x8NDk0NjU8PWMmJmM8PTQ5NDkxfHw0OTQ5Mzw9YyYmYzw9NDk1MTl8fDQ5NTIxPD1jJiZjPD00OTU0N3x8NDk1NDk8PWMmJmM8PTQ5NTc1fHw0OTU3Nzw9YyYmYzw9NDk2MDN8fDQ5NjA1PD1jJiZjPD00OTYzMXx8NDk2MzM8PWMmJmM8PTQ5NjU5fHw0OTY2MTw9YyYmYzw9NDk2ODd8fDQ5Njg5PD1jJiZjPD00OTcxNXx8NDk3MTc8PWMmJmM8PTQ5NzQzfHw0OTc0NTw9YyYmYzw9NDk3NzF8fDQ5NzczPD1jJiZjPD00OTc5OXx8NDk4MDE8PWMmJmM8PTQ5ODI3fHw0OTgyOTw9YyYmYzw9NDk4NTV8fDQ5ODU3PD1jJiZjPD00OTg4M3x8NDk4ODU8PWMmJmM8PTQ5OTExfHw0OTkxMzw9YyYmYzw9NDk5Mzl8fDQ5OTQxPD1jJiZjPD00OTk2N3x8NDk5Njk8PWMmJmM8PTQ5OTk1fHw0OTk5Nzw9YyYmYzw9NTAwMjN8fDUwMDI1PD1jJiZjPD01MDA1MXx8NTAwNTM8PWMmJmM8PTUwMDc5fHw1MDA4MTw9YyYmYzw9NTAxMDd8fDUwMTA5PD1jJiZjPD01MDEzNXx8NTAxMzc8PWMmJmM8PTUwMTYzfHw1MDE2NTw9YyYmYzw9NTAxOTF8fDUwMTkzPD1jJiZjPD01MDIxOXx8NTAyMjE8PWMmJmM8PTUwMjQ3fHw1MDI0OTw9YyYmYzw9NTAyNzV8fDUwMjc3PD1jJiZjPD01MDMwM3x8NTAzMDU8PWMmJmM8PTUwMzMxfHw1MDMzMzw9YyYmYzw9NTAzNTl8fDUwMzYxPD1jJiZjPD01MDM4N3x8NTAzODk8PWMmJmM8PTUwNDE1fHw1MDQxNzw9YyYmYzw9NTA0NDN8fDUwNDQ1PD1jJiZjPD01MDQ3MXx8NTA0NzM8PWMmJmM8PTUwNDk5fHw1MDUwMTw9YyYmYzw9NTA1Mjd8fDUwNTI5PD1jJiZjPD01MDU1NXx8NTA1NTc8PWMmJmM8PTUwNTgzfHw1MDU4NTw9YyYmYzw9NTA2MTF8fDUwNjEzPD1jJiZjPD01MDYzOXx8NTA2NDE8PWMmJmM8PTUwNjY3fHw1MDY2OTw9YyYmYzw9NTA2OTV8fDUwNjk3PD1jJiZjPD01MDcyM3x8NTA3MjU8PWMmJmM8PTUwNzUxfHw1MDc1Mzw9YyYmYzw9NTA3Nzl8fDUwNzgxPD1jJiZjPD01MDgwN3x8NTA4MDk8PWMmJmM8PTUwODM1fHw1MDgzNzw9YyYmYzw9NTA4NjN8fDUwODY1PD1jJiZjPD01MDg5MXx8NTA4OTM8PWMmJmM8PTUwOTE5fHw1MDkyMTw9YyYmYzw9NTA5NDd8fDUwOTQ5PD1jJiZjPD01MDk3NXx8NTA5Nzc8PWMmJmM8PTUxMDAzfHw1MTAwNTw9YyYmYzw9NTEwMzF8fDUxMDMzPD1jJiZjPD01MTA1OXx8NTEwNjE8PWMmJmM8PTUxMDg3fHw1MTA4OTw9YyYmYzw9NTExMTV8fDUxMTE3PD1jJiZjPD01MTE0M3x8NTExNDU8PWMmJmM8PTUxMTcxfHw1MTE3Mzw9YyYmYzw9NTExOTl8fDUxMjAxPD1jJiZjPD01MTIyN3x8NTEyMjk8PWMmJmM8PTUxMjU1fHw1MTI1Nzw9YyYmYzw9NTEyODN8fDUxMjg1PD1jJiZjPD01MTMxMXx8NTEzMTM8PWMmJmM8PTUxMzM5fHw1MTM0MTw9YyYmYzw9NTEzNjd8fDUxMzY5PD1jJiZjPD01MTM5NXx8NTEzOTc8PWMmJmM8PTUxNDIzfHw1MTQyNTw9YyYmYzw9NTE0NTF8fDUxNDUzPD1jJiZjPD01MTQ3OXx8NTE0ODE8PWMmJmM8PTUxNTA3fHw1MTUwOTw9YyYmYzw9NTE1MzV8fDUxNTM3PD1jJiZjPD01MTU2M3x8NTE1NjU8PWMmJmM8PTUxNTkxfHw1MTU5Mzw9YyYmYzw9NTE2MTl8fDUxNjIxPD1jJiZjPD01MTY0N3x8NTE2NDk8PWMmJmM8PTUxNjc1fHw1MTY3Nzw9YyYmYzw9NTE3MDN8fDUxNzA1PD1jJiZjPD01MTczMXx8NTE3MzM8PWMmJmM8PTUxNzU5fHw1MTc2MTw9YyYmYzw9NTE3ODd8fDUxNzg5PD1jJiZjPD01MTgxNXx8NTE4MTc8PWMmJmM8PTUxODQzfHw1MTg0NTw9YyYmYzw9NTE4NzF8fDUxODczPD1jJiZjPD01MTg5OXx8NTE5MDE8PWMmJmM8PTUxOTI3fHw1MTkyOTw9YyYmYzw9NTE5NTV8fDUxOTU3PD1jJiZjPD01MTk4M3x8NTE5ODU8PWMmJmM8PTUyMDExfHw1MjAxMzw9YyYmYzw9NTIwMzl8fDUyMDQxPD1jJiZjPD01MjA2N3x8NTIwNjk8PWMmJmM8PTUyMDk1fHw1MjA5Nzw9YyYmYzw9NTIxMjN8fDUyMTI1PD1jJiZjPD01MjE1MXx8NTIxNTM8PWMmJmM8PTUyMTc5fHw1MjE4MTw9YyYmYzw9NTIyMDd8fDUyMjA5PD1jJiZjPD01MjIzNXx8NTIyMzc8PWMmJmM8PTUyMjYzfHw1MjI2NTw9YyYmYzw9NTIyOTF8fDUyMjkzPD1jJiZjPD01MjMxOXx8NTIzMjE8PWMmJmM8PTUyMzQ3fHw1MjM0OTw9YyYmYzw9NTIzNzV8fDUyMzc3PD1jJiZjPD01MjQwM3x8NTI0MDU8PWMmJmM8PTUyNDMxfHw1MjQzMzw9YyYmYzw9NTI0NTl8fDUyNDYxPD1jJiZjPD01MjQ4N3x8NTI0ODk8PWMmJmM8PTUyNTE1fHw1MjUxNzw9YyYmYzw9NTI1NDN8fDUyNTQ1PD1jJiZjPD01MjU3MXx8NTI1NzM8PWMmJmM8PTUyNTk5fHw1MjYwMTw9YyYmYzw9NTI2Mjd8fDUyNjI5PD1jJiZjPD01MjY1NXx8NTI2NTc8PWMmJmM8PTUyNjgzfHw1MjY4NTw9YyYmYzw9NTI3MTF8fDUyNzEzPD1jJiZjPD01MjczOXx8NTI3NDE8PWMmJmM8PTUyNzY3fHw1Mjc2OTw9YyYmYzw9NTI3OTV8fDUyNzk3PD1jJiZjPD01MjgyM3x8NTI4MjU8PWMmJmM8PTUyODUxfHw1Mjg1Mzw9YyYmYzw9NTI4Nzl8fDUyODgxPD1jJiZjPD01MjkwN3x8NTI5MDk8PWMmJmM8PTUyOTM1fHw1MjkzNzw9YyYmYzw9NTI5NjN8fDUyOTY1PD1jJiZjPD01Mjk5MXx8NTI5OTM8PWMmJmM8PTUzMDE5fHw1MzAyMTw9YyYmYzw9NTMwNDd8fDUzMDQ5PD1jJiZjPD01MzA3NXx8NTMwNzc8PWMmJmM8PTUzMTAzfHw1MzEwNTw9YyYmYzw9NTMxMzF8fDUzMTMzPD1jJiZjPD01MzE1OXx8NTMxNjE8PWMmJmM8PTUzMTg3fHw1MzE4OTw9YyYmYzw9NTMyMTV8fDUzMjE3PD1jJiZjPD01MzI0M3x8NTMyNDU8PWMmJmM8PTUzMjcxfHw1MzI3Mzw9YyYmYzw9NTMyOTl8fDUzMzAxPD1jJiZjPD01MzMyN3x8NTMzMjk8PWMmJmM8PTUzMzU1fHw1MzM1Nzw9YyYmYzw9NTMzODN8fDUzMzg1PD1jJiZjPD01MzQxMXx8NTM0MTM8PWMmJmM8PTUzNDM5fHw1MzQ0MTw9YyYmYzw9NTM0Njd8fDUzNDY5PD1jJiZjPD01MzQ5NXx8NTM0OTc8PWMmJmM8PTUzNTIzfHw1MzUyNTw9YyYmYzw9NTM1NTF8fDUzNTUzPD1jJiZjPD01MzU3OXx8NTM1ODE8PWMmJmM8PTUzNjA3fHw1MzYwOTw9YyYmYzw9NTM2MzV8fDUzNjM3PD1jJiZjPD01MzY2M3x8NTM2NjU8PWMmJmM8PTUzNjkxfHw1MzY5Mzw9YyYmYzw9NTM3MTl8fDUzNzIxPD1jJiZjPD01Mzc0N3x8NTM3NDk8PWMmJmM8PTUzNzc1fHw1Mzc3Nzw9YyYmYzw9NTM4MDN8fDUzODA1PD1jJiZjPD01MzgzMXx8NTM4MzM8PWMmJmM8PTUzODU5fHw1Mzg2MTw9YyYmYzw9NTM4ODd8fDUzODg5PD1jJiZjPD01MzkxNXx8NTM5MTc8PWMmJmM8PTUzOTQzfHw1Mzk0NTw9YyYmYzw9NTM5NzF8fDUzOTczPD1jJiZjPD01Mzk5OXx8NTQwMDE8PWMmJmM8PTU0MDI3fHw1NDAyOTw9YyYmYzw9NTQwNTV8fDU0MDU3PD1jJiZjPD01NDA4M3x8NTQwODU8PWMmJmM8PTU0MTExfHw1NDExMzw9YyYmYzw9NTQxMzl8fDU0MTQxPD1jJiZjPD01NDE2N3x8NTQxNjk8PWMmJmM8PTU0MTk1fHw1NDE5Nzw9YyYmYzw9NTQyMjN8fDU0MjI1PD1jJiZjPD01NDI1MXx8NTQyNTM8PWMmJmM8PTU0Mjc5fHw1NDI4MTw9YyYmYzw9NTQzMDd8fDU0MzA5PD1jJiZjPD01NDMzNXx8NTQzMzc8PWMmJmM8PTU0MzYzfHw1NDM2NTw9YyYmYzw9NTQzOTF8fDU0MzkzPD1jJiZjPD01NDQxOXx8NTQ0MjE8PWMmJmM8PTU0NDQ3fHw1NDQ0OTw9YyYmYzw9NTQ0NzV8fDU0NDc3PD1jJiZjPD01NDUwM3x8NTQ1MDU8PWMmJmM8PTU0NTMxfHw1NDUzMzw9YyYmYzw9NTQ1NTl8fDU0NTYxPD1jJiZjPD01NDU4N3x8NTQ1ODk8PWMmJmM8PTU0NjE1fHw1NDYxNzw9YyYmYzw9NTQ2NDN8fDU0NjQ1PD1jJiZjPD01NDY3MXx8NTQ2NzM8PWMmJmM8PTU0Njk5fHw1NDcwMTw9YyYmYzw9NTQ3Mjd8fDU0NzI5PD1jJiZjPD01NDc1NXx8NTQ3NTc8PWMmJmM8PTU0NzgzfHw1NDc4NTw9YyYmYzw9NTQ4MTF8fDU0ODEzPD1jJiZjPD01NDgzOXx8NTQ4NDE8PWMmJmM8PTU0ODY3fHw1NDg2OTw9YyYmYzw9NTQ4OTV8fDU0ODk3PD1jJiZjPD01NDkyM3x8NTQ5MjU8PWMmJmM8PTU0OTUxfHw1NDk1Mzw9YyYmYzw9NTQ5Nzl8fDU0OTgxPD1jJiZjPD01NTAwN3x8NTUwMDk8PWMmJmM8PTU1MDM1fHw1NTAzNzw9YyYmYzw9NTUwNjN8fDU1MDY1PD1jJiZjPD01NTA5MXx8NTUwOTM8PWMmJmM8PTU1MTE5fHw1NTEyMTw9YyYmYzw9NTUxNDd8fDU1MTQ5PD1jJiZjPD01NTE3NXx8NTUxNzc8PWMmJmM8PTU1MjAzP2Q6Yz09OTc1N3x8Yz09OTk3N3x8OTk5NDw9YyYmYzw9OTk5N3x8Yz09MTI3ODc3fHwxMjc5Mzg8PWMmJmM8PTEyNzk0MHx8Yz09MTI3OTQzfHwxMjc5NDY8PWMmJmM8PTEyNzk0OHx8MTI4MDY2PD1jJiZjPD0xMjgwNjd8fDEyODA3MDw9YyYmYzw9MTI4MDgwfHxjPT0xMjgxMTB8fDEyODExMjw9YyYmYzw9MTI4MTIwfHxjPT0xMjgxMjR8fDEyODEyOTw9YyYmYzw9MTI4MTMxfHwxMjgxMzM8PWMmJmM8PTEyODEzNXx8Yz09MTI4MTcwfHwxMjgzNzI8PWMmJmM8PTEyODM3M3x8Yz09MTI4Mzc4fHxjPT0xMjg0MDB8fDEyODQwNTw9YyYmYzw9MTI4NDA2fHwxMjg1ODE8PWMmJmM8PTEyODU4M3x8MTI4NTg3PD1jJiZjPD0xMjg1OTF8fGM9PTEyODY3NXx8MTI4NjkyPD1jJiZjPD0xMjg2OTR8fGM9PTEyODcwNHx8Yz09MTI4NzE2fHwxMjkzMDQ8PWMmJmM8PTEyOTMwOHx8MTI5MzEwPD1jJiZjPD0xMjkzMTF8fGM9PTEyOTMxOHx8MTI5MzI4PD1jJiZjPD0xMjkzMzd8fDEyOTM0MTw9YyYmYzw9MTI5MzQyfHwxMjk0ODk8PWMmJmM8PTEyOTUwMT9fOjEyNzk5NTw9YyYmYzw9MTI3OTk5P1I6Yz09ODIwNT9JOmM9PTk3OTJ8fGM9PTk3OTR8fDk4Nzc8PWMmJmM8PTk4Nzh8fGM9PTk5OTJ8fGM9PTEwMDg0fHxjPT0xMjc3NTJ8fGM9PTEyNzgwNnx8Yz09MTI3ODU5fHxjPT0xMjc4OTF8fGM9PTEyNzkwOHx8Yz09MTI3OTEyfHxjPT0xMjc5Nzl8fGM9PTEyNzk4MXx8Yz09MTI4MTM5fHwxMjgxODc8PWMmJmM8PTEyODE4OHx8Yz09MTI4Mjk1fHxjPT0xMjgzMDB8fGM9PTEyODQ4OHx8Yz09MTI4NjQwfHxjPT0xMjg2NTg/QzoxMjgxMDI8PWMmJmM8PTEyODEwNT9OOmZ9cmV0dXJuIHRoaXN9dHlwZW9mIGdJPCJ1IiYmZ0kuZXhwb3J0cyYmKGdJLmV4cG9ydHM9VGV0KX0pO2Z1bmN0aW9uIE5ldCgpe3RoaXMudGV4dHVyZUluZm89dm9pZCAwLHRoaXMuZGltZW5zaW9ucz12b2lkIDAsdGhpcy5iaWxsYm9hcmQ9dm9pZCAwfWZ1bmN0aW9uIGJldCh0LGUsaSl7dGhpcy5sYWJlbENvbGxlY3Rpb249dCx0aGlzLmluZGV4PWUsdGhpcy5kaW1lbnNpb25zPWl9ZnVuY3Rpb24gU2V0KHQpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Uud2lkdGg9dlQueCxlLmhlaWdodD12VC55O2xldCBpPWUuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gaS5maWxsU3R5bGU9IiNmZmYiLGkuZmlsbFJlY3QoMCwwLGUud2lkdGgsZS5oZWlnaHQpLHQuYWRkSW1hZ2UoU3ksZSl9ZnVuY3Rpb24gT2V0KHQsZSxpLG4scyxvLHIpe3JldHVybiB5ci5mb250PWUseXIuZmlsbENvbG9yPWkseXIuc3Ryb2tlQ29sb3I9bix5ci5zdHJva2VXaWR0aD1zLHlyLnBhZGRpbmc9cG8uUEFERElORyxyPT09bW4uQ0VOVEVSP3lyLnRleHRCYXNlbGluZT0ibWlkZGxlIjpyPT09bW4uVE9QP3lyLnRleHRCYXNlbGluZT0idG9wIjp5ci50ZXh0QmFzZWxpbmU9ImJvdHRvbSIseXIuZmlsbD1vPT09WWEuRklMTHx8bz09PVlhLkZJTExfQU5EX09VVExJTkUseXIuc3Ryb2tlPW89PT1ZYS5PVVRMSU5FfHxvPT09WWEuRklMTF9BTkRfT1VUTElORSx5ci5iYWNrZ3JvdW5kQ29sb3I9WnQuQkxBQ0ssSXkodCx5cil9ZnVuY3Rpb24gelQodCxlKXtlLnRleHR1cmVJbmZvPXZvaWQgMCxlLmRpbWVuc2lvbnM9dm9pZCAwO2xldCBpPWUuYmlsbGJvYXJkO20oaSkmJihpLnNob3c9ITEsaS5pbWFnZT12b2lkIDAsbShpLl9yZW1vdmVDYWxsYmFja0Z1bmMpJiYoaS5fcmVtb3ZlQ2FsbGJhY2tGdW5jKCksaS5fcmVtb3ZlQ2FsbGJhY2tGdW5jPXZvaWQgMCksdC5fc3BhcmVCaWxsYm9hcmRzLnB1c2goaSksZS5iaWxsYm9hcmQ9dm9pZCAwKX1mdW5jdGlvbiBWZXQodCxlLGksbil7bi5pbmRleD10LmFkZEltYWdlU3luYyhlLGkpfWZ1bmN0aW9uIEJldCh0LGUpe2xldCBpPWUuX3JlbmRlcmVkVGV4dCxuPUdldC5zcGxpdEdyYXBoZW1lcyhpKSxzPW4ubGVuZ3RoLG89ZS5fZ2x5cGhzLHI9by5sZW5ndGgsYSxoLEE7aWYoZS5fcmVsYXRpdmVTaXplPWUuX2ZvbnRTaXplL3BvLkZPTlRfU0laRSxzPHIpZm9yKGg9cztoPHI7KytoKXpUKHQsb1toXSk7by5sZW5ndGg9cztsZXQgZD1lLnNob3cmJmUuX3Nob3dCYWNrZ3JvdW5kJiZpLnNwbGl0KGAKYCkuam9pbigiIikubGVuZ3RoPjAsZj1lLl9iYWNrZ3JvdW5kQmlsbGJvYXJkLEU9dC5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb247ZD8obShmKXx8KGY9RS5hZGQoe2NvbGxlY3Rpb246dCxpbWFnZTpTeSxpbWFnZVN1YlJlZ2lvbjpZZXR9KSxlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkPWYpLGYuY29sb3I9ZS5fYmFja2dyb3VuZENvbG9yLGYuc2hvdz1lLl9zaG93LGYucG9zaXRpb249ZS5fcG9zaXRpb24sZi5leWVPZmZzZXQ9ZS5fZXllT2Zmc2V0LGYucGl4ZWxPZmZzZXQ9ZS5fcGl4ZWxPZmZzZXQsZi5ob3Jpem9udGFsT3JpZ2luPXRvLkxFRlQsZi52ZXJ0aWNhbE9yaWdpbj1lLl92ZXJ0aWNhbE9yaWdpbixmLmhlaWdodFJlZmVyZW5jZT1lLl9oZWlnaHRSZWZlcmVuY2UsZi5zY2FsZT1lLnRvdGFsU2NhbGUsZi5waWNrUHJpbWl0aXZlPWUsZi5pZD1lLl9pZCxmLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9ZS5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSxmLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPWUuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLGYuc2NhbGVCeURpc3RhbmNlPWUuX3NjYWxlQnlEaXN0YW5jZSxmLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1lLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sZi5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9ZS5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLGYuY2x1c3RlclNob3c9ZS5jbHVzdGVyU2hvdyk6bShmKSYmKEUucmVtb3ZlKGYpLGUuX2JhY2tncm91bmRCaWxsYm9hcmQ9Zj12b2lkIDApO2xldCBfPXQuX2dseXBoVGV4dHVyZUNhY2hlO2ZvcihBPTA7QTxzOysrQSl7bGV0IFI9bltBXSxJPWUuX3ZlcnRpY2FsT3JpZ2luLEM9SlNPTi5zdHJpbmdpZnkoW1IsZS5fZm9udEZhbWlseSxlLl9mb250U3R5bGUsZS5fZm9udFdlaWdodCwrSV0pLE49X1tDXTtpZighbShOKSl7bGV0IFQ9YCR7ZS5fZm9udFN0eWxlfSAke2UuX2ZvbnRXZWlnaHR9ICR7cG8uRk9OVF9TSVpFfXB4ICR7ZS5fZm9udEZhbWlseX1gLEY9T2V0KFIsVCxadC5XSElURSxadC5XSElURSwwLFlhLkZJTEwsSSk7aWYoTj1uZXcgYmV0KHQsLTEsRi5kaW1lbnNpb25zKSxfW0NdPU4sRi53aWR0aD4wJiZGLmhlaWdodD4wKXtsZXQgYj0oMCxGeS5kZWZhdWx0KShGLHtjdXRvZmY6cG8uQ1VUT0ZGLHJhZGl1czpwby5SQURJVVN9KSxHPUYuZ2V0Q29udGV4dCgiMmQiKSxNPUYud2lkdGgsUT1GLmhlaWdodCxVPUcuZ2V0SW1hZ2VEYXRhKDAsMCxNLFEpO2ZvcihsZXQgaz0wO2s8TTtrKyspZm9yKGxldCB5PTA7eTxRO3krKyl7bGV0IGM9eSpNK2ssZz1iW2NdKjI1NSxWPWMqNDtVLmRhdGFbViswXT1nLFUuZGF0YVtWKzFdPWcsVS5kYXRhW1YrMl09ZyxVLmRhdGFbViszXT1nfUcucHV0SW1hZ2VEYXRhKFUsMCwwKSxSIT09IiAiJiZWZXQodC5fdGV4dHVyZUF0bGFzLEMsRixOKX19aWYoYT1vW0FdLG0oYSk/Ti5pbmRleD09PS0xP3pUKHQsYSk6bShhLnRleHR1cmVJbmZvKSYmKGEudGV4dHVyZUluZm89dm9pZCAwKTooYT1uZXcgTmV0LG9bQV09YSksYS50ZXh0dXJlSW5mbz1OLGEuZGltZW5zaW9ucz1OLmRpbWVuc2lvbnMsTi5pbmRleCE9PS0xKXtsZXQgVD1hLmJpbGxib2FyZCxGPXQuX3NwYXJlQmlsbGJvYXJkczttKFQpfHwoRi5sZW5ndGg+MD9UPUYucG9wKCk6KFQ9dC5fYmlsbGJvYXJkQ29sbGVjdGlvbi5hZGQoe2NvbGxlY3Rpb246dH0pLFQuX2xhYmVsRGltZW5zaW9ucz1uZXcgbnQsVC5fbGFiZWxUcmFuc2xhdGU9bmV3IG50KSxhLmJpbGxib2FyZD1UKSxULnNob3c9ZS5fc2hvdyxULnBvc2l0aW9uPWUuX3Bvc2l0aW9uLFQuZXllT2Zmc2V0PWUuX2V5ZU9mZnNldCxULnBpeGVsT2Zmc2V0PWUuX3BpeGVsT2Zmc2V0LFQuaG9yaXpvbnRhbE9yaWdpbj10by5MRUZULFQudmVydGljYWxPcmlnaW49ZS5fdmVydGljYWxPcmlnaW4sVC5oZWlnaHRSZWZlcmVuY2U9ZS5faGVpZ2h0UmVmZXJlbmNlLFQuc2NhbGU9ZS50b3RhbFNjYWxlLFQucGlja1ByaW1pdGl2ZT1lLFQuaWQ9ZS5faWQsVC5pbWFnZT1DLFQudHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1lLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlLFQucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U9ZS5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UsVC5zY2FsZUJ5RGlzdGFuY2U9ZS5fc2NhbGVCeURpc3RhbmNlLFQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPWUuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixULmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZT1lLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsVC5fYmF0Y2hJbmRleD1lLl9iYXRjaEluZGV4LFQub3V0bGluZUNvbG9yPWUub3V0bGluZUNvbG9yLGUuc3R5bGU9PT1ZYS5GSUxMX0FORF9PVVRMSU5FPyhULmNvbG9yPWUuX2ZpbGxDb2xvcixULm91dGxpbmVXaWR0aD1lLm91dGxpbmVXaWR0aCk6ZS5zdHlsZT09PVlhLkZJTEw/KFQuY29sb3I9ZS5fZmlsbENvbG9yLFQub3V0bGluZVdpZHRoPTApOmUuc3R5bGU9PT1ZYS5PVVRMSU5FJiYoVC5jb2xvcj1adC5UUkFOU1BBUkVOVCxULm91dGxpbmVXaWR0aD1lLm91dGxpbmVXaWR0aCl9fWUuX3JlcG9zaXRpb25BbGxHbHlwaHM9ITB9ZnVuY3Rpb24gYnkodCxlLGkpe3JldHVybiBlPT09dG8uQ0VOVEVSPy10LzI6ZT09PXRvLlJJR0hUPy0odCtpLngpOmkueH1mdW5jdGlvbiBEZXQodCl7bGV0IGU9dC5fZ2x5cGhzLGk9dC5fcmVuZGVyZWRUZXh0LG4scyxvPTAscj0wLGE9W10saD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT0wLGQ9MSxmLEU9ZS5sZW5ndGgsXz10Ll9iYWNrZ3JvdW5kQmlsbGJvYXJkLFI9bnQuY2xvbmUobShfKT90Ll9iYWNrZ3JvdW5kUGFkZGluZzpudC5aRVJPLFdldCk7Zm9yKFIueC89dC5fcmVsYXRpdmVTaXplLFIueS89dC5fcmVsYXRpdmVTaXplLGY9MDtmPEU7KytmKWkuY2hhckF0KGYpPT09YApgPyhhLnB1c2gobyksKytkLG89MCk6KG49ZVtmXSxzPW4uZGltZW5zaW9ucyxBPU1hdGgubWF4KEEscy5oZWlnaHQtcy5kZXNjZW50KSxoPU1hdGgubWF4KGgscy5kZXNjZW50KSxvKz1zLndpZHRoLXMubWlueCxmPEUtMSYmKG8rPWVbZisxXS5kaW1lbnNpb25zLm1pbngpLHI9TWF0aC5tYXgocixvKSk7YS5wdXNoKG8pO2xldCBJPUEraCxDPXQudG90YWxTY2FsZSxOPXQuX2hvcml6b250YWxPcmlnaW4sVD10Ll92ZXJ0aWNhbE9yaWdpbixGPTAsYj1hW0ZdLEc9YnkoYixOLFIpLE09KG0odC5fbGluZUhlaWdodCk/dC5fbGluZUhlaWdodDpGZXQqdC5fZm9udFNpemUpL3QuX3JlbGF0aXZlU2l6ZSxRPU0qKGQtMSksVT1yLGs9SStRO20oXykmJihVKz1SLngqMixrKz1SLnkqMixfLl9sYWJlbEhvcml6b250YWxPcmlnaW49Tiksa24ueD1HKkMsa24ueT0wO2xldCB5PSEwLGM9MDtmb3IoZj0wO2Y8RTsrK2YpaWYoaS5jaGFyQXQoZik9PT1gCmApKytGLGMrPU0sYj1hW0ZdLEc9YnkoYixOLFIpLGtuLng9RypDLHk9ITA7ZWxzZSBpZihuPWVbZl0scz1uLmRpbWVuc2lvbnMsVD09PW1uLlRPUD8oa24ueT1zLmhlaWdodC1BLVIueSxrbi55Kz1wby5QQURESU5HKTpUPT09bW4uQ0VOVEVSP2tuLnk9KFErcy5oZWlnaHQtQSkvMjpUPT09bW4uQkFTRUxJTkU/KGtuLnk9USxrbi55LT1wby5QQURESU5HKTooa24ueT1RK2grUi55LGtuLnktPXBvLlBBRERJTkcpLGtuLnk9KGtuLnktcy5kZXNjZW50LWMpKkMseSYmKGtuLngtPXBvLlBBRERJTkcqQyx5PSExKSxtKG4uYmlsbGJvYXJkKSYmKG4uYmlsbGJvYXJkLl9zZXRUcmFuc2xhdGUoa24pLG4uYmlsbGJvYXJkLl9sYWJlbERpbWVuc2lvbnMueD1VLG4uYmlsbGJvYXJkLl9sYWJlbERpbWVuc2lvbnMueT1rLG4uYmlsbGJvYXJkLl9sYWJlbEhvcml6b250YWxPcmlnaW49TiksZjxFLTEpe2xldCBnPWVbZisxXTtrbi54Kz0ocy53aWR0aC1zLm1pbngrZy5kaW1lbnNpb25zLm1pbngpKkN9aWYobShfKSYmaS5zcGxpdChgCmApLmpvaW4oIiIpLmxlbmd0aD4wJiYoTj09PXRvLkNFTlRFUj9HPS1yLzItUi54Ok49PT10by5SSUdIVD9HPS0ocitSLngqMik6Rz0wLGtuLng9RypDLFQ9PT1tbi5UT1A/a24ueT1JLUEtaDpUPT09bW4uQ0VOVEVSP2tuLnk9KEktQSkvMi1oOlQ9PT1tbi5CQVNFTElORT9rbi55PS1SLnktaDprbi55PTAsa24ueT1rbi55KkMsXy53aWR0aD1VLF8uaGVpZ2h0PWssXy5fc2V0VHJhbnNsYXRlKGtuKSxfLl9sYWJlbFRyYW5zbGF0ZT1udC5jbG9uZShrbixfLl9sYWJlbFRyYW5zbGF0ZSkpLGdsKHQuaGVpZ2h0UmVmZXJlbmNlKSlmb3IoZj0wO2Y8RTsrK2Ype249ZVtmXTtsZXQgZz1uLmJpbGxib2FyZDttKGcpJiYoZy5fbGFiZWxUcmFuc2xhdGU9bnQuY2xvbmUoa24sZy5fbGFiZWxUcmFuc2xhdGUpKX19ZnVuY3Rpb24gT3kodCxlKXtsZXQgaT1lLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7KytuKXpUKHQsaVtuXSk7bShlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkKSYmKHQuX2JhY2tncm91bmRCaWxsYm9hcmRDb2xsZWN0aW9uLnJlbW92ZShlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkKSxlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkPXZvaWQgMCksZS5fbGFiZWxDb2xsZWN0aW9uPXZvaWQgMCxtKGUuX3JlbW92ZUNhbGxiYWNrRnVuYykmJmUuX3JlbW92ZUNhbGxiYWNrRnVuYygpLGxpKGUpfWZ1bmN0aW9uIHBBKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9zY2VuZT10LnNjZW5lLHRoaXMuX2JhdGNoVGFibGU9dC5iYXRjaFRhYmxlLHRoaXMuX3RleHR1cmVBdGxhcz12b2lkIDAsdGhpcy5fYmFja2dyb3VuZFRleHR1cmVBdGxhcz12b2lkIDAsdGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb249bmV3IHdtKHtzY2VuZTp0aGlzLl9zY2VuZX0pLHRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmRDb2xsZWN0aW9uLmRlc3Ryb3lUZXh0dXJlQXRsYXM9ITEsdGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbj1uZXcgd20oe3NjZW5lOnRoaXMuX3NjZW5lLGJhdGNoVGFibGU6dGhpcy5fYmF0Y2hUYWJsZX0pLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveVRleHR1cmVBdGxhcz0hMSx0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl9zZGY9ITAsdGhpcy5fc3BhcmVCaWxsYm9hcmRzPVtdLHRoaXMuX2dseXBoVGV4dHVyZUNhY2hlPXt9LHRoaXMuX2xhYmVscz1bXSx0aGlzLl9sYWJlbHNUb1VwZGF0ZT1bXSx0aGlzLl90b3RhbEdseXBoQ291bnQ9MCx0aGlzLl9oaWdobGlnaHRDb2xvcj1adC5jbG9uZShadC5XSElURSksdGhpcy5zaG93PVoodC5zaG93LCEwKSx0aGlzLm1vZGVsTWF0cml4PWF0LmNsb25lKFoodC5tb2RlbE1hdHJpeCxhdC5JREVOVElUWSkpLHRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9Wih0LmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLCExKSx0aGlzLmJsZW5kT3B0aW9uPVoodC5ibGVuZE9wdGlvbixXbi5PUEFRVUVfQU5EX1RSQU5TTFVDRU5UKX12YXIgRnksWXksRmV0LFN5LHZULFlldCx5cixHZXQsa24sV2V0LEtULFZ5PU8oKCk9PntFcigpO1hlKCk7UW4oKTtidCgpO210KCk7V3MoKTtWdCgpO0ZpKCk7cHkoKTtGeT1jbyhUeSgpLDEpO0pUKCk7RUkoKTtPbSgpO1ZtKCk7SFQoKTtqVCgpO19JKCk7TVQoKTtDRSgpO1l5PWNvKE55KCksMSk7RmV0PTEuMixTeT0iSURfV0hJVEVfUElYRUwiLHZUPW5ldyBudCg0LDQpLFlldD1uZXcgbWkoMSwxLDEsMSk7eXI9e307R2V0PW5ldyBZeS5kZWZhdWx0O2tuPW5ldyBudCxXZXQ9bmV3IG50O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBBLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFiZWxzLmxlbmd0aH19fSk7cEEucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtsZXQgZT1uZXcgREUodCx0aGlzKTtyZXR1cm4gdGhpcy5fbGFiZWxzLnB1c2goZSksdGhpcy5fbGFiZWxzVG9VcGRhdGUucHVzaChlKSxlfTtwQS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKG0odCkmJnQuX2xhYmVsQ29sbGVjdGlvbj09PXRoaXMpe2xldCBlPXRoaXMuX2xhYmVscy5pbmRleE9mKHQpO2lmKGUhPT0tMSlyZXR1cm4gdGhpcy5fbGFiZWxzLnNwbGljZShlLDEpLE95KHRoaXMsdCksITB9cmV0dXJuITF9O3BBLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9sYWJlbHM7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7KytlKU95KHRoaXMsdFtlXSk7dC5sZW5ndGg9MH07cEEucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiZ0Ll9sYWJlbENvbGxlY3Rpb249PT10aGlzfTtwQS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpbmRleCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdGhpcy5fbGFiZWxzW3RdfTtwQS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLnNob3cpcmV0dXJuO2xldCBlPXRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24saT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkQ29sbGVjdGlvbjtlLm1vZGVsTWF0cml4PXRoaXMubW9kZWxNYXRyaXgsZS5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT10aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLGkubW9kZWxNYXRyaXg9dGhpcy5tb2RlbE1hdHJpeCxpLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU7bGV0IG49dC5jb250ZXh0O20odGhpcy5fdGV4dHVyZUF0bGFzKXx8KHRoaXMuX3RleHR1cmVBdGxhcz1uZXcgU0Uoe2NvbnRleHQ6bn0pLGUudGV4dHVyZUF0bGFzPXRoaXMuX3RleHR1cmVBdGxhcyksbSh0aGlzLl9iYWNrZ3JvdW5kVGV4dHVyZUF0bGFzKXx8KHRoaXMuX2JhY2tncm91bmRUZXh0dXJlQXRsYXM9bmV3IFNFKHtjb250ZXh0Om4saW5pdGlhbFNpemU6dlR9KSxpLnRleHR1cmVBdGxhcz10aGlzLl9iYWNrZ3JvdW5kVGV4dHVyZUF0bGFzLFNldCh0aGlzLl9iYWNrZ3JvdW5kVGV4dHVyZUF0bGFzKSk7bGV0IHM9dGhpcy5fbGFiZWxzVG9VcGRhdGUubGVuZ3RoO2ZvcihsZXQgcj0wO3I8czsrK3Ipe2xldCBhPXRoaXMuX2xhYmVsc1RvVXBkYXRlW3JdO2lmKGEuaXNEZXN0cm95ZWQoKSljb250aW51ZTtsZXQgaD1hLl9nbHlwaHMubGVuZ3RoO2EuX3JlYmluZEFsbEdseXBocyYmKEJldCh0aGlzLGEpLGEuX3JlYmluZEFsbEdseXBocz0hMSksYS5fcmVwb3NpdGlvbkFsbEdseXBocyYmKERldChhKSxhLl9yZXBvc2l0aW9uQWxsR2x5cGhzPSExKTtsZXQgQT1hLl9nbHlwaHMubGVuZ3RoLWg7dGhpcy5fdG90YWxHbHlwaENvdW50Kz1BfWxldCBvPWkubGVuZ3RoPjA/V24uVFJBTlNMVUNFTlQ6dGhpcy5ibGVuZE9wdGlvbjtlLmJsZW5kT3B0aW9uPW8saS5ibGVuZE9wdGlvbj1vLGUuX2hpZ2hsaWdodENvbG9yPXRoaXMuX2hpZ2hsaWdodENvbG9yLGkuX2hpZ2hsaWdodENvbG9yPXRoaXMuX2hpZ2hsaWdodENvbG9yLHRoaXMuX2xhYmVsc1RvVXBkYXRlLmxlbmd0aD0wLGkudXBkYXRlKHQpLGUudXBkYXRlKHQpfTtwQS5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07cEEucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW1vdmVBbGwoKSx0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uPXRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX3RleHR1cmVBdGxhcz10aGlzLl90ZXh0dXJlQXRsYXMmJnRoaXMuX3RleHR1cmVBdGxhcy5kZXN0cm95KCksdGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb249dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX2JhY2tncm91bmRUZXh0dXJlQXRsYXM9dGhpcy5fYmFja2dyb3VuZFRleHR1cmVBdGxhcyYmdGhpcy5fYmFja2dyb3VuZFRleHR1cmVBdGxhcy5kZXN0cm95KCksbGkodGhpcyl9O0tUPXBBfSk7ZnVuY3Rpb24gcnModCxlKXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksbSh0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkmJnQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPDApdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAuIik7bGV0IGk9dC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlLG49dC5zY2FsZUJ5RGlzdGFuY2Uscz10LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjtpZihtKGkpKXtpZihpLmZhcjw9aS5uZWFyKXRocm93IG5ldyBZKCJ0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLm5lYXIuIik7aT1naS5jbG9uZShpKX1pZihtKG4pKXtpZihuLmZhcjw9bi5uZWFyKXRocm93IG5ldyBZKCJzY2FsZUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlQnlEaXN0YW5jZS5uZWFyLiIpO249Z2kuY2xvbmUobil9aWYobShzKSl7aWYocy5mYXI8PXMubmVhcil0aHJvdyBuZXcgWSgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBkaXN0YW5jZURpc3BsYXlDb25kaXRpb24ubmVhci4iKTtzPVdvLmNsb25lKHMpfXRoaXMuX3Nob3c9Wih0LnNob3csITApLHRoaXMuX3Bvc2l0aW9uPWwuY2xvbmUoWih0LnBvc2l0aW9uLGwuWkVSTykpLHRoaXMuX2FjdHVhbFBvc2l0aW9uPWwuY2xvbmUodGhpcy5fcG9zaXRpb24pLHRoaXMuX2NvbG9yPVp0LmNsb25lKFoodC5jb2xvcixadC5XSElURSkpLHRoaXMuX291dGxpbmVDb2xvcj1adC5jbG9uZShaKHQub3V0bGluZUNvbG9yLFp0LlRSQU5TUEFSRU5UKSksdGhpcy5fb3V0bGluZVdpZHRoPVoodC5vdXRsaW5lV2lkdGgsMCksdGhpcy5fcGl4ZWxTaXplPVoodC5waXhlbFNpemUsMTApLHRoaXMuX3NjYWxlQnlEaXN0YW5jZT1uLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9aSx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249cyx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9Wih0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSwwKSx0aGlzLl9pZD10LmlkLHRoaXMuX2NvbGxlY3Rpb249Wih0LmNvbGxlY3Rpb24sZSksdGhpcy5fY2x1c3RlclNob3c9ITAsdGhpcy5fcGlja0lkPXZvaWQgMCx0aGlzLl9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb249ZSx0aGlzLl9kaXJ0eT0hMSx0aGlzLl9pbmRleD0tMX1mdW5jdGlvbiB3cih0LGUpe2xldCBpPXQuX3BvaW50UHJpbWl0aXZlQ29sbGVjdGlvbjttKGkpJiYoaS5fdXBkYXRlUG9pbnRQcmltaXRpdmUodCxlKSx0Ll9kaXJ0eT0hMCl9dmFyIEd5LER5LE1ldCxVZXQsUWV0LGtldCxMZXQseWV0LHdldCx4ZXQsQnksV3ksdW8sWFQ9TygoKT0+e0VyKCk7WGUoKTtIdCgpO1ZzKCk7UW4oKTtidCgpO210KCk7VnQoKTt6WigpO0ZpKCk7SUUoKTt1YSgpO2dUKCk7R3k9cnMuU0hPV19JTkRFWD0wLER5PXJzLlBPU0lUSU9OX0lOREVYPTEsTWV0PXJzLkNPTE9SX0lOREVYPTIsVWV0PXJzLk9VVExJTkVfQ09MT1JfSU5ERVg9MyxRZXQ9cnMuT1VUTElORV9XSURUSF9JTkRFWD00LGtldD1ycy5QSVhFTF9TSVpFX0lOREVYPTUsTGV0PXJzLlNDQUxFX0JZX0RJU1RBTkNFX0lOREVYPTYseWV0PXJzLlRSQU5TTFVDRU5DWV9CWV9ESVNUQU5DRV9JTkRFWD03LHdldD1ycy5ESVNUQU5DRV9ESVNQTEFZX0NPTkRJVElPTl9JTkRFWD04LHhldD1ycy5ESVNBQkxFX0RFUFRIX0RJU1RBTkNFX0lOREVYPTk7cnMuTlVNQkVSX09GX1BST1BFUlRJRVM9MTA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocnMucHJvdG90eXBlLHtzaG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd30sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTt0aGlzLl9zaG93IT09dCYmKHRoaXMuX3Nob3c9dCx3cih0aGlzLEd5KSl9fSxwb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX3Bvc2l0aW9uO2wuZXF1YWxzKGUsdCl8fChsLmNsb25lKHQsZSksbC5jbG9uZSh0LHRoaXMuX2FjdHVhbFBvc2l0aW9uKSx3cih0aGlzLER5KSl9fSxzY2FsZUJ5RGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiZ0LmZhcjw9dC5uZWFyKXRocm93IG5ldyBZKCJmYXIgZGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gbmVhciBkaXN0YW5jZS4iKTtsZXQgZT10aGlzLl9zY2FsZUJ5RGlzdGFuY2U7Z2kuZXF1YWxzKGUsdCl8fCh0aGlzLl9zY2FsZUJ5RGlzdGFuY2U9Z2kuY2xvbmUodCxlKSx3cih0aGlzLExldCkpfX0sdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiZ0LmZhcjw9dC5uZWFyKXRocm93IG5ldyBZKCJmYXIgZGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gbmVhciBkaXN0YW5jZS4iKTtsZXQgZT10aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlO2dpLmVxdWFscyhlLHQpfHwodGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpLHdyKHRoaXMseWV0KSl9fSxwaXhlbFNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbFNpemV9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7dGhpcy5fcGl4ZWxTaXplIT09dCYmKHRoaXMuX3BpeGVsU2l6ZT10LHdyKHRoaXMsa2V0KSl9fSxjb2xvcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2NvbG9yO1p0LmVxdWFscyhlLHQpfHwoWnQuY2xvbmUodCxlKSx3cih0aGlzLE1ldCkpfX0sb3V0bGluZUNvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0bGluZUNvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX291dGxpbmVDb2xvcjtadC5lcXVhbHMoZSx0KXx8KFp0LmNsb25lKHQsZSksd3IodGhpcyxVZXQpKX19LG91dGxpbmVXaWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX291dGxpbmVXaWR0aH0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTt0aGlzLl9vdXRsaW5lV2lkdGghPT10JiYodGhpcy5fb3V0bGluZVdpZHRoPXQsd3IodGhpcyxRZXQpKX19LGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJnQuZmFyPD10Lm5lYXIpdGhyb3cgbmV3IFkoImZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIik7V28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0KXx8KHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1Xby5jbG9uZSh0LHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksd3IodGhpcyx3ZXQpKX19LGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSE9PXQpe2lmKCFtKHQpfHx0PDApdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAuIik7dGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXQsd3IodGhpcyx4ZXQpfX19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9pZD10LG0odGhpcy5fcGlja0lkKSYmKHRoaXMuX3BpY2tJZC5vYmplY3QuaWQ9dCl9fSxwaWNrSWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waWNrSWR9fSxjbHVzdGVyU2hvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJTaG93fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlclNob3chPT10JiYodGhpcy5fY2x1c3RlclNob3c9dCx3cih0aGlzLEd5KSl9fX0pO3JzLnByb3RvdHlwZS5nZXRQaWNrSWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG0odGhpcy5fcGlja0lkKXx8KHRoaXMuX3BpY2tJZD10LmNyZWF0ZVBpY2tJZCh7cHJpbWl0aXZlOnRoaXMsY29sbGVjdGlvbjp0aGlzLl9jb2xsZWN0aW9uLGlkOnRoaXMuX2lkfSkpLHRoaXMuX3BpY2tJZH07cnMucHJvdG90eXBlLl9nZXRBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3R1YWxQb3NpdGlvbn07cnMucHJvdG90eXBlLl9zZXRBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbih0KXtsLmNsb25lKHQsdGhpcy5fYWN0dWFsUG9zaXRpb24pLHdyKHRoaXMsRHkpfTtCeT1uZXcgaWU7cnMuX2NvbXB1dGVBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUubW9kZT09PXllLlNDRU5FM0Q/dDooYXQubXVsdGlwbHlCeVBvaW50KGksdCxCeSksR20uY29tcHV0ZUFjdHVhbFdnczg0UG9zaXRpb24oZSxCeSkpfTtXeT1uZXcgaWU7cnMuX2NvbXB1dGVTY3JlZW5TcGFjZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzPWF0Lm11bHRpcGx5QnlWZWN0b3IodCxpZS5mcm9tRWxlbWVudHMoZS54LGUueSxlLnosMSxXeSksV3kpO3JldHVybiBHbS53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXMoaSxzLG4pfTtycy5wcm90b3R5cGUuY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb249ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLl9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb247aWYobShlKXx8KGU9bmV3IG50KSwhbShpKSl0aHJvdyBuZXcgWSgiUG9pbnRQcmltaXRpdmUgbXVzdCBiZSBpbiBhIGNvbGxlY3Rpb24uIik7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNjZW5lIGlzIHJlcXVpcmVkLiIpO2xldCBuPWkubW9kZWxNYXRyaXgscz1ycy5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24obix0aGlzLl9hY3R1YWxQb3NpdGlvbix0LGUpO2lmKG0ocykpcmV0dXJuIHMueT10LmNhbnZhcy5jbGllbnRIZWlnaHQtcy55LHN9O3JzLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3g9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQucGl4ZWxTaXplLHM9biouNSxvPWUueC1zLHI9ZS55LXMsYT1uLGg9bjtyZXR1cm4gbShpKXx8KGk9bmV3IG1pKSxpLng9byxpLnk9cixpLndpZHRoPWEsaS5oZWlnaHQ9aCxpfTtycy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmdGhpcy5faWQ9PT10Ll9pZCYmbC5lcXVhbHModGhpcy5fcG9zaXRpb24sdC5fcG9zaXRpb24pJiZadC5lcXVhbHModGhpcy5fY29sb3IsdC5fY29sb3IpJiZ0aGlzLl9waXhlbFNpemU9PT10Ll9waXhlbFNpemUmJnRoaXMuX291dGxpbmVXaWR0aD09PXQuX291dGxpbmVXaWR0aCYmdGhpcy5fc2hvdz09PXQuX3Nob3cmJlp0LmVxdWFscyh0aGlzLl9vdXRsaW5lQ29sb3IsdC5fb3V0bGluZUNvbG9yKSYmZ2kuZXF1YWxzKHRoaXMuX3NjYWxlQnlEaXN0YW5jZSx0Ll9zY2FsZUJ5RGlzdGFuY2UpJiZnaS5lcXVhbHModGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0Ll90cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSYmV28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0Ll9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pJiZ0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9PT10Ll9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2V9O3JzLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3BpY2tJZD10aGlzLl9waWNrSWQmJnRoaXMuX3BpY2tJZC5kZXN0cm95KCksdGhpcy5fcG9pbnRQcmltaXRpdmVDb2xsZWN0aW9uPXZvaWQgMH07dW89cnN9KTt2YXIgVUUsTXk9TygoKT0+e1VFPWBpbiB2ZWM0IHZfY29sb3I7CmluIHZlYzQgdl9vdXRsaW5lQ29sb3I7CmluIGZsb2F0IHZfaW5uZXJQZXJjZW50OwppbiBmbG9hdCB2X3BpeGVsRGlzdGFuY2U7CmluIHZlYzQgdl9waWNrQ29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICAvLyBUaGUgZGlzdGFuY2UgaW4gVVYgc3BhY2UgZnJvbSB0aGlzIGZyYWdtZW50IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHBvaW50LCBhdCBtb3N0IDAuNS4KICAgIGZsb2F0IGRpc3RhbmNlVG9DZW50ZXIgPSBsZW5ndGgoZ2xfUG9pbnRDb29yZCAtIHZlYzIoMC41KSk7CiAgICAvLyBUaGUgbWF4IGRpc3RhbmNlIHN0b3BzIG9uZSBwaXhlbCBzaHkgb2YgdGhlIGVkZ2UgdG8gbGVhdmUgc3BhY2UgZm9yIGFudGktYWxpYXNpbmcuCiAgICBmbG9hdCBtYXhEaXN0YW5jZSA9IG1heCgwLjAsIDAuNSAtIHZfcGl4ZWxEaXN0YW5jZSk7CiAgICBmbG9hdCB3aG9sZUFscGhhID0gMS4wIC0gc21vb3Roc3RlcChtYXhEaXN0YW5jZSwgMC41LCBkaXN0YW5jZVRvQ2VudGVyKTsKICAgIGZsb2F0IGlubmVyQWxwaGEgPSAxLjAgLSBzbW9vdGhzdGVwKG1heERpc3RhbmNlICogdl9pbm5lclBlcmNlbnQsIDAuNSAqIHZfaW5uZXJQZXJjZW50LCBkaXN0YW5jZVRvQ2VudGVyKTsKCiAgICB2ZWM0IGNvbG9yID0gbWl4KHZfb3V0bGluZUNvbG9yLCB2X2NvbG9yLCBpbm5lckFscGhhKTsKICAgIGNvbG9yLmEgKj0gd2hvbGVBbHBoYTsKCi8vIEZ1bGx5IHRyYW5zcGFyZW50IHBhcnRzIG9mIHRoZSBiaWxsYm9hcmQgYXJlIG5vdCBwaWNrYWJsZS4KI2lmICFkZWZpbmVkKE9QQVFVRSkgJiYgIWRlZmluZWQoVFJBTlNMVUNFTlQpCiAgICBpZiAoY29sb3IuYSA8IDAuMDA1KSAgIC8vIG1hdGNoZXMgMC8yNTUgYW5kIDEvMjU1CiAgICB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2Vsc2UKLy8gVGhlIGJpbGxib2FyZCBpcyByZW5kZXJlZCB0d2ljZS4gVGhlIG9wYXF1ZSBwYXNzIGRpc2NhcmRzIHRyYW5zbHVjZW50IGZyYWdtZW50cwovLyBhbmQgdGhlIHRyYW5zbHVjZW50IHBhc3MgZGlzY2FyZHMgb3BhcXVlIGZyYWdtZW50cy4KI2lmZGVmIE9QQVFVRQogICAgaWYgKGNvbG9yLmEgPCAwLjk5NSkgICAvLyBtYXRjaGVzIDwgMjU0LzI1NQogICAgewogICAgICAgIGRpc2NhcmQ7CiAgICB9CiNlbHNlCiAgICBpZiAoY29sb3IuYSA+PSAwLjk5NSkgIC8vIG1hdGNoZXMgMjU0LzI1NSBhbmQgMjU1LzI1NQogICAgewogICAgICAgIGRpc2NhcmQ7CiAgICB9CiNlbmRpZgojZW5kaWYKCiAgICBvdXRfRnJhZ0NvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChjb2xvcik7CiAgICBjem1fd3JpdGVMb2dEZXB0aCgpOwp9CmB9KTt2YXIgVXksUXk9TygoKT0+e1V5PWB1bmlmb3JtIGZsb2F0IHVfbWF4VG90YWxQb2ludFNpemU7CgppbiB2ZWM0IHBvc2l0aW9uSGlnaEFuZFNpemU7CmluIHZlYzQgcG9zaXRpb25Mb3dBbmRPdXRsaW5lOwppbiB2ZWM0IGNvbXByZXNzZWRBdHRyaWJ1dGUwOyAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3IsIG91dGxpbmVDb2xvciwgcGljayBjb2xvcgppbiB2ZWM0IGNvbXByZXNzZWRBdHRyaWJ1dGUxOyAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvdywgdHJhbnNsdWNlbmN5IGJ5IGRpc3RhbmNlLCBzb21lIGZyZWUgc3BhY2UKaW4gdmVjNCBzY2FsZUJ5RGlzdGFuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lYXIsIG5lYXJTY2FsZSwgZmFyLCBmYXJTY2FsZQppbiB2ZWMzIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbkFuZERpc2FibGVEZXB0aDsgICAgLy8gbmVhciwgZmFyLCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UKCm91dCB2ZWM0IHZfY29sb3I7Cm91dCB2ZWM0IHZfb3V0bGluZUNvbG9yOwpvdXQgZmxvYXQgdl9pbm5lclBlcmNlbnQ7Cm91dCBmbG9hdCB2X3BpeGVsRGlzdGFuY2U7Cm91dCB2ZWM0IHZfcGlja0NvbG9yOwoKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDggPSAyNTYuMDsKY29uc3QgZmxvYXQgU0hJRlRfUklHSFQ4ID0gMS4wIC8gMjU2LjA7Cgp2b2lkIG1haW4oKQp7CiAgICAvLyBNb2RpZnlpbmcgdGhpcyBzaGFkZXIgbWF5IGFsc28gcmVxdWlyZSBtb2RpZmljYXRpb25zIHRvIFBvaW50UHJpbWl0aXZlLl9jb21wdXRlU2NyZWVuU3BhY2VQb3NpdGlvbgoKICAgIC8vIHVucGFjayBhdHRyaWJ1dGVzCiAgICB2ZWMzIHBvc2l0aW9uSGlnaCA9IHBvc2l0aW9uSGlnaEFuZFNpemUueHl6OwogICAgdmVjMyBwb3NpdGlvbkxvdyA9IHBvc2l0aW9uTG93QW5kT3V0bGluZS54eXo7CiAgICBmbG9hdCBvdXRsaW5lV2lkdGhCb3RoU2lkZXMgPSAyLjAgKiBwb3NpdGlvbkxvd0FuZE91dGxpbmUudzsKICAgIGZsb2F0IHRvdGFsU2l6ZSA9IHBvc2l0aW9uSGlnaEFuZFNpemUudyArIG91dGxpbmVXaWR0aEJvdGhTaWRlczsKICAgIGZsb2F0IG91dGxpbmVQZXJjZW50ID0gb3V0bGluZVdpZHRoQm90aFNpZGVzIC8gdG90YWxTaXplOwogICAgLy8gU2NhbGUgaW4gcmVzcG9uc2UgdG8gYnJvd3Nlci16b29tLgogICAgdG90YWxTaXplICo9IGN6bV9waXhlbFJhdGlvOwoKICAgIGZsb2F0IHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMS54ICogU0hJRlRfUklHSFQ4OwogICAgZmxvYXQgc2hvdyA9IGZsb29yKHRlbXApOwoKI2lmZGVmIEVZRV9ESVNUQU5DRV9UUkFOU0xVQ0VOQ1kKICAgIHZlYzQgdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTsKICAgIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UueCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUxLno7CiAgICB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLnogPSBjb21wcmVzc2VkQXR0cmlidXRlMS53OwoKICAgIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UueSA9ICgodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4KSAvIDI1NS4wOwoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMS55ICogU0hJRlRfUklHSFQ4OwogICAgdHJhbnNsdWNlbmN5QnlEaXN0YW5jZS53ID0gKCh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDgpIC8gMjU1LjA7CiNlbmRpZgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHZlYzQgY29sb3I7CiAgICB2ZWM0IG91dGxpbmVDb2xvcjsKICAgIHZlYzQgcGlja0NvbG9yOwoKICAgIC8vIGNvbXByZXNzZWRBdHRyaWJ1dGUwLnogPT4gcGlja0NvbG9yLnJnYgoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMC56ICogU0hJRlRfUklHSFQ4OwogICAgcGlja0NvbG9yLmIgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwogICAgcGlja0NvbG9yLmcgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgcGlja0NvbG9yLnIgPSBmbG9vcih0ZW1wKTsKCiAgICAvLyBjb21wcmVzc2VkQXR0cmlidXRlMC54ID0+IGNvbG9yLnJnYgoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMC54ICogU0hJRlRfUklHSFQ4OwogICAgY29sb3IuYiA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICB0ZW1wID0gZmxvb3IodGVtcCkgKiBTSElGVF9SSUdIVDg7CiAgICBjb2xvci5nID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIGNvbG9yLnIgPSBmbG9vcih0ZW1wKTsKCiAgICAvLyBjb21wcmVzc2VkQXR0cmlidXRlMC55ID0+IG91dGxpbmVDb2xvci5yZ2IKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTAueSAqIFNISUZUX1JJR0hUODsKICAgIG91dGxpbmVDb2xvci5iID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHRlbXAgPSBmbG9vcih0ZW1wKSAqIFNISUZUX1JJR0hUODsKICAgIG91dGxpbmVDb2xvci5nID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIG91dGxpbmVDb2xvci5yID0gZmxvb3IodGVtcCk7CgogICAgLy8gY29tcHJlc3NlZEF0dHJpYnV0ZTAudyA9PiBjb2xvci5hLCBvdXRsaW5lQ29sb3IuYSwgcGlja0NvbG9yLmEKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTAudyAqIFNISUZUX1JJR0hUODsKICAgIHBpY2tDb2xvci5hID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHBpY2tDb2xvciA9IHBpY2tDb2xvciAvIDI1NS4wOwoKICAgIHRlbXAgPSBmbG9vcih0ZW1wKSAqIFNISUZUX1JJR0hUODsKICAgIG91dGxpbmVDb2xvci5hID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIG91dGxpbmVDb2xvciAvPSAyNTUuMDsKICAgIGNvbG9yLmEgPSBmbG9vcih0ZW1wKTsKICAgIGNvbG9yIC89IDI1NS4wOwoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHZlYzQgcCA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHBvc2l0aW9uSGlnaCwgcG9zaXRpb25Mb3cpOwogICAgdmVjNCBwb3NpdGlvbkVDID0gY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwOwoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKI2lmIGRlZmluZWQoRVlFX0RJU1RBTkNFX1NDQUxJTkcpIHx8IGRlZmluZWQoRVlFX0RJU1RBTkNFX1RSQU5TTFVDRU5DWSkgfHwgZGVmaW5lZChESVNUQU5DRV9ESVNQTEFZX0NPTkRJVElPTikgfHwgZGVmaW5lZChESVNBQkxFX0RFUFRIX0RJU1RBTkNFKQogICAgZmxvYXQgbGVuZ3RoU3E7CiAgICBpZiAoY3ptX3NjZW5lTW9kZSA9PSBjem1fc2NlbmVNb2RlMkQpCiAgICB7CiAgICAgICAgLy8gMkQgY2FtZXJhIGRpc3RhbmNlIGlzIGEgc3BlY2lhbCBjYXNlCiAgICAgICAgLy8gdHJlYXQgYWxsIGJpbGxib2FyZHMgYXMgZmxhdHRlbmVkIHRvIHRoZSB6PTAuMCBwbGFuZQogICAgICAgIGxlbmd0aFNxID0gY3ptX2V5ZUhlaWdodDJELnk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbGVuZ3RoU3EgPSBkb3QocG9zaXRpb25FQy54eXosIHBvc2l0aW9uRUMueHl6KTsKICAgIH0KI2VuZGlmCgojaWZkZWYgRVlFX0RJU1RBTkNFX1NDQUxJTkcKICAgIHRvdGFsU2l6ZSAqPSBjem1fbmVhckZhclNjYWxhcihzY2FsZUJ5RGlzdGFuY2UsIGxlbmd0aFNxKTsKI2VuZGlmCiAgICBpZiAodG90YWxTaXplID4gMC4wKSB7CiAgICAgICAgLy8gQWRkIHBhZGRpbmcgZm9yIGFudGktYWxpYXNpbmcgb24gYm90aCBzaWRlcy4KICAgICAgICB0b3RhbFNpemUgKz0gMy4wOwogICAgfQoKICAgIC8vIENsYW1wIHRvIG1heCBwb2ludCBzaXplLgogICAgdG90YWxTaXplID0gbWluKHRvdGFsU2l6ZSwgdV9tYXhUb3RhbFBvaW50U2l6ZSk7CiAgICAvLyBJZiBzaXplIGlzIHRvbyBzbWFsbCwgcHVzaCB2ZXJ0ZXggYmVoaW5kIG5lYXIgcGxhbmUgZm9yIGNsaXBwaW5nLgogICAgLy8gTm90ZSB0aGF0IGNvbnRleHQubWluaW11bUFsaWFzZWRQb2ludFNpemUgIndpbGwgYmUgYXQgbW9zdCAxLjAiLgogICAgaWYgKHRvdGFsU2l6ZSA8IDEuMCkKICAgIHsKICAgICAgICBwb3NpdGlvbkVDLnh5eiA9IHZlYzMoMC4wKTsKICAgICAgICB0b3RhbFNpemUgPSAxLjA7CiAgICB9CgogICAgZmxvYXQgdHJhbnNsdWNlbmN5ID0gMS4wOwojaWZkZWYgRVlFX0RJU1RBTkNFX1RSQU5TTFVDRU5DWQogICAgdHJhbnNsdWNlbmN5ID0gY3ptX25lYXJGYXJTY2FsYXIodHJhbnNsdWNlbmN5QnlEaXN0YW5jZSwgbGVuZ3RoU3EpOwogICAgLy8gcHVzaCB2ZXJ0ZXggYmVoaW5kIG5lYXIgcGxhbmUgZm9yIGNsaXBwaW5nCiAgICBpZiAodHJhbnNsdWNlbmN5IDwgMC4wMDQpCiAgICB7CiAgICAgICAgcG9zaXRpb25FQy54eXogPSB2ZWMzKDAuMCk7CiAgICB9CiNlbmRpZgoKI2lmZGVmIERJU1RBTkNFX0RJU1BMQVlfQ09ORElUSU9OCiAgICBmbG9hdCBuZWFyU3EgPSBkaXN0YW5jZURpc3BsYXlDb25kaXRpb25BbmREaXNhYmxlRGVwdGgueDsKICAgIGZsb2F0IGZhclNxID0gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uQW5kRGlzYWJsZURlcHRoLnk7CiAgICBpZiAobGVuZ3RoU3EgPCBuZWFyU3EgfHwgbGVuZ3RoU3EgPiBmYXJTcSkgewogICAgICAgIC8vIHB1c2ggdmVydGV4IGJlaGluZCBjYW1lcmEgdG8gZm9yY2UgaXQgdG8gYmUgY2xpcHBlZAogICAgICAgIHBvc2l0aW9uRUMueHl6ID0gdmVjMygwLjAsIDAuMCwgMS4wKTsKICAgIH0KI2VuZGlmCgogICAgZ2xfUG9zaXRpb24gPSBjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUM7CiAgICBjem1fdmVydGV4TG9nRGVwdGgoKTsKCiNpZmRlZiBESVNBQkxFX0RFUFRIX0RJU1RBTkNFCiAgICBmbG9hdCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBkaXN0YW5jZURpc3BsYXlDb25kaXRpb25BbmREaXNhYmxlRGVwdGguejsKICAgIGlmIChkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPT0gMC4wICYmIGN6bV9taW5pbXVtRGlzYWJsZURlcHRoVGVzdERpc3RhbmNlICE9IDAuMCkKICAgIHsKICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBjem1fbWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZTsKICAgIH0KCiAgICBpZiAoZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlICE9IDAuMCkKICAgIHsKICAgICAgICAvLyBEb24ndCB0cnkgdG8gIm11bHRpcGx5IGJvdGggc2lkZXMiIGJ5IHcuICBHcmVhdGVyL2xlc3MtdGhhbiBjb21wYXJpc29ucyB3b24ndCB3b3JrIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb2Ygdy4KICAgICAgICBmbG9hdCB6Y2xpcCA9IGdsX1Bvc2l0aW9uLnogLyBnbF9Qb3NpdGlvbi53OwogICAgICAgIGJvb2wgY2xpcHBlZCA9ICh6Y2xpcCA8IC0xLjAgfHwgemNsaXAgPiAxLjApOwogICAgICAgIGlmICghY2xpcHBlZCAmJiAoZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIDwgMC4wIHx8IChsZW5ndGhTcSA+IDAuMCAmJiBsZW5ndGhTcSA8IGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkpKQogICAgICAgIHsKICAgICAgICAgICAgLy8gUG9zaXRpb24geiBvbiB0aGUgbmVhciBwbGFuZS4KICAgICAgICAgICAgZ2xfUG9zaXRpb24ueiA9IC1nbF9Qb3NpdGlvbi53OwojaWZkZWYgTE9HX0RFUFRICiAgICAgICAgICAgIGN6bV92ZXJ0ZXhMb2dEZXB0aCh2ZWM0KGN6bV9jdXJyZW50RnJ1c3R1bS54KSk7CiNlbmRpZgogICAgICAgIH0KICAgIH0KI2VuZGlmCgogICAgdl9jb2xvciA9IGNvbG9yOwogICAgdl9jb2xvci5hICo9IHRyYW5zbHVjZW5jeSAqIHNob3c7CiAgICB2X291dGxpbmVDb2xvciA9IG91dGxpbmVDb2xvcjsKICAgIHZfb3V0bGluZUNvbG9yLmEgKj0gdHJhbnNsdWNlbmN5ICogc2hvdzsKCiAgICB2X2lubmVyUGVyY2VudCA9IDEuMCAtIG91dGxpbmVQZXJjZW50OwogICAgdl9waXhlbERpc3RhbmNlID0gMi4wIC8gdG90YWxTaXplOwogICAgZ2xfUG9pbnRTaXplID0gdG90YWxTaXplICogc2hvdzsKICAgIGdsX1Bvc2l0aW9uICo9IHNob3c7CgogICAgdl9waWNrQ29sb3IgPSBwaWNrQ29sb3I7Cn0KYH0pO2Z1bmN0aW9uIHhyKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9zcD12b2lkIDAsdGhpcy5fc3BUcmFuc2x1Y2VudD12b2lkIDAsdGhpcy5fcnNPcGFxdWU9dm9pZCAwLHRoaXMuX3JzVHJhbnNsdWNlbnQ9dm9pZCAwLHRoaXMuX3ZhZj12b2lkIDAsdGhpcy5fcG9pbnRQcmltaXRpdmVzPVtdLHRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlPVtdLHRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXg9MCx0aGlzLl9wb2ludFByaW1pdGl2ZXNSZW1vdmVkPSExLHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSExLHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPSExLHRoaXMuX2NvbXBpbGVkU2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb249ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb249ITEsdGhpcy5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2U9ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT0hMSx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZD1uZXcgVWludDMyQXJyYXkoZU4pLHRoaXMuX21heFBpeGVsU2l6ZT0xLHRoaXMuX2Jhc2VWb2x1bWU9bmV3IE50LHRoaXMuX2Jhc2VWb2x1bWVXQz1uZXcgTnQsdGhpcy5fYmFzZVZvbHVtZTJEPW5ldyBOdCx0aGlzLl9ib3VuZGluZ1ZvbHVtZT1uZXcgTnQsdGhpcy5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMSx0aGlzLl9jb2xvckNvbW1hbmRzPVtdLHRoaXMuc2hvdz1aKHQuc2hvdywhMCksdGhpcy5tb2RlbE1hdHJpeD1hdC5jbG9uZShaKHQubW9kZWxNYXRyaXgsYXQuSURFTlRJVFkpKSx0aGlzLl9tb2RlbE1hdHJpeD1hdC5jbG9uZShhdC5JREVOVElUWSksdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT1aKHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsITEpLHRoaXMuYmxlbmRPcHRpb249Wih0LmJsZW5kT3B0aW9uLFduLk9QQVFVRV9BTkRfVFJBTlNMVUNFTlQpLHRoaXMuX2JsZW5kT3B0aW9uPXZvaWQgMCx0aGlzLl9tb2RlPXllLlNDRU5FM0QsdGhpcy5fbWF4VG90YWxQb2ludFNpemU9MSx0aGlzLl9idWZmZXJzVXNhZ2U9W2FpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXXTtsZXQgZT10aGlzO3RoaXMuX3VuaWZvcm1zPXt1X21heFRvdGFsUG9pbnRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGUuX21heFRvdGFsUG9pbnRTaXplfX19ZnVuY3Rpb24geHkodCl7bGV0IGU9dC5sZW5ndGg7Zm9yKGxldCBpPTA7aTxlOysraSl0W2ldJiZ0W2ldLl9kZXN0cm95KCl9ZnVuY3Rpb24gaU4odCl7aWYodC5fcG9pbnRQcmltaXRpdmVzUmVtb3ZlZCl7dC5fcG9pbnRQcmltaXRpdmVzUmVtb3ZlZD0hMTtsZXQgZT1bXSxpPXQuX3BvaW50UHJpbWl0aXZlcyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wLG89MDtzPG47KytzKXtsZXQgcj1pW3NdO3ImJihyLl9pbmRleD1vKyssZS5wdXNoKHIpKX10Ll9wb2ludFByaW1pdGl2ZXM9ZX19ZnVuY3Rpb24gemV0KHQsZSxpKXtyZXR1cm4gbmV3IGZJKHQsW3tpbmRleDpDby5wb3NpdGlvbkhpZ2hBbmRTaXplLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW3ROXX0se2luZGV4OkNvLnBvc2l0aW9uTG93QW5kU2hvdyxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVt0Tl19LHtpbmRleDpDby5jb21wcmVzc2VkQXR0cmlidXRlMCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVtreV19LHtpbmRleDpDby5jb21wcmVzc2VkQXR0cmlidXRlMSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVt5eV19LHtpbmRleDpDby5zY2FsZUJ5RGlzdGFuY2UsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbTHldfSx7aW5kZXg6Q28uZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uQW5kRGlzYWJsZURlcHRoLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW3d5XX1dLGUpfWZ1bmN0aW9uIFB5KHQsZSxpLG4pe2xldCBzPW4uX2luZGV4LG89bi5fZ2V0QWN0dWFsUG9zaXRpb24oKTt0Ll9tb2RlPT09eWUuU0NFTkUzRCYmKE50LmV4cGFuZCh0Ll9iYXNlVm9sdW1lLG8sdC5fYmFzZVZvbHVtZSksdC5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMCksQm4uZnJvbUNhcnRlc2lhbihvLHFUKTtsZXQgcj1uLnBpeGVsU2l6ZSxhPW4ub3V0bGluZVdpZHRoO3QuX21heFBpeGVsU2l6ZT1NYXRoLm1heCh0Ll9tYXhQaXhlbFNpemUscithKTtsZXQgaD1pW0NvLnBvc2l0aW9uSGlnaEFuZFNpemVdLEE9cVQuaGlnaDtoKHMsQS54LEEueSxBLnoscik7bGV0IGQ9aVtDby5wb3NpdGlvbkxvd0FuZE91dGxpbmVdLGY9cVQubG93O2QocyxmLngsZi55LGYueixhKX1mdW5jdGlvbiBKeSh0LGUsaSxuKXtsZXQgcz1uLl9pbmRleCxvPW4uY29sb3Iscj1uLmdldFBpY2tJZChlKS5jb2xvcixhPW4ub3V0bGluZUNvbG9yLGg9WnQuZmxvYXRUb0J5dGUoby5yZWQpLEE9WnQuZmxvYXRUb0J5dGUoby5ncmVlbiksZD1adC5mbG9hdFRvQnl0ZShvLmJsdWUpLGY9aCpUSStBKlFFK2Q7aD1adC5mbG9hdFRvQnl0ZShhLnJlZCksQT1adC5mbG9hdFRvQnl0ZShhLmdyZWVuKSxkPVp0LmZsb2F0VG9CeXRlKGEuYmx1ZSk7bGV0IEU9aCpUSStBKlFFK2Q7aD1adC5mbG9hdFRvQnl0ZShyLnJlZCksQT1adC5mbG9hdFRvQnl0ZShyLmdyZWVuKSxkPVp0LmZsb2F0VG9CeXRlKHIuYmx1ZSk7bGV0IF89aCpUSStBKlFFK2QsUj1adC5mbG9hdFRvQnl0ZShvLmFscGhhKSpUSStadC5mbG9hdFRvQnl0ZShhLmFscGhhKSpRRStadC5mbG9hdFRvQnl0ZShyLmFscGhhKSxJPWlbQ28uY29tcHJlc3NlZEF0dHJpYnV0ZTBdO0kocyxmLEUsXyxSKX1mdW5jdGlvbiBqeSh0LGUsaSxuKXtsZXQgcz1uLl9pbmRleCxvPTAscj0xLGE9MSxoPTEsQT1uLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U7bShBKSYmKG89QS5uZWFyLHI9QS5uZWFyVmFsdWUsYT1BLmZhcixoPUEuZmFyVmFsdWUsKHIhPT0xfHxoIT09MSkmJih0Ll9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPSEwKSk7bGV0IGQ9bi5zaG93JiZuLmNsdXN0ZXJTaG93O24uY29sb3IuYWxwaGE9PT0wJiZuLm91dGxpbmVDb2xvci5hbHBoYT09PTAmJihkPSExKSxyPUwuY2xhbXAociwwLDEpLHI9cj09PTE/MjU1OnIqMjU1fDA7bGV0IGY9KGQ/MTowKSpRRStyO2g9TC5jbGFtcChoLDAsMSksaD1oPT09MT8yNTU6aCoyNTV8MDtsZXQgRT1oLF89aVtDby5jb21wcmVzc2VkQXR0cmlidXRlMV07XyhzLGYsRSxvLGEpfWZ1bmN0aW9uIEh5KHQsZSxpLG4pe2xldCBzPW4uX2luZGV4LG89aVtDby5zY2FsZUJ5RGlzdGFuY2VdLHI9MCxhPTEsaD0xLEE9MSxkPW4uc2NhbGVCeURpc3RhbmNlO20oZCkmJihyPWQubmVhcixhPWQubmVhclZhbHVlLGg9ZC5mYXIsQT1kLmZhclZhbHVlLChhIT09MXx8QSE9PTEpJiYodC5fc2hhZGVyU2NhbGVCeURpc3RhbmNlPSEwKSksbyhzLHIsYSxoLEEpfWZ1bmN0aW9uIHZ5KHQsZSxpLG4pe2xldCBzPW4uX2luZGV4LG89aVtDby5kaXN0YW5jZURpc3BsYXlDb25kaXRpb25BbmREaXNhYmxlRGVwdGhdLHI9MCxhPU51bWJlci5NQVhfVkFMVUUsaD1uLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjttKGgpJiYocj1oLm5lYXIsYT1oLmZhcixyKj1yLGEqPWEsdC5fc2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPSEwKTtsZXQgQT1uLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTtBKj1BLEE+MCYmKHQuX3NoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlPSEwLEE9PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJihBPS0xKSksbyhzLHIsYSxBKX1mdW5jdGlvbiBLZXQodCxlLGksbil7UHkodCxlLGksbiksSnkodCxlLGksbiksankodCxlLGksbiksSHkodCxlLGksbiksdnkodCxlLGksbil9ZnVuY3Rpb24gJFQodCxlLGksbixzLG8pe2xldCByO24ubW9kZT09PXllLlNDRU5FM0Q/KHI9dC5fYmFzZVZvbHVtZSx0Ll9ib3VuZGluZ1ZvbHVtZURpcnR5PSEwKTpyPXQuX2Jhc2VWb2x1bWUyRDtsZXQgYT1bXTtmb3IobGV0IGg9MDtoPGk7KytoKXtsZXQgQT1lW2hdLGQ9QS5wb3NpdGlvbixmPXVvLl9jb21wdXRlQWN0dWFsUG9zaXRpb24oZCxuLHMpO20oZikmJihBLl9zZXRBY3R1YWxQb3NpdGlvbihmKSxvP2EucHVzaChmKTpOdC5leHBhbmQocixmLHIpKX1vJiZOdC5mcm9tUG9pbnRzKGEscil9ZnVuY3Rpb24gWGV0KHQsZSl7bGV0IGk9ZS5tb2RlLG49dC5fcG9pbnRQcmltaXRpdmVzLHM9dC5fcG9pbnRQcmltaXRpdmVzVG9VcGRhdGUsbz10Ll9tb2RlbE1hdHJpeDt0Ll9jcmVhdGVWZXJ0ZXhBcnJheXx8dC5fbW9kZSE9PWl8fGkhPT15ZS5TQ0VORTNEJiYhYXQuZXF1YWxzKG8sdC5tb2RlbE1hdHJpeCk/KHQuX21vZGU9aSxhdC5jbG9uZSh0Lm1vZGVsTWF0cml4LG8pLHQuX2NyZWF0ZVZlcnRleEFycmF5PSEwLChpPT09eWUuU0NFTkUzRHx8aT09PXllLlNDRU5FMkR8fGk9PT15ZS5DT0xVTUJVU19WSUVXKSYmJFQodCxuLG4ubGVuZ3RoLGUsbywhMCkpOmk9PT15ZS5NT1JQSElORz8kVCh0LG4sbi5sZW5ndGgsZSxvLCEwKTooaT09PXllLlNDRU5FMkR8fGk9PT15ZS5DT0xVTUJVU19WSUVXKSYmJFQodCxzLHQuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXgsZSxvLCExKX1mdW5jdGlvbiBxZXQodCxlLGkpe2xldCBzPWUuY2FtZXJhLmdldFBpeGVsU2l6ZShpLGUuY29udGV4dC5kcmF3aW5nQnVmZmVyV2lkdGgsZS5jb250ZXh0LmRyYXdpbmdCdWZmZXJIZWlnaHQpKnQuX21heFBpeGVsU2l6ZTtpLnJhZGl1cys9c312YXIgUGV0LHROLGt5LEpldCxqZXQsSGV0LEx5LHl5LHd5LHZldCxlTixDbyxxVCxUSSxRRSwkZXQsbk4senk9TygoKT0+e19pKCk7UW4oKTtvaSgpO2J0KCk7bXQoKTtXcygpO1Z0KCk7VGwoKTtfZSgpO0ZpKCk7WGkoKTtzcygpO05sKCk7Z2EoKTtCbSgpO1dtKCk7TW0oKTtRbSgpO0ZsKCk7QlQoKTtNeSgpO1F5KCk7a20oKTtFSSgpO1hUKCk7dWEoKTtQZXQ9dW8uU0hPV19JTkRFWCx0Tj11by5QT1NJVElPTl9JTkRFWCxreT11by5DT0xPUl9JTkRFWCxKZXQ9dW8uT1VUTElORV9DT0xPUl9JTkRFWCxqZXQ9dW8uT1VUTElORV9XSURUSF9JTkRFWCxIZXQ9dW8uUElYRUxfU0laRV9JTkRFWCxMeT11by5TQ0FMRV9CWV9ESVNUQU5DRV9JTkRFWCx5eT11by5UUkFOU0xVQ0VOQ1lfQllfRElTVEFOQ0VfSU5ERVgsd3k9dW8uRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT05fSU5ERVgsdmV0PXVvLkRJU0FCTEVfREVQVEhfRElTVEFOQ0VfSU5ERVgsZU49dW8uTlVNQkVSX09GX1BST1BFUlRJRVMsQ289e3Bvc2l0aW9uSGlnaEFuZFNpemU6MCxwb3NpdGlvbkxvd0FuZE91dGxpbmU6MSxjb21wcmVzc2VkQXR0cmlidXRlMDoyLGNvbXByZXNzZWRBdHRyaWJ1dGUxOjMsc2NhbGVCeURpc3RhbmNlOjQsZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uQW5kRGlzYWJsZURlcHRoOjV9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHhyLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaU4odGhpcyksdGhpcy5fcG9pbnRQcmltaXRpdmVzLmxlbmd0aH19fSk7eHIucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtsZXQgZT1uZXcgdW8odCx0aGlzKTtyZXR1cm4gZS5faW5kZXg9dGhpcy5fcG9pbnRQcmltaXRpdmVzLmxlbmd0aCx0aGlzLl9wb2ludFByaW1pdGl2ZXMucHVzaChlKSx0aGlzLl9jcmVhdGVWZXJ0ZXhBcnJheT0hMCxlfTt4ci5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5zKHQpPyh0aGlzLl9wb2ludFByaW1pdGl2ZXNbdC5faW5kZXhdPW51bGwsdGhpcy5fcG9pbnRQcmltaXRpdmVzUmVtb3ZlZD0hMCx0aGlzLl9jcmVhdGVWZXJ0ZXhBcnJheT0hMCx0Ll9kZXN0cm95KCksITApOiExfTt4ci5wcm90b3R5cGUucmVtb3ZlQWxsPWZ1bmN0aW9uKCl7eHkodGhpcy5fcG9pbnRQcmltaXRpdmVzKSx0aGlzLl9wb2ludFByaW1pdGl2ZXM9W10sdGhpcy5fcG9pbnRQcmltaXRpdmVzVG9VcGRhdGU9W10sdGhpcy5fcG9pbnRQcmltaXRpdmVzVG9VcGRhdGVJbmRleD0wLHRoaXMuX3BvaW50UHJpbWl0aXZlc1JlbW92ZWQ9ITEsdGhpcy5fY3JlYXRlVmVydGV4QXJyYXk9ITB9O3hyLnByb3RvdHlwZS5fdXBkYXRlUG9pbnRQcmltaXRpdmU9ZnVuY3Rpb24odCxlKXt0Ll9kaXJ0eXx8KHRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlW3RoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXgrK109dCksKyt0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZFtlXX07eHIucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiZ0Ll9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb249PT10aGlzfTt4ci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpbmRleCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gaU4odGhpcyksdGhpcy5fcG9pbnRQcmltaXRpdmVzW3RdfTt4ci5wcm90b3R5cGUuY29tcHV0ZU5ld0J1ZmZlcnNVc2FnZT1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2J1ZmZlcnNVc2FnZSxlPSExLGk9dGhpcy5fcHJvcGVydGllc0NoYW5nZWQ7Zm9yKGxldCBuPTA7bjxlTjsrK24pe2xldCBzPWlbbl09PT0wP2FpLlNUQVRJQ19EUkFXOmFpLlNUUkVBTV9EUkFXO2U9ZXx8dFtuXSE9PXMsdFtuXT1zfXJldHVybiBlfTtxVD1uZXcgQm47VEk9NjU1MzYsUUU9MjU2OyRldD1bXTt4ci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKGlOKHRoaXMpLCF0aGlzLnNob3cpcmV0dXJuO3RoaXMuX21heFRvdGFsUG9pbnRTaXplPWVuLm1heGltdW1BbGlhc2VkUG9pbnRTaXplLFhldCh0aGlzLHQpO2xldCBpPXRoaXMuX3BvaW50UHJpbWl0aXZlcy5sZW5ndGgsbj10aGlzLl9wb2ludFByaW1pdGl2ZXNUb1VwZGF0ZSxzPXRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXgsbz10aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCxyPXRoaXMuX2NyZWF0ZVZlcnRleEFycmF5LGEsaD10LmNvbnRleHQsQT10LnBhc3NlcyxkPUEucGljaztpZihyfHwhZCYmdGhpcy5jb21wdXRlTmV3QnVmZmVyc1VzYWdlKCkpe3RoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSExO2ZvcihsZXQgRz0wO0c8ZU47KytHKW9bR109MDtpZih0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLGk+MCl7dGhpcy5fdmFmPXpldChoLGksdGhpcy5fYnVmZmVyc1VzYWdlKSxhPXRoaXMuX3ZhZi53cml0ZXJzO2ZvcihsZXQgRz0wO0c8aTsrK0cpe2xldCBNPXRoaXMuX3BvaW50UHJpbWl0aXZlc1tHXTtNLl9kaXJ0eT0hMSxLZXQodGhpcyxoLGEsTSl9dGhpcy5fdmFmLmNvbW1pdCgpfXRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXg9MH1lbHNlIGlmKHM+MCl7bGV0IEc9JGV0O0cubGVuZ3RoPTAsKG9bdE5dfHxvW2pldF18fG9bSGV0XSkmJkcucHVzaChQeSksKG9ba3ldfHxvW0pldF0pJiZHLnB1c2goSnkpLChvW1BldF18fG9beXldKSYmRy5wdXNoKGp5KSxvW0x5XSYmRy5wdXNoKEh5KSwob1t3eV18fG9bdmV0XSkmJkcucHVzaCh2eSk7bGV0IE09Ry5sZW5ndGg7aWYoYT10aGlzLl92YWYud3JpdGVycyxzL2k+LjEpe2ZvcihsZXQgUT0wO1E8czsrK1Epe2xldCBVPW5bUV07VS5fZGlydHk9ITE7Zm9yKGxldCBrPTA7azxNOysraylHW2tdKHRoaXMsaCxhLFUpfXRoaXMuX3ZhZi5jb21taXQoKX1lbHNle2ZvcihsZXQgUT0wO1E8czsrK1Epe2xldCBVPW5bUV07VS5fZGlydHk9ITE7Zm9yKGxldCBrPTA7azxNOysraylHW2tdKHRoaXMsaCxhLFUpO3RoaXMuX3ZhZi5zdWJDb21taXQoVS5faW5kZXgsMSl9dGhpcy5fdmFmLmVuZFN1YkNvbW1pdHMoKX10aGlzLl9wb2ludFByaW1pdGl2ZXNUb1VwZGF0ZUluZGV4PTB9aWYocz5pKjEuNSYmKG4ubGVuZ3RoPWkpLCFtKHRoaXMuX3ZhZil8fCFtKHRoaXMuX3ZhZi52YSkpcmV0dXJuO3RoaXMuX2JvdW5kaW5nVm9sdW1lRGlydHkmJih0aGlzLl9ib3VuZGluZ1ZvbHVtZURpcnR5PSExLE50LnRyYW5zZm9ybSh0aGlzLl9iYXNlVm9sdW1lLHRoaXMubW9kZWxNYXRyaXgsdGhpcy5fYmFzZVZvbHVtZVdDKSk7bGV0IGYsRT1hdC5JREVOVElUWTt0Lm1vZGU9PT15ZS5TQ0VORTNEPyhFPXRoaXMubW9kZWxNYXRyaXgsZj1OdC5jbG9uZSh0aGlzLl9iYXNlVm9sdW1lV0MsdGhpcy5fYm91bmRpbmdWb2x1bWUpKTpmPU50LmNsb25lKHRoaXMuX2Jhc2VWb2x1bWUyRCx0aGlzLl9ib3VuZGluZ1ZvbHVtZSkscWV0KHRoaXMsdCxmKTtsZXQgXz10aGlzLl9ibGVuZE9wdGlvbiE9PXRoaXMuYmxlbmRPcHRpb247dGhpcy5fYmxlbmRPcHRpb249dGhpcy5ibGVuZE9wdGlvbixfJiYodGhpcy5fYmxlbmRPcHRpb249PT1Xbi5PUEFRVUV8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc09wYXF1ZT1Zbi5mcm9tQ2FjaGUoe2RlcHRoVGVzdDp7ZW5hYmxlZDohMCxmdW5jOml0LkxFUVVBTH0sZGVwdGhNYXNrOiEwfSk6dGhpcy5fcnNPcGFxdWU9dm9pZCAwLHRoaXMuX2JsZW5kT3B0aW9uPT09V24uVFJBTlNMVUNFTlR8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc1RyYW5zbHVjZW50PVluLmZyb21DYWNoZSh7ZGVwdGhUZXN0OntlbmFibGVkOiEwLGZ1bmM6aXQuTEVRVUFMfSxkZXB0aE1hc2s6ITEsYmxlbmRpbmc6VXIuQUxQSEFfQkxFTkR9KTp0aGlzLl9yc1RyYW5zbHVjZW50PXZvaWQgMCksdGhpcy5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2U9dGhpcy5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2V8fHQubWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZSE9PTA7bGV0IFIsSTsoX3x8dGhpcy5fc2hhZGVyU2NhbGVCeURpc3RhbmNlJiYhdGhpcy5fY29tcGlsZWRTaGFkZXJTY2FsZUJ5RGlzdGFuY2V8fHRoaXMuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UmJiF0aGlzLl9jb21waWxlZFNoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2V8fHRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiYmIXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9ufHx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2UpJiYoUj1uZXcgTWkoe3NvdXJjZXM6W1V5XX0pLHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZSYmUi5kZWZpbmVzLnB1c2goIkVZRV9ESVNUQU5DRV9TQ0FMSU5HIiksdGhpcy5fc2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZSYmUi5kZWZpbmVzLnB1c2goIkVZRV9ESVNUQU5DRV9UUkFOU0xVQ0VOQ1kiKSx0aGlzLl9zaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb24mJlIuZGVmaW5lcy5wdXNoKCJESVNUQU5DRV9ESVNQTEFZX0NPTkRJVElPTiIpLHRoaXMuX3NoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlJiZSLmRlZmluZXMucHVzaCgiRElTQUJMRV9ERVBUSF9ESVNUQU5DRSIpLHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVCYmKEk9bmV3IE1pKHtkZWZpbmVzOlsiT1BBUVVFIl0sc291cmNlczpbVUVdfSksdGhpcy5fc3A9RXMucmVwbGFjZUNhY2hlKHtjb250ZXh0Omgsc2hhZGVyUHJvZ3JhbTp0aGlzLl9zcCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6UixmcmFnbWVudFNoYWRlclNvdXJjZTpJLGF0dHJpYnV0ZUxvY2F0aW9uczpDb30pLEk9bmV3IE1pKHtkZWZpbmVzOlsiVFJBTlNMVUNFTlQiXSxzb3VyY2VzOltVRV19KSx0aGlzLl9zcFRyYW5zbHVjZW50PUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpoLHNoYWRlclByb2dyYW06dGhpcy5fc3BUcmFuc2x1Y2VudCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6UixmcmFnbWVudFNoYWRlclNvdXJjZTpJLGF0dHJpYnV0ZUxvY2F0aW9uczpDb30pKSx0aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRSYmKEk9bmV3IE1pKHtzb3VyY2VzOltVRV19KSx0aGlzLl9zcD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6aCxzaGFkZXJQcm9ncmFtOnRoaXMuX3NwLHZlcnRleFNoYWRlclNvdXJjZTpSLGZyYWdtZW50U2hhZGVyU291cmNlOkksYXR0cmlidXRlTG9jYXRpb25zOkNvfSkpLHRoaXMuX2JsZW5kT3B0aW9uPT09V24uVFJBTlNMVUNFTlQmJihJPW5ldyBNaSh7c291cmNlczpbVUVdfSksdGhpcy5fc3BUcmFuc2x1Y2VudD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6aCxzaGFkZXJQcm9ncmFtOnRoaXMuX3NwVHJhbnNsdWNlbnQsdmVydGV4U2hhZGVyU291cmNlOlIsZnJhZ21lbnRTaGFkZXJTb3VyY2U6SSxhdHRyaWJ1dGVMb2NhdGlvbnM6Q299KSksdGhpcy5fY29tcGlsZWRTaGFkZXJTY2FsZUJ5RGlzdGFuY2U9dGhpcy5fc2hhZGVyU2NhbGVCeURpc3RhbmNlLHRoaXMuX2NvbXBpbGVkU2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZT10aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlLHRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0aGlzLl9jb21waWxlZFNoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlPXRoaXMuX3NoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlKTtsZXQgQyxOLFQsRixiPXQuY29tbWFuZExpc3Q7aWYoQS5yZW5kZXJ8fGQpe2xldCBHPXRoaXMuX2NvbG9yQ29tbWFuZHMsTT10aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRSxRPXRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVDtDPXRoaXMuX3ZhZi52YSxOPUMubGVuZ3RoLEcubGVuZ3RoPU47bGV0IFU9UT9OKjI6Tjtmb3IoRj0wO0Y8VTsrK0Ype2xldCBrPU18fFEmJkYlMj09PTA7VD1HW0ZdLG0oVCl8fChUPUdbRl09bmV3IGZuKSxULnByaW1pdGl2ZVR5cGU9bmUuUE9JTlRTLFQucGFzcz1rfHwhUT9vcy5PUEFRVUU6b3MuVFJBTlNMVUNFTlQsVC5vd25lcj10aGlzO2xldCB5PVE/TWF0aC5mbG9vcihGLzIpOkY7VC5ib3VuZGluZ1ZvbHVtZT1mLFQubW9kZWxNYXRyaXg9RSxULnNoYWRlclByb2dyYW09az90aGlzLl9zcDp0aGlzLl9zcFRyYW5zbHVjZW50LFQudW5pZm9ybU1hcD10aGlzLl91bmlmb3JtcyxULnZlcnRleEFycmF5PUNbeV0udmEsVC5yZW5kZXJTdGF0ZT1rP3RoaXMuX3JzT3BhcXVlOnRoaXMuX3JzVHJhbnNsdWNlbnQsVC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT10aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLFQucGlja0lkPSJ2X3BpY2tDb2xvciIsYi5wdXNoKFQpfX19O3hyLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTt4ci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zcD10aGlzLl9zcCYmdGhpcy5fc3AuZGVzdHJveSgpLHRoaXMuX3NwVHJhbnNsdWNlbnQ9dGhpcy5fc3BUcmFuc2x1Y2VudCYmdGhpcy5fc3BUcmFuc2x1Y2VudC5kZXN0cm95KCksdGhpcy5fc3BQaWNrPXRoaXMuX3NwUGljayYmdGhpcy5fc3BQaWNrLmRlc3Ryb3koKSx0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLHh5KHRoaXMuX3BvaW50UHJpbWl0aXZlcyksbGkodGhpcyl9O25OPXhyfSk7ZnVuY3Rpb24gck4odCxlLGksbixzLG8pe2lmKHMtbjw9aSlyZXR1cm47bGV0IHI9bitzPj4xO3F5KHQsZSxyLG4scyxvKSxyTih0LGUsaSxuLHItMSwxLW8pLHJOKHQsZSxpLHIrMSxzLDEtbyl9ZnVuY3Rpb24gcXkodCxlLGksbixzLG8pe2Zvcig7cz5uOyl7aWYocy1uPjYwMCl7bGV0IEE9cy1uKzEsZD1pLW4rMSxmPU1hdGgubG9nKEEpLEU9LjUqTWF0aC5leHAoMipmLzMpLF89LjUqTWF0aC5zcXJ0KGYqRSooQS1FKS9BKSooZC1BLzI8MD8tMToxKSxSPU1hdGgubWF4KG4sTWF0aC5mbG9vcihpLWQqRS9BK18pKSxJPU1hdGgubWluKHMsTWF0aC5mbG9vcihpKyhBLWQpKkUvQStfKSk7cXkodCxlLGksUixJLG8pfWxldCByPWVbMippK29dLGE9bixoPXM7Zm9yKExFKHQsZSxuLGkpLGVbMipzK29dPnImJkxFKHQsZSxuLHMpO2E8aDspe2ZvcihMRSh0LGUsYSxoKSxhKyssaC0tO2VbMiphK29dPHI7KWErKztmb3IoO2VbMipoK29dPnI7KWgtLX1lWzIqbitvXT09PXI/TEUodCxlLG4saCk6KGgrKyxMRSh0LGUsaCxzKSksaDw9aSYmKG49aCsxKSxpPD1oJiYocz1oLTEpfX1mdW5jdGlvbiBMRSh0LGUsaSxuKXtvTih0LGksbiksb04oZSwyKmksMipuKSxvTihlLDIqaSsxLDIqbisxKX1mdW5jdGlvbiBvTih0LGUsaSl7bGV0IG49dFtlXTt0W2VdPXRbaV0sdFtpXT1ufWZ1bmN0aW9uIFh5KHQsZSxpLG4pe2xldCBzPXQtaSxvPWUtbjtyZXR1cm4gcypzK28qb312YXIgS3ksc04sa0UseUUsJHk9TygoKT0+e0t5PVtJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheV0sc049MSxrRT04LHlFPWNsYXNzIHR7c3RhdGljIGZyb20oZSl7aWYoIShlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiRGF0YSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEFycmF5QnVmZmVyLiIpO2xldFtpLG5dPW5ldyBVaW50OEFycmF5KGUsMCwyKTtpZihpIT09MjE5KXRocm93IG5ldyBFcnJvcigiRGF0YSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW4gYSBLREJ1c2ggZm9ybWF0LiIpO2xldCBzPW4+PjQ7aWYocyE9PXNOKXRocm93IG5ldyBFcnJvcihgR290IHYke3N9IGRhdGEgd2hlbiBleHBlY3RlZCB2JHtzTn0uYCk7bGV0IG89S3lbbiYxNV07aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgYXJyYXkgdHlwZS4iKTtsZXRbcl09bmV3IFVpbnQxNkFycmF5KGUsMiwxKSxbYV09bmV3IFVpbnQzMkFycmF5KGUsNCwxKTtyZXR1cm4gbmV3IHQoYSxyLG8sZSl9Y29uc3RydWN0b3IoZSxpPTY0LG49RmxvYXQ2NEFycmF5LHMpe2lmKGlzTmFOKGUpfHxlPDApdGhyb3cgbmV3IEVycm9yKGBVbnBleHBlY3RlZCBudW1JdGVtcyB2YWx1ZTogJHtlfS5gKTt0aGlzLm51bUl0ZW1zPStlLHRoaXMubm9kZVNpemU9TWF0aC5taW4oTWF0aC5tYXgoK2ksMiksNjU1MzUpLHRoaXMuQXJyYXlUeXBlPW4sdGhpcy5JbmRleEFycmF5VHlwZT1lPDY1NTM2P1VpbnQxNkFycmF5OlVpbnQzMkFycmF5O2xldCBvPUt5LmluZGV4T2YodGhpcy5BcnJheVR5cGUpLHI9ZSoyKnRoaXMuQXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5ULGE9ZSp0aGlzLkluZGV4QXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5ULGg9KDgtYSU4KSU4O2lmKG88MCl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZWQgYXJyYXkgY2xhc3M6ICR7bn0uYCk7cyYmcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyPyh0aGlzLmRhdGE9cyx0aGlzLmlkcz1uZXcgdGhpcy5JbmRleEFycmF5VHlwZSh0aGlzLmRhdGEsa0UsZSksdGhpcy5jb29yZHM9bmV3IHRoaXMuQXJyYXlUeXBlKHRoaXMuZGF0YSxrRSthK2gsZSoyKSx0aGlzLl9wb3M9ZSoyLHRoaXMuX2ZpbmlzaGVkPSEwKToodGhpcy5kYXRhPW5ldyBBcnJheUJ1ZmZlcihrRStyK2EraCksdGhpcy5pZHM9bmV3IHRoaXMuSW5kZXhBcnJheVR5cGUodGhpcy5kYXRhLGtFLGUpLHRoaXMuY29vcmRzPW5ldyB0aGlzLkFycmF5VHlwZSh0aGlzLmRhdGEsa0UrYStoLGUqMiksdGhpcy5fcG9zPTAsdGhpcy5fZmluaXNoZWQ9ITEsbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLDAsMikuc2V0KFsyMTksKHNOPDw0KStvXSksbmV3IFVpbnQxNkFycmF5KHRoaXMuZGF0YSwyLDEpWzBdPWksbmV3IFVpbnQzMkFycmF5KHRoaXMuZGF0YSw0LDEpWzBdPWUpfWFkZChlLGkpe2xldCBuPXRoaXMuX3Bvcz4+MTtyZXR1cm4gdGhpcy5pZHNbbl09bix0aGlzLmNvb3Jkc1t0aGlzLl9wb3MrK109ZSx0aGlzLmNvb3Jkc1t0aGlzLl9wb3MrK109aSxufWZpbmlzaCgpe2xldCBlPXRoaXMuX3Bvcz4+MTtpZihlIT09dGhpcy5udW1JdGVtcyl0aHJvdyBuZXcgRXJyb3IoYEFkZGVkICR7ZX0gaXRlbXMgd2hlbiBleHBlY3RlZCAke3RoaXMubnVtSXRlbXN9LmApO3JldHVybiByTih0aGlzLmlkcyx0aGlzLmNvb3Jkcyx0aGlzLm5vZGVTaXplLDAsdGhpcy5udW1JdGVtcy0xLDApLHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXN9cmFuZ2UoZSxpLG4scyl7aWYoIXRoaXMuX2ZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiRGF0YSBub3QgeWV0IGluZGV4ZWQgLSBjYWxsIGluZGV4LmZpbmlzaCgpLiIpO2xldHtpZHM6byxjb29yZHM6cixub2RlU2l6ZTphfT10aGlzLGg9WzAsby5sZW5ndGgtMSwwXSxBPVtdO2Zvcig7aC5sZW5ndGg7KXtsZXQgZD1oLnBvcCgpfHwwLGY9aC5wb3AoKXx8MCxFPWgucG9wKCl8fDA7aWYoZi1FPD1hKXtmb3IobGV0IEM9RTtDPD1mO0MrKyl7bGV0IE49clsyKkNdLFQ9clsyKkMrMV07Tj49ZSYmTjw9biYmVD49aSYmVDw9cyYmQS5wdXNoKG9bQ10pfWNvbnRpbnVlfWxldCBfPUUrZj4+MSxSPXJbMipfXSxJPXJbMipfKzFdO1I+PWUmJlI8PW4mJkk+PWkmJkk8PXMmJkEucHVzaChvW19dKSwoZD09PTA/ZTw9UjppPD1JKSYmKGgucHVzaChFKSxoLnB1c2goXy0xKSxoLnB1c2goMS1kKSksKGQ9PT0wP24+PVI6cz49SSkmJihoLnB1c2goXysxKSxoLnB1c2goZiksaC5wdXNoKDEtZCkpfXJldHVybiBBfXdpdGhpbihlLGksbil7aWYoIXRoaXMuX2ZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiRGF0YSBub3QgeWV0IGluZGV4ZWQgLSBjYWxsIGluZGV4LmZpbmlzaCgpLiIpO2xldHtpZHM6cyxjb29yZHM6byxub2RlU2l6ZTpyfT10aGlzLGE9WzAscy5sZW5ndGgtMSwwXSxoPVtdLEE9bipuO2Zvcig7YS5sZW5ndGg7KXtsZXQgZD1hLnBvcCgpfHwwLGY9YS5wb3AoKXx8MCxFPWEucG9wKCl8fDA7aWYoZi1FPD1yKXtmb3IobGV0IEM9RTtDPD1mO0MrKylYeShvWzIqQ10sb1syKkMrMV0sZSxpKTw9QSYmaC5wdXNoKHNbQ10pO2NvbnRpbnVlfWxldCBfPUUrZj4+MSxSPW9bMipfXSxJPW9bMipfKzFdO1h5KFIsSSxlLGkpPD1BJiZoLnB1c2goc1tfXSksKGQ9PT0wP2Utbjw9UjppLW48PUkpJiYoYS5wdXNoKEUpLGEucHVzaChfLTEpLGEucHVzaCgxLWQpKSwoZD09PTA/ZStuPj1SOmkrbj49SSkmJihhLnB1c2goXysxKSxhLnB1c2goZiksYS5wdXNoKDEtZCkpfXJldHVybiBofX19KTtmdW5jdGlvbiBTYSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZW5hYmxlZD1aKHQuZW5hYmxlZCwhMSksdGhpcy5fcGl4ZWxSYW5nZT1aKHQucGl4ZWxSYW5nZSw4MCksdGhpcy5fbWluaW11bUNsdXN0ZXJTaXplPVoodC5taW5pbXVtQ2x1c3RlclNpemUsMiksdGhpcy5fY2x1c3RlckJpbGxib2FyZHM9Wih0LmNsdXN0ZXJCaWxsYm9hcmRzLCEwKSx0aGlzLl9jbHVzdGVyTGFiZWxzPVoodC5jbHVzdGVyTGFiZWxzLCEwKSx0aGlzLl9jbHVzdGVyUG9pbnRzPVoodC5jbHVzdGVyUG9pbnRzLCEwKSx0aGlzLl9sYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX3BvaW50Q29sbGVjdGlvbj12b2lkIDAsdGhpcy5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJQb2ludENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHk9e30sdGhpcy5fdW51c2VkTGFiZWxJbmRpY2VzPVtdLHRoaXMuX3VudXNlZEJpbGxib2FyZEluZGljZXM9W10sdGhpcy5fdW51c2VkUG9pbnRJbmRpY2VzPVtdLHRoaXMuX3ByZXZpb3VzQ2x1c3RlcnM9W10sdGhpcy5fcHJldmlvdXNIZWlnaHQ9dm9pZCAwLHRoaXMuX2VuYWJsZWREaXJ0eT0hMSx0aGlzLl9jbHVzdGVyRGlydHk9ITEsdGhpcy5fY2x1c3Rlcj12b2lkIDAsdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fY2x1c3RlckV2ZW50PW5ldyBXZSx0aGlzLnNob3c9Wih0LnNob3csITApfWZ1bmN0aW9uIHR3KHQsZSl7dC54LT1lLHQueS09ZSx0LndpZHRoKz1lKjIsdC5oZWlnaHQrPWUqMn1mdW5jdGlvbiBldyh0LGUsaSxuLHMpe2lmKG0odC5fbGFiZWxDb2xsZWN0aW9uKSYmbi5fY2x1c3RlckxhYmVscz9zPURFLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3godCxlLHMpOm0odC5fYmlsbGJvYXJkQ29sbGVjdGlvbikmJm4uX2NsdXN0ZXJCaWxsYm9hcmRzP3M9dW4uZ2V0U2NyZWVuU3BhY2VCb3VuZGluZ0JveCh0LGUscyk6bSh0Ll9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb24pJiZuLl9jbHVzdGVyUG9pbnRzJiYocz11by5nZXRTY3JlZW5TcGFjZUJvdW5kaW5nQm94KHQsZSxzKSksdHcocyxpKSxuLl9jbHVzdGVyTGFiZWxzJiYhbSh0Ll9sYWJlbENvbGxlY3Rpb24pJiZtKHQuaWQpJiZudyhuLHQuaWQuaWQpJiZtKHQuaWQuX2xhYmVsKSl7bGV0IG89bi5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eVt0LmlkLmlkXS5sYWJlbEluZGV4LHI9bi5fbGFiZWxDb2xsZWN0aW9uLmdldChvKSxhPURFLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3gocixlLHRpdCk7dHcoYSxpKSxzPW1pLnVuaW9uKHMsYSxzKX1yZXR1cm4gc31mdW5jdGlvbiBlaXQodCxlKXtpZih0LmNsdXN0ZXJTaG93PSEwLCFtKHQuX2xhYmVsQ29sbGVjdGlvbikmJm0odC5pZCkmJm53KGUsdC5pZC5pZCkmJm0odC5pZC5fbGFiZWwpKXtsZXQgaT1lLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W3QuaWQuaWRdLmxhYmVsSW5kZXgsbj1lLl9sYWJlbENvbGxlY3Rpb24uZ2V0KGkpO24uY2x1c3RlclNob3c9ITB9fWZ1bmN0aW9uIGl3KHQsZSxpLG4pe2xldCBzPXtiaWxsYm9hcmQ6bi5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24uYWRkKCksbGFiZWw6bi5fY2x1c3RlckxhYmVsQ29sbGVjdGlvbi5hZGQoKSxwb2ludDpuLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uLmFkZCgpfTtzLmJpbGxib2FyZC5zaG93PSExLHMucG9pbnQuc2hvdz0hMSxzLmxhYmVsLnNob3c9ITAscy5sYWJlbC50ZXh0PWUudG9Mb2NhbGVTdHJpbmcoKSxzLmxhYmVsLmlkPWkscy5iaWxsYm9hcmQucG9zaXRpb249cy5sYWJlbC5wb3NpdGlvbj1zLnBvaW50LnBvc2l0aW9uPXQsbi5fY2x1c3RlckV2ZW50LnJhaXNlRXZlbnQoaSxzKX1mdW5jdGlvbiBudyh0LGUpe3JldHVybiBtKHQpJiZtKHQuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbZV0pJiZtKHQuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbZV0ubGFiZWxJbmRleCl9ZnVuY3Rpb24gYU4odCxlLGksbixzKXtpZighbSh0KSlyZXR1cm47bGV0IG89dC5sZW5ndGg7Zm9yKGxldCByPTA7cjxvOysrcil7bGV0IGE9dC5nZXQocik7aWYoYS5jbHVzdGVyU2hvdz0hMSwhYS5zaG93fHxzLl9zY2VuZS5tb2RlPT09eWUuU0NFTkUzRCYmIW4uaXNQb2ludFZpc2libGUoYS5wb3NpdGlvbikpY29udGludWU7bGV0IGg9cy5fY2x1c3RlckxhYmVscyYmbShhLl9sYWJlbENvbGxlY3Rpb24pLEE9cy5fY2x1c3RlckJpbGxib2FyZHMmJm0oYS5pZC5fYmlsbGJvYXJkKSxkPXMuX2NsdXN0ZXJQb2ludHMmJm0oYS5pZC5fcG9pbnQpO2lmKGgmJihkfHxBKSljb250aW51ZTtsZXQgZj1hLmNvbXB1dGVTY3JlZW5TcGFjZVBvc2l0aW9uKGkpO20oZikmJmUucHVzaCh7aW5kZXg6cixjb2xsZWN0aW9uOnQsY2x1c3RlcmVkOiExLGNvb3JkOmZ9KX19ZnVuY3Rpb24gb2l0KHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihtKGUpJiZlPC4wNXx8IXQuZW5hYmxlZClyZXR1cm47bGV0IGk9dC5fc2NlbmUsbj10Ll9sYWJlbENvbGxlY3Rpb24scz10Ll9iaWxsYm9hcmRDb2xsZWN0aW9uLG89dC5fcG9pbnRDb2xsZWN0aW9uO2lmKCFtKG4pJiYhbShzKSYmIW0obyl8fCF0Ll9jbHVzdGVyQmlsbGJvYXJkcyYmIXQuX2NsdXN0ZXJMYWJlbHMmJiF0Ll9jbHVzdGVyUG9pbnRzKXJldHVybjtsZXQgcj10Ll9jbHVzdGVyTGFiZWxDb2xsZWN0aW9uLGE9dC5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24saD10Ll9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uO20ocik/ci5yZW1vdmVBbGwoKTpyPXQuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249bmV3IEtUKHtzY2VuZTppfSksbShhKT9hLnJlbW92ZUFsbCgpOmE9dC5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb249bmV3IHdtKHtzY2VuZTppfSksbShoKT9oLnJlbW92ZUFsbCgpOmg9dC5fY2x1c3RlclBvaW50Q29sbGVjdGlvbj1uZXcgbk47bGV0IEE9dC5fcGl4ZWxSYW5nZSxkPXQuX21pbmltdW1DbHVzdGVyU2l6ZSxmPXQuX3ByZXZpb3VzQ2x1c3RlcnMsRT1bXSxfPXQuX3ByZXZpb3VzSGVpZ2h0LFI9aS5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0LEk9aS5tYXBQcm9qZWN0aW9uLmVsbGlwc29pZCxDPWkuY2FtZXJhLnBvc2l0aW9uV0MsTj1uZXcgZEEoSSxDKSxUPVtdO3QuX2NsdXN0ZXJMYWJlbHMmJmFOKG4sVCxpLE4sdCksdC5fY2x1c3RlckJpbGxib2FyZHMmJmFOKHMsVCxpLE4sdCksdC5fY2x1c3RlclBvaW50cyYmYU4obyxULGksTix0KTtsZXQgRixiLEcsTSxRLFUsayx5LGMsZyxWLEQ7aWYoVC5sZW5ndGg+MCl7bGV0IHc9bmV3IHlFKFQubGVuZ3RoLDY0LFVpbnQzMkFycmF5KTtmb3IobGV0IHg9MDt4PFQubGVuZ3RoOysreCl3LmFkZChUW3hdLmNvb3JkLngsVFt4XS5jb29yZC55KTtpZih3LmZpbmlzaCgpLFI8Xylmb3IoRz1mLmxlbmd0aCxGPTA7RjxHOysrRil7bGV0IHg9ZltGXTtpZighTi5pc1BvaW50VmlzaWJsZSh4LnBvc2l0aW9uKSljb250aW51ZTtsZXQgSD11bi5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24oYXQuSURFTlRJVFkseC5wb3NpdGlvbixsLlpFUk8sbnQuWkVSTyxpKTtpZighbShIKSljb250aW51ZTtsZXQgaj0xLVIvXyxYPXgud2lkdGg9eC53aWR0aCpqLHR0PXguaGVpZ2h0PXguaGVpZ2h0Kmo7WD1NYXRoLm1heChYLHgubWluaW11bVdpZHRoKSx0dD1NYXRoLm1heCh0dCx4Lm1pbmltdW1IZWlnaHQpO2xldCBCPUgueC1YKi41LEl0PUgueS10dCouNSxndD1ILngrWCxZdD1ILnkrdHQ7Zm9yKFE9dy5yYW5nZShCLEl0LGd0LFl0KSxVPVEubGVuZ3RoLGc9MCxjPVtdLGI9MDtiPFU7KytiKWs9UVtiXSx5PVRba10seS5jbHVzdGVyZWR8fCgrK2csVj15LmNvbGxlY3Rpb24sRD15LmluZGV4LGMucHVzaChWLmdldChEKS5pZCkpO2lmKGc+PWQpZm9yKGl3KHgucG9zaXRpb24sZyxjLHQpLEUucHVzaCh4KSxiPTA7YjxVOysrYilUW1FbYl1dLmNsdXN0ZXJlZD0hMH1mb3IoRz1ULmxlbmd0aCxGPTA7RjxHOysrRil7bGV0IHg9VFtGXTtpZih4LmNsdXN0ZXJlZCljb250aW51ZTt4LmNsdXN0ZXJlZD0hMCxWPXguY29sbGVjdGlvbixEPXguaW5kZXg7bGV0IEg9Vi5nZXQoRCk7TT1ldyhILHguY29vcmQsQSx0LGlpdCk7bGV0IGo9bWkuY2xvbmUoTSxuaXQpO1E9dy5yYW5nZShNLngsTS55LE0ueCtNLndpZHRoLE0ueStNLmhlaWdodCksVT1RLmxlbmd0aDtsZXQgWD1sLmNsb25lKEgucG9zaXRpb24pO2ZvcihnPTEsYz1bSC5pZF0sYj0wO2I8VTsrK2IpaWYoaz1RW2JdLHk9VFtrXSwheS5jbHVzdGVyZWQpe2xldCB0dD15LmNvbGxlY3Rpb24uZ2V0KHkuaW5kZXgpLEI9ZXcodHQseS5jb29yZCxBLHQsc2l0KTtsLmFkZCh0dC5wb3NpdGlvbixYLFgpLG1pLnVuaW9uKGosQixqKSwrK2csYy5wdXNoKHR0LmlkKX1pZihnPj1kKXtsZXQgdHQ9bC5tdWx0aXBseUJ5U2NhbGFyKFgsMS9nLFgpO2Zvcihpdyh0dCxnLGMsdCksRS5wdXNoKHtwb3NpdGlvbjp0dCx3aWR0aDpqLndpZHRoLGhlaWdodDpqLmhlaWdodCxtaW5pbXVtV2lkdGg6TS53aWR0aCxtaW5pbXVtSGVpZ2h0Ok0uaGVpZ2h0fSksYj0wO2I8VTsrK2IpVFtRW2JdXS5jbHVzdGVyZWQ9ITB9ZWxzZSBlaXQoSCx0KX19ci5sZW5ndGg9PT0wJiYoci5kZXN0cm95KCksdC5fY2x1c3RlckxhYmVsQ29sbGVjdGlvbj12b2lkIDApLGEubGVuZ3RoPT09MCYmKGEuZGVzdHJveSgpLHQuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uPXZvaWQgMCksaC5sZW5ndGg9PT0wJiYoaC5kZXN0cm95KCksdC5fY2x1c3RlclBvaW50Q29sbGVjdGlvbj12b2lkIDApLHQuX3ByZXZpb3VzQ2x1c3RlcnM9RSx0Ll9wcmV2aW91c0hlaWdodD1SfX1mdW5jdGlvbiBoTih0LGUsaSxuKXtyZXR1cm4gZnVuY3Rpb24ocyl7bGV0IG89dGhpc1t0XTttKHRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHkpfHwodGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eT17fSk7bGV0IHI9dGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eVtzLmlkXTtpZihtKHIpfHwocj10aGlzLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W3MuaWRdPXtiaWxsYm9hcmRJbmRleDp2b2lkIDAsbGFiZWxJbmRleDp2b2lkIDAscG9pbnRJbmRleDp2b2lkIDB9KSxtKG8pJiZtKHJbbl0pKXJldHVybiBvLmdldChyW25dKTttKG8pfHwobz10aGlzW3RdPW5ldyBlKHtzY2VuZTp0aGlzLl9zY2VuZX0pKTtsZXQgYSxoLEE9dGhpc1tpXTtBLmxlbmd0aD4wPyhhPUEuc2hpZnQoKSxoPW8uZ2V0KGEpKTooaD1vLmFkZCgpLGE9by5sZW5ndGgtMSkscltuXT1hO2xldCBkPXRoaXM7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtkLl9jbHVzdGVyRGlydHk9ITB9KSxofX1mdW5jdGlvbiBjTih0LGUpe2xldCBpPXQuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbZV07IW0oaS5iaWxsYm9hcmRJbmRleCkmJiFtKGkubGFiZWxJbmRleCkmJiFtKGkucG9pbnRJbmRleCkmJmRlbGV0ZSB0Ll9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W2VdfWZ1bmN0aW9uIEFOKHQpe2lmKCFtKHQpKXJldHVybjtsZXQgZT10Lmxlbmd0aDtmb3IobGV0IGk9MDtpPGU7KytpKXQuZ2V0KGkpLmNsdXN0ZXJTaG93PSEwfWZ1bmN0aW9uIHJpdCh0KXt0LmVuYWJsZWR8fChtKHQuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24pJiZ0Ll9jbHVzdGVyTGFiZWxDb2xsZWN0aW9uLmRlc3Ryb3koKSxtKHQuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uKSYmdC5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveSgpLG0odC5fY2x1c3RlclBvaW50Q29sbGVjdGlvbikmJnQuX2NsdXN0ZXJQb2ludENvbGxlY3Rpb24uZGVzdHJveSgpLHQuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249dm9pZCAwLHQuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uPXZvaWQgMCx0Ll9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uPXZvaWQgMCxBTih0Ll9sYWJlbENvbGxlY3Rpb24pLEFOKHQuX2JpbGxib2FyZENvbGxlY3Rpb24pLEFOKHQuX3BvaW50Q29sbGVjdGlvbikpfXZhciB0aXQsaWl0LG5pdCxzaXQsc3csb3c9TygoKT0+e0VyKCk7WGUoKTtIdCgpO2J0KCk7bXQoKTtTbSgpO3hpKCk7RmkoKTtzSSgpO0pUKCk7SFQoKTtWeSgpO1hUKCk7enkoKTt1YSgpOyR5KCk7dGl0PW5ldyBtaTtpaXQ9bmV3IG1pLG5pdD1uZXcgbWksc2l0PW5ldyBtaTtTYS5wcm90b3R5cGUuX2luaXRpYWxpemU9ZnVuY3Rpb24odCl7dGhpcy5fc2NlbmU9dDtsZXQgZT1vaXQodGhpcyk7dGhpcy5fY2x1c3Rlcj1lLHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXI9dC5jYW1lcmEuY2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKGUpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhTYS5wcm90b3R5cGUse2VuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZW5hYmxlZERpcnR5PXQhPT10aGlzLl9lbmFibGVkLHRoaXMuX2VuYWJsZWQ9dH19LHBpeGVsUmFuZ2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbFJhbmdlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlckRpcnR5PXRoaXMuX2NsdXN0ZXJEaXJ0eXx8dCE9PXRoaXMuX3BpeGVsUmFuZ2UsdGhpcy5fcGl4ZWxSYW5nZT10fX0sbWluaW11bUNsdXN0ZXJTaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWluaW11bUNsdXN0ZXJTaXplfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlckRpcnR5PXRoaXMuX2NsdXN0ZXJEaXJ0eXx8dCE9PXRoaXMuX21pbmltdW1DbHVzdGVyU2l6ZSx0aGlzLl9taW5pbXVtQ2x1c3RlclNpemU9dH19LGNsdXN0ZXJFdmVudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJFdmVudH19LGNsdXN0ZXJCaWxsYm9hcmRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2x1c3RlckJpbGxib2FyZHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jbHVzdGVyRGlydHk9dGhpcy5fY2x1c3RlckRpcnR5fHx0IT09dGhpcy5fY2x1c3RlckJpbGxib2FyZHMsdGhpcy5fY2x1c3RlckJpbGxib2FyZHM9dH19LGNsdXN0ZXJMYWJlbHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbHVzdGVyTGFiZWxzfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlckRpcnR5PXRoaXMuX2NsdXN0ZXJEaXJ0eXx8dCE9PXRoaXMuX2NsdXN0ZXJMYWJlbHMsdGhpcy5fY2x1c3RlckxhYmVscz10fX0sY2x1c3RlclBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJQb2ludHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jbHVzdGVyRGlydHk9dGhpcy5fY2x1c3RlckRpcnR5fHx0IT09dGhpcy5fY2x1c3RlclBvaW50cyx0aGlzLl9jbHVzdGVyUG9pbnRzPXR9fX0pO1NhLnByb3RvdHlwZS5nZXRMYWJlbD1oTigiX2xhYmVsQ29sbGVjdGlvbiIsS1QsIl91bnVzZWRMYWJlbEluZGljZXMiLCJsYWJlbEluZGV4Iik7U2EucHJvdG90eXBlLnJlbW92ZUxhYmVsPWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHkmJnRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbdC5pZF07aWYoIW0odGhpcy5fbGFiZWxDb2xsZWN0aW9uKXx8IW0oZSl8fCFtKGUubGFiZWxJbmRleCkpcmV0dXJuO2xldCBpPWUubGFiZWxJbmRleDtlLmxhYmVsSW5kZXg9dm9pZCAwLGNOKHRoaXMsdC5pZCk7bGV0IG49dGhpcy5fbGFiZWxDb2xsZWN0aW9uLmdldChpKTtuLnNob3c9ITEsbi50ZXh0PSIiLG4uaWQ9dm9pZCAwLHRoaXMuX3VudXNlZExhYmVsSW5kaWNlcy5wdXNoKGkpLHRoaXMuX2NsdXN0ZXJEaXJ0eT0hMH07U2EucHJvdG90eXBlLmdldEJpbGxib2FyZD1oTigiX2JpbGxib2FyZENvbGxlY3Rpb24iLHdtLCJfdW51c2VkQmlsbGJvYXJkSW5kaWNlcyIsImJpbGxib2FyZEluZGV4Iik7U2EucHJvdG90eXBlLnJlbW92ZUJpbGxib2FyZD1mdW5jdGlvbih0KXtsZXQgZT10aGlzLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5JiZ0aGlzLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W3QuaWRdO2lmKCFtKHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24pfHwhbShlKXx8IW0oZS5iaWxsYm9hcmRJbmRleCkpcmV0dXJuO2xldCBpPWUuYmlsbGJvYXJkSW5kZXg7ZS5iaWxsYm9hcmRJbmRleD12b2lkIDAsY04odGhpcyx0LmlkKTtsZXQgbj10aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLmdldChpKTtuLmlkPXZvaWQgMCxuLnNob3c9ITEsbi5pbWFnZT12b2lkIDAsdGhpcy5fdW51c2VkQmlsbGJvYXJkSW5kaWNlcy5wdXNoKGkpLHRoaXMuX2NsdXN0ZXJEaXJ0eT0hMH07U2EucHJvdG90eXBlLmdldFBvaW50PWhOKCJfcG9pbnRDb2xsZWN0aW9uIixuTiwiX3VudXNlZFBvaW50SW5kaWNlcyIsInBvaW50SW5kZXgiKTtTYS5wcm90b3R5cGUucmVtb3ZlUG9pbnQ9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eSYmdGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eVt0LmlkXTtpZighbSh0aGlzLl9wb2ludENvbGxlY3Rpb24pfHwhbShlKXx8IW0oZS5wb2ludEluZGV4KSlyZXR1cm47bGV0IGk9ZS5wb2ludEluZGV4O2UucG9pbnRJbmRleD12b2lkIDAsY04odGhpcyx0LmlkKTtsZXQgbj10aGlzLl9wb2ludENvbGxlY3Rpb24uZ2V0KGkpO24uc2hvdz0hMSxuLmlkPXZvaWQgMCx0aGlzLl91bnVzZWRQb2ludEluZGljZXMucHVzaChpKSx0aGlzLl9jbHVzdGVyRGlydHk9ITB9O1NhLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuc2hvdylyZXR1cm47bGV0IGU7bSh0aGlzLl9sYWJlbENvbGxlY3Rpb24pJiZ0aGlzLl9sYWJlbENvbGxlY3Rpb24ubGVuZ3RoPjAmJnRoaXMuX2xhYmVsQ29sbGVjdGlvbi5nZXQoMCkuX2dseXBocy5sZW5ndGg9PT0wJiYoZT10LmNvbW1hbmRMaXN0LHQuY29tbWFuZExpc3Q9W10sdGhpcy5fbGFiZWxDb2xsZWN0aW9uLnVwZGF0ZSh0KSx0LmNvbW1hbmRMaXN0PWUpLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbikmJnRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24ubGVuZ3RoPjAmJiFtKHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uZ2V0KDApLndpZHRoKSYmKGU9dC5jb21tYW5kTGlzdCx0LmNvbW1hbmRMaXN0PVtdLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24udXBkYXRlKHQpLHQuY29tbWFuZExpc3Q9ZSksdGhpcy5fZW5hYmxlZERpcnR5JiYodGhpcy5fZW5hYmxlZERpcnR5PSExLHJpdCh0aGlzKSx0aGlzLl9jbHVzdGVyRGlydHk9ITApLHRoaXMuX2NsdXN0ZXJEaXJ0eSYmKHRoaXMuX2NsdXN0ZXJEaXJ0eT0hMSx0aGlzLl9jbHVzdGVyKCkpLG0odGhpcy5fY2x1c3RlckxhYmVsQ29sbGVjdGlvbikmJnRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24udXBkYXRlKHQpLG0odGhpcy5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24pJiZ0aGlzLl9jbHVzdGVyQmlsbGJvYXJkQ29sbGVjdGlvbi51cGRhdGUodCksbSh0aGlzLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uKSYmdGhpcy5fY2x1c3RlclBvaW50Q29sbGVjdGlvbi51cGRhdGUodCksbSh0aGlzLl9sYWJlbENvbGxlY3Rpb24pJiZ0aGlzLl9sYWJlbENvbGxlY3Rpb24udXBkYXRlKHQpLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbikmJnRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24udXBkYXRlKHQpLG0odGhpcy5fcG9pbnRDb2xsZWN0aW9uKSYmdGhpcy5fcG9pbnRDb2xsZWN0aW9uLnVwZGF0ZSh0KX07U2EucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9sYWJlbENvbGxlY3Rpb249dGhpcy5fbGFiZWxDb2xsZWN0aW9uJiZ0aGlzLl9sYWJlbENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb249dGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbiYmdGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5fcG9pbnRDb2xsZWN0aW9uPXRoaXMuX3BvaW50Q29sbGVjdGlvbiYmdGhpcy5fcG9pbnRDb2xsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLl9jbHVzdGVyTGFiZWxDb2xsZWN0aW9uPXRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24mJnRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uPXRoaXMuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uJiZ0aGlzLl9jbHVzdGVyQmlsbGJvYXJkQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5fY2x1c3RlclBvaW50Q29sbGVjdGlvbj10aGlzLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uJiZ0aGlzLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uLmRlc3Ryb3koKSxtKHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXIpJiYodGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcigpLHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXI9dm9pZCAwKSx0aGlzLl9sYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX3BvaW50Q29sbGVjdGlvbj12b2lkIDAsdGhpcy5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJQb2ludENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHk9dm9pZCAwLHRoaXMuX3VudXNlZExhYmVsSW5kaWNlcz1bXSx0aGlzLl91bnVzZWRCaWxsYm9hcmRJbmRpY2VzPVtdLHRoaXMuX3VudXNlZFBvaW50SW5kaWNlcz1bXSx0aGlzLl9wcmV2aW91c0NsdXN0ZXJzPVtdLHRoaXMuX3ByZXZpb3VzSGVpZ2h0PXZvaWQgMCx0aGlzLl9lbmFibGVkRGlydHk9ITEsdGhpcy5fcGl4ZWxSYW5nZURpcnR5PSExLHRoaXMuX21pbmltdW1DbHVzdGVyU2l6ZURpcnR5PSExfTtzdz1TYX0pO2Z1bmN0aW9uIEdsKCl7dGhpcy5fYXJyYXk9W10sdGhpcy5faGFzaD17fX12YXIgd0Uscnc9TygoKT0+e210KCk7VnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhHbC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5Lmxlbmd0aH19LHZhbHVlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fX19KTtHbC5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7aWYodHlwZW9mIHQhPSJzdHJpbmciJiZ0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImtleSBpcyByZXF1aXJlZCB0byBiZSBhIHN0cmluZyBvciBudW1iZXIuIik7cmV0dXJuIG0odGhpcy5faGFzaFt0XSl9O0dsLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgdCE9InN0cmluZyImJnR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgia2V5IGlzIHJlcXVpcmVkIHRvIGJlIGEgc3RyaW5nIG9yIG51bWJlci4iKTtsZXQgaT10aGlzLl9oYXNoW3RdO2UhPT1pJiYodGhpcy5yZW1vdmUodCksdGhpcy5faGFzaFt0XT1lLHRoaXMuX2FycmF5LnB1c2goZSkpfTtHbC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIiYmdHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBZKCJrZXkgaXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcgb3IgbnVtYmVyLiIpO3JldHVybiB0aGlzLl9oYXNoW3RdfTtHbC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKG0odCkmJnR5cGVvZiB0IT0ic3RyaW5nIiYmdHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBZKCJrZXkgaXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcgb3IgbnVtYmVyLiIpO2xldCBlPXRoaXMuX2hhc2hbdF0saT1tKGUpO2lmKGkpe2xldCBuPXRoaXMuX2FycmF5O24uc3BsaWNlKG4uaW5kZXhPZihlKSwxKSxkZWxldGUgdGhpcy5faGFzaFt0XX1yZXR1cm4gaX07R2wucHJvdG90eXBlLnJlbW92ZUFsbD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2FycmF5O3QubGVuZ3RoPjAmJih0aGlzLl9oYXNoPXt9LHQubGVuZ3RoPTApfTt3RT1HbH0pO2Z1bmN0aW9uIERuKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLnN0YXJ0PW0odC5zdGFydCk/WmUuY2xvbmUodC5zdGFydCk6bmV3IFplLHRoaXMuc3RvcD1tKHQuc3RvcCk/WmUuY2xvbmUodC5zdG9wKTpuZXcgWmUsdGhpcy5kYXRhPXQuZGF0YSx0aGlzLmlzU3RhcnRJbmNsdWRlZD1aKHQuaXNTdGFydEluY2x1ZGVkLCEwKSx0aGlzLmlzU3RvcEluY2x1ZGVkPVoodC5pc1N0b3BJbmNsdWRlZCwhMCl9dmFyIHhtLE5JLGxOPU8oKCk9PnthZSgpO2J0KCk7bXQoKTtWdCgpO1ZyKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRG4ucHJvdG90eXBlLHtpc0VtcHR5OntnZXQ6ZnVuY3Rpb24oKXtsZXQgdD1aZS5jb21wYXJlKHRoaXMuc3RvcCx0aGlzLnN0YXJ0KTtyZXR1cm4gdDwwfHx0PT09MCYmKCF0aGlzLmlzU3RhcnRJbmNsdWRlZHx8IXRoaXMuaXNTdG9wSW5jbHVkZWQpfX19KTt4bT17c3RhcnQ6dm9pZCAwLHN0b3A6dm9pZCAwLGlzU3RhcnRJbmNsdWRlZDp2b2lkIDAsaXNTdG9wSW5jbHVkZWQ6dm9pZCAwLGRhdGE6dm9pZCAwfTtEbi5mcm9tSXNvODYwMT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkscC50eXBlT2Yuc3RyaW5nKCJvcHRpb25zLmlzbzg2MDEiLHQuaXNvODYwMSk7bGV0IGk9dC5pc284NjAxLnNwbGl0KCIvIik7aWYoaS5sZW5ndGghPT0yKXRocm93IG5ldyBZKCJvcHRpb25zLmlzbzg2MDEgaXMgYW4gaW52YWxpZCBJU08gODYwMSBpbnRlcnZhbC4iKTtsZXQgbj1aZS5mcm9tSXNvODYwMShpWzBdKSxzPVplLmZyb21Jc284NjAxKGlbMV0pLG89Wih0LmlzU3RhcnRJbmNsdWRlZCwhMCkscj1aKHQuaXNTdG9wSW5jbHVkZWQsITApLGE9dC5kYXRhO3JldHVybiBtKGUpPyhlLnN0YXJ0PW4sZS5zdG9wPXMsZS5pc1N0YXJ0SW5jbHVkZWQ9byxlLmlzU3RvcEluY2x1ZGVkPXIsZS5kYXRhPWEsZSk6KHhtLnN0YXJ0PW4seG0uc3RvcD1zLHhtLmlzU3RhcnRJbmNsdWRlZD1vLHhtLmlzU3RvcEluY2x1ZGVkPXIseG0uZGF0YT1hLG5ldyBEbih4bSkpfTtEbi50b0lzbzg2MDE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ0aW1lSW50ZXJ2YWwiLHQpLGAke1plLnRvSXNvODYwMSh0LnN0YXJ0LGUpfS8ke1plLnRvSXNvODYwMSh0LnN0b3AsZSl9YH07RG4uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLnN0YXJ0PXQuc3RhcnQsZS5zdG9wPXQuc3RvcCxlLmlzU3RhcnRJbmNsdWRlZD10LmlzU3RhcnRJbmNsdWRlZCxlLmlzU3RvcEluY2x1ZGVkPXQuaXNTdG9wSW5jbHVkZWQsZS5kYXRhPXQuZGF0YSxlKTpuZXcgRG4odCl9O0RuLmVxdWFscz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiYodC5pc0VtcHR5JiZlLmlzRW1wdHl8fHQuaXNTdGFydEluY2x1ZGVkPT09ZS5pc1N0YXJ0SW5jbHVkZWQmJnQuaXNTdG9wSW5jbHVkZWQ9PT1lLmlzU3RvcEluY2x1ZGVkJiZaZS5lcXVhbHModC5zdGFydCxlLnN0YXJ0KSYmWmUuZXF1YWxzKHQuc3RvcCxlLnN0b3ApJiYodC5kYXRhPT09ZS5kYXRhfHxtKGkpJiZpKHQuZGF0YSxlLmRhdGEpKSl9O0RuLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIGk9WihpLDApLHQ9PT1lfHxtKHQpJiZtKGUpJiYodC5pc0VtcHR5JiZlLmlzRW1wdHl8fHQuaXNTdGFydEluY2x1ZGVkPT09ZS5pc1N0YXJ0SW5jbHVkZWQmJnQuaXNTdG9wSW5jbHVkZWQ9PT1lLmlzU3RvcEluY2x1ZGVkJiZaZS5lcXVhbHNFcHNpbG9uKHQuc3RhcnQsZS5zdGFydCxpKSYmWmUuZXF1YWxzRXBzaWxvbih0LnN0b3AsZS5zdG9wLGkpJiYodC5kYXRhPT09ZS5kYXRhfHxtKG4pJiZuKHQuZGF0YSxlLmRhdGEpKSl9O0RuLmludGVyc2VjdD1mdW5jdGlvbih0LGUsaSxuKXtpZihwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLCFtKGUpKXJldHVybiBEbi5jbG9uZShEbi5FTVBUWSxpKTtsZXQgcz10LnN0YXJ0LG89dC5zdG9wLHI9ZS5zdGFydCxhPWUuc3RvcCxoPVplLmdyZWF0ZXJUaGFuT3JFcXVhbHMocixzKSYmWmUuZ3JlYXRlclRoYW5PckVxdWFscyhvLHIpLEE9IWgmJlplLmxlc3NUaGFuT3JFcXVhbHMocixzKSYmWmUubGVzc1RoYW5PckVxdWFscyhzLGEpO2lmKCFoJiYhQSlyZXR1cm4gRG4uY2xvbmUoRG4uRU1QVFksaSk7bGV0IGQ9dC5pc1N0YXJ0SW5jbHVkZWQsZj10LmlzU3RvcEluY2x1ZGVkLEU9ZS5pc1N0YXJ0SW5jbHVkZWQsXz1lLmlzU3RvcEluY2x1ZGVkLFI9WmUubGVzc1RoYW4obyxhKTtyZXR1cm4gbShpKXx8KGk9bmV3IERuKSxpLnN0YXJ0PWg/cjpzLGkuaXNTdGFydEluY2x1ZGVkPWQmJkV8fCFaZS5lcXVhbHMocixzKSYmKGgmJkV8fEEmJmQpLGkuc3RvcD1SP286YSxpLmlzU3RvcEluY2x1ZGVkPVI/ZjpmJiZffHwhWmUuZXF1YWxzKGEsbykmJl8saS5kYXRhPW0obik/bih0LmRhdGEsZS5kYXRhKTp0LmRhdGEsaX07RG4uY29udGFpbnM9ZnVuY3Rpb24odCxlKXtpZihwLnR5cGVPZi5vYmplY3QoInRpbWVJbnRlcnZhbCIsdCkscC50eXBlT2Yub2JqZWN0KCJqdWxpYW5EYXRlIixlKSx0LmlzRW1wdHkpcmV0dXJuITE7bGV0IGk9WmUuY29tcGFyZSh0LnN0YXJ0LGUpO2lmKGk9PT0wKXJldHVybiB0LmlzU3RhcnRJbmNsdWRlZDtsZXQgbj1aZS5jb21wYXJlKGUsdC5zdG9wKTtyZXR1cm4gbj09PTA/dC5pc1N0b3BJbmNsdWRlZDppPDAmJm48MH07RG4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBEbi5jbG9uZSh0aGlzLHQpfTtEbi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIERuLmVxdWFscyh0aGlzLHQsZSl9O0RuLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gRG4uZXF1YWxzRXBzaWxvbih0aGlzLHQsZSxpKX07RG4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIERuLnRvSXNvODYwMSh0aGlzKX07RG4uRU1QVFk9T2JqZWN0LmZyZWV6ZShuZXcgRG4oe3N0YXJ0Om5ldyBaZSxzdG9wOm5ldyBaZSxpc1N0YXJ0SW5jbHVkZWQ6ITEsaXNTdG9wSW5jbHVkZWQ6ITF9KSk7Tkk9RG59KTt2YXIgYXcsQXcsYWl0LEFpdCxkaCxodz1PKCgpPT57VnIoKTtsTigpO2F3PU9iamVjdC5mcmVlemUoWmUuZnJvbUlzbzg2MDEoIjAwMDAtMDEtMDFUMDA6MDA6MDBaIikpLEF3PU9iamVjdC5mcmVlemUoWmUuZnJvbUlzbzg2MDEoIjk5OTktMTItMzFUMjQ6MDA6MDBaIikpLGFpdD1PYmplY3QuZnJlZXplKG5ldyBOSSh7c3RhcnQ6YXcsc3RvcDpBd30pKSxBaXQ9e01JTklNVU1fVkFMVUU6YXcsTUFYSU1VTV9WQUxVRTpBdyxNQVhJTVVNX0lOVEVSVkFMOmFpdH0sZGg9QWl0fSk7ZnVuY3Rpb24gSWModCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuX2VsbGlwc29pZD1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSx0aGlzLl9yZWN0YW5nbGU9Wih0LnJlY3RhbmdsZSxYdC5NQVhfVkFMVUUpLHRoaXMuX3Byb2plY3Rpb249bmV3IE9zKHRoaXMuX2VsbGlwc29pZCksdGhpcy5fbnVtYmVyT2ZMZXZlbFplcm9UaWxlc1g9Wih0Lm51bWJlck9mTGV2ZWxaZXJvVGlsZXNYLDIpLHRoaXMuX251bWJlck9mTGV2ZWxaZXJvVGlsZXNZPVoodC5udW1iZXJPZkxldmVsWmVyb1RpbGVzWSwxKX12YXIgY3csbHc9TygoKT0+e1hlKCk7YWUoKTtidCgpO210KCk7VmUoKTt6QSgpO19lKCk7cG4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhJYy5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LHJlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlY3RhbmdsZX19LHByb2plY3Rpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9qZWN0aW9ufX19KTtJYy5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZYVGlsZXNBdExldmVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9udW1iZXJPZkxldmVsWmVyb1RpbGVzWDw8dH07SWMucHJvdG90eXBlLmdldE51bWJlck9mWVRpbGVzQXRMZXZlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbnVtYmVyT2ZMZXZlbFplcm9UaWxlc1k8PHR9O0ljLnByb3RvdHlwZS5yZWN0YW5nbGVUb05hdGl2ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgicmVjdGFuZ2xlIix0KTtsZXQgaT1MLnRvRGVncmVlcyh0Lndlc3QpLG49TC50b0RlZ3JlZXModC5zb3V0aCkscz1MLnRvRGVncmVlcyh0LmVhc3QpLG89TC50b0RlZ3JlZXModC5ub3J0aCk7cmV0dXJuIG0oZSk/KGUud2VzdD1pLGUuc291dGg9bixlLmVhc3Q9cyxlLm5vcnRoPW8sZSk6bmV3IFh0KGksbixzLG8pfTtJYy5wcm90b3R5cGUudGlsZVhZVG9OYXRpdmVSZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9dGhpcy50aWxlWFlUb1JlY3RhbmdsZSh0LGUsaSxuKTtyZXR1cm4gcy53ZXN0PUwudG9EZWdyZWVzKHMud2VzdCkscy5zb3V0aD1MLnRvRGVncmVlcyhzLnNvdXRoKSxzLmVhc3Q9TC50b0RlZ3JlZXMocy5lYXN0KSxzLm5vcnRoPUwudG9EZWdyZWVzKHMubm9ydGgpLHN9O0ljLnByb3RvdHlwZS50aWxlWFlUb1JlY3RhbmdsZT1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz10aGlzLl9yZWN0YW5nbGUsbz10aGlzLmdldE51bWJlck9mWFRpbGVzQXRMZXZlbChpKSxyPXRoaXMuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsKGkpLGE9cy53aWR0aC9vLGg9dCphK3Mud2VzdCxBPSh0KzEpKmErcy53ZXN0LGQ9cy5oZWlnaHQvcixmPXMubm9ydGgtZSpkLEU9cy5ub3J0aC0oZSsxKSpkO3JldHVybiBtKG4pfHwobj1uZXcgWHQoaCxFLEEsZikpLG4ud2VzdD1oLG4uc291dGg9RSxuLmVhc3Q9QSxuLm5vcnRoPWYsbn07SWMucHJvdG90eXBlLnBvc2l0aW9uVG9UaWxlWFk9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXRoaXMuX3JlY3RhbmdsZTtpZighWHQuY29udGFpbnMobix0KSlyZXR1cm47bGV0IHM9dGhpcy5nZXROdW1iZXJPZlhUaWxlc0F0TGV2ZWwoZSksbz10aGlzLmdldE51bWJlck9mWVRpbGVzQXRMZXZlbChlKSxyPW4ud2lkdGgvcyxhPW4uaGVpZ2h0L28saD10LmxvbmdpdHVkZTtuLmVhc3Q8bi53ZXN0JiYoaCs9TC5UV09fUEkpO2xldCBBPShoLW4ud2VzdCkvcnwwO0E+PXMmJihBPXMtMSk7bGV0IGQ9KG4ubm9ydGgtdC5sYXRpdHVkZSkvYXwwO3JldHVybiBkPj1vJiYoZD1vLTEpLG0oaSk/KGkueD1BLGkueT1kLGkpOm5ldyBudChBLGQpfTtjdz1JY30pO2Z1bmN0aW9uIF93KHQpe3V0LmZyb21SYWRpYW5zKHQuZWFzdCx0Lm5vcnRoLDAseEVbMF0pLHV0LmZyb21SYWRpYW5zKHQud2VzdCx0Lm5vcnRoLDAseEVbMV0pLHV0LmZyb21SYWRpYW5zKHQuZWFzdCx0LnNvdXRoLDAseEVbMl0pLHV0LmZyb21SYWRpYW5zKHQud2VzdCx0LnNvdXRoLDAseEVbM10pO2xldCBlPTAsaT0wLG49MCxzPTAsbz1Lbi5fdGVycmFpbkhlaWdodHNNYXhMZXZlbCxyO2ZvcihyPTA7cjw9bzsrK3Ipe2xldCBhPSExO2ZvcihsZXQgaD0wO2g8NDsrK2gpe2xldCBBPXhFW2hdO2lmKGNpdC5wb3NpdGlvblRvVGlsZVhZKEEscixQRSksaD09PTApbj1QRS54LHM9UEUueTtlbHNlIGlmKG4hPT1QRS54fHxzIT09UEUueSl7YT0hMDticmVha319aWYoYSlicmVhaztlPW4saT1zfWlmKHIhPT0wKXJldHVybnt4OmUseTppLGxldmVsOnI+bz9vOnItMX19dmFyIGR3LG13LGZ3LGROLGhpdCxFdyxjaXQseEUsUEUsS24sRG8sSkU9TygoKT0+e19pKCk7UFooKTtYZSgpO0h0KCk7cmkoKTthZSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7bHcoKTtwbigpO0lhKCk7eVooKTtkdz1uZXcgbCxtdz1uZXcgbCxmdz1uZXcgdXQsZE49bmV3IGwsaGl0PW5ldyBsLEV3PW5ldyBOdCxjaXQ9bmV3IGN3LHhFPVtuZXcgdXQsbmV3IHV0LG5ldyB1dCxuZXcgdXRdLFBFPW5ldyBudCxLbj17fTtLbi5pbml0aWFsaXplPWZ1bmN0aW9uKCl7bGV0IHQ9S24uX2luaXRQcm9taXNlO3JldHVybiBtKHQpfHwodD10bi5mZXRjaEpzb24odGgoIkFzc2V0cy9hcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmpzb24iKSkudGhlbihmdW5jdGlvbihlKXtLbi5fdGVycmFpbkhlaWdodHM9ZX0pLEtuLl9pbml0UHJvbWlzZT10KSx0fTtLbi5nZXRNaW5pbXVtTWF4aW11bUhlaWdodHM9ZnVuY3Rpb24odCxlKXtpZihwLmRlZmluZWQoInJlY3RhbmdsZSIsdCksIW0oS24uX3RlcnJhaW5IZWlnaHRzKSl0aHJvdyBuZXcgWSgiWW91IG11c3QgY2FsbCBBcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24iKTtlPVooZSxvdC5XR1M4NCk7bGV0IGk9X3codCksbj1Lbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHQscz1Lbi5fZGVmYXVsdE1heFRlcnJhaW5IZWlnaHQ7aWYobShpKSl7bGV0IG89YCR7aS5sZXZlbH0tJHtpLnh9LSR7aS55fWAscj1Lbi5fdGVycmFpbkhlaWdodHNbb107bShyKSYmKG49clswXSxzPXJbMV0pLGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oWHQubm9ydGhlYXN0KHQsZncpLGR3KSxlLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFh0LnNvdXRod2VzdCh0LGZ3KSxtdyksbC5taWRwb2ludChtdyxkdyxkTik7bGV0IGE9ZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGROLGhpdCk7aWYobShhKSl7bGV0IGg9bC5kaXN0YW5jZShkTixhKTtuPU1hdGgubWluKG4sLWgpfWVsc2Ugbj1Lbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHR9cmV0dXJuIG49TWF0aC5tYXgoS24uX2RlZmF1bHRNaW5UZXJyYWluSGVpZ2h0LG4pLHttaW5pbXVtVGVycmFpbkhlaWdodDpuLG1heGltdW1UZXJyYWluSGVpZ2h0OnN9fTtLbi5nZXRCb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUpe2lmKHAuZGVmaW5lZCgicmVjdGFuZ2xlIix0KSwhbShLbi5fdGVycmFpbkhlaWdodHMpKXRocm93IG5ldyBZKCJZb3UgbXVzdCBjYWxsIEFwcHJveGltYXRlVGVycmFpbkhlaWdodHMuaW5pdGlhbGl6ZSBhbmQgd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgdXNpbmcgdGhpcyBmdW5jdGlvbiIpO2U9WihlLG90LldHUzg0KTtsZXQgaT1fdyh0KSxuPUtuLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodDtpZihtKGkpKXtsZXQgbz1gJHtpLmxldmVsfS0ke2kueH0tJHtpLnl9YCxyPUtuLl90ZXJyYWluSGVpZ2h0c1tvXTttKHIpJiYobj1yWzFdKX1sZXQgcz1OdC5mcm9tUmVjdGFuZ2xlM0QodCxlLDApO3JldHVybiBOdC5mcm9tUmVjdGFuZ2xlM0QodCxlLG4sRXcpLE50LnVuaW9uKHMsRXcscyl9O0tuLl90ZXJyYWluSGVpZ2h0c01heExldmVsPTY7S24uX2RlZmF1bHRNYXhUZXJyYWluSGVpZ2h0PTllMztLbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHQ9LTFlNTtLbi5fdGVycmFpbkhlaWdodHM9TFo/TFo6dm9pZCAwO0tuLl9pbml0UHJvbWlzZT1MWj9uZXcgUHJvbWlzZShmdW5jdGlvbih0KXt0KCl9KTp2b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoS24se2luaXRpYWxpemVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbShLbi5fdGVycmFpbkhlaWdodHMpfX19KTtEbz1Lbn0pO2Z1bmN0aW9uIGxpdCh0KXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksIW0odC5nZW9tZXRyeSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7dGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXMubW9kZWxNYXRyaXg9YXQuY2xvbmUoWih0Lm1vZGVsTWF0cml4LGF0LklERU5USVRZKSksdGhpcy5pZD10LmlkLHRoaXMucGlja1ByaW1pdGl2ZT10LnBpY2tQcmltaXRpdmUsdGhpcy5hdHRyaWJ1dGVzPVoodC5hdHRyaWJ1dGVzLHt9KSx0aGlzLndlc3RIZW1pc3BoZXJlR2VvbWV0cnk9dm9pZCAwLHRoaXMuZWFzdEhlbWlzcGhlcmVHZW9tZXRyeT12b2lkIDB9dmFyIExuLHVBPU8oKCk9PntidCgpO210KCk7VnQoKTtGaSgpO0xuPWxpdH0pO2Z1bmN0aW9uIGRpdCh0KXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksIW0odC5jb21wb25lbnREYXRhdHlwZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuY29tcG9uZW50RGF0YXR5cGUgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5jb21wb25lbnRzUGVyQXR0cmlidXRlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIGlzIHJlcXVpcmVkLiIpO2lmKHQuY29tcG9uZW50c1BlckF0dHJpYnV0ZTwxfHx0LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU+NCl0aHJvdyBuZXcgWSgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0LiIpO2lmKCFtKHQudmFsdWUpKXRocm93IG5ldyBZKCJvcHRpb25zLnZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuY29tcG9uZW50RGF0YXR5cGU9dC5jb21wb25lbnREYXRhdHlwZSx0aGlzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU9dC5jb21wb25lbnRzUGVyQXR0cmlidXRlLHRoaXMubm9ybWFsaXplPVoodC5ub3JtYWxpemUsITEpLHRoaXMudmFsdWU9dC52YWx1ZX12YXIgWnIsbU49TygoKT0+e2J0KCk7bXQoKTtWdCgpO1pyPWRpdH0pO3ZhciBtaXQsdGksQmw9TygoKT0+e21pdD17Tk9ORTowLEdFT0RFU0lDOjEsUkhVTUI6Mn0sdGk9T2JqZWN0LmZyZWV6ZShtaXQpfSk7ZnVuY3Rpb24gZml0KHQsZSxpLG4pe2lmKHAuZGVmaW5lZCgiZXF1YWxzRXBzaWxvbiIsZSksIW0odCkpcmV0dXJuO2k9WihpLCExKTtsZXQgcz1tKG4pLG89dC5sZW5ndGg7aWYobzwyKXJldHVybiB0O2xldCByLGE9dFswXSxoLEEsZD0wLGY9LTE7Zm9yKHI9MTtyPG87KytyKWg9dFtyXSxlKGEsaCxSdyk/KG0oQSl8fChBPXQuc2xpY2UoMCxyKSxkPXItMSxmPTApLHMmJm4ucHVzaChyKSk6KG0oQSkmJihBLnB1c2goaCksZD1yLHMmJihmPW4ubGVuZ3RoKSksYT1oKTtyZXR1cm4gaSYmZSh0WzBdLHRbby0xXSxSdykmJihzJiYobShBKT9uLnNwbGljZShmLDAsZCk6bi5wdXNoKG8tMSkpLG0oQSk/QS5sZW5ndGgtPTE6QT10LnNsaWNlKDAsLTEpKSxtKEEpP0E6dH12YXIgUncsWG4sT2E9TygoKT0+e2FlKCk7YnQoKTttdCgpO19lKCk7Unc9TC5FUFNJTE9OMTA7WG49Zml0fSk7ZnVuY3Rpb24gRWl0KHQpe2xldCBlPXQuX3VTcXVhcmVkLGk9dC5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsbj10Ll9lbGxpcHNvaWQubWluaW11bVJhZGl1cyxzPShpLW4pL2ksbz1NYXRoLmNvcyh0Ll9zdGFydEhlYWRpbmcpLHI9TWF0aC5zaW4odC5fc3RhcnRIZWFkaW5nKSxhPSgxLXMpKk1hdGgudGFuKHQuX3N0YXJ0LmxhdGl0dWRlKSxoPTEvTWF0aC5zcXJ0KDErYSphKSxBPWgqYSxkPU1hdGguYXRhbjIoYSxvKSxmPWgqcixFPWYqZixfPTEtRSxSPU1hdGguc3FydChfKSxJPWUvNCxDPUkqSSxOPUMqSSxUPUMqQyxGPTErSS0zKkMvNCs1Kk4vNC0xNzUqVC82NCxiPTEtSSsxNSpDLzgtMzUqTi84LEc9MS0zKkkrMzUqQy80LE09MS01KkksUT1GKmQtYipNYXRoLnNpbigyKmQpKkkvMi1HKk1hdGguc2luKDQqZCkqQy8xNi1NKk1hdGguc2luKDYqZCkqTi80OC1NYXRoLnNpbig4KmQpKjUqVC81MTIsVT10Ll9jb25zdGFudHM7VS5hPWksVS5iPW4sVS5mPXMsVS5jb3NpbmVIZWFkaW5nPW8sVS5zaW5lSGVhZGluZz1yLFUudGFuVT1hLFUuY29zaW5lVT1oLFUuc2luZVU9QSxVLnNpZ21hPWQsVS5zaW5lQWxwaGE9ZixVLnNpbmVTcXVhcmVkQWxwaGE9RSxVLmNvc2luZVNxdWFyZWRBbHBoYT1fLFUuY29zaW5lQWxwaGE9UixVLnUyT3ZlcjQ9SSxVLnU0T3ZlcjE2PUMsVS51Nk92ZXI2ND1OLFUudThPdmVyMjU2PVQsVS5hMD1GLFUuYTE9YixVLmEyPUcsVS5hMz1NLFUuZGlzdGFuY2VSYXRpbz1RfWZ1bmN0aW9uIF9pdCh0LGUpe3JldHVybiB0KmUqKDQrdCooNC0zKmUpKS8xNn1mdW5jdGlvbiBadyh0LGUsaSxuLHMsbyxyKXtsZXQgYT1faXQodCxpKTtyZXR1cm4oMS1hKSp0KmUqKG4rYSpzKihyK2EqbyooMipyKnItMSkpKX1mdW5jdGlvbiBSaXQodCxlLGksbixzLG8scil7bGV0IGE9KGUtaSkvZSxoPW8tbixBPU1hdGguYXRhbigoMS1hKSpNYXRoLnRhbihzKSksZD1NYXRoLmF0YW4oKDEtYSkqTWF0aC50YW4ocikpLGY9TWF0aC5jb3MoQSksRT1NYXRoLnNpbihBKSxfPU1hdGguY29zKGQpLFI9TWF0aC5zaW4oZCksST1mKl8sQz1mKlIsTj1FKlIsVD1FKl8sRj1oLGI9TC5UV09fUEksRz1NYXRoLmNvcyhGKSxNPU1hdGguc2luKEYpLFEsVSxrLHksYztkb3tHPU1hdGguY29zKEYpLE09TWF0aC5zaW4oRik7bGV0IHR0PUMtVCpHO2s9TWF0aC5zcXJ0KF8qXypNKk0rdHQqdHQpLFU9TitJKkcsUT1NYXRoLmF0YW4yKGssVSk7bGV0IEI7az09PTA/KEI9MCx5PTEpOihCPUkqTS9rLHk9MS1CKkIpLGI9RixjPVUtMipOL3ksaXNGaW5pdGUoYyl8fChjPTApLEY9aCtadyhhLEIseSxRLGssVSxjKX13aGlsZShNYXRoLmFicyhGLWIpPkwuRVBTSUxPTjEyKTtsZXQgZz15KihlKmUtaSppKS8oaSppKSxWPTErZyooNDA5NitnKihnKigzMjAtMTc1KmcpLTc2OCkpLzE2Mzg0LEQ9ZyooMjU2K2cqKGcqKDc0LTQ3KmcpLTEyOCkpLzEwMjQsdz1jKmMseD1EKmsqKGMrRCooVSooMip3LTEpLUQqYyooNCprKmstMykqKDQqdy0zKS82KS80KSxIPWkqViooUS14KSxqPU1hdGguYXRhbjIoXypNLEMtVCpHKSxYPU1hdGguYXRhbjIoZipNLEMqRy1UKTt0Ll9kaXN0YW5jZT1ILHQuX3N0YXJ0SGVhZGluZz1qLHQuX2VuZEhlYWRpbmc9WCx0Ll91U3F1YXJlZD1nfWZ1bmN0aW9uIEl3KHQsZSxpLG4pe2xldCBzPWwubm9ybWFsaXplKG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZSxmTiksWml0KSxvPWwubm9ybWFsaXplKG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaSxmTiksZk4pO3AudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ2YWx1ZSIsTWF0aC5hYnMoTWF0aC5hYnMobC5hbmdsZUJldHdlZW4ocyxvKSktTWF0aC5QSSksLjAxMjUpLFJpdCh0LG4ubWF4aW11bVJhZGl1cyxuLm1pbmltdW1SYWRpdXMsZS5sb25naXR1ZGUsZS5sYXRpdHVkZSxpLmxvbmdpdHVkZSxpLmxhdGl0dWRlKSx0Ll9zdGFydD11dC5jbG9uZShlLHQuX3N0YXJ0KSx0Ll9lbmQ9dXQuY2xvbmUoaSx0Ll9lbmQpLHQuX3N0YXJ0LmhlaWdodD0wLHQuX2VuZC5oZWlnaHQ9MCxFaXQodCl9ZnVuY3Rpb24gakUodCxlLGkpe2xldCBuPVooaSxvdC5XR1M4NCk7dGhpcy5fZWxsaXBzb2lkPW4sdGhpcy5fc3RhcnQ9bmV3IHV0LHRoaXMuX2VuZD1uZXcgdXQsdGhpcy5fY29uc3RhbnRzPXt9LHRoaXMuX3N0YXJ0SGVhZGluZz12b2lkIDAsdGhpcy5fZW5kSGVhZGluZz12b2lkIDAsdGhpcy5fZGlzdGFuY2U9dm9pZCAwLHRoaXMuX3VTcXVhcmVkPXZvaWQgMCxtKHQpJiZtKGUpJiZJdyh0aGlzLHQsZSxuKX12YXIgWml0LGZOLGJJLEVOPU8oKCk9PntIdCgpO3JpKCk7YWUoKTtidCgpO210KCk7VmUoKTtfZSgpO1ppdD1uZXcgbCxmTj1uZXcgbDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqRS5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LHN1cmZhY2VEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKSx0aGlzLl9kaXN0YW5jZX19LHN0YXJ0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhcnR9fSxlbmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmR9fSxzdGFydEhlYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiBwLmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5fc3RhcnRIZWFkaW5nfX0sZW5kSGVhZGluZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKSx0aGlzLl9lbmRIZWFkaW5nfX19KTtqRS5wcm90b3R5cGUuc2V0RW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJzdGFydCIsdCkscC5kZWZpbmVkKCJlbmQiLGUpLEl3KHRoaXMsdCxlLHRoaXMuX2VsbGlwc29pZCl9O2pFLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlKHRoaXMuX2Rpc3RhbmNlKnQsZSl9O2pFLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpO2xldCBpPXRoaXMuX2NvbnN0YW50cyxuPWkuZGlzdGFuY2VSYXRpbyt0L2kuYixzPU1hdGguY29zKDIqbiksbz1NYXRoLmNvcyg0Km4pLHI9TWF0aC5jb3MoNipuKSxhPU1hdGguc2luKDIqbiksaD1NYXRoLnNpbig0Km4pLEE9TWF0aC5zaW4oNipuKSxkPU1hdGguc2luKDgqbiksZj1uKm4sRT1uKmYsXz1pLnU4T3ZlcjI1NixSPWkudTJPdmVyNCxJPWkudTZPdmVyNjQsQz1pLnU0T3ZlcjE2LE49MipFKl8qcy8zK24qKDEtUis3KkMvNC0xNSpJLzQrNTc5Kl8vNjQtKEMtMTUqSS80KzE4NypfLzE2KSpzLSg1KkkvNC0xMTUqXy8xNikqby0yOSpfKnIvMTYpKyhSLzItQys3MSpJLzMyLTg1Kl8vMTYpKmErKDUqQy8xNi01KkkvNCszODMqXy85NikqaC1mKigoSS0xMSpfLzIpKmErNSpfKmgvMikrKDI5KkkvOTYtMjkqXy8xNikqQSs1MzkqXypkLzE1MzYsVD1NYXRoLmFzaW4oTWF0aC5zaW4oTikqaS5jb3NpbmVBbHBoYSksRj1NYXRoLmF0YW4oaS5hL2kuYipNYXRoLnRhbihUKSk7Tj1OLWkuc2lnbWE7bGV0IGI9TWF0aC5jb3MoMippLnNpZ21hK04pLEc9TWF0aC5zaW4oTiksTT1NYXRoLmNvcyhOKSxRPWkuY29zaW5lVSpNLFU9aS5zaW5lVSpHLHk9TWF0aC5hdGFuMihHKmkuc2luZUhlYWRpbmcsUS1VKmkuY29zaW5lSGVhZGluZyktWncoaS5mLGkuc2luZUFscGhhLGkuY29zaW5lU3F1YXJlZEFscGhhLE4sRyxNLGIpO3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT10aGlzLl9zdGFydC5sb25naXR1ZGUreSxlLmxhdGl0dWRlPUYsZS5oZWlnaHQ9MCxlKTpuZXcgdXQodGhpcy5fc3RhcnQubG9uZ2l0dWRlK3ksRiwwKX07Ykk9akV9KTtmdW5jdGlvbiBSTih0LGUsaSl7aWYodD09PTApcmV0dXJuIGUqaTtsZXQgbj10KnQscz1uKm4sbz1zKm4scj1vKm4sYT1yKm4saD1hKm4sQT1pLGQ9TWF0aC5zaW4oMipBKSxmPU1hdGguc2luKDQqQSksRT1NYXRoLnNpbig2KkEpLF89TWF0aC5zaW4oOCpBKSxSPU1hdGguc2luKDEwKkEpLEk9TWF0aC5zaW4oMTIqQSk7cmV0dXJuIGUqKCgxLW4vNC0zKnMvNjQtNSpvLzI1Ni0xNzUqci8xNjM4NC00NDEqYS82NTUzNi00ODUxKmgvMTA0ODU3NikqQS0oMypuLzgrMypzLzMyKzQ1Km8vMTAyNCsxMDUqci80MDk2KzIyMDUqYS8xMzEwNzIrNjIzNypoLzUyNDI4OCkqZCsoMTUqcy8yNTYrNDUqby8xMDI0KzUyNSpyLzE2Mzg0KzE1NzUqYS82NTUzNisxNTU5MjUqaC84Mzg4NjA4KSpmLSgzNSpvLzMwNzIrMTc1KnIvMTIyODgrMzY3NSphLzI2MjE0NCsxMzQ3NSpoLzEwNDg1NzYpKkUrKDMxNSpyLzEzMTA3MisyMjA1KmEvNTI0Mjg4KzQzNjU5KmgvODM4ODYwOCkqXy0oNjkzKmEvMTMxMDcyMCs2MjM3KmgvNTI0Mjg4MCkqUisxMDAxKmgvODM4ODYwOCpJKX1mdW5jdGlvbiBJaXQodCxlLGkpe2xldCBuPXQvaTtpZihlPT09MClyZXR1cm4gbjtsZXQgcz1uKm4sbz1zKm4scj1vKm4sYT1lLGg9YSphLEE9aCpoLGQ9QSpoLGY9ZCpoLEU9ZipoLF89RSpoLFI9TWF0aC5zaW4oMipuKSxJPU1hdGguY29zKDIqbiksQz1NYXRoLnNpbig0Km4pLE49TWF0aC5jb3MoNCpuKSxUPU1hdGguc2luKDYqbiksRj1NYXRoLmNvcyg2Km4pLGI9TWF0aC5zaW4oOCpuKSxHPU1hdGguY29zKDgqbiksTT1NYXRoLnNpbigxMCpuKSxRPU1hdGguY29zKDEwKm4pLFU9TWF0aC5zaW4oMTIqbik7cmV0dXJuIG4rbipoLzQrNypuKkEvNjQrMTUqbipkLzI1Nis1NzkqbipmLzE2Mzg0KzE1MTUqbipFLzY1NTM2KzE2ODM3Km4qXy8xMDQ4NTc2KygzKm4qQS8xNis0NSpuKmQvMjU2LW4qKDMyKnMtNTYxKSpmLzQwOTYtbiooMjMyKnMtMTY3NykqRS8xNjM4NCtuKigzOTk5ODUtOTA1NjAqcys1MTIqcikqXy81MjQyODgwKSpJKygyMSpuKmQvMjU2KzQ4MypuKmYvNDA5Ni1uKigyMjQqcy0xOTY5KSpFLzE2Mzg0LW4qKDMzMTUyKnMtMTEyNTk5KSpfLzEwNDg1NzYpKk4rKDE1MSpuKmYvNDA5Nis0NjgxKm4qRS82NTUzNisxNDc5Km4qXy8xNjM4NC00NTMqbypfLzMyNzY4KSpGKygxMDk3Km4qRS82NTUzNis0Mjc4MypuKl8vMTA0ODU3NikqRys4MDExKm4qXy8xMDQ4NTc2KlErKDMqaC84KzMqQS8xNisyMTMqZC8yMDQ4LTMqcypkLzY0KzI1NSpmLzQwOTYtMzMqcypmLzUxMisyMDg2MSpFLzUyNDI4OC0zMypzKkUvNTEyK3IqRS8xMDI0KzI4MjczKl8vMTA0ODU3Ni00NzEqcypfLzgxOTIrOSpyKl8vNDA5NikqUisoMjEqQS8yNTYrMjEqZC8yNTYrNTMzKmYvODE5Mi0yMSpzKmYvNTEyKzE5NypFLzQwOTYtMzE1KnMqRS80MDk2KzU4NDAzOSpfLzE2Nzc3MjE2LTEyNTE3KnMqXy8xMzEwNzIrNypyKl8vMjA0OCkqQysoMTUxKmQvNjE0NCsxNTEqZi80MDk2KzUwMTkqRS8xMzEwNzItNDUzKnMqRS8xNjM4NCsyNjk2NSpfLzc4NjQzMi04NjA3KnMqXy8xMzEwNzIpKlQrKDEwOTcqZi8xMzEwNzIrMTA5NypFLzY1NTM2KzIyNTc5NypfLzEwNDg1NzYwLTEwOTcqcypfLzY1NTM2KSpiKyg4MDExKkUvMjYyMTQ0MCs4MDExKl8vMTA0ODU3NikqTSsyOTMzOTMqXy8yNTE2NTgyNDAqVX1mdW5jdGlvbiBQbSh0LGUpe2lmKHQ9PT0wKXJldHVybiBNYXRoLmxvZyhNYXRoLnRhbiguNSooTC5QSV9PVkVSX1RXTytlKSkpO2xldCBpPXQqTWF0aC5zaW4oZSk7cmV0dXJuIE1hdGgubG9nKE1hdGgudGFuKC41KihMLlBJX09WRVJfVFdPK2UpKSktdC8yKk1hdGgubG9nKCgxK2kpLygxLWkpKX1mdW5jdGlvbiBwaXQodCxlLGksbixzKXtsZXQgbz1QbSh0Ll9lbGxpcHRpY2l0eSxpKSxyPVBtKHQuX2VsbGlwdGljaXR5LHMpO3JldHVybiBNYXRoLmF0YW4yKEwubmVnYXRpdmVQaVRvUGkobi1lKSxyLW8pfWZ1bmN0aW9uIHVpdCh0LGUsaSxuLHMsbyxyKXtsZXQgYT10Ll9oZWFkaW5nLGg9by1uLEE9MDtpZihMLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoYSksTC5QSV9PVkVSX1RXTyxMLkVQU0lMT044KSlpZihlPT09aSlBPWUqTWF0aC5jb3MocykqTC5uZWdhdGl2ZVBpVG9QaShoKTtlbHNle2xldCBkPU1hdGguc2luKHMpO0E9ZSpNYXRoLmNvcyhzKSpMLm5lZ2F0aXZlUGlUb1BpKGgpL01hdGguc3FydCgxLXQuX2VsbGlwdGljaXR5U3F1YXJlZCpkKmQpfWVsc2V7bGV0IGQ9Uk4odC5fZWxsaXB0aWNpdHksZSxzKTtBPShSTih0Ll9lbGxpcHRpY2l0eSxlLHIpLWQpL01hdGguY29zKGEpfXJldHVybiBNYXRoLmFicyhBKX1mdW5jdGlvbiBwdyh0LGUsaSxuKXtsZXQgcz1sLm5vcm1hbGl6ZShuLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGUsX04pLENpdCksbz1sLm5vcm1hbGl6ZShuLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGksX04pLF9OKTtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygidmFsdWUiLE1hdGguYWJzKE1hdGguYWJzKGwuYW5nbGVCZXR3ZWVuKHMsbykpLU1hdGguUEkpLC4wMTI1KTtsZXQgcj1uLm1heGltdW1SYWRpdXMsYT1uLm1pbmltdW1SYWRpdXMsaD1yKnIsQT1hKmE7dC5fZWxsaXB0aWNpdHlTcXVhcmVkPShoLUEpL2gsdC5fZWxsaXB0aWNpdHk9TWF0aC5zcXJ0KHQuX2VsbGlwdGljaXR5U3F1YXJlZCksdC5fc3RhcnQ9dXQuY2xvbmUoZSx0Ll9zdGFydCksdC5fc3RhcnQuaGVpZ2h0PTAsdC5fZW5kPXV0LmNsb25lKGksdC5fZW5kKSx0Ll9lbmQuaGVpZ2h0PTAsdC5faGVhZGluZz1waXQodCxlLmxvbmdpdHVkZSxlLmxhdGl0dWRlLGkubG9uZ2l0dWRlLGkubGF0aXR1ZGUpLHQuX2Rpc3RhbmNlPXVpdCh0LG4ubWF4aW11bVJhZGl1cyxuLm1pbmltdW1SYWRpdXMsZS5sb25naXR1ZGUsZS5sYXRpdHVkZSxpLmxvbmdpdHVkZSxpLmxhdGl0dWRlKX1mdW5jdGlvbiB1dyh0LGUsaSxuLHMsbyl7aWYoaT09PTApcmV0dXJuIHV0LmNsb25lKHQsbyk7bGV0IHI9cypzLGEsaCxBO2lmKE1hdGguYWJzKEwuUElfT1ZFUl9UV08tTWF0aC5hYnMoZSkpPkwuRVBTSUxPTjgpe2xldCBkPVJOKHMsbix0LmxhdGl0dWRlKSxmPWkqTWF0aC5jb3MoZSksRT1kK2Y7aWYoaD1JaXQoRSxzLG4pLE1hdGguYWJzKGUpPEwuRVBTSUxPTjEwKWE9TC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZSk7ZWxzZXtsZXQgXz1QbShzLHQubGF0aXR1ZGUpLFI9UG0ocyxoKTtBPU1hdGgudGFuKGUpKihSLV8pLGE9TC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZStBKX19ZWxzZXtoPXQubGF0aXR1ZGU7bGV0IGQ7aWYocz09PTApZD1uKk1hdGguY29zKHQubGF0aXR1ZGUpO2Vsc2V7bGV0IGY9TWF0aC5zaW4odC5sYXRpdHVkZSk7ZD1uKk1hdGguY29zKHQubGF0aXR1ZGUpL01hdGguc3FydCgxLXIqZipmKX1BPWkvZCxlPjA/YT1MLm5lZ2F0aXZlUGlUb1BpKHQubG9uZ2l0dWRlK0EpOmE9TC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZS1BKX1yZXR1cm4gbShvKT8oby5sb25naXR1ZGU9YSxvLmxhdGl0dWRlPWgsby5oZWlnaHQ9MCxvKTpuZXcgdXQoYSxoLDApfWZ1bmN0aW9uIG1oKHQsZSxpKXtsZXQgbj1aKGksb3QuV0dTODQpO3RoaXMuX2VsbGlwc29pZD1uLHRoaXMuX3N0YXJ0PW5ldyB1dCx0aGlzLl9lbmQ9bmV3IHV0LHRoaXMuX2hlYWRpbmc9dm9pZCAwLHRoaXMuX2Rpc3RhbmNlPXZvaWQgMCx0aGlzLl9lbGxpcHRpY2l0eT12b2lkIDAsdGhpcy5fZWxsaXB0aWNpdHlTcXVhcmVkPXZvaWQgMCxtKHQpJiZtKGUpJiZwdyh0aGlzLHQsZSxuKX12YXIgQ2l0LF9OLGVyLEhFPU8oKCk9PntIdCgpO3JpKCk7YWUoKTtidCgpO210KCk7VnQoKTtWZSgpO19lKCk7Q2l0PW5ldyBsLF9OPW5ldyBsO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG1oLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzb2lkfX0sc3VyZmFjZURpc3RhbmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpLHRoaXMuX2Rpc3RhbmNlfX0sc3RhcnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFydH19LGVuZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuZH19LGhlYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiBwLmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5faGVhZGluZ319fSk7bWguZnJvbVN0YXJ0SGVhZGluZ0Rpc3RhbmNlPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC5kZWZpbmVkKCJzdGFydCIsdCkscC5kZWZpbmVkKCJoZWFkaW5nIixlKSxwLmRlZmluZWQoImRpc3RhbmNlIixpKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oImRpc3RhbmNlIixpLDApO2xldCBvPVoobixvdC5XR1M4NCkscj1vLm1heGltdW1SYWRpdXMsYT1vLm1pbmltdW1SYWRpdXMsaD1yKnIsQT1hKmEsZD1NYXRoLnNxcnQoKGgtQSkvaCk7ZT1MLm5lZ2F0aXZlUGlUb1BpKGUpO2xldCBmPXV3KHQsZSxpLG8ubWF4aW11bVJhZGl1cyxkKTtyZXR1cm4hbShzKXx8bShuKSYmIW4uZXF1YWxzKHMuZWxsaXBzb2lkKT9uZXcgbWgodCxmLG8pOihzLnNldEVuZFBvaW50cyh0LGYpLHMpfTttaC5wcm90b3R5cGUuc2V0RW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJzdGFydCIsdCkscC5kZWZpbmVkKCJlbmQiLGUpLHB3KHRoaXMsdCxlLHRoaXMuX2VsbGlwc29pZCl9O21oLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlKHQqdGhpcy5fZGlzdGFuY2UsZSl9O21oLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7aWYocC50eXBlT2YubnVtYmVyKCJkaXN0YW5jZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IFkoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7cmV0dXJuIHV3KHRoaXMuX3N0YXJ0LHRoaXMuX2hlYWRpbmcsdCx0aGlzLl9lbGxpcHNvaWQubWF4aW11bVJhZGl1cyx0aGlzLl9lbGxpcHRpY2l0eSxlKX07bWgucHJvdG90eXBlLmZpbmRJbnRlcnNlY3Rpb25XaXRoTG9uZ2l0dWRlPWZ1bmN0aW9uKHQsZSl7aWYocC50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25Mb25naXR1ZGUiLHQpLCFtKHRoaXMuX2Rpc3RhbmNlKXx8dGhpcy5fZGlzdGFuY2U9PT0wKXRocm93IG5ldyBZKCJFbGxpcHNvaWRSaHVtYkxpbmUgbXVzdCBoYXZlIGRpc3RpbmN0IHN0YXJ0IGFuZCBlbmQgc2V0LiIpO2xldCBpPXRoaXMuX2VsbGlwdGljaXR5LG49dGhpcy5faGVhZGluZyxzPU1hdGguYWJzKG4pLG89dGhpcy5fc3RhcnQ7aWYodD1MLm5lZ2F0aXZlUGlUb1BpKHQpLEwuZXF1YWxzRXBzaWxvbihNYXRoLmFicyh0KSxNYXRoLlBJLEwuRVBTSUxPTjE0KSYmKHQ9TC5zaWduKG8ubG9uZ2l0dWRlKSpNYXRoLlBJKSxtKGUpfHwoZT1uZXcgdXQpLE1hdGguYWJzKEwuUElfT1ZFUl9UV08tcyk8PUwuRVBTSUxPTjgpcmV0dXJuIGUubG9uZ2l0dWRlPXQsZS5sYXRpdHVkZT1vLmxhdGl0dWRlLGUuaGVpZ2h0PTAsZTtpZihMLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoTC5QSV9PVkVSX1RXTy1zKSxMLlBJX09WRVJfVFdPLEwuRVBTSUxPTjgpKXJldHVybiBMLmVxdWFsc0Vwc2lsb24odCxvLmxvbmdpdHVkZSxMLkVQU0lMT04xMik/dm9pZCAwOihlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9TC5QSV9PVkVSX1RXTypMLnNpZ24oTC5QSV9PVkVSX1RXTy1uKSxlLmhlaWdodD0wLGUpO2xldCByPW8ubGF0aXR1ZGUsYT1pKk1hdGguc2luKHIpLGg9TWF0aC50YW4oLjUqKEwuUElfT1ZFUl9UV08rcikpKk1hdGguZXhwKCh0LW8ubG9uZ2l0dWRlKS9NYXRoLnRhbihuKSksQT0oMSthKS8oMS1hKSxkPW8ubGF0aXR1ZGUsZjtkb3tmPWQ7bGV0IEU9aSpNYXRoLnNpbihmKSxfPSgxK0UpLygxLUUpO2Q9MipNYXRoLmF0YW4oaCpNYXRoLnBvdyhfL0EsaS8yKSktTC5QSV9PVkVSX1RXT313aGlsZSghTC5lcXVhbHNFcHNpbG9uKGQsZixMLkVQU0lMT04xMikpO3JldHVybiBlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9ZCxlLmhlaWdodD0wLGV9O21oLnByb3RvdHlwZS5maW5kSW50ZXJzZWN0aW9uV2l0aExhdGl0dWRlPWZ1bmN0aW9uKHQsZSl7aWYocC50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25MYXRpdHVkZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IFkoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7bGV0IGk9dGhpcy5fZWxsaXB0aWNpdHksbj10aGlzLl9oZWFkaW5nLHM9dGhpcy5fc3RhcnQ7aWYoTC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKG4pLEwuUElfT1ZFUl9UV08sTC5FUFNJTE9OOCkpcmV0dXJuO2xldCBvPVBtKGkscy5sYXRpdHVkZSkscj1QbShpLHQpLGE9TWF0aC50YW4obikqKHItbyksaD1MLm5lZ2F0aXZlUGlUb1BpKHMubG9uZ2l0dWRlK2EpO3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT1oLGUubGF0aXR1ZGU9dCxlLmhlaWdodD0wLGUpOm5ldyB1dChoLHQsMCl9O2VyPW1ofSk7ZnVuY3Rpb24gZ2l0KHQpe2lmKHQ9Wih0LFouRU1QVFlfT0JKRUNUKSwhbSh0LmNvbXBvbmVudERhdGF0eXBlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5jb21wb25lbnREYXRhdHlwZSBpcyByZXF1aXJlZC4iKTtpZighbSh0LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUpKXRocm93IG5ldyBZKCJvcHRpb25zLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUgaXMgcmVxdWlyZWQuIik7aWYodC5jb21wb25lbnRzUGVyQXR0cmlidXRlPDF8fHQuY29tcG9uZW50c1BlckF0dHJpYnV0ZT40KXRocm93IG5ldyBZKCJvcHRpb25zLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQuIik7aWYoIW0odC52YWx1ZXMpKXRocm93IG5ldyBZKCJvcHRpb25zLnZhbHVlcyBpcyByZXF1aXJlZC4iKTt0aGlzLmNvbXBvbmVudERhdGF0eXBlPXQuY29tcG9uZW50RGF0YXR5cGUsdGhpcy5jb21wb25lbnRzUGVyQXR0cmlidXRlPXQuY29tcG9uZW50c1BlckF0dHJpYnV0ZSx0aGlzLm5vcm1hbGl6ZT1aKHQubm9ybWFsaXplLCExKSx0aGlzLnZhbHVlcz10LnZhbHVlc312YXIgVHQsamk9TygoKT0+e2J0KCk7bXQoKTtWdCgpO1R0PWdpdH0pO2Z1bmN0aW9uIEN3KHQsZSxpKXtsZXQgbj10K2U7cmV0dXJuIEwuc2lnbih0KSE9PUwuc2lnbihlKSYmTWF0aC5hYnMobi9NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSkpPGk/MDpufXZhciBaTixQcixGST1PKCgpPT57VnQoKTtfZSgpO1pOPXt9O1pOLmNvbXB1dGVEaXNjcmltaW5hbnQ9ZnVuY3Rpb24odCxlLGkpe2lmKHR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IFkoImIgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBZKCJjIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO3JldHVybiBlKmUtNCp0Kml9O1pOLmNvbXB1dGVSZWFsUm9vdHM9ZnVuY3Rpb24odCxlLGkpe2lmKHR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IFkoImIgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBZKCJjIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2xldCBuO2lmKHQ9PT0wKXJldHVybiBlPT09MD9bXTpbLWkvZV07aWYoZT09PTApe2lmKGk9PT0wKXJldHVyblswLDBdO2xldCBoPU1hdGguYWJzKGkpLEE9TWF0aC5hYnModCk7aWYoaDxBJiZoL0E8TC5FUFNJTE9OMTQpcmV0dXJuWzAsMF07aWYoaD5BJiZBL2g8TC5FUFNJTE9OMTQpcmV0dXJuW107aWYobj0taS90LG48MClyZXR1cm5bXTtsZXQgZD1NYXRoLnNxcnQobik7cmV0dXJuWy1kLGRdfWVsc2UgaWYoaT09PTApcmV0dXJuIG49LWUvdCxuPDA/W24sMF06WzAsbl07bGV0IHM9ZSplLG89NCp0Kmkscj1DdyhzLC1vLEwuRVBTSUxPTjE0KTtpZihyPDApcmV0dXJuW107bGV0IGE9LS41KkN3KGUsTC5zaWduKGUpKk1hdGguc3FydChyKSxMLkVQU0lMT04xNCk7cmV0dXJuIGU+MD9bYS90LGkvYV06W2kvYSxhL3RdfTtQcj1aTn0pO2Z1bmN0aW9uIElOKHQsZSxpLG4pe2xldCBzPXQsbz1lLzMscj1pLzMsYT1uLGg9cypyLEE9byphLGQ9bypvLGY9cipyLEU9cypyLWQsXz1zKmEtbypyLFI9byphLWYsST00KkUqUi1fKl8sQyxOO2lmKEk8MCl7bGV0IEIsSXQsZ3Q7ZCpBPj1oKmY/KEI9cyxJdD1FLGd0PS0yKm8qRStzKl8pOihCPWEsSXQ9UixndD0tYSpfKzIqcipSKTtsZXQgTXQ9LShndDwwPy0xOjEpKk1hdGguYWJzKEIpKk1hdGguc3FydCgtSSk7Tj0tZ3QrTXQ7bGV0IEN0PU4vMix6dD1DdDwwPy1NYXRoLnBvdygtQ3QsMS8zKTpNYXRoLnBvdyhDdCwxLzMpLGt0PU49PT1NdD8tenQ6LUl0L3p0O3JldHVybiBDPUl0PD0wP3p0K2t0Oi1ndC8oenQqenQra3Qqa3QrSXQpLGQqQT49aCpmP1soQy1vKS9zXTpbLWEvKEMrcildfWxldCBUPUUsRj0tMipvKkUrcypfLGI9UixHPS1hKl8rMipyKlIsTT1NYXRoLnNxcnQoSSksUT1NYXRoLnNxcnQoMykvMixVPU1hdGguYWJzKE1hdGguYXRhbjIocypNLC1GKS8zKTtDPTIqTWF0aC5zcXJ0KC1UKTtsZXQgaz1NYXRoLmNvcyhVKTtOPUMqaztsZXQgeT1DKigtay8yLVEqTWF0aC5zaW4oVSkpLGM9Tit5PjIqbz9OLW86eS1vLGc9cyxWPWMvZztVPU1hdGguYWJzKE1hdGguYXRhbjIoYSpNLC1HKS8zKSxDPTIqTWF0aC5zcXJ0KC1iKSxrPU1hdGguY29zKFUpLE49QyprLHk9QyooLWsvMi1RKk1hdGguc2luKFUpKTtsZXQgRD0tYSx3PU4reTwyKnI/TityOnkrcix4PUQvdyxIPWcqdyxqPS1jKnctZypELFg9YypELHR0PShyKmotbypYKS8oLW8qaityKkgpO3JldHVybiBWPD10dD9WPD14P3R0PD14P1tWLHR0LHhdOltWLHgsdHRdOlt4LFYsdHRdOlY8PXg/W3R0LFYseF06dHQ8PXg/W3R0LHgsVl06W3gsdHQsVl19dmFyIHBOLFlJLGd3PU8oKCk9PntWdCgpO0ZJKCk7cE49e307cE4uY29tcHV0ZURpc2NyaW1pbmFudD1mdW5jdGlvbih0LGUsaSxuKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBZKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBpIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7bGV0IHM9dCp0LG89ZSplLHI9aSppLGE9bipuO3JldHVybiAxOCp0KmUqaSpuK28qci0yNypzKmEtNCoodCpyKmkrbyplKm4pfTtwTi5jb21wdXRlUmVhbFJvb3RzPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKHR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IFkoImIgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBZKCJjIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBuIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiZCBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtsZXQgcyxvO2lmKHQ9PT0wKXJldHVybiBQci5jb21wdXRlUmVhbFJvb3RzKGUsaSxuKTtpZihlPT09MCl7aWYoaT09PTApe2lmKG49PT0wKXJldHVyblswLDAsMF07bz0tbi90O2xldCByPW88MD8tTWF0aC5wb3coLW8sMS8zKTpNYXRoLnBvdyhvLDEvMyk7cmV0dXJuW3IscixyXX1lbHNlIGlmKG49PT0wKXJldHVybiBzPVByLmNvbXB1dGVSZWFsUm9vdHModCwwLGkpLHMuTGVuZ3RoPT09MD9bMF06W3NbMF0sMCxzWzFdXTtyZXR1cm4gSU4odCwwLGksbil9ZWxzZXtpZihpPT09MClyZXR1cm4gbj09PTA/KG89LWUvdCxvPDA/W28sMCwwXTpbMCwwLG9dKTpJTih0LGUsMCxuKTtpZihuPT09MClyZXR1cm4gcz1Qci5jb21wdXRlUmVhbFJvb3RzKHQsZSxpKSxzLmxlbmd0aD09PTA/WzBdOnNbMV08PTA/W3NbMF0sc1sxXSwwXTpzWzBdPj0wP1swLHNbMF0sc1sxXV06W3NbMF0sMCxzWzFdXX1yZXR1cm4gSU4odCxlLGksbil9O1lJPXBOfSk7ZnVuY3Rpb24gVmEodCxlLGksbil7bGV0IHM9dCp0LG89ZS0zKnMvOCxyPWktZSp0LzIrcyp0LzgsYT1uLWkqdC80K2Uqcy8xNi0zKnMqcy8yNTYsaD1ZSS5jb21wdXRlUmVhbFJvb3RzKDEsMipvLG8qby00KmEsLXIqcik7aWYoaC5sZW5ndGg+MCl7bGV0IEE9LXQvNCxkPWhbaC5sZW5ndGgtMV07aWYoTWF0aC5hYnMoZCk8TC5FUFNJTE9OMTQpe2xldCBmPVByLmNvbXB1dGVSZWFsUm9vdHMoMSxvLGEpO2lmKGYubGVuZ3RoPT09Mil7bGV0IEU9ZlswXSxfPWZbMV0sUjtpZihFPj0wJiZfPj0wKXtsZXQgST1NYXRoLnNxcnQoRSksQz1NYXRoLnNxcnQoXyk7cmV0dXJuW0EtQyxBLUksQStJLEErQ119ZWxzZXtpZihFPj0wJiZfPDApcmV0dXJuIFI9TWF0aC5zcXJ0KEUpLFtBLVIsQStSXTtpZihFPDAmJl8+PTApcmV0dXJuIFI9TWF0aC5zcXJ0KF8pLFtBLVIsQStSXX19cmV0dXJuW119ZWxzZSBpZihkPjApe2xldCBmPU1hdGguc3FydChkKSxFPShvK2Qtci9mKS8yLF89KG8rZCtyL2YpLzIsUj1Qci5jb21wdXRlUmVhbFJvb3RzKDEsZixFKSxJPVByLmNvbXB1dGVSZWFsUm9vdHMoMSwtZixfKTtyZXR1cm4gUi5sZW5ndGghPT0wPyhSWzBdKz1BLFJbMV0rPUEsSS5sZW5ndGghPT0wPyhJWzBdKz1BLElbMV0rPUEsUlsxXTw9SVswXT9bUlswXSxSWzFdLElbMF0sSVsxXV06SVsxXTw9UlswXT9bSVswXSxJWzFdLFJbMF0sUlsxXV06UlswXT49SVswXSYmUlsxXTw9SVsxXT9bSVswXSxSWzBdLFJbMV0sSVsxXV06SVswXT49UlswXSYmSVsxXTw9UlsxXT9bUlswXSxJWzBdLElbMV0sUlsxXV06UlswXT5JWzBdJiZSWzBdPElbMV0/W0lbMF0sUlswXSxJWzFdLFJbMV1dOltSWzBdLElbMF0sUlsxXSxJWzFdXSk6Uik6SS5sZW5ndGghPT0wPyhJWzBdKz1BLElbMV0rPUEsSSk6W119fXJldHVybltdfWZ1bmN0aW9uIHZFKHQsZSxpLG4pe2xldCBzPWkqaSxvPWUqZSxyPXQqdCxhPS0yKmUsaD1pKnQrby00Km4sQT1yKm4taSplKnQrcyxkPVlJLmNvbXB1dGVSZWFsUm9vdHMoMSxhLGgsQSk7aWYoZC5sZW5ndGg+MCl7bGV0IGY9ZFswXSxFPWUtZixfPUUqRSxSPXQvMixJPUUvMixDPV8tNCpuLE49Xys0Kk1hdGguYWJzKG4pLFQ9ci00KmYsRj1yKzQqTWF0aC5hYnMoZiksYixHO2lmKGY8MHx8QypGPFQqTil7bGV0IGc9TWF0aC5zcXJ0KFQpO2I9Zy8yLEc9Zz09PTA/MDoodCpJLWkpL2d9ZWxzZXtsZXQgZz1NYXRoLnNxcnQoQyk7Yj1nPT09MD8wOih0KkktaSkvZyxHPWcvMn1sZXQgTSxRO1I9PT0wJiZiPT09MD8oTT0wLFE9MCk6TC5zaWduKFIpPT09TC5zaWduKGIpPyhNPVIrYixRPWYvTSk6KFE9Ui1iLE09Zi9RKTtsZXQgVSxrO0k9PT0wJiZHPT09MD8oVT0wLGs9MCk6TC5zaWduKEkpPT09TC5zaWduKEcpPyhVPUkrRyxrPW4vVSk6KGs9SS1HLFU9bi9rKTtsZXQgeT1Qci5jb21wdXRlUmVhbFJvb3RzKDEsTSxVKSxjPVByLmNvbXB1dGVSZWFsUm9vdHMoMSxRLGspO2lmKHkubGVuZ3RoIT09MClyZXR1cm4gYy5sZW5ndGghPT0wP3lbMV08PWNbMF0/W3lbMF0seVsxXSxjWzBdLGNbMV1dOmNbMV08PXlbMF0/W2NbMF0sY1sxXSx5WzBdLHlbMV1dOnlbMF0+PWNbMF0mJnlbMV08PWNbMV0/W2NbMF0seVswXSx5WzFdLGNbMV1dOmNbMF0+PXlbMF0mJmNbMV08PXlbMV0/W3lbMF0sY1swXSxjWzFdLHlbMV1dOnlbMF0+Y1swXSYmeVswXTxjWzFdP1tjWzBdLHlbMF0sY1sxXSx5WzFdXTpbeVswXSxjWzBdLHlbMV0sY1sxXV06eTtpZihjLmxlbmd0aCE9PTApcmV0dXJuIGN9cmV0dXJuW119dmFyIHVOLFR3LE53PU8oKCk9PntndygpO1Z0KCk7X2UoKTtGSSgpO3VOPXt9O3VOLmNvbXB1dGVEaXNjcmltaW5hbnQ9ZnVuY3Rpb24odCxlLGksbixzKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBZKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBpIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIHMhPSJudW1iZXIiKXRocm93IG5ldyBZKCJlIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2xldCBvPXQqdCxyPW8qdCxhPWUqZSxoPWEqZSxBPWkqaSxkPUEqaSxmPW4qbixFPWYqbixfPXMqcyxSPV8qcztyZXR1cm4gYSpBKmYtNCpoKkUtNCp0KmQqZisxOCp0KmUqaSpFLTI3Km8qZipmKzI1NipyKlIrcyooMTgqaCppKm4tNCphKmQrMTYqdCpBKkEtODAqdCplKkEqbi02KnQqYSpmKzE0NCpvKmkqZikrXyooMTQ0KnQqYSppLTI3KmEqYS0xMjgqbypBLTE5MipvKmUqbil9O3VOLmNvbXB1dGVSZWFsUm9vdHM9ZnVuY3Rpb24odCxlLGksbixzKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBZKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBpIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIHMhPSJudW1iZXIiKXRocm93IG5ldyBZKCJlIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKE1hdGguYWJzKHQpPEwuRVBTSUxPTjE1KXJldHVybiBZSS5jb21wdXRlUmVhbFJvb3RzKGUsaSxuLHMpO2xldCBvPWUvdCxyPWkvdCxhPW4vdCxoPXMvdCxBPW88MD8xOjA7c3dpdGNoKEErPXI8MD9BKzE6QSxBKz1hPDA/QSsxOkEsQSs9aDwwP0ErMTpBLEEpe2Nhc2UgMDpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSAxOnJldHVybiB2RShvLHIsYSxoKTtjYXNlIDI6cmV0dXJuIHZFKG8scixhLGgpO2Nhc2UgMzpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSA0OnJldHVybiBWYShvLHIsYSxoKTtjYXNlIDU6cmV0dXJuIHZFKG8scixhLGgpO2Nhc2UgNjpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSA3OnJldHVybiBWYShvLHIsYSxoKTtjYXNlIDg6cmV0dXJuIHZFKG8scixhLGgpO2Nhc2UgOTpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSAxMDpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSAxMTpyZXR1cm4gdkUobyxyLGEsaCk7Y2FzZSAxMjpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSAxMzpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSAxNDpyZXR1cm4gVmEobyxyLGEsaCk7Y2FzZSAxNTpyZXR1cm4gVmEobyxyLGEsaCk7ZGVmYXVsdDpyZXR1cm59fTtUdz11Tn0pO2Z1bmN0aW9uIFNJKHQsZSl7ZT1sLmNsb25lKFooZSxsLlpFUk8pKSxsLmVxdWFscyhlLGwuWkVSTyl8fGwubm9ybWFsaXplKGUsZSksdGhpcy5vcmlnaW49bC5jbG9uZShaKHQsbC5aRVJPKSksdGhpcy5kaXJlY3Rpb249ZX12YXIgV2wsT0k9TygoKT0+e0h0KCk7YWUoKTtidCgpO210KCk7U0kuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLm9yaWdpbj1sLmNsb25lKHQub3JpZ2luKSxlLmRpcmVjdGlvbj1sLmNsb25lKHQuZGlyZWN0aW9uKSxlKTpuZXcgU0kodC5vcmlnaW4sdC5kaXJlY3Rpb24pfTtTSS5nZXRQb2ludD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicmF5Iix0KSxwLnR5cGVPZi5udW1iZXIoInQiLGUpLG0oaSl8fChpPW5ldyBsKSxpPWwubXVsdGlwbHlCeVNjYWxhcih0LmRpcmVjdGlvbixlLGkpLGwuYWRkKHQub3JpZ2luLGksaSl9O1dsPVNJfSk7ZnVuY3Rpb24gRml0KHQsZSxpLG4pe2xldCBzPWUqZS00KnQqaTtpZihzPDApcmV0dXJuO2lmKHM+MCl7bGV0IHI9MS8oMip0KSxhPU1hdGguc3FydChzKSxoPSgtZSthKSpyLEE9KC1lLWEpKnI7cmV0dXJuIGg8QT8obi5yb290MD1oLG4ucm9vdDE9QSk6KG4ucm9vdDA9QSxuLnJvb3QxPWgpLG59bGV0IG89LWUvKDIqdCk7aWYobyE9PTApcmV0dXJuIG4ucm9vdDA9bi5yb290MT1vLG59ZnVuY3Rpb24gV3codCxlLGkpe20oaSl8fChpPW5ldyBjQSk7bGV0IG49dC5vcmlnaW4scz10LmRpcmVjdGlvbixvPWUuY2VudGVyLHI9ZS5yYWRpdXMqZS5yYWRpdXMsYT1sLnN1YnRyYWN0KG4sbyxCdyksaD1sLmRvdChzLHMpLEE9MipsLmRvdChzLGEpLGQ9bC5tYWduaXR1ZGVTcXVhcmVkKGEpLXIsZj1GaXQoaCxBLGQsWWl0KTtpZihtKGYpKXJldHVybiBpLnN0YXJ0PWYucm9vdDAsaS5zdG9wPWYucm9vdDEsaX1mdW5jdGlvbiBEbCh0LGUsaSl7bGV0IG49dCtlO3JldHVybiBMLnNpZ24odCkhPT1MLnNpZ24oZSkmJk1hdGguYWJzKG4vTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKTxpPzA6bn12YXIgU24sVGl0LE5pdCxCdyxidyxGdyxiaXQsWWl0LFNpdCxPaXQsVml0LENOLFl3LFN3LFZJLEdpdCxCaXQsV2l0LERpdCxNaXQsVWl0LE93LFZ3LEd3LFFpdCxraXQsTGl0LG5vLE1sPU8oKCk9PntIdCgpO3JpKCk7YnQoKTttdCgpO1Z0KCk7SFooKTtfZSgpO2RuKCk7RkkoKTtOdygpO09JKCk7U249e307U24ucmF5UGxhbmU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInBsYW5lIGlzIHJlcXVpcmVkLiIpO20oaSl8fChpPW5ldyBsKTtsZXQgbj10Lm9yaWdpbixzPXQuZGlyZWN0aW9uLG89ZS5ub3JtYWwscj1sLmRvdChvLHMpO2lmKE1hdGguYWJzKHIpPEwuRVBTSUxPTjE1KXJldHVybjtsZXQgYT0oLWUuZGlzdGFuY2UtbC5kb3QobyxuKSkvcjtpZighKGE8MCkpcmV0dXJuIGk9bC5tdWx0aXBseUJ5U2NhbGFyKHMsYSxpKSxsLmFkZChuLGksaSl9O1RpdD1uZXcgbCxOaXQ9bmV3IGwsQnc9bmV3IGwsYnc9bmV3IGwsRnc9bmV3IGw7U24ucmF5VHJpYW5nbGVQYXJhbWV0cmljPWZ1bmN0aW9uKHQsZSxpLG4scyl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJheSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicDAgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInAxIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwMiBpcyByZXF1aXJlZC4iKTtzPVoocywhMSk7bGV0IG89dC5vcmlnaW4scj10LmRpcmVjdGlvbixhPWwuc3VidHJhY3QoaSxlLFRpdCksaD1sLnN1YnRyYWN0KG4sZSxOaXQpLEE9bC5jcm9zcyhyLGgsQncpLGQ9bC5kb3QoYSxBKSxmLEUsXyxSLEk7aWYocyl7aWYoZDxMLkVQU0lMT042fHwoZj1sLnN1YnRyYWN0KG8sZSxidyksXz1sLmRvdChmLEEpLF88MHx8Xz5kKXx8KEU9bC5jcm9zcyhmLGEsRncpLFI9bC5kb3QocixFKSxSPDB8fF8rUj5kKSlyZXR1cm47ST1sLmRvdChoLEUpL2R9ZWxzZXtpZihNYXRoLmFicyhkKTxMLkVQU0lMT042KXJldHVybjtsZXQgQz0xL2Q7aWYoZj1sLnN1YnRyYWN0KG8sZSxidyksXz1sLmRvdChmLEEpKkMsXzwwfHxfPjF8fChFPWwuY3Jvc3MoZixhLEZ3KSxSPWwuZG90KHIsRSkqQyxSPDB8fF8rUj4xKSlyZXR1cm47ST1sLmRvdChoLEUpKkN9cmV0dXJuIEl9O1NuLnJheVRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj1Tbi5yYXlUcmlhbmdsZVBhcmFtZXRyaWModCxlLGksbixzKTtpZighKCFtKHIpfHxyPDApKXJldHVybiBtKG8pfHwobz1uZXcgbCksbC5tdWx0aXBseUJ5U2NhbGFyKHQuZGlyZWN0aW9uLHIsbyksbC5hZGQodC5vcmlnaW4sbyxvKX07Yml0PW5ldyBXbDtTbi5saW5lU2VnbWVudFRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2MCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgidjEgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInAwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwMSBpcyByZXF1aXJlZC4iKTtpZighbShzKSl0aHJvdyBuZXcgWSgicDIgaXMgcmVxdWlyZWQuIik7bGV0IGE9Yml0O2wuY2xvbmUodCxhLm9yaWdpbiksbC5zdWJ0cmFjdChlLHQsYS5kaXJlY3Rpb24pLGwubm9ybWFsaXplKGEuZGlyZWN0aW9uLGEuZGlyZWN0aW9uKTtsZXQgaD1Tbi5yYXlUcmlhbmdsZVBhcmFtZXRyaWMoYSxpLG4scyxvKTtpZighKCFtKGgpfHxoPDB8fGg+bC5kaXN0YW5jZSh0LGUpKSlyZXR1cm4gbShyKXx8KHI9bmV3IGwpLGwubXVsdGlwbHlCeVNjYWxhcihhLmRpcmVjdGlvbixoLHIpLGwuYWRkKGEub3JpZ2luLHIscil9O1lpdD17cm9vdDA6MCxyb290MTowfTtTbi5yYXlTcGhlcmU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInNwaGVyZSBpcyByZXF1aXJlZC4iKTtpZihpPVd3KHQsZSxpKSwhKCFtKGkpfHxpLnN0b3A8MCkpcmV0dXJuIGkuc3RhcnQ9TWF0aC5tYXgoaS5zdGFydCwwKSxpfTtTaXQ9bmV3IFdsO1NuLmxpbmVTZWdtZW50U3BoZXJlPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJwMCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicDEgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInNwaGVyZSBpcyByZXF1aXJlZC4iKTtsZXQgcz1TaXQ7bC5jbG9uZSh0LHMub3JpZ2luKTtsZXQgbz1sLnN1YnRyYWN0KGUsdCxzLmRpcmVjdGlvbikscj1sLm1hZ25pdHVkZShvKTtpZihsLm5vcm1hbGl6ZShvLG8pLG49V3cocyxpLG4pLCEoIW0obil8fG4uc3RvcDwwfHxuLnN0YXJ0PnIpKXJldHVybiBuLnN0YXJ0PU1hdGgubWF4KG4uc3RhcnQsMCksbi5zdG9wPU1hdGgubWluKG4uc3RvcCxyKSxufTtPaXQ9bmV3IGwsVml0PW5ldyBsO1NuLnJheUVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImVsbGlwc29pZCBpcyByZXF1aXJlZC4iKTtsZXQgaT1lLm9uZU92ZXJSYWRpaSxuPWwubXVsdGlwbHlDb21wb25lbnRzKGksdC5vcmlnaW4sT2l0KSxzPWwubXVsdGlwbHlDb21wb25lbnRzKGksdC5kaXJlY3Rpb24sVml0KSxvPWwubWFnbml0dWRlU3F1YXJlZChuKSxyPWwuZG90KG4scyksYSxoLEEsZCxmO2lmKG8+MSl7aWYocj49MClyZXR1cm47bGV0IEU9cipyO2lmKGE9by0xLGg9bC5tYWduaXR1ZGVTcXVhcmVkKHMpLEE9aCphLEU8QSlyZXR1cm47aWYoRT5BKXtkPXIqci1BLGY9LXIrTWF0aC5zcXJ0KGQpO2xldCBSPWYvaCxJPWEvZjtyZXR1cm4gUjxJP25ldyBjQShSLEkpOntzdGFydDpJLHN0b3A6Un19bGV0IF89TWF0aC5zcXJ0KGEvaCk7cmV0dXJuIG5ldyBjQShfLF8pfWVsc2UgaWYobzwxKXJldHVybiBhPW8tMSxoPWwubWFnbml0dWRlU3F1YXJlZChzKSxBPWgqYSxkPXIqci1BLGY9LXIrTWF0aC5zcXJ0KGQpLG5ldyBjQSgwLGYvaCk7aWYocjwwKXJldHVybiBoPWwubWFnbml0dWRlU3F1YXJlZChzKSxuZXcgY0EoMCwtci9oKX07U24ucXVhZHJhdGljVmVjdG9yRXhwcmVzc2lvbj1mdW5jdGlvbih0LGUsaSxuLHMpe2xldCBvPW4qbixyPXMqcyxhPSh0W2x0LkNPTFVNTjFST1cxXS10W2x0LkNPTFVNTjJST1cyXSkqcixoPXMqKG4qRGwodFtsdC5DT0xVTU4xUk9XMF0sdFtsdC5DT0xVTU4wUk9XMV0sTC5FUFNJTE9OMTUpK2UueSksQT10W2x0LkNPTFVNTjBST1cwXSpvK3RbbHQuQ09MVU1OMlJPVzJdKnIrbiplLngraSxkPXIqRGwodFtsdC5DT0xVTU4yUk9XMV0sdFtsdC5DT0xVTU4xUk9XMl0sTC5FUFNJTE9OMTUpLGY9cyoobipEbCh0W2x0LkNPTFVNTjJST1cwXSx0W2x0LkNPTFVNTjBST1cyXSkrZS56KSxFLF89W107aWYoZj09PTAmJmQ9PT0wKXtpZihFPVByLmNvbXB1dGVSZWFsUm9vdHMoYSxoLEEpLEUubGVuZ3RoPT09MClyZXR1cm4gXztsZXQgVT1FWzBdLGs9TWF0aC5zcXJ0KE1hdGgubWF4KDEtVSpVLDApKTtpZihfLnB1c2gobmV3IGwobixzKlUscyotaykpLF8ucHVzaChuZXcgbChuLHMqVSxzKmspKSxFLmxlbmd0aD09PTIpe2xldCB5PUVbMV0sYz1NYXRoLnNxcnQoTWF0aC5tYXgoMS15KnksMCkpO18ucHVzaChuZXcgbChuLHMqeSxzKi1jKSksXy5wdXNoKG5ldyBsKG4scyp5LHMqYykpfXJldHVybiBffWxldCBSPWYqZixJPWQqZCxDPWEqYSxOPWYqZCxUPUMrSSxGPTIqKGgqYStOKSxiPTIqQSphK2gqaC1JK1IsRz0yKihBKmgtTiksTT1BKkEtUjtpZihUPT09MCYmRj09PTAmJmI9PT0wJiZHPT09MClyZXR1cm4gXztFPVR3LmNvbXB1dGVSZWFsUm9vdHMoVCxGLGIsRyxNKTtsZXQgUT1FLmxlbmd0aDtpZihRPT09MClyZXR1cm4gXztmb3IobGV0IFU9MDtVPFE7KytVKXtsZXQgaz1FW1VdLHk9ayprLGM9TWF0aC5tYXgoMS15LDApLGc9TWF0aC5zcXJ0KGMpLFY7TC5zaWduKGEpPT09TC5zaWduKEEpP1Y9RGwoYSp5K0EsaCprLEwuRVBTSUxPTjEyKTpMLnNpZ24oQSk9PT1MLnNpZ24oaCprKT9WPURsKGEqeSxoKmsrQSxMLkVQU0lMT04xMik6Vj1EbChhKnkraCprLEEsTC5FUFNJTE9OMTIpO2xldCBEPURsKGQqayxmLEwuRVBTSUxPTjE1KSx3PVYqRDt3PDA/Xy5wdXNoKG5ldyBsKG4scyprLHMqZykpOnc+MD9fLnB1c2gobmV3IGwobixzKmsscyotZykpOmchPT0wPyhfLnB1c2gobmV3IGwobixzKmsscyotZykpLF8ucHVzaChuZXcgbChuLHMqayxzKmcpKSwrK1UpOl8ucHVzaChuZXcgbChuLHMqayxzKmcpKX1yZXR1cm4gX307Q049bmV3IGwsWXc9bmV3IGwsU3c9bmV3IGwsVkk9bmV3IGwsR2l0PW5ldyBsLEJpdD1uZXcgbHQsV2l0PW5ldyBsdCxEaXQ9bmV3IGx0LE1pdD1uZXcgbHQsVWl0PW5ldyBsdCxPdz1uZXcgbHQsVnc9bmV3IGx0LEd3PW5ldyBsLFFpdD1uZXcgbCxraXQ9bmV3IHV0O1NuLmdyYXppbmdBbHRpdHVkZUxvY2F0aW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJheSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiZWxsaXBzb2lkIGlzIHJlcXVpcmVkLiIpO2xldCBpPXQub3JpZ2luLG49dC5kaXJlY3Rpb247aWYoIWwuZXF1YWxzKGksbC5aRVJPKSl7bGV0IE09ZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaSxDTik7aWYobC5kb3QobixNKT49MClyZXR1cm4gaX1sZXQgcz1tKHRoaXMucmF5RWxsaXBzb2lkKHQsZSkpLG89ZS50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UobixDTikscj1sLm5vcm1hbGl6ZShvLG8pLGE9bC5tb3N0T3J0aG9nb25hbEF4aXMobyxWSSksaD1sLm5vcm1hbGl6ZShsLmNyb3NzKGEscixZdyksWXcpLEE9bC5ub3JtYWxpemUobC5jcm9zcyhyLGgsU3cpLFN3KSxkPUJpdDtkWzBdPXIueCxkWzFdPXIueSxkWzJdPXIueixkWzNdPWgueCxkWzRdPWgueSxkWzVdPWgueixkWzZdPUEueCxkWzddPUEueSxkWzhdPUEuejtsZXQgZj1sdC50cmFuc3Bvc2UoZCxXaXQpLEU9bHQuZnJvbVNjYWxlKGUucmFkaWksRGl0KSxfPWx0LmZyb21TY2FsZShlLm9uZU92ZXJSYWRpaSxNaXQpLFI9VWl0O1JbMF09MCxSWzFdPS1uLnosUlsyXT1uLnksUlszXT1uLnosUls0XT0wLFJbNV09LW4ueCxSWzZdPS1uLnksUls3XT1uLngsUls4XT0wO2xldCBJPWx0Lm11bHRpcGx5KGx0Lm11bHRpcGx5KGYsXyxPdyksUixPdyksQz1sdC5tdWx0aXBseShsdC5tdWx0aXBseShJLEUsVncpLGQsVncpLE49bHQubXVsdGlwbHlCeVZlY3RvcihJLGksR2l0KSxUPVNuLnF1YWRyYXRpY1ZlY3RvckV4cHJlc3Npb24oQyxsLm5lZ2F0ZShOLENOKSwwLDAsMSksRixiLEc9VC5sZW5ndGg7aWYoRz4wKXtsZXQgTT1sLmNsb25lKGwuWkVSTyxRaXQpLFE9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihsZXQgaz0wO2s8RzsrK2spe0Y9bHQubXVsdGlwbHlCeVZlY3RvcihFLGx0Lm11bHRpcGx5QnlWZWN0b3IoZCxUW2tdLEd3KSxHdyk7bGV0IHk9bC5ub3JtYWxpemUobC5zdWJ0cmFjdChGLGksVkkpLFZJKSxjPWwuZG90KHksbik7Yz5RJiYoUT1jLE09bC5jbG9uZShGLE0pKX1sZXQgVT1lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKE0sa2l0KTtyZXR1cm4gUT1MLmNsYW1wKFEsMCwxKSxiPWwubWFnbml0dWRlKGwuc3VidHJhY3QoTSxpLFZJKSkqTWF0aC5zcXJ0KDEtUSpRKSxiPXM/LWI6YixVLmhlaWdodD1iLGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oVSxuZXcgbCl9fTtMaXQ9bmV3IGw7U24ubGluZVNlZ21lbnRQbGFuZT1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZW5kUG9pbnQwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJlbmRQb2ludDEgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInBsYW5lIGlzIHJlcXVpcmVkLiIpO20obil8fChuPW5ldyBsKTtsZXQgcz1sLnN1YnRyYWN0KGUsdCxMaXQpLG89aS5ub3JtYWwscj1sLmRvdChvLHMpO2lmKE1hdGguYWJzKHIpPEwuRVBTSUxPTjYpcmV0dXJuO2xldCBhPWwuZG90KG8sdCksaD0tKGkuZGlzdGFuY2UrYSkvcjtpZighKGg8MHx8aD4xKSlyZXR1cm4gbC5tdWx0aXBseUJ5U2NhbGFyKHMsaCxuKSxsLmFkZCh0LG4sbiksbn07U24udHJpYW5nbGVQbGFuZUludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KXx8IW0oZSl8fCFtKGkpfHwhbShuKSl0aHJvdyBuZXcgWSgicDAsIHAxLCBwMiwgYW5kIHBsYW5lIGFyZSByZXF1aXJlZC4iKTtsZXQgcz1uLm5vcm1hbCxvPW4uZGlzdGFuY2Uscj1sLmRvdChzLHQpK288MCxhPWwuZG90KHMsZSkrbzwwLGg9bC5kb3QocyxpKStvPDAsQT0wO0ErPXI/MTowLEErPWE/MTowLEErPWg/MTowO2xldCBkLGY7aWYoKEE9PT0xfHxBPT09MikmJihkPW5ldyBsLGY9bmV3IGwpLEE9PT0xKXtpZihyKXJldHVybiBTbi5saW5lU2VnbWVudFBsYW5lKHQsZSxuLGQpLFNuLmxpbmVTZWdtZW50UGxhbmUodCxpLG4sZikse3Bvc2l0aW9uczpbdCxlLGksZCxmXSxpbmRpY2VzOlswLDMsNCwxLDIsNCwxLDQsM119O2lmKGEpcmV0dXJuIFNuLmxpbmVTZWdtZW50UGxhbmUoZSxpLG4sZCksU24ubGluZVNlZ21lbnRQbGFuZShlLHQsbixmKSx7cG9zaXRpb25zOlt0LGUsaSxkLGZdLGluZGljZXM6WzEsMyw0LDIsMCw0LDIsNCwzXX07aWYoaClyZXR1cm4gU24ubGluZVNlZ21lbnRQbGFuZShpLHQsbixkKSxTbi5saW5lU2VnbWVudFBsYW5lKGksZSxuLGYpLHtwb3NpdGlvbnM6W3QsZSxpLGQsZl0saW5kaWNlczpbMiwzLDQsMCwxLDQsMCw0LDNdfX1lbHNlIGlmKEE9PT0yKWlmKHIpaWYoYSl7aWYoIWgpcmV0dXJuIFNuLmxpbmVTZWdtZW50UGxhbmUodCxpLG4sZCksU24ubGluZVNlZ21lbnRQbGFuZShlLGksbixmKSx7cG9zaXRpb25zOlt0LGUsaSxkLGZdLGluZGljZXM6WzAsMSw0LDAsNCwzLDIsMyw0XX19ZWxzZSByZXR1cm4gU24ubGluZVNlZ21lbnRQbGFuZShpLGUsbixkKSxTbi5saW5lU2VnbWVudFBsYW5lKHQsZSxuLGYpLHtwb3NpdGlvbnM6W3QsZSxpLGQsZl0saW5kaWNlczpbMiwwLDQsMiw0LDMsMSwzLDRdfTtlbHNlIHJldHVybiBTbi5saW5lU2VnbWVudFBsYW5lKGUsdCxuLGQpLFNuLmxpbmVTZWdtZW50UGxhbmUoaSx0LG4sZikse3Bvc2l0aW9uczpbdCxlLGksZCxmXSxpbmRpY2VzOlsxLDIsNCwxLDQsMywwLDMsNF19fTtubz1Tbn0pO2Z1bmN0aW9uIGlyKHQpe3RoaXMuX2VsbGlwc29pZD1aKHQsb3QuV0dTODQpLHRoaXMuX3NlbWltYWpvckF4aXM9dGhpcy5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsdGhpcy5fb25lT3ZlclNlbWltYWpvckF4aXM9MS90aGlzLl9zZW1pbWFqb3JBeGlzfXZhciBrcyxVbD1PKCgpPT57SHQoKTtyaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7X2UoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpci5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19fSk7aXIubWVyY2F0b3JBbmdsZVRvR2VvZGV0aWNMYXRpdHVkZT1mdW5jdGlvbih0KXtyZXR1cm4gTC5QSV9PVkVSX1RXTy0yKk1hdGguYXRhbihNYXRoLmV4cCgtdCkpfTtpci5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlPWZ1bmN0aW9uKHQpe3Q+aXIuTWF4aW11bUxhdGl0dWRlP3Q9aXIuTWF4aW11bUxhdGl0dWRlOnQ8LWlyLk1heGltdW1MYXRpdHVkZSYmKHQ9LWlyLk1heGltdW1MYXRpdHVkZSk7bGV0IGU9TWF0aC5zaW4odCk7cmV0dXJuIC41Kk1hdGgubG9nKCgxK2UpLygxLWUpKX07aXIuTWF4aW11bUxhdGl0dWRlPWlyLm1lcmNhdG9yQW5nbGVUb0dlb2RldGljTGF0aXR1ZGUoTWF0aC5QSSk7aXIucHJvdG90eXBlLnByb2plY3Q9ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLl9zZW1pbWFqb3JBeGlzLG49dC5sb25naXR1ZGUqaSxzPWlyLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUodC5sYXRpdHVkZSkqaSxvPXQuaGVpZ2h0O3JldHVybiBtKGUpPyhlLng9bixlLnk9cyxlLno9byxlKTpuZXcgbChuLHMsbyl9O2lyLnByb3RvdHlwZS51bnByb2plY3Q9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiY2FydGVzaWFuIGlzIHJlcXVpcmVkIik7bGV0IGk9dGhpcy5fb25lT3ZlclNlbWltYWpvckF4aXMsbj10LngqaSxzPWlyLm1lcmNhdG9yQW5nbGVUb0dlb2RldGljTGF0aXR1ZGUodC55KmkpLG89dC56O3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT1uLGUubGF0aXR1ZGU9cyxlLmhlaWdodD1vLGUpOm5ldyB1dChuLHMsbyl9O2tzPWlyfSk7ZnVuY3Rpb24gdWModCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBZKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKHQuYXJjVHlwZSkmJnQuYXJjVHlwZSE9PXRpLkdFT0RFU0lDJiZ0LmFyY1R5cGUhPT10aS5SSFVNQil0aHJvdyBuZXcgWSgiVmFsaWQgb3B0aW9ucyBmb3IgYXJjVHlwZSBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTt0aGlzLndpZHRoPVoodC53aWR0aCwxKSx0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLmdyYW51bGFyaXR5PVoodC5ncmFudWxhcml0eSw5OTk5KSx0aGlzLmxvb3A9Wih0Lmxvb3AsITEpLHRoaXMuYXJjVHlwZT1aKHQuYXJjVHlwZSx0aS5HRU9ERVNJQyksdGhpcy5fZWxsaXBzb2lkPW90LldHUzg0LHRoaXMuX3Byb2plY3Rpb25JbmRleD0wLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUdyb3VuZFBvbHlsaW5lR2VvbWV0cnkiLHRoaXMuX3NjZW5lM0RPbmx5PSExfWZ1bmN0aW9uIFNOKHQsZSxpLG4scyl7bGV0IG89TW8obix0LDAsd2l0KSxyPU1vKG4sdCxpLE13KSxhPU1vKG4sZSwwLFV3KSxoPWZoKHIsbyxNdyksQT1maChhLG8sVXcpO3JldHVybiBsLmNyb3NzKEEsaCxzKSxsLm5vcm1hbGl6ZShzLHMpfWZ1bmN0aW9uIGdOKHQsZSxpLG4scyxvLHIsYSxoLEEsZCl7aWYocz09PTApcmV0dXJuO2xldCBmO289PT10aS5HRU9ERVNJQz9mPW5ldyBiSSh0LGUscik6bz09PXRpLlJIVU1CJiYoZj1uZXcgZXIodCxlLHIpKTtsZXQgRT1mLnN1cmZhY2VEaXN0YW5jZTtpZihFPHMpcmV0dXJuO2xldCBfPVNOKHQsZSxuLHIsaml0KSxSPU1hdGguY2VpbChFL3MpLEk9RS9SLEM9SSxOPVItMSxUPWEubGVuZ3RoO2ZvcihsZXQgRj0wO0Y8TjtGKyspe2xldCBiPWYuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShDLHhpdCksRz1NbyhyLGIsaSxQaXQpLE09TW8ocixiLG4sSml0KTtsLnBhY2soXyxhLFQpLGwucGFjayhHLGgsVCksbC5wYWNrKE0sQSxUKSxkLnB1c2goYi5sYXRpdHVkZSksZC5wdXNoKGIubG9uZ2l0dWRlKSxUKz0zLEMrPUl9fWZ1bmN0aW9uIE1vKHQsZSxpLG4pe3JldHVybiB1dC5jbG9uZShlLFROKSxUTi5oZWlnaHQ9aSx1dC50b0NhcnRlc2lhbihUTix0LG4pfWZ1bmN0aW9uIGZoKHQsZSxpKXtyZXR1cm4gbC5zdWJ0cmFjdCh0LGUsaSksbC5ub3JtYWxpemUoaSxpKSxpfWZ1bmN0aW9uIFF3KHQsZSxpLG4pe3JldHVybiBuPWZoKHQsZSxuKSxuPWwuY3Jvc3MobixpLG4pLG49bC5ub3JtYWxpemUobixuKSxuPWwuY3Jvc3MoaSxuLG4pLG59ZnVuY3Rpb24gTk4odCxlLGksbixzKXtsZXQgbz1maChpLGUsbngpLHI9UXcodCxlLG8sSGl0KSxhPVF3KG4sZSxvLHZpdCk7aWYoTC5lcXVhbHNFcHNpbG9uKGwuZG90KHIsYSksWGl0LEwuRVBTSUxPTjUpKXJldHVybiBzPWwuY3Jvc3MobyxyLHMpLHM9bC5ub3JtYWxpemUocyxzKSxzO3M9bC5hZGQoYSxyLHMpLHM9bC5ub3JtYWxpemUocyxzKTtsZXQgaD1sLmNyb3NzKG8scyx6aXQpO3JldHVybiBsLmRvdChhLGgpPEtpdCYmKHM9bC5uZWdhdGUocyxzKSksc31mdW5jdGlvbiB5dyh0LGUsaSxuKXtsZXQgcz1maChpLGUsbm50KSxvPWwuZG90KHMsdCk7aWYobz50eHx8bzxEdyl7bGV0IHI9ZmgobixpLG54KSxhPW88RHc/TC5QSV9PVkVSX1RXTzotTC5QSV9PVkVSX1RXTyxoPUFlLmZyb21BeGlzQW5nbGUocixhLG9udCksQT1sdC5mcm9tUXVhdGVybmlvbihoLHNudCk7cmV0dXJuIGx0Lm11bHRpcGx5QnlWZWN0b3IoQSx0LHQpLCEwfXJldHVybiExfWZ1bmN0aW9uIHpFKHQsZSxpLG4scyl7bGV0IG89dXQudG9DYXJ0ZXNpYW4oZSx0Ll9lbGxpcHNvaWQscm50KSxyPWwuYWRkKG8saSx4dyksYT0hMSxoPXQuX2VsbGlwc29pZCxBPWguY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocix3dyk7TWF0aC5hYnMoZS5sb25naXR1ZGUtQS5sb25naXR1ZGUpPkwuUElfT1ZFUl9UV08mJihhPSEwLHI9bC5zdWJ0cmFjdChvLGkseHcpLEE9aC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhyLHd3KSksQS5oZWlnaHQ9MDtsZXQgZD10LnByb2plY3QoQSxzKTtyZXR1cm4gcz1sLnN1YnRyYWN0KGQsbixzKSxzLno9MCxzPWwubm9ybWFsaXplKHMscyksYSYmbC5uZWdhdGUocyxzKSxzfWZ1bmN0aW9uIEp3KHQsZSxpLG4scyxvKXtsZXQgcj1sLnN1YnRyYWN0KGUsdCxhbnQpO2wubm9ybWFsaXplKHIscik7bGV0IGE9aS1leCxoPWwubXVsdGlwbHlCeVNjYWxhcihyLGEsUHcpO2wuYWRkKHQsaCxzKTtsZXQgQT1uLWl4O2g9bC5tdWx0aXBseUJ5U2NhbGFyKHIsQSxQdyksbC5hZGQoZSxoLG8pfWZ1bmN0aW9uIFdJKHQsZSl7bGV0IGk9S2kuZ2V0UG9pbnREaXN0YW5jZShESSx0KSxuPUtpLmdldFBvaW50RGlzdGFuY2UoREksZSkscz1BbnQ7TC5lcXVhbHNFcHNpbG9uKGksMCxMLkVQU0lMT04yKT8ocz1maChlLHQscyksbC5tdWx0aXBseUJ5U2NhbGFyKHMsTC5FUFNJTE9OMixzKSxsLmFkZCh0LHMsdCkpOkwuZXF1YWxzRXBzaWxvbihuLDAsTC5FUFNJTE9OMikmJihzPWZoKHQsZSxzKSxsLm11bHRpcGx5QnlTY2FsYXIocyxMLkVQU0lMT04yLHMpLGwuYWRkKGUscyxlKSl9ZnVuY3Rpb24gaG50KHQsZSl7bGV0IGk9TWF0aC5hYnModC5sb25naXR1ZGUpLG49TWF0aC5hYnMoZS5sb25naXR1ZGUpO2lmKEwuZXF1YWxzRXBzaWxvbihpLEwuUEksTC5FUFNJTE9OMTEpKXtsZXQgcz1MLnNpZ24oZS5sb25naXR1ZGUpO3JldHVybiB0LmxvbmdpdHVkZT1zKihpLUwuRVBTSUxPTjExKSwxfWVsc2UgaWYoTC5lcXVhbHNFcHNpbG9uKG4sTC5QSSxMLkVQU0lMT04xMSkpe2xldCBzPUwuc2lnbih0LmxvbmdpdHVkZSk7cmV0dXJuIGUubG9uZ2l0dWRlPXMqKG4tTC5FUFNJTE9OMTEpLDJ9cmV0dXJuIDB9ZnVuY3Rpb24gWW50KHQsZSxpLG4scyxvLHIpe2xldCBhLGgsQT1lLl9lbGxpcHNvaWQsZD1pLmxlbmd0aC8zLTEsZj1kKjgsRT1mKjQsXz1kKjM2LFI9Zj42NTUzNT9uZXcgVWludDMyQXJyYXkoXyk6bmV3IFVpbnQxNkFycmF5KF8pLEk9bmV3IEZsb2F0NjRBcnJheShmKjMpLEM9bmV3IEZsb2F0MzJBcnJheShFKSxOPW5ldyBGbG9hdDMyQXJyYXkoRSksVD1uZXcgRmxvYXQzMkFycmF5KEUpLEY9bmV3IEZsb2F0MzJBcnJheShFKSxiPW5ldyBGbG9hdDMyQXJyYXkoRSksRyxNLFEsVTtyJiYoRz1uZXcgRmxvYXQzMkFycmF5KEUpLE09bmV3IEZsb2F0MzJBcnJheShFKSxRPW5ldyBGbG9hdDMyQXJyYXkoRSksVT1uZXcgRmxvYXQzMkFycmF5KGYqMikpO2xldCBrPW8ubGVuZ3RoLzIseT0wLGM9c3g7Yy5oZWlnaHQ9MDtsZXQgZz1veDtnLmhlaWdodD0wO2xldCBWPWp3LEQ9Yk47aWYocilmb3IoaD0wLGE9MTthPGs7YSsrKWMubGF0aXR1ZGU9b1toXSxjLmxvbmdpdHVkZT1vW2grMV0sZy5sYXRpdHVkZT1vW2grMl0sZy5sb25naXR1ZGU9b1toKzNdLFY9ZS5wcm9qZWN0KGMsViksRD1lLnByb2plY3QoZyxEKSx5Kz1sLmRpc3RhbmNlKFYsRCksaCs9MjtsZXQgdz1uLmxlbmd0aC8zO0Q9bC51bnBhY2sobiwwLEQpO2xldCB4PTA7Zm9yKGg9MyxhPTE7YTx3O2ErKylWPWwuY2xvbmUoRCxWKSxEPWwudW5wYWNrKG4saCxEKSx4Kz1sLmRpc3RhbmNlKFYsRCksaCs9MztsZXQgSDtoPTM7bGV0IGo9MCxYPTAsdHQ9MCxCPTAsSXQ9ITEsZ3Q9bC51bnBhY2soaSwwLHZ3KSxZdD1sLnVucGFjayhuLDAsYk4pLE10PWwudW5wYWNrKHMsMCx6dyk7aWYodCl7bGV0IGNlPWwudW5wYWNrKGksaS5sZW5ndGgtNixIdyk7eXcoTXQsY2UsZ3QsWXQpJiYoTXQ9bC5uZWdhdGUoTXQsTXQpKX1sZXQgQ3Q9MCx6dD0wLGt0PTA7Zm9yKGE9MDthPGQ7YSsrKXtsZXQgY2U9bC5jbG9uZShndCxIdyksamU9bC5jbG9uZShZdCxqdyksT2U9bC5jbG9uZShNdCxjbnQpO0l0JiYoT2U9bC5uZWdhdGUoT2UsT2UpKSxndD1sLnVucGFjayhpLGgsdncpLFl0PWwudW5wYWNrKG4saCxiTiksTXQ9bC51bnBhY2socyxoLHp3KSxJdD15dyhNdCxjZSxndCxZdCksYy5sYXRpdHVkZT1vW2pdLGMubG9uZ2l0dWRlPW9baisxXSxnLmxhdGl0dWRlPW9baisyXSxnLmxvbmdpdHVkZT1vW2orM107bGV0IE1lLFVlLENlLGJlO2lmKHIpe2xldCBDaT1obnQoYyxnKTtNZT1lLnByb2plY3QoYyxSbnQpLFVlPWUucHJvamVjdChnLFpudCk7bGV0IEpuPWZoKFVlLE1lLFh3KTtKbi55PU1hdGguYWJzKEpuLnkpLENlPUZOLGJlPVlOLENpPT09MHx8bC5kb3QoSm4sbC5VTklUX1kpPnR4PyhDZT16RShlLGMsT2UsTWUsRk4pLGJlPXpFKGUsZyxNdCxVZSxZTikpOkNpPT09MT8oYmU9ekUoZSxnLE10LFVlLFlOKSxDZS54PTAsQ2UueT1MLnNpZ24oYy5sb25naXR1ZGUtTWF0aC5hYnMoZy5sb25naXR1ZGUpKSxDZS56PTApOihDZT16RShlLGMsT2UsTWUsRk4pLGJlLng9MCxiZS55PUwuc2lnbihjLmxvbmdpdHVkZS1nLmxvbmdpdHVkZSksYmUuej0wKX1sZXQgbmk9bC5kaXN0YW5jZShqZSxZdCksemU9Qm4uZnJvbUNhcnRlc2lhbihjZSxUbnQpLEdlPWwuc3VidHJhY3QoZ3QsY2UsSW50KSxVaT1sLm5vcm1hbGl6ZShHZSxLdyksUmk9bC5zdWJ0cmFjdChqZSxjZSxwbnQpO1JpPWwubm9ybWFsaXplKFJpLFJpKTtsZXQgc2k9bC5jcm9zcyhVaSxSaSxLdyk7c2k9bC5ub3JtYWxpemUoc2ksc2kpO2xldCBxZT1sLmNyb3NzKFJpLE9lLENudCk7cWU9bC5ub3JtYWxpemUocWUscWUpO2xldCBWaT1sLnN1YnRyYWN0KFl0LGd0LHVudCk7Vmk9bC5ub3JtYWxpemUoVmksVmkpO2xldCBnbj1sLmNyb3NzKE10LFZpLGdudCk7Z249bC5ub3JtYWxpemUoZ24sZ24pO2xldCBEZT1uaS94LFllPUN0L3gsQmk9MCxBbixOZSxlaSxfbj0wLGhzPTA7aWYocil7Qmk9bC5kaXN0YW5jZShNZSxVZSksQW49Qm4uZnJvbUNhcnRlc2lhbihNZSxObnQpLE5lPWwuc3VidHJhY3QoVWUsTWUsWHcpLGVpPWwubm9ybWFsaXplKE5lLGJudCk7bGV0IENpPWVpLng7ZWkueD1laS55LGVpLnk9LUNpLF9uPUJpL3ksaHM9enQveX1mb3IoSD0wO0g8ODtIKyspe2xldCBDaT1CK0gqNCxKbj1YK0gqMixscz1DaSszLGFvPUg8ND8xOi0xLHFpPUg9PT0yfHxIPT09M3x8SD09PTZ8fEg9PT03PzE6LTE7bC5wYWNrKHplLmhpZ2gsQyxDaSksQ1tsc109R2UueCxsLnBhY2soemUubG93LE4sQ2kpLE5bbHNdPUdlLnksbC5wYWNrKHFlLFQsQ2kpLFRbbHNdPUdlLnosbC5wYWNrKGduLEYsQ2kpLEZbbHNdPURlKmFvLGwucGFjayhzaSxiLENpKTtsZXQgaG49WWUqcWk7aG49PT0wJiZxaTwwJiYoaG49OSksYltsc109aG4sciYmKEdbQ2ldPUFuLmhpZ2gueCxHW0NpKzFdPUFuLmhpZ2gueSxHW0NpKzJdPUFuLmxvdy54LEdbQ2krM109QW4ubG93LnksUVtDaV09LUNlLnksUVtDaSsxXT1DZS54LFFbQ2krMl09YmUueSxRW0NpKzNdPS1iZS54LE1bQ2ldPU5lLngsTVtDaSsxXT1OZS55LE1bQ2krMl09ZWkueCxNW0NpKzNdPWVpLnksVVtKbl09X24qYW8saG49aHMqcWksaG49PT0wJiZxaTwwJiYoaG49OSksVVtKbisxXT1obil9bGV0IFFpPUVudCxubj1fbnQsa2k9bW50LHNuPWZudCxDcz1YdC5mcm9tQ2FydG9ncmFwaGljQXJyYXkobG50LGRudCksY3M9RG8uZ2V0TWluaW11bU1heGltdW1IZWlnaHRzKENzLEEpLHhuPWNzLm1pbmltdW1UZXJyYWluSGVpZ2h0LFBuPWNzLm1heGltdW1UZXJyYWluSGVpZ2h0O2t0Kz1NYXRoLmFicyh4biksa3QrPU1hdGguYWJzKFBuKSxKdyhjZSxqZSx4bixQbixRaSxraSksSncoZ3QsWXQseG4sUG4sbm4sc24pO2xldCBBaT1sLm11bHRpcGx5QnlTY2FsYXIoc2ksTC5FUFNJTE9ONSxxdyk7bC5hZGQoUWksQWksUWkpLGwuYWRkKG5uLEFpLG5uKSxsLmFkZChraSxBaSxraSksbC5hZGQoc24sQWksc24pLFdJKFFpLG5uKSxXSShraSxzbiksbC5wYWNrKFFpLEksdHQpLGwucGFjayhubixJLHR0KzMpLGwucGFjayhzbixJLHR0KzYpLGwucGFjayhraSxJLHR0KzkpLEFpPWwubXVsdGlwbHlCeVNjYWxhcihzaSwtMipMLkVQU0lMT041LHF3KSxsLmFkZChRaSxBaSxRaSksbC5hZGQobm4sQWksbm4pLGwuYWRkKGtpLEFpLGtpKSxsLmFkZChzbixBaSxzbiksV0koUWksbm4pLFdJKGtpLHNuKSxsLnBhY2soUWksSSx0dCsxMiksbC5wYWNrKG5uLEksdHQrMTUpLGwucGFjayhzbixJLHR0KzE4KSxsLnBhY2soa2ksSSx0dCsyMSksais9MixoKz0zLFgrPTE2LHR0Kz0yNCxCKz0zMixDdCs9bmksenQrPUJpfWg9MDtsZXQgSnQ9MDtmb3IoYT0wO2E8ZDthKyspe2ZvcihIPTA7SDwkdztIKyspUltoK0hdPXJ4W0hdK0p0O0p0Kz04LGgrPSR3fWxldCBXdD1GbnQ7TnQuZnJvbVZlcnRpY2VzKGksbC5aRVJPLDMsV3RbMF0pLE50LmZyb21WZXJ0aWNlcyhuLGwuWkVSTywzLFd0WzFdKTtsZXQgRnQ9TnQuZnJvbUJvdW5kaW5nU3BoZXJlcyhXdCk7RnQucmFkaXVzKz1rdC8oZCoyKTtsZXQgZWU9e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWVzOkl9KSxzdGFydEhpQW5kRm9yd2FyZE9mZnNldFg6cGMoQyksc3RhcnRMb0FuZEZvcndhcmRPZmZzZXRZOnBjKE4pLHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFo6cGMoVCksZW5kTm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWDpwYyhGKSxyaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblk6cGMoYil9O3JldHVybiByJiYoZWUuc3RhcnRIaUxvMkQ9cGMoRyksZWUub2Zmc2V0QW5kUmlnaHQyRD1wYyhNKSxlZS5zdGFydEVuZE5vcm1hbHMyRD1wYyhRKSxlZS50ZXhjb29yZE5vcm1hbGl6YXRpb24yRD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mixub3JtYWxpemU6ITEsdmFsdWVzOlV9KSksbmV3IHNlKHthdHRyaWJ1dGVzOmVlLGluZGljZXM6Uixib3VuZGluZ1NwaGVyZTpGdH0pfWZ1bmN0aW9uIHBjKHQpe3JldHVybiBuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITEsdmFsdWVzOnR9KX12YXIgT04seWl0LHR4LER3LGV4LGl4LHdpdCxNdyxVdyx4aXQsUGl0LEppdCxqaXQsVE4sSGl0LHZpdCx6aXQsbngsS2l0LFhpdCxESSxxaXQsJGl0LHRudCxlbnQsaW50LEdJLEJJLGt3LEx3LG5udCxzbnQsb250LHd3LHJudCx4dyxhbnQsUHcsQW50LHN4LG94LGp3LGJOLEh3LHZ3LGNudCx6dyxsbnQsZG50LG1udCxmbnQsRW50LF9udCxSbnQsWm50LEZOLFlOLEludCxwbnQsdW50LEt3LENudCxnbnQsVG50LE5udCxYdyxibnQscXcsRm50LHJ4LCR3LEtFLFZOPU8oKCk9PntKRSgpO0JsKCk7T2EoKTtfaSgpO0h0KCk7cmkoKTthZSgpO29pKCk7YnQoKTttdCgpO1Z0KCk7VmUoKTtFTigpO0hFKCk7VGwoKTt6QSgpO3lpKCk7amkoKTtNbCgpO19lKCk7ZG4oKTtuaCgpOyRzKCk7cG4oKTtVbCgpO09OPVtPcyxrc10seWl0PU9OLmxlbmd0aCx0eD1NYXRoLmNvcyhMLnRvUmFkaWFucygzMCkpLER3PU1hdGguY29zKEwudG9SYWRpYW5zKDE1MCkpLGV4PTAsaXg9MWUzO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHVjLnByb3RvdHlwZSx7cGFja2VkTGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMSt0aGlzLl9wb3NpdGlvbnMubGVuZ3RoKjMrMSsxKzErb3QucGFja2VkTGVuZ3RoKzErMX19fSk7dWMuc2V0UHJvamVjdGlvbkFuZEVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2xldCBpPTA7Zm9yKGxldCBuPTA7bjx5aXQ7bisrKWlmKGUgaW5zdGFuY2VvZiBPTltuXSl7aT1uO2JyZWFrfXQuX3Byb2plY3Rpb25JbmRleD1pLHQuX2VsbGlwc29pZD1lLmVsbGlwc29pZH07d2l0PW5ldyBsLE13PW5ldyBsLFV3PW5ldyBsO3hpdD1uZXcgdXQsUGl0PW5ldyBsLEppdD1uZXcgbCxqaXQ9bmV3IGw7VE49bmV3IHV0O3VjLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpO2xldCBuPVooaSwwKSxzPXQuX3Bvc2l0aW9ucyxvPXMubGVuZ3RoO2VbbisrXT1vO2ZvcihsZXQgcj0wO3I8bzsrK3Ipe2xldCBhPXNbcl07bC5wYWNrKGEsZSxuKSxuKz0zfXJldHVybiBlW24rK109dC5ncmFudWxhcml0eSxlW24rK109dC5sb29wPzE6MCxlW24rK109dC5hcmNUeXBlLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9b3QucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9wcm9qZWN0aW9uSW5kZXgsZVtuKytdPXQuX3NjZW5lM0RPbmx5PzE6MCxlfTt1Yy51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPVooZSwwKSxzPXRbbisrXSxvPW5ldyBBcnJheShzKTtmb3IobGV0IEU9MDtFPHM7RSsrKW9bRV09bC51bnBhY2sodCxuKSxuKz0zO2xldCByPXRbbisrXSxhPXRbbisrXT09PTEsaD10W24rK10sQT1vdC51bnBhY2sodCxuKTtuKz1vdC5wYWNrZWRMZW5ndGg7bGV0IGQ9dFtuKytdLGY9dFtuKytdPT09MTtyZXR1cm4gbShpKXx8KGk9bmV3IHVjKHtwb3NpdGlvbnM6b30pKSxpLl9wb3NpdGlvbnM9byxpLmdyYW51bGFyaXR5PXIsaS5sb29wPWEsaS5hcmNUeXBlPWgsaS5fZWxsaXBzb2lkPUEsaS5fcHJvamVjdGlvbkluZGV4PWQsaS5fc2NlbmUzRE9ubHk9ZixpfTtIaXQ9bmV3IGwsdml0PW5ldyBsLHppdD1uZXcgbCxueD1uZXcgbCxLaXQ9MCxYaXQ9LTE7REk9S2kuZnJvbVBvaW50Tm9ybWFsKGwuWkVSTyxsLlVOSVRfWSkscWl0PW5ldyBsLCRpdD1uZXcgbCx0bnQ9bmV3IGwsZW50PW5ldyBsLGludD1uZXcgbCxHST1uZXcgbCxCST1uZXcgdXQsa3c9bmV3IHV0LEx3PW5ldyB1dDt1Yy5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT0hdC5fc2NlbmUzRE9ubHksaT10Lmxvb3Asbj10Ll9lbGxpcHNvaWQscz10LmdyYW51bGFyaXR5LG89dC5hcmNUeXBlLHI9bmV3IE9OW3QuX3Byb2plY3Rpb25JbmRleF0obiksYT1leCxoPWl4LEEsZCxmPXQuX3Bvc2l0aW9ucyxFPWYubGVuZ3RoO0U9PT0yJiYoaT0hMSk7bGV0IF8sUixJLEMsTj1uZXcgZXIodm9pZCAwLHZvaWQgMCxuKSxULEYsYixHPVtmWzBdXTtmb3IoZD0wO2Q8RS0xO2QrKylfPWZbZF0sUj1mW2QrMV0sVD1uby5saW5lU2VnbWVudFBsYW5lKF8sUixESSxHSSksbShUKSYmIWwuZXF1YWxzRXBzaWxvbihULF8sTC5FUFNJTE9ONykmJiFsLmVxdWFsc0Vwc2lsb24oVCxSLEwuRVBTSUxPTjcpJiYodC5hcmNUeXBlPT09dGkuR0VPREVTSUM/Ry5wdXNoKGwuY2xvbmUoVCkpOnQuYXJjVHlwZT09PXRpLlJIVU1CJiYoYj1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFQsQkkpLmxvbmdpdHVkZSxJPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoXyxCSSksQz1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFIsa3cpLE4uc2V0RW5kUG9pbnRzKEksQyksRj1OLmZpbmRJbnRlcnNlY3Rpb25XaXRoTG9uZ2l0dWRlKGIsTHcpLFQ9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihGLEdJKSxtKFQpJiYhbC5lcXVhbHNFcHNpbG9uKFQsXyxMLkVQU0lMT043KSYmIWwuZXF1YWxzRXBzaWxvbihULFIsTC5FUFNJTE9ONykmJkcucHVzaChsLmNsb25lKFQpKSkpLEcucHVzaChSKTtpJiYoXz1mW0UtMV0sUj1mWzBdLFQ9bm8ubGluZVNlZ21lbnRQbGFuZShfLFIsREksR0kpLG0oVCkmJiFsLmVxdWFsc0Vwc2lsb24oVCxfLEwuRVBTSUxPTjcpJiYhbC5lcXVhbHNFcHNpbG9uKFQsUixMLkVQU0lMT043KSYmKHQuYXJjVHlwZT09PXRpLkdFT0RFU0lDP0cucHVzaChsLmNsb25lKFQpKTp0LmFyY1R5cGU9PT10aS5SSFVNQiYmKGI9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhULEJJKS5sb25naXR1ZGUsST1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKF8sQkkpLEM9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhSLGt3KSxOLnNldEVuZFBvaW50cyhJLEMpLEY9Ti5maW5kSW50ZXJzZWN0aW9uV2l0aExvbmdpdHVkZShiLEx3KSxUPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRixHSSksbShUKSYmIWwuZXF1YWxzRXBzaWxvbihULF8sTC5FUFNJTE9ONykmJiFsLmVxdWFsc0Vwc2lsb24oVCxSLEwuRVBTSUxPTjcpJiZHLnB1c2gobC5jbG9uZShUKSkpKSk7bGV0IE09Ry5sZW5ndGgsUT1uZXcgQXJyYXkoTSk7Zm9yKGQ9MDtkPE07ZCsrKXtsZXQgSXQ9dXQuZnJvbUNhcnRlc2lhbihHW2RdLG4pO0l0LmhlaWdodD0wLFFbZF09SXR9aWYoUT1YbihRLHV0LmVxdWFsc0Vwc2lsb24pLE09US5sZW5ndGgsTTwyKXJldHVybjtsZXQgVT1bXSxrPVtdLHk9W10sYz1bXSxnPXFpdCxWPSRpdCxEPXRudCx3PWVudCx4PWludCxIPVFbMF0saj1RWzFdLFg9UVtNLTFdO2ZvcihnPU1vKG4sWCxhLGcpLHc9TW8obixqLGEsdyksVj1NbyhuLEgsYSxWKSxEPU1vKG4sSCxoLEQpLGk/eD1OTihnLFYsRCx3LHgpOng9U04oSCxqLGgsbix4KSxsLnBhY2soeCxrLDApLGwucGFjayhWLHksMCksbC5wYWNrKEQsYywwKSxVLnB1c2goSC5sYXRpdHVkZSksVS5wdXNoKEgubG9uZ2l0dWRlKSxnTihILGosYSxoLHMsbyxuLGsseSxjLFUpLGQ9MTtkPE0tMTsrK2Qpe2c9bC5jbG9uZShWLGcpLFY9bC5jbG9uZSh3LFYpO2xldCBJdD1RW2RdO01vKG4sSXQsaCxEKSxNbyhuLFFbZCsxXSxhLHcpLE5OKGcsVixELHcseCksQT1rLmxlbmd0aCxsLnBhY2soeCxrLEEpLGwucGFjayhWLHksQSksbC5wYWNrKEQsYyxBKSxVLnB1c2goSXQubGF0aXR1ZGUpLFUucHVzaChJdC5sb25naXR1ZGUpLGdOKFFbZF0sUVtkKzFdLGEsaCxzLG8sbixrLHksYyxVKX1sZXQgdHQ9UVtNLTFdLEI9UVtNLTJdO2lmKFY9TW8obix0dCxhLFYpLEQ9TW8obix0dCxoLEQpLGkpe2xldCBJdD1RWzBdO2c9TW8obixCLGEsZyksdz1NbyhuLEl0LGEsdykseD1OTihnLFYsRCx3LHgpfWVsc2UgeD1TTihCLHR0LGgsbix4KTtpZihBPWsubGVuZ3RoLGwucGFjayh4LGssQSksbC5wYWNrKFYseSxBKSxsLnBhY2soRCxjLEEpLFUucHVzaCh0dC5sYXRpdHVkZSksVS5wdXNoKHR0LmxvbmdpdHVkZSksaSl7Zm9yKGdOKHR0LEgsYSxoLHMsbyxuLGsseSxjLFUpLEE9ay5sZW5ndGgsZD0wO2Q8MzsrK2Qpa1tBK2RdPWtbZF0seVtBK2RdPXlbZF0sY1tBK2RdPWNbZF07VS5wdXNoKEgubGF0aXR1ZGUpLFUucHVzaChILmxvbmdpdHVkZSl9cmV0dXJuIFludChpLHIseSxjLGssVSxlKX07bm50PW5ldyBsLHNudD1uZXcgbHQsb250PW5ldyBBZTt3dz1uZXcgdXQscm50PW5ldyBsLHh3PW5ldyBsO2FudD1uZXcgbCxQdz1uZXcgbDtBbnQ9bmV3IGw7c3g9bmV3IHV0LG94PW5ldyB1dCxqdz1uZXcgbCxiTj1uZXcgbCxIdz1uZXcgbCx2dz1uZXcgbCxjbnQ9bmV3IGwsenc9bmV3IGwsbG50PVtzeCxveF0sZG50PW5ldyBYdCxtbnQ9bmV3IGwsZm50PW5ldyBsLEVudD1uZXcgbCxfbnQ9bmV3IGwsUm50PW5ldyBsLFpudD1uZXcgbCxGTj1uZXcgbCxZTj1uZXcgbCxJbnQ9bmV3IGwscG50PW5ldyBsLHVudD1uZXcgbCxLdz1uZXcgbCxDbnQ9bmV3IGwsZ250PW5ldyBsLFRudD1uZXcgQm4sTm50PW5ldyBCbixYdz1uZXcgbCxibnQ9bmV3IGwscXc9bmV3IGwsRm50PVtuZXcgTnQsbmV3IE50XSxyeD1bMCwyLDEsMCwzLDIsMCw3LDMsMCw0LDcsMCw1LDQsMCwxLDUsNSw3LDQsNSw2LDcsNSwyLDYsNSwxLDIsMyw2LDIsMyw3LDZdLCR3PXJ4Lmxlbmd0aDt1Yy5fcHJvamVjdE5vcm1hbD16RTtLRT11Y30pO3ZhciBheCxBeD1PKCgpPT57YXg9YGluIHZlYzQgdl9zdGFydFBsYW5lTm9ybWFsRWNBbmRIYWxmV2lkdGg7CmluIHZlYzQgdl9lbmRQbGFuZU5vcm1hbEVjQW5kQmF0Y2hJZDsKaW4gdmVjNCB2X3JpZ2h0UGxhbmVFQzsgLy8gVGVjaG5pY2FsbHkgY2FuIGNvbXB1dGUgZGlzdGFuY2UgZm9yIHRoaXMgaGVyZQppbiB2ZWM0IHZfZW5kRWNBbmRTdGFydEVjWDsKaW4gdmVjNCB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWjsKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKaW4gdmVjNCB2X2NvbG9yOwojZW5kaWYKCnZvaWQgbWFpbih2b2lkKQp7CiAgICBmbG9hdCBsb2dEZXB0aE9yRGVwdGggPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoY3ptX3NjZW5lTW9kZSA9PSBjem1fc2NlbmVNb2RlMkQsIGdsX0ZyYWdDb29yZC56LCBjem1fdW5wYWNrRGVwdGgodGV4dHVyZShjem1fZ2xvYmVEZXB0aFRleHR1cmUsIGdsX0ZyYWdDb29yZC54eSAvIGN6bV92aWV3cG9ydC56dykpKTsKICAgIHZlYzMgZWNTdGFydCA9IHZlYzModl9lbmRFY0FuZFN0YXJ0RWNYLncsIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kU3RhcnRFY1laLnp3KTsKCiAgICAvLyBEaXNjYXJkIGZvciBza3kKICAgIGlmIChsb2dEZXB0aE9yRGVwdGggPT0gMC4wKSB7CiNpZmRlZiBERUJVR19TSE9XX1ZPTFVNRQogICAgICAgIG91dF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDAuNSk7CiAgICAgICAgcmV0dXJuOwojZWxzZSAvLyBERUJVR19TSE9XX1ZPTFVNRQogICAgICAgIGRpc2NhcmQ7CiNlbmRpZiAvLyBERUJVR19TSE9XX1ZPTFVNRQogICAgfQoKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV93aW5kb3dUb0V5ZUNvb3JkaW5hdGVzKGdsX0ZyYWdDb29yZC54eSwgbG9nRGVwdGhPckRlcHRoKTsKICAgIGV5ZUNvb3JkaW5hdGUgLz0gZXllQ29vcmRpbmF0ZS53OwoKICAgIGZsb2F0IGhhbGZNYXhXaWR0aCA9IHZfc3RhcnRQbGFuZU5vcm1hbEVjQW5kSGFsZldpZHRoLncgKiBjem1fbWV0ZXJzUGVyUGl4ZWwoZXllQ29vcmRpbmF0ZSk7CiAgICAvLyBDaGVjayBkaXN0YW5jZSBvZiB0aGUgZXllIGNvb3JkaW5hdGUgYWdhaW5zdCB0aGUgcmlnaHQtZmFjaW5nIHBsYW5lCiAgICBmbG9hdCB3aWR0aHdpc2VEaXN0YW5jZSA9IGN6bV9wbGFuZURpc3RhbmNlKHZfcmlnaHRQbGFuZUVDLCBleWVDb29yZGluYXRlLnh5eik7CgogICAgLy8gQ2hlY2sgZXllIGNvb3JkaW5hdGUgYWdhaW5zdCB0aGUgbWl0ZXJpbmcgcGxhbmVzCiAgICBmbG9hdCBkaXN0YW5jZUZyb21TdGFydCA9IGN6bV9wbGFuZURpc3RhbmNlKHZfc3RhcnRQbGFuZU5vcm1hbEVjQW5kSGFsZldpZHRoLnh5eiwgLWRvdChlY1N0YXJ0LCB2X3N0YXJ0UGxhbmVOb3JtYWxFY0FuZEhhbGZXaWR0aC54eXopLCBleWVDb29yZGluYXRlLnh5eik7CiAgICBmbG9hdCBkaXN0YW5jZUZyb21FbmQgPSBjem1fcGxhbmVEaXN0YW5jZSh2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLnh5eiwgLWRvdCh2X2VuZEVjQW5kU3RhcnRFY1gueHl6LCB2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLnh5eiksIGV5ZUNvb3JkaW5hdGUueHl6KTsKCiAgICBpZiAoYWJzKHdpZHRod2lzZURpc3RhbmNlKSA+IGhhbGZNYXhXaWR0aCB8fCBkaXN0YW5jZUZyb21TdGFydCA8IDAuMCB8fCBkaXN0YW5jZUZyb21FbmQgPCAwLjApIHsKI2lmZGVmIERFQlVHX1NIT1dfVk9MVU1FCiAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMC41KTsKICAgICAgICByZXR1cm47CiNlbHNlIC8vIERFQlVHX1NIT1dfVk9MVU1FCiAgICAgICAgZGlzY2FyZDsKI2VuZGlmIC8vIERFQlVHX1NIT1dfVk9MVU1FCiAgICB9CgogICAgLy8gQ2hlY2sgZGlzdGFuY2Ugb2YgdGhlIGV5ZSBjb29yZGluYXRlIGFnYWluc3Qgc3RhcnQgYW5kIGVuZCBwbGFuZXMgd2l0aCBub3JtYWxzIGluIHRoZSByaWdodCBwbGFuZS4KICAgIC8vIEZvciBjb21wdXRpbmcgdW5za2V3ZWQgbGVuZ3Rod2lzZSB0ZXh0dXJlIGNvb3JkaW5hdGUuCiAgICAvLyBDYW4gYWxzbyBiZSB1c2VkIGZvciBjbGlwcGluZyBleHRyZW1lbHkgcG9pbnR5IG1pdGVycywgYnV0IGluIHByYWN0aWNlIHVubmVjZXNzYXJ5IGJlY2F1c2Ugb2YgbWl0ZXIgYnJlYWtpbmcuCgogICAgLy8gYWxpZ25lZCBwbGFuZTogY3Jvc3MgdGhlIHJpZ2h0IHBsYW5lIG5vcm1hbCB3aXRoIG1pdGVyIHBsYW5lIG5vcm1hbCwgdGhlbiBjcm9zcyB0aGUgcmVzdWx0IHdpdGggcmlnaHQgYWdhaW4gdG8gcG9pbnQgaXQgbW9yZSAiZm9yd2FyZCIKICAgIHZlYzMgYWxpZ25lZFBsYW5lTm9ybWFsOwoKICAgIC8vIHN0YXJ0IGFsaWduZWQgcGxhbmUKICAgIGFsaWduZWRQbGFuZU5vcm1hbCA9IGNyb3NzKHZfcmlnaHRQbGFuZUVDLnh5eiwgdl9zdGFydFBsYW5lTm9ybWFsRWNBbmRIYWxmV2lkdGgueHl6KTsKICAgIGFsaWduZWRQbGFuZU5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhhbGlnbmVkUGxhbmVOb3JtYWwsIHZfcmlnaHRQbGFuZUVDLnh5eikpOwogICAgZGlzdGFuY2VGcm9tU3RhcnQgPSBjem1fcGxhbmVEaXN0YW5jZShhbGlnbmVkUGxhbmVOb3JtYWwsIC1kb3QoYWxpZ25lZFBsYW5lTm9ybWFsLCBlY1N0YXJ0KSwgZXllQ29vcmRpbmF0ZS54eXopOwoKICAgIC8vIGVuZCBhbGlnbmVkIHBsYW5lCiAgICBhbGlnbmVkUGxhbmVOb3JtYWwgPSBjcm9zcyh2X3JpZ2h0UGxhbmVFQy54eXosIHZfZW5kUGxhbmVOb3JtYWxFY0FuZEJhdGNoSWQueHl6KTsKICAgIGFsaWduZWRQbGFuZU5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhhbGlnbmVkUGxhbmVOb3JtYWwsIHZfcmlnaHRQbGFuZUVDLnh5eikpOwogICAgZGlzdGFuY2VGcm9tRW5kID0gY3ptX3BsYW5lRGlzdGFuY2UoYWxpZ25lZFBsYW5lTm9ybWFsLCAtZG90KGFsaWduZWRQbGFuZU5vcm1hbCwgdl9lbmRFY0FuZFN0YXJ0RWNYLnh5eiksIGV5ZUNvb3JkaW5hdGUueHl6KTsKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIG91dF9GcmFnQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZfY29sb3IpOwojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIC8vIENsYW1wIC0gZGlzdGFuY2UgdG8gYWxpZ25lZCBwbGFuZXMgbWF5IGJlIG5lZ2F0aXZlIGR1ZSB0byBtaXRlcmluZywKICAgIC8vIHNvIGZyYWdtZW50IHRleHR1cmUgY29vcmRpbmF0ZSBtaWdodCBiZSBvdXQtb2YtYm91bmRzLgogICAgZmxvYXQgcyA9IGNsYW1wKGRpc3RhbmNlRnJvbVN0YXJ0IC8gKGRpc3RhbmNlRnJvbVN0YXJ0ICsgZGlzdGFuY2VGcm9tRW5kKSwgMC4wLCAxLjApOwogICAgcyA9IChzICogdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueCkgKyB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi55OwogICAgZmxvYXQgdCA9ICh3aWR0aHdpc2VEaXN0YW5jZSArIGhhbGZNYXhXaWR0aCkgLyAoMi4wICogaGFsZk1heFdpZHRoKTsKCiAgICBjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0OwoKICAgIG1hdGVyaWFsSW5wdXQucyA9IHM7CiAgICBtYXRlcmlhbElucHV0LnN0ID0gdmVjMihzLCB0KTsKICAgIG1hdGVyaWFsSW5wdXQuc3RyID0gdmVjMyhzLCB0LCAwLjApOwoKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIG91dF9GcmFnQ29sb3IgPSB2ZWM0KG1hdGVyaWFsLmRpZmZ1c2UgKyBtYXRlcmlhbC5lbWlzc2lvbiwgbWF0ZXJpYWwuYWxwaGEpOwojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCgogICAgLy8gUHJlbXVsdGlwbHkgYWxwaGEuIFJlcXVpcmVkIGZvciBjbGFzc2lmaWNhdGlvbiBwcmltaXRpdmVzIG9uIHRyYW5zbHVjZW50IGdsb2JlLgogICAgb3V0X0ZyYWdDb2xvci5yZ2IgKj0gb3V0X0ZyYWdDb2xvci5hOwoKICAgIGN6bV93cml0ZURlcHRoQ2xhbXAoKTsKfQpgfSk7dmFyIGh4LGN4PU8oKCk9PntoeD1gaW4gdmVjMyB2X2ZvcndhcmREaXJlY3Rpb25FQzsKaW4gdmVjMyB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZEhhbGZXaWR0aDsKaW4gZmxvYXQgdl9iYXRjaElkOwoKI2lmZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgppbiB2ZWM0IHZfY29sb3I7CiNlbHNlCmluIHZlYzIgdl9hbGlnbmVkUGxhbmVEaXN0YW5jZXM7CmluIGZsb2F0IHZfdGV4Y29vcmRUOwojZW5kaWYKCmZsb2F0IHJheVBsYW5lRGlzdGFuY2VVbnNhZmUodmVjMyBvcmlnaW4sIHZlYzMgZGlyZWN0aW9uLCB2ZWMzIHBsYW5lTm9ybWFsLCBmbG9hdCBwbGFuZURpc3RhbmNlKSB7CiAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIHJheSB0byBldmVyIGJlIHBhcmFsbGVsIHRvIHRoZSBwbGFuZQogICAgcmV0dXJuICgtcGxhbmVEaXN0YW5jZSAtIGRvdChwbGFuZU5vcm1hbCwgb3JpZ2luKSkgLyBkb3QocGxhbmVOb3JtYWwsIGRpcmVjdGlvbik7Cn0KCnZvaWQgbWFpbih2b2lkKQp7CiAgICB2ZWM0IGV5ZUNvb3JkaW5hdGUgPSBnbF9GcmFnQ29vcmQ7CiAgICBleWVDb29yZGluYXRlIC89IGV5ZUNvb3JkaW5hdGUudzsKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIG91dF9GcmFnQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZfY29sb3IpOwojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIC8vIFVzZSBkaXN0YW5jZXMgZm9yIHBsYW5lcyBhbGlnbmVkIHdpdGggc2VnbWVudCB0byBwcmV2ZW50IHNrZXcgaW4gZGFzaGluZwogICAgZmxvYXQgZGlzdGFuY2VGcm9tU3RhcnQgPSByYXlQbGFuZURpc3RhbmNlVW5zYWZlKGV5ZUNvb3JkaW5hdGUueHl6LCAtdl9mb3J3YXJkRGlyZWN0aW9uRUMsIHZfZm9yd2FyZERpcmVjdGlvbkVDLnh5eiwgdl9hbGlnbmVkUGxhbmVEaXN0YW5jZXMueCk7CiAgICBmbG9hdCBkaXN0YW5jZUZyb21FbmQgPSByYXlQbGFuZURpc3RhbmNlVW5zYWZlKGV5ZUNvb3JkaW5hdGUueHl6LCB2X2ZvcndhcmREaXJlY3Rpb25FQywgLXZfZm9yd2FyZERpcmVjdGlvbkVDLnh5eiwgdl9hbGlnbmVkUGxhbmVEaXN0YW5jZXMueSk7CgogICAgLy8gQ2xhbXAgLSBkaXN0YW5jZSB0byBhbGlnbmVkIHBsYW5lcyBtYXkgYmUgbmVnYXRpdmUgZHVlIHRvIG1pdGVyaW5nCiAgICBkaXN0YW5jZUZyb21TdGFydCA9IG1heCgwLjAsIGRpc3RhbmNlRnJvbVN0YXJ0KTsKICAgIGRpc3RhbmNlRnJvbUVuZCA9IG1heCgwLjAsIGRpc3RhbmNlRnJvbUVuZCk7CgogICAgZmxvYXQgcyA9IGRpc3RhbmNlRnJvbVN0YXJ0IC8gKGRpc3RhbmNlRnJvbVN0YXJ0ICsgZGlzdGFuY2VGcm9tRW5kKTsKICAgIHMgPSAocyAqIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kSGFsZldpZHRoLngpICsgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGgueTsKCiAgICBjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0OwoKICAgIG1hdGVyaWFsSW5wdXQucyA9IHM7CiAgICBtYXRlcmlhbElucHV0LnN0ID0gdmVjMihzLCB2X3RleGNvb3JkVCk7CiAgICBtYXRlcmlhbElucHV0LnN0ciA9IHZlYzMocywgdl90ZXhjb29yZFQsIDAuMCk7CgogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgb3V0X0ZyYWdDb2xvciA9IHZlYzQobWF0ZXJpYWwuZGlmZnVzZSArIG1hdGVyaWFsLmVtaXNzaW9uLCBtYXRlcmlhbC5hbHBoYSk7CiNlbmRpZiAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKfQpgfSk7dmFyIGx4LGR4PU8oKCk9PntseD1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwoKaW4gdmVjNCBzdGFydEhpQW5kRm9yd2FyZE9mZnNldFg7CmluIHZlYzQgc3RhcnRMb0FuZEZvcndhcmRPZmZzZXRZOwppbiB2ZWM0IHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFo7CmluIHZlYzQgZW5kTm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWDsKaW4gdmVjNCByaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblk7CmluIHZlYzQgc3RhcnRIaUxvMkQ7CmluIHZlYzQgb2Zmc2V0QW5kUmlnaHQyRDsKaW4gdmVjNCBzdGFydEVuZE5vcm1hbHMyRDsKaW4gdmVjMiB0ZXhjb29yZE5vcm1hbGl6YXRpb24yRDsKCmluIGZsb2F0IGJhdGNoSWQ7CgpvdXQgdmVjMyB2X2ZvcndhcmREaXJlY3Rpb25FQzsKb3V0IHZlYzMgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGg7Cm91dCBmbG9hdCB2X2JhdGNoSWQ7CgovLyBGb3IgbWF0ZXJpYWxzCiNpZmRlZiBXSURUSF9WQVJZSU5HCm91dCBmbG9hdCB2X3dpZHRoOwojZW5kaWYKI2lmZGVmIEFOR0xFX1ZBUllJTkcKb3V0IGZsb2F0IHZfcG9seWxpbmVBbmdsZTsKI2VuZGlmCgojaWZkZWYgUEVSX0lOU1RBTkNFX0NPTE9SCm91dCB2ZWM0IHZfY29sb3I7CiNlbHNlCm91dCB2ZWMyIHZfYWxpZ25lZFBsYW5lRGlzdGFuY2VzOwpvdXQgZmxvYXQgdl90ZXhjb29yZFQ7CiNlbmRpZgoKLy8gTW9ycGhpbmcgcGxhbmVzIHVzaW5nIFNMRVJQIG9yIE5MRVJQIGRvZXNuJ3Qgc2VlbSB0byB3b3JrLCBzbyBpbnN0ZWFkIGRyYXcgdGhlIG1hdGVyaWFsIGRpcmVjdGx5IG9uIHRoZSBzaGFkb3cgdm9sdW1lLgovLyBNb3JwaCB2aWV3cyBhcmUgZnJvbSB2ZXJ5IGZhciBhd2F5IGFuZCBhcmVuJ3QgbWVhbnQgdG8gYmUgdXNlZCBwcmVjaXNlbHksIHNvIHRoaXMgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCnZvaWQgbWFpbigpCnsKICAgIHZfYmF0Y2hJZCA9IGJhdGNoSWQ7CgogICAgLy8gU3RhcnQgcG9zaXRpb24KICAgIHZlYzQgcG9zUmVsYXRpdmVUb0V5ZTJEID0gY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHN0YXJ0SGlMbzJELnh5KSwgdmVjMygwLjAsIHN0YXJ0SGlMbzJELnp3KSk7CiAgICB2ZWM0IHBvc1JlbGF0aXZlVG9FeWUzRCA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHN0YXJ0SGlBbmRGb3J3YXJkT2Zmc2V0WC54eXosIHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WS54eXopOwogICAgdmVjNCBwb3NSZWxhdGl2ZVRvRXllID0gY3ptX2NvbHVtYnVzVmlld01vcnBoKHBvc1JlbGF0aXZlVG9FeWUyRCwgcG9zUmVsYXRpdmVUb0V5ZTNELCBjem1fbW9ycGhUaW1lKTsKICAgIHZlYzMgcG9zRWMyRCA9IChjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHBvc1JlbGF0aXZlVG9FeWUyRCkueHl6OwogICAgdmVjMyBwb3NFYzNEID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogcG9zUmVsYXRpdmVUb0V5ZTNEKS54eXo7CiAgICB2ZWMzIHN0YXJ0RUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllKS54eXo7CgogICAgLy8gU3RhcnQgcGxhbmUKICAgIHZlYzQgc3RhcnRQbGFuZTJEOwogICAgdmVjNCBzdGFydFBsYW5lM0Q7CiAgICBzdGFydFBsYW5lMkQueHl6ID0gY3ptX25vcm1hbCAqIHZlYzMoMC4wLCBzdGFydEVuZE5vcm1hbHMyRC54eSk7CiAgICBzdGFydFBsYW5lM0QueHl6ID0gY3ptX25vcm1hbCAqIHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFoueHl6OwogICAgc3RhcnRQbGFuZTJELncgPSAtZG90KHN0YXJ0UGxhbmUyRC54eXosIHBvc0VjMkQpOwogICAgc3RhcnRQbGFuZTNELncgPSAtZG90KHN0YXJ0UGxhbmUzRC54eXosIHBvc0VjM0QpOwoKICAgIC8vIFJpZ2h0IHBsYW5lCiAgICB2ZWM0IHJpZ2h0UGxhbmUyRDsKICAgIHZlYzQgcmlnaHRQbGFuZTNEOwogICAgcmlnaHRQbGFuZTJELnh5eiA9IGN6bV9ub3JtYWwgKiB2ZWMzKDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC56dyk7CiAgICByaWdodFBsYW5lM0QueHl6ID0gY3ptX25vcm1hbCAqIHJpZ2h0Tm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWS54eXo7CiAgICByaWdodFBsYW5lMkQudyA9IC1kb3QocmlnaHRQbGFuZTJELnh5eiwgcG9zRWMyRCk7CiAgICByaWdodFBsYW5lM0QudyA9IC1kb3QocmlnaHRQbGFuZTNELnh5eiwgcG9zRWMzRCk7CgogICAgLy8gRW5kIHBvc2l0aW9uCiAgICBwb3NSZWxhdGl2ZVRvRXllMkQgPSBwb3NSZWxhdGl2ZVRvRXllMkQgKyB2ZWM0KDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC54eSwgMC4wKTsKICAgIHBvc1JlbGF0aXZlVG9FeWUzRCA9IHBvc1JlbGF0aXZlVG9FeWUzRCArIHZlYzQoc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYLncsIHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WS53LCBzdGFydE5vcm1hbEFuZEZvcndhcmRPZmZzZXRaLncsIDAuMCk7CiAgICBwb3NSZWxhdGl2ZVRvRXllID0gY3ptX2NvbHVtYnVzVmlld01vcnBoKHBvc1JlbGF0aXZlVG9FeWUyRCwgcG9zUmVsYXRpdmVUb0V5ZTNELCBjem1fbW9ycGhUaW1lKTsKICAgIHBvc0VjMkQgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllMkQpLnh5ejsKICAgIHBvc0VjM0QgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllM0QpLnh5ejsKICAgIHZlYzMgZW5kRUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllKS54eXo7CiAgICB2ZWMzIGZvcndhcmRFYzNEID0gY3ptX25vcm1hbCAqIG5vcm1hbGl6ZSh2ZWMzKHN0YXJ0SGlBbmRGb3J3YXJkT2Zmc2V0WC53LCBzdGFydExvQW5kRm9yd2FyZE9mZnNldFkudywgc3RhcnROb3JtYWxBbmRGb3J3YXJkT2Zmc2V0Wi53KSk7CiAgICB2ZWMzIGZvcndhcmRFYzJEID0gY3ptX25vcm1hbCAqIG5vcm1hbGl6ZSh2ZWMzKDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC54eSkpOwoKICAgIC8vIEVuZCBwbGFuZQogICAgdmVjNCBlbmRQbGFuZTJEOwogICAgdmVjNCBlbmRQbGFuZTNEOwogICAgZW5kUGxhbmUyRC54eXogPSBjem1fbm9ybWFsICogdmVjMygwLjAsIHN0YXJ0RW5kTm9ybWFsczJELnp3KTsKICAgIGVuZFBsYW5lM0QueHl6ID0gY3ptX25vcm1hbCAqIGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgueHl6OwogICAgZW5kUGxhbmUyRC53ID0gLWRvdChlbmRQbGFuZTJELnh5eiwgcG9zRWMyRCk7CiAgICBlbmRQbGFuZTNELncgPSAtZG90KGVuZFBsYW5lM0QueHl6LCBwb3NFYzNEKTsKCiAgICAvLyBGb3J3YXJkIGRpcmVjdGlvbgogICAgdl9mb3J3YXJkRGlyZWN0aW9uRUMgPSBub3JtYWxpemUoZW5kRUMgLSBzdGFydEVDKTsKCiAgICB2ZWMyIGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uMkQ7CiAgICBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjJELnggPSBhYnModGV4Y29vcmROb3JtYWxpemF0aW9uMkQueCk7CiAgICBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjJELnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkodGV4Y29vcmROb3JtYWxpemF0aW9uMkQueSA+IDEuMCwgMC4wLCBhYnModGV4Y29vcmROb3JtYWxpemF0aW9uMkQueSkpOwogICAgdmVjMiBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjNEOwogICAgY2xlYW5UZXhjb29yZE5vcm1hbGl6YXRpb24zRC54ID0gYWJzKGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgudyk7CiAgICBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjNELnkgPSByaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblkudzsKICAgIGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uM0QueSA9IGN6bV9icmFuY2hGcmVlVGVybmFyeShjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjNELnkgPiAxLjAsIDAuMCwgYWJzKGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uM0QueSkpOwoKICAgIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kSGFsZldpZHRoLnh5ID0gbWl4KGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uMkQsIGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uM0QsIGN6bV9tb3JwaFRpbWUpOwoKI2lmZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgogICAgdl9jb2xvciA9IGN6bV9iYXRjaFRhYmxlX2NvbG9yKGJhdGNoSWQpOwojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIC8vIEZvciBjb21wdXRpbmcgdGV4dHVyZSBjb29yZGluYXRlcwoKICAgIHZfYWxpZ25lZFBsYW5lRGlzdGFuY2VzLnggPSAtZG90KHZfZm9yd2FyZERpcmVjdGlvbkVDLCBzdGFydEVDKTsKICAgIHZfYWxpZ25lZFBsYW5lRGlzdGFuY2VzLnkgPSAtZG90KC12X2ZvcndhcmREaXJlY3Rpb25FQywgZW5kRUMpOwojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCgojaWZkZWYgV0lEVEhfVkFSWUlORwogICAgZmxvYXQgd2lkdGggPSBjem1fYmF0Y2hUYWJsZV93aWR0aChiYXRjaElkKTsKICAgIGZsb2F0IGhhbGZXaWR0aCA9IHdpZHRoICogMC41OwogICAgdl93aWR0aCA9IHdpZHRoOwogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGgueiA9IGhhbGZXaWR0aDsKI2Vsc2UKICAgIGZsb2F0IGhhbGZXaWR0aCA9IDAuNSAqIGN6bV9iYXRjaFRhYmxlX3dpZHRoKGJhdGNoSWQpOwogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGgueiA9IGhhbGZXaWR0aDsKI2VuZGlmCgogICAgLy8gQ29tcHV0ZSBhIG5vcm1hbCBhbG9uZyB3aGljaCB0byAicHVzaCIgdGhlIHBvc2l0aW9uIG91dCwgZXh0ZW5kaW5nIHRoZSBtaXRlciBkZXBlbmRpbmcgb24gdmlldyBkaXN0YW5jZS4KICAgIC8vIFBvc2l0aW9uIGhhcyBhbHJlYWR5IGJlZW4gInB1c2hlZCIgYnkgdW5pdCBsZW5ndGggYWxvbmcgbWl0ZXIgbm9ybWFsLCBhbmQgbWl0ZXIgbm9ybWFscyBhcmUgZW5jb2RlZCBpbiB0aGUgcGxhbmVzLgogICAgLy8gRGVjb2RlIHRoZSBub3JtYWwgdG8gdXNlIGF0IHRoaXMgc3BlY2lmaWMgdmVydGV4LCBwdXNoIHRoZSBwb3NpdGlvbiBiYWNrLCBhbmQgdGhlbiBwdXNoIHRvIHdoZXJlIGl0IG5lZWRzIHRvIGJlLgogICAgLy8gU2luY2UgdGhpcyBpcyBtb3JwaGluZywgY29tcHV0ZSBib3RoIDNEIGFuZCAyRCBwb3NpdGlvbnMgYW5kIHRoZW4gYmxlbmQuCgogICAgLy8gKioqKioqIDNEICoqKioqKgogICAgLy8gQ2hlY2sgZGlzdGFuY2UgdG8gdGhlIGVuZCBwbGFuZSBhbmQgc3RhcnQgcGxhbmUsIHBpY2sgdGhlIHBsYW5lIHRoYXQgaXMgY2xvc2VyCiAgICB2ZWM0IHBvc2l0aW9uRWMzRCA9IGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUocG9zaXRpb24zREhpZ2gsIHBvc2l0aW9uM0RMb3cpOyAvLyB3ID0gMS4wLCBzZWUgY3ptX2NvbXB1dGVQb3NpdGlvbgogICAgZmxvYXQgYWJzU3RhcnRQbGFuZURpc3RhbmNlID0gYWJzKGN6bV9wbGFuZURpc3RhbmNlKHN0YXJ0UGxhbmUzRCwgcG9zaXRpb25FYzNELnh5eikpOwogICAgZmxvYXQgYWJzRW5kUGxhbmVEaXN0YW5jZSA9IGFicyhjem1fcGxhbmVEaXN0YW5jZShlbmRQbGFuZTNELCBwb3NpdGlvbkVjM0QueHl6KSk7CiAgICB2ZWMzIHBsYW5lRGlyZWN0aW9uID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA8IGFic0VuZFBsYW5lRGlzdGFuY2UsIHN0YXJ0UGxhbmUzRC54eXosIGVuZFBsYW5lM0QueHl6KTsKICAgIHZlYzMgdXBPckRvd24gPSBub3JtYWxpemUoY3Jvc3MocmlnaHRQbGFuZTNELnh5eiwgcGxhbmVEaXJlY3Rpb24pKTsgLy8gUG9pbnRzICJ1cCIgZm9yIHN0YXJ0IHBsYW5lLCAiZG93biIgYXQgZW5kIHBsYW5lLgogICAgdmVjMyBub3JtYWxFQyA9IG5vcm1hbGl6ZShjcm9zcyhwbGFuZURpcmVjdGlvbiwgdXBPckRvd24pKTsgICAgICAgICAvLyBJbiBwcmFjdGljZSwgdGhlIG9wcG9zaXRlIHNlZW1zIHRvIHdvcmsgdG9vLgoKICAgIC8vIE51ZGdlIHRoZSB0b3AgdmVydGV4IHVwd2FyZHMgdG8gcHJldmVudCBmbGlja2VyaW5nCiAgICB2ZWMzIGdlb2RldGljU3VyZmFjZU5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhub3JtYWxFQywgZm9yd2FyZEVjM0QpKTsKICAgIGdlb2RldGljU3VyZmFjZU5vcm1hbCAqPSBmbG9hdCgwLjAgPD0gcmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZLncgJiYgcmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZLncgPD0gMS4wKTsKICAgIGdlb2RldGljU3VyZmFjZU5vcm1hbCAqPSBNQVhfVEVSUkFJTl9IRUlHSFQ7CiAgICBwb3NpdGlvbkVjM0QueHl6ICs9IGdlb2RldGljU3VyZmFjZU5vcm1hbDsKCiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyB2ZXJ0ZXggaXMgb24gdGhlICJsZWZ0IiBvciAicmlnaHQiCiAgICBub3JtYWxFQyAqPSBzaWduKGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgudyk7CgogICAgLy8gQSAicGVyZmVjdCIgaW1wbGVtZW50YXRpb24gd291bGQgcHVzaCBhbG9uZyBub3JtYWxzIGFjY29yZGluZyB0byB0aGUgYW5nbGUgYWdhaW5zdCBmb3J3YXJkLgogICAgLy8gSW4gcHJhY3RpY2UsIGp1c3QgcHVzaGluZyB0aGUgbm9ybWFsIG91dCBieSBoYWxmV2lkdGggaXMgc3VmZmljaWVudCBmb3IgbW9ycGggdmlld3MuCiAgICBwb3NpdGlvbkVjM0QueHl6ICs9IGhhbGZXaWR0aCAqIG1heCgwLjAsIGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVjM0QpKSAqIG5vcm1hbEVDOyAvLyBwcmV2ZW50IGFydGlmYWN0cyB3aGVuIGN6bV9tZXRlcnNQZXJQaXhlbCBpcyBuZWdhdGl2ZSAoYmVoaW5kIGNhbWVyYSkKCiAgICAvLyAqKioqKiogMkQgKioqKioqCiAgICAvLyBDaGVjayBkaXN0YW5jZSB0byB0aGUgZW5kIHBsYW5lIGFuZCBzdGFydCBwbGFuZSwgcGljayB0aGUgcGxhbmUgdGhhdCBpcyBjbG9zZXIKICAgIHZlYzQgcG9zaXRpb25FYzJEID0gY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShwb3NpdGlvbjJESGlnaC56eHksIHBvc2l0aW9uMkRMb3cuenh5KTsgLy8gdyA9IDEuMCwgc2VlIGN6bV9jb21wdXRlUG9zaXRpb24KICAgIGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA9IGFicyhjem1fcGxhbmVEaXN0YW5jZShzdGFydFBsYW5lMkQsIHBvc2l0aW9uRWMyRC54eXopKTsKICAgIGFic0VuZFBsYW5lRGlzdGFuY2UgPSBhYnMoY3ptX3BsYW5lRGlzdGFuY2UoZW5kUGxhbmUyRCwgcG9zaXRpb25FYzJELnh5eikpOwogICAgcGxhbmVEaXJlY3Rpb24gPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYWJzU3RhcnRQbGFuZURpc3RhbmNlIDwgYWJzRW5kUGxhbmVEaXN0YW5jZSwgc3RhcnRQbGFuZTJELnh5eiwgZW5kUGxhbmUyRC54eXopOwogICAgdXBPckRvd24gPSBub3JtYWxpemUoY3Jvc3MocmlnaHRQbGFuZTJELnh5eiwgcGxhbmVEaXJlY3Rpb24pKTsgLy8gUG9pbnRzICJ1cCIgZm9yIHN0YXJ0IHBsYW5lLCAiZG93biIgYXQgZW5kIHBsYW5lLgogICAgbm9ybWFsRUMgPSBub3JtYWxpemUoY3Jvc3MocGxhbmVEaXJlY3Rpb24sIHVwT3JEb3duKSk7ICAgICAgICAgLy8gSW4gcHJhY3RpY2UsIHRoZSBvcHBvc2l0ZSBzZWVtcyB0byB3b3JrIHRvby4KCiAgICAvLyBOdWRnZSB0aGUgdG9wIHZlcnRleCB1cHdhcmRzIHRvIHByZXZlbnQgZmxpY2tlcmluZwogICAgZ2VvZGV0aWNTdXJmYWNlTm9ybWFsID0gbm9ybWFsaXplKGNyb3NzKG5vcm1hbEVDLCBmb3J3YXJkRWMyRCkpOwogICAgZ2VvZGV0aWNTdXJmYWNlTm9ybWFsICo9IGZsb2F0KDAuMCA8PSB0ZXhjb29yZE5vcm1hbGl6YXRpb24yRC55ICYmIHRleGNvb3JkTm9ybWFsaXphdGlvbjJELnkgPD0gMS4wKTsKICAgIGdlb2RldGljU3VyZmFjZU5vcm1hbCAqPSBNQVhfVEVSUkFJTl9IRUlHSFQ7CiAgICBwb3NpdGlvbkVjMkQueHl6ICs9IGdlb2RldGljU3VyZmFjZU5vcm1hbDsKCiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyB2ZXJ0ZXggaXMgb24gdGhlICJsZWZ0IiBvciAicmlnaHQiCiAgICBub3JtYWxFQyAqPSBzaWduKHRleGNvb3JkTm9ybWFsaXphdGlvbjJELngpOwojaWZuZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgogICAgLy8gVXNlIHZlcnRleCdzIHNpZGVkbmVzcyB0byBjb21wdXRlIGl0cyB0ZXh0dXJlIGNvb3JkaW5hdGUuCiAgICB2X3RleGNvb3JkVCA9IGNsYW1wKHNpZ24odGV4Y29vcmROb3JtYWxpemF0aW9uMkQueCksIDAuMCwgMS4wKTsKI2VuZGlmCgogICAgLy8gQSAicGVyZmVjdCIgaW1wbGVtZW50YXRpb24gd291bGQgcHVzaCBhbG9uZyBub3JtYWxzIGFjY29yZGluZyB0byB0aGUgYW5nbGUgYWdhaW5zdCBmb3J3YXJkLgogICAgLy8gSW4gcHJhY3RpY2UsIGp1c3QgcHVzaGluZyB0aGUgbm9ybWFsIG91dCBieSBoYWxmV2lkdGggaXMgc3VmZmljaWVudCBmb3IgbW9ycGggdmlld3MuCiAgICBwb3NpdGlvbkVjMkQueHl6ICs9IGhhbGZXaWR0aCAqIG1heCgwLjAsIGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVjMkQpKSAqIG5vcm1hbEVDOyAvLyBwcmV2ZW50IGFydGlmYWN0cyB3aGVuIGN6bV9tZXRlcnNQZXJQaXhlbCBpcyBuZWdhdGl2ZSAoYmVoaW5kIGNhbWVyYSkKCiAgICAvLyBCbGVuZCBmb3IgYWN0dWFsIHBvc2l0aW9uCiAgICBnbF9Qb3NpdGlvbiA9IGN6bV9wcm9qZWN0aW9uICogbWl4KHBvc2l0aW9uRWMyRCwgcG9zaXRpb25FYzNELCBjem1fbW9ycGhUaW1lKTsKCiNpZmRlZiBBTkdMRV9WQVJZSU5HCiAgICAvLyBBcHByb3hpbWF0ZSByZWxhdGl2ZSBzY3JlZW4gc3BhY2UgZGlyZWN0aW9uIG9mIHRoZSBsaW5lLgogICAgdmVjMiBhcHByb3hMaW5lRGlyZWN0aW9uID0gbm9ybWFsaXplKHZlYzIodl9mb3J3YXJkRGlyZWN0aW9uRUMueCwgLXZfZm9yd2FyZERpcmVjdGlvbkVDLnkpKTsKICAgIGFwcHJveExpbmVEaXJlY3Rpb24ueSA9IGN6bV9icmFuY2hGcmVlVGVybmFyeShhcHByb3hMaW5lRGlyZWN0aW9uLnggPT0gMC4wICYmIGFwcHJveExpbmVEaXJlY3Rpb24ueSA9PSAwLjAsIC0xLjAsIGFwcHJveExpbmVEaXJlY3Rpb24ueSk7CiAgICB2X3BvbHlsaW5lQW5nbGUgPSBjem1fZmFzdEFwcHJveGltYXRlQXRhbihhcHByb3hMaW5lRGlyZWN0aW9uLngsIGFwcHJveExpbmVEaXJlY3Rpb24ueSk7CiNlbmRpZgp9CmB9KTt2YXIgbXgsZng9TygoKT0+e214PWBpbiB2ZWMzIHBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHBvc2l0aW9uM0RMb3c7CgovLyBJbiAyRCBhbmQgaW4gM0QsIHRleHR1cmUgY29vcmRpbmF0ZSBub3JtYWxpemF0aW9uIGNvbXBvbmVudCBzaWducyBlbmNvZGVzOgovLyAqIFggc2lnbiAtIHNpZGVkbmVzcyByZWxhdGl2ZSB0byByaWdodCBwbGFuZQovLyAqIFkgc2lnbiAtIGlzIG5lZ2F0aXZlIE9SIG1hZ25pdHVkZSBpcyBncmVhdGVyIHRoYW4gMS4wIGlmIHZlcnRleCBpcyBvbiBib3R0b20gb2Ygdm9sdW1lCiNpZm5kZWYgQ09MVU1CVVNfVklFV18yRAppbiB2ZWM0IHN0YXJ0SGlBbmRGb3J3YXJkT2Zmc2V0WDsKaW4gdmVjNCBzdGFydExvQW5kRm9yd2FyZE9mZnNldFk7CmluIHZlYzQgc3RhcnROb3JtYWxBbmRGb3J3YXJkT2Zmc2V0WjsKaW4gdmVjNCBlbmROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25YOwppbiB2ZWM0IHJpZ2h0Tm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWTsKI2Vsc2UKaW4gdmVjNCBzdGFydEhpTG8yRDsKaW4gdmVjNCBvZmZzZXRBbmRSaWdodDJEOwppbiB2ZWM0IHN0YXJ0RW5kTm9ybWFsczJEOwppbiB2ZWMyIHRleGNvb3JkTm9ybWFsaXphdGlvbjJEOwojZW5kaWYKCmluIGZsb2F0IGJhdGNoSWQ7CgpvdXQgdmVjNCB2X3N0YXJ0UGxhbmVOb3JtYWxFY0FuZEhhbGZXaWR0aDsKb3V0IHZlYzQgdl9lbmRQbGFuZU5vcm1hbEVjQW5kQmF0Y2hJZDsKb3V0IHZlYzQgdl9yaWdodFBsYW5lRUM7Cm91dCB2ZWM0IHZfZW5kRWNBbmRTdGFydEVjWDsKb3V0IHZlYzQgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVo7CgovLyBGb3IgbWF0ZXJpYWxzCiNpZmRlZiBXSURUSF9WQVJZSU5HCm91dCBmbG9hdCB2X3dpZHRoOwojZW5kaWYKI2lmZGVmIEFOR0xFX1ZBUllJTkcKb3V0IGZsb2F0IHZfcG9seWxpbmVBbmdsZTsKI2VuZGlmCgojaWZkZWYgUEVSX0lOU1RBTkNFX0NPTE9SCm91dCB2ZWM0IHZfY29sb3I7CiNlbmRpZgoKdm9pZCBtYWluKCkKewojaWZkZWYgQ09MVU1CVVNfVklFV18yRAogICAgdmVjMyBlY1N0YXJ0ID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHN0YXJ0SGlMbzJELnh5KSwgdmVjMygwLjAsIHN0YXJ0SGlMbzJELnp3KSkpLnh5ejsKCiAgICB2ZWMzIGZvcndhcmREaXJlY3Rpb25FQyA9IGN6bV9ub3JtYWwgKiB2ZWMzKDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC54eSk7CiAgICB2ZWMzIGVjRW5kID0gZm9yd2FyZERpcmVjdGlvbkVDICsgZWNTdGFydDsKICAgIGZvcndhcmREaXJlY3Rpb25FQyA9IG5vcm1hbGl6ZShmb3J3YXJkRGlyZWN0aW9uRUMpOwoKICAgIC8vIFJpZ2h0IHBsYW5lCiAgICB2X3JpZ2h0UGxhbmVFQy54eXogPSBjem1fbm9ybWFsICogdmVjMygwLjAsIG9mZnNldEFuZFJpZ2h0MkQuencpOwogICAgdl9yaWdodFBsYW5lRUMudyA9IC1kb3Qodl9yaWdodFBsYW5lRUMueHl6LCBlY1N0YXJ0KTsKCiAgICAvLyBzdGFydCBwbGFuZQogICAgdmVjNCBzdGFydFBsYW5lRUM7CiAgICBzdGFydFBsYW5lRUMueHl6ID0gIGN6bV9ub3JtYWwgKiB2ZWMzKDAuMCwgc3RhcnRFbmROb3JtYWxzMkQueHkpOwogICAgc3RhcnRQbGFuZUVDLncgPSAtZG90KHN0YXJ0UGxhbmVFQy54eXosIGVjU3RhcnQpOwoKICAgIC8vIGVuZCBwbGFuZQogICAgdmVjNCBlbmRQbGFuZUVDOwogICAgZW5kUGxhbmVFQy54eXogPSAgY3ptX25vcm1hbCAqIHZlYzMoMC4wLCBzdGFydEVuZE5vcm1hbHMyRC56dyk7CiAgICBlbmRQbGFuZUVDLncgPSAtZG90KGVuZFBsYW5lRUMueHl6LCBlY0VuZCk7CgogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueCA9IGFicyh0ZXhjb29yZE5vcm1hbGl6YXRpb24yRC54KTsKICAgIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kU3RhcnRFY1laLnkgPSB0ZXhjb29yZE5vcm1hbGl6YXRpb24yRC55OwoKI2Vsc2UgLy8gQ09MVU1CVVNfVklFV18yRAogICAgdmVjMyBlY1N0YXJ0ID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUoc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYLnh5eiwgc3RhcnRMb0FuZEZvcndhcmRPZmZzZXRZLnh5eikpLnh5ejsKICAgIHZlYzMgb2Zmc2V0ID0gY3ptX25vcm1hbCAqIHZlYzMoc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYLncsIHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WS53LCBzdGFydE5vcm1hbEFuZEZvcndhcmRPZmZzZXRaLncpOwogICAgdmVjMyBlY0VuZCA9IGVjU3RhcnQgKyBvZmZzZXQ7CgogICAgdmVjMyBmb3J3YXJkRGlyZWN0aW9uRUMgPSBub3JtYWxpemUob2Zmc2V0KTsKCiAgICAvLyBzdGFydCBwbGFuZQogICAgdmVjNCBzdGFydFBsYW5lRUM7CiAgICBzdGFydFBsYW5lRUMueHl6ID0gY3ptX25vcm1hbCAqIHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFoueHl6OwogICAgc3RhcnRQbGFuZUVDLncgPSAtZG90KHN0YXJ0UGxhbmVFQy54eXosIGVjU3RhcnQpOwoKICAgIC8vIGVuZCBwbGFuZQogICAgdmVjNCBlbmRQbGFuZUVDOwogICAgZW5kUGxhbmVFQy54eXogPSBjem1fbm9ybWFsICogZW5kTm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWC54eXo7CiAgICBlbmRQbGFuZUVDLncgPSAtZG90KGVuZFBsYW5lRUMueHl6LCBlY0VuZCk7CgogICAgLy8gUmlnaHQgcGxhbmUKICAgIHZfcmlnaHRQbGFuZUVDLnh5eiA9IGN6bV9ub3JtYWwgKiByaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblkueHl6OwogICAgdl9yaWdodFBsYW5lRUMudyA9IC1kb3Qodl9yaWdodFBsYW5lRUMueHl6LCBlY1N0YXJ0KTsKCiAgICB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi54ID0gYWJzKGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgudyk7CiAgICB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi55ID0gcmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZLnc7CgojZW5kaWYgLy8gQ09MVU1CVVNfVklFV18yRAoKICAgIHZfZW5kRWNBbmRTdGFydEVjWC54eXogPSBlY0VuZDsKICAgIHZfZW5kRWNBbmRTdGFydEVjWC53ID0gZWNTdGFydC54OwogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVouencgPSBlY1N0YXJ0Lnl6OwoKI2lmZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgogICAgdl9jb2xvciA9IGN6bV9iYXRjaFRhYmxlX2NvbG9yKGJhdGNoSWQpOwojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCgogICAgLy8gQ29tcHV0ZSBhIG5vcm1hbCBhbG9uZyB3aGljaCB0byAicHVzaCIgdGhlIHBvc2l0aW9uIG91dCwgZXh0ZW5kaW5nIHRoZSBtaXRlciBkZXBlbmRpbmcgb24gdmlldyBkaXN0YW5jZS4KICAgIC8vIFBvc2l0aW9uIGhhcyBhbHJlYWR5IGJlZW4gInB1c2hlZCIgYnkgdW5pdCBsZW5ndGggYWxvbmcgbWl0ZXIgbm9ybWFsLCBhbmQgbWl0ZXIgbm9ybWFscyBhcmUgZW5jb2RlZCBpbiB0aGUgcGxhbmVzLgogICAgLy8gRGVjb2RlIHRoZSBub3JtYWwgdG8gdXNlIGF0IHRoaXMgc3BlY2lmaWMgdmVydGV4LCBwdXNoIHRoZSBwb3NpdGlvbiBiYWNrLCBhbmQgdGhlbiBwdXNoIHRvIHdoZXJlIGl0IG5lZWRzIHRvIGJlLgogICAgdmVjNCBwb3NpdGlvblJlbGF0aXZlVG9FeWUgPSBjem1fY29tcHV0ZVBvc2l0aW9uKCk7CgogICAgLy8gQ2hlY2sgZGlzdGFuY2UgdG8gdGhlIGVuZCBwbGFuZSBhbmQgc3RhcnQgcGxhbmUsIHBpY2sgdGhlIHBsYW5lIHRoYXQgaXMgY2xvc2VyCiAgICB2ZWM0IHBvc2l0aW9uRUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHBvc2l0aW9uUmVsYXRpdmVUb0V5ZTsgLy8gdyA9IDEuMCwgc2VlIGN6bV9jb21wdXRlUG9zaXRpb24KICAgIGZsb2F0IGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA9IGFicyhjem1fcGxhbmVEaXN0YW5jZShzdGFydFBsYW5lRUMsIHBvc2l0aW9uRUMueHl6KSk7CiAgICBmbG9hdCBhYnNFbmRQbGFuZURpc3RhbmNlID0gYWJzKGN6bV9wbGFuZURpc3RhbmNlKGVuZFBsYW5lRUMsIHBvc2l0aW9uRUMueHl6KSk7CiAgICB2ZWMzIHBsYW5lRGlyZWN0aW9uID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA8IGFic0VuZFBsYW5lRGlzdGFuY2UsIHN0YXJ0UGxhbmVFQy54eXosIGVuZFBsYW5lRUMueHl6KTsKICAgIHZlYzMgdXBPckRvd24gPSBub3JtYWxpemUoY3Jvc3Modl9yaWdodFBsYW5lRUMueHl6LCBwbGFuZURpcmVjdGlvbikpOyAvLyBQb2ludHMgInVwIiBmb3Igc3RhcnQgcGxhbmUsICJkb3duIiBhdCBlbmQgcGxhbmUuCiAgICB2ZWMzIG5vcm1hbEVDID0gbm9ybWFsaXplKGNyb3NzKHBsYW5lRGlyZWN0aW9uLCB1cE9yRG93bikpOyAgICAgICAgICAgLy8gSW4gcHJhY3RpY2UsIHRoZSBvcHBvc2l0ZSBzZWVtcyB0byB3b3JrIHRvby4KCiAgICAvLyBFeHRydWRlIGJvdHRvbSB2ZXJ0aWNlcyBkb3dud2FyZCBmb3IgZmFyIHZpZXcgZGlzdGFuY2VzLCBsaWtlIGZvciBHcm91bmRQcmltaXRpdmVzCiAgICB1cE9yRG93biA9IGNyb3NzKGZvcndhcmREaXJlY3Rpb25FQywgbm9ybWFsRUMpOwogICAgdXBPckRvd24gPSBmbG9hdChjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUzRCkgKiB1cE9yRG93bjsKICAgIHVwT3JEb3duID0gZmxvYXQodl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueSA+IDEuMCB8fCB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi55IDwgMC4wKSAqIHVwT3JEb3duOwogICAgdXBPckRvd24gPSBtaW4oR0xPQkVfTUlOSU1VTV9BTFRJVFVERSwgY3ptX2dlb21ldHJpY1RvbGVyYW5jZU92ZXJNZXRlciAqIGxlbmd0aChwb3NpdGlvblJlbGF0aXZlVG9FeWUueHl6KSkgKiB1cE9yRG93bjsKICAgIHBvc2l0aW9uRUMueHl6ICs9IHVwT3JEb3duOwoKICAgIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kU3RhcnRFY1laLnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkodl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueSA+IDEuMCwgMC4wLCBhYnModl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueSkpOwoKICAgIC8vIERldGVybWluZSBkaXN0YW5jZSBhbG9uZyBub3JtYWxFQyB0byBwdXNoIGZvciBhIHZvbHVtZSBvZiBhcHByb3ByaWF0ZSB3aWR0aC4KICAgIC8vIE1ha2Ugdm9sdW1lcyBhYm91dCBkb3VibGUgcGl4ZWwgd2lkdGggZm9yIGEgY29uc2VydmF0aXZlIGZpdCAtIGluIHByYWN0aWNlIHRoZQogICAgLy8gZXh0cmEgY29zdCBoZXJlIGlzIG1pbmltYWwgY29tcGFyZWQgdG8gdGhlIGxvb3NlIHZvbHVtZSBoZWlnaHRzLgogICAgLy8KICAgIC8vIE4gPSBub3JtYWxFQyAoZ3VhcmFudGVlZCAicmlnaHQtZmFjaW5nIikKICAgIC8vIFIgPSByaWdodEVDCiAgICAvLyBwID0gYW5nbGUgYmV0d2VlbiBOIGFuZCBSCiAgICAvLyB3ID0gZGlzdGFuY2UgdG8gcHVzaCBhbG9uZyBSIGlmIFIgPT0gTgogICAgLy8gZCA9IGRpc3RhbmNlIHRvIHB1c2ggYWxvbmcgTgogICAgLy8KICAgIC8vICAgTiAgIFIKICAgIC8vICB7ICBwfCB9ICAgICAgKiBjb3MocCkgPSBkb3QoTiwgUikgPSB3IC8gZAogICAgLy8gIGQgIHwgIHx3ICAgICogZCA9IHcgLyBkb3QoTiwgUikKICAgIC8vICAgIHsgfCB9CiAgICAvLyAgICAgICBvLS0tLS0tLS0tLSBwb2x5bGluZSBzZWdtZW50IC0tLS0+CiAgICAvLwogICAgZmxvYXQgd2lkdGggPSBjem1fYmF0Y2hUYWJsZV93aWR0aChiYXRjaElkKTsKI2lmZGVmIFdJRFRIX1ZBUllJTkcKICAgIHZfd2lkdGggPSB3aWR0aDsKI2VuZGlmCgogICAgdl9zdGFydFBsYW5lTm9ybWFsRWNBbmRIYWxmV2lkdGgueHl6ID0gc3RhcnRQbGFuZUVDLnh5ejsKICAgIHZfc3RhcnRQbGFuZU5vcm1hbEVjQW5kSGFsZldpZHRoLncgPSB3aWR0aCAqIDAuNTsKCiAgICB2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLnh5eiA9IGVuZFBsYW5lRUMueHl6OwogICAgdl9lbmRQbGFuZU5vcm1hbEVjQW5kQmF0Y2hJZC53ID0gYmF0Y2hJZDsKCiAgICB3aWR0aCA9IHdpZHRoICogbWF4KDAuMCwgY3ptX21ldGVyc1BlclBpeGVsKHBvc2l0aW9uRUMpKTsgLy8gd2lkdGggPSBkaXN0YW5jZSB0byBwdXNoIGFsb25nIFIKICAgIHdpZHRoID0gd2lkdGggLyBkb3Qobm9ybWFsRUMsIHZfcmlnaHRQbGFuZUVDLnh5eik7IC8vIHdpZHRoID0gZGlzdGFuY2UgdG8gcHVzaCBhbG9uZyBOCgogICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgdmVydGV4IGlzIG9uIHRoZSAibGVmdCIgb3IgInJpZ2h0IgojaWZkZWYgQ09MVU1CVVNfVklFV18yRAogICAgICAgIG5vcm1hbEVDICo9IHNpZ24odGV4Y29vcmROb3JtYWxpemF0aW9uMkQueCk7CiNlbHNlCiAgICAgICAgbm9ybWFsRUMgKj0gc2lnbihlbmROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25YLncpOwojZW5kaWYKCiAgICBwb3NpdGlvbkVDLnh5eiArPSB3aWR0aCAqIG5vcm1hbEVDOwogICAgZ2xfUG9zaXRpb24gPSBjem1fZGVwdGhDbGFtcChjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUMpOwoKI2lmZGVmIEFOR0xFX1ZBUllJTkcKICAgIC8vIEFwcHJveGltYXRlIHJlbGF0aXZlIHNjcmVlbiBzcGFjZSBkaXJlY3Rpb24gb2YgdGhlIGxpbmUuCiAgICB2ZWMyIGFwcHJveExpbmVEaXJlY3Rpb24gPSBub3JtYWxpemUodmVjMihmb3J3YXJkRGlyZWN0aW9uRUMueCwgLWZvcndhcmREaXJlY3Rpb25FQy55KSk7CiAgICBhcHByb3hMaW5lRGlyZWN0aW9uLnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYXBwcm94TGluZURpcmVjdGlvbi54ID09IDAuMCAmJiBhcHByb3hMaW5lRGlyZWN0aW9uLnkgPT0gMC4wLCAtMS4wLCBhcHByb3hMaW5lRGlyZWN0aW9uLnkpOwogICAgdl9wb2x5bGluZUFuZ2xlID0gY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4oYXBwcm94TGluZURpcmVjdGlvbi54LCBhcHByb3hMaW5lRGlyZWN0aW9uLnkpOwojZW5kaWYKfQpgfSk7dmFyIEV4LEpyLE1JPU8oKCk9PntFeD17VEVSUkFJTjowLENFU0lVTV8zRF9USUxFOjEsQk9USDoyfTtFeC5OVU1CRVJfT0ZfQ0xBU1NJRklDQVRJT05fVFlQRVM9MztKcj1PYmplY3QuZnJlZXplKEV4KX0pO3ZhciBTbnQsRWgsVUk9TygoKT0+e3NzKCk7U250PXtGUk9OVDppdC5GUk9OVCxCQUNLOml0LkJBQ0ssRlJPTlRfQU5EX0JBQ0s6aXQuRlJPTlRfQU5EX0JBQ0t9LEVoPU9iamVjdC5mcmVlemUoU250KX0pO2Z1bmN0aW9uIFpzKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLnBvc2l0aW9uPVoodC5wb3NpdGlvbiwhMSksdGhpcy5ub3JtYWw9Wih0Lm5vcm1hbCwhMSksdGhpcy5zdD1aKHQuc3QsITEpLHRoaXMuYml0YW5nZW50PVoodC5iaXRhbmdlbnQsITEpLHRoaXMudGFuZ2VudD1aKHQudGFuZ2VudCwhMSksdGhpcy5jb2xvcj1aKHQuY29sb3IsITEpfXZhciBPdCxMcz1PKCgpPT57YnQoKTttdCgpO1Z0KCk7WnMuUE9TSVRJT05fT05MWT1PYmplY3QuZnJlZXplKG5ldyBacyh7cG9zaXRpb246ITB9KSk7WnMuUE9TSVRJT05fQU5EX05PUk1BTD1PYmplY3QuZnJlZXplKG5ldyBacyh7cG9zaXRpb246ITAsbm9ybWFsOiEwfSkpO1pzLlBPU0lUSU9OX05PUk1BTF9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgWnMoe3Bvc2l0aW9uOiEwLG5vcm1hbDohMCxzdDohMH0pKTtacy5QT1NJVElPTl9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgWnMoe3Bvc2l0aW9uOiEwLHN0OiEwfSkpO1pzLlBPU0lUSU9OX0FORF9DT0xPUj1PYmplY3QuZnJlZXplKG5ldyBacyh7cG9zaXRpb246ITAsY29sb3I6ITB9KSk7WnMuQUxMPU9iamVjdC5mcmVlemUobmV3IFpzKHtwb3NpdGlvbjohMCxub3JtYWw6ITAsc3Q6ITAsdGFuZ2VudDohMCxiaXRhbmdlbnQ6ITB9KSk7WnMuREVGQVVMVD1acy5QT1NJVElPTl9OT1JNQUxfQU5EX1NUO1pzLnBhY2tlZExlbmd0aD02O1pzLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxlW2krK109dC5wb3NpdGlvbj8xOjAsZVtpKytdPXQubm9ybWFsPzE6MCxlW2krK109dC5zdD8xOjAsZVtpKytdPXQudGFuZ2VudD8xOjAsZVtpKytdPXQuYml0YW5nZW50PzE6MCxlW2ldPXQuY29sb3I/MTowLGV9O1pzLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIGU9WihlLDApLG0oaSl8fChpPW5ldyBacyksaS5wb3NpdGlvbj10W2UrK109PT0xLGkubm9ybWFsPXRbZSsrXT09PTEsaS5zdD10W2UrK109PT0xLGkudGFuZ2VudD10W2UrK109PT0xLGkuYml0YW5nZW50PXRbZSsrXT09PTEsaS5jb2xvcj10W2VdPT09MSxpfTtacy5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSl8fChlPW5ldyBacyksZS5wb3NpdGlvbj10LnBvc2l0aW9uLGUubm9ybWFsPXQubm9ybWFsLGUuc3Q9dC5zdCxlLnRhbmdlbnQ9dC50YW5nZW50LGUuYml0YW5nZW50PXQuYml0YW5nZW50LGUuY29sb3I9dC5jb2xvcixlfTtPdD1ac30pO3ZhciBRSSxHTj1PKCgpPT57UUk9YGluIHZlYzQgdl9jb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIG91dF9GcmFnQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZfY29sb3IpOwp9CmB9KTt2YXIgX3gsUng9TygoKT0+e194PWBpbiB2ZWMzIHBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHBvc2l0aW9uM0RMb3c7CmluIHZlYzMgcHJldlBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHByZXZQb3NpdGlvbjNETG93OwppbiB2ZWMzIG5leHRQb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBuZXh0UG9zaXRpb24zRExvdzsKaW4gdmVjMiBleHBhbmRBbmRXaWR0aDsKaW4gdmVjNCBjb2xvcjsKaW4gZmxvYXQgYmF0Y2hJZDsKCm91dCB2ZWM0IHZfY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBmbG9hdCBleHBhbmREaXIgPSBleHBhbmRBbmRXaWR0aC54OwogICAgZmxvYXQgd2lkdGggPSBhYnMoZXhwYW5kQW5kV2lkdGgueSkgKyAwLjU7CiAgICBib29sIHVzZVByZXYgPSBleHBhbmRBbmRXaWR0aC55IDwgMC4wOwoKICAgIHZlYzQgcCA9IGN6bV9jb21wdXRlUG9zaXRpb24oKTsKICAgIHZlYzQgcHJldiA9IGN6bV9jb21wdXRlUHJldlBvc2l0aW9uKCk7CiAgICB2ZWM0IG5leHQgPSBjem1fY29tcHV0ZU5leHRQb3NpdGlvbigpOwoKICAgIGZsb2F0IGFuZ2xlOwogICAgdmVjNCBwb3NpdGlvbldDID0gZ2V0UG9seWxpbmVXaW5kb3dDb29yZGluYXRlcyhwLCBwcmV2LCBuZXh0LCBleHBhbmREaXIsIHdpZHRoLCB1c2VQcmV2LCBhbmdsZSk7CiAgICBnbF9Qb3NpdGlvbiA9IGN6bV92aWV3cG9ydE9ydGhvZ3JhcGhpYyAqIHBvc2l0aW9uV0M7CgogICAgdl9jb2xvciA9IGNvbG9yOwp9CmB9KTt2YXIga0ksQk49TygoKT0+e2tJPWB2b2lkIGNsaXBMaW5lU2VnbWVudFRvTmVhclBsYW5lKAogICAgdmVjMyBwMCwKICAgIHZlYzMgcDEsCiAgICBvdXQgdmVjNCBwb3NpdGlvbldDLAogICAgb3V0IGJvb2wgY2xpcHBlZCwKICAgIG91dCBib29sIGN1bGxlZEJ5TmVhclBsYW5lLAogICAgb3V0IHZlYzQgY2xpcHBlZFBvc2l0aW9uRUMpCnsKICAgIGN1bGxlZEJ5TmVhclBsYW5lID0gZmFsc2U7CiAgICBjbGlwcGVkID0gZmFsc2U7CgogICAgdmVjMyBwMFRvUDEgPSBwMSAtIHAwOwogICAgZmxvYXQgbWFnbml0dWRlID0gbGVuZ3RoKHAwVG9QMSk7CiAgICB2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZShwMFRvUDEpOwoKICAgIC8vIERpc3RhbmNlIHRoYXQgcDAgaXMgYmVoaW5kIHRoZSBuZWFyIHBsYW5lLiBOZWdhdGl2ZSBtZWFucyBwMCBpcwogICAgLy8gaW4gZnJvbnQgb2YgdGhlIG5lYXIgcGxhbmUuCiAgICBmbG9hdCBlbmRQb2ludDBEaXN0YW5jZSA9ICBjem1fY3VycmVudEZydXN0dW0ueCArIHAwLno7CgogICAgLy8gQ2FtZXJhIGxvb2tzIGRvd24gLVouCiAgICAvLyBXaGVuIG1vdmluZyBhIHBvaW50IGFsb25nICtaOiBMRVNTIFZJU0lCTEUKICAgIC8vICAgKiBQb2ludHMgaW4gZnJvbnQgb2YgdGhlIGNhbWVyYSBtb3ZlIGNsb3NlciB0byB0aGUgY2FtZXJhLgogICAgLy8gICAqIFBvaW50cyBiZWhpbmQgdGhlIGNhbXJlYSBtb3ZlIGZhcnRoZXIgYXdheSBmcm9tIHRoZSBjYW1lcmEuCiAgICAvLyBXaGVuIG1vdmluZyBhIHBvaW50IGFsb25nIC1aOiBNT1JFIFZJU0lCTEUKICAgIC8vICAgKiBQb2ludHMgaW4gZnJvbnQgb2YgdGhlIGNhbWVyYSBtb3ZlIGZhcnRoZXIgYXdheSBmcm9tIHRoZSBjYW1lcmEuCiAgICAvLyAgICogUG9pbnRzIGJlaGluZCB0aGUgY2FtZXJhIG1vdmUgY2xvc2VyIHRvIHRoZSBjYW1lcmEuCgogICAgLy8gUG9zaXRpdmUgZGVub21pbmF0b3I6IC1aLCBiZWNvbWluZyBtb3JlIHZpc2libGUKICAgIC8vIE5lZ2F0aXZlIGRlbm9taW5hdG9yOiArWiwgYmVjb21pbmcgbGVzcyB2aXNpYmxlCiAgICAvLyBOZWFybHkgemVybzogcGFyYWxsZWwgdG8gbmVhciBwbGFuZQogICAgZmxvYXQgZGVub21pbmF0b3IgPSAtZGlyZWN0aW9uLno7CgogICAgaWYgKGVuZFBvaW50MERpc3RhbmNlID4gMC4wICYmIGFicyhkZW5vbWluYXRvcikgPCBjem1fZXBzaWxvbjcpCiAgICB7CiAgICAgICAgLy8gcDAgaXMgYmVoaW5kIHRoZSBuZWFyIHBsYW5lIGFuZCB0aGUgbGluZSB0byBwMSBpcyBuZWFybHkgcGFyYWxsZWwgdG8KICAgICAgICAvLyB0aGUgbmVhciBwbGFuZSwgc28gY3VsbCB0aGUgc2VnbWVudCBjb21wbGV0ZWx5LgogICAgICAgIGN1bGxlZEJ5TmVhclBsYW5lID0gdHJ1ZTsKICAgIH0KICAgIGVsc2UgaWYgKGVuZFBvaW50MERpc3RhbmNlID4gMC4wKQogICAgewogICAgICAgIC8vIHAwIGlzIGJlaGluZCB0aGUgbmVhciBwbGFuZSwgYW5kIHRoZSBsaW5lIHRvIHAxIGlzIG1vdmluZyBkaXN0aW5jdGx5CiAgICAgICAgLy8gdG93YXJkIG9yIGF3YXkgZnJvbSBpdC4KCiAgICAgICAgLy8gdCA9ICgtcGxhbmUgZGlzdGFuY2UgLSBkb3QocGxhbmUgbm9ybWFsLCByYXkgb3JpZ2luKSkgLyBkb3QocGxhbmUgbm9ybWFsLCByYXkgZGlyZWN0aW9uKQogICAgICAgIGZsb2F0IHQgPSBlbmRQb2ludDBEaXN0YW5jZSAvIGRlbm9taW5hdG9yOwogICAgICAgIGlmICh0IDwgMC4wIHx8IHQgPiBtYWduaXR1ZGUpCiAgICAgICAgewogICAgICAgICAgICAvLyBOZWFyIHBsYW5lIGludGVyc2VjdGlvbiBpcyBub3QgYmV0d2VlbiB0aGUgdHdvIHBvaW50cy4KICAgICAgICAgICAgLy8gV2UgYWxyZWFkeSBjb25maXJtZWQgcDAgaXMgYmVoaW5kIHRoZSBuYWVyIHBsYW5lLCBzbyBub3cKICAgICAgICAgICAgLy8gd2Uga25vdyB0aGUgZW50aXJlIHNlZ21lbnQgaXMgYmVoaW5kIGl0LgogICAgICAgICAgICBjdWxsZWRCeU5lYXJQbGFuZSA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIC8vIFNlZ21lbnQgY3Jvc3NlcyB0aGUgbmVhciBwbGFuZSwgdXBkYXRlIHAwIHRvIGxpZSBleGFjdGx5IG9uIGl0LgogICAgICAgICAgICBwMCA9IHAwICsgdCAqIGRpcmVjdGlvbjsKCiAgICAgICAgICAgIC8vIE51bWVyaWNhbCBub2lzZSBtaWdodCBwdXQgdXMgYSBiaXQgb24gdGhlIHdyb25nIHNpZGUgb2YgdGhlIG5lYXIgcGxhbmUuCiAgICAgICAgICAgIC8vIERvbid0IGxldCB0aGF0IGhhcHBlbi4KICAgICAgICAgICAgcDAueiA9IG1pbihwMC56LCAtY3ptX2N1cnJlbnRGcnVzdHVtLngpOwoKICAgICAgICAgICAgY2xpcHBlZCA9IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIGNsaXBwZWRQb3NpdGlvbkVDID0gdmVjNChwMCwgMS4wKTsKICAgIHBvc2l0aW9uV0MgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhjbGlwcGVkUG9zaXRpb25FQyk7Cn0KCnZlYzQgZ2V0UG9seWxpbmVXaW5kb3dDb29yZGluYXRlc0VDKHZlYzQgcG9zaXRpb25FQywgdmVjNCBwcmV2RUMsIHZlYzQgbmV4dEVDLCBmbG9hdCBleHBhbmREaXJlY3Rpb24sIGZsb2F0IHdpZHRoLCBib29sIHVzZVByZXZpb3VzLCBvdXQgZmxvYXQgYW5nbGUpCnsKICAgIC8vIGV4cGFuZERpcmVjdGlvbiArMSBpcyB0byB0aGUgX2xlZnRfIHdoZW4gbG9va2luZyBmcm9tIHBvc2l0aW9uRUMgdG93YXJkIG5leHRFQy4KCiNpZmRlZiBQT0xZTElORV9EQVNICiAgICAvLyBDb21wdXRlIHRoZSB3aW5kb3cgY29vcmRpbmF0ZXMgb2YgdGhlIHBvaW50cy4KICAgIHZlYzQgcG9zaXRpb25XaW5kb3cgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhwb3NpdGlvbkVDKTsKICAgIHZlYzQgcHJldmlvdXNXaW5kb3cgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhwcmV2RUMpOwogICAgdmVjNCBuZXh0V2luZG93ID0gY3ptX2V5ZVRvV2luZG93Q29vcmRpbmF0ZXMobmV4dEVDKTsKCiAgICAvLyBEZXRlcm1pbmUgdGhlIHJlbGF0aXZlIHNjcmVlbiBzcGFjZSBkaXJlY3Rpb24gb2YgdGhlIGxpbmUuCiAgICB2ZWMyIGxpbmVEaXI7CiAgICBpZiAodXNlUHJldmlvdXMpIHsKICAgICAgICBsaW5lRGlyID0gbm9ybWFsaXplKHBvc2l0aW9uV2luZG93Lnh5IC0gcHJldmlvdXNXaW5kb3cueHkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbGluZURpciA9IG5vcm1hbGl6ZShuZXh0V2luZG93Lnh5IC0gcG9zaXRpb25XaW5kb3cueHkpOwogICAgfQogICAgYW5nbGUgPSBhdGFuKGxpbmVEaXIueCwgbGluZURpci55KSAtIDEuNTcwNzk2MzI3OyAvLyBwcmVjb21wdXRlZCBhdGFuKDEsMCkKCiAgICAvLyBRdWFudGl6ZSB0aGUgYW5nbGUgc28gaXQgZG9lc24ndCBjaGFuZ2UgcmFwaWRseSBiZXR3ZWVuIHNlZ21lbnRzLgogICAgYW5nbGUgPSBmbG9vcihhbmdsZSAvIGN6bV9waU92ZXJGb3VyICsgMC41KSAqIGN6bV9waU92ZXJGb3VyOwojZW5kaWYKCiAgICB2ZWM0IGNsaXBwZWRQcmV2V0MsIGNsaXBwZWRQcmV2RUM7CiAgICBib29sIHByZXZTZWdtZW50Q2xpcHBlZCwgcHJldlNlZ21lbnRDdWxsZWQ7CiAgICBjbGlwTGluZVNlZ21lbnRUb05lYXJQbGFuZShwcmV2RUMueHl6LCBwb3NpdGlvbkVDLnh5eiwgY2xpcHBlZFByZXZXQywgcHJldlNlZ21lbnRDbGlwcGVkLCBwcmV2U2VnbWVudEN1bGxlZCwgY2xpcHBlZFByZXZFQyk7CgogICAgdmVjNCBjbGlwcGVkTmV4dFdDLCBjbGlwcGVkTmV4dEVDOwogICAgYm9vbCBuZXh0U2VnbWVudENsaXBwZWQsIG5leHRTZWdtZW50Q3VsbGVkOwogICAgY2xpcExpbmVTZWdtZW50VG9OZWFyUGxhbmUobmV4dEVDLnh5eiwgcG9zaXRpb25FQy54eXosIGNsaXBwZWROZXh0V0MsIG5leHRTZWdtZW50Q2xpcHBlZCwgbmV4dFNlZ21lbnRDdWxsZWQsIGNsaXBwZWROZXh0RUMpOwoKICAgIGJvb2wgc2VnbWVudENsaXBwZWQsIHNlZ21lbnRDdWxsZWQ7CiAgICB2ZWM0IGNsaXBwZWRQb3NpdGlvbldDLCBjbGlwcGVkUG9zaXRpb25FQzsKICAgIGNsaXBMaW5lU2VnbWVudFRvTmVhclBsYW5lKHBvc2l0aW9uRUMueHl6LCB1c2VQcmV2aW91cyA/IHByZXZFQy54eXogOiBuZXh0RUMueHl6LCBjbGlwcGVkUG9zaXRpb25XQywgc2VnbWVudENsaXBwZWQsIHNlZ21lbnRDdWxsZWQsIGNsaXBwZWRQb3NpdGlvbkVDKTsKCiAgICBpZiAoc2VnbWVudEN1bGxlZCkKICAgIHsKICAgICAgICByZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOwogICAgfQoKICAgIHZlYzIgZGlyZWN0aW9uVG9QcmV2V0MgPSBub3JtYWxpemUoY2xpcHBlZFByZXZXQy54eSAtIGNsaXBwZWRQb3NpdGlvbldDLnh5KTsKICAgIHZlYzIgZGlyZWN0aW9uVG9OZXh0V0MgPSBub3JtYWxpemUoY2xpcHBlZE5leHRXQy54eSAtIGNsaXBwZWRQb3NpdGlvbldDLnh5KTsKCiAgICAvLyBJZiBhIHNlZ21lbnQgd2FzIGN1bGxlZCwgd2UgY2FuJ3QgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdGlvbgogICAgLy8gY29tcHV0ZWQgYWJvdmUuIFdlIHNob3VsZCBuZXZlciBzZWUgYm90aCBvZiB0aGVzZSBiZSB0cnVlIHdpdGhvdXQKICAgIC8vIFxgc2VnbWVudEN1bGxlZFxgIGFib3ZlIGFsc28gYmVpbmcgdHJ1ZS4KICAgIGlmIChwcmV2U2VnbWVudEN1bGxlZCkKICAgIHsKICAgICAgICBkaXJlY3Rpb25Ub1ByZXZXQyA9IC1kaXJlY3Rpb25Ub05leHRXQzsKICAgIH0KICAgIGVsc2UgaWYgKG5leHRTZWdtZW50Q3VsbGVkKQogICAgewogICAgICAgIGRpcmVjdGlvblRvTmV4dFdDID0gLWRpcmVjdGlvblRvUHJldldDOwogICAgfQoKICAgIHZlYzIgdGhpc1NlZ21lbnRGb3J3YXJkV0MsIG90aGVyU2VnbWVudEZvcndhcmRXQzsKICAgIGlmICh1c2VQcmV2aW91cykKICAgIHsKICAgICAgICB0aGlzU2VnbWVudEZvcndhcmRXQyA9IC1kaXJlY3Rpb25Ub1ByZXZXQzsKICAgICAgICBvdGhlclNlZ21lbnRGb3J3YXJkV0MgPSBkaXJlY3Rpb25Ub05leHRXQzsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0aGlzU2VnbWVudEZvcndhcmRXQyA9IGRpcmVjdGlvblRvTmV4dFdDOwogICAgICAgIG90aGVyU2VnbWVudEZvcndhcmRXQyA9ICAtZGlyZWN0aW9uVG9QcmV2V0M7CiAgICB9CgogICAgdmVjMiB0aGlzU2VnbWVudExlZnRXQyA9IHZlYzIoLXRoaXNTZWdtZW50Rm9yd2FyZFdDLnksIHRoaXNTZWdtZW50Rm9yd2FyZFdDLngpOwoKICAgIHZlYzIgbGVmdFdDID0gdGhpc1NlZ21lbnRMZWZ0V0M7CiAgICBmbG9hdCBleHBhbmRXaWR0aCA9IHdpZHRoICogMC41OwoKICAgIC8vIFdoZW4gbGluZXMgYXJlIHNwbGl0IGF0IHRoZSBhbnRpLW1lcmlkaWFuLCB0aGUgcG9zaXRpb24gbWF5IGJlIGF0IHRoZQogICAgLy8gc2FtZSBsb2NhdGlvbiBhcyB0aGUgbmV4dCBvciBwcmV2aW91cyBwb3NpdGlvbiwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlCiAgICAvLyB0aGF0IHRvIGF2b2lkIHByb2R1Y2luZyBOYU5zLgogICAgaWYgKCFjem1fZXF1YWxzRXBzaWxvbihwcmV2RUMueHl6IC0gcG9zaXRpb25FQy54eXosIHZlYzMoMC4wKSwgY3ptX2Vwc2lsb24xKSAmJiAhY3ptX2VxdWFsc0Vwc2lsb24obmV4dEVDLnh5eiAtIHBvc2l0aW9uRUMueHl6LCB2ZWMzKDAuMCksIGN6bV9lcHNpbG9uMSkpCiAgICB7CiAgICAgICAgdmVjMiBvdGhlclNlZ21lbnRMZWZ0V0MgPSB2ZWMyKC1vdGhlclNlZ21lbnRGb3J3YXJkV0MueSwgb3RoZXJTZWdtZW50Rm9yd2FyZFdDLngpOwoKICAgICAgICB2ZWMyIGxlZnRTdW1XQyA9IHRoaXNTZWdtZW50TGVmdFdDICsgb3RoZXJTZWdtZW50TGVmdFdDOwogICAgICAgIGZsb2F0IGxlZnRTdW1MZW5ndGggPSBsZW5ndGgobGVmdFN1bVdDKTsKICAgICAgICBsZWZ0V0MgPSBsZWZ0U3VtTGVuZ3RoIDwgY3ptX2Vwc2lsb242ID8gdGhpc1NlZ21lbnRMZWZ0V0MgOiAobGVmdFN1bVdDIC8gbGVmdFN1bUxlbmd0aCk7CgogICAgICAgIC8vIFRoZSBzaW5lIG9mIHRoZSBhbmdsZSBiZXR3ZWVuIHRoZSB0d28gdmVjdG9ycyBpcyBnaXZlbiBieSB0aGUgZm9ybXVsYQogICAgICAgIC8vICAgICAgICAgfGEgeCBifCA9IHxhfHxifHNpbih0aGV0YSkKICAgICAgICAvLyB3aGljaCBpcwogICAgICAgIC8vICAgICBmbG9hdCBzaW5BbmdsZSA9IGxlbmd0aChjcm9zcyh2ZWMzKGxlZnRXQywgMC4wKSwgdmVjMygtdGhpc1NlZ21lbnRGb3J3YXJkV0MsIDAuMCkpKTsKICAgICAgICAvLyBCZWNhdXNlIHRoZSB6IGNvbXBvbmVudHMgb2YgYm90aCB2ZWN0b3JzIGFyZSB6ZXJvLCB0aGUgeCBhbmQgeSBjb29yZGluYXRlIHdpbGwgYmUgemVyby4KICAgICAgICAvLyBUaGVyZWZvcmUsIHRoZSBzaW5lIG9mIHRoZSBhbmdsZSBpcyBqdXN0IHRoZSB6IGNvbXBvbmVudCBvZiB0aGUgY3Jvc3MgcHJvZHVjdC4KICAgICAgICB2ZWMyIHUgPSAtdGhpc1NlZ21lbnRGb3J3YXJkV0M7CiAgICAgICAgdmVjMiB2ID0gbGVmdFdDOwogICAgICAgIGZsb2F0IHNpbkFuZ2xlID0gYWJzKHUueCAqIHYueSAtIHUueSAqIHYueCk7CiAgICAgICAgZXhwYW5kV2lkdGggPSBjbGFtcChleHBhbmRXaWR0aCAvIHNpbkFuZ2xlLCAwLjAsIHdpZHRoICogMi4wKTsKICAgIH0KCiAgICB2ZWMyIG9mZnNldCA9IGxlZnRXQyAqIGV4cGFuZERpcmVjdGlvbiAqIGV4cGFuZFdpZHRoICogY3ptX3BpeGVsUmF0aW87CiAgICByZXR1cm4gdmVjNChjbGlwcGVkUG9zaXRpb25XQy54eSArIG9mZnNldCwgLWNsaXBwZWRQb3NpdGlvbldDLnosIDEuMCkgKiAoY3ptX3Byb2plY3Rpb24gKiBjbGlwcGVkUG9zaXRpb25FQykudzsKfQoKdmVjNCBnZXRQb2x5bGluZVdpbmRvd0Nvb3JkaW5hdGVzKHZlYzQgcG9zaXRpb24sIHZlYzQgcHJldmlvdXMsIHZlYzQgbmV4dCwgZmxvYXQgZXhwYW5kRGlyZWN0aW9uLCBmbG9hdCB3aWR0aCwgYm9vbCB1c2VQcmV2aW91cywgb3V0IGZsb2F0IGFuZ2xlKQp7CiAgICB2ZWM0IHBvc2l0aW9uRUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHBvc2l0aW9uOwogICAgdmVjNCBwcmV2RUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHByZXZpb3VzOwogICAgdmVjNCBuZXh0RUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIG5leHQ7CiAgICByZXR1cm4gZ2V0UG9seWxpbmVXaW5kb3dDb29yZGluYXRlc0VDKHBvc2l0aW9uRUMsIHByZXZFQywgbmV4dEVDLCBleHBhbmREaXJlY3Rpb24sIHdpZHRoLCB1c2VQcmV2aW91cywgYW5nbGUpOwp9CmB9KTtmdW5jdGlvbiBKbSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMudHJhbnNsdWNlbnQ9Wih0LnRyYW5zbHVjZW50LCEwKSx0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2U9dC52ZXJ0ZXhTaGFkZXJTb3VyY2UsdGhpcy5fZnJhZ21lbnRTaGFkZXJTb3VyY2U9dC5mcmFnbWVudFNoYWRlclNvdXJjZSx0aGlzLl9yZW5kZXJTdGF0ZT10LnJlbmRlclN0YXRlLHRoaXMuX2Nsb3NlZD1aKHQuY2xvc2VkLCExKX12YXIgVW8sTEk9TygoKT0+e2FFKCk7S0EoKTtidCgpO210KCk7a20oKTtVSSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEptLnByb3RvdHlwZSx7dmVydGV4U2hhZGVyU291cmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVydGV4U2hhZGVyU291cmNlfX0sZnJhZ21lbnRTaGFkZXJTb3VyY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZX19LHJlbmRlclN0YXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RhdGV9fSxjbG9zZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbG9zZWR9fX0pO0ptLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZT1mdW5jdGlvbigpe2xldCB0PVtdO3JldHVybiB0aGlzLmZsYXQmJnQucHVzaCgiI2RlZmluZSBGTEFUIiksdGhpcy5mYWNlRm9yd2FyZCYmdC5wdXNoKCIjZGVmaW5lIEZBQ0VfRk9SV0FSRCIpLG0odGhpcy5tYXRlcmlhbCkmJnQucHVzaCh0aGlzLm1hdGVyaWFsLnNoYWRlclNvdXJjZSksdC5wdXNoKHRoaXMuZnJhZ21lbnRTaGFkZXJTb3VyY2UpLHQuam9pbihgCmApfTtKbS5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMubWF0ZXJpYWwpJiZ0aGlzLm1hdGVyaWFsLmlzVHJhbnNsdWNlbnQoKXx8IW0odGhpcy5tYXRlcmlhbCkmJnRoaXMudHJhbnNsdWNlbnR9O0ptLnByb3RvdHlwZS5nZXRSZW5kZXJTdGF0ZT1mdW5jdGlvbigpe2xldCB0PXRoaXMuaXNUcmFuc2x1Y2VudCgpLGU9cXModGhpcy5yZW5kZXJTdGF0ZSwhMSk7cmV0dXJuIHQ/KGUuZGVwdGhNYXNrPSExLGUuYmxlbmRpbmc9VXIuQUxQSEFfQkxFTkQpOmUuZGVwdGhNYXNrPSEwLGV9O0ptLmdldERlZmF1bHRSZW5kZXJTdGF0ZT1mdW5jdGlvbih0LGUsaSl7bGV0IG49e2RlcHRoVGVzdDp7ZW5hYmxlZDohMH19O3JldHVybiB0JiYobi5kZXB0aE1hc2s9ITEsbi5ibGVuZGluZz1Vci5BTFBIQV9CTEVORCksZSYmKG4uY3VsbD17ZW5hYmxlZDohMCxmYWNlOkVoLkJBQ0t9KSxtKGkpJiYobj1lcyhpLG4sITApKSxufTtVbz1KbX0pO2Z1bmN0aW9uIFFsKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQudHJhbnNsdWNlbnQsITApLGk9ITEsbj1RbC5WRVJURVhfRk9STUFUO3RoaXMubWF0ZXJpYWw9dm9pZCAwLHRoaXMudHJhbnNsdWNlbnQ9ZSx0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2U9Wih0LnZlcnRleFNoYWRlclNvdXJjZSxXTiksdGhpcy5fZnJhZ21lbnRTaGFkZXJTb3VyY2U9Wih0LmZyYWdtZW50U2hhZGVyU291cmNlLE9udCksdGhpcy5fcmVuZGVyU3RhdGU9VW8uZ2V0RGVmYXVsdFJlbmRlclN0YXRlKGUsaSx0LnJlbmRlclN0YXRlKSx0aGlzLl9jbG9zZWQ9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9bn12YXIgV04sT250LEROLFp4PU8oKCk9PntidCgpO0lsKCk7THMoKTtHTigpO1J4KCk7Qk4oKTtMSSgpO1dOPWAke2tJfQoke194fWAsT250PVFJO19vLmlzSW50ZXJuZXRFeHBsb3JlcigpfHwoV049YCNkZWZpbmUgQ0xJUF9QT0xZTElORSAKJHtXTn1gKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhRbC5wcm90b3R5cGUse3ZlcnRleFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleFNoYWRlclNvdXJjZX19LGZyYWdtZW50U2hhZGVyU291cmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnJhZ21lbnRTaGFkZXJTb3VyY2V9fSxyZW5kZXJTdGF0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlclN0YXRlfX0sY2xvc2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xvc2VkfX0sdmVydGV4Rm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVydGV4Rm9ybWF0fX19KTtRbC5WRVJURVhfRk9STUFUPU90LlBPU0lUSU9OX09OTFk7UWwucHJvdG90eXBlLmdldEZyYWdtZW50U2hhZGVyU291cmNlPVVvLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZTtRbC5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudD1Vby5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudDtRbC5wcm90b3R5cGUuZ2V0UmVuZGVyU3RhdGU9VW8ucHJvdG90eXBlLmdldFJlbmRlclN0YXRlO0ROPVFsfSk7dmFyIEl4LHB4PU8oKCk9PntJeD1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwppbiB2ZWMzIHByZXZQb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwcmV2UG9zaXRpb24zRExvdzsKaW4gdmVjMyBuZXh0UG9zaXRpb24zREhpZ2g7CmluIHZlYzMgbmV4dFBvc2l0aW9uM0RMb3c7CmluIHZlYzIgZXhwYW5kQW5kV2lkdGg7CmluIHZlYzIgc3Q7CmluIGZsb2F0IGJhdGNoSWQ7CgpvdXQgZmxvYXQgdl93aWR0aDsKb3V0IHZlYzIgdl9zdDsKb3V0IGZsb2F0IHZfcG9seWxpbmVBbmdsZTsKCnZvaWQgbWFpbigpCnsKICAgIGZsb2F0IGV4cGFuZERpciA9IGV4cGFuZEFuZFdpZHRoLng7CiAgICBmbG9hdCB3aWR0aCA9IGFicyhleHBhbmRBbmRXaWR0aC55KSArIDAuNTsKICAgIGJvb2wgdXNlUHJldiA9IGV4cGFuZEFuZFdpZHRoLnkgPCAwLjA7CgogICAgdmVjNCBwID0gY3ptX2NvbXB1dGVQb3NpdGlvbigpOwogICAgdmVjNCBwcmV2ID0gY3ptX2NvbXB1dGVQcmV2UG9zaXRpb24oKTsKICAgIHZlYzQgbmV4dCA9IGN6bV9jb21wdXRlTmV4dFBvc2l0aW9uKCk7CgogICAgZmxvYXQgYW5nbGU7CiAgICB2ZWM0IHBvc2l0aW9uV0MgPSBnZXRQb2x5bGluZVdpbmRvd0Nvb3JkaW5hdGVzKHAsIHByZXYsIG5leHQsIGV4cGFuZERpciwgd2lkdGgsIHVzZVByZXYsIGFuZ2xlKTsKICAgIGdsX1Bvc2l0aW9uID0gY3ptX3ZpZXdwb3J0T3J0aG9ncmFwaGljICogcG9zaXRpb25XQzsKCiAgICB2X3dpZHRoID0gd2lkdGg7CiAgICB2X3N0LnMgPSBzdC5zOwogICAgdl9zdC50ID0gY3ptX3dyaXRlTm9uUGVyc3BlY3RpdmUoc3QudCwgZ2xfUG9zaXRpb24udyk7CiAgICB2X3BvbHlsaW5lQW5nbGUgPSBhbmdsZTsKfQpgfSk7dmFyIHV4LEN4PU8oKCk9Pnt1eD1gI2lmZGVmIFZFQ1RPUl9USUxFCnVuaWZvcm0gdmVjNCB1X2hpZ2hsaWdodENvbG9yOwojZW5kaWYKCmluIHZlYzIgdl9zdDsKCnZvaWQgbWFpbigpCnsKICAgIGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQ7CgogICAgdmVjMiBzdCA9IHZfc3Q7CiAgICBzdC50ID0gY3ptX3JlYWROb25QZXJzcGVjdGl2ZShzdC50LCBnbF9GcmFnQ29vcmQudyk7CgogICAgbWF0ZXJpYWxJbnB1dC5zID0gc3QuczsKICAgIG1hdGVyaWFsSW5wdXQuc3QgPSBzdDsKICAgIG1hdGVyaWFsSW5wdXQuc3RyID0gdmVjMyhzdCwgMC4wKTsKCiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CiAgICBvdXRfRnJhZ0NvbG9yID0gdmVjNChtYXRlcmlhbC5kaWZmdXNlICsgbWF0ZXJpYWwuZW1pc3Npb24sIG1hdGVyaWFsLmFscGhhKTsKI2lmZGVmIFZFQ1RPUl9USUxFCiAgICBvdXRfRnJhZ0NvbG9yICo9IHVfaGlnaGxpZ2h0Q29sb3I7CiNlbmRpZgoKICAgIGN6bV93cml0ZUxvZ0RlcHRoKCk7Cn0KYH0pO2Z1bmN0aW9uIGptKHQsZSxpLG4scyl7dGhpcy5fZm9ybWF0PXQsdGhpcy5fZGF0YXR5cGU9ZSx0aGlzLl93aWR0aD1pLHRoaXMuX2hlaWdodD1uLHRoaXMuX2J1ZmZlcj1zfXZhciBneCxUeD1PKCgpPT57bXQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqbS5wcm90b3R5cGUse2ludGVybmFsRm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9ybWF0fX0scGl4ZWxEYXRhdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF0eXBlfX0sd2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93aWR0aH19LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hlaWdodH19LGJ1ZmZlclZpZXc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJ9fX0pO2ptLmNsb25lPWZ1bmN0aW9uKHQpe2lmKG0odCkpcmV0dXJuIG5ldyBqbSh0Ll9mb3JtYXQsdC5fZGF0YXR5cGUsdC5fd2lkdGgsdC5faGVpZ2h0LHQuX2J1ZmZlcil9O2ptLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBqbS5jbG9uZSh0aGlzKX07Z3g9am19KTtmdW5jdGlvbiBieCgpe2lmKCFtKHNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyKSl7bGV0IHQ9UU4oInRyYW5zZmVyVHlwZWRBcnJheVRlc3QiKTt0LnBvc3RNZXNzYWdlPVoodC53ZWJraXRQb3N0TWVzc2FnZSx0LnBvc3RNZXNzYWdlKTtsZXQgZT05OSxpPW5ldyBJbnQ4QXJyYXkoW2VdKTt0cnl7dC5wb3N0TWVzc2FnZSh7YXJyYXk6aX0sW2kuYnVmZmVyXSl9Y2F0Y2h7cmV0dXJuIHNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyPSExLHNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyfXNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyPW5ldyBQcm9taXNlKG49Pnt0Lm9ubWVzc2FnZT1mdW5jdGlvbihzKXtsZXQgbz1zLmRhdGEuYXJyYXkscj1tKG8pJiZvWzBdPT09ZTtuKHIpLHQudGVybWluYXRlKCksc28uX2NhblRyYW5zZmVyQXJyYXlCdWZmZXI9cn19KX1yZXR1cm4gc28uX2NhblRyYW5zZmVyQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gTU4odCl7bGV0IGU7dHJ5e2U9bmV3IEJsb2IoW3RdLHt0eXBlOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0In0pfWNhdGNoe2xldCBzPXdpbmRvdy5CbG9iQnVpbGRlcnx8d2luZG93LldlYktpdEJsb2JCdWlsZGVyfHx3aW5kb3cuTW96QmxvYkJ1aWxkZXJ8fHdpbmRvdy5NU0Jsb2JCdWlsZGVyLG89bmV3IHM7by5hcHBlbmQodCksZT1vLmdldEJsb2IoImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKX1yZXR1cm4od2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTCkuY3JlYXRlT2JqZWN0VVJMKGUpfWZ1bmN0aW9uIFFOKHQpe2xldCBlPW5ldyBOeC5kZWZhdWx0KHQpLGk9ZS5zY2hlbWUoKS5sZW5ndGghPT0wJiZlLmZyYWdtZW50KCkubGVuZ3RoPT09MCxuPXt9LHM7aWYoWloodCkpe2xldCByPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gcz1NTihyKSxuZXcgV29ya2VyKHMsbil9bGV0IG89dC5yZXBsYWNlKC9cLmpzJC8sIiIpO2lmKCFpJiZ0eXBlb2YgQ0VTSVVNX1dPUktFUlM8InUiKXtsZXQgcj1gCiAgICAgIGltcG9ydFNjcmlwdHMoIiR7TU4oQ0VTSVVNX1dPUktFUlMpfSIpOwogICAgICBDZXNpdW1Xb3JrZXJzWyIke299Il0oKTsKICAgIGA7cmV0dXJuIHM9TU4ociksbmV3IFdvcmtlcihzLG4pfWlmKHM9dCxpfHwocz10aChgJHtzby5fd29ya2VyTW9kdWxlUHJlZml4K299LmpzYCkpLCFfby5zdXBwb3J0c0VzbVdlYldvcmtlcnMoKSl0aHJvdyBuZXcga2UoIlRoaXMgYnJvd3NlciBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXBkYXRlIHlvdXIgYnJvd3NlciB0byBjb250aW51ZS4iKTtyZXR1cm4gbi50eXBlPSJtb2R1bGUiLG5ldyBXb3JrZXIocyxuKX1hc3luYyBmdW5jdGlvbiBWbnQodCxlKXtsZXQgaT17bW9kdWxlUGF0aDp2b2lkIDAsd2FzbUJpbmFyeUZpbGU6dm9pZCAwLHdhc21CaW5hcnk6dm9pZCAwfTtpZighX28uc3VwcG9ydHNXZWJBc3NlbWJseSgpKXtpZighbShlLmZhbGxiYWNrTW9kdWxlUGF0aCkpdGhyb3cgbmV3IGtlKGBUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBXZWIgQXNzZW1ibHksIGFuZCBubyBiYWNrdXAgbW9kdWxlIHdhcyBwcm92aWRlZCBmb3IgJHt0Ll93b3JrZXJQYXRofWApO3JldHVybiBpLm1vZHVsZVBhdGg9dGgoZS5mYWxsYmFja01vZHVsZVBhdGgpLGl9aS53YXNtQmluYXJ5RmlsZT10aChlLndhc21CaW5hcnlGaWxlKTtsZXQgbj1hd2FpdCB0bi5mZXRjaEFycmF5QnVmZmVyKHt1cmw6aS53YXNtQmluYXJ5RmlsZX0pO3JldHVybiBpLndhc21CaW5hcnk9bixpfWZ1bmN0aW9uIHNvKHQsZSl7dGhpcy5fd29ya2VyUGF0aD10LHRoaXMuX21heGltdW1BY3RpdmVUYXNrcz1aKGUsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSx0aGlzLl9hY3RpdmVUYXNrcz0wLHRoaXMuX25leHRJRD0wLHRoaXMuX3dlYkFzc2VtYmx5UHJvbWlzZT12b2lkIDB9YXN5bmMgZnVuY3Rpb24gV250KHQsZSxpKXtsZXQgbj1hd2FpdCBQcm9taXNlLnJlc29sdmUoYngoKSk7bShpKT9ufHwoaS5sZW5ndGg9MCk6aT1CbnQ7bGV0IHM9dC5fbmV4dElEKyssbz1uZXcgUHJvbWlzZSgocixhKT0+e3QuX3dvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixHbnQodC5fd29ya2VyLHMscixhKSl9KTtyZXR1cm4gdC5fd29ya2VyLnBvc3RNZXNzYWdlKHtpZDpzLGJhc2VVcmw6dGguZ2V0Q2VzaXVtQmFzZVVybCgpLnVybCxwYXJhbWV0ZXJzOmUsY2FuVHJhbnNmZXJBcnJheUJ1ZmZlcjpufSxpKSxvfWFzeW5jIGZ1bmN0aW9uIERudCh0LGUsaSl7Kyt0Ll9hY3RpdmVUYXNrczt0cnl7bGV0IG49YXdhaXQgV250KHQsZSxpKTtyZXR1cm4tLXQuX2FjdGl2ZVRhc2tzLG59Y2F0Y2gobil7dGhyb3ctLXQuX2FjdGl2ZVRhc2tzLG59fXZhciBOeCxVTixHbnQsQm50LFhFLGtOPU8oKCk9PntOeD1jbyhvYygpLDEpO1BaKCk7YnQoKTttdCgpO1dzKCk7VnQoKTt4aSgpO0lsKCk7WjAoKTtJYSgpO1BzKCk7VU49bmV3IFdlO0dudD0odCxlLGksbik9PntsZXQgcz0oe2RhdGE6b30pPT57aWYoby5pZD09PWUpe2lmKG0oby5lcnJvcikpe2xldCByPW8uZXJyb3I7ci5uYW1lPT09IlJ1bnRpbWVFcnJvciI/KHI9bmV3IGtlKG8uZXJyb3IubWVzc2FnZSksci5zdGFjaz1vLmVycm9yLnN0YWNrKTpyLm5hbWU9PT0iRGV2ZWxvcGVyRXJyb3IiPyhyPW5ldyBZKG8uZXJyb3IubWVzc2FnZSksci5zdGFjaz1vLmVycm9yLnN0YWNrKTpyLm5hbWU9PT0iRXJyb3IiJiYocj1uZXcgRXJyb3Ioby5lcnJvci5tZXNzYWdlKSxyLnN0YWNrPW8uZXJyb3Iuc3RhY2spLFVOLnJhaXNlRXZlbnQociksbihyKX1lbHNlIFVOLnJhaXNlRXZlbnQoKSxpKG8ucmVzdWx0KTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHMpfX07cmV0dXJuIHN9LEJudD1bXTtzby5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQsZSl7aWYobSh0aGlzLl93b3JrZXIpfHwodGhpcy5fd29ya2VyPVFOKHRoaXMuX3dvcmtlclBhdGgpKSwhKHRoaXMuX2FjdGl2ZVRhc2tzPj10aGlzLl9tYXhpbXVtQWN0aXZlVGFza3MpKXJldHVybiBEbnQodGhpcyx0LGUpfTtzby5wcm90b3R5cGUuaW5pdFdlYkFzc2VtYmx5TW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHQpe2lmKG0odGhpcy5fd2ViQXNzZW1ibHlQcm9taXNlKSlyZXR1cm4gdGhpcy5fd2ViQXNzZW1ibHlQcm9taXNlO2xldCBlPWFzeW5jKCk9PntsZXQgaT10aGlzLl93b3JrZXI9UU4odGhpcy5fd29ya2VyUGF0aCksbj1hd2FpdCBWbnQodGhpcyx0KSxzPWF3YWl0IFByb21pc2UucmVzb2x2ZShieCgpKSxvLHI9bi53YXNtQmluYXJ5O20ocikmJnMmJihvPVtyXSk7bGV0IGE9bmV3IFByb21pc2UoKGgsQSk9PntpLm9ubWVzc2FnZT1mdW5jdGlvbih7ZGF0YTpkfSl7bShkKT9oKGQucmVzdWx0KTpBKG5ldyBrZSgiQ291bGQgbm90IGNvbmZpZ3VyZSB3YXNtIG1vZHVsZSIpKX19KTtyZXR1cm4gaS5wb3N0TWVzc2FnZSh7Y2FuVHJhbnNmZXJBcnJheUJ1ZmZlcjpzLHBhcmFtZXRlcnM6e3dlYkFzc2VtYmx5Q29uZmlnOm59fSxvKSxhfTtyZXR1cm4gdGhpcy5fd2ViQXNzZW1ibHlQcm9taXNlPWUoKSx0aGlzLl93ZWJBc3NlbWJseVByb21pc2V9O3NvLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtzby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3dvcmtlcikmJnRoaXMuX3dvcmtlci50ZXJtaW5hdGUoKSxsaSh0aGlzKX07c28udGFza0NvbXBsZXRlZEV2ZW50PVVOO3NvLl9kZWZhdWx0V29ya2VyTW9kdWxlUHJlZml4PSJXb3JrZXJzLyI7c28uX3dvcmtlck1vZHVsZVByZWZpeD1zby5fZGVmYXVsdFdvcmtlck1vZHVsZVByZWZpeDtzby5fY2FuVHJhbnNmZXJBcnJheUJ1ZmZlcj12b2lkIDA7WEU9c299KTtmdW5jdGlvbiBfaCgpe31mdW5jdGlvbiBNbnQoKXtsZXQgdD1faC5fdHJhbnNjb2RlVGFza1Byb2Nlc3Nvci5pbml0V2ViQXNzZW1ibHlNb2R1bGUoe3dhc21CaW5hcnlGaWxlOiJUaGlyZFBhcnR5L2Jhc2lzX3RyYW5zY29kZXIud2FzbSJ9KS50aGVuKGZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuIF9oLl90cmFuc2NvZGVUYXNrUHJvY2Vzc29yO3Rocm93IG5ldyBrZSgiS1RYMiB0cmFuc2NvZGVyIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4iKX0pO19oLl9yZWFkeVByb21pc2U9dH12YXIgRngsWXg9TygoKT0+e2FlKCk7VHgoKTttdCgpO1BzKCk7a04oKTtfaC5fdHJhbnNjb2RlVGFza1Byb2Nlc3Nvcj1uZXcgWEUoInRyYW5zY29kZUtUWDIiLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7X2guX3JlYWR5UHJvbWlzZT12b2lkIDA7X2gudHJhbnNjb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgic3VwcG9ydGVkVGFyZ2V0Rm9ybWF0cyIsZSksbShfaC5fcmVhZHlQcm9taXNlKXx8TW50KCksX2guX3JlYWR5UHJvbWlzZS50aGVuKGZ1bmN0aW9uKGkpe2xldCBuO2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7bGV0IHM9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIG49e3N1cHBvcnRlZFRhcmdldEZvcm1hdHM6ZSxrdHgyQnVmZmVyOnN9LGkuc2NoZWR1bGVUYXNrKG4sW3RdKX1yZXR1cm4gbj17c3VwcG9ydGVkVGFyZ2V0Rm9ybWF0czplLGt0eDJCdWZmZXI6dH0saS5zY2hlZHVsZVRhc2sobixbdC5idWZmZXJdKX0pLnRoZW4oZnVuY3Rpb24oaSl7bGV0IG49aS5sZW5ndGgscz1PYmplY3Qua2V5cyhpWzBdKSxvPXMubGVuZ3RoLHI7Zm9yKHI9MDtyPG47cisrKXtsZXQgYT1pW3JdO2ZvcihsZXQgaD0wO2g8bztoKyspe2xldCBBPWFbc1toXV07YVtzW2hdXT1uZXcgZ3goQS5pbnRlcm5hbEZvcm1hdCxBLmRhdGF0eXBlLEEud2lkdGgsQS5oZWlnaHQsQS5sZXZlbEJ1ZmZlcil9fWlmKG89PT0xKXtmb3Iocj0wO3I8bjsrK3IpaVtyXT1pW3JdW3NbMF1dO249PT0xJiYoaT1pWzBdKX1yZXR1cm4gaX0pLmNhdGNoKGZ1bmN0aW9uKGkpe3Rocm93IGl9KX07Rng9X2h9KTtmdW5jdGlvbiBPeCh0KXtwLmRlZmluZWQoInJlc291cmNlT3JVcmxPckJ1ZmZlciIsdCk7bGV0IGU7cmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpP2U9UHJvbWlzZS5yZXNvbHZlKHQpOmU9dG4uY3JlYXRlSWZOZWVkZWQodCkuZmV0Y2hBcnJheUJ1ZmZlcigpLGUudGhlbihmdW5jdGlvbihpKXtyZXR1cm4gRngudHJhbnNjb2RlKGksU3gpfSl9dmFyIFN4LFZ4LEd4PU8oKCk9PnthZSgpO0lhKCk7WXgoKTtPeC5zZXRLVFgyU3VwcG9ydGVkRm9ybWF0cz1mdW5jdGlvbih0LGUsaSxuLHMsbyl7U3g9e3MzdGM6dCxwdnJ0YzplLGFzdGM6aSxldGM6bixldGMxOnMsYmM3Om99fTtWeD1PeH0pO2Z1bmN0aW9uIHlJKHQsZSxpLG4scyxvLHIsYSxoLEEsZCl7dGhpcy5fY29udGV4dD10LHRoaXMuX3RleHR1cmU9ZSx0aGlzLl90ZXh0dXJlVGFyZ2V0PWksdGhpcy5fdGFyZ2V0RmFjZT1uLHRoaXMuX3BpeGVsRGF0YXR5cGU9cix0aGlzLl9pbnRlcm5hbEZvcm1hdD1zLHRoaXMuX3BpeGVsRm9ybWF0PW8sdGhpcy5fc2l6ZT1hLHRoaXMuX3ByZU11bHRpcGx5QWxwaGE9aCx0aGlzLl9mbGlwWT1BLHRoaXMuX2luaXRpYWxpemVkPWR9dmFyIGtsLEJ4PU8oKCk9PnthZSgpO2J0KCk7bXQoKTtWdCgpO19jKCk7RWMoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh5SS5wcm90b3R5cGUse3BpeGVsRm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGl4ZWxGb3JtYXR9fSxwaXhlbERhdGF0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGl4ZWxEYXRhdHlwZX19LF90YXJnZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90YXJnZXRGYWNlfX19KTt5SS5wcm90b3R5cGUuY29weUZyb209ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJvcHRpb25zIix0KTtsZXQgZT1aKHQueE9mZnNldCwwKSxpPVoodC55T2Zmc2V0LDApO2lmKHAuZGVmaW5lZCgib3B0aW9ucy5zb3VyY2UiLHQuc291cmNlKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieE9mZnNldCIsZSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieU9mZnNldCIsaSwwKSxlK3Quc291cmNlLndpZHRoPnRoaXMuX3NpemUpdGhyb3cgbmV3IFkoInhPZmZzZXQgKyBvcHRpb25zLnNvdXJjZS53aWR0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB3aWR0aC4iKTtpZihpK3Quc291cmNlLmhlaWdodD50aGlzLl9zaXplKXRocm93IG5ldyBZKCJ5T2Zmc2V0ICsgb3B0aW9ucy5zb3VyY2UuaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGhlaWdodC4iKTtsZXQgbj10LnNvdXJjZSxzPXRoaXMuX2NvbnRleHQuX2dsLG89dGhpcy5fdGV4dHVyZVRhcmdldCxyPXRoaXMuX3RhcmdldEZhY2U7cy5hY3RpdmVUZXh0dXJlKHMuVEVYVFVSRTApLHMuYmluZFRleHR1cmUobyx0aGlzLl90ZXh0dXJlKTtsZXQgYT1uLndpZHRoLGg9bi5oZWlnaHQsQT1uLmFycmF5QnVmZmVyVmlldyxkPXRoaXMuX3NpemUsZj10aGlzLl9waXhlbEZvcm1hdCxFPXRoaXMuX2ludGVybmFsRm9ybWF0LF89dGhpcy5fcGl4ZWxEYXRhdHlwZSxSPXRoaXMuX3ByZU11bHRpcGx5QWxwaGEsST10aGlzLl9mbGlwWSxDPVoodC5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24sITEpLE49NDttKEEpJiYoTj1JZS5hbGlnbm1lbnRJbkJ5dGVzKGYsXyxhKSkscy5waXhlbFN0b3JlaShzLlVOUEFDS19BTElHTk1FTlQsTiksQz9zLnBpeGVsU3RvcmVpKHMuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxzLk5PTkUpOnMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLHMuQlJPV1NFUl9ERUZBVUxUX1dFQkdMKTtsZXQgVD0hMTtpZighdGhpcy5faW5pdGlhbGl6ZWQpe2lmKGU9PT0wJiZpPT09MCYmYT09PWQmJmg9PT1kKW0oQSk/KHMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsITEpLHMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCExKSxJJiYoQT1JZS5mbGlwWShBLGYsXyxkLGQpKSxzLnRleEltYWdlMkQociwwLEUsZCxkLDAsZixnZS50b1dlYkdMQ29uc3RhbnQoXyx0aGlzLl9jb250ZXh0KSxBKSk6KHMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsUikscy5waXhlbFN0b3JlaShzLlVOUEFDS19GTElQX1lfV0VCR0wsSSkscy50ZXhJbWFnZTJEKHIsMCxFLGYsZ2UudG9XZWJHTENvbnN0YW50KF8sdGhpcy5fY29udGV4dCksbikpLFQ9ITA7ZWxzZXtzLnBpeGVsU3RvcmVpKHMuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxzLnBpeGVsU3RvcmVpKHMuVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSk7bGV0IEY9SWUuY3JlYXRlVHlwZWRBcnJheShmLF8sZCxkKTtzLnRleEltYWdlMkQociwwLEUsZCxkLDAsZixnZS50b1dlYkdMQ29uc3RhbnQoXyx0aGlzLl9jb250ZXh0KSxGKX10aGlzLl9pbml0aWFsaXplZD0hMH1UfHwobShBKT8ocy5waXhlbFN0b3JlaShzLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwhMSkscy5waXhlbFN0b3JlaShzLlVOUEFDS19GTElQX1lfV0VCR0wsITEpLEkmJihBPUllLmZsaXBZKEEsZixfLGEsaCkpLHMudGV4U3ViSW1hZ2UyRChyLDAsZSxpLGEsaCxmLGdlLnRvV2ViR0xDb25zdGFudChfLHRoaXMuX2NvbnRleHQpLEEpKToocy5waXhlbFN0b3JlaShzLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCxSKSxzLnBpeGVsU3RvcmVpKHMuVU5QQUNLX0ZMSVBfWV9XRUJHTCxJKSxzLnRleFN1YkltYWdlMkQociwwLGUsaSxmLGdlLnRvV2ViR0xDb25zdGFudChfLHRoaXMuX2NvbnRleHQpLG4pKSkscy5iaW5kVGV4dHVyZShvLG51bGwpfTt5SS5wcm90b3R5cGUuY29weUZyb21GcmFtZWJ1ZmZlcj1mdW5jdGlvbih0LGUsaSxuLHMsbyl7aWYodD1aKHQsMCksZT1aKGUsMCksaT1aKGksMCksbj1aKG4sMCkscz1aKHMsdGhpcy5fc2l6ZSksbz1aKG8sdGhpcy5fc2l6ZSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInhPZmZzZXQiLHQsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInlPZmZzZXQiLGUsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImZyYW1lYnVmZmVyWE9mZnNldCIsaSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZnJhbWVidWZmZXJZT2Zmc2V0IixuLDApLHQrcz50aGlzLl9zaXplKXRocm93IG5ldyBZKCJ4T2Zmc2V0ICsgc291cmNlLndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHdpZHRoLiIpO2lmKGUrbz50aGlzLl9zaXplKXRocm93IG5ldyBZKCJ5T2Zmc2V0ICsgc291cmNlLmhlaWdodCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBoZWlnaHQuIik7aWYodGhpcy5fcGl4ZWxEYXRhdHlwZT09PWdlLkZMT0FUKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbUZyYW1lYnVmZmVyIHdoZW4gdGhlIHRleHR1cmUgcGl4ZWwgZGF0YSB0eXBlIGlzIEZMT0FULiIpO2lmKHRoaXMuX3BpeGVsRGF0YXR5cGU9PT1nZS5IQUxGX0ZMT0FUKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbUZyYW1lYnVmZmVyIHdoZW4gdGhlIHRleHR1cmUgcGl4ZWwgZGF0YSB0eXBlIGlzIEhBTEZfRkxPQVQuIik7bGV0IHI9dGhpcy5fY29udGV4dC5fZ2wsYT10aGlzLl90ZXh0dXJlVGFyZ2V0O3IuYWN0aXZlVGV4dHVyZShyLlRFWFRVUkUwKSxyLmJpbmRUZXh0dXJlKGEsdGhpcy5fdGV4dHVyZSksci5jb3B5VGV4U3ViSW1hZ2UyRCh0aGlzLl90YXJnZXRGYWNlLDAsdCxlLGksbixzLG8pLHIuYmluZFRleHR1cmUoYSxudWxsKSx0aGlzLl9pbml0aWFsaXplZD0hMH07a2w9eUl9KTtmdW5jdGlvbiBxRSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCk7bGV0IGU9dC5jb250ZXh0LGk9dC5zb3VyY2UsbixzO2lmKG0oaSkpe2xldCBUPVtpLnBvc2l0aXZlWCxpLm5lZ2F0aXZlWCxpLnBvc2l0aXZlWSxpLm5lZ2F0aXZlWSxpLnBvc2l0aXZlWixpLm5lZ2F0aXZlWl07aWYoIVRbMF18fCFUWzFdfHwhVFsyXXx8IVRbM118fCFUWzRdfHwhVFs1XSl0aHJvdyBuZXcgWSgib3B0aW9ucy5zb3VyY2UgcmVxdWlyZXMgcG9zaXRpdmVYLCBuZWdhdGl2ZVgsIHBvc2l0aXZlWSwgbmVnYXRpdmVZLCBwb3NpdGl2ZVosIGFuZCBuZWdhdGl2ZVogZmFjZXMuIik7bj1UWzBdLndpZHRoLHM9VFswXS5oZWlnaHQ7Zm9yKGxldCBGPTE7Rjw2OysrRilpZihOdW1iZXIoVFtGXS53aWR0aCkhPT1ufHxOdW1iZXIoVFtGXS5oZWlnaHQpIT09cyl0aHJvdyBuZXcgWSgiRWFjaCBmYWNlIGluIG9wdGlvbnMuc291cmNlIG11c3QgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgaGVpZ2h0LiIpfWVsc2Ugbj10LndpZHRoLHM9dC5oZWlnaHQ7bGV0IG89bixyPVoodC5waXhlbERhdGF0eXBlLGdlLlVOU0lHTkVEX0JZVEUpLGE9Wih0LnBpeGVsRm9ybWF0LEllLlJHQkEpLGg9SWUudG9JbnRlcm5hbEZvcm1hdChhLHIsZSk7aWYoIW0obil8fCFtKHMpKXRocm93IG5ldyBZKCJvcHRpb25zIHJlcXVpcmVzIGEgc291cmNlIGZpZWxkIHRvIGNyZWF0ZSBhbiBpbml0aWFsaXplZCBjdWJlIG1hcCBvciB3aWR0aCBhbmQgaGVpZ2h0IGZpZWxkcyB0byBjcmVhdGUgYSBibGFuayBjdWJlIG1hcC4iKTtpZihuIT09cyl0aHJvdyBuZXcgWSgiV2lkdGggbXVzdCBlcXVhbCBoZWlnaHQuIik7aWYobzw9MCl0aHJvdyBuZXcgWSgiV2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKG8+ZW4ubWF4aW11bUN1YmVNYXBTaXplKXRocm93IG5ldyBZKGBXaWR0aCBhbmQgaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIGN1YmUgbWFwIHNpemUgKCR7ZW4ubWF4aW11bUN1YmVNYXBTaXplfSkuICBDaGVjayBtYXhpbXVtQ3ViZU1hcFNpemUuYCk7aWYoIUllLnZhbGlkYXRlKGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIG9wdGlvbnMucGl4ZWxGb3JtYXQuIik7aWYoSWUuaXNEZXB0aEZvcm1hdChhKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5waXhlbEZvcm1hdCBjYW5ub3QgYmUgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwuIik7aWYoIWdlLnZhbGlkYXRlKHIpKXRocm93IG5ldyBZKCJJbnZhbGlkIG9wdGlvbnMucGl4ZWxEYXRhdHlwZS4iKTtpZihyPT09Z2UuRkxPQVQmJiFlLmZsb2F0aW5nUG9pbnRUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxEYXRhdHlwZSBpcyBGTE9BVCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbi4iKTtpZihyPT09Z2UuSEFMRl9GTE9BVCYmIWUuaGFsZkZsb2F0aW5nUG9pbnRUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxEYXRhdHlwZSBpcyBIQUxGX0ZMT0FULCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBleHRlbnNpb24uIik7bGV0IEE9SWUudGV4dHVyZVNpemVJbkJ5dGVzKGEscixvLG8pKjYsZD10LnByZU11bHRpcGx5QWxwaGF8fGE9PT1JZS5SR0J8fGE9PT1JZS5MVU1JTkFOQ0UsZj1aKHQuZmxpcFksITApLEU9Wih0LnNraXBDb2xvclNwYWNlQ29udmVyc2lvbiwhMSksXz1lLl9nbCxSPV8uVEVYVFVSRV9DVUJFX01BUCxJPV8uY3JlYXRlVGV4dHVyZSgpO18uYWN0aXZlVGV4dHVyZShfLlRFWFRVUkUwKSxfLmJpbmRUZXh0dXJlKFIsSSk7ZnVuY3Rpb24gQyhULEYsYixHLE0pe2xldCBRPUYuYXJyYXlCdWZmZXJWaWV3O20oUSl8fChRPUYuYnVmZmVyVmlldyk7bGV0IFU9NDttKFEpJiYoVT1JZS5hbGlnbm1lbnRJbkJ5dGVzKGEscixuKSksXy5waXhlbFN0b3JlaShfLlVOUEFDS19BTElHTk1FTlQsVSksTT9fLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxfLk5PTkUpOl8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLF8uQlJPV1NFUl9ERUZBVUxUX1dFQkdMKSxtKFEpPyhfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSksRyYmKFE9SWUuZmxpcFkoUSxhLHIsbyxvKSksXy50ZXhJbWFnZTJEKFQsMCxoLG8sbywwLGEsZ2UudG9XZWJHTENvbnN0YW50KHIsZSksUSkpOihfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLGIpLF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLEcpLF8udGV4SW1hZ2UyRChULDAsaCxhLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLEYpKX1tKGkpPyhDKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLGkucG9zaXRpdmVYLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLGkubmVnYXRpdmVYLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLGkucG9zaXRpdmVZLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLGkubmVnYXRpdmVZLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLGkucG9zaXRpdmVaLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLGkubmVnYXRpdmVaLGQsZixFKSk6KF8udGV4SW1hZ2UyRChfLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwwLGgsbyxvLDAsYSxnZS50b1dlYkdMQ29uc3RhbnQocixlKSxudWxsKSxfLnRleEltYWdlMkQoXy5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsMCxoLG8sbywwLGEsZ2UudG9XZWJHTENvbnN0YW50KHIsZSksbnVsbCksXy50ZXhJbWFnZTJEKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLDAsaCxvLG8sMCxhLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLG51bGwpLF8udGV4SW1hZ2UyRChfLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwwLGgsbyxvLDAsYSxnZS50b1dlYkdMQ29uc3RhbnQocixlKSxudWxsKSxfLnRleEltYWdlMkQoXy5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osMCxoLG8sbywwLGEsZ2UudG9XZWJHTENvbnN0YW50KHIsZSksbnVsbCksXy50ZXhJbWFnZTJEKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLDAsaCxvLG8sMCxhLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLG51bGwpKSxfLmJpbmRUZXh0dXJlKFIsbnVsbCksdGhpcy5fY29udGV4dD1lLHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz1lLl90ZXh0dXJlRmlsdGVyQW5pc290cm9waWMsdGhpcy5fdGV4dHVyZVRhcmdldD1SLHRoaXMuX3RleHR1cmU9SSx0aGlzLl9waXhlbEZvcm1hdD1hLHRoaXMuX3BpeGVsRGF0YXR5cGU9cix0aGlzLl9zaXplPW8sdGhpcy5faGFzTWlwbWFwPSExLHRoaXMuX3NpemVJbkJ5dGVzPUEsdGhpcy5fcHJlTXVsdGlwbHlBbHBoYT1kLHRoaXMuX2ZsaXBZPWYsdGhpcy5fc2FtcGxlcj12b2lkIDA7bGV0IE49bShpKTt0aGlzLl9wb3NpdGl2ZVg9bmV3IGtsKGUsSSxSLF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLGgsYSxyLG8sZCxmLE4pLHRoaXMuX25lZ2F0aXZlWD1uZXcga2woZSxJLFIsXy5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsaCxhLHIsbyxkLGYsTiksdGhpcy5fcG9zaXRpdmVZPW5ldyBrbChlLEksUixfLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSxoLGEscixvLGQsZixOKSx0aGlzLl9uZWdhdGl2ZVk9bmV3IGtsKGUsSSxSLF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLGgsYSxyLG8sZCxmLE4pLHRoaXMuX3Bvc2l0aXZlWj1uZXcga2woZSxJLFIsXy5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osaCxhLHIsbyxkLGYsTiksdGhpcy5fbmVnYXRpdmVaPW5ldyBrbChlLEksUixfLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWixoLGEscixvLGQsZixOKSx0aGlzLnNhbXBsZXI9bSh0LnNhbXBsZXIpP3Quc2FtcGxlcjpuZXcgWkF9dmFyIExOLFd4PU8oKCk9PnthZSgpO2J0KCk7bXQoKTtXcygpO1Z0KCk7X2UoKTtfYygpO2dhKCk7QngoKTtEVCgpO0VjKCk7WUUoKTtORSgpO2JFKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocUUucHJvdG90eXBlLHtwb3NpdGl2ZVg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGl2ZVh9fSxuZWdhdGl2ZVg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWdhdGl2ZVh9fSxwb3NpdGl2ZVk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGl2ZVl9fSxuZWdhdGl2ZVk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWdhdGl2ZVl9fSxwb3NpdGl2ZVo6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGl2ZVp9fSxuZWdhdGl2ZVo6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWdhdGl2ZVp9fSxzYW1wbGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2FtcGxlcn0sc2V0OmZ1bmN0aW9uKHQpe2xldCBlPXQubWluaWZpY2F0aW9uRmlsdGVyLGk9dC5tYWduaWZpY2F0aW9uRmlsdGVyLG49ZT09PV9zLk5FQVJFU1RfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5ORUFSRVNUX01JUE1BUF9MSU5FQVJ8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX0xJTkVBUixzPXRoaXMuX2NvbnRleHQsbz10aGlzLl9waXhlbERhdGF0eXBlOyhvPT09Z2UuRkxPQVQmJiFzLnRleHR1cmVGbG9hdExpbmVhcnx8bz09PWdlLkhBTEZfRkxPQVQmJiFzLnRleHR1cmVIYWxmRmxvYXRMaW5lYXIpJiYoZT1uP19zLk5FQVJFU1RfTUlQTUFQX05FQVJFU1Q6X3MuTkVBUkVTVCxpPU5hLk5FQVJFU1QpO2xldCByPXMuX2dsLGE9dGhpcy5fdGV4dHVyZVRhcmdldDtyLmFjdGl2ZVRleHR1cmUoci5URVhUVVJFMCksci5iaW5kVGV4dHVyZShhLHRoaXMuX3RleHR1cmUpLHIudGV4UGFyYW1ldGVyaShhLHIuVEVYVFVSRV9NSU5fRklMVEVSLGUpLHIudGV4UGFyYW1ldGVyaShhLHIuVEVYVFVSRV9NQUdfRklMVEVSLGkpLHIudGV4UGFyYW1ldGVyaShhLHIuVEVYVFVSRV9XUkFQX1MsdC53cmFwUyksci50ZXhQYXJhbWV0ZXJpKGEsci5URVhUVVJFX1dSQVBfVCx0LndyYXBUKSxtKHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykmJnIudGV4UGFyYW1ldGVyaShhLHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCx0Lm1heGltdW1Bbmlzb3Ryb3B5KSxyLmJpbmRUZXh0dXJlKGEsbnVsbCksdGhpcy5fc2FtcGxlcj10fX0scGl4ZWxGb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbEZvcm1hdH19LHBpeGVsRGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbERhdGF0eXBlfX0sd2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplfX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX19LHNpemVJbkJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzTWlwbWFwP01hdGguZmxvb3IodGhpcy5fc2l6ZUluQnl0ZXMqNC8zKTp0aGlzLl9zaXplSW5CeXRlc319LHByZU11bHRpcGx5QWxwaGE6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmVNdWx0aXBseUFscGhhfX0sZmxpcFk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mbGlwWX19LF90YXJnZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZXh0dXJlVGFyZ2V0fX19KTtxRS5wcm90b3R5cGUuZ2VuZXJhdGVNaXBtYXA9ZnVuY3Rpb24odCl7aWYodD1aKHQsTG0uRE9OVF9DQVJFKSx0aGlzLl9zaXplPjEmJiFMLmlzUG93ZXJPZlR3byh0aGlzLl9zaXplKSl0aHJvdyBuZXcgWSgid2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIHRvIGNhbGwgZ2VuZXJhdGVNaXBtYXAoKS4iKTtpZighTG0udmFsaWRhdGUodCkpdGhyb3cgbmV3IFkoImhpbnQgaXMgaW52YWxpZC4iKTt0aGlzLl9oYXNNaXBtYXA9ITA7bGV0IGU9dGhpcy5fY29udGV4dC5fZ2wsaT10aGlzLl90ZXh0dXJlVGFyZ2V0O2UuaGludChlLkdFTkVSQVRFX01JUE1BUF9ISU5ULHQpLGUuYWN0aXZlVGV4dHVyZShlLlRFWFRVUkUwKSxlLmJpbmRUZXh0dXJlKGksdGhpcy5fdGV4dHVyZSksZS5nZW5lcmF0ZU1pcG1hcChpKSxlLmJpbmRUZXh0dXJlKGksbnVsbCl9O3FFLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtxRS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZXh0Ll9nbC5kZWxldGVUZXh0dXJlKHRoaXMuX3RleHR1cmUpLHRoaXMuX3Bvc2l0aXZlWD1saSh0aGlzLl9wb3NpdGl2ZVgpLHRoaXMuX25lZ2F0aXZlWD1saSh0aGlzLl9uZWdhdGl2ZVgpLHRoaXMuX3Bvc2l0aXZlWT1saSh0aGlzLl9wb3NpdGl2ZVkpLHRoaXMuX25lZ2F0aXZlWT1saSh0aGlzLl9uZWdhdGl2ZVkpLHRoaXMuX3Bvc2l0aXZlWj1saSh0aGlzLl9wb3NpdGl2ZVopLHRoaXMuX25lZ2F0aXZlWj1saSh0aGlzLl9uZWdhdGl2ZVopLGxpKHRoaXMpfTtMTj1xRX0pO3ZhciBEeCxNeD1PKCgpPT57RHg9YHVuaWZvcm0gc2FtcGxlcjJEIGltYWdlOwoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgdmVjNCByYW1wQ29sb3IgPSB0ZXh0dXJlKGltYWdlLCB2ZWMyKG1hdGVyaWFsSW5wdXQuYXNwZWN0IC8gKDIuMCAqIGN6bV9waSksIDAuNSkpOwogICAgcmFtcENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChyYW1wQ29sb3IpOwogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IHJhbXBDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IHJhbXBDb2xvci5hOwogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgVXgsUXg9TygoKT0+e1V4PWB1bmlmb3JtIHNhbXBsZXIyRCBpbWFnZTsKdW5pZm9ybSBmbG9hdCBzdHJlbmd0aDsKdW5pZm9ybSB2ZWMyIHJlcGVhdDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKCiAgICB2ZWMyIGNlbnRlclBpeGVsID0gZnJhY3QocmVwZWF0ICogc3QpOwogICAgZmxvYXQgY2VudGVyQnVtcCA9IHRleHR1cmUoaW1hZ2UsIGNlbnRlclBpeGVsKS5jaGFubmVsOwoKICAgIGZsb2F0IGltYWdlV2lkdGggPSBmbG9hdChpbWFnZURpbWVuc2lvbnMueCk7CiAgICB2ZWMyIHJpZ2h0UGl4ZWwgPSBmcmFjdChyZXBlYXQgKiAoc3QgKyB2ZWMyKDEuMCAvIGltYWdlV2lkdGgsIDAuMCkpKTsKICAgIGZsb2F0IHJpZ2h0QnVtcCA9IHRleHR1cmUoaW1hZ2UsIHJpZ2h0UGl4ZWwpLmNoYW5uZWw7CgogICAgZmxvYXQgaW1hZ2VIZWlnaHQgPSBmbG9hdChpbWFnZURpbWVuc2lvbnMueSk7CiAgICB2ZWMyIGxlZnRQaXhlbCA9IGZyYWN0KHJlcGVhdCAqIChzdCArIHZlYzIoMC4wLCAxLjAgLyBpbWFnZUhlaWdodCkpKTsKICAgIGZsb2F0IHRvcEJ1bXAgPSB0ZXh0dXJlKGltYWdlLCBsZWZ0UGl4ZWwpLmNoYW5uZWw7CgogICAgdmVjMyBub3JtYWxUYW5nZW50U3BhY2UgPSBub3JtYWxpemUodmVjMyhjZW50ZXJCdW1wIC0gcmlnaHRCdW1wLCBjZW50ZXJCdW1wIC0gdG9wQnVtcCwgY2xhbXAoMS4wIC0gc3RyZW5ndGgsIDAuMSwgMS4wKSkpOwogICAgdmVjMyBub3JtYWxFQyA9IG1hdGVyaWFsSW5wdXQudGFuZ2VudFRvRXllTWF0cml4ICogbm9ybWFsVGFuZ2VudFNwYWNlOwoKICAgIG1hdGVyaWFsLm5vcm1hbCA9IG5vcm1hbEVDOwogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IHZlYzMoMC4wMSk7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIga3gsTHg9TygoKT0+e2t4PWB1bmlmb3JtIHZlYzQgbGlnaHRDb2xvcjsKdW5pZm9ybSB2ZWM0IGRhcmtDb2xvcjsKdW5pZm9ybSB2ZWMyIHJlcGVhdDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKCiAgICAvLyBGcm9tIFN0ZWZhbiBHdXN0YXZzb24ncyBQcm9jZWR1cmFsIFRleHR1cmVzIGluIEdMU0wgaW4gT3BlbkdMIEluc2lnaHRzCiAgICBmbG9hdCBiID0gbW9kKGZsb29yKHJlcGVhdC5zICogc3QucykgKyBmbG9vcihyZXBlYXQudCAqIHN0LnQpLCAyLjApOyAgLy8gMC4wIG9yIDEuMAoKICAgIC8vIEZpbmQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNsb3Nlc3Qgc2VwYXJhdG9yIChyZWdpb24gYmV0d2VlbiB0d28gY29sb3JzKQogICAgZmxvYXQgc2NhbGVkV2lkdGggPSBmcmFjdChyZXBlYXQucyAqIHN0LnMpOwogICAgc2NhbGVkV2lkdGggPSBhYnMoc2NhbGVkV2lkdGggLSBmbG9vcihzY2FsZWRXaWR0aCArIDAuNSkpOwogICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gZnJhY3QocmVwZWF0LnQgKiBzdC50KTsKICAgIHNjYWxlZEhlaWdodCA9IGFicyhzY2FsZWRIZWlnaHQgLSBmbG9vcihzY2FsZWRIZWlnaHQgKyAwLjUpKTsKICAgIGZsb2F0IHZhbHVlID0gbWluKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwoKICAgIHZlYzQgY3VycmVudENvbG9yID0gbWl4KGxpZ2h0Q29sb3IsIGRhcmtDb2xvciwgYik7CiAgICB2ZWM0IGNvbG9yID0gY3ptX2FudGlhbGlhcyhsaWdodENvbG9yLCBkYXJrQ29sb3IsIGN1cnJlbnRDb2xvciwgdmFsdWUsIDAuMDMpOwoKICAgIGNvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChjb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gY29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBjb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIHl4LHd4PU8oKCk9Pnt5eD1gdW5pZm9ybSB2ZWM0IGxpZ2h0Q29sb3I7CnVuaWZvcm0gdmVjNCBkYXJrQ29sb3I7CnVuaWZvcm0gdmVjMiByZXBlYXQ7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgLy8gRnJvbSBTdGVmYW4gR3VzdGF2c29uJ3MgUHJvY2VkdXJhbCBUZXh0dXJlcyBpbiBHTFNMIGluIE9wZW5HTCBJbnNpZ2h0cwogICAgZmxvYXQgYiA9IHNtb290aHN0ZXAoMC4zLCAwLjMyLCBsZW5ndGgoZnJhY3QocmVwZWF0ICogbWF0ZXJpYWxJbnB1dC5zdCkgLSAwLjUpKTsgIC8vIDAuMCBvciAxLjAKCiAgICB2ZWM0IGNvbG9yID0gbWl4KGxpZ2h0Q29sb3IsIGRhcmtDb2xvciwgYik7CiAgICBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IGNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gY29sb3IuYTsKCiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciB4eCxQeD1PKCgpPT57eHg9YHVuaWZvcm0gc2FtcGxlcjJEIGhlaWdodHM7CnVuaWZvcm0gc2FtcGxlcjJEIGNvbG9yczsKCi8vIFRoaXMgbWF0ZXJpYWwgZXhwZWN0cyBoZWlnaHRzIHRvIGJlIHNvcnRlZCBmcm9tIGxvd2VzdCB0byBoaWdoZXN0LgoKZmxvYXQgZ2V0SGVpZ2h0KGludCBpZHgsIGZsb2F0IGludlRleFNpemUpCnsKICAgIHZlYzIgdXYgPSB2ZWMyKChmbG9hdChpZHgpICsgMC41KSAqIGludlRleFNpemUsIDAuNSk7CiNpZmRlZiBPRVNfdGV4dHVyZV9mbG9hdAogICAgcmV0dXJuIHRleHR1cmUoaGVpZ2h0cywgdXYpLng7CiNlbHNlCiAgICByZXR1cm4gY3ptX3VucGFja0Zsb2F0KHRleHR1cmUoaGVpZ2h0cywgdXYpKTsKI2VuZGlmCn0KCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICBmbG9hdCBoZWlnaHQgPSBtYXRlcmlhbElucHV0LmhlaWdodDsKICAgIGZsb2F0IGludlRleFNpemUgPSAxLjAgLyBmbG9hdChoZWlnaHRzRGltZW5zaW9ucy54KTsKCiAgICBmbG9hdCBtaW5IZWlnaHQgPSBnZXRIZWlnaHQoMCwgaW52VGV4U2l6ZSk7CiAgICBmbG9hdCBtYXhIZWlnaHQgPSBnZXRIZWlnaHQoaGVpZ2h0c0RpbWVuc2lvbnMueCAtIDEsIGludlRleFNpemUpOwoKICAgIC8vIGVhcmx5LW91dCB3aGVuIG91dHNpZGUgdGhlIGhlaWdodCByYW5nZQogICAgaWYgKGhlaWdodCA8IG1pbkhlaWdodCB8fCBoZWlnaHQgPiBtYXhIZWlnaHQpIHsKICAgICAgICBtYXRlcmlhbC5kaWZmdXNlID0gdmVjMygwLjApOwogICAgICAgIG1hdGVyaWFsLmFscGhhID0gMC4wOwogICAgICAgIHJldHVybiBtYXRlcmlhbDsKICAgIH0KCiAgICAvLyBCaW5hcnkgc2VhcmNoIHRvIGZpbmQgaGVpZ2h0cyBhYm92ZSBhbmQgYmVsb3cuCiAgICBpbnQgaWR4QmVsb3cgPSAwOwogICAgaW50IGlkeEFib3ZlID0gaGVpZ2h0c0RpbWVuc2lvbnMueDsKICAgIGZsb2F0IGhlaWdodEJlbG93ID0gbWluSGVpZ2h0OwogICAgZmxvYXQgaGVpZ2h0QWJvdmUgPSBtYXhIZWlnaHQ7CgogICAgLy8gd2hpbGUgbG9vcCBub3QgYWxsb3dlZCwgc28gdXNlIGZvciBsb29wIHdpdGggbWF4IGl0ZXJhdGlvbnMuCiAgICAvLyBtYXhJdGVyYXRpb25zIG9mIDE2IHN1cHBvcnRzIGEgdGV4dHVyZSBzaXplIHVwIHRvIDY1NTM2ICgyXjE2KS4KICAgIGNvbnN0IGludCBtYXhJdGVyYXRpb25zID0gMTY7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heEl0ZXJhdGlvbnM7IGkrKykgewogICAgICAgIGlmIChpZHhCZWxvdyA+PSBpZHhBYm92ZSAtIDEpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpbnQgaWR4TWlkID0gKGlkeEJlbG93ICsgaWR4QWJvdmUpIC8gMjsKICAgICAgICBmbG9hdCBoZWlnaHRUZXggPSBnZXRIZWlnaHQoaWR4TWlkLCBpbnZUZXhTaXplKTsKCiAgICAgICAgaWYgKGhlaWdodCA+IGhlaWdodFRleCkgewogICAgICAgICAgICBpZHhCZWxvdyA9IGlkeE1pZDsKICAgICAgICAgICAgaGVpZ2h0QmVsb3cgPSBoZWlnaHRUZXg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWR4QWJvdmUgPSBpZHhNaWQ7CiAgICAgICAgICAgIGhlaWdodEFib3ZlID0gaGVpZ2h0VGV4OwogICAgICAgIH0KICAgIH0KCiAgICBmbG9hdCBsZXJwZXIgPSBoZWlnaHRCZWxvdyA9PSBoZWlnaHRBYm92ZSA/IDEuMCA6IChoZWlnaHQgLSBoZWlnaHRCZWxvdykgLyAoaGVpZ2h0QWJvdmUgLSBoZWlnaHRCZWxvdyk7CiAgICB2ZWMyIGNvbG9yVXYgPSB2ZWMyKGludlRleFNpemUgKiAoZmxvYXQoaWR4QmVsb3cpICsgMC41ICsgbGVycGVyKSwgMC41KTsKICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlKGNvbG9ycywgY29sb3JVdik7CgogICAgLy8gdW5kbyBwcmV1bXVsdGlwbGllZCBhbHBoYQogICAgaWYgKGNvbG9yLmEgPiAwLjApIAogICAgewogICAgICAgIGNvbG9yLnJnYiAvPSBjb2xvci5hOwogICAgfQogICAgCiAgICBjb2xvci5yZ2IgPSBjem1fZ2FtbWFDb3JyZWN0KGNvbG9yLnJnYik7CgogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IGNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gY29sb3IuYTsKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIEp4LGp4PU8oKCk9PntKeD1gdW5pZm9ybSB2ZWM0IGNvbG9yOwp1bmlmb3JtIGZsb2F0IHNwYWNpbmc7CnVuaWZvcm0gZmxvYXQgd2lkdGg7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgZmxvYXQgZGlzdGFuY2VUb0NvbnRvdXIgPSBtb2QobWF0ZXJpYWxJbnB1dC5oZWlnaHQsIHNwYWNpbmcpOwoKI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKQogICAgZmxvYXQgZHhjID0gYWJzKGRGZHgobWF0ZXJpYWxJbnB1dC5oZWlnaHQpKTsKICAgIGZsb2F0IGR5YyA9IGFicyhkRmR5KG1hdGVyaWFsSW5wdXQuaGVpZ2h0KSk7CiAgICBmbG9hdCBkRiA9IG1heChkeGMsIGR5YykgKiBjem1fcGl4ZWxSYXRpbyAqIHdpZHRoOwogICAgZmxvYXQgYWxwaGEgPSAoZGlzdGFuY2VUb0NvbnRvdXIgPCBkRikgPyAxLjAgOiAwLjA7CiNlbHNlCiAgICAvLyBJZiBubyBkZXJpdmF0aXZlcyBhdmFpbGFibGUgKElFIDEwPyksIHVzZSBwaXhlbCByYXRpbwogICAgZmxvYXQgYWxwaGEgPSAoZGlzdGFuY2VUb0NvbnRvdXIgPCAoY3ptX3BpeGVsUmF0aW8gKiB3aWR0aCkpID8gMS4wIDogMC4wOwojZW5kaWYKCiAgICB2ZWM0IG91dENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh2ZWM0KGNvbG9yLnJnYiwgYWxwaGEgKiBjb2xvci5hKSk7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gb3V0Q29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBvdXRDb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIEh4LHZ4PU8oKCk9PntIeD1gdW5pZm9ybSBzYW1wbGVyMkQgaW1hZ2U7CnVuaWZvcm0gZmxvYXQgbWluaW11bUhlaWdodDsKdW5pZm9ybSBmbG9hdCBtYXhpbXVtSGVpZ2h0OwoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gY2xhbXAoKG1hdGVyaWFsSW5wdXQuaGVpZ2h0IC0gbWluaW11bUhlaWdodCkgLyAobWF4aW11bUhlaWdodCAtIG1pbmltdW1IZWlnaHQpLCAwLjAsIDEuMCk7CiAgICB2ZWM0IHJhbXBDb2xvciA9IHRleHR1cmUoaW1hZ2UsIHZlYzIoc2NhbGVkSGVpZ2h0LCAwLjUpKTsKICAgIHJhbXBDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QocmFtcENvbG9yKTsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSByYW1wQ29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSByYW1wQ29sb3IuYTsKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIHp4LEt4PU8oKCk9Pnt6eD1gdW5pZm9ybSB2ZWM0IGZhZGVJbkNvbG9yOwp1bmlmb3JtIHZlYzQgZmFkZU91dENvbG9yOwp1bmlmb3JtIGZsb2F0IG1heGltdW1EaXN0YW5jZTsKdW5pZm9ybSBib29sIHJlcGVhdDsKdW5pZm9ybSB2ZWMyIGZhZGVEaXJlY3Rpb247CnVuaWZvcm0gdmVjMiB0aW1lOwoKZmxvYXQgZ2V0VGltZShmbG9hdCB0LCBmbG9hdCBjb29yZCkKewogICAgZmxvYXQgc2NhbGFyID0gMS4wIC8gbWF4aW11bURpc3RhbmNlOwogICAgZmxvYXQgcSAgPSBkaXN0YW5jZSh0LCBjb29yZCkgKiBzY2FsYXI7CiAgICBpZiAocmVwZWF0KQogICAgewogICAgICAgIGZsb2F0IHIgPSBkaXN0YW5jZSh0LCBjb29yZCArIDEuMCkgKiBzY2FsYXI7CiAgICAgICAgZmxvYXQgcyA9IGRpc3RhbmNlKHQsIGNvb3JkIC0gMS4wKSAqIHNjYWxhcjsKICAgICAgICBxID0gbWluKG1pbihyLCBzKSwgcSk7CiAgICB9CiAgICByZXR1cm4gY2xhbXAocSwgMC4wLCAxLjApOwp9Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgdmVjMiBzdCA9IG1hdGVyaWFsSW5wdXQuc3Q7CiAgICBmbG9hdCBzID0gZ2V0VGltZSh0aW1lLngsIHN0LnMpICogZmFkZURpcmVjdGlvbi5zOwogICAgZmxvYXQgdCA9IGdldFRpbWUodGltZS55LCBzdC50KSAqIGZhZGVEaXJlY3Rpb24udDsKCiAgICBmbG9hdCB1ID0gbGVuZ3RoKHZlYzIocywgdCkpOwogICAgdmVjNCBjb2xvciA9IG1peChmYWRlSW5Db2xvciwgZmFkZU91dENvbG9yLCB1KTsKCiAgICBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwogICAgbWF0ZXJpYWwuZW1pc3Npb24gPSBjb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGNvbG9yLmE7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgWHgscXg9TygoKT0+e1h4PWB1bmlmb3JtIHZlYzQgY29sb3I7CnVuaWZvcm0gZmxvYXQgY2VsbEFscGhhOwp1bmlmb3JtIHZlYzIgbGluZUNvdW50Owp1bmlmb3JtIHZlYzIgbGluZVRoaWNrbmVzczsKdW5pZm9ybSB2ZWMyIGxpbmVPZmZzZXQ7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgdmVjMiBzdCA9IG1hdGVyaWFsSW5wdXQuc3Q7CgogICAgZmxvYXQgc2NhbGVkV2lkdGggPSBmcmFjdChsaW5lQ291bnQucyAqIHN0LnMgLSBsaW5lT2Zmc2V0LnMpOwogICAgc2NhbGVkV2lkdGggPSBhYnMoc2NhbGVkV2lkdGggLSBmbG9vcihzY2FsZWRXaWR0aCArIDAuNSkpOwogICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gZnJhY3QobGluZUNvdW50LnQgKiBzdC50IC0gbGluZU9mZnNldC50KTsKICAgIHNjYWxlZEhlaWdodCA9IGFicyhzY2FsZWRIZWlnaHQgLSBmbG9vcihzY2FsZWRIZWlnaHQgKyAwLjUpKTsKCiAgICBmbG9hdCB2YWx1ZTsKCiAgICAvLyBGdXp6IEZhY3RvciAtIENvbnRyb2xzIGJsdXJyaW5lc3Mgb2YgbGluZXMKI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKQogICAgY29uc3QgZmxvYXQgZnV6eiA9IDEuMjsKICAgIHZlYzIgdGhpY2tuZXNzID0gKGxpbmVUaGlja25lc3MgKiBjem1fcGl4ZWxSYXRpbykgLSAxLjA7CgogICAgLy8gRnJvbSAiM0QgRW5naW5lIERlc2lnbiBmb3IgVmlydHVhbCBHbG9iZXMiIGJ5IENvenppIGFuZCBSaW5nLCBMaXN0aW5nIDQuMTMuCiAgICB2ZWMyIGR4ID0gYWJzKGRGZHgoc3QpKTsKICAgIHZlYzIgZHkgPSBhYnMoZEZkeShzdCkpOwogICAgdmVjMiBkRiA9IHZlYzIobWF4KGR4LnMsIGR5LnMpLCBtYXgoZHgudCwgZHkudCkpICogbGluZUNvdW50OwogICAgdmFsdWUgPSBtaW4oCiAgICAgICAgc21vb3Roc3RlcChkRi5zICogdGhpY2tuZXNzLnMsIGRGLnMgKiAoZnV6eiArIHRoaWNrbmVzcy5zKSwgc2NhbGVkV2lkdGgpLAogICAgICAgIHNtb290aHN0ZXAoZEYudCAqIHRoaWNrbmVzcy50LCBkRi50ICogKGZ1enogKyB0aGlja25lc3MudCksIHNjYWxlZEhlaWdodCkpOwojZWxzZQogICAgLy8gSWYgbm8gZGVyaXZhdGl2ZXMgYXZhaWxhYmxlIChJRSAxMD8pLCByZXZlcnQgdG8gdmlldy1kZXBlbmRlbnQgZnV6egogICAgY29uc3QgZmxvYXQgZnV6eiA9IDAuMDU7CgogICAgdmVjMiByYW5nZSA9IDAuNSAtIChsaW5lVGhpY2tuZXNzICogMC4wNSk7CiAgICB2YWx1ZSA9IG1pbigKICAgICAgICAxLjAgLSBzbW9vdGhzdGVwKHJhbmdlLnMsIHJhbmdlLnMgKyBmdXp6LCBzY2FsZWRXaWR0aCksCiAgICAgICAgMS4wIC0gc21vb3Roc3RlcChyYW5nZS50LCByYW5nZS50ICsgZnV6eiwgc2NhbGVkSGVpZ2h0KSk7CiNlbmRpZgoKICAgIC8vIEVkZ2VzIHRha2VuIGZyb20gUmltTGlnaHRpbmdNYXRlcmlhbC5nbHNsCiAgICAvLyBTZWUgaHR0cDovL3d3dy5mdW5kemEuY29tL3JtYW5fc2hhZGVycy9zdXJmYWNlL2Zha2VfcmltL2Zha2VfcmltMS5odG1sCiAgICBmbG9hdCBkUmltID0gMS4wIC0gYWJzKGRvdChtYXRlcmlhbElucHV0Lm5vcm1hbEVDLCBub3JtYWxpemUobWF0ZXJpYWxJbnB1dC5wb3NpdGlvblRvRXllRUMpKSk7CiAgICBmbG9hdCBzUmltID0gc21vb3Roc3RlcCgwLjgsIDEuMCwgZFJpbSk7CiAgICB2YWx1ZSAqPSAoMS4wIC0gc1JpbSk7CgogICAgdmVjNCBoYWxmQ29sb3I7CiAgICBoYWxmQ29sb3IucmdiID0gY29sb3IucmdiICogMC41OwogICAgaGFsZkNvbG9yLmEgPSBjb2xvci5hICogKDEuMCAtICgoMS4wIC0gY2VsbEFscGhhKSAqIHZhbHVlKSk7CiAgICBoYWxmQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KGhhbGZDb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gaGFsZkNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmVtaXNzaW9uID0gaGFsZkNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gaGFsZkNvbG9yLmE7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgJHgsdFA9TygoKT0+eyR4PWB1bmlmb3JtIHNhbXBsZXIyRCBpbWFnZTsKdW5pZm9ybSBmbG9hdCBzdHJlbmd0aDsKdW5pZm9ybSB2ZWMyIHJlcGVhdDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIAogICAgdmVjNCB0ZXh0dXJlVmFsdWUgPSB0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSk7CiAgICB2ZWMzIG5vcm1hbFRhbmdlbnRTcGFjZSA9IHRleHR1cmVWYWx1ZS5jaGFubmVsczsKICAgIG5vcm1hbFRhbmdlbnRTcGFjZS54eSA9IG5vcm1hbFRhbmdlbnRTcGFjZS54eSAqIDIuMCAtIDEuMDsKICAgIG5vcm1hbFRhbmdlbnRTcGFjZS56ID0gY2xhbXAoMS4wIC0gc3RyZW5ndGgsIDAuMSwgMS4wKTsKICAgIG5vcm1hbFRhbmdlbnRTcGFjZSA9IG5vcm1hbGl6ZShub3JtYWxUYW5nZW50U3BhY2UpOwogICAgdmVjMyBub3JtYWxFQyA9IG1hdGVyaWFsSW5wdXQudGFuZ2VudFRvRXllTWF0cml4ICogbm9ybWFsVGFuZ2VudFNwYWNlOwogICAgCiAgICBtYXRlcmlhbC5ub3JtYWwgPSBub3JtYWxFQzsKICAgIAogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgZVAsaVA9TygoKT0+e2VQPWB1bmlmb3JtIHZlYzQgY29sb3I7CgpmbG9hdCBnZXRQb2ludE9uTGluZSh2ZWMyIHAwLCB2ZWMyIHAxLCBmbG9hdCB4KQp7CiAgICBmbG9hdCBzbG9wZSA9IChwMC55IC0gcDEueSkgLyAocDAueCAtIHAxLngpOwogICAgcmV0dXJuIHNsb3BlICogKHggLSBwMC54KSArIHAwLnk7Cn0KCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKCiNpZiAoX19WRVJTSU9OX18gPT0gMzAwIHx8IGRlZmluZWQoR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzKSkKICAgIGZsb2F0IGJhc2UgPSAxLjAgLSBhYnMoZndpZHRoKHN0LnMpKSAqIDEwLjAgKiBjem1fcGl4ZWxSYXRpbzsKI2Vsc2UKICAgICAvLyBJZiBubyBkZXJpdmF0aXZlcyBhdmFpbGFibGUgKElFIDEwPyksIDIuNSUgb2YgdGhlIGxpbmUgd2lsbCBiZSB0aGUgYXJyb3cgaGVhZAogICAgZmxvYXQgYmFzZSA9IDAuOTc1OwojZW5kaWYKCiAgICB2ZWMyIGNlbnRlciA9IHZlYzIoMS4wLCAwLjUpOwogICAgZmxvYXQgcHRPblVwcGVyTGluZSA9IGdldFBvaW50T25MaW5lKHZlYzIoYmFzZSwgMS4wKSwgY2VudGVyLCBzdC5zKTsKICAgIGZsb2F0IHB0T25Mb3dlckxpbmUgPSBnZXRQb2ludE9uTGluZSh2ZWMyKGJhc2UsIDAuMCksIGNlbnRlciwgc3Qucyk7CgogICAgZmxvYXQgaGFsZldpZHRoID0gMC4xNTsKICAgIGZsb2F0IHMgPSBzdGVwKDAuNSAtIGhhbGZXaWR0aCwgc3QudCk7CiAgICBzICo9IDEuMCAtIHN0ZXAoMC41ICsgaGFsZldpZHRoLCBzdC50KTsKICAgIHMgKj0gMS4wIC0gc3RlcChiYXNlLCBzdC5zKTsKCiAgICBmbG9hdCB0ID0gc3RlcChiYXNlLCBtYXRlcmlhbElucHV0LnN0LnMpOwogICAgdCAqPSAxLjAgLSBzdGVwKHB0T25VcHBlckxpbmUsIHN0LnQpOwogICAgdCAqPSBzdGVwKHB0T25Mb3dlckxpbmUsIHN0LnQpOwoKICAgIC8vIEZpbmQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNsb3Nlc3Qgc2VwYXJhdG9yIChyZWdpb24gYmV0d2VlbiB0d28gY29sb3JzKQogICAgZmxvYXQgZGlzdDsKICAgIGlmIChzdC5zIDwgYmFzZSkKICAgIHsKICAgICAgICBmbG9hdCBkMSA9IGFicyhzdC50IC0gKDAuNSAtIGhhbGZXaWR0aCkpOwogICAgICAgIGZsb2F0IGQyID0gYWJzKHN0LnQgLSAoMC41ICsgaGFsZldpZHRoKSk7CiAgICAgICAgZGlzdCA9IG1pbihkMSwgZDIpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZsb2F0IGQxID0gY3ptX2luZmluaXR5OwogICAgICAgIGlmIChzdC50IDwgMC41IC0gaGFsZldpZHRoICYmIHN0LnQgPiAwLjUgKyBoYWxmV2lkdGgpCiAgICAgICAgewogICAgICAgICAgICBkMSA9IGFicyhzdC5zIC0gYmFzZSk7CiAgICAgICAgfQogICAgICAgIGZsb2F0IGQyID0gYWJzKHN0LnQgLSBwdE9uVXBwZXJMaW5lKTsKICAgICAgICBmbG9hdCBkMyA9IGFicyhzdC50IC0gcHRPbkxvd2VyTGluZSk7CiAgICAgICAgZGlzdCA9IG1pbihtaW4oZDEsIGQyKSwgZDMpOwogICAgfQoKICAgIHZlYzQgb3V0c2lkZUNvbG9yID0gdmVjNCgwLjApOwogICAgdmVjNCBjdXJyZW50Q29sb3IgPSBtaXgob3V0c2lkZUNvbG9yLCBjb2xvciwgY2xhbXAocyArIHQsIDAuMCwgMS4wKSk7CiAgICB2ZWM0IG91dENvbG9yID0gY3ptX2FudGlhbGlhcyhvdXRzaWRlQ29sb3IsIGNvbG9yLCBjdXJyZW50Q29sb3IsIGRpc3QpOwoKICAgIG91dENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChvdXRDb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gb3V0Q29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBvdXRDb2xvci5hOwogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgblAsc1A9TygoKT0+e25QPWB1bmlmb3JtIHZlYzQgY29sb3I7CnVuaWZvcm0gdmVjNCBnYXBDb2xvcjsKdW5pZm9ybSBmbG9hdCBkYXNoTGVuZ3RoOwp1bmlmb3JtIGZsb2F0IGRhc2hQYXR0ZXJuOwppbiBmbG9hdCB2X3BvbHlsaW5lQW5nbGU7Cgpjb25zdCBmbG9hdCBtYXNrTGVuZ3RoID0gMTYuMDsKCm1hdDIgcm90YXRlKGZsb2F0IHJhZCkgewogICAgZmxvYXQgYyA9IGNvcyhyYWQpOwogICAgZmxvYXQgcyA9IHNpbihyYWQpOwogICAgcmV0dXJuIG1hdDIoCiAgICAgICAgYywgcywKICAgICAgICAtcywgYwogICAgKTsKfQoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwoKICAgIHZlYzIgcG9zID0gcm90YXRlKHZfcG9seWxpbmVBbmdsZSkgKiBnbF9GcmFnQ29vcmQueHk7CgogICAgLy8gR2V0IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGRhc2ggZnJvbSAwIHRvIDEKICAgIGZsb2F0IGRhc2hQb3NpdGlvbiA9IGZyYWN0KHBvcy54IC8gKGRhc2hMZW5ndGggKiBjem1fcGl4ZWxSYXRpbykpOwogICAgLy8gRmlndXJlIG91dCB0aGUgbWFzayBpbmRleC4KICAgIGZsb2F0IG1hc2tJbmRleCA9IGZsb29yKGRhc2hQb3NpdGlvbiAqIG1hc2tMZW5ndGgpOwogICAgLy8gVGVzdCB0aGUgYml0IG1hc2suCiAgICBmbG9hdCBtYXNrVGVzdCA9IGZsb29yKGRhc2hQYXR0ZXJuIC8gcG93KDIuMCwgbWFza0luZGV4KSk7CiAgICB2ZWM0IGZyYWdDb2xvciA9IChtb2QobWFza1Rlc3QsIDIuMCkgPCAxLjApID8gZ2FwQ29sb3IgOiBjb2xvcjsKICAgIGlmIChmcmFnQ29sb3IuYSA8IDAuMDA1KSB7ICAgLy8gbWF0Y2hlcyAwLzI1NSBhbmQgMS8yNTUKICAgICAgICBkaXNjYXJkOwogICAgfQoKICAgIGZyYWdDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoZnJhZ0NvbG9yKTsKICAgIG1hdGVyaWFsLmVtaXNzaW9uID0gZnJhZ0NvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gZnJhZ0NvbG9yLmE7CiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciBvUCxyUD1PKCgpPT57b1A9YHVuaWZvcm0gdmVjNCBjb2xvcjsKdW5pZm9ybSBmbG9hdCBnbG93UG93ZXI7CnVuaWZvcm0gZmxvYXQgdGFwZXJQb3dlcjsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKICAgIGZsb2F0IGdsb3cgPSBnbG93UG93ZXIgLyBhYnMoc3QudCAtIDAuNSkgLSAoZ2xvd1Bvd2VyIC8gMC41KTsKCiAgICBpZiAodGFwZXJQb3dlciA8PSAwLjk5OTk5KSB7CiAgICAgICAgZ2xvdyAqPSBtaW4oMS4wLCB0YXBlclBvd2VyIC8gKDAuNSAtIHN0LnMgKiAwLjUpIC0gKHRhcGVyUG93ZXIgLyAwLjUpKTsKICAgIH0KCiAgICB2ZWM0IGZyYWdDb2xvcjsKICAgIGZyYWdDb2xvci5yZ2IgPSBtYXgodmVjMyhnbG93IC0gMS4wICsgY29sb3IucmdiKSwgY29sb3IucmdiKTsKICAgIGZyYWdDb2xvci5hID0gY2xhbXAoMC4wLCAxLjAsIGdsb3cpICogY29sb3IuYTsKICAgIGZyYWdDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoZnJhZ0NvbG9yKTsKCiAgICBtYXRlcmlhbC5lbWlzc2lvbiA9IGZyYWdDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGZyYWdDb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIGFQLEFQPU8oKCk9PnthUD1gdW5pZm9ybSB2ZWM0IGNvbG9yOwp1bmlmb3JtIHZlYzQgb3V0bGluZUNvbG9yOwp1bmlmb3JtIGZsb2F0IG91dGxpbmVXaWR0aDsKCmluIGZsb2F0IHZfd2lkdGg7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgdmVjMiBzdCA9IG1hdGVyaWFsSW5wdXQuc3Q7CiAgICBmbG9hdCBoYWxmSW50ZXJpb3JXaWR0aCA9ICAwLjUgKiAodl93aWR0aCAtIG91dGxpbmVXaWR0aCkgLyB2X3dpZHRoOwogICAgZmxvYXQgYiA9IHN0ZXAoMC41IC0gaGFsZkludGVyaW9yV2lkdGgsIHN0LnQpOwogICAgYiAqPSAxLjAgLSBzdGVwKDAuNSArIGhhbGZJbnRlcmlvcldpZHRoLCBzdC50KTsKCiAgICAvLyBGaW5kIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBjbG9zZXN0IHNlcGFyYXRvciAocmVnaW9uIGJldHdlZW4gdHdvIGNvbG9ycykKICAgIGZsb2F0IGQxID0gYWJzKHN0LnQgLSAoMC41IC0gaGFsZkludGVyaW9yV2lkdGgpKTsKICAgIGZsb2F0IGQyID0gYWJzKHN0LnQgLSAoMC41ICsgaGFsZkludGVyaW9yV2lkdGgpKTsKICAgIGZsb2F0IGRpc3QgPSBtaW4oZDEsIGQyKTsKCiAgICB2ZWM0IGN1cnJlbnRDb2xvciA9IG1peChvdXRsaW5lQ29sb3IsIGNvbG9yLCBiKTsKICAgIHZlYzQgb3V0Q29sb3IgPSBjem1fYW50aWFsaWFzKG91dGxpbmVDb2xvciwgY29sb3IsIGN1cnJlbnRDb2xvciwgZGlzdCk7CiAgICBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3Qob3V0Q29sb3IpOwoKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBvdXRDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IG91dENvbG9yLmE7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgaFAsY1A9TygoKT0+e2hQPWB1bmlmb3JtIHZlYzQgY29sb3I7CnVuaWZvcm0gdmVjNCByaW1Db2xvcjsKdW5pZm9ybSBmbG9hdCB3aWR0aDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICAvLyBTZWUgaHR0cDovL3d3dy5mdW5kemEuY29tL3JtYW5fc2hhZGVycy9zdXJmYWNlL2Zha2VfcmltL2Zha2VfcmltMS5odG1sCiAgICBmbG9hdCBkID0gMS4wIC0gZG90KG1hdGVyaWFsSW5wdXQubm9ybWFsRUMsIG5vcm1hbGl6ZShtYXRlcmlhbElucHV0LnBvc2l0aW9uVG9FeWVFQykpOwogICAgZmxvYXQgcyA9IHNtb290aHN0ZXAoMS4wIC0gd2lkdGgsIDEuMCwgZCk7CgogICAgdmVjNCBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwogICAgdmVjNCBvdXRSaW1Db2xvciA9IGN6bV9nYW1tYUNvcnJlY3QocmltQ29sb3IpOwoKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBvdXRDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5lbWlzc2lvbiA9IG91dFJpbUNvbG9yLnJnYiAqIHM7CiAgICBtYXRlcmlhbC5hbHBoYSA9IG1peChvdXRDb2xvci5hLCBvdXRSaW1Db2xvci5hLCBzKTsKCiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciBsUCxkUD1PKCgpPT57bFA9YHVuaWZvcm0gc2FtcGxlcjJEIGltYWdlOwoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgdmVjNCByYW1wQ29sb3IgPSB0ZXh0dXJlKGltYWdlLCB2ZWMyKG1hdGVyaWFsSW5wdXQuc2xvcGUgLyAoY3ptX3BpIC8gMi4wKSwgMC41KSk7CiAgICByYW1wQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHJhbXBDb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gcmFtcENvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gcmFtcENvbG9yLmE7CiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciBtUCxmUD1PKCgpPT57bVA9YHVuaWZvcm0gdmVjNCBldmVuQ29sb3I7CnVuaWZvcm0gdmVjNCBvZGRDb2xvcjsKdW5pZm9ybSBmbG9hdCBvZmZzZXQ7CnVuaWZvcm0gZmxvYXQgcmVwZWF0Owp1bmlmb3JtIGJvb2wgaG9yaXpvbnRhbDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICAvLyBCYXNlZCBvbiB0aGUgU3RyaXBlcyBGcmFnbWVudCBTaGFkZXIgaW4gdGhlIE9yYW5nZSBCb29rICgxMS4xLjIpCiAgICBmbG9hdCBjb29yZCA9IG1peChtYXRlcmlhbElucHV0LnN0LnMsIG1hdGVyaWFsSW5wdXQuc3QudCwgZmxvYXQoaG9yaXpvbnRhbCkpOwogICAgZmxvYXQgdmFsdWUgPSBmcmFjdCgoY29vcmQgLSBvZmZzZXQpICogKHJlcGVhdCAqIDAuNSkpOwogICAgZmxvYXQgZGlzdCA9IG1pbih2YWx1ZSwgbWluKGFicyh2YWx1ZSAtIDAuNSksIDEuMCAtIHZhbHVlKSk7CgogICAgdmVjNCBjdXJyZW50Q29sb3IgPSBtaXgoZXZlbkNvbG9yLCBvZGRDb2xvciwgc3RlcCgwLjUsIHZhbHVlKSk7CiAgICB2ZWM0IGNvbG9yID0gY3ptX2FudGlhbGlhcyhldmVuQ29sb3IsIG9kZENvbG9yLCBjdXJyZW50Q29sb3IsIGRpc3QpOwogICAgY29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KGNvbG9yKTsKCiAgICBtYXRlcmlhbC5kaWZmdXNlID0gY29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBjb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIEVQLF9QPU8oKCk9PntFUD1gLy8gVGhhbmtzIGZvciB0aGUgY29udHJpYnV0aW9uIEpvbmFzCi8vIGh0dHA6Ly8yOWEuY2gvMjAxMi83LzE5L3dlYmdsLXRlcnJhaW4tcmVuZGVyaW5nLXdhdGVyLWZvZwoKdW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7CnVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDsKdW5pZm9ybSB2ZWM0IGJhc2VXYXRlckNvbG9yOwp1bmlmb3JtIHZlYzQgYmxlbmRDb2xvcjsKdW5pZm9ybSBmbG9hdCBmcmVxdWVuY3k7CnVuaWZvcm0gZmxvYXQgYW5pbWF0aW9uU3BlZWQ7CnVuaWZvcm0gZmxvYXQgYW1wbGl0dWRlOwp1bmlmb3JtIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5Owp1bmlmb3JtIGZsb2F0IGZhZGVGYWN0b3I7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgZmxvYXQgdGltZSA9IGN6bV9mcmFtZU51bWJlciAqIGFuaW1hdGlvblNwZWVkOwoKICAgIC8vIGZhZGUgaXMgYSBmdW5jdGlvbiBvZiB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgZnJhZ21lbnQgYW5kIHRoZSBmcmVxdWVuY3kgb2YgdGhlIHdhdmVzCiAgICBmbG9hdCBmYWRlID0gbWF4KDEuMCwgKGxlbmd0aChtYXRlcmlhbElucHV0LnBvc2l0aW9uVG9FeWVFQykgLyAxMDAwMDAwMDAwMC4wKSAqIGZyZXF1ZW5jeSAqIGZhZGVGYWN0b3IpOwoKICAgIGZsb2F0IHNwZWN1bGFyTWFwVmFsdWUgPSB0ZXh0dXJlKHNwZWN1bGFyTWFwLCBtYXRlcmlhbElucHV0LnN0KS5yOwoKICAgIC8vIG5vdGU6IG5vdCB1c2luZyBkaXJlY3Rpb25hbCBtb3Rpb24gYXQgdGhpcyB0aW1lLCBqdXN0IHNldCB0aGUgYW5nbGUgdG8gMC4wOwogICAgdmVjNCBub2lzZSA9IGN6bV9nZXRXYXRlck5vaXNlKG5vcm1hbE1hcCwgbWF0ZXJpYWxJbnB1dC5zdCAqIGZyZXF1ZW5jeSwgdGltZSwgMC4wKTsKICAgIHZlYzMgbm9ybWFsVGFuZ2VudFNwYWNlID0gbm9pc2UueHl6ICogdmVjMygxLjAsIDEuMCwgKDEuMCAvIGFtcGxpdHVkZSkpOwoKICAgIC8vIGZhZGUgb3V0IHRoZSBub3JtYWwgcGVydHVyYmF0aW9uIGFzIHdlIG1vdmUgZnVydGhlciBmcm9tIHRoZSB3YXRlciBzdXJmYWNlCiAgICBub3JtYWxUYW5nZW50U3BhY2UueHkgLz0gZmFkZTsKCiAgICAvLyBhdHRlbXB0IHRvIGZhZGUgb3V0IHRoZSBub3JtYWwgcGVydHVyYmF0aW9uIGFzIHdlIGFwcHJvYWNoIG5vbiB3YXRlciBhcmVhcyAobG93IHNwZWN1bGFyIG1hcCB2YWx1ZSkKICAgIG5vcm1hbFRhbmdlbnRTcGFjZSA9IG1peCh2ZWMzKDAuMCwgMC4wLCA1MC4wKSwgbm9ybWFsVGFuZ2VudFNwYWNlLCBzcGVjdWxhck1hcFZhbHVlKTsKCiAgICBub3JtYWxUYW5nZW50U3BhY2UgPSBub3JtYWxpemUobm9ybWFsVGFuZ2VudFNwYWNlKTsKCiAgICAvLyBnZXQgcmF0aW9zIGZvciBhbGlnbm1lbnQgb2YgdGhlIG5ldyBub3JtYWwgdmVjdG9yIHdpdGggYSB2ZWN0b3IgcGVycGVuZGljdWxhciB0byB0aGUgdGFuZ2VudCBwbGFuZQogICAgZmxvYXQgdHNQZXJ0dXJiYXRpb25SYXRpbyA9IGNsYW1wKGRvdChub3JtYWxUYW5nZW50U3BhY2UsIHZlYzMoMC4wLCAwLjAsIDEuMCkpLCAwLjAsIDEuMCk7CgogICAgLy8gZmFkZSBvdXQgd2F0ZXIgZWZmZWN0IGFzIHNwZWN1bGFyIG1hcCB2YWx1ZSBkZWNyZWFzZXMKICAgIG1hdGVyaWFsLmFscGhhID0gbWl4KGJsZW5kQ29sb3IuYSwgYmFzZVdhdGVyQ29sb3IuYSwgc3BlY3VsYXJNYXBWYWx1ZSkgKiBzcGVjdWxhck1hcFZhbHVlOwoKICAgIC8vIGJhc2UgY29sb3IgaXMgYSBibGVuZCBvZiB0aGUgd2F0ZXIgYW5kIG5vbi13YXRlciBjb2xvciBiYXNlZCBvbiB0aGUgdmFsdWUgZnJvbSB0aGUgc3BlY3VsYXIgbWFwCiAgICAvLyBtYXkgbmVlZCBhIHVuaWZvcm0gYmxlbmQgZmFjdG9yIHRvIGJldHRlciBjb250cm9sIHRoaXMKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBtaXgoYmxlbmRDb2xvci5yZ2IsIGJhc2VXYXRlckNvbG9yLnJnYiwgc3BlY3VsYXJNYXBWYWx1ZSk7CgogICAgLy8gZGlmZnVzZSBoaWdobGlnaHRzIGFyZSBiYXNlZCBvbiBob3cgcGVydHVyYmVkIHRoZSBub3JtYWwgaXMKICAgIG1hdGVyaWFsLmRpZmZ1c2UgKz0gKDAuMSAqIHRzUGVydHVyYmF0aW9uUmF0aW8pOwoKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlOwoKICAgIG1hdGVyaWFsLm5vcm1hbCA9IG5vcm1hbGl6ZShtYXRlcmlhbElucHV0LnRhbmdlbnRUb0V5ZU1hdHJpeCAqIG5vcm1hbFRhbmdlbnRTcGFjZSk7CgogICAgbWF0ZXJpYWwuc3BlY3VsYXIgPSBzcGVjdWxhckludGVuc2l0eTsKICAgIG1hdGVyaWFsLnNoaW5pbmVzcyA9IDEwLjA7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTtmdW5jdGlvbiBRdCh0KXt0aGlzLnR5cGU9dm9pZCAwLHRoaXMuc2hhZGVyU291cmNlPXZvaWQgMCx0aGlzLm1hdGVyaWFscz12b2lkIDAsdGhpcy51bmlmb3Jtcz12b2lkIDAsdGhpcy5fdW5pZm9ybXM9dm9pZCAwLHRoaXMudHJhbnNsdWNlbnQ9dm9pZCAwLHRoaXMuX21pbmlmaWNhdGlvbkZpbHRlcj1aKHQubWluaWZpY2F0aW9uRmlsdGVyLF9zLkxJTkVBUiksdGhpcy5fbWFnbmlmaWNhdGlvbkZpbHRlcj1aKHQubWFnbmlmaWNhdGlvbkZpbHRlcixOYS5MSU5FQVIpLHRoaXMuX3N0cmljdD12b2lkIDAsdGhpcy5fdGVtcGxhdGU9dm9pZCAwLHRoaXMuX2NvdW50PXZvaWQgMCx0aGlzLl90ZXh0dXJlUGF0aHM9e30sdGhpcy5fbG9hZGVkSW1hZ2VzPVtdLHRoaXMuX2xvYWRlZEN1YmVNYXBzPVtdLHRoaXMuX3RleHR1cmVzPXt9LHRoaXMuX3VwZGF0ZUZ1bmN0aW9ucz1bXSx0aGlzLl9kZWZhdWx0VGV4dHVyZT12b2lkIDAsVW50KHQsdGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7dHlwZTp7dmFsdWU6dGhpcy50eXBlLHdyaXRhYmxlOiExfX0pLG0oUXQuX3VuaWZvcm1MaXN0W3RoaXMudHlwZV0pfHwoUXQuX3VuaWZvcm1MaXN0W3RoaXMudHlwZV09T2JqZWN0LmtleXModGhpcy5fdW5pZm9ybXMpKX1mdW5jdGlvbiBVbnQodCxlKXt0PVoodCxaLkVNUFRZX09CSkVDVCksZS5fc3RyaWN0PVoodC5zdHJpY3QsITEpLGUuX2NvdW50PVoodC5jb3VudCwwKSxlLl90ZW1wbGF0ZT1xcyhaKHQuZmFicmljLFouRU1QVFlfT0JKRUNUKSksZS5fdGVtcGxhdGUudW5pZm9ybXM9cXMoWihlLl90ZW1wbGF0ZS51bmlmb3JtcyxaLkVNUFRZX09CSkVDVCkpLGUuX3RlbXBsYXRlLm1hdGVyaWFscz1xcyhaKGUuX3RlbXBsYXRlLm1hdGVyaWFscyxaLkVNUFRZX09CSkVDVCkpLGUudHlwZT1tKGUuX3RlbXBsYXRlLnR5cGUpP2UuX3RlbXBsYXRlLnR5cGU6R3MoKSxlLnNoYWRlclNvdXJjZT0iIixlLm1hdGVyaWFscz17fSxlLnVuaWZvcm1zPXt9LGUuX3VuaWZvcm1zPXt9LGUuX3RyYW5zbHVjZW50RnVuY3Rpb25zPVtdO2xldCBpLG49UXQuX21hdGVyaWFsQ2FjaGUuZ2V0TWF0ZXJpYWwoZS50eXBlKTtpZihtKG4pKXtsZXQgbz1xcyhuLmZhYnJpYywhMCk7ZS5fdGVtcGxhdGU9ZXMoZS5fdGVtcGxhdGUsbywhMCksaT1uLnRyYW5zbHVjZW50fXludChlKSxtKG4pfHxRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChlLnR5cGUsZSkseG50KGUpLEhudChlKSx6bnQoZSk7bGV0IHM9ZS5fdHJhbnNsdWNlbnRGdW5jdGlvbnMubGVuZ3RoPT09MD8hMDp2b2lkIDA7aWYoaT1aKGkscyksaT1aKHQudHJhbnNsdWNlbnQsaSksbShpKSlpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7bGV0IG89ZnVuY3Rpb24oKXtyZXR1cm4gaShlKX07ZS5fdHJhbnNsdWNlbnRGdW5jdGlvbnMucHVzaChvKX1lbHNlIGUuX3RyYW5zbHVjZW50RnVuY3Rpb25zLnB1c2goaSl9ZnVuY3Rpb24geU4odCxlLGksbil7aWYobSh0KSl7Zm9yKGxldCBzIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShzKSl7bGV0IG89ZS5pbmRleE9mKHMpIT09LTE7KG4mJiFvfHwhbiYmbykmJmkocyxlKX19fWZ1bmN0aW9uIFJQKHQsZSl7bGV0IGk9YGZhYnJpYzogcHJvcGVydHkgbmFtZSAnJHt0fScgaXMgbm90IHZhbGlkLiBJdCBzaG91bGQgYmUgYDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHM9YCcke2Vbbl19J2A7aSs9bj09PWUubGVuZ3RoLTE/YG9yICR7c30uYDpgJHtzfSwgYH10aHJvdyBuZXcgWShpKX1mdW5jdGlvbiBRbnQodCxlKXtsZXQgaT1gZmFicmljOiB1bmlmb3JtcyBhbmQgbWF0ZXJpYWxzIGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBwcm9wZXJ0eSAnJHt0fSdgO3Rocm93IG5ldyBZKGkpfWZ1bmN0aW9uIHludCh0KXtsZXQgZT10Ll90ZW1wbGF0ZSxpPWUudW5pZm9ybXMsbj1lLm1hdGVyaWFscyxzPWUuY29tcG9uZW50cztpZihtKHMpJiZtKGUuc291cmNlKSl0aHJvdyBuZXcgWSgiZmFicmljOiBjYW5ub3QgaGF2ZSBzb3VyY2UgYW5kIGNvbXBvbmVudHMgaW4gdGhlIHNhbWUgdGVtcGxhdGUuIik7eU4oZSxrbnQsUlAsITApLHlOKHMsTG50LFJQLCEwKTtsZXQgbz1bXTtmb3IobGV0IHIgaW4gbiluLmhhc093blByb3BlcnR5KHIpJiZvLnB1c2gocik7eU4oaSxvLFFudCwhMSl9ZnVuY3Rpb24gd250KHQsZSl7bGV0IGk9ZS5fdGVtcGxhdGUubWF0ZXJpYWxzO2ZvcihsZXQgbiBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkobikmJnQuaW5kZXhPZihuKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB4bnQodCl7bGV0IGU9dC5fdGVtcGxhdGUuY29tcG9uZW50cyxpPXQuX3RlbXBsYXRlLnNvdXJjZTtpZihtKGkpKXQuc2hhZGVyU291cmNlKz1gJHtpfQpgO2Vsc2V7aWYodC5zaGFkZXJTb3VyY2UrPWBjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKYCx0LnNoYWRlclNvdXJjZSs9YGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CmAsbShlKSl7bGV0IG49T2JqZWN0LmtleXModC5fdGVtcGxhdGUubWF0ZXJpYWxzKS5sZW5ndGg+MDtmb3IobGV0IHMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHMpKWlmKHM9PT0iZGlmZnVzZSJ8fHM9PT0iZW1pc3Npb24iKXtsZXQgcj1uJiZ3bnQoZVtzXSx0KT9lW3NdOmBjem1fZ2FtbWFDb3JyZWN0KCR7ZVtzXX0pYDt0LnNoYWRlclNvdXJjZSs9YG1hdGVyaWFsLiR7c30gPSAke3J9OyAKYH1lbHNlIHM9PT0iYWxwaGEiP3Quc2hhZGVyU291cmNlKz1gbWF0ZXJpYWwuYWxwaGEgPSAke2UuYWxwaGF9OyAKYDp0LnNoYWRlclNvdXJjZSs9YG1hdGVyaWFsLiR7c30gPSAke2Vbc119OwpgfXQuc2hhZGVyU291cmNlKz1gcmV0dXJuIG1hdGVyaWFsOwp9CmB9fWZ1bmN0aW9uIEpudCh0KXtsZXQgZTtyZXR1cm4gZnVuY3Rpb24oaSxuKXtsZXQgcz1pLnVuaWZvcm1zLG89c1t0XSxyPWUhPT1vLGE9IW0obyl8fG89PT1RdC5EZWZhdWx0SW1hZ2VJZDtlPW87bGV0IGg9aS5fdGV4dHVyZXNbdF0sQSxkO2lmKG8gaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KXtpZihvLnJlYWR5U3RhdGU+PTIpe2lmKHImJm0oaCkmJihoIT09bi5kZWZhdWx0VGV4dHVyZSYmaC5kZXN0cm95KCksaD12b2lkIDApLCFtKGgpfHxoPT09bi5kZWZhdWx0VGV4dHVyZSl7bGV0IEU9bmV3IFpBKHttaW5pZmljYXRpb25GaWx0ZXI6aS5fbWluaWZpY2F0aW9uRmlsdGVyLG1hZ25pZmljYXRpb25GaWx0ZXI6aS5fbWFnbmlmaWNhdGlvbkZpbHRlcn0pO2g9bmV3IEZhKHtjb250ZXh0Om4sc291cmNlOm8sc2FtcGxlcjpFfSksaS5fdGV4dHVyZXNbdF09aDtyZXR1cm59aC5jb3B5RnJvbSh7c291cmNlOm99KX1lbHNlIG0oaCl8fChpLl90ZXh0dXJlc1t0XT1uLmRlZmF1bHRUZXh0dXJlKTtyZXR1cm59aWYobyBpbnN0YW5jZW9mIEZhJiZvIT09aCl7aS5fdGV4dHVyZVBhdGhzW3RdPXZvaWQgMDtsZXQgRT1pLl90ZXh0dXJlc1t0XTttKEUpJiZFIT09aS5fZGVmYXVsdFRleHR1cmUmJkUuZGVzdHJveSgpLGkuX3RleHR1cmVzW3RdPW8sQT1gJHt0fURpbWVuc2lvbnNgLHMuaGFzT3duUHJvcGVydHkoQSkmJihkPXNbQV0sZC54PW8uX3dpZHRoLGQueT1vLl9oZWlnaHQpO3JldHVybn1pZihyJiZtKGgpJiZhJiYoaCE9PWkuX2RlZmF1bHRUZXh0dXJlJiZoLmRlc3Ryb3koKSxoPXZvaWQgMCksbShoKXx8KGkuX3RleHR1cmVQYXRoc1t0XT12b2lkIDAsaD1pLl90ZXh0dXJlc1t0XT1pLl9kZWZhdWx0VGV4dHVyZSxBPWAke3R9RGltZW5zaW9uc2Ascy5oYXNPd25Qcm9wZXJ0eShBKSYmKGQ9c1tBXSxkLng9aC5fd2lkdGgsZC55PWguX2hlaWdodCkpLGEpcmV0dXJuO2xldCBmPW8gaW5zdGFuY2VvZiB0bjtpZighbShpLl90ZXh0dXJlUGF0aHNbdF0pfHxmJiZvLnVybCE9PWkuX3RleHR1cmVQYXRoc1t0XS51cmx8fCFmJiZvIT09aS5fdGV4dHVyZVBhdGhzW3RdKXtpZih0eXBlb2Ygbz09InN0cmluZyJ8fGYpe2xldCBFPWY/bzp0bi5jcmVhdGVJZk5lZWRlZChvKSxfO1BudC50ZXN0KEUudXJsKT9fPVZ4KEUudXJsKTpfPUUuZmV0Y2hJbWFnZSgpLFByb21pc2UucmVzb2x2ZShfKS50aGVuKGZ1bmN0aW9uKFIpe2kuX2xvYWRlZEltYWdlcy5wdXNoKHtpZDp0LGltYWdlOlJ9KX0pLmNhdGNoKGZ1bmN0aW9uKCl7bShoKSYmaCE9PWkuX2RlZmF1bHRUZXh0dXJlJiZoLmRlc3Ryb3koKSxpLl90ZXh0dXJlc1t0XT1pLl9kZWZhdWx0VGV4dHVyZX0pfWVsc2UobyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHxvIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCkmJmkuX2xvYWRlZEltYWdlcy5wdXNoKHtpZDp0LGltYWdlOm99KTtpLl90ZXh0dXJlUGF0aHNbdF09b319fWZ1bmN0aW9uIGpudCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtsZXQgbj1lLnVuaWZvcm1zW3RdO2lmKG4gaW5zdGFuY2VvZiBMTil7bGV0IG89ZS5fdGV4dHVyZXNbdF07byE9PWUuX2RlZmF1bHRUZXh0dXJlJiZvLmRlc3Ryb3koKSxlLl90ZXh0dXJlUGF0aHNbdF09dm9pZCAwLGUuX3RleHR1cmVzW3RdPW47cmV0dXJufWlmKG0oZS5fdGV4dHVyZXNbdF0pfHwoZS5fdGV4dHVyZVBhdGhzW3RdPXZvaWQgMCxlLl90ZXh0dXJlc1t0XT1pLmRlZmF1bHRDdWJlTWFwKSxuPT09UXQuRGVmYXVsdEN1YmVNYXBJZClyZXR1cm47bGV0IHM9bi5wb3NpdGl2ZVgrbi5uZWdhdGl2ZVgrbi5wb3NpdGl2ZVkrbi5uZWdhdGl2ZVkrbi5wb3NpdGl2ZVorbi5uZWdhdGl2ZVo7aWYocyE9PWUuX3RleHR1cmVQYXRoc1t0XSl7bGV0IG89W3RuLmNyZWF0ZUlmTmVlZGVkKG4ucG9zaXRpdmVYKS5mZXRjaEltYWdlKCksdG4uY3JlYXRlSWZOZWVkZWQobi5uZWdhdGl2ZVgpLmZldGNoSW1hZ2UoKSx0bi5jcmVhdGVJZk5lZWRlZChuLnBvc2l0aXZlWSkuZmV0Y2hJbWFnZSgpLHRuLmNyZWF0ZUlmTmVlZGVkKG4ubmVnYXRpdmVZKS5mZXRjaEltYWdlKCksdG4uY3JlYXRlSWZOZWVkZWQobi5wb3NpdGl2ZVopLmZldGNoSW1hZ2UoKSx0bi5jcmVhdGVJZk5lZWRlZChuLm5lZ2F0aXZlWikuZmV0Y2hJbWFnZSgpXTtQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKHIpe2UuX2xvYWRlZEN1YmVNYXBzLnB1c2goe2lkOnQsaW1hZ2VzOnJ9KX0pLGUuX3RleHR1cmVQYXRoc1t0XT1zfX19ZnVuY3Rpb24gSG50KHQpe2xldCBlPXQuX3RlbXBsYXRlLnVuaWZvcm1zO2ZvcihsZXQgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJklQKHQsaSl9ZnVuY3Rpb24gSVAodCxlKXtsZXQgaT10Ll9zdHJpY3Qsbj10Ll90ZW1wbGF0ZS51bmlmb3JtcyxzPW5bZV0sbz12bnQocyk7aWYoIW0obykpdGhyb3cgbmV3IFkoYGZhYnJpYzogdW5pZm9ybSAnJHtlfScgaGFzIGludmFsaWQgdHlwZS5gKTtsZXQgcjtpZihvPT09ImNoYW5uZWxzIil7aWYocj0kRSh0LGUscywhMSkscj09PTAmJmkpdGhyb3cgbmV3IFkoYHN0cmljdDogc2hhZGVyIHNvdXJjZSBkb2VzIG5vdCB1c2UgY2hhbm5lbHMgJyR7ZX0nLmApfWVsc2V7aWYobz09PSJzYW1wbGVyMkQiKXtsZXQgQT1gJHtlfURpbWVuc2lvbnNgO0tudCh0LEEpPjAmJihuW0FdPXt0eXBlOiJpdmVjMyIseDoxLHk6MX0sSVAodCxBKSl9aWYoIW5ldyBSZWdFeHAoYHVuaWZvcm1cXHMrJHtvfVxccyske2V9XFxzKjtgKS50ZXN0KHQuc2hhZGVyU291cmNlKSl7bGV0IEE9YHVuaWZvcm0gJHtvfSAke2V9O2A7dC5zaGFkZXJTb3VyY2U9QSt0LnNoYWRlclNvdXJjZX1sZXQgaD1gJHtlfV8ke3QuX2NvdW50Kyt9YDtpZihyPSRFKHQsZSxoKSxyPT09MSYmaSl0aHJvdyBuZXcgWShgc3RyaWN0OiBzaGFkZXIgc291cmNlIGRvZXMgbm90IHVzZSB1bmlmb3JtICcke2V9Jy5gKTtpZih0LnVuaWZvcm1zW2VdPXMsbz09PSJzYW1wbGVyMkQiKXQuX3VuaWZvcm1zW2hdPWZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVzW2VdfSx0Ll91cGRhdGVGdW5jdGlvbnMucHVzaChKbnQoZSkpO2Vsc2UgaWYobz09PSJzYW1wbGVyQ3ViZSIpdC5fdW5pZm9ybXNbaF09ZnVuY3Rpb24oKXtyZXR1cm4gdC5fdGV4dHVyZXNbZV19LHQuX3VwZGF0ZUZ1bmN0aW9ucy5wdXNoKGpudChlKSk7ZWxzZSBpZihvLmluZGV4T2YoIm1hdCIpIT09LTEpe2xldCBBPW5ldyBaUFtvXTt0Ll91bmlmb3Jtc1toXT1mdW5jdGlvbigpe3JldHVybiBaUFtvXS5mcm9tQ29sdW1uTWFqb3JBcnJheSh0LnVuaWZvcm1zW2VdLEEpfX1lbHNlIHQuX3VuaWZvcm1zW2hdPWZ1bmN0aW9uKCl7cmV0dXJuIHQudW5pZm9ybXNbZV19fX1mdW5jdGlvbiB2bnQodCl7bGV0IGU9dC50eXBlO2lmKCFtKGUpKXtsZXQgaT10eXBlb2YgdDtpZihpPT09Im51bWJlciIpZT0iZmxvYXQiO2Vsc2UgaWYoaT09PSJib29sZWFuIillPSJib29sIjtlbHNlIGlmKGk9PT0ic3RyaW5nInx8dCBpbnN0YW5jZW9mIHRufHx0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KS9eKFtyZ2JhXSl7MSw0fSQvaS50ZXN0KHQpP2U9ImNoYW5uZWxzIjp0PT09UXQuRGVmYXVsdEN1YmVNYXBJZD9lPSJzYW1wbGVyQ3ViZSI6ZT0ic2FtcGxlcjJEIjtlbHNlIGlmKGk9PT0ib2JqZWN0IilpZihBcnJheS5pc0FycmF5KHQpKSh0Lmxlbmd0aD09PTR8fHQubGVuZ3RoPT09OXx8dC5sZW5ndGg9PT0xNikmJihlPWBtYXQke01hdGguc3FydCh0Lmxlbmd0aCl9YCk7ZWxzZXtsZXQgbj0wO2ZvcihsZXQgcyBpbiB0KXQuaGFzT3duUHJvcGVydHkocykmJihuKz0xKTtuPj0yJiZuPD00P2U9YHZlYyR7bn1gOm49PT02JiYoZT0ic2FtcGxlckN1YmUiKX19cmV0dXJuIGV9ZnVuY3Rpb24gem50KHQpe2xldCBlPXQuX3N0cmljdCxpPXQuX3RlbXBsYXRlLm1hdGVyaWFscztmb3IobGV0IG4gaW4gaSlpZihpLmhhc093blByb3BlcnR5KG4pKXtsZXQgcz1uZXcgUXQoe3N0cmljdDplLGZhYnJpYzppW25dLGNvdW50OnQuX2NvdW50fSk7dC5fY291bnQ9cy5fY291bnQsdC5fdW5pZm9ybXM9ZXModC5fdW5pZm9ybXMscy5fdW5pZm9ybXMsITApLHQubWF0ZXJpYWxzW25dPXMsdC5fdHJhbnNsdWNlbnRGdW5jdGlvbnM9dC5fdHJhbnNsdWNlbnRGdW5jdGlvbnMuY29uY2F0KHMuX3RyYW5zbHVjZW50RnVuY3Rpb25zKTtsZXQgbz0iY3ptX2dldE1hdGVyaWFsIixyPWAke299XyR7dC5fY291bnQrK31gOyRFKHMsbyxyKSx0LnNoYWRlclNvdXJjZT1zLnNoYWRlclNvdXJjZSt0LnNoYWRlclNvdXJjZTtsZXQgYT1gJHtyfShtYXRlcmlhbElucHV0KWA7aWYoJEUodCxuLGEpPT09MCYmZSl0aHJvdyBuZXcgWShgc3RyaWN0OiBzaGFkZXIgc291cmNlIGRvZXMgbm90IHVzZSBtYXRlcmlhbCAnJHtufScuYCl9fWZ1bmN0aW9uICRFKHQsZSxpLG4pe249WihuLCEwKTtsZXQgcz0wLG89IihbXFx3XSk/IixyPWAoW1xcdyR7bj8iLiI6IiJ9XSk/YCxhPW5ldyBSZWdFeHAocitlK28sImciKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2U9dC5zaGFkZXJTb3VyY2UucmVwbGFjZShhLGZ1bmN0aW9uKGgsQSxkKXtyZXR1cm4gQXx8ZD9oOihzKz0xLGkpfSksc31mdW5jdGlvbiBLbnQodCxlLGkpe3JldHVybiAkRSh0LGUsZSxpKX12YXIga250LExudCxaUCxQbnQsd04scFA9TygoKT0+e1hlKCk7YUUoKTtRbigpO0tBKCk7aWgoKTtidCgpO210KCk7V3MoKTtWdCgpO0d4KCk7ZGMoKTtkbigpO0ZpKCk7SWEoKTtXeCgpO3VJKCk7TXgoKTtReCgpO0x4KCk7d3goKTtQeCgpO2p4KCk7dngoKTtLeCgpO3F4KCk7dFAoKTtpUCgpO3NQKCk7clAoKTtBUCgpO2NQKCk7WUUoKTtkUCgpO2ZQKCk7TkUoKTtiRSgpO19QKCk7UXQuX3VuaWZvcm1MaXN0PXt9O1F0LmZyb21UeXBlPWZ1bmN0aW9uKHQsZSl7aWYoIW0oUXQuX21hdGVyaWFsQ2FjaGUuZ2V0TWF0ZXJpYWwodCkpKXRocm93IG5ldyBZKGBtYXRlcmlhbCB3aXRoIHR5cGUgJyR7dH0nIGRvZXMgbm90IGV4aXN0LmApO2xldCBpPW5ldyBRdCh7ZmFicmljOnt0eXBlOnR9fSk7aWYobShlKSlmb3IobGV0IG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYoaS51bmlmb3Jtc1tuXT1lW25dKTtyZXR1cm4gaX07UXQucHJvdG90eXBlLmlzVHJhbnNsdWNlbnQ9ZnVuY3Rpb24oKXtpZihtKHRoaXMudHJhbnNsdWNlbnQpKXJldHVybiB0eXBlb2YgdGhpcy50cmFuc2x1Y2VudD09ImZ1bmN0aW9uIj90aGlzLnRyYW5zbHVjZW50KCk6dGhpcy50cmFuc2x1Y2VudDtsZXQgdD0hMCxlPXRoaXMuX3RyYW5zbHVjZW50RnVuY3Rpb25zLGk9ZS5sZW5ndGg7Zm9yKGxldCBuPTA7bjxpOysrbil7bGV0IHM9ZVtuXTtpZih0eXBlb2Ygcz09ImZ1bmN0aW9uIj90PXQmJnMoKTp0PXQmJnMsIXQpYnJlYWt9cmV0dXJuIHR9O1F0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdFRleHR1cmU9dC5kZWZhdWx0VGV4dHVyZTtsZXQgZSxpLG49dGhpcy5fbG9hZGVkSW1hZ2VzLHM9bi5sZW5ndGg7Zm9yKGU9MDtlPHM7KytlKXtsZXQgaD1uW2VdO2k9aC5pZDtsZXQgQT1oLmltYWdlLGQ7QXJyYXkuaXNBcnJheShBKSYmKGQ9QS5zbGljZSgxLEEubGVuZ3RoKS5tYXAoZnVuY3Rpb24oSSl7cmV0dXJuIEkuYnVmZmVyVmlld30pLEE9QVswXSk7bGV0IGY9bmV3IFpBKHttaW5pZmljYXRpb25GaWx0ZXI6dGhpcy5fbWluaWZpY2F0aW9uRmlsdGVyLG1hZ25pZmljYXRpb25GaWx0ZXI6dGhpcy5fbWFnbmlmaWNhdGlvbkZpbHRlcn0pLEU7bShBLmludGVybmFsRm9ybWF0KT9FPW5ldyBGYSh7Y29udGV4dDp0LHBpeGVsRm9ybWF0OkEuaW50ZXJuYWxGb3JtYXQsd2lkdGg6QS53aWR0aCxoZWlnaHQ6QS5oZWlnaHQsc291cmNlOnthcnJheUJ1ZmZlclZpZXc6QS5idWZmZXJWaWV3LG1pcExldmVsczpkfSxzYW1wbGVyOmZ9KTpFPW5ldyBGYSh7Y29udGV4dDp0LHNvdXJjZTpBLHNhbXBsZXI6Zn0pO2xldCBfPXRoaXMuX3RleHR1cmVzW2ldO20oXykmJl8hPT10aGlzLl9kZWZhdWx0VGV4dHVyZSYmXy5kZXN0cm95KCksdGhpcy5fdGV4dHVyZXNbaV09RTtsZXQgUj1gJHtpfURpbWVuc2lvbnNgO2lmKHRoaXMudW5pZm9ybXMuaGFzT3duUHJvcGVydHkoUikpe2xldCBJPXRoaXMudW5pZm9ybXNbUl07SS54PUUuX3dpZHRoLEkueT1FLl9oZWlnaHR9fW4ubGVuZ3RoPTA7bGV0IG89dGhpcy5fbG9hZGVkQ3ViZU1hcHM7Zm9yKHM9by5sZW5ndGgsZT0wO2U8czsrK2Upe2xldCBoPW9bZV07aT1oLmlkO2xldCBBPWguaW1hZ2VzLGQ9bmV3IExOKHtjb250ZXh0OnQsc291cmNlOntwb3NpdGl2ZVg6QVswXSxuZWdhdGl2ZVg6QVsxXSxwb3NpdGl2ZVk6QVsyXSxuZWdhdGl2ZVk6QVszXSxwb3NpdGl2ZVo6QVs0XSxuZWdhdGl2ZVo6QVs1XX0sc2FtcGxlcjpuZXcgWkEoe21pbmlmaWNhdGlvbkZpbHRlcjp0aGlzLl9taW5pZmljYXRpb25GaWx0ZXIsbWFnbmlmaWNhdGlvbkZpbHRlcjp0aGlzLl9tYWduaWZpY2F0aW9uRmlsdGVyfSl9KTt0aGlzLl90ZXh0dXJlc1tpXT1kfW8ubGVuZ3RoPTA7bGV0IHI9dGhpcy5fdXBkYXRlRnVuY3Rpb25zO2ZvcihzPXIubGVuZ3RoLGU9MDtlPHM7KytlKXJbZV0odGhpcyx0KTtsZXQgYT10aGlzLm1hdGVyaWFscztmb3IobGV0IGggaW4gYSlhLmhhc093blByb3BlcnR5KGgpJiZhW2hdLnVwZGF0ZSh0KX07UXQucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1F0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fdGV4dHVyZXM7Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IG49dFtpXTtuIT09dGhpcy5fZGVmYXVsdFRleHR1cmUmJm4uZGVzdHJveSgpfWxldCBlPXRoaXMubWF0ZXJpYWxzO2ZvcihsZXQgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJmVbaV0uZGVzdHJveSgpO3JldHVybiBsaSh0aGlzKX07a250PVsidHlwZSIsIm1hdGVyaWFscyIsInVuaWZvcm1zIiwiY29tcG9uZW50cyIsInNvdXJjZSJdLExudD1bImRpZmZ1c2UiLCJzcGVjdWxhciIsInNoaW5pbmVzcyIsIm5vcm1hbCIsImVtaXNzaW9uIiwiYWxwaGEiXTtaUD17bWF0MjpIbixtYXQzOmx0LG1hdDQ6YXR9LFBudD0vXC5rdHgyJC9pO1F0Ll9tYXRlcmlhbENhY2hlPXtfbWF0ZXJpYWxzOnt9LGFkZE1hdGVyaWFsOmZ1bmN0aW9uKHQsZSl7dGhpcy5fbWF0ZXJpYWxzW3RdPWV9LGdldE1hdGVyaWFsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tYXRlcmlhbHNbdF19fTtRdC5EZWZhdWx0SW1hZ2VJZD0iY3ptX2RlZmF1bHRJbWFnZSI7UXQuRGVmYXVsdEN1YmVNYXBJZD0iY3ptX2RlZmF1bHRDdWJlTWFwIjtRdC5Db2xvclR5cGU9IkNvbG9yIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Db2xvclR5cGUse2ZhYnJpYzp7dHlwZTpRdC5Db2xvclR5cGUsdW5pZm9ybXM6e2NvbG9yOm5ldyBadCgxLDAsMCwuNSl9LGNvbXBvbmVudHM6e2RpZmZ1c2U6ImNvbG9yLnJnYiIsYWxwaGE6ImNvbG9yLmEifX0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQudW5pZm9ybXMuY29sb3IuYWxwaGE8MX19KTtRdC5JbWFnZVR5cGU9IkltYWdlIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5JbWFnZVR5cGUse2ZhYnJpYzp7dHlwZTpRdC5JbWFnZVR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLHJlcGVhdDpuZXcgbnQoMSwxKSxjb2xvcjpuZXcgWnQoMSwxLDEsMSl9LGNvbXBvbmVudHM6e2RpZmZ1c2U6InRleHR1cmUoaW1hZ2UsIGZyYWN0KHJlcGVhdCAqIG1hdGVyaWFsSW5wdXQuc3QpKS5yZ2IgKiBjb2xvci5yZ2IiLGFscGhhOiJ0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSkuYSAqIGNvbG9yLmEifX0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQudW5pZm9ybXMuY29sb3IuYWxwaGE8MX19KTtRdC5EaWZmdXNlTWFwVHlwZT0iRGlmZnVzZU1hcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRGlmZnVzZU1hcFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5EaWZmdXNlTWFwVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWQsY2hhbm5lbHM6InJnYiIscmVwZWF0Om5ldyBudCgxLDEpfSxjb21wb25lbnRzOntkaWZmdXNlOiJ0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSkuY2hhbm5lbHMifX0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5BbHBoYU1hcFR5cGU9IkFscGhhTWFwIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5BbHBoYU1hcFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5BbHBoYU1hcFR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLGNoYW5uZWw6ImEiLHJlcGVhdDpuZXcgbnQoMSwxKX0sY29tcG9uZW50czp7YWxwaGE6InRleHR1cmUoaW1hZ2UsIGZyYWN0KHJlcGVhdCAqIG1hdGVyaWFsSW5wdXQuc3QpKS5jaGFubmVsIn19LHRyYW5zbHVjZW50OiEwfSk7UXQuU3BlY3VsYXJNYXBUeXBlPSJTcGVjdWxhck1hcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuU3BlY3VsYXJNYXBUeXBlLHtmYWJyaWM6e3R5cGU6UXQuU3BlY3VsYXJNYXBUeXBlLHVuaWZvcm1zOntpbWFnZTpRdC5EZWZhdWx0SW1hZ2VJZCxjaGFubmVsOiJyIixyZXBlYXQ6bmV3IG50KDEsMSl9LGNvbXBvbmVudHM6e3NwZWN1bGFyOiJ0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSkuY2hhbm5lbCJ9fSx0cmFuc2x1Y2VudDohMX0pO1F0LkVtaXNzaW9uTWFwVHlwZT0iRW1pc3Npb25NYXAiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkVtaXNzaW9uTWFwVHlwZSx7ZmFicmljOnt0eXBlOlF0LkVtaXNzaW9uTWFwVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWQsY2hhbm5lbHM6InJnYiIscmVwZWF0Om5ldyBudCgxLDEpfSxjb21wb25lbnRzOntlbWlzc2lvbjoidGV4dHVyZShpbWFnZSwgZnJhY3QocmVwZWF0ICogbWF0ZXJpYWxJbnB1dC5zdCkpLmNoYW5uZWxzIn19LHRyYW5zbHVjZW50OiExfSk7UXQuQnVtcE1hcFR5cGU9IkJ1bXBNYXAiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkJ1bXBNYXBUeXBlLHtmYWJyaWM6e3R5cGU6UXQuQnVtcE1hcFR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLGNoYW5uZWw6InIiLHN0cmVuZ3RoOi44LHJlcGVhdDpuZXcgbnQoMSwxKX0sc291cmNlOlV4fSx0cmFuc2x1Y2VudDohMX0pO1F0Lk5vcm1hbE1hcFR5cGU9Ik5vcm1hbE1hcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuTm9ybWFsTWFwVHlwZSx7ZmFicmljOnt0eXBlOlF0Lk5vcm1hbE1hcFR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLGNoYW5uZWxzOiJyZ2IiLHN0cmVuZ3RoOi44LHJlcGVhdDpuZXcgbnQoMSwxKX0sc291cmNlOiR4fSx0cmFuc2x1Y2VudDohMX0pO1F0LkdyaWRUeXBlPSJHcmlkIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5HcmlkVHlwZSx7ZmFicmljOnt0eXBlOlF0LkdyaWRUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMCwxLDAsMSksY2VsbEFscGhhOi4xLGxpbmVDb3VudDpuZXcgbnQoOCw4KSxsaW5lVGhpY2tuZXNzOm5ldyBudCgxLDEpLGxpbmVPZmZzZXQ6bmV3IG50KDAsMCl9LHNvdXJjZTpYeH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5jb2xvci5hbHBoYTwxfHxlLmNlbGxBbHBoYTwxfX0pO1F0LlN0cmlwZVR5cGU9IlN0cmlwZSI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuU3RyaXBlVHlwZSx7ZmFicmljOnt0eXBlOlF0LlN0cmlwZVR5cGUsdW5pZm9ybXM6e2hvcml6b250YWw6ITAsZXZlbkNvbG9yOm5ldyBadCgxLDEsMSwuNSksb2RkQ29sb3I6bmV3IFp0KDAsMCwxLC41KSxvZmZzZXQ6MCxyZXBlYXQ6NX0sc291cmNlOm1QfSx0cmFuc2x1Y2VudDpmdW5jdGlvbih0KXtsZXQgZT10LnVuaWZvcm1zO3JldHVybiBlLmV2ZW5Db2xvci5hbHBoYTwxfHxlLm9kZENvbG9yLmFscGhhPDF9fSk7UXQuQ2hlY2tlcmJvYXJkVHlwZT0iQ2hlY2tlcmJvYXJkIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5DaGVja2VyYm9hcmRUeXBlLHtmYWJyaWM6e3R5cGU6UXQuQ2hlY2tlcmJvYXJkVHlwZSx1bmlmb3Jtczp7bGlnaHRDb2xvcjpuZXcgWnQoMSwxLDEsLjUpLGRhcmtDb2xvcjpuZXcgWnQoMCwwLDAsLjUpLHJlcGVhdDpuZXcgbnQoNSw1KX0sc291cmNlOmt4fSx0cmFuc2x1Y2VudDpmdW5jdGlvbih0KXtsZXQgZT10LnVuaWZvcm1zO3JldHVybiBlLmxpZ2h0Q29sb3IuYWxwaGE8MXx8ZS5kYXJrQ29sb3IuYWxwaGE8MX19KTtRdC5Eb3RUeXBlPSJEb3QiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkRvdFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5Eb3RUeXBlLHVuaWZvcm1zOntsaWdodENvbG9yOm5ldyBadCgxLDEsMCwuNzUpLGRhcmtDb2xvcjpuZXcgWnQoMCwxLDEsLjc1KSxyZXBlYXQ6bmV3IG50KDUsNSl9LHNvdXJjZTp5eH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5saWdodENvbG9yLmFscGhhPDF8fGUuZGFya0NvbG9yLmFscGhhPDF9fSk7UXQuV2F0ZXJUeXBlPSJXYXRlciI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuV2F0ZXJUeXBlLHtmYWJyaWM6e3R5cGU6UXQuV2F0ZXJUeXBlLHVuaWZvcm1zOntiYXNlV2F0ZXJDb2xvcjpuZXcgWnQoLjIsLjMsLjYsMSksYmxlbmRDb2xvcjpuZXcgWnQoMCwxLC42OTksMSksc3BlY3VsYXJNYXA6UXQuRGVmYXVsdEltYWdlSWQsbm9ybWFsTWFwOlF0LkRlZmF1bHRJbWFnZUlkLGZyZXF1ZW5jeToxMCxhbmltYXRpb25TcGVlZDouMDEsYW1wbGl0dWRlOjEsc3BlY3VsYXJJbnRlbnNpdHk6LjUsZmFkZUZhY3RvcjoxfSxzb3VyY2U6RVB9LHRyYW5zbHVjZW50OmZ1bmN0aW9uKHQpe2xldCBlPXQudW5pZm9ybXM7cmV0dXJuIGUuYmFzZVdhdGVyQ29sb3IuYWxwaGE8MXx8ZS5ibGVuZENvbG9yLmFscGhhPDF9fSk7UXQuUmltTGlnaHRpbmdUeXBlPSJSaW1MaWdodGluZyI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuUmltTGlnaHRpbmdUeXBlLHtmYWJyaWM6e3R5cGU6UXQuUmltTGlnaHRpbmdUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMSwwLDAsLjcpLHJpbUNvbG9yOm5ldyBadCgxLDEsMSwuNCksd2lkdGg6LjN9LHNvdXJjZTpoUH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5jb2xvci5hbHBoYTwxfHxlLnJpbUNvbG9yLmFscGhhPDF9fSk7UXQuRmFkZVR5cGU9IkZhZGUiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkZhZGVUeXBlLHtmYWJyaWM6e3R5cGU6UXQuRmFkZVR5cGUsdW5pZm9ybXM6e2ZhZGVJbkNvbG9yOm5ldyBadCgxLDAsMCwxKSxmYWRlT3V0Q29sb3I6bmV3IFp0KDAsMCwwLDApLG1heGltdW1EaXN0YW5jZTouNSxyZXBlYXQ6ITAsZmFkZURpcmVjdGlvbjp7eDohMCx5OiEwfSx0aW1lOm5ldyBudCguNSwuNSl9LHNvdXJjZTp6eH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5mYWRlSW5Db2xvci5hbHBoYTwxfHxlLmZhZGVPdXRDb2xvci5hbHBoYTwxfX0pO1F0LlBvbHlsaW5lQXJyb3dUeXBlPSJQb2x5bGluZUFycm93IjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Qb2x5bGluZUFycm93VHlwZSx7ZmFicmljOnt0eXBlOlF0LlBvbHlsaW5lQXJyb3dUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMSwxLDEsMSl9LHNvdXJjZTplUH0sdHJhbnNsdWNlbnQ6ITB9KTtRdC5Qb2x5bGluZURhc2hUeXBlPSJQb2x5bGluZURhc2giO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LlBvbHlsaW5lRGFzaFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5Qb2x5bGluZURhc2hUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMSwwLDEsMSksZ2FwQ29sb3I6bmV3IFp0KDAsMCwwLDApLGRhc2hMZW5ndGg6MTYsZGFzaFBhdHRlcm46MjU1fSxzb3VyY2U6blB9LHRyYW5zbHVjZW50OiEwfSk7UXQuUG9seWxpbmVHbG93VHlwZT0iUG9seWxpbmVHbG93IjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Qb2x5bGluZUdsb3dUeXBlLHtmYWJyaWM6e3R5cGU6UXQuUG9seWxpbmVHbG93VHlwZSx1bmlmb3Jtczp7Y29sb3I6bmV3IFp0KDAsLjUsMSwxKSxnbG93UG93ZXI6LjI1LHRhcGVyUG93ZXI6MX0sc291cmNlOm9QfSx0cmFuc2x1Y2VudDohMH0pO1F0LlBvbHlsaW5lT3V0bGluZVR5cGU9IlBvbHlsaW5lT3V0bGluZSI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuUG9seWxpbmVPdXRsaW5lVHlwZSx7ZmFicmljOnt0eXBlOlF0LlBvbHlsaW5lT3V0bGluZVR5cGUsdW5pZm9ybXM6e2NvbG9yOm5ldyBadCgxLDEsMSwxKSxvdXRsaW5lQ29sb3I6bmV3IFp0KDEsMCwwLDEpLG91dGxpbmVXaWR0aDoxfSxzb3VyY2U6YVB9LHRyYW5zbHVjZW50OmZ1bmN0aW9uKHQpe2xldCBlPXQudW5pZm9ybXM7cmV0dXJuIGUuY29sb3IuYWxwaGE8MXx8ZS5vdXRsaW5lQ29sb3IuYWxwaGE8MX19KTtRdC5FbGV2YXRpb25Db250b3VyVHlwZT0iRWxldmF0aW9uQ29udG91ciI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRWxldmF0aW9uQ29udG91clR5cGUse2ZhYnJpYzp7dHlwZTpRdC5FbGV2YXRpb25Db250b3VyVHlwZSx1bmlmb3Jtczp7c3BhY2luZzoxMDAsY29sb3I6bmV3IFp0KDEsMCwwLDEpLHdpZHRoOjF9LHNvdXJjZTpKeH0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5FbGV2YXRpb25SYW1wVHlwZT0iRWxldmF0aW9uUmFtcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRWxldmF0aW9uUmFtcFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5FbGV2YXRpb25SYW1wVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWQsbWluaW11bUhlaWdodDowLG1heGltdW1IZWlnaHQ6MWU0fSxzb3VyY2U6SHh9LHRyYW5zbHVjZW50OiExfSk7UXQuU2xvcGVSYW1wTWF0ZXJpYWxUeXBlPSJTbG9wZVJhbXAiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LlNsb3BlUmFtcE1hdGVyaWFsVHlwZSx7ZmFicmljOnt0eXBlOlF0LlNsb3BlUmFtcE1hdGVyaWFsVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWR9LHNvdXJjZTpsUH0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5Bc3BlY3RSYW1wTWF0ZXJpYWxUeXBlPSJBc3BlY3RSYW1wIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Bc3BlY3RSYW1wTWF0ZXJpYWxUeXBlLHtmYWJyaWM6e3R5cGU6UXQuQXNwZWN0UmFtcE1hdGVyaWFsVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWR9LHNvdXJjZTpEeH0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5FbGV2YXRpb25CYW5kVHlwZT0iRWxldmF0aW9uQmFuZCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRWxldmF0aW9uQmFuZFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5FbGV2YXRpb25CYW5kVHlwZSx1bmlmb3Jtczp7aGVpZ2h0czpRdC5EZWZhdWx0SW1hZ2VJZCxjb2xvcnM6UXQuRGVmYXVsdEltYWdlSWR9LHNvdXJjZTp4eH0sdHJhbnNsdWNlbnQ6ITB9KTt3Tj1RdH0pO2Z1bmN0aW9uIExsKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQudHJhbnNsdWNlbnQsITApLGk9ITEsbj1MbC5WRVJURVhfRk9STUFUO3RoaXMubWF0ZXJpYWw9bSh0Lm1hdGVyaWFsKT90Lm1hdGVyaWFsOndOLmZyb21UeXBlKHdOLkNvbG9yVHlwZSksdGhpcy50cmFuc2x1Y2VudD1lLHRoaXMuX3ZlcnRleFNoYWRlclNvdXJjZT1aKHQudmVydGV4U2hhZGVyU291cmNlLHhOKSx0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZT1aKHQuZnJhZ21lbnRTaGFkZXJTb3VyY2UsWG50KSx0aGlzLl9yZW5kZXJTdGF0ZT1Vby5nZXREZWZhdWx0UmVuZGVyU3RhdGUoZSxpLHQucmVuZGVyU3RhdGUpLHRoaXMuX2Nsb3NlZD1pLHRoaXMuX3ZlcnRleEZvcm1hdD1ufXZhciB4TixYbnQsdVAsQ1A9TygoKT0+e2J0KCk7bXQoKTtJbCgpO0xzKCk7cHgoKTtCTigpO0N4KCk7TEkoKTtwUCgpO3hOPWAke2tJfQoke0l4fWAsWG50PXV4O19vLmlzSW50ZXJuZXRFeHBsb3JlcigpfHwoeE49YCNkZWZpbmUgQ0xJUF9QT0xZTElORSAKJHt4Tn1gKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhMbC5wcm90b3R5cGUse3ZlcnRleFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fdmVydGV4U2hhZGVyU291cmNlO3JldHVybiB0aGlzLm1hdGVyaWFsLnNoYWRlclNvdXJjZS5zZWFyY2goL2luXHMrZmxvYXRccyt2X3BvbHlsaW5lQW5nbGU7L2cpIT09LTEmJih0PWAjZGVmaW5lIFBPTFlMSU5FX0RBU0gKJHt0fWApLHR9fSxmcmFnbWVudFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYWdtZW50U2hhZGVyU291cmNlfX0scmVuZGVyU3RhdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJTdGF0ZX19LGNsb3NlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nsb3NlZH19LHZlcnRleEZvcm1hdDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleEZvcm1hdH19fSk7TGwuVkVSVEVYX0ZPUk1BVD1PdC5QT1NJVElPTl9BTkRfU1Q7TGwucHJvdG90eXBlLmdldEZyYWdtZW50U2hhZGVyU291cmNlPVVvLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZTtMbC5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudD1Vby5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudDtMbC5wcm90b3R5cGUuZ2V0UmVuZGVyU3RhdGU9VW8ucHJvdG90eXBlLmdldFJlbmRlclN0YXRlO3VQPUxsfSk7ZnVuY3Rpb24gcW50KHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24sdGhpcy5ub3JtYWw9dC5ub3JtYWwsdGhpcy5zdD10LnN0LHRoaXMuYml0YW5nZW50PXQuYml0YW5nZW50LHRoaXMudGFuZ2VudD10LnRhbmdlbnQsdGhpcy5jb2xvcj10LmNvbG9yfXZhciB3ZSxFbj1PKCgpPT57YnQoKTt3ZT1xbnR9KTt2YXIgJG50LFBlLGdvPU8oKCk9PnskbnQ9e05PTkU6MCxUT1A6MSxBTEw6Mn0sUGU9T2JqZWN0LmZyZWV6ZSgkbnQpfSk7ZnVuY3Rpb24gdHN0KHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPDEpdGhyb3cgbmV3IFkoIm51bWJlck9mQXJyYXlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuIik7bGV0IGk9W10sbj10Lmxlbmd0aCxzPTA7Zm9yKDtzPG47KXtsZXQgbz1NYXRoLmNlaWwoKG4tcykvZS0tKTtpLnB1c2godC5zbGljZShzLHMrbykpLHMrPW99cmV0dXJuIGl9dmFyIGdQLFRQPU8oKCk9PnttdCgpO1Z0KCk7Z1A9dHN0fSk7ZnVuY3Rpb24gUmgodCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJjb250ZXh0IGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZXMgaXMgcmVxdWlyZWQiKTtpZighbShpKSl0aHJvdyBuZXcgWSgibnVtYmVyT2ZJbnN0YW5jZXMgaXMgcmVxdWlyZWQiKTtpZih0aGlzLl9hdHRyaWJ1dGVzPWUsdGhpcy5fbnVtYmVyT2ZJbnN0YW5jZXM9aSxlLmxlbmd0aD09PTApcmV0dXJuO2xldCBuPWVzdChlKSxzPXQuZmxvYXRpbmdQb2ludFRleHR1cmUsbz1uPT09Z2UuRkxPQVQmJiFzLHI9aXN0KGUsbyksYT1uc3QocixlLG8pLGg9TWF0aC5mbG9vcihlbi5tYXhpbXVtVGV4dHVyZVNpemUvYSksQT1NYXRoLm1pbihpLGgpLGQ9YSpBLGY9TWF0aC5jZWlsKGkvQSksRT0xL2QsXz1FKi41LFI9MS9mLEk9UiouNTt0aGlzLl90ZXh0dXJlRGltZW5zaW9ucz1uZXcgbnQoZCxmKSx0aGlzLl90ZXh0dXJlU3RlcD1uZXcgaWUoRSxfLFIsSSksdGhpcy5fcGl4ZWxEYXRhdHlwZT1vP2dlLlVOU0lHTkVEX0JZVEU6bix0aGlzLl9wYWNrRmxvYXRzPW8sdGhpcy5fb2Zmc2V0cz1yLHRoaXMuX3N0cmlkZT1hLHRoaXMuX3RleHR1cmU9dm9pZCAwO2xldCBDPTQqZCpmO3RoaXMuX2JhdGNoVmFsdWVzPW49PT1nZS5GTE9BVCYmIW8/bmV3IEZsb2F0MzJBcnJheShDKTpuZXcgVWludDhBcnJheShDKSx0aGlzLl9iYXRjaFZhbHVlc0RpcnR5PSExfWZ1bmN0aW9uIGVzdCh0KXtsZXQgZT0hMSxpPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248aTsrK24paWYodFtuXS5jb21wb25lbnREYXRhdHlwZSE9PUF0LlVOU0lHTkVEX0JZVEUpe2U9ITA7YnJlYWt9cmV0dXJuIGU/Z2UuRkxPQVQ6Z2UuVU5TSUdORURfQllURX1mdW5jdGlvbiBiUCh0LGUpe2xldCBpPXRbZV0uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtyZXR1cm4gaT09PTI/bnQ6aT09PTM/bDppPT09ND9pZTpOdW1iZXJ9ZnVuY3Rpb24gaXN0KHQsZSl7bGV0IGk9bmV3IEFycmF5KHQubGVuZ3RoKSxuPTAscz10Lmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKXtsZXQgYT10W29dLmNvbXBvbmVudERhdGF0eXBlO2lbb109bixhIT09QXQuVU5TSUdORURfQllURSYmZT9uKz00Oisrbn1yZXR1cm4gaX1mdW5jdGlvbiBuc3QodCxlLGkpe2xldCBuPXQubGVuZ3RoLHM9dFtuLTFdO3JldHVybiBlW24tMV0uY29tcG9uZW50RGF0YXR5cGUhPT1BdC5VTlNJR05FRF9CWVRFJiZpP3MrNDpzKzF9ZnVuY3Rpb24gc3N0KHQsZSxpKXtsZXQgbj1pZS51bnBhY2sodCxlLHRfKSxzPWllLnVucGFja0Zsb2F0KG4pO249aWUudW5wYWNrKHQsZSs0LHRfKTtsZXQgbz1pZS51bnBhY2tGbG9hdChuKTtuPWllLnVucGFjayh0LGUrOCx0Xyk7bGV0IHI9aWUudW5wYWNrRmxvYXQobik7bj1pZS51bnBhY2sodCxlKzEyLHRfKTtsZXQgYT1pZS51bnBhY2tGbG9hdChuKTtyZXR1cm4gaWUuZnJvbUVsZW1lbnRzKHMsbyxyLGEsaSl9ZnVuY3Rpb24gb3N0KHQsZSxpKXtsZXQgbj1pZS5wYWNrRmxvYXQodC54LHRfKTtpZS5wYWNrKG4sZSxpKSxuPWllLnBhY2tGbG9hdCh0LnksbiksaWUucGFjayhuLGUsaSs0KSxuPWllLnBhY2tGbG9hdCh0LnosbiksaWUucGFjayhuLGUsaSs4KSxuPWllLnBhY2tGbG9hdCh0LncsbiksaWUucGFjayhuLGUsaSsxMil9ZnVuY3Rpb24gQXN0KHQsZSl7bGV0IGk9dC5fdGV4dHVyZURpbWVuc2lvbnM7dC5fdGV4dHVyZT1uZXcgRmEoe2NvbnRleHQ6ZSxwaXhlbEZvcm1hdDpJZS5SR0JBLHBpeGVsRGF0YXR5cGU6dC5fcGl4ZWxEYXRhdHlwZSx3aWR0aDppLngsaGVpZ2h0OmkueSxzYW1wbGVyOlpBLk5FQVJFU1QsZmxpcFk6ITF9KX1mdW5jdGlvbiBoc3QodCl7bGV0IGU9dC5fdGV4dHVyZURpbWVuc2lvbnM7dC5fdGV4dHVyZS5jb3B5RnJvbSh7c291cmNlOnt3aWR0aDplLngsaGVpZ2h0OmUueSxhcnJheUJ1ZmZlclZpZXc6dC5fYmF0Y2hWYWx1ZXN9fSl9ZnVuY3Rpb24gY3N0KHQpe2xldCBlPXQuX3N0cmlkZTtyZXR1cm4gdC5fdGV4dHVyZURpbWVuc2lvbnMueT09PTE/YHVuaWZvcm0gdmVjNCBiYXRjaFRleHR1cmVTdGVwOyAKdmVjMiBjb21wdXRlU3QoZmxvYXQgYmF0Y2hJZCkgCnsgCiAgICBmbG9hdCBzdGVwWCA9IGJhdGNoVGV4dHVyZVN0ZXAueDsgCiAgICBmbG9hdCBjZW50ZXJYID0gYmF0Y2hUZXh0dXJlU3RlcC55OyAKICAgIGZsb2F0IG51bWJlck9mQXR0cmlidXRlcyA9IGZsb2F0KCR7ZX0pOyAKICAgIHJldHVybiB2ZWMyKGNlbnRlclggKyAoYmF0Y2hJZCAqIG51bWJlck9mQXR0cmlidXRlcyAqIHN0ZXBYKSwgMC41KTsgCn0gCmA6YHVuaWZvcm0gdmVjNCBiYXRjaFRleHR1cmVTdGVwOyAKdW5pZm9ybSB2ZWMyIGJhdGNoVGV4dHVyZURpbWVuc2lvbnM7IAp2ZWMyIGNvbXB1dGVTdChmbG9hdCBiYXRjaElkKSAKeyAKICAgIGZsb2F0IHN0ZXBYID0gYmF0Y2hUZXh0dXJlU3RlcC54OyAKICAgIGZsb2F0IGNlbnRlclggPSBiYXRjaFRleHR1cmVTdGVwLnk7IAogICAgZmxvYXQgc3RlcFkgPSBiYXRjaFRleHR1cmVTdGVwLno7IAogICAgZmxvYXQgY2VudGVyWSA9IGJhdGNoVGV4dHVyZVN0ZXAudzsgCiAgICBmbG9hdCBudW1iZXJPZkF0dHJpYnV0ZXMgPSBmbG9hdCgke2V9KTsgCiAgICBmbG9hdCB4SWQgPSBtb2QoYmF0Y2hJZCAqIG51bWJlck9mQXR0cmlidXRlcywgYmF0Y2hUZXh0dXJlRGltZW5zaW9ucy54KTsgCiAgICBmbG9hdCB5SWQgPSBmbG9vcihiYXRjaElkICogbnVtYmVyT2ZBdHRyaWJ1dGVzIC8gYmF0Y2hUZXh0dXJlRGltZW5zaW9ucy54KTsgCiAgICByZXR1cm4gdmVjMihjZW50ZXJYICsgKHhJZCAqIHN0ZXBYKSwgY2VudGVyWSArICh5SWQgKiBzdGVwWSkpOyAKfSAKYH1mdW5jdGlvbiBsc3QodCl7cmV0dXJuIHQ9PT0xPyJmbG9hdCI6YHZlYyR7dH1gfWZ1bmN0aW9uIGRzdCh0KXtyZXR1cm4gdD09PTE/Ii54Ijp0PT09Mj8iLnh5Ijp0PT09Mz8iLnh5eiI6IiJ9ZnVuY3Rpb24gbXN0KHQsZSl7bGV0IG49dC5fYXR0cmlidXRlc1tlXSxzPW4uY29tcG9uZW50c1BlckF0dHJpYnV0ZSxvPW4uZnVuY3Rpb25OYW1lLHI9bHN0KHMpLGE9ZHN0KHMpLGg9dC5fb2Zmc2V0c1tlXSxBPWAke3J9ICR7b30oZmxvYXQgYmF0Y2hJZCkgCnsgCiAgICB2ZWMyIHN0ID0gY29tcHV0ZVN0KGJhdGNoSWQpOyAKICAgIHN0LnggKz0gYmF0Y2hUZXh0dXJlU3RlcC54ICogZmxvYXQoJHtofSk7IApgO3JldHVybiB0Ll9wYWNrRmxvYXRzJiZuLmNvbXBvbmVudERhdGF0eXBlIT09Z2UuVU5TSUdORURfQllURT9BKz1gdmVjNCB0ZXh0dXJlVmFsdWU7IAp0ZXh0dXJlVmFsdWUueCA9IGN6bV91bnBhY2tGbG9hdCh0ZXh0dXJlKGJhdGNoVGV4dHVyZSwgc3QpKTsgCnRleHR1cmVWYWx1ZS55ID0gY3ptX3VucGFja0Zsb2F0KHRleHR1cmUoYmF0Y2hUZXh0dXJlLCBzdCArIHZlYzIoYmF0Y2hUZXh0dXJlU3RlcC54LCAwLjApKSk7IAp0ZXh0dXJlVmFsdWUueiA9IGN6bV91bnBhY2tGbG9hdCh0ZXh0dXJlKGJhdGNoVGV4dHVyZSwgc3QgKyB2ZWMyKGJhdGNoVGV4dHVyZVN0ZXAueCAqIDIuMCwgMC4wKSkpOyAKdGV4dHVyZVZhbHVlLncgPSBjem1fdW5wYWNrRmxvYXQodGV4dHVyZShiYXRjaFRleHR1cmUsIHN0ICsgdmVjMihiYXRjaFRleHR1cmVTdGVwLnggKiAzLjAsIDAuMCkpKTsgCmA6QSs9YCAgICB2ZWM0IHRleHR1cmVWYWx1ZSA9IHRleHR1cmUoYmF0Y2hUZXh0dXJlLCBzdCk7IApgLEErPWAgICAgJHtyfSB2YWx1ZSA9IHRleHR1cmVWYWx1ZSR7YX07IApgLHQuX3BpeGVsRGF0YXR5cGU9PT1nZS5VTlNJR05FRF9CWVRFJiZuLmNvbXBvbmVudERhdGF0eXBlPT09QXQuVU5TSUdORURfQllURSYmIW4ubm9ybWFsaXplP0ErPWB2YWx1ZSAqPSAyNTUuMDsgCmA6dC5fcGl4ZWxEYXRhdHlwZT09PWdlLkZMT0FUJiZuLmNvbXBvbmVudERhdGF0eXBlPT09QXQuVU5TSUdORURfQllURSYmbi5ub3JtYWxpemUmJihBKz1gdmFsdWUgLz0gMjU1LjA7IApgKSxBKz1gICAgIHJldHVybiB2YWx1ZTsgCn0gCmAsQX12YXIgdF8sTlAscnN0LGFzdCxGUCxZUD1PKCgpPT57WGUoKTtIdCgpO1ZzKCk7S0EoKTtvaSgpO210KCk7V3MoKTtWdCgpO19jKCk7Z2EoKTtFYygpO1lFKCk7dUkoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhSaC5wcm90b3R5cGUse2F0dHJpYnV0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRyaWJ1dGVzfX0sbnVtYmVyT2ZJbnN0YW5jZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9udW1iZXJPZkluc3RhbmNlc319fSk7dF89bmV3IGllO05QPW5ldyBpZTtSaC5wcm90b3R5cGUuZ2V0QmF0Y2hlZEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsaSl7aWYodDwwfHx0Pj10aGlzLl9udW1iZXJPZkluc3RhbmNlcyl0aHJvdyBuZXcgWSgiaW5zdGFuY2VJbmRleCBpcyBvdXQgb2YgcmFuZ2UuIik7aWYoZTwwfHxlPj10aGlzLl9hdHRyaWJ1dGVzLmxlbmd0aCl0aHJvdyBuZXcgWSgiYXR0cmlidXRlSW5kZXggaXMgb3V0IG9mIHJhbmdlIik7bGV0IG49dGhpcy5fYXR0cmlidXRlcyxzPXRoaXMuX29mZnNldHNbZV0scj00KnRoaXMuX3N0cmlkZSp0KzQqcyxhO3RoaXMuX3BhY2tGbG9hdHMmJm5bZV0uY29tcG9uZW50RGF0YXR5cGUhPT1nZS5VTlNJR05FRF9CWVRFP2E9c3N0KHRoaXMuX2JhdGNoVmFsdWVzLHIsTlApOmE9aWUudW5wYWNrKHRoaXMuX2JhdGNoVmFsdWVzLHIsTlApO2xldCBoPWJQKG4sZSk7cmV0dXJuIG0oaC5mcm9tQ2FydGVzaWFuNCk/aC5mcm9tQ2FydGVzaWFuNChhLGkpOm0oaC5jbG9uZSk/aC5jbG9uZShhLGkpOmEueH07cnN0PVt2b2lkIDAsdm9pZCAwLG5ldyBudCxuZXcgbCxuZXcgaWVdLGFzdD1uZXcgaWU7UmgucHJvdG90eXBlLnNldEJhdGNoZWRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLGkpe2lmKHQ8MHx8dD49dGhpcy5fbnVtYmVyT2ZJbnN0YW5jZXMpdGhyb3cgbmV3IFkoImluc3RhbmNlSW5kZXggaXMgb3V0IG9mIHJhbmdlLiIpO2lmKGU8MHx8ZT49dGhpcy5fYXR0cmlidXRlcy5sZW5ndGgpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZUluZGV4IGlzIG91dCBvZiByYW5nZSIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtsZXQgbj10aGlzLl9hdHRyaWJ1dGVzLHM9cnN0W25bZV0uY29tcG9uZW50c1BlckF0dHJpYnV0ZV0sbz10aGlzLmdldEJhdGNoZWRBdHRyaWJ1dGUodCxlLHMpLHI9YlAodGhpcy5fYXR0cmlidXRlcyxlKTtpZihtKHIuZXF1YWxzKT9yLmVxdWFscyhvLGkpOm89PT1pKXJldHVybjtsZXQgaD1hc3Q7aC54PW0oaS54KT9pLng6aSxoLnk9bShpLnkpP2kueTowLGguej1tKGkueik/aS56OjAsaC53PW0oaS53KT9pLnc6MDtsZXQgQT10aGlzLl9vZmZzZXRzW2VdLGY9NCp0aGlzLl9zdHJpZGUqdCs0KkE7dGhpcy5fcGFja0Zsb2F0cyYmbltlXS5jb21wb25lbnREYXRhdHlwZSE9PWdlLlVOU0lHTkVEX0JZVEU/b3N0KGgsdGhpcy5fYmF0Y2hWYWx1ZXMsZik6aWUucGFjayhoLHRoaXMuX2JhdGNoVmFsdWVzLGYpLHRoaXMuX2JhdGNoVmFsdWVzRGlydHk9ITB9O1JoLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7bSh0aGlzLl90ZXh0dXJlKSYmIXRoaXMuX2JhdGNoVmFsdWVzRGlydHl8fHRoaXMuX2F0dHJpYnV0ZXMubGVuZ3RoPT09MHx8KHRoaXMuX2JhdGNoVmFsdWVzRGlydHk9ITEsbSh0aGlzLl90ZXh0dXJlKXx8QXN0KHRoaXMsdC5jb250ZXh0KSxoc3QodGhpcykpfTtSaC5wcm90b3R5cGUuZ2V0VW5pZm9ybU1hcENhbGxiYWNrPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcztyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2F0dHJpYnV0ZXMubGVuZ3RoPT09MD9lOmVzKGUse2JhdGNoVGV4dHVyZTpmdW5jdGlvbigpe3JldHVybiB0Ll90ZXh0dXJlfSxiYXRjaFRleHR1cmVEaW1lbnNpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVEaW1lbnNpb25zfSxiYXRjaFRleHR1cmVTdGVwOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVTdGVwfX0pfX07UmgucHJvdG90eXBlLmdldFZlcnRleFNoYWRlckNhbGxiYWNrPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fYXR0cmlidXRlcztpZih0Lmxlbmd0aD09PTApcmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBufTtsZXQgZT1gdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgYmF0Y2hUZXh0dXJlOyAKYDtlKz1gJHtjc3QodGhpcyl9CmA7bGV0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTA7bjxpOysrbillKz1tc3QodGhpcyxuKTtyZXR1cm4gZnVuY3Rpb24obil7bGV0IHM9bi5pbmRleE9mKCJ2b2lkIG1haW4iKSxvPW4uc3Vic3RyaW5nKDAscykscj1uLnN1YnN0cmluZyhzKTtyZXR1cm5gJHtvfQoke2V9CiR7cn1gfX07UmgucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1JoLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmU9dGhpcy5fdGV4dHVyZSYmdGhpcy5fdGV4dHVyZS5kZXN0cm95KCksbGkodGhpcyl9O0ZQPVJofSk7dmFyIGZzdCx3SSxQTj1PKCgpPT57c3MoKTtmc3Q9e05FVkVSOml0Lk5FVkVSLExFU1M6aXQuTEVTUyxFUVVBTDppdC5FUVVBTCxMRVNTX09SX0VRVUFMOml0LkxFUVVBTCxHUkVBVEVSOml0LkdSRUFURVIsTk9UX0VRVUFMOml0Lk5PVEVRVUFMLEdSRUFURVJfT1JfRVFVQUw6aXQuR0VRVUFMLEFMV0FZUzppdC5BTFdBWVN9LHdJPU9iamVjdC5mcmVlemUoZnN0KX0pO2Z1bmN0aW9uIEVzdCh0LGUsaSxuLHMpe3AuZGVmaW5lZCgicG9pbnQiLHQpLHAuZGVmaW5lZCgicDAiLGUpLHAuZGVmaW5lZCgicDEiLGkpLHAuZGVmaW5lZCgicDIiLG4pLG0ocyl8fChzPW5ldyBsKTtsZXQgbyxyLGEsaCxBLGQsZixFO2lmKG0oZS56KSl7aWYobC5lcXVhbHNFcHNpbG9uKHQsZSxMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1gscyk7aWYobC5lcXVhbHNFcHNpbG9uKHQsaSxMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1kscyk7aWYobC5lcXVhbHNFcHNpbG9uKHQsbixMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1oscyk7bz1sLnN1YnRyYWN0KGksZSxTUCkscj1sLnN1YnRyYWN0KG4sZSxPUCksYT1sLnN1YnRyYWN0KHQsZSxWUCksaD1sLmRvdChvLG8pLEE9bC5kb3QobyxyKSxkPWwuZG90KG8sYSksZj1sLmRvdChyLHIpLEU9bC5kb3QocixhKX1lbHNle2lmKG50LmVxdWFsc0Vwc2lsb24odCxlLEwuRVBTSUxPTjE0KSlyZXR1cm4gbC5jbG9uZShsLlVOSVRfWCxzKTtpZihudC5lcXVhbHNFcHNpbG9uKHQsaSxMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1kscyk7aWYobnQuZXF1YWxzRXBzaWxvbih0LG4sTC5FUFNJTE9OMTQpKXJldHVybiBsLmNsb25lKGwuVU5JVF9aLHMpO289bnQuc3VidHJhY3QoaSxlLFNQKSxyPW50LnN1YnRyYWN0KG4sZSxPUCksYT1udC5zdWJ0cmFjdCh0LGUsVlApLGg9bnQuZG90KG8sbyksQT1udC5kb3QobyxyKSxkPW50LmRvdChvLGEpLGY9bnQuZG90KHIsciksRT1udC5kb3QocixhKX1zLnk9ZipkLUEqRSxzLno9aCpFLUEqZDtsZXQgXz1oKmYtQSpBO2lmKF8hPT0wKXJldHVybiBzLnkvPV8scy56Lz1fLHMueD0xLXMueS1zLnosc312YXIgU1AsT1AsVlAsR1AsQlA9TygoKT0+e1hlKCk7SHQoKTthZSgpO210KCk7X2UoKTtTUD1uZXcgbCxPUD1uZXcgbCxWUD1uZXcgbDtHUD1Fc3R9KTt2YXIgSk4sV1AsRFA9TygoKT0+e2J0KCk7bXQoKTtWdCgpO0pOPXt9O0pOLmNhbGN1bGF0ZUFDTVI9ZnVuY3Rpb24odCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuaW5kaWNlcyxpPXQubWF4aW11bUluZGV4LG49Wih0LmNhY2hlU2l6ZSwyNCk7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImluZGljZXMgaXMgcmVxdWlyZWQuIik7bGV0IHM9ZS5sZW5ndGg7aWYoczwzfHxzJTMhPT0wKXRocm93IG5ldyBZKCJpbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7aWYoaTw9MCl0aHJvdyBuZXcgWSgibWF4aW11bUluZGV4IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYobjwzKXRocm93IG5ldyBZKCJjYWNoZVNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHdvLiIpO2lmKCFtKGkpKXtpPTA7bGV0IGE9MCxoPWVbYV07Zm9yKDthPHM7KWg+aSYmKGk9aCksKythLGg9ZVthXX1sZXQgbz1bXTtmb3IobGV0IGE9MDthPGkrMTthKyspb1thXT0wO2xldCByPW4rMTtmb3IobGV0IGE9MDthPHM7KythKXItb1tlW2FdXT5uJiYob1tlW2FdXT1yLCsrcik7cmV0dXJuKHItbisxKS8ocy8zKX07Sk4udGlwc2lmeT1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5pbmRpY2VzLGk9dC5tYXhpbXVtSW5kZXgsbj1aKHQuY2FjaGVTaXplLDI0KSxzO2Z1bmN0aW9uIG8oYyxnLFYsRCl7Zm9yKDtnLmxlbmd0aD49MTspe2xldCB3PWdbZy5sZW5ndGgtMV07aWYoZy5zcGxpY2UoZy5sZW5ndGgtMSwxKSxjW3ddLm51bUxpdmVUcmlhbmdsZXM+MClyZXR1cm4gd31mb3IoO3M8RDspe2lmKGNbc10ubnVtTGl2ZVRyaWFuZ2xlcz4wKXJldHVybisrcyxzLTE7KytzfXJldHVybi0xfWZ1bmN0aW9uIHIoYyxnLFYsRCx3LHgsSCl7bGV0IGo9LTEsWCx0dD0tMSxCPTA7Zm9yKDtCPFYubGVuZ3RoOyl7bGV0IEl0PVZbQl07RFtJdF0ubnVtTGl2ZVRyaWFuZ2xlcyYmKFg9MCx3LURbSXRdLnRpbWVTdGFtcCsyKkRbSXRdLm51bUxpdmVUcmlhbmdsZXM8PWcmJihYPXctRFtJdF0udGltZVN0YW1wKSwoWD50dHx8dHQ9PT0tMSkmJih0dD1YLGo9SXQpKSwrK0J9cmV0dXJuIGo9PT0tMT9vKEQseCxjLEgpOmp9aWYoIW0oZSkpdGhyb3cgbmV3IFkoImluZGljZXMgaXMgcmVxdWlyZWQuIik7bGV0IGE9ZS5sZW5ndGg7aWYoYTwzfHxhJTMhPT0wKXRocm93IG5ldyBZKCJpbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7aWYoaTw9MCl0aHJvdyBuZXcgWSgibWF4aW11bUluZGV4IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYobjwzKXRocm93IG5ldyBZKCJjYWNoZVNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHdvLiIpO2xldCBoPTAsQT0wLGQ9ZVtBXSxmPWE7aWYobShpKSloPWkrMTtlbHNle2Zvcig7QTxmOylkPmgmJihoPWQpLCsrQSxkPWVbQV07aWYoaD09PS0xKXJldHVybiAwOysraH1sZXQgRT1bXSxfO2ZvcihfPTA7XzxoO18rKylFW19dPXtudW1MaXZlVHJpYW5nbGVzOjAsdGltZVN0YW1wOjAsdmVydGV4VHJpYW5nbGVzOltdfTtBPTA7bGV0IFI9MDtmb3IoO0E8ZjspRVtlW0FdXS52ZXJ0ZXhUcmlhbmdsZXMucHVzaChSKSwrK0VbZVtBXV0ubnVtTGl2ZVRyaWFuZ2xlcyxFW2VbQSsxXV0udmVydGV4VHJpYW5nbGVzLnB1c2goUiksKytFW2VbQSsxXV0ubnVtTGl2ZVRyaWFuZ2xlcyxFW2VbQSsyXV0udmVydGV4VHJpYW5nbGVzLnB1c2goUiksKytFW2VbQSsyXV0ubnVtTGl2ZVRyaWFuZ2xlcywrK1IsQSs9MztsZXQgST0wLEM9bisxO3M9MTtsZXQgTj1bXSxUPVtdLEYsYixHPTAsTT1bXSxRPWEvMyxVPVtdO2ZvcihfPTA7XzxRO18rKylVW19dPSExO2xldCBrLHk7Zm9yKDtJIT09LTE7KXtOPVtdLGI9RVtJXSx5PWIudmVydGV4VHJpYW5nbGVzLmxlbmd0aDtmb3IobGV0IGM9MDtjPHk7KytjKWlmKFI9Yi52ZXJ0ZXhUcmlhbmdsZXNbY10sIVVbUl0pe1VbUl09ITAsQT1SK1IrUjtmb3IobGV0IGc9MDtnPDM7KytnKWs9ZVtBXSxOLnB1c2goayksVC5wdXNoKGspLE1bR109aywrK0csRj1FW2tdLC0tRi5udW1MaXZlVHJpYW5nbGVzLEMtRi50aW1lU3RhbXA+biYmKEYudGltZVN0YW1wPUMsKytDKSwrK0F9ST1yKGUsbixOLEUsQyxULGgpfXJldHVybiBNfTtXUD1KTn0pO2Z1bmN0aW9uIHpJKHQsZSxpLG4scyl7dFtlKytdPWksdFtlKytdPW4sdFtlKytdPW4sdFtlKytdPXMsdFtlKytdPXMsdFtlXT1pfWZ1bmN0aW9uIF9zdCh0KXtsZXQgZT10Lmxlbmd0aCxpPWUvMyo2LG49dGUuY3JlYXRlVHlwZWRBcnJheShlLGkpLHM9MDtmb3IobGV0IG89MDtvPGU7bys9MyxzKz02KXpJKG4scyx0W29dLHRbbysxXSx0W28rMl0pO3JldHVybiBufWZ1bmN0aW9uIFJzdCh0KXtsZXQgZT10Lmxlbmd0aDtpZihlPj0zKXtsZXQgaT0oZS0yKSo2LG49dGUuY3JlYXRlVHlwZWRBcnJheShlLGkpO3pJKG4sMCx0WzBdLHRbMV0sdFsyXSk7bGV0IHM9Njtmb3IobGV0IG89MztvPGU7KytvLHMrPTYpekkobixzLHRbby0xXSx0W29dLHRbby0yXSk7cmV0dXJuIG59cmV0dXJuIG5ldyBVaW50MTZBcnJheX1mdW5jdGlvbiBac3QodCl7aWYodC5sZW5ndGg+MCl7bGV0IGU9dC5sZW5ndGgtMSxpPShlLTEpKjYsbj10ZS5jcmVhdGVUeXBlZEFycmF5KGUsaSkscz10WzBdLG89MDtmb3IobGV0IHI9MTtyPGU7KytyLG8rPTYpekkobixvLHMsdFtyXSx0W3IrMV0pO3JldHVybiBufXJldHVybiBuZXcgVWludDE2QXJyYXl9ZnVuY3Rpb24gTVAodCl7bGV0IGU9e307Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSYmbSh0W2ldKSYmbSh0W2ldLnZhbHVlcykpe2xldCBuPXRbaV07ZVtpXT1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOm4uY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpuLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOm4ubm9ybWFsaXplLHZhbHVlczpbXX0pfXJldHVybiBlfWZ1bmN0aW9uIElzdCh0LGUsaSl7Zm9yKGxldCBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSYmbShlW25dKSYmbShlW25dLnZhbHVlcykpe2xldCBzPWVbbl07Zm9yKGxldCBvPTA7bzxzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU7KytvKXRbbl0udmFsdWVzLnB1c2gocy52YWx1ZXNbaSpzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUrb10pfX1mdW5jdGlvbiBITih0LGUpe2lmKG0oZSkpe2xldCBpPWUudmFsdWVzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuO3MrPTMpbC51bnBhY2soaSxzLEJhKSxhdC5tdWx0aXBseUJ5UG9pbnQodCxCYSxCYSksbC5wYWNrKEJhLGkscyl9fWZ1bmN0aW9uIHZOKHQsZSl7aWYobShlKSl7bGV0IGk9ZS52YWx1ZXMsbj1pLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cys9MylsLnVucGFjayhpLHMsQmEpLGx0Lm11bHRpcGx5QnlWZWN0b3IodCxCYSxCYSksQmE9bC5ub3JtYWxpemUoQmEsQmEpLGwucGFjayhCYSxpLHMpfX1mdW5jdGlvbiB1c3QodCxlKXtsZXQgaT10Lmxlbmd0aCxuPXt9LHM9dFswXVtlXS5hdHRyaWJ1dGVzLG87Zm9yKG8gaW4gcylpZihzLmhhc093blByb3BlcnR5KG8pJiZtKHNbb10pJiZtKHNbb10udmFsdWVzKSl7bGV0IHI9c1tvXSxhPXIudmFsdWVzLmxlbmd0aCxoPSEwO2ZvcihsZXQgQT0xO0E8aTsrK0Epe2xldCBkPXRbQV1bZV0uYXR0cmlidXRlc1tvXTtpZighbShkKXx8ci5jb21wb25lbnREYXRhdHlwZSE9PWQuY29tcG9uZW50RGF0YXR5cGV8fHIuY29tcG9uZW50c1BlckF0dHJpYnV0ZSE9PWQuY29tcG9uZW50c1BlckF0dHJpYnV0ZXx8ci5ub3JtYWxpemUhPT1kLm5vcm1hbGl6ZSl7aD0hMTticmVha31hKz1kLnZhbHVlcy5sZW5ndGh9aCYmKG5bb109bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpyLmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6ci5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTpyLm5vcm1hbGl6ZSx2YWx1ZXM6QXQuY3JlYXRlVHlwZWRBcnJheShyLmNvbXBvbmVudERhdGF0eXBlLGEpfSkpfXJldHVybiBufWZ1bmN0aW9uIHpOKHQsZSl7bGV0IGk9dC5sZW5ndGgsbixzLG8scixhPXRbMF0ubW9kZWxNYXRyaXgsaD1tKHRbMF1bZV0uaW5kaWNlcyksQT10WzBdW2VdLnByaW1pdGl2ZVR5cGU7Zm9yKHM9MTtzPGk7KytzKXtpZighYXQuZXF1YWxzKHRbc10ubW9kZWxNYXRyaXgsYSkpdGhyb3cgbmV3IFkoIkFsbCBpbnN0YW5jZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG1vZGVsTWF0cml4LiIpO2lmKG0odFtzXVtlXS5pbmRpY2VzKSE9PWgpdGhyb3cgbmV3IFkoIkFsbCBpbnN0YW5jZSBnZW9tZXRyaWVzIG11c3QgaGF2ZSBhbiBpbmRpY2VzIG9yIG5vdCBoYXZlIG9uZS4iKTtpZih0W3NdW2VdLnByaW1pdGl2ZVR5cGUhPT1BKXRocm93IG5ldyBZKCJBbGwgaW5zdGFuY2UgZ2VvbWV0cmllcyBtdXN0IGhhdmUgdGhlIHNhbWUgcHJpbWl0aXZlVHlwZS4iKX1sZXQgZD11c3QodCxlKSxmLEUsXztmb3IobiBpbiBkKWlmKGQuaGFzT3duUHJvcGVydHkobikpZm9yKGY9ZFtuXS52YWx1ZXMscj0wLHM9MDtzPGk7KytzKWZvcihFPXRbc11bZV0uYXR0cmlidXRlc1tuXS52YWx1ZXMsXz1FLmxlbmd0aCxvPTA7bzxfOysrbylmW3IrK109RVtvXTtsZXQgUjtpZihoKXtsZXQgVD0wO2ZvcihzPTA7czxpOysrcylUKz10W3NdW2VdLmluZGljZXMubGVuZ3RoO2xldCBGPXNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKG5ldyBzZSh7YXR0cmlidXRlczpkLHByaW1pdGl2ZVR5cGU6bmUuUE9JTlRTfSkpLGI9dGUuY3JlYXRlVHlwZWRBcnJheShGLFQpLEc9MCxNPTA7Zm9yKHM9MDtzPGk7KytzKXtsZXQgUT10W3NdW2VdLmluZGljZXMsVT1RLmxlbmd0aDtmb3Iocj0wO3I8VTsrK3IpYltHKytdPU0rUVtyXTtNKz1zZS5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0W3NdW2VdKX1SPWJ9bGV0IEk9bmV3IGwsQz0wLE47Zm9yKHM9MDtzPGk7KytzKXtpZihOPXRbc11bZV0uYm91bmRpbmdTcGhlcmUsIW0oTikpe0k9dm9pZCAwO2JyZWFrfWwuYWRkKE4uY2VudGVyLEksSSl9aWYobShJKSlmb3IobC5kaXZpZGVCeVNjYWxhcihJLGksSSkscz0wO3M8aTsrK3Mpe049dFtzXVtlXS5ib3VuZGluZ1NwaGVyZTtsZXQgVD1sLm1hZ25pdHVkZShsLnN1YnRyYWN0KE4uY2VudGVyLEksQ3N0KSkrTi5yYWRpdXM7VD5DJiYoQz1UKX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmQsaW5kaWNlczpSLHByaW1pdGl2ZVR5cGU6QSxib3VuZGluZ1NwaGVyZTptKEkpP25ldyBOdChJLEMpOnZvaWQgMH0pfWZ1bmN0aW9uIE5zdCh0KXtpZihtKHQuaW5kaWNlcykpcmV0dXJuIHQ7bGV0IGU9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBZKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgdGhyZWUuIik7aWYoZSUzIT09MCl0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7bGV0IGk9dGUuY3JlYXRlVHlwZWRBcnJheShlLGUpO2ZvcihsZXQgbj0wO248ZTsrK24paVtuXT1uO3JldHVybiB0LmluZGljZXM9aSx0fWZ1bmN0aW9uIGJzdCh0KXtsZXQgZT1zZS5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDMpdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0aHJlZS4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMikqMyk7aVswXT0xLGlbMV09MCxpWzJdPTI7bGV0IG49Mztmb3IobGV0IHM9MztzPGU7KytzKWlbbisrXT1zLTEsaVtuKytdPTAsaVtuKytdPXM7cmV0dXJuIHQuaW5kaWNlcz1pLHQucHJpbWl0aXZlVHlwZT1uZS5UUklBTkdMRVMsdH1mdW5jdGlvbiBGc3QodCl7bGV0IGU9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBZKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgMy4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMikqMyk7aVswXT0wLGlbMV09MSxpWzJdPTIsZT4zJiYoaVszXT0wLGlbNF09MixpWzVdPTMpO2xldCBuPTY7Zm9yKGxldCBzPTM7czxlLTE7cys9MilpW24rK109cyxpW24rK109cy0xLGlbbisrXT1zKzEscysyPGUmJihpW24rK109cyxpW24rK109cysxLGlbbisrXT1zKzIpO3JldHVybiB0LmluZGljZXM9aSx0LnByaW1pdGl2ZVR5cGU9bmUuVFJJQU5HTEVTLHR9ZnVuY3Rpb24gWXN0KHQpe2lmKG0odC5pbmRpY2VzKSlyZXR1cm4gdDtsZXQgZT1zZS5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDIpdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0d28uIik7aWYoZSUyIT09MCl0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMi4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsZSk7Zm9yKGxldCBuPTA7bjxlOysrbilpW25dPW47cmV0dXJuIHQuaW5kaWNlcz1pLHR9ZnVuY3Rpb24gU3N0KHQpe2xldCBlPXNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMSkqMik7aVswXT0wLGlbMV09MTtsZXQgbj0yO2ZvcihsZXQgcz0yO3M8ZTsrK3MpaVtuKytdPXMtMSxpW24rK109cztyZXR1cm4gdC5pbmRpY2VzPWksdC5wcmltaXRpdmVUeXBlPW5lLkxJTkVTLHR9ZnVuY3Rpb24gT3N0KHQpe2xldCBlPXNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsZSoyKTtpWzBdPTAsaVsxXT0xO2xldCBuPTI7Zm9yKGxldCBzPTI7czxlOysrcylpW24rK109cy0xLGlbbisrXT1zO3JldHVybiBpW24rK109ZS0xLGlbbl09MCx0LmluZGljZXM9aSx0LnByaW1pdGl2ZVR5cGU9bmUuTElORVMsdH1mdW5jdGlvbiBWc3QodCl7c3dpdGNoKHQucHJpbWl0aXZlVHlwZSl7Y2FzZSBuZS5UUklBTkdMRV9GQU46cmV0dXJuIGJzdCh0KTtjYXNlIG5lLlRSSUFOR0xFX1NUUklQOnJldHVybiBGc3QodCk7Y2FzZSBuZS5UUklBTkdMRVM6cmV0dXJuIE5zdCh0KTtjYXNlIG5lLkxJTkVfU1RSSVA6cmV0dXJuIFNzdCh0KTtjYXNlIG5lLkxJTkVfTE9PUDpyZXR1cm4gT3N0KHQpO2Nhc2UgbmUuTElORVM6cmV0dXJuIFlzdCh0KX1yZXR1cm4gdH1mdW5jdGlvbiBDYyh0LGUpe01hdGguYWJzKHQueSk8TC5FUFNJTE9ONiYmKGU/dC55PS1MLkVQU0lMT042OnQueT1MLkVQU0lMT042KX1mdW5jdGlvbiBHc3QodCxlLGkpe2lmKHQueSE9PTAmJmUueSE9PTAmJmkueSE9PTApe0NjKHQsdC55PDApLENjKGUsZS55PDApLENjKGksaS55PDApO3JldHVybn1sZXQgbj1NYXRoLmFicyh0LnkpLHM9TWF0aC5hYnMoZS55KSxvPU1hdGguYWJzKGkueSkscjtuPnM/bj5vP3I9TC5zaWduKHQueSk6cj1MLnNpZ24oaS55KTpzPm8/cj1MLnNpZ24oZS55KTpyPUwuc2lnbihpLnkpO2xldCBhPXI8MDtDYyh0LGEpLENjKGUsYSksQ2MoaSxhKX1mdW5jdGlvbiBIcih0LGUsaSxuKXtsLmFkZCh0LGwubXVsdGlwbHlCeVNjYWxhcihsLnN1YnRyYWN0KGUsdCx5UCksdC55Lyh0LnktZS55KSx5UCksaSksbC5jbG9uZShpLG4pLENjKGksITApLENjKG4sITEpfWZ1bmN0aW9uIEJzdCh0LGUsaSl7aWYodC54Pj0wfHxlLng+PTB8fGkueD49MClyZXR1cm47R3N0KHQsZSxpKTtsZXQgbj10Lnk8MCxzPWUueTwwLG89aS55PDAscj0wO3IrPW4/MTowLHIrPXM/MTowLHIrPW8/MTowO2xldCBhPUtOLmluZGljZXM7cj09PTE/KGFbMV09MyxhWzJdPTQsYVs1XT02LGFbN109NixhWzhdPTUsbj8oSHIodCxlLHlsLHhsKSxIcih0LGksd2wsUGwpLGFbMF09MCxhWzNdPTEsYVs0XT0yLGFbNl09MSk6cz8oSHIoZSxpLHlsLHhsKSxIcihlLHQsd2wsUGwpLGFbMF09MSxhWzNdPTIsYVs0XT0wLGFbNl09Mik6byYmKEhyKGksdCx5bCx4bCksSHIoaSxlLHdsLFBsKSxhWzBdPTIsYVszXT0wLGFbNF09MSxhWzZdPTApKTpyPT09MiYmKGFbMl09NCxhWzRdPTQsYVs1XT0zLGFbN109NSxhWzhdPTYsbj9zP298fChIcihpLHQseWwseGwpLEhyKGksZSx3bCxQbCksYVswXT0wLGFbMV09MSxhWzNdPTAsYVs2XT0yKTooSHIoZSxpLHlsLHhsKSxIcihlLHQsd2wsUGwpLGFbMF09MixhWzFdPTAsYVszXT0yLGFbNl09MSk6KEhyKHQsZSx5bCx4bCksSHIodCxpLHdsLFBsKSxhWzBdPTEsYVsxXT0yLGFbM109MSxhWzZdPTApKTtsZXQgaD1LTi5wb3NpdGlvbnM7cmV0dXJuIGhbMF09dCxoWzFdPWUsaFsyXT1pLGgubGVuZ3RoPTMsKHI9PT0xfHxyPT09MikmJihoWzNdPXlsLGhbNF09d2wsaFs1XT14bCxoWzZdPVBsLGgubGVuZ3RoPTcpLEtOfWZ1bmN0aW9uIHdQKHQsZSl7bGV0IGk9dC5hdHRyaWJ1dGVzO2lmKGkucG9zaXRpb24udmFsdWVzLmxlbmd0aD09PTApcmV0dXJuO2ZvcihsZXQgcyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkocykmJm0oaVtzXSkmJm0oaVtzXS52YWx1ZXMpKXtsZXQgbz1pW3NdO28udmFsdWVzPUF0LmNyZWF0ZVR5cGVkQXJyYXkoby5jb21wb25lbnREYXRhdHlwZSxvLnZhbHVlcyl9bGV0IG49c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7cmV0dXJuIHQuaW5kaWNlcz10ZS5jcmVhdGVUeXBlZEFycmF5KG4sdC5pbmRpY2VzKSxlJiYodC5ib3VuZGluZ1NwaGVyZT1OdC5mcm9tVmVydGljZXMoaS5wb3NpdGlvbi52YWx1ZXMpKSx0fWZ1bmN0aW9uIEttKHQpe2xldCBlPXQuYXR0cmlidXRlcyxpPXt9O2ZvcihsZXQgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikmJm0oZVtuXSkmJm0oZVtuXS52YWx1ZXMpKXtsZXQgcz1lW25dO2lbbl09bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpzLmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6cy5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTpzLm5vcm1hbGl6ZSx2YWx1ZXM6W119KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmksaW5kaWNlczpbXSxwcmltaXRpdmVUeXBlOnQucHJpbWl0aXZlVHlwZX0pfWZ1bmN0aW9uIHRiKHQsZSxpKXtsZXQgbj1tKHQuZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUpO2U9d1AoZSxuKSxpPXdQKGksbiksbShpKSYmIW0oZSk/dC5nZW9tZXRyeT1pOiFtKGkpJiZtKGUpP3QuZ2VvbWV0cnk9ZToodC53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5PWUsdC5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5PWksdC5nZW9tZXRyeT12b2lkIDApfWZ1bmN0aW9uIGViKHQsZSl7bGV0IGk9bmV3IHQsbj1uZXcgdCxzPW5ldyB0O3JldHVybiBmdW5jdGlvbihvLHIsYSxoLEEsZCxmLEUpe2xldCBfPXQuZnJvbUFycmF5KEEsbyplLGkpLFI9dC5mcm9tQXJyYXkoQSxyKmUsbiksST10LmZyb21BcnJheShBLGEqZSxzKTt0Lm11bHRpcGx5QnlTY2FsYXIoXyxoLngsXyksdC5tdWx0aXBseUJ5U2NhbGFyKFIsaC55LFIpLHQubXVsdGlwbHlCeVNjYWxhcihJLGgueixJKTtsZXQgQz10LmFkZChfLFIsXyk7aWYodC5hZGQoQyxJLEMpLEUpdHJ5e3Qubm9ybWFsaXplKEMsQyl9Y2F0Y2goTil7dGhyb3cgbmV3IFkoTil9dC5wYWNrKEMsZCxmKmUpfX1mdW5jdGlvbiBqSSh0LGUsaSxuLHMsbyxyLGEsaCxBLGQsZixFLF8sUixJKXtpZighbShvKSYmIW0ocikmJiFtKGEpJiYhbShoKSYmIW0oQSkmJl89PT0wKXJldHVybjtsZXQgQz1sLmZyb21BcnJheShzLHQqMyxuXyksTj1sLmZyb21BcnJheShzLGUqMyxYTiksVD1sLmZyb21BcnJheShzLGkqMyxxTiksRj1HUChuLEMsTixULE1zdCk7aWYobShGKSl7aWYobShvKSYmdkkodCxlLGksRixvLGYubm9ybWFsLnZhbHVlcyxJLCEwKSxtKEEpKXtsZXQgYj1sLmZyb21BcnJheShBLHQqMyxuXyksRz1sLmZyb21BcnJheShBLGUqMyxYTiksTT1sLmZyb21BcnJheShBLGkqMyxxTik7bC5tdWx0aXBseUJ5U2NhbGFyKGIsRi54LGIpLGwubXVsdGlwbHlCeVNjYWxhcihHLEYueSxHKSxsLm11bHRpcGx5QnlTY2FsYXIoTSxGLnosTSk7bGV0IFE7IWwuZXF1YWxzKGIsbC5aRVJPKXx8IWwuZXF1YWxzKEcsbC5aRVJPKXx8IWwuZXF1YWxzKE0sbC5aRVJPKT8oUT1sLmFkZChiLEcsYiksbC5hZGQoUSxNLFEpLGwubm9ybWFsaXplKFEsUSkpOihRPW5fLFEueD0wLFEueT0wLFEuej0wKSxsLnBhY2soUSxmLmV4dHJ1ZGVEaXJlY3Rpb24udmFsdWVzLEkqMyl9aWYobShkKSYmRHN0KHQsZSxpLEYsZCxmLmFwcGx5T2Zmc2V0LnZhbHVlcyxJKSxtKHIpJiZ2SSh0LGUsaSxGLHIsZi50YW5nZW50LnZhbHVlcyxJLCEwKSxtKGEpJiZ2SSh0LGUsaSxGLGEsZi5iaXRhbmdlbnQudmFsdWVzLEksITApLG0oaCkmJnZQKHQsZSxpLEYsaCxmLnN0LnZhbHVlcyxJKSxfPjApZm9yKGxldCBiPTA7YjxfO2IrKyl7bGV0IEc9RVtiXTtVc3QodCxlLGksRixJLFJbR10sZltHXSl9fX1mdW5jdGlvbiBVc3QodCxlLGksbixzLG8scil7bGV0IGE9by5jb21wb25lbnRzUGVyQXR0cmlidXRlLGg9by52YWx1ZXMsQT1yLnZhbHVlcztzd2l0Y2goYSl7Y2FzZSA0OldzdCh0LGUsaSxuLGgsQSxzLCExKTticmVhaztjYXNlIDM6dkkodCxlLGksbixoLEEscywhMSk7YnJlYWs7Y2FzZSAyOnZQKHQsZSxpLG4saCxBLHMsITEpO2JyZWFrO2RlZmF1bHQ6QVtzXT1oW3RdKm4ueCtoW2VdKm4ueStoW2ldKm4uen19ZnVuY3Rpb24gQ0EodCxlLGksbixzLG8pe2xldCByPXQucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zO2lmKHMhPT0tMSl7bGV0IGE9bltzXSxoPWlbYV07cmV0dXJuIGg9PT0tMT8oaVthXT1yLHQucG9zaXRpb24udmFsdWVzLnB1c2goby54LG8ueSxvLnopLGUucHVzaChyKSxyKTooZS5wdXNoKGgpLGgpfXJldHVybiB0LnBvc2l0aW9uLnZhbHVlcy5wdXNoKG8ueCxvLnksby56KSxlLnB1c2gocikscn1mdW5jdGlvbiB4UCh0KXtsZXQgZT10Lmdlb21ldHJ5LGk9ZS5hdHRyaWJ1dGVzLG49aS5wb3NpdGlvbi52YWx1ZXMscz1tKGkubm9ybWFsKT9pLm5vcm1hbC52YWx1ZXM6dm9pZCAwLG89bShpLmJpdGFuZ2VudCk/aS5iaXRhbmdlbnQudmFsdWVzOnZvaWQgMCxyPW0oaS50YW5nZW50KT9pLnRhbmdlbnQudmFsdWVzOnZvaWQgMCxhPW0oaS5zdCk/aS5zdC52YWx1ZXM6dm9pZCAwLGg9bShpLmV4dHJ1ZGVEaXJlY3Rpb24pP2kuZXh0cnVkZURpcmVjdGlvbi52YWx1ZXM6dm9pZCAwLEE9bShpLmFwcGx5T2Zmc2V0KT9pLmFwcGx5T2Zmc2V0LnZhbHVlczp2b2lkIDAsZD1lLmluZGljZXMsZj1bXTtmb3IobGV0IFEgaW4gaSlpLmhhc093blByb3BlcnR5KFEpJiYhUXN0W1FdJiZtKGlbUV0pJiZmLnB1c2goUSk7bGV0IEU9Zi5sZW5ndGgsXz1LbShlKSxSPUttKGUpLEksQyxOLFQsRixiPVtdO2IubGVuZ3RoPW4ubGVuZ3RoLzM7bGV0IEc9W107Zm9yKEcubGVuZ3RoPW4ubGVuZ3RoLzMsRj0wO0Y8Yi5sZW5ndGg7KytGKWJbRl09LTEsR1tGXT0tMTtsZXQgTT1kLmxlbmd0aDtmb3IoRj0wO0Y8TTtGKz0zKXtsZXQgUT1kW0ZdLFU9ZFtGKzFdLGs9ZFtGKzJdLHk9bC5mcm9tQXJyYXkobixRKjMpLGM9bC5mcm9tQXJyYXkobixVKjMpLGc9bC5mcm9tQXJyYXkobixrKjMpLFY9QnN0KHksYyxnKTtpZihtKFYpJiZWLnBvc2l0aW9ucy5sZW5ndGg+Myl7bGV0IEQ9Vi5wb3NpdGlvbnMsdz1WLmluZGljZXMseD13Lmxlbmd0aDtmb3IobGV0IEg9MDtIPHg7KytIKXtsZXQgaj13W0hdLFg9RFtqXTtYLnk8MD8oST1SLmF0dHJpYnV0ZXMsQz1SLmluZGljZXMsTj1iKTooST1fLmF0dHJpYnV0ZXMsQz1fLmluZGljZXMsTj1HKSxUPUNBKEksQyxOLGQsajwzP0YrajotMSxYKSxqSShRLFUsayxYLG4scyxyLG8sYSxoLEEsSSxmLEUsaSxUKX19ZWxzZSBtKFYpJiYoeT1WLnBvc2l0aW9uc1swXSxjPVYucG9zaXRpb25zWzFdLGc9Vi5wb3NpdGlvbnNbMl0pLHkueTwwPyhJPVIuYXR0cmlidXRlcyxDPVIuaW5kaWNlcyxOPWIpOihJPV8uYXR0cmlidXRlcyxDPV8uaW5kaWNlcyxOPUcpLFQ9Q0EoSSxDLE4sZCxGLHkpLGpJKFEsVSxrLHksbixzLHIsbyxhLGgsQSxJLGYsRSxpLFQpLFQ9Q0EoSSxDLE4sZCxGKzEsYyksakkoUSxVLGssYyxuLHMscixvLGEsaCxBLEksZixFLGksVCksVD1DQShJLEMsTixkLEYrMixnKSxqSShRLFUsayxnLG4scyxyLG8sYSxoLEEsSSxmLEUsaSxUKX10Yih0LFIsXyl9ZnVuY3Rpb24gem0odCxlLGksbixzLG8scil7aWYoIW0ocikpcmV0dXJuO2xldCBhPWwuZnJvbUFycmF5KG4sdCozLG5fKTtsLmVxdWFsc0Vwc2lsb24oYSxpLEwuRVBTSUxPTjEwKT9vLmFwcGx5T2Zmc2V0LnZhbHVlc1tzXT1yW3RdOm8uYXBwbHlPZmZzZXQudmFsdWVzW3NdPXJbZV19ZnVuY3Rpb24gUFAodCl7bGV0IGU9dC5nZW9tZXRyeSxpPWUuYXR0cmlidXRlcyxuPWkucG9zaXRpb24udmFsdWVzLHM9bShpLmFwcGx5T2Zmc2V0KT9pLmFwcGx5T2Zmc2V0LnZhbHVlczp2b2lkIDAsbz1lLmluZGljZXMscj1LbShlKSxhPUttKGUpLGgsQT1vLmxlbmd0aCxkPVtdO2QubGVuZ3RoPW4ubGVuZ3RoLzM7bGV0IGY9W107Zm9yKGYubGVuZ3RoPW4ubGVuZ3RoLzMsaD0wO2g8ZC5sZW5ndGg7KytoKWRbaF09LTEsZltoXT0tMTtmb3IoaD0wO2g8QTtoKz0yKXtsZXQgRT1vW2hdLF89b1toKzFdLFI9bC5mcm9tQXJyYXkobixFKjMsbl8pLEk9bC5mcm9tQXJyYXkobixfKjMsWE4pLEM7TWF0aC5hYnMoUi55KTxMLkVQU0lMT042JiYoUi55PDA/Ui55PS1MLkVQU0lMT042OlIueT1MLkVQU0lMT042KSxNYXRoLmFicyhJLnkpPEwuRVBTSUxPTjYmJihJLnk8MD9JLnk9LUwuRVBTSUxPTjY6SS55PUwuRVBTSUxPTjYpO2xldCBOPXIuYXR0cmlidXRlcyxUPXIuaW5kaWNlcyxGPWYsYj1hLmF0dHJpYnV0ZXMsRz1hLmluZGljZXMsTT1kLFE9bm8ubGluZVNlZ21lbnRQbGFuZShSLEkselAscU4pO2lmKG0oUSkpe2xldCBVPWwubXVsdGlwbHlCeVNjYWxhcihsLlVOSVRfWSw1KkwuRVBTSUxPTjksa3N0KTtSLnk8MCYmKGwubmVnYXRlKFUsVSksTj1hLmF0dHJpYnV0ZXMsVD1hLmluZGljZXMsRj1kLGI9ci5hdHRyaWJ1dGVzLEc9ci5pbmRpY2VzLE09Zik7bGV0IGs9bC5hZGQoUSxVLExzdCk7Qz1DQShOLFQsRixvLGgsUiksem0oRSxfLFIsbixDLE4scyksQz1DQShOLFQsRixvLC0xLGspLHptKEUsXyxrLG4sQyxOLHMpLGwubmVnYXRlKFUsVSksbC5hZGQoUSxVLGspLEM9Q0EoYixHLE0sbywtMSxrKSx6bShFLF8sayxuLEMsYixzKSxDPUNBKGIsRyxNLG8saCsxLEkpLHptKEUsXyxJLG4sQyxiLHMpfWVsc2V7bGV0IFUsayx5O1IueTwwPyhVPWEuYXR0cmlidXRlcyxrPWEuaW5kaWNlcyx5PWQpOihVPXIuYXR0cmlidXRlcyxrPXIuaW5kaWNlcyx5PWYpLEM9Q0EoVSxrLHksbyxoLFIpLHptKEUsXyxSLG4sQyxVLHMpLEM9Q0EoVSxrLHksbyxoKzEsSSksem0oRSxfLEksbixDLFUscyl9fXRiKHQsYSxyKX1mdW5jdGlvbiBIUCh0KXtsZXQgZT10LmF0dHJpYnV0ZXMsaT1lLnBvc2l0aW9uLnZhbHVlcyxuPWUucHJldlBvc2l0aW9uLnZhbHVlcyxzPWUubmV4dFBvc2l0aW9uLnZhbHVlcyxvPWkubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bztyKz0zKXtsZXQgYT1sLnVucGFjayhpLHIsS1ApO2lmKGEueD4wKWNvbnRpbnVlO2xldCBoPWwudW5wYWNrKG4scixYUCk7KGEueTwwJiZoLnk+MHx8YS55PjAmJmgueTwwKSYmKHItMz4wPyhuW3JdPWlbci0zXSxuW3IrMV09aVtyLTJdLG5bcisyXT1pW3ItMV0pOmwucGFjayhhLG4scikpO2xldCBBPWwudW5wYWNrKHMsciwkTik7KGEueTwwJiZBLnk+MHx8YS55PjAmJkEueTwwKSYmKHIrMzxvPyhzW3JdPWlbciszXSxzW3IrMV09aVtyKzRdLHNbcisyXT1pW3IrNV0pOmwucGFjayhhLHMscikpfX1mdW5jdGlvbiBqc3QodCl7bGV0IGU9dC5nZW9tZXRyeSxpPWUuYXR0cmlidXRlcyxuPWkucG9zaXRpb24udmFsdWVzLHM9aS5wcmV2UG9zaXRpb24udmFsdWVzLG89aS5uZXh0UG9zaXRpb24udmFsdWVzLHI9aS5leHBhbmRBbmRXaWR0aC52YWx1ZXMsYT1tKGkuc3QpP2kuc3QudmFsdWVzOnZvaWQgMCxoPW0oaS5jb2xvcik/aS5jb2xvci52YWx1ZXM6dm9pZCAwLEE9S20oZSksZD1LbShlKSxmLEUsXyxSPSExLEk9bi5sZW5ndGgvMztmb3IoZj0wO2Y8STtmKz00KXtsZXQgQz1mLE49ZisyLFQ9bC5mcm9tQXJyYXkobixDKjMsS1ApLEY9bC5mcm9tQXJyYXkobixOKjMsWFApO2lmKE1hdGguYWJzKFQueSk8SEkpZm9yKFQueT1ISSooRi55PDA/LTE6MSksbltmKjMrMV09VC55LG5bKGYrMSkqMysxXT1ULnksRT1DKjM7RTxDKjMrNCozO0UrPTMpc1tFXT1uW2YqM10sc1tFKzFdPW5bZiozKzFdLHNbRSsyXT1uW2YqMysyXTtpZihNYXRoLmFicyhGLnkpPEhJKWZvcihGLnk9SEkqKFQueTwwPy0xOjEpLG5bKGYrMikqMysxXT1GLnksblsoZiszKSozKzFdPUYueSxFPUMqMztFPEMqMys0KjM7RSs9MylvW0VdPW5bKGYrMikqM10sb1tFKzFdPW5bKGYrMikqMysxXSxvW0UrMl09blsoZisyKSozKzJdO2xldCBiPUEuYXR0cmlidXRlcyxHPUEuaW5kaWNlcyxNPWQuYXR0cmlidXRlcyxRPWQuaW5kaWNlcyxVPW5vLmxpbmVTZWdtZW50UGxhbmUoVCxGLHpQLHdzdCk7aWYobShVKSl7Uj0hMDtsZXQgaz1sLm11bHRpcGx5QnlTY2FsYXIobC5VTklUX1ksSnN0LHhzdCk7VC55PDAmJihsLm5lZ2F0ZShrLGspLGI9ZC5hdHRyaWJ1dGVzLEc9ZC5pbmRpY2VzLE09QS5hdHRyaWJ1dGVzLFE9QS5pbmRpY2VzKTtsZXQgeT1sLmFkZChVLGssUHN0KTtiLnBvc2l0aW9uLnZhbHVlcy5wdXNoKFQueCxULnksVC56LFQueCxULnksVC56KSxiLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxiLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxiLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaChzW0MqM10sc1tDKjMrMV0sc1tDKjMrMl0pLGIucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHNbQyozKzNdLHNbQyozKzRdLHNbQyozKzVdKSxiLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaChULngsVC55LFQueixULngsVC55LFQueiksYi5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLGIubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxiLm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaCh5LngseS55LHkueiksYi5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLGwubmVnYXRlKGssayksbC5hZGQoVSxrLHkpLE0ucG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLE0ucG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLE0ucG9zaXRpb24udmFsdWVzLnB1c2goRi54LEYueSxGLnosRi54LEYueSxGLnopLE0ucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxNLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaCh5LngseS55LHkueiksTS5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLE0ucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxNLm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaChGLngsRi55LEYueixGLngsRi55LEYueiksTS5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2gob1tOKjNdLG9bTiozKzFdLG9bTiozKzJdKSxNLm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaChvW04qMyszXSxvW04qMys0XSxvW04qMys1XSk7bGV0IGM9bnQuZnJvbUFycmF5KHIsQyoyLEpQKSxnPU1hdGguYWJzKGMueSk7Yi5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSxnLDEsZyksYi5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSwtZywxLC1nKSxNLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLGcsMSxnKSxNLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLC1nLDEsLWcpO2xldCBWPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KFUsVCwkTikpO2lmKFYvPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEYsVCwkTikpLG0oaCkpe2xldCBEPWllLmZyb21BcnJheShoLEMqNCxqUCksdz1pZS5mcm9tQXJyYXkoaCxOKjQsalApLHg9TC5sZXJwKEQueCx3LngsViksSD1MLmxlcnAoRC55LHcueSxWKSxqPUwubGVycChELnosdy56LFYpLFg9TC5sZXJwKEQudyx3LncsVik7Zm9yKEU9Qyo0O0U8Qyo0KzIqNDsrK0UpYi5jb2xvci52YWx1ZXMucHVzaChoW0VdKTtmb3IoYi5jb2xvci52YWx1ZXMucHVzaCh4LEgsaixYKSxiLmNvbG9yLnZhbHVlcy5wdXNoKHgsSCxqLFgpLE0uY29sb3IudmFsdWVzLnB1c2goeCxILGosWCksTS5jb2xvci52YWx1ZXMucHVzaCh4LEgsaixYKSxFPU4qNDtFPE4qNCsyKjQ7KytFKU0uY29sb3IudmFsdWVzLnB1c2goaFtFXSl9aWYobShhKSl7bGV0IEQ9bnQuZnJvbUFycmF5KGEsQyoyLEpQKSx3PW50LmZyb21BcnJheShhLChmKzMpKjIseXN0KSx4PUwubGVycChELngsdy54LFYpO2ZvcihFPUMqMjtFPEMqMisyKjI7KytFKWIuc3QudmFsdWVzLnB1c2goYVtFXSk7Zm9yKGIuc3QudmFsdWVzLnB1c2goeCxELnkpLGIuc3QudmFsdWVzLnB1c2goeCx3LnkpLE0uc3QudmFsdWVzLnB1c2goeCxELnkpLE0uc3QudmFsdWVzLnB1c2goeCx3LnkpLEU9TioyO0U8TioyKzIqMjsrK0UpTS5zdC52YWx1ZXMucHVzaChhW0VdKX1fPWIucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLTQsRy5wdXNoKF8sXysyLF8rMSksRy5wdXNoKF8rMSxfKzIsXyszKSxfPU0ucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLTQsUS5wdXNoKF8sXysyLF8rMSksUS5wdXNoKF8rMSxfKzIsXyszKX1lbHNle2xldCBrLHk7Zm9yKFQueTwwPyhrPWQuYXR0cmlidXRlcyx5PWQuaW5kaWNlcyk6KGs9QS5hdHRyaWJ1dGVzLHk9QS5pbmRpY2VzKSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKFQueCxULnksVC56KSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKFQueCxULnksVC56KSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKEYueCxGLnksRi56KSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKEYueCxGLnksRi56KSxFPWYqMztFPGYqMys0KjM7KytFKWsucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHNbRV0pLGsubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKG9bRV0pO2ZvcihFPWYqMjtFPGYqMis0KjI7KytFKWsuZXhwYW5kQW5kV2lkdGgudmFsdWVzLnB1c2gocltFXSksbShhKSYmay5zdC52YWx1ZXMucHVzaChhW0VdKTtpZihtKGgpKWZvcihFPWYqNDtFPGYqNCs0KjQ7KytFKWsuY29sb3IudmFsdWVzLnB1c2goaFtFXSk7Xz1rLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LHkucHVzaChfLF8rMixfKzEpLHkucHVzaChfKzEsXysyLF8rMyl9fVImJihIUChkKSxIUChBKSksdGIodCxkLEEpfXZhciBRbyxVUCxwc3Qsak4sQmEseEksUEksQ3N0LGpyLGVfLEhtLHZtLGdzdCxRUCxUc3QsaV8sR2Esa1AsTFAsSkkseVAseWwsd2wseGwsUGwsS04sV3N0LHZJLHZQLERzdCxuXyxYTixxTixNc3QsUXN0LHpQLGtzdCxMc3QsSlAseXN0LEtQLFhQLCROLHdzdCx4c3QsUHN0LGpQLEpzdCxISSx3aSxnQT1PKCgpPT57b2goKTtCUCgpO19pKCk7WGUoKTtIdCgpO1ZzKCk7cmkoKTtvaSgpO2J0KCk7bXQoKTtWdCgpO1RsKCk7ekEoKTt5aSgpO2ppKCk7ZEkoKTtEaSgpO25jKCk7TWwoKTtfZSgpO2RuKCk7RmkoKTtuaCgpO1hpKCk7RFAoKTtRbz17fTtRby50b1dpcmVmcmFtZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGU9dC5pbmRpY2VzO2lmKG0oZSkpe3N3aXRjaCh0LnByaW1pdGl2ZVR5cGUpe2Nhc2UgbmUuVFJJQU5HTEVTOnQuaW5kaWNlcz1fc3QoZSk7YnJlYWs7Y2FzZSBuZS5UUklBTkdMRV9TVFJJUDp0LmluZGljZXM9UnN0KGUpO2JyZWFrO2Nhc2UgbmUuVFJJQU5HTEVfRkFOOnQuaW5kaWNlcz1ac3QoZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiZ2VvbWV0cnkucHJpbWl0aXZlVHlwZSBtdXN0IGJlIFRSSUFOR0xFUywgVFJJQU5HTEVfU1RSSVAsIG9yIFRSSUFOR0xFX0ZBTi4iKX10LnByaW1pdGl2ZVR5cGU9bmUuTElORVN9cmV0dXJuIHR9O1FvLmNyZWF0ZUxpbmVTZWdtZW50c0ZvclZlY3RvcnM9ZnVuY3Rpb24odCxlLGkpe2lmKGU9WihlLCJub3JtYWwiKSwhbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXNbZV0pKXRocm93IG5ldyBZKGBnZW9tZXRyeS5hdHRyaWJ1dGVzIG11c3QgaGF2ZSBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdHRyaWJ1dGVOYW1lIHBhcmFtZXRlciwgJHtlfS5gKTtpPVooaSwxZTQpO2xldCBuPXQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscz10LmF0dHJpYnV0ZXNbZV0udmFsdWVzLG89bi5sZW5ndGgscj1uZXcgRmxvYXQ2NEFycmF5KDIqbyksYT0wO2ZvcihsZXQgZD0wO2Q8bztkKz0zKXJbYSsrXT1uW2RdLHJbYSsrXT1uW2QrMV0sclthKytdPW5bZCsyXSxyW2ErK109bltkXStzW2RdKmksclthKytdPW5bZCsxXStzW2QrMV0qaSxyW2ErK109bltkKzJdK3NbZCsyXSppO2xldCBoLEE9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbShBKSYmKGg9bmV3IE50KEEuY2VudGVyLEEucmFkaXVzK2kpKSxuZXcgc2Uoe2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cn0pfSxwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOmh9KX07UW8uY3JlYXRlQXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT1bInBvc2l0aW9uIiwicG9zaXRpb25IaWdoIiwicG9zaXRpb25Mb3ciLCJwb3NpdGlvbjNESGlnaCIsInBvc2l0aW9uM0RMb3ciLCJwb3NpdGlvbjJESGlnaCIsInBvc2l0aW9uMkRMb3ciLCJwaWNrQ29sb3IiLCJub3JtYWwiLCJzdCIsInRhbmdlbnQiLCJiaXRhbmdlbnQiLCJleHRydWRlRGlyZWN0aW9uIiwiY29tcHJlc3NlZEF0dHJpYnV0ZXMiXSxpPXQuYXR0cmlidXRlcyxuPXt9LHM9MCxvLHI9ZS5sZW5ndGg7Zm9yKG89MDtvPHI7KytvKXtsZXQgYT1lW29dO20oaVthXSkmJihuW2FdPXMrKyl9Zm9yKGxldCBhIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShhKSYmIW0oblthXSkmJihuW2FdPXMrKyk7cmV0dXJuIG59O1FvLnJlb3JkZXJGb3JQcmVWZXJ0ZXhDYWNoZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGU9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCksaT10LmluZGljZXM7aWYobShpKSl7bGV0IG49bmV3IEludDMyQXJyYXkoZSk7Zm9yKGxldCBFPTA7RTxlO0UrKyluW0VdPS0xO2xldCBzPWksbz1zLmxlbmd0aCxyPXRlLmNyZWF0ZVR5cGVkQXJyYXkoZSxvKSxhPTAsaD0wLEE9MCxkO2Zvcig7YTxvOylkPW5bc1thXV0sZCE9PS0xP3JbaF09ZDooZD1zW2FdLG5bZF09QSxyW2hdPUEsKytBKSwrK2EsKytoO3QuaW5kaWNlcz1yO2xldCBmPXQuYXR0cmlidXRlcztmb3IobGV0IEUgaW4gZilpZihmLmhhc093blByb3BlcnR5KEUpJiZtKGZbRV0pJiZtKGZbRV0udmFsdWVzKSl7bGV0IF89ZltFXSxSPV8udmFsdWVzLEk9MCxDPV8uY29tcG9uZW50c1BlckF0dHJpYnV0ZSxOPUF0LmNyZWF0ZVR5cGVkQXJyYXkoXy5jb21wb25lbnREYXRhdHlwZSxBKkMpO2Zvcig7STxlOyl7bGV0IFQ9bltJXTtpZihUIT09LTEpZm9yKGxldCBGPTA7RjxDO0YrKylOW0MqVCtGXT1SW0MqSStGXTsrK0l9Xy52YWx1ZXM9Tn19cmV0dXJuIHR9O1FvLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGk9dC5pbmRpY2VzO2lmKHQucHJpbWl0aXZlVHlwZT09PW5lLlRSSUFOR0xFUyYmbShpKSl7bGV0IG49aS5sZW5ndGgscz0wO2ZvcihsZXQgbz0wO288bjtvKyspaVtvXT5zJiYocz1pW29dKTt0LmluZGljZXM9V1AudGlwc2lmeSh7aW5kaWNlczppLG1heGltdW1JbmRleDpzLGNhY2hlU2l6ZTplfSl9cmV0dXJuIHR9O1FvLmZpdFRvVW5zaWduZWRTaG9ydEluZGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2lmKG0odC5pbmRpY2VzKSYmdC5wcmltaXRpdmVUeXBlIT09bmUuVFJJQU5HTEVTJiZ0LnByaW1pdGl2ZVR5cGUhPT1uZS5MSU5FUyYmdC5wcmltaXRpdmVUeXBlIT09bmUuUE9JTlRTKXRocm93IG5ldyBZKCJnZW9tZXRyeS5wcmltaXRpdmVUeXBlIG11c3QgZXF1YWwgdG8gUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIFByaW1pdGl2ZVR5cGUuTElORVMsIG9yIFByaW1pdGl2ZVR5cGUuUE9JTlRTLiIpO2xldCBlPVtdLGk9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYobSh0LmluZGljZXMpJiZpPj1MLlNJWFRZX0ZPVVJfS0lMT0JZVEVTKXtsZXQgbj1bXSxzPVtdLG89MCxyPU1QKHQuYXR0cmlidXRlcyksYT10LmluZGljZXMsaD1hLmxlbmd0aCxBO3QucHJpbWl0aXZlVHlwZT09PW5lLlRSSUFOR0xFUz9BPTM6dC5wcmltaXRpdmVUeXBlPT09bmUuTElORVM/QT0yOnQucHJpbWl0aXZlVHlwZT09PW5lLlBPSU5UUyYmKEE9MSk7Zm9yKGxldCBkPTA7ZDxoO2QrPUEpe2ZvcihsZXQgZj0wO2Y8QTsrK2Ype2xldCBFPWFbZCtmXSxfPW5bRV07bShfKXx8KF89bysrLG5bRV09XyxJc3Qocix0LmF0dHJpYnV0ZXMsRSkpLHMucHVzaChfKX1vK0E+PUwuU0lYVFlfRk9VUl9LSUxPQllURVMmJihlLnB1c2gobmV3IHNlKHthdHRyaWJ1dGVzOnIsaW5kaWNlczpzLHByaW1pdGl2ZVR5cGU6dC5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOnQuYm91bmRpbmdTcGhlcmUsYm91bmRpbmdTcGhlcmVDVjp0LmJvdW5kaW5nU3BoZXJlQ1Z9KSksbj1bXSxzPVtdLG89MCxyPU1QKHQuYXR0cmlidXRlcykpfXMubGVuZ3RoIT09MCYmZS5wdXNoKG5ldyBzZSh7YXR0cmlidXRlczpyLGluZGljZXM6cyxwcmltaXRpdmVUeXBlOnQucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTp0LmJvdW5kaW5nU3BoZXJlLGJvdW5kaW5nU3BoZXJlQ1Y6dC5ib3VuZGluZ1NwaGVyZUNWfSkpfWVsc2UgZS5wdXNoKHQpO3JldHVybiBlfTtVUD1uZXcgbCxwc3Q9bmV3IHV0O1FvLnByb2plY3RUbzJEPWZ1bmN0aW9uKHQsZSxpLG4scyl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhdHRyaWJ1dGVOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJhdHRyaWJ1dGVOYW1lM0QgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZU5hbWUyRCBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXNbZV0pKXRocm93IG5ldyBZKGBnZW9tZXRyeSBtdXN0IGhhdmUgYXR0cmlidXRlIG1hdGNoaW5nIHRoZSBhdHRyaWJ1dGVOYW1lIGFyZ3VtZW50OiAke2V9LmApO2lmKHQuYXR0cmlidXRlc1tlXS5jb21wb25lbnREYXRhdHlwZSE9PUF0LkRPVUJMRSl0aHJvdyBuZXcgWSgiVGhlIGF0dHJpYnV0ZSBjb21wb25lbnREYXRhdHlwZSBtdXN0IGJlIENvbXBvbmVudERhdGF0eXBlLkRPVUJMRS4iKTtsZXQgbz10LmF0dHJpYnV0ZXNbZV07cz1tKHMpP3M6bmV3IE9zO2xldCByPXMuZWxsaXBzb2lkLGE9by52YWx1ZXMsaD1uZXcgRmxvYXQ2NEFycmF5KGEubGVuZ3RoKSxBPTA7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKz0zKXtsZXQgZj1sLmZyb21BcnJheShhLGQsVVApLEU9ci5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhmLHBzdCk7aWYoIW0oRSkpe2lmKGYueCYmZi55JiZmLnopdGhyb3cgbmV3IFkoYENvdWxkIG5vdCBwcm9qZWN0IHBvaW50ICgke2YueH0sICR7Zi55fSwgJHtmLnp9KSB0byAyRC5gKTtjb250aW51ZX1sZXQgXz1zLnByb2plY3QoRSxVUCk7aFtBKytdPV8ueCxoW0ErK109Xy55LGhbQSsrXT1fLnp9cmV0dXJuIHQuYXR0cmlidXRlc1tpXT1vLHQuYXR0cmlidXRlc1tuXT1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmh9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O2pOPXtoaWdoOjAsbG93OjB9O1FvLmVuY29kZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZU5hbWUgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZUhpZ2hOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJhdHRyaWJ1dGVMb3dOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuYXR0cmlidXRlc1tlXSkpdGhyb3cgbmV3IFkoYGdlb21ldHJ5IG11c3QgaGF2ZSBhdHRyaWJ1dGUgbWF0Y2hpbmcgdGhlIGF0dHJpYnV0ZU5hbWUgYXJndW1lbnQ6ICR7ZX0uYCk7aWYodC5hdHRyaWJ1dGVzW2VdLmNvbXBvbmVudERhdGF0eXBlIT09QXQuRE9VQkxFKXRocm93IG5ldyBZKCJUaGUgYXR0cmlidXRlIGNvbXBvbmVudERhdGF0eXBlIG11c3QgYmUgQ29tcG9uZW50RGF0YXR5cGUuRE9VQkxFLiIpO2xldCBzPXQuYXR0cmlidXRlc1tlXSxvPXMudmFsdWVzLHI9by5sZW5ndGgsYT1uZXcgRmxvYXQzMkFycmF5KHIpLGg9bmV3IEZsb2F0MzJBcnJheShyKTtmb3IobGV0IGQ9MDtkPHI7KytkKUJuLmVuY29kZShvW2RdLGpOKSxhW2RdPWpOLmhpZ2gsaFtkXT1qTi5sb3c7bGV0IEE9cy5jb21wb25lbnRzUGVyQXR0cmlidXRlO3JldHVybiB0LmF0dHJpYnV0ZXNbaV09bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOkEsdmFsdWVzOmF9KSx0LmF0dHJpYnV0ZXNbbl09bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOkEsdmFsdWVzOmh9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O0JhPW5ldyBsO3hJPW5ldyBhdCxQST1uZXcgbHQ7UW8udHJhbnNmb3JtVG9Xb3JsZENvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpbnN0YW5jZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10Lm1vZGVsTWF0cml4O2lmKGF0LmVxdWFscyhlLGF0LklERU5USVRZKSlyZXR1cm4gdDtsZXQgaT10Lmdlb21ldHJ5LmF0dHJpYnV0ZXM7SE4oZSxpLnBvc2l0aW9uKSxITihlLGkucHJldlBvc2l0aW9uKSxITihlLGkubmV4dFBvc2l0aW9uKSwobShpLm5vcm1hbCl8fG0oaS50YW5nZW50KXx8bShpLmJpdGFuZ2VudCkpJiYoYXQuaW52ZXJzZShlLHhJKSxhdC50cmFuc3Bvc2UoeEkseEkpLGF0LmdldE1hdHJpeDMoeEksUEkpLHZOKFBJLGkubm9ybWFsKSx2TihQSSxpLnRhbmdlbnQpLHZOKFBJLGkuYml0YW5nZW50KSk7bGV0IG49dC5nZW9tZXRyeS5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbShuKSYmKHQuZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmU9TnQudHJhbnNmb3JtKG4sZSxuKSksdC5tb2RlbE1hdHJpeD1hdC5jbG9uZShhdC5JREVOVElUWSksdH07Q3N0PW5ldyBsO1FvLmNvbWJpbmVJbnN0YW5jZXM9ZnVuY3Rpb24odCl7aWYoIW0odCl8fHQubGVuZ3RoPDEpdGhyb3cgbmV3IFkoImluc3RhbmNlcyBpcyByZXF1aXJlZCBhbmQgbXVzdCBoYXZlIGxlbmd0aCBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgZT1bXSxpPVtdLG49dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxuOysrbyl7bGV0IHI9dFtvXTttKHIuZ2VvbWV0cnkpP2UucHVzaChyKTptKHIud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm0oci5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmaS5wdXNoKHIpfWxldCBzPVtdO3JldHVybiBlLmxlbmd0aD4wJiZzLnB1c2goek4oZSwiZ2VvbWV0cnkiKSksaS5sZW5ndGg+MCYmKHMucHVzaCh6TihpLCJ3ZXN0SGVtaXNwaGVyZUdlb21ldHJ5IikpLHMucHVzaCh6TihpLCJlYXN0SGVtaXNwaGVyZUdlb21ldHJ5IikpKSxzfTtqcj1uZXcgbCxlXz1uZXcgbCxIbT1uZXcgbCx2bT1uZXcgbDtRby5jb21wdXRlTm9ybWFsPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24pfHwhbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5pbmRpY2VzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuaW5kaWNlcyBpcyByZXF1aXJlZC4iKTtpZih0LmluZGljZXMubGVuZ3RoPDJ8fHQuaW5kaWNlcy5sZW5ndGglMyE9PTApdGhyb3cgbmV3IFkoImdlb21ldHJ5LmluZGljZXMgbGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIGJlIGEgbXVsdGlwbGUgb2YgMy4iKTtpZih0LnByaW1pdGl2ZVR5cGUhPT1uZS5UUklBTkdMRVMpdGhyb3cgbmV3IFkoImdlb21ldHJ5LnByaW1pdGl2ZVR5cGUgbXVzdCBiZSBQcmltaXRpdmVUeXBlLlRSSUFOR0xFUy4iKTtsZXQgZT10LmluZGljZXMsaT10LmF0dHJpYnV0ZXMsbj1pLnBvc2l0aW9uLnZhbHVlcyxzPWkucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLG89ZS5sZW5ndGgscj1uZXcgQXJyYXkocyksYT1uZXcgQXJyYXkoby8zKSxoPW5ldyBBcnJheShvKSxBO2ZvcihBPTA7QTxzO0ErKylyW0FdPXtpbmRleE9mZnNldDowLGNvdW50OjAsY3VycmVudENvdW50OjB9O2xldCBkPTA7Zm9yKEE9MDtBPG87QSs9Myl7bGV0IFI9ZVtBXSxJPWVbQSsxXSxDPWVbQSsyXSxOPVIqMyxUPUkqMyxGPUMqMztlXy54PW5bTl0sZV8ueT1uW04rMV0sZV8uej1uW04rMl0sSG0ueD1uW1RdLEhtLnk9bltUKzFdLEhtLno9bltUKzJdLHZtLng9bltGXSx2bS55PW5bRisxXSx2bS56PW5bRisyXSxyW1JdLmNvdW50KysscltJXS5jb3VudCsrLHJbQ10uY291bnQrKyxsLnN1YnRyYWN0KEhtLGVfLEhtKSxsLnN1YnRyYWN0KHZtLGVfLHZtKSxhW2RdPWwuY3Jvc3MoSG0sdm0sbmV3IGwpLGQrK31sZXQgZj0wO2ZvcihBPTA7QTxzO0ErKylyW0FdLmluZGV4T2Zmc2V0Kz1mLGYrPXJbQV0uY291bnQ7ZD0wO2xldCBFO2ZvcihBPTA7QTxvO0ErPTMpe0U9cltlW0FdXTtsZXQgUj1FLmluZGV4T2Zmc2V0K0UuY3VycmVudENvdW50O2hbUl09ZCxFLmN1cnJlbnRDb3VudCsrLEU9cltlW0ErMV1dLFI9RS5pbmRleE9mZnNldCtFLmN1cnJlbnRDb3VudCxoW1JdPWQsRS5jdXJyZW50Q291bnQrKyxFPXJbZVtBKzJdXSxSPUUuaW5kZXhPZmZzZXQrRS5jdXJyZW50Q291bnQsaFtSXT1kLEUuY3VycmVudENvdW50KyssZCsrfWxldCBfPW5ldyBGbG9hdDMyQXJyYXkocyozKTtmb3IoQT0wO0E8cztBKyspe2xldCBSPUEqMztpZihFPXJbQV0sbC5jbG9uZShsLlpFUk8sanIpLEUuY291bnQ+MCl7Zm9yKGQ9MDtkPEUuY291bnQ7ZCsrKWwuYWRkKGpyLGFbaFtFLmluZGV4T2Zmc2V0K2RdXSxqcik7bC5lcXVhbHNFcHNpbG9uKGwuWkVSTyxqcixMLkVQU0lMT04xMCkmJmwuY2xvbmUoYVtoW0UuaW5kZXhPZmZzZXRdXSxqcil9bC5lcXVhbHNFcHNpbG9uKGwuWkVSTyxqcixMLkVQU0lMT04xMCkmJihqci56PTEpLGwubm9ybWFsaXplKGpyLGpyKSxfW1JdPWpyLngsX1tSKzFdPWpyLnksX1tSKzJdPWpyLnp9cmV0dXJuIHQuYXR0cmlidXRlcy5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSx0fTtnc3Q9bmV3IGwsUVA9bmV3IGwsVHN0PW5ldyBsO1FvLmNvbXB1dGVUYW5nZW50QW5kQml0YW5nZW50PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT10LmF0dHJpYnV0ZXMsaT10LmluZGljZXM7aWYoIW0oZS5wb3NpdGlvbil8fCFtKGUucG9zaXRpb24udmFsdWVzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0oZS5ub3JtYWwpfHwhbShlLm5vcm1hbC52YWx1ZXMpKXRocm93IG5ldyBZKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0oZS5zdCl8fCFtKGUuc3QudmFsdWVzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5zdC52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImdlb21ldHJ5LmluZGljZXMgaXMgcmVxdWlyZWQuIik7aWYoaS5sZW5ndGg8Mnx8aS5sZW5ndGglMyE9PTApdGhyb3cgbmV3IFkoImdlb21ldHJ5LmluZGljZXMgbGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIGJlIGEgbXVsdGlwbGUgb2YgMy4iKTtpZih0LnByaW1pdGl2ZVR5cGUhPT1uZS5UUklBTkdMRVMpdGhyb3cgbmV3IFkoImdlb21ldHJ5LnByaW1pdGl2ZVR5cGUgbXVzdCBiZSBQcmltaXRpdmVUeXBlLlRSSUFOR0xFUy4iKTtsZXQgbj10LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLHM9dC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMsbz10LmF0dHJpYnV0ZXMuc3QudmFsdWVzLHI9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxhPWkubGVuZ3RoLGg9bmV3IEFycmF5KHIqMyksQTtmb3IoQT0wO0E8aC5sZW5ndGg7QSsrKWhbQV09MDtsZXQgZCxmLEU7Zm9yKEE9MDtBPGE7QSs9Myl7bGV0IEk9aVtBXSxDPWlbQSsxXSxOPWlbQSsyXTtkPUkqMyxmPUMqMyxFPU4qMztsZXQgVD1JKjIsRj1DKjIsYj1OKjIsRz1uW2RdLE09bltkKzFdLFE9bltkKzJdLFU9b1tUXSxrPW9bVCsxXSx5PW9bRisxXS1rLGM9b1tiKzFdLWssZz0xLygob1tGXS1VKSpjLShvW2JdLVUpKnkpLFY9KGMqKG5bZl0tRykteSoobltFXS1HKSkqZyxEPShjKihuW2YrMV0tTSkteSoobltFKzFdLU0pKSpnLHc9KGMqKG5bZisyXS1RKS15KihuW0UrMl0tUSkpKmc7aFtkXSs9VixoW2QrMV0rPUQsaFtkKzJdKz13LGhbZl0rPVYsaFtmKzFdKz1ELGhbZisyXSs9dyxoW0VdKz1WLGhbRSsxXSs9RCxoW0UrMl0rPXd9bGV0IF89bmV3IEZsb2F0MzJBcnJheShyKjMpLFI9bmV3IEZsb2F0MzJBcnJheShyKjMpO2ZvcihBPTA7QTxyO0ErKyl7ZD1BKjMsZj1kKzEsRT1kKzI7bGV0IEk9bC5mcm9tQXJyYXkocyxkLGdzdCksQz1sLmZyb21BcnJheShoLGQsVHN0KSxOPWwuZG90KEksQyk7bC5tdWx0aXBseUJ5U2NhbGFyKEksTixRUCksbC5ub3JtYWxpemUobC5zdWJ0cmFjdChDLFFQLEMpLEMpLF9bZF09Qy54LF9bZl09Qy55LF9bRV09Qy56LGwubm9ybWFsaXplKGwuY3Jvc3MoSSxDLEMpLEMpLFJbZF09Qy54LFJbZl09Qy55LFJbRV09Qy56fXJldHVybiB0LmF0dHJpYnV0ZXMudGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pLHQuYXR0cmlidXRlcy5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlJ9KSx0fTtpXz1uZXcgbnQsR2E9bmV3IGwsa1A9bmV3IGwsTFA9bmV3IGwsSkk9bmV3IG50O1FvLmNvbXByZXNzVmVydGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2xldCBlPXQuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uLGksbjtpZihtKGUpKXtsZXQgTT1lLnZhbHVlcztuPU0ubGVuZ3RoLzM7bGV0IFE9bmV3IEZsb2F0MzJBcnJheShuKjIpLFU9MDtmb3IoaT0wO2k8bjsrK2kpe2lmKGwuZnJvbUFycmF5KE0saSozLEdhKSxsLmVxdWFscyhHYSxsLlpFUk8pKXtVKz0yO2NvbnRpbnVlfUpJPVlpLm9jdEVuY29kZUluUmFuZ2UoR2EsNjU1MzUsSkkpLFFbVSsrXT1KSS54LFFbVSsrXT1KSS55fXJldHVybiB0LmF0dHJpYnV0ZXMuY29tcHJlc3NlZEF0dHJpYnV0ZXM9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOlF9KSxkZWxldGUgdC5hdHRyaWJ1dGVzLmV4dHJ1ZGVEaXJlY3Rpb24sdH1sZXQgcz10LmF0dHJpYnV0ZXMubm9ybWFsLG89dC5hdHRyaWJ1dGVzLnN0LHI9bShzKSxhPW0obyk7aWYoIXImJiFhKXJldHVybiB0O2xldCBoPXQuYXR0cmlidXRlcy50YW5nZW50LEE9dC5hdHRyaWJ1dGVzLmJpdGFuZ2VudCxkPW0oaCksZj1tKEEpLEUsXyxSLEk7ciYmKEU9cy52YWx1ZXMpLGEmJihfPW8udmFsdWVzKSxkJiYoUj1oLnZhbHVlcyksZiYmKEk9QS52YWx1ZXMpLG49KHI/RS5sZW5ndGg6Xy5sZW5ndGgpLyhyPzM6Mik7bGV0IFQ9bixGPWEmJnI/MjoxO0YrPWR8fGY/MTowLFQqPUY7bGV0IGI9bmV3IEZsb2F0MzJBcnJheShUKSxHPTA7Zm9yKGk9MDtpPG47KytpKXthJiYobnQuZnJvbUFycmF5KF8saSoyLGlfKSxiW0crK109WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoaV8pKTtsZXQgTT1pKjM7ciYmbShSKSYmbShJKT8obC5mcm9tQXJyYXkoRSxNLEdhKSxsLmZyb21BcnJheShSLE0sa1ApLGwuZnJvbUFycmF5KEksTSxMUCksWWkub2N0UGFjayhHYSxrUCxMUCxpXyksYltHKytdPWlfLngsYltHKytdPWlfLnkpOihyJiYobC5mcm9tQXJyYXkoRSxNLEdhKSxiW0crK109WWkub2N0RW5jb2RlRmxvYXQoR2EpKSxkJiYobC5mcm9tQXJyYXkoUixNLEdhKSxiW0crK109WWkub2N0RW5jb2RlRmxvYXQoR2EpKSxmJiYobC5mcm9tQXJyYXkoSSxNLEdhKSxiW0crK109WWkub2N0RW5jb2RlRmxvYXQoR2EpKSl9cmV0dXJuIHQuYXR0cmlidXRlcy5jb21wcmVzc2VkQXR0cmlidXRlcz1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Rix2YWx1ZXM6Yn0pLHImJmRlbGV0ZSB0LmF0dHJpYnV0ZXMubm9ybWFsLGEmJmRlbGV0ZSB0LmF0dHJpYnV0ZXMuc3QsZiYmZGVsZXRlIHQuYXR0cmlidXRlcy5iaXRhbmdlbnQsZCYmZGVsZXRlIHQuYXR0cmlidXRlcy50YW5nZW50LHR9O3lQPW5ldyBsO3lsPW5ldyBsLHdsPW5ldyBsLHhsPW5ldyBsLFBsPW5ldyBsLEtOPXtwb3NpdGlvbnM6bmV3IEFycmF5KDcpLGluZGljZXM6bmV3IEFycmF5KDMqMyl9O1dzdD1lYihpZSw0KSx2ST1lYihsLDMpLHZQPWViKG50LDIpLERzdD1mdW5jdGlvbih0LGUsaSxuLHMsbyxyKXtsZXQgYT1zW3RdKm4ueCxoPXNbZV0qbi55LEE9c1tpXSpuLno7b1tyXT1hK2grQT5MLkVQU0lMT042PzE6MH0sbl89bmV3IGwsWE49bmV3IGwscU49bmV3IGwsTXN0PW5ldyBsO1FzdD17cG9zaXRpb246ITAsbm9ybWFsOiEwLGJpdGFuZ2VudDohMCx0YW5nZW50OiEwLHN0OiEwLGV4dHJ1ZGVEaXJlY3Rpb246ITAsYXBwbHlPZmZzZXQ6ITB9O3pQPUtpLmZyb21Qb2ludE5vcm1hbChsLlpFUk8sbC5VTklUX1kpLGtzdD1uZXcgbCxMc3Q9bmV3IGw7SlA9bmV3IG50LHlzdD1uZXcgbnQsS1A9bmV3IGwsWFA9bmV3IGwsJE49bmV3IGwsd3N0PW5ldyBsLHhzdD1uZXcgbCxQc3Q9bmV3IGwsalA9bmV3IGllO0pzdD01KkwuRVBTSUxPTjksSEk9TC5FUFNJTE9ONjtRby5zcGxpdExvbmdpdHVkZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaW5zdGFuY2UgaXMgcmVxdWlyZWQuIik7bGV0IGU9dC5nZW9tZXRyeSxpPWUuYm91bmRpbmdTcGhlcmU7aWYobShpKSYmKGkuY2VudGVyLngtaS5yYWRpdXM+MHx8TnQuaW50ZXJzZWN0UGxhbmUoaSxLaS5PUklHSU5fWlhfUExBTkUpIT09Tm4uSU5URVJTRUNUSU5HKSlyZXR1cm4gdDtpZihlLmdlb21ldHJ5VHlwZSE9PUFoLk5PTkUpc3dpdGNoKGUuZ2VvbWV0cnlUeXBlKXtjYXNlIEFoLlBPTFlMSU5FUzpqc3QodCk7YnJlYWs7Y2FzZSBBaC5UUklBTkdMRVM6eFAodCk7YnJlYWs7Y2FzZSBBaC5MSU5FUzpQUCh0KTticmVha31lbHNlIFZzdChlKSxlLnByaW1pdGl2ZVR5cGU9PT1uZS5UUklBTkdMRVM/eFAodCk6ZS5wcmltaXRpdmVUeXBlPT09bmUuTElORVMmJlBQKHQpO3JldHVybiB0fTt3aT1Rb30pO2Z1bmN0aW9uIHNfKHQsZSxpKXt0PVoodCwwKSxlPVooZSwwKSxpPVooaSwwKSx0aGlzLnZhbHVlPW5ldyBGbG9hdDMyQXJyYXkoW3QsZSxpXSl9dmFyIHFQLCRQPU8oKCk9PnthZSgpO29pKCk7YnQoKTttdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNfLnByb3RvdHlwZSx7Y29tcG9uZW50RGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBBdC5GTE9BVH19LGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAzfX0sbm9ybWFsaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19fSk7c18uZnJvbUNhcnRlc2lhbjM9ZnVuY3Rpb24odCl7cmV0dXJuIHAuZGVmaW5lZCgib2Zmc2V0Iix0KSxuZXcgc18odC54LHQueSx0LnopfTtzXy50b1ZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgib2Zmc2V0Iix0KSxtKGUpfHwoZT1uZXcgRmxvYXQzMkFycmF5KFt0LngsdC55LHQuel0pKSxlWzBdPXQueCxlWzFdPXQueSxlWzJdPXQueixlfTtxUD1zX30pO2Z1bmN0aW9uIEhzdCh0LGUsaSl7bGV0IG49IWkscz10Lmxlbmd0aCxvO2lmKCFuJiZzPjEpe2xldCByPXRbMF0ubW9kZWxNYXRyaXg7Zm9yKG89MTtvPHM7KytvKWlmKCFhdC5lcXVhbHMocix0W29dLm1vZGVsTWF0cml4KSl7bj0hMDticmVha319aWYobilmb3Iobz0wO288czsrK28pbSh0W29dLmdlb21ldHJ5KSYmd2kudHJhbnNmb3JtVG9Xb3JsZENvb3JkaW5hdGVzKHRbb10pO2Vsc2UgYXQubXVsdGlwbHlUcmFuc2Zvcm1hdGlvbihlLHRbMF0ubW9kZWxNYXRyaXgsZSl9ZnVuY3Rpb24gaWIodCxlKXtsZXQgaT10LmF0dHJpYnV0ZXMsbj1pLnBvc2l0aW9uLHM9bi52YWx1ZXMubGVuZ3RoL24uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtpLmJhdGNoSWQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOm5ldyBGbG9hdDMyQXJyYXkocyl9KTtsZXQgbz1pLmJhdGNoSWQudmFsdWVzO2ZvcihsZXQgcj0wO3I8czsrK3Ipb1tyXT1lfWZ1bmN0aW9uIHZzdCh0KXtsZXQgZT10Lmxlbmd0aDtmb3IobGV0IGk9MDtpPGU7KytpKXtsZXQgbj10W2ldO20obi5nZW9tZXRyeSk/aWIobi5nZW9tZXRyeSxpKTptKG4ud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm0obi5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmKGliKG4ud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSxpKSxpYihuLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnksaSkpfX1mdW5jdGlvbiB6c3QodCl7bGV0IGU9dC5pbnN0YW5jZXMsaT10LnByb2plY3Rpb24sbj10LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQscz10LnNjZW5lM0RPbmx5LG89dC52ZXJ0ZXhDYWNoZU9wdGltaXplLHI9dC5jb21wcmVzc1ZlcnRpY2VzLGE9dC5tb2RlbE1hdHJpeCxoLEEsZCxmPWUubGVuZ3RoO2ZvcihoPTA7aDxmOysraClpZihtKGVbaF0uZ2VvbWV0cnkpKXtkPWVbaF0uZ2VvbWV0cnkucHJpbWl0aXZlVHlwZTticmVha31mb3IoaD0xO2g8ZjsrK2gpaWYobShlW2hdLmdlb21ldHJ5KSYmZVtoXS5nZW9tZXRyeS5wcmltaXRpdmVUeXBlIT09ZCl0aHJvdyBuZXcgWSgiQWxsIGluc3RhbmNlIGdlb21ldHJpZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHByaW1pdGl2ZVR5cGUuIik7aWYoSHN0KGUsYSxzKSwhcylmb3IoaD0wO2g8ZjsrK2gpbShlW2hdLmdlb21ldHJ5KSYmd2kuc3BsaXRMb25naXR1ZGUoZVtoXSk7aWYodnN0KGUpLG8pZm9yKGg9MDtoPGY7KytoKXtsZXQgXz1lW2hdO20oXy5nZW9tZXRyeSk/KHdpLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGUoXy5nZW9tZXRyeSksd2kucmVvcmRlckZvclByZVZlcnRleENhY2hlKF8uZ2VvbWV0cnkpKTptKF8ud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm0oXy5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmKHdpLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGUoXy53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSx3aS5yZW9yZGVyRm9yUHJlVmVydGV4Q2FjaGUoXy53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSx3aS5yZW9yZGVyRm9yUG9zdFZlcnRleENhY2hlKF8uZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSksd2kucmVvcmRlckZvclByZVZlcnRleENhY2hlKF8uZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSkpfWxldCBFPXdpLmNvbWJpbmVJbnN0YW5jZXMoZSk7Zm9yKGY9RS5sZW5ndGgsaD0wO2g8ZjsrK2gpe0E9RVtoXTtsZXQgXz1BLmF0dHJpYnV0ZXM7aWYocylmb3IobGV0IFIgaW4gXylfLmhhc093blByb3BlcnR5KFIpJiZfW1JdLmNvbXBvbmVudERhdGF0eXBlPT09QXQuRE9VQkxFJiZ3aS5lbmNvZGVBdHRyaWJ1dGUoQSxSLGAke1J9M0RIaWdoYCxgJHtSfTNETG93YCk7ZWxzZSBmb3IobGV0IFIgaW4gXylpZihfLmhhc093blByb3BlcnR5KFIpJiZfW1JdLmNvbXBvbmVudERhdGF0eXBlPT09QXQuRE9VQkxFKXtsZXQgST1gJHtSfTNEYCxDPWAke1J9MkRgO3dpLnByb2plY3RUbzJEKEEsUixJLEMsaSksbShBLmJvdW5kaW5nU3BoZXJlKSYmUj09PSJwb3NpdGlvbiImJihBLmJvdW5kaW5nU3BoZXJlQ1Y9TnQuZnJvbVZlcnRpY2VzKEEuYXR0cmlidXRlcy5wb3NpdGlvbjJELnZhbHVlcykpLHdpLmVuY29kZUF0dHJpYnV0ZShBLEksYCR7SX1IaWdoYCxgJHtJfUxvd2ApLHdpLmVuY29kZUF0dHJpYnV0ZShBLEMsYCR7Q31IaWdoYCxgJHtDfUxvd2ApfXImJndpLmNvbXByZXNzVmVydGljZXMoQSl9aWYoIW4pe2xldCBfPVtdO2ZvcihmPUUubGVuZ3RoLGg9MDtoPGY7KytoKUE9RVtoXSxfPV8uY29uY2F0KHdpLmZpdFRvVW5zaWduZWRTaG9ydEluZGljZXMoQSkpO0U9X31yZXR1cm4gRX1mdW5jdGlvbiBuYih0LGUsaSxuKXtsZXQgcyxvLHIsYT1uLmxlbmd0aC0xO2lmKGE+PTApe2xldCBBPW5bYV07cz1BLm9mZnNldCtBLmNvdW50LHI9QS5pbmRleCxvPWlbcl0uaW5kaWNlcy5sZW5ndGh9ZWxzZSBzPTAscj0wLG89aVtyXS5pbmRpY2VzLmxlbmd0aDtsZXQgaD10Lmxlbmd0aDtmb3IobGV0IEE9MDtBPGg7KytBKXtsZXQgZj10W0FdW2VdO2lmKCFtKGYpKWNvbnRpbnVlO2xldCBFPWYuaW5kaWNlcy5sZW5ndGg7cytFPm8mJihzPTAsbz1pWysrcl0uaW5kaWNlcy5sZW5ndGgpLG4ucHVzaCh7aW5kZXg6cixvZmZzZXQ6cyxjb3VudDpFfSkscys9RX19ZnVuY3Rpb24gS3N0KHQsZSl7bGV0IGk9W107cmV0dXJuIG5iKHQsImdlb21ldHJ5IixlLGkpLG5iKHQsIndlc3RIZW1pc3BoZXJlR2VvbWV0cnkiLGUsaSksbmIodCwiZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSIsZSxpKSxpfWZ1bmN0aW9uIFhzdCh0LGUpe2xldCBpPXQuYXR0cmlidXRlcztmb3IobGV0IG4gaW4gaSlpZihpLmhhc093blByb3BlcnR5KG4pKXtsZXQgcz1pW25dO20ocykmJm0ocy52YWx1ZXMpJiZlLnB1c2gocy52YWx1ZXMuYnVmZmVyKX1tKHQuaW5kaWNlcykmJmUucHVzaCh0LmluZGljZXMuYnVmZmVyKX1mdW5jdGlvbiBxc3QodCxlKXtsZXQgaT10Lmxlbmd0aDtmb3IobGV0IG49MDtuPGk7KytuKVhzdCh0W25dLGUpfWZ1bmN0aW9uICRzdCh0KXtsZXQgZT0xLGk9dC5sZW5ndGg7Zm9yKGxldCBuPTA7bjxpO24rKyl7bGV0IHM9dFtuXTtpZigrK2UsIW0ocykpY29udGludWU7bGV0IG89cy5hdHRyaWJ1dGVzO2UrPTcrMipOdC5wYWNrZWRMZW5ndGgrKG0ocy5pbmRpY2VzKT9zLmluZGljZXMubGVuZ3RoOjApO2ZvcihsZXQgciBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHkocikmJm0ob1tyXSkpe2xldCBhPW9bcl07ZSs9NSthLnZhbHVlcy5sZW5ndGh9fXJldHVybiBlfWZ1bmN0aW9uIHRvdCh0LGUpe2xldCBpPXQubGVuZ3RoLG49bmV3IEZsb2F0NjRBcnJheSgxK2kqMTkpLHM9MDtuW3MrK109aTtmb3IobGV0IG89MDtvPGk7bysrKXtsZXQgcj10W29dO2lmKGF0LnBhY2soci5tb2RlbE1hdHJpeCxuLHMpLHMrPWF0LnBhY2tlZExlbmd0aCxtKHIuYXR0cmlidXRlcykmJm0oci5hdHRyaWJ1dGVzLm9mZnNldCkpe2xldCBhPXIuYXR0cmlidXRlcy5vZmZzZXQudmFsdWU7bltzXT1hWzBdLG5bcysxXT1hWzFdLG5bcysyXT1hWzJdfXMrPTN9cmV0dXJuIGUucHVzaChuLmJ1ZmZlciksbn1mdW5jdGlvbiBlb3QodCl7bGV0IGU9dCxpPW5ldyBBcnJheShlWzBdKSxuPTAscz0xO2Zvcig7czxlLmxlbmd0aDspe2xldCBvPWF0LnVucGFjayhlLHMpLHI7cys9YXQucGFja2VkTGVuZ3RoLG0oZVtzXSkmJihyPXtvZmZzZXQ6bmV3IHFQKGVbc10sZVtzKzFdLGVbcysyXSl9KSxzKz0zLGlbbisrXT17bW9kZWxNYXRyaXg6byxhdHRyaWJ1dGVzOnJ9fXJldHVybiBpfWZ1bmN0aW9uIHRKKHQpe2xldCBlPXQubGVuZ3RoLGk9MSsoTnQucGFja2VkTGVuZ3RoKzEpKmUsbj1uZXcgRmxvYXQzMkFycmF5KGkpLHM9MDtuW3MrK109ZTtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO20ocik/KG5bcysrXT0xLE50LnBhY2sodFtvXSxuLHMpKTpuW3MrK109MCxzKz1OdC5wYWNrZWRMZW5ndGh9cmV0dXJuIG59ZnVuY3Rpb24gZUoodCl7bGV0IGU9bmV3IEFycmF5KHRbMF0pLGk9MCxuPTE7Zm9yKDtuPHQubGVuZ3RoOyl0W24rK109PT0xJiYoZVtpXT1OdC51bnBhY2sodCxuKSksKytpLG4rPU50LnBhY2tlZExlbmd0aDtyZXR1cm4gZX12YXIgWmgsVEEsS0k9TygoKT0+e19pKCk7b2koKTtidCgpO210KCk7VnQoKTtWZSgpO3pBKCk7eWkoKTtqaSgpO0VuKCk7Z0EoKTtEaSgpO0ZpKCk7JFAoKTtVbCgpO1poPXt9O1poLmNvbWJpbmVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZSxpLG49dC5pbnN0YW5jZXMscz1uLmxlbmd0aCxvLHIsYT0hMTtzPjAmJihlPXpzdCh0KSxlLmxlbmd0aD4wJiYoaT13aS5jcmVhdGVBdHRyaWJ1dGVMb2NhdGlvbnMoZVswXSksdC5jcmVhdGVQaWNrT2Zmc2V0cyYmKG89S3N0KG4sZSkpKSxtKG5bMF0uYXR0cmlidXRlcykmJm0oblswXS5hdHRyaWJ1dGVzLm9mZnNldCkmJihyPW5ldyBBcnJheShzKSxhPSEwKSk7bGV0IGg9bmV3IEFycmF5KHMpLEE9bmV3IEFycmF5KHMpO2ZvcihsZXQgZD0wO2Q8czsrK2Qpe2xldCBmPW5bZF0sRT1mLmdlb21ldHJ5O20oRSkmJihoW2RdPUUuYm91bmRpbmdTcGhlcmUsQVtkXT1FLmJvdW5kaW5nU3BoZXJlQ1YsYSYmKHJbZF09Zi5nZW9tZXRyeS5vZmZzZXRBdHRyaWJ1dGUpKTtsZXQgXz1mLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnksUj1mLndlc3RIZW1pc3BoZXJlR2VvbWV0cnk7bShfKSYmbShSKSYmKG0oXy5ib3VuZGluZ1NwaGVyZSkmJm0oUi5ib3VuZGluZ1NwaGVyZSkmJihoW2RdPU50LnVuaW9uKF8uYm91bmRpbmdTcGhlcmUsUi5ib3VuZGluZ1NwaGVyZSkpLG0oXy5ib3VuZGluZ1NwaGVyZUNWKSYmbShSLmJvdW5kaW5nU3BoZXJlQ1YpJiYoQVtkXT1OdC51bmlvbihfLmJvdW5kaW5nU3BoZXJlQ1YsUi5ib3VuZGluZ1NwaGVyZUNWKSkpfXJldHVybntnZW9tZXRyaWVzOmUsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxhdHRyaWJ1dGVMb2NhdGlvbnM6aSxwaWNrT2Zmc2V0czpvLG9mZnNldEluc3RhbmNlRXh0ZW5kOnIsYm91bmRpbmdTcGhlcmVzOmgsYm91bmRpbmdTcGhlcmVzQ1Y6QX19O1poLnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtsZXQgaT1uZXcgRmxvYXQ2NEFycmF5KCRzdCh0KSksbj1bXSxzPXt9LG89dC5sZW5ndGgscj0wO2lbcisrXT1vO2ZvcihsZXQgYT0wO2E8bzthKyspe2xldCBoPXRbYV0sQT1tKGgpO2lmKGlbcisrXT1BPzE6MCwhQSljb250aW51ZTtpW3IrK109aC5wcmltaXRpdmVUeXBlLGlbcisrXT1oLmdlb21ldHJ5VHlwZSxpW3IrK109WihoLm9mZnNldEF0dHJpYnV0ZSwtMSk7bGV0IGQ9bShoLmJvdW5kaW5nU3BoZXJlKT8xOjA7aVtyKytdPWQsZCYmTnQucGFjayhoLmJvdW5kaW5nU3BoZXJlLGkscikscis9TnQucGFja2VkTGVuZ3RoO2xldCBmPW0oaC5ib3VuZGluZ1NwaGVyZUNWKT8xOjA7aVtyKytdPWYsZiYmTnQucGFjayhoLmJvdW5kaW5nU3BoZXJlQ1YsaSxyKSxyKz1OdC5wYWNrZWRMZW5ndGg7bGV0IEU9aC5hdHRyaWJ1dGVzLF89W107Zm9yKGxldCBJIGluIEUpRS5oYXNPd25Qcm9wZXJ0eShJKSYmbShFW0ldKSYmKF8ucHVzaChJKSxtKHNbSV0pfHwoc1tJXT1uLmxlbmd0aCxuLnB1c2goSSkpKTtpW3IrK109Xy5sZW5ndGg7Zm9yKGxldCBJPTA7STxfLmxlbmd0aDtJKyspe2xldCBDPV9bSV0sTj1FW0NdO2lbcisrXT1zW0NdLGlbcisrXT1OLmNvbXBvbmVudERhdGF0eXBlLGlbcisrXT1OLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsaVtyKytdPU4ubm9ybWFsaXplPzE6MCxpW3IrK109Ti52YWx1ZXMubGVuZ3RoLGkuc2V0KE4udmFsdWVzLHIpLHIrPU4udmFsdWVzLmxlbmd0aH1sZXQgUj1tKGguaW5kaWNlcyk/aC5pbmRpY2VzLmxlbmd0aDowO2lbcisrXT1SLFI+MCYmKGkuc2V0KGguaW5kaWNlcyxyKSxyKz1SKX1yZXR1cm4gZS5wdXNoKGkuYnVmZmVyKSx7c3RyaW5nVGFibGU6bixwYWNrZWREYXRhOml9fTtaaC51bnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCl7bGV0IGU9dC5zdHJpbmdUYWJsZSxpPXQucGFja2VkRGF0YSxuLHM9bmV3IEFycmF5KGlbMF0pLG89MCxyPTE7Zm9yKDtyPGkubGVuZ3RoOyl7aWYoIShpW3IrK109PT0xKSl7c1tvKytdPXZvaWQgMDtjb250aW51ZX1sZXQgaD1pW3IrK10sQT1pW3IrK10sZD1pW3IrK107ZD09PS0xJiYoZD12b2lkIDApO2xldCBmLEU7aVtyKytdPT09MSYmKGY9TnQudW5wYWNrKGkscikpLHIrPU50LnBhY2tlZExlbmd0aCxpW3IrK109PT0xJiYoRT1OdC51bnBhY2soaSxyKSkscis9TnQucGFja2VkTGVuZ3RoO2xldCBJLEMsTixUPW5ldyB3ZSxGPWlbcisrXTtmb3Iobj0wO248RjtuKyspe2xldCBHPWVbaVtyKytdXSxNPWlbcisrXTtOPWlbcisrXTtsZXQgUT1pW3IrK10hPT0wO0k9aVtyKytdLEM9QXQuY3JlYXRlVHlwZWRBcnJheShNLEkpO2ZvcihsZXQgVT0wO1U8STtVKyspQ1tVXT1pW3IrK107VFtHXT1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOk0sY29tcG9uZW50c1BlckF0dHJpYnV0ZTpOLG5vcm1hbGl6ZTpRLHZhbHVlczpDfSl9bGV0IGI7aWYoST1pW3IrK10sST4wKXtsZXQgRz1DLmxlbmd0aC9OO2ZvcihiPXRlLmNyZWF0ZVR5cGVkQXJyYXkoRyxJKSxuPTA7bjxJO24rKyliW25dPWlbcisrXX1zW28rK109bmV3IHNlKHtwcmltaXRpdmVUeXBlOmgsZ2VvbWV0cnlUeXBlOkEsYm91bmRpbmdTcGhlcmU6Zixib3VuZGluZ1NwaGVyZUNWOkUsaW5kaWNlczpiLGF0dHJpYnV0ZXM6VCxvZmZzZXRBdHRyaWJ1dGU6ZH0pfXJldHVybiBzfTtaaC5wYWNrQ29tYmluZUdlb21ldHJ5UGFyYW1ldGVycz1mdW5jdGlvbih0LGUpe2xldCBpPXQuY3JlYXRlR2VvbWV0cnlSZXN1bHRzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuO3MrKyllLnB1c2goaVtzXS5wYWNrZWREYXRhLmJ1ZmZlcik7cmV0dXJue2NyZWF0ZUdlb21ldHJ5UmVzdWx0czp0LmNyZWF0ZUdlb21ldHJ5UmVzdWx0cyxwYWNrZWRJbnN0YW5jZXM6dG90KHQuaW5zdGFuY2VzLGUpLGVsbGlwc29pZDp0LmVsbGlwc29pZCxpc0dlb2dyYXBoaWM6dC5wcm9qZWN0aW9uIGluc3RhbmNlb2YgT3MsZWxlbWVudEluZGV4VWludFN1cHBvcnRlZDp0LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQsc2NlbmUzRE9ubHk6dC5zY2VuZTNET25seSx2ZXJ0ZXhDYWNoZU9wdGltaXplOnQudmVydGV4Q2FjaGVPcHRpbWl6ZSxjb21wcmVzc1ZlcnRpY2VzOnQuY29tcHJlc3NWZXJ0aWNlcyxtb2RlbE1hdHJpeDp0Lm1vZGVsTWF0cml4LGNyZWF0ZVBpY2tPZmZzZXRzOnQuY3JlYXRlUGlja09mZnNldHN9fTtaaC51bnBhY2tDb21iaW5lR2VvbWV0cnlQYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe2xldCBlPWVvdCh0LnBhY2tlZEluc3RhbmNlcyksaT10LmNyZWF0ZUdlb21ldHJ5UmVzdWx0cyxuPWkubGVuZ3RoLHM9MDtmb3IobGV0IGE9MDthPG47YSsrKXtsZXQgaD1aaC51bnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHMoaVthXSksQT1oLmxlbmd0aDtmb3IobGV0IGQ9MDtkPEE7ZCsrKXtsZXQgZj1oW2RdLEU9ZVtzXTtFLmdlb21ldHJ5PWYsKytzfX1sZXQgbz1vdC5jbG9uZSh0LmVsbGlwc29pZCkscj10LmlzR2VvZ3JhcGhpYz9uZXcgT3Mobyk6bmV3IGtzKG8pO3JldHVybntpbnN0YW5jZXM6ZSxlbGxpcHNvaWQ6byxwcm9qZWN0aW9uOnIsZWxlbWVudEluZGV4VWludFN1cHBvcnRlZDp0LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQsc2NlbmUzRE9ubHk6dC5zY2VuZTNET25seSx2ZXJ0ZXhDYWNoZU9wdGltaXplOnQudmVydGV4Q2FjaGVPcHRpbWl6ZSxjb21wcmVzc1ZlcnRpY2VzOnQuY29tcHJlc3NWZXJ0aWNlcyxtb2RlbE1hdHJpeDphdC5jbG9uZSh0Lm1vZGVsTWF0cml4KSxjcmVhdGVQaWNrT2Zmc2V0czp0LmNyZWF0ZVBpY2tPZmZzZXRzfX07WmgucGFja0NvbWJpbmVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXttKHQuZ2VvbWV0cmllcykmJnFzdCh0Lmdlb21ldHJpZXMsZSk7bGV0IGk9dEoodC5ib3VuZGluZ1NwaGVyZXMpLG49dEoodC5ib3VuZGluZ1NwaGVyZXNDVik7cmV0dXJuIGUucHVzaChpLmJ1ZmZlcixuLmJ1ZmZlcikse2dlb21ldHJpZXM6dC5nZW9tZXRyaWVzLGF0dHJpYnV0ZUxvY2F0aW9uczp0LmF0dHJpYnV0ZUxvY2F0aW9ucyxtb2RlbE1hdHJpeDp0Lm1vZGVsTWF0cml4LHBpY2tPZmZzZXRzOnQucGlja09mZnNldHMsb2Zmc2V0SW5zdGFuY2VFeHRlbmQ6dC5vZmZzZXRJbnN0YW5jZUV4dGVuZCxib3VuZGluZ1NwaGVyZXM6aSxib3VuZGluZ1NwaGVyZXNDVjpufX07WmgudW5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cz1mdW5jdGlvbih0KXtyZXR1cm57Z2VvbWV0cmllczp0Lmdlb21ldHJpZXMsYXR0cmlidXRlTG9jYXRpb25zOnQuYXR0cmlidXRlTG9jYXRpb25zLG1vZGVsTWF0cml4OnQubW9kZWxNYXRyaXgscGlja09mZnNldHM6dC5waWNrT2Zmc2V0cyxvZmZzZXRJbnN0YW5jZUV4dGVuZDp0Lm9mZnNldEluc3RhbmNlRXh0ZW5kLGJvdW5kaW5nU3BoZXJlczplSih0LmJvdW5kaW5nU3BoZXJlcyksYm91bmRpbmdTcGhlcmVzQ1Y6ZUoodC5ib3VuZGluZ1NwaGVyZXNDVil9fTtUQT1aaH0pO3ZhciBpb3QsSXMsaUo9TygoKT0+e2lvdD17UkVBRFk6MCxDUkVBVElORzoxLENSRUFURUQ6MixDT01CSU5JTkc6MyxDT01CSU5FRDo0LENPTVBMRVRFOjUsRkFJTEVEOjZ9LElzPU9iamVjdC5mcmVlemUoaW90KX0pO3ZhciBJcixYSSxuSj1PKCgpPT57SXI9e0RJU0FCTEVEOjAsRU5BQkxFRDoxLENBU1RfT05MWToyLFJFQ0VJVkVfT05MWTozfTtJci5OVU1CRVJfT0ZfU0hBRE9XX01PREVTPTQ7SXIuY2FzdFNoYWRvd3M9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1Jci5FTkFCTEVEfHx0PT09SXIuQ0FTVF9PTkxZfTtJci5yZWNlaXZlU2hhZG93cz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PUlyLkVOQUJMRUR8fHQ9PT1Jci5SRUNFSVZFX09OTFl9O0lyLmZyb21DYXN0UmVjZWl2ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZlP0lyLkVOQUJMRUQ6dD9Jci5DQVNUX09OTFk6ZT9Jci5SRUNFSVZFX09OTFk6SXIuRElTQUJMRUR9O1hJPU9iamVjdC5mcmVlemUoSXIpfSk7ZnVuY3Rpb24gcW4odCl7aWYodD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXM9dC5nZW9tZXRyeUluc3RhbmNlcyx0aGlzLmFwcGVhcmFuY2U9dC5hcHBlYXJhbmNlLHRoaXMuX2FwcGVhcmFuY2U9dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLmRlcHRoRmFpbEFwcGVhcmFuY2U9dC5kZXB0aEZhaWxBcHBlYXJhbmNlLHRoaXMuX2RlcHRoRmFpbEFwcGVhcmFuY2U9dm9pZCAwLHRoaXMuX2RlcHRoRmFpbE1hdGVyaWFsPXZvaWQgMCx0aGlzLm1vZGVsTWF0cml4PWF0LmNsb25lKFoodC5tb2RlbE1hdHJpeCxhdC5JREVOVElUWSkpLHRoaXMuX21vZGVsTWF0cml4PW5ldyBhdCx0aGlzLnNob3c9Wih0LnNob3csITApLHRoaXMuX3ZlcnRleENhY2hlT3B0aW1pemU9Wih0LnZlcnRleENhY2hlT3B0aW1pemUsITEpLHRoaXMuX2ludGVybGVhdmU9Wih0LmludGVybGVhdmUsITEpLHRoaXMuX3JlbGVhc2VHZW9tZXRyeUluc3RhbmNlcz1aKHQucmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzLCEwKSx0aGlzLl9hbGxvd1BpY2tpbmc9Wih0LmFsbG93UGlja2luZywhMCksdGhpcy5fYXN5bmNocm9ub3VzPVoodC5hc3luY2hyb25vdXMsITApLHRoaXMuX2NvbXByZXNzVmVydGljZXM9Wih0LmNvbXByZXNzVmVydGljZXMsITApLHRoaXMuY3VsbD1aKHQuY3VsbCwhMCksdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT1aKHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsITEpLHRoaXMucnRjQ2VudGVyPXQucnRjQ2VudGVyLG0odGhpcy5ydGNDZW50ZXIpJiYoIW0odGhpcy5nZW9tZXRyeUluc3RhbmNlcyl8fEFycmF5LmlzQXJyYXkodGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJnRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMubGVuZ3RoIT09MSkpdGhyb3cgbmV3IFkoIlJlbGF0aXZlLXRvLWNlbnRlciByZW5kZXJpbmcgb25seSBzdXBwb3J0cyBvbmUgZ2VvbWV0cnkgaW5zdGFuY2UuIik7dGhpcy5zaGFkb3dzPVoodC5zaGFkb3dzLFhJLkRJU0FCTEVEKSx0aGlzLl90cmFuc2x1Y2VudD12b2lkIDAsdGhpcy5fc3RhdGU9SXMuUkVBRFksdGhpcy5fZ2VvbWV0cmllcz1bXSx0aGlzLl9lcnJvcj12b2lkIDAsdGhpcy5fbnVtYmVyT2ZJbnN0YW5jZXM9MCx0aGlzLl9ib3VuZGluZ1NwaGVyZXM9W10sdGhpcy5fYm91bmRpbmdTcGhlcmVXQz1bXSx0aGlzLl9ib3VuZGluZ1NwaGVyZUNWPVtdLHRoaXMuX2JvdW5kaW5nU3BoZXJlMkQ9W10sdGhpcy5fYm91bmRpbmdTcGhlcmVNb3JwaD1bXSx0aGlzLl9wZXJJbnN0YW5jZUF0dHJpYnV0ZUNhY2hlPW5ldyBNYXAsdGhpcy5faW5zdGFuY2VJZHM9W10sdGhpcy5fbGFzdFBlckluc3RhbmNlQXR0cmlidXRlSW5kZXg9MCx0aGlzLl92YT1bXSx0aGlzLl9hdHRyaWJ1dGVMb2NhdGlvbnM9dm9pZCAwLHRoaXMuX3ByaW1pdGl2ZVR5cGU9dm9pZCAwLHRoaXMuX2Zyb250RmFjZVJTPXZvaWQgMCx0aGlzLl9iYWNrRmFjZVJTPXZvaWQgMCx0aGlzLl9zcD12b2lkIDAsdGhpcy5fZGVwdGhGYWlsQXBwZWFyYW5jZT12b2lkIDAsdGhpcy5fc3BEZXB0aEZhaWw9dm9pZCAwLHRoaXMuX2Zyb250RmFjZURlcHRoRmFpbFJTPXZvaWQgMCx0aGlzLl9iYWNrRmFjZURlcHRoRmFpbFJTPXZvaWQgMCx0aGlzLl9waWNrSWRzPVtdLHRoaXMuX2NvbG9yQ29tbWFuZHM9W10sdGhpcy5fcGlja0NvbW1hbmRzPVtdLHRoaXMuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb249dC5fY3JlYXRlQm91bmRpbmdWb2x1bWVGdW5jdGlvbix0aGlzLl9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbj10Ll9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbix0aGlzLl9jcmVhdGVTaGFkZXJQcm9ncmFtRnVuY3Rpb249dC5fY3JlYXRlU2hhZGVyUHJvZ3JhbUZ1bmN0aW9uLHRoaXMuX2NyZWF0ZUNvbW1hbmRzRnVuY3Rpb249dC5fY3JlYXRlQ29tbWFuZHNGdW5jdGlvbix0aGlzLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249dC5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uLHRoaXMuX2NyZWF0ZVBpY2tPZmZzZXRzPXQuX2NyZWF0ZVBpY2tPZmZzZXRzLHRoaXMuX3BpY2tPZmZzZXRzPXZvaWQgMCx0aGlzLl9jcmVhdGVHZW9tZXRyeVJlc3VsdHM9dm9pZCAwLHRoaXMuX3JlYWR5PSExLHRoaXMuX2JhdGNoVGFibGU9dm9pZCAwLHRoaXMuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzPXZvaWQgMCx0aGlzLl9vZmZzZXRJbnN0YW5jZUV4dGVuZD12b2lkIDAsdGhpcy5fYmF0Y2hUYWJsZU9mZnNldEF0dHJpYnV0ZTJESW5kZXg9dm9pZCAwLHRoaXMuX2JhdGNoVGFibGVPZmZzZXRzVXBkYXRlZD0hMSx0aGlzLl9pbnN0YW5jZUJvdW5kaW5nU3BoZXJlcz12b2lkIDAsdGhpcy5faW5zdGFuY2VCb3VuZGluZ1NwaGVyZXNDVj12b2lkIDAsdGhpcy5fdGVtcEJvdW5kaW5nU3BoZXJlcz12b2lkIDAsdGhpcy5fcmVjb21wdXRlQm91bmRpbmdTcGhlcmVzPSExLHRoaXMuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZXNVcGRhdGVkPSExLHRoaXMuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZUF0dHJpYnV0ZUluZGljZXM9dm9pZCAwfWZ1bmN0aW9uIG5vdCh0KXtsZXQgZT10Lmxlbmd0aCxpPVtdLG49dFswXS5hdHRyaWJ1dGVzLHM7Zm9yKHMgaW4gbilpZihuLmhhc093blByb3BlcnR5KHMpJiZtKG5bc10pKXtsZXQgbz1uW3NdLHI9ITA7Zm9yKGxldCBhPTE7YTxlOysrYSl7bGV0IGg9dFthXS5hdHRyaWJ1dGVzW3NdO2lmKCFtKGgpfHxvLmNvbXBvbmVudERhdGF0eXBlIT09aC5jb21wb25lbnREYXRhdHlwZXx8by5jb21wb25lbnRzUGVyQXR0cmlidXRlIT09aC5jb21wb25lbnRzUGVyQXR0cmlidXRlfHxvLm5vcm1hbGl6ZSE9PWgubm9ybWFsaXplKXtyPSExO2JyZWFrfX1yJiZpLnB1c2gocyl9cmV0dXJuIGl9ZnVuY3Rpb24gbUoodCl7bGV0IGU9dC5sZW5ndGg7aWYoZT09PTEpcmV0dXJuIHRbMF07aWYoZT09PTIpcmV0dXJuIG50LnVucGFjayh0LDAsc290KTtpZihlPT09MylyZXR1cm4gbC51bnBhY2sodCwwLG9vdCk7aWYoZT09PTQpcmV0dXJuIGllLnVucGFjayh0LDAsZEopfWZ1bmN0aW9uIHJvdCh0LGUpe2xldCBpPXQuZ2VvbWV0cnlJbnN0YW5jZXMsbj1BcnJheS5pc0FycmF5KGkpP2k6W2ldLHM9bi5sZW5ndGg7aWYocz09PTApcmV0dXJuO2xldCBvPW5vdChuKSxyPW8ubGVuZ3RoLGE9W10saD17fSxBPXt9LGQsRT1uWzBdLmF0dHJpYnV0ZXMsXyxSLEk7Zm9yKF89MDtfPHI7KytfKVI9b1tfXSxJPUVbUl0saFtSXT1fLGEucHVzaCh7ZnVuY3Rpb25OYW1lOmBjem1fYmF0Y2hUYWJsZV8ke1J9YCxjb21wb25lbnREYXRhdHlwZTpJLmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6SS5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTpJLm5vcm1hbGl6ZX0pO28uaW5kZXhPZigiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIikhPT0tMSYmKGEucHVzaCh7ZnVuY3Rpb25OYW1lOiJjem1fYmF0Y2hUYWJsZV9ib3VuZGluZ1NwaGVyZUNlbnRlcjNESGlnaCIsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozfSx7ZnVuY3Rpb25OYW1lOiJjem1fYmF0Y2hUYWJsZV9ib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93Iixjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjN9LHtmdW5jdGlvbk5hbWU6ImN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyMkRIaWdoIixjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjN9LHtmdW5jdGlvbk5hbWU6ImN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3ciLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6M30se2Z1bmN0aW9uTmFtZToiY3ptX2JhdGNoVGFibGVfYm91bmRpbmdTcGhlcmVSYWRpdXMiLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MX0pLEEuY2VudGVyM0RIaWdoPWEubGVuZ3RoLTUsQS5jZW50ZXIzRExvdz1hLmxlbmd0aC00LEEuY2VudGVyMkRIaWdoPWEubGVuZ3RoLTMsQS5jZW50ZXIyRExvdz1hLmxlbmd0aC0yLEEucmFkaXVzPWEubGVuZ3RoLTEpLG8uaW5kZXhPZigib2Zmc2V0IikhPT0tMSYmKGEucHVzaCh7ZnVuY3Rpb25OYW1lOiJjem1fYmF0Y2hUYWJsZV9vZmZzZXQyRCIsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozfSksZD1hLmxlbmd0aC0xKSxhLnB1c2goe2Z1bmN0aW9uTmFtZToiY3ptX2JhdGNoVGFibGVfcGlja0NvbG9yIixjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITB9KTtsZXQgQz1hLmxlbmd0aCxOPW5ldyBGUChlLGEscyk7Zm9yKF89MDtfPHM7KytfKXtsZXQgVD1uW19dO0U9VC5hdHRyaWJ1dGVzO2ZvcihsZXQgUT0wO1E8cjsrK1Epe1I9b1tRXSxJPUVbUl07bGV0IFU9bUooSS52YWx1ZSksaz1oW1JdO04uc2V0QmF0Y2hlZEF0dHJpYnV0ZShfLGssVSl9bGV0IEY9e3ByaW1pdGl2ZTpaKFQucGlja1ByaW1pdGl2ZSx0KX07bShULmlkKSYmKEYuaWQ9VC5pZCk7bGV0IGI9ZS5jcmVhdGVQaWNrSWQoRik7dC5fcGlja0lkcy5wdXNoKGIpO2xldCBHPWIuY29sb3IsTT1kSjtNLng9WnQuZmxvYXRUb0J5dGUoRy5yZWQpLE0ueT1adC5mbG9hdFRvQnl0ZShHLmdyZWVuKSxNLno9WnQuZmxvYXRUb0J5dGUoRy5ibHVlKSxNLnc9WnQuZmxvYXRUb0J5dGUoRy5hbHBoYSksTi5zZXRCYXRjaGVkQXR0cmlidXRlKF8sQy0xLE0pfXQuX2JhdGNoVGFibGU9Tix0Ll9iYXRjaFRhYmxlQXR0cmlidXRlSW5kaWNlcz1oLHQuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZUF0dHJpYnV0ZUluZGljZXM9QSx0Ll9iYXRjaFRhYmxlT2Zmc2V0QXR0cmlidXRlMkRJbmRleD1kfWZ1bmN0aW9uIGFvdCh0KXtsZXQgZTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0LnZhbHVlcyk/ZT10LnZhbHVlcy5zbGljZSgwKTplPW5ldyB0LnZhbHVlcy5jb25zdHJ1Y3Rvcih0LnZhbHVlcyksbmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTp0LmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6dC5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTp0Lm5vcm1hbGl6ZSx2YWx1ZXM6ZX0pfWZ1bmN0aW9uIEFvdCh0KXtsZXQgZT10LmF0dHJpYnV0ZXMsaT1uZXcgd2U7Zm9yKGxldCBzIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShzKSYmbShlW3NdKSYmKGlbc109YW90KGVbc10pKTtsZXQgbjtpZihtKHQuaW5kaWNlcykpe2xldCBzPXQuaW5kaWNlcztBcnJheS5pc0FycmF5KHMpP249cy5zbGljZSgwKTpuPW5ldyBzLmNvbnN0cnVjdG9yKHMpfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6aSxpbmRpY2VzOm4scHJpbWl0aXZlVHlwZTp0LnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6TnQuY2xvbmUodC5ib3VuZGluZ1NwaGVyZSl9KX1mdW5jdGlvbiBob3QodCxlKXtyZXR1cm57Z2VvbWV0cnk6ZSxhdHRyaWJ1dGVzOnQuYXR0cmlidXRlcyxtb2RlbE1hdHJpeDphdC5jbG9uZSh0Lm1vZGVsTWF0cml4KSxwaWNrUHJpbWl0aXZlOnQucGlja1ByaW1pdGl2ZSxpZDp0LmlkfX1mdW5jdGlvbiBzSih0KXtyZXR1cm5gJHtNaS5yZXBsYWNlTWFpbih0LCJjem1fbm9uX3BpY2tfbWFpbiIpfQpvdXQgdmVjNCB2X3BpY2tDb2xvcjsgCnZvaWQgbWFpbigpIAp7IAogICAgY3ptX25vbl9waWNrX21haW4oKTsgCiAgICB2X3BpY2tDb2xvciA9IGN6bV9iYXRjaFRhYmxlX3BpY2tDb2xvcihiYXRjaElkKTsgCn1gfWZ1bmN0aW9uIG9KKHQpe3JldHVybmBpbiB2ZWM0IHZfcGlja0NvbG9yOwoke3R9YH1mdW5jdGlvbiBySih0LGUpe2lmKCF0LmNvbXByZXNzVmVydGljZXMpcmV0dXJuIGU7bGV0IGk9ZS5zZWFyY2goL2luXHMrdmVjM1xzK25vcm1hbDsvZykhPT0tMSxuPWUuc2VhcmNoKC9pblxzK3ZlYzJccytzdDsvZykhPT0tMTtpZighaSYmIW4pcmV0dXJuIGU7bGV0IHM9ZS5zZWFyY2goL2luXHMrdmVjM1xzK3RhbmdlbnQ7L2cpIT09LTEsbz1lLnNlYXJjaCgvaW5ccyt2ZWMzXHMrYml0YW5nZW50Oy9nKSE9PS0xLHI9biYmaT8yOjE7cis9c3x8bz8xOjA7bGV0IGE9cj4xP2B2ZWMke3J9YDoiZmxvYXQiLGg9ImNvbXByZXNzZWRBdHRyaWJ1dGVzIixBPWBpbiAke2F9ICR7aH07YCxkPSIiLGY9IiI7aWYobil7ZCs9YHZlYzIgc3Q7CmA7bGV0IFI9cj4xP2Ake2h9LnhgOmg7Zis9YCAgICBzdCA9IGN6bV9kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKCR7Un0pOwpgfWkmJnMmJm8/KGQrPWB2ZWMzIG5vcm1hbDsKdmVjMyB0YW5nZW50Owp2ZWMzIGJpdGFuZ2VudDsKYCxmKz1gICAgIGN6bV9vY3REZWNvZGUoJHtofS4ke24/Inl6IjoieHkifSwgbm9ybWFsLCB0YW5nZW50LCBiaXRhbmdlbnQpOwpgKTooaSYmKGQrPWB2ZWMzIG5vcm1hbDsKYCxmKz1gICAgIG5vcm1hbCA9IGN6bV9vY3REZWNvZGUoJHtofSR7cj4xP2AuJHtuPyJ5IjoieCJ9YDoiIn0pOwpgKSxzJiYoZCs9YHZlYzMgdGFuZ2VudDsKYCxmKz1gICAgIHRhbmdlbnQgPSBjem1fb2N0RGVjb2RlKCR7aH0uJHtuJiZpPyJ6IjoieSJ9KTsKYCksbyYmKGQrPWB2ZWMzIGJpdGFuZ2VudDsKYCxmKz1gICAgIGJpdGFuZ2VudCA9IGN6bV9vY3REZWNvZGUoJHtofS4ke24mJmk/InoiOiJ5In0pOwpgKSk7bGV0IEU9ZTtFPUUucmVwbGFjZSgvaW5ccyt2ZWMzXHMrbm9ybWFsOy9nLCIiKSxFPUUucmVwbGFjZSgvaW5ccyt2ZWMyXHMrc3Q7L2csIiIpLEU9RS5yZXBsYWNlKC9pblxzK3ZlYzNccyt0YW5nZW50Oy9nLCIiKSxFPUUucmVwbGFjZSgvaW5ccyt2ZWMzXHMrYml0YW5nZW50Oy9nLCIiKSxFPU1pLnJlcGxhY2VNYWluKEUsImN6bV9ub25fY29tcHJlc3NlZF9tYWluIik7bGV0IF89YHZvaWQgbWFpbigpIAp7IAoke2Z9ICAgIGN6bV9ub25fY29tcHJlc3NlZF9tYWluKCk7IAp9YDtyZXR1cm5bQSxkLEUsX10uam9pbihgCmApfWZ1bmN0aW9uIGxvdCh0KXtsZXQgZT1NaS5yZXBsYWNlTWFpbih0LCJjem1fbm9uX2RlcHRoX2NsYW1wX21haW4iKTtyZXR1cm4gZSs9YHZvaWQgbWFpbigpIHsKICAgIGN6bV9ub25fZGVwdGhfY2xhbXBfbWFpbigpOwogICAgZ2xfUG9zaXRpb24gPSBjem1fZGVwdGhDbGFtcChnbF9Qb3NpdGlvbik7fQpgLGV9ZnVuY3Rpb24gZG90KHQpe2xldCBlPU1pLnJlcGxhY2VNYWluKHQsImN6bV9ub25fZGVwdGhfY2xhbXBfbWFpbiIpO3JldHVybiBlKz1gdm9pZCBtYWluKCkgewogICAgY3ptX25vbl9kZXB0aF9jbGFtcF9tYWluKCk7CiAgICAjaWYgZGVmaW5lZChMT0dfREVQVEgpCiAgICAgICAgY3ptX3dyaXRlTG9nRGVwdGgoKTsKICAgICNlbHNlCiAgICAgICAgY3ptX3dyaXRlRGVwdGhDbGFtcCgpOwogICAgI2VuZGlmCn0KYCxlfWZ1bmN0aW9uIGFKKHQsZSl7bGV0IGk9dC52ZXJ0ZXhBdHRyaWJ1dGVzO2ZvcihsZXQgbiBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkobikmJiFtKGVbbl0pKXRocm93IG5ldyBZKGBBcHBlYXJhbmNlL0dlb21ldHJ5IG1pc21hdGNoLiAgVGhlIGFwcGVhcmFuY2UgcmVxdWlyZXMgdmVydGV4IHNoYWRlciBhdHRyaWJ1dGUgaW5wdXQgJyR7bn0nLCB3aGljaCB3YXMgbm90IGNvbXB1dGVkIGFzIHBhcnQgb2YgdGhlIEdlb21ldHJ5LiAgVXNlIHRoZSBhcHBlYXJhbmNlJ3MgdmVydGV4Rm9ybWF0IHByb3BlcnR5IHdoZW4gY29uc3RydWN0aW5nIHRoZSBnZW9tZXRyeS5gKX1mdW5jdGlvbiBtb3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdFtlXX19ZnVuY3Rpb24gRW90KHQsZSl7bGV0IGksbixzLG8scj10Ll9pbnN0YW5jZUlkcztpZih0Ll9zdGF0ZT09PUlzLlJFQURZKXtpPUFycmF5LmlzQXJyYXkodC5nZW9tZXRyeUluc3RhbmNlcyk/dC5nZW9tZXRyeUluc3RhbmNlczpbdC5nZW9tZXRyeUluc3RhbmNlc107bGV0IGE9dC5fbnVtYmVyT2ZJbnN0YW5jZXM9aS5sZW5ndGgsaD1bXSxBPVtdO2ZvcihzPTA7czxhOysrcyl7aWYobj1pW3NdLmdlb21ldHJ5LHIucHVzaChpW3NdLmlkKSxtKG4uX3dvcmtlck5hbWUpJiZtKG4uX3dvcmtlclBhdGgpfHwhbShuLl93b3JrZXJOYW1lKSYmIW0obi5fd29ya2VyUGF0aCkpdGhyb3cgbmV3IFkoIk11c3QgZGVmaW5lIGVpdGhlciBfd29ya2VyTmFtZSBvciBfd29ya2VyUGF0aCBmb3IgYXN5bmNocm9ub3VzIGdlb21ldHJ5LiIpO0EucHVzaCh7bW9kdWxlTmFtZTpuLl93b3JrZXJOYW1lLG1vZHVsZVBhdGg6bi5fd29ya2VyUGF0aCxnZW9tZXRyeTpufSl9aWYoIW0ocUkpKWZvcihxST1uZXcgQXJyYXkoc2IpLHM9MDtzPHNiO3MrKylxSVtzXT1uZXcgWEUoImNyZWF0ZUdlb21ldHJ5Iik7bGV0IGQ7Zm9yKEE9Z1AoQSxzYikscz0wO3M8QS5sZW5ndGg7cysrKXtsZXQgZj0wLEU9QVtzXSxfPUUubGVuZ3RoO2ZvcihvPTA7bzxfOysrbylkPUVbb10sbj1kLmdlb21ldHJ5LG0obi5jb25zdHJ1Y3Rvci5wYWNrKSYmKGQub2Zmc2V0PWYsZis9WihuLmNvbnN0cnVjdG9yLnBhY2tlZExlbmd0aCxuLnBhY2tlZExlbmd0aCkpO2xldCBSO2lmKGY+MCl7bGV0IEk9bmV3IEZsb2F0NjRBcnJheShmKTtmb3IoUj1bSS5idWZmZXJdLG89MDtvPF87KytvKWQ9RVtvXSxuPWQuZ2VvbWV0cnksbShuLmNvbnN0cnVjdG9yLnBhY2spJiYobi5jb25zdHJ1Y3Rvci5wYWNrKG4sSSxkLm9mZnNldCksZC5nZW9tZXRyeT1JKX1oLnB1c2gocUlbc10uc2NoZWR1bGVUYXNrKHtzdWJUYXNrczpBW3NdfSxSKSl9dC5fc3RhdGU9SXMuQ1JFQVRJTkcsUHJvbWlzZS5hbGwoaCkudGhlbihmdW5jdGlvbihmKXt0Ll9jcmVhdGVHZW9tZXRyeVJlc3VsdHM9Zix0Ll9zdGF0ZT1Jcy5DUkVBVEVEfSkuY2F0Y2goZnVuY3Rpb24oZil7cl8odCxlLElzLkZBSUxFRCxmKX0pfWVsc2UgaWYodC5fc3RhdGU9PT1Jcy5DUkVBVEVEKXtsZXQgYT1bXTtpPUFycmF5LmlzQXJyYXkodC5nZW9tZXRyeUluc3RhbmNlcyk/dC5nZW9tZXRyeUluc3RhbmNlczpbdC5nZW9tZXRyeUluc3RhbmNlc107bGV0IGg9ZS5zY2VuZTNET25seSxBPWUubWFwUHJvamVjdGlvbixkPWZvdC5zY2hlZHVsZVRhc2soVEEucGFja0NvbWJpbmVHZW9tZXRyeVBhcmFtZXRlcnMoe2NyZWF0ZUdlb21ldHJ5UmVzdWx0czp0Ll9jcmVhdGVHZW9tZXRyeVJlc3VsdHMsaW5zdGFuY2VzOmksZWxsaXBzb2lkOkEuZWxsaXBzb2lkLHByb2plY3Rpb246QSxlbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkOmUuY29udGV4dC5lbGVtZW50SW5kZXhVaW50LHNjZW5lM0RPbmx5OmgsdmVydGV4Q2FjaGVPcHRpbWl6ZTp0LnZlcnRleENhY2hlT3B0aW1pemUsY29tcHJlc3NWZXJ0aWNlczp0LmNvbXByZXNzVmVydGljZXMsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxjcmVhdGVQaWNrT2Zmc2V0czp0Ll9jcmVhdGVQaWNrT2Zmc2V0c30sYSksYSk7dC5fY3JlYXRlR2VvbWV0cnlSZXN1bHRzPXZvaWQgMCx0Ll9zdGF0ZT1Jcy5DT01CSU5JTkcsUHJvbWlzZS5yZXNvbHZlKGQpLnRoZW4oZnVuY3Rpb24oZil7bGV0IEU9VEEudW5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cyhmKTt0Ll9nZW9tZXRyaWVzPUUuZ2VvbWV0cmllcyx0Ll9hdHRyaWJ1dGVMb2NhdGlvbnM9RS5hdHRyaWJ1dGVMb2NhdGlvbnMsdC5tb2RlbE1hdHJpeD1hdC5jbG9uZShFLm1vZGVsTWF0cml4LHQubW9kZWxNYXRyaXgpLHQuX3BpY2tPZmZzZXRzPUUucGlja09mZnNldHMsdC5fb2Zmc2V0SW5zdGFuY2VFeHRlbmQ9RS5vZmZzZXRJbnN0YW5jZUV4dGVuZCx0Ll9pbnN0YW5jZUJvdW5kaW5nU3BoZXJlcz1FLmJvdW5kaW5nU3BoZXJlcyx0Ll9pbnN0YW5jZUJvdW5kaW5nU3BoZXJlc0NWPUUuYm91bmRpbmdTcGhlcmVzQ1YsbSh0Ll9nZW9tZXRyaWVzKSYmdC5fZ2VvbWV0cmllcy5sZW5ndGg+MD8odC5fcmVjb21wdXRlQm91bmRpbmdTcGhlcmVzPSEwLHQuX3N0YXRlPUlzLkNPTUJJTkVEKTpyXyh0LGUsSXMuRkFJTEVELHZvaWQgMCl9KS5jYXRjaChmdW5jdGlvbihmKXtyXyh0LGUsSXMuRkFJTEVELGYpfSl9fWZ1bmN0aW9uIF9vdCh0LGUpe2xldCBpPUFycmF5LmlzQXJyYXkodC5nZW9tZXRyeUluc3RhbmNlcyk/dC5nZW9tZXRyeUluc3RhbmNlczpbdC5nZW9tZXRyeUluc3RhbmNlc10sbj10Ll9udW1iZXJPZkluc3RhbmNlcz1pLmxlbmd0aCxzPW5ldyBBcnJheShuKSxvPXQuX2luc3RhbmNlSWRzLHIsYSxoPTA7Zm9yKGE9MDthPG47YSsrKXtyPWlbYV07bGV0IEU9ci5nZW9tZXRyeSxfO20oRS5hdHRyaWJ1dGVzKSYmbShFLnByaW1pdGl2ZVR5cGUpP189QW90KEUpOl89RS5jb25zdHJ1Y3Rvci5jcmVhdGVHZW9tZXRyeShFKSxzW2grK109aG90KHIsXyksby5wdXNoKHIuaWQpfXMubGVuZ3RoPWg7bGV0IEE9ZS5zY2VuZTNET25seSxkPWUubWFwUHJvamVjdGlvbixmPVRBLmNvbWJpbmVHZW9tZXRyeSh7aW5zdGFuY2VzOnMsZWxsaXBzb2lkOmQuZWxsaXBzb2lkLHByb2plY3Rpb246ZCxlbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkOmUuY29udGV4dC5lbGVtZW50SW5kZXhVaW50LHNjZW5lM0RPbmx5OkEsdmVydGV4Q2FjaGVPcHRpbWl6ZTp0LnZlcnRleENhY2hlT3B0aW1pemUsY29tcHJlc3NWZXJ0aWNlczp0LmNvbXByZXNzVmVydGljZXMsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxjcmVhdGVQaWNrT2Zmc2V0czp0Ll9jcmVhdGVQaWNrT2Zmc2V0c30pO3QuX2dlb21ldHJpZXM9Zi5nZW9tZXRyaWVzLHQuX2F0dHJpYnV0ZUxvY2F0aW9ucz1mLmF0dHJpYnV0ZUxvY2F0aW9ucyx0Lm1vZGVsTWF0cml4PWF0LmNsb25lKGYubW9kZWxNYXRyaXgsdC5tb2RlbE1hdHJpeCksdC5fcGlja09mZnNldHM9Zi5waWNrT2Zmc2V0cyx0Ll9vZmZzZXRJbnN0YW5jZUV4dGVuZD1mLm9mZnNldEluc3RhbmNlRXh0ZW5kLHQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzPWYuYm91bmRpbmdTcGhlcmVzLHQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzQ1Y9Zi5ib3VuZGluZ1NwaGVyZXNDVixtKHQuX2dlb21ldHJpZXMpJiZ0Ll9nZW9tZXRyaWVzLmxlbmd0aD4wPyh0Ll9yZWNvbXB1dGVCb3VuZGluZ1NwaGVyZXM9ITAsdC5fc3RhdGU9SXMuQ09NQklORUQpOnJfKHQsZSxJcy5GQUlMRUQsdm9pZCAwKX1mdW5jdGlvbiBSb3QodCxlKXtsZXQgaT10Ll9iYXRjaFRhYmxlQXR0cmlidXRlSW5kaWNlcy5vZmZzZXQ7aWYoIXQuX3JlY29tcHV0ZUJvdW5kaW5nU3BoZXJlc3x8IW0oaSkpe3QuX3JlY29tcHV0ZUJvdW5kaW5nU3BoZXJlcz0hMTtyZXR1cm59bGV0IG4scz10Ll9vZmZzZXRJbnN0YW5jZUV4dGVuZCxvPXQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzLHI9by5sZW5ndGgsYT10Ll90ZW1wQm91bmRpbmdTcGhlcmVzO2lmKCFtKGEpKXtmb3IoYT1uZXcgQXJyYXkociksbj0wO248cjtuKyspYVtuXT1uZXcgTnQ7dC5fdGVtcEJvdW5kaW5nU3BoZXJlcz1hfWZvcihuPTA7bjxyOysrbil7bGV0IEk9YVtuXSxDPXQuX2JhdGNoVGFibGUuZ2V0QmF0Y2hlZEF0dHJpYnV0ZShuLGksbmV3IGwpO0k9b1tuXS5jbG9uZShJKSxSSihJLEMsc1tuXSl9bGV0IGg9W10sQT1bXSxkPVtdO2ZvcihuPTA7bjxyOysrbil7bGV0IEk9YVtuXTtJLmNlbnRlci54LUkucmFkaXVzPjB8fE50LmludGVyc2VjdFBsYW5lKEksS2kuT1JJR0lOX1pYX1BMQU5FKSE9PU5uLklOVEVSU0VDVElORz9oLnB1c2goSSk6KEEucHVzaChJKSxkLnB1c2goSSkpfWxldCBmPWhbMF0sRT1kWzBdLF89QVswXTtmb3Iobj0xO248aC5sZW5ndGg7bisrKWY9TnQudW5pb24oZixoW25dKTtmb3Iobj0xO248ZC5sZW5ndGg7bisrKUU9TnQudW5pb24oRSxkW25dKTtmb3Iobj0xO248QS5sZW5ndGg7bisrKV89TnQudW5pb24oXyxBW25dKTtsZXQgUj1bXTtmb3IobShmKSYmUi5wdXNoKGYpLG0oRSkmJlIucHVzaChFKSxtKF8pJiZSLnB1c2goXyksbj0wO248Ui5sZW5ndGg7bisrKXtsZXQgST1SW25dLmNsb25lKHQuX2JvdW5kaW5nU3BoZXJlc1tuXSk7dC5fYm91bmRpbmdTcGhlcmVzW25dPUksdC5fYm91bmRpbmdTcGhlcmVDVltuXT1OdC5wcm9qZWN0VG8yRChJLGUubWFwUHJvamVjdGlvbix0Ll9ib3VuZGluZ1NwaGVyZUNWW25dKX1xbi5fdXBkYXRlQm91bmRpbmdWb2x1bWVzKHQsZSx0Lm1vZGVsTWF0cml4LCEwKSx0Ll9yZWNvbXB1dGVCb3VuZGluZ1NwaGVyZXM9ITF9ZnVuY3Rpb24gWm90KHQsZSl7aWYoIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKXx8dC5fYmF0Y2hUYWJsZUJvdW5kaW5nU3BoZXJlc1VwZGF0ZWQpcmV0dXJuO2xldCBuPXQuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZUF0dHJpYnV0ZUluZGljZXMscz1uLmNlbnRlcjNESGlnaCxvPW4uY2VudGVyM0RMb3cscj1uLmNlbnRlcjJESGlnaCxhPW4uY2VudGVyMkRMb3csaD1uLnJhZGl1cyxBPWUubWFwUHJvamVjdGlvbixkPUEuZWxsaXBzb2lkLGY9dC5fYmF0Y2hUYWJsZSxFPXQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzLF89RS5sZW5ndGg7Zm9yKGxldCBSPTA7UjxfOysrUil7bGV0IEk9RVtSXTtpZighbShJKSljb250aW51ZTtsZXQgQz10Lm1vZGVsTWF0cml4O20oQykmJihJPU50LnRyYW5zZm9ybShJLEMsX0opKTtsZXQgTj1JLmNlbnRlcixUPUkucmFkaXVzLEY9Qm4uZnJvbUNhcnRlc2lhbihOLEFKKTtpZihmLnNldEJhdGNoZWRBdHRyaWJ1dGUoUixzLEYuaGlnaCksZi5zZXRCYXRjaGVkQXR0cmlidXRlKFIsbyxGLmxvdyksIWUuc2NlbmUzRE9ubHkpe2xldCBiPWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoTixmSiksRz1BLnByb2plY3QoYixFSik7Rj1Cbi5mcm9tQ2FydGVzaWFuKEcsQUopLGYuc2V0QmF0Y2hlZEF0dHJpYnV0ZShSLHIsRi5oaWdoKSxmLnNldEJhdGNoZWRBdHRyaWJ1dGUoUixhLEYubG93KX1mLnNldEJhdGNoZWRBdHRyaWJ1dGUoUixoLFQpfXQuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZXNVcGRhdGVkPSEwfWZ1bmN0aW9uIGhKKHQsZSl7aWYoIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMub2Zmc2V0KXx8dC5fYmF0Y2hUYWJsZU9mZnNldHNVcGRhdGVkfHxlLnNjZW5lM0RPbmx5KXJldHVybjtsZXQgbj10Ll9iYXRjaFRhYmxlT2Zmc2V0QXR0cmlidXRlMkRJbmRleCxzPWUubWFwUHJvamVjdGlvbixvPXMuZWxsaXBzb2lkLHI9dC5fYmF0Y2hUYWJsZSxhPXQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzLGg9YS5sZW5ndGg7Zm9yKGxldCBBPTA7QTxoOysrQSl7bGV0IGQ9YVtBXTtpZighbShkKSljb250aW51ZTtsZXQgZj1yLmdldEJhdGNoZWRBdHRyaWJ1dGUoQSx0Ll9iYXRjaFRhYmxlQXR0cmlidXRlSW5kaWNlcy5vZmZzZXQpO2lmKGwuZXF1YWxzKGYsbC5aRVJPKSl7ci5zZXRCYXRjaGVkQXR0cmlidXRlKEEsbixsLlpFUk8pO2NvbnRpbnVlfWxldCBFPXQubW9kZWxNYXRyaXg7bShFKSYmKGQ9TnQudHJhbnNmb3JtKGQsRSxfSikpO2xldCBfPWQuY2VudGVyO189by5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKF8sSW90KTtsZXQgUj1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKF8sZkopLEk9cy5wcm9qZWN0KFIsRUopLEM9bC5hZGQoZixfLG9iKTtSPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoQyxSKTtsZXQgTj1zLnByb2plY3QoUixvYiksVD1sLnN1YnRyYWN0KE4sSSxvYiksRj1ULng7VC54PVQueixULno9VC55LFQueT1GLHIuc2V0QmF0Y2hlZEF0dHJpYnV0ZShBLG4sVCl9dC5fYmF0Y2hUYWJsZU9mZnNldHNVcGRhdGVkPSEwfWZ1bmN0aW9uIHBvdCh0LGUpe2xldCBpPXQuX2F0dHJpYnV0ZUxvY2F0aW9ucyxuPXQuX2dlb21ldHJpZXMscz1lLnNjZW5lM0RPbmx5LG89ZS5jb250ZXh0LHI9W10sYT1uLmxlbmd0aDtmb3IobGV0IGg9MDtoPGE7KytoKXtsZXQgQT1uW2hdO2lmKHIucHVzaChtSS5mcm9tR2VvbWV0cnkoe2NvbnRleHQ6byxnZW9tZXRyeTpBLGF0dHJpYnV0ZUxvY2F0aW9uczppLGJ1ZmZlclVzYWdlOmFpLlNUQVRJQ19EUkFXLGludGVybGVhdmU6dC5faW50ZXJsZWF2ZX0pKSxtKHQuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb24pKXQuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb24oZSxBKTtlbHNlIGlmKHQuX2JvdW5kaW5nU3BoZXJlcy5wdXNoKE50LmNsb25lKEEuYm91bmRpbmdTcGhlcmUpKSx0Ll9ib3VuZGluZ1NwaGVyZVdDLnB1c2gobmV3IE50KSwhcyl7bGV0IGQ9QS5ib3VuZGluZ1NwaGVyZUNWLmNlbnRlcixmPWQueCxFPWQueSxfPWQuejtkLng9XyxkLnk9ZixkLno9RSx0Ll9ib3VuZGluZ1NwaGVyZUNWLnB1c2goTnQuY2xvbmUoQS5ib3VuZGluZ1NwaGVyZUNWKSksdC5fYm91bmRpbmdTcGhlcmUyRC5wdXNoKG5ldyBOdCksdC5fYm91bmRpbmdTcGhlcmVNb3JwaC5wdXNoKG5ldyBOdCl9fXQuX3ZhPXIsdC5fcHJpbWl0aXZlVHlwZT1uWzBdLnByaW1pdGl2ZVR5cGUsdC5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMmJih0Lmdlb21ldHJ5SW5zdGFuY2VzPXZvaWQgMCksdC5fZ2VvbWV0cmllcz12b2lkIDAscl8odCxlLElzLkNPTVBMRVRFLHZvaWQgMCl9ZnVuY3Rpb24gdW90KHQsZSxpLG4pe2xldCBzPWkuZ2V0UmVuZGVyU3RhdGUoKSxvO24/KG89cXMocywhMSksby5jdWxsPXtlbmFibGVkOiEwLGZhY2U6RWguQkFDS30sdC5fZnJvbnRGYWNlUlM9WW4uZnJvbUNhY2hlKG8pLG8uY3VsbC5mYWNlPUVoLkZST05ULHQuX2JhY2tGYWNlUlM9WW4uZnJvbUNhY2hlKG8pKToodC5fZnJvbnRGYWNlUlM9WW4uZnJvbUNhY2hlKHMpLHQuX2JhY2tGYWNlUlM9dC5fZnJvbnRGYWNlUlMpLG89cXMocywhMSksbSh0Ll9kZXB0aEZhaWxBcHBlYXJhbmNlKSYmKG8uZGVwdGhUZXN0LmVuYWJsZWQ9ITEpLG0odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSkmJihzPXQuX2RlcHRoRmFpbEFwcGVhcmFuY2UuZ2V0UmVuZGVyU3RhdGUoKSxvPXFzKHMsITEpLG8uZGVwdGhUZXN0LmZ1bmM9d0kuR1JFQVRFUixuPyhvLmN1bGw9e2VuYWJsZWQ6ITAsZmFjZTpFaC5CQUNLfSx0Ll9mcm9udEZhY2VEZXB0aEZhaWxSUz1Zbi5mcm9tQ2FjaGUobyksby5jdWxsLmZhY2U9RWguRlJPTlQsdC5fYmFja0ZhY2VEZXB0aEZhaWxSUz1Zbi5mcm9tQ2FjaGUobykpOih0Ll9mcm9udEZhY2VEZXB0aEZhaWxSUz1Zbi5mcm9tQ2FjaGUobyksdC5fYmFja0ZhY2VEZXB0aEZhaWxSUz10Ll9mcm9udEZhY2VSUykpfWZ1bmN0aW9uIENvdCh0LGUsaSl7bGV0IG49ZS5jb250ZXh0LHM9dC5fYXR0cmlidXRlTG9jYXRpb25zLG89dC5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKGkudmVydGV4U2hhZGVyU291cmNlKTtvPXFuLl9hcHBlbmRPZmZzZXRUb1NoYWRlcih0LG8pLG89cW4uX2FwcGVuZFNob3dUb1NoYWRlcih0LG8pLG89cW4uX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKHQsbyxlLnNjZW5lM0RPbmx5KSxvPXNKKG8pLG89cW4uX3VwZGF0ZUNvbG9yQXR0cmlidXRlKHQsbywhMSksbz1ySih0LG8pLG89cW4uX21vZGlmeVNoYWRlclBvc2l0aW9uKHQsbyxlLnNjZW5lM0RPbmx5KTtsZXQgcj1pLmdldEZyYWdtZW50U2hhZGVyU291cmNlKCk7cj1vSihyKSx0Ll9zcD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6bixzaGFkZXJQcm9ncmFtOnQuX3NwLHZlcnRleFNoYWRlclNvdXJjZTpvLGZyYWdtZW50U2hhZGVyU291cmNlOnIsYXR0cmlidXRlTG9jYXRpb25zOnN9KSxhSih0Ll9zcCxzKSxtKHQuX2RlcHRoRmFpbEFwcGVhcmFuY2UpJiYobz10Ll9iYXRjaFRhYmxlLmdldFZlcnRleFNoYWRlckNhbGxiYWNrKCkodC5fZGVwdGhGYWlsQXBwZWFyYW5jZS52ZXJ0ZXhTaGFkZXJTb3VyY2UpLG89cW4uX2FwcGVuZFNob3dUb1NoYWRlcih0LG8pLG89cW4uX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKHQsbyxlLnNjZW5lM0RPbmx5KSxvPXNKKG8pLG89cW4uX3VwZGF0ZUNvbG9yQXR0cmlidXRlKHQsbywhMCksbz1ySih0LG8pLG89cW4uX21vZGlmeVNoYWRlclBvc2l0aW9uKHQsbyxlLnNjZW5lM0RPbmx5KSxvPWxvdChvKSxyPXQuX2RlcHRoRmFpbEFwcGVhcmFuY2UuZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSxyPW9KKHIpLHI9ZG90KHIpLHQuX3NwRGVwdGhGYWlsPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dC5fc3BEZXB0aEZhaWwsdmVydGV4U2hhZGVyU291cmNlOm8sZnJhZ21lbnRTaGFkZXJTb3VyY2U6cixhdHRyaWJ1dGVMb2NhdGlvbnM6c30pLGFKKHQuX3NwRGVwdGhGYWlsLHMpKX1mdW5jdGlvbiBsSih0LGUsaSxuKXtsZXQgcz1tKGkpP2kuX3VuaWZvcm1zOnZvaWQgMCxvPXt9LHI9ZS51bmlmb3JtcztpZihtKHIpKXtmb3IobGV0IGggaW4gcilpZihyLmhhc093blByb3BlcnR5KGgpKXtpZihtKHMpJiZtKHNbaF0pKXRocm93IG5ldyBZKGBBcHBlYXJhbmNlIGFuZCBtYXRlcmlhbCBoYXZlIGEgdW5pZm9ybSB3aXRoIHRoZSBzYW1lIG5hbWU6ICR7aH1gKTtvW2hdPW1vdChyLGgpfX1sZXQgYT1lcyhvLHMpO3JldHVybiBhPXQuX2JhdGNoVGFibGUuZ2V0VW5pZm9ybU1hcENhbGxiYWNrKCkoYSksbSh0LnJ0Y0NlbnRlcikmJihhLnVfbW9kaWZpZWRNb2RlbFZpZXc9ZnVuY3Rpb24oKXtsZXQgaD1uLmNvbnRleHQudW5pZm9ybVN0YXRlLnZpZXc7cmV0dXJuIGF0Lm11bHRpcGx5KGgsdC5fbW9kZWxNYXRyaXgsb18pLGF0Lm11bHRpcGx5QnlQb2ludChvXyx0LnJ0Y0NlbnRlcixjSiksYXQuc2V0VHJhbnNsYXRpb24ob18sY0osb18pLG9ffSksYX1mdW5jdGlvbiBnb3QodCxlLGksbixzLG8scixhKXtsZXQgaD1sSih0LGUsaSxhKSxBO20odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSkmJihBPWxKKHQsdC5fZGVwdGhGYWlsQXBwZWFyYW5jZSx0Ll9kZXB0aEZhaWxBcHBlYXJhbmNlLm1hdGVyaWFsLGEpKTtsZXQgZD1uP29zLlRSQU5TTFVDRU5UOm9zLk9QQVFVRSxmPXM/MjoxO2YqPW0odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSk/MjoxLG8ubGVuZ3RoPXQuX3ZhLmxlbmd0aCpmO2xldCBFPW8ubGVuZ3RoLF89MDtmb3IobGV0IFI9MDtSPEU7KytSKXtsZXQgSTtzJiYoST1vW1JdLG0oSSl8fChJPW9bUl09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6dC5fcHJpbWl0aXZlVHlwZX0pKSxJLnZlcnRleEFycmF5PXQuX3ZhW19dLEkucmVuZGVyU3RhdGU9dC5fYmFja0ZhY2VSUyxJLnNoYWRlclByb2dyYW09dC5fc3AsSS51bmlmb3JtTWFwPWgsSS5wYXNzPWQsKytSKSxJPW9bUl0sbShJKXx8KEk9b1tSXT1uZXcgZm4oe293bmVyOnQscHJpbWl0aXZlVHlwZTp0Ll9wcmltaXRpdmVUeXBlfSkpLEkudmVydGV4QXJyYXk9dC5fdmFbX10sSS5yZW5kZXJTdGF0ZT10Ll9mcm9udEZhY2VSUyxJLnNoYWRlclByb2dyYW09dC5fc3AsSS51bmlmb3JtTWFwPWgsSS5wYXNzPWQsbSh0Ll9kZXB0aEZhaWxBcHBlYXJhbmNlKSYmKHMmJigrK1IsST1vW1JdLG0oSSl8fChJPW9bUl09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6dC5fcHJpbWl0aXZlVHlwZX0pKSxJLnZlcnRleEFycmF5PXQuX3ZhW19dLEkucmVuZGVyU3RhdGU9dC5fYmFja0ZhY2VEZXB0aEZhaWxSUyxJLnNoYWRlclByb2dyYW09dC5fc3BEZXB0aEZhaWwsSS51bmlmb3JtTWFwPUEsSS5wYXNzPWQpLCsrUixJPW9bUl0sbShJKXx8KEk9b1tSXT1uZXcgZm4oe293bmVyOnQscHJpbWl0aXZlVHlwZTp0Ll9wcmltaXRpdmVUeXBlfSkpLEkudmVydGV4QXJyYXk9dC5fdmFbX10sSS5yZW5kZXJTdGF0ZT10Ll9mcm9udEZhY2VEZXB0aEZhaWxSUyxJLnNoYWRlclByb2dyYW09dC5fc3BEZXB0aEZhaWwsSS51bmlmb3JtTWFwPUEsSS5wYXNzPWQpLCsrX319ZnVuY3Rpb24gVG90KHQsZSxpLG4scyxvLHIsYSl7aWYoZS5tb2RlIT09eWUuU0NFTkUzRCYmIWF0LmVxdWFscyhzLGF0LklERU5USVRZKSl0aHJvdyBuZXcgWSgiUHJpbWl0aXZlLm1vZGVsTWF0cml4IGlzIG9ubHkgc3VwcG9ydGVkIGluIDNEIG1vZGUuIik7cW4uX3VwZGF0ZUJvdW5kaW5nVm9sdW1lcyh0LGUscyk7bGV0IGg7ZS5tb2RlPT09eWUuU0NFTkUzRD9oPXQuX2JvdW5kaW5nU3BoZXJlV0M6ZS5tb2RlPT09eWUuQ09MVU1CVVNfVklFVz9oPXQuX2JvdW5kaW5nU3BoZXJlQ1Y6ZS5tb2RlPT09eWUuU0NFTkUyRCYmbSh0Ll9ib3VuZGluZ1NwaGVyZTJEKT9oPXQuX2JvdW5kaW5nU3BoZXJlMkQ6bSh0Ll9ib3VuZGluZ1NwaGVyZU1vcnBoKSYmKGg9dC5fYm91bmRpbmdTcGhlcmVNb3JwaCk7bGV0IEE9ZS5jb21tYW5kTGlzdCxkPWUucGFzc2VzO2lmKGQucmVuZGVyfHxkLnBpY2spe2xldCBmPXQuYWxsb3dQaWNraW5nLEU9WEkuY2FzdFNoYWRvd3ModC5zaGFkb3dzKSxfPVhJLnJlY2VpdmVTaGFkb3dzKHQuc2hhZG93cyksUj1pLmxlbmd0aCxJPWE/MjoxO0kqPW0odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSk/MjoxO2ZvcihsZXQgQz0wO0M8UjsrK0Mpe2xldCBOPU1hdGguZmxvb3IoQy9JKSxUPWlbQ107VC5tb2RlbE1hdHJpeD1zLFQuYm91bmRpbmdWb2x1bWU9aFtOXSxULmN1bGw9byxULmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXIsVC5jYXN0U2hhZG93cz1FLFQucmVjZWl2ZVNoYWRvd3M9XyxmP1QucGlja0lkPSJ2X3BpY2tDb2xvciI6VC5waWNrSWQ9dm9pZCAwLEEucHVzaChUKX19fWZ1bmN0aW9uIFJKKHQsZSxpKXtpZihpPT09UGUuVE9QKXtsZXQgbj1OdC5jbG9uZSh0LE5vdCkscz1OdC5jbG9uZSh0LGJvdCk7cy5jZW50ZXI9bC5hZGQocy5jZW50ZXIsZSxzLmNlbnRlciksdD1OdC51bmlvbihuLHMsdCl9ZWxzZSBpPT09UGUuQUxMJiYodC5jZW50ZXI9bC5hZGQodC5jZW50ZXIsZSx0LmNlbnRlcikpO3JldHVybiB0fWZ1bmN0aW9uIEZvdCh0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IG49dC5nZXRCYXRjaGVkQXR0cmlidXRlKGUsaSkscz10LmF0dHJpYnV0ZXNbaV0sbz1zLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUscj1BdC5jcmVhdGVUeXBlZEFycmF5KHMuY29tcG9uZW50RGF0YXR5cGUsbyk7cmV0dXJuIG0obi5jb25zdHJ1Y3Rvci5wYWNrKT9uLmNvbnN0cnVjdG9yLnBhY2sobixyLDApOnJbMF09bixyfX1mdW5jdGlvbiBZb3QodCxlLGksbixzKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYoIW0obyl8fCFtKG8ubGVuZ3RoKXx8by5sZW5ndGg8MXx8by5sZW5ndGg+NCl0aHJvdyBuZXcgWSgidmFsdWUgbXVzdCBiZSBhbmQgYXJyYXkgd2l0aCBsZW5ndGggYmV0d2VlbiAxIGFuZCA0LiIpO2xldCByPW1KKG8pO3Quc2V0QmF0Y2hlZEF0dHJpYnV0ZShlLGkscikscz09PSJvZmZzZXQiJiYobi5fcmVjb21wdXRlQm91bmRpbmdTcGhlcmVzPSEwLG4uX2JhdGNoVGFibGVPZmZzZXRzVXBkYXRlZD0hMSl9fWZ1bmN0aW9uIE9vdCh0LGUsaSl7ZS5ib3VuZGluZ1NwaGVyZT17Z2V0OmZ1bmN0aW9uKCl7bGV0IG49dC5faW5zdGFuY2VCb3VuZGluZ1NwaGVyZXNbaV07aWYobShuKSl7bj1uLmNsb25lKCk7bGV0IHM9dC5tb2RlbE1hdHJpeCxvPWUub2Zmc2V0O20obykmJlJKKG4sbC5mcm9tQXJyYXkoby5nZXQoKSwwLFNvdCksdC5fb2Zmc2V0SW5zdGFuY2VFeHRlbmRbaV0pLG0ocykmJihuPU50LnRyYW5zZm9ybShuLHMpKX1yZXR1cm4gbn19LGUuYm91bmRpbmdTcGhlcmVDVj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzQ1ZbaV19fX1mdW5jdGlvbiBWb3QodCxlLGkpe2UucGlja0lkPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5fcGlja0lkc1tpXX19fWZ1bmN0aW9uIHJfKHQsZSxpLG4pe3QuX2Vycm9yPW4sdC5fc3RhdGU9aSxlLmFmdGVyUmVuZGVyLnB1c2goZnVuY3Rpb24oKXt0Ll9yZWFkeT10Ll9zdGF0ZT09PUlzLkNPTVBMRVRFfHx0Ll9zdGF0ZT09PUlzLkZBSUxFRH0pfXZhciBzb3Qsb290LGRKLGNvdCxzYixxSSxmb3QsQUosZkosRUosX0osb2IsSW90LG9fLGNKLE5vdCxib3QsU290LHZzLHJiPU8oKCk9PntfaSgpO1hlKCk7SHQoKTtWcygpO3JpKCk7YUUoKTtRbigpO0tBKCk7b2koKTtidCgpO210KCk7V3MoKTtWdCgpO1RsKCk7SWwoKTt5aSgpO2ppKCk7RW4oKTtnbygpO25jKCk7RmkoKTtuaCgpO1BzKCk7VFAoKTtrTigpO05sKCk7Z2EoKTtCbSgpO1dtKCk7TW0oKTtRbSgpO0ZsKCk7VlQoKTtZUCgpO1VJKCk7UE4oKTtLSSgpO2lKKCk7dWEoKTtuSigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHFuLnByb3RvdHlwZSx7dmVydGV4Q2FjaGVPcHRpbWl6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleENhY2hlT3B0aW1pemV9fSxpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW50ZXJsZWF2ZX19LHJlbGVhc2VHZW9tZXRyeUluc3RhbmNlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbGVhc2VHZW9tZXRyeUluc3RhbmNlc319LGFsbG93UGlja2luZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FzeW5jaHJvbm91c319LGNvbXByZXNzVmVydGljZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wcmVzc1ZlcnRpY2VzfX0scmVhZHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkeX19fSk7c290PW5ldyBudCxvb3Q9bmV3IGwsZEo9bmV3IGllO2NvdD0vaW5ccyt2ZWMoPzozfDQpXHMrKC4qKTNESGlnaDsvZztxbi5fbW9kaWZ5U2hhZGVyUG9zaXRpb249ZnVuY3Rpb24odCxlLGkpe2xldCBuLHM9IiIsbz0iIixyPSIiO2Zvcig7KG49Y290LmV4ZWMoZSkpIT09bnVsbDspe2xldCBhPW5bMV0saD1gdmVjNCBjem1fY29tcHV0ZSR7YVswXS50b1VwcGVyQ2FzZSgpfSR7YS5zdWJzdHIoMSl9KClgO2ghPT0idmVjNCBjem1fY29tcHV0ZVBvc2l0aW9uKCkiJiYocys9YCR7aH07CmApLG0odC5ydGNDZW50ZXIpPyhlPWUucmVwbGFjZSgvaW5ccyt2ZWMoPzozfDQpXHMrcG9zaXRpb24zREhpZ2g7L2csIiIpLGU9ZS5yZXBsYWNlKC9pblxzK3ZlYyg/OjN8NClccytwb3NpdGlvbjNETG93Oy9nLCIiKSxzKz1gdW5pZm9ybSBtYXQ0IHVfbW9kaWZpZWRNb2RlbFZpZXc7CmAsbys9YGluIHZlYzQgcG9zaXRpb247CmAscis9YCR7aH0KewogICAgcmV0dXJuIHVfbW9kaWZpZWRNb2RlbFZpZXcgKiBwb3NpdGlvbjsKfQoKYCxlPWUucmVwbGFjZSgvY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWVccytcKlxzKy9nLCIiKSxlPWUucmVwbGFjZSgvY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllL2csImN6bV9wcm9qZWN0aW9uIikpOmk/cis9YCR7aH0KewogICAgcmV0dXJuIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKCR7YX0zREhpZ2gsICR7YX0zRExvdyk7Cn0KCmA6KG8rPWBpbiB2ZWMzICR7YX0yREhpZ2g7CmluIHZlYzMgJHthfTJETG93OwpgLHIrPWAke2h9CnsKICAgIHZlYzQgcDsKICAgIGlmIChjem1fbW9ycGhUaW1lID09IDEuMCkKICAgIHsKICAgICAgICBwID0gY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUoJHthfTNESGlnaCwgJHthfTNETG93KTsKICAgIH0KICAgIGVsc2UgaWYgKGN6bV9tb3JwaFRpbWUgPT0gMC4wKQogICAgewogICAgICAgIHAgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZSgke2F9MkRIaWdoLnp4eSwgJHthfTJETG93Lnp4eSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcCA9IGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaCgKICAgICAgICAgICAgICAgIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKCR7YX0yREhpZ2guenh5LCAke2F9MkRMb3cuenh5KSwKICAgICAgICAgICAgICAgIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKCR7YX0zREhpZ2gsICR7YX0zRExvdyksCiAgICAgICAgICAgICAgICBjem1fbW9ycGhUaW1lKTsKICAgIH0KICAgIHJldHVybiBwOwp9CgpgKX1yZXR1cm5bcyxvLGUscl0uam9pbihgCmApfTtxbi5fYXBwZW5kU2hvd1RvU2hhZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuc2hvdyk/YCR7TWkucmVwbGFjZU1haW4oZSwiY3ptX25vbl9zaG93X21haW4iKX0Kdm9pZCBtYWluKCkgCnsgCiAgICBjem1fbm9uX3Nob3dfbWFpbigpOyAKICAgIGdsX1Bvc2l0aW9uICo9IGN6bV9iYXRjaFRhYmxlX3Nob3coYmF0Y2hJZCk7IAp9YDplfTtxbi5fdXBkYXRlQ29sb3JBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzLmNvbG9yKSYmIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuZGVwdGhGYWlsQ29sb3IpfHxlLnNlYXJjaCgvaW5ccyt2ZWM0XHMrY29sb3I7L2cpPT09LTEpcmV0dXJuIGU7aWYoaSYmIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuZGVwdGhGYWlsQ29sb3IpKXRocm93IG5ldyBZKCJBIGRlcHRoRmFpbENvbG9yIHBlci1pbnN0YW5jZSBhdHRyaWJ1dGUgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBhIGRlcHRoIGZhaWwgYXBwZWFyYW5jZSB0aGF0IHVzZXMgYSBjb2xvciBhdHRyaWJ1dGUuIik7bGV0IG49ZTtyZXR1cm4gbj1uLnJlcGxhY2UoL2luXHMrdmVjNFxzK2NvbG9yOy9nLCIiKSxpP249bi5yZXBsYWNlKC8oXGIpY29sb3IoXGIpL2csIiQxY3ptX2JhdGNoVGFibGVfZGVwdGhGYWlsQ29sb3IoYmF0Y2hJZCkkMiIpOm49bi5yZXBsYWNlKC8oXGIpY29sb3IoXGIpL2csIiQxY3ptX2JhdGNoVGFibGVfY29sb3IoYmF0Y2hJZCkkMiIpLG59O3FuLl91cGRhdGVQaWNrQ29sb3JBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7bGV0IGU9dC5yZXBsYWNlKC9pblxzK3ZlYzRccytwaWNrQ29sb3I7L2csIiIpO3JldHVybiBlPWUucmVwbGFjZSgvKFxiKXBpY2tDb2xvcihcYikvZywiJDFjem1fYmF0Y2hUYWJsZV9waWNrQ29sb3IoYmF0Y2hJZCkkMiIpLGV9O3FuLl9hcHBlbmRPZmZzZXRUb1NoYWRlcj1mdW5jdGlvbih0LGUpe2lmKCFtKHQuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzLm9mZnNldCkpcmV0dXJuIGU7bGV0IGk9YGluIGZsb2F0IGJhdGNoSWQ7CmA7aSs9ImluIGZsb2F0IGFwcGx5T2Zmc2V0OyI7bGV0IG49ZS5yZXBsYWNlKC9pblxzK2Zsb2F0XHMrYmF0Y2hJZDsvZyxpKSxzPWB2ZWM0ICQxID0gY3ptX2NvbXB1dGVQb3NpdGlvbigpOwpgO3JldHVybiBzKz1gICAgIGlmIChjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUzRCkKYCxzKz1gICAgIHsKYCxzKz0iICAgICAgICAkMSA9ICQxICsgdmVjNChjem1fYmF0Y2hUYWJsZV9vZmZzZXQoYmF0Y2hJZCkgKiBhcHBseU9mZnNldCwgMC4wKTsiLHMrPWAgICAgfQpgLHMrPWAgICAgZWxzZQpgLHMrPWAgICAgewpgLHMrPSIgICAgICAgICQxID0gJDEgKyB2ZWM0KGN6bV9iYXRjaFRhYmxlX29mZnNldDJEKGJhdGNoSWQpICogYXBwbHlPZmZzZXQsIDAuMCk7IixzKz1gICAgIH0KYCxuPW4ucmVwbGFjZSgvdmVjNFxzKyhbQS1aYS16MC05X10rKVxzKz1ccytjem1fY29tcHV0ZVBvc2l0aW9uXChcKTsvZyxzKSxufTtxbi5fYXBwZW5kRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uVG9TaGFkZXI9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbikpcmV0dXJuIGU7bGV0IG49TWkucmVwbGFjZU1haW4oZSwiY3ptX25vbl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25fbWFpbiIpLHM9YHZvaWQgbWFpbigpIAp7IAogICAgY3ptX25vbl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25fbWFpbigpOyAKICAgIHZlYzIgZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uID0gY3ptX2JhdGNoVGFibGVfZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKGJhdGNoSWQpOwogICAgdmVjMyBib3VuZGluZ1NwaGVyZUNlbnRlcjNESGlnaCA9IGN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyM0RIaWdoKGJhdGNoSWQpOwogICAgdmVjMyBib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93ID0gY3ptX2JhdGNoVGFibGVfYm91bmRpbmdTcGhlcmVDZW50ZXIzRExvdyhiYXRjaElkKTsKICAgIGZsb2F0IGJvdW5kaW5nU3BoZXJlUmFkaXVzID0gY3ptX2JhdGNoVGFibGVfYm91bmRpbmdTcGhlcmVSYWRpdXMoYmF0Y2hJZCk7CmA7cmV0dXJuIGk/cys9YCAgICB2ZWM0IGNlbnRlclJURSA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKGJvdW5kaW5nU3BoZXJlQ2VudGVyM0RIaWdoLCBib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93KTsKYDpzKz1gICAgIHZlYzMgYm91bmRpbmdTcGhlcmVDZW50ZXIyREhpZ2ggPSBjem1fYmF0Y2hUYWJsZV9ib3VuZGluZ1NwaGVyZUNlbnRlcjJESGlnaChiYXRjaElkKTsKICAgIHZlYzMgYm91bmRpbmdTcGhlcmVDZW50ZXIyRExvdyA9IGN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3coYmF0Y2hJZCk7CiAgICB2ZWM0IGNlbnRlclJURTsKICAgIGlmIChjem1fbW9ycGhUaW1lID09IDEuMCkKICAgIHsKICAgICAgICBjZW50ZXJSVEUgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShib3VuZGluZ1NwaGVyZUNlbnRlcjNESGlnaCwgYm91bmRpbmdTcGhlcmVDZW50ZXIzRExvdyk7CiAgICB9CiAgICBlbHNlIGlmIChjem1fbW9ycGhUaW1lID09IDAuMCkKICAgIHsKICAgICAgICBjZW50ZXJSVEUgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShib3VuZGluZ1NwaGVyZUNlbnRlcjJESGlnaC56eHksIGJvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3cuenh5KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBjZW50ZXJSVEUgPSBjem1fY29sdW1idXNWaWV3TW9ycGgoCiAgICAgICAgICAgICAgICBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShib3VuZGluZ1NwaGVyZUNlbnRlcjJESGlnaC56eHksIGJvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3cuenh5KSwKICAgICAgICAgICAgICAgIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKGJvdW5kaW5nU3BoZXJlQ2VudGVyM0RIaWdoLCBib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93KSwKICAgICAgICAgICAgICAgIGN6bV9tb3JwaFRpbWUpOwogICAgfQpgLHMrPWAgICAgZmxvYXQgcmFkaXVzU3EgPSBib3VuZGluZ1NwaGVyZVJhZGl1cyAqIGJvdW5kaW5nU3BoZXJlUmFkaXVzOyAKICAgIGZsb2F0IGRpc3RhbmNlU3E7IAogICAgaWYgKGN6bV9zY2VuZU1vZGUgPT0gY3ptX3NjZW5lTW9kZTJEKSAKICAgIHsgCiAgICAgICAgZGlzdGFuY2VTcSA9IGN6bV9leWVIZWlnaHQyRC55IC0gcmFkaXVzU3E7IAogICAgfSAKICAgIGVsc2UgCiAgICB7IAogICAgICAgIGRpc3RhbmNlU3EgPSBkb3QoY2VudGVyUlRFLnh5eiwgY2VudGVyUlRFLnh5eikgLSByYWRpdXNTcTsgCiAgICB9IAogICAgZGlzdGFuY2VTcSA9IG1heChkaXN0YW5jZVNxLCAwLjApOyAKICAgIGZsb2F0IG5lYXJTcSA9IGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbi54ICogZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLng7IAogICAgZmxvYXQgZmFyU3EgPSBkaXN0YW5jZURpc3BsYXlDb25kaXRpb24ueSAqIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbi55OyAKICAgIGZsb2F0IHNob3cgPSAoZGlzdGFuY2VTcSA+PSBuZWFyU3EgJiYgZGlzdGFuY2VTcSA8PSBmYXJTcSkgPyAxLjAgOiAwLjA7IAogICAgZ2xfUG9zaXRpb24gKj0gc2hvdzsgCn1gLGAke259CiR7c31gfTtzYj1NYXRoLm1heChfby5oYXJkd2FyZUNvbmN1cnJlbmN5LTEsMSksZm90PW5ldyBYRSgiY29tYmluZUdlb21ldHJ5Iik7QUo9bmV3IEJuLGZKPW5ldyB1dCxFSj1uZXcgbCxfSj1uZXcgTnQ7b2I9bmV3IGwsSW90PW5ldyBsO29fPW5ldyBhdCxjSj1uZXcgbDtxbi5fdXBkYXRlQm91bmRpbmdWb2x1bWVzPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzLG8scjtpZihufHwhYXQuZXF1YWxzKGksdC5fbW9kZWxNYXRyaXgpKWZvcihhdC5jbG9uZShpLHQuX21vZGVsTWF0cml4KSxvPXQuX2JvdW5kaW5nU3BoZXJlcy5sZW5ndGgscz0wO3M8bzsrK3Mpcj10Ll9ib3VuZGluZ1NwaGVyZXNbc10sbShyKSYmKHQuX2JvdW5kaW5nU3BoZXJlV0Nbc109TnQudHJhbnNmb3JtKHIsaSx0Ll9ib3VuZGluZ1NwaGVyZVdDW3NdKSxlLnNjZW5lM0RPbmx5fHwodC5fYm91bmRpbmdTcGhlcmUyRFtzXT1OdC5jbG9uZSh0Ll9ib3VuZGluZ1NwaGVyZUNWW3NdLHQuX2JvdW5kaW5nU3BoZXJlMkRbc10pLHQuX2JvdW5kaW5nU3BoZXJlMkRbc10uY2VudGVyLng9MCx0Ll9ib3VuZGluZ1NwaGVyZU1vcnBoW3NdPU50LnVuaW9uKHQuX2JvdW5kaW5nU3BoZXJlV0Nbc10sdC5fYm91bmRpbmdTcGhlcmVDVltzXSkpKTtsZXQgYT10LmFwcGVhcmFuY2UucGl4ZWxTaXplO2lmKG0oYSkpZm9yKG89dC5fYm91bmRpbmdTcGhlcmVzLmxlbmd0aCxzPTA7czxvOysrcyl7cj10Ll9ib3VuZGluZ1NwaGVyZXNbc107bGV0IGg9dC5fYm91bmRpbmdTcGhlcmVXQ1tzXSxkPWUuY2FtZXJhLmdldFBpeGVsU2l6ZShyLGUuY29udGV4dC5kcmF3aW5nQnVmZmVyV2lkdGgsZS5jb250ZXh0LmRyYXdpbmdCdWZmZXJIZWlnaHQpKmE7aC5yYWRpdXM9ci5yYWRpdXMrZH19O3FuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7aWYoIW0odGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJnRoaXMuX3ZhLmxlbmd0aD09PTB8fG0odGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJkFycmF5LmlzQXJyYXkodGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJnRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMubGVuZ3RoPT09MHx8IW0odGhpcy5hcHBlYXJhbmNlKXx8dC5tb2RlIT09eWUuU0NFTkUzRCYmdC5zY2VuZTNET25seXx8IXQucGFzc2VzLnJlbmRlciYmIXQucGFzc2VzLnBpY2spcmV0dXJuO2lmKG0odGhpcy5fZXJyb3IpKXRocm93IHRoaXMuX2Vycm9yO2lmKG0odGhpcy5ydGNDZW50ZXIpJiYhdC5zY2VuZTNET25seSl0aHJvdyBuZXcgWSgiUlRDIHJlbmRlcmluZyBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgM0Qgb25seSBzY2VuZXMuIik7aWYodGhpcy5fc3RhdGU9PT1Jcy5GQUlMRUQpcmV0dXJuO2xldCBlPXQuY29udGV4dDtpZihtKHRoaXMuX2JhdGNoVGFibGUpfHxyb3QodGhpcyxlKSx0aGlzLl9iYXRjaFRhYmxlLmF0dHJpYnV0ZXMubGVuZ3RoPjApe2lmKGVuLm1heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cz09PTApdGhyb3cgbmV3IGtlKCJWZXJ0ZXggdGV4dHVyZSBmZXRjaCBzdXBwb3J0IGlzIHJlcXVpcmVkIHRvIHJlbmRlciBwcmltaXRpdmVzIHdpdGggcGVyLWluc3RhbmNlIGF0dHJpYnV0ZXMuIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2ZXJ0ZXggdGV4dHVyZSBpbWFnZSB1bml0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO3RoaXMuX2JhdGNoVGFibGUudXBkYXRlKHQpfWlmKHRoaXMuX3N0YXRlIT09SXMuQ09NUExFVEUmJnRoaXMuX3N0YXRlIT09SXMuQ09NQklORUQmJih0aGlzLmFzeW5jaHJvbm91cz9Fb3QodGhpcyx0KTpfb3QodGhpcyx0KSksdGhpcy5fc3RhdGU9PT1Jcy5DT01CSU5FRCYmKFpvdCh0aGlzLHQpLGhKKHRoaXMsdCkscG90KHRoaXMsdCkpLCF0aGlzLnNob3d8fHRoaXMuX3N0YXRlIT09SXMuQ09NUExFVEUpcmV0dXJuO3RoaXMuX2JhdGNoVGFibGVPZmZzZXRzVXBkYXRlZHx8aEoodGhpcyx0KSx0aGlzLl9yZWNvbXB1dGVCb3VuZGluZ1NwaGVyZXMmJlJvdCh0aGlzLHQpO2xldCBpPXRoaXMuYXBwZWFyYW5jZSxuPWkubWF0ZXJpYWwscz0hMSxvPSExO3RoaXMuX2FwcGVhcmFuY2UhPT1pPyh0aGlzLl9hcHBlYXJhbmNlPWksdGhpcy5fbWF0ZXJpYWw9bixzPSEwLG89ITApOnRoaXMuX21hdGVyaWFsIT09biYmKHRoaXMuX21hdGVyaWFsPW4sbz0hMCk7bGV0IHI9dGhpcy5kZXB0aEZhaWxBcHBlYXJhbmNlLGE9bShyKT9yLm1hdGVyaWFsOnZvaWQgMDt0aGlzLl9kZXB0aEZhaWxBcHBlYXJhbmNlIT09cj8odGhpcy5fZGVwdGhGYWlsQXBwZWFyYW5jZT1yLHRoaXMuX2RlcHRoRmFpbE1hdGVyaWFsPWEscz0hMCxvPSEwKTp0aGlzLl9kZXB0aEZhaWxNYXRlcmlhbCE9PWEmJih0aGlzLl9kZXB0aEZhaWxNYXRlcmlhbD1hLG89ITApO2xldCBoPXRoaXMuX2FwcGVhcmFuY2UuaXNUcmFuc2x1Y2VudCgpO3RoaXMuX3RyYW5zbHVjZW50IT09aCYmKHRoaXMuX3RyYW5zbHVjZW50PWgscz0hMCksbSh0aGlzLl9tYXRlcmlhbCkmJnRoaXMuX21hdGVyaWFsLnVwZGF0ZShlKTtsZXQgQT1pLmNsb3NlZCYmaDtzJiZaKHRoaXMuX2NyZWF0ZVJlbmRlclN0YXRlc0Z1bmN0aW9uLHVvdCkodGhpcyxlLGksQSksbyYmWih0aGlzLl9jcmVhdGVTaGFkZXJQcm9ncmFtRnVuY3Rpb24sQ290KSh0aGlzLHQsaSksKHN8fG8pJiZaKHRoaXMuX2NyZWF0ZUNvbW1hbmRzRnVuY3Rpb24sZ290KSh0aGlzLGksbixoLEEsdGhpcy5fY29sb3JDb21tYW5kcyx0aGlzLl9waWNrQ29tbWFuZHMsdCksWih0aGlzLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb24sVG90KSh0aGlzLHQsdGhpcy5fY29sb3JDb21tYW5kcyx0aGlzLl9waWNrQ29tbWFuZHMsdGhpcy5tb2RlbE1hdHJpeCx0aGlzLmN1bGwsdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSxBKX07Tm90PW5ldyBOdCxib3Q9bmV3IE50O1NvdD1uZXcgbDtxbi5wcm90b3R5cGUuZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkIik7aWYoIW0odGhpcy5fYmF0Y2hUYWJsZSkpdGhyb3cgbmV3IFkoIm11c3QgY2FsbCB1cGRhdGUgYmVmb3JlIGNhbGxpbmcgZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXMiKTtsZXQgZT10aGlzLl9wZXJJbnN0YW5jZUF0dHJpYnV0ZUNhY2hlLmdldCh0KTtpZihtKGUpKXJldHVybiBlO2xldCBpPS0xLG49dGhpcy5fbGFzdFBlckluc3RhbmNlQXR0cmlidXRlSW5kZXgscz10aGlzLl9pbnN0YW5jZUlkcyxvPXMubGVuZ3RoO2ZvcihsZXQgQT0wO0E8bzsrK0Epe2xldCBkPShuK0EpJW87aWYodD09PXNbZF0pe2k9ZDticmVha319aWYoaT09PS0xKXJldHVybjtsZXQgcj10aGlzLl9iYXRjaFRhYmxlLGE9dGhpcy5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXM7ZT17fTtsZXQgaD17fTtmb3IobGV0IEEgaW4gYSlpZihhLmhhc093blByb3BlcnR5KEEpKXtsZXQgZD1hW0FdO2hbQV09e2dldDpGb3QocixpLGQpLHNldDpZb3QocixpLGQsdGhpcyxBKX19cmV0dXJuIE9vdCh0aGlzLGgsaSksVm90KHRoaXMsaCxpKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLGgpLHRoaXMuX2xhc3RQZXJJbnN0YW5jZUF0dHJpYnV0ZUluZGV4PWksdGhpcy5fcGVySW5zdGFuY2VBdHRyaWJ1dGVDYWNoZS5zZXQodCxlKSxlfTtxbi5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07cW4ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtsZXQgdCxlO3RoaXMuX3NwPXRoaXMuX3NwJiZ0aGlzLl9zcC5kZXN0cm95KCksdGhpcy5fc3BEZXB0aEZhaWw9dGhpcy5fc3BEZXB0aEZhaWwmJnRoaXMuX3NwRGVwdGhGYWlsLmRlc3Ryb3koKTtsZXQgaT10aGlzLl92YTtmb3IodD1pLmxlbmd0aCxlPTA7ZTx0OysrZSlpW2VdLmRlc3Ryb3koKTt0aGlzLl92YT12b2lkIDA7bGV0IG49dGhpcy5fcGlja0lkcztmb3IodD1uLmxlbmd0aCxlPTA7ZTx0OysrZSluW2VdLmRlc3Ryb3koKTtyZXR1cm4gdGhpcy5fcGlja0lkcz12b2lkIDAsdGhpcy5fYmF0Y2hUYWJsZT10aGlzLl9iYXRjaFRhYmxlJiZ0aGlzLl9iYXRjaFRhYmxlLmRlc3Ryb3koKSx0aGlzLl9pbnN0YW5jZUlkcz12b2lkIDAsdGhpcy5fcGVySW5zdGFuY2VBdHRyaWJ1dGVDYWNoZT12b2lkIDAsdGhpcy5fYXR0cmlidXRlTG9jYXRpb25zPXZvaWQgMCxsaSh0aGlzKX07dnM9cW59KTt2YXIgR290LHByLCRJPU8oKCk9PntzcygpO0dvdD17TkVWRVI6aXQuTkVWRVIsTEVTUzppdC5MRVNTLEVRVUFMOml0LkVRVUFMLExFU1NfT1JfRVFVQUw6aXQuTEVRVUFMLEdSRUFURVI6aXQuR1JFQVRFUixOT1RfRVFVQUw6aXQuTk9URVFVQUwsR1JFQVRFUl9PUl9FUVVBTDppdC5HRVFVQUwsQUxXQVlTOml0LkFMV0FZU30scHI9T2JqZWN0LmZyZWV6ZShHb3QpfSk7dmFyIEJvdCxIaSx0cD1PKCgpPT57c3MoKTtCb3Q9e1pFUk86aXQuWkVSTyxLRUVQOml0LktFRVAsUkVQTEFDRTppdC5SRVBMQUNFLElOQ1JFTUVOVDppdC5JTkNSLERFQ1JFTUVOVDppdC5ERUNSLElOVkVSVDppdC5JTlZFUlQsSU5DUkVNRU5UX1dSQVA6aXQuSU5DUl9XUkFQLERFQ1JFTUVOVF9XUkFQOml0LkRFQ1JfV1JBUH0sSGk9T2JqZWN0LmZyZWV6ZShCb3QpfSk7dmFyIGVwLFdhLGFiPU8oKCk9PnskSSgpO3RwKCk7ZXA9e0NFU0lVTV8zRF9USUxFX01BU0s6MTI4LFNLSVBfTE9EX01BU0s6MTEyLFNLSVBfTE9EX0JJVF9TSElGVDo0LENMQVNTSUZJQ0FUSU9OX01BU0s6MTV9O2VwLnNldENlc2l1bTNEVGlsZUJpdD1mdW5jdGlvbigpe3JldHVybntlbmFibGVkOiEwLGZyb250RnVuY3Rpb246cHIuQUxXQVlTLGZyb250T3BlcmF0aW9uOntmYWlsOkhpLktFRVAsekZhaWw6SGkuS0VFUCx6UGFzczpIaS5SRVBMQUNFfSxiYWNrRnVuY3Rpb246cHIuQUxXQVlTLGJhY2tPcGVyYXRpb246e2ZhaWw6SGkuS0VFUCx6RmFpbDpIaS5LRUVQLHpQYXNzOkhpLlJFUExBQ0V9LHJlZmVyZW5jZTplcC5DRVNJVU1fM0RfVElMRV9NQVNLLG1hc2s6ZXAuQ0VTSVVNXzNEX1RJTEVfTUFTS319O1dhPU9iamVjdC5mcmVlemUoZXApfSk7ZnVuY3Rpb24gSWgodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXM9dC5nZW9tZXRyeUluc3RhbmNlcyx0aGlzLl9oYXNQZXJJbnN0YW5jZUNvbG9ycz0hMDtsZXQgZT10LmFwcGVhcmFuY2U7bShlKXx8KGU9bmV3IHVQKSx0aGlzLmFwcGVhcmFuY2U9ZSx0aGlzLnNob3c9Wih0LnNob3csITApLHRoaXMuY2xhc3NpZmljYXRpb25UeXBlPVoodC5jbGFzc2lmaWNhdGlvblR5cGUsSnIuQk9USCksdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT1aKHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsITEpLHRoaXMuX2RlYnVnU2hvd1NoYWRvd1ZvbHVtZT1aKHQuZGVidWdTaG93U2hhZG93Vm9sdW1lLCExKSx0aGlzLl9wcmltaXRpdmVPcHRpb25zPXtnZW9tZXRyeUluc3RhbmNlczp2b2lkIDAsYXBwZWFyYW5jZTp2b2lkIDAsdmVydGV4Q2FjaGVPcHRpbWl6ZTohMSxpbnRlcmxlYXZlOloodC5pbnRlcmxlYXZlLCExKSxyZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXM6Wih0LnJlbGVhc2VHZW9tZXRyeUluc3RhbmNlcywhMCksYWxsb3dQaWNraW5nOloodC5hbGxvd1BpY2tpbmcsITApLGFzeW5jaHJvbm91czpaKHQuYXN5bmNocm9ub3VzLCEwKSxjb21wcmVzc1ZlcnRpY2VzOiExLF9jcmVhdGVTaGFkZXJQcm9ncmFtRnVuY3Rpb246dm9pZCAwLF9jcmVhdGVDb21tYW5kc0Z1bmN0aW9uOnZvaWQgMCxfdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uOnZvaWQgMH0sdGhpcy5fekluZGV4PXZvaWQgMCx0aGlzLl9yZWFkeT0hMSx0aGlzLl9wcmltaXRpdmU9dm9pZCAwLHRoaXMuX3NwPXZvaWQgMCx0aGlzLl9zcDJEPXZvaWQgMCx0aGlzLl9zcE1vcnBoPXZvaWQgMCx0aGlzLl9yZW5kZXJTdGF0ZT1aSighMSksdGhpcy5fcmVuZGVyU3RhdGUzRFRpbGVzPVpKKCEwKSx0aGlzLl9yZW5kZXJTdGF0ZU1vcnBoPVluLmZyb21DYWNoZSh7Y3VsbDp7ZW5hYmxlZDohMCxmYWNlOkVoLkZST05UfSxkZXB0aFRlc3Q6e2VuYWJsZWQ6ITB9LGJsZW5kaW5nOlVyLlBSRV9NVUxUSVBMSUVEX0FMUEhBX0JMRU5ELGRlcHRoTWFzazohMX0pfWZ1bmN0aW9uIFdvdCh0LGUsaSl7bGV0IG49ZS5jb250ZXh0LHM9dC5fcHJpbWl0aXZlLG89cy5fYXR0cmlidXRlTG9jYXRpb25zLHI9cy5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKG14KTtyPXZzLl9hcHBlbmRTaG93VG9TaGFkZXIocyxyKSxyPXZzLl9hcHBlbmREaXN0YW5jZURpc3BsYXlDb25kaXRpb25Ub1NoYWRlcihzLHIpLHI9dnMuX21vZGlmeVNoYWRlclBvc2l0aW9uKHQscixlLnNjZW5lM0RPbmx5KTtsZXQgYT1zLl9iYXRjaFRhYmxlLmdldFZlcnRleFNoYWRlckNhbGxiYWNrKCkobHgpO2E9dnMuX2FwcGVuZFNob3dUb1NoYWRlcihzLGEpLGE9dnMuX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKHMsYSksYT12cy5fbW9kaWZ5U2hhZGVyUG9zaXRpb24odCxhLGUuc2NlbmUzRE9ubHkpO2xldCBoPXMuX2JhdGNoVGFibGUuZ2V0VmVydGV4U2hhZGVyQ2FsbGJhY2soKShheCksQT1bYEdMT0JFX01JTklNVU1fQUxUSVRVREUgJHtlLm1hcFByb2plY3Rpb24uZWxsaXBzb2lkLm1pbmltdW1SYWRpdXMudG9GaXhlZCgxKX1gXSxkPSIiLGY9IiI7bShpLm1hdGVyaWFsKT8oZj1tKGkubWF0ZXJpYWwpP2kubWF0ZXJpYWwuc2hhZGVyU291cmNlOiIiLGYuc2VhcmNoKC9pblxzK2Zsb2F0XHMrdl9wb2x5bGluZUFuZ2xlOy9nKSE9PS0xJiZBLnB1c2goIkFOR0xFX1ZBUllJTkciKSxmLnNlYXJjaCgvaW5ccytmbG9hdFxzK3Zfd2lkdGg7L2cpIT09LTEmJkEucHVzaCgiV0lEVEhfVkFSWUlORyIpKTpkPSJQRVJfSU5TVEFOQ0VfQ09MT1IiLEEucHVzaChkKTtsZXQgRT10LmRlYnVnU2hvd1NoYWRvd1ZvbHVtZT9bIkRFQlVHX1NIT1dfVk9MVU1FIixkXTpbZF0sXz1uZXcgTWkoe2RlZmluZXM6QSxzb3VyY2VzOltyXX0pLFI9bmV3IE1pKHtkZWZpbmVzOkUsc291cmNlczpbZixoXX0pO3QuX3NwPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06cy5fc3AsdmVydGV4U2hhZGVyU291cmNlOl8sZnJhZ21lbnRTaGFkZXJTb3VyY2U6UixhdHRyaWJ1dGVMb2NhdGlvbnM6b30pO2xldCBJPW4uc2hhZGVyQ2FjaGUuZ2V0RGVyaXZlZFNoYWRlclByb2dyYW0odC5fc3AsIjJkQ29sb3IiKTtpZighbShJKSl7bGV0IE49bmV3IE1pKHtkZWZpbmVzOkEuY29uY2F0KFsiQ09MVU1CVVNfVklFV18yRCJdKSxzb3VyY2VzOltyXX0pO0k9bi5zaGFkZXJDYWNoZS5jcmVhdGVEZXJpdmVkU2hhZGVyUHJvZ3JhbSh0Ll9zcCwiMmRDb2xvciIse2NvbnRleHQ6bixzaGFkZXJQcm9ncmFtOnQuX3NwMkQsdmVydGV4U2hhZGVyU291cmNlOk4sZnJhZ21lbnRTaGFkZXJTb3VyY2U6UixhdHRyaWJ1dGVMb2NhdGlvbnM6b30pfXQuX3NwMkQ9STtsZXQgQz1uLnNoYWRlckNhY2hlLmdldERlcml2ZWRTaGFkZXJQcm9ncmFtKHQuX3NwLCJNb3JwaENvbG9yIik7aWYoIW0oQykpe2xldCBOPW5ldyBNaSh7ZGVmaW5lczpBLmNvbmNhdChbYE1BWF9URVJSQUlOX0hFSUdIVCAke0RvLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodC50b0ZpeGVkKDEpfWBdKSxzb3VyY2VzOlthXX0pO2g9cy5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKGh4KTtsZXQgVD1uZXcgTWkoe2RlZmluZXM6RSxzb3VyY2VzOltmLGhdfSk7Qz1uLnNoYWRlckNhY2hlLmNyZWF0ZURlcml2ZWRTaGFkZXJQcm9ncmFtKHQuX3NwLCJNb3JwaENvbG9yIix7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dC5fc3BNb3JwaCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6TixmcmFnbWVudFNoYWRlclNvdXJjZTpULGF0dHJpYnV0ZUxvY2F0aW9uczpvfSl9dC5fc3BNb3JwaD1DfWZ1bmN0aW9uIFpKKHQpe3JldHVybiBZbi5mcm9tQ2FjaGUoe2N1bGw6e2VuYWJsZWQ6ITB9LGJsZW5kaW5nOlVyLlBSRV9NVUxUSVBMSUVEX0FMUEhBX0JMRU5ELGRlcHRoTWFzazohMSxzdGVuY2lsVGVzdDp7ZW5hYmxlZDp0LGZyb250RnVuY3Rpb246cHIuRVFVQUwsZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuS0VFUCx6RmFpbDpIaS5LRUVQLHpQYXNzOkhpLktFRVB9LGJhY2tGdW5jdGlvbjpwci5FUVVBTCxiYWNrT3BlcmF0aW9uOntmYWlsOkhpLktFRVAsekZhaWw6SGkuS0VFUCx6UGFzczpIaS5LRUVQfSxyZWZlcmVuY2U6V2EuQ0VTSVVNXzNEX1RJTEVfTUFTSyxtYXNrOldhLkNFU0lVTV8zRF9USUxFX01BU0t9fSl9ZnVuY3Rpb24gRG90KHQsZSxpLG4scyxvKXtsZXQgcj10Ll9wcmltaXRpdmUsYT1yLl92YS5sZW5ndGg7cy5sZW5ndGg9YSxvLmxlbmd0aD1hO2xldCBBPWUgaW5zdGFuY2VvZiBETj97fTppLl91bmlmb3JtcyxkPXIuX2JhdGNoVGFibGUuZ2V0VW5pZm9ybU1hcENhbGxiYWNrKCkoQSk7Zm9yKGxldCBmPTA7ZjxhO2YrKyl7bGV0IEU9ci5fdmFbZl0sXz1zW2ZdO20oXyl8fChfPXNbZl09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6ci5fcHJpbWl0aXZlVHlwZX0pKSxfLnZlcnRleEFycmF5PUUsXy5yZW5kZXJTdGF0ZT10Ll9yZW5kZXJTdGF0ZSxfLnNoYWRlclByb2dyYW09dC5fc3AsXy51bmlmb3JtTWFwPWQsXy5wYXNzPW9zLlRFUlJBSU5fQ0xBU1NJRklDQVRJT04sXy5waWNrSWQ9ImN6bV9iYXRjaFRhYmxlX3BpY2tDb2xvcih2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLncpIjtsZXQgUj1mbi5zaGFsbG93Q2xvbmUoXyxfLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0KTtSLnJlbmRlclN0YXRlPXQuX3JlbmRlclN0YXRlM0RUaWxlcyxSLnBhc3M9b3MuQ0VTSVVNXzNEX1RJTEVfQ0xBU1NJRklDQVRJT04sXy5kZXJpdmVkQ29tbWFuZHMudGlsZXNldD1SO2xldCBJPWZuLnNoYWxsb3dDbG9uZShfLF8uZGVyaXZlZENvbW1hbmRzLmNvbG9yMkQpO0kuc2hhZGVyUHJvZ3JhbT10Ll9zcDJELF8uZGVyaXZlZENvbW1hbmRzLmNvbG9yMkQ9STtsZXQgQz1mbi5zaGFsbG93Q2xvbmUoUixSLmRlcml2ZWRDb21tYW5kcy5jb2xvcjJEKTtDLnNoYWRlclByb2dyYW09dC5fc3AyRCxSLmRlcml2ZWRDb21tYW5kcy5jb2xvcjJEPUM7bGV0IE49Zm4uc2hhbGxvd0Nsb25lKF8sXy5kZXJpdmVkQ29tbWFuZHMuY29sb3JNb3JwaCk7Ti5yZW5kZXJTdGF0ZT10Ll9yZW5kZXJTdGF0ZU1vcnBoLE4uc2hhZGVyUHJvZ3JhbT10Ll9zcE1vcnBoLE4ucGlja0lkPSJjem1fYmF0Y2hUYWJsZV9waWNrQ29sb3Iodl9iYXRjaElkKSIsXy5kZXJpdmVkQ29tbWFuZHMuY29sb3JNb3JwaD1OfX1mdW5jdGlvbiBJSih0LGUsaSxuLHMsbyxyKXtpLm1vZGU9PT15ZS5NT1JQSElORz9lPWUuZGVyaXZlZENvbW1hbmRzLmNvbG9yTW9ycGg6aS5tb2RlIT09eWUuU0NFTkUzRCYmKGU9ZS5kZXJpdmVkQ29tbWFuZHMuY29sb3IyRCksZS5tb2RlbE1hdHJpeD1uLGUuYm91bmRpbmdWb2x1bWU9byxlLmN1bGw9cyxlLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXIsaS5jb21tYW5kTGlzdC5wdXNoKGUpfWZ1bmN0aW9uIE1vdCh0LGUsaSxuLHMsbyxyKXtsZXQgYT10Ll9wcmltaXRpdmU7dnMuX3VwZGF0ZUJvdW5kaW5nVm9sdW1lcyhhLGUscyk7bGV0IGg7ZS5tb2RlPT09eWUuU0NFTkUzRD9oPWEuX2JvdW5kaW5nU3BoZXJlV0M6ZS5tb2RlPT09eWUuQ09MVU1CVVNfVklFVz9oPWEuX2JvdW5kaW5nU3BoZXJlQ1Y6ZS5tb2RlPT09eWUuU0NFTkUyRCYmbShhLl9ib3VuZGluZ1NwaGVyZTJEKT9oPWEuX2JvdW5kaW5nU3BoZXJlMkQ6bShhLl9ib3VuZGluZ1NwaGVyZU1vcnBoKSYmKGg9YS5fYm91bmRpbmdTcGhlcmVNb3JwaCk7bGV0IEE9ZS5tb2RlPT09eWUuTU9SUEhJTkcsZD10LmNsYXNzaWZpY2F0aW9uVHlwZSxmPWQhPT1Kci5DRVNJVU1fM0RfVElMRSxFPWQhPT1Kci5URVJSQUlOJiYhQSxfLFI9ZS5wYXNzZXM7aWYoUi5yZW5kZXJ8fFIucGljayYmYS5hbGxvd1BpY2tpbmcpe2xldCBJPWkubGVuZ3RoO2ZvcihsZXQgQz0wO0M8STsrK0Mpe2xldCBOPWhbQ107ZiYmKF89aVtDXSxJSih0LF8sZSxzLG8sTixyKSksRSYmKF89aVtDXS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCxJSih0LF8sZSxzLG8sTixyKSl9fX12YXIgcEosdUo9TygoKT0+e0pFKCk7b2koKTtidCgpO210KCk7V3MoKTtWdCgpO3VBKCk7bU4oKTtWTigpO0JtKCk7V20oKTtNbSgpO1FtKCk7RmwoKTtBeCgpO2N4KCk7ZHgoKTtmeCgpO2ttKCk7TUkoKTtVSSgpO1p4KCk7Q1AoKTtyYigpO3VhKCk7YWIoKTskSSgpO3RwKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSWgucHJvdG90eXBlLHtpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5pbnRlcmxlYXZlfX0scmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXN9fSxhbGxvd1BpY2tpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVPcHRpb25zLmFsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZU9wdGlvbnMuYXN5bmNocm9ub3VzfX0scmVhZHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkeX19LGRlYnVnU2hvd1NoYWRvd1ZvbHVtZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnU2hvd1NoYWRvd1ZvbHVtZX19fSk7SWguaW5pdGlhbGl6ZVRlcnJhaW5IZWlnaHRzPWZ1bmN0aW9uKCl7cmV0dXJuIERvLmluaXRpYWxpemUoKX07SWgucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpJiYhbSh0aGlzLmdlb21ldHJ5SW5zdGFuY2VzKSlyZXR1cm47aWYoIURvLmluaXRpYWxpemVkKXtpZighdGhpcy5hc3luY2hyb25vdXMpdGhyb3cgbmV3IFkoIkZvciBzeW5jaHJvbm91cyBHcm91bmRQb2x5bGluZVByaW1pdGl2ZXMsIHlvdSBtdXN0IGNhbGwgR3JvdW5kUG9seWxpbmVQcmltaXRpdmVzLmluaXRpYWxpemVUZXJyYWluSGVpZ2h0cygpIGFuZCB3YWl0IGZvciB0aGUgcmV0dXJuZWQgcHJvbWlzZSB0byByZXNvbHZlLiIpO0loLmluaXRpYWxpemVUZXJyYWluSGVpZ2h0cygpO3JldHVybn1sZXQgZSxpPXRoaXMsbj10aGlzLl9wcmltaXRpdmVPcHRpb25zO2lmKCFtKHRoaXMuX3ByaW1pdGl2ZSkpe2xldCBzPUFycmF5LmlzQXJyYXkodGhpcy5nZW9tZXRyeUluc3RhbmNlcyk/dGhpcy5nZW9tZXRyeUluc3RhbmNlczpbdGhpcy5nZW9tZXRyeUluc3RhbmNlc10sbz1zLmxlbmd0aCxyPW5ldyBBcnJheShvKSxhO2ZvcihlPTA7ZTxvOysrZSlpZihhPXNbZV0uYXR0cmlidXRlcywhbShhKXx8IW0oYS5jb2xvcikpe3RoaXMuX2hhc1Blckluc3RhbmNlQ29sb3JzPSExO2JyZWFrfWZvcihlPTA7ZTxvOysrZSl7bGV0IGg9c1tlXTthPXt9O2xldCBBPWguYXR0cmlidXRlcztmb3IobGV0IGQgaW4gQSlBLmhhc093blByb3BlcnR5KGQpJiYoYVtkXT1BW2RdKTttKGEud2lkdGgpfHwoYS53aWR0aD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlOltoLmdlb21ldHJ5LndpZHRoXX0pKSxoLmdlb21ldHJ5Ll9zY2VuZTNET25seT10LnNjZW5lM0RPbmx5LEtFLnNldFByb2plY3Rpb25BbmRFbGxpcHNvaWQoaC5nZW9tZXRyeSx0Lm1hcFByb2plY3Rpb24pLHJbZV09bmV3IExuKHtnZW9tZXRyeTpoLmdlb21ldHJ5LGF0dHJpYnV0ZXM6YSxpZDpoLmlkLHBpY2tQcmltaXRpdmU6aX0pfW4uZ2VvbWV0cnlJbnN0YW5jZXM9cixuLmFwcGVhcmFuY2U9dGhpcy5hcHBlYXJhbmNlLG4uX2NyZWF0ZVNoYWRlclByb2dyYW1GdW5jdGlvbj1mdW5jdGlvbihoLEEsZCl7V290KGksQSxkKX0sbi5fY3JlYXRlQ29tbWFuZHNGdW5jdGlvbj1mdW5jdGlvbihoLEEsZCxmLEUsXyxSKXtEb3QoaSxBLGQsZixfLFIpfSxuLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249ZnVuY3Rpb24oaCxBLGQsZixFLF8sUixJKXtNb3QoaSxBLGQsZixFLF8sUil9LHRoaXMuX3ByaW1pdGl2ZT1uZXcgdnMobil9aWYodGhpcy5hcHBlYXJhbmNlIGluc3RhbmNlb2YgRE4mJiF0aGlzLl9oYXNQZXJJbnN0YW5jZUNvbG9ycyl0aHJvdyBuZXcgWSgiQWxsIEdlb21ldHJ5SW5zdGFuY2VzIG11c3QgaGF2ZSBjb2xvciBhdHRyaWJ1dGVzIHRvIHVzZSBQb2x5bGluZUNvbG9yQXBwZWFyYW5jZSB3aXRoIEdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlLiIpO3RoaXMuX3ByaW1pdGl2ZS5hcHBlYXJhbmNlPXRoaXMuYXBwZWFyYW5jZSx0aGlzLl9wcmltaXRpdmUuc2hvdz10aGlzLnNob3csdGhpcy5fcHJpbWl0aXZlLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsdGhpcy5fcHJpbWl0aXZlLnVwZGF0ZSh0KSx0LmFmdGVyUmVuZGVyLnB1c2goKCk9PnshdGhpcy5fcmVhZHkmJm0odGhpcy5fcHJpbWl0aXZlKSYmdGhpcy5fcHJpbWl0aXZlLnJlYWR5JiYodGhpcy5fcmVhZHk9ITAsdGhpcy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMmJih0aGlzLmdlb21ldHJ5SW5zdGFuY2VzPXZvaWQgMCkpfSl9O0loLnByb3RvdHlwZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcz1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpKXRocm93IG5ldyBZKCJtdXN0IGNhbGwgdXBkYXRlIGJlZm9yZSBjYWxsaW5nIGdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzIik7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcyh0KX07SWguaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJhbWVTdGF0ZS5jb250ZXh0LmRlcHRoVGV4dHVyZX07SWgucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O0loLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZT10aGlzLl9wcmltaXRpdmUmJnRoaXMuX3ByaW1pdGl2ZS5kZXN0cm95KCksdGhpcy5fc3A9dGhpcy5fc3AmJnRoaXMuX3NwLmRlc3Ryb3koKSx0aGlzLl9zcDJEPXZvaWQgMCx0aGlzLl9zcE1vcnBoPXZvaWQgMCxsaSh0aGlzKX07cEo9SWh9KTtmdW5jdGlvbiBrbyh0LGUsaSl7dGhpcy5taW5pbXVtPWwuY2xvbmUoWih0LGwuWkVSTykpLHRoaXMubWF4aW11bT1sLmNsb25lKFooZSxsLlpFUk8pKSxtKGkpP2k9bC5jbG9uZShpKTppPWwubWlkcG9pbnQodGhpcy5taW5pbXVtLHRoaXMubWF4aW11bSxuZXcgbCksdGhpcy5jZW50ZXI9aX12YXIgaXAscGgsYV89TygoKT0+e0h0KCk7YWUoKTtidCgpO210KCk7bmMoKTtrby5mcm9tQ29ybmVycz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgibWluaW11bSIsdCkscC5kZWZpbmVkKCJtYXhpbXVtIixlKSxtKGkpfHwoaT1uZXcga28pLGkubWluaW11bT1sLmNsb25lKHQsaS5taW5pbXVtKSxpLm1heGltdW09bC5jbG9uZShlLGkubWF4aW11bSksaS5jZW50ZXI9bC5taWRwb2ludCh0LGUsaS5jZW50ZXIpLGl9O2tvLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXtpZihtKGUpfHwoZT1uZXcga28pLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIGUubWluaW11bT1sLmNsb25lKGwuWkVSTyxlLm1pbmltdW0pLGUubWF4aW11bT1sLmNsb25lKGwuWkVSTyxlLm1heGltdW0pLGUuY2VudGVyPWwuY2xvbmUobC5aRVJPLGUuY2VudGVyKSxlO2xldCBpPXRbMF0ueCxuPXRbMF0ueSxzPXRbMF0ueixvPXRbMF0ueCxyPXRbMF0ueSxhPXRbMF0ueixoPXQubGVuZ3RoO2ZvcihsZXQgZj0xO2Y8aDtmKyspe2xldCBFPXRbZl0sXz1FLngsUj1FLnksST1FLno7aT1NYXRoLm1pbihfLGkpLG89TWF0aC5tYXgoXyxvKSxuPU1hdGgubWluKFIsbikscj1NYXRoLm1heChSLHIpLHM9TWF0aC5taW4oSSxzKSxhPU1hdGgubWF4KEksYSl9bGV0IEE9ZS5taW5pbXVtO0EueD1pLEEueT1uLEEuej1zO2xldCBkPWUubWF4aW11bTtyZXR1cm4gZC54PW8sZC55PXIsZC56PWEsZS5jZW50ZXI9bC5taWRwb2ludChBLGQsZS5jZW50ZXIpLGV9O2tvLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5taW5pbXVtPWwuY2xvbmUodC5taW5pbXVtLGUubWluaW11bSksZS5tYXhpbXVtPWwuY2xvbmUodC5tYXhpbXVtLGUubWF4aW11bSksZS5jZW50ZXI9bC5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksZSk6bmV3IGtvKHQubWluaW11bSx0Lm1heGltdW0sdC5jZW50ZXIpfTtrby5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJmwuZXF1YWxzKHQuY2VudGVyLGUuY2VudGVyKSYmbC5lcXVhbHModC5taW5pbXVtLGUubWluaW11bSkmJmwuZXF1YWxzKHQubWF4aW11bSxlLm1heGltdW0pfTtpcD1uZXcgbDtrby5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiYm94Iix0KSxwLmRlZmluZWQoInBsYW5lIixlKSxpcD1sLnN1YnRyYWN0KHQubWF4aW11bSx0Lm1pbmltdW0saXApO2xldCBpPWwubXVsdGlwbHlCeVNjYWxhcihpcCwuNSxpcCksbj1lLm5vcm1hbCxzPWkueCpNYXRoLmFicyhuLngpK2kueSpNYXRoLmFicyhuLnkpK2kueipNYXRoLmFicyhuLnopLG89bC5kb3QodC5jZW50ZXIsbikrZS5kaXN0YW5jZTtyZXR1cm4gby1zPjA/Tm4uSU5TSURFOm8rczwwP05uLk9VVFNJREU6Tm4uSU5URVJTRUNUSU5HfTtrby5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGtvLmNsb25lKHRoaXMsdCl9O2tvLnByb3RvdHlwZS5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4ga28uaW50ZXJzZWN0UGxhbmUodGhpcyx0KX07a28ucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4ga28uZXF1YWxzKHRoaXMsdCl9O3BoPWtvfSk7ZnVuY3Rpb24gTkEodCxlKXtpZihwLmRlZmluZWQoIm9yaWdpbiIsdCksZT1aKGUsb3QuV0dTODQpLHQ9ZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQpLCFtKHQpKXRocm93IG5ldyBZKCJvcmlnaW4gbXVzdCBub3QgYmUgYXQgdGhlIGNlbnRlciBvZiB0aGUgZWxsaXBzb2lkLiIpO2xldCBpPUluLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHQsZSk7dGhpcy5fZWxsaXBzb2lkPWUsdGhpcy5fb3JpZ2luPXQsdGhpcy5feEF4aXM9bC5mcm9tQ2FydGVzaWFuNChhdC5nZXRDb2x1bW4oaSwwLEFiKSksdGhpcy5feUF4aXM9bC5mcm9tQ2FydGVzaWFuNChhdC5nZXRDb2x1bW4oaSwxLEFiKSk7bGV0IG49bC5mcm9tQ2FydGVzaWFuNChhdC5nZXRDb2x1bW4oaSwyLEFiKSk7dGhpcy5fcGxhbmU9S2kuZnJvbVBvaW50Tm9ybWFsKHQsbil9dmFyIEFiLFVvdCxDSixucCxRb3Qsb28sWG09TygoKT0+e2FfKCk7WGUoKTtIdCgpO1ZzKCk7YWUoKTtidCgpO210KCk7VnQoKTtWZSgpO01sKCk7RmkoKTtuaCgpO09JKCk7ZnIoKTtBYj1uZXcgaWU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTkEucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxvcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW59fSxwbGFuZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lfX0seEF4aXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl94QXhpc319LHlBeGlzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feUF4aXN9fSx6QXhpczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lLm5vcm1hbH19fSk7VW90PW5ldyBwaDtOQS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjYXJ0ZXNpYW5zIix0KTtsZXQgaT1waC5mcm9tUG9pbnRzKHQsVW90KTtyZXR1cm4gbmV3IE5BKGkuY2VudGVyLGUpfTtDSj1uZXcgV2wsbnA9bmV3IGw7TkEucHJvdG90eXBlLnByb2plY3RQb2ludE9udG9QbGFuZT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFuIix0KTtsZXQgaT1DSjtpLm9yaWdpbj10LGwubm9ybWFsaXplKHQsaS5kaXJlY3Rpb24pO2xldCBuPW5vLnJheVBsYW5lKGksdGhpcy5fcGxhbmUsbnApO2lmKG0obil8fChsLm5lZ2F0ZShpLmRpcmVjdGlvbixpLmRpcmVjdGlvbiksbj1uby5yYXlQbGFuZShpLHRoaXMuX3BsYW5lLG5wKSksbShuKSl7bGV0IHM9bC5zdWJ0cmFjdChuLHRoaXMuX29yaWdpbixuKSxvPWwuZG90KHRoaXMuX3hBeGlzLHMpLHI9bC5kb3QodGhpcy5feUF4aXMscyk7cmV0dXJuIG0oZSk/KGUueD1vLGUueT1yLGUpOm5ldyBudChvLHIpfX07TkEucHJvdG90eXBlLnByb2plY3RQb2ludHNPbnRvUGxhbmU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbnMiLHQpLG0oZSl8fChlPVtdKTtsZXQgaT0wLG49dC5sZW5ndGg7Zm9yKGxldCBzPTA7czxuO3MrKyl7bGV0IG89dGhpcy5wcm9qZWN0UG9pbnRPbnRvUGxhbmUodFtzXSxlW2ldKTttKG8pJiYoZVtpXT1vLGkrKyl9cmV0dXJuIGUubGVuZ3RoPWksZX07TkEucHJvdG90eXBlLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbiIsdCksbShlKXx8KGU9bmV3IG50KTtsZXQgaT1DSjtpLm9yaWdpbj10LGwuY2xvbmUodGhpcy5fcGxhbmUubm9ybWFsLGkuZGlyZWN0aW9uKTtsZXQgbj1uby5yYXlQbGFuZShpLHRoaXMuX3BsYW5lLG5wKTttKG4pfHwobC5uZWdhdGUoaS5kaXJlY3Rpb24saS5kaXJlY3Rpb24pLG49bm8ucmF5UGxhbmUoaSx0aGlzLl9wbGFuZSxucCkpO2xldCBzPWwuc3VidHJhY3Qobix0aGlzLl9vcmlnaW4sbiksbz1sLmRvdCh0aGlzLl94QXhpcyxzKSxyPWwuZG90KHRoaXMuX3lBeGlzLHMpO3JldHVybiBlLng9byxlLnk9cixlfTtOQS5wcm90b3R5cGUucHJvamVjdFBvaW50c1RvTmVhcmVzdE9uUGxhbmU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbnMiLHQpLG0oZSl8fChlPVtdKTtsZXQgaT10Lmxlbmd0aDtlLmxlbmd0aD1pO2ZvcihsZXQgbj0wO248aTtuKyspZVtuXT10aGlzLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUodFtuXSxlW25dKTtyZXR1cm4gZX07UW90PW5ldyBsO05BLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRPbnRvRWxsaXBzb2lkPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBsKTtsZXQgaT10aGlzLl9lbGxpcHNvaWQsbj10aGlzLl9vcmlnaW4scz10aGlzLl94QXhpcyxvPXRoaXMuX3lBeGlzLHI9UW90O3JldHVybiBsLm11bHRpcGx5QnlTY2FsYXIocyx0LngsciksZT1sLmFkZChuLHIsZSksbC5tdWx0aXBseUJ5U2NhbGFyKG8sdC55LHIpLGwuYWRkKGUscixlKSxpLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZShlLGUpLGV9O05BLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRzT250b0VsbGlwc29pZD1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTsrK24pZVtuXT10aGlzLnByb2plY3RQb2ludE9udG9FbGxpcHNvaWQodFtuXSxlW25dKTtyZXR1cm4gZX07b289TkF9KTtmdW5jdGlvbiBHaSh0LGUpe3RoaXMuY2VudGVyPWwuY2xvbmUoWih0LGwuWkVSTykpLHRoaXMuaGFsZkF4ZXM9bHQuY2xvbmUoWihlLGx0LlpFUk8pKX1mdW5jdGlvbiBnSih0LGUsaSxuLHMsbyxyLGEsaCxBLGQpe2lmKCFtKHMpfHwhbShvKXx8IW0ocil8fCFtKGEpfHwhbShoKXx8IW0oQSkpdGhyb3cgbmV3IFkoImFsbCBleHRlbnRzIChtaW5pbXVtL21heGltdW0gWC9ZL1opIGFyZSByZXF1aXJlZC4iKTttKGQpfHwoZD1uZXcgR2kpO2xldCBmPWQuaGFsZkF4ZXM7bHQuc2V0Q29sdW1uKGYsMCxlLGYpLGx0LnNldENvbHVtbihmLDEsaSxmKSxsdC5zZXRDb2x1bW4oZiwyLG4sZik7bGV0IEU9WUo7RS54PShzK28pLzIsRS55PShyK2EpLzIsRS56PShoK0EpLzI7bGV0IF89SG90O18ueD0oby1zKS8yLF8ueT0oYS1yKS8yLF8uej0oQS1oKS8yO2xldCBSPWQuY2VudGVyO3JldHVybiBFPWx0Lm11bHRpcGx5QnlWZWN0b3IoZixFLEUpLGwuYWRkKHQsRSxSKSxsdC5tdWx0aXBseUJ5U2NhbGUoZixfLGYpLGR9dmFyIGtvdCxMb3QseW90LHdvdCx4b3QsUG90LEpvdCxqb3QsWUosSG90LFRKLHZvdCx6b3QsS290LFhvdCxxb3QsJG90LHRydCxOSixlcnQsYkosaXJ0LG5ydCxzcnQsb3J0LHJydCxhcnQsQXJ0LGhydCxjcnQsbHJ0LGRydCxtcnQsZnJ0LEVydCxfcnQsU0osT0osVkosUnJ0LEZKLFpydCxJcnQscHJ0LHVydCxDcnQsZ3J0LFRydCxOcnQsenMsSmw9TygoKT0+e19pKCk7WGUoKTtIdCgpO3JpKCk7YWUoKTtidCgpO210KCk7VnQoKTtWZSgpO1htKCk7bmMoKTtIWigpO19lKCk7ZG4oKTtGaSgpO25oKCk7cG4oKTtHaS5wYWNrZWRMZW5ndGg9bC5wYWNrZWRMZW5ndGgrbHQucGFja2VkTGVuZ3RoO0dpLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxsLnBhY2sodC5jZW50ZXIsZSxpKSxsdC5wYWNrKHQuaGFsZkF4ZXMsZSxpK2wucGFja2VkTGVuZ3RoKSxlfTtHaS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgR2kpLGwudW5wYWNrKHQsZSxpLmNlbnRlciksbHQudW5wYWNrKHQsZStsLnBhY2tlZExlbmd0aCxpLmhhbGZBeGVzKSxpfTtrb3Q9bmV3IGwsTG90PW5ldyBsLHlvdD1uZXcgbCx3b3Q9bmV3IGwseG90PW5ldyBsLFBvdD1uZXcgbCxKb3Q9bmV3IGx0LGpvdD17dW5pdGFyeTpuZXcgbHQsZGlhZ29uYWw6bmV3IGx0fTtHaS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IEdpKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLmhhbGZBeGVzPWx0LlpFUk8sZS5jZW50ZXI9bC5aRVJPLGU7bGV0IGksbj10Lmxlbmd0aCxzPWwuY2xvbmUodFswXSxrb3QpO2ZvcihpPTE7aTxuO2krKylsLmFkZChzLHRbaV0scyk7bGV0IG89MS9uO2wubXVsdGlwbHlCeVNjYWxhcihzLG8scyk7bGV0IHI9MCxhPTAsaD0wLEE9MCxkPTAsZj0wLEU7Zm9yKGk9MDtpPG47aSsrKUU9bC5zdWJ0cmFjdCh0W2ldLHMsTG90KSxyKz1FLngqRS54LGErPUUueCpFLnksaCs9RS54KkUueixBKz1FLnkqRS55LGQrPUUueSpFLnosZis9RS56KkUuejtyKj1vLGEqPW8saCo9byxBKj1vLGQqPW8sZio9bztsZXQgXz1Kb3Q7X1swXT1yLF9bMV09YSxfWzJdPWgsX1szXT1hLF9bNF09QSxfWzVdPWQsX1s2XT1oLF9bN109ZCxfWzhdPWY7bGV0IFI9bHQuY29tcHV0ZUVpZ2VuRGVjb21wb3NpdGlvbihfLGpvdCksST1sdC5jbG9uZShSLnVuaXRhcnksZS5oYWxmQXhlcyksQz1sdC5nZXRDb2x1bW4oSSwwLHdvdCksTj1sdC5nZXRDb2x1bW4oSSwxLHhvdCksVD1sdC5nZXRDb2x1bW4oSSwyLFBvdCksRj0tTnVtYmVyLk1BWF9WQUxVRSxiPS1OdW1iZXIuTUFYX1ZBTFVFLEc9LU51bWJlci5NQVhfVkFMVUUsTT1OdW1iZXIuTUFYX1ZBTFVFLFE9TnVtYmVyLk1BWF9WQUxVRSxVPU51bWJlci5NQVhfVkFMVUU7Zm9yKGk9MDtpPG47aSsrKUU9dFtpXSxGPU1hdGgubWF4KGwuZG90KEMsRSksRiksYj1NYXRoLm1heChsLmRvdChOLEUpLGIpLEc9TWF0aC5tYXgobC5kb3QoVCxFKSxHKSxNPU1hdGgubWluKGwuZG90KEMsRSksTSksUT1NYXRoLm1pbihsLmRvdChOLEUpLFEpLFU9TWF0aC5taW4obC5kb3QoVCxFKSxVKTtDPWwubXVsdGlwbHlCeVNjYWxhcihDLC41KihNK0YpLEMpLE49bC5tdWx0aXBseUJ5U2NhbGFyKE4sLjUqKFErYiksTiksVD1sLm11bHRpcGx5QnlTY2FsYXIoVCwuNSooVStHKSxUKTtsZXQgaz1sLmFkZChDLE4sZS5jZW50ZXIpO2wuYWRkKGssVCxrKTtsZXQgeT15b3Q7cmV0dXJuIHkueD1GLU0seS55PWItUSx5Lno9Ry1VLGwubXVsdGlwbHlCeVNjYWxhcih5LC41LHkpLGx0Lm11bHRpcGx5QnlTY2FsZShlLmhhbGZBeGVzLHksZS5oYWxmQXhlcyksZX07WUo9bmV3IGwsSG90PW5ldyBsO1RKPW5ldyB1dCx2b3Q9bmV3IGwsem90PW5ldyB1dCxLb3Q9bmV3IHV0LFhvdD1uZXcgdXQscW90PW5ldyB1dCwkb3Q9bmV3IHV0LHRydD1uZXcgbCxOSj1uZXcgbCxlcnQ9bmV3IGwsYko9bmV3IGwsaXJ0PW5ldyBsLG5ydD1uZXcgbnQsc3J0PW5ldyBudCxvcnQ9bmV3IG50LHJydD1uZXcgbnQsYXJ0PW5ldyBudCxBcnQ9bmV3IGwsaHJ0PW5ldyBsLGNydD1uZXcgbCxscnQ9bmV3IGwsZHJ0PW5ldyBudCxtcnQ9bmV3IGwsZnJ0PW5ldyBsLEVydD1uZXcgbCxfcnQ9bmV3IEtpKGwuVU5JVF9YLDApO0dpLmZyb21SZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGksbixzKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicmVjdGFuZ2xlIGlzIHJlcXVpcmVkIik7aWYodC53aWR0aDwwfHx0LndpZHRoPkwuVFdPX1BJKXRocm93IG5ldyBZKCJSZWN0YW5nbGUgd2lkdGggbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIgKiBwaSIpO2lmKHQuaGVpZ2h0PDB8fHQuaGVpZ2h0PkwuUEkpdGhyb3cgbmV3IFkoIlJlY3RhbmdsZSBoZWlnaHQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIHBpIik7aWYobShuKSYmIUwuZXF1YWxzRXBzaWxvbihuLnJhZGlpLngsbi5yYWRpaS55LEwuRVBTSUxPTjE1KSl0aHJvdyBuZXcgWSgiRWxsaXBzb2lkIG11c3QgYmUgYW4gZWxsaXBzb2lkIG9mIHJldm9sdXRpb24gKHJhZGlpLnggPT0gcmFkaWkueSkiKTtlPVooZSwwKSxpPVooaSwwKSxuPVoobixvdC5XR1M4NCk7bGV0IG8scixhLGgsQSxkLGY7aWYodC53aWR0aDw9TC5QSSl7bGV0IFE9WHQuY2VudGVyKHQsVEopLFU9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihRLHZvdCksaz1uZXcgb28oVSxuKTtmPWsucGxhbmU7bGV0IHk9US5sb25naXR1ZGUsYz10LnNvdXRoPDAmJnQubm9ydGg+MD8wOlEubGF0aXR1ZGUsZz11dC5mcm9tUmFkaWFucyh5LHQubm9ydGgsaSx6b3QpLFY9dXQuZnJvbVJhZGlhbnModC53ZXN0LHQubm9ydGgsaSxLb3QpLEQ9dXQuZnJvbVJhZGlhbnModC53ZXN0LGMsaSxYb3QpLHc9dXQuZnJvbVJhZGlhbnModC53ZXN0LHQuc291dGgsaSxxb3QpLHg9dXQuZnJvbVJhZGlhbnMoeSx0LnNvdXRoLGksJG90KSxIPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZyx0cnQpLGo9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihWLE5KKSxYPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRCxlcnQpLHR0PW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4odyxiSiksQj1uLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHgsaXJ0KSxJdD1rLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoSCxucnQpLGd0PWsucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZShqLHNydCksWXQ9ay5wcm9qZWN0UG9pbnRUb05lYXJlc3RPblBsYW5lKFgsb3J0KSxNdD1rLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUodHQscnJ0KSxDdD1rLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoQixhcnQpO3JldHVybiBvPU1hdGgubWluKGd0LngsWXQueCxNdC54KSxyPS1vLGg9TWF0aC5tYXgoZ3QueSxJdC55KSxhPU1hdGgubWluKE10LnksQ3QueSksVi5oZWlnaHQ9dy5oZWlnaHQ9ZSxqPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oVixOSiksdHQ9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih3LGJKKSxBPU1hdGgubWluKEtpLmdldFBvaW50RGlzdGFuY2UoZixqKSxLaS5nZXRQb2ludERpc3RhbmNlKGYsdHQpKSxkPWksZ0ooay5vcmlnaW4say54QXhpcyxrLnlBeGlzLGsuekF4aXMsbyxyLGEsaCxBLGQscyl9bGV0IEU9dC5zb3V0aD4wLF89dC5ub3J0aDwwLFI9RT90LnNvdXRoOl8/dC5ub3J0aDowLEk9WHQuY2VudGVyKHQsVEopLmxvbmdpdHVkZSxDPWwuZnJvbVJhZGlhbnMoSSxSLGksbixBcnQpO0Muej0wO2xldCBUPU1hdGguYWJzKEMueCk8TC5FUFNJTE9OMTAmJk1hdGguYWJzKEMueSk8TC5FUFNJTE9OMTA/bC5VTklUX1g6bC5ub3JtYWxpemUoQyxocnQpLEY9bC5VTklUX1osYj1sLmNyb3NzKFQsRixjcnQpO2Y9S2kuZnJvbVBvaW50Tm9ybWFsKEMsVCxfcnQpO2xldCBHPWwuZnJvbVJhZGlhbnMoSStMLlBJX09WRVJfVFdPLFIsaSxuLGxydCk7cj1sLmRvdChLaS5wcm9qZWN0UG9pbnRPbnRvUGxhbmUoZixHLGRydCksYiksbz0tcixoPWwuZnJvbVJhZGlhbnMoMCx0Lm5vcnRoLF8/ZTppLG4sbXJ0KS56LGE9bC5mcm9tUmFkaWFucygwLHQuc291dGgsRT9lOmksbixmcnQpLno7bGV0IE09bC5mcm9tUmFkaWFucyh0LmVhc3QsUixpLG4sRXJ0KTtyZXR1cm4gQT1LaS5nZXRQb2ludERpc3RhbmNlKGYsTSksZD0wLGdKKEMsYixGLFQsbyxyLGEsaCxBLGQscyl9O0dpLmZyb21UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybWF0aW9uIix0KSxtKGUpfHwoZT1uZXcgR2kpLGUuY2VudGVyPWF0LmdldFRyYW5zbGF0aW9uKHQsZS5jZW50ZXIpLGUuaGFsZkF4ZXM9YXQuZ2V0TWF0cml4Myh0LGUuaGFsZkF4ZXMpLGUuaGFsZkF4ZXM9bHQubXVsdGlwbHlCeVNjYWxhcihlLmhhbGZBeGVzLC41LGUuaGFsZkF4ZXMpLGV9O0dpLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8obC5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksbHQuY2xvbmUodC5oYWxmQXhlcyxlLmhhbGZBeGVzKSxlKTpuZXcgR2kodC5jZW50ZXIsdC5oYWxmQXhlcyl9O0dpLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImJveCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicGxhbmUgaXMgcmVxdWlyZWQuIik7bGV0IGk9dC5jZW50ZXIsbj1lLm5vcm1hbCxzPXQuaGFsZkF4ZXMsbz1uLngscj1uLnksYT1uLnosaD1NYXRoLmFicyhvKnNbbHQuQ09MVU1OMFJPVzBdK3Iqc1tsdC5DT0xVTU4wUk9XMV0rYSpzW2x0LkNPTFVNTjBST1cyXSkrTWF0aC5hYnMobypzW2x0LkNPTFVNTjFST1cwXStyKnNbbHQuQ09MVU1OMVJPVzFdK2Eqc1tsdC5DT0xVTU4xUk9XMl0pK01hdGguYWJzKG8qc1tsdC5DT0xVTU4yUk9XMF0rcipzW2x0LkNPTFVNTjJST1cxXSthKnNbbHQuQ09MVU1OMlJPVzJdKSxBPWwuZG90KG4saSkrZS5kaXN0YW5jZTtyZXR1cm4gQTw9LWg/Tm4uT1VUU0lERTpBPj1oP05uLklOU0lERTpObi5JTlRFUlNFQ1RJTkd9O1NKPW5ldyBsLE9KPW5ldyBsLFZKPW5ldyBsLFJydD1uZXcgbCxGSj1uZXcgbCxacnQ9bmV3IGw7R2kuZGlzdGFuY2VTcXVhcmVkVG89ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYm94IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJjYXJ0ZXNpYW4gaXMgcmVxdWlyZWQuIik7bGV0IGk9bC5zdWJ0cmFjdChlLHQuY2VudGVyLFlKKSxuPXQuaGFsZkF4ZXMscz1sdC5nZXRDb2x1bW4obiwwLFNKKSxvPWx0LmdldENvbHVtbihuLDEsT0opLHI9bHQuZ2V0Q29sdW1uKG4sMixWSiksYT1sLm1hZ25pdHVkZShzKSxoPWwubWFnbml0dWRlKG8pLEE9bC5tYWduaXR1ZGUociksZD0hMCxmPSEwLEU9ITA7YT4wP2wuZGl2aWRlQnlTY2FsYXIocyxhLHMpOmQ9ITEsaD4wP2wuZGl2aWRlQnlTY2FsYXIobyxoLG8pOmY9ITEsQT4wP2wuZGl2aWRlQnlTY2FsYXIocixBLHIpOkU9ITE7bGV0IF89IWQrIWYrIUUsUixJLEM7aWYoXz09PTEpe2xldCBiPXM7Uj1vLEk9cixmP0V8fChiPXIsST1zKTooYj1vLFI9cyksQz1sLmNyb3NzKFIsSSxGSiksYj09PXM/cz1DOmI9PT1vP289QzpiPT09ciYmKHI9Qyl9ZWxzZSBpZihfPT09Mil7Uj1zLGY/Uj1vOkUmJihSPXIpO2xldCBiPWwuVU5JVF9ZO2IuZXF1YWxzRXBzaWxvbihSLEwuRVBTSUxPTjMpJiYoYj1sLlVOSVRfWCksST1sLmNyb3NzKFIsYixScnQpLGwubm9ybWFsaXplKEksSSksQz1sLmNyb3NzKFIsSSxGSiksbC5ub3JtYWxpemUoQyxDKSxSPT09cz8obz1JLHI9Qyk6Uj09PW8/KHI9SSxzPUMpOlI9PT1yJiYocz1JLG89Qyl9ZWxzZSBfPT09MyYmKHM9bC5VTklUX1gsbz1sLlVOSVRfWSxyPWwuVU5JVF9aKTtsZXQgTj1acnQ7Ti54PWwuZG90KGkscyksTi55PWwuZG90KGksbyksTi56PWwuZG90KGkscik7bGV0IFQ9MCxGO3JldHVybiBOLng8LWE/KEY9Ti54K2EsVCs9RipGKTpOLng+YSYmKEY9Ti54LWEsVCs9RipGKSxOLnk8LWg/KEY9Ti55K2gsVCs9RipGKTpOLnk+aCYmKEY9Ti55LWgsVCs9RipGKSxOLno8LUE/KEY9Ti56K0EsVCs9RipGKTpOLno+QSYmKEY9Ti56LUEsVCs9RipGKSxUfTtJcnQ9bmV3IGwscHJ0PW5ldyBsO0dpLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYm94IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO20obil8fChuPW5ldyBjQSk7bGV0IHM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG89TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHI9dC5jZW50ZXIsYT10LmhhbGZBeGVzLGg9bHQuZ2V0Q29sdW1uKGEsMCxTSiksQT1sdC5nZXRDb2x1bW4oYSwxLE9KKSxkPWx0LmdldENvbHVtbihhLDIsVkopLGY9bC5hZGQoaCxBLElydCk7bC5hZGQoZixkLGYpLGwuYWRkKGYscixmKTtsZXQgRT1sLnN1YnRyYWN0KGYsZSxwcnQpLF89bC5kb3QoaSxFKTtyZXR1cm4gcz1NYXRoLm1pbihfLHMpLG89TWF0aC5tYXgoXyxvKSxsLmFkZChyLGgsZiksbC5hZGQoZixBLGYpLGwuc3VidHJhY3QoZixkLGYpLGwuc3VidHJhY3QoZixlLEUpLF89bC5kb3QoaSxFKSxzPU1hdGgubWluKF8scyksbz1NYXRoLm1heChfLG8pLGwuYWRkKHIsaCxmKSxsLnN1YnRyYWN0KGYsQSxmKSxsLmFkZChmLGQsZiksbC5zdWJ0cmFjdChmLGUsRSksXz1sLmRvdChpLEUpLHM9TWF0aC5taW4oXyxzKSxvPU1hdGgubWF4KF8sbyksbC5hZGQocixoLGYpLGwuc3VidHJhY3QoZixBLGYpLGwuc3VidHJhY3QoZixkLGYpLGwuc3VidHJhY3QoZixlLEUpLF89bC5kb3QoaSxFKSxzPU1hdGgubWluKF8scyksbz1NYXRoLm1heChfLG8pLGwuc3VidHJhY3QocixoLGYpLGwuYWRkKGYsQSxmKSxsLmFkZChmLGQsZiksbC5zdWJ0cmFjdChmLGUsRSksXz1sLmRvdChpLEUpLHM9TWF0aC5taW4oXyxzKSxvPU1hdGgubWF4KF8sbyksbC5zdWJ0cmFjdChyLGgsZiksbC5hZGQoZixBLGYpLGwuc3VidHJhY3QoZixkLGYpLGwuc3VidHJhY3QoZixlLEUpLF89bC5kb3QoaSxFKSxzPU1hdGgubWluKF8scyksbz1NYXRoLm1heChfLG8pLGwuc3VidHJhY3QocixoLGYpLGwuc3VidHJhY3QoZixBLGYpLGwuYWRkKGYsZCxmKSxsLnN1YnRyYWN0KGYsZSxFKSxfPWwuZG90KGksRSkscz1NYXRoLm1pbihfLHMpLG89TWF0aC5tYXgoXyxvKSxsLnN1YnRyYWN0KHIsaCxmKSxsLnN1YnRyYWN0KGYsQSxmKSxsLnN1YnRyYWN0KGYsZCxmKSxsLnN1YnRyYWN0KGYsZSxFKSxfPWwuZG90KGksRSkscz1NYXRoLm1pbihfLHMpLG89TWF0aC5tYXgoXyxvKSxuLnN0YXJ0PXMsbi5zdG9wPW8sbn07dXJ0PW5ldyBsLENydD1uZXcgbCxncnQ9bmV3IGw7R2kuY29tcHV0ZUNvcm5lcnM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImJveCIsdCksbShlKXx8KGU9W25ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsXSk7bGV0IGk9dC5jZW50ZXIsbj10LmhhbGZBeGVzLHM9bHQuZ2V0Q29sdW1uKG4sMCx1cnQpLG89bHQuZ2V0Q29sdW1uKG4sMSxDcnQpLHI9bHQuZ2V0Q29sdW1uKG4sMixncnQpO3JldHVybiBsLmNsb25lKGksZVswXSksbC5zdWJ0cmFjdChlWzBdLHMsZVswXSksbC5zdWJ0cmFjdChlWzBdLG8sZVswXSksbC5zdWJ0cmFjdChlWzBdLHIsZVswXSksbC5jbG9uZShpLGVbMV0pLGwuc3VidHJhY3QoZVsxXSxzLGVbMV0pLGwuc3VidHJhY3QoZVsxXSxvLGVbMV0pLGwuYWRkKGVbMV0scixlWzFdKSxsLmNsb25lKGksZVsyXSksbC5zdWJ0cmFjdChlWzJdLHMsZVsyXSksbC5hZGQoZVsyXSxvLGVbMl0pLGwuc3VidHJhY3QoZVsyXSxyLGVbMl0pLGwuY2xvbmUoaSxlWzNdKSxsLnN1YnRyYWN0KGVbM10scyxlWzNdKSxsLmFkZChlWzNdLG8sZVszXSksbC5hZGQoZVszXSxyLGVbM10pLGwuY2xvbmUoaSxlWzRdKSxsLmFkZChlWzRdLHMsZVs0XSksbC5zdWJ0cmFjdChlWzRdLG8sZVs0XSksbC5zdWJ0cmFjdChlWzRdLHIsZVs0XSksbC5jbG9uZShpLGVbNV0pLGwuYWRkKGVbNV0scyxlWzVdKSxsLnN1YnRyYWN0KGVbNV0sbyxlWzVdKSxsLmFkZChlWzVdLHIsZVs1XSksbC5jbG9uZShpLGVbNl0pLGwuYWRkKGVbNl0scyxlWzZdKSxsLmFkZChlWzZdLG8sZVs2XSksbC5zdWJ0cmFjdChlWzZdLHIsZVs2XSksbC5jbG9uZShpLGVbN10pLGwuYWRkKGVbN10scyxlWzddKSxsLmFkZChlWzddLG8sZVs3XSksbC5hZGQoZVs3XSxyLGVbN10pLGV9O1RydD1uZXcgbHQ7R2kuY29tcHV0ZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJib3giLHQpLG0oZSl8fChlPW5ldyBhdCk7bGV0IGk9dC5jZW50ZXIsbj1sdC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlKHQuaGFsZkF4ZXMsMixUcnQpO3JldHVybiBhdC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihuLGksZSl9O05ydD1uZXcgTnQ7R2kuaXNPY2NsdWRlZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9jY2x1ZGVyIGlzIHJlcXVpcmVkLiIpO2xldCBpPU50LmZyb21PcmllbnRlZEJvdW5kaW5nQm94KHQsTnJ0KTtyZXR1cm4hZS5pc0JvdW5kaW5nU3BoZXJlVmlzaWJsZShpKX07R2kucHJvdG90eXBlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBHaS5pbnRlcnNlY3RQbGFuZSh0aGlzLHQpfTtHaS5wcm90b3R5cGUuZGlzdGFuY2VTcXVhcmVkVG89ZnVuY3Rpb24odCl7cmV0dXJuIEdpLmRpc3RhbmNlU3F1YXJlZFRvKHRoaXMsdCl9O0dpLnByb3RvdHlwZS5jb21wdXRlUGxhbmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBHaS5jb21wdXRlUGxhbmVEaXN0YW5jZXModGhpcyx0LGUsaSl9O0dpLnByb3RvdHlwZS5jb21wdXRlQ29ybmVycz1mdW5jdGlvbih0KXtyZXR1cm4gR2kuY29tcHV0ZUNvcm5lcnModGhpcyx0KX07R2kucHJvdG90eXBlLmNvbXB1dGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gR2kuY29tcHV0ZVRyYW5zZm9ybWF0aW9uKHRoaXMsdCl9O0dpLnByb3RvdHlwZS5pc09jY2x1ZGVkPWZ1bmN0aW9uKHQpe3JldHVybiBHaS5pc09jY2x1ZGVkKHRoaXMsdCl9O0dpLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmbC5lcXVhbHModC5jZW50ZXIsZS5jZW50ZXIpJiZsdC5lcXVhbHModC5oYWxmQXhlcyxlLmhhbGZBeGVzKX07R2kucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBHaS5jbG9uZSh0aGlzLHQpfTtHaS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBHaS5lcXVhbHModGhpcyx0KX07enM9R2l9KTt2YXIgc3AsYnJ0LEFfLGhiPU8oKCk9PntIdCgpO3JpKCk7VnQoKTttdCgpO3NwPXt9O3NwLmdldEhlaWdodD1mdW5jdGlvbih0LGUsaSl7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgWSgic2NhbGUgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIuIik7aWYoIU51bWJlci5pc0Zpbml0ZShpKSl0aHJvdyBuZXcgWSgicmVsYXRpdmVIZWlnaHQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIuIik7cmV0dXJuKHQtaSkqZStpfTticnQ9bmV3IHV0O3NwLmdldFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4scyl7bGV0IG89ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LGJydCk7aWYoIW0obykpcmV0dXJuIGwuY2xvbmUodCxzKTtsZXQgcj1zcC5nZXRIZWlnaHQoby5oZWlnaHQsaSxuKTtyZXR1cm4gbC5mcm9tUmFkaWFucyhvLmxvbmdpdHVkZSxvLmxhdGl0dWRlLHIsZSxzKX07QV89c3B9KTtmdW5jdGlvbiBxbSh0LGUsaSxuKXt0PVoodCwxKSxlPVooZSwxKSxpPVooaSwxKSxuPVoobiwxKSx0aGlzLnZhbHVlPW5ldyBVaW50OEFycmF5KFtadC5mbG9hdFRvQnl0ZSh0KSxadC5mbG9hdFRvQnl0ZShlKSxadC5mbG9hdFRvQnl0ZShpKSxadC5mbG9hdFRvQnl0ZShuKV0pfXZhciBHSixCSj1PKCgpPT57UW4oKTtvaSgpO2J0KCk7bXQoKTtWdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHFtLnByb3RvdHlwZSx7Y29tcG9uZW50RGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBBdC5VTlNJR05FRF9CWVRFfX0sY29tcG9uZW50c1BlckF0dHJpYnV0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDR9fSxub3JtYWxpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiEwfX19KTtxbS5mcm9tQ29sb3I9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNvbG9yIGlzIHJlcXVpcmVkLiIpO3JldHVybiBuZXcgcW0odC5yZWQsdC5ncmVlbix0LmJsdWUsdC5hbHBoYSl9O3FtLnRvVmFsdWU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiY29sb3IgaXMgcmVxdWlyZWQuIik7cmV0dXJuIG0oZSk/dC50b0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KHQudG9CeXRlcygpKX07cW0uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0LnZhbHVlWzBdPT09ZS52YWx1ZVswXSYmdC52YWx1ZVsxXT09PWUudmFsdWVbMV0mJnQudmFsdWVbMl09PT1lLnZhbHVlWzJdJiZ0LnZhbHVlWzNdPT09ZS52YWx1ZVszXX07R0o9cW19KTt2YXIgV0osREo9TygoKT0+e1dKPWBpbiB2ZWMzIHBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHBvc2l0aW9uM0RMb3c7CmluIGZsb2F0IGJhdGNoSWQ7CgojaWZkZWYgRVhUUlVERURfR0VPTUVUUlkKaW4gdmVjMyBleHRydWRlRGlyZWN0aW9uOwoKdW5pZm9ybSBmbG9hdCB1X2dsb2JlTWluaW11bUFsdGl0dWRlOwojZW5kaWYgLy8gRVhUUlVERURfR0VPTUVUUlkKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKb3V0IHZlYzQgdl9jb2xvcjsKI2VuZGlmIC8vIFBFUl9JTlNUQU5DRV9DT0xPUgoKI2lmZGVmIFRFWFRVUkVfQ09PUkRJTkFURVMKI2lmZGVmIFNQSEVSSUNBTApvdXQgdmVjNCB2X3NwaGVyaWNhbEV4dGVudHM7CiNlbHNlIC8vIFNQSEVSSUNBTApvdXQgdmVjMiB2X2ludmVyc2VQbGFuZUV4dGVudHM7Cm91dCB2ZWM0IHZfd2VzdFBsYW5lOwpvdXQgdmVjNCB2X3NvdXRoUGxhbmU7CiNlbmRpZiAvLyBTUEhFUklDQUwKb3V0IHZlYzMgdl91dk1pbkFuZFNwaGVyaWNhbExvbmdpdHVkZVJvdGF0aW9uOwpvdXQgdmVjMyB2X3VNYXhBbmRJbnZlcnNlRGlzdGFuY2U7Cm91dCB2ZWMzIHZfdk1heEFuZEludmVyc2VEaXN0YW5jZTsKI2VuZGlmIC8vIFRFWFRVUkVfQ09PUkRJTkFURVMKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgcG9zaXRpb24gPSBjem1fY29tcHV0ZVBvc2l0aW9uKCk7CgojaWZkZWYgRVhUUlVERURfR0VPTUVUUlkKICAgIGZsb2F0IGRlbHRhID0gbWluKHVfZ2xvYmVNaW5pbXVtQWx0aXR1ZGUsIGN6bV9nZW9tZXRyaWNUb2xlcmFuY2VPdmVyTWV0ZXIgKiBsZW5ndGgocG9zaXRpb24ueHl6KSk7CiAgICBkZWx0YSAqPSBjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUzRCA/IDEuMCA6IDAuMDsKCiAgICAvL2V4dHJ1ZGVEaXJlY3Rpb24gaXMgemVybyBmb3IgdGhlIHRvcCBsYXllcgogICAgcG9zaXRpb24gPSBwb3NpdGlvbiArIHZlYzQoZXh0cnVkZURpcmVjdGlvbiAqIGRlbHRhLCAwLjApOwojZW5kaWYKCiNpZmRlZiBURVhUVVJFX0NPT1JESU5BVEVTCiNpZmRlZiBTUEhFUklDQUwKICAgIHZfc3BoZXJpY2FsRXh0ZW50cyA9IGN6bV9iYXRjaFRhYmxlX3NwaGVyaWNhbEV4dGVudHMoYmF0Y2hJZCk7CiAgICB2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb24ueiA9IGN6bV9iYXRjaFRhYmxlX2xvbmdpdHVkZVJvdGF0aW9uKGJhdGNoSWQpOwojZWxzZSAvLyBTUEhFUklDQUwKI2lmZGVmIENPTFVNQlVTX1ZJRVdfMkQKICAgIHZlYzQgcGxhbmVzMkRfaGlnaCA9IGN6bV9iYXRjaFRhYmxlX3BsYW5lczJEX0hJR0goYmF0Y2hJZCk7CiAgICB2ZWM0IHBsYW5lczJEX2xvdyA9IGN6bV9iYXRjaFRhYmxlX3BsYW5lczJEX0xPVyhiYXRjaElkKTsKCiAgICAvLyBJZiB0aGUgcHJpbWl0aXZlIGlzIHNwbGl0IGFjcm9zcyB0aGUgSURMIChwbGFuZXMyRF9oaWdoLnggPiBwbGFuZXMyRF9oaWdoLncpOgogICAgLy8gLSBJZiB0aGlzIHZlcnRleCBpcyBvbiB0aGUgZWFzdCBzaWRlIG9mIHRoZSBJREwgKHBvc2l0aW9uM0RMb3cueSA+IDAuMCwgY29tcGFyaXNvbiB3aXRoIHBvc2l0aW9uM0RIaWdoIG1heSBwcm9kdWNlIGFydGlmYWN0cykKICAgIC8vIC0gZXhpc3RpbmcgImVhc3QiIGlzIG9uIHRoZSB3cm9uZyBzaWRlIG9mIHRoZSB3b3JsZCwgZmFyIGF3YXkgKHBsYW5lczJEX2hpZ2gvbG93LncpCiAgICAvLyAtIHNvIHNldCAiZWFzdCIgYXMgYmV5b25kIHRoZSBlYXN0bW9zdCBleHRlbnQgb2YgdGhlIHByb2plY3Rpb24gKGlkbFNwbGl0TmV3UGxhbmVIaUxvdykKICAgIHZlYzIgaWRsU3BsaXROZXdQbGFuZUhpTG93ID0gdmVjMihFQVNUX01PU1RfWF9ISUdIIC0gKFdFU1RfTU9TVF9YX0hJR0ggLSBwbGFuZXMyRF9oaWdoLncpLCBFQVNUX01PU1RfWF9MT1cgLSAoV0VTVF9NT1NUX1hfTE9XIC0gcGxhbmVzMkRfbG93LncpKTsKICAgIGJvb2wgaWRsU3BsaXQgPSBwbGFuZXMyRF9oaWdoLnggPiBwbGFuZXMyRF9oaWdoLncgJiYgcG9zaXRpb24zRExvdy55ID4gMC4wOwogICAgcGxhbmVzMkRfaGlnaC53ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueCwgcGxhbmVzMkRfaGlnaC53KTsKICAgIHBsYW5lczJEX2xvdy53ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueSwgcGxhbmVzMkRfbG93LncpOwoKICAgIC8vIC0gZWxzZSwgaWYgdGhpcyB2ZXJ0ZXggaXMgb24gdGhlIHdlc3Qgc2lkZSBvZiB0aGUgSURMIChwb3NpdGlvbjNETG93LnkgPCAwLjApCiAgICAvLyAtIGV4aXN0aW5nICJ3ZXN0IiBpcyBvbiB0aGUgd3Jvbmcgc2lkZSBvZiB0aGUgd29ybGQsIGZhciBhd2F5IChwbGFuZXMyRF9oaWdoL2xvdy54KQogICAgLy8gLSBzbyBzZXQgIndlc3QiIGFzIGJleW9uZCB0aGUgd2VzdG1vc3QgZXh0ZW50IG9mIHRoZSBwcm9qZWN0aW9uIChpZGxTcGxpdE5ld1BsYW5lSGlMb3cpCiAgICBpZGxTcGxpdCA9IHBsYW5lczJEX2hpZ2gueCA+IHBsYW5lczJEX2hpZ2gudyAmJiBwb3NpdGlvbjNETG93LnkgPCAwLjA7CiAgICBpZGxTcGxpdE5ld1BsYW5lSGlMb3cgPSB2ZWMyKFdFU1RfTU9TVF9YX0hJR0ggLSAoRUFTVF9NT1NUX1hfSElHSCAtIHBsYW5lczJEX2hpZ2gueCksIFdFU1RfTU9TVF9YX0xPVyAtIChFQVNUX01PU1RfWF9MT1cgLSBwbGFuZXMyRF9sb3cueCkpOwogICAgcGxhbmVzMkRfaGlnaC54ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueCwgcGxhbmVzMkRfaGlnaC54KTsKICAgIHBsYW5lczJEX2xvdy54ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueSwgcGxhbmVzMkRfbG93LngpOwoKICAgIHZlYzMgc291dGhXZXN0Q29ybmVyID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHBsYW5lczJEX2hpZ2gueHkpLCB2ZWMzKDAuMCwgcGxhbmVzMkRfbG93Lnh5KSkpLnh5ejsKICAgIHZlYzMgbm9ydGhXZXN0Q29ybmVyID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHBsYW5lczJEX2hpZ2gueCwgcGxhbmVzMkRfaGlnaC56KSwgdmVjMygwLjAsIHBsYW5lczJEX2xvdy54LCBwbGFuZXMyRF9sb3cueikpKS54eXo7CiAgICB2ZWMzIHNvdXRoRWFzdENvcm5lciA9IChjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHZlYzMoMC4wLCBwbGFuZXMyRF9oaWdoLncsIHBsYW5lczJEX2hpZ2gueSksIHZlYzMoMC4wLCBwbGFuZXMyRF9sb3cudywgcGxhbmVzMkRfbG93LnkpKSkueHl6OwojZWxzZSAvLyBDT0xVTUJVU19WSUVXXzJECiAgICAvLyAzRCBjYXNlIGhhcyBzbWFsbGVyICJwbGFuZSBleHRlbnRzLCIgc28gcGxhbmVzIGVuY29kZWQgYXMgYSA2NCBiaXQgcG9zaXRpb24gYW5kIDIgdmVjM3MgZm9yIGRpc3RhbmNlcy9kaXJlY3Rpb24KICAgIHZlYzMgc291dGhXZXN0Q29ybmVyID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUoY3ptX2JhdGNoVGFibGVfc291dGhXZXN0X0hJR0goYmF0Y2hJZCksIGN6bV9iYXRjaFRhYmxlX3NvdXRoV2VzdF9MT1coYmF0Y2hJZCkpKS54eXo7CiAgICB2ZWMzIG5vcnRoV2VzdENvcm5lciA9IGN6bV9ub3JtYWwgKiBjem1fYmF0Y2hUYWJsZV9ub3J0aHdhcmQoYmF0Y2hJZCkgKyBzb3V0aFdlc3RDb3JuZXI7CiAgICB2ZWMzIHNvdXRoRWFzdENvcm5lciA9IGN6bV9ub3JtYWwgKiBjem1fYmF0Y2hUYWJsZV9lYXN0d2FyZChiYXRjaElkKSArIHNvdXRoV2VzdENvcm5lcjsKI2VuZGlmIC8vIENPTFVNQlVTX1ZJRVdfMkQKCiAgICB2ZWMzIGVhc3RXYXJkID0gc291dGhFYXN0Q29ybmVyIC0gc291dGhXZXN0Q29ybmVyOwogICAgZmxvYXQgZWFzdEV4dGVudCA9IGxlbmd0aChlYXN0V2FyZCk7CiAgICBlYXN0V2FyZCAvPSBlYXN0RXh0ZW50OwoKICAgIHZlYzMgbm9ydGhXYXJkID0gbm9ydGhXZXN0Q29ybmVyIC0gc291dGhXZXN0Q29ybmVyOwogICAgZmxvYXQgbm9ydGhFeHRlbnQgPSBsZW5ndGgobm9ydGhXYXJkKTsKICAgIG5vcnRoV2FyZCAvPSBub3J0aEV4dGVudDsKCiAgICB2X3dlc3RQbGFuZSA9IHZlYzQoZWFzdFdhcmQsIC1kb3QoZWFzdFdhcmQsIHNvdXRoV2VzdENvcm5lcikpOwogICAgdl9zb3V0aFBsYW5lID0gdmVjNChub3J0aFdhcmQsIC1kb3Qobm9ydGhXYXJkLCBzb3V0aFdlc3RDb3JuZXIpKTsKICAgIHZfaW52ZXJzZVBsYW5lRXh0ZW50cyA9IHZlYzIoMS4wIC8gZWFzdEV4dGVudCwgMS4wIC8gbm9ydGhFeHRlbnQpOwojZW5kaWYgLy8gU1BIRVJJQ0FMCiAgICB2ZWM0IHV2TWluQW5kRXh0ZW50cyA9IGN6bV9iYXRjaFRhYmxlX3V2TWluQW5kRXh0ZW50cyhiYXRjaElkKTsKICAgIHZlYzQgdU1heFZtYXggPSBjem1fYmF0Y2hUYWJsZV91TWF4Vm1heChiYXRjaElkKTsKCiAgICB2X3VNYXhBbmRJbnZlcnNlRGlzdGFuY2UgPSB2ZWMzKHVNYXhWbWF4Lnh5LCB1dk1pbkFuZEV4dGVudHMueik7CiAgICB2X3ZNYXhBbmRJbnZlcnNlRGlzdGFuY2UgPSB2ZWMzKHVNYXhWbWF4Lnp3LCB1dk1pbkFuZEV4dGVudHMudyk7CiAgICB2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb24ueHkgPSB1dk1pbkFuZEV4dGVudHMueHk7CiNlbmRpZiAvLyBURVhUVVJFX0NPT1JESU5BVEVTCgojaWZkZWYgUEVSX0lOU1RBTkNFX0NPTE9SCiAgICB2X2NvbG9yID0gY3ptX2JhdGNoVGFibGVfY29sb3IoYmF0Y2hJZCk7CiNlbmRpZgoKICAgIGdsX1Bvc2l0aW9uID0gY3ptX2RlcHRoQ2xhbXAoY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcG9zaXRpb24pOwp9CmB9KTt2YXIgTUosVUo9TygoKT0+e01KPWAjaWZkZWYgVkVDVE9SX1RJTEUKdW5pZm9ybSB2ZWM0IHVfaGlnaGxpZ2h0Q29sb3I7CiNlbmRpZgoKdm9pZCBtYWluKHZvaWQpCnsKI2lmZGVmIFZFQ1RPUl9USUxFCiAgICBvdXRfRnJhZ0NvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh1X2hpZ2hsaWdodENvbG9yKTsKI2Vsc2UKICAgIG91dF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CiNlbmRpZgogICAgY3ptX3dyaXRlRGVwdGhDbGFtcCgpOwp9CmB9KTt2YXIgUUosa0o9TygoKT0+e1FKPWBpbiB2ZWMzIHZfcG9zaXRpb25FQzsKaW4gdmVjMyB2X25vcm1hbEVDOwppbiB2ZWM0IHZfY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWMzIHBvc2l0aW9uVG9FeWVFQyA9IC12X3Bvc2l0aW9uRUM7CgogICAgdmVjMyBub3JtYWxFQyA9IG5vcm1hbGl6ZSh2X25vcm1hbEVDKTsKI2lmZGVmIEZBQ0VfRk9SV0FSRAogICAgbm9ybWFsRUMgPSBmYWNlZm9yd2FyZChub3JtYWxFQywgdmVjMygwLjAsIDAuMCwgMS4wKSwgLW5vcm1hbEVDKTsKI2VuZGlmCgogICAgdmVjNCBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3Qodl9jb2xvcik7CgogICAgY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dDsKICAgIG1hdGVyaWFsSW5wdXQubm9ybWFsRUMgPSBub3JtYWxFQzsKICAgIG1hdGVyaWFsSW5wdXQucG9zaXRpb25Ub0V5ZUVDID0gcG9zaXRpb25Ub0V5ZUVDOwogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBjb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGNvbG9yLmE7CgogICAgb3V0X0ZyYWdDb2xvciA9IGN6bV9waG9uZyhub3JtYWxpemUocG9zaXRpb25Ub0V5ZUVDKSwgbWF0ZXJpYWwsIGN6bV9saWdodERpcmVjdGlvbkVDKTsKfQpgfSk7dmFyIExKLHlKPU8oKCk9PntMSj1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwppbiB2ZWMzIG5vcm1hbDsKaW4gdmVjNCBjb2xvcjsKaW4gZmxvYXQgYmF0Y2hJZDsKCm91dCB2ZWMzIHZfcG9zaXRpb25FQzsKb3V0IHZlYzMgdl9ub3JtYWxFQzsKb3V0IHZlYzQgdl9jb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgcCA9IGN6bV9jb21wdXRlUG9zaXRpb24oKTsKCiAgICB2X3Bvc2l0aW9uRUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwKS54eXo7ICAgICAgLy8gcG9zaXRpb24gaW4gZXllIGNvb3JkaW5hdGVzCiAgICB2X25vcm1hbEVDID0gY3ptX25vcm1hbCAqIG5vcm1hbDsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsIGluIGV5ZSBjb29yZGluYXRlcwogICAgdl9jb2xvciA9IGNvbG9yOwoKICAgIGdsX1Bvc2l0aW9uID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcDsKfQpgfSk7dmFyIHdKLHhKPU8oKCk9Pnt3Sj1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwppbiB2ZWM0IGNvbG9yOwppbiBmbG9hdCBiYXRjaElkOwoKb3V0IHZlYzQgdl9jb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgcCA9IGN6bV9jb21wdXRlUG9zaXRpb24oKTsKCiAgICB2X2NvbG9yID0gY29sb3I7CgogICAgZ2xfUG9zaXRpb24gPSBjem1fbW9kZWxWaWV3UHJvamVjdGlvblJlbGF0aXZlVG9FeWUgKiBwOwp9CmB9KTtmdW5jdGlvbiB1aCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9Wih0LnRyYW5zbHVjZW50LCEwKSxpPVoodC5jbG9zZWQsITEpLG49Wih0LmZsYXQsITEpLHM9bj93SjpMSixvPW4/UUk6UUoscj1uP3VoLkZMQVRfVkVSVEVYX0ZPUk1BVDp1aC5WRVJURVhfRk9STUFUO3RoaXMubWF0ZXJpYWw9dm9pZCAwLHRoaXMudHJhbnNsdWNlbnQ9ZSx0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2U9Wih0LnZlcnRleFNoYWRlclNvdXJjZSxzKSx0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZT1aKHQuZnJhZ21lbnRTaGFkZXJTb3VyY2UsbyksdGhpcy5fcmVuZGVyU3RhdGU9VW8uZ2V0RGVmYXVsdFJlbmRlclN0YXRlKGUsaSx0LnJlbmRlclN0YXRlKSx0aGlzLl9jbG9zZWQ9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cix0aGlzLl9mbGF0PW4sdGhpcy5fZmFjZUZvcndhcmQ9Wih0LmZhY2VGb3J3YXJkLCFpKX12YXIgRGEsb3A9TygoKT0+e2J0KCk7THMoKTtrSigpO3lKKCk7R04oKTt4SigpO0xJKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModWgucHJvdG90eXBlLHt2ZXJ0ZXhTaGFkZXJTb3VyY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2V9fSxmcmFnbWVudFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYWdtZW50U2hhZGVyU291cmNlfX0scmVuZGVyU3RhdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJTdGF0ZX19LGNsb3NlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nsb3NlZH19LHZlcnRleEZvcm1hdDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleEZvcm1hdH19LGZsYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mbGF0fX0sZmFjZUZvcndhcmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mYWNlRm9yd2FyZH19fSk7dWguVkVSVEVYX0ZPUk1BVD1PdC5QT1NJVElPTl9BTkRfTk9STUFMO3VoLkZMQVRfVkVSVEVYX0ZPUk1BVD1PdC5QT1NJVElPTl9PTkxZO3VoLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZT1Vby5wcm90b3R5cGUuZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2U7dWgucHJvdG90eXBlLmlzVHJhbnNsdWNlbnQ9VW8ucHJvdG90eXBlLmlzVHJhbnNsdWNlbnQ7dWgucHJvdG90eXBlLmdldFJlbmRlclN0YXRlPVVvLnByb3RvdHlwZS5nZXRSZW5kZXJTdGF0ZTtEYT11aH0pO3ZhciBjYixQSj1PKCgpPT57Y2I9YCNpZmRlZiBURVhUVVJFX0NPT1JESU5BVEVTCiNpZmRlZiBTUEhFUklDQUwKaW4gdmVjNCB2X3NwaGVyaWNhbEV4dGVudHM7CiNlbHNlIC8vIFNQSEVSSUNBTAppbiB2ZWMyIHZfaW52ZXJzZVBsYW5lRXh0ZW50czsKaW4gdmVjNCB2X3dlc3RQbGFuZTsKaW4gdmVjNCB2X3NvdXRoUGxhbmU7CiNlbmRpZiAvLyBTUEhFUklDQUwKaW4gdmVjMyB2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb247CmluIHZlYzMgdl91TWF4QW5kSW52ZXJzZURpc3RhbmNlOwppbiB2ZWMzIHZfdk1heEFuZEludmVyc2VEaXN0YW5jZTsKI2VuZGlmIC8vIFRFWFRVUkVfQ09PUkRJTkFURVMKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKaW4gdmVjNCB2X2NvbG9yOwojZW5kaWYKCiNpZmRlZiBOT1JNQUxfRUMKdmVjMyBnZXRFeWVDb29yZGluYXRlM0Zyb21XaW5kb3dDb29yZGluYXRlKHZlYzIgZnJhZ0Nvb3JkLCBmbG9hdCBsb2dEZXB0aE9yRGVwdGgpIHsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV93aW5kb3dUb0V5ZUNvb3JkaW5hdGVzKGZyYWdDb29yZCwgbG9nRGVwdGhPckRlcHRoKTsKICAgIHJldHVybiBleWVDb29yZGluYXRlLnh5eiAvIGV5ZUNvb3JkaW5hdGUudzsKfQoKdmVjMyB2ZWN0b3JGcm9tT2Zmc2V0KHZlYzQgZXllQ29vcmRpbmF0ZSwgdmVjMiBwb3NpdGl2ZU9mZnNldCkgewogICAgdmVjMiBnbEZyYWdDb29yZFhZID0gZ2xfRnJhZ0Nvb3JkLnh5OwogICAgLy8gU2FtcGxlIGRlcHRocyBhdCBib3RoIG9mZnNldCBhbmQgbmVnYXRpdmUgb2Zmc2V0CiAgICBmbG9hdCB1cE9yUmlnaHRMb2dEZXB0aCA9IGN6bV91bnBhY2tEZXB0aCh0ZXh0dXJlKGN6bV9nbG9iZURlcHRoVGV4dHVyZSwgKGdsRnJhZ0Nvb3JkWFkgKyBwb3NpdGl2ZU9mZnNldCkgLyBjem1fdmlld3BvcnQuencpKTsKICAgIGZsb2F0IGRvd25PckxlZnRMb2dEZXB0aCA9IGN6bV91bnBhY2tEZXB0aCh0ZXh0dXJlKGN6bV9nbG9iZURlcHRoVGV4dHVyZSwgKGdsRnJhZ0Nvb3JkWFkgLSBwb3NpdGl2ZU9mZnNldCkgLyBjem1fdmlld3BvcnQuencpKTsKICAgIC8vIEV4cGxpY2l0bHkgZXZhbHVhdGUgYm90aCBwYXRocwogICAgLy8gTmVjZXNzYXJ5IGZvciBtdWx0aWZydXN0dW0gYW5kIGZvciBlZGdlcyBvZiB0aGUgc2NyZWVuCiAgICBidmVjMiB1cE9yUmlnaHRJbkJvdW5kcyA9IGxlc3NUaGFuKGdsRnJhZ0Nvb3JkWFkgKyBwb3NpdGl2ZU9mZnNldCwgY3ptX3ZpZXdwb3J0Lnp3KTsKICAgIGZsb2F0IHVzZVVwT3JSaWdodCA9IGZsb2F0KHVwT3JSaWdodExvZ0RlcHRoID4gMC4wICYmIHVwT3JSaWdodEluQm91bmRzLnggJiYgdXBPclJpZ2h0SW5Cb3VuZHMueSk7CiAgICBmbG9hdCB1c2VEb3duT3JMZWZ0ID0gZmxvYXQodXNlVXBPclJpZ2h0ID09IDAuMCk7CiAgICB2ZWMzIHVwT3JSaWdodEVDID0gZ2V0RXllQ29vcmRpbmF0ZTNGcm9tV2luZG93Q29vcmRpbmF0ZShnbEZyYWdDb29yZFhZICsgcG9zaXRpdmVPZmZzZXQsIHVwT3JSaWdodExvZ0RlcHRoKTsKICAgIHZlYzMgZG93bk9yTGVmdEVDID0gZ2V0RXllQ29vcmRpbmF0ZTNGcm9tV2luZG93Q29vcmRpbmF0ZShnbEZyYWdDb29yZFhZIC0gcG9zaXRpdmVPZmZzZXQsIGRvd25PckxlZnRMb2dEZXB0aCk7CiAgICByZXR1cm4gKHVwT3JSaWdodEVDIC0gKGV5ZUNvb3JkaW5hdGUueHl6IC8gZXllQ29vcmRpbmF0ZS53KSkgKiB1c2VVcE9yUmlnaHQgKyAoKGV5ZUNvb3JkaW5hdGUueHl6IC8gZXllQ29vcmRpbmF0ZS53KSAtIGRvd25PckxlZnRFQykgKiB1c2VEb3duT3JMZWZ0Owp9CiNlbmRpZiAvLyBOT1JNQUxfRUMKCnZvaWQgbWFpbih2b2lkKQp7CiNpZmRlZiBSRVFVSVJFU19FQwogICAgZmxvYXQgbG9nRGVwdGhPckRlcHRoID0gY3ptX3VucGFja0RlcHRoKHRleHR1cmUoY3ptX2dsb2JlRGVwdGhUZXh0dXJlLCBnbF9GcmFnQ29vcmQueHkgLyBjem1fdmlld3BvcnQuencpKTsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV93aW5kb3dUb0V5ZUNvb3JkaW5hdGVzKGdsX0ZyYWdDb29yZC54eSwgbG9nRGVwdGhPckRlcHRoKTsKI2VuZGlmCgojaWZkZWYgUkVRVUlSRVNfV0MKICAgIHZlYzQgd29ybGRDb29yZGluYXRlNCA9IGN6bV9pbnZlcnNlVmlldyAqIGV5ZUNvb3JkaW5hdGU7CiAgICB2ZWMzIHdvcmxkQ29vcmRpbmF0ZSA9IHdvcmxkQ29vcmRpbmF0ZTQueHl6IC8gd29ybGRDb29yZGluYXRlNC53OwojZW5kaWYKCiNpZmRlZiBURVhUVVJFX0NPT1JESU5BVEVTCiAgICB2ZWMyIHV2OwojaWZkZWYgU1BIRVJJQ0FMCiAgICAvLyBUcmVhdCB3b3JsZCBjb29yZHMgYXMgYSBzcGhlcmUgbm9ybWFsIGZvciBzcGhlcmljYWwgY29vcmRpbmF0ZXMKICAgIHZlYzIgc3BoZXJpY2FsTGF0TG9uZyA9IGN6bV9hcHByb3hpbWF0ZVNwaGVyaWNhbENvb3JkaW5hdGVzKHdvcmxkQ29vcmRpbmF0ZSk7CiAgICBzcGhlcmljYWxMYXRMb25nLnkgKz0gdl91dk1pbkFuZFNwaGVyaWNhbExvbmdpdHVkZVJvdGF0aW9uLno7CiAgICBzcGhlcmljYWxMYXRMb25nLnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoc3BoZXJpY2FsTGF0TG9uZy55IDwgY3ptX3BpLCBzcGhlcmljYWxMYXRMb25nLnksIHNwaGVyaWNhbExhdExvbmcueSAtIGN6bV90d29QaSk7CiAgICB1di54ID0gKHNwaGVyaWNhbExhdExvbmcueSAtIHZfc3BoZXJpY2FsRXh0ZW50cy55KSAqIHZfc3BoZXJpY2FsRXh0ZW50cy53OwogICAgdXYueSA9IChzcGhlcmljYWxMYXRMb25nLnggLSB2X3NwaGVyaWNhbEV4dGVudHMueCkgKiB2X3NwaGVyaWNhbEV4dGVudHMuejsKI2Vsc2UgLy8gU1BIRVJJQ0FMCiAgICAvLyBVbnBhY2sgcGxhbmVzIGFuZCB0cmFuc2Zvcm0gdG8gZXllIHNwYWNlCiAgICB1di54ID0gY3ptX3BsYW5lRGlzdGFuY2Uodl93ZXN0UGxhbmUsIGV5ZUNvb3JkaW5hdGUueHl6IC8gZXllQ29vcmRpbmF0ZS53KSAqIHZfaW52ZXJzZVBsYW5lRXh0ZW50cy54OwogICAgdXYueSA9IGN6bV9wbGFuZURpc3RhbmNlKHZfc291dGhQbGFuZSwgZXllQ29vcmRpbmF0ZS54eXogLyBleWVDb29yZGluYXRlLncpICogdl9pbnZlcnNlUGxhbmVFeHRlbnRzLnk7CiNlbmRpZiAvLyBTUEhFUklDQUwKI2VuZGlmIC8vIFRFWFRVUkVfQ09PUkRJTkFURVMKCiNpZmRlZiBQSUNLCiNpZmRlZiBDVUxMX0ZSQUdNRU5UUwogICAgLy8gV2hlbiBjbGFzc2lmeWluZyB0cmFuc2x1Y2VudCBnZW9tZXRyeSwgbG9nRGVwdGhPckRlcHRoID09IDAuMAogICAgLy8gaW5kaWNhdGVzIGEgcmVnaW9uIHRoYXQgc2hvdWxkIG5vdCBiZSBjbGFzc2lmaWVkLCBwb3NzaWJseSBkdWUgdG8gdGhlcmUKICAgIC8vIGJlaW5nIG9wYXF1ZSBwaXhlbHMgdGhlcmUgaW4gYW5vdGhlciBidWZmZXIuCiAgICAvLyBDaGVjayBmb3IgbG9nRGVwdGhPckRlcHRoICE9IDAuMCB0byBtYWtlIHN1cmUgdGhpcyBzaG91bGQgYmUgY2xhc3NpZmllZC4KICAgIGlmICgwLjAgPD0gdXYueCAmJiB1di54IDw9IDEuMCAmJiAwLjAgPD0gdXYueSAmJiB1di55IDw9IDEuMCB8fCBsb2dEZXB0aE9yRGVwdGggIT0gMC4wKSB7CiAgICAgICAgb3V0X0ZyYWdDb2xvci5hID0gMS4wOyAvLyAwLjAgYWxwaGEgbGVhZHMgdG8gZGlzY2FyZCBmcm9tIFNoYWRlclNvdXJjZS5jcmVhdGVQaWNrRnJhZ21lbnRTaGFkZXJTb3VyY2UKICAgICAgICBjem1fd3JpdGVEZXB0aENsYW1wKCk7CiAgICB9CiNlbHNlIC8vIENVTExfRlJBR01FTlRTCiAgICAgICAgb3V0X0ZyYWdDb2xvci5hID0gMS4wOwojZW5kaWYgLy8gQ1VMTF9GUkFHTUVOVFMKI2Vsc2UgLy8gUElDSwoKI2lmZGVmIENVTExfRlJBR01FTlRTCiAgICAvLyBXaGVuIGNsYXNzaWZ5aW5nIHRyYW5zbHVjZW50IGdlb21ldHJ5LCBsb2dEZXB0aE9yRGVwdGggPT0gMC4wCiAgICAvLyBpbmRpY2F0ZXMgYSByZWdpb24gdGhhdCBzaG91bGQgbm90IGJlIGNsYXNzaWZpZWQsIHBvc3NpYmx5IGR1ZSB0byB0aGVyZQogICAgLy8gYmVpbmcgb3BhcXVlIHBpeGVscyB0aGVyZSBpbiBhbm90aGVyIGJ1ZmZlci4KICAgIGlmICh1di54IDw9IDAuMCB8fCAxLjAgPD0gdXYueCB8fCB1di55IDw9IDAuMCB8fCAxLjAgPD0gdXYueSB8fCBsb2dEZXB0aE9yRGVwdGggPT0gMC4wKSB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2VuZGlmCgojaWZkZWYgTk9STUFMX0VDCiAgICAvLyBDb21wdXRlIG5vcm1hbCBieSBzYW1wbGluZyBhZGphY2VudCBwaXhlbHMgaW4gMngyIGJsb2NrIGluIHNjcmVlbiBzcGFjZQogICAgdmVjMyBkb3duVXAgPSB2ZWN0b3JGcm9tT2Zmc2V0KGV5ZUNvb3JkaW5hdGUsIHZlYzIoMC4wLCAxLjApKTsKICAgIHZlYzMgbGVmdFJpZ2h0ID0gdmVjdG9yRnJvbU9mZnNldChleWVDb29yZGluYXRlLCB2ZWMyKDEuMCwgMC4wKSk7CiAgICB2ZWMzIG5vcm1hbEVDID0gbm9ybWFsaXplKGNyb3NzKGxlZnRSaWdodCwgZG93blVwKSk7CiNlbmRpZgoKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKCiAgICB2ZWM0IGNvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh2X2NvbG9yKTsKI2lmZGVmIEZMQVQKICAgIG91dF9GcmFnQ29sb3IgPSBjb2xvcjsKI2Vsc2UgLy8gRkxBVAogICAgY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dDsKICAgIG1hdGVyaWFsSW5wdXQubm9ybWFsRUMgPSBub3JtYWxFQzsKICAgIG1hdGVyaWFsSW5wdXQucG9zaXRpb25Ub0V5ZUVDID0gLWV5ZUNvb3JkaW5hdGUueHl6OwogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBjb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGNvbG9yLmE7CgogICAgb3V0X0ZyYWdDb2xvciA9IGN6bV9waG9uZyhub3JtYWxpemUoLWV5ZUNvb3JkaW5hdGUueHl6KSwgbWF0ZXJpYWwsIGN6bV9saWdodERpcmVjdGlvbkVDKTsKI2VuZGlmIC8vIEZMQVQKCiAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4gUmVxdWlyZWQgZm9yIGNsYXNzaWZpY2F0aW9uIHByaW1pdGl2ZXMgb24gdHJhbnNsdWNlbnQgZ2xvYmUuCiAgICBvdXRfRnJhZ0NvbG9yLnJnYiAqPSBvdXRfRnJhZ0NvbG9yLmE7CgojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKCiAgICAvLyBNYXRlcmlhbCBzdXBwb3J0LgogICAgLy8gVVNFU18gaXMgZGlzdGluY3QgZnJvbSBSRVFVSVJFU18sIGJlY2F1c2Ugc29tZSB0aGluZ3MgYXJlIGRlcGVuZGVuY2llcyBvZiBlYWNoIG90aGVyIG9yCiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGN1bGxpbmcgYnV0IG1pZ2h0IG5vdCBhY3R1YWxseSBiZSB1c2VkIGJ5IHRoZSBtYXRlcmlhbC4KCiAgICBjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0OwoKI2lmZGVmIFVTRVNfTk9STUFMX0VDCiAgICBtYXRlcmlhbElucHV0Lm5vcm1hbEVDID0gbm9ybWFsRUM7CiNlbmRpZgoKI2lmZGVmIFVTRVNfUE9TSVRJT05fVE9fRVlFX0VDCiAgICBtYXRlcmlhbElucHV0LnBvc2l0aW9uVG9FeWVFQyA9IC1leWVDb29yZGluYXRlLnh5ejsKI2VuZGlmCgojaWZkZWYgVVNFU19UQU5HRU5UX1RPX0VZRQogICAgbWF0ZXJpYWxJbnB1dC50YW5nZW50VG9FeWVNYXRyaXggPSBjem1fZWFzdE5vcnRoVXBUb0V5ZUNvb3JkaW5hdGVzKHdvcmxkQ29vcmRpbmF0ZSwgbm9ybWFsRUMpOwojZW5kaWYKCiNpZmRlZiBVU0VTX1NUCiAgICAvLyBSZW1hcCB0ZXh0dXJlIGNvb3JkaW5hdGVzIGZyb20gY29tcHV0ZWQgKGFwcHJveGltYXRlbHkgYWxpZ25lZCB3aXRoIGNhcnRvZ3JhcGhpYyBzcGFjZSkgdG8gdGhlIGRlc2lyZWQKICAgIC8vIHRleHR1cmUgY29vcmRpbmF0ZSBzeXN0ZW0sIHdoaWNoIHR5cGljYWxseSBmb3JtcyBhIHRpZ2h0IG9yaWVudGVkIGJvdW5kaW5nIGJveCBhcm91bmQgdGhlIGdlb21ldHJ5LgogICAgLy8gU2hhZGVyIGlzIHByb3ZpZGVkIGEgc2V0IG9mIHJlZmVyZW5jZSBwb2ludHMgZm9yIHJlbWFwcGluZy4KICAgIG1hdGVyaWFsSW5wdXQuc3QueCA9IGN6bV9saW5lRGlzdGFuY2Uodl91dk1pbkFuZFNwaGVyaWNhbExvbmdpdHVkZVJvdGF0aW9uLnh5LCB2X3VNYXhBbmRJbnZlcnNlRGlzdGFuY2UueHksIHV2KSAqIHZfdU1heEFuZEludmVyc2VEaXN0YW5jZS56OwogICAgbWF0ZXJpYWxJbnB1dC5zdC55ID0gY3ptX2xpbmVEaXN0YW5jZSh2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb24ueHksIHZfdk1heEFuZEludmVyc2VEaXN0YW5jZS54eSwgdXYpICogdl92TWF4QW5kSW52ZXJzZURpc3RhbmNlLno7CiNlbmRpZgoKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiNpZmRlZiBGTEFUCiAgICBvdXRfRnJhZ0NvbG9yID0gdmVjNChtYXRlcmlhbC5kaWZmdXNlICsgbWF0ZXJpYWwuZW1pc3Npb24sIG1hdGVyaWFsLmFscGhhKTsKI2Vsc2UgLy8gRkxBVAogICAgb3V0X0ZyYWdDb2xvciA9IGN6bV9waG9uZyhub3JtYWxpemUoLWV5ZUNvb3JkaW5hdGUueHl6KSwgbWF0ZXJpYWwsIGN6bV9saWdodERpcmVjdGlvbkVDKTsKI2VuZGlmIC8vIEZMQVQKCiAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4gUmVxdWlyZWQgZm9yIGNsYXNzaWZpY2F0aW9uIHByaW1pdGl2ZXMgb24gdHJhbnNsdWNlbnQgZ2xvYmUuCiAgICBvdXRfRnJhZ0NvbG9yLnJnYiAqPSBvdXRfRnJhZ0NvbG9yLmE7CgojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCiAgICBjem1fd3JpdGVEZXB0aENsYW1wKCk7CiNlbmRpZiAvLyBQSUNLCn0KYH0pO2Z1bmN0aW9uIHZyKHQsZSxpKXtwLnR5cGVPZi5ib29sKCJleHRlbnRzQ3VsbGluZyIsdCkscC50eXBlT2YuYm9vbCgicGxhbmFyRXh0ZW50cyIsZSkscC50eXBlT2Yub2JqZWN0KCJhcHBlYXJhbmNlIixpKSx0aGlzLl9wcm9qZWN0aW9uRXh0ZW50RGVmaW5lcz17ZWFzdE1vc3RZaGlnaERlZmluZToiIixlYXN0TW9zdFlsb3dEZWZpbmU6IiIsd2VzdE1vc3RZaGlnaERlZmluZToiIix3ZXN0TW9zdFlsb3dEZWZpbmU6IiJ9O2xldCBuPW5ldyBsYjtuLnJlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzPXQsbi5yZXF1aXJlc0VDPSFpLmZsYXQ7bGV0IHM9bmV3IGxiO2lmKHMucmVxdWlyZXNUZXh0dXJlQ29vcmRpbmF0ZXM9dCxpIGluc3RhbmNlb2YgRGEpbi5yZXF1aXJlc05vcm1hbEVDPSFpLmZsYXQ7ZWxzZXtsZXQgbz1gJHtpLm1hdGVyaWFsLnNoYWRlclNvdXJjZX0KJHtpLmZyYWdtZW50U2hhZGVyU291cmNlfWA7bi5ub3JtYWxFQz1vLmluZGV4T2YoIm1hdGVyaWFsSW5wdXQubm9ybWFsRUMiKSE9PS0xfHxvLmluZGV4T2YoImN6bV9nZXREZWZhdWx0TWF0ZXJpYWwiKSE9PS0xLG4ucG9zaXRpb25Ub0V5ZUVDPW8uaW5kZXhPZigibWF0ZXJpYWxJbnB1dC5wb3NpdGlvblRvRXllRUMiKSE9PS0xLG4udGFuZ2VudFRvRXllTWF0cml4PW8uaW5kZXhPZigibWF0ZXJpYWxJbnB1dC50YW5nZW50VG9FeWVNYXRyaXgiKSE9PS0xLG4uc3Q9by5pbmRleE9mKCJtYXRlcmlhbElucHV0LnN0IikhPT0tMX10aGlzLl9jb2xvclNoYWRlckRlcGVuZGVuY2llcz1uLHRoaXMuX3BpY2tTaGFkZXJEZXBlbmRlbmNpZXM9cyx0aGlzLl9hcHBlYXJhbmNlPWksdGhpcy5fZXh0ZW50c0N1bGxpbmc9dCx0aGlzLl9wbGFuYXJFeHRlbnRzPWV9ZnVuY3Rpb24gcUoodCxlLGksbixzLG8scixhKXtsZXQgaD1uLnNsaWNlKCk7aWYoYS5lYXN0TW9zdFloaWdoRGVmaW5lPT09IiIpe2xldCBBPWpKO0EubG9uZ2l0dWRlPUwuUEksQS5sYXRpdHVkZT0wLEEuaGVpZ2h0PTA7bGV0IGQ9ci5wcm9qZWN0KEEsSkopLGY9Qm4uZW5jb2RlKGQueCxISik7YS5lYXN0TW9zdFloaWdoRGVmaW5lPWBFQVNUX01PU1RfWF9ISUdIICR7Zi5oaWdoLnRvRml4ZWQoYCR7Zi5oaWdofWAubGVuZ3RoKzEpfWAsYS5lYXN0TW9zdFlsb3dEZWZpbmU9YEVBU1RfTU9TVF9YX0xPVyAke2YubG93LnRvRml4ZWQoYCR7Zi5sb3d9YC5sZW5ndGgrMSl9YDtsZXQgRT1qSjtFLmxvbmdpdHVkZT0tTC5QSSxFLmxhdGl0dWRlPTAsRS5oZWlnaHQ9MDtsZXQgXz1yLnByb2plY3QoRSxKSik7Zj1Cbi5lbmNvZGUoXy54LEhKKSxhLndlc3RNb3N0WWhpZ2hEZWZpbmU9YFdFU1RfTU9TVF9YX0hJR0ggJHtmLmhpZ2gudG9GaXhlZChgJHtmLmhpZ2h9YC5sZW5ndGgrMSl9YCxhLndlc3RNb3N0WWxvd0RlZmluZT1gV0VTVF9NT1NUX1hfTE9XICR7Zi5sb3cudG9GaXhlZChgJHtmLmxvd31gLmxlbmd0aCsxKX1gfXJldHVybiBpJiYoaC5wdXNoKGEuZWFzdE1vc3RZaGlnaERlZmluZSksaC5wdXNoKGEuZWFzdE1vc3RZbG93RGVmaW5lKSxoLnB1c2goYS53ZXN0TW9zdFloaWdoRGVmaW5lKSxoLnB1c2goYS53ZXN0TW9zdFlsb3dEZWZpbmUpKSxtKG8pJiZvIGluc3RhbmNlb2YgRGEmJmgucHVzaCgiUEVSX0lOU1RBTkNFX0NPTE9SIiksdC5yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcyYmKGgucHVzaCgiVEVYVFVSRV9DT09SRElOQVRFUyIpLGV8fGl8fGgucHVzaCgiU1BIRVJJQ0FMIiksaSYmaC5wdXNoKCJDT0xVTUJVU19WSUVXXzJEIikpLG5ldyBNaSh7ZGVmaW5lczpoLHNvdXJjZXM6W3NdfSl9ZnVuY3Rpb24gbGIoKXt0aGlzLl9yZXF1aXJlc0VDPSExLHRoaXMuX3JlcXVpcmVzV0M9ITEsdGhpcy5fcmVxdWlyZXNOb3JtYWxFQz0hMSx0aGlzLl9yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcz0hMSx0aGlzLl91c2VzTm9ybWFsRUM9ITEsdGhpcy5fdXNlc1Bvc2l0aW9uVG9FeWVFQz0hMSx0aGlzLl91c2VzVGFuZ2VudFRvRXllTWF0PSExLHRoaXMuX3VzZXNTdD0hMX1mdW5jdGlvbiB2Sih0LGUsaSl7cmV0dXJuIE1hdGguYWJzKChlLnktdC55KSppLngtKGUueC10LngpKmkueStlLngqdC55LWUueSp0LngpL250LmRpc3RhbmNlKGUsdCl9ZnVuY3Rpb24gJEoodCxlKXtsZXQgaT1GcnQsbj1udC51bnBhY2soZSwwLGlbMF0pLHM9bnQudW5wYWNrKGUsMixpWzFdKSxvPW50LnVucGFjayhlLDQsaVsyXSk7dC51TWF4Vm1heD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITEsdmFsdWU6W3MueCxzLnksby54LG8ueV19KTtsZXQgcj0xL3ZKKG4scyxvKSxhPTEvdkoobixvLHMpO3QudXZNaW5BbmRFeHRlbnRzPW5ldyBacih7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LG5vcm1hbGl6ZTohMSx2YWx1ZTpbbi54LG4ueSxyLGFdfSl9ZnVuY3Rpb24gaWoodCxlLGkpe2xldCBuPXRqO24uaGVpZ2h0PTAsbi5sb25naXR1ZGU9dC53ZXN0LG4ubGF0aXR1ZGU9dC5zb3V0aDtsZXQgcz1lLnByb2plY3Qobixlaik7bi5sYXRpdHVkZT10Lm5vcnRoO2xldCBvPWUucHJvamVjdChuLFlydCk7bi5sb25naXR1ZGU9dC5lYXN0LG4ubGF0aXR1ZGU9dC5zb3V0aDtsZXQgcj1lLnByb2plY3QobixTcnQpLGE9WzAsMCwwLDBdLGg9WzAsMCwwLDBdLEE9Qm4uZW5jb2RlKHMueCxycCk7YVswXT1BLmhpZ2gsaFswXT1BLmxvdyxBPUJuLmVuY29kZShzLnkscnApLGFbMV09QS5oaWdoLGhbMV09QS5sb3csQT1Cbi5lbmNvZGUoby55LHJwKSxhWzJdPUEuaGlnaCxoWzJdPUEubG93LEE9Qm4uZW5jb2RlKHIueCxycCksYVszXT1BLmhpZ2gsaFszXT1BLmxvdyxpLnBsYW5lczJEX0hJR0g9bmV3IFpyKHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsbm9ybWFsaXplOiExLHZhbHVlOmF9KSxpLnBsYW5lczJEX0xPVz1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITEsdmFsdWU6aH0pfWZ1bmN0aW9uIFdydCh0LGUsaSxuLHMsbyl7bGV0IHI9WHQuY2VudGVyKHQsR3J0KTtyLmhlaWdodD1pO2xldCBhPXV0LnRvQ2FydGVzaWFuKHIsZSx6SiksaD1Jbi5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShhLGUsT3J0KSxBPWF0LmludmVyc2UoaCxWcnQpLGQ9dC53ZXN0LGY9dC5lYXN0LEU9dC5ub3J0aCxfPXQuc291dGgsUj1CcnQ7UlswXS5sYXRpdHVkZT1fLFJbMF0ubG9uZ2l0dWRlPWQsUlsxXS5sYXRpdHVkZT1FLFJbMV0ubG9uZ2l0dWRlPWQsUlsyXS5sYXRpdHVkZT1FLFJbMl0ubG9uZ2l0dWRlPWYsUlszXS5sYXRpdHVkZT1fLFJbM10ubG9uZ2l0dWRlPWY7bGV0IEk9KGQrZikqLjUsQz0oRStfKSouNTtSWzRdLmxhdGl0dWRlPV8sUls0XS5sb25naXR1ZGU9SSxSWzVdLmxhdGl0dWRlPUUsUls1XS5sb25naXR1ZGU9SSxSWzZdLmxhdGl0dWRlPUMsUls2XS5sb25naXR1ZGU9ZCxSWzddLmxhdGl0dWRlPUMsUls3XS5sb25naXR1ZGU9ZjtsZXQgTj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksVD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksRj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKGxldCBVPTA7VTw4O1UrKyl7UltVXS5oZWlnaHQ9aTtsZXQgaz11dC50b0NhcnRlc2lhbihSW1VdLGUsekopO2F0Lm11bHRpcGx5QnlQb2ludChBLGssayksay56PTAsTj1NYXRoLm1pbihOLGsueCksVD1NYXRoLm1heChULGsueCksRj1NYXRoLm1pbihGLGsueSksYj1NYXRoLm1heChiLGsueSl9bGV0IEc9bjtHLng9TixHLnk9RixHLno9MCxhdC5tdWx0aXBseUJ5UG9pbnQoaCxHLEcpO2xldCBNPXM7TS54PVQsTS55PUYsTS56PTAsYXQubXVsdGlwbHlCeVBvaW50KGgsTSxNKSxsLnN1YnRyYWN0KE0sRyxzKTtsZXQgUT1vO1EueD1OLFEueT1iLFEuej0wLGF0Lm11bHRpcGx5QnlQb2ludChoLFEsUSksbC5zdWJ0cmFjdChRLEcsbyl9ZnVuY3Rpb24gS0oodCxlLGksbil7bGV0IHM9dGo7cy5sYXRpdHVkZT10LHMubG9uZ2l0dWRlPWUscy5oZWlnaHQ9MDtsZXQgbz11dC50b0NhcnRlc2lhbihzLGksUXJ0KSxyPU1hdGguc3FydChvLngqby54K28ueSpvLnkpLGE9TC5mYXN0QXBwcm94aW1hdGVBdGFuMihyLG8ueiksaD1MLmZhc3RBcHByb3hpbWF0ZUF0YW4yKG8ueCxvLnkpO3JldHVybiBuLng9YSxuLnk9aCxufWZ1bmN0aW9uIGtydCh0KXtyZXR1cm4gTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCk+dnIuTUFYX1dJRFRIX0ZPUl9QTEFOQVJfRVhURU5UU312YXIgSkosakosSEosRnJ0LHRqLGVqLFlydCxTcnQscnAsT3J0LFZydCx6SixHcnQsQnJ0LERydCxNcnQsVXJ0LFFydCxYSixnYyxkYj1PKCgpPT57WGUoKTtIdCgpO3JpKCk7YWUoKTtvaSgpO2J0KCk7bXQoKTtUbCgpO21OKCk7X2UoKTtGaSgpO3BuKCk7ZnIoKTtGbCgpO29wKCk7UEooKTt2ci5wcm90b3R5cGUuY3JlYXRlRnJhZ21lbnRTaGFkZXI9ZnVuY3Rpb24odCl7cC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLHQpO2xldCBlPXRoaXMuX2FwcGVhcmFuY2UsaT10aGlzLl9jb2xvclNoYWRlckRlcGVuZGVuY2llcyxuPVtdOyF0JiYhdGhpcy5fcGxhbmFyRXh0ZW50cyYmbi5wdXNoKCJTUEhFUklDQUwiKSxpLnJlcXVpcmVzRUMmJm4ucHVzaCgiUkVRVUlSRVNfRUMiKSxpLnJlcXVpcmVzV0MmJm4ucHVzaCgiUkVRVUlSRVNfV0MiKSxpLnJlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzJiZuLnB1c2goIlRFWFRVUkVfQ09PUkRJTkFURVMiKSx0aGlzLl9leHRlbnRzQ3VsbGluZyYmbi5wdXNoKCJDVUxMX0ZSQUdNRU5UUyIpLGkucmVxdWlyZXNOb3JtYWxFQyYmbi5wdXNoKCJOT1JNQUxfRUMiKSxlIGluc3RhbmNlb2YgRGEmJm4ucHVzaCgiUEVSX0lOU1RBTkNFX0NPTE9SIiksaS5ub3JtYWxFQyYmbi5wdXNoKCJVU0VTX05PUk1BTF9FQyIpLGkucG9zaXRpb25Ub0V5ZUVDJiZuLnB1c2goIlVTRVNfUE9TSVRJT05fVE9fRVlFX0VDIiksaS50YW5nZW50VG9FeWVNYXRyaXgmJm4ucHVzaCgiVVNFU19UQU5HRU5UX1RPX0VZRSIpLGkuc3QmJm4ucHVzaCgiVVNFU19TVCIpLGUuZmxhdCYmbi5wdXNoKCJGTEFUIik7bGV0IHM9IiI7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXx8KHM9ZS5tYXRlcmlhbC5zaGFkZXJTb3VyY2UpLG5ldyBNaSh7ZGVmaW5lczpuLHNvdXJjZXM6W3MsY2JdfSl9O3ZyLnByb3RvdHlwZS5jcmVhdGVQaWNrRnJhZ21lbnRTaGFkZXI9ZnVuY3Rpb24odCl7cC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLHQpO2xldCBlPXRoaXMuX3BpY2tTaGFkZXJEZXBlbmRlbmNpZXMsaT1bIlBJQ0siXTtyZXR1cm4hdCYmIXRoaXMuX3BsYW5hckV4dGVudHMmJmkucHVzaCgiU1BIRVJJQ0FMIiksZS5yZXF1aXJlc0VDJiZpLnB1c2goIlJFUVVJUkVTX0VDIiksZS5yZXF1aXJlc1dDJiZpLnB1c2goIlJFUVVJUkVTX1dDIiksZS5yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcyYmaS5wdXNoKCJURVhUVVJFX0NPT1JESU5BVEVTIiksdGhpcy5fZXh0ZW50c0N1bGxpbmcmJmkucHVzaCgiQ1VMTF9GUkFHTUVOVFMiKSxuZXcgTWkoe2RlZmluZXM6aSxzb3VyY2VzOltjYl0scGlja0NvbG9yUXVhbGlmaWVyOiJpbiJ9KX07dnIucHJvdG90eXBlLmNyZWF0ZVZlcnRleFNoYWRlcj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC5kZWZpbmVkKCJkZWZpbmVzIix0KSxwLnR5cGVPZi5zdHJpbmcoInZlcnRleFNoYWRlclNvdXJjZSIsZSkscC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLGkpLHAuZGVmaW5lZCgibWFwUHJvamVjdGlvbiIsbikscUoodGhpcy5fY29sb3JTaGFkZXJEZXBlbmRlbmNpZXMsdGhpcy5fcGxhbmFyRXh0ZW50cyxpLHQsZSx0aGlzLl9hcHBlYXJhbmNlLG4sdGhpcy5fcHJvamVjdGlvbkV4dGVudERlZmluZXMpfTt2ci5wcm90b3R5cGUuY3JlYXRlUGlja1ZlcnRleFNoYWRlcj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC5kZWZpbmVkKCJkZWZpbmVzIix0KSxwLnR5cGVPZi5zdHJpbmcoInZlcnRleFNoYWRlclNvdXJjZSIsZSkscC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLGkpLHAuZGVmaW5lZCgibWFwUHJvamVjdGlvbiIsbikscUoodGhpcy5fcGlja1NoYWRlckRlcGVuZGVuY2llcyx0aGlzLl9wbGFuYXJFeHRlbnRzLGksdCxlLHZvaWQgMCxuLHRoaXMuX3Byb2plY3Rpb25FeHRlbnREZWZpbmVzKX07Sko9bmV3IGwsako9bmV3IHV0LEhKPXtoaWdoOjAsbG93OjB9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxiLnByb3RvdHlwZSx7cmVxdWlyZXNFQzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVzRUN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZXF1aXJlc0VDPXR8fHRoaXMuX3JlcXVpcmVzRUN9fSxyZXF1aXJlc1dDOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVxdWlyZXNXQ30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlcXVpcmVzV0M9dHx8dGhpcy5fcmVxdWlyZXNXQyx0aGlzLnJlcXVpcmVzRUM9dGhpcy5fcmVxdWlyZXNXQ319LHJlcXVpcmVzTm9ybWFsRUM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlc05vcm1hbEVDfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVxdWlyZXNOb3JtYWxFQz10fHx0aGlzLl9yZXF1aXJlc05vcm1hbEVDLHRoaXMucmVxdWlyZXNFQz10aGlzLl9yZXF1aXJlc05vcm1hbEVDfX0scmVxdWlyZXNUZXh0dXJlQ29vcmRpbmF0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzPXR8fHRoaXMuX3JlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzLHRoaXMucmVxdWlyZXNXQz10aGlzLl9yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlc319LG5vcm1hbEVDOntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXF1aXJlc05vcm1hbEVDPXQsdGhpcy5fdXNlc05vcm1hbEVDPXR9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91c2VzTm9ybWFsRUN9fSx0YW5nZW50VG9FeWVNYXRyaXg6e3NldDpmdW5jdGlvbih0KXt0aGlzLnJlcXVpcmVzV0M9dCx0aGlzLnJlcXVpcmVzTm9ybWFsRUM9dCx0aGlzLl91c2VzVGFuZ2VudFRvRXllTWF0PXR9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91c2VzVGFuZ2VudFRvRXllTWF0fX0scG9zaXRpb25Ub0V5ZUVDOntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXF1aXJlc0VDPXQsdGhpcy5fdXNlc1Bvc2l0aW9uVG9FeWVFQz10fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXNlc1Bvc2l0aW9uVG9FeWVFQ319LHN0OntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcz10LHRoaXMuX3VzZXNTdD10fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXNlc1N0fX19KTtGcnQ9W25ldyBudCxuZXcgbnQsbmV3IG50LG5ldyBudF07dGo9bmV3IHV0LGVqPW5ldyBsLFlydD1uZXcgbCxTcnQ9bmV3IGwscnA9e2hpZ2g6MCxsb3c6MH07T3J0PW5ldyBhdCxWcnQ9bmV3IGF0LHpKPW5ldyBsLEdydD1uZXcgdXQsQnJ0PVtuZXcgdXQsbmV3IHV0LG5ldyB1dCxuZXcgdXQsbmV3IHV0LG5ldyB1dCxuZXcgdXQsbmV3IHV0XTtEcnQ9bmV3IGwsTXJ0PW5ldyBsLFVydD1uZXcgQm47dnIuZ2V0UGxhbmFyVGV4dHVyZUNvb3JkaW5hdGVBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2Yub2JqZWN0KCJib3VuZGluZ1JlY3RhbmdsZSIsdCkscC5kZWZpbmVkKCJ0ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzIixlKSxwLnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsaSkscC50eXBlT2Yub2JqZWN0KCJwcm9qZWN0aW9uIixuKTtsZXQgbz1laixyPURydCxhPU1ydDtXcnQodCxpLFoocywwKSxvLHIsYSk7bGV0IGg9e307JEooaCxlKTtsZXQgQT1Cbi5mcm9tQ2FydGVzaWFuKG8sVXJ0KTtyZXR1cm4gaC5zb3V0aFdlc3RfSElHSD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKEEuaGlnaCxbMCwwLDBdKX0pLGguc291dGhXZXN0X0xPVz1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKEEubG93LFswLDAsMF0pfSksaC5lYXN0d2FyZD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKHIsWzAsMCwwXSl9KSxoLm5vcnRod2FyZD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKGEsWzAsMCwwXSl9KSxpaih0LG4saCksaH07UXJ0PW5ldyBsO1hKPW5ldyBudDt2ci5nZXRTcGhlcmljYWxFeHRlbnRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcz1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoImJvdW5kaW5nUmVjdGFuZ2xlIix0KSxwLmRlZmluZWQoInRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMiLGUpLHAudHlwZU9mLm9iamVjdCgiZWxsaXBzb2lkIixpKSxwLnR5cGVPZi5vYmplY3QoInByb2plY3Rpb24iLG4pO2xldCBzPUtKKHQuc291dGgsdC53ZXN0LGksWEopLG89cy54LHI9cy55LGE9S0oodC5ub3J0aCx0LmVhc3QsaSxYSiksaD1hLngsQT1hLnksZD0wO3I+QSYmKGQ9TC5QSS1yLHI9LUwuUEksQSs9ZCksby09TC5FUFNJTE9ONSxyLT1MLkVQU0lMT041LGgrPUwuRVBTSUxPTjUsQSs9TC5FUFNJTE9ONTtsZXQgZj0xLyhBLXIpLEU9MS8oaC1vKSxfPXtzcGhlcmljYWxFeHRlbnRzOm5ldyBacih7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LG5vcm1hbGl6ZTohMSx2YWx1ZTpbbyxyLEUsZl19KSxsb25naXR1ZGVSb3RhdGlvbjpuZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSxub3JtYWxpemU6ITEsdmFsdWU6W2RdfSl9O3JldHVybiAkSihfLGUpLGlqKHQsbixfKSxffTt2ci5oYXNBdHRyaWJ1dGVzRm9yVGV4dHVyZUNvb3JkaW5hdGVQbGFuZXM9ZnVuY3Rpb24odCl7cmV0dXJuIG0odC5zb3V0aFdlc3RfSElHSCkmJm0odC5zb3V0aFdlc3RfTE9XKSYmbSh0Lm5vcnRod2FyZCkmJm0odC5lYXN0d2FyZCkmJm0odC5wbGFuZXMyRF9ISUdIKSYmbSh0LnBsYW5lczJEX0xPVykmJm0odC51TWF4Vm1heCkmJm0odC51dk1pbkFuZEV4dGVudHMpfTt2ci5oYXNBdHRyaWJ1dGVzRm9yU3BoZXJpY2FsRXh0ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0LnNwaGVyaWNhbEV4dGVudHMpJiZtKHQubG9uZ2l0dWRlUm90YXRpb24pJiZtKHQucGxhbmVzMkRfSElHSCkmJm0odC5wbGFuZXMyRF9MT1cpJiZtKHQudU1heFZtYXgpJiZtKHQudXZNaW5BbmRFeHRlbnRzKX07dnIuc2hvdWxkVXNlU3BoZXJpY2FsQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSxrcnQodCl9O3ZyLk1BWF9XSURUSF9GT1JfUExBTkFSX0VYVEVOVFM9TC50b1JhZGlhbnMoMSk7Z2M9dnJ9KTtmdW5jdGlvbiBqbCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5nZW9tZXRyeUluc3RhbmNlczt0aGlzLmdlb21ldHJ5SW5zdGFuY2VzPWUsdGhpcy5zaG93PVoodC5zaG93LCEwKSx0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZT1aKHQuY2xhc3NpZmljYXRpb25UeXBlLEpyLkJPVEgpLHRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9Wih0LmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLCExKSx0aGlzLmRlYnVnU2hvd1NoYWRvd1ZvbHVtZT1aKHQuZGVidWdTaG93U2hhZG93Vm9sdW1lLCExKSx0aGlzLl9kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9ITEsdGhpcy5fZXh0cnVkZWQ9Wih0Ll9leHRydWRlZCwhMSksdGhpcy5fdW5pZm9ybU1hcD10Ll91bmlmb3JtTWFwLHRoaXMuX3NwPXZvaWQgMCx0aGlzLl9zcFN0ZW5jaWw9dm9pZCAwLHRoaXMuX3NwUGljaz12b2lkIDAsdGhpcy5fc3BDb2xvcj12b2lkIDAsdGhpcy5fc3BQaWNrMkQ9dm9pZCAwLHRoaXMuX3NwQ29sb3IyRD12b2lkIDAsdGhpcy5fcnNTdGVuY2lsRGVwdGhQYXNzPXZvaWQgMCx0aGlzLl9yc1N0ZW5jaWxEZXB0aFBhc3MzRFRpbGVzPXZvaWQgMCx0aGlzLl9yc0NvbG9yUGFzcz12b2lkIDAsdGhpcy5fcnNQaWNrUGFzcz12b2lkIDAsdGhpcy5fY29tbWFuZHNJZ25vcmVTaG93PVtdLHRoaXMuX3JlYWR5PSExLHRoaXMuX3ByaW1pdGl2ZT12b2lkIDAsdGhpcy5fcGlja1ByaW1pdGl2ZT10Ll9waWNrUHJpbWl0aXZlLHRoaXMuX2hhc1NwaGVyaWNhbEV4dGVudHNBdHRyaWJ1dGU9ITEsdGhpcy5faGFzUGxhbmFyRXh0ZW50c0F0dHJpYnV0ZXM9ITEsdGhpcy5faGFzUGVyQ29sb3JBdHRyaWJ1dGU9ITEsdGhpcy5hcHBlYXJhbmNlPXQuYXBwZWFyYW5jZSx0aGlzLl9jcmVhdGVCb3VuZGluZ1ZvbHVtZUZ1bmN0aW9uPXQuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb24sdGhpcy5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uPXQuX3VwZGF0ZUFuZFF1ZXVlQ29tbWFuZHNGdW5jdGlvbix0aGlzLl91c2VQaWNrT2Zmc2V0cz0hMSx0aGlzLl9wcmltaXRpdmVPcHRpb25zPXtnZW9tZXRyeUluc3RhbmNlczp2b2lkIDAsYXBwZWFyYW5jZTp2b2lkIDAsdmVydGV4Q2FjaGVPcHRpbWl6ZTpaKHQudmVydGV4Q2FjaGVPcHRpbWl6ZSwhMSksaW50ZXJsZWF2ZTpaKHQuaW50ZXJsZWF2ZSwhMSkscmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOloodC5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMsITApLGFsbG93UGlja2luZzpaKHQuYWxsb3dQaWNraW5nLCEwKSxhc3luY2hyb25vdXM6Wih0LmFzeW5jaHJvbm91cywhMCksY29tcHJlc3NWZXJ0aWNlczpaKHQuY29tcHJlc3NWZXJ0aWNlcywhMCksX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb246dm9pZCAwLF9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbjp2b2lkIDAsX2NyZWF0ZVNoYWRlclByb2dyYW1GdW5jdGlvbjp2b2lkIDAsX2NyZWF0ZUNvbW1hbmRzRnVuY3Rpb246dm9pZCAwLF91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb246dm9pZCAwLF9jcmVhdGVQaWNrT2Zmc2V0czohMH19ZnVuY3Rpb24gJG0odCxlKXtsZXQgaT1lP3ByLkVRVUFMOnByLkFMV0FZUztyZXR1cm57Y29sb3JNYXNrOntyZWQ6ITEsZ3JlZW46ITEsYmx1ZTohMSxhbHBoYTohMX0sc3RlbmNpbFRlc3Q6e2VuYWJsZWQ6dCxmcm9udEZ1bmN0aW9uOmksZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuS0VFUCx6RmFpbDpIaS5ERUNSRU1FTlRfV1JBUCx6UGFzczpIaS5LRUVQfSxiYWNrRnVuY3Rpb246aSxiYWNrT3BlcmF0aW9uOntmYWlsOkhpLktFRVAsekZhaWw6SGkuSU5DUkVNRU5UX1dSQVAselBhc3M6SGkuS0VFUH0scmVmZXJlbmNlOldhLkNFU0lVTV8zRF9USUxFX01BU0ssbWFzazpXYS5DRVNJVU1fM0RfVElMRV9NQVNLfSxzdGVuY2lsTWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLLGRlcHRoVGVzdDp7ZW5hYmxlZDohMCxmdW5jOndJLkxFU1NfT1JfRVFVQUx9LGRlcHRoTWFzazohMX19ZnVuY3Rpb24gZmIodCl7cmV0dXJue3N0ZW5jaWxUZXN0OntlbmFibGVkOnQsZnJvbnRGdW5jdGlvbjpwci5OT1RfRVFVQUwsZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuWkVSTyx6RmFpbDpIaS5aRVJPLHpQYXNzOkhpLlpFUk99LGJhY2tGdW5jdGlvbjpwci5OT1RfRVFVQUwsYmFja09wZXJhdGlvbjp7ZmFpbDpIaS5aRVJPLHpGYWlsOkhpLlpFUk8selBhc3M6SGkuWkVST30scmVmZXJlbmNlOjAsbWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLfSxzdGVuY2lsTWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLLGRlcHRoVGVzdDp7ZW5hYmxlZDohMX0sZGVwdGhNYXNrOiExLGJsZW5kaW5nOlVyLlBSRV9NVUxUSVBMSUVEX0FMUEhBX0JMRU5EfX1mdW5jdGlvbiB5cnQodCxlLGksbil7aWYobSh0Ll9yc1N0ZW5jaWxEZXB0aFBhc3MpKXJldHVybjtsZXQgcz0hdC5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU7dC5fcnNTdGVuY2lsRGVwdGhQYXNzPVluLmZyb21DYWNoZSgkbShzLCExKSksdC5fcnNTdGVuY2lsRGVwdGhQYXNzM0RUaWxlcz1Zbi5mcm9tQ2FjaGUoJG0ocywhMCkpLHQuX3JzQ29sb3JQYXNzPVluLmZyb21DYWNoZShmYihzLCExKSksdC5fcnNQaWNrUGFzcz1Zbi5mcm9tQ2FjaGUoTHJ0KX1mdW5jdGlvbiB3cnQodCxlKXtpZighdC5jb21wcmVzc1ZlcnRpY2VzKXJldHVybiBlO2lmKGUuc2VhcmNoKC9pblxzK3ZlYzNccytleHRydWRlRGlyZWN0aW9uOy9nKSE9PS0xKXtsZXQgaT0iY29tcHJlc3NlZEF0dHJpYnV0ZXMiLG49YGluIHZlYzIgJHtpfTtgLHM9YHZlYzMgZXh0cnVkZURpcmVjdGlvbjsKYCxvPWAgICAgZXh0cnVkZURpcmVjdGlvbiA9IGN6bV9vY3REZWNvZGUoJHtpfSwgNjU1MzUuMCk7CmAscj1lO3I9ci5yZXBsYWNlKC9pblxzK3ZlYzNccytleHRydWRlRGlyZWN0aW9uOy9nLCIiKSxyPU1pLnJlcGxhY2VNYWluKHIsImN6bV9ub25fY29tcHJlc3NlZF9tYWluIik7bGV0IGE9YHZvaWQgbWFpbigpIAp7IAoke299ICAgIGN6bV9ub25fY29tcHJlc3NlZF9tYWluKCk7IAp9YDtyZXR1cm5bbixzLHIsYV0uam9pbihgCmApfX1mdW5jdGlvbiB4cnQodCxlKXtsZXQgaT1lLmNvbnRleHQsbj10Ll9wcmltaXRpdmUscz1XSjtzPXQuX3ByaW1pdGl2ZS5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKHMpLHM9dnMuX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKG4scykscz12cy5fbW9kaWZ5U2hhZGVyUG9zaXRpb24odCxzLGUuc2NlbmUzRE9ubHkpLHM9dnMuX3VwZGF0ZUNvbG9yQXR0cmlidXRlKG4scyk7bGV0IG89dC5faGFzUGxhbmFyRXh0ZW50c0F0dHJpYnV0ZXMscj1vfHx0Ll9oYXNTcGhlcmljYWxFeHRlbnRzQXR0cmlidXRlO3QuX2V4dHJ1ZGVkJiYocz13cnQobixzKSk7bGV0IGE9dC5fZXh0cnVkZWQ/IkVYVFJVREVEX0dFT01FVFJZIjoiIixoPW5ldyBNaSh7ZGVmaW5lczpbYV0sc291cmNlczpbc119KSxBPW5ldyBNaSh7c291cmNlczpbTUpdfSksZD10Ll9wcmltaXRpdmUuX2F0dHJpYnV0ZUxvY2F0aW9ucyxmPW5ldyBnYyhyLG8sdC5hcHBlYXJhbmNlKTtpZih0Ll9zcFN0ZW5jaWw9RXMucmVwbGFjZUNhY2hlKHtjb250ZXh0Omksc2hhZGVyUHJvZ3JhbTp0Ll9zcFN0ZW5jaWwsdmVydGV4U2hhZGVyU291cmNlOmgsZnJhZ21lbnRTaGFkZXJTb3VyY2U6QSxhdHRyaWJ1dGVMb2NhdGlvbnM6ZH0pLHQuX3ByaW1pdGl2ZS5hbGxvd1BpY2tpbmcpe2xldCBSPU1pLmNyZWF0ZVBpY2tWZXJ0ZXhTaGFkZXJTb3VyY2Uocyk7Uj12cy5fYXBwZW5kU2hvd1RvU2hhZGVyKG4sUiksUj12cy5fdXBkYXRlUGlja0NvbG9yQXR0cmlidXRlKFIpO2xldCBJPWYuY3JlYXRlUGlja0ZyYWdtZW50U2hhZGVyKCExKSxDPWYuY3JlYXRlUGlja1ZlcnRleFNoYWRlcihbYV0sUiwhMSxlLm1hcFByb2plY3Rpb24pO2lmKHQuX3NwUGljaz1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6aSxzaGFkZXJQcm9ncmFtOnQuX3NwUGljayx2ZXJ0ZXhTaGFkZXJTb3VyY2U6QyxmcmFnbWVudFNoYWRlclNvdXJjZTpJLGF0dHJpYnV0ZUxvY2F0aW9uczpkfSkscil7bGV0IE49aS5zaGFkZXJDYWNoZS5nZXREZXJpdmVkU2hhZGVyUHJvZ3JhbSh0Ll9zcFBpY2ssIjJkUGljayIpO2lmKCFtKE4pKXtsZXQgVD1mLmNyZWF0ZVBpY2tGcmFnbWVudFNoYWRlcighMCksRj1mLmNyZWF0ZVBpY2tWZXJ0ZXhTaGFkZXIoW2FdLFIsITAsZS5tYXBQcm9qZWN0aW9uKTtOPWkuc2hhZGVyQ2FjaGUuY3JlYXRlRGVyaXZlZFNoYWRlclByb2dyYW0odC5fc3BQaWNrLCIyZFBpY2siLHt2ZXJ0ZXhTaGFkZXJTb3VyY2U6RixmcmFnbWVudFNoYWRlclNvdXJjZTpULGF0dHJpYnV0ZUxvY2F0aW9uczpkfSl9dC5fc3BQaWNrMkQ9Tn19ZWxzZSB0Ll9zcFBpY2s9RXMuZnJvbUNhY2hlKHtjb250ZXh0OmksdmVydGV4U2hhZGVyU291cmNlOmgsZnJhZ21lbnRTaGFkZXJTb3VyY2U6QSxhdHRyaWJ1dGVMb2NhdGlvbnM6ZH0pO3M9dnMuX2FwcGVuZFNob3dUb1NoYWRlcihuLHMpLGg9bmV3IE1pKHtkZWZpbmVzOlthXSxzb3VyY2VzOltzXX0pLHQuX3NwPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDppLHNoYWRlclByb2dyYW06dC5fc3AsdmVydGV4U2hhZGVyU291cmNlOmgsZnJhZ21lbnRTaGFkZXJTb3VyY2U6QSxhdHRyaWJ1dGVMb2NhdGlvbnM6ZH0pO2xldCBFPWYuY3JlYXRlRnJhZ21lbnRTaGFkZXIoITEpLF89Zi5jcmVhdGVWZXJ0ZXhTaGFkZXIoW2FdLHMsITEsZS5tYXBQcm9qZWN0aW9uKTtpZih0Ll9zcENvbG9yPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDppLHNoYWRlclByb2dyYW06dC5fc3BDb2xvcix2ZXJ0ZXhTaGFkZXJTb3VyY2U6XyxmcmFnbWVudFNoYWRlclNvdXJjZTpFLGF0dHJpYnV0ZUxvY2F0aW9uczpkfSkscil7bGV0IFI9aS5zaGFkZXJDYWNoZS5nZXREZXJpdmVkU2hhZGVyUHJvZ3JhbSh0Ll9zcENvbG9yLCIyZENvbG9yIik7aWYoIW0oUikpe2xldCBJPWYuY3JlYXRlRnJhZ21lbnRTaGFkZXIoITApLEM9Zi5jcmVhdGVWZXJ0ZXhTaGFkZXIoW2FdLHMsITAsZS5tYXBQcm9qZWN0aW9uKTtSPWkuc2hhZGVyQ2FjaGUuY3JlYXRlRGVyaXZlZFNoYWRlclByb2dyYW0odC5fc3BDb2xvciwiMmRDb2xvciIse3ZlcnRleFNoYWRlclNvdXJjZTpDLGZyYWdtZW50U2hhZGVyU291cmNlOkksYXR0cmlidXRlTG9jYXRpb25zOmR9KX10Ll9zcENvbG9yMkQ9Un19ZnVuY3Rpb24gUHJ0KHQsZSl7bGV0IGk9dC5fcHJpbWl0aXZlLG49aS5fdmEubGVuZ3RoKjI7ZS5sZW5ndGg9bjtsZXQgcyxvLHIsYT0wLGg9aS5fYmF0Y2hUYWJsZS5nZXRVbmlmb3JtTWFwQ2FsbGJhY2soKSh0Ll91bmlmb3JtTWFwKSxBPXQuX25lZWRzMkRTaGFkZXI7Zm9yKHM9MDtzPG47cys9Mil7bGV0IF89aS5fdmFbYSsrXTtvPWVbc10sbShvKXx8KG89ZVtzXT1uZXcgZm4oe293bmVyOnQscHJpbWl0aXZlVHlwZTppLl9wcmltaXRpdmVUeXBlfSkpLG8udmVydGV4QXJyYXk9XyxvLnJlbmRlclN0YXRlPXQuX3JzU3RlbmNpbERlcHRoUGFzcyxvLnNoYWRlclByb2dyYW09dC5fc3Asby51bmlmb3JtTWFwPWgsby5wYXNzPW9zLlRFUlJBSU5fQ0xBU1NJRklDQVRJT04scj1mbi5zaGFsbG93Q2xvbmUobyxvLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0KSxyLnJlbmRlclN0YXRlPXQuX3JzU3RlbmNpbERlcHRoUGFzczNEVGlsZXMsci5wYXNzPW9zLkNFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OLG8uZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQ9cixvPWVbcysxXSxtKG8pfHwobz1lW3MrMV09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6aS5fcHJpbWl0aXZlVHlwZX0pKSxvLnZlcnRleEFycmF5PV8sby5yZW5kZXJTdGF0ZT10Ll9yc0NvbG9yUGFzcyxvLnNoYWRlclByb2dyYW09dC5fc3BDb2xvcixvLnBhc3M9b3MuVEVSUkFJTl9DTEFTU0lGSUNBVElPTjtsZXQgST10LmFwcGVhcmFuY2UubWF0ZXJpYWw7aWYobShJKSYmKGg9ZXMoaCxJLl91bmlmb3JtcykpLG8udW5pZm9ybU1hcD1oLHI9Zm4uc2hhbGxvd0Nsb25lKG8sby5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCksci5wYXNzPW9zLkNFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OLG8uZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQ9cixBKXtsZXQgQz1mbi5zaGFsbG93Q2xvbmUobyxvLmRlcml2ZWRDb21tYW5kcy5hcHBlYXJhbmNlMkQpO0Muc2hhZGVyUHJvZ3JhbT10Ll9zcENvbG9yMkQsby5kZXJpdmVkQ29tbWFuZHMuYXBwZWFyYW5jZTJEPUMsQz1mbi5zaGFsbG93Q2xvbmUocixyLmRlcml2ZWRDb21tYW5kcy5hcHBlYXJhbmNlMkQpLEMuc2hhZGVyUHJvZ3JhbT10Ll9zcENvbG9yMkQsci5kZXJpdmVkQ29tbWFuZHMuYXBwZWFyYW5jZTJEPUN9fWxldCBkPXQuX2NvbW1hbmRzSWdub3JlU2hvdyxmPXQuX3NwU3RlbmNpbCxFPTA7bj1kLmxlbmd0aD1uLzI7Zm9yKGxldCBfPTA7XzxuOysrXyl7bGV0IFI9ZFtfXT1mbi5zaGFsbG93Q2xvbmUoZVtFXSxkW19dKTtSLnNoYWRlclByb2dyYW09ZixSLnBhc3M9b3MuQ0VTSVVNXzNEX1RJTEVfQ0xBU1NJRklDQVRJT05fSUdOT1JFX1NIT1csRSs9Mn19ZnVuY3Rpb24gSnJ0KHQsZSl7bGV0IGk9dC5fdXNlUGlja09mZnNldHMsbj10Ll9wcmltaXRpdmUscz1uLl92YS5sZW5ndGgqMixvLHI9MCxhO2kmJihvPW4uX3BpY2tPZmZzZXRzLHM9by5sZW5ndGgqMiksZS5sZW5ndGg9cztsZXQgaCxBLGQsZj0wLEU9bi5fYmF0Y2hUYWJsZS5nZXRVbmlmb3JtTWFwQ2FsbGJhY2soKSh0Ll91bmlmb3JtTWFwKSxfPXQuX25lZWRzMkRTaGFkZXI7Zm9yKGg9MDtoPHM7aCs9Mil7bGV0IFI9bi5fdmFbZisrXTtpZihpJiYoYT1vW3IrK10sUj1uLl92YVthLmluZGV4XSksQT1lW2hdLG0oQSl8fChBPWVbaF09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6bi5fcHJpbWl0aXZlVHlwZSxwaWNrT25seTohMH0pKSxBLnZlcnRleEFycmF5PVIsQS5yZW5kZXJTdGF0ZT10Ll9yc1N0ZW5jaWxEZXB0aFBhc3MsQS5zaGFkZXJQcm9ncmFtPXQuX3NwLEEudW5pZm9ybU1hcD1FLEEucGFzcz1vcy5URVJSQUlOX0NMQVNTSUZJQ0FUSU9OLGkmJihBLm9mZnNldD1hLm9mZnNldCxBLmNvdW50PWEuY291bnQpLGQ9Zm4uc2hhbGxvd0Nsb25lKEEsQS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCksZC5yZW5kZXJTdGF0ZT10Ll9yc1N0ZW5jaWxEZXB0aFBhc3MzRFRpbGVzLGQucGFzcz1vcy5DRVNJVU1fM0RfVElMRV9DTEFTU0lGSUNBVElPTixBLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0PWQsQT1lW2grMV0sbShBKXx8KEE9ZVtoKzFdPW5ldyBmbih7b3duZXI6dCxwcmltaXRpdmVUeXBlOm4uX3ByaW1pdGl2ZVR5cGUscGlja09ubHk6ITB9KSksQS52ZXJ0ZXhBcnJheT1SLEEucmVuZGVyU3RhdGU9dC5fcnNQaWNrUGFzcyxBLnNoYWRlclByb2dyYW09dC5fc3BQaWNrLEEudW5pZm9ybU1hcD1FLEEucGFzcz1vcy5URVJSQUlOX0NMQVNTSUZJQ0FUSU9OLGkmJihBLm9mZnNldD1hLm9mZnNldCxBLmNvdW50PWEuY291bnQpLGQ9Zm4uc2hhbGxvd0Nsb25lKEEsQS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCksZC5wYXNzPW9zLkNFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OLEEuZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQ9ZCxfKXtsZXQgST1mbi5zaGFsbG93Q2xvbmUoQSxBLmRlcml2ZWRDb21tYW5kcy5waWNrMkQpO0kuc2hhZGVyUHJvZ3JhbT10Ll9zcFBpY2syRCxBLmRlcml2ZWRDb21tYW5kcy5waWNrMkQ9SSxJPWZuLnNoYWxsb3dDbG9uZShkLGQuZGVyaXZlZENvbW1hbmRzLnBpY2syRCksSS5zaGFkZXJQcm9ncmFtPXQuX3NwUGljazJELGQuZGVyaXZlZENvbW1hbmRzLnBpY2syRD1JfX19ZnVuY3Rpb24ganJ0KHQsZSxpLG4scyxvLHIpe1BydCh0LG8pLEpydCh0LHIpfWZ1bmN0aW9uIG5qKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodCVlLzIpfWZ1bmN0aW9uIG1iKHQsZSxpLG4scyxvKXt0Lm1vZGVsTWF0cml4PWksdC5ib3VuZGluZ1ZvbHVtZT1zLHQuY3VsbD1uLHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9byxlLmNvbW1hbmRMaXN0LnB1c2godCl9ZnVuY3Rpb24gc2oodCxlLGksbixzKXt0Lm1vZGVsTWF0cml4PWksdC5ib3VuZGluZ1ZvbHVtZT1zLHQuY3VsbD1uLGUuY29tbWFuZExpc3QucHVzaCh0KX1mdW5jdGlvbiBIcnQodCxlLGksbixzLG8scixhKXtsZXQgaD10Ll9wcmltaXRpdmU7dnMuX3VwZGF0ZUJvdW5kaW5nVm9sdW1lcyhoLGUscyk7bGV0IEE7ZS5tb2RlPT09eWUuU0NFTkUzRD9BPWguX2JvdW5kaW5nU3BoZXJlV0M6ZS5tb2RlPT09eWUuQ09MVU1CVVNfVklFVz9BPWguX2JvdW5kaW5nU3BoZXJlQ1Y6ZS5tb2RlPT09eWUuU0NFTkUyRCYmbShoLl9ib3VuZGluZ1NwaGVyZTJEKT9BPWguX2JvdW5kaW5nU3BoZXJlMkQ6bShoLl9ib3VuZGluZ1NwaGVyZU1vcnBoKSYmKEE9aC5fYm91bmRpbmdTcGhlcmVNb3JwaCk7bGV0IGQ9dC5jbGFzc2lmaWNhdGlvblR5cGUsZj1kIT09SnIuQ0VTSVVNXzNEX1RJTEUsRT1kIT09SnIuVEVSUkFJTixfPWUucGFzc2VzLFIsSSxDO2lmKF8ucmVuZGVyKXtsZXQgTj1pLmxlbmd0aDtmb3IoUj0wO1I8TjsrK1IpST1BW25qKFIsTildLGYmJihDPWlbUl0sbWIoQyxlLHMsbyxJLHIpKSxFJiYoQz1pW1JdLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0LG1iKEMsZSxzLG8sSSxyKSk7aWYoZS5pbnZlcnRDbGFzc2lmaWNhdGlvbil7bGV0IFQ9dC5fY29tbWFuZHNJZ25vcmVTaG93LEY9VC5sZW5ndGg7Zm9yKFI9MDtSPEY7KytSKUk9QVtSXSxDPVRbUl0sbWIoQyxlLHMsbyxJLHIpfX1pZihfLnBpY2spe2xldCBOPW4ubGVuZ3RoLFQ9aC5fcGlja09mZnNldHM7Zm9yKFI9MDtSPE47KytSKXtsZXQgRj1UW25qKFIsTildO0k9QVtGLmluZGV4XSxmJiYoQz1uW1JdLHNqKEMsZSxzLG8sSSkpLEUmJihDPW5bUl0uZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQsc2ooQyxlLHMsbyxJKSl9fX12YXIgTHJ0LEViLG9qPU8oKCk9PntCSigpO0tBKCk7YnQoKTttdCgpO1dzKCk7VnQoKTt1QSgpO0JtKCk7V20oKTtNbSgpO1FtKCk7RmwoKTtESigpO1VKKCk7a20oKTtNSSgpO1BOKCk7b3AoKTtyYigpO3VhKCk7ZGIoKTthYigpOyRJKCk7dHAoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqbC5wcm90b3R5cGUse3ZlcnRleENhY2hlT3B0aW1pemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVPcHRpb25zLnZlcnRleENhY2hlT3B0aW1pemV9fSxpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5pbnRlcmxlYXZlfX0scmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXN9fSxhbGxvd1BpY2tpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVPcHRpb25zLmFsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZU9wdGlvbnMuYXN5bmNocm9ub3VzfX0sY29tcHJlc3NWZXJ0aWNlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZU9wdGlvbnMuY29tcHJlc3NWZXJ0aWNlc319LHJlYWR5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZHl9fSxfbmVlZHMyRFNoYWRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1BsYW5hckV4dGVudHNBdHRyaWJ1dGVzfHx0aGlzLl9oYXNTcGhlcmljYWxFeHRlbnRzQXR0cmlidXRlfX19KTtqbC5pc1N1cHBvcnRlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb250ZXh0LnN0ZW5jaWxCdWZmZXJ9O0xydD17c3RlbmNpbFRlc3Q6e2VuYWJsZWQ6ITAsZnJvbnRGdW5jdGlvbjpwci5OT1RfRVFVQUwsZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuWkVSTyx6RmFpbDpIaS5aRVJPLHpQYXNzOkhpLlpFUk99LGJhY2tGdW5jdGlvbjpwci5OT1RfRVFVQUwsYmFja09wZXJhdGlvbjp7ZmFpbDpIaS5aRVJPLHpGYWlsOkhpLlpFUk8selBhc3M6SGkuWkVST30scmVmZXJlbmNlOjAsbWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLfSxzdGVuY2lsTWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLLGRlcHRoVGVzdDp7ZW5hYmxlZDohMX0sZGVwdGhNYXNrOiExfTtqbC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHRoaXMuX3ByaW1pdGl2ZSkmJiFtKHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMpKXJldHVybjtsZXQgZT10aGlzLmFwcGVhcmFuY2U7bShlKSYmbShlLm1hdGVyaWFsKSYmZS5tYXRlcmlhbC51cGRhdGUodC5jb250ZXh0KTtsZXQgaT10aGlzLG49dGhpcy5fcHJpbWl0aXZlT3B0aW9ucztpZighbSh0aGlzLl9wcmltaXRpdmUpKXtsZXQgcz1BcnJheS5pc0FycmF5KHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMpP3RoaXMuZ2VvbWV0cnlJbnN0YW5jZXM6W3RoaXMuZ2VvbWV0cnlJbnN0YW5jZXNdLG89cy5sZW5ndGgscixhLGgsQT0hMSxkPSEwLGYsRT0hMSxfPSExO2ZvcihvPjAmJihoPXNbMF0uYXR0cmlidXRlcyxFPWdjLmhhc0F0dHJpYnV0ZXNGb3JTcGhlcmljYWxFeHRlbnRzKGgpLF89Z2MuaGFzQXR0cmlidXRlc0ZvclRleHR1cmVDb29yZGluYXRlUGxhbmVzKGgpLGY9aC5jb2xvcikscj0wO3I8bztyKyspe2E9c1tyXTtsZXQgST1hLmF0dHJpYnV0ZXMuY29sb3I7aWYobShJKSlBPSEwO2Vsc2UgaWYoQSl0aHJvdyBuZXcgWSgiQWxsIEdlb21ldHJ5SW5zdGFuY2VzIG11c3QgaGF2ZSBjb2xvciBhdHRyaWJ1dGVzIHRvIHVzZSBwZXItaW5zdGFuY2UgY29sb3IuIik7ZD1kJiZtKEkpJiZHSi5lcXVhbHMoZixJKX1pZighZCYmIUUmJiFfKXRocm93IG5ldyBZKCJBbGwgR2VvbWV0cnlJbnN0YW5jZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbG9yIGF0dHJpYnV0ZSBleGNlcHQgdmlhIEdyb3VuZFByaW1pdGl2ZXMiKTtpZihBJiYhbShlKSYmKGU9bmV3IERhKHtmbGF0OiEwfSksdGhpcy5hcHBlYXJhbmNlPWUpLCFBJiZlIGluc3RhbmNlb2YgRGEpdGhyb3cgbmV3IFkoIlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlIHJlcXVpcmVzIGNvbG9yIEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzIG9uIGFsbCBHZW9tZXRyeUluc3RhbmNlcyIpO2lmKG0oZS5tYXRlcmlhbCkmJiFFJiYhXyl0aHJvdyBuZXcgWSgiTWF0ZXJpYWxzIG9uIENsYXNzaWZpY2F0aW9uUHJpbWl0aXZlcyBhcmUgbm90IHN1cHBvcnRlZCBleGNlcHQgdmlhIEdyb3VuZFByaW1pdGl2ZXMiKTt0aGlzLl91c2VQaWNrT2Zmc2V0cz0hRSYmIV8sdGhpcy5faGFzU3BoZXJpY2FsRXh0ZW50c0F0dHJpYnV0ZT1FLHRoaXMuX2hhc1BsYW5hckV4dGVudHNBdHRyaWJ1dGVzPV8sdGhpcy5faGFzUGVyQ29sb3JBdHRyaWJ1dGU9QTtsZXQgUj1uZXcgQXJyYXkobyk7Zm9yKHI9MDtyPG87KytyKWE9c1tyXSxSW3JdPW5ldyBMbih7Z2VvbWV0cnk6YS5nZW9tZXRyeSxhdHRyaWJ1dGVzOmEuYXR0cmlidXRlcyxtb2RlbE1hdHJpeDphLm1vZGVsTWF0cml4LGlkOmEuaWQscGlja1ByaW1pdGl2ZTpaKHRoaXMuX3BpY2tQcmltaXRpdmUsaSl9KTtuLmFwcGVhcmFuY2U9ZSxuLmdlb21ldHJ5SW5zdGFuY2VzPVIsbSh0aGlzLl9jcmVhdGVCb3VuZGluZ1ZvbHVtZUZ1bmN0aW9uKSYmKG4uX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb249ZnVuY3Rpb24oSSxDKXtpLl9jcmVhdGVCb3VuZGluZ1ZvbHVtZUZ1bmN0aW9uKEksQyl9KSxuLl9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbj1mdW5jdGlvbihJLEMsTixUKXt5cnQoaSxDKX0sbi5fY3JlYXRlU2hhZGVyUHJvZ3JhbUZ1bmN0aW9uPWZ1bmN0aW9uKEksQyxOKXt4cnQoaSxDKX0sbi5fY3JlYXRlQ29tbWFuZHNGdW5jdGlvbj1mdW5jdGlvbihJLEMsTixULEYsYixHKXtqcnQoaSx2b2lkIDAsdm9pZCAwLCEwLCExLGIsRyl9LG0odGhpcy5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uKT9uLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249ZnVuY3Rpb24oSSxDLE4sVCxGLGIsRyxNKXtpLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb24oSSxDLE4sVCxGLGIsRyxNKX06bi5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uPWZ1bmN0aW9uKEksQyxOLFQsRixiLEcsTSl7SHJ0KGksQyxOLFQsRixiLEcsTSl9LHRoaXMuX3ByaW1pdGl2ZT1uZXcgdnMobil9aWYodGhpcy5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWUmJiF0aGlzLl9kZWJ1Z1Nob3dTaGFkb3dWb2x1bWUmJnRoaXMuX3JlYWR5Pyh0aGlzLl9kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9ITAsdGhpcy5fcnNTdGVuY2lsRGVwdGhQYXNzPVluLmZyb21DYWNoZSgkbSghMSwhMSkpLHRoaXMuX3JzU3RlbmNpbERlcHRoUGFzczNEVGlsZXM9WW4uZnJvbUNhY2hlKCRtKCExLCEwKSksdGhpcy5fcnNDb2xvclBhc3M9WW4uZnJvbUNhY2hlKGZiKCExKSkpOiF0aGlzLmRlYnVnU2hvd1NoYWRvd1ZvbHVtZSYmdGhpcy5fZGVidWdTaG93U2hhZG93Vm9sdW1lJiYodGhpcy5fZGVidWdTaG93U2hhZG93Vm9sdW1lPSExLHRoaXMuX3JzU3RlbmNpbERlcHRoUGFzcz1Zbi5mcm9tQ2FjaGUoJG0oITAsITEpKSx0aGlzLl9yc1N0ZW5jaWxEZXB0aFBhc3MzRFRpbGVzPVluLmZyb21DYWNoZSgkbSghMCwhMCkpLHRoaXMuX3JzQ29sb3JQYXNzPVluLmZyb21DYWNoZShmYighMCkpKSx0aGlzLl9wcmltaXRpdmUuYXBwZWFyYW5jZSE9PWUpe2lmKCF0aGlzLl9oYXNTcGhlcmljYWxFeHRlbnRzQXR0cmlidXRlJiYhdGhpcy5faGFzUGxhbmFyRXh0ZW50c0F0dHJpYnV0ZXMmJm0oZS5tYXRlcmlhbCkpdGhyb3cgbmV3IFkoIk1hdGVyaWFscyBvbiBDbGFzc2lmaWNhdGlvblByaW1pdGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZXhjZXB0IHZpYSBHcm91bmRQcmltaXRpdmUiKTtpZighdGhpcy5faGFzUGVyQ29sb3JBdHRyaWJ1dGUmJmUgaW5zdGFuY2VvZiBEYSl0aHJvdyBuZXcgWSgiUGVySW5zdGFuY2VDb2xvckFwcGVhcmFuY2UgcmVxdWlyZXMgY29sb3IgR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZSIpO3RoaXMuX3ByaW1pdGl2ZS5hcHBlYXJhbmNlPWV9dGhpcy5fcHJpbWl0aXZlLnNob3c9dGhpcy5zaG93LHRoaXMuX3ByaW1pdGl2ZS5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT10aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLHRoaXMuX3ByaW1pdGl2ZS51cGRhdGUodCksdC5hZnRlclJlbmRlci5wdXNoKCgpPT57bSh0aGlzLl9wcmltaXRpdmUpJiZ0aGlzLl9wcmltaXRpdmUucmVhZHkmJih0aGlzLl9yZWFkeT0hMCx0aGlzLnJlbGVhc2VHZW9tZXRyeUluc3RhbmNlcyYmKHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXM9dm9pZCAwKSl9KX07amwucHJvdG90eXBlLmdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe2lmKCFtKHRoaXMuX3ByaW1pdGl2ZSkpdGhyb3cgbmV3IFkoIm11c3QgY2FsbCB1cGRhdGUgYmVmb3JlIGNhbGxpbmcgZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXMiKTtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlLmdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzKHQpfTtqbC5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07amwucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlPXRoaXMuX3ByaW1pdGl2ZSYmdGhpcy5fcHJpbWl0aXZlLmRlc3Ryb3koKSx0aGlzLl9zcD10aGlzLl9zcCYmdGhpcy5fc3AuZGVzdHJveSgpLHRoaXMuX3NwUGljaz10aGlzLl9zcFBpY2smJnRoaXMuX3NwUGljay5kZXN0cm95KCksdGhpcy5fc3BDb2xvcj10aGlzLl9zcENvbG9yJiZ0aGlzLl9zcENvbG9yLmRlc3Ryb3koKSx0aGlzLl9zcFBpY2syRD12b2lkIDAsdGhpcy5fc3BDb2xvcjJEPXZvaWQgMCxsaSh0aGlzKX07RWI9amx9KTtmdW5jdGlvbiBucih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5hcHBlYXJhbmNlLGk9dC5nZW9tZXRyeUluc3RhbmNlcztpZighbShlKSYmbShpKSl7bGV0IHM9QXJyYXkuaXNBcnJheShpKT9pOltpXSxvPXMubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bztyKyspe2xldCBhPXNbcl0uYXR0cmlidXRlcztpZihtKGEpJiZtKGEuY29sb3IpKXtlPW5ldyBEYSh7ZmxhdDohMH0pO2JyZWFrfX19dGhpcy5hcHBlYXJhbmNlPWUsdGhpcy5nZW9tZXRyeUluc3RhbmNlcz10Lmdlb21ldHJ5SW5zdGFuY2VzLHRoaXMuc2hvdz1aKHQuc2hvdywhMCksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0LmNsYXNzaWZpY2F0aW9uVHlwZSxKci5CT1RIKSx0aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPVoodC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSwhMSksdGhpcy5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9Wih0LmRlYnVnU2hvd1NoYWRvd1ZvbHVtZSwhMSksdGhpcy5fYm91bmRpbmdWb2x1bWVzPVtdLHRoaXMuX2JvdW5kaW5nVm9sdW1lczJEPVtdLHRoaXMuX3JlYWR5PSExLHRoaXMuX3ByaW1pdGl2ZT12b2lkIDAsdGhpcy5fbWF4SGVpZ2h0PXZvaWQgMCx0aGlzLl9taW5IZWlnaHQ9dm9pZCAwLHRoaXMuX21heFRlcnJhaW5IZWlnaHQ9RG8uX2RlZmF1bHRNYXhUZXJyYWluSGVpZ2h0LHRoaXMuX21pblRlcnJhaW5IZWlnaHQ9RG8uX2RlZmF1bHRNaW5UZXJyYWluSGVpZ2h0LHRoaXMuX2JvdW5kaW5nU3BoZXJlc0tleXM9W10sdGhpcy5fYm91bmRpbmdTcGhlcmVzPVtdLHRoaXMuX3VzZUZyYWdtZW50Q3VsbGluZz0hMSx0aGlzLl96SW5kZXg9dm9pZCAwO2xldCBuPXRoaXM7dGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zPXtnZW9tZXRyeUluc3RhbmNlczp2b2lkIDAsYXBwZWFyYW5jZTp2b2lkIDAsdmVydGV4Q2FjaGVPcHRpbWl6ZTpaKHQudmVydGV4Q2FjaGVPcHRpbWl6ZSwhMSksaW50ZXJsZWF2ZTpaKHQuaW50ZXJsZWF2ZSwhMSkscmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOloodC5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMsITApLGFsbG93UGlja2luZzpaKHQuYWxsb3dQaWNraW5nLCEwKSxhc3luY2hyb25vdXM6Wih0LmFzeW5jaHJvbm91cywhMCksY29tcHJlc3NWZXJ0aWNlczpaKHQuY29tcHJlc3NWZXJ0aWNlcywhMCksX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb246dm9pZCAwLF91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb246dm9pZCAwLF9waWNrUHJpbWl0aXZlOm4sX2V4dHJ1ZGVkOiEwLF91bmlmb3JtTWFwOnZydH19ZnVuY3Rpb24gcmoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7bGV0IG49aS5tYXhpbXVtUmFkaXVzLHM9bi9NYXRoLmNvcyhlKi41KS1uO3JldHVybiB0Ll9tYXhIZWlnaHQrc319ZnVuY3Rpb24gYWoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuX21pbkhlaWdodH19ZnVuY3Rpb24gYXAodCxlKXtsZXQgaT10Lm1hcFByb2plY3Rpb24uZWxsaXBzb2lkO2lmKCFtKGUuYXR0cmlidXRlcyl8fCFtKGUuYXR0cmlidXRlcy5wb3NpdGlvbjNESGlnaCkpcmV0dXJuIG0oZS5yZWN0YW5nbGUpP2UucmVjdGFuZ2xlOnZvaWQgMDtsZXQgbj1lLmF0dHJpYnV0ZXMucG9zaXRpb24zREhpZ2gudmFsdWVzLHM9ZS5hdHRyaWJ1dGVzLnBvc2l0aW9uM0RMb3cudmFsdWVzLG89bi5sZW5ndGgscj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKGxldCBmPTA7ZjxvO2YrPTMpe2xldCBFPWwudW5wYWNrKG4sZix6cnQpLF89bC51bnBhY2socyxmLEtydCksUj1sLmFkZChFLF8sWHJ0KSxJPWkuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoUixxcnQpLEM9SS5sYXRpdHVkZSxOPUkubG9uZ2l0dWRlO3I9TWF0aC5taW4ocixDKSxhPU1hdGgubWluKGEsTiksaD1NYXRoLm1heChoLEMpLEE9TWF0aC5tYXgoQSxOKX1sZXQgZD0kcnQ7cmV0dXJuIGQubm9ydGg9aCxkLnNvdXRoPXIsZC5lYXN0PUEsZC53ZXN0PWEsZH1mdW5jdGlvbiB0YXQodCxlLGkpe2xldCBuPURvLmdldE1pbmltdW1NYXhpbXVtSGVpZ2h0cyhlLGkpO3QuX21pblRlcnJhaW5IZWlnaHQ9bi5taW5pbXVtVGVycmFpbkhlaWdodCx0Ll9tYXhUZXJyYWluSGVpZ2h0PW4ubWF4aW11bVRlcnJhaW5IZWlnaHR9ZnVuY3Rpb24gZWF0KHQsZSxpKXtsZXQgbj1lLm1hcFByb2plY3Rpb24uZWxsaXBzb2lkLHM9YXAoZSxpKSxvPXpzLmZyb21SZWN0YW5nbGUocyx0Ll9taW5IZWlnaHQsdC5fbWF4SGVpZ2h0LG4pO2lmKHQuX2JvdW5kaW5nVm9sdW1lcy5wdXNoKG8pLCFlLnNjZW5lM0RPbmx5KXtsZXQgcj1lLm1hcFByb2plY3Rpb24sYT1OdC5mcm9tUmVjdGFuZ2xlV2l0aEhlaWdodHMyRChzLHIsdC5fbWF4SGVpZ2h0LHQuX21pbkhlaWdodCk7bC5mcm9tRWxlbWVudHMoYS5jZW50ZXIueixhLmNlbnRlci54LGEuY2VudGVyLnksYS5jZW50ZXIpLHQuX2JvdW5kaW5nVm9sdW1lczJELnB1c2goYSl9fWZ1bmN0aW9uIF9iKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodCVlLzIpfWZ1bmN0aW9uIFJiKHQsZSxpLG4scyxvLHIpe2xldCBhPXQuX3ByaW1pdGl2ZTtpLm1vZGUhPT15ZS5TQ0VORTNEJiZlLnNoYWRlclByb2dyYW09PT1hLl9zcENvbG9yJiZhLl9uZWVkczJEU2hhZGVyJiYoZT1lLmRlcml2ZWRDb21tYW5kcy5hcHBlYXJhbmNlMkQpLGUub3duZXI9dCxlLm1vZGVsTWF0cml4PW4sZS5ib3VuZGluZ1ZvbHVtZT1vLGUuY3VsbD1zLGUuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9cixpLmNvbW1hbmRMaXN0LnB1c2goZSl9ZnVuY3Rpb24gQWoodCxlLGksbixzLG8pe2xldCByPXQuX3ByaW1pdGl2ZTtpLm1vZGUhPT15ZS5TQ0VORTNEJiZlLnNoYWRlclByb2dyYW09PT1yLl9zcFBpY2smJnIuX25lZWRzMkRTaGFkZXImJihlPWUuZGVyaXZlZENvbW1hbmRzLnBpY2syRCksZS5vd25lcj10LGUubW9kZWxNYXRyaXg9bixlLmJvdW5kaW5nVm9sdW1lPW8sZS5jdWxsPXMsaS5jb21tYW5kTGlzdC5wdXNoKGUpfWZ1bmN0aW9uIGlhdCh0LGUsaSxuLHMsbyxyLGEpe2xldCBoO2UubW9kZT09PXllLlNDRU5FM0Q/aD10Ll9ib3VuZGluZ1ZvbHVtZXM6aD10Ll9ib3VuZGluZ1ZvbHVtZXMyRDtsZXQgQT10LmNsYXNzaWZpY2F0aW9uVHlwZSxkPUEhPT1Kci5DRVNJVU1fM0RfVElMRSxmPUEhPT1Kci5URVJSQUlOLEU9ZS5wYXNzZXMsXz10Ll9wcmltaXRpdmUsUixJLEM7aWYoRS5yZW5kZXIpe2xldCBOPWkubGVuZ3RoO2ZvcihSPTA7UjxOOysrUilJPWhbX2IoUixOKV0sZCYmKEM9aVtSXSxSYih0LEMsZSxzLG8sSSxyKSksZiYmKEM9aVtSXS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCxSYih0LEMsZSxzLG8sSSxyKSk7aWYoZS5pbnZlcnRDbGFzc2lmaWNhdGlvbil7bGV0IFQ9Xy5fY29tbWFuZHNJZ25vcmVTaG93LEY9VC5sZW5ndGg7Zm9yKFI9MDtSPEY7KytSKUk9aFtSXSxDPVRbUl0sUmIodCxDLGUscyxvLEkscil9fWlmKEUucGljayl7bGV0IE49bi5sZW5ndGgsVDtmb3IodC5fdXNlRnJhZ21lbnRDdWxsaW5nfHwoVD1fLl9wcmltaXRpdmUuX3BpY2tPZmZzZXRzKSxSPTA7UjxOOysrUil7aWYoST1oW19iKFIsTildLCF0Ll91c2VGcmFnbWVudEN1bGxpbmcpe2xldCBGPVRbX2IoUixOKV07ST1oW0YuaW5kZXhdfWQmJihDPW5bUl0sQWoodCxDLGUscyxvLEkpKSxmJiYoQz1uW1JdLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0LEFqKHQsQyxlLHMsbyxJKSl9fX12YXIgdnJ0LHpydCxLcnQsWHJ0LHFydCwkcnQsaGosY2o9TygoKT0+e0pFKCk7X2koKTtIdCgpO3JpKCk7YWUoKTtidCgpO210KCk7V3MoKTtWdCgpO3VBKCk7SmwoKTtwbigpO2hiKCk7b2ooKTtNSSgpO29wKCk7dWEoKTtkYigpO3ZydD17dV9nbG9iZU1pbmltdW1BbHRpdHVkZTpmdW5jdGlvbigpe3JldHVybiA1NWUzfX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobnIucHJvdG90eXBlLHt2ZXJ0ZXhDYWNoZU9wdGltaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLnZlcnRleENhY2hlT3B0aW1pemV9fSxpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLmludGVybGVhdmV9fSxyZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbGFzc2lmaWNhdGlvblByaW1pdGl2ZU9wdGlvbnMucmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzfX0sYWxsb3dQaWNraW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLmFsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsYXNzaWZpY2F0aW9uUHJpbWl0aXZlT3B0aW9ucy5hc3luY2hyb25vdXN9fSxjb21wcmVzc1ZlcnRpY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLmNvbXByZXNzVmVydGljZXN9fSxyZWFkeTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWR5fX19KTtuci5pc1N1cHBvcnRlZD1FYi5pc1N1cHBvcnRlZDt6cnQ9bmV3IGwsS3J0PW5ldyBsLFhydD1uZXcgbCxxcnQ9bmV3IHV0LCRydD1uZXcgWHQ7bnIuaW5pdGlhbGl6ZVRlcnJhaW5IZWlnaHRzPWZ1bmN0aW9uKCl7cmV0dXJuIERvLmluaXRpYWxpemUoKX07bnIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpJiYhbSh0aGlzLmdlb21ldHJ5SW5zdGFuY2VzKSlyZXR1cm47aWYoIURvLmluaXRpYWxpemVkKXtpZighdGhpcy5hc3luY2hyb25vdXMpdGhyb3cgbmV3IFkoIkZvciBzeW5jaHJvbm91cyBHcm91bmRQcmltaXRpdmVzLCB5b3UgbXVzdCBjYWxsIEdyb3VuZFByaW1pdGl2ZS5pbml0aWFsaXplVGVycmFpbkhlaWdodHMoKSBhbmQgd2FpdCBmb3IgdGhlIHJldHVybmVkIHByb21pc2UgdG8gcmVzb2x2ZS4iKTtuci5pbml0aWFsaXplVGVycmFpbkhlaWdodHMoKTtyZXR1cm59bGV0IGU9dGhpcyxpPXRoaXMuX2NsYXNzaWZpY2F0aW9uUHJpbWl0aXZlT3B0aW9ucztpZighbSh0aGlzLl9wcmltaXRpdmUpKXtsZXQgbj10Lm1hcFByb2plY3Rpb24uZWxsaXBzb2lkLHMsbyxyLGE9QXJyYXkuaXNBcnJheSh0aGlzLmdlb21ldHJ5SW5zdGFuY2VzKT90aGlzLmdlb21ldHJ5SW5zdGFuY2VzOlt0aGlzLmdlb21ldHJ5SW5zdGFuY2VzXSxoPWEubGVuZ3RoLEE9bmV3IEFycmF5KGgpLGQsZjtmb3IoZD0wO2Q8aDsrK2Qpe3M9YVtkXSxvPXMuZ2VvbWV0cnk7bGV0IEk9YXAodCxvKTttKGYpP20oSSkmJlh0LnVuaW9uKGYsSSxmKTpmPVh0LmNsb25lKEkpO2xldCBDPXMuaWQ7aWYobShDKSYmbShJKSl7bGV0IE49RG8uZ2V0Qm91bmRpbmdTcGhlcmUoSSxuKTt0aGlzLl9ib3VuZGluZ1NwaGVyZXNLZXlzLnB1c2goQyksdGhpcy5fYm91bmRpbmdTcGhlcmVzLnB1c2goTil9aWYocj1vLmNvbnN0cnVjdG9yLCFtKHIpfHwhbShyLmNyZWF0ZVNoYWRvd1ZvbHVtZSkpdGhyb3cgbmV3IFkoIk5vdCBhbGwgb2YgdGhlIGdlb21ldHJ5IGluc3RhbmNlcyBoYXZlIEdyb3VuZFByaW1pdGl2ZSBzdXBwb3J0LiIpfXRhdCh0aGlzLGYsbik7bGV0IEU9dC52ZXJ0aWNhbEV4YWdnZXJhdGlvbixfPXQudmVydGljYWxFeGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodDt0aGlzLl9taW5IZWlnaHQ9QV8uZ2V0SGVpZ2h0KHRoaXMuX21pblRlcnJhaW5IZWlnaHQsRSxfKSx0aGlzLl9tYXhIZWlnaHQ9QV8uZ2V0SGVpZ2h0KHRoaXMuX21heFRlcnJhaW5IZWlnaHQsRSxfKTtsZXQgUj1uci5fc3VwcG9ydHNNYXRlcmlhbHModC5jb250ZXh0KTtpZih0aGlzLl91c2VGcmFnbWVudEN1bGxpbmc9UixSKXtsZXQgSSxDPSEwO2ZvcihkPTA7ZDxoOysrZClpZihzPWFbZF0sbz1zLmdlb21ldHJ5LGY9YXAodCxvKSxnYy5zaG91bGRVc2VTcGhlcmljYWxDb29yZGluYXRlcyhmKSl7Qz0hMTticmVha31mb3IoZD0wO2Q8aDsrK2Qpe3M9YVtkXSxvPXMuZ2VvbWV0cnkscj1vLmNvbnN0cnVjdG9yO2xldCBOPWFwKHQsbyksVD1vLnRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM7Qz9JPWdjLmdldFBsYW5hclRleHR1cmVDb29yZGluYXRlQXR0cmlidXRlcyhOLFQsbix0Lm1hcFByb2plY3Rpb24sdGhpcy5fbWF4SGVpZ2h0KTpJPWdjLmdldFNwaGVyaWNhbEV4dGVudEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzKE4sVCxuLHQubWFwUHJvamVjdGlvbik7bGV0IEY9cy5hdHRyaWJ1dGVzO2ZvcihsZXQgYiBpbiBGKUYuaGFzT3duUHJvcGVydHkoYikmJihJW2JdPUZbYl0pO0FbZF09bmV3IExuKHtnZW9tZXRyeTpyLmNyZWF0ZVNoYWRvd1ZvbHVtZShvLGFqKHRoaXMpLHJqKHRoaXMpKSxhdHRyaWJ1dGVzOkksaWQ6cy5pZH0pfX1lbHNlIGZvcihkPTA7ZDxoOysrZClzPWFbZF0sbz1zLmdlb21ldHJ5LHI9by5jb25zdHJ1Y3RvcixBW2RdPW5ldyBMbih7Z2VvbWV0cnk6ci5jcmVhdGVTaGFkb3dWb2x1bWUobyxhaih0aGlzKSxyaih0aGlzKSksYXR0cmlidXRlczpzLmF0dHJpYnV0ZXMsaWQ6cy5pZH0pO2kuZ2VvbWV0cnlJbnN0YW5jZXM9QSxpLmFwcGVhcmFuY2U9dGhpcy5hcHBlYXJhbmNlLGkuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb249ZnVuY3Rpb24oSSxDKXtlYXQoZSxJLEMpfSxpLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249ZnVuY3Rpb24oSSxDLE4sVCxGLGIsRyxNKXtpYXQoZSxDLE4sVCxGLGIsRyxNKX0sdGhpcy5fcHJpbWl0aXZlPW5ldyBFYihpKX10aGlzLl9wcmltaXRpdmUuYXBwZWFyYW5jZT10aGlzLmFwcGVhcmFuY2UsdGhpcy5fcHJpbWl0aXZlLnNob3c9dGhpcy5zaG93LHRoaXMuX3ByaW1pdGl2ZS5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9dGhpcy5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWUsdGhpcy5fcHJpbWl0aXZlLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsdGhpcy5fcHJpbWl0aXZlLnVwZGF0ZSh0KSx0LmFmdGVyUmVuZGVyLnB1c2goKCk9PnshdGhpcy5fcmVhZHkmJm0odGhpcy5fcHJpbWl0aXZlKSYmdGhpcy5fcHJpbWl0aXZlLnJlYWR5JiYodGhpcy5fcmVhZHk9ITAsdGhpcy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMmJih0aGlzLmdlb21ldHJ5SW5zdGFuY2VzPXZvaWQgMCkpfSl9O25yLnByb3RvdHlwZS5nZXRCb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0KXtsZXQgZT10aGlzLl9ib3VuZGluZ1NwaGVyZXNLZXlzLmluZGV4T2YodCk7aWYoZSE9PS0xKXJldHVybiB0aGlzLl9ib3VuZGluZ1NwaGVyZXNbZV19O25yLnByb3RvdHlwZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcz1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpKXRocm93IG5ldyBZKCJtdXN0IGNhbGwgdXBkYXRlIGJlZm9yZSBjYWxsaW5nIGdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzIik7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcyh0KX07bnIucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O25yLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZT10aGlzLl9wcmltaXRpdmUmJnRoaXMuX3ByaW1pdGl2ZS5kZXN0cm95KCksbGkodGhpcyl9O25yLl9zdXBwb3J0c01hdGVyaWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdC5kZXB0aFRleHR1cmV9O25yLnN1cHBvcnRzTWF0ZXJpYWxzPWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNjZW5lIix0KSxuci5fc3VwcG9ydHNNYXRlcmlhbHModC5mcmFtZVN0YXRlLmNvbnRleHQpfTtoaj1ucn0pO2Z1bmN0aW9uIFRjKHQpe3RoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9oYXNDbG9uZT0hMSx0aGlzLl9oYXNFcXVhbHM9ITEsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuc2V0VmFsdWUodCl9dmFyIENoLGhfPU8oKCk9PnttdCgpO3hpKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVGMucHJvdG90eXBlLHtpc0NvbnN0YW50Ont2YWx1ZTohMH0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19fSk7VGMucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2hhc0Nsb25lP3RoaXMuX3ZhbHVlLmNsb25lKGUpOnRoaXMuX3ZhbHVlfTtUYy5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcy5fdmFsdWU7aWYoZSE9PXQpe2xldCBpPW0odCksbj1pJiZ0eXBlb2YgdC5jbG9uZT09ImZ1bmN0aW9uIixzPWkmJnR5cGVvZiB0LmVxdWFscz09ImZ1bmN0aW9uIjsoIXN8fCF0LmVxdWFscyhlKSkmJih0aGlzLl9oYXNDbG9uZT1uLHRoaXMuX2hhc0VxdWFscz1zLHRoaXMuX3ZhbHVlPW4/dC5jbG9uZSh0aGlzLl92YWx1ZSk6dCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19O1RjLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHx0IGluc3RhbmNlb2YgVGMmJighdGhpcy5faGFzRXF1YWxzJiZ0aGlzLl92YWx1ZT09PXQuX3ZhbHVlfHx0aGlzLl9oYXNFcXVhbHMmJnRoaXMuX3ZhbHVlLmVxdWFscyh0Ll92YWx1ZSkpfTtUYy5wcm90b3R5cGUudmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX07VGMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLl92YWx1ZSl9O0NoPVRjfSk7ZnVuY3Rpb24gbmF0KHQsZSxpLG4scyl7cmV0dXJue2NvbmZpZ3VyYWJsZTpuLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW2VdfSxzZXQ6ZnVuY3Rpb24obyl7bGV0IHI9dGhpc1tlXSxhPXRoaXNbaV07bShhKSYmKGEoKSx0aGlzW2ldPXZvaWQgMCksbyE9PXZvaWQgMCYmKCFtKG8pfHwhbShvLmdldFZhbHVlKSkmJm0ocykmJihvPXMobykpLHIhPT1vJiYodGhpc1tlXT1vLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyx0LG8scikpLG0obykmJm0oby5kZWZpbml0aW9uQ2hhbmdlZCkmJih0aGlzW2ldPW8uZGVmaW5pdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbigpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyx0LG8sbyl9LHRoaXMpKX19fWZ1bmN0aW9uIHNhdCh0KXtyZXR1cm4gbmV3IENoKHQpfWZ1bmN0aW9uIG9hdCh0LGUsaSl7cmV0dXJuIG5hdCh0LGBfJHt0LnRvU3RyaW5nKCl9YCxgXyR7dC50b1N0cmluZygpfVN1YnNjcmlwdGlvbmAsWihlLCExKSxaKGksc2F0KSl9dmFyIHJ0LHluPU8oKCk9PntidCgpO210KCk7aF8oKTtydD1vYXR9KTtmdW5jdGlvbiBjXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW1hZ2U9dm9pZCAwLHRoaXMuX2ltYWdlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fc2NhbGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0PXZvaWQgMCx0aGlzLl9waXhlbE9mZnNldFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXllT2Zmc2V0PXZvaWQgMCx0aGlzLl9leWVPZmZzZXRTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hvcml6b250YWxPcmlnaW49dm9pZCAwLHRoaXMuX2hvcml6b250YWxPcmlnaW5TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3ZlcnRpY2FsT3JpZ2luPXZvaWQgMCx0aGlzLl92ZXJ0aWNhbE9yaWdpblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NvbG9yPXZvaWQgMCx0aGlzLl9jb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcm90YXRpb249dm9pZCAwLHRoaXMuX3JvdGF0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9hbGlnbmVkQXhpcz12b2lkIDAsdGhpcy5fYWxpZ25lZEF4aXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NpemVJbk1ldGVycz12b2lkIDAsdGhpcy5fc2l6ZUluTWV0ZXJzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5fd2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3NjYWxlQnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9pbWFnZVN1YlJlZ2lvbj12b2lkIDAsdGhpcy5faW1hZ2VTdWJSZWdpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dm9pZCAwLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgbGosZGo9TygoKT0+e2J0KCk7bXQoKTtWdCgpO3hpKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IiksaW1hZ2U6cnQoImltYWdlIiksc2NhbGU6cnQoInNjYWxlIikscGl4ZWxPZmZzZXQ6cnQoInBpeGVsT2Zmc2V0IiksZXllT2Zmc2V0OnJ0KCJleWVPZmZzZXQiKSxob3Jpem9udGFsT3JpZ2luOnJ0KCJob3Jpem9udGFsT3JpZ2luIiksdmVydGljYWxPcmlnaW46cnQoInZlcnRpY2FsT3JpZ2luIiksaGVpZ2h0UmVmZXJlbmNlOnJ0KCJoZWlnaHRSZWZlcmVuY2UiKSxjb2xvcjpydCgiY29sb3IiKSxyb3RhdGlvbjpydCgicm90YXRpb24iKSxhbGlnbmVkQXhpczpydCgiYWxpZ25lZEF4aXMiKSxzaXplSW5NZXRlcnM6cnQoInNpemVJbk1ldGVycyIpLHdpZHRoOnJ0KCJ3aWR0aCIpLGhlaWdodDpydCgiaGVpZ2h0Iiksc2NhbGVCeURpc3RhbmNlOnJ0KCJzY2FsZUJ5RGlzdGFuY2UiKSx0cmFuc2x1Y2VuY3lCeURpc3RhbmNlOnJ0KCJ0cmFuc2x1Y2VuY3lCeURpc3RhbmNlIikscGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U6cnQoInBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlIiksaW1hZ2VTdWJSZWdpb246cnQoImltYWdlU3ViUmVnaW9uIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKSxkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6cnQoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSIpfSk7Y18ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5fc2hvdyx0LmltYWdlPXRoaXMuX2ltYWdlLHQuc2NhbGU9dGhpcy5fc2NhbGUsdC5waXhlbE9mZnNldD10aGlzLl9waXhlbE9mZnNldCx0LmV5ZU9mZnNldD10aGlzLl9leWVPZmZzZXQsdC5ob3Jpem9udGFsT3JpZ2luPXRoaXMuX2hvcml6b250YWxPcmlnaW4sdC52ZXJ0aWNhbE9yaWdpbj10aGlzLl92ZXJ0aWNhbE9yaWdpbix0LmhlaWdodFJlZmVyZW5jZT10aGlzLl9oZWlnaHRSZWZlcmVuY2UsdC5jb2xvcj10aGlzLl9jb2xvcix0LnJvdGF0aW9uPXRoaXMuX3JvdGF0aW9uLHQuYWxpZ25lZEF4aXM9dGhpcy5fYWxpZ25lZEF4aXMsdC5zaXplSW5NZXRlcnM9dGhpcy5fc2l6ZUluTWV0ZXJzLHQud2lkdGg9dGhpcy5fd2lkdGgsdC5oZWlnaHQ9dGhpcy5faGVpZ2h0LHQuc2NhbGVCeURpc3RhbmNlPXRoaXMuX3NjYWxlQnlEaXN0YW5jZSx0LnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9dGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0LnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPXRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLHQuaW1hZ2VTdWJSZWdpb249dGhpcy5faW1hZ2VTdWJSZWdpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSx0KTpuZXcgY18odGhpcyl9O2NfLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuX3Nob3csdC5zaG93KSx0aGlzLmltYWdlPVoodGhpcy5faW1hZ2UsdC5pbWFnZSksdGhpcy5zY2FsZT1aKHRoaXMuX3NjYWxlLHQuc2NhbGUpLHRoaXMucGl4ZWxPZmZzZXQ9Wih0aGlzLl9waXhlbE9mZnNldCx0LnBpeGVsT2Zmc2V0KSx0aGlzLmV5ZU9mZnNldD1aKHRoaXMuX2V5ZU9mZnNldCx0LmV5ZU9mZnNldCksdGhpcy5ob3Jpem9udGFsT3JpZ2luPVoodGhpcy5faG9yaXpvbnRhbE9yaWdpbix0Lmhvcml6b250YWxPcmlnaW4pLHRoaXMudmVydGljYWxPcmlnaW49Wih0aGlzLl92ZXJ0aWNhbE9yaWdpbix0LnZlcnRpY2FsT3JpZ2luKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuX2hlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5jb2xvcj1aKHRoaXMuX2NvbG9yLHQuY29sb3IpLHRoaXMucm90YXRpb249Wih0aGlzLl9yb3RhdGlvbix0LnJvdGF0aW9uKSx0aGlzLmFsaWduZWRBeGlzPVoodGhpcy5fYWxpZ25lZEF4aXMsdC5hbGlnbmVkQXhpcyksdGhpcy5zaXplSW5NZXRlcnM9Wih0aGlzLl9zaXplSW5NZXRlcnMsdC5zaXplSW5NZXRlcnMpLHRoaXMud2lkdGg9Wih0aGlzLl93aWR0aCx0LndpZHRoKSx0aGlzLmhlaWdodD1aKHRoaXMuX2hlaWdodCx0LmhlaWdodCksdGhpcy5zY2FsZUJ5RGlzdGFuY2U9Wih0aGlzLl9zY2FsZUJ5RGlzdGFuY2UsdC5zY2FsZUJ5RGlzdGFuY2UpLHRoaXMudHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1aKHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSx0aGlzLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPVoodGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UsdC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSksdGhpcy5pbWFnZVN1YlJlZ2lvbj1aKHRoaXMuX2ltYWdlU3ViUmVnaW9uLHQuaW1hZ2VTdWJSZWdpb24pLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZT1aKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSx0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSl9O2xqPWNffSk7ZnVuY3Rpb24gTWEoKXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9dmFyIE9pLEhsPU8oKCk9PntidCgpO210KCk7VnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhNYS5wcm90b3R5cGUse2lzQ29uc3RhbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7TWEucHJvdG90eXBlLmdldFZhbHVlPVkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3I7TWEucHJvdG90eXBlLmVxdWFscz1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO01hLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmdC5lcXVhbHMoZSl9O01hLmFycmF5RXF1YWxzPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuITA7aWYoIW0odCl8fCFtKGUpfHx0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2xldCBpPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248aTtuKyspaWYoIU1hLmVxdWFscyh0W25dLGVbbl0pKXJldHVybiExO3JldHVybiEwfTtNYS5pc0NvbnN0YW50PWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHx0LmlzQ29uc3RhbnR9O01hLmdldFZhbHVlT3JVbmRlZmluZWQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBtKHQpP3QuZ2V0VmFsdWUoZSxpKTp2b2lkIDB9O01hLmdldFZhbHVlT3JEZWZhdWx0PWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBtKHQpP1oodC5nZXRWYWx1ZShlLG4pLGkpOml9O01hLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0PWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzO3JldHVybiBtKHQpJiYocz10LmdldFZhbHVlKGUsbikpLG0ocyl8fChzPWkuY2xvbmUocykpLHN9O09pPU1hfSk7ZnVuY3Rpb24gdGYodCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX2NvbG9yPXZvaWQgMCx0aGlzLl9jb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5jb2xvcj10fXZhciBtaixmaj1PKCgpPT57UW4oKTttdCgpO3hpKCk7eW4oKTtIbCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRmLnByb3RvdHlwZSx7aXNDb25zdGFudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9pLmlzQ29uc3RhbnQodGhpcy5fY29sb3IpfX0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LGNvbG9yOnJ0KCJjb2xvciIpfSk7dGYucHJvdG90eXBlLmdldFR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIkNvbG9yIn07dGYucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPXt9KSxlLmNvbG9yPU9pLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0KHRoaXMuX2NvbG9yLHQsWnQuV0hJVEUsZS5jb2xvciksZX07dGYucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fHQgaW5zdGFuY2VvZiB0ZiYmT2kuZXF1YWxzKHRoaXMuX2NvbG9yLHQuX2NvbG9yKX07bWo9dGZ9KTtmdW5jdGlvbiBlZih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX2ltYWdlPXZvaWQgMCx0aGlzLl9pbWFnZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcmVwZWF0PXZvaWQgMCx0aGlzLl9yZXBlYXRTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NvbG9yPXZvaWQgMCx0aGlzLl9jb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdHJhbnNwYXJlbnQ9dm9pZCAwLHRoaXMuX3RyYW5zcGFyZW50U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5yZXBlYXQ9dC5yZXBlYXQsdGhpcy5jb2xvcj10LmNvbG9yLHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudH12YXIgcmF0LGFhdCxBYXQsRWosX2o9TygoKT0+e1hlKCk7UW4oKTtidCgpO210KCk7eGkoKTt5bigpO0hsKCk7cmF0PW5ldyBudCgxLDEpLGFhdD0hMSxBYXQ9WnQuV0hJVEU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZWYucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gT2kuaXNDb25zdGFudCh0aGlzLl9pbWFnZSkmJk9pLmlzQ29uc3RhbnQodGhpcy5fcmVwZWF0KX19LGRlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxpbWFnZTpydCgiaW1hZ2UiKSxyZXBlYXQ6cnQoInJlcGVhdCIpLGNvbG9yOnJ0KCJjb2xvciIpLHRyYW5zcGFyZW50OnJ0KCJ0cmFuc3BhcmVudCIpfSk7ZWYucHJvdG90eXBlLmdldFR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIkltYWdlIn07ZWYucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPXt9KSxlLmltYWdlPU9pLmdldFZhbHVlT3JVbmRlZmluZWQodGhpcy5faW1hZ2UsdCksZS5yZXBlYXQ9T2kuZ2V0VmFsdWVPckNsb25lZERlZmF1bHQodGhpcy5fcmVwZWF0LHQscmF0LGUucmVwZWF0KSxlLmNvbG9yPU9pLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0KHRoaXMuX2NvbG9yLHQsQWF0LGUuY29sb3IpLE9pLmdldFZhbHVlT3JEZWZhdWx0KHRoaXMuX3RyYW5zcGFyZW50LHQsYWF0KSYmKGUuY29sb3IuYWxwaGE9TWF0aC5taW4oLjk5LGUuY29sb3IuYWxwaGEpKSxlfTtlZi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIGVmJiZPaS5lcXVhbHModGhpcy5faW1hZ2UsdC5faW1hZ2UpJiZPaS5lcXVhbHModGhpcy5fcmVwZWF0LHQuX3JlcGVhdCkmJk9pLmVxdWFscyh0aGlzLl9jb2xvcix0Ll9jb2xvcikmJk9pLmVxdWFscyh0aGlzLl90cmFuc3BhcmVudCx0Ll90cmFuc3BhcmVudCl9O0VqPWVmfSk7ZnVuY3Rpb24gaGF0KHQpe2lmKHQgaW5zdGFuY2VvZiBadClyZXR1cm4gbmV3IG1qKHQpO2lmKHR5cGVvZiB0PT0ic3RyaW5nInx8dCBpbnN0YW5jZW9mIHRufHx0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KXtsZXQgZT1uZXcgRWo7cmV0dXJuIGUuaW1hZ2U9dCxlfXRocm93IG5ldyBZKGBVbmFibGUgdG8gaW5mZXIgbWF0ZXJpYWwgdHlwZTogJHt0fWApfWZ1bmN0aW9uIGNhdCh0LGUpe3JldHVybiBydCh0LGUsaGF0KX12YXIgd24sdXI9TygoKT0+e1FuKCk7VnQoKTtJYSgpO2ZqKCk7eW4oKTtfaigpO3duPWNhdH0pO2Z1bmN0aW9uIGxfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaW1lbnNpb25zPXZvaWQgMCx0aGlzLl9kaW1lbnNpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBSaixaaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobF8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLGRpbWVuc2lvbnM6cnQoImRpbWVuc2lvbnMiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGZpbGw6cnQoImZpbGwiKSxtYXRlcmlhbDp3bigibWF0ZXJpYWwiKSxvdXRsaW5lOnJ0KCJvdXRsaW5lIiksb3V0bGluZUNvbG9yOnJ0KCJvdXRsaW5lQ29sb3IiKSxvdXRsaW5lV2lkdGg6cnQoIm91dGxpbmVXaWR0aCIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpfSk7bF8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQuZGltZW5zaW9ucz10aGlzLmRpbWVuc2lvbnMsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5maWxsPXRoaXMuZmlsbCx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5vdXRsaW5lPXRoaXMub3V0bGluZSx0Lm91dGxpbmVDb2xvcj10aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVXaWR0aD10aGlzLm91dGxpbmVXaWR0aCx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQpOm5ldyBsXyh0aGlzKX07bF8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5kaW1lbnNpb25zPVoodGhpcy5kaW1lbnNpb25zLHQuZGltZW5zaW9ucyksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5maWxsPVoodGhpcy5maWxsLHQuZmlsbCksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5vdXRsaW5lPVoodGhpcy5vdXRsaW5lLHQub3V0bGluZSksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbil9O1JqPWxffSk7ZnVuY3Rpb24gbmYoKXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9dmFyIFpiLEFwLEliPU8oKCk9PntIdCgpO210KCk7VnQoKTtkbigpO2ljKCk7ZnIoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZi5wcm90b3R5cGUse2lzQ29uc3RhbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LHJlZmVyZW5jZUZyYW1lOntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn19KTtuZi5wcm90b3R5cGUuZ2V0VmFsdWU9WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcjtuZi5wcm90b3R5cGUuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lPVkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3I7bmYucHJvdG90eXBlLmVxdWFscz1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO1piPW5ldyBsdDtuZi5jb252ZXJ0VG9SZWZlcmVuY2VGcmFtZT1mdW5jdGlvbih0LGUsaSxuLHMpe2lmKCFtKGUpKXJldHVybiBlO2lmKG0ocyl8fChzPW5ldyBsKSxpPT09bilyZXR1cm4gbC5jbG9uZShlLHMpO2xldCBvPUluLmNvbXB1dGVJY3JmVG9GaXhlZE1hdHJpeCh0LFpiKTtpZihtKG8pfHwobz1Jbi5jb21wdXRlVGVtZVRvUHNldWRvRml4ZWRNYXRyaXgodCxaYikpLGk9PT0kaS5JTkVSVElBTClyZXR1cm4gbHQubXVsdGlwbHlCeVZlY3RvcihvLGUscyk7aWYoaT09PSRpLkZJWEVEKXJldHVybiBsdC5tdWx0aXBseUJ5VmVjdG9yKGx0LnRyYW5zcG9zZShvLFpiKSxlLHMpfTtBcD1uZn0pO2Z1bmN0aW9uIHZsKHQsZSl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3ZhbHVlPWwuY2xvbmUodCksdGhpcy5fcmVmZXJlbmNlRnJhbWU9WihlLCRpLkZJWEVEKX12YXIgSWoscGo9TygoKT0+e0h0KCk7YnQoKTttdCgpO1Z0KCk7eGkoKTtpYygpO0liKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModmwucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hbSh0aGlzLl92YWx1ZSl8fHRoaXMuX3JlZmVyZW5jZUZyYW1lPT09JGkuRklYRUR9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0scmVmZXJlbmNlRnJhbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWZlcmVuY2VGcmFtZX19fSk7dmwucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lKHQsJGkuRklYRUQsZSl9O3ZsLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe2xldCBpPSExO2wuZXF1YWxzKHRoaXMuX3ZhbHVlLHQpfHwoaT0hMCx0aGlzLl92YWx1ZT1sLmNsb25lKHQpKSxtKGUpJiZ0aGlzLl9yZWZlcmVuY2VGcmFtZSE9PWUmJihpPSEwLHRoaXMuX3JlZmVyZW5jZUZyYW1lPWUpLGkmJnRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O3ZsLnByb3RvdHlwZS5nZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyZWZlcmVuY2VGcmFtZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gQXAuY29udmVydFRvUmVmZXJlbmNlRnJhbWUodCx0aGlzLl92YWx1ZSx0aGlzLl9yZWZlcmVuY2VGcmFtZSxlLGkpfTt2bC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIHZsJiZsLmVxdWFscyh0aGlzLl92YWx1ZSx0Ll92YWx1ZSkmJnRoaXMuX3JlZmVyZW5jZUZyYW1lPT09dC5fcmVmZXJlbmNlRnJhbWV9O0lqPXZsfSk7ZnVuY3Rpb24gZF8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9ucz12b2lkIDAsdGhpcy5fcG9zaXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5fd2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGU9dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGU9dm9pZCAwLHRoaXMuX2NsYXNzaWZpY2F0aW9uVHlwZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fekluZGV4PXZvaWQgMCx0aGlzLl96SW5kZXhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIHVqLENqPU8oKCk9PntidCgpO210KCk7VnQoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscG9zaXRpb25zOnJ0KCJwb3NpdGlvbnMiKSx3aWR0aDpydCgid2lkdGgiKSxoZWlnaHQ6cnQoImhlaWdodCIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZXh0cnVkZWRIZWlnaHQ6cnQoImV4dHJ1ZGVkSGVpZ2h0IiksZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U6cnQoImV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIiksY29ybmVyVHlwZTpydCgiY29ybmVyVHlwZSIpLGdyYW51bGFyaXR5OnJ0KCJncmFudWxhcml0eSIpLGZpbGw6cnQoImZpbGwiKSxtYXRlcmlhbDp3bigibWF0ZXJpYWwiKSxvdXRsaW5lOnJ0KCJvdXRsaW5lIiksb3V0bGluZUNvbG9yOnJ0KCJvdXRsaW5lQ29sb3IiKSxvdXRsaW5lV2lkdGg6cnQoIm91dGxpbmVXaWR0aCIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGNsYXNzaWZpY2F0aW9uVHlwZTpydCgiY2xhc3NpZmljYXRpb25UeXBlIiksekluZGV4OnJ0KCJ6SW5kZXgiKX0pO2RfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnBvc2l0aW9ucz10aGlzLnBvc2l0aW9ucyx0LndpZHRoPXRoaXMud2lkdGgsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LmNvcm5lclR5cGU9dGhpcy5jb3JuZXJUeXBlLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5jbGFzc2lmaWNhdGlvblR5cGU9dGhpcy5jbGFzc2lmaWNhdGlvblR5cGUsdC56SW5kZXg9dGhpcy56SW5kZXgsdCk6bmV3IGRfKHRoaXMpfTtkXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnBvc2l0aW9ucz1aKHRoaXMucG9zaXRpb25zLHQucG9zaXRpb25zKSx0aGlzLndpZHRoPVoodGhpcy53aWR0aCx0LndpZHRoKSx0aGlzLmhlaWdodD1aKHRoaXMuaGVpZ2h0LHQuaGVpZ2h0KSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmV4dHJ1ZGVkSGVpZ2h0PVoodGhpcy5leHRydWRlZEhlaWdodCx0LmV4dHJ1ZGVkSGVpZ2h0KSx0aGlzLmV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlPVoodGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LmV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmNvcm5lclR5cGU9Wih0aGlzLmNvcm5lclR5cGUsdC5jb3JuZXJUeXBlKSx0aGlzLmdyYW51bGFyaXR5PVoodGhpcy5ncmFudWxhcml0eSx0LmdyYW51bGFyaXR5KSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZT1aKHRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuY2xhc3NpZmljYXRpb25UeXBlKSx0aGlzLnpJbmRleD1aKHRoaXMuekluZGV4LHQuekluZGV4KX07dWo9ZF99KTtmdW5jdGlvbiBsYXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gZGF0KHQsZSl7cmV0dXJuIHJ0KHQsZSxsYXQpfXZhciBocCxnaj1PKCgpPT57eW4oKTtocD1kYXR9KTtmdW5jdGlvbiBtXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbGVuZ3RoPXZvaWQgMCx0aGlzLl9sZW5ndGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RvcFJhZGl1cz12b2lkIDAsdGhpcy5fdG9wUmFkaXVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ib3R0b21SYWRpdXM9dm9pZCAwLHRoaXMuX2JvdHRvbVJhZGl1c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2ZpbGw9dm9pZCAwLHRoaXMuX2ZpbGxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZT12b2lkIDAsdGhpcy5fb3V0bGluZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aD12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9dm9pZCAwLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2xpY2VzPXZvaWQgMCx0aGlzLl9zbGljZXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBUaixOaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobV8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLGxlbmd0aDpydCgibGVuZ3RoIiksdG9wUmFkaXVzOnJ0KCJ0b3BSYWRpdXMiKSxib3R0b21SYWRpdXM6cnQoImJvdHRvbVJhZGl1cyIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZmlsbDpydCgiZmlsbCIpLG1hdGVyaWFsOnduKCJtYXRlcmlhbCIpLG91dGxpbmU6cnQoIm91dGxpbmUiKSxvdXRsaW5lQ29sb3I6cnQoIm91dGxpbmVDb2xvciIpLG91dGxpbmVXaWR0aDpydCgib3V0bGluZVdpZHRoIiksbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnJ0KCJudW1iZXJPZlZlcnRpY2FsTGluZXMiKSxzbGljZXM6cnQoInNsaWNlcyIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpfSk7bV8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQubGVuZ3RoPXRoaXMubGVuZ3RoLHQudG9wUmFkaXVzPXRoaXMudG9wUmFkaXVzLHQuYm90dG9tUmFkaXVzPXRoaXMuYm90dG9tUmFkaXVzLHQuaGVpZ2h0UmVmZXJlbmNlPXRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuZmlsbD10aGlzLmZpbGwsdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHQub3V0bGluZT10aGlzLm91dGxpbmUsdC5vdXRsaW5lQ29sb3I9dGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lV2lkdGg9dGhpcy5vdXRsaW5lV2lkdGgsdC5udW1iZXJPZlZlcnRpY2FsTGluZXM9dGhpcy5udW1iZXJPZlZlcnRpY2FsTGluZXMsdC5zbGljZXM9dGhpcy5zbGljZXMsdC5zaGFkb3dzPXRoaXMuc2hhZG93cyx0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0KTpuZXcgbV8odGhpcyl9O21fLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMubGVuZ3RoPVoodGhpcy5sZW5ndGgsdC5sZW5ndGgpLHRoaXMudG9wUmFkaXVzPVoodGhpcy50b3BSYWRpdXMsdC50b3BSYWRpdXMpLHRoaXMuYm90dG9tUmFkaXVzPVoodGhpcy5ib3R0b21SYWRpdXMsdC5ib3R0b21SYWRpdXMpLHRoaXMuaGVpZ2h0UmVmZXJlbmNlPVoodGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5oZWlnaHRSZWZlcmVuY2UpLHRoaXMuZmlsbD1aKHRoaXMuZmlsbCx0LmZpbGwpLHRoaXMubWF0ZXJpYWw9Wih0aGlzLm1hdGVyaWFsLHQubWF0ZXJpYWwpLHRoaXMub3V0bGluZT1aKHRoaXMub3V0bGluZSx0Lm91dGxpbmUpLHRoaXMub3V0bGluZUNvbG9yPVoodGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lQ29sb3IpLHRoaXMub3V0bGluZVdpZHRoPVoodGhpcy5vdXRsaW5lV2lkdGgsdC5vdXRsaW5lV2lkdGgpLHRoaXMubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPVoodGhpcy5udW1iZXJPZlZlcnRpY2FsTGluZXMsdC5udW1iZXJPZlZlcnRpY2FsTGluZXMpLHRoaXMuc2xpY2VzPVoodGhpcy5zbGljZXMsdC5zbGljZXMpLHRoaXMuc2hhZG93cz1aKHRoaXMuc2hhZG93cyx0LnNoYWRvd3MpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pfTtUaj1tX30pO2Z1bmN0aW9uIGZfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zZW1pTWFqb3JBeGlzPXZvaWQgMCx0aGlzLl9zZW1pTWFqb3JBeGlzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zZW1pTWlub3JBeGlzPXZvaWQgMCx0aGlzLl9zZW1pTWlub3JBeGlzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHQ9dm9pZCAwLHRoaXMuX2hlaWdodFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9yb3RhdGlvbj12b2lkIDAsdGhpcy5fcm90YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lcz12b2lkIDAsdGhpcy5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFkb3dzPXZvaWQgMCx0aGlzLl9zaGFkb3dzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xhc3NpZmljYXRpb25UeXBlPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3pJbmRleD12b2lkIDAsdGhpcy5fekluZGV4U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBiaixGaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZl8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLHNlbWlNYWpvckF4aXM6cnQoInNlbWlNYWpvckF4aXMiKSxzZW1pTWlub3JBeGlzOnJ0KCJzZW1pTWlub3JBeGlzIiksaGVpZ2h0OnJ0KCJoZWlnaHQiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGV4dHJ1ZGVkSGVpZ2h0OnJ0KCJleHRydWRlZEhlaWdodCIpLGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlOnJ0KCJleHRydWRlZEhlaWdodFJlZmVyZW5jZSIpLHJvdGF0aW9uOnJ0KCJyb3RhdGlvbiIpLHN0Um90YXRpb246cnQoInN0Um90YXRpb24iKSxncmFudWxhcml0eTpydCgiZ3JhbnVsYXJpdHkiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxudW1iZXJPZlZlcnRpY2FsTGluZXM6cnQoIm51bWJlck9mVmVydGljYWxMaW5lcyIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGNsYXNzaWZpY2F0aW9uVHlwZTpydCgiY2xhc3NpZmljYXRpb25UeXBlIiksekluZGV4OnJ0KCJ6SW5kZXgiKX0pO2ZfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnNlbWlNYWpvckF4aXM9dGhpcy5zZW1pTWFqb3JBeGlzLHQuc2VtaU1pbm9yQXhpcz10aGlzLnNlbWlNaW5vckF4aXMsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LnJvdGF0aW9uPXRoaXMucm90YXRpb24sdC5zdFJvdGF0aW9uPXRoaXMuc3RSb3RhdGlvbix0LmdyYW51bGFyaXR5PXRoaXMuZ3JhbnVsYXJpdHksdC5maWxsPXRoaXMuZmlsbCx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5vdXRsaW5lPXRoaXMub3V0bGluZSx0Lm91dGxpbmVDb2xvcj10aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVXaWR0aD10aGlzLm91dGxpbmVXaWR0aCx0Lm51bWJlck9mVmVydGljYWxMaW5lcz10aGlzLm51bWJlck9mVmVydGljYWxMaW5lcyx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuY2xhc3NpZmljYXRpb25UeXBlPXRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuekluZGV4PXRoaXMuekluZGV4LHQpOm5ldyBmXyh0aGlzKX07Zl8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5zZW1pTWFqb3JBeGlzPVoodGhpcy5zZW1pTWFqb3JBeGlzLHQuc2VtaU1ham9yQXhpcyksdGhpcy5zZW1pTWlub3JBeGlzPVoodGhpcy5zZW1pTWlub3JBeGlzLHQuc2VtaU1pbm9yQXhpcyksdGhpcy5oZWlnaHQ9Wih0aGlzLmhlaWdodCx0LmhlaWdodCksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5leHRydWRlZEhlaWdodD1aKHRoaXMuZXh0cnVkZWRIZWlnaHQsdC5leHRydWRlZEhlaWdodCksdGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZT1aKHRoaXMuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodFJlZmVyZW5jZSksdGhpcy5yb3RhdGlvbj1aKHRoaXMucm90YXRpb24sdC5yb3RhdGlvbiksdGhpcy5zdFJvdGF0aW9uPVoodGhpcy5zdFJvdGF0aW9uLHQuc3RSb3RhdGlvbiksdGhpcy5ncmFudWxhcml0eT1aKHRoaXMuZ3JhbnVsYXJpdHksdC5ncmFudWxhcml0eSksdGhpcy5maWxsPVoodGhpcy5maWxsLHQuZmlsbCksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5vdXRsaW5lPVoodGhpcy5vdXRsaW5lLHQub3V0bGluZSksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5udW1iZXJPZlZlcnRpY2FsTGluZXM9Wih0aGlzLm51bWJlck9mVmVydGljYWxMaW5lcyx0Lm51bWJlck9mVmVydGljYWxMaW5lcyksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LmNsYXNzaWZpY2F0aW9uVHlwZSksdGhpcy56SW5kZXg9Wih0aGlzLnpJbmRleCx0LnpJbmRleCl9O2JqPWZffSk7ZnVuY3Rpb24gRV8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3JhZGlpPXZvaWQgMCx0aGlzLl9yYWRpaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW5uZXJSYWRpaT12b2lkIDAsdGhpcy5faW5uZXJSYWRpaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWluaW11bUNsb2NrPXZvaWQgMCx0aGlzLl9taW5pbXVtQ2xvY2tTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21heGltdW1DbG9jaz12b2lkIDAsdGhpcy5fbWF4aW11bUNsb2NrU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9taW5pbXVtQ29uZT12b2lkIDAsdGhpcy5fbWluaW11bUNvbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21heGltdW1Db25lPXZvaWQgMCx0aGlzLl9tYXhpbXVtQ29uZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2ZpbGw9dm9pZCAwLHRoaXMuX2ZpbGxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZT12b2lkIDAsdGhpcy5fb3V0bGluZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aD12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zdGFja1BhcnRpdGlvbnM9dm9pZCAwLHRoaXMuX3N0YWNrUGFydGl0aW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2xpY2VQYXJ0aXRpb25zPXZvaWQgMCx0aGlzLl9zbGljZVBhcnRpdGlvbnNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3N1YmRpdmlzaW9ucz12b2lkIDAsdGhpcy5fc3ViZGl2aXNpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFkb3dzPXZvaWQgMCx0aGlzLl9zaGFkb3dzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgWWosU2o9TygoKT0+e2J0KCk7bXQoKTtWdCgpO3hpKCk7dXIoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEVfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSxyYWRpaTpydCgicmFkaWkiKSxpbm5lclJhZGlpOnJ0KCJpbm5lclJhZGlpIiksbWluaW11bUNsb2NrOnJ0KCJtaW5pbXVtQ2xvY2siKSxtYXhpbXVtQ2xvY2s6cnQoIm1heGltdW1DbG9jayIpLG1pbmltdW1Db25lOnJ0KCJtaW5pbXVtQ29uZSIpLG1heGltdW1Db25lOnJ0KCJtYXhpbXVtQ29uZSIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZmlsbDpydCgiZmlsbCIpLG1hdGVyaWFsOnduKCJtYXRlcmlhbCIpLG91dGxpbmU6cnQoIm91dGxpbmUiKSxvdXRsaW5lQ29sb3I6cnQoIm91dGxpbmVDb2xvciIpLG91dGxpbmVXaWR0aDpydCgib3V0bGluZVdpZHRoIiksc3RhY2tQYXJ0aXRpb25zOnJ0KCJzdGFja1BhcnRpdGlvbnMiKSxzbGljZVBhcnRpdGlvbnM6cnQoInNsaWNlUGFydGl0aW9ucyIpLHN1YmRpdmlzaW9uczpydCgic3ViZGl2aXNpb25zIiksc2hhZG93czpydCgic2hhZG93cyIpLGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjpydCgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIil9KTtFXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5yYWRpaT10aGlzLnJhZGlpLHQuaW5uZXJSYWRpaT10aGlzLmlubmVyUmFkaWksdC5taW5pbXVtQ2xvY2s9dGhpcy5taW5pbXVtQ2xvY2ssdC5tYXhpbXVtQ2xvY2s9dGhpcy5tYXhpbXVtQ2xvY2ssdC5taW5pbXVtQ29uZT10aGlzLm1pbmltdW1Db25lLHQubWF4aW11bUNvbmU9dGhpcy5tYXhpbXVtQ29uZSx0LmhlaWdodFJlZmVyZW5jZT10aGlzLmhlaWdodFJlZmVyZW5jZSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc3RhY2tQYXJ0aXRpb25zPXRoaXMuc3RhY2tQYXJ0aXRpb25zLHQuc2xpY2VQYXJ0aXRpb25zPXRoaXMuc2xpY2VQYXJ0aXRpb25zLHQuc3ViZGl2aXNpb25zPXRoaXMuc3ViZGl2aXNpb25zLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdCk6bmV3IEVfKHRoaXMpfTtFXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnJhZGlpPVoodGhpcy5yYWRpaSx0LnJhZGlpKSx0aGlzLmlubmVyUmFkaWk9Wih0aGlzLmlubmVyUmFkaWksdC5pbm5lclJhZGlpKSx0aGlzLm1pbmltdW1DbG9jaz1aKHRoaXMubWluaW11bUNsb2NrLHQubWluaW11bUNsb2NrKSx0aGlzLm1heGltdW1DbG9jaz1aKHRoaXMubWF4aW11bUNsb2NrLHQubWF4aW11bUNsb2NrKSx0aGlzLm1pbmltdW1Db25lPVoodGhpcy5taW5pbXVtQ29uZSx0Lm1pbmltdW1Db25lKSx0aGlzLm1heGltdW1Db25lPVoodGhpcy5tYXhpbXVtQ29uZSx0Lm1heGltdW1Db25lKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnN0YWNrUGFydGl0aW9ucz1aKHRoaXMuc3RhY2tQYXJ0aXRpb25zLHQuc3RhY2tQYXJ0aXRpb25zKSx0aGlzLnNsaWNlUGFydGl0aW9ucz1aKHRoaXMuc2xpY2VQYXJ0aXRpb25zLHQuc2xpY2VQYXJ0aXRpb25zKSx0aGlzLnN1YmRpdmlzaW9ucz1aKHRoaXMuc3ViZGl2aXNpb25zLHQuc3ViZGl2aXNpb25zKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKX07WWo9RV99KTtmdW5jdGlvbiBfXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdGV4dD12b2lkIDAsdGhpcy5fdGV4dFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZm9udD12b2lkIDAsdGhpcy5fZm9udFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc3R5bGU9dm9pZCAwLHRoaXMuX3N0eWxlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fc2NhbGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Nob3dCYWNrZ3JvdW5kPXZvaWQgMCx0aGlzLl9zaG93QmFja2dyb3VuZFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fYmFja2dyb3VuZENvbG9yPXZvaWQgMCx0aGlzLl9iYWNrZ3JvdW5kQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2JhY2tncm91bmRQYWRkaW5nPXZvaWQgMCx0aGlzLl9iYWNrZ3JvdW5kUGFkZGluZ1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxPZmZzZXQ9dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leWVPZmZzZXQ9dm9pZCAwLHRoaXMuX2V5ZU9mZnNldFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faG9yaXpvbnRhbE9yaWdpbj12b2lkIDAsdGhpcy5faG9yaXpvbnRhbE9yaWdpblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdmVydGljYWxPcmlnaW49dm9pZCAwLHRoaXMuX3ZlcnRpY2FsT3JpZ2luU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbENvbG9yPXZvaWQgMCx0aGlzLl9maWxsQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3NjYWxlQnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZT12b2lkIDAsdGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBPaixWaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKF9fLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSx0ZXh0OnJ0KCJ0ZXh0IiksZm9udDpydCgiZm9udCIpLHN0eWxlOnJ0KCJzdHlsZSIpLHNjYWxlOnJ0KCJzY2FsZSIpLHNob3dCYWNrZ3JvdW5kOnJ0KCJzaG93QmFja2dyb3VuZCIpLGJhY2tncm91bmRDb2xvcjpydCgiYmFja2dyb3VuZENvbG9yIiksYmFja2dyb3VuZFBhZGRpbmc6cnQoImJhY2tncm91bmRQYWRkaW5nIikscGl4ZWxPZmZzZXQ6cnQoInBpeGVsT2Zmc2V0IiksZXllT2Zmc2V0OnJ0KCJleWVPZmZzZXQiKSxob3Jpem9udGFsT3JpZ2luOnJ0KCJob3Jpem9udGFsT3JpZ2luIiksdmVydGljYWxPcmlnaW46cnQoInZlcnRpY2FsT3JpZ2luIiksaGVpZ2h0UmVmZXJlbmNlOnJ0KCJoZWlnaHRSZWZlcmVuY2UiKSxmaWxsQ29sb3I6cnQoImZpbGxDb2xvciIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSx0cmFuc2x1Y2VuY3lCeURpc3RhbmNlOnJ0KCJ0cmFuc2x1Y2VuY3lCeURpc3RhbmNlIikscGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U6cnQoInBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlIiksc2NhbGVCeURpc3RhbmNlOnJ0KCJzY2FsZUJ5RGlzdGFuY2UiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTpydCgiZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIil9KTtfXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC50ZXh0PXRoaXMudGV4dCx0LmZvbnQ9dGhpcy5mb250LHQuc3R5bGU9dGhpcy5zdHlsZSx0LnNjYWxlPXRoaXMuc2NhbGUsdC5zaG93QmFja2dyb3VuZD10aGlzLnNob3dCYWNrZ3JvdW5kLHQuYmFja2dyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yLHQuYmFja2dyb3VuZFBhZGRpbmc9dGhpcy5iYWNrZ3JvdW5kUGFkZGluZyx0LnBpeGVsT2Zmc2V0PXRoaXMucGl4ZWxPZmZzZXQsdC5leWVPZmZzZXQ9dGhpcy5leWVPZmZzZXQsdC5ob3Jpem9udGFsT3JpZ2luPXRoaXMuaG9yaXpvbnRhbE9yaWdpbix0LnZlcnRpY2FsT3JpZ2luPXRoaXMudmVydGljYWxPcmlnaW4sdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5maWxsQ29sb3I9dGhpcy5maWxsQ29sb3IsdC5vdXRsaW5lQ29sb3I9dGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lV2lkdGg9dGhpcy5vdXRsaW5lV2lkdGgsdC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlPXRoaXMudHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0LnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPXRoaXMucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UsdC5zY2FsZUJ5RGlzdGFuY2U9dGhpcy5zY2FsZUJ5RGlzdGFuY2UsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dGhpcy5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsdCk6bmV3IF9fKHRoaXMpfTtfXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnRleHQ9Wih0aGlzLnRleHQsdC50ZXh0KSx0aGlzLmZvbnQ9Wih0aGlzLmZvbnQsdC5mb250KSx0aGlzLnN0eWxlPVoodGhpcy5zdHlsZSx0LnN0eWxlKSx0aGlzLnNjYWxlPVoodGhpcy5zY2FsZSx0LnNjYWxlKSx0aGlzLnNob3dCYWNrZ3JvdW5kPVoodGhpcy5zaG93QmFja2dyb3VuZCx0LnNob3dCYWNrZ3JvdW5kKSx0aGlzLmJhY2tncm91bmRDb2xvcj1aKHRoaXMuYmFja2dyb3VuZENvbG9yLHQuYmFja2dyb3VuZENvbG9yKSx0aGlzLmJhY2tncm91bmRQYWRkaW5nPVoodGhpcy5iYWNrZ3JvdW5kUGFkZGluZyx0LmJhY2tncm91bmRQYWRkaW5nKSx0aGlzLnBpeGVsT2Zmc2V0PVoodGhpcy5waXhlbE9mZnNldCx0LnBpeGVsT2Zmc2V0KSx0aGlzLmV5ZU9mZnNldD1aKHRoaXMuZXllT2Zmc2V0LHQuZXllT2Zmc2V0KSx0aGlzLmhvcml6b250YWxPcmlnaW49Wih0aGlzLmhvcml6b250YWxPcmlnaW4sdC5ob3Jpem9udGFsT3JpZ2luKSx0aGlzLnZlcnRpY2FsT3JpZ2luPVoodGhpcy52ZXJ0aWNhbE9yaWdpbix0LnZlcnRpY2FsT3JpZ2luKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmZpbGxDb2xvcj1aKHRoaXMuZmlsbENvbG9yLHQuZmlsbENvbG9yKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9Wih0aGlzLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSx0aGlzLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPVoodGhpcy5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSx0LnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlKSx0aGlzLnNjYWxlQnlEaXN0YW5jZT1aKHRoaXMuc2NhbGVCeURpc3RhbmNlLHQuc2NhbGVCeURpc3RhbmNlKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZT1aKHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLHQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlKX07T2o9X199KTtmdW5jdGlvbiBHaih0LGUsaSl7dGhpcy50cmFuc2xhdGlvbj1sLmNsb25lKFoodCxmYXQpKSx0aGlzLnJvdGF0aW9uPUFlLmNsb25lKFooZSxFYXQpKSx0aGlzLnNjYWxlPWwuY2xvbmUoWihpLG1hdCkpfXZhciBtYXQsZmF0LEVhdCxwYixCaj1PKCgpPT57SHQoKTtidCgpO210KCk7JHMoKTttYXQ9bmV3IGwoMSwxLDEpLGZhdD1sLlpFUk8sRWF0PUFlLklERU5USVRZO0dqLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHxtKHQpJiZsLmVxdWFscyh0aGlzLnRyYW5zbGF0aW9uLHQudHJhbnNsYXRpb24pJiZBZS5lcXVhbHModGhpcy5yb3RhdGlvbix0LnJvdGF0aW9uKSYmbC5lcXVhbHModGhpcy5zY2FsZSx0LnNjYWxlKX07cGI9R2p9KTtmdW5jdGlvbiBSXyh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3RyYW5zbGF0aW9uPXZvaWQgMCx0aGlzLl90cmFuc2xhdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcm90YXRpb249dm9pZCAwLHRoaXMuX3JvdGF0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fc2NhbGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMudHJhbnNsYXRpb249dC50cmFuc2xhdGlvbix0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zY2FsZT10LnNjYWxlfXZhciB1YixXaixEaj1PKCgpPT57YnQoKTttdCgpO3hpKCk7QmooKTt5bigpO0hsKCk7dWI9bmV3IHBiO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJfLnByb3RvdHlwZSx7aXNDb25zdGFudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9pLmlzQ29uc3RhbnQodGhpcy5fdHJhbnNsYXRpb24pJiZPaS5pc0NvbnN0YW50KHRoaXMuX3JvdGF0aW9uKSYmT2kuaXNDb25zdGFudCh0aGlzLl9zY2FsZSl9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sdHJhbnNsYXRpb246cnQoInRyYW5zbGF0aW9uIikscm90YXRpb246cnQoInJvdGF0aW9uIiksc2NhbGU6cnQoInNjYWxlIil9KTtSXy5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbShlKXx8KGU9bmV3IHBiKSxlLnRyYW5zbGF0aW9uPU9pLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0KHRoaXMuX3RyYW5zbGF0aW9uLHQsdWIudHJhbnNsYXRpb24sZS50cmFuc2xhdGlvbiksZS5yb3RhdGlvbj1PaS5nZXRWYWx1ZU9yQ2xvbmVkRGVmYXVsdCh0aGlzLl9yb3RhdGlvbix0LHViLnJvdGF0aW9uLGUucm90YXRpb24pLGUuc2NhbGU9T2kuZ2V0VmFsdWVPckNsb25lZERlZmF1bHQodGhpcy5fc2NhbGUsdCx1Yi5zY2FsZSxlLnNjYWxlKSxlfTtSXy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIFJfJiZPaS5lcXVhbHModGhpcy5fdHJhbnNsYXRpb24sdC5fdHJhbnNsYXRpb24pJiZPaS5lcXVhbHModGhpcy5fcm90YXRpb24sdC5fcm90YXRpb24pJiZPaS5lcXVhbHModGhpcy5fc2NhbGUsdC5fc2NhbGUpfTtXaj1SX30pO2Z1bmN0aW9uIGdoKHQsZSl7dGhpcy5fcHJvcGVydHlOYW1lcz1bXSx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsbSh0KSYmdGhpcy5tZXJnZSh0LGUpfWZ1bmN0aW9uIF9hdCh0KXtyZXR1cm4gbmV3IENoKHQpfWZ1bmN0aW9uIFJhdCh0LGUpe2xldCBpPXQuX3Byb3BlcnR5TmFtZXMsbj1lLl9wcm9wZXJ0eU5hbWVzLHM9aS5sZW5ndGg7aWYocyE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbz0wO288czsrK28pe2xldCByPWlbb107aWYobi5pbmRleE9mKHIpPT09LTF8fCFPaS5lcXVhbHModFtyXSxlW3JdKSlyZXR1cm4hMX1yZXR1cm4hMH12YXIgemwsQ2I9TygoKT0+e2J0KCk7bXQoKTtWdCgpO3hpKCk7aF8oKTt5bigpO0hsKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZ2gucHJvdG90eXBlLHtwcm9wZXJ0eU5hbWVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydHlOYW1lc319LGlzQ29uc3RhbnQ6e2dldDpmdW5jdGlvbigpe2xldCB0PXRoaXMuX3Byb3BlcnR5TmFtZXM7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKWlmKCFPaS5pc0NvbnN0YW50KHRoaXNbdFtlXV0pKXJldHVybiExO3JldHVybiEwfX0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19fSk7Z2gucHJvdG90eXBlLmhhc1Byb3BlcnR5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wcm9wZXJ0eU5hbWVzLmluZGV4T2YodCkhPT0tMX07Z2gucHJvdG90eXBlLmFkZFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10aGlzLl9wcm9wZXJ0eU5hbWVzO2lmKCFtKHQpKXRocm93IG5ldyBZKCJwcm9wZXJ0eU5hbWUgaXMgcmVxdWlyZWQuIik7aWYobi5pbmRleE9mKHQpIT09LTEpdGhyb3cgbmV3IFkoYCR7dH0gaXMgYWxyZWFkeSBhIHJlZ2lzdGVyZWQgcHJvcGVydHkuYCk7bi5wdXNoKHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQscnQodCwhMCxaKGksX2F0KSkpLG0oZSkmJih0aGlzW3RdPWUpLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O2doLnByb3RvdHlwZS5yZW1vdmVQcm9wZXJ0eT1mdW5jdGlvbih0KXtsZXQgaT10aGlzLl9wcm9wZXJ0eU5hbWVzLmluZGV4T2YodCk7aWYoIW0odCkpdGhyb3cgbmV3IFkoInByb3BlcnR5TmFtZSBpcyByZXF1aXJlZC4iKTtpZihpPT09LTEpdGhyb3cgbmV3IFkoYCR7dH0gaXMgbm90IGEgcmVnaXN0ZXJlZCBwcm9wZXJ0eS5gKTt0aGlzLl9wcm9wZXJ0eU5hbWVzLnNwbGljZShpLDEpLGRlbGV0ZSB0aGlzW3RdLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O2doLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aW1lIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPXt9KTtsZXQgaT10aGlzLl9wcm9wZXJ0eU5hbWVzO2ZvcihsZXQgbj0wLHM9aS5sZW5ndGg7bjxzO24rKyl7bGV0IG89aVtuXTtlW29dPU9pLmdldFZhbHVlT3JVbmRlZmluZWQodGhpc1tvXSx0LGVbb10pfXJldHVybiBlfTtnaC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX3Byb3BlcnR5TmFtZXMsbj1tKHQuX3Byb3BlcnR5TmFtZXMpP3QuX3Byb3BlcnR5TmFtZXM6T2JqZWN0LmtleXModCk7Zm9yKGxldCBzPTAsbz1uLmxlbmd0aDtzPG87cysrKXtsZXQgcj1uW3NdLGE9dGhpc1tyXSxoPXRbcl07YT09PXZvaWQgMCYmaS5pbmRleE9mKHIpPT09LTEmJnRoaXMuYWRkUHJvcGVydHkocix2b2lkIDAsZSksaCE9PXZvaWQgMCYmKGEhPT12b2lkIDA/bShhKSYmbShhLm1lcmdlKSYmYS5tZXJnZShoKTptKGgpJiZtKGgubWVyZ2UpJiZtKGguY2xvbmUpP3RoaXNbcl09aC5jbG9uZSgpOnRoaXNbcl09aCl9fTtnaC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIGdoJiZSYXQodGhpcyx0KX07emw9Z2h9KTtmdW5jdGlvbiBNaih0KXtyZXR1cm4gbmV3IFdqKHQpfWZ1bmN0aW9uIFphdCh0KXtyZXR1cm4gbmV3IHpsKHQsTWopfWZ1bmN0aW9uIElhdCh0KXtyZXR1cm4gbmV3IHpsKHQpfWZ1bmN0aW9uIFpfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl91cmk9dm9pZCAwLHRoaXMuX3VyaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2NhbGU9dm9pZCAwLHRoaXMuX3NjYWxlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9taW5pbXVtUGl4ZWxTaXplPXZvaWQgMCx0aGlzLl9taW5pbXVtUGl4ZWxTaXplU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9tYXhpbXVtU2NhbGU9dm9pZCAwLHRoaXMuX21heGltdW1TY2FsZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW5jcmVtZW50YWxseUxvYWRUZXh0dXJlcz12b2lkIDAsdGhpcy5faW5jcmVtZW50YWxseUxvYWRUZXh0dXJlc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcnVuQW5pbWF0aW9ucz12b2lkIDAsdGhpcy5fcnVuQW5pbWF0aW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xhbXBBbmltYXRpb25zPXZvaWQgMCx0aGlzLl9jbGFtcEFuaW1hdGlvbnNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaWxob3VldHRlQ29sb3I9dm9pZCAwLHRoaXMuX3NpbGhvdWV0dGVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2lsaG91ZXR0ZVNpemU9dm9pZCAwLHRoaXMuX3NpbGhvdWV0dGVTaXplU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jb2xvcj12b2lkIDAsdGhpcy5fY29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NvbG9yQmxlbmRNb2RlPXZvaWQgMCx0aGlzLl9jb2xvckJsZW5kTW9kZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY29sb3JCbGVuZEFtb3VudD12b2lkIDAsdGhpcy5fY29sb3JCbGVuZEFtb3VudFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yPXZvaWQgMCx0aGlzLl9pbWFnZUJhc2VkTGlnaHRpbmdGYWN0b3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2xpZ2h0Q29sb3I9dm9pZCAwLHRoaXMuX2xpZ2h0Q29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ub2RlVHJhbnNmb3JtYXRpb25zPXZvaWQgMCx0aGlzLl9ub2RlVHJhbnNmb3JtYXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9hcnRpY3VsYXRpb25zPXZvaWQgMCx0aGlzLl9hcnRpY3VsYXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGlwcGluZ1BsYW5lcz12b2lkIDAsdGhpcy5fY2xpcHBpbmdQbGFuZXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2N1c3RvbVNoYWRlcj12b2lkIDAsdGhpcy5fY3VzdG9tU2hhZGVyU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBVaixRaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt5bigpO0RqKCk7Q2IoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhaXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IiksdXJpOnJ0KCJ1cmkiKSxzY2FsZTpydCgic2NhbGUiKSxtaW5pbXVtUGl4ZWxTaXplOnJ0KCJtaW5pbXVtUGl4ZWxTaXplIiksbWF4aW11bVNjYWxlOnJ0KCJtYXhpbXVtU2NhbGUiKSxpbmNyZW1lbnRhbGx5TG9hZFRleHR1cmVzOnJ0KCJpbmNyZW1lbnRhbGx5TG9hZFRleHR1cmVzIikscnVuQW5pbWF0aW9uczpydCgicnVuQW5pbWF0aW9ucyIpLGNsYW1wQW5pbWF0aW9uczpydCgiY2xhbXBBbmltYXRpb25zIiksc2hhZG93czpydCgic2hhZG93cyIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksc2lsaG91ZXR0ZUNvbG9yOnJ0KCJzaWxob3VldHRlQ29sb3IiKSxzaWxob3VldHRlU2l6ZTpydCgic2lsaG91ZXR0ZVNpemUiKSxjb2xvcjpydCgiY29sb3IiKSxjb2xvckJsZW5kTW9kZTpydCgiY29sb3JCbGVuZE1vZGUiKSxjb2xvckJsZW5kQW1vdW50OnJ0KCJjb2xvckJsZW5kQW1vdW50IiksaW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yOnJ0KCJpbWFnZUJhc2VkTGlnaHRpbmdGYWN0b3IiKSxsaWdodENvbG9yOnJ0KCJsaWdodENvbG9yIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKSxub2RlVHJhbnNmb3JtYXRpb25zOnJ0KCJub2RlVHJhbnNmb3JtYXRpb25zIix2b2lkIDAsWmF0KSxhcnRpY3VsYXRpb25zOnJ0KCJhcnRpY3VsYXRpb25zIix2b2lkIDAsSWF0KSxjbGlwcGluZ1BsYW5lczpydCgiY2xpcHBpbmdQbGFuZXMiKSxjdXN0b21TaGFkZXI6cnQoImN1c3RvbVNoYWRlciIpfSk7Wl8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQudXJpPXRoaXMudXJpLHQuc2NhbGU9dGhpcy5zY2FsZSx0Lm1pbmltdW1QaXhlbFNpemU9dGhpcy5taW5pbXVtUGl4ZWxTaXplLHQubWF4aW11bVNjYWxlPXRoaXMubWF4aW11bVNjYWxlLHQuaW5jcmVtZW50YWxseUxvYWRUZXh0dXJlcz10aGlzLmluY3JlbWVudGFsbHlMb2FkVGV4dHVyZXMsdC5ydW5BbmltYXRpb25zPXRoaXMucnVuQW5pbWF0aW9ucyx0LmNsYW1wQW5pbWF0aW9ucz10aGlzLmNsYW1wQW5pbWF0aW9ucyx0LmhlaWdodFJlZmVyZW5jZT10aGlzLl9oZWlnaHRSZWZlcmVuY2UsdC5zaWxob3VldHRlQ29sb3I9dGhpcy5zaWxob3VldHRlQ29sb3IsdC5zaWxob3VldHRlU2l6ZT10aGlzLnNpbGhvdWV0dGVTaXplLHQuY29sb3I9dGhpcy5jb2xvcix0LmNvbG9yQmxlbmRNb2RlPXRoaXMuY29sb3JCbGVuZE1vZGUsdC5jb2xvckJsZW5kQW1vdW50PXRoaXMuY29sb3JCbGVuZEFtb3VudCx0LmltYWdlQmFzZWRMaWdodGluZ0ZhY3Rvcj10aGlzLmltYWdlQmFzZWRMaWdodGluZ0ZhY3Rvcix0LmxpZ2h0Q29sb3I9dGhpcy5saWdodENvbG9yLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQubm9kZVRyYW5zZm9ybWF0aW9ucz10aGlzLm5vZGVUcmFuc2Zvcm1hdGlvbnMsdC5hcnRpY3VsYXRpb25zPXRoaXMuYXJ0aWN1bGF0aW9ucyx0LmNsaXBwaW5nUGxhbmVzPXRoaXMuY2xpcHBpbmdQbGFuZXMsdC5jdXN0b21TaGFkZXI9dGhpcy5jdXN0b21TaGFkZXIsdCk6bmV3IFpfKHRoaXMpfTtaXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnVyaT1aKHRoaXMudXJpLHQudXJpKSx0aGlzLnNjYWxlPVoodGhpcy5zY2FsZSx0LnNjYWxlKSx0aGlzLm1pbmltdW1QaXhlbFNpemU9Wih0aGlzLm1pbmltdW1QaXhlbFNpemUsdC5taW5pbXVtUGl4ZWxTaXplKSx0aGlzLm1heGltdW1TY2FsZT1aKHRoaXMubWF4aW11bVNjYWxlLHQubWF4aW11bVNjYWxlKSx0aGlzLmluY3JlbWVudGFsbHlMb2FkVGV4dHVyZXM9Wih0aGlzLmluY3JlbWVudGFsbHlMb2FkVGV4dHVyZXMsdC5pbmNyZW1lbnRhbGx5TG9hZFRleHR1cmVzKSx0aGlzLnJ1bkFuaW1hdGlvbnM9Wih0aGlzLnJ1bkFuaW1hdGlvbnMsdC5ydW5BbmltYXRpb25zKSx0aGlzLmNsYW1wQW5pbWF0aW9ucz1aKHRoaXMuY2xhbXBBbmltYXRpb25zLHQuY2xhbXBBbmltYXRpb25zKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLnNpbGhvdWV0dGVDb2xvcj1aKHRoaXMuc2lsaG91ZXR0ZUNvbG9yLHQuc2lsaG91ZXR0ZUNvbG9yKSx0aGlzLnNpbGhvdWV0dGVTaXplPVoodGhpcy5zaWxob3VldHRlU2l6ZSx0LnNpbGhvdWV0dGVTaXplKSx0aGlzLmNvbG9yPVoodGhpcy5jb2xvcix0LmNvbG9yKSx0aGlzLmNvbG9yQmxlbmRNb2RlPVoodGhpcy5jb2xvckJsZW5kTW9kZSx0LmNvbG9yQmxlbmRNb2RlKSx0aGlzLmNvbG9yQmxlbmRBbW91bnQ9Wih0aGlzLmNvbG9yQmxlbmRBbW91bnQsdC5jb2xvckJsZW5kQW1vdW50KSx0aGlzLmltYWdlQmFzZWRMaWdodGluZ0ZhY3Rvcj1aKHRoaXMuaW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yLHQuaW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yKSx0aGlzLmxpZ2h0Q29sb3I9Wih0aGlzLmxpZ2h0Q29sb3IsdC5saWdodENvbG9yKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmNsaXBwaW5nUGxhbmVzPVoodGhpcy5jbGlwcGluZ1BsYW5lcyx0LmNsaXBwaW5nUGxhbmVzKSx0aGlzLmN1c3RvbVNoYWRlcj1aKHRoaXMuY3VzdG9tU2hhZGVyLHQuY3VzdG9tU2hhZGVyKTtsZXQgZT10Lm5vZGVUcmFuc2Zvcm1hdGlvbnM7aWYobShlKSl7bGV0IG49dGhpcy5ub2RlVHJhbnNmb3JtYXRpb25zO20obik/bi5tZXJnZShlKTp0aGlzLm5vZGVUcmFuc2Zvcm1hdGlvbnM9bmV3IHpsKGUsTWopfWxldCBpPXQuYXJ0aWN1bGF0aW9ucztpZihtKGkpKXtsZXQgbj10aGlzLmFydGljdWxhdGlvbnM7bShuKT9uLm1lcmdlKGkpOnRoaXMuYXJ0aWN1bGF0aW9ucz1uZXcgemwoaSl9fTtVaj1aX30pO2Z1bmN0aW9uIElfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl91cmk9dm9pZCAwLHRoaXMuX3VyaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF4aW11bVNjcmVlblNwYWNlRXJyb3I9dm9pZCAwLHRoaXMuX21heGltdW1TY3JlZW5TcGFjZUVycm9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBraixMaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKElfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSx1cmk6cnQoInVyaSIpLG1heGltdW1TY3JlZW5TcGFjZUVycm9yOnJ0KCJtYXhpbXVtU2NyZWVuU3BhY2VFcnJvciIpfSk7SV8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQudXJpPXRoaXMudXJpLHQubWF4aW11bVNjcmVlblNwYWNlRXJyb3I9dGhpcy5tYXhpbXVtU2NyZWVuU3BhY2VFcnJvcix0KTpuZXcgSV8odGhpcyl9O0lfLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMudXJpPVoodGhpcy51cmksdC51cmkpLHRoaXMubWF4aW11bVNjcmVlblNwYWNlRXJyb3I9Wih0aGlzLm1heGltdW1TY3JlZW5TcGFjZUVycm9yLHQubWF4aW11bVNjcmVlblNwYWNlRXJyb3IpfTtraj1JX30pO2Z1bmN0aW9uIHBfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9sZWFkVGltZT12b2lkIDAsdGhpcy5fbGVhZFRpbWVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RyYWlsVGltZT12b2lkIDAsdGhpcy5fdHJhaWxUaW1lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5fd2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Jlc29sdXRpb249dm9pZCAwLHRoaXMuX3Jlc29sdXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIHlqLHdqPU8oKCk9PntidCgpO210KCk7VnQoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IiksbGVhZFRpbWU6cnQoImxlYWRUaW1lIiksdHJhaWxUaW1lOnJ0KCJ0cmFpbFRpbWUiKSx3aWR0aDpydCgid2lkdGgiKSxyZXNvbHV0aW9uOnJ0KCJyZXNvbHV0aW9uIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKX0pO3BfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LmxlYWRUaW1lPXRoaXMubGVhZFRpbWUsdC50cmFpbFRpbWU9dGhpcy50cmFpbFRpbWUsdC53aWR0aD10aGlzLndpZHRoLHQucmVzb2x1dGlvbj10aGlzLnJlc29sdXRpb24sdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQpOm5ldyBwXyh0aGlzKX07cF8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5sZWFkVGltZT1aKHRoaXMubGVhZFRpbWUsdC5sZWFkVGltZSksdGhpcy50cmFpbFRpbWU9Wih0aGlzLnRyYWlsVGltZSx0LnRyYWlsVGltZSksdGhpcy53aWR0aD1aKHRoaXMud2lkdGgsdC53aWR0aCksdGhpcy5yZXNvbHV0aW9uPVoodGhpcy5yZXNvbHV0aW9uLHQucmVzb2x1dGlvbiksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbil9O3lqPXBffSk7ZnVuY3Rpb24gdV8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BsYW5lPXZvaWQgMCx0aGlzLl9wbGFuZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGltZW5zaW9ucz12b2lkIDAsdGhpcy5fZGltZW5zaW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciB4aixQaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModV8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLHBsYW5lOnJ0KCJwbGFuZSIpLGRpbWVuc2lvbnM6cnQoImRpbWVuc2lvbnMiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxzaGFkb3dzOnJ0KCJzaGFkb3dzIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKX0pO3VfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnBsYW5lPXRoaXMucGxhbmUsdC5kaW1lbnNpb25zPXRoaXMuZGltZW5zaW9ucyx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdCk6bmV3IHVfKHRoaXMpfTt1Xy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnBsYW5lPVoodGhpcy5wbGFuZSx0LnBsYW5lKSx0aGlzLmRpbWVuc2lvbnM9Wih0aGlzLmRpbWVuc2lvbnMsdC5kaW1lbnNpb25zKSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKX07eGo9dV99KTtmdW5jdGlvbiBDXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxTaXplPXZvaWQgMCx0aGlzLl9waXhlbFNpemVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jb2xvcj12b2lkIDAsdGhpcy5fY29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2NhbGVCeURpc3RhbmNlPXZvaWQgMCx0aGlzLl9zY2FsZUJ5RGlzdGFuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dm9pZCAwLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgSmosamo9TygoKT0+e2J0KCk7bXQoKTtWdCgpO3hpKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscGl4ZWxTaXplOnJ0KCJwaXhlbFNpemUiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGNvbG9yOnJ0KCJjb2xvciIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxzY2FsZUJ5RGlzdGFuY2U6cnQoInNjYWxlQnlEaXN0YW5jZSIpLHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U6cnQoInRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTpydCgiZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIil9KTtDXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5waXhlbFNpemU9dGhpcy5waXhlbFNpemUsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5jb2xvcj10aGlzLmNvbG9yLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2NhbGVCeURpc3RhbmNlPXRoaXMuc2NhbGVCeURpc3RhbmNlLHQudHJhbnNsdWNlbmN5QnlEaXN0YW5jZT10aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLHQpOm5ldyBDXyh0aGlzKX07Q18ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5waXhlbFNpemU9Wih0aGlzLnBpeGVsU2l6ZSx0LnBpeGVsU2l6ZSksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5jb2xvcj1aKHRoaXMuY29sb3IsdC5jb2xvciksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5zY2FsZUJ5RGlzdGFuY2U9Wih0aGlzLnNjYWxlQnlEaXN0YW5jZSx0LnNjYWxlQnlEaXN0YW5jZSksdGhpcy50cmFuc2x1Y2VuY3lCeURpc3RhbmNlPVoodGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0LnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pLHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPVoodGhpcy5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsdC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UpfTtKaj1DX30pO2Z1bmN0aW9uIHBhdCh0LGUpe3RoaXMucG9zaXRpb25zPW0odCk/dDpbXSx0aGlzLmhvbGVzPW0oZSk/ZTpbXX12YXIgc2YsY3A9TygoKT0+e210KCk7c2Y9cGF0fSk7ZnVuY3Rpb24gdWF0KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgc2YodCkpLG5ldyBDaCh0KX1mdW5jdGlvbiBnXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGllcmFyY2h5PXZvaWQgMCx0aGlzLl9oaWVyYXJjaHlTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BlclBvc2l0aW9uSGVpZ2h0PXZvaWQgMCx0aGlzLl9wZXJQb3NpdGlvbkhlaWdodFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xvc2VUb3A9dm9pZCAwLHRoaXMuX2Nsb3NlVG9wU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbG9zZUJvdHRvbT12b2lkIDAsdGhpcy5fY2xvc2VCb3R0b21TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2FyY1R5cGU9dm9pZCAwLHRoaXMuX2FyY1R5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGU9dm9pZCAwLHRoaXMuX2NsYXNzaWZpY2F0aW9uVHlwZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fekluZGV4PXZvaWQgMCx0aGlzLl96SW5kZXhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlcz12b2lkIDAsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBIaix2aj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTtjcCgpO2hfKCk7dXIoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGdfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSxoaWVyYXJjaHk6cnQoImhpZXJhcmNoeSIsdm9pZCAwLHVhdCksaGVpZ2h0OnJ0KCJoZWlnaHQiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGV4dHJ1ZGVkSGVpZ2h0OnJ0KCJleHRydWRlZEhlaWdodCIpLGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlOnJ0KCJleHRydWRlZEhlaWdodFJlZmVyZW5jZSIpLHN0Um90YXRpb246cnQoInN0Um90YXRpb24iKSxncmFudWxhcml0eTpydCgiZ3JhbnVsYXJpdHkiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxwZXJQb3NpdGlvbkhlaWdodDpydCgicGVyUG9zaXRpb25IZWlnaHQiKSxjbG9zZVRvcDpydCgiY2xvc2VUb3AiKSxjbG9zZUJvdHRvbTpydCgiY2xvc2VCb3R0b20iKSxhcmNUeXBlOnJ0KCJhcmNUeXBlIiksc2hhZG93czpydCgic2hhZG93cyIpLGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjpydCgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIiksY2xhc3NpZmljYXRpb25UeXBlOnJ0KCJjbGFzc2lmaWNhdGlvblR5cGUiKSx6SW5kZXg6cnQoInpJbmRleCIpLHRleHR1cmVDb29yZGluYXRlczpydCgidGV4dHVyZUNvb3JkaW5hdGVzIil9KTtnXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5oaWVyYXJjaHk9dGhpcy5oaWVyYXJjaHksdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LnN0Um90YXRpb249dGhpcy5zdFJvdGF0aW9uLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQucGVyUG9zaXRpb25IZWlnaHQ9dGhpcy5wZXJQb3NpdGlvbkhlaWdodCx0LmNsb3NlVG9wPXRoaXMuY2xvc2VUb3AsdC5jbG9zZUJvdHRvbT10aGlzLmNsb3NlQm90dG9tLHQuYXJjVHlwZT10aGlzLmFyY1R5cGUsdC5zaGFkb3dzPXRoaXMuc2hhZG93cyx0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmNsYXNzaWZpY2F0aW9uVHlwZT10aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LnpJbmRleD10aGlzLnpJbmRleCx0LnRleHR1cmVDb29yZGluYXRlcz10aGlzLnRleHR1cmVDb29yZGluYXRlcyx0KTpuZXcgZ18odGhpcyl9O2dfLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMuaGllcmFyY2h5PVoodGhpcy5oaWVyYXJjaHksdC5oaWVyYXJjaHkpLHRoaXMuaGVpZ2h0PVoodGhpcy5oZWlnaHQsdC5oZWlnaHQpLHRoaXMuaGVpZ2h0UmVmZXJlbmNlPVoodGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5oZWlnaHRSZWZlcmVuY2UpLHRoaXMuZXh0cnVkZWRIZWlnaHQ9Wih0aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHQpLHRoaXMuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlLHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UpLHRoaXMuc3RSb3RhdGlvbj1aKHRoaXMuc3RSb3RhdGlvbix0LnN0Um90YXRpb24pLHRoaXMuZ3JhbnVsYXJpdHk9Wih0aGlzLmdyYW51bGFyaXR5LHQuZ3JhbnVsYXJpdHkpLHRoaXMuZmlsbD1aKHRoaXMuZmlsbCx0LmZpbGwpLHRoaXMubWF0ZXJpYWw9Wih0aGlzLm1hdGVyaWFsLHQubWF0ZXJpYWwpLHRoaXMub3V0bGluZT1aKHRoaXMub3V0bGluZSx0Lm91dGxpbmUpLHRoaXMub3V0bGluZUNvbG9yPVoodGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lQ29sb3IpLHRoaXMub3V0bGluZVdpZHRoPVoodGhpcy5vdXRsaW5lV2lkdGgsdC5vdXRsaW5lV2lkdGgpLHRoaXMucGVyUG9zaXRpb25IZWlnaHQ9Wih0aGlzLnBlclBvc2l0aW9uSGVpZ2h0LHQucGVyUG9zaXRpb25IZWlnaHQpLHRoaXMuY2xvc2VUb3A9Wih0aGlzLmNsb3NlVG9wLHQuY2xvc2VUb3ApLHRoaXMuY2xvc2VCb3R0b209Wih0aGlzLmNsb3NlQm90dG9tLHQuY2xvc2VCb3R0b20pLHRoaXMuYXJjVHlwZT1aKHRoaXMuYXJjVHlwZSx0LmFyY1R5cGUpLHRoaXMuc2hhZG93cz1aKHRoaXMuc2hhZG93cyx0LnNoYWRvd3MpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pLHRoaXMuY2xhc3NpZmljYXRpb25UeXBlPVoodGhpcy5jbGFzc2lmaWNhdGlvblR5cGUsdC5jbGFzc2lmaWNhdGlvblR5cGUpLHRoaXMuekluZGV4PVoodGhpcy56SW5kZXgsdC56SW5kZXgpLHRoaXMudGV4dHVyZUNvb3JkaW5hdGVzPVoodGhpcy50ZXh0dXJlQ29vcmRpbmF0ZXMsdC50ZXh0dXJlQ29vcmRpbmF0ZXMpfTtIaj1nX30pO2Z1bmN0aW9uIFRfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wb3NpdGlvbnM9dm9pZCAwLHRoaXMuX3Bvc2l0aW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fd2lkdGg9dm9pZCAwLHRoaXMuX3dpZHRoU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eT12b2lkIDAsdGhpcy5fZ3JhbnVsYXJpdHlTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGVwdGhGYWlsTWF0ZXJpYWw9dm9pZCAwLHRoaXMuX2RlcHRoRmFpbE1hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9hcmNUeXBlPXZvaWQgMCx0aGlzLl9hcmNUeXBlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGFtcFRvR3JvdW5kPXZvaWQgMCx0aGlzLl9jbGFtcFRvR3JvdW5kU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFkb3dzPXZvaWQgMCx0aGlzLl9zaGFkb3dzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xhc3NpZmljYXRpb25UeXBlPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3pJbmRleD12b2lkIDAsdGhpcy5fekluZGV4U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciB6aixLaj1PKCgpPT57YnQoKTttdCgpO1Z0KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVF8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLHBvc2l0aW9uczpydCgicG9zaXRpb25zIiksd2lkdGg6cnQoIndpZHRoIiksZ3JhbnVsYXJpdHk6cnQoImdyYW51bGFyaXR5IiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksZGVwdGhGYWlsTWF0ZXJpYWw6d24oImRlcHRoRmFpbE1hdGVyaWFsIiksYXJjVHlwZTpydCgiYXJjVHlwZSIpLGNsYW1wVG9Hcm91bmQ6cnQoImNsYW1wVG9Hcm91bmQiKSxzaGFkb3dzOnJ0KCJzaGFkb3dzIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKSxjbGFzc2lmaWNhdGlvblR5cGU6cnQoImNsYXNzaWZpY2F0aW9uVHlwZSIpLHpJbmRleDpydCgiekluZGV4Iil9KTtUXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5wb3NpdGlvbnM9dGhpcy5wb3NpdGlvbnMsdC53aWR0aD10aGlzLndpZHRoLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5kZXB0aEZhaWxNYXRlcmlhbD10aGlzLmRlcHRoRmFpbE1hdGVyaWFsLHQuYXJjVHlwZT10aGlzLmFyY1R5cGUsdC5jbGFtcFRvR3JvdW5kPXRoaXMuY2xhbXBUb0dyb3VuZCx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuY2xhc3NpZmljYXRpb25UeXBlPXRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuekluZGV4PXRoaXMuekluZGV4LHQpOm5ldyBUXyh0aGlzKX07VF8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5wb3NpdGlvbnM9Wih0aGlzLnBvc2l0aW9ucyx0LnBvc2l0aW9ucyksdGhpcy53aWR0aD1aKHRoaXMud2lkdGgsdC53aWR0aCksdGhpcy5ncmFudWxhcml0eT1aKHRoaXMuZ3JhbnVsYXJpdHksdC5ncmFudWxhcml0eSksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5kZXB0aEZhaWxNYXRlcmlhbD1aKHRoaXMuZGVwdGhGYWlsTWF0ZXJpYWwsdC5kZXB0aEZhaWxNYXRlcmlhbCksdGhpcy5hcmNUeXBlPVoodGhpcy5hcmNUeXBlLHQuYXJjVHlwZSksdGhpcy5jbGFtcFRvR3JvdW5kPVoodGhpcy5jbGFtcFRvR3JvdW5kLHQuY2xhbXBUb0dyb3VuZCksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LmNsYXNzaWZpY2F0aW9uVHlwZSksdGhpcy56SW5kZXg9Wih0aGlzLnpJbmRleCx0LnpJbmRleCl9O3pqPVRffSk7ZnVuY3Rpb24gTl8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9ucz12b2lkIDAsdGhpcy5fcG9zaXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFwZT12b2lkIDAsdGhpcy5fc2hhcGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGU9dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIFhqLHFqPU8oKCk9PntidCgpO210KCk7VnQoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhOXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscG9zaXRpb25zOnJ0KCJwb3NpdGlvbnMiKSxzaGFwZTpydCgic2hhcGUiKSxjb3JuZXJUeXBlOnJ0KCJjb3JuZXJUeXBlIiksZ3JhbnVsYXJpdHk6cnQoImdyYW51bGFyaXR5IiksZmlsbDpydCgiZmlsbCIpLG1hdGVyaWFsOnduKCJtYXRlcmlhbCIpLG91dGxpbmU6cnQoIm91dGxpbmUiKSxvdXRsaW5lQ29sb3I6cnQoIm91dGxpbmVDb2xvciIpLG91dGxpbmVXaWR0aDpydCgib3V0bGluZVdpZHRoIiksc2hhZG93czpydCgic2hhZG93cyIpLGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjpydCgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIil9KTtOXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5wb3NpdGlvbnM9dGhpcy5wb3NpdGlvbnMsdC5zaGFwZT10aGlzLnNoYXBlLHQuY29ybmVyVHlwZT10aGlzLmNvcm5lclR5cGUsdC5ncmFudWxhcml0eT10aGlzLmdyYW51bGFyaXR5LHQuZmlsbD10aGlzLmZpbGwsdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHQub3V0bGluZT10aGlzLm91dGxpbmUsdC5vdXRsaW5lQ29sb3I9dGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lV2lkdGg9dGhpcy5vdXRsaW5lV2lkdGgsdC5zaGFkb3dzPXRoaXMuc2hhZG93cyx0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0KTpuZXcgTl8odGhpcyl9O05fLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMucG9zaXRpb25zPVoodGhpcy5wb3NpdGlvbnMsdC5wb3NpdGlvbnMpLHRoaXMuc2hhcGU9Wih0aGlzLnNoYXBlLHQuc2hhcGUpLHRoaXMuY29ybmVyVHlwZT1aKHRoaXMuY29ybmVyVHlwZSx0LmNvcm5lclR5cGUpLHRoaXMuZ3JhbnVsYXJpdHk9Wih0aGlzLmdyYW51bGFyaXR5LHQuZ3JhbnVsYXJpdHkpLHRoaXMuZmlsbD1aKHRoaXMuZmlsbCx0LmZpbGwpLHRoaXMubWF0ZXJpYWw9Wih0aGlzLm1hdGVyaWFsLHQubWF0ZXJpYWwpLHRoaXMub3V0bGluZT1aKHRoaXMub3V0bGluZSx0Lm91dGxpbmUpLHRoaXMub3V0bGluZUNvbG9yPVoodGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lQ29sb3IpLHRoaXMub3V0bGluZVdpZHRoPVoodGhpcy5vdXRsaW5lV2lkdGgsdC5vdXRsaW5lV2lkdGgpLHRoaXMuc2hhZG93cz1aKHRoaXMuc2hhZG93cyx0LnNoYWRvd3MpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pfTtYaj1OX30pO2Z1bmN0aW9uIGJfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jb29yZGluYXRlcz12b2lkIDAsdGhpcy5fY29vcmRpbmF0ZXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3JvdGF0aW9uPXZvaWQgMCx0aGlzLl9yb3RhdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc3RSb3RhdGlvbj12b2lkIDAsdGhpcy5fc3RSb3RhdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZ3JhbnVsYXJpdHk9dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9maWxsPXZvaWQgMCx0aGlzLl9maWxsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9tYXRlcmlhbD12b2lkIDAsdGhpcy5fbWF0ZXJpYWxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmU9dm9pZCAwLHRoaXMuX291dGxpbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2hhZG93cz12b2lkIDAsdGhpcy5fc2hhZG93c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZWRpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NsYXNzaWZpY2F0aW9uVHlwZT12b2lkIDAsdGhpcy5fY2xhc3NpZmljYXRpb25UeXBlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl96SW5kZXg9dm9pZCAwLHRoaXMuX3pJbmRleFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgJGosdDM9TygoKT0+e2J0KCk7bXQoKTtWdCgpO3hpKCk7dXIoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGJfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSxjb29yZGluYXRlczpydCgiY29vcmRpbmF0ZXMiKSxoZWlnaHQ6cnQoImhlaWdodCIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZXh0cnVkZWRIZWlnaHQ6cnQoImV4dHJ1ZGVkSGVpZ2h0IiksZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U6cnQoImV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIikscm90YXRpb246cnQoInJvdGF0aW9uIiksc3RSb3RhdGlvbjpydCgic3RSb3RhdGlvbiIpLGdyYW51bGFyaXR5OnJ0KCJncmFudWxhcml0eSIpLGZpbGw6cnQoImZpbGwiKSxtYXRlcmlhbDp3bigibWF0ZXJpYWwiKSxvdXRsaW5lOnJ0KCJvdXRsaW5lIiksb3V0bGluZUNvbG9yOnJ0KCJvdXRsaW5lQ29sb3IiKSxvdXRsaW5lV2lkdGg6cnQoIm91dGxpbmVXaWR0aCIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGNsYXNzaWZpY2F0aW9uVHlwZTpydCgiY2xhc3NpZmljYXRpb25UeXBlIiksekluZGV4OnJ0KCJ6SW5kZXgiKX0pO2JfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LmNvb3JkaW5hdGVzPXRoaXMuY29vcmRpbmF0ZXMsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LnJvdGF0aW9uPXRoaXMucm90YXRpb24sdC5zdFJvdGF0aW9uPXRoaXMuc3RSb3RhdGlvbix0LmdyYW51bGFyaXR5PXRoaXMuZ3JhbnVsYXJpdHksdC5maWxsPXRoaXMuZmlsbCx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5vdXRsaW5lPXRoaXMub3V0bGluZSx0Lm91dGxpbmVDb2xvcj10aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVXaWR0aD10aGlzLm91dGxpbmVXaWR0aCx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuY2xhc3NpZmljYXRpb25UeXBlPXRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuekluZGV4PXRoaXMuekluZGV4LHQpOm5ldyBiXyh0aGlzKX07Yl8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5jb29yZGluYXRlcz1aKHRoaXMuY29vcmRpbmF0ZXMsdC5jb29yZGluYXRlcyksdGhpcy5oZWlnaHQ9Wih0aGlzLmhlaWdodCx0LmhlaWdodCksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5leHRydWRlZEhlaWdodD1aKHRoaXMuZXh0cnVkZWRIZWlnaHQsdC5leHRydWRlZEhlaWdodCksdGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZT1aKHRoaXMuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodFJlZmVyZW5jZSksdGhpcy5yb3RhdGlvbj1aKHRoaXMucm90YXRpb24sdC5yb3RhdGlvbiksdGhpcy5zdFJvdGF0aW9uPVoodGhpcy5zdFJvdGF0aW9uLHQuc3RSb3RhdGlvbiksdGhpcy5ncmFudWxhcml0eT1aKHRoaXMuZ3JhbnVsYXJpdHksdC5ncmFudWxhcml0eSksdGhpcy5maWxsPVoodGhpcy5maWxsLHQuZmlsbCksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5vdXRsaW5lPVoodGhpcy5vdXRsaW5lLHQub3V0bGluZSksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LmNsYXNzaWZpY2F0aW9uVHlwZSksdGhpcy56SW5kZXg9Wih0aGlzLnpJbmRleCx0LnpJbmRleCl9OyRqPWJffSk7ZnVuY3Rpb24gRl8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9ucz12b2lkIDAsdGhpcy5fcG9zaXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9taW5pbXVtSGVpZ2h0cz12b2lkIDAsdGhpcy5fbWluaW11bUhlaWdodHNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21heGltdW1IZWlnaHRzPXZvaWQgMCx0aGlzLl9tYXhpbXVtSGVpZ2h0c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZ3JhbnVsYXJpdHk9dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9maWxsPXZvaWQgMCx0aGlzLl9maWxsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9tYXRlcmlhbD12b2lkIDAsdGhpcy5fbWF0ZXJpYWxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmU9dm9pZCAwLHRoaXMuX291dGxpbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2hhZG93cz12b2lkIDAsdGhpcy5fc2hhZG93c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIGUzLGkzPU8oKCk9PntidCgpO210KCk7VnQoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscG9zaXRpb25zOnJ0KCJwb3NpdGlvbnMiKSxtaW5pbXVtSGVpZ2h0czpydCgibWluaW11bUhlaWdodHMiKSxtYXhpbXVtSGVpZ2h0czpydCgibWF4aW11bUhlaWdodHMiKSxncmFudWxhcml0eTpydCgiZ3JhbnVsYXJpdHkiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxzaGFkb3dzOnJ0KCJzaGFkb3dzIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKX0pO0ZfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnBvc2l0aW9ucz10aGlzLnBvc2l0aW9ucyx0Lm1pbmltdW1IZWlnaHRzPXRoaXMubWluaW11bUhlaWdodHMsdC5tYXhpbXVtSGVpZ2h0cz10aGlzLm1heGltdW1IZWlnaHRzLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdCk6bmV3IEZfKHRoaXMpfTtGXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnBvc2l0aW9ucz1aKHRoaXMucG9zaXRpb25zLHQucG9zaXRpb25zKSx0aGlzLm1pbmltdW1IZWlnaHRzPVoodGhpcy5taW5pbXVtSGVpZ2h0cyx0Lm1pbmltdW1IZWlnaHRzKSx0aGlzLm1heGltdW1IZWlnaHRzPVoodGhpcy5tYXhpbXVtSGVpZ2h0cyx0Lm1heGltdW1IZWlnaHRzKSx0aGlzLmdyYW51bGFyaXR5PVoodGhpcy5ncmFudWxhcml0eSx0LmdyYW51bGFyaXR5KSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKX07ZTM9Rl99KTt2YXIgQ2F0LEtsLG4zPU8oKCk9PntDYXQ9e05PTkU6MCxIT0xEOjEsRVhUUkFQT0xBVEU6Mn0sS2w9T2JqZWN0LmZyZWV6ZShDYXQpfSk7dmFyIGdiLHMzLG8zPU8oKCk9PnttdCgpO1Z0KCk7Z2I9e3R5cGU6IkxpbmVhciJ9O2diLmdldFJlcXVpcmVkRGF0YVBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gMn07Z2IuaW50ZXJwb2xhdGVPcmRlclplcm89ZnVuY3Rpb24odCxlLGksbixzKXtpZihlLmxlbmd0aCE9PTIpdGhyb3cgbmV3IFkoIlRoZSB4VGFibGUgcHJvdmlkZWQgdG8gdGhlIGxpbmVhciBpbnRlcnBvbGF0b3IgbXVzdCBoYXZlIGV4YWN0bHkgdHdvIGVsZW1lbnRzLiIpO2lmKG48PTApdGhyb3cgbmV3IFkoIlRoZXJlIG11c3QgYmUgYXQgbGVhc3QgMSBkZXBlbmRlbnQgdmFyaWFibGUgZm9yIGVhY2ggaW5kZXBlbmRlbnQgdmFyaWFibGUuIik7bShzKXx8KHM9bmV3IEFycmF5KG4pKTtsZXQgbyxyLGEsaD1lWzBdLEE9ZVsxXTtpZihoPT09QSl0aHJvdyBuZXcgWSgiRGl2aWRlIGJ5IHplcm8gZXJyb3I6IHhUYWJsZVswXSBhbmQgeFRhYmxlWzFdIGFyZSBlcXVhbCIpO2ZvcihvPTA7bzxuO28rKylyPWlbb10sYT1pW28rbl0sc1tvXT0oKGEtcikqdCtBKnItaCphKS8oQS1oKTtyZXR1cm4gc307czM9Z2J9KTtmdW5jdGlvbiBhMyh0LGUsaSl7bGV0IG4scz10Lmxlbmd0aCxvPWkubGVuZ3RoLHI9cytvO2lmKHQubGVuZ3RoPXIscyE9PWUpe2xldCBhPXMtMTtmb3Iobj1yLTE7bj49ZTtuLS0pdFtuXT10W2EtLV19Zm9yKG49MDtuPG87bisrKXRbZSsrXT1pW25dfWZ1bmN0aW9uIEEzKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBaZT90OnR5cGVvZiB0PT0ic3RyaW5nIj9aZS5mcm9tSXNvODYwMSh0KTpaZS5hZGRTZWNvbmRzKGUsdCxuZXcgWmUpfWZ1bmN0aW9uIGxwKHQsZSxpLG4scyl7bGV0IG89MCxyLGEsaCxBLGQsZjtmb3IoO288bi5sZW5ndGg7KXtkPUEzKG5bb10sdCksaD1CbyhlLGQsWmUuY29tcGFyZSk7bGV0IEU9MCxfPTA7aWYoaDwwKXtmb3IoaD1+aCxBPWgqcyxhPXZvaWQgMCxmPWVbaF07bzxuLmxlbmd0aCYmKGQ9QTMobltvXSx0KSwhKG0oYSkmJlplLmNvbXBhcmUoYSxkKT49MHx8bShmKSYmWmUuY29tcGFyZShkLGYpPj0wKSk7KXtmb3IoVGJbRSsrXT1kLG89bysxLHI9MDtyPHM7cisrKU5iW18rK109bltvXSxvPW8rMTthPWR9RT4wJiYoTmIubGVuZ3RoPV8sYTMoaSxBLE5iKSxUYi5sZW5ndGg9RSxhMyhlLGgsVGIpKX1lbHNle2ZvcihyPTA7cjxzO3IrKylvKyssaVtoKnMrcl09bltvXTtvKyt9fX1mdW5jdGlvbiBVYSh0LGUpe3AuZGVmaW5lZCgidHlwZSIsdCk7bGV0IGk9dDtpPT09TnVtYmVyJiYoaT1yMyk7bGV0IG49aS5wYWNrZWRMZW5ndGgscz1aKGkucGFja2VkSW50ZXJwb2xhdGlvbkxlbmd0aCxuKSxvPTAscjtpZihtKGUpKXtsZXQgYT1lLmxlbmd0aDtyPW5ldyBBcnJheShhKTtmb3IobGV0IGg9MDtoPGE7aCsrKXtsZXQgQT1lW2hdO0E9PT1OdW1iZXImJihBPXIzKTtsZXQgZD1BLnBhY2tlZExlbmd0aDtuKz1kLHMrPVooQS5wYWNrZWRJbnRlcnBvbGF0aW9uTGVuZ3RoLGQpLHJbaF09QX1vPWF9dGhpcy5fdHlwZT10LHRoaXMuX2lubmVyVHlwZT1pLHRoaXMuX2ludGVycG9sYXRpb25EZWdyZWU9MSx0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtPXMzLHRoaXMuX251bWJlck9mUG9pbnRzPTAsdGhpcy5fdGltZXM9W10sdGhpcy5fdmFsdWVzPVtdLHRoaXMuX3hUYWJsZT1bXSx0aGlzLl95VGFibGU9W10sdGhpcy5fcGFja2VkTGVuZ3RoPW4sdGhpcy5fcGFja2VkSW50ZXJwb2xhdGlvbkxlbmd0aD1zLHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHRoaXMuX2ludGVycG9sYXRpb25SZXN1bHQ9bmV3IEFycmF5KHMpLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9kZXJpdmF0aXZlVHlwZXM9ZSx0aGlzLl9pbm5lckRlcml2YXRpdmVUeXBlcz1yLHRoaXMuX2lucHV0T3JkZXI9byx0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9S2wuTk9ORSx0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9uPTAsdGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZT1LbC5OT05FLHRoaXMuX2JhY2t3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9uPTB9ZnVuY3Rpb24gaDModCxlLGkpe2xldCBuPXQuX3BhY2tlZExlbmd0aDt0Ll90aW1lcy5zcGxpY2UoZSxpKSx0Ll92YWx1ZXMuc3BsaWNlKGUqbixpKm4pLHQuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHQuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodCl9dmFyIHIzLFRiLE5iLGRwLGJiPU8oKCk9PntzRSgpO2FlKCk7YnQoKTttdCgpO1Z0KCk7eGkoKTtuMygpO1ZyKCk7bzMoKTtyMz17cGFja2VkTGVuZ3RoOjEscGFjazpmdW5jdGlvbih0LGUsaSl7aT1aKGksMCksZVtpXT10fSx1bnBhY2s6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlPVooZSwwKSx0W2VdfX07VGI9W10sTmI9W107T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVWEucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWVzLmxlbmd0aD09PTB9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R5cGV9fSxkZXJpdmF0aXZlVHlwZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXJpdmF0aXZlVHlwZXN9fSxpbnRlcnBvbGF0aW9uRGVncmVlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW50ZXJwb2xhdGlvbkRlZ3JlZX19LGludGVycG9sYXRpb25BbGdvcml0aG06e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtfX0sZm9yd2FyZEV4dHJhcG9sYXRpb25UeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9yd2FyZEV4dHJhcG9sYXRpb25UeXBlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9yd2FyZEV4dHJhcG9sYXRpb25UeXBlIT09dCYmKHRoaXMuX2ZvcndhcmRFeHRyYXBvbGF0aW9uVHlwZT10LHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcykpfX0sZm9yd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvcndhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb259LHNldDpmdW5jdGlvbih0KXt0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9uIT09dCYmKHRoaXMuX2ZvcndhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb249dCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19LGJhY2t3YXJkRXh0cmFwb2xhdGlvblR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZSE9PXQmJih0aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlPXQsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzKSl9fSxiYWNrd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2t3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb24hPT10JiYodGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb249dCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19fSk7VWEucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJ0aW1lIix0KTtsZXQgaT10aGlzLl90aW1lcyxuPWkubGVuZ3RoO2lmKG49PT0wKXJldHVybjtsZXQgcyxvPXRoaXMuX2lubmVyVHlwZSxyPXRoaXMuX3ZhbHVlcyxhPUJvKGksdCxaZS5jb21wYXJlKTtpZihhPDApe2lmKGE9fmEsYT09PTApe2xldCBiPWlbYV07aWYocz10aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbix0aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlPT09S2wuTk9ORXx8cyE9PTAmJlplLnNlY29uZHNEaWZmZXJlbmNlKGIsdCk+cylyZXR1cm47aWYodGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZT09PUtsLkhPTEQpcmV0dXJuIG8udW5wYWNrKHIsMCxlKX1pZihhPj1uKXthPW4tMTtsZXQgYj1pW2FdO2lmKHM9dGhpcy5fZm9yd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbix0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9PT1LbC5OT05FfHxzIT09MCYmWmUuc2Vjb25kc0RpZmZlcmVuY2UodCxiKT5zKXJldHVybjtpZih0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9PT1LbC5IT0xEKXJldHVybiBhPW4tMSxvLnVucGFjayhyLGEqby5wYWNrZWRMZW5ndGgsZSl9bGV0IGg9dGhpcy5feFRhYmxlLEE9dGhpcy5feVRhYmxlLGQ9dGhpcy5faW50ZXJwb2xhdGlvbkFsZ29yaXRobSxmPXRoaXMuX3BhY2tlZEludGVycG9sYXRpb25MZW5ndGgsRT10aGlzLl9pbnB1dE9yZGVyO2lmKHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoKXt0aGlzLl91cGRhdGVUYWJsZUxlbmd0aD0hMTtsZXQgYj1NYXRoLm1pbihkLmdldFJlcXVpcmVkRGF0YVBvaW50cyh0aGlzLl9pbnRlcnBvbGF0aW9uRGVncmVlLEUpLG4pO2IhPT10aGlzLl9udW1iZXJPZlBvaW50cyYmKHRoaXMuX251bWJlck9mUG9pbnRzPWIsaC5sZW5ndGg9YixBLmxlbmd0aD1iKmYpfWxldCBfPXRoaXMuX251bWJlck9mUG9pbnRzLTE7aWYoXzwxKXJldHVybjtsZXQgUj0wLEk9bi0xO2lmKEktUisxPj1fKzEpe2xldCBiPWEtKF8vMnwwKS0xO2I8UiYmKGI9Uik7bGV0IEc9YitfO0c+SSYmKEc9SSxiPUctXyxiPFImJihiPVIpKSxSPWIsST1HfWxldCBOPUktUisxO2ZvcihsZXQgYj0wO2I8TjsrK2IpaFtiXT1aZS5zZWNvbmRzRGlmZmVyZW5jZShpW1IrYl0saVtJXSk7aWYobShvLmNvbnZlcnRQYWNrZWRBcnJheUZvckludGVycG9sYXRpb24pKW8uY29udmVydFBhY2tlZEFycmF5Rm9ySW50ZXJwb2xhdGlvbihyLFIsSSxBKTtlbHNle2xldCBiPTAsRz10aGlzLl9wYWNrZWRMZW5ndGgsTT1SKkcsUT0oSSsxKSpHO2Zvcig7TTxROylBW2JdPXJbTV0sTSsrLGIrK31sZXQgVD1aZS5zZWNvbmRzRGlmZmVyZW5jZSh0LGlbSV0pLEY7aWYoRT09PTB8fCFtKGQuaW50ZXJwb2xhdGUpKUY9ZC5pbnRlcnBvbGF0ZU9yZGVyWmVybyhULGgsQSxmLHRoaXMuX2ludGVycG9sYXRpb25SZXN1bHQpO2Vsc2V7bGV0IGI9TWF0aC5mbG9vcihmLyhFKzEpKTtGPWQuaW50ZXJwb2xhdGUoVCxoLEEsYixFLEUsdGhpcy5faW50ZXJwb2xhdGlvblJlc3VsdCl9cmV0dXJuIG0oby51bnBhY2tJbnRlcnBvbGF0aW9uUmVzdWx0KT9vLnVucGFja0ludGVycG9sYXRpb25SZXN1bHQoRixyLFIsSSxlKTpvLnVucGFjayhGLDAsZSl9cmV0dXJuIG8udW5wYWNrKHIsYSp0aGlzLl9wYWNrZWRMZW5ndGgsZSl9O1VhLnByb3RvdHlwZS5zZXRJbnRlcnBvbGF0aW9uT3B0aW9ucz1mdW5jdGlvbih0KXtpZighbSh0KSlyZXR1cm47bGV0IGU9ITEsaT10LmludGVycG9sYXRpb25BbGdvcml0aG0sbj10LmludGVycG9sYXRpb25EZWdyZWU7bShpKSYmdGhpcy5faW50ZXJwb2xhdGlvbkFsZ29yaXRobSE9PWkmJih0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtPWksZT0hMCksbShuKSYmdGhpcy5faW50ZXJwb2xhdGlvbkRlZ3JlZSE9PW4mJih0aGlzLl9pbnRlcnBvbGF0aW9uRGVncmVlPW4sZT0hMCksZSYmKHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcykpfTtVYS5wcm90b3R5cGUuYWRkU2FtcGxlPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10aGlzLl9pbm5lckRlcml2YXRpdmVUeXBlcyxzPW0obik7cC5kZWZpbmVkKCJ0aW1lIix0KSxwLmRlZmluZWQoInZhbHVlIixlKSxzJiZwLmRlZmluZWQoImRlcml2YXRpdmVzIixpKTtsZXQgbz10aGlzLl9pbm5lclR5cGUscj1bXTtpZihyLnB1c2godCksby5wYWNrKGUscixyLmxlbmd0aCkscyl7bGV0IGE9bi5sZW5ndGg7Zm9yKGxldCBoPTA7aDxhO2grKyluW2hdLnBhY2soaVtoXSxyLHIubGVuZ3RoKX1scCh2b2lkIDAsdGhpcy5fdGltZXMsdGhpcy5fdmFsdWVzLHIsdGhpcy5fcGFja2VkTGVuZ3RoKSx0aGlzLl91cGRhdGVUYWJsZUxlbmd0aD0hMCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpfTtVYS5wcm90b3R5cGUuYWRkU2FtcGxlcz1mdW5jdGlvbih0LGUsaSl7bGV0IG49dGhpcy5faW5uZXJEZXJpdmF0aXZlVHlwZXMscz1tKG4pO2lmKHAuZGVmaW5lZCgidGltZXMiLHQpLHAuZGVmaW5lZCgidmFsdWVzIixlKSx0Lmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBZKCJ0aW1lcyBhbmQgdmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2lmKHMmJighbShpKXx8aS5sZW5ndGghPT10Lmxlbmd0aCkpdGhyb3cgbmV3IFkoInRpbWVzIGFuZCBkZXJpdmF0aXZlVmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2xldCBvPXRoaXMuX2lubmVyVHlwZSxyPXQubGVuZ3RoLGE9W107Zm9yKGxldCBoPTA7aDxyO2grKylpZihhLnB1c2godFtoXSksby5wYWNrKGVbaF0sYSxhLmxlbmd0aCkscyl7bGV0IEE9aVtoXSxkPW4ubGVuZ3RoO2ZvcihsZXQgZj0wO2Y8ZDtmKyspbltmXS5wYWNrKEFbZl0sYSxhLmxlbmd0aCl9bHAodm9pZCAwLHRoaXMuX3RpbWVzLHRoaXMuX3ZhbHVlcyxhLHRoaXMuX3BhY2tlZExlbmd0aCksdGhpcy5fdXBkYXRlVGFibGVMZW5ndGg9ITAsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzKX07VWEucHJvdG90eXBlLmFkZFNhbXBsZXNQYWNrZWRBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgicGFja2VkU2FtcGxlcyIsdCksbHAoZSx0aGlzLl90aW1lcyx0aGlzLl92YWx1ZXMsdCx0aGlzLl9wYWNrZWRMZW5ndGgpLHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O1VhLnByb3RvdHlwZS5yZW1vdmVTYW1wbGU9ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJ0aW1lIix0KTtsZXQgZT1Cbyh0aGlzLl90aW1lcyx0LFplLmNvbXBhcmUpO3JldHVybiBlPDA/ITE6KGgzKHRoaXMsZSwxKSwhMCl9O1VhLnByb3RvdHlwZS5yZW1vdmVTYW1wbGVzPWZ1bmN0aW9uKHQpe3AuZGVmaW5lZCgidGltZUludGVydmFsIix0KTtsZXQgZT10aGlzLl90aW1lcyxpPUJvKGUsdC5zdGFydCxaZS5jb21wYXJlKTtpPDA/aT1+aTp0LmlzU3RhcnRJbmNsdWRlZHx8KytpO2xldCBuPUJvKGUsdC5zdG9wLFplLmNvbXBhcmUpO248MD9uPX5uOnQuaXNTdG9wSW5jbHVkZWQmJisrbixoMyh0aGlzLGksbi1pKX07VWEucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtpZih0aGlzPT09dClyZXR1cm4hMDtpZighbSh0KXx8dGhpcy5fdHlwZSE9PXQuX3R5cGV8fHRoaXMuX2ludGVycG9sYXRpb25EZWdyZWUhPT10Ll9pbnRlcnBvbGF0aW9uRGVncmVlfHx0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtIT09dC5faW50ZXJwb2xhdGlvbkFsZ29yaXRobSlyZXR1cm4hMTtsZXQgZT10aGlzLl9kZXJpdmF0aXZlVHlwZXMsaT1tKGUpLG49dC5fZGVyaXZhdGl2ZVR5cGVzLHM9bShuKTtpZihpIT09cylyZXR1cm4hMTtsZXQgbyxyO2lmKGkpe2lmKHI9ZS5sZW5ndGgsciE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihvPTA7bzxyO28rKylpZihlW29dIT09bltvXSlyZXR1cm4hMX1sZXQgYT10aGlzLl90aW1lcyxoPXQuX3RpbWVzO2lmKHI9YS5sZW5ndGgsciE9PWgubGVuZ3RoKXJldHVybiExO2ZvcihvPTA7bzxyO28rKylpZighWmUuZXF1YWxzKGFbb10saFtvXSkpcmV0dXJuITE7bGV0IEE9dGhpcy5fdmFsdWVzLGQ9dC5fdmFsdWVzO2ZvcihyPUEubGVuZ3RoLG89MDtvPHI7bysrKWlmKEFbb10hPT1kW29dKXJldHVybiExO3JldHVybiEwfTtVYS5fbWVyZ2VOZXdTYW1wbGVzPWxwO2RwPVVhfSk7ZnVuY3Rpb24gYmF0KHQpe3JldHVybiBuZXcgSWoodCl9ZnVuY3Rpb24gRmF0KHQpe3JldHVybiBydCh0LHZvaWQgMCxiYXQpfWZ1bmN0aW9uIHlzKHQsZSl7cmV0dXJuIHJ0KHQsdm9pZCAwLGZ1bmN0aW9uKGkpe3JldHVybiBpIGluc3RhbmNlb2YgZT9pOm5ldyBlKGkpfSl9ZnVuY3Rpb24gc3IodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuaWQ7bShlKXx8KGU9R3MoKSksdGhpcy5fYXZhaWxhYmlsaXR5PXZvaWQgMCx0aGlzLl9pZD1lLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9uYW1lPXQubmFtZSx0aGlzLl9zaG93PVoodC5zaG93LCEwKSx0aGlzLl9wYXJlbnQ9dm9pZCAwLHRoaXMuX3Byb3BlcnR5TmFtZXM9WyJiaWxsYm9hcmQiLCJib3giLCJjb3JyaWRvciIsImN5bGluZGVyIiwiZGVzY3JpcHRpb24iLCJlbGxpcHNlIiwiZWxsaXBzb2lkIiwibGFiZWwiLCJtb2RlbCIsInRpbGVzZXQiLCJvcmllbnRhdGlvbiIsInBhdGgiLCJwbGFuZSIsInBvaW50IiwicG9seWdvbiIsInBvbHlsaW5lIiwicG9seWxpbmVWb2x1bWUiLCJwb3NpdGlvbiIsInByb3BlcnRpZXMiLCJyZWN0YW5nbGUiLCJ2aWV3RnJvbSIsIndhbGwiLCJyZWZlcmVuY2VGcmFtZSIsImdsdGZaRm9yd2FyZFlVcCIsLi4uRmJdLHRoaXMuX2JpbGxib2FyZD12b2lkIDAsdGhpcy5fYmlsbGJvYXJkU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ib3g9dm9pZCAwLHRoaXMuX2JveFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY29ycmlkb3I9dm9pZCAwLHRoaXMuX2NvcnJpZG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jeWxpbmRlcj12b2lkIDAsdGhpcy5fY3lsaW5kZXJTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rlc2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kZXNjcmlwdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZWxsaXBzZT12b2lkIDAsdGhpcy5fZWxsaXBzZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZWxsaXBzb2lkPXZvaWQgMCx0aGlzLl9lbGxpcHNvaWRTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9sYWJlbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbW9kZWw9dm9pZCAwLHRoaXMuX21vZGVsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl90aWxlc2V0PXZvaWQgMCx0aGlzLl90aWxlc2V0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vcmllbnRhdGlvbj12b2lkIDAsdGhpcy5fb3JpZW50YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BhdGg9dm9pZCAwLHRoaXMuX3BhdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BsYW5lPXZvaWQgMCx0aGlzLl9wbGFuZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcG9pbnQ9dm9pZCAwLHRoaXMuX3BvaW50U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wb2x5Z29uPXZvaWQgMCx0aGlzLl9wb2x5Z29uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wb2x5bGluZT12b2lkIDAsdGhpcy5fcG9seWxpbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BvbHlsaW5lVm9sdW1lPXZvaWQgMCx0aGlzLl9wb2x5bGluZVZvbHVtZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcG9zaXRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wcm9wZXJ0aWVzPXZvaWQgMCx0aGlzLl9wcm9wZXJ0aWVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9yZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3JlY3RhbmdsZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdmlld0Zyb209dm9pZCAwLHRoaXMuX3ZpZXdGcm9tU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93YWxsPXZvaWQgMCx0aGlzLl93YWxsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jaGlsZHJlbj1bXSx0aGlzLmVudGl0eUNvbGxlY3Rpb249dm9pZCAwLHRoaXMuX3JlZmVyZW5jZUZyYW1lPVoodC5yZWZlcmVuY2VGcmFtZSx2b2lkIDApLHRoaXMuX2dsdGZaRm9yd2FyZFlVcD1aKHQuZ2x0ZlpGb3J3YXJkWVVwLCExKSx0aGlzLnBhcmVudD10LnBhcmVudCx0aGlzLm1lcmdlKHQpfWZ1bmN0aW9uIFliKHQsZSxpKXtsZXQgbj1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cysrKXtsZXQgbz1lW3NdLHI9by5fc2hvdzsoIWkmJnIpIT09KGkmJnIpJiZZYihvLG8uX2NoaWxkcmVuLGkpfXQuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodCwiaXNTaG93aW5nIixpLCFpKX12YXIgZ2F0LFRhdCxOYXQsRmIsU2IsYzMsbDMsb2YscmYsT2I9TygoKT0+e0h0KCk7cmkoKTthZSgpO2loKCk7YnQoKTttdCgpO1Z0KCk7eGkoKTtfZSgpO2RuKCk7RmkoKTskcygpO2ZyKCk7dUooKTtjaigpO09tKCk7ZGooKTtaaigpO3BqKCk7Q2ooKTt5bigpO2dqKCk7TmooKTtGaigpO1NqKCk7VmooKTtRaigpO0xqKCk7d2ooKTtQaigpO2pqKCk7dmooKTtLaigpO3FqKCk7SGwoKTtDYigpO3QzKCk7aTMoKTtpYygpO2JiKCk7c0UoKTtWcigpO2hfKCk7KHtlYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZTpnYXQsZ2V0VHJhbnNmb3JtVG9GaXhlZEZyYW1lOlRhdH09SW4pLE5hdD1uZXcgdXQsRmI9W107T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoc3IucHJvdG90eXBlLHthdmFpbGFiaWxpdHk6aHAoImF2YWlsYWJpbGl0eSIpLGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sbmFtZTpocCgibmFtZSIpLHNob3c6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaG93fSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2lmKHQ9PT10aGlzLl9zaG93KXJldHVybjtsZXQgZT10aGlzLmlzU2hvd2luZzt0aGlzLl9zaG93PXQ7bGV0IGk9dGhpcy5pc1Nob3dpbmc7ZSE9PWkmJlliKHRoaXMsdGhpcy5fY2hpbGRyZW4saSksdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzLCJzaG93Iix0LCF0KX19LGlzU2hvd2luZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nob3cmJighbSh0aGlzLmVudGl0eUNvbGxlY3Rpb24pfHx0aGlzLmVudGl0eUNvbGxlY3Rpb24uc2hvdykmJighbSh0aGlzLl9wYXJlbnQpfHx0aGlzLl9wYXJlbnQuaXNTaG93aW5nKX19LHBhcmVudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sc2V0OmZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuX3BhcmVudDtpZihlPT09dClyZXR1cm47bGV0IGk9dGhpcy5pc1Nob3dpbmc7aWYobShlKSl7bGV0IHM9ZS5fY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtlLl9jaGlsZHJlbi5zcGxpY2UocywxKX10aGlzLl9wYXJlbnQ9dCxtKHQpJiZ0Ll9jaGlsZHJlbi5wdXNoKHRoaXMpO2xldCBuPXRoaXMuaXNTaG93aW5nO2khPT1uJiZZYih0aGlzLHRoaXMuX2NoaWxkcmVuLG4pLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcywicGFyZW50Iix0LGUpfX0scHJvcGVydHlOYW1lczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5TmFtZXN9fSxiaWxsYm9hcmQ6eXMoImJpbGxib2FyZCIsbGopLGJveDp5cygiYm94IixSaiksY29ycmlkb3I6eXMoImNvcnJpZG9yIix1aiksY3lsaW5kZXI6eXMoImN5bGluZGVyIixUaiksZGVzY3JpcHRpb246cnQoImRlc2NyaXB0aW9uIiksZWxsaXBzZTp5cygiZWxsaXBzZSIsYmopLGVsbGlwc29pZDp5cygiZWxsaXBzb2lkIixZaiksbGFiZWw6eXMoImxhYmVsIixPaiksbW9kZWw6eXMoIm1vZGVsIixVaiksdGlsZXNldDp5cygidGlsZXNldCIsa2opLG9yaWVudGF0aW9uOnJ0KCJvcmllbnRhdGlvbiIpLHBhdGg6eXMoInBhdGgiLHlqKSxwbGFuZTp5cygicGxhbmUiLHhqKSxwb2ludDp5cygicG9pbnQiLEpqKSxwb2x5Z29uOnlzKCJwb2x5Z29uIixIaikscG9seWxpbmU6eXMoInBvbHlsaW5lIix6aikscG9seWxpbmVWb2x1bWU6eXMoInBvbHlsaW5lVm9sdW1lIixYaikscHJvcGVydGllczp5cygicHJvcGVydGllcyIsemwpLHBvc2l0aW9uOkZhdCgicG9zaXRpb24iKSxyZWN0YW5nbGU6eXMoInJlY3RhbmdsZSIsJGopLHZpZXdGcm9tOnJ0KCJ2aWV3RnJvbSIpLHdhbGw6eXMoIndhbGwiLGUzKX0pO3NyLnJlZ2lzdGVyRW50aXR5VHlwZT1mdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNyLnByb3RvdHlwZSx7W3RdOnlzKHQsZSl9KSxGYi5pbmNsdWRlcyh0KXx8RmIucHVzaCh0KX07c3IucHJvdG90eXBlLmlzQXZhaWxhYmxlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aW1lIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2F2YWlsYWJpbGl0eTtyZXR1cm4hbShlKXx8ZS5jb250YWlucyh0KX07c3IucHJvdG90eXBlLmFkZFByb3BlcnR5PWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuX3Byb3BlcnR5TmFtZXM7aWYoIW0odCkpdGhyb3cgbmV3IFkoInByb3BlcnR5TmFtZSBpcyByZXF1aXJlZC4iKTtpZihlLmluZGV4T2YodCkhPT0tMSl0aHJvdyBuZXcgWShgJHt0fSBpcyBhbHJlYWR5IGEgcmVnaXN0ZXJlZCBwcm9wZXJ0eS5gKTtpZih0IGluIHRoaXMpdGhyb3cgbmV3IFkoYCR7dH0gaXMgYSByZXNlcnZlZCBwcm9wZXJ0eSBuYW1lLmApO2UucHVzaCh0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LGhwKHQsITApKX07c3IucHJvdG90eXBlLnJlbW92ZVByb3BlcnR5PWZ1bmN0aW9uKHQpe2xldCBpPXRoaXMuX3Byb3BlcnR5TmFtZXMuaW5kZXhPZih0KTtpZighbSh0KSl0aHJvdyBuZXcgWSgicHJvcGVydHlOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKGk9PT0tMSl0aHJvdyBuZXcgWShgJHt0fSBpcyBub3QgYSByZWdpc3RlcmVkIHByb3BlcnR5LmApO3RoaXMuX3Byb3BlcnR5TmFtZXMuc3BsaWNlKGksMSksZGVsZXRlIHRoaXNbdF19O3NyLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMubmFtZT1aKHRoaXMubmFtZSx0Lm5hbWUpLHRoaXMuYXZhaWxhYmlsaXR5PVoodGhpcy5hdmFpbGFiaWxpdHksdC5hdmFpbGFiaWxpdHkpO2xldCBlPXRoaXMuX3Byb3BlcnR5TmFtZXMsaT1tKHQuX3Byb3BlcnR5TmFtZXMpP3QuX3Byb3BlcnR5TmFtZXM6T2JqZWN0LmtleXModCksbj1pLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cysrKXtsZXQgbz1pW3NdO2lmKG89PT0icGFyZW50Inx8bz09PSJuYW1lInx8bz09PSJhdmFpbGFiaWxpdHkifHxvPT09ImNoaWxkcmVuIiljb250aW51ZTtsZXQgcj10aGlzW29dLGE9dFtvXTshbShyKSYmZS5pbmRleE9mKG8pPT09LTEmJnRoaXMuYWRkUHJvcGVydHkobyksbShhKSYmKG0ocik/bShyLm1lcmdlKSYmci5tZXJnZShhKTptKGEubWVyZ2UpJiZtKGEuY2xvbmUpP3RoaXNbb109YS5jbG9uZSgpOnRoaXNbb109YSl9fTtTYj1uZXcgbHQsYzM9bmV3IGwsbDM9bmV3IEFlO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNyLnByb3RvdHlwZSx7cmVmZXJlbmNlRnJhbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWZlcmVuY2VGcmFtZX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC52YWx1ZXMoJGkpLmluY2x1ZGVzKHQpJiYodGhpcy5fcmVmZXJlbmNlRnJhbWU9dCl9fSxnbHRmWkZvcndhcmRZVXA6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nbHRmWkZvcndhcmRZVXB9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9nbHRmWkZvcndhcmRZVXA9dH19fSk7c3IucHJvdG90eXBlLmNvbXB1dGVNb2RlbE1hdHJpeD1mdW5jdGlvbih0LGUsaT0hMCxuPXZvaWQgMCl7cC50eXBlT2Yub2JqZWN0KCJ0aW1lIix0KTtsZXQgcz1PaS5nZXRWYWx1ZU9yVW5kZWZpbmVkKHRoaXMuX3Bvc2l0aW9uLHQsYzMpO2lmKCFtKHMpKXJldHVybjtsZXQgbz1PaS5nZXRWYWx1ZU9yVW5kZWZpbmVkKHRoaXMuX29yaWVudGF0aW9uLHQsbDMpO28mJn5YQi5pbmRleE9mKHRoaXMucmVmZXJlbmNlRnJhbWUpJiYobz1Jbi5yZXZlcnNlSGVhZGluZ1F1YXRlcm5pb24obykpO2xldCByPVRhdChufHx0aGlzLnJlZmVyZW5jZUZyYW1lLHQsdGhpcy5fcG9zaXRpb24pO3JldHVybiFtKG8pfHwhaT9lPXIocyx2b2lkIDAsZSk6bSh0aGlzLnJlZmVyZW5jZUZyYW1lKT8oSW4ubG9jYWxUb0ZpeGVkRnJhbWVRdWF0ZXJuaW9uKHMsbyxudWxsLHIsbyksZT1hdC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihsdC5mcm9tUXVhdGVybmlvbihvLFNiKSxzLGUpKTplPWF0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKGx0LmZyb21RdWF0ZXJuaW9uKG8sU2IpLHMsZSksZX07c3IucHJvdG90eXBlLmNvbXB1dGVNb2RlbE1hdHJpeEZvckhlaWdodFJlZmVyZW5jZT1mdW5jdGlvbih0LGUsaSxuLHMpe3AudHlwZU9mLm9iamVjdCgidGltZSIsdCk7bGV0IG89T2kuZ2V0VmFsdWVPckRlZmF1bHQoZSx0LFdyLk5PTkUpLHI9T2kuZ2V0VmFsdWVPclVuZGVmaW5lZCh0aGlzLl9wb3NpdGlvbix0LGMzKTtpZihvPT09V3IuTk9ORXx8IW0ocil8fGwuZXF1YWxzRXBzaWxvbihyLGwuWkVSTyxMLkVQU0lMT044KSlyZXR1cm4gdGhpcy5jb21wdXRlTW9kZWxNYXRyaXgodCxzKTtsZXQgYT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsTmF0KTtnbChvKT9hLmhlaWdodD1pOmEuaGVpZ2h0Kz1pLHI9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihhLHIpO2xldCBoPU9pLmdldFZhbHVlT3JVbmRlZmluZWQodGhpcy5fb3JpZW50YXRpb24sdCxsMyk7cmV0dXJuIG0oaCk/cz1hdC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihsdC5mcm9tUXVhdGVybmlvbihoLFNiKSxyLHMpOnM9Z2F0KHIsdm9pZCAwLHMpLHN9O3NyLnN1cHBvcnRzTWF0ZXJpYWxzZm9yRW50aXRpZXNPblRlcnJhaW49ZnVuY3Rpb24odCl7cmV0dXJuIGhqLnN1cHBvcnRzTWF0ZXJpYWxzKHQpfTtzci5zdXBwb3J0c1BvbHlsaW5lc09uVGVycmFpbj1mdW5jdGlvbih0KXtyZXR1cm4gcEouaXNTdXBwb3J0ZWQodCl9O29mPW5ldyBBZTtzci5wcm90b3R5cGUudXBkYXRlQWRkaXRpdmVPcmllbnRhdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMub3JpZW50YXRpb258fCh0aGlzLm9yaWVudGF0aW9uPW5ldyBDaChBZS5jbG9uZShBZS5JREVOVElUWSkpKTtsZXQgaT10aGlzLm9yaWVudGF0aW9uLG49QWUuZnJvbUF4aXNBbmdsZShsLlVOSVRfWCx0LnJvbGwpLHM9QWUuZnJvbUF4aXNBbmdsZShsLlVOSVRfWSwtdC5waXRjaCksbz1BZS5mcm9tQXhpc0FuZ2xlKGwuVU5JVF9aLC10LmhlYWRpbmcpLHI9bmV3IEFlO2lmKEFlLm11bHRpcGx5KHMsbyxyKSxBZS5tdWx0aXBseShuLHIsciksaSBpbnN0YW5jZW9mIGRwKXtsZXQgYT1pLl90aW1lcyxoPWU/Qm8oYSxlLFplLmNvbXBhcmUpOjA7aDwwJiYoaD1+aCk7bGV0IEE9aS5fdmFsdWVzW2hdO0FlLm11bHRpcGx5KHIsQSxvZiksaS5fdmFsdWVzW2hdPUFlLmNsb25lKG9mKX1lbHNlIGlmKGkgaW5zdGFuY2VvZiBDaCl7bGV0IGE9aS5nZXRWYWx1ZSgpO0FlLm11bHRpcGx5KGEscixvZiksQWUubm9ybWFsaXplKG9mLG9mKSxpLnNldFZhbHVlKEFlLmNsb25lKG9mKSl9ZWxzZSB0aHJvdyBuZXcgWSgiVW5zdXBwb3J0ZWQgb3JpZW50YXRpb24gcHJvcGVydHkgdHlwZS4iKX07cmY9c3J9KTtmdW5jdGlvbiBZXyh0KXtpZih0Ll9maXJpbmcpe3QuX3JlZmlyZT0hMDtyZXR1cm59aWYodC5fc3VzcGVuZENvdW50PT09MCl7bGV0IGU9dC5fYWRkZWRFbnRpdGllcyxpPXQuX3JlbW92ZWRFbnRpdGllcyxuPXQuX2NoYW5nZWRFbnRpdGllcztpZihuLmxlbmd0aCE9PTB8fGUubGVuZ3RoIT09MHx8aS5sZW5ndGghPT0wKXt0Ll9maXJpbmc9ITA7ZG97dC5fcmVmaXJlPSExO2xldCBzPWUudmFsdWVzLnNsaWNlKDApLG89aS52YWx1ZXMuc2xpY2UoMCkscj1uLnZhbHVlcy5zbGljZSgwKTtlLnJlbW92ZUFsbCgpLGkucmVtb3ZlQWxsKCksbi5yZW1vdmVBbGwoKSx0Ll9jb2xsZWN0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHQscyxvLHIpfXdoaWxlKHQuX3JlZmlyZSk7dC5fZmlyaW5nPSExfX19ZnVuY3Rpb24gVG8odCl7dGhpcy5fb3duZXI9dCx0aGlzLl9lbnRpdGllcz1uZXcgd0UsdGhpcy5fYWRkZWRFbnRpdGllcz1uZXcgd0UsdGhpcy5fcmVtb3ZlZEVudGl0aWVzPW5ldyB3RSx0aGlzLl9jaGFuZ2VkRW50aXRpZXM9bmV3IHdFLHRoaXMuX3N1c3BlbmRDb3VudD0wLHRoaXMuX2NvbGxlY3Rpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9pZD1HcygpLHRoaXMuX3Nob3c9ITAsdGhpcy5fZmlyaW5nPSExLHRoaXMuX3JlZmlyZT0hMX12YXIgZDMsbTMsZjM9TygoKT0+e3J3KCk7aWgoKTttdCgpO1Z0KCk7eGkoKTtodygpO1ZyKCk7bE4oKTtPYigpO2QzPXtpZDp2b2lkIDB9O1RvLnByb3RvdHlwZS5zdXNwZW5kRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5fc3VzcGVuZENvdW50Kyt9O1RvLnByb3RvdHlwZS5yZXN1bWVFdmVudHM9ZnVuY3Rpb24oKXtpZih0aGlzLl9zdXNwZW5kQ291bnQ9PT0wKXRocm93IG5ldyBZKCJyZXN1bWVFdmVudHMgY2FuIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHN1c3BlbmRFdmVudHMuIik7dGhpcy5fc3VzcGVuZENvdW50LS0sWV8odGhpcyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRvLnByb3RvdHlwZSx7Y29sbGVjdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xsZWN0aW9uQ2hhbmdlZH19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9fSx2YWx1ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdGllcy52YWx1ZXN9fSxzaG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd30sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtpZih0PT09dGhpcy5fc2hvdylyZXR1cm47dGhpcy5zdXNwZW5kRXZlbnRzKCk7bGV0IGUsaT1bXSxuPXRoaXMuX2VudGl0aWVzLnZhbHVlcyxzPW4ubGVuZ3RoO2ZvcihlPTA7ZTxzO2UrKylpLnB1c2gobltlXS5pc1Nob3dpbmcpO2Zvcih0aGlzLl9zaG93PXQsZT0wO2U8cztlKyspe2xldCBvPWlbZV0scj1uW2VdO28hPT1yLmlzU2hvd2luZyYmci5kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHIsImlzU2hvd2luZyIsci5pc1Nob3dpbmcsbyl9dGhpcy5yZXN1bWVFdmVudHMoKX19LG93bmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3duZXJ9fX0pO1RvLnByb3RvdHlwZS5jb21wdXRlQXZhaWxhYmlsaXR5PWZ1bmN0aW9uKCl7bGV0IHQ9ZGguTUFYSU1VTV9WQUxVRSxlPWRoLk1JTklNVU1fVkFMVUUsaT10aGlzLl9lbnRpdGllcy52YWx1ZXM7Zm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7bisrKXtsZXQgcj1pW25dLmF2YWlsYWJpbGl0eTtpZihtKHIpKXtsZXQgYT1yLnN0YXJ0LGg9ci5zdG9wO1plLmxlc3NUaGFuKGEsdCkmJiFhLmVxdWFscyhkaC5NSU5JTVVNX1ZBTFVFKSYmKHQ9YSksWmUuZ3JlYXRlclRoYW4oaCxlKSYmIWguZXF1YWxzKGRoLk1BWElNVU1fVkFMVUUpJiYoZT1oKX19cmV0dXJuIGRoLk1BWElNVU1fVkFMVUUuZXF1YWxzKHQpJiYodD1kaC5NSU5JTVVNX1ZBTFVFKSxkaC5NSU5JTVVNX1ZBTFVFLmVxdWFscyhlKSYmKGU9ZGguTUFYSU1VTV9WQUxVRSksbmV3IE5JKHtzdGFydDp0LHN0b3A6ZX0pfTtUby5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJlbnRpdHkgaXMgcmVxdWlyZWQuIik7dCBpbnN0YW5jZW9mIHJmfHwodD1uZXcgcmYodCkpO2xldCBlPXQuaWQsaT10aGlzLl9lbnRpdGllcztpZihpLmNvbnRhaW5zKGUpKXRocm93IG5ldyBZKGBBbiBlbnRpdHkgd2l0aCBpZCAke2V9IGFscmVhZHkgZXhpc3RzIGluIHRoaXMgY29sbGVjdGlvbi5gKTtyZXR1cm4gdC5lbnRpdHlDb2xsZWN0aW9uPXRoaXMsaS5zZXQoZSx0KSx0aGlzLl9yZW1vdmVkRW50aXRpZXMucmVtb3ZlKGUpfHx0aGlzLl9hZGRlZEVudGl0aWVzLnNldChlLHQpLHQuZGVmaW5pdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihUby5wcm90b3R5cGUuX29uRW50aXR5RGVmaW5pdGlvbkNoYW5nZWQsdGhpcyksWV8odGhpcyksdH07VG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT90aGlzLnJlbW92ZUJ5SWQodC5pZCk6ITF9O1RvLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZW50aXR5IGlzIHJlcXVpcmVkIik7cmV0dXJuIHRoaXMuX2VudGl0aWVzLmdldCh0LmlkKT09PXR9O1RvLnByb3RvdHlwZS5yZW1vdmVCeUlkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXJldHVybiExO2xldCBpPXRoaXMuX2VudGl0aWVzLmdldCh0KTtyZXR1cm4gdGhpcy5fZW50aXRpZXMucmVtb3ZlKHQpPyh0aGlzLl9hZGRlZEVudGl0aWVzLnJlbW92ZSh0KXx8KHRoaXMuX3JlbW92ZWRFbnRpdGllcy5zZXQodCxpKSx0aGlzLl9jaGFuZ2VkRW50aXRpZXMucmVtb3ZlKHQpKSx0aGlzLl9lbnRpdGllcy5yZW1vdmUodCksaS5kZWZpbml0aW9uQ2hhbmdlZC5yZW1vdmVFdmVudExpc3RlbmVyKFRvLnByb3RvdHlwZS5fb25FbnRpdHlEZWZpbml0aW9uQ2hhbmdlZCx0aGlzKSxZXyh0aGlzKSwhMCk6ITF9O1RvLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9lbnRpdGllcyxlPXQubGVuZ3RoLGk9dC52YWx1ZXMsbj10aGlzLl9hZGRlZEVudGl0aWVzLHM9dGhpcy5fcmVtb3ZlZEVudGl0aWVzO2ZvcihsZXQgbz0wO288ZTtvKyspe2xldCByPWlbb10sYT1yLmlkLGg9bi5nZXQoYSk7bShoKXx8KHIuZGVmaW5pdGlvbkNoYW5nZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcihUby5wcm90b3R5cGUuX29uRW50aXR5RGVmaW5pdGlvbkNoYW5nZWQsdGhpcykscy5zZXQoYSxyKSl9dC5yZW1vdmVBbGwoKSxuLnJlbW92ZUFsbCgpLHRoaXMuX2NoYW5nZWRFbnRpdGllcy5yZW1vdmVBbGwoKSxZXyh0aGlzKX07VG8ucHJvdG90eXBlLmdldEJ5SWQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0aGlzLl9lbnRpdGllcy5nZXQodCl9O1RvLnByb3RvdHlwZS5nZXRPckNyZWF0ZUVudGl0eT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5fZW50aXRpZXMuZ2V0KHQpO3JldHVybiBtKGUpfHwoZDMuaWQ9dCxlPW5ldyByZihkMyksdGhpcy5hZGQoZSkpLGV9O1RvLnByb3RvdHlwZS5fb25FbnRpdHlEZWZpbml0aW9uQ2hhbmdlZD1mdW5jdGlvbih0KXtsZXQgZT10LmlkO3RoaXMuX2FkZGVkRW50aXRpZXMuY29udGFpbnMoZSl8fHRoaXMuX2NoYW5nZWRFbnRpdGllcy5zZXQoZSx0KSxZXyh0aGlzKX07bTM9VG99KTtmdW5jdGlvbiBWYih0KXt0aGlzLl9uYW1lPXQsdGhpcy5fY2xvY2s9dm9pZCAwLHRoaXMuX2NoYW5nZWQ9bmV3IFdlLHRoaXMuX2Vycm9yPW5ldyBXZSx0aGlzLl9pc0xvYWRpbmc9ITEsdGhpcy5fbG9hZGluZz1uZXcgV2UsdGhpcy5fZW50aXR5Q29sbGVjdGlvbj1uZXcgbTModGhpcyksdGhpcy5fZW50aXR5Q2x1c3Rlcj1uZXcgc3d9dmFyIFNfLEdiPU8oKCk9PnttdCgpO1Z0KCk7eGkoKTskQigpO293KCk7ZjMoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWYi5wcm90b3R5cGUse25hbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZSE9PXQmJih0aGlzLl9uYW1lPXQsdGhpcy5fY2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19LGNsb2NrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xvY2t9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jbG9jayE9PXQmJih0aGlzLl9jbG9jaz10LHRoaXMuX2NoYW5nZWQucmFpc2VFdmVudCh0aGlzKSl9fSxlbnRpdGllczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0eUNvbGxlY3Rpb259fSxpc0xvYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0xvYWRpbmd9LHNldDpmdW5jdGlvbih0KXtxQi5zZXRMb2FkaW5nKHRoaXMsdCl9fSxjaGFuZ2VkRXZlbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGFuZ2VkfX0sZXJyb3JFdmVudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Vycm9yfX0sbG9hZGluZ0V2ZW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGluZ319LHNob3c6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLnNob3d9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLnNob3c9dH19LGNsdXN0ZXJpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdHlDbHVzdGVyfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIG11c3QgYmUgZGVmaW5lZC4iKTt0aGlzLl9lbnRpdHlDbHVzdGVyPXR9fX0pO1ZiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuITB9O1NfPVZifSk7ZnVuY3Rpb24genIodCxlKXtlPVooZSwwKTtsZXQgaTtpZihlPjApe2k9bmV3IEFycmF5KGUpO2ZvcihsZXQgbj0wO248ZTtuKyspaVtuXT1sfXRoaXMuX251bWJlck9mRGVyaXZhdGl2ZXM9ZSx0aGlzLl9wcm9wZXJ0eT1uZXcgZHAobCxpKSx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fcmVmZXJlbmNlRnJhbWU9Wih0LCRpLkZJWEVEKSx0aGlzLl9wcm9wZXJ0eS5fZGVmaW5pdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbigpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9LHRoaXMpfXZhciBFMyxfMz1PKCgpPT57SHQoKTthZSgpO2J0KCk7bXQoKTtWdCgpO3hpKCk7aWMoKTtJYigpO0hsKCk7YmIoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh6ci5wcm90b3R5cGUse2lzQ29uc3RhbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5pc0NvbnN0YW50fX0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHJlZmVyZW5jZUZyYW1lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVmZXJlbmNlRnJhbWV9fSxpbnRlcnBvbGF0aW9uRGVncmVlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydHkuaW50ZXJwb2xhdGlvbkRlZ3JlZX19LGludGVycG9sYXRpb25BbGdvcml0aG06e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5pbnRlcnBvbGF0aW9uQWxnb3JpdGhtfX0sbnVtYmVyT2ZEZXJpdmF0aXZlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX251bWJlck9mRGVyaXZhdGl2ZXN9fSxmb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGV9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9wcm9wZXJ0eS5mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9dH19LGZvcndhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5mb3J3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkuZm9yd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbj10fX0sYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5LmJhY2t3YXJkRXh0cmFwb2xhdGlvblR5cGV9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9wcm9wZXJ0eS5iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlPXR9fSxiYWNrd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5LmJhY2t3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkuYmFja3dhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb249dH19fSk7enIucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lKHQsJGkuRklYRUQsZSl9O3pyLnByb3RvdHlwZS5nZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWU9ZnVuY3Rpb24odCxlLGkpe2lmKHAuZGVmaW5lZCgidGltZSIsdCkscC5kZWZpbmVkKCJyZWZlcmVuY2VGcmFtZSIsZSksaT10aGlzLl9wcm9wZXJ0eS5nZXRWYWx1ZSh0LGkpLG0oaSkpcmV0dXJuIEFwLmNvbnZlcnRUb1JlZmVyZW5jZUZyYW1lKHQsaSx0aGlzLl9yZWZlcmVuY2VGcmFtZSxlLGkpfTt6ci5wcm90b3R5cGUuc2V0SW50ZXJwb2xhdGlvbk9wdGlvbnM9ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkuc2V0SW50ZXJwb2xhdGlvbk9wdGlvbnModCl9O3pyLnByb3RvdHlwZS5hZGRTYW1wbGU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXRoaXMuX251bWJlck9mRGVyaXZhdGl2ZXM7aWYobj4wJiYoIW0oaSl8fGkubGVuZ3RoIT09bikpdGhyb3cgbmV3IFkoImRlcml2YXRpdmVzIGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZGVyaXZhdGl2ZXMuIik7dGhpcy5fcHJvcGVydHkuYWRkU2FtcGxlKHQsZSxpKX07enIucHJvdG90eXBlLmFkZFNhbXBsZXM9ZnVuY3Rpb24odCxlLGkpe3RoaXMuX3Byb3BlcnR5LmFkZFNhbXBsZXModCxlLGkpfTt6ci5wcm90b3R5cGUuYWRkU2FtcGxlc1BhY2tlZEFycmF5PWZ1bmN0aW9uKHQsZSl7dGhpcy5fcHJvcGVydHkuYWRkU2FtcGxlc1BhY2tlZEFycmF5KHQsZSl9O3pyLnByb3RvdHlwZS5yZW1vdmVTYW1wbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5LnJlbW92ZVNhbXBsZSh0KX07enIucHJvdG90eXBlLnJlbW92ZVNhbXBsZXM9ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkucmVtb3ZlU2FtcGxlcyh0KX07enIucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fHQgaW5zdGFuY2VvZiB6ciYmT2kuZXF1YWxzKHRoaXMuX3Byb3BlcnR5LHQuX3Byb3BlcnR5KSYmdGhpcy5fcmVmZXJlbmNlRnJhbWU9PT10Ll9yZWZlcmVuY2VGcmFtZX07RTM9enJ9KTt2YXIgYWYsb3IsQ3IsY3QsWGw9TygoKT0+e2FmPTIsb3I9NCxDcj00LGN0PTR9KTt2YXIgUWEsT18sVl8scWwsQmI9TygoKT0+e1FhPW5ldyBJbnQzMkFycmF5KDIpLE9fPW5ldyBGbG9hdDMyQXJyYXkoUWEuYnVmZmVyKSxWXz1uZXcgRmxvYXQ2NEFycmF5KFFhLmJ1ZmZlcikscWw9bmV3IFVpbnQxNkFycmF5KG5ldyBVaW50OEFycmF5KFsxLDBdKS5idWZmZXIpWzBdPT09MX0pO3ZhciBBZixXYj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VVEY4X0JZVEVTPTFdPSJVVEY4X0JZVEVTIix0W3QuVVRGMTZfU1RSSU5HPTJdPSJVVEYxNl9TVFJJTkcifSkoQWZ8fChBZj17fSkpfSk7dmFyICRsLERiPU8oKCk9PntYbCgpO0JiKCk7V2IoKTskbD1jbGFzcyB0e2NvbnN0cnVjdG9yKGUpe3RoaXMuYnl0ZXNfPWUsdGhpcy5wb3NpdGlvbl89MCx0aGlzLnRleHRfZGVjb2Rlcl89bmV3IFRleHREZWNvZGVyfXN0YXRpYyBhbGxvY2F0ZShlKXtyZXR1cm4gbmV3IHQobmV3IFVpbnQ4QXJyYXkoZSkpfWNsZWFyKCl7dGhpcy5wb3NpdGlvbl89MH1ieXRlcygpe3JldHVybiB0aGlzLmJ5dGVzX31wb3NpdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uX31zZXRQb3NpdGlvbihlKXt0aGlzLnBvc2l0aW9uXz1lfWNhcGFjaXR5KCl7cmV0dXJuIHRoaXMuYnl0ZXNfLmxlbmd0aH1yZWFkSW50OChlKXtyZXR1cm4gdGhpcy5yZWFkVWludDgoZSk8PDI0Pj4yNH1yZWFkVWludDgoZSl7cmV0dXJuIHRoaXMuYnl0ZXNfW2VdfXJlYWRJbnQxNihlKXtyZXR1cm4gdGhpcy5yZWFkVWludDE2KGUpPDwxNj4+MTZ9cmVhZFVpbnQxNihlKXtyZXR1cm4gdGhpcy5ieXRlc19bZV18dGhpcy5ieXRlc19bZSsxXTw8OH1yZWFkSW50MzIoZSl7cmV0dXJuIHRoaXMuYnl0ZXNfW2VdfHRoaXMuYnl0ZXNfW2UrMV08PDh8dGhpcy5ieXRlc19bZSsyXTw8MTZ8dGhpcy5ieXRlc19bZSszXTw8MjR9cmVhZFVpbnQzMihlKXtyZXR1cm4gdGhpcy5yZWFkSW50MzIoZSk+Pj4wfXJlYWRJbnQ2NChlKXtyZXR1cm4gQmlnSW50LmFzSW50Tig2NCxCaWdJbnQodGhpcy5yZWFkVWludDMyKGUpKSsoQmlnSW50KHRoaXMucmVhZFVpbnQzMihlKzQpKTw8QmlnSW50KDMyKSkpfXJlYWRVaW50NjQoZSl7cmV0dXJuIEJpZ0ludC5hc1VpbnROKDY0LEJpZ0ludCh0aGlzLnJlYWRVaW50MzIoZSkpKyhCaWdJbnQodGhpcy5yZWFkVWludDMyKGUrNCkpPDxCaWdJbnQoMzIpKSl9cmVhZEZsb2F0MzIoZSl7cmV0dXJuIFFhWzBdPXRoaXMucmVhZEludDMyKGUpLE9fWzBdfXJlYWRGbG9hdDY0KGUpe3JldHVybiBRYVtxbD8wOjFdPXRoaXMucmVhZEludDMyKGUpLFFhW3FsPzE6MF09dGhpcy5yZWFkSW50MzIoZSs0KSxWX1swXX13cml0ZUludDgoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pfXdyaXRlVWludDgoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pfXdyaXRlSW50MTYoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pLHRoaXMuYnl0ZXNfW2UrMV09aT4+OH13cml0ZVVpbnQxNihlLGkpe3RoaXMuYnl0ZXNfW2VdPWksdGhpcy5ieXRlc19bZSsxXT1pPj44fXdyaXRlSW50MzIoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pLHRoaXMuYnl0ZXNfW2UrMV09aT4+OCx0aGlzLmJ5dGVzX1tlKzJdPWk+PjE2LHRoaXMuYnl0ZXNfW2UrM109aT4+MjR9d3JpdGVVaW50MzIoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pLHRoaXMuYnl0ZXNfW2UrMV09aT4+OCx0aGlzLmJ5dGVzX1tlKzJdPWk+PjE2LHRoaXMuYnl0ZXNfW2UrM109aT4+MjR9d3JpdGVJbnQ2NChlLGkpe3RoaXMud3JpdGVJbnQzMihlLE51bWJlcihCaWdJbnQuYXNJbnROKDMyLGkpKSksdGhpcy53cml0ZUludDMyKGUrNCxOdW1iZXIoQmlnSW50LmFzSW50TigzMixpPj5CaWdJbnQoMzIpKSkpfXdyaXRlVWludDY0KGUsaSl7dGhpcy53cml0ZVVpbnQzMihlLE51bWJlcihCaWdJbnQuYXNVaW50TigzMixpKSkpLHRoaXMud3JpdGVVaW50MzIoZSs0LE51bWJlcihCaWdJbnQuYXNVaW50TigzMixpPj5CaWdJbnQoMzIpKSkpfXdyaXRlRmxvYXQzMihlLGkpe09fWzBdPWksdGhpcy53cml0ZUludDMyKGUsUWFbMF0pfXdyaXRlRmxvYXQ2NChlLGkpe1ZfWzBdPWksdGhpcy53cml0ZUludDMyKGUsUWFbcWw/MDoxXSksdGhpcy53cml0ZUludDMyKGUrNCxRYVtxbD8xOjBdKX1nZXRCdWZmZXJJZGVudGlmaWVyKCl7aWYodGhpcy5ieXRlc18ubGVuZ3RoPHRoaXMucG9zaXRpb25fKzQrNCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBCeXRlQnVmZmVyIGlzIHRvbyBzaG9ydCB0byBjb250YWluIGFuIGlkZW50aWZpZXIuIik7bGV0IGU9IiI7Zm9yKGxldCBpPTA7aTw0O2krKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMucmVhZEludDgodGhpcy5wb3NpdGlvbl8rNCtpKSk7cmV0dXJuIGV9X19vZmZzZXQoZSxpKXtsZXQgbj1lLXRoaXMucmVhZEludDMyKGUpO3JldHVybiBpPHRoaXMucmVhZEludDE2KG4pP3RoaXMucmVhZEludDE2KG4raSk6MH1fX3VuaW9uKGUsaSl7cmV0dXJuIGUuYmJfcG9zPWkrdGhpcy5yZWFkSW50MzIoaSksZS5iYj10aGlzLGV9X19zdHJpbmcoZSxpKXtlKz10aGlzLnJlYWRJbnQzMihlKTtsZXQgbj10aGlzLnJlYWRJbnQzMihlKTtlKz00O2xldCBzPXRoaXMuYnl0ZXNfLnN1YmFycmF5KGUsZStuKTtyZXR1cm4gaT09PUFmLlVURjhfQllURVM/czp0aGlzLnRleHRfZGVjb2Rlcl8uZGVjb2RlKHMpfV9fdW5pb25fd2l0aF9zdHJpbmcoZSxpKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP3RoaXMuX19zdHJpbmcoaSk6dGhpcy5fX3VuaW9uKGUsaSl9X19pbmRpcmVjdChlKXtyZXR1cm4gZSt0aGlzLnJlYWRJbnQzMihlKX1fX3ZlY3RvcihlKXtyZXR1cm4gZSt0aGlzLnJlYWRJbnQzMihlKSs0fV9fdmVjdG9yX2xlbihlKXtyZXR1cm4gdGhpcy5yZWFkSW50MzIoZSt0aGlzLnJlYWRJbnQzMihlKSl9X19oYXNfaWRlbnRpZmllcihlKXtpZihlLmxlbmd0aCE9NCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBmaWxlIGlkZW50aWZpZXIgbXVzdCBiZSBsZW5ndGggIis0KTtmb3IobGV0IGk9MDtpPDQ7aSsrKWlmKGUuY2hhckNvZGVBdChpKSE9dGhpcy5yZWFkSW50OCh0aGlzLnBvc2l0aW9uKCkrNCtpKSlyZXR1cm4hMTtyZXR1cm4hMH1jcmVhdGVTY2FsYXJMaXN0KGUsaSl7bGV0IG49W107Zm9yKGxldCBzPTA7czxpOysrcyl7bGV0IG89ZShzKTtvIT09bnVsbCYmbi5wdXNoKG8pfXJldHVybiBufWNyZWF0ZU9iakxpc3QoZSxpKXtsZXQgbj1bXTtmb3IobGV0IHM9MDtzPGk7KytzKXtsZXQgbz1lKHMpO28hPT1udWxsJiZuLnB1c2goby51bnBhY2soKSl9cmV0dXJuIG59fX0pO3ZhciBtcCxSMz1PKCgpPT57RGIoKTtYbCgpO21wPWNsYXNzIHR7Y29uc3RydWN0b3IoZSl7dGhpcy5taW5hbGlnbj0xLHRoaXMudnRhYmxlPW51bGwsdGhpcy52dGFibGVfaW5fdXNlPTAsdGhpcy5pc05lc3RlZD0hMSx0aGlzLm9iamVjdF9zdGFydD0wLHRoaXMudnRhYmxlcz1bXSx0aGlzLnZlY3Rvcl9udW1fZWxlbXM9MCx0aGlzLmZvcmNlX2RlZmF1bHRzPSExLHRoaXMuc3RyaW5nX21hcHM9bnVsbCx0aGlzLnRleHRfZW5jb2Rlcj1uZXcgVGV4dEVuY29kZXI7bGV0IGk7ZT9pPWU6aT0xMDI0LHRoaXMuYmI9JGwuYWxsb2NhdGUoaSksdGhpcy5zcGFjZT1pfWNsZWFyKCl7dGhpcy5iYi5jbGVhcigpLHRoaXMuc3BhY2U9dGhpcy5iYi5jYXBhY2l0eSgpLHRoaXMubWluYWxpZ249MSx0aGlzLnZ0YWJsZT1udWxsLHRoaXMudnRhYmxlX2luX3VzZT0wLHRoaXMuaXNOZXN0ZWQ9ITEsdGhpcy5vYmplY3Rfc3RhcnQ9MCx0aGlzLnZ0YWJsZXM9W10sdGhpcy52ZWN0b3JfbnVtX2VsZW1zPTAsdGhpcy5mb3JjZV9kZWZhdWx0cz0hMSx0aGlzLnN0cmluZ19tYXBzPW51bGx9Zm9yY2VEZWZhdWx0cyhlKXt0aGlzLmZvcmNlX2RlZmF1bHRzPWV9ZGF0YUJ1ZmZlcigpe3JldHVybiB0aGlzLmJifWFzVWludDhBcnJheSgpe3JldHVybiB0aGlzLmJiLmJ5dGVzKCkuc3ViYXJyYXkodGhpcy5iYi5wb3NpdGlvbigpLHRoaXMuYmIucG9zaXRpb24oKSt0aGlzLm9mZnNldCgpKX1wcmVwKGUsaSl7ZT50aGlzLm1pbmFsaWduJiYodGhpcy5taW5hbGlnbj1lKTtsZXQgbj1+KHRoaXMuYmIuY2FwYWNpdHkoKS10aGlzLnNwYWNlK2kpKzEmZS0xO2Zvcig7dGhpcy5zcGFjZTxuK2UraTspe2xldCBzPXRoaXMuYmIuY2FwYWNpdHkoKTt0aGlzLmJiPXQuZ3Jvd0J5dGVCdWZmZXIodGhpcy5iYiksdGhpcy5zcGFjZSs9dGhpcy5iYi5jYXBhY2l0eSgpLXN9dGhpcy5wYWQobil9cGFkKGUpe2ZvcihsZXQgaT0wO2k8ZTtpKyspdGhpcy5iYi53cml0ZUludDgoLS10aGlzLnNwYWNlLDApfXdyaXRlSW50OChlKXt0aGlzLmJiLndyaXRlSW50OCh0aGlzLnNwYWNlLT0xLGUpfXdyaXRlSW50MTYoZSl7dGhpcy5iYi53cml0ZUludDE2KHRoaXMuc3BhY2UtPTIsZSl9d3JpdGVJbnQzMihlKXt0aGlzLmJiLndyaXRlSW50MzIodGhpcy5zcGFjZS09NCxlKX13cml0ZUludDY0KGUpe3RoaXMuYmIud3JpdGVJbnQ2NCh0aGlzLnNwYWNlLT04LGUpfXdyaXRlRmxvYXQzMihlKXt0aGlzLmJiLndyaXRlRmxvYXQzMih0aGlzLnNwYWNlLT00LGUpfXdyaXRlRmxvYXQ2NChlKXt0aGlzLmJiLndyaXRlRmxvYXQ2NCh0aGlzLnNwYWNlLT04LGUpfWFkZEludDgoZSl7dGhpcy5wcmVwKDEsMCksdGhpcy53cml0ZUludDgoZSl9YWRkSW50MTYoZSl7dGhpcy5wcmVwKDIsMCksdGhpcy53cml0ZUludDE2KGUpfWFkZEludDMyKGUpe3RoaXMucHJlcCg0LDApLHRoaXMud3JpdGVJbnQzMihlKX1hZGRJbnQ2NChlKXt0aGlzLnByZXAoOCwwKSx0aGlzLndyaXRlSW50NjQoZSl9YWRkRmxvYXQzMihlKXt0aGlzLnByZXAoNCwwKSx0aGlzLndyaXRlRmxvYXQzMihlKX1hZGRGbG9hdDY0KGUpe3RoaXMucHJlcCg4LDApLHRoaXMud3JpdGVGbG9hdDY0KGUpfWFkZEZpZWxkSW50OChlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRJbnQ4KGkpLHRoaXMuc2xvdChlKSl9YWRkRmllbGRJbnQxNihlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRJbnQxNihpKSx0aGlzLnNsb3QoZSkpfWFkZEZpZWxkSW50MzIoZSxpLG4peyh0aGlzLmZvcmNlX2RlZmF1bHRzfHxpIT1uKSYmKHRoaXMuYWRkSW50MzIoaSksdGhpcy5zbG90KGUpKX1hZGRGaWVsZEludDY0KGUsaSxuKXsodGhpcy5mb3JjZV9kZWZhdWx0c3x8aSE9PW4pJiYodGhpcy5hZGRJbnQ2NChpKSx0aGlzLnNsb3QoZSkpfWFkZEZpZWxkRmxvYXQzMihlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRGbG9hdDMyKGkpLHRoaXMuc2xvdChlKSl9YWRkRmllbGRGbG9hdDY0KGUsaSxuKXsodGhpcy5mb3JjZV9kZWZhdWx0c3x8aSE9bikmJih0aGlzLmFkZEZsb2F0NjQoaSksdGhpcy5zbG90KGUpKX1hZGRGaWVsZE9mZnNldChlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRPZmZzZXQoaSksdGhpcy5zbG90KGUpKX1hZGRGaWVsZFN0cnVjdChlLGksbil7aSE9biYmKHRoaXMubmVzdGVkKGkpLHRoaXMuc2xvdChlKSl9bmVzdGVkKGUpe2lmKGUhPXRoaXMub2Zmc2V0KCkpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogc3RydWN0IG11c3QgYmUgc2VyaWFsaXplZCBpbmxpbmUuIil9bm90TmVzdGVkKCl7aWYodGhpcy5pc05lc3RlZCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBvYmplY3Qgc2VyaWFsaXphdGlvbiBtdXN0IG5vdCBiZSBuZXN0ZWQuIil9c2xvdChlKXt0aGlzLnZ0YWJsZSE9PW51bGwmJih0aGlzLnZ0YWJsZVtlXT10aGlzLm9mZnNldCgpKX1vZmZzZXQoKXtyZXR1cm4gdGhpcy5iYi5jYXBhY2l0eSgpLXRoaXMuc3BhY2V9c3RhdGljIGdyb3dCeXRlQnVmZmVyKGUpe2xldCBpPWUuY2FwYWNpdHkoKTtpZihpJjMyMjEyMjU0NzIpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogY2Fubm90IGdyb3cgYnVmZmVyIGJleW9uZCAyIGdpZ2FieXRlcy4iKTtsZXQgbj1pPDwxLHM9JGwuYWxsb2NhdGUobik7cmV0dXJuIHMuc2V0UG9zaXRpb24obi1pKSxzLmJ5dGVzKCkuc2V0KGUuYnl0ZXMoKSxuLWkpLHN9YWRkT2Zmc2V0KGUpe3RoaXMucHJlcCg0LDApLHRoaXMud3JpdGVJbnQzMih0aGlzLm9mZnNldCgpLWUrNCl9c3RhcnRPYmplY3QoZSl7dGhpcy5ub3ROZXN0ZWQoKSx0aGlzLnZ0YWJsZT09bnVsbCYmKHRoaXMudnRhYmxlPVtdKSx0aGlzLnZ0YWJsZV9pbl91c2U9ZTtmb3IobGV0IGk9MDtpPGU7aSsrKXRoaXMudnRhYmxlW2ldPTA7dGhpcy5pc05lc3RlZD0hMCx0aGlzLm9iamVjdF9zdGFydD10aGlzLm9mZnNldCgpfWVuZE9iamVjdCgpe2lmKHRoaXMudnRhYmxlPT1udWxsfHwhdGhpcy5pc05lc3RlZCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBlbmRPYmplY3QgY2FsbGVkIHdpdGhvdXQgc3RhcnRPYmplY3QiKTt0aGlzLmFkZEludDMyKDApO2xldCBlPXRoaXMub2Zmc2V0KCksaT10aGlzLnZ0YWJsZV9pbl91c2UtMTtmb3IoO2k+PTAmJnRoaXMudnRhYmxlW2ldPT0wO2ktLSk7bGV0IG49aSsxO2Zvcig7aT49MDtpLS0pdGhpcy5hZGRJbnQxNih0aGlzLnZ0YWJsZVtpXSE9MD9lLXRoaXMudnRhYmxlW2ldOjApO2xldCBzPTI7dGhpcy5hZGRJbnQxNihlLXRoaXMub2JqZWN0X3N0YXJ0KTtsZXQgbz0obitzKSoyO3RoaXMuYWRkSW50MTYobyk7bGV0IHI9MCxhPXRoaXMuc3BhY2U7dDpmb3IoaT0wO2k8dGhpcy52dGFibGVzLmxlbmd0aDtpKyspe2xldCBoPXRoaXMuYmIuY2FwYWNpdHkoKS10aGlzLnZ0YWJsZXNbaV07aWYobz09dGhpcy5iYi5yZWFkSW50MTYoaCkpe2ZvcihsZXQgQT0yO0E8bztBKz0yKWlmKHRoaXMuYmIucmVhZEludDE2KGErQSkhPXRoaXMuYmIucmVhZEludDE2KGgrQSkpY29udGludWUgdDtyPXRoaXMudnRhYmxlc1tpXTticmVha319cmV0dXJuIHI/KHRoaXMuc3BhY2U9dGhpcy5iYi5jYXBhY2l0eSgpLWUsdGhpcy5iYi53cml0ZUludDMyKHRoaXMuc3BhY2Usci1lKSk6KHRoaXMudnRhYmxlcy5wdXNoKHRoaXMub2Zmc2V0KCkpLHRoaXMuYmIud3JpdGVJbnQzMih0aGlzLmJiLmNhcGFjaXR5KCktZSx0aGlzLm9mZnNldCgpLWUpKSx0aGlzLmlzTmVzdGVkPSExLGV9ZmluaXNoKGUsaSxuKXtsZXQgcz1uPzQ6MDtpZihpKXtsZXQgbz1pO2lmKHRoaXMucHJlcCh0aGlzLm1pbmFsaWduLDgrcyksby5sZW5ndGghPTQpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogZmlsZSBpZGVudGlmaWVyIG11c3QgYmUgbGVuZ3RoICIrNCk7Zm9yKGxldCByPTM7cj49MDtyLS0pdGhpcy53cml0ZUludDgoby5jaGFyQ29kZUF0KHIpKX10aGlzLnByZXAodGhpcy5taW5hbGlnbiw0K3MpLHRoaXMuYWRkT2Zmc2V0KGUpLHMmJnRoaXMuYWRkSW50MzIodGhpcy5iYi5jYXBhY2l0eSgpLXRoaXMuc3BhY2UpLHRoaXMuYmIuc2V0UG9zaXRpb24odGhpcy5zcGFjZSl9ZmluaXNoU2l6ZVByZWZpeGVkKGUsaSl7dGhpcy5maW5pc2goZSxpLCEwKX1yZXF1aXJlZEZpZWxkKGUsaSl7bGV0IG49dGhpcy5iYi5jYXBhY2l0eSgpLWUscz1uLXRoaXMuYmIucmVhZEludDMyKG4pO2lmKCEoaTx0aGlzLmJiLnJlYWRJbnQxNihzKSYmdGhpcy5iYi5yZWFkSW50MTYocytpKSE9MCkpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogZmllbGQgIitpKyIgbXVzdCBiZSBzZXQiKX1zdGFydFZlY3RvcihlLGksbil7dGhpcy5ub3ROZXN0ZWQoKSx0aGlzLnZlY3Rvcl9udW1fZWxlbXM9aSx0aGlzLnByZXAoNCxlKmkpLHRoaXMucHJlcChuLGUqaSl9ZW5kVmVjdG9yKCl7cmV0dXJuIHRoaXMud3JpdGVJbnQzMih0aGlzLnZlY3Rvcl9udW1fZWxlbXMpLHRoaXMub2Zmc2V0KCl9Y3JlYXRlU2hhcmVkU3RyaW5nKGUpe2lmKCFlKXJldHVybiAwO2lmKHRoaXMuc3RyaW5nX21hcHN8fCh0aGlzLnN0cmluZ19tYXBzPW5ldyBNYXApLHRoaXMuc3RyaW5nX21hcHMuaGFzKGUpKXJldHVybiB0aGlzLnN0cmluZ19tYXBzLmdldChlKTtsZXQgaT10aGlzLmNyZWF0ZVN0cmluZyhlKTtyZXR1cm4gdGhpcy5zdHJpbmdfbWFwcy5zZXQoZSxpKSxpfWNyZWF0ZVN0cmluZyhlKXtpZihlPT1udWxsKXJldHVybiAwO2xldCBpO2UgaW5zdGFuY2VvZiBVaW50OEFycmF5P2k9ZTppPXRoaXMudGV4dF9lbmNvZGVyLmVuY29kZShlKSx0aGlzLmFkZEludDgoMCksdGhpcy5zdGFydFZlY3RvcigxLGkubGVuZ3RoLDEpLHRoaXMuYmIuc2V0UG9zaXRpb24odGhpcy5zcGFjZS09aS5sZW5ndGgpO2ZvcihsZXQgbj0wLHM9dGhpcy5zcGFjZSxvPXRoaXMuYmIuYnl0ZXMoKTtuPGkubGVuZ3RoO24rKylvW3MrK109aVtuXTtyZXR1cm4gdGhpcy5lbmRWZWN0b3IoKX1jcmVhdGVPYmplY3RPZmZzZXQoZSl7cmV0dXJuIGU9PT1udWxsPzA6dHlwZW9mIGU9PSJzdHJpbmciP3RoaXMuY3JlYXRlU3RyaW5nKGUpOmUucGFjayh0aGlzKX1jcmVhdGVPYmplY3RPZmZzZXRMaXN0KGUpe2xldCBpPVtdO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtsZXQgcz1lW25dO2lmKHMhPT1udWxsKWkucHVzaCh0aGlzLmNyZWF0ZU9iamVjdE9mZnNldChzKSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBBcmd1bWVudCBmb3IgY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCBjYW5ub3QgY29udGFpbiBudWxsLiIpfXJldHVybiBpfWNyZWF0ZVN0cnVjdE9mZnNldExpc3QoZSxpKXtyZXR1cm4gaSh0aGlzLGUubGVuZ3RoKSx0aGlzLmNyZWF0ZU9iamVjdE9mZnNldExpc3QoZS5zbGljZSgpLnJldmVyc2UoKSksdGhpcy5lbmRWZWN0b3IoKX19fSk7dmFyIEV0PXt9O0hlKEV0LHtCdWlsZGVyOigpPT5tcCxCeXRlQnVmZmVyOigpPT4kbCxFbmNvZGluZzooKT0+QWYsRklMRV9JREVOVElGSUVSX0xFTkdUSDooKT0+Q3IsU0laRU9GX0lOVDooKT0+b3IsU0laRU9GX1NIT1JUOigpPT5hZixTSVpFX1BSRUZJWF9MRU5HVEg6KCk9PmN0LGZsb2F0MzI6KCk9Pk9fLGZsb2F0NjQ6KCk9PlZfLGludDMyOigpPT5RYSxpc0xpdHRsZUVuZGlhbjooKT0+cWx9KTt2YXIgX3Q9TygoKT0+e1hsKCk7WGwoKTtYbCgpO1hsKCk7QmIoKTtXYigpO1IzKCk7RGIoKX0pO3ZhciBZYXQsTWIsWjM9TygoKT0+e190KCk7KHtCeXRlQnVmZmVyOllhdH09RXQpLE1iPSh0LGUsaSk9Pnt0PW5ldyBVaW50OEFycmF5KHQpO2xldCBuPW5ldyBpW2Ake2V9Q09MTEVDVElPTlRgXTtyZXR1cm4gaVtgJHtlfUNPTExFQ1RJT05gXVtgZ2V0Um9vdEFzJHtlfUNPTExFQ1RJT05gXShuZXcgWWF0KHQpKS51bnBhY2tUbyhuKSxufX0pO3ZhciBVYj1PKCgpPT57X3QoKX0pO3ZhciBJMz1PKCgpPT57X3QoKTtVYigpfSk7dmFyIHAzPU8oKCk9PntVYigpO0kzKCl9KTt2YXIga2EsR18sZnA9TygoKT0+e190KCk7a2E9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNGcmVxdWVuY3lSYW5nZShlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNGcmVxdWVuY3lSYW5nZShlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1MT1dFUigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVQUEVSKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9c3RhdGljIHN0YXJ0RnJlcXVlbmN5UmFuZ2UoZSl7ZS5zdGFydE9iamVjdCgyKX1zdGF0aWMgYWRkTG93ZXIoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgwLGksMCl9c3RhdGljIGFkZFVwcGVyKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMSxpLDApfXN0YXRpYyBlbmRGcmVxdWVuY3lSYW5nZShlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlRnJlcXVlbmN5UmFuZ2UoZSxpLG4pe3JldHVybiB0LnN0YXJ0RnJlcXVlbmN5UmFuZ2UoZSksdC5hZGRMb3dlcihlLGkpLHQuYWRkVXBwZXIoZSxuKSx0LmVuZEZyZXF1ZW5jeVJhbmdlKGUpfXVucGFjaygpe3JldHVybiBuZXcgR18odGhpcy5MT1dFUigpLHRoaXMuVVBQRVIoKSl9dW5wYWNrVG8oZSl7ZS5MT1dFUj10aGlzLkxPV0VSKCksZS5VUFBFUj10aGlzLlVQUEVSKCl9fSxHXz1jbGFzc3tjb25zdHJ1Y3RvcihlPTAsaT0wKXt0aGlzLkxPV0VSPWUsdGhpcy5VUFBFUj1pfXBhY2soZSl7cmV0dXJuIGthLmNyZWF0ZUZyZXF1ZW5jeVJhbmdlKGUsdGhpcy5MT1dFUix0aGlzLlVQUEVSKX19fSk7dmFyIGJBLEJfLFFiPU8oKCk9PntfdCgpO2ZwKCk7YkE9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNCYW5kKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc0JhbmQoZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9TkFNRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUZSRVFVRU5DWV9SQU5HRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYpO3JldHVybiBpPyhlfHxuZXcga2EpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYl9wb3MraSksdGhpcy5iYik6bnVsbH1zdGF0aWMgc3RhcnRCYW5kKGUpe2Uuc3RhcnRPYmplY3QoMil9c3RhdGljIGFkZE5hbWUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDAsaSwwKX1zdGF0aWMgYWRkRnJlcXVlbmN5UmFuZ2UoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDEsaSwwKX1zdGF0aWMgZW5kQmFuZChlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX11bnBhY2soKXtyZXR1cm4gbmV3IEJfKHRoaXMuTkFNRSgpLHRoaXMuRlJFUVVFTkNZX1JBTkdFKCkhPT1udWxsP3RoaXMuRlJFUVVFTkNZX1JBTkdFKCkudW5wYWNrKCk6bnVsbCl9dW5wYWNrVG8oZSl7ZS5OQU1FPXRoaXMuTkFNRSgpLGUuRlJFUVVFTkNZX1JBTkdFPXRoaXMuRlJFUVVFTkNZX1JBTkdFKCkhPT1udWxsP3RoaXMuRlJFUVVFTkNZX1JBTkdFKCkudW5wYWNrKCk6bnVsbH19LEJfPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCxpPW51bGwpe3RoaXMuTkFNRT1lLHRoaXMuRlJFUVVFTkNZX1JBTkdFPWl9cGFjayhlKXtsZXQgaT10aGlzLk5BTUUhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuTkFNRSk6MCxuPXRoaXMuRlJFUVVFTkNZX1JBTkdFIT09bnVsbD90aGlzLkZSRVFVRU5DWV9SQU5HRS5wYWNrKGUpOjA7cmV0dXJuIGJBLnN0YXJ0QmFuZChlKSxiQS5hZGROYW1lKGUsaSksYkEuYWRkRnJlcXVlbmN5UmFuZ2UoZSxuKSxiQS5lbmRCYW5kKGUpfX19KTt2YXIgTmMsa2I9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuUkVBTD0wXT0iUkVBTCIsdFt0LlNJTVVMQVRFRD0xXT0iU0lNVUxBVEVEIix0W3QuU1lOVEhFVElDPTJdPSJTWU5USEVUSUMifSkoTmN8fChOYz17fSkpfSk7dmFyIGJjLExiPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlVOS05PV049MF09IlVOS05PV04iLHRbdC5PUFRJQ0FMPTFdPSJPUFRJQ0FMIix0W3QuSU5GUkFSRURfU0VOU09SPTJdPSJJTkZSQVJFRF9TRU5TT1IiLHRbdC5VTFRSQVZJT0xFVF9TRU5TT1I9M109IlVMVFJBVklPTEVUX1NFTlNPUiIsdFt0LlhfUkFZX1NFTlNPUj00XT0iWF9SQVlfU0VOU09SIix0W3QuR0FNTUFfUkFZX1NFTlNPUj01XT0iR0FNTUFfUkFZX1NFTlNPUiIsdFt0LlJBREFSPTZdPSJSQURBUiIsdFt0LlBIQVNFRF9BUlJBWV9SQURBUj03XT0iUEhBU0VEX0FSUkFZX1JBREFSIix0W3QuU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSPThdPSJTWU5USEVUSUNfQVBFUlRVUkVfUkFEQVIiLHRbdC5CSVNUQVRJQ19SQURJT19URUxFU0NPUEU9OV09IkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRSIsdFt0LlJBRElPX1RFTEVTQ09QRT0xMF09IlJBRElPX1RFTEVTQ09QRSIsdFt0LkFUTU9TUEhFUklDX1NFTlNPUj0xMV09IkFUTU9TUEhFUklDX1NFTlNPUiIsdFt0LlNQQUNFX1dFQVRIRVJfU0VOU09SPTEyXT0iU1BBQ0VfV0VBVEhFUl9TRU5TT1IiLHRbdC5FTlZJUk9OTUVOVEFMX1NFTlNPUj0xM109IkVOVklST05NRU5UQUxfU0VOU09SIix0W3QuU0VJU01JQ19TRU5TT1I9MTRdPSJTRUlTTUlDX1NFTlNPUiIsdFt0LkdSQVZJTUVUUklDX1NFTlNPUj0xNV09IkdSQVZJTUVUUklDX1NFTlNPUiIsdFt0Lk1BR05FVElDX1NFTlNPUj0xNl09Ik1BR05FVElDX1NFTlNPUiIsdFt0LkVMRUNUUk9NQUdORVRJQ19TRU5TT1I9MTddPSJFTEVDVFJPTUFHTkVUSUNfU0VOU09SIix0W3QuVEhFUk1BTF9TRU5TT1I9MThdPSJUSEVSTUFMX1NFTlNPUiIsdFt0LkNIRU1JQ0FMX1NFTlNPUj0xOV09IkNIRU1JQ0FMX1NFTlNPUiIsdFt0LkJJT0xPR0lDQUxfU0VOU09SPTIwXT0iQklPTE9HSUNBTF9TRU5TT1IiLHRbdC5SQURJQVRJT05fU0VOU09SPTIxXT0iUkFESUFUSU9OX1NFTlNPUiIsdFt0LlBBUlRJQ0xFX0RFVEVDVE9SPTIyXT0iUEFSVElDTEVfREVURUNUT1IiLHRbdC5MSURBUj0yM109IkxJREFSIix0W3QuU09OQVI9MjRdPSJTT05BUiIsdFt0LlRFTEVTQ09QRT0yNV09IlRFTEVTQ09QRSIsdFt0LlNQRUNUUk9TQ09QSUNfU0VOU09SPTI2XT0iU1BFQ1RST1NDT1BJQ19TRU5TT1IiLHRbdC5QSE9UT01FVFJJQ19TRU5TT1I9MjddPSJQSE9UT01FVFJJQ19TRU5TT1IiLHRbdC5QT0xBUklNRVRSSUNfU0VOU09SPTI4XT0iUE9MQVJJTUVUUklDX1NFTlNPUiIsdFt0LklOVEVSRkVST01FVFJJQ19TRU5TT1I9MjldPSJJTlRFUkZFUk9NRVRSSUNfU0VOU09SIix0W3QuTVVMVElTUEVDVFJBTF9TRU5TT1I9MzBdPSJNVUxUSVNQRUNUUkFMX1NFTlNPUiIsdFt0LkhZUEVSU1BFQ1RSQUxfU0VOU09SPTMxXT0iSFlQRVJTUEVDVFJBTF9TRU5TT1IiLHRbdC5HUFNfUkVDRUlWRVI9MzJdPSJHUFNfUkVDRUlWRVIiLHRbdC5SQURJT19DT01NVU5JQ0FUSU9OUz0zM109IlJBRElPX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfQ09NTVVOSUNBVElPTlM9MzRdPSJMQVNFUl9DT01NVU5JQ0FUSU9OUyIsdFt0LlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUz0zNV09IlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0lOU1RSVU1FTlQ9MzZdPSJMQVNFUl9JTlNUUlVNRU5UIix0W3QuUkZfQU5BTFlaRVI9MzddPSJSRl9BTkFMWVpFUiIsdFt0LklPTk9TUEhFUklDX1NFTlNPUj0zOF09IklPTk9TUEhFUklDX1NFTlNPUiIsdFt0LkxBU0VSX0lNQUdJTkc9MzldPSJMQVNFUl9JTUFHSU5HIix0W3QuT1BUSUNBTF9URUxFU0NPUEU9NDBdPSJPUFRJQ0FMX1RFTEVTQ09QRSIsdFt0LkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMPTQxXT0iSElHSF9SRVNPTFVUSU9OX09QVElDQUwiLHRbdC5SQURJTz00Ml09IlJBRElPIix0W3QuTUlDUk9XQVZFX1RSQU5TTUlUVEVSPTQzXT0iTUlDUk9XQVZFX1RSQU5TTUlUVEVSIix0W3QuUkZfTU9OSVRPUj00NF09IlJGX01PTklUT1IiLHRbdC5IRl9SQURJT19DT01NVU5JQ0FUSU9OUz00NV09IkhGX1JBRElPX0NPTU1VTklDQVRJT05TIn0pKGJjfHwoYmM9e30pKX0pO3ZhciBGYyx5Yj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5saW5lYXI9MF09ImxpbmVhciIsdFt0LmNpcmN1bGFyPTFdPSJjaXJjdWxhciIsdFt0LmVsbGlwdGljYWw9Ml09ImVsbGlwdGljYWwiLHRbdC51bnBvbGFyaXplZD0zXT0idW5wb2xhcml6ZWQifSkoRmN8fChGYz17fSkpfSk7dmFyIFljLHdiPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LnZlcnRpY2FsPTBdPSJ2ZXJ0aWNhbCIsdFt0Lmhvcml6b250YWw9MV09Imhvcml6b250YWwiLHRbdC5sZWZ0SGFuZENpcmN1bGFyPTJdPSJsZWZ0SGFuZENpcmN1bGFyIix0W3QucmlnaHRIYW5kQ2lyY3VsYXI9M109InJpZ2h0SGFuZENpcmN1bGFyIn0pKFljfHwoWWM9e30pKX0pO3ZhciB0ZCxXXyx4Yj1PKCgpPT57X3QoKTt0ZD1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5iYj1udWxsLHRoaXMuYmJfcG9zPTB9X19pbml0KGUsaSl7cmV0dXJuIHRoaXMuYmJfcG9zPWUsdGhpcy5iYj1pLHRoaXN9c3RhdGljIGdldFJvb3RBc1N0b2tlc1BhcmFtZXRlcnMoZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzU3Rva2VzUGFyYW1ldGVycyhlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1JKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9USgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1WKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydFN0b2tlc1BhcmFtZXRlcnMoZSl7ZS5zdGFydE9iamVjdCg0KX1zdGF0aWMgYWRkSShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDAsaSwwKX1zdGF0aWMgYWRkUShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEsaSwwKX1zdGF0aWMgYWRkVShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIsaSwwKX1zdGF0aWMgYWRkVihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDMsaSwwKX1zdGF0aWMgZW5kU3Rva2VzUGFyYW1ldGVycyhlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlU3Rva2VzUGFyYW1ldGVycyhlLGksbixzLG8pe3JldHVybiB0LnN0YXJ0U3Rva2VzUGFyYW1ldGVycyhlKSx0LmFkZEkoZSxpKSx0LmFkZFEoZSxuKSx0LmFkZFUoZSxzKSx0LmFkZFYoZSxvKSx0LmVuZFN0b2tlc1BhcmFtZXRlcnMoZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBXXyh0aGlzLkkoKSx0aGlzLlEoKSx0aGlzLlUoKSx0aGlzLlYoKSl9dW5wYWNrVG8oZSl7ZS5JPXRoaXMuSSgpLGUuUT10aGlzLlEoKSxlLlU9dGhpcy5VKCksZS5WPXRoaXMuVigpfX0sV189Y2xhc3N7Y29uc3RydWN0b3IoZT0wLGk9MCxuPTAscz0wKXt0aGlzLkk9ZSx0aGlzLlE9aSx0aGlzLlU9bix0aGlzLlY9c31wYWNrKGUpe3JldHVybiB0ZC5jcmVhdGVTdG9rZXNQYXJhbWV0ZXJzKGUsdGhpcy5JLHRoaXMuUSx0aGlzLlUsdGhpcy5WKX19fSk7dmFyIFppLERfLEVwPU8oKCk9PntfdCgpO1FiKCk7a2IoKTtMYigpO2ZwKCk7eWIoKTt3YigpO3hiKCk7Wmk9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNJRE0oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzSURNKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRJRE0iKX1JRChlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU5BTUUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw2KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1EQVRBX01PREUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDgpO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6TmMuUkVBTH1VUExJTksoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMCk7cmV0dXJuIGk/KGV8fG5ldyBrYSkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiX3BvcytpKSx0aGlzLmJiKTpudWxsfURPV05MSU5LKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTIpO3JldHVybiBpPyhlfHxuZXcga2EpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYl9wb3MraSksdGhpcy5iYik6bnVsbH1CRUFDT04oZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxNCk7cmV0dXJuIGk/KGV8fG5ldyBrYSkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiX3BvcytpKSx0aGlzLmJiKTpudWxsfUJBTkQoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDE2KTtyZXR1cm4gbj8oaXx8bmV3IGJBKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MrbikrZSo0KSx0aGlzLmJiKTpudWxsfWJhbmRMZW5ndGgoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDE2KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfVBPTEFSSVpBVElPTl9UWVBFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpGYy5saW5lYXJ9U0lNUExFX1BPTEFSSVpBVElPTigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMjApO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6WWMudmVydGljYWx9U1RPS0VTX1BBUkFNRVRFUlMoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMik7cmV0dXJuIGk/KGV8fG5ldyB0ZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiX3BvcytpKSx0aGlzLmJiKTpudWxsfVBPV0VSX1JFUVVJUkVEKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVBPV0VSX1RZUEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNik7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9VFJBTlNNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDI4KTtyZXR1cm4gZT8hIXRoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6ITF9UkVDRUlWRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzApO3JldHVybiBlPyEhdGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTohMX1TRU5TT1JfVFlQRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzIpO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6YmMuVU5LTk9XTn1TT1VSQ0UoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9TEFTVF9PQl9USU1FKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzYpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUxPV0VSX0xFRlRfRUxFVkFUSU9OX0xJTUlUKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVQUEVSX0xFRlRfQVpJTVVUSF9MSU1JVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1MT1dFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TE9XRVJfTEVGVF9BWklNVVRIX0xJTUlUKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0NCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVQUEVSX1JJR0hUX0VMRVZBVElPTl9MSU1JVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1VUFBFUl9SSUdIVF9BWklNVVRIX0xJTUlUKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0OCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDUwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9VVBQRVJfTEVGVF9FTEVWQVRJT05fTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDUyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9UklHSFRfR0VPX0JFTFRfTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TEVGVF9HRU9fQkVMVF9MSU1JVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNTYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NQUdOSVRVREVfTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9VEFTS0FCTEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYwKTtyZXR1cm4gZT8hIXRoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6ITF9c3RhdGljIHN0YXJ0SURNKGUpe2Uuc3RhcnRPYmplY3QoMjkpfXN0YXRpYyBhZGRJZChlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBhZGROYW1lKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxLGksMCl9c3RhdGljIGFkZERhdGFNb2RlKGUsaSl7ZS5hZGRGaWVsZEludDgoMixpLE5jLlJFQUwpfXN0YXRpYyBhZGRVcGxpbmsoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDMsaSwwKX1zdGF0aWMgYWRkRG93bmxpbmsoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDQsaSwwKX1zdGF0aWMgYWRkQmVhY29uKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg1LGksMCl9c3RhdGljIGFkZEJhbmQoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDYsaSwwKX1zdGF0aWMgY3JlYXRlQmFuZFZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRCYW5kVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGksNCl9c3RhdGljIGFkZFBvbGFyaXphdGlvblR5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCg3LGksRmMubGluZWFyKX1zdGF0aWMgYWRkU2ltcGxlUG9sYXJpemF0aW9uKGUsaSl7ZS5hZGRGaWVsZEludDgoOCxpLFljLnZlcnRpY2FsKX1zdGF0aWMgYWRkU3Rva2VzUGFyYW1ldGVycyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoOSxpLDApfXN0YXRpYyBhZGRQb3dlclJlcXVpcmVkKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTAsaSwwKX1zdGF0aWMgYWRkUG93ZXJUeXBlKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxMSxpLDApfXN0YXRpYyBhZGRUcmFuc21pdChlLGkpe2UuYWRkRmllbGRJbnQ4KDEyLCtpLDApfXN0YXRpYyBhZGRSZWNlaXZlKGUsaSl7ZS5hZGRGaWVsZEludDgoMTMsK2ksMCl9c3RhdGljIGFkZFNlbnNvclR5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCgxNCxpLGJjLlVOS05PV04pfXN0YXRpYyBhZGRTb3VyY2UoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDE1LGksMCl9c3RhdGljIGFkZExhc3RPYlRpbWUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDE2LGksMCl9c3RhdGljIGFkZExvd2VyTGVmdEVsZXZhdGlvbkxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTcsaSwwKX1zdGF0aWMgYWRkVXBwZXJMZWZ0QXppbXV0aExpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTgsaSwwKX1zdGF0aWMgYWRkTG93ZXJSaWdodEVsZXZhdGlvbkxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTksaSwwKX1zdGF0aWMgYWRkTG93ZXJMZWZ0QXppbXV0aExpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjAsaSwwKX1zdGF0aWMgYWRkVXBwZXJSaWdodEVsZXZhdGlvbkxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjEsaSwwKX1zdGF0aWMgYWRkVXBwZXJSaWdodEF6aW11dGhMaW1pdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIyLGksMCl9c3RhdGljIGFkZExvd2VyUmlnaHRBemltdXRoTGltaXQoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgyMyxpLDApfXN0YXRpYyBhZGRVcHBlckxlZnRFbGV2YXRpb25MaW1pdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDI0LGksMCl9c3RhdGljIGFkZFJpZ2h0R2VvQmVsdExpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjUsaSwwKX1zdGF0aWMgYWRkTGVmdEdlb0JlbHRMaW1pdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDI2LGksMCl9c3RhdGljIGFkZE1hZ25pdHVkZUxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjcsaSwwKX1zdGF0aWMgYWRkVGFza2FibGUoZSxpKXtlLmFkZEZpZWxkSW50OCgyOCwraSwwKX1zdGF0aWMgZW5kSURNKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hJRE1CdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkSURNIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZElETUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRJRE0iLCEwKX11bnBhY2soKXtyZXR1cm4gbmV3IERfKHRoaXMuSUQoKSx0aGlzLk5BTUUoKSx0aGlzLkRBVEFfTU9ERSgpLHRoaXMuVVBMSU5LKCkhPT1udWxsP3RoaXMuVVBMSU5LKCkudW5wYWNrKCk6bnVsbCx0aGlzLkRPV05MSU5LKCkhPT1udWxsP3RoaXMuRE9XTkxJTksoKS51bnBhY2soKTpudWxsLHRoaXMuQkVBQ09OKCkhPT1udWxsP3RoaXMuQkVBQ09OKCkudW5wYWNrKCk6bnVsbCx0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5CQU5ELmJpbmQodGhpcyksdGhpcy5iYW5kTGVuZ3RoKCkpLHRoaXMuUE9MQVJJWkFUSU9OX1RZUEUoKSx0aGlzLlNJTVBMRV9QT0xBUklaQVRJT04oKSx0aGlzLlNUT0tFU19QQVJBTUVURVJTKCkhPT1udWxsP3RoaXMuU1RPS0VTX1BBUkFNRVRFUlMoKS51bnBhY2soKTpudWxsLHRoaXMuUE9XRVJfUkVRVUlSRUQoKSx0aGlzLlBPV0VSX1RZUEUoKSx0aGlzLlRSQU5TTUlUKCksdGhpcy5SRUNFSVZFKCksdGhpcy5TRU5TT1JfVFlQRSgpLHRoaXMuU09VUkNFKCksdGhpcy5MQVNUX09CX1RJTUUoKSx0aGlzLkxPV0VSX0xFRlRfRUxFVkFUSU9OX0xJTUlUKCksdGhpcy5VUFBFUl9MRUZUX0FaSU1VVEhfTElNSVQoKSx0aGlzLkxPV0VSX1JJR0hUX0VMRVZBVElPTl9MSU1JVCgpLHRoaXMuTE9XRVJfTEVGVF9BWklNVVRIX0xJTUlUKCksdGhpcy5VUFBFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQoKSx0aGlzLlVQUEVSX1JJR0hUX0FaSU1VVEhfTElNSVQoKSx0aGlzLkxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQoKSx0aGlzLlVQUEVSX0xFRlRfRUxFVkFUSU9OX0xJTUlUKCksdGhpcy5SSUdIVF9HRU9fQkVMVF9MSU1JVCgpLHRoaXMuTEVGVF9HRU9fQkVMVF9MSU1JVCgpLHRoaXMuTUFHTklUVURFX0xJTUlUKCksdGhpcy5UQVNLQUJMRSgpKX11bnBhY2tUbyhlKXtlLklEPXRoaXMuSUQoKSxlLk5BTUU9dGhpcy5OQU1FKCksZS5EQVRBX01PREU9dGhpcy5EQVRBX01PREUoKSxlLlVQTElOSz10aGlzLlVQTElOSygpIT09bnVsbD90aGlzLlVQTElOSygpLnVucGFjaygpOm51bGwsZS5ET1dOTElOSz10aGlzLkRPV05MSU5LKCkhPT1udWxsP3RoaXMuRE9XTkxJTksoKS51bnBhY2soKTpudWxsLGUuQkVBQ09OPXRoaXMuQkVBQ09OKCkhPT1udWxsP3RoaXMuQkVBQ09OKCkudW5wYWNrKCk6bnVsbCxlLkJBTkQ9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuQkFORC5iaW5kKHRoaXMpLHRoaXMuYmFuZExlbmd0aCgpKSxlLlBPTEFSSVpBVElPTl9UWVBFPXRoaXMuUE9MQVJJWkFUSU9OX1RZUEUoKSxlLlNJTVBMRV9QT0xBUklaQVRJT049dGhpcy5TSU1QTEVfUE9MQVJJWkFUSU9OKCksZS5TVE9LRVNfUEFSQU1FVEVSUz10aGlzLlNUT0tFU19QQVJBTUVURVJTKCkhPT1udWxsP3RoaXMuU1RPS0VTX1BBUkFNRVRFUlMoKS51bnBhY2soKTpudWxsLGUuUE9XRVJfUkVRVUlSRUQ9dGhpcy5QT1dFUl9SRVFVSVJFRCgpLGUuUE9XRVJfVFlQRT10aGlzLlBPV0VSX1RZUEUoKSxlLlRSQU5TTUlUPXRoaXMuVFJBTlNNSVQoKSxlLlJFQ0VJVkU9dGhpcy5SRUNFSVZFKCksZS5TRU5TT1JfVFlQRT10aGlzLlNFTlNPUl9UWVBFKCksZS5TT1VSQ0U9dGhpcy5TT1VSQ0UoKSxlLkxBU1RfT0JfVElNRT10aGlzLkxBU1RfT0JfVElNRSgpLGUuTE9XRVJfTEVGVF9FTEVWQVRJT05fTElNSVQ9dGhpcy5MT1dFUl9MRUZUX0VMRVZBVElPTl9MSU1JVCgpLGUuVVBQRVJfTEVGVF9BWklNVVRIX0xJTUlUPXRoaXMuVVBQRVJfTEVGVF9BWklNVVRIX0xJTUlUKCksZS5MT1dFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQ9dGhpcy5MT1dFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQoKSxlLkxPV0VSX0xFRlRfQVpJTVVUSF9MSU1JVD10aGlzLkxPV0VSX0xFRlRfQVpJTVVUSF9MSU1JVCgpLGUuVVBQRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUPXRoaXMuVVBQRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUKCksZS5VUFBFUl9SSUdIVF9BWklNVVRIX0xJTUlUPXRoaXMuVVBQRVJfUklHSFRfQVpJTVVUSF9MSU1JVCgpLGUuTE9XRVJfUklHSFRfQVpJTVVUSF9MSU1JVD10aGlzLkxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQoKSxlLlVQUEVSX0xFRlRfRUxFVkFUSU9OX0xJTUlUPXRoaXMuVVBQRVJfTEVGVF9FTEVWQVRJT05fTElNSVQoKSxlLlJJR0hUX0dFT19CRUxUX0xJTUlUPXRoaXMuUklHSFRfR0VPX0JFTFRfTElNSVQoKSxlLkxFRlRfR0VPX0JFTFRfTElNSVQ9dGhpcy5MRUZUX0dFT19CRUxUX0xJTUlUKCksZS5NQUdOSVRVREVfTElNSVQ9dGhpcy5NQUdOSVRVREVfTElNSVQoKSxlLlRBU0tBQkxFPXRoaXMuVEFTS0FCTEUoKX19LERfPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCxpPW51bGwsbj1OYy5SRUFMLHM9bnVsbCxvPW51bGwscj1udWxsLGE9W10saD1GYy5saW5lYXIsQT1ZYy52ZXJ0aWNhbCxkPW51bGwsZj0wLEU9bnVsbCxfPSExLFI9ITEsST1iYy5VTktOT1dOLEM9bnVsbCxOPW51bGwsVD0wLEY9MCxiPTAsRz0wLE09MCxRPTAsVT0wLGs9MCx5PTAsYz0wLGc9MCxWPSExKXt0aGlzLklEPWUsdGhpcy5OQU1FPWksdGhpcy5EQVRBX01PREU9bix0aGlzLlVQTElOSz1zLHRoaXMuRE9XTkxJTks9byx0aGlzLkJFQUNPTj1yLHRoaXMuQkFORD1hLHRoaXMuUE9MQVJJWkFUSU9OX1RZUEU9aCx0aGlzLlNJTVBMRV9QT0xBUklaQVRJT049QSx0aGlzLlNUT0tFU19QQVJBTUVURVJTPWQsdGhpcy5QT1dFUl9SRVFVSVJFRD1mLHRoaXMuUE9XRVJfVFlQRT1FLHRoaXMuVFJBTlNNSVQ9Xyx0aGlzLlJFQ0VJVkU9Uix0aGlzLlNFTlNPUl9UWVBFPUksdGhpcy5TT1VSQ0U9Qyx0aGlzLkxBU1RfT0JfVElNRT1OLHRoaXMuTE9XRVJfTEVGVF9FTEVWQVRJT05fTElNSVQ9VCx0aGlzLlVQUEVSX0xFRlRfQVpJTVVUSF9MSU1JVD1GLHRoaXMuTE9XRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUPWIsdGhpcy5MT1dFUl9MRUZUX0FaSU1VVEhfTElNSVQ9Ryx0aGlzLlVQUEVSX1JJR0hUX0VMRVZBVElPTl9MSU1JVD1NLHRoaXMuVVBQRVJfUklHSFRfQVpJTVVUSF9MSU1JVD1RLHRoaXMuTE9XRVJfUklHSFRfQVpJTVVUSF9MSU1JVD1VLHRoaXMuVVBQRVJfTEVGVF9FTEVWQVRJT05fTElNSVQ9ayx0aGlzLlJJR0hUX0dFT19CRUxUX0xJTUlUPXksdGhpcy5MRUZUX0dFT19CRUxUX0xJTUlUPWMsdGhpcy5NQUdOSVRVREVfTElNSVQ9Zyx0aGlzLlRBU0tBQkxFPVZ9cGFjayhlKXtsZXQgaT10aGlzLklEIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLklEKTowLG49dGhpcy5OQU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk5BTUUpOjAscz10aGlzLlVQTElOSyE9PW51bGw/dGhpcy5VUExJTksucGFjayhlKTowLG89dGhpcy5ET1dOTElOSyE9PW51bGw/dGhpcy5ET1dOTElOSy5wYWNrKGUpOjAscj10aGlzLkJFQUNPTiE9PW51bGw/dGhpcy5CRUFDT04ucGFjayhlKTowLGE9WmkuY3JlYXRlQmFuZFZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLkJBTkQpKSxoPXRoaXMuU1RPS0VTX1BBUkFNRVRFUlMhPT1udWxsP3RoaXMuU1RPS0VTX1BBUkFNRVRFUlMucGFjayhlKTowLEE9dGhpcy5QT1dFUl9UWVBFIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLlBPV0VSX1RZUEUpOjAsZD10aGlzLlNPVVJDRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5TT1VSQ0UpOjAsZj10aGlzLkxBU1RfT0JfVElNRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5MQVNUX09CX1RJTUUpOjA7cmV0dXJuIFppLnN0YXJ0SURNKGUpLFppLmFkZElkKGUsaSksWmkuYWRkTmFtZShlLG4pLFppLmFkZERhdGFNb2RlKGUsdGhpcy5EQVRBX01PREUpLFppLmFkZFVwbGluayhlLHMpLFppLmFkZERvd25saW5rKGUsbyksWmkuYWRkQmVhY29uKGUsciksWmkuYWRkQmFuZChlLGEpLFppLmFkZFBvbGFyaXphdGlvblR5cGUoZSx0aGlzLlBPTEFSSVpBVElPTl9UWVBFKSxaaS5hZGRTaW1wbGVQb2xhcml6YXRpb24oZSx0aGlzLlNJTVBMRV9QT0xBUklaQVRJT04pLFppLmFkZFN0b2tlc1BhcmFtZXRlcnMoZSxoKSxaaS5hZGRQb3dlclJlcXVpcmVkKGUsdGhpcy5QT1dFUl9SRVFVSVJFRCksWmkuYWRkUG93ZXJUeXBlKGUsQSksWmkuYWRkVHJhbnNtaXQoZSx0aGlzLlRSQU5TTUlUKSxaaS5hZGRSZWNlaXZlKGUsdGhpcy5SRUNFSVZFKSxaaS5hZGRTZW5zb3JUeXBlKGUsdGhpcy5TRU5TT1JfVFlQRSksWmkuYWRkU291cmNlKGUsZCksWmkuYWRkTGFzdE9iVGltZShlLGYpLFppLmFkZExvd2VyTGVmdEVsZXZhdGlvbkxpbWl0KGUsdGhpcy5MT1dFUl9MRUZUX0VMRVZBVElPTl9MSU1JVCksWmkuYWRkVXBwZXJMZWZ0QXppbXV0aExpbWl0KGUsdGhpcy5VUFBFUl9MRUZUX0FaSU1VVEhfTElNSVQpLFppLmFkZExvd2VyUmlnaHRFbGV2YXRpb25MaW1pdChlLHRoaXMuTE9XRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUKSxaaS5hZGRMb3dlckxlZnRBemltdXRoTGltaXQoZSx0aGlzLkxPV0VSX0xFRlRfQVpJTVVUSF9MSU1JVCksWmkuYWRkVXBwZXJSaWdodEVsZXZhdGlvbkxpbWl0KGUsdGhpcy5VUFBFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQpLFppLmFkZFVwcGVyUmlnaHRBemltdXRoTGltaXQoZSx0aGlzLlVQUEVSX1JJR0hUX0FaSU1VVEhfTElNSVQpLFppLmFkZExvd2VyUmlnaHRBemltdXRoTGltaXQoZSx0aGlzLkxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQpLFppLmFkZFVwcGVyTGVmdEVsZXZhdGlvbkxpbWl0KGUsdGhpcy5VUFBFUl9MRUZUX0VMRVZBVElPTl9MSU1JVCksWmkuYWRkUmlnaHRHZW9CZWx0TGltaXQoZSx0aGlzLlJJR0hUX0dFT19CRUxUX0xJTUlUKSxaaS5hZGRMZWZ0R2VvQmVsdExpbWl0KGUsdGhpcy5MRUZUX0dFT19CRUxUX0xJTUlUKSxaaS5hZGRNYWduaXR1ZGVMaW1pdChlLHRoaXMuTUFHTklUVURFX0xJTUlUKSxaaS5hZGRUYXNrYWJsZShlLHRoaXMuVEFTS0FCTEUpLFppLmVuZElETShlKX19fSk7dmFyIEZBLE1fLF9wPU8oKCk9PntfdCgpO0VwKCk7RkE9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNQTEQoZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzUExEKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRQTEQiKX1QQVlMT0FEX0RVUkFUSU9OKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9TUFTU19BVF9MQVVOQ0goKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0MzIodGhpcy5iYl9wb3MrZSk6MH1ESU1FTlNJT05TKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9U09MQVJfQVJSQVlfQVJFQSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0MzIodGhpcy5iYl9wb3MrZSk6MH1TT0xBUl9BUlJBWV9ESU1FTlNJT05TKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTIpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9SU5TVFJVTUVOVFMoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDE2KTtyZXR1cm4gbj8oaXx8bmV3IFppKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MrbikrZSo0KSx0aGlzLmJiKTpudWxsfWluc3RydW1lbnRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxNik7cmV0dXJuIGU/dGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRQTEQoZSl7ZS5zdGFydE9iamVjdCg3KX1zdGF0aWMgYWRkUGF5bG9hZER1cmF0aW9uKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgwLGksMCl9c3RhdGljIGFkZE1hc3NBdExhdW5jaChlLGkpe2UuYWRkRmllbGRGbG9hdDMyKDEsaSwwKX1zdGF0aWMgYWRkRGltZW5zaW9ucyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMixpLDApfXN0YXRpYyBhZGRTb2xhckFycmF5QXJlYShlLGkpe2UuYWRkRmllbGRGbG9hdDMyKDMsaSwwKX1zdGF0aWMgYWRkU29sYXJBcnJheURpbWVuc2lvbnMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDQsaSwwKX1zdGF0aWMgYWRkTm9taW5hbE9wZXJhdGlvbmFsTGlmZXRpbWUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDUsaSwwKX1zdGF0aWMgYWRkSW5zdHJ1bWVudHMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDYsaSwwKX1zdGF0aWMgY3JlYXRlSW5zdHJ1bWVudHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaS5sZW5ndGgsNCk7Zm9yKGxldCBuPWkubGVuZ3RoLTE7bj49MDtuLS0pZS5hZGRPZmZzZXQoaVtuXSk7cmV0dXJuIGUuZW5kVmVjdG9yKCl9c3RhdGljIHN0YXJ0SW5zdHJ1bWVudHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kUExEKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hQTERCdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkUExEIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZFBMREJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRQTEQiLCEwKX1zdGF0aWMgY3JlYXRlUExEKGUsaSxuLHMsbyxyLGEsaCl7cmV0dXJuIHQuc3RhcnRQTEQoZSksdC5hZGRQYXlsb2FkRHVyYXRpb24oZSxpKSx0LmFkZE1hc3NBdExhdW5jaChlLG4pLHQuYWRkRGltZW5zaW9ucyhlLHMpLHQuYWRkU29sYXJBcnJheUFyZWEoZSxvKSx0LmFkZFNvbGFyQXJyYXlEaW1lbnNpb25zKGUsciksdC5hZGROb21pbmFsT3BlcmF0aW9uYWxMaWZldGltZShlLGEpLHQuYWRkSW5zdHJ1bWVudHMoZSxoKSx0LmVuZFBMRChlKX11bnBhY2soKXtyZXR1cm4gbmV3IE1fKHRoaXMuUEFZTE9BRF9EVVJBVElPTigpLHRoaXMuTUFTU19BVF9MQVVOQ0goKSx0aGlzLkRJTUVOU0lPTlMoKSx0aGlzLlNPTEFSX0FSUkFZX0FSRUEoKSx0aGlzLlNPTEFSX0FSUkFZX0RJTUVOU0lPTlMoKSx0aGlzLk5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUUoKSx0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5JTlNUUlVNRU5UUy5iaW5kKHRoaXMpLHRoaXMuaW5zdHJ1bWVudHNMZW5ndGgoKSkpfXVucGFja1RvKGUpe2UuUEFZTE9BRF9EVVJBVElPTj10aGlzLlBBWUxPQURfRFVSQVRJT04oKSxlLk1BU1NfQVRfTEFVTkNIPXRoaXMuTUFTU19BVF9MQVVOQ0goKSxlLkRJTUVOU0lPTlM9dGhpcy5ESU1FTlNJT05TKCksZS5TT0xBUl9BUlJBWV9BUkVBPXRoaXMuU09MQVJfQVJSQVlfQVJFQSgpLGUuU09MQVJfQVJSQVlfRElNRU5TSU9OUz10aGlzLlNPTEFSX0FSUkFZX0RJTUVOU0lPTlMoKSxlLk5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUU9dGhpcy5OT01JTkFMX09QRVJBVElPTkFMX0xJRkVUSU1FKCksZS5JTlNUUlVNRU5UUz10aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5JTlNUUlVNRU5UUy5iaW5kKHRoaXMpLHRoaXMuaW5zdHJ1bWVudHNMZW5ndGgoKSl9fSxNXz1jbGFzc3tjb25zdHJ1Y3RvcihlPW51bGwsaT0wLG49bnVsbCxzPTAsbz1udWxsLHI9bnVsbCxhPVtdKXt0aGlzLlBBWUxPQURfRFVSQVRJT049ZSx0aGlzLk1BU1NfQVRfTEFVTkNIPWksdGhpcy5ESU1FTlNJT05TPW4sdGhpcy5TT0xBUl9BUlJBWV9BUkVBPXMsdGhpcy5TT0xBUl9BUlJBWV9ESU1FTlNJT05TPW8sdGhpcy5OT01JTkFMX09QRVJBVElPTkFMX0xJRkVUSU1FPXIsdGhpcy5JTlNUUlVNRU5UUz1hfXBhY2soZSl7bGV0IGk9dGhpcy5QQVlMT0FEX0RVUkFUSU9OIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLlBBWUxPQURfRFVSQVRJT04pOjAsbj10aGlzLkRJTUVOU0lPTlMhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuRElNRU5TSU9OUyk6MCxzPXRoaXMuU09MQVJfQVJSQVlfRElNRU5TSU9OUyE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5TT0xBUl9BUlJBWV9ESU1FTlNJT05TKTowLG89dGhpcy5OT01JTkFMX09QRVJBVElPTkFMX0xJRkVUSU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUUpOjAscj1GQS5jcmVhdGVJbnN0cnVtZW50c1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLklOU1RSVU1FTlRTKSk7cmV0dXJuIEZBLmNyZWF0ZVBMRChlLGksdGhpcy5NQVNTX0FUX0xBVU5DSCxuLHRoaXMuU09MQVJfQVJSQVlfQVJFQSxzLG8scil9fX0pO3ZhciBTYyxQYj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5OT19DVVJSRU5UX0VMRU1FTlRTPTBdPSJOT19DVVJSRU5UX0VMRU1FTlRTIix0W3QuTk9fSU5JVElBTF9FTEVNRU5UUz0xXT0iTk9fSU5JVElBTF9FTEVNRU5UUyIsdFt0Lk5PX0VMRU1FTlRTX0FWQUlMQUJMRT0yXT0iTk9fRUxFTUVOVFNfQVZBSUxBQkxFIix0W3QuT0s9M109Ik9LIn0pKFNjfHwoU2M9e30pKX0pO3ZhciBPYyxKYj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5EUlk9MF09IkRSWSIsdFt0LldFVD0xXT0iV0VUIn0pKE9jfHwoT2M9e30pKX0pO3ZhciBWYyxqYj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5QQVlMT0FEPTBdPSJQQVlMT0FEIix0W3QuUk9DS0VUX0JPRFk9MV09IlJPQ0tFVF9CT0RZIix0W3QuREVCUklTPTJdPSJERUJSSVMiLHRbdC5VTktOT1dOPTNdPSJVTktOT1dOIn0pKFZjfHwoVmM9e30pKX0pO3ZhciBHYyxIYj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUEVSQVRJT05BTD0wXT0iT1BFUkFUSU9OQUwiLHRbdC5OT05PUEVSQVRJT05BTD0xXT0iTk9OT1BFUkFUSU9OQUwiLHRbdC5QQVJUSUFMTFlfT1BFUkFUSU9OQUw9Ml09IlBBUlRJQUxMWV9PUEVSQVRJT05BTCIsdFt0LkJBQ0tVUF9TVEFOREJZPTNdPSJCQUNLVVBfU1RBTkRCWSIsdFt0LlNQQVJFPTRdPSJTUEFSRSIsdFt0LkVYVEVOREVEX01JU1NJT049NV09IkVYVEVOREVEX01JU1NJT04iLHRbdC5ERUNBWUVEPTZdPSJERUNBWUVEIix0W3QuVU5LTk9XTj03XT0iVU5LTk9XTiJ9KShHY3x8KEdjPXt9KSl9KTt2YXIgQmMsdmI9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1JCSVQ9MF09Ik9SQklUIix0W3QuTEFORElORz0xXT0iTEFORElORyIsdFt0LklNUEFDVD0yXT0iSU1QQUNUIix0W3QuRE9DS0VEPTNdPSJET0NLRUQiLHRbdC5ST1VORFRSSVA9NF09IlJPVU5EVFJJUCJ9KShCY3x8KEJjPXt9KSl9KTt2YXIgV2MsVV8semI9TygoKT0+e190KCk7X3AoKTtQYigpO0piKCk7amIoKTtIYigpO3ZiKCk7V2M9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNDQVQoZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzQ0FUKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRDQVQiKX1PQkpFQ1RfTkFNRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU9CSkVDVF9JRChlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU5PUkFEX0NBVF9JRCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkVWludDMyKHRoaXMuYmJfcG9zK2UpOjB9T0JKRUNUX1RZUEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDEwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOlZjLlVOS05PV059T1BTX1NUQVRVU19DT0RFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpHYy5VTktOT1dOfU9XTkVSKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUxBVU5DSF9EQVRFKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTYpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUxBVU5DSF9TSVRFKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTgpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfURFQ0FZX0RBVEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9UEVSSU9EKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUlOQ0xJTkFUSU9OKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUFQT0dFRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMjYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1QRVJJR0VFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVJDUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1EQVRBX1NUQVRVU19DT0RFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpTYy5OT19DVVJSRU5UX0VMRU1FTlRTfU9SQklUX0NFTlRFUihlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDM0KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1PUkJJVF9UWVBFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzNik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpCYy5PUkJJVH1ERVBMT1lNRU5UX0RBVEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9TUFORVVWRVJBQkxFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0MCk7cmV0dXJuIGU/ISF0aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOiExfVNJWkUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TUFTUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NQVNTX1RZUEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQ2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOk9jLkRSWX1QQVlMT0FEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDgpO3JldHVybiBuPyhpfHxuZXcgRkEpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcytuKStlKjQpLHRoaXMuYmIpOm51bGx9cGF5bG9hZHNMZW5ndGgoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQ4KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydENBVChlKXtlLnN0YXJ0T2JqZWN0KDIzKX1zdGF0aWMgYWRkT2JqZWN0TmFtZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBhZGRPYmplY3RJZChlLGkpe2UuYWRkRmllbGRPZmZzZXQoMSxpLDApfXN0YXRpYyBhZGROb3JhZENhdElkKGUsaSl7ZS5hZGRGaWVsZEludDMyKDIsaSwwKX1zdGF0aWMgYWRkT2JqZWN0VHlwZShlLGkpe2UuYWRkRmllbGRJbnQ4KDMsaSxWYy5VTktOT1dOKX1zdGF0aWMgYWRkT3BzU3RhdHVzQ29kZShlLGkpe2UuYWRkRmllbGRJbnQ4KDQsaSxHYy5VTktOT1dOKX1zdGF0aWMgYWRkT3duZXIoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDUsaSwwKX1zdGF0aWMgYWRkTGF1bmNoRGF0ZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoNixpLDApfXN0YXRpYyBhZGRMYXVuY2hTaXRlKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg3LGksMCl9c3RhdGljIGFkZERlY2F5RGF0ZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoOCxpLDApfXN0YXRpYyBhZGRQZXJpb2QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg5LGksMCl9c3RhdGljIGFkZEluY2xpbmF0aW9uKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTAsaSwwKX1zdGF0aWMgYWRkQXBvZ2VlKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTEsaSwwKX1zdGF0aWMgYWRkUGVyaWdlZShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEyLGksMCl9c3RhdGljIGFkZFJjcyhlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEzLGksMCl9c3RhdGljIGFkZERhdGFTdGF0dXNDb2RlKGUsaSl7ZS5hZGRGaWVsZEludDgoMTQsaSxTYy5OT19DVVJSRU5UX0VMRU1FTlRTKX1zdGF0aWMgYWRkT3JiaXRDZW50ZXIoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDE1LGksMCl9c3RhdGljIGFkZE9yYml0VHlwZShlLGkpe2UuYWRkRmllbGRJbnQ4KDE2LGksQmMuT1JCSVQpfXN0YXRpYyBhZGREZXBsb3ltZW50RGF0ZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoMTcsaSwwKX1zdGF0aWMgYWRkTWFuZXV2ZXJhYmxlKGUsaSl7ZS5hZGRGaWVsZEludDgoMTgsK2ksMCl9c3RhdGljIGFkZFNpemUoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgxOSxpLDApfXN0YXRpYyBhZGRNYXNzKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjAsaSwwKX1zdGF0aWMgYWRkTWFzc1R5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCgyMSxpLE9jLkRSWSl9c3RhdGljIGFkZFBheWxvYWRzKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgyMixpLDApfXN0YXRpYyBjcmVhdGVQYXlsb2Fkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRQYXlsb2Fkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLDQpfXN0YXRpYyBlbmRDQVQoZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGZpbmlzaENBVEJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRDQVQiKX1zdGF0aWMgZmluaXNoU2l6ZVByZWZpeGVkQ0FUQnVmZmVyKGUsaSl7ZS5maW5pc2goaSwiJENBVCIsITApfXN0YXRpYyBjcmVhdGVDQVQoZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEksQyxOLFQsRixiLEcsTSxRLFUpe3JldHVybiB0LnN0YXJ0Q0FUKGUpLHQuYWRkT2JqZWN0TmFtZShlLGkpLHQuYWRkT2JqZWN0SWQoZSxuKSx0LmFkZE5vcmFkQ2F0SWQoZSxzKSx0LmFkZE9iamVjdFR5cGUoZSxvKSx0LmFkZE9wc1N0YXR1c0NvZGUoZSxyKSx0LmFkZE93bmVyKGUsYSksdC5hZGRMYXVuY2hEYXRlKGUsaCksdC5hZGRMYXVuY2hTaXRlKGUsQSksdC5hZGREZWNheURhdGUoZSxkKSx0LmFkZFBlcmlvZChlLGYpLHQuYWRkSW5jbGluYXRpb24oZSxFKSx0LmFkZEFwb2dlZShlLF8pLHQuYWRkUGVyaWdlZShlLFIpLHQuYWRkUmNzKGUsSSksdC5hZGREYXRhU3RhdHVzQ29kZShlLEMpLHQuYWRkT3JiaXRDZW50ZXIoZSxOKSx0LmFkZE9yYml0VHlwZShlLFQpLHQuYWRkRGVwbG95bWVudERhdGUoZSxGKSx0LmFkZE1hbmV1dmVyYWJsZShlLGIpLHQuYWRkU2l6ZShlLEcpLHQuYWRkTWFzcyhlLE0pLHQuYWRkTWFzc1R5cGUoZSxRKSx0LmFkZFBheWxvYWRzKGUsVSksdC5lbmRDQVQoZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBVXyh0aGlzLk9CSkVDVF9OQU1FKCksdGhpcy5PQkpFQ1RfSUQoKSx0aGlzLk5PUkFEX0NBVF9JRCgpLHRoaXMuT0JKRUNUX1RZUEUoKSx0aGlzLk9QU19TVEFUVVNfQ09ERSgpLHRoaXMuT1dORVIoKSx0aGlzLkxBVU5DSF9EQVRFKCksdGhpcy5MQVVOQ0hfU0lURSgpLHRoaXMuREVDQVlfREFURSgpLHRoaXMuUEVSSU9EKCksdGhpcy5JTkNMSU5BVElPTigpLHRoaXMuQVBPR0VFKCksdGhpcy5QRVJJR0VFKCksdGhpcy5SQ1MoKSx0aGlzLkRBVEFfU1RBVFVTX0NPREUoKSx0aGlzLk9SQklUX0NFTlRFUigpLHRoaXMuT1JCSVRfVFlQRSgpLHRoaXMuREVQTE9ZTUVOVF9EQVRFKCksdGhpcy5NQU5FVVZFUkFCTEUoKSx0aGlzLlNJWkUoKSx0aGlzLk1BU1MoKSx0aGlzLk1BU1NfVFlQRSgpLHRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlBBWUxPQURTLmJpbmQodGhpcyksdGhpcy5wYXlsb2Fkc0xlbmd0aCgpKSl9dW5wYWNrVG8oZSl7ZS5PQkpFQ1RfTkFNRT10aGlzLk9CSkVDVF9OQU1FKCksZS5PQkpFQ1RfSUQ9dGhpcy5PQkpFQ1RfSUQoKSxlLk5PUkFEX0NBVF9JRD10aGlzLk5PUkFEX0NBVF9JRCgpLGUuT0JKRUNUX1RZUEU9dGhpcy5PQkpFQ1RfVFlQRSgpLGUuT1BTX1NUQVRVU19DT0RFPXRoaXMuT1BTX1NUQVRVU19DT0RFKCksZS5PV05FUj10aGlzLk9XTkVSKCksZS5MQVVOQ0hfREFURT10aGlzLkxBVU5DSF9EQVRFKCksZS5MQVVOQ0hfU0lURT10aGlzLkxBVU5DSF9TSVRFKCksZS5ERUNBWV9EQVRFPXRoaXMuREVDQVlfREFURSgpLGUuUEVSSU9EPXRoaXMuUEVSSU9EKCksZS5JTkNMSU5BVElPTj10aGlzLklOQ0xJTkFUSU9OKCksZS5BUE9HRUU9dGhpcy5BUE9HRUUoKSxlLlBFUklHRUU9dGhpcy5QRVJJR0VFKCksZS5SQ1M9dGhpcy5SQ1MoKSxlLkRBVEFfU1RBVFVTX0NPREU9dGhpcy5EQVRBX1NUQVRVU19DT0RFKCksZS5PUkJJVF9DRU5URVI9dGhpcy5PUkJJVF9DRU5URVIoKSxlLk9SQklUX1RZUEU9dGhpcy5PUkJJVF9UWVBFKCksZS5ERVBMT1lNRU5UX0RBVEU9dGhpcy5ERVBMT1lNRU5UX0RBVEUoKSxlLk1BTkVVVkVSQUJMRT10aGlzLk1BTkVVVkVSQUJMRSgpLGUuU0laRT10aGlzLlNJWkUoKSxlLk1BU1M9dGhpcy5NQVNTKCksZS5NQVNTX1RZUEU9dGhpcy5NQVNTX1RZUEUoKSxlLlBBWUxPQURTPXRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlBBWUxPQURTLmJpbmQodGhpcyksdGhpcy5wYXlsb2Fkc0xlbmd0aCgpKX19LFVfPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCxpPW51bGwsbj0wLHM9VmMuVU5LTk9XTixvPUdjLlVOS05PV04scj1udWxsLGE9bnVsbCxoPW51bGwsQT1udWxsLGQ9MCxmPTAsRT0wLF89MCxSPTAsST1TYy5OT19DVVJSRU5UX0VMRU1FTlRTLEM9bnVsbCxOPUJjLk9SQklULFQ9bnVsbCxGPSExLGI9MCxHPTAsTT1PYy5EUlksUT1bXSl7dGhpcy5PQkpFQ1RfTkFNRT1lLHRoaXMuT0JKRUNUX0lEPWksdGhpcy5OT1JBRF9DQVRfSUQ9bix0aGlzLk9CSkVDVF9UWVBFPXMsdGhpcy5PUFNfU1RBVFVTX0NPREU9byx0aGlzLk9XTkVSPXIsdGhpcy5MQVVOQ0hfREFURT1hLHRoaXMuTEFVTkNIX1NJVEU9aCx0aGlzLkRFQ0FZX0RBVEU9QSx0aGlzLlBFUklPRD1kLHRoaXMuSU5DTElOQVRJT049Zix0aGlzLkFQT0dFRT1FLHRoaXMuUEVSSUdFRT1fLHRoaXMuUkNTPVIsdGhpcy5EQVRBX1NUQVRVU19DT0RFPUksdGhpcy5PUkJJVF9DRU5URVI9Qyx0aGlzLk9SQklUX1RZUEU9Tix0aGlzLkRFUExPWU1FTlRfREFURT1ULHRoaXMuTUFORVVWRVJBQkxFPUYsdGhpcy5TSVpFPWIsdGhpcy5NQVNTPUcsdGhpcy5NQVNTX1RZUEU9TSx0aGlzLlBBWUxPQURTPVF9cGFjayhlKXtsZXQgaT10aGlzLk9CSkVDVF9OQU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk9CSkVDVF9OQU1FKTowLG49dGhpcy5PQkpFQ1RfSUQhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuT0JKRUNUX0lEKTowLHM9dGhpcy5PV05FUiE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5PV05FUik6MCxvPXRoaXMuTEFVTkNIX0RBVEUhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuTEFVTkNIX0RBVEUpOjAscj10aGlzLkxBVU5DSF9TSVRFIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLkxBVU5DSF9TSVRFKTowLGE9dGhpcy5ERUNBWV9EQVRFIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLkRFQ0FZX0RBVEUpOjAsaD10aGlzLk9SQklUX0NFTlRFUiE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5PUkJJVF9DRU5URVIpOjAsQT10aGlzLkRFUExPWU1FTlRfREFURSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5ERVBMT1lNRU5UX0RBVEUpOjAsZD1XYy5jcmVhdGVQYXlsb2Fkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlBBWUxPQURTKSk7cmV0dXJuIFdjLmNyZWF0ZUNBVChlLGksbix0aGlzLk5PUkFEX0NBVF9JRCx0aGlzLk9CSkVDVF9UWVBFLHRoaXMuT1BTX1NUQVRVU19DT0RFLHMsbyxyLGEsdGhpcy5QRVJJT0QsdGhpcy5JTkNMSU5BVElPTix0aGlzLkFQT0dFRSx0aGlzLlBFUklHRUUsdGhpcy5SQ1MsdGhpcy5EQVRBX1NUQVRVU19DT0RFLGgsdGhpcy5PUkJJVF9UWVBFLEEsdGhpcy5NQU5FVVZFUkFCTEUsdGhpcy5TSVpFLHRoaXMuTUFTUyx0aGlzLk1BU1NfVFlQRSxkKX19fSk7dmFyIGhmLFFfLHUzPU8oKCk9PntfdCgpO3piKCk7aGY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNDQVRDT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc0NBVENPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBXYykuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydENBVENPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kQ0FUQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlQ0FUQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0Q0FUQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZENBVENPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBRXyh0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LFFfPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9aGYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gaGYuY3JlYXRlQ0FUQ09MTEVDVElPTihlLGkpfX19KTt2YXIgY2Ysa18sQzM9TygoKT0+e190KCk7RXAoKTtjZj1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5iYj1udWxsLHRoaXMuYmJfcG9zPTB9X19pbml0KGUsaSl7cmV0dXJuIHRoaXMuYmJfcG9zPWUsdGhpcy5iYj1pLHRoaXN9c3RhdGljIGdldFJvb3RBc0lETUNPTExFQ1RJT04oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzSURNQ09MTEVDVElPTihlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1SRUNPUkRTKGUsaSl7bGV0IG49dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gbj8oaXx8bmV3IFppKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MrbikrZSo0KSx0aGlzLmJiKTpudWxsfXJlY29yZHNMZW5ndGgoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBlP3RoaXMuYmIuX192ZWN0b3JfbGVuKHRoaXMuYmJfcG9zK2UpOjB9c3RhdGljIHN0YXJ0SURNQ09MTEVDVElPTihlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRSZWNvcmRzKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgwLGksMCl9c3RhdGljIGNyZWF0ZVJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaS5sZW5ndGgsNCk7Zm9yKGxldCBuPWkubGVuZ3RoLTE7bj49MDtuLS0pZS5hZGRPZmZzZXQoaVtuXSk7cmV0dXJuIGUuZW5kVmVjdG9yKCl9c3RhdGljIHN0YXJ0UmVjb3Jkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLDQpfXN0YXRpYyBlbmRJRE1DT0xMRUNUSU9OKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBjcmVhdGVJRE1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuIHQuc3RhcnRJRE1DT0xMRUNUSU9OKGUpLHQuYWRkUmVjb3JkcyhlLGkpLHQuZW5kSURNQ09MTEVDVElPTihlKX11bnBhY2soKXtyZXR1cm4gbmV3IGtfKHRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlJFQ09SRFMuYmluZCh0aGlzKSx0aGlzLnJlY29yZHNMZW5ndGgoKSkpfXVucGFja1RvKGUpe2UuUkVDT1JEUz10aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpfX0sa189Y2xhc3N7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5SRUNPUkRTPWV9cGFjayhlKXtsZXQgaT1jZi5jcmVhdGVSZWNvcmRzVmVjdG9yKGUsZS5jcmVhdGVPYmplY3RPZmZzZXRMaXN0KHRoaXMuUkVDT1JEUykpO3JldHVybiBjZi5jcmVhdGVJRE1DT0xMRUNUSU9OKGUsaSl9fX0pO3ZhciBsZixMXyxnMz1PKCgpPT57X3QoKTtfcCgpO2xmPWNsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmJiPW51bGwsdGhpcy5iYl9wb3M9MH1fX2luaXQoZSxpKXtyZXR1cm4gdGhpcy5iYl9wb3M9ZSx0aGlzLmJiPWksdGhpc31zdGF0aWMgZ2V0Um9vdEFzUExEQ09MTEVDVElPTihlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNQTERDT0xMRUNUSU9OKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfVJFQ09SRFMoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBuPyhpfHxuZXcgRkEpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcytuKStlKjQpLHRoaXMuYmIpOm51bGx9cmVjb3Jkc0xlbmd0aCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRQTERDT0xMRUNUSU9OKGUpe2Uuc3RhcnRPYmplY3QoMSl9c3RhdGljIGFkZFJlY29yZHMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDAsaSwwKX1zdGF0aWMgY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGksNCl9c3RhdGljIGVuZFBMRENPTExFQ1RJT04oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGNyZWF0ZVBMRENPTExFQ1RJT04oZSxpKXtyZXR1cm4gdC5zdGFydFBMRENPTExFQ1RJT04oZSksdC5hZGRSZWNvcmRzKGUsaSksdC5lbmRQTERDT0xMRUNUSU9OKGUpfXVucGFjaygpe3JldHVybiBuZXcgTF8odGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKSl9dW5wYWNrVG8oZSl7ZS5SRUNPUkRTPXRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlJFQ09SRFMuYmluZCh0aGlzKSx0aGlzLnJlY29yZHNMZW5ndGgoKSl9fSxMXz1jbGFzc3tjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLlJFQ09SRFM9ZX1wYWNrKGUpe2xldCBpPWxmLmNyZWF0ZVJlY29yZHNWZWN0b3IoZSxlLmNyZWF0ZU9iamVjdE9mZnNldExpc3QodGhpcy5SRUNPUkRTKSk7cmV0dXJuIGxmLmNyZWF0ZVBMRENPTExFQ1RJT04oZSxpKX19fSk7dmFyIGVkPXt9O0hlKGVkLHtCYW5kOigpPT5iQSxCYW5kVDooKT0+Ql8sQ0FUOigpPT5XYyxDQVRDT0xMRUNUSU9OOigpPT5oZixDQVRDT0xMRUNUSU9OVDooKT0+UV8sQ0FUVDooKT0+VV8sRGF0YU1vZGU6KCk9Pk5jLERldmljZVR5cGU6KCk9PmJjLEZyZXF1ZW5jeVJhbmdlOigpPT5rYSxGcmVxdWVuY3lSYW5nZVQ6KCk9PkdfLElETTooKT0+WmksSURNQ09MTEVDVElPTjooKT0+Y2YsSURNQ09MTEVDVElPTlQ6KCk9PmtfLElETVQ6KCk9PkRfLFBMRDooKT0+RkEsUExEQ09MTEVDVElPTjooKT0+bGYsUExEQ09MTEVDVElPTlQ6KCk9PkxfLFBMRFQ6KCk9Pk1fLFBvbGFyaXphdGlvblR5cGU6KCk9PkZjLFNpbXBsZVBvbGFyaXphdGlvbjooKT0+WWMsU3Rva2VzUGFyYW1ldGVyczooKT0+dGQsU3Rva2VzUGFyYW1ldGVyc1Q6KCk9PldfLGRhdGFTdGF0dXNDb2RlOigpPT5TYyxtYXNzVHlwZTooKT0+T2Msb2JqZWN0VHlwZTooKT0+VmMsb3BzU3RhdHVzQ29kZTooKT0+R2Msb3JiaXRUeXBlOigpPT5CY30pO3ZhciBUMz1PKCgpPT57UWIoKTt6YigpO3UzKCk7a2IoKTtMYigpO2ZwKCk7RXAoKTtDMygpO19wKCk7ZzMoKTt5YigpO3diKCk7eGIoKTtQYigpO0piKCk7amIoKTtIYigpO3ZiKCl9KTt2YXIgS2I9TygoKT0+e190KCl9KTt2YXIgUnA9TygoKT0+e190KCl9KTt2YXIgWGI9TygoKT0+e190KCk7UnAoKX0pO3ZhciBacCxxYj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5SRUFMPTBdPSJSRUFMIix0W3QuU0lNVUxBVEVEPTFdPSJTSU1VTEFURUQiLHRbdC5TWU5USEVUSUM9Ml09IlNZTlRIRVRJQyJ9KShacHx8KFpwPXt9KSl9KTt2YXIgSXAsJGI9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0Lk9QVElDQUw9MV09Ik9QVElDQUwiLHRbdC5JTkZSQVJFRF9TRU5TT1I9Ml09IklORlJBUkVEX1NFTlNPUiIsdFt0LlVMVFJBVklPTEVUX1NFTlNPUj0zXT0iVUxUUkFWSU9MRVRfU0VOU09SIix0W3QuWF9SQVlfU0VOU09SPTRdPSJYX1JBWV9TRU5TT1IiLHRbdC5HQU1NQV9SQVlfU0VOU09SPTVdPSJHQU1NQV9SQVlfU0VOU09SIix0W3QuUkFEQVI9Nl09IlJBREFSIix0W3QuUEhBU0VEX0FSUkFZX1JBREFSPTddPSJQSEFTRURfQVJSQVlfUkFEQVIiLHRbdC5TWU5USEVUSUNfQVBFUlRVUkVfUkFEQVI9OF09IlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUiIsdFt0LkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRT05XT0iQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFIix0W3QuUkFESU9fVEVMRVNDT1BFPTEwXT0iUkFESU9fVEVMRVNDT1BFIix0W3QuQVRNT1NQSEVSSUNfU0VOU09SPTExXT0iQVRNT1NQSEVSSUNfU0VOU09SIix0W3QuU1BBQ0VfV0VBVEhFUl9TRU5TT1I9MTJdPSJTUEFDRV9XRUFUSEVSX1NFTlNPUiIsdFt0LkVOVklST05NRU5UQUxfU0VOU09SPTEzXT0iRU5WSVJPTk1FTlRBTF9TRU5TT1IiLHRbdC5TRUlTTUlDX1NFTlNPUj0xNF09IlNFSVNNSUNfU0VOU09SIix0W3QuR1JBVklNRVRSSUNfU0VOU09SPTE1XT0iR1JBVklNRVRSSUNfU0VOU09SIix0W3QuTUFHTkVUSUNfU0VOU09SPTE2XT0iTUFHTkVUSUNfU0VOU09SIix0W3QuRUxFQ1RST01BR05FVElDX1NFTlNPUj0xN109IkVMRUNUUk9NQUdORVRJQ19TRU5TT1IiLHRbdC5USEVSTUFMX1NFTlNPUj0xOF09IlRIRVJNQUxfU0VOU09SIix0W3QuQ0hFTUlDQUxfU0VOU09SPTE5XT0iQ0hFTUlDQUxfU0VOU09SIix0W3QuQklPTE9HSUNBTF9TRU5TT1I9MjBdPSJCSU9MT0dJQ0FMX1NFTlNPUiIsdFt0LlJBRElBVElPTl9TRU5TT1I9MjFdPSJSQURJQVRJT05fU0VOU09SIix0W3QuUEFSVElDTEVfREVURUNUT1I9MjJdPSJQQVJUSUNMRV9ERVRFQ1RPUiIsdFt0LkxJREFSPTIzXT0iTElEQVIiLHRbdC5TT05BUj0yNF09IlNPTkFSIix0W3QuVEVMRVNDT1BFPTI1XT0iVEVMRVNDT1BFIix0W3QuU1BFQ1RST1NDT1BJQ19TRU5TT1I9MjZdPSJTUEVDVFJPU0NPUElDX1NFTlNPUiIsdFt0LlBIT1RPTUVUUklDX1NFTlNPUj0yN109IlBIT1RPTUVUUklDX1NFTlNPUiIsdFt0LlBPTEFSSU1FVFJJQ19TRU5TT1I9MjhdPSJQT0xBUklNRVRSSUNfU0VOU09SIix0W3QuSU5URVJGRVJPTUVUUklDX1NFTlNPUj0yOV09IklOVEVSRkVST01FVFJJQ19TRU5TT1IiLHRbdC5NVUxUSVNQRUNUUkFMX1NFTlNPUj0zMF09Ik1VTFRJU1BFQ1RSQUxfU0VOU09SIix0W3QuSFlQRVJTUEVDVFJBTF9TRU5TT1I9MzFdPSJIWVBFUlNQRUNUUkFMX1NFTlNPUiIsdFt0LkdQU19SRUNFSVZFUj0zMl09IkdQU19SRUNFSVZFUiIsdFt0LlJBRElPX0NPTU1VTklDQVRJT05TPTMzXT0iUkFESU9fQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9DT01NVU5JQ0FUSU9OUz0zNF09IkxBU0VSX0NPTU1VTklDQVRJT05TIix0W3QuU0FURUxMSVRFX0NPTU1VTklDQVRJT05TPTM1XT0iU0FURUxMSVRFX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfSU5TVFJVTUVOVD0zNl09IkxBU0VSX0lOU1RSVU1FTlQiLHRbdC5SRl9BTkFMWVpFUj0zN109IlJGX0FOQUxZWkVSIix0W3QuSU9OT1NQSEVSSUNfU0VOU09SPTM4XT0iSU9OT1NQSEVSSUNfU0VOU09SIix0W3QuTEFTRVJfSU1BR0lORz0zOV09IkxBU0VSX0lNQUdJTkciLHRbdC5PUFRJQ0FMX1RFTEVTQ09QRT00MF09Ik9QVElDQUxfVEVMRVNDT1BFIix0W3QuSElHSF9SRVNPTFVUSU9OX09QVElDQUw9NDFdPSJISUdIX1JFU09MVVRJT05fT1BUSUNBTCIsdFt0LlJBRElPPTQyXT0iUkFESU8iLHRbdC5NSUNST1dBVkVfVFJBTlNNSVRURVI9NDNdPSJNSUNST1dBVkVfVFJBTlNNSVRURVIiLHRbdC5SRl9NT05JVE9SPTQ0XT0iUkZfTU9OSVRPUiIsdFt0LkhGX1JBRElPX0NPTU1VTklDQVRJT05TPTQ1XT0iSEZfUkFESU9fQ09NTVVOSUNBVElPTlMifSkoSXB8fChJcD17fSkpfSk7dmFyIHBwLHRGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LmxpbmVhcj0wXT0ibGluZWFyIix0W3QuY2lyY3VsYXI9MV09ImNpcmN1bGFyIix0W3QuZWxsaXB0aWNhbD0yXT0iZWxsaXB0aWNhbCIsdFt0LnVucG9sYXJpemVkPTNdPSJ1bnBvbGFyaXplZCJ9KShwcHx8KHBwPXt9KSl9KTt2YXIgdXAsZUY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QudmVydGljYWw9MF09InZlcnRpY2FsIix0W3QuaG9yaXpvbnRhbD0xXT0iaG9yaXpvbnRhbCIsdFt0LmxlZnRIYW5kQ2lyY3VsYXI9Ml09ImxlZnRIYW5kQ2lyY3VsYXIiLHRbdC5yaWdodEhhbmRDaXJjdWxhcj0zXT0icmlnaHRIYW5kQ2lyY3VsYXIifSkodXB8fCh1cD17fSkpfSk7dmFyIGlGPU8oKCk9PntfdCgpfSk7dmFyIENwPU8oKCk9PntfdCgpO1hiKCk7cWIoKTskYigpO1JwKCk7dEYoKTtlRigpO2lGKCl9KTt2YXIgZ3A9TygoKT0+e190KCk7Q3AoKX0pO3ZhciBUcCxuRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5OT19DVVJSRU5UX0VMRU1FTlRTPTBdPSJOT19DVVJSRU5UX0VMRU1FTlRTIix0W3QuTk9fSU5JVElBTF9FTEVNRU5UUz0xXT0iTk9fSU5JVElBTF9FTEVNRU5UUyIsdFt0Lk5PX0VMRU1FTlRTX0FWQUlMQUJMRT0yXT0iTk9fRUxFTUVOVFNfQVZBSUxBQkxFIix0W3QuT0s9M109Ik9LIn0pKFRwfHwoVHA9e30pKX0pO3ZhciBOcCxzRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5EUlk9MF09IkRSWSIsdFt0LldFVD0xXT0iV0VUIn0pKE5wfHwoTnA9e30pKX0pO3ZhciBicCxvRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5QQVlMT0FEPTBdPSJQQVlMT0FEIix0W3QuUk9DS0VUX0JPRFk9MV09IlJPQ0tFVF9CT0RZIix0W3QuREVCUklTPTJdPSJERUJSSVMiLHRbdC5VTktOT1dOPTNdPSJVTktOT1dOIn0pKGJwfHwoYnA9e30pKX0pO3ZhciBGcCxyRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUEVSQVRJT05BTD0wXT0iT1BFUkFUSU9OQUwiLHRbdC5OT05PUEVSQVRJT05BTD0xXT0iTk9OT1BFUkFUSU9OQUwiLHRbdC5QQVJUSUFMTFlfT1BFUkFUSU9OQUw9Ml09IlBBUlRJQUxMWV9PUEVSQVRJT05BTCIsdFt0LkJBQ0tVUF9TVEFOREJZPTNdPSJCQUNLVVBfU1RBTkRCWSIsdFt0LlNQQVJFPTRdPSJTUEFSRSIsdFt0LkVYVEVOREVEX01JU1NJT049NV09IkVYVEVOREVEX01JU1NJT04iLHRbdC5ERUNBWUVEPTZdPSJERUNBWUVEIix0W3QuVU5LTk9XTj03XT0iVU5LTk9XTiJ9KShGcHx8KEZwPXt9KSl9KTt2YXIgWXAsYUY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1JCSVQ9MF09Ik9SQklUIix0W3QuTEFORElORz0xXT0iTEFORElORyIsdFt0LklNUEFDVD0yXT0iSU1QQUNUIix0W3QuRE9DS0VEPTNdPSJET0NLRUQiLHRbdC5ST1VORFRSSVA9NF09IlJPVU5EVFJJUCJ9KShZcHx8KFlwPXt9KSl9KTt2YXIgU3A9TygoKT0+e190KCk7Z3AoKTtuRigpO3NGKCk7b0YoKTtyRigpO2FGKCl9KTt2YXIgUzM9TygoKT0+e190KCk7U3AoKX0pO3ZhciBPcCxBRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TaWduaW5nPTBdPSJTaWduaW5nIix0W3QuRW5jcnlwdGlvbj0xXT0iRW5jcnlwdGlvbiJ9KShPcHx8KE9wPXt9KSl9KTt2YXIgaEY9TygoKT0+e190KCk7QUYoKX0pO3ZhciBWcD1PKCgpPT57X3QoKTtLYigpO2hGKCl9KTt2YXIgR3AsY0Y9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuQ0FMQ1VMQVRFRD0wXT0iQ0FMQ1VMQVRFRCIsdFt0LkRFRkFVTFQ9MV09IkRFRkFVTFQifSkoR3B8fChHcD17fSkpfSk7dmFyIGRmLHlfPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShkZnx8KGRmPXt9KSl9KTt2YXIgbEY9TygoKT0+e190KCk7U3AoKTtWcCgpO2NGKCk7eV8oKX0pO3ZhciBCcD1PKCgpPT57X3QoKX0pO3ZhciBXcCxkRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FTExJUFNPSUQ9MF09IkVMTElQU09JRCIsdFt0LkJPWD0xXT0iQk9YIn0pKFdwfHwoV3A9e30pKX0pO3ZhciBtRj1PKCgpPT57X3QoKTtsRigpO0JwKCk7eV8oKTtkRigpfSk7dmFyIEczPU8oKCk9PntfdCgpO21GKCl9KTt2YXIgQjM9TygoKT0+e190KCk7VnAoKX0pO3ZhciBXMz1PKCgpPT57X3QoKTtDcCgpfSk7dmFyIEQzPU8oKCk9PntfdCgpO2dwKCl9KTt2YXIgTTM9TygoKT0+e190KCk7QnAoKX0pO3ZhciBmRj1PKCgpPT57X3QoKTt5XygpfSk7dmFyIFUzPU8oKCk9PntfdCgpO2ZGKCl9KTt2YXIgUTM9TygoKT0+e0tiKCk7WGIoKTtTcCgpO1MzKCk7bUYoKTtHMygpO2xGKCk7aEYoKTtxYigpOyRiKCk7VnAoKTtCMygpO1JwKCk7Q3AoKTtXMygpO0FGKCk7Z3AoKTtEMygpO0JwKCk7TTMoKTt0RigpO2ZGKCk7VTMoKTtlRigpO2lGKCk7Y0YoKTtuRigpO3NGKCk7b0YoKTtyRigpO2FGKCk7eV8oKTtkRigpfSk7dmFyIEVGPU8oKCk9PntfdCgpfSk7dmFyIGszPU8oKCk9PntfdCgpO0VGKCl9KTt2YXIgTDM9TygoKT0+e0VGKCk7azMoKX0pO3ZhciBEcD1PKCgpPT57X3QoKX0pO3ZhciBfRj1PKCgpPT57X3QoKTtEcCgpfSk7dmFyIE1wLFJGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlJFQUw9MF09IlJFQUwiLHRbdC5TSU1VTEFURUQ9MV09IlNJTVVMQVRFRCIsdFt0LlNZTlRIRVRJQz0yXT0iU1lOVEhFVElDIn0pKE1wfHwoTXA9e30pKX0pO3ZhciBVcCxaRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuT1BUSUNBTD0xXT0iT1BUSUNBTCIsdFt0LklORlJBUkVEX1NFTlNPUj0yXT0iSU5GUkFSRURfU0VOU09SIix0W3QuVUxUUkFWSU9MRVRfU0VOU09SPTNdPSJVTFRSQVZJT0xFVF9TRU5TT1IiLHRbdC5YX1JBWV9TRU5TT1I9NF09IlhfUkFZX1NFTlNPUiIsdFt0LkdBTU1BX1JBWV9TRU5TT1I9NV09IkdBTU1BX1JBWV9TRU5TT1IiLHRbdC5SQURBUj02XT0iUkFEQVIiLHRbdC5QSEFTRURfQVJSQVlfUkFEQVI9N109IlBIQVNFRF9BUlJBWV9SQURBUiIsdFt0LlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUj04XT0iU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSIix0W3QuQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFPTldPSJCSVNUQVRJQ19SQURJT19URUxFU0NPUEUiLHRbdC5SQURJT19URUxFU0NPUEU9MTBdPSJSQURJT19URUxFU0NPUEUiLHRbdC5BVE1PU1BIRVJJQ19TRU5TT1I9MTFdPSJBVE1PU1BIRVJJQ19TRU5TT1IiLHRbdC5TUEFDRV9XRUFUSEVSX1NFTlNPUj0xMl09IlNQQUNFX1dFQVRIRVJfU0VOU09SIix0W3QuRU5WSVJPTk1FTlRBTF9TRU5TT1I9MTNdPSJFTlZJUk9OTUVOVEFMX1NFTlNPUiIsdFt0LlNFSVNNSUNfU0VOU09SPTE0XT0iU0VJU01JQ19TRU5TT1IiLHRbdC5HUkFWSU1FVFJJQ19TRU5TT1I9MTVdPSJHUkFWSU1FVFJJQ19TRU5TT1IiLHRbdC5NQUdORVRJQ19TRU5TT1I9MTZdPSJNQUdORVRJQ19TRU5TT1IiLHRbdC5FTEVDVFJPTUFHTkVUSUNfU0VOU09SPTE3XT0iRUxFQ1RST01BR05FVElDX1NFTlNPUiIsdFt0LlRIRVJNQUxfU0VOU09SPTE4XT0iVEhFUk1BTF9TRU5TT1IiLHRbdC5DSEVNSUNBTF9TRU5TT1I9MTldPSJDSEVNSUNBTF9TRU5TT1IiLHRbdC5CSU9MT0dJQ0FMX1NFTlNPUj0yMF09IkJJT0xPR0lDQUxfU0VOU09SIix0W3QuUkFESUFUSU9OX1NFTlNPUj0yMV09IlJBRElBVElPTl9TRU5TT1IiLHRbdC5QQVJUSUNMRV9ERVRFQ1RPUj0yMl09IlBBUlRJQ0xFX0RFVEVDVE9SIix0W3QuTElEQVI9MjNdPSJMSURBUiIsdFt0LlNPTkFSPTI0XT0iU09OQVIiLHRbdC5URUxFU0NPUEU9MjVdPSJURUxFU0NPUEUiLHRbdC5TUEVDVFJPU0NPUElDX1NFTlNPUj0yNl09IlNQRUNUUk9TQ09QSUNfU0VOU09SIix0W3QuUEhPVE9NRVRSSUNfU0VOU09SPTI3XT0iUEhPVE9NRVRSSUNfU0VOU09SIix0W3QuUE9MQVJJTUVUUklDX1NFTlNPUj0yOF09IlBPTEFSSU1FVFJJQ19TRU5TT1IiLHRbdC5JTlRFUkZFUk9NRVRSSUNfU0VOU09SPTI5XT0iSU5URVJGRVJPTUVUUklDX1NFTlNPUiIsdFt0Lk1VTFRJU1BFQ1RSQUxfU0VOU09SPTMwXT0iTVVMVElTUEVDVFJBTF9TRU5TT1IiLHRbdC5IWVBFUlNQRUNUUkFMX1NFTlNPUj0zMV09IkhZUEVSU1BFQ1RSQUxfU0VOU09SIix0W3QuR1BTX1JFQ0VJVkVSPTMyXT0iR1BTX1JFQ0VJVkVSIix0W3QuUkFESU9fQ09NTVVOSUNBVElPTlM9MzNdPSJSQURJT19DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0NPTU1VTklDQVRJT05TPTM0XT0iTEFTRVJfQ09NTVVOSUNBVElPTlMiLHRbdC5TQVRFTExJVEVfQ09NTVVOSUNBVElPTlM9MzVdPSJTQVRFTExJVEVfQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9JTlNUUlVNRU5UPTM2XT0iTEFTRVJfSU5TVFJVTUVOVCIsdFt0LlJGX0FOQUxZWkVSPTM3XT0iUkZfQU5BTFlaRVIiLHRbdC5JT05PU1BIRVJJQ19TRU5TT1I9MzhdPSJJT05PU1BIRVJJQ19TRU5TT1IiLHRbdC5MQVNFUl9JTUFHSU5HPTM5XT0iTEFTRVJfSU1BR0lORyIsdFt0Lk9QVElDQUxfVEVMRVNDT1BFPTQwXT0iT1BUSUNBTF9URUxFU0NPUEUiLHRbdC5ISUdIX1JFU09MVVRJT05fT1BUSUNBTD00MV09IkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMIix0W3QuUkFESU89NDJdPSJSQURJTyIsdFt0Lk1JQ1JPV0FWRV9UUkFOU01JVFRFUj00M109Ik1JQ1JPV0FWRV9UUkFOU01JVFRFUiIsdFt0LlJGX01PTklUT1I9NDRdPSJSRl9NT05JVE9SIix0W3QuSEZfUkFESU9fQ09NTVVOSUNBVElPTlM9NDVdPSJIRl9SQURJT19DT01NVU5JQ0FUSU9OUyJ9KShVcHx8KFVwPXt9KSl9KTt2YXIgUXAsSUY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QubGluZWFyPTBdPSJsaW5lYXIiLHRbdC5jaXJjdWxhcj0xXT0iY2lyY3VsYXIiLHRbdC5lbGxpcHRpY2FsPTJdPSJlbGxpcHRpY2FsIix0W3QudW5wb2xhcml6ZWQ9M109InVucG9sYXJpemVkIn0pKFFwfHwoUXA9e30pKX0pO3ZhciBrcCxwRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC52ZXJ0aWNhbD0wXT0idmVydGljYWwiLHRbdC5ob3Jpem9udGFsPTFdPSJob3Jpem9udGFsIix0W3QubGVmdEhhbmRDaXJjdWxhcj0yXT0ibGVmdEhhbmRDaXJjdWxhciIsdFt0LnJpZ2h0SGFuZENpcmN1bGFyPTNdPSJyaWdodEhhbmRDaXJjdWxhciJ9KShrcHx8KGtwPXt9KSl9KTt2YXIgdUY9TygoKT0+e190KCl9KTt2YXIgTHA9TygoKT0+e190KCk7X0YoKTtSRigpO1pGKCk7RHAoKTtJRigpO3BGKCk7dUYoKX0pO3ZhciB5cD1PKCgpPT57X3QoKTtMcCgpfSk7dmFyIHdwLENGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk5PX0NVUlJFTlRfRUxFTUVOVFM9MF09Ik5PX0NVUlJFTlRfRUxFTUVOVFMiLHRbdC5OT19JTklUSUFMX0VMRU1FTlRTPTFdPSJOT19JTklUSUFMX0VMRU1FTlRTIix0W3QuTk9fRUxFTUVOVFNfQVZBSUxBQkxFPTJdPSJOT19FTEVNRU5UU19BVkFJTEFCTEUiLHRbdC5PSz0zXT0iT0sifSkod3B8fCh3cD17fSkpfSk7dmFyIHhwLGdGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkRSWT0wXT0iRFJZIix0W3QuV0VUPTFdPSJXRVQifSkoeHB8fCh4cD17fSkpfSk7dmFyIFBwLFRGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlBBWUxPQUQ9MF09IlBBWUxPQUQiLHRbdC5ST0NLRVRfQk9EWT0xXT0iUk9DS0VUX0JPRFkiLHRbdC5ERUJSSVM9Ml09IkRFQlJJUyIsdFt0LlVOS05PV049M109IlVOS05PV04ifSkoUHB8fChQcD17fSkpfSk7dmFyIEpwLE5GPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk9QRVJBVElPTkFMPTBdPSJPUEVSQVRJT05BTCIsdFt0Lk5PTk9QRVJBVElPTkFMPTFdPSJOT05PUEVSQVRJT05BTCIsdFt0LlBBUlRJQUxMWV9PUEVSQVRJT05BTD0yXT0iUEFSVElBTExZX09QRVJBVElPTkFMIix0W3QuQkFDS1VQX1NUQU5EQlk9M109IkJBQ0tVUF9TVEFOREJZIix0W3QuU1BBUkU9NF09IlNQQVJFIix0W3QuRVhURU5ERURfTUlTU0lPTj01XT0iRVhURU5ERURfTUlTU0lPTiIsdFt0LkRFQ0FZRUQ9Nl09IkRFQ0FZRUQiLHRbdC5VTktOT1dOPTddPSJVTktOT1dOIn0pKEpwfHwoSnA9e30pKX0pO3ZhciBqcCxiRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUkJJVD0wXT0iT1JCSVQiLHRbdC5MQU5ESU5HPTFdPSJMQU5ESU5HIix0W3QuSU1QQUNUPTJdPSJJTVBBQ1QiLHRbdC5ET0NLRUQ9M109IkRPQ0tFRCIsdFt0LlJPVU5EVFJJUD00XT0iUk9VTkRUUklQIn0pKGpwfHwoanA9e30pKX0pO3ZhciBIcD1PKCgpPT57X3QoKTt5cCgpO0NGKCk7Z0YoKTtURigpO05GKCk7YkYoKX0pO3ZhciBKMz1PKCgpPT57X3QoKTtIcCgpfSk7dmFyIEZGPU8oKCk9PntfdCgpO0hwKCl9KTt2YXIgajM9TygoKT0+e190KCk7RkYoKX0pO3ZhciBIMz1PKCgpPT57X3QoKTtMcCgpfSk7dmFyIHYzPU8oKCk9PntfdCgpO3lwKCl9KTt2YXIgejM9TygoKT0+e19GKCk7SHAoKTtKMygpO0ZGKCk7ajMoKTtSRigpO1pGKCk7RHAoKTtMcCgpO0gzKCk7eXAoKTt2MygpO0lGKCk7cEYoKTt1RigpO0NGKCk7Z0YoKTtURigpO05GKCk7YkYoKX0pO3ZhciBZRj1PKCgpPT57X3QoKX0pO3ZhciBLMz1PKCgpPT57X3QoKTtZRigpfSk7dmFyIFgzPU8oKCk9PntZRigpO0szKCl9KTt2YXIgU0Y9TygoKT0+e190KCl9KTt2YXIgcTM9TygoKT0+e190KCk7U0YoKX0pO3ZhciAkMz1PKCgpPT57U0YoKTtxMygpfSk7dmFyIHdfLHZwPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KSh3X3x8KHdfPXt9KSl9KTt2YXIgT0Y9TygoKT0+e190KCk7dnAoKX0pO3ZhciB0ND1PKCgpPT57X3QoKTtPRigpfSk7dmFyIFZGPU8oKCk9PntfdCgpO3ZwKCl9KTt2YXIgZTQ9TygoKT0+e190KCk7VkYoKX0pO3ZhciBpND1PKCgpPT57T0YoKTt0NCgpO1ZGKCk7ZTQoKTt2cCgpfSk7dmFyIHpwLEdGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk9CU0VSVkVEPTBdPSJPQlNFUlZFRCIsdFt0LlBSRURJQ1RFRD0xXT0iUFJFRElDVEVEIn0pKHpwfHwoenA9e30pKX0pO3ZhciBCRj1PKCgpPT57X3QoKTtHRigpfSk7dmFyIG40PU8oKCk9PntfdCgpO0JGKCl9KTt2YXIgczQ9TygoKT0+e0dGKCk7QkYoKTtuNCgpfSk7dmFyIFdGPU8oKCk9PntfdCgpfSk7dmFyIEtwLERGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlNpZ25pbmc9MF09IlNpZ25pbmciLHRbdC5FbmNyeXB0aW9uPTFdPSJFbmNyeXB0aW9uIn0pKEtwfHwoS3A9e30pKX0pO3ZhciBNRj1PKCgpPT57X3QoKTtERigpfSk7dmFyIFVGPU8oKCk9PntfdCgpO1dGKCk7TUYoKX0pO3ZhciBvND1PKCgpPT57X3QoKTtVRigpfSk7dmFyIHI0PU8oKCk9PntXRigpO01GKCk7VUYoKTtvNCgpO0RGKCl9KTt2YXIgWHAsUUY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1VUTElFUj0wXT0iT1VUTElFUiJ9KShYcHx8KFhwPXt9KSl9KTt2YXIga0Y9TygoKT0+e190KCk7UUYoKX0pO3ZhciBMRj1PKCgpPT57X3QoKTtrRigpfSk7dmFyIGE0PU8oKCk9PntfdCgpO0xGKCl9KTt2YXIgQTQ9TygoKT0+e0xGKCk7YTQoKTtrRigpO1FGKCl9KTt2YXIgcXA9TygoKT0+e190KCl9KTt2YXIgeUY9TygoKT0+e190KCk7cXAoKX0pO3ZhciAkcCx3Rj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5SRUFMPTBdPSJSRUFMIix0W3QuU0lNVUxBVEVEPTFdPSJTSU1VTEFURUQiLHRbdC5TWU5USEVUSUM9Ml09IlNZTlRIRVRJQyJ9KSgkcHx8KCRwPXt9KSl9KTt2YXIgdHUseEY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0Lk9QVElDQUw9MV09Ik9QVElDQUwiLHRbdC5JTkZSQVJFRF9TRU5TT1I9Ml09IklORlJBUkVEX1NFTlNPUiIsdFt0LlVMVFJBVklPTEVUX1NFTlNPUj0zXT0iVUxUUkFWSU9MRVRfU0VOU09SIix0W3QuWF9SQVlfU0VOU09SPTRdPSJYX1JBWV9TRU5TT1IiLHRbdC5HQU1NQV9SQVlfU0VOU09SPTVdPSJHQU1NQV9SQVlfU0VOU09SIix0W3QuUkFEQVI9Nl09IlJBREFSIix0W3QuUEhBU0VEX0FSUkFZX1JBREFSPTddPSJQSEFTRURfQVJSQVlfUkFEQVIiLHRbdC5TWU5USEVUSUNfQVBFUlRVUkVfUkFEQVI9OF09IlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUiIsdFt0LkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRT05XT0iQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFIix0W3QuUkFESU9fVEVMRVNDT1BFPTEwXT0iUkFESU9fVEVMRVNDT1BFIix0W3QuQVRNT1NQSEVSSUNfU0VOU09SPTExXT0iQVRNT1NQSEVSSUNfU0VOU09SIix0W3QuU1BBQ0VfV0VBVEhFUl9TRU5TT1I9MTJdPSJTUEFDRV9XRUFUSEVSX1NFTlNPUiIsdFt0LkVOVklST05NRU5UQUxfU0VOU09SPTEzXT0iRU5WSVJPTk1FTlRBTF9TRU5TT1IiLHRbdC5TRUlTTUlDX1NFTlNPUj0xNF09IlNFSVNNSUNfU0VOU09SIix0W3QuR1JBVklNRVRSSUNfU0VOU09SPTE1XT0iR1JBVklNRVRSSUNfU0VOU09SIix0W3QuTUFHTkVUSUNfU0VOU09SPTE2XT0iTUFHTkVUSUNfU0VOU09SIix0W3QuRUxFQ1RST01BR05FVElDX1NFTlNPUj0xN109IkVMRUNUUk9NQUdORVRJQ19TRU5TT1IiLHRbdC5USEVSTUFMX1NFTlNPUj0xOF09IlRIRVJNQUxfU0VOU09SIix0W3QuQ0hFTUlDQUxfU0VOU09SPTE5XT0iQ0hFTUlDQUxfU0VOU09SIix0W3QuQklPTE9HSUNBTF9TRU5TT1I9MjBdPSJCSU9MT0dJQ0FMX1NFTlNPUiIsdFt0LlJBRElBVElPTl9TRU5TT1I9MjFdPSJSQURJQVRJT05fU0VOU09SIix0W3QuUEFSVElDTEVfREVURUNUT1I9MjJdPSJQQVJUSUNMRV9ERVRFQ1RPUiIsdFt0LkxJREFSPTIzXT0iTElEQVIiLHRbdC5TT05BUj0yNF09IlNPTkFSIix0W3QuVEVMRVNDT1BFPTI1XT0iVEVMRVNDT1BFIix0W3QuU1BFQ1RST1NDT1BJQ19TRU5TT1I9MjZdPSJTUEVDVFJPU0NPUElDX1NFTlNPUiIsdFt0LlBIT1RPTUVUUklDX1NFTlNPUj0yN109IlBIT1RPTUVUUklDX1NFTlNPUiIsdFt0LlBPTEFSSU1FVFJJQ19TRU5TT1I9MjhdPSJQT0xBUklNRVRSSUNfU0VOU09SIix0W3QuSU5URVJGRVJPTUVUUklDX1NFTlNPUj0yOV09IklOVEVSRkVST01FVFJJQ19TRU5TT1IiLHRbdC5NVUxUSVNQRUNUUkFMX1NFTlNPUj0zMF09Ik1VTFRJU1BFQ1RSQUxfU0VOU09SIix0W3QuSFlQRVJTUEVDVFJBTF9TRU5TT1I9MzFdPSJIWVBFUlNQRUNUUkFMX1NFTlNPUiIsdFt0LkdQU19SRUNFSVZFUj0zMl09IkdQU19SRUNFSVZFUiIsdFt0LlJBRElPX0NPTU1VTklDQVRJT05TPTMzXT0iUkFESU9fQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9DT01NVU5JQ0FUSU9OUz0zNF09IkxBU0VSX0NPTU1VTklDQVRJT05TIix0W3QuU0FURUxMSVRFX0NPTU1VTklDQVRJT05TPTM1XT0iU0FURUxMSVRFX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfSU5TVFJVTUVOVD0zNl09IkxBU0VSX0lOU1RSVU1FTlQiLHRbdC5SRl9BTkFMWVpFUj0zN109IlJGX0FOQUxZWkVSIix0W3QuSU9OT1NQSEVSSUNfU0VOU09SPTM4XT0iSU9OT1NQSEVSSUNfU0VOU09SIix0W3QuTEFTRVJfSU1BR0lORz0zOV09IkxBU0VSX0lNQUdJTkciLHRbdC5PUFRJQ0FMX1RFTEVTQ09QRT00MF09Ik9QVElDQUxfVEVMRVNDT1BFIix0W3QuSElHSF9SRVNPTFVUSU9OX09QVElDQUw9NDFdPSJISUdIX1JFU09MVVRJT05fT1BUSUNBTCIsdFt0LlJBRElPPTQyXT0iUkFESU8iLHRbdC5NSUNST1dBVkVfVFJBTlNNSVRURVI9NDNdPSJNSUNST1dBVkVfVFJBTlNNSVRURVIiLHRbdC5SRl9NT05JVE9SPTQ0XT0iUkZfTU9OSVRPUiIsdFt0LkhGX1JBRElPX0NPTU1VTklDQVRJT05TPTQ1XT0iSEZfUkFESU9fQ09NTVVOSUNBVElPTlMifSkodHV8fCh0dT17fSkpfSk7dmFyIGV1LFBGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LmxpbmVhcj0wXT0ibGluZWFyIix0W3QuY2lyY3VsYXI9MV09ImNpcmN1bGFyIix0W3QuZWxsaXB0aWNhbD0yXT0iZWxsaXB0aWNhbCIsdFt0LnVucG9sYXJpemVkPTNdPSJ1bnBvbGFyaXplZCJ9KShldXx8KGV1PXt9KSl9KTt2YXIgaXUsSkY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QudmVydGljYWw9MF09InZlcnRpY2FsIix0W3QuaG9yaXpvbnRhbD0xXT0iaG9yaXpvbnRhbCIsdFt0LmxlZnRIYW5kQ2lyY3VsYXI9Ml09ImxlZnRIYW5kQ2lyY3VsYXIiLHRbdC5yaWdodEhhbmRDaXJjdWxhcj0zXT0icmlnaHRIYW5kQ2lyY3VsYXIifSkoaXV8fChpdT17fSkpfSk7dmFyIGpGPU8oKCk9PntfdCgpfSk7dmFyIEhGPU8oKCk9PntfdCgpO3lGKCk7d0YoKTt4RigpO3FwKCk7UEYoKTtKRigpO2pGKCl9KTt2YXIgYzQ9TygoKT0+e190KCk7SEYoKX0pO3ZhciBsND1PKCgpPT57eUYoKTt3RigpO3hGKCk7cXAoKTtIRigpO2M0KCk7UEYoKTtKRigpO2pGKCl9KTt2YXIgdkY9TygoKT0+e190KCl9KTt2YXIgbnU9TygoKT0+e190KCl9KTt2YXIgbTQ9TygoKT0+e190KCk7bnUoKX0pO3ZhciBzdT1PKCgpPT57X3QoKX0pO3ZhciB6Rj1PKCgpPT57X3QoKTtzdSgpfSk7dmFyIG91LEtGPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlJFQUw9MF09IlJFQUwiLHRbdC5TSU1VTEFURUQ9MV09IlNJTVVMQVRFRCIsdFt0LlNZTlRIRVRJQz0yXT0iU1lOVEhFVElDIn0pKG91fHwob3U9e30pKX0pO3ZhciBydSxYRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuT1BUSUNBTD0xXT0iT1BUSUNBTCIsdFt0LklORlJBUkVEX1NFTlNPUj0yXT0iSU5GUkFSRURfU0VOU09SIix0W3QuVUxUUkFWSU9MRVRfU0VOU09SPTNdPSJVTFRSQVZJT0xFVF9TRU5TT1IiLHRbdC5YX1JBWV9TRU5TT1I9NF09IlhfUkFZX1NFTlNPUiIsdFt0LkdBTU1BX1JBWV9TRU5TT1I9NV09IkdBTU1BX1JBWV9TRU5TT1IiLHRbdC5SQURBUj02XT0iUkFEQVIiLHRbdC5QSEFTRURfQVJSQVlfUkFEQVI9N109IlBIQVNFRF9BUlJBWV9SQURBUiIsdFt0LlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUj04XT0iU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSIix0W3QuQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFPTldPSJCSVNUQVRJQ19SQURJT19URUxFU0NPUEUiLHRbdC5SQURJT19URUxFU0NPUEU9MTBdPSJSQURJT19URUxFU0NPUEUiLHRbdC5BVE1PU1BIRVJJQ19TRU5TT1I9MTFdPSJBVE1PU1BIRVJJQ19TRU5TT1IiLHRbdC5TUEFDRV9XRUFUSEVSX1NFTlNPUj0xMl09IlNQQUNFX1dFQVRIRVJfU0VOU09SIix0W3QuRU5WSVJPTk1FTlRBTF9TRU5TT1I9MTNdPSJFTlZJUk9OTUVOVEFMX1NFTlNPUiIsdFt0LlNFSVNNSUNfU0VOU09SPTE0XT0iU0VJU01JQ19TRU5TT1IiLHRbdC5HUkFWSU1FVFJJQ19TRU5TT1I9MTVdPSJHUkFWSU1FVFJJQ19TRU5TT1IiLHRbdC5NQUdORVRJQ19TRU5TT1I9MTZdPSJNQUdORVRJQ19TRU5TT1IiLHRbdC5FTEVDVFJPTUFHTkVUSUNfU0VOU09SPTE3XT0iRUxFQ1RST01BR05FVElDX1NFTlNPUiIsdFt0LlRIRVJNQUxfU0VOU09SPTE4XT0iVEhFUk1BTF9TRU5TT1IiLHRbdC5DSEVNSUNBTF9TRU5TT1I9MTldPSJDSEVNSUNBTF9TRU5TT1IiLHRbdC5CSU9MT0dJQ0FMX1NFTlNPUj0yMF09IkJJT0xPR0lDQUxfU0VOU09SIix0W3QuUkFESUFUSU9OX1NFTlNPUj0yMV09IlJBRElBVElPTl9TRU5TT1IiLHRbdC5QQVJUSUNMRV9ERVRFQ1RPUj0yMl09IlBBUlRJQ0xFX0RFVEVDVE9SIix0W3QuTElEQVI9MjNdPSJMSURBUiIsdFt0LlNPTkFSPTI0XT0iU09OQVIiLHRbdC5URUxFU0NPUEU9MjVdPSJURUxFU0NPUEUiLHRbdC5TUEVDVFJPU0NPUElDX1NFTlNPUj0yNl09IlNQRUNUUk9TQ09QSUNfU0VOU09SIix0W3QuUEhPVE9NRVRSSUNfU0VOU09SPTI3XT0iUEhPVE9NRVRSSUNfU0VOU09SIix0W3QuUE9MQVJJTUVUUklDX1NFTlNPUj0yOF09IlBPTEFSSU1FVFJJQ19TRU5TT1IiLHRbdC5JTlRFUkZFUk9NRVRSSUNfU0VOU09SPTI5XT0iSU5URVJGRVJPTUVUUklDX1NFTlNPUiIsdFt0Lk1VTFRJU1BFQ1RSQUxfU0VOU09SPTMwXT0iTVVMVElTUEVDVFJBTF9TRU5TT1IiLHRbdC5IWVBFUlNQRUNUUkFMX1NFTlNPUj0zMV09IkhZUEVSU1BFQ1RSQUxfU0VOU09SIix0W3QuR1BTX1JFQ0VJVkVSPTMyXT0iR1BTX1JFQ0VJVkVSIix0W3QuUkFESU9fQ09NTVVOSUNBVElPTlM9MzNdPSJSQURJT19DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0NPTU1VTklDQVRJT05TPTM0XT0iTEFTRVJfQ09NTVVOSUNBVElPTlMiLHRbdC5TQVRFTExJVEVfQ09NTVVOSUNBVElPTlM9MzVdPSJTQVRFTExJVEVfQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9JTlNUUlVNRU5UPTM2XT0iTEFTRVJfSU5TVFJVTUVOVCIsdFt0LlJGX0FOQUxZWkVSPTM3XT0iUkZfQU5BTFlaRVIiLHRbdC5JT05PU1BIRVJJQ19TRU5TT1I9MzhdPSJJT05PU1BIRVJJQ19TRU5TT1IiLHRbdC5MQVNFUl9JTUFHSU5HPTM5XT0iTEFTRVJfSU1BR0lORyIsdFt0Lk9QVElDQUxfVEVMRVNDT1BFPTQwXT0iT1BUSUNBTF9URUxFU0NPUEUiLHRbdC5ISUdIX1JFU09MVVRJT05fT1BUSUNBTD00MV09IkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMIix0W3QuUkFESU89NDJdPSJSQURJTyIsdFt0Lk1JQ1JPV0FWRV9UUkFOU01JVFRFUj00M109Ik1JQ1JPV0FWRV9UUkFOU01JVFRFUiIsdFt0LlJGX01PTklUT1I9NDRdPSJSRl9NT05JVE9SIix0W3QuSEZfUkFESU9fQ09NTVVOSUNBVElPTlM9NDVdPSJIRl9SQURJT19DT01NVU5JQ0FUSU9OUyJ9KShydXx8KHJ1PXt9KSl9KTt2YXIgYXUscUY9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QubGluZWFyPTBdPSJsaW5lYXIiLHRbdC5jaXJjdWxhcj0xXT0iY2lyY3VsYXIiLHRbdC5lbGxpcHRpY2FsPTJdPSJlbGxpcHRpY2FsIix0W3QudW5wb2xhcml6ZWQ9M109InVucG9sYXJpemVkIn0pKGF1fHwoYXU9e30pKX0pO3ZhciBBdSwkRj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC52ZXJ0aWNhbD0wXT0idmVydGljYWwiLHRbdC5ob3Jpem9udGFsPTFdPSJob3Jpem9udGFsIix0W3QubGVmdEhhbmRDaXJjdWxhcj0yXT0ibGVmdEhhbmRDaXJjdWxhciIsdFt0LnJpZ2h0SGFuZENpcmN1bGFyPTNdPSJyaWdodEhhbmRDaXJjdWxhciJ9KShBdXx8KEF1PXt9KSl9KTt2YXIgdFk9TygoKT0+e190KCl9KTt2YXIgeF89TygoKT0+e190KCk7ekYoKTtLRigpO1hGKCk7c3UoKTtxRigpOyRGKCk7dFkoKX0pO3ZhciBodT1PKCgpPT57X3QoKTt4XygpfSk7dmFyIGN1LGlZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk5PX0NVUlJFTlRfRUxFTUVOVFM9MF09Ik5PX0NVUlJFTlRfRUxFTUVOVFMiLHRbdC5OT19JTklUSUFMX0VMRU1FTlRTPTFdPSJOT19JTklUSUFMX0VMRU1FTlRTIix0W3QuTk9fRUxFTUVOVFNfQVZBSUxBQkxFPTJdPSJOT19FTEVNRU5UU19BVkFJTEFCTEUiLHRbdC5PSz0zXT0iT0sifSkoY3V8fChjdT17fSkpfSk7dmFyIGx1LG5ZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkRSWT0wXT0iRFJZIix0W3QuV0VUPTFdPSJXRVQifSkobHV8fChsdT17fSkpfSk7dmFyIGR1LHNZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlBBWUxPQUQ9MF09IlBBWUxPQUQiLHRbdC5ST0NLRVRfQk9EWT0xXT0iUk9DS0VUX0JPRFkiLHRbdC5ERUJSSVM9Ml09IkRFQlJJUyIsdFt0LlVOS05PV049M109IlVOS05PV04ifSkoZHV8fChkdT17fSkpfSk7dmFyIG11LG9ZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk9QRVJBVElPTkFMPTBdPSJPUEVSQVRJT05BTCIsdFt0Lk5PTk9QRVJBVElPTkFMPTFdPSJOT05PUEVSQVRJT05BTCIsdFt0LlBBUlRJQUxMWV9PUEVSQVRJT05BTD0yXT0iUEFSVElBTExZX09QRVJBVElPTkFMIix0W3QuQkFDS1VQX1NUQU5EQlk9M109IkJBQ0tVUF9TVEFOREJZIix0W3QuU1BBUkU9NF09IlNQQVJFIix0W3QuRVhURU5ERURfTUlTU0lPTj01XT0iRVhURU5ERURfTUlTU0lPTiIsdFt0LkRFQ0FZRUQ9Nl09IkRFQ0FZRUQiLHRbdC5VTktOT1dOPTddPSJVTktOT1dOIn0pKG11fHwobXU9e30pKX0pO3ZhciBmdSxyWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUkJJVD0wXT0iT1JCSVQiLHRbdC5MQU5ESU5HPTFdPSJMQU5ESU5HIix0W3QuSU1QQUNUPTJdPSJJTVBBQ1QiLHRbdC5ET0NLRUQ9M109IkRPQ0tFRCIsdFt0LlJPVU5EVFJJUD00XT0iUk9VTkRUUklQIn0pKGZ1fHwoZnU9e30pKX0pO3ZhciBFdT1PKCgpPT57X3QoKTtodSgpO2lZKCk7blkoKTtzWSgpO29ZKCk7clkoKX0pO3ZhciBSND1PKCgpPT57X3QoKTtFdSgpfSk7dmFyIF91LGFZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlNpZ25pbmc9MF09IlNpZ25pbmciLHRbdC5FbmNyeXB0aW9uPTFdPSJFbmNyeXB0aW9uIn0pKF91fHwoX3U9e30pKX0pO3ZhciBBWT1PKCgpPT57X3QoKTthWSgpfSk7dmFyIFJ1LGhZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkxJUVVJRD0wXT0iTElRVUlEIix0W3QuU09MSUQ9MV09IlNPTElEIix0W3QuSFlCUklEPTJdPSJIWUJSSUQiLHRbdC5JT049M109IklPTiIsdFt0Lk5VQ0xFQVJfVEhFUk1BTD00XT0iTlVDTEVBUl9USEVSTUFMIix0W3QuT1RIRVI9NV09Ik9USEVSIn0pKFJ1fHwoUnU9e30pKX0pO3ZhciBjWT1PKCgpPT57X3QoKTtoWSgpfSk7dmFyIFp1PU8oKCk9PntfdCgpO3ZGKCk7QVkoKX0pO3ZhciBJND1PKCgpPT57X3QoKTtadSgpfSk7dmFyIGxZPU8oKCk9PntfdCgpfSk7dmFyIHA0PU8oKCk9PntfdCgpO3hfKCl9KTt2YXIgZFk9TygoKT0+e190KCk7Y1koKX0pO3ZhciBtWT1PKCgpPT57X3QoKX0pO3ZhciBJdT1PKCgpPT57X3QoKTtkWSgpO21ZKCl9KTt2YXIgcHUsZlk9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuTEFVTkNIX1NJVEU9MF09IkxBVU5DSF9TSVRFIix0W3QuT0JTRVJWQVRJT05fU1RBVElPTj0xXT0iT0JTRVJWQVRJT05fU1RBVElPTiIsdFt0LkhPQkJZSVNUX09CU0VSVkVSPTJdPSJIT0JCWUlTVF9PQlNFUlZFUiIsdFt0LlJFU0VBUkNIX0ZBQ0lMSVRZPTNdPSJSRVNFQVJDSF9GQUNJTElUWSIsdFt0LlNBVEVMTElURV9HUk9VTkRfU1RBVElPTj00XT0iU0FURUxMSVRFX0dST1VORF9TVEFUSU9OIix0W3QuU1BBQ0VQT1JUPTVdPSJTUEFDRVBPUlQiLHRbdC5NSUxJVEFSWV9CQVNFPTZdPSJNSUxJVEFSWV9CQVNFIix0W3QuV0VBVEhFUl9TVEFUSU9OPTddPSJXRUFUSEVSX1NUQVRJT04iLHRbdC5BU1RST05PTUlDQUxfT0JTRVJWQVRPUlk9OF09IkFTVFJPTk9NSUNBTF9PQlNFUlZBVE9SWSIsdFt0LkVEVUNBVElPTkFMX0lOU1RJVFVURT05XT0iRURVQ0FUSU9OQUxfSU5TVElUVVRFIix0W3QuQ09NTVVOSUNBVElPTl9IVUI9MTBdPSJDT01NVU5JQ0FUSU9OX0hVQiIsdFt0LlBPV0VSX1BMQU5UPTExXT0iUE9XRVJfUExBTlQiLHRbdC5JTkRVU1RSSUFMX0NPTVBMRVg9MTJdPSJJTkRVU1RSSUFMX0NPTVBMRVgiLHRbdC5UUkFOU1BPUlRBVElPTl9IVUI9MTNdPSJUUkFOU1BPUlRBVElPTl9IVUIiLHRbdC5VUkJBTl9BUkVBPTE0XT0iVVJCQU5fQVJFQSIsdFt0Lk5BVElPTkFMX1BBUks9MTVdPSJOQVRJT05BTF9QQVJLIix0W3QuSElTVE9SSUNBTF9TSVRFPTE2XT0iSElTVE9SSUNBTF9TSVRFIix0W3QuT1RIRVI9MTddPSJPVEhFUiJ9KShwdXx8KHB1PXt9KSl9KTt2YXIgdXU9TygoKT0+e190KCk7bFkoKTt4XygpO2ZZKCl9KTt2YXIgRVk9TygoKT0+e190KCk7bnUoKTtFdSgpO1p1KCk7SXUoKTt1dSgpfSk7dmFyIGc0PU8oKCk9PntfdCgpO0VZKCl9KTt2YXIgVDQ9TygoKT0+e190KCk7aHUoKX0pO3ZhciBOND1PKCgpPT57X3QoKTtJdSgpfSk7dmFyIGI0PU8oKCk9PntfdCgpO3V1KCl9KTt2YXIgRjQ9TygoKT0+e3ZGKCk7bnUoKTttNCgpO3pGKCk7RXUoKTtSNCgpO0FZKCk7S0YoKTtYRigpO2NZKCk7aFkoKTtadSgpO0k0KCk7c3UoKTtsWSgpO3hfKCk7cDQoKTthWSgpO0VZKCk7ZzQoKTtodSgpO1Q0KCk7cUYoKTtJdSgpO040KCk7dXUoKTtiNCgpO2RZKCk7bVkoKTskRigpO2ZZKCk7dFkoKTtpWSgpO25ZKCk7c1koKTtvWSgpO3JZKCl9KTt2YXIgQ3UsX1k9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuU0dQND0wXT0iU0dQNCIsdFt0LlNHUDRYUD0xXT0iU0dQNFhQIix0W3QuRFNTVD0yXT0iRFNTVCIsdFt0LlVTTT0zXT0iVVNNIn0pKEN1fHwoQ3U9e30pKX0pO3ZhciBSWT1PKCgpPT57X3QoKTtfWSgpfSk7dmFyIFk0PU8oKCk9PntfdCgpO1JZKCl9KTt2YXIgUzQ9TygoKT0+e1JZKCk7WTQoKTtfWSgpfSk7dmFyIFBfLGd1PU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlNHUDQ9MF09IlNHUDQiLHRbdC5TR1A0WFA9MV09IlNHUDRYUCIsdFt0LkRTU1Q9Ml09IkRTU1QiLHRbdC5VU009M109IlVTTSJ9KShQX3x8KFBfPXt9KSl9KTt2YXIgWlk9TygoKT0+e190KCk7Z3UoKX0pO3ZhciBPND1PKCgpPT57X3QoKTtaWSgpfSk7dmFyIElZPU8oKCk9PntfdCgpO2d1KCl9KTt2YXIgVjQ9TygoKT0+e190KCk7SVkoKX0pO3ZhciBHND1PKCgpPT57WlkoKTtPNCgpO0lZKCk7VjQoKTtndSgpfSk7dmFyIG1mLEpfPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShtZnx8KG1mPXt9KSl9KTt2YXIgcFk9TygoKT0+e190KCk7Sl8oKX0pO3ZhciB1WT1PKCgpPT57X3QoKX0pO3ZhciBqXyxUdT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5HTVNUPTBdPSJHTVNUIix0W3QuR1BTPTFdPSJHUFMiLHRbdC5NRVQ9Ml09Ik1FVCIsdFt0Lk1SVD0zXT0iTVJUIix0W3QuU0NMSz00XT0iU0NMSyIsdFt0LlRBST01XT0iVEFJIix0W3QuVENCPTZdPSJUQ0IiLHRbdC5UREI9N109IlREQiIsdFt0LlRDRz04XT0iVENHIix0W3QuVFQ9OV09IlRUIix0W3QuVVQxPTEwXT0iVVQxIix0W3QuVVRDPTExXT0iVVRDIn0pKGpffHwoal89e30pKX0pO3ZhciBDWT1PKCgpPT57X3QoKTtwWSgpO3VZKCk7Sl8oKTtUdSgpfSk7dmFyIGdZPU8oKCk9PntfdCgpO0NZKCl9KTt2YXIgQjQ9TygoKT0+e190KCk7Z1koKX0pO3ZhciBUWT1PKCgpPT57X3QoKTtKXygpfSk7dmFyIFc0PU8oKCk9PntfdCgpO1RZKCl9KTt2YXIgTlk9TygoKT0+e190KCk7VHUoKX0pO3ZhciBEND1PKCgpPT57X3QoKTtOWSgpfSk7dmFyIE00PU8oKCk9PntnWSgpO0I0KCk7VFkoKTtXNCgpO05ZKCk7RDQoKTtwWSgpO0NZKCk7dVkoKTtKXygpO1R1KCl9KTt2YXIgS3IsTnU9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuU0dQND0wXT0iU0dQNCIsdFt0LlNHUDRYUD0xXT0iU0dQNFhQIix0W3QuRFNTVD0yXT0iRFNTVCIsdFt0LlVTTT0zXT0iVVNNIn0pKEtyfHwoS3I9e30pKX0pO3ZhciBpZCxIXyxiWT1PKCgpPT57X3QoKTtOdSgpO2lkPWNsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmJiPW51bGwsdGhpcy5iYl9wb3M9MH1fX2luaXQoZSxpKXtyZXR1cm4gdGhpcy5iYl9wb3M9ZSx0aGlzLmJiPWksdGhpc31zdGF0aWMgZ2V0Um9vdEFzTUVUKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc01FVChlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgYnVmZmVySGFzSWRlbnRpZmllcihlKXtyZXR1cm4gZS5fX2hhc19pZGVudGlmaWVyKCIkTUVUIil9TUVBTl9FTEVNRU5UX1RIRU9SWSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpLci5TR1A0fXN0YXRpYyBzdGFydE1FVChlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRNZWFuRWxlbWVudFRoZW9yeShlLGkpe2UuYWRkRmllbGRJbnQ4KDAsaSxLci5TR1A0KX1zdGF0aWMgZW5kTUVUKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hNRVRCdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkTUVUIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZE1FVEJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRNRVQiLCEwKX1zdGF0aWMgY3JlYXRlTUVUKGUsaSl7cmV0dXJuIHQuc3RhcnRNRVQoZSksdC5hZGRNZWFuRWxlbWVudFRoZW9yeShlLGkpLHQuZW5kTUVUKGUpfXVucGFjaygpe3JldHVybiBuZXcgSF8odGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZKCkpfXVucGFja1RvKGUpe2UuTUVBTl9FTEVNRU5UX1RIRU9SWT10aGlzLk1FQU5fRUxFTUVOVF9USEVPUlkoKX19LEhfPWNsYXNze2NvbnN0cnVjdG9yKGU9S3IuU0dQNCl7dGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZPWV9cGFjayhlKXtyZXR1cm4gaWQuY3JlYXRlTUVUKGUsdGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZKX19fSk7dmFyIGZmLHZfLFU0PU8oKCk9PntfdCgpO2JZKCk7ZmY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNNRVRDT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc01FVENPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBpZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydE1FVENPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kTUVUQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlTUVUQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0TUVUQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZE1FVENPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyB2Xyh0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LHZfPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9ZmYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gZmYuY3JlYXRlTUVUQ09MTEVDVElPTihlLGkpfX19KTt2YXIgRGMsRlk9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuU0dQPTBdPSJTR1AiLHRbdC5TR1A0PTFdPSJTR1A0Iix0W3QuU0RQND0yXT0iU0RQNCIsdFt0LlNHUDg9M109IlNHUDgiLHRbdC5TRFA4PTRdPSJTRFA4In0pKERjfHwoRGM9e30pKX0pO3ZhciBMbyxidT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FQ0VGPTBdPSJFQ0VGIix0W3QuSUNSRj0xXT0iSUNSRiIsdFt0LlRFTUU9Ml09IlRFTUUiLHRbdC5FTlU9M109IkVOVSIsdFt0Lk5FRD00XT0iTkVEIix0W3QuTkVVPTVdPSJORVUiLHRbdC5SSUM9Nl09IlJJQyIsdFt0LkoyMDAwPTddPSJKMjAwMCIsdFt0LkdDUkY9OF09IkdDUkYiLHRbdC5HUkM9OV09IkdSQyIsdFt0LklUUkYyMDAwPTEwXT0iSVRSRjIwMDAiLHRbdC5JVFJGOTM9MTFdPSJJVFJGOTMiLHRbdC5JVFJGOTc9MTJdPSJJVFJGOTciLHRbdC5URFI9MTNdPSJURFIiLHRbdC5UT0Q9MTRdPSJUT0QiLHRbdC5SVE49MTVdPSJSVE4iLHRbdC5UVk49MTZdPSJUVk4iLHRbdC5WVkxIPTE3XT0iVlZMSCIsdFt0LlZMVkg9MThdPSJWTFZIIix0W3QuTFRQPTE5XT0iTFRQIix0W3QuTFZMSD0yMF09IkxWTEgiLHRbdC5QTkU9MjFdPSJQTkUiLHRbdC5CUkY9MjJdPSJCUkYiLHRbdC5SU1c9MjNdPSJSU1ciLHRbdC5UTlc9MjRdPSJUTlcifSkoTG98fChMbz17fSkpfSk7dmFyIFhyLEZ1PU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkdNU1Q9MF09IkdNU1QiLHRbdC5HUFM9MV09IkdQUyIsdFt0Lk1FVD0yXT0iTUVUIix0W3QuTVJUPTNdPSJNUlQiLHRbdC5TQ0xLPTRdPSJTQ0xLIix0W3QuVEFJPTVdPSJUQUkiLHRbdC5UQ0I9Nl09IlRDQiIsdFt0LlREQj03XT0iVERCIix0W3QuVENHPThdPSJUQ0ciLHRbdC5UVD05XT0iVFQiLHRbdC5VVDE9MTBdPSJVVDEiLHRbdC5VVEM9MTFdPSJVVEMifSkoWHJ8fChYcj17fSkpfSk7dmFyIG5kLHpfLFlZPU8oKCk9PntfdCgpO0ZZKCk7TnUoKTtidSgpO0Z1KCk7bmQ9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNPTU0oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzT01NKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRPTU0iKX1DQ1NEU19PTU1fVkVSUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNSRUFUSU9OX0RBVEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw2KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1PUklHSU5BVE9SKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9T0JKRUNUX05BTUUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9T0JKRUNUX0lEKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTIpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUNFTlRFUl9OQU1FKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfVJFRkVSRU5DRV9GUkFNRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTYpO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6TG8uVEVNRX1SRUZFUkVOQ0VfRlJBTUVfRVBPQ0goZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9VElNRV9TWVNURU0oKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDIwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOlhyLlVUQ31NRUFOX0VMRU1FTlRfVEhFT1JZKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpLci5TR1A0fUNPTU1FTlQoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9RVBPQ0goZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNik7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9U0VNSV9NQUpPUl9BWElTKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfU1FQU5fTU9USU9OKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzMCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUVDQ0VOVFJJQ0lUWSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1JTkNMSU5BVElPTigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1SQV9PRl9BU0NfTk9ERSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1BUkdfT0ZfUEVSSUNFTlRFUigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NRUFOX0FOT01BTFkoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9R00oKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TUFTUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1TT0xBUl9SQURfQVJFQSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1TT0xBUl9SQURfQ09FRkYoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQ4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9RFJBR19BUkVBKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw1MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfURSQUdfQ09FRkYoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDUyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9RVBIRU1FUklTX1RZUEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOkRjLlNHUDR9Q0xBU1NJRklDQVRJT05fVFlQRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU2KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1OT1JBRF9DQVRfSUQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRVaW50MzIodGhpcy5iYl9wb3MrZSk6MH1FTEVNRU5UX1NFVF9OTygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjApO3JldHVybiBlP3RoaXMuYmIucmVhZFVpbnQzMih0aGlzLmJiX3BvcytlKTowfVJFVl9BVF9FUE9DSCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1CU1RBUigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NRUFOX01PVElPTl9ET1QoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDY2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TUVBTl9NT1RJT05fRERPVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DT1ZfUkVGRVJFTkNFX0ZSQU1FKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw3MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpMby5SU1d9Q1hfWCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNzIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWV9YKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw3NCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX1koKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDc2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1pfWCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNzgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWl9ZKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw4MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNaX1ooKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDgyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1goKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDg0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1koKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDg2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1ooKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDg4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1hfRE9UKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9YKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5Mik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9ZKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5NCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9aKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5Nik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9YX0RPVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOTgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWV9ET1RfWV9ET1QoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDEwMCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNaX0RPVF9YKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMDIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWl9ET1RfWSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTA0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1pfRE9UX1ooKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDEwNik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNaX0RPVF9YX0RPVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTA4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1pfRE9UX1lfRE9UKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMTApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWl9ET1RfWl9ET1QoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDExMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVTRVJfREVGSU5FRF9CSVBfMDA0NF9UWVBFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMTQpO3JldHVybiBlP3RoaXMuYmIucmVhZFVpbnQzMih0aGlzLmJiX3BvcytlKTowfVVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUihlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDExNik7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9VVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTE4KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMjApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1VU0VSX0RFRklORURfTUlDUk9TRUNPTkRTKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMjIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRPTU0oZSl7ZS5zdGFydE9iamVjdCg2MCl9c3RhdGljIGFkZENjc2RzT21tVmVycyhlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDAsaSwwKX1zdGF0aWMgYWRkQ3JlYXRpb25EYXRlKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxLGksMCl9c3RhdGljIGFkZE9yaWdpbmF0b3IoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDIsaSwwKX1zdGF0aWMgYWRkT2JqZWN0TmFtZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoMyxpLDApfXN0YXRpYyBhZGRPYmplY3RJZChlLGkpe2UuYWRkRmllbGRPZmZzZXQoNCxpLDApfXN0YXRpYyBhZGRDZW50ZXJOYW1lKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg1LGksMCl9c3RhdGljIGFkZFJlZmVyZW5jZUZyYW1lKGUsaSl7ZS5hZGRGaWVsZEludDgoNixpLExvLlRFTUUpfXN0YXRpYyBhZGRSZWZlcmVuY2VGcmFtZUVwb2NoKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg3LGksMCl9c3RhdGljIGFkZFRpbWVTeXN0ZW0oZSxpKXtlLmFkZEZpZWxkSW50OCg4LGksWHIuVVRDKX1zdGF0aWMgYWRkTWVhbkVsZW1lbnRUaGVvcnkoZSxpKXtlLmFkZEZpZWxkSW50OCg5LGksS3IuU0dQNCl9c3RhdGljIGFkZENvbW1lbnQoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDEwLGksMCl9c3RhdGljIGFkZEVwb2NoKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxMSxpLDApfXN0YXRpYyBhZGRTZW1pTWFqb3JBeGlzKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTIsaSwwKX1zdGF0aWMgYWRkTWVhbk1vdGlvbihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEzLGksMCl9c3RhdGljIGFkZEVjY2VudHJpY2l0eShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDE0LGksMCl9c3RhdGljIGFkZEluY2xpbmF0aW9uKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTUsaSwwKX1zdGF0aWMgYWRkUmFPZkFzY05vZGUoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgxNixpLDApfXN0YXRpYyBhZGRBcmdPZlBlcmljZW50ZXIoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgxNyxpLDApfXN0YXRpYyBhZGRNZWFuQW5vbWFseShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDE4LGksMCl9c3RhdGljIGFkZEdtKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTksaSwwKX1zdGF0aWMgYWRkTWFzcyhlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIwLGksMCl9c3RhdGljIGFkZFNvbGFyUmFkQXJlYShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIxLGksMCl9c3RhdGljIGFkZFNvbGFyUmFkQ29lZmYoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgyMixpLDApfXN0YXRpYyBhZGREcmFnQXJlYShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIzLGksMCl9c3RhdGljIGFkZERyYWdDb2VmZihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDI0LGksMCl9c3RhdGljIGFkZEVwaGVtZXJpc1R5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCgyNSxpLERjLlNHUDQpfXN0YXRpYyBhZGRDbGFzc2lmaWNhdGlvblR5cGUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDI2LGksMCl9c3RhdGljIGFkZE5vcmFkQ2F0SWQoZSxpKXtlLmFkZEZpZWxkSW50MzIoMjcsaSwwKX1zdGF0aWMgYWRkRWxlbWVudFNldE5vKGUsaSl7ZS5hZGRGaWVsZEludDMyKDI4LGksMCl9c3RhdGljIGFkZFJldkF0RXBvY2goZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgyOSxpLDApfXN0YXRpYyBhZGRCc3RhcihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDMwLGksMCl9c3RhdGljIGFkZE1lYW5Nb3Rpb25Eb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzMSxpLDApfXN0YXRpYyBhZGRNZWFuTW90aW9uRGRvdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDMyLGksMCl9c3RhdGljIGFkZENvdlJlZmVyZW5jZUZyYW1lKGUsaSl7ZS5hZGRGaWVsZEludDgoMzMsaSxMby5SU1cpfXN0YXRpYyBhZGRDeFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNCxpLDApfXN0YXRpYyBhZGRDeVgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNSxpLDApfXN0YXRpYyBhZGRDeVkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNixpLDApfXN0YXRpYyBhZGRDelgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNyxpLDApfXN0YXRpYyBhZGRDelkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzOCxpLDApfXN0YXRpYyBhZGRDelooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzOSxpLDApfXN0YXRpYyBhZGRDeERvdFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MCxpLDApfXN0YXRpYyBhZGRDeERvdFkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MSxpLDApfXN0YXRpYyBhZGRDeERvdFooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MixpLDApfXN0YXRpYyBhZGRDeERvdFhEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MyxpLDApfXN0YXRpYyBhZGRDeURvdFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NCxpLDApfXN0YXRpYyBhZGRDeURvdFkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NSxpLDApfXN0YXRpYyBhZGRDeURvdFooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NixpLDApfXN0YXRpYyBhZGRDeURvdFhEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NyxpLDApfXN0YXRpYyBhZGRDeURvdFlEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0OCxpLDApfXN0YXRpYyBhZGRDekRvdFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0OSxpLDApfXN0YXRpYyBhZGRDekRvdFkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MCxpLDApfXN0YXRpYyBhZGRDekRvdFooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MSxpLDApfXN0YXRpYyBhZGRDekRvdFhEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MixpLDApfXN0YXRpYyBhZGRDekRvdFlEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MyxpLDApfXN0YXRpYyBhZGRDekRvdFpEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1NCxpLDApfXN0YXRpYyBhZGRVc2VyRGVmaW5lZEJpcDAwNDRUeXBlKGUsaSl7ZS5hZGRGaWVsZEludDMyKDU1LGksMCl9c3RhdGljIGFkZFVzZXJEZWZpbmVkT2JqZWN0RGVzaWduYXRvcihlLGkpe2UuYWRkRmllbGRPZmZzZXQoNTYsaSwwKX1zdGF0aWMgYWRkVXNlckRlZmluZWRFYXJ0aE1vZGVsKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg1NyxpLDApfXN0YXRpYyBhZGRVc2VyRGVmaW5lZEVwb2NoVGltZXN0YW1wKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoNTgsaSwwKX1zdGF0aWMgYWRkVXNlckRlZmluZWRNaWNyb3NlY29uZHMoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1OSxpLDApfXN0YXRpYyBlbmRPTU0oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGZpbmlzaE9NTUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRPTU0iKX1zdGF0aWMgZmluaXNoU2l6ZVByZWZpeGVkT01NQnVmZmVyKGUsaSl7ZS5maW5pc2goaSwiJE9NTSIsITApfXN0YXRpYyBjcmVhdGVPTU0oZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEksQyxOLFQsRixiLEcsTSxRLFUsayx5LGMsZyxWLEQsdyx4LEgsaixYLHR0LEIsSXQsZ3QsWXQsTXQsQ3QsenQsa3QsSnQsV3QsRnQsZWUsY2UsamUsT2UsTWUsVWUsQ2UsYmUsbmksemUsR2UsVWksUmksc2kpe3JldHVybiB0LnN0YXJ0T01NKGUpLHQuYWRkQ2NzZHNPbW1WZXJzKGUsaSksdC5hZGRDcmVhdGlvbkRhdGUoZSxuKSx0LmFkZE9yaWdpbmF0b3IoZSxzKSx0LmFkZE9iamVjdE5hbWUoZSxvKSx0LmFkZE9iamVjdElkKGUsciksdC5hZGRDZW50ZXJOYW1lKGUsYSksdC5hZGRSZWZlcmVuY2VGcmFtZShlLGgpLHQuYWRkUmVmZXJlbmNlRnJhbWVFcG9jaChlLEEpLHQuYWRkVGltZVN5c3RlbShlLGQpLHQuYWRkTWVhbkVsZW1lbnRUaGVvcnkoZSxmKSx0LmFkZENvbW1lbnQoZSxFKSx0LmFkZEVwb2NoKGUsXyksdC5hZGRTZW1pTWFqb3JBeGlzKGUsUiksdC5hZGRNZWFuTW90aW9uKGUsSSksdC5hZGRFY2NlbnRyaWNpdHkoZSxDKSx0LmFkZEluY2xpbmF0aW9uKGUsTiksdC5hZGRSYU9mQXNjTm9kZShlLFQpLHQuYWRkQXJnT2ZQZXJpY2VudGVyKGUsRiksdC5hZGRNZWFuQW5vbWFseShlLGIpLHQuYWRkR20oZSxHKSx0LmFkZE1hc3MoZSxNKSx0LmFkZFNvbGFyUmFkQXJlYShlLFEpLHQuYWRkU29sYXJSYWRDb2VmZihlLFUpLHQuYWRkRHJhZ0FyZWEoZSxrKSx0LmFkZERyYWdDb2VmZihlLHkpLHQuYWRkRXBoZW1lcmlzVHlwZShlLGMpLHQuYWRkQ2xhc3NpZmljYXRpb25UeXBlKGUsZyksdC5hZGROb3JhZENhdElkKGUsViksdC5hZGRFbGVtZW50U2V0Tm8oZSxEKSx0LmFkZFJldkF0RXBvY2goZSx3KSx0LmFkZEJzdGFyKGUseCksdC5hZGRNZWFuTW90aW9uRG90KGUsSCksdC5hZGRNZWFuTW90aW9uRGRvdChlLGopLHQuYWRkQ292UmVmZXJlbmNlRnJhbWUoZSxYKSx0LmFkZEN4WChlLHR0KSx0LmFkZEN5WChlLEIpLHQuYWRkQ3lZKGUsSXQpLHQuYWRkQ3pYKGUsZ3QpLHQuYWRkQ3pZKGUsWXQpLHQuYWRkQ3paKGUsTXQpLHQuYWRkQ3hEb3RYKGUsQ3QpLHQuYWRkQ3hEb3RZKGUsenQpLHQuYWRkQ3hEb3RaKGUsa3QpLHQuYWRkQ3hEb3RYRG90KGUsSnQpLHQuYWRkQ3lEb3RYKGUsV3QpLHQuYWRkQ3lEb3RZKGUsRnQpLHQuYWRkQ3lEb3RaKGUsZWUpLHQuYWRkQ3lEb3RYRG90KGUsY2UpLHQuYWRkQ3lEb3RZRG90KGUsamUpLHQuYWRkQ3pEb3RYKGUsT2UpLHQuYWRkQ3pEb3RZKGUsTWUpLHQuYWRkQ3pEb3RaKGUsVWUpLHQuYWRkQ3pEb3RYRG90KGUsQ2UpLHQuYWRkQ3pEb3RZRG90KGUsYmUpLHQuYWRkQ3pEb3RaRG90KGUsbmkpLHQuYWRkVXNlckRlZmluZWRCaXAwMDQ0VHlwZShlLHplKSx0LmFkZFVzZXJEZWZpbmVkT2JqZWN0RGVzaWduYXRvcihlLEdlKSx0LmFkZFVzZXJEZWZpbmVkRWFydGhNb2RlbChlLFVpKSx0LmFkZFVzZXJEZWZpbmVkRXBvY2hUaW1lc3RhbXAoZSxSaSksdC5hZGRVc2VyRGVmaW5lZE1pY3Jvc2Vjb25kcyhlLHNpKSx0LmVuZE9NTShlKX11bnBhY2soKXtyZXR1cm4gbmV3IHpfKHRoaXMuQ0NTRFNfT01NX1ZFUlMoKSx0aGlzLkNSRUFUSU9OX0RBVEUoKSx0aGlzLk9SSUdJTkFUT1IoKSx0aGlzLk9CSkVDVF9OQU1FKCksdGhpcy5PQkpFQ1RfSUQoKSx0aGlzLkNFTlRFUl9OQU1FKCksdGhpcy5SRUZFUkVOQ0VfRlJBTUUoKSx0aGlzLlJFRkVSRU5DRV9GUkFNRV9FUE9DSCgpLHRoaXMuVElNRV9TWVNURU0oKSx0aGlzLk1FQU5fRUxFTUVOVF9USEVPUlkoKSx0aGlzLkNPTU1FTlQoKSx0aGlzLkVQT0NIKCksdGhpcy5TRU1JX01BSk9SX0FYSVMoKSx0aGlzLk1FQU5fTU9USU9OKCksdGhpcy5FQ0NFTlRSSUNJVFkoKSx0aGlzLklOQ0xJTkFUSU9OKCksdGhpcy5SQV9PRl9BU0NfTk9ERSgpLHRoaXMuQVJHX09GX1BFUklDRU5URVIoKSx0aGlzLk1FQU5fQU5PTUFMWSgpLHRoaXMuR00oKSx0aGlzLk1BU1MoKSx0aGlzLlNPTEFSX1JBRF9BUkVBKCksdGhpcy5TT0xBUl9SQURfQ09FRkYoKSx0aGlzLkRSQUdfQVJFQSgpLHRoaXMuRFJBR19DT0VGRigpLHRoaXMuRVBIRU1FUklTX1RZUEUoKSx0aGlzLkNMQVNTSUZJQ0FUSU9OX1RZUEUoKSx0aGlzLk5PUkFEX0NBVF9JRCgpLHRoaXMuRUxFTUVOVF9TRVRfTk8oKSx0aGlzLlJFVl9BVF9FUE9DSCgpLHRoaXMuQlNUQVIoKSx0aGlzLk1FQU5fTU9USU9OX0RPVCgpLHRoaXMuTUVBTl9NT1RJT05fRERPVCgpLHRoaXMuQ09WX1JFRkVSRU5DRV9GUkFNRSgpLHRoaXMuQ1hfWCgpLHRoaXMuQ1lfWCgpLHRoaXMuQ1lfWSgpLHRoaXMuQ1pfWCgpLHRoaXMuQ1pfWSgpLHRoaXMuQ1pfWigpLHRoaXMuQ1hfRE9UX1goKSx0aGlzLkNYX0RPVF9ZKCksdGhpcy5DWF9ET1RfWigpLHRoaXMuQ1hfRE9UX1hfRE9UKCksdGhpcy5DWV9ET1RfWCgpLHRoaXMuQ1lfRE9UX1koKSx0aGlzLkNZX0RPVF9aKCksdGhpcy5DWV9ET1RfWF9ET1QoKSx0aGlzLkNZX0RPVF9ZX0RPVCgpLHRoaXMuQ1pfRE9UX1goKSx0aGlzLkNaX0RPVF9ZKCksdGhpcy5DWl9ET1RfWigpLHRoaXMuQ1pfRE9UX1hfRE9UKCksdGhpcy5DWl9ET1RfWV9ET1QoKSx0aGlzLkNaX0RPVF9aX0RPVCgpLHRoaXMuVVNFUl9ERUZJTkVEX0JJUF8wMDQ0X1RZUEUoKSx0aGlzLlVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUigpLHRoaXMuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKCksdGhpcy5VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QKCksdGhpcy5VU0VSX0RFRklORURfTUlDUk9TRUNPTkRTKCkpfXVucGFja1RvKGUpe2UuQ0NTRFNfT01NX1ZFUlM9dGhpcy5DQ1NEU19PTU1fVkVSUygpLGUuQ1JFQVRJT05fREFURT10aGlzLkNSRUFUSU9OX0RBVEUoKSxlLk9SSUdJTkFUT1I9dGhpcy5PUklHSU5BVE9SKCksZS5PQkpFQ1RfTkFNRT10aGlzLk9CSkVDVF9OQU1FKCksZS5PQkpFQ1RfSUQ9dGhpcy5PQkpFQ1RfSUQoKSxlLkNFTlRFUl9OQU1FPXRoaXMuQ0VOVEVSX05BTUUoKSxlLlJFRkVSRU5DRV9GUkFNRT10aGlzLlJFRkVSRU5DRV9GUkFNRSgpLGUuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIPXRoaXMuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIKCksZS5USU1FX1NZU1RFTT10aGlzLlRJTUVfU1lTVEVNKCksZS5NRUFOX0VMRU1FTlRfVEhFT1JZPXRoaXMuTUVBTl9FTEVNRU5UX1RIRU9SWSgpLGUuQ09NTUVOVD10aGlzLkNPTU1FTlQoKSxlLkVQT0NIPXRoaXMuRVBPQ0goKSxlLlNFTUlfTUFKT1JfQVhJUz10aGlzLlNFTUlfTUFKT1JfQVhJUygpLGUuTUVBTl9NT1RJT049dGhpcy5NRUFOX01PVElPTigpLGUuRUNDRU5UUklDSVRZPXRoaXMuRUNDRU5UUklDSVRZKCksZS5JTkNMSU5BVElPTj10aGlzLklOQ0xJTkFUSU9OKCksZS5SQV9PRl9BU0NfTk9ERT10aGlzLlJBX09GX0FTQ19OT0RFKCksZS5BUkdfT0ZfUEVSSUNFTlRFUj10aGlzLkFSR19PRl9QRVJJQ0VOVEVSKCksZS5NRUFOX0FOT01BTFk9dGhpcy5NRUFOX0FOT01BTFkoKSxlLkdNPXRoaXMuR00oKSxlLk1BU1M9dGhpcy5NQVNTKCksZS5TT0xBUl9SQURfQVJFQT10aGlzLlNPTEFSX1JBRF9BUkVBKCksZS5TT0xBUl9SQURfQ09FRkY9dGhpcy5TT0xBUl9SQURfQ09FRkYoKSxlLkRSQUdfQVJFQT10aGlzLkRSQUdfQVJFQSgpLGUuRFJBR19DT0VGRj10aGlzLkRSQUdfQ09FRkYoKSxlLkVQSEVNRVJJU19UWVBFPXRoaXMuRVBIRU1FUklTX1RZUEUoKSxlLkNMQVNTSUZJQ0FUSU9OX1RZUEU9dGhpcy5DTEFTU0lGSUNBVElPTl9UWVBFKCksZS5OT1JBRF9DQVRfSUQ9dGhpcy5OT1JBRF9DQVRfSUQoKSxlLkVMRU1FTlRfU0VUX05PPXRoaXMuRUxFTUVOVF9TRVRfTk8oKSxlLlJFVl9BVF9FUE9DSD10aGlzLlJFVl9BVF9FUE9DSCgpLGUuQlNUQVI9dGhpcy5CU1RBUigpLGUuTUVBTl9NT1RJT05fRE9UPXRoaXMuTUVBTl9NT1RJT05fRE9UKCksZS5NRUFOX01PVElPTl9ERE9UPXRoaXMuTUVBTl9NT1RJT05fRERPVCgpLGUuQ09WX1JFRkVSRU5DRV9GUkFNRT10aGlzLkNPVl9SRUZFUkVOQ0VfRlJBTUUoKSxlLkNYX1g9dGhpcy5DWF9YKCksZS5DWV9YPXRoaXMuQ1lfWCgpLGUuQ1lfWT10aGlzLkNZX1koKSxlLkNaX1g9dGhpcy5DWl9YKCksZS5DWl9ZPXRoaXMuQ1pfWSgpLGUuQ1pfWj10aGlzLkNaX1ooKSxlLkNYX0RPVF9YPXRoaXMuQ1hfRE9UX1goKSxlLkNYX0RPVF9ZPXRoaXMuQ1hfRE9UX1koKSxlLkNYX0RPVF9aPXRoaXMuQ1hfRE9UX1ooKSxlLkNYX0RPVF9YX0RPVD10aGlzLkNYX0RPVF9YX0RPVCgpLGUuQ1lfRE9UX1g9dGhpcy5DWV9ET1RfWCgpLGUuQ1lfRE9UX1k9dGhpcy5DWV9ET1RfWSgpLGUuQ1lfRE9UX1o9dGhpcy5DWV9ET1RfWigpLGUuQ1lfRE9UX1hfRE9UPXRoaXMuQ1lfRE9UX1hfRE9UKCksZS5DWV9ET1RfWV9ET1Q9dGhpcy5DWV9ET1RfWV9ET1QoKSxlLkNaX0RPVF9YPXRoaXMuQ1pfRE9UX1goKSxlLkNaX0RPVF9ZPXRoaXMuQ1pfRE9UX1koKSxlLkNaX0RPVF9aPXRoaXMuQ1pfRE9UX1ooKSxlLkNaX0RPVF9YX0RPVD10aGlzLkNaX0RPVF9YX0RPVCgpLGUuQ1pfRE9UX1lfRE9UPXRoaXMuQ1pfRE9UX1lfRE9UKCksZS5DWl9ET1RfWl9ET1Q9dGhpcy5DWl9ET1RfWl9ET1QoKSxlLlVTRVJfREVGSU5FRF9CSVBfMDA0NF9UWVBFPXRoaXMuVVNFUl9ERUZJTkVEX0JJUF8wMDQ0X1RZUEUoKSxlLlVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUj10aGlzLlVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUigpLGUuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMPXRoaXMuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKCksZS5VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QPXRoaXMuVVNFUl9ERUZJTkVEX0VQT0NIX1RJTUVTVEFNUCgpLGUuVVNFUl9ERUZJTkVEX01JQ1JPU0VDT05EUz10aGlzLlVTRVJfREVGSU5FRF9NSUNST1NFQ09ORFMoKX19LHpfPWNsYXNze2NvbnN0cnVjdG9yKGU9MCxpPW51bGwsbj1udWxsLHM9bnVsbCxvPW51bGwscj1udWxsLGE9TG8uVEVNRSxoPW51bGwsQT1Yci5VVEMsZD1Lci5TR1A0LGY9bnVsbCxFPW51bGwsXz0wLFI9MCxJPTAsQz0wLE49MCxUPTAsRj0wLGI9MCxHPTAsTT0wLFE9MCxVPTAsaz0wLHk9RGMuU0dQNCxjPW51bGwsZz0wLFY9MCxEPTAsdz0wLHg9MCxIPTAsaj1Mby5SU1csWD0wLHR0PTAsQj0wLEl0PTAsZ3Q9MCxZdD0wLE10PTAsQ3Q9MCx6dD0wLGt0PTAsSnQ9MCxXdD0wLEZ0PTAsZWU9MCxjZT0wLGplPTAsT2U9MCxNZT0wLFVlPTAsQ2U9MCxiZT0wLG5pPTAsemU9bnVsbCxHZT1udWxsLFVpPTAsUmk9MCl7dGhpcy5DQ1NEU19PTU1fVkVSUz1lLHRoaXMuQ1JFQVRJT05fREFURT1pLHRoaXMuT1JJR0lOQVRPUj1uLHRoaXMuT0JKRUNUX05BTUU9cyx0aGlzLk9CSkVDVF9JRD1vLHRoaXMuQ0VOVEVSX05BTUU9cix0aGlzLlJFRkVSRU5DRV9GUkFNRT1hLHRoaXMuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIPWgsdGhpcy5USU1FX1NZU1RFTT1BLHRoaXMuTUVBTl9FTEVNRU5UX1RIRU9SWT1kLHRoaXMuQ09NTUVOVD1mLHRoaXMuRVBPQ0g9RSx0aGlzLlNFTUlfTUFKT1JfQVhJUz1fLHRoaXMuTUVBTl9NT1RJT049Uix0aGlzLkVDQ0VOVFJJQ0lUWT1JLHRoaXMuSU5DTElOQVRJT049Qyx0aGlzLlJBX09GX0FTQ19OT0RFPU4sdGhpcy5BUkdfT0ZfUEVSSUNFTlRFUj1ULHRoaXMuTUVBTl9BTk9NQUxZPUYsdGhpcy5HTT1iLHRoaXMuTUFTUz1HLHRoaXMuU09MQVJfUkFEX0FSRUE9TSx0aGlzLlNPTEFSX1JBRF9DT0VGRj1RLHRoaXMuRFJBR19BUkVBPVUsdGhpcy5EUkFHX0NPRUZGPWssdGhpcy5FUEhFTUVSSVNfVFlQRT15LHRoaXMuQ0xBU1NJRklDQVRJT05fVFlQRT1jLHRoaXMuTk9SQURfQ0FUX0lEPWcsdGhpcy5FTEVNRU5UX1NFVF9OTz1WLHRoaXMuUkVWX0FUX0VQT0NIPUQsdGhpcy5CU1RBUj13LHRoaXMuTUVBTl9NT1RJT05fRE9UPXgsdGhpcy5NRUFOX01PVElPTl9ERE9UPUgsdGhpcy5DT1ZfUkVGRVJFTkNFX0ZSQU1FPWosdGhpcy5DWF9YPVgsdGhpcy5DWV9YPXR0LHRoaXMuQ1lfWT1CLHRoaXMuQ1pfWD1JdCx0aGlzLkNaX1k9Z3QsdGhpcy5DWl9aPVl0LHRoaXMuQ1hfRE9UX1g9TXQsdGhpcy5DWF9ET1RfWT1DdCx0aGlzLkNYX0RPVF9aPXp0LHRoaXMuQ1hfRE9UX1hfRE9UPWt0LHRoaXMuQ1lfRE9UX1g9SnQsdGhpcy5DWV9ET1RfWT1XdCx0aGlzLkNZX0RPVF9aPUZ0LHRoaXMuQ1lfRE9UX1hfRE9UPWVlLHRoaXMuQ1lfRE9UX1lfRE9UPWNlLHRoaXMuQ1pfRE9UX1g9amUsdGhpcy5DWl9ET1RfWT1PZSx0aGlzLkNaX0RPVF9aPU1lLHRoaXMuQ1pfRE9UX1hfRE9UPVVlLHRoaXMuQ1pfRE9UX1lfRE9UPUNlLHRoaXMuQ1pfRE9UX1pfRE9UPWJlLHRoaXMuVVNFUl9ERUZJTkVEX0JJUF8wMDQ0X1RZUEU9bmksdGhpcy5VU0VSX0RFRklORURfT0JKRUNUX0RFU0lHTkFUT1I9emUsdGhpcy5VU0VSX0RFRklORURfRUFSVEhfTU9ERUw9R2UsdGhpcy5VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QPVVpLHRoaXMuVVNFUl9ERUZJTkVEX01JQ1JPU0VDT05EUz1SaX1wYWNrKGUpe2xldCBpPXRoaXMuQ1JFQVRJT05fREFURSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DUkVBVElPTl9EQVRFKTowLG49dGhpcy5PUklHSU5BVE9SIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk9SSUdJTkFUT1IpOjAscz10aGlzLk9CSkVDVF9OQU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk9CSkVDVF9OQU1FKTowLG89dGhpcy5PQkpFQ1RfSUQhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuT0JKRUNUX0lEKTowLHI9dGhpcy5DRU5URVJfTkFNRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DRU5URVJfTkFNRSk6MCxhPXRoaXMuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLlJFRkVSRU5DRV9GUkFNRV9FUE9DSCk6MCxoPXRoaXMuQ09NTUVOVCE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DT01NRU5UKTowLEE9dGhpcy5FUE9DSCE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5FUE9DSCk6MCxkPXRoaXMuQ0xBU1NJRklDQVRJT05fVFlQRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DTEFTU0lGSUNBVElPTl9UWVBFKTowLGY9dGhpcy5VU0VSX0RFRklORURfT0JKRUNUX0RFU0lHTkFUT1IhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuVVNFUl9ERUZJTkVEX09CSkVDVF9ERVNJR05BVE9SKTowLEU9dGhpcy5VU0VSX0RFRklORURfRUFSVEhfTU9ERUwhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKTowO3JldHVybiBuZC5jcmVhdGVPTU0oZSx0aGlzLkNDU0RTX09NTV9WRVJTLGksbixzLG8scix0aGlzLlJFRkVSRU5DRV9GUkFNRSxhLHRoaXMuVElNRV9TWVNURU0sdGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZLGgsQSx0aGlzLlNFTUlfTUFKT1JfQVhJUyx0aGlzLk1FQU5fTU9USU9OLHRoaXMuRUNDRU5UUklDSVRZLHRoaXMuSU5DTElOQVRJT04sdGhpcy5SQV9PRl9BU0NfTk9ERSx0aGlzLkFSR19PRl9QRVJJQ0VOVEVSLHRoaXMuTUVBTl9BTk9NQUxZLHRoaXMuR00sdGhpcy5NQVNTLHRoaXMuU09MQVJfUkFEX0FSRUEsdGhpcy5TT0xBUl9SQURfQ09FRkYsdGhpcy5EUkFHX0FSRUEsdGhpcy5EUkFHX0NPRUZGLHRoaXMuRVBIRU1FUklTX1RZUEUsZCx0aGlzLk5PUkFEX0NBVF9JRCx0aGlzLkVMRU1FTlRfU0VUX05PLHRoaXMuUkVWX0FUX0VQT0NILHRoaXMuQlNUQVIsdGhpcy5NRUFOX01PVElPTl9ET1QsdGhpcy5NRUFOX01PVElPTl9ERE9ULHRoaXMuQ09WX1JFRkVSRU5DRV9GUkFNRSx0aGlzLkNYX1gsdGhpcy5DWV9YLHRoaXMuQ1lfWSx0aGlzLkNaX1gsdGhpcy5DWl9ZLHRoaXMuQ1pfWix0aGlzLkNYX0RPVF9YLHRoaXMuQ1hfRE9UX1ksdGhpcy5DWF9ET1RfWix0aGlzLkNYX0RPVF9YX0RPVCx0aGlzLkNZX0RPVF9YLHRoaXMuQ1lfRE9UX1ksdGhpcy5DWV9ET1RfWix0aGlzLkNZX0RPVF9YX0RPVCx0aGlzLkNZX0RPVF9ZX0RPVCx0aGlzLkNaX0RPVF9YLHRoaXMuQ1pfRE9UX1ksdGhpcy5DWl9ET1RfWix0aGlzLkNaX0RPVF9YX0RPVCx0aGlzLkNaX0RPVF9ZX0RPVCx0aGlzLkNaX0RPVF9aX0RPVCx0aGlzLlVTRVJfREVGSU5FRF9CSVBfMDA0NF9UWVBFLGYsRSx0aGlzLlVTRVJfREVGSU5FRF9FUE9DSF9USU1FU1RBTVAsdGhpcy5VU0VSX0RFRklORURfTUlDUk9TRUNPTkRTKX19fSk7dmFyIEVmLEtfLFE0PU8oKCk9PntfdCgpO1lZKCk7RWY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNPTU1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc09NTUNPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBuZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydE9NTUNPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kT01NQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlT01NQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0T01NQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZE9NTUNPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBLXyh0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LEtfPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9RWYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gRWYuY3JlYXRlT01NQ09MTEVDVElPTihlLGkpfX19KTt2YXIgc2QsWF8sU1k9TygoKT0+e190KCk7YnUoKTtzZD1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5iYj1udWxsLHRoaXMuYmJfcG9zPTB9X19pbml0KGUsaSl7cmV0dXJuIHRoaXMuYmJfcG9zPWUsdGhpcy5iYj1pLHRoaXN9c3RhdGljIGdldFJvb3RBc1JGTShlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNSRk0oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGJ1ZmZlckhhc0lkZW50aWZpZXIoZSl7cmV0dXJuIGUuX19oYXNfaWRlbnRpZmllcigiJFJGTSIpfVJFRkVSRU5DRV9GUkFNRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpMby5FQ0VGfXN0YXRpYyBzdGFydFJGTShlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRSZWZlcmVuY2VGcmFtZShlLGkpe2UuYWRkRmllbGRJbnQ4KDAsaSxMby5FQ0VGKX1zdGF0aWMgZW5kUkZNKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hSRk1CdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkUkZNIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZFJGTUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRSRk0iLCEwKX1zdGF0aWMgY3JlYXRlUkZNKGUsaSl7cmV0dXJuIHQuc3RhcnRSRk0oZSksdC5hZGRSZWZlcmVuY2VGcmFtZShlLGkpLHQuZW5kUkZNKGUpfXVucGFjaygpe3JldHVybiBuZXcgWF8odGhpcy5SRUZFUkVOQ0VfRlJBTUUoKSl9dW5wYWNrVG8oZSl7ZS5SRUZFUkVOQ0VfRlJBTUU9dGhpcy5SRUZFUkVOQ0VfRlJBTUUoKX19LFhfPWNsYXNze2NvbnN0cnVjdG9yKGU9TG8uRUNFRil7dGhpcy5SRUZFUkVOQ0VfRlJBTUU9ZX1wYWNrKGUpe3JldHVybiBzZC5jcmVhdGVSRk0oZSx0aGlzLlJFRkVSRU5DRV9GUkFNRSl9fX0pO3ZhciBfZixxXyxrND1PKCgpPT57X3QoKTtTWSgpO19mPWNsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmJiPW51bGwsdGhpcy5iYl9wb3M9MH1fX2luaXQoZSxpKXtyZXR1cm4gdGhpcy5iYl9wb3M9ZSx0aGlzLmJiPWksdGhpc31zdGF0aWMgZ2V0Um9vdEFzUkZNQ09MTEVDVElPTihlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNSRk1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfVJFQ09SRFMoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBuPyhpfHxuZXcgc2QpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcytuKStlKjQpLHRoaXMuYmIpOm51bGx9cmVjb3Jkc0xlbmd0aCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRSRk1DT0xMRUNUSU9OKGUpe2Uuc3RhcnRPYmplY3QoMSl9c3RhdGljIGFkZFJlY29yZHMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDAsaSwwKX1zdGF0aWMgY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGksNCl9c3RhdGljIGVuZFJGTUNPTExFQ1RJT04oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGNyZWF0ZVJGTUNPTExFQ1RJT04oZSxpKXtyZXR1cm4gdC5zdGFydFJGTUNPTExFQ1RJT04oZSksdC5hZGRSZWNvcmRzKGUsaSksdC5lbmRSRk1DT0xMRUNUSU9OKGUpfXVucGFjaygpe3JldHVybiBuZXcgcV8odGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKSl9dW5wYWNrVG8oZSl7ZS5SRUNPUkRTPXRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlJFQ09SRFMuYmluZCh0aGlzKSx0aGlzLnJlY29yZHNMZW5ndGgoKSl9fSxxXz1jbGFzc3tjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLlJFQ09SRFM9ZX1wYWNrKGUpe2xldCBpPV9mLmNyZWF0ZVJlY29yZHNWZWN0b3IoZSxlLmNyZWF0ZU9iamVjdE9mZnNldExpc3QodGhpcy5SRUNPUkRTKSk7cmV0dXJuIF9mLmNyZWF0ZVJGTUNPTExFQ1RJT04oZSxpKX19fSk7dmFyIG9kLCRfLE9ZPU8oKCk9PntfdCgpO0Z1KCk7b2Q9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNUSU0oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzVElNKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRUSU0iKX1USU1FX1NZU1RFTSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpYci5HTVNUfXN0YXRpYyBzdGFydFRJTShlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRUaW1lU3lzdGVtKGUsaSl7ZS5hZGRGaWVsZEludDgoMCxpLFhyLkdNU1QpfXN0YXRpYyBlbmRUSU0oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGZpbmlzaFRJTUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRUSU0iKX1zdGF0aWMgZmluaXNoU2l6ZVByZWZpeGVkVElNQnVmZmVyKGUsaSl7ZS5maW5pc2goaSwiJFRJTSIsITApfXN0YXRpYyBjcmVhdGVUSU0oZSxpKXtyZXR1cm4gdC5zdGFydFRJTShlKSx0LmFkZFRpbWVTeXN0ZW0oZSxpKSx0LmVuZFRJTShlKX11bnBhY2soKXtyZXR1cm4gbmV3ICRfKHRoaXMuVElNRV9TWVNURU0oKSl9dW5wYWNrVG8oZSl7ZS5USU1FX1NZU1RFTT10aGlzLlRJTUVfU1lTVEVNKCl9fSwkXz1jbGFzc3tjb25zdHJ1Y3RvcihlPVhyLkdNU1Qpe3RoaXMuVElNRV9TWVNURU09ZX1wYWNrKGUpe3JldHVybiBvZC5jcmVhdGVUSU0oZSx0aGlzLlRJTUVfU1lTVEVNKX19fSk7dmFyIFJmLHRSLEw0PU8oKCk9PntfdCgpO09ZKCk7UmY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNUSU1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc1RJTUNPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBvZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydFRJTUNPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kVElNQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlVElNQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0VElNQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZFRJTUNPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyB0Uih0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LHRSPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9UmYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gUmYuY3JlYXRlVElNQ09MTEVDVElPTihlLGkpfX19KTt2YXIgcmQ9e307SGUocmQse01FVDooKT0+aWQsTUVUQ09MTEVDVElPTjooKT0+ZmYsTUVUQ09MTEVDVElPTlQ6KCk9PnZfLE1FVFQ6KCk9PkhfLE9NTTooKT0+bmQsT01NQ09MTEVDVElPTjooKT0+RWYsT01NQ09MTEVDVElPTlQ6KCk9PktfLE9NTVQ6KCk9PnpfLFJGTTooKT0+c2QsUkZNQ09MTEVDVElPTjooKT0+X2YsUkZNQ09MTEVDVElPTlQ6KCk9PnFfLFJGTVQ6KCk9PlhfLFRJTTooKT0+b2QsVElNQ09MTEVDVElPTjooKT0+UmYsVElNQ09MTEVDVElPTlQ6KCk9PnRSLFRJTVQ6KCk9PiRfLGVwaGVtZXJpc1R5cGU6KCk9PkRjLG1lYW5FbGVtZW50VGhlb3J5OigpPT5LcixyZWZGcmFtZTooKT0+TG8sdGltZVN5c3RlbTooKT0+WHJ9KTt2YXIgeTQ9TygoKT0+e2JZKCk7VTQoKTtZWSgpO1E0KCk7U1koKTtrNCgpO09ZKCk7TDQoKTtGWSgpO051KCk7YnUoKTtGdSgpfSk7dmFyIFZZPU8oKCk9PntfdCgpfSk7dmFyIHc0PU8oKCk9PntfdCgpO1ZZKCl9KTt2YXIgeDQ9TygoKT0+e1ZZKCk7dzQoKX0pO3ZhciBZdT1PKCgpPT57X3QoKX0pO3ZhciBHWT1PKCgpPT57X3QoKTtZdSgpfSk7dmFyIFN1LEJZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlJFQUw9MF09IlJFQUwiLHRbdC5TSU1VTEFURUQ9MV09IlNJTVVMQVRFRCIsdFt0LlNZTlRIRVRJQz0yXT0iU1lOVEhFVElDIn0pKFN1fHwoU3U9e30pKX0pO3ZhciBPdSxXWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuT1BUSUNBTD0xXT0iT1BUSUNBTCIsdFt0LklORlJBUkVEX1NFTlNPUj0yXT0iSU5GUkFSRURfU0VOU09SIix0W3QuVUxUUkFWSU9MRVRfU0VOU09SPTNdPSJVTFRSQVZJT0xFVF9TRU5TT1IiLHRbdC5YX1JBWV9TRU5TT1I9NF09IlhfUkFZX1NFTlNPUiIsdFt0LkdBTU1BX1JBWV9TRU5TT1I9NV09IkdBTU1BX1JBWV9TRU5TT1IiLHRbdC5SQURBUj02XT0iUkFEQVIiLHRbdC5QSEFTRURfQVJSQVlfUkFEQVI9N109IlBIQVNFRF9BUlJBWV9SQURBUiIsdFt0LlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUj04XT0iU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSIix0W3QuQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFPTldPSJCSVNUQVRJQ19SQURJT19URUxFU0NPUEUiLHRbdC5SQURJT19URUxFU0NPUEU9MTBdPSJSQURJT19URUxFU0NPUEUiLHRbdC5BVE1PU1BIRVJJQ19TRU5TT1I9MTFdPSJBVE1PU1BIRVJJQ19TRU5TT1IiLHRbdC5TUEFDRV9XRUFUSEVSX1NFTlNPUj0xMl09IlNQQUNFX1dFQVRIRVJfU0VOU09SIix0W3QuRU5WSVJPTk1FTlRBTF9TRU5TT1I9MTNdPSJFTlZJUk9OTUVOVEFMX1NFTlNPUiIsdFt0LlNFSVNNSUNfU0VOU09SPTE0XT0iU0VJU01JQ19TRU5TT1IiLHRbdC5HUkFWSU1FVFJJQ19TRU5TT1I9MTVdPSJHUkFWSU1FVFJJQ19TRU5TT1IiLHRbdC5NQUdORVRJQ19TRU5TT1I9MTZdPSJNQUdORVRJQ19TRU5TT1IiLHRbdC5FTEVDVFJPTUFHTkVUSUNfU0VOU09SPTE3XT0iRUxFQ1RST01BR05FVElDX1NFTlNPUiIsdFt0LlRIRVJNQUxfU0VOU09SPTE4XT0iVEhFUk1BTF9TRU5TT1IiLHRbdC5DSEVNSUNBTF9TRU5TT1I9MTldPSJDSEVNSUNBTF9TRU5TT1IiLHRbdC5CSU9MT0dJQ0FMX1NFTlNPUj0yMF09IkJJT0xPR0lDQUxfU0VOU09SIix0W3QuUkFESUFUSU9OX1NFTlNPUj0yMV09IlJBRElBVElPTl9TRU5TT1IiLHRbdC5QQVJUSUNMRV9ERVRFQ1RPUj0yMl09IlBBUlRJQ0xFX0RFVEVDVE9SIix0W3QuTElEQVI9MjNdPSJMSURBUiIsdFt0LlNPTkFSPTI0XT0iU09OQVIiLHRbdC5URUxFU0NPUEU9MjVdPSJURUxFU0NPUEUiLHRbdC5TUEVDVFJPU0NPUElDX1NFTlNPUj0yNl09IlNQRUNUUk9TQ09QSUNfU0VOU09SIix0W3QuUEhPVE9NRVRSSUNfU0VOU09SPTI3XT0iUEhPVE9NRVRSSUNfU0VOU09SIix0W3QuUE9MQVJJTUVUUklDX1NFTlNPUj0yOF09IlBPTEFSSU1FVFJJQ19TRU5TT1IiLHRbdC5JTlRFUkZFUk9NRVRSSUNfU0VOU09SPTI5XT0iSU5URVJGRVJPTUVUUklDX1NFTlNPUiIsdFt0Lk1VTFRJU1BFQ1RSQUxfU0VOU09SPTMwXT0iTVVMVElTUEVDVFJBTF9TRU5TT1IiLHRbdC5IWVBFUlNQRUNUUkFMX1NFTlNPUj0zMV09IkhZUEVSU1BFQ1RSQUxfU0VOU09SIix0W3QuR1BTX1JFQ0VJVkVSPTMyXT0iR1BTX1JFQ0VJVkVSIix0W3QuUkFESU9fQ09NTVVOSUNBVElPTlM9MzNdPSJSQURJT19DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0NPTU1VTklDQVRJT05TPTM0XT0iTEFTRVJfQ09NTVVOSUNBVElPTlMiLHRbdC5TQVRFTExJVEVfQ09NTVVOSUNBVElPTlM9MzVdPSJTQVRFTExJVEVfQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9JTlNUUlVNRU5UPTM2XT0iTEFTRVJfSU5TVFJVTUVOVCIsdFt0LlJGX0FOQUxZWkVSPTM3XT0iUkZfQU5BTFlaRVIiLHRbdC5JT05PU1BIRVJJQ19TRU5TT1I9MzhdPSJJT05PU1BIRVJJQ19TRU5TT1IiLHRbdC5MQVNFUl9JTUFHSU5HPTM5XT0iTEFTRVJfSU1BR0lORyIsdFt0Lk9QVElDQUxfVEVMRVNDT1BFPTQwXT0iT1BUSUNBTF9URUxFU0NPUEUiLHRbdC5ISUdIX1JFU09MVVRJT05fT1BUSUNBTD00MV09IkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMIix0W3QuUkFESU89NDJdPSJSQURJTyIsdFt0Lk1JQ1JPV0FWRV9UUkFOU01JVFRFUj00M109Ik1JQ1JPV0FWRV9UUkFOU01JVFRFUiIsdFt0LlJGX01PTklUT1I9NDRdPSJSRl9NT05JVE9SIix0W3QuSEZfUkFESU9fQ09NTVVOSUNBVElPTlM9NDVdPSJIRl9SQURJT19DT01NVU5JQ0FUSU9OUyJ9KShPdXx8KE91PXt9KSl9KTt2YXIgVnUsRFk9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QubGluZWFyPTBdPSJsaW5lYXIiLHRbdC5jaXJjdWxhcj0xXT0iY2lyY3VsYXIiLHRbdC5lbGxpcHRpY2FsPTJdPSJlbGxpcHRpY2FsIix0W3QudW5wb2xhcml6ZWQ9M109InVucG9sYXJpemVkIn0pKFZ1fHwoVnU9e30pKX0pO3ZhciBHdSxNWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC52ZXJ0aWNhbD0wXT0idmVydGljYWwiLHRbdC5ob3Jpem9udGFsPTFdPSJob3Jpem9udGFsIix0W3QubGVmdEhhbmRDaXJjdWxhcj0yXT0ibGVmdEhhbmRDaXJjdWxhciIsdFt0LnJpZ2h0SGFuZENpcmN1bGFyPTNdPSJyaWdodEhhbmRDaXJjdWxhciJ9KShHdXx8KEd1PXt9KSl9KTt2YXIgVVk9TygoKT0+e190KCl9KTt2YXIgQnU9TygoKT0+e190KCk7R1koKTtCWSgpO1dZKCk7WXUoKTtEWSgpO01ZKCk7VVkoKX0pO3ZhciBqND1PKCgpPT57X3QoKTtCdSgpfSk7dmFyIFFZPU8oKCk9PntfdCgpO0J1KCl9KTt2YXIgSDQ9TygoKT0+e190KCk7UVkoKX0pO3ZhciB2ND1PKCgpPT57R1koKTtCWSgpO1dZKCk7WXUoKTtCdSgpO2o0KCk7UVkoKTtINCgpO0RZKCk7TVkoKTtVWSgpfSk7dmFyIGtZPU8oKCk9PntfdCgpfSk7dmFyIHo0PU8oKCk9PntfdCgpO2tZKCl9KTt2YXIgSzQ9TygoKT0+e2tZKCk7ejQoKX0pO3ZhciBMWT1PKCgpPT57X3QoKX0pO3ZhciB5WT1PKCgpPT57X3QoKTtMWSgpfSk7dmFyIFg0PU8oKCk9PntfdCgpO3lZKCl9KTt2YXIgcTQ9TygoKT0+e3lZKCk7WDQoKTtMWSgpfSk7dmFyIHdZPU8oKCk9PntfdCgpfSk7dmFyIGVSPU8oKCk9PntfdCgpfSk7dmFyICQ0PU8oKCk9PntfdCgpO2VSKCl9KTt2YXIgV3U9TygoKT0+e190KCl9KTt2YXIgUFk9TygoKT0+e190KCk7V3UoKX0pO3ZhciBEdSxKWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5SRUFMPTBdPSJSRUFMIix0W3QuU0lNVUxBVEVEPTFdPSJTSU1VTEFURUQiLHRbdC5TWU5USEVUSUM9Ml09IlNZTlRIRVRJQyJ9KShEdXx8KER1PXt9KSl9KTt2YXIgTXUsalk9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0Lk9QVElDQUw9MV09Ik9QVElDQUwiLHRbdC5JTkZSQVJFRF9TRU5TT1I9Ml09IklORlJBUkVEX1NFTlNPUiIsdFt0LlVMVFJBVklPTEVUX1NFTlNPUj0zXT0iVUxUUkFWSU9MRVRfU0VOU09SIix0W3QuWF9SQVlfU0VOU09SPTRdPSJYX1JBWV9TRU5TT1IiLHRbdC5HQU1NQV9SQVlfU0VOU09SPTVdPSJHQU1NQV9SQVlfU0VOU09SIix0W3QuUkFEQVI9Nl09IlJBREFSIix0W3QuUEhBU0VEX0FSUkFZX1JBREFSPTddPSJQSEFTRURfQVJSQVlfUkFEQVIiLHRbdC5TWU5USEVUSUNfQVBFUlRVUkVfUkFEQVI9OF09IlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUiIsdFt0LkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRT05XT0iQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFIix0W3QuUkFESU9fVEVMRVNDT1BFPTEwXT0iUkFESU9fVEVMRVNDT1BFIix0W3QuQVRNT1NQSEVSSUNfU0VOU09SPTExXT0iQVRNT1NQSEVSSUNfU0VOU09SIix0W3QuU1BBQ0VfV0VBVEhFUl9TRU5TT1I9MTJdPSJTUEFDRV9XRUFUSEVSX1NFTlNPUiIsdFt0LkVOVklST05NRU5UQUxfU0VOU09SPTEzXT0iRU5WSVJPTk1FTlRBTF9TRU5TT1IiLHRbdC5TRUlTTUlDX1NFTlNPUj0xNF09IlNFSVNNSUNfU0VOU09SIix0W3QuR1JBVklNRVRSSUNfU0VOU09SPTE1XT0iR1JBVklNRVRSSUNfU0VOU09SIix0W3QuTUFHTkVUSUNfU0VOU09SPTE2XT0iTUFHTkVUSUNfU0VOU09SIix0W3QuRUxFQ1RST01BR05FVElDX1NFTlNPUj0xN109IkVMRUNUUk9NQUdORVRJQ19TRU5TT1IiLHRbdC5USEVSTUFMX1NFTlNPUj0xOF09IlRIRVJNQUxfU0VOU09SIix0W3QuQ0hFTUlDQUxfU0VOU09SPTE5XT0iQ0hFTUlDQUxfU0VOU09SIix0W3QuQklPTE9HSUNBTF9TRU5TT1I9MjBdPSJCSU9MT0dJQ0FMX1NFTlNPUiIsdFt0LlJBRElBVElPTl9TRU5TT1I9MjFdPSJSQURJQVRJT05fU0VOU09SIix0W3QuUEFSVElDTEVfREVURUNUT1I9MjJdPSJQQVJUSUNMRV9ERVRFQ1RPUiIsdFt0LkxJREFSPTIzXT0iTElEQVIiLHRbdC5TT05BUj0yNF09IlNPTkFSIix0W3QuVEVMRVNDT1BFPTI1XT0iVEVMRVNDT1BFIix0W3QuU1BFQ1RST1NDT1BJQ19TRU5TT1I9MjZdPSJTUEVDVFJPU0NPUElDX1NFTlNPUiIsdFt0LlBIT1RPTUVUUklDX1NFTlNPUj0yN109IlBIT1RPTUVUUklDX1NFTlNPUiIsdFt0LlBPTEFSSU1FVFJJQ19TRU5TT1I9MjhdPSJQT0xBUklNRVRSSUNfU0VOU09SIix0W3QuSU5URVJGRVJPTUVUUklDX1NFTlNPUj0yOV09IklOVEVSRkVST01FVFJJQ19TRU5TT1IiLHRbdC5NVUxUSVNQRUNUUkFMX1NFTlNPUj0zMF09Ik1VTFRJU1BFQ1RSQUxfU0VOU09SIix0W3QuSFlQRVJTUEVDVFJBTF9TRU5TT1I9MzFdPSJIWVBFUlNQRUNUUkFMX1NFTlNPUiIsdFt0LkdQU19SRUNFSVZFUj0zMl09IkdQU19SRUNFSVZFUiIsdFt0LlJBRElPX0NPTU1VTklDQVRJT05TPTMzXT0iUkFESU9fQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9DT01NVU5JQ0FUSU9OUz0zNF09IkxBU0VSX0NPTU1VTklDQVRJT05TIix0W3QuU0FURUxMSVRFX0NPTU1VTklDQVRJT05TPTM1XT0iU0FURUxMSVRFX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfSU5TVFJVTUVOVD0zNl09IkxBU0VSX0lOU1RSVU1FTlQiLHRbdC5SRl9BTkFMWVpFUj0zN109IlJGX0FOQUxZWkVSIix0W3QuSU9OT1NQSEVSSUNfU0VOU09SPTM4XT0iSU9OT1NQSEVSSUNfU0VOU09SIix0W3QuTEFTRVJfSU1BR0lORz0zOV09IkxBU0VSX0lNQUdJTkciLHRbdC5PUFRJQ0FMX1RFTEVTQ09QRT00MF09Ik9QVElDQUxfVEVMRVNDT1BFIix0W3QuSElHSF9SRVNPTFVUSU9OX09QVElDQUw9NDFdPSJISUdIX1JFU09MVVRJT05fT1BUSUNBTCIsdFt0LlJBRElPPTQyXT0iUkFESU8iLHRbdC5NSUNST1dBVkVfVFJBTlNNSVRURVI9NDNdPSJNSUNST1dBVkVfVFJBTlNNSVRURVIiLHRbdC5SRl9NT05JVE9SPTQ0XT0iUkZfTU9OSVRPUiIsdFt0LkhGX1JBRElPX0NPTU1VTklDQVRJT05TPTQ1XT0iSEZfUkFESU9fQ09NTVVOSUNBVElPTlMifSkoTXV8fChNdT17fSkpfSk7dmFyIFV1LEhZPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LmxpbmVhcj0wXT0ibGluZWFyIix0W3QuY2lyY3VsYXI9MV09ImNpcmN1bGFyIix0W3QuZWxsaXB0aWNhbD0yXT0iZWxsaXB0aWNhbCIsdFt0LnVucG9sYXJpemVkPTNdPSJ1bnBvbGFyaXplZCJ9KShVdXx8KFV1PXt9KSl9KTt2YXIgUXUsdlk9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QudmVydGljYWw9MF09InZlcnRpY2FsIix0W3QuaG9yaXpvbnRhbD0xXT0iaG9yaXpvbnRhbCIsdFt0LmxlZnRIYW5kQ2lyY3VsYXI9Ml09ImxlZnRIYW5kQ2lyY3VsYXIiLHRbdC5yaWdodEhhbmRDaXJjdWxhcj0zXT0icmlnaHRIYW5kQ2lyY3VsYXIifSkoUXV8fChRdT17fSkpfSk7dmFyIHpZPU8oKCk9PntfdCgpfSk7dmFyIFpmPU8oKCk9PntfdCgpO1BZKCk7SlkoKTtqWSgpO1d1KCk7SFkoKTt2WSgpO3pZKCl9KTt2YXIgaVI9TygoKT0+e190KCk7WmYoKX0pO3ZhciBMdSxLWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5OT19DVVJSRU5UX0VMRU1FTlRTPTBdPSJOT19DVVJSRU5UX0VMRU1FTlRTIix0W3QuTk9fSU5JVElBTF9FTEVNRU5UUz0xXT0iTk9fSU5JVElBTF9FTEVNRU5UUyIsdFt0Lk5PX0VMRU1FTlRTX0FWQUlMQUJMRT0yXT0iTk9fRUxFTUVOVFNfQVZBSUxBQkxFIix0W3QuT0s9M109Ik9LIn0pKEx1fHwoTHU9e30pKX0pO3ZhciB5dSxYWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5EUlk9MF09IkRSWSIsdFt0LldFVD0xXT0iV0VUIn0pKHl1fHwoeXU9e30pKX0pO3ZhciB3dSxxWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5QQVlMT0FEPTBdPSJQQVlMT0FEIix0W3QuUk9DS0VUX0JPRFk9MV09IlJPQ0tFVF9CT0RZIix0W3QuREVCUklTPTJdPSJERUJSSVMiLHRbdC5VTktOT1dOPTNdPSJVTktOT1dOIn0pKHd1fHwod3U9e30pKX0pO3ZhciB4dSwkWT1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUEVSQVRJT05BTD0wXT0iT1BFUkFUSU9OQUwiLHRbdC5OT05PUEVSQVRJT05BTD0xXT0iTk9OT1BFUkFUSU9OQUwiLHRbdC5QQVJUSUFMTFlfT1BFUkFUSU9OQUw9Ml09IlBBUlRJQUxMWV9PUEVSQVRJT05BTCIsdFt0LkJBQ0tVUF9TVEFOREJZPTNdPSJCQUNLVVBfU1RBTkRCWSIsdFt0LlNQQVJFPTRdPSJTUEFSRSIsdFt0LkVYVEVOREVEX01JU1NJT049NV09IkVYVEVOREVEX01JU1NJT04iLHRbdC5ERUNBWUVEPTZdPSJERUNBWUVEIix0W3QuVU5LTk9XTj03XT0iVU5LTk9XTiJ9KSh4dXx8KHh1PXt9KSl9KTt2YXIgUHUsdFM9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1JCSVQ9MF09Ik9SQklUIix0W3QuTEFORElORz0xXT0iTEFORElORyIsdFt0LklNUEFDVD0yXT0iSU1QQUNUIix0W3QuRE9DS0VEPTNdPSJET0NLRUQiLHRbdC5ST1VORFRSSVA9NF09IlJPVU5EVFJJUCJ9KShQdXx8KFB1PXt9KSl9KTt2YXIgYWQ9TygoKT0+e190KCk7aVIoKTtLWSgpO1hZKCk7cVkoKTskWSgpO3RTKCl9KTt2YXIgZUg9TygoKT0+e190KCk7YWQoKX0pO3ZhciBKdSxpUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TaWduaW5nPTBdPSJTaWduaW5nIix0W3QuRW5jcnlwdGlvbj0xXT0iRW5jcnlwdGlvbiJ9KShKdXx8KEp1PXt9KSl9KTt2YXIgblM9TygoKT0+e190KCk7aVMoKX0pO3ZhciBJZj1PKCgpPT57X3QoKTt3WSgpO25TKCl9KTt2YXIganUsc1M9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuQ0FMQ1VMQVRFRD0wXT0iQ0FMQ1VMQVRFRCIsdFt0LkRFRkFVTFQ9MV09IkRFRkFVTFQifSkoanV8fChqdT17fSkpfSk7dmFyIExhLFlBPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShMYXx8KExhPXt9KSl9KTt2YXIgb1M9TygoKT0+e190KCk7YWQoKTtJZigpO3NTKCk7WUEoKX0pO3ZhciBzUj1PKCgpPT57X3QoKX0pO3ZhciB2dSxyUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FTExJUFNPSUQ9MF09IkVMTElQU09JRCIsdFt0LkJPWD0xXT0iQk9YIn0pKHZ1fHwodnU9e30pKX0pO3ZhciB6dT1PKCgpPT57X3QoKTtvUygpO3NSKCk7WUEoKTtyUygpfSk7dmFyIG5IPU8oKCk9PntfdCgpO3p1KCl9KTt2YXIgS3U9TygoKT0+e190KCl9KTt2YXIgb0g9TygoKT0+e190KCk7S3UoKX0pO3ZhciBYdT1PKCgpPT57X3QoKTthZCgpfSk7dmFyIGFIPU8oKCk9PntfdCgpO1h1KCl9KTt2YXIgcXU9TygoKT0+e190KCl9KTt2YXIgaEg9TygoKT0+e190KCk7cXUoKX0pO3ZhciAkdSxBUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PQlNFUlZFRD0wXT0iT0JTRVJWRUQiLHRbdC5QUkVESUNURUQ9MV09IlBSRURJQ1RFRCJ9KSgkdXx8KCR1PXt9KSl9KTt2YXIgdEM9TygoKT0+e190KCl9KTt2YXIgbEg9TygoKT0+e190KCk7dEMoKX0pO3ZhciBlQyxoUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5MSVFVSUQ9MF09IkxJUVVJRCIsdFt0LlNPTElEPTFdPSJTT0xJRCIsdFt0LkhZQlJJRD0yXT0iSFlCUklEIix0W3QuSU9OPTNdPSJJT04iLHRbdC5OVUNMRUFSX1RIRVJNQUw9NF09Ik5VQ0xFQVJfVEhFUk1BTCIsdFt0Lk9USEVSPTVdPSJPVEhFUiJ9KShlQ3x8KGVDPXt9KSl9KTt2YXIgY1M9TygoKT0+e190KCk7aFMoKX0pO3ZhciBpQz1PKCgpPT57X3QoKTtZQSgpfSk7dmFyIG1IPU8oKCk9PntfdCgpO2lDKCl9KTt2YXIgbkM9TygoKT0+e190KCk7QVMoKX0pO3ZhciBFSD1PKCgpPT57X3QoKTtuQygpfSk7dmFyIF9IPU8oKCk9PntfdCgpO0lmKCl9KTt2YXIgbFM9TygoKT0+e190KCl9KTt2YXIgc0MsZFM9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1VUTElFUj0wXT0iT1VUTElFUiJ9KShzQ3x8KHNDPXt9KSl9KTt2YXIgbVM9TygoKT0+e190KCk7ZFMoKX0pO3ZhciBvQz1PKCgpPT57X3QoKTttUygpfSk7dmFyIFpIPU8oKCk9PntfdCgpO29DKCl9KTt2YXIgSUg9TygoKT0+e190KCk7WmYoKX0pO3ZhciBmUz1PKCgpPT57X3QoKTtjUygpfSk7dmFyIEVTPU8oKCk9PntfdCgpfSk7dmFyIG9SPU8oKCk9PntfdCgpO2ZTKCk7RVMoKX0pO3ZhciByQyxfUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5MQVVOQ0hfU0lURT0wXT0iTEFVTkNIX1NJVEUiLHRbdC5PQlNFUlZBVElPTl9TVEFUSU9OPTFdPSJPQlNFUlZBVElPTl9TVEFUSU9OIix0W3QuSE9CQllJU1RfT0JTRVJWRVI9Ml09IkhPQkJZSVNUX09CU0VSVkVSIix0W3QuUkVTRUFSQ0hfRkFDSUxJVFk9M109IlJFU0VBUkNIX0ZBQ0lMSVRZIix0W3QuU0FURUxMSVRFX0dST1VORF9TVEFUSU9OPTRdPSJTQVRFTExJVEVfR1JPVU5EX1NUQVRJT04iLHRbdC5TUEFDRVBPUlQ9NV09IlNQQUNFUE9SVCIsdFt0Lk1JTElUQVJZX0JBU0U9Nl09Ik1JTElUQVJZX0JBU0UiLHRbdC5XRUFUSEVSX1NUQVRJT049N109IldFQVRIRVJfU1RBVElPTiIsdFt0LkFTVFJPTk9NSUNBTF9PQlNFUlZBVE9SWT04XT0iQVNUUk9OT01JQ0FMX09CU0VSVkFUT1JZIix0W3QuRURVQ0FUSU9OQUxfSU5TVElUVVRFPTldPSJFRFVDQVRJT05BTF9JTlNUSVRVVEUiLHRbdC5DT01NVU5JQ0FUSU9OX0hVQj0xMF09IkNPTU1VTklDQVRJT05fSFVCIix0W3QuUE9XRVJfUExBTlQ9MTFdPSJQT1dFUl9QTEFOVCIsdFt0LklORFVTVFJJQUxfQ09NUExFWD0xMl09IklORFVTVFJJQUxfQ09NUExFWCIsdFt0LlRSQU5TUE9SVEFUSU9OX0hVQj0xM109IlRSQU5TUE9SVEFUSU9OX0hVQiIsdFt0LlVSQkFOX0FSRUE9MTRdPSJVUkJBTl9BUkVBIix0W3QuTkFUSU9OQUxfUEFSSz0xNV09Ik5BVElPTkFMX1BBUksiLHRbdC5ISVNUT1JJQ0FMX1NJVEU9MTZdPSJISVNUT1JJQ0FMX1NJVEUiLHRbdC5PVEhFUj0xN109Ik9USEVSIn0pKHJDfHwockM9e30pKX0pO3ZhciByUj1PKCgpPT57X3QoKTtsUygpO1pmKCk7X1MoKX0pO3ZhciBhQz1PKCgpPT57X3QoKTtlUigpO2FkKCk7SWYoKTtvUigpO3JSKCl9KTt2YXIgdUg9TygoKT0+e190KCk7YUMoKX0pO3ZhciBwZixhUj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TR1A0PTBdPSJTR1A0Iix0W3QuU0dQNFhQPTFdPSJTR1A0WFAiLHRbdC5EU1NUPTJdPSJEU1NUIix0W3QuVVNNPTNdPSJVU00ifSkocGZ8fChwZj17fSkpfSk7dmFyIEFDPU8oKCk9PntfdCgpO2FSKCl9KTt2YXIgZ0g9TygoKT0+e190KCk7QUMoKX0pO3ZhciBoQz1PKCgpPT57X3QoKTthUigpfSk7dmFyIE5IPU8oKCk9PntfdCgpO2hDKCl9KTt2YXIgSVM9TygoKT0+e190KCk7WUEoKX0pO3ZhciBwUz1PKCgpPT57X3QoKX0pO3ZhciB1ZixBUj1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5HTVNUPTBdPSJHTVNUIix0W3QuR1BTPTFdPSJHUFMiLHRbdC5NRVQ9Ml09Ik1FVCIsdFt0Lk1SVD0zXT0iTVJUIix0W3QuU0NMSz00XT0iU0NMSyIsdFt0LlRBST01XT0iVEFJIix0W3QuVENCPTZdPSJUQ0IiLHRbdC5UREI9N109IlREQiIsdFt0LlRDRz04XT0iVENHIix0W3QuVFQ9OV09IlRUIix0W3QuVVQxPTEwXT0iVVQxIix0W3QuVVRDPTExXT0iVVRDIn0pKHVmfHwodWY9e30pKX0pO3ZhciB1Uz1PKCgpPT57X3QoKTtJUygpO3BTKCk7WUEoKTtBUigpfSk7dmFyIGNDPU8oKCk9PntfdCgpO3VTKCl9KTt2YXIgRkg9TygoKT0+e190KCk7Y0MoKX0pO3ZhciBsQyxDUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TR1A9MF09IlNHUCIsdFt0LlNHUDQ9MV09IlNHUDQiLHRbdC5TRFA0PTJdPSJTRFA0Iix0W3QuU0dQOD0zXT0iU0dQOCIsdFt0LlNEUDg9NF09IlNEUDgifSkobEN8fChsQz17fSkpfSk7dmFyIGRDPU8oKCk9PntfdCgpO0NTKCk7YVIoKTtZQSgpO0FSKCl9KTt2YXIgU0g9TygoKT0+e190KCk7ZEMoKX0pO3ZhciBtQz1PKCgpPT57X3QoKX0pO3ZhciBWSD1PKCgpPT57X3QoKTttQygpfSk7dmFyIEdIPU8oKCk9PntfdCgpO2lSKCl9KTt2YXIgQkg9TygoKT0+e190KCk7c1IoKX0pO3ZhciBnUz1PKCgpPT57X3QoKX0pO3ZhciBmQz1PKCgpPT57X3QoKTtnUygpfSk7dmFyIERIPU8oKCk9PntfdCgpO2ZDKCl9KTt2YXIgRUM9TygoKT0+e190KCk7WUEoKX0pO3ZhciBUUz1PKCgpPT57X3QoKX0pO3ZhciBfQz1PKCgpPT57X3QoKTtUUygpfSk7dmFyIFJDPU8oKCk9PntfdCgpO1lBKCl9KTt2YXIgWkM9TygoKT0+e190KCk7QVIoKX0pO3ZhciBJQyxOUz1PKCgpPT57ZVIoKTthZCgpO3p1KCk7S3UoKTtYdSgpO3F1KCk7dEMoKTtpQygpO25DKCk7SWYoKTtvQygpO1pmKCk7YUMoKTtBQygpO2hDKCk7Y0MoKTtkQygpO21DKCk7aVIoKTtzUigpO2ZDKCk7RUMoKTtvUigpO19DKCk7clIoKTtSQygpO1pDKCk7KGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuTVBFPTFdPSJNUEUiLHRbdC5PTU09Ml09Ik9NTSIsdFt0LlBMRD0zXT0iUExEIix0W3QuUkZNPTRdPSJSRk0iLHRbdC5DU009NV09IkNTTSIsdFt0Lk9TTT02XT0iT1NNIix0W3QuQ0FUPTddPSJDQVQiLHRbdC5DUk09OF09IkNSTSIsdFt0LlNDTT05XT0iU0NNIix0W3QuVERNPTEwXT0iVERNIix0W3QuSURNPTExXT0iSURNIix0W3QuTUVUPTEyXT0iTUVUIix0W3QuUk9DPTEzXT0iUk9DIix0W3QuQk9WPTE0XT0iQk9WIix0W3QuRU9QPTE1XT0iRU9QIix0W3QuRU9PPTE2XT0iRU9PIix0W3QuRU1FPTE3XT0iRU1FIix0W3QuTERNPTE4XT0iTERNIix0W3QuUE5NPTE5XT0iUE5NIix0W3QuSFlQPTIwXT0iSFlQIix0W3QuQ1RSPTIxXT0iQ1RSIix0W3QuQ0RNPTIyXT0iQ0RNIix0W3QuU0lUPTIzXT0iU0lUIix0W3QuT0VNPTI0XT0iT0VNIix0W3QuVElNPTI1XT0iVElNIix0W3QuRVBNPTI2XT0iRVBNIix0W3QuUFJHPTI3XT0iUFJHIn0pKElDfHwoSUM9e30pKX0pO3ZhciBiUz1PKCgpPT57X3QoKTtOUygpfSk7dmFyIExIPU8oKCk9PntfdCgpO2JTKCl9KTt2YXIgeUg9TygoKT0+e190KCk7RUMoKX0pO3ZhciB3SD1PKCgpPT57X3QoKTtvUigpfSk7dmFyIHhIPU8oKCk9PntfdCgpO19DKCl9KTt2YXIgUEg9TygoKT0+e190KCk7clIoKX0pO3ZhciBKSD1PKCgpPT57X3QoKTtSQygpfSk7dmFyIGpIPU8oKCk9PntfdCgpO1pDKCl9KTt2YXIgSEg9TygoKT0+e3dZKCk7ZVIoKTskNCgpO1BZKCk7YWQoKTtlSCgpO3p1KCk7bkgoKTtvUygpO0t1KCk7b0goKTtYdSgpO2FIKCk7cXUoKTtoSCgpO25TKCk7SlkoKTtBUygpO2pZKCk7dEMoKTtsSCgpO2NTKCk7aFMoKTtpQygpO21IKCk7bkMoKTtFSCgpO0lmKCk7X0goKTtXdSgpO2xTKCk7b0MoKTtaSCgpO1pmKCk7SUgoKTtpUygpO2FDKCk7dUgoKTtBQygpO2dIKCk7aEMoKTtOSCgpO2NDKCk7RkgoKTtkQygpO1NIKCk7bUMoKTtWSCgpO2lSKCk7R0goKTtzUigpO0JIKCk7ZkMoKTtESCgpO0hZKCk7TEgoKTtFQygpO3lIKCk7b1IoKTt3SCgpO2JTKCk7TlMoKTtUUygpO19DKCk7eEgoKTtyUigpO1BIKCk7ZlMoKTtFUygpO21TKCk7ZFMoKTt2WSgpO19TKCk7elkoKTtSQygpO0pIKCk7WkMoKTtqSCgpO2dTKCk7SVMoKTtzUygpO0tZKCk7dVMoKTtwUygpO0NTKCk7WFkoKTthUigpO3FZKCk7JFkoKTt0UygpO1lBKCk7clMoKTtBUigpfSk7dmFyIHBDLEZTPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShwQ3x8KHBDPXt9KSl9KTt2YXIgWVM9TygoKT0+e190KCk7RlMoKX0pO3ZhciB2SD1PKCgpPT57X3QoKTtZUygpfSk7dmFyIHpIPU8oKCk9PntZUygpO3ZIKCk7RlMoKX0pO3ZhciB1QyxTUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5MSVFVSUQ9MF09IkxJUVVJRCIsdFt0LlNPTElEPTFdPSJTT0xJRCIsdFt0LkhZQlJJRD0yXT0iSFlCUklEIix0W3QuSU9OPTNdPSJJT04iLHRbdC5OVUNMRUFSX1RIRVJNQUw9NF09Ik5VQ0xFQVJfVEhFUk1BTCIsdFt0Lk9USEVSPTVdPSJPVEhFUiJ9KSh1Q3x8KHVDPXt9KSl9KTt2YXIgT1M9TygoKT0+e190KCk7U1MoKX0pO3ZhciBWUz1PKCgpPT57X3QoKTtPUygpfSk7dmFyIEdTPU8oKCk9PntfdCgpfSk7dmFyIEJTPU8oKCk9PntfdCgpO1ZTKCk7R1MoKX0pO3ZhciBLSD1PKCgpPT57X3QoKTtCUygpfSk7dmFyIFhIPU8oKCk9PntPUygpO1NTKCk7QlMoKTtLSCgpO1ZTKCk7R1MoKX0pO3ZhciBXUz1PKCgpPT57X3QoKX0pO3ZhciBEUz1PKCgpPT57X3QoKTtXUygpfSk7dmFyIHFIPU8oKCk9PntfdCgpO0RTKCl9KTt2YXIgJEg9TygoKT0+e1dTKCk7RFMoKTtxSCgpfSk7dmFyIENDPU8oKCk9PntfdCgpfSk7dmFyIE1TPU8oKCk9PntfdCgpO0NDKCl9KTt2YXIgZ0MsVVM9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuUkVBTD0wXT0iUkVBTCIsdFt0LlNJTVVMQVRFRD0xXT0iU0lNVUxBVEVEIix0W3QuU1lOVEhFVElDPTJdPSJTWU5USEVUSUMifSkoZ0N8fChnQz17fSkpfSk7dmFyIFRDLFFTPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LlVOS05PV049MF09IlVOS05PV04iLHRbdC5PUFRJQ0FMPTFdPSJPUFRJQ0FMIix0W3QuSU5GUkFSRURfU0VOU09SPTJdPSJJTkZSQVJFRF9TRU5TT1IiLHRbdC5VTFRSQVZJT0xFVF9TRU5TT1I9M109IlVMVFJBVklPTEVUX1NFTlNPUiIsdFt0LlhfUkFZX1NFTlNPUj00XT0iWF9SQVlfU0VOU09SIix0W3QuR0FNTUFfUkFZX1NFTlNPUj01XT0iR0FNTUFfUkFZX1NFTlNPUiIsdFt0LlJBREFSPTZdPSJSQURBUiIsdFt0LlBIQVNFRF9BUlJBWV9SQURBUj03XT0iUEhBU0VEX0FSUkFZX1JBREFSIix0W3QuU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSPThdPSJTWU5USEVUSUNfQVBFUlRVUkVfUkFEQVIiLHRbdC5CSVNUQVRJQ19SQURJT19URUxFU0NPUEU9OV09IkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRSIsdFt0LlJBRElPX1RFTEVTQ09QRT0xMF09IlJBRElPX1RFTEVTQ09QRSIsdFt0LkFUTU9TUEhFUklDX1NFTlNPUj0xMV09IkFUTU9TUEhFUklDX1NFTlNPUiIsdFt0LlNQQUNFX1dFQVRIRVJfU0VOU09SPTEyXT0iU1BBQ0VfV0VBVEhFUl9TRU5TT1IiLHRbdC5FTlZJUk9OTUVOVEFMX1NFTlNPUj0xM109IkVOVklST05NRU5UQUxfU0VOU09SIix0W3QuU0VJU01JQ19TRU5TT1I9MTRdPSJTRUlTTUlDX1NFTlNPUiIsdFt0LkdSQVZJTUVUUklDX1NFTlNPUj0xNV09IkdSQVZJTUVUUklDX1NFTlNPUiIsdFt0Lk1BR05FVElDX1NFTlNPUj0xNl09Ik1BR05FVElDX1NFTlNPUiIsdFt0LkVMRUNUUk9NQUdORVRJQ19TRU5TT1I9MTddPSJFTEVDVFJPTUFHTkVUSUNfU0VOU09SIix0W3QuVEhFUk1BTF9TRU5TT1I9MThdPSJUSEVSTUFMX1NFTlNPUiIsdFt0LkNIRU1JQ0FMX1NFTlNPUj0xOV09IkNIRU1JQ0FMX1NFTlNPUiIsdFt0LkJJT0xPR0lDQUxfU0VOU09SPTIwXT0iQklPTE9HSUNBTF9TRU5TT1IiLHRbdC5SQURJQVRJT05fU0VOU09SPTIxXT0iUkFESUFUSU9OX1NFTlNPUiIsdFt0LlBBUlRJQ0xFX0RFVEVDVE9SPTIyXT0iUEFSVElDTEVfREVURUNUT1IiLHRbdC5MSURBUj0yM109IkxJREFSIix0W3QuU09OQVI9MjRdPSJTT05BUiIsdFt0LlRFTEVTQ09QRT0yNV09IlRFTEVTQ09QRSIsdFt0LlNQRUNUUk9TQ09QSUNfU0VOU09SPTI2XT0iU1BFQ1RST1NDT1BJQ19TRU5TT1IiLHRbdC5QSE9UT01FVFJJQ19TRU5TT1I9MjddPSJQSE9UT01FVFJJQ19TRU5TT1IiLHRbdC5QT0xBUklNRVRSSUNfU0VOU09SPTI4XT0iUE9MQVJJTUVUUklDX1NFTlNPUiIsdFt0LklOVEVSRkVST01FVFJJQ19TRU5TT1I9MjldPSJJTlRFUkZFUk9NRVRSSUNfU0VOU09SIix0W3QuTVVMVElTUEVDVFJBTF9TRU5TT1I9MzBdPSJNVUxUSVNQRUNUUkFMX1NFTlNPUiIsdFt0LkhZUEVSU1BFQ1RSQUxfU0VOU09SPTMxXT0iSFlQRVJTUEVDVFJBTF9TRU5TT1IiLHRbdC5HUFNfUkVDRUlWRVI9MzJdPSJHUFNfUkVDRUlWRVIiLHRbdC5SQURJT19DT01NVU5JQ0FUSU9OUz0zM109IlJBRElPX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfQ09NTVVOSUNBVElPTlM9MzRdPSJMQVNFUl9DT01NVU5JQ0FUSU9OUyIsdFt0LlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUz0zNV09IlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0lOU1RSVU1FTlQ9MzZdPSJMQVNFUl9JTlNUUlVNRU5UIix0W3QuUkZfQU5BTFlaRVI9MzddPSJSRl9BTkFMWVpFUiIsdFt0LklPTk9TUEhFUklDX1NFTlNPUj0zOF09IklPTk9TUEhFUklDX1NFTlNPUiIsdFt0LkxBU0VSX0lNQUdJTkc9MzldPSJMQVNFUl9JTUFHSU5HIix0W3QuT1BUSUNBTF9URUxFU0NPUEU9NDBdPSJPUFRJQ0FMX1RFTEVTQ09QRSIsdFt0LkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMPTQxXT0iSElHSF9SRVNPTFVUSU9OX09QVElDQUwiLHRbdC5SQURJTz00Ml09IlJBRElPIix0W3QuTUlDUk9XQVZFX1RSQU5TTUlUVEVSPTQzXT0iTUlDUk9XQVZFX1RSQU5TTUlUVEVSIix0W3QuUkZfTU9OSVRPUj00NF09IlJGX01PTklUT1IiLHRbdC5IRl9SQURJT19DT01NVU5JQ0FUSU9OUz00NV09IkhGX1JBRElPX0NPTU1VTklDQVRJT05TIn0pKFRDfHwoVEM9e30pKX0pO3ZhciBrUz1PKCgpPT57X3QoKX0pO3ZhciBOQyxMUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5saW5lYXI9MF09ImxpbmVhciIsdFt0LmNpcmN1bGFyPTFdPSJjaXJjdWxhciIsdFt0LmVsbGlwdGljYWw9Ml09ImVsbGlwdGljYWwiLHRbdC51bnBvbGFyaXplZD0zXT0idW5wb2xhcml6ZWQifSkoTkN8fChOQz17fSkpfSk7dmFyIGJDLHlTPU8oKCk9PnsoZnVuY3Rpb24odCl7dFt0LnZlcnRpY2FsPTBdPSJ2ZXJ0aWNhbCIsdFt0Lmhvcml6b250YWw9MV09Imhvcml6b250YWwiLHRbdC5sZWZ0SGFuZENpcmN1bGFyPTJdPSJsZWZ0SGFuZENpcmN1bGFyIix0W3QucmlnaHRIYW5kQ2lyY3VsYXI9M109InJpZ2h0SGFuZENpcmN1bGFyIn0pKGJDfHwoYkM9e30pKX0pO3ZhciB3Uz1PKCgpPT57X3QoKX0pO3ZhciBGQz1PKCgpPT57X3QoKTtNUygpO1VTKCk7UVMoKTtDQygpO0xTKCk7eVMoKTt3UygpfSk7dmFyIGl2PU8oKCk9PntfdCgpO0ZDKCl9KTt2YXIgWUMseFM9TygoKT0+eyhmdW5jdGlvbih0KXt0W3QuTEFVTkNIX1NJVEU9MF09IkxBVU5DSF9TSVRFIix0W3QuT0JTRVJWQVRJT05fU1RBVElPTj0xXT0iT0JTRVJWQVRJT05fU1RBVElPTiIsdFt0LkhPQkJZSVNUX09CU0VSVkVSPTJdPSJIT0JCWUlTVF9PQlNFUlZFUiIsdFt0LlJFU0VBUkNIX0ZBQ0lMSVRZPTNdPSJSRVNFQVJDSF9GQUNJTElUWSIsdFt0LlNBVEVMTElURV9HUk9VTkRfU1RBVElPTj00XT0iU0FURUxMSVRFX0dST1VORF9TVEFUSU9OIix0W3QuU1BBQ0VQT1JUPTVdPSJTUEFDRVBPUlQiLHRbdC5NSUxJVEFSWV9CQVNFPTZdPSJNSUxJVEFSWV9CQVNFIix0W3QuV0VBVEhFUl9TVEFUSU9OPTddPSJXRUFUSEVSX1NUQVRJT04iLHRbdC5BU1RST05PTUlDQUxfT0JTRVJWQVRPUlk9OF09IkFTVFJPTk9NSUNBTF9PQlNFUlZBVE9SWSIsdFt0LkVEVUNBVElPTkFMX0lOU1RJVFVURT05XT0iRURVQ0FUSU9OQUxfSU5TVElUVVRFIix0W3QuQ09NTVVOSUNBVElPTl9IVUI9MTBdPSJDT01NVU5JQ0FUSU9OX0hVQiIsdFt0LlBPV0VSX1BMQU5UPTExXT0iUE9XRVJfUExBTlQiLHRbdC5JTkRVU1RSSUFMX0NPTVBMRVg9MTJdPSJJTkRVU1RSSUFMX0NPTVBMRVgiLHRbdC5UUkFOU1BPUlRBVElPTl9IVUI9MTNdPSJUUkFOU1BPUlRBVElPTl9IVUIiLHRbdC5VUkJBTl9BUkVBPTE0XT0iVVJCQU5fQVJFQSIsdFt0Lk5BVElPTkFMX1BBUks9MTVdPSJOQVRJT05BTF9QQVJLIix0W3QuSElTVE9SSUNBTF9TSVRFPTE2XT0iSElTVE9SSUNBTF9TSVRFIix0W3QuT1RIRVI9MTddPSJPVEhFUiJ9KShZQ3x8KFlDPXt9KSl9KTt2YXIgUFM9TygoKT0+e190KCk7a1MoKTtGQygpO3hTKCl9KTt2YXIgbnY9TygoKT0+e190KCk7UFMoKX0pO3ZhciBzdj1PKCgpPT57TVMoKTtVUygpO1FTKCk7Q0MoKTtrUygpO0ZDKCk7aXYoKTtMUygpO1BTKCk7bnYoKTt5UygpO3hTKCk7d1MoKX0pO3ZhciBoUixTQz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FQ0VGPTBdPSJFQ0VGIix0W3QuSUNSRj0xXT0iSUNSRiIsdFt0LlRFTUU9Ml09IlRFTUUiLHRbdC5FTlU9M109IkVOVSIsdFt0Lk5FRD00XT0iTkVEIix0W3QuTkVVPTVdPSJORVUiLHRbdC5SSUM9Nl09IlJJQyIsdFt0LkoyMDAwPTddPSJKMjAwMCIsdFt0LkdDUkY9OF09IkdDUkYiLHRbdC5HUkM9OV09IkdSQyIsdFt0LklUUkYyMDAwPTEwXT0iSVRSRjIwMDAiLHRbdC5JVFJGOTM9MTFdPSJJVFJGOTMiLHRbdC5JVFJGOTc9MTJdPSJJVFJGOTciLHRbdC5URFI9MTNdPSJURFIiLHRbdC5UT0Q9MTRdPSJUT0QiLHRbdC5SVE49MTVdPSJSVE4iLHRbdC5UVk49MTZdPSJUVk4iLHRbdC5WVkxIPTE3XT0iVlZMSCIsdFt0LlZMVkg9MThdPSJWTFZIIix0W3QuTFRQPTE5XT0iTFRQIix0W3QuTFZMSD0yMF09IkxWTEgiLHRbdC5QTkU9MjFdPSJQTkUiLHRbdC5CUkY9MjJdPSJCUkYiLHRbdC5SU1c9MjNdPSJSU1ciLHRbdC5UTlc9MjRdPSJUTlcifSkoaFJ8fChoUj17fSkpfSk7dmFyIEpTPU8oKCk9PntfdCgpO1NDKCl9KTt2YXIgb3Y9TygoKT0+e190KCk7SlMoKX0pO3ZhciBqUz1PKCgpPT57X3QoKTtTQygpfSk7dmFyIHJ2PU8oKCk9PntfdCgpO2pTKCl9KTt2YXIgYXY9TygoKT0+e0pTKCk7b3YoKTtqUygpO3J2KCk7U0MoKX0pO3ZhciBPQyxIUz1PKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5HTVNUPTBdPSJHTVNUIix0W3QuR1BTPTFdPSJHUFMiLHRbdC5NRVQ9Ml09Ik1FVCIsdFt0Lk1SVD0zXT0iTVJUIix0W3QuU0NMSz00XT0iU0NMSyIsdFt0LlRBST01XT0iVEFJIix0W3QuVENCPTZdPSJUQ0IiLHRbdC5UREI9N109IlREQiIsdFt0LlRDRz04XT0iVENHIix0W3QuVFQ9OV09IlRUIix0W3QuVVQxPTEwXT0iVVQxIix0W3QuVVRDPTExXT0iVVRDIn0pKE9DfHwoT0M9e30pKX0pO3ZhciB2Uz1PKCgpPT57X3QoKTtIUygpfSk7dmFyIEF2PU8oKCk9PntfdCgpO3ZTKCl9KTt2YXIgaHY9TygoKT0+e3ZTKCk7QXYoKTtIUygpfSk7dmFyIHpTPU8oKCk9PntwMygpO1QzKCk7UTMoKTtMMygpO3ozKCk7WDMoKTskMygpO2k0KCk7czQoKTtyNCgpO0E0KCk7bDQoKTtGNCgpO1M0KCk7RzQoKTtNNCgpO3k0KCk7eDQoKTt2NCgpO0s0KCk7cTQoKTtISCgpO3pIKCk7WEgoKTskSCgpO3N2KCk7YXYoKTtodigpfSk7dmFyIEZodCxZZmUsWWh0LFNmZSxWQyxjdj1PKCgpPT57T2IoKTtWcigpO210KCk7SHQoKTtfMygpO2ljKCk7ZnIoKTtkbigpO1FuKCk7elMoKTsoe09NTVQ6Rmh0LE9NTUNPTExFQ1RJT05UOllmZX09cmQpLHtDQVRUOllodCxDQVRDT0xMRUNUSU9OVDpTZmV9PWVkO051bWJlci5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybih0aGlzLXQpKihuLWkpLyhlLXQpK2l9O1ZDPWNsYXNzIGV4dGVuZHMgcmZ7Y29uc3RydWN0b3IoZSxpLG4scyl7c3VwZXIoZSksdGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUud2FzbVNjaGVtYT17fSx0aGlzLl9wb3NpdGlvbj1uZXcgRTMsdGhpcy5fc3BhY2VDYXRhbG9nPW4sdGhpcy5fd2FzbU1vZHVsZT1pLHRoaXMuX3ZlbG9jaXR5PXtnZXRWYWx1ZToobyxyKT0+dGhpcy5fdmVsb2NpdHkuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lKG8sMCxyKSxnZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWU6KG8scixhKT0+e2xldCBoPW5ldyBGbG9hdDY0QXJyYXkoaS5IRUFQOC5idWZmZXIsbi5nZXRWZWxvY2l0eSh0aGlzLnByb3BlcnRpZXMud2FzbVNwYWNlRW50aXR5LFplLnRvRGF0ZShvKS5nZXRUaW1lKCksciE9PSRpLlRFTUUpLDMpO2lmKG0oYSl8fChhPW5ldyBsKSxhPWwuZnJvbUFycmF5KGgpLHI9PT0kaS5JTkVSVElBTCl7bGV0IEE9SW4uY29tcHV0ZUZpeGVkVG9JY3JmTWF0cml4KG8pO2lmKG0oQSkpe2xldCBkPW5ldyBsO2x0Lm11bHRpcGx5QnlWZWN0b3IoQSxhLGQpLGE9ZH19cmV0dXJuIGF9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmVsb2NpdHkiLHtnZXQ6KCk9PnRoaXMuX3ZlbG9jaXR5LHNldDooKT0+e319KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLl9wb3NpdGlvbix7aXNDb25zdGFudDp7Z2V0OigpPT4hMX0sX3JlZmVyZW5jZUZyYW1lOntnZXQ6KCk9PnRoaXMuZW50aXR5Q29sbGVjdGlvbi5yZWZlcmVuY2VGcmFtZX0scmVmZXJlbmNlRnJhbWU6e2dldDooKT0+dGhpcy5fcmVmZXJlbmNlRnJhbWV9fSksdGhpcy5fcG9zaXRpb24uZ2V0VmFsdWU9KG8scik9PnRoaXMuX3Bvc2l0aW9uLmdldFZhbHVlSW5SZWZlcmVuY2VGcmFtZShvLDAsciksdGhpcy5fcG9zaXRpb24uZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lPShvLHIsYSk9PntsZXQgaD1uZXcgRmxvYXQ2NEFycmF5KGkuSEVBUDguYnVmZmVyLG4uZ2V0UG9zaXRpb25JblJlZmVyZW5jZUZyYW1lKHRoaXMucHJvcGVydGllcy53YXNtU3BhY2VFbnRpdHksWmUudG9EYXRlKG8pLmdldFRpbWUoKSxyIT09JGkuVEVNRSksMyk7aWYobShhKXx8KGE9bmV3IGwpLGE9bC5mcm9tQXJyYXkoaCkscj09PSRpLklORVJUSUFMKXtsZXQgQT1Jbi5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgobyk7aWYobShBKSl7bGV0IGQ9bmV3IGw7bHQubXVsdGlwbHlCeVZlY3RvcihBLGEsZCksYT1kfX1yZXR1cm4gYX0sdGhpcy5jaGlsZHJlbj17YWRkOm89PihvPXRoaXMuZW50aXR5Q29sbGVjdGlvbi5hZGQobyksdGhpcy5lbnRpdHlDb2xsZWN0aW9uLmFsbFZhbHVlc3x8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLmVudGl0eUNvbGxlY3Rpb24sImFsbFZhbHVlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdGllcy52YWx1ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuZW50aXR5Q29sbGVjdGlvbiwidmFsdWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0aWVzLnZhbHVlcy5maWx0ZXIocj0+IXIuX2lzQ2hpbGQpfX0pKSxvLl9pc0NoaWxkPSEwLG8ucGFyZW50PXRoaXMsby5wb3NpdGlvbj10aGlzLnBvc2l0aW9uLG8pLHJlbW92ZTpvPT57dGhpcy5lbnRpdHlDb2xsZWN0aW9uLnJlbW92ZShvKTtsZXQgcj10aGlzLl9jaGlsZHJlbi5pbmRleE9mKHRoaXMpO3RoaXMuX2NoaWxkcmVuLnNwbGljZShyLDEpfSx2YWx1ZXM6dGhpcy5fY2hpbGRyZW59LHRoaXMubG9hZE9NTShzKX1sb2FkT01NKGUpe2xldCBpPW5ldyB0aGlzLl93YXNtTW9kdWxlLlByb3BhZ2F0ZWRQb3NpdGlvblByb3BlcnR5O2kuYWRkT01NKGUpLHRoaXMucHJvcGVydGllcy53YXNtU3BhY2VFbnRpdHk9aSx0aGlzLnByb3BlcnRpZXMuQ0FUPXRoaXMucHJvcGVydGllcy5fQ0FUfHxuZXcgWWh0LHRoaXMucHJvcGVydGllcy5fQ0FULl92YWx1ZS5BUE9HRUU9aS5hcG9nZWUsdGhpcy5wcm9wZXJ0aWVzLl9DQVQuX3ZhbHVlLlBFUklHRUU9aS5wZXJpZ2VlLHRoaXMucHJvcGVydGllcy5fQ0FULl92YWx1ZS5QRVJJT0Q9aS5wZXJpb2Rfc2VjLHRoaXMucHJvcGVydGllcy5PTU09dGhpcy5wcm9wZXJ0aWVzLl9PTU18fG5ldyBGaHQsdGhpcy5wcm9wZXJ0aWVzLl9PTU0uX3ZhbHVlLkVDQ0VOVFJJQ0lUWT1pLmVjY28sdGhpcy5wcm9wZXJ0aWVzLl9PTU0uX3ZhbHVlLlNFTUlfTUFKT1JfQVhJUz1pLnNlbWlfbWFqb3JfYXhpcy8xZTMsdGhpcy5wcm9wZXJ0aWVzLl9PTU0uX3ZhbHVlLlNFTUlfTUlOT1JfQVhJUz1pLnNlbWlfbWlub3JfYXhpcy8xZTMsdGhpcy5hcnJheV9pbmRleD10aGlzLnByb3BlcnRpZXMud2FzbVNwYWNlRW50aXR5LmFycmF5X2luZGV4LHRoaXMuc2FtcGxlc1BlclBlcmlvZD0xODAsdGhpcy5leHRyYUVwb2NoU2FtcGxlcz02MCx0aGlzLnJlc29sdXRpb25BdEVwb2NoPTUsdGhpcy5hdXRvRXBvY2hSZXNvbHV0aW9uPSEwLHRoaXMuZXBvY2hCbG9ja1NpemU9LjUsdGhpcy5leHRyYVNhbXBsZXM9NSx0aGlzLmVjY2VudHJpY2l0eVRocmVzaG9sZD0uMix0aGlzLnRhcmdldEludGVydmFsQ291bnQ9MjAsdGhpcy5fb3JiaXRTaG93aW5nPSExLHRoaXMuX2NvdmVyYWdlU2hvd2luZz0hMSx0aGlzLnJlZmVyZW5jZUZyYW1lPSRpLlJJQyx0aGlzLl9wb3NpdGlvbi5fY2xlYXJDYWNoZT0hMH1nZXQgb3JiaXRTaG93aW5nKCl7cmV0dXJuIHRoaXMuX29yYml0U2hvd2luZ31nZXQgY292ZXJhZ2VTaG93aW5nKCl7cmV0dXJuIHRoaXMuX2NvdmVyYWdlU2hvd2luZ31zaG93Q292ZXJhZ2UoZT17c2hvdzohMX0pe3RoaXMuX2NvdmVyYWdlU2hvd2luZz1lLnNob3csZS5zaG93P3RoaXMuZW50aXR5Q29sbGVjdGlvbi5vd25lci5fY292ZXJhZ2VHcm91cC5wdXNoKHRoaXMpOnRoaXMuZW50aXR5Q29sbGVjdGlvbi5vd25lci5fY292ZXJhZ2VHcm91cC5yZW1vdmUoe2lkOnRoaXMuaWR9KX1zaG93T3JiaXQoZT17c2hvdzohMX0pe2lmKHRoaXMuX29yYml0U2hvd2luZz1lLnNob3csIWUuc2hvdyl7dGhpcy5wYXRoPW51bGw7cmV0dXJufWUmJihlLmNvbG9yPWUubWF0ZXJpYWwpLGU/LnJlZmVyZW5jZUVudGl0eT90aGlzLl9sb2NhbFJlZmVyZW5jZUVudGl0eT1lLnJlZmVyZW5jZUVudGl0eTp0aGlzLl9sb2NhbFJlZmVyZW5jZUVudGl0eT12b2lkIDAsdGhpcy5wYXRoPXRoaXMucGF0aHx8e307bGV0e21hdGVyaWFsOmksd2lkdGg6bixsZWFkVGltZTpzLHRyYWlsVGltZTpvLHJlc29sdXRpb246cn09dGhpcy5wYXRoO3RoaXMucGF0aD1PYmplY3QuYXNzaWduKHt9LHttYXRlcmlhbDppfHxadC5XSElURSx3aWR0aDpufHwxLjI1LGxlYWRUaW1lOnN8fDVlMyx0cmFpbFRpbWU6b3x8NWUzLHJlc29sdXRpb246cnx8MTIwLHNob3c6ITB9LGUpO2xldHtlY2NvOmEscGVyaW9kX3NlYzpofT10aGlzLnByb3BlcnRpZXMud2FzbVNwYWNlRW50aXR5LEE9YTx0aGlzLmVjY2VudHJpY2l0eVRocmVzaG9sZDtBfHwodGhpcy5leHRyYVNhbXBsZXM9YS5tYXAodGhpcy5lY2NlbnRyaWNpdHlUaHJlc2hvbGQsLjksMTAsNTApLHRoaXMuc2FtcGxlc1BlclBlcmlvZD1hLm1hcCh0aGlzLmVjY2VudHJpY2l0eVRocmVzaG9sZCwuOSwxODAsMTQ0MCkpO2xldHtzYW1wbGVzUGVyUGVyaW9kOmR9PXRoaXMsRT1oLyhBPzEuODoyKTt0aGlzLnBhdGgubGVhZFRpbWU9RSx0aGlzLnBhdGgudHJhaWxUaW1lPUU7bGV0IF89ey4uLnRoaXMscGVyaW9kOmgscmVzb2x1dGlvbjpoL2R9O3RoaXMucGF0aC5yZXNvbHV0aW9uPUE/ey4uLl8sbWV0aG9kOiJ0aW1lU3RlcCJ9OnsuLi5fLG1ldGhvZDoidHJ1ZUFub21hbHkiLHBlcmlvZDpoLHNhbXBsZXNQZXJQZXJpb2Q6ZH19fX0pO3ZhciBPaHQsU2h0LEdDLGx2PU8oKCk9PntPaHQ9e30sU2h0PSgoKT0+e3ZhciB0PU9odC51cmw7cmV0dXJuIGZ1bmN0aW9uKGU9e30pe3ZhciBpPWUsbixzO2kucmVhZHk9bmV3IFByb21pc2UoKHUsUyk9PntuPXUscz1TfSksWyJfZ2V0Q292ZXJhZ2VQb3NpdGlvbnMiLCJfaW5mbGF0ZUVsbGlwc29pZCIsIl9tYWxsb2MiLCJfZnJlZSIsIl9tZW1vcnkiLCJfZmZsdXNoIiwiX19lbWJpbmRfaW5pdGlhbGl6ZV9iaW5kaW5ncyIsIl9fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlIiwiX19fc3RhcnRfZW1fYXNtIiwiX19fc3RvcF9lbV9hc20iLCJvblJ1bnRpbWVJbml0aWFsaXplZCJdLmZvckVhY2godT0+e09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaS5yZWFkeSx1KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGkucmVhZHksdSx7Z2V0OigpPT5HZSgiWW91IGFyZSBnZXR0aW5nICIrdSsiIG9uIHRoZSBQcm9taXNlIG9iamVjdCwgaW5zdGVhZCBvZiB0aGUgaW5zdGFuY2UuIFVzZSAudGhlbigpIHRvIGdldCBjYWxsZWQgYmFjayB3aXRoIHRoZSBpbnN0YW5jZSwgc2VlIHRoZSBNT0RVTEFSSVpFIGRvY3MgaW4gc3JjL3NldHRpbmdzLmpzIiksc2V0OigpPT5HZSgiWW91IGFyZSBzZXR0aW5nICIrdSsiIG9uIHRoZSBQcm9taXNlIG9iamVjdCwgaW5zdGVhZCBvZiB0aGUgaW5zdGFuY2UuIFVzZSAudGhlbigpIHRvIGdldCBjYWxsZWQgYmFjayB3aXRoIHRoZSBpbnN0YW5jZSwgc2VlIHRoZSBNT0RVTEFSSVpFIGRvY3MgaW4gc3JjL3NldHRpbmdzLmpzIil9KX0pLGdsb2JhbFRoaXMuX19kaXJuYW1lPWdsb2JhbFRoaXMuX19kaXJuYW1lfHwiIjt2YXIgbz1PYmplY3QuYXNzaWduKHt9LGkpLHI9W10sYT0iLi90aGlzLnByb2dyYW0iLGg9KHUsUyk9Pnt0aHJvdyBTfSxBPSEwLGQ9ITEsZj0hMSxFPSExO2lmKGkuRU5WSVJPTk1FTlQpdGhyb3cgbmV3IEVycm9yKCJNb2R1bGUuRU5WSVJPTk1FTlQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVG8gZm9yY2UgdGhlIGVudmlyb25tZW50LCB1c2UgdGhlIEVOVklST05NRU5UIGNvbXBpbGUtdGltZSBvcHRpb24gKGZvciBleGFtcGxlLCAtc0VOVklST05NRU5UPXdlYiBvciAtc0VOVklST05NRU5UPW5vZGUpIik7dmFyIF89IiI7ZnVuY3Rpb24gUih1KXtyZXR1cm4gaS5sb2NhdGVGaWxlP2kubG9jYXRlRmlsZSh1LF8pOl8rdX12YXIgSSxDLE4sVDtpZihFKXtpZih0eXBlb2YgcHJvY2Vzcz09Im9iamVjdCImJnR5cGVvZiBYbz09ImZ1bmN0aW9uInx8dHlwZW9mIHdpbmRvdz09Im9iamVjdCJ8fHR5cGVvZiBpbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigibm90IGNvbXBpbGVkIGZvciB0aGlzIGVudmlyb25tZW50IChkaWQgeW91IGJ1aWxkIHRvIEhUTUwgYW5kIHRyeSB0byBydW4gaXQgbm90IG9uIHRoZSB3ZWIsIG9yIHNldCBFTlZJUk9OTUVOVCB0byBzb21ldGhpbmcgLSBsaWtlIG5vZGUgLSBhbmQgcnVuIGl0IHNvbWVwbGFjZSBlbHNlIC0gbGlrZSBvbiB0aGUgd2ViPykiKTt0eXBlb2YgcmVhZDwidSImJihJPXJlYWQpLE49dT0+e2lmKHR5cGVvZiByZWFkYnVmZmVyPT0iZnVuY3Rpb24iKXJldHVybiBuZXcgVWludDhBcnJheShyZWFkYnVmZmVyKHUpKTtsZXQgUz1yZWFkKHUsImJpbmFyeSIpO3JldHVybiBjKHR5cGVvZiBTPT0ib2JqZWN0IiksU30sQz0odSxTLFcpPT57c2V0VGltZW91dCgoKT0+UyhOKHUpKSl9LHR5cGVvZiBjbGVhclRpbWVvdXQ+InUiJiYoZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQ9dT0+e30pLHR5cGVvZiBzZXRUaW1lb3V0PiJ1IiYmKGdsb2JhbFRoaXMuc2V0VGltZW91dD11PT50eXBlb2YgdT09ImZ1bmN0aW9uIj91KCk6R2UoKSksdHlwZW9mIHNjcmlwdEFyZ3M8InUiP3I9c2NyaXB0QXJnczp0eXBlb2YgYXJndW1lbnRzPCJ1IiYmKHI9YXJndW1lbnRzKSx0eXBlb2YgcXVpdD09ImZ1bmN0aW9uIiYmKGg9KHUsUyk9Pnt0aHJvdyBzZXRUaW1lb3V0KCgpPT57aWYoIShTIGluc3RhbmNlb2YgY3MpKXtsZXQgVz1TO1MmJnR5cGVvZiBTPT0ib2JqZWN0IiYmUy5zdGFjayYmKFc9W1MsUy5zdGFja10pLGIoYGV4aXRpbmcgZHVlIHRvIGV4Y2VwdGlvbjogJHtXfWApfXF1aXQodSl9KSxTfSksdHlwZW9mIHByaW50PCJ1IiYmKHR5cGVvZiBjb25zb2xlPiJ1IiYmKGNvbnNvbGU9e30pLGNvbnNvbGUubG9nPXByaW50LGNvbnNvbGUud2Fybj1jb25zb2xlLmVycm9yPXR5cGVvZiBwcmludEVycjwidSI/cHJpbnRFcnI6cHJpbnQpfWVsc2UgaWYoQXx8ZCl7aWYoZD9fPXNlbGYubG9jYXRpb24uaHJlZjp0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoXz1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksdCYmKF89dCksXy5pbmRleE9mKCJibG9iOiIpIT09MD9fPV8uc3Vic3RyKDAsXy5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOl89IiIsISh0eXBlb2Ygd2luZG93PT0ib2JqZWN0Inx8dHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIpKXRocm93IG5ldyBFcnJvcigibm90IGNvbXBpbGVkIGZvciB0aGlzIGVudmlyb25tZW50IChkaWQgeW91IGJ1aWxkIHRvIEhUTUwgYW5kIHRyeSB0byBydW4gaXQgbm90IG9uIHRoZSB3ZWIsIG9yIHNldCBFTlZJUk9OTUVOVCB0byBzb21ldGhpbmcgLSBsaWtlIG5vZGUgLSBhbmQgcnVuIGl0IHNvbWVwbGFjZSBlbHNlIC0gbGlrZSBvbiB0aGUgd2ViPykiKTtJPXU9Pnt2YXIgUz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIFMub3BlbigiR0VUIix1LCExKSxTLnNlbmQobnVsbCksUy5yZXNwb25zZVRleHR9LGQmJihOPXU9Pnt2YXIgUz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIFMub3BlbigiR0VUIix1LCExKSxTLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLFMuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShTLnJlc3BvbnNlKX0pLEM9KHUsUyxXKT0+e3ZhciBQPW5ldyBYTUxIdHRwUmVxdWVzdDtQLm9wZW4oIkdFVCIsdSwhMCksUC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixQLm9ubG9hZD0oKT0+e2lmKFAuc3RhdHVzPT0yMDB8fFAuc3RhdHVzPT0wJiZQLnJlc3BvbnNlKXtTKFAucmVzcG9uc2UpO3JldHVybn1XKCl9LFAub25lcnJvcj1XLFAuc2VuZChudWxsKX0sVD11PT5kb2N1bWVudC50aXRsZT11fWVsc2UgdGhyb3cgbmV3IEVycm9yKCJlbnZpcm9ubWVudCBkZXRlY3Rpb24gZXJyb3IiKTt2YXIgRj1pLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGI9aS5wcmludEVycnx8Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oaSxvKSxvPW51bGwsbDgoKSxpLmFyZ3VtZW50cyYmKHI9aS5hcmd1bWVudHMpLF9uKCJhcmd1bWVudHMiLCJhcmd1bWVudHNfIiksaS50aGlzUHJvZ3JhbSYmKGE9aS50aGlzUHJvZ3JhbSksX24oInRoaXNQcm9ncmFtIiwidGhpc1Byb2dyYW0iKSxpLnF1aXQmJihoPWkucXVpdCksX24oInF1aXQiLCJxdWl0XyIpLGModHlwZW9mIGkubWVtb3J5SW5pdGlhbGl6ZXJQcmVmaXhVUkw+InUiLCJNb2R1bGUubWVtb3J5SW5pdGlhbGl6ZXJQcmVmaXhVUkwgb3B0aW9uIHdhcyByZW1vdmVkLCB1c2UgTW9kdWxlLmxvY2F0ZUZpbGUgaW5zdGVhZCIpLGModHlwZW9mIGkucHRocmVhZE1haW5QcmVmaXhVUkw+InUiLCJNb2R1bGUucHRocmVhZE1haW5QcmVmaXhVUkwgb3B0aW9uIHdhcyByZW1vdmVkLCB1c2UgTW9kdWxlLmxvY2F0ZUZpbGUgaW5zdGVhZCIpLGModHlwZW9mIGkuY2RJbml0aWFsaXplclByZWZpeFVSTD4idSIsIk1vZHVsZS5jZEluaXRpYWxpemVyUHJlZml4VVJMIG9wdGlvbiB3YXMgcmVtb3ZlZCwgdXNlIE1vZHVsZS5sb2NhdGVGaWxlIGluc3RlYWQiKSxjKHR5cGVvZiBpLmZpbGVQYWNrYWdlUHJlZml4VVJMPiJ1IiwiTW9kdWxlLmZpbGVQYWNrYWdlUHJlZml4VVJMIG9wdGlvbiB3YXMgcmVtb3ZlZCwgdXNlIE1vZHVsZS5sb2NhdGVGaWxlIGluc3RlYWQiKSxjKHR5cGVvZiBpLnJlYWQ+InUiLCJNb2R1bGUucmVhZCBvcHRpb24gd2FzIHJlbW92ZWQgKG1vZGlmeSByZWFkXyBpbiBKUykiKSxjKHR5cGVvZiBpLnJlYWRBc3luYz4idSIsIk1vZHVsZS5yZWFkQXN5bmMgb3B0aW9uIHdhcyByZW1vdmVkIChtb2RpZnkgcmVhZEFzeW5jIGluIEpTKSIpLGModHlwZW9mIGkucmVhZEJpbmFyeT4idSIsIk1vZHVsZS5yZWFkQmluYXJ5IG9wdGlvbiB3YXMgcmVtb3ZlZCAobW9kaWZ5IHJlYWRCaW5hcnkgaW4gSlMpIiksYyh0eXBlb2YgaS5zZXRXaW5kb3dUaXRsZT4idSIsIk1vZHVsZS5zZXRXaW5kb3dUaXRsZSBvcHRpb24gd2FzIHJlbW92ZWQgKG1vZGlmeSBzZXRXaW5kb3dUaXRsZSBpbiBKUykiKSxjKHR5cGVvZiBpLlRPVEFMX01FTU9SWT4idSIsIk1vZHVsZS5UT1RBTF9NRU1PUlkgaGFzIGJlZW4gcmVuYW1lZCBNb2R1bGUuSU5JVElBTF9NRU1PUlkiKSxfbigiYXNtIiwid2FzbUV4cG9ydHMiKSxfbigicmVhZCIsInJlYWRfIiksX24oInJlYWRBc3luYyIsInJlYWRBc3luYyIpLF9uKCJyZWFkQmluYXJ5IiwicmVhZEJpbmFyeSIpLF9uKCJzZXRXaW5kb3dUaXRsZSIsInNldFdpbmRvd1RpdGxlIiksYyghZCwid29ya2VyIGVudmlyb25tZW50IGRldGVjdGVkIGJ1dCBub3QgZW5hYmxlZCBhdCBidWlsZCB0aW1lLiAgQWRkICd3b3JrZXInIHRvIGAtc0VOVklST05NRU5UYCB0byBlbmFibGUuIiksYyghZiwibm9kZSBlbnZpcm9ubWVudCBkZXRlY3RlZCBidXQgbm90IGVuYWJsZWQgYXQgYnVpbGQgdGltZS4gIEFkZCAnbm9kZScgdG8gYC1zRU5WSVJPTk1FTlRgIHRvIGVuYWJsZS4iKSxjKCFFLCJzaGVsbCBlbnZpcm9ubWVudCBkZXRlY3RlZCBidXQgbm90IGVuYWJsZWQgYXQgYnVpbGQgdGltZS4gIEFkZCAnc2hlbGwnIHRvIGAtc0VOVklST05NRU5UYCB0byBlbmFibGUuIik7dmFyIEc7aS53YXNtQmluYXJ5JiYoRz1pLndhc21CaW5hcnkpLF9uKCJ3YXNtQmluYXJ5Iiwid2FzbUJpbmFyeSIpO3ZhciBNPWkubm9FeGl0UnVudGltZXx8ITA7X24oIm5vRXhpdFJ1bnRpbWUiLCJub0V4aXRSdW50aW1lIiksdHlwZW9mIFdlYkFzc2VtYmx5IT0ib2JqZWN0IiYmR2UoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgUSxVLGs9ITEseTtmdW5jdGlvbiBjKHUsUyl7dXx8R2UoIkFzc2VydGlvbiBmYWlsZWQiKyhTPyI6ICIrUzoiIikpfXZhciBnLFYsRCx3LHgsSCxqLFg7ZnVuY3Rpb24gdHQoKXt2YXIgdT1RLmJ1ZmZlcjtpLkhFQVA4PWc9bmV3IEludDhBcnJheSh1KSxpLkhFQVAxNj1EPW5ldyBJbnQxNkFycmF5KHUpLGkuSEVBUDMyPXg9bmV3IEludDMyQXJyYXkodSksaS5IRUFQVTg9Vj1uZXcgVWludDhBcnJheSh1KSxpLkhFQVBVMTY9dz1uZXcgVWludDE2QXJyYXkodSksaS5IRUFQVTMyPUg9bmV3IFVpbnQzMkFycmF5KHUpLGkuSEVBUEYzMj1qPW5ldyBGbG9hdDMyQXJyYXkodSksaS5IRUFQRjY0PVg9bmV3IEZsb2F0NjRBcnJheSh1KX1jKCFpLlNUQUNLX1NJWkUsIlNUQUNLX1NJWkUgY2FuIG5vIGxvbmdlciBiZSBzZXQgYXQgcnVudGltZS4gIFVzZSAtc1NUQUNLX1NJWkUgYXQgbGluayB0aW1lIiksYyh0eXBlb2YgSW50MzJBcnJheTwidSImJnR5cGVvZiBGbG9hdDY0QXJyYXk8InUiJiZJbnQzMkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSE9bnVsbCYmSW50MzJBcnJheS5wcm90b3R5cGUuc2V0IT1udWxsLCJKUyBlbmdpbmUgZG9lcyBub3QgcHJvdmlkZSBmdWxsIHR5cGVkIGFycmF5IHN1cHBvcnQiKSxjKCFpLndhc21NZW1vcnksIlVzZSBvZiBgd2FzbU1lbW9yeWAgZGV0ZWN0ZWQuICBVc2UgLXNJTVBPUlRFRF9NRU1PUlkgdG8gZGVmaW5lIHdhc21NZW1vcnkgZXh0ZXJuYWxseSIpLGMoIWkuSU5JVElBTF9NRU1PUlksIkRldGVjdGVkIHJ1bnRpbWUgSU5JVElBTF9NRU1PUlkgc2V0dGluZy4gIFVzZSAtc0lNUE9SVEVEX01FTU9SWSB0byBkZWZpbmUgd2FzbU1lbW9yeSBkeW5hbWljYWxseSIpO3ZhciBCO2Z1bmN0aW9uIEl0KCl7dmFyIHU9JGcoKTtjKCh1JjMpPT0wKSx1PT0wJiYodSs9NCksSFt1Pj4yXT0zNDgyMTIyMyxIW3UrND4+Ml09MjMxMDcyMTAyMixIWzBdPTE2Njg1MDkwMjl9ZnVuY3Rpb24gZ3QoKXtpZighayl7dmFyIHU9JGcoKTt1PT0wJiYodSs9NCk7dmFyIFM9SFt1Pj4yXSxXPUhbdSs0Pj4yXTsoUyE9MzQ4MjEyMjN8fFchPTIzMTA3MjEwMjIpJiZHZShgU3RhY2sgb3ZlcmZsb3chIFN0YWNrIGNvb2tpZSBoYXMgYmVlbiBvdmVyd3JpdHRlbiBhdCAke1BuKHUpfSwgZXhwZWN0ZWQgaGV4IGR3b3JkcyAweDg5QkFDREZFIGFuZCAweDIxMzU0NjcsIGJ1dCByZWNlaXZlZCAke1BuKFcpfSAke1BuKFMpfWApLEhbMF0hPTE2Njg1MDkwMjkmJkdlKCJSdW50aW1lIGVycm9yOiBUaGUgYXBwbGljYXRpb24gaGFzIGNvcnJ1cHRlZCBpdHMgaGVhcCBtZW1vcnkgYXJlYSAoYWRkcmVzcyB6ZXJvKSEiKX19KGZ1bmN0aW9uKCl7dmFyIHU9bmV3IEludDE2QXJyYXkoMSksUz1uZXcgSW50OEFycmF5KHUuYnVmZmVyKTtpZih1WzBdPTI1NDU5LFNbMF0hPT0xMTV8fFNbMV0hPT05OSl0aHJvdyJSdW50aW1lIGVycm9yOiBleHBlY3RlZCB0aGUgc3lzdGVtIHRvIGJlIGxpdHRsZS1lbmRpYW4hIChSdW4gd2l0aCAtc1NVUFBPUlRfQklHX0VORElBTiB0byBieXBhc3MpIn0pKCk7dmFyIFl0PVtdLE10PVtdLEN0PVtdLHp0PSExLGt0PTA7ZnVuY3Rpb24gSnQoKXtpZihpLnByZVJ1bilmb3IodHlwZW9mIGkucHJlUnVuPT0iZnVuY3Rpb24iJiYoaS5wcmVSdW49W2kucHJlUnVuXSk7aS5wcmVSdW4ubGVuZ3RoOyllZShpLnByZVJ1bi5zaGlmdCgpKTt4bihZdCl9ZnVuY3Rpb24gV3QoKXtjKCF6dCksenQ9ITAsZ3QoKSwhaS5ub0ZTSW5pdCYmIUsuaW5pdC5pbml0aWFsaXplZCYmSy5pbml0KCksSy5pZ25vcmVQZXJtaXNzaW9ucz0hMSxwaS5pbml0KCkseG4oTXQpfWZ1bmN0aW9uIEZ0KCl7aWYoZ3QoKSxpLnBvc3RSdW4pZm9yKHR5cGVvZiBpLnBvc3RSdW49PSJmdW5jdGlvbiImJihpLnBvc3RSdW49W2kucG9zdFJ1bl0pO2kucG9zdFJ1bi5sZW5ndGg7KWplKGkucG9zdFJ1bi5zaGlmdCgpKTt4bihDdCl9ZnVuY3Rpb24gZWUodSl7WXQudW5zaGlmdCh1KX1mdW5jdGlvbiBjZSh1KXtNdC51bnNoaWZ0KHUpfWZ1bmN0aW9uIGplKHUpe0N0LnVuc2hpZnQodSl9YyhNYXRoLmltdWwsIlRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1hdGguaW11bCgpLCBidWlsZCB3aXRoIExFR0FDWV9WTV9TVVBQT1JUIG9yIFBPTFlGSUxMX09MRF9NQVRIX0ZVTkNUSU9OUyB0byBhZGQgaW4gYSBwb2x5ZmlsbCIpLGMoTWF0aC5mcm91bmQsIlRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1hdGguZnJvdW5kKCksIGJ1aWxkIHdpdGggTEVHQUNZX1ZNX1NVUFBPUlQgb3IgUE9MWUZJTExfT0xEX01BVEhfRlVOQ1RJT05TIHRvIGFkZCBpbiBhIHBvbHlmaWxsIiksYyhNYXRoLmNsejMyLCJUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNYXRoLmNsejMyKCksIGJ1aWxkIHdpdGggTEVHQUNZX1ZNX1NVUFBPUlQgb3IgUE9MWUZJTExfT0xEX01BVEhfRlVOQ1RJT05TIHRvIGFkZCBpbiBhIHBvbHlmaWxsIiksYyhNYXRoLnRydW5jLCJUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNYXRoLnRydW5jKCksIGJ1aWxkIHdpdGggTEVHQUNZX1ZNX1NVUFBPUlQgb3IgUE9MWUZJTExfT0xEX01BVEhfRlVOQ1RJT05TIHRvIGFkZCBpbiBhIHBvbHlmaWxsIik7dmFyIE9lPTAsTWU9bnVsbCxVZT1udWxsLENlPXt9O2Z1bmN0aW9uIGJlKHUpe2Zvcih2YXIgUz11Ozspe2lmKCFDZVt1XSlyZXR1cm4gdTt1PVMrTWF0aC5yYW5kb20oKX19ZnVuY3Rpb24gbmkodSl7T2UrKyxpLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJmkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhPZSksdT8oYyghQ2VbdV0pLENlW3VdPTEsTWU9PT1udWxsJiZ0eXBlb2Ygc2V0SW50ZXJ2YWw8InUiJiYoTWU9c2V0SW50ZXJ2YWwoKCk9PntpZihrKXtjbGVhckludGVydmFsKE1lKSxNZT1udWxsO3JldHVybn12YXIgUz0hMTtmb3IodmFyIFcgaW4gQ2UpU3x8KFM9ITAsYigic3RpbGwgd2FpdGluZyBvbiBydW4gZGVwZW5kZW5jaWVzOiIpKSxiKCJkZXBlbmRlbmN5OiAiK1cpO1MmJmIoIihlbmQgb2YgbGlzdCkiKX0sMWU0KSkpOmIoIndhcm5pbmc6IHJ1biBkZXBlbmRlbmN5IGFkZGVkIHdpdGhvdXQgSUQiKX1mdW5jdGlvbiB6ZSh1KXtpZihPZS0tLGkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmaS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKE9lKSx1PyhjKENlW3VdKSxkZWxldGUgQ2VbdV0pOmIoIndhcm5pbmc6IHJ1biBkZXBlbmRlbmN5IHJlbW92ZWQgd2l0aG91dCBJRCIpLE9lPT0wJiYoTWUhPT1udWxsJiYoY2xlYXJJbnRlcnZhbChNZSksTWU9bnVsbCksVWUpKXt2YXIgUz1VZTtVZT1udWxsLFMoKX19ZnVuY3Rpb24gR2UodSl7aS5vbkFib3J0JiZpLm9uQWJvcnQodSksdT0iQWJvcnRlZCgiK3UrIikiLGIodSksaz0hMCx5PTE7dmFyIFM9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcih1KTt0aHJvdyBzKFMpLFN9dmFyIFVpPSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIjtmdW5jdGlvbiBSaSh1KXtyZXR1cm4gdS5zdGFydHNXaXRoKFVpKX1mdW5jdGlvbiBzaSh1KXtyZXR1cm4gdS5zdGFydHNXaXRoKCJmaWxlOi8vIil9ZnVuY3Rpb24gcWUodSl7cmV0dXJuIGZ1bmN0aW9uKCl7Yyh6dCxgbmF0aXZlIGZ1bmN0aW9uIFxgJHt1fVxgIGNhbGxlZCBiZWZvcmUgcnVudGltZSBpbml0aWFsaXphdGlvbmApO3ZhciBTPVVbdV07cmV0dXJuIGMoUyxgZXhwb3J0ZWQgbmF0aXZlIGZ1bmN0aW9uIFxgJHt1fVxgIG5vdCBmb3VuZGApLFMuYXBwbHkobnVsbCxhcmd1bWVudHMpfX12YXIgVmk7Vmk9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBR0Z6YlFFQUFBQUJyd1JHWUFGL0FYOWdBWDhBWUFKL2Z3QmdBbjkvQVg5Z0EzOS9md0YvWUFaL2YzOS9mMzhCZjJBRWYzOS9md0YvWUFWL2YzOS9md0YvWUFOL2YzOEFZQUFBWUFSL2YzOS9BR0FJZjM5L2YzOS9mMzhCZjJBR2YzOS9mMzkvQUdBRmYzOS9mMzhBWUFBQmYyQUhmMzkvZjM5L2Z3Ri9ZQWQvZjM5L2YzOS9BR0FGZjM1K2ZuNEFZQUY4QVh4Z0JIOThmMzhCZjJBRmYzOS9mMzRCZjJBQ2ZId0JmR0FEZjM1L0FYNWdDMzkvZjM5L2YzOS9mMzkvQVg5Z0NuOS9mMzkvZjM5L2YzOEFZQVIvZm41L0FHQUNmM3dCZjJBRWYzOThmd0YvWUFaL2YzOS9mbjRCZjJBSGYzOS9mMzkrZmdGL1lBTi9mMzhCZkdBQ2ZIOEJmR0FGZjM5OGYzOEFZQU44Zkg4QmZHQUdmM3gvZjM5L0FYOWdCWDkvZm45L0FHQURmMzkvQVg1Z0JIOS9mMzhCZm1BTWYzOS9mMzkvZjM5L2YzOS9BWDlnQlg5L2YzOThBWDlnRDM5L2YzOS9mMzkvZjM5L2YzOS9md0JnQ0g5L2YzOS9mMzkvQUdBTmYzOS9mMzkvZjM5L2YzOS9md0JnQ1g5L2YzOS9mMzkvZndCZ0FBRjhZQVIrZm41K0FYOWdBMzUrZmdGL1lBRitBWDlnQW41K0FYeGdBbjk4QUdBQ2ZuNEJmV0FDZjM4QmZHQURmMzk4QUdBRWYzeC9md0JnQTM5L2ZBRi9ZQUYrQVg1Z0JYOS9mM3gvQVg5Z0JuOS9mM3gvZndCZ0FYd0FZQUo4ZndGL1lBSitmd0YvWUFKL2ZnQmdBbjkvQVg1Z0EzOS9mZ0JnQW45K0FYOWdCSDkvZjM0QmZtQURmMzkvQVgxZ0NYOS9mMzkvZjM5L2Z3Ri9ZQXAvZjM5L2YzOS9mMzkvQVg5Z0JIOS9mbjRBQXJFSUpRTmxiblljWlcxelkzSnBjSFJsYmw5eWRXNWZjMk55YVhCMFgzTjBjbWx1WndBQUEyVnVkZ3RmWDJONFlWOTBhSEp2ZHdBSUEyVnVkZzFmWlcxMllXeGZaR1ZqY21WbUFBRURaVzUyRmw5bGJXSnBibVJmY21WbmFYTjBaWEpmWTJ4aGMzTUFLZ05sYm5ZaVgyVnRZbWx1WkY5eVpXZHBjM1JsY2w5amJHRnpjMTlqYjI1emRISjFZM1J2Y2dBTUEyVnVkaDlmWlcxaWFXNWtYM0psWjJsemRHVnlYMk5zWVhOelgyWjFibU4wYVc5dUFDc0RaVzUySDE5bGJXSnBibVJmY21WbmFYTjBaWEpmWTJ4aGMzTmZjSEp2Y0dWeWRIa0FHQU5sYm5ZVFgyVnRkbUZzWDJkbGRGOXdjbTl3WlhKMGVRQURBMlZ1ZGhKZlpXMTJZV3hmYm1WM1gyTnpkSEpwYm1jQUFBTmxibllKWDJWdGRtRnNYMkZ6QUI0RFpXNTJGbDlsYlhaaGJGOXlkVzVmWkdWemRISjFZM1J2Y25NQUFRTmxibllaWDJWdFltbHVaRjl5WldkcGMzUmxjbDltZFc1amRHbHZiZ0FRQTJWdWRoaGxiWE5qY21sd2RHVnVYMkZ6YlY5amIyNXpkRjlwYm5RQUJBTmxibllWWDJWdFltbHVaRjl5WldkcGMzUmxjbDkyYjJsa0FBSURaVzUyRlY5bGJXSnBibVJmY21WbmFYTjBaWEpmWW05dmJBQU5BMlZ1ZGh0ZlpXMWlhVzVrWDNKbFoybHpkR1Z5WDNOMFpGOXpkSEpwYm1jQUFnTmxiblljWDJWdFltbHVaRjl5WldkcGMzUmxjbDl6ZEdSZmQzTjBjbWx1WndBSUEyVnVkaFpmWlcxaWFXNWtYM0psWjJsemRHVnlYMlZ0ZG1Gc0FBSURaVzUyR0Y5bGJXSnBibVJmY21WbmFYTjBaWEpmYVc1MFpXZGxjZ0FOQTJWdWRoWmZaVzFpYVc1a1gzSmxaMmx6ZEdWeVgyWnNiMkYwQUFnRFpXNTJIRjlsYldKcGJtUmZjbVZuYVhOMFpYSmZiV1Z0YjNKNVgzWnBaWGNBQ0FObGJuWVRaVzF6WTNKcGNIUmxibDlrWVhSbFgyNXZkd0FzQTJWdWRpQmZaVzF6WTNKcGNIUmxibDluWlhSZmJtOTNYMmx6WDIxdmJtOTBiMjVwWXdBT0ZuZGhjMmxmYzI1aGNITm9iM1JmY0hKbGRtbGxkekVIWm1SZmNtVmhaQUFHRm5kaGMybGZjMjVoY0hOb2IzUmZjSEpsZG1sbGR6RUlabVJmZDNKcGRHVUFCaFozWVhOcFgzTnVZWEJ6YUc5MFgzQnlaWFpwWlhjeENHWmtYMk5zYjNObEFBQURaVzUyRldWdGMyTnlhWEIwWlc1ZmJXVnRZM0I1WDJKcFp3QUlBMlZ1ZGdsZmRIcHpaWFJmYW5NQUNBTmxibllXWlcxelkzSnBjSFJsYmw5eVpYTnBlbVZmYUdWaGNBQUFBMlZ1ZGdWaFltOXlkQUFKRm5kaGMybGZjMjVoY0hOb2IzUmZjSEpsZG1sbGR6RVJaVzUyYVhKdmJsOXphWHBsYzE5blpYUUFBeFozWVhOcFgzTnVZWEJ6YUc5MFgzQnlaWFpwWlhjeEMyVnVkbWx5YjI1ZloyVjBBQU1EWlc1MkNuTjBjbVowYVcxbFgyd0FCd05sYm5ZWFgyVnRZbWx1WkY5eVpXZHBjM1JsY2w5aWFXZHBiblFBRUJaM1lYTnBYM051WVhCemFHOTBYM0J5WlhacFpYY3hCMlprWDNObFpXc0FCd05sYm5ZS1gyMXJkR2x0WlY5cWN3QUFBMlZ1ZGdwZloyMTBhVzFsWDJwekFBZ0R4QVRDQkFrT0FBRUVBQVFFQmdrQUh4RUFBQUVEQWkwdUdSRVpFUkVBQVFrT0RnNE9BUUFSRVJVdkJCVXdBakVDTWdFQ0FBa0JDUUVBQUFJSkFBQUJBQTREQkRNMEF3Z0JCQklTRlRVQ0V3a0JBd0FEQ0FnQUFRa0JEZ01JR2pZQUFnTUlFemNDQkFRQkNRNERBd0FDQVFFQ0Fna0FBQUlCQWhvYk9Cc0FBUUFKT1NBSkVoSVNPZ1VKQUFrU0FBUUVGZ0FKQkFBV0F5RTdId2NQQ0FBS1BBMERCQ0lDQ0FBQVBRQUdFUmtLUGo4R0JBUURDVUFBQUFFQUFRSUVJd29FQkFBQUF3UUVDZ29EQUFFQUFRQUJBUUVCQUFNREFBQUFBQUVBQVFJQUFRUUVBQVFBQVFBREFBQUFBZ0lFQWdJSUJBQURBUWdDQ0FJQ0FBSUFCQU1DQUFNQUF3SUVBd0lBQXdBREF3QURBUVpCQ2djS0JBY0tCQUlBQkFVQUR3QUFBUVVBQ0JjR0NnUU9KQUlGSlFVR0pBVUdCU1VGRFNaQ0JSNEZDZ1VFQXdVQUR3QUZBd2dYQkFVRkJRVUZEU1lGQlFVSEFBQUhDZ2NFRUFJVUJ4UW5CQVlRSEFjSEFBY1FCUVFVQnhRbkVCd0hDd0FGQlFVTUJRd0ZEUWNMQ3dVRkJRd0ZEQVVOQndzUERBOEFBZ0lDQUFJQ0R4Y0NDQWdBQUFNRER3MFBGd0lDQUFJQUF3OE5IUmdvQkFVZEdDZ0VCUVFNREFJQkNBSU9DQWdCQVFBQkFBQUFBQUlCQUFFQUFRQUJBQUVDQVFFQUFBQUFBUUFCQUFFQUFRRUNBUUVCQUFBQUFnSUNBUUFBQUFJQ0Fnc0xCd2NBQ3dzSEFRQUxCQXNIQndBQUJ3QUxCd1FHQmdZREJBTUVCZ1FIQVFBREJBTUVCZ1FIQVFBQktTa0RBd01EQXdFSkFRa0VCQVFEREFvTkNnZ0tEUW9FQXcwUURBME1EQUFBQUFBQkFDRVZCeEFQUTBSRkJBY0JjQUhPQTg0REJRY0JBWUFNZ0lBQ0JoY0Vmd0ZCd0xJWUMzOEJRUUFMZndGQkFBdC9BVUVBQ3dlZEJCc0diV1Z0YjNKNUFnQVJYMTkzWVhOdFgyTmhiR3hmWTNSdmNuTUFKUVp0WVd4c2IyTUFNd1JtY21WbEFEUVFhVzVtYkdGMFpVVnNiR2x3YzI5cFpBQ29BUlJuWlhSRGIzWmxjbUZuWlZCdmMybDBhVzl1Y3dDakFRWm1abXgxYzJnQXJnRU5YMTluWlhSVWVYQmxUbUZ0WlFDckFSdGZaVzFpYVc1a1gybHVhWFJwWVd4cGVtVmZZbWx1WkdsdVozTUFyQUVRWDE5bGNuSnViMTlzYjJOaGRHbHZiZ0FtR1Y5ZmFXNWthWEpsWTNSZlpuVnVZM1JwYjI1ZmRHRmliR1VCQUF0elpYUlVaVzF3VW1WME1BQS9GV1Z0YzJOeWFYQjBaVzVmYzNSaFkydGZhVzVwZEFCQUdXVnRjMk55YVhCMFpXNWZjM1JoWTJ0ZloyVjBYMlp5WldVQVFSbGxiWE5qY21sd2RHVnVYM04wWVdOclgyZGxkRjlpWVhObEFFSVlaVzF6WTNKcGNIUmxibDl6ZEdGamExOW5aWFJmWlc1a0FFTUpjM1JoWTJ0VFlYWmxBRVFNYzNSaFkydFNaWE4wYjNKbEFFVUtjM1JoWTJ0QmJHeHZZd0JHSEdWdGMyTnlhWEIwWlc1ZmMzUmhZMnRmWjJWMFgyTjFjbkpsYm5RQVJDSmZYMk40WVY5cGJtTnlaVzFsYm5SZlpYaGpaWEIwYVc5dVgzSmxabU52ZFc1MEFNTUVGVjlmWTNoaFgybHpYM0J2YVc1MFpYSmZkSGx3WlFEWkJBeGtlVzVEWVd4c1gycHBhbWtBNFFRT1pIbHVRMkZzYkY5MmFXbHFhV2tBNGdRT1pIbHVRMkZzYkY5cGFXbHBhV29BNHdRUFpIbHVRMkZzYkY5cGFXbHBhV3BxQU9RRUVHUjVia05oYkd4ZmFXbHBhV2xwYW1vQTVRUUo0UVlCQUVFQkM4MERVbHBjWFY1ZVgyQmhZbU5rWldabmNGMXhjbk4wZFhsZGVtQjdmSDErZjRBQmdRR0NBWU1CVm9rQmlnRmRjV0NMQVl3QlhWNWVjWTBCamdHTUFZOEJrQUdVQVYxZVhuRnlsUUdXQVlJQmx3R0RBWmdCbVFHYUFYK2JBWndCbXdHZEFaNEJnZ0doQWFJQm93RmVxZ0hUQWNRQnhRSFNBWlFDTk1FQ0tQQUQ3d1B0QStVRDV3UHBBK3NEL3dQK0Evd0Q5UVAzQS9rRCt3TnZoQUZla1FHVEFaRUJrZ0dnQVo4QmQzaXlBYkFCc1FHMUFiWUJyd0hhQWRzQjNBSGRBZDRCM3dHMUFiVUI0QUhpQWVNQjVBSGxBZVFCL2dIL0Fkd0IzUUhlQWQ4QnRRRzFBWUFDNGdHQ0F1UUJnd0xrQWRzQnB3S29BcW9DcXdMc0FlMEI3Z0h2QWRjQjJRSFlBZGtCMndHa0Fwd0NwUUttQXZrQitnSDdBZndCL3dHZkFxQUNvZ0tqQXV3QjdRSHVBZThCMXdIWkFmOEJtd0tjQXAwQ25nTDVBZm9CK3dIOEFiZ0V0d1RjQTY4RXJnU3dCTEVFc2dTekJPa0J0QVMxQkxZRWx3U1dCSmdFbWdTY0JKMEV0UUdmQktBRWlBU0hCSWtFaWdTTEJJd0VqUVNCQklBRWdnU0RCSVFFaFFTR0JGNlJBWkVCb3dTa0JLVUVwZ1NuQktnRXFRU3FCT2tCcXdTc0JLMEVrUUdoQktFRWtBUW5KNklFSjVFQmt3U1VCSkFFdFFHMUFaVUVrZ1NSQVpNRWxBU1FCTFVCdFFHVkJKSUVrUUdPQkk4RWtBUzFBYlVCa1FTU0JKRUJqZ1NQQkpBRXRRRzFBWkVFa2dSZWtRR3pBclFDdFFKZWtRRzJBcmNDdXdLUkFid0N3Z0xNQXM0QzBRTFJBdE1DMVFMWkF0c0MzUUtSQWVBQzVBTHBBdW9DNndMckF1d0M3UUx3QXZFQzhnS1JBZk1DOWdMOEF2MEMvZ0wvQW9NRGhBT1JBWVVEaHdPTEE0d0RqUU9PQTVBRGtRTmVrUUdUQTVRRGxRT1dBNWdEbWdPZEEvRUQ4Z1B6QS9RRDlnUDRBL29EWHBFQmt3T2ZBNkFEb1FPakE2VURxQVBnQStFRDRnUGpBK1lENkFQcUE5NEQzd09wQTk0RDN3T3JBNUVCckFPc0E2MERyUU90QTY0RHRRR3ZBNjhEa1FHc0E2d0RyUU90QTYwRHJnTzFBYThEcndPUkFiQURzQU90QTYwRHJRT3hBN1VCcndPdkE1RUJzQU93QTYwRHJRT3RBN0VEdFFHdkE2OERrUUd6QTd3RGtRRytBOFlEa1FISUE4d0RrUUhOQTlFRGtRSFNBOU1EM0FHUkFkSUQxQVBjQVY2NUJNUUV3Z1Jla1FFb0tNVUVrUUhIQk5jRTB3VFFCSkVCMFFTUkFkc0VrUUhjQk4wRTNnVGRCSkVCMkFUV0JNNEVrUUhKQk1zRXpBU1JBZG9FQ3N5ZkNzSUU2aUlERUg4RGZnSjhRY0N5R0NRRFFjQ3lGQ1FDUWZ5aEZDMEFBRVVFUUNNQVFSQnJJZ1VrQUVHY254UVE2Z0VhUWN5ZkZFRi9OZ0lBUWNTZkZFSFVueFEyQWdCQnZKOFVRZWo5RXpZQ0FFR2NueFJCdEpnVE5nSUFRZENmRkVFQU9nQUFJQVZCREdvaUFFR2dueFFvQWdBaUFUWUNBQ0FCSUFFb0FnUkJBV28yQWdSQm5KOFVJQUJCbko4VUtBSUFLQUlJRVFJQUlBQW9BZ0FpQUNBQUtBSUVRUUZySWdFMkFnUWdBVUYvUmdSQUlBQWdBQ2dDQUNnQ0NCRUJBQXNnQlVFUWFpUUFRZnlaRkVIOG1STTJBZ0JCL0prVVFlQ1pFellDQUVIOG1SUkJ1SmtUTmdJQVFmU1pGRUdrbVJNMkFnQkIrSmtVUVFBMkFnQkIvSmtVUVp5ZkZCQ1pBa0hjbnhSQjBQd1RRWXlnRkJDVkFrR2tteFJCM0o4VUVKWUNRWlNnRkVHNCt4TkJ4S0FVRUpVQ1FjeWNGRUdVb0JRUWxnSkI5SjBVUWN5Y0ZDZ0NBRUVNYXlnQ0FFSGtuQlJxS0FJQUVKWUNRZlNaRkNnQ0FFRU1heWdDQUVIMG1SUnFRYVNiRkRZQ1NFSE1uQlFvQWdCQkRHc29BZ0JCekp3VWFpSUFJQUFvQWdSQmdNQUFjallDQkVITW5CUW9BZ0JCREdzb0FnQkJ6SndVYWtHa214UTJBa2dqQUVFUWF5SUZKQUJCektBVUVJUUNHa0g4b0JSQmZ6WUNBRUgwb0JSQmhLRVVOZ0lBUWV5Z0ZFSG8vUk0yQWdCQnpLQVVRYnliRXpZQ0FFR0FvUlJCQURvQUFDQUZRUXhxSWdCQjBLQVVLQUlBSWdFMkFnQWdBU0FCS0FJRVFRRnFOZ0lFUWN5Z0ZDQUFRY3lnRkNnQ0FDZ0NDQkVDQUNBQUtBSUFJZ0FnQUNnQ0JFRUJheUlCTmdJRUlBRkJmMFlFUUNBQUlBQW9BZ0FvQWdnUkFRQUxJQVZCRUdva0FFSFVtaFJCL0prVE5nSUFRZFNhRkVIb25CTTJBZ0JCMUpvVVFjQ2NFellDQUVITW1oUkJySndUTmdJQVFkQ2FGRUVBTmdJQVFkU2FGRUhNb0JRUW1RSkJqS0VVUWREOEUwRzhvUlFRbHdKQitKc1VRWXloRkJDWUFrSEVvUlJCdVBzVFFmU2hGQkNYQWtHZ25SUkJ4S0VVRUpnQ1FjaWVGRUdnblJRb0FnQkJER3NvQWdCQnVKMFVhaWdDQUJDWUFrSE1taFFvQWdCQkRHc29BZ0JCekpvVWFrSDRteFEyQWtoQm9KMFVLQUlBUVF4cktBSUFRYUNkRkdvaUFDQUFLQUlFUVlEQUFISTJBZ1JCb0owVUtBSUFRUXhyS0FJQVFhQ2RGR3BCK0pzVU5nSklRZnloRkVFQk9nQUFDeU1BUVJCcklnQWtBQUpBSUFCQkRHb2dBRUVJYWhBZURRQkJnS0lVSUFBb0FneEJBblJCQkdvUU15SUZOZ0lBSUFWRkRRQWdBQ2dDQ0JBeklnVUVRRUdBb2hRb0FnQWlBU0FBS0FJTVFRSjBha0VBTmdJQUlBRWdCUkFmUlEwQkMwR0FvaFJCQURZQ0FBc2dBRUVRYWlRQVFhU0RGRUlBTndJQVFheURGRUVBTmdJQUVCVWFRYlNERkVFRE5nSUFRYmlERkVFQU5nSUFFRnhCdUlNVVFmQ0hGQ2dDQURZQ0FFSHdoeFJCdElNVU5nSUFRYnlERkVFUU5nSUFRY0NERkVFQU5nSUFRZWpyRWtHODZCSkI1T2dTUVFCQjJPd1NRUkZCa09vU1FRQkJrT29TUVFCQit6MUIyK3dTUVJJUUEwSG82eEpCQWtIMDZCSkI2T3dTUVJOQkZCQUVRUVFRVkNJQVFRUTJBZ0JCQkJCVUlnVkJCRFlDQUVIbzZ4SkJoc0VBUWVEdUVrSG83QkpCRlNBQVFlRHVFa0dBN1JKQkZpQUZFQVpCd0lNVVFmQ0hGQ2dDQURZQ0FFSHdoeFJCdklNVU5nSUFRY1NERkVFWE5nSUFRY2lERkVFQU5nSUFFSGxCeUlNVVFmQ0hGQ2dDQURZQ0FFSHdoeFJCeElNVU5nSUFRUUFoQVVFQUlRVWpBRUhRQUdzaUF5UUFRc0RpcUxBR0VJVUJRb0NBMysybjRnRjhJUkFqQUVFUWF5SUFKQUFnQUNBUVFzQ0VQWDgzQXdnZ0FDa0RDQ0VSSUFCQkVHb2tBQ0FESUJFM0EwZ1Fzd0VnQXlrRFNDSVFweUFRUWlDSXAwR0FpQlFRSkVHb2lCUkJvOFFBTmdJQVFhQ0lGRUlBTndJQVFZQ0lGRUlBTndJQVFZaUlGRUVBTmdJQUVMTUJRWUNJRkJBanJTTUJyVUlnaG9SQzZBZCtJUkFqQUVFd2F5SUFKQUFDUUNBQVFSQnFJZ2NpQkNBQVFTUnFJZ1pHRFFBZ0VFSUFXUTBBSUFSQkxUb0FBQ0FFUVFGcUlRUkNBQ0FRZlNFUUN5QUFBbjhnQmlBRWF5SUpRUk5NQkVCQlBTQUpRY0FBSUJCQ0FZUjVwMnRCMFFsc1FReDJJZ2dnQ0VFRGRFR1E4Uk5xS1FNQUlCQllha2dOQVJvTEFuOGdFRUwvLy8vL0QxZ0VRQ0FFSUJDbkVMd0VEQUVMSUJCQ2dNaXZvQ1ZhQkg4Z0VFS0F5SytnSllBaUVrS0F1TkRmV240Z0VId2hFQ0FFSUJLbkVMd0VCU0FFQ3lBUVFvREMxeStBSWhLbkVMMEVJQkpDZ0w2bzBBOStJQkI4cHhEQUJBc2hCa0VBQ3pZQ0RDQUFJQVkyQWdnZ0EwRXdhaUlFSUFjZ0FDZ0NDQkNOQWhvZ0FFRXdhaVFBSUFOQlBHb2dCQkJiSUFNc0FEdEJBRWdFUUNBREtBSXdFRFFMQWtBQ1FBSkFRYkNERkMwQUFFVUVRRUdBbWhJUVZFR095d0JCLzVrU0VDc2lDa0VBT2dEL21SSWdBMEVBTmdJNElBTkNBRGNETUFOQUlBSkJBWEZGQkVBZ0EwRXdhaUFDSUFwcUxBQUFFSVlCQ3lBQ1FRRnFJZ0pCLzVrU1J3MEFDMEVBSVFKQm9JTVVMUUFBUlFSQVFaU0RGRUhRQUJCVUlnQTJBZ0JCbUlNVVFzQ0FnSUNBaW9DQWdIODNBZ0FnQUVHeTVoSXBBQUEzQURnZ0FFR3E1aElwQUFBM0FEQWdBRUdpNWhJcEFBQTNBQ2dnQUVHYTVoSXBBQUEzQUNBZ0FFR1M1aElwQUFBM0FCZ2dBRUdLNWhJcEFBQTNBQkFnQUVHQzVoSXBBQUEzQUFnZ0FFSDY1UklwQUFBM0FBQWdBRUVBT2dCQVFhQ0RGRUVCT2dBQUMwR0FDQkJVUWY4QlFZQUlFQ2toQmtHVWd4UkJsSU1VS0FJQVFaK0RGQ3dBQUVFQVRoc2hBQU5BSUFZZ0FDQUNhaXdBQUVFQ2RHb2dBallDQUNBR0lBQWdBa0VCY2lJRWFpd0FBRUVDZEdvZ0JEWUNBQ0FHSUFBZ0FrRUNjaUlFYWl3QUFFRUNkR29nQkRZQ0FDQUdJQUFnQWtFRGNpSUVhaXdBQUVFQ2RHb2dCRFlDQUNBQ1FRUnFJZ0pCd0FCSERRQUxBa0FnQXlnQ05DQURMUUE3SWdBZ0FNQkJBRWdpQUJzaUFrVUVRRUVBSVFJTUFRc2dBeWdDTUNBRFFUQnFJQUFiSWdrZ0Ftb2hEa0Y0SVFkQkFDRUNBMEFnQmlBSkxRQUFRUUowYWlnQ0FDSUFRWDlHRFFFZ0FDQU1RUVowYWlFTUFuOGdCMEVHYWlJQUlBZEJla2dOQUJvZ0RDQUFkU0VFSUFFZ0Frc0VRQ0FDSUFRNkFBQWdBa0VCYWlFQ0lBZEJBbXNNQVFzZ0FpQUZheUlMUVFGcUlnQkJBRWdOQkVILy8vLy9CeUFCSUFWcklnRkJBWFFpQ0NBQUlBQWdDRWtiSUFGQi8vLy8vd05QR3lJTkJIOGdEUkJVQlVFQUN5SUlJQXRxSWdBZ0JEb0FBQUovSUFBZ0FpQUZSZzBBR2lBRlFYOXpJQUpxSVE5QkFDRUVJQUFoQVNBTFFRTnhJZ3NFUUFOQUlBRkJBV3NpQVNBQ1FRRnJJZ0l0QUFBNkFBQWdCRUVCYWlJRUlBdEhEUUFMQ3lBSUlBOUJBMGtOQUJvRFFDQUJRUUZySUFKQkFXc3RBQUE2QUFBZ0FVRUNheUFDUVFKckxRQUFPZ0FBSUFGQkEyc2dBa0VEYXkwQUFEb0FBQ0FCUVFScklnRWdBa0VFYXlJQ0xRQUFPZ0FBSUFJZ0JVY05BQXNnQ0FzaEJDQUZCRUFnQlJBMEN5QUlJQTFxSVFFZ0FFRUJhaUVDSUFRaEJTQUhRUUpyQ3lFSElBbEJBV29pQ1NBT1J3MEFDd3NnQmhBMElBTXNBRHRCQUVnRVFDQURLQUl3RURRTElBb1FOQ0FDSUFWcklnQkI4UC8vL3dkUERRSUNRQ0FBUVFwTkJFQWdBeUFBT2dBN0lBTkJNR29oQVF3QkN5QUFRUTl5UVFGcUlnUVFWQ0VCSUFNZ0JFR0FnSUNBZUhJMkFqZ2dBeUFCTmdJd0lBTWdBRFlDTkFzQ1FDQUNJQVZHRFFBZ0JVRi9jeUFDYWlFR0FrQWdBRUVIY1NJSFJRUkFJQVVoQUF3QkMwRUFJUVFnQlNFQUEwQWdBU0FBTFFBQU9nQUFJQUZCQVdvaEFTQUFRUUZxSVFBZ0JFRUJhaUlFSUFkSERRQUxDeUFHUVFkSkRRQURRQ0FCSUFBdEFBQTZBQUFnQVNBQUxRQUJPZ0FCSUFFZ0FDMEFBam9BQWlBQklBQXRBQU02QUFNZ0FTQUFMUUFFT2dBRUlBRWdBQzBBQlRvQUJTQUJJQUF0QUFZNkFBWWdBU0FBTFFBSE9nQUhJQUZCQ0dvaEFTQUFRUWhxSWdBZ0FrY05BQXNMUVFBaEFpQUJRUUE2QUFCQjRBQVFWRUdPNVJKQjJBQVFLeUlKUVFBNkFGZ2dBMEVBTmdJb0lBTkNBRGNESUNBREtBSTBJQU1zQURzaUNFSC9BWEVnQ0VFQVNDSUFHeUlCQkg4Z0F5Z0NNQ0FEUVRCcUlBQWJJUUFEUUNBRFFTQnFJQWtnQWtIWUFIQnFMUUFBSUFBZ0Ftb3RBQUJ6d0JDR0FTQUNRUUZxSWdJZ0FVY05BQXNnQXlnQ0lDQURRU0JxSUFNdEFDdkFRUUJJR3dVZ0EwRWdhZ3NRQUNFQ0lBTXNBQ3RCQUVnRVFDQURLQUlnRURRTElBSVFMeUlCUWZELy8vOEhUdzBDQWtBZ0FVRUtUUVJBSUFNZ0FUb0FLeUFEUVNCcUlRQU1BUXNnQVVFUGNrRUJhaUlFRUZRaEFDQURJQVJCZ0lDQWdIaHlOZ0lvSUFNZ0FEWUNJQ0FESUFFMkFpUUxJQUFnQWlBQkVFc2dBV3BCQURvQUFDTUFRUkJySWdZa0FDQUdRUkEyQWd3Z0EwRWdhaUlBS0FJRUlBQXRBQXNpQVVIL0FIRWdBVUdBQVhGQkIzWWJJZ0ZCQUVrRVFCRFZBUUFMSUFBb0FnQWdBQ0FBTFFBTFFZQUJjVUVIZGhzaENpQUdJQUUyQWdnZ0EwRUlhaUlCSVFBZ0JrRUlhaUFHUVF4cUlBWW9BZ2dnQmlnQ0RFa2JLQUlBSVFRakFFRVFheUlISkFBQ1FDQUVRZkQvLy84SFNRUkFBa0FnQkVFTFNRUkFJQUFnQkRvQUN3d0JDeUFIUVFocUlBUkJDMDhFZnlBRVFSQnFRWEJ4SWdJZ0FrRUJheUlDSUFKQkMwWWJCVUVLQzBFQmFoQ09BaUFBSUFjb0FnZ2lBallDQUNBQUlBY29BZ3hCZ0lDQWdIaHlOZ0lJSUFBZ0JEWUNCQ0FDSVFBTElBQWdDaUFFRU9FQklBUnFRUUE2QUFBZ0IwRVFhaVFBREFFTEVGVUFDeUFHUVJCcUpBQWdBMEVVYWlBQklnQVFXeUFBTEFBTFFRQklCRUFnQUNnQ0FCQTBDMEdBQWhCVVFkekJBRUh3QVJBcklnRkJBRG9BOEFFQ1FDQURLQUlZSUFNdEFCOGlBQ0FBd0VFQVNDSUFHeUlHQkVBZ0FVSHdBV29oQkNBREtBSVVJQU5CRkdvZ0FCc2hCd0pBQWtBQ1FDQUdRZkFCU2cwQUlBY3NBQUFoQ2tId0FTRUNJQUVoQUFOQUlBSWdCbXRCQVdvaUFrVU5BU0FBSUFvZ0FoQ0hBU0lBUlEwQklBQWdCeUFHRUlnQlJRMENJQVFnQUVFQmFpSUFheUlDSUFaT0RRQUxDMEd3Z3hSQkFEb0FBQXdCQzBHd2d4UWdBQ0FFUnlBQUlBRnJRWDlIY1NJQU9nQUFJQUFOQWdzZ0JrSHhBVWdFUUFOQUlBY3NBQUFoQ2tId0FTRUNJQUVoQUFKQUEwQUNRQ0FDSUFaclFRRnFJZ0pGRFFBZ0FDQUtJQUlRaHdFaUFrVU5BQ0FDSUFjZ0JoQ0lBVVVOQWlBRUlBSkJBV29pQUdzaUFpQUdUZzBCQ3dzZ0JDRUNDMEd3Z3hRZ0FpQUVSeUFDSUFGclFYOUhjU0lBT2dBQUlBQkZEUUFNQXdzQUMwR3dneFJCQURvQUFBTkFEQUFMQUF0QnNJTVVRUUU2QUFBTElBRVFOQ0FETEFBZlFRQklCRUFnQXlnQ0ZCQTBDeUFETEFBclFRQklCRUFnQXlnQ0lCQTBDeUFKRURRZ0NFRUFTQVJBSUFNb0FqQVFOQXNnQlFSQUlBVVFOQXNnQXlrRFNDRVJDeU1BUVRCcklnQWtBRUg4aHhRdEFBQkZCRUJCL1ljVUVCWTZBQUJCL0ljVVFRRTZBQUFMSUFBQ2ZoQVZJaE5FQUFBQUFBQkFqMENqSWhTWlJBQUFBQUFBQU9CRFl3UkFJQlN3REFFTFFvQ0FnSUNBZ0lDQWdIOExJaEEzQXhnZ0FBSi9JQk1nRUVMb0IzNjVvVVFBQUFBQUFFQ1BRS0pFQUFBQUFBQkFqMENpSWhPWlJBQUFBQUFBQU9CQll3UkFJQk9xREFFTFFZQ0FnSUI0Q3pZQ0lDQUFJQUFwQXhnM0F4QWdBQ0FBS0FJZ1FlZ0hiYXczQXdnZ0FDa0RFQ0VRSXdCQkVHc2lCU1FBSUFVZ0VCRFdBU0VCSUFVZ0FDa0RDQ0FCS1FNQWZEY0RDQ0FGS1FNSUlSQWdCVUVRYWlRQUlBQWdFRGNES0NBQUtRTW9JUkFnQUVFd2FpUUFRYkNERkMwQUFDRUFJQU1zQUVkQkFFZ0VRQ0FES0FJOEVEUUxRZGlFRkVIVWhCUTJBZ0JCMUlRVVFkU0VGRFlDQUVISWhCUWdBRVVnRVJDRkFTQVFVM0k2QUFCQjNJUVVRUUEyQWdBZ0EwSFFBR29rQUF3Q0N4QlhBQXNRVlFBTFFjeUVGRUVtTmdJQVFkQ0VGRUVBTmdJQUVJb0JRZENFRkVId2h4UW9BZ0EyQWdCQjhJY1VRY3lFRkRZQ0FFRzRoaFJCTlRZQ0FFRzhoaFJCQURZQ0FCQ1VBVUc4aGhSQjhJY1VLQUlBTmdJQVFmQ0hGRUc0aGhRMkFnQkI0SVlVUWNvQU5nSUFRY0NHRkVHdyt4TXJBd0JFSHd4N3BZams3eitpT1FNQVFlU0dGRUVBTmdJQVFZSThRUVpCZ080U1FaanVFa0hMQUVITUFFRUFFQXRCNUlZVVFmQ0hGQ2dDQURZQ0FFSHdoeFJCNElZVU5nSUFRZlNIRkVIT0FEWUNBRUg0aHhSQkFEWUNBQkNxQVVINGh4UkI4SWNVS0FJQU5nSUFRZkNIRkVIMGh4UTJBZ0JCaEprVVFTbzJBZ0JCekprVVFkeWlGRFlDQUFzR0FFR2cveE1MQkFCQkFRc0RBQUVMOGdJQ0FuOEJmZ0pBSUFKRkRRQWdBQ0FCT2dBQUlBQWdBbW9pQTBFQmF5QUJPZ0FBSUFKQkEwa05BQ0FBSUFFNkFBSWdBQ0FCT2dBQklBTkJBMnNnQVRvQUFDQURRUUpySUFFNkFBQWdBa0VIU1EwQUlBQWdBVG9BQXlBRFFRUnJJQUU2QUFBZ0FrRUpTUTBBSUFCQkFDQUFhMEVEY1NJRWFpSURJQUZCL3dGeFFZR0NoQWhzSWdFMkFnQWdBeUFDSUFSclFYeHhJZ1JxSWdKQkJHc2dBVFlDQUNBRVFRbEpEUUFnQXlBQk5nSUlJQU1nQVRZQ0JDQUNRUWhySUFFMkFnQWdBa0VNYXlBQk5nSUFJQVJCR1VrTkFDQURJQUUyQWhnZ0F5QUJOZ0lVSUFNZ0FUWUNFQ0FESUFFMkFnd2dBa0VRYXlBQk5nSUFJQUpCRkdzZ0FUWUNBQ0FDUVJocklBRTJBZ0FnQWtFY2F5QUJOZ0lBSUFRZ0EwRUVjVUVZY2lJRWF5SUNRU0JKRFFBZ0FhMUNnWUNBZ0JCK0lRVWdBeUFFYWlFQkEwQWdBU0FGTndNWUlBRWdCVGNERUNBQklBVTNBd2dnQVNBRk53TUFJQUZCSUdvaEFTQUNRU0JySWdKQkgwc05BQXNMSUFBTFdRRUJmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJQUlnRkJDSEVFUUNBQUlBRkJJSEkyQWdCQmZ3OExJQUJDQURjQ0JDQUFJQUFvQWl3aUFUWUNIQ0FBSUFFMkFoUWdBQ0FCSUFBb0FqQnFOZ0lRUVFBTGdBUUJBMzhnQWtHQUJFOEVRQ0FBSUFFZ0FoQWFJQUFQQ3lBQUlBSnFJUU1DUUNBQUlBRnpRUU54UlFSQUFrQWdBRUVEY1VVRVFDQUFJUUlNQVFzZ0FrVUVRQ0FBSVFJTUFRc2dBQ0VDQTBBZ0FpQUJMUUFBT2dBQUlBRkJBV29oQVNBQ1FRRnFJZ0pCQTNGRkRRRWdBaUFEU1EwQUN3c0NRQ0FEUVh4eElnUkJ3QUJKRFFBZ0FpQUVRVUJxSWdWTERRQURRQ0FDSUFFb0FnQTJBZ0FnQWlBQktBSUVOZ0lFSUFJZ0FTZ0NDRFlDQ0NBQ0lBRW9BZ3cyQWd3Z0FpQUJLQUlRTmdJUUlBSWdBU2dDRkRZQ0ZDQUNJQUVvQWhnMkFoZ2dBaUFCS0FJY05nSWNJQUlnQVNnQ0lEWUNJQ0FDSUFFb0FpUTJBaVFnQWlBQktBSW9OZ0lvSUFJZ0FTZ0NMRFlDTENBQ0lBRW9BakEyQWpBZ0FpQUJLQUkwTmdJMElBSWdBU2dDT0RZQ09DQUNJQUVvQWp3MkFqd2dBVUZBYXlFQklBSkJRR3NpQWlBRlRRMEFDd3NnQWlBRVR3MEJBMEFnQWlBQktBSUFOZ0lBSUFGQkJHb2hBU0FDUVFScUlnSWdCRWtOQUFzTUFRc2dBMEVFU1FSQUlBQWhBZ3dCQ3lBQUlBTkJCR3NpQkVzRVFDQUFJUUlNQVFzZ0FDRUNBMEFnQWlBQkxRQUFPZ0FBSUFJZ0FTMEFBVG9BQVNBQ0lBRXRBQUk2QUFJZ0FpQUJMUUFET2dBRElBRkJCR29oQVNBQ1FRUnFJZ0lnQkUwTkFBc0xJQUlnQTBrRVFBTkFJQUlnQVMwQUFEb0FBQ0FCUVFGcUlRRWdBa0VCYWlJQ0lBTkhEUUFMQ3lBQUM4QUJBUU4vQWtBZ0FTQUNLQUlRSWdNRWZ5QURCU0FDRUNvTkFTQUNLQUlRQ3lBQ0tBSVVJZ1ZyU3dSQUlBSWdBQ0FCSUFJb0FpUVJCQUFQQ3dKQUlBSW9BbEJCQUVnRVFFRUFJUU1NQVFzZ0FTRUVBMEFnQkNJRFJRUkFRUUFoQXd3Q0N5QUFJQU5CQVdzaUJHb3RBQUJCQ2tjTkFBc2dBaUFBSUFNZ0FpZ0NKQkVFQUNJRUlBTkpEUUVnQUNBRGFpRUFJQUVnQTJzaEFTQUNLQUlVSVFVTElBVWdBQ0FCRUNzYUlBSWdBaWdDRkNBQmFqWUNGQ0FCSUFOcUlRUUxJQVFMUUFFQmZ5QUJJQUpzSVFRZ0JBSi9JQU1vQWt4QkFFZ0VRQ0FBSUFRZ0F4QXNEQUVMSUFBZ0JDQURFQ3dMSWdCR0JFQWdBa0VBSUFFYkR3c2dBQ0FCYmd1TUFRRUNmeU1BUVJCcklnQWtBQ0FBUVFvNkFBOENRQUpBUWNqN0V5Z0NBQ0lCQkg4Z0FRVkJ1UHNURUNvTkFrSEkreE1vQWdBTFFjejdFeWdDQUNJQlJnMEFRWWo4RXlnQ0FFRUtSZzBBUWN6N0V5QUJRUUZxTmdJQUlBRkJDam9BQUF3QkMwRzQreE1nQUVFUGFrRUJRZHo3RXlnQ0FCRUVBRUVCUncwQUlBQXRBQThhQ3lBQVFSQnFKQUFMZWdFRGZ3SkFBa0FnQUNJQlFRTnhSUTBBSUFBdEFBQkZCRUJCQUE4TEEwQWdBVUVCYWlJQlFRTnhSUTBCSUFFdEFBQU5BQXNNQVFzRFFDQUJJZ0pCQkdvaEFTQUNLQUlBSWdOQmYzTWdBMEdCZ29RSWEzRkJnSUdDaEhoeFJRMEFDd05BSUFJaUFVRUJhaUVDSUFFdEFBQU5BQXNMSUFFZ0FHc0xxQUVBQWtBZ0FVR0FDRTRFUUNBQVJBQUFBQUFBQU9CL29pRUFJQUZCL3c5SkJFQWdBVUgvQjJzaEFRd0NDeUFBUkFBQUFBQUFBT0Ivb2lFQVFmMFhJQUVnQVVIOUYwNGJRZjRQYXlFQkRBRUxJQUZCZ1hoS0RRQWdBRVFBQUFBQUFBQmdBNkloQUNBQlFiaHdTd1JBSUFGQnlRZHFJUUVNQVFzZ0FFUUFBQUFBQUFCZ0E2SWhBRUh3YUNBQklBRkI4R2hNRzBHU0Qyb2hBUXNnQUNBQlFmOEhhcTFDTklhL29ndkdCZ0lFZndOK0l3QkJnQUZySWdVa0FBSkFBa0FDUUNBRElBUkNBRUlBRURkRkRRQUNmeUFFUXYvLy8vLy8veitESVFvQ2Z5QUVRakNJcDBILy93RnhJZ1pCLy84QlJ3UkFRUVFnQmcwQkdrRUNRUU1nQXlBS2hGQWJEQUlMSUFNZ0NvUlFDd3NoQmlBQ1FqQ0lweUlJUWYvL0FYRWlCMEgvL3dGR0RRQWdCZzBCQ3lBRlFSQnFJQUVnQWlBRElBUVFQQ0FGSUFVcEF4QWlBaUFGS1FNWUlnRWdBaUFCRURvZ0JTa0RDQ0VDSUFVcEF3QWhCQXdCQ3lBQklBSkMvLy8vLy8vLy8vLy9BSU1pQ2lBRElBUkMvLy8vLy8vLy8vLy9BSU1pQ1JBM1FRQk1CRUFnQVNBS0lBTWdDUkEzQkVBZ0FTRUVEQUlMSUFWQjhBQnFJQUVnQWtJQVFnQVFQQ0FGS1FONElRSWdCU2tEY0NFRURBRUxJQVJDTUlpblFmLy9BWEVoQmlBSEJINGdBUVVnQlVIZ0FHb2dBU0FLUWdCQ2dJQ0FnSUNBd0x2QUFCQThJQVVwQTJnaUNrSXdpS2RCK0FCcklRY2dCU2tEWUFzaEJDQUdSUVJBSUFWQjBBQnFJQU1nQ1VJQVFvQ0FnSUNBZ01DN3dBQVFQQ0FGS1FOWUlnbENNSWluUWZnQWF5RUdJQVVwQTFBaEF3c2dDVUwvLy8vLy8vOC9nMEtBZ0lDQWdJREFBSVFoQ3lBS1F2Ly8vLy8vL3orRFFvQ0FnSUNBZ01BQWhDRUtJQVlnQjBnRVFBTkFBbjRnQ2lBTGZTQURJQVJXclgwaUNVSUFXUVJBSUFrZ0JDQURmU0lFaEZBRVFDQUZRU0JxSUFFZ0FrSUFRZ0FRUENBRktRTW9JUUlnQlNrRElDRUVEQVVMSUFsQ0FZWWdCRUkvaUlRTUFRc2dDa0lCaGlBRVFqK0loQXNoQ2lBRVFnR0dJUVFnQjBFQmF5SUhJQVpLRFFBTElBWWhCd3NDUUNBS0lBdDlJQU1nQkZhdGZTSUpRZ0JUQkVBZ0NpRUpEQUVMSUFrZ0JDQURmU0lFaEVJQVVnMEFJQVZCTUdvZ0FTQUNRZ0JDQUJBOElBVXBBemdoQWlBRktRTXdJUVFNQVFzZ0NVTC8vLy8vLy84L1dBUkFBMEFnQkVJL2lDRUJJQWRCQVdzaEJ5QUVRZ0dHSVFRZ0FTQUpRZ0dHaENJSlFvQ0FnSUNBZ01BQVZBMEFDd3NnQ0VHQWdBSnhJUVlnQjBFQVRBUkFJQVZCUUdzZ0JDQUpRdi8vLy8vLy96K0RJQWRCK0FCcUlBWnlyVUl3aG9SQ0FFS0FnSUNBZ0lEQXd6OFFQQ0FGS1FOSUlRSWdCU2tEUUNFRURBRUxJQWxDLy8vLy8vLy9QNE1nQmlBSGNxMUNNSWFFSVFJTElBQWdCRGNEQUNBQUlBSTNBd2dnQlVHQUFXb2tBQXRTQVFKL1FhajdFeWdDQUNJQklBQkJCMnBCZUhFaUFtb2hBQUpBSUFKQkFDQUFJQUZOR3cwQUlBQS9BRUVRZEVzRVFDQUFFQnhGRFFFTFFhajdFeUFBTmdJQUlBRVBDMEdnL3hOQk1EWUNBRUYvQzhnb0FRdC9Jd0JCRUdzaUNpUUFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBUWZRQlRRUkFRYVQvRXlnQ0FDSUdRUkFnQUVFTGFrRjRjU0FBUVF0Skd5SUZRUU4ySWdCMklnRkJBM0VFUUFKQUlBRkJmM05CQVhFZ0FHb2lBa0VEZENJQlFjei9FMm9pQUNBQlFkVC9FMm9vQWdBaUFTZ0NDQ0lFUmdSQVFhVC9FeUFHUVg0Z0FuZHhOZ0lBREFFTElBUWdBRFlDRENBQUlBUTJBZ2dMSUFGQkNHb2hBQ0FCSUFKQkEzUWlBa0VEY2pZQ0JDQUJJQUpxSWdFZ0FTZ0NCRUVCY2pZQ0JBd1BDeUFGUWF6L0V5Z0NBQ0lIVFEwQklBRUVRQUpBUVFJZ0FIUWlBa0VBSUFKcmNpQUJJQUIwY1dnaUFVRURkQ0lBUWN6L0Uyb2lBaUFBUWRUL0Uyb29BZ0FpQUNnQ0NDSUVSZ1JBUWFUL0V5QUdRWDRnQVhkeElnWTJBZ0FNQVFzZ0JDQUNOZ0lNSUFJZ0JEWUNDQXNnQUNBRlFRTnlOZ0lFSUFBZ0JXb2lDQ0FCUVFOMElnRWdCV3NpQkVFQmNqWUNCQ0FBSUFGcUlBUTJBZ0FnQndSQUlBZEJlSEZCelA4VGFpRUJRYmovRXlnQ0FDRUNBbjhnQmtFQklBZEJBM1owSWdOeFJRUkFRYVQvRXlBRElBWnlOZ0lBSUFFTUFRc2dBU2dDQ0FzaEF5QUJJQUkyQWdnZ0F5QUNOZ0lNSUFJZ0FUWUNEQ0FDSUFNMkFnZ0xJQUJCQ0dvaEFFRzQveE1nQ0RZQ0FFR3MveE1nQkRZQ0FBd1BDMEdvL3hNb0FnQWlDMFVOQVNBTGFFRUNkRUhVZ1JScUtBSUFJZ0lvQWdSQmVIRWdCV3NoQXlBQ0lRRURRQUpBSUFFb0FoQWlBRVVFUUNBQktBSVVJZ0JGRFFFTElBQW9BZ1JCZUhFZ0JXc2lBU0FESUFFZ0Ewa2lBUnNoQXlBQUlBSWdBUnNoQWlBQUlRRU1BUXNMSUFJb0FoZ2hDU0FDSUFJb0Fnd2lCRWNFUUVHMC94TW9BZ0FhSUFJb0FnZ2lBQ0FFTmdJTUlBUWdBRFlDQ0F3T0N5QUNRUlJxSWdFb0FnQWlBRVVFUUNBQ0tBSVFJZ0JGRFFNZ0FrRVFhaUVCQ3dOQUlBRWhDQ0FBSWdSQkZHb2lBU2dDQUNJQURRQWdCRUVRYWlFQklBUW9BaEFpQUEwQUN5QUlRUUEyQWdBTURRdEJmeUVGSUFCQnYzOUxEUUFnQUVFTGFpSUFRWGh4SVFWQnFQOFRLQUlBSWdoRkRRQkJBQ0FGYXlFREFrQUNRQUpBQW45QkFDQUZRWUFDU1EwQUdrRWZJQVZCLy8vL0Iwc05BQm9nQlVFbUlBQkJDSFpuSWdCcmRrRUJjU0FBUVFGMGEwRSthZ3NpQjBFQ2RFSFVnUlJxS0FJQUlnRkZCRUJCQUNFQURBRUxRUUFoQUNBRlFSa2dCMEVCZG10QkFDQUhRUjlIRzNRaEFnTkFBa0FnQVNnQ0JFRjRjU0FGYXlJR0lBTlBEUUFnQVNFRUlBWWlBdzBBUVFBaEF5QUJJUUFNQXdzZ0FDQUJLQUlVSWdZZ0JpQUJJQUpCSFhaQkJIRnFLQUlRSWdGR0d5QUFJQVliSVFBZ0FrRUJkQ0VDSUFFTkFBc0xJQUFnQkhKRkJFQkJBQ0VFUVFJZ0IzUWlBRUVBSUFCcmNpQUljU0lBUlEwRElBQm9RUUowUWRTQkZHb29BZ0FoQUFzZ0FFVU5BUXNEUUNBQUtBSUVRWGh4SUFWcklnSWdBMGtoQVNBQ0lBTWdBUnNoQXlBQUlBUWdBUnNoQkNBQUtBSVFJZ0VFZnlBQkJTQUFLQUlVQ3lJQURRQUxDeUFFUlEwQUlBTkJyUDhUS0FJQUlBVnJUdzBBSUFRb0FoZ2hCeUFFSUFRb0Fnd2lBa2NFUUVHMC94TW9BZ0FhSUFRb0FnZ2lBQ0FDTmdJTUlBSWdBRFlDQ0F3TUN5QUVRUlJxSWdFb0FnQWlBRVVFUUNBRUtBSVFJZ0JGRFFNZ0JFRVFhaUVCQ3dOQUlBRWhCaUFBSWdKQkZHb2lBU2dDQUNJQURRQWdBa0VRYWlFQklBSW9BaEFpQUEwQUN5QUdRUUEyQWdBTUN3c2dCVUdzL3hNb0FnQWlCRTBFUUVHNC94TW9BZ0FoQUFKQUlBUWdCV3NpQVVFUVR3UkFJQUFnQldvaUFpQUJRUUZ5TmdJRUlBQWdCR29nQVRZQ0FDQUFJQVZCQTNJMkFnUU1BUXNnQUNBRVFRTnlOZ0lFSUFBZ0JHb2lBU0FCS0FJRVFRRnlOZ0lFUVFBaEFrRUFJUUVMUWF6L0V5QUJOZ0lBUWJqL0V5QUNOZ0lBSUFCQkNHb2hBQXdOQ3lBRlFiRC9FeWdDQUNJQ1NRUkFRYkQvRXlBQ0lBVnJJZ0UyQWdCQnZQOFRRYnovRXlnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1EUXRCQUNFQUlBVkJMMm9pQXdKL1FmeUNGQ2dDQUFSQVFZU0RGQ2dDQUF3QkMwR0lneFJDZnpjQ0FFR0FneFJDZ0tDQWdJQ0FCRGNDQUVIOGdoUWdDa0VNYWtGd2NVSFlxdFdxQlhNMkFnQkJrSU1VUVFBMkFnQkI0SUlVUVFBMkFnQkJnQ0FMSWdGcUlnWkJBQ0FCYXlJSWNTSUJJQVZORFF4QjNJSVVLQUlBSWdRRVFFSFVnaFFvQWdBaUJ5QUJhaUlKSUFkTkRRMGdCQ0FKU1EwTkN3SkFRZUNDRkMwQUFFRUVjVVVFUUFKQUFrQUNRQUpBUWJ6L0V5Z0NBQ0lFQkVCQjVJSVVJUUFEUUNBRUlBQW9BZ0FpQjA4RVFDQUhJQUFvQWdScUlBUkxEUU1MSUFBb0FnZ2lBQTBBQ3d0QkFCQXlJZ0pCZjBZTkF5QUJJUVpCZ0lNVUtBSUFJZ0JCQVdzaUJDQUNjUVJBSUFFZ0Ftc2dBaUFFYWtFQUlBQnJjV29oQmdzZ0JTQUdUdzBEUWR5Q0ZDZ0NBQ0lBQkVCQjFJSVVLQUlBSWdRZ0Jtb2lDQ0FFVFEwRUlBQWdDRWtOQkFzZ0JoQXlJZ0FnQWtjTkFRd0ZDeUFHSUFKcklBaHhJZ1lRTWlJQ0lBQW9BZ0FnQUNnQ0JHcEdEUUVnQWlFQUN5QUFRWDlHRFFFZ0JVRXdhaUFHVFFSQUlBQWhBZ3dFQzBHRWd4UW9BZ0FpQWlBRElBWnJha0VBSUFKcmNTSUNFREpCZjBZTkFTQUNJQVpxSVFZZ0FDRUNEQU1MSUFKQmYwY05BZ3RCNElJVVFlQ0NGQ2dDQUVFRWNqWUNBQXNnQVJBeUlRSkJBQkF5SVFBZ0FrRi9SZzBGSUFCQmYwWU5CU0FBSUFKTkRRVWdBQ0FDYXlJR0lBVkJLR3BORFFVTFFkU0NGRUhVZ2hRb0FnQWdCbW9pQURZQ0FFSFlnaFFvQWdBZ0FFa0VRRUhZZ2hRZ0FEWUNBQXNDUUVHOC94TW9BZ0FpQXdSQVFlU0NGQ0VBQTBBZ0FpQUFLQUlBSWdFZ0FDZ0NCQ0lFYWtZTkFpQUFLQUlJSWdBTkFBc01CQXRCdFA4VEtBSUFJZ0JCQUNBQUlBSk5HMFVFUUVHMC94TWdBallDQUF0QkFDRUFRZWlDRkNBR05nSUFRZVNDRkNBQ05nSUFRY1QvRTBGL05nSUFRY2ovRTBIOGdoUW9BZ0EyQWdCQjhJSVVRUUEyQWdBRFFDQUFRUU4wSWdGQjFQOFRhaUFCUWN6L0Uyb2lCRFlDQUNBQlFkai9FMm9nQkRZQ0FDQUFRUUZxSWdCQklFY05BQXRCc1A4VElBWkJLR3NpQUVGNElBSnJRUWR4SWdGcklnUTJBZ0JCdlA4VElBRWdBbW9pQVRZQ0FDQUJJQVJCQVhJMkFnUWdBQ0FDYWtFb05nSUVRY0QvRTBHTWd4UW9BZ0EyQWdBTUJBc2dBaUFEVFEwQ0lBRWdBMHNOQWlBQUtBSU1RUWh4RFFJZ0FDQUVJQVpxTmdJRVFiei9FeUFEUVhnZ0EydEJCM0VpQUdvaUFUWUNBRUd3L3hOQnNQOFRLQUlBSUFacUlnSWdBR3NpQURZQ0FDQUJJQUJCQVhJMkFnUWdBaUFEYWtFb05nSUVRY0QvRTBHTWd4UW9BZ0EyQWdBTUF3dEJBQ0VFREFvTFFRQWhBZ3dJQzBHMC94TW9BZ0FnQWtzRVFFRzAveE1nQWpZQ0FBc2dBaUFHYWlFQlFlU0NGQ0VBQWtBQ1FBSkFBMEFnQVNBQUtBSUFSd1JBSUFBb0FnZ2lBQTBCREFJTEN5QUFMUUFNUVFoeFJRMEJDMEhrZ2hRaEFBTkFJQU1nQUNnQ0FDSUJUd1JBSUFFZ0FDZ0NCR29pQkNBRFN3MERDeUFBS0FJSUlRQU1BQXNBQ3lBQUlBSTJBZ0FnQUNBQUtBSUVJQVpxTmdJRUlBSkJlQ0FDYTBFSGNXb2lCeUFGUVFOeU5nSUVJQUZCZUNBQmEwRUhjV29pQmlBRklBZHFJZ1ZySVFBZ0F5QUdSZ1JBUWJ6L0V5QUZOZ0lBUWJEL0UwR3cveE1vQWdBZ0FHb2lBRFlDQUNBRklBQkJBWEkyQWdRTUNBdEJ1UDhUS0FJQUlBWkdCRUJCdVA4VElBVTJBZ0JCclA4VFFhei9FeWdDQUNBQWFpSUFOZ0lBSUFVZ0FFRUJjallDQkNBQUlBVnFJQUEyQWdBTUNBc2dCaWdDQkNJRFFRTnhRUUZIRFFZZ0EwRjRjU0VKSUFOQi93Rk5CRUFnQmlnQ0RDSUJJQVlvQWdnaUFrWUVRRUdrL3hOQnBQOFRLQUlBUVg0Z0EwRURkbmR4TmdJQURBY0xJQUlnQVRZQ0RDQUJJQUkyQWdnTUJnc2dCaWdDR0NFSUlBWWdCaWdDRENJQ1J3UkFJQVlvQWdnaUFTQUNOZ0lNSUFJZ0FUWUNDQXdGQ3lBR1FSUnFJZ0VvQWdBaUEwVUVRQ0FHS0FJUUlnTkZEUVFnQmtFUWFpRUJDd05BSUFFaEJDQURJZ0pCRkdvaUFTZ0NBQ0lERFFBZ0FrRVFhaUVCSUFJb0FoQWlBdzBBQ3lBRVFRQTJBZ0FNQkF0QnNQOFRJQVpCS0dzaUFFRjRJQUpyUVFkeElnRnJJZ2cyQWdCQnZQOFRJQUVnQW1vaUFUWUNBQ0FCSUFoQkFYSTJBZ1FnQUNBQ2FrRW9OZ0lFUWNEL0UwR01neFFvQWdBMkFnQWdBeUFFUVNjZ0JHdEJCM0ZxUVM5cklnQWdBQ0FEUVJCcVNSc2lBVUViTmdJRUlBRkI3SUlVS1FJQU53SVFJQUZCNUlJVUtRSUFOd0lJUWV5Q0ZDQUJRUWhxTmdJQVFlaUNGQ0FHTmdJQVFlU0NGQ0FDTmdJQVFmQ0NGRUVBTmdJQUlBRkJHR29oQUFOQUlBQkJCellDQkNBQVFRaHFJUUlnQUVFRWFpRUFJQUlnQkVrTkFBc2dBU0FEUmcwQUlBRWdBU2dDQkVGK2NUWUNCQ0FESUFFZ0Eyc2lBa0VCY2pZQ0JDQUJJQUkyQWdBZ0FrSC9BVTBFUUNBQ1FYaHhRY3ovRTJvaEFBSi9RYVQvRXlnQ0FDSUJRUUVnQWtFRGRuUWlBbkZGQkVCQnBQOFRJQUVnQW5JMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0F6WUNDQ0FCSUFNMkFnd2dBeUFBTmdJTUlBTWdBVFlDQ0F3QkMwRWZJUUFnQWtILy8vOEhUUVJBSUFKQkppQUNRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0F5QUFOZ0ljSUFOQ0FEY0NFQ0FBUVFKMFFkU0JGR29oQVFKQUFrQkJxUDhUS0FJQUlnUkJBU0FBZENJR2NVVUVRRUdvL3hNZ0JDQUdjallDQUNBQklBTTJBZ0FNQVFzZ0FrRVpJQUJCQVhaclFRQWdBRUVmUnh0MElRQWdBU2dDQUNFRUEwQWdCQ0lCS0FJRVFYaHhJQUpHRFFJZ0FFRWRkaUVFSUFCQkFYUWhBQ0FCSUFSQkJIRnFJZ1lvQWhBaUJBMEFDeUFHSUFNMkFoQUxJQU1nQVRZQ0dDQURJQU0yQWd3Z0F5QUROZ0lJREFFTElBRW9BZ2dpQUNBRE5nSU1JQUVnQXpZQ0NDQURRUUEyQWhnZ0F5QUJOZ0lNSUFNZ0FEWUNDQXRCc1A4VEtBSUFJZ0FnQlUwTkFFR3cveE1nQUNBRmF5SUJOZ0lBUWJ6L0UwRzgveE1vQWdBaUFDQUZhaUlDTmdJQUlBSWdBVUVCY2pZQ0JDQUFJQVZCQTNJMkFnUWdBRUVJYWlFQURBZ0xRYUQvRTBFd05nSUFRUUFoQUF3SEMwRUFJUUlMSUFoRkRRQUNRQ0FHS0FJY0lnRkJBblJCMUlFVWFpSUVLQUlBSUFaR0JFQWdCQ0FDTmdJQUlBSU5BVUdvL3hOQnFQOFRLQUlBUVg0Z0FYZHhOZ0lBREFJTElBaEJFRUVVSUFnb0FoQWdCa1liYWlBQ05nSUFJQUpGRFFFTElBSWdDRFlDR0NBR0tBSVFJZ0VFUUNBQ0lBRTJBaEFnQVNBQ05nSVlDeUFHS0FJVUlnRkZEUUFnQWlBQk5nSVVJQUVnQWpZQ0dBc2dBQ0FKYWlFQUlBWWdDV29pQmlnQ0JDRURDeUFHSUFOQmZuRTJBZ1FnQlNBQVFRRnlOZ0lFSUFBZ0JXb2dBRFlDQUNBQVFmOEJUUVJBSUFCQmVIRkJ6UDhUYWlFQkFuOUJwUDhUS0FJQUlnSkJBU0FBUVFOMmRDSUFjVVVFUUVHay94TWdBQ0FDY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBRk5nSUlJQUFnQlRZQ0RDQUZJQUUyQWd3Z0JTQUFOZ0lJREFFTFFSOGhBeUFBUWYvLy93ZE5CRUFnQUVFbUlBQkJDSFpuSWdGcmRrRUJjU0FCUVFGMGEwRSthaUVEQ3lBRklBTTJBaHdnQlVJQU53SVFJQU5CQW5SQjFJRVVhaUVCQWtBQ1FFR28veE1vQWdBaUFrRUJJQU4wSWdSeFJRUkFRYWovRXlBQ0lBUnlOZ0lBSUFFZ0JUWUNBQXdCQ3lBQVFSa2dBMEVCZG10QkFDQURRUjlIRzNRaEF5QUJLQUlBSVFJRFFDQUNJZ0VvQWdSQmVIRWdBRVlOQWlBRFFSMTJJUUlnQTBFQmRDRURJQUVnQWtFRWNXb2lCQ2dDRUNJQ0RRQUxJQVFnQlRZQ0VBc2dCU0FCTmdJWUlBVWdCVFlDRENBRklBVTJBZ2dNQVFzZ0FTZ0NDQ0lBSUFVMkFnd2dBU0FGTmdJSUlBVkJBRFlDR0NBRklBRTJBZ3dnQlNBQU5nSUlDeUFIUVFocUlRQU1BZ3NDUUNBSFJRMEFBa0FnQkNnQ0hDSUFRUUowUWRTQkZHb2lBU2dDQUNBRVJnUkFJQUVnQWpZQ0FDQUNEUUZCcVA4VElBaEJmaUFBZDNFaUNEWUNBQXdDQ3lBSFFSQkJGQ0FIS0FJUUlBUkdHMm9nQWpZQ0FDQUNSUTBCQ3lBQ0lBYzJBaGdnQkNnQ0VDSUFCRUFnQWlBQU5nSVFJQUFnQWpZQ0dBc2dCQ2dDRkNJQVJRMEFJQUlnQURZQ0ZDQUFJQUkyQWhnTEFrQWdBMEVQVFFSQUlBUWdBeUFGYWlJQVFRTnlOZ0lFSUFBZ0JHb2lBQ0FBS0FJRVFRRnlOZ0lFREFFTElBUWdCVUVEY2pZQ0JDQUVJQVZxSWdJZ0EwRUJjallDQkNBQ0lBTnFJQU0yQWdBZ0EwSC9BVTBFUUNBRFFYaHhRY3ovRTJvaEFBSi9RYVQvRXlnQ0FDSUJRUUVnQTBFRGRuUWlBM0ZGQkVCQnBQOFRJQUVnQTNJMkFnQWdBQXdCQ3lBQUtBSUlDeUVCSUFBZ0FqWUNDQ0FCSUFJMkFnd2dBaUFBTmdJTUlBSWdBVFlDQ0F3QkMwRWZJUUFnQTBILy8vOEhUUVJBSUFOQkppQURRUWgyWnlJQWEzWkJBWEVnQUVFQmRHdEJQbW9oQUFzZ0FpQUFOZ0ljSUFKQ0FEY0NFQ0FBUVFKMFFkU0JGR29oQVFKQUFrQWdDRUVCSUFCMElnWnhSUVJBUWFqL0V5QUdJQWh5TmdJQUlBRWdBallDQUF3QkN5QURRUmtnQUVFQmRtdEJBQ0FBUVI5SEczUWhBQ0FCS0FJQUlRVURRQ0FGSWdFb0FnUkJlSEVnQTBZTkFpQUFRUjEySVFZZ0FFRUJkQ0VBSUFFZ0JrRUVjV29pQmlnQ0VDSUZEUUFMSUFZZ0FqWUNFQXNnQWlBQk5nSVlJQUlnQWpZQ0RDQUNJQUkyQWdnTUFRc2dBU2dDQ0NJQUlBSTJBZ3dnQVNBQ05nSUlJQUpCQURZQ0dDQUNJQUUyQWd3Z0FpQUFOZ0lJQ3lBRVFRaHFJUUFNQVFzQ1FDQUpSUTBBQWtBZ0FpZ0NIQ0lBUVFKMFFkU0JGR29pQVNnQ0FDQUNSZ1JBSUFFZ0JEWUNBQ0FFRFFGQnFQOFRJQXRCZmlBQWQzRTJBZ0FNQWdzZ0NVRVFRUlFnQ1NnQ0VDQUNSaHRxSUFRMkFnQWdCRVVOQVFzZ0JDQUpOZ0lZSUFJb0FoQWlBQVJBSUFRZ0FEWUNFQ0FBSUFRMkFoZ0xJQUlvQWhRaUFFVU5BQ0FFSUFBMkFoUWdBQ0FFTmdJWUN3SkFJQU5CRDAwRVFDQUNJQU1nQldvaUFFRURjallDQkNBQUlBSnFJZ0FnQUNnQ0JFRUJjallDQkF3QkN5QUNJQVZCQTNJMkFnUWdBaUFGYWlJRUlBTkJBWEkyQWdRZ0F5QUVhaUFETmdJQUlBY0VRQ0FIUVhoeFFjei9FMm9oQUVHNC94TW9BZ0FoQVFKL1FRRWdCMEVEZG5RaUJTQUdjVVVFUUVHay94TWdCU0FHY2pZQ0FDQUFEQUVMSUFBb0FnZ0xJUVlnQUNBQk5nSUlJQVlnQVRZQ0RDQUJJQUEyQWd3Z0FTQUdOZ0lJQzBHNC94TWdCRFlDQUVHcy94TWdBellDQUFzZ0FrRUlhaUVBQ3lBS1FSQnFKQUFnQUF2MUN3RUhmd0pBSUFCRkRRQWdBRUVJYXlJQ0lBQkJCR3NvQWdBaUFVRjRjU0lBYWlFRkFrQWdBVUVCY1EwQUlBRkJBM0ZGRFFFZ0FpQUNLQUlBSWdGcklnSkJ0UDhUS0FJQVNRMEJJQUFnQVdvaEFBSkFBa0JCdVA4VEtBSUFJQUpIQkVBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQWlnQ0RDSUJJQUlvQWdnaUEwWUVRRUdrL3hOQnBQOFRLQUlBUVg0Z0JIZHhOZ0lBREFVTElBTWdBVFlDRENBQklBTTJBZ2dNQkFzZ0FpZ0NHQ0VHSUFJZ0FpZ0NEQ0lCUndSQUlBSW9BZ2dpQXlBQk5nSU1JQUVnQXpZQ0NBd0RDeUFDUVJScUlnUW9BZ0FpQTBVRVFDQUNLQUlRSWdORkRRSWdBa0VRYWlFRUN3TkFJQVFoQnlBRElnRkJGR29pQkNnQ0FDSUREUUFnQVVFUWFpRUVJQUVvQWhBaUF3MEFDeUFIUVFBMkFnQU1BZ3NnQlNnQ0JDSUJRUU54UVFOSERRSkJyUDhUSUFBMkFnQWdCU0FCUVg1eE5nSUVJQUlnQUVFQmNqWUNCQ0FGSUFBMkFnQVBDMEVBSVFFTElBWkZEUUFDUUNBQ0tBSWNJZ05CQW5SQjFJRVVhaUlFS0FJQUlBSkdCRUFnQkNBQk5nSUFJQUVOQVVHby94TkJxUDhUS0FJQVFYNGdBM2R4TmdJQURBSUxJQVpCRUVFVUlBWW9BaEFnQWtZYmFpQUJOZ0lBSUFGRkRRRUxJQUVnQmpZQ0dDQUNLQUlRSWdNRVFDQUJJQU0yQWhBZ0F5QUJOZ0lZQ3lBQ0tBSVVJZ05GRFFBZ0FTQUROZ0lVSUFNZ0FUWUNHQXNnQWlBRlR3MEFJQVVvQWdRaUFVRUJjVVVOQUFKQUFrQUNRQUpBSUFGQkFuRkZCRUJCdlA4VEtBSUFJQVZHQkVCQnZQOFRJQUkyQWdCQnNQOFRRYkQvRXlnQ0FDQUFhaUlBTmdJQUlBSWdBRUVCY2pZQ0JDQUNRYmovRXlnQ0FFY05Ca0dzL3hOQkFEWUNBRUc0L3hOQkFEWUNBQThMUWJqL0V5Z0NBQ0FGUmdSQVFiai9FeUFDTmdJQVFhei9FMEdzL3hNb0FnQWdBR29pQURZQ0FDQUNJQUJCQVhJMkFnUWdBQ0FDYWlBQU5nSUFEd3NnQVVGNGNTQUFhaUVBSUFGQi93Rk5CRUFnQVVFRGRpRUVJQVVvQWd3aUFTQUZLQUlJSWdOR0JFQkJwUDhUUWFUL0V5Z0NBRUYrSUFSM2NUWUNBQXdGQ3lBRElBRTJBZ3dnQVNBRE5nSUlEQVFMSUFVb0FoZ2hCaUFGSUFVb0Fnd2lBVWNFUUVHMC94TW9BZ0FhSUFVb0FnZ2lBeUFCTmdJTUlBRWdBellDQ0F3REN5QUZRUlJxSWdRb0FnQWlBMFVFUUNBRktBSVFJZ05GRFFJZ0JVRVFhaUVFQ3dOQUlBUWhCeUFESWdGQkZHb2lCQ2dDQUNJRERRQWdBVUVRYWlFRUlBRW9BaEFpQXcwQUN5QUhRUUEyQWdBTUFnc2dCU0FCUVg1eE5nSUVJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FNQXd0QkFDRUJDeUFHUlEwQUFrQWdCU2dDSENJRFFRSjBRZFNCRkdvaUJDZ0NBQ0FGUmdSQUlBUWdBVFlDQUNBQkRRRkJxUDhUUWFqL0V5Z0NBRUYrSUFOM2NUWUNBQXdDQ3lBR1FSQkJGQ0FHS0FJUUlBVkdHMm9nQVRZQ0FDQUJSUTBCQ3lBQklBWTJBaGdnQlNnQ0VDSURCRUFnQVNBRE5nSVFJQU1nQVRZQ0dBc2dCU2dDRkNJRFJRMEFJQUVnQXpZQ0ZDQURJQUUyQWhnTElBSWdBRUVCY2pZQ0JDQUFJQUpxSUFBMkFnQWdBa0c0L3hNb0FnQkhEUUJCclA4VElBQTJBZ0FQQ3lBQVFmOEJUUVJBSUFCQmVIRkJ6UDhUYWlFQkFuOUJwUDhUS0FJQUlnTkJBU0FBUVFOMmRDSUFjVVVFUUVHay94TWdBQ0FEY2pZQ0FDQUJEQUVMSUFFb0FnZ0xJUUFnQVNBQ05nSUlJQUFnQWpZQ0RDQUNJQUUyQWd3Z0FpQUFOZ0lJRHd0Qkh5RURJQUJCLy8vL0IwMEVRQ0FBUVNZZ0FFRUlkbWNpQVd0MlFRRnhJQUZCQVhSclFUNXFJUU1MSUFJZ0F6WUNIQ0FDUWdBM0FoQWdBMEVDZEVIVWdSUnFJUUVDUUFKQUFrQkJxUDhUS0FJQUlnUkJBU0FEZENJSGNVVUVRRUdvL3hNZ0JDQUhjallDQUNBQklBSTJBZ0FnQWlBQk5nSVlEQUVMSUFCQkdTQURRUUYyYTBFQUlBTkJIMGNiZENFRElBRW9BZ0FoQVFOQUlBRWlCQ2dDQkVGNGNTQUFSZzBDSUFOQkhYWWhBU0FEUVFGMElRTWdCQ0FCUVFSeGFpSUhRUkJxS0FJQUlnRU5BQXNnQnlBQ05nSVFJQUlnQkRZQ0dBc2dBaUFDTmdJTUlBSWdBallDQ0F3QkN5QUVLQUlJSWdBZ0FqWUNEQ0FFSUFJMkFnZ2dBa0VBTmdJWUlBSWdCRFlDRENBQ0lBQTJBZ2dMUWNUL0UwSEUveE1vQWdCQkFXc2lBRUYvSUFBYk5nSUFDd3VJQ0FFTGZ5QUFSUVJBSUFFUU13OExJQUZCUUU4RVFFR2cveE5CTURZQ0FFRUFEd3NDZjBFUUlBRkJDMnBCZUhFZ0FVRUxTUnNoQlNBQVFRaHJJZ1FvQWdRaUNFRjRjU0VEQWtBZ0NFRURjVVVFUUVFQUlBVkJnQUpKRFFJYUlBVkJCR29nQTAwRVFDQUVJUUlnQXlBRmEwR0VneFFvQWdCQkFYUk5EUUlMUVFBTUFnc2dBeUFFYWlFR0FrQWdBeUFGVHdSQUlBTWdCV3NpQWtFUVNRMEJJQVFnQ0VFQmNTQUZja0VDY2pZQ0JDQUVJQVZxSWdNZ0FrRURjallDQkNBR0lBWW9BZ1JCQVhJMkFnUWdBeUFDRURZTUFRdEJ2UDhUS0FJQUlBWkdCRUJCc1A4VEtBSUFJQU5xSWdNZ0JVME5BaUFFSUFoQkFYRWdCWEpCQW5JMkFnUWdCQ0FGYWlJQ0lBTWdCV3NpQTBFQmNqWUNCRUd3L3hNZ0F6WUNBRUc4L3hNZ0FqWUNBQXdCQzBHNC94TW9BZ0FnQmtZRVFFR3MveE1vQWdBZ0Eyb2lBeUFGU1EwQ0FrQWdBeUFGYXlJQ1FSQlBCRUFnQkNBSVFRRnhJQVZ5UVFKeU5nSUVJQVFnQldvaUJ5QUNRUUZ5TmdJRUlBTWdCR29pQXlBQ05nSUFJQU1nQXlnQ0JFRitjVFlDQkF3QkN5QUVJQWhCQVhFZ0EzSkJBbkkyQWdRZ0F5QUVhaUlDSUFJb0FnUkJBWEkyQWdSQkFDRUNDMEc0L3hNZ0J6WUNBRUdzL3hNZ0FqWUNBQXdCQ3lBR0tBSUVJZ2RCQW5FTkFTQUhRWGh4SUFOcUlna2dCVWtOQVNBSklBVnJJUXNDUUNBSFFmOEJUUVJBSUFZb0Fnd2lBaUFHS0FJSUlnTkdCRUJCcFA4VFFhVC9FeWdDQUVGK0lBZEJBM1ozY1RZQ0FBd0NDeUFESUFJMkFnd2dBaUFETmdJSURBRUxJQVlvQWhnaENnSkFJQVlnQmlnQ0RDSURSd1JBUWJUL0V5Z0NBQm9nQmlnQ0NDSUNJQU0yQWd3Z0F5QUNOZ0lJREFFTEFrQWdCa0VVYWlJQ0tBSUFJZ2RGQkVBZ0JpZ0NFQ0lIUlEwQklBWkJFR29oQWdzRFFDQUNJUXdnQnlJRFFSUnFJZ0lvQWdBaUJ3MEFJQU5CRUdvaEFpQURLQUlRSWdjTkFBc2dERUVBTmdJQURBRUxRUUFoQXdzZ0NrVU5BQUpBSUFZb0Fod2lBa0VDZEVIVWdSUnFJZ2NvQWdBZ0JrWUVRQ0FISUFNMkFnQWdBdzBCUWFqL0UwR28veE1vQWdCQmZpQUNkM0UyQWdBTUFnc2dDa0VRUVJRZ0NpZ0NFQ0FHUmh0cUlBTTJBZ0FnQTBVTkFRc2dBeUFLTmdJWUlBWW9BaEFpQWdSQUlBTWdBallDRUNBQ0lBTTJBaGdMSUFZb0FoUWlBa1VOQUNBRElBSTJBaFFnQWlBRE5nSVlDeUFMUVE5TkJFQWdCQ0FJUVFGeElBbHlRUUp5TmdJRUlBUWdDV29pQWlBQ0tBSUVRUUZ5TmdJRURBRUxJQVFnQ0VFQmNTQUZja0VDY2pZQ0JDQUVJQVZxSWdJZ0MwRURjallDQkNBRUlBbHFJZ01nQXlnQ0JFRUJjallDQkNBQ0lBc1FOZ3NnQkNFQ0N5QUNDeUlDQkVBZ0FrRUlhZzhMSUFFUU15SUNSUVJBUVFBUEN5QUNJQUJCZkVGNElBQkJCR3NvQWdBaUJFRURjUnNnQkVGNGNXb2lCQ0FCSUFFZ0JFc2JFQ3NhSUFBUU5DQUNDN1lMQVFaL0lBQWdBV29oQlFKQUFrQWdBQ2dDQkNJQ1FRRnhEUUFnQWtFRGNVVU5BU0FBS0FJQUlnSWdBV29oQVFKQUFrQUNRQ0FBSUFKcklnQkJ1UDhUS0FJQVJ3UkFJQUpCL3dGTkJFQWdBa0VEZGlFRUlBQW9BZ2dpQXlBQUtBSU1JZ0pIRFFKQnBQOFRRYVQvRXlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFBS0FJWUlRWWdBQ0FBS0FJTUlnSkhCRUJCdFA4VEtBSUFHaUFBS0FJSUlnTWdBallDRENBQ0lBTTJBZ2dNQkFzZ0FFRVVhaUlFS0FJQUlnTkZCRUFnQUNnQ0VDSURSUTBESUFCQkVHb2hCQXNEUUNBRUlRY2dBeUlDUVJScUlnUW9BZ0FpQXcwQUlBSkJFR29oQkNBQ0tBSVFJZ01OQUFzZ0IwRUFOZ0lBREFNTElBVW9BZ1FpQWtFRGNVRURSdzBEUWF6L0V5QUJOZ0lBSUFVZ0FrRitjVFlDQkNBQUlBRkJBWEkyQWdRZ0JTQUJOZ0lBRHdzZ0F5QUNOZ0lNSUFJZ0F6WUNDQXdDQzBFQUlRSUxJQVpGRFFBQ1FDQUFLQUljSWdOQkFuUkIxSUVVYWlJRUtBSUFJQUJHQkVBZ0JDQUNOZ0lBSUFJTkFVR28veE5CcVA4VEtBSUFRWDRnQTNkeE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0FFWWJhaUFDTmdJQUlBSkZEUUVMSUFJZ0JqWUNHQ0FBS0FJUUlnTUVRQ0FDSUFNMkFoQWdBeUFDTmdJWUN5QUFLQUlVSWdORkRRQWdBaUFETmdJVUlBTWdBallDR0FzQ1FBSkFBa0FDUUNBRktBSUVJZ0pCQW5GRkJFQkJ2UDhUS0FJQUlBVkdCRUJCdlA4VElBQTJBZ0JCc1A4VFFiRC9FeWdDQUNBQmFpSUJOZ0lBSUFBZ0FVRUJjallDQkNBQVFiai9FeWdDQUVjTkJrR3MveE5CQURZQ0FFRzQveE5CQURZQ0FBOExRYmovRXlnQ0FDQUZSZ1JBUWJqL0V5QUFOZ0lBUWF6L0UwR3MveE1vQWdBZ0FXb2lBVFlDQUNBQUlBRkJBWEkyQWdRZ0FDQUJhaUFCTmdJQUR3c2dBa0Y0Y1NBQmFpRUJJQUpCL3dGTkJFQWdBa0VEZGlFRUlBVW9BZ3dpQWlBRktBSUlJZ05HQkVCQnBQOFRRYVQvRXlnQ0FFRitJQVIzY1RZQ0FBd0ZDeUFESUFJMkFnd2dBaUFETmdJSURBUUxJQVVvQWhnaEJpQUZJQVVvQWd3aUFrY0VRRUcwL3hNb0FnQWFJQVVvQWdnaUF5QUNOZ0lNSUFJZ0F6WUNDQXdEQ3lBRlFSUnFJZ1FvQWdBaUEwVUVRQ0FGS0FJUUlnTkZEUUlnQlVFUWFpRUVDd05BSUFRaEJ5QURJZ0pCRkdvaUJDZ0NBQ0lERFFBZ0FrRVFhaUVFSUFJb0FoQWlBdzBBQ3lBSFFRQTJBZ0FNQWdzZ0JTQUNRWDV4TmdJRUlBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQU1Bd3RCQUNFQ0N5QUdSUTBBQWtBZ0JTZ0NIQ0lEUVFKMFFkU0JGR29pQkNnQ0FDQUZSZ1JBSUFRZ0FqWUNBQ0FDRFFGQnFQOFRRYWovRXlnQ0FFRitJQU4zY1RZQ0FBd0NDeUFHUVJCQkZDQUdLQUlRSUFWR0cyb2dBallDQUNBQ1JRMEJDeUFDSUFZMkFoZ2dCU2dDRUNJREJFQWdBaUFETmdJUUlBTWdBallDR0FzZ0JTZ0NGQ0lEUlEwQUlBSWdBellDRkNBRElBSTJBaGdMSUFBZ0FVRUJjallDQkNBQUlBRnFJQUUyQWdBZ0FFRzQveE1vQWdCSERRQkJyUDhUSUFFMkFnQVBDeUFCUWY4QlRRUkFJQUZCZUhGQnpQOFRhaUVDQW45QnBQOFRLQUlBSWdOQkFTQUJRUU4yZENJQmNVVUVRRUdrL3hNZ0FTQURjallDQUNBQ0RBRUxJQUlvQWdnTElRRWdBaUFBTmdJSUlBRWdBRFlDRENBQUlBSTJBZ3dnQUNBQk5nSUlEd3RCSHlFRElBRkIvLy8vQjAwRVFDQUJRU1lnQVVFSWRtY2lBbXQyUVFGeElBSkJBWFJyUVQ1cUlRTUxJQUFnQXpZQ0hDQUFRZ0EzQWhBZ0EwRUNkRUhVZ1JScUlRSUNRQUpBUWFqL0V5Z0NBQ0lFUVFFZ0EzUWlCM0ZGQkVCQnFQOFRJQVFnQjNJMkFnQWdBaUFBTmdJQUlBQWdBallDR0F3QkN5QUJRUmtnQTBFQmRtdEJBQ0FEUVI5SEczUWhBeUFDS0FJQUlRSURRQ0FDSWdRb0FnUkJlSEVnQVVZTkFpQURRUjEySVFJZ0EwRUJkQ0VESUFRZ0FrRUVjV29pQjBFUWFpZ0NBQ0lDRFFBTElBY2dBRFlDRUNBQUlBUTJBaGdMSUFBZ0FEWUNEQ0FBSUFBMkFnZ1BDeUFFS0FJSUlnRWdBRFlDRENBRUlBQTJBZ2dnQUVFQU5nSVlJQUFnQkRZQ0RDQUFJQUUyQWdnTEM5c0JBZ0YvQW41QkFTRUVBa0FnQUVJQVVpQUJRdi8vLy8vLy8vLy8vd0NESWdWQ2dJQ0FnSUNBd1AvL0FGWWdCVUtBZ0lDQWdJREEvLzhBVVJzTkFDQUNRZ0JTSUFOQy8vLy8vLy8vLy8vL0FJTWlCa0tBZ0lDQWdJREEvLzhBVmlBR1FvQ0FnSUNBZ01ELy93QlJHdzBBSUFBZ0FvUWdCU0FHaElSUUJFQkJBQThMSUFFZ0E0TkNBRmtFUUVGL0lRUWdBQ0FDVkNBQklBTlRJQUVnQTFFYkRRRWdBQ0FDaFNBQklBT0ZoRUlBVWc4TFFYOGhCQ0FBSUFKV0lBRWdBMVVnQVNBRFVSc05BQ0FBSUFLRklBRWdBNFdFUWdCU0lRUUxJQVFMd0FFQ0FYOENma0YvSVFNQ1FDQUFRZ0JTSUFGQy8vLy8vLy8vLy8vL0FJTWlCRUtBZ0lDQWdJREEvLzhBVmlBRVFvQ0FnSUNBZ01ELy93QlJHdzBBSUFKQy8vLy8vLy8vLy8vL0FJTWlCVUtBZ0lDQWdJREEvLzhBVmlBRlFvQ0FnSUNBZ01ELy93QlNjUTBBSUFBZ0JDQUZoSVJRQkVCQkFBOExJQUVnQW9OQ0FGa0VRQ0FCSUFKU0lBRWdBbE54RFFFZ0FDQUJJQUtGaEVJQVVnOExJQUJDQUZJZ0FTQUNWU0FCSUFKUkd3MEFJQUFnQVNBQ2hZUkNBRkloQXdzZ0F3dFFBUUYrQWtBZ0EwSEFBSEVFUUNBQklBTkJRR3F0aGlFQ1FnQWhBUXdCQ3lBRFJRMEFJQUlnQTYwaUJJWWdBVUhBQUNBRGE2MkloQ0VDSUFFZ0JJWWhBUXNnQUNBQk53TUFJQUFnQWpjRENBdXBEd0lGZnc5K0l3QkIwQUpySWdVa0FDQUVRdi8vLy8vLy96K0RJUXNnQWtMLy8vLy8vLzgvZ3lFS0lBSWdCSVZDZ0lDQWdJQ0FnSUNBZjRNaERTQUVRakNJcDBILy93RnhJUWdDUUFKQUlBSkNNSWluUWYvL0FYRWlDVUgvL3dGclFZS0FmazhFUUNBSVFmLy9BV3RCZ1lCK1N3MEJDeUFCVUNBQ1F2Ly8vLy8vLy8vLy93Q0RJZ3hDZ0lDQWdJQ0F3UC8vQUZRZ0RFS0FnSUNBZ0lEQS8vOEFVUnRGQkVBZ0FrS0FnSUNBZ0lBZ2hDRU5EQUlMSUFOUUlBUkMvLy8vLy8vLy8vLy9BSU1pQWtLQWdJQ0FnSURBLy84QVZDQUNRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUVRb0NBZ0lDQWdDQ0VJUTBnQXlFQkRBSUxJQUVnREVLQWdJQ0FnSURBLy84QWhZUlFCRUFnQXlBQ1FvQ0FnSUNBZ01ELy93Q0ZoRkFFUUVJQUlRRkNnSUNBZ0lDQTRQLy9BQ0VOREFNTElBMUNnSUNBZ0lDQXdQLy9BSVFoRFVJQUlRRU1BZ3NnQXlBQ1FvQ0FnSUNBZ01ELy93Q0ZoRkFFUUVJQUlRRU1BZ3NnQVNBTWhGQUVRRUtBZ0lDQWdJRGcvLzhBSUEwZ0FpQURoRkFiSVExQ0FDRUJEQUlMSUFJZ0E0UlFCRUFnRFVLQWdJQ0FnSURBLy84QWhDRU5RZ0FoQVF3Q0N5QU1Rdi8vLy8vLy96OVlCRUFnQlVIQUFtb2dBU0FLSUFFZ0NpQUtVQ0lHRzNrZ0JrRUdkSzE4cHlJR1FROXJFRGxCRUNBR2F5RUdJQVVwQThnQ0lRb2dCU2tEd0FJaEFRc2dBa0wvLy8vLy8vOC9WZzBBSUFWQnNBSnFJQU1nQ3lBRElBc2dDMUFpQnh0NUlBZEJCblN0ZktjaUIwRVBheEE1SUFZZ0IycEJFR3NoQmlBRktRTzRBaUVMSUFVcEE3QUNJUU1MSUFWQm9BSnFJQXRDZ0lDQWdJQ0F3QUNFSWhKQ0Q0WWdBMEl4aUlRaUFrSUFRb0NBZ0lDdzVyeUM5UUFnQW4waUJFSUFFRDBnQlVHUUFtcENBQ0FGS1FPb0FuMUNBQ0FFUWdBUVBTQUZRWUFDYWlBRktRT1lBa0lCaGlBRktRT1FBa0kvaUlRaUJFSUFJQUpDQUJBOUlBVkI4QUZxSUFSQ0FFSUFJQVVwQTRnQ2ZVSUFFRDBnQlVIZ0FXb2dCU2tEK0FGQ0FZWWdCU2tEOEFGQ1A0aUVJZ1JDQUNBQ1FnQVFQU0FGUWRBQmFpQUVRZ0JDQUNBRktRUG9BWDFDQUJBOUlBVkJ3QUZxSUFVcEE5Z0JRZ0dHSUFVcEE5QUJRaitJaENJRVFnQWdBa0lBRUQwZ0JVR3dBV29nQkVJQVFnQWdCU2tEeUFGOVFnQVFQU0FGUWFBQmFpQUNRZ0FnQlNrRHVBRkNBWVlnQlNrRHNBRkNQNGlFUWdGOUlnSkNBQkE5SUFWQmtBRnFJQU5DRDRaQ0FDQUNRZ0FRUFNBRlFmQUFhaUFDUWdCQ0FDQUZLUU9vQVNBRktRT2dBU0lNSUFVcEE1Z0JmQ0lFSUF4VXJYd2dCRUlCVnExOGZVSUFFRDBnQlVHQUFXcENBU0FFZlVJQUlBSkNBQkE5SUFZZ0NTQUlhMm9oQmdKL0lBVXBBM0FpRTBJQmhpSU9JQVVwQTRnQklnOUNBWVlnQlNrRGdBRkNQNGlFZkNJUVF1ZnNBSDBpRkVJZ2lDSUNJQXBDZ0lDQWdJQ0F3QUNFSWhWQ0FZWWlGa0lnaUNJRWZpSVJJQUZDQVlZaURFSWdpQ0lMSUJBZ0ZGYXRJQTRnRUZhdElBVXBBM2hDQVlZZ0UwSS9pSVFnRDBJL2lIeDhmRUlCZlNJVFFpQ0lJaEIrZkNJT0lCRlVyU0FPSUE0Z0UwTC8vLy8vRDRNaUV5QUJRaitJSWhjZ0NrSUJob1JDLy8vLy93K0RJZ3ArZkNJT1ZxMThJQVFnRUg1OElBUWdFMzRpRVNBS0lCQitmQ0lQSUJGVXJVSWdoaUFQUWlDSWhId2dEaUFPSUE5Q0lJWjhJZzVXclh3Z0RpQU9JQlJDLy8vLy93K0RJaFFnQ240aUVTQUNJQXQrZkNJUElCRlVyU0FQSUE4Z0V5QU1RdjcvLy84UGd5SVJmbndpRDFhdGZId2lEbGF0ZkNBT0lBUWdGSDRpR0NBUUlCRitmQ0lFSUFJZ0NuNThJZ29nQ3lBVGZud2lFRUlnaUNBS0lCQldyU0FFSUJoVXJTQUVJQXBXclh4OFFpQ0doSHdpQkNBT1ZLMThJQVFnRHlBQ0lCRitJZ0lnQ3lBVWZud2lDMElnaUNBQ0lBdFdyVUlnaG9SOElnSWdEMVN0SUFJZ0VFSWdobndnQWxTdGZId2lBaUFFVksxOElnUkMvLy8vLy8vLy93QllCRUFnRmlBWGhDRVZJQVZCMEFCcUlBSWdCQ0FESUJJUVBTQUJRakdHSUFVcEExaDlJQVVwQTFBaUFVSUFVcTE5SVFwQ0FDQUJmU0VMSUFaQi92OEFhZ3dCQ3lBRlFlQUFhaUFFUWorR0lBSkNBWWlFSWdJZ0JFSUJpQ0lFSUFNZ0VoQTlJQUZDTUlZZ0JTa0RhSDBnQlNrRFlDSU1RZ0JTclgwaENrSUFJQXg5SVFzZ0FTRU1JQVpCLy84QWFnc2lCa0gvL3dGT0JFQWdEVUtBZ0lDQWdJREEvLzhBaENFTlFnQWhBUXdCQ3dKK0lBWkJBRW9FUUNBS1FnR0dJQXRDUDRpRUlRb2dCRUwvLy8vLy8vOC9neUFHclVJd2hvUWhEQ0FMUWdHR0RBRUxJQVpCajM5TUJFQkNBQ0VCREFJTElBVkJRR3NnQWlBRVFRRWdCbXNRT3lBRlFUQnFJQXdnRlNBR1FmQUFhaEE1SUFWQklHb2dBeUFTSUFVcEEwQWlBaUFGS1FOSUlnd1FQU0FGS1FNNElBVXBBeWhDQVlZZ0JTa0RJQ0lCUWorSWhIMGdCU2tETUNJRUlBRkNBWVlpQVZTdGZTRUtJQVFnQVgwTElRUWdCVUVRYWlBRElCSkNBMElBRUQwZ0JTQURJQkpDQlVJQUVEMGdEQ0FDSUFJZ0F5QUNRZ0dESWdFZ0JId2lBMVFnQ2lBQklBTldyWHdpQVNBU1ZpQUJJQkpSRzYxOElnSldyWHdpQkNBQ0lBSWdCRUtBZ0lDQWdJREEvLzhBVkNBRElBVXBBeEJXSUFFZ0JTa0RHQ0lFVmlBQklBUlJHM0d0ZkNJQ1ZxMThJZ1FnQWlBRVFvQ0FnSUNBZ01ELy93QlVJQU1nQlNrREFGWWdBU0FGS1FNSUlnTldJQUVnQTFFYmNhMThJZ0VnQWxTdGZDQU5oQ0VOQ3lBQUlBRTNBd0FnQUNBTk53TUlJQVZCMEFKcUpBQUxVQUVCZmdKQUlBTkJ3QUJ4QkVBZ0FpQURRVUJxcllnaEFVSUFJUUlNQVFzZ0EwVU5BQ0FDUWNBQUlBTnJyWVlnQVNBRHJTSUVpSVFoQVNBQ0lBU0lJUUlMSUFBZ0FUY0RBQ0FBSUFJM0F3Z0x3d29DQlg4UGZpTUFRZUFBYXlJRkpBQWdCRUwvLy8vLy8vOC9neUVNSUFJZ0JJVkNnSUNBZ0lDQWdJQ0FmNE1oQ2lBQ1F2Ly8vLy8vL3orRElnMUNJSWdoRGlBRVFqQ0lwMEgvL3dGeElRY0NRQUpBSUFKQ01JaW5RZi8vQVhFaUNVSC8vd0ZyUVlLQWZrOEVRQ0FIUWYvL0FXdEJnWUIrU3cwQkN5QUJVQ0FDUXYvLy8vLy8vLy8vL3dDRElndENnSUNBZ0lDQXdQLy9BRlFnQzBLQWdJQ0FnSURBLy84QVVSdEZCRUFnQWtLQWdJQ0FnSUFnaENFS0RBSUxJQU5RSUFSQy8vLy8vLy8vLy8vL0FJTWlBa0tBZ0lDQWdJREEvLzhBVkNBQ1FvQ0FnSUNBZ01ELy93QlJHMFVFUUNBRVFvQ0FnSUNBZ0NDRUlRb2dBeUVCREFJTElBRWdDMEtBZ0lDQWdJREEvLzhBaFlSUUJFQWdBaUFEaEZBRVFFS0FnSUNBZ0lEZy8vOEFJUXBDQUNFQkRBTUxJQXBDZ0lDQWdJQ0F3UC8vQUlRaENrSUFJUUVNQWdzZ0F5QUNRb0NBZ0lDQWdNRC8vd0NGaEZBRVFDQUJJQXVFSVFKQ0FDRUJJQUpRQkVCQ2dJQ0FnSUNBNFAvL0FDRUtEQU1MSUFwQ2dJQ0FnSUNBd1AvL0FJUWhDZ3dDQ3lBQklBdUVVQVJBUWdBaEFRd0NDeUFDSUFPRVVBUkFRZ0FoQVF3Q0N5QUxRdi8vLy8vLy96OVlCRUFnQlVIUUFHb2dBU0FOSUFFZ0RTQU5VQ0lHRzNrZ0JrRUdkSzE4cHlJR1FROXJFRGxCRUNBR2F5RUdJQVVwQTFnaURVSWdpQ0VPSUFVcEExQWhBUXNnQWtMLy8vLy8vLzgvVmcwQUlBVkJRR3NnQXlBTUlBTWdEQ0FNVUNJSUcza2dDRUVHZEsxOHB5SUlRUTlyRURrZ0JpQUlhMEVRYWlFR0lBVXBBMGdoRENBRktRTkFJUU1MSUFOQ0Q0WWlDMEtBZ1A3L0Q0TWlBaUFCUWlDSUlnUitJaEFnQzBJZ2lDSVRJQUZDLy8vLy93K0RJZ0YrZkNJUFFpQ0dJaEVnQVNBQ2Zud2lDeUFSVkswZ0FpQU5Rdi8vLy84UGd5SU5maUlWSUFRZ0UzNThJaEVnREVJUGhpSVNJQU5DTVlpRVF2Ly8vLzhQZ3lJRElBRitmQ0lVSUE4Z0VGU3RRaUNHSUE5Q0lJaUVmQ0lQSUFJZ0RrS0FnQVNFSWd4K0loWWdEU0FUZm53aURpQVNRaUNJUW9DQWdJQUloQ0lDSUFGK2ZDSVFJQU1nQkg1OEloSkNJSVo4SWhkOElRRWdCeUFKYWlBR2FrSC8vd0JySVFZQ1FDQUNJQVIrSWhnZ0RDQVRmbndpQkNBWVZLMGdCQ0FFSUFNZ0RYNThJZ1JXclh3Z0FpQU1mbndnQkNBRUlCRWdGVlN0SUJFZ0ZGYXRmSHdpQkZhdGZDQURJQXgrSWdNZ0FpQU5mbndpQWlBRFZLMUNJSVlnQWtJZ2lJUjhJQVFnQWtJZ2hud2lBaUFFVksxOElBSWdBaUFRSUJKV3JTQU9JQlpVclNBT0lCQldyWHg4UWlDR0lCSkNJSWlFZkNJQ1ZxMThJQUlnQWlBUElCUlVyU0FQSUJkV3JYeDhJZ0pXclh3aUJFS0FnSUNBZ0lEQUFJTkNBRklFUUNBR1FRRnFJUVlNQVFzZ0MwSS9pQ0VESUFSQ0FZWWdBa0kvaUlRaEJDQUNRZ0dHSUFGQ1A0aUVJUUlnQzBJQmhpRUxJQU1nQVVJQmhvUWhBUXNnQmtILy93Rk9CRUFnQ2tLQWdJQ0FnSURBLy84QWhDRUtRZ0FoQVF3QkN3SitJQVpCQUV3RVFFRUJJQVpySWdkQi93Qk5CRUFnQlVFd2FpQUxJQUVnQmtIL0FHb2lCaEE1SUFWQklHb2dBaUFFSUFZUU9TQUZRUkJxSUFzZ0FTQUhFRHNnQlNBQ0lBUWdCeEE3SUFVcEF6QWdCU2tET0lSQ0FGS3RJQVVwQXlBZ0JTa0RFSVNFSVFzZ0JTa0RLQ0FGS1FNWWhDRUJJQVVwQXdBaEFpQUZLUU1JREFJTFFnQWhBUXdDQ3lBRVF2Ly8vLy8vL3orRElBYXRRakNHaEFzZ0NvUWhDaUFMVUNBQlFnQlpJQUZDZ0lDQWdJQ0FnSUNBZjFFYlJRUkFJQW9nQWtJQmZDSUJVSzE4SVFvTUFRc2dDeUFCUW9DQWdJQ0FnSUNBZ0grRmhFSUFVZ1JBSUFJaEFRd0JDeUFLSUFJZ0FrSUJnM3dpQVNBQ1ZLMThJUW9MSUFBZ0FUY0RBQ0FBSUFvM0F3Z2dCVUhnQUdva0FBdDFBUUYrSUFBZ0FTQUVmaUFDSUFOK2ZDQURRaUNJSWdJZ0FVSWdpQ0lFZm53Z0EwTC8vLy8vRDRNaUF5QUJRdi8vLy84UGd5SUJmaUlGUWlDSUlBTWdCSDU4SWdOQ0lJaDhJQUVnQW40Z0EwTC8vLy8vRDROOElnRkNJSWg4TndNSUlBQWdCVUwvLy8vL0Q0TWdBVUlnaG9RM0F3QUxwZ0VCQVg4Q2Z3SkFJQUFvQWt3aUFVRUFUZ1JBSUFGRkRRRkJoSmtVS0FJQUlBRkIvLy8vLzN0eFJ3MEJDeUFBS0FJRUlnRWdBQ2dDQ0VjRVFDQUFJQUZCQVdvMkFnUWdBUzBBQUF3Q0N5QUFFTWdCREFFTElBQWdBQ2dDVENJQlFmLy8vLzhESUFFYk5nSk1BbjhnQUNnQ0JDSUJJQUFvQWdoSEJFQWdBQ0FCUVFGcU5nSUVJQUV0QUFBTUFRc2dBQkRJQVFzaEFTQUFLQUpNR2lBQVFRQTJBa3dnQVFzTEJnQWdBQ1FCQ3c0QVFjQ3lHQ1FEUWNDeUZDUUNDd2NBSXdBakFtc0xCQUFqQXdzRUFDTUNDd1FBSXdBTEJnQWdBQ1FBQ3hBQUl3QWdBR3RCY0hFaUFDUUFJQUFMeFFrQ0JIOEZmaU1BUWZBQWF5SUdKQUFnQkVMLy8vLy8vLy8vLy84QWd5RUpBa0FDUUNBQlVDSUZJQUpDLy8vLy8vLy8vLy8vQUlNaUNrS0FnSUNBZ0lEQS8vOEFmVUtBZ0lDQWdJREFnSUIvVkNBS1VCdEZCRUFnQTBJQVVpQUpRb0NBZ0lDQWdNRC8vd0I5SWd0Q2dJQ0FnSUNBd0lDQWYxWWdDMEtBZ0lDQWdJREFnSUIvVVJzTkFRc2dCU0FLUW9DQWdJQ0FnTUQvL3dCVUlBcENnSUNBZ0lDQXdQLy9BRkViUlFSQUlBSkNnSUNBZ0lDQUlJUWhCQ0FCSVFNTUFnc2dBMUFnQ1VLQWdJQ0FnSURBLy84QVZDQUpRb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUVRb0NBZ0lDQWdDQ0VJUVFNQWdzZ0FTQUtRb0NBZ0lDQWdNRC8vd0NGaEZBRVFFS0FnSUNBZ0lEZy8vOEFJQUlnQVNBRGhTQUNJQVNGUW9DQWdJQ0FnSUNBZ0grRmhGQWlCUnNoQkVJQUlBRWdCUnNoQXd3Q0N5QURJQWxDZ0lDQWdJQ0F3UC8vQUlXRVVBMEJJQUVnQ29SUUJFQWdBeUFKaEVJQVVnMENJQUVnQTRNaEF5QUNJQVNESVFRTUFnc2dBeUFKaEVJQVVnMEFJQUVoQXlBQ0lRUU1BUXNnQXlBQklBRWdBMVFnQ1NBS1ZpQUpJQXBSR3lJSUd5RUtJQVFnQWlBSUd5SUxRdi8vLy8vLy96K0RJUWtnQWlBRUlBZ2JJZ0pDTUlpblFmLy9BWEVoQnlBTFFqQ0lwMEgvL3dGeElnVkZCRUFnQmtIZ0FHb2dDaUFKSUFvZ0NTQUpVQ0lGRzNrZ0JVRUdkSzE4cHlJRlFROXJFRGtnQmlrRGFDRUpJQVlwQTJBaENrRVFJQVZySVFVTElBRWdBeUFJR3lFRElBSkMvLy8vLy8vL1A0TWhCQ0FIUlFSQUlBWkIwQUJxSUFNZ0JDQURJQVFnQkZBaUJ4dDVJQWRCQm5TdGZLY2lCMEVQYXhBNVFSQWdCMnNoQnlBR0tRTllJUVFnQmlrRFVDRURDeUFFUWdPR0lBTkNQWWlFUW9DQWdJQ0FnSUFFaENFQklBbENBNFlnQ2tJOWlJUWhCQ0FDSUF1RklRMENmaUFEUWdPR0lnSWdCU0FIUmcwQUdpQUZJQWRySWdkQi93QkxCRUJDQUNFQlFnRU1BUXNnQmtGQWF5QUNJQUZCZ0FFZ0Iyc1FPU0FHUVRCcUlBSWdBU0FIRURzZ0Jpa0RPQ0VCSUFZcEF6QWdCaWtEUUNBR0tRTkloRUlBVXEyRUN5RUpJQVJDZ0lDQWdJQ0FnQVNFSVF3Z0NrSURoaUVLQWtBZ0RVSUFVd1JBUWdBaEEwSUFJUVFnQ1NBS2hTQUJJQXlGaEZBTkFpQUtJQWw5SVFJZ0RDQUJmU0FKSUFwV3JYMGlCRUwvLy8vLy8vLy9BMVlOQVNBR1FTQnFJQUlnQkNBQ0lBUWdCRkFpQnh0NUlBZEJCblN0ZktkQkRHc2lCeEE1SUFVZ0Iyc2hCU0FHS1FNb0lRUWdCaWtESUNFQ0RBRUxJQWtnQ253aUFpQUpWSzBnQVNBTWZId2lCRUtBZ0lDQWdJQ0FDSU5RRFFBZ0NVSUJneUFFUWorR0lBSkNBWWlFaENFQ0lBVkJBV29oQlNBRVFnR0lJUVFMSUF0Q2dJQ0FnSUNBZ0lDQWY0TWhBU0FGUWYvL0FVNEVRQ0FCUW9DQWdJQ0FnTUQvL3dDRUlRUkNBQ0VEREFFTFFRQWhCd0pBSUFWQkFFb0VRQ0FGSVFjTUFRc2dCa0VRYWlBQ0lBUWdCVUgvQUdvUU9TQUdJQUlnQkVFQklBVnJFRHNnQmlrREFDQUdLUU1RSUFZcEF4aUVRZ0JTcllRaEFpQUdLUU1JSVFRTElBS25RUWR4SWdWQkJFdXRJQVJDUFlZZ0FrSURpSVFpQW53aUF5QUNWSzBnQkVJRGlFTC8vLy8vLy84L2d5QUhyVUl3aG9RZ0FZUjhJUVFDUUNBRlFRUkdCRUFnQkNBRFFnR0RJZ0VnQTN3aUF5QUJWSzE4SVFRTUFRc2dCVVVOQVFzTElBQWdBemNEQUNBQUlBUTNBd2dnQmtId0FHb2tBQXRFQVFGL0l3QkJFR3NpQlNRQUlBVWdBU0FDSUFNZ0JFS0FnSUNBZ0lDQWdJQi9oUkJISUFVcEF3QWhBU0FBSUFVcEF3ZzNBd2dnQUNBQk53TUFJQVZCRUdva0FBdUJEQU1GZkFOK0JuOGpBRUVRYXlJTkpBQUNRQUpBSUFHOUlnaENOSWluSWd4Qi93OXhJZzVCdmdocklnOUIvMzVMSUFDOUlnZENOSWluSWdwQi93OXJRWUp3VDNFTkFDQUlRZ0dHUW9DQWdJQ0FnSUFRZkVLQmdJQ0FnSUNBRUZRRVFFUUFBQUFBQUFEd1B5RUNJQWRDZ0lDQWdJQ0FnUGcvVVEwQ0lBaENBWVlpQ1ZBTkFpQUpRb0dBZ0lDQWdJQndWQ0FIUWdHR0lnZENnSUNBZ0lDQWdIQlljVVVFUUNBQUlBR2dJUUlNQXdzZ0IwS0FnSUNBZ0lDQThQOEFVUTBDUkFBQUFBQUFBQUFBSUFFZ0FhSWdCMEwvLy8vLy8vLy83LzhBVmlBSVFnQlpjeHNoQWd3Q0N5QUhRZ0dHUW9DQWdJQ0FnSUFRZkVLQmdJQ0FnSUNBRUZRRVFDQUFJQUNpSVFJZ0IwSUFVd1JBSUFLYUlBSWdDQkJLUVFGR0d5RUNDeUFJUWdCWkRRSWpBRUVRYXlJS1JBQUFBQUFBQVBBL0lBS2pPUU1JSUFvckF3Z2hBZ3dDQ3lBSFFnQlRCRUFnQ0JCS0lndEZCRUFnQUNBQW9TSUFJQUNqSVFJTUF3c2dDa0gvRDNFaENpQUxRUUZHUVJKMElRc2dCMEwvLy8vLy8vLy8vLzhBZ3lFSEN5QVBRZjkrVFFSQVJBQUFBQUFBQVBBL0lRSWdCMEtBZ0lDQWdJQ0ErRDlSRFFJZ0RrRzlCMDBFUUNBQklBR2FJQWRDZ0lDQWdJQ0FnUGcvVmh0RUFBQUFBQUFBOEQrZ0lRSU1Bd3NnREVHQUVFa2dCMEtCZ0lDQWdJQ0ErRDlVUndSQUl3QkJFR3NpQ2tRQUFBQUFBQUFBY0RrRENDQUtLd01JUkFBQUFBQUFBQUJ3b2lFQ0RBTUxJd0JCRUdzaUNrUUFBQUFBQUFBQUVEa0RDQ0FLS3dNSVJBQUFBQUFBQUFBUW9pRUNEQUlMSUFvTkFDQUFSQUFBQUFBQUFEQkRvcjFDLy8vLy8vLy8vLy8vQUlOQ2dJQ0FnSUNBZ0tBRGZTRUhDd0o4SUFoQ2dJQ0FRSU8vSWdVZ0RTQUhRb0NBZ0lEUXFxWHpQMzBpQ0VJMGg2ZTNJZ05CK0JnckF3Q2lJQWhDTFlpblFmOEFjVUVGZENJS1FkQVphaXNEQUtBZ0J5QUlRb0NBZ0lDQWdJQjRnMzBpQjBLQWdJQ0FDSHhDZ0lDQWdIQ0R2eUlBSUFwQnVCbHFLd01BSWdTaVJBQUFBQUFBQVBDL29DSUNJQWUvSUFDaElBU2lJZ1NnSWdBZ0EwSHdHQ3NEQUtJZ0NrSElHV29yQXdDZ0lnTWdBQ0FEb0NJRG9hQ2dJQVFnQUVHQUdTc0RBQ0lFb2lJR0lBSWdCS0lpQktDaW9DQUNJQVNpSWdJZ0F5QURJQUtnSWdLaG9LQWdBQ0FBSUFhaUlnT2lJQU1nQXlBQVFiQVpLd01Bb2tHb0dTc0RBS0NpSUFCQm9Ca3JBd0NpUVpnWkt3TUFvS0NpSUFCQmtCa3JBd0NpUVlnWkt3TUFvS0Npb0NJQUlBSWdBaUFBb0NJQ29hQTVBd2dnQXIxQ2dJQ0FRSU8vSWdPaUlRQWdBU0FGb1NBRG9pQU5Ld01JSUFJZ0E2R2dJQUdpb0NFQkFrQWdBTDFDTklpblFmOFBjU0lLUWNrSGEwRS9TUTBBSUFwQnlRZEpCRUFnQUVRQUFBQUFBQUR3UDZBaUFKb2dBQ0FMR3d3Q0N5QUtRWWtJU1NFTVFRQWhDaUFNRFFBZ0FMMUNBRk1FUUNNQVFSQnJJZ3BFQUFBQUFBQUFBSkJFQUFBQUFBQUFBQkFnQ3hzNUF3Z2dDaXNEQ0VRQUFBQUFBQUFBRUtJTUFnc2pBRUVRYXlJS1JBQUFBQUFBQUFEd1JBQUFBQUFBQUFCd0lBc2JPUU1JSUFvckF3aEVBQUFBQUFBQUFIQ2lEQUVMUVlBSUt3TUFJQUNpUVlnSUt3TUFJZ0tnSWdNZ0FxRWlBa0dZQ0NzREFLSWdBa0dRQ0NzREFLSWdBS0NnSUFHZ0lnQWdBS0lpQVNBQm9pQUFRYmdJS3dNQW9rR3dDQ3NEQUtDaUlBRWdBRUdvQ0NzREFLSkJvQWdyQXdDZ29pQUR2U0lJcDBFRWRFSHdEM0VpREVId0NHb3JBd0FnQUtDZ29DRUFJQXhCK0FocUtRTUFJQWdnQzYxOFFpMkdmQ0VISUFwRkJFQUNmQ0FJUW9DQWdJQUlnMUFFUUNBSFFvQ0FnSUNBZ0lDSVAzMi9JZ0VnQUtJZ0FhQkVBQUFBQUFBQUFIK2lEQUVMSUFkQ2dJQ0FnSUNBZ1BBL2ZDSUh2eUlCSUFDaUlnTWdBYUFpQUpsRUFBQUFBQUFBOEQ5akJId2pBRUVRYXlJS0lBcEVBQUFBQUFBQUVBQTVBd2dnQ2lzRENFUUFBQUFBQUFBUUFLSTVBd2dnQjBLQWdJQ0FnSUNBZ0lCL2c3OGdBRVFBQUFBQUFBRHd2MFFBQUFBQUFBRHdQeUFBUkFBQUFBQUFBQUFBWXhzaUFxQWlCU0FESUFFZ0FLR2dJQUFnQWlBRm9hQ2dvQ0FDb1NJQUlBQkVBQUFBQUFBQUFBQmhHd1VnQUF0RUFBQUFBQUFBRUFDaUN3d0JDeUFIdnlJQklBQ2lJQUdnQ3lFQ0N5QU5RUkJxSkFBZ0FndE9BZ0YvQVg0Q2YwRUFJQUJDTklpblFmOFBjU0lCUWY4SFNRMEFHa0VDSUFGQnN3aExEUUFhUVFCQ0FVR3pDQ0FCYTYyR0lnSkNBWDBnQUlOQ0FGSU5BQnBCQWtFQklBQWdBb05RR3dzTDZBSUJBbjhDUUNBQUlBRkdEUUFnQVNBQUlBSnFJZ1JyUVFBZ0FrRUJkR3ROQkVBZ0FDQUJJQUlRS3c4TElBQWdBWE5CQTNFaEF3SkFBa0FnQUNBQlNRUkFJQU1FUUNBQUlRTU1Bd3NnQUVFRGNVVUVRQ0FBSVFNTUFnc2dBQ0VEQTBBZ0FrVU5CQ0FESUFFdEFBQTZBQUFnQVVFQmFpRUJJQUpCQVdzaEFpQURRUUZxSWdOQkEzRU5BQXNNQVFzQ1FDQUREUUFnQkVFRGNRUkFBMEFnQWtVTkJTQUFJQUpCQVdzaUFtb2lBeUFCSUFKcUxRQUFPZ0FBSUFOQkEzRU5BQXNMSUFKQkEwME5BQU5BSUFBZ0FrRUVheUlDYWlBQklBSnFLQUlBTmdJQUlBSkJBMHNOQUFzTElBSkZEUUlEUUNBQUlBSkJBV3NpQW1vZ0FTQUNhaTBBQURvQUFDQUNEUUFMREFJTElBSkJBMDBOQUFOQUlBTWdBU2dDQURZQ0FDQUJRUVJxSVFFZ0EwRUVhaUVESUFKQkJHc2lBa0VEU3cwQUN3c2dBa1VOQUFOQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCSUFKQkFXc2lBZzBBQ3dzZ0FBdVFCQUlFZmdKL0FrQUNRQ0FCdlNJRVFnR0dJZ05RRFFBZ0FiMGhBaUFBdlNJRlFqU0lwMEgvRDNFaUJrSC9EMFlOQUNBQ1F2Ly8vLy8vLy8vLy93Q0RRb0dBZ0lDQWdJRDQvd0JVRFFFTElBQWdBYUlpQUNBQW93OExJQU1nQlVJQmhpSUNXZ1JBSUFCRUFBQUFBQUFBQUFDaUlBQWdBaUFEVVJzUEN5QUVRalNJcDBIL0QzRWhCd0orSUFaRkJFQkJBQ0VHSUFWQ0RJWWlBa0lBV1FSQUEwQWdCa0VCYXlFR0lBSkNBWVlpQWtJQVdRMEFDd3NnQlVFQklBWnJyWVlNQVFzZ0JVTC8vLy8vLy8vL0I0TkNnSUNBZ0lDQWdBaUVDeUVDQW40Z0IwVUVRRUVBSVFjZ0JFSU1oaUlEUWdCWkJFQURRQ0FIUVFGcklRY2dBMElCaGlJRFFnQlpEUUFMQ3lBRVFRRWdCMnV0aGd3QkN5QUVRdi8vLy8vLy8vOEhnMEtBZ0lDQWdJQ0FDSVFMSVFRZ0JpQUhTZ1JBQTBBQ1FDQUNJQVI5SWdOQ0FGTU5BQ0FESWdKQ0FGSU5BQ0FBUkFBQUFBQUFBQUFBb2c4TElBSkNBWVloQWlBR1FRRnJJZ1lnQjBvTkFBc2dCeUVHQ3dKQUlBSWdCSDBpQTBJQVV3MEFJQU1pQWtJQVVnMEFJQUJFQUFBQUFBQUFBQUNpRHdzQ1FDQUNRdi8vLy8vLy8vOEhWZ1JBSUFJaEF3d0JDd05BSUFaQkFXc2hCaUFDUW9DQWdJQ0FnSUFFVkNFSElBSkNBWVlpQXlFQ0lBY05BQXNMSUFWQ2dJQ0FnSUNBZ0lDQWY0TWhBaUFHUVFCS0JINGdBMEtBZ0lDQWdJQ0FDSDBnQnExQ05JYUVCU0FEUVFFZ0JtdXRpQXNnQW9TL0M5RURBZ0orQW44akFFRWdheUlFSkFBQ1FDQUJRdi8vLy8vLy8vLy8vd0NESWdOQ2dJQ0FnSUNBd0lBOGZTQURRb0NBZ0lDQWdNRC93d0I5VkFSQUlBRkNCSVlnQUVJOGlJUWhBeUFBUXYvLy8vLy8vLy8vRDRNaUFFS0JnSUNBZ0lDQWdBaGFCRUFnQTBLQmdJQ0FnSUNBZ01BQWZDRUNEQUlMSUFOQ2dJQ0FnSUNBZ0lCQWZTRUNJQUJDZ0lDQWdJQ0FnSUFJVWcwQklBSWdBMElCZzN3aEFnd0JDeUFBVUNBRFFvQ0FnSUNBZ01ELy93QlVJQU5DZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQUZDQklZZ0FFSThpSVJDLy8vLy8vLy8vd09EUW9DQWdJQ0FnSUQ4L3dDRUlRSU1BUXRDZ0lDQWdJQ0FnUGovQUNFQ0lBTkMvLy8vLy8vL3YvL0RBRllOQUVJQUlRSWdBMEl3aUtjaUJVR1I5d0JKRFFBZ0JFRVFhaUFBSUFGQy8vLy8vLy8vUDROQ2dJQ0FnSUNBd0FDRUlnSWdCVUdCOXdCckVEa2dCQ0FBSUFKQmdmZ0FJQVZyRURzZ0JDa0RDRUlFaGlBRUtRTUFJZ0JDUElpRUlRSWdCQ2tERUNBRUtRTVloRUlBVXEwZ0FFTC8vLy8vLy8vLy93K0RoQ0lBUW9HQWdJQ0FnSUNBQ0ZvRVFDQUNRZ0Y4SVFJTUFRc2dBRUtBZ0lDQWdJQ0FnQWhTRFFBZ0FrSUJneUFDZkNFQ0N5QUVRU0JxSkFBZ0FpQUJRb0NBZ0lDQWdJQ0FnSCtEaEw4TGZnSUNmd0YrSXdCQkVHc2lBeVFBSUFBQ2ZpQUJSUVJBUWdBTUFRc2dBeUFCSUFGQkgzVWlBbk1nQW1zaUFxMUNBQ0FDWnlJQ1FkRUFhaEE1SUFNcEF3aENnSUNBZ0lDQXdBQ0ZRWjZBQVNBQ2E2MUNNSVo4SUFGQmdJQ0FnSGh4clVJZ2hvUWhCQ0FES1FNQUN6Y0RBQ0FBSUFRM0F3Z2dBMEVRYWlRQUMva0JBZ04rQW44akFFRVFheUlGSkFBQ2ZpQUJ2U0lEUXYvLy8vLy8vLy8vL3dDRElnSkNnSUNBZ0lDQWdBaDlRdi8vLy8vLy8vL3Yvd0JZQkVBZ0FrSThoaUVFSUFKQ0JJaENnSUNBZ0lDQWdJQThmQXdCQ3lBQ1FvQ0FnSUNBZ0lENC93QmFCRUFnQTBJOGhpRUVJQU5DQkloQ2dJQ0FnSUNBd1AvL0FJUU1BUXNnQWxBRVFFSUFEQUVMSUFVZ0FrSUFJQU9uWjBFZ2FpQUNRaUNJcDJjZ0FrS0FnSUNBRUZRYklnWkJNV29RT1NBRktRTUFJUVFnQlNrRENFS0FnSUNBZ0lEQUFJVkJqUGdBSUFacnJVSXdob1FMSVFJZ0FDQUVOd01BSUFBZ0FpQURRb0NBZ0lDQWdJQ0FnSCtEaERjRENDQUZRUkJxSkFBTFl3SUJmd0YrSXdCQkVHc2lBaVFBSUFBQ2ZpQUJSUVJBUWdBTUFRc2dBaUFCclVJQUlBRm5JZ0ZCMFFCcUVEa2dBaWtEQ0VLQWdJQ0FnSURBQUlWQm5vQUJJQUZyclVJd2hud2hBeUFDS1FNQUN6Y0RBQ0FBSUFNM0F3Z2dBa0VRYWlRQUM3UURBZ04vQVg0akFFRWdheUlESkFBQ1FDQUJRdi8vLy8vLy8vLy8vd0NESWdWQ2dJQ0FnSUNBd01BL2ZTQUZRb0NBZ0lDQWdNQy93QUI5VkFSQUlBRkNHWWluSVFRZ0FGQWdBVUwvLy84UGd5SUZRb0NBZ0FoVUlBVkNnSUNBQ0ZFYlJRUkFJQVJCZ1lDQWdBUnFJUUlNQWdzZ0JFR0FnSUNBQkdvaEFpQUFJQVZDZ0lDQUNJV0VRZ0JTRFFFZ0FpQUVRUUZ4YWlFQ0RBRUxJQUJRSUFWQ2dJQ0FnSUNBd1AvL0FGUWdCVUtBZ0lDQWdJREEvLzhBVVJ0RkJFQWdBVUlaaUtkQi8vLy9BWEZCZ0lDQS9nZHlJUUlNQVF0QmdJQ0EvQWNoQWlBRlF2Ly8vLy8vLzcrL3dBQldEUUJCQUNFQ0lBVkNNSWluSWdSQmtmNEFTUTBBSUFOQkVHb2dBQ0FCUXYvLy8vLy8veitEUW9DQWdJQ0FnTUFBaENJRklBUkJnZjRBYXhBNUlBTWdBQ0FGUVlIL0FDQUVheEE3SUFNcEF3Z2lBRUlaaUtjaEFpQURLUU1BSUFNcEF4QWdBeWtER0lSQ0FGS3RoQ0lGVUNBQVF2Ly8vdytESWdCQ2dJQ0FDRlFnQUVLQWdJQUlVUnRGQkVBZ0FrRUJhaUVDREFFTElBVWdBRUtBZ0lBSWhZUkNBRklOQUNBQ1FRRnhJQUpxSVFJTElBTkJJR29rQUNBQ0lBRkNJSWluUVlDQWdJQjRjWEsrQ3hnQVFhK0RGQ3dBQUVFQVNBUkFRYVNERkNnQ0FCQTBDd3RxQVFOL0lBRVFMeUlDUWZELy8vOEhTUVJBQWtBZ0FrRUtUUVJBSUFBZ0Fqb0FDeUFBSVFNTUFRc2dBa0VQY2tFQmFpSUVFRlFoQXlBQUlBUkJnSUNBZ0hoeU5nSUlJQUFnQXpZQ0FDQUFJQUkyQWdRTElBTWdBU0FDRUVzZ0FtcEJBRG9BQUE4TEVGVUFDellCQVg5QkFTQUFJQUJCQVUwYklRQUNRQU5BSUFBUU15SUJEUUZCc0xJVUtBSUFJZ0VFUUNBQkVRa0FEQUVMQ3hBZEFBc2dBUXNJQUVHb1B4QllBQXNZQUVHZmd4UXNBQUJCQUVnRVFFR1VneFFvQWdBUU5Bc0xDQUJCdXp3UVdBQUxZUUVEZjBFSUVGa2lBVUdjK3hNMkFnQWdBVUhJK1JNMkFnQWdBQkF2SWdKQkRXb1FWQ0lEUVFBMkFnZ2dBeUFDTmdJRUlBTWdBallDQUNBQklBTkJER29nQUNBQ1FRRnFFQ3MyQWdRZ0FVSDQrUk0yQWdBZ0FVR1kraE5CQWhBQkFBc09BQ0FBUWRBQWFoQXpRZEFBYWdzeUFRSi9JQUJCeVBrVE5nSUFJQUFvQWdSQkRHc2lBU0FCS0FJSVFRRnJJZ0kyQWdnZ0FrRUFTQVJBSUFFUU5Bc2dBQXYwQ3dJRmZ3VitJd0JCTUdzaUJTUUFBa0JCMkFBUU15SUVSUTBBSUFSQkJHc3RBQUJCQTNGRkRRQWdCRUVBUWRnQUVDa2FDeUFFUXRicmd1N3EvWW4xNEFBM0F3Z2dCRUw1NnREUTU4bWg1T0VBTndNZ0lBUkN6OWJUdnRMSHE5bENOd01RQW40Q1FDQUJLQUlBSUFFZ0FTMEFDeUlEd0VFQVNDSUdHeUlDUlEwQUlBUWdBU2dDQkNBRElBWWJJZ0d0SWdzM0F3QUNRQ0FCUVI5TkJFQWdCRUVvYWlBQ0lBRVFLeG9nQkNBRUtBSklJQUZxTmdKSVF0YnJndTdxL1luMTRBQWhDRUxQMXRPKzBzZXIyVUloQ1VMNTZ0RFE1OG1oNU9FQUlRb01BUXNnQVNBQ2FpRURBa0FnQVVFZ1NBUkFRdGJyZ3U3cS9ZbjE0QUFoQ0VMUDF0Tyswc2VyMlVJaENVTDU2dERRNThtaDVPRUFJUW9NQVFzZ0EwRWdheUVCUXRicmd1N3EvWW4xNEFBaENFTDU2dERRNThtaDVPRUFJUXBDejliVHZ0TEhxOWxDSVFrRFFDQUNLUUFZUXMvVzA3N1N4NnZaUW40Z0NueENINGxDaDVXdnI1aTIzcHVlZjM0aENpQUNLUUFRUXMvVzA3N1N4NnZaUW40Z0IzeENINGxDaDVXdnI1aTIzcHVlZjM0aEJ5QUNLUUFJUXMvVzA3N1N4NnZaUW40Z0NYeENINGxDaDVXdnI1aTIzcHVlZjM0aENTQUNLUUFBUXMvVzA3N1N4NnZaUW40Z0NIeENINGxDaDVXdnI1aTIzcHVlZjM0aENDQUNRU0JxSWdJZ0FVME5BQXNnQkNBS053TWdJQVFnQnpjREdDQUVJQWszQXhBZ0JDQUlOd01JQ3lBQ0lBTlBEUUFnQkVFb2FpQUNJQU1nQW1zaUFSQXJHaUFFSUFFMkFrZ0xJQXRDSUZRTkFDQUpRZ2VKSUFoQ0FZbDhJQWRDRElsOElBcENFb2w4SUFoQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnQ1VMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmU0FIUXMvVzA3N1N4NnZaUW41Q0g0bENoNVd2cjVpMjNwdWVmMzZGUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJQXBDejliVHZ0TEhxOWxDZmtJZmlVS0hsYSt2bUxiZW01NS9mb1ZDaDVXdnI1aTIzcHVlZjM1Q25hTzE2b094allyNkFIME1BUXNnQjBMRno5bXk4ZVc2NmlkOEN5RUhJQVJCS0dvaEFpQUhJQXQ4SVFjQ1FDQUxwMEVmY1NJQlFRaEpCRUFnQWlFRERBRUxBMEFnQWlrQUFFTFAxdE8rMHNlcjJVSitRaCtKUW9lVnI2K1l0dDZibm45K0lBZUZRaHVKUW9lVnI2K1l0dDZibm45K1FwMmp0ZXFEc1kySytnQjlJUWNnQWtFSWFpSURJUUlnQVVFSWF5SUJRUWRMRFFBTEN5QUJRUVJQQkVBZ0F6VUFBRUtIbGErdm1MYmVtNTUvZmlBSGhVSVhpVUxQMXRPKzBzZXIyVUorUXZuejNmR1o5cG1yRm53aEJ5QURRUVJxSVFNZ0FVRUVheUVCQ3dKQUlBRkZEUUFDZnlBQlFRRnhSUVJBSUFNaEFpQUJEQUVMSUFOQkFXb2hBaUFETVFBQVFzWFAyYkx4NWJycUozNGdCNFZDQzRsQ2g1V3ZyNWkyM3B1ZWYzNGhCeUFCUVFGckN5RURJQUZCQVVZTkFBTkFJQUl4QUFGQ3hjL1pzdkhsdXVvbmZpQUNNUUFBUXNYUDJiTHg1YnJxSjM0Z0I0VkNDNGxDaDVXdnI1aTIzcHVlZjM2RlFndUpRb2VWcjYrWXR0NmJubjkrSVFjZ0FrRUNhaUVDSUFOQkFtc2lBdzBBQ3dzZ0JCQTBJQVVnQjBJaGlDQUhoVUxQMXRPKzBzZXIyVUorSWdkQ0hZZ2dCNFZDK2ZQZDhabjJtYXNXZmlJSFFpQ0lJQWVGTndNQUl3QkJFR3NpQkNRQUlBUWdCVFlDRENBRlFSQnFJUUpCQUNFREl3QkJrQUZySWdFa0FBTkFJQUVnQTJvZ0EwR1lreE5xTFFBQU9nQUFJQU5CQVdvaUEwR1FBVWtOQUFzZ0FTQUNOZ0lzSUFFZ0FqWUNGQ0FCUWYvLy8vOEhRWDRnQW1zaUF5QURRZi8vLy84SFR4c2lBellDTUNBQklBSWdBMm9pQmpZQ0hDQUJJQVkyQWhBZ0FVSGlPaUFGRU1ZQklBTUVRQ0FCS0FJVUlnTWdBeUFCS0FJUVJtdEJBRG9BQUFzZ0FVR1FBV29rQUNBRVFSQnFKQUFnQWhBdklnSkI4UC8vL3dkSkJFQUNRQ0FDUVFwTkJFQWdBQ0FDT2dBTERBRUxJQUpCRDNKQkFXb2lBeEJVSVFFZ0FDQURRWUNBZ0lCNGNqWUNDQ0FBSUFFMkFnQWdBQ0FDTmdJRUlBRWhBQXNnQUNBRlFSQnFJQUlRS3lBQ2FrRUFPZ0FBSUFWQk1Hb2tBQThMRUZVQUM3b0lBUUovUVp6bkVrSEk1eEpCK09jU1FkanRFa0hZN0JKQkJFSFk3QkpCQlVIWTdCSkJCa0c0T1VIYjdCSkJCeEFEUVp6bkVrRUJRWWpvRWtIWTdCSkJDRUVKRUFSQkNCQlVJZ0JCQURZQ0JDQUFRUW8yQWdCQm5PY1NRZmJFQUVFRFFZem9Fa0dZNkJKQkN5QUFRUUJCQUJBRlFRUVFWQ0lBUVNBMkFnQkJCQkJVSWdGQklEWUNBRUdjNXhKQjhNQUFRWlQzRTBHZDZCSkJEQ0FBUVpUM0UwR2g2QkpCRFNBQkVBWkJCQkJVSWdCQktEWUNBRUVFRUZRaUFVRW9OZ0lBUVp6bkVrSEV3UUJCbFBjVFFaM29Fa0VNSUFCQmxQY1RRYUhvRWtFTklBRVFCa0VFRUZRaUFFRXdOZ0lBUVFRUVZDSUJRVEEyQWdCQm5PY1NRYWM4UVpUM0UwR2Q2QkpCRENBQVFaVDNFMEdoNkJKQkRTQUJFQVpCQkJCVUlnQkJPRFlDQUVFRUVGUWlBVUU0TmdJQVFaem5Fa0dYUEVHVTl4TkJuZWdTUVF3Z0FFR1U5eE5Cb2VnU1FRMGdBUkFHUVFRUVZDSUFRY0FBTmdJQVFRUVFWQ0lCUWNBQU5nSUFRWnpuRWtHZlBVR1U5eE5CbmVnU1FRd2dBRUdVOXhOQm9lZ1NRUTBnQVJBR1FRUVFWQ0lBUWNnQU5nSUFRUVFRVkNJQlFjZ0FOZ0lBUVp6bkVrSEZPMEdVOXhOQm5lZ1NRUXdnQUVHVTl4TkJvZWdTUVEwZ0FSQUdRUVFRVkNJQVFkQUFOZ0lBUVFRUVZDSUJRZEFBTmdJQVFaem5Fa0dRUFVHVTl4TkJuZWdTUVF3Z0FFR1U5eE5Cb2VnU1FRMGdBUkFHUVFRUVZDSUFRZGdBTmdJQVFRUVFWQ0lCUWRnQU5nSUFRWnpuRWtHdVBVR1U5eE5CbmVnU1FRd2dBRUdVOXhOQm9lZ1NRUTBnQVJBR1FRUVFWQ0lBUVpBQk5nSUFRUVFRVkNJQlFaQUJOZ0lBUVp6bkVrSGh3QUJCbFBjVFFaM29Fa0VNSUFCQmxQY1RRYUhvRWtFTklBRVFCa0VFRUZRaUFFR0lBVFlDQUVFRUVGUWlBVUdJQVRZQ0FFR2M1eEpCNk1BQVFaVDNFMEdkNkJKQkRDQUFRWlQzRTBHaDZCSkJEU0FCRUFaQkJCQlVJZ0JCNEFBMkFnQkJCQkJVSWdGQjRBQTJBZ0JCbk9jU1FkZkJBRUdVOXhOQm5lZ1NRUXdnQUVHVTl4TkJvZWdTUVEwZ0FSQUdRUVFRVkNJQVFlZ0FOZ0lBUVFRUVZDSUJRZWdBTmdJQVFaem5Fa0dMUFVHVTl4TkJuZWdTUVF3Z0FFR1U5eE5Cb2VnU1FRMGdBUkFHUVFRUVZDSUFRZkFBTmdJQVFRUVFWQ0lCUWZBQU5nSUFRWnpuRWtIVFBVR1U5eE5CbmVnU1FRd2dBRUdVOXhOQm9lZ1NRUTBnQVJBR1FRUVFWQ0lBUWZnQU5nSUFRUVFRVkNJQlFmZ0FOZ0lBUVp6bkVrSE5QVUdVOXhOQm5lZ1NRUXdnQUVHVTl4TkJvZWdTUVEwZ0FSQUdRUVFRVkNJQVFZQUJOZ0lBUVFRUVZDSUJRWUFCTmdJQVFaem5Fa0duUGtHVTl4TkJuZWdTUVF3Z0FFR1U5eE5Cb2VnU1FRMGdBUkFHUVFRUVZDSUFRWmdCTmdJQVFRUVFWQ0lCUVpnQk5nSUFRWnpuRWtIMk9rR3c5aE5CNk93U1FRNGdBRUd3OWhOQmdPMFNRUThnQVJBR1FRUVFWQ0lBUVp3Qk5nSUFRUVFRVkNJQlFad0JOZ0lBUVp6bkVrSDh3QUJCc1BZVFFlanNFa0VPSUFCQnNQWVRRWUR0RWtFUElBRVFCZ3NOQUNBQUtBSUFRUVJyS0FJQUN3UUFJQUFMMEFFQkEzOGdBQVJBSUFCQitPWVNOZ0lBSUFBb0FoZ1FhQ0FBUVlUcEVqWUNBQUpBUWRpRUZDZ0NBQ0lDUWRTRUZFWU5BQ0FDSVFFQ1FBTkFBa0FnQVNnQ0JDRURJQUVvQWdnZ0FFWU5BQ0FESWdGQjFJUVVSdzBCREFJTEN5QUJLQUlBSWdJZ0F6WUNCQ0FCS0FJRUlBSTJBZ0JCM0lRVVFkeUVGQ2dDQUVFQmF6WUNBQ0FCRURSQjJJUVVLQUlBSVFJTElBSkIxSVFVUmcwQVFRQWhBUU5BSUFJb0FnZ2dBVFlDRUNBQlFRRnFJUUVnQWlnQ0JDSUNRZFNFRkVjTkFBc0xRZUNFRkVFQk9nQUFJQUFRTkFzTEJ3QWdBQkVPQUF1T0FRRURmMEg0Q0JCVUlnRkJBVG9BQkVISWhCUXRBQUJGQkVCQkRCQlVJZ0JCMUlRVU5nSUVJQUFnQVRZQ0NDQUFRZFNFRkNnQ0FDSUNOZ0lBSUFJZ0FEWUNCRUhVaEJRZ0FEWUNBRUhjaEJSQjNJUVVLQUlBSWdCQkFXbzJBZ0FnQVNBQU5nSVFDMEhnaEJSQkFUb0FBQ0FCUVJocUlnQkNBRGNEQUNBQlFmam1FallDQUNBQklBQTJBaFFnQVF2ZVRRSUlmMVY4SXdCQjhBaHJJZ0lrQUNBQktBSUFRZExGQUJBSUlnTVFCeUVISUFNUUFnSkFBbjhnQjBIZzdoSWdBa0VZYWhBSklncEVBQUFBQUFBQThFRmpJQXBFQUFBQUFBQUFBQUJtY1FSQUlBcXJEQUVMUVFBTElna29BZ0FpQmtIdy8vLy9CMDhOQUNBQ0tBSVlJUVVDUUNBR1FRcE5CRUFnQWlBR09nQ1RDQ0FDUVlnSWFpRUREQUVMSUFaQkQzSkJBV29pQkJCVUlRTWdBaUFFUVlDQWdJQjRjallDa0FnZ0FpQUROZ0tJQ0NBQ0lBWTJBb3dJQ3lBRElBbEJCR29nQmhBcklBWnFRUUE2QUFBZ0JSQUtJQWNRQWlBQktBSUFRWkhGQUJBSUlnTVFCeUVISUFNUUFnSi9JQWRCNE80U0lBSkJHR29RQ1NJS1JBQUFBQUFBQVBCQll5QUtSQUFBQUFBQUFBQUFabkVFUUNBS3F3d0JDMEVBQ3lJSktBSUFJZ1pCOFAvLy93ZFBEUUFnQWlnQ0dDRUZBa0FnQmtFS1RRUkFJQUlnQmpvQWh3Z2dBa0g4QjJvaEF3d0JDeUFHUVE5eVFRRnFJZ1FRVkNFRElBSWdCRUdBZ0lDQWVISTJBb1FJSUFJZ0F6WUMvQWNnQWlBR05nS0FDQXNnQXlBSlFRUnFJQVlRS3lBR2FrRUFPZ0FBSUFVUUNpQUhFQUlnQVNnQ0FFSFh4QUFRQ0NJREVBY2hCQ0FERUFJZ0JFR1U5eE1nQWtFWWFpSUZFQWtoR3lBQ0tBSVlFQW9nQkJBQ0lBRW9BZ0JCemNNQUVBZ2lBeEFISVFRZ0F4QUNJQVJCbFBjVElBVVFDU0VnSUFJb0FoZ1FDaUFFRUFJZ0FTZ0NBRUhqeEFBUUNDSURFQWNoQkNBREVBSWdCRUdVOXhNZ0JSQUpJU3NnQWlnQ0dCQUtJQVFRQWlBQktBSUFRY1BGQUJBSUlnTVFCeUVFSUFNUUFpQUVRWlQzRXlBQ1FSaHFFQWtoRnlBQ0tBSVlFQW9nQkJBQ0lBRW9BZ0JCc01RQUVBZ2lBeEFISVFRZ0F4QUNJQVJCbFBjVElBSkJHR29RQ1NFUUlBSW9BaGdRQ2lBRUVBSWdBU2dDQUVIYXd3QVFDQ0lERUFjaEJDQURFQUlnQkVHVTl4TWdBa0VZYWhBSklTTWdBaWdDR0JBS0lBUVFBaUFCS0FJQVFmM0VBQkFJSWdNUUJ5RUVJQU1RQWlBRVFaVDNFeUFDUVJocUVBa2hVU0FDS0FJWUVBb2dCQkFDSUFFb0FnQkJvTVVBRUFnaUF4QUhJUVFnQXhBQ0lBUkJzUFlUSUFVUUNTRVJJQUlvQWhnUUNpQUVFQUlnQVNnQ0FFR3Z4UUFRQ0NJREVBY2hCeUFERUFJQ2Z5QUhRZUR1RWlBRkVBa2lDa1FBQUFBQUFBRHdRV01nQ2tRQUFBQUFBQUFBQUdaeEJFQWdDcXNNQVF0QkFBc2lDU2dDQUNJSVFmRC8vLzhIU1NFREFuOGdFWmxFQUFBQUFBQUE0RUZqQkVBZ0Vhb01BUXRCZ0lDQWdIZ0xJUVlnQTBVTkFDQUNLQUlZSVFVQ1FDQUlRUXBOQkVBZ0FpQUlPZ0Q3QnlBQ1FmQUhhaUVEREFFTElBaEJEM0pCQVdvaUJCQlVJUU1nQWlBRVFZQ0FnSUI0Y2pZQytBY2dBaUFETmdMd0J5QUNJQWcyQXZRSEN5QURJQWxCQkdvZ0NCQXJJQWhxUVFBNkFBQWdCUkFLSUFjUUFpQUJLQUlBUWR6RkFCQUlJZ01RQnlFRUlBTVFBaUFFUWJ6MkV5QUNRUmhxSWdVUUNTRWtJQUlvQWhnUUNpQUVFQUlnQVNnQ0FFSEl4QUFRQ0NJREVBY2hCQ0FERUFJZ0JFRzg5aE1nQlJBSklTd2dBaWdDR0JBS0lBUVFBaUFCS0FJQVFZckZBQkFJSWdNUUJ5RUVJQU1RQWlBRVFaVDNFeUFGRUFraERpQUNLQUlZRUFvZ0JCQUNJQUVvQWdCQndzUUFFQWdpQXhBSElRUWdBeEFDSUFSQmxQY1RJQVVRQ1NFWUlBSW9BaGdRQ2lBRUVBSWdBU2dDQUVHQ3hBQVFDQ0lERUFjaEJDQURFQUlnQkVHVTl4TWdCUkFKSVJFZ0FpZ0NHQkFLSUFRUUFpQUJLQUlBUVpMRUFCQUlJZ0VRQnlFRElBRVFBaUFEUVpUM0V5QUZFQWtoQ2lBQ0tBSVlFQW9nQXhBQ0FuOGdKRVFBQUFBQUFBRHdRV01nSkVRQUFBQUFBQUFBQUdaeEJFQWdKS3NNQVF0QkFBc2hDRUhJaEJRdEFBQkZCRUFnQWlnQy9BY2hCeUFDTEFDSENDRUpJQUlvQW9nSUlRVWdBaXdBa3dnaEJDQUNLQUx3QnlFRElBSXNBUHNISVFFZ0FrRUFOZ0trQ0NBQ1FRQTJBaVFnQWlBSU5nSVlJQUlnQXlBQ1FmQUhhaUFCUVFCSUd5MEFBRG9BdUFZQ1FBSkFJQUpCdVFacUlnTWdCU0FDUVlnSWFpQUVRUUJJR3lJRWMwRURjUVJBSUFRdEFBQWhBUXdCQ3lBRVFRTnhCRUFEUUNBRElBUXRBQUFpQVRvQUFDQUJSUTBESUFOQkFXb2hBeUFFUVFGcUlnUkJBM0VOQUFzTElBUW9BZ0FpQVVGL2N5QUJRWUdDaEFocmNVR0FnWUtFZUhFTkFBTkFJQU1nQVRZQ0FDQUVLQUlFSVFFZ0EwRUVhaUVESUFSQkJHb2hCQ0FCUVlHQ2hBaHJJQUZCZjNOeFFZQ0Jnb1I0Y1VVTkFBc0xJQU1nQVRvQUFDQUJRZjhCY1VVTkFBTkFJQU1nQkMwQUFTSUJPZ0FCSUFOQkFXb2hBeUFFUVFGcUlRUWdBUTBBQ3dzZ0FnSi9JQ3hFQUFBQUFBQUE4RUZqSUN4RUFBQUFBQUFBQUFCbWNRUkFJQ3lyREFFTFFRQUxOZ0xJQmlBQ0lBYkFOZ0xFQmlBQ0lCZzVBL2dGSUFJZ0Nqa0Q2QVVnQWlBUk9RUHdCU0FDQW44Z0RwbEVBQUFBQUFBQTRFRmpCRUFnRHFvTUFRdEJnSUNBZ0hnTE5nTE1CaUFDSUJzNUE3QUdJQUlnSXprRHFBWWdBaUFRT1FPZ0JpQUNJQ0E1QTVnR0lBSWdGemtEa0FZZ0FpQXJPUU9JQmlBQ0lBSkJsQWhxTmdJUUlBSWdBa0dvQ0dvMkFoUWdBaUFDUWFRSWFqWUNBQ0FDSUFKQm9BaHFOZ0lFSUFJZ0FrR2NDR28yQWdnZ0FpQUNRWmdJYWpZQ0RDQUhJQUpCL0FkcUlBbEJBRWdiUWVNL0lBSVFhUm9nQWlBQ0tBS1lDTGRFQUFBQUFBQWdyRUNpSUFJb0FwUUl0MFFBQUFBQUFBQk9RS0lnQWlzRHFBaWdvRVFBQUFBQUFCajFRS01pR1RrRDRBVWdBaUFDS0FLZ0NDSUJRWk1DYkxkRUFBQUFBQUFBSWtDam5DQUNLQUtrQ0xjaUNrUUFBQUFBQVBCMlFLSWdBVUVKYXJkRUFBQUFBQUFBS0VDam5DQUtvRVFBQUFBQUFBQWNRS0pFQUFBQUFBQUEwRCtpbktHZ0lBSW9BcHdJdDZCRUFBQUFnTFZDT2tHZ0loczVBOWdGSUJtWlJBQUFBQUFBQVBBL1pBUkFJQUlnR1NBWm5DSUtvU0laT1FQZ0JTQUNJQW9nRzZBaUd6a0QyQVVMSUFKQkFEWUNMQ0FDS3dPd0JpRXJJQUlyQTVBR0lSY2dBaXNEaUFZaEVDQUNLd09vQmlFaklBSXJBK2dGSVJnZ0Fpc0RtQVloSFNBQ0t3T2dCaUVSSUFJckEvQUZJUW9nQWlnQ0dDRUJJQUlyQS9nRklUTWdBa0V3YWtFQVFjd0JFQ2thSUFKQmdBSnFRUUJCdUFNUUtSb2dBa0tCdVpDU3pMYkMyVDgzQTZnSElBSkNqYSs2azdIRXV0ekFBRGNEb0FjZ0FrS0FnSUNBb0lTVmpNRUFOd09ZQnlBQ1FyQ3J0L1drb01xeHYzODNBOGdISUFKQ2hJYUc0TG5rd2QyK2Z6Y0R3QWNnQWtMQjRLN3VuYmpQNHI1L053TzRCeUFDUXRHTmlzdVJuTytvUHpjRHNBY2dBa0w5d3Z6Um1wbTVsY0FBTndPUUJ5QUNRZWtBT2dBb0lBSWdNemtEK0FVZ0FpQUJOZ0lZSUFJZ0NrUmlKSTdDbmlRVVFhTTVBL0FGSUFJZ0VVUTVuVktpUnQrUlA2SWlKVGtEb0FZZ0FpQWRPUU9ZQmlBQ0lCaEVLdU9YUVg5VHZFR2pPUVBvQlNBQ0lDTkVPWjFTb2tiZmtUK2lJaXc1QTZnR0lBSWdFRVE1blZLaVJ0K1JQNklpUERrRGlBWWdBaUFYUkRtZFVxSkczNUUvb2lJbU9RT1FCaUFDSUN0RStNRmpHdHlsYkVDakloRTVBN0FHSUFKQ0FEY0Q4QVlnQWtJQU53UG9CaUFDUWdBM0ErQUdJQUpDQURjRGlBY2dBa0lBTndQWUJpQUNRZ0EzQTRBSElBSkIrZHdCT3dBcElBSkJBRFlDSkNBQ0lEd1FhaUlhSUJxaUloUkVBQUFBQUFBQUZNQ2lSQUFBQUFBQUFQQS9vQ0lRbWlBVW9TQVVvU0l0T1FNNElBSWdHeUFab0VRQUFBREFnSkJDd2FBaUkwUUFBQURBZ0pCQ1FhQkVBQUFBZ0N5MFFzR2dSQUFBQUFDZzFlRkFveUlLUkFBREdrZWRrK2RCb2lBS0lBcEV6c25tQlRNQjJyNmlvaUFLb2lBS0lBcEU2M1FnNjZuVnR6K2lvcUNnUkcyUVNjYm9idkJBb0VRNW5WS2lSdCtSUDZKRUFBQUFBQUFBYmtDalJCZ3RSRlQ3SVJsQUVFd2lDa1FZTFVSVSt5RVpRS0FnQ2lBS1JBQUFBQUFBQUFBQVl4czVBNmdFSUFJZ0VTQVVSQUFBQUFBQUFBaEFva1FBQUFBQUFBRHd2NkJFT3NvVHBsR2JTaitpUkFBQUFBQUFBUEEvSUIwZ0hhSWlEYUVpTGlBdW55SkpvcU1pQ2tTQkhFVEN0QW16UHlBUm8wUlZWVlZWVlZYbFB4QkpJaEZFQUFBQUFBQUE4RDhnQ2lBUklCR2lveUlLSUFxaW9TQUtJQW9nQ2tRQUFBQUFBTUJnUUtLaVJBQUFBQUFBUUZSQW8wUlZWVlZWVlZYVlA2Q2lvYUlpQ2lBS29xTkVBQUFBQUFBQThEK2dveUlUT1FQUUJpQUNJQk5FZlNFL3FzbmtLa0NpUkZWVlZWVlZWZVcvRUVraUNqa0R1QVVnQWlBS0lCMUVBQUFBQUFBQThEK2dva1FBQUFBQUFBRHd2NkE1QThnRklBSWdDa1FBQUFBQUFBRHdQeUFkb1NJWW9rUUFBQUFBQUFEd3Y2QTVBOEFGUklFY1JNSzBDYk0vSUJPalJGVlZWVlZWVmVVL0VFa2hIaUE4RUdzaEZRSkFJQzVFQUFBQUFBQUFBQUJtSUJORUFBQUFBQUFBQUFCbWNrVU5BQ0F1SUI2aUlnb2dDcUloRVNBQ0lCZ2dIcUlpQ2tTYjFyOWFTSTN3UDJNMkFpd0NmQ0FLUkFBQUFBQUFBUEMvb0VTTmwyNFNJK3E0UUtJaUNrUUFBQUFBQUlCalFHTkZCRUJFQUFBQUFBQ0FVMEFoSVVTTU5NRzh4U1lnUGd3QkMwUUFBQUFBQUFCZVFFUUFBQUFBQUFBMFFDQUtSQUFBQUFBQWdGUEFvQ0FLUkFBQUFBQUFnRmhBWXhzaUlhRkVqWmR1RWlQcXVFQ2pJZ29nQ2lBS0lBcWlvcUlMSVFvZ0FpQWVJQjJpUkFBQUFBQUFBUEEvSUI0Z0lVU05sMjRTSStxNFFLTkVBQUFBQUFBQThEK2dJbEtob3lJM29pSXZPUU40SUFJZ0V5QUtJRGRFQUFBQUFBQUFFRUFRU2FJaURrUUFBQUFBQUFEd1B5QXZJQytpSWh5aG1TSWJSQUFBQUFBQUFBeEFFRW1qSWpDaUlCNGdMeUFkb2lJaUlCeEVBQUFBQUFBQUVFQ2dvaUFjUkFBQUFBQUFBUGcvb2tRQUFBQUFBQUR3UDZDZ29pQWNSQUFBQUFBQUFBaEFvaUFjUkFBQUFBQUFBQ0JBb0tKRUFBQUFBQUFBSUVDZ0lDMGdOMFE2eWhPbVVaczZQNklnRzZPaW9xQ2lJRE9pSWlBNUEwQWdBaUFsRUdvaVBTQWRSQzFESE92aU5oby9aQ0lCQkh3Z0ZTQVRJRGNnRGtRQUFBQUFBQUFBd0tLaVJMRFZyVTRDS1dPL29xS2lJQjJqQlVRQUFBQUFBQUFBQUFzZ002S2lPUU9JQVNBQ0lDSWdIS0lnSENBaW9FUUFBQUFBQUFBR1FLSkVBQUFBQUFBQThEK2dvQ0F1SUI0Z01DQXdvS0tpb2prRFVDQUNJRWxFQUFBQUFBQUE4RDhnRWFNaUpDQVRJQ1JFT3NvVHBsR2JXaitpb2lJclJBQUFBQUFBQU9BL29pSUtSTkdHWWhuaHZGRS9vcUlpR0VRQUFBQUFBQUN3UDZJaUVhSWdGQ0FVb2lJWFJBQUFBQUFBSUdGQW9pQVVSQUFBQUFBQWdGUEFva1FBQUFBQUFBQXFRS0Nnb2lCSklBcWlJQzJpSUJPZ29Ea0QwQUVnQWtRQUFBQUFBQUR3UHlBVW9TSUtPUVBBQVNBQ0lDNGdIaUFUSUJPZ0lEQ2lvcUlnTjBUUmhtSVo0YnhSdjZJZ0hpQWJvcU1nTFVRQUFBQUFBQUFJd0tJZ0hDQWlSQUFBQUFBQUFPQy9va1FBQUFBQUFBRDRQNkNpUkFBQUFBQUFBUEEvSUNJZ0lxQ2hvS0lnSlNBbG9CQnFJQXBFQUFBQUFBQUE2RCtpSUJ3Z0hLQWlDaUFjUkFBQUFBQUFBUEEvb0NBaW9xR2lvcUNpSUM4Z0hFUUFBQUFBQUFEZ1A2SkVBQUFBQUFBQUFFQ2dvaUFLUkFBQUFBQUFBT0Evb0NBZG9xQ2dvamtEU0NBQ0lCTWdKQ0FrUk5ScVFXS3hWcWsrb3FLaUlnb2dGMFFBQUFBQUFJQklRS0lnRkVRQUFBQUFBQUJDd0tKRUFBQUFBQUFBQ0VDZ29LSWdLMFFBQUFBQUFBRGd2NklnRUtJZ0YwUUFBQUFBQUxCNFFLSWdGRVFBQUFBQUFJQmN3S0pFQUFBQUFBQUFIRUNnb0NBUm9xQ2dJbG81QTRBQklBSWdHRVFBQUFBQUFBRGdQNklnRkVRQUFBQUFBQUF6d0tKRUFBQUFBQUFBRUVDZ29pQVVSQUFBQUFBQUFCekFva1FBQUFBQUFBQUlRS0FnQ2lBS29LS2dJQnFpSUJvZ0s1cWlJZ3FnSWxzNUE5Z0JJQUlnRGtSVlZWVlZWVlhsdjZJZ002SWdJcU5FQUFBQUFBQUFBQUFnQVJzNUErZ0JJQUlnSUVRQUFBQUFBQUQ0UDZJNUE2QUJJQUlnTEJCck9RT1FBU0FDSUJWRXNOV3RUZ0lwVXoraU9RTXdJQUlnRkVRQUFBQUFBQUFjUUtKRUFBQUFBQUFBOEwrZ09RUElBU0FDSUM1RUFBQUFBQUFBREVDaUlBcWlJQ0NpT1FQd0FTQUNJQnBFQUFBQUFBQUFGRUNpUkFBQUFBQUFBQWhBb0NBVlJMRFZyVTRDS1VNL29xSWdHa1FBQUFBQUFBRHdQNkFpUGtRYTM4UkJabU42UFNBK21VUWEzOFJCWm1ONlBXUWJvemtENEFFZ0FpQXZJQ3dRYXFKRUFBQUFBQUFBOEQrZ0lnb2dDaUFLb3FJNUEzQUNRRVFZTFVSVSt5RVpRQ0FUbzBRQUFBQUFBQ0JzUUdaRkRRQWdBa0VCTmdJc0lBSkI1QUE2QUNwRUNoUXRVTDFiN1Q4aFRFUm53M0ZMY1hiWlB5RWNJQ05FQUFBQUFHRFYwVUNnSWsxRUJLSzk5ZXRJVHIraVJCUjdhQjhyR0JKQW9FUVlMVVJVK3lFWlFCQk1JaEFRYXlJWVJHZkRjVXR4ZHRrL29rUUFBQUFBQUFEd1B5QVFFR29pQ2tTeWE1Ull4a1NpdjZKRWQreE9GSFE5N1QrZ0lpUWdKS0tobnlJc28wUUFBQUFBQUFEd1B5QVlSTnhHdktKLzliWS9vaUFzb3lJWElCZWlvWjhpRVNBS29pQVlJQmRFQ2hRdFVMMWI3VCtpb3FBUWJDRUtJQUpDQURjRHdBTWdBa0lBTndPNEF5QUNRZ0EzQTdBRElBSkNBRGNEcUFNZ0FrSUFOd09nQXlBbUVHb2hKeUFtRUdzaUdTQVJvaUFYSUNlaW9TRWpJQkVnSjZJZ0Z5QVpvcUFoR0NBZFJBQUFBQUFBQUM3QW9pRmNSQUFBQUFBQUFQQS9JQk9qSVYwZ0Zab2hVMFN6QlFnUGFHUHZ2eUUwUkhSZnpteFg2TWcvSVNGRWNZNEFsR29OeVQ0aFZFRUFJUUVnSlJCcklUOGdDaUJOUkhjOEt6NUYyMTgvb2tTZjFianRNVmNYUUtBaVhxQWdFS0VpQ2hCcklSRWdDaEJxSVFwQkFTRURBMEFnTGlBWklDRWdUS0lpRUtJZ05DQW5vcUVpUUNBOW9pQS9JQm9nTkNBWm9pQW5JQkNpb0NJb29pQVZJQ0VnSEtJaUphS2dJa0dpb0NJMVJBQUFBQUFBQUNoQW9pQTFvaUE5SUVHaUlFQWdQNktoSWpnZ09FUUFBQUFBQUFBSXdLS2lvQ0pLb2lCQUlFQ2lJRUVnUWFLZ1JBQUFBQUFBQUFoQW9pQU5JRXFpb0NJUUlCQ2dvQ0VpSUM0Z0lTQW5vaUFaSUV3Z05LSWlFS0tnSWtJZ1BhSWdQeUFhSUNjZ0VLSWdJU0Fab3FFaUxhSWdGU0FjSURTaUlpYWlvQ0pEb3FBaU9VUUFBQUFBQUFBNFFLSWlNQ0Exb2lBNElEMGdRNklnUWlBL29xRWlSRVFBQUFBQUFBQVl3S0lpT3FLZ0lpK2lJRUlnUUtJZ1FTQkRvcUJFQUFBQUFBQUFHRUNpSUEwZ0w2S2dJaEFnRUtDZ0lRNGdMaUE1UkFBQUFBQUFBQ2hBb2lBNW9pQkVJRVJFQUFBQUFBQUFDTUNpb3FBaVM2SWdRaUJDb2lCRElFT2lvRVFBQUFBQUFBQUlRS0lnRFNCTG9xQWlFQ0FRb0tBaE15QTFJRGlpSWhjZ09TQkVvaUlRb1NFYklEVWdSS0lnT0NBNW9xQWhJQ0FRSUJlZ0lTc2dRU0JUSUMyaUlCb2dKcUtnSWtXaUlGTWdLS0lnR2lBbG9xQWlSaUJEb3FCRUFBQUFBQUFBR0VDaUlBMGdOU0EvSUVXaUlrNmlJRDhnUnFJaUtTQTVvcUJFQUFBQUFBQUFPRUNpSURnZ1BTQkZvaUl4b2lBOUlFYWlJaWdnUktLZ1JBQUFBQUFBQUJqQW9xQ2lvQ0VYSUVJZ1JxSWdRQ0JGb3FCRUFBQUFBQUFBR01DaUlBMGdOU0F4b2lBb0lEbWlvRVFBQUFBQUFBQTR3S0lnUkNBcG9pQk9JRGlpb0VRQUFBQUFBQUFZd0tLZ29xQWhFQ0JCUkFBQUFBQUFBQmhBb2lCR29pQU5JRFZFQUFBQUFBQUFPRUNpSUNtaUlDZ2dPRVFBQUFBQUFBQVl3S0lpSnFLZ29xQWhKU0JEUkFBQUFBQUFBQmhBb2lCRm9pQU5JREFnVHFJZ01TQTZvcUNpb0NFdElFQkVBQUFBQUFBQUdNQ2lJRWFpSUEwZ05VUUFBQUFBQUFBNHdLSWdLS0lnS1NBbW9xQ2lvQ0V3SUVKRUFBQUFBQUFBR01DaUlFV2lJQTBnT1VRQUFBQUFBQUE0d0tJZ01hSWdUaUE2b3FDaW9DRW1JRndnU1NCZElGU2lJanFpSWpHaUlTZ2dPa1FBQUFBQUFBRGd2NklnU2FNaEtTQURRUUZ4QkVCRVN4bVQ1MndZb0Q0aFZDQXhJVHNnS3lGUElDQWhLaUFiSVJJZ015RlZJQTRoRmlBaUlWWWdKaUZYSUJBaER5QXdJVElnTFNGWUlCY2hEQ0FsSVZrZ1N5RWZJRW9oTmlBNklVY2dLU0ZJSUNnaFVDQVJJVFFnSkNGTUlCZ2hKeUFzSVJ3Z0NpRWhJQ01oR1NBdklRc0xJQUZCQVhFaEJFRUFJUU5CQVNFQklBUkZEUUFMSUFJZ1ZpQlZvU0JIUkFBQUFBQUFBQURBb2lJS29qa0RtQVFnQWlBV0lBcWlPUU9RQkNBQ0lESWdWNkVnU0NCSW9DSVdvamtEaUFRZ0FpQVBJQmFpT1FPQUJDQUNJQklnVUNCUW9DSVBvamtEMEFNZ0FpQXFJQStpT1FQSUF5QUNJRmtnV0tFZ1NFUUFBQUFBQUFBQXdLSWlENkk1QS9nRElBSWdEQ0FQb2prRDhBTWdBaUE3UkFBQUFBQUFBRExBb2tUMC9kUjQ2U2FSUDZJNUErZ0RJQUlnT3lBN29DSU1JRFlnSDZHaU9RUGdBeUFDSUF3Z0M2STVBOWdESUFJZ0tDQW9vQ0lNSUNDaU9RT1lBeUFDSURwRUFBQUFBQUFBQU1DaUlnOGdJaUF6b2FJNUEvZ0VJQUlnRHlBT29qa0Q4QVFnQWlBcElDbWdJZ3NnTUNBbW9hSTVBK2dFSUFJZ0N5QVFvamtENEFRZ0FpQU1JQnVpT1FPUUF5QUNJRTFFOXZDUUltV2RrVCtpUkNpL29PQzlCaGxBb0VRWUxVUlUreUVaUUJCTU9RT1lCU0FDSUUxRVVJdkJ3N1J2elQraVJGSEY2QlEvNFJKQW9DQmVvVVFZTFVSVSt5RVpRQkJNT1FPUUJTQUNJQTFFQUFBQUFBQUFJc0NpUkFBQUFBQUFBRFhBb0NJTElBcWlSUFQ5MUhqcEpwRS9vamtEb0FRZ0FpQUxJQStpUkFmT0dWSGFHNncvb2prRGdBVWdBaUFwUkFBQUFBQUFBQURBb2lJTElDVWdMYUdpT1FQWUJDQUNJQXNnRjZJNUE5QUVJQUlnTVVRQUFBQUFBQUF5d0tKRUI4NFpVZG9ickQraU9RUElCQ0FDSURFZ01hQWlDeUJLSUV1aG9qa0R3QVFnQWlBTElDK2lPUU80QkNBQ0lCTkVnS3p3dmxSeWRUOWpJQk5FVHdzckEzR1liRDlrY1VFQ0lCMUVBQUFBQUFBQTREOW1SU0FUUkNadzYyNmU2b0EvWmtVZ0UwU3hNNFhPYSt5Q1AyVkZjbklpQXhzaUFUWUMrQUVnQWlzRG1BWWhEaUFDS3dQWUFTRVJJQUlyQTVBR0lTQWdBaXNEMEFZaEZ5QUNLd1BRQVNFUUlBSXJBNmdHSVNvZ0Fpc0RxQVFoRWlBQ0t3T2dCaUVXSUFJckE2Z0hJUThnQWlBcFJNZ3BZOTVxd1NRL29pQXdJQ2Fnb2lCWElES2dJRWhFM2pXSi9tY042VDZpb3FBNUEvQUNJQUlnS0VUSUtXUGVhc0VrUDZJZ0s2SWdUeUJRUk40MWlmNW5EZWsrb3FLZ09RUFFBaUFDSURwRXlDbGozbXJCSkwraUlBMUVBQUFBQUFBQUdNQ2lJZ3NnSWlBem9FUUFBQUFBQUFBc3dLQ2dvaUFMSUZVZ1ZxQkVBQUFBQUFBQUxNQ2dvQ0JIUk40MWlmNW5EZW0rb3FLZ0lrYzVBL2dDSURGRXlDbGozbXJCSkQraUlFb2dTNkJFQUFBQUFBQUFHTUNnb2lFTVJBQUFBQUFBQUFBQUlUSWdPMFRlTlluK1p3M3BQcUlnSHlBMm9FUUFBQUFBQUFBWXdLQ2lJQm9DZkFKQUlEeEVvTmVzN3VuT3FqOWpEUUFnUEVTNmVZbXN2N1lJUUdRTkFDQllJRm1nSUVoRTNqV0ovbWNONmI2aW9nd0JDMFFBQUFBQUFBQUFBQXNnRlVRQUFBQUFBQUR3UHlBVlJBQUFBQUFBQUFBQVlodWpJaHVpb1NFTEFrQWdQRVNnMTZ6dTZjNnFQMk1OQUNBOFJMcDVpYXkvdGdoQVpBMEFJQ2xFeUNsajNtckJKTCtpSUNVZ0xhQ2lJVElMSUFJZ0d6a0RnQU1nQWlBTUlBdWdJaGs1QTRnRElCVkVBQUFBQUFBQUFBQmlCRUFnQWlBYklESWdGYU9nSWhzNUE0QURJQUlnR3BvZ0ZhTWdNcUlnR2FBaUdUa0RpQU1MSUJKRUFBQUFBQUFBQUFDZ1JCZ3RSRlQ3SVJsQUVFd2hHQ0FCUlEwQUlGb2dXNkFoRENBVElBK2pSRlZWVlZWVlZlVS9FRWtoSHdKOElBTkZCRUFnRFNBT29pRU1JQTVFZXhTdVIrRjY1TCtnUkNsY2o4TDFLTnkvb2lFTEFud2dEa1ROek16TXpNemtQMlVFUUNBTlJBclhvM0E5U2pCQW9pQU9SRmc1dE1oMmZpckFva1Foc0hKb2tlME1RS0NnSVJJZ0RFUUsxNk53dmUyUVFLSWdEVVNUR0FSV0RuU1p3S0lnRGtUWG8zQTlDaytLUUtKRUd5L2RKQVpOWXNDZ29LQWhJeUFNUkdpUjdYdy9uM05Bb2lBTlJDL2RKQWFCY1gzQW9pQU9SSkh0ZkQ4MVZtNUFva1JXRGkyeW5ZOUV3S0Nnb0NFbklBeEVVV3VhZDV4U1lrQ2lJQTFFS3FrVDBFVFVhc0NpSUE1RWd1TEhtTHR5VzBDaVJFY0RlQXNrNkRMQW9LQ2dJUmtnREVUMC9kUjQ2WkpqUUtJZ0RVVEZJTEJ5YUkxc3dLSWdEa1FwWEkvQzlWaGRRS0pFV21RNzMwOU5NOENnb0tBaE5DQU1SR1E3MzArTitLeEFvaUFOUkhucEpqRUliTGJBb2lBT1JHSVFXRG4wazZkQW9rVDAvZFI0NmFDQXdLQ2dvQXdCQ3lBTVJQWW9YSTlDUThoQW9pQU5SSHNVcmtleDQ5ZkFvaUFPUkVqaGVoUU9tYzlBb2tSN0ZLNUhZZnVyd0tDZ29DRWpJQXhFaTJ6bisrbUhyRUNpSUExRW9rVzI4LzBadk1DaUlBNUVEaTJ5bmErV3NrQ2lSS2FieENBd2M1REFvS0NnSVNjZ0RFVFp6dmRUNC8rU1FLSWdEVVExWHJwSnpIMml3S0lnRGtRU2c4REtvVXVZUUtKRWo4TDFLRnhwZGNDZ29LQWhHU0FNUk11aFJiWnplSk5Bb2lBTlJKcVptWm5aMzZMQW9pQU9SSlpEaTJ4bnU1aEFva1F2M1NRR2dhMTF3S0Nnb0NFMElBeEUzU1FHZ1pXcmNFQ2lJQTFFSzRjVzJjN0xmOENpSUE1RXlYYStueHE5ZEVDaVJIV1RHQVJXQmxMQW9LQ2dJUklnREVSeFBRclhJNWZlUUtJZ0RVUlN1QjZGNjJqcXdLSWdEa1FVcmtmaE9qemRRS0pFWEkvQzlhZ2R0TUNnb0tBZ0RrVGhlaFN1UitIbVAyUU5BQm9nRFVUaGVoU3VSMmV0UUtJZ0RrUUFBQUFBd0RpeXdLSkVLVnlQd3ZYaWxrQ2dvQXNoQ2lBTFJDL2RKQWFCbGRPL29DRVdBbndnRGtSbVptWm1abWJtUDJNRVFDQU1SR1ptWm1abTNiUkFvaUFOUlBZb1hJOWkyTURBb2lBT1JBQUFBQUJBVXJKQW9rUVgyYzczVTYyS3dLQ2dvQ0VoSUF4RUd5L2RKSWJadEVDaUlBMUVkdUNjRWJXVndNQ2lJQTVFMG05ZkI1N1lzVUNpUk9pazk0MnZ0WW5Bb0tDZ0lUc2dERVFwWEkvQ05hYTFRS0lnRFVUMktGeVBZclRCd0tJZ0RrU1B3dlVvbkh5elFLSkVaYXBnVk5LNWpNQ2dvS0FNQVFzZ0RFVHNVYmdlWFRuOFFLSWdEVVJ4UFFyWFc2QU53YUlnRGtUc1ViZ2VOODhFUWFKRWo4TDFLUHlLNDhDZ29LQWhJU0FNUk1QMUtGeHIzUUZCb2lBTlJEMEsxNk53NHhMQm9pQU9SSnFabVprUHVRcEJva1RaenZkVEEwWHB3S0Nnb0NFN0lBeEVwSEE5Q2grMCtrQ2lJQTFFbXBtWm1YRU9ETUdpSUE1RWo4TDFLSVM2QTBHaVJGeVB3dlY0amVMQW9LQ2dDeUZQSUFJZ0lDQXFJQ0Nnb0NBWW9TQVlvVVFZTFVSVSt5RVpRQkJNSWpJNUE0Z0ZJQUlnRlNBVm9pSTJSQUFBQUFBQUFQZy9vaUFUSUJPaVJBQUFBQUFBQUFoQW9pQWZJQitpb2lJUFJGM2srK2hxQkw0K29pSU1vaUFTb2prRGlBSWdBaUFhSUJxZ0loSkVBQUFBQUFBQThEK2dJZ3NnRktCRUFBQUFBQUFBNkQraUlpb2dES0lnRnFJNUE0QUNJQUlnRlVRQUFBQUFBQUQrdjZJZ0ZFUUFBQUFBQUFBSXdLSWlEQ0FMb0NJV29pQWZJQStpSWc5RUcvMUtYVFFZbVQ2aUlndWlJQm1pT1FPWUFpQUNJQlZFQUFBQUFBQUEvaitpSUF4RUFBQUFBQUFBOEQ4Z0VxRWlES0NpSUF1aUlEU2lPUU9RQWlBQ0lCVWdOa1NWbFEwSUFMQVRRS0lnRkVRQUFBQUFBQUFrUUtJaUVpQWFSQUFBQUFBQUFCREFva1FBQUFBQUFBQUF3S0Nnb2lBV1JKV1ZEUWdBUUJwQW9xQ2lJQjhnSHlBUG9pSVBvaUlZUkluaWFtK3pyWDQrb2lJTG9pQWhvamtEdUFJZ0FpQVZSQUFBQUFBQXNDTkFvaUEySUJSRUFBQUFBQUFBRk1DaUlBeWdvaUFVUkFBQUFBQUFBQmhBb2lBYVJBQUFBQUFBQUJCQW9rUUFBQUFBQUFBQXdLQ2dSTm9Td1ZGVlZkVS9vcUNpSUF1aUlBcWlPUU93QWlBQ0lEWWdOa1FBQUFBQUFMQkRRS0tpSUE4Z0Q2QkV2ZUNMOW5lZ1B6NmlJZ3VpSUNPaU9RT29BaUFDSURaRUFBQUFBQUNBUVVDaUlDcWlJQXVpSUNlaU9RT2dBaUFDSUJWRUFBQUFBQUNJUFVDaUloWWdGQ0FVUkFBQUFBQUFBQ1RBb2lBYVJBQUFBQUFBQUNCQW9pSVBSQUFBQUFBQUFDaEFvS0NpSUJwRUFBQUFBQUFBSU1DaUlneEVBQUFBQUFBQUFNQ2dvS0lnR0NBWW9FUzM5RXZIV2JJaVBxSWlDNklnVDZJNUE4Z0NJQUlnRmlBVUlCSWdEMFFBQUFBQUFBQW93S0Nnb2lBTVJBQUFBQUFBQUFCQW9LQ2lJQXVpSUR1aU9RUEFBaUFSSUJ1Z1JGZXRUbHJONjNHL29DSUxJQXVnSUVjZ0VLQ2dEQUVMSUFJZ0ZpQXFJQ0Nnb0NBWW9VUVlMVVJVK3lFWlFCQk1Jakk1QTRnRklBSWdEU0FOUkFBQUFBQUFBT28vb2tRQUFBQUFBQUFFd0tDaVJBQUFBQUFBQVBBL29DQStJRDVFQUFBQUFBQUE2RCtpSWd1aUlCOGdFeUFUUkFBQUFBQUFBQWhBb3FJZ0g2S2lJZzhnRDZDaW9rUmQ1UHZvYWdTK1BxSTVBK0FDSUFJZ0h5QU5JQTJnUkFBQUFBQUFBUEEvb0NBVklCVkVBQUFBQUFBQTdqK2lvaUFhUkFBQUFBQUFBQWhBb2tRQUFBQUFBQUR3UDZDaUlBdWhJQStpb2tTMXRpd1pxUURDUHFLaU9RUFlBaUFDSUI4Z0RTQU5SSEtuZExEK2J4cEFva1FBQUFBQUFBQVl3S0NpUkFBQUFBQUFBUEEvb0NBK0lENGdQa1FBQUFBQUFBRCtQNktpb2lBUFJBQUFBQUFBQUFoQW9xS2lSQUF6amZwb3NZMCtvcUk1QStnQ0lFY2dEQ0FRb0VSWHJVNWF6ZXR4djZDZ0lCbWdJQnVnQ3lFTElBSWdNamtEcUFVZ0FrSUFOd09nQlNBQ0lCYzVBN0FGSUFJZ0N5QVhvVGtEc0FRTElBSW9BaXhCQVVZTkFDQUNJQjVFQUFBQUFBQUFFRUNpSURlaUlBSXJBMEFpRmlBV29pSVBvaUlTT1FOWUlBSWdEeUFQb0NBU29Ea0RxQUVnQWlBZVJBQUFBQUFBQURGQW9pQlNvQ0FXSURjZ0VxS2lSQUFBQUFBQUFBaEFveUlMb2lJTU9RTmdJQUlnREVRQUFBQUFBQUFJUUtJZ0ZpQVNSQUFBQUFBQUFDaEFvaUFQUkFBQUFBQUFBQ1JBb3FDaW9FUUFBQUFBQUFEUVA2STVBN0FCSUFJZ0ZpQWVSQUFBQUFBQW9HdEFvaUJTUkFBQUFBQUFBRDlBb3FBZ055QWVJQXRFQUFBQUFBQUE0RCtpb3FLaW9pSUxPUU5vSUFJZ0QwUUFBQUFBQUFBdVFLSWdFaUFTb0NBUG9LSWdFa1FBQUFBQUFBQVlRS0lnRXFJZ0MwUUFBQUFBQUFBSVFLSWdGa1FBQUFBQUFBQW9RS0lnREtLZ29LQkVtcG1abVptWnlUK2lPUU80QVFzZ0FrRVlha1FBQUFBQUFBQUFBQ0FDUWRBSWFpQUNRYkFJYWhCdElBSkI3Z0E2QUNrTElBQWdBaXNEMkFVZ0Fpc0Q0QVdnUkFBQUFNREZua0xCb0VRQUFBQUFjSm1VUWFJaUtqa0RRQ0FBUkJndFJGVDdJUmxBSUFJckE3QUdvMFFBQUFBQUFBQk9RS0pFQUFBQUFBQkFqMENpSWdzNUF5QWdBQ0FMUkFBQUFBQUFRSTlBb3lJTE9RTW9JQUlnQ3prRDJBY2dBQ0FDS3dQSUJTSVBPUU5nSUFBZ0Fpc0R3QVVpRERrRGFDQUFJQUlyQTVnR0loWTVBM0FnQUNBQ0t3T0lCamtEZUNBQ0t3T2dCeUVTSUFBZ0NEWUNuQUVnQUNBU09RT0FBU0FBUWdBM0EwZ2dBQ0JSUkFCVTJsdG1xUFpDSUZGRUFBQUFBQUFBQUFCa0d5QUxSQmd0UkZUN0lSbEFveUlMSUF1aW9rUlZWVlZWVlZYVlB4QkpJZ3RFQUFBQUFBQUE4RDhnRmlBV29xR2ZvamtET0NBQUlBczVBekFnQUVJQU53TlFJQUJDQURjRFdDQUFJQThnRXFKRUFBQUFBQUJBajBDaU9RT1FBU0FBSUF3Z0VxSkVBQUFBQUFCQWowQ2lPUU9JQVNBQVFSaHFJZ1FoQVFKQUFrQWdBQ2dDR0NJRFJRMEFBMEFnQXlJQkt3TVFJZ3NnS21RRVFDQUJJZ1FvQWdBaUF3MEJEQUlMSUFzZ0ttTkZEUUlnQVNnQ0JDSUREUUFMSUFGQkJHb2hCQXRCOEFjUVZDSURJQ281QXhBZ0EwRVlha0VBUWRnSEVDa2FJQU1nQVRZQ0NDQURRZ0EzQWdBZ0JDQUROZ0lBSUFNaEFTQUFLQUlVS0FJQUlnVUVRQ0FBSUFVMkFoUWdCQ2dDQUNFQkN5QUFLQUlZSUFFUWJpQUFJQUFvQWh4QkFXbzJBaHdMSUFOQkdHb2dBa0VZYWlJQlFkZ0hFQ3NhSUFCQm9BRnFJQUZCMkFjUUt4b2dBaXdBK3dkQkFFZ0VRQ0FDS0FMd0J4QTBDeUFDTEFDSENFRUFTQVJBSUFJb0F2d0hFRFFMSUFJc0FKTUlRUUJJQkVBZ0FpZ0NpQWdRTkFzZ0FrSHdDR29rQUVFQUR3c1FWUUFMWFFFQ2Z5TUFRUkJySWdNa0FDQUJJQUFvQWdRaUJFRUJkV29oQVNBQUtBSUFJUUFnQkVFQmNRUkFJQUVvQWdBZ0FHb29BZ0FoQUFzZ0F5QUNOZ0lNSUFFZ0EwRU1haUFBRVFNQUlRQWdBeWdDREJBQ0lBTkJFR29rQUNBQUN3MEFJQUVnQUNnQ0FHb3JBd0FMRHdBZ0FTQUFLQUlBYWlBQ09RTUFDdzBBSUFFZ0FDZ0NBR29vQWdBTER3QWdBU0FBS0FJQWFpQUNOZ0lBQ3hrQUlBQUVRQ0FBS0FJQUVHZ2dBQ2dDQkJCb0lBQVFOQXNMS0FFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWd3Z0FDQUJJQUlRdEFFaEFDQURRUkJxSkFBZ0FBdkhBUUVDZnlNQVFSQnJJZ0VrQUFKOElBQzlRaUNJcDBILy8vLy9CM0VpQWtIN3c2VC9BMDBFUUVRQUFBQUFBQUR3UHlBQ1FaN0JtdklEU1EwQkdpQUFSQUFBQUFBQUFBQUFFT0FFREFFTElBQWdBS0VnQWtHQWdNRC9CMDhOQUJvQ1FBSkFBa0FDUUNBQUlBRVF1UUZCQTNFT0F3QUJBZ01MSUFFckF3QWdBU3NEQ0JEZ0JBd0RDeUFCS3dNQUlBRXJBd2hCQVJEZkJKb01BZ3NnQVNzREFDQUJLd01JRU9BRW1nd0JDeUFCS3dNQUlBRXJBd2hCQVJEZkJBc2hBQ0FCUVJCcUpBQWdBQXZMQVFFQ2Z5TUFRUkJySWdFa0FBSkFJQUM5UWlDSXAwSC8vLy8vQjNFaUFrSDd3NlQvQTAwRVFDQUNRWUNBd1BJRFNRMEJJQUJFQUFBQUFBQUFBQUJCQUJEZkJDRUFEQUVMSUFKQmdJREEvd2RQQkVBZ0FDQUFvU0VBREFFTEFrQUNRQUpBQWtBZ0FDQUJFTGtCUVFOeERnTUFBUUlEQ3lBQkt3TUFJQUVyQXdoQkFSRGZCQ0VBREFNTElBRXJBd0FnQVNzRENCRGdCQ0VBREFJTElBRXJBd0FnQVNzRENFRUJFTjhFbWlFQURBRUxJQUVyQXdBZ0FTc0RDQkRnQkpvaEFBc2dBVUVRYWlRQUlBQUxxQU1DQlg4QmZpQUF2VUwvLy8vLy8vLy8vLzhBZzBLQmdJQ0FnSUNBK1A4QVZDQUJ2VUwvLy8vLy8vLy8vLzhBZzBLQWdJQ0FnSUNBK1A4QVdIRkZCRUFnQUNBQm9BOExJQUc5SWdkQ0lJaW5JZ0pCZ0lEQS93TnJJQWVuSWdWeVJRUkFJQUFRcHdFUEN5QUNRUjUyUVFKeElnWWdBTDBpQjBJL2lLZHlJUU1DUUNBSFFpQ0lwMEgvLy8vL0IzRWlCQ0FIcDNKRkJFQUNRQUpBSUFOQkFtc09BZ0FCQXd0RUdDMUVWUHNoQ1VBUEMwUVlMVVJVK3lFSndBOExJQUpCLy8vLy93ZHhJZ0lnQlhKRkJFQkVHQzFFVlBzaCtUOGdBS1lQQ3dKQUlBSkJnSURBL3dkR0JFQWdCRUdBZ01EL0IwY05BU0FEUVFOMFFZRDJFbW9yQXdBUEN5QUVRWUNBd1A4SFJ5QUNRWUNBZ0NCcUlBUlBjVVVFUUVRWUxVUlUreUg1UHlBQXBnOExBbndnQmdSQVJBQUFBQUFBQUFBQUlBUkJnSUNBSUdvZ0Fra05BUm9MSUFBZ0FhT1pFS2NCQ3lFQUFrQUNRQUpBSUFNT0F3UUFBUUlMSUFDYUR3dEVHQzFFVlBzaENVQWdBRVFIWEJRekpxYWh2S0NoRHdzZ0FFUUhYQlF6SnFhaHZLQkVHQzFFVlBzaENjQ2dEd3NnQTBFRGRFR2c5aEpxS3dNQUlRQUxJQUFMcnlBQ01Yd0VmeU1BUVRCcklqVWtBQ0FBSUFFNUE0QUJJQUJCQURZQ0RDQUFLd1BZQVNBQklBR2lJZ1dpSVFnZ0FDc0R3QUVnQWFJZ0FDc0QrQVdnSVFvZ0JTQUFLd09JQWFJaEVpQUFLd1BnQlNJR0lBQXJBekNpSUFHaUlSaEVBQUFBQUFBQThEOGdBQ3NES0NBQm9xRWhEeUFBS3dOb0lpY2dBYUlnQUNzRGlBWWlLS0FoRENBQUt3TzRBU0FCb2lBQUt3T1FCcUFoQkNBQUt3T1FCeUVkSUFBckE0Z0hJUjhnQUNnQ0ZFRUJSd1JBSUFVZ0FhSWlDU0FCb2lJSElBRWdBQ3NEb0FHaUlBQXJBNWdCb0tJZ0FDc0RrQUVnQ2FJZ0VxQ2dJUklnRHlBQUt3TkFJQVdpb1NBQUt3TklJQW1pb1NBQUt3TlFJQWVpb1NFUElBQXJBMkFoQlNBRUVHb2hDU0FNSUFBckEzQWdBYUlnQUNzRDBBRWdCU0FKb2tRQUFBQUFBQUR3UDZBaUJTQUZvaUFGb2lBQUt3TllvYUtnSWdXaElRd2dBQ3NEZUNFSklBUWdCYUFpQkJCcklRVWdCaUFBS3dNNG9pQUZJQW1ob2lBWW9DRVlDeUFJSUFxZ0lRZ2dBQ3NEOEFVaENTQUFLd09BQmlFVFFRSWhOZ0pBQWtBQ2ZDQUFLd080QmlJUUlBQXRBQklpT0VIa0FFY05BQm9nQUNzRDRBSWhCU0FBS3dQb0FpQUJvaUFJb0NFSUlBQXJBL0FDSUFHaUlBeWdJUXdnQUNzRDJBSWdBYUlnQ2FBaENTQUFLd080QWlBQm9pQVRvQ0VUSUFBckEvQUVJUW9nQUNzRG1BUWhHU0FBS3dQUUFpRVZJQUFyQThnQ0lSRWdBQ3NEd0FJaEZpQUFLd093QWlFYUlBQXJBNmdDSVJzZ0FDc0RvQUloSENBQUt3T1lBaUVnSUFBckE1QUNJU0VnQUNzRGlBSWhJaUFBS3dPQUFpRWpJQUFyQS9nQklTUWdBQ3NEOEFFaEpTQUFLd1BvQVNFbUlBQW9BdUFCSVRjZ0FVUlhyVTVhemV0eFA2SWdBQ3NEa0FTZ1JCZ3RSRlQ3SVJsQUVFd2hGQ0EzUlFSQUlBVWdBYUlnQktBaEJDQVFEQUVMQWtBQ1FDQUFLd09JQlNJRlJBQUFBQUFBQUFBQVlRMEFJQVVnQWFKRUFBQUFBQUFBQUFCbERRQWdBWmtnQlpsalJRMEJDeUFBSUJBNUE1Z0ZJQUJDQURjRGlBVWdBQ0FLT1FPUUJVUUFBQUFBQUFBQUFDRUZDMFFBQUFBQUFJQ0dRRVFBQUFBQUFJQ0d3Q0FCUkFBQUFBQUFBQUFBWkJzaERTQUFLd09ZQlNFR0lBQXJBNUFGSVFRQ1FDQTNRUUpHQkVBRFFDQUVSR0NrWVVJV0V4ZkFvQ0lSRUdvaEN5QUVJQ2NnQmFJZ0tLQWlDaUFLb0NJT29FUmdwR0ZDRmhNWHdLQWlGUkJxSVJZZ0NpQUVvQ0lIUlBTSXNHVWlldTYvb0NJWEVHb2hLU0FFSUFxaEloNUU5SWl3WlNKNjdyK2dJaW9RYWlFcklBZEV6T3VJUXpiUThMK2dJaXdRYWlFdElCNUV6T3VJUXpiUThMK2dJaDRRYWlFdUlBUWdCS0FpQjBRM0FreDA4ZEw4djZBaUx4QnFJVEFnRGlBSG9FUTNBa3gwOGRMOHY2QWlNUkJxSVRJZ0NpQUhvRVE0Q3JWTHdLUVJ3S0FpTXhCcUlUUWdCaUFab0NJT0lCb2dCeUFLb1VRNENyVkx3S1FSd0tBaUNoQnFvaUFiSURTaUlDSWdNcUlnTUNBaG9xQ2dvQ0lISUFlZ0lCd2dMcUlnSUNBdG9pQWpJQ3VpSUNRZ0thSWdKaUFXb2lBTElDV2lvS0Nnb0tDZ29pRUxJQkVRYXlFSElCVVFheUVSSUJjUWF5RVZJQ29RYXlFV0lERVFheUVYSUM4UWF5RXBJQ3dRYXlFcUlCNFFheUVlSURNUWF5RXJJQm9nQ2hCcm9pQWJJQ3VpSUJ3Z0hxSWdJQ0Fxb2lBaElDbWlJQ0lnRjZJZ0l5QVdvaUFrSUJXaUlDWWdFYUlnQnlBbG9xQ2dvS0Nnb0tDZ29DRUtJQUVnQmFFaUI1bEVBQUFBQUFDQWhrQm1SUTBDSUFBZ0RTQUZvQ0lGT1FPSUJTQUFJQXRFQUFBQUFBQ2tEMEdpSUFvZ0RhSWdCcUNnSWdZNUE1Z0ZJQUFnQ2tRQUFBQUFBS1FQUWFJZ0RpQU5vaUFFb0tBaUJEa0RrQVVNQUFzQUN5QVZSQUFBQUFBQUFBaEFvaUVhSUJFZ0VhQWhHd05BSUFSRTFVZ2lacnpPd0wrZ0lnY1FheUVLSUFSRVlLUmhRaFlUQjhDZ0lnNGdEcUFpRGhCcklRc2dGU0FFUkEwcmFKeCs5OWUvb0VRQUFBQUFBQUFJUUtJaUhCQnJvaUFXSUFxaUlBc2dFYUtnb0NFS0lBY1FhaUVISUE0UWFpRUxJQVlnR2FBaURpQWFJQndRYXFJZ0ZpQUhvaUFiSUF1aW9LQ2lJUXNnQVNBRm9TSUhtVVFBQUFBQUFJQ0dRR1pGRFFFZ0FDQU5JQVdnSWdVNUE0Z0ZJQUFnQzBRQUFBQUFBS1FQUWFJZ0NpQU5vaUFHb0tBaUJqa0RtQVVnQUNBS1JBQUFBQUFBcEE5Qm9pQU9JQTJpSUFTZ29DSUVPUU9RQlF3QUN3QUxJQlFnRktBZ0J5QUtJQWVpSWdXaVJBQUFBQUFBQU9BL29pQU9JQWVpSUFTZ29DSUVJQWdnQ0tDaG9DQVVJQVFnQ0tFZ0RLR2dJRGRCQVVjYklRUWdCeUFMSUFlaW9rUUFBQUFBQUFEZ1A2SWdCU0FHb0tBZ0VLRWdFS0FMSWdWRUFBQUFBQUFBQUFCbERRQWdEeUFQSUIwZ0JhTkVWVlZWVlZWVjVUOFFTYUtpSWdwRUFBQUFBQUFBK0Q4UVNTRUdRUUVoTmlBVElCaWhJZ1ZFQUFBQUFBQUE4RDltRFFBZ0JVVDhxZkhTVFdKUXYyTU5BQ0FBSUIwZ0JxTWlHRGtEOEFZZ0FDQUpPUVBRQmlBQUlBbzVBOEFHSUFBZ0RFUVlMVVJVK3lFWlFCQk1JZ1k1QStBR0lBQWdDRVFZTFVSVSt5RVpRQkJNSWdjNUE5Z0dJQUJFamUyMW9QZkdzRDRnQlNBRlJJM3R0YUQzeHJBK1l4c2lCVGtEeUFZZ0FDQVFJQktpSUFTZ0lBeWdJQWlnUkJndFJGVDdJUmxBRUV3Z0JxRWdCNkZFR0MxRVZQc2hHVUFRVENJRU9RUG9CaUExSUFrNUF4Z2dOU0FGT1FNb0lEVWdCamtESUNBMUlBYzVBd2dnTlNBRU9RTVFBa0FnT0VIa0FFY0VRQ0FBS3dQSUFTRUdJQUFyQXhnaEFTQUpFR3NoQ0NBSkVHb2hEQXdCQ3lBQUt3UDRBaUVISUFBckE0QURJUTBnQUNzRGlBTWhFQ0FBS3dPUUF5RVBJQUFyQTVnRElRNGdBQ3NEb0FNaERDQUFLd09vQXlFTElBQXJBN0FESVJJZ0FDc0R1QU1oRXlBQUt3UEFBeUVSSUFBckE4Z0RJUlFnQUNzRDBBTWhHU0FBS3dQWUF5RVZJQUFyQStBRElSWWdBQ3NENkFNaENDQUFLd1B3QXlFYUlBQXJBL2dESVJzZ0FDc0RnQVFoSENBQUt3T0lCQ0VnSUFBckE2QUVJU0VnQUNzRHFBUWhJaUFBS3dPd0JDRWpJQUFyQTdnRUlTUWdBQ3NEd0FRaEpTQUFLd1BJQkNFRklBQXJBOUFFSVFZZ0FDc0QyQVFoSmlBQUt3UGdCQ0VuSUFBckErZ0VJU2dnQUNzRCtBUWhDU0FBTEFBUUlUWWdBVVRlTlluK1p3M3BQcUlnQUNzRGdBV2dJZ1FRYTBUMC9kUjQ2U2FoUDZJZ0JLQWlGeEJySVFRZ0Z4QnFJUmNnTlNBRklBRkV5Q2xqM21yQkpEK2lJQW1nSWdFUWEwUUh6aGxSMmh1OFA2SWdBYUFpQ1JCcklnRkVBQUFBQUFBQTREK2lJQUdpUkFBQUFBQUFBTkMvb0NJRm9pQUpFR29nQVVRQUFBQUFBQURndjZLaUlna2dCcUtnSUFnZ0JDQUVSQUFBQUFBQUFPQS9vcUpFQUFBQUFBQUEwTCtnSWdpaUlCY2dCRVFBQUFBQUFBRGd2NktpSWdZZ0dxS2dvQ0FNb1NJTUlEVXJBeGlnT1FNWUlEVWdEU0FGb2lBSklBZWlvQ0FTSUFpaUlBWWdFNktnb0NBUW9TQTFLd01vb0RrREtDQWtJQVdpSUFrZ0phS2dJQlVnQ0tJZ0JpQVdvcUNnSUE2aElRY2dJeUFCb2lBaElBV2lJQWtnSXFLZ29DQVpJQVNpSUJFZ0NLSWdCaUFVb3FDZ29DQVBvU0VOSUNnZ0FhSWdKaUFGb2lBSklDZWlvS0FnSUNBRW9pQWJJQWlpSUFZZ0hLS2dvS0FnQzZFaENTQTFLd01ZSWdVUWFpRUJJQVVRYXlFRUFrQWdCVVNhbVptWm1abkpQMllFUUNBMUlBMGdBU0FISUFTaklnR2lvU0ExS3dNZ29Ea0RJQ0ExSUFFZ05Tc0RDS0E1QXdnZ05TQUpJRFVyQXhDZ09RTVFEQUVMSURVZ05Tc0RDQ0lHUkJndFJGVDdJUmxBRUV3aUJVUVlMVVJVK3lFWlFLQWdCU0FGUkFBQUFBQUFBQUFBWXhzZ0JTQTJRZUVBUmlJMkd5SUZPUU1JSUFZUWF5RUlJQVlRYWlFR0lEVXJBeUFoRUNBMUt3TVFJUThnTlNBRUlBaWlJQWNnQnFJZ0NDQU1JQUdpSWc2aW9LQWdCQ0FHb2lBT0lBYWlJQWNnQ0tLaG9CQnNJZ2hFR0MxRVZQc2hHVUNnSUFnZ0NFUUFBQUFBQUFBQUFHTWJJQWdnTmhzaUNFUVlMVVJVK3lFWlFFUVlMVVJVK3lFWndDQUZJQWhrRzBRQUFBQUFBQUFBZ0NBRklBaWhtVVFZTFVSVSt5RUpRR1Fib0RrRENDQTFJQWtnTlNzREVLQWlDRGtERUNBMUlBRWdCYUlnRHlBUW9LQWdDU0FOb0NBRklBeWlJQVNpb2FBZ0NLRWdBU0ExS3dNSW9xRTVBeUFMSURVckF4Z2lDVVFBQUFBQUFBQUFBR01FUUNBMUlEVXJBd2hFR0MxRVZQc2hDVUNnT1FNSUlEVWdOU3NESUVRWUxVUlUreUVKd0tBNUF5QWdDWm9oQ1F0QkF5RTJJRFVyQXlnaUJVUUFBQUFBQUFBQUFHTU5BU0FGUkFBQUFBQUFBUEEvWkEwQklBQXJBN0FISVFRZ0FDQUpFR3NpQ0NBRVJBQUFBQUFBQU9DL29xSWlBVGtER0NBSkVHb2lERVFBQUFBQUFBQVVRS0pFQUFBQUFBQUFDRUNnSUFnZ0JFUUFBQUFBQUFEUXY2S2lvaUVFSUFBQ2ZDQU1SQUFBQUFBQUFQQS9vQ0lHbVVRYTM4UkJabU42UFdRRVFDQUVJQWFqREFFTElBUkVHdC9FUVdaamVqMmpDeUlHT1FQSUFRc2dCU0ExS3dNZ0lnUVFhNklnQVVRQUFBQUFBQUR3UHlBS1JBQUFBQUFBQVBBL0lBVWdCYUtob3FNaUFhS2dJZ2VhSVE1QkFTRTJJQUVnQnFJZ0JTQUVFR3FpSWdHaUlBUWdOU3NERUtBZ05Tc0RDQ0lQb0tBZ0Q2RkVHQzFFVlBzaEdVQVFUQ0lHSVFRRFFFUm1abVptWm1idVAwUm1abVptWm1idXZ5QUJJQVFRYXlJTm9pSUxJQTRnQkJCcUloQ2lJaElnQnFDZ0lBU2hSQUFBQUFBQUFQQS9JQkFnQWFJaUU2RWdEU0FIb2lJUm9hTWlCVVFBQUFBQUFBQUFBR1FiSUFVZ0JabEVabVptWm1abTdqOW1HeUlGbVVRUjZpMkJtWmR4UFdZRVFDQUVJQVdnSVFRZ05rRUtTU0UzSURaQkFXb2hOaUEzRFFFTEMwRUVJVFlnQ2tRQUFBQUFBQUR3UHlBQklBR2lJQWNnQjZLZ29TSUVvaUlPUkFBQUFBQUFBQUFBWXcwQUlCOGdIYUpFQUFBQUFBQUFUa0NqSVFVZ0NpQUtSQUFBQUFBQUFQQS9JQk1nRWFDaG9pSUdveUlUSUEwZ0I2RWdBU0FMSUJLZ0lnc2dCSjhpRWtRQUFBQUFBQUR3UDZDaklnMmlvYUlpQkNBVElBY2dEYUlnRUNBQm9hQ2lJZ0VnQWFDaUlRMGdCRVFBQUFBQUFBQUF3S0lnQktKRUFBQUFBQUFBOEQrZ0lSQWdDcDhnQzZJZ0JxTWhFeUFPbnlBR295RVJJQVFnQVJCc0lSUkVBQUFBQUFBQThEOGdEcU1pQVNBQklBQXJBNWdIUkFBQUFBQUFBT0Evb3FJaURxSWhDd0pBSURoQjVBQkhCRUFnQUNzRHNBRWhCQ0FBS3dPb0FTRUtJQUFyQXlBaEJ3d0JDeUFBUkFBQUFBQUFBUEEvSUF3Z0RLSWlBYUVpQ2prRHFBRWdBQ0FCUkFBQUFBQUFBQnhBb2tRQUFBQUFBQUR3djZBaUJEa0RzQUVnQUNBQlJBQUFBQUFBQUFoQW9rUUFBQUFBQUFEd3Y2QWlCemtESUFzZ0MwUUFBQUFBQUFEUXY2SWdCS0lnRGFJZ0ZLQWlCQkJxSVFFZ0RDQUxSQUFBQUFBQUFQZy9vaUlMb2lJVUlBMmlJQStnSWc4UWFpRU1JQThRYXlFUElBSWdIeUFHUkFBQUFBQUFBUEEvSUJJZ0M2SWdCNktob2lBUUlBNUVBQUFBQUFBQTREK2lJQXFpb3FBaUJpQUlJQlNpSUJDaUlBbWdJZ2tRYWlJSUlBK2FvaUlMSUFRUWF5SUVvaUFNSUFHaW9DSVNvcUk1QXdBZ0FpQUFLd09JQnlBR0lBUWdEQ0FJb2lJVW9pQVBJQUdpb0NJZm9xSTVBd2dnQWlBR0lBUWdDUkJySWhtaUlnaWlJQUFyQTRnSG9qa0RFQ0FESUFVZ0V5QU5JQmdnRHFJaURTQUtvcUlnSGFPaElna2dDS0lnRVNBTklBb2dFS0lnQjBRQUFBQUFBQUQ0UDZLZ29pQWRvNkFpQ0NBWklBR2lvcUNpT1FNUUlBTWdCU0FKSUIraUlBZ2dGQ0FCb2lBRUlBK2lvYUtnb2prRENDQURJQVVnQ1NBU29pQUlJQXNnQWFJZ0JDQU1vcUdpb0tJNUF3QkJCaUUySUFaRUFBQUFBQUFBOEQ5alJRMEJDeUFBSURZMkFnd0xJRFZCTUdva0FBdVVCQUVEZnlBQklBQWdBVVlpQWpvQURBSkFJQUlOQUFOQUlBRW9BZ2dpQWkwQURBMEJBa0FnQWlBQ0tBSUlJZ01vQWdBaUJFWUVRQUpBSUFNb0FnUWlCRVVOQUNBRUxRQU1EUUFNQWdzQ1FDQUJJQUlvQWdCR0JFQWdBaUVCREFFTElBSWdBaWdDQkNJQktBSUFJZ0EyQWdRZ0FTQUFCSDhnQUNBQ05nSUlJQUlvQWdnRklBTUxOZ0lJSUFJb0FnZ2lBQ0FBS0FJQUlBSkhRUUowYWlBQk5nSUFJQUVnQWpZQ0FDQUNJQUUyQWdnZ0FTZ0NDQ0lES0FJQUlRSUxJQUZCQVRvQURDQURRUUE2QUF3Z0F5QUNLQUlFSWdBMkFnQWdBQVJBSUFBZ0F6WUNDQXNnQWlBREtBSUlOZ0lJSUFNb0FnZ2lBQ0FBS0FJQUlBTkhRUUowYWlBQ05nSUFJQUlnQXpZQ0JDQURJQUkyQWdnUEN3SkFJQVJGRFFBZ0JDMEFEQTBBREFFTEFrQWdBU0FDS0FJQVJ3UkFJQUloQVF3QkN5QUNJQUVvQWdRaUFEWUNBQ0FCSUFBRWZ5QUFJQUkyQWdnZ0FpZ0NDQVVnQXdzMkFnZ2dBaWdDQ0NJQUlBQW9BZ0FnQWtkQkFuUnFJQUUyQWdBZ0FTQUNOZ0lFSUFJZ0FUWUNDQ0FCS0FJSUlRTUxJQUZCQVRvQURDQURRUUE2QUF3Z0F5QURLQUlFSWdBb0FnQWlBVFlDQkNBQkJFQWdBU0FETmdJSUN5QUFJQU1vQWdnMkFnZ2dBeWdDQ0NJQklBRW9BZ0FnQTBkQkFuUnFJQUEyQWdBZ0FDQUROZ0lBSUFNZ0FEWUNDQXdDQ3lBRVFReHFJUUVnQWtFQk9nQU1JQU1nQUNBRFJqb0FEQ0FCUVFFNkFBQWdBeUlCSUFCSERRQUxDd3Y0QndJR2Z3dDhJQUVnQUNzRFFLRkVVbUxOaEFONjhUNmlJUXdnQUNnQ0hFRUNUd1JBQWtBQ2ZBSkFBa0FnQUVFWWFpSUhLQUlBSWdoRkJFQWdCeUVFQTBBZ0JDZ0NDQ0lGS0FJQUlBUkdJUVlnQlNFRUlBWU5BQXNNQVFzZ0J5RUZJQWdoQkFOQUlBVWdCQ0FFS3dNUUlBRmpJZ1liSVFVZ0JFRUVhaUFFSUFZYktBSUFJZ1FOQUFzZ0JTQUhSdzBCSUFnaEJBTkFJQVFpQlNnQ0JDSUVEUUFMQ3lBRkt3TVFEQUVMQWtBQ1FDQUFLQUlVSUFWSEJFQWdCU2dDQUNJR0RRRWdCU0VHQTBBZ0JpZ0NDQ0lFS0FJQUlBWkdJUWtnQkNFR0lBa05BQXNNQWdzZ0JTc0RFQXdDQ3dOQUlBWWlCQ2dDQkNJR0RRQUxDeUFFS3dNUUlnb2dCU3NERUNJTElBRWdDcUVnQ3lBQm9XTWJDeUlCUkFBQUFBQUFBUEMvWVFSQUlBQW9BaFFoQlF3QkN5QUhJUVFDUUNBSVJRMEFBMEFnQ0NJRUt3TVFJZ29nQVdRRVFDQUVJUWNnQkNnQ0FDSUlEUUVNQWdzZ0FTQUtaRVVFUUNBRUlRVU1Bd3NnQkNnQ0JDSUlEUUFMSUFSQkJHb2hCd3RCOEFjUVZDSUZJQUU1QXhBZ0JVRVlha0VBUWRnSEVDa2FJQVVnQkRZQ0NDQUZRZ0EzQWdBZ0J5QUZOZ0lBSUFVaEJDQUFLQUlVS0FJQUlnZ0VRQ0FBSUFnMkFoUWdCeWdDQUNFRUN5QUFLQUlZSUFRUWJpQUFJQUFvQWh4QkFXbzJBaHdMSUFCQm9BRnFJQVZCR0dwQjJBY1FLeG9MSUFCQm9BRnFJQXhCa0lRVVFiQ0VGQkJ0QWtBZ0FDZ0NyQUVpQkVFQVNnUkFJQUpGRFFFZ0FrSUFOd01BSUFKQ0FEY0RFQ0FDUWdBM0F3Z2dBQ2dDckFFUEMwRUFJUVJCMElNVVFZQ0dGQ3NEQUNJTFFhQ0VGQ3NEQUNJQm9rSDRoUlFyQXdBaURVR1loQlFyQXdBaURLSkI4SVVVS3dNQUlnNUJrSVFVS3dNQUlncWlSQUFBQUFBQUFBQUFvS0NnUkFBQUFBQUFRSTlBb2prREFFSHdneFFnQzBIQWhCUXJBd0FpQzZJZ0RVRzRoQlFyQXdBaURhSWdEa0d3aEJRckF3QWlEcUpFQUFBQUFBQUFBQUNnb0tCRUFBQUFBQUJBajBDaU9RTUFRZGlERkNBQlFaaUdGQ3NEQUNJU29pQU1RWkNHRkNzREFDSVRvaUFLUVlpR0ZDc0RBQ0lVb2tRQUFBQUFBQUFBQUtDZ29FUUFBQUFBQUVDUFFLSTVBd0JCc0lZVUt3TUFJUTlCb0lZVUt3TUFJUkJCcUlZVUt3TUFJUkZCK0lNVUlCSWdDNklnRXlBTm9pQVVJQTZpUkFBQUFBQUFBQUFBb0tDZ1JBQUFBQUFBUUk5QW9qa0RBRUhnZ3hRZ0R5QUJvaUFSSUF5aUlCQWdDcUpFQUFBQUFBQUFBQUNnb0tCRUFBQUFBQUJBajBDaU9RTUFRWUNFRkNBUElBdWlJQkVnRGFJZ0VDQU9va1FBQUFBQUFBQUFBS0Nnb0VRQUFBQUFBRUNQUUtJNUF3QWdBa0hnZ3hRcEF3QTNBeEFnQWtIWWd4UXBBd0EzQXdnZ0FrSFFneFFwQXdBM0F3QWdBMEdBaEJRcEF3QTNBeEFnQTBINGd4UXBBd0EzQXdnZ0EwSHdneFFwQXdBM0F3QUxJQVFMZXdFQ2YwSG82eEpCdk9nU1FlVG9Fa0VBUWRqc0VrRVJRWkRxRWtFQVFaRHFFa0VBUWZzOVFkdnNFa0VTRUFOQjZPc1NRUUpCOU9nU1FlanNFa0VUUVJRUUJFRUVFRlFpQUVFRU5nSUFRUVFRVkNJQlFRUTJBZ0JCNk9zU1FZYkJBRUhnN2hKQjZPd1NRUlVnQUVIZzdoSkJnTzBTUVJZZ0FSQUdDeFFBSUFBRVFDQUFJQUFvQWdBb0FnUVJBUUFMQzZFQkFRUi9Jd0JCRUdzaUFpUUFJQUVvQWdBaUEwSHcvLy8vQjBrRVFBSkFJQU5CQ2swRVFDQUNJQU02QUE4Z0FrRUVhaUVFREFFTElBTkJEM0pCQVdvaUJSQlVJUVFnQWlBRlFZQ0FnSUI0Y2pZQ0RDQUNJQVEyQWdRZ0FpQUROZ0lJQ3lBRUlBRkJCR29nQXhBcklBTnFRUUE2QUFBZ0FrRUVhaUFBRVFBQUlRQWdBaXdBRDBFQVNBUkFJQUlvQWdRUU5Bc2dBa0VRYWlRQUlBQVBDeEJWQUF1aEFRRUZmeU1BUVJCcklnSWtBRUVRRUZRaEFTQUFLQUlFSVFRZ0FDZ0NBQ0VESUFJZ0FDMEFDam9BRGlBQ0lBQXZBUWc3QVF3Z0FFSUFOd0lBSUFBc0FBc2hCU0FBUVFBMkFnZ2dBVUdFN0JJMkFnQUNRQ0FGUVFCT0JFQWdBU0FETmdJRUlBRWdCRFlDQ0NBQklBSXZBUXc3QVF3Z0FTQUNMUUFPT2dBT0lBRWdCVG9BRHd3QkN5QUJRUVJxSUFNZ0JCQjJJQU1RTkFzZ0FrRVFhaVFBSUFFTFJRRUNmeUFCSUFBb0FnQnFJZ0FvQWdRZ0FDMEFDeUlCSUFIQVFRQklJZ01iSWdGQkJHb1FNeUlDSUFFMkFnQWdBa0VFYWlBQUtBSUFJQUFnQXhzZ0FSQXJHaUFDQzY4QkFRUi9Jd0JCRUdzaUF5UUFJQUlvQWdBaUJFSHcvLy8vQjBrRVFBSkFJQVJCQ2swRVFDQURJQVE2QUE4Z0EwRUVhaUVGREFFTElBUkJEM0pCQVdvaUJoQlVJUVVnQXlBR1FZQ0FnSUI0Y2pZQ0RDQURJQVUyQWdRZ0F5QUVOZ0lJQ3lBRklBSkJCR29nQkJBcklBUnFRUUE2QUFBZ0FTQUFLQUlBYWlJQUxBQUxRUUJJQkVBZ0FDZ0NBQkEwQ3lBQUlBTXBBZ1EzQWdBZ0FDQURLQUlNTmdJSUlBTkJFR29rQUE4TEVGVUFDNXdCQVFKL0l3QkJFR3NpQkNRQUFrQUNRQ0FDUVF0SkJFQWdBQ0FDT2dBTERBRUxJQUpCOFAvLy93ZFBEUUVnQkVFSWFpQUNRUXRQQkg4Z0FrRVFha0Z3Y1NJRElBTkJBV3NpQXlBRFFRdEdHd1ZCQ2d0QkFXb1FqZ0lnQUNBRUtBSUlJZ00yQWdBZ0FDQUVLQUlNUVlDQWdJQjRjallDQ0NBQUlBSTJBZ1FnQXlFQUN5QUFJQUVnQWtFQmFoRGhBUm9nQkVFUWFpUUFEd3NRVlFBTEh3QWdBRUdFN0JJMkFnQWdBQ3dBRDBFQVNBUkFJQUFvQWdRUU5Bc2dBQXNoQUNBQVFZVHNFallDQUNBQUxBQVBRUUJJQkVBZ0FDZ0NCQkEwQ3lBQUVEUUw3UUVCQW45QjJPMFNRZUR0RWtHdzZSSkJBRUhZN0JKQkdFR1E2aEpCQUVHUTZoSkJBRUhDT1VIYjdCSkJHUkFEUWRqdEVrRUJRY0RwRWtIWTdCSkJHa0ViRUFSQkJCQlVJZ0JCQkRZQ0FFRUVFRlFpQVVFRU5nSUFRZGp0RWtIWndBQkI2UFVUUWVqc0VrRWNJQUJCNlBVVFFZRHRFa0VkSUFFUUJrRUlFRlFpQUVFQU5nSUVJQUJCSGpZQ0FFSFk3UkpCN3oxQkEwSEU2UkpCb08wU1FSOGdBRUVBUVFBUUJVRUlFRlFpQUVFQU5nSUVJQUJCSURZQ0FFRUlFRlFpQVVFQU5nSUVJQUZCSVRZQ0FFSFk3UkpCNmpwQnNQWVRRZWpzRWtFaUlBQkJzUFlUUVlEdEVrRWpJQUVRQmd2QUFRRURmeUFBQkVBZ0FFR0U2UkkyQWdBQ1FFSFloQlFvQWdBaUFrSFVoQlJHRFFBZ0FpRUJBa0FEUUFKQUlBRW9BZ1FoQXlBQktBSUlJQUJHRFFBZ0F5SUJRZFNFRkVjTkFRd0NDd3NnQVNnQ0FDSUNJQU0yQWdRZ0FTZ0NCQ0FDTmdJQVFkeUVGRUhjaEJRb0FnQkJBV3MyQWdBZ0FSQTBRZGlFRkNnQ0FDRUNDeUFDUWRTRUZFWU5BRUVBSVFFRFFDQUNLQUlJSUFFMkFoQWdBVUVCYWlFQklBSW9BZ1FpQWtIVWhCUkhEUUFMQzBIZ2hCUkJBVG9BQUNBQUVEUUxDM29CQTM5QkZCQlVJZ0ZCQVRvQUJDQUJRWVRwRWpZQ0FFSEloQlF0QUFCRkJFQkJEQkJVSWdCQjFJUVVOZ0lFSUFBZ0FUWUNDQ0FBUWRTRUZDZ0NBQ0lDTmdJQUlBSWdBRFlDQkVIVWhCUWdBRFlDQUVIY2hCUkIzSVFVS0FJQUlnQkJBV28yQWdBZ0FTQUFOZ0lRQzBIZ2hCUkJBVG9BQUNBQkN3MEFJQUVnQUNnQ0FHb3RBQUFMRHdBZ0FTQUFLQUlBYWlBQ09nQUFDeDRBSUFBZ0FTQUFLQUlJUVFBZ0FDZ0NBQ2dDQUJFVEFCb2dBQ2dDQ0FzM0FRRi9JQUVnQUNnQ0JDSURRUUYxYWlFQklBQW9BZ0FoQUNBQklBSWdBMEVCY1FSL0lBRW9BZ0FnQUdvb0FnQUZJQUFMRVJvQUN3Y0FJQUFvQWhBTENRQWdBQ0FCTmdJUUN6VUJBWDhnQVNBQUtBSUVJZ0pCQVhWcUlRRWdBQ2dDQUNFQUlBRWdBa0VCY1FSL0lBRW9BZ0FnQUdvb0FnQUZJQUFMRVFBQUN6Y0JBWDhnQVNBQUtBSUVJZ05CQVhWcUlRRWdBQ2dDQUNFQUlBRWdBaUFEUVFGeEJIOGdBU2dDQUNBQWFpZ0NBQVVnQUFzUkFnQUxCQUJCQUF0REFRTi9Jd0JCSUdzaUFTUUFJQUZCQ0dvaUF5QUFOd01BSUFGQkdHb2lBaUFCUVJCcUlBTXBBd0FRMWdFcEF3QTNBd0FnQWlrREFDRUFJQUZCSUdva0FDQUFDNVFCQVFKL0FrQUNRQUpBQWtBZ0FDMEFDeUlEUVlBQmNVRUhkZ1JBSUFBb0FnUWlBeUFBS0FJSVFmLy8vLzhIY1VFQmF5SUNSZzBCREFJTFFRb2hBaUFEUWY4QWNTSURRUXBIRFFJTElBQWdBa0VCSUFJZ0FoQzlBeUFDSVFNTElBQW9BZ0FoQWlBQUlBTkJBV28yQWdRTUFRc2dBQ0FEUVFGcU9nQUxJQUFoQWdzZ0FpQURhaUlBSUFFNkFBQWdBRUVBT2dBQkMrTUJBUUovSUFKQkFFY2hBd0pBQWtBQ1FDQUFRUU54UlEwQUlBSkZEUUFnQVVIL0FYRWhCQU5BSUFBdEFBQWdCRVlOQWlBQ1FRRnJJZ0pCQUVjaEF5QUFRUUZxSWdCQkEzRkZEUUVnQWcwQUN3c2dBMFVOQVFKQUlBQXRBQUFnQVVIL0FYRkdEUUFnQWtFRVNRMEFJQUZCL3dGeFFZR0NoQWhzSVFNRFFDQUFLQUlBSUFOeklnUkJmM01nQkVHQmdvUUlhM0ZCZ0lHQ2hIaHhEUUlnQUVFRWFpRUFJQUpCQkdzaUFrRURTdzBBQ3dzZ0FrVU5BUXNnQVVIL0FYRWhBUU5BSUFFZ0FDMEFBRVlFUUNBQUR3c2dBRUVCYWlFQUlBSkJBV3NpQWcwQUN3dEJBQXVCQVFFQ2Z3SkFBa0FnQWtFRVR3UkFJQUFnQVhKQkEzRU5BUU5BSUFBb0FnQWdBU2dDQUVjTkFpQUJRUVJxSVFFZ0FFRUVhaUVBSUFKQkJHc2lBa0VEU3cwQUN3c2dBa1VOQVFzRFFDQUFMUUFBSWdNZ0FTMEFBQ0lFUmdSQUlBRkJBV29oQVNBQVFRRnFJUUFnQWtFQmF5SUNEUUVNQWdzTElBTWdCR3NQQzBFQUMyTUJBbjhDUUVIY2hCUW9BZ0JGRFFCQjJJUVVLQUlBSWdBb0FnQWlBVUhVaEJRb0FnQWlBaWdDQkRZQ0JDQUNLQUlFSUFFMkFnQkIzSVFVUVFBMkFnQWdBRUhVaEJSR0RRQURRQ0FBS0FJRUlRRWdBQkEwSUFFaUFFSFVoQlJIRFFBTEN3dnhBUUVCZjBIWTZSSkI2T2tTUVlEcUVrRUFRZGpzRWtFblFaRHFFa0VBUVpEcUVrRUFRYVRBQUVIYjdCSkJLQkFEUWRqcEVrRUJRWlRxRWtIWTdCSkJLVUVxRUFSQkNCQlVJZ0JDaUlDQWdCQTNBd0JCMk9rU1FjckFBRUVDUWF6cUVrSG83QkpCS3lBQVFRQkJBQkFGUWNEcUVrSFk2aEpCOU9vU1FkanBFa0hZN0JKQkxFSFk3QkpCTFVIWTdCSkJMa0g1TzBIYjdCSkJMeEFEUWNEcUVrRUNRWVRyRWtIbzdCSkJNRUV4RUFSQkNCQlVJZ0JDaUlDQWdCQTNBd0JCd09vU1FjckFBRUVDUWFEckVrSG83QkpCTWlBQVFRQkJBQkFGUWFEQUFFRUNRYWpyRWtHUTdSSkJNMEUwUVFBUUN3c1RBUUYvUVFRUVZDSUFRYURxRWpZQ0FDQUFDNU1CQVFWL0l3QkJFR3NpQWlRQUlBQW9BZ0FoQXlBQ1FRUnFJZ1FnQVNBQUtBSUVJZ0JCQVhWcUlnRWdBRUVCY1FSL0lBRW9BZ0FnQTJvb0FnQUZJQU1MRVFJQUlBSW9BZ2dnQWkwQUR5SUFJQURBSWdOQkFFZ2lCUnNpQUVFRWFoQXpJZ0VnQURZQ0FDQUJRUVJxSUFJb0FnUWlCaUFFSUFVYklBQVFLeG9nQTBFQVNBUkFJQVlRTkFzZ0FrRVFhaVFBSUFFTEtRRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBa0VNYWlBQUVRQUFJUUFnQWtFUWFpUUFJQUFMRVFCQkJCQlVJZ0JCbE9zU05nSUFJQUFMQ1FBZ0FTQUFFUUVBQzNJQkFuOGpBRUVRYXlJQkpBQWdBVUVFYWlJQ0lBQWdBQ2dDQUNnQ0NCRUNBQ0FCSUFFb0FnUWdBaUFCTEFBUFFRQklHellDQUNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3hCMFB3VFFaZytJQUVReGdFZ0FFRVFhaVFBSUFFc0FBOUJBRWdFUUNBQktBSUVFRFFMSUFGQkVHb2tBQXNHQUNBQUVEUUxJQUFnQUVFQU9nQUlJQUJDMCtxSm04YXQyTG56QURjQ0FDQUFRUWc2QUFzTEd3QWdBRUVBT2dBRUlBQkJ3c0xOcXdZMkFnQWdBRUVFT2dBTEM3d0RBUUYvUWZEckVrR2c3QkpCeU93U1FlanJFa0hZN0JKQk5rSFk3QkpCTjBIWTdCSkJPRUgxT1VIYjdCSkJPUkFEUWZEckVrRUNRZURzRWtIbzdCSkJPa0U3RUFSQkNCQlVJZ0JCQURZQ0JDQUFRVHcyQWdCQjhPc1NRWVhBQUVFQ1FlenNFa0hvN0JKQlBTQUFRUUJCQUJBRlFRZ1FWQ0lBUVFBMkFnUWdBRUUrTmdJQVFmRHJFa0hUT1VFRFFmVHNFa0dBN1JKQlB5QUFRUUJCQUJBRlFRZ1FWQ0lBUVFBMkFnUWdBRUhBQURZQ0FFSHc2eEpCdmo1QkFrR0k3UkpCa08wU1FjRUFJQUJCQUVFQUVBVkJDQkJVSWdCQkFEWUNCQ0FBUWNJQU5nSUFRZkRyRWtHVHdBQkJBMEdVN1JKQm9PMFNRY01BSUFCQkFFRUFFQVZCQ0JCVUlnQkJBRFlDQkNBQVFjUUFOZ0lBUWZEckVrSHZQVUVGUWJEdEVrSHc3UkpCeFFBZ0FFRUFRUUFRQlVFSUVGUWlBRUVBTmdJRUlBQkJ4Z0EyQWdCQjhPc1NRYTdBQUVFRlFiRHRFa0h3N1JKQnhRQWdBRUVBUVFBUUJVRUlFRlFpQUVFQU5nSUVJQUJCeHdBMkFnQkI4T3NTUWVrNVFRVkJzTzBTUWZEdEVrSEZBQ0FBUVFCQkFCQUZRUWdRVkNJQVFRQTJBZ1FnQUVISUFEWUNBRUh3NnhKQndqeEJBa0g0N1JKQjZPd1NRY2tBSUFCQkFFRUFFQVVMMHdJQkJYOGpBRUVRYXlJQkpBQkJJQkJVSVFJZ0FDZ0NCQ0VESUFBb0FnQWhCQ0FCSUFBdEFBbzZBQUlnQVNBQUx3RUlPd0VBSUFCQ0FEY0NBQ0FBTEFBTElRVWdBRUVBTmdJSUFrQUNRQUpBSUFWQkFFNEVRQ0FCSUFFdEFBSTZBQTRnQVNBRE5nSUlJQUVnQkRZQ0JDQUJJQUV2QVFBN0FRd2dBU0FGT2dBUElBSkJoT3dTTmdJQUlBSkJCR29oQUF3QkN5QUJRUVJxSUFRZ0F4QjJJQUVzQUE4aEF5QUNRWVRzRWpZQ0FDQUNRUVJxSVFBZ0EwRUFTQTBCQ3lBQUlBRXBBZ1EzQWdBZ0FDQUJLQUlNTmdJSURBRUxJQUFnQVNnQ0JDQUJLQUlJRUhZZ0FTd0FEMEVBVGcwQUlBRW9BZ1FRTkFzZ0FrRzQ2eEkyQWdBZ0FrRVlFRlEyQWhCQkdCQlVJUUFnQWtJQU53SVlJQUlnQURZQ0ZFR0FoUlJDQURjREFFSDRoQlJDQURjREFFSEFoUlJDQURjREFFSEloUlJDQURjREFDQUZRUUJJQkVBZ0JCQTBDeUFCUVJCcUpBQWdBZ3NKQUVIY2hCUW9BZ0FMbndVQkNIOGpBRUVRYXlJREpBQkIySVFVS0FJQUlRSWdBeUFEUVFScUlnQTJBZ2dnQXlBQU5nSUVJQUpCMUlRVVJ3UkFRZHlFRkNnQ0FDRUhJQU5CQkdvaEJRTkFBbjhnQWlnQ0JDSUFJQUVnQWlnQ0NFY05BQnBCMUlRVUlRUUNRQ0FBUWRTRUZFWUVRRUVCSVFrTUFRc0RRQ0FBS0FJSUlnUWdBVVloQ1NBQklBUkhCRUFnQUNFRURBSUxRZFNFRkNFRUlBQW9BZ1FpQUVIVWhCUkhEUUFMQ3lBQ0lBUkhCRUJCQUNFQUlBSWhCa0hjaEJRZ0J5QUNJQVFvQWdBaUJVWUVmMEVCQlFOQUlBQWlCMEVCYWlFQUlBWW9BZ1FpQmlBRlJ3MEFDeUFIUVFKcUN5SUFheUlITmdJQUlBSW9BZ0FpQmlBRktBSUVOZ0lFSUFVb0FnUWdCallDQUNBREtBSUVJZ1lnQWpZQ0JDQUNJQVkyQWdBZ0F5QUZOZ0lFSUFVZ0EwRUVhallDQkNBQUlBaHFJUWdMSUFRZ0NRMEFHaUFFS0FJRUN5SUNRZFNFRkVjTkFBc0NRQ0FJUlEwQUlBTW9BZ2dpQUNnQ0FDSUNJQVVvQWdRMkFnUWdCU2dDQkNBQ05nSUFJQU5CQURZQ0RDQUFJQU5CQkdwR0RRQURRQ0FBS0FJRUlRSWdBQkEwSUFJaUFDQURRUVJxUncwQUN3dEIySVFVS0FJQUlRSUxJQUVFUUNBQlFZVHBFallDQUFKQUlBSkIxSVFVUmcwQUlBSWhBQUpBQTBBQ1FDQUFLQUlFSVFRZ0FDZ0NDQ0FCUmcwQUlBUWlBRUhVaEJSSERRRU1BZ3NMSUFBb0FnQWlBaUFFTmdJRUlBQW9BZ1FnQWpZQ0FFSGNoQlJCM0lRVUtBSUFRUUZyTmdJQUlBQVFORUhZaEJRb0FnQWhBZ3NnQWtIVWhCUkdEUUJCQUNFQUEwQWdBaWdDQ0NBQU5nSVFJQUJCQVdvaEFDQUNLQUlFSWdKQjFJUVVSdzBBQ3d0QjRJUVVRUUU2QUFBZ0FSQTBRZGlFRkNnQ0FDRUNDeUFDUWRTRUZFY0VRRUVBSVFBRFFDQUNLQUlJSUFCQkFXb2lBRFlDRUNBQ0tBSUVJZ0pCMUlRVVJ3MEFDd3RCNElRVVFRRTZBQUFnQTBFUWFpUUFDK3NDQVFWL1FkaUVGQ2dDQUNJRVFkU0VGRWNFUUFOQUlBUW9BZ2dpQlFSQUlBVkJoT2tTTmdJQVFkaUVGQ2dDQUNJQklRSUNRQ0FCUWRTRUZFWU5BQUpBQTBBQ1FDQUNLQUlFSVFNZ0FpZ0NDQ0FGUmcwQUlBTWlBa0hVaEJSSERRRU1BZ3NMSUFJb0FnQWlBU0FETmdJRUlBSW9BZ1FnQVRZQ0FFSGNoQlJCM0lRVUtBSUFRUUZyTmdJQUlBSVFORUhZaEJRb0FnQWhBUXRCQUNFQ0lBRkIxSVFVUmcwQUEwQWdBU2dDQ0NBQ05nSVFJQUpCQVdvaEFpQUJLQUlFSWdGQjFJUVVSdzBBQ3d0QjRJUVVRUUU2QUFBZ0JSQTBDeUFFS0FJRUlnUkIxSVFVUncwQUN3c0NRRUhjaEJRb0FnQkZEUUJCMklRVUtBSUFJZ0VvQWdBaUFrSFVoQlFvQWdBaUF5Z0NCRFlDQkNBREtBSUVJQUkyQWdCQjNJUVVRUUEyQWdBZ0FVSFVoQlJHRFFBRFFDQUJLQUlFSVFNZ0FSQTBJQU1pQVVIVWhCUkhEUUFMQzBIZ2hCUkJBVG9BQUNBQUtBSVlJZ01FUUNBREVEUUxJQUFvQWh3aUFBUkFJQUFRTkFzTE5RRUJmeUFCSUFBb0FnUWlBa0VCZFdvaEFTQUFLQUlBSVFBZ0FTQUNRUUZ4Qkg4Z0FTZ0NBQ0FBYWlnQ0FBVWdBQXNSQVFBTG53WUNCWDhEZkNNQVFlQUFheUlESkFBZ0FDZ0NHQ0VDQWtCQjRJUVVMUUFBQkVBZ0FDQUNRZHlFRkNnQ0FFRVliQkExTmdJWUlBQWdBQ2dDSEVIY2hCUW9BZ0JCR0d3UU5UWUNIRUhnaEJSQkFEb0FBQXdCQ3lBQ0RRQWdBRUhjaEJRb0FnQkJHR3dpQWhBek5nSVlJQUFnQWhBek5nSWNDMEVBSVFJZ0FVUUFBQUFBY0ptVVFhTkVBQUFBd01XZVFrR2dRZmlFRkNzREFLQWlDVVFBQUFDQUxMUkN3YUJFQUFBQUFLRFY0VUNqSWdkRUFBTWFSNTJUNTBHaUlBY2dCMFRPeWVZRk13SGF2cUtpSUFlaUlBY2dCMFRyZENEcnFkVzNQNktpb0tCRWJaQkp4dWh1OEVDZ1JEbWRVcUpHMzVFL29rUUFBQUFBQUFCdVFLTkVHQzFFVlBzaEdVQVFUQ0lJUkJndFJGVDdJUmxBb0NBSUlBaEVBQUFBQUFBQUFBQmpHeUVJSUFsRUFBQUF3QWl5UWtGa0JFQWdCMFQ4cWZIU1RXS0FQNklnQjZJZ0I2SWdCMFRiK1g2aXNvOWF3YUlnQjBSU3VCNkY2OUVkUUtJZ0I2S2dvRVFBQUFBQUFDQ3NRS05FR3JhNWM5bENYMENnUkFBQUFBQUFnSFpBRUV4RU9aMVNva2Jma1QraUlnY1FheUVKSUFjZ0I2QVFhMFRyZzhRNk92MzBQYUlnQ1VUbDllaUpYbnhMUHFJZ0NLQ2dJUWdMSUFOQ0FEY0RPQ0FEUVVCclFnQTNBd0FnQTBJQU53TklJQU5DZ0lDQWdJQ0FnUGcvTndOUUlBTWdDRVFZTFVSVSt5RVpRQkJNSWdjUWFpSUlPUU13SUFOQ0FEY0RJQ0FESUFjUWF5SUhPUU1vSUFNZ0NEa0RFQ0FESUFlYU9RTVlBMEFnQWtFWWJFSHdoUlJxSUFOQkVHb2dBa0VEZEdvckF3QTVBd0FnQWtFQmFpSUNRUU5IRFFBTFFRQWhBZ05BSUFKQkdHeEIrSVVVYWlBQ1FRTjBJQU5xS3dNb09RTUFJQUpCQVdvaUFrRURSdzBBQzBFQUlRSURRQ0FDUVJoc1FZQ0dGR29nQWtFRGRDQURha0ZBYXlzREFEa0RBQ0FDUVFGcUlnSkJBMGNOQUF0QjJJUVVLQUlBSWdKQjFJUVVSd1JBQTBBQ1FDQUNLQUlJSWdVdEFBUkZCRUFnQTBIa0FEWUNBRUg4L2hOQndPc1NJQU1RREJvTUFRc2dCU0FCSUFSQkdHd2lCaUFBS0FJWWFpQUFLQUljSUFacUlBVW9BZ0FvQWdBUkV3QWFDeUFFUVFGcUlRUWdBaWdDQkNJQ1FkU0VGRWNOQUFzTElBQW9BaGdoQUNBRFFlQUFhaVFBSUFBTEhnQWdBU0FDSUFBb0FoQkJBQ0FCS0FJQUtBSUFFUk1BR2lBQUtBSVFDenNCQVg4Z0FTQUFLQUlFSWdWQkFYVnFJUUVnQUNnQ0FDRUFJQUVnQWlBRElBUWdCVUVCY1FSL0lBRW9BZ0FnQUdvb0FnQUZJQUFMRVJzQUN4NEFJQUVnQWtFQUlBQW9BaFFnQVNnQ0FDZ0NBQkVUQUJvZ0FDZ0NGQXNIQUNBQUtBSWNDd2tBSUFBUW9BRVFOQXRpQVFGL0lBQkJ1T3NTTmdJQUlBQW9BaEFpQVFSQUlBRVFOQXNnQUNnQ0ZDSUJCRUFnQVJBMEN5QUFLQUlZSWdFRVFDQUJFRFFMSUFBb0Fod2lBUVJBSUFFUU5Bc2dBRUdFN0JJMkFnQWdBQ3dBRDBFQVNBUkFJQUFvQWdRUU5Bc2dBQXNaQUVHQ1BFRUdRWUR1RWtHWTdoSkJ5d0JCekFCQkFCQUxDeEVBSUFFZ0FpQURJQVFnQlNBQUVTQUFDK291QXlwOEIzOEJma1FBQUFBQUFBRHdQeUFBS3dNQVJQeXA4ZEpOWWxBL29pSWxJQ1dpSUFBckF3aEUvS254MGsxaVVEK2lJaVlnSnFLZ0lBQXJBeEJFL0tueDBrMWlVRCtpSWljZ0o2S2duNk1oQlVISWhoUXJBd0JFQUFBQUFBQUFBQUJoQkVCQnlJWVVRcTJHOGRpdTNJMk5QemNEQUF0QndJWVVLd01BSVJSQnNQc1RLd01BSVE4Z0JTQW1vaUFGSUNXaUVHd2lDUkJxSVFjQ2ZDQUZJQ2VpSWdpOUlqWkNJSWluUWYvLy8vOEhjU0lBUVlDQXdQOERUd1JBSUFoRUdDMUVWUHNoK1QraVJBQUFBQUFBQUhBNG9DQTJweUFBUVlDQXdQOERhM0pGRFFFYVJBQUFBQUFBQUFBQUlBZ2dDS0dqREFFTEFrQWdBRUgvLy8vK0EwMEVRQ0FBUVlDQVFHcEJnSUNBOGdOSkRRRWdDQ0FJSUFpaUVLMEJvaUFJb0F3Q0MwUUFBQUFBQUFEd1B5QUltYUZFQUFBQUFBQUE0RCtpSWcyZklRWWdEUkN0QVNFRkFud2dBRUd6NXJ6L0EwOEVRRVFZTFVSVSt5SDVQeUFHSUFXaUlBYWdJZ1VnQmFCRUIxd1VNeWFta2J5Z29Rd0JDMFFZTFVSVSt5SHBQeUFHdlVLQWdJQ0FjSU8vSWdnZ0NLQ2hJQVlnQnFBZ0JhSkVCMXdVTXlhbWtUd2dEU0FJSUFpaW9TQUdJQWlnb3lJRklBV2dvYUdoUkJndFJGVDdJZWsvb0FzaUJab2dCU0EyUWdCVEd5RUlDeUFJQ3lFRlFhaUhGQ0FIT1FNQVFiQ0hGQ0FKRUdzNUF3QkJvSWNVSUFVUWFqa0RBRUc0aHhRZ0JSQnJtamtEQUFKQUFrQUNRQUpBSUFNT0FnTUFBUXRCQ0JCVUlqQkNBRGNEQUF3QkMwUUFBQUFBQUFBQUFDRUdBa0FDUUFKQUFrQUNRQ0FEdDBRQUFBQUFBQUR3djZBaUNVUUFBQUFBQUFBQUFHUkZEUUJFR0MxRVZQc2hDVUFnQ2FNaEJVRUFJUUFEUUNBRklBYWlSQUFBQUFBQUFBQUFvQ0VIQWtBZ0FDQXZTUVJBSUFBZ0J6a0RBQ0FBUVFocUlRQU1BUXNnQUNBeGEwRURkU0kxUVFGcUlqUkJnSUNBZ0FKUERRTkIvLy8vL3dFZ0x5QXhheUl5UVFKMUlqQWdOQ0F3SURSTEd5QXlRZmovLy84SFR4c2lMd1IvSUM5QmdJQ0FnQUpQRFFZZ0wwRURkQkJVQlVFQUN5STBJRFZCQTNScUlqSWdCemtEQUNBeUlUQWdBQ0F4UndSQUEwQWdNRUVJYXlJd0lBQkJDR3NpQUNzREFEa0RBQ0FBSURGSERRQUxDeUF2UVFOMElEUnFJUzhnTWtFSWFpRUFJREVFUUNBeEVEUUxJREFoTVFzZ0NTQXpRUUZxSWpPM0lnWmtEUUFMSUFBZ0wwWU5BQ0FBUXBqYWtLSzF2OGlFd0FBM0F3QU1CQXNnTHlBeGF5SXpRUU4xSWpCQkFXb2lNa0dBZ0lDQUFra05BUXNRVndBTFFmLy8vLzhCSUROQkFuVWlBQ0F5SUFBZ01rc2JJRE5CK1AvLy93ZFBHeUlBQkg4Z0FFR0FnSUNBQWs4TkFTQUFRUU4wRUZRRlFRQUxJREJCQTNScUlqQkNtTnFRb3JXL3lJVEFBRGNEQUNBdklERkhCRUFEUUNBd1FRaHJJakFnTDBFSWF5SXZLd01BT1FNQUlDOGdNVWNOQUFzTElERkZEUUVnTVJBMERBRUxFS1FCQUFzZ0EwRUFUQTBCQ3lBQ1JCZ3RSRlQ3SVFsQW9rUUFBQUFBQUlCbVFLTWhLRVFBQUFBQUFBRHdQeUFVSUJTaUlBOGdENktqb1o4aUJTQUZtcUloTGlBQlFRRkhJVE5CQUNFdkEwQkJ1SWNVS3dNQUlRMUJzSWNVS3dNQUlROGdNQ0F2UVFOMGFpc0RBQ0lGRUdvaEJrR29oeFFyQXdBaENDQVBJQVVRYXlJSm9pQUdJQWdnRGFLaW9DQUlRYUNIRkNzREFDSUhva1FBQUFBQUFBQUFBS0lnQ0NBSklBMmlJZ1dpSUFZZ0Q2S2hSQUFBQUFBQUFBQUFvcUNnSWg0Z0phSWdCaUFQSUEyaW9pQUpJQWlpb1NBSElBK2lSQUFBQUFBQUFBQUFvaUFHSUFpaUlBOGdCYUtnUkFBQUFBQUFBQUFBb3FDZ0loOGdKcUtnSUFZZ0I2SWdDU0FIb2tRQUFBQUFBQUFBQUtJZ0RVUUFBQUFBQUFBQUFLS2hvQ0lkSUNlaW9DSUdJQjFCd0lZVUt3TUFJZzBnRGFKQnNQc1RLd01BSWdVZ0JhSWlDYU9pb2lBZElDNmlJQjJpSWdkRUFBQUFBQUFBOEQrZ0lnaWpJU3NnSHlBR29pQUlveUVzSUI0Z0JxSWdDS01oTFNBRlJBQUFBQUFBQVBBL0lBWWdCcUlpQlNBSklBaWlvNkdmb2lFU0lBMGdCMFFBQUFBQUFBRHdQeUFGSUFtam9hQ2ZvaUFJb3lFY0Fud0NRQ0FlUkFBQUFBQUFBQUFBWVNBZlJBQUFBQUFBQUFBQVlYRWlBRVVOQUNBZFJBQUFBQUFBQVBBL1lnMEFRY2lIRkVJQU53TUFRY0NIRkVLQWdJQ0FnSUNBK0Q4M0F3QkIwSWNVUWdBM0F3QkVBQUFBQUFBQThEOGhJa1FBQUFBQUFBQUFBQ0VqUkFBQUFBQUFBQUFBSVNSRUFBQUFBQUFBOEQ4aElFUUFBQUFBQUFBQUFDRWhSQUFBQUFBQUFBQUFEQUVMSUFCRklCMUVBQUFBQUFBQThMOWlja1VFUUVISWh4UkNBRGNEQUVIQWh4UkNnSUNBZ0lDQWdQZy9Od01BUWRDSEZFSUFOd01BUkFBQUFBQUFBUEMvSVNCRUFBQUFBQUFBOEQ4aElrUUFBQUFBQUFBQUFDRWpSQUFBQUFBQUFBQUFJU1JFQUFBQUFBQUFBQUFoSVVRQUFBQUFBQUFBQUF3QkMwSFFoeFJFQUFBQUFBQUE4RDhnSGlBZW9pQWZJQitpb0NJRm42TWlCMFFBQUFBQUFBQUFBS0lpSXprREFFSEloeFFnQnlBZW1xSWlKRGtEQUVIQWh4UWdIeUFIb2lJaU9RTUFJQjBnSDZJZ0I2SWhJQ0FGSUFlYW9pRWhJQjBnSHFJZ0I2SUxJU2xCNkljVUlDRTVBd0JCNEljVUlDQTVBd0JCMkljVUlDazVBd0FnSFNBbklDdWhJZ21pSUI0Z0pTQXRvU0lIb2lBbUlDeWhJZ1VnSDZLZ29DRWFBa0FnRWlBU0lDTWdDYUlnSWlBSG9pQUZJQ1Npb0tBaUNpQUtvQ0FoSUFtaUlDa2dCNklnQlNBZ29xQ2dJZ3VpSUJJZ0VxSWlEQ0FLSUFxaUloU2hJZ1dqSWdtYUlBa2dDYUlnSENBY29pSVdJQXNnQzZJaUQ2RWdCYU5FQUFBQUFBQUFFTUNpb0o4aUJhRWlCeUFGSUFtaElnVWdDaUFMb2tRQUFBQUFBQUFBQUdZaUFCdEVBQUFBQUFBQTREK2lJZzBnQ3lBTklBcWlvU0lKbXFLaW9pQVdJQTBnRENBTm9xS2dveUlHSUFVZ0J5QUFHMFFBQUFBQUFBRGdQNklpQnlBU0lCSWdCeUFMSUFjZ0NxS2hJZ1dhb3FLaUlCWWdCeUFNSUFlaW9xQ2pJZ2VpSUFXZ0lnV2lJQTBnQnFJZ0NhQWlEU0FIb3FGRUFBQUFBQUFBQUFCalJRUkFJQVloQ1NBTklRZ2dCeUVHSUFVaERRd0JDeUFISVFrZ0JTRUlDeUFhSUJxaUlob2dDaUFLSUFhaElnYWlJQXNnQ3lBTm9TSUhvcUNnSUJRZ0Q2QWdHcUNmSWdVZ0dpQUdJQWFpSUFjZ0I2S2dvSitpb3hDbEFTRU5JQm9nQ2lBS0lBbWhJaENpSUFzZ0N5QUlvU0lIb3FDZ0lBVWdHaUFRSUJDaUlBY2dCNktnb0oraW94Q2xBU0VHSUFzZ0NoQnNJUk1DUUNBelJRUkFJQVpFVXJxT3ppRkl2YjZnSUNnZ0JpQW9ZeHNoR2lBTlJGSzZqczRoU0wyK29DQW9JQTBnS0dNYklSUUNRQ0FUUkFBQUFBQUFBQUFBWmtVTkFDQVRSQmd0UkZUN0lmay9aVVVOQUNBTElCTWdGS0VRcGdFaURpQUtvcUVpQ1NBU0lBNGdEcUFnRXFLaW9pQU9JQXlpSUE2aUlCYWdJZ1dqSWc4Z0Q2SWdFaUFTbXFJZ0hLSWdIS0lpQnlBSklBa2dES0tpb0NBRm8wUUFBQUFBQUFBUXdLS2dJUWdnQ3lBVElCcWdJZzBRcGdFaUVTQUtvcUVpQ1NBU0lCRWdFYUFnRXFLaW9pQVJJQXlpSUJHaUlCYWdJZ1dqSWdZZ0JxSWdCeUFKSUFrZ0RLS2lvQ0FGbzBRQUFBQUFBQUFRd0tLZ0lRa2dEcG9oQnlBUm1pRUZJQTFFR0MxRVZQc2grVDlsQkVBZ0N5QU9JQWlmSUEraFJBQUFBQUFBQU9BL29pSVhvaUFLSUFlaW9LQWhHU0FMSUJFZ0NaOGdCcUZFQUFBQUFBQUE0RCtpSWhpaUlBb2dCYUtnb0NFVkN5QU5SQmd0UkZUN0lmay9aRVVOQUNBTElCRWdCcG9nQ1oraFJBQUFBQUFBQU9BL29pSVlvaUFLSUFXaW9LQWhGU0FMSUE0Z0NKOGdENkZFQUFBQUFBQUE0RCtpSWhlaUlBb2dCNktnb0NFWkN3SkFJQk5FR0MxRVZQc2grVDlrUlEwQUlCTkVHQzFFVlBzaENVQmxSUTBBSUFzZ0V5QVVvU0lJRUtZQklnNGdDcUtoSWdrZ0VpQU9JQTZnSUJLaW9xSWdEaUFNb2lBT29pQVdvQ0lGb3lJUElBK2lJQklnRXBxaUlCeWlJQnlpSWdjZ0NTQUpJQXlpb3FBZ0JhTkVBQUFBQUFBQUVNQ2lvQ0VOSUFzZ0dpQVRvQkNtQVNJUklBcWlvU0lKSUJJZ0VTQVJvQ0FTb3FLaUlCRWdES0lnRWFJZ0ZxQWlCYU1pQmlBR29pQUhJQWtnQ1NBTW9xS2dJQVdqUkFBQUFBQUFBQkRBb3FBaENTQU9taUVISUJHYUlRVWdDRVFZTFVSVSt5SDVQMlVFUUNBTElBNGdEWjhnRDZGRUFBQUFBQUFBNEQraUloZWlJQW9nQjZLZ29DRVpJQXNnRVNBR21pQUpuNkZFQUFBQUFBQUE0RCtpSWhpaUlBb2dCYUtnb0NFVkN5QUlSQmd0UkZUN0lmay9aRVVOQUNBTElCRWdCcG9nQ1oraFJBQUFBQUFBQU9BL29pSVlvaUFLSUFXaW9LQWhGU0FMSUE0Z0Q1b2dEWitoUkFBQUFBQUFBT0Evb2lJWG9pQUtJQWVpb0tBaEdRc0NRQ0FUUkJndFJGVDdJUW5BWmtVTkFDQVRSQmd0UkZUN0lmbS9aVVVOQUNBTElCTWdGS0VRcGdFaURpQUtvcUVpQ1NBU0lBNGdEcUFnRXFLaW9pQU9JQXlpSUE2aUlCYWdJZ1dqSWc4Z0Q2SWdFaUFTbXFJZ0hLSWdIS0lpQnlBSklBa2dES0tpb0NBRm8wUUFBQUFBQUFBUXdLS2dJUWdnQ3lBYUlCT2dJZzBRcGdFaUVTQUtvcUVpQ1NBU0lCRWdFYUFnRXFLaW9pQVJJQXlpSUJHaUlCYWdJZ1dqSWdZZ0JxSWdCeUFKSUFrZ0RLS2lvQ0FGbzBRQUFBQUFBQUFRd0tLZ0lRa2dEcG9oQnlBUm1pRUZJQTFFR0MxRVZQc2grYjlsQkVBZ0N5QU9JQSthSUFpZm9VUUFBQUFBQUFEZ1A2SWlGNklnQ2lBSG9xQ2dJUmtnQ3lBUklBYWFJQW1mb1VRQUFBQUFBQURnUDZJaUdLSWdDaUFGb3FDZ0lSVUxJQTFFR0MxRVZQc2grYjlrUlEwQUlBc2dFU0FKbnlBR29VUUFBQUFBQUFEZ1A2SWlHS0lnQ2lBRm9xQ2dJUlVnQ3lBT0lBK2FJQWlmb1VRQUFBQUFBQURnUDZJaUY2SWdDaUFIb3FDZ0lSa0xJQk5FR0MxRVZQc2grYjlrUlEwQklCTkVBQUFBQUFBQUFBQmpSUTBCSUFzZ0V5QVVvU0lJRUtZQkloRWdDcUtoSWdrZ0VpQVJJQkdnSUJLaW9xSWdFU0FNb2lBUm9pQVdvQ0lGb3lJUElBK2lJQklnRXBxaUlCeWlJQnlpSWdjZ0NTQUpJQXlpb3FBZ0JhTkVBQUFBQUFBQUVNQ2lvQ0VOSUFzZ0dpQVRvQkNtQVNJVUlBcWlvU0lKSUJJZ0ZDQVVvQ0FTb3FLaUlCUWdES0lnRktJZ0ZxQWlCYU1pQmlBR29pQUhJQWtnQ1NBTW9xS2dJQVdqUkFBQUFBQUFBQkRBb3FBaENTQVJtaUVISUJTYUlRVWdDRVFZTFVSVSt5SDV2MlVFUUNBTElCRWdENW9nRForaFJBQUFBQUFBQU9BL29pSVhvaUFLSUFlaW9LQWhHU0FMSUJRZ0NaOGdCcUZFQUFBQUFBQUE0RCtpSWhpaUlBb2dCYUtnb0NFVkN5QUlSQmd0UkZUN0lmbS9aRVVOQVNBTElCUWdDWjhnQnFGRUFBQUFBQUFBNEQraUloaWlJQW9nQmFLZ29DRVZJQXNnRVNBTm55QVBvVVFBQUFBQUFBRGdQNklpRjZJZ0NpQUhvcUNnSVJrTUFRdEI4SVlVSUFaRTlXRzNBM0dZWEwrZ0lnazVBd0JCNklZVUlBMUU5V0czQTNHWVhMK2dJZzA1QXdCQnlJWVVLd01BSWhGRUFBQUFBQUFBOEQ5alJRMEFJQk5FQUFBQUFBQUFBQUJqSUJORUdDMUVWUHNoK2I5a2NTRXhJQk5FR0MxRVZQc2hDY0JtUlNBVFJCZ3RSRlQ3SWZtL1pVVnlJVElnRTBRWUxVUlUreUg1UDJSRklCTkVHQzFFVlBzaENVQmxSWEloQVNBVFJBQUFBQUFBQUFBQVprVWdFMFFZTFVSVSt5SDVQMlZGY2lFQUlCeWFJUm9nREpvaEtnTkFBa0FnQUEwQUlBc2dFeUFOb1JDbUFTSUdJQXFpb1NJSUlBd2dCaUFHb0tLaUlBd2dCcUlnQnFJZ0ZxQWlCYU1pR3lBYm9pQXFJQmFpSWdjZ0NDQU1JQWlpb3FBZ0JhTkVBQUFBQUFBQUVNQ2lvQ0VVSUFzZ0V5QUpvQ0lQRUtZQkloQWdDcUtoSWdnZ0RDQVFJQkNnb3FJZ0RDQVFvaUFRb2lBV29DSUZveUlPSUE2aUlBY2dDQ0FNSUFpaW9xQWdCYU5FQUFBQUFBQUFFTUNpb0NFSUlBYWFJUWNnRUpvaEJTQVBSQmd0UkZUN0lmay9aUVJBSUFzZ0JpQVVueUFib1VRQUFBQUFBQURnUDZJaUY2SWdDaUFIb3FDZ0lSa2dDeUFRSUFpZklBNmhSQUFBQUFBQUFPQS9vaUlZb2lBS0lBV2lvS0FoRlFzZ0QwUVlMVVJVK3lINVAyUkZEUUFnQ3lBUUlBNmFJQWlmb1VRQUFBQUFBQURnUDZJaUdLSWdDaUFGb3FDZ0lSVWdDeUFHSUJTZklCdWhSQUFBQUFBQUFPQS9vaUlYb2lBS0lBZWlvS0FoR1FzQ1FDQUJEUUFnQ3lBVElBMmhJaFFRcGdFaUJpQUtvcUVpQ0NBTUlBWWdCcUNpb2lBTUlBYWlJQWFpSUJhZ0lnV2pJaHNnRzZJZ0tpQVdvaUlISUFnZ0RDQUlvcUtnSUFXalJBQUFBQUFBQUJEQW9xQWhEeUFMSUJNZ0NhQVFwZ0VpRUNBS29xRWlDQ0FNSUJBZ0VLQ2lvaUFNSUJDaUlCQ2lJQmFnSWdXaklnNGdEcUlnQnlBSUlBd2dDS0tpb0NBRm8wUUFBQUFBQUFBUXdLS2dJUWdnQnBvaEJ5QVFtaUVGSUJSRUdDMUVWUHNoK1Q5bEJFQWdDeUFHSUErZklCdWhSQUFBQUFBQUFPQS9vaUlYb2lBS0lBZWlvS0FoR1NBTElCQWdEcG9nQ0oraFJBQUFBQUFBQU9BL29pSVlvaUFLSUFXaW9LQWhGUXNnRkVRWUxVUlUreUg1UDJSRkRRQWdDeUFRSUE2YUlBaWZvVVFBQUFBQUFBRGdQNklpR0tJZ0NpQUZvcUNnSVJVZ0N5QUdJQnVhSUErZm9VUUFBQUFBQUFEZ1A2SWlGNklnQ2lBSG9xQ2dJUmtMQWtBZ01nMEFJQXNnRXlBTm9SQ21BU0lHSUFxaW9TSUlJQXdnQmlBR29LS2lJQXdnQnFJZ0JxSWdGcUFpQmFNaUd5QWJvaUFxSUJhaUlnY2dDQ0FNSUFpaW9xQWdCYU5FQUFBQUFBQUFFTUNpb0NFVUlBc2dFeUFKb0NJUEVLWUJJaEFnQ3FLaElnZ2dEQ0FRSUJDZ29xSWdEQ0FRb2lBUW9pQVdvQ0lGb3lJT0lBNmlJQWNnQ0NBTUlBaWlvcUFnQmFORUFBQUFBQUFBRU1DaW9DRUlJQWFhSVFjZ0VKb2hCU0FQUkJndFJGVDdJZm0vWlFSQUlBc2dCaUFibWlBVW42RkVBQUFBQUFBQTREK2lJaGVpSUFvZ0I2S2dvQ0VaSUFzZ0VDQU9taUFJbjZGRUFBQUFBQUFBNEQraUloaWlJQW9nQmFLZ29DRVZDeUFQUkJndFJGVDdJZm0vWkVVTkFDQUxJQkFnQ0o4Z0RxRkVBQUFBQUFBQTREK2lJaGlpSUFvZ0JhS2dvQ0VWSUFzZ0JpQWJtaUFVbjZGRUFBQUFBQUFBNEQraUloZWlJQW9nQjZLZ29DRVpDd0pBSURGRkRRQWdDeUFUSUEyaEloUVFwZ0VpQmlBS29xRWlDQ0FNSUFZZ0JxQ2lvaUFNSUFhaUlBYWlJQmFnSWdXakloc2dHNklnS2lBV29pSUhJQWdnRENBSW9xS2dJQVdqUkFBQUFBQUFBQkRBb3FBaER5QUxJQk1nQ2FBUXBnRWlFQ0FLb3FFaUNDQU1JQkFnRUtDaW9pQU1JQkNpSUJDaUlCYWdJZ1dqSWc0Z0RxSWdCeUFJSUF3Z0NLS2lvQ0FGbzBRQUFBQUFBQUFRd0tLZ0lRZ2dCcG9oQnlBUW1pRUZJQlJFR0MxRVZQc2grYjlsQkVBZ0N5QUdJQnVhSUErZm9VUUFBQUFBQUFEZ1A2SWlGNklnQ2lBSG9xQ2dJUmtnQ3lBUUlBaWZJQTZoUkFBQUFBQUFBT0Evb2lJWW9pQUtJQVdpb0tBaEZRc2dGRVFZTFVSVSt5SDV2MlJGRFFBZ0N5QVFJQWlmSUE2aFJBQUFBQUFBQU9BL29pSVlvaUFLSUFXaW9LQWhGU0FMSUFZZ0Q1OGdHNkZFQUFBQUFBQUE0RCtpSWhlaUlBb2dCNktnb0NFWkN5QUdJQmNnR2lBY0lCbEVBQUFBQUFBQUFBQm1HNklnREVRQUFBQUFBQUR3UHlBWElCS2pJZ1VnQmFLaG42S2pJZ1doSUFVZ0JxSkVBQUFBQUFBQThEK2dveENuQVNFSElCZ2dHaUFjSUJWRUFBQUFBQUFBQUFCbUc2SWdERVFBQUFBQUFBRHdQeUFZSUJLaklnVWdCYUtobjZLaklnVWdFS0VnQlNBUW9rUUFBQUFBQUFEd1A2Q2pFS2NCUlBqQll4cmNwVXhBb2lFSUlBSWdCMFQ0d1dNYTNLVk1RS0lpQldRRVFFSG9oaFFnRFVTYW1abVptWm01djZBaURUa0RBQXNnQWlBSVpBUkFRZkNHRkNBSlJKcVptWm1abWJtL29DSUpPUU1BQ3lBQ0lBV2hJQkZrRFFBZ0FpQUlvU0FSWkEwQUN3dEJnSWNVSUIxRUFBQUFBQUFBQUFDaUlna2dJeUFYb2lBWklDR2lvS0FnSzZBNUF3QkIrSVlVSUI5RUFBQUFBQUFBQUFDaUlnY2dKQ0FYb2lBWklDQ2lvS0FnTEtBNUF3QkJpSWNVSUI1RUFBQUFBQUFBQUFDaUlnVWdJaUFZb2lBcElCV2lvS0FnTGFBNUF3QkJrSWNVSUN3Z0J5QWtJQmlpSUNBZ0ZhS2dvS0E1QXdCQm1JY1VJQ3NnQ1NBaklCaWlJQ0VnRmFLZ29LQTVBd0FnQkNBdlFSaHNhaUlBSUFVZ0lpQVhvaUFwSUJtaW9LQWdMYUJFQUFBQUFBQkFqMENpT1FNQUlBQkIrSVlVS3dNQVJBQUFBQUFBUUk5QW9qa0RDQ0FBUVlDSEZDc0RBRVFBQUFBQUFFQ1BRS0k1QXhBZ0JDQURJQzlxUVJoc2FpSUFRWWlIRkNzREFFUUFBQUFBQUVDUFFLSTVBd0FnQUVHUWh4UXJBd0JFQUFBQUFBQkFqMENpT1FNSUlBQkJtSWNVS3dNQVJBQUFBQUFBUUk5QW9qa0RFQ0F2UVFGcUlpOGdBMGNOQUFzTFFkQ0dGRUhRaGhRckF3QkVBQUFBQUFDQVprQ2lSQmd0UkZUN0lRbEFvemtEQUVIWWhoUkIySVlVS3dNQVJBQUFBQUFBZ0daQW9rUVlMVVJVK3lFSlFLTTVBd0FnTUFSQUlEQVFOQXNMTHdFQmYwRUVFRmtpQUVHYyt4TTJBZ0FnQUVIUStCTTJBZ0FnQUVIaytCTTJBZ0FnQUVHMCtSTkJ6UUFRQVFBTHJnSURBWHdCZmdGL0lBQzlJZ0pDSUlpblFmLy8vLzhIY1NJRFFZQ0F3UDhEVHdSQUlBS25JQU5CZ0lEQS93TnJja1VFUUVRQUFBQUFBQUFBQUVRWUxVUlUreUVKUUNBQ1FnQlpHdzhMUkFBQUFBQUFBQUFBSUFBZ0FLR2pEd3NDZkNBRFFmLy8vLzREVFFSQVJCZ3RSRlQ3SWZrL0lBTkJnWUNBNHdOSkRRRWFSQWRjRkRNbXBwRThJQUFnQUNBQW9oQ3RBYUtoSUFDaFJCZ3RSRlQ3SWZrL29BOExJQUpDQUZNRVFFUVlMVVJVK3lINVB5QUFSQUFBQUFBQUFQQS9vRVFBQUFBQUFBRGdQNklpQUo4aUFTQUJJQUFRclFHaVJBZGNGRE1tcHBHOG9LQ2hJZ0FnQUtBUEMwUUFBQUFBQUFEd1B5QUFvVVFBQUFBQUFBRGdQNklpQUo4aUFTQUFFSzBCb2lBQUlBRzlRb0NBZ0lCd2c3OGlBQ0FBb3FFZ0FTQUFvS09nSUFDZ0lnQWdBS0FMQzRRQkFRSi9Jd0JCRUdzaUFTUUFBa0FnQUwxQ0lJaW5RZi8vLy84SGNTSUNRZnZEcFA4RFRRUkFJQUpCZ0lDQThnTkpEUUVnQUVRQUFBQUFBQUFBQUVFQUVMZ0JJUUFNQVFzZ0FrR0FnTUQvQjA4RVFDQUFJQUNoSVFBTUFRc2dBQ0FCRUxrQklRSWdBU3NEQUNBQkt3TUlJQUpCQVhFUXVBRWhBQXNnQVVFUWFpUUFJQUFML2dNREEzd0Nmd0YrSUFDOUlnWkNJSWluUWYvLy8vOEhjU0lFUVlDQXdLQUVUd1JBSUFCRUdDMUVWUHNoK1Q4Z0FLWWdBTDFDLy8vLy8vLy8vLy8vQUlOQ2dJQ0FnSUNBZ1BqL0FGWWJEd3NDUUFKL0lBUkIvLy92L2dOTkJFQkJmeUFFUVlDQWdQSURUdzBCR2d3Q0N5QUFtU0VBSUFSQi8vL0wvd05OQkVBZ0JFSC8vNWYvQTAwRVFDQUFJQUNnUkFBQUFBQUFBUEMvb0NBQVJBQUFBQUFBQUFCQW9LTWhBRUVBREFJTElBQkVBQUFBQUFBQThMK2dJQUJFQUFBQUFBQUE4RCtnb3lFQVFRRU1BUXNnQkVILy80MkFCRTBFUUNBQVJBQUFBQUFBQVBpL29DQUFSQUFBQUFBQUFQZy9va1FBQUFBQUFBRHdQNkNqSVFCQkFnd0JDMFFBQUFBQUFBRHd2eUFBb3lFQVFRTUxJUVVnQUNBQW9pSUNJQUtpSWdFZ0FTQUJJQUVnQVVRdmJHb3NSTFNpdjZKRW12M2VVaTNlcmIrZ29rUnRtblN2OHJDenY2Q2lSSEVXSS83R2NieS9vS0pFeE91WW1abVp5Yitnb2lFRElBSWdBU0FCSUFFZ0FTQUJSQkhhSXVNNnJaQS9va1RyRFhZa1MzdXBQNkNpUkZFOTBLQm1EYkUvb0tKRWJpQk14YzFGdHorZ29rVC9nd0NTSkVuQ1A2Q2lSQTFWVlZWVlZkVS9vS0loQVNBRVFmLy83LzREVFFSQUlBQWdBQ0FESUFHZ29xRVBDeUFGUVFOMElnUkJ3UFVTYWlzREFDQUFJQU1nQWFDaUlBUkI0UFVTYWlzREFLRWdBS0doSWdDYUlBQWdCa0lBVXhzaEFBc2dBQXN5QUVHdyt4TWdBRVQ4cWZIU1RXSlFQNkpCc1BzVEt3TUFvQ0lBT1FNQVFjQ0dGQ0FBUkI4TWU2V0k1Tzgvb2prREFBdTRBZ0VFZnlNQVFSQnJJZ1lrQUFKQUFrQWdBRVVOQUNBRUtBSU1JUWNnQWlBQmF5SUpRUUJLQkVBZ0FDQUJJQWtnQUNnQ0FDZ0NNQkVFQUNBSlJ3MEJDeUFISUFNZ0FXc2lBV3RCQUNBQklBZElHeUlCUVFCS0JFQWdBVUh3Ly8vL0IwOE5BZ0pBSUFGQkMwOEVRQ0FCUVE5eVFRRnFJZ2dRVkNFSElBWWdDRUdBZ0lDQWVISTJBZ3dnQmlBSE5nSUVJQVlnQVRZQ0NBd0JDeUFHSUFFNkFBOGdCa0VFYWlFSEMwRUFJUWdnQnlBRklBRVFLU0FCYWtFQU9nQUFJQUFnQmlnQ0JDQUdRUVJxSUFZc0FBOUJBRWdiSUFFZ0FDZ0NBQ2dDTUJFRUFDRUZJQVlzQUE5QkFFZ0VRQ0FHS0FJRUVEUUxJQUVnQlVjTkFRc2dBeUFDYXlJQlFRQktCRUFnQUNBQ0lBRWdBQ2dDQUNnQ01CRUVBQ0FCUncwQkN5QUVRUUEyQWd3Z0FDRUlDeUFHUVJCcUpBQWdDQThMRUZVQUM2TUVBRUhROVJOQjk4QUFFQTFCNlBVVFFiaytRUUZCQVVFQUVBNUI5UFVUUVlJOVFRRkJnSDlCL3dBUUVrR005aE5CK3p4QkFVR0FmMEgvQUJBU1FZRDJFMEg1UEVFQlFRQkIvd0VRRWtHWTloTkJ2enRCQWtHQWdINUIvLzhCRUJKQnBQWVRRYlk3UVFKQkFFSC8vd01RRWtHdzloTkIzanRCQkVHQWdJQ0FlRUgvLy8vL0J4QVNRYnoyRTBIVk8wRUVRUUJCZnhBU1FjVDJFMEdLUDBFRVFZQ0FnSUI0UWYvLy8vOEhFQkpCNVBZVFFZRS9RUVJCQUVGL0VCSkI4UFlUUWZFN1FvQ0FnSUNBZ0lDQWdIOUMvLy8vLy8vLy8vLy9BQkRtQkVIODloTkI4RHRDQUVKL0VPWUVRWWozRTBIbU8wRUVFQk5CbFBjVFFkTEFBRUVJRUJOQjRPNFNRYlUvRUE5QnFPOFNRZVBKQUJBUFFmRHZFa0VFUVpzL0VCQkJ2UEFTUVFKQndUOFFFRUdJOFJKQkJFSFFQeEFRUWFUeEVrSE9QaEFSUWN6eEVrRUFRWjdKQUJBVVFmVHhFa0VBUVlUS0FCQVVRWnp5RWtFQlFiekpBQkFVUWNUeUVrRUNRZXZGQUJBVVFlenlFa0VEUVlyR0FCQVVRWlR6RWtFRVFiTEdBQkFVUWJ6ekVrRUZRYy9HQUJBVVFlVHpFa0VFUWFuS0FCQVVRWXowRWtFRlFjZktBQkFVUWZUeEVrRUFRYlhIQUJBVVFaenlFa0VCUVpUSEFCQVVRY1R5RWtFQ1FmZkhBQkFVUWV6eUVrRURRZFhIQUJBVVFaVHpFa0VFUWYzSUFCQVVRYnp6RWtFRlFkdklBQkFVUWJUMEVrRUlRYnJJQUJBVVFkejBFa0VKUVpqSUFCQVVRWVQxRWtFR1FmWEdBQkFVUWF6MUVrRUhRZTdLQUJBVUN5UUJBbjhnQUNnQ0JDSUFFQzlCQVdvaUFSQXpJZ0lFZnlBQ0lBQWdBUkFyQlVFQUN3c2tBUUYvUWZDSEZDZ0NBQ0lBQkVBRFFDQUFLQUlBRVFrQUlBQW9BZ1FpQUEwQUN3c0xqUUVBSUFBZ0FDQUFJQUFnQUVRSjkvME40VDBDUDZKRWlMSUJkZUR2U1QrZ29rUTdqMmkxS0lLa3Y2Q2lSRlZFaUE1Vndjay9vS0pFZlcvckF4TFcxTCtnb2tSVlZWVlZWVlhGUDZBZ0FLSWdBQ0FBSUFBZ0FFU0NraTZ4eGJpelA2SkVXUUdORzJ3RzVyK2dva1RJaWxtYzVTb0FRS0NpUkVzdGlod25PZ1BBb0tKRUFBQUFBQUFBOEQrZ293dkxBUUVFZndKQUEwQWdBRVVFUUVFQUlRRkI0UDBUS0FJQUJFQkI0UDBUS0FJQUVLNEJJUUVMUWNqOEV5Z0NBRVVOQWlBQklBTnlJUU5CeVB3VEtBSUFJUUFNQVFzTElBQW9Ba3hCQUU0aEFnSkFBa0FnQUNnQ0ZDQUFLQUljUmcwQUlBQkJBRUVBSUFBb0FpUVJCQUFhSUFBb0FoUU5BRUYvSVFFZ0FnMEJEQUlMSUFBb0FnUWlBU0FBS0FJSUlnUkhCRUFnQUNBQklBUnJyRUVCSUFBb0FpZ1JGZ0FhQzBFQUlRRWdBRUVBTmdJY0lBQkNBRGNERUNBQVFnQTNBZ1FnQWtVTkFRc0xJQUVnQTNJTDR3RUJCSDhqQUVFZ2F5SUVKQUFnQkNBQk5nSVFJQVFnQWlBQUtBSXdJZ05CQUVkck5nSVVJQUFvQWl3aEJTQUVJQU0yQWh3Z0JDQUZOZ0lZQWtBQ1FDQUFJQUFvQWp3Z0JFRVFha0VDSUFSQkRHb1FGeUlEQkg5Qm9QOFRJQU0yQWdCQmZ3VkJBQXNFZjBFZ0JTQUVLQUlNSWdOQkFFb05BVUVnUVJBZ0F4c0xJQUFvQWdCeU5nSUFEQUVMSUFRb0FoUWlCU0FESWdaUERRQWdBQ0FBS0FJc0lnTTJBZ1FnQUNBRElBWWdCV3RxTmdJSUlBQW9BakFFUUNBQUlBTkJBV28yQWdRZ0FTQUNha0VCYXlBRExRQUFPZ0FBQ3lBQ0lRWUxJQVJCSUdva0FDQUdDODRDQVFkL0l3QkJJR3NpQXlRQUlBTWdBQ2dDSENJRU5nSVFJQUFvQWhRaEJTQURJQUkyQWh3Z0F5QUJOZ0lZSUFNZ0JTQUVheUlCTmdJVUlBRWdBbW9oQlVFQ0lRWWdBMEVRYWlFQkFuOERRQUpBQWtBQ1FDQUFLQUk4SUFFZ0JpQURRUXhxRUJnaUJBUi9RYUQvRXlBRU5nSUFRWDhGUVFBTFJRUkFJQVVnQXlnQ0RDSUhSZzBCSUFkQkFFNE5BZ3dEQ3lBRlFYOUhEUUlMSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQUlBRWdBQ2dDTUdvMkFoQWdBZ3dEQ3lBQklBY2dBU2dDQkNJSVN5SUpRUU4wYWlJRUlBY2dDRUVBSUFrYmF5SUlJQVFvQWdCcU5nSUFJQUZCREVFRUlBa2JhaUlCSUFFb0FnQWdDR3MyQWdBZ0JTQUhheUVGSUFZZ0NXc2hCaUFFSVFFTUFRc0xJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FDQUFLQUlBUVNCeU5nSUFRUUFnQmtFQ1JnMEFHaUFDSUFFb0FnUnJDeUVBSUFOQklHb2tBQ0FBQzFZQkFYOGdBQ2dDUENFREl3QkJFR3NpQUNRQUlBTWdBYWNnQVVJZ2lLY2dBa0gvQVhFZ0FFRUlhaEFpSWdJRWYwR2cveE1nQWpZQ0FFRi9CVUVBQ3lFQ0lBQXBBd2doQVNBQVFSQnFKQUJDZnlBQklBSWJDd2tBSUFBb0Fqd1FHUXMwQUFKQVFkaVlGQzBBQUVFQmNRMEFRZGlZRkMwQUFFRUJjUTBBUWR5WUZFSGdtQlJCNUpnVUVCdEIySmdVUVFFNkFBQUxDNWdmQWc5L0JYNGpBRUdRQVdzaUF5UUFBMEFnQXlBU3AycEJBRG9BQUNBU1FnRjhJaEpDa0FGVURRQUxJQU5CZnpZQ1RDQURJQUEyQWl3Z0EwSFBBRFlDSUNBRElBQTJBbFFnQWlFT1FRQWhBQ01BUWJBQ2F5SUdKQUFnQXlnQ1RCb0NRQUpBQWtBQ1FDQURLQUlFRFFBZ0F4REhBUm9nQXlnQ0JBMEFEQUVMSUFFdEFBQWlCVVVOQWdKQUFrQUNRQUpBQTBBQ1FBSkFJQVZCL3dGeElnSkJJRVlnQWtFSmEwRUZTWElFUUFOQUlBRWlCVUVCYWlFQklBVXRBQUVpQWtFZ1JpQUNRUWxyUVFWSmNnMEFDeUFEUWdBUXlRRURRQUovSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQ0FCTFFBQURBRUxJQU1ReWdFTElnRkJJRVlnQVVFSmEwRUZTWElOQUFzZ0F5Z0NCQ0VCSUFNcEEzQkNBRmtFUUNBRElBRkJBV3NpQVRZQ0JBc2dBU0FES0FJc2E2d2dBeWtEZUNBVWZId2hGQXdCQ3dKL0FrQUNRQ0FDUVNWR0JFQWdBUzBBQVNJQ1FTcEdEUUVnQWtFbFJ3MENDeUFEUWdBUXlRRUNRQ0FCTFFBQVFTVkdCRUFEUUFKL0lBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFNUXlnRUxJZ1VpQWtFZ1JpQUNRUWxyUVFWSmNnMEFDeUFCUVFGcUlRRU1BUXNnQXlnQ0JDSUNJQU1vQW1oSEJFQWdBeUFDUVFGcU5nSUVJQUl0QUFBaEJRd0JDeUFERU1vQklRVUxJQUV0QUFBZ0JVY0VRQ0FES1FOd1FnQlpCRUFnQXlBREtBSUVRUUZyTmdJRUN5QUZRUUJPRFExQkFDRUhJQThORFF3TEN5QURLQUlFSUFNb0FpeHJyQ0FES1FONElCUjhmQ0VVSUFFaEJRd0RDMEVBSVFnZ0FVRUNhZ3dCQ3dKQUlBSkJNR3RCQ2s4TkFDQUJMUUFDUVNSSERRQWpBRUVRYXlJRklBNDJBZ3dnQlNBT0lBSkJNR3NpQWtFQ2RFRUVhMEVBSUFKQkFVc2JhaUlDUVFScU5nSUlJQUlvQWdBaENDQUJRUU5xREFFTElBNG9BZ0FoQ0NBT1FRUnFJUTRnQVVFQmFnc2hBVUVBSVFJRFFDQUJMUUFBSWdSQk1HdEJDa2tFUUNBQlFRRnFJUUVnQWtFS2JDQUVha0V3YXlFQ0RBRUxDMEVBSVF3Z0JFSHRBRVlFUUVFQUlRb2dDRUVBUnlFTUlBRXRBQUVoQkNBQlFRRnFJUUZCQUNFQUN5QUJRUUZxSVFWQkF5RUpJQXdoQndKQUFrQUNRQUpBQWtBQ1FDQUVRZjhCY1VIQkFHc09PZ1FNQkF3RUJBUU1EQXdNQXd3TURBd01EQVFNREF3TUJBd01CQXdNREF3TUJBd0VCQVFFQkFBRUJRd0JEQVFFQkF3TUJBSUVEQXdFREFJTUN5QUJRUUpxSUFVZ0FTMEFBVUhvQUVZaUFSc2hCVUYrUVg4Z0FSc2hDUXdFQ3lBQlFRSnFJQVVnQVMwQUFVSHNBRVlpQVJzaEJVRURRUUVnQVJzaENRd0RDMEVCSVFrTUFndEJBaUVKREFFTFFRQWhDU0FCSVFVTFFRRWdDU0FGTFFBQUlnRkJMM0ZCQTBZaUJCc2hFQUpBSUFGQklISWdBU0FFR3lJTFFkc0FSZzBBQWtBZ0MwSHVBRWNFUUNBTFFlTUFSdzBCUVFFZ0FpQUNRUUZNR3lFQ0RBSUxJQWdnRUNBVUVOQUJEQUlMSUFOQ0FCREpBUU5BQW44Z0F5Z0NCQ0lCSUFNb0FtaEhCRUFnQXlBQlFRRnFOZ0lFSUFFdEFBQU1BUXNnQXhES0FRc2lBVUVnUmlBQlFRbHJRUVZKY2cwQUN5QURLQUlFSVFFZ0F5a0RjRUlBV1FSQUlBTWdBVUVCYXlJQk5nSUVDeUFCSUFNb0FpeHJyQ0FES1FONElCUjhmQ0VVQ3lBRElBS3NJaElReVFFQ1FDQURLQUlFSWdFZ0F5Z0NhRWNFUUNBRElBRkJBV28yQWdRTUFRc2dBeERLQVVFQVNBMEdDeUFES1FOd1FnQlpCRUFnQXlBREtBSUVRUUZyTmdJRUMwRVFJUUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBTFFkZ0FhdzRoQmdrSkFna0pDUWtKQVFrQ0JBRUJBUWtGQ1FrSkNRa0RCZ2tKQWdrRUNRa0dBQXNnQzBIQkFHc2lBVUVHU3cwSVFRRWdBWFJCOFFCeFJRMElDeUFHUVFocUlBTWdFRUVBRU00QklBTXBBM2hDQUNBREtBSUVJQU1vQWl4cnJIMVNEUVVNREFzZ0MwRVFja0h6QUVZRVFDQUdRU0JxUVg5QmdRSVFLUm9nQmtFQU9nQWdJQXRCOHdCSERRWWdCa0VBT2dCQklBWkJBRG9BTGlBR1FRQTJBU29NQmdzZ0JrRWdhaUFGTFFBQklnRkIzZ0JHSWdSQmdRSVFLUm9nQmtFQU9nQWdJQVZCQW1vZ0JVRUJhaUFFR3lFSEFuOENRQUpBSUFWQkFrRUJJQVFiYWkwQUFDSUZRUzFIQkVBZ0JVSGRBRVlOQVNBQlFkNEFSeUVKSUFjTUF3c2dCaUFCUWQ0QVJ5SUpPZ0JPREFFTElBWWdBVUhlQUVjaUNUb0FmZ3NnQjBFQmFnc2hCUU5BQWtBZ0JTMEFBQ0lFUVMxSEJFQWdCRVVORHlBRVFkMEFSZzBJREFFTFFTMGhCQ0FGTFFBQklnZEZEUUFnQjBIZEFFWU5BQ0FGUVFGcUlRMENRQ0FISUFWQkFXc3RBQUFpQVUwRVFDQUhJUVFNQVFzRFFDQUJRUUZxSWdFZ0JrRWdhbW9nQ1RvQUFDQUJJQTB0QUFBaUJFa05BQXNMSUEwaEJRc2dCQ0FHYWlBSk9nQWhJQVZCQVdvaEJRd0FDd0FMUVFnaEFRd0NDMEVLSVFFTUFRdEJBQ0VCQzBJQUlSSkJBQ0VFUVFBaEIwRUFJUTBqQUVFUWF5SUpKQUFDUUNBQlFRRkdCRUJCb1A4VFFSdzJBZ0FNQVFzRFFBSi9JQU1vQWdRaUFpQURLQUpvUndSQUlBTWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBTVF5Z0VMSWdKQklFWWdBa0VKYTBFRlNYSU5BQXNDUUFKQUlBSkJLMnNPQXdBQkFBRUxRWDlCQUNBQ1FTMUdHeUVOSUFNb0FnUWlBaUFES0FKb1J3UkFJQU1nQWtFQmFqWUNCQ0FDTFFBQUlRSU1BUXNnQXhES0FTRUNDd0pBQWtBQ1FBSkFBa0FnQVVFQVJ5QUJRUkJIY1EwQUlBSkJNRWNOQUFKL0lBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFNUXlnRUxJZ0pCWDNGQjJBQkdCRUJCRUNFQkFuOGdBeWdDQkNJQ0lBTW9BbWhIQkVBZ0F5QUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0F4REtBUXNpQWtIQmtCTnFMUUFBUVJCSkRRTWdBeWtEY0VJQVdRUkFJQU1nQXlnQ0JFRUJhellDQkFzZ0EwSUFFTWtCREFZTElBRU5BVUVJSVFFTUFnc2dBVUVLSUFFYklnRWdBa0hCa0JOcUxRQUFTdzBBSUFNcEEzQkNBRmtFUUNBRElBTW9BZ1JCQVdzMkFnUUxJQU5DQUJESkFVR2cveE5CSERZQ0FBd0VDeUFCUVFwSERRQWdBa0V3YXlJRVFRbE5CRUJCQUNFQkEwQWdBVUVLYkNBRWFpSUJRWm16NXN3QlNRSi9JQU1vQWdRaUFpQURLQUpvUndSQUlBTWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBTVF5Z0VMSWdKQk1Hc2lCRUVKVFhFTkFBc2dBYTBoRWdzQ1FDQUVRUWxMRFFBZ0VrSUtmaUVUSUFTdElSVURRQ0FUSUJWOElSSUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFTW9CQ3lJQ1FUQnJJZ1JCQ1VzTkFTQVNRcHF6NXN5WnMrYk1HVm9OQVNBU1FncCtJaE1nQkswaUZVSi9oVmdOQUF0QkNpRUJEQUlMUVFvaEFTQUVRUWxORFFFTUFnc2dBU0FCUVFGcmNRUkFJQUpCd1pBVGFpMEFBQ0lISUFGSkJFQURRQ0FISUFFZ0JHeHFJZ1JCeCtQeE9Fa0NmeUFES0FJRUlnSWdBeWdDYUVjRVFDQURJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QURFTW9CQ3lJQ1FjR1FFMm90QUFBaUJ5QUJTWEVOQUFzZ0JLMGhFZ3NnQVNBSFRRMEJJQUd0SVJNRFFDQVNJQk4rSWhVZ0I2MUMvd0dESWhaQ2Y0VldEUUlnRlNBV2ZDRVNJQUVDZnlBREtBSUVJZ0lnQXlnQ2FFY0VRQ0FESUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFERU1vQkN5SUNRY0dRRTJvdEFBQWlCMDBOQWlBSklCTkNBQ0FTUWdBUVBTQUpLUU1JVUEwQUN3d0JDeUFCUVJkc1FRVjJRUWR4UWNHU0Uyb3NBQUFoRVNBQ1FjR1FFMm90QUFBaUJDQUJTUVJBQTBBZ0JDQUhJQkYwY2lJSFFZQ0FnTUFBU1FKL0lBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFNUXlnRUxJZ0pCd1pBVGFpMEFBQ0lFSUFGSmNRMEFDeUFIclNFU0N5QUJJQVJORFFCQ2Z5QVJyU0lUaUNJVklCSlVEUUFEUUNBRXJVTC9BWU1nRWlBVGhvUWhFaUFCQW44Z0F5Z0NCQ0lDSUFNb0FtaEhCRUFnQXlBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQXhES0FRc2lBa0hCa0JOcUxRQUFJZ1JORFFFZ0VpQVZXQTBBQ3dzZ0FTQUNRY0dRRTJvdEFBQk5EUUFEUUNBQkFuOGdBeWdDQkNJQ0lBTW9BbWhIQkVBZ0F5QUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0F4REtBUXRCd1pBVGFpMEFBRXNOQUF0Qm9QOFRRY1FBTmdJQVFuOGhFa0VBSVEwTElBTXBBM0JDQUZrRVFDQURJQU1vQWdSQkFXczJBZ1FMSUJJZ0Rhd2lFNFVnRTMwaEVnc2dDVUVRYWlRQUlBTXBBM2hDQUNBREtBSUVJQU1vQWl4cnJIMVJEUWNDUUNBTFFmQUFSdzBBSUFoRkRRQWdDQ0FTUGdJQURBTUxJQWdnRUNBU0VOQUJEQUlMSUFoRkRRRWdCaWtERUNFU0lBWXBBd2doRXdKQUFrQUNRQ0FRRGdNQUFRSUVDeUFJSUJNZ0VoQlJPQUlBREFNTElBZ2dFeUFTRUUwNUF3QU1BZ3NnQ0NBVE53TUFJQWdnRWpjRENBd0JDMEVmSUFKQkFXb2dDMEhqQUVjaURSc2hBZ0pBSUJCQkFVWUVRQ0FJSVFRZ0RBUkFJQUpCQW5RUU15SUVSUTBIQ3lBR1FnQTNBcWdDUVFBaEFRTkFJQVFoQUFKQUEwQUNmeUFES0FJRUlnUWdBeWdDYUVjRVFDQURJQVJCQVdvMkFnUWdCQzBBQUF3QkN5QURFTW9CQ3lJRUlBWnFMUUFoUlEwQklBWWdCRG9BR3lBR1FSeHFJQVpCRzJwQkFTQUdRYWdDYWhETEFTSUVRWDVHRFFCQkFDRUtJQVJCZjBZTkN5QUFCRUFnQUNBQlFRSjBhaUFHS0FJY05nSUFJQUZCQVdvaEFRc2dERVVOQUNBQklBSkhEUUFMUVFFaEJ5QUFJQUlpQVVFQmRFRUJjaUlDUVFKMEVEVWlCQTBCREFzTEMwRUFJUW9nQUNFQ0lBWkJxQUpxSWdRRWZ5QUVLQUlBUlFWQkFRdEZEUWdNQVFzZ0RBUkFRUUFoQVNBQ0VETWlCRVVOQmdOQUlBUWhBQU5BQW44Z0F5Z0NCQ0lFSUFNb0FtaEhCRUFnQXlBRVFRRnFOZ0lFSUFRdEFBQU1BUXNnQXhES0FRc2lCQ0FHYWkwQUlVVUVRRUVBSVFJZ0FDRUtEQVFMSUFBZ0FXb2dCRG9BQUNBQlFRRnFJZ0VnQWtjTkFBdEJBU0VISUFBZ0FpSUJRUUYwUVFGeUlnSVFOU0lFRFFBTElBQWhDa0VBSVFBTUNRdEJBQ0VCSUFnRVFBTkFBbjhnQXlnQ0JDSUFJQU1vQW1oSEJFQWdBeUFBUVFGcU5nSUVJQUF0QUFBTUFRc2dBeERLQVFzaUFDQUdhaTBBSVFSQUlBRWdDR29nQURvQUFDQUJRUUZxSVFFTUFRVkJBQ0VDSUFnaUFDRUtEQU1MQUFzQUN3TkFBbjhnQXlnQ0JDSUFJQU1vQW1oSEJFQWdBeUFBUVFGcU5nSUVJQUF0QUFBTUFRc2dBeERLQVFzZ0Jtb3RBQ0VOQUF0QkFDRUFRUUFoQ2tFQUlRSUxJQU1vQWdRaEJDQURLUU53UWdCWkJFQWdBeUFFUVFGcklnUTJBZ1FMSUFNcEEzZ2dCQ0FES0FJc2E2eDhJaE5RRFFJZ0RTQVNJQk5SY2tVTkFpQU1CRUFnQ0NBQU5nSUFDd0pBSUF0QjR3QkdEUUFnQWdSQUlBSWdBVUVDZEdwQkFEWUNBQXNnQ2tVRVFFRUFJUW9NQVFzZ0FTQUtha0VBT2dBQUN5QUNJUUFMSUFNb0FnUWdBeWdDTEd1c0lBTXBBM2dnRkh4OElSUWdEeUFJUVFCSGFpRVBDeUFGUVFGcUlRRWdCUzBBQVNJRkRRRU1DQXNMSUFJaEFBd0JDMEVCSVFkQkFDRUtRUUFoQUF3Q0N5QU1JUWNNQXdzZ0RDRUhDeUFQRFFFTFFYOGhEd3NnQjBVTkFDQUtFRFFnQUJBMEN5QUdRYkFDYWlRQUlBTkJrQUZxSkFBZ0R3c0VBRUVBQ3dRQVFnQUxUUUVDZnlBQkxRQUFJUUlDUUNBQUxRQUFJZ05GRFFBZ0FpQURSdzBBQTBBZ0FTMEFBU0VDSUFBdEFBRWlBMFVOQVNBQlFRRnFJUUVnQUVFQmFpRUFJQUlnQTBZTkFBc0xJQU1nQW1zTHFBTURBbndEZndGK0lBQzlJZ2hDSUlpbklnVkIrUC8vL3dkeFFhaW9sdjhEU1NJR1JRUkFSQmd0UkZUN0llay9JQUFnQUpvZ0NFSUFXU0lIRzZGRUIxd1VNeWFtZ1R3Z0FTQUJtaUFIRzZHZ0lRQWdCVUVmZGlFRlJBQUFBQUFBQUFBQUlRRUxJQUFnQUNBQUlBQ2lJZ1NpSWdORVkxVlZWVlZWMVQraUlBUWdBeUFFSUFTaUlnTWdBeUFESUFNZ0EwUnpVMkRieTNYenZxSkVwcEkzb0loK0ZEK2dva1FCWmZMeTJFUkRQNkNpUkNnRFZza2liVzAvb0tKRU45WUdoUFJrbGorZ29rUjYvaEFSRVJIQlA2QWdCQ0FESUFNZ0F5QURJQU5FMUhxL2RIQXErejZpUk9tbjhESVB1Qkkvb0tKRWFCQ05HdmNtTUQrZ29rUVZnK0QreU50WFA2Q2lSSk9FYnVuakpvSS9vS0pFL2tHekc3cWhxeitnb3FDaUlBR2dvaUFCb0tBaUE2QWhBU0FHUlFSQVFRRWdBa0VCZEd1M0lnUWdBQ0FESUFFZ0FhSWdBU0FFb0tPaG9DSUFJQUNnb1NJQW1pQUFJQVViRHdzZ0FnUjhSQUFBQUFBQUFQQy9JQUdqSWdRZ0JMMUNnSUNBZ0hDRHZ5SUVJQU1nQWIxQ2dJQ0FnSENEdnlJQklBQ2hvYUlnQkNBQm9rUUFBQUFBQUFEd1A2Q2dvaUFFb0FVZ0FRc0x1eGdERkg4RWZBRitJd0JCTUdzaUNDUUFBa0FDUUFKQUlBQzlJaHBDSUlpbklnTkIvLy8vL3dkeElnVkIrdFM5Z0FSTkJFQWdBMEgvL3o5eFFmdkRKRVlOQVNBRlFmeXlpNEFFVFFSQUlCcENBRmtFUUNBQklBQkVBQUJBVlBzaCtiK2dJZ0JFTVdOaUdtRzAwTDJnSWhZNUF3QWdBU0FBSUJhaFJERmpZaHBodE5DOW9Ea0RDRUVCSVFNTUJRc2dBU0FBUkFBQVFGVDdJZmsvb0NJQVJERmpZaHBodE5BOW9DSVdPUU1BSUFFZ0FDQVdvVVF4WTJJYVliVFFQYUE1QXdoQmZ5RUREQVFMSUJwQ0FGa0VRQ0FCSUFCRUFBQkFWUHNoQ2NDZ0lnQkVNV05pR21HMDRMMmdJaFk1QXdBZ0FTQUFJQmFoUkRGallocGh0T0M5b0RrRENFRUNJUU1NQkFzZ0FTQUFSQUFBUUZUN0lRbEFvQ0lBUkRGallocGh0T0E5b0NJV09RTUFJQUVnQUNBV29VUXhZMklhWWJUZ1BhQTVBd2hCZmlFRERBTUxJQVZCdTR6eGdBUk5CRUFnQlVHOCs5ZUFCRTBFUUNBRlFmeXl5NEFFUmcwQ0lCcENBRmtFUUNBQklBQkVBQUF3ZjN6WkVzQ2dJZ0JFeXBTVHA1RU82YjJnSWhZNUF3QWdBU0FBSUJhaFJNcVVrNmVSRHVtOW9Ea0RDRUVESVFNTUJRc2dBU0FBUkFBQU1IOTgyUkpBb0NJQVJNcVVrNmVSRHVrOW9DSVdPUU1BSUFFZ0FDQVdvVVRLbEpPbmtRN3BQYUE1QXdoQmZTRUREQVFMSUFWQis4UGtnQVJHRFFFZ0drSUFXUVJBSUFFZ0FFUUFBRUJVK3lFWndLQWlBRVF4WTJJYVliVHd2YUFpRmprREFDQUJJQUFnRnFGRU1XTmlHbUcwOEwyZ09RTUlRUVFoQXd3RUN5QUJJQUJFQUFCQVZQc2hHVUNnSWdCRU1XTmlHbUcwOEQyZ0loWTVBd0FnQVNBQUlCYWhSREZqWWhwaHRQQTlvRGtEQ0VGOElRTU1Bd3NnQlVINncrU0pCRXNOQVFzZ0FDQUFSSVBJeVcwd1grUS9va1FBQUFBQUFBQTRRNkJFQUFBQUFBQUFPTU9nSWhkRUFBQkFWUHNoK2IraW9DSVdJQmRFTVdOaUdtRzAwRDJpSWhpaElobEVHQzFFVlBzaDZiOWpJUUlDZnlBWG1VUUFBQUFBQUFEZ1FXTUVRQ0FYcWd3QkMwR0FnSUNBZUFzaEF3SkFJQUlFUUNBRFFRRnJJUU1nRjBRQUFBQUFBQUR3djZBaUYwUXhZMklhWWJUUVBhSWhHQ0FBSUJkRUFBQkFWUHNoK2IraW9DRVdEQUVMSUJsRUdDMUVWUHNoNlQ5a1JRMEFJQU5CQVdvaEF5QVhSQUFBQUFBQUFQQS9vQ0lYUkRGallocGh0TkE5b2lFWUlBQWdGMFFBQUVCVSt5SDV2NktnSVJZTElBRWdGaUFZb1NJQU9RTUFBa0FnQlVFVWRpSUNJQUM5UWpTSXAwSC9EM0ZyUVJGSURRQWdBU0FXSUJkRUFBQmdHbUcwMEQyaUlnQ2hJaGtnRjBSemNBTXVpaG1qTzZJZ0ZpQVpvU0FBb2FFaUdLRWlBRGtEQUNBQ0lBQzlRalNJcDBIL0QzRnJRVEpJQkVBZ0dTRVdEQUVMSUFFZ0dTQVhSQUFBQUM2S0dhTTdvaUlBb1NJV0lCZEV3VWtnSlpxRGV6bWlJQmtnRnFFZ0FLR2hJaGloSWdBNUF3QUxJQUVnRmlBQW9TQVlvVGtEQ0F3QkN5QUZRWUNBd1A4SFR3UkFJQUVnQUNBQW9TSUFPUU1BSUFFZ0FEa0RDRUVBSVFNTUFRc2dHa0wvLy8vLy8vLy9CNE5DZ0lDQWdJQ0FnTERCQUlTL0lRQkJBQ0VEUVFFaEFnTkFJQWhCRUdvZ0EwRURkR29DZnlBQW1VUUFBQUFBQUFEZ1FXTUVRQ0FBcWd3QkMwR0FnSUNBZUF1M0loWTVBd0FnQUNBV29VUUFBQUFBQUFCd1FhSWhBRUVCSVFNZ0FpRUVRUUFoQWlBRURRQUxJQWdnQURrRElFRUNJUU1EUUNBRElnSkJBV3NoQXlBSVFSQnFJQUpCQTNScUt3TUFSQUFBQUFBQUFBQUFZUTBBQ3dKL0lBaEJFR29oRDBFQUlRUWpBRUd3QkdzaUJpUUFJQVZCRkhaQmxnaHJJZ05CQTJ0QkdHMGlCVUVBSUFWQkFFb2JJaEJCYUd3Z0Eyb2hCVUhFOWhJb0FnQWlDU0FDUVFGcUlncEJBV3NpQjJwQkFFNEVRQ0FKSUFwcUlRTWdFQ0FIYXlFQ0EwQWdCa0hBQW1vZ0JFRURkR29nQWtFQVNBUjhSQUFBQUFBQUFBQUFCU0FDUVFKMFFkRDJFbW9vQWdDM0N6a0RBQ0FDUVFGcUlRSWdCRUVCYWlJRUlBTkhEUUFMQ3lBRlFSaHJJUXhCQUNFRElBbEJBQ0FKUVFCS0d5RUVJQXBCQUV3aEN3TkFBa0FnQ3dSQVJBQUFBQUFBQUFBQUlRQU1BUXNnQXlBSGFpRU9RUUFoQWtRQUFBQUFBQUFBQUNFQUEwQWdEeUFDUVFOMGFpc0RBQ0FHUWNBQ2FpQU9JQUpyUVFOMGFpc0RBS0lnQUtBaEFDQUNRUUZxSWdJZ0NrY05BQXNMSUFZZ0EwRURkR29nQURrREFDQURJQVJHSVFJZ0EwRUJhaUVESUFKRkRRQUxRUzhnQldzaEUwRXdJQVZySVE0Z0JVRVpTQ0VSSUFWQkdXc2hGQ0FKSVFNRFFDQUdJQU5CQTNScUt3TUFJUUJCQUNFQ0lBTWhCQ0FEUVFCTUlnMUZCRUFEUUNBR1FlQURhaUFDUVFKMGFnSi9BbjhnQUVRQUFBQUFBQUJ3UHFJaUZwbEVBQUFBQUFBQTRFRmpCRUFnRnFvTUFRdEJnSUNBZ0hnTHR5SVdSQUFBQUFBQUFIREJvaUFBb0NJQW1VUUFBQUFBQUFEZ1FXTUVRQ0FBcWd3QkMwR0FnSUNBZUFzMkFnQWdCaUFFUVFGcklnUkJBM1JxS3dNQUlCYWdJUUFnQWtFQmFpSUNJQU5IRFFBTEN3Si9JQUFnREJBd0lnQWdBRVFBQUFBQUFBREFQNktjUkFBQUFBQUFBQ0RBb3FBaUFKbEVBQUFBQUFBQTRFRmpCRUFnQUtvTUFRdEJnSUNBZ0hnTElRY2dBQ0FIdDZFaEFBSkFBa0FDUUFKL0lCRkZCRUFnQTBFQ2RDQUdhaUlDSUFJb0F0d0RJZ0lnQWlBT2RTSUNJQTUwYXlJRU5nTGNBeUFDSUFkcUlRY2dCQ0FUZFF3QkN5QU1EUUVnQTBFQ2RDQUdhaWdDM0FOQkYzVUxJZ3RCQUV3TkFnd0JDMEVDSVFzZ0FFUUFBQUFBQUFEZ1AyWU5BRUVBSVFzTUFRdEJBQ0VDUVFBaEJDQU5SUVJBQTBBZ0JrSGdBMm9nQWtFQ2RHb2lGU2dDQUNFTlFmLy8vd2NoRWdKL0FrQWdCQTBBUVlDQWdBZ2hFaUFORFFCQkFBd0JDeUFWSUJJZ0RXczJBZ0JCQVFzaEJDQUNRUUZxSWdJZ0EwY05BQXNMQWtBZ0VRMEFRZi8vL3dNaEFnSkFBa0FnRkE0Q0FRQUNDMEgvLy84QklRSUxJQU5CQW5RZ0Jtb2lEU0FOS0FMY0F5QUNjVFlDM0FNTElBZEJBV29oQnlBTFFRSkhEUUJFQUFBQUFBQUE4RDhnQUtFaEFFRUNJUXNnQkVVTkFDQUFSQUFBQUFBQUFQQS9JQXdRTUtFaEFBc0NRQUpBSUFCRUFBQUFBQUFBQUFCaEJFQkJBQ0VFSUFNaEFpQURJQWxNRFFJRFFDQUdRZUFEYWlBQ1FRRnJJZ0pCQW5ScUtBSUFJQVJ5SVFRZ0FpQUpTZzBBQ3lBRVJRMENJQXdoQlFOQUlBVkJHR3NoQlNBR1FlQURhaUFEUVFGcklnTkJBblJxS0FJQVJRMEFDd3dCQ3dKQUlBQkJHQ0FGYXhBd0lnQkVBQUFBQUFBQWNFRm1CRUFnQmtIZ0Eyb2dBMEVDZEdvQ2Z3Si9JQUJFQUFBQUFBQUFjRDZpSWhhWlJBQUFBQUFBQU9CQll3UkFJQmFxREFFTFFZQ0FnSUI0Q3lJQ3QwUUFBQUFBQUFCd3dhSWdBS0FpQUpsRUFBQUFBQUFBNEVGakJFQWdBS29NQVF0QmdJQ0FnSGdMTmdJQUlBTkJBV29oQXd3QkN3Si9JQUNaUkFBQUFBQUFBT0JCWXdSQUlBQ3FEQUVMUVlDQWdJQjRDeUVDSUF3aEJRc2dCa0hnQTJvZ0EwRUNkR29nQWpZQ0FBdEVBQUFBQUFBQThEOGdCUkF3SVFBZ0EwRUFUZ1JBSUFNaEFnTkFJQVlnQWlJRVFRTjBhaUFBSUFaQjRBTnFJQUpCQW5ScUtBSUF0Nkk1QXdBZ0FrRUJheUVDSUFCRUFBQUFBQUFBY0Q2aUlRQWdCQTBBQ3lBRElRUURRRVFBQUFBQUFBQUFBQ0VBUVFBaEFpQUpJQU1nQkdzaUJTQUZJQWxLR3lJTVFRQk9CRUFEUUNBQ1FRTjBRYUNNRTJvckF3QWdCaUFDSUFScVFRTjBhaXNEQUtJZ0FLQWhBQ0FDSUF4SElRb2dBa0VCYWlFQ0lBb05BQXNMSUFaQm9BRnFJQVZCQTNScUlBQTVBd0FnQkVFQVNpRUNJQVJCQVdzaEJDQUNEUUFMQzBRQUFBQUFBQUFBQUNFQUlBTkJBRTRFUUNBRElRSURRQ0FDSWdSQkFXc2hBaUFBSUFaQm9BRnFJQVJCQTNScUt3TUFvQ0VBSUFRTkFBc0xJQWdnQUpvZ0FDQUxHemtEQUNBR0t3T2dBU0FBb1NFQVFRRWhBaUFEUVFCS0JFQURRQ0FBSUFaQm9BRnFJQUpCQTNScUt3TUFvQ0VBSUFJZ0EwY2hCQ0FDUVFGcUlRSWdCQTBBQ3dzZ0NDQUFtaUFBSUFzYk9RTUlJQVpCc0FScUpBQWdCMEVIY1F3Q0MwRUJJUUlEUUNBQ0lnUkJBV29oQWlBR1FlQURhaUFKSUFSclFRSjBhaWdDQUVVTkFBc2dBeUFFYWlFRUEwQWdCa0hBQW1vZ0F5QUthaUlIUVFOMGFpQURRUUZxSWdNZ0VHcEJBblJCMFBZU2FpZ0NBTGM1QXdCQkFDRUNSQUFBQUFBQUFBQUFJUUFnQ2tFQVNnUkFBMEFnRHlBQ1FRTjBhaXNEQUNBR1FjQUNhaUFISUFKclFRTjBhaXNEQUtJZ0FLQWhBQ0FDUVFGcUlnSWdDa2NOQUFzTElBWWdBMEVEZEdvZ0FEa0RBQ0FESUFSSURRQUxJQVFoQXd3QUN3QUxJUU1nQ0NzREFDRUFJQnBDQUZNRVFDQUJJQUNhT1FNQUlBRWdDQ3NEQ0pvNUF3aEJBQ0FEYXlFRERBRUxJQUVnQURrREFDQUJJQWdyQXdnNUF3Z0xJQWhCTUdva0FDQURDMzhDQVg4QmZpQUF2U0lEUWpTSXAwSC9EM0VpQWtIL0QwY0VmQ0FDUlFSQUlBRWdBRVFBQUFBQUFBQUFBR0VFZjBFQUJTQUFSQUFBQUFBQUFQQkRvaUFCRUxvQklRQWdBU2dDQUVGQWFnczJBZ0FnQUE4TElBRWdBa0grQjJzMkFnQWdBMEwvLy8vLy8vLy9oNEIvZzBLQWdJQ0FnSUNBOEQrRXZ3VWdBQXNMeGdJQkJIOGpBRUhRQVdzaUJTUUFJQVVnQWpZQ3pBRWdCVUdnQVdvaUFrRUFRU2dRS1JvZ0JTQUZLQUxNQVRZQ3lBRUNRRUVBSUFFZ0JVSElBV29nQlVIUUFHb2dBaUFESUFRUXZBRkJBRWdFUUVGL0lRUU1BUXNnQUNnQ1RFRUFUaUVHSUFBZ0FDZ0NBQ0lJUVY5eE5nSUFBbjhDUUFKQUlBQW9BakJGQkVBZ0FFSFFBRFlDTUNBQVFRQTJBaHdnQUVJQU53TVFJQUFvQWl3aEJ5QUFJQVUyQWl3TUFRc2dBQ2dDRUEwQkMwRi9JQUFRS2cwQkdnc2dBQ0FCSUFWQnlBRnFJQVZCMEFCcUlBVkJvQUZxSUFNZ0JCQzhBUXNoQWlBSEJFQWdBRUVBUVFBZ0FDZ0NKQkVFQUJvZ0FFRUFOZ0l3SUFBZ0J6WUNMQ0FBUVFBMkFod2dBQ2dDRkNFQklBQkNBRGNERUNBQ1FYOGdBUnNoQWdzZ0FDQUFLQUlBSWdBZ0NFRWdjWEkyQWdCQmZ5QUNJQUJCSUhFYklRUWdCa1VOQUFzZ0JVSFFBV29rQUNBRUM1MFRBaE4vQVg0akFFSFFBR3NpQ0NRQUlBZ2dBVFlDVENBSVFUZHFJUmdnQ0VFNGFpRVNBa0FDUUFKQUEwQkJBQ0VIQTBBZ0FTRU5JQWNnRVVILy8vLy9CM05LRFFJZ0J5QVJhaUVSQWtBQ1FBSkFJQTBpQnkwQUFDSUxCRUFEUUFKQUFrQWdDMEgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hDd05BSUFzdEFBRkJKVWNFUUNBTElRRU1BZ3NnQjBFQmFpRUhJQXN0QUFJaENTQUxRUUpxSWdFaEN5QUpRU1ZHRFFBTEN5QUhJQTFySWdjZ0VVSC8vLy8vQjNNaUdVb05DQ0FBQkVBZ0FDQU5JQWNRdlFFTElBY05CaUFJSUFFMkFrd2dBVUVCYWlFSFFYOGhFQUpBSUFFc0FBRWlDVUV3YTBFS1R3MEFJQUV0QUFKQkpFY05BQ0FCUVFOcUlRY2dDVUV3YXlFUVFRRWhFd3NnQ0NBSE5nSk1RUUFoREFKQUlBY3NBQUFpQzBFZ2F5SUJRUjlMQkVBZ0J5RUpEQUVMSUFjaENVRUJJQUYwSWdGQmlkRUVjVVVOQUFOQUlBZ2dCMEVCYWlJSk5nSk1JQUVnREhJaERDQUhMQUFCSWd0QklHc2lBVUVnVHcwQklBa2hCMEVCSUFGMElnRkJpZEVFY1EwQUN3c0NRQ0FMUVNwR0JFQUNmd0pBSUFrc0FBRWlBVUV3YTBFS1R3MEFJQWt0QUFKQkpFY05BQ0FCUVRCcklRRUNmeUFBUlFSQUlBUWdBVUVDZEdwQkNqWUNBRUVBREFFTElBTWdBVUVEZEdvb0FnQUxJUThnQ1VFRGFpRUJRUUVNQVFzZ0V3MEdJQWxCQVdvaEFTQUFSUVJBSUFnZ0FUWUNURUVBSVJOQkFDRVBEQU1MSUFJZ0FpZ0NBQ0lIUVFScU5nSUFJQWNvQWdBaEQwRUFDeUVUSUFnZ0FUWUNUQ0FQUVFCT0RRRkJBQ0FQYXlFUElBeEJnTUFBY2lFTURBRUxJQWhCekFCcUVMNEJJZzlCQUVnTkNTQUlLQUpNSVFFTFFRQWhCMEYvSVFvQ2YwRUFJQUV0QUFCQkxrY05BQm9nQVMwQUFVRXFSZ1JBQW44Q1FDQUJMQUFDSWdsQk1HdEJDazhOQUNBQkxRQURRU1JIRFFBZ0NVRXdheUVKSUFGQkJHb2hBUUovSUFCRkJFQWdCQ0FKUVFKMGFrRUtOZ0lBUVFBTUFRc2dBeUFKUVFOMGFpZ0NBQXNNQVFzZ0V3MEdJQUZCQW1vaEFVRUFJQUJGRFFBYUlBSWdBaWdDQUNJSlFRUnFOZ0lBSUFrb0FnQUxJUW9nQ0NBQk5nSk1JQXBCZjNOQkgzWU1BUXNnQ0NBQlFRRnFOZ0pNSUFoQnpBQnFFTDRCSVFvZ0NDZ0NUQ0VCUVFFTElSUURRQ0FISVJWQkhDRU9JQUVpRnl3QUFDSUhRZnNBYTBGR1NRMEtJQmRCQVdvaEFTQUhJQlZCT214cVFaK01FMm90QUFBaUIwRUJhMEVJU1EwQUN5QUlJQUUyQWt3Q1FDQUhRUnRIQkVBZ0IwVU5DeUFRUVFCT0JFQWdBRVVFUUNBRUlCQkJBblJxSUFjMkFnQU1Dd3NnQ0NBRElCQkJBM1JxS1FNQU53TkFEQUlMSUFCRkRRY2dDRUZBYXlBSElBSWdCaEMvQVF3QkN5QVFRUUJPRFFwQkFDRUhJQUJGRFFjTFFYOGhEaUFBTFFBQVFTQnhEUW9nREVILy8zdHhJZ3NnRENBTVFZREFBSEViSVF4QkFDRVFRWW83SVJZZ0VpRUpBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBZ0Z5d0FBQ0lIUVY5eElBY2dCMEVQY1VFRFJoc2dCeUFWR3lJSFFkZ0FhdzRoQkJRVUZCUVVGQlFVRGhRUEJnNE9EaFFHRkJRVUZBSUZBeFFVQ1JRQkZCUUVBQXNDUUNBSFFjRUFhdzRIRGhRTEZBNE9EZ0FMSUFkQjB3QkdEUWtNRXdzZ0NDa0RRQ0VhUVlvN0RBVUxRUUFoQndKQUFrQUNRQUpBQWtBQ1FBSkFJQlZCL3dGeERnZ0FBUUlEQkJvRkJob0xJQWdvQWtBZ0VUWUNBQXdaQ3lBSUtBSkFJQkUyQWdBTUdBc2dDQ2dDUUNBUnJEY0RBQXdYQ3lBSUtBSkFJQkU3QVFBTUZnc2dDQ2dDUUNBUk9nQUFEQlVMSUFnb0FrQWdFVFlDQUF3VUN5QUlLQUpBSUJHc053TUFEQk1MUVFnZ0NpQUtRUWhOR3lFS0lBeEJDSEloREVINEFDRUhDeUFTSVEwZ0IwRWdjU0VMSUFncEEwQWlHa0lBVWdSQUEwQWdEVUVCYXlJTklCcW5RUTl4UWJDUUUyb3RBQUFnQzNJNkFBQWdHa0lQVmlFT0lCcENCSWdoR2lBT0RRQUxDeUFJS1FOQVVBMERJQXhCQ0hGRkRRTWdCMEVFZGtHS08yb2hGa0VDSVJBTUF3c2dFaUVISUFncEEwQWlHa0lBVWdSQUEwQWdCMEVCYXlJSElCcW5RUWR4UVRCeU9nQUFJQnBDQjFZaERTQWFRZ09JSVJvZ0RRMEFDd3NnQnlFTklBeEJDSEZGRFFJZ0NpQVNJQTFySWdkQkFXb2dCeUFLU0JzaENnd0NDeUFJS1FOQUlocENBRk1FUUNBSVFnQWdHbjBpR2pjRFFFRUJJUkJCaWpzTUFRc2dERUdBRUhFRVFFRUJJUkJCaXpzTUFRdEJqRHRCaWpzZ0RFRUJjU0lRR3dzaEZpQWFJQklRd0FFaERRc2dGRUVBSUFwQkFFZ2JEUThnREVILy8zdHhJQXdnRkJzaERBSkFJQWdwQTBBaUdrSUFVZzBBSUFvTkFDQVNJUTFCQUNFS0RBd0xJQW9nR2xBZ0VpQU5hMm9pQnlBSElBcElHeUVLREFzTElBZ29Ba0FpQjBHOTVoSWdCeHNpRFNJSFFRQkIvLy8vL3djZ0NpQUtRZi8vLy84SFR4c2lDUkNIQVNJTUlBZHJJQWtnREJzaUJ5QU5haUVKSUFwQkFFNEVRQ0FMSVF3Z0J5RUtEQXNMSUFzaERDQUhJUW9nQ1MwQUFBME9EQW9MSUFvRVFDQUlLQUpBREFJTFFRQWhCeUFBUVNBZ0QwRUFJQXdRd1FFTUFnc2dDRUVBTmdJTUlBZ2dDQ2tEUUQ0Q0NDQUlJQWhCQ0dvaUJ6WUNRRUYvSVFvZ0J3c2hDMEVBSVFjQ1FBTkFJQXNvQWdBaUNVVU5BUUpBSUFoQkJHb2dDUkRDQVNJSlFRQklJZzBOQUNBSklBb2dCMnRMRFFBZ0MwRUVhaUVMSUFjZ0NXb2lCeUFLU1EwQkRBSUxDeUFORFE0TFFUMGhEaUFIUVFCSURRd2dBRUVnSUE4Z0J5QU1FTUVCSUFkRkJFQkJBQ0VIREFFTFFRQWhDU0FJS0FKQUlRc0RRQ0FMS0FJQUlnMUZEUUVnQ0VFRWFpQU5FTUlCSWcwZ0NXb2lDU0FIU3cwQklBQWdDRUVFYWlBTkVMMEJJQXRCQkdvaEN5QUhJQWxMRFFBTEN5QUFRU0FnRHlBSElBeEJnTUFBY3hEQkFTQVBJQWNnQnlBUFNCc2hCd3dJQ3lBVVFRQWdDa0VBU0JzTkNVRTlJUTRnQUNBSUt3TkFJQThnQ2lBTUlBY2dCUkVpQUNJSFFRQk9EUWNNQ2dzZ0NDQUlLUU5BUEFBM1FRRWhDaUFZSVEwZ0N5RU1EQVFMSUFjdEFBRWhDeUFIUVFGcUlRY01BQXNBQ3lBUklRNGdBQTBISUJORkRRSkJBU0VIQTBBZ0JDQUhRUUowYWlnQ0FDSUFCRUFnQXlBSFFRTjBhaUFBSUFJZ0JoQy9BVUVCSVE0Z0IwRUJhaUlIUVFwSERRRU1DUXNMUVFFaERpQUhRUXBQRFFjRFFDQUVJQWRCQW5ScUtBSUFEUUVnQjBFQmFpSUhRUXBIRFFBTERBY0xRUndoRGd3RkN5QUtJQWtnRFdzaUN5QUtJQXRLR3lJS0lCQkIvLy8vL3dkelNnMERRVDBoRGlBUElBb2dFR29pQ1NBSklBOUlHeUlISUJsS0RRUWdBRUVnSUFjZ0NTQU1FTUVCSUFBZ0ZpQVFFTDBCSUFCQk1DQUhJQWtnREVHQWdBUnpFTUVCSUFCQk1DQUtJQXRCQUJEQkFTQUFJQTBnQ3hDOUFTQUFRU0FnQnlBSklBeEJnTUFBY3hEQkFRd0JDd3NMUVFBaERnd0NDMEU5SVE0TFFhRC9FeUFPTmdJQVFYOGhEZ3NnQ0VIUUFHb2tBQ0FPQ3hjQUlBQXRBQUJCSUhGRkJFQWdBU0FDSUFBUUxCb0xDMTBCQTM4Z0FDZ0NBQ0VDQTBBZ0Fpd0FBQ0lEUVRCclFRcEpCRUFnQUNBQ1FRRnFJZ0kyQWdBZ0FVSE1tYlBtQUUwRWYwRi9JQU5CTUdzaUF5QUJRUXBzSWdGcUlBTWdBVUgvLy8vL0IzTktHd1ZCZndzaEFRd0JDd3NnQVF2RUFnQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRUWxyRGhJQUNnc01DZ3NDQXdRRkRBc01EQW9MQndnSkN5QUNJQUlvQWdBaUFVRUVhallDQUNBQUlBRW9BZ0EyQWdBUEN3QUxJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVElCQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVE1CQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEFBQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEVBQURjREFBOExBQXNnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkFnQUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUM0VUJBZ04vQVg0Q1FDQUFRb0NBZ0lBUVZBUkFJQUFoQlF3QkN3TkFJQUZCQVdzaUFTQUFRZ3FBSWdWQzlnRitJQUI4cDBFd2Nqb0FBQ0FBUXYvLy8vK2ZBVlloQWlBRklRQWdBZzBBQ3dzZ0JhY2lBZ1JBQTBBZ0FVRUJheUlCSUFKQkNtNGlBMEgyQVd3Z0FtcEJNSEk2QUFBZ0FrRUpTeUVFSUFNaEFpQUVEUUFMQ3lBQkMzRUJBWDhqQUVHQUFtc2lCU1FBQWtBZ0FpQURUQTBBSUFSQmdNQUVjUTBBSUFVZ0FVSC9BWEVnQWlBRGF5SURRWUFDSUFOQmdBSkpJZ0ViRUNrYUlBRkZCRUFEUUNBQUlBVkJnQUlRdlFFZ0EwR0FBbXNpQTBIL0FVc05BQXNMSUFBZ0JTQURFTDBCQ3lBRlFZQUNhaVFBQ3hJQUlBQkZCRUJCQUE4TElBQWdBUkRVQVFzUkFDQUFJQUVnQWtIUUFFSFJBQkM3QVF1ekdBTVNmd0Y4QTM0akFFR3dCR3NpRENRQUlBeEJBRFlDTEFKQUlBRzlJaGxDQUZNRVFFRUJJUkZCbERzaEV5QUJtaUlCdlNFWkRBRUxJQVJCZ0JCeEJFQkJBU0VSUVpjN0lSTU1BUXRCbWp0QmxUc2dCRUVCY1NJUkd5RVRJQkZGSVJVTEFrQWdHVUtBZ0lDQWdJQ0ErUDhBZzBLQWdJQ0FnSUNBK1A4QVVRUkFJQUJCSUNBQ0lCRkJBMm9pQXlBRVFmLy9lM0VRd1FFZ0FDQVRJQkVRdlFFZ0FFR1FQa0h2eEFBZ0JVRWdjU0lGRzBIZlAwR2N4UUFnQlJzZ0FTQUJZaHRCQXhDOUFTQUFRU0FnQWlBRElBUkJnTUFBY3hEQkFTQURJQUlnQWlBRFNCc2hDUXdCQ3lBTVFSQnFJUklDUUFKL0FrQWdBU0FNUVN4cUVMb0JJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWc1QjRRQkhEUUVNQXdzZ0JVRWdjaUlPUWVFQVJnMENJQXdvQWl3aENrRUdJQU1nQTBFQVNCc01BUXNnRENBR1FSMXJJZ28yQWl3Z0FVUUFBQUFBQUFDd1FhSWhBVUVHSUFNZ0EwRUFTQnNMSVFzZ0RFRXdha0dnQWtFQUlBcEJBRTRiYWlJTklRY0RRQ0FIQW44Z0FVUUFBQUFBQUFEd1FXTWdBVVFBQUFBQUFBQUFBR1p4QkVBZ0Fhc01BUXRCQUFzaUF6WUNBQ0FIUVFScUlRY2dBU0FEdUtGRUFBQUFBR1hOelVHaUlnRkVBQUFBQUFBQUFBQmlEUUFMQWtBZ0NrRUFUQVJBSUFvaEF5QUhJUVlnRFNFSURBRUxJQTBoQ0NBS0lRTURRRUVkSUFNZ0EwRWRUaHNoQXdKQUlBZEJCR3NpQmlBSVNRMEFJQU90SVJwQ0FDRVpBMEFnQmlBWlF2Ly8vLzhQZ3lBR05RSUFJQnFHZkNJYlFvQ1U2OXdEZ0NJWlFvRHNsS01NZmlBYmZENENBQ0FHUVFScklnWWdDRThOQUFzZ0dhY2lCa1VOQUNBSVFRUnJJZ2dnQmpZQ0FBc0RRQ0FJSUFjaUJra0VRQ0FHUVFScklnY29BZ0JGRFFFTEN5QU1JQXdvQWl3Z0Eyc2lBellDTENBR0lRY2dBMEVBU2cwQUN3c2dBMEVBU0FSQUlBdEJHV3BCQ1c1QkFXb2hEeUFPUWVZQVJpRVFBMEJCQ1VFQUlBTnJJZ01nQTBFSlRoc2hDUUpBSUFZZ0NFMEVRQ0FJS0FJQUlRY01BUXRCZ0pUcjNBTWdDWFloRkVGL0lBbDBRWDl6SVJaQkFDRURJQWdoQndOQUlBY2dBeUFIS0FJQUloY2dDWFpxTmdJQUlCWWdGM0VnRkd3aEF5QUhRUVJxSWdjZ0Jra05BQXNnQ0NnQ0FDRUhJQU5GRFFBZ0JpQUROZ0lBSUFaQkJHb2hCZ3NnRENBTUtBSXNJQWxxSWdNMkFpd2dEU0FJSUFkRlFRSjBhaUlJSUJBYklnY2dEMEVDZEdvZ0JpQUdJQWRyUVFKMUlBOUtHeUVHSUFOQkFFZ05BQXNMUVFBaEF3SkFJQVlnQ0UwTkFDQU5JQWhyUVFKMVFRbHNJUU5CQ2lFSElBZ29BZ0FpQ1VFS1NRMEFBMEFnQTBFQmFpRURJQWtnQjBFS2JDSUhUdzBBQ3dzZ0N5QURRUUFnRGtIbUFFY2JheUFPUWVjQVJpQUxRUUJIY1dzaUJ5QUdJQTFyUVFKMVFRbHNRUWxyU0FSQVFRUkJwQUlnQ2tFQVNCc2dER29nQjBHQXlBQnFJZ2xCQ1cwaUQwRUNkR3BCMEI5cklRcEJDaUVISUE5QmQyd2dDV29pQ1VFSFRBUkFBMEFnQjBFS2JDRUhJQWxCQVdvaUNVRUlSdzBBQ3dzQ1FDQUtLQUlBSWhBZ0VDQUhiaUlQSUFkc0lnbEdJQXBCQkdvaUZDQUdSbkVOQUNBUUlBbHJJUkFDUUNBUFFRRnhSUVJBUkFBQUFBQUFBRUJESVFFZ0IwR0FsT3ZjQTBjTkFTQUlJQXBQRFFFZ0NrRUVheTBBQUVFQmNVVU5BUXRFQVFBQUFBQUFRRU1oQVF0RUFBQUFBQUFBNEQ5RUFBQUFBQUFBOEQ5RUFBQUFBQUFBK0Q4Z0JpQVVSaHRFQUFBQUFBQUErRDhnRUNBSFFRRjJJaFJHR3lBUUlCUkpHeUVZQWtBZ0ZRMEFJQk10QUFCQkxVY05BQ0FZbWlFWUlBR2FJUUVMSUFvZ0NUWUNBQ0FCSUJpZ0lBRmhEUUFnQ2lBSElBbHFJZ00yQWdBZ0EwR0FsT3ZjQTA4RVFBTkFJQXBCQURZQ0FDQUlJQXBCQkdzaUNrc0VRQ0FJUVFScklnaEJBRFlDQUFzZ0NpQUtLQUlBUVFGcUlnTTJBZ0FnQTBIL2srdmNBMHNOQUFzTElBMGdDR3RCQW5WQkNXd2hBMEVLSVFjZ0NDZ0NBQ0lKUVFwSkRRQURRQ0FEUVFGcUlRTWdDU0FIUVFwc0lnZFBEUUFMQ3lBS1FRUnFJZ2NnQmlBR0lBZExHeUVHQ3dOQUlBWWlCeUFJVFNJSlJRUkFJQWRCQkdzaUJpZ0NBRVVOQVFzTEFrQWdEa0huQUVjRVFDQUVRUWh4SVFvTUFRc2dBMEYvYzBGL0lBdEJBU0FMR3lJR0lBTktJQU5CZTBweElnb2JJQVpxSVF0QmYwRitJQW9iSUFWcUlRVWdCRUVJY1NJS0RRQkJkeUVHQWtBZ0NRMEFJQWRCQkdzb0FnQWlEa1VOQUVFS0lRbEJBQ0VHSUE1QkNuQU5BQU5BSUFZaUNrRUJhaUVHSUE0Z0NVRUtiQ0lKY0VVTkFBc2dDa0YvY3lFR0N5QUhJQTFyUVFKMVFRbHNJUWtnQlVGZmNVSEdBRVlFUUVFQUlRb2dDeUFHSUFscVFRbHJJZ1pCQUNBR1FRQktHeUlHSUFZZ0Mwb2JJUXNNQVF0QkFDRUtJQXNnQXlBSmFpQUdha0VKYXlJR1FRQWdCa0VBU2hzaUJpQUdJQXRLR3lFTEMwRi9JUWtnQzBIOS8vLy9CMEgrLy8vL0J5QUtJQXR5SWhBYlNnMEJJQXNnRUVFQVIycEJBV29oRGdKQUlBVkJYM0VpRlVIR0FFWUVRQ0FESUE1Qi8vLy8vd2R6U2cwRElBTkJBQ0FEUVFCS0d5RUdEQUVMSUJJZ0F5QURRUjkxSWdaeklBWnJyU0FTRU1BQklnWnJRUUZNQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FTSUFaclFRSklEUUFMQ3lBR1FRSnJJZzhnQlRvQUFDQUdRUUZyUVMxQkt5QURRUUJJR3pvQUFDQVNJQTlySWdZZ0RrSC8vLy8vQjNOS0RRSUxJQVlnRG1vaUF5QVJRZi8vLy84SGMwb05BU0FBUVNBZ0FpQURJQkZxSWdVZ0JCREJBU0FBSUJNZ0VSQzlBU0FBUVRBZ0FpQUZJQVJCZ0lBRWN4REJBUUpBQWtBQ1FDQVZRY1lBUmdSQUlBeEJFR29pQmtFSWNpRURJQVpCQ1hJaENpQU5JQWdnQ0NBTlN4c2lDU0VJQTBBZ0NEVUNBQ0FLRU1BQklRWUNRQ0FJSUFsSEJFQWdCaUFNUVJCcVRRMEJBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQU1RUkJxU3cwQUN3d0JDeUFHSUFwSERRQWdERUV3T2dBWUlBTWhCZ3NnQUNBR0lBb2dCbXNRdlFFZ0NFRUVhaUlJSUExTkRRQUxJQkFFUUNBQVFidm1Fa0VCRUwwQkN5QUhJQWhORFFFZ0MwRUFUQTBCQTBBZ0NEVUNBQ0FLRU1BQklnWWdERUVRYWtzRVFBTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0RFRVFha3NOQUFzTElBQWdCa0VKSUFzZ0MwRUpUaHNRdlFFZ0MwRUpheUVHSUFoQkJHb2lDQ0FIVHcwRElBdEJDVW9oQXlBR0lRc2dBdzBBQ3d3Q0N3SkFJQXRCQUVnTkFDQUhJQWhCQkdvZ0J5QUlTeHNoQ1NBTVFSQnFJZ1pCQ0hJaEF5QUdRUWx5SVEwZ0NDRUhBMEFnRFNBSE5RSUFJQTBRd0FFaUJrWUVRQ0FNUVRBNkFCZ2dBeUVHQ3dKQUlBY2dDRWNFUUNBR0lBeEJFR3BORFFFRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMREFFTElBQWdCa0VCRUwwQklBWkJBV29oQmlBS0lBdHlSUTBBSUFCQnUrWVNRUUVRdlFFTElBQWdCaUFOSUFacklnWWdDeUFHSUF0SUd4QzlBU0FMSUFacklRc2dCMEVFYWlJSElBbFBEUUVnQzBFQVRnMEFDd3NnQUVFd0lBdEJFbXBCRWtFQUVNRUJJQUFnRHlBU0lBOXJFTDBCREFJTElBc2hCZ3NnQUVFd0lBWkJDV3BCQ1VFQUVNRUJDeUFBUVNBZ0FpQUZJQVJCZ01BQWN4REJBU0FGSUFJZ0FpQUZTQnNoQ1F3QkN5QVRJQVZCR25SQkgzVkJDWEZxSVFnQ1FDQURRUXRMRFFCQkRDQURheUVHUkFBQUFBQUFBREJBSVJnRFFDQVlSQUFBQUFBQUFEQkFvaUVZSUFaQkFXc2lCZzBBQ3lBSUxRQUFRUzFHQkVBZ0dDQUJtaUFZb2FDYUlRRU1BUXNnQVNBWW9DQVlvU0VCQ3lBUlFRSnlJUXNnQlVFZ2NTRU5JQklnRENnQ0xDSUhJQWRCSDNVaUJuTWdCbXV0SUJJUXdBRWlCa1lFUUNBTVFUQTZBQThnREVFUGFpRUdDeUFHUVFKcklnb2dCVUVQYWpvQUFDQUdRUUZyUVMxQkt5QUhRUUJJR3pvQUFDQUVRUWh4SVFZZ0RFRVFhaUVIQTBBZ0J5SUZBbjhnQVpsRUFBQUFBQUFBNEVGakJFQWdBYW9NQVF0QmdJQ0FnSGdMSWdkQnNKQVRhaTBBQUNBTmNqb0FBQ0FCSUFlM29VUUFBQUFBQUFBd1FLSWhBUUpBSUFWQkFXb2lCeUFNUVJCcWEwRUJSdzBBQWtBZ0JnMEFJQU5CQUVvTkFDQUJSQUFBQUFBQUFBQUFZUTBCQ3lBRlFTNDZBQUVnQlVFQ2FpRUhDeUFCUkFBQUFBQUFBQUFBWWcwQUMwRi9JUWxCL2YvLy93Y2dDeUFTSUFwcklnWnFJZzFySUFOSURRQWdBRUVnSUFJZ0RTQURRUUpxSUFjZ0RFRVFhaUlIYXlJRklBVkJBbXNnQTBnYklBVWdBeHNpQ1dvaUF5QUVFTUVCSUFBZ0NDQUxFTDBCSUFCQk1DQUNJQU1nQkVHQWdBUnpFTUVCSUFBZ0J5QUZFTDBCSUFCQk1DQUpJQVZyUVFCQkFCREJBU0FBSUFvZ0JoQzlBU0FBUVNBZ0FpQURJQVJCZ01BQWN4REJBU0FESUFJZ0FpQURTQnNoQ1FzZ0RFR3dCR29rQUNBSkN5Z0FJQUVnQVNnQ0FFRUhha0Y0Y1NJQlFSQnFOZ0lBSUFBZ0FTa0RBQ0FCS1FNSUVFMDVBd0FMRUFBZ0FDQUJJQUpCQUVFQUVMc0JHZ3Q4QVFKL0lBQWdBQ2dDU0NJQlFRRnJJQUZ5TmdKSUlBQW9BaFFnQUNnQ0hFY0VRQ0FBUVFCQkFDQUFLQUlrRVFRQUdnc2dBRUVBTmdJY0lBQkNBRGNERUNBQUtBSUFJZ0ZCQkhFRVFDQUFJQUZCSUhJMkFnQkJmdzhMSUFBZ0FDZ0NMQ0FBS0FJd2FpSUNOZ0lJSUFBZ0FqWUNCQ0FCUVJ0MFFSOTFDMEVCQW44akFFRVFheUlCSkFCQmZ5RUNBa0FnQUJESEFRMEFJQUFnQVVFUGFrRUJJQUFvQWlBUkJBQkJBVWNOQUNBQkxRQVBJUUlMSUFGQkVHb2tBQ0FDQzBjQkFuOGdBQ0FCTndOd0lBQWdBQ2dDTENBQUtBSUVJZ05yckRjRGVDQUFLQUlJSVFJQ1FDQUJVQTBBSUFJZ0EydXNJQUZYRFFBZ0F5QUJwMm9oQWdzZ0FDQUNOZ0pvQzlRQkFnTi9BbjRDUUNBQUtRTndJZ1JDQUZJZ0JDQUFLUU40SUFBb0FnUWlBU0FBS0FJc0lnSnJySHdpQlZkeFJRUkFJQUFReUFFaUEwRUFUZzBCSUFBb0Fpd2hBaUFBS0FJRUlRRUxJQUJDZnpjRGNDQUFJQUUyQW1nZ0FDQUZJQUlnQVd1c2ZEY0RlRUYvRHdzZ0JVSUJmQ0VGSUFBb0FnUWhBU0FBS0FJSUlRSUNRQ0FBS1FOd0lnUlFEUUFnQkNBRmZTSUVJQUlnQVd1c1dRMEFJQUVnQktkcUlRSUxJQUFnQWpZQ2FDQUFJQVVnQUNnQ0xDSUFJQUZyckh3M0EzZ2dBQ0FCVHdSQUlBRkJBV3NnQXpvQUFBc2dBd3UvQWdFRWZ5QURRZkNaRkNBREd5SUZLQUlBSVFNQ1FBSi9Ba0FnQVVVRVFDQUREUUZCQUE4TFFYNGdBa1VOQVJvQ1FDQURCRUFnQWlFRURBRUxJQUV0QUFBaUE4QWlCRUVBVGdSQUlBQUVRQ0FBSUFNMkFnQUxJQVJCQUVjUEMwSE1tUlFvQWdBb0FnQkZCRUJCQVNBQVJRMERHaUFBSUFSQi83OERjVFlDQUVFQkR3c2dBMEhDQVdzaUEwRXlTdzBCSUFOQkFuUkJ3TGNUYWlnQ0FDRURJQUpCQVdzaUJFVU5BeUFCUVFGcUlRRUxJQUV0QUFBaUJrRURkaUlIUVJCcklBTkJHblVnQjJweVFRZExEUUFEUUNBRVFRRnJJUVFnQmtHQUFXc2dBMEVHZEhJaUEwRUFUZ1JBSUFWQkFEWUNBQ0FBQkVBZ0FDQUROZ0lBQ3lBQ0lBUnJEd3NnQkVVTkF5QUJRUUZxSWdFdEFBQWlCa0hBQVhGQmdBRkdEUUFMQ3lBRlFRQTJBZ0JCb1A4VFFSazJBZ0JCZndzUEN5QUZJQU0yQWdCQmZnczFBQ0FBSUFFM0F3QWdBQ0FDUXYvLy8vLy8veitESUFSQ01JaW5RWUNBQW5FZ0FrSXdpS2RCLy84QmNYS3RRakNHaERjRENBdS9BZ0VCZnlNQVFkQUFheUlFSkFBQ1FDQURRWUNBQVU0RVFDQUVRU0JxSUFFZ0FrSUFRb0NBZ0lDQWdJRC8vd0FRUENBRUtRTW9JUUlnQkNrRElDRUJJQU5CLy84QlNRUkFJQU5CLy84QWF5RUREQUlMSUFSQkVHb2dBU0FDUWdCQ2dJQ0FnSUNBZ1AvL0FCQThRZjMvQWlBRElBTkIvZjhDVGh0Qi92OEJheUVESUFRcEF4Z2hBaUFFS1FNUUlRRU1BUXNnQTBHQmdIOUtEUUFnQkVGQWF5QUJJQUpDQUVLQWdJQ0FnSUNBT1JBOElBUXBBMGdoQWlBRUtRTkFJUUVnQTBIMGdINUxCRUFnQTBHTi93QnFJUU1NQVFzZ0JFRXdhaUFCSUFKQ0FFS0FnSUNBZ0lDQU9SQThRZWlCZlNBRElBTkI2SUY5VEJ0Qm12NEJhaUVESUFRcEF6Z2hBaUFFS1FNd0lRRUxJQVFnQVNBQ1FnQWdBMEgvL3dCcXJVSXdoaEE4SUFBZ0JDa0RDRGNEQ0NBQUlBUXBBd0EzQXdBZ0JFSFFBR29rQUF2VU1nTVBmd2QrQVh3akFFRXdheUlNSkFBQ1FDQUNRUUpOQkVBZ0FrRUNkQ0lDUVl5VEUyb29BZ0FoRHlBQ1FZQ1RFMm9vQWdBaERnTkFBbjhnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBUkRLQVFzaUFrRWdSaUFDUVFsclFRVkpjZzBBQzBFQklRb0NRQUpBSUFKQksyc09Bd0FCQUFFTFFYOUJBU0FDUVMxR0d5RUtJQUVvQWdRaUFpQUJLQUpvUndSQUlBRWdBa0VCYWpZQ0JDQUNMUUFBSVFJTUFRc2dBUkRLQVNFQ0N3SkFBa0FEUUNBRlFlQTVhaXdBQUNBQ1FTQnlSZ1JBQWtBZ0JVRUdTdzBBSUFFb0FnUWlBaUFCS0FKb1J3UkFJQUVnQWtFQmFqWUNCQ0FDTFFBQUlRSU1BUXNnQVJES0FTRUNDeUFGUVFGcUlnVkJDRWNOQVF3Q0N3c2dCVUVEUndSQUlBVkJDRVlOQVNBRFJRMENJQVZCQkVrTkFpQUZRUWhHRFFFTElBRXBBM0FpRTBJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzZ0EwVU5BQ0FGUVFSSkRRQWdFMElBVXlFQ0EwQWdBa1VFUUNBQklBRW9BZ1JCQVdzMkFnUUxJQVZCQVdzaUJVRURTdzBBQ3d0Q0FDRVRJd0JCRUdzaUFpUUFBbjRnQ3JKREFBQ0FmNVM4SWdOQi8vLy8vd2R4SWdGQmdJQ0FCR3RCLy8vLzl3ZE5CRUFnQWExQ0dZWkNnSUNBZ0lDQWdNQS9mQXdCQ3lBRHJVSVpoa0tBZ0lDQWdJREEvLzhBaENBQlFZQ0FnUHdIVHcwQUdrSUFJQUZGRFFBYUlBSWdBYTFDQUNBQlp5SUJRZEVBYWhBNUlBSXBBd0FoRXlBQ0tRTUlRb0NBZ0lDQWdNQUFoVUdKL3dBZ0FXdXRRakNHaEFzaEZDQU1JQk0zQXdBZ0RDQVVJQU5CZ0lDQWdIaHhyVUlnaG9RM0F3Z2dBa0VRYWlRQUlBd3BBd2doRXlBTUtRTUFJUlFNQWdzQ1FBSkFBa0FnQlEwQVFRQWhCUU5BSUFWQmtENXFMQUFBSUFKQklISkhEUUVDUUNBRlFRRkxEUUFnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBaEFnd0JDeUFCRU1vQklRSUxJQVZCQVdvaUJVRURSdzBBQ3d3QkN3SkFBa0FnQlE0RUFBRUJBZ0VMQWtBZ0FrRXdSdzBBQW44Z0FTZ0NCQ0lGSUFFb0FtaEhCRUFnQVNBRlFRRnFOZ0lFSUFVdEFBQU1BUXNnQVJES0FRdEJYM0ZCMkFCR0JFQWpBRUd3QTJzaUFpUUFBbjhnQVNnQ0JDSUZJQUVvQW1oSEJFQWdBU0FGUVFGcU5nSUVJQVV0QUFBTUFRc2dBUkRLQVFzaEJRSkFBbjhEUUNBRlFUQkhCRUFDUUNBRlFTNUhEUVFnQVNnQ0JDSUZJQUVvQW1oR0RRQWdBU0FGUVFGcU5nSUVJQVV0QUFBTUF3c0ZJQUVvQWdRaUJTQUJLQUpvUndSL1FRRWhDU0FCSUFWQkFXbzJBZ1FnQlMwQUFBVkJBU0VKSUFFUXlnRUxJUVVNQVFzTElBRVF5Z0VMSVFWQkFTRUlJQVZCTUVjTkFBTkFJQlpDQVgwaEZnSi9JQUVvQWdRaUJTQUJLQUpvUndSQUlBRWdCVUVCYWpZQ0JDQUZMUUFBREFFTElBRVF5Z0VMSWdWQk1FWU5BQXRCQVNFSkMwS0FnSUNBZ0lEQS96OGhGQUpBQTBBQ1FDQUZRU0J5SVFRQ1FBSkFJQVZCTUdzaUIwRUtTUTBBSUFWQkxrY2dCRUhoQUd0QkJVdHhEUVFnQlVFdVJ3MEFJQWdOQWtFQklRZ2dFeUVXREFFTElBUkIxd0JySUFjZ0JVRTVTaHNoQlFKQUlCTkNCMWNFUUNBRklBWkJCSFJxSVFZTUFRc2dFMEljV0FSQUlBSkJNR29nQlJCT0lBSkJJR29nR0NBVVFnQkNnSUNBZ0lDQXdQMC9FRHdnQWtFUWFpQUNLUU13SUFJcEF6Z2dBaWtESUNJWUlBSXBBeWdpRkJBOElBSWdBaWtERUNBQ0tRTVlJQlVnRnhCSElBSXBBd2doRnlBQ0tRTUFJUlVNQVFzZ0JVVU5BQ0FMRFFBZ0FrSFFBR29nR0NBVVFnQkNnSUNBZ0lDQWdQOC9FRHdnQWtGQWF5QUNLUU5RSUFJcEExZ2dGU0FYRUVjZ0Fpa0RTQ0VYUVFFaEN5QUNLUU5BSVJVTElCTkNBWHdoRTBFQklRa0xJQUVvQWdRaUJTQUJLQUpvUndSL0lBRWdCVUVCYWpZQ0JDQUZMUUFBQlNBQkVNb0JDeUVGREFFTEMwRXVJUVVMQW40Z0NVVUVRQUpBQWtBZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkNJR1FRRnJOZ0lFSUFORkRRRWdBU0FHUVFKck5nSUVJQWhGRFFJZ0FTQUdRUU5yTmdJRURBSUxJQU1OQVFzZ0FVSUFFTWtCQ3lBQ1FlQUFhaUFLdDBRQUFBQUFBQUFBQUtJUVR5QUNLUU5nSVJVZ0Fpa0RhQXdCQ3lBVFFnZFhCRUFnRXlFVUEwQWdCa0VFZENFR0lCUkNBWHdpRkVJSVVnMEFDd3NDUUFKQUFrQWdCVUZmY1VIUUFFWUVRQ0FCSUFNUXp3RWlGRUtBZ0lDQWdJQ0FnSUIvVWcwRElBTUVRQ0FCS1FOd1FnQlpEUUlNQXd0Q0FDRVZJQUZDQUJESkFVSUFEQVFMUWdBaEZDQUJLUU53UWdCVERRSUxJQUVnQVNnQ0JFRUJhellDQkF0Q0FDRVVDeUFHUlFSQUlBSkI4QUJxSUFxM1JBQUFBQUFBQUFBQW9oQlBJQUlwQTNBaEZTQUNLUU40REFFTElCWWdFeUFJRzBJQ2hpQVVmRUlnZlNJVFFRQWdEMnV0VlFSQVFhRC9FMEhFQURZQ0FDQUNRYUFCYWlBS0VFNGdBa0dRQVdvZ0Fpa0RvQUVnQWlrRHFBRkNmMEwvLy8vLy8vKy8vLzhBRUR3Z0FrR0FBV29nQWlrRGtBRWdBaWtEbUFGQ2YwTC8vLy8vLy8rLy8vOEFFRHdnQWlrRGdBRWhGU0FDS1FPSUFRd0JDeUFQUWVJQmE2d2dFMWNFUUNBR1FRQk9CRUFEUUNBQ1FhQURhaUFWSUJkQ0FFS0FnSUNBZ0lEQS83OS9FRWNnRlNBWFFvQ0FnSUNBZ0lEL1B4QTRJUUVnQWtHUUEyb2dGU0FYSUFJcEE2QURJQlVnQVVFQVRpSUJHeUFDS1FPb0F5QVhJQUViRUVjZ0UwSUJmU0VUSUFJcEE1Z0RJUmNnQWlrRGtBTWhGU0FHUVFGMElBRnlJZ1pCQUU0TkFBc0xBbjRnRXlBUHJIMUNJSHdpRktjaUFVRUFJQUZCQUVvYklBNGdGQ0FPclZNYklnRkI4UUJPQkVBZ0FrR0FBMm9nQ2hCT0lBSXBBNGdESVJZZ0Fpa0RnQU1oR0VJQURBRUxJQUpCNEFKcVJBQUFBQUFBQVBBL1FaQUJJQUZyRURBUVR5QUNRZEFDYWlBS0VFNGdBa0h3QW1vZ0Fpa0Q0QUlnQWlrRDZBSWdBaWtEMEFJaUdDQUNLUVBZQWlJV0VNd0JJQUlwQS9nQ0lSa2dBaWtEOEFJTElSUWdBa0hBQW1vZ0JpQUdRUUZ4UlNBVklCZENBRUlBRURkQkFFY2dBVUVnU0hGeElnRnFFRkFnQWtHd0Ftb2dHQ0FXSUFJcEE4QUNJQUlwQThnQ0VEd2dBa0dRQW1vZ0Fpa0RzQUlnQWlrRHVBSWdGQ0FaRUVjZ0FrR2dBbW9nR0NBV1FnQWdGU0FCRzBJQUlCY2dBUnNRUENBQ1FZQUNhaUFDS1FPZ0FpQUNLUU9vQWlBQ0tRT1FBaUFDS1FPWUFoQkhJQUpCOEFGcUlBSXBBNEFDSUFJcEE0Z0NJQlFnR1JCSUlBSXBBL0FCSWhRZ0Fpa0QrQUVpRmtJQVFnQVFOMFVFUUVHZy94TkJ4QUEyQWdBTElBSkI0QUZxSUJRZ0ZpQVRweEROQVNBQ0tRUGdBU0VWSUFJcEErZ0JEQUVMUWFEL0UwSEVBRFlDQUNBQ1FkQUJhaUFLRUU0Z0FrSEFBV29nQWlrRDBBRWdBaWtEMkFGQ0FFS0FnSUNBZ0lEQUFCQThJQUpCc0FGcUlBSXBBOEFCSUFJcEE4Z0JRZ0JDZ0lDQWdJQ0F3QUFRUENBQ0tRT3dBU0VWSUFJcEE3Z0JDeUVUSUF3Z0ZUY0RFQ0FNSUJNM0F4Z2dBa0d3QTJva0FDQU1LUU1ZSVJNZ0RDa0RFQ0VVREFZTElBRXBBM0JDQUZNTkFDQUJJQUVvQWdSQkFXczJBZ1FMSUFFaEJTQUNJUVlnQXlFSlFRQWhBeU1BUVpER0FHc2lCQ1FBUVFBZ0Qyc2lFQ0FPYXlFU0FrQUNmd05BQWtBZ0JrRXdSd1JBSUFaQkxrY05CQ0FGS0FJRUlnRWdCU2dDYUVZTkFTQUZJQUZCQVdvMkFnUWdBUzBBQUF3REN5QUZLQUlFSWdFZ0JTZ0NhRWNFUUNBRklBRkJBV28yQWdRZ0FTMEFBQ0VHQlNBRkVNb0JJUVlMUVFFaEF3d0JDd3NnQlJES0FRc2hCa0VCSVEwZ0JrRXdSdzBBQTBBZ0UwSUJmU0VUQW44Z0JTZ0NCQ0lCSUFVb0FtaEhCRUFnQlNBQlFRRnFOZ0lFSUFFdEFBQU1BUXNnQlJES0FRc2lCa0V3UmcwQUMwRUJJUU1MSUFSQkFEWUNrQVlnQmtFd2F5RUNJQXdDZmdKQUFrQUNRQUpBQWtBQ1FDQUdRUzVHSWdFTkFDQUNRUWxORFFBTUFRc0RRQUpBSUFGQkFYRUVRQ0FOUlFSQUlCUWhFMEVCSVEwTUFnc2dBMFVoQVF3RUN5QVVRZ0Y4SVJRZ0NFSDhEMHdFUUNBTElCU25JQVpCTUVZYklRc2dCRUdRQm1vZ0NFRUNkR29pQVNBSEJIOGdCaUFCS0FJQVFRcHNha0V3YXdVZ0FnczJBZ0JCQVNFRFFRQWdCMEVCYWlJQklBRkJDVVlpQVJzaEJ5QUJJQWhxSVFnTUFRc2dCa0V3UmcwQUlBUWdCQ2dDZ0VaQkFYSTJBb0JHUWR5UEFTRUxDd0ovSUFVb0FnUWlBU0FGS0FKb1J3UkFJQVVnQVVFQmFqWUNCQ0FCTFFBQURBRUxJQVVReWdFTElnWkJNR3NoQWlBR1FTNUdJZ0VOQUNBQ1FRcEpEUUFMQ3lBVElCUWdEUnNoRXdKQUlBTkZEUUFnQmtGZmNVSEZBRWNOQUFKQUlBVWdDUkRQQVNJVlFvQ0FnSUNBZ0lDQWdIOVNEUUFnQ1VVTkJFSUFJUlVnQlNrRGNFSUFVdzBBSUFVZ0JTZ0NCRUVCYXpZQ0JBc2dFeUFWZkNFVERBUUxJQU5GSVFFZ0JrRUFTQTBCQ3lBRktRTndRZ0JURFFBZ0JTQUZLQUlFUVFGck5nSUVDeUFCUlEwQlFhRC9FMEVjTmdJQUMwSUFJUlFnQlVJQUVNa0JRZ0FNQVFzZ0JDZ0NrQVlpQVVVRVFDQUVJQXEzUkFBQUFBQUFBQUFBb2hCUElBUXBBd0FoRkNBRUtRTUlEQUVMQWtBZ0ZFSUpWUTBBSUJNZ0ZGSU5BQ0FPUVI1TVFRQWdBU0FPZGhzTkFDQUVRVEJxSUFvUVRpQUVRU0JxSUFFUVVDQUVRUkJxSUFRcEF6QWdCQ2tET0NBRUtRTWdJQVFwQXlnUVBDQUVLUU1RSVJRZ0JDa0RHQXdCQ3lBUVFRRjJyU0FUVXdSQVFhRC9FMEhFQURZQ0FDQUVRZUFBYWlBS0VFNGdCRUhRQUdvZ0JDa0RZQ0FFS1FOb1FuOUMvLy8vLy8vL3YvLy9BQkE4SUFSQlFHc2dCQ2tEVUNBRUtRTllRbjlDLy8vLy8vLy92Ly8vQUJBOElBUXBBMEFoRkNBRUtRTklEQUVMSUE5QjRnRnJyQ0FUVlFSQVFhRC9FMEhFQURZQ0FDQUVRWkFCYWlBS0VFNGdCRUdBQVdvZ0JDa0RrQUVnQkNrRG1BRkNBRUtBZ0lDQWdJREFBQkE4SUFSQjhBQnFJQVFwQTRBQklBUXBBNGdCUWdCQ2dJQ0FnSUNBd0FBUVBDQUVLUU53SVJRZ0JDa0RlQXdCQ3lBSEJFQWdCMEVJVEFSQUlBUkJrQVpxSUFoQkFuUnFJZ0VvQWdBaEJRTkFJQVZCQ213aEJTQUhRUUZxSWdkQkNVY05BQXNnQVNBRk5nSUFDeUFJUVFGcUlRZ0xJQk9uSVFjQ1FDQUxRUWxPRFFBZ0J5QUxTQTBBSUFkQkVVb05BQ0FIUVFsR0JFQWdCRUhBQVdvZ0NoQk9JQVJCc0FGcUlBUW9BcEFHRUZBZ0JFR2dBV29nQkNrRHdBRWdCQ2tEeUFFZ0JDa0RzQUVnQkNrRHVBRVFQQ0FFS1FPZ0FTRVVJQVFwQTZnQkRBSUxJQWRCQ0V3RVFDQUVRWkFDYWlBS0VFNGdCRUdBQW1vZ0JDZ0NrQVlRVUNBRVFmQUJhaUFFS1FPUUFpQUVLUU9ZQWlBRUtRT0FBaUFFS1FPSUFoQThJQVJCNEFGcVFRQWdCMnRCQW5SQmdKTVRhaWdDQUJCT0lBUkIwQUZxSUFRcEEvQUJJQVFwQS9nQklBUXBBK0FCSUFRcEErZ0JFRG9nQkNrRDBBRWhGQ0FFS1FQWUFRd0NDeUFPSUFkQmZXeHFRUnRxSWdGQkhreEJBQ0FFS0FLUUJpSUNJQUYyR3cwQUlBUkI0QUpxSUFvUVRpQUVRZEFDYWlBQ0VGQWdCRUhBQW1vZ0JDa0Q0QUlnQkNrRDZBSWdCQ2tEMEFJZ0JDa0QyQUlRUENBRVFiQUNhaUFIUVFKMFFiaVNFMm9vQWdBUVRpQUVRYUFDYWlBRUtRUEFBaUFFS1FQSUFpQUVLUU93QWlBRUtRTzRBaEE4SUFRcEE2QUNJUlFnQkNrRHFBSU1BUXNEUUNBRVFaQUdhaUFJSWdGQkFXc2lDRUVDZEdvb0FnQkZEUUFMUVFBaEN3SkFJQWRCQ1c4aUEwVUVRRUVBSVFJTUFRdEJBQ0VDSUFOQkNXb2dBeUFIUVFCSUd5RURBa0FnQVVVRVFFRUFJUUVNQVF0QmdKVHIzQU5CQUNBRGEwRUNkRUdBa3hOcUtBSUFJZ2h0SVFsQkFDRUdRUUFoQlFOQUlBUkJrQVpxSUFWQkFuUnFJZzBnQmlBTktBSUFJZzBnQ0c0aUVHb2lCallDQUNBQ1FRRnFRZjhQY1NBQ0lBWkZJQUlnQlVaeElnWWJJUUlnQjBFSmF5QUhJQVliSVFjZ0NTQU5JQWdnRUd4cmJDRUdJQVZCQVdvaUJTQUJSdzBBQ3lBR1JRMEFJQVJCa0FacUlBRkJBblJxSUFZMkFnQWdBVUVCYWlFQkN5QUhJQU5yUVFscUlRY0xBMEFnQkVHUUJtb2dBa0VDZEdvaERRSkFBMEFDUUNBSFFTUklEUUFnQjBFa1J3MENJQTBvQWdCQjBPbjVCRTBOQUVFa0lRY01BZ3NnQVVIL0Qyb2hDRUVBSVFNRFFDQUJJUVlnQTYwZ0JFR1FCbW9nQ0VIL0QzRWlDVUVDZEdvaUFUVUNBRUlkaG53aUUwS0JsT3ZjQTFRRWYwRUFCU0FUUW9DVTY5d0RnQ0lVUW9Ec2xLTjhmaUFUZkNFVElCU25DeUVESUFFZ0U2Y2lBVFlDQUNBR0lBWWdCaUFKSUFFYklBSWdDVVliSUFrZ0JrRUJhMEgvRDNFaUJVY2JJUUVnQ1VFQmF5RUlJQUlnQ1VjTkFBc2dDMEVkYXlFTElBWWhBU0FEUlEwQUN5QUNRUUZyUWY4UGNTSUNJQUZHQkVBZ0JFR1FCbW9pQmlBQlFmNFBha0gvRDNGQkFuUnFJZ0VnQVNnQ0FDQUZRUUowSUFacUtBSUFjallDQUNBRklRRUxJQWRCQ1dvaEJ5QUVRWkFHYWlBQ1FRSjBhaUFETmdJQURBRUxDd0pBQTBBZ0FVRUJha0gvRDNFaEJpQUVRWkFHYWlBQlFRRnJRZjhQY1VFQ2RHb2hDUU5BUVFsQkFTQUhRUzFLR3lFSUFrQURRQ0FDSVFOQkFDRUZBa0FEUUFKQUlBTWdCV3BCL3c5eElnSWdBVVlOQUNBRVFaQUdhaUFDUVFKMGFpZ0NBQ0lDSUFWQkFuUkIwSklUYWlnQ0FDSU5TUTBBSUFJZ0RVc05BaUFGUVFGcUlnVkJCRWNOQVFzTElBZEJKRWNOQUVFQUlRVkNBQ0VUUWdBaEZBTkFJQUVnQXlBRmFrSC9EM0VpQWtZRVFDQUJRUUZxUWY4UGNTSUJRUUowSUFScVFRQTJBb3dHQ3lBRVFZQUdhaUFFUVpBR2FpQUNRUUowYWlnQ0FCQlFJQVJCOEFWcUlCTWdGRUlBUW9DQWdJRGxtcmVPd0FBUVBDQUVRZUFGYWlBRUtRUHdCU0FFS1FQNEJTQUVLUU9BQmlBRUtRT0lCaEJISUFRcEErZ0ZJUlFnQkNrRDRBVWhFeUFGUVFGcUlnVkJCRWNOQUFzZ0JFSFFCV29nQ2hCT0lBUkJ3QVZxSUJNZ0ZDQUVLUVBRQlNBRUtRUFlCUkE4SUFRcEE4Z0ZJUlJDQUNFVElBUXBBOEFGSVJVZ0MwSHhBR29pQ0NBUGF5SUdRUUFnQmtFQVNoc2dEaUFHSUE1SUlna2JJZ0pCOEFCTURRSU1CUXNnQ0NBTGFpRUxJQUVoQWlBQklBTkdEUUFMUVlDVTY5d0RJQWgySVExQmZ5QUlkRUYvY3lFUVFRQWhCU0FESVFJRFFDQUVRWkFHYWlBRFFRSjBhaUlSSUFVZ0VTZ0NBQ0lSSUFoMmFpSUZOZ0lBSUFKQkFXcEIvdzl4SUFJZ0JVVWdBaUFEUm5FaUJSc2hBaUFIUVFscklBY2dCUnNoQnlBUUlCRnhJQTFzSVFVZ0EwRUJha0gvRDNFaUF5QUJSdzBBQ3lBRlJRMEJJQUlnQmtjRVFDQUVRWkFHYWlBQlFRSjBhaUFGTmdJQUlBWWhBUXdEQ3lBSklBa29BZ0JCQVhJMkFnQU1BUXNMQ3lBRVFaQUZha1FBQUFBQUFBRHdQMEhoQVNBQ2F4QXdFRThnQkVHd0JXb2dCQ2tEa0FVZ0JDa0RtQVVnRlNBVUVNd0JJQVFwQTdnRklSZ2dCQ2tEc0FVaEZ5QUVRWUFGYWtRQUFBQUFBQUR3UDBIeEFDQUNheEF3RUU4Z0JFR2dCV29nRlNBVUlBUXBBNEFGSUFRcEE0Z0ZFREVnQkVId0JHb2dGU0FVSUFRcEE2QUZJaE1nQkNrRHFBVWlGaEJJSUFSQjRBUnFJQmNnR0NBRUtRUHdCQ0FFS1FQNEJCQkhJQVFwQStnRUlSUWdCQ2tENEFRaEZRc0NRQ0FEUVFScVFmOFBjU0lGSUFGR0RRQUNRQ0FFUVpBR2FpQUZRUUowYWlnQ0FDSUZRZi9KdGU0QlRRUkFJQVZGSUFOQkJXcEIvdzl4SUFGR2NRMEJJQVJCOEFOcUlBcTNSQUFBQUFBQUFOQS9vaEJQSUFSQjRBTnFJQk1nRmlBRUtRUHdBeUFFS1FQNEF4QkhJQVFwQStnRElSWWdCQ2tENEFNaEV3d0JDeUFGUVlES3RlNEJSd1JBSUFSQjBBUnFJQXEzUkFBQUFBQUFBT2cvb2hCUElBUkJ3QVJxSUJNZ0ZpQUVLUVBRQkNBRUtRUFlCQkJISUFRcEE4Z0VJUllnQkNrRHdBUWhFd3dCQ3lBS3R5RWFJQUVnQTBFRmFrSC9EM0ZHQkVBZ0JFR1FCR29nR2tRQUFBQUFBQURnUDZJUVR5QUVRWUFFYWlBVElCWWdCQ2tEa0FRZ0JDa0RtQVFRUnlBRUtRT0lCQ0VXSUFRcEE0QUVJUk1NQVFzZ0JFR3dCR29nR2tRQUFBQUFBQURvUDZJUVR5QUVRYUFFYWlBVElCWWdCQ2tEc0FRZ0JDa0R1QVFRUnlBRUtRT29CQ0VXSUFRcEE2QUVJUk1MSUFKQjd3QktEUUFnQkVIUUEyb2dFeUFXUWdCQ2dJQ0FnSUNBd1A4L0VERWdCQ2tEMEFNZ0JDa0QyQU5DQUVJQUVEY05BQ0FFUWNBRGFpQVRJQlpDQUVLQWdJQ0FnSURBL3o4UVJ5QUVLUVBJQXlFV0lBUXBBOEFESVJNTElBUkJzQU5xSUJVZ0ZDQVRJQllRUnlBRVFhQURhaUFFS1FPd0F5QUVLUU80QXlBWElCZ1FTQ0FFS1FPb0F5RVVJQVFwQTZBRElSVUNRQ0FTUVFKcklBaEIvLy8vL3dkeFRnMEFJQVFnRkVMLy8vLy8vLy8vLy84QWd6Y0RtQU1nQkNBVk53T1FBeUFFUVlBRGFpQVZJQlJDQUVLQWdJQ0FnSUNBL3o4UVBDQUVLUU9RQXlBRUtRT1lBMEtBZ0lDQWdJQ0F1TUFBRURnaEFTQUVLUU9JQXlBVUlBRkJBRTRpQXhzaEZDQUVLUU9BQXlBVklBTWJJUlVnRXlBV1FnQkNBQkEzSVFVZ0VpQURJQXRxSWd0QjdnQnFUZ1JBSUFrZ0FpQUdSeUFCUVFCSWNuRWdCVUVBUjNGRkRRRUxRYUQvRTBIRUFEWUNBQXNnQkVId0Ftb2dGU0FVSUFzUXpRRWdCQ2tEOEFJaEZDQUVLUVA0QWdzM0F5Z2dEQ0FVTndNZ0lBUkJrTVlBYWlRQUlBd3BBeWdoRXlBTUtRTWdJUlFNQkFzZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkVFQmF6WUNCQXNNQVFzQ1FBSi9JQUVvQWdRaUFpQUJLQUpvUndSQUlBRWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBRVF5Z0VMUVNoR0JFQkJBU0VGREFFTFFvQ0FnSUNBZ09ELy93QWhFeUFCS1FOd1FnQlREUU1nQVNBQktBSUVRUUZyTmdJRURBTUxBMEFDZnlBQktBSUVJZ0lnQVNnQ2FFY0VRQ0FCSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFCRU1vQkN5SUNRY0VBYXlFR0FrQUNRQ0FDUVRCclFRcEpEUUFnQmtFYVNRMEFJQUpCM3dCR0RRQWdBa0hoQUd0QkdrOE5BUXNnQlVFQmFpRUZEQUVMQzBLQWdJQ0FnSURnLy84QUlSTWdBa0VwUmcwQ0lBRXBBM0FpRmtJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzQ1FDQURCRUFnQlEwQkRBUUxEQUVMQTBBZ0ZrSUFXUVJBSUFFZ0FTZ0NCRUVCYXpZQ0JBc2dCVUVCYXlJRkRRQUxEQUlMUWFEL0UwRWNOZ0lBSUFGQ0FCREpBUXRDQUNFVEN5QUFJQlEzQXdBZ0FDQVROd01JSUF4Qk1Hb2tBQXVHQkFJRWZ3RitBa0FDUUFKQUFrQUNRQUpBQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVNb0JDeUlDUVN0ckRnTUFBUUFCQ3lBQ1FTMUdJUVVDZnlBQUtBSUVJZ01nQUNnQ2FFY0VRQ0FBSUFOQkFXbzJBZ1FnQXkwQUFBd0JDeUFBRU1vQkN5SURRVHBySVFRZ0FVVU5BU0FFUVhWTERRRWdBQ2tEY0VJQVdRMENEQVVMSUFKQk9tc2hCQ0FDSVFNTElBUkJka2tOQVNBRFFUQnJJZ1JCQ2trRVFFRUFJUUlEUUNBRElBSkJDbXhxSVFFQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVNb0JDeUlEUVRCcklnUkJDVTBnQVVFd2F5SUNRY3lacytZQVNIRU5BQXNnQXF3aEJnc0NRQ0FFUVFwUERRQURRQ0FEclNBR1FncCtmRUl3ZlNFR0FuOGdBQ2dDQkNJQklBQW9BbWhIQkVBZ0FDQUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0FCREtBUXNpQTBFd2F5SUVRUWxMRFFFZ0JrS3VqNFhYeDhMcm93RlREUUFMQ3lBRVFRcEpCRUFEUUFKL0lBQW9BZ1FpQVNBQUtBSm9Sd1JBSUFBZ0FVRUJhallDQkNBQkxRQUFEQUVMSUFBUXlnRUxRVEJyUVFwSkRRQUxDeUFBS1FOd1FnQlpCRUFnQUNBQUtBSUVRUUZyTmdJRUMwSUFJQVo5SUFZZ0JSc1BDeUFBSUFBb0FnUkJBV3MyQWdRTUFRc2dBQ2tEY0VJQVV3MEJDeUFBSUFBb0FnUkJBV3MyQWdRTFFvQ0FnSUNBZ0lDQWdIOExRd0FDUUNBQVJRMEFBa0FDUUFKQUFrQWdBVUVDYWc0R0FBRUNBZ1FEQkFzZ0FDQUNQQUFBRHdzZ0FDQUNQUUVBRHdzZ0FDQUNQZ0lBRHdzZ0FDQUNOd01BQ3d1MUFRSUNmd0YrSXdCQm9BRnJJZ1FrQUNBRUlBQWdCRUdlQVdvZ0FSc2lCVFlDbEFFZ0JDQUJRUUZySWdCQkFDQUFJQUZOR3pZQ21BRURRQ0FFSUFhbmFrRUFPZ0FBSUFaQ0FYd2lCa0tRQVZRTkFBdEJmeUVBSUFSQmZ6WUNUQ0FFUWRJQU5nSWtJQVJCZnpZQ1VDQUVJQVJCbndGcU5nSXNJQVFnQkVHVUFXbzJBbFFDUUNBQlFRQklCRUJCb1A4VFFUMDJBZ0FNQVFzZ0JVRUFPZ0FBSUFRZ0FpQURFTU1CSVFBTElBUkJvQUZxSkFBZ0FBdW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQ3NhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQ3NhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0MxUUJBbjhnQVNBQUtBSlVJZ0VnQVVFQUlBSkJnQUpxSWdNUWh3RWlCQ0FCYXlBRElBUWJJZ01nQWlBQ0lBTkxHeUlDRUNzYUlBQWdBU0FEYWlJRE5nSlVJQUFnQXpZQ0NDQUFJQUVnQW1vMkFnUWdBZ3VKQWdBQ1FDQUFCSDhnQVVIL0FFME5BUUpBUWN5WkZDZ0NBQ2dDQUVVRVFDQUJRWUIvY1VHQXZ3TkdEUU1NQVFzZ0FVSC9EMDBFUUNBQUlBRkJQM0ZCZ0FGeU9nQUJJQUFnQVVFR2RrSEFBWEk2QUFCQkFnOExJQUZCZ0VCeFFZREFBMGNnQVVHQXNBTlBjVVVFUUNBQUlBRkJQM0ZCZ0FGeU9nQUNJQUFnQVVFTWRrSGdBWEk2QUFBZ0FDQUJRUVoyUVQ5eFFZQUJjam9BQVVFRER3c2dBVUdBZ0FSclFmLy9QMDBFUUNBQUlBRkJQM0ZCZ0FGeU9nQURJQUFnQVVFU2RrSHdBWEk2QUFBZ0FDQUJRUVoyUVQ5eFFZQUJjam9BQWlBQUlBRkJESFpCUDNGQmdBRnlPZ0FCUVFRUEN3dEJvUDhUUVJrMkFnQkJmd1ZCQVFzUEN5QUFJQUU2QUFCQkFRc0ZBQkFkQUFzd0FRRi9Jd0JCRUdzaUFpUUFJQUlnQVVMQWhEMStOd01JSUFJcEF3Z2hBU0FDUVJCcUpBQWdBQ0FCTndNQUlBQUxCd0FnQUJEWUFRdU1BUUVDZnlBQVFmeVpFellDQUNBQUtBSW9JUUVEUUNBQkJFQkJBQ0FBSUFGQkFXc2lBVUVDZENJQ0lBQW9BaVJxS0FJQUlBQW9BaUFnQW1vb0FnQVJDQUFNQVFzTElBQW9BaHdpQVNBQktBSUVRUUZySWdJMkFnUWdBa0YvUmdSQUlBRWdBU2dDQUNnQ0NCRUJBQXNnQUNnQ0lCQTBJQUFvQWlRUU5DQUFLQUl3RURRZ0FDZ0NQQkEwSUFBTENRQWdBQkRZQVJBMEN6Z0JBbjhnQUVHd2xCTTJBZ0FnQUNnQ0JDSUJJQUVvQWdSQkFXc2lBallDQkNBQ1FYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUFDd2tBSUFBUTJnRVFOQXNEQUFFTEJBQWdBQXNRQUNBQVFuODNBd2dnQUVJQU53TUFDeEFBSUFCQ2Z6Y0RDQ0FBUWdBM0F3QUwyQUVCQkg4akFFRVFheUlFSkFBRFFBSkFJQUlnQlV3TkFBSi9JQUFvQWd3aUF5QUFLQUlRSWdaSkJFQWdCRUgvLy8vL0J6WUNEQ0FFSUFZZ0EyczJBZ2dnQkNBQ0lBVnJOZ0lFSUFFZ0F5QUVRUVJxSWdFZ0JFRUlhaUlESUFFb0FnQWdBeWdDQUVnYklnRWdCRUVNYWlJRElBRW9BZ0FnQXlnQ0FFZ2JLQUlBSWdNUTRRRWhBU0FBSUFBb0Fnd2dBMm8yQWd3Z0FTQURhZ3dCQ3lBQUlBQW9BZ0FvQWlnUkFBQWlBMEYvUmcwQklBRWdBOEE2QUFCQkFTRURJQUZCQVdvTElRRWdBeUFGYWlFRkRBRUxDeUFFUVJCcUpBQWdCUXNSQUNBQklBRWdBbW9nQUJEbUFSb2dBQXNFQUVGL0N5d0FJQUFnQUNnQ0FDZ0NKQkVBQUVGL1J3Ui9JQUFnQUNnQ0RDSUFRUUZxTmdJTUlBQXRBQUFGUVg4TEN3UUFRWDhMc1FFQkJIOGpBRUVRYXlJRkpBQURRQUpBSUFJZ0JFd05BQ0FBS0FJWUlnTWdBQ2dDSENJR1R3Ui9JQUFnQVMwQUFDQUFLQUlBS0FJMEVRTUFRWDlHRFFFZ0JFRUJhaUVFSUFGQkFXb0ZJQVVnQmlBRGF6WUNEQ0FGSUFJZ0JHczJBZ2dnQXlBQklBVkJDR29pQXlBRlFReHFJZ1lnQXlnQ0FDQUdLQUlBU0Jzb0FnQWlBeERoQVJvZ0FDQURJQUFvQWhocU5nSVlJQU1nQkdvaEJDQUJJQU5xQ3lFQkRBRUxDeUFGUVJCcUpBQWdCQXNyQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQUNBQklBSVE1d0VnQXlnQ0RDRUFJQU5CRUdva0FDQUFDM0lCQW44akFFRWdheUlFSkFBakFFRVFheUlGSkFBZ0JTQUNOZ0lNSUFRZ0FUWUNHQ0FFSUFVb0FndzJBaHdnQlVFUWFpUUFJQVJCRUdvZ0JDZ0NHQ0FFS0FJY0lBTVE2QUVnQkNnQ0VDRUJJQVFnQkNnQ0ZEWUNEQ0FBSUFFMkFnQWdBQ0FFS0FJTU5nSUVJQVJCSUdva0FBczZBUUYvSXdCQkVHc2lCQ1FBSUFRZ0F5QUJJQUlnQVdzaUFSQkxJQUZxTmdJTUlBQWdBallDQUNBQUlBUW9BZ3cyQWdRZ0JFRVFhaVFBQ3dRQUlBRUxLZ0FnQUVHd2xCTTJBZ0FnQUVFRWFoRHJBU0FBUWdBM0FoZ2dBRUlBTndJUUlBQkNBRGNDQ0NBQUM0d1NBUUovSUFBQ2YwRzBwQlF0QUFBRVFFR3dwQlFvQWdBTUFRdEJyS1FVQW45QnFLUVVMUUFBQkVCQnBLUVVLQUlBREFFTFFZeXhGRUVBTmdJQVFZaXhGRUhBOGhNMkFnQkJpTEVVUWRER0V6WUNBRUdJc1JSQmlMc1ROZ0lBSXdCQkVHc2lBU1FBUVpDeEZFSUFOd01BUVppeEZFRUFOZ0lBUVppeUZFRUFPZ0FBSUFGQmtMRVVOZ0lNSXdCQkVHc2lBQ1FBRU5rRFFSMU5CRUFRVndBTElBQkJDR3BCb0xFVVFSNFEyZ05CbExFVUlBQW9BZ2dpQWpZQ0FFR1FzUlFnQWpZQ0FFR1lzUlFnQWlBQUtBSU1RUUowYWpZQ0FDQUFRUkJxSkFCQmtMRVVRUjRRMVFNZ0FVRVFhaVFBUWFDeUZFSHB4UUFRVTBHUXNSUVExZ05CeEs0VVFRQTJBZ0JCd0s0VVFjRHlFellDQUVIQXJoUkIwTVlUTmdJQVFjQ3VGRUdrenhNMkFnQkJpTEVVUWNDdUZFSDRvaFFRd0FJUTF3TkJ6SzRVUVFBMkFnQkJ5SzRVUWNEeUV6WUNBRUhJcmhSQjBNWVROZ0lBUWNpdUZFSEV6eE0yQWdCQmlMRVVRY2l1RkVHQW94UVF3QUlRMXdOQjFLNFVRUUEyQWdCQjBLNFVRY0R5RXpZQ0FFSFFyaFJCME1ZVE5nSUFRZHl1RkVFQU9nQUFRZGl1RkVFQU5nSUFRZEN1RkVHY3V4TTJBZ0JCMks0VVFkQzdFellDQUVHSXNSUkIwSzRVUWNTa0ZCREFBaERYQTBIa3JoUkJBRFlDQUVIZ3JoUkJ3UElUTmdJQVFlQ3VGRUhReGhNMkFnQkI0SzRVUVlqSEV6WUNBRUdJc1JSQjRLNFVRYnlrRkJEQUFoRFhBMEhzcmhSQkFEWUNBRUhvcmhSQndQSVROZ0lBUWVpdUZFSFF4aE0yQWdCQjZLNFVRWnpJRXpZQ0FFR0lzUlJCNks0VVFjeWtGQkRBQWhEWEEwSDByaFJCQURZQ0FFSHdyaFJCd1BJVE5nSUFRZkN1RkVIUXhoTTJBZ0JCOEs0VVFkakRFellDQUVINHJoUVF5UUkyQWdCQmlMRVVRZkN1RkVIVXBCUVF3QUlRMXdOQmhLOFVRUUEyQWdCQmdLOFVRY0R5RXpZQ0FFR0FyeFJCME1ZVE5nSUFRWUN2RkVHd3lSTTJBZ0JCaUxFVVFZQ3ZGRUhjcEJRUXdBSVExd05Caks4VVFRQTJBZ0JCaUs4VVFjRHlFellDQUVHSXJ4UkIwTVlUTmdJQVFZaXZGRUdZeXhNMkFnQkJpTEVVUVlpdkZFSHNwQlFRd0FJUTF3TkJsSzhVUVFBMkFnQkJrSzhVUWNEeUV6WUNBRUdRcnhSQjBNWVROZ0lBUVpDdkZFR2t5aE0yQWdCQmlMRVVRWkN2RkVIa3BCUVF3QUlRMXdOQm5LOFVRUUEyQWdCQm1LOFVRY0R5RXpZQ0FFR1lyeFJCME1ZVE5nSUFRWml2RkVHTXpCTTJBZ0JCaUxFVVFaaXZGRUgwcEJRUXdBSVExd05CcEs4VVFRQTJBZ0JCb0s4VVFjRHlFellDQUVHZ3J4UkIwTVlUTmdJQVFhaXZGRUd1MkFBN0FRQkJvSzhVUVlqRUV6WUNBRUdzcnhSQ0FEY0NBRUcwcnhSQkFEWUNBRUdJc1JSQm9LOFVRZnlrRkJEQUFoRFhBMEc4cnhSQkFEWUNBRUc0cnhSQndQSVROZ0lBUWJpdkZFSFF4aE0yQWdCQndLOFVRcTZBZ0lEQUJUY0NBRUc0cnhSQnNNUVROZ0lBUWNpdkZFSUFOd0lBUWRDdkZFRUFOZ0lBUVlpeEZFRzRyeFJCaEtVVUVNQUNFTmNEUWR5dkZFRUFOZ0lBUWRpdkZFSEE4aE0yQWdCQjJLOFVRZERHRXpZQ0FFSFlyeFJCNU04VE5nSUFRWWl4RkVIWXJ4UkJpS01VRU1BQ0VOY0RRZVN2RkVFQU5nSUFRZUN2RkVIQThoTTJBZ0JCNEs4VVFkREdFellDQUVIZ3J4UkIyTkVUTmdJQVFZaXhGRUhncnhSQmtLTVVFTUFDRU5jRFFleXZGRUVBTmdJQVFlaXZGRUhBOGhNMkFnQkI2SzhVUWRER0V6WUNBRUhvcnhSQnJOTVROZ0lBUVlpeEZFSG9yeFJCbUtNVUVNQUNFTmNEUWZTdkZFRUFOZ0lBUWZDdkZFSEE4aE0yQWdCQjhLOFVRZERHRXpZQ0FFSHdyeFJCbE5VVE5nSUFRWWl4RkVId3J4UkJvS01VRU1BQ0VOY0RRZnl2RkVFQU5nSUFRZml2RkVIQThoTTJBZ0JCK0s4VVFkREdFellDQUVINHJ4UkI3TndUTmdJQVFZaXhGRUg0cnhSQnlLTVVFTUFDRU5jRFFZU3dGRUVBTmdJQVFZQ3dGRUhBOGhNMkFnQkJnTEFVUWRER0V6WUNBRUdBc0JSQmdONFROZ0lBUVlpeEZFR0FzQlJCMEtNVUVNQUNFTmNEUVl5d0ZFRUFOZ0lBUVlpd0ZFSEE4aE0yQWdCQmlMQVVRZERHRXpZQ0FFR0lzQlJCOU40VE5nSUFRWWl4RkVHSXNCUkIyS01VRU1BQ0VOY0RRWlN3RkVFQU5nSUFRWkN3RkVIQThoTTJBZ0JCa0xBVVFkREdFellDQUVHUXNCUkI2TjhUTmdJQVFZaXhGRUdRc0JSQjRLTVVFTUFDRU5jRFFaeXdGRUVBTmdJQVFaaXdGRUhBOGhNMkFnQkJtTEFVUWRER0V6WUNBRUdZc0JSQjNPQVROZ0lBUVlpeEZFR1lzQlJCNktNVUVNQUNFTmNEUWFTd0ZFRUFOZ0lBUWFDd0ZFSEE4aE0yQWdCQm9MQVVRZERHRXpZQ0FFR2dzQlJCZ09JVE5nSUFRWWl4RkVHZ3NCUkI4S01VRU1BQ0VOY0RRYXl3RkVFQU5nSUFRYWl3RkVIQThoTTJBZ0JCcUxBVVFkREdFellDQUVHb3NCUkJwT01UTmdJQVFZaXhGRUdvc0JSQitLTVVFTUFDRU5jRFFiU3dGRUVBTmdJQVFiQ3dGRUhBOGhNMkFnQkJzTEFVUWRER0V6WUNBRUd3c0JSQnlPUVROZ0lBUVlpeEZFR3dzQlJCZ0tRVUVNQUNFTmNEUWJ5d0ZFRUFOZ0lBUWJpd0ZFSEE4aE0yQWdCQnVMQVVRZERHRXpZQ0FFSEFzQlJCc080VE5nSUFRY0N3RkVHTTF4TTJBZ0JCdUxBVVFkeldFellDQUVHSXNSUkJ1TEFVUWFpakZCREFBaERYQTBITXNCUkJBRFlDQUVISXNCUkJ3UElUTmdJQVFjaXdGRUhReGhNMkFnQkIwTEFVUWRUdUV6WUNBRUhRc0JSQmxOa1ROZ0lBUWNpd0ZFSGsyQk0yQWdCQmlMRVVRY2l3RkVHd294UVF3QUlRMXdOQjNMQVVRUUEyQWdCQjJMQVVRY0R5RXpZQ0FFSFlzQlJCME1ZVE5nSUFRZUN3RkJEZEEwSFlzQlJCME5vVE5nSUFRWWl4RkVIWXNCUkJ1S01VRU1BQ0VOY0RRZXl3RkVFQU5nSUFRZWl3RkVIQThoTTJBZ0JCNkxBVVFkREdFellDQUVId3NCUVEzUU5CNkxBVVFlemJFellDQUVHSXNSUkI2TEFVUWNDakZCREFBaERYQTBIOHNCUkJBRFlDQUVINHNCUkJ3UElUTmdJQVFmaXdGRUhReGhNMkFnQkIrTEFVUWV6bEV6WUNBRUdJc1JSQitMQVVRWWlrRkJEQUFoRFhBMEdFc1JSQkFEWUNBRUdBc1JSQndQSVROZ0lBUVlDeEZFSFF4aE0yQWdCQmdMRVVRZVRtRXpZQ0FFR0lzUlJCZ0xFVVFaQ2tGQkRBQWhEWEEwR2dwQlJCaUxFVU5nSUFRYWlrRkVFQk9nQUFRYVNrRkVHZ3BCUTJBZ0JCb0tRVUN5Z0NBQ0lBTmdJQUlBQWdBQ2dDQkVFQmFqWUNCRUcwcEJSQkFUb0FBRUd3cEJSQnJLUVVOZ0lBUWF5a0ZBc29BZ0FpQURZQ0FDQUFJQUFvQWdSQkFXbzJBZ1FMRFFBZ0FFRUlhaERZQVJvZ0FBc0pBQ0FBRU93QkVEUUxFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRHNBUXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFTzBCQzZ3QkFRTi9Jd0JCRUdzaUF5UUFJQUFnQUNnQ0FFRU1heWdDQUdvb0FoZ0VRQ0FEUVFocUlnSWdBRFlDQkNBQ1FRQTZBQUFnQUNBQUtBSUFRUXhyS0FJQWFpSUJLQUlRUlFSQUlBRW9Ba2dpQVFSQUlBRVE4QUVMSUFKQkFUb0FBQXNDUUNBQ0xRQUFSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHb29BaGdpQVNBQktBSUFLQUlZRVFBQVFYOUhEUUFnQUNBQUtBSUFRUXhyS0FJQWFoRHlBUXNnQWhEeEFRc2dBMEVRYWlRQUMxNEJBbjhDUUNBQUtBSUVJZ0VnQVNnQ0FFRU1heWdDQUdvaUFTZ0NHQ0lDUlEwQUlBRW9BaEFOQUNBQkxRQUZRU0J4UlEwQUlBSWdBaWdDQUNnQ0dCRUFBRUYvUncwQUlBQW9BZ1FpQUNBQUtBSUFRUXhyS0FJQWFoRHlBUXNMS1FFQmZ5QUFJQUFvQWhoRklBQW9BaEJCQVhKeUlnRTJBaEFnQUNnQ0ZDQUJjUVJBRU5VQkFBc0xDd0FnQUVIRXBCUVE5QUVMUXdBZ0FSREFBaUVCSUFFZ0FDZ0NEQ0FBS0FJSUlnQnJRUUoxU1FSL0lBQWdBVUVDZEdvb0FnQkJBRWNGUVFBTFJRUkFFTlVCQUFzZ0FDQUJRUUowYWlnQ0FBc1FBQ0FBRVBZQklBRVE5Z0Z6UVFGekMwc0JBbjhnQUNnQ0FDSUJCRUFDZnlBQktBSU1JZ0lnQVNnQ0VFWUVRQ0FCSUFFb0FnQW9BaVFSQUFBTUFRc2dBaTBBQUF0QmYwY0VRQ0FBS0FJQVJROExJQUJCQURZQ0FBdEJBUXNOQUNBQUtBSUFFUGdCR2lBQUN6RUJBWDhnQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSW9FUUFBRHdzZ0FDQUJRUUZxTmdJTUlBRXRBQUFMRFFBZ0FFRUVhaERZQVJvZ0FBc0pBQ0FBRVBrQkVEUUxFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRDVBUXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFUG9CQzF3QkFuOENRQ0FBS0FJQUlnSkZEUUFDZnlBQ0tBSVlJZ01nQWlnQ0hFWUVRQ0FDSUFGQi93RnhJQUlvQWdBb0FqUVJBd0FNQVFzZ0FpQURRUUZxTmdJWUlBTWdBVG9BQUNBQlFmOEJjUXRCZjBjTkFDQUFRUUEyQWdBTEN6Z0JBbjhnQUVId2xCTTJBZ0FnQUNnQ0JDSUJJQUVvQWdSQkFXc2lBallDQkNBQ1FYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUFDd2tBSUFBUS9nRVFOQXZmQVFFRWZ5TUFRUkJySWdRa0FBTkFBa0FnQWlBRlRBMEFBbjhnQUNnQ0RDSURJQUFvQWhBaUJra0VRQ0FFUWYvLy8vOEhOZ0lNSUFRZ0JpQURhMEVDZFRZQ0NDQUVJQUlnQldzMkFnUWdBU0FESUFSQkJHb2lBU0FFUVFocUlnTWdBU2dDQUNBREtBSUFTQnNpQVNBRVFReHFJZ01nQVNnQ0FDQURLQUlBU0Jzb0FnQWlBeENCQWlFQklBQWdBMEVDZENJR0lBQW9BZ3hxTmdJTUlBRWdCbW9NQVFzZ0FDQUFLQUlBS0FJb0VRQUFJZ05CZjBZTkFTQUJJQU0yQWdCQkFTRURJQUZCQkdvTElRRWdBeUFGYWlFRkRBRUxDeUFFUVJCcUpBQWdCUXNxQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQVNBQklBSkJBblJxSUFBUTV3RWdBMEVRYWlRQUlBQUxNZ0VCZjBGL0lRRWdBQ0FBS0FJQUtBSWtFUUFBUVg5SEJIOGdBQ0FBS0FJTUlnQkJCR28yQWd3Z0FDZ0NBQVZCZndzTHV3RUJCSDhqQUVFUWF5SUZKQUFEUUFKQUlBSWdCRXdOQUNBQUtBSVlJZ01nQUNnQ0hDSUdUd1JBSUFBZ0FTZ0NBQ0FBS0FJQUtBSTBFUU1BUVg5R0RRRWdCRUVCYWlFRUlBRkJCR29oQVFVZ0JTQUdJQU5yUVFKMU5nSU1JQVVnQWlBRWF6WUNDQ0FESUFFZ0JVRUlhaUlESUFWQkRHb2lCaUFES0FJQUlBWW9BZ0JJR3lnQ0FDSURFSUVDR2lBQUlBTkJBblFpQmlBQUtBSVlhallDR0NBRElBUnFJUVFnQVNBR2FpRUJDd3dCQ3dzZ0JVRVFhaVFBSUFRTEtnQWdBRUh3bEJNMkFnQWdBRUVFYWhEckFTQUFRZ0EzQWhnZ0FFSUFOd0lRSUFCQ0FEY0NDQ0FBQzZ3QkFRTi9Jd0JCRUdzaUF5UUFJQUFnQUNnQ0FFRU1heWdDQUdvb0FoZ0VRQ0FEUVFocUlnSWdBRFlDQkNBQ1FRQTZBQUFnQUNBQUtBSUFRUXhyS0FJQWFpSUJLQUlRUlFSQUlBRW9Ba2dpQVFSQUlBRVFoUUlMSUFKQkFUb0FBQXNDUUNBQ0xRQUFSUTBBSUFBZ0FDZ0NBRUVNYXlnQ0FHb29BaGdpQVNBQktBSUFLQUlZRVFBQVFYOUhEUUFnQUNBQUtBSUFRUXhyS0FJQWFoRHlBUXNnQWhEeEFRc2dBMEVRYWlRQUN3c0FJQUJCdktRVUVQUUJDeEFBSUFBUWlBSWdBUkNJQW5OQkFYTUxTd0VDZnlBQUtBSUFJZ0VFUUFKL0lBRW9BZ3dpQWlBQktBSVFSZ1JBSUFFZ0FTZ0NBQ2dDSkJFQUFBd0JDeUFDS0FJQUMwRi9Sd1JBSUFBb0FnQkZEd3NnQUVFQU5nSUFDMEVCQ3cwQUlBQW9BZ0FRaWdJYUlBQUxNUUVCZnlBQUtBSU1JZ0VnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaWdSQUFBUEN5QUFJQUZCQkdvMkFnd2dBU2dDQUF0VUFRSi9Ba0FnQUNnQ0FDSUNSUTBBQW44Z0FpZ0NHQ0lESUFJb0FoeEdCRUFnQWlBQklBSW9BZ0FvQWpRUkF3QU1BUXNnQWlBRFFRUnFOZ0lZSUFNZ0FUWUNBQ0FCQzBGL1J3MEFJQUJCQURZQ0FBc0xPZ0FnQUMwQUMwR0FBWEZCQjNZRVFDQUFLQUlBRURRTElBQWdBU2tDQURjQ0FDQUFJQUVvQWdnMkFnZ2dBVUVBT2dBTElBRkJBRG9BQUF2SUFRRUVmeUFBSVFNakFFRVFheUlHSkFBQ1FDQUNJQUZySWdSQjhQLy8vd2RKQkVBQ1FDQUVRUXRKQkVBZ0F5QUVPZ0FMREFFTElBWkJDR29nQkVFTFR3Ui9JQVJCRUdwQmNIRWlCU0FGUVFGcklnVWdCVUVMUmhzRlFRb0xRUUZxRUk0Q0lBTWdCaWdDQ0NJRk5nSUFJQU1nQmlnQ0RFR0FnSUNBZUhJMkFnZ2dBeUFFTmdJRUlBVWhBd3NEUUNBQklBSkhCRUFnQXlBQkxRQUFPZ0FBSUFOQkFXb2hBeUFCUVFGcUlRRU1BUXNMSUFOQkFEb0FBQ0FHUVJCcUpBQU1BUXNRVlFBTElBQUxHQUVCZnlBQkVGUWhBaUFBSUFFMkFnUWdBQ0FDTmdJQUMvMEJBUUovQWtBZ0FDZ0NCQ0FBTFFBTElnSkIvd0J4SUFKQmdBRnhRUWQyR3lJQ0lBRkpCRUFnQVNBQ2F5SUNCRUFnQWlBQUxRQUxRWUFCY1VFSGRnUi9JQUFvQWdoQi8vLy8vd2R4UVFGckJVRUtDeUlESUFBb0FnUWdBQzBBQ3lJQlFmOEFjU0FCUVlBQmNVRUhkaHNpQVd0TEJFQWdBQ0FESUFJZ0Eyc2dBV29nQVNBQkVMMERDeUFBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSWdNZ0FXb2dBa0VBRUpFQ0dpQUJJQUpxSVFFQ1FDQUFMUUFMUVlBQmNVRUhkZ1JBSUFBZ0FUWUNCQXdCQ3lBQUlBRTZBQXNMSUFFZ0EycEJBRG9BQUFzTUFRc2dBQ0FBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSUFFUWtBSUxDeTRBQWtBZ0FDMEFDMEdBQVhGQkIzWUVRQ0FBSUFJMkFnUU1BUXNnQUNBQ09nQUxDeUFCSUFKcVFRQTZBQUFMUXdFQmZ5TUFRUkJySWdNa0FDQURJQUk2QUE4Z0FDRUNBMEFnQVFSQUlBSWdBeTBBRHpvQUFDQUJRUUZySVFFZ0FrRUJhaUVDREFFTEN5QURRUkJxSkFBZ0FBc0xBQ0FBUWN5a0ZCRDBBUXQ4QVFOL1FYOGhBd0pBSUFCQmYwWU5BQ0FCS0FKTVFRQk9JUVFDUUFKQUlBRW9BZ1FpQWtVRVFDQUJFTWNCR2lBQktBSUVJZ0pGRFFFTElBSWdBU2dDTEVFSWEwc05BUXNnQkVVTkFVRi9Ed3NnQVNBQ1FRRnJJZ0kyQWdRZ0FpQUFPZ0FBSUFFZ0FTZ0NBRUZ2Y1RZQ0FDQUFRZjhCY1NFREN5QURDeDRBUWFTYkZCRHdBVUgwblJRUThBRkIrSnNVRUlVQ1FjaWVGQkNGQWd1VkFRRURmeU1BUVJCcklnTWtBQ0FBRU9vQklnQWdBVFlDSUNBQVFaU2FFellDQUNBRElBQW9BZ1FpQVRZQ0RDQUJJQUVvQWdSQkFXbzJBZ1FnQXlnQ0RCQ1NBaUVCSUFNb0Fnd2lCQ0FFS0FJRVFRRnJJZ1UyQWdRZ0JVRi9SZ1JBSUFRZ0JDZ0NBQ2dDQ0JFQkFBc2dBQ0FDTmdJb0lBQWdBVFlDSkNBQUlBRWdBU2dDQUNnQ0hCRUFBRG9BTENBRFFSQnFKQUFMTkFFQmZ5QUFRUVJxSWdKQi9Ka1ROZ0lBSUFKQjRKa1ROZ0lBSUFCQmdKc1ROZ0lBSUFKQmxKc1ROZ0lBSUFJZ0FSQ1pBZ3VWQVFFRGZ5TUFRUkJySWdNa0FDQUFFSVFDSWdBZ0FUWUNJQ0FBUVlTZEV6WUNBQ0FESUFBb0FnUWlBVFlDRENBQklBRW9BZ1JCQVdvMkFnUWdBeWdDREJDYUFpRUJJQU1vQWd3aUJDQUVLQUlFUVFGcklnVTJBZ1FnQlVGL1JnUkFJQVFnQkNnQ0FDZ0NDQkVCQUFzZ0FDQUNOZ0lvSUFBZ0FUWUNKQ0FBSUFFZ0FTZ0NBQ2dDSEJFQUFEb0FMQ0FEUVJCcUpBQUxOQUVCZnlBQVFRUnFJZ0pCL0prVE5nSUFJQUpCNkp3VE5nSUFJQUJCOEowVE5nSUFJQUpCaEo0VE5nSUFJQUlnQVJDWkFndEtBQ0FBUVFBMkFoUWdBQ0FCTmdJWUlBQkJBRFlDRENBQVFvS2dnSURnQURjQ0JDQUFJQUZGTmdJUUlBQkJJR3BCQUVFb0VDa2FJQUJCSEdvUTZ3RWdBRUtBZ0lDQWNEY0NTQXNMQUNBQVFkU2tGQkQwQVFzeEFDQUFJQUFvQWdBb0FoZ1JBQUFhSUFBZ0FTZ0NBQkNhQWlJQk5nSWtJQUFnQVNBQktBSUFLQUljRVFBQU9nQXNDNFFCQVFWL0l3QkJFR3NpQVNRQUlBRkJFR29oQkFKQUEwQWdBQ2dDSkNJQ0lBQW9BaWdnQVVFSWFpSURJQVFnQVVFRWFpQUNLQUlBS0FJVUVRY0FJUVZCZnlFQ0lBTkJBU0FCS0FJRUlBTnJJZ01nQUNnQ0lCQXRJQU5IRFFFQ1FDQUZRUUZyRGdJQkFnQUxDMEYvUVFBZ0FDZ0NJQkN1QVJzaEFnc2dBVUVRYWlRQUlBSUxaUUVCZndKQUlBQXRBQ3hGQkVBZ0FrRUFJQUpCQUVvYklRSURRQ0FDSUFOR0RRSWdBQ0FCS0FJQUlBQW9BZ0FvQWpRUkF3QkJmMFlFUUNBRER3VWdBVUVFYWlFQklBTkJBV29oQXd3QkN3QUxBQXNnQVVFRUlBSWdBQ2dDSUJBdElRSUxJQUlMaHdJQkJYOGpBRUVnYXlJQ0pBQUNRQUpBQWtBZ0FVRi9SZzBBSUFJZ0FUWUNGQ0FBTFFBc0JFQkJmeUVESUFKQkZHcEJCRUVCSUFBb0FpQVFMVUVCUmcwQkRBTUxJQUlnQWtFWWFpSUZOZ0lRSUFKQklHb2hCaUFDUVJScUlRTURRQ0FBS0FJa0lnUWdBQ2dDS0NBRElBVWdBa0VNYWlBQ1FSaHFJQVlnQWtFUWFpQUVLQUlBS0FJTUVRc0FJUVFnQWlnQ0RDQURSZzBDSUFSQkEwWUVRQ0FEUVFGQkFTQUFLQUlnRUMxQkFVWU5BZ3dEQ3lBRVFRRkxEUUlnQWtFWWFpSURRUUVnQWlnQ0VDQURheUlESUFBb0FpQVFMU0FEUncwQ0lBSW9BZ3doQXlBRVFRRkdEUUFMQ3lBQlFRQWdBVUYvUnhzaEF3d0JDMEYvSVFNTElBSkJJR29rQUNBREMwa0FJQUFnQVNnQ0FCQ2FBaUlCTmdJa0lBQWdBU0FCS0FJQUtBSVlFUUFBTmdJc0lBQWdBQ2dDSkNJQklBRW9BZ0FvQWh3UkFBQTZBRFVnQUNnQ0xFRUpUZ1JBRU5VQkFBc0xDUUFnQUVFQUVLRUNDNThEQWdaL0FYNGpBRUVnYXlJQ0pBQUNRQ0FBTFFBMEJFQWdBQ2dDTUNFRElBRkZEUUVnQUVFQU9nQTBJQUJCZnpZQ01Bd0JDeUFDUVFFMkFoZ2dBRUVzYWlJRUlBSkJHR29pQXlBREtBSUFJQVFvQWdCSUd5Z0NBQ0lFUVFBZ0JFRUFTaHNoQmdOQUlBVWdCa2NFUUVGL0lRTWdBQ2dDSUJBK0lnZEJmMFlOQWlBQ1FSaHFJQVZxSUFjNkFBQWdCVUVCYWlFRkRBRUxDd0pBQWtBZ0FDMEFOUVJBSUFJZ0Fpd0FHRFlDRkF3QkN5QUNRUmhxSVFNRFFBSkFJQUFvQWlnaUJTa0NBQ0VJQWtBZ0FDZ0NKQ0lHSUFVZ0FrRVlhaUlGSUFRZ0JXb2lCU0FDUVJCcUlBSkJGR29nQXlBQ1FReHFJQVlvQWdBb0FoQVJDd0JCQVdzT0F3QUVBUU1MSUFBb0FpZ2dDRGNDQUNBRVFRaEdEUU1nQUNnQ0lCQStJZ1pCZjBZTkF5QUZJQVk2QUFBZ0JFRUJhaUVFREFFTEN5QUNJQUlzQUJnMkFoUUxBa0FnQVVVRVFBTkFJQVJCQUV3TkFrRi9JUU1nQkVFQmF5SUVJQUpCR0dwcUxBQUFJQUFvQWlBUWt3SkJmMGNOQUF3RUN3QUxJQUFnQWlnQ0ZDSUROZ0l3REFJTElBSW9BaFFoQXd3QkMwRi9JUU1MSUFKQklHb2tBQ0FEQ3drQUlBQkJBUkNoQWd2eEFRRURmeU1BUVNCcklnSWtBQ0FBTFFBMElRTUNRQ0FCUVg5R0JFQWdBdzBCSUFBZ0FDZ0NNQ0lCUVg5SE9nQTBEQUVMQWtBZ0EwVU5BQ0FDSUFBb0FqQTJBaEFDUUFKQUFrQWdBQ2dDSkNJRElBQW9BaWdnQWtFUWFpQUNRUlJxSWdRZ0FrRU1haUFDUVJocUlBSkJJR29nQkNBREtBSUFLQUlNRVFzQVFRRnJEZ01DQWdBQkN5QUFLQUl3SVFNZ0FpQUNRUmxxTmdJVUlBSWdBem9BR0FzRFFDQUNLQUlVSWdNZ0FrRVlhazBOQWlBQ0lBTkJBV3NpQXpZQ0ZDQURMQUFBSUFBb0FpQVFrd0pCZjBjTkFBc0xRWDhoQVF3QkN5QUFRUUU2QURRZ0FDQUJOZ0l3Q3lBQ1FTQnFKQUFnQVFzeEFDQUFJQUFvQWdBb0FoZ1JBQUFhSUFBZ0FTZ0NBQkNTQWlJQk5nSWtJQUFnQVNBQktBSUFLQUljRVFBQU9nQXNDMlVCQVg4Q1FDQUFMUUFzUlFSQUlBSkJBQ0FDUVFCS0d5RUNBMEFnQWlBRFJnMENJQUFnQVMwQUFDQUFLQUlBS0FJMEVRTUFRWDlHQkVBZ0F3OEZJQUZCQVdvaEFTQURRUUZxSVFNTUFRc0FDd0FMSUFGQkFTQUNJQUFvQWlBUUxTRUNDeUFDQzRnQ0FRVi9Jd0JCSUdzaUFpUUFBa0FDUUFKQUlBRkJmMFlOQUNBQ0lBSEFPZ0FYSUFBdEFDd0VRRUYvSVFNZ0FrRVhha0VCUVFFZ0FDZ0NJQkF0UVFGR0RRRU1Bd3NnQWlBQ1FSaHFJZ1UyQWhBZ0FrRWdhaUVHSUFKQkYyb2hBd05BSUFBb0FpUWlCQ0FBS0FJb0lBTWdCU0FDUVF4cUlBSkJHR29nQmlBQ1FSQnFJQVFvQWdBb0Fnd1JDd0FoQkNBQ0tBSU1JQU5HRFFJZ0JFRURSZ1JBSUFOQkFVRUJJQUFvQWlBUUxVRUJSZzBDREFNTElBUkJBVXNOQWlBQ1FSaHFJZ05CQVNBQ0tBSVFJQU5ySWdNZ0FDZ0NJQkF0SUFOSERRSWdBaWdDRENFRElBUkJBVVlOQUFzTElBRkJBQ0FCUVg5SEd5RUREQUVMUVg4aEF3c2dBa0VnYWlRQUlBTUxTUUFnQUNBQktBSUFFSklDSWdFMkFpUWdBQ0FCSUFFb0FnQW9BaGdSQUFBMkFpd2dBQ0FBS0FJa0lnRWdBU2dDQUNnQ0hCRUFBRG9BTlNBQUtBSXNRUWxPQkVBUTFRRUFDd3NKQUNBQVFRQVFxUUlMbndNQ0JuOEJmaU1BUVNCcklnSWtBQUpBSUFBdEFEUUVRQ0FBS0FJd0lRTWdBVVVOQVNBQVFRQTZBRFFnQUVGL05nSXdEQUVMSUFKQkFUWUNHQ0FBUVN4cUlnUWdBa0VZYWlJRElBTW9BZ0FnQkNnQ0FFZ2JLQUlBSWdSQkFDQUVRUUJLR3lFR0EwQWdCU0FHUndSQVFYOGhBeUFBS0FJZ0VENGlCMEYvUmcwQ0lBSkJHR29nQldvZ0J6b0FBQ0FGUVFGcUlRVU1BUXNMQWtBQ1FDQUFMUUExQkVBZ0FpQUNMUUFZT2dBWERBRUxJQUpCR0dvaEF3TkFBa0FnQUNnQ0tDSUZLUUlBSVFnQ1FDQUFLQUlrSWdZZ0JTQUNRUmhxSWdVZ0JDQUZhaUlGSUFKQkVHb2dBa0VYYWlBRElBSkJER29nQmlnQ0FDZ0NFQkVMQUVFQmF3NERBQVFCQXdzZ0FDZ0NLQ0FJTndJQUlBUkJDRVlOQXlBQUtBSWdFRDRpQmtGL1JnMERJQVVnQmpvQUFDQUVRUUZxSVFRTUFRc0xJQUlnQWkwQUdEb0FGd3NDUUNBQlJRUkFBMEFnQkVFQVRBMENRWDhoQXlBRVFRRnJJZ1FnQWtFWWFtb3RBQUFnQUNnQ0lCQ1RBa0YvUncwQURBUUxBQXNnQUNBQ0xRQVhJZ00yQWpBTUFnc2dBaTBBRnlFRERBRUxRWDhoQXdzZ0FrRWdhaVFBSUFNTENRQWdBRUVCRUtrQ0MvSUJBUU4vSXdCQklHc2lBaVFBSUFBdEFEUWhBd0pBSUFGQmYwWUVRQ0FERFFFZ0FDQUFLQUl3SWdGQmYwYzZBRFFNQVFzQ1FDQURSUTBBSUFJZ0FDZ0NNTUE2QUJNQ1FBSkFBa0FnQUNnQ0pDSURJQUFvQWlnZ0FrRVRhaUFDUVJScUlnUWdBa0VNYWlBQ1FSaHFJQUpCSUdvZ0JDQURLQUlBS0FJTUVRc0FRUUZyRGdNQ0FnQUJDeUFBS0FJd0lRTWdBaUFDUVJscU5nSVVJQUlnQXpvQUdBc0RRQ0FDS0FJVUlnTWdBa0VZYWswTkFpQUNJQU5CQVdzaUF6WUNGQ0FETEFBQUlBQW9BaUFRa3dKQmYwY05BQXNMUVg4aEFRd0JDeUFBUVFFNkFEUWdBQ0FCTmdJd0N5QUNRU0JxSkFBZ0FRc3NBUUYvSXdCQkVHc2lBaVFBSUFJZ0FUWUNEQ0FBUWVRQVFmcy9JQUVRMFFFaEFDQUNRUkJxSkFBZ0FBdVlBd0VLZnlBQUFuOENRQ0FBSWdGQkEzRUVRQU5BSUFFdEFBQWlBa1VOQWlBQ1FUMUdEUUlnQVVFQmFpSUJRUU54RFFBTEN3SkFJQUVvQWdBaUFrRi9jeUFDUVlHQ2hBaHJjVUdBZ1lLRWVIRU5BQU5BSUFKQnZmcjA2UU56UVlHQ2hBaHJJQUpCZjNOeFFZQ0Jnb1I0Y1EwQklBRW9BZ1FoQWlBQlFRUnFJUUVnQWtHQmdvUUlheUFDUVg5emNVR0FnWUtFZUhGRkRRQUxDd05BSUFFaUFpMEFBQ0lEUVQxSEJFQWdBa0VCYWlFQklBTU5BUXNMSUFJTUFRc2dBUXNpQVVZRVFFRUFEd3NDUUNBQUlBRWdBR3NpQm1vdEFBQU5BRUdBb2hRb0FnQWlCRVVOQUNBRUtBSUFJZ0ZGRFFBRFFBSkFBbjhnQUNFQ0lBRWhBMEVBSVFkQkFDQUdJZ2hGRFFBYUFrQWdBaTBBQUNJRlJRMEFBMEFDUUNBRklBTXRBQUFpQ1VjTkFDQUpSUTBBSUFoQkFXc2lDRVVOQUNBRFFRRnFJUU1nQWkwQUFTRUZJQUpCQVdvaEFpQUZEUUVNQWdzTElBVWhCd3NnQjBIL0FYRWdBeTBBQUdzTFJRUkFJQUVnQm1vaUFTMEFBRUU5UmcwQkN5QUVLQUlFSVFFZ0JFRUVhaUVFSUFFTkFRd0NDd3NnQVVFQmFpRUtDeUFLQy9BQ0FRTi9Ba0FnQVMwQUFBMEFRWVBGQUJDdEFpSUJCRUFnQVMwQUFBMEJDeUFBUVF4c1FkQ2VFMm9RclFJaUFRUkFJQUV0QUFBTkFRdEJsOFVBRUswQ0lnRUVRQ0FCTFFBQURRRUxRZkxsRWlFQkN3SkFBMEFDUUNBQklBSnFMUUFBSWdSRkRRQWdCRUV2UmcwQVFSY2hCQ0FDUVFGcUlnSkJGMGNOQVF3Q0N3c2dBaUVFQzBIeTVSSWhBd0pBQWtBQ1FBSkFBa0FnQVMwQUFDSUNRUzVHRFFBZ0FTQUVhaTBBQUEwQUlBRWhBeUFDUWNNQVJ3MEJDeUFETFFBQlJRMEJDeUFEUWZMbEVoQzNBVVVOQUNBRFFmekRBQkMzQVEwQkN5QUFSUVJBUVppZkV5RUNJQU10QUFGQkxrWU5BZ3RCQUE4TFFZU2lGQ2dDQUNJQ0JFQURRQ0FESUFKQkNHb1F0d0ZGRFFJZ0FpZ0NJQ0lDRFFBTEMwRWtFRE1pQWdSQUlBSkJGRFlDQkNBQ1FiQ2VFellDQUNBQ1FRaHFJZ0VnQXlBRUVDc2FJQUVnQkdwQkFEb0FBQ0FDUVlTaUZDZ0NBRFlDSUVHRW9oUWdBallDQUFzZ0FrR1lueE1nQUNBQ2Noc2hBZ3NnQWdzdUFDQUFRUUJISUFCQmpPOFRSM0VnQUVHazd4TkhjU0FBUVlpaUZFZHhJQUJCb0tJVVIzRUVRQ0FBRURRTEM3SUlBUVYvSUFFb0FnQWhCQUpBQWtBQ1FBSkFBa0FDUUFKQUFuOENRQUpBQWtBQ1FDQURSUTBBSUFNb0FnQWlCa1VOQUNBQVJRUkFJQUloQXd3REN5QURRUUEyQWdBZ0FpRUREQUVMQWtCQnpKa1VLQUlBS0FJQVJRUkFJQUJGRFFFZ0FrVU5EQ0FDSVFZRFFDQUVMQUFBSWdNRVFDQUFJQU5CLzc4RGNUWUNBQ0FBUVFScUlRQWdCRUVCYWlFRUlBWkJBV3NpQmcwQkRBNExDeUFBUVFBMkFnQWdBVUVBTmdJQUlBSWdCbXNQQ3lBQ0lRTWdBRVVOQXd3RkN5QUVFQzhQQzBFQklRVU1Bd3RCQUF3QkMwRUJDeUVGQTBBZ0JVVUVRQ0FFTFFBQVFRTjJJZ1ZCRUdzZ0JrRWFkU0FGYW5KQkIwc05Bd0ovSUFSQkFXb2lCU0FHUVlDQWdCQnhSUTBBR2lBRkxRQUFRY0FCY1VHQUFVY0VRQ0FFUVFGcklRUU1Cd3NnQkVFQ2FpSUZJQVpCZ0lBZ2NVVU5BQm9nQlMwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBY0xJQVJCQTJvTElRUWdBMEVCYXlFRFFRRWhCUXdCQ3dOQUlBUXRBQUFoQmdKQUlBUkJBM0VOQUNBR1FRRnJRZjRBU3cwQUlBUW9BZ0FpQmtHQmdvUUlheUFHY2tHQWdZS0VlSEVOQUFOQUlBTkJCR3NoQXlBRUtBSUVJUVlnQkVFRWFpRUVJQVlnQmtHQmdvUUlhM0pCZ0lHQ2hIaHhSUTBBQ3dzZ0JrSC9BWEVpQlVFQmEwSCtBRTBFUUNBRFFRRnJJUU1nQkVFQmFpRUVEQUVMQ3lBRlFjSUJheUlGUVRKTERRTWdCRUVCYWlFRUlBVkJBblJCd0xjVGFpZ0NBQ0VHUVFBaEJRd0FDd0FMQTBBZ0JVVUVRQ0FEUlEwSEEwQUNRQUpBQWtBZ0JDMEFBQ0lGUVFGcklnZEIvZ0JMQkVBZ0JTRUdEQUVMSUFOQkJVa05BU0FFUVFOeERRRUNRQU5BSUFRb0FnQWlCa0dCZ29RSWF5QUdja0dBZ1lLRWVIRU5BU0FBSUFaQi93RnhOZ0lBSUFBZ0JDMEFBVFlDQkNBQUlBUXRBQUkyQWdnZ0FDQUVMUUFETmdJTUlBQkJFR29oQUNBRVFRUnFJUVFnQTBFRWF5SURRUVJMRFFBTElBUXRBQUFoQmdzZ0JrSC9BWEVpQlVFQmF5RUhDeUFIUWY0QVN3MEJDeUFBSUFVMkFnQWdBRUVFYWlFQUlBUkJBV29oQkNBRFFRRnJJZ01OQVF3SkN3c2dCVUhDQVdzaUJVRXlTdzBESUFSQkFXb2hCQ0FGUVFKMFFjQzNFMm9vQWdBaEJrRUJJUVVNQVFzZ0JDMEFBQ0lGUVFOMklnZEJFR3NnQnlBR1FScDFhbkpCQjBzTkFRSkFBa0FDZnlBRVFRRnFJZ2NnQlVHQUFXc2dCa0VHZEhJaUJVRUFUZzBBR2lBSExRQUFRWUFCYXlJSFFUOUxEUUVnQkVFQ2FpSUlJQWNnQlVFR2RISWlCVUVBVGcwQUdpQUlMUUFBUVlBQmF5SUhRVDlMRFFFZ0J5QUZRUVowY2lFRklBUkJBMm9MSVFRZ0FDQUZOZ0lBSUFOQkFXc2hBeUFBUVFScUlRQU1BUXRCb1A4VFFSazJBZ0FnQkVFQmF5RUVEQVVMUVFBaEJRd0FDd0FMSUFSQkFXc2hCQ0FHRFFFZ0JDMEFBQ0VHQ3lBR1FmOEJjUTBBSUFBRVFDQUFRUUEyQWdBZ0FVRUFOZ0lBQ3lBQ0lBTnJEd3RCb1A4VFFSazJBZ0FnQUVVTkFRc2dBU0FFTmdJQUMwRi9Ed3NnQVNBRU5nSUFJQUlMaHdRQ0IzOEVmaU1BUVJCcklnZ2tBQUpBSUFBdEFBQWlCVVVFUUNBQUlRUU1BUXNnQUNFRUFrQURRQ0FGd0NJR1FTQkdJQVpCQ1d0QkJVbHlSUTBCSUFRdEFBRWhCU0FFUVFGcUlRUWdCUTBBQ3d3QkN3SkFJQVZCL3dGeElnVkJLMnNPQXdBQkFBRUxRWDlCQUNBRlFTMUdHeUVISUFSQkFXb2hCQXNDZndKQUlBSkJFSEpCRUVjTkFDQUVMUUFBUVRCSERRQkJBU0VKSUFRdEFBRkIzd0Z4UWRnQVJnUkFJQVJCQW1vaEJFRVFEQUlMSUFSQkFXb2hCQ0FDUVFnZ0Foc01BUXNnQWtFS0lBSWJDeUlLclNFTVFRQWhBZ05BQWtCQlVDRUZBa0FnQkN3QUFDSUdRVEJyUWY4QmNVRUtTUTBBUWFsL0lRVWdCa0hoQUd0Qi93RnhRUnBKRFFCQlNTRUZJQVpCd1FCclFmOEJjVUVaU3cwQkN5QUZJQVpxSWdZZ0NrNE5BQ0FJSUF4Q0FDQUxRZ0FRUFVFQklRVUNRQ0FJS1FNSVFnQlNEUUFnQ3lBTWZpSU5JQWF0SWc1Q2Y0VldEUUFnRFNBT2ZDRUxRUUVoQ1NBQ0lRVUxJQVJCQVdvaEJDQUZJUUlNQVFzTElBRUVRQ0FCSUFRZ0FDQUpHellDQUFzQ1FBSkFBa0FnQWdSQVFhRC9FMEhFQURZQ0FDQUhRUUFnQTBJQmd5SU1VQnNoQnlBRElRc01BUXNnQXlBTFZnMEJJQU5DQVlNaERBc0NRQ0FNcHcwQUlBY05BRUdnL3hOQnhBQTJBZ0FnQTBJQmZTRUREQUlMSUFNZ0Mxb05BRUdnL3hOQnhBQTJBZ0FNQVFzZ0N5QUhyQ0lEaFNBRGZTRURDeUFJUVJCcUpBQWdBd3QvQWdKL0FuNGpBRUdnQVdzaUJDUUFJQVFnQVRZQ1BDQUVJQUUyQWhRZ0JFRi9OZ0lZSUFSQkVHb2lCVUlBRU1rQklBUWdCU0FEUVFFUXpnRWdCQ2tEQ0NFR0lBUXBBd0FoQnlBQ0JFQWdBaUFCSUFRb0FoUWdCQ2dDaUFGcUlBUW9BanhyYWpZQ0FBc2dBQ0FHTndNSUlBQWdCemNEQUNBRVFhQUJhaVFBQzE0QkEzOGdBU0FFSUFOcmFpRUZBa0FEUUNBRElBUkhCRUJCZnlFQUlBRWdBa1lOQWlBQkxBQUFJZ1lnQXl3QUFDSUhTQTBDSUFZZ0Iwb0VRRUVCRHdVZ0EwRUJhaUVESUFGQkFXb2hBUXdDQ3dBTEN5QUNJQVZISVFBTElBQUxEQUFnQUNBQ0lBTVFqUUlhQzBBQkFYOUJBQ0VBQTM4Z0FTQUNSZ1IvSUFBRklBRXNBQUFnQUVFRWRHb2lBRUdBZ0lDQWYzRWlBMEVZZGlBRGNpQUFjeUVBSUFGQkFXb2hBUXdCQ3dzTFZBRUNmd0pBQTBBZ0F5QUVSd1JBUVg4aEFDQUJJQUpHRFFJZ0FTZ0NBQ0lGSUFNb0FnQWlCa2dOQWlBRklBWktCRUJCQVE4RklBTkJCR29oQXlBQlFRUnFJUUVNQWdzQUN3c2dBU0FDUnlFQUN5QUFDd3dBSUFBZ0FpQURFTGdDR2d2TEFRRUVmeUFBSVFNakFFRVFheUlHSkFBQ1FDQUNJQUZyUVFKMUlnUkI4UC8vL3dOSkJFQUNRQ0FFUVFKSkJFQWdBeUFFT2dBTERBRUxJQVpCQ0dvZ0JFRUNUd1IvSUFSQkJHcEJmSEVpQlNBRlFRRnJJZ1VnQlVFQ1Joc0ZRUUVMUVFGcUVMa0NJQU1nQmlnQ0NDSUZOZ0lBSUFNZ0JpZ0NERUdBZ0lDQWVISTJBZ2dnQXlBRU5nSUVJQVVoQXdzRFFDQUJJQUpIQkVBZ0F5QUJLQUlBTmdJQUlBTkJCR29oQXlBQlFRUnFJUUVNQVFzTElBTkJBRFlDQUNBR1FSQnFKQUFNQVFzUVZRQUxJQUFMR1FFQmZ5QUJFTG9DSVFJZ0FDQUJOZ0lFSUFBZ0FqWUNBQXNaQUNBQVFZQ0FnSUFFVHdSQUVLUUJBQXNnQUVFQ2RCQlVDMEFCQVg5QkFDRUFBMzhnQVNBQ1JnUi9JQUFGSUFFb0FnQWdBRUVFZEdvaUFFR0FnSUNBZjNFaUEwRVlkaUFEY2lBQWN5RUFJQUZCQkdvaEFRd0JDd3NMOUFJQkFuOGpBRUVnYXlJR0pBQWdCaUFCTmdJY0FrQWdBeTBBQkVFQmNVVUVRQ0FHUVg4MkFnQWdBQ0FCSUFJZ0F5QUVJQVlnQUNnQ0FDZ0NFQkVGQUNFQkFrQUNRQUpBSUFZb0FnQU9BZ0FCQWdzZ0JVRUFPZ0FBREFNTElBVkJBVG9BQUF3Q0N5QUZRUUU2QUFBZ0JFRUVOZ0lBREFFTElBWWdBeWdDSENJQU5nSUFJQUFnQUNnQ0JFRUJhallDQkNBR0tBSUFFUE1CSVFjZ0JpZ0NBQ0lBSUFBb0FnUkJBV3NpQVRZQ0JDQUJRWDlHQkVBZ0FDQUFLQUlBS0FJSUVRRUFDeUFHSUFNb0Fod2lBRFlDQUNBQUlBQW9BZ1JCQVdvMkFnUWdCaWdDQUJDOUFpRUFJQVlvQWdBaUFTQUJLQUlFUVFGcklnTTJBZ1FnQTBGL1JnUkFJQUVnQVNnQ0FDZ0NDQkVCQUFzZ0JpQUFJQUFvQWdBb0FoZ1JBZ0FnQmtFTWNpQUFJQUFvQWdBb0Fod1JBZ0FnQlNBR1FSeHFJQUlnQmlBR1FSaHFJZ01nQnlBRVFRRVF2Z0lnQmtZNkFBQWdCaWdDSENFQkEwQWdBMEVNYXhDL0FpSURJQVpIRFFBTEN5QUdRU0JxSkFBZ0FRc0xBQ0FBUWZ5a0ZCRDBBUXY0QlFFTGZ5TUFRWUFCYXlJS0pBQWdDaUFCTmdKOElBcEIxQUEyQWhBZ0NrRUlhaUlCUVFBMkFnQWdBU0FLUVJCcUlna29BZ0EyQWdRZ0FTRU5Ba0FDUUNBRElBSnJRUXh0SWd0QjVRQlBCRUFnQ3hBeklnbEZEUUVnRFNnQ0FDRUJJQTBnQ1RZQ0FDQUJCRUFnQVNBTktBSUVFUUVBQ3dzZ0NTRUhJQUloQVFOQUlBRWdBMFlFUUFOQUlBQWdDa0g4QUdvUTlRRkJBU0FMR3dSQUlBQWdDa0g4QUdvUTlRRUVRQ0FGSUFVb0FnQkJBbkkyQWdBTERBVUxBbjhnQUNnQ0FDSUhLQUlNSWdFZ0J5Z0NFRVlFUUNBSElBY29BZ0FvQWlRUkFBQU1BUXNnQVMwQUFBdkFJUTRnQmtVRVFDQUVJQTRnQkNnQ0FDZ0NEQkVEQUNFT0N5QVFRUUZxSVFoQkFDRVJJQWtoQnlBQ0lRRURRQ0FCSUFOR0JFQWdDQ0VRSUJGRkRRSWdBQkQzQVJvZ0NTRUhJQUloQVNBTElBeHFRUUpKRFFJRFFDQUJJQU5HQkVBTUJBVUNRQ0FITFFBQVFRSkhEUUFnRUNBQktBSUVJQUV0QUFzaUNFSC9BSEVnQ0VHQUFYRkJCM1liUmcwQUlBZEJBRG9BQUNBTVFRRnJJUXdMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBRkFrQWdCeTBBQUVFQlJ3MEFJQkFnQVNnQ0FDQUJJQUV0QUF0QmdBRnhRUWQyRzJvdEFBQWhEd0pBSUE1Qi93RnhJQVlFZnlBUEJTQUVJQS9BSUFRb0FnQW9BZ3dSQXdBTFFmOEJjVVlFUUVFQklSRWdDQ0FCS0FJRUlBRXRBQXNpRDBIL0FIRWdEMEdBQVhGQkIzWWJSdzBDSUFkQkFqb0FBQ0FNUVFGcUlRd01BUXNnQjBFQU9nQUFDeUFMUVFGcklRc0xJQWRCQVdvaEJ5QUJRUXhxSVFFTUFRc0FDd0FMQUFVZ0IwRUNRUUVnQVNnQ0JDQUJMUUFMSWdoQi93QnhJQWhCZ0FGeFFRZDJHMFVpQ0JzNkFBQWdDQ0FNYWlFTUlBc2dDR3NoQ3lBSFFRRnFJUWNnQVVFTWFpRUJEQUVMQUFzQUN4RFZBUUFMQWtBQ1FBTkFJQUlnQTBZTkFTQUpMUUFBUVFKSEJFQWdDVUVCYWlFSklBSkJER29oQWd3QkN3c2dBaUVEREFFTElBVWdCU2dDQUVFRWNqWUNBQXNnRFNJQUtBSUFJUUVnQUVFQU5nSUFJQUVFUUNBQklBQW9BZ1FSQVFBTElBcEJnQUZxSkFBZ0F3c2FBQ0FBTFFBTFFZQUJjVUVIZGdSQUlBQW9BZ0FRTkFzZ0FBdk9BUUVGZnlNQVFSQnJJZ1VrQUNBRlFRUnFJZ0ZCMVFBMkFnUWdBU0FBTmdJQUlBRkJBRFlDQ0NNQVFSQnJJZ01rQUNBQUtBSUFRWDlIQkVBZ0EwRU1haUlFSUFFMkFnQWdBMEVJYWlJQ0lBUTJBZ0FEUUNBQUtBSUFRUUZHRFFBTElBQW9BZ0JGQkVBZ0FFRUJOZ0lBSUFJb0FnQW9BZ0FpQVNnQ0FDQUJLQUlJSWdSQkFYVnFJUUlnQVNnQ0JDRUJJQUlnQkVFQmNRUi9JQUlvQWdBZ0FXb29BZ0FGSUFFTEVRRUFJQUJCZnpZQ0FBc0xJQU5CRUdva0FDQUFLQUlFSVFBZ0JVRVFhaVFBSUFCQkFXc0xIQUFnQUVHNHBCUkJ1S1FVS0FJQVFRRnFJZ0EyQWdBZ0FEWUNCQXZsQkFFQ2Z5QURLQUlFSVFBZ0F5Z0NIQ0VHSXdCQjRBRnJJZ01rQUNBRElBSTJBdGdCSUFNZ0FUWUMzQUVnQUJEREFpRUhJQU5CeUFGcUlBWWdBMEhYQVdvUXhBSWdBMEc4QVdvaUFrSUFOd0lBSUFKQkFEWUNDQ0FDSUFJdEFBdEJnQUZ4UVFkMkJIOGdBaWdDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSThDSUFNZ0FpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5SUdOZ0s0QVNBRElBTkJFR28yQWd3Z0EwRUFOZ0lJQTBBQ1FDQURRZHdCYWlBRFFkZ0JhaEQxQVEwQUlBTW9BcmdCSUFZZ0FpZ0NCQ0FDTFFBTElnQkIvd0J4SUFCQmdBRnhRUWQyR3lJQWFrWUVRQ0FDSUFCQkFYUVFqd0lnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENQQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCaUFBYWpZQ3VBRUxBbjhnQXlnQzNBRWlBQ2dDRENJQklBQW9BaEJHQkVBZ0FDQUFLQUlBS0FJa0VRQUFEQUVMSUFFdEFBQUx3Q0FISUFZZ0EwRzRBV29nQTBFSWFpQURMQURYQVNBREtBTE1BU0FETFFEVEFTQURRUkJxSUFOQkRHcEJrTGtURU1VQ0RRQWdBMEhjQVdvUTl3RWFEQUVMQ3lBREtBSU1JUUFDUUFKQUlBTW9Bc3dCSUFNdEFOTUJJZ0ZCL3dCeElBRkJnQUZ4UVFkMkcwVU5BQ0FBSUFOQkVHcHJRWjhCU2cwQUlBTWdBRUVFYWlJQk5nSU1JQUFnQXlnQ0NEWUNBQXdCQ3lBQUlRRUxJQVVnQmlBREtBSzRBU0FFSUFjUXhnSTJBZ0FnQTBISUFXb2dBMEVRYWlBQklBUVF4d0lnQTBIY0FXb2dBMEhZQVdvUTlRRUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBTW9BdHdCSVFBZ0FoQy9BaG9nQTBISUFXb1F2d0lhSUFOQjRBRnFKQUFnQUFzckFBSkFJQUJCeWdCeElnQUVRQ0FBUWNBQVJnUkFRUWdQQ3lBQVFRaEhEUUZCRUE4TFFRQVBDMEVLQzNvQkFYOGpBRUVRYXlJREpBQWdBeUFCTmdJTUlBRWdBU2dDQkVFQmFqWUNCQ0FDSUFNb0Fnd1F2UUlpQVNBQktBSUFLQUlRRVFBQU9nQUFJQUFnQVNBQktBSUFLQUlVRVFJQUlBTW9BZ3dpQUNBQUtBSUVRUUZySWdFMkFnUWdBVUYvUmdSQUlBQWdBQ2dDQUNnQ0NCRUJBQXNnQTBFUWFpUUFDOWdDQVFOL0FrQUNRQ0FES0FJQUlnc2dBa2NOQUVFcklRd2dBRUgvQVhFaURTQUtMUUFZUndSQVFTMGhEQ0FLTFFBWklBMUhEUUVMSUFNZ0FrRUJhallDQUNBQ0lBdzZBQUFNQVFzQ1FBSkFJQVlnQjBIL0FIRWdCMEdBQVhGQkIzWWJSUTBBSUFBZ0JVY05BRUVBSVFjZ0NTZ0NBQ0lBSUFoclFaOEJTZzBCSUFRb0FnQWhBU0FKSUFCQkJHbzJBZ0FnQUNBQk5nSUFEQUlMUVg4aEJ5QUtJQXBCR21vZ0FCRElBaUFLYXlJQVFSZEtEUUFDUUFKQUFrQWdBVUVJYXc0REFBSUFBUXNnQUNBQlNBMEJEQUlMSUFGQkVFY05BQ0FBUVJaSURRQWdBaUFMUmcwQklBc2dBbXRCQWtvTkFTQUxRUUZyTFFBQVFUQkhEUUVnQkVFQU5nSUFJQU1nQzBFQmFqWUNBQ0FMSUFCQmtMa1RhaTBBQURvQUFFRUFEd3NnQXlBTFFRRnFOZ0lBSUFzZ0FFR1F1Uk5xTFFBQU9nQUFJQVFnQkNnQ0FFRUJhallDQUVFQUlRY0xJQWNQQ3lBRVFRQTJBZ0JCQUF2aUFRSUNmd0YrSXdCQkVHc2lCQ1FBQW44Q1FDQUFJQUZIQkVBQ1FFR2cveE1vQWdBaEJVR2cveE5CQURZQ0FCREpBaG9nQUNBRVFReHFJQU1ReWdJaEJnSkFRYUQvRXlnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBDSUFCQnhBQkhEUUVnQWtFRU5nSUFRZi8vLy84SElBWkNBRlVOQlJvTUJBdEJvUDhUSUFVMkFnQWdCQ2dDRENBQlJnMEFEQUVMSUFaQy8vLy8vM2RYQkVBZ0FrRUVOZ0lBREFNTElBWkNnSUNBZ0FoWkJFQWdBa0VFTmdJQVFmLy8vLzhIREFRTElBYW5EQU1MQ3lBQ1FRUTJBZ0JCQUF3QkMwR0FnSUNBZUFzaEFDQUVRUkJxSkFBZ0FBdmFBUUVEZnlBQUtBSUVJQUF0QUFzaUJFSC9BSEVnQkVHQUFYRkJCM1liSVFRQ1FDQUNJQUZyUVFWSURRQWdCRVVOQUNBQklBSVF5d0lnQWtFRWF5RUVJQUFvQWdRZ0FDMEFDeUlDUWY4QWNTQUNRWUFCY1VFSGRoc2dBQ2dDQUNBQUlBSkJnQUZ4UVFkMkd5SUNhaUVHQWtBRFFBSkFJQUlzQUFBaUFFSC9BR3NoQlNBQklBUlBEUUFnQlVIL0FYRkJnZ0ZQQkVBZ0FTZ0NBQ0FBUncwREN5QUJRUVJxSVFFZ0FpQUdJQUpyUVFGS2FpRUNEQUVMQ3lBRlFmOEJjVUdDQVVrTkFTQUVLQUlBUVFGcklBQkpEUUVMSUFOQkJEWUNBQXNMTWdBZ0FrSC9BWEVoQWdOQUFrQWdBQ0FCUndSL0lBQXRBQUFnQWtjTkFTQUFCU0FCQ3c4TElBQkJBV29oQUF3QUN3QUwxQUlCQTM5Qm5LUVVMUUFBQkVCQm1LUVVLQUlBRHdzakFFRWdheUlCSkFBQ1FBSkFBMEFnQVVFSWFpQUFRUUowYWlBQVFlbkZBRUh0NWhKQkFTQUFkRUgvLy8vL0IzRWJFSzRDSWdJMkFnQWdBa0YvUmcwQklBQkJBV29pQUVFR1J3MEFDMEdNN3hNaEFDQUJRUWhxUVl6dkUwRVlFSWdCUlEwQlFhVHZFeUVBSUFGQkNHcEJwTzhUUVJnUWlBRkZEUUZCQUNFQVFiaWlGQzBBQUVVRVFBTkFJQUJCQW5SQmlLSVVhaUFBUWUzbUVoQ3VBallDQUNBQVFRRnFJZ0JCQmtjTkFBdEJ1S0lVUVFFNkFBQkJvS0lVUVlpaUZDZ0NBRFlDQUF0QmlLSVVJUUFnQVVFSWFrR0lvaFJCR0JDSUFVVU5BVUdnb2hRaEFDQUJRUWhxUWFDaUZFRVlFSWdCUlEwQlFSZ1FNeUlBUlEwQUlBQWdBU2tDQ0RjQ0FDQUFJQUVwQWhnM0FoQWdBQ0FCS1FJUU53SUlEQUVMUVFBaEFBc2dBVUVnYWlRQVFaeWtGRUVCT2dBQVFaaWtGQ0FBTmdJQUlBQUxGZ0FnQUNBQklBSkNnSUNBZ0lDQWdJQ0FmeEN4QWdzL0FRRi9Ba0FnQUNBQlJnMEFBMEFnQUNBQlFRUnJJZ0ZQRFFFZ0FDZ0NBQ0VDSUFBZ0FTZ0NBRFlDQUNBQklBSTJBZ0FnQUVFRWFpRUFEQUFMQUFzTDVRUUJBbjhnQXlnQ0JDRUFJQU1vQWh3aEJpTUFRZUFCYXlJREpBQWdBeUFDTmdMWUFTQURJQUUyQXR3QklBQVF3d0loQnlBRFFjZ0JhaUFHSUFOQjF3RnFFTVFDSUFOQnZBRnFJZ0pDQURjQ0FDQUNRUUEyQWdnZ0FpQUNMUUFMUVlBQmNVRUhkZ1IvSUFJb0FnaEIvLy8vL3dkeFFRRnJCVUVLQ3hDUEFpQURJQUlvQWdBZ0FpQUNMUUFMUVlBQmNVRUhkaHNpQmpZQ3VBRWdBeUFEUVJCcU5nSU1JQU5CQURZQ0NBTkFBa0FnQTBIY0FXb2dBMEhZQVdvUTlRRU5BQ0FES0FLNEFTQUdJQUlvQWdRZ0FpMEFDeUlBUWY4QWNTQUFRWUFCY1VFSGRoc2lBR3BHQkVBZ0FpQUFRUUYwRUk4Q0lBSWdBaTBBQzBHQUFYRkJCM1lFZnlBQ0tBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUWp3SWdBeUFDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSWdZZ0FHbzJBcmdCQ3dKL0lBTW9BdHdCSWdBb0Fnd2lBU0FBS0FJUVJnUkFJQUFnQUNnQ0FDZ0NKQkVBQUF3QkN5QUJMUUFBQzhBZ0J5QUdJQU5CdUFGcUlBTkJDR29nQXl3QTF3RWdBeWdDekFFZ0F5MEEwd0VnQTBFUWFpQURRUXhxUVpDNUV4REZBZzBBSUFOQjNBRnFFUGNCR2d3QkN3c2dBeWdDRENFQUFrQUNRQ0FES0FMTUFTQURMUURUQVNJQlFmOEFjU0FCUVlBQmNVRUhkaHRGRFFBZ0FDQURRUkJxYTBHZkFVb05BQ0FESUFCQkJHb2lBVFlDRENBQUlBTW9BZ2cyQWdBTUFRc2dBQ0VCQ3lBRklBWWdBeWdDdUFFZ0JDQUhFTTBDTndNQUlBTkJ5QUZxSUFOQkVHb2dBU0FFRU1jQ0lBTkIzQUZxSUFOQjJBRnFFUFVCQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFES0FMY0FTRUFJQUlRdndJYUlBTkJ5QUZxRUw4Q0dpQURRZUFCYWlRQUlBQUxyUUVDQW44QmZpTUFRUkJySWdRa0FBSkFJQUFnQVVjRVFFR2cveE1vQWdBaEJVR2cveE5CQURZQ0FCREpBaG9nQUNBRVFReHFJQU1ReWdJaEJnSkFRYUQvRXlnQ0FDSUFCRUFnQkNnQ0RDQUJSdzBCSUFCQnhBQkhEUU1nQWtFRU5nSUFRdi8vLy8vLy8vLy8vd0JDZ0lDQWdJQ0FnSUNBZnlBR1FnQlZHeUVHREFNTFFhRC9FeUFGTmdJQUlBUW9BZ3dnQVVZTkFnc0xJQUpCQkRZQ0FFSUFJUVlMSUFSQkVHb2tBQ0FHQytVRUFRSi9JQU1vQWdRaEFDQURLQUljSVFZakFFSGdBV3NpQXlRQUlBTWdBallDMkFFZ0F5QUJOZ0xjQVNBQUVNTUNJUWNnQTBISUFXb2dCaUFEUWRjQmFoREVBaUFEUWJ3QmFpSUNRZ0EzQWdBZ0FrRUFOZ0lJSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRandJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1kyQXJnQklBTWdBMEVRYWpZQ0RDQURRUUEyQWdnRFFBSkFJQU5CM0FGcUlBTkIyQUZxRVBVQkRRQWdBeWdDdUFFZ0JpQUNLQUlFSUFJdEFBc2lBRUgvQUhFZ0FFR0FBWEZCQjNZYklnQnFSZ1JBSUFJZ0FFRUJkQkNQQWlBQ0lBSXRBQXRCZ0FGeFFRZDJCSDhnQWlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MRUk4Q0lBTWdBaWdDQUNBQ0lBSXRBQXRCZ0FGeFFRZDJHeUlHSUFCcU5nSzRBUXNDZnlBREtBTGNBU0lBS0FJTUlnRWdBQ2dDRUVZRVFDQUFJQUFvQWdBb0FpUVJBQUFNQVFzZ0FTMEFBQXZBSUFjZ0JpQURRYmdCYWlBRFFRaHFJQU1zQU5jQklBTW9Bc3dCSUFNdEFOTUJJQU5CRUdvZ0EwRU1ha0dRdVJNUXhRSU5BQ0FEUWR3QmFoRDNBUm9NQVFzTElBTW9BZ3doQUFKQUFrQWdBeWdDekFFZ0F5MEEwd0VpQVVIL0FIRWdBVUdBQVhGQkIzWWJSUTBBSUFBZ0EwRVFhbXRCbndGS0RRQWdBeUFBUVFScUlnRTJBZ3dnQUNBREtBSUlOZ0lBREFFTElBQWhBUXNnQlNBR0lBTW9BcmdCSUFRZ0J4RFBBanNCQUNBRFFjZ0JhaUFEUVJCcUlBRWdCQkRIQWlBRFFkd0JhaUFEUWRnQmFoRDFBUVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBeWdDM0FFaEFDQUNFTDhDR2lBRFFjZ0JhaEMvQWhvZ0EwSGdBV29rQUNBQUMrRUJBZ04vQVg0akFFRVFheUlFSkFBQ2Z3SkFJQUFnQVVjRVFBSkFBa0FnQUMwQUFDSUZRUzFIRFFBZ0FFRUJhaUlBSUFGSERRQU1BUXRCb1A4VEtBSUFJUVpCb1A4VFFRQTJBZ0FReVFJYUlBQWdCRUVNYWlBREVOQUNJUWNDUUVHZy94TW9BZ0FpQUFSQUlBUW9BZ3dnQVVjTkFpQUFRY1FBUmcwQklBZEMvLzhEVmcwQkRBUUxRYUQvRXlBR05nSUFJQUVnQkNnQ0RFY05BU0FIUW9DQUJGUU5Bd3NnQWtFRU5nSUFRZi8vQXd3REN3c2dBa0VFTmdJQVFRQU1BUXRCQUNBSHB5SUFheUFBSUFWQkxVWWJDeUVBSUFSQkVHb2tBQ0FBUWYvL0EzRUxEUUFnQUNBQklBSkNmeEN4QWd2bEJBRUNmeUFES0FJRUlRQWdBeWdDSENFR0l3QkI0QUZySWdNa0FDQURJQUkyQXRnQklBTWdBVFlDM0FFZ0FCRERBaUVISUFOQnlBRnFJQVlnQTBIWEFXb1F4QUlnQTBHOEFXb2lBa0lBTndJQUlBSkJBRFlDQ0NBQ0lBSXRBQXRCZ0FGeFFRZDJCSDhnQWlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MRUk4Q0lBTWdBaWdDQUNBQ0lBSXRBQXRCZ0FGeFFRZDJHeUlHTmdLNEFTQURJQU5CRUdvMkFnd2dBMEVBTmdJSUEwQUNRQ0FEUWR3QmFpQURRZGdCYWhEMUFRMEFJQU1vQXJnQklBWWdBaWdDQkNBQ0xRQUxJZ0JCL3dCeElBQkJnQUZ4UVFkMkd5SUFha1lFUUNBQ0lBQkJBWFFRandJZ0FpQUNMUUFMUVlBQmNVRUhkZ1IvSUFJb0FnaEIvLy8vL3dkeFFRRnJCVUVLQ3hDUEFpQURJQUlvQWdBZ0FpQUNMUUFMUVlBQmNVRUhkaHNpQmlBQWFqWUN1QUVMQW44Z0F5Z0MzQUVpQUNnQ0RDSUJJQUFvQWhCR0JFQWdBQ0FBS0FJQUtBSWtFUUFBREFFTElBRXRBQUFMd0NBSElBWWdBMEc0QVdvZ0EwRUlhaUFETEFEWEFTQURLQUxNQVNBRExRRFRBU0FEUVJCcUlBTkJER3BCa0xrVEVNVUNEUUFnQTBIY0FXb1E5d0VhREFFTEN5QURLQUlNSVFBQ1FBSkFJQU1vQXN3QklBTXRBTk1CSWdGQi93QnhJQUZCZ0FGeFFRZDJHMFVOQUNBQUlBTkJFR3ByUVo4QlNnMEFJQU1nQUVFRWFpSUJOZ0lNSUFBZ0F5Z0NDRFlDQUF3QkN5QUFJUUVMSUFVZ0JpQURLQUs0QVNBRUlBY1EwZ0kyQWdBZ0EwSElBV29nQTBFUWFpQUJJQVFReHdJZ0EwSGNBV29nQTBIWUFXb1E5UUVFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQU1vQXR3QklRQWdBaEMvQWhvZ0EwSElBV29RdndJYUlBTkI0QUZxSkFBZ0FBdmVBUUlEZndGK0l3QkJFR3NpQkNRQUFuOENRQ0FBSUFGSEJFQUNRQUpBSUFBdEFBQWlCVUV0UncwQUlBQkJBV29pQUNBQlJ3MEFEQUVMUWFEL0V5Z0NBQ0VHUWFEL0UwRUFOZ0lBRU1rQ0dpQUFJQVJCREdvZ0F4RFFBaUVIQWtCQm9QOFRLQUlBSWdBRVFDQUVLQUlNSUFGSERRSWdBRUhFQUVZTkFTQUhRdi8vLy84UFZnMEJEQVFMUWFEL0V5QUdOZ0lBSUFFZ0JDZ0NERWNOQVNBSFFvQ0FnSUFRVkEwREN5QUNRUVEyQWdCQmZ3d0RDd3NnQWtFRU5nSUFRUUFNQVF0QkFDQUhweUlBYXlBQUlBVkJMVVliQ3lFQUlBUkJFR29rQUNBQUMrVUVBUUovSUFNb0FnUWhBQ0FES0FJY0lRWWpBRUhnQVdzaUF5UUFJQU1nQWpZQzJBRWdBeUFCTmdMY0FTQUFFTU1DSVFjZ0EwSElBV29nQmlBRFFkY0JhaERFQWlBRFFid0JhaUlDUWdBM0FnQWdBa0VBTmdJSUlBSWdBaTBBQzBHQUFYRkJCM1lFZnlBQ0tBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUWp3SWdBeUFDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSWdZMkFyZ0JJQU1nQTBFUWFqWUNEQ0FEUVFBMkFnZ0RRQUpBSUFOQjNBRnFJQU5CMkFGcUVQVUJEUUFnQXlnQ3VBRWdCaUFDS0FJRUlBSXRBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJJZ0JxUmdSQUlBSWdBRUVCZEJDUEFpQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVJOENJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR0lBQnFOZ0s0QVFzQ2Z5QURLQUxjQVNJQUtBSU1JZ0VnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaVFSQUFBTUFRc2dBUzBBQUF2QUlBY2dCaUFEUWJnQmFpQURRUWhxSUFNc0FOY0JJQU1vQXN3QklBTXRBTk1CSUFOQkVHb2dBMEVNYWtHUXVSTVF4UUlOQUNBRFFkd0JhaEQzQVJvTUFRc0xJQU1vQWd3aEFBSkFBa0FnQXlnQ3pBRWdBeTBBMHdFaUFVSC9BSEVnQVVHQUFYRkJCM1liUlEwQUlBQWdBMEVRYW10Qm53RktEUUFnQXlBQVFRUnFJZ0UyQWd3Z0FDQURLQUlJTmdJQURBRUxJQUFoQVFzZ0JTQUdJQU1vQXJnQklBUWdCeERVQWpjREFDQURRY2dCYWlBRFFSQnFJQUVnQkJESEFpQURRZHdCYWlBRFFkZ0JhaEQxQVFSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQXlnQzNBRWhBQ0FDRUw4Q0dpQURRY2dCYWhDL0Fob2dBMEhnQVdva0FDQUFDOElCQWdOL0FYNGpBRUVRYXlJRUpBQUNmaUFBSUFGSEJFQUNRQUpBSUFBdEFBQWlCVUV0UncwQUlBQkJBV29pQUNBQlJ3MEFEQUVMUWFEL0V5Z0NBQ0VHUWFEL0UwRUFOZ0lBRU1rQ0dpQUFJQVJCREdvZ0F4RFFBaUVIQWtCQm9QOFRLQUlBSWdBRVFDQUVLQUlNSUFGSERRSWdBRUhFQUVjTkFTQUNRUVEyQWdCQ2Z3d0VDMEdnL3hNZ0JqWUNBQ0FFS0FJTUlBRkdEUUFNQVF0Q0FDQUhmU0FISUFWQkxVWWJEQUlMQ3lBQ1FRUTJBZ0JDQUFzaEJ5QUVRUkJxSkFBZ0J3dU1CUUVEZnlBREtBSWNJUUFqQUVHQUFtc2lBeVFBSUFNZ0FqWUMrQUVnQXlBQk5nTDhBU0FEUWNBQmFpQUFJQU5CMEFGcUlBTkJ6d0ZxSUFOQnpnRnFFTllDSUFOQnRBRnFJZ0pDQURjQ0FDQUNRUUEyQWdnZ0FpQUNMUUFMUVlBQmNVRUhkZ1IvSUFJb0FnaEIvLy8vL3dkeFFRRnJCVUVLQ3hDUEFpQURJQUlvQWdBZ0FpQUNMUUFMUVlBQmNVRUhkaHNpQmpZQ3NBRWdBeUFEUVJCcU5nSU1JQU5CQURZQ0NDQURRUUU2QUFjZ0EwSEZBRG9BQmlBRExRRE9BY0FoQVNBRExRRFBBY0FoQndOQUFrQWdBMEg4QVdvZ0EwSDRBV29ROVFFTkFDQURLQUt3QVNBR0lBSW9BZ1FnQWkwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGhzaUFHcEdCRUFnQWlBQVFRRjBFSThDSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRandJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1lnQUdvMkFyQUJDd0ovSUFNb0F2d0JJZ0FvQWd3aUNDQUFLQUlRUmdSQUlBQWdBQ2dDQUNnQ0pCRUFBQXdCQ3lBSUxRQUFDOEFnQTBFSGFpQURRUVpxSUFZZ0EwR3dBV29nQnlBQklBTkJ3QUZxSUFOQkVHb2dBMEVNYWlBRFFRaHFJQU5CMEFGcUVOY0NEUUFnQTBIOEFXb1E5d0VhREFFTEN5QURLQUlNSVFBQ1FBSkFJQU1vQXNRQklBTXRBTXNCSWdGQi93QnhJQUZCZ0FGeFFRZDJHMFVOQUNBRExRQUhSUTBBSUFBZ0EwRVFhbXRCbndGS0RRQWdBeUFBUVFScUlnRTJBZ3dnQUNBREtBSUlOZ0lBREFFTElBQWhBUXNnQlNBR0lBTW9BckFCSUFRUTJBSTRBZ0FnQTBIQUFXb2dBMEVRYWlBQklBUVF4d0lnQTBIOEFXb2dBMEg0QVdvUTlRRUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBTW9BdndCSVFBZ0FoQy9BaG9nQTBIQUFXb1F2d0lhSUFOQmdBSnFKQUFnQUF1c0FRRUJmeU1BUVJCcklnVWtBQ0FGSUFFMkFnd2dBU0FCS0FJRVFRRnFOZ0lFSUFVb0Fnd1E4d0VpQVVHUXVSTkJzTGtUSUFJZ0FTZ0NBQ2dDSUJFR0FCb2dBeUFGS0FJTUVMMENJZ0VnQVNnQ0FDZ0NEQkVBQURvQUFDQUVJQUVnQVNnQ0FDZ0NFQkVBQURvQUFDQUFJQUVnQVNnQ0FDZ0NGQkVDQUNBRktBSU1JZ0FnQUNnQ0JFRUJheUlCTmdJRUlBRkJmMFlFUUNBQUlBQW9BZ0FvQWdnUkFRQUxJQVZCRUdva0FBdStCQUFDUUFKQUlBQWdCVVlFUUNBQkxRQUFSUTBDUVFBaEJTQUJRUUE2QUFBZ0JDQUVLQUlBSWdCQkFXbzJBZ0FnQUVFdU9nQUFJQWNvQWdRZ0J5MEFDeUlBUWY4QWNTQUFRWUFCY1VFSGRodEZEUUVnQ1NnQ0FDSUFJQWhyUVo4QlNnMEJJQW9vQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQVFRQVBDd0pBSUFBZ0JrY05BQ0FIS0FJRUlBY3RBQXNpQlVIL0FIRWdCVUdBQVhGQkIzWWJSUTBBSUFFdEFBQkZEUUpCQUNFRklBa29BZ0FpQUNBSWEwR2ZBVW9OQVNBS0tBSUFJUUVnQ1NBQVFRUnFOZ0lBSUFBZ0FUWUNBQ0FLUVFBMkFnQkJBQThMUVg4aEJTQUxJQXRCSUdvZ0FCRElBaUFMYXlJTFFSOUtEUUFnQzBHUXVSTnFMQUFBSVFZQ1FBSkFBa0FDUUNBTFFYNXhRUlpyRGdNQkFnQUNDeUFESUFRb0FnQWlBRWNFUUNBQVFRRnJMQUFBSWdGQjN3QnhJQUVnQVVIaEFHdEJHa2tiSUFJc0FBQWlBVUhmQUhFZ0FTQUJRZUVBYTBFYVNSdEhEUVFMSUFRZ0FFRUJhallDQUNBQUlBWTZBQUJCQUE4TElBSkIwQUE2QUFBTUFRc2dCa0hmQUhFZ0JpQUdRZUVBYTBFYVNSc2lBQ0FDTEFBQVJ3MEFJQUlnQUVFZ2NpQUFJQUJCd1FCclFScEpHem9BQUNBQkxRQUFSUTBBSUFGQkFEb0FBQ0FIS0FJRUlBY3RBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJSUTBBSUFrb0FnQWlBQ0FJYTBHZkFVb05BQ0FLS0FJQUlRRWdDU0FBUVFScU5nSUFJQUFnQVRZQ0FBc2dCQ0FFS0FJQUlnQkJBV28yQWdBZ0FDQUdPZ0FBUVFBaEJTQUxRUlZLRFFBZ0NpQUtLQUlBUVFGcU5nSUFDeUFGRHd0QmZ3dTJBUUlEZndKOUl3QkJFR3NpQXlRQUFrQUNRQUpBSUFBZ0FVY0VRRUdnL3hNb0FnQWhCVUdnL3hOQkFEWUNBQkRKQWhvakFFRVFheUlFSkFBZ0JDQUFJQU5CREdwQkFCQ3lBaUFFS1FNQUlBUXBBd2dRVVNFR0lBUkJFR29rQUVHZy94TW9BZ0FpQUVVTkFTQURLQUlNSUFGSERRSWdCaUVISUFCQnhBQkhEUU1NQWdzZ0FrRUVOZ0lBREFJTFFhRC9FeUFGTmdJQUlBTW9BZ3dnQVVZTkFRc2dBa0VFTmdJQUlBY2hCZ3NnQTBFUWFpUUFJQVlMakFVQkEzOGdBeWdDSENFQUl3QkJnQUpySWdNa0FDQURJQUkyQXZnQklBTWdBVFlDL0FFZ0EwSEFBV29nQUNBRFFkQUJhaUFEUWM4QmFpQURRYzRCYWhEV0FpQURRYlFCYWlJQ1FnQTNBZ0FnQWtFQU5nSUlJQUlnQWkwQUMwR0FBWEZCQjNZRWZ5QUNLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1Fqd0lnQXlBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklnWTJBckFCSUFNZ0EwRVFhallDRENBRFFRQTJBZ2dnQTBFQk9nQUhJQU5CeFFBNkFBWWdBeTBBemdIQUlRRWdBeTBBendIQUlRY0RRQUpBSUFOQi9BRnFJQU5CK0FGcUVQVUJEUUFnQXlnQ3NBRWdCaUFDS0FJRUlBSXRBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJJZ0JxUmdSQUlBSWdBRUVCZEJDUEFpQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVJOENJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR0lBQnFOZ0t3QVFzQ2Z5QURLQUw4QVNJQUtBSU1JZ2dnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaVFSQUFBTUFRc2dDQzBBQUF2QUlBTkJCMm9nQTBFR2FpQUdJQU5Cc0FGcUlBY2dBU0FEUWNBQmFpQURRUkJxSUFOQkRHb2dBMEVJYWlBRFFkQUJhaERYQWcwQUlBTkIvQUZxRVBjQkdnd0JDd3NnQXlnQ0RDRUFBa0FDUUNBREtBTEVBU0FETFFETEFTSUJRZjhBY1NBQlFZQUJjVUVIZGh0RkRRQWdBeTBBQjBVTkFDQUFJQU5CRUdwclFaOEJTZzBBSUFNZ0FFRUVhaUlCTmdJTUlBQWdBeWdDQ0RZQ0FBd0JDeUFBSVFFTElBVWdCaUFES0FLd0FTQUVFTm9DT1FNQUlBTkJ3QUZxSUFOQkVHb2dBU0FFRU1jQ0lBTkIvQUZxSUFOQitBRnFFUFVCQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFES0FMOEFTRUFJQUlRdndJYUlBTkJ3QUZxRUw4Q0dpQURRWUFDYWlRQUlBQUx0Z0VDQTM4Q2ZDTUFRUkJySWdNa0FBSkFBa0FDUUNBQUlBRkhCRUJCb1A4VEtBSUFJUVZCb1A4VFFRQTJBZ0FReVFJYUl3QkJFR3NpQkNRQUlBUWdBQ0FEUVF4cVFRRVFzZ0lnQkNrREFDQUVLUU1JRUUwaEJpQUVRUkJxSkFCQm9QOFRLQUlBSWdCRkRRRWdBeWdDRENBQlJ3MENJQVloQnlBQVFjUUFSdzBEREFJTElBSkJCRFlDQUF3Q0MwR2cveE1nQlRZQ0FDQURLQUlNSUFGR0RRRUxJQUpCQkRZQ0FDQUhJUVlMSUFOQkVHb2tBQ0FHQzZNRkFnTi9BWDRnQXlnQ0hDRUFJd0JCa0FKcklnTWtBQ0FESUFJMkFvZ0NJQU1nQVRZQ2pBSWdBMEhRQVdvZ0FDQURRZUFCYWlBRFFkOEJhaUFEUWQ0QmFoRFdBaUFEUWNRQmFpSUNRZ0EzQWdBZ0FrRUFOZ0lJSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRandJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1kyQXNBQklBTWdBMEVnYWpZQ0hDQURRUUEyQWhnZ0EwRUJPZ0FYSUFOQnhRQTZBQllnQXkwQTNnSEFJUUVnQXkwQTN3SEFJUWNEUUFKQUlBTkJqQUpxSUFOQmlBSnFFUFVCRFFBZ0F5Z0N3QUVnQmlBQ0tBSUVJQUl0QUFzaUFFSC9BSEVnQUVHQUFYRkJCM1liSWdCcVJnUkFJQUlnQUVFQmRCQ1BBaUFDSUFJdEFBdEJnQUZ4UVFkMkJIOGdBaWdDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSThDSUFNZ0FpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5SUdJQUJxTmdMQUFRc0NmeUFES0FLTUFpSUFLQUlNSWdnZ0FDZ0NFRVlFUUNBQUlBQW9BZ0FvQWlRUkFBQU1BUXNnQ0MwQUFBdkFJQU5CRjJvZ0EwRVdhaUFHSUFOQndBRnFJQWNnQVNBRFFkQUJhaUFEUVNCcUlBTkJIR29nQTBFWWFpQURRZUFCYWhEWEFnMEFJQU5CakFKcUVQY0JHZ3dCQ3dzZ0F5Z0NIQ0VBQWtBQ1FDQURLQUxVQVNBRExRRGJBU0lCUWY4QWNTQUJRWUFCY1VFSGRodEZEUUFnQXkwQUYwVU5BQ0FBSUFOQklHcHJRWjhCU2cwQUlBTWdBRUVFYWlJQk5nSWNJQUFnQXlnQ0dEWUNBQXdCQ3lBQUlRRUxJQU1nQmlBREtBTEFBU0FFRU53Q0lBTXBBd0FoQ1NBRklBTXBBd2czQXdnZ0JTQUpOd01BSUFOQjBBRnFJQU5CSUdvZ0FTQUVFTWNDSUFOQmpBSnFJQU5CaUFKcUVQVUJCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QURLQUtNQWlFQUlBSVF2d0lhSUFOQjBBRnFFTDhDR2lBRFFaQUNhaVFBSUFBTHNnSUNCSDRGZnlNQVFTQnJJZ2drQUFKQUFrQUNRQ0FCSUFKSEJFQkJvUDhUS0FJQUlReEJvUDhUUVFBMkFnQWpBRUVRYXlJSkpBQVF5UUlhSXdCQkVHc2lDaVFBSXdCQkVHc2lDeVFBSUFzZ0FTQUlRUnhxUVFJUXNnSWdDeWtEQUNFRUlBb2dDeWtEQ0RjRENDQUtJQVEzQXdBZ0MwRVFhaVFBSUFvcEF3QWhCQ0FKSUFvcEF3ZzNBd2dnQ1NBRU53TUFJQXBCRUdva0FDQUpLUU1BSVFRZ0NDQUpLUU1JTndNUUlBZ2dCRGNEQ0NBSlFSQnFKQUFnQ0NrREVDRUVJQWdwQXdnaEJVR2cveE1vQWdBaUFVVU5BU0FJS0FJY0lBSkhEUUlnQlNFR0lBUWhCeUFCUWNRQVJ3MEREQUlMSUFOQkJEWUNBQXdDQzBHZy94TWdERFlDQUNBSUtBSWNJQUpHRFFFTElBTkJCRFlDQUNBR0lRVWdCeUVFQ3lBQUlBVTNBd0FnQUNBRU53TUlJQWhCSUdva0FBdU1CUUVDZnlNQVFZQUNheUlBSkFBZ0FDQUNOZ0w0QVNBQUlBRTJBdndCSUFCQnhBRnFJZ2RDQURjQ0FDQUhRUUEyQWdnZ0FFRVFhaUlHSUFNb0Fod2lBVFlDQUNBQklBRW9BZ1JCQVdvMkFnUWdBQ2dDRUJEekFTSUJRWkM1RTBHcXVSTWdBRUhRQVdvZ0FTZ0NBQ2dDSUJFR0FCb2dBQ2dDRUNJQklBRW9BZ1JCQVdzaUFqWUNCQ0FDUVg5R0JFQWdBU0FCS0FJQUtBSUlFUUVBQ3lBQVFiZ0JhaUlDUWdBM0FnQWdBa0VBTmdJSUlBSWdBaTBBQzBHQUFYRkJCM1lFZnlBQ0tBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUWp3SWdBQ0FDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSWdNMkFyUUJJQUFnQmpZQ0RDQUFRUUEyQWdnZ0F5RUJBMEFDUUNBQ0lBQkIvQUZxSUFCQitBRnFFUFVCQkg4Z0F3VWdBeUFCSUFJb0FnUWdBaTBBQ3lJR1FmOEFjU0FHUVlBQmNVRUhkaHNpQm1wR0JFQWdBaUFHUVFGMEVJOENJQUlnQWkwQUMwR0FBWEZCQjNZRWZ5QUNLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1Fqd0lnQUNBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklnRWdCbW8yQXJRQkN3Si9JQUFvQXZ3QklnTW9BZ3dpQmlBREtBSVFSZ1JBSUFNZ0F5Z0NBQ2dDSkJFQUFBd0JDeUFHTFFBQUM4QkJFQ0FCSUFCQnRBRnFJQUJCQ0dwQkFDQUhLQUlFSUFjdEFBc2dBRUVRYWlBQVFReHFJQUJCMEFGcUVNVUNSUTBCSUFBb0FyUUJDeUFCYXhDUEFpQUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJUUVReVFJaEF5QUFJQVUyQWdBZ0FTQURJQUFRM2dKQkFVY0VRQ0FFUVFRMkFnQUxJQUJCL0FGcUlBQkIrQUZxRVBVQkJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBQUtBTDhBU0VCSUFJUXZ3SWFJQWNRdndJYUlBQkJnQUpxSkFBZ0FROExJQUJCL0FGcUVQY0JHaUFBS0FLMEFTRUREQUFMQUF0aUFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpZQ0RDQURRUWhxSUFFUTN3SWhBU0FBUWNvOUlBTW9BZ3dRdEFFaEFpQUJLQUlBSWdBRVFFSE1tUlFvQWdBYUlBQUVRRUhNbVJSQjNLSVVJQUFnQUVGL1JoczJBZ0FMQ3lBRFFSQnFKQUFnQWdzNEFRRi9RY3laRkNnQ0FDRUNJQUVFUUVITW1SUkIzS0lVSUFFZ0FVRi9SaHMyQWdBTElBQkJmeUFDSUFKQjNLSVVSaHMyQWdBZ0FBdjBBZ0VDZnlNQVFTQnJJZ1lrQUNBR0lBRTJBaHdDUUNBRExRQUVRUUZ4UlFSQUlBWkJmellDQUNBQUlBRWdBaUFESUFRZ0JpQUFLQUlBS0FJUUVRVUFJUUVDUUFKQUFrQWdCaWdDQUE0Q0FBRUNDeUFGUVFBNkFBQU1Bd3NnQlVFQk9nQUFEQUlMSUFWQkFUb0FBQ0FFUVFRMkFnQU1BUXNnQmlBREtBSWNJZ0EyQWdBZ0FDQUFLQUlFUVFGcU5nSUVJQVlvQWdBUWhnSWhCeUFHS0FJQUlnQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBWWdBeWdDSENJQU5nSUFJQUFnQUNnQ0JFRUJhallDQkNBR0tBSUFFT0VDSVFBZ0JpZ0NBQ0lCSUFFb0FnUkJBV3NpQXpZQ0JDQURRWDlHQkVBZ0FTQUJLQUlBS0FJSUVRRUFDeUFHSUFBZ0FDZ0NBQ2dDR0JFQ0FDQUdRUXh5SUFBZ0FDZ0NBQ2dDSEJFQ0FDQUZJQVpCSEdvZ0FpQUdJQVpCR0dvaUF5QUhJQVJCQVJEaUFpQUdSam9BQUNBR0tBSWNJUUVEUUNBRFFReHJFT01DSWdNZ0JrY05BQXNMSUFaQklHb2tBQ0FCQ3dzQUlBQkJoS1VVRVBRQkMvRUZBUXQvSXdCQmdBRnJJZ29rQUNBS0lBRTJBbndnQ2tIVUFEWUNFQ0FLUVFocUlnRkJBRFlDQUNBQklBcEJFR29pQ1NnQ0FEWUNCQ0FCSVEwQ1FBSkFJQU1nQW10QkRHMGlDMEhsQUU4RVFDQUxFRE1pQ1VVTkFTQU5LQUlBSVFFZ0RTQUpOZ0lBSUFFRVFDQUJJQTBvQWdRUkFRQUxDeUFKSVFjZ0FpRUJBMEFnQVNBRFJnUkFBMEFnQUNBS1Fmd0FhaENIQWtFQklBc2JCRUFnQUNBS1Fmd0FhaENIQWdSQUlBVWdCU2dDQUVFQ2NqWUNBQXNNQlFzQ2Z5QUFLQUlBSWdjb0Fnd2lBU0FIS0FJUVJnUkFJQWNnQnlnQ0FDZ0NKQkVBQUF3QkN5QUJLQUlBQ3lFT0lBWkZCRUFnQkNBT0lBUW9BZ0FvQWh3UkF3QWhEZ3NnRUVFQmFpRUlRUUFoRVNBSklRY2dBaUVCQTBBZ0FTQURSZ1JBSUFnaEVDQVJSUTBDSUFBUWlRSWFJQWtoQnlBQ0lRRWdDeUFNYWtFQ1NRMENBMEFnQVNBRFJnUkFEQVFGQWtBZ0J5MEFBRUVDUncwQUlCQWdBU2dDQkNBQkxRQUxJZ2hCL3dCeElBaEJnQUZ4UVFkMkcwWU5BQ0FIUVFBNkFBQWdERUVCYXlFTUN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FCUUpBSUFjdEFBQkJBVWNOQUNBUVFRSjBJQUVvQWdBZ0FTQUJMUUFMUVlBQmNVRUhkaHRxS0FJQUlROENRQ0FHQkg4Z0R3VWdCQ0FQSUFRb0FnQW9BaHdSQXdBTElBNUdCRUJCQVNFUklBZ2dBU2dDQkNBQkxRQUxJZzlCL3dCeElBOUJnQUZ4UVFkMkcwY05BaUFIUVFJNkFBQWdERUVCYWlFTURBRUxJQWRCQURvQUFBc2dDMEVCYXlFTEN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FDd0FGSUFkQkFrRUJJQUVvQWdRZ0FTMEFDeUlJUWY4QWNTQUlRWUFCY1VFSGRodEZJZ2diT2dBQUlBZ2dER29oRENBTElBaHJJUXNnQjBFQmFpRUhJQUZCREdvaEFRd0JDd0FMQUFzUTFRRUFDd0pBQWtBRFFDQUNJQU5HRFFFZ0NTMEFBRUVDUndSQUlBbEJBV29oQ1NBQ1FReHFJUUlNQVFzTElBSWhBd3dCQ3lBRklBVW9BZ0JCQkhJMkFnQUxJQTBpQUNnQ0FDRUJJQUJCQURZQ0FDQUJCRUFnQVNBQUtBSUVFUUVBQ3lBS1FZQUJhaVFBSUFNTElBQWdBQzBBQzBHQUFYRkJCM1lFUUNBQUtBSUlHaUFBS0FJQUVEUUxJQUFMNmdRQkEzOGpBRUhRQW1zaUJpUUFJQVlnQWpZQ3lBSWdCaUFCTmdMTUFpQURLQUlFRU1NQ0lRY2dBeWdDSENBR1FkQUJhaERsQWlFQ0lBWkJ4QUZxSUFNb0Fod2dCa0hFQW1vUTVnSWdCa0c0QVdvaUFFSUFOd0lBSUFCQkFEWUNDQ0FBSUFBdEFBdEJnQUZ4UVFkMkJIOGdBQ2dDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSThDSUFZZ0FDZ0NBQ0FBSUFBdEFBdEJnQUZ4UVFkMkd5SUROZ0swQVNBR0lBWkJFR28yQWd3Z0JrRUFOZ0lJQTBBQ1FDQUdRY3dDYWlBR1FjZ0NhaENIQWcwQUlBWW9BclFCSUFNZ0FDZ0NCQ0FBTFFBTElnRkIvd0J4SUFGQmdBRnhRUWQyR3lJQmFrWUVRQ0FBSUFGQkFYUVFqd0lnQUNBQUxRQUxRWUFCY1VFSGRnUi9JQUFvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENQQWlBR0lBQW9BZ0FnQUNBQUxRQUxRWUFCY1VFSGRoc2lBeUFCYWpZQ3RBRUxBbjhnQmlnQ3pBSWlBU2dDRENJSUlBRW9BaEJHQkVBZ0FTQUJLQUlBS0FJa0VRQUFEQUVMSUFnb0FnQUxJQWNnQXlBR1FiUUJhaUFHUVFocUlBWW9Bc1FDSUFZb0FzZ0JJQVl0QU04QklBWkJFR29nQmtFTWFpQUNFT2NDRFFBZ0JrSE1BbW9RaVFJYURBRUxDeUFHS0FJTUlRSUNRQUpBSUFZb0FzZ0JJQVl0QU04QklnRkIvd0J4SUFGQmdBRnhRUWQyRzBVTkFDQUNJQVpCRUdwclFaOEJTZzBBSUFZZ0FrRUVhaUlCTmdJTUlBSWdCaWdDQ0RZQ0FBd0JDeUFDSVFFTElBVWdBeUFHS0FLMEFTQUVJQWNReGdJMkFnQWdCa0hFQVdvZ0JrRVFhaUFCSUFRUXh3SWdCa0hNQW1vZ0JrSElBbW9RaHdJRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFZb0Fzd0NJUUVnQUJDL0Fob2dCa0hFQVdvUXZ3SWFJQVpCMEFKcUpBQWdBUXR6QVFKL0l3QkJFR3NpQWlRQUlBSWdBRFlDRENBQUlBQW9BZ1JCQVdvMkFnUWdBaWdDREJDR0FpSUFRWkM1RTBHcXVSTWdBU0FBS0FJQUtBSXdFUVlBR2lBQ0tBSU1JZ0FnQUNnQ0JFRUJheUlETmdJRUlBTkJmMFlFUUNBQUlBQW9BZ0FvQWdnUkFRQUxJQUpCRUdva0FDQUJDM29CQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lNSUFFZ0FTZ0NCRUVCYWpZQ0JDQUNJQU1vQWd3UTRRSWlBU0FCS0FJQUtBSVFFUUFBTmdJQUlBQWdBU0FCS0FJQUtBSVVFUUlBSUFNb0Fnd2lBQ0FBS0FJRVFRRnJJZ0UyQWdRZ0FVRi9SZ1JBSUFBZ0FDZ0NBQ2dDQ0JFQkFBc2dBMEVRYWlRQUM5d0NBUUovQWtBQ1FDQURLQUlBSWdzZ0FrY05BRUVySVF3Z0FDQUtLQUpnUndSQVFTMGhEQ0FLS0FKa0lBQkhEUUVMSUFNZ0FrRUJhallDQUNBQ0lBdzZBQUFNQVFzQ1FBSkFJQVlnQjBIL0FIRWdCMEdBQVhGQkIzWWJSUTBBSUFBZ0JVY05BRUVBSVFjZ0NTZ0NBQ0lBSUFoclFaOEJTZzBCSUFRb0FnQWhBU0FKSUFCQkJHbzJBZ0FnQUNBQk5nSUFEQUlMUVg4aEJ5QUtJQXBCNkFCcUlBQVE2QUlnQ21zaUJVSGNBRW9OQUNBRlFRSjFJUUFDUUFKQUFrQWdBVUVJYXc0REFBSUFBUXNnQUNBQlNBMEJEQUlMSUFGQkVFY05BQ0FGUWRnQVNBMEFJQUlnQzBZTkFTQUxJQUpyUVFKS0RRRWdDMEVCYXkwQUFFRXdSdzBCSUFSQkFEWUNBQ0FESUF0QkFXbzJBZ0FnQ3lBQVFaQzVFMm90QUFBNkFBQkJBQThMSUFNZ0MwRUJhallDQUNBTElBQkJrTGtUYWkwQUFEb0FBQ0FFSUFRb0FnQkJBV28yQWdCQkFDRUhDeUFIRHdzZ0JFRUFOZ0lBUVFBTEtnQURRQUpBSUFBZ0FVY0VmeUFBS0FJQUlBSkhEUUVnQUFVZ0FRc1BDeUFBUVFScUlRQU1BQXNBQytvRUFRTi9Jd0JCMEFKcklnWWtBQ0FHSUFJMkFzZ0NJQVlnQVRZQ3pBSWdBeWdDQkJEREFpRUhJQU1vQWh3Z0JrSFFBV29RNVFJaEFpQUdRY1FCYWlBREtBSWNJQVpCeEFKcUVPWUNJQVpCdUFGcUlnQkNBRGNDQUNBQVFRQTJBZ2dnQUNBQUxRQUxRWUFCY1VFSGRnUi9JQUFvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENQQWlBR0lBQW9BZ0FnQUNBQUxRQUxRWUFCY1VFSGRoc2lBellDdEFFZ0JpQUdRUkJxTmdJTUlBWkJBRFlDQ0FOQUFrQWdCa0hNQW1vZ0JrSElBbW9RaHdJTkFDQUdLQUswQVNBRElBQW9BZ1FnQUMwQUN5SUJRZjhBY1NBQlFZQUJjVUVIZGhzaUFXcEdCRUFnQUNBQlFRRjBFSThDSUFBZ0FDMEFDMEdBQVhGQkIzWUVmeUFBS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRandJZ0JpQUFLQUlBSUFBZ0FDMEFDMEdBQVhGQkIzWWJJZ01nQVdvMkFyUUJDd0ovSUFZb0Fzd0NJZ0VvQWd3aUNDQUJLQUlRUmdSQUlBRWdBU2dDQUNnQ0pCRUFBQXdCQ3lBSUtBSUFDeUFISUFNZ0JrRzBBV29nQmtFSWFpQUdLQUxFQWlBR0tBTElBU0FHTFFEUEFTQUdRUkJxSUFaQkRHb2dBaERuQWcwQUlBWkJ6QUpxRUlrQ0dnd0JDd3NnQmlnQ0RDRUNBa0FDUUNBR0tBTElBU0FHTFFEUEFTSUJRZjhBY1NBQlFZQUJjVUVIZGh0RkRRQWdBaUFHUVJCcWEwR2ZBVW9OQUNBR0lBSkJCR29pQVRZQ0RDQUNJQVlvQWdnMkFnQU1BUXNnQWlFQkN5QUZJQU1nQmlnQ3RBRWdCQ0FIRU0wQ053TUFJQVpCeEFGcUlBWkJFR29nQVNBRUVNY0NJQVpCekFKcUlBWkJ5QUpxRUljQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBR0tBTE1BaUVCSUFBUXZ3SWFJQVpCeEFGcUVMOENHaUFHUWRBQ2FpUUFJQUVMNmdRQkEzOGpBRUhRQW1zaUJpUUFJQVlnQWpZQ3lBSWdCaUFCTmdMTUFpQURLQUlFRU1NQ0lRY2dBeWdDSENBR1FkQUJhaERsQWlFQ0lBWkJ4QUZxSUFNb0Fod2dCa0hFQW1vUTVnSWdCa0c0QVdvaUFFSUFOd0lBSUFCQkFEWUNDQ0FBSUFBdEFBdEJnQUZ4UVFkMkJIOGdBQ2dDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSThDSUFZZ0FDZ0NBQ0FBSUFBdEFBdEJnQUZ4UVFkMkd5SUROZ0swQVNBR0lBWkJFR28yQWd3Z0JrRUFOZ0lJQTBBQ1FDQUdRY3dDYWlBR1FjZ0NhaENIQWcwQUlBWW9BclFCSUFNZ0FDZ0NCQ0FBTFFBTElnRkIvd0J4SUFGQmdBRnhRUWQyR3lJQmFrWUVRQ0FBSUFGQkFYUVFqd0lnQUNBQUxRQUxRWUFCY1VFSGRnUi9JQUFvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENQQWlBR0lBQW9BZ0FnQUNBQUxRQUxRWUFCY1VFSGRoc2lBeUFCYWpZQ3RBRUxBbjhnQmlnQ3pBSWlBU2dDRENJSUlBRW9BaEJHQkVBZ0FTQUJLQUlBS0FJa0VRQUFEQUVMSUFnb0FnQUxJQWNnQXlBR1FiUUJhaUFHUVFocUlBWW9Bc1FDSUFZb0FzZ0JJQVl0QU04QklBWkJFR29nQmtFTWFpQUNFT2NDRFFBZ0JrSE1BbW9RaVFJYURBRUxDeUFHS0FJTUlRSUNRQUpBSUFZb0FzZ0JJQVl0QU04QklnRkIvd0J4SUFGQmdBRnhRUWQyRzBVTkFDQUNJQVpCRUdwclFaOEJTZzBBSUFZZ0FrRUVhaUlCTmdJTUlBSWdCaWdDQ0RZQ0FBd0JDeUFDSVFFTElBVWdBeUFHS0FLMEFTQUVJQWNRendJN0FRQWdCa0hFQVdvZ0JrRVFhaUFCSUFRUXh3SWdCa0hNQW1vZ0JrSElBbW9RaHdJRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFZb0Fzd0NJUUVnQUJDL0Fob2dCa0hFQVdvUXZ3SWFJQVpCMEFKcUpBQWdBUXZxQkFFRGZ5TUFRZEFDYXlJR0pBQWdCaUFDTmdMSUFpQUdJQUUyQXN3Q0lBTW9BZ1FRd3dJaEJ5QURLQUljSUFaQjBBRnFFT1VDSVFJZ0JrSEVBV29nQXlnQ0hDQUdRY1FDYWhEbUFpQUdRYmdCYWlJQVFnQTNBZ0FnQUVFQU5nSUlJQUFnQUMwQUMwR0FBWEZCQjNZRWZ5QUFLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1Fqd0lnQmlBQUtBSUFJQUFnQUMwQUMwR0FBWEZCQjNZYklnTTJBclFCSUFZZ0JrRVFhallDRENBR1FRQTJBZ2dEUUFKQUlBWkJ6QUpxSUFaQnlBSnFFSWNDRFFBZ0JpZ0N0QUVnQXlBQUtBSUVJQUF0QUFzaUFVSC9BSEVnQVVHQUFYRkJCM1liSWdGcVJnUkFJQUFnQVVFQmRCQ1BBaUFBSUFBdEFBdEJnQUZ4UVFkMkJIOGdBQ2dDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSThDSUFZZ0FDZ0NBQ0FBSUFBdEFBdEJnQUZ4UVFkMkd5SURJQUZxTmdLMEFRc0NmeUFHS0FMTUFpSUJLQUlNSWdnZ0FTZ0NFRVlFUUNBQklBRW9BZ0FvQWlRUkFBQU1BUXNnQ0NnQ0FBc2dCeUFESUFaQnRBRnFJQVpCQ0dvZ0JpZ0N4QUlnQmlnQ3lBRWdCaTBBendFZ0JrRVFhaUFHUVF4cUlBSVE1d0lOQUNBR1Fjd0NhaENKQWhvTUFRc0xJQVlvQWd3aEFnSkFBa0FnQmlnQ3lBRWdCaTBBendFaUFVSC9BSEVnQVVHQUFYRkJCM1liUlEwQUlBSWdCa0VRYW10Qm53RktEUUFnQmlBQ1FRUnFJZ0UyQWd3Z0FpQUdLQUlJTmdJQURBRUxJQUloQVFzZ0JTQURJQVlvQXJRQklBUWdCeERTQWpZQ0FDQUdRY1FCYWlBR1FSQnFJQUVnQkJESEFpQUdRY3dDYWlBR1FjZ0NhaENIQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQmlnQ3pBSWhBU0FBRUw4Q0dpQUdRY1FCYWhDL0Fob2dCa0hRQW1va0FDQUJDK29FQVFOL0l3QkIwQUpySWdZa0FDQUdJQUkyQXNnQ0lBWWdBVFlDekFJZ0F5Z0NCQkREQWlFSElBTW9BaHdnQmtIUUFXb1E1UUloQWlBR1FjUUJhaUFES0FJY0lBWkJ4QUpxRU9ZQ0lBWkJ1QUZxSWdCQ0FEY0NBQ0FBUVFBMkFnZ2dBQ0FBTFFBTFFZQUJjVUVIZGdSL0lBQW9BZ2hCLy8vLy93ZHhRUUZyQlVFS0N4Q1BBaUFHSUFBb0FnQWdBQ0FBTFFBTFFZQUJjVUVIZGhzaUF6WUN0QUVnQmlBR1FSQnFOZ0lNSUFaQkFEWUNDQU5BQWtBZ0JrSE1BbW9nQmtISUFtb1Fod0lOQUNBR0tBSzBBU0FESUFBb0FnUWdBQzBBQ3lJQlFmOEFjU0FCUVlBQmNVRUhkaHNpQVdwR0JFQWdBQ0FCUVFGMEVJOENJQUFnQUMwQUMwR0FBWEZCQjNZRWZ5QUFLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1Fqd0lnQmlBQUtBSUFJQUFnQUMwQUMwR0FBWEZCQjNZYklnTWdBV28yQXJRQkN3Si9JQVlvQXN3Q0lnRW9BZ3dpQ0NBQktBSVFSZ1JBSUFFZ0FTZ0NBQ2dDSkJFQUFBd0JDeUFJS0FJQUN5QUhJQU1nQmtHMEFXb2dCa0VJYWlBR0tBTEVBaUFHS0FMSUFTQUdMUURQQVNBR1FSQnFJQVpCREdvZ0FoRG5BZzBBSUFaQnpBSnFFSWtDR2d3QkN3c2dCaWdDRENFQ0FrQUNRQ0FHS0FMSUFTQUdMUURQQVNJQlFmOEFjU0FCUVlBQmNVRUhkaHRGRFFBZ0FpQUdRUkJxYTBHZkFVb05BQ0FHSUFKQkJHb2lBVFlDRENBQ0lBWW9BZ2cyQWdBTUFRc2dBaUVCQ3lBRklBTWdCaWdDdEFFZ0JDQUhFTlFDTndNQUlBWkJ4QUZxSUFaQkVHb2dBU0FFRU1jQ0lBWkJ6QUpxSUFaQnlBSnFFSWNDQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFHS0FMTUFpRUJJQUFRdndJYUlBWkJ4QUZxRUw4Q0dpQUdRZEFDYWlRQUlBRUxpUVVCQTM4Z0F5Z0NIQ0VBSXdCQjhBSnJJZ01rQUNBRElBSTJBdWdDSUFNZ0FUWUM3QUlnQTBITUFXb2dBQ0FEUWVBQmFpQURRZHdCYWlBRFFkZ0JhaER1QWlBRFFjQUJhaUlDUWdBM0FnQWdBa0VBTmdJSUlBSWdBaTBBQzBHQUFYRkJCM1lFZnlBQ0tBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUWp3SWdBeUFDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSWdZMkFyd0JJQU1nQTBFUWFqWUNEQ0FEUVFBMkFnZ2dBMEVCT2dBSElBTkJ4UUE2QUFZZ0F5Z0MyQUVoQVNBREtBTGNBU0VIQTBBQ1FDQURRZXdDYWlBRFFlZ0NhaENIQWcwQUlBTW9BcndCSUFZZ0FpZ0NCQ0FDTFFBTElnQkIvd0J4SUFCQmdBRnhRUWQyR3lJQWFrWUVRQ0FDSUFCQkFYUVFqd0lnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENQQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCaUFBYWpZQ3ZBRUxBbjhnQXlnQzdBSWlBQ2dDRENJSUlBQW9BaEJHQkVBZ0FDQUFLQUlBS0FJa0VRQUFEQUVMSUFnb0FnQUxJQU5CQjJvZ0EwRUdhaUFHSUFOQnZBRnFJQWNnQVNBRFFjd0JhaUFEUVJCcUlBTkJER29nQTBFSWFpQURRZUFCYWhEdkFnMEFJQU5CN0FKcUVJa0NHZ3dCQ3dzZ0F5Z0NEQ0VBQWtBQ1FDQURLQUxRQVNBRExRRFhBU0lCUWY4QWNTQUJRWUFCY1VFSGRodEZEUUFnQXkwQUIwVU5BQ0FBSUFOQkVHcHJRWjhCU2cwQUlBTWdBRUVFYWlJQk5nSU1JQUFnQXlnQ0NEWUNBQXdCQ3lBQUlRRUxJQVVnQmlBREtBSzhBU0FFRU5nQ09BSUFJQU5CekFGcUlBTkJFR29nQVNBRUVNY0NJQU5CN0FKcUlBTkI2QUpxRUljQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBREtBTHNBaUVBSUFJUXZ3SWFJQU5CekFGcUVMOENHaUFEUWZBQ2FpUUFJQUFMckFFQkFYOGpBRUVRYXlJRkpBQWdCU0FCTmdJTUlBRWdBU2dDQkVFQmFqWUNCQ0FGS0FJTUVJWUNJZ0ZCa0xrVFFiQzVFeUFDSUFFb0FnQW9BakFSQmdBYUlBTWdCU2dDREJEaEFpSUJJQUVvQWdBb0Fnd1JBQUEyQWdBZ0JDQUJJQUVvQWdBb0FoQVJBQUEyQWdBZ0FDQUJJQUVvQWdBb0FoUVJBZ0FnQlNnQ0RDSUFJQUFvQWdSQkFXc2lBVFlDQkNBQlFYOUdCRUFnQUNBQUtBSUFLQUlJRVFFQUN5QUZRUkJxSkFBTHhnUUFBa0FDUUNBQUlBVkdCRUFnQVMwQUFFVU5Ba0VBSVFVZ0FVRUFPZ0FBSUFRZ0JDZ0NBQ0lBUVFGcU5nSUFJQUJCTGpvQUFDQUhLQUlFSUFjdEFBc2lBRUgvQUhFZ0FFR0FBWEZCQjNZYlJRMEJJQWtvQWdBaUFDQUlhMEdmQVVvTkFTQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUVFQUR3c0NRQ0FBSUFaSERRQWdCeWdDQkNBSExRQUxJZ1ZCL3dCeElBVkJnQUZ4UVFkMkcwVU5BQ0FCTFFBQVJRMENRUUFoQlNBSktBSUFJZ0FnQ0d0Qm53RktEUUVnQ2lnQ0FDRUJJQWtnQUVFRWFqWUNBQ0FBSUFFMkFnQWdDa0VBTmdJQVFRQVBDMEYvSVFVZ0N5QUxRWUFCYWlBQUVPZ0NJQXRySWd0Qi9BQktEUUFnQzBFQ2RVR1F1Uk5xTEFBQUlRWUNRQUpBSUF0QmUzRWlBRUhZQUVjRVFDQUFRZUFBUncwQklBTWdCQ2dDQUNJQVJ3UkFJQUJCQVdzc0FBQWlBVUhmQUhFZ0FTQUJRZUVBYTBFYVNSc2dBaXdBQUNJQlFkOEFjU0FCSUFGQjRRQnJRUnBKRzBjTkJBc2dCQ0FBUVFGcU5nSUFJQUFnQmpvQUFFRUFEd3NnQWtIUUFEb0FBQXdCQ3lBR1FkOEFjU0FHSUFaQjRRQnJRUnBKR3lJQUlBSXNBQUJIRFFBZ0FpQUFRU0J5SUFBZ0FFSEJBR3RCR2trYk9nQUFJQUV0QUFCRkRRQWdBVUVBT2dBQUlBY29BZ1FnQnkwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGh0RkRRQWdDU2dDQUNJQUlBaHJRWjhCU2cwQUlBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBQ3lBRUlBUW9BZ0FpQUVFQmFqWUNBQ0FBSUFZNkFBQkJBQ0VGSUF0QjFBQktEUUFnQ2lBS0tBSUFRUUZxTmdJQUN5QUZEd3RCZnd1SkJRRURmeUFES0FJY0lRQWpBRUh3QW1zaUF5UUFJQU1nQWpZQzZBSWdBeUFCTmdMc0FpQURRY3dCYWlBQUlBTkI0QUZxSUFOQjNBRnFJQU5CMkFGcUVPNENJQU5Cd0FGcUlnSkNBRGNDQUNBQ1FRQTJBZ2dnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENQQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCallDdkFFZ0F5QURRUkJxTmdJTUlBTkJBRFlDQ0NBRFFRRTZBQWNnQTBIRkFEb0FCaUFES0FMWUFTRUJJQU1vQXR3QklRY0RRQUpBSUFOQjdBSnFJQU5CNkFKcUVJY0NEUUFnQXlnQ3ZBRWdCaUFDS0FJRUlBSXRBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJJZ0JxUmdSQUlBSWdBRUVCZEJDUEFpQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVJOENJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR0lBQnFOZ0s4QVFzQ2Z5QURLQUxzQWlJQUtBSU1JZ2dnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaVFSQUFBTUFRc2dDQ2dDQUFzZ0EwRUhhaUFEUVFacUlBWWdBMEc4QVdvZ0J5QUJJQU5CekFGcUlBTkJFR29nQTBFTWFpQURRUWhxSUFOQjRBRnFFTzhDRFFBZ0EwSHNBbW9RaVFJYURBRUxDeUFES0FJTUlRQUNRQUpBSUFNb0F0QUJJQU10QU5jQklnRkIvd0J4SUFGQmdBRnhRUWQyRzBVTkFDQURMUUFIUlEwQUlBQWdBMEVRYW10Qm53RktEUUFnQXlBQVFRUnFJZ0UyQWd3Z0FDQURLQUlJTmdJQURBRUxJQUFoQVFzZ0JTQUdJQU1vQXJ3QklBUVEyZ0k1QXdBZ0EwSE1BV29nQTBFUWFpQUJJQVFReHdJZ0EwSHNBbW9nQTBIb0Ftb1Fod0lFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQU1vQXV3Q0lRQWdBaEMvQWhvZ0EwSE1BV29RdndJYUlBTkI4QUpxSkFBZ0FBdWdCUUlEZndGK0lBTW9BaHdoQUNNQVFZQURheUlESkFBZ0F5QUNOZ0w0QWlBRElBRTJBdndDSUFOQjNBRnFJQUFnQTBId0FXb2dBMEhzQVdvZ0EwSG9BV29RN2dJZ0EwSFFBV29pQWtJQU53SUFJQUpCQURZQ0NDQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVJOENJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR05nTE1BU0FESUFOQklHbzJBaHdnQTBFQU5nSVlJQU5CQVRvQUZ5QURRY1VBT2dBV0lBTW9BdWdCSVFFZ0F5Z0M3QUVoQndOQUFrQWdBMEg4QW1vZ0EwSDRBbW9RaHdJTkFDQURLQUxNQVNBR0lBSW9BZ1FnQWkwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGhzaUFHcEdCRUFnQWlBQVFRRjBFSThDSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRandJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1lnQUdvMkFzd0JDd0ovSUFNb0F2d0NJZ0FvQWd3aUNDQUFLQUlRUmdSQUlBQWdBQ2dDQUNnQ0pCRUFBQXdCQ3lBSUtBSUFDeUFEUVJkcUlBTkJGbW9nQmlBRFFjd0JhaUFISUFFZ0EwSGNBV29nQTBFZ2FpQURRUnhxSUFOQkdHb2dBMEh3QVdvUTd3SU5BQ0FEUWZ3Q2FoQ0pBaG9NQVFzTElBTW9BaHdoQUFKQUFrQWdBeWdDNEFFZ0F5MEE1d0VpQVVIL0FIRWdBVUdBQVhGQkIzWWJSUTBBSUFNdEFCZEZEUUFnQUNBRFFTQnFhMEdmQVVvTkFDQURJQUJCQkdvaUFUWUNIQ0FBSUFNb0FoZzJBZ0FNQVFzZ0FDRUJDeUFESUFZZ0F5Z0N6QUVnQkJEY0FpQURLUU1BSVFrZ0JTQURLUU1JTndNSUlBVWdDVGNEQUNBRFFkd0JhaUFEUVNCcUlBRWdCQkRIQWlBRFFmd0NhaUFEUWZnQ2FoQ0hBZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBeWdDL0FJaEFDQUNFTDhDR2lBRFFkd0JhaEMvQWhvZ0EwR0FBMm9rQUNBQUM0c0ZBUUovSXdCQndBSnJJZ0FrQUNBQUlBSTJBcmdDSUFBZ0FUWUN2QUlnQUVIRUFXb2lCMElBTndJQUlBZEJBRFlDQ0NBQVFSQnFJZ1lnQXlnQ0hDSUJOZ0lBSUFFZ0FTZ0NCRUVCYWpZQ0JDQUFLQUlRRUlZQ0lnRkJrTGtUUWFxNUV5QUFRZEFCYWlBQktBSUFLQUl3RVFZQUdpQUFLQUlRSWdFZ0FTZ0NCRUVCYXlJQ05nSUVJQUpCZjBZRVFDQUJJQUVvQWdBb0FnZ1JBUUFMSUFCQnVBRnFJZ0pDQURjQ0FDQUNRUUEyQWdnZ0FpQUNMUUFMUVlBQmNVRUhkZ1IvSUFJb0FnaEIvLy8vL3dkeFFRRnJCVUVLQ3hDUEFpQUFJQUlvQWdBZ0FpQUNMUUFMUVlBQmNVRUhkaHNpQXpZQ3RBRWdBQ0FHTmdJTUlBQkJBRFlDQ0NBRElRRURRQUpBSUFJZ0FFRzhBbW9nQUVHNEFtb1Fod0lFZnlBREJTQURJQUVnQWlnQ0JDQUNMUUFMSWdaQi93QnhJQVpCZ0FGeFFRZDJHeUlHYWtZRVFDQUNJQVpCQVhRUWp3SWdBaUFDTFFBTFFZQUJjVUVIZGdSL0lBSW9BZ2hCLy8vLy93ZHhRUUZyQlVFS0N4Q1BBaUFBSUFJb0FnQWdBaUFDTFFBTFFZQUJjVUVIZGhzaUFTQUdhallDdEFFTEFuOGdBQ2dDdkFJaUF5Z0NEQ0lHSUFNb0FoQkdCRUFnQXlBREtBSUFLQUlrRVFBQURBRUxJQVlvQWdBTFFSQWdBU0FBUWJRQmFpQUFRUWhxUVFBZ0J5Z0NCQ0FITFFBTElBQkJFR29nQUVFTWFpQUFRZEFCYWhEbkFrVU5BU0FBS0FLMEFRc2dBV3NRandJZ0FpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5RUJFTWtDSVFNZ0FDQUZOZ0lBSUFFZ0F5QUFFTjRDUVFGSEJFQWdCRUVFTmdJQUN5QUFRYndDYWlBQVFiZ0NhaENIQWdSQUlBUWdCQ2dDQUVFQ2NqWUNBQXNnQUNnQ3ZBSWhBU0FDRUw4Q0dpQUhFTDhDR2lBQVFjQUNhaVFBSUFFUEN5QUFRYndDYWhDSkFob2dBQ2dDdEFFaEF3d0FDd0FMa3dJQkFYOGpBRUVnYXlJRkpBQWdCU0FCTmdJY0FrQWdBaTBBQkVFQmNVVUVRQ0FBSUFFZ0FpQURJQVFnQUNnQ0FDZ0NHQkVIQUNFQ0RBRUxJQVVnQWlnQ0hDSUFOZ0lRSUFBZ0FDZ0NCRUVCYWpZQ0JDQUZLQUlRRUwwQ0lRQWdCU2dDRUNJQklBRW9BZ1JCQVdzaUFqWUNCQ0FDUVg5R0JFQWdBU0FCS0FJQUtBSUlFUUVBQ3dKQUlBUUVRQ0FGUVJCcUlBQWdBQ2dDQUNnQ0dCRUNBQXdCQ3lBRlFSQnFJQUFnQUNnQ0FDZ0NIQkVDQUFzZ0JTQUZRUkJxRVBRQ05nSU1BMEFnQlVFUWFoRDFBaUVBSUFBZ0JTZ0NEQ0lCUndSQUlBVkJIR29nQVN3QUFCRDlBU0FGSUFVb0FneEJBV28yQWd3TUFRVWdCU2dDSENFQ0lBVkJFR29RdndJYUN3c0xJQVZCSUdva0FDQUNDem9CQVg4Z0FDZ0NBQ0FBSUFBdEFBdEJnQUZ4UVFkMkd5RUJJd0JCRUdzaUFDUUFJQUFnQVRZQ0RDQUFLQUlNSVFFZ0FFRVFhaVFBSUFFTFZBRUJmeUFBS0FJQUlBQWdBQzBBQ3lJQlFZQUJjVUVIZGhzZ0FDZ0NCQ0FCSWdCQi93QnhJQUJCZ0FGeFFRZDJHMm9oQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNnQ0RDRUJJQUJCRUdva0FDQUJDOTRCQVFSL0l3QkJRR29pQUNRQUlBQkNKVGNET0NBQVFUaHFJZ1ZCQVhKQnNia1RRUUVnQWlnQ0JCRDNBaERKQWlFR0lBQWdCRFlDQUNBQVFTdHFJZ1FnQkVFTklBWWdCU0FBRVBnQ0lBUnFJZ2NnQWlnQ0JCRDVBaUVJSUFCQkJHb2lCU0FDS0FJY0lnWTJBZ0FnQmlBR0tBSUVRUUZxTmdJRUlBUWdDQ0FISUFCQkVHb2lCaUFBUVF4cUlBQkJDR29nQlJENkFpQUZLQUlBSWdRZ0JDZ0NCRUVCYXlJRk5nSUVJQVZCZjBZRVFDQUVJQVFvQWdBb0FnZ1JBUUFMSUFFZ0JpQUFLQUlNSUFBb0FnZ2dBaUFERUtrQklRRWdBRUZBYXlRQUlBRUxyQUVCQVg4Q1FDQURRWUFRY1VVTkFDQURRY29BY1NJRVFRaEdEUUFnQkVIQUFFWU5BQ0FDUlEwQUlBQkJLem9BQUNBQVFRRnFJUUFMSUFOQmdBUnhCRUFnQUVFak9nQUFJQUJCQVdvaEFBc0RRQ0FCTFFBQUlnUUVRQ0FBSUFRNkFBQWdBRUVCYWlFQUlBRkJBV29oQVF3QkN3c2dBQUovUWU4QUlBTkJ5Z0J4SWdGQndBQkdEUUFhUWRnQVFmZ0FJQU5CZ0lBQmNSc2dBVUVJUmcwQUdrSGtBRUgxQUNBQ0d3czZBQUFMWXdFQmZ5TUFRUkJySWdVa0FDQUZJQVEyQWd3Z0JVRUlhaUFDRU44Q0lRSWdBQ0FCSUFNZ0JTZ0NEQkRSQVNFQklBSW9BZ0FpQUFSQVFjeVpGQ2dDQUJvZ0FBUkFRY3laRkVIY29oUWdBQ0FBUVg5R0d6WUNBQXNMSUFWQkVHb2tBQ0FCQzJFQUlBSkJzQUZ4SWdKQklFWUVRQ0FCRHdzQ1FDQUNRUkJIRFFBQ1FBSkFJQUF0QUFBaUFrRXJhdzREQUFFQUFRc2dBRUVCYWc4TElBRWdBR3RCQWtnTkFDQUNRVEJIRFFBZ0FDMEFBVUVnY2tINEFFY05BQ0FBUVFKcUlRQUxJQUFMN2dRQkNIOGpBRUVRYXlJTEpBQWdCaWdDQUJEekFTRUtJQXRCQkdvZ0JpZ0NBQkM5QWlJR0lBWW9BZ0FvQWhRUkFnQUNRQ0FMS0FJSUlBc3RBQThpQjBIL0FIRWdCMEdBQVhGQkIzWWJSUVJBSUFvZ0FDQUNJQU1nQ2lnQ0FDZ0NJQkVHQUJvZ0JTQURJQUlnQUd0cUlnWTJBZ0FNQVFzZ0JTQUROZ0lBQWtBQ1FDQUFJZ2N0QUFBaUNFRXJhdzREQUFFQUFRc2dDaUFJd0NBS0tBSUFLQUljRVFNQUlRY2dCU0FGS0FJQUlnaEJBV28yQWdBZ0NDQUhPZ0FBSUFCQkFXb2hCd3NDUUNBQ0lBZHJRUUpJRFFBZ0J5MEFBRUV3UncwQUlBY3RBQUZCSUhKQitBQkhEUUFnQ2tFd0lBb29BZ0FvQWh3UkF3QWhDQ0FGSUFVb0FnQWlDVUVCYWpZQ0FDQUpJQWc2QUFBZ0NpQUhMQUFCSUFvb0FnQW9BaHdSQXdBaENDQUZJQVVvQWdBaUNVRUJhallDQUNBSklBZzZBQUFnQjBFQ2FpRUhDeUFISUFJUSt3SkJBQ0VKSUFZZ0JpZ0NBQ2dDRUJFQUFDRU5RUUFoQ0NBSElRWURmeUFDSUFaTkJIOGdBeUFISUFCcmFpQUZLQUlBRVBzQ0lBVW9BZ0FGQWtBZ0NDQUxRUVJxSWd3b0FnQWdEQ0FNTFFBTFFZQUJjVUVIZGh0cUxRQUFSUTBBSUFrZ0NDQUxRUVJxSWd3b0FnQWdEQ0FNTFFBTFFZQUJjVUVIZGh0cUxBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFGcU5nSUFJQWtnRFRvQUFDQUlJQWdnQ3lnQ0NDQUxMUUFQSWdsQi93QnhJQWxCZ0FGeFFRZDJHMEVCYTBscUlRaEJBQ0VKQ3lBS0lBWXNBQUFnQ2lnQ0FDZ0NIQkVEQUNFTUlBVWdCU2dDQUNJT1FRRnFOZ0lBSUE0Z0REb0FBQ0FHUVFGcUlRWWdDVUVCYWlFSkRBRUxDeUVHQ3lBRUlBWWdBeUFCSUFCcmFpQUJJQUpHR3pZQ0FDQUxRUVJxRUw4Q0dpQUxRUkJxSkFBTFB3RUJmd0pBSUFBZ0FVWU5BQU5BSUFBZ0FVRUJheUlCVHcwQklBQXRBQUFoQWlBQUlBRXRBQUE2QUFBZ0FTQUNPZ0FBSUFCQkFXb2hBQXdBQ3dBTEMrRUJBUVYvSXdCQjhBQnJJZ0FrQUNBQVFpVTNBMmdnQUVIb0FHb2lCa0VCY2tIRlBrRUJJQUlvQWdRUTl3SVF5UUloQnlBQUlBUTNBd0FnQUVIUUFHb2lCU0FGUVJnZ0J5QUdJQUFRK0FJZ0JXb2lDQ0FDS0FJRUVQa0NJUWtnQUVFVWFpSUdJQUlvQWh3aUJ6WUNBQ0FISUFjb0FnUkJBV28yQWdRZ0JTQUpJQWdnQUVFZ2FpSUhJQUJCSEdvZ0FFRVlhaUFHRVBvQ0lBWW9BZ0FpQlNBRktBSUVRUUZySWdZMkFnUWdCa0YvUmdSQUlBVWdCU2dDQUNnQ0NCRUJBQXNnQVNBSElBQW9BaHdnQUNnQ0dDQUNJQU1RcVFFaEFTQUFRZkFBYWlRQUlBRUwzZ0VCQkg4akFFRkFhaUlBSkFBZ0FFSWxOd000SUFCQk9Hb2lCVUVCY2tHeHVSTkJBQ0FDS0FJRUVQY0NFTWtDSVFZZ0FDQUVOZ0lBSUFCQksyb2lCQ0FFUVEwZ0JpQUZJQUFRK0FJZ0JHb2lCeUFDS0FJRUVQa0NJUWdnQUVFRWFpSUZJQUlvQWh3aUJqWUNBQ0FHSUFZb0FnUkJBV28yQWdRZ0JDQUlJQWNnQUVFUWFpSUdJQUJCREdvZ0FFRUlhaUFGRVBvQ0lBVW9BZ0FpQkNBRUtBSUVRUUZySWdVMkFnUWdCVUYvUmdSQUlBUWdCQ2dDQUNnQ0NCRUJBQXNnQVNBR0lBQW9BZ3dnQUNnQ0NDQUNJQU1RcVFFaEFTQUFRVUJySkFBZ0FRdmhBUUVGZnlNQVFmQUFheUlBSkFBZ0FFSWxOd05vSUFCQjZBQnFJZ1pCQVhKQnhUNUJBQ0FDS0FJRUVQY0NFTWtDSVFjZ0FDQUVOd01BSUFCQjBBQnFJZ1VnQlVFWUlBY2dCaUFBRVBnQ0lBVnFJZ2dnQWlnQ0JCRDVBaUVKSUFCQkZHb2lCaUFDS0FJY0lnYzJBZ0FnQnlBSEtBSUVRUUZxTmdJRUlBVWdDU0FJSUFCQklHb2lCeUFBUVJ4cUlBQkJHR29nQmhENkFpQUdLQUlBSWdVZ0JTZ0NCRUVCYXlJR05nSUVJQVpCZjBZRVFDQUZJQVVvQWdBb0FnZ1JBUUFMSUFFZ0J5QUFLQUljSUFBb0FoZ2dBaUFERUtrQklRRWdBRUh3QUdva0FDQUJDNEVGQVFkL0FuOGdBU0VKSXdCQjBBRnJJZ1VrQUNBRlFpVTNBOGdCSUFWQnlBRnFRUUZ5UWUzbUVpQUNLQUlFRUlBRElRY2dCU0FGUWFBQmFqWUNuQUVReVFJaEFBSi9JQWNFUUNBQ0tBSUlJUUVnQlNBRU9RTW9JQVVnQVRZQ0lDQUZRYUFCYWtFZUlBQWdCVUhJQVdvZ0JVRWdhaEQ0QWd3QkN5QUZJQVE1QXpBZ0JVR2dBV3BCSGlBQUlBVkJ5QUZxSUFWQk1Hb1ErQUlMSVFZZ0JVSFVBRFlDVUNBRlFaUUJhaUlJUVFBMkFnQWdDQ0FGS0FKUU5nSUVJQVZCb0FGcUlnRWhBQUpBSUFaQkhrNEVRQkRKQWlFQUFuOGdCd1JBSUFJb0FnZ2hCaUFGSUFRNUF3Z2dCU0FHTmdJQUlBVkJuQUZxSUFBZ0JVSElBV29nQlJDQkF3d0JDeUFGSUFRNUF4QWdCVUdjQVdvZ0FDQUZRY2dCYWlBRlFSQnFFSUVEQ3lJR1FYOUdEUUVnQ0NnQ0FDRUhJQWdnQlNnQ25BRWlBRFlDQUNBSEJFQWdCeUFJS0FJRUVRRUFDd3NnQUNBQUlBWnFJZ29nQWlnQ0JCRDVBaUVMSUFWQjFBQTJBbEFnQlVFQU5nSklJQVVnQlNnQ1VEWUNUQUpBSUFWQm9BRnFJQUJHQkVBZ0JVSFFBR29oQmd3QkN5QUdRUUYwRURNaUJrVU5BU0FGS0FKSUlRRWdCU0FHTmdKSUlBRUVRQ0FCSUFVb0Frd1JBUUFMSUFBaEFRc2dCVUU4YWlJQUlBSW9BaHdpQnpZQ0FDQUhJQWNvQWdSQkFXbzJBZ1FnQVNBTElBb2dCaUFGUWNRQWFpQUZRVUJySUFBUWdnTWdBQ2dDQUNJQUlBQW9BZ1JCQVdzaUFUWUNCQ0FCUVg5R0JFQWdBQ0FBS0FJQUtBSUlFUUVBQ3lBSklBWWdCU2dDUkNBRktBSkFJQUlnQXhDcEFTRUJJQVVvQWtnaEFDQUZRUUEyQWtnZ0FBUkFJQUFnQlNnQ1RCRUJBQXNnQ0NnQ0FDRUFJQWhCQURZQ0FDQUFCRUFnQUNBSUtBSUVFUUVBQ3lBRlFkQUJhaVFBSUFFTUFRc1ExUUVBQ3d2UUFRRUNmeUFDUVlBUWNRUkFJQUJCS3pvQUFDQUFRUUZxSVFBTElBSkJnQWh4QkVBZ0FFRWpPZ0FBSUFCQkFXb2hBQXNnQWtHRUFuRWlBMEdFQWtjRVFDQUFRYTdVQURzQUFDQUFRUUpxSVFBTElBSkJnSUFCY1NFQ0EwQWdBUzBBQUNJRUJFQWdBQ0FFT2dBQUlBQkJBV29oQUNBQlFRRnFJUUVNQVFzTElBQUNmd0pBSUFOQmdBSkhCRUFnQTBFRVJ3MEJRY1lBUWVZQUlBSWJEQUlMUWNVQVFlVUFJQUliREFFTFFjRUFRZUVBSUFJYklBTkJoQUpHRFFBYVFjY0FRZWNBSUFJYkN6b0FBQ0FEUVlRQ1J3dTJBUUVEZnlNQVFSQnJJZ1FrQUNBRUlBTTJBZ3dnQkVFSWFpQUJFTjhDSVFZZ0JDZ0NEQ0VESXdCQkVHc2lBU1FBSUFFZ0F6WUNEQ0FCSUFNMkFnaEJmeUVGQWtCQkFFRUFJQUlnQXhEUkFTSURRUUJJRFFBZ0FDQURRUUZxSWdNUU15SUFOZ0lBSUFCRkRRQWdBQ0FESUFJZ0FTZ0NEQkRSQVNFRkN5QUJRUkJxSkFBZ0JpZ0NBQ0lBQkVCQnpKa1VLQUlBR2lBQUJFQkJ6SmtVUWR5aUZDQUFJQUJCZjBZYk5nSUFDd3NnQkVFUWFpUUFJQVVMOWdZQkNuOGpBRUVRYXlJS0pBQWdCaWdDQUJEekFTRUpJQXBCQkdvZ0JpZ0NBQkM5QWlJTklnWWdCaWdDQUNnQ0ZCRUNBQ0FGSUFNMkFnQUNRQUpBSUFBaUNDMEFBQ0lHUVN0ckRnTUFBUUFCQ3lBSklBYkFJQWtvQWdBb0Fod1JBd0FoQmlBRklBVW9BZ0FpQjBFQmFqWUNBQ0FISUFZNkFBQWdBRUVCYWlFSUN3SkFBa0FnQWlBSUlnWnJRUUZNRFFBZ0NDMEFBRUV3UncwQUlBZ3RBQUZCSUhKQitBQkhEUUFnQ1VFd0lBa29BZ0FvQWh3UkF3QWhCaUFGSUFVb0FnQWlCMEVCYWpZQ0FDQUhJQVk2QUFBZ0NTQUlMQUFCSUFrb0FnQW9BaHdSQXdBaEJpQUZJQVVvQWdBaUIwRUJhallDQUNBSElBWTZBQUFnQ0VFQ2FpSUlJUVlEUUNBQ0lBWk5EUUlnQml3QUFDRUhFTWtDR2lBSFFUQnJRUXBKSUFkQklISkI0UUJyUVFaSmNrVU5BaUFHUVFGcUlRWU1BQXNBQ3dOQUlBSWdCazBOQVNBR0xBQUFJUWNReVFJYUlBZEJNR3RCQ2s4TkFTQUdRUUZxSVFZTUFBc0FDd0pBSUFvb0FnZ2dDaTBBRHlJSFFmOEFjU0FIUVlBQmNVRUhkaHRGQkVBZ0NTQUlJQVlnQlNnQ0FDQUpLQUlBS0FJZ0VRWUFHaUFGSUFVb0FnQWdCaUFJYTJvMkFnQU1BUXNnQ0NBR0VQc0NJQTBnRFNnQ0FDZ0NFQkVBQUNFUElBZ2hCd05BSUFZZ0IwMEVRQ0FESUFnZ0FHdHFJQVVvQWdBUSt3SUZBa0FnRGlBS1FRUnFJZ3NvQWdBZ0N5QUxMUUFMUVlBQmNVRUhkaHRxTEFBQVFRQk1EUUFnRENBT0lBcEJCR29pQ3lnQ0FDQUxJQXN0QUF0QmdBRnhRUWQyRzJvc0FBQkhEUUFnQlNBRktBSUFJZ3hCQVdvMkFnQWdEQ0FQT2dBQUlBNGdEaUFLS0FJSUlBb3RBQThpREVIL0FIRWdERUdBQVhGQkIzWWJRUUZyU1dvaERrRUFJUXdMSUFrZ0J5d0FBQ0FKS0FJQUtBSWNFUU1BSVFzZ0JTQUZLQUlBSWhCQkFXbzJBZ0FnRUNBTE9nQUFJQWRCQVdvaEJ5QU1RUUZxSVF3TUFRc0xDd05BQWtBQ1FDQUNJQVpOQkVBZ0JpRUhEQUVMSUFaQkFXb2hCeUFHTFFBQUlnWkJMa2NOQVNBTklBMG9BZ0FvQWd3UkFBQWhCaUFGSUFVb0FnQWlDRUVCYWpZQ0FDQUlJQVk2QUFBTElBa2dCeUFDSUFVb0FnQWdDU2dDQUNnQ0lCRUdBQm9nQlNBRktBSUFJQUlnQjJ0cUlnVTJBZ0FnQkNBRklBTWdBU0FBYTJvZ0FTQUNSaHMyQWdBZ0NrRUVhaEMvQWhvZ0NrRVFhaVFBRHdzZ0NTQUd3Q0FKS0FJQUtBSWNFUU1BSVFZZ0JTQUZLQUlBSWdoQkFXbzJBZ0FnQ0NBR09nQUFJQWNoQmd3QUN3QUxwd1VCQjM4Q2Z5QUJJUW9qQUVHQUFtc2lCaVFBSUFaQ0pUY0QrQUVnQmtINEFXcEJBWEpCaU1VQUlBSW9BZ1FRZ0FNaENDQUdJQVpCMEFGcU5nTE1BUkRKQWlFQUFuOGdDQVJBSUFJb0FnZ2hBU0FHUVVCcklBVTNBd0FnQmlBRU53TTRJQVlnQVRZQ01DQUdRZEFCYWtFZUlBQWdCa0g0QVdvZ0JrRXdhaEQ0QWd3QkN5QUdJQVEzQTFBZ0JpQUZOd05ZSUFaQjBBRnFRUjRnQUNBR1FmZ0JhaUFHUWRBQWFoRDRBZ3NoQnlBR1FkUUFOZ0tBQVNBR1FjUUJhaUlKUVFBMkFnQWdDU0FHS0FLQUFUWUNCQ0FHUWRBQmFpSUJJUUFDUUNBSFFSNU9CRUFReVFJaEFBSi9JQWdFUUNBQ0tBSUlJUWNnQmlBRk53TVFJQVlnQkRjRENDQUdJQWMyQWdBZ0JrSE1BV29nQUNBR1FmZ0JhaUFHRUlFRERBRUxJQVlnQkRjRElDQUdJQVUzQXlnZ0JrSE1BV29nQUNBR1FmZ0JhaUFHUVNCcUVJRURDeUlIUVg5R0RRRWdDU2dDQUNFSUlBa2dCaWdDekFFaUFEWUNBQ0FJQkVBZ0NDQUpLQUlFRVFFQUN3c2dBQ0FBSUFkcUlnc2dBaWdDQkJENUFpRU1JQVpCMUFBMkFvQUJJQVpCQURZQ2VDQUdJQVlvQW9BQk5nSjhBa0FnQmtIUUFXb2dBRVlFUUNBR1FZQUJhaUVIREFFTElBZEJBWFFRTXlJSFJRMEJJQVlvQW5naEFTQUdJQWMyQW5nZ0FRUkFJQUVnQmlnQ2ZCRUJBQXNnQUNFQkN5QUdRZXdBYWlJQUlBSW9BaHdpQ0RZQ0FDQUlJQWdvQWdSQkFXbzJBZ1FnQVNBTUlBc2dCeUFHUWZRQWFpQUdRZkFBYWlBQUVJSURJQUFvQWdBaUFDQUFLQUlFUVFGcklnRTJBZ1FnQVVGL1JnUkFJQUFnQUNnQ0FDZ0NDQkVCQUFzZ0NpQUhJQVlvQW5RZ0JpZ0NjQ0FDSUFNUXFRRWhBU0FHS0FKNElRQWdCa0VBTmdKNElBQUVRQ0FBSUFZb0Fud1JBUUFMSUFrb0FnQWhBQ0FKUVFBMkFnQWdBQVJBSUFBZ0NTZ0NCQkVCQUFzZ0JrR0FBbW9rQUNBQkRBRUxFTlVCQUFzTDFnRUJCMzhqQUVIZ0FHc2lBQ1FBRU1rQ0lRVWdBQ0FFTmdJQUlBQkJRR3NpQmlBR0lBWkJGQ0FGUWNvOUlBQVErQUlpQ21vaUJ5QUNLQUlFRVBrQ0lRZ2dBRUVRYWlJRUlBSW9BaHdpQlRZQ0FDQUZJQVVvQWdSQkFXbzJBZ1FnQUNnQ0VCRHpBU0VKSUFRb0FnQWlCU0FGS0FJRVFRRnJJZ3MyQWdRZ0MwRi9SZ1JBSUFVZ0JTZ0NBQ2dDQ0JFQkFBc2dDU0FHSUFjZ0JDQUpLQUlBS0FJZ0VRWUFHaUFCSUFRZ0JDQUthaUlCSUFnZ0FHc2dBR3BCTUdzZ0J5QUlSaHNnQVNBQ0lBTVFxUUVoQVNBQVFlQUFhaVFBSUFFTGt3SUJBWDhqQUVFZ2F5SUZKQUFnQlNBQk5nSWNBa0FnQWkwQUJFRUJjVVVFUUNBQUlBRWdBaUFESUFRZ0FDZ0NBQ2dDR0JFSEFDRUNEQUVMSUFVZ0FpZ0NIQ0lBTmdJUUlBQWdBQ2dDQkVFQmFqWUNCQ0FGS0FJUUVPRUNJUUFnQlNnQ0VDSUJJQUVvQWdSQkFXc2lBallDQkNBQ1FYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN3SkFJQVFFUUNBRlFSQnFJQUFnQUNnQ0FDZ0NHQkVDQUF3QkN5QUZRUkJxSUFBZ0FDZ0NBQ2dDSEJFQ0FBc2dCU0FGUVJCcUVQUUNOZ0lNQTBBZ0JVRVFhaENHQXlFQUlBQWdCU2dDRENJQlJ3UkFJQVZCSEdvZ0FTZ0NBQkNMQWlBRklBVW9BZ3hCQkdvMkFnd01BUVVnQlNnQ0hDRUNJQVZCRUdvUTR3SWFDd3NMSUFWQklHb2tBQ0FDQzFjQkFYOGdBQ2dDQUNBQUlBQXRBQXNpQVVHQUFYRkJCM1liSUFBb0FnUWdBU0lBUWY4QWNTQUFRWUFCY1VFSGRodEJBblJxSVFFakFFRVFheUlBSkFBZ0FDQUJOZ0lNSUFBb0Fnd2hBU0FBUVJCcUpBQWdBUXZqQVFFRWZ5TUFRWkFCYXlJQUpBQWdBRUlsTndPSUFTQUFRWWdCYWlJRlFRRnlRYkc1RTBFQklBSW9BZ1FROXdJUXlRSWhCaUFBSUFRMkFnQWdBRUg3QUdvaUJDQUVRUTBnQmlBRklBQVErQUlnQkdvaUJ5QUNLQUlFRVBrQ0lRZ2dBRUVFYWlJRklBSW9BaHdpQmpZQ0FDQUdJQVlvQWdSQkFXbzJBZ1FnQkNBSUlBY2dBRUVRYWlJR0lBQkJER29nQUVFSWFpQUZFSWdESUFVb0FnQWlCQ0FFS0FJRVFRRnJJZ1UyQWdRZ0JVRi9SZ1JBSUFRZ0JDZ0NBQ2dDQ0JFQkFBc2dBU0FHSUFBb0Fnd2dBQ2dDQ0NBQ0lBTVFpUU1oQVNBQVFaQUJhaVFBSUFFTDl3UUJDSDhqQUVFUWF5SUxKQUFnQmlnQ0FCQ0dBaUVLSUF0QkJHb2dCaWdDQUJEaEFpSUdJQVlvQWdBb0FoUVJBZ0FDUUNBTEtBSUlJQXN0QUE4aUIwSC9BSEVnQjBHQUFYRkJCM1liUlFSQUlBb2dBQ0FDSUFNZ0NpZ0NBQ2dDTUJFR0FCb2dCU0FESUFJZ0FHdEJBblJxSWdZMkFnQU1BUXNnQlNBRE5nSUFBa0FDUUNBQUlnY3RBQUFpQ0VFcmF3NERBQUVBQVFzZ0NpQUl3Q0FLS0FJQUtBSXNFUU1BSVFjZ0JTQUZLQUlBSWdoQkJHbzJBZ0FnQ0NBSE5nSUFJQUJCQVdvaEJ3c0NRQ0FDSUFkclFRSklEUUFnQnkwQUFFRXdSdzBBSUFjdEFBRkJJSEpCK0FCSERRQWdDa0V3SUFvb0FnQW9BaXdSQXdBaENDQUZJQVVvQWdBaUNVRUVhallDQUNBSklBZzJBZ0FnQ2lBSExBQUJJQW9vQWdBb0Fpd1JBd0FoQ0NBRklBVW9BZ0FpQ1VFRWFqWUNBQ0FKSUFnMkFnQWdCMEVDYWlFSEN5QUhJQUlRK3dKQkFDRUpJQVlnQmlnQ0FDZ0NFQkVBQUNFTlFRQWhDQ0FISVFZRGZ5QUNJQVpOQkg4Z0F5QUhJQUJyUVFKMGFpQUZLQUlBRU1zQ0lBVW9BZ0FGQWtBZ0NDQUxRUVJxSWd3b0FnQWdEQ0FNTFFBTFFZQUJjVUVIZGh0cUxRQUFSUTBBSUFrZ0NDQUxRUVJxSWd3b0FnQWdEQ0FNTFFBTFFZQUJjVUVIZGh0cUxBQUFSdzBBSUFVZ0JTZ0NBQ0lKUVFScU5nSUFJQWtnRFRZQ0FDQUlJQWdnQ3lnQ0NDQUxMUUFQSWdsQi93QnhJQWxCZ0FGeFFRZDJHMEVCYTBscUlRaEJBQ0VKQ3lBS0lBWXNBQUFnQ2lnQ0FDZ0NMQkVEQUNFTUlBVWdCU2dDQUNJT1FRUnFOZ0lBSUE0Z0REWUNBQ0FHUVFGcUlRWWdDVUVCYWlFSkRBRUxDeUVHQ3lBRUlBWWdBeUFCSUFCclFRSjBhaUFCSUFKR0d6WUNBQ0FMUVFScUVMOENHaUFMUVJCcUpBQUwyd0VCQkg4akFFRVFheUlJSkFBQ1FDQUFSUTBBSUFRb0Fnd2hCaUFDSUFGcklnZEJBRW9FUUNBQUlBRWdCMEVDZGlJSElBQW9BZ0FvQWpBUkJBQWdCMGNOQVFzZ0JpQURJQUZyUVFKMUlnRnJRUUFnQVNBR1NCc2lBVUVBU2dSQUlBQWdDRUVFYWlBQklBVVFpZ01pQlNnQ0FDQUZJQVV0QUF0QmdBRnhRUWQyR3lBQklBQW9BZ0FvQWpBUkJBQWhCaUFGRU9NQ0dpQUJJQVpIRFFFTElBTWdBbXNpQVVFQVNnUkFJQUFnQWlBQlFRSjJJZ0VnQUNnQ0FDZ0NNQkVFQUNBQlJ3MEJDeUFFUVFBMkFnd2dBQ0VKQ3lBSVFSQnFKQUFnQ1F2bEFRRUVmeUFBSVFRakFFRVFheUlGSkFBQ1FDQUJRZkQvLy84RFNRUkFBa0FnQVVFQ1NRUkFJQVFnQVRvQUN3d0JDeUFGUVFocUlBRkJBazhFZnlBQlFRUnFRWHh4SWdNZ0EwRUJheUlESUFOQkFrWWJCVUVCQzBFQmFoQzVBaUFFSUFVb0FnZ2lBellDQUNBRUlBVW9BZ3hCZ0lDQWdIaHlOZ0lJSUFRZ0FUWUNCQ0FESVFRTEl3QkJFR3NpQmlRQUlBWWdBallDRENBRUlRSWdBU0VEQTBBZ0F3UkFJQUlnQmlnQ0REWUNBQ0FEUVFGcklRTWdBa0VFYWlFQ0RBRUxDeUFHUVJCcUpBQWdBVUVDZENBRWFrRUFOZ0lBSUFWQkVHb2tBQXdCQ3hCVkFBc2dBQXZpQVFFRmZ5TUFRWUFDYXlJQUpBQWdBRUlsTndQNEFTQUFRZmdCYWlJR1FRRnlRY1UrUVFFZ0FpZ0NCQkQzQWhESkFpRUhJQUFnQkRjREFDQUFRZUFCYWlJRklBVkJHQ0FISUFZZ0FCRDRBaUFGYWlJSUlBSW9BZ1FRK1FJaENTQUFRUlJxSWdZZ0FpZ0NIQ0lITmdJQUlBY2dCeWdDQkVFQmFqWUNCQ0FGSUFrZ0NDQUFRU0JxSWdjZ0FFRWNhaUFBUVJocUlBWVFpQU1nQmlnQ0FDSUZJQVVvQWdSQkFXc2lCallDQkNBR1FYOUdCRUFnQlNBRktBSUFLQUlJRVFFQUN5QUJJQWNnQUNnQ0hDQUFLQUlZSUFJZ0F4Q0pBeUVCSUFCQmdBSnFKQUFnQVF2akFRRUVmeU1BUVpBQmF5SUFKQUFnQUVJbE53T0lBU0FBUVlnQmFpSUZRUUZ5UWJHNUUwRUFJQUlvQWdRUTl3SVF5UUloQmlBQUlBUTJBZ0FnQUVIN0FHb2lCQ0FFUVEwZ0JpQUZJQUFRK0FJZ0JHb2lCeUFDS0FJRUVQa0NJUWdnQUVFRWFpSUZJQUlvQWh3aUJqWUNBQ0FHSUFZb0FnUkJBV28yQWdRZ0JDQUlJQWNnQUVFUWFpSUdJQUJCREdvZ0FFRUlhaUFGRUlnRElBVW9BZ0FpQkNBRUtBSUVRUUZySWdVMkFnUWdCVUYvUmdSQUlBUWdCQ2dDQUNnQ0NCRUJBQXNnQVNBR0lBQW9BZ3dnQUNnQ0NDQUNJQU1RaVFNaEFTQUFRWkFCYWlRQUlBRUw0Z0VCQlg4akFFR0FBbXNpQUNRQUlBQkNKVGNEK0FFZ0FFSDRBV29pQmtFQmNrSEZQa0VBSUFJb0FnUVE5d0lReVFJaEJ5QUFJQVEzQXdBZ0FFSGdBV29pQlNBRlFSZ2dCeUFHSUFBUStBSWdCV29pQ0NBQ0tBSUVFUGtDSVFrZ0FFRVVhaUlHSUFJb0Fod2lCellDQUNBSElBY29BZ1JCQVdvMkFnUWdCU0FKSUFnZ0FFRWdhaUlISUFCQkhHb2dBRUVZYWlBR0VJZ0RJQVlvQWdBaUJTQUZLQUlFUVFGcklnWTJBZ1FnQmtGL1JnUkFJQVVnQlNnQ0FDZ0NDQkVCQUFzZ0FTQUhJQUFvQWh3Z0FDZ0NHQ0FDSUFNUWlRTWhBU0FBUVlBQ2FpUUFJQUVMZ1FVQkIzOENmeUFCSVFrakFFSHdBbXNpQlNRQUlBVkNKVGNENkFJZ0JVSG9BbXBCQVhKQjdlWVNJQUlvQWdRUWdBTWhCeUFGSUFWQndBSnFOZ0s4QWhESkFpRUFBbjhnQndSQUlBSW9BZ2doQVNBRklBUTVBeWdnQlNBQk5nSWdJQVZCd0FKcVFSNGdBQ0FGUWVnQ2FpQUZRU0JxRVBnQ0RBRUxJQVVnQkRrRE1DQUZRY0FDYWtFZUlBQWdCVUhvQW1vZ0JVRXdhaEQ0QWdzaEJpQUZRZFFBTmdKUUlBVkJ0QUpxSWdoQkFEWUNBQ0FJSUFVb0FsQTJBZ1FnQlVIQUFtb2lBU0VBQWtBZ0JrRWVUZ1JBRU1rQ0lRQUNmeUFIQkVBZ0FpZ0NDQ0VHSUFVZ0JEa0RDQ0FGSUFZMkFnQWdCVUc4QW1vZ0FDQUZRZWdDYWlBRkVJRUREQUVMSUFVZ0JEa0RFQ0FGUWJ3Q2FpQUFJQVZCNkFKcUlBVkJFR29RZ1FNTElnWkJmMFlOQVNBSUtBSUFJUWNnQ0NBRktBSzhBaUlBTmdJQUlBY0VRQ0FISUFnb0FnUVJBUUFMQ3lBQUlBQWdCbW9pQ2lBQ0tBSUVFUGtDSVFzZ0JVSFVBRFlDVUNBRlFRQTJBa2dnQlNBRktBSlFOZ0pNQWtBZ0JVSEFBbW9nQUVZRVFDQUZRZEFBYWlFR0RBRUxJQVpCQTNRUU15SUdSUTBCSUFVb0FrZ2hBU0FGSUFZMkFrZ2dBUVJBSUFFZ0JTZ0NUQkVCQUFzZ0FDRUJDeUFGUVR4cUlnQWdBaWdDSENJSE5nSUFJQWNnQnlnQ0JFRUJhallDQkNBQklBc2dDaUFHSUFWQnhBQnFJQVZCUUdzZ0FCQ1BBeUFBS0FJQUlnQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBa2dCaUFGS0FKRUlBVW9Ba0FnQWlBREVJa0RJUUVnQlNnQ1NDRUFJQVZCQURZQ1NDQUFCRUFnQUNBRktBSk1FUUVBQ3lBSUtBSUFJUUFnQ0VFQU5nSUFJQUFFUUNBQUlBZ29BZ1FSQVFBTElBVkI4QUpxSkFBZ0FRd0JDeERWQVFBTEM0WUhBUXAvSXdCQkVHc2lDeVFBSUFZb0FnQVFoZ0loQ1NBTFFRUnFJQVlvQWdBUTRRSWlEU0lHSUFZb0FnQW9BaFFSQWdBZ0JTQUROZ0lBQWtBQ1FDQUFJZ2d0QUFBaUJrRXJhdzREQUFFQUFRc2dDU0FHd0NBSktBSUFLQUlzRVFNQUlRWWdCU0FGS0FJQUlnZEJCR28yQWdBZ0J5QUdOZ0lBSUFCQkFXb2hDQXNDUUFKQUlBSWdDQ0lHYTBFQlRBMEFJQWd0QUFCQk1FY05BQ0FJTFFBQlFTQnlRZmdBUncwQUlBbEJNQ0FKS0FJQUtBSXNFUU1BSVFZZ0JTQUZLQUlBSWdkQkJHbzJBZ0FnQnlBR05nSUFJQWtnQ0N3QUFTQUpLQUlBS0FJc0VRTUFJUVlnQlNBRktBSUFJZ2RCQkdvMkFnQWdCeUFHTmdJQUlBaEJBbW9pQ0NFR0EwQWdBaUFHVFEwQ0lBWXNBQUFoQnhESkFob2dCMEV3YTBFS1NTQUhRU0J5UWVFQWEwRUdTWEpGRFFJZ0JrRUJhaUVHREFBTEFBc0RRQ0FDSUFaTkRRRWdCaXdBQUNFSEVNa0NHaUFIUVRCclFRcFBEUUVnQmtFQmFpRUdEQUFMQUFzQ1FDQUxLQUlJSUFzdEFBOGlCMEgvQUhFZ0IwR0FBWEZCQjNZYlJRUkFJQWtnQ0NBR0lBVW9BZ0FnQ1NnQ0FDZ0NNQkVHQUJvZ0JTQUZLQUlBSUFZZ0NHdEJBblJxTmdJQURBRUxJQWdnQmhEN0FpQU5JQTBvQWdBb0FoQVJBQUFoRHlBSUlRY0RRQ0FHSUFkTkJFQWdBeUFJSUFCclFRSjBhaUFGS0FJQUVNc0NCUUpBSUE0Z0MwRUVhaUlNS0FJQUlBd2dEQzBBQzBHQUFYRkJCM1liYWl3QUFFRUFUQTBBSUFvZ0RpQUxRUVJxSWd3b0FnQWdEQ0FNTFFBTFFZQUJjVUVIZGh0cUxBQUFSdzBBSUFVZ0JTZ0NBQ0lLUVFScU5nSUFJQW9nRHpZQ0FDQU9JQTRnQ3lnQ0NDQUxMUUFQSWdwQi93QnhJQXBCZ0FGeFFRZDJHMEVCYTBscUlRNUJBQ0VLQ3lBSklBY3NBQUFnQ1NnQ0FDZ0NMQkVEQUNFTUlBVWdCU2dDQUNJUVFRUnFOZ0lBSUJBZ0REWUNBQ0FIUVFGcUlRY2dDa0VCYWlFS0RBRUxDd3NDUUFKQUEwQWdBaUFHVFEwQklBWkJBV29oQnlBR0xRQUFJZ1pCTGtjRVFDQUpJQWJBSUFrb0FnQW9BaXdSQXdBaEJpQUZJQVVvQWdBaUNFRUVhallDQUNBSUlBWTJBZ0FnQnlFR0RBRUxDeUFOSUEwb0FnQW9BZ3dSQUFBaEJpQUZJQVVvQWdBaUNFRUVhaUlLTmdJQUlBZ2dCallDQUF3QkN5QUZLQUlBSVFvZ0JpRUhDeUFKSUFjZ0FpQUtJQWtvQWdBb0FqQVJCZ0FhSUFVZ0JTZ0NBQ0FDSUFkclFRSjBhaUlGTmdJQUlBUWdCU0FESUFFZ0FHdEJBblJxSUFFZ0FrWWJOZ0lBSUF0QkJHb1F2d0lhSUF0QkVHb2tBQXVuQlFFSGZ3Si9JQUVoQ2lNQVFhQURheUlHSkFBZ0JrSWxOd09ZQXlBR1FaZ0Rha0VCY2tHSXhRQWdBaWdDQkJDQUF5RUlJQVlnQmtId0FtbzJBdXdDRU1rQ0lRQUNmeUFJQkVBZ0FpZ0NDQ0VCSUFaQlFHc2dCVGNEQUNBR0lBUTNBemdnQmlBQk5nSXdJQVpCOEFKcVFSNGdBQ0FHUVpnRGFpQUdRVEJxRVBnQ0RBRUxJQVlnQkRjRFVDQUdJQVUzQTFnZ0JrSHdBbXBCSGlBQUlBWkJtQU5xSUFaQjBBQnFFUGdDQ3lFSElBWkIxQUEyQW9BQklBWkI1QUpxSWdsQkFEWUNBQ0FKSUFZb0FvQUJOZ0lFSUFaQjhBSnFJZ0VoQUFKQUlBZEJIazRFUUJESkFpRUFBbjhnQ0FSQUlBSW9BZ2doQnlBR0lBVTNBeEFnQmlBRU53TUlJQVlnQnpZQ0FDQUdRZXdDYWlBQUlBWkJtQU5xSUFZUWdRTU1BUXNnQmlBRU53TWdJQVlnQlRjREtDQUdRZXdDYWlBQUlBWkJtQU5xSUFaQklHb1FnUU1MSWdkQmYwWU5BU0FKS0FJQUlRZ2dDU0FHS0FMc0FpSUFOZ0lBSUFnRVFDQUlJQWtvQWdRUkFRQUxDeUFBSUFBZ0Iyb2lDeUFDS0FJRUVQa0NJUXdnQmtIVUFEWUNnQUVnQmtFQU5nSjRJQVlnQmlnQ2dBRTJBbndDUUNBR1FmQUNhaUFBUmdSQUlBWkJnQUZxSVFjTUFRc2dCMEVEZEJBeklnZEZEUUVnQmlnQ2VDRUJJQVlnQnpZQ2VDQUJCRUFnQVNBR0tBSjhFUUVBQ3lBQUlRRUxJQVpCN0FCcUlnQWdBaWdDSENJSU5nSUFJQWdnQ0NnQ0JFRUJhallDQkNBQklBd2dDeUFISUFaQjlBQnFJQVpCOEFCcUlBQVFqd01nQUNnQ0FDSUFJQUFvQWdSQkFXc2lBVFlDQkNBQlFYOUdCRUFnQUNBQUtBSUFLQUlJRVFFQUN5QUtJQWNnQmlnQ2RDQUdLQUp3SUFJZ0F4Q0pBeUVCSUFZb0FuZ2hBQ0FHUVFBMkFuZ2dBQVJBSUFBZ0JpZ0NmQkVCQUFzZ0NTZ0NBQ0VBSUFsQkFEWUNBQ0FBQkVBZ0FDQUpLQUlFRVFFQUN5QUdRYUFEYWlRQUlBRU1BUXNRMVFFQUN3dmVBUUVIZnlNQVFkQUJheUlBSkFBUXlRSWhCU0FBSUFRMkFnQWdBRUd3QVdvaUJpQUdJQVpCRkNBRlFjbzlJQUFRK0FJaUNtb2lCeUFDS0FJRUVQa0NJUWdnQUVFUWFpSUVJQUlvQWh3aUJUWUNBQ0FGSUFVb0FnUkJBV28yQWdRZ0FDZ0NFQkNHQWlFSklBUW9BZ0FpQlNBRktBSUVRUUZySWdzMkFnUWdDMEYvUmdSQUlBVWdCU2dDQUNnQ0NCRUJBQXNnQ1NBR0lBY2dCQ0FKS0FJQUtBSXdFUVlBR2lBQklBUWdDa0VDZENBRWFpSUJJQWdnQUd0QkFuUWdBR3BCc0FWcklBY2dDRVliSUFFZ0FpQURFSWtESVFFZ0FFSFFBV29rQUNBQkM4MEZBUU4vSXdCQkVHc2lDQ1FBSUFnZ0FqWUNDQ0FJSUFFMkFnd2dDQ0FES0FJY0lnRTJBZ1FnQVNBQktBSUVRUUZxTmdJRUlBZ29BZ1FROHdFaENTQUlLQUlFSWdFZ0FTZ0NCRUVCYXlJQ05nSUVJQUpCZjBZRVFDQUJJQUVvQWdBb0FnZ1JBUUFMUVFBaEFpQUVRUUEyQWdBQ1FBTkFJQVlnQjBZTkFTQUNEUUVDUUNBSVFReHFJQWhCQ0dvUTlRRU5BQUpBSUFrZ0Jpd0FBRUVBSUFrb0FnQW9BaVFSQkFCQkpVWUVRQ0FHUVFGcUlnSWdCMFlOQWdKL0FrQWdDU0FDTEFBQVFRQWdDU2dDQUNnQ0pCRUVBQ0lCUWNVQVJnMEFRUUFoQ2lBQlFmOEJjVUV3UmcwQUlBWWhBaUFCREFFTElBWkJBbW9nQjBZTkF5QUJJUW9nQ1NBR0xBQUNRUUFnQ1NnQ0FDZ0NKQkVFQUFzaEFTQUlJQUFnQ0NnQ0RDQUlLQUlJSUFNZ0JDQUZJQUVnQ2lBQUtBSUFLQUlrRVFzQU5nSU1JQUpCQW1vaEJnd0JDeUFKS0FJSUlRRWdCaXdBQUNJQ1FRQk9CSDhnQVNBQ1FmOEJjVUVDZEdvb0FnQkJBWEVGUVFBTEJFQURRQUpBSUFjZ0JrRUJhaUlHUmdSQUlBY2hCZ3dCQ3lBR0xBQUFJZ0pCQUU0RWZ5QUJJQUpCL3dGeFFRSjBhaWdDQUVFQmNRVkJBQXNOQVFzTEEwQWdDRUVNYWlBSVFRaHFFUFVCRFFJQ2Z5QUlLQUlNSWdFb0Fnd2lBaUFCS0FJUVJnUkFJQUVnQVNnQ0FDZ0NKQkVBQUF3QkN5QUNMUUFBQzhBaEFTQUpLQUlJSVFJZ0FVRUFUZ1IvSUFJZ0FVSC9BWEZCQW5ScUtBSUFRUUZ4QlVFQUMwVU5BaUFJUVF4cUVQY0JHZ3dBQ3dBTElBa0NmeUFJS0FJTUlnRW9BZ3dpQWlBQktBSVFSZ1JBSUFFZ0FTZ0NBQ2dDSkJFQUFBd0JDeUFDTFFBQUM4QWdDU2dDQUNnQ0RCRURBQ0FKSUFZc0FBQWdDU2dDQUNnQ0RCRURBRVlFUUNBR1FRRnFJUVlnQ0VFTWFoRDNBUm9NQVFzZ0JFRUVOZ0lBQ3lBRUtBSUFJUUlNQVFzTElBUkJCRFlDQUFzZ0NFRU1haUFJUVFocUVQVUJCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUlLQUlNSVFBZ0NFRVFhaVFBSUFBTEJBQkJBZ3RBQVFGL0l3QkJFR3NpQmlRQUlBWkNwWkRwcWRMSnpwTFRBRGNEQ0NBQUlBRWdBaUFESUFRZ0JTQUdRUWhxSUFaQkVHb2lBUkNTQXlFQUlBRWtBQ0FBQzFNQUlBQWdBU0FDSUFNZ0JDQUZJQUJCQ0dvZ0FDZ0NDQ2dDRkJFQUFDSUFLQUlBSUFBZ0FDMEFDeUlDUVlBQmNVRUhkaHNpQVNBQklBQW9BZ1FnQWlJQVFmOEFjU0FBUVlBQmNVRUhkaHRxRUpJREM0VUJBUUovSXdCQkVHc2lCaVFBSUFZZ0FUWUNEQ0FHSUFNb0Fod2lBVFlDQ0NBQklBRW9BZ1JCQVdvMkFnUWdCaWdDQ0JEekFTRURJQVlvQWdnaUFTQUJLQUlFUVFGcklnYzJBZ1FnQjBGL1JnUkFJQUVnQVNnQ0FDZ0NDQkVCQUFzZ0FDQUZRUmhxSUFaQkRHb2dBaUFFSUFNUWx3TWdCaWdDRENFQUlBWkJFR29rQUNBQUMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnQVJBQUFpQUNBQVFhZ0JhaUFGSUFSQkFCQytBaUFBYXlJQVFhY0JUQVJBSUFFZ0FFRU1iVUVIYnpZQ0FBc0xoUUVCQW44akFFRVFheUlHSkFBZ0JpQUJOZ0lNSUFZZ0F5Z0NIQ0lCTmdJSUlBRWdBU2dDQkVFQmFqWUNCQ0FHS0FJSUVQTUJJUU1nQmlnQ0NDSUJJQUVvQWdSQkFXc2lCellDQkNBSFFYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUFJQVZCRUdvZ0JrRU1haUFDSUFRZ0F4Q1pBeUFHS0FJTUlRQWdCa0VRYWlRQUlBQUxRQUFnQWlBRElBQkJDR29nQUNnQ0NDZ0NCQkVBQUNJQUlBQkJvQUpxSUFVZ0JFRUFFTDRDSUFCcklnQkJud0pNQkVBZ0FTQUFRUXh0UVF4dk5nSUFDd3VEQVFFQmZ5TUFRUkJySWdBa0FDQUFJQUUyQWd3Z0FDQURLQUljSWdFMkFnZ2dBU0FCS0FJRVFRRnFOZ0lFSUFBb0FnZ1E4d0VoQXlBQUtBSUlJZ0VnQVNnQ0JFRUJheUlHTmdJRUlBWkJmMFlFUUNBQklBRW9BZ0FvQWdnUkFRQUxJQVZCRkdvZ0FFRU1haUFDSUFRZ0F4Q2JBeUFBS0FJTUlRRWdBRUVRYWlRQUlBRUxRZ0FnQVNBQ0lBTWdCRUVFRUp3RElRRWdBeTBBQUVFRWNVVUVRQ0FBSUFGQjBBOXFJQUZCN0E1cUlBRWdBVUhrQUVnYklBRkJ4UUJJRzBIc0RtczJBZ0FMQytjQ0FRUi9Jd0JCRUdzaUJ5UUFJQWNnQVRZQ0RFRUFJUUZCQmlFRkFrQUNRQ0FBSUFkQkRHb1E5UUVOQUFKL0lBQW9BZ0FpQlNnQ0RDSUdJQVVvQWhCR0JFQWdCU0FGS0FJQUtBSWtFUUFBREFFTElBWXRBQUFMd0NFR1FRUWhCU0FES0FJSUlRZ2dCa0VBVGdSL0lBZ2dCa0gvQVhGQkFuUnFLQUlBUWNBQWNVRUFSd1ZCQUF0RkRRQWdBeUFHUVFBZ0F5Z0NBQ2dDSkJFRUFDRUJBMEFDUUNBQlFUQnJJUUVnQUJEM0FTSUdJQWRCREdvUTlRRU5BQ0FFUVFKSURRQUNmeUFHS0FJQUlnVW9BZ3dpQmlBRktBSVFSZ1JBSUFVZ0JTZ0NBQ2dDSkJFQUFBd0JDeUFHTFFBQUM4QWhCU0FES0FJSUlRWWdCVUVBVGdSL0lBWWdCVUgvQVhGQkFuUnFLQUlBUWNBQWNVRUFSd1ZCQUF0RkRRTWdCRUVCYXlFRUlBTWdCVUVBSUFNb0FnQW9BaVFSQkFBZ0FVRUtiR29oQVF3QkN3dEJBaUVGSUFZZ0IwRU1haEQxQVVVTkFRc2dBaUFDS0FJQUlBVnlOZ0lBQ3lBSFFSQnFKQUFnQVF2ZERnRURmeU1BUVJCcklnY2tBQ0FISUFFMkFnd2dCRUVBTmdJQUlBY2dBeWdDSENJSU5nSUFJQWdnQ0NnQ0JFRUJhallDQkNBSEtBSUFFUE1CSVFnZ0J5Z0NBQ0lKSUFrb0FnUkJBV3NpQ2pZQ0JDQUtRWDlHQkVBZ0NTQUpLQUlBS0FJSUVRRUFDd0ovQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FHUWNFQWF3NDVBQUVYQkJjRkZ3WUhGeGNYQ2hjWEZ4Y09EeEFYRnhjVEZSY1hGeGNYRnhjQUFRSURBeGNYQVJjSUZ4Y0pDeGNNRncwWEN4Y1hFUklVRmdzZ0FDQUZRUmhxSUFkQkRHb2dBaUFFSUFnUWx3TU1HQXNnQUNBRlFSQnFJQWRCREdvZ0FpQUVJQWdRbVFNTUZ3c2dCeUFBSUFFZ0FpQURJQVFnQlNBQVFRaHFJQUFvQWdnb0Fnd1JBQUFpQUNnQ0FDQUFJQUF0QUFzaUFVR0FBWEZCQjNZYklnSWdBaUFBS0FJRUlBRkIvd0J4SUFGQmdBRnhRUWQyRzJvUWtnTTJBZ3dNRmdzZ0IwRU1haUFDSUFRZ0NFRUNFSndESVFBZ0JDZ0NBQ0VCQWtBQ1FDQUFRUUZyUVI1TERRQWdBVUVFY1EwQUlBVWdBRFlDREF3QkN5QUVJQUZCQkhJMkFnQUxEQlVMSUFkQ3BkcTlxY0xzeTVMNUFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVJYWhDU0F6WUNEQXdVQ3lBSFFxV3l0YW5TcmN1UzVBQTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCQ0dvUWtnTTJBZ3dNRXdzZ0IwRU1haUFDSUFRZ0NFRUNFSndESVFBZ0JDZ0NBQ0VCQWtBQ1FDQUFRUmRLRFFBZ0FVRUVjUTBBSUFVZ0FEWUNDQXdCQ3lBRUlBRkJCSEkyQWdBTERCSUxJQWRCREdvZ0FpQUVJQWhCQWhDY0F5RUFJQVFvQWdBaEFRSkFBa0FnQUVFQmEwRUxTdzBBSUFGQkJIRU5BQ0FGSUFBMkFnZ01BUXNnQkNBQlFRUnlOZ0lBQ3d3UkN5QUhRUXhxSUFJZ0JDQUlRUU1RbkFNaEFDQUVLQUlBSVFFQ1FBSkFJQUJCN1FKS0RRQWdBVUVFY1EwQUlBVWdBRFlDSEF3QkN5QUVJQUZCQkhJMkFnQUxEQkFMSUFkQkRHb2dBaUFFSUFoQkFoQ2NBeUVCSUFRb0FnQWhBQUpBQWtBZ0FVRUJheUlCUVF0TERRQWdBRUVFY1EwQUlBVWdBVFlDRUF3QkN5QUVJQUJCQkhJMkFnQUxEQThMSUFkQkRHb2dBaUFFSUFoQkFoQ2NBeUVBSUFRb0FnQWhBUUpBQWtBZ0FFRTdTZzBBSUFGQkJIRU5BQ0FGSUFBMkFnUU1BUXNnQkNBQlFRUnlOZ0lBQ3d3T0N5QUhRUXhxSVFBakFFRVFheUlCSkFBZ0FTQUNOZ0lNQTBBQ1FDQUFJQUZCREdvUTlRRU5BQUovSUFBb0FnQWlBaWdDRENJRElBSW9BaEJHQkVBZ0FpQUNLQUlBS0FJa0VRQUFEQUVMSUFNdEFBQUx3Q0VDSUFnb0FnZ2hBeUFDUVFCT0JIOGdBeUFDUWY4QmNVRUNkR29vQWdCQkFYRUZRUUFMUlEwQUlBQVE5d0VhREFFTEN5QUFJQUZCREdvUTlRRUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBRkJFR29rQUF3TkN5QUhRUXhxSVFFQ1FDQUFRUWhxSUFBb0FnZ29BZ2dSQUFBaUFDZ0NCQ0FBTFFBTElnTkIvd0J4SUFOQmdBRnhRUWQyRzBFQUlBQW9BaEFnQUMwQUZ5SURRZjhBY1NBRFFZQUJjVUVIZGh0clJnUkFJQVFnQkNnQ0FFRUVjallDQUF3QkN5QUJJQUlnQUNBQVFSaHFJQWdnQkVFQUVMNENJUUlnQlNnQ0NDRUJBa0FnQUNBQ1J3MEFJQUZCREVjTkFDQUZRUUEyQWdnTUFRc0NRQ0FDSUFCclFReEhEUUFnQVVFTFNnMEFJQVVnQVVFTWFqWUNDQXNMREF3TElBZEJ1cmtUS0FBQU5nQUhJQWRCczdrVEtRQUFOd01BSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVF0cUVKSUROZ0lNREFzTElBZEJ3cmtUTFFBQU9nQUVJQWRCdnJrVEtBQUFOZ0lBSUFjZ0FDQUJJQUlnQXlBRUlBVWdCeUFIUVFWcUVKSUROZ0lNREFvTElBZEJER29nQWlBRUlBaEJBaENjQXlFQUlBUW9BZ0FoQVFKQUFrQWdBRUU4U2cwQUlBRkJCSEVOQUNBRklBQTJBZ0FNQVFzZ0JDQUJRUVJ5TmdJQUN3d0pDeUFIUXFXUTZhblN5YzZTMHdBM0F3QWdCeUFBSUFFZ0FpQURJQVFnQlNBSElBZEJDR29Ra2dNMkFnd01DQXNnQjBFTWFpQUNJQVFnQ0VFQkVKd0RJUUFnQkNnQ0FDRUJBa0FDUUNBQVFRWktEUUFnQVVFRWNRMEFJQVVnQURZQ0dBd0JDeUFFSUFGQkJISTJBZ0FMREFjTElBQWdBU0FDSUFNZ0JDQUZJQUFvQWdBb0FoUVJCUUFNQndzZ0J5QUFJQUVnQWlBRElBUWdCU0FBUVFocUlBQW9BZ2dvQWhnUkFBQWlBQ2dDQUNBQUlBQXRBQXNpQVVHQUFYRkJCM1liSWdJZ0FpQUFLQUlFSUFGQi93QnhJQUZCZ0FGeFFRZDJHMm9Ra2dNMkFnd01CUXNnQlVFVWFpQUhRUXhxSUFJZ0JDQUlFSnNEREFRTElBZEJER29nQWlBRUlBaEJCQkNjQXlFQUlBUXRBQUJCQkhGRkJFQWdCU0FBUWV3T2F6WUNGQXNNQXdzZ0JrRWxSZzBCQ3lBRUlBUW9BZ0JCQkhJMkFnQU1BUXNqQUVFUWF5SUFKQUFnQUNBQ05nSU1RUVloQVFKQUFrQWdCMEVNYWlJRElBQkJER29ROVFFTkFFRUVJUUVnQ0FKL0lBTW9BZ0FpQWlnQ0RDSUZJQUlvQWhCR0JFQWdBaUFDS0FJQUtBSWtFUUFBREFFTElBVXRBQUFMd0VFQUlBZ29BZ0FvQWlRUkJBQkJKVWNOQUVFQ0lRRWdBeEQzQVNBQVFReHFFUFVCUlEwQkN5QUVJQVFvQWdBZ0FYSTJBZ0FMSUFCQkVHb2tBQXNnQnlnQ0RBc2hBQ0FIUVJCcUpBQWdBQXVSQlFFRGZ5TUFRUkJySWdna0FDQUlJQUkyQWdnZ0NDQUJOZ0lNSUFnZ0F5Z0NIQ0lCTmdJRUlBRWdBU2dDQkVFQmFqWUNCQ0FJS0FJRUVJWUNJUWtnQ0NnQ0JDSUJJQUVvQWdSQkFXc2lBallDQkNBQ1FYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUMwRUFJUUVnQkVFQU5nSUFBa0FEUUNBR0lBZEdEUUVnQVEwQkFrQWdDRUVNYWlBSVFRaHFFSWNDRFFBQ1FDQUpJQVlvQWdCQkFDQUpLQUlBS0FJMEVRUUFRU1ZHQkVBZ0JrRUVhaUlCSUFkR0RRSUNmd0pBSUFrZ0FTZ0NBRUVBSUFrb0FnQW9BalFSQkFBaUFrSEZBRVlOQUVFQUlRb2dBa0gvQVhGQk1FWU5BQ0FHSVFFZ0Fnd0JDeUFHUVFocUlBZEdEUU1nQWlFS0lBa2dCaWdDQ0VFQUlBa29BZ0FvQWpRUkJBQUxJUUlnQ0NBQUlBZ29BZ3dnQ0NnQ0NDQURJQVFnQlNBQ0lBb2dBQ2dDQUNnQ0pCRUxBRFlDRENBQlFRaHFJUVlNQVFzZ0NVRUJJQVlvQWdBZ0NTZ0NBQ2dDREJFRUFBUkFBMEFDUUNBSElBWkJCR29pQmtZRVFDQUhJUVlNQVFzZ0NVRUJJQVlvQWdBZ0NTZ0NBQ2dDREJFRUFBMEJDd3NEUUNBSVFReHFJQWhCQ0dvUWh3SU5BaUFKUVFFQ2Z5QUlLQUlNSWdFb0Fnd2lBaUFCS0FJUVJnUkFJQUVnQVNnQ0FDZ0NKQkVBQUF3QkN5QUNLQUlBQ3lBSktBSUFLQUlNRVFRQVJRMENJQWhCREdvUWlRSWFEQUFMQUFzZ0NRSi9JQWdvQWd3aUFTZ0NEQ0lDSUFFb0FoQkdCRUFnQVNBQktBSUFLQUlrRVFBQURBRUxJQUlvQWdBTElBa29BZ0FvQWh3UkF3QWdDU0FHS0FJQUlBa29BZ0FvQWh3UkF3QkdCRUFnQmtFRWFpRUdJQWhCREdvUWlRSWFEQUVMSUFSQkJEWUNBQXNnQkNnQ0FDRUJEQUVMQ3lBRVFRUTJBZ0FMSUFoQkRHb2dDRUVJYWhDSEFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0NDZ0NEQ0VBSUFoQkVHb2tBQ0FBQzEwQkFYOGpBRUVnYXlJR0pBQWdCa0g0dWhNcEF3QTNBeGdnQmtId3VoTXBBd0EzQXhBZ0JrSG91aE1wQXdBM0F3Z2dCa0hndWhNcEF3QTNBd0FnQUNBQklBSWdBeUFFSUFVZ0JpQUdRU0JxSWdFUW5nTWhBQ0FCSkFBZ0FBdFdBQ0FBSUFFZ0FpQURJQVFnQlNBQVFRaHFJQUFvQWdnb0FoUVJBQUFpQUNnQ0FDQUFJQUF0QUFzaUFrR0FBWEZCQjNZYklnRWdBU0FBS0FJRUlBSWlBRUgvQUhFZ0FFR0FBWEZCQjNZYlFRSjBhaENlQXd1RkFRRUNmeU1BUVJCcklnWWtBQ0FHSUFFMkFnd2dCaUFES0FJY0lnRTJBZ2dnQVNBQktBSUVRUUZxTmdJRUlBWW9BZ2dRaGdJaEF5QUdLQUlJSWdFZ0FTZ0NCRUVCYXlJSE5nSUVJQWRCZjBZRVFDQUJJQUVvQWdBb0FnZ1JBUUFMSUFBZ0JVRVlhaUFHUVF4cUlBSWdCQ0FERUtJRElBWW9BZ3doQUNBR1FSQnFKQUFnQUF0QUFDQUNJQU1nQUVFSWFpQUFLQUlJS0FJQUVRQUFJZ0FnQUVHb0FXb2dCU0FFUVFBUTRnSWdBR3NpQUVHbkFVd0VRQ0FCSUFCQkRHMUJCMjgyQWdBTEM0VUJBUUovSXdCQkVHc2lCaVFBSUFZZ0FUWUNEQ0FHSUFNb0Fod2lBVFlDQ0NBQklBRW9BZ1JCQVdvMkFnUWdCaWdDQ0JDR0FpRURJQVlvQWdnaUFTQUJLQUlFUVFGcklnYzJBZ1FnQjBGL1JnUkFJQUVnQVNnQ0FDZ0NDQkVCQUFzZ0FDQUZRUkJxSUFaQkRHb2dBaUFFSUFNUXBBTWdCaWdDRENFQUlBWkJFR29rQUNBQUMwQUFJQUlnQXlBQVFRaHFJQUFvQWdnb0FnUVJBQUFpQUNBQVFhQUNhaUFGSUFSQkFCRGlBaUFBYXlJQVFaOENUQVJBSUFFZ0FFRU1iVUVNYnpZQ0FBc0xnd0VCQVg4akFFRVFheUlBSkFBZ0FDQUJOZ0lNSUFBZ0F5Z0NIQ0lCTmdJSUlBRWdBU2dDQkVFQmFqWUNCQ0FBS0FJSUVJWUNJUU1nQUNnQ0NDSUJJQUVvQWdSQkFXc2lCallDQkNBR1FYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUZRUlJxSUFCQkRHb2dBaUFFSUFNUXBnTWdBQ2dDRENFQklBQkJFR29rQUNBQkMwSUFJQUVnQWlBRElBUkJCQkNuQXlFQklBTXRBQUJCQkhGRkJFQWdBQ0FCUWRBUGFpQUJRZXdPYWlBQklBRkI1QUJJR3lBQlFjVUFTQnRCN0E1ck5nSUFDd3UxQWdFRWZ5TUFRUkJySWdja0FDQUhJQUUyQWd4QkFDRUJRUVloQmdKQUFrQWdBQ0FIUVF4cUVJY0NEUUJCQkNFR0lBTkJ3QUFDZnlBQUtBSUFJZ1VvQWd3aUNDQUZLQUlRUmdSQUlBVWdCU2dDQUNnQ0pCRUFBQXdCQ3lBSUtBSUFDeUlGSUFNb0FnQW9BZ3dSQkFCRkRRQWdBeUFGUVFBZ0F5Z0NBQ2dDTkJFRUFDRUJBMEFDUUNBQlFUQnJJUUVnQUJDSkFpSUZJQWRCREdvUWh3SU5BQ0FFUVFKSURRQWdBMEhBQUFKL0lBVW9BZ0FpQmlnQ0RDSUZJQVlvQWhCR0JFQWdCaUFHS0FJQUtBSWtFUUFBREFFTElBVW9BZ0FMSWdZZ0F5Z0NBQ2dDREJFRUFFVU5BeUFFUVFGcklRUWdBeUFHUVFBZ0F5Z0NBQ2dDTkJFRUFDQUJRUXBzYWlFQkRBRUxDMEVDSVFZZ0JTQUhRUXhxRUljQ1JRMEJDeUFDSUFJb0FnQWdCbkkyQWdBTElBZEJFR29rQUNBQkM2Z1BBUU4vSXdCQk1Hc2lCeVFBSUFjZ0FUWUNMQ0FFUVFBMkFnQWdCeUFES0FJY0lnZzJBZ0FnQ0NBSUtBSUVRUUZxTmdJRUlBY29BZ0FRaGdJaENDQUhLQUlBSWdrZ0NTZ0NCRUVCYXlJS05nSUVJQXBCZjBZRVFDQUpJQWtvQWdBb0FnZ1JBUUFMQW44Q1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFaQndRQnJEamtBQVJjRUZ3VVhCZ2NYRnhjS0Z4Y1hGdzRQRUJjWEZ4TVZGeGNYRnhjWEZ3QUJBZ01ERnhjQkZ3Z1hGd2tMRnd3WERSY0xGeGNSRWhRV0N5QUFJQVZCR0dvZ0IwRXNhaUFDSUFRZ0NCQ2lBd3dZQ3lBQUlBVkJFR29nQjBFc2FpQUNJQVFnQ0JDa0F3d1hDeUFISUFBZ0FTQUNJQU1nQkNBRklBQkJDR29nQUNnQ0NDZ0NEQkVBQUNJQUtBSUFJQUFnQUMwQUN5SUJRWUFCY1VFSGRoc2lBaUFDSUFBb0FnUWdBVUgvQUhFZ0FVR0FBWEZCQjNZYlFRSjBhaENlQXpZQ0xBd1dDeUFIUVN4cUlBSWdCQ0FJUVFJUXB3TWhBQ0FFS0FJQUlRRUNRQUpBSUFCQkFXdEJIa3NOQUNBQlFRUnhEUUFnQlNBQU5nSU1EQUVMSUFRZ0FVRUVjallDQUFzTUZRc2dCMEhvdVJNcEF3QTNBeGdnQjBIZ3VSTXBBd0EzQXhBZ0IwSFl1Uk1wQXdBM0F3Z2dCMEhRdVJNcEF3QTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCSUdvUW5nTTJBaXdNRkFzZ0IwR0l1aE1wQXdBM0F4Z2dCMEdBdWhNcEF3QTNBeEFnQjBINHVSTXBBd0EzQXdnZ0IwSHd1Uk1wQXdBM0F3QWdCeUFBSUFFZ0FpQURJQVFnQlNBSElBZEJJR29RbmdNMkFpd01Fd3NnQjBFc2FpQUNJQVFnQ0VFQ0VLY0RJUUFnQkNnQ0FDRUJBa0FDUUNBQVFSZEtEUUFnQVVFRWNRMEFJQVVnQURZQ0NBd0JDeUFFSUFGQkJISTJBZ0FMREJJTElBZEJMR29nQWlBRUlBaEJBaENuQXlFQUlBUW9BZ0FoQVFKQUFrQWdBRUVCYTBFTFN3MEFJQUZCQkhFTkFDQUZJQUEyQWdnTUFRc2dCQ0FCUVFSeU5nSUFDd3dSQ3lBSFFTeHFJQUlnQkNBSVFRTVFwd01oQUNBRUtBSUFJUUVDUUFKQUlBQkI3UUpLRFFBZ0FVRUVjUTBBSUFVZ0FEWUNIQXdCQ3lBRUlBRkJCSEkyQWdBTERCQUxJQWRCTEdvZ0FpQUVJQWhCQWhDbkF5RUJJQVFvQWdBaEFBSkFBa0FnQVVFQmF5SUJRUXRMRFFBZ0FFRUVjUTBBSUFVZ0FUWUNFQXdCQ3lBRUlBQkJCSEkyQWdBTERBOExJQWRCTEdvZ0FpQUVJQWhCQWhDbkF5RUFJQVFvQWdBaEFRSkFBa0FnQUVFN1NnMEFJQUZCQkhFTkFDQUZJQUEyQWdRTUFRc2dCQ0FCUVFSeU5nSUFDd3dPQ3lBSFFTeHFJUUFqQUVFUWF5SUJKQUFnQVNBQ05nSU1BMEFDUUNBQUlBRkJER29RaHdJTkFDQUlRUUVDZnlBQUtBSUFJZ0lvQWd3aUF5QUNLQUlRUmdSQUlBSWdBaWdDQUNnQ0pCRUFBQXdCQ3lBREtBSUFDeUFJS0FJQUtBSU1FUVFBUlEwQUlBQVFpUUlhREFFTEN5QUFJQUZCREdvUWh3SUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBRkJFR29rQUF3TkN5QUhRU3hxSVFFQ1FDQUFRUWhxSUFBb0FnZ29BZ2dSQUFBaUFDZ0NCQ0FBTFFBTElnTkIvd0J4SUFOQmdBRnhRUWQyRzBFQUlBQW9BaEFnQUMwQUZ5SURRZjhBY1NBRFFZQUJjVUVIZGh0clJnUkFJQVFnQkNnQ0FFRUVjallDQUF3QkN5QUJJQUlnQUNBQVFSaHFJQWdnQkVFQUVPSUNJUUlnQlNnQ0NDRUJBa0FnQUNBQ1J3MEFJQUZCREVjTkFDQUZRUUEyQWdnTUFRc0NRQ0FDSUFCclFReEhEUUFnQVVFTFNnMEFJQVVnQVVFTWFqWUNDQXNMREF3TElBZEJrTG9UUVN3UUt5SUdJQUFnQVNBQ0lBTWdCQ0FGSUFZZ0JrRXNhaENlQXpZQ0xBd0xDeUFIUWRDNkV5Z0NBRFlDRUNBSFFjaTZFeWtEQURjRENDQUhRY0M2RXlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVVYWhDZUF6WUNMQXdLQ3lBSFFTeHFJQUlnQkNBSVFRSVFwd01oQUNBRUtBSUFJUUVDUUFKQUlBQkJQRW9OQUNBQlFRUnhEUUFnQlNBQU5nSUFEQUVMSUFRZ0FVRUVjallDQUFzTUNRc2dCMEg0dWhNcEF3QTNBeGdnQjBId3VoTXBBd0EzQXhBZ0IwSG91aE1wQXdBM0F3Z2dCMEhndWhNcEF3QTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCSUdvUW5nTTJBaXdNQ0FzZ0IwRXNhaUFDSUFRZ0NFRUJFS2NESVFBZ0JDZ0NBQ0VCQWtBQ1FDQUFRUVpLRFFBZ0FVRUVjUTBBSUFVZ0FEWUNHQXdCQ3lBRUlBRkJCSEkyQWdBTERBY0xJQUFnQVNBQ0lBTWdCQ0FGSUFBb0FnQW9BaFFSQlFBTUJ3c2dCeUFBSUFFZ0FpQURJQVFnQlNBQVFRaHFJQUFvQWdnb0FoZ1JBQUFpQUNnQ0FDQUFJQUF0QUFzaUFVR0FBWEZCQjNZYklnSWdBaUFBS0FJRUlBRkIvd0J4SUFGQmdBRnhRUWQyRzBFQ2RHb1FuZ00yQWl3TUJRc2dCVUVVYWlBSFFTeHFJQUlnQkNBSUVLWUREQVFMSUFkQkxHb2dBaUFFSUFoQkJCQ25BeUVBSUFRdEFBQkJCSEZGQkVBZ0JTQUFRZXdPYXpZQ0ZBc01Bd3NnQmtFbFJnMEJDeUFFSUFRb0FnQkJCSEkyQWdBTUFRc2pBRUVRYXlJQUpBQWdBQ0FDTmdJTVFRWWhBUUpBQWtBZ0IwRXNhaUlESUFCQkRHb1Fod0lOQUVFRUlRRWdDQUovSUFNb0FnQWlBaWdDRENJRklBSW9BaEJHQkVBZ0FpQUNLQUlBS0FJa0VRQUFEQUVMSUFVb0FnQUxRUUFnQ0NnQ0FDZ0NOQkVFQUVFbFJ3MEFRUUloQVNBREVJa0NJQUJCREdvUWh3SkZEUUVMSUFRZ0JDZ0NBQ0FCY2pZQ0FBc2dBRUVRYWlRQUN5QUhLQUlzQ3lFQUlBZEJNR29rQUNBQUM0b0NBQ01BUVlBQmF5SUNKQUFnQWlBQ1FmUUFhallDRENBQUtBSUlJQUpCRUdvaUF5QUNRUXhxSUFRZ0JTQUdFS29ESUFJb0Fnd2hCaU1BUVJCcklnUWtBQ01BUVNCcklnQWtBQ01BUVJCcklnVWtBQ0FGSUFZMkFnd2dBQ0FETmdJWUlBQWdCU2dDRERZQ0hDQUZRUkJxSkFBZ0FDZ0NHQ0VGSUFBb0Fod2hCaU1BUVJCcklnTWtBQ0FESUFFMkFnd0RRQ0FGSUFaSEJFQWdBMEVNYWlBRkxBQUFFUDBCSUFWQkFXb2hCUXdCQ3dzZ0FDQUdOZ0lRSUFBZ0F5Z0NERFlDRkNBRFFSQnFKQUFnQUNnQ0VDRUJJQUFnQUNnQ0ZEWUNEQ0FFSUFFMkFnZ2dCQ0FBS0FJTU5nSU1JQUJCSUdva0FDQUVLQUlNSVFBZ0JFRVFhaVFBSUFKQmdBRnFKQUFnQUF0cUFRRi9Jd0JCRUdzaUJpUUFJQVpCQURvQUR5QUdJQVU2QUE0Z0JpQUVPZ0FOSUFaQkpUb0FEQ0FGQkVBZ0JpMEFEU0VFSUFZZ0JpMEFEam9BRFNBR0lBUTZBQTRMSUFJZ0FTQUNLQUlBSUFGcklBWkJER29nQXlBQUVDQWdBV28yQWdBZ0JrRVFhaVFBQzhBREFRSi9Jd0JCb0FOcklnY2tBQ0FISUFkQm9BTnFJZ00yQWd3akFFR1FBV3NpQWlRQUlBSWdBa0dFQVdvMkFod2dBQ2dDQ0NBQ1FTQnFJZ2dnQWtFY2FpQUVJQVVnQmhDcUF5QUNRZ0EzQXhBZ0FpQUlOZ0lNSUFjb0Fnd2dCMEVRYWlJRWEwRUNkU0VHSUFBb0FnZ2hBQ01BUVJCcklnVWtBQ0FGUVF4cUlBQVEzd0loQUNBRUlBSkJER29nQmlBQ1FSQnFFTEFDSVFZZ0FDZ0NBQ0lBQkVCQnpKa1VLQUlBR2lBQUJFQkJ6SmtVUWR5aUZDQUFJQUJCZjBZYk5nSUFDd3NnQlVFUWFpUUFJQVpCZjBZRVFCRFZBUUFMSUFjZ0JDQUdRUUowYWpZQ0RDQUNRWkFCYWlRQUlBY29BZ3doQmlNQVFSQnJJZ0lrQUNNQVFTQnJJZ0FrQUNNQVFSQnJJZ1VrQUNBRklBWTJBZ3dnQUNBRU5nSVlJQUFnQlNnQ0REWUNIQ0FGUVJCcUpBQWdBQ2dDR0NFRklBQW9BaHdoQmlNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dEUUNBRklBWkhCRUFnQkVFTWFpQUZLQUlBRUlzQ0lBVkJCR29oQlF3QkN3c2dBQ0FHTmdJUUlBQWdCQ2dDRERZQ0ZDQUVRUkJxSkFBZ0FDZ0NFQ0VCSUFBZ0FDZ0NGRFlDRENBQ0lBRTJBZ2dnQWlBQUtBSU1OZ0lNSUFCQklHb2tBQ0FDS0FJTUlRQWdBa0VRYWlRQUlBTWtBQ0FBQ3dVQVFmOEFDeEFBSUFCQ0FEY0NBQ0FBUVFBMkFnZ0xKd0FqQUVFUWF5SUJKQUFnQUVFQk9nQUxJQUJCQVVFdEVKRUNRUUE2QUFFZ0FVRVFhaVFBQ3d3QUlBQkJnb2FBSURZQUFBc0lBRUgvLy8vL0J3c01BQ0FBUVFGQkxSQ0tBeG9MTlFBZ0FTMEFDMEdBQVhGQkIzWkZCRUFnQUNBQktRSUFOd0lBSUFBZ0FTZ0NDRFlDQ0E4TElBQWdBU2dDQUNBQktBSUVFSFlMOHdRQkFuOGpBRUdRQW1zaUFDUUFJQUFnQWpZQ2lBSWdBQ0FCTmdLTUFpQUFRZFlBTmdJUUlBQkJtQUZxSWdjZ0FFR2dBV28yQWdBZ0J5QUFLQUlRTmdJRUlBQkJrQUZxSWdnZ0JDZ0NIQ0lCTmdJQUlBRWdBU2dDQkVFQmFqWUNCQ0FBS0FLUUFSRHpBU0VCSUFCQkFEb0Fqd0VDUUNBQVFZd0NhaUFDSUFNZ0NDQUVLQUlFSUFVZ0FFR1BBV29nQVNBSElBQkJsQUZxSUFCQmhBSnFFTFFEUlEwQUlBQkI3dVVTS0FBQU5nQ0hBU0FBUWVmbEVpa0FBRGNEZ0FFZ0FTQUFRWUFCYWlBQVFZb0JhaUFBUWZZQWFpQUJLQUlBS0FJZ0VRWUFHaUFBUWRRQU5nSVFJQUJCQ0dvaUEwRUFOZ0lBSUFNZ0FFRVFhaUlFS0FJQU5nSUVBa0FnQUNnQ2xBRWlBU0FIS0FJQWF5SUNRZU1BVGdSQUlBSkJBbW9RTXlFRUlBTW9BZ0FoQWlBRElBUTJBZ0FnQWdSQUlBSWdBeWdDQkJFQkFBc2dBeWdDQUNJRVJRMEJDeUFBTFFDUEFRUkFJQVJCTFRvQUFDQUVRUUZxSVFRTElBY29BZ0FoQWdOQUlBRWdBazBFUUFKQUlBUkJBRG9BQUNBQUlBWTJBZ0FnQUVFUWFrR0J3QUFnQUJCcFFRRkhEUUFnQXlnQ0FDRUJJQU5CQURZQ0FDQUJCRUFnQVNBREtBSUVFUUVBQ3d3RUN3VWdCQ0FBUWZZQWFpSUJJQUZCQ21vZ0FpMEFBQkRJQWlBQWF5QUFhaTBBQ2pvQUFDQUVRUUZxSVFRZ0FrRUJhaUVDSUFBb0FwUUJJUUVNQVFzTEVOVUJBQXNRMVFFQUN5QUFRWXdDYWlBQVFZZ0NhaEQxQVFSQUlBVWdCU2dDQUVFQ2NqWUNBQXNnQUNnQ2pBSWhBaUFBS0FLUUFTSUJJQUVvQWdSQkFXc2lBellDQkNBRFFYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUhLQUlBSVFFZ0IwRUFOZ0lBSUFFRVFDQUJJQWNvQWdRUkFRQUxJQUJCa0FKcUpBQWdBZ3VHR0FFUGZ5TUFRWkFFYXlJTEpBQWdDeUFLTmdLSUJDQUxJQUUyQW93RUFrQWdBQ0FMUVl3RWFoRDFBUVJBSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQVFzZ0MwSFdBRFlDVENBTFFlZ0FhaUlCSUF0QjhBQnFOZ0lBSUFFZ0MwSE1BR29pRVNnQ0FEWUNCQ0FMSUFFaUV5Z0NBQ0lPTmdKa0lBc2dEa0dRQTJvMkFtQWdFVUlBTndJQUlCRkJBRFlDQ0NBTFFVQnJJZzlDQURjQ0FDQVBRUUEyQWdnZ0MwRTBhaUlNUWdBM0FnQWdERUVBTmdJSUlBdEJLR29pRFVJQU53SUFJQTFCQURZQ0NDQUxRUnhxSWhKQ0FEY0NBQ0FTUVFBMkFnZ2dBeWdDQUNFQkl3QkJFR3NpQXlRQUlBc0NmeUFDQkVBZ0EwRUVhaUlDSUFFUXVBTWlBU0FCS0FJQUtBSXNFUUlBSUFzZ0F5Z0NCRFlBWENBQ0lBRWdBU2dDQUNnQ0lCRUNBQ0FOSUFJUWpBSWdBaEMvQWhvZ0FpQUJJQUVvQWdBb0Fod1JBZ0FnRENBQ0VJd0NJQUlRdndJYUlBc2dBU0FCS0FJQUtBSU1FUUFBT2dCYklBc2dBU0FCS0FJQUtBSVFFUUFBT2dCYUlBSWdBU0FCS0FJQUtBSVVFUUlBSUJFZ0FoQ01BaUFDRUw4Q0dpQUNJQUVnQVNnQ0FDZ0NHQkVDQUNBUElBSVFqQUlnQWhDL0Fob2dBU0FCS0FJQUtBSWtFUUFBREFFTElBTkJCR29pQWlBQkVMa0RJZ0VnQVNnQ0FDZ0NMQkVDQUNBTElBTW9BZ1EyQUZ3Z0FpQUJJQUVvQWdBb0FpQVJBZ0FnRFNBQ0VJd0NJQUlRdndJYUlBSWdBU0FCS0FJQUtBSWNFUUlBSUF3Z0FoQ01BaUFDRUw4Q0dpQUxJQUVnQVNnQ0FDZ0NEQkVBQURvQVd5QUxJQUVnQVNnQ0FDZ0NFQkVBQURvQVdpQUNJQUVnQVNnQ0FDZ0NGQkVDQUNBUklBSVFqQUlnQWhDL0Fob2dBaUFCSUFFb0FnQW9BaGdSQWdBZ0R5QUNFSXdDSUFJUXZ3SWFJQUVnQVNnQ0FDZ0NKQkVBQUFzMkFoZ2dBMEVRYWlRQUlBa2dDQ2dDQURZQ0FDQUVRWUFFY1NFV0lBc29BaGdoRkNBTExRQmZJUmNnQ3kwQVd5RVlJQXN0QUZvaEdTQU9JUVJCQUNFQ0EwQUNRQUpBQWtBQ1FDQUNRUVJHRFFBZ0FDQUxRWXdFYWhEMUFRMEFRUUFoQVFKQUFrQUNRQUpBQWtBQ1FBSkFJQXRCM0FCcUlBSnFMQUFBRGdVQkFBUURCUWtMSUFKQkEwWU5DQUovSUFBb0FnQWlBU2dDRENJRElBRW9BaEJHQkVBZ0FTQUJLQUlBS0FJa0VRQUFEQUVMSUFNdEFBQUx3Q0VCSUFjb0FnZ2hBeUFCUVFCT0JIOGdBeUFCUWY4QmNVRUNkR29vQWdCQkFYRUZRUUFMQkVBZ0MwRVFhaUFBRUxVRElCSWdDeXdBRUJDR0FRd0NDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQWtMSUFKQkEwWU5Cd3NEUUNBQUlBdEJqQVJxRVBVQkRRY0NmeUFBS0FJQUlnRW9BZ3dpQXlBQktBSVFSZ1JBSUFFZ0FTZ0NBQ2dDSkJFQUFBd0JDeUFETFFBQUM4QWhBU0FIS0FJSUlRTWdBVUVBVGdSL0lBTWdBVUgvQVhGQkFuUnFLQUlBUVFGeEJVRUFDMFVOQnlBTFFSQnFJQUFRdFFNZ0VpQUxMQUFRRUlZQkRBQUxBQXNDUUNBTUtBSUVJQXd0QUFzaUFVSC9BSEVnQVVHQUFYRkJCM1liUlEwQUFuOGdBQ2dDQUNJQktBSU1JZ01nQVNnQ0VFWUVRQ0FCSUFFb0FnQW9BaVFSQUFBTUFRc2dBeTBBQUF2QVFmOEJjU0FNS0FJQUlBd2dEQzBBQzBHQUFYRkJCM1liTFFBQVJ3MEFJQUFROXdFYUlBWkJBRG9BQUNBTUlCQWdEQ2dDQkNBTUxRQUxJZ0ZCL3dCeElBRkJnQUZ4UVFkMkcwRUJTeHNoRUF3R0N5QU5LQUlFSWdvZ0RTMEFDeUlCUWY4QWNTQUJRWUFCY1VFSGRoc0VRQUovSUFBb0FnQWlBU2dDRENJRElBRW9BaEJHQkVBZ0FTQUJLQUlBS0FJa0VRQUFEQUVMSUFNdEFBQUx3RUgvQVhFZ0RTZ0NBQ0FOSUEwdEFBdEJnQUZ4UVFkMkd5MEFBRVlOQXlBTktBSUVJUW9nRFMwQUN5RUJDd0pBSUF3b0FnUWdEQzBBQ3lJRFFmOEFjU0FEUVlBQmNVRUhkaHNpQTBVTkFDQUtJQUZCL3dCeElBRkJnQUZ4UVFkMkcwVU5BQ0FGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQWNMSUFNZ0NpQUJRZjhBY1NBQlFZQUJjVUVIZGhzaUFYSkZEUVVnQmlBQlJUb0FBQXdGQ3dKQUlBSkJBa2tOQUNBUURRQWdGZzBBSUFKQkFrWWdGMEVBUjNFTkFFRUFJUkFNQlFzZ0N5QVBFUFFDTmdJUUFrQWdBa1VOQUNBQ0lBdHFMUUJiUVFGTERRQURRQUpBSUE4UTlRSWdDeWdDRUNJQlJnMEFJQWNvQWdnaEF5QUJMQUFBSWdGQkFFNEVmeUFESUFGQi93RnhRUUowYWlnQ0FFRUJjUVZCQUF0RkRRQWdDeUFMS0FJUVFRRnFOZ0lRREFFTEN5QVBFUFFDSVFFZ0N5Z0NFQ0FCYXlJQklCSW9BZ1FnRWkwQUN5SURRZjhBY1NBRFFZQUJjVUVIZGh0TkJFQWdFaEQxQWtFQUlBRnJFTG9ESVFvZ0VoRDFBaUVESUE4UTlBSWhGU01BUVJCcklnRWtBQ0FCSUJVMkFnZ2dBU0FLTmdJTUEwQUNRQ0FESUFwSEloVkZEUUFnQ2kwQUFDQUJLQUlJTFFBQVJ3MEFJQUVnQVNnQ0RFRUJhallDRENBQklBRW9BZ2hCQVdvMkFnZ2dBU2dDRENFS0RBRUxDeUFCUVJCcUpBQWdGVVVOQVFzZ0N5QVBFUFFDTmdJTUlBc2dDeWdDRERZQ0VBc2dDeUFMS0FJUU5nSU1BMEFDUUNBUEVQVUNJQXNvQWd4R0RRQWdBQ0FMUVl3RWFoRDFBUTBBQW44Z0FDZ0NBQ0lCS0FJTUlnTWdBU2dDRUVZRVFDQUJJQUVvQWdBb0FpUVJBQUFNQVFzZ0F5MEFBQXZBUWY4QmNTQUxLQUlNTFFBQVJ3MEFJQUFROXdFYUlBc2dDeWdDREVFQmFqWUNEQXdCQ3dzZ0ZrVU5CQ0FQRVBVQ0lBc29BZ3hHRFFRZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3RkN3TkFBa0FnQUNBTFFZd0VhaEQxQVEwQUFuOGdBQ2dDQUNJREtBSU1JZ29nQXlnQ0VFWUVRQ0FESUFNb0FnQW9BaVFSQUFBTUFRc2dDaTBBQUF2QUlRb0NmeUFIS0FJSUlRTWdDa0VBVGdSL0lBTWdDa0gvQVhGQkFuUnFLQUlBUWNBQWNRVkJBQXNFUUNBSktBSUFJZ01nQ3lnQ2lBUkdCRUFnQ0NBSklBdEJpQVJxRUxZRElBa29BZ0FoQXdzZ0NTQURRUUZxTmdJQUlBTWdDam9BQUNBQlFRRnFEQUVMSUJFb0FnUWdFUzBBQ3lJRFFmOEFjU0FEUVlBQmNVRUhkaHRGRFFFZ0FVVU5BU0FLUWY4QmNTQVpSdzBCSUFzb0FtQWdCRVlFUUNBVElBdEI1QUJxSUF0QjRBQnFFTGNESUFzb0FtUWhCQXNnQ3lBRVFRUnFJZzQyQW1RZ0JDQUJOZ0lBSUE0aEJFRUFDeUVCSUFBUTl3RWFEQUVMQ3dKQUlCTW9BZ0FnRGtZTkFDQUJSUTBBSUFzb0FtQWdEa1lFUUNBVElBdEI1QUJxSUF0QjRBQnFFTGNESUFzb0FtUWhEZ3NnQ3lBT1FRUnFJZ00yQW1RZ0RpQUJOZ0lBSUFNaERnc2dGRUVBVEEwQ0FrQWdBQ0FMUVl3RWFoRDFBVVVFUUFKL0lBQW9BZ0FpQVNnQ0RDSURJQUVvQWhCR0JFQWdBU0FCS0FJQUtBSWtFUUFBREFFTElBTXRBQUFMd0VIL0FYRWdHRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3RkN3TkFJQUFROXdFaEFTQVVRUUJNQkVCQkFDRVVEQVFMQWtBZ0FTQUxRWXdFYWhEMUFVVUVRQUovSUFFb0FnQWlBeWdDRENJRUlBTW9BaEJHQkVBZ0F5QURLQUlBS0FJa0VRQUFEQUVMSUFRdEFBQUx3Q0VESUFjb0FnZ2hCQ0FEUVFCT0JIOGdCQ0FEUWY4QmNVRUNkR29vQWdCQndBQnhCVUVBQ3cwQkN5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBWUxJQWtvQWdBZ0N5Z0NpQVJHQkVBZ0NDQUpJQXRCaUFScUVMWURDd0ovSUFFb0FnQWlBU2dDRENJRElBRW9BaEJHQkVBZ0FTQUJLQUlBS0FJa0VRQUFEQUVMSUFNdEFBQUx3Q0VCSUFrZ0NTZ0NBQ0lEUVFGcU5nSUFJQU1nQVRvQUFDQVVRUUZySVJRTUFBc0FDeUFBRVBjQkdpQUdRUUU2QUFBZ0RTQVFJQTBvQWdRZ0RTMEFDeUlCUWY4QWNTQUJRWUFCY1VFSGRodEJBVXNiSVJBTUFnc2dDeUFVTmdJWUFrQWdFRVVOQUVFQklRb0RRQ0FLSUJBb0FnUWdFQzBBQ3lJQlFmOEFjU0FCUVlBQmNVRUhkaHRQRFFFQ1FDQUFJQXRCakFScUVQVUJSUVJBQW44Z0FDZ0NBQ0lCS0FJTUlnSWdBU2dDRUVZRVFDQUJJQUVvQWdBb0FpUVJBQUFNQVFzZ0FpMEFBQXZBUWY4QmNTQUtJQkFvQWdBZ0VDQVFMUUFMUVlBQmNVRUhkaHRxTFFBQVJnMEJDeUFGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVVMSUFBUTl3RWFJQXBCQVdvaENnd0FDd0FMUVFFaEFDQVRLQUlBSWdFZ0RrWU5Ba0VBSVFBZ0MwRUFOZ0lRSUJFZ0FTQU9JQXRCRUdvUXh3SWdDeWdDRUFSQUlBVWdCU2dDQUVFRWNqWUNBQXdEQzBFQklRQU1BZ3NnRGlFRUlBa29BZ0FnQ0NnQ0FFY05BQ0FGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQUVMSUFKQkFXb2hBZ3dCQ3dzZ0VoQy9BaG9nRFJDL0Fob2dEQkMvQWhvZ0R4Qy9BaG9nRVJDL0Fob2dFeWdDQUNFQklCTkJBRFlDQUNBQkJFQWdBU0FUS0FJRUVRRUFDd3NnQzBHUUJHb2tBQ0FBQ3lBQkFYOGdBU2dDQUJENEFjQWhBaUFBSUFFb0FnQTJBZ1FnQUNBQ09nQUFDOVVCQVFaL0l3QkJFR3NpQkNRQUlBRW9BZ0FoQ0VFQUlBQW9BZ0FpQnlBQUtBSUVRZFlBUmlJRkcwRi9RUUVnQWlnQ0FDQUhheUlEUVFGMElnWWdCa0VCVFJzZ0EwSC8vLy8vQjA4YklnWVFOU0lEQkVBZ0JVVUVRQ0FBS0FJQUdpQUFRUUEyQWdBTElBUkIxQUEyQWdRZ0FDQUVRUWhxSWdBZ0F6WUNBQ0FBSUFRb0FnUTJBZ1FnQUJDN0F5RUZJQUFvQWdBaEF5QUFRUUEyQWdBZ0F3UkFJQU1nQUNnQ0JCRUJBQXNnQVNBRktBSUFJQWdnQjJ0cU5nSUFJQUlnQlNnQ0FDQUdhallDQUNBRVFSQnFKQUFQQ3hEVkFRQUwyQUVCQm44akFFRVFheUlFSkFBZ0FTZ0NBQ0VJUVFBZ0FDZ0NBQ0lHSUFBb0FnUkIxZ0JHSWdVYlFYOUJCQ0FDS0FJQUlnTWdCbXNpQjBFQmRDQURJQVpHR3lBSFFmLy8vLzhIVHhzaUJ4QTFJZ01FUUNBRlJRUkFJQUFvQWdBYUlBQkJBRFlDQUFzZ0JFSFVBRFlDQkNBQUlBUkJDR29pQUNBRE5nSUFJQUFnQkNnQ0JEWUNCQ0FBRUxzRElRVWdBQ2dDQUNFRElBQkJBRFlDQUNBREJFQWdBeUFBS0FJRUVRRUFDeUFCSUFVb0FnQWdDQ0FHYTJvMkFnQWdBaUFGS0FJQUlBZEJmSEZxTmdJQUlBUkJFR29rQUE4TEVOVUJBQXNMQUNBQVFkQ2pGQkQwQVFzTEFDQUFRY2lqRkJEMEFRczJBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNEQ0FDUVF4cUlnQWdBQ2dDQUNBQmFqWUNBQ0FBS0FJQUlRQWdBa0VRYWlRQUlBQUxQZ0VDZnlBQktBSUFJUU1nQVVFQU5nSUFJQUFvQWdBaEFpQUFJQU0yQWdBZ0FnUkFJQUlnQUNnQ0JCRUJBQXNnQUNBQlFRUnFLQUlBTmdJRUlBQUwzZ2NCQlg4akFFR1FBV3NpQUNRQUlBQWdBallDaUFFZ0FDQUJOZ0tNQVNBQVFkWUFOZ0lVSUFCQkdHb2lBU0FBUVNCcU5nSUFJQUVnQUVFVWFpSUlLQUlBTmdJRUlBQkJFR29pQ1NBRUtBSWNJZ2MyQWdBZ0J5QUhLQUlFUVFGcU5nSUVJQUFvQWhBUTh3RWhCeUFBUVFBNkFBOGdBRUdNQVdvZ0FpQURJQWtnQkNnQ0JDQUZJQUJCRDJvZ0J5QUJJQWdnQUVHRUFXb1F0QU1FUUFKQUlBWXRBQXRCZ0FGeFFRZDJCRUFnQmlnQ0FFRUFPZ0FBSUFaQkFEWUNCQXdCQ3lBR1FRQTZBQUFnQmtFQU9nQUxDeUFBTFFBUEJFQWdCaUFIUVMwZ0J5Z0NBQ2dDSEJFREFCQ0dBUXNnQjBFd0lBY29BZ0FvQWh3UkF3QWhBeUFBS0FJVUlnZEJBV3NoQkNBQktBSUFJUUlnQTBIL0FYRWhBd05BQWtBZ0FpQUVUdzBBSUFJdEFBQWdBMGNOQUNBQ1FRRnFJUUlNQVFzTEl3QkJFR3NpQ1NRQUlBWW9BZ1FnQmkwQUN5SUVJZ05CL3dCeElBTkJnQUZ4UVFkMkd5RURJQVJCZ0FGeFFRZDJCSDhnQmlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MSVFRQ1FDQUhJQUpySWdoRkRRQWdBaUFHS0FJQUlBWWdCaTBBQzBHQUFYRkJCM1liSWdwUEJIOGdDaUFHS0FJRUlBWXRBQXNpQzBIL0FIRWdDMEdBQVhGQkIzWWJhaUFDVHdWQkFBdEZCRUFnQ0NBRUlBTnJTd1JBSUFZZ0JDQURJQVJySUFocUlBTWdBeEM5QXdzZ0F5QUdLQUlBSUFZZ0JpMEFDMEdBQVhGQkIzWWJhaUVFQTBBZ0FpQUhSd1JBSUFRZ0FpMEFBRG9BQUNBQ1FRRnFJUUlnQkVFQmFpRUVEQUVMQ3lBRVFRQTZBQUFnQXlBSWFpRUNBa0FnQmkwQUMwR0FBWEZCQjNZRVFDQUdJQUkyQWdRTUFRc2dCaUFDT2dBTEN3d0JDeUFKUVFScUlBSWdCeENOQWlJRUlnSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2hCeUFFS0FJRUlBUXRBQXNpQWtIL0FIRWdBa0dBQVhGQkIzWWJJUUlDUUNBQ0lBWXRBQXRCZ0FGeFFRZDJCSDhnQmlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MSWdnZ0JpZ0NCQ0FHTFFBTElnTkIvd0J4SUFOQmdBRnhRUWQyR3lJRGEwMEVRQ0FDUlEwQklBWW9BZ0FnQmlBR0xRQUxRWUFCY1VFSGRoc2lDQ0FEYWlBSElBSVE0UUVhSUFJZ0Eyb2hBZ0pBSUFZdEFBdEJnQUZ4UVFkMkJFQWdCaUFDTmdJRURBRUxJQVlnQWpvQUN3c2dBaUFJYWtFQU9nQUFEQUVMSUFZZ0NDQUNJQWhySUFOcUlBTWdBMEVBSUFJZ0J4QzZCQXNnQkJDL0Fob0xJQWxCRUdva0FBc2dBRUdNQVdvZ0FFR0lBV29ROVFFRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0Fvd0JJUU1nQUNnQ0VDSUNJQUlvQWdSQkFXc2lCRFlDQkNBRVFYOUdCRUFnQWlBQ0tBSUFLQUlJRVFFQUN5QUJLQUlBSVFJZ0FVRUFOZ0lBSUFJRVFDQUNJQUVvQWdRUkFRQUxJQUJCa0FGcUpBQWdBd3VEQWdFRGZ5TUFRUkJySWdVa0FDQUNRZS8vLy84SElBRnJUUVJBSUFBb0FnQWdBQ0FBTFFBTFFZQUJjVUVIZGhzaEJpQUZRUVJxSUFGQjV2Ly8vd05OQkg4Z0JTQUJRUUYwTmdJTUlBVWdBU0FDYWpZQ0JDQUZRUXhxSWdJZ0JVRUVhaUlISUFjb0FnQWdBaWdDQUVrYktBSUFJZ0pCQzA4RWZ5QUNRUkJxUVhCeElnSWdBa0VCYXlJQ0lBSkJDMFliQlVFS0MwRUJhZ1ZCNy8vLy93Y0xFSTRDSUFVb0FnUWhBaUFFQkVBZ0FpQUdJQVFRNFFFYUN5QURJQVJIQkVBZ0FpQUVhaUFFSUFacUlBTWdCR3NRNFFFYUN5QUJRUXBIQkVBZ0JoQTBDeUFBSUFJMkFnQWdBQ0FGS0FJSVFZQ0FnSUI0Y2pZQ0NDQUZRUkJxSkFBUEN4QlZBQXY5QkFFQ2Z5TUFRZkFFYXlJQUpBQWdBQ0FDTmdMb0JDQUFJQUUyQXV3RUlBQkIxZ0EyQWhBZ0FFSElBV29pQnlBQVFkQUJhallDQUNBSElBQW9BaEEyQWdRZ0FFSEFBV29pQ0NBRUtBSWNJZ0UyQWdBZ0FTQUJLQUlFUVFGcU5nSUVJQUFvQXNBQkVJWUNJUUVnQUVFQU9nQy9BUUpBSUFCQjdBUnFJQUlnQXlBSUlBUW9BZ1FnQlNBQVFiOEJhaUFCSUFjZ0FFSEVBV29nQUVIZ0JHb1F2d05GRFFBZ0FFSHU1UklvQUFBMkFMY0JJQUJCNStVU0tRQUFOd093QVNBQklBQkJzQUZxSUFCQnVnRnFJQUJCZ0FGcUlBRW9BZ0FvQWpBUkJnQWFJQUJCMUFBMkFoQWdBRUVJYWlJRFFRQTJBZ0FnQXlBQVFSQnFJZ1FvQWdBMkFnUUNRQ0FBS0FMRUFTSUJJQWNvQWdCcklnSkJpUU5PQkVBZ0FrRUNkVUVDYWhBeklRUWdBeWdDQUNFQ0lBTWdCRFlDQUNBQ0JFQWdBaUFES0FJRUVRRUFDeUFES0FJQUlnUkZEUUVMSUFBdEFMOEJCRUFnQkVFdE9nQUFJQVJCQVdvaEJBc2dCeWdDQUNFQ0EwQWdBU0FDVFFSQUFrQWdCRUVBT2dBQUlBQWdCallDQUNBQVFSQnFRWUhBQUNBQUVHbEJBVWNOQUNBREtBSUFJUUVnQTBFQU5nSUFJQUVFUUNBQklBTW9BZ1FSQVFBTERBUUxCU0FFSUFCQnNBRnFJQUJCZ0FGcUlnRWdBVUVvYWlBQ0tBSUFFT2dDSUFGclFRSjFhaTBBQURvQUFDQUVRUUZxSVFRZ0FrRUVhaUVDSUFBb0FzUUJJUUVNQVFzTEVOVUJBQXNRMVFFQUN5QUFRZXdFYWlBQVFlZ0VhaENIQWdSQUlBVWdCU2dDQUVFQ2NqWUNBQXNnQUNnQzdBUWhBaUFBS0FMQUFTSUJJQUVvQWdSQkFXc2lBellDQkNBRFFYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUhLQUlBSVFFZ0IwRUFOZ0lBSUFFRVFDQUJJQWNvQWdRUkFRQUxJQUJCOEFScUpBQWdBZ3YyRmdFTWZ5TUFRWkFFYXlJTEpBQWdDeUFLTmdLSUJDQUxJQUUyQW93RUFrQWdBQ0FMUVl3RWFoQ0hBZ1JBSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQVFzZ0MwSFdBRFlDU0NBTFFlZ0FhaUlCSUF0QjhBQnFOZ0lBSUFFZ0MwSElBR29pRVNnQ0FEWUNCQ0FMSUFFaUZDZ0NBQ0lCTmdKa0lBc2dBVUdRQTJvMkFtQWdFVUlBTndJQUlCRkJBRFlDQ0NBTFFUeHFJZzVDQURjQ0FDQU9RUUEyQWdnZ0MwRXdhaUlNUWdBM0FnQWdERUVBTmdJSUlBdEJKR29pRFVJQU53SUFJQTFCQURZQ0NDQUxRUmhxSWhKQ0FEY0NBQ0FTUVFBMkFnZ2dBeWdDQUNFUUl3QkJFR3NpQ2lRQUlBc0NmeUFDQkVBZ0NrRUVhaUlESUJBUXdnTWlBaUFDS0FJQUtBSXNFUUlBSUFzZ0NpZ0NCRFlBWENBRElBSWdBaWdDQUNnQ0lCRUNBQ0FOSUFNUXd3TWdBeERqQWhvZ0F5QUNJQUlvQWdBb0Fod1JBZ0FnRENBREVNTURJQU1RNHdJYUlBc2dBaUFDS0FJQUtBSU1FUUFBTmdKWUlBc2dBaUFDS0FJQUtBSVFFUUFBTmdKVUlBTWdBaUFDS0FJQUtBSVVFUUlBSUJFZ0F4Q01BaUFERUw4Q0dpQURJQUlnQWlnQ0FDZ0NHQkVDQUNBT0lBTVF3d01nQXhEakFob2dBaUFDS0FJQUtBSWtFUUFBREFFTElBcEJCR29pQXlBUUVNUURJZ0lnQWlnQ0FDZ0NMQkVDQUNBTElBb29BZ1EyQUZ3Z0F5QUNJQUlvQWdBb0FpQVJBZ0FnRFNBREVNTURJQU1RNHdJYUlBTWdBaUFDS0FJQUtBSWNFUUlBSUF3Z0F4RERBeUFERU9NQ0dpQUxJQUlnQWlnQ0FDZ0NEQkVBQURZQ1dDQUxJQUlnQWlnQ0FDZ0NFQkVBQURZQ1ZDQURJQUlnQWlnQ0FDZ0NGQkVDQUNBUklBTVFqQUlnQXhDL0Fob2dBeUFDSUFJb0FnQW9BaGdSQWdBZ0RpQURFTU1ESUFNUTR3SWFJQUlnQWlnQ0FDZ0NKQkVBQUFzMkFoUWdDa0VRYWlRQUlBa2dDQ2dDQURZQ0FDQUVRWUFFY1NFVklBc29BaFFoRUVFQUlRSURRQUpBQWtBQ1FBSkFBa0FnQWtFRVJnMEFJQUFnQzBHTUJHb1Fod0lOQUFKQUFrQUNRQUpBQWtBQ1FBSkFJQXRCM0FCcUlBSnFMQUFBRGdVQkFBUURCUW9MSUFKQkEwWU5DU0FIUVFFQ2Z5QUFLQUlBSWdNb0Fnd2lCQ0FES0FJUVJnUkFJQU1nQXlnQ0FDZ0NKQkVBQUF3QkN5QUVLQUlBQ3lBSEtBSUFLQUlNRVFRQUJFQWdDMEVNYWlBQUVNQURJQklnQ3lnQ0RCREJBd3dDQ3lBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFvTElBSkJBMFlOQ0FzRFFDQUFJQXRCakFScUVJY0NEUWdnQjBFQkFuOGdBQ2dDQUNJREtBSU1JZ1FnQXlnQ0VFWUVRQ0FESUFNb0FnQW9BaVFSQUFBTUFRc2dCQ2dDQUFzZ0J5Z0NBQ2dDREJFRUFFVU5DQ0FMUVF4cUlBQVF3QU1nRWlBTEtBSU1FTUVEREFBTEFBc0NRQ0FNS0FJRUlBd3RBQXNpQTBIL0FIRWdBMEdBQVhGQkIzWWJSUTBBQW44Z0FDZ0NBQ0lES0FJTUlnUWdBeWdDRUVZRVFDQURJQU1vQWdBb0FpUVJBQUFNQVFzZ0JDZ0NBQXNnRENnQ0FDQU1JQXd0QUF0QmdBRnhRUWQyR3lnQ0FFY05BQ0FBRUlrQ0dpQUdRUUE2QUFBZ0RDQVBJQXdvQWdRZ0RDMEFDeUlEUWY4QWNTQURRWUFCY1VFSGRodEJBVXNiSVE4TUJ3c2dEU2dDQkNJS0lBMHRBQXNpQkNJRFFmOEFjU0FEUVlBQmNVRUhkaHNFUUFKL0lBQW9BZ0FpQXlnQ0RDSUVJQU1vQWhCR0JFQWdBeUFES0FJQUtBSWtFUUFBREFFTElBUW9BZ0FMSUEwb0FnQWdEU0FOTFFBTFFZQUJjVUVIZGhzb0FnQkdEUU1nRFNnQ0JDRUtJQTB0QUFzaEJBc0NRQ0FNS0FJRUlBd3RBQXNpQTBIL0FIRWdBMEdBQVhGQkIzWWJJZ05GRFFBZ0NpQUVRZjhBY1NBRVFZQUJjVUVIZGh0RkRRQWdCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0lDeUFESUFvZ0JFSC9BSEVnQkVHQUFYRkJCM1liSWdSeVJRMEdJQVlnQkVVNkFBQU1CZ3NDUUNBQ1FRSkpEUUFnRHcwQUlCVU5BQ0FDUVFKR0lBc3RBRjlCQUVkeERRQkJBQ0VQREFZTElBc2dEaEQwQWpZQ0RBSkFJQUpGRFFBZ0FpQUxhaTBBVzBFQlN3MEFBMEFDUUNBT0VJWURJQXNvQWd3aUEwWU5BQ0FIUVFFZ0F5Z0NBQ0FIS0FJQUtBSU1FUVFBUlEwQUlBc2dDeWdDREVFRWFqWUNEQXdCQ3dzZ0RoRDBBaUVESUFzb0Fnd2dBMnRCQW5VaUF5QVNLQUlFSUJJdEFBc2lCRUgvQUhFZ0JFR0FBWEZCQjNZYlRRUkFJQklRaGdOQkFDQURheERGQXlFS0lCSVFoZ01oQkNBT0VQUUNJUk1qQUVFUWF5SURKQUFnQXlBVE5nSUlJQU1nQ2pZQ0RBTkFBa0FnQkNBS1J5SVRSUTBBSUFvb0FnQWdBeWdDQ0NnQ0FFY05BQ0FESUFNb0FneEJCR28yQWd3Z0F5QURLQUlJUVFScU5nSUlJQU1vQWd3aENnd0JDd3NnQTBFUWFpUUFJQk5GRFFFTElBc2dEaEQwQWpZQ0NDQUxJQXNvQWdnMkFnd0xJQXNnQ3lnQ0REWUNDQU5BQWtBZ0RoQ0dBeUFMS0FJSVJnMEFJQUFnQzBHTUJHb1Fod0lOQUFKL0lBQW9BZ0FpQXlnQ0RDSUVJQU1vQWhCR0JFQWdBeUFES0FJQUtBSWtFUUFBREFFTElBUW9BZ0FMSUFzb0FnZ29BZ0JIRFFBZ0FCQ0pBaG9nQ3lBTEtBSUlRUVJxTmdJSURBRUxDeUFWUlEwRklBNFFoZ01nQ3lnQ0NFWU5CU0FGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQVlMUVFBaENpQUxLQUpVSVJZZ0FTRUVBMEFDUUNBQUlBdEJqQVJxRUljQ0RRQUNmeUFIUWNBQUFuOGdBQ2dDQUNJREtBSU1JaE1nQXlnQ0VFWUVRQ0FESUFNb0FnQW9BaVFSQUFBTUFRc2dFeWdDQUFzaUV5QUhLQUlBS0FJTUVRUUFCRUFnQ1NnQ0FDSURJQXNvQW9nRVJnUkFJQWdnQ1NBTFFZZ0VhaEMzQXlBSktBSUFJUU1MSUFrZ0EwRUVhallDQUNBRElCTTJBZ0FnQ2tFQmFnd0JDeUFSS0FJRUlCRXRBQXNpQTBIL0FIRWdBMEdBQVhGQkIzWWJSUTBCSUFwRkRRRWdFeUFXUncwQklBc29BbUFnQVVZRVFDQVVJQXRCNUFCcUlBdEI0QUJxRUxjRElBc29BbVFoQVFzZ0N5QUJRUVJxSWdRMkFtUWdBU0FLTmdJQUlBUWhBVUVBQ3lFS0lBQVFpUUlhREFFTEN5QVVLQUlBSUFSR0RRSWdDa1VOQWlBTEtBSmdJQVJHQkVBZ0ZDQUxRZVFBYWlBTFFlQUFhaEMzQXlBTEtBSmtJUVFMSUFzZ0JFRUVhaUlCTmdKa0lBUWdDallDQUF3REN5QUFFSWtDR2lBR1FRRTZBQUFnRFNBUElBMG9BZ1FnRFMwQUN5SURRZjhBY1NBRFFZQUJjVUVIZGh0QkFVc2JJUThNQXdzZ0N5QVFOZ0lVQWtBZ0QwVU5BRUVCSVFvRFFDQUtJQThvQWdRZ0R5MEFDeUlDUWY4QWNTQUNRWUFCY1VFSGRodFBEUUVDUUNBQUlBdEJqQVJxRUljQ1JRUkFBbjhnQUNnQ0FDSUNLQUlNSWdNZ0FpZ0NFRVlFUUNBQ0lBSW9BZ0FvQWlRUkFBQU1BUXNnQXlnQ0FBc2dDa0VDZENBUEtBSUFJQThnRHkwQUMwR0FBWEZCQjNZYmFpZ0NBRVlOQVFzZ0JTQUZLQUlBUVFSeU5nSUFRUUFoQUF3R0N5QUFFSWtDR2lBS1FRRnFJUW9NQUFzQUMwRUJJUUFnRkNnQ0FDSUNJQUZHRFFOQkFDRUFJQXRCQURZQ0RDQVJJQUlnQVNBTFFReHFFTWNDSUFzb0Fnd0VRQ0FGSUFVb0FnQkJCSEkyQWdBTUJBdEJBU0VBREFNTElBUWhBUXNDUUNBUVFRQk1EUUFDUUNBQUlBdEJqQVJxRUljQ1JRUkFBbjhnQUNnQ0FDSURLQUlNSWdRZ0F5Z0NFRVlFUUNBRElBTW9BZ0FvQWlRUkFBQU1BUXNnQkNnQ0FBc2dDeWdDV0VZTkFRc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0RDd05BSUFBUWlRSWhBeUFRUVFCTUJFQkJBQ0VRREFJTEFrQWdBeUFMUVl3RWFoQ0hBa1VFUUNBSFFjQUFBbjhnQXlnQ0FDSUVLQUlNSWdvZ0JDZ0NFRVlFUUNBRUlBUW9BZ0FvQWlRUkFBQU1BUXNnQ2lnQ0FBc2dCeWdDQUNnQ0RCRUVBQTBCQ3lBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFRTElBa29BZ0FnQ3lnQ2lBUkdCRUFnQ0NBSklBdEJpQVJxRUxjREN3Si9JQU1vQWdBaUF5Z0NEQ0lFSUFNb0FoQkdCRUFnQXlBREtBSUFLQUlrRVFBQURBRUxJQVFvQWdBTElRTWdDU0FKS0FJQUlnUkJCR28yQWdBZ0JDQUROZ0lBSUJCQkFXc2hFQXdBQ3dBTElBa29BZ0FnQ0NnQ0FFY05BQ0FGSUFVb0FnQkJCSEkyQWdCQkFDRUFEQUVMSUFKQkFXb2hBZ3dCQ3dzZ0VoRGpBaG9nRFJEakFob2dEQkRqQWhvZ0RoRGpBaG9nRVJDL0Fob2dGQ2dDQUNFQklCUkJBRFlDQUNBQkJFQWdBU0FVS0FJRUVRRUFDd3NnQzBHUUJHb2tBQ0FBQ3g4QkFYOGdBU2dDQUJDS0FpRUNJQUFnQVNnQ0FEWUNCQ0FBSUFJMkFnQUxsd0VCQW44Q1FBSkFBa0FDUUNBQUxRQUxJZ05CZ0FGeFFRZDJCRUFnQUNnQ0JDSURJQUFvQWdoQi8vLy8vd2R4UVFGcklnSkdEUUVNQWd0QkFTRUNJQU5CL3dCeElnTkJBVWNOQWdzZ0FDQUNRUUVnQWlBQ0VNY0RJQUloQXdzZ0FDZ0NBQ0VDSUFBZ0EwRUJhallDQkF3QkN5QUFJQU5CQVdvNkFBc2dBQ0VDQ3lBQ0lBTkJBblJxSWdBZ0FUWUNBQ0FBUVFBMkFnUUxDd0FnQUVIZ294UVE5QUVMUUFBZ0FDMEFDMEdBQVhGQkIzWUVRQ0FBS0FJSUdpQUFLQUlBRURRTElBQWdBU2tDQURjQ0FDQUFJQUVvQWdnMkFnZ2dBVUVBT2dBTElBRkJBRFlDQUFzTEFDQUFRZGlqRkJEMEFRczVBUUYvSXdCQkVHc2lBaVFBSUFJZ0FEWUNEQ0FDUVF4cUlnQWdBQ2dDQUNBQlFRSjBhallDQUNBQUtBSUFJUUFnQWtFUWFpUUFJQUFMNVFjQkJYOGpBRUhBQTJzaUFDUUFJQUFnQWpZQ3VBTWdBQ0FCTmdLOEF5QUFRZFlBTmdJVUlBQkJHR29pQVNBQVFTQnFOZ0lBSUFFZ0FFRVVhaUlJS0FJQU5nSUVJQUJCRUdvaUNTQUVLQUljSWdjMkFnQWdCeUFIS0FJRVFRRnFOZ0lFSUFBb0FoQVFoZ0loQnlBQVFRQTZBQThnQUVHOEEyb2dBaUFESUFrZ0JDZ0NCQ0FGSUFCQkQyb2dCeUFCSUFnZ0FFR3dBMm9RdndNRVFBSkFJQVl0QUF0QmdBRnhRUWQyQkVBZ0JpZ0NBRUVBTmdJQUlBWkJBRFlDQkF3QkN5QUdRUUEyQWdBZ0JrRUFPZ0FMQ3lBQUxRQVBCRUFnQmlBSFFTMGdCeWdDQUNnQ0xCRURBQkRCQXdzZ0IwRXdJQWNvQWdBb0Fpd1JBd0FoQXlBQUtBSVVJZ2RCQkdzaEJDQUJLQUlBSVFJRFFBSkFJQUlnQkU4TkFDQUNLQUlBSUFOSERRQWdBa0VFYWlFQ0RBRUxDeU1BUVJCcklna2tBQ0FHS0FJRUlBWXRBQXNpQkNJRFFmOEFjU0FEUVlBQmNVRUhkaHNoQXlBRVFZQUJjVUVIZGdSL0lBWW9BZ2hCLy8vLy93ZHhRUUZyQlVFQkN5RUVBa0FnQnlBQ2EwRUNkU0lJUlEwQUlBSWdCaWdDQUNBR0lBWXRBQXRCZ0FGeFFRZDJHeUlLVHdSL0lBb2dCaWdDQkNBR0xRQUxJZ3RCL3dCeElBdEJnQUZ4UVFkMkcwRUNkR29nQWs4RlFRQUxSUVJBSUFnZ0JDQURhMHNFUUNBR0lBUWdBeUFFYXlBSWFpQURJQU1ReHdNTElBTkJBblFnQmlnQ0FDQUdJQVl0QUF0QmdBRnhRUWQyRzJvaEJBTkFJQUlnQjBjRVFDQUVJQUlvQWdBMkFnQWdBa0VFYWlFQ0lBUkJCR29oQkF3QkN3c2dCRUVBTmdJQUlBTWdDR29oQWdKQUlBWXRBQXRCZ0FGeFFRZDJCRUFnQmlBQ05nSUVEQUVMSUFZZ0Fqb0FDd3NNQVFzZ0NVRUVhaUFDSUFjUXVBSWlCQ0lDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSVFjZ0JDZ0NCQ0FFTFFBTElnSkIvd0J4SUFKQmdBRnhRUWQyR3lFQ0FrQWdBaUFHTFFBTFFZQUJjVUVIZGdSL0lBWW9BZ2hCLy8vLy93ZHhRUUZyQlVFQkN5SUlJQVlvQWdRZ0JpMEFDeUlEUWY4QWNTQURRWUFCY1VFSGRoc2lBMnROQkVBZ0FrVU5BU0FHS0FJQUlBWWdCaTBBQzBHQUFYRkJCM1liSWdnZ0EwRUNkR29nQnlBQ0VJRUNHaUFDSUFOcUlRSUNRQ0FHTFFBTFFZQUJjVUVIZGdSQUlBWWdBallDQkF3QkN5QUdJQUk2QUFzTElBZ2dBa0VDZEdwQkFEWUNBQXdCQ3lBR0lBZ2dBaUFJYXlBRGFpQURJQU5CQUNBQ0lBY1F1d1FMSUFRUTR3SWFDeUFKUVJCcUpBQUxJQUJCdkFOcUlBQkJ1QU5xRUljQ0JFQWdCU0FGS0FJQVFRSnlOZ0lBQ3lBQUtBSzhBeUVESUFBb0FoQWlBaUFDS0FJRVFRRnJJZ1EyQWdRZ0JFRi9SZ1JBSUFJZ0FpZ0NBQ2dDQ0JFQkFBc2dBU2dDQUNFQ0lBRkJBRFlDQUNBQ0JFQWdBaUFCS0FJRUVRRUFDeUFBUWNBRGFpUUFJQU1MaEFJQkEzOGpBRUVRYXlJRkpBQWdBa0h2Ly8vL0F5QUJhMDBFUUNBQUtBSUFJQUFnQUMwQUMwR0FBWEZCQjNZYklRWWdCVUVFYWlBQlFlYi8vLzhCVFFSL0lBVWdBVUVCZERZQ0RDQUZJQUVnQW1vMkFnUWdCVUVNYWlBRlFRUnFJQVVvQWdRZ0JTZ0NERWtiS0FJQUlnSkJBazhFZnlBQ1FRUnFRWHh4SWdJZ0FrRUJheUlDSUFKQkFrWWJCVUVCQzBFQmFnVkI3Ly8vL3dNTEVMa0NJQVVvQWdRaEFpQUVCRUFnQWlBR0lBUVFnUUlhQ3lBRElBUkhCRUFnQWlBRVFRSjBJZ2RxSUFZZ0Iyb2dBeUFFYXhDQkFob0xJQUZCQVVjRVFDQUdFRFFMSUFBZ0FqWUNBQ0FBSUFVb0FnaEJnSUNBZ0hoeU5nSUlJQVZCRUdva0FBOExFRlVBQzZBSEFRcC9Jd0JCd0FOcklnQWtBQ0FBSUFVM0F4QWdBQ0FHTndNWUlBQWdBRUhRQW1vaUN6WUN6QUlnQ3lBQVFSQnFFS3dDSVFvZ0FFSFVBRFlDNEFFZ0FFSFlBV29pQzBFQU5nSUFJQXNnQUNnQzRBRTJBZ1FnQUVIVUFEWUM0QUVnQUVFQU5nTFFBU0FBSUFBb0F1QUJOZ0xVQVFKQUFrQWdDa0hrQUVrRVFDQUFRZUFCYWlFTUlBQkIwQUpxSVFnTUFRc1F5UUloQ2lBQUlBVTNBd0FnQUNBR053TUlJQUJCekFKcUlBcEIrejhnQUJDQkF5SUtRWDlHRFFFZ0N5Z0NBQ0VISUFzZ0FDZ0N6QUlpQ0RZQ0FDQUhCRUFnQnlBTEtBSUVFUUVBQ3lBS0VETWhEQ0FBS0FMUUFTRUhJQUFnRERZQzBBRWdCd1JBSUFjZ0FDZ0MxQUVSQVFBTElBQW9BdEFCSWd4RkRRRUxJQUFnQXlnQ0hDSUhOZ0xNQVNBSElBY29BZ1JCQVdvMkFnUWdBQ2dDekFFUTh3RWlFQ0lISUFnZ0NDQUthaUFNSUFjb0FnQW9BaUFSQmdBYUlBcEJBRW9FUUNBSUxRQUFRUzFHSVE0TElBQkJ1QUZxSWcxQ0FEY0NBQ0FOUVFBMkFnZ2dBRUdzQVdvaUNFSUFOd0lBSUFoQkFEWUNDQ0FBUWFBQmFpSUhRZ0EzQWdBZ0IwRUFOZ0lJSUFJZ0RpQUFLQUxNQVNBQVFjZ0JhaUFBUWNjQmFpQUFRY1lCYWlBTklBZ2dCeUFBUVp3QmFoREpBeUFBUWRRQU5nSXdJQUJCQURZQ0tDQUFJQUJCTUdvaUFpZ0NBRFlDTEFKL0lBQW9BcHdCSWc4Z0NrZ0VRQ0FLSUE5clFRRjBJQWNvQWdRZ0J5MEFDeUlKUWY4QWNTQUpRWUFCY1VFSGRodHFJQWdvQWdRZ0NDMEFDeUlKUWY4QWNTQUpRWUFCY1VFSGRodHFRUUZxREFFTElBY29BZ1FnQnkwQUN5SUpRZjhBY1NBSlFZQUJjVUVIZGhzZ0NDZ0NCQ0FJTFFBTElnbEIvd0J4SUFsQmdBRnhRUWQyRzJwQkFtb0xJQTlxSWdsQjVRQlBCRUFnQ1JBeklRa2dBQ2dDS0NFQ0lBQWdDVFlDS0NBQ0JFQWdBaUFBS0FJc0VRRUFDeUFBS0FJb0lnSkZEUUVMSUFJZ0FFRWthaUFBUVNCcUlBTW9BZ1FnRENBS0lBeHFJQkFnRGlBQVFjZ0JhaUFBTEFESEFTQUFMQURHQVNBTklBZ2dCeUFQRU1vRElBRWdBaUFBS0FJa0lBQW9BaUFnQXlBRUVLa0JJUUlnQUNnQ0tDRUJJQUJCQURZQ0tDQUJCRUFnQVNBQUtBSXNFUUVBQ3lBSEVMOENHaUFJRUw4Q0dpQU5FTDhDR2lBQUtBTE1BU0lCSUFFb0FnUkJBV3NpQXpZQ0JDQURRWDlHQkVBZ0FTQUJLQUlBS0FJSUVRRUFDeUFBS0FMUUFTRUJJQUJCQURZQzBBRWdBUVJBSUFFZ0FDZ0MxQUVSQVFBTElBc29BZ0FoQVNBTFFRQTJBZ0FnQVFSQUlBRWdDeWdDQkJFQkFBc2dBRUhBQTJva0FDQUNEd3NRMVFFQUMrOERBUUYvSXdCQkVHc2lDaVFBSUFrQ2Z5QUFCRUFnQWhDNEF5RUFBa0FnQVFSQUlBcEJCR29pQVNBQUlBQW9BZ0FvQWl3UkFnQWdBeUFLS0FJRU5nQUFJQUVnQUNBQUtBSUFLQUlnRVFJQURBRUxJQXBCQkdvaUFTQUFJQUFvQWdBb0FpZ1JBZ0FnQXlBS0tBSUVOZ0FBSUFFZ0FDQUFLQUlBS0FJY0VRSUFDeUFJSUFFUWpBSWdBUkMvQWhvZ0JDQUFJQUFvQWdBb0Fnd1JBQUE2QUFBZ0JTQUFJQUFvQWdBb0FoQVJBQUE2QUFBZ0NrRUVhaUlCSUFBZ0FDZ0NBQ2dDRkJFQ0FDQUdJQUVRakFJZ0FSQy9BaG9nQVNBQUlBQW9BZ0FvQWhnUkFnQWdCeUFCRUl3Q0lBRVF2d0lhSUFBZ0FDZ0NBQ2dDSkJFQUFBd0JDeUFDRUxrRElRQUNRQ0FCQkVBZ0NrRUVhaUlCSUFBZ0FDZ0NBQ2dDTEJFQ0FDQURJQW9vQWdRMkFBQWdBU0FBSUFBb0FnQW9BaUFSQWdBTUFRc2dDa0VFYWlJQklBQWdBQ2dDQUNnQ0tCRUNBQ0FESUFvb0FnUTJBQUFnQVNBQUlBQW9BZ0FvQWh3UkFnQUxJQWdnQVJDTUFpQUJFTDhDR2lBRUlBQWdBQ2dDQUNnQ0RCRUFBRG9BQUNBRklBQWdBQ2dDQUNnQ0VCRUFBRG9BQUNBS1FRUnFJZ0VnQUNBQUtBSUFLQUlVRVFJQUlBWWdBUkNNQWlBQkVMOENHaUFCSUFBZ0FDZ0NBQ2dDR0JFQ0FDQUhJQUVRakFJZ0FSQy9BaG9nQUNBQUtBSUFLQUlrRVFBQUN6WUNBQ0FLUVJCcUpBQUxxQWNCQ1g4Z0FpQUFOZ0lBSUFOQmdBUnhJUlVEUUNBVVFRUkdCRUFnRFNnQ0JDQU5MUUFMSWdSQi93QnhJQVJCZ0FGeFFRZDJHMEVCU3dSQUlBSWdEUkQwQWtFQkVMb0RJQTBROVFJZ0FpZ0NBQkRMQXpZQ0FBc2dBMEd3QVhFaUEwRVFSd1JBSUFFZ0EwRWdSZ1IvSUFJb0FnQUZJQUFMTmdJQUN3VUNRQUpBQWtBQ1FBSkFBa0FnQ0NBVWFpd0FBQTRGQUFFREFnUUZDeUFCSUFJb0FnQTJBZ0FNQkFzZ0FTQUNLQUlBTmdJQUlBWkJJQ0FHS0FJQUtBSWNFUU1BSVE4Z0FpQUNLQUlBSWhCQkFXbzJBZ0FnRUNBUE9nQUFEQU1MSUEwb0FnUWdEUzBBQ3lJUFFmOEFjU0FQUVlBQmNVRUhkaHRGRFFJZ0RTZ0NBQ0FOSUEwdEFBdEJnQUZ4UVFkMkd5MEFBQ0VQSUFJZ0FpZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFBd0NDeUFNS0FJRUlBd3RBQXNpRDBIL0FIRWdEMEdBQVhGQkIzWWJSU0VQSUJWRkRRRWdEdzBCSUFJZ0RCRDBBaUFNRVBVQ0lBSW9BZ0FReXdNMkFnQU1BUXNnQmlnQ0NDRVBJQUlvQWdBaEZpQUVJQWRxSWdRaEVRTkFBa0FnQlNBUlRRMEFJQkVzQUFBaUVFRUFUZ1IvSUE4Z0VFSC9BWEZCQW5ScUtBSUFRY0FBY1VFQVJ3VkJBQXRGRFFBZ0VVRUJhaUVSREFFTEN5QU9JZzlCQUVvRVFBTkFBa0FnQkNBUlR3MEFJQTlGRFFBZ0QwRUJheUVQSUJGQkFXc2lFUzBBQUNFUUlBSWdBaWdDQUNJU1FRRnFOZ0lBSUJJZ0VEb0FBQXdCQ3dzZ0R3Ui9JQVpCTUNBR0tBSUFLQUljRVFNQUJVRUFDeUVTQTBBZ0FpQUNLQUlBSWhCQkFXbzJBZ0FnRDBFQVNnUkFJQkFnRWpvQUFDQVBRUUZySVE4TUFRc0xJQkFnQ1RvQUFBc0NRQ0FFSUJGR0JFQWdCa0V3SUFZb0FnQW9BaHdSQXdBaER5QUNJQUlvQWdBaUVFRUJhallDQUNBUUlBODZBQUFNQVF0QmZ5RVFJQXNvQWdRZ0N5MEFDeUlQUWY4QWNTQVBRWUFCY1VFSGRoc0VRQ0FMS0FJQUlBc2dDeTBBQzBHQUFYRkJCM1liTEFBQUlSQUxRUUFoRDBFQUlSTURRQ0FFSUJGR0RRRUNRQ0FQSUJCSEJFQWdEeUVTREFFTElBSWdBaWdDQUNJUVFRRnFOZ0lBSUJBZ0Nqb0FBRUVBSVJJZ0UwRUJhaUlUSUFzb0FnUWdDeTBBQ3lJUVFmOEFjU0FRUVlBQmNVRUhkaHRQQkVBZ0R5RVFEQUVMUVg4aEVDQVRJQXNvQWdBZ0N5QUxMUUFMUVlBQmNVRUhkaHRxTFFBQVFmOEFSZzBBSUJNZ0N5Z0NBQ0FMSUFzdEFBdEJnQUZ4UVFkMkcyb3NBQUFoRUFzZ0VVRUJheUlSTFFBQUlROGdBaUFDS0FJQUloZEJBV28yQWdBZ0Z5QVBPZ0FBSUJKQkFXb2hEd3dBQ3dBTElCWWdBaWdDQUJEN0Fnc2dGRUVCYWlFVURBRUxDd3VUQVFFRGZ5TUFRUkJySWdRa0FDTUFRU0JySWdNa0FDTUFRUkJySWdVa0FDQUZJQUUyQWd3Z0F5QUFOZ0lZSUFNZ0JTZ0NERFlDSENBRlFSQnFKQUFnQTBFUWFpQURLQUlZSUFNb0Fod2dBaERvQVNBQUlBTW9BaEFnQUdzUXVnTWhBQ0FESUFNb0FoUTJBZ3dnQkNBQU5nSUlJQVFnQXlnQ0REWUNEQ0FEUVNCcUpBQWdCQ2dDRENFQUlBUkJFR29rQUNBQUM4Z0ZBUWgvSXdCQnNBRnJJZ0FrQUNBQUlBTW9BaHdpQmpZQ3JBRWdCaUFHS0FJRVFRRnFOZ0lFSUFBb0Fxd0JFUE1CSVFzZ0JTZ0NCQ0FGTFFBTElnWkIvd0J4SUFaQmdBRnhRUWQyR3dSQUlBVW9BZ0FnQlNBRkxRQUxRWUFCY1VFSGRoc3RBQUFnQzBFdElBc29BZ0FvQWh3UkF3QkIvd0Z4UmlFTUN5QUFRWmdCYWlJS1FnQTNBZ0FnQ2tFQU5nSUlJQUJCakFGcUlnWkNBRGNDQUNBR1FRQTJBZ2dnQUVHQUFXb2lDVUlBTndJQUlBbEJBRFlDQ0NBQ0lBd2dBQ2dDckFFZ0FFR29BV29nQUVHbkFXb2dBRUdtQVdvZ0NpQUdJQWtnQUVIOEFHb1F5UU1nQUVIVUFEWUNFQ0FBUVFBMkFnZ2dBQ0FBUVJCcUlnSW9BZ0EyQWd3Q1FBSi9JQVVvQWdRZ0JTMEFDeUlIUWY4QWNTQUhRWUFCY1VFSGRoc2lCeUFBS0FKOElnMUtCRUFnQnlBTmEwRUJkQ0FKS0FJRUlBa3RBQXNpQ0VIL0FIRWdDRUdBQVhGQkIzWWJhaUFHS0FJRUlBWXRBQXNpQ0VIL0FIRWdDRUdBQVhGQkIzWWJha0VCYWd3QkN5QUpLQUlFSUFrdEFBc2lDRUgvQUhFZ0NFR0FBWEZCQjNZYklBWW9BZ1FnQmkwQUN5SUlRZjhBY1NBSVFZQUJjVUVIZGh0cVFRSnFDeUFOYWlJSVFlVUFUd1JBSUFnUU15RUhJQUFvQWdnaEFpQUFJQWMyQWdnZ0FnUkFJQUlnQUNnQ0RCRUJBQXNnQUNnQ0NDSUNSUTBCSUFVb0FnUWdCUzBBQ3lJSFFmOEFjU0FIUVlBQmNVRUhkaHNoQndzZ0FpQUFRUVJxSUFBZ0F5Z0NCQ0FGS0FJQUlBVWdCUzBBQzBHQUFYRkJCM1liSWdVZ0JTQUhhaUFMSUF3Z0FFR29BV29nQUN3QXB3RWdBQ3dBcGdFZ0NpQUdJQWtnRFJES0F5QUJJQUlnQUNnQ0JDQUFLQUlBSUFNZ0JCQ3BBU0VDSUFBb0FnZ2hBU0FBUVFBMkFnZ2dBUVJBSUFFZ0FDZ0NEQkVCQUFzZ0NSQy9BaG9nQmhDL0Fob2dDaEMvQWhvZ0FDZ0NyQUVpQVNBQktBSUVRUUZySWdNMkFnUWdBMEYvUmdSQUlBRWdBU2dDQUNnQ0NCRUJBQXNnQUVHd0FXb2tBQ0FDRHdzUTFRRUFDNmtIQVFwL0l3QkJvQWhySWdBa0FDQUFJQVUzQXhBZ0FDQUdOd01ZSUFBZ0FFR3dCMm9pQ3pZQ3JBY2dDeUFBUVJCcUVLd0NJUW9nQUVIVUFEWUNrQVFnQUVHSUJHb2lDMEVBTmdJQUlBc2dBQ2dDa0FRMkFnUWdBRUhVQURZQ2tBUWdBRUVBTmdLQUJDQUFJQUFvQXBBRU5nS0VCQUpBQWtBZ0NrSGtBRWtFUUNBQVFaQUVhaUVNSUFCQnNBZHFJUWdNQVFzUXlRSWhDaUFBSUFVM0F3QWdBQ0FHTndNSUlBQkJyQWRxSUFwQit6OGdBQkNCQXlJS1FYOUdEUUVnQ3lnQ0FDRUhJQXNnQUNnQ3JBY2lDRFlDQUNBSEJFQWdCeUFMS0FJRUVRRUFDeUFLUVFKMEVETWhEQ0FBS0FLQUJDRUhJQUFnRERZQ2dBUWdCd1JBSUFjZ0FDZ0NoQVFSQVFBTElBQW9Bb0FFSWd4RkRRRUxJQUFnQXlnQ0hDSUhOZ0w4QXlBSElBY29BZ1JCQVdvMkFnUWdBQ2dDL0FNUWhnSWlFQ0lISUFnZ0NDQUthaUFNSUFjb0FnQW9BakFSQmdBYUlBcEJBRW9FUUNBSUxRQUFRUzFHSVE0TElBQkI1QU5xSWcxQ0FEY0NBQ0FOUVFBMkFnZ2dBRUhZQTJvaUNFSUFOd0lBSUFoQkFEWUNDQ0FBUWN3RGFpSUhRZ0EzQWdBZ0IwRUFOZ0lJSUFJZ0RpQUFLQUw4QXlBQVFmZ0RhaUFBUWZRRGFpQUFRZkFEYWlBTklBZ2dCeUFBUWNnRGFoRE9BeUFBUWRRQU5nSXdJQUJCQURZQ0tDQUFJQUJCTUdvaUFpZ0NBRFlDTEFKL0lBQW9Bc2dESWc4Z0NrZ0VRQ0FLSUE5clFRRjBJQWNvQWdRZ0J5MEFDeUlKUWY4QWNTQUpRWUFCY1VFSGRodHFJQWdvQWdRZ0NDMEFDeUlKUWY4QWNTQUpRWUFCY1VFSGRodHFRUUZxREFFTElBY29BZ1FnQnkwQUN5SUpRZjhBY1NBSlFZQUJjVUVIZGhzZ0NDZ0NCQ0FJTFFBTElnbEIvd0J4SUFsQmdBRnhRUWQyRzJwQkFtb0xJQTlxSWdsQjVRQlBCRUFnQ1VFQ2RCQXpJUWtnQUNnQ0tDRUNJQUFnQ1RZQ0tDQUNCRUFnQWlBQUtBSXNFUUVBQ3lBQUtBSW9JZ0pGRFFFTElBSWdBRUVrYWlBQVFTQnFJQU1vQWdRZ0RDQU1JQXBCQW5ScUlCQWdEaUFBUWZnRGFpQUFLQUwwQXlBQUtBTHdBeUFOSUFnZ0J5QVBFTThESUFFZ0FpQUFLQUlrSUFBb0FpQWdBeUFFRUlrRElRSWdBQ2dDS0NFQklBQkJBRFlDS0NBQkJFQWdBU0FBS0FJc0VRRUFDeUFIRU9NQ0dpQUlFT01DR2lBTkVMOENHaUFBS0FMOEF5SUJJQUVvQWdSQkFXc2lBellDQkNBRFFYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUFLQUtBQkNFQklBQkJBRFlDZ0FRZ0FRUkFJQUVnQUNnQ2hBUVJBUUFMSUFzb0FnQWhBU0FMUVFBMkFnQWdBUVJBSUFFZ0N5Z0NCQkVCQUFzZ0FFR2dDR29rQUNBQ0R3c1ExUUVBQys4REFRRi9Jd0JCRUdzaUNpUUFJQWtDZnlBQUJFQWdBaERDQXlFQUFrQWdBUVJBSUFwQkJHb2lBU0FBSUFBb0FnQW9BaXdSQWdBZ0F5QUtLQUlFTmdBQUlBRWdBQ0FBS0FJQUtBSWdFUUlBREFFTElBcEJCR29pQVNBQUlBQW9BZ0FvQWlnUkFnQWdBeUFLS0FJRU5nQUFJQUVnQUNBQUtBSUFLQUljRVFJQUN5QUlJQUVRd3dNZ0FSRGpBaG9nQkNBQUlBQW9BZ0FvQWd3UkFBQTJBZ0FnQlNBQUlBQW9BZ0FvQWhBUkFBQTJBZ0FnQ2tFRWFpSUJJQUFnQUNnQ0FDZ0NGQkVDQUNBR0lBRVFqQUlnQVJDL0Fob2dBU0FBSUFBb0FnQW9BaGdSQWdBZ0J5QUJFTU1ESUFFUTR3SWFJQUFnQUNnQ0FDZ0NKQkVBQUF3QkN5QUNFTVFESVFBQ1FDQUJCRUFnQ2tFRWFpSUJJQUFnQUNnQ0FDZ0NMQkVDQUNBRElBb29BZ1EyQUFBZ0FTQUFJQUFvQWdBb0FpQVJBZ0FNQVFzZ0NrRUVhaUlCSUFBZ0FDZ0NBQ2dDS0JFQ0FDQURJQW9vQWdRMkFBQWdBU0FBSUFBb0FnQW9BaHdSQWdBTElBZ2dBUkREQXlBQkVPTUNHaUFFSUFBZ0FDZ0NBQ2dDREJFQUFEWUNBQ0FGSUFBZ0FDZ0NBQ2dDRUJFQUFEWUNBQ0FLUVFScUlnRWdBQ0FBS0FJQUtBSVVFUUlBSUFZZ0FSQ01BaUFCRUw4Q0dpQUJJQUFnQUNnQ0FDZ0NHQkVDQUNBSElBRVF3d01nQVJEakFob2dBQ0FBS0FJQUtBSWtFUUFBQ3pZQ0FDQUtRUkJxSkFBTHV3Y0JDWDhnQWlBQU5nSUFJQU5CZ0FSeElSVWdCMEVDZENFV0EwQWdGRUVFUmdSQUlBMG9BZ1FnRFMwQUN5SUVRZjhBY1NBRVFZQUJjVUVIZGh0QkFVc0VRQ0FDSUEwUTlBSkJBUkRGQXlBTkVJWURJQUlvQWdBUTBBTTJBZ0FMSUFOQnNBRnhJZ05CRUVjRVFDQUJJQU5CSUVZRWZ5QUNLQUlBQlNBQUN6WUNBQXNGQWtBQ1FBSkFBa0FDUUFKQUlBZ2dGR29zQUFBT0JRQUJBd0lFQlFzZ0FTQUNLQUlBTmdJQURBUUxJQUVnQWlnQ0FEWUNBQ0FHUVNBZ0JpZ0NBQ2dDTEJFREFDRUhJQUlnQWlnQ0FDSVBRUVJxTmdJQUlBOGdCellDQUF3REN5QU5LQUlFSUEwdEFBc2lCMEgvQUhFZ0IwR0FBWEZCQjNZYlJRMENJQTBvQWdBZ0RTQU5MUUFMUVlBQmNVRUhkaHNvQWdBaEJ5QUNJQUlvQWdBaUQwRUVhallDQUNBUElBYzJBZ0FNQWdzZ0RDZ0NCQ0FNTFFBTElnZEIvd0J4SUFkQmdBRnhRUWQyRzBVaEJ5QVZSUTBCSUFjTkFTQUNJQXdROUFJZ0RCQ0dBeUFDS0FJQUVOQUROZ0lBREFFTElBSW9BZ0FoRnlBRUlCWnFJZ1FoQndOQUFrQWdCU0FIVFEwQUlBWkJ3QUFnQnlnQ0FDQUdLQUlBS0FJTUVRUUFSUTBBSUFkQkJHb2hCd3dCQ3dzZ0RrRUFTZ1JBSUFJb0FnQWhEeUFPSVJBRFFBSkFJQVFnQjA4TkFDQVFSUTBBSUJCQkFXc2hFQ0FIUVFScklnY29BZ0FoRVNBQ0lBOUJCR29pRWpZQ0FDQVBJQkUyQWdBZ0VpRVBEQUVMQ3dKQUlCQkZCRUJCQUNFUkRBRUxJQVpCTUNBR0tBSUFLQUlzRVFNQUlSRWdBaWdDQUNFUEN3TkFJQTlCQkdvaEVpQVFRUUJLQkVBZ0R5QVJOZ0lBSUJCQkFXc2hFQ0FTSVE4TUFRc0xJQUlnRWpZQ0FDQVBJQWsyQWdBTEFrQWdCQ0FIUmdSQUlBWkJNQ0FHS0FJQUtBSXNFUU1BSVE4Z0FpQUNLQUlBSWhCQkJHb2lCellDQUNBUUlBODJBZ0FNQVF0QmZ5RVJJQXNvQWdRZ0N5MEFDeUlQUWY4QWNTQVBRWUFCY1VFSGRoc0VRQ0FMS0FJQUlBc2dDeTBBQzBHQUFYRkJCM1liTEFBQUlSRUxRUUFoRUVFQUlSTURRQ0FFSUFkSEJFQWdBaWdDQUNFU0FrQWdFQ0FSUndSQUlCSWhEeUFRSVJJTUFRc2dBaUFTUVFScUlnODJBZ0FnRWlBS05nSUFRUUFoRWlBVFFRRnFJaE1nQ3lnQ0JDQUxMUUFMSWhGQi93QnhJQkZCZ0FGeFFRZDJHMDhFUUNBUUlSRU1BUXRCZnlFUklCTWdDeWdDQUNBTElBc3RBQXRCZ0FGeFFRZDJHMm90QUFCQi93QkdEUUFnRXlBTEtBSUFJQXNnQ3kwQUMwR0FBWEZCQjNZYmFpd0FBQ0VSQ3lBSFFRUnJJZ2NvQWdBaEVDQUNJQTlCQkdvMkFnQWdEeUFRTmdJQUlCSkJBV29oRUF3QkN3c2dBaWdDQUNFSEN5QVhJQWNReXdJTElCUkJBV29oRkF3QkN3c0xsZ0VCQTM4akFFRVFheUlFSkFBakFFRWdheUlESkFBakFFRVFheUlGSkFBZ0JTQUJOZ0lNSUFNZ0FEWUNHQ0FESUFVb0FndzJBaHdnQlVFUWFpUUFJQU5CRUdvZ0F5Z0NHQ0FES0FJY0lBSVE2QUVnQUNBREtBSVFJQUJyUVFKMUVNVURJUUFnQXlBREtBSVVOZ0lNSUFRZ0FEWUNDQ0FFSUFNb0FndzJBZ3dnQTBFZ2FpUUFJQVFvQWd3aEFDQUVRUkJxSkFBZ0FBdkxCUUVJZnlNQVFlQURheUlBSkFBZ0FDQURLQUljSWdZMkF0d0RJQVlnQmlnQ0JFRUJhallDQkNBQUtBTGNBeENHQWlFTElBVW9BZ1FnQlMwQUN5SUdRZjhBY1NBR1FZQUJjVUVIZGhzRVFDQUZLQUlBSUFVZ0JTMEFDMEdBQVhGQkIzWWJLQUlBSUF0QkxTQUxLQUlBS0FJc0VRTUFSaUVNQ3lBQVFjUURhaUlLUWdBM0FnQWdDa0VBTmdJSUlBQkJ1QU5xSWdaQ0FEY0NBQ0FHUVFBMkFnZ2dBRUdzQTJvaUNVSUFOd0lBSUFsQkFEWUNDQ0FDSUF3Z0FDZ0MzQU1nQUVIWUEyb2dBRUhVQTJvZ0FFSFFBMm9nQ2lBR0lBa2dBRUdvQTJvUXpnTWdBRUhVQURZQ0VDQUFRUUEyQWdnZ0FDQUFRUkJxSWdJb0FnQTJBZ3dDUUFKL0lBVW9BZ1FnQlMwQUN5SUhRZjhBY1NBSFFZQUJjVUVIZGhzaUJ5QUFLQUtvQXlJTlNnUkFJQWNnRFd0QkFYUWdDU2dDQkNBSkxRQUxJZ2hCL3dCeElBaEJnQUZ4UVFkMkcyb2dCaWdDQkNBR0xRQUxJZ2hCL3dCeElBaEJnQUZ4UVFkMkcycEJBV29NQVFzZ0NTZ0NCQ0FKTFFBTElnaEIvd0J4SUFoQmdBRnhRUWQyR3lBR0tBSUVJQVl0QUFzaUNFSC9BSEVnQ0VHQUFYRkJCM1liYWtFQ2Fnc2dEV29pQ0VIbEFFOEVRQ0FJUVFKMEVETWhCeUFBS0FJSUlRSWdBQ0FITmdJSUlBSUVRQ0FDSUFBb0Fnd1JBUUFMSUFBb0FnZ2lBa1VOQVNBRktBSUVJQVV0QUFzaUIwSC9BSEVnQjBHQUFYRkJCM1liSVFjTElBSWdBRUVFYWlBQUlBTW9BZ1FnQlNnQ0FDQUZJQVV0QUF0QmdBRnhRUWQyR3lJRklBVWdCMEVDZEdvZ0N5QU1JQUJCMkFOcUlBQW9BdFFESUFBb0F0QURJQW9nQmlBSklBMFF6d01nQVNBQ0lBQW9BZ1FnQUNnQ0FDQURJQVFRaVFNaEFpQUFLQUlJSVFFZ0FFRUFOZ0lJSUFFRVFDQUJJQUFvQWd3UkFRQUxJQWtRNHdJYUlBWVE0d0lhSUFvUXZ3SWFJQUFvQXR3RElnRWdBU2dDQkVFQmF5SUROZ0lFSUFOQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTElBQkI0QU5xSkFBZ0FnOExFTlVCQUFzRUFFRi9Dd2tBSUFBZ0JSQ3lBd3ZWQVFBQ1FDQUZMUUFMUVlBQmNVRUhka1VFUUNBQUlBVXBBZ0EzQWdBZ0FDQUZLQUlJTmdJSURBRUxJQVVvQWdBaEJDQUZLQUlFSVFJakFFRVFheUlESkFBQ1FBSkFBa0FnQWtFQ1NRUkFJQUFnQWpvQUN3d0JDeUFDUWZELy8vOERUdzBCSUFOQkNHb2dBa0VDVHdSL0lBSkJCR3BCZkhFaUFTQUJRUUZySWdFZ0FVRUNSaHNGUVFFTFFRRnFFTGtDSUFBZ0F5Z0NDQ0lCTmdJQUlBQWdBeWdDREVHQWdJQ0FlSEkyQWdnZ0FDQUNOZ0lFSUFFaEFBc2dBQ0FFSUFKQkFXb1FnUUlhSUFOQkVHb2tBQXdCQ3hCVkFBc0xDM1VCQW44akFFRVFheUlESkFBZ0EwRUVhaUlDSUFBMkFnQWdBaUFBS0FJRUlnQTJBZ1FnQWlBQUlBRkJBblJxTmdJSUlBSW9BZ1FoQVNBQ0tBSUlJUUFEUUNBQUlBRkdCRUFnQWlnQ0FDQUNLQUlFTmdJRUlBTkJFR29rQUFVZ0FVRUFOZ0lBSUFJZ0FVRUVhaUlCTmdJRURBRUxDd3NNQUNBQUlBQW9BZ0FRMkFNTG9Ba0JDbjhqQUVFUWF5SUtKQUFnQVNBQktBSUVRUUZxTmdJRUlBQkJDR29oQkNBS1FReHFJZ2tnQVRZQ0FDQUNJQUFvQWd3Z0FDZ0NDQ0lBYTBFQ2RVOEVmd0pBSUFKQkFXb2lBQ0FFS0FJRUlBUW9BZ0FpQTJ0QkFuVWlBVXNFUUNNQVFTQnJJZ3NrQUFKQUlBQWdBV3NpQmlBRUtBSUlJQVFvQWdRaUFXdEJBblZOQkVBZ0JDQUdFTlVEREFFTElBUkJFR29oQnlBTFFReHFJUUFDZnlBR0lBRWdCQ2dDQUd0QkFuVnFJUVVqQUVFUWF5SURKQUFnQXlBRk5nSU1JQVVRMlFNaUFVMEVRQ0FFS0FJSUlBUW9BZ0JyUVFKMUlnVWdBVUVCZGtrRVFDQURJQVZCQVhRMkFnZ2dBMEVNYWlBRFFRaHFJQU1vQWdnZ0F5Z0NERWtiS0FJQUlRRUxJQU5CRUdva0FDQUJEQUVMRUZjQUN5RUJJQVFvQWdRZ0JDZ0NBR3RCQW5VaENDTUFRUkJySWdNa0FDQUFRUUEyQWd3Z0FDQUhOZ0lRSUFBQ2Z5QUJSUVJBUVFBaEFVRUFEQUVMSUFOQkNHb2dBQ2dDRUNBQkVOb0RJQU1vQWd3aEFTQURLQUlJQ3lJRk5nSUFJQUFnQlNBSVFRSjBhaUlITmdJSUlBQWdCellDQkNBQUlBVWdBVUVDZEdvMkFnd2dBMEVRYWlRQUl3QkJFR3NpQXlRQUlBTWdBQ2dDQ0RZQ0JDQUFLQUlJSVFFZ0F5QUFRUWhxTmdJTUlBTWdBU0FHUVFKMGFqWUNDQ0FES0FJRUlRRURRQ0FES0FJSUlBRkhCRUFnQVVFQU5nSUFJQU1nQXlnQ0JFRUVhaUlCTmdJRURBRUxDeUFES0FJTUlBTW9BZ1EyQWdBZ0EwRVFhaVFBSXdCQkVHc2lCaVFBSUFZZ0JDZ0NCRFlDRENBR0lBUW9BZ0EyQWdnZ0JpQUFLQUlFTmdJRUlBWW9BZ3doQlNBR0tBSUlJUWdnQmlnQ0JDRU1Jd0JCRUdzaUJ5UUFJd0JCSUdzaUFTUUFJd0JCRUdzaUF5UUFJQU1nQ0RZQ0RDQUJJQVUyQWhnZ0FTQURLQUlNTmdJY0lBTkJFR29rQUNBQktBSVlJUVVnQVNnQ0hDRUlJd0JCRUdzaUF5UUFJQU1nRERZQ0NDQURJQVUyQWd3RFFDQUZJQWhIQkVBZ0F5Z0NDRUVFYXlBRlFRUnJLQUlBTmdJQUlBTWdBeWdDREVFRWF6WUNEQ0FESUFNb0FnaEJCR3MyQWdnZ0F5Z0NEQ0VGREFFTEN5QUJJQVUyQWhBZ0FTQURLQUlJTmdJVUlBTkJFR29rQUNBQktBSVFJUU1nQVNBQktBSVVOZ0lNSUFjZ0F6WUNDQ0FISUFFb0FndzJBZ3dnQVVFZ2FpUUFJQWNvQWd3aEFTQUhRUkJxSkFBZ0FDQUJOZ0lFSUFRb0FnQWhBU0FFSUFBb0FnUTJBZ0FnQUNBQk5nSUVJQVFvQWdRaEFTQUVJQUFvQWdnMkFnUWdBQ0FCTmdJSUlBUW9BZ2doQVNBRUlBQW9BZ3cyQWdnZ0FDQUJOZ0lNSUFBZ0FDZ0NCRFlDQUNBR1FSQnFKQUFnQUNnQ0JDRURJQUFvQWdnaEFRTkFJQUVnQTBjRVFDQUFJQUZCQkdzaUFUWUNDQXdCQ3dzZ0FDZ0NBQ0lCQkVBZ0FDZ0NFQ0FCSUFBb0Fnd2dBQ2dDQUd0QkFuVVEyd01MQ3lBTFFTQnFKQUFNQVFzZ0FDQUJTUVJBSUFRZ0F5QUFRUUowYWhEWUF3c0xJQVFvQWdBRklBQUxJQUpCQW5ScUlnRW9BZ0FpQUFSL0lBQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBUW9BZ0FnQWtFQ2RHb0ZJQUVMSUFrb0FnQWhBQ0FKUVFBMkFnQWdBRFlDQUNBSktBSUFJUUFnQ1VFQU5nSUFJQUFFUUNBQUlBQW9BZ1JCQVdzaUFUWUNCQ0FCUVg5R0JFQWdBQ0FBS0FJQUtBSUlFUUVBQ3dzZ0NrRVFhaVFBQ3lZQkFYOGdBQ2dDQkNFQ0EwQWdBU0FDUndSQUlBSkJCR3NoQWd3QkN3c2dBQ0FCTmdJRUMwc0JBMzhqQUVFUWF5SUFKQUFnQUVILy8vLy9BellDRENBQVFmLy8vLzhITmdJSUlBQkJDR29pQVNBQVFReHFJZ0lnQVNnQ0FDQUNLQUlBU1Jzb0FnQWhBU0FBUVJCcUpBQWdBUXMyQUFKL0FrQWdBa0VlU3cwQUlBRXRBSGdOQUNBQlFRRTZBSGdnQVF3QkN5QUNFTG9DQ3lFQklBQWdBallDQkNBQUlBRTJBZ0FMR2dBQ1FDQUFJQUZHQkVBZ0FVRUFPZ0I0REFFTElBRVFOQXNMRHdBZ0FDQUFLQUlBS0FJRUVRRUFDd29BSUFBUXlRSTJBZ0FMR0FBZ0FDZ0NDQkRKQWtjRVFDQUFLQUlJRUs4Q0N5QUFDd2tBSUFBUTNnTVFOQXZhQVFCQm1LVVVMUUFBQkVCQmxLVVVLQUlBRHd0Qm1La1VMUUFBUlFSQVFaaXBGRUVCT2dBQUMwSHdweFJCdE9jVEVPNERRZnluRkVIUTV4TVE3Z05CaUtnVVFlem5FeER1QTBHVXFCUkJqT2dURU80RFFhQ29GRUcwNkJNUTdnTkJyS2dVUWRqb0V4RHVBMEc0cUJSQjlPZ1RFTzREUWNTb0ZFR1k2Uk1RN2dOQjBLZ1VRYWpwRXhEdUEwSGNxQlJCdU9rVEVPNERRZWlvRkVISTZSTVE3Z05COUtnVVFkanBFeER1QTBHQXFSUkI2T2tURU80RFFZeXBGRUg0NlJNUTdnTkJtS1VVUVFFNkFBQkJsS1VVUWZDbkZEWUNBRUh3cHhRTHlBSUFRYWlsRkMwQUFBUkFRYVNsRkNnQ0FBOExRZkN0RkMwQUFFVUVRRUh3clJSQkFUb0FBQXRCMEtzVVFZanFFeER1QTBIY3F4UkJxT29URU80RFFlaXJGRUhNNmhNUTdnTkI5S3NVUWVUcUV4RHVBMEdBckJSQi9Pb1RFTzREUVl5c0ZFR002eE1RN2dOQm1Ld1VRYURyRXhEdUEwR2tyQlJCdE9zVEVPNERRYkNzRkVIUTZ4TVE3Z05Cdkt3VVFmanJFeER1QTBISXJCUkJtT3dURU80RFFkU3NGRUc4N0JNUTdnTkI0S3dVUWVEc0V4RHVBMEhzckJSQjhPd1RFTzREUWZpc0ZFR0E3Uk1RN2dOQmhLMFVRWkR0RXhEdUEwR1FyUlJCL09vVEVPNERRWnl0RkVHZzdSTVE3Z05CcUswVVFiRHRFeER1QTBHMHJSUkJ3TzBURU80RFFjQ3RGRUhRN1JNUTdnTkJ6SzBVUWVEdEV4RHVBMEhZclJSQjhPMFRFTzREUWVTdEZFR0E3aE1RN2dOQnFLVVVRUUU2QUFCQnBLVVVRZENyRkRZQ0FFSFFxeFFMVmdCQnVLVVVMUUFBQkVCQnRLVVVLQUlBRHd0QnVLNFVMUUFBUlFSQVFiaXVGRUVCT2dBQUMwR2dyaFJCa080VEVPNERRYXl1RkVHYzdoTVE3Z05CdUtVVVFRRTZBQUJCdEtVVVFhQ3VGRFlDQUVHZ3JoUUxKUUJCbUtZVUxRQUFSUVJBUVl5bUZFSEV4Uk1RNUFOQm1LWVVRUUU2QUFBTFFZeW1GQXVzQVFFRGZ3SkFJQUVRN0FNaEFpTUFRUkJySWdRa0FDQUNRZkQvLy84RFNRUkFBa0FnQWtFQ1NRUkFJQUFnQWpvQUN3d0JDeUFFUVFocUlBSkJBazhFZnlBQ1FRUnFRWHh4SWdNZ0EwRUJheUlESUFOQkFrWWJCVUVCQzBFQmFoQzVBaUFBSUFRb0FnZ2lBellDQUNBQUlBUW9BZ3hCZ0lDQWdIaHlOZ0lJSUFBZ0FqWUNCQ0FESVFBTElBQWdBU0FDRUlFQ0lBSkJBblJxUVFBMkFnQWdCRUVRYWlRQURBRUxFRlVBQ3dzS0FFR01waFFRNHdJYUN5VUFRYmltRkMwQUFFVUVRRUdzcGhSQm1NWVRFT1FEUWJpbUZFRUJPZ0FBQzBHc3BoUUxDZ0JCcktZVUVPTUNHZ3NsQUVIWXBSUXRBQUJGQkVCQnpLVVVRZnpFRXhEa0EwSFlwUlJCQVRvQUFBdEJ6S1VVQ3dvQVFjeWxGQkRqQWhvTEpRQkIrS1VVTFFBQVJRUkFRZXlsRkVHZ3hSTVE1QU5CK0tVVVFRRTZBQUFMUWV5bEZBc0tBRUhzcFJRUTR3SWFDeU1CQW44Z0FDRUJBMEFnQVNJQ1FRUnFJUUVnQWlnQ0FBMEFDeUFDSUFCclFRSjFDeHdBUWJpdUZDRUFBMEFnQUVFTWF4RGpBaUlBUWFDdUZFY05BQXNMdFFFQkFuOENRQ0FCRU93RElnSWdBQzBBQzBHQUFYRkJCM1lFZnlBQUtBSUlRZi8vLy84SGNVRUJhd1ZCQVFzaUEwMEVRQ0FBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSUFFZ0FrRUNkQkJMSVFFQ1FDQUFMUUFMUVlBQmNVRUhkZ1JBSUFBZ0FqWUNCQXdCQ3lBQUlBSTZBQXNMSUFFZ0FrRUNkR3BCQURZQ0FBd0JDeUFBSUFNZ0FpQURheUFBS0FJRUlBQXRBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJJZ0JCQUNBQUlBSWdBUkM3QkFzTEhBQkI4SzBVSVFBRFFDQUFRUXhyRU9NQ0lnQkIwS3NVUncwQUN3c2NBRUdZcVJRaEFBTkFJQUJCREdzUTR3SWlBRUh3cHhSSERRQUxDODRCQUVHUXBSUXRBQUFFUUVHTXBSUW9BZ0FQQzBIb3B4UXRBQUJGQkVCQjZLY1VRUUU2QUFBTFFjQ21GRUhBT2hEOUEwSE1waFJCeHpvUS9RTkIyS1lVUWFVNkVQMERRZVNtRkVHdE9oRDlBMEh3cGhSQm5Eb1EvUU5CL0tZVVFjNDZFUDBEUVlpbkZFRzNPaEQ5QTBHVXB4UkIyRDBRL1FOQm9LY1VRWXcrRVAwRFFheW5GRUdQd0FBUS9RTkJ1S2NVUWJIQkFCRDlBMEhFcHhSQnF6c1EvUU5CMEtjVVFkNCtFUDBEUWR5bkZFSHNPeEQ5QTBHUXBSUkJBVG9BQUVHTXBSUkJ3S1lVTmdJQVFjQ21GQXV6QWdCQm9LVVVMUUFBQkVCQm5LVVVLQUlBRHd0QndLc1VMUUFBUlFSQVFjQ3JGRUVCT2dBQUMwR2dxUlJCanpvUS9RTkJyS2tVUVlZNkVQMERRYmlwRkVIM1BoRDlBMEhFcVJSQnlENFEvUU5CMEtrVVFkVTZFUDBEUWR5cEZFR3B3QUFRL1FOQjZLa1VRWmM2RVAwRFFmU3BGRUd2T3hEOUEwR0FxaFJCNWp3US9RTkJqS29VUWRVOEVQMERRWmlxRkVIZFBCRDlBMEdrcWhSQjhEd1EvUU5Cc0tvVVFaUStFUDBEUWJ5cUZFSFR3UUFRL1FOQnlLb1VRWWM5RVAwRFFkU3FGRUczUEJEOUEwSGdxaFJCMVRvUS9RTkI3S29VUWR3OUVQMERRZmlxRkVHMVBoRDlBMEdFcXhSQi9UNFEvUU5Ca0tzVVFiMDlFUDBEUVp5ckZFSGlPeEQ5QTBHb3F4UkJwenNRL1FOQnRLc1VRYy9CQUJEOUEwR2dwUlJCQVRvQUFFR2NwUlJCb0trVU5nSUFRYUNwRkF0V0FFR3dwUlF0QUFBRVFFR3NwUlFvQWdBUEMwR1lyaFF0QUFCRkJFQkJtSzRVUVFFNkFBQUxRWUN1RkVHQXhRQVEvUU5Caks0VVFmUEVBQkQ5QTBHd3BSUkJBVG9BQUVHc3BSUkJnSzRVTmdJQVFZQ3VGQXNrQUVHSXBoUXRBQUJGQkVCQi9LVVVRZWZEQUJCVFFZaW1GRUVCT2dBQUMwSDhwUlFMQ2dCQi9LVVVFTDhDR2dzakFFR29waFF0QUFCRkJFQkJuS1lVUWNFOUVGTkJxS1lVUVFFNkFBQUxRWnltRkFzS0FFR2NwaFFRdndJYUN5TUFRY2lsRkMwQUFFVUVRRUc4cFJSQjJUb1FVMEhJcFJSQkFUb0FBQXRCdktVVUN3b0FRYnlsRkJDL0Fob0xKQUJCNktVVUxRQUFSUVJBUWR5bEZFR254QUFRVTBIb3BSUkJBVG9BQUF0QjNLVVVDd29BUWR5bEZCQy9BaG9MSEFCQm1LNFVJUUFEUUNBQVFReHJFTDhDSWdCQmdLNFVSdzBBQ3d1SEFRRUNmd0pBSUFFUUx5SUNJQUF0QUF0QmdBRnhRUWQyQkg4Z0FDZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTElnTk5CRUFnQUNBQUtBSUFJQUFnQUMwQUMwR0FBWEZCQjNZYklBRWdBaEJMSUFJUWtBSU1BUXNnQUNBRElBSWdBMnNnQUNnQ0JDQUFMUUFMSWdCQi93QnhJQUJCZ0FGeFFRZDJHeUlBUVFBZ0FDQUNJQUVRdWdRTEN4d0FRY0NyRkNFQUEwQWdBRUVNYXhDL0FpSUFRYUNwRkVjTkFBc0xIQUJCNktjVUlRQURRQ0FBUVF4ckVMOENJZ0JCd0tZVVJ3MEFDd3NKQUNBQUVJRUVFRFFMRmdBZ0FFR3d4Qk0yQWdBZ0FFRVFhaEMvQWhvZ0FBc0hBQ0FBS0FJSUN3Y0FJQUFvQWd3TERBQWdBQ0FCUVJCcUVMSURDd3NBSUFCQjBNUVRFT1FEQ3dzQUlBQkI1TVFURU9RREN3a0FJQUFRaUFRUU5Bc1dBQ0FBUVlqRUV6WUNBQ0FBUVF4cUVMOENHaUFBQ3djQUlBQXNBQWdMQndBZ0FDd0FDUXNNQUNBQUlBRkJER29Rc2dNTENnQWdBRUdLd0FBUVV3c0tBQ0FBUVpyQUFCQlRDNDhFQUNNQVFSQnJJZ0FrQUNBQUlBSTJBZ3dnQUNBRk5nSUlBbjhnQUNBQ05nSU1JQUFnQlRZQ0NDQUFLQUlNSVFFQ1FBTkFJQUVnQTA4RVFFRUFJUUlNQWd0QkFpRUNJQUVvQWdBaUFVSC8vOE1BU3cwQklBRkJnSEJ4UVlDd0EwWU5BUUpBQWtBZ0FVSC9BRTBFUUVFQklRSWdCaUFBS0FJSUlnVnJRUUJNRFFRZ0FDQUZRUUZxTmdJSUlBVWdBVG9BQUF3QkN5QUJRZjhQVFFSQUlBWWdBQ2dDQ0NJQ2EwRUNTQTBDSUFBZ0FrRUJhallDQ0NBQ0lBRkJCblpCd0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUUvY1VHQUFYSTZBQUFNQVFzZ0JpQUFLQUlJSWdKcklRVWdBVUgvL3dOTkJFQWdCVUVEU0EwQ0lBQWdBa0VCYWpZQ0NDQUNJQUZCREhaQjRBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRVDl4UVlBQmNqb0FBQXdCQ3lBRlFRUklEUUVnQUNBQ1FRRnFOZ0lJSUFJZ0FVRVNka0h3QVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUXgyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQkJuWkJQM0ZCZ0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUUvY1VHQUFYSTZBQUFMSUFBZ0FDZ0NERUVFYWlJQk5nSU1EQUVMQzBFQkRBRUxJQUlMSVFFZ0JDQUFLQUlNTmdJQUlBY2dBQ2dDQ0RZQ0FDQUFRUkJxSkFBZ0FRdTlCQUVGZnlNQVFSQnJJZ0FrQUNBQUlBSTJBZ3dnQUNBRk5nSUlBbjhnQUNBQ05nSU1JQUFnQlRZQ0NBSkFBa0FEUUFKQUlBQW9BZ3dpQVNBRFR3MEFJQVVnQms4TkFDQUJMQUFBSWdoQi93RnhJUUlDUUNBSVFRQk9CRUJCQVNFSURBRUxRUUloQ2lBSVFVSkpEUU1nQ0VGZlRRUkFJQU1nQVd0QkFrZ05CU0FCTFFBQklnaEJ3QUZ4UVlBQlJ3MEVJQWhCUDNFZ0FrRUdkRUhBRDNGeUlRSkJBaUVJREFFTElBaEJiMDBFUUNBRElBRnJRUU5JRFFVZ0FTMEFBaUVKSUFFdEFBRWhDQUpBQWtBZ0FrSHRBVWNFUUNBQ1FlQUJSdzBCSUFoQjRBRnhRYUFCUmcwQ0RBY0xJQWhCNEFGeFFZQUJSZzBCREFZTElBaEJ3QUZ4UVlBQlJ3MEZDeUFKUWNBQmNVR0FBVWNOQkNBSlFUOXhJQUpCREhSQmdPQURjU0FJUVQ5eFFRWjBjbkloQWtFRElRZ01BUXNnQ0VGMFN3MERJQU1nQVd0QkJFZ05CQ0FCTFFBRElRc2dBUzBBQWlFTUlBRXRBQUVoQ1FKQUFrQUNRQUpBSUFKQjhBRnJEZ1VBQWdJQ0FRSUxJQWxCOEFCcVFmOEJjVUV3U1EwQ0RBWUxJQWxCOEFGeFFZQUJSZzBCREFVTElBbEJ3QUZ4UVlBQlJ3MEVDeUFNUWNBQmNVR0FBVWNOQXlBTFFjQUJjVUdBQVVjTkEwRUVJUWdnQzBFL2NTQU1RUVowUWNBZmNTQUNRUkowUVlDQThBQnhJQWxCUDNGQkRIUnljbklpQWtILy84TUFTdzBEQ3lBRklBSTJBZ0FnQUNBQklBaHFOZ0lNSUFBZ0FDZ0NDRUVFYWlJRk5nSUlEQUVMQ3lBQklBTkpJUW9MSUFvTUFRdEJBUXNoQVNBRUlBQW9BZ3cyQWdBZ0J5QUFLQUlJTmdJQUlBQkJFR29rQUNBQkN3c0FJQVFnQWpZQ0FFRURDNDREQVFSL0lBSWhBQU5BQWtBZ0FDQURUdzBBSUFRZ0IwME5BRUVCSVFVQ1FDQUFMQUFBSWdGQkFFNE5BQ0FCUVVKSkRRRWdBVUZmVFFSQUlBTWdBR3RCQWtnTkFrRUNJUVVnQUMwQUFVSEFBWEZCZ0FGSERRSU1BUXNnQVVIL0FYRWhCaUFCUVc5TkJFQWdBeUFBYTBFRFNBMENJQUF0QUFJaENDQUFMUUFCSVFFQ1FBSkFJQVpCN1FGSEJFQWdCa0hnQVVjTkFTQUJRZUFCY1VHZ0FVWU5BZ3dGQ3lBQlFlQUJjVUdBQVVjTkJBd0JDeUFCUWNBQmNVR0FBVWNOQXd0QkF5RUZJQWhCd0FGeFFZQUJSdzBDREFFTElBRkJkRXNOQVNBRElBQnJRUVJJRFFFZ0FDMEFBeUVGSUFBdEFBSWhDQ0FBTFFBQklRRUNRQUpBQWtBQ1FDQUdRZkFCYXc0RkFBSUNBZ0VDQ3lBQlFmQUFha0gvQVhGQk1FOE5CQXdDQ3lBQlFmQUJjVUdBQVVjTkF3d0JDeUFCUWNBQmNVR0FBVWNOQWdzZ0NFSEFBWEZCZ0FGSERRRWdCVUhBQVhGQmdBRkhEUUZCQkNFRklBWkJFblJCZ0lEd0FIRWdBVUV3Y1VFTWRISkIvLy9EQUVzTkFRc2dCMEVCYWlFSElBQWdCV29oQUF3QkN3c2dBQ0FDYXdzRUFFRUVDOGdGQVFGL0l3QkJFR3NpQUNRQUlBQWdBallDRENBQUlBVTJBZ2dDZnlBQUlBSTJBZ3dnQUNBRk5nSUlJQUFvQWd3aEFnSkFBMEFnQWlBRFR3UkFRUUFoQlF3Q0N3SkFBa0FnQWk4QkFDSUJRZjhBVFFSQVFRRWhCU0FHSUFBb0FnZ2lBbXRCQUV3TkJDQUFJQUpCQVdvMkFnZ2dBaUFCT2dBQURBRUxJQUZCL3c5TkJFQWdCaUFBS0FJSUlnSnJRUUpJRFFJZ0FDQUNRUUZxTmdJSUlBSWdBVUVHZGtIQUFYSTZBQUFnQUNBQUtBSUlJZ0pCQVdvMkFnZ2dBaUFCUVQ5eFFZQUJjam9BQUF3QkN5QUJRZit2QTAwRVFDQUdJQUFvQWdnaUFtdEJBMGdOQWlBQUlBSkJBV28yQWdnZ0FpQUJRUXgyUWVBQmNqb0FBQ0FBSUFBb0FnZ2lBa0VCYWpZQ0NDQUNJQUZCQm5aQlAzRkJnQUZ5T2dBQUlBQWdBQ2dDQ0NJQ1FRRnFOZ0lJSUFJZ0FVRS9jVUdBQVhJNkFBQU1BUXNDUUFKQUlBRkIvN2NEVFFSQVFRRWhCU0FESUFKclFRUklEUVlnQWk4QkFpSUlRWUQ0QTNGQmdMZ0RSdzBCSUFZZ0FDZ0NDR3RCQkVnTkJpQUFJQUpCQW1vMkFnd2dBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUVoyUVE5eFFRRnFJZ0pCQW5aQjhBRnlPZ0FBSUFBZ0FDZ0NDQ0lGUVFGcU5nSUlJQVVnQWtFRWRFRXdjU0FCUVFKMlFROXhja0dBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUlRUVoyUVE5eElBRkJCSFJCTUhGeVFZQUJjam9BQUNBQUlBQW9BZ2dpQVVFQmFqWUNDQ0FCSUFoQlAzRkJnQUZ5T2dBQURBTUxJQUZCZ01BRFR3MEJDMEVDREFVTElBWWdBQ2dDQ0NJQ2EwRURTQTBCSUFBZ0FrRUJhallDQ0NBQ0lBRkJESFpCNEFGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUVHZGtFL2NVR0FBWEk2QUFBZ0FDQUFLQUlJSWdKQkFXbzJBZ2dnQWlBQlFUOXhRWUFCY2pvQUFBc2dBQ0FBS0FJTVFRSnFJZ0kyQWd3TUFRc0xRUUVNQVFzZ0JRc2hBU0FFSUFBb0FndzJBZ0FnQnlBQUtBSUlOZ0lBSUFCQkVHb2tBQ0FCQzVvRkFRTi9Jd0JCRUdzaUFDUUFJQUFnQWpZQ0RDQUFJQVUyQWdnQ2Z5QUFJQUkyQWd3Z0FDQUZOZ0lJQWtBQ1FBSkFBMEFDUUNBQUtBSU1JZ0VnQTA4TkFDQUZJQVpQRFFBZ0FTd0FBQ0lJUWY4QmNTRUNJQUFDZnlBSVFRQk9CRUFnQlNBQ093RUFJQUZCQVdvTUFRdEJBaUVLSUFoQlFra05CU0FJUVY5TkJFQWdBeUFCYTBFQ1NBMEZJQUV0QUFFaUNFSEFBWEZCZ0FGSERRUWdCU0FJUVQ5eElBSkJCblJCd0E5eGNqc0JBQ0FCUVFKcURBRUxJQWhCYjAwRVFDQURJQUZyUVFOSURRVWdBUzBBQWlFSklBRXRBQUVoQ0FKQUFrQWdBa0h0QVVjRVFDQUNRZUFCUncwQklBaEI0QUZ4UWFBQlJnMENEQWNMSUFoQjRBRnhRWUFCUmcwQkRBWUxJQWhCd0FGeFFZQUJSdzBGQ3lBSlFjQUJjVUdBQVVjTkJDQUZJQWxCUDNFZ0NFRS9jVUVHZENBQ1FReDBjbkk3QVFBZ0FVRURhZ3dCQ3lBSVFYUkxEUVZCQVNFS0lBTWdBV3RCQkVnTkF5QUJMUUFESVFrZ0FTMEFBaUVJSUFFdEFBRWhBUUpBQWtBQ1FBSkFJQUpCOEFGckRnVUFBZ0lDQVFJTElBRkI4QUJxUWY4QmNVRXdUdzBJREFJTElBRkI4QUZ4UVlBQlJ3MEhEQUVMSUFGQndBRnhRWUFCUncwR0N5QUlRY0FCY1VHQUFVY05CU0FKUWNBQmNVR0FBVWNOQlNBR0lBVnJRUVJJRFFOQkFpRUtJQUZCREhSQmdJQU1jU0FDUVFkeElnSkJFblJ5UWYvL3d3QkxEUU1nQlNBSVFRUjJRUU54SUFGQkFuUWlBVUhBQVhFZ0FrRUlkSElnQVVFOGNYSnlRY0QvQUdwQmdMQURjanNCQUNBQUlBVkJBbW8yQWdnZ0JTQUlRUVowUWNBSGNTQUpRVDl4Y2tHQXVBTnlPd0VDSUFBb0FneEJCR29MTmdJTUlBQWdBQ2dDQ0VFQ2FpSUZOZ0lJREFFTEN5QUJJQU5KSVFvTElBb01BZ3RCQVF3QkMwRUNDeUVCSUFRZ0FDZ0NERFlDQUNBSElBQW9BZ2cyQWdBZ0FFRVFhaVFBSUFFTG93TUJCSDlCQUNFQklBSWhBQU5BQWtBZ0FDQURUdzBBSUFFZ0JFOE5BRUVCSVFZQ1FDQUFMQUFBSWdWQkFFNE5BQ0FGUVVKSkRRRWdCVUZmVFFSQUlBTWdBR3RCQWtnTkFrRUNJUVlnQUMwQUFVSEFBWEZCZ0FGSERRSU1BUXNnQlVIL0FYRWhCaUFGUVc5TkJFQWdBeUFBYTBFRFNBMENJQUF0QUFJaEJ5QUFMUUFCSVFVQ1FBSkFJQVpCN1FGSEJFQWdCa0hnQVVjTkFTQUZRZUFCY1VHZ0FVWU5BZ3dGQ3lBRlFlQUJjVUdBQVVjTkJBd0JDeUFGUWNBQmNVR0FBVWNOQXd0QkF5RUdJQWRCd0FGeFFZQUJSdzBDREFFTElBVkJkRXNOQVNBRElBQnJRUVJJRFFFZ0JDQUJhMEVDU1EwQklBQXRBQU1oQnlBQUxRQUNJUWdnQUMwQUFTRUZBa0FDUUFKQUFrQWdCa0h3QVdzT0JRQUNBZ0lCQWdzZ0JVSHdBR3BCL3dGeFFUQlBEUVFNQWdzZ0JVSHdBWEZCZ0FGSERRTU1BUXNnQlVIQUFYRkJnQUZIRFFJTElBaEJ3QUZ4UVlBQlJ3MEJJQWRCd0FGeFFZQUJSdzBCSUFaQkVuUkJnSUR3QUhFZ0JVRXdjVUVNZEhKQi8vL0RBRXNOQVNBQlFRRnFJUUZCQkNFR0N5QUJRUUZxSVFFZ0FDQUdhaUVBREFFTEN5QUFJQUpyQ3drQUlBQVFsd1FRTkFzaEFDQUFRZGpERXpZQ0FDQUFLQUlJRU1rQ1J3UkFJQUFvQWdnUXJ3SUxJQUFMelFVQkMzOGpBRUVRYXlJTkpBQWdBaUVCQTBBQ1FDQUJJQU5HQkVBZ0F5RUJEQUVMSUFFb0FnQkZEUUFnQVVFRWFpRUJEQUVMQ3lBSElBVTJBZ0FnQkNBQ05nSUFBMEFDUUFKQUFrQWdBaUFEUmcwQUlBVWdCa1lOQUVFQklRNGdBQ2dDQ0NFSUl3QkJFR3NpRVNRQUlCRkJER29nQ0JEZkFpRVNJQUVnQW10QkFuVWhEeUFHSUFVaUNHc2hDa0VBSVF3akFFRVFheUlRSkFBQ1FDQUVLQUlBSWdsRkRRQWdEMFVOQUNBS1FRQWdDQnNoQ2dOQUlCQkJER29nQ0NBS1FRUkpHeUFKS0FJQUVOUUJJZ3RCZjBZRVFFRi9JUXdNQWdzZ0NBUi9JQXBCQTAwRVFDQUtJQXRKRFFNZ0NDQVFRUXhxSUFzUUt4b0xJQW9nQzJzaENpQUlJQXRxQlVFQUN5RUlJQWtvQWdCRkJFQkJBQ0VKREFJTElBc2dER29oRENBSlFRUnFJUWtnRDBFQmF5SVBEUUFMQ3lBSUJFQWdCQ0FKTmdJQUN5QVFRUkJxSkFBZ0RDRUlJQklvQWdBaUNRUkFRY3laRkNnQ0FCb2dDUVJBUWN5WkZFSGNvaFFnQ1NBSlFYOUdHellDQUFzTElCRkJFR29rQUFKQUFrQUNRQUpBQWtBZ0NFRUJhZzRDQUFZQkN5QUhJQVUyQWdBRFFBSkFJQUlnQkNnQ0FFWU5BQ0FGSUFJb0FnQWdBQ2dDQ0JDWkJDSUJRWDlHRFFBZ0J5QUhLQUlBSUFGcUlnVTJBZ0FnQWtFRWFpRUNEQUVMQ3lBRUlBSTJBZ0FNQVFzZ0J5QUhLQUlBSUFocUlnVTJBZ0FnQlNBR1JnMENJQUVnQTBZRVFDQUVLQUlBSVFJZ0F5RUJEQWNMSUExQkRHcEJBQ0FBS0FJSUVKa0VJZ0ZCZjBjTkFRdEJBaUVPREFNTElBMUJER29oQWlBR0lBY29BZ0JySUFGSkRRSURRQ0FCQkVBZ0FpMEFBQ0VGSUFjZ0J5Z0NBQ0lJUVFGcU5nSUFJQWdnQlRvQUFDQUJRUUZySVFFZ0FrRUJhaUVDREFFTEN5QUVJQVFvQWdCQkJHb2lBallDQUNBQ0lRRURRQ0FCSUFOR0JFQWdBeUVCREFVTElBRW9BZ0JGRFFRZ0FVRUVhaUVCREFBTEFBc2dCQ2dDQUNFQ0N5QUNJQU5ISVE0TElBMUJFR29rQUNBT0R3c2dCeWdDQUNFRkRBQUxBQXRWQVFGL0l3QkJFR3NpQXlRQUlBTkJER29nQWhEZkFpRUNJQUFnQVJEVUFTRUJJQUlvQWdBaUFBUkFRY3laRkNnQ0FCb2dBQVJBUWN5WkZFSGNvaFFnQUNBQVFYOUdHellDQUFzTElBTkJFR29rQUNBQkM0c0hBUTUvSXdCQkVHc2lFU1FBSUFJaENRTkFBa0FnQXlBSlJnUkFJQU1oQ1F3QkN5QUpMUUFBUlEwQUlBbEJBV29oQ1F3QkN3c2dCeUFGTmdJQUlBUWdBallDQUFOQUFrQUNmd0pBSUFJZ0EwWU5BQ0FGSUFaR0RRQWdFU0FCS1FJQU53TUlJQUFvQWdnaENDTUFRUkJySWhNa0FDQVRRUXhxSUFnUTN3SWhGQ0FKSUFKcklReEJBQ0VLUVFBaERTTUFRWkFJYXlJT0pBQWdEaUFFS0FJQUloQTJBZ3dnQmlBRmEwRUNkVUdBQWlBRkd5RUxJQVVnRGtFUWFpQUZHeUVQQWtBQ1FBSkFBa0FnRUVVTkFDQUxSUTBBQTBBZ0RFRUNkaUVJQWtBZ0RFR0RBVXNOQUNBSUlBdFBEUUFnRUNFSURBUUxJQThnRGtFTWFpQUlJQXNnQ0NBTFNSc2dBUkN3QWlFU0lBNG9BZ3doQ0NBU1FYOUdCRUJCQUNFTFFYOGhDZ3dEQ3lBTElCSkJBQ0FQSUE1QkVHcEhHeUlWYXlFTElBOGdGVUVDZEdvaER5QU1JQkJxSUFoclFRQWdDQnNoRENBS0lCSnFJUW9nQ0VVTkFpQUlJUkFnQ3cwQUN3d0JDeUFRSVFnTElBaEZEUUVMQWtBZ0MwVU5BQ0FNUlEwQUlBZ2hEU0FLSVFnRFFBSkFBa0FnRHlBTklBd2dBUkRMQVNJS1FRSnFRUUpOQkVBQ1FBSkFJQXBCQVdvT0FnY0FBUXRCQUNFTkRBSUxJQUZCQURZQ0FBd0JDeUFPSUFvZ0RXb2lEVFlDRENBSVFRRnFJUWdnQzBFQmF5SUxEUUVMSUFnaENnd0RDeUFQUVFScUlROGdEQ0FLYXlFTUlBZ2hDaUFNRFFBTERBRUxJQWdoRFFzZ0JRUkFJQVFnRFRZQ0FBc2dEa0dRQ0dva0FDQUtJUWdnRkNnQ0FDSUtCRUJCekprVUtBSUFHaUFLQkVCQnpKa1VRZHlpRkNBS0lBcEJmMFliTmdJQUN3c2dFMEVRYWlRQUFrQUNRQUpBQWtBZ0NFRi9SZ1JBQTBBQ1FDQUhJQVUyQWdBZ0FpQUVLQUlBUmcwQVFRRWhCZ0pBQWtBQ1FDQUZJQUlnQ1NBQ2F5QVJRUWhxSUFBb0FnZ1Ftd1FpQVVFQ2FnNERDQUFDQVFzZ0JDQUNOZ0lBREFVTElBRWhCZ3NnQWlBR2FpRUNJQWNvQWdCQkJHb2hCUXdCQ3dzZ0JDQUNOZ0lBREFVTElBY2dCeWdDQUNBSVFRSjBhaUlGTmdJQUlBVWdCa1lOQXlBRUtBSUFJUUlnQXlBSlJnUkFJQU1oQ1F3SUN5QUZJQUpCQVNBQklBQW9BZ2dRbXdSRkRRRUxRUUlNQkFzZ0J5QUhLQUlBUVFScU5nSUFJQVFnQkNnQ0FFRUJhaUlDTmdJQUlBSWhDUU5BSUFNZ0NVWUVRQ0FESVFrTUJnc2dDUzBBQUVVTkJTQUpRUUZxSVFrTUFBc0FDeUFFSUFJMkFnQkJBUXdDQ3lBRUtBSUFJUUlMSUFJZ0EwY0xJUUFnRVVFUWFpUUFJQUFQQ3lBSEtBSUFJUVVNQUFzQUMxa0JBWDhqQUVFUWF5SUZKQUFnQlVFTWFpQUVFTjhDSVFRZ0FDQUJJQUlnQXhETEFTRUJJQVFvQWdBaUFBUkFRY3laRkNnQ0FCb2dBQVJBUWN5WkZFSGNvaFFnQUNBQVFYOUdHellDQUFzTElBVkJFR29rQUNBQkM1SUJBUUYvSXdCQkVHc2lCU1FBSUFRZ0FqWUNBQUovUVFJZ0JVRU1ha0VBSUFBb0FnZ1FtUVFpQUVFQmFrRUNTUTBBR2tFQklBQkJBV3NpQWlBRElBUW9BZ0JyU3cwQUdpQUZRUXhxSVFFRGZ5QUNCSDhnQVMwQUFDRUFJQVFnQkNnQ0FDSURRUUZxTmdJQUlBTWdBRG9BQUNBQ1FRRnJJUUlnQVVFQmFpRUJEQUVGUVFBTEN3c2hBU0FGUVJCcUpBQWdBUXRqQVFKL0lBQW9BZ2doQVNNQVFSQnJJZ0lrQUNBQ1FReHFJQUVRM3dJb0FnQWlBUVJBUWN5WkZDZ0NBQm9nQVFSQVFjeVpGRUhjb2hRZ0FTQUJRWDlHR3pZQ0FBc0xJQUpCRUdva0FDQUFLQUlJSWdCRkJFQkJBUThMSUFBUW5nUkJBVVlMWFFFQ2Z5TUFRUkJySWdFa0FDQUJRUXhxSUFBUTN3SWhBRUVFUVFGQnpKa1VLQUlBS0FJQUd5RUNJQUFvQWdBaUFBUkFRY3laRkNnQ0FCb2dBQVJBUWN5WkZFSGNvaFFnQUNBQVFYOUdHellDQUFzTElBRkJFR29rQUNBQ0M2NEJBUVovQTBBQ1FDQUVJQWhORFFBZ0FpQURSZzBBUVFFaEJ5QUFLQUlJSVFZakFFRVFheUlKSkFBZ0NVRU1haUFHRU44Q0lRVkJBQ0FDSUFNZ0Ftc2dBVUgwb2hRZ0FSc1F5d0VoQmlBRktBSUFJZ1VFUUVITW1SUW9BZ0FhSUFVRVFFSE1tUlJCM0tJVUlBVWdCVUYvUmhzMkFnQUxDeUFKUVJCcUpBQUNRQUpBSUFaQkFtb09Bd0lDQVFBTElBWWhCd3NnQ0VFQmFpRUlJQWNnQ21vaENpQUNJQWRxSVFJTUFRc0xJQW9MRlFBZ0FDZ0NDQ0lBUlFSQVFRRVBDeUFBRUo0RUN4SUFJQVFnQWpZQ0FDQUhJQVUyQWdCQkF3dEVBQ01BUVJCcklnQWtBQ0FBSUFRMkFnd2dBQ0FESUFKck5nSUlJQUJCQ0dvaUFTQUFRUXhxSWdJZ0FTZ0NBQ0FDS0FJQVNSc29BZ0FoQVNBQVFSQnFKQUFnQVFzbEFFRUFJUUFnQWtIL0FFMEVmeUFDUVFKMFFkQzdFMm9vQWdBZ0FYRkJBRWNGUVFBTEMwa0JBWDhEUUNBQklBSkdSUVJBUVFBaEFDQURJQUVvQWdBaUJFSC9BRTBFZnlBRVFRSjBRZEM3RTJvb0FnQUZRUUFMTmdJQUlBTkJCR29oQXlBQlFRUnFJUUVNQVFzTElBSUxRQUFEUUFKQUlBSWdBMGNFZnlBQ0tBSUFJZ0JCL3dCTERRRWdBRUVDZEVIUXV4TnFLQUlBSUFGeFJRMEJJQUlGSUFNTER3c2dBa0VFYWlFQ0RBQUxBQXRCQUFKQUEwQWdBaUFEUmcwQkFrQWdBaWdDQUNJQVFmOEFTdzBBSUFCQkFuUkIwTHNUYWlnQ0FDQUJjVVVOQUNBQ1FRUnFJUUlNQVFzTElBSWhBd3NnQXdzYkFDQUJRZjhBVFFSL0lBRkJBblJCd0s4VGFpZ0NBQVVnQVFzTFBBQURRQ0FCSUFKR1JRUkFJQUVnQVNnQ0FDSUFRZjhBVFFSL0lBQkJBblJCd0s4VGFpZ0NBQVVnQUFzMkFnQWdBVUVFYWlFQkRBRUxDeUFDQ3hzQUlBRkIvd0JOQkg4Z0FVRUNkRUhBb3hOcUtBSUFCU0FCQ3dzOEFBTkFJQUVnQWtaRkJFQWdBU0FCS0FJQUlnQkIvd0JOQkg4Z0FFRUNkRUhBb3hOcUtBSUFCU0FBQ3pZQ0FDQUJRUVJxSVFFTUFRc0xJQUlMS2dBRFFDQUJJQUpHUlFSQUlBTWdBU3dBQURZQ0FDQURRUVJxSVFNZ0FVRUJhaUVCREFFTEN5QUNDdzRBSUFFZ0FpQUJRWUFCU1J2QUN6VUFBMEFnQVNBQ1JrVUVRQ0FFSUFFb0FnQWlBQ0FESUFCQmdBRkpHem9BQUNBRVFRRnFJUVFnQVVFRWFpRUJEQUVMQ3lBQ0N3a0FJQUFRcndRUU5Bc29BUUYvSUFCQm5Mc1ROZ0lBQWtBZ0FDZ0NDQ0lCUlEwQUlBQXRBQXhGRFFBZ0FSQTBDeUFBQ3g4QUlBRkJBRTRFZnlBQlFmOEJjVUVDZEVIQXJ4TnFLQUlBQlNBQkM4QUxPd0FEUUNBQklBSkdSUVJBSUFFZ0FTd0FBQ0lBUVFCT0JIOGdBRUVDZEVIQXJ4TnFLQUlBQlNBQUN6b0FBQ0FCUVFGcUlRRU1BUXNMSUFJTEh3QWdBVUVBVGdSL0lBRkIvd0Z4UVFKMFFjQ2pFMm9vQWdBRklBRUx3QXM3QUFOQUlBRWdBa1pGQkVBZ0FTQUJMQUFBSWdCQkFFNEVmeUFBUVFKMFFjQ2pFMm9vQWdBRklBQUxPZ0FBSUFGQkFXb2hBUXdCQ3dzZ0Fnc3FBQU5BSUFFZ0FrWkZCRUFnQXlBQkxRQUFPZ0FBSUFOQkFXb2hBeUFCUVFGcUlRRU1BUXNMSUFJTERBQWdBaUFCSUFGQkFFZ2JDelFBQTBBZ0FTQUNSa1VFUUNBRUlBTWdBU3dBQUNJQUlBQkJBRWdiT2dBQUlBUkJBV29oQkNBQlFRRnFJUUVNQVFzTElBSUxDUUFnQUJDNEJCQTBDNzRCQVFSL0lBQkJpTHNUTmdJQUlBQkJDR29oQXdOQUlBSWdBQ2dDRENBQUtBSUlJZ0ZyUVFKMVNRUkFJQUVnQWtFQ2RHb29BZ0FpQVFSQUlBRWdBU2dDQkVFQmF5SUVOZ0lFSUFSQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTEN5QUNRUUZxSVFJTUFRc0xJQUJCbUFGcUVMOENHaU1BUVJCcklnRWtBQ0FCSUFNMkFnd2dBU2dDRENJQ0tBSUFCRUFnQWhEV0F5QUJLQUlNSWdKQkVHb2dBaWdDQUNJRElBSW9BZ2dnQTJ0QkFuVVEyd01MSUFGQkVHb2tBQ0FBQ3dNQUFBdTlBZ0VEZnlNQVFSQnJJZ2drQUNBQ1FlNy8vLzhISUFGclRRUkFJQUFvQWdBZ0FDQUFMUUFMUVlBQmNVRUhkaHNoQ1NBSVFRUnFJQUZCNXYvLy93Tk5CSDhnQ0NBQlFRRjBOZ0lNSUFnZ0FTQUNhallDQkNBSVFReHFJZ0lnQ0VFRWFpSUtJQW9vQWdBZ0FpZ0NBRWtiS0FJQUlnSkJDMDhFZnlBQ1FSQnFRWEJ4SWdJZ0FrRUJheUlDSUFKQkMwWWJCVUVLQzBFQmFnVkI3Ly8vL3djTEVJNENJQWdvQWdRaEFpQUVCRUFnQWlBSklBUVE0UUVhQ3lBR0JFQWdBaUFFYWlBSElBWVE0UUVhQ3lBRElBUWdCV29pQ21zaEJ5QURJQXBIQkVBZ0FpQUVhaUFHYWlBRUlBbHFJQVZxSUFjUTRRRWFDeUFCUVFwSEJFQWdDUkEwQ3lBQUlBSTJBZ0FnQUNBSUtBSUlRWUNBZ0lCNGNqWUNDQ0FBSUFRZ0Jtb2dCMm9pQURZQ0JDQUFJQUpxUVFBNkFBQWdDRUVRYWlRQUR3c1FWUUFMeWdJQkEzOGpBRUVRYXlJSUpBQWdBa0h1Ly8vL0F5QUJhMDBFUUNBQUtBSUFJQUFnQUMwQUMwR0FBWEZCQjNZYklRa2dDRUVFYWlBQlFlYi8vLzhCVFFSL0lBZ2dBVUVCZERZQ0RDQUlJQUVnQW1vMkFnUWdDRUVNYWlBSVFRUnFJQWdvQWdRZ0NDZ0NERWtiS0FJQUlnSkJBazhFZnlBQ1FRUnFRWHh4SWdJZ0FrRUJheUlDSUFKQkFrWWJCVUVCQzBFQmFnVkI3Ly8vL3dNTEVMa0NJQWdvQWdRaEFpQUVCRUFnQWlBSklBUVFnUUlhQ3lBR0JFQWdBaUFFUVFKMGFpQUhJQVlRZ1FJYUN5QURJQVFnQldvaUNtc2hCeUFESUFwSEJFQWdBaUFFUVFKMElnTnFJQVpCQW5ScUlBTWdDV29nQlVFQ2RHb2dCeENCQWhvTElBRkJBVWNFUUNBSkVEUUxJQUFnQWpZQ0FDQUFJQWdvQWdoQmdJQ0FnSGh5TmdJSUlBQWdCQ0FHYWlBSGFpSUFOZ0lFSUFJZ0FFRUNkR3BCQURZQ0FDQUlRUkJxSkFBUEN4QlZBQXU3QWdFQmZ5QUJRYitFUFUwRVFDQUJRWS9PQUUwRVFDQUJRZU1BVFFSQUlBRkJDVTBFUUNBQUlBRkJNR282QUFBZ0FFRUJhZzhMSUFBZ0FSQzlCQThMSUFGQjV3ZE5CRUFnQUNBQlFlUUFiaUlDUVRCcU9nQUFJQUJCQVdvZ0FrR2NmMndnQVdvUXZRUVBDeUFBSUFFUXZnUVBDeUFCUVorTkJrMEVRQ0FBSUFGQmtNNEFiaUlDUVRCcU9nQUFJQUJCQVdvZ0FrSHdzWDlzSUFGcUVMNEVEd3NnQUNBQkVMOEVEd3NnQVVIL3dkY3ZUUVJBSUFGQi82emlCRTBFUUNBQUlBRkJ3SVE5YmlJQ1FUQnFPZ0FBSUFCQkFXb2dBa0hBKzBKc0lBRnFFTDhFRHdzZ0FDQUJFTUFFRHdzZ0FVSC9rK3ZjQTAwRVFDQUFJQUZCZ01MWEwyNGlBa0V3YWpvQUFDQUFRUUZxSUFKQmdMNm9VR3dnQVdvUXdBUVBDeUFBSUFGQmdNTFhMMjRpQUJDOUJDQUFRWUMrcUZCc0lBRnFFTUFFQ3hnQUlBRkJBWFJCd084VGFpSUJJQUZCQW1vZ0FCRG1BUXNiQUNBQUlBRkI1QUJ1SWdBUXZRUWdBRUdjZjJ3Z0FXb1F2UVFMSFFBZ0FDQUJRWkRPQUc0aUFCQzlCQ0FBUWZDeGYyd2dBV29RdmdRTEhRQWdBQ0FCUWNDRVBXNGlBQkM5QkNBQVFjRDdRbXdnQVdvUXZ3UUxnQUlCQVg4akFFRVFheUlCSkFCQjR1WVNRUXRCQVVHNCt4TVFMUm9nQVVFQU5nSU1RYmo3RXlBQVFRQVF3d0VhQWtBQ1FFR0UvQk1vQWdBaUFFRUFUZ1JBSUFCRkRRRkJoSmtVS0FJQUlBQkIvLy8vLzN0eFJ3MEJDd0pBUVlqOEV5Z0NBRUVLUmcwQVFjejdFeWdDQUNJQVFjajdFeWdDQUVZTkFFSE0reE1nQUVFQmFqWUNBQ0FBUVFvNkFBQU1BZ3NRTGd3QkMwR0UvQk5CaFB3VEtBSUFJZ0JCLy8vLy93TWdBQnMyQWdBQ1FBSkFRWWo4RXlnQ0FFRUtSZzBBUWN6N0V5Z0NBQ0lBUWNqN0V5Z0NBRVlOQUVITSt4TWdBRUVCYWpZQ0FDQUFRUW82QUFBTUFRc1FMZ3RCaFB3VEtBSUFHa0dFL0JOQkFEWUNBQXNRSFFBTENRQkJqejhRd1FRQUN4a0FJQUFFUUVINC9oTW9BZ0FSQ1FCQmljRUFFTUVFQUFzTENnQkJ4T1lTRU1FRUFBc0xBQ0FBSUFGQkFCREdCQXN0QUNBQ1JRUkFJQUFvQWdRZ0FTZ0NCRVlQQ3lBQUlBRkdCRUJCQVE4TElBQW9BZ1FnQVNnQ0JCQzNBVVVMbndFQkFYOGpBRUZBYWlJREpBQUNmMEVCSUFBZ0FVRUFFTVlFRFFBYVFRQWdBVVVOQUJwQkFDQUJRYUR6RXhESUJDSUJSUTBBR2lBRFFReHFRUUJCTkJBcEdpQURRUUUyQWpnZ0EwRi9OZ0lVSUFNZ0FEWUNFQ0FESUFFMkFnZ2dBU0FEUVFocUlBSW9BZ0JCQVNBQktBSUFLQUljRVFvQUlBTW9BaUFpQUVFQlJnUkFJQUlnQXlnQ0dEWUNBQXNnQUVFQlJnc2hBQ0FEUVVCckpBQWdBQXU3QWdFRWZ5TUFRVUJxSWdJa0FDQUFLQUlBSWdOQkJHc29BZ0FoQkNBRFFRaHJLQUlBSVFVZ0FrSUFOd0ljSUFKQ0FEY0NKQ0FDUWdBM0Fpd2dBa0lBTndJMFFRQWhBeUFDUVFBMkFEc2dBa0lBTndJVUlBSkI4UElUTmdJUUlBSWdBRFlDRENBQ0lBRTJBZ2dnQUNBRmFpRUFBa0FnQkNBQlFRQVF4Z1FFUUNBQ1FRRTJBamdnQkNBQ1FRaHFJQUFnQUVFQlFRQWdCQ2dDQUNnQ0ZCRU1BQ0FBUVFBZ0FpZ0NJRUVCUmhzaEF3d0JDeUFFSUFKQkNHb2dBRUVCUVFBZ0JDZ0NBQ2dDR0JFTkFBSkFBa0FnQWlnQ0xBNENBQUVDQ3lBQ0tBSWNRUUFnQWlnQ0tFRUJSaHRCQUNBQ0tBSWtRUUZHRzBFQUlBSW9BakJCQVVZYklRTU1BUXNnQWlnQ0lFRUJSd1JBSUFJb0FqQU5BU0FDS0FJa1FRRkhEUUVnQWlnQ0tFRUJSdzBCQ3lBQ0tBSVlJUU1MSUFKQlFHc2tBQ0FEQ3prQUlBQWdBU2dDQ0NBRkVNWUVCRUFnQVNBQ0lBTWdCQkRLQkE4TElBQW9BZ2dpQUNBQklBSWdBeUFFSUFVZ0FDZ0NBQ2dDRkJFTUFBdWFBUUFnQUVFQk9nQTFBa0FnQUNnQ0JDQUNSdzBBSUFCQkFUb0FOQUpBSUFBb0FoQWlBa1VFUUNBQVFRRTJBaVFnQUNBRE5nSVlJQUFnQVRZQ0VDQURRUUZIRFFJZ0FDZ0NNRUVCUmcwQkRBSUxJQUVnQWtZRVFDQUFLQUlZSWdKQkFrWUVRQ0FBSUFNMkFoZ2dBeUVDQ3lBQUtBSXdRUUZIRFFJZ0FrRUJSZzBCREFJTElBQWdBQ2dDSkVFQmFqWUNKQXNnQUVFQk9nQTJDd3VLQWdBZ0FDQUJLQUlJSUFRUXhnUUVRQUpBSUFFb0FnUWdBa2NOQUNBQktBSWNRUUZHRFFBZ0FTQUROZ0ljQ3c4TEFrQWdBQ0FCS0FJQUlBUVF4Z1FFUUFKQUlBSWdBU2dDRUVjRVFDQUJLQUlVSUFKSERRRUxJQU5CQVVjTkFpQUJRUUUyQWlBUEN5QUJJQU0yQWlBQ1FDQUJLQUlzUVFSR0RRQWdBVUVBT3dFMElBQW9BZ2dpQUNBQklBSWdBa0VCSUFRZ0FDZ0NBQ2dDRkJFTUFDQUJMUUExQkVBZ0FVRUROZ0lzSUFFdEFEUkZEUUVNQXdzZ0FVRUVOZ0lzQ3lBQklBSTJBaFFnQVNBQktBSW9RUUZxTmdJb0lBRW9BaVJCQVVjTkFTQUJLQUlZUVFKSERRRWdBVUVCT2dBMkR3c2dBQ2dDQ0NJQUlBRWdBaUFESUFRZ0FDZ0NBQ2dDR0JFTkFBc0xNd0FnQUNBQktBSUlRUUFReGdRRVFDQUJJQUlnQXhETkJBOExJQUFvQWdnaUFDQUJJQUlnQXlBQUtBSUFLQUljRVFvQUMxMEJBWDhnQUNnQ0VDSURSUVJBSUFCQkFUWUNKQ0FBSUFJMkFoZ2dBQ0FCTmdJUUR3c0NRQ0FCSUFOR0JFQWdBQ2dDR0VFQ1J3MEJJQUFnQWpZQ0dBOExJQUJCQVRvQU5pQUFRUUkyQWhnZ0FDQUFLQUlrUVFGcU5nSWtDd3NhQUNBQUlBRW9BZ2hCQUJER0JBUkFJQUVnQWlBREVNMEVDd3RFQUNBQUlBSUNmMEVBSUFORkRRQWFJQUZCQ0hVaUFpQUJRUUZ4UlEwQUdpQUNJQU1vQWdCcUtBSUFDeUFEYWlBRVFRSWdBVUVDY1JzZ0FDZ0NBQ2dDSEJFS0FBdDZBUUovSUFBZ0FTZ0NDRUVBRU1ZRUJFQWdBU0FDSUFNUXpRUVBDeUFBS0FJTUlRVWdBQ2dDRUNBQUtBSVVJQUVnQWlBREVNOEVBa0FnQUVFWWFpSUVJQUJCRUdvZ0JVRURkR29pQUU4TkFBTkFJQVFvQWdBZ0JDZ0NCQ0FCSUFJZ0F4RFBCQ0FCTFFBMkRRRWdCRUVJYWlJRUlBQkpEUUFMQ3d2aUJBRUZmeU1BUVVCcUlnVWtBQUpBSUFGQjNQVVRRUUFReGdRRVFDQUNRUUEyQWdCQkFTRUVEQUVMQW44Z0FDMEFDRUVZY1FSQUlBQWdBVUVCRU1ZRURBRUxBa0FnQVVVTkFDQUJRZER6RXhESUJDSUdSUTBBSUFBZ0FTQUdLQUlJUVJoeFFRQkhFTVlFSVFNTElBTUxCRUJCQVNFRUlBSW9BZ0FpQUVVTkFTQUNJQUFvQWdBMkFnQU1BUXNnQVVVTkFDQUJRWUQwRXhESUJDSUJSUTBBSUFJb0FnQWlBd1JBSUFJZ0F5Z0NBQ0lITmdJQUN5QUJLQUlJSWdNZ0FDZ0NDQ0lHUVg5emNVRUhjUTBBSUFOQmYzTWdCbkZCNEFCeERRQkJBU0VFSUFBb0Fnd2lBeUFCS0FJTUlnQkJBQkRHQkEwQUlBTkIwUFVUUVFBUXhnUUVRQ0FBUlEwQklBQkJ0UFFURU1nRVJTRUVEQUVMUVFBaEJDQURSUTBBSUFOQmdQUVRFTWdFSWdFRVFDQUdRUUZ4UlEwQkFuOENRQU5BSUFCRkRRRWdBRUdBOUJNUXlBUWlBRVVOQVNBQUtBSUlJQUVvQWdnaUEwRi9jM0VOQVVFQklBRW9BZ3dpQWlBQUtBSU1JZ0JCQUJER0JBMENHaUFEUVFGeFJRMEJJQUpGRFFFZ0FrR0E5Qk1ReUFRaUFRMEFDeUFDUWZEMEV4RElCQ0lCUlEwQUlBRWdBQkRTQkNFRUN5QUVDeUVFREFFTElBTkI4UFFURU1nRUlnRUVRQ0FHUVFGeFJRMEJJQUVnQUJEU0JDRUVEQUVMSUFOQm9QTVRFTWdFSWdGRkRRQWdBRVVOQUNBQVFhRHpFeERJQkNJQVJRMEFJQVZCREdwQkFFRTBFQ2thSUFWQkFUWUNPQ0FGUVg4MkFoUWdCU0FCTmdJUUlBVWdBRFlDQ0NBQUlBVkJDR29nQjBFQklBQW9BZ0FvQWh3UkNnQUNRQ0FGS0FJZ0lnQkJBVWNOQUNBQ0tBSUFSUTBBSUFJZ0JTZ0NHRFlDQUFzZ0FFRUJSaUVFQ3lBRlFVQnJKQUFnQkF0UEFRRi9Ba0FnQVVVTkFDQUJRZkQwRXhESUJDSUJSUTBBSUFFb0FnZ2dBQ2dDQ0VGL2MzRU5BQ0FBS0FJTUlBRW9BZ3hCQUJER0JFVU5BQ0FBS0FJUUlBRW9BaEJCQUJER0JDRUNDeUFDQzlZRUFRTi9JQUFnQVNnQ0NDQUVFTVlFQkVBQ1FDQUJLQUlFSUFKSERRQWdBU2dDSEVFQlJnMEFJQUVnQXpZQ0hBc1BDd0pBSUFBZ0FTZ0NBQ0FFRU1ZRUJFQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUlnQVVFQk5nSWdEd3NnQVNBRE5nSWdJQUVvQWl4QkJFY0VRQ0FBUVJCcUlnVWdBQ2dDREVFRGRHb2hCMEVBSVFNZ0FRSi9Ba0FEUUFKQUlBVWdCMDhOQUNBQlFRQTdBVFFnQlNnQ0FDQUZLQUlFSUFFZ0FpQUNRUUVnQkJEVUJDQUJMUUEyRFFBQ1FDQUJMUUExUlEwQUlBRXRBRFFFUUVFQklRTWdBU2dDR0VFQlJnMEVRUUVoQmlBQUxRQUlRUUp4RFFFTUJBdEJBU0VHSUFBdEFBaEJBWEZGRFFNTElBVkJDR29oQlF3QkN3dEJCQ0FHUlEwQkdndEJBd3MyQWl3Z0EwRUJjUTBDQ3lBQklBSTJBaFFnQVNBQktBSW9RUUZxTmdJb0lBRW9BaVJCQVVjTkFTQUJLQUlZUVFKSERRRWdBVUVCT2dBMkR3c2dBQ2dDRENFR0lBQW9BaEFnQUNnQ0ZDQUJJQUlnQXlBRUVOVUVJQUJCR0dvaUJTQUFRUkJxSUFaQkEzUnFJZ1pQRFFBQ1FDQUFLQUlJSWdCQkFuRkZCRUFnQVNnQ0pFRUJSdzBCQ3dOQUlBRXRBRFlOQWlBRktBSUFJQVVvQWdRZ0FTQUNJQU1nQkJEVkJDQUZRUWhxSWdVZ0Jra05BQXNNQVFzZ0FFRUJjVVVFUUFOQUlBRXRBRFlOQWlBQktBSWtRUUZHRFFJZ0JTZ0NBQ0FGS0FJRUlBRWdBaUFESUFRUTFRUWdCVUVJYWlJRklBWkpEUUFNQWdzQUN3TkFJQUV0QURZTkFTQUJLQUlrUVFGR0JFQWdBU2dDR0VFQlJnMENDeUFGS0FJQUlBVW9BZ1FnQVNBQ0lBTWdCQkRWQkNBRlFRaHFJZ1VnQmtrTkFBc0xDMEVCQVg4Z0FVRUlkU0VISUFBZ0FpQURJQUZCQVhFRWZ5QUhJQVFvQWdCcUtBSUFCU0FIQ3lBRWFpQUZRUUlnQVVFQ2NSc2dCaUFBS0FJQUtBSVVFUXdBQ3o4QkFYOGdBVUVJZFNFR0lBQWdBaUFCUVFGeEJIOGdCaUFES0FJQWFpZ0NBQVVnQmdzZ0Eyb2dCRUVDSUFGQkFuRWJJQVVnQUNnQ0FDZ0NHQkVOQUF1cEFRQWdBQ0FCS0FJSUlBUVF4Z1FFUUFKQUlBRW9BZ1FnQWtjTkFDQUJLQUljUVFGR0RRQWdBU0FETmdJY0N3OExBa0FnQUNBQktBSUFJQVFReGdSRkRRQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUVnQVVFQk5nSWdEd3NnQVNBQ05nSVVJQUVnQXpZQ0lDQUJJQUVvQWloQkFXbzJBaWdDUUNBQktBSWtRUUZIRFFBZ0FTZ0NHRUVDUncwQUlBRkJBVG9BTmdzZ0FVRUVOZ0lzQ3d1aEFnRUdmeUFBSUFFb0FnZ2dCUkRHQkFSQUlBRWdBaUFESUFRUXlnUVBDeUFCTFFBMUlRWWdBQ2dDRENFSUlBRkJBRG9BTlNBQkxRQTBJUWNnQVVFQU9nQTBJQUFvQWhBZ0FDZ0NGQ0FCSUFJZ0F5QUVJQVVRMUFRZ0JpQUJMUUExSWdweUlRa2dCeUFCTFFBMElndHlJUWNDUUNBQVFSaHFJZ1lnQUVFUWFpQUlRUU4wYWlJSVR3MEFBMEFnQVMwQU5nMEJBa0FnQ3dSQUlBRW9BaGhCQVVZTkF5QUFMUUFJUVFKeERRRU1Bd3NnQ2tVTkFDQUFMUUFJUVFGeFJRMENDeUFCUVFBN0FUUWdCaWdDQUNBR0tBSUVJQUVnQWlBRElBUWdCUkRVQkNBQkxRQTFJZ29nQ1hJaENTQUJMUUEwSWdzZ0IzSWhCeUFHUVFocUlnWWdDRWtOQUFzTElBRWdDVUgvQVhGQkFFYzZBRFVnQVNBSFFmOEJjVUVBUnpvQU5Bc2NBQ0FBSUFFb0FnZ2dCUkRHQkFSQUlBRWdBaUFESUFRUXlnUUxDeGNBSUFCRkJFQkJBQThMSUFCQmdQUVRFTWdFUVFCSEN3VUFRZUE5Q3dZQVFiWEJBQXNGQUVIaVBnc0lBQ0FBRUZvUU5Bc0hBQ0FBS0FJRUM1a0JBUU44SUFBZ0FLSWlBeUFESUFPaW9pQURSSHpWejFvNjJlVTlva1RybkN1SzV1VmF2cUNpSUFNZ0EwUjkvckZYNHgzSFBxSkUxV0hCR2FBQktyK2dva1NtK0JBUkVSR0JQNkNnSVFVZ0F5QUFvaUVFSUFKRkJFQWdCQ0FESUFXaVJFbFZWVlZWVmNXL29LSWdBS0FQQ3lBQUlBTWdBVVFBQUFBQUFBRGdQNklnQlNBRW9xR2lJQUdoSUFSRVNWVlZWVlZWeFQraW9LRUxrZ0VCQTN4RUFBQUFBQUFBOEQ4Z0FDQUFvaUlDUkFBQUFBQUFBT0Evb2lJRG9TSUVSQUFBQUFBQUFQQS9JQVNoSUFPaElBSWdBaUFDSUFKRWtCWExHYUFCK2o2aVJIZFJ3Ulpzd1ZhL29LSkVURlZWVlZWVnBUK2dvaUFDSUFLaUlnTWdBNklnQWlBQ1JOUTRpTDdwK3FpOW9rVEVzYlM5bnU0aFBxQ2lSSzFTbklCUGZwSytvS0tnb2lBQUlBR2lvYUNnQ3lJQkFYNGdBU0FDclNBRHJVSWdob1FnQkNBQUVSWUFJZ1ZDSUlpbkpBRWdCYWNMR1FBZ0FTQUNJQU90SUFTdFFpQ0doQ0FGSUFZZ0FCRWpBQXNaQUNBQklBSWdBeUFFSUFXdElBYXRRaUNHaENBQUVSUUFDeU1BSUFFZ0FpQURJQVFnQmEwZ0JxMUNJSWFFSUFldElBaXRRaUNHaENBQUVSd0FDeVVBSUFFZ0FpQURJQVFnQlNBR3JTQUhyVUlnaG9RZ0NLMGdDYTFDSUlhRUlBQVJIUUFMSEFBZ0FDQUJRUWdnQXFjZ0FrSWdpS2NnQTZjZ0EwSWdpS2NRSVFzTHY5b1R1Z0VBUVlBSUMzRCtnaXRsUnhWblFBQUFBQUFBQURoREFBRDYva0l1ZHI4Nk81NjhtdmNNdmIzOS8vLy8vOTgvUEZSVlZWVlZ4VCtSS3hmUFZWV2xQeGZRcEdjUkVZRS9BQUFBQUFBQXlFTHZPZnIrUWk3bVB5VEVndis5djg0L3RmUU0xd2hyckQvTVVFYlNxN0tEUDRRNlRwdmcxMVUvQUVIK0NBdkNFUEEvYnIrSUdrODdtencxTS91cFBmYnZQMTNjMkp3VFlIRzhZWUIzUHByczd6L1Jab2NRZWw2UXZJVi9idWdWNCs4L0UvWm5OVkxTakR4MGhSWFRzTm52UC9xTytTT0F6b3U4M3ZiZEtXdlE3ejloeU9aaFR2ZGdQTWliZFJoRngrOC9tZE16VytTamtEeUQ4OGJLUHI3dlAyMTdnMTJtbXBjOEQ0bjViRmkxN3ovODcvMlNHcldPUFBkSGNpdVNyTzgvMFp3dmNEMitQanlpMGRNeTdLUHZQd3R1a0lrMEEycThHOVArcjJhYjd6OE92UzhxVWxhVnZGRmJFdEFCays4L1ZlcE9qTytBVUx6TU1XekF2WXJ2UHhiMDFia2p5Wkc4NEMycHJwcUM3eit2VlZ6cDQ5T0FQRkdPcGNpWWV1OC9TSk9sNmhVYmdMeDdVWDA4dUhMdlB6MHkzbFh3SDQrODZvMk1PUGxxN3orL1V4TS9qSW1MUEhYTGIrdGJZKzgvSnVzUmRwelpscnpVWEFTRTRGdnZQMkF2T2o3MzdKbzhxcmxvTVlkVTd6K2RPSWJMZ3VlUHZCM1ovQ0pRVGU4L2pjT21SRUZ2aWp6V2pHS0lPMGJ2UDMwRTVMQUZlb0E4bHR4OWtVay83eitVcUtqai9ZNldQRGhpZFc1Nk9POC9mVWgwOGhoZWh6dy9wckpQempIdlAvTG5INWdyUjRBODNYemlaVVVyN3o5ZUNIRS9lN2lXdklGajllSGZKTzgvTWFzSmJlSDNnanpoM2gvMW5SN3ZQL3EvYnhxYklUMjhrTm5hMEg4WTd6KzBDZ3h5Z2plTFBBc0Q1S2FGRXU4L2o4dk9pWklVYmp4V0x6NnByd3p2UDdhcnNFMTFUWU04RmJjeEN2NEc3ejlNZEt6aUFVS0dQREhZVFB4d0FlOC9TdmpUWFRuZGp6ei9GbVN5Q1B6dVB3UmJqanVBbzRhODhaK1NYOFgyN2o5b1VFdk03VXFTdk11cE9qZW44ZTQvamkxUkcvZ0htYnhtMkFWdHJ1enVQOUkybEQ3bzBYRzg5NS9sTk52bjdqOFZHODZ6R1JtWnZPV29FOE10NCs0L2JVd3FwMGlmaFR3aU5CSk1wdDd1UDRwcEtIcGdFcE84SElDc0JFWGE3ajliaVJkSWo2ZFl2Q291OXlFSzF1NC9HNXBKWjVzc2ZMeVhxRkRaOWRIdVB4R3N3bUR0WTBNOExZbGhZQWpPN2ovdlpBWTdDV2FXUEZjQUhlMUJ5dTQvZVFPaDJ1SE1ianpRUE1HMW9zYnVQekFTRHorTy81TTgzdFBYOENyRDdqK3dyM3E3enBCMlBDY3FOdFhhdis0L2QrQlU2NzBka3p3TjNmMlpzcnp1UDQ2amNRQTBsSSs4cHl5ZGRySzU3ajlKbzVQY3pONkh2RUptejZMYXR1NC9YemdQdmNiZWVMeUNUNTFXSzdUdVAvWmNlK3hHRW9hOEQ1SmR5cVN4N2orTzEvMFlCVFdUUE5vbnRUWkhyKzQvQlp1S0w3ZVlleno5eDVmVUVxM3VQd2xVSE9MaFk1QThLVlJJM1FlcjdqL3F4aGxRaGNjMFBMZEdXWW9tcWU0L05jQmtLK1l5bER4SUlhMFZiNmZ1UDU5Mm1XRks1SXk4Q2R4MnVlR2w3aitvVGU4N3hUT012SVZWT3JCK3BPNC9ydWtyaVhoVGhMd2d3OHcwUnFQdVAxaFlWbmpkenBPOEpTSlZnamlpN2o5a0dYNkFxaEJYUEhPcFROUlZvZTQvS0NKZXYrK3prN3pOTzM5bW5xRHVQNEs1TklldEVtcTh2OW9MZFJLZzdqL3VxVzI0NzJkanZDOGFaVHl5bis0L1VZamdWRDNjZ0x5RWxGSDVmWi91UDg4K1duNWtIM2k4ZEYvczZIV2Y3ait3Zll2QVN1Nkd2SFNCcFVpYW4rNC9pdVpWSGpJWmhyekpaMEpXNjUvdVA5UFVDVjdMbkpBOFAxM2VUMm1nN2o4ZHBVMjUzREo3dkljQjYzTVVvZTQvYThCblZQM3NsRHd5d1RBQjdhSHVQMVZzMXF2aDYyVThZazdQTnZPaTdqOUN6N012eGFHSXZCSWFQbFFucE80L05EYzc4Ylpwazd3VHpreVppYVh1UHg3L0dUcUVYb0M4cmNjalJocW43ajl1VjNMWVVOU1V2TzJTUkp2WnFPNC9BSW9PVzJldGtEeVpab3JaeDZydVA3VHE4TUV2dDQwODI2QXFRdVdzN2ovLzU4V2NZTFpsdkl4RXRSWXlyKzQvUkYveldZUDJlencyZHhXWnJySHVQNE05SHFjZkNaTzh4ditSQzF1MDdqOHBIbXlMdUtsZHZPWEZ6YkEzdCs0L1dibVFmUGtqYkx3UFVzakxSTHJ1UDZyNTlDSkRRNUs4VUU3ZW40Szk3ajlMam1iWGJNcUZ2TG9IeW5EeHdPNC9KODZSSy95dmNUeVE4S09Da2NUdVA3dHpDdUUxMG0wOEl5UGpHV1BJN2o5akltSWlCTVdIdkdYbFhYdG16TzQvMVRIaTQ0WWNpend6TFVyc205RHVQeFc3dk5QUnU1RzhYU1Urc2dQVjdqL1NNZTZjTWN5UVBGaXpNQk9lMmU0L3MxcHpib1JwaER5Ly9YbFZhOTd1UDdTZGpwZk4zNEs4ZXZQVHYydmo3aitITTh1U2R4cU1QSzNUV3BtZjZPNC8rdG5SU285N2tMeG10bzBwQis3dVA3cXUzRmJadzFXOCt4VlB1S0x6N2o5QTlxWTlEcVNRdkRwWjVZMXkrZTQvTkpPdE9QVFdhTHhIWHZ2eWR2L3VQeldLV0d2aTdwRzhTZ2FoTUxBRjd6L04zVjhLMS85MFBOTEJTNUFlRE84L3JKaVMrdnU5a2J3Skh0ZGJ3aEx2UDdNTXJ6Q3Vibk04bkZLRjNac1o3eitVL1o5Y011T09QSHJRLzErcklPOC9yRmtKMFkvZ2hEeEwwVmN1OFNmdlAyY2FUaml2eldNOHRlY0dsRzB2N3o5b0daSnNMR3RuUEdtUTc5d2dOKzgvMHJYTWd4aUtnTHo2dzExVkN6L3ZQMi82L3o5ZHJZKzhmSWtIU2kxSDd6OUpxWFU0cmcyUXZQS0pEUWlIVCs4L3B3Yzlwb1dqZER5SHBQdmNHRmp2UHc4aVFDQ2VrWUs4bUlQSkZ1Tmc3eitza3NIVlVGcU9QSVV5MndQbWFlOC9TMnNCckZrNmhEeGd0QUh6SVhQdlB4OCt0QWNoMVlLOFg1dDdNNWQ4N3ovSkRVYzd1U3FKdkNtaDlSUkdodTgvMDRnNllBUzJkRHoyUDR2bkxwRHZQM0Z5blZIc3hZTThnMHpIKzFHYTd6L3drZE9QRXZlUHZOcVFwS0t2cE84L2ZYUWo0cGl1amJ6eFo0NHRTSy92UHdnZ3FrRzh3NDQ4SjFwaDdodTY3ejh5NjZuRGxDdUVQSmU2YXpjcnhlOC83b1hSTWFsa2lqeEFSVzViZHREdlArM2pPK1M2TjQ2OEZMNmNyZjNiN3orZHpaRk5PNGwzUE5pUW5vSEI1KzgvaWN4Z1FjRUZVenp4Y1k4cnd2UHZQd0E0K3Y1Q0x1WS9NR2ZIazFmekxqMEFBQUFBQUFEZ3YyQlZWVlZWVmVXL0JnQUFBQUFBNEQ5T1ZWbVptWm5wUDNxa0tWVlZWZVcvNlVWSW0xdEo4ci9EUHlhTEt3RHdQd0FBQUFBQW9QWS9BRUhKR1FzWHlMbnlnaXpXdjRCV055Z2t0UG84QUFBQUFBQ0E5ajhBUWVrWkN4Y0lXTCs5MGRXL0lQZmcyQWlsSEwwQUFBQUFBR0QyUHdCQmlSb0xGMWhGRjNkMjFiOXRVTGJWcEdJanZRQUFBQUFBUVBZL0FFR3BHZ3NYK0MySHJSclZ2OVZuc0o3a2hPYThBQUFBQUFBZzlqOEFRY2thQ3hkNGQ1VmZ2dFMvNEQ0cGsya2JCTDBBQUFBQUFBRDJQd0JCNlJvTEYyQWN3b3RoMUwvTWhFeElMOWdUUFFBQUFBQUE0UFUvQUVHSkd3c1hxSWFHTUFUVXZ6b0xndTN6UXR3OEFBQUFBQURBOVQ4QVFha2JDeGRJYVZWTXB0Ty9ZSlJSaHNheElEMEFBQUFBQUtEMVB3QkJ5UnNMRjRDWW10MUgwNytTZ01YVVRWa2xQUUFBQUFBQWdQVS9BRUhwR3dzWElPRzY0dWpTdjlncnQ1a2VleVk5QUFBQUFBQmc5VDhBUVlrY0N4ZUkzaE5haWRLL1A3RFB0aFRLRlQwQUFBQUFBR0QxUHdCQnFSd0xGNGplRTFxSjByOC9zTSsyRk1vVlBRQUFBQUFBUVBVL0FFSEpIQXNYZU0vN1FTblN2M2JhVXlna1doYTlBQUFBQUFBZzlUOEFRZWtjQ3hlWWFjR1l5TkcvQkZUbmFMeXZINzBBQUFBQUFBRDFQd0JCaVIwTEY2aXJxMXhuMGIvd3FJSXp4aDhmUFFBQUFBQUE0UFEvQUVHcEhRc1hTSzc1aXdYUnYyWmFCZjNFcUNhOUFBQUFBQURBOUQ4QVFja2RDeGVRYytJa285Qy9EZ1AwZnU1ckRMMEFBQUFBQUtEMFB3QkI2UjBMRjlDMGxDVkEwTDkvTGZTZXVEYnd2QUFBQUFBQW9QUS9BRUdKSGdzWDBMU1VKVURRdjM4dDlKNjROdkM4QUFBQUFBQ0E5RDhBUWFrZUN4ZEFYbTBZdWMrL2h6eVpxeXBYRFQwQUFBQUFBR0QwUHdCQnlSNExGMkRjeTYzd3pyOGtyNGFjdHlZclBRQUFBQUFBUVBRL0FFSHBIZ3NYOENwdUJ5Zk92eEQvUDFSUEx4ZTlBQUFBQUFBZzlEOEFRWWtmQ3hmQVQyc2hYTTIvRzJqS3U1RzZJVDBBQUFBQUFBRDBQd0JCcVI4TEY2Q2F4L2VQekw4MGhKOW9UM2tuUFFBQUFBQUFBUFEvQUVISkh3c1hvSnJIOTQvTXZ6U0VuMmhQZVNjOUFBQUFBQURnOHo4QVFla2ZDeGVRTFhTR3dzdS9qN2VMTWJCT0dUMEFBQUFBQU1EelB3QkJpU0FMRjhDQVRzbnp5cjlta00wL1kwNjZQQUFBQUFBQW9QTS9BRUdwSUFzWHNPSWZ2Q1BLdityQlJ0eGtqQ1c5QUFBQUFBQ2c4ejhBUWNrZ0N4ZXc0aCs4SThxLzZzRkczR1NNSmIwQUFBQUFBSUR6UHdCQjZTQUxGMUQwbkZwU3liL2oxTUVFMmRFcXZRQUFBQUFBWVBNL0FFR0pJUXNYMENCbG9IL0l2d242MjMrL3ZTczlBQUFBQUFCQTh6OEFRYWtoQ3hmZ0VBS0pxOGUvV0VwVGNwRGJLejBBQUFBQUFFRHpQd0JCeVNFTEYrQVFBb21yeDc5WVNsTnlrTnNyUFFBQUFBQUFJUE0vQUVIcElRc1gwQm5uRDliR3YyYmlzcU5xNUJDOUFBQUFBQUFBOHo4QVFZa2lDeGVRcDNBdy84Vy9PVkFRbjBPZUhyMEFBQUFBQUFEelB3QkJxU0lMRjVDbmNERC94Yjg1VUJDZlE1NGV2UUFBQUFBQTRQSS9BRUhKSWdzWHNLSGo1U2JGdjQ5YkI1Q0wzaUM5QUFBQUFBREE4ajhBUWVraUN4ZUF5MndyVGNTL1BIZzFZY0VNRnowQUFBQUFBTUR5UHdCQmlTTUxGNERMYkN0TnhMODhlRFZod1F3WFBRQUFBQUFBb1BJL0FFR3BJd3NYa0I0Zy9ISER2enBVSjAyR2VQRThBQUFBQUFDQThqOEFRY2tqQ3hmd0gvaFNsY0svQ01SeEZ6Q05KTDBBQUFBQUFHRHlQd0JCNlNNTEYyQXYxU3Ezd2IrV294RVlwSUF1dlFBQUFBQUFZUEkvQUVHSkpBc1hZQy9WS3JmQnY1YWpFUmlrZ0M2OUFBQUFBQUJBOGo4QVFha2tDeGVRMEh4KzE4Qy85RnZvaUpacENqMEFBQUFBQUVEeVB3QkJ5U1FMRjVEUWZIN1h3TC8wVytpSWxta0tQUUFBQUFBQUlQSS9BRUhwSkFzWDROc3hrZXkvdi9Jem8xeFVkU1c5QUFBQUFBQUE4ajhBUVlvbEN4WXJiZ2NudnI4OEFQQXFMRFFxUFFBQUFBQUFBUEkvQUVHcUpRc1dLMjRISjc2L1BBRHdLaXcwS2owQUFBQUFBT0R4UHdCQnlTVUxGOEJiajFSZXZMOEd2bDlZVnd3ZHZRQUFBQUFBd1BFL0FFSHBKUXNYNEVvNmJaSzZ2OGlxVytnMU9TVTlBQUFBQUFEQThUOEFRWWttQ3hmZ1NqcHRrcnEveUtwYjZEVTVKVDBBQUFBQUFLRHhQd0JCcVNZTEY2QXgxa1hEdUw5b1ZpOU5LWHdUUFFBQUFBQUFvUEUvQUVISkpnc1hvREhXUmNPNHYyaFdMMDBwZkJNOUFBQUFBQUNBOFQ4QVFla21DeGRnNVlyUzhMYS8ybk16eVRlWEpyMEFBQUFBQUdEeFB3QkJpU2NMRnlBR1B3Y2J0YjlYWHNaaFd3SWZQUUFBQUFBQVlQRS9BRUdwSndzWElBWS9CeHUxdjFkZXhtRmJBaDg5QUFBQUFBQkE4VDhBUWNrbkN4ZmdHNWJYUWJPLzN4UDV6TnBlTEQwQUFBQUFBRUR4UHdCQjZTY0xGK0FibHRkQnM3L2ZFL25NMmw0c1BRQUFBQUFBSVBFL0FFR0pLQXNYZ0tQdU5tV3h2d21qajNaZWZCUTlBQUFBQUFBQThUOEFRYWtvQ3hlQUVjQXdDcSsva1k0Mmc1NVpMVDBBQUFBQUFBRHhQd0JCeVNnTEY0QVJ3REFLcjcrUmpqYURubGt0UFFBQUFBQUE0UEEvQUVIcEtBc1hnQmx4M1VLcnYweHcxdVY2Z2h3OUFBQUFBQURnOEQ4QVFZa3BDeGVBR1hIZFFxdS9USERXNVhxQ0hEMEFBQUFBQU1Ed1B3QkJxU2tMRjhBeTlsaDBwNy91b2ZJMFJ2d3N2UUFBQUFBQXdQQS9BRUhKS1FzWHdETDJXSFNudis2aDhqUkcvQ3k5QUFBQUFBQ2c4RDhBUWVrcEN4ZkEvcm1IbnFPL3F2NG05YmNDOVR3QUFBQUFBS0R3UHdCQmlTb0xGOEQrdVllZW83K3EvaWIxdHdMMVBBQUFBQUFBZ1BBL0FFR3FLZ3NXZUE2YmdwKy81QWwrZkNhQUtiMEFBQUFBQUlEd1B3QkJ5aW9MRm5nT200S2Z2K1FKZm53bWdDbTlBQUFBQUFCZzhEOEFRZWtxQ3hlQTFRY2J1WmUvT2FiNmsxU05LTDBBQUFBQUFFRHdQd0JCaWlzTEZ2eXdxTUNQdjV5bTAvWjhIdCs4QUFBQUFBQkE4RDhBUWFvckN4YjhzS2pBajcrY3B0UDJmQjdmdkFBQUFBQUFJUEEvQUVIS0t3c1dFR3NxNEgrLzVFRGFEVC9pR2IwQUFBQUFBQ0R3UHdCQjZpc0xGaEJyS3VCL3YrUkEyZzAvNGhtOUFBQUFBQUFBOEQ4QVFaNHNDd0x3UHdCQnZTd0xBOER2UHdCQnlpd0xGb2wxRlJDQVArZ3JuWmxyeHhDOUFBQUFBQUNBN3o4QVFla3NDeGVBazFoV0lKQS8wdmZpQmx2Y0k3MEFBQUFBQUVEdlB3QkJpaTBMRnNrb0pVbVlQelFNV2pLNm9DcTlBQUFBQUFBQTd6OEFRYWt0Q3hkQTU0bGRRYUEvVTlmeFhNQVJBVDBBQUFBQUFNRHVQd0JCeWkwTEZpN1VybWFrUHlqOXZYVnpGaXk5QUFBQUFBQ0E3ajhBUWVrdEN4ZkFueFNxbEtnL2ZTWmEwSlY1R2IwQUFBQUFBRUR1UHdCQmlTNExGOERkelhQTHJEOEhLTmhIOG1nYXZRQUFBQUFBSU80L0FFR3BMZ3NYd0FiQU1lcXVQM3M3eVU4K0VRNjlBQUFBQUFEZzdUOEFRY2t1Q3hkZ1J0RTdsN0UvbTU0TlZsMHlKYjBBQUFBQUFLRHRQd0JCNlM0TEYrRFJwL1c5c3ovWFR0dWxYc2dzUFFBQUFBQUFZTzAvQUVHSkx3c1hvSmROV3VtMVB4NGRYVHdHYVN5OUFBQUFBQUJBN1Q4QVFha3ZDeGZBNmdyVEFMYy9NdTJkcVkwZTdEd0FBQUFBQUFEdFB3QkJ5UzhMRjBCWlhWNHp1VC9hUjcwNlhCRWpQUUFBQUFBQXdPdy9BRUhwTHdzWFlLMk55R3E3UCtWbzl5dUFrQk85QUFBQUFBQ2c3RDhBUVlrd0N4ZEF2QUZZaUx3LzA2eGF4dEZHSmowQUFBQUFBR0RzUHdCQnFUQUxGeUFLZ3puSHZqL2dSZWF2YU1BdHZRQUFBQUFBUU93L0FFSEpNQXNYNE5zNWtlaS9QLzBLb1UvV05DVzlBQUFBQUFBQTdEOEFRZWt3Q3hmZ0o0S09GOEUvOGdjdHpuanZJVDBBQUFBQUFPRHJQd0JCaVRFTEYvQWpmaXVxd1Q4MG1UaEVqcWNzUFFBQUFBQUFvT3MvQUVHcE1Rc1hnSVlNWWRIQ1A2RzBnY3RzblFNOUFBQUFBQUNBNno4QVFja3hDeGVRRmJEOFpjTS9pWEpMSTZndnhqd0FBQUFBQUVEclB3QkI2VEVMRjdBemd6MlJ4RDk0dHYxVWVZTWxQUUFBQUFBQUlPcy9BRUdKTWdzWHNLSGs1U2ZGUDhkOWFlWG9NeVk5QUFBQUFBRGc2ajhBUWFreUN4Y1FqTDVPVjhZL2VDNDhMSXZQR1QwQUFBQUFBTURxUHdCQnlUSUxGM0IxaXhMd3hqL2hJWnpsalJFbHZRQUFBQUFBb09vL0FFSHBNZ3NYVUVTRmpZbkhQd1ZEa1hBUVpoeTlBQUFBQUFCZzZqOEFRWW96Q3hZNTY2Kyt5RC9STE9tcVZEMEh2UUFBQUFBQVFPby9BRUdxTXdzVzk5eGFXc2svYi8rZ1dDanlCejBBQUFBQUFBRHFQd0JCeVRNTEYrQ0tQTzJUeWo5cElWWlFRM0lvdlFBQUFBQUE0T2svQUVIcE13c1gwRnRYMkRITFA2cmhyRTZOTlF5OUFBQUFBQURBNlQ4QVFZazBDeGZnT3ppSDBNcy90aEpVV2NSTExiMEFBQUFBQUtEcFB3QkJxVFFMRnhEd3h2dHZ6RC9TSzViRmN1enh2QUFBQUFBQVlPay9BRUhKTkFzWGtOU3dQYkhOUHpXd0ZmY3EveXE5QUFBQUFBQkE2VDhBUWVrMEN4Y1E1LzhPVTg0L01QUkJZQ2NTd2p3QUFBQUFBQ0RwUHdCQmlqVUxGdDNrcmZYT1B4R091MlVWSWNxOEFBQUFBQUFBNlQ4QVFhazFDeGV3czJ3Y21jOC9NTjhNeXV6TEd6MEFBQUFBQU1Eb1B3QkJ5VFVMRjFoTllEaHgwRCtSVHUwVzI1ejRQQUFBQUFBQW9PZy9BRUhwTlFzWFlHRm5MY1RRUCtucVBCYUxHQ2M5QUFBQUFBQ0E2RDhBUVlrMkN4Zm9KNEtPRjlFL0hQQ2xZdzRoTEwwQUFBQUFBR0RvUHdCQnFUWUxGL2lzeTF4cjBUK0JGcVgzelpvclBRQUFBQUFBUU9nL0FFSEpOZ3NYYUZwam1iL1JQN2U5UjFIdHBpdzlBQUFBQUFBZzZEOEFRZWsyQ3hlNERtMUZGTkkvNnJwR3V0NkhDajBBQUFBQUFPRG5Qd0JCaVRjTEY1RGNmUEMrMGovMEJGQksrcHdxUFFBQUFBQUF3T2MvQUVHcE53c1hZTlBoOFJUVFA3ZzhJZE42NGlpOUFBQUFBQUNnNXo4QVFjazNDeGNRdm5abmE5TS95SGZ4c00xdUVUMEFBQUFBQUlEblB3QkI2VGNMRnpBemQxTEMwejljdlFhMlZEc1lQUUFBQUFBQVlPYy9BRUdKT0FzWDZOVWp0Qm5VUDUzZ2tPdzI1QWc5QUFBQUFBQkE1ejhBUWFrNEN4ZkljY0tOY2RRL2RkWm5DYzRuTDcwQUFBQUFBQ0RuUHdCQnlUZ0xGekFYbnVESjFEK2syQW9iaVNBdXZRQUFBQUFBQU9jL0FFSHBPQXNYb0RnSHJpTFZQMW5IWklGd3ZpNDlBQUFBQUFEZzVqOEFRWWs1Q3hmUXlGUDNlOVUvNzBCZDd1MnRIejBBQUFBQUFNRG1Qd0JCcVRrTCs3TVNZRm5mdmRYVlA5eGxwQWdxQ3dxOVVISnZjR0ZuWVhSbFpGQnZjMmwwYVc5dVVISnZjR1Z5ZEhrQWNtVnRiM1psUlc1MGFYUjVBR2x1Wm1sdWFYUjVBR2RsZEZabGJHOWphWFI1QUZCdmMybDBhVzl1VW1WbmFYTjBjbmtBUm1WaWNuVmhjbmtBU21GdWRXRnllUUJLZFd4NUFGUm9kWEp6WkdGNUFGUjFaWE5rWVhrQVYyVmtibVZ6WkdGNUFGTmhkSFZ5WkdGNUFGTjFibVJoZVFCTmIyNWtZWGtBUm5KcFpHRjVBRTFoZVFBbGJTOGxaQzhsZVFBbE1ERTJiR3g0QUdGeWNtRjVYMmx1WkdWNEFHVndhR1Z0WlhKcGMxOXpkR0Z5ZEY5cFpIZ0FMU3NnSUNBd1dEQjRBQzB3V0Nzd1dDQXdXQzB3ZUNzd2VDQXdlQUJPYjNZQVZHaDFBRUYxWjNWemRBQjFibk5wWjI1bFpDQnphRzl5ZEFCbGNHaGxiV1Z5YVhOZmMzUmhjblFBZFc1emFXZHVaV1FnYVc1MEFFOWpkQUJtYkc5aGRBQlRZWFFBZFdsdWREWTBYM1FBVTNWaVkyeGhjM01BWjJWMFEyOTJaWEpoWjJWUWIzTnBkR2x2Ym5NQWMyVnRhVjl0YVc1dmNsOWhlR2x6QUhObGJXbGZiV0ZxYjNKZllYaHBjd0JCY0hJQWRtVmpkRzl5QUdkbGRGWmxiRzlqYVhSNVVHOXBiblJsY2dCUFkzUnZZbVZ5QUU1dmRtVnRZbVZ5QUZObGNIUmxiV0psY2dCRVpXTmxiV0psY2dCMWJuTnBaMjVsWkNCamFHRnlBRTFoY2dCaGJIUndBR1Z3YUdWdFpYSnBjMTl6ZEc5d0FIVnVhWGhmZEdsdFpYTjBZVzF3QUdWd2FHVnRaWEpwYzE5emRHVndBRk5sY0FBbFNUb2xUVG9sVXlBbGNBQnBibU5zYndCbFkyTnZBRk4xYmdCS2RXNEFjM1JrT2pwbGVHTmxjSFJwYjI0QVoyVjBVRzl6YVhScGIyNEFSVzUwYVhSNVEyOXNiR1ZqZEdsdmJnQk5iMjRBYm1GdUFFcGhiZ0JTWldObGFYWmxaRG9nSlhOY2JnQnlZV1JwZFhObFlYSjBhR3R0QUVwMWJBQmliMjlzQUhKbGJXOTJaVUZzYkFCQmNISnBiQUJsYlhOamNtbHdkR1Z1T2pwMllXd0FSbkpwQUdKaFpGOWhjbkpoZVY5dVpYZGZiR1Z1WjNSb0FFMWhjbU5vQUVGMVp3QjFibk5wWjI1bFpDQnNiMjVuQUhSbGNtMXBibUYwYVc1bkFITjBaRG82ZDNOMGNtbHVad0JpWVhOcFkxOXpkSEpwYm1jQWMzUmtPanB6ZEhKcGJtY0FjM1JrT2pwMU1UWnpkSEpwYm1jQWMzUmtPanAxTXpKemRISnBibWNBYVc1bUFDVTBaQzBsTW1RdEpUSmtWQ1V5WkRvbE1tUTZKV3htQUNVdU1FeG1BQ1ZNWmdCemFYcGxBSFJ5ZFdVQVZIVmxBSFZ3WkdGMFpRQm1ZV3h6WlFCMFlXdGxRbUZ6WlFCS2RXNWxBR2RsZEZCdmMybDBhVzl1U1c1U1pXWmxjbVZ1WTJWR2NtRnRaUUJuWlhST1lXMWxBR1J2ZFdKc1pRQjJhWE5wWW14bEFHRndiMmRsWlFCd1pYSnBaMlZsQUhCbGNtbHZaQUIyYjJsa0FHNXZjbUZrWDJOaGRGOXBaQUIwWlhKdGFXNWhkR1ZmYUdGdVpHeGxjaUIxYm1WNGNHVmpkR1ZrYkhrZ2NtVjBkWEp1WldRQVYyVmtBSE4wWkRvNlltRmtYMkZzYkc5akFIQmxjbWx2WkY5elpXTUFSR1ZqQUVabFlnQmhiSFJoQUdZMlkyRmxNVFprTmpjeE5HRmxPRGM1TjJSall6WTVOREkwTlRnd1l6SmtNVGN6WWpNeU9XSm1ZMll3TkRZeVpqUTBNVEEzWWpsbU16QmtOREE0WlRZeFkyRXlNRFl4TWpCalpqWTFZekkxWVdFMU9HUmlOV0l6TldKaE5HUTBZV1JoTmpRd1pESXhOekprWXpjNU5EVTBPRGRoTkRkaFptSXpOek00WlRFellqVXhZMk01WTJNM05UazROR1JqTVRnMk4ySXlaamd3TlRjMU1qRTJNemsxTVRNNE9HRTFPVEExWVdJMk1HRTJPVGxtWTJabE16RTVOREZoTWpabU56QXdPRFl4WmpNMU9UbGtZMkUwTlRNNE5tTXdPVGN5TUdObFlUSTJOVEZsWXpNNU1XRmtORE5rTWpaa05tUTRZUUJGUTBORlRsUlNTVU5KVkZrQVRVVkJUbDlCVGs5TlFVeFpBQ1ZoSUNWaUlDVmtJQ1ZJT2lWTk9pVlRJQ1ZaQUZCUFUwbFlBRTFGUVU1ZlRVOVVTVTlPWDBSUFZBQk5SVUZPWDAxUFZFbFBUbDlFUkU5VUFFZE5WQUFsU0RvbFRUb2xVd0JCVWtkZlQwWmZVRVZTU1VORlRsUkZVZ0JDVTFSQlVnQkZURVZOUlU1VVgxTkZWRjlPVHdCTlJVRk9YMDFQVkVsUFRnQkpUa05NU1U1QlZFbFBUZ0JPUVU0QVVFMEFZV1JrVDAxTkFFZE5BRUZOQUV4RFgwRk1UQUJTUlZaZlFWUmZSVkJQUTBnQVRFRk9Sd0JKVGtZQVJWQklSVTFGVWtsVFgxUlpVRVVBUTB4QlUxTkpSa2xEUVZSSlQwNWZWRmxRUlFCU1FWOVBSbDlCVTBOZlRrOUVSUUJQUWtwRlExUmZTVVFBVGs5U1FVUmZRMEZVWDBsRUFFTUFaVzF6WTNKcGNIUmxiam82YldWdGIzSjVYM1pwWlhjOGMyaHZjblErQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQSFZ1YzJsbmJtVmtJSE5vYjNKMFBnQmxiWE5qY21sd2RHVnVPanB0WlcxdmNubGZkbWxsZHp4cGJuUStBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BIVnVjMmxuYm1Wa0lHbHVkRDRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhabXh2WVhRK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEhWcGJuUTRYM1ErQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQR2x1ZERoZmRENEFaVzF6WTNKcGNIUmxiam82YldWdGIzSjVYM1pwWlhjOGRXbHVkREUyWDNRK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEdsdWRERTJYM1ErQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQSFZwYm5RMk5GOTBQZ0JsYlhOamNtbHdkR1Z1T2pwdFpXMXZjbmxmZG1sbGR6eHBiblEyTkY5MFBnQmxiWE5qY21sd2RHVnVPanB0WlcxdmNubGZkbWxsZHp4MWFXNTBNekpmZEQ0QVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4YVc1ME16SmZkRDRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhZMmhoY2o0QVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4ZFc1emFXZHVaV1FnWTJoaGNqNEFjM1JrT2pwaVlYTnBZMTl6ZEhKcGJtYzhkVzV6YVdkdVpXUWdZMmhoY2o0QVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4YzJsbmJtVmtJR05vWVhJK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEd4dmJtYytBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BIVnVjMmxuYm1Wa0lHeHZibWMrQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQR1J2ZFdKc1pUNEFSbVpvWVRCbU5tUlBaRU5tTldKcVpFTmhRMkpSWkVsbldHUlJaSFJsUVdOTllVRmlWV2cxWlU5b1JHWnJZVWhpVkdOSFoxWmpNR1ZWWkhkaU1XZGFaVUpoVW1oblpHdGhUV1o2WmxsbmVHSkVhR2RtU1dSUVlVZG9lbWhOWnpWaVJHTlVaRmxsT0dWTFprSmlSV05aWTFabGJHRm5ablZvVTJGbllVMW5kV1JXWnpGaFNXaHdZMEpuYW1OV1kxTmpRV1JUWkd4aVZHVkRhRkpqV1dKSFpWWm1hV0pqYURCa1JtZ3haVTFvY21oT1pFSm1RV0o0WVVaaloyUjRaMWhtVEdkNVprSmxVV2RYWmxOa1FtSldhRWxvUTJWalptNW5UV1ZTWjAxbGRXUklaVUZsV21KaVlWaGpRbUZOWjFSaVRXWnBaVzlpT0dGSlkyZGljMlp5WlVSaFZXZzBabFZqVldOVFpFbG1UbVZOYUVSb1kySlZaRUZpTVdGTlpqVmxUV2RHWWsxaVRtUlhaRkZqVldaWllVcG5SR2hOWnpKaVRXZFJZelJvUTJSRVpuaGljMk42WkU5bFVXSXdaakpqVUdORFpHZGpVbWhIWmtaaldtZFpZa3hqYTJWdlkwUmxUR0pzWTJSbFUyWkxZMUZqV1dVeFpsVm5aMk5GWTNCbVZXTjNZMnRpVjJaQ1pXeG1XV2h1WTA1bVFtUmtZMVJrUzJaNllWRm1VV2ROYUZKaVdXWk5abFpvZVdRNFkyZG5WV0ZHWTJ0a1oyTldaMU5pUVdKdVpVcG9lbUpGWVZSblRHSm9hSGRqUjJSWFpERmpkMkZVWlVWaGVtaEphSEZrVUdSRGFFbGpUR0pMYUhkbk1XSlBhRVpuUm1kRloybG9SR2RVWWtGaE0yZEdaa0ZqVG1KVVlrOWtWR05DYUZSaFJHVldZbXRvUm1WSFlrTm5VV0o2WVU1aGFtZEZZVTloUVdSbllqaG9ZbVZOWTNwbGEySk9hRTVuYW1WM1ptOWxSV1ZTWkdoblYyVlhZVU5rTldkTFpVRmllV00xWVZobFZXVnBaR3RvUjJOT1lsWm1TV2hDWWt0blZtaE5aRXBsUm1OblpWcGtWMlZLWjNwaVVXaFlZVlZuZVdWellqQmlSV1JFWmtWa1YyRkVaRVpvWTJkMllVbG5SbUZDYUZwbVNXUkdaMVZvWjJGS1pIbG1ZMmQ0WlVWaGVXSTBaR05vUW1Oc1lYUmxZMmRGWm5ob1RXUjVZVXRvYW1aM1pXbG1RMlo1WW5OaFRtaFVhR2hoVW1oU1pVbGhaMlF3Wlhka1RtWjRaVkZuUkdKVlpYcGlhMlIzWjFWbmQyRXhZVnBpUW1oU1pHZG9hMkpOWlhwb1dXRjRaMFJpWjJGSlpWQmtSMlY2WkUxaE5XWkVaVlJtV1dRNFkwdGxRbWhGYUZsbVZtSnNaV2RoZFdoVFkyZG9UV1YxWTFabk1XRkpaM0JsUW1OcVlWWmlVMmRCWWxOaWJHVlVhRU5tVW1WWlpFZGpWbUZwYUdObU1HZEdaakZvVFdGeVkwNWtRbWRCWVhoaFJtaG5hSGhvV0dWTVpubGpRbVJSWmxkaFUyaENaVlpvU1dGRFptTmxibWROWkZKb1RXVjFaVWhrUVdoYVpXSmpXR1ZDWjAxbVZHSk5aR2xrYjJRNGFFbGhaMlp6WVhKalJHVlZaVFJqVldGVlkxTmtTV05PWkUxblJHTmpZbFZuUVdneFprMW1OV2ROWTBabVRXSk9aVmRqVVdOVmFGbGxTbVJFWWsxaE1tVk5ZVkZvTkdWRFpFUm1lR1J6YUhwbFQyWlJhREJrTW1kUVpFTmxaMk5TWkVkaVJtaGFZMWxqVEdKclptOWtSR1JNWkd4bVpHaFRaa3RsVVdKWlpqRmtWV1JuYUVWb2NHUlZZbmRpYTJOWFowSm5iR0ZaYUc1a1RtaENaMlJqVkdWTFpYcGlVV1JSYUUxalVtTlpZMDFrVm1aNVlUaGpaMlJWWjBaaGEyZG5ZVlppVTJWQmFHNW5TbVI2WlVWaVZHZE1ZMmhpZDJaSFlWZG5NV04zYUZSa1JXVjZZa2xvY1dOUVlVTm9TV2RNWjB0bWQyY3haMDlrUm1OR1pFVm1hV05FWlZSbFFXY3paMFpuUVdWT1lWUm9UMlZVWlVKa1ZHWkVhRlprYTJoR1pFZGpRMlZSWkhwb1RtUnFaRVZoVDJGQlpXZGxPR0ZpWkUxbWVtTnJhRTVvVG1ocVlYZG9iMmhGYUZKbmFHVlhabGRoUTJVMVlrdGhRV1I1WlRWbVdHSlZZMmxuYTJKSFpFNW1WbUpKWkVKblMyZFdaVTFpU21SR1pHZGpXbWhYWTBwb2VtVlJZbGhrVldoNVpYTm1NR0ZGYUVSbVJXRlhhRVJsUm1WalluWmpTV1ZHWmtKaVdtZEpZVVppVldkblpFcG9lV2RqWjNoa1JXVjVaalJpWTJWQ1oyeGxkR1JqWkVWamVHZE5aM2xvUzJOcVpYZGthV0pEWW5sbWMyWk9aRlJpYUdWU1lWSmlTV2huWmpCaGQySk9aWGhuVVdKRVkxVmhlbUpyWm5kaVZXZDNaREZuV21GQ1kxSm9aMlZyWWsxbGVtSlpZbmhvUkdSbmFFbG9VR2RIWm5wa1RXSTFaa1JrVkdSWllUaG5TMkZDWTBWaldXTldaMnhvWjJkMVpsTm9aMk5OWW5Wa1ZtSXhaRWxoY0dWQ1kycG9WbUZUWVVGa1UyZHNabFJvUTJKU2FGbGpSMlZXWldsaFkyVXdaVVppTVdKTllYSm1UbWRDWkVGaWVHaEdaR2RoZUdSWVpFeGhlV1pDWjFGbVYyWlRhRUpvVm1aSlowTmtZMkp1WjAxaVVtZE5aM1ZrU0dSQllscGxZbUpZWTBKb1RXVlVZVTFtYVdGdlpEaG9TV2RuWjNObGNtSkVaRlZuTkdKVlpWVmpVMkpKWms1aVRXVkVaV05qVldSQmFERm9UV0UxWkUxb1JtSk5aazVoVjJGUloxVm1XV2hLWTBSa1RXTXlhRTFqVVdnMFkwTmhSR2Q0YUhOa2VtTlBhRkZsTUdNeWFGQmxRMlpuWVZKb1IyTkdaVnBsV1dKTVkydG9iMk5FWVV4aGJHZGthRk5qUzJOUlpWbG1NV0pWWjJkbVJXRndZVlZtZDJWclpWZGhRbVZzWmxsbmJtaE9aRUptWkdaVWFFdG5lbVZSWTFGalRXSlNaRmxpVFdkV2FIbGhPR0puWmxWaFJtRnJZV2RoVm1oVFpFRm5ibWhLWW5wb1JXRlVhRXhvYUdaM1lrZGpWMmd4WTNkaVZHSkZaM3BtU1doeFoxQmlRMmhKWTB4a1MyVjNaekZoVDJGR2FFWm5SV0ZwWjBSblZHTkJhRE5oUm1oQmFFNWtWR05QWmxSb1FtSlVZa1JuVm1aclpFWmpSMkpEYUZGa2VtZE9aV3BpUldSUGFFRm1aMlk0WjJKblRXRjZZV3RvVG1WT1oycG9kMlJ2WjBWblVtWm9ZbGRqVjJGRFlUVmpTMkpCWjNsbk5XUllZMVZqYVdScllrZG9UbVZXWlVsbVFtVkxZMVppVFdKS1lVWmlaMlZhWjFkblNtaDZZMUZvV0dkVlpIbGtjMll3WlVWbFJHRkZaVmRtUkdOR1lXTmhkbWRKWTBab1FtVmFZa2xuUm1KVlltZG1TbWg1WW1ObWVHSkZaSGxvTkdkallrSmxiR1IwWkdObFJXWjRhRTFqZVdKTFpXcGpkMk5wWmtObmVXVnpaazVsVkdGb2FGSmxVbU5KWW1kbE1HaDNaVTVtZUdSUmFFUm5WV1Y2Wld0bWQyUlZabmRoTVdSYVowSmlVbVZuYUd0aVRXVjZaVmxoZUdORVkyZGtTV2RRWTBkaWVtWk5ZelZoUkdOVVpsbGxPR1pMWVVKbVJXVlpZVlpsYkdGblozVmxVMkpuWkUxbGRXTldaakZqU1dKd1pFSm5hbUpXWkZOaVFXVlRZV3htVkdWRFpsSm5XV0pIWTFabWFXRmpaekJsUm1NeFowMWtjbWRPYUVKaVFXUjRaMFptWjJaNFpsaGpUR1Y1WWtKblVXVlhabE5tUW1oV1pVbGpRMlpqWlc1a1RXUlNaVTFtZFdGSVkwRmpXbVppWjFobFFtSk5ZVlJuVFdGcFpHOWpPR0ZKWTJkaGMyWnlZa1JoVldjMFlsVmlWV1JUWmtsa1RtVk5hRVJqWTJkVlpVRm9NV1pOWWpWb1RXWkdaazFvVG1KWFpGRm1WV05aWjBwbFJHSk5ZakptVFdSUll6UmpRMlZFWlhoa2MyUjZZVTlrVVdJd1p6Sm9VR1ZEYUdkalVtSkhhRVprV21oWllreGthMmR2WWtSblRHZHNZMlJqVTJGTFlWRm1XV2d4YUZWbloySkZZWEJvVldGM1ptdGtWMkZDWW14bldXSnVaMDVsUW1Oa1lsUmxTMlY2WVZGb1VXTk5ZbEprV1dkTlkxWmhlV000WkdkbFZXWkdZMnRrWjJSV1lWTm9RV051YUVwa2VtTkZZVlJsVEdKb1pIZGhSMmhYWkRGb2QyTlVaVVZpZW1SSlpYRmpVR1ZEWmtsblRHRkxZWGRtTVdGUFkwWmxSbVJGWldsa1JHVlVhRUZuTTJaR1owRm1UbVJVWlU5blZHWkNabFJoUkdKV1ltdGtSbVpIWkVOalVXVjZaMDVvYW1kRlowOWxRV1puWnpobFltZE5ZbnBtYTJOT1owNW1hbVIzWVc5bFJXVlNaMmhtVjJaWFprTmpOV2RMWWtGamVXTTFaMWhvVldOcFltdGhSMlZPWWxablNXaENZVXRoVm1aTlpFcGpSbUpuYUZwalYyRktaWHBqVVdOWVpWVmplV1p6WnpCa1JXaEVZa1ZoVjJKRVpFWmxZMmgyWkVsblJtUkNhRnBqU1dWR1kxVmlaMkpLWkhsaFkyWjRhRVZvZVdZMGFHTm5RbUZzWjNSaVkyRkZZWGhoVFdSNVowdGhhbVYzWW1salEyWjVaSE5sVG1WVVpHaG1VbWhTWVVsb1oyTXdZbmRtVG1GNGFGRmlSR2RWWm5wbWEyUjNaRlZsZDJFeFlWcGxRbU5TWm1kaWEyUk5ZWHBqV1dONFkwUmlaMk5KWjFCalIyRjZaRTFqTldoRVoxUmtXV2c0WTB0a1FtRkZaVmxuVm1Wc1oyZG9kV1JUWkdkaVRXWjFaRlpuTVdWSlpYQmxRbVZxWjFaaVUyRkJZMU5oYkdaVVowTmxVbUpaWTBka1ZtSnBhR05tTUdGR1p6RmpUV2R5WlU1bFFtZEJabmhsUm1WblpIaGhXR1ZNWVhsa1FtVlJabGRvVTJWQ1oxWm5TV0ZEWkdOaWJtRk5abEpqVFdkMWFFaGlRV1JhWVdKa1dHaENZazFpVkdSTlpHbG5iMkU0WVVsb1oySnpZbkpoUkdoVll6Um5WV05WWkZOblNXSk9ZVTFsUkdkaloxVmxRV1F4WTAxa05XaE5aVVpsVFdoT2FGZG9VV2RWWjFsaFNtRkVZMDFtTW1aTloxRmpOR2hEWkVSamVHSnpaWHBoVDJaUmFEQm5NbWRRWlVOa1oyTlNZVWRrUm1KYVlWbGhUR2RyWkc5a1JHVk1abXhqWkdaVFpFdG1VV0paYURGaFZXRm5Za1ZtY0dWVlkzZGhhMkZYWkVKbGJHUlpaRzVsVG1aQ2FHUmxWR2hMWTNwa1VXVlJhRTFpVW1OWlpFMW9WbVo1WWpobFoyZFZaa1ppYTJGbllsWm5VMk5CWm01aFNtWjZaVVZtVkdSTVptaGpkMlJIWmxkbU1XZDNaMVJuUldkNmFFbG5jV05RWjBObVNXTk1aVXRrZDJjeFlVOW9SbVJHWWtWbGFXWkVabFJpUVdVellVWmhRV2RPWlZSa1QyZFVaVUppVkdoRVkxWmxhMk5HYUVkbFEyZFJabnBuVG1WcVpVVm9UMkpCWjJkaU9HUmlhRTFqZW1aclpVNWhUbU5xWVhkb2IyTkZaMUpsYUdWWFoxZGlRMlUxWmt0a1FXZDVaalZuV0dSVlpXbG5hMmhIWms1aVZtaEpaRUpqUzJSV1pFMW1TbU5HWW1kbFdtRlhhRXBsZW1GUllsaG5WV2g1WTNOa01HaEZaRVJrUldaWFpFUmpSbUpqYUhaalNXSkdhRUprV21WSllVWm9WV2huWkVwa2VXVmpZWGhuUldKNVpqUm1ZMlJDWkd4amRHWmpaa1ZsZUdkTlozbGxTMmhxWW5kbGFXRkRZbmxsYzJST1kxUm1hR2RTWTFKblNXSm5hREJpZDJKT2FIaGhVV2hFWTFWaWVtTnJZM2RuVldWM1lURmlXbVZDYUZKaloyaHJaRTFvZW1aWmFIaGhSR2RuWkVsalVHZEhZWHBoVFdRMVpVUm5WR1paWVRoblMyTkNaa1ZqV1dkV1pHeG1aMlYxWkZOaFoyRk5aM1ZpVm1ReFlVbGxjR0ZDWTJwaVZtUlRaVUZpVTJkc1oxUm5RMlpTWTFsbVIyRldZV2xrWTJjd1kwWmtNV0pOWVhKbVRtTkNaa0ZvZUdSR1kyZGplR1pZWkV4bWVXTkNZVkZoVjJOVFowSmxWbVpKWkVOaVkySnVaazFpVW1WTlkzVmlTR0pCYUZwa1ltUllaa0ptVFdoVVlrMWhhV2R2WlRoa1NXSm5aSE5tY21WRVlWVmlOR1ZWWmxWalUyWkpaMDVtVFdaRVpHTm1WV05CWXpGbVRXWTFhRTFpUm1oTllVNW1WMkpSWkZWbFdXRktaVVJpVFdjeVlVMWlVV0kwWmtOaFJHSjRZWE5uZW1kUFoxRm5NR2d5WlZCblEyaG5ZMUpoUjJoR1lscGtXV1pNWld0bGIyVkVaVXhoYkdaa1pGTmpTMlJSWjFsbU1XTlZhR2RuUldKd1oxVmpkMkpyYUZkblFtWnNhRmxsYm1GT1owSmlaR05VWlV0a2VtTlJhRkZqVFdoU1kxbGhUV2hXWlhsb09HZG5aMVZpUm1ScmFHZG9WbUpUWjBGbGJtSktZWHBtUldWVVlreGlhR1IzWlVkaVYyWXhabmRoVkdKRlpIcGlTV1Z4WlZCbVEyRkpaRXhvUzJWM1l6Rm9UMlJHWTBaa1JXZHBaVVJoVkdOQlp6TmxSbWhCWTA1blZHRlBaRlJpUW1WVVkwUmxWbWRyWkVabVIyWkRaMUZoZW1kT1oycGxSV05QWTBGaFoyUTRabUppVFdSNlltdGlUbUpPWkdwb2QyVnZZa1ZrVW1Kb2FGZGlWMk5EWXpWbFMySkJZbmxsTldWWVlWVmhhV1ZyYUVka1RtSldZMGxrUW1aTFpsWmpUV2RLWVVaaFoySmFhRmRsU21WNlkxRm9XR1pWWW5sb2MyVXdaRVZoUkdSRlkxZG1SR0pHWVdOa2RtaEpaMFprUW1KYVpVbG5SbUZWWTJkaFNtUjVhR05pZUdkRlkzbG9OR2hqWjBKaGJHUjBaMk5sUldaNFpVMWllV1ZMWTJwamQyaHBhRU5oZVdGelkwNW1WR0pvYUZKaVVtUkpaV2RsTUdaM2FFNWplR0ZSWWtSa1ZXaDZZMnRrZDJoVlpYZGlNV1ZhWmtKaFVtVm5abXRtVFdSNllWbGplR2hFWm1kbFNXUlFZVWRuZW1OTlpEVm5SR2RVYUZsbE9HUkxZVUptUldKWlpsWmliR1JuWkhWb1UyZG5aMDFuZFdSV1lURmlTV053WlVKbGFtSldaRk5oUVdoVFoyeG1WR1JEWmxKaFdXaEhabFpoYVdaallqQm1SbUV4YUUxbWNtZE9aa0pvUVdKNFkwWm1aMko0WkZob1RHaDVaRUpuVVdGWFpGTmhRbVpXWWtsblEyUmpZMjVqVFdGU1lVMWtkV1ZJWjBGaFdtWmlhRmhvUW1OTllsUmpUV05wYUc5aU9HTkpaR2RoYzJoeVkwUmtWV00wWkZWbVZXSlRaa2xsVG1KTllVUm1ZMmhWWVVGb01XaE5aalZoVFdkR1prMWpUbVZYWWxGb1ZXZFphRXBvUkdGTllqSmhUV2RSWlRSblEyTkVaWGhpYzJkNlkwOWlVV1F3WlRKalVHZERaV2RsVW1KSFlVWm9XbWhaWlV4bmEySnZhRVJtVEdac1pXUm9VMlpMWWxGaVdXZ3haVlZvWjJSRlkzQmlWV1ozWld0aFYyZENaR3htV1dodVkwNW9RbWhrYUZSaFMyZDZZVkZoVVdGTmFGSmhXV0ZOWVZabGVXTTRaMmRoVldSR2FHdGtaMlpXWkZOb1FXUnVZa3BuZW1kRllWUmhUR2RvWTNkaVIyTlhaREZsZDJWVVpVVm1lbWhKYUhGalVHTkRZa2xoVEdoTFpYZGlNV1JQWjBaa1JtTkZZMmxuUkdSVVpFRm1NMlJHWkVGaFRtZFVZVTlpVkdoQ1lWUmpSR1JXWW10a1JtaEhaa05pVVdONlowNW5hbWhGWTA5b1FXVm5aRGhoWW1OTlpIcGthMlJPWWs1amFtRjNZMjlpUldaU1lXaG5WMlpYWlVOa05XVkxaRUZrZVdVMVpsaGhWV1pwWTJ0bVIySk9ZVlprU1doQ1prdGhWbWhOWmtwa1JtaG5hRnBsVjJOS1ozcGxVV2hZYUZWaGVXRnpaREJrUldaRVpVVm9WMkpFWVVaalkyTjJZMGxoUm1aQ1pGcG5TV05HYUZWbloyWktaM2xoWTJWNFlrVm1lV00wYUdOb1FtRnNaSFJsWTJkRllYaGtUV1o1WTB0b2FtSjNZbWxpUTJSNWFITmtUbU5VWVdoblVtTlNZMGxsWjJjd2FIZG1UbU40YUZGaVJHTlZZbnBvYTJkM1kxVm5kMll4WkZwblFtUlNabWRtYTJoTllucGpXV1o0WjBSb1oySkpabEJvUjJWNmFFMW1OV2RFWTFSaVdXUTRaVXRsUW1GRllWbG1WbWRzYUdka2RXRlRaV2RoVFdSMVlsWmtNV05KYUhCaFFtRnFaMVpsVTJSQlpWTm5iR1pVWVVObVVtTlphRWRoVm1KcFkyTm9NR2hHWnpGaVRXWnlZVTVuUW1KQmFIaG1SbWhuWVhoaldHTk1ZWGxrUW1kUllsZGxVMlZDWjFaaVNXaERaR05uYm1WTlkxSm5UV2QxWkVoa1FXTmFZV0prV0dKQ1pFMWhWR1pOYUdsb2IyRTRZVWxoWjJWelkzSmlSR05WWlRSa1ZXSlZZVk5vU1dkT1lrMW5SR1JqWTFWaVFXTXhaMDFsTldkTlpVWmhUV2hPWjFkbVVXVlZZbGxtU21kRVkwMW5NbWROWmxGak5HRkRhRVJvZUdWemFIcGtUMkpSWVRCaU1tUlFaME5tWjJoU1kwZGpSbWhhWjFsaVRHZHJhRzlsUkdSTVpteG5aR0pUWVV0aVVXTlpaREZrVldKblprVmhjR1ZWYUhkaWEyaFhZa0ppYkdGWlpHNW1UbVpDWjJSblZHTkxZWHBvVVdkUllrMW9VbUZaWVUxalZtaDVaemhpWjJSVlpFWmlhMlZuWmxaaVUyTkJZVzVtU21KNlpFVm1WR2RNWjJobWQyRkhaRmRsTVdkM1pWUmpSV0Y2WWtsa2NXRlFaa05vU1dWTVpFdGxkMmN4WkU5bVJtRkdhRVZuYVdoRVlsUm5RV0V6WVVaaFFXZE9ZMVJtVDJKVVpFSm1WR0ZFWjFaaGEyZEdaRWRrUTJKUllucG1UbVJxWkVWaVQyTkJaMmRtT0dWaWFFMWxlbWhyWkU1b1RtVnFaWGRoYjJaRloxSmxhR1ZYYUZkblEyTTFZMHRtUVdkNVpUVmhXR1pWWTJsb2EyZEhaRTVoVm1aSlpVSm1TMlZXWVUxbFNtTkdZV2RuV21OWGFFcGxlbUpSWlZob1ZXaDVaM05vTUdkRlowUm1SV1pYWTBSbFJtSmpZM1poU1dGR1owSmpXbVpKWmtaa1ZXTm5aRXBvZVdkalkzaGpSV1I1WWpSbFkyZENabXhtZEdKalowVmllR2ROWkhsblMyTnFaM2RuYVdWRFkzbGljMkpPWWxSamFHRlNhRkprU1dkbll6QmhkMlZPWW5oaFVXZEVZMVZvZW1aclpYZGhWV2QzWXpGa1dtRkNZbEppWjJaclpFMWxlbUpaWjNob1JHUm5hRWxpVUdOSFlucGtUV1ExWjBSblZHVlpaRGhvUzJWQ2FFVm5XV1ZXWkd4aVoyWjFhRk5pWjJGTlkzVmhWbVV4WmtsbGNHUkNZV3BuVm1WVFpVRmxVMmRzYUZSalEySlNZbGxvUjJOV1pHbGpZMmd3WlVabE1XaE5hSEpoVG1WQ1owRmhlR1ZHWm1kb2VHWllaRXhtZVdSQ1lWRmpWMmhUWmtKbFZtZEpZa05oWTJodVowMWlVbVJOWVhWb1NHUkJZVnBqWW1GWVlVSm9UV1pVWTAxbmFXRnZZVGhvU1dOblpITmtjbVpFWkZWbU5HUlZZMVZsVTJOSmFFNWhUV1pFWVdObVZXaEJaVEZvVFdNMVpVMW5SbUZOWkU1aVYyVlJhRlZsV1dSS1pVUmpUV0V5Wmsxa1VXRTBaRU5tUkdWNGFITmhlbU5QWmxGbE1HSXlZbEJuUTJWbloxSmpSMk5HWkZwa1dXVk1aMnRpYjJKRVlVeG1iR0ZrWjFOalMyUlJZbGxvTVdOVmFHZGhSV2h3WjFWaGQyVnJZVmRtUW1oc1lWbG5ibU5PWkVKb1pHVlVaRXRuZW1oUlpWRm1UV05TYUZsblRXUldabmxtT0dSblpsVmlSbVpyYUdkb1ZtZFRZMEZtYm1kS1lYcGpSV05VWTB4b2FHSjNZMGRvVjJJeFpYZGtWR0ZGWjNwb1NXWnhZVkJrUTJOSloweG9TMmgzWlRGalQyaEdZVVpuUldkcFpVUmxWR05CWWpOalJtVkJZMDVrVkdGUFkxUmhRbUpVWkVSa1ZtZHJZVVpuUjJGRFlWRmllbUZPWW1wblJXWlBaVUZsWjJVNFlXSmxUV0o2Wkd0bVRtUk9hR3BsZDJadllVVm1VbVpvWjFkbFYyaERaalZsUzJOQlpYbGlOV1JZWTFWaGFXWnJZMGRqVG1aV1lrbG9RbUpMWkZaaVRXSktZa1psWjJoYVpsZGxTbUo2WkZGbVdHZFZZWGxpYzJFd2FFVm9SR2hGYUZkbFJHRkdZMk5oZG1aSllrWmtRbVZhWVVsalJtRlZhR2RqU21GNWFHTmllR1JGWm5sb05HWmpZa0puYkdkMFoyTmlSV0o0WjAxbWVXZExaV3BsZDJWcFpFTmplV2h6WWs1b1ZHTm9hRkpoVW1aSloyZGpNR2QzYUU1bGVHWlJZMFJoVldoNlkydGxkMlJWWjNkb01XaGFZMEpoVW1oblpXdGhUV0o2WjFsaWVHTkVaR2RtU1dOUVprZGtlbWROWmpWalJHTlVZbGxsT0daTFowSmpSV0ZaWTFab2JHZG5hSFZtVTJKbllVMWlkV1ZXWkRGaFNXSndhRUpvYW1SV2FGTmlRV1ZUWjJ4bVZHSkRaRkpqV1dWSFkxWm5hV1pqWmpCblJtRXhhRTFoY21GT1lVSmpRV0o0WWtabloyVjRaRmhqVEdKNWFFSmlVV1JYWlZObVFtSldaMGxvUTJSamFHNW9UV2RTWlUxaWRXVklhRUZoV21oaVlsaG9RbWhOYUZSbVRXZHBZbTlpT0dkSlptZGljMk55WlVSbVZXZzBaRlZvVldSVFpVbG5UbVZOWkVSb1kyTlZaVUZuTVdWTlp6Vm9UV1JHWlUxalRtRlhhRkZsVldSWlpFcG1SR2ROWkRKblRXUlJZVFJrUTJORVkzaGljMlo2Wms5aFVXWXdaVEprVUdKRFpHZGpVbVpIWkVaa1dtUlpaVXhrYTJkdllVUmxUR2hzWkdSalUyRkxaRkZsV1dReGFGVmpaMkpGWlhCalZXSjNaMnRuVjJGQ1pXeGtXV1Z1WVU1a1FtZGtZbFJvUzJGNlpGRm9VV2ROWVZKbFdXVk5hRlppZVdFNFltZG5WV1pHWW10aFoyTldZMU5uUVdadVpFcGxlbUpGWkZSalRHUm9hSGRtUjJWWFpERmhkMlJVWTBWb2VtWkphSEZrVUdoRFkwbGlUR1pMWlhkbU1XZFBZa1ptUm1kRlkybG1SR2hVYUVGak0yUkdhRUZoVG1kVVlrOWxWR1ZDWVZSaVJHaFdaMnRuUm1GSFprTmlVV0o2Wms1a2FtZEZZazltUVdGblp6aGxZbUpOWm5wbWEyUk9ZazVvYW1SM2FHOW5SV05TYUdoaVYyVlhZME5qTldSTFpFRmtlV1UxWVZob1ZXVnBZbXRqUjJaT1pGWmpTV05DWmt0a1ZtRk5aVXBuUm1GblpWcGhWMlJLWjNwbFVXaFlhRlZtZVdaelpEQmpSV2hFWWtWa1YyWkVaVVpoWTJaMlowbG1SbVpDWTFwa1NXaEdabFZuWjJGS1kzbGtZMlI0YUVWbmVXZzBZbU5tUW1Sc1puUm5ZMkZGWm5oaFRXWjVaVXRsYW1SM1pXbGxRMlY1WkhOalRtRlVaR2huVW1kU1owbG9aMkl3WW5kb1RtVjRaRkZvUkdkVlpIcGthMkozWVZWamQyVXhaRnBqUW1aU1ltZG1hMlpOWW5waVdXVjRZMFJpWjJKSlpWQmxSMko2YUUxbU5XSkVZMVJpV1dRNGFFdGhRbWhGWTFsalZtUnNabWRoZFdaVFkyZGpUV2gxWjFabE1XZEpZM0JsUW1kcVpGWmxVMkpCWlZOamJHVlVZME5sVW1SWlpFZG1WbVZwYUdObE1HaEdaREZpVFdGeVowNWhRbU5CWm5oaFJtUm5aWGhqV0doTVlubGhRbUZSWVZkbVUyRkNZbFpsU1dWRFoyTmxibWhOWkZKbFRXRjFaRWhpUVdGYVlXSm5XR0pDYUUxaVZHSk5ZMmxqYjJNNGFFbGhaMkp6WVhKaFJHRlZaelJrVldOVmFGTmpTV05PWTAxaVJHRmphRlZoUVdReFpVMWhOV2ROWWtab1RXTk9ZbGRvVVdaVlpsbGhTbWRFWTAxaE1tVk5aVkZvTkdGRFpVUmplR0p6WVhwbFQyZFJaekJvTW1KUVprTmpaMmRTWlVkblJtRmFhRmxvVEdkcmFHOW1SR1ZNWTJ4blpHZFRaMHRoVVdkWlpURmlWV0puYUVWaGNHZFZaWGRvYTJOWFlrSm9iR1paWlc1alRtaENZV1JuVkdaTFozcG9VV1JSWTAxa1VtTlpaMDFrVm1oNWFEaGxaMmRWWWtab2EySm5ZMVpvVTJaQlpHNW5TbVI2WjBWaVZHUk1aR2htZDJWSFlWZGxNV1ozWjFSaFJXTjZaa2xqY1dSUVkwTm1TV0pNYUV0aWQyTXhaMDloUm1GR1lrVm1hV2RFWTFSaVFXWXpZMFpsUVdoT2FGUmtUMkZVWmtKaVZHTkVZMVpsYTJSR1pFZG1RMlpSWlhwaVRtSnFaa1ZsVDJKQloyZG1PR2RpWVUxbmVtSnJZazVuVG1acVpIZG5iMkpGWlZKa2FHVlhZMWRsUTJNMVprdGhRV0Y1WnpWaldHZFZaMmxoYTJWSFlVNWtWbVZKYUVKaFMyaFdaazFvU21aR1ltZGxXbVpYWkVwbGVtaFJZVmhpVldKNVkzTmlNR2RGWVVSbFJXUlhZa1JuUm1oalpIWmhTV1ZHWTBKbFdtTkpZVVpqVldGblowcGllV0ZqWlhoblJXWjVaalJtWTJOQ2FHeG5kR2RqWlVWbWVHZE5ZbmxqUzJGcVozZGxhV0pEWkhsamMyRk9ZMVJsYUdoU1pWSmhTV0ZuWlRCbWQyZE9aM2hpVVdoRVoxVmplbUpyYUhkbFZXVjNaVEZrV21WQ1lsSmtaMmRyWlUxaGVtSlpaWGhsUkdablpFbGhVR0pIWVhwbFRXUTFaa1JtVkdSWllqaGtTMlZDWmtWaldXUldhR3hsWjJSMVpWTmpaMk5OWW5WbFZtUXhaMGxsY0dSQ1pXcG9WbVJUWjBGb1UyRnNZMVJpUTJGU2FGbGtSMkZXWTJsaFkyWXdaMFpsTVdaTlkzSm1UbVZDWlVGbGVHWkdaR2RsZUdKWVpreGtlV1JDWkZGa1YyUlRhRUpqVm1GSlkwTmhZMlZ1WjAxb1VtVk5hSFZuU0dSQloxcGpZbU5ZWkVKaFRXRlVZVTFvYVdodllUaGxTV1ZuWkhOaWNtRkVaVlZrTkdoVmFGVm5VMlJKWjA1bFRXaEVZbU5sVldoQll6RmpUV2MxWkUxaVJtTk5hRTVtVjJoUmFGVmpXV0ZLWmtSaFRXSXlaRTFuVVdFMFlrTm9SR040WlhOa2VtaFBZMUZvTUdReVpWQmpRMlpuWjFKa1IySkdZVnBoV1dSTWFHdG5iMk5FWlV4a2JHRmtZbE5tUzJaUmFGbGtNV0pWWldka1JXSndhRlZtZDJOcloxZG9RbVJzWTFsamJtaE9aa0pqWkdKVVpVdGxlbVpSWmxGb1RXWlNaVmxoVFdOV1kzbGpPR1puWmxWalJtZHJZV2RtVm1KVFowRmtibVJLWVhwblJXUlVZVXhtYUdWM1prZGxWMk14WTNkb1ZHZEZaWHBqU1dSeFpsQmpRMlZKWmt4aFMyTjNaekZvVDJOR1pFWmtSV0pwWWtSbVZHZEJZek5uUm1OQlpFNWhWR2RQWlZSaFFtVlVaa1JuVm1KcllrWm5SMkpEWlZGaGVtVk9aV3BpUldoUFlrRm5aMlE0WTJKblRXaDZZbXRqVG1GT1pHcG1kMkp2WWtWalVtZG9ZVmRoVjJoRFpEVmtTMkpCWjNsbU5XUllaVlZqYVdGclpFZG5UbVZXWmtsb1FtaExhRlppVFdOS1pVWmtaMkZhWjFka1NtTjZabEZtV0dWVlpubGtjMkl3WlVWalJHSkZZbGRvUkdGR1ltTmxkbUpKWTBablFtRmFaRWxvUm1OVlptZGhTbWQ1WVdObmVHTkZhSGxpTkdWalpVSmliR0YwWkdOa1JXaDRZazFpZVdKTFptcGhkMmhwWjBOaGVXVnphRTVrVkdGb1pGSm9VbVpKWjJkbU1HaDNaazVvZUdoUllrUmhWV1Y2WVd0bGQyaFZZWGRtTVdGYVowSm5VbU5uWW10a1RXaDZZVmxuZUdkRVpHZGxTV05RWVVkamVtTk5hRFZoUkdOVVpsbGxPR1pMWjBKbFJXZFpabFptYkdkblozVmtVMkZuYUUxamRXUldaVEZuU1dKd1pFSmxhbU5XWVZOb1FXTlRZV3hpVkdkRFpGSmxXV2hIWlZabWFXWmpaekJqUm1VeFowMW9jbU5PWTBKaVFXWjRZVVppWjJoNFpGaG1UR0o1WjBKaVVXTlhZbE5uUW1oV1lrbGlRMkZqWkc1bFRXRlNaRTFqZFdoSVkwRmtXbUppWjFob1FtZE5aRlJvVFdacFoyOW9PR0ZKWm1ka2MySnlaVVJvVldVMFoxVmhWV0ZUWmtsa1RtWk5aRVJsWTJOVllVRmpNV0ZOWnpWa1RXUkdhRTFvVG1OWFoxRm9WV05aYUVwblJHZE5aakppVFdSUllqUm5RMmhFWjNoamMyWjZZMDloVVdZd1pESmhVR0pEWjJkblVtUkhaMFpuV21KWlpreG5hMlZ2WWtSa1RHWnNaMlJsVTJoTFlsRmpXV1V4WjFWbloyWkZaSEJtVldoM1ptdGhWMmhDWld4bFdXaHVaVTVoUW1Wa1pGUmtTMlo2WjFGbVVXaE5aMUpvV1dWTllsWmplV0k0YUdkbFZXVkdZV3RoWjJKV1lWTm5RV051WkVwamVtRkZaVlJpVEdGb1lYZGpSMlZYWXpGamQyZFVZMFZpZW1OSlkzRmhVR05EWTBsaVRHWkxhSGRsTVdOUFlVWm9SbWhGWW1sbFJHRlVZVUZrTTJoR1pFRm1UbUZVWWs5a1ZHSkNZVlJsUkdGV1kydGlSbWhIWkVOaVVXUjZaMDVoYW1KRlkwOWxRV05uWkRoblltSk5abnBrYTJKT1lrNWphbVYzWkc5aFJXSlNZbWhpVjJKWFpVTm1OV05MWTBGamVXYzFaRmhsVldGcFkydG5SMmRPWlZaa1NXVkNaa3RpVm1KTlkwcGhSbVJuWTFwbFYyTktabnBuVVdWWVkxVmhlV056WlRCblJXWkVZa1ZuVjJkRVprWmtZMloyWkVsaVJtTkNabHBoU1dOR1lsVmlaMmRLYUhsaVkyWjRZMFZoZVdnMFoyTmhRbWhzWW5Sb1kyTkZabmhpVFdONVpVdG5hbUYzWldsbVEyRjVZWE5sVG1SVVkyaGxVbVpTWmtsb1oyUXdabmRoVG1aNFpGRm5SR1JWWTNwb2EyRjNZVlZuZDJJeGFGcGtRbUpTYUdka2EyUk5ZWHBuV1dWNGFFUm1aMmhKWTFCb1IyTjZaMDFrTldkRVlWUmxXV1k0WWt0bFFtTkZZVmxpVm1kc1kyZGtkV2RUWVdkaVRXUjFaMVpsTVdOSlpYQmhRbVpxWTFaaFUyWkJaVk5uYkdGVVpFTm1VbWRaWmtkblZtSnBaR05pTUdGR1l6RmxUV1p5Wms1blFtVkJaSGhvUm1obllYaGxXR2hNYUhsaVFtUlJaVmRtVTJOQ1pGWmtTV05EWW1Oa2JtUk5ZVkpqVFdWMVkwaG9RV1phWVdKaFdHTkNZazFuVkdOTlltbG5iMlU0WjBsaloyTnpaWEprUkdGVllUUm1WV1JWWmxOblNXWk9ZMDFuUkdaaloxVm9RV2d4WjAxbk5XaE5aa1poVFdkT1kxZG5VV2hWYUZsaVNtZEVZMDFrTW1kTlkxRmhOR0pEWlVSa2VHSnpabnBtVDJSUll6QmlNbWRRYUVOaFoySlNaVWRvUm1OYVpGbGlUR1pyWkc5blJHRk1abXhvWkdWVFlVdG1VV1ZaWXpGbFZXUm5aa1ZtY0dkVlozZGphMkZYYUVKamJHRlpZVzVsVG1OQ2FHUmpWR0ZMWkhwbFVXRlJZVTFpVW1KWllrMWlWbUo1WlRoaFoyWlZZa1ptYTJoblpGWmpVMmhCWm01bVNtZDZaVVZtVkdaTVptaG1kMmhIWjFkak1XVjNaRlJuUldWNlprbGhjV1JRWlVObFNXVk1hRXRpZDJFeFlVOW5SbVpHYUVWaGFXSkVhRlJqUVdVellrWm5RV2RPWVZSaVQyVlVZVUptVkdWRVpGWmlhMkpHWTBkbFEyTlJabnBpVG1ocVkwVm5UMkpCWldkbE9HSmlaMDFqZW1OclprNWhUbWhxWkhkbWIyUkZZVkppYUdOWFlWZGlRMlExWlV0blFXRjVhRFZsV0daVlkybGthMlJIWms1aFZtUkpZa0pvUzJSV1pFMWxTbUpHWkdkaFdtWlhZVXBvZW1aUmFGaG5WV0o1WlhOaU1HSkZhRVJvUldKWFlrUm9SbWhqWjNabFNXRkdaVUptV21OSllrWmtWV2huWmtwaGVXaGpZWGhtUldKNVlUUm1ZMkpDYUd4b2RHWmpaVVZvZUdSTllubGhTMmhxWW5kbWFXSkRZbmxtYzJaT1oxUmthR2RTWlZKbVNXWm5ZakJtZDJOT1ozaGpVV1JFWlZWaWVtTnJaWGRpVldaM1pqRmlXbVZDWlZKb1oyaHJZazFtZW1GWlkzaGxSR1ZuWWtsalVHaEhZbnBqVFdFMVlrUmlWR2haWXpoa1MyaENZa1ZpV1dSV1lteG5aMmQxWWxOb1oyVk5ZWFZvVm1NeFkwbG1jR2RDWldwb1ZtWlRaRUZuVTJOc1pWUmtRMlZTWjFsbFIyUldaV2xpWTJRd1lrWm1NV1ZOWjNKblRtaENaa0ZpZUdkR1ptZGtlR1JZWjB4bGVXVkNaVkZsVjJKVFlVSmlWbVpKWVVOblkyVnVaVTFvVW1KTmFIVmtTR2hCWWxwblltVllaRUprVFdWVVlVMWxhV1p2WkRoaFNXTm5aWE5tY21kRVlsVmlOR2RWWkZWalUyaEpZVTVsVFdSRWFHTm5WV0pCWmpGalRXSTFhRTFrUm1STlpVNW9WMlJSYUZWaVdXUktZMFJtVFdJeVowMWlVV0kwYUVObVJHVjRZbk5sZW1oUFoxRm1NR015YUZCbFEyVm5aVkppUjJKR1lWcG9XV2hNWld0aGIyVkVZMHhpYkdKa1pWTmxTMk5SWWxsbk1XUlZZV2RqUldWd1pWVmtkMlpyWVZkbFFtTnNaMWxpYm1OT1pVSm9aR05VWmt0bGVtZFJabEZqVFdGU1kxbG1UV05XWlhsbE9HVm5ZVlZtUm1OcloyZG5WbUZUYUVGamJtTktZM3BvUldSVWFFeG9hR1IzWjBkaFYyY3hZbmRvVkdkRmFIcG5TV0p4YUZCalEyZEphRXhqUzJSM1lURmlUMkpHWVVabFJXaHBZa1JrVkdoQlp6TmtSbWhCWms1blZHUlBhRlJrUW1OVVpVUmlWbWhyWWtabVIyVkRZVkZrZW1KT2FHcGhSV0pQWjBGbVoyYzRhR0ptVFdSNllXdG5UbWhPWldwa2QyUnZaMFZuVW1Kb1lsZG5WMk5EWWpWa1MySkJaWGxsTldkWVlWVmthV1JyWVVkbVRtaFdaMGxpUW1kTFlsWmxUV2RLWlVabloyVmFabGRuU21oNlpsRmpXR1JWWjNsa2MyWXdaVVZvUkdWRmFGZGxSR2hHWTJObWRtUkpaa1ppUW1GYVkwbGlSbWhWYUdkbVNtTjVaR05pZUdKRlpYbG1OR1JqWWtKaGJHUjBZV05qUldONFprMWhlV1ZMWldwbGQyUnBZVU5oZVdWellrNWpWR0ZvWmxKblVtZEpaR2RrTUdSM1pVNWplR2hSWVVSalZXaDZZbXRsZDJGVlpIZGpNV0phYUVKa1VtZG5abXRqVFdoNloxbGllR2hFWldkaFNXTlFhRWRoZW1aTlp6VmlSR1ZVWlZsaE9HZExaRUpqUldKWllWWm5iR1puWm5Wa1UyUm5aVTFvZFdWV1p6Rm5TV1Z3WkVKamFtWldabE5uUVdGVFpHeGxWR1JEWWxKa1dXSkhZVlpvYVdoallUQm5SbUV4WWsxa2NtUk9aVUppUVdGNFkwWm1aMlI0WWxob1RHUjVaMEpoVVdoWFpsTmhRbU5XWVVsblEySmphRzVvVFdoU1pVMWtkV2RJWmtGaFdtRmlZbGhrUW1STlkxUm5UV1JwWjI5aU9HWkpabWRoYzJkeVowUm5WV1UwWlZWalZXZFRhRWxtVG1aTlowUmlZMlZWWkVGa01XaE5aalZsVFdKR1pVMW1UbU5YWVZGbVZXSlpZVXBoUkdGTlpESmhUV2RSWXpSblEyZEVabmhoYzJkNmFFOW5VV1F3WnpKbFVHSkRaMmRqVW1OSFowWmxXbUZaWVV4a2EyVnZaRVJoVEdOc1kyUmxVMmhMWVZGbVdXUXhaVlZvWjJORlpYQmtWV1ozWVd0bVYyTkNaV3huV1dGdVkwNWlRbUZrWVZSbVMyaDZZbEZtVVdkTlkxSm9XV1pOWkZaaGVXYzRabWRoVldGR1ltdG9aMkZXWVZObFFXUnVZMHBvZW1oRmFGUmhUR2RvWTNkalIyaFhZekZuZDJkVVprVmplbUpKWkhGblVHVkRaRWxrVEdKTFpYZG1NV05QWjBabFJtWkZZMmxoUkdaVVpVRm1NMlpHWTBGb1RtRlVaRTlqVkdkQ2FGUmpSR1JXWm10bVJtaEhhRU5tVVdGNllVNWlhbU5GWWs5a1FXZG5aRGhoWW1OTllYcG1hMkpPWms1bGFtUjNhRzluUldOU1ptaG9WMlJYYUVObk5XZExaMEZoZVdJMVlWaGhWV0ZwWm10a1IySk9ZbFpsU1dWQ1pFdG5WbVZOYUVwaFJtZG5abHBqVjJKS1pIcGlVV1pZWlZWamVXUnpaVEJtUldkRVlVVm1WMk5FWVVaaFkyZDJaRWxoUm1GQ1lWcGpTV05HWjFWb1oyRktaSGxvWTJGNFlVVm9lV2MwWW1ObFFtTnNhSFJrWTJaRlpuaGhUV0Y1Wmt0aGFtUjNZbWxtUTJKNWFITmpUbVZVWm1oblVtWlNaVWxrWjJNd1pIZGhUbUY0WTFGalJHaFZZM3BrYTJGM1kxVmlkMlV4WmxwaFFtRlNaR2RqYTJkTlkzcG1XV1Y0WTBSaloyZEpZMUJtUjJSNlowMW5OV05FWjFSaldXWTRaRXRvUW1GRllWbGlWbUZzWjJkbGRXTlRaR2RvVFdGMVpWWmpNV1pKWVhCb1FtVnFhRlpuVTJOQllWTmtiR0ZVWjBOaVVtRlpaa2RrVm1ocFpHTmxNR2hHWnpGaFRXaHlaVTVoUW1oQmFIaG9SbVZuWm5oa1dHZE1ZM2xtUW1SUloxZGtVMlJDWVZaa1NXUkRZMk5rYm1OTlkxSmtUV2gxWWtoblFXRmFZbUppV0dKQ1pVMWpWR2hOWW1saWIyZzRaa2xoWjJaelpISmlSR0pWWVRSbFZXRlZaVk5oU1dGT1lrMWpSR1ZqYUZWb1FXVXhZazFsTldSTlpFWmpUV1ZPWVZkaVVXTlZZVmxtU21aRVkwMW1NbWhOWjFGaE5HTkRaMFJoZUdOelpucGhUMmhSWmpCaU1tSlFaa05sWjJkU1kwZGtSbUZhWTFsaVRHRnJaMjlrUkdGTVoyeGlaR2hUWWt0aFVXZFpaekZqVldObllrVmpjR05WWm5kbWEyaFhZVUpqYkdKWmFHNW5UbUZDWVdSbVZHRkxaWHBoVVdGUllrMWxVbU5aWmsxb1ZtaDVaVGhrWjJkVlprWmxhMkZuWlZab1UyVkJZbTVvU21ONllrVm5WR2RNWm1oaGQyVkhaRmRvTVdKM1psUm9SV1Y2WlVsamNXVlFZVU5pU1dWTVowdG5kMlV4WkU5b1JtaEdZMFZpYVdKRWFGUmhRV1V6WkVabFFXaE9ZVlJrVDJKVVlVSm9WR2hFWVZaaWEyVkdaa2RrUTJKUlozcGpUbU5xWVVWaVQyWkJaR2RoT0dWaVlrMWxlbVJyWkU1bFRtWnFaWGRoYjJkRllsSm1hR05YWVZkaFEyVTFZVXRsUVdONVlUVm5XR0pWWjJsa2EyaEhaRTVpVm1KSlpFSm9TMlJXWkUxblNtRkdaMmRrV21GWFpVcG5lbU5SWmxoaFZXUjVZbk5pTUdORllVUmlSV2RYWTBSb1JtRmpablprU1dGR1owSmxXbWRKWjBaaFZXRm5aa3BpZVdKalpYaGhSV1I1WlRSbVkyUkNabXhpZEdGalpVVm1lR1JOWW5sa1MySnFaM2RpYVdaRFpubGtjMlpPWlZSaWFHRlNhRkpvU1doblpqQmlkMlZPWjNoaFVXWkVaVlZoZW1SclpuZGtWV1IzWnpGbVdtTkNhRkpsWjJoclpFMWllbWhaWm5oaFJHVm5aRWxuVUdOSFlucG5UV2cxWlVSbVZHaFpaRGhsUzJoQ1lVVmtXV05XWVd4aloyWjFZMU5qWjJWTlluVmlWbUl4WkVsb2NHVkNZV3BvVm1kVFlVRmhVMmhzYUZSaFEyRlNZVmxvUjJOV1pHbG9ZMk13WTBaaE1XRk5ZbkpuVG1SQ2FFRm9lR0ZHWTJkbGVHZFlZa3hoZVdGQ1psRmtWMlZUWTBKbVZtUkpZME5rWTJOdVkwMW5VbUpOWlhWbVNHTkJZVnBuWW1OWVkwSm9UV1ZVWlUxb2FXRnZaRGhqU1dablpITmpjbU5FWkZWbk5HTlZaRlZuVTJWSmFFNWpUV1JFWTJOb1ZXUkJZVEZuVFdRMVpFMWxSbUpOYUU1aVYyVlJZMVZoV1dOS1lVUmxUV1V5WlUxaFVXYzBaME5rUkdoNFozTm5lbWRQWVZGaU1HWXlaVkJvUTJobmFGSmhSMlZHWkZwa1dXUk1hR3RuYjJoRVpFeGliR0ZrWjFOb1MyaFJhRmxuTVdOVlkyZGxSV2R3WmxWbmQyUnJabGRqUW1Gc1oxbGhibWRPWjBKb1pHSlVZMHRqZW1kUlkxRm5UV1pTWTFsbFRXRldaM2xsT0dobmFGVm5SbVJyWm1ka1ZtaFRZMEZrYm1KS1pYcG9SV0ZVWjB4bGFHUjNhRWRqVjJFeFkzZGtWR2hGWTNwalNXVnhaRkJsUTJSSlkweG1TMmgzWmpGaFQyWkdaMFpoUldScFowUm1WR1ZCWkRObFJtZEJaazVqVkdKUFlWUm1RbWhVWTBSb1ZtTnJaMFpuUjJkRFpGRmllbWRPWldwblJXRlBhRUZuWjJFNFlXSmhUV1I2YUd0aVRtWk9aMnBsZDJkdllrVm9VbWRvWWxkbFYyWkRaelZqUzJaQllubG5OV1ZZWWxWbmFXaHJaa2RqVG1aV2FFbG5RbWhMWWxabVRXaEtZMFptWjJoYWFGZG5TbWQ2WmxGaldHZFZhSGxuYzJNd1pVVm5SR2hGWTFkaVJHaEdZbU5vZG1GSmFFWmhRbWRhWmtsa1JtaFZaR2RoU21GNVltTmplR0pGWVhsaU5HSmpaMEpsYkdoMFpXTm9SV0Y0WTAxbGVXRkxhR3BpZDJWcFprTm1lV2R6WVU1bVZHaG9abEptVW1SSmFHZG9NR1YzYUU1b2VHZFJZa1JtVldKNlpXdGlkMk5WYUhkaE1XVmFZa0psVW1SblptdGxUV2g2WkZsb2VHTkVabWRqU1dkUVowZG5lbWhOWXpWbFJHRlVZbGxsT0dkTFkwSm9SV1JaWlZaaWJHRm5ZM1ZtVTJSbmFFMWxkV1pXWWpGa1NXVndaMEpuYW1oV1lWTmtRV0pUWW14bVZHRkRaVkpqV1dkSFpWWm1hV0pqWXpCaFJtVXhaMDFrY21GT1pFSmlRV040WlVabloyWjRaVmhsVEdSNVowSmhVV2hYWkZObFFtVldZMGxpUTJaaloyNWxUV0ZTWlUxbmRXRklaMEZoV21aaVkxaGtRbUpOWmxSbVRXUnBZVzlvT0dGSlltZG1jMkZ5WVVSaFZXTTBZMVZqVldkVFlrbGxUbWhOWmtSb1kyTlZhRUZrTVdOTlpqVmhUV0pHWWsxbFRtWlhabEZvVldKWllVcGtSR0pOYURKaVRXTlJaelJtUTJSRVkzaG1jMkY2WlU5b1VXY3daekpsVUdORFpXZGpVbVpIYUVabFdtZFphRXhpYTJodllrUmtUR1pzWW1SbVUyVkxZMUZsV1dReFpWVmlaMkpGWm5CaVZXRjNZbXRsVjJKQ1pteGhXV1J1WTA1b1FtRmtaVlJtUzJkNllsRmxVV1ZOWWxKbFdXaE5abFpoZVdFNFpHZGpWV2RHWW10bloyZFdaVk5tUVdGdVlrcG9lbVZGWjFSaVRHaG9hSGRoUjJKWFl6RmpkMmRVYUVWaGVtTkpZWEZvVUdSRFpFbGxUR1ZMWTNkaE1XaFBaMFpqUm1GRlpXbGlSR2hVWmtGa00ySkdaMEZsVG1KVVprOWtWR2hDWjFSb1JHSldaV3RqUm1aSFprTmtVV1I2WlU1aGFtRkZaMDlsUVdSblp6aGpZbWhOWlhwaWEyRk9aVTVuYW1GM1pHOWtSV2hTWm1oalYyUlhaRU5uTldSTFpFRm9lV1ExYUZobVZXRnBZV3RtUjJaT1psWm5TV1JDYUV0aFZtUk5aRXBrUm1abllWcG9WMmhLWTNwaFVXSllZVlZvZVdOelpqQm9SV2hFWVVWbVYyTkVaRVptWTJaMlowbG1SbWhDYUZwblNXaEdaVlZrWjJKS1lYbGlZMmg0WTBWbGVXUTBZMk5sUW1Sc1pIUmxZMmhGWVhob1RXaDVaRXRqYW1OM1oybGhRMmQ1WkhOalRtWlVhR2hqVW1aU2FFbGpaMmd3WkhkblRtSjRaRkZvUkdKVlpIcGphMlIzWTFWaWQyWXhabHBpUW1oU1ltZGphMmhOWVhwaVdXZDRZa1JtWjJoSlkxQm9SMkY2Wmsxak5XSkVaMVJuV1dZNFprdG1RbVJGWWxsa1ZtRnNaR2RqZFdoVFlXZG5UV2gxWjFaak1XaEpaSEJsUW1OcVlsWmtVMk5CYUZOa2JHaFVaRU5tVW1aWmFFZG1WbU5wWldOb01HaEdZVEZqVFdWeVlrNWxRbWhCWjNoalJtUm5hSGhrV0dGTVkzbGpRbVZSWjFka1UySkNaVlpoU1dkRFptTmhibU5OWTFKalRXSjFZa2hrUVdSYVptSmhXR0pDWkUxbVZHWk5ZMmxtYjJnNFlVbGpaMkp6Wm5KbVJHWlZaelJoVldGVllsTmlTV2hPWlUxaVJHSmpaRlZuUVdZeGFFMW5OV0ZOWkVaaVRXZE9ZMWRvVVdWVllsbGhTbU5FWVUxaU1tRk5aMUZrTkdSRFpVUm5lR1Z6Wm5wa1QyUlJZVEJvTW1kUVowTmpaMkZTYUVkbFJtSmFZVmxpVEdkcllXOWlSR0pNWm14bFpHUlRZMHRoVVdaWlp6RmhWV05uYUVWbGNHWlZZbmRpYTJKWFlrSmxiR2RaWm01a1RtZENZbVJpVkdSTFpucG9VV1ZSWmsxbVVtVlpaazFsVm1ONVpUaGlaMmhWWVVaa2EyRm5ZMVpvVTJaQmFHNW9TbVI2WkVWalZHVk1ZV2hsZDJKSGFGZG9NV1YzWmxSaFJXSjZZa2xsY1dGUVprTmxTV05NWjB0bWQyTXhZazlpUm1WR1pVVmphV1JFYUZSa1FXVXphRVprUVdGT1kxUmxUMmRVWTBKbFZHVkVaRlptYTJaR1pVZGhRMkZSWTNwbVRtZHFhRVZrVDJoQllXZGpPR2hpWWsxaWVtSnJhRTVtVG1acVpuZGxiMlJGWVZKbWFHZFhZVmRtUTJRMVkwdGhRV0Y1WWpWaldHRlZZMmxtYTJOSGFFNWtWbVZKWkVKbFMyTldaVTFuU21GR1lXZG9XbVpYWjBwbGVtTlJaVmhuVldSNVkzTmtNR1ZGWkVSb1JXSlhaa1JoUm1KamFIWmhTV1pHWTBKbVdtTkpZVVpoVldKbllVcG5lV0ZqWVhoblJXRjVZelJqWTJOQ2FHeG5kR1JqWjBWbGVHUk5aM2xuUzJScVozZGlhV05EWW5sbWMyaE9aVlJvYUdWU1pWSm5TV2huYURCaGQyWk9aSGhqVVdaRVpGVm5lbU5yWjNkaVZXSjNZVEZpV21GQ1psSm5aMlZyWlUxaWVtSlpZWGhqUkdkbmFFbG5VR0pIWW5wa1RXSTFhRVJqVkdkWlp6aG1TMlZDWkVWaVdXRldaMnhtWjJkMVpGTm9aMmhOWm5WblZtVXhaVWxvY0daQ1lXcGhWbVJUWjBGbFUyWnNZbFJrUTJaU1pGbGpSMlZXWm1sa1kyUXdZMFppTVdKTmFISmlUbVpDWVVGbmVHVkdabWRuZUdoWWFFeGllV1ZDWWxGb1YyWlRhRUpsVm1aSllrTm1ZMkZ1WlUxbFVtTk5aWFZqU0dkQllWcGpZbWRZWkVKa1RXSlVaazFtYVdSdlpqaGpTV0puWW5OaWNtSkVaRlZoTkdkVmFGVmtVMlJKWTA1alRXRkVZMk5pVldOQllqRmlUV2cxYUUxaVJtSk5ZMDVoVjJWUllsVmtXV05LWVVSbVRXWXlaazFvVVdNMFkwTm5SR040WkhOamVtVlBabEZqTUdneVlsQmpRMkpuWjFKblIyVkdhRnBrV1daTVpXdGxiMmhFWlV4aWJHTmtabE5pUzJoUllsbG1NV05WWVdkb1JXSndhRlZrZDJScllsZGlRbWhzWmxsb2JtTk9ZMEpuWkdOVVpVdG9lbUZSWTFGb1RXUlNabGxtVFdSV1ozbGpPR1ZuWVZWbVJtaHJhR2RtVm1aVFpFRmxibU5LWVhwalJXaFVZMHhqYUdaM1kwZGxWMlF4WW5kbFZHSkZaSHBuU1daeFpWQmtRMlpKWkV4a1MyRjNaREZqVDJSR1prWm9SV2RwWWtSblZHVkJZak5oUm1SQllrNWlWR0pQWlZSbFFtTlVZMFJpVm1GclprWm5SMkZEWlZGaWVtaE9hR3BvUldkUFkwRmlaMlU0WjJKblRXTjZaV3RuVG1aT1ltcG5kMmh2WkVWbFVtaG9aVmRuVjJoRFp6VmlTMlJCYUhsbU5XZFlaRlZpYVdkcllrZGxUbVJXWWtsalFtRkxZbFprVFdKS1lVWm9aMlphYUZkb1NtTjZaRkZsV0daVlpubG5jMmN3WWtWaVJHSkZhRmRsUkdkR1oyTmhkbVpKWTBablFtZGFaa2xuUm1OVmFHZGpTbU41WTJOaGVHSkZhSGxuTkdWalpFSmliR1IwWTJOalJXUjRhRTFpZVdWTFoycGpkMlJwWlVOa2VXZHpaVTVuVkdGb1lWSmxVbU5KWW1kb01HZDNaVTVoZUdoUlkwUmtWV0Y2WjJ0a2QyaFZZWGRuTVdaYVowSmxVbWRuWjJ0blRXSjZaMWxtZUdORVltZGxTV1pRWmtkaWVtTk5aRFZsUkdaVVoxbGxPR1JMWlVKaVJXVlpabFpuYkdablpYVmhVMmhuWmsxbGRXSldZakZuU1dWd2FFSmphbVZXWVZOalFXSlRZbXhrVkdORFpGSmxXV0ZIWWxabGFXVmpaREJrUm1ZeFlVMWxjbU5PWVVKbVFXaDRZMFptWjJSNGFGaG1UR0o1WlVKb1VXUlhaVk5rUW1oV1pFbGpRMkpqWm01b1RXZFNaVTFuZFdoSVlrRmtXbVJpWmxoaFFtWk5ZbFJoVFdScGFHOWpPR1ZKYUdkamMyRnlZVVJuVldjMFlWVmlWV05UWWtsa1RtWk5aMFJuWTJoVmFFRmpNV1pOWWpWa1RXZEdhRTFoVG1WWFpsRmlWV2haWWtwa1JHSk5aakpvVFdoUllqUmxRMmRFWVhob2MyRjZaVTlsVVdRd1l6SmpVR0pEYUdkaVVtaEhaMFprV21WWlpVeGxhMlZ2WWtSbFRHRnNZbVJrVTJKTFpsRm5XV2N4WkZWaVoySkZhSEJpVldGM1pXdG9WMk5DWTJ4b1dXWnVaMDVrUW1Wa1pGUm5TMlo2WWxGbFVXTk5abEpoV1doTloxWm9lV000WTJkaFZXUkdaMnRoWjJKV1lsTmhRV1Z1YUVwbmVtVkZhRlJrVEdkb1puZGpSMlZYWmpGb2QyUlVhRVZqZW1oSlpYRmxVR1pEWVVsblRHWkxaM2RuTVdkUFkwWm5SbWhGWm1sa1JHRlVZVUZpTTJaR2FFRmtUbU5VWlU5bVZHVkNZVlJsUkdoV1lXdG1SbVZIWkVObVVXVjZaRTVpYW1aRlkwOWlRV2huWmpob1ltVk5aWHBuYTJkT1prNW5hbWgzWTI5alJXSlNZbWhrVjJGWGFFTm1OV1ZMWWtGa2VXWTFZbGhpVldacFltdG9SMkpPWTFab1NXSkNZMHRuVm1STlprcGpSbU5uWTFwb1YyaEtaSHBsVVdkWWFGVm9lV1p6WnpCaFJXRkVaRVZsVjJkRVlVWmhZMmgyYUVsbFJtSkNaVnBpU1dOR1kxVmpaMkpLWkhsaVkyTjRZa1ZsZVdRMFoyTmxRbVZzWjNSa1kyTkZZWGhsVFdkNVpVdG5hbWQzWkdsaVEyWjVZM05qVG1SVWFHaGtVbU5TWkVsbloyRXdaSGRtVG1aNGFGRm1SR0pWWm5waGEyUjNhRlZoZDJVeFpGcG1RbVZTWTJkaGEyZE5ZM3BpV1dkNFlrUmxaMmRKWlZCbFIySjZaazFpTldSRVpWUmhXV2c0WlV0aVFtZEZZVmxoVm1Wc1pXZGtkV1JUWVdkaFRXTjFaMVpoTVdaSlpYQmtRbWRxWjFablUySkJaVk5pYkdGVWFFTmlVbU5aWjBkblZtRnBaV05vTUdKR1l6RmlUV1Z5YUU1bFFtZEJhSGhsUm1KblpuaG5XR1pNWW5saVFtRlJabGRrVTJSQ1pWWmxTV2hEWldOaGJtTk5ZMUpoVFdSMVlraG1RV1phWm1KaVdHZENaRTFpVkdkTlpXbGpiMlk0WVVsaFoyWnpaWEppUkdKVllUUmpWV1ZWWWxOaFNXaE9aMDFvUkdKalpsVm5RV2d4WVUxak5XVk5Za1pqVFdoT1kxZGhVV2RWWWxsaFNtUkVaVTFuTW1oTllWRm9OR0ZEWTBSamVHWnpZM3BsVDJKUlp6QmxNbUpRWjBOaFoySlNZa2RsUm1oYVpsbG9UR2hyWm05aVJHTk1abXhtWkdOVFkwdGlVV2RaWkRGalZXZG5aMFZpY0dKVlpIZGphMmhYWkVKamJHVlpZbTVuVG1WQ2FHUm9WR1ZMWTNwaFVXZFJZazFpVW1GWlkwMWpWbU41WXpoa1oyRlZaa1ptYTJGblpGWm9VMlZCWjI1a1NtRjZaRVZsVkdSTVoyaGlkMk5IWkZkbU1XVjNZVlJpUldaNllrbGtjV1pRWkVOaVNXVk1Za3RvZDJReFprOWtSbWhHWWtWaGFXSkVZbFJtUVdZellVWmhRV1JPWkZSalQySlVZVUppVkdWRVlWWmxhMmhHWkVka1EySlJZM3BvVG1kcVlVVmtUMlZCWVdkaU9HZGlaRTFoZW1GclpVNWpUbWhxWm5kamIyaEZabEpvYUdkWFpWZGtRMk0xWTB0b1FXRjVhRFZuV0dGVlpHbG5hMmRIWWs1aFZtTkpaa0psUzJaV2FFMW1TbWhHWkdka1dtZFhaVXBuZW1kUmFGaG1WV2g1YUhOaU1HUkZZVVJqUldWWFlVUm9SbVZqWTNab1NXRkdhRUpsV21aSlprWm1WV05uWjBwaWVXSmpaWGhoUldSNVlqUmhZMlpDWTJ4bmRHWmphRVZrZUdkTlpIbGpTMkZxWVhkb2FXUkRhSGxtYzJOT1kxUm5hR1pTWmxKa1NXaG5ZVEJvZDJKT1luaGhVV1JFWWxWaGVtSnJaWGRoVldKM1l6RmpXbWRDWmxKaFoyUnJaVTFpZW1kWlkzaG9SR05uWmtsa1VHVkhaWHBtVFdRMVprUmhWR05aWVRobVMySkNaVVZoV1dKV1pXeG1aMlYxWWxOaloyWk5ZWFZuVm1neFprbG1jR1pDWldwa1ZtRlRZVUZqVTJkc1oxUmhRMmhTYUZsa1IyTldZV2xsWTJjd2FFWmhNV0pOWlhKblRtUkNZVUZrZUdOR1pXZGtlR2RZWTB4bGVXSkNZVkZtVjJGVFkwSmxWbVpKWVVObFkyUnVaazFqVW1OTllYVmtTR2RCWmxwbFltWllZVUpvVFdKVVlVMWphV1Z2WlRoa1NXVm5Zbk5sY21GRVpGVmlOR0pWWVZWaVUyUkpaMDVqVFdGRVpHTm9WV0pCWnpGbVRXSTFaazFpUm1kTlpFNW9WMkpSYUZWbFdXUktaRVJoVFdNeVpVMWpVV1kwWVVObFJHSjRabk5oZW1SUFpsRmtNR0V5WmxCbFEyZG5hRkpoUjJoR1pscGpXV05NWjJ0bWIySkVZa3hqYkdaa2FGTmlTMlZSWTFsak1XRlZabWRuUldkd1lWVmlkMmhyWlZkblFtSnNZbGxvYm1GT1lrSm1aR2RVWmt0bGVtTlJhRkZrVFdGU1pGbGxUV1JXWm5sbk9HRm5aVlZqUm1GclpHZG5WbVpUWTBGbGJtSktaM3BsUldWVVoweGphR1ozWVVka1YyY3haSGRtVkdaRlpYcGtTV1p4WTFCaFEyUkpZa3htUzJOM1pqRm9UMkpHWkVabVJXRnBaMFJpVkdoQlpqTm9SbVZCWWs1b1ZHWlBZVlJsUW1aVVpVUm5WbUZyWmtaalIyTkRZMUZvZW1KT1lXcG9SV2hQWkVGbVoyYzRaR0pqVFdKNlpHdGpUbVpPYUdwaGQySnZaMFZvVW1ob1pWZGxWMmhEYURWaFMySkJhSGxtTldkWWFGVmxhV1pyWlVka1RtRldZVWxrUW1WTFpGWm1UV05LWjBabFoyWmFZbGRoU21ONllWRmlXR05WWkhsb2MyWXdaRVZvUkdWRllWZG5SR1ZHWTJObGRtaEpaa1poUW1KYVlVbG1SbWhWWVdkalNtTjVaMk5sZUdaRlkzbGtOR0ZqWlVKbGJHWjBZbU5uUldoNFprMWplV0pMWVdwamQyUnBaVU5qZVdaellVNWtWR2RvWVZKa1VtaEpZV2RvTUdoM2FFNWtlR2RSWmtSbVZXTjZaR3RqZDJWVlluZGtNV1ZhWjBKbFVtaG5ZMnRoVFdKNloxbGllR1JFWjJkaFNXSlFaa2RrZW1STlp6Vm5SR0pVWWxsa09HSkxaVUptUldSWlpWWm1iR1puWm5WbVUyWm5ZMDFtZFdGV1pERmxTV053WjBKbGFtaFdhRk5qUVdKVFpXeG1WR1pEWkZKbVdXWkhaRlppYVdSalpqQm9SbVF4WlUxa2NtRk9aVUprUVdSNFprWmpaMlo0WTFobVRHRjVaVUpsVVdWWFpsTmhRbWRXWkVsblEyWmpZbTVvVFdkU2FFMWlkV1pJWWtGaldtSmlabGhtUW1WTllWUmpUV0pwWjI5aU9HaEpabWRvYzJoeVowUmtWV00wYUZWb1ZXUlRZVWxrVG1aTlpVUmhZMk5WWTBGaE1XTk5ZalZvVFdWR1kwMW5UbVJYWlZGb1ZXRlphRXBrUkdWTmFESmxUV05SWnpSaFEyWkVaM2hqYzJaNlpVOWpVV2d3WVRKaFVHaERZMmRvVW1SSFlVWmpXbVJaWTB4bGEyaHZZMFJsVEdoc1oyUmxVMk5MWTFGa1dXUXhaMVZpWjJSRlpIQmhWV0ozWjJ0blYyWkNZV3hoV1dodVpVNW1RbWhrWTFSalMyUjZZVkZtVVdaTlpsSm9XV1pOYUZabGVXZzRZMmRtVldWR1ptdGpaMmhXWkZOa1FXVnVaRXBvZW1ORlpWUm5UR05vWTNkaVIyUlhaREZpZDJOVVowVmplbWhKWlhGbVVHVkRaMGxqVEdaTFlYZGlNV0ZQWjBablJtRkZZbWxtUkdoVWFFRm9NMlJHWTBGaVRtRlVaMDlpVkdWQ1kxUmtSR1pXWTJ0aFJtRkhaVU5oVVdoNlowNWlhbVJGWms5b1FXaG5ZemhtWW1OTmFIcGxhMlJPWVU1b2FtSjNaMjlqUldSU1oyaG1WMmhYWWtOa05XVkxZa0ZuZVdFMVlWaGtWV1ZwWTJ0blIyRk9ZVlpuU1doQ1kwdGtWbUpOWkVwalJtVm5ZVnBqVjJGS2FIcG9VV0pZWTFWaGVXUnpaekJsUldORVlrVm1WMkpFWkVaa1kyaDJaa2xoUm1aQ1lscGxTV1pHWWxWb1oyRktaWGxpWTJKNGFFVm9lV0UwWkdOa1FtRnNaM1JqWTJkRmFIaGlUV2Q1YUV0aGFtSjNaR2xoUTJWNWFITmlUbWRVWldoalVtRlNZa2xoWjJjd2FIZGlUbWQ0WjFGaVJHZFZZM3BqYTJWM1psVm1kMlV4WlZwaFFtSlNZV2RvYTJKTllYcGhXV2g0WTBSaFoySkpabEJoUjJGNllrMWhOV0pFWTFSbldXWTRaRXRoUW1aRllsbGhWbUZzWkdka2RXVlRZMmRoVFdSMVoxWmlNV1JKWkhCaFFtWnFhRlpoVTJoQlpGTmpiR05VWlVObFVtTlpaVWRuVm1OcFptTm9NR1ZHWXpGb1RXWnlZVTVuUW1WQlozaGxSbWhuWjNobldHRk1ZbmxsUW1oUlpWZGtVMlJDWWxaaFNXTkRhR05qYm1STloxSm5UV2QxWTBobVFXZGFZbUpoV0dGQ1owMW9WR0ZOWm1sbWIyVTRaMGxoWjJKelpuSm5SR0pWWkRSbFZXVlZaRk5sU1dGT1pFMWhSR1ZqWjFWbVFXY3hZVTFuTldOTlpVWmtUV2RPWjFkaFVXaFZabGxoU21aRVpFMW9NbUZOWjFGaU5HZERZa1JrZUdKellucGlUMmhSWVRCaE1taFFZa05vWjJoU2FFZGhSbVphWVZsb1RHTnJZbTlsUkdSTVpXeG1aR2hUWTB0a1VXRlphREZvVldGbllVVmtjR2RWWlhkaWEyaFhZa0pqYkdKWlpHNWhUbU5DWW1SbFZHTkxZWHBoVVdoUlpFMWlVbVpaWVUxalZtaDVZamhrWjJWVllVWm9hMkpuWkZaalUyUkJZMjVrU21GNlprVm9WR05NWldoaGQyaEhabGRrTVdWM1pWUm5SV2Q2Wmtsb2NXWlFhRU5sU1dkTWFFdG9kMlV4YUU5bFJtZEdhRVZpYVdSRVpsUmhRV0V6WWtablFXZE9abFJrVDJGVVowSmhWR0ZFWWxabmEyaEdZa2RqUTJGUlpucGhUbU5xWTBWblQyaEJZbWRrT0doaVpFMW1lbVpyWTA1a1RtWnFaWGRrYjJORlpsSmphR2hYYUZkaVEySTFhRXRqUVdWNWFEVmpXR0pWWW1saGEyRkhaMDVuVm1SSmFFSmhTMkZXWlUxbFNtTkdhR2RvV21GWFprcGtlbVpSYUZoalZXUjVZWE5pTUdWRllrUmpSV1JYYUVSb1JtTmpablpvU1dKR1lVSmtXbVJKYUVabFZXUm5ZMHBuZVdOalpIaGxSV2g1WVRSb1kyWkNZV3hpZEdKalowVmhlR1ZOWm5saVMyRnFaWGRqYVdkRFpYbGxjMmhPYUZSbGFHRlNhRkpuU1dSbmFEQmhkMlZPWW5oalVXaEVZVlZrZW1oclpYZG9WV1YzWXpGbldtaENZMUprWjJKcllVMWllbUpaWW5ob1JHVm5aRWxuVUdWSGFIcGxUV1UxWVVSblZHSlpaVGhqUzJoQ1owVmtXV1ZXWTJ4b1oyVjFabE5vWjJGTlpYVmxWbUV4WkVsbWNHRkNZbXBqVm1kVFowRmpVMk5zWjFSb1EyVlNaRmxoUjJOV1ptbGhZMmN3WTBabE1XZE5ZbkprVG1GQ1prRm9lR1ZHWldkaGVHTllZa3hqZVdWQ1pWRmhWMkZUYUVKaVZtaEpaME5vWTJKdVprMWhVbVJOWlhWa1NHZEJabHBsWW1aWVpFSm5UV0pVWkUxbWFXSnZZamhpU1dkbmFITmpjbUpFWkZWaE5HRlZabFZuVTJaSlpFNW5UV0ZFWm1OblZXRkJZekZvVFdJMVpVMW1SbUZOWjA1a1YyZFJaMVZqV1dkS1owUmlUV1V5WjAxbVVXZzBZa05pUkdkNFpITm1lbUZQYUZGak1HY3labEJvUTJKbloxSm1SMlpHWjFwaFdXZE1aV3RqYjJORVpFeGliR2RrWVZOb1MyaFJaMWxrTVdKVloyZG9SV2R3WjFWbWQyZHJhRmRpUW1Kc1kxbGpibU5PWkVKb1pHWlVhRXRvZW1SUllWRmpUV0pTWkZsaVRXaFdZWGxpT0dGblpGVmhSbVJyWVdkb1ZtVlRZMEZrYm1OS2FIcGlSV1pVYUV4aWFHZDNZMGRrVjJReGFIZGhWR1JGWTNwbVNXRnhZMUJsUTJKSlpFeGpTMmQzWXpGb1QyTkdZa1ppUldKcFkwUmhWR2hCWmpOblJtUkJZazVpVkdWUFlWUmlRbUpVWmtSaVZtSnJZMFppUjJWRFpWRm5lbVJPWVdwa1JXSlBaa0ZoWjJZNFoySm5UV0Y2YUd0alRtUk9abXBvZDJadlkwVmhVbVZvWlZkalYyTkRZVFZtUzJSQlpYbGpOV2RZYUZWaGFXaHJZMGRvVG1KV1pFbGlRbVpMWkZab1RXSktZa1puWjJGYVpGZG9TbVI2WWxGb1dHaFZhSGxvYzJRd1owVm1SR0pGWWxkalJHaEdZV05tZG1OSlprWmhRbWhhYUVsalJtSlZaR2RvU21aNVlXTmtlR1JGWkhsaE5HaGpZMEpqYkdKMFpXTmpSV040WlUxbGVXaExaV3BuZDJkcFpVTmhlV1Z6WWs1b1ZHWm9aRkptVW1aSllXZGpNR1YzWms1bGVHTlJZVVJvVldkNlptdG9kMmhWWTNkbk1XVmFaVUpuVW1GbmFHdGlUV042WTFsaGVHVkVaV2RrU1dkUVpVZG5lbUpOWlRWbFJHSlVZbGxoT0dkTFlVSm5SV0paWmxab2JHWm5aWFZrVTJSblkwMWxkV2RXWWpGblNXRndaa0pqYW1oV1oxTm9RV0pUWW14bFZHSkRZMUprV1dGSGFGWm5hV0pqWlRCaVJtUXhaazFuY21ST1prSmpRV040YUVaaFoyZDRZVmhpVEdKNVlVSmtVV0ZYWmxObVFtaFdaVWxoUTJkalltNWtUV0ZTWTAxaWRXZElZa0ZqV21SaVpWaGlRbVpOWmxSblRXZHBhRzlpT0dWSloyZGpjMlZ5WmtSbVZXYzBabFZvVldSVFkwbGhUbVZOWkVSb1kyTlZaMEZoTVdoTlpUVmhUV0pHWmsxaVRtSlhaRkZrVldGWlowcG9SR2ROWXpKbFRXZFJaalJvUTJSRVluaGtjMk42WVU5aVVXZ3daakpuVUdaRFltZGpVbU5IWWtaaldtaFpaa3htYTJkdlprUmxUR2hzWVdSblUySkxZMUZoV1dNeFkxVm9aMlZGWTNCbVZXaDNaR3RqVjJSQ1pteGxXV0Z1WkU1b1FtTmtabFJuUzJWNmFGRm1VV1JOWjFKaFdXSk5hRlppZVdRNFoyZGhWV2hHWjJ0bVoyTldhRk5qUVdSdVprcGllbUpGWmxSaVRHVm9ZM2RqUjJKWFpURmpkMmRVYUVWa2VtZEpaM0ZtVUdaRFowbGtUR0pMWkhkaE1XUlBaRVpqUm1SRloybGpSR1ZVWmtGbk0yUkdaVUZtVG1aVVprOWxWR05DWmxSalJHTldZV3RuUm1KSFowTmxVV2g2WWs1a2FtRkZZVTluUVdWbmFEaGxZbWhOWm5wa2EyTk9hRTVsYW1oM2FHOWtSV0ZTYUdoaFYyZFhZME5vTldaTFlrRm9lV0UxWWxoalZXRnBaMnRuUjJkT1pGWm1TV0ZDWTB0bFZtZE5hRXBvUm1KblpscGlWMkpLWVhwb1VXTllhRlZvZVdGellqQmxSV2hFWjBWbVYyZEVZa1psWTJKMllVbG5SbVpDYUZwa1NXaEdZbFZrWjJkS1pubGxZMmg0YUVWamVXTTBaMk5tUW1Oc1pIUm1ZMkpGYUhobFRXRjVZMHRuYW1kM1pXbG1RMk41WlhObFRtRlVaV2hoVW1aU1lVbG1aMkV3WVhka1RtVjRabEZuUkdKVlozcG1hMlozWTFWbmQyY3haRnBtUW1GU1ptZG1hMk5OWVhwaVdXWjRZa1JrWjJaSloxQmpSMmg2WVUxaE5XSkVabFJsV1dRNFlrdGxRbWhGYUZsa1ZtTnNaMmRoZFdKVFptZGhUV1YxWmxaaE1XTkpZM0JsUW1KcWFGWm5VMkpCWmxOamJHRlVZME5rVW1oWllrZGhWbU5wWW1Oa01HRkdhREZoVFdSeVlVNW1RbWhCWjNoaVJtRm5aSGhuV0dGTWFIbG9RbWRSWTFkaVUyZENZbFprU1dWRFkyTmhibUpOWVZKbFRXRjFaRWhoUVdOYVlXSmxXR1ZDWlUxa1ZHTk5ZV2xvYjJnNFprbG1aMkp6Wm5KbVJHWlZhRFJvVldKVllsTmtTV1ZPWWsxalJHZGpZVlZuUVdJeFpFMWhOV0ZOYUVaaVRXUk9aRmRoVVdaVllWbG1TbVpFWlUxb01tWk5aMUZuTkdSRGFFUm5lR1Z6Wkhwb1QyZFJaakJqTW1KUVlrTm1aMlpTWVVka1JtVmFaVmxuVEdaclkyOWtSR1ZNWm14b1pHVlRaVXRtVVdkWlpURmpWV0ZuYUVWbmNHTlZaWGRrYTJGWFpVSmtiR1ZaWlc1alRtUkNaV1JqVkdWTGFIcGlVV05SWlUxa1VtVlpaazFuVm1aNVlUaGlaMlJWWmtaaGEyVm5abFprVTJoQmFHNWpTbU42WWtWbVZHUk1ZMmhqZDJWSFpGZGhNV0YzYUZSa1JXWjZZVWxqY1dkUVlVTmlTV2hNWWt0bmQyY3haVTltUm1aR1lVVmlhV0pFWWxSaFFXZ3paRVprUVdGT1lWUmlUMmRVWWtKaFZHTkVhRlpuYTJWR1lrZGlRMmhSYUhwa1RtUnFZa1ZoVDJOQlptZGhPR1JpWlUxamVtUnJaazVqVG1acVpuZGliMkZGWmxKaWFHVlhZVmRpUTJNMVlrdG1RV041WlRWaVdHaFZaR2xvYTJkSFkwNWhWbU5KWmtKalMyWldaazFqU21OR1kyZGlXbVJYWmtwaGVtRlJaMWhrVldWNVpITmtNR1JGWjBSbVJXUlhaa1JtUm1SalluWmlTV1pHWjBKbFdtVkpaa1puVldSblprcGllV1JqWVhoblJXTjVaRFJrWTJWQ2FHeGlkR2RqWVVWbmVHZE5ZM2xpUzJGcVpYZGxhV2hEWjNsbWMyWk9ZVlJsYUdoU1kxSmpTV05uWlRCb2QyWk9ZWGhrVVdGRVlsVm1lbWhyWlhkbFZXSjNaREZsV21oQ1oxSmlaMmhyWVUxamVtRlpaWGhuUkdoblpFbGtVR1JIWW5waVRXYzFZMFJoVkdSWlpqaGtTMkZDWlVWaVdXVldaR3hsWjJSMVlsTm1aMlpOWW5WbVZtUXhaMGxoY0dGQ1ptcG1WbWRUWWtGblUyRnNaRlJsUTJGU1lsbG1SMlJXWldsb1kySXdaa1poTVdWTlpYSm1UbWhDYUVGbWVHWkdhR2RqZUdWWVpreG9lV1JDWTFGbVYyVlRaVUpuVm1WSmFFTmtZMlp1WTAxa1VtRk5ZWFZsU0dSQmFGcGxZbVJZYUVKalRXUlVZVTFuYVdGdmFEaGtTV0ZuWW5Oa2NtSkVabFZuTkdSVlpWVmtVMmRKYUU1blRXTkVhR05oVldkQll6RmpUV1kxYUUxbVJtZE5ZVTVqVjJkUmFGVm1XV1JLWWtSbFRXZ3laazFuVVdNMFkwTmhSR1o0WlhOamVtSlBZVkZsTUdFeVkxQmlRMlJuWlZKbVIyUkdZMXBuV1dGTVpXdGliMkZFWmt4bGJHZGtZbE5qUzJkUlkxbGxNV1pWWkdkb1JXWndabFZrZDJGcllsZG1RbVpzYUZsbGJtRk9ZVUpoWkdGVWFFdG5lbUpSYUZGa1RXaFNaMWxuVFdkV2FIbGxPR05uWlZWbVJtZHJhR2RrVm1aVFpFRm9ibVJLWTNwalJXVlVhRXhqYUdaM1prZGlWMk14YUhkbFZHWkZaWHBqU1doeFpWQmlRMk5KWkV4b1MyaDNZakZuVDJSR1lVWmxSV2hwYUVSbVZHSkJaak5oUm1GQllVNWpWR2RQWkZSalFtTlVaa1JpVm1kcmFFWmpSMkpEYUZGbGVtaE9abXBoUldGUFpVRmpaMkk0WW1KblRXWjZhR3RqVG1kT1lXcG9kMlZ2WmtWa1VtUm9aVmRtVjJGRFpEVmpTMmhCWlhsaU5XaFlZbFZvYVdGclprZGxUbVZXWWtsbVFtSkxaVlppVFdOS1lrWmlaMkZhWkZkbVNtVjZZVkZvV0dKVlpubG5jMlV3WjBWaVJHaEZaVmRvUkdSR1lXTmtkbUZKWmtaaFFtRmFaRWxvUm1SVlkyZG5TbWQ1WTJObGVHRkZaWGxpTkdaallrSm1iR2QwWldOb1JXRjRaMDFrZVdkTFltcGhkMk5wWlVOb2VXUnpaVTVpVkdOb1psSm9VbVpKYUdka01HaDNhRTVuZUdWUlpFUm5WV042WTJ0a2QyTlZZbmRvTVdoYVlVSm9VbWhuWW10blRXRjZaVmxvZUdKRVpHZG9TV05RYUVkbWVtZE5hRFZsUkdKVVpsbGhPR0pMWlVKblJXTlpZMVpqYkdablpIVm1VMmhuWkUxamRXWldZakZqU1dWd1kwSmlhbU5XWlZOaVFXSlRaR3hpVkdGRFkxSmxXV1pIWmxabmFXVmpaVEJtUm1NeFkwMW9jbVZPWjBKalFXSjRZa1pqWjJaNFpWaG9UR041WTBKblVXUlhZVk5pUW1WV1owbG1RMmRqWTI1alRXUlNZVTFtZFdKSVowRmlXbUZpYUZob1FtSk5ZbFJrVFdWcFlXOWhPR1pKWm1kbGMyWnlZMFJrVldZMFpGVmtWV1JUWlVsb1RtRk5ZVVJrWTJKVlowRm5NV0ZOWlRWb1RXaEdaVTFoVG1kWFpWRm5WV2RaWkVwaVJHaE5ZakpvVFdGUll6UmxRMkpFWTNoa2MyTjZZMDlqVVdRd1lqSmxVR1ZEWldkaFVtVkhZVVpoV21WWllreGthMkp2WlVSaFRHUnNaV1JtVTJGTFpGRmlXV1l4WTFWaFoySkZaM0JvVldKM1kydGpWMmRDYUd4aldXUnVaRTVpUW1Oa1lsUmhTMlI2WjFGbFVXWk5ZVkppV1dGTlpGWmtlV1E0WldkaFZXZEdaV3RpWjJaV2FGTm5RV2R1WjBwaGVtVkZaVlJsVEdob2FIZGtSMkZYWkRGamQyZFVZMFZqZW1aSllYRm1VR0ZEWWtsa1RHUkxabmRpTVdOUFpVWmpSbVpGWkdsbVJHTlVaMEZoTTJaR1owRmtUbVJVYUU5a1ZHTkNaVlJsUkdSV1kydGpSbUpIWjBOa1VXaDZaazVrYW1GRlowOWpRV0puWmpoaVltSk5abnBvYTJOT1lVNW9hbWgzWVc5aVJXVlNZbWhpVjJGWFprTmxOV05MWmtGaWVXSTFaMWhvVldacFoydGpSMkZPYUZaa1NXVkNhRXRoVm1STllVcGxSbUpuWWxwalYyVktZbnBuVVdWWVlsVmtlV0p6WVRCaVJXRkVZVVZuVjJaRVlVWm5ZMlYyWTBsaFJtaENaVnBrU1doR1pWVmxaMlZLWlhsaVkyVjRaVVZoZVdjMFoyTmxRbVJzYUhSbVkyVkZZWGhoVFdSNVpFdGxhbWQzWkdsaFEyWjVZM05sVG1WVWFHaG5VbVZTWWtsbloySXdhSGRsVG1ONFkxRm1SR0ZWYUhwaWEyTjNZVlZrZDJReFlWcG5RbU5TWm1kamEyTk5aSHBoV1daNFpFUmpaMk5KWmxCbFIyZDZZMDFrTldWRVpWUm9XV0k0YUV0blFtSkZZVmxqVm1Kc2FHZGhkV0ZUWVdkb1RXWjFZVlptTVdOSlpIQm5RbVJxWlZablUySkJZVk5sYkdGVVprTmxVbWRaYUVkalZtSnBZMk5uTUdkR1lURm9UV0Z5WjA1b1FtZEJaSGhpUm1GbmFIaG5XR2RNWm5sbVFtZFJaVmRpVTJoQ1psWm5TV1pEWVdOb2JtWk5ZbEpsVFdoMWFFaGtRV0phWW1KbVdHSkNZMDFpVkdkTlptbG5iMkk0WlVsaFoyaHpZWEpuUkdKVlpUUmtWV1JWWkZOaFNXRk9aazFuUkdOallsVm9RV0l4Wmsxbk5XTk5aMFpvVFdkT1psZGpVV2hWWkZsbVNtRkVZVTFtTW1oTlkxRmhOR2REWTBSa2VHSnpZM3BpVDJGUll6Qm1NbVZRWkVOaloySlNZa2RoUm1aYVlsbGpUR2RyWlc5aVJHVk1abXhuWkdGVFlrdGxVV05aWWpGb1ZXZG5ZMFZsY0dWVlluZGthMlZYWkVKb2JHUlpabTVqVG1KQ2FHUmlWR2hMWkhwaFVXVlJZazFvVW1aWlpFMWhWbWQ1Wnpob1oyVlZaRVprYTJabllWWmxVMkpCWW01bVNtUjZaRVZsVkdaTVltaG1kMlpIWTFkbU1XWjNhRlJqUldWNlprbG5jV2hRWlVObFNXVk1ZMHRpZDJjeGFFOW1SbVZHWkVWaGFXRkVZbFJpUVdJelowWm1RV1ZPWlZSbFQySlVaRUptVkdaRWFGWm1hMlZHWWtkalEyUlJaWHBtVG1ocVlVVm1UMmRCWVdkbE9HZGlaazFvZW1GclprNWhUbUZxWTNkaWIySkZaRkprYUdaWFoxZGpRMlkxWjB0aFFXZDVaRFZvV0daVlltbG1hMkpIWlU1bVZtTkpaVUpoUzJWV1lVMW1TbUZHWldkaldtVlhaMHBqZW1kUlkxaGtWV0o1Wm5ObE1HaEZhRVJpUldaWFowUmxSbVJqWkhablNXZEdhRUpvV21aSllrWmhWV05uWmtwbGVXUmpZbmhoUldGNVpqUmpZMkZDYUd4a2RHaGpaa1ZrZUdWTllubGhTMmRxWW5kb2FXSkRZM2xqYzJST1pWUmphR1JTWlZKa1NXWm5aakJoZDJST1lYaGxVV0pFWTFWbGVtWnJZbmRpVldoM1lqRm9XbVJDWkZKa1oyVnJhRTFuZW1WWlozaGxSR1ZuWlVsblVHRkhaWHBqVFdJMVpVUm9WR05aWkRobVMyWkNaRVZoV1doV1pHeG5aMloxWmxObVoyVk5ablZrVm1neFlVbGtjR05DWldwbFZtSlRhRUZuVTJWc1kxUm5RMlJTWWxsbVIyZFdaMmxoWTJnd1pVWmxNV0pOWm5KbFRtVkNZa0ZqZUdGR2FHZG1lR05ZWWt4amVXZENZbEZoVjJaVFowSm9WbVpKWjBOaVkyaHVaMDFqVW1kTlpIVmhTR0ZCWTFwaFltUllaa0psVFdWVVprMWthV1p2WXpob1NXUm5aSE5tY21kRVpsVmxOR2RWWlZWaVUyUkpaMDVoVFdWRVpXTm1WV2RCYURGa1RXTTFZazFtUm1KTmFFNWpWMlJSWmxWbFdXUktaMFJsVFdJeVpVMW9VV00wWkVOaFJHRjRhSE5oZW1OUFpGRmpNR1F5WjFCa1EyaG5abEpqUjJOR1pGcGtXV2hNWTJ0bGIyUkVZVXhsYkdSa1pGTmtTMlJSWWxsaE1XUlZhR2RpUldSd1psVmhkMlpyWWxkalFtTnNZVmxtYm1aT1lrSmlaR05VWmt0aGVtRlJhRkZrVFdkU1lWbG9UV05XWVhsbk9HaG5aVlZtUm1GcmFHZG9WbVZUWjBGamJtaEthSHBqUldkVVlreGthR2QzWmtkb1YyTXhaSGRpVkdoRlozcG5TV2R4YUZCa1EyaEpZMHhvUzJSM1pERmlUMlJHWjBaaVJXWnBhRVJvVkdaQlpqTm1SbUZCWlU1bVZHUlBhRlJrUW1GVVlrUm5WbWhyWlVaaFIySkRZMUZtZW1ST1pXcGxSV0ZQWlVGaVoySTRabUptVFdKNmFHdGhUbVZPYUdwb2QyRnZZVVZqVW1Ob1psZG5WMlZEWWpWa1MyVkJZM2xqTldKWVlsVmthV0pyWTBkaVRtUldZa2xuUW1KTFoxWm1UV1JLWjBaa1oySmFZbGRvU21KNmFGRmlXR05WYUhsbWMySXdZMFZoUkdSRloxZGtSR1ZHWVdOamRtUkpZa1ptUW1GYVpFbG1SbVZWWVdkbFNtaDVZMk5uZUdKRmFIbGhOR05qWTBKbmJHaDBZbU5tUldaNFprMWhlV2hMWkdwbmQyTnBaME5uZVdaelkwNWxWR0pvYUZKalVtSkpZV2RuTUdKM1owNWtlR05SWWtSbFZXWjZhR3RrZDJkVlpYZGtNV1JhWTBKalVtVm5aV3RqVFdKNlpGbG9lR0pFWjJkalNXUlFZMGRqZW1KTllUVmlSR05VWkZsb09HUkxaRUpvUldWWlpGWmliR2RuWkhWa1UyRm5ZMDFtZFdoV1lqRmpTV0Z3WlVKaGFtWldhRk5oUVdSVGFHeGxWR2hEWjFKaVdXUkhhRlptYVdGalpEQmlSbVF4WmsxaGNtWk9aa0poUVdSNFowWm1aMmQ0WTFoaFRHTjVaVUpqVVdOWFlWTmxRbUZXWmtsaFEyRmpaMjVqVFdoU1owMWlkV2RJWVVGaFdtTmlabGhpUW1GTlkxUmlUV0ZwWkc5ak9HUkpZbWRrYzJGeVowUmpWV1UwWkZWaVZXaFRZa2xoVG1aTlkwUmpZMk5WWkVGbU1XRk5aelZpVFdWR1kwMWxUbVJYWjFGa1ZXRlpaa3BvUkdoTlp6Sm9UV0pSWlRSaVEyVkVZbmhtYzJaNlkwOWhVV1l3WlRKalVHSkRabWRsVW1GSFowWmpXbUZaYUV4bGEyUnZaa1JuVEdGc1oyUmlVMkZMWjFGbFdXVXhZMVZqWjJWRmFIQmhWV04zWjJ0aFYyUkNaMnhvV1dSdVlVNWpRbVprWTFSa1MyUjZZbEZuVVdGTlpsSmlXV0ZOWjFaaWVXYzRaV2RuVldSR1pHdG9aMmhXWTFOb1FXUnVZa3BqZW1WRlkxUm9UR0ZvWW5kaFIyVlhaVEZsZDJKVVlVVmhlbU5KWjNGbVVHaERaa2xvVEdOTFpIZG5NV0ZQWVVaalJtVkZabWxuUkdWVVlrRmlNMmRHWWtGaFRtSlVaRTlvVkdWQ1lWUmxSR05XWm10blJtZEhaa05oVVdGNllVNWhhbVZGWTA5b1FXUm5aamhpWW1GTlpYcGphMlJPWkU1a2FtVjNabTlrUldKU1ltaG1WMkpYWVVOaU5XUkxZVUZpZVdZMVoxaG9WV2hwWTJ0blIyZE9ZVlpuU1dSQ1lrdGlWbVZOWlVwbFJtaG5hRnBoVjJWS1ozcG5VV05ZWVZWaWVXZHphREJrUldoRWFFVmlWMk5FWkVabVkyZDJaa2xqUm1WQ1pscGlTV1pHWVZWa1oyVktZbmxoWTJKNFprVmllV1UwWjJOalFtTnNaSFJrWTJkRlluaGhUV1I1Wmt0bGFtRjNaV2xvUTJGNVpuTm5UbWhVYUdoalVtRlNaa2xpWjJNd2FIZGlUbVo0WmxGblJHSlZaM3BuYTJWM1kxVmlkMmN4WTFwa1FtTlNZbWRpYTJGTlpIcGpXV2g0WWtSa1oyWkphRkJpUjJGNllVMWxOV2RFWVZSaldXWTRaRXRqUW1oRllWbG5WbVpzYUdkbWRXRlRZbWRuVFdaMVkxWmxNV0pKWlhCbVFtUnFZbFprVTJKQlpWTmpiR2RVWmtOa1VtaFpaa2RtVm1kcFpHTmtNR1ZHYURGaVRXVnlhRTVqUW1aQlpYaGtSbVJuWkhoaVdHZE1ZM2xrUW1SUlpsZGxVMmhDWjFaa1NXUkRhR05sYm1STlkxSmpUV1IxWkVobVFXUmFaMkpsV0dSQ1lrMWhWR1pOWkdsbmIyWTRaRWxpWjJWelkzSmhSR1ZWWXpSbVZXWlZabE5sU1doT1lrMWxSR05qWmxWb1FXRXhhRTFtTldOTlkwWmlUV0ZPWTFkbVVXZFZaMWxoU21SRVpFMW5NbUZOWTFGbU5HSkRZMFJsZUdWelkzcGxUMlJSWnpCb01tSlFhRU5tWjJKU1pVZG9SbUphWTFsblRHWnJhRzlsUkdSTVpHeGhaR0pUWWt0aVVXVlpaREZpVldabllrVmljR1pWWm5kbWEyZFhaVUptYkdWWlpHNWpUbVpDWm1Sa1ZHSkxaSHBsVVdkUlprMW9VbVJaYUUxbFZtaDVZamhtWjJkVlpVWmhhMkpuWjFaaFUyUkJhRzVsU21GNlpFVmtWR1ZNWW1oaGQyVkhZbGRuTVdGM1lWUmhSV0o2WTBsbGNXSlFhRU5oU1dSTVlVdGtkMlF4YUU5b1JtRkdZVVZqYVdaRVoxUmtRV1F6WjBabVFXTk9aMVJrVDJSVVpFSmpWR1ZFWmxabmEyTkdZVWRpUTJkUlozcGlUbVZxWWtWblQySkJaMmRsT0dOaWFFMW5lbUZyWVU1bFRtVnFaM2RvYjJWRllsSm1hR0ZYWWxkblEyVTFaMHRvUVdkNVlqVm5XR1ZWYUdsaWEyWkhaRTVvVm1OSlprSmpTMlZXWmsxalNtSkdaR2RvV21OWFkwcGhlbVJSWWxoaFZXZDVhSE5vTUdaRlpFUmhSV1pYWmtSa1JtWmpablpsU1dKR1pVSmxXbUZKWlVaaVZXVm5Za3BpZVdOalkzaG9SV2g1YURSa1kyRkNaR3hqZEdaalkwVmtlR2hOWlhsbVMyTnFabmRpYVdWRFpIbG9jMk5PYUZSaGFHVlNabEpoU1dWblp6QmlkMk5PWm5oalVXWkVZMVZoZW1oclluZGxWV0ozWVRGaFdtZENaRkpvWjJGclprMWhlbVJaWjNob1JHRm5aRWxrVUdoSGFIcGxUV1UxWVVSaVZHWlphRGhuUzJkQ1owVmlXV2hXWVd4aFoySjFaMU5oWjJKTlluVmpWbWN4WTBsaGNHWkNaMnBrVm1WVGFFRmhVMkZzWjFSb1EyRlNaMWxvUjJKV1ltbGhZMmN3WlVab01XSk5aM0ppVG1GQ1pVRm5lR0pHYUdkaWVHSllaMHhrZVdGQ1pWRm9WMkpUWWtKaFZtSkpZVU5tWTJWdVlVMW5VbVJOWm5WaVNHRkJZVnBrWW1oWVowSmtUV05VWmsxb2FXZHZhRGhtU1dWblluTmpjbVJFWWxWak5HWlZZVlZvVTJGSllVNWpUV1JFWldOblZXVkJhREZsVFdJMVpVMW1SbWROWkU1aFYyVlJZMVZoV1daS1pVUmpUV0l5YUUxblVXRTBaME5pUkdaNFpuTm5lbVJQWmxGbk1HY3lZVkJuUTJOblpWSmxSMkpHYUZwbldXRk1abXRtYjJoRVlreGtiR05rWWxOa1MySlJZMWxoTVdoVlptZG5SV0Z3WjFWaWQyZHJaMWRpUW1Wc1pWbG5ibUZPWjBKalpHWlVZMHRvZW1WUlpsRm9UV2hTWkZsa1RXVldhSGxvT0dGbllWVmhSbWhyWW1kbVZtSlRaa0ZtYm1aS1pucGtSV05VWkV4bWFHTjNaa2RvVjJJeFluZGpWR1pGWm5walNXRnhaVkJtUTJaSlpVeGlTMlozWnpGbFQyRkdZVVpsUldScFowUm1WR0pCWkROb1JtTkJZMDVsVkdkUFlsUmxRbWRVWlVSa1ZtTnJaRVpsUjJaRFoxRmtlbWhPYUdwblJXUlBaVUZtWjJRNFltSm5UV1Y2WjJ0b1RtVk9ZMnBtZDJOdlowVm9VbWRvWjFkbFYyTkRZalZuUzJoQllubGlOV1ZZYUZWbWFXaHJaVWRpVG1aV1pVbGhRbUZMWWxaaVRXaEtaRVprWjJkYVoxZGtTbWg2WjFGaVdHWlZhSGxoYzJjd1lVVmlSR1pGWjFkbVJHSkdZbU5qZG1KSlpFWm9RbUZhWWtsaFJtVlZZbWRsU21KNWFHTm9lR05GYUhsbE5HTmpZVUpoYkdWMFpXTmlSV0o0WlUxb2VXaExZV3BsZDJScFkwTmplV1Z6Wms1b1ZHUm9aVkpvVW1kSllXZGxNR04zWkU1aGVHSlJaa1JrVldWNlpHdGxkMlZWWlhkb01XaGFZVUppVW1obmFHdGxUV0o2WkZsbGVHTkVZMmRvU1dWUVlrZG9lbWROWXpWa1JHWlVabGxtT0dOTFprSm9SV2haYUZaa2JHaG5ZWFZsVTJoblowMWxkV2RXWkRGalNXVndaMEpoYW1KV1lWTmxRV1ZUWjJ4a1ZHUkRZVkpsV1dOSGFGWm9hV0ZqWlRCbVJtSXhaVTFpY21KT1kwSm5RV1o0YUVabloySjRaMWhtVEdSNVowSm9VV05YWkZOa1FtTldaRWxsUTJWamFHNW5UV2RTWkUxb2RXVklZMEZtV21WaWFGaGxRbWhOWWxSa1RXTnBabTlrT0dSSlkyZG5jMlZ5WVVSb1ZXSTBZVlZoVldaVFowbGpUbWROWVVSa1kyWlZZMEZuTVdWTlpUVm5UV0pHWlUxa1RtWlhZbEZqVldaWmFFcG5SR1pOWlRKalRXVlJaVFJuUTJoRVluaGxjMlI2YUU5aVVXTXdaREpvVUdaRFpXZGpVbVZIWWtaaFdtTlpaMHhtYTJodlkwUmxUR2hzWjJSaFUyaExZMUZqV1dZeFkxVmpaMlZGWlhCaVZXSjNhR3RoVjJKQ1lteGhXV051YUU1a1FtZGtZMVJuUzJONlpsRmhVV1ZOWVZKaFdXZE5ZMVpvZVdFNFpHZGxWV0ZHWld0a1oyZFdaMU5vUVdOdVprcGhlbUpGWTFSa1RHWm9ZbmRpUjJGWFpERmlkMmRVWVVWa2VtaEpZbkZpVUdaRGFFbG1UR0pMWTNkaE1XTlBZVVppUm1kRloybG9SR2hVWjBGb00yZEdaRUZoVG1OVVlrOWtWR05DWWxSaFJHUldhR3RtUm1KSFpFTm5VV2Q2WVU1aWFtUkZaazlpUVdGblpqaGlZbWhOWm5waGEyVk9aRTVoYW1KM1lXOW1SV2hTWW1oblYyVlhaa05uTldkTFlVRmplV1UxWkZob1ZXaHBhR3RuUjJKT1kxWmtTV1pDWVV0bFZtVk5aMHBtUm1GblkxcGlWMkpLYUhwaFVXTllaRlZpZVdOellqQmlSV2RFWlVWa1YyaEVaRVpuWTJWMllVbGpSbWRDWVZwb1NXaEdaRlZtWjJkS1lubG5ZMmQ0WkVWamVXSTBZbU5sUW1Gc2FIUmpZMmhGYUhob1RXaDVZVXRpYW1GM1pXbG9RMlo1WW5Oa1RtZFVZV2hpVW1oU1prbGtaMkV3WjNkbVRtVjRZMUZqUkdOVlpucGlhMlYzYUZWa2QyVXhhRnBuUW1GU2FHZG1hMlJOWTNwb1dXUjRZVVJqWjJWSlpsQm1SMmQ2WjAxaE5XSkVaMVJrV1dRNGFFdGpRbVpGWTFsaFZtRnNaR2RtZFdoVFltZGlUV04xWVZabU1XRkpaM0JsUW1WcVkxWmtVMmhCWWxOaGJHaFVhRU5vVW1WWmFFZGlWbVpwWjJOb01HZEdaREZqVFdoeVowNWhRbVZCWW5oalJtWm5aSGhoV0dGTVkzbGlRbWhSWjFka1UyRkNaMVpqU1dGRFpXTm1ibVZOWjFKblRXRjFZVWhsUVdOYVlXSm9XR1ZDWkUxa1ZHWk5aMmxtYjJnNFpFbGlaMkZ6Wm5KaVJHRlZhRFJsVldOVloxTmlTV1JPWkUxbVJHRmpabFZsUVdNeFpVMW1OV05OWTBaaVRXWk9aVmRuVVdaVloxbG5TbVZFWTAxb01tZE5aMUZrTkdoRGFFUmllR0p6WW5walQyaFJaVEJsTW1WUVprTm1aMk5TWkVkaFJtZGFabGxrVEdoclkyOWpSR2hNWld4bVpHTlRZVXRtVVdOWlpURmlWV05uWkVWa2NHZFZaWGRvYTJkWFprSm9iR2RaWlc1aVRtTkNabVJpVkdOTFlucGlVV1ZSYUUxaFVtaFphRTFuVm1aNVl6aG9aMkZWWTBab2EyTm5abFprVTJoQlltNWhTbWQ2WTBWbFZHZE1hR2hsZDJSSFlWZGlNV1ozWTFSalJXTjZhRWxqY1dkUVpVTmxTV1pNWkV0aGQyY3haMDlrUm1OR2FFVm9hV0pFYUZSbVFXZ3paRVpuUVdOT2FGUm5UMlZVWVVKbFZHSkVZVlpuYTJaR1kwZGlRMlJSWlhwalRtSnFZMFZpVDJkQlpHZG1PR2RpWWsxbWVtSnJaMDVpVG1OcWFIZGpiMk5GWWxKamFHTlhaRmRtUTJJMWFFdG5RV041WVRWb1dHSlZZV2xtYTJSSFlrNWtWbVZKYUVKa1MySldhRTFrU21SR2FHZGlXbWRYWTBwbWVtSlJZMWhvVldaNVpITm1NR0ZGWjBSb1JXZFhZa1JtUm1aamFIWmtTV1JHWWtKa1dtZEpZVVppVldOblpVcG9lV2RqWVhob1JXWjVaelJqWTJkQ1lXeGpkR05qWVVWbGVHWk5abmxvUzJacVluZGxhV2hEWkhsbGMyVk9aMVJvYUdkU1pGSm1TV1ZuWWpCaGQySk9abmhvVVdKRVlsVm1lbVZyWlhkblZXSjNZakZrV21KQ1pWSmhaMkpyWVUxbmVtRlpaM2hqUkdWbllVbG9VR2hIWlhwbVRXZzFaRVJoVkdKWmFEaGhTMkpDWWtWaVdXRldaR3hoWjJKMVpGTmxaMlJOWm5WalZtTXhZMGxrY0dkQ2FHcGlWbWRUWjBGbVUyRnNZMVJuUTJaU1lWbGxSMkZXYUdsalkyVXdhRVpuTVdOTlluSmxUbUZDWmtGbGVHaEdZV2RqZUdGWVpVeGtlV2hDWmxGa1YyRlRaVUpuVm1SSlpFTmlZMkZ1YUUxblVtTk5hSFZoU0dkQlpscGhZbVJZWjBKa1RXWlVaMDFtYVdadlpUaGtTV2RuWm5Oa2NtTkVaMVZrTkdOVlkxVm1VMk5KWTA1alRXVkVZMk5qVldGQlpURmpUV0kxWjAxaVJtRk5aMDVvVjJkUllWVmtXV0ZLWjBSbFRXZ3laMDFqVVdnMFowTmtSR1I0YUhOa2VtaFBhRkZsTUdReVlWQm1RMlpuWjFKaVIySkdZbHBrV1dkTVptdG1iMmhFWVV4b2JHVmtaMU5rUzJSUllsbGxNV1pWYUdka1JXWndZbFZpZDJKcllWZGpRbVJzWkZsbmJtSk9ZMEprWkdoVVpVdGhlbVJSWTFGalRXWlNaRmxtVFdWV1ozbGlPR0puWlZWbFJtTnJabWRsVm1aVFlVRm1ibUZLWlhwblJXSlVZMHhuYUdWM1prZG9WMmN4Wm5kbVZHaEZabnBoU1dGeGFGQm1RMlJKWkV4bVMySjNhREZtVDJKR1owWmpSV05wYUVSbFZHZEJZek5tUm1OQllVNWtWR2hQWTFSalFtSlVaMFJoVm1kclprWm9SMk5EWmxGbGVtZE9abXBrUldGUFowRmxaMmM0WW1KaFRXWjZaMnRtVG1OT1pXcG1kMmh2WmtWb1VtZG9aMWRtVjJGRGFEVmlTMkZCWkhsa05XZFlaRlZqYVdOcmFFZGhUbVpXWjBsblFtZExZbFprVFdkS1kwWmlaMlZhWmxka1NtaDZZbEZvV0daVlpubGtjMmN3WVVWblJHaEZaMWRuUkdOR1ltTm1kbU5KWVVabVFtRmFaVWxtUm1kVllXZGhTbWg1WldObWVHUkZZM2xqTkdGalprSm9iR2gwWldOblJXRjRhRTFrZVdWTFlXcG5kMlpwWWtObGVXRnpaazVvVkdOb1pGSmpVbWhKWVdkbU1HSjNaazVvZUdOUlpVUmpWV1I2WTJ0amQyTlZhSGRrTVdWYVprSmtVbWRuWkd0a1RXWjZZMWxtZUdSRVpHZG5TV0pRWkVkamVtWk5aVFZqUkdaVWFGbG1PR1JMWlVKblJXSlphRlpvYkdkbllYVmlVMlpuWjAxaGRXaFdaakZuU1dad1lVSmhhbWRXWlZOblFXWlRaV3huVkdORFlsSmtXV05IWkZabWFXaGpZVEJoUm1ZeFlrMWtjbWRPWjBKaFFXVjRaa1poWjJWNFkxaGpUR0o1WTBKaVVXZFhaVk5pUW1kV1kwbGxRMlJqWTI1alRXZFNaazFpZFdWSVprRm1XbVppWlZobVFtVk5abFJrVFdKcFkyOWhPR0ZKWjJkaGMySnlaa1JuVldJMGFGVmpWV0pUWjBsaFRtRk5hRVJoWTJWVmFFRmtNV2hOYURWalRXVkdaazFuVG1oWFoxRmlWV1ZaWTBwb1JHWk5ZVEpuVFdGUllqUmtRMmRFYUhoaWMyRjZaazlrVVdnd2FESmlVR1ZEWjJkaVVtZEhZVVpvV21kWloweG9hMlp2WjBSalRHaHNZMlJuVTJSTFoxRm1XV2d4WVZWaFoyaEZaSEJpVldaM2FHdG9WMmhDWVd4a1dXZHVZazVrUW1Ga2FGUmhTMlo2WVZGbVVXZE5aMUpuV1daTlkxWmhlV2c0YUdkblZXVkdhR3RoWjJkV1oxTmhRV2h1WkVwbWVtVkZZbFJuVEdGb1lYZG5SMmRYWmpGbmQyZFVZa1ZpZW1oSlpYRmhVR1ZEWWtsaVRHVkxaWGRsTVdkUFprWmpSbWhGWjJsblJHRlVaa0ZuTTJKR1lrRmxUbVpVWWs5a1ZHaENabFJsUkdKV1pXdGhSbWhIWkVObFVXRjZZVTVrYW1ORlprOWlRV2huWVRobVltSk5hSHBoYTJkT1kwNW5hbWQzWW05bFJXTlNhR2hrVjJkWFpVTm9OV05MWWtGamVXSTFabGhrVldocFlXdG5SMlJPWkZaalNXVkNZMHRvVm1WTlpFcG9SbUpuWkZwbFYySktaSHBqVVdSWWFGVmxlV1J6WnpCb1JXTkVaMFZtVjJWRVlVWmlZMlIyWWtsblJtaENhRnBqU1dOR1pGVmxaMmhLWTNsb1kyVjRaVVZvZVdJMFlXTm9RbVpzWjNSb1kyaEZaM2huVFdaNVlVdG1hbU4zWjJsblEyUjVaWE5uVG1kVVptaGlVbUpTWkVsa1oySXdZbmRpVG1ONFpGRmhSR05WWW5waGEyWjNhRlZoZDJneGFGcG1RbUZTWkdkaGEyTk5ZM3BuV1dGNFowUm5aMkZKWjFCalIyaDZZazFoTldWRVkxUmxXV1U0WkV0a1FtaEZaMWxrVm1Kc1pHZG9kV2RUWTJkbVRXRjFZVlptTVdOSlkzQmhRbWhxWVZab1UyWkJhRk5oYkdaVVprTm1VbWRaWmtkblZtRnBaR05vTUdkR1lqRm1UV0Z5YUU1b1FtWkJZM2hvUm1WblkzaGtXR1JNWjNsa1FtWlJaVmRrVTJSQ1lsWm1TV0ZEWTJOa2JtWk5aVkppVFdSMVpVaGxRV1ZhWm1KaldHUkNaRTFoVkdSTlpXbG9iMmM0WmtsbFoySnpaSEpqUkdWVllqUm9WV1pWWkZObVNXTk9aVTFoUkdOalpGVm9RV1F4WkUxak5XSk5aVVpqVFdWT1pWZGlVV1pWWkZsaFNtVkVaMDFpTW1WTloxRmpOR1ZEWlVSbmVHUnpabnBuVDJoUlpUQmpNbWhRWkVObVoyaFNhRWRrUm1GYVpWbGxUR0ZyWm05aVJHZE1ZV3hsWkdGVGFFdGhVV0paWkRGalZXZG5ZMFZuY0dWVlpuZG1hMkpYWTBKbmJHVlpZMjVoVG1WQ1pXUmpWR1JMWVhwaVVXWlJaazFtVW1WWlkwMW9WbWg1Wmpoa1oyZFZZVVpoYTJSblpWWm1VMk5CWlc1a1NtVjZZa1ZsVkdoTWFHaGtkMmRIWkZkaU1XUjNabFJrUldGNlprbG9jV1pRWkVOa1NXVk1aa3RpZDJneFowOW5SbWRHWVVWbmFXaEVZMVJuUVdZelkwWmlRV2RPWWxSaFQyZFVhRUpuVkdSRVpWWmthMk5HWTBkaVEyZFJabnBoVG1ScVpFVmlUMk5CWVdka09HUmlaRTFvZW1kclpVNWxUbU5xWjNkamIyVkZaMUprYUdWWFlsZGlRMkkxWlV0b1FXVjVaRFZoV0dGVllXbGthMlpIWms1a1ZtVkpaRUpoUzJoV2FFMW9TbU5HWkdkaVdtUlhaRXBqZW1KUllWaGhWV1o1WW5OaE1HSkZZVVJqUldSWFprUmhSbVpqWkhabFNXSkdaRUpsV21OSlprWm1WV05uWjBwbGVXTmpZWGhqUldONVl6UmxZMlpDWjJ4bGRHRmpZMFZvZUdSTlpIbG1TMkZxYUhkaWFXSkRaM2xvYzJGT1lsUmlhR05TYUZKblNXaG5ZekJqZDJWT1ozaG9VV0ZFWTFWamVtVnJaWGRqVldWM1lURmxXbUZDWVZKaVoyRnJaMDFuZW1aWlpYaGpSR2RuYUVsblVHSkhZWHBuVFdNMWFFUmhWR05aWWpob1MyWkNhRVZrV1daV1kyeGhaMkYxWlZOaloyZE5ablZpVm1ReFowbG9jR05DWm1wa1ZtVlRaMEZtVTJSc1kxUm5RMlZTWmxsaVIyUldabWxsWTJnd1prWm9NV1ZOWm5KbFRtSkNZa0ZtZUdKR1pXZG5lR0ZZWWt4b2VXWkNZMUZvVjJSVFpVSm5WbWhKWmtOblkySnVaVTFqVW1oTlkzVmtTR1JCWkZwaFltaFlhRUpvVFdKVVowMWxhV2h2WWpoblNXTm5aWE5pY21KRVkxVmpOR0pWYUZWb1UyTkpaMDVtVFdKRVltTmlWV0ZCWXpGalRXWTFZazFsUm1GTlkwNWtWMlpSWmxWaldXVktaa1JsVFdjeVlrMW9VV00wWWtOaVJHVjRaWE5rZW1aUFpWRmpNR0V5WlZCbFEyTm5aVkpvUjJWR1oxcGxXV1pNYUd0a2IyUkVaa3hsYkdKa2FGTmtTMlJSWlZsak1XaFZaMmRtUldSd1psVmlkMlJyWkZkbVFtaHNZVmxqYm1aT1lVSm1aR0pVWVV0bmVtZFJZVkZsVFdSU1lsbGlUV1ZXWVhsbU9HZG5aMVZsUm1KclptZG5WbU5UWWtGbmJtRktZbnBoUldaVVlVeGlhR1YzWTBkblYyRXhZM2RoVkdoRlpucGlTV1p4WlZCalEyVkpaa3hpUzJSM1pqRmhUMlZHWkVaalJXUnBZMFJvVkdWQlp6TmhSbWRCWlU1alZHUlBZbFJoUW1GVVowUmxWbUZyYUVabVIyaERaRkZvZW1aT1ltcG9SV0pQWlVGbloyRTRZbUpuVFdONmFHdGhUbWhPWW1wamQyZHZZa1ZoVW1Gb1psZGlWMmREYURWbVMyZEJaSGxtTldWWVpGVmthV1pyWWtkalRtZFdZMGxsUW1OTFpWWm1UV0ZLWkVaa1oyUmFZbGRrU21ONllsRmhXR0ZWWjNsbWMyWXdaMFZuUkdWRlpWZG5SR1pHWW1OamRtaEpaVVpvUW1aYVlVbGxSbU5WWkdkaVNtWjVZbU5rZUdoRllYbGtOR05qWjBKbmJHRjBaMk5vUldoNFkwMWllV2RMWW1wbWQySnBaME5rZVdkellrNWhWR1pvYUZKb1VtWkpZbWRtTUdWM1kwNWtlR2hSWkVSblZXWjZZV3RqZDJKVlozZG1NV05hWWtKb1VtWm5aV3RsVFdGNllWbGxlR2RFYUdkb1NXWlFZa2RuZW1KTmFEVmhSR1pVWTFsbk9HRkxZa0ptUldOWlpsWmxiR2huWW5WaVUyaG5ZVTFvZFdoV1l6RmxTV0Z3WjBKaGFtWldZMU5oUVdoVFpXeG1WR1JEWVZKaldXUkhaRlpvYVdWallqQmlSbVF4WlUxb2NtTk9hRUpvUVdWNFpVWmxaMmQ0YUZoaVRHRjVZMEpuVVdKWFpsTm9RbU5XWTBsaFEyWmpZbTVqVFdGU1lVMWpkV1ZJWTBGb1dtVmlZMWhqUW1KTmFGUm5UV1JwYUc5a09HTkphR2RtYzJOeVlrUmhWV0kwWTFWalZXWlRaMGxpVG1WTlpVUm5ZMkZWWmtGbE1XRk5aalZoVFdWR2FFMW1UbVpYWmxGbFZXZFpZMHBoUkdWTlpESmlUV05SWVRSbFEyZEVabmhrYzJWNlpFOWhVV1V3WnpKbFVHVkRZbWRuVW1SSFprWm9XbWhaWWt4aGEyWnZaa1JqVEdac1ltUmlVMkpMWmxGaVdXY3haRlZvWjJaRmFIQmlWV0ozWld0aFYyRkNZV3hrV1dWdVkwNW5RbUprYUZSaVMyUjZhRkZsVVdGTllsSm9XV1pOWjFaaWVXTTRabWRsVldoR1kydGhaMkZXYUZObVFXWnVhRXBoZW1SRlkxUmxUR0pvWkhkaVIyRlhaakZoZDJSVVowVmplbUZKWVhGblVHWkRaVWxtVEdSTFozZGpNV1ZQYUVaaVJtVkZaMmxtUkdKVVpVRm5NMmRHWTBGbFRtWlVaVTlpVkdSQ1pGUmpSR1ZXWkd0aFJtUkhaa05oVVdSNllrNW5hbUpGWkU5aVFXWm5aVGhrWW1KTlpucGhhMkpPYUU1bGFtVjNaRzltUldSU1kyaGhWMmhYWkVOaU5XZExZVUZpZVdRMVlsaGtWV05wWkd0a1IyZE9abFpoU1dSQ2FFdG5WbWhOWWtwaFJtSm5aVnBoVjJSS1ozcGpVV1pZWkZWbWVXaHpZekJrUldGRVpVVmxWMkpFWmtaalkyWjJaVWxsUm1GQ2FGcG1TV1ZHWVZWbloyTktaWGxoWTJSNFpVVm5lV0UwWVdOb1FtSnNablJpWTJGRlpYaGhUV041WVV0bGFtTjNaMmxvUTJKNVpITm1UbU5VWVdoaFVtRlNZVWxsWjJjd1pYZG1UbWg0YUZGb1JHZFZZM3BrYTJKM1psVmlkMlV4WlZwblFtUlNZMmRtYTJkTlpucGpXV0o0WlVSaloyaEpaRkJsUjJKNlprMWhOV1pFWVZSaVdXYzRaVXRqUW1ORlkxbGlWbWhzWW1kbGRXVlRZV2RtVFdaMVkxWmtNV05KWW5CblFtUnFhRlpoVTJoQllsTm9iR2RVWjBOaVVtSlpZMGRvVm1ocFkyTmlNR1pHWWpGb1RXUnlhRTVuUW1WQlpYaG1SbUZuWm5oa1dHRk1ZM2xuUW1KUloxZGxVMmhDWVZabFNXUkRaV05sYm1WTlpWSmpUV1oxWWtoaVFXUmFZbUpqV0daQ1kwMW1WR2hOWldsbGIyYzRaa2xtWjJOellYSmtSR0pWWnpSaVZXSlZZMU5uU1dGT2FFMWpSR1ZqYUZWaFFXVXhaVTFtTldWTllVWmhUV1ZPWkZkb1VXaFZZbGxoU21WRVlVMWhNbUpOWlZGak5HZERZMFJtZUdWellYcGtUMkpSWWpCak1tSlFZa05sWjJOU1lrZG1SbVJhWTFsbFRHVnJaRzlvUkdGTVkyeGlaR2RUWkV0b1VXaFpZekZrVldOblkwVm5jR2hWYUhkbWEyUlhaVUpuYkdSWlpXNWlUbVJDWTJSa1ZHWkxaWHBvVVdSUlprMWlVbWhaWTAxb1ZtaDVaemhpWjJGVmFFWmlhMkZuWTFabVUyaEJZbTVtU21aNlprVmlWR1ZNYUdobWQyZEhhRmRqTVdaM2FGUmtSV1I2YUVsb2NXRlFZME5oU1dGTWFFdGpkMkV4WjA5aFJtSkdZa1ZqYVdoRVpWUmtRV2N6WWtab1FXRk9aMVJvVDJaVVpFSmtWR05FWWxaa2EyTkdZMGRvUTJaUlpIcGhUbUZxWWtWbVQyUkJaMmRpT0dKaVkwMW5lbVJyWTA1bFRtTnFaM2RrYjJkRlpWSmxhR2RYWWxkaVEyYzFZVXRsUVdKNVp6VmlXR2hWWjJsb2EyTkhhRTVtVm1aSlkwSmxTMlJXWkUxblNtSkdZbWRrV21SWFlrcGllbWhSWjFoblZXTjVabk5tTUdKRlprUmpSV1ZYWWtSbFJtaGpZWFpvU1dKR2FFSmpXbVZKWjBablZXTm5hRXBqZVdWalpuaGtSV2Q1WnpSblkyaENabXhuZEdaalpFVmhlR1JOWW5salMyUnFabmRtYVdKRFpYbGpjMlZPYUZSbmFHVlNZbEppU1dSbllUQmlkMlJPWm5oa1VXaEVaMVZuZW1aclpuZGtWV1ozWmpGbldtSkNZMUpqWjJGclowMWtlbUpaWTNob1JHWm5hRWxpVUdOSFpYcGpUV0UxYUVSb1ZHZFpZamhqUzJOQ1pFVmtXV1ZXWm14bloySjFZbE5rWjJKTllYVmxWbU14WlVsa2NHZENZbXBuVm1WVFpFRm9VMkZzWjFSblEyUlNabGxoUjJSV1oybGpZMlV3WVVabE1XTk5aWEppVG1GQ1kwRm9lR0ZHWldkaGVHTllZMHhsZVdOQ1kxRm9WMlJUYUVKaVZtUkphRU5pWTJSdVpFMWxVbUpOWlhWalNHSkJZMXBqWW1kWVpVSmpUV1JVWmsxbWFXZHZZVGhpU1dKblpYTm9jbVZFWlZWbU5HTlZabFZvVTJWSlprNWtUV0ZFWkdOa1ZXWkJhREZpVFdZMVpVMWpSbVpOWWs1alYyWlJaRlZrV1daS1pFUmtUV0l5WWsxa1VXTTBZME5sUkdoNFpuTmhlbUZQWlZGb01HRXlZMUJuUTJkblpGSm9SMmRHWjFwaldXTk1ZMnRvYjJSRVpVeGpiR0ZrWWxOalMyWlJZbGxtTVdaVlkyZGpSV0Z3WVZWb2QyZHJabGRuUW1Sc1lsbG5ibVpPWVVKaFpHUlVhRXRqZW1kUllWRmpUV0ZTWkZsblRXVldZbmxpT0dkbllWVm5SbUpyWVdkaFZtTlRaRUZrYm1OS1lucG5SV05VWVV4aGFHZDNaMGRqVjJFeFlYZG5WR2RGWW5wblNXZHhaRkJpUTJaSlpreGlTMlYzWXpGaFQyRkdZMFprUldScFpVUmhWR0ZCWXpOalJtUkJhRTVrVkdkUFoxUmtRbU5VWWtSbFZtUnJZa1poUjJKRFoxRmplbWRPWkdwblJXaFBZa0ZoWjJjNFkySmlUV2Q2Wkd0b1RtVk9aV3BuZDJWdlprVmpVbU5vWmxkb1YyVkRaVFZrUzJWQlozbGxOV0ZZYUZWbGFXWnJaVWRsVG1oV2FFbGlRbWhMYUZaalRXUktZVVpsWjJOYVlsZG1TbVo2WkZGaldHTlZabmxqYzJVd1prVmtSR05GWTFkaFJHSkdabU5vZG1oSllrWmxRbVZhWkVsbFJtTlZaMmRrU21aNVltTm9lR05GWTNsaE5HRmpZMEppYkdGMFpXTmxSV0o0WVUxaGVXRkxhR3BoZDJWcGFFTmxlV2R6WlU1alZHSm9aRkpqVW1WSlpHZGxNR1IzWms1bWVHSlJZVVJoVldoNlptdG1kMkZWWkhkbU1XVmFZa0ptVW1kbllXdG9UV042WTFsbmVHUkVZMmRqU1dSUVpVZGllbWhOWlRWaVJHVlVZVmxsT0doTFprSmpSV05aWlZab2JHWm5aSFZvVTJKblpVMWtkV0pXWVRGaFNXRndZVUpoYW1WV1lsTmpRV05UWTJ4b1ZHaERabEpoV1daSFoxWmxhV1pqWWpCa1JtZ3haRTFrY21GT2FFSmxRV0Y0WlVaaFoySjRabGhpVEdONVpFSmxVV2RYYUZOaFFtaFdZa2xvUTJkalptNW5UV0pTWkUxaGRXWklZVUZpV21kaWFGaGhRbUpOWjFSb1RXTnBZVzlvT0dkSloyZG9jMk55WmtSalZXSTBZbFZrVldkVGFFbGpUbVJOWjBSa1kyTlZZa0ZvTVdoTmFEVm9UV1ZHYUUxalRtUlhhRkZoVldWWlprcGtSR0ZOWkRKa1RXUlJaRFJpUTJSRVlYaGpjMko2YUU5aVVXUXdZekpuVUdkRFpHZG1VbUZIWVVaaFdtTlphRXhrYTJkdlkwUm5UR1pzWm1SalUyaExZMUZuV1dJeFoxVmxaMk5GWW5CblZXaDNZMnRpVjJoQ1lXeG9XV0p1WlU1blFtTmtaVlJrUzJaNlpsRmhVV05OWlZKb1dXRk5hRlprZVdjNGFHZG5WV1JHWm10bFoySldabE5sUVdSdVlVcGhlbVpGWWxSalRHVm9abmRoUjJKWFlURm9kMmRVWTBWbGVtZEpabkZsVUdWRGFFbGtUR2hMWkhkbU1XVlBZVVptUm1WRlptbG9SR0pVWjBGbU0yWkdaMEZpVG1WVVowOWhWR05DYUZSaFJHUldhR3RuUm1WSFkwTm5VV0Y2WlU1aWFtWkZaazltUVdOblpUaG9ZbVJOWkhwaGEyZE9ZMDVqYW1WM2FHOW9SV1JTYUdoa1YyZFhaRU5qTldWTFlVRmxlV1ExWjFoalZXRnBZbXRrUjJaT1lWWm1TV0pDWVV0aVZtaE5hRXBpUm1WblpGcG1WMlJLWVhwalVXRllhRlZuZVdSelpqQm5SV1ZFWjBWbFYyaEVaRVpsWTJOMllrbG5SbVpDWkZwb1NXZEdaRlZvWjJOS2FIbGxZMmg0WTBWamVXTTBZbU5rUW1kc1kzUmlZMlJGWTNob1RXaDVhRXRpYW1SM1pHbG5RMlY1WlhObVRtaFVaR2hoVW1GU2FFbGtaMkl3WlhkbVRtRjRaVkZrUkdGVlpIcG5hMmgzWWxWa2QyTXhhRnBrUW1WU1pHZGlhMmROWjNwaldXUjRaa1JvWjJKSlpGQmpSMlY2WlUxbE5XZEVabFJrV1dZNFowdG9RbVpGWlZsalZtZHNZbWRoZFdOVFoyZG1UV0oxWTFabk1XSkpZWEJoUW1ocVkxWmtVMlZCYUZOb2JHUlVaME5pVW1aWlpFZGpWbU5wWW1OaU1HWkdZekZrVFdSeVkwNWpRbVpCWlhobFJtaG5ZWGhsV0dGTVlubG5RbUpSYUZkaFUySkNZMVpqU1dWRFptTm9ibWhOWmxKbFRXVjFaVWhtUVdaYVptSm5XR0ZDWlUxaFZHSk5hR2xuYjJVNFpVbG5aMlp6WTNKblJHZFZaelJuVldaVloxTm1TV1pPWWsxb1JHVmphRlZpUVdNeFlVMWpOV0pOWlVaa1RXZE9aMWRqVVdkVllWbG5TbWRFWWsxaU1tWk5ZbEZqTkdoRFlrUmtlR056WlhwaVQyTlJaREJsTW1OUVlrTmxaMlpTWjBkb1JtVmFaVmxuVEdOcloyOWhSR2RNWld4bFpHVlRZMHRuVVdOWll6RmpWV0puWjBWa2NHVlZaWGRuYTJGWFprSmpiR1paWVc1aVRtSkNaR1JtVkdoTFlucG1VV05SWkUxbVVtWlphRTFpVm1kNVp6aG5aMlJWWWtaaWEyUm5aVlpqVTJaQlpXNW9TbVI2YUVWbVZHVk1ZbWhrZDJSSFlWZGpNV0ozWkZSbVJXUjZZMGxqY1dOUVpVTm9TV2RNWkV0b2QySXhZVTlpUm1KR1lVVm5hV05FWTFSbVFXWXpaMFpqUVdoT1oxUmtUMlpVWTBKa1ZHaEVZVlpuYTJWR2FFZGhRMkpSYUhwalRtTnFZMFZqVDJOQlptZG1PR1ZpYUUxb2VtWnJZMDVvVG1KcVluZGxiMlpGWTFKaGFHVlhZMWRsUTJNMVpFdGxRV041WlRWaVdHTlZaV2xsYTJKSFlVNWpWbUpKWWtKalMyRldaMDFpU21WR1lXZG1XbWhYWmtwaWVtUlJabGhpVldKNVpYTmhNR2RGWWtSblJXVlhZa1JsUm1kallYWmlTV1ZHWmtKbldtWkpaVVppVldSblkwcGhlV1ZqWlhobVJXTjVhRFJuWTJSQ1kyeG5kR0ZqWWtWamVHUk5ZWGxsUzJkcWFIZGhhV0ZEWlhsbWMyVk9abFJqYUdOU1pGSmpTV1JuWmpCbGQyWk9ZbmhpVVdGRVlsVm5lbUZyWlhkaFZXUjNZekZpV21SQ1oxSmtaMkZyYUUxb2VtTlpaSGhtUkdobllrbGxVR1ZIYUhwb1RXTTFhRVJqVkdSWlpUaG5TMmhDWkVWbFdXVldaV3htWjJkMVpsTm5aMlpOWm5Wb1ZtVXhZa2xrY0dkQ1lXcG9WbWRUWTBGaFUyWnNaRlJpUTJoU2FGbG5SMmhXWW1sa1kyUXdaa1pvTVdSTlkzSm1UbUZDWVVGbGVHSkdaR2RuZUdaWVpVeG1lV1JDWjFGalYyTlRaa0ppVm1OSllVTmtZMlJ1WjAxblVtaE5ZblZpU0doQloxcGhZbVZZWmtKaVRXaFVhRTFqYVdkdlp6aG1TV0ZuWm5Oa2NtTkVZVlZtTkdKVlpsVmxVMmhKWjA1b1RXSkVZV05pVldWQll6Rm9UV2MxWWsxa1JtTk5aRTVrVjJOUlkxVm1XV2RLWTBSa1RXRXlZazFsVVdZMFlVTmhSR0o0YUhOamVtaFBaMUZqTUdVeVkxQmlRMmRuWTFKaFIyTkdhRnBuV1dkTVltdGhiMlZFWWt4a2JHVmtabE5sUzJSUloxbG9NV1JWWjJkaFJXSndaMVZtZDJocloxZGpRbVJzWmxsaWJtSk9aRUpvWkdKVVlrdG5lbU5SWjFGalRXVlNZbGxuVFdGV1ozbG1PR2huYUZWaFJtVnJZbWRtVm1aVFpVRm5ibUZLWlhwbVJXSlVZVXhoYUdoM1owZGtWMlV4Wm5kbVZHSkZZbnBvU1dkeFpGQm1RMlpKWlV4aVMyWjNaVEZuVDJoR1pFWm9SV2RwYUVSbVZHTkJhRE5uUm1WQlprNWtWR05QWTFSalFtRlVaVVJsVm1ocllVWmpSMlJEWTFGb2VtVk9hR3BuUldOUFowRmxaMkk0WjJKa1RXZDZaR3RsVG1aT2FHcGhkMmh2WmtWblVtVm9ZVmRsVjJaRFlUVm1TMlpCWlhsb05XTllaRlZvYVdScmFFZGxUbU5XWlVsalFtaExZMVptVFdSS1prWmlaMk5hWjFkaFNtUjZaRkZsV0daVlpYbGtjMlF3WjBWbFJHTkZZbGRoUkdkR1pXTm1kbWRKWkVaalFtWmFZMGxuUm1aVlkyZG1TbVY1WldOamVHWkZhSGxuTkdKalprSm1iR1YwWkdOa1JXRjRaVTFoZVdKTFpHcGpkMmhwWjBOamVXaHpaazVsVkdGb2FGSmlVbWRKYUdkbk1HZDNaazVvZUdWUlpFUmtWV042WTJ0aGQyRlZaM2RtTVdSYVprSm1VbUZuWTJ0bVRXRjZaMWxvZUdkRVptZGpTV1JRWkVkbmVtRk5aVFZrUkdGVVoxbGxPR2hMWWtKblJXWlpZbFpvYkdkblkzVmpVMkpuWWsxamRXTldaakZpU1dKd2FFSm9hbUZXWWxOa1FXWlRZV3huVkdGRFoxSmlXV0pIWjFab2FXRmphREJoUm1VeFkwMWpjbVJPWkVKbVFXSjRaRVppWjJONFpWaGtUR1Y1WjBKa1VXWlhZVk5sUW1GV1lVbG1RMk5qYUc1a1RXZFNZMDFvZFdKSVkwRmhXbVZpWmxob1FtaE5abFJvVFdkcFlXOW9PR2RKWkdkaGMyZHlaRVJoVldFMFoxVm9WV05UWWtsblRtaE5ZMFJoWTJWVllVRmpNV0ZOYURWbVRXVkdZazFrVG1GWFpsRm9WV2haWTBwb1JHVk5aekptVFdGUlpUUmhRMk5FWm5obGMyRjZhRTlvVVdVd1pqSm5VR1JEWVdkblVtaEhhRVpuV21SWllreGxhMkZ2WTBSaFRHVnNabVJvVTJWTFpWRmlXV1F4WlZWaloyZEZZWEJsVldkM1oydGpWMlZDWVd4bldXTnVaazVuUW1Wa1pGUm9TMko2WkZGaVVXaE5ZVkprV1daTloxWm1lV1E0Wm1ka1ZXWkdabXRqWjJGV1pWTm9RV0Z1WkVwaWVtRkZhRlJoVEdGb1pIZGtSMkZYWkRGbmQyUlVaMFZrZW1oSlpuRm1VR0pEWmtsblRHZExZWGRvTVdSUFpVWm1SbUZGWTJsblJHUlVaRUZtTTJGR1lVRm9UbUZVWVU5b1ZHaENaRlJtUkdGV1ptdGlSbU5IWWtOb1VXVjZhRTVrYW1SRlkwOW9RV0puWkRoaFltVk5abnBpYTJWT1pFNWhhbVIzWm05alJXaFNaV2hsVjJWWFkwTmpOV1JMYUVGbWVXWTFaVmhqVldGcFpHdG1SMlpPWTFabFNXWkNZVXRoVm1aTllrcGpSbU5uWWxwa1YyRktZbnBtVVdSWVkxVmxlV0p6WnpCblJXRkVaRVZqVjJSRVpVWmxZMlYyWVVsaFJtSkNaMXBrU1doR1lWVmpaMkZLWkhsblkyRjRaVVZoZVdVMFkyTm5RbVJzWVhSbVkyTkZZM2hsVFdoNVkwdG9hbVIzWkdsaFEySjVaM05qVG1SVVpXaGxVbU5TWTBsbVoySXdZbmRoVG1kNGFGRmpSR2hWWVhwb2EyWjNaRlZrZDJneFkxcGhRbWRTWm1ka2EySk5abnBpV1dkNFowUmxaMmRKWmxCaFIyVjZaazFpTldORVlWUmxXV1k0WlV0bVFtUkZZMWxsVm1Gc1lXZG1kV1pUWkdkalRXUjFZbFptTVdGSllYQmhRbWhxWmxab1UyVkJhRk5rYkdWVVlVTm5VbWRaWlVka1ZtVnBZbU5tTUdKR1pqRmpUV1J5Wms1bFFtUkJabmhvUm1ObmFIaGpXR1JNYUhsb1FtSlJhRmRtVTJKQ1lWWmtTV2REWTJOamJtVk5ZbEppVFdWMVkwaG1RV1ZhWkdKbFdHVkNZazFrVkdWTlpHbG5iMlE0WkVsaFoySnpaM0pvUkdOVllUUm5WV1JWWkZOb1NXVk9aMDFtUkdWamFGVmpRV1l4Wmsxak5XUk5aa1ptVFdST1lsZGlVV0ZWWjFsb1NtTkVZVTFtTW1OTloxRmtOR1JEWWtSbWVHSnpZM3BsVDJkUmFEQm9NbVZRWjBObVoyTlNhRWRqUm1KYVlsbG9UR0ZyWm05a1JHUk1aV3huWkdoVFpVdGhVV0ZaWXpGaVZXTm5aa1ZuY0dSVlpIZG5hMkpYWWtKbGJHTlpaMjVvVG1GQ1pHUm1WR1JMWjNwaFVXWlJZVTFqVW1SWlowMWxWbVI1WWpobVoyRlZaVVpuYTJabmFGWmtVMkpCWVc1aFNtVjZZa1ZqVkdoTVpHaGpkMk5IWVZkaE1XRjNZbFJsUldONlowbG9jV1JRYUVOaFNXSk1aa3RpZDJJeFpVOWtSbVZHWlVWbmFXUkVabFJrUVdjelowWmxRV1JPWVZSblQySlVaa0poVkdWRVlsWmphMlJHWmtkb1EyTlJabnBuVG1GcVprVmhUMlpCWkdkaE9HSmlaazFqZW1GclpVNW1UbWhxWm5kaGIyZEZaMUpvYUdGWFoxZG5RMkUxYUV0a1FXSjVaalZrV0dOVlltbGthMmRIYUU1a1ZtVkpZa0pvUzJOV1pFMWpTbUZHWVdkbFdtVlhhRXBsZW1aUmFGaGpWV1Y1WlhOb01HVkZhRVJtUldkWGFFUm1SbWRqWlhab1NXaEdZVUptV21oSmFFWmlWV05uWTBwb2VXUmpaM2hrUldWNWFEUmtZMmRDWm14a2RHTmpZVVZtZUdKTlpIbG1TMmhxWkhkamFXUkRaWGxuYzJkT1pWUmhhR0ZTWVZKalNXWm5aakJuZDJGT1puaG5VV0ZFWlZWa2VtTnJZWGRoVldOM1pURm9XbU5DWjFKaVoySnJaMDFpZW1OWlluaGxSR2RuWmtsaFVHaEhaSHBsVFdZMVpVUmhWR2haWmpoblMyUkNhRVZvV1dSV1pteG1aMlIxYUZOaVoyZE5ZblZpVm1neFlVbGljR2RDWkdwblZtVlRaMEZsVTJoc1pWUmlRMkpTWkZsaFIyZFdZV2xsWTJnd2FFWmpNV05OWm5Kb1RtZENaMEZvZUdSR1pHZGxlR0pZYUV4bWVXVkNZMUZpVjJKVFpFSmlWbU5KWjBObVkyZHVaRTFvVW1oTlpuVmtTR05CWmxwb1ltTllZVUpuVFdaVVowMWhhV1Z2WWpoalNXaG5aSE5sY21kRVlsVm1OR2RWWlZWaFUyVkpZVTVsVFdGRVlXTm5WV05CWlRGb1RXWTFhRTFpUm1KTlkwNWpWMlJSWWxWbVdXUktZa1JqVFdneVprMWpVV1kwWlVOblJHSjRaWE5oZW1KUFlWRmlNR1V5WmxCaFEyWm5hRkpsUjJKR2FGcGhXV05NWVd0bGIySkVaVXhtYkdka1psTmtTMmRSWmxsa01XRlZaR2RtUldOd1pGVmpkMlJyWjFkbFFtaHNhRmxpYm1oT1pVSmxaR0pVWlV0a2VtUlJaVkZrVFdSU2FGbGtUV2RXWm5sbk9HaG5aVlZsUm1GclltZGtWbWhUWjBGaGJtTktaSHBtUldSVWFFeGphR04zWWtkaVYyUXhaM2RrVkdoRlpYcGhTV1Z4WlZCaFEyVkpaRXhsUzJKM1lURmxUMmRHWVVaaVJXTnBaa1JsVkdGQlpETm9SbU5CWTA1blZHaFBhRlJrUW1SVVlrUmpWbVJyWVVaaFIyUkRZVkZvZW1ST1pHcG5SV1ZQYUVGbVoyUTRaMkppVFdSNlptdGhUbUpPWkdwamQyTnZaRVZoVW1Sb1lsZGlWMmhEWWpWaVMyVkJZWGxrTldGWVkxVmthV0ZyWmtkalRtZFdaa2xvUW1KTFoxWm1UV2hLWVVaaVoyWmFaRmRpU21WNlpWRm9XR0pWWjNsbWMyWXdhRVZpUkdORloxZGxSR2hHWTJOaGRtaEpaMFpoUW1SYWFFbG1SbWhWWm1kaFNtZDVaMk5uZUdWRllubGtOR0pqWlVKamJHZDBZbU5oUldoNFlVMWplV1pMWTJwb2QyUnBhRU5sZVdaellrNWpWR2hvWWxKaFVtZEpaV2RsTUdOM1pVNWllR1ZSYUVSblZXTjZZbXRqZDJaVlluZGpNV05hWVVKaFVtRm5ZMnRrVFdSNlkxbGplR1ZFWm1kbVNXSlFZa2RuZW1OTlp6VmpSR0pVWlZsak9HTkxaVUpoUldGWllWWmhiR1ZuWkhWaFUyRm5hRTFuZFdkV1lURm1TV0p3YUVKbGFtZFdZbE5rUVdoVFkyeGlWR2REWkZKbldXaEhaMVpuYVdWalpqQm9SbWN4WmsxbmNtUk9aVUppUVdSNFkwWm9aMmQ0WVZoalRHSjVZVUpuVVdSWFpsTm1RbU5XWkVsalEyWmpZbTVpVFdkU1owMWlkV2hJWTBGb1dtaGlZbGhqUW1STlpsUm9UV2hwWW05aE9HRkphR2RqYzJGeVowUmlWV1EwYUZWaVZXSlRaMGxpVG1KTlpFUmxZMkZWWjBGbU1XRk5ZVFZqVFdGR1lVMWlUbU5YWjFGbFZXaFpaa3BqUkdOTll6SmxUV1ZSWVRSbFEyTkVaSGhtYzJkNlowOWlVV1l3WlRKalVHTkRZbWRvVW1GSFlrWmtXbU5aWWt4bWEyTnZaVVJqVEdkc1kyUmpVMk5MWmxGaFdXRXhZMVZpWjJkRlpYQmxWV04zWW10aFYyZENZV3huV1dGdVpVNWpRbVJrWjFSb1MyUjZaVkZuVVdWTmFGSmtXV0pOWVZaa2VXTTRaR2RqVldOR1pXdGtaMlpXWVZObFFXTnVaVXBuZW1WRlpWUm9UR2hvWkhkbFIyZFhaVEZsZDJSVVlrVmxlbVpKWm5GalVHZERhRWxvVEdSTFozZG1NV2hQWWtaaVJtUkZZbWxsUkdGVVkwRmhNMmRHWkVGalRtaFVaazlrVkdKQ1oxUmlSR2hXWm10a1JtSkhhRU5sVVdONllVNWlhbVpGWWs5b1FXSm5ZemhoWW1oTlpYcGphMlZPWlU1b2FtWjNaMjloUldOU1pHaGhWMk5YYUVOb05XaExhRUZrZVdjMWFGaG9WV05wWm10aVIyUk9aVlprU1dkQ1prdGpWbU5OWkVwbVJtVm5abHBsVjJkS1pIcGlVV1pZWjFWamVXUnpZakJpUldaRVlVVmxWMlJFWkVab1kyTjJhRWxpUm1KQ1lWcGlTV0pHWWxWbFoyaEtaM2xvWTJONFpFVmplV0UwWW1OblFtVnNhSFJrWTJaRlkzaG1UV2g1WjB0bWFtUjNaMmxsUTJaNVpuTmpUbVZVWTJobFVtWlNhRWxsWjJNd1pIZG5UbUY0WTFGa1JHZFZaSHBpYTJGM1oxVmpkMmd4WVZwaVFtWlNZMmRsYTJOTlozcG1XV1I0WWtSb1oyaEpaVkJvUjJWNlprMWlOV05FYUZSbldXRTRZa3RoUW1WRllWbGlWbVpzWW1kaGRXWlRhR2RpVFdGMWFGWmlNV05KWTNCaVFtZHFaMVppVTJWQllWTmliR0ZVWlVOalVtZFphRWRsVm1ScGFHTmpNR2RHWWpGa1RXZHlaRTVsUW1WQlpuaG5SbWhuWW5oaldHSk1aWGxtUW1SUlkxZG9VMk5DWmxaa1NXVkRZMk5sYm1WTlpWSmhUV04xWTBoaVFXUmFabUptV0dKQ1prMWlWR2hOWW1sbWIyTTRhRWxrWjJWelpISmxSR05WWWpSalZXZFZZbE5oU1dOT1pFMW1SR05qWWxWalFXZ3haRTFsTldGTlkwWm5UV0pPWkZkbFVXVlZZMWxpU21aRVowMWpNbUZOYUZGb05HTkRaVVJoZUdKelpIcGpUMlJSWXpCak1tVlFaRU5tWjJKU2FFZGtSbWRhWTFsblRHVnJaMjloUkdKTWFHeGpaR1pUWVV0alVXVlpZakZsVldOblowVmxjR2RWWTNka2EyVlhhRUpsYkdSWmFHNW1UbUZDWVdSbVZHTkxaSHBvVVdOUlowMWpVbVJaWlUxalZtZDVaRGhvWjJWVllrWmxhMk5uWmxaaVUyWkJZMjVuU21ONmFFVm1WR0pNWkdoaWQyWkhaMWRsTVdaM1oxUm5SV0Y2WkVsamNXaFFaa05oU1dSTVprdGhkMlV4YUU5aVJtSkdZVVZsYVdkRVpsUm1RV2d6WWtaa1FXaE9hRlJvVDJkVVkwSm1WR1ZFWWxaaGEySkdaa2RsUTJoUllucGtUbVpxYUVWaVQyaEJaV2RrT0dSaVowMWxlbWRyYUU1blRtSnFZbmRvYjJaRlpGSm1hR1JYWjFkblEyRTFhRXRuUVdkNVp6VmxXR2hWWVdsb2EySkhZMDVpVm1GSlowSmlTMk5XWlUxb1NtSkdZV2RoV21WWFpVcGtlbVJSWkZobVZXWjVZWE5oTUdGRlkwUmhSV1pYYUVSblJtaGpablptU1dOR1pVSm5XbU5KYUVaa1ZXWm5aMHBqZVdKalluaGtSV041YURSb1kyZENZbXhsZEdaalpFVm5lR0pOWjNsaFMyRnFZWGRoYVdaRFpYbG5jMmRPWjFSbmFHUlNZMUpoU1dSbllUQmtkMlZPWm5oaFVXaEVhRlZpZW1kclpYZG9WV0ozWWpGaldtSkNZMUpsWjJKclpVMW9lbVpaWlhobFJHRm5aa2xrVUdkSFpIcG5UV0kxWTBSbFZHSlpZVGhtUzJGQ1prVmtXV1pXWW14a1oySjFabE5pWjJKTlpIVmxWbU14WlVsbWNHVkNaMnBvVm1oVFprRmlVMlpzWkZSaVEySlNZMWxtUjJWV1oybG9ZMmN3WkVaak1XZE5ZWEptVG1WQ1pFRmtlR1ZHWkdkamVHaFlaa3htZVdoQ1psRm1WMmRUYUVKa1ZtRkpaa05uWTJodVpVMWhVbVZOWkhWaFNHUkJabHBpWW1GWVowSm9UV0pVWmsxamFXUnZaemhtU1dOblluTm1jbWRFWjFWaE5HVlZhRlZuVTJoSllVNW5UV0pFWldObFZXTkJZVEZvVFdJMVowMW1SbVZOWms1aVYySlJaMVZrV1doS2FFUm1UV1V5WlUxaFVXZzBZa05oUkdWNFluTm1lbVZQWkZGak1HZ3lZbEJoUTJSbloxSm5SMlpHWWxwaFdXVk1aV3RqYjJaRVpreGliR2RrWlZOalMyZFJZVmxoTVdaVmFHZGlSV1p3WWxWbGQyZHJZMWRuUW1Sc1lsbG9ibU5PWjBKalpHVlVZVXRqZW1kUlpsRm1UV0ZTWVZsalRXRldaWGxvT0dabmFGVmlSbWhyWkdkblZtZFRaMEZpYm1SS2FIcGhSV2hVWVV4aWFHaDNZa2RpVjJNeFlYZG1WR2hGWm5walNXWnhhRkJsUTJkSlpreGtTMlIzWmpGaVQyWkdhRVpoUldWcGFFUm1WR2RCWXpOalJtSkJZMDVuVkdoUGFGUmxRbVJVWVVSbVZtZHJhRVpqUjJoRFlWRmllbUpPWVdwaVJXZFBaVUZuWjJnNFkySm1UV0o2WVd0bFRtVk9hR3BuZDJGdmFFVm5VbU5vWWxkb1YyVkRZelZtUzJSQllubGtOV0pZWmxWb2FXTnJZMGRuVG1KV1owbGhRbU5MWTFablRXZEtaMFptWjJKYVkxZGhTbVo2WWxGbldHWlZhSGxtYzJRd1prVmtSR0pGWjFkbVJHaEdaMk5oZG1kSllVWm9RbWRhWkVsblJtVlZaMmRuU21GNWFHTm1lR1JGWjNsa05HZGpaMEptYkdWMFltTm1SV2Q0WjAxaWVXSkxaR3BsZDJocFprTm1lV1p6WVU1b1ZHVm9aRkpsVW1SSlpXZG9NR1YzYUU1amVHVlJaRVJsVldKNlltdG5kMkZWWm5kbk1XUmFZVUpvVW1KblkydGhUV0Y2WTFsaWVHZEVhR2RtU1dWUVprZG1lbVpOWkRWaVJHRlVaMWxvT0dGTGFFSmtSV1ZaWmxaamJHTm5aM1ZtVTJkbllVMWxkV1pXYURGalNXZHdaa0pvYW1oV1pWTmlRV1ZUWjJ4bFZHZERZMUpuV1dGSGFGWmthV2RqWlRCa1JtRXhaMDFuY21KT1lrSmlRV1o0WlVabFoyRjRZVmhvVEdWNWFFSmxVV2RYWmxOaFFtSldaa2xuUTJOalptNW9UV1JTYUUxa2RXSklhRUZpV21KaVlsaGxRbUZOWlZSblRXZHBZMjlsT0dKSlptZGhjMkZ5WjBSalZXYzBabFZtVldOVFprbGtUbWhOWmtSalkyWlZZa0ZoTVdkTmFEVmtUV0pHWmsxb1RtWlhZVkZsVldoWllrcG5SR1JOYURKalRXRlJZVFJoUTJORVlYaGhjMmg2WlU5blVXZ3dZekprVUdORFpXZGhVbWhIWlVabFdtRlpZVXhuYTJWdlkwUmlUR0ZzWjJSbVUyUkxZVkZvV1dZeFlWVmtaMkpGWm5CblZXTjNZV3RvVjJoQ1pXeGxXV1J1WVU1aFFtWmtabFJsUzJKNllWRmhVV2ROWTFKbVdXSk5ZVlpqZVdnNFoyZGpWV1ZHWW10bloySldaRk5tUVdadVpFcGxlbWhGWVZSaVRHUm9ZbmRqUjJkWFpERmlkMk5VYUVWa2VtZEpZM0ZsVUdkRFpFbG1UR0pMWkhkb01XWlBaMFpvUm1kRmFHbG1SR1ZVYUVGak0yUkdaa0ZpVG1OVVkwOWhWR0pDWWxSaFJHZFdZV3RrUm1OSFkwTmtVV1Y2WWs1bGFtZEZaRTloUVdablpEaG5ZbUZOWjNwaGEyTk9aMDVpYW1KM2FHOW9SV05TWTJoaVYyUlhZME5rTldkTFlrRmhlV2cxWWxobFZXVnBZMnRvUjJkT2FGWm5TV2hDWkV0alZtTk5hRXBoUm1SbllWcGtWMlJLWTNwbVVXRllZMVZpZVdWellqQm9SV2hFYUVWblYyZEVaMFpoWTJaMllVbGhSbVZDWWxwalNXWkdhRlZvWjJOS1lYbG9ZMlI0WkVWbGVXYzBZV05vUW1ac1ozUmlZMlZGYUhobFRXRjVZVXRtYW1KM1ptbGlRMlI1Wm5OaVRtSlVaMmhuVW1kU1owbGpaMkV3WjNkbVRtWjRZbEZsUkdKVlpIcGxhMlIzWTFWbGQyY3hhRnBsUW1oU1pHZGlhMlJOWm5waVdXRjRZVVJvWjJKSllsQm5SMko2WjAxaE5XWkVabFJsV1dFNFlrdG1RbWRGWWxsaVZtRnNhR2RrZFdSVFltZGtUV0YxWkZabU1XZEpZbkJpUW1WcVoxWm5VMlZCWlZObGJHTlVZa05rVW1GWllVZGtWbUZwYUdOak1HRkdZVEZrVFdKeVlrNW9RbVpCWm5obFJtSm5aM2hqV0daTVlubGlRbVZSWVZkb1UyZENaRlprU1doRGFHTmpibWROWmxKbFRXWjFZVWhpUVdoYVptSmpXR1JDWmsxaFZHRk5ZV2xsYjJNNFlVbGtaMkp6WVhKalJHZFZZalJrVldKVlpsTmxTV1JPWWsxblJHSmpaVlZoUVdZeFlrMWxOV1ZOWWtaaVRXUk9ZbGRuVVdKVmFGbGtTbWRFWjAxbE1tVk5abEZpTkdWRFprUm1lR2h6WW5wbFQyWlJZekJtTW1WUVpFTmlaMlJTWmtkbVJtVmFaVmxuVEdKclptOWtSR1JNWTJ4a1pHSlRZVXRrVVdkWmFERmtWV0puWmtWaGNHWlZZbmRrYTJkWFkwSmliR0ZaWTI1alRtVkNaR1JoVkdkTFlYcGxVV2RSWkUxalVtWlphRTFvVm1ONVp6aGxaMkZWWTBabWEySm5ZVlptVTJaQlpXNWlTbWQ2WWtWaVZHWk1aR2hrZDJSSFpsZG9NV2gzWjFSbFJXWjZZVWxrY1doUVlrTmlTV1pNWmt0aWQyRXhZVTlpUm1GR1lrVm5hV1ZFWVZSalFXZ3pZMFpuUVdWT1psUmxUMlJVYUVKaFZHWkVabFpvYTJOR1kwZGtRMkpSWTNwaVRtWnFZVVZtVDJaQlpXZGpPR0ZpWVUxaGVtaHJZMDVqVG1OcVozZGpiMmRGWmxKaGFHSlhaVmRoUTJRMVlVdGtRV1o1WnpWbFdHUlZaV2xoYTJWSFlVNWxWbVZKWjBKaFMySldaVTFsU21OR1oyZG9XbWhYWmtwaWVtSlJaRmhtVldGNVkzTmxNR2RGYUVSaFJXUlhaa1JtUm1aalozWmlTV1pHWmtKbFdtRkpZMFppVldablpFcGllV1pqWTNoblJXaDVaelJpWTJKQ1lXeGxkR0ZqWlVWbWVHVk5ZbmxrUzJacVlYZGthV1pEWW5sbWMyWk9hRlJoYUdWU1kxSm9TV1puYURCaWQyZE9aM2hoVVdGRVlWVmtlbVJyWTNkalZXTjNZakZoV21kQ1pWSm1aMk5yWTAxa2VtaFpaWGhoUkdkblprbGlVR2RIWVhwb1RXZzFaRVJvVkdkWmFEaGlTMmRDWjBWbldXTldZMnhuWjJoMVlsTmtaMkpOWTNWaVZtSXhhRWxtY0doQ1ptcG9WbVZUYUVGa1UyZHNaMVJtUTJOU1pWbG9SMlJXWldsb1kyZ3dZMFpoTVdSTlpYSmlUbUZDWkVGa2VHZEdabWRtZUdGWVlVeGtlV0pDWWxGbVYyUlRZMEprVm1kSlowTmxZMkp1WlUxb1VtZE5ZM1ZqU0dGQmFGcG1ZbWhZWkVKblRXVlVhRTFuYVdodllqaGlTV0ZuWTNObWNtVkVhRlZtTkdWVloxVm1VMlZKWVU1aFRXSkVhR05vVldSQlpURm9UV1kxWjAxbFJtSk5hRTVpVjJGUllWVmlXV1ZLWVVSalRXUXlaRTFtVVdNMGFFTm5SR1I0WkhOamVtTlBZMUZvTUdNeVpsQmpRMkZuWjFKb1IyWkdhRnBvV1dSTWFHdGtiMmhFWjB4bGJHWmtaRk5vUzJGUlkxbG5NV1ZWWW1kaFJXSndaMVZrZDJWclkxZGxRbWhzWVZsaWJtaE9Za0ppWkdSVVlrdG1lbUZSWjFGalRXaFNZVmxpVFdWV1lubG5PR0ZuWjFWbFJtaHJabWRoVm1OVFpFRmpibU5LWjNwblJXWlVaRXhqYUdaM1lVZGpWMlV4WkhkbFZHZEZZWHBrU1dOeFpWQmlRMlZKWkV4a1MyTjNhREZsVDJWR1lrWmlSV2RwWlVSa1ZHVkJaRE5oUm1kQmFFNWlWR1JQWmxSaVFtZFVZa1JuVm1GcmFFWm5SMlpEWkZGamVtUk9aR3BqUldGUGFFRmpaMlU0YUdKb1RXZDZaMnRoVG1WT1ltcGhkMkZ2WTBWalVtZG9ZMWRtVjJGRFpEVmhTMkZCWlhsa05XUllhRlZqYVdaclkwZGlUbUZXYUVsaFFtRkxZVlpoVFdKS2FFWm5aMmhhWmxkbVNtWjZaMUZpV0dGVmFIbGtjMkl3WVVWbFJHSkZZMWRuUkdoR2FHTmtkbUpKYUVablFtRmFZMGxqUm1KVlpHZGxTbWQ1Wm1ObGVHRkZZbmxsTkdGamFFSmliR1IwWldObVJXTjRaazFrZVdOTFpXcGlkMk5wWlVObGVXSnpaRTVuVkdob2FGSm5VbVJKWkdka01HaDNZMDVpZUdKUlprUmlWV2Q2WTJ0bWQyTlZabmRvTVdKYVowSmtVbUZuWW10aFRXaDZZVmxtZUdGRVoyZG5TV1pRYUVkbGVtZE5ZalZtUkdkVWFGbGpPR1ZMWlVKalJXTlpZVlpoYkdOblozVmhVMkpuWjAxa2RXaFdZakZvU1dWd1lrSm1hbVpXWTFOblFXaFRaR3htVkdkRFoxSm9XV1ZIWTFaamFXaGpaakJoUm1FeFkwMWhjbUpPWTBKalFXTjRaRVpqWjJkNFlsaGpUR1I1WTBKa1VXZFhhRk5uUW1kV1prbGpRMmhqWlc1blRXUlNaMDFpZFdGSVlrRmtXbU5pWVZoaVFtRk5aMVJoVFdocFpHOWtPR0ZKWW1kamMyTnlaa1JuVldVMFoxVmpWV05UWjBsb1RtRk5ZVVJoWTJOVlpFRm5NV0ZOWmpWb1RXVkdZazFvVG1oWFpWRmpWV2haWWtwaVJHZE5aekpsVFdoUllUUmhRMkZFWkhoaWMyRjZZVTlpVVdRd1lqSm1VR05EWm1kbVVtTkhZVVprV21WWlpVeG1hMkp2WVVSa1RHTnNhR1JqVTJoTFpGRmtXV014WTFWbloyWkZaSEJsVldWM1oydGpWMkZDWTJ4aVdXaHVaRTVsUW1Ka2FGUm9TMkY2WkZGa1VXRk5aMUppV1dSTllWWmhlV2M0WTJkalZXaEdhR3RqWjJGV1psTm5RV2R1Wmtwb2VtaEZaRlJsVEdkb1puZGxSMkpYWkRGaGQySlVaMFZpZW1oSlkzRmxVR1JEWlVsaFRHRkxZWGRsTVdkUFpFWmlSbWhGWVdsaFJHWlVZa0ZtTTJoR2FFRmtUbVJVWlU5a1ZHZENabFJsUkdGV1pXdGhSbWhIWlVOa1VXVjZZVTVuYW1ORllVOWtRV2huWVRoblltVk5aSHBqYTJaT1owNWlhbVIzWW05aFJXTlNZbWhsVjJoWFlVTmxOV2hMWVVGamVXZzFZVmhvVldWcFlXdGlSMmhPWVZabVNXSkNZa3RoVm1GTlpFcGxSbVpuYUZwaFYyZEtabnBsVVdkWVkxVmhlV1Z6WXpCaVJXWkVaa1ZoVjJKRWFFWmtZMloyYUVsbFJtZENhRnBvU1dSR1pWVmtaMlpLYUhsaVkyVjRaMFZrZVdnMFoyTmhRbWhzYUhSalkyUkZaWGhvVFdONVpFdGlhbVozWVdsbFEyVjVZM05vVG1GVVpXaGhVbVJTWTBsaloyWXdhSGRtVG1WNFlWRmxSR1JWWTNwbWEyaDNabFZqZDJVeGFGcG5RbU5TWm1ka2EySk5aSHBpV1doNFpVUmpaMmRKWmxCbVIyVjZhRTFoTldoRVlWUmxXV2M0WjB0aVFtaEZaVmxsVm1Oc1lXZGlkV1ZUWkdka1RXRjFZbFpoTVdaSlpIQm1RbVZxWVZaaFUyWkJZMU5pYkdGVWFFTmlVbUpaWWtkb1ZtWnBZbU5vTUdGR1p6RmtUV1Z5WjA1bVFtVkJhSGhtUm1OblozaG1XR1pNWVhsbVFtTlJaRmRoVTJaQ1pGWm1TV2hEWldObmJtSk5aVkpuVFdGMVlVaG9RV0ZhWW1Kb1dHRkNaazFpVkdSTlkybGhiMlE0WTBsaloyZHpabkpuUkdOVlp6Um5WV1ZWWlZObVNXTk9aRTFrUkdaalpGVm5RV2d4WVUxak5XTk5ZVVptVFdaT1pWZGxVV0pWWlZsa1NtSkVaVTFuTW1STlpWRmlOR0pEWWtSa2VHWnpaWHBtVDJSUlpEQmtNbWhRWlVObVoySlNaa2RsUm1WYWFGbG9UR05yWjI5aFJHRk1abXhsWkdGVFpVdG1VV2RaWnpGbVZXUm5ZMFZqY0dKVlpIZGphMkZYWkVKbWJHUlpZMjVpVG1kQ1oyUmlWR2hMWVhwb1VXaFJaRTFuVW1KWlpFMWlWbVY1WmpobVoyTlZaRVppYTJabllsWmtVMlZCWm01bVNtaDZZa1ZpVkdSTVpXaGxkMmhIWTFka01XUjNZVlJrUldKNlpVbG5jV1ZRWTBOblNXaE1Za3RoZDJFeFprOWhSbVpHWkVWa2FXRkVabFJoUVdRellrWm1RV2RPWWxSbVQySlVZMEpsVkdGRVpGWmhhMkZHYUVka1EyaFJZM3BqVG1ocVprVm5UMlJCWW1kaU9HRmlZazFpZW1kclowNWxUbUZxWW5kamIySkZZVkptYUdOWFoxZG9RMmcxWlV0bVFXVjVZelZqV0daVlpHbGhhMk5IWlU1bFZtaEphRUpsUzJGV1lVMWhTbWhHWTJka1dtaFhZVXBuZW1SUmFGaGhWV1o1WTNOa01HWkZhRVJsUldkWFpFUmlSbUZqWkhaaFNXVkdaVUppV21SSllVWm1WV2RuWkVwbmVXaGphSGhqUldSNVl6UmxZMkZDWjJ4bGRHVmpaRVZoZUdGTlpYbGtTMlpxWm5ka2FXaERaWGxqYzJST2FGUmthR0ZTWWxKbFNXVm5aVEJqZDJaT1puaG9VV2hFWlZWaGVtSnJaWGRvVldaM1lURmxXbU5DWTFKbVoyaHJZMDFoZW1kWlluaGhSR0puWTBsbVVHZEhabnBtVFdZMVpFUmtWR1paWkRobFMyUkNZMFZuV1daV1oyeG1aMlIxWkZOaVoyVk5aWFZoVm1FeFkwbGxjR1ZDWVdwalZtVlRaRUZrVTJac1pGUmhRMlJTWlZsalIyaFdZbWxtWTJNd1owWmtNV0pOWlhKaFRtRkNhRUZuZUdkR1pXZGhlR1JZWjB4a2VXSkNhRkZqVjJaVFprSmtWbWRKWkVOblkyRnVZMDFtVW1aTlluVm9TR0pCWVZwaFltSllaRUpvVFdSVWFFMWthV1J2WlRobFNXSm5ZM05uY21aRVpWVmtOR2hWWTFWb1UyVkpaRTVrVFdSRVlXTmpWV0pCWlRGaFRXSTFaRTFsUm1KTllrNWlWMmRSWlZWb1dXTktZMFJsVFdjeVprMWtVV2MwWlVOaVJHRjRZM05rZW1KUFoxRmhNR1F5WmxCaVEyTm5ZMUpqUjJKR1lscG5XV0pNWm10aGIyTkVaRXhtYkdOa1lWTm9TMlJSWWxsb01XWlZZV2RrUldSd1lWVmlkMkpyWmxkbFFtVnNZMWxqYm1GT1pVSm1aR1pVYUV0amVtRlJZbEZoVFdKU1oxbG9UV0pXWkhsb09HaG5ZVlZuUm1KcloyZGxWbUpUWTBGa2JtWktabnBqUldKVVpVeGhhR2gzWmtkbVYyWXhZbmRrVkdORlpYcGpTV1p4YUZCalEyTkpaMHhuUzJkM1l6Rm1UMkZHWlVabFJXUnBaRVJoVkdkQlp6TmtSbWhCWkU1bFZHZFBabFJrUW1kVVprUmhWbUZyWmtabVIyTkRhRkZtZW1OT1kycG5SV1ZQWVVGbloyVTRZV0pqVFdONmFHdGlUbUpPWVdwamQySnZhRVZvVW1ob1kxZG5WMkpEWmpWbFMySkJZM2xsTldoWWFGVm5hV05yYUVkaVRtaFdZa2xsUW1oTFkxWmxUV1JLWkVabVoyWmFaRmRqU21oNllWRmxXR1pWWTNsb2MyZ3daa1ZqUkdkRmFGZGxSR1pHWkdOamRtaEpaRVptUW1GYVowbGtSbVJWWW1kbFNtVjVhR05vZUdSRllubG9OR2RqWVVKbmJHVjBaMk5vUldkNFkwMW9lV05MWTJwaWQyRnBaVU5qZVdoellVNWlWR2hvWTFKaVVtaEphR2RoTUdWM2FFNWtlR0pSWkVSb1ZXVjZZbXRvZDJSVlozZGhNV1JhWVVKblVtWm5aMnRpVFdkNlpsbGhlR05FWVdka1NXTlFhRWRrZW1WTllUVm1SR1JVWjFsbE9HUkxZa0psUldGWloxWm9iR1puWTNWb1UyUm5hRTFoZFdGV2FERm1TV2h3WTBKbGFtZFdaRk5tUVdSVFpHeGlWR0pEWmxKaFdXSkhaRlppYVdOamFEQmlSbWd4YUUxb2NtRk9aRUpsUVdkNFprWmpaMkY0WmxoalRHWjVZMEpvVVdoWFpGTmhRbUpXWTBsb1EyRmphRzVrVFdGU2FFMW5kV1ZJYUVGaVdtSmlaRmhuUW1kTllWUm5UV2RwWjI5b09HRkpaR2RpYzJOeWFFUm9WV0UwWTFWaVZXRlRaVWxsVG1KTlprUm9ZMlpWWkVGb01XVk5aelZpVFdKR1kwMW9UbUpYWjFGblZXRlpaVXBpUkdOTlpESm9UV05SWWpSb1EySkVhSGhuYzJONlprOWxVV1V3WWpKbFVHUkRZV2RrVW1aSFpVWmxXbWhaWVV4a2EyRnZZVVJqVEdkc1oyUmlVMmRMWjFGb1dXZ3hZMVZtWjJkRlpuQmtWV04zYUd0alYyVkNaR3hsV1dadVlVNWpRbU5rWjFSaVMyTjZaRkZrVVdOTlpsSmlXV0pOYUZaa2VXYzRaV2RvVldKR1oydGhaMlJXWjFObVFXaHVaa3BuZW1SRmFGUm5UR2RvWm5kaFIyWlhhREZpZDJSVVprVmllbWhKWkhGaVVHUkRaa2xpVEdSTFluZGtNV05QWlVabFJtTkZaMmxsUkdKVVlrRmhNMlZHYUVGalRtSlVZVTlrVkdoQ1kxUmhSR0pXWm10blJtWkhhRU5uVVdWNlkwNWhhbUpGWkU5bVFXSm5aamhtWW1OTlpYcGthMk5PWlU1aGFtSjNabTlqUldkU1ptaG1WMmRYWjBOa05XSkxhRUZrZVdJMVlsaGxWV2RwWTJ0b1IyVk9aMVpoU1dkQ1lVdGtWbWhOWkVwaVJtRm5ZbHBqVjJaS1pYcG1VV2RZWjFWamVXRnphREJuUldKRVlrVm9WMlpFWTBaalkyWjJaa2xpUm1oQ1pWcG1TV0ZHWlZWa1oyTktaWGxoWTJGNFlVVmhlV2MwWW1ObVFtWnNZWFJsWTJORlpIaGtUV1o1WVV0amFtUjNaR2xpUTJONVkzTm1UbVpVWjJoblVtUlNaa2xpWjJZd1puZG1UbWg0WmxGbVJHTlZaWHBoYTJOM1lWVmlkMkV4WlZwaVFtaFNZbWRvYTJKTlpucG5XV0o0WmtSaloyZEphRkJuUjJGNlpVMWlOV1JFWWxSbldXRTRaa3RrUW1aRlpGbGhWbUZzWldkbmRXWlRZV2RuVFdoMVpGWmhNV1JKWVhCaVFtRnFhRlpqVTJoQloxTmliR2hVWWtOa1VtaFpaVWRqVm1KcFpHTm9NR1pHWkRGaVRXZHlZMDVrUW1WQlkzaGtSbVZuWjNoaVdHaE1aM2xvUW1KUllsZGxVMkpDWlZaa1NXZERabU5sYm1KTlpsSmpUV0YxWWtobFFXaGFZbUpqV0dOQ2FFMW9WR2hOWkdsamIyYzRaMGxpWjJWelozSmlSR05WWnpSbVZXZFZZbE5sU1dKT1pVMWxSR1pqWjFWalFXTXhaVTFoTldkTllrWmtUV0pPYUZkbFVXVlZaRmxsU21KRVlVMWtNbUZOWTFGbU5HRkRZVVJrZUdGemFIcGxUMlZSWXpCbE1tZFFaa05sWjJOU1owZGtSbWRhWmxsalRHUnJabTlsUkdoTWFHeGxaR0ZUWmt0aFVXWlpaekZuVldoblpFVmtjR0pWWW5ka2EyWlhZVUpqYkdkWloyNWlUbUZDWkdSa1ZHVkxaWHBvVVdSUlkwMW9VbUZaWjAxbVZtWjVaamhpWjJOVlprWmphMkZuWmxaa1UyUkJaRzVuU21KNlpVVmlWR1JNWldoamQyRkhaVmRqTVdSM1kxUmlSV0o2WTBsbWNXWlFaa05vU1dOTWFFdGhkMkV4WVU5bVJtWkdaVVZpYVdSRVpGUmlRV1V6WmtaaFFXWk9ZVlJtVDJKVWFFSmhWR05FWkZab2EyaEdaMGRoUTJkUlozcGlUbU5xYUVWbFQyRkJZbWRqT0dOaVpFMWhlbWRyWWs1a1RtZHFaSGRuYjJoRlkxSmlhR0ZYWlZkalEyTTFhRXRrUVdSNWFEVmpXR2RWWkdsbGEyaEhaRTVuVm1aSlowSm9TMkZXWWsxalNtRkdhR2RpV21WWFkwcG1lbVZSWmxobVZXTjVZWE5tTUdkRlpVUmlSV1pYYUVSb1JtTmpaM1poU1dWR1owSmpXbU5KWlVablZXRm5ZMHBtZVdGamFIaG9SV041WWpSbVkyUkNZV3htZEdaalkwVmtlR1ZOWTNsbVMySnFaM2RvYVdGRFkzbG9jMmhPWlZSbGFHVlNaMUpsU1dGblpqQm5kMkZPWVhoa1VXRkVZMVZoZW1OclpIZGhWV0YzWmpGaldtZENhRkppWjJocllVMW5lbUZaWkhoaVJHUm5aRWxvVUdGSFpIcGxUV2cxWTBSbVZHZFpZemhpUzJOQ1lVVm1XV1ZXWVd4aFoyVjFabE5vWjJGTlpIVm5WbVV4WlVsbWNHTkNaV3BuVm1GVGFFRmlVMmRzWmxSaFEyZFNZMWxqUjJaV1lXbG1ZMlV3WlVabE1XWk5aM0ppVG1kQ1prRm9lR05HWjJkb2VHSllZa3hsZVdKQ1lsRmxWMlZUWmtKaVZtaEpaa05pWTJWdVprMW9VbU5OWVhWa1NHWkJabHBsWW1aWVowSm9UV0pVWkUxa2FXRnZZemhtU1dWblluTmhjbVpFWmxWbU5HUlZaVlZvVTJkSlprNW5UV1JFWVdOalZXWkJhREZoVFdnMVowMWxSbUZOYUU1blYySlJZVlZsV1daS2FFUm1UV1F5WkUxa1VXVTBZVU5sUkdSNFpITm1lbU5QWVZGbU1HVXlhRkJoUTJobllsSmlSMlZHWlZwaVdXVk1hR3RpYjJWRVlVeG9iR1prWkZObVMyaFJabGxoTVdKVlpHZGtSV053WTFWb2QyZHJZVmRoUW1Kc1pWbG1ibU5PWmtKb1pHVlVaa3RrZW1oUmFGRmlUV1ZTWVZsalRXVldabmxrT0dOblpWVm5SbWRyWjJkb1ZtZFRZa0ZrYm1GS1ozcG9SV2hVWWt4aWFHSjNZMGRvVjJneFpuZGhWR1JGWkhwbVNXUnhZMUJuUTJoSlpVeG5TMkozWnpGbFQyTkdaa1pqUldWcFpFUmtWR2RCWmpObVJtZEJaMDVqVkdOUFlsUm9RbWhVYUVSa1ZtZHJaa1pvUjJGRFkxRmhlbVJPWkdwbFJXZFBZVUZvWjJZNFkySmpUV1Y2Wld0a1RtaE9ZMnBpZDJadllVVmpVbVJvWkZka1YyUkRaalZpUzJWQlkzbG9OV1ZZWjFWbWFXWnJaMGRrVG1KV1pFbGhRbUpMWWxabVRXSktaVVprWjJGYWFGZGtTbUY2WmxGaVdHaFZaM2xrYzJnd1pFVmtSR1JGWmxkbVJHWkdaV05uZG1SSllVWmhRbVZhWjBsblJtaFZZbWRqU21KNVltTmhlR2RGWlhsaU5HaGpZVUpoYkdSMFpXTm1SV2g0WWsxbGVXUkxabXBvZDJScFlrTmhlV0p6WkU1blZHWm9ZbEpoVW1oSlkyZGlNR1YzWms1aWVHWlJhRVJoVldaNlpHdGhkMkZWWVhkbU1XUmFZa0poVW1KblkydGtUV0o2WlZsbGVHZEVaR2RvU1dWUVprZGplbUpOWkRWblJHRlVZbGxtT0dSTFowSm9SV0paWVZaaWJHUm5ZblZpVTJKbllVMWtkV0pXWkRGblNXZHdaVUpoYW1OV1pWTm5RV0pUYUd4aVZHUkRaVkpqV1dOSFpGWmhhV1pqWnpCalJtSXhZazFoY21KT2FFSm1RV0Y0Wmtab1oySjRaVmhsVEdKNVowSm1VV0pYYUZOblFtVldaa2xoUTJSalpXNWpUV1JTWVUxbWRXVklaRUZqV21kaVkxaGhRbVpOWlZSblRXUnBZbTlpT0dOSlltZGxjMlZ5WkVSb1ZXVTBZbFZrVldOVFowbG5UbWhOWTBSa1kyZFZaa0ZrTVdoTlpEVmtUV1JHWTAxbVRtSlhhRkZpVldSWmFFcG9SR2ROWXpKaFRXSlJZelJoUTJSRVlYaGhjMmQ2WVU5alVXRXdZakprVUdGRGFHZG1VbU5IWVVab1dtZFpZMHhrYTJadmFFUm1UR1JzWm1Sa1UyaExhRkZvV1dZeFoxVmhaMkpGWlhCaFZXSjNZbXRsVjJWQ1oyeG9XV0Z1WVU1b1FtUmtaRlJtUzJaNlkxRmxVV1ZOWVZKbldXVk5ZVlptZVdFNFlXZG1WV0pHWm10a1oyZFdZVk5vUVdadVprcG9lbU5GWkZSblRHZG9abmRvUjJSWFpERmhkMmRVWTBWamVtTkpZM0ZuVUdGRFlrbGxUR0pMWm5ka01XWlBZVVpsUm1kRloybGpSR2RVWVVGbk0yVkdaRUZpVG1kVWFFOW5WR1JDWkZSb1JHRldaR3RtUm1SSFlrTmlVV1Y2Wms1aGFtUkZZazlvUVdablpUaG1ZbU5OYUhwbWEyRk9aMDVrYW1aM1pXOWtSV2hTWldoblYyRlhaRU5pTldWTGFFRmxlV0UxWVZoaVZXWnBaR3RuUjJWT1pGWmxTV1pDWlV0aFZtRk5aMHBsUm1kbmFGcGtWMkpLWjNwbFVXaFlaRlZuZVdWemFEQmxSV2hFYUVWalYyUkVaVVpqWTJOMllrbGhSbVpDWTFwb1NXZEdZMVZoWjJWS1pubGxZMlY0WWtWbmVXWTBZbU5tUW1oc1lYUmtZMlZGYUhobVRXRjVaMHRvYW1aM1pXbG1RMko1YUhOaVRtZFVabWhuVW1SU1prbG5aMk13WVhkbVRtSjRZbEZoUkdaVllYcGphMmgzWVZWbGQyUXhabHBtUW1KU2FHZG5hMmhOYUhwaVdXZDRaVVJoWjJGSllWQm1SMk42WTAxb05XSkVhRlJtV1dVNFowdGxRbWhGWjFsa1ZtZHNhR2RuZFdOVFpHZG9UV0oxYUZab01XWkpaM0JuUW1OcVpsWmpVMlZCWkZObGJHTlVZME5tVW1aWllVZG9WbVpwWjJOb01HVkdZVEZrVFdGeVowNW5RbWhCWjNoaVJtZG5aSGhsV0dGTVlubGxRbVZSWjFkblUyUkNhRlppU1dkRFoyTm5ibU5OWjFKblRXSjFZVWhqUVdkYVltSm9XR1JDWmsxb1ZHTk5ZbWxvYjJNNFpVbGhaMlJ6WW5KalJHVlZZelJvVldaVloxTm5TV2hPWVUxaVJHZGpZVlZpUVdJeFlrMWlOV05OWTBabVRXaE9abGRpVVdWVloxbGlTbUZFWlUxb01tVk5aMUZvTkdORFowUmhlR1J6WW5wa1QyRlJZakJvTW1WUVlVTm1aMkpTWjBkaVJtWmFhRmxuVEdKcloyOWlSR0ZNWjJ4aFpHSlRaMHRpVVdoWllURmhWV0ZuWmtWaGNHVlZaM2RvYTJGWFpVSmtiR1ZaWjI1aVRtRkNabVJvVkdaTFlucGhVV2RSWWsxaFVtTlpaazFuVm1GNVl6aGhaMlpWYUVaaWEySm5hRlpvVTJKQlptNWtTbUo2WlVWblZHUk1aMmhuZDJWSGFGZG5NV1ozWlZSalJXWjZZVWxrY1dSUVowTmhTV2hNWTB0a2QyUXhaRTlsUm1oR1lVVmlhV1pFWVZSaFFXTXpaMFptUVdWT1lWUmlUMlJVWTBKbFZHaEVaVlpuYTJOR1owZGpRMk5SWjNwblRtWnFaa1ZpVDJWQlkyZG9PR05pWWsxbGVtTnJaazVvVG1kcVpYZG5iMmhGWmxKb2FHaFhZbGRqUTJNMVkwdG5RV2g1WkRWaFdHWlZZV2xtYTJGSFkwNW1WbVZKWWtKb1MyRldZazFqU21WR2FHZGpXbUpYWlVwamVtaFJabGhqVldaNVlYTmlNR05GYUVSalJXTlhaa1JvUm1OamFIWm9TV2RHWTBKaldtZEpZa1psVldSbmFFcGllV1pqWVhoaVJXVjVaVFJvWTJaQ1pHeG5kR2hqWWtWamVHUk5hSGxsUzJkcVozZGphV2hEWTNsbWMyUk9aMVJuYUdKU1psSm9TV1puWVRCamQyTk9aSGhuVVdGRVpWVm9lbVpyWjNkblZXTjNhREZoV21OQ1kxSmhaMlJyWVUxaGVtaFpaM2htUkdSbmFFbG1VR0pIWVhwa1RXZzFaVVJrVkdOWllUaGhTMmRDWTBWbldXVldZMnhsWjJoMVpWTm9aMlZOWlhWbFZtZ3haa2xrY0dKQ1ltcGlWbUpUWlVGa1UySnNaRlJuUTJaU1psbGtSMlJXWjJsaVkyWXdaMFppTVdaTlpISmxUbUZDWWtGbGVHUkdZbWRtZUdoWVkweGtlV2RDWjFGa1YyWlRaa0prVm1OSlkwTmxZMlZ1WWsxb1VtWk5ablZvU0dWQlpGcGxZbVJZWmtKb1RXVlVaRTFuYVdadlpUaGtTV1ZuWm5OamNtTkVZMVZsTkdWVmFGVmtVMk5KWlU1bFRXZEVabU5qVldOQllURmxUV0UxWTAxbVJtUk5aMDVqVjJWUllWVm9XV0ZLWmtSb1RXVXlaRTFqVVdnMFkwTmhSR1o0WkhOaWVtTlBaMUZqTUdReVoxQmlRMmRuWjFKaFIyUkdZMXBpV1dKTVoydGxiMlJFWkV4aWJHVmtZVk5sUzJGUlpGbGtNV2RWYUdkbFJXWndaVlZrZDJOclkxZG1RbWhzWlZsbmJtWk9aa0prWkdWVVkwdG9lbVJSWkZGaFRXVlNaMWxqVFdSV1pIbGlPR2huWjFWb1JtTnJZMmRvVm1OVFlVRmpibUZLWVhwb1JXSlVaa3hsYUdoM2FFZGxWMk14Wm5kbFZHTkZZM3BrU1doeFkxQm9RMkpKWVV4bFMyZDNZekZtVDJWR1pVWmtSV2hwYUVSa1ZHSkJaak5rUm1oQlowNW5WR0ZQWTFSb1FtWlVhRVJpVm1WcmFFWm1SMlZEWmxGa2VtWk9hR3BpUldaUGFFRmtaMkU0WW1Ka1RXaDZZV3RuVG1WT1pHcGhkMlp2WkVWa1VtSm9aVmRrVjJKRFpqVm9TMkZCWW5sa05XRllZVlZvYVdOclowZG1UbWRXWlVsbFFtVkxZMVprVFdKS1prWm9aMlphWkZkaVNtaDZabEZsV0dGVlpYbG9jMkl3WkVWaVJHVkZaVmRrUkdoR1ltTm5kbUpKYUVaa1FtWmFZa2xsUm1WVlkyZG1TbWg1WW1OaWVHZEZaM2xqTkdSalprSm9iR2gwWTJOaFJXWjRZazFsZVdGTGFHcG9kMlZwWkVObGVXWnpaMDVqVkdkb1oxSmpVbUpKWVdkak1HVjNZMDVrZUdoUlpFUmlWV2g2WVd0bGQyVlZhSGRrTVdKYVlrSm9VbUZuWVd0aVRXUjZZVmxuZUdkRVkyZGtTV1pRWTBkaGVtWk5hRFZqUkdWVVlsbG5PR2hMWjBKaFJXRlpZVlpsYkdOblpuVmtVMlJuWlUxb2RXZFdZakZqU1dSd1pFSmphbVpXWkZOb1FXWlRaMnhvVkdkRFlWSmtXV2RIYUZaaGFXUmpaVEJvUm1FeFpFMWtjbU5PYUVKalFXVjRaMFpvWjJaNFoxaGhUR1o1WlVKalVXSlhZMU5oUW1WV2FFbG1RMkZqWW01alRXSlNZazFvZFdOSVpVRm9XbVppWlZobVFtRk5aVlJpVFdkcFltOWhPR0pKWVdkbWMyZHlaVVJsVldNMFlsVmlWV2hUWlVsb1RtZE5ZVVJpWTJoVlkwRmpNV1ZOWWpWaVRXaEdaRTFoVG1OWFlWRm5WV1JaWmtwblJHaE5aekpoVFdKUlpUUm9RMlZFWTNoaWMyaDZZMDluVVdFd2FESmlVR05EWldkalVtaEhaMFpvV21KWloweGhhMmR2WkVSbFRHTnNaR1JoVTJWTGFGRm1XV2N4WmxWa1oyUkZhSEJrVldKM1pHdGlWMlJDWkd4bFdXUnVZVTVtUW1aa1lWUm1TMk42WTFGblVXSk5ZbEpqV1daTlkxWmplV1E0WVdkbVZXVkdaR3RpWjJaV1oxTmtRV0p1WTBwb2VtWkZhRlJpVEdKb2FIZG5SMlZYWVRGaGQyZFVaRVZuZW1OSlpuRm1VR1JEWlVsbVRHZExaWGRoTVdoUFlVWm1SbVZGWTJsaFJHaFVaa0ZuTTJoR2FFRmtUbVZVWjA5blZHSkNhRlJpUkdSV1ltdGpSbU5IWkVOalVXWjZZMDVsYW1SRlkwOWlRV0ZuWXpob1ltUk5ZbnBpYTJST1prNWthbVYzWlc5bFJXaFNZbWhuVjJkWFkwTmtOV1ZMWVVGa2VXTTFaMWhoVldOcFptdGlSMkZPWlZaaFNXZENZa3RuVm1OTmFFcG9SbWRuWmxwalYyRktZbnBoVVdKWVlWVmhlV0Z6WVRCbVJXZEVaRVZtVjJkRVlrWmxZMlIyYUVsa1JtVkNZbHBtU1dkR2FGVmhaMlZLWW5sbVkySjRZa1ZrZVdnMFpHTm5RbUpzWTNSaFkyWkZhSGhrVFdKNVlVdGxhbU4zWW1salEyZDVabk5tVG1WVWFHaGhVbUZTYUVsaVoySXdaM2RqVG1ONFoxRmtSR1JWWjNwbmEySjNabFZuZDJReGFGcGhRbVZTWW1ka2EyTk5aSHBsV1dGNFpVUm1aMkpKWmxCblIyWjZaazFpTldGRVkxUmlXV1k0WlV0aFFtUkZaMWxvVm1Sc1ltZG5kV2hUYUdkbFRXZDFaVlpqTVdoSlozQmlRbWRxWWxaalUyRkJZbE5pYkdkVVlVTmhVbUpaWVVkaFZtaHBabU5qTUdaR2FERmlUV0Z5WWs1b1FtaEJZWGhpUm1kblpYaGpXR05NWkhsalFtUlJZbGRoVTJOQ1psWmpTV0ZEWkdOamJtaE5aMUpoVFdaMVlraG1RV2RhWkdKb1dHaENaVTFsVkdWTlltbGpiMlk0WmtsaFoyVnpZWEprUkdKVmFEUm9WV2hWWlZOa1NXUk9aRTFpUkdKallsVm5RV0l4WlUxa05XRk5ZMFpuVFdKT1pWZGtVV2RWYUZsaFNtTkVZazFuTW1GTlpGRmxOR1JEYUVSa2VHTnpZbnBrVDJSUlpUQmhNbWRRYUVOaFoySlNaa2RrUm1oYVoxbGpUR2hyWW05a1JHZE1abXhqWkdOVGFFdG1VV2RaWkRGblZXWm5ZMFZvY0dOVmFIZGphMkpYWmtKa2JHRlpZMjVsVG1OQ1ptUmlWR1JMWjNwalVXWlJhRTFsVW1aWlpVMW9WbVY1WVRobloyWlZaMFpqYTJKbllsWmhVMmhCWW01aFNtSjZZa1ZoVkdOTVlXaGhkMmhIWmxkaU1XSjNhRlJqUldSNlpVbGxjV1ZRWlVOalNXZE1aa3RtZDJneFlVOWhSbU5HWlVWbGFXVkVaRlJrUVdRellrWm9RV1ZPWjFSalQyRlVaMEppVkdKRVkxWmthMmhHWmtkalEyaFJaSHBsVG1KcVlVVmhUMlJCWkdka09HZGlZazFoZW1ocmFFNW9UbVpxWVhkbWIyTkZabEptYUdGWFlsZGtRMkkxYUV0b1FXZDVZalZvV0dSVlpHbGlhMlZIWTA1bFZtUkphRUpuUzJWV1lVMW9TbUpHYUdkbldtaFhhRXBuZW1GUllWaG1WV0Y1YUhOb01HTkZZMFJqUldaWGFFUm9SbVJqYUhaa1NXUkdaa0ppV21OSmFFWmxWV0puWWtwbWVXSmphSGhpUldONVp6UmxZMkZDWm14aGRHSmpZVVZvZUdSTlpubGhTMkZxWm5kbWFXZERabmxoYzJaT1kxUmxhR1pTYUZKblNXWm5aREJsZDJOT1pIaGtVV1ZFWmxWaWVtVnJZbmRuVldWM1l6RmpXbU5DWlZKb1oyZHJZazFtZW1SWlkzaG1SR1JuWkVsa1VHWkhabnBtVFdFMVpFUmtWR1ZaWkRobVMyUkNaa1ZuV1dWV1lXeGtaMkYxYUZObloyUk5ablZqVm1FeFprbGhjR1JDWjJwa1ZtaFRaMEZoVTJoc1pWUmpRMk5TWjFsaVIyWldhR2xtWTJFd1prWmlNV0pOWm5KaVRtWkNZa0ZvZUdaR1pHZGplR05ZYUV4b2VXUkNhRkZuVjJOVFlVSmtWbU5KWWtObVkyaHVaVTFrVW1kTmFIVm1TR1JCWlZwaVltSllZVUpqVFdaVVlrMWxhV0p2WWpoalNXZG5ZM05tY21oRVpWVmtOR05WYUZWalUySkpaazVvVFdGRVlXTm1WV2hCWVRGb1RXUTFaRTFrUm1kTlpFNWpWMkpSYUZWb1dXUktaMFJqVFdReVowMW5VV1EwWmtOaVJHRjRaM05tZW1GUFlsRmlNR1V5WmxCblEyTm5abEpsUjJoR1pGcGpXV1JNWW10aWIySkVaMHhpYkdGa1lsTmlTMlZSWjFsaE1XRlZZV2RrUldWd2FGVm1kMlpyWmxkaFFtRnNZMWxqYm1OT1pVSmpaR2RVWjB0aWVtWlJabEZtVFdaU1kxbGtUV05XWW5sa09HTm5ZbFZpUm1OclkyZGpWbU5UYUVGa2JtVktaWHBoUldoVVoweG1hR2gzWmtkalYyUXhaWGRvVkdkRllucG5TV2h4WTFCblEyTkpaVXhpUzJWM1lqRm9UMkZHWkVaaVJXRnBaa1JpVkdSQllUTmpSbVJCWlU1bFZHaFBhRlJoUW1kVVlVUm5WbVJyWjBaaFIyTkRhRkZrZW1oT1pHcGtSV1JQWVVGb1oyVTRhR0puVFdONmFHdGtUbVJPWW1waWQyRnZhRVZvVW1ab1pGZGhWMmhEWVRWaVMyVkJaSGxtTldkWVlsVm1hV0pyWWtkaFRtWldZMGxsUW1aTFpGWm1UV1ZLWlVaaFoyWmFZbGRpU21oNlpWRmtXR2hWWVhsbWMyZ3daMFZoUkdaRloxZG5SR1ZHWjJOa2RtRkpaRVpvUW1SYVprbGhSbWhWWm1kbFNtVjVabU5rZUdKRllubGpOR0pqWlVKbGJHRjBaR05sUldaNFowMWtlV2hMWldwbWQyTnBZa05pZVdkelprNWtWR0pvWmxKb1VtVkpZMmRqTUdKM1lrNW5lR1pSWjBSblZXaDZaV3RrZDJaVlpYZGxNV1JhWTBKalVtZG5aMnRuVFdoNmFGbG9lR2hFWW1kblNXWlFZVWRsZW1WTlpUVm5SR05VWlZsbk9HZExaa0poUldaWlpsWmliR0ZuWVhWalUyUm5aVTFqZFdkV1l6RmxTV1J3WTBKamFtWldaMU5vUVdSVFlXeGxWR05EWlZKbldXSkhaMVpqYVdGamFEQmhSbVV4WkUxbmNtRk9Za0psUVdKNGFFWmxaMmg0WjFobFRHSjVaMEpoVVdoWFpWTmxRbUpXWlVsb1EySmphRzVrVFdaU1pVMWxkV1ZJWlVGbVdtSmlaRmhuUW1aTlpGUm5UV0pwWTI5ak9HaEpZV2RvYzJoeVprUm1WV0kwWTFWaVZXZFRaVWxoVG1WTlpFUmxZMmhWWWtGaE1XSk5aelZoVFdSR1prMWpUbWRYWkZGblZXTlpaMHBtUkdOTlpqSm5UV1ZSWmpSalEyRkVaM2hqYzJaNmFFOWtVV0l3WnpKaFVHTkRaV2RqVW1SSFowWm9XbWRaWVV4aGEyUnZZVVJuVEdac2FHUm5VMlZMWkZGaFdXSXhZVlZuWjJoRlkzQmhWV1ozWTJ0aVYyVkNaMnhvV1dSdVlVNWhRbU5rWjFSa1MyaDZZMUZuVVdSTmFGSmtXV1pOWWxab2VXWTRaR2RsVldkR2FHdGhaMkZXWkZOaVFXaHVaMHBuZW1GRloxUm1UR0pvWTNkb1IyTlhZekZuZDJKVVowVmxlbUpKYUhGaFVHaERaVWxuVEdGTFkzZG9NV05QWmtaa1JtRkZabWxpUkdGVVpFRm9NMkpHWTBGa1RtVlVZazlpVkdSQ1kxUm1SR1JXWTJ0aFJtTkhaRU5uVVdGNlprNWlhbUZGWkU5blFXRm5aamhsWW1kTlkzcGxhMk5PWlU1bGFtTjNZVzluUldkU1oyaG5WMlpYYUVOaE5XRkxhRUZqZVdjMVlsaG5WV05wWVd0blIyTk9hRlprU1dkQ1owdGpWbVZOWVVwalJtRm5aMXBuVjJSS1pIcGlVV0pZWTFWa2VXZHphREJtUldoRVlrVmtWMk5FWVVabFkyUjJaa2xvUm1aQ1lscG5TV2hHWWxWaloyRktaWGxpWTJkNFowVmplV2cwWkdOalFtVnNZM1JpWTJaRlluaGlUV1o1WWt0aWFtVjNaMmxsUTJWNVluTmxUbVZVWkdoaVVtRlNZa2xrWjJjd1ozZGhUbVY0WWxGbFJHVlZabnBrYTJkM1pGVm9kMkV4WWxwblFtaFNaV2RrYTJKTlpucG9XV0o0WTBSa1oyTkpabEJoUjJSNlprMWhOV0pFWjFSb1dXZzRaMHRoUW1aRllsbG5WbVpzWTJkb2RXZFRaMmRsVFdWMVoxWmhNV0pKYUhCbVFtSnFhRlprVTJkQlkxTmliR1pVWlVOalVtaFphRWRuVm1ScFltTm5NR05HWWpGblRXVnlaRTVsUW1OQlozaGhSbWhuWTNobldHZE1aWGxuUW1KUlpWZGlVMk5DYUZaaFNXTkRaV05qYm1GTlpWSm1UV2gxWmtoaVFXWmFaMkppV0daQ1lVMWtWR2ROWkdsa2IyRTRhRWxrWjJGelkzSmxSR0pWYURSa1ZXTlZaVk5qU1doT1pVMWxSR0ZqWWxWbVFXUXhaazFuTldSTlpFWmlUV0pPWTFkblVXWlZabGxsU21ORWFFMWpNbVpOWVZGbU5HTkRZVVJqZUdGelpucGxUMlJSWkRCaE1tWlFaVU5pWjJKU1lVZGlSbVJhWTFsbVRHaHJaVzlqUkdkTVlXeG5aR05UYUV0aVVXSlpZekZrVldSblpFVmljR2RWYUhkbWEyUlhZVUpoYkdkWmFHNW5UbUpDWjJSbVZHaExZWHBqVVdGUllVMWlVbVJaWlUxbFZtRjVZamhuWjJSVmFFWm5hMlpuWlZab1UyRkJaMjVpU21ONlkwVmlWR2hNWVdobWQyWkhZMWRsTVdaM1oxUmlSV042WTBsbmNXZFFZME5qU1dkTVkwdG9kMlV4WjA5aFJtUkdaMFZrYVdORVpGUmhRV0l6WWtabVFXTk9ZMVJqVDJoVVlrSmxWR05FYUZab2EyVkdaVWRrUTJaUlpIcGpUbUZxWlVWbFQyZEJZbWRpT0dOaVpFMW9lbVZyWWs1blRtSnFabmRoYjJORllWSmlhR2hYWjFkaVEyRTFaa3RpUVdSNVp6VmlXR1ZWWkdsa2EyVkhaVTVuVm1OSlpVSm5TMmRXYUUxbVNtVkdhR2RpV21GWFowcGllbUZSWmxoaFZXRjVhSE5rTUdaRllrUmtSV2hYYUVSblJtRmpZWFprU1doR1lrSm9XbVZKWTBaaFZXSm5ZVXBtZVdkalkzaG5SV2Q1WkRSbFkyWkNhR3hvZEdOalpVVmllR2hOWW5sbFMyZHFaWGRoYVdkRGFIbGpjMkZPYUZSbGFHaFNaRkpsU1dGblp6Qm9kMmhPYUhobVVXZEVaRlZpZW1kclpuZGxWV1YzWWpGaFdtTkNZVkpuWjJaclkwMWplbU5aWVhobFJHVm5ZVWxuVUdaSGFIcG5UV00xWjBSalZHaFphRGhoUzJoQ1pFVmpXV1JXWm14aVoyWjFaRk5pWjJkTlluVmlWbVV4WTBsbmNHRkNZMnBvVm1oVFowRmpVMmRzWVZSbFEyTlNhRmxuUjJKV1kybGtZMlF3WlVaaU1XUk5aWEppVG1kQ1lVRmhlR1JHWW1kaGVHSllZMHhvZVdoQ1psRm9WMkpUWmtKaFZtaEpaa05sWTJWdVlVMWlVbUZOWVhWaVNHZEJZbHBpWW1OWVpFSm5UV0pVWjAxa2FXTnZaemhsU1dabmFITmhjbVpFWTFWaE5HZFZaMVZrVTJkSlpVNWtUV2RFYUdOb1ZXWkJaREZtVFdZMVpVMWlSbVJOWTA1bFYyUlJaRlZrV1dKS1lVUmhUV0l5WlUxaVVXYzBZa05pUkdGNFpuTm1lbVZQWVZGak1HRXlabEJqUTJGbllWSmtSMmhHWTFwbFdXTk1abXRtYjJSRVlreG5iR2hrWjFOalMyTlJaMWxsTVdKVlptZGpSV0Z3WTFWbWQyZHJZbGRsUW1Gc1pWbGlibUZPWmtKb1pHZFVZMHRtZW1GUlkxRm1UV2RTYUZsbVRXTldaSGxuT0dSbllWVmhSbWhyWm1kaFZtRlRaVUZvYm1OS1pYcGtSV1JVWkV4bmFHSjNaMGRqVjJneFozZGtWR1JGWTNwaFNXWnhZbEJsUTJaSlpFeG5TMmgzWlRGblQyZEdZa1pqUldOcFprUmpWR1pCWkRObFJtTkJZVTVvVkdWUFlsUmtRbVZVWVVSa1ZtUnJaRVppUjJSRFpWRmhlbU5PWkdwalJXUlBaa0ZsWjJNNFpHSm5UV0o2Wld0a1RtZE9aV3BrZDJOdlpFVmxVbWhvWVZka1YyZERaRFZrUzJkQmFIbGlOV1JZWmxWb2FXSnJaVWRpVG1oV1lrbGxRbVZMWkZabFRXSkthRVpvWjJaYVlWZG5TbVo2WmxGa1dHTlZZbmxpYzJNd1pVVm5SR05GWWxkalJHRkdZbU5tZG1WSlprWmtRbUphWkVsb1JtWlZhR2RuU21SNWFHTmllR2RGWjNsb05HSmpaMEptYkdSMFlXTmtSV2Q0WjAxamVXUkxZV3BvZDJKcFowTm1lV0Z6WVU1bVZHRm9hRkppVW1KSloyZG1NR1IzWVU1bWVHaFJaMFJqVldWNlpHdGxkMlJWWVhkbE1XTmFZa0psVW1abloydG9UV042WVZsaGVHUkVaMmRoU1dSUVkwZGtlbVpOWXpWblJHTlVaMWxvT0dkTGFFSm9SV2RaWjFabmJHaG5ZWFZoVTJOblprMW9kV1pXWkRGaVNXSndZMEppYW1OV1lsTmtRV0pUWkd4a1ZHaERhRkpoV1dOSFpGWm1hV2hqYURCalJtVXhaMDFpY21aT2FFSmhRV1I0WTBaaVoyaDRaVmhpVEdaNWFFSmxVV1JYWlZOblFtVldZa2xuUTJKalkyNWlUV1pTWlUxaWRXSklZVUZuV21aaVpWaG9RbWhOWlZSaVRXSnBabTlqT0dKSlltZGxjMmh5WVVSb1ZXVTBhRlZsVldKVFpVbG9UbUpOWmtSalkyZFZhRUZrTVdGTllqVm5UV2hHWWsxbFRtSlhabEZoVldGWlpVcGhSR1pOWWpKaFRXUlJaVFJpUTJKRVlYaGtjMlI2WVU5b1VXZ3dhREppVUdORFpHZG9VbUZIYUVabFdtaFpZa3hoYTJodlprUmtUR2hzWldSbVUyRkxZMUZvV1dneFlsVm5aMk5GWlhCa1ZXaDNaV3RsVjJoQ1lXeG9XV2R1WTA1aVFtTmthRlJrUzJSNlpsRm1VV0pOWWxKaVdXZE5aRlpqZVdZNFpXZGhWV1JHWTJ0bFoyaFdZMU5vUVdWdVkwcG1lbWhGWWxSalRHWm9hSGRoUjJkWFl6RmpkMk5VWjBWa2VtZEpZbkZoVUdGRFowbGlUR2hMWlhkaE1XWlBZa1ptUm1KRlltbGpSR2RVWkVGbE0yWkdZa0ZpVG1oVVlVOWpWR2hDWjFSblJHaFdZMnRpUm1WSGFFTmpVV1Y2WTA1bWFtRkZaVTluUVdSblpEaGhZbUZOWW5wa2EyTk9aRTVrYW1WM1kyOWpSV05TWW1oblYyWlhaME5sTldKTFprRm1lV1kxWTFoalZXaHBZbXRuUjJGT1kxWmtTV1pDWVV0alZtVk5aVXBvUm1WblpGcGpWMlZLWkhwa1VXUllaVlZuZVdoelp6QmxSV1ZFWTBWblYyUkVZVVpuWTJOMlpVbG9SbVJDWjFwbFNXZEdaRlZoWjJKS1lYbG5ZMk40WTBWbGVXYzBaV05tUW1Kc1pIUmxZMmhGYUhob1RXTjVaMHRsYW1KM1kybGpRMkY1YUhOaVRtVlVhR2hrVW1oU1owbGxaMmN3WTNkaFRtTjRabEZqUkdaVlpucG9hMkYzWmxWbmQySXhaVnBrUW1OU1ltZGxhMlpOWm5waVdXUjRaa1JuWjJaSllWQmhSMlI2WlUxaU5XaEVZbFJqV1dnNFkwdGxRbWRGYUZsaFZtRnNaV2RrZFdWVFlXZGlUV0oxWTFaaU1XWkpZM0JrUW1GcVlWWm1VMmRCWWxOb2JHTlVhRU5tVW1OWlprZGhWbU5wWTJOb01HVkdaREZsVFdSeVkwNWlRbWhCWVhob1JtRm5ZbmhrV0dWTVlubGpRbWhSWVZkaFUyZENaVlppU1doRFlXTmlibUpOWlZKblRXVjFaMGhqUVdSYVlXSmxXR2hDWTAxaVZHVk5ZMmxuYjJnNFpFbGxaMk56WlhKaFJHRlZZVFJoVldkVllWTmlTV0ZPWjAxalJHWmpZMVZoUVdVeFkwMWtOV05OYUVabVRXVk9hRmRtVVdaVlkxbG9TbVpFWmsxb01tWk5ZbEZtTkdORFkwUmxlR0p6WlhwaVQySlJZekJtTW1kUVpVTm1aMlZTWjBka1JtVmFZVmxrVEdoclptOWlSR05NWjJ4aFpHaFRhRXRqVVdaWmFERmhWV0ZuWlVWbmNHUlZaSGRrYTJKWFpVSm9iR1ZaWlc1bFRtVkNZV1JsVkdGTFpIcGhVV0ZSWjAxbVVtRlphRTFsVm1ONVpUaGtaMlZWWjBaamEyVm5abFpoVTJaQlpXNW1TbVo2WTBWbFZHTk1ZV2htZDJSSFpsZGxNV1IzWmxSb1JXSjZaRWxsY1dWUVlVTm5TV2RNWkV0aGQyZ3hZazlqUm1oR2FFVm5hV1pFWjFSbFFXTXpZVVpuUVdoT1oxUmxUMkZVYUVKb1ZHVkVhRlpvYTJWR1prZGlRMlJSWTNwbVRtaHFhRVZoVDJWQmFHZGpPR2hpWWsxaGVtVnJaVTVuVG1GcVkzZGtiMlZGWjFKbWFHSlhaRmRqUTJZMVlrdGhRV2Q1WnpWbFdHUlZabWxtYTJoSFpVNWlWbUpKWmtKalMyVldaazFtU21OR1lXZGpXbVpYWlVwbWVtWlJabGhvVldSNVpuTmxNR1pGWTBSaVJXaFhZMFJvUm1OalozWmtTV1ZHWkVKaFdtTkpZVVppVldOblpFcGhlV0ZqWW5oa1JXUjVZelJsWTJKQ1pXeG9kR0ZqWVVWbGVHaE5aSGxoUzJGcVpuZGhhV2REWTNsamMyaE9aMVJrYUdWU1oxSmhTV1JuWWpCaGQyRk9ZWGhpVVdaRVpWVmplbVpyWVhkaVZXaDNaekZuV21SQ1psSmlaMlpyWWsxbGVtTlpaWGhoUkdObmFFbGpVR05IWkhwb1RXRTFZa1JtVkdKWlpUaG5TMlJDWmtWa1dXaFdZMnhtWjJoMVpWTm1aMlZOWTNWb1ZtUXhZVWxpY0dKQ1lXcGxWbVpUWjBGa1UyWnNaRlJpUTJKU1psbGpSMmRXYUdsbFkyVXdaVVpqTVdGTlozSmpUbWRDWTBGaGVHUkdaR2RvZUdkWVlVeGllV2RDWmxGaFYyTlRZVUpsVm1aSlkwTmlZMmR1WWsxaVVtaE5ZWFZvU0dOQlpscGxZbVpZWVVKbVRXVlVZazFpYVdKdllqaGxTV1puWjNOaGNtRkVZMVZpTkdOVlpGVmxVMkZKYUU1alRXRkVaV05vVldkQlpERmhUV1kxWWsxbVJtTk5ZMDVoVjJOUllsVmpXV2hLWVVSalRXSXlhRTFqVVdFMFkwTm9SR1I0WW5ObGVtZFBaMUZqTUdZeVpWQmtRMk5uWlZKa1IyRkdaMXBoV1dkTVlXdGhiMlZFWWt4b2JHTmtZVk5vUzJGUlpWbGhNV2RWWW1kbFJXVndaMVZtZDJaclpGZGpRbVpzWlZsb2JtZE9aRUppWkdoVVlVdGxlbUpSWWxGb1RXRlNhRmxtVFdWV1pYbG1PR2RuWVZWaFJtTnJhR2RuVm1OVGFFRmpibUZLWlhwblJXaFVaa3hsYUdOM2FFZGpWMlF4WkhkbVZHTkZaWHBsU1doeFlsQm5RMmRKYUV4blMySjNhREZqVDJGR1pFWm5SV05wWkVSaFZHUkJZak5qUm1oQllVNWlWR2hQYUZSb1FtVlVhRVJpVm1OclkwWmlSMkpEYUZGa2VtRk9ZMnBrUldaUFlVRmlaMkk0YUdKa1RXVjZabXRsVG1WT1pHcGxkMkZ2WlVWblVtSm9aVmRoVjJGRFl6Vm5TMkpCWW5sbk5XZFlabFZtYVdOcmFFZG1UbVJXWkVsb1FtTkxaVlpoVFdWS1pFWmxaMlZhYUZkaVNtWjZabEZtV0dGVmFIbG1jMll3WlVWaFJHZEZZVmRpUkdaR1pXTmxkbUZKWTBabFFtZGFaVWxrUm1oVlkyZGhTbVY1WTJOaWVHSkZZWGxtTkdGamFFSm1iR1YwWkdOblJXVjRZazFtZVdSTFkycGxkMkpwYUVOb2VXSnpaVTVrVkdGb2FGSm9VbUpKWkdkb01HSjNZVTVsZUdWUllrUm9WV042Wld0bmQyWlZZWGRrTVdSYVpFSmpVbUZuYUd0alRXSjZhRmxuZUdaRVptZG5TV2hRYUVkbmVtTk5ZalZpUkdGVVpWbGpPR1ZMWkVKa1JXSlpZbFprYkdKblpYVmlVMmhuWkUxa2RXTldZVEZpU1dOd1pFSmthbWRXWkZOblFXVlRaMnhqVkdWRFpGSmhXV0pIYUZabWFXUmpaVEJoUm1ReFlrMWxjbVJPWkVKaFFXSjRaVVppWjJONFoxaGlUR1o1WmtKbFVXRlhZbE5uUW1OV2FFbGhRMlpqWm01blRXWlNaMDFpZFdSSVpFRm9XbU5pWjFoblFtTk5aVlJqVFdKcFltOW5PR1pKYUdkbWMyZHlaRVJvVldnMFkxVm9WV1ZUWmtsa1RtWk5ZVVJoWTJkVlkwRmpNV0pOWWpWb1RXTkdZMDFrVG1oWFpGRmpWV0ZaWWtwaVJHRk5aREpoVFdKUllUUm1RMkZFWm5oaWMyRjZZMDluVVdnd1lUSm9VR1JEWW1kbFVtVkhaVVpuV21WWlpreGlhMk52WmtSblRHZHNaR1JvVTJOTFlsRm9XV0l4WlZWb1oySkZZWEJsVldWM1pHdG1WMkpDYUd4bldXVnVaRTVqUW1Wa1pGUmtTMmQ2WlZGbVVXWk5hRkppV1daTlpGWmllV0k0WkdkaVZXSkdaV3RtWjJWV2FGTm5RV1Z1WmtwaGVtWkZaRlJtVEdGb1puZG5SMlpYWVRGb2QyTlVaVVZsZW1oSlozRmtVR0pEWTBsblRHVkxZM2RuTVdaUFlVWm1SbVZGWTJsbFJHTlVaVUZtTTJoR1lVRm1UbVJVWms5aFZHSkNZbFJuUkdWV1pXdGhSbVZIYUVOalVXUjZaVTVqYW1GRllrOW9RV0puWXpoblltUk5hSHBpYTJKT1owNWphbWgzYUc5b1JXSlNaMmhvVjJSWGFFTm5OV1ZMYUVGbWVXRTFhRmhpVldWcFlXdGlSMk5PWmxablNXZENZVXRsVm1kTmFFcGxSbVJuWlZwaFYySktZWHBsVVdkWVlsVm5lV2R6WmpCa1JXVkVhRVZsVjJKRVowWm9ZMkYyWTBsalJtUkNaMXBsU1dKR1oxVm5aMmRLWTNsaFkyaDRZVVZpTW1NeFowSmtRV2hHWVVaalUyRkdhSGhtVFdZMGFFaG1lbVZKWjNGaFNHZHRaMUZvTUdOUlkwRmlTbUZXYUV0bVoyRnJaV3RsWkdKclpEbGlRMmRWWVdwalVXSTFhRlZpUVdGd1pWVmhUbVI0WTBWbGNtTkpaRmhsTkdndllrZG5RV1paWWtoaFNHaDVaMlJpYW1SWllsUm9RV2N5WkVwaGFHRlZaVmxrV0dkSFp6Qm5aMkZSWldob1dtZG9aVmhpYTJkTlluRmlRMmhVWjFwalFtUlNaRE5sVldkV1lrVm9kMk14WVdOaVQySnJaSGRrZUdOSFlsWm5jMmMxWVVwa2JHTkZabXBoUjJORFptUmxVR05FWkhsbFFtRlpaVk5tTW1oWlpFcGlXbVZwYUZwamRXWmxaR3hvT1dKR1lWZGlhMlF3WTJSalpHTkNaRTVuVTJWTWFGTmlVV1YyWjFsb2QyaFZaSEpqU0dGVlpIQm1VMlJXWlhsbWMyZFpaa2xvYW1KTllXTm1VV2hyWlVWbmQyVlFZVEJvUm1OTVoxaG9aMkpKYUV4bVltWnVZa2xsTjJOUVkyZGlZMlJWYUZObVVXSTBaV2xpVG1Fd2FITm1hbWROWTJsaFFXUmFhRWhuYTJKTlpVUm5VV1puWjNSbVVHUlNZbEpqUldKYVpHSm9NV1phWWpsalJXVXdaV05sUW1WRlptZGlWbUpSWlVSamJHZ3daekppU1dKQ1lrNWxSMlpQWkZSbFkyUldZV1ZoV0dJeFlVdG1TR1pIWkd4bWVtVkhaRUpvYUdkdFpsbG5lV1UwWTI1a1RtSlVZMVZvUkdaTFpXZGphR0pJWTFKblJtWkpaMEZoUVdSSVpWRm1OMkZPWTJsblNXSkVZVTlpVldaMFowOWpRV1pHWmxabGIyZFVhRVJoT0dGcFoxWm9VbVpGWWxabVRtVnFZbXhsUjJGVFpUQmtPR0pOWkVOaWVtTlpaalpuWTJoRVpXdG9ZMmhVWkZkaFRtSmhabVppTVdaS1lVeGlabVZZWmxWaGNHVlVaMGhvVFdVMlkwWm9iV1ZrWmtSbFJXRlVaM1JoUW1KUmFFaG9WbVZKWW1abFJtUlJaMDloVUdkR1pUQmtaR2RGWkd0a2JHaFVZa3RuVkdRNVpGcG1VbU5UWVUxbk0yWkJZWGxqVldWVFlVTmhVbWRyWTJwaVRXTm9hSFJuUVdGUVpteG1kMlp1WWs1bFUyaHNZMkZpVm1OSGFHTm5ZMlZGWm14bFRtaGxaRUZrVW1oelp6ZG9TbWhZWlhCaGNtTkhZVmRvV21OTVpsaGtWbVZ6WTFGb1VHZ3lZbHBvTW1Ga1lXZGhXV1pSWWxGa1JHSXhabU5uUldkclpITm5XV0pSWlRCb1dtRnBZV1ZrYW1Oalp6aGtRbVozYUVWbVNXUkdabWRoUldWM1kwRmthV2hTWnpCbVNtUm5aV05oWTJoWVpXeGtkMkkyWkVKb1ZHTnZZblJuVW1OR1oxVm1jR0pFWmpKblFXaENhRkpuTTJWVllsWm9SMkpzWldob1QyVklZbWxoTldGcllsRm1hR1I0WTBGalkyRnNaVVpoTTJoV1pURm9RV1JYWTJGa2VXaGtaa1JvVm1ocFpsWm9RV2RNWkhsamEyaDJZV05vYkdaV1pYbGtVbVF3Wm1SaVNtTlNZMEZuVldGWVpFOWhlV2d4WlRablNtZDNabWRuYzJkQlpHdG5SV2hZWWtWbVIyVktaRXRsWkdOcVprbGhXR1pDWkVab2QyWXlaMDFsZUdOM1lrdG5WbVJSYUdSbGVtVlpaVzVvU21oM1pHTm1SbUprWVVSalJHVlNaamhpZW1oTlkxRm1WV0o1WjJOamFHWkpZWEZuVm1oU1pVSmpUR1JaWjFObFJtRkdZMkppZUdGRlpWUmhaR05WWW1SaGVHTllhRUZoVldWcFkxVm1RV2R6YUVWaVVtZFNaVUpuTjJkaVpERmhXbU5DWlUxa2VXSkpaVlZvVDJKQ2FFWm5TMlpWWW5wb1JXUjRabGRrVldOdlkzbG5VbUV3Wlhob2JXVlphRmhrUW1GV1ptTmlSbVZ3WTFCbFYyRkZaMVZoUm1WSVlsTm5XV1V2WTB0b1YyTXdhREZoUldacFowMW5VR1ZVWW5oa1FXUXlZVkpoU0dRNVpDOWlaV1JGWTBsaFZtUmxZa2hpV1dKSllWTm9lR1pCWTFobFZtWjRaMjluUzJSSFpraGpRbWhXWkZGbmVHWjBaVk5rWm1kSVkwWm5VV2hZWmxOaFpHRm5hRmhoZDJZeFlsbG1WV1JFYUhObFNHaFNZbE5rYkdaRlpWaGpVMlIzWTFSaVQyRnNZWGRuU21SaFlVSm9NV1JDWmxWalFtRjNZelpvV21SdVkwbG9SV1ZWWTBSbU5HVnVaVUZpZW1oc1kxaG5VV2RzWWtGaU9HWk1aVEZoVm1oTloweGxNV0Z6Wlc5aFdtUnRhR3RpYTJaWWFFZG9PR1JDYUdKa1VtRXdZbVJtVm1kV1lrbGtlV0pRWjJwbFVXUm5aMGRuVTJKTlpVVm9VV2hXWVVwalEyRmlZMEZtYkdndloyUm5aMkpzWVc5bFJtTllaV2hsTW1WRlpXdGpjMk5aWlVOb2FHUTVaMmxpWldacVpXdGhUR1ZFWTFSb05XRkJabGRpYVdWalpUbG5TR041YUVsbGIyUkthREZsWTJaUlkyRm1NV0YzWlZab1FtSlJaVUZqTTJKUlpGWmlkMlU1WlVWbWVXZEJZa2xsWW1WWFpHZGxWbU5UYUVab1FtTklaRVZpUkdWQmFIcG9RbWhDWTFWaGJHSmpZV3RtZUdVemFGaGxkMkZPWTNSaFRHUkNaM2RpVjJWQ1lWZGtXbWhRWkZwbWFXUTVZVGRuWTJSQ1lVSmxhbVZYWjJkaGMyTklaMGhtVm1WU1lrUm9aV2RIYUhObkwyVlBZWGhpTUdac1lVZGpWbU56WlVKb1EySnRaVkZtV0doTFl6TmpXV1pRWlZOamQyYzFaRk5vWkdKb1lVcG9UR2RIWVVWalRtRmFhRTFrUkdKaloydG1TbWhTWVc5bVRtaFRZMUZpTkdkUGFGQmtWR05hWVRWblQySlRabWRoWW1aR1kxSmphR2RYWmxwbGEyRTBZbVJvVUdNeGFEVmtRbWRQWTNoaFVtTXZaMFZqZDJSb2FHdGxSbU5SWTJSbFpXZEJZMnRuWjJZeVpsQmpVV1ZTYUVKbFQyWllZelZtVW1GS1psWm1OV0ZIWTBabGJXZEZZblZqUjJWR1lsSm5iV2REYUZkbVdtRnVZbU5rV0dGc2FGcGtZbVY0WkZaaVNtZFhZa1ZsVldOR1lVaGtVMlpaWkM5b1MyRllaR2hsYm1KaFltdG9jMk5RYUZWbGEyTXhaVTlvVkdOSVpscG9NbVZWWm1obVVtUlZaa3RoYm1aYVpXSm5VMlYzWTFaa1JHaEJZV3BpT1dGd2FGZGlibVZDWVVsaVVXSXdZbXRpU1dkTllrTmlkMmRsYUVwalZHSlNZWEJuV0dRemFFMWlVV0pIYUZkaFoyTk1ZVkpoVjJVNFlWcG9VV1ZYWTBWa1MyVmpaSGRpTldWSVpWQm5RbVI0WkVWbFpXSnJhR05pVVdkYVoyNW1TbUpYWkVab1YyTkpZMmRuV0doNllWSmtXR05XYUhoaVdXUm5ZbUZqUW1KdlkzbGtXbVZvYUZKa2JXWmFZbTFtUm1WM1oxaGtWR2N4WVZWaFFXUjRhREJrUVdSV1pGSmhVV1JvWWtwaFZHZHJZak5tUW1GRFpsVm1SbVJFWVRGamNHTkZZV0ZtUldSM1ppOWtaV1JzWjBsbFNHWklZa2hpWjJaMGFFOWlSV1p6WVZsb1VXVXhaR3hqYVdoalpXNWlRbVYzWWtkb2EyZ3daRWRrVldOcFprWm9NR0pUWjNwaE5XUjZZV0ZoVVdaelprWmxUMlJvWjJ4bGIyZERZekJsVm1GMllVVmpVbVJPWm5abFVtUXpaVTVtT0doQ1pGTmhTbUpSWkVOb2QyZFNaa3BuVm1GRFowMWpNR2hJWnpGamMyWjJZa0ZtWjJGTllUUm5RbVYzWVRsbFJXRlFZbFJtWjJSbFpsUmpSMlZ2WVZWbVRHY3lZbkJpYUdkTFlqTmhPV1oyWkZkbmEySmphR1JoU0doV1lsWm9VMlZrWTBkb2RHTTJaRmxtTUdnd1lYQmlRbU5GWjBWa1ZXZFhabE5pVFdWYVkwcG9SR2hqWWxGbVJHUnNZVUppYVdWa1kyaGtUbVZoWWtaa1IyUnNaMXBpV1dGdVowcGhkMkpqWkVWaGFHRkVaMU5pVm1kd1pERmxaV0ZGWm5OaWVXVk9ZVVJoZDJaaGFFaGlSV05LWkZsbFMyaHJaV05vUVdSa1pGSmlSV0ZUWldab01HWjBZbHBpUldJd1pHUmliMkZHWVZWaWFHTlJZMUppZUdkQ1ptMWlZMkZzWlZsbVZtSk1ZbFJsWTJOR1oySm9WbVZqYUZCa1IyZHJZVTVrYUdOR1kyaG9hR050WmtabFIyTmFaVzFqV1dkWVprSmpWbU5OWVd4a1RtVmpZMDVoZUdneGFGWm9WV1J1WWxKbmNtRmxhR3BoTldoRmFGcG5iV2hGWkZCalZXVm9aVUpuYTJkVWFFaGtXbVFyWmtGaFJXWjRhR0puWldaSFkzTmhVMmhFWWxWa01HSk9aa2RpYW1aWllUZGhVR1o2WkRWaVNXVlRaM2htTVdoVVptUm9VMlJPWldoalpHSXpZWEJvY0dSV1pURmlhMmhSYUVkalYyWm9aMlJuUW1KRVpUQmhVbVJYWlcxbE9XTmhaRmRuVW1ST2FFaGpZV05DWjFaaVNXSlZZa1ZsWTJOUloxcG1ibWRKWkVObVJtRlhabmhvTUdSVllsTm9UbU5hWjA1aFYyTnJhSE5oVFdKdVluUm1XR2RKWTJ0bFJXWnhZVWxrTUdWMFkzZG1WbVZYWlRsaVlXUlNZWGhsTUdSa1lsWmxWbVpLWXpCb1lXVXpabkJpT0dOVVoxTmtkMkZsWjFGaFVtZEdZVVZoVEdaUlpVMWlOR0prWm14aWNHaE1aRVpuVTJKT1ltTm1SV05yWTNOb1dXTlJZakZtYkdScFpHTmtibUpDWW5kblUyZEZaMDVrU21GWFlXNWxWbU0wWjFObmVXZFZaQzlpVUdkUllVbG5UR1JZWkdoamEyTTRZbU5rUldoalpYSmpWbUZHWlZWamRXSkZZV3BtT1dWSVpWSm1VbUZWYUU5aldXWnNaRUpsU0dSRllrZGxXbUY1WlZaaWFHSldZWEZrWTJKc1owWmxNMlZXWkRCb2IyUlhhRTVqUldWelkxZGtSMlpIWkZsa1ZXUmFhRzFuV21Wb1pHTmtSbWRXWW5ablYySnJZMk5rU0dGSVoxSmxUV1pJWTA5bmFXRm5ZWFZoUzJobllVbGxhMlZUWTNkaVpHaGlhRVZpUkdJNVpHMWhaR0Z1WlZwa1UyUlJhR2hsVm1nMFltUmphR05LWjB4aVIyZEZZazVvV21SWloyNWtTbVIzWkdOaVFtVnZaMGRvU0dkUllUaG5ibVZPWld0bGMyUnFZVmxvVldWT1pGaG9WMk5TWkVGa1dtRmhaVUZuZEdKR1lXSm5lR2RGWkZSalltTXdaMlJtZW1KRlpYaGhjR1I2WmxCaU1HaG9aMUZtVW1kNGFFSmhiV2hqWVd4bldXaFdZVTlpUkdkalkwWmpTV0ZuWVZWalJXaEdaR3BqZEdGMllWVm5hR2hCWW5aa1IyWkhaMXBtYTJOSlowaGtTbVJhWTJKa2VHaE9aVTlpUldGU1lUQm1ZMmRUWkZaak5XVnlaMlZuYldkT1owNW5ZV05yWm5Sb1UyTlhaM2hoZUdaUGFGUmtTR1phWkRKblZXTnJZMGxpVm1aalprTm5VV2hqWkVKb1FtVm9abVZtVjJGVFpGRmpibWRRWm1wa1RXaGpaME5pWjJGWmFGVm9aR1JZYUVGaVptRmxZek5rYjJFM1psaGliR0ZzWWt4bFRXSXlhR2RqVEdOU1pGZG5PR05TWWtWbE1tVTVZMGhsU1daV1psbGxWR1pRWWxWbFkyTkhhRlZuUTJGb2FGTm9UR2hFYUdOb1ZtWlJaRmRvVVdkcGFFRmxlbVJuYUVSa1FtRlZaVWxoZDJkTmFGWmtUV2RYWWt4bGJHaFZaekZtUTJGVVlWbGpLMkZLWTFSaU1HSldhRVpsTVdkb1oxQm5RV1JSWVhSa05tVkxaVVJpYzJSMlprRmxWMlJKWjJabVFXWXhZa3BvUTJkaVpsWm1aR1JqWTJSbGJHaEtaVU5qUm1KWVlXaGhNbVpVWkRCaVNXVlZaMkZpVm1oc1pXbGpZMlJ1WVVKbWQyWlRaMFZqYzJKaVpWWmxRMkZXWmpSbVZtZHVaMlJqTkdGaFlURmpOV0pXWms5aWFHZHNZMjlsUTJFd1pGWmhkbVZGWVZWaFJtTnVhRlJoZVdORlptUmlSbUZIWW1kblNXSlRaa1ZsU21WUFpFZGtWV2g0WTNsaFZtZG9ZMVppY1dObGFEQmpjR05rYUZab01HWndaa3hsV1dKSFkyeG1kR1ZOWkcxbldXZFZZVnBrYldOWlkyNW9TbVpTWVhObWMyUkVaR2RrTldWVFpGVm5NV2hXWW1GaVNXaEhhR1JuTm1oTmFGVm5SbUp4WlVGbloySmFabE5qVTJJd2FEVmlUV2hrWjI1b1dtUlRaRkZrYUdWV1lUWm9TV2N3WkVWaFQyUkhZMEpsUVdkT1prMWpSR0Z6WVhwaVNtZEZaSEJrV1dGWlpqRmxjR1F4YUdWb1JXaDBaak5rWldGdFpFVm1VbUZFWmtabE5XUmhZVkJpUldkSlprdG5TV05TWWtWa1ltTlBhREJqTldWNllsTmxSMkV4WW05b1JtTlZZbWhvVVdkU2FIaGxRbVp0WjJOa2FHUkNZMEZtU21KRVlVVm1SbUpRWVdobloyVkZaRVpuYVdkNFozQm5TR2g0WTJka09XVlFhRzFsV21adFpGbG9XR1ZDWmxaaVltZ3hZM0JsU0dkSVpGSmhNR1pDWWtGaVEyZ3hZM0poU1daVlpXeGhUbVZoWkd0bWMyZFFaMVZrYUdOQ1oydGlWR05JWkZwak1tUlZabXRuU21WRVpFOW1VMk5SWmxOaVNHWjRabWhuWldKWGFGTmhkMlV6WkVwaE0yTkJZemxqUTJkblkyTmlUMmRpWkZKaWEyUmFaRXBrVkdoelpuZGhXR0l3WjJka1dtUkJabXRtU1daTVpWSm9WMkU0WVZKb1JXSXlZVGxpU0dKallYaG5UbWRJWVdGb1FtRlZZMkZtUm1GU1pFNW1SbUZPWTBSbmVHUlhZMGhtVldGQ1pubG1WV1JZYUdSaVdHUlRaV2hvV21Od1pGbGxVbVZaWWxsb1dtSm9aVkpuYldSYVkyMWhhMkZyWlZkbWVHRkJZMnhvUm1Rd1lqbG5VMkpCWTFKb01HWk1ZMFptU0dGd2FDdGpWR1ZVWkVaaGFHZEVhREZsU1doUlpWcG9SV2Q0WlRKaFpHRnNaa3BuUTJkR1kxaGhhR2N5YUVWbWEyWnpaRmxvVVdKNVoxbGlaR0pKWTJsblNXSXZZa2hpUVdOM1pqSm1TbUZYWlRsa05HTlFZMnBpTkdJd1pWQmxWV2c0WkRSa1VXWnJaWE5sY0dGVlptdG9jMmd2WkZGaU1XaDNaVGRrUTJaRFoyUmxTMlpHYUhsbk1HaGFhRmxtYkdSQ1lraG9SV1ZIWkZwbmVXRldaMmhuVm1keFlXTmpiR2RHWmpObFZtZ3dabTlqVjJWaFpGZGlSbUZSYUZabmVXTnJaMDlsV21ScFkwRmxNR1pRWjJoaldXYzNZVVZvZDJWb2FGUmxTR1JXWWpGa1ltSmtaMFJrUW1KUmFGbG5NR014WVhGb1UyWjNaemxoVTJWRlprZGlVbU5OWW1Sb2JtSmFhRk5rVVdOb1oxWmhOR05rWkdoalNtSk1ZVk5uWjJKWlpVNW9UbVY1WjBGbksyRmpZVVpqZUdWU1lsVm5ibU5DWXpGbFpXUkZaSFJqTTJobFltMWpiR2RZYUZkbVVtZEJZMXBsWVdSQlluUmtSbWRpWjNobVJXWlVaRTFoYTJaMFpscGxSV1V3WldSb2IyaEdabFZqYUdkUllWSm5lR05DWW0xalkyZHNZVmxvVm1SaFptNW9TV05OWkdabGJHVjBZMmRqUm1kdFpteGhhR0ZHWm1oaGFHRnRZVVptUjJOYVlXMWlXV1pZWkVKblZtTmlZekZqY0daVVlVUmplR014WlVsb1ZHY3laR3htY21aTVptMWtNR2hNWlVwaVVXUlJZVWhuVjJoNFlVSmhhV2hUWTJ4bmVHSXlZbFZpYTJoSloxWmhaV1JJWkZsb1UyUlRaSGhuYUdWRWFGZG5WMlZLWVhsb1kySklZVUpsU1dGUlpGRm1PR1pRWjA5aWVtVnpaMlppVUdKcWFGVm1ibWRXWkZabWEyWk9aVUpsUjJWb1ptWm5TR1ZFWXpsblZXSllZa05sYkdaSVprcGhlR1V3WWxWaVVHRldhR05vU21oQlpXaG5WbVpTWjFCaE0yTktZbEZqUldJd1lrSmllV0ZWWlZoblpHaFlaRk5uYUdWYVlYQmtXV05TWWxsaVdXZGFhR2hqVW1WdFpscG5iV0ZHWVhkalVtTlhaamxvU0dKWFlXZG1RV2RrWlVGbFZtUjNabTVpVUdacWFHZGthV2hJWW5wbVoyRkxhRlpuYkdOdllrSm5ZV05GWlhobmJtVm1ZakZtZDJSQmFGUm9RMkozWkhwaVptVm5hRFZuVjJSQ1pVRmpNR1J4WVZkalNHWkNaWGRvVTJORmFFNWtTbVJYWkc1b1ZtUTBaVk5vTTJSa1pqWm1ZV2RXYURWaVEyWlBaMmhrYkdOdllrTm1NR0pXYUhaaFJXVlNZazVpZG1SU1pUTm9UbUpQWjFKbWVXZDBhRlZvU0daQ1owMWlVR0ZGWWtkb05HVm5hRmhuZUdWVlpIaGhWMkZHWkVaaE0yTldhREJtYjJGWFpHRmxWMk5GWmxkaVIyaEhZbGxvVldSYVpXcGlVV1ZyWWtwbVFXaEJaRGxsUm1KRlpXTm5ZMkpFWVVWa05XZzBZMlJoUjJkMFlUWmlXV1F3WVRGb2NXZFRaM2RrT1dGVGFFVm9SR1JzWTIxalpHRnVhRnBoVTJaUlltaG5WbUkwWjJSbmFHUkpaMWRrVFdOcllVNW1XbWhaYUc1bVNtVjNhR05rUldWb1kwUmxSR2QzWWpoa04yZFBhSGhqT0dnclowNWpVMlprWmxoaFJtVm9aMmRvVVdaaFowWmxRbVYyWldKaWVHaEZZbFJrWW1nd1pHUm9lbUpGWkRCaVpHSnZZMFprVW1odlpsWm9SV0V3WkZWbk1HSlFZMFpuV21KaVlWcG1RV0ZaWTI5b1FtZDZZa2xqZFdoaFoxRm9aMk5VWVZwblNHUnJaR1pvWVdoNFpsVmpWR1pGWTFGb1FXVTJhRWhpVTJnMVkwaGlRV1JvYURGaVNHWlJaekptUW1NNFoySm5ibVIwWVdWa1ptTkdZVGhsV1dSVmFHZGljR1JyWjFoalYyUmFZV2hsVVdkV2FGVmpRbVJoWkZkaE5HZEJabGRsUVdoT1kzQmpWMmhYWTBwamVXTmphRWhtUW1kSlpsRmlNR1ZyWmtoa1dHUXpZV2huVEdoa2FETmpjR0p3WVZab01XRnJaMUZqV0dGNll6RmhSbUpDYUdwamRHVlpaVmhoUTJSR1pFaG1UMlI0WW5ObVZHVmFaMEpqVldoaFlWZG9WV1JrWTB4bFZHaElZVXBtVjJSR1pWZGljR2g1WmxWa1dHRmtZVmhtVTJOb1psbGpaMk5LWW5obFdXZFJaa3RsVW1ONFpIWmtXbUZ1WnpGa2QyWkNZekpsV21kaFlrVmxNV0pXWlZCalIyaG5ZVlppTUdKS1oxUmhPR2N3WjFSalVtRm5aa3RvVVdoU1pWWmlWbVZCWmxKbE5HRnJaVTlrVVdWQ1lVdG9SbWQ0WjBWaU5HUlNZMEZrY0daVmFFTm1hR2d4WVdsaVNtSnBaR3RpWjJORVlsRmxaR0ZLYUVkbGVXTmpZWEZqUTJKcFpqVmtObVpLWkZKa1NXRllaRlprTUdFd1pXZGlRMlZWWkhobU1HaFBaSGhqVG1OMmFGSm1NMk5OWjFSa1VtUXlZbWRpVm1KVFlrWmpRV1pXWkZabVZHSkpZVzVpUW1GR1kzUm9jV0psWW01bGRHWXpaVlprTUdWdlpGZG1ZV0ZYWkVWbFYySkhaMGRsV1dKVllscGpiV05aWW5aaFptaHBaRVZvVjJKTFoybG9TbUkxWTFsaWFtZFJaV2RsUW1WblpHOW9SR1pJWlVSaU5HRm1ZMDloTTJVNFlqbGxXV05vWTBKaGJXaGtZMjVuV21aVFpsRmphR0ZXWmpSb1pHZG9hRXBqVEdkSFkwVmtUbVJhWVZsb2JtZEtaWFpsWTJORlpFSm5UR05JWkZabmNHaHZaV1ZsUVdkVllYbGxUR1JYWm10aWFXTkZhRVptTldOT2FHTm5SMk52Wmxob1VHVldhRUptUzJOYWFIaGtWbWMyWlVkbmEyVjBZVzlvU0dSU2FIaG9aV2hQYUVkaU9HRXlaRWxvUW1Gc1pFSm1TbWRSWmpCaGRXSmtaekJsY0daTGFGZGlSMkpqWlhoblVtZEdZV05oZVdGWFlYcGpTV0V2WVUxb1ZHRldZbU5sV21GdVpVSmlTR0ZJWWxKak1XTldZVlZuYm1KU1kzSmxaV0p0YUU1bFRtSmhhR3RpYzJGUVpWVmlaMlZ3Wld0blVtUkVZMmRtYW1WSVpXZGlOR0pXWlZwbFYyWnpZVkJqVTJnd1ozaGtSR05ZWlRKa1VtTjVhR1ZtUTJOU1prbG1XR05yYUd0bFZXSk5Za05uT1dKTVprOWxXR1pKWkRkbVdHUnNaa0ZuWTJSSGFGZG1RbVZtWjFObGVXVk9aRlZqV0dWVFpXZG5WR1pQWW5oaFRtUmhaMkZvUldGa1kwSm1WMk5WWW5OaE5tUmFhRzVqU21aWFpVWm5WMk53WW5sbVZXaFlaV1JsV0dKVFltaGxXbVJ3YUU1a1ZHSjNaMWxoV21kb1psSmpiV2hhWW0xbFJtaDNaVlpuVjJnNVlXRmxWR0ZuWmxsbU0yRldaRlppU21nd1kyRmlNMlZ3WkdwbFZHUlhhRzlpVjJoS1lsWmpTV05SWmxwb1JXWjRaakppWkdWc1pVcGpRMmhWWTNsak1HUTBaRlZvVW1nNVlsSm1SR0pDWjJSamFXVlFaa2hpWjJkclpsSmxSV1ZOWm1KaVZtUnVabFZoZUdSUmFHNW1ZMmhvWlZGaU1XSmtaMXBrUldkQ1lteGpiMlJEWnpCb1ZtVjJZVVZvVW1GTlkyMWlRV05ZWmsxaFltVlNZbTFrUW1WaVpsSm9hV1JSWXl0bldXSkJaMDFqVjJoTFoxaG9VV2RaWVVGbFJHVkJZazltUzJORVpXeGxhbVZIWkZKb1JtUTFaMkZpYUdkSllsVmxUMlZxWVhCbmFHSkthRUpqTUdWdFlrTmhWV1JrWVZWaVZXSjNZbGxrUjJaT1lWTmhWV1UxWlVwb1oyVkpaM05sVTJJd1lVWm5ZbWhIYUZWbE5XSk5aV1JuYm1aYVlWTm9VV1pvWkZaaU5HVmthR2hqU21OTVprZGhSV05OYUV4b1NtVjVZMWxsYkdSSmFHZG1XbWRFWVVKbmVHUTRaR2xtWldWQloxWm1MMmRNWVcxbFZtWllaME5oZUdKM1pGcGlTV0ZSWWtwalpXTlNaVkpsUldSVVpHSmpNR2RrWW5waFJXRXdaR1JvYjJSR1psVm5aMlphWlVGalVtWkNZblZqWTJkQ1oyaGtRV1pLWW5wbFFXRlZaa3BrVm1GV1lVdG1RMmd6WWxKamFHSlJZMnRqUldJeWFGVmtVMmhyYUdkbldXTlRaMUptWTJOaVozZGxSbWgwWlVoa1VtWXhZbFprVldKdWFGSmhjbUpsYUcxb1RtUk9aR0ZuYTJWelkxQm1SMkl4YUZwaGEyVlNhRWhoVVdWc1pVSmhhR0ZDWTJOaFRtWnFhRVZsVVdOVGFIZGpWbWhsWVZkblZHaFpZWEprU1dkRVoxVm1TR1JDWmxWbWEyTkpZV1pqUm1WS1pFeG1aR2d6WjNCa2NHWldaakZpYTJSUmFFZGtWMkpuWWt4bVVtTlhZVGhuVW1aRmFIcGpjMmRRWWtsbVZtRjNZbEZrWVdSR1puTmhUbWhDWmpCb1pHY3hZazVuUTJoQllscGhVbWd5WkVwbFdXRlZaMWhqWkdaWVpsTmthR2hhWkhCbldXZFNaVmxsV1dkYVlXaGxVbWh0WVZwamJXZEdZM2RqVm1KWFlqQmplbWRCWWxKaE1XZFpZVWRsZUdoRlpEZGlUR2g2WWsxbGRHZERZbTFoYjJSRFoxaG9SbUZLWWtSbVRtSkJabXRoTVdkUVpYaG1VV1ZNWlZWaFJHSjRaakpqVW1GblprNWxaR05FWkZaaGEyZ3lZVTlsYW1SV1pYZGtSR1puWTI5bVltUkRZbE5sUm1RMFowTmlhV2RWWnpsa1VHUkNaRzlqWTJOWWFHdGxNV1Z2WTFKb2FHWkJaRGhuVW1aU1prMWhkR1ZCWVc1aVRtWlRZbEpuZW1OMFpVSmtSMkpvWVd0bVNtRldZekpsVW1KWmFGWm9hR2hXWm5GaVkyVnNaa1poTTJWV1lUQm5iMmhYWW1GaVYySkZaRmRsUjJkSGFGbGhaR1JtWlZWa2VHaG9ZV05sUm1WV1pYWm5WMkZyWkdOaFpHVklaRlppVm1kVFoyUmpSMmR6WTI5bFNtaG9ZV3RuTDJKSGFGVmtSbVZUWWxaaGJXaDNZbGxtVUdGcVpEaGlRbWhVWVdobFZXZHpZbVprZDJGc2FHaGxSMlpGYUU1aldtSlpaVzVtU21OM1kyTmhSV1pvWkVSalUyUlJaMlJrWm1KbFpVVmpkR016WkdWbGJXRnNaRmhtVjJaU1lrRmpXbU5oWVVaaWEySkJaazlsTUdoU1pFSmtTV1ZWYUdOa1oyUkhZbmhuVFdWblpsaG1RbWQwWW1OalVtRXdZbEpuY1dWalkyZGlVV05hWldGbWFtUjBhRmxrWW1SSVpURmxTMmRHWjIxb2JHSm9Za1psYUdGb1oyMWlSbVpFWVhSbVRXUlpZMWhvUW1aV1pXSmtNV1Z3WTBobFNHTlNhREJoVkdKQ1ozcG9iMk52WTB4a2FXTnZaRU5uU21oRlpIUm5ZMk5YWjJ0alVtWnZZMVJpUTJGU1pUWmtWV2RuWlhObldtVmxZMFJuVFdkaVpWTmtNR0pPWm5CaVYyTlhaa3BsZVdoallVaG5RbU5KWmxGbk1HVnNabUZoWkdOVVprVm9UbU5rWWpOblNtWnlaMGRqVVdkNFpHUmtWMmg1WmpGbVdtUlNZVEppT0doTmFFUmtiV1U0WVZSalMyVnJaVTFvUTJaS1lqRmpUbUZKWWtGbGEyUTBaVFpsV21kdVlVcG1WMmhHWlZka2NHaDVaVlZrV0dKa1oxaGxVMk5vWlZwb2NHSk9ZbFpuTldkTFkwdG9WV2RPWW0xb1MyTkRZVkZuYm1SV1oxSm9jMmhFWmtabk1XTm9aalJtUW1GM1lVRm1OMlpQYUZob1NtVnJaRlJsZW1GM1pFdG5VV0YzWTJSa1ZtTmFhR3RpZDJJellVcGhRbVJWYUZoaVYyUkVaREJqTkdkU1kydG9kR1pXWkVaaFoyVnZZVEppWTJocVpqUmlMMlJJWTBWblRXSk1aRWhoTTJoVlpEVmpVMko2WVd0aGRtSktZa0ptVldSalpGRmphR2MxWVdoaVJXUkhaemxqZG1WRlpGSm9UbVYyWTFKb00yWk5hRlJuVW1jeVptZG1WbUpIWW1oaVZXVlVhRkprVkdWUllUaGhWbVJvWW1Oa0wyWlFaa0psVldWNVowVmpVV0pPWmxsb1RHaERaRlZpVldOSFkwZGpZMk5LWlZwbGFtWkpaRFJsU1dSQ1lrRmxaMlpJYUVWaVpHYzRabFJoZDJkaloxUmlUR1JSWjJ0bWRtSktaRkZtYzJkMlowZG5VV1k1WmxWb1JtUnRaVkZpWldKa1oycG1PR2hqWjBWa1ZXTkZhRFZpVDJOR1owVmlUMmhXWjNkbVZtVmFZMEZvZVdkQmFHbGhUV1ZTWjBWamFHTklaVUprZDJKNlpWQmxVbWRzWjJSblpXZHRZbXhoV0dGWFpsSm9RV1JhWm1GbVFXZDBaa1pvWW1oNFowVmxWR1pqWlVWalkyZHFaRWRuZUdKT1lXdG5SbWhTWW5Ca1kyTlNZakZtYkdOeFpHTm5hR2hOWTJObVVXTklaVXBuVW1aa1pqRmlaR2RMWkVaaWJXTnNabWhoUm1ob1kyaGtiV2hHWWtoaWVHaHRhRmxoZVdKTlkwSmpVR2hTWVUxblNtaFhhR2hsT1dSV1lsUmhNbVJzWm5Ka1RHRnFZMjlsWkdSTVluZG1VbWhLYUZWbmEyVkthRTluVkdGSVkxcGpNbVZWWm10aVNXaFdaV1ZqU0dKWlpWTmhVMko0WVdobVJHWlNaMjFoU1dVclptVmlRMmRTYUVWbVVXWjRZblJuVjJaa1psUmtSbUpEYUZoaldHWndZWEJqVm1VeFoydGlVV05IWmxkaVoyRk1abEppVjJFNGFGSm1SV2N6WVZabVNHWlFhR2hsYzJOVVlWcGlRbUZWWkdGb1YyVldaSGRoTm1WYVpHNWpTbWRYWTBaaFYyTndZWGxsVldSWVpHTmlTMlpaWkVKbldtSndabGxqVW1KWllsbGhXbWRvWTFKbmJXUkpaa1JsVVdnclprWmthbVZ6YUZSbVEyRkdaazFqWkdkR1prWmpiMlJuWTFsaWJtUnZaelJuV21JeWFIQmhUR2hFYURGbVNXVlJZMXBoUldKNFpUSm1aR1JzWkVsb1RHVlZZak5uYUdFcllrVm9RV0pXWkU1a1JHWm9hSE5oYm1KSlpVaG1TbVIzWkZObFZtTTFhRXBpUkdacFkzZGliMlJFWVdwbVoyUTRZMkZuVVdaT1lWRmpUMlJvWjJ4b2IyWkRaakJqVm1oMllrVm1VbWhPWkhabFVtVXpaazFuVkdOU1pucGtlR05rWjBkaWFHRTRZMUZqUldaRFltZG5NMkpCWWxKalZXaGxZa3RvZDJKRmFIbG9UV1ZvWldob1JXRktZMnBqVFdGbFpraGhNbUZTWlVoalRHSjZaWGRoYTJkaloyeG1WV04xWTBOalFXRkNZVWxrVldKQ1kwRmhZMkpKWWtkaWMyRXpZVTVvYUdjMFpDdGhVMlV3YURCbldHSkZZa05uVm1WTlowOW9RMmhOYUdaa1FXSkdaMEZqY1dSaloxSm1kR0ZSWTAxbGEyZE9abHBvV1dodWFFcGtkMmRqWTBWbWFHaEVabE5rVm1odmFEaGlVR2hyWTNSaUwySmhZbTFoYkdaS1oxZGhWV2RSWmxGbFVXVm5aM1JqUm1oaVlYaGhSV2hVWTJKbE1HUmtaM3BqUldFd1lXUmxiMk5HWkZKaWQyUlpZMFpvVm1jNFpYaGhZMmRvWW1obVVXUlFZbGhtU1dacVowNW1hR2hyYUU1alZXTjNhSGRtZW1SU1pFWmxZMmN3WWtob1IyVkdZMnRpVFdKcVkydGxVR1pMWjJ4bGFHZElaVmhoUldRNFlWTm9RbU42Wkd0bGRXTk9aVVJuWkdST1kwcG5lR0UxWkdObFFtTm9aMEZoY1dGQlpYbG5TbUV5YUVWbFFXRmpaMVpoVG1ScVlrNWpWbVZEWm10b2QyaExaMFJuZVdKa2FERmxaV1ZYYUhSamFXWlJaVEJsYkdWaFptUmhXR0pvWjB4aVpHRXpabTltTUdabVlWWmlhMk5SWWtkbFYySm5aVXhsVW1WWFlUaG1VbU5XWlZSaWIyZEtaVTFvUldoalkwOW1TbVV4Wm5SaFNXVkNZVlZqT1dkRlkyRmlibVpKWTBWaFIyaFhZMjlvTjJSWVlWaGxZMkpUWTFGamVHUlpZM2xtVTJSNFkxbGxXV1phWW1oa1VtRnRZbHBrYldKR1luZGlWbVZYWWpobVNXZEJaR3RqYkdoSlpFSmtlR0Y0WkRCbFdXY3hhRUpoYW1kVVpGZGpjR2RNWlVSaU1XSkpZVkZuV21WRlpuaG1NbUprWld4aFNXWkVaVWhqVTJad1p5OWxTR2h0WlVWaldXUlJaVEZtYkdocFptTm9ibUpDWm5kbVUyVkZaMDVqU21GWFltNWtWbUZ2WWxOaE1taHNaVzVtWVdoUlpGWm9lbVZGWlVKaWJHRnZZVU5vTUdSV1luWmpSV0pTWlU1aGRtSlNaak5sVFdaVWFGSm5NbUZuWkV0aVUySkNaMmhoVUdaU1kwZGhjR1I1WlVKbVFtUjRhRUZsWTJkc1lVWmxNMkZXWVRCaWIyTlhabUZqVjJGRllWZGpSMlJIWVZsaFZXVmFZVzFpV21NM1pXTm1RV2hOYUdka1JXUjNaMDFqWkdKRWFGWmtWbWhVWjJGb1dHaGFZelprUzJWdGFHUm5jV05UWkhkbE9XaFRaVVZoUjJoU1pVMW5aR1p1YUZwa1UyaFJhR2hvVm1RMGFHUmtaMkV4YUV4alIyVm9Za0ZuVG1oTllVUmxjMk1yWms1bE1HSndZVVJpVm1aRlltUmxNV05NWTBKa1NXWnVabEJvZVdOWlpsSmtWMlZXWTFWb2VtRmhZa0ZuZEdKR1pHSm5lR2RGWjFSbFltZ3dhR1JsZW1ORllUQmlaR0p2WTBablZXZG9ZbEZsVW1GM1l6bGxiV1ZQWld4bE5XZENaMXBsYm1KSlpVUm1abUpzYUd0aVRXZFlhSGxsVldGMFowaG5iR1ZHWTNGalJtUkRZVTVpZG1SVFlUTm9RbVpXWjJKbk1XSndaMGhtU0daU2FERmlWbVJWWW01a1VtWnlaMlZoYldaT1owNWxZV0ZyWlhObFZtWlZZMnhpYUdGellrZGlTR0p3WnpKa1FXSkZaWE5rWW1KUVoycGtPV1psWmtKbGVHaEJZMHRsVldkRlltaG1lV1ZqWWtobFFtUkpaRkZtTUdoc1lXRmpaR2RZWTJobFRHSmtZVE5oY0dGd1kxWm5NR2hOWVZGblZXSlhZVUpvWm1aVFlsZGxPV2hFWTBka2EyVldhRWhoWTJKNFkwNW9TR05oWlVKb1ZtRkpZMVZpUldKamFGRmxZbVV5YUd4ak9HVkdabGRrY0dGNVpGVmtXR1prWjFobFUyUm9aMWxoTUdoVFpIaG1XV0paWTFwaGFHWlNhRzFqV21GdFpFWmxkMmRGWjNwaWIyWlZaMEpuUldWc2FGVm5SMmRvWVhoaE1HVk1hRmhpU1dVelpGRmxWMkZ2WkZwblFtRnNaMHBqVEdGVVlXdGxlR0V5YUdSbWJHTktZa05pUm1aWVltaGhNbVZGWld0amRHWlNaMEprVm1Sc1puRm5aV1pxWVVab05HUkhabXRqY0dOR1kxZGhibVF3Wm5ObFUySXlhSEJsTm1oSloxWmpPR1pPWmtoaVFtUnNZVFJvUTJJeFkzUmhkbWhSWlhobVRtUjNaMUprTW1GTlpsUmhXR05YWm1kblJtUlRZMEZuZUdWSVkxTm9WMk0wWjJka1dHVjRZbmhtYW1abVpHeGpSbVF5WmtkbFZXaFNaV2xpUldGQ1lVWmhlbWhtWVVKa2JHZ3hZa1prUW1WUlkwRmtRMlZUWVc5aFkyWk1ZWHBvWkdaMGFHTm5hV1JqWTIxa1ptWlhaMHBpVVdGWlpUQm9NV054WWxObmQyWTVhRk5tUldoSFkxSmpUV05rWm01bldtaFRZVUpoUm1admFIRm9aR1ZvWTI5blpHWlhZVkprUm1OYVkwdG5NMmhLWW5SalkyUkdZV2hsV1daVGFGRmthR0V4WVZwamEyRnpaaXRtV1dOWFoyeGxZMlZWWkd4bGEyRlJZV0ZtUm1jNFp5dGtTbVJ0WjNkaVZHWmpaV3RsWkdScVpVTmhSMll4WW05alJtRlZaMmhpVVdOU1pIaGtRbU50Wm1OaWJHSlpaVlptVDJaRWFHTmpSbVJKYUdka1ZXRkZZa1prYW1jeGFEWm9VR1JDWVdobWJXZEdaRWRtV21KdGFGbG5XR05DWTFab1RXSnVaa0prU0dSSVpWSm5NV0ZXWWxWa2JtSlNaWEppWldWcGFGVmtXV05LWVVGa2FHVmlaVWRvTVdJNGFIRmlWR1JFYUhCb0syZENaV3RpTkdWV1pVdG9ibWh2WWxOblFXZG9ZMFprUkdkQlltdGxhR041WW1OalNHTkNaMGxvVVdnd2FHeGtZV0ZrWlZobmFHTk1hRkJoYW1oNFozQmpXR1F6YUUxaVVXZEhhRmRqWjJoTVoxSmlWMkU0YUZKaFJXSXlaamxsU0dSallYaGlUbVZRWjFsbVFtSmpabUpqUW1KQ1pWWm9XbVZMWmtSa1ZtRlZaRVprVjJOMFpIWmhWV1pUWVUxblQySkhhR3htVFdodFkwcGplR0ZhWWxKbldtaHJaR2RsTm1oYVptMW5UbVY1WkZabVdHUktZa2htVjJob1lURmxWV0pZWTBaalNtaDVaV0prV0dkd2FISmxRbWhIWm5Cb1YyRkVaREZvUW1SR1pVMWxRV1J3WlhWblpHUkdZblJvVDJSUVlUTmphR2N5WWtWaWEyRnpaRmxsVVdVeFlXeGphV2hqWjI1bVFtaDNaVk5rUldkSlowaGxWbUpFYUhkbGNtTk1aV3BtYTJRMVpFcGphR2hOWTFGbVdHSnNZVFZqWjJKUllXdGhlR1Z0WlU5aWVHRk9aWFpvVW1jellrMWxWR1pTWlRKa1oyUldabE5tUm1KQ2FFOWhUMmR0WTFwamVXTldaV2hqVm1oeFkyTmpiR1ZHWmpObVZtZ3dabTlpVjJGaGFGUm9WbUpsWWxOb2FXVnNhRVJuV21ocFltZG1hMmhLWXpGb1ZXSmlZMEZoZUdka1oxbGpaV2hCWTJOalFXZFBZbnBvYkdkNVpGcG1SV1U0WlhabFFtVlZZWGRrWkdoV1lVTmtNR1ZEWmsxaVdHRlNaVk5tUkdJd1pVRmxjbU5KWVdoa1NXVktaMWhoVldOTmFGbGhXV1JwWmxGbGVHTlFaMEZqUldSSVpGTm5VV2hyWTJob1MyVm5Za2xvTldkUVpWZG9hMlpUWWtabU1XVk9abGRrVEdoRlowbGxUR0pMWWtKbVdXRmhaV1JsUjJZeFlYcGpSV0l3WW1SbGIyUkdZMVZrYUdkUlpsSmplR0pDWlcxaFNtRkNZMlJsU0dOaFltcGpaR0pTWm1GaWJHSmthR0ZrUm1GcVpGWmphR05WWVdoa1FXSXdZa2RsUjJkWmFIWmlZV0ZIWjNSakwyUmlZVEZtY0dOSVpraG5VbU14WTFab1ZXaHVhRkpsY21KbFkycGlaR0ZPWldSaE1HSjBaRWhqVjJScloxSm9iMk5VWjBSblRtUXZZVk5pVjJWbllWWmtaV1ZJWTFsalUySlRaSGhtYUdSRVpWZG5WMk5LWTNsa1NtUnFaa1ZtWVdoUlpIZGhXbVJoWldGaVNHVm5ZMlpoWldaVFlUQmpOMk5JWkdkaU1XTldaVVZvVkdadlpVaGxVbVZUWWxsa1dXSkRZa1ZqVm1WSVpXTm5lR1JPWTBobVlXUkNZMVpuU1dGVllVVmhZMkpSYUU1bVJHaGpaVU5pVVdoRVptZGpPR1ZWWjFSbmFHaFlaRk5vZDJGMFlqQmxXV2RXWlUxaVdXVlpaMEpuU21KdFlXSmphbU5XWTNkalUyVkhZemhtVDJWVFpsVmtOV0ZTYUVobVFtVkZZM2hoV1dJeVpYQm5kbWhVWlZOb1ZtUkRhRUpqYkdFMGFGRm5UV2hHWTJSb1kyWmtZbXhuU21oRFprWmpXR2RvWkRKalJXRnJaM1JtUm1GaGFGWmpiR0ZwWVdObmJtSkNabmRsVTJWRlprNWpTbWhJWWtOb1FXRXlaRU5rUTJaTmFIcGpTbU5vYUd4bVdtRlZaSGhtUldFNFowSm9NR1ZWWlRsbVIyUkNhRTFoTUdaaVoxaG1UV0pVWVZKb01tRm5ZMVpsVTJkR1pFSmpTR0pGWTBkbldXTnJZMFppTUdSa1pYRm9UMmd4YUVaaGNXUldaM2hsWjJWWlprcG9VMmRTWjFsb1dHZDZZa3BpWTJSYWFHNWpjR1JvWVZsa1JtVldaM2RuVjJWc1ltTmpaR2RDWlRGbVZtWkRZMlJvUkdWa1lUWm5UMmRyWVZWaE5HZFNaMVZvVFdOWVlsaG5hV1pOWmxsaFVHRnVZemxqU21kaFlrSm9WbVUwWkdSaGFHWktaRXhoUjJaRlprNWhXbWRaWjI1a1NXSnJabU5sUm1kV2FFUmhRV2RXWVVsaGFHaGtaVVZoYzJjclpXTm5NMkZLWVRsalYyZFNZMEZvV21KaFowRmpkR1ZHWjJKaWVHUkZZMVJqWW1WM1lrVm9PR2hSWWxWalpHSm5ZMUZqZDJkclpVTmhVbWd4WjFabWJXRmlaekZtV1daR2FHTm9XR1JKWmxsbFpHRXdZV3hvUzJSVllqTm9TbVJvWTFWamVHWm9aWFJrUTJKWFpWcGtNMkZoWTBob1FXSkNZVVppUW1ZNFpUWmtTR0ZSWjBKbVZtVlJZa2RsUm1nclpHVmhiV0pXWkU1a1QyRkVaRUptUzJGTVozZGxkR2RQWmxSaFNHSmFZekpuVldWclkwbGxWbWhsWmtobldXaFRaRk5pTUdGdllrZGxSR2hVWTJObloySlFabTVuUVdkalpsZG9SMmhPWm1GaVpHaFlaMmhoVEdaa1l6TmhjR1J3WjFaaGQySlJaRFpsUjJOWFkyZG1UR05TWlZkb09HZFNaMFZrTW1jNFlVSmpTbWRzWnpCblJXVlFZMFprZDJWSWFFaGthMmhrWlVGaVltaHBZVnBuWVdkR1pWUm1hR2NyWjFWalZHUTFaMkpqVTJac1pFNW9aMmRaWlZWbU1HVjVaMXBpYUdOU1lXMWtXbWh0WTBaa2QyRldZMWRpT1dWaGFGSmpNV0ZTWldKb1ZtTldZM0JvT0dSUFoxaGpVV1pvWVVabVJHTTBZMDlqV1dGNFpHUmhaV1pKWkhobFoySXJZV1ZrYkdWS1kxTmhSbVJYWlZwa01tSlhZVEJoZEdORlpFaGxNV0ZyWW5ka1ptZEVZa2xrY0doSWFFRmxXV0pzWTBobGVtSnphQzltU0dONll6bGhObU5rWWxaa1kyRlJhRWRpVW1aQ1pFTm1RMk13YUZaaGRtRkZZVkpuVG1oMlkxSm9NMlpOWmxSbFVtSXlZbWRsVm1GSVprSmhaMkpXYUZob2VtUkdaSGxuUjJWR1pFRmpPV1pqWVdsbVRXY3lZa2RpVVdNeFlWUmxSR2RFWVU1a1JXUldhSHBtVVdSamFGcGlSMmRGWTNWbFRtRm9ZMDFqT0dKSVpIaG9UV1ZoWjBoaVVtUjNaVUpoWkdWRFkxRmtkbVJPWlRCaE1HZHNaVVJoVVdVNFpsRmxXR1o2WTBWaFEyaE5hR2xvVm1GUmFGTm1kMkkxYUZOb1pHUm9Za3BrVEdGSFpFVm9UbUphWjFsaGJtSktaWGRpWTJKQmFFVm1SbU5UWlZablNXTnVaMlJtWjJSclpIVmhUR0pwWjNkbE4yWklZMFppTldSbFpWQmlSV1pPWkVabFkyUjRZVVpvWVdOaVpEQm5lR2g2WmtkbGQyVktabTltVTJKU1pGSmtVV1pXWW5obWJHRjJZbGRpUm1SWmFGWmhZV0p1WjBwa1VtTmtaVEZsWkdaTFowWmliV0pzWkdoblJtRnJaSGRvZFdkU1pXbGhhMko0WjFsa1ZHUTBaRkZqVDJaR1kyOWxNV1pZWTBaaFRXSlRZMFpvZUdKRllUVmlTMkZEWW5kaVptaFphR3RsYTJKSllraGtiR0ZWWW5Gb1EyWjVaa2xuSzJKV1pWVmpTbWhqWjB0bk0ySmFZbVJvU0dWclpYaG5SR05HYUdsbVVtUjVZMDFvYW1RNFlXUmxSR05SWVRCbFNtWmthRE5vUm1OUllsaG9XR1J3WVhCalZtSXhaR3RrVVdSSFoxZGpaMmhNWkZKaVYyYzVZVVJrVm1KcVpuTm1VMlJKWlZaa01XUklabGxoUkdFNVpFbGpWV1pGWm1Oa1VXVmFabTVrU21WWFpFWmxWMkZ3WVhsbFZXTllZMlJsWm1kSFpVSmxXbWN3YUZObWVHaFpZbGxuV21ab1psSmtiV05hWVcxblJtVjNZbFpoVjJjNVkyRmtVbWg0WlRCaVpHWkJabmhoTUdNNVoweGlNMlJ3WW5wblZHTllZbVJuVjJKRlpHeGtTbVphWjFwaVJXSndabmRoWkdKblpWRm9UbU5ZWkVSaGVHZ3laMEZrYTJOelpFWm5XR2RyWlZKaWFXVk9ZVEZuY0dOM1lWTm1SV2hPYUVwb1YySnVZbFprTkdOVFlUTmxaR2cyWVdGa1ZtUmtaMXBvUldoQ1lXeGliMkZHWlVWbVZXRm9abFpqUldSU1pIWm1UV0pxWW5CblpHaEZZek5sUW1Nd1kwZGlaMk5KWTBkbFUyaFhZVFJsWjJoWVpIcGxPV1Z4WW1OaGJHSkdZVE5oVm1Zd1ltOWtWMlpoWVZkalJXRlhaVWRuUjJaWloxVmlXbWR0WjFwb2FHZGhaR3hpVldFMVkwWmtVV2cxWTFwa1NHTlZZMVppVTJOaFkxaG1XbVZ1WVZsbmQyaG9ZMEZrVTJKM1l6bGlVMlJGYUVkaFVtaE5ZbVJsYm1KYVpWTmtVV1ZvWjFaak5HZGtZMmhsU21KTVprZG5SbWQ0WlZwaFRHUkVaMk5oYm1kallVUmhNR0pMWjBKaGQyZzFhSFJrUjJSU1ptdGxiR05QYUhwblFtWm1ZME5qZUdoM1oxcGhTV1pSWmtwbmRtUmlZM2huUldaVVltSmxNR0prWkhwblJXWXdaV1JvYjJKR2FGVmphR0ZSWTFKbmVHVkNZbTFqWTJkclpuZGlWbVZLWkVSbFkyRkhZV1JvZVdGSllrUmxWMlZFWVRGak5XSmtZVEJtYjJjd1psWmtWR0k1WVhWa1RXSXpZbmhpVm1aS2FHeGpXbUpJWlZkb1FtZFNZbU5pV0dOc2FEVm9jbWhsWlcxalRtUk9aR0ZtYTJKelkxQmhWV1JvWWtKa2EyaFVZMGhsV1djMFlsaGtSR2RhYUhOa1EyVkNZVTVsTW1OT1lVaGxhMkY0WkV0aWQyRk5ZVXhrUkdkM2FFMWhPV1JOWjNwaWEyZ3haa0prZDJWNFkyaGpaR1F6WlhCbWNHaFdaREZpYTJGUlkwZGlWMmRuWmt4blVtRlhaamhoVW1KRlpESmxPV2haWkdOb2VHWjBZVkJtVUdSQ1kxWm5WbVZWWWtKb1ZXSmFZMkZsYm1GS2FHVmxVV1JYWVZGalRtWk1hR2xqWTJkR1prSmxWV1JKWW0xa1NHaHRZV3RuV1dKbFpYaGlVV2h2Wm1Ga1JHaEZabWxqUjJScVkzTm5WbWhGWmpCaFVtTk9ZVVZtUm1aMFpEbG9VV1JZWTNCamFtRlVZVmRqY0dWTVlrUmhNV0ZKWVZGbldtTkZaSGhoTW1Sa1pXeG1TbVZEWWtSbU0yRm9aQ3RqVW1ocllYTmtSbUpSWTNobmNHRnhhRXBvYm1ONFpuZGtSMk5yWjNCblFXRldZMnhuT1dRMFkxTmpNMkZrYURab1lXaFdZbVJoV21SRlpFSm9iR052WjBObU1HWlZaemRrVDJaNFlVNW5kbVJTWkRObVRXVlVZMUpqTW1KblpWWmhVMlJHWTBKb1QyWkRaREJrZUdWNVkxWmhhR1JXWjNGbFkySnNaa1poTTJWV1luaGlZMlk0WldGb1YyWkZZbGRqUjJGSFlWbGhWV05hYUcxbVdXSnVZMHBtVW1KellYTmhSR1puWkRWalUyaFZZekZvVldSbVkyWm9SR001WkRKbldXaDRaVGxpYW1KVFpqRmhVbUUwWVVWb1IyWlNaMDFuWkdodWFGcGhVMkZSWldoalZtSTBaMlJpYkdoelpVNWxSMlpGWVhOaFdHaGlaRVJtYzJocVlVVm1hR0V3WkVaaFJHTjRZemhpYm1kalkwSm5iR2NyWW1ObU1tWnJZazFoWTJoNFowRm9XbU5oWmtGaGRHSkdaMkpvZUdKRlpGUmhZbVF3Wm1Sa2VtRkZabmhpUldWd1kxSmhNR05uWVZwbVVtUjNaakZuYldOWmFHeGhXbVJLWW1Ga2FXRjBaVnBuU21SV1oydG5SMlJWWm5sbFkyWnRaMUZsYkdoQ2FIWmlSR0l3WW5obWJXaFpZVmhoUW1kV1lXSmtNV0Z3WTBobFNHRlNZVEZqVm1oVloyNW5VV1ExYUZCamVtSmpaMWxtVDJSQlkxVmxVR2hYWkd0bFVtaHJaVlZvV0daWll5dGhWMlJvWTFsaFdtVmxZa1JqT0dGaVoxRmphR1ZTWkVSa1UyWlhaa3BvZG1GaVlsZGlNV1pKWmtab01HZGpZMWRsVFdkRVpWbGlUV1ZKWVhwa1NtTndZMU5pUm1kc1prVmlSMmhZWVVsa1RHaFVZbFJqTUdObWFGVm9RMkZCWjFoa1MyWm9aWE5tVkdaYWFFSm9WbVJaWkZoa1JXSmpZa0ZuWVdSdVowbGtabVZJWWtkbFdtTjVaRUpsV0dnMVkwMWxXV1ZDWmxwbGNHWlpaRkpsV1dKWlpWcGphR1ZTWjIxbVdtTnRhRVZqZEdWbVl6Sm1PV1poWkZKaWVHSXdhR1JtVm1oV1owcGpNR2RoYURObWIyTnhZa05qTW1kd1pFUm1XR1ZXWVhOblVXRlFhREpoV21neVlXUmxiR2hLWkVOblJtaFlabWhvTW1aRllXdGhjMkpaWmxGbE1XSnJZM0poVG1SSVlVSmtOR05aWTJ0a1RtWktZVmRqYm1GV1lqUmpVMkV6WldSa05taGhabFpqWkdOYVpVVmhRbVJzWkc5bFFXSXdaR05oTm1kWVpURmxZMlJ4WTBGb1ZHVndZV1JuUVdacFkzZG9XR2RUYUVaalJtWmhaa1ZuUkdkSlluSmhRbVJzWTBGamJHaE9aVVpuUldWWFlVSmlVbWhvYUZobVRXRkJaRTVuUkdaWWFHbGhRbVpTWms1a1IyUmFZMjVqWkdGdVpEbGpkbVpYWld0b1kyUmtaMGhuVm1SV2FGTmtaR05IWW5SaU5tWlpaVEJvTVdWeFlWTmhkMlU1WWxOa1VXaHRZbTlvVDJKSlpYcGlRV2RWWTBKbk1HRmtaVFJpVUdFeFlYZG9XV1pVYUVGb1NXaFlaRWxtVkdOamFDOW1UbVJyWldkbWFXSkhZWGRqWjJVd1pFbGhVMk5yWW1saFVHZERaVGhqVTJoRFpIaG1hMlZhWTA1a1JtZGtZM1pqWW1KNFkwVm5WR1JpWlRCbFpHVjZaRVZoTUdWa1pHOW9SbWhWWm1oaFVXaFNaM2hvUW1oclpGQmhhR0ZPWTJKbVRHSlRaVmxvV21Ka1lsWmtZMlpFWTFkb1IyUnJhSHBrVUdaQ1lXaGtiV2hHWWtkb1dtSnRabGxqV0dkQ1oxWm5ZbUl4WjNCaFNHUklZMUpuVW1NdmFGVm9ibVZTYUhKa1pXaHRZazVoVG1KaFpHdGtjMkZRWTFWa2FHRkNZV3RoVkdKSVpsbGxhMkZHWlhobVdtZEJhRXRrYW1WblpGTmxVMlJXWWxsb1YyaEdaME5tUVdNelpFbGpibUpLWTBsb1VXZHNhRkptWVdOSlpWTmxSV05pWkUxbGFtVlZaWFpuVm1SM1lYTm9aV1JXWlZOak1XWkdhRUZoYW1KMFlscGtSV2Q2WVUxaVltWmpaak5pYUdkUWFFOW9hR056YUVWbFJtaFJZV3hpV0dSTllXcGpjR0ZtWlZCbk1tVndhSGxtVldWWVptUmtXR2hUWW1oa1dtUndabGxrVW1kWlpGbG1XbUpvWWxKbGJXUmFZMjFrUm1aMlpGWmlVMk5rYUZOblJXRjRaVVZqWkdoU1kxWmtkR1JsWjJGbk0yRndaMnBuVkdGWFpuQm9UR1JFWWpGbFNXTlJaRnBoUldkNFlUSmhaR2RzWmtwaFEyWkdaVmRoU21ReVpGVm9WV2hPWjAxa1ZHVXhZV3RvZDJWbGFESm1kR1JoWmxObFJXWk9ZVXBpVjJadVlWWmlOR2hUWkROalpHUTJhR0ZrVm1oa1kxcG9WMk5XWnpsb2IyRkJZekJpWTJkT2FGSmpSbU5WWjNCaVFXRnBaRVZoVW1OU1lUTmhWV2hKWVZabFZtVkJaMVpuU0dGcVlVbGtjbVpDWVd4aFFtRnhZV1JoUm1Sa1pUTmpWV013WWpSa1pXTlBaakpqT1dWVFpGZGtWR0pLWlZab1ltSXlaRGxpYUdSSmFHaG9RV00zWjBSa2VHaFdaRlJsU0dOU1oxcGhZV0pKWlVkblpHZzJhRTFvVldkTlpYVmhRMkZzYUhObFZHSkhaRmhsT1dadFpHUm1ibWhhWjFOb1VXWm9ZMVpqTkdaa1oyaGpTbU5NWmtkblFtUTFaSHBpV1dOdVlrcGpkMlpqWTBWaWFHaEVZbE5pVm1od1l6RmlaV2hDYURobkwyWkxaVU5pV1dGQlpsZGhWbWcxWkdOalVHaDNZWE5tZUdWT1oydG1SbVJYWjBObmFHUlZaMmhrV0dKQ2FGWmxaMlpRWkRCbmFHZFJZMUptZUdkQ1oyMW5ZMlZzWkZsbVZtUmhaRzVrU21GU1lXUm9NV1JWWW5OaldHWjZZWE5rZVdSUlltaG5aMk51WjFKa2FXRkZaM3BqVEdkRVoxVm1ZbVZQYURGb2IyTkxaMU5rUldjMFpVSm1WV05xWVZsbmRXZGxaR2xvU21ST1kwOW9VbVE1WldSbVIyUXhaVFJqYW1GUlpraG9XV2hWWVVKaGQyWlNZVlJuVUdKVFkxRmlaV05UWlROamEyVlNaa05vZVdoTlpYSm9SV0ZwWkZWa1QyaENaMUZqZDJoSllXVm9XR0ZuWTNGalNtSlRabWRrYjJGRVpteGtWV1ZSWWxab2FtaHZaRXhrUW1KRVpERmlSR1JWWldwb1dtTkxZbEJrTVdWdllrMWtUR0ZTWWxWalNHUkZabWRsTVdWV1pVcGtVMmRhWVZsbVJtRXdaMEpuZVdkVllWaG5aR0pZYUZOa2FHZGFhSEJsV1dGU1oxbGlXV0ppWW5kaE9XUk5ZMXBrYldaR1lYZG9WbVpYWXpsbFlXWlNabmhpTVdOQlpHWmtNV1ZLWnpCallXSXpaSEJuYW1OVVpsZG9jR05NWlZOaVVXSmtZV1ZvU21aNGFHZGhMMkZQWVZKa2VHSkRabFJoU0dWQlpHbG5SMk13YUhSbFJHVmhaVlpoYkdocGFHTmxibVJDWm5kbVUyUkZaazVoU21aWFlXNWlWV0Y0WWtSbVdHSmtZbmxtVUdaV2FHUm1TR1JFWWxKaWEyTnVZVUZsTUdkNGFHMW9UMlo0WVU1bWRtWlNaek5vVFdaVVoxSmtNbWhuWjFab1UyVkdaa0psU0dGRlowUm1TV1EyWjBKb1JtSnZaamxpWTJOb1lqaGhlV2RCWmtWaWNHVnJaRXRuUTJnNVpWSmlXR1JSWVU1b1IyVk9ZVU5tYTJWNllXVm9TR2c1WkhaaVYyTnJZV05pWkdGSVpWWmhWbVJUYUdSaFIyRjBZelppV1djd1l6RmhjV2RUYUhkbU1HVjZaMUpuUkdKQmFFcGlUMlI1WTFsaFIyWlJhR3RrUldFelltUm5iR0ZOWTBoaFZtWkJaM2RvWVdWSlozbGxXV0V4WldOaVEyTnZZMWRvUkdKNFlYZGxkMkZMWm10amMyZzNaVTlvZW1aelpsRm9TR2hGWmtsbldtVlFaa1ZuVFdGRlpVbGlVbVZHWm1WalRHVm9aRGhsTm1aWVoyaGlTV1ZzYUVaaVVtRnpaMXBqU0dWV1pWWmtPR2RqWTJ0bldtUk9aMkZsU0doS1pXRmhXR1pXWkdSalMyVkdZbTFrYkdkb2FFWmthR2hvWkcxb1JtTkhZVnBrYldkWllWaGtRbVpXWjJKak1XRnZaMGxvUm1WU2FGSmtZbUpDWjJwaWMyUlphRXhsYW1GRlprVmhTbWRCWm5kbFNHaFJZWGRoV21aMFlWUm1TR0V4YUdObFZXWnJZa2xtVm1obFowaG9XV0ZUWTFOamVHaG9ZVVJsVjJkWFpVcGxlV1ZqWlVob1FtaEphRkZqTUdWMFkyRm5UbUo1WjBWa1ptSk5aMmxrYkdOeVkyWmpWbVJyWTFGbFIyZFhZbWRoVEdOU2FGZGxPR1pTWTBWa01tTTVaVWhtWTJSNFpYQm1ZMlJSWm1oaVZtaEpaVlZvUldGalpsRm9XbWR1WVVwalYyUkdZbGRpYjJKbllrWmpRMkpOWWtOaFIyWkdaV2hvY0dSalkxSmlXbVZGWlZwbWEyaENaRGxtVkdWSFkwWm5kMmRXWkZkb09XZGhaMUpqZUdJd1kyUm5RMmhJWm1oaU1HSmhZak5rY0dOcVpGUmpWMmh3WWt4bFJHVjRaMUpsUm1GTFlXZG5PR1JwWlZCb2VHUXdaRTFpUm1GUlkyUmpLMlpTWm10bFNXRlpZVWRvU0dGT2FHbGpZMkp1WkVKbWQyZFRaMFZrVG1KS1pGZGpibU5XWVRSbFIyWlVZa2xvZFdaUVpVRmtWV05ZWWtWbFFtTkpZVGhpUTJnd1pWSm1lV1pGWWxWbFpHZDJhRkZoV0dWVloxUmtWR1I2Wm5kalZtRldZMVppUW1aWVlVZGxWMk53Wkhsb1IyTkNZbk5vY21WUVpHaGlNR2MwWlVaaFJXRkpZV1JoVUdGWFpXZGhUbU5OWkcxbFdXZFZhRnBrYldSYWFHaGhZMkpHWVZaaWRtUkNaREpuTUdGa1owaG9WbVpXWmxOa1pHaEhZblJqTm1KWlpIZGpjMll2WVVKaVZXZDNhRWRqVjJGVGFITmpRMmhrWW1wblNtWmhhRVpvYUdOc1pEUm1TbVZDYUhSaFRHTlJaVEptYkdSYVlsbG5ibVpLWTNka1kyUkZhR2hsUkdGVFlWWmpjR2d4WjAxblVXY3haek5pWTJkcFpXUm1XbVJGYUVWblRtUTNZVkJpVldjd1pFUmhTMk5yYUUxa1ltWlBZakJrTldRMlpVVm9lR1pWWjNSa1VXUlNhREJuUTJWRFlWSm5RV0Y1Wm1abFFtZHdaVkZrU21aRWFGVm5SbU5RWkRCa2VHVm5ZVVpsYldKc1ptaGhSbUZvWTJoaWJXZEdhRWRtV21odGFGbG5WR0pyYUZSaFltZ3hZVXBuZEdOSVlWSmhNV05XWjFWaWJtSlNZbkppWldWdGFFNWhUbUpoYUd0amMyWlFhRlZvUldGVlkzRmhRMkZFYUUxbWQySkhaM2RpZUdaUmFGQm1TR1pSWTFOa1UyaG5hRlpqUkdORWFGUmtjMkpwWlU1aFZHRTRZazlvVVdkNVoyZGtTV1ZLWW5wbGEyaFRaRVprVTJVNFpYWmxSV1ZTWW5obFEyTkhaVmRuTkdaT1lXSmhNbWM0WTFKbFJXUXlaVGxpU0dSallYaG9UbVpJWTJGaVFtaFdaVWxvVldSRlpWWm1WMlJOWjNwaGQyWldhRkZuVTJoTll6bGtTR2d6WmxaaldHRldhSGRpZEdad1pFNWhWV1E1WjBsblNXSXhabk5oWjJkYVoyZG5RV2RwWjBKaGVXRTBaRVJuU21KVmFHaGtZbU5GWjNoalkyRnRaMXBoVkdaTlozZG1UMko1WmsxbVQyUlhaRVppU1dOWFkxbGtiV05hWVRKalpHVnNZMHBpUTJkR1pGaGthR2N5WTBWaGEyVnpabGxpVVdReFlteGtjV1ZGWVhsbFNXaHBZa05qVW1admFISm5SR042WTAxbEsyTkVZMmxqVm1Nd1lVbGhRV1pSWm5abFYyUldhSGRqTDJOQlpIaGlSbVp0WjBWaVZXYzRhSHBrVW1aNWFHTmxWR1ZFWTJsaldtTkhaVWhuUW1aRlprcG9WV041WlUxa09XUkZhRUpuVldkTVpVbGpRV1ZOYURKaVJHaHBaMmhtUkdKTVozbGpaR2hVWjFOaGJXUTRZU3RoV21kdFkxcGxhR1pqWVVabVZtTjJaVmRrYTJOalptUmpTR0pXWTNoaE5HRmtaRWRtZEdjMllsbGxNR014WjNGaVUyZDNaamxuVTJWRlpFZGhVbU5OWjBwblJHUk5hRWRsUm1Fd1lXTmlNbUprWTJ0bFdtSkdZMWRtYUdkdmFFNWpTbUo0WWpSb01XZFFZV2RpT0dKWVprRmxWV1ZHWVdabVpXWkZablJoTTJkbFltMW1iR1ZZWmxka1VtRkJaRnBqWVdWQloydG5WMkpQWkRCaVRtWmhZMGxsVVdaQ2FIaG5SV1l3WmxwaE1XSkdaRkpvZDJaS1pVWmtNV1pWWW5CalRtWkdaMXBtUW1SaGFHNW1VbU5ZWTJSb01XUTRZV1ZuUm1adVpGSm9hR2hHWkVKbWNHVnRZVWhuTW1kWlpYbGxZV0ZIWTNSaEwyTmlaekZpY0daSVkwaGhVbWN4WTFaaFZXWnVaMUprY21ObFlXcGhWV0pOWVU5blJXTjBZa2RvVldOblpERm5hMlZIWlVoa1oyUTJZa1pvZDJSNFpsTm5UR1pFYURSaFNtUlphRkpoYUdoRVkxZG1WMkZLYUhsaVkyZElaVUpvU1dKUlp6QmxhMmRVWjAxb00yRm9ZMFJpV21VelkzQm1NR0ZUWkd0b1VXWlJZMVZsUjJGRlpreG9SbWQ1Wm5CalJtSlNZV3BoTUdoS1pHTmpkMkZPWkdOalVXVm9ZMVpvU1dkVllrVmlZMlJSWjFwaWJtVktZbGRtUm1kWFltOWtNR1ZJWkdsa1ZtZFlaRkZoYTJkQlkyOWxUV1o0WWxwbVpHVmFZbWRtYkdKdFlscGpNMkpDWkhKbFZtZFlZVkpuWVdWVVpHcG9ZMkZrYUZaalZtWktZakJsWVdRelozQm1hbVZVWjFkb2NHRk1Za1JsTVdOS1pVUmhUV0ozYUZWbGFXVk9ZbEpvY0dSRFowaG5VMk53Wnk5a1JXSm9aRUZpZVdaUlp6Rm9iR0ZwWldOamJtVkNZWGRsVTJGRllrNWxTbVZYWm01alZtZzBhRk5vTTJOallUVmhTMmhCWTFGaVkyVkZaMEpoYzJOd1pWZGhRV2haWW0xb1YyRkNZa1prTVdKaVoxaGtUV0pVWjFKak1tTm5abFptVTJSR1pFSmpTR1ZGYUVkbldtTjVZVlpvYUdGV1luRmpUV1ZTWVVGb2EyVkZaMnRpYjJkVllVcGlVMlZDWTBObVZXWlRZbWRqUm1kYVpraG1lR0pNWW1OblJtVldZblpvVjJGclpXTmlaR0ZJWlZaaFZtSlRhR1JqUjJOMFpEWmxXV013WWpCbGNHVkRZbXhvZDJKWVpFVmtSMlJaWlU5blVHRjZZMmRuVkdSRllVVmplR1EyWVdKbVJHVm9aVXhtUjJaRlowNWlXbVJaWkc1blNtZDNZbU5pUldkb1pFUmtVMmhXWlhCbk1XWmxZVVZsZEdJellrdG1RMlozWjBSb1JHRkZhRXBoV0dSaFprVm9TbUpsWkZKb1VtWkZabFJpWW1Nd1ltUm1lbUpGWXpCaFpHRnZZVVpuVldOb1psRm5VbVo0WkVKbmJXWk5ZbEprWkdOSFlreG1NMlZLWkZSa1NXUm5aVTFpVFdWRVlXMW9kR1EzWWxCa1FtUm9ZbTFuUm1aSGFGcGhiV0ZaWTFobVFtRldZbUpsTVdod1pVaG5TR1ZTYURGbFZtZEZZVlJqVldNMFlWQm1NbVpPWlZCbVVHUjRhRGxqU21aWVpuZG1hR0Z0WTFabGJHSjRaekpsVldaclpVbGtWbUZsWVVobldXRlRabE5pZUdkb1owUmpWMmhYWTBwbWVXaGpZa1JrVFdGS1owVmtRV1I0WTJGaFNXWjZabU5oUTJaTllqTmpjR1kxWTFSbVdHRk5aVkZqUjJSWFlXZGhUR05TWVZkb09HWlNaVVZpTW1ZNVlraG9ZMk40YUU1bVNHaGhZa0poVm1kSlowRmtaMk5LWTBWbFRXRjVaVUZtV1dWR2FGRm1TbVkyWWtKb1dHTTFZVnBqUW1Gc1pFMW1ibU5LWld0blNtTlJZV1ptVkdnMVkyMW1XbWh0YUVaamQyVldZbGRoT1dGaFpsSmhlR2N3WVdSalZtRldaa3BvTUdkaFpIcGxhMkZwWTBobWFXWTVhRXhqUkdWUlkyUmpWR05PWnpGbE5XRXdZV0ppU0dab1lrTmlSbVZZWW1ob01tVkZabXRpYzJoWloxRmlNV1JzWTJsalkySnVhRUprZDJaVFlVRm1RV1ZKWjBOaVZHUkNZelJuVTJGVFlVbGtOV1JQWm14b2NHWk1aRVZvWjJKT2FFTmpRMll3WVZaamRtSkZaRkptVG1GMloxSmpNMlZOWVZSa1VtZ3lZbWRoVm1KVFlrWmhRV1JGWlZWblZHTlZaVE5pVm1ab1kyTmxMMlZLWjJob1pHaHRZbEZuVVdSYVpGUm5ZV1l6WlhOaE9HTkhaVWRtV1dOVlpWcG9iV2hhWm1ob1kySkdaMVpqZG1oWFltdGpZMk5rWWtob1ZtaFZZMUppVG1oVVptZGlMMlpaWnpCaE9HZ3ZZa2huTUdOc1pHWmpRV1JZWTBsbFFXRk5ZVE5qVW1oSlpXRmtRbVZXYURSa1pHaG9ZVXBoVEdGSFowVm9UbUphWmxsbGJtTktaWGRsWTJkRloyaGpSR1JUWVZaamIySnVZVkJqVW1RNGFHbGhTMkpEWVdSbldHWlRhSGhsUVdWVVlXRmhSV1pLWldWaVVtVlNaa1ZvVkdSaWFEQmpaR1Y2WVVWbk1HRmthRzloUm1GVlkyaGlVV2RTWVhobFFtaHRZazFtVW1ka1pVZGpUR2d6WVVwalZHaFFhSGhvU1dOVFlrWmpTR0pPWTB4a1JtSm9aMmhqYldaR1lrZG5XbVZ0WjFsa1dHSkNabFpuWW1VeFluQm9TR1JJWmxKa01XVldaMVZtYVdKWlkzVm5UR0pxWkZsaVptaEtZVVZvZEdOSFlsVmlaMmcxWnpaa1ZXWnVabHBtYm1KVFpsZG1aMmhXYUdWbFNHTlpaRk5oVTJGNGFHaGtSR05YWjFkalNtUjVaMk5qU0daQ1kwbGlVV0ozWVc5b1ltSktZbXBrTVdSTVltUm5WR0puWW05alFtZENhSGRoUjJWRVkxZGpiMlZTYUdKbk1tRTRZMUpvUldneVl6bGtTR2hqWm5obVRtUklZV0ZvUW1KV1prbG5WV0ZGWVdOaFVXVmFaRzVvU1dSRmFGVmtSR1UwWTI1aVFXUjZaR3hvV0dOTllrSm9OR0U1WTJGaVFtUm9aVlZtU1dNeFptOW5hR2hOWTJsamJHUnlaV1pvTW1FNVkyRmpVbWg0WXpCaVpHTldabFpuU21Zd1lXRmtNMlJ3WTJwb1ZHUlhZbkJrVEdGVFozaGpaR05YWlVwblVtSnJaalptU1dGclkyaGxiMkZHYUZoamFHZ3laRVZqYTJoellsbGlVV2d4WjJ4a2FXWmpabTVrUW1kM1pGTmlSV1JPWTBwbFYyUnFaSGRqSzJkVGFETmlPR2d2WWxsaFJtWmpaa3htVm1GVlpEQmhPV2hYWTFGa2RHWjJZbVZqVW1KelpEZGxWR2h1WkRGa1ptaEJZbWxvV21WVGFFaG1RbWhvYUdOaFQyUnRZbHBqZVdGV1pXaG5WbWR4WjJOamJHWkdZek5tVm1Rd1lXOWlWMkZoWkZkalJXUlhaMGRpUjJoWlpHTmhUbU5IWlZwaU9HRmpZMFpuTVdOMGFGZG1SV2hqWkZkb1NHWlJabVJoWW1SbFltcGpPR014WTBSbWQyTkphRGxoUkdGc1p6QmxlR1pWWlZSaVkyaEthR1prYm1FNWFHSm5WR2hvWWxabGQyUk5aM2huU21SWFlVZGlSV0ZLWVVwbFlXUXlZbXhtWVdaalpVVmxhR1ZFWkZOb1ZtWndZekZuWldKRmFIUm5NMlpsWm0xaWJHZFlZa0puUkdSdloxcGxZV05CWTNSalJtWmlaM2hqUldKVVlXSmxlR2R3WjFwaVJXY3daV1JuYjJKR2FGVm5hR2RSWWxKbmVHTkJaV2RsU21ONFltaGlWMkZRWkdwamMyaGxZMDlpVm1KallVNWhTR2hxWkRGa2RHZEdaR3RrY0doeFkwWm5RMmM1Wkhab1dXZFRhSFJuTDJOaVpqRmljR0pJWmtobVVtUXhhRlpoVldGdVpGSmhjbUpsWkdwbVZXTk5aRTlrUldoMFlrdG1WV0puWkRGaWEyZFVaRmRoWkdKMFlXVmxSV05KYUZaa1pXWklhRmxqVTJWVFkzaGhhR0pFYUZkalYyVkpZVGRsVG1GdVpVSmxRV1pUWWpCa1JXZE5aVTlpYW1KRlpWQmpaR0l5WkhCamNHSlRaV3RtVVdGT1prZG5WR1Z2WWt4aVIyTlVZMDFvVW1oQlp6Sm9PV2RhYUdObE1HVkdaVTluWVdaQ2FFNWpUMk5WYUVWak9XUkRabHBsYldVNVpGZG1RbUZYWVU1aEsyZFZZVk5oVm1aWVlWWmhRbWRaWmpsa1MySldaVGxoVEdkaFprWmtaMkZxWWt0a1EyTlpZMnRqU0doWFlWcG1WR1ZTWVRCbk9XVlpaRUZsVVdkalptMW9TbUZZWm5CbWFHZFVZVE5rUm1ab1pFUm5NV0ZKWlZGbVdtWkZaWGhtTW1Ka1oyeGxTbUpEWVVaalZHUkZZbmRqUldGclpFMWlVV1ZUWm5kak9HSjBZazluZW1aU1luZGtWMkZGWlU1bVZXTlNaekpoYUdVMFpFRm9ibWhqYUcxa1RtWldZMk5vVVdORlprRmpaR1Z2WjFobWQyUXdabTFrVVdWb1pqQmxhbWRCWldwbU1XTlZZa1ZqZVdSQllXTm5VMk5HWTFwb1FtTkZaRWRuTkdRM2FGWmpaMkZvWW5GalNtWm9aV3RpSzJKQ1pVVmlVbWRoYUV4a1EyVTVZbEpqVkdGRFpqUmhaR0ZoWkcxbVdtVjRaR05vUldaMFlubGlWMk5uWVRSa1ZXZEdZVWhuT1doVFkyUmxSMmQwWXpaaFdXWXdaREZrY1dOVFpuZG9PV05UWWtWblIyZFJhR1ZrVFdKNVkwbG9TR0ZGYUVaaGRHWTBabVJsUW1aQ2FGRm1UV1pyWlU1aFdtRlpaRzVqU21OM1oyTm5SV0pvWmtSa1UyVldaRzlqT0dOUWFHdGpkR1F2WW1Ob2JXZEZZMlZpVjJoUmFEUmlTR0ZrWldobldtRkdaMlpsZUdSbloyWmtZbWd3WVRoaGFHTkZaekZsYkdNeVpFTmxNV0pXWTFGaFZtSjRaV3huY1dOaloyZG1VV1pXWVdSb1IyVTVZbEpsVUdKc1p6VmxSR2RHWVdwa2MyVnJZbEZpYTJFd1pUQm9WMmR0WkZwaGEyZFpaVEpoZEdFdloySm5NV053WWtobFNHVlNhREZoVm1oVmFHNWpVbU55WjJWbmFXSlZaRU5sVDJWRllYTm1TR1pDWVdoa1FXUTBaRVZvU0dWYVlTdG1RbU5yYUVsaVNXUmxaa2hvVW1KSVkwaGxNV0UxWTJKa1YyZ3lablJtY0dGallVZGlkR1JKWWxOb2JXTk9abUZsWkdkWVoyaGhUR05rYUROb2NHTndZMVprTVdacllsRmtSMmhYWkdobFdXRkZaMmxtV21KR2FGVm9RMmhrWTBoa1pXUXdaR1JsVDJSaGFFVmpOV1JwWkZWa1JXSmpaMUZoV21GdVkwcG1WMmRHYUZkb2NHSjVabFZqV0doa2FGaGxVMlpvWmxsamNXZEpaMFZoVm1oa1pWcGhhR1paYUhWbFNXTjZaV3hoZVdkVVlqQm5WbVpoWWxKa2VHSXdaV1JvVm1OV1lrcG5NR1ZoWkRObWNHVnFhRlJpVjJKd1oweG1SR1l4WlVsbFVXRk9hR2RpYTJWcFkwbGlkMlpCWTAxaFJtRlRaRXBrSzJkU1lXZG5UbU5TWkVWbVJtSldaMmxvU1dGSVluaG1kMkZCWVZWb2NHRlRaV05tU0dSV1l6UmhVMll6WldSa05tWmhabFpoWkdaYVprVmtRbU5zWlc5aFEySXdZMVpoZG1WVlpHeG5TV1U0WlVGbmJtVk5aRkpvUldacVluaGpWR2RWWjBab1NtSmtaVTloYldaYVpubGxWbVJvYUZabWNXRmpabXhqUm1NeloxWmpNR1Z2WlZkaFlXWlhaVVZvVjJOWGFIbGpaR0pJYUVsbE1tZGFaR3BpU21WUlowVmhjR1pXWnpGb09HSm1hRUpsTTJJNVlsTm5aR05IWTNSbk5tZFpaREJuTVdoeFoxTm9kMlU1WWxOaFJXWkhaMUpsVFdoa1kyNWtXbVZUWmtWb1JtVkJaWE5qU1dZd1kwRmxSbVpIYUVSbVRtVlNaazVvYW1SdlpqVmtTV2d3WVZKa1JHRkhaREZoV21neFkwMWlWV2hLWkhOa1ZXUkhhR3huV0dWWFpWSmxRV1JhWldGaFFXTjBaRVpqWW1ONFkwVmxWR2RpWWpCaFpHWjZZVlZvUVdkWlp6ZG5WV05GWTJoaFUyZENaR3RtVFdoc1pVOWxlR1E0WjFobFkyTkdZV2hoVW1Ga2FERm9aR1pMWVVaaGJXSnNaMmhoUm1Wb2FHaGxiV0pHWjBkbVdtZHRaRmxqV0dkQ1lWWmtVR1pTWlRoaFZHWlRaVVZuT0dKaVlsVm1aMlJrWjJwb1RHSnBabk5tUldkUFlsVmtZMlJRWjBGalFtWjRhR3RuUW1SWVpUbG9kR2hsWjBWaFNXTldhR1ZoU0dkWlpGTmtVMko0Wm1obVJHWlhhRmRpU21oNVpHTmpTR05DYUVsbFFXaEJZMmRpU21oTlpVaGthR1JLWlU5b2VtUnpaamxrU0dGb1ltTmpRbVJIWnpObVNXRm9aVkpuVjJZNFpsSmhSV015WlRsblNHTmpaSGhtVG1KSWFHRm1RbVJXYUVsalZXWkZaR1JqVkdkS1lubGxSV1pVWTBablYyZG5ZWGRtUjJSRVkydGhWMkZIWjBWbE9XZHlaV1ZtZW1aM1lWbG1XbUpvWVZKaGJXTmFZVzFoUm1kM1pGWmpWMk01Wm1GbVVtTjRZVEJsWkdoV1pGWmhTbVV3YUU5bFZHVTRZek5sUjJORVpXZGtSbVpFWTNwb2MySlpaVTFvUVdKUll5OW9TbVJXWnpWbVEyUlNaek5oVW1ZeVpsZGxNR05KWlVSbFlXZFdZbXhtYVdkalpHNW5RbUozWTFOalJXZE9aVXBqVjJodVoxWm5OR1ZUWXpOaFpHWTJaMHRoYUdoWlprdG5WbWRTWld4aWNXZFRaRkZpVVdJNFkxWmxRV0pXWWpkaFVtTlhhR3RqTldGU1pESmpaMlpXWWxOa1JtWkNZMGhvUldOSFkxcGplV1JXWm1oaVZtRnhZV05rYkdkR1pUTm1WbVY0YUdoalZHSlFaRlJtVW1aRllsWmpiV05hYUdkblltWnFhRWxuY0daUFkxRm9XbVpxYUZkaWFHSlZZMUpqU0dOU1ozaGhZbWhpWWpCbVJtSTJhRmxsTUdZeFpYRmpVMlIzWWpsaVUyUkZaVWRrVW1aTlptUmhibWRhWmxOblVXVnNaVmxuTldOS2FGWmlaR0ZNYUVkbWFHSlpaR0ZsVFdkWFlrSm5lV0poWlcxblNtZEVhRk5uVm1kd1p6Rm5aV05GWTNSaE0yZGxZbTFsYkdaWVkxZGxVbVJCWmxwaFlXTkZaV2RvUldOUVprWmhVV0ZVYUdKaVVtRkpaM2RuVVdoRlkzQmtObWhHWWpGblNtUTJaRkpoZUdWQ1ltMWtZMk5zWTFsaFZtWmhaVzVtU21OU1pXUmpNV1ZrWTB0blJtSnRZMnRoYVdaV1lUQmpjMlJxYUVaa1IySlJZM3BpVG1OVVoxcG5SV2RsWlZKb1dXTkRZa2huZDJoa1l5OWxWV2h1WVZKb2NtaGxabTFqVG1aT1pHRm5hMlp6WkZCblZXVm9ZMEpqYTJGVWFFaGhXV0l4WVVWbWVHaEdaMUZvWldkSVlsSm1TR1JJYURGb05XUlBabE5rU0doUllpdGhUbVZZWjBwbVUyWmhZVlZsYkdaaFltUmpXR05vWjB4b1pHY3pZM0JpY0dkV2FERm1hMkZSWWtkalYyTm5hRXhoVW1kWFpqbG1SR2RXWjJwbWMyVlRZVWxrVm1JeFowaGhSV1JTWWpCb1kyTkhaMEZuTldoRVltRmlibVJKYUVWbFIyUlhabTlvTjJkWFlrZGtlR1U1WTFOaGFHSmFZM0JpV1dWU1lWbGxXV1phWW1oaFVtSnRaVnBvYldkR2FIZGlWbUpYWmpoblpXRkJZV3huZEdaallVRmhRbVkwWTJkaVkyRldaa0ptYW1OVVpGZGhjR1JNWWtSaU1XTkpabEZqV21oRlpYaG9NbWRrWVd4aVNtVkRaMFptV0dWb1pESmtWMmQzWlRCaldXaFRZM2htZUdGeVkyTm1hV0pSWlRSbVIyWm5ZbmRvWldSWFkycGtjMlE1WVVoalNHTmpZazloVFdOQmFHTmhZMkZrWWxWaGMyWTJabEptUW1Ga1ltNW5SV0V5YUZsaGFHUkVZVVJuTVdaalpVVmtRMlZaWkZaaVJHaFNZalJsUldkWVkzbGpTV1EzWWtkb1JtRktabmRpWTJWc1pFNWhNMlpZWlVWbGNHSkRhRmxsU0dadlpEaGhSMlZIWjFsbVZXaGFabTFsV21Gb2FHTmtSbVpXWjNabVYySnJaV05sWkdaSVpGWmlWbWRUWW1Sb1IyZE5aM1ZtV1dneFpVSm5jV1ZSYURGa2RHTlRZa2RuTW1kU1prOWxaR1JJWVRsb1kyWkdabXhsYjJkVlpFOWpWV2RWWlU5blUySnBhRUZvV1dWTlpsUmlaR1kwYUdWaFZXWkdZMUJoVTJSV2FFbG1kMmhsWVVaa1dtZ3pabVZoTTJKc1oyVm5VV1pxWW05aFdtRmhhRUZpZEdWR1ptSmllR1pGWkZSa1ltTXdabVJpZW1GRllUQmxZMkl4WWxCa01HWm9aVkZtVW1WNFpVSm1iV05qYUd4aFdXUldZVTVpTVdWb2FGSm5aR2N4YUdSalMyaEdabTFpYkdSb1kwWmliR1kwWTNwbVYyTnBaMVZpZVdSTFlVUmpPR1JpYUdKbmQyWXhZMUJpVTJSU1lVWm1WbWRCWkVobmFHVnlZMDFuTW1Od1lrNWpUV2RYWjBWa1VHZFZaMmhuUW1oclpWUm9TR0phWmpKaVZXSnJhRWxsVm1aTWFHcGlaR0pCWVZObE1XTXhaRVJsVW1GSFlVbGhiV2hEWVhsaFNXRXhhRmRpUjJST1oyRmtaR0ZZWjJobFRHVmtZVE5rY0dGd1pGWmtNV1JyWlZGbVJXZFVZWGhoZDJOR1pIaG1TV0ZTWjBSamJXRTRZVlJvUTJGR1ptOW1ObVZaWlZKb2JHTkpaMWRqUW1WT1pISm1UR0YzWlRsalYyaERaa2RuYjJRelpGZGtSMmQ0WnpsbFUyZG9ZVnBtY0daWlpGSm9XV2RaWTFwbmFHUlJaemRoVkdaSFprWm9kMlZXYUZkaE9XVmhaMUpvZUdFd1kyUm9SV04zWVdOak5tWkxaVU5uTkdSeFowRm1hV0ZTWWt4bVYySldaSEJpUldkaFowVm5kMmhyWldWb2JHWkpaa3huUjJGWWFHZG1lbWRJWTJ0aGRHRllaVk5oYkdScmFEVm9WMkZJWVVKa2QyUlRaa1ZqVG1kS1kxZGhibUpXWWpSalUyTXpZV05pZW1kTVlqRmpaR2RTWkVGa1FtVnNaVEZrUm1kc2FHaGlkbWRTWVZKbU1HRnFZa0ZvYW1jeFoxVm5SV0o1YUVGalkyZFRZMEZrU1doRFoxSmtSR1JOWVdkaVIyTkNZVlppYm1oWllqQmxjR0prWVZaak1HVnZaVmRpWVdaWFowVmhWMlpIWkVka1dXaFZZMXBuYVdRNFltNWxZMlpHYURGb1JtVlhaR3RuWTJOa1lVaG5WbVpXWWxOalpHRkhZM1JtTm1KWll6QmxNV054WWxGb2QyZ3daRUpsVW1GRVpsbGlSbUpQWlVSb1JtZFJaRkZoWjJab1pteGtaR1pyWlZsalUyTlRaMEZtV1dGWGFFcG1TR2hKWXpWaVYyWnJaV2hrUkdSVFlsWmpjR0l4WldWb1JXaDBaek5rWldadFkyeGpXR1JYWTFKbVFXaGFaMlJtZDJoMFpFNWtXbVF4WTFGaFZHRmpaR3RsWTJJMlkwZGphMk4wWm05alNHWlJZa1psVVdkWFlXaGlRbUl5WldWaE1XVTRZUzlrWVdKdVpFcGxVbVZrWmpGblpHRkxhRVpoYldWc1lXaGpSbVZvWkdoa2JXaEdaMGRvV21jNFlWbG1WR0ZzWlZablkySldZWEJsVm1WRVkwRmpiR1JEYUZKbmJXWjRaRFJrWW1oSVpHUmhZV1ZSWkVWa2MyVlFhRlZqYUdaQ1ltdG9WR0ZJWkZwb01tVlZZV3RrU1dGV1ptVmhTR05aWmxOaFZtWkNaR2hpVEdSRlkwZG9TbVoyYUdObVIyVktaRnBqVm1JeGFEVmtUMkZpYUZkamRHRmthRmxrTW1VeFoyZGhabVpXWjJ0b1VXWkhaRmRrWjJkTVlsSmxWMlU0WmxKbFJXVXlaVGxpU0dWalluaG1UbUZJWVdOaWFHaFdaVVpuVVdOc1pWbG5SV0ZqYUZkaldtZFBaRUpuYm1KNFpXMWtVMmhZWjJSaVNtZFRZbXhpT1dOd1pscGplR05CWlZsbFltaHNZVEZrYldabGFESmtSbVk1WlZKa00yZzFZazlsVldWQllXdGxSbVJTYUd0bFVtZG5ZbU5uTTJoT1luWmpXbVF5YUhCaFRHTkVZekZuU1dkUllWcGhSV0o0YURKaVpHUnNZMHBuUTJkR1pWaG9RV1F2YUVWbWJHRlpaRmxpVTJGQ2FFSm1jbUZtWjJ4bWNHaDNaRk5rUldOT1prcG9WMlp1WjFaaU5HUlRaVE5rWkdVMllXRm5WbWRqWTFGblVXZ3paMk5pY0dOYVpWVmxNR2R0WlVkalFtWk9ZM0JtVVdKWVpVMW5ZbUZFYUcxb1oyVkpaRk5qUW1VNVpVaGtSR0V5WkZwbmFXTldabWRuT1doeFpFcGpiR1E0WVRkblJXRm5abEpoVW1WUVpsTmthMlZYWVVab1YyaFpaVVpqWW1FeVozQmlUR1pqWTBaaVZtZDJZVmRtYTJoalltUmlTR0ZXWlZablUyRmtZa2RuZEdJMloyTm1NR0V4WkRCaFUyUXdZMXBsVTJSR1ltMWpTbVpOWkdaamFtUTVZMU5pV0dKNFlsVm5jMkZsWlVabU5HVlBZbFpsWjJGUlkwNWpTMk51WWtwaE4yWmpZa0ZtUm1aTFlsSmlXR1ZDWXpGbVpXRkZZblJoTTJKbFkyMW1iR0pZWlZka1VtTkJZVnBtWVdoQllYTmhUV1JpWTNka09HTlBZbUptZUdaT1lUbG9XR2QzWmtsaGJXSlZZV2hpZDJaWlkxUm1hbUZ3WjIxb1kyRnNaRmxrVm1GaFlXNWxTbWhTWldSa01XVmtaRXRoU0dVeVpXdGxObVJRWlVKa2FHTnRhRVptUjJWYVpXMWlXV1pZWTBKbVZtaGlZVEZtY0doSVpFaGtWbVpSYUZSa1ZXaHVaSGRqYTJWalpqSmpUV1JtWWt4a2VHYzVaR0ZsUVdGR1pqVm9hMlZSYUZkaVpHRjBZbVZrUldKSloxWmlaV05JWjFsbFUyUlRabmhqYUdKRVoxZG5WMmhLWlhsaFkyTkVaMnhoU1dKWVkydGxhMkZQWVdWbWVtUlJaMDlqVDJSVVp6Qm9PV2RJWWpGbmEyWmtZVWRsV0dacloxRmtZbVl5WVRobVVtTkZZekptT1dOSVptTm1lR2RPWVVobFlXWkNhRlZsVm1kVllVRm9TbVZqWkU1aFZHRmtZMWRtV0dkRGFIaG1lV1JYWjFkaFpHTllabFpqUW1kWlptZGtZV05DWmxwaFJHWlVZa0ppVW1KdFpscGtiV1JHWkhka1ZtSlhaRGxtWVdWU1ozaG5NR2RrWWxab1VtVnpaSGxvWVdNelpVcGhhV2RCWm0xblRtVk1aMWhoVW1ka1lrVmpUV0ZTWkRSak5HZGthR3hsT1dKVVlrUmhiR1ZLWXpKb1JXRnJaWE5vV1dkUlp6RmpiR2RwWm1Oa2JtSkNZbmRsVTJKRlprMW1RV1JYWjIxaWFHYzBZVmRtTW1oNFlWRmtZV0ZXYUdSbldtWkZZa0ptYkdSdlowTm1NR1pXWjNaa1JXVlZZalZoUm1aU2FETmtUV1ZVWTFKa01tVm5aMVppVTJkR1pFSmpTR1JGWVVOaU9HTXdZVlptYUdReGFHbGhZMlZCWTBsaWFtWkNaRkZrVG1OWlpVeG9iV1JOYUZkblFtaFlaSE5pVldSTlpHcGpPR1I0Wms1a1VtUnZaWEJoVjJob1lWVmxaR2RIYURGaVRtWlRZbVptUkdac2FEWm9abVpyWnpCbmEyZFNaVlZvYTJWQllsaGhlV0pzWTBWbVNtZElabkJqVTJKQ1pYaGxlR1Y0WVdWa2FHRkpZa1poUm1KbllXOW1TMkZCWWtOalkyUXlZVTVvWjJVd1pWSmtVV0ZSYUdobE9HUmpZMVZuU21aa1pXVm1iV1ZzWjFobVYyaFNZMEZuV21KaGFFRm1kR2hHWldKa2VHSkZhRlJsVUdkUmFFbGlibU5TWVdobVZXVnRaVVpoVm1ob1pWRmlWMkZuWkRGbU4yVmphR2RvVVdoaVlrcGhhbVJqWm1ab1RXWkJaRTFqUTJKR1kyNW1XbUZvWVVkaGQySnNZVzFpUkdWdFpGbG1TR1poWmxOb1VtTmFZMkpoZDJkb1pVeG5TR2RXWVZKbFdtWlZaMnBtUm1WdVlXVm5hV040YUVWa1kyTlhaVVZuVUdGVloyaGxRbUZyWWxSb1NHRmFaekptVldGclkwbG5WbVpOWVZSbFFXZFRaRkZqZUdWdlprNWpSR1JEWXpobWQyWk9ZbE5rU21KTFpsRmhNV1ZTWmtoa1pHTlRZM2RoVTJaS1pIcGlPR0p0WVVWa1ZtRnNaVU5oUldaRllrbGtUR0ZTWkZkb09HWlNaVVZuTW1FNWFFaGxZMlo0WkU1a1NHaGhaVUpqVldSaFowWmpVbVJPWTBab1RtSkVhSGhtVjJkSVpWVm1RbWQ1WkZWbVdHSmtZbGhvVTJOb1pGcG9jR1JaYUZKa1dXTlpZMXBpYUdaU2FHMWtXbVJ0Wkd0b2FXaFdaRmhpU21kaFpsWmlVV0puWTBsblZtVldZbEpvTUdGUFkxaGhUbVIyWVZwaU1tWndZVXhqUkdJeFlrbGlVV0phWlVWb2VHY3labVJoYkdKS1lVTmtSbU5ZWVdobk1tWllZVVZpVm1oellrOWlhV05yWTBoaFJtWm5ZemhrVW1oUFpHcGpSV0p2YUVsa2QyUnZaVXhrVUdKbmFHTmlTMk5DWW1saVZXaDBaa1ZvUW1VNVkzVm1TV2hWWjFabmRtSkZaVkptVG1kMllWSmxNMlpOWkZSaFVtTXlaV2RtVm1aVGFFWmpRbWhJWVVWaGFXRkJaMjVqUjJoR1oxbGhLMkZQWkhobE5HUTFaMVppVldodloweGxaR1ZIWWtabVEyWlJZMVJsV21OU2FFdG1VMlZDWVdob1FtUlNaWGRuYUdSRVlXeG9PV0k0WlZSaGQyVmpabFJrVEdKWFpGVm9jV2hOWkZGaFNXWXJZVUptUm1GellVeGhVV1pEWWtab1EyUlFaWHBoWjJoWFpFSmpNR0l3WjFobVRXWkVabWhqVEdSSGFFVmhUbU5hYUZsamJtWktaWGRtWTJSRlkyaG5SR0ZUWWxabGNHY3haMlZtUldSMFlUTm5XbU5YWld0bFdXSmpabmhrUVdKYVltRmlRV1owWVVabFltSjRZMFZqVkdKaVpqQmxaR2g2WWtWbE1HRmtZVzlsUm1KVlpXaGpVV2hTWTNkbE9XUnRaVUptZUdRNVltSmlVR2h0WTI5bWQyVktabEZpVldKTVpsUmpNbVpqWm5oaFVtTkdZV05pZVdSWFpYcGtTV0V2WWsxaFZHZFdaR0ptU21kb1kxRmhSR05YWkVWbFZXRTJZVVpqU0dkdlpXOWhUMmQ1WnpoaFFtUlpZV2hqT0dWRWFGVmphMlJLWVc5aVZHUkVaemxrTDJabFlrVm9TV1pXWldWa1NHRlpZbE5pVTJGNFpXaGpSR1ZYWWxkblNtTjVaMk5uU0daQ1prbG9VV0l3Wkd4a1lXUmtabGRrU21WTVpFRm5hbWhOWjI1b1FXTXdZa1pqZUdkVFkzcG5jR1JMYUVoaVIyWkdZa0ppVVdGVFpVRmtWR0pRWkVWa1kySmxaRTlsUm1oQ1pVZG5TR2RCWlZwa1JHZE5hR2hvYzJKWllsVm9VMmM0WVhGbVVHWnFZMFprV21kRFlsWmhZMk5zWjB4b1VtZzFZVTFtWVdWb1oxRm1NR2RoWVcxbVJXVTFaVmhuUldkV1pHRm1VbWQ0WWpCa1pHSldZbFptU21jd1kyRm1NMlp3WldwbVZHVlhZWEJqVEdSRVpERm9TV1JSWm1aaWEyRjNaMWhrWm1oblpWcGlUMmhHWkZGblRXSnJabUpoTUdkallWbG1RMlZzWTFaa2FXSk9aek5uZUdKM1prSm5NR1Z3WkdwalYyWnVabFpvTkdaVFl6TmlaR2cyWVdGalZtTmtaVnBqUldSQ1lteGliMkpCWm14b05XZEdaRVZsVW1GT2FIWm1VbVF6YUUxblZHTlNZakpqWjJSV1lsTmtRV2hSWmxCbFVXRnBZMnRoYkdoV1lXeG9jMlYyWmtwblZtWkZhRVJvUkdOb2FIQmpWR05FYUVSaFRtZEZZMVpsZW1OUlltTm1XbVpFWkVGbVoyZFFZMFpqVldGcFlrUmxlR1JTYUVwaVNHTlNZMk5oV0dKa1pVUmhaMkYxYUUxaVVXVlJabXRrUkdWQlpFNWhVMmRZYUdwbFJXWkNZVTVsUkdSTlpFRmpVV0ZzWjI5aGNXaGtaMjVvUVdWbFoxaGpaMkpWWjJOalRXTklaMEptTldWaFl6Sm9TbVZFWWxObFZtVndaVEZoWldSRlkzUmxNMmhsWjJwa1VtRTVaMWRqVW1SQllscG5ZV1ZCWlhSblJtSmlaWGhvUm1WV1owOWhaMlpyWVhkaVVtTjNZelJqYm1oWGFEQm9aMlY0WkZSaU1HUlNZM0ZsWTJGblpGRmxXbU5oWjJwbGRHUmtabVJvZUdOS1prZGlSbUpwWWxwa2IyTkdaMnRoVG1KTlpFWm9SMlJhYUcxbldXVllaa0pvVm1WaVlqRm5jR1pJWmtoaVZtZHpZVUZoU0dGRVkyTmhMMk5OWTNsaWQyUkVaMkZuWjJaTlowaG5RbUZvWVhob2EyTklZMjVuT1djeVpVTmlWMmRuWTFaa1pXTklZVmxpVTJGVFlYaGthR05FWWxkalYyVktZM2xpWTJoSVprRm5ZV2hDWm1oa01HSlFaMHBrZW1aYVpVeGpXbVZ1WTNCbE1HUlRabXRtVVdoUllsWm5NbVJuWWxWbVVtSlVaM1JpY1doUloxSmpTbUZJWW1GbFVtSk5aVlJsV21ScmFHTmlUbWRGWkZGbVRtVnNaRVJrZW1SM1owTmpRbWRJWVhkbFVXWk9aMGhvT0dKR1kxTmthR1o0WjNCalRHWjRZamhtUkdWVVpFSmpVbVJ0WlZwbGJXWkdaWGRtVm1WWFpqbGhZV1pTWTNob01XTkJZMlpqTVdoS1pUQm9ZV016WVhCamFtaFVZVmRuY0dkTVkwUmlNV0ZLWWtkbVNtTlNaRFZoTW1SUFprWmtTbUptWTBabVYyVnNZalprVDJoRmFITmlXV0ZSWWpGaGJHVnBZbU5sYm1SQ1ozZG9VMkZGWlU1bVNtSlhZMmxpV21RMFlWWmxibVZqWW5WaldtWjRabk5uWTJGWVoyeGpOR0k0WVZGaE1HTnNaVVppUldWU1pFNW9kbVJTWmpObVRXUlVZbEpqTW1oblpWWm9VMlpHWTBKbFNHWlZhRmRoV21oMllWWm5hMkprWVd0blVHVm9hRkZrTldORlpVSm9OV1JsWm1OamEyaHpaVmRpUjJWSFoxbG5WV2RhWlcxbFdtVm9aR05oUm1KV1ozWmxSV1ozWlVWaFpHWkdZMWhtT1daVFptUmlSMlYwWWpabFdXSXdhREZtY1doVFpYZGtPV0pUWVVWb1IyVlJhR0ZsVDJGVVl6aGhWMk5SWkdkaFZtZzBaR1JsZDJFNVpGZGtSMkpCWTFwa1dtVmFhRWhpVW1oaFpHTmlSV2RvWjBSaFUyZFdabkJoTVdkbFprVmlkR1l6WVdWamJXTnNZMWhuVldkU1ptaG9ZMkpoWWtKbFdtaEdaVWhuUldWV1lVSm1TbVZuYUd0b01HRkhhSGRvU21Kb1pVZGtlR1ozWm1aaFMyTXhZemhuZUdGT1pIZGlVbU15WjB0aGVXRkZabFZtWm1VeFlUVmpSR1pIWW10bFRtUm9aMFpqYUdob1lXMW5SbWhIWkZwaGJXRlpZbGhsUW1kV1kySm5NV2h3YUVaaFUySkdZelJpUjJKUllVaGpXbWh5WkZwaE0yTTFaRkZoWVdkblp6UmpVR05FWld0b2VHZFBZVlJuU0dkYVlUSmpWV2hyWmtsalZtZGxhRWhuV1dWVFpsTmxlR0pvWWtSalYyVlhZa3BoZDJkS1pWUmxUV2hpWVZSbWJHSjBZbGxpWkdoWGFGWm1WMk5oWm01amIyaHpZbFpqZDJSV1owMWhUV2N5WVdkblRHUlNhRmRsT0dWU2FFVmpNbWM1WjBoaVkyaDRZazVsU0dSaFpVSmxWbVpKWWxWaGFHUktaa1ZvU1daSFowNW5RV2RYWVZOaU9XaDNZMVZvVjJkd1lrdGxWbWg0YUZsa2MyVlpaMVZoY0daRlpGUm9RbUZTWm0xaFdtaHRaMFppZDJGV1pGZGpPV1JoWkZKbWVHRXdZMlJpVm1KV1kwcG5NR1ZoWjFOaE9HWXphRU5tTW1ka1lXRm5SMmRTWVRWaFZtaGFZbXRqZUdkeWFHRmhNR0k1WjBOaVZXUklaVVpuWTJoRlpHdG5jMlZaWjFGaE1XZHNaR2xpWTJOdVkwSmxkMk5UWlVWaGNHVktaRUZvVm1jNVlqUm5VMk16WTJSa05tSmhaMVppWkdSYVpVVmlRbVpzWlc5bFEyUXdhRlZrYldoV1pIaGpUbUZ1WlVWaE0yZ3habVppUVdacFkxcG9VMlpJWlVKamFHTklZa1JuUjJOYVpHZGhWbVZyWTJ0bE1tRmpaV2RtVG1FMVlrZGhkMlE1YUZsbFRHUnFZMVpuWldOSFowaGhiMmRWYUdSblIyYzVaV2hrU1dab1lrRm5OMk5FWVhoa1ZtSlVaRWhpVm1Kb1kwUm1ZbUl3WVVabE5tUlpaREJpTVdoeFlWTmtkMmc1WWxOaVJXRkhaMUpsVFdka1pXNW9XbWhoWlVSbVFtTldZbXhtWkdobllrSm1RMmRHWlVWa1RtRlNZazFsV0dkS1p5OW5ZbUZWWVdoa1VtSlJZMFprV21ReFptTmhRV2R3WnpOalpHSllabEpoV0daVGFIaGhhMk5XYUdGa1FXZE5ZVTFvWW1SNFpEUmlUMlZpWmpGaFZtTTJaME5uUjJJeFptOW9SbVZWWjJoalVXSlNZbmhvUW1KdFoyTmxiR2RaWVZaaFRtSXhZMmhvVW1oa1pURmtaR1JMWkVaaWJXSnNZbWhuUm1Gb1pHaG9iV0ZSYUdsaFkyWXdabGxpVTJKV1lrOWlVbVJXWkhCb1NHRklhRkpuTVdkV2FGVmxibU5TWjNKa1pXVnRaMDFtUldOTVowVmxjMlJJWlVoaVVtZHNaV3RqUm1NeFpYaGtNbVZWWkd0blNXaFdabVZtU0dkWllsTmxVMkY0WW1ob1JHRlhZMWRqU1dkclowMWhVMkpLWjBsb1FtZFZZbXhrU0dka1pWaGhWbVZoWTJKbFJtUkNZM0JvVm1VeFptdGxVV0pIWVZka1oyVk1ZbEpoVjJRNFlWSmxSV1l5WXpoaVFtWlFZa1ZrUm1GSVkxbGpSV1ZDWTBsa1ZHZFZZbVJoV21obWFGaGhTV2hHWmtab1dHTlNZM2xoUW1GSFpuaGxXR05JWTNobE1XWnBZMkZrUkdSM1kxbG1XbU5vWWxKbWJXWmFZbTFrUm1SM1psWmlWMkU1WldGbFVtZDRaekJqWkdKV1lWSmljMmg1WTJGaE0yTkpaWEpoVW1KVVpqVmtTR2hFWVhkaVkyRmFabHBoUm1aR1puSmtZV1F4YUVsaVMyTklZMU5qY0djMllrVmphMkZaWjBwb1VXUXdaRkprTDJGaVpUTm1RV0l5WmxObVJtUjRZa3BsVTJSdWFGWmxhV05UWVhsaVNtUTJZMXBoUm1GaloyWmlSMlpTWkVKaWIySlZZVWRtT1dGMllrVmlVbWRPWm5aaVVtSXpZazFoVkdWU1lqSmlaMmhXWmxOblJtSkNaa2hrUldOSFkxcG5lV05JWkRGbVRtWnhaMlZuYkdKc1pEWm1VbU5yWTI5a1RHVmtaa2huZDJKWFlsaGpiV2RaWVZObVdXUkhhRnBpY0dOT1oyeGpWbUY1Wmxkb2FHZEphRlZsUldWV1pWVmhTR0prWTBkaldtYzJaRXBsVldVeFptaGhVMkY0YURWa1UyVkVZMWhvYkdaU1ptUmthbVprWVdKb1UyaDRaRlZtY1dGTlpUQm9XV05sWkZOb1oyWXhabHBvU21WSVpVcG5ObWRqWkVGaldtUlphRmxtTVdad1pURm5aV05GWjNSbU0yVmxZMjFvYkdWWVoxZGtVbVZCWTFwaVlXWkJZWFJuUm1WTmFHaGtSbWRYWkVsaGVHZFJZVEppUldFd1pYQm9OV0pHWmxWa2JHWk9ZbGRtYUdoQlpHZGhZMkpzWWtGbVZHTmhaMjVtYjJoRlkyUmxNV0Z3WTFoblJtTnFaWGhoYUdGSFpYaG5aMk5uWlVoaVYyVndZMjFoWVdWVVkxcG5WbWhqWjJ4bWNHaExaRVJtUW1SU1lVOW9aV1pJWkZKamNtWmxhRzFvVG1ST1lXRm9hMkZ6WWxCaFZXTm9aMEZpTldOVWFFUm9UV1UyYUVGa1VXZGpZeTloWldGSWFGbG9VMlJUWkhobmFHSkVZbGRsVjJaS1ozbGlZMkZJWlVKb1NXSkNZVkZrV1dKSloyUmtXR1pCYUVObVpHRXpZMFpsY0dKR1pHeG5hMmRQWjBkbFZHUnpaVXhsVVdReVlXdG5VbWRIYUhsbVdtaElZMkprYUdKTmFGVmhZV1JDWkdoalNXTkZaRlZuTkdOalpGcGhhV0ZrWmxkb1EyaEhaVzlqTjJOVFptNWhZMlpEWkZObVoyTm9hREJrV1doUlkxbGhSR0phWm10b1JtTnlaV0ZuTW1kb1kzZGtSR1JyWTFabFlXRlNZbmhvTUdGa1oxWmpWbVJLWnpCallXRXpZWEJuYW1oVWFGZGxjR2RNWmtSaGVHVlNZMlpqVG1aclpIaG9LMkpKWjBKb1RXWlJZMFpvVkdGU2FESm9SR0V3YUhOaldtWlZZekZpVm1GcFprMWxXR2RDYUhSblUyZEdaMDVtVTJkWFltcGlVbVUwWlZaaFdHSmpZelZrWTJSc1lXTm9ZV1ZIWkhob1NtWm9aa2xoVldWV1pYWmxSV0pTWms1amRtUlNaek5uVFdKVVpGSmhNbUZuWkZab1UyWkdhRUprU0dSRlpVZGpXV1kzYUVWbVFtWldZMmxuVDJSc1ltdG5hbVpYWkRCaGNHWkVaMkZvVjJodlpGZGxWMlV5WkRobFZXZGFaRE5vZEdRNGFHTmhRbUV4Wm01blEyWkZabk5oWkdSWVoyeG5lR1ZpWkdSaVJHTkNabEZuV1dVd1pqRm1jV2hUWm5kak9XTlRZMFZrUjJOU1lVMWtaR1p1WjFwbFUyZFJZV2hvVm1jMGFHUm9hR2hLWjB4aFZtVkZZazVuUldaWlkyNWhUbWhvWjJGaE1tTktZMFJuVTJOV1lYQmhNV1psWTBWbWRHTXpabVZuYldac1pGaG5WMkZTWmtGaldtZGhhRUZrZEdOR1ltSm1lR1pHWWxKa1VHZFJaa2xrZVdaWFprWmhlR1ZEWmtaalZXTm9ZbEZoVW1KNFkwSmliV0ZqWkd4a1dXTldabUZtYm1oS1lWSm1aR2d4Wm1Sa1MyUkdaMnBrVW1KTVpVWm9hR1pvWTIxb1JtTkhhRnBvYldkWloxaGpRbWhXWjJKaE1XVndhRWhtU0dKU1pqQmxZMlJHWlVoalVtSnFhRTVrYldOd1prNWtUMlJCWVRWblltVkNhREJpU1dSeFoxUm1RMk5PWkhSaVpXUkZaRWxtVm1kbFpraGxXV1ZUYUZOb2VHVm9Za1JqVjJaWGFFcG9lV1ZqWWtOak1XaHBZMUZoTUdac2FHRmlaR1ZZWkdoaVRHTmtZek5qY0dkd1kxWm1kMmQwYUZablZHSlVZakZsV21kRGFESm1PR1pqWjBGbGJtSlNZM1JrWTJGNFpFNWtTR05oWlVKb1ZtZEpaVlZqUldaa1pFNW9WR0ZJWTBwbVYySkdaMWRoY0dGNVlWVmxXR2RrWWxoa1JHSkZaMDFvYm1WSlpHdG9TbVZTWTB0a1ZtaHdaRzFrUW1oWFpHdG9hMkpYWlZkak9HSkpabE5vZUdNeFkxVmlWMmhXWkVsaGVHWlpabTVoYjJRMGFGcGlNbWR3WTB4aVJHY3hZVWxqVVdSYVkwVmllR2N5WjJSbmJHVkpZMHhuUm1aWFpsWmlNbWhtWjBKbE5XUldaMEZoVW1kM1luZGhaV2RxWTJ4a05XSlRhRUpoT0dSV1pWZG5iV2hXWVdwbldXZFlaR1JtTm1OaFpsWmxaR0phWlVWbVFtWnNaVzlrUTJFd1oxVmpOV1pWWjBWblJtTjJZVU5sU0dSTllrOW5VbWg2WVhkaVltVkNaMEpsVldOS2FGWmtlbUZKWnpaalZtRm9ZbWhqY1dWUFpqQmtjR0prWjFabU1HWnZZbGRpWVdaWFpFVm9WMkpIWmtkbFdXaFZaRnBrYVdGT1kyaG9ZbVF4WkZaa2JtVlZaMmRuU1dSa1pVRmhSbVpWYURoalNXSlRaMWxtTkdWS1kyaG5PV2hwWTBSaloyWmFZbUprU0dSSFlWRm5TbVprWkcxbmFHZFRhRVJrVW1OV1pTdGlZMlZDWWtwbFJHUllaVlZsVG1GRlkxbG1hbVF4WWpWblpXWlZabWhqV21OVFpGWmxTV0ozWldWbFJtUmFaak5pVG1OWFkwSm1UV1ZqWjNoblFXSmFaR0ZqUVdKMFkwWmtZbVo0WWtWblZHVmlZekJoWTJkc1pWVmlhR2RXWjI5bVdHZFZaMmhpVG1aU1pEQmlTbU52WkZCamFHRk9ZMkppVEdOVGFGbGlXbUppWlVob01XTkxZVVpvYldkc1pHaGpSbWhvWm1oaGJXSkdaa2RrV21GdGFFdG5SR05hWWxabFdtaDRaVXBvU0dGSFlVSmlNV2hJWmxWaGJtVldhREprV21NeVlrNW1aR1paWnpCamRHTmlZVWRpYTJkSlpISmhSMkl6WkZsbk5HVkdaSGhuVldKV1pFUm5RMkk1WTBObVJHRnVZekJvVW1SRFpubG1NR1ZuWjJWbVNHaEpZbWhrUkdSU1lqaG5ZbUZQYUZSaVJXaFFaR1JtZW1GSlozTmlSR014Wm14aFJHZFVaMVJoY0doRFpFTm9lV2huYUZSaVIyVnVabEpsZEdoamFIaGxUbUZJWm1GalFtVldaRWxrVldWRlpHTm5VV05hWjJwblpHaFhaME5tTW1Gdlp6WmtWV0ZZWkdoaldHSlhaa0pvV21OMlpGcGtlR0paWkZGa1NXZDRabEpuTjJOYVptbG5iR2gzWlZkaWJXYzVhRWxqVkdWblpsbG5NMlpXWmxab1NtTXdhR0ZoTTJOd1oycG1WR2hYYUhCbFRHVkVabmhoVW1ObVowNWlhMlY0WWl0bVNXRkNaMDFpVVdOR1pGUmpXbVF5WlVSb01HVnpaa2xqVjJkR2FHdG5ibU5qWlcxbk5XTjNaMEppYkdSb1lrcG5WV05ZWmpSa01taFJaVzVtWTJSb1pGRmlNV0prWTFwbVJXSkNaMnhvYjJoRFpUQmxWbVYyWjBWbVVtTk9ZWFprVW1ONVpGWm9VMlpHWTFkbmFHaEhaRk5oUldFeFpVaGpVV1pEWTJOaloyZENaVlpqUVdORVlsQm5RV2RXWkM5aFFtZFZZVkpoUm1WUVpFTmpUbUpHWVZSblJHZFJZV05uWkdWSFpWcG1jbWhqWjBKa2RHVnFZVmRqYkdaVllsVmhSV1pXWlZaaVJHVlpZbTFuU21Kb1lsTmxWV1l4WW5GbFUyaDNZamxpVTJGRmFFZG5VbVJOWldSamJtaGFaVk5sVVdSc1pYZG9LMlJrWm1obWIyWkRaRk5vZVdRd1lWbGxSR1pJWVc5bWFtRmxaMVZtUm1GRVowZG1lR2M0Wkdob1RHZFNZV3RuTldobFpHbGtaR1ZOWTJOa2VHUkJaMXBqWVdoQlluUmtSbVZpWm5oaVJXUlVhR0prTUdaa1pucG1SV0Y0WlUxblZHTllaMFZuYUdkaWFGSm1NV2MwYUdKa1kyTnJaSE5uVm1kUFpWZG9iR0kzWjJSb01XUmthRXRrUm1adFkyeGxhR05HWm1oamFHSnRZMFpqUkdSMFpVMW9XV1ZZWlVKblZtTmlaekZtY0dKSVkwaGxVbVV4WlZabFZXSnBZbGxtZFdWTWFHcGhXV2htWlVwbVJXaDBaRUpqVTJaVVluQmhhMkZVWkVoa1dtTXlaMVZuYTJSSllWWm5aV05EWW5Ob05HaFRhSGhrYUdSRVpsZGhWMlpLWTNsaVkyVklaRUZuVDJWR1ptZG9ZMk5hWWtsa1ZHZEZZVVZvVDJGWWFHOWpjbVpZWW5kbk1HZGpZa2RsVkdodllVaGtVbWRUWjFsblpHaEZZWGxuY0dWUFpHTm9NR1ZvWm5Sb1lXZENaMVpsU1dGVlowVmpZMk5SWkZwaGJtUktabGRoUm1GVVkyZGpNMmRDWTFOaVNXUkdZMEpvUW1aWmFFOW1ZV05ZWmpSa1VXRk9Za0pvYUdKdFpFMWhiV1k0WXpoblJXSkRaRVZuWkdGRlpqRm9WV2hrWVZkbVJtVkpaemxoV1dKdVkxcG5hbVZIYUZkbldtWk1aRkpsYkdjMFpGRmtTV1pWWjFabmRHaFlaa1ppU21WRFpFWm5XR05vWkRKa1JXaHJaSE5qV1doSWFHNWxUbUZwWm1OaGJtWkNaWGRtVTJGRllrNW9TbVpYWVdwblRXZDBZVUpsVkdKUlpuVmpTV0pDWW1kaVdHZEZaRWhsZUdoblkxaG9NR1JzWlhablVXSjRZamxpZG1oRVltNWhPR2hVYUVGaWJXVkZZMVptUldNelpIQmlTR0ZGWjBkbFdtSjVhRlpuYUdSV1luRm9ZMlZzWlVab00yUkNZMUZuT1dKRFlsQmlSR0ZPWWxsblIySkJaRVZqWTJSRlprZGlOR1o2WVdWbVZtSnNhSFptUkdoclozTmlaR1JXWjBab2JHUlRaMDFtVjJSS1pXaGtVMkpWYURGa2NXWlRZbmRtT1dGVGFFVmlSMlJTWVUxaVMyY3haSGhoVTJkUloyaGhWbVEwWm1SaWFHTktaa3hrUjJKQmFGVmhUV05NWTBSa1JXVnJZazlqVVdGalowNWxVMmRUWW1obk9XZE1ZMFZuWkdnelprdGtSMkpXWlZoblJXZENabmRqV21kTVoxRmpTbUpHWTA1a1JHSnpZVlJrWW1Rd1pHUm1lbWhGWXpCb1pHTnZhRVppVldKb1pWRmhSbU5XWlZWa2VXZEtaM2RrVW1WaWFHRmthR1ZrWkZwaVNXRXhZM1JvUzJaU1pVZG9WbVJvWWxoamVHZFNaRzFrVldKWFl6bGpPV05UWVRObFFtVldaR0poTVdkd1praG5TR1pTYURGb1ZtSkVZakZvTldOeVkyVmtiV05PWms1a1lXTnJaSE5uVUdoVmFHeG1XV0o0WTBGa2FtUlZabWxtUjJSM1l6RmpZbVJsWWtObU5HSmhhRWhtZUdkU2FFUm9RMll5WkRWbWVXaFBabGhsZUdGSmFFSmxhMkpDWjJGaVRHaHNZVXBrVEdOa1lUTm9jR1p3Wmxab01XWnJaMUZsUjJGWFlXZGhUR2hHWjNsaWNHUkdZMUptYW1Jd1pFcG9ZMkl6YUZKa1VHSkZhR2hpTUdGaFpsZG1WV056WmxGblRXaHVaelZoVjJWWVowZG9XbWg1WWtaaVNHVTFaMDFsV1dOQ1pWcGhjR0paWTFKbVdXZFpabHBpYUdkU2FHMWhUMll3Wm5SaWQyZFdabGRvT1dGaFpWSmxlR2N3YUdSaVZtTlNZbEZoYUdWS1lWUmphMlV6WWtKalEyRlZZMFpqUkdGNlkwRmxXV1ZOWVVWbVFtVXlaRXBsUm1FMVpFTmpXR2hJWlZKak1tZFdaekJoU1dKWlpFZGtTR1pPWVdsalkySnVaa0psZDJkVFowVm1UbVJLWjFkbmJtaFdZVFJoUjJKVVpVbG9kV2hRYUVGalZXZFlZMFZrU0dVMWFHZGxXV05WWXpCbk9XZElabEpoVFdnM1kxTmtWR0k1WVZkbVEySlRaRGxsUW1KQlkwWmpRbWRMYUVWbFEyUTVaemRvVjJKb1kxVmtLMmhtWld4a1JXUXJaVmRvTUdOd2FGUmpXV1pJWW05a09HZEhaMGRpV1dKVloxcGpiV2hhWjJoblkyWkdaMVZvZVdKalkwVmlZMk5rYUVobVZtZFdaVk5pWkdoSFpIUmtObVZLWjFKbloyWnJZME5oUm1SeloySm1XR1I1WVhCbVRXWkJabTVrTkdKSFkxUm1hR1pWWVhGa1pXSm9aVWxsUTJKRlpWVm9UV1JEWkZOaFNHWkthSGRvWTJaRloyaGpSR05UWVZabmNHRXhZV1ZqUldoelkyeG1VR0Y2WnpCb1EyaERaVEZvTkdKYVpFZGxVV1ZWWmtSaVVHaFdhRFZpWldGRVlWSm9OR1p1WTFabGFXaFpaelppVW1SM2FHdG1TbU5VWVhkbVFtZHRaV0psTUdKemFFbGlZV0ZwYUVKblVtSmphRlppUm1GTFlWaG1NbWRzWlRobFEyaDNaRlpsYldSUlpVZGhaMmh4WjBwbVJHYzBaVk5oVDJaNFkwcGxTR0pCWm1oaU1HWkNZbFZvYldVMVozSm9UR1p0WVRCb1pXVktaV2RoU21KTllVWm1lR1puYURKalVXaElabGxsTDJGWFlUQm1jMlZQWmxWaGJtZFpaMU5qVTJkNFpXaGlSR2hYWmxkbVNtVjVhRXhsVm1Kd1kwbG5VV0l3WTJ4b1lXTmtZVmhtYUdGTVpHUmplbVozYURoaFIyTlNabkJrUldKVmFFTmxaR0pHWkZKaVVtRTRaVnBsVW1JeVowNWtTR1JKWjFKak9XaElhRWxtVW1WNFkwbG9RMll5WWpCa1VXUmFZMjVrU21OWFpVWmxWMmh3WjNsaFZXRllZV1JvV0dKQllYaGhXbVV3WTFsb1dHZDBhRnBqVFdoc1pIaG1iMk5MWlhsaFoyUXJaVmhsVkdkMFpWVm1RMkl4WldobVZHTkZZbWRqV1dVNFoxcG1NMk52WjNGbVVtSklZVVprYUdSRVpERm1TV05SWWxwbFJXUjRaVEpuWkdoc2FFcG9RMlpHYUZSb05HYzFaRkZvUldkelpGRmtSbWhTWjJka2QyRmpabXBtVm1OM1oxWm9WV2hOWTNsalNtVXpZbXhrTkdOQ1pFaG1aR2h1Wm1GaFVXZFdZVU5uUldKR1kwSmxiMlpHWkZWblZXRm5ZME5vYUdKT1ptMWlVbWg1WkdkbE5XVlNZakpuWjJWV2FGTmhSbUZDWVVoaVJXSkhZVnBqZVdaV1pHaGlWbVp4WTBwbFFtZEJZbXhrVm1KM1lrbGpWMkZrWTBkb1JtSkRaVmxvZVdoc1pYQm9ZV0ZyWjNoaGFHSmpaa1ptVm1GMlpsZGxhMk5qWW1SbVNHTldabFpqVTJGa2FFZGxkR1UyWkZsa2QyaE9aWEZoVm1SblpEaGhZMmhTWTFOaVoyUkJhR1ZuYkdGNFkxTm9VV2RvWlZaaE5HUmtaMmhtU21aTVpVZGxSV0ZPYUZwaFdXUnVZMHBsZDJSallVSmtkR0pFWWxaalJtVnZZamxuWldOR2FGWmhNMkpoWTBoaWNHaFBaVmRoVVdZNGFGcG5abWRCWm5SalptUmlaREZtYTJOVVltTm9WV1ZrWW1obVFXRldaMUpoYjJKRFpHdG9hR1ZFWVZKa2QyUndZbTFsVDJKc1lsbG9UR0ZoWkcxa1RtZEpZbHBtYkdSa1pWWmxSbVJ1WVhSa2FHTkVaa0poYUdnelpVUm5NR1Y0WTIxaFdXZFlZa0poVm1kaVpURm5jR2hJWmtob1VtTXhZMVpqVldkdVpsRmhhV1ZRWWtkalRtUkdaMGxuTUdkelpsSm5WR0o0WmtGa2NtSlVhRWhqTVdNeVpFRmpWV1Z6YUZaaVNXUXhZM2RpVTJGVFpuaGthR05FYUZkbVYySktaSGxsWTJkSVlrSmlTV05SWnpCamJHRmhZbVJpVTJJMFpFdG1TbVZZWlc5aGIyRlhaREZqYkdOR2FFWmhWMk5vWWs1a1UyaFhaamxtWkdaRFowVm1WbUZJWjJOaGVHUk9aMGhrWVdKQ1pWWm5TV1pWWTBWblkyWlJZbHBpYm1aS1lsZGxSbVZVWkd0bGJHWkhaRU5uVFdWVmFFRmthR1JhWjJoa1RXSm9ZamhqV1dGUVpGUmhOV1J0WWxwaGJXWkdabmRuVm1KWFlqbG1ZV1pTWTNob01HWmtZbFpuVm1kS1lUQm1ZV1l6WjNCb2FtUkVZV2xrYzJoWlpGTmxiR05KWmtKalptVnRhRnBrTW1Ka1pXeGxTbWREWmtab1dHRm9aREpoUldWclpuTmhXV2RSWVRGamJHSnBZbU5uYm1aQ1pIZG1VMmhGYUU1aVdXSlRaMGRpTVdZMFoxWmtXR2hqWlhsallXWldhRVpvWm1ORlowSmhSV0p0WjBObk1XWm9hSFpuVjJaU1luQm5NR1JpWWxobFRXZFVaVkpuTW1WbloxWmlVMlZHWTBKaFNHVkZaMGRrV21oNVpsWmxhR0pXWTNGaVkySnNaRVpoTTJGV2FIZG5hR0ZGWjB4bVEyaENaMlJuUVdJd1pIZGhWV1phYUcxbFdtUm9aR05pUm1SV1pYWmtWMkZyWjJOaFpHaElabFpsVm1kVFkyUmxSMkowWlRaalNXVkJZWGRqTldORVltZGxPV1ZCWTBOaWEyRTFZMDFqWkdkdVlscGhVMlJSYUdoaVZtWTBaV1JqYUdGS1kweGhSMlZGWms1aVdtZFphRzVsU21OM1pXTmhSV2RvWTB4b1EyWkdaWEJvYjJSbFowSmtPR05OWlU1alYyWnNaMk5qVjJkUmFFWmthMlpaWlZGbFpHWjJaMkpsZUdaRloxUmhZbU13YUdSaWVtWkZaakJsWkdWdlowWm9WV1pvYUZGaVVtVjRaRUpoYldKalpteGhXV1JXWjJGamJtWktZa0ZrV21SVllUbG5TMlpEWlROaFVtRTRaa1pqYUdOQ1lqTm5SR2hZWVZKbGJXZGFZek5oUVdkVmFGcGpiR1p3WkVKa1IyVjZZbVJqVm1OVlltNWhVbUp5WjJWaWJXSk9aVTVpWVdWclluTmxVR2RWWm1oa1FtWnJhRlJpU0doYVp6SmtWV2hyWlVsbFZtSmxaRWhqV1dOVFoxRmllR1pCWWxCaFYyWllZemxqZVdSbFlraGhhR0ZpWWxWbmEyRnNaR05sWkdkVVlVSmhRMlprWVRKaFdtTXhZVlpvTUdjNFlscGxSMkZVWWxGalRHUlVZbGhsYTJkRFkwVm9NbUZzWkVoalRXUm9ZWEJvVDJoYWFFSm9WV1pGWTFWaVJtZHJaVkZsWkdZeVowSmhRbWhHWTFkbmVHSXdabFZrV0dNNFoxcGtVMlJuWm5Sb2NHRk1aRkpoT0dSU1oyWmtWR00xWVcxbFdtUnRhRVpuZDJWV1lsZGhPV1poYUZKbmVHTXdaR1JvVm1KV1pVcGlNR05oWnpOaGNHVnFabFJqVjJodlpFcGxXR1JTWTJSa1VtVk1aakZpWkdSalltUmpiR0ZLYUVOa1JtWllaR2hqTW1kRlpXdG9jMkZaWVZGb01XaHNZV2xpWTJodVpFSmhkMkZUWWtGb1FXTkpZa05oVkdGQ1l6UmlWMlZIWVRGalVXZGhaVlptWkdSYVowVm9RbUZzWjI5aVEyZ3dZMVprZG1aRloxSm1UbWQyWkZKak0yTk5aVlJoVW1jeVpHZG1WbU5SWlVKalJtWklZa1JvVjJKWlptMW9UR1JXWkhCamNXWmxaVlprUm1odFpVdGthMkpOWldGbVVXRXlaRVZqVjJkSFpFZG5XV1pWWWxwbWJXaGFZV2hpWTJKR1oxWmhkbUpYWVd0blkyaGtZMGhtVm1WV1lsTm9aR1JIWW5Sbk5tUmhaM2hsYUdKeFpWWmpaMlU0WlVkbFlXTjVaM1JoVFdobWFGaGpXbUpCWWxCb2VHZDRaekJpV0dSQ1lrcGlUR05IWTBWb1RtZGFaMWxpYm1oS1puZGtZMmhGWTJobFJHWlRZMVpoY0dVeFpXVm1SV2QwWmpOb1pXSnRhR3hqV0dWVFowRm1TV1ZDWjJGbVFtZGFhRmxuWTJob1pFVmlZbUZtYUd4a05XVm9ZVVZsTUdWR1ltOWxWbVJGWVVablVXaFJZbEpqV21STlpHTmpiR1JaWkZaallXTnVaRXBpVW1Oa1l6Rm1aR1JMWkVaa2JXZHNabWhpUm1Ob1ltaG1iV0pHYUVkbldtVnRaRmxoV0dkQ1kxWm1ZbVl3YUhSbFZtRkNaVkptTVdkSlpWUm5NbWhzWm5KalkyUnVZMHBpVldGbFpFVmxjMmhLWlZWbmEyUldZM1JrVkdKSVpVSmpkMlJsWkVWaFNXTldZMlZuU0dWWmFGTmtVMkY0Wm1oaFJHZFhabGRpU21oNVpHTmxTR0ZDWkVsbFVXRXdZV3hpWVdka2FGaGphR1pNYUdSbE0yUndaV2hoV0daNFpGVmxVV0pDWWtkaloyWkVaMVJpV0dNMFpVVm1SV0V5WVd4bFNHZFBZM2hqY0doSVptUmtRV0ZzWlVsa1VXWldhRlZuV21aYVkybGlOV1ZYWkVoaVYyWktZV3RpVVdOdWFHUmlVbVpUWm14alpHaG5hRmxpVVdOdllVVmpXbWhuWmtwbWRtRmFaMnBrTVdGM1pWaGlXR1JzWkVwbVVtZDRaSE5uWkdWQllVWmpkR1U1WkZwaU1XaENaMnBsVkdoWFpIQm9UR1pFWkRGaVNXUlJaRnBqUldaNGFESmxaR1JzWkVwbFEyZEdabGhoYUdVeVprVmthMmR6WWxsalVXSXhZbXhpYVdSUWFHNWlRbVYxWVZOalJtWkdaRnBtVkdodFkwcGlOR0ZVWVZobFJtYzJaMWxtVldOS1pFMWxRV05uWWtKbksyaERhREZrZEdoMlpGaGxVbWhOWkhwaVIySXpaRTVpWm1GU2FETmxXV0pXYUZob1ZXTmtaRlZoUW1aSVlsWmhOMmhXWVdoalRtWnpaMk5rYkdSclpUVmxWbWN4WldOblYyVktabGRqWjJSbWFFRmhNR2QzYUZWbldtZHRZbHBtYUdoalpVWm5WbUoyWTFkaWEyZGphR1JsU0dkV1pWWmhVMkprWWtka2RHRTJhRmxuTUdJd1ltOWxSMlpWWTI5bVZHVlhaVE5vT1dKdFpXUmpibUphWTFOalVXaG9ZbFppTkdSa1pHaG9TbUZNWVVkalJXVk9hRnBsV1dodWFFcGtkMkpqWVVGbmMyVkRZVWRrYUdJNVpURmhZbVJHWVVab1pHRmxaVzFuYkdGWVpsZGtVbVJCYUZwbFlXTkJaSFJsUm1aaWFIaGtSV2RVWVdKaE1HWmtZbnBoUldZd2FHUmxiMk5JYUZGa2JHRlJaRmRoYUdSQllYbGhRMlZTWld0bVZtZFpaMWhvU21WQllVTmtiR0kxWVVkbFVHSkhZV3hoYUdWR1lXaGhhR2h0WjBaa1IyTmFaMjFoV1dGWVlrSm1WbVppWXpGbGNHaElaVWhrVW1FeFlsWm1WV051WjFKb2NtZGpabXBpV21GT2FHUm1NR1IwWW1KblMyVldZVGxvYTJoU1pqTmxXbVJyYUV4a01HVnphRnBvVldSdVpsbGlVMmRUWjNobmFHRkVabGRpVjJoS1pIbGhZMmRJYUVKaFNXSlJZakJvYkdoaFlXUmpXR05vYUV4b1pHRXphSEJuY0dOWVpIaGtPR1JSWWtKbVIyVm9aMlpsVUdacFlVRm1VbUpIWkVkaE9XSlZaRVJpYUdWd1kweGxVV0pvWWxabVNXaFZZVVZvWTJaUloxcGlibVJLWmxkaVJtZFhhSEJvZVdWVlpGaGlaR05ZYUZOb2FHVmFhSEJtV1dKU1lWbGhXV1ZrWm5kb1dtY3JZbHBpYm1GNFlYUm5VMmRIWmpsbVUyWldZMmRpVVdkUWFGWm1WbWRTYURCaFMyUnVaRTVrYW1WVFpESmllR05vWjBSbk1XZEphRkZpV21KRlozaGhNbWhrWld4bFNtaERaa1pqV0dob1pqSmhSV1JyWjNObVdXRlJZekZqYkdGcFkyTmlibVZDWVhkb1UyUkdhRXBoWW1kUlkyNWhWbVJzWlZaamJXUndaelpsV1dKVllscGlRV1ZCWjJobWJHVjFhRU5oZUdkQ1kyMWxSV1pTWTFaaWNHRmlaMWhsVFdGVVpWSmlNbVJuWlZaalUyRkdaRUprU0doRlkwZGhXbWg1WmxabGFHaFdaSEZtWTJKc1owWmxNMkZXYURCamIyTlhZV0ZtVjJWRlkwaGxRMmR1WnpSalZXWmxaRE5pZEdJNFpXTm5SbWd4Wnl0alVXRXhhRlZoWkdOSFlURmpWV1pWWW1ablYyaDBaRGhuV21OWFpHUm9jV0ZUWW5kak9XRlRZVVZtUjJWU1owMWxaR2R1WjFwalUyRlJZV2hsVm1nMFpHUmlhR1pLYUV4blIyWkZhRTVtV21kWllXNW9TbVozWW1WalJXSkJaRkJoVTJkVlptUm9abUpsYUVWb2RHSXpZV1ZtYldSc1kxaGtWMk5TWlVGaldtZGhZVUZtZEdkR1lXSmllR05GWjFSa1ltWXdZbVJsZW1kRlpqQmpaR1J2Wmtaa1ZXWm9hRkZvVkdoNFkyaG1NMmRhWXpGa1dXZFVZV0ZtYW1Kd1kxbGlaR013WW5SaFYyUkdZbTVtYUdnMVkwaG5lR2huWXpabVVHWnRabHBsYldSWloxaGtRbUZXWjJKbU1XZHdhRWhsU0dWU1l6Rm5WbVJWWm01blVtRnlhR1ZsYldGT1owNWhZV2hyWTNOaVVHRlZZMmhoUW1WclpGUm1TR0kxWVN0alVtaEdZMFZvVm1GbVltNWpXbVJVWVZGaWFHTm9abVppVW1oWFkwcG1hbVZaWlc1bmJHZEpaRWhqTW1WT1pHRmtaR2hZWm1oalRHRmtaak5vY0dkd1lWWmxNV0ZyWjFGbFIyTlhabWRqVEdaU1psZGxPR1pTWTBWbE1tUTVZVWhsWTJGNFkwNW1TR1JoWlVKbVZtSkJhRmRuUm1ORllVUmhXbU51WjFKa1YyVlJaMGRvVG1GNVlsUmxWMkYwWlZobVdHSkNaRGxqY0dKUVlsUmxkMlpaWmxwbWFHTlNabTFtV21kdGFFWmpkMmRXWlZkaU9XTmhZMUpoZUdFd1oyUmhWbVpXYUVwbU1HaGhZVE5vY0dacVoxUmtWMlJ3WTB4bVJHZ3haVWxpV1doamFHeGlPV2N5WVdOaVJtaEphRVZsU0dkSVpVWmhObUZQWmtWaWMyTlpZMUZtTVdkc1kybGpZMkp1YUVKaGQyVlRZa1ZsVG1OS1psZGpibUZXWlRSblUyZ3paMlJtTm1SaGFGWmpaR1phWjBWb1FtTnJaR3RrUTJneFozUm1kbU5DWlhkbldtZzJaMVpuUjJWWlpGUmtVV0pYWXpSa1ZtRlhhRlZpUm1WWGFFSmpTR0prWTJwblVtUkNZVlpoTUdGalptaGlNV0V6WkZWaFZXWjNZbGRvV1dSVFlUaG1WMlZDWlZkaFdtRlpZbUpuTW1jNVl6Wm5WMmRzWWxaa2RtZFhZbXRtWTJaa1owaGhWbVpXWjFOblpHTkhZblJrTm1GWmFEQm9NV0p4WWtaamFXVldZMU5uUldOSFlWSm9UV2hrYUc1aVdtTlRabEZuYUdKV1l6UmhaR2RvWjBsaFYySk5aMnRuVG1OYVkxbG9ibVZLWm5kb1kyRkZZV2hsUkdkVFoxWm5jR1F4WjJWaVFXZFZabWxsVG1GcGFGWmhXR0pTWkVGa01HTkZhR0ZpUldGV1ozWmlZbVI0WVVWaVZHSmlaREJvWkdKNlpVVmxNR05rWVc5b1JtUlZZMmhuVVdWU1puaGtRbVExWjJOa2JHUTBaMlJoU21oSVlVcGlUV1JrWVRCalJtaG1ZMEZvTTJGd1pYbGpTR2Q0WVZKamJXSklaRVJpVm1odFlXWmhTR2RDWjBWbldtWnNaMDVsZEdOSVpWSm9NV05XWjFWaWJtaFNabkpsWldOdFlVNWpUbU5oWTJ0bWMyVlFZMVZoYUdSQ1lTdG5WR0pFYUdoak1tTlVaMFZuU1dkRVptSm1WMmhOWVVKbldHTm9ZV2hpUm1KWWFEQmxhR0Y1WTJOblNHVkNaMGxoVVdZd1lteG1ZV1ZrWTFobmFHWk1ZMlJsTTJkd1ozQmtWbWN4Wld0aVVXVkZZMWRuUW1oR1oxSm1WMlZKYUUxb1JXVXpabXhtVTJSYVlXZGxRbU5TWWxsblVtUnNhR2xsVldKRlkyTmlVV05hWkc1b1NtWlhaMFprVjJKd1pubG9WV1ZZWTJSaFdHRlRaMmhoV21Od1kxbGtWbVpOWjFkbFRtSnJZMFZqTVdGTVpXMWpiR1UwWkZobVUyUkdaMkZpVjJkUmFFMWpSR1JXWlZWbVRtZHJaVmxsYm1Wd1lteG9WR2RZWkhSaVltVklaMVZoUldoYVoxcG5RbVJDWVRKaldXSXdZV1JqVVdoRVkwZGpOV0l2WmtoaWJXRkZhRmxuVVdReFpHeGphV1JqWkc1alFtWjNZMU5rUldST1lVcGpWMkp1WVZaa05HVlRaVE5sWkdVMlkxbG5VbVJzWlZwbVJHZFNZV3hqT1doSVpsWmhXbVk1WTBGaVVtRk5aSHBtVW1FelpITmhRMmhXWVROa2IyTkhaVk5sUm1KYVowaG1XR1J0WkRsb04ySllabmhpYkdaQlkyTmliR0ZHWVROa1ZtWXdaVzlvVjJSaFoxZGhSV05YWkVka1IySlpZMVZsV21OdFkxbG9hMlZtYUdka1ZXZzJaRU5vVVdnNFoxWmxWV2N4WVhobFpXWllaVzFsZEdJMmFGbG5NR1F4Wm5GaVUyRjNaRGxuVTJGRlprZG1VbVpOWkdSaGJtaGFZbE5uVTJWc1luQm9OR2RtWmxGbU9XWk1aVk5rTUdSd1lVTmhVMlZJWTBwaWQyaGpaVVZqYUdORVlWTm5WbVZ3WnpGaVpXZEZaSE5sY1dKVlowZGhiR2hZWWxkbFVtVkJaRnBpWVdkQlpuUmpSbWRpWkhoa1JtTkNZVXRqYUdkTloyMW1VV1ZSWW14bmIySlpZVVZsUVdoV1lWUmtaMlIwWjAxbFkyUnNaRmxoVm1kaFltNWtTbUpTWkdSbE1XRmpZbGhuVUdGSFkyeGhhR1JHWW1oamFHVnRZMFpqUjJGYVpHMW1TbVY1WmxWb1ltVk1aa0ZpTkdkUFlsVmpiR1ZPWmxablNtRXpaWGRrTDJoalp6Sm1UV0pYWlZGblJXWnpabEJoVldob1pVSm9hMmRVWjBob1dtUXlaVlZoYTJoS2FFUmhUMlpUWTFGbVUyVkhZMUptYUdWbFpsZG5WR1JhWVRoalVHRkVaRlZoUjJaQ1lrSmtNR2RUWm1Ka2JHTktaa3huWkdnelozQmtjR0pXWkRGa2EyaFJaRWRvVjJGbloweG5SR1JEWkd0aVVtWkhabnBsYzJGVVltTm5kMmd4Wm1Ga1lXTkZZbVJoUW1kVmFFSm1WbVJXWVUxbGFXWmpZVVZoVjJFeVlXOW9RbVZDYUZOblZXaGxaMEpvUm1KR1ptNW5TbWd3WTFKb1dHUkxaVE5pWTJSMVprcG1lbWhOWTFSbVIyWnBaWE5oWm1kVFoxWmtlR0pPWlVKblVtYzBaSFJtV1dkM1lXdGpNMmhJWTNsa1RXZEdZVk5rUm1jMFlsRm1UV2hGWmxab2RHTllaRVpsU21oRFpFWmhXR2hvWXpKalJXUnJZM05tV1dKUlpURmlhMmhyWkZCaVUyUktabmRtVVdWQ1psVm5TV1JEWWtobFZXRjRhRk5uTW1Od1pqWmtZV0l4WjFaaFZtSkZaVVpoZUdodlowWmthMlpXWWk5bVEySm9hRTFtT1doU1pUSmpNR1pVWTBGaGJtUk5aVlptVVdSWVozQmhTR0ZGWVVkaVdtWjVaRlpqYUdaV1pYRmpZMmhzWkVabU0yUldZakJtY0dKbVltRmlWMmh2Wmt4bFIyRkNZMVpvUVdaT1lVTmtPR04yWms1ak1XZHpabkJqUTJSQlkyaGhVV0ptWm1oaU1HSlVZVXBtWjJkbllqRm1TbWgzWjJobWEyaERZbXhpT0doRFpWaGtSR2d4WkVWbFFtRlRaVWxtUVdkRFlqRmljMkl2YUdWbmFHWkpaMlpsUm1Ob1kwRmhWbVpMYUhwaFJXSXhabVZrUVdneFlsQm1VMk5XWmtsaWQyTmxhRVZvUW1keFltVmxhbWN3WlVSbFZXSkNZbXRqVVdSalpIbGxSbVZHYUdKbWVHRkZabFJtWW1Zd1pXUmhlbUpGWVRCb1pHUnZaVkpoZDJnd1lVVmpSV1JyWmtsbWIyaGpabWhpT0daUFpsRmhTR2RLWWxKaFpHZ3haMlJrUzJGR2FHMW5iR2hvWjFObWVtVktZMjFoUm1kSFlWcG5iV0paWVZoblFtRldZbUpuZUdoM1psTm1WV0V4WkRSa1FtSkhabnBvYzJWc1pHVmlhR1pDWlVab1VHaHJabU5uVUdOQlpVSm9lR0pyYUVKbldHUTVaekpsUTJKWGFHZGtWbVJsWlVoaVdXRlRZVk5uZUdkb1owUmpWMmhYWTBwaWVXaEtabXBsUldGaFlsRmpkMmg0WldGbFlXVklabWhuU21Sa1pWZG1SbVJFWkZaaU1XTnJaRkZvUjJoWFoyZGhUR1ZTWTFkbU9HUlNZVVZtZVdWYVowaGxZbVJvWTAxaGNXaExaVlZqUldGQmFGaGxaMmR3WlZwb1MyVklaMjltUTJaSFlYbG5XV016WVVoamVtaEJaa1JoUVdob2FIQm5jR2RMYUVKbE9HaEVZbFJsUW1oU1ptMW5XbVZ0WjBabmQyaFdZMWRoT1dSaFoxSm5lR2d4WTJKbFIyTm5aVUprTUdSWllubGhkMlZwWVVobU1tUnZZMFZuUkdNd1p6aG1VV1ZPWTJ4bVpHWXlZVkJrTVdGS1ltTmxSbVJVWTJSb2RHTkZabXRvUVdoVVlrUmlSbVJDWjJsbFRtUXphRUpvTjJWV1oxVmxUV0UyWVVSamFXaGphSGhsUW1OVVlVSmxNR1JNWTNkaVZXRlhaRmhuV0dodllXZG5VMmhvWm1OaFRXVllZV3hpWTJGeFkxUmhNbVpKWVVKa1ZXSkhZV2RpVkdWVFowRm9VV2c0WjFoa2VHUjBaamRuVkdkVVpEbGtjV0ZqWld4a1JtTXpZMVpvTUdGdllWZGpZV2hYWkVWa1YyTlRabWxrVG1KQllrMWtlbVJSWVhab1kyVkNaMEpsTUdSalpFVmpZMlprWkVob1ZtSldhRk5qWkdOSFluUm5ObU5RWkcxa1pHSnhZVk5oZDJRNVlWTmpSV2hIWWxKaVRXWmtabXBqUVdKSVowUm9SbVpaWVhObVVHRXhaREJsUm1OSFowTmxjR0pTWVU1bWJtSTFaM2RtU1dGclpWSmxSR0pCWTBablRtRXhaa2xsTW1WR1pETm9aV050Wld4a1dHTlhaRkpsUVdWYVpHRmpRV0owWTBaaVQyaFdaVUpvUW1KaVkzZGlTbU42WjBSamEyZGtaSEZrUm1ReFkwNWpObUZTWlhobVFtWnRZV05pYkdKWmFGWmlZV2R1WTBwaVVtWmtZM2hvTldOTGFFTm9NbWhyWjAxalZtUXdZbmRrZFdaSFoybGhjMlIyWjB4bk0yUm5aa0puV1dKU1pGbG5RMmRWWVRGa2IyVkNaRWRqYm1Ob1pISm5UV2N5WkhCbFYyUlJaRVZsYzJkUVoxVm5hR2RDWm10aVZHZElZVnBtTW1OVmFHdG1TbUZVWVU1a2VXUlJZVk5oVVdRd1lqUmlRMmhEWWpKa1NXSTVaR05pUjJFeFlrbGpSV1ZXWkVwa1lXSlFaMGhtYUdkV2FHUmplbUpXWTNsb1ZtUXhaRWxtWW1GV1oyMW9SV2hNWjBGaFIySTRhR0ZqUkdWdFlUaGpNR0ZLWlRCblJXSlBhRXBoYkdKS1owZG5SbU5vWWxaa1ptaExZM2hoUldkbFpGWm9SR2huWlZKaVNHSnFaMDFsVTJoUlkydGpTV1ZUWWt4bmJXTnpZMUptWm1kVVl6Vm5iV0phWkcxalJtWjNhRlppVjJVNVpXRmhVbVo0WWpCbVpHVkNZbmhqWTJablpGQmlhV0puWm5SalZHUlRaVGxpVVdGS1pWWmtTV1JSWlZwblJXWjRZakppWkdkc1lVcG5RMmhUWlVabFNtVXlaVVZqYTJWemFGbG1VV1V4Wkd4aWFXUmpaV3BsV1dWc1pFSmlaMlZCWkdSbFJXWjZZbTlvTW1WVFlYbG5NV0o1YUZCaFZtUjBhRnBtVVdKb2FGWmpiMmRSWld0b2VHRjJhRk5vYW1kc1puWm9VbWd6WkUxbFZHVlNZakppWjJKV1pWTmlSbWhDWkVoalVtWnBZMk5rWjJWV1pHeGhRbVZ4WW1KbE1XRkZhR3BtVjJWUlpGcGpWR2RLYUhsbFdtaERZMVZtU0dVd2FDdG1XbUZ0YUZwb2FHUmpZMFptVm1OMloxZG9hMlJqWldSaFNHSldaakZvVkdGS1ltMWljMmR0WVZCak1HWXhaRFpuVTJKNGFFWmxVMk5SYUcxaE1XWk5abU5pU0dKQ1lsTmpVMkpyWm1Sbk5HSmhaWGhsU21KaVlVVmlWV001YUZwa1lXTnVaVTFqTldoalpFSmpVV0ZtWmxOaVZXaHdaekZrV21kclpITmpLMk5sWkdwbVZXaE1ZVmRtVm1WclpWcG9aR1ZuWkhOalFXUmFZbWhrUldKV2FHRm1WV0ZrWkRkbVYyaHJhR1JpTVdSR1pGRm5NV1JhWlZoaVJHWndZVzFsWTJSc2FGbGxWbWRoWm01bVNtSlNZbVJvTVdOa1owdG9WV0pEWlZsaGVtaEdZMmhsUVdOM1pGWmlWR1ZTWW0xblRHZHVaRUpsU1dGaVp6RmhhR0ZHWjBWbVVtWXdhR1JsVldadFlteGpjbWhMWVVoa2FHTk9ZMGxrTUdkellsSmhWV05zWVdobUwyUlVaVWhtTVdJNVowZGlhMlJ6WmxaalRtWXpZVmxqV21WV1pHaGxaMlUzWlZWaFZHUlpaRXBsVDJoQllqRmpRbVpYWjBka1RtaGhaR1JpV0dOb1preGtaR0V6WjNCbGNHZFdhREZsYTJWUllsTmplV0l4Wm1ablJXUkVaVEZuWm1SRlpubGxRbVpqWWxka1VtRk9Za2huWVdWQ1lWWmtTV1ZWWTBWalkyaFJaRTlqTVdab1oxZG1SbUZYWTNCaGVXUlZZMWhpWkdoWVoxTmliR1pCWkRoaFRHZ3hZVlpqVFdWTWFERmhjMkZ2YUZwaGFHZG9aRFJpUVdKWFpVNWpZV1ZHWlZKalJXVmtaa2hrUm1WMFpqQmtUV2hHYUVKa2FtSlVZbGRsY0dGTVpVUmxNV1ZKWjFGaFdtaEZaWGhqTW1OTlkwSmlNR1pSWjBaaldHWkJabWRtVldaNFptdG9XV1pDYUd4bWJHRXZaV05vYVdWU1lpdGxSMlYzWkRoaVFXSkhhRlJvUW1kM1pVZGtXR1owWmpab1NXaEdaVFZuVm1WRlprWm9XbVp2WlVaaGEyZFdZblJrUldoNFpEbG9kbUpFWXpOblRXTlBhRkprTTJabllVOWhVMlJDWm1obVNHRkVaMGRpV1dFeloxZGxSbUZyYUhaaVVHTkNaMWxrYW1SSVpURm9SV0ZYYUVsaVYyaEZZbVJsUW1kWFlWbGpSMk5pWXpCb2VHWm9aMk5tUm1oV1kzWm5WMkpyWW1ObVpHZElZbFprVm1OVFpHUmxSMmh6WVRGa1dXVXdaRnBoTTJaVFlqTmpkMlJIWmxGb2FXUXdZME5pVFdkWWFHZGtWV1ZGWVVabWIyWXhZa1pvVm1adllrdGhVMlJwWWtGa1YyRktaR3BuWkdJMFowNW5WR05OWTB4a1RtVkdaWEJuSzJGbFkwWmpiR0pwWTJKa1IyZHNZV1JtVjJWV1lWWmhhV0ZKWmtGbmRHWlBaR0poZDJWQ1ozVmhXbVZzWm5obVdtaEZZVEJpWkdSdllrWm9WV0pvWjFGbFVtWjRaa0ppYldWamFHZG5VbVJSWlZCbmFXZGpaRVJrVDJSV1lXTm5SbWhFWWxWbFRtUm9aRVpoYUdGb1ptMW5SbU5IWTFwaGJXVlpZVk5oTVdJdlpHSmhNV0Z3WjBobVNHUlNaVEZuVm1aVlptNW1VV0YwYUV4bmVXSXdZVTloVUdKbllVcG5RV0pJWmtKblFXUktaMUptUTJSS1pEWm9WV1ZvWkVGaFdtRmxaMFJoT0dkaVkxTmlNR1JPWjNCbFYyTlhZMHBoZVdoalpFaGxRbWRKWVZGaU1HZHNabUZoWkdkVWFFVmlUbVZrWVROa1NXVTVZMVprTVdkM1psRm9RMmhIWldkbFMyTlhZVWhrU1dSU1lVRm9NbVU0YUdKblRHaDRhRTVtV0doaGFFRmlkR1JKWmtKbFJXTTBaVkZoVFdKcWFHOW1SV1pYYUdwbk1XRjVhRWhsZW1SSllVRmlVMlJ0WVZGaGIyZE1aREZqUm1Ka1lVRm1NR2haYURCbVMyRlVaRTVtTkdoV2FIbGxRV0ZqWTBGb1ZXUTFZbGxtUVdkV2FFbG1PV1JQWVVoaGIyTjBZVUZvYW1RMVoweGhWMkZvWlhSalpXUk5ZVVZqTldFdlltSmhXR2hvWkVOa1JtRllaV2hoTW1oRllXdGpjMk5aWTFGbU1XaHNZMmxoVDJaNlkxcG9kMlpSWTBKblpHZEtaMVZsV0dOVlpIRm5VMlV5Wm14bk5tVkpZa1prTldoNlprVm9RbUZzWW05alEySXdhRlpuZG1aRloxSm9UbVYyYUZKa00yTk5hRlJtUldaNVowSmhTR2hDWkhkbFpHRklhRmhoYVdoTlpXeGlWbVZ0WkdOa2NtTlFaMEpsV1dWNVpFMW1hR2RvWjBWalNtVnFaRTFqWldkSGFHaGtTbWhIWWxCbGVXYzRZM1puVG1neFlsVm1OMkZHWkZWb1pHRmpabGhoYUdkWlkxaGhTbVo2WW1oa05tSkpabEZpWjJKNlpFSmpSV0ZGWWxkb1JXVkRaVmxvV21KTlkwUm9RV0ZZWmtWa1FtVlZaVEJvVFdJeFpIZGxUV1ZVWVVGbmRHZGlaMkZtTW1Kc1lXRm1ZMlJGWkdobFJHWlRZMVprY0dZeFpXVm9SV0Z6WkhGb1ZXRkhZbXhvV0dGWFlWSm9RV0phWjJGa1FXSjBaa1poUzJGVmFGSmtaR2hNWlVKbVRXSTJhRmhtUVdac2FHOWhaV1pWWlVGalJXUlRaM2htUVdFd1oyWm1iR2hhWm1ObVdtRnVaVWxpVldabFlqRmpZMlZHWkVkb2JXWnJZWEJvU0dKNFptZGlPV2RRWkcxaFdtSnRaMWxsV0dkQ1lsWm5ZbUl4WkhCbVNHZElZVkpqTUdOalprWmpTR0ZTWjJwa1pXVjVaekZuUkdoSlozaGlhR04wYUVKbU1XSlpZV2xsUTJWVFpsSmhLMkpDWTJ0aGMyaGphRlZqYm1GWlkxTm1VMlY0YUdoaVJHSlhZVmRqU21SNVptTmtTR05DWTBsblVXTjRhREJvVTJKS1pYcGhZMkpqWm1Sa2VtWlJhSE5uUVdWR1pteG9hMmRSWkVSamFHWlBZVWxtUkdFeFkwUmtXR2RFWWpGaFVHSmtaRUpqUldoR1pGQm9WbVZOWlU5bVJtZFNZMVZtVTJGYVpXcG9UV1pGWlZWbGFtUTRZUzloUm1SRVlXdGxSR05UWjJ4aWMySTRaRTFqYTJWSmFGbGpTbWRHWTBabGJXSktZekprUldKVFpVRm5RMkZyWTJOb1FXSnJhRGhrWkdGSVlrSm5kMk51YUZCamVtVnpZM1JqUkdocFpqbGtUV2RDYUd0aWEyVTJaRnBuUldWNGFESm5aR05zWmtwalEyRkdZbGhpYUdneVpVVmxaMlJLWVdWaVVXZ3hZMFZuZDJOaloyMWtOV0ozWWtKb01HRk5ZMVpsUW1GdVpsVm9kMlpUWVRKamJHWTJaazltTVdNMVpYcG5SV1JDWjJ4bWIyWkRZVEJpVm1kMllrVm5VbUpPWkhabFVtRXpZMDFtVkdaRlpIbGpRbVpJWjBKb2QyVmtaMGhsV0dScFlrMWpiR05XWjIxblkySnlZMUJuUW1kWlpIbGhUV1ZvYUdoa1JXTktZV3BuVFdabGFFaGxNbUpTWmtOalNtaDVaMjlrTUdST1psWm1aR2gyWVVkaGVHVldaMkZoVTJGQ1pHZG9XR1ZQWTJwa09XVTJaMHRpYUdRMVozRm5RbWhHWlc5bVIyWkZaa05uYzJGTFkyUmthbU5SWTJSblJtY3habk5sT0dkS1lWSm1WbUZEWlVGak1taHNaRnBoV1dGdWFFcG9kMmRqWjBWa2FHSkVaVk5uVm1Wd1lURmpUV0ZSWXpGbE0yaGpZbWxuUW1kWVkxVm1hR0pDWldOaVlXRkNZMVpvUm1GUFozaGpPV1ZtWWt0bVoyTnJZVEJoVW1OM1l6bG1hR05HWTFKa2QyWlpZa1pqVm1RNFlYaGxZMmhvWW1obFVXRlFZVmhrU1dacVlVNW1hR0ZyWTA1blZXWjNZWGRpZW1KU1prWm1ZMkV3WlVoalIyRlJaVkJsVEdONlpWRmxVV1JPWWpGbGIyWkpabE5vUldOc1lsWmlTR0pVWlVwaGNtVkxaRU5vU1dORVlreGtVV1kwWms1b1YyWjNZblJvVDJWVVowaGlXbVF5YUZWbWEySkphRlpvWldGSVlscGxVR1JaWmxKaWFHWkVaVmRqVjJSS1kzbG9ZMlJJYUVKa1NXSkNZVkpuZDJaVllVNW5hV0YzWlVOalQyRkVZbEppY0daUGFFWm9SbVZGWkVaaVYySm9abHBrVTJSWGFEbGxXV2hJWkRKak9HSkRhR1ZqYUdSTlpHTmhVV0pvWmxablNXaFZaa1ZvWTJWUlkxcG9ibUZLWmxkaFJtWlhZWEJtYVdWVllWZG9iR2RZWmtka1FtSmFZblpvV21SNGFGbGpVV05PWlVKalVtTTNhRnBoYm1Ga1oyeGhVV1ZJWkhobFVHVlNaSGhrV1dKa1pFSmtNV1ZLWWk5allXVXlaWFJoY1dkV1ltdGpRbU5NWlVSb01XZEpZbEZrV21aRmFIaGhNbUprWjJ4b1NtaERaRlZtZW1GaloydG5SV1pyWms1bFQyTkJZbWRvZEdacFpWQmpXR1JDWm5SbVUyaEdhRTVtUm1GWFoycG1NV0kwWWxaaWJtTmpaMWhpUzJoQllrMWlVbWRJWjJ4aFVXSm9aRkpqVldNd1pqZGhTR0l4WnpoaWNXSkRZbFJoVW1kSVpVUm5NbWRuWlZsb1UyTkNabXhuVEdSRllVaGpVbVEzWkZSbVVtSlZaV2xqWTJkcll6bG9NMlZIWmtaaVJXSlhZVmxvYldGd1pGcG9SV2hWYUhkbVZXZGFZMjFuV21Kb1ltTm1SbWhXWlhab1YySnJhR05tWkdOSVkxWmtWV1ZIWjBSaWVXTktaalpqWVdoRmFEQm5iR2RPYUdkaE9XTlFaRTloYldWU1prMWxaR1p1YUZwblUyZFJZMmhpVm1RMFoyUm1hR05LWlV4blIyVkZaVTVqV21aaFkybGhRbUYzWldSamEySm9aMHhuVjJjd1lUbGtaMmRsWWtaaFpHVnlaR1ZpYldSR1pGQmxWMmhTWm05b1dtaFpZa1ZqTldGR1kyTmpRbVpHYUdOaFltVXhaREZpZW1KQlptdG1aR1pzWWtaa1VXWmtaVnBqVkdSb1lXeGhkbVZqWVd0aVoyaE1aR1JtU0doS1lscGhZbUV4WldSbFFXWkdaRzFoUldkclkwWmpaMlprWlcxaVYyWXlZbHBtT0dkWlkxZG9SbUpXWkZsbWJHZHZaVWxvUm1oQ1lWSm9UMlZsWVVob1VtTnlaR1ZoYldOT1prNWxZV2RyWlhObFVHUkVaSHBuY0dGclpGUmxTR0ZhWWpKbFZXWnJZa2xrVm1GbFlVUm1RbWhJWWtKb1ZtVnpaRmhrUldORFpUQmtPR1JqWmtKaU5XRkJaVVpqTUdWV1pXRmtTbWN6YUZKblRHTlFabTVsV21ad2FFVmliR2RCWjFGaVVXUnJaa2xpVEdOU1kxZG5PR2RTWWtWaU1tVTVZMGhrWTJONFprNWlTR0psWWtKaFZtVlhZbFZrUW1SVlpWRm1XV1ZJWjFKblYyaElaRlJpYUdkNVpGUmxTR2hrWWtSaVYyTkJZVGxvT1dobFpFRmpRV2RRWkdSaFFXWXhaSHBsV21KdFluQmxkMkZDWkRKaU9XUlNaVkptZDJGM1lsVmpWR1p1WldobE1HaGhZak5sY0dGcWFGUm1WMk53WWt4b1JHSXhaMGxuVVdaSloyZGpUV0pyWm1Sb2JHRnZaVlZrVm1GRFkzQm9NbWRZWkZWaGMyRkdZMUZsTUdKc1lYVmtZMlpxYUdoa2QyRldaMVZsVFdSclkwZGtlV1ZGWjNkb1VtTlVZMjlrZW1kS1p6RmpPR05PWjBoa2JHTlZZM1JtVW1aUmFFbG9OMk5YWWxKbFRtUnBaRkpuZW1GdlkyWmhVbVV6WTNkalkySlZaVEZtUVdGUVlrVm9TR1ZvWTNsb1IyTlJhRFZsY1dobFoxWmxiMmMwWkZob2JXaEJZbGRtWVdkWFpFVmxWMk5IWlVkaFdXWlZaMXBsYldOYVoyaG9ZMlpHWmxWb04yRkpaVkZoTkdka2FFWmpiR0pWWldSaVEyUlhhSFJpYm1oWlpUQm5WV00wWVZObGVHaEdaRTFrUkdodFlWSmlSV05pWW01bVdtUlpaRkZrYUdFd1pEbGxaR1ZuWlRGaFRHaFdaVEJrVG1KRVpWbGhiV0ZHYUhkalptVlZZMmRoVFdOUllrWmlUbUk0YUdWa1JXTXhZek5rWVdkSVpIaGhRMmhSWjJwb2IyZGFZV0ZtUVdkMFkwWmhZbU40WVVWaFZHRmlhSGhvY0dkYVlrVmlNR05rYUc5b1JtWlZabWhtVVdSU1pIaG9RV0puWmtwbWVHWm9abGRuVUdKcVkzTm1aV1pQWWxaaFkyVjFhRWhqYW1FeFluUm1SbUpyWjNCbGNXaEdaRU5tT1dGeFpGbGxWR1pXWTJOb1ltTjNaMFpoZEdSSWFGSmtNV1ZXWmxWbmJtVlNaWEpvWldWdFlVNW5UbUpoWVdkaVNtUktZMVZuYUdSblpIUmpWR1ZJWmpGbk1tWkdaVEJoU1dkTVkyVm9RMmhKWkdOalFtVXhZVEJsVG1OSVpHcGtXV0UyWm1Wb1dHaEJabU5tUTJKNFpITmxWbWRKWW01a1oyTkdZVTFpYVdFeFozQmlTbWhTWVdoaFpXRllZbWxuTVdOMVowWmllbVl4WkdWblVXaFhabVJrUm1oSFpteG9NR0ZFWVV4a1ZXZ3hZMGxtU0dSNFowcGtSV2hhWjJwbk1HRlJZa1ptVkdObmFIcGlTR2g2WVVGbVUyRlRZa0puT1dKNVoxTm9lR0paWWxsb1dtTm9aRkprYldSYVpXMW1SbVYzYUZabFYyUTRabFJqUVdkU1pqQm1WbUZTWTFab1NtaHhaV0ZrZW1OT1luRmpWR0pVWXpSbFJHWllhRkpvTVdOSVpGcGhRV05KWjNwblNXRldaRWxsZDJkV2FFUmxXV0o0WjFaaWVXZzFhRXRpUldKU1lsbGpkMlpsWW01a1NXSmFZa0pvWjJSalpFMWpRV1Z1WkZWbE0yUklZbWxoVG1FMlowcGphR2hHWjFwalVXZHNZMmRpYldOVVkwRmtRbVIwWmtkaFFXUm9Za1pqVW1nelowMWxWR05TWlRKbFoyaFdaMU5vUm1OQmFHRmpUMk50WjFwaWVXUldZMmhuVm1oeFlXTmxiR1ZHWVROaVJXSlNaemxvV1daTFkycG9WbVZtWlZaamVXSm5abFZsVEdGWFpqUmhNV1JtWVVaa1ZXUTVaMVpvYTJoa1lsVmpSV1ZXWmxWbFdHWmxZVWRtYzJJeFltRm1hMmN3Wm5obldXVlJaRGxtVTJGRllVZGtVbVpOWkdSbmJtSmFhRk5qVVdab1psVmtjV2hOWmpCaVdXSmxhRk5rWjJVeFlWcGtZV1pzWm1oamQyaGpaa1ZuYUdORVpWTm1WbUZ3WVRGb1pXWkZZWFJpTTJWbFpXMW9hMkpaWkZka1ZXZDRaRVptWVdWSFlUbG5UbVpQWlhoa01HaFVaVkJsVldOMFlYcG9WMlJyWm5SbmIyUkJZVlZqVW1SUllWWmlRbUkxWlhsaVdXTnJaRkZtVG1ObFpFZG9SbWhHWkZsa1ZXZEdZVnBoUkdGdVozaGllbVJFWm1kaVFtUjNZbFZtV0doV1ppdG1ZbU5ZWVVKaVdXTm1aVVprVW1WVVkwUmxVV0k1WTA1b1VXTkhZMlJpTDJkaVpVaGpWbWhsWkdOb2JHVTBaV1JtVTJabllXaGhlV0ZEWlZkaVZtTjFaRmRsTUdjMFpTOW9aV1pJWWxsblUyZFRaSGhuYUdoRVpGZG1WMmRLWlhsbFkySklaMEprU1dkT1prVmlZMlZPWTBwb2VtWkZhR1psVFdOdWFFbGhPV1ZYWlRGb2JHUkRaVVpvVjJOb1owTmhVMlZYWnpsalZXVklaakpoT1dSV1lsbGpRbVE1WTBob1ptSkNaWGhpUldObFltdG1ZMmRSWTFwaWJtSktZbGRvUm1KWFkzQm9lV1ZWWlZoaVpHSllaRk5uYkdnNVpuQm5ZV1pvWkZsa1RXVlVZVUppVW1WdFlWcG5iV2RHWlhka1ZtWlhZVGxvWVdaU1pYaGtNR05WWWxSa2JtTm9aakJoWVdjelpYQm1hbVZVYUZkaGNHaE1ZMFJpZDJRNGFEWmhXbWhGWkhoaE1tTmtaR3huU21KRFpVWmhXR05uWTNkaFVtTjNhRlpuWW1kR1kzaG1RV04wWmxCblNHZEJaRFprVVdOQ2FHUmxSbVJYYUdsa1pHVXdabE5vZW1jMVpqSmlZV2RTWVVwb1ZtaEZaMFpoV21Sb1owTmxlR0UxWWtaa1JXTlNaRTVqZG1KU1pqTmhUV0pVWkZKak1tTm5hRlppVTJaQlpVbG1RMmRTWkVSaFRXUm5ZMGRoUW1oV1ltbGxWMk5HWjBaa00yVldhREJqYjJaWFoyRmtWMkpGWWxkblIyWkhabGxoVldSYVoybGxiR2hvWkV4aVFXUnNZblpsVUdaclpEbGpTbUZGWjFab1ZXVkJZbVZvUjJWelpYcGtZbWd3WWpGbmVXVlNaWGRrT1dGRVpFaG5ibUZPWkZaa1dXWlhaMEpsVEdSVlpGRmpVbVp5WkZsa1oyaHdaMlJvUTJac1lrSm9TV1JrWVRKaVZXZ3hZbGxrTVdSb1kySmtVbU5XWTNCbE5HSmhZMVZtVm1oblkxbG5NMmMxWmtKaFVXZEJaazFpU1dObFluaGlPV0ZrWW1WbFVXVk5ZVUZqWm1kc2FFcGxhMkZXWm14b1VtYzBaRVJuVldGR1kyTm9ZbUZTWmtKb2JXSmpZbXhsV1daV1pHRmlibVpLWTFKaVpHRXhZMlJsUzJOR1ptaG9OV2gyWTFGb1ZXTnZZWFppVVdWRFprNW1kV05PWkZobGVHVldhRkJqVm1aYVkwaGpWbWRDWkVaalZtZEdaek5tYUdaeVlXSm5NMlJHYUVKaVlXRnNZVTFrUjJSWWFHcGpjR0pyWVZSaVNHVmFhREprVldScmFFbGxWbVZsWVVoaFdXUlRaRk5sZUdSblprdGhWMk5YWjJ4a2VXaGhaMFptY0dWSmFGRm1NR0ZzWldGalpHaFlZMmhvVEdka1lUTmljR0Z3WjFobGEyWkphRFprUjJWWGFHZG9UR0pTWjFkbU9HVlNaRVZsTW1NNFptRm1WMmRTWTA1bFNHRmhaMEpsVm1kSloxVmhSV05qWVZGblNXRkRZV05qV1daV1pHcGhOR0UzWkVoaGFtRnNaMWhuVEdKQ1l6UmlPV1ZoWlVKb1dtaEVaRlJuUW1WU1pXMWlXbU50WkVabGQyZFdZVmRrT1dOaFlWSmtlR2d4WlZWbFJXWXhZVXBrT0dSWllUTmtTV0l6YUZSb1dHTmtaa3hpV0dac1ozQmtSV2RpWkZWaVNXVnJZMDFuZDJGSllVOWtWbU5FWVhObmVtUkhaV2htYkdkTlpsUmxNV2RzYUdkbFkyTklhR3huTldOU1owVmhUV1ZrWlZab1JHSnJZemxsUW1aVVpFRmpkV0pKWkZabVpHWkdaRVZpUVdOMFoyaG9RV05yWmxWbk9XRldZMFZqWTJnMlpFWm9WR1l3WlZSa1VtVlhZMjluVDJKWllteG9RbWhJWjBWalIyWmFZbmxsVm1kb1lsWmljV0pqWTJ4blJXRjRaRWRpUW1SblpWZG9XV2RZWlc5a1YyaFVaRWRqYUdkWllVbG9lV1ZuWVcxaFNtUkNZVEZqZG1GWVlqQmlZMlJLWlVoblZtWlNabEJsWVdSWFpYUmtjV1psWmtWak1XVnFaMU5vTVdoMFlsTmtSMk16WTJ4aVRXZGtZVWRoZEdoUloxZGpWR2c1WXpSblpHZG9aVXBvVEdaSFpFVmhUbVZhWlZsbGJtRktZM2RuU1dKbllqQm9XR1JJWmtGbFoyRTNhR1ZqUW1ZNVpITmpWV1JIWW14aVdHZFhaVkpqUVdGYVkyRmxRV1IwWVVablRXSnFZWE5sVkdWaVp6QmlaR0Y2WkVWa01HTmtabTlqUm1OUmFEUmxSbWhEYUZaa1RXZDVaazluZUdac1kySm1ZV1ZwWms1bFdtSkpZVEZoTldaTFpsUm5WV1ZPWVdoaVJtaG9ZMmhqYldkR1lVZGxXbVJ0Wmxsa1dHRkNabFpvVUdKU1lUaG9WR05UWTBWa09HVmlZbFZvYVdkQ2FHeGhUR1JxWlVWblJXaEtZakJoYzJSUlpsVm1hMlpTWTNGb1IyVkRZbEZrTDJWSVlUQm1iMmRqWm1Wa1IyUjNZMU5rU0dWNFpsbGpVbWRJWTBSb1NXY3JhRTFsVkdWTllVNW9VMlV3Wmxsa2EyaERhRk5vZEdaQllrdGpkMlpaWVRaaFdHTkdhREJpVldWR2FHbGlPR05JWTFKbFYySXdaMVJqUjJSdVoxSmtkR2hqWlhoblRtRklaV0ZpUW1GV1pVbGtWV05GWldSa1RtaFVZMGhqU21OWFlVWm5WMk53WlhsaFZXaFlaV1JoV0dORVlrVmlUV051YUVsbGEyRktaVkpsUzJOV1kzQm1iV05JWkcxb2EyVnJZVmhoUjJJNGFFSm9ZbWhTWlRCbFpHUldZVlpqU21Nd1ltRmhNMkp3WkdwbVZHUlhZVzloV21aVFltZGpXbUpHWlU1aVoyaEtaREpvV21Rd1kxSm5RMkZEWWpObloyaHBaMFZrYkdKUloxbG9VV1ZWWld4bVoyRmpabTVpZEdkM2FFaG9SV0l3WTJSalJtZFJZbGxoYzJGSFkxUmhOR2N3WVV4bGJHVTVaRWxsUW1Wb1lVSm1iMlJGWVZWb1ZXVTNaRWhoTUdSaloyZGtUbUZEWW1SblFtVkVaR2xrV21KVFpGRm1SV1pHWlZKb1IyTllZVEZqV1dSV2FHaG9WbWh4WTJOaWJHRkdhRE5oVm1Zd1puQmtUR1ZSYURKalJXUlhaRWRpUjJOWllsVmtXbWR0YUZwb2FHWk9ZMmRoUVdKb1kwZGpVbWhPWVZWbVZXUm9hSFJvVTJOSWFFZGtUV1oxWTJKaE1HVXdaelJvVVdKblpEaGhTbWRQWjIxbFVtUk5ZMlJtYm1oYVpWTm5VV1pvWlZaaE5HVmtabWhoU1dKYVprZG1SbVkxWVZwa1RXTklaVWxvYzJSTVlVVm9hR05UWjFObFZtaFdZekZoWVdSR1pVSm1aR0ZsWm0xbmJHSllaMWRtVW1WQllscG9ZV0pCWTNSaVJtSmlhREZuWkdKalpGQm9WV1JrWVRka1VtUlJaRmxrTm1OR1psRmtSbWRqYUZKb01XWldabTFsWW1neFlscGtRbUphWlVSbU5HZFZaVTltVW1WQlptVm1XR050Wmxaa2FHRlhZMUpvYUdFM2FFWm1RMkZuYUhwb1RHZFVZWGhpV21OaVpuaGxTbWhJWWtGaFFtZ3dablZuVEdFelptaGljbUpPWjBkb1RtRlJZMkZpYkdKelpsVm1WV1pzWkZabWEyaFZaVzVtV1dnMFpsTm1WV2RKWm1Wa1kySjZhR2RqWW1aVFp6QmhUbVZ3WVZkalYySktaWGxpWTJWSVlrSmpTV1ZSWXpCbGJHUmhaR1JsV0dSb2FFeG9VR1pxWjNobGNHZFlhREZoUldGWllsVmtSMk5uWlZkblVtWlVZbk5sWm1SVlowTm9ZMlJIWlVsaVdHZEJaRWxoVEdoR1pFRmxjR1ZDWjBWbE9XTmxaR0poTTJOMFlXRmpSbU5UWTA1b2VXUlVZak5pWkdoRFkxaG9kMk5TWVhkaFpHUkNZVmxsWldKWlpFSmpVbVI2WW1Ob1dHSkthR3RrVVdkWGFEbG1SV2hTWmpGalVXSlZZVmhvUm1WSlpIWmhVV1ZZWlhCaWFtTlVZVmRrY0daTVlVUm9NV2RKWWxGaldtTkZabmhsTW1ka1lXeG1TbWhEWkZoaVJHZzFhREppUjJkclozQm5XR1JUWkd4amEyZzFZbGRsU0dKQ1lYZGtVMmRGWjA1b1NtZFhZVzVpVm1JMFpGTmpNMlJrWmpaa1lXWldaMlJtV21ORmFFSm5hMmhvWVZSa1ZXVldZbTVqVjJKQ1kwNWplR0ZTWnpKb1dXTkdabFpoU0dSclowMWhVV0ZXWWtGaFkyUlBaVzFsV21aNVkxWmhhR2hXWm5Gb1kyWnNhRVptTTJSV1lqQmpiMlJYWVdGa1YyZEZZMWRtUjJkSFpsbG9WV1JhWjIxaU5HSjZaMk5sUm1Wb1pubGtWMkZzWjFGaVZXVklaRlZqZEdOVFpHVmlXR1Z3WWpaaVdtRlZaM1JqY1dSQlpuZG5SV0ZEWkZKaFZHWmpaMFZsWm1kdFpWSm5RbVJYWlhoaWJHVTBaRnBsZDJaMGFHRmlSbWRGWVU1bVNXUmxabTFtZEdVMVoyRm9NbWhLYUVSblUySldZWEJuTVdGbFpVVm9kR1F6WldWaGJXRnNZVmhrVjJKU1pFRmpXbVZoWTBGaWRHTkdaR0poZUdGR1psRmhTV0pCWm10a2JtWlhaMmRpYTJJNVpGVmlSbWRPWnpaalVtVjRaa0psYldKalpXeGlXV05XYUdGbmJtVktaRkpuWkdReFpHUmtTMlZHWlcxaWJHUm9aMFpoYTJOV1lVMW9SbWRIWmxwamJXZFpZVmhqUW1KV1kySm1NV0p3WlVoblNHSlNhREZuVm1SVlpXNWlVbU55WkdWaWFXaHZaVXhsWVdScmFFNW1RbUpWWm1oamRHVnJZMWhtV0doYVozSmhWR1V4WlRobVZtWlFhRmhqT0doVFowVm9SR2RLYUVSaFYyZFhhRXBuZVdKalpVaGlRbVpKWkZGak1HWnNZV0ZvWkdoWVptaG9UR0ZrYUROa2NHSndZMVppTVdGclpWbG1VMlF5WldkaVIyVlhaRWRoT0dORFpVZG9iV2M1WTFwalkyWjRaalZrVjJGaFlrSmtUbVpQWTFWa1FXUTRZMlZtVG1OcFltTmhSbWhZWWxkalNtTm5ZMUZsYldZMVltSmpVMmhuWW1SaGQyZGpaRUppYjJoWlptUmxkMlo0Wnk5b1ltWXphSEJqWVdSV1lWZGpPV1ZoWmxKbWVHSXdZV1JrVm1aV1kwcGxNR0poWkROamNHUnFZbFJsVjJkd1pVeGpSR2N4YUVsaVVXUktaM2RrVFdJMFkwbGlhR1Z6WVUxalVXVkVaekZrZEdKUGFFVmpjMkpaWTFGaE1XUnNZbWxpWTJkdVpVSm9kMk5UYUVWa1RtRktabGRsYm1SV1l6UmtVMkl6WVdOb2JtRlJZakZqWkdaYVkwVm5RbVZzWm05a1EyY3daVlppZG1ORlpGSmxUbU4yWkZKbE0yaE5ZbFJvVW1jeVpXaGxZV1ZUWmtWaE1XSklaMWRrV0dReFlWbG1WbWhvYUZaa2NXaGpaR3hrUm1jemFGWm9NR0Z2WWxkbFlXSlhaMFZvVjJkSFpFZGtXV1ZWWjFwa2FXWlZZblZuVUdOblowVmliV05HWWtKa1NtVlpZa0ptYm1ZNVlWTmhaR1ZIWlhSbU5taFpZakJoTVdaeFlsTm5kMlk1WkZOb1JXTkhZMUpqVFdGa1ltbGlkR1kwWkZGamFHVldaelJoWkdSb1lrcGpUR2RIYUVWbVRtaGFaVmxsYm1GS2FIZG9ZMkZGWVdkaVMySkVaREZuY0dVNVptSm1WbVl4Wld0aVlXWklhR3hvV0doU1kzaGxRbU5SWlZsa1VXZHpaR1ZoVW1GU1lrVmlWR2hpWnpCalpHRjZZa1ZuTUdGa1oyOWxSbWRWWldoaFVXTlNaM2hvUW1OdGFHTmliR2haWm1Sb1QyZElZVXBqWTJOaFlteGpaR2RhWVVoaU1tTnNZeTlqUm1ab1pGWmlNMkZHWTBkalFtTm5ZMWxtVkdGb1lXSmlVR0YzWWpoalZXWldaVkppVm1oSVpsRmtWMkl4WjI1bFpXUnVaRXBqVldabGFEQmpZMkpRWTFGaGQyaG9hRGxpVW1OWVkzQmhNbWhYWTJkak1HUldZbHBsV0dGYVlXSmlVV0puWms1a2NHWlhZMWRuU21kNVoyTmtTR2RDWkVsaFVXSXdZbXhrWVdSa1pGaGlhR2RNWTJSb00yRndhSEJoVm1aNFkzQm9abVZXWW5waWVHWkRaME5oZW1Sd1lWVm9RMmhGWkZab1NHTmpaSGhoVG1GSWFHRm1RbU5XWkVsb1ZXRkZaV05oVVdOYVptNWpTbWhYWjBaa1ZHSmtZMWxqVldoWVpXUm1XR2hUWldobVdtRndaRmxpVW1SWlkxbGtXbUZvYUZKbmJXaGFaMjFuUldNMVpGWmlXR2hLWm1GbFZHUjRaMVZuVm1GSFlteG5TbVUxWTJGaE1tZzVZekpsV0dnemFFNWxaR1ZDWjJ4bVNXVk5aV1ZpUldONFptNWxXbVpzWm5Sb1EyZFRhRmhpYUdJclpsZGlNR2h6WlZab1VXZ3daM2huTUdKWlpWZG9TbUpuWlZGalZXaHdaRXBrVldkWVpWWm5kV0ZZWlcxbFNtVndhR1ptTUdONFlucGtSV0ZDWW14b2IyTkRZekJsVm1KMllVVmtVbWhPWm5aaFVtSXpZMDFqVkdkSFpXMW5hR1pSWlVKa1FXWk5Za05qUldkRFlXeGxlV0ZWWjBKaFRtWnhZbVZqWjJkT1lUTmxWMlpzWkdObFYyRmxaVzFsWjJaWFlrSmxiV1ZaWkZwb1pHVXlabHBqYm1oa1oyeGtWV1J1WVZabFFtUmtaVWxpVkdKb1lqRmpZV05hWlc1aGFHSnFaMkppTUdNeFpEZGpWV1pvWmpWbVpXVkZZa2hsVm1oVlpHSmxNMmM1WVVwbllXTkNaRlpvTkdaa2FHaG5TbVpNWTBkbVJXZE9aMXBpV1dkdVowcG5kMlJqWTBGbVJXVkdaVk5sVm1KS1p6bGlZMmhCWjFKb00ySmFZVEpsYTJkYVprUm9SbWg0WlZabVdXTlJaR1JpUm1ObVlXZG9UV0ZNWVdKaE1XWnNZWHBsVjJGclpqVmthR05HWjFKblRtSTJaVkpvZUdKQ1pHMWtZMlpzWjFsa1ZtaGhaVzVvU21KU1oyUmhNV2RrWjB0blJtZHRaR3RvYjJaVlpFSmphR0oxWVVoaFJHUlNaVzFrWW1aSFp6RmtWbUZtYUd4b1RtRklhRUZoVW1ZeFkwWmpWMmN6WkZGaWNHWkxaME5rV1dGTlkwbG9WbVJCWm14blZXRm9aRUppYTJOVVowaGxXbVl5WTFWaWEySkpaVlpqWldkSVpWbG5VMmhUWkhoaFoyTk1ZbFppZW1SSloyNW5TV2g2WkdobVFXTkRaR3RqUW1WQ1kxaG1NMlZvWkV4aFpHVXpaSEJvY0dWV1l6RmphMkpSWkVkb1YyTm5aMHhvVW1WVVowbGxVbUZXWm1sbFRXaFZZazVuYUdOTllrOW1UR1pvWVZabFFXaFJaV3hrWTJWRlltWm5ibVpLWlVsblJtVlRZazVpTjJSVloxTm5lR1k1WTFOaGFHVmFaM0JrV1doU1kxbG5XV1phWW1oa1VtSnRZVnBsYldkR1luZG9WbUZYYURobVZHTkJaVkpsTUdoV1lWaGxVV05DWWpCbFdtWnRhR1JqYW1KWWFESmtUbU5NWmtWaE1XWkpaRUZuWW1aVlozZGlNR1ZLWlVKaVkyUkVZbGhpYldaT1lXTmpSV2hyWTNOaVdXVlJZekZsYkdOcFpHTmhibVJDWlhka1UyVkZZazVtU21OWFlXNW5WV2QzWVZKaFUySmpaSFpsVDJKb1pqbGlVbVJIWjBaaFFtUnZZa1puVm1SMFpIWmhRbVI0WW5CbWRtZEhaak5tVFdWRFpWaGlibVp2WlZwblUyUkdZV2hpVW1oQll6Sm9XbWN3WkZaaWJHaDRhR3BqWTJablpERmtNMmRTWld4bloyVlBZbGxoU0dOdll6aG5SMlJIWWxsa1ZXVmFhRzFtV21kb1ptTmpSbWRXYUhab1YyTnJZMk5qWkdKUllrWmxWV1ZZWTA5aFJHRm5ZaTloV1doM1kxRmpjMlJUYUhkb1pHSkZaRUpoV0daR2FHWmpXV2hJWTFwa1RXaFJZMnhuZUdKNFkyUmxhMmhzWVdobFIyZEZaRTVqV21KWlkyNWlTbVIzYUdOaVJXaG9ZVVJvVTJoV1pYQm5NV2hsWjBWbWMyVXJZVkJoUjJKc2FHWm9WV1JWWjBsb1dtaGFZVkppV21oR1pXWmlRbUZuWVZSa1kyWXdaV1JrYW1GSFptdGhZMlJ4WWxKaGQyRXdaMUpvUkdoQlluUmlUV1pqWkd4aFdXUldZMkZsYm1SS1kxSmpaR1l4WkdSb1MyZEdZMjFuYkdkb1pFWm5hR2huWlhWbFIyaHFZbGxtZW1KTlkycGthR1JrWlZwaWVHVk9aMGhqUVdOM1owNW9WbU5SWXpKbldtSnBZbVZqYW1JNVkwNW1aV0ZHWkd0b1ltWllaV2hvUW1GellWSm1SR0U1WlRKaVZHaEdaM2RuVm1WaVpHNWhPR0ZUWjFSb1VtVm9ZVlprVTJGdFpuUmtlV1JNWmtob1FtZGFabFZrVm1WR1psZGxaR1JZWWtKalpHaGFZMGhrY0doMloxWm5lR1pCWkZwbVIyTlVaMUZpVEdOV1pFaGxNR2hLWWtkb2JtaFNZblJvWTJGNFowNW1TR1JoWTBKblZtWkpZVlZsUldkalpWRm5XbUZ1WTBwbFYyTlRaVWRsYjJFellVaG1VMlpSWmxOaFUyUnJaVEZuUkdoWlpGSmhXV2haWmxwaGFHTlNaVzFoV21OdGFFWmlkMmRXWkZkak9XVmhaVkpuZUdVeGFGVmxSV1V4WWtwak9HaGhaMjVvU21ONVpsaGhTR1YwWldabFNHWnJhRTFuUTJoYVprWm9TbWd5WVZCbE1XSjBhRXhpUm1oVFluZGxLMmhSWkVGbVVtWlFaVkZsZUdWallXNWxTbUZZYUVGb1ZtSkhhR2huUldOSGFFTmtTR1F4WWpabFNXRnFhR3RuYzJaTFpFSm5jMlZSWlZaa1FtVnJZWEpqVW1kQllrVm1jV05GWkZWaFRXTm5ZMFJrYW1neFlVaG9VbWRYYUVWaVQySlpZMnhqUW1OSVlVVmtSMkZhWW5sbFZtUm9hRlpsY1dSalpteG9SbU16WTFaak1HUnZabGRoU1dORFpHTmpWMlJGWVVkak5XZEhabHBuYldkMFp6aG5ZMlZGWTBaaWJXaFhaR3hpYzJoa2FFUmpWbVo0YUZObFRtWnFZbXRoTDJSSlpXZGxXbUo0WjFsbVVXRTVZbE5vUldOSFlWSmhUV05rYUc1a1dtWlRhRkZuYUdkV1lUUmlaR1JvWTBwbFRHZFZaa1ZqTUdKS1lrNWxlV2hGYURSb1pXSkhZVXBvUkdSVFpWWmpjR014WjJWaFJXTjBhRE5rWldkdFoyeGlXR2hYWWxKbFFXZGFaMkZpUVdKMFpVWm5XbU14WjJka1ZHUmpZbFptYkdSNlprRmpiR0k1WkdoalJtZFNaRkppVVdkV1lWRm5VbWd5WTJab2JtWjNZbFprWVdWdVprcGxVbVZrYURGaFpHRkxhRVptYldGc1pHaG9SbWRvWTJob2JXRkdaVWRvV21KdGFHRm5XR2RuWldObVltRXdaRkpoV21GSVpGRmplR2RJWjFka00ySlNZblJtWldWdVpWWmpaV1ZaWXpCb2RHWlVaVlZpWjJGR1pUSm9WbUpJWkhCb1kyTlZhR3RpU1dkV1ptVmxTR0ZaYUZOaVUyZDRabWhpUkdGWGFGZGpTbVI1WldOaFNHSkNZMGxvVVdVd1kwWmxVMk5RWlVoa2FHZFdZbUZtV0dKd1pDOWtXR1pzWkd0b1YyaEhabGhqTkdkWlpsUm5SMkU1WTA1bVJXY3pZVFZsVm1KaFkzaGlPV1IwWkdGa1FtSldaRWxrVldWRlpHTm5VV2hhWlc1blNtVlhaVVpsVjJad1pubGlWV1JZWVdSa1dHRlRaMmhsTldndloyTmxhR0ZaWTJWbVdtWnNaREZsZG1kYVlXcG9NV2gzWmxKaFNHUXhhRU5rWW1kU2FEQmxaR2RXWkZabVNtVXdhR0ZpTTJOd1oycGhWR2RYWW5CbFRHaEVhREZvU1dWUlltSm1WbVJrWW1ObFpHWnNaMHBrUTJaR1lsaG5hR1F5WjBWaWEyZHpZMWxsVVdFeFkyeGhhV1pNYURGa2NHTjNaRk5tUldGT1owcGpWMmR1WTFabU5HRlRaVE5oWkdVMmFFNW9TR1F4YUZwbVJXWkNZMnhrYjJORFpUQmlWbVYyWWtWbFVtZE9ablpuUm1kVWFGcGtTR2RGWTJwb2NHSmlabE5tUW1Gb1lXTmpUMmR0WlZwamVXVldaV2hoVm1SeFoyTm1iR1pHWXpOalEyVnRaRUZtVjJoaFlWZG5SV0pYWjBkbFIyWlphRlZpV21ScFpFRmlNR05RWldoaldXSTNZVVZpZDJab1kxUm1TR05UWWs1a1lXTkpaa2RqU21ZMllrOWxSMk5rYUhGaFUyTjNZemxsVTJkRlpFZGhVbVpOWjJSaGJtZGFaRk5uUW1oR1oyOWhjV0ZrWW1obWIyVmthRmRoVW1SR1pscGlUV0ZJYUVwaWRHWmpZVVJrVFdJcloxSm1WbVp2WnpobFpXZEdhRnBqTTJOaFpHNWhTbVpZWlVWaVFtVkJZVVpoWVdkR1pqbGpUR0ZKWnpGaVVtTmtaMHRsUW1OTllUZGpRMlpGWW1SaWFtaElaR2RqUm1GYWFHSm5VbWhDWVcxblkyaHNZVmxuVm1kaFlXNWpTbVpTWkdSb01XaGthRXRoUm1ScVpYUmlkbWhTWVd0bk1HTXhaRmhuUjJnMWFEQm5aR2RIYUZab1ZtVmhZbFptYjJWVVkwVmhNV1kwWldSblJXVjVZbGxtU1daT1oxTm9ZMlZKYUVObWVHSTRaRWhrUjJWNGFHeGtkR1pXWWpGaGVHWXlaMVZvYTJOSloxWmxaV1JJWjFsb1UyRlRaWGhtYUdGRWFFTmplV0pqWW0xaFNtZFRaa2xqUjJkUlozaG9kR0ZDWVZoak0yTm9ZMHhrWkdjelpuQm5jR1JXWWpGbmEyWlJhRkppUldoSllVeG5VbVZYWnpobVVtVkZZekpoT1dKSVltTm1NV05WWkZOa1NtUnNaVmxoWTJKSFpWRm1hR2RsWjFwamFHZG9aV1ZoVVdoWGFGcGllV0pCWXpObE5XVllZa1ZpVkdWNFpuQmlXV1JTWmxsaldXWmFZbWhuVW1kdFlscG9iV0pHWTNka1JXSjVaMEZsU1dKU1ozaG1WbUZNWTBaalFXZENaVEJoU1dkdVlWcG5hbVpEYUVka1dtZE1hRkZvUm1VMFoxRmhUR1ZGYUhoaGNtWmthR2xsYTJndllrZGlXR0puWWpSaVJXVnNaVmxtV1dGVllUQmpTbWhwWWxCalNHRkNaM05sVTJaQ1ptUm9TR2RHWkdwaFFXTXlhRVJpUTJoTllubG1ZV05XYUVaalptTkZaa0poYUdkbmFFRmxlR1ZrWjNaaFNHTkJaalZtZG1WV1lsaG1iMkpVWmxkaU1tVm5Za1prVVdKVlluUmtTR05IWlRKbk1HWTRZMWhqZW1VNWFIRmtZMkpzWmtaaE0yUldhREJvYjJKWFltRm9WMkZGYUZkalIyZEhZbGxoWTJOTVpUSm5XbWM0WjJOalFXaEdaR2hpUjJkUlpUbG5ZMk5VWm5wbldXSmtaVTFrUTJVMGFHSmhUbUl3WkZWamEyRlJaMmRuV21KbFowOWhiV2RTWmsxbVpHVnVhRnBqVTJGUmFHaGxWbUUwWTJSaWFHRktZVXhsUjJSRllVNWtXbUpoWjJwbFpHWjNZV0ptVldobllVdGpVMmhWWTFKaGNtSmxZa1prVG1JclptUmhhMk5PWlZoaVYyZFNZa0ZvV21WaFkwRmpkR05HWkdKaGVHWkZhRlJoWW1Fd1ptUm5lbUpGYURCaU9HZHVaVVpvVm1WV1psRmpSR1ZvWjBKbmFtTmpaMnRoVVdWQlptWm5TR2gwWm1Sb1dHSldaV1JtUzJaR1ptMW9iR2RvWlVabWFHRm9ZVzFoUm1OSFpscG5iV1paWTFoa1FtZFdaa3BrTVdWUlpWaGtVMkpGYURSaFpHWlhabXBvZEdOcFkyUmxhMlZzYUU1b1lXWnJZWE5vVUdWVlpXaG1RbWhyWjFSaVNHZGFaekptVldSclkwbGhWbU5sYUVSaE5HUmpZa2RrTUdJd1oxRmpSV0pYWW05a00yaGxaMWRrZEdOcGFGRmpNR05zWVdGalpHUllZV2hrVEdSa1p6Tm9jR0Z3WmxaamQyWjBaRlptVkdSVVlURmlXbVZEWXpKbE9XaGFaME5uUldoV1praGpZMlI0WlU1blNHWmhZa0psVm1GSllsVmpRbUp2WlRabVdtVnVaa3BuVjJGR1psZG5jR1I1WTFWb1dHaGphRkpqU0dZeFpHZG1jV2RPWlZaaU9XRllZa3RqUW1SUlpXTmhZbWhxWVZaa05XaFdabFJsVW1KM1psSmplR1l3WW1SbVZtTldZVXBvTUdoaFpqTmxjR0pxWWxSbFZHaG5aazlsVjJoM2FHUm5RMlZMWW10aWQyWklZV1ZrUVdGWlprNW1aR1I1YUVWaGFXZFdhSGxtY0dSTFprVm1VbWRuWnpkbFpXWm9ZbHBsTkdkSVowVmxjR0pCWjFGbFZtYzVaelJsVTJjelpXUmhObVZoYUZaa1pHZGFaRVZqUldkU1pVTmpRMmd3YUZab2RtWkZZMUptVG1oMlpsSm9NMlJPWjFab1JXVnBZVnBrVjJaSVlVSm1hMlZKWTFoamJXZFpZbFppV0dGcllrWmxiV1pqWW1kaFRtVTNaRlpuZDJWTlpXRm1ZV05UWmxGblptVkhaa1JuTUdZcllWcGtiV0ZhYUdobVkyWkdhRlppZG1oWFpHdG5ZMmRrWVVoa1VtZE5ZbVJqU21adGFIUmllV05PWVZGbWQyZzBaMU5qTUdKQ1lsTm1SR1JYWWxKa1kyVmlaMWhoV1dOWVlsRmlaMlowWXpSalQyVlNaVXBuVG1aSVltdGhUbWhaYUdGamFtWXhZM2RvWldnd1ptZGtTMmhUYUZWbFVtRnZaMlZrUW1oc1pqVmxUbUpwWlhkaFdtRklZV3RsVW1aU1ltRm9SbWRqWVZwaVltTXhhRFJoVkdSaloxWmpjR2g2WWxKa01HWnJaR3RpVldkQlpGbG9XR1ZGWWpGa2FHZDJaV0ZoVm1aWllXVmpXV1pVWXpGbVdXRllZMVpoWkdkTFpFWm9iV2RzWkdob1JtVm9aR2huYldkR1kwZGhXbUp0WjFsaVUyWkpaSFZtU1dOR2FIQm1UV1ZJWjFaalVXaHZhRlZuYldGc2FISmtUR2RvWkdkblEySkdhREZqUVdoc1kxVm9hR1JDWld0bFZHWklZbHBoTW1aVlptdGtTV2RXWjJWbFEyZFNaVmhqU0dRd1pqQmxVbUpHWnpKaFNXZzVZMkZvTVdod1lrbGhVV1l3WW14bllXSmtZbGhqYUdOTVoyUmxlV0prWmtSb1ZtY3hhR3RsVVdKSFlsZGtaMmRNWkZKbVYyRTVZbGhrVW1ScFlVVm5SV0pLWVRGaGIyZEphRXBvYUdaVlpHcG5WMlZDWTAxbVdtVmFaR2xuYkdRNFpFWm1WMlJ3YUhsalZXRllabVJsV0dSVFlXaGhXbUZ3WWxsbFZXZFNZMlJrVFdKclpVVm9NR1JMWkVkaVJXZHJaRlptVjJRMVowaGlWMk5vWVRGblNtRlVZbTVrYUdJd1kyRm9NMlZ3WjJwalZHZFhaM0JvVEdkRVpIZG1PR1EyWjFwaFJXZDRaakpoWkdWc1owcG1RMmhHWkZoaVoyVm5ZbFZtZUdWclpGbG5UV1JzYUd4bUwyWmpZV3BoYkdVMFkxaGtWV1Z3WWtaaVkyaElZbFpqTkdkVFl6Tm1aR0UyWm1GaFZtaGtabHBrUldWQ1kydG1abU5EWnpGaWFHUjJaRmRpUW1KMFlUVmpWR0p1WXpobU5XWlNZakpvWjJaV1psTmxSbWhDWWtoa1JXUkhZMXBrZVdKV1lXaG5SbVoxWm1OamEyRjRaek5tU0doclkwbGxRbVJaWWtoamIyVTRZMGRpUjJaWllsVm1XbVZ0WlZwbWFHUmpaMFpsVm1OdVpFTm9SV0ZzWkM5b1UyRkNhRTFoVldaTllsUmtiR2MyWldabWEyVXdZV3RuVVdObllVNWlOR0pGWTBkaFVtSk5aR1JsYm1WYWFGTm5VV2hvWVZabk5HWmtaV2hqYjJaYVlrWmthbUpCWVZabVRHVlRZVlZuVTJOS1lWRmtOR1JHWVVSalFXUm9ZakZvV21GVmFITm9TV1JqWlRKalZtRTVaRmRrVW1KQmFGcG9ZV1JCYUhSa1JtUmlZWGhvUldGVWFHSmpNR1E0WVdoaFNHaFRZalJpUjJSYVpHcG1aMlV4WVVwaFIyZFJZVnBsU0dSNlkyUmtkR1JHYUZKbFFXVnZaMEZqZW1GSllqVmlSbVp1WkZKbGFHUkJZM2RvYUdOMlprZGxSV1I0WjIxbVdXUllhRUpoVm1aaVp6Rm9jR2hJWVVoblVtSXhZbFpqVjJocVpuQm5iR0ZFWTJobmIyVTVaRVJuZVdjNVpYZG1UV1l5WWtsblYyVk1ZVkZrT0dKS1prbG5WR2hrWVd4a1EyRkNZV3hvWjJaUVlYaG1hR0psWTJOb01tZEtabmxrWTJkSVowSm9TV2hSWmpCaWJHVmhZbVJrV0dob1lreGxaR1o1Wm5kamJXWklaMmhqTUdkUlowTmhWMlpuWjB0bFYyVklZa2xpVW1KU1pqSmlSV1I2WWtOa2JXRk5ZbWxsUkdWSFoyOW5jR2RKWTJwblZtRjRZa2huZDJjd1lXeG1XV1ZDWVc5aVEyTlFhR2RtVldGcVoxTmxaMkpzYUhCblRtSlNaV2hrYzJoSWFESmtVV2RFWWtGbWFHUTBaRkpqU21SNGFEQmhOMlpRWlcxa1NtaDFZa2xtUTJoSlpVVmxRbVpCWVdkbVdHZFVaMWhuUW1oTVlWTm1iR0Z2WjFwb1ltSlZaVUppWTJGa1lXeG5TbU5EWlVabFdHWm9hREpqUldGclluTmtXV2hSWkRGblJXRjNhR1pvUkdoemFHUm5RMlZTWkhOaGJHWklZWHBuYzJFdlpVaGplbVk1YURaaVpHTkdaV05oVjJOSGFFSmtRbVJvWlVKbk1tVTVhSFpvUldSU1pFNWxkbWRTWXpObVRXaFVaMUpsTW1GbloxWmxVV2RDWVRWaVNtTlJhRU5sYTJZNVprZGxiV0ZaWW1wb1MyUkNaMUprTTJSVFkydGpiMk5QWkdWaVNHVm5aRVZvUldoWGFHOW9LMkphWTIxbldtUm9aR05rUm1OV1pIWm9WMkZyWjJOb1pHUklZVlpqTUdoalkyVm1hR1pSWXpkbVRtRm5aVzlsYm1WRVlXdGtSV1pIWWtWbFNHWnNZMDFvVFdORFprMWhZMkZCYUZWaVJXUjRaazlpVm1SNFlreG1SV1JDWldSaVVXTlpaV2xtYkdGaFpXTmlSV1JvWjBSaVUyaFdhSEJtTVdKbFprVmtkR2N6WkdWbmJXVnNZbGhoUTJVeFpGWmlUbVJRWjFaamEyUk1ZbUppZUdOc1praGpXV05VWVdkbVRXRlJaWGhrVldKdVkxRm9VV2hqWTNaalQyZENZVUppTjJKalpXaG5aMlZpWjA5amFXSkJhR1ZsU1dWNFoyZGlaV05VYUhwaGEySnJaRWhoZUdKU1ptMWlVV0ZJWkRGaFRXSlpabGhqUW1aV1pHSmlNV2R3WVVobFNHaFNaVEZqVm1SVlkybGpiR1ZwYUdSbWEySnNhRTVqWVdKclozTm5VR0pWYUdoblFtZHJZbFJrU0dOYWFESmlWMlpuWVhkbFltUlFZbWxqVW1Wa1prSmhhR05vWkdWblYyaFRabEZqYm1WUVlXcG9UV1JqWmtOa1oyVlpZMVZvWkdaWVpVRmhabWhsWWpOb2IyRTNZMWRqTVdKc1pWcG5SV1JIWjJoa1VXZGlaVEpqT0daU1kwVmxNbVU1WVVoaFkyUjRZMDVrU0dGaFlVSmxWbWRKWVZWblFtZFdaVlpqVFdKcFltTmtSV0pYWkRKa2IyaG9aVmRvVkdGclpVTm9RbVZzWjNCamJHRlpZVlZtU1dGVloxcG5hMmRhWm5GbldtSnBaMmhqTldkVVoydG1WbU5oWlZKamVHY3daMlJuVm1aV1kwcGlNR05oWnpOaGNHSnFaMFZsUjJWT1kwaG5TbU5XWTBsaFVXVmFaRVZqZUdneVpXUmliR0ZLWjBOb1JtTllZbWRqTkdoSVpFUmhPV2hvWVUxaWVtZDNaa2RpUkdOU1prVmpRMk5QWldsb1NXWjNaa3BvVVdSWmFFNW1UMlYzWm1OblZtaEhaSGxoVG1OYVowWm5hR2M1WVVOa1EyVXdZMVptZG1oRllWSm5UbU4yWmxKaE0yZE5hRlJrVW1NeVpXZGhWbWRSWjBabVoyaEtZa2hqYW1oWlpXZGhSMmhWWmtWbmJHWktaMmRuWjJSdVpVVm9hMmRTWkhCblJtRnFaRVppUldkV2FIcGpTbVJpYUVkaVVtVnNaR2hsWW1KV1pGVmhZV0pGWkhkb2JHVktaRUppVkdkUlowRmpTbVJwWW05amFtZGlhRkpoTUdNMFkwSmpSbVZ6Wm1SaFVtZEVaVEJrWTJWTlpUTm9PV1ZsYUdGalFtWldhRFJuWkdKb1lVcGlUR2hIWlVWblRtWmFaRmxoYm1GS1pYZGxZMmRGWkVGb1RtWlNZbmxuVldKTFpFdGpRbUpyWnpSaFRHaHBZMWxvYjJkS1pXaGtRV2hGWjJGbVNHYzBZVTFoU1dSVlpWVmtUR1JFWldoblZXSm9aVlZoYUdVMVoyaGxSMlZYWTBwbVVXRlNZM2hpUW1kdFpXTm1iR0paWVZaallXWnVZVXBpVW1Wa1p6RmpaR05KWjFGaWVXZGpZV3huVldNeFpEUm9kbWhYWTJsbFRXaHBaVmxrTTJaQ1lWVmtZMlZzWjI5a1ZHSlNZMFZqTUdSUlkwaG9WR1JLWVhKbVEyRlVaVzlrUVdKTGFFRm1VbVJFWTFWamFHVmFhR2xpV21odVkxcG5NbVZWWm10aFNXRldZbVZvU0dGWmFGTm5VMko0Wm1obVJHTlhabGRoU21kNVprRmplV05yWVVab1FXSlJaMWxoVjJWbFpIbG5jMkZpWkUxbmFtWnJZbWRrUldSbloyOW1VV2RJWmpKbE5HSm9aMUpuVjJnNFkxSmpSV0l5WVRsaFNHRmphSGhqVG1SSVltRmxRbVJXWlVsb1ZXVkZabVJuWldWSVkxRm1SV1JRWTFkaVEyWm5hRGxsU0dkWVkydGhSV0pIWVd4aFRXSnhaRXRvUm1oT1preG9SMmQ0YUZKbk4ySmxZek5tZUdWM1pVZGtNbUU1YUdOa1VXRlVhR05sWkdSV2FGWmpTbVl3WW1Gak0yaHdZV3BsVkdaWFkzQm1UR2hFWkRGb1NXVlJZbHBoUTJaTlpqQmpVR1ZDWldObFFtUlJZbGhsV1dONVlWWmxkMmN4WlZKaVJHVlNaSGRoVTJSSlprUm9PR2RuWlVSaVVtTkZaV1JsUVdNelpUQmpNbWRTWVROblkyTktZMDFpUW1kdlpXSmxXR2N4WlZaa2JXZFhaRUpoVldWeFpsVm1iR1Z2WTNGblJtVklaVGhpVkdoSVlVVmxTV1pXWWxObVJtWkNaa2huUldSSFkxcGhlV2RXWTJobVZtZHhaR05pYkdkR1lUTm9WbU13YUc5alYyZFFabmxsUW1aaFlsUmlVMkpOYUU5a1dtaHBZMmRuTUdOUVpVSm5iR05xYUdObFJXZGpabVJqU0dSV1lWWmxVMmhrWmtkaWRHWTJhRmxoTUdJeFkzRm1VMlYzWWpsaFUyaEZaRWRsVVdoUWFFOWhWR2huWVZWalEyZ3hZMGxsZEdSS1prWm9UV0pLWTFablFXZGFZVVJsV1dkdWFFNW9aMlJtWTBkaFNtSkVZMU5tVm1Od2FERm5aV1ZGWjNSaE0yTmxaMjFqYkdKWVpsZG1VbWhCWjFwa1lXZEdhRnBsVFdkYVkyaGxNR2MxWW1Kbk1HRmthSHBvUldJd1lXUmpiMlJHWlZWaWFHWlJZVkpoZUdabloyOW9abVpDWm1Sb1dtZEtaV3BsTUdWVFpHUm5NR2R3WWt0bVZXTkVaWGRvZG1WV1pGVmtkMlIyWmxka2VXSm9hRzFtWVdoVFpWSm9XbWRpWVhkaGFHUk1aMGhrVm1KU1pHTm9WV05wWkRsblFtRmxZbTFrVG1oT1lXRmthMlJ6WjFCbVZXVm9ZVUpvYTJKVVkwaGlXbUV5WTBGa1FXSmtaVUptVEdkVFkxSmxZMkpUWlRCbk1XZE1aVVpoZW1oalpTdGtVR1pJWm5oa1NXWkdaREJsVm1KaFpFcGtNMlpTWlV4bVVHZHVaazVuZVdKbVpsWmxhMmRSYUVka1YyaG5aVXhoVW1GWGFEaGtVbWhGWlRKaU9HZGhZMlZqYUdVNVpIUmpZV1ZDYUZablNXRlZZVVZrWTJKUllWcGhibWRLWWxkbFJtaFhZVWxrT0dSWVpIcGxXV1ppWlVKb2JHaHJaSEZvUm1OR1ltaGpUR1pLWkRGalNXaHFabHBtYm1ONFpYZGhSV0Y2YUc5bVZXZENaRVZrYkdOVlprZGphR0Y0YURCbldXWjVaalZsY1dWVWFGUmxSbU5vWlVSbk1XaEpabEZtV21SRllYaG1NbVZrYUd4blNtZERZMFpqV0dkb1pUSmxVV2RCYURWaFRXWkdaMmRuYzJKeloyTmphbVJhWlRSalFtZG9aVmxtUm1GR1ltNW5iR1EwYUVoak0yZzFabWhsVVdZeFlXUmhXbVZGWmtKb2JHRnZZa05oTUdWV1kzWm9SV2RTWlUxa2VXWlVZMjVqT0dZMVpGSmtNbVJuWVZaaFUyVkdZVUptU0dORlkwZGlXbU41WVZab2FHUXdabXRqWm1aQ1pFRmxOMlpIWkhkbFZtRldaRWhrUTJNNWFFWmxWMkZUWlVKa1VtZEdZMU5tYjJGMVlVcGpNV2RXWVhsalYyZG5aRVprU1dGVlpuaGtXV05IWlZCbVUyVlJaREJsV1dFd2FGVm9LMmhSWldkbE9HSktaVTlsYldWU1prMWhaR2h1WmxwaFUyaFJaR2hvVm1jMFlXUmhhR1ZLWWt4alIySkNaMFZvWTJOT1lXbG9ZMkpwWjFCa2EyTm5aRVpvVVdKU1pGRmtaMkpPWTBGblpHSTNaV1ZsYW1FeFoyVmlVV1pxWm05bldtWmhaVUZoZEdKR1ltSm1lR2hGWmxSaFltUXdZbVJpZW1aVVpXdGtOV0ZyYUZCbU1HWm9aRkZvVW1aNFpVSm5iV0pqWTJ4bldXSldaR0ZpYm1oS2FGcGpUMlZXWm10b1JHTlNaMUZqYzJFd1pGVm9SbWcwWjJwa1VtTnRZMXBuTjJkWlpsUm1XV0ZCWmtsalVtVnJabFJuVm1WR1pFbG5ZbUZWWm01bGQyTXZZV05oTW1STlkxZG5VV0pGWVhObFVHRlZabWhsUW1KcllWUmhTR0phWnpKbFZXWnJZMGxuVm1ObFlrTm1VbWRZYUVoa01HUXdaVkpoUm1neVpVcG5lbVJsYUVSbk5HZGtaVVJpZDJkV2FHRmlZV0ZIWlZaaVRHUkphRE5rYjJFeGFFTm9NV1ZyWVZKbFZHRlhaVnBtTUdSRVprUmxlR0Y2WkZKamFXSnJaRUptVG1KcmFFWmpUMlpqWW5wa09XTkpaVlZrUldSallsRm9XbVp1WWtwbFYyZEdaVmRuY0dGNVlVUmxTR00xWjJKb1dXVkNhRnBrY0dSWllsSmlXV2haYUZwaGFHUlNhRzFqV21kdFkwWmhOR0ZIWnpKaVJXSmFhRU5oUm1WQ1pVNWpSbVpCWmtGa2VHTmhaREprWkdkcVkwTmplbUU0WjBabFZHaEJZMXBoV21OTFpuZGxTbUl5WTJaa1oyTmFaRTltUm1aVGFIQmpMMmhGWm1oalFXSjVaVkZrTVdkc1pHbGtZMmR1WTBKbGQyVlRZVVZqVG1aS1pGZG5ibU5XWWpSbVFXZHFZa1pqTm1OWllsWm9XV0pZWTBob2JHUkJaRGRsWVdKU1prRmhjR0pXWXpGb1dXUTVaVlJsZVdOalpXRmpVbVI2WkZKa1NtSlRhRVpsUldWS1pVaG5hV2c0WVdoa1RtVkZhRUZpYzJaT1prSmxVV05zWWxoamVHZG5aR1ptV1dSRlpYTmtWMlJIWVVkbVdXRlZZbHBuYldkYVoyaGhZMk5HWjFabGRtTlhaR3RoWTJka1owaG9VV1ZGWW1GalNtTnBhRkZoZEdGWlluZGhUV0oyWjBoaVFXRTRhRzFvVTJoVVkxRmhTbU5GYUhsaVVXVkJaa1JvVldaa2FIZGlaR1ZJWTAxbVdtVllZM2hrV1dOVlowcG1lbUYzWVd0bFNXTXdhR2RpVDJoSVpFRmphMlJvWldWa1FXRnJZM2xrWldKblpITmlRMmRJYURGaFdtRmpZazlpYkdWb1lraGtXbU5uWW05a05XaGlaakJrWkdoNlpFVm5NR0ZrWm05aFJtTlZZbWhtVVdGU1luaG9RbVJ0WlU5bGVHUkJhRlpqV1dkcFlscGhVbVZoWld0amNHUllZa1pqYW1KMFptOWhSbWhyWTI5amFtRlJZVVJrVFdJd2FFeGtNMlpDWTBabFpHTklaMEpuU0dWSVlsSmpNV1ZXWkZWbGJtUlNZM0pvWldWdFpFNWtUbUZoWld0a2RHaEtZMGhpVldKS1pXdG9VbUpHWlhobE1tVlZaR3RvU1dOV2FHVmxTR1ZaWWxObVUyRjRZV2hqUkdSWFlWZG9TbVo1WkdObFEyUlpZVXBqUldWVloydGpWR0ZrWWxkbVZtVk1aMGxqTTJSUllteGhSV1ZvWVdSaldHVlVZVk5qUVdOSVpGSm5VMlZ2WkZKb1JHRnRZamhvVm1abVpWWmtPR1ZEWkVwb2JHaEpaV05rUjJKRlpuTmlVV2RMWmxoaVNtZE1Za1pqV0dKd1lTdGlWV05VWkRsbVdHRldaWGhqV1daRlprbGpSV2hLWVZGaFlXZEdZMnRuZG1kTFkwZGlhMlExYUZkaFYyYzRaMlptVkdobmFGbGxNMmRXWTFaaVNtUXdaMkZtTTJad1pXcGpWR1JYWkhCb1RHZEVaREZoU1dWUlpWcG1SV1ozWlN0b1pHaHJaM2hsUTJoWFptMW5UbUpqWTBWbmEyaHpaMWxvVVdZeFlteGlhV1JqWjI1aVFtZDNabE5vUldKT1kwcGtWMlp1WVZabmVtZFJZMFJuYUdaUlkyRmtWbWhrWVZwbFJXZENZV3hrYjJaRGFEQmpWbU4yWTBWaFVtSk9ZM1ptVkdWc1kydGpWR05TWlRKbVoyWldaRk5sUm1aQ1praG1SV2RIWVZwbmVXWldaV2hqVm1OeFltTmhhR2RuWlhoa1ZtVXdZVXBqUTJkRlltbG9OV1p5WlVkb1IyWmphRXBuWldJeVkxbGhlbUpEWjNoaWIyaFRaRlZuTUdGa2FFZG5UbVF4WWxaalUyWmtZVWRtZEdJMlpsbGhNR2N4Wm5GaFUyaDNhRGxsVTJORlkwZGxVbVpOWVdSa2JtZGFaR0ZrUTJkNFlsWmhiR2hrWjJ0aVdXTjNaMVppZW1VMVlsRm9ZbWh1WlVwaE5HSk9ZMVZpYUdobFkxTm5VV2huWjA5blRtZDZhRnBoSzJWWlpGVmxUbVJZWjFkb1VtWkJaMXBrWVdKQlluUmxSbWRpWW5oaVJXRlVaV0prTUdoa2FIcGpSV2d3WW1SbGIyZFdaM2hsYjJGV1owSm9iR04wWkRsb1YyRkdabGxpVm1GaGFHNWxTbWhTWkdSbk1XZGthRXRsUm1SdFlXeG5hR2hHWTJobmFHTnRZMU5sVldONFpHMW1XV2hZWlVKb1ZtRmlaVEZqY0dGSVlraGtVbWN4WWxabVZXTnVaRkZuTldGUVlucGpZMkpaWkU5alFXaFZaVkJvUm1ONGFFSm5ObUZVWjBSaE9XVXlaMVJvVldGSmFGbG9ZV1JZWmxsaFNXWlRaREZtUm1KRVpsSmpNbWRKWnpOaFkyaEhZVGxrU1dOVlpHdGliR2hCWVdSa1YyZG9ZVkZsV0doWWFIQmtjR0pXWkRGbmEyTlJaa2RuVjJWbmFFeG9VbWRYWmpsb1RXRkhabTFpVG1KMFlXTmplR2RPYUVoallXVkNaVlpuU1dGVlpVVmlZMmhSWTFwb2JtaHZZMWxpUjJKNVlrMWphR0pPWjBSaWEySlZZVUpqVm1WSlptZG5UR1l4YUVWb1dXUmxaSGhsVVdObllVMWplV1k0Wm5wbFFXUlRhRmxrVm1aRGFGSmpNR2hXWlVGblZtTjBZVEJuVFdOR1pVSmphbWhVYUZkamNHVk1aMFJoTVdkSlpWRm1XbUZGWlhobk1tVmthR3hpU1dkU1pWRmphbVZGWTJsalZXSlJaazFtV1dSVFozbGliMkV5WTBsbFJHWnJZeXRrUkdRd2FITmhaR1ZWWXpOaGMyUnpaRUprUW1Gelp6RmtVR1JvYUVsb1RHWmpaVEZqWjJNM1pWUmlhMkV4WkcxalIyaENZVTFsTUdGaVlWaGlUV1pVWVZKb01tSm5aMVprVTJWR1lVSm5TR2hGWjBkbFdtWjVaMVptYUdkV1ozRmhUV05TWjBGamEyaEZaR3RrYjJkVlkwbGhVMkZTWTA5bFIyUnVaSGRsSzJGYVpXMWlXbUZvYUdOb1JtZFdablpvVjJOclpXTmhaR0pJWVZabVZtWlRaV1JuUjJOell6Vm9TV2hvWmpSb2RtUlRaM2RpTUdoSVpWSm5RMk5LYUZWalpHRkhZbmhsTkdGUlpXaG1WbVEwWm1SamFHUkthRXhrUjJORllVNW9XbVJaYUc1bFNtaDNZV05pUldoblkwRmhRMlZCWTJ0aGQySmxhRVZvYTJOcFlreG1hV2c1WVdGa1VXVlNhRWxpUkdOUlpHZG5kR1JHWm1KaGVHaEZaVlJqWW1Zd2FHUmhlbWhGWmpCaVpHWnZZVVpoVldkb2FGRmpRbWRHWWtWb01XZE9aekZtV1dkWVlVdG9lV1pGWlZOalVHZG9hRFZtU1dORVpVVmxUbUZvWmtaa2FHRm9abTFoUm1WSFkxcGhiV1ZaWTFobFFtWldZMkptTVdGd2FFaG1TR1ZXWmpSbVZXSkJabFJrUm1oeWFHVm1RMlE0WWsxbFVHSm5ZMHBvUW1SUlpuaGlTbWNyWjFwamJtSmFZekpqVldKclpVbG1WbU5sWlVoaFdXWlRaVk5pZUdob1owUm5WMlZYWWtwbGVXWk5aWHBqUldSaVlrSmhhMlJzYUZsblRtZDZaa1ZoUm1OT2FHbGhaMlYzWjFaaFZXSk5aelpqUjJaWFpXZGtUR1pTWlZkbk9HZFNaVVZoTW1NNWFFaGxZMkY0YUU1bVNHaGhaMEpoVldoTVlrVmlVbVJTWmxaaldtTnVaa0ZoVldWV1lVUmthMlV6WTFKbU1tWk9ZbFpvVldKRVpuaGtjR2RaWWxKaldXRlpZVnBoYUdKU1ptMW9XbWh0YUVaa2QyVldaRmRtT1dSaFkxSmxNV0kxWW1ObFFtVm9ZbVJuTUdkaFlWTmxPR0ZuWjBoamJtVm9aRXBsUm1oWVpXZG1VV2hhWlVWa2VHY3lZMlJrYkdkS1lrTm9SbVZZWTJoaE1tZEZZV3RvYzJOWmFGRm5lR1p2Wm1wbVNXaFVaMVprZDJaVFpHaG1XV1pMWmtObFdHSm9aWEZrVTJkWFpqRm5VV2RoWWxabVpHSmFZMFZvUW1Gc2FHOWhRMkl3WWxab2RtSkZZbEppVG1oMlpGSm5NMlJPWjFGbFFtVnFZWFJqVVdGVFprWm1TV1ZUWWxKaVEyZENaV3BvVVdoR1oydGpkbVpqYUVWaWRHWmtaVlpuTUdadlpGZG5ZV2RYWWtWblYyRkhZa2RvV1daVlpscGpiV2hhWVdobFkyaEdaMVZqYzJOSFpuaG5VbVZaWmtobFZtVmpZa2hqU1daRFlURmtNMlZqWTJ4aGMyRnRhRVJpWjJZeFpVbG1UMlJ0WlZKblRXWmtaRzVvV21oVFkxRmlhR1JXWnpSbFpHRm9ZMHBoVEdoSFpFVmtUbVJhWTFsb2JtZEpZV2xvVG1oU1luZGpWMmRIWkhobFVtWXhhR1ZtVm1WMGFITmxWV1JIWm14b1dHSlhaRkppUVdoYVpHRmlRV04wWlVabFltTjRaVVZvVkdSaVlUQmlaR2Q2WkZaaWQyZEpZWFZsVm1SQ1lUQm9ZMlpGWjNkb2NHaE5ZbU5pYkdaWlpsWmtZV0Z1YUVwbVVtZGtaREZrWkdSTGFFWm9iV2RzWjJob1JtVm9abWhpYldGR1pVUmpVV1JxWkU1bFUyVlZZMGhpU1daV1ozQm9SMlZFYUVGaldtUXZaRlZpYm1kU1pYSmpaV1p0WlU1alRtZGhZV3RsYzJWUVpsVmthR2RDWm10aFJXVldaWGhuTW1kVlltdGxTV0ZXWkdWa1NHTlpZVk5qVTJSNFlXaG5SR1JDWWtka2RHZ3JZbGRpYm1SQ1lVbGlVV0V3WVd4allXTmtaVmhpYUdWTWFHUmtNMkp3Wm1oblIyaFdZbVJqVkdaV1pXbG1XbWRKWjBKblJHZHpZVkprUkdadFpUaGpRbVpLYUd4a01HWkZaRkJtUm1aM1lraG9TR0ZyWW1Oa1dXaE5ZbTVvTldOWGFGSm5NbWhPWlhsaFEyZHNaREZpV0dGVFltaGxXbU53WkZsblVtZFphRmxrV21kb1pGSmliV05hWW0xalJXRTFZa1ZrTW1VNVlWTm1VbUZvWjJ0aldtZFlZbEZsV21NNVpWbGpiR1pDWjJwa1ZHUlhaWEJtVEdaRWFERm1TV1JSWjFwalJXTjRaREpuWkdkc2FFcGpRMmhHWVZOamQyWXJaVkZvUVdGU1oxQm5VV2Q0WjJOaWJtTktaRmhpUVdWRlpFVm5VbVJOWmsxa1VHRjVhR05rY1doQ2FFTm5WbUo1WjFGak1XRmtaVnBvUldOQ1pteG5iMmhEWlRCa1ZtZDJaRVZvVW1KT1kzWm9VbVl6WTAxbVZHUlNZakpvWjJkVFlsTm5hR0ozYUU5bFVXVjZaa3BoZDJKV1lteGpVV00wWWs1a1VXSlJZalptUldOblpGSm9RMk5oWTFOa2VHRkVaMU5uZW1WSllWVmxTbWhEWTA1bWFHTk5ZVkpvZEdoMllVOW9lR0ZXWjFCbldHRkJZWGhsVTJkUFozbGhNV2cyWVVGaVVtaG5Zbk5qUkdkVlkyOWhRV2RSWlRKblRtSnRabVJtYm1KYVoxTmpVV1ZvWjFabk5HRmtZV2huU21OTVowZGtSV1pPWTFwbFdXVnVZMHBpTldaaFpqSmhTbUZFWWxObFZtUndhREZuWldaRlpYUmpNMk5sWm0xbGJHWllZbGRpVW1kQ1oxRmxUR0ZuWlhSalRtWm1ZM2hpUldKUFpHTmtiR0Z3YUhwaFVtWXdZbXRpYTJkVlkwRmtXV1pZWmtWaE1XTm9aWFprWTJGblpGSmhVV1JRWldsa1kyUkVaMDlsVm1GalpFVmpSMkZEYUdka2RHWlhZMnhpWTJOc1kwaGpTR05hYUhaaVpXaHNaSEJuVm1kaVlqRm1jR0ZJWVVobVVtRXhZMVptVldkdVoxSm5jbVZsWkcxblRXTmlZMHRuZUdkcmFGQm5SMlIzWkhSblQyRlVaRWhpV21JeVkxVmlhMmRKYUZabFpXZElZMWxvVTJoVFluaGhhR05FWWtWbVEyZFNhSGxtWldoRFlsbGlTR05EWldka01XVmhaMXBoV0dab1pWZGtZV1J0Wm1SbWNHVkNZVlprUVdZMlpVZGhWMmhuWkV4aFVtSlhhRGhpVW1WRmFESmpPV0pJWm1ObWVHTk9aa2hvWVdWQ1pWVmhUMmRJYUhob1ZXSlJaMkprYVdOQ1pGZG1RMk5IWjNCaWFXTllaMWhrWTJGbFkxTmxaMk4wWkhCaVkyaFJaREJpV1dSTWFIaGpVbUkyWWxwb2FtSldaeXRtUjJaVGFHOW1WV1ZCWWtWa2JHTldZVlJpYkdKS1pDOW9XV1ZFWjA1bmNXWlVZVlJrYUdGTVowSm1SV2M0WkZGb1RXSkVZMk5vTDJKRFp6RmhkMlpQWTFWbVJHWlpabmhtVW1abllVMW5SR0poWkZabmJHRnBaR05pYm1OQ1lYZGtVMmRGWWs1aVNtVlhZMjVoVm1ZMGFGTmplV2RGWVRkblQyTXhhR05pWTJoRlprRmxVbWh2WkZKaVZXRnphSFZsV0dWV1pUaGxaMlZDWmtGaFdtUmtaVVprUTJOc1kxUmlSR1pXYUdka1ZtWkhZVmRtY0dKWlpsWmhhR2hXWTNGa1kySnNaMFpvTTJKV1pqQmxiMmhYWVdGblYyZEZZbGRtUjJKSFpWcGpZbWhhWm01b2RHUm9aMWxsUldZMVlVWmhWMk5yWkdOaVpHWklZbFpvVm1WVFlXUmpSMkowWVRaa1dXY3dhREZvY1dSRVoxVm1RV1pCYUVWbFIyRjNhRVpoWkdOdFpuUmhVMkZWWm1kaU5XWTBaMUJtZUdGS1oxaG9SMmRDWW1SaVdHRk1ZbXBoWTJJclkwNWxlR0YzWmt4blZXSnNZWEJoSzJKalozZGlTbVFyWm1WamFtTktaemxsVjJSU1pFRm1XbUpoWkVGamRHRkdaR0psZUdGRlkxUmpZbWN3Wm1SamVtUkZZakJuWTJnclpGWmxRbWh3WWxGbFJHSjRZVUppTjJkallXZGxTbWQxWTBsamQyRTVaRXRpV0dOV2FHUm1TMlpHWW0xaWJHUm9ZMFptYUdGb1pXMW9SbUpIWkZwaGJXSlpaMWhuUW1SV1lrcGthR2g0WWtobVJtaFNaWGRvWW1aWVpFUmlNR1UwYUVkaFJHUlpZVXhsVEdKQlp6VmhaR1JYWW14bmFHaDBaMUpuVm1WNFpqSm1WV1ZyWTBsa1ZtZGxaa2hpV1dKVFlsTmhlR0ZvYUVSblYyVlhhRXBsZVdkallraGxRbVJKWWtab2QyTkZaMGxtVDJWcFpUbG1UR2hQWVZSa09HRXJaRlpoZVdFeFprcGtVMmRUWWpGbmRXSkdhSHBqTVdkbGFGRm9WMk5rWm5Sb1kyRjRZMDVuU0dWaFpVSm9WbUZKWlZWb1JXaGphRkZrV21kdVlVcGxWMmhHWWxkbGNHVjVZMVZtV0dka1lsaG5WR0pTYUZGa2JHZExaVVZsVm1GTlpscGhRbUZSWVc1bVRtVkRZMWxuYkdkSFprTmtiMkpWWmtWamVHY3hhRkZtUVdSQlkwVm5aMkpoYUhwbloyWnRhRlJpVTJKemFFWm9SR0o2WkU1aFEyTk9hR2RuTUdSMllXUmxhR0l3WjBWaFJtVlNabTltYW1OV1owRmxNV1prWmtWbFVXTndZV3hrVjJOSVpFSm5kMk5UWVVWaFRtVkthRmRqYm1aV1pEUmxVMll6YUdSaE5tSmhZVlpqWkdOYVpVVmlRbWhzWTJoaFJXaEhaemxsZG1aRllsSmlUbVYyYUZKaU0yVk5aRlJoVW1FeVkyZG5WbVJUWVVab1FtRklaRVZtUTJJMVpUaG5SbVZXWjI5bU5tZExaakZpYTJKNVpWZGhNR1J3WVZwaVdXUkhaREJsVjJWRlkwTm9hMlpWWW1KaVdHZDBaMmhqVDJKR1pYTm1hbUpJWVhkb2JHRmhZMU5tVW1neFpXSmlZbWd3WWtab05tSlpaekJuTVdKeFpsTmhkMmc1WVZObVJXRkhaMUprVFdka1ptNWhXV05RWW1GaFFtVldZVFJrWkdKb1kwcGxUR2hIYUVWaVRtWmFaVmxrYm1GS1luZG9ZMmRDWTI5bFIyWklZbEZqT0dodVkwNWlhMlp6WjNsbFdXTlZhRTVuV0dGWFpsSm1RV2RhWldGbVFXaDBaMFptWW1SNFprVmlWR0ZOWTJ0aU5XY3ZaazlsVldWa1kyOW1SbVpWWjJoaVVXWlNZWGhvUW1kdFpXTmxiR1paWm1Sa1NtaElaM2RpVkdSTVpHZGlUV2hRWW1WbGFXTjNablppVldkVlozZG1kV2RHYUVobWRHVnRaa3BuV0doc1pscGlVbVJXWTNCb1NHSklZVkpsTVdoV1pWVm1ibVJTYUhKb1pXZHRaMDVqUm1KS1prVmxWbVptWjBGbVJtZzRabmRrUVdGNVlrbG5kbUZCYUdkb1kyVmlhRUpqZW1NNVowSm9TMk5WWXpCalJtWklaM2xvWTJkblptTmhSMkV4WWtsaVVXTnNaV3hsVkdSbFpsWmlTbVZNWm1Sa00yVndZM0JoVm1FeFlXdG1VV1pIWTFkbVoySk1ZMVJrVTJGRlptWm9VV042YURCa1NXSktaREZvZDJWVVlrMW5WV1ZWWVU1bFdHZG9ZbEppU0dGS1ozbGpTbUpJWWtGaE1tRndaSFptVldGVVpFVmlRMkZDWjBabFZXRTVaVXRuUm1kc1lWZGxXbVZvWkhob2RtWmFhR3BuY0dWaFlsWmxWMmc1WjJGalVtZDRaREJoWkdoV2FGWmhTbWN3WjJGb00yaHdZbXBrUjJWNVpYTmxXbUZFWkhka1dXSlJZMlZrVldkM1ptbGlVR0pvWW5OaVVtaEhZWHBqVVdGNllWaG9RV0o0WjAxbVEyRXdaVXBpU1dOallXNWlRbU4zYUZObVJXZE9aMHBsVjJWdVlWWm9OR0pUWnpOalpHYzJZMGxqUW1GR2FGcG1SMkpGWmpGbmIyUkVaMnRuVm1ZNVlrVm9VbWRLYUhsalYyVnVZMDFuUkdaVVpXdGlTV1pXWlZOa1JtaENaVWhrUldOSFoxcG1lV1JXWVdoaVZtVnhhR05qYkdoR1pETmtWbWQ0YURWbVpXWlBhSGxuTldoQ1pVZGxRMkZvWjFKalRXVlhabGxoVkdWTlkxSmxjMlZ2WlVoa2VXVktZMUJvVkdoNFoyOWtRV2htYUVkaWEyUlpZazVrWjJKelpITmpSR05zWlRGaVUyTlJZbmxvTUdkWFpVMWlNMlZaWTJab1JtSXdhRmxtYzJka1pteG5RV1pQWkVkblFXUktabHBvVEdkNVpXTmhPR1ZLWmtGaVJXWlVZa0ptVW1RNVpERm5UbU4zWmpGa00yWmhhRE5vT1daaFowZG1NV1JzWjA1b1QyVjNabXhqVFdKa1lVUmhjMmRVWkdKak1HUmtabnBrUldVd1lXUm9iMmRHYUZWb2FHTlJZbEpsZUdoQlpXZG1VR2RSYUZGa1ZtWlpaR2xuVVdoUllVcGhWbUpqYUZsa1JtTnVZVkpvYUdSQ1oyZG5UbWh0WmxGalIyRmFZalJvV1doVFprcGlUMmRpWlhkbWFHSklZMFptWjJGQ1kxWmlVV1ZJWlRGb2NtaE1abGRsYzJOYVlVbGlaMlZLWldOb1dHRm9ZMEZvTW1SUllVaGlXV2hyWTFWb2EyUnJaVlppWVdGWVp6aG9TbUpaWWxKbmFHUkVaVmRsVjJSS1pubG5ZMmhJWVVKb1NXZFJaVEJsYkdKaFltUmlVMlp2WkU5blNXTjVZVGhvTjJkSFpGWm1iR0pGYUZWaFUyWkdabGxvV0dKcllWVm9VbUpGWWpKbk9XTklhR05sZUdoT1owaGpZV0ZDWVZaaFNXTkVZbFZqTkdOaloxUmxTR1JLWmxkblJtRlhaSEJpZVdOVlpGaG1aR1ZZWjFObmFHTmFaMmhoVEdONFptaGxTV05PYUVaa2MyZDVZa3RtVkdOVlkzQmpRbVJUWlhCbFZXTkdZMFZvY0dkalpVSmxWV2RHWVcxaFlXWXlhR1JvYW1SRFlucG5PR2RHYUZSa1FXaGFZVnBqUzJaM1pFcGhNbVJtWm14bmRHRkRZVlJoYkdWS1l6SmxSV0pyWjNOaldXaFJaREZpYkdKcFpXTmxibWhDWTNkaVUyUkZZazFsWm1SSFozbG5aR1UwWWtoaE0yVmtabTVpWVdGUllVMW9VbVJYWlZWaWNHRnRaMUprZDJoQllXaG1WbUZyWVdOb2JtaFlaa1pvYTJKVVpWSmhNbU5uWWxaa1UyZEdZVUppU0dKRllVZGhXbVY1WmxaamFHaFZabXBvVG1OR2FFWm5MMlZCYURCbGIySlVZbUZoV0dOVlpGZG5SMlpZYUhObFNtUmFaMjVsV21kdloxZG1iR2RXWkhabVYyaHJZV05rWkdWSVkxWmxWbVpUWTJSa1IyUjBhRFppV1djd1pERmljV2RJWkRCbVkySkJaRmhuZW1kT1owMWlUMlpFWmsxbFJtSlJZMjFuWTJVMVpFOWlSbVZWWlU5bFptVlNZMFZqVEdWTVpsTm5RbVUwWVdObWFXUnZabGRtUkdGNFlYZGhkMlJMWjJ0bWMyTnJZazFqZW1oTlpGTm9WMkZXWmpGblRXRlBaakZtT1daR1kweG1WbUpSWmxSalRHaHJaMk5oSzJOU1kyZGtjMlU0WTFoblFtaG5aMk5uUVdSb1pFRm1jR0pPWlVaaldXWkhZMlZqU0dVNFpGUm5VR1puWlUxa1dtaEdaVWRvUW1VMlkxQmhRbVZvWjIxbVJtTkhaRnBvYldSWllsaGhRbWRXYUdKa01XUndZVWhsU0dkV1kzTmxZV0pCWTBobVVtWnFZMHhpUTJOSlpHWmtZV2RvWVd0b1VHaFVhSGhoUW1Jd1oxWmpNMlJaWVdsb1ZXaHNZM2RuVm1kTFltMWpNR0ZUWjBkaVVtTm9ZVWxpVW1KSFowcGliV1psWVZaaWNHTkpaMUZuTUdkc1ltRm5aR0pZWkdoaFRHVmtZVE5tY0dSd1psWmtNV05yWjFGblIyaFVaRGhpUkdWRlpsTmxaR2RaWlZGb1IyVk9ZVWhuU1dkU1lqbGtTR1ZQYUdoblZtZEVaVlZoUm1OUloxcGxZV1J1YUVsaVFtWklaVlJvTkdjMlowZGhRMkpTWVdKbFUyRnJaMUpvY0doaFltaG9XV1pLWjJGaWFHaFJaekJsV21KdFpIQmpkMkpTWnpKbFdtVkNaR0pqVW1jd1lXUmhWbUpXWTBwaU1HVmhaRE5rY0dScVlsUmxWMk53WVV4blJHWjNZVUpvVm1aTlpVSm5hMlZyYUU5alJtTkpaVmRpV0dkVVkwVmliR0pEWVZka1JXWlpabEZsTVdoc1ptbG5ZMlJ1WmtKa2QyRlRhRVZtVG1OS1kwSm5NMlo0WWpCbVdXUllZV1JvTm1SaFkxWmhaR1ZhWTBWbVFtaHNZMjloUTJJd1lsWmtibVJZWlhob01HY3ZZVVpqVkdGNGFFaGlRMmhFYUhobVRXZEhaRUppVm1WS1pGRm1lbUpGWjNwblFtUm5hRTVvSzJSalptdG9lR1F6WmtWa1VtYzVZMWxuUzJWcVpWWm5abWRXWW5saFoyZFZabUpqYldFNVlXaGlTMk16WXpsaGRtWlhhR3RtWTJGa1pFaGhWbU5XWkZOalpHSkhhSFJpTm1kWlp6QmpNR1k0YUVOamJHSXhaRk5pVW1aSFpWSm5VbWhrWjJsaVNXTmhhRU5vTUdaYVlqSm5UMk5zWVdOaFJtTllaWGhoWTJoU1ptVm9WbUZvYUhkbFkyWkZaV2hoUkdoVFpGWmpjR2d4WkdWb1JXTjBZak5qWldOdFkydG5aV1JJWVhobVFXVlNaRkJuUVdOMGFFRm9ZbWgzWm10a1ZHTmlabXhtY0daMVlVVmpNV2hrWjJoa1VHZ3dZV2huVVdSU1kzaGpRbWR0WjJOa2JHZFpZMVprWVdWdVkwcG1VbWRrWnpGa1pHWkxZVkZsYVdaRllucGxWMlJWYURsbWJXTlhhR2xtVFdONFpGbG9VV2RKWkZWb1NXSlNaREJrUTJKbFowVmlPR2hJWVVoaVUyUmFZV3BsWldSQllVVmhXV1JNWVVGbE1XUkxZVUZsUW1KQlpqTmxRbVZUWW5kaGVtUlZaR2RrT1dWQlpFdGhlV05KYUZOa1EySldaekZvUkdSSFprZGpTV1F2WWtwbVZHRjNaMk5oUTJWb1oydG5WMlJOWVVoaloyaEZaRTFrV0dGd1lTOWlVV2d4WjFKa1UySlZZMFJrZUdaWlpWSmxNbVJaYUV0b1QyTlhaVGxsU0dSalpYaGpUbUpJYUdGblFtaFdZMGxoVldkRlptTmxVV0phWVdwaFVXWmFhRkptTW1ad1pEWmpRbUo2WjFsblJtUlRZMnRtVW1ad1lXWmlRbWRaWkVsa1ptTlNZMUZoZVdSYVkyNWpPV1IzWVVKaE0yVlNaMkZtUm1WU1p6QmtWMmRUWWtaa1NtSnpaMWxqYkdOQ1ptcG9WR2RYWTNCaVRHRkVZekZqU1dOUloxcG1SV0Y0WVRKbVpHSnNaRXBrUTJKR1kxTmtPV01yWVZKaloyZE9ZbEpuUldoR1pWWm1hV1ZKWmtob2VHSjNaVWRrYTJaT1lrTmtWMmh0WTBwaGVHRlNZekZvTVdVMmFHRmpWbU5rWWxwaFJXUkNZV3hoYjJGRFlqQm1WbVYyWlVWbVVtZE9aSFpoVW1NelpFMWpWR1pGWWtkaVFtaENZVUZrUW1acllsVm1TR0ZIWjFsaVoyZFdZV2huTldGeFlWbG9NV2N4YUROblFtSlZZVzlvWkdaaFlWaG5ZMlJtWVVablJXSjNZbFZsV21kdFlWcGphR0pqWjBaaFZtaDJZVmRoYTJWamFHUmpTR0pXWlZaa1UyTmtaMGRqZEdZMllVNW5SV2hWWWl0bVFXY3daRmxvUW1KSVowZG5VV05sWjJSa2JtSXhZVk5qVldGQ1pHeG9OR2RLWlVKbVNtRkJZa2RsUm1OYVlsRmxZbUpzWTJobGQyZGphRVZsYUdSRVkxTm1WbWR3WWpGalpXVkZZblJrTTJobFpHMWxiR2RZWWxkaFVtUkJaVnBsVUdaM1owMWpVbWhLWnpGb2FHTkJhRmxqTUdSalptaGtSV1V3WTNoa2IyTkNZbXRoVW1KUlkwWm1VbUpDWm5SaVkyZHJZVWxqWTJKalpsWmphR0pTWkdSaU1XSmtaVXRtUm1OdFlteG5hR2hHWm1obWFHWnRaVVprUjJSWmFEQmpTbWREWWxGb1FXZFFabEprVW1SSVoxTm9WbUZWWVdOalFXTlhZVGxsUW1SbGFHMWlUbU5PYUdGaWEyZHpabEJtVldGb1pVSmthMkpVWjBOamRHY3ZaRmhvYldWblpsWm9aV0pJWWxsalUyaFRaM2hsYUdWRVlsZGhWMkpLYUhsbVpXaEVZelZuUjJORlluaGljMlpXWjBsbFZHSmpabVptVEdkcGFHOWhjMlZYWjFGbk1XaG1abUZpYW1KNFkxcGxSR2REWVVabFYyZEZZak5rU21KSVpFNW1WV1JaYUVwaFMyUXdZMFZuUW1KSVluZG5hMlpSWldKbGJtSjBZVmRtVkdOcllVSmplV0ZWWkZob1pHRllaRk5tYUdaYVpIQmpXV0ZTWlZsb1dXZGFhR2hoVVdSM2FFcGxlbU5PWjNkaVFXRlhaRGxrU0doU1kzZG9NR1prWVVObVZtVkpaV2RqU1dkNlkwMWlkMlpSWTNsa1dXZFBZMUZqVW1oV1lrVmxUR05HWVdSalkyTmtZV3htU21kRGFFWmhXR1JvYURKalJXTnJZbk5vV1doUllqRmliR2RwWWtsaFJHTlZabXRoU0dKU1kwVmpTR1JYWTIxaVZtRTBabFptYldKd1ptNW1ZV2RSWlU1bmVtaEZaa0ptYkdKdmFFTmlNR0pXWkhablJXVlNZazVtZG1kU2FETm5UV05VWWxKaU1tTm5aMHRrVTJkR1pFcG1SbVZQWkcxb1dtSjVaMVprYUdSV1pIRm5ZMlJzWWtabE0yWldaakJuYjJKWFlXRmtWMk5GWlZkbVFXWnRaMWxuUldWYVptNW5kR000WldKalZtSlZhSFZtUTJOQlowSmxTV1JWWlVKb1FXWmpaRWxoUkdGb1pUQmpUR04zYUdkbmEyUkVaa1prYzJWaFkwOWpiV1JTWVUxaFpHVnVZbHBsVTJOUmFHaGhWbUkwWTJSamFHTktZVXhtUjJkRmFFNWlXbUZtWjFobVNXUkJZMlZtUW1SM1pVeGxRV0ZCWjJ4bU5XZGxZa1poZEdJM1kyVm5hbWd4YUdWaVkyVjRaRUZqV21GaFpFRmtkR0pHWldKamVHWkZZMVJrWW1jd1ltUm5lbUZGWnpCbVpHZHZZVVJuTUdoblpGaG5VMmhXYUVWaE1tVkpZMmhvY0daTmFGbGphV2RaYUZwbVVHWm5aMUpsUjJOR1pHbGxaMko2WVZWblZXUXdaSEpvVldoVFptZGhlV2ROYUc1aWJHUlBZVkpvVm1Od1pVaGxTR05TWnpGb1ZtZFZZMjVqVW1KeVpXVmhiV1JOWkZGaFdXTXdaR05qYkdaVloyaGxRbVJyWkZSalNHZGFZVEpqVldkclpVbG1WbU5sWWtobk5XZGpabEprVldSbmFGSmhSbU5xWTFsbk9XWktZa05oYTJWWlprSm9hMk5qYUdabFNtTkRaREJpUzJkUFozbGliR1p3WTFOamJHaHNaRmRrVkdoRFpGcG5TV0pGWWxOb1dtZGxaMWhsVjJjNVlsQmtTbU40YUhCalNHRk5abnBtT1dKSmFGVmhSV0pqWTFGbVdtaHVZa3BpVjJoR1psZGpjR2g1WVZWa1dHaGpaR1ZqUkdOQ1pWcGphR0ZaWWtabFoyRlhaa3hpTUdWalpVVmhUV1Y1WkdObk1tVkZZMFJtTVdKVFprVmtlR0ZSWmxWbFptRXhZa3BsTUdWaFpqTmljR1JxWlZSb1YyTndaa3huUkdVeGFFbGhVV1ZhWlVWa2VHSXlaVWxqYUdWdllsRmpWMkpwYURsaE1tUllhRUZtTldOUVoxRmllV0V3WmpkblNXTnFZVlZqVm1kSFkyaGtSV0pIWjBOa1NHY3haVFpvUzJOcFlWVmhPV2RRWlVKbWIyaGpZVmhqYTJVeFlXOWhVbU5vWmtGaE9HVlNaRkppVFdKMFkwRmpibU5PWlZOb1VtVjNaSEJpUVdoRVlXaGhXV0pEWjFGbmJXTlNaemRqVkdWVVpEbGhjV0ZqWjJ4blJtRXpaVlpoTUdWdmFGZG1ZV2hYYUVWbFYyWkhZa2RuV21aSFkwbGplbWRKWnpCaFNXaG9ZM1JqZG1WRWFHZGxPV1JWYUZSb2JHRldZMUJuWVdoWVoxcGpObVpPWVRCak1XSXhZbE5sZDJnMWFFTm5SV0pJWWpWaFRXRmFaVzVrV21oUVpsaGpkMlJvWlRSaFQySkNaWGRqU1dSV1kzZGlOR2hLWTBsaWVXRkJaREZqWldkQ1pYZG1UR2RCWjBGb2JHTTFabVZuUW1JNVl5dG5XV0pWWTA1b1dHVlhZVkppUVdOYVoyRm9RV1owWmtablltUjRaMFZrVkdaTlltdGlOV1V2WjA5blZXRmtZVzluUm1kVlkyaGxVV1JTWjNobVFtTnRZV05oYkdaWmFHUmtTbWRJWVhkaFFtUkthRkpvWjJSbFpGZG1WR0l3WmpSb1VtZHNaVEZrYjJkWVoxTmxaMmN4Wmsxa1ZHZFZZVmRvVDJNeFlYQmtZV1ZJWlZabWMyVkJZMGhsUkdOall5OWlUV2Q1Wlhkb1JHWmhaR3RtVFdkSFpsVmhhMkowWWs5alZHTklaVnBqTW1GVlkydGhTV1JXYUdWaVNHWlpZbE5oVTJkNGFHaGhSR2hFYUhsalRXZG5ZV05oUTJOU1pVbGpXR2RyYUd4bFdXWmtaek5uVW1Kb1ltUmlNMlZ3WjNCaVZtUXhZV3RtVVdaSFpGZGtaMmhNWmxKb1YyWTRaVkppUldFeVpEaG5UMmhqWm5kbU5XRklaazlpYUdaelltaG9VR1ZxWjFKbloyTkJhSGhrUldOcFpHRmtaMk5qYUZSaFMyUlJabWRsTVdaTlpUSmhTV2ROWmtWbloyZ3dabmxqV21ob1oxSm9iV05hWTIxalJtTjNZVlprVjJNNVpHRm1VbVI0WVRCbFpHTkNaM2htWTJobmFGQm9hV2RuWlhSaFZHZFhhRXBuYUdSRWFERmlTV1pSWWxwb1JXWjRaVEpsWkdGc1pVcGxRMkZHWjFobmFHRXlaMFZvYTJOMGFFMWxRMkY0WjBGbmVHVm1aMFJvZDJneFpVSmpaMkZSWldSbFJXTnVZbFpoYldGVFlUSmxaR0UyWjJKak1XZEdZWHBtUldOQ2FHeGhiMmhEWnpCblZtVjJZa1ZvVW1WT2FIWmpVbWd6WTAxbVZHTlNaakpoWjJGV1lWTmhSbUZvWWxCb1VtTkhhRnBuZG1KV1kydG1SV05wWTA5aGQyZEtaRFZtUVdSM1kxWmhiR0pRYUZSa1RtaG1ZbFpqYVdORloyTm9XbVJEWmpSbmEyZExZa1ppWkdkcVlWZG5iR0pqWVZKb1NHWlNaM2hsWW1GbGFHbG1XV2czWVU1bWQyYzBabWxvVVdOM1pVSmlZMlpUWnpObVdXWlNZV1ZqVkdWR1ptSmpWR0pHWnpobU0yUlFZekZsZUdKRVprZG1hMkZPWW1Ka1lXSXpaM1JvT0doWFpHdG1hR2RFYUZOb1ZtRndZekZqWldWRlpYUm5NMlpsWlcxbGJHSllaRmRpVW1KQlkxcGxZV1pCWTNObFVtaEthREZvYUdSQloxbGlVV0Z6WXpKbldHaFJaMEZrT0dkWWFGVmhhR0pQWjFKaU1XUnNaMjFoWkdoR1lrRmxWbUZaWTJsbFdtaFNaV1poUldGd1lrdGhSbVZIYUd4aGRtWkhZMEptV21GdFkwWm5iV1E1WTNab1ltSldhSEJoVm1SaVp6Rm1jR0ZJWVVoaFVtSXhZMVprVldOdWFGSmpjbWhsWTIxalRtZE9aR0ZrYTJKcllWUmtUV2hGWlZWb2FXUkRhR3BsVFdSclpsVmhhMlZCWmxab1kyVXpabHBuUjJWVGFIaG1UbUpFYUZkbk0yZDRZWGRoVjJkdVlrSmxTV2hSWWpCamJHZGhaMlJuV0dkb1lVeGhaR1V6Wm5CamNHWldhREZtUVdaTVowMWhNbVZuWkV4alVtaFhZamhqVW1KRlpESm1PV05JWjJOaGVHRk5ZbUZuV1dWU1kyeG1hV0pWWkVWb1kyTlJabHBrYm1KS1kxZG1SbWRYYUhCbWVXRlZaMWhpT0dWYVlWSmpSV0paWmpkbVRHaHJaa3BvV0daTlptdG1NR1F5Wmtsak1tWTRaWHBtUjJacFlrbGhTMk5DWVd0aU9XaFphRlpvVldRNVpEQm1UR2hUWlRoaGRHZEVhR3BvTkdORFkxRmpRbUYzWkZGaVltWkNaR2huTm1aa1ptZG9RbUZQWWtaalZHUkdhRFpuUldoblpEUmhWV0pSWm5oa1dtZHlabU5pYVdOMFpHRmtVMlpGWWs1bFNtVlhZbTVsVm1NMFlWTmhNMkprWlRabllXWldZV1JqV21aWGFGWm5PV2h2WmtGak1HTlJaV2hrU0dFeFoyOWxPR1pLWWxOa1dtTldZa0ZpVTJVeFowaG9VV2RCWTFKbFQySkhZbFZsZUdSNVpsWmphR1pXWkhGb1kyVnNaRVprTTJkV1pqQmxiMmRYWjJGbFYyTkZZMWRqUjJKRVpFcGxZMmhPYUVOb2EyRXlZMk5uUW1oelluRmhSR0pWWldSbmNHRlNZMEZuVldWWVowVmtWR1JyWkc5b1RHZENZVGxqYVdWVFlsZGxOR1JCWkZaaWVtSkZaRUppVFdaNlkyZGtSMkZSWm14aloyWjBhRXBqVldaYVkweGxWMkZuWWxwaldtWkpZVE5pU1dWVFpVcG1VV2MwWkVablJHVkJaMmhpTTJWamFGWm1RbUprWkdWbWJXWnNZMWhqVjJoU1pFRmtXbVZoYUVGa2RHVkdaMkpuZUdORllWUmlTbVpuWVVabWVtSkhZekpoTVdOdllrWmlWV1pvWVZGb1VtVjRaMEppYldkamFHeGxXV1JXWVdGaGJtZEtaMUpsWkdneFlUaG5ZMlJYWWxObVFXSnNZVVpoWjJSb1lXMWpRMlJZWlhSa04ySlpZVk5sU21WV1ptRm9WbU40Wmtob1JtUlZaamxqVm1KVVlUTmhVbVkzWm1ObE1tUTVaRzVqWVdacllYTmxVR2hWWVdoaFFtWnJabFJqU0doYVl6Sm5WV1JyYUVsblZtWmxZMGhpV21WRlprSm1SbWhGYUVoblYyTllhRXBoZVdKaVkxZG9NV05XWTFGa2QyZENZbUZqWTJRelpqVmpUR0ptWVhwaVRtUndaVk5tYkdGc1owVmtSMlZZWW1ObVRHWkZaVmRsUm1Sa1lWWm9hV2RGYUVGalNtSXhhSFJqU0dOallXaG5WbUZaWVZkaFZXaHpaVFprV21kdVpFcGxWMmRHWTFkamNHRjVhRlZqV0daa1pGaGxVMkZvWkZwbGNHWlpaRkpsV21GUFlrdG1WbWN3WTJsa1dtWnVaa1psZDJkVFlVaG9TbVJJWlZKbk1XaG5ZbVJoVldJeFpGSmxNR2RaYUhwbE9XRnFabFZpUjJGd1lXSm9RbUZzWVRSaE5tTmFZMFZrZUdJeWFHUm1iR2RLWlVOa1JtRllaR2hpTW1ORlpXdG5jMk5aWjFGa01XSnJZVEJoVUdGVVptdGtNR05UYUVablRtUktaRkptTW1Sb1lteG5VMkY2YUdobk5tUmlZVEZrUm1GYVprZGtSbUphYUc5alJtUnJZMVZrTjJoWFoxWmhiMlE0WjFOblZHTTVZMWRrUTJoVFpUbG9RbVJCWkVabmJHRk1ZMDltYldGYWFIbGpWbUZvWkZabmNXWmpZMnhvUm1NellWWm5NR2h2WmxkbVlXRlhhRVZvVjJORFprZG5XV1JMWTFwaWFtVlNaMmhsVEdGQmFHeGxkbVJGWlRCbFkyZEVZVWhsVVdOR1pHTm9UMmREWXpSbk1HRktaa0ppYTJScFkxTmtNV1ZOWTA5aVJXZElZbEprVFdoaFpVaGxXV1ZZWlZGbmEyRnJhR3RrWkdSc1pqRmxUR2RDWm10aFRXaE9ZMHRsYW1aelkycG1abU5uWWxGb1IyVkNaSGhoTUdob1lVMW1SV1pLWkdSb1pXVnRZV3hoV0daWFpsSm9RV2hhWVdGbFFXZDBaRVprWW1kNFlVVmxWR1phWW0xbU1XTjZZa1ZrTUdka1lXOWtSbU5WWm1obFVXaFNhSGhuUW1kdFptTmhiR2haWlZabFlXRnBZbGxpV21KS1lWSmpaMlprWTBab2FXZGpZbXRpVVdoU1oyZGhWV1pXWlZOa1oyWm9aRXBrUW1WVmFFaGpVR05TWTFWb1ZtRkdaRkprT0dOaFpFSmxlV2RDWTNKblRtSlRaRlpuVG1GUFlrRmxjR05DWVVab1ZtTldhR3RrUW1GVVoyZG9lV2hHWjNoamIyUllabU5tVjJZd1pUUmxVMlI0Wkdob1JHTlhZMWRvU21oNVoyTm1TR1JDWmtsb1VXRXdZMnhoWVdWUVkwUmlOV1JNWW1aamVtYzVaWEJqVTJOVlkxRm1VV1JXYUcxa1oySk9ZVkZqTW1jNVowUmpSV1F6WTBabFlXSmpaREZsY0dGUFpHRmlSV05qWVU1alFtTkNZMHBpUTJGTFlraGxTbWhIWkVSbWEyRkNZWGxqVldWWVpHUmtXR0ZUWW1oaFdtTndaMWxoVW1KWllsbG5XbVJvWlZGamRtWkpZVWRsUm1VMFprVmlSMkU1WTBWbFYySm9aREZvVTJWWWFFWmpTV1J0Wmt4bGFXSTBhREpuU0dWNVlWSmpUR1ZCWm10aFRXVk1abFJoYTJkNFpqSmxaR2hzWWtwa1EySkdaMWhuYUdVeVprVmthMkp6WkZsa1VXVjRZVUZuYTJGalltNWlaMmRwWTFObFJtWXhZVlZrVjJWcVluaG5lR2RUWm5salZXVXZaMUJsVVdSSlpreG1XR2RvWkd4aE5XSkZaMGRpT1dGMlkwVm5VbVpPWkhab1VtUXpaVTFsVkdKU1lUSm1aMmhXYUZOalJtWkJhRTlpVm1adFlWcGxObUpZWkdobk1HSTBhR05tYTJJNVpuQmtVMmRXWjJObFYyVmxaMWRpWjJWaFprZG9SMlUxWkdSa1dtVnVaV2hpTDJaaVptdG1hR1oyYUZOaGEyWTBabEpoU0dGV1l6QmxXR0ZrWVVoaVZtUnJabVpvVm1WQ1luRm5WMlIzWjFwalpXaEZaMGRqZDJWRWFHUmliV2RvYUUxbFdHUkJZMmhsTkdaYVpHaGhkR0ZJWTBkbFFtVmpZVkprUzJaNWFFWm9kMlJpYUZaa1ZtRmxZVk5vVVdFMVpUaG9ZMlpYWTBabk0yUmxaMjFtYkdKWVoxZGtVbUpCWTFwbVlXRkJaWFJqUm1WaVpYaG1SV1JVWm1KbmVHVlZaREpuVW1GNGFFbGpObVJYWXpCbGFHZEJZbGhsUkdWd2FHMWpZMk5zWWxsa1ZtRmhZbTVsU21GU1pHUmhNV2RrWmt0aVJtTnRaV3RvYm1SWFkxVmxjR0Z0WVVob1JXaDRhRzFoV1doWVprSm5WbVppWVRGa2NHVklaa2hoVW1FeGFGWmlWV1p1YUZKaWNtSmxhR3BpVldkTlkwOW9SV04wYUVoa1ZXZG5aREZuYTJGQll6Tm5XbWMzWkZWbVoyZGpaRnBqVldKdVlsbGtVMmRUWlhoaGFHWkVhRmRpVjJKS1pubGpZMmRJWTBKaFNXTlJZakJqYkdKaFoyUmlXR1ZuWTFsblpHTXlZV1JsY0dSSVoyeGthMlJrWVVkaFZHSnZaa2huWW1FeVlqaG9VbWhGWXpKa09XRklhR05vZUdkT1praGxZV2hDWkZaa1NXVlZhRVZpWTJoUlpGcG9ibWRKWWxob1JtRllhR1JoZVdoUVprUmtXV0ZFWWtGa2FHRm5aMnRsUzJWR1pXZG9VV1JNWldoaWFHaHRaMDVuVjJab1lUaG5abWN5WlRsbllXUlNZbmhqTUdGa1oxWmpWbVJLWnpCa1lXWXpaSEJsYW1oVWFGZGtjR0pNWmtSaU1XZEtaMFpvV21KR1prWm5NbU5KWm1oamIyRk1abEpuYm1SWlpHeGhXR1puYUVwb1ltaENaV3hsUldodVkyWmhibU5CWmk5alVXUlZhRGxqYW1kWGFHNW9WbVkwWTFObE0yaGtZalptWVdoV1oyUm1XbVJGWmtKb2JHaHZaME5pTUdWV1ozWmhSV05XWkZaaWRtWlhZMjVtVG1oSVlsTmhWR0owWWxwbVFXaFNaVTFoUTJWSGFFUmlVbWdyWmxaaWJHRjRaR3BuWm1GdVpuUm1NMmhXWlRCb2IySlhabUZuVjJKRlpGZGlSMlpIWVZsalZXUmFZbTFvV21ob1oyTmhSbVZXWkhabFJtRnJaMk5pUVdOSVpsVm5WbU5LWkZoaWJXSjBhRFptV1dJd1lqRmxjV2RUYUhkaE9XSlRaVVZuUjJSU1prMW9aR1J1WkZwbVUyUkJaWGhpVm1GdFlXUm1iR1UxYUZGbFRXRnJaRTVsV21GWmFHNW9TbWgzWVdObVJXVm9aVVJoVTJSV2FIQm5NV2RsWmtWa2RHRXpaR05qVjJSSmFHSmtZMmg0WlVGaldtTmhZa0ZuZEdOR1kySmtlR2RGWVZSb1ltY3dabVJsZW1GRlpqQm1OV1ZEYUVabFZXTm9abEZqVW1oNFkwSmxiV1pqWld4b1dXTldhR0ZqYm1oS1kxSmxaR1l4WVdOalJHTlZZa2RrYkdOd1pGRmlNbUZOWkhGallXaFhZVnBuYm1WbVpFZGlNV2RXWWt0alUyRkZZa3hpV1dWQ1lWSm9WbUZEWVZaak5XUnlZbVZtYldST1lVNW1ZV0ZyWlhOaFVHaFZaMmhsUW1kcloxUmxTR1JhWkRKblZXSnJZVWxvVm1kallrUmlOR0pUYUZaaWFHVm5aRmRrU1docFl6UmlVR1JsWlZobWVHVkpZMU5tZUdad1ltRmtZV2RJYUdkbFRtWkVZMFJvV1doVlpWaGlhMlJKYURaalIyaFhZV2RvVEdSU1psZGlPR0ZTWjBWbU1tTTVaRWhrWTJoNFkwNW9TR2hoWlVKa1ZtRkphRlZtUVdWV1prTmtTV2Q2WVUxa1pHVkVaR3RqUW1GNVpsVmtXR05rYUZoaFUyRm9aMXBpY0doWloxSmxXV05aWjFwaGFHUlNhRzFqV21GcVlYaG9ZV2hXWWxkaE9XUmhhRkptZUdRd1kyUmhWbWRXWTBwbE1HRmhZVE5pY0dScVpFaG9lV000WkdabFYyUm5hRUpuWldOYVowSm9PV1F5WkdGbFJtWkpZMHRrUm1oWFltUmpNbVJJWkRGamIyVlpaMWRsVm1GclpuRmxZMkp0WlRWbWQyWkhhREJuVG1SWGFGZG1iV1JTWmpSbFZXVllaMlJpY1dWalkyNWpNV0ZhWjBWbVFtaHNaRzlpUTJJd1lsWm9kbWRGWlZKblRtWjJZVWRrYm1WdlkyWmhZbU5YWW1kbFZtaFRhRVprUW1SSVlrVmpSMk5hWjNsbFZtZG9ZbFprYVdKUVkwWmlPR2R1WTBKaVVXUldZVU5oU21WcWFGWmxVR2hUWjBOaVRXWmhZa3huZVdkblltbG5VR0pCWmtGbmNtUklaSGhvVVdoa1lVRm5SbVZWWVZWblNXZFRaRlZpTldoT1pYZGxVV0pzWWtKbVVXVTVZV0ZtVW1kSFpHaG1UV1JLWTBobWNHTlRaRU5tZUdKNFlUUmpUR1pVWkdobVRHTkhaRVZpVG1OYVoxbGhibUpLWTNka1kySkZZbWhvUkdKVFpGWmtiMk51WkZCalVtRTRZMmxpUzJaRFpHUmtXR2RXYUVGaVJXZGFaR0ZvVW1WYVpWbGpZbVF3WkZab1ltTktaMmhpVW1VNVlsZGxaMmRyWkhOb1ZXVkNaRUZtTDJkQlkxSmtaMlY1WjJaaWJHaGFZa2hoV21kdVpVbGxXV05tWm10bWVHVm5ZVVppYldKc2FHaGlSbU5vWjJobGJXVkdZVWRuV21OdFpsbG5VMlV4WkdObldXZ3paMEpvU0dOSWFGSmtNV05XWkZWbWJtaFNhSEppWldKdFkwNW9UbVZaYUdkaFZXaENaVUZsYTJaSlluSmxSMmRFWjJ0aWFXVkRZbmhsU21aUlpHUmhhbU01YUdObFJHY3haVEJtWW1WT1ltbGpVbWg1WTJKaFdHWkJaMDloUm1OblpHTmtXbWRKWWxSb1JXTkZZMDluV0dWd2FHaG5RV2N4WVZWb1VXZFRaVEpvVVdWTVpVUmlSMmhaWkZKalUyUkZhRlpoU0dkalpuaGlUbWRJWm1Gb1FtUldhRWxrVldkRlkyTm9VV0phWjI1aFNXWkZZVlZsUkdZMGFHNWlRV0o2WjJ4aVdHSklaVUpuTkdnNVlVdG1WbWc1WkV4bFlXWm9aVkZuZVdkaFpHMWtSV05wYUZkb1YyZzRhRlJtVTJSNFp6QmhZMmhTWWxabGRHUjJZMUZuV0dkd1ltcG5WR2hYYUhCb1RHZEVaekZrU1dOUllscGhSV0YzWW5KalptZ3hhRFZoYjJWR1pGaG9hR1V5WVVWb2EyaHpabGxvVVdneFpteGthV2hqWTI1aloyRXJaRkppYUdSTlpXSmtSbU5UWmtWaU0yaElaWGxqTkdkeFpFeG1SbUZyWWxabFZXZFZZbTlsT0dKWlpHZGtjMlp5WlZaaVJXTnpaa0ZpUVdGWVpVMW5UMkZTWm5sb05XSkJaRUppYUdGTllsUm5WMk5UYUd0aE9HZFdaR2hvTUdJclptWmhiR1JGWW14b1YyTXdhSEJoWm1KWlprZG5SbVJPWVUxbmJXUlpZbFZtV21adFlscGthR2RqWlVaaFZtaDJZMWRuYTJWaloyUmxTR0ZSWVdOaFdHRkpaRVJpTkdSdmFFeGtWV0l3WXpoblVXZ3haSE5oWVdkWFlWUmtaR2hCWm1SbmFXTktZbVZuVVdOclpHUm5NR0ZrWkd4bmRHWklaRWRtUldoS1lVbGpZV0l5WTJ4bllXZGpZa1ZvYUdORVlsTm1WbUZ3YURGbVpXVkZablJoTTJKbFpXcGtVbUpsWkZabFZHVnZaVnBpWVdSQlluUmxSbWRpWm5oblJXVlVaR0pvTUdka1ozcG9SMlYzWTJ4a2JXRlNZVkpsYjJkbVowVm9NV2M0WjNsa1MyRjNZbHBsVVdKYVpVTmlWV0pFWjFCaFoyZE5aRkJuUm1kdVkxSm5hR2RWWkVWaU1HWnZaVlpvZW1aSlkzWm9UR1ZxWXpWalZtSmFZM2RsTldOTVpraGxWV1k1WTFwbVZXRnFZekZqYm1obGFHbG9XbWhGWW1GamFHVkJZV3hoVldOb1prSm9hMlpVWlVoaVdtWXlaMVZpYTJoSlpGWmhaV0pJWTFsb1UyUkJZV3hrTldSRVkxVmhWR2RSWXpsbFQyRlVZVkpoU1dGVlpUQmliR2RJWVdGblIyWldaRXhrU21OWVkwNWpjR1JZWm5ob2QyVlJaMEpvUjJkblpFcGhSV1ZFWlhSbFdHWkRZakpoTVdWUFkyWmhlR1pPWkZCalNXUlNZbFppVm1oVlpFSm5UbWhaWVV4bGVXZEdZVmxuVjJKVFl6aGlPR0ZHWTJsalRXSm1ZVkZuZUdad1ozQmxZV1JWWTFGbldXRmxaSGhqVW1jeVkySmxNMk53WTJGaVZtWlhaVGxvWVdoU1ozaGlNR0ZrWTFaaVZtaEtZakJvWVdFelluQmlhbUZEWTBObldXUlpZVk5sYkdSS1lscG1TV05yYUhoaEsyaEpaa0puTUdaTWFGVm9XR1JvWkcxalJXWnNaMWxoUm1WWVlXeG9hMmh5WTJObmJtWmFZakptVTJoRllVVm9ZV1pFWkdsbFkySjRaRUpqVkdoQ1l6UmpZV0pWWVhCb1JXSkZaVVZrTUdWNFkxZG9kMlJCWVdkb1ZtSjRaMDFqT1dWVVpHeG9hMk5VWjFKbk1tZG5ZVlpsVTJKR1pFSmpTR2hGWWtkbVdtUjVabFpvYUdkV1pIRmtZMlpzWkd0a2VXTldZekZrWTJKWFlrOW5NbU5uWW1Gb1IyUkhZVFZqWkdKYVkyNWpkR0pvWWtwb1FtY3dabTFvUTJaVlkyeGxVbWhYWWtKamMyRldaMGxuUTJkT1kzcGhZbUl3WXpGamFXVkhZMUZoT1dGUVlVVmlTR0pTWlVabFltTldaM2htVTJWUlpHaG5WbU0wWkdSbWFHRktZVXhrUjJGRllVNWpXbVJaWjI1blNXZ3haMUJsUW1SelprZG1VMkpSWTBaaVptRmxaVVZqZEdJellXVm9iV1pzWjFoaFYyVlNhRUZtV21GaFlrRmpkR2RHWTJKa2VHVkdhR0ZrUzJGVmFHUmhOMkZGWTJka05HSTNaMk5rZDJoRllXVm1SR1JyWmxGa2FtRmxaMmRuVVdSamFGbGlNV0pvYUZKa1pHSXhaMlJqUzJkR1pXMW1iR2RvYUVaaWFHaG9aRzFqUm1aSFlWcGxiV1ZaWkZoalFtUldaVTlpZUdoSlkxWm9WV05yWm5Ca1ZtZElaa1JtUldFNGFHVm5aMk5aWW1aalQyZEJZMUpqWkdkWFlXcG5jR2hyWVZSbFNHaGFZVEpuVldKclprbG1WbVJsWjBoa1dXTlRaMU5pZUdGb1lVUm9WMlpYYUVwbWVXTmpaRWhoUW1OTGFFbGlVbVIzWkdOalRXVjZZakJoV21WbFlWTmhNR00zWVVoa1oyZ3haRlptUldOVVpuUmlabUpHWkhsa1dtWm1aVlpsUjJkT1lraGhUbUZzYURCaVJXTktaakZvUldoQ1lVaGlaMlJCWVdObFdtVnFZakJsVVdSVlpYcGhhMkV6YUVKbVVXTjRaV0poVTJac1pXOWxjMmRNWXpGbVJtTk5aMHhuYldSc1kzWm5XbVJwWjJkamFtaFdabE5pUldaV2FGSmhNV05HWTFObFIyaDRZVlZuZUdGUFpsaGtiMkYzWmtka1JHSnZaV0psVVdOQlpFSmhSV2RKWWxGbmFHTXdZbGhrUm1GS1pVTmtSbU5ZWjJobE1tSkZhR3RoYzJkWlpsRmpNV1JzWW1sbFkyWnVZa0poZDJKVFprVmhUbVJCWVZGbFZtWTVaalJtVTJnellXUm9ObVpoWmxab1pHTmFZVVZoUW1ac1lXOWlRMk13WVZabGRtTkZZbEpuYzJnNVlWSmlNbU0wWVZSa1ZtVXlhR2hoU21WVGFFRmxTbVpQWjBoaVJXZDRaM2xpVm1Ob1lWWmhjV0pqWld4aVJtZ3pabFppTUdOdlpGZGlZV1ZYWkVWaFYyZEhhRWRqV1doVlkweGhlbVpWWjBobFQySlNaWE5pYldORVoyZG1TV2RXYUZabFJtWjRaVFJuWkdSSFluUmtObUZaWWpCb01XUnhZMU5pZDJRNVoxTmpSV0ZIWlZKbVRXTmtabTVqV21aVFpGRmthR2hXWmpSallXTlNZMHBtUkdKRlpFRmhjR2hhWTJabE0yUktaR2RoWTJKQ1lWSmlSR1ZCWVVaaFRtWTFZbVZvUW1Fd1pEUmxUV1I1WWpGbFdHVlRaRkpqUVdSRloyUm5VbWRhWWtablMyTm9aVVZuVm1aaFpGVmhaR1kzWmxaa2EyRmtaakZoUm1GVlltOWpSbVZGWmpGaFdtVXJhR05uUm1VNFptTmxVV1ZJWTBwa1VtVmtZVEZrWkdSTFprWm1iV2RzYUdoaFJtaG9ZMmhqYldWR1lrZGpXbVp0YUZsa1dHaENaRlpoWW1Fd1pFSm1TR2RHWmxKa1ZXVlJZMVZqYldOc1lYSmhUV1l5WW5Cb1FtZGhZbXRuVG1aSFlWVmtaMkl4WVd0b1IyRnFaV3RvTDJSR1ltdGxTV05HWldObVdHYzRZMHBuV1dSU1ptaGhSR1ZYWVZkbVNtSjVaV05tU0daQ1owbGxVV2d3Wkd4bFlXaGtZVk5vVm1kb1pXUmtNMlJ3YUhCb1ZtTXhaMnRoVVdaSFkxZGpaMmhNWTFKaVYyZzRaVkptVW1GVFpEUmpWbWRqYURGaGVHTklZbVJpVW1oVlpXTm9SMkpCWlRWaFJHaGhaa1JuTkdOVVpWZG1lV1F3WW0xaVIyRllZV1JpWVdSVFoydGhVbVI1WTFOaGVHaFpaRmxuV21Ob1lsSmhiV1phWVcxbFJtUjNaVlpvVjJNNVptRmxVbU14YUZKbFltWldaVlprY0dkbFlXRmpNMkZ3WW1walZHRlhZM0JrVEdKRVpqRmpTV0ZSWVZwbFJXZDRZakpsWkdSc1owcGtTMlpJWkZObE5HZzFZMWRvZDJZNFoxbG1WV014WVd4aUwyWmlZVEppTVdSM1pFRmhWV2ROWlZabVFtVnVZMVZrZUdWVFlUSm5iR00yWVVwbmJHTTFhRnBvUm1Ob2FEbGhiMk5CWm5kaWVHRjJhRVJvUW1GTlptZGhWR0p1WVRoa05XaFNaekpvWjJWV1pGTm5SbVJDWjBoaVJXZEhaRnBqZVdGV1pHaGlWbVp4Wm1OaWJHRkdZeTloUVdFd1kxSmhZV1ZNWjBObE9XZFNhRlJrUTJNMFlWVmhaV1JIWkZwbWVHTmphRVpqVG1kd1pGZG1hMlk0Wms1bVNHVlZZM1JqVTJkUVoxZG5jMmh0WVZCak1HZ3haalpuVTJKNFkwWmxVMk5SWTIxbE1XVkdhR1JoYVdOdlpFOWtVV1ZyWW1SbE5HaGhaRUprU1dGbVpGVm9RV0p2WjB0bVltRkVZVFJpTVdaUVkyZGhPR0ZZYUVGa1ZtVk9aR1poWldkRmFIUm5NMmRsWVcxa2JHTllZMWRtVW1kQlpscG1ZV1ZCWkhSaVJtRmFaV3BpYzJoVWFHSmlNR05rWlhwb1JXVXdZbVJtYjJoR1pGVm1hR1ZSWVZKbGVHTkNaVzFpWTJKbmFFcGlaR05QWmtSb01HaEhZV1JsZUdOcllsQmpVV1pYWld0alZHTldZekZuV1dOb1kxVm9VV2ROWlRCaVRXVjZaamhtU0dOYVp6Rm5aMmR0YUZObFZXZHJaMUZsU0daNVpGRm9MMmRsWkdwaFkyUkRZV0ZtYUdoNFltUmtSMkV3YUZGaWFHUlVaMFJpYTJKcWFFSm9hR1ZHWVdOaVVHUkVaVTFoVTJaRFpGVmtNR0pHWjBob2VXTmpZV2RoWTJkRVlVbGlTR05HWjJkb1kyVmxaMHBvYm1ad1lrTmpZbWRHWWtKaWNHZFdZekZqYTJSUlkwZGtWMmhuYUV4blVtSlhaRGhsVW1WRllUSm5PR0ZEWjJOa01HVTRhR0poWVdKQ1p6Qm1UbVJWYUVab2IyUlJaRnBoUTJWalowTm1WV1F6WmtwbmQyWlhaVWRrZUdZNVlWTmthR05hYUhCbldXUlNaRmxvV1doYVoyaGlVbU50WTFwbmJXTkdZM2RpUldKNVlVRmtTV2hTYUhoblZtaE1aa1prUVdkQ1pqQmpTV2d6WkhCbEsyUlVabGRtZEdGaFpVWmhSbWRKWmt4aVdtSkZabFpvWTJka1lteG1TbVJEWTBaa1dHUm9ZakpvUldaclkzTm1XV2RSYURGa2JHTnBZV05rYm1SQllXcGpTR0ozWTI5bFpHRkhaVlJvTVdFMFpGRm1lbVZLWkhwallXSlJZWGhtZW1ORlowSm9iR0p2WmtObU1HSldZM1pqUldGU1owNWhkbVJTWWpObFRXWlVZVkprTW1KblpsWm9VMkZDWlUxbFIyVlJZbmxrVG1aNVpGWm9SbVF3WkhaaVMyaHNZVTVuZEdKbVoxVmpiMkZYWldGa1YyUkZhRmRrUjJKSFlWbG9WV2RhWlcxbVdtRm9ZMk5pUm1GV1pIWm9WMkZyWm1Ob1pHZElaMUZsWTJaWVpVbG5SR1kwYUc5aFRHaFZaekJvU21oUlpqRmljMmhoWVZkbVZHZGthRUZvWkdacFpVcG9aV2RSWkd0a1pHTXdaV1JtYkdSMFowTmhRV2N5Wld4bVdtSlpZbTVtU21SM1kyTm1SV1JvWTBSb1UyVldZbkJtTVdObFowVm5kR0l6Wm1WamJXRnNaRmhoUjJWc1lVWm5TMmRNWlZGbmRHaElaRTlrYTJoV1lsWm1aR2N3WTFab2NHRlBZVlZqWkdodlpVWm1WV0pvWVZGbVVtSjRaMEpoYldaallteGtXV1ZXWVdGb2JtRktaRkpqWkdneFltTm9TbU5XWkhwb2IyaHJaRVpvYUdKdlpIcGlVV2REWTBKbmNtSmxaVmhqU21GUVpsSm9WbVp3YUVoblNHSlNaREZoVm1SVllXNWlVbWh5WVdWa2JXaE9ZMDVvWVdkclpYTmlVR1JWWldoaVFtVnJaMVJqUTJKUllYcGpRbVZvWW1Sa1NHWk9abTVvV21OUmFGRm1NR1ozWVV4b1JXZEVaMFptSzJaalowTmxVbVpGWWxGa2VHaDBZMWRpWkdGVVkwWmpRMmRpWTBabVFtVndZVlpqTVdSclkxRmxSMkpYWldkbVRHZFNaRmRqT0dkU2FFVm1NbVU1YUVob1kyaDRaRTVvU0dOTFp6Rm9VV2RpWmtab1ZXWmpaVk5vU21aNVlrVmlWbVZZWmtOa1RtaDNZMU5uTVdNeFpGaGpVMmRvWVZwaGNHWlpabEprV1doWllscGlhR1ZTWlcxaVdtUnRZMFpsZDJKV1pWZG5PV1JoYUZKbGVHVXhabEJvUldoQmFGbGthR1JQWlZSalVtWnFaVXRuUjJWSmFHWmlVbWQ0Wm5SbFJHSmhZVVZvZDJkcFpHVmhiR0pKWTFGa1IyVllZV2RuTDJkSFpqRm1RV041WTFGbk1XaHNhR2xqWTJGdVpFSm5kMlpUWkVWa1RtTktaRmRoYm1KV2FEUmpVMkl6WkdSak5tUmhaMUptVVdaWlkxRm9NV1Y0WjI5a1EyTlJaR3RrZFdOU1pGWmhiMkpvWWxabmJtZEZaVXBtWW1WWGFHZG1WbUpUWkVaalFtTklZVVZpUjJWYVpubG5WbUZvWmxaaWNXVmpZbXhpUm1VemFGWm9NR1Z3WkZabVMyaEVZa3BrVkdkSFprZG1VbVJYWjB4aGVXSm5aMmRuU1dKbllYaG9kR1pSWkVkbk1HaGtZMGhsVm1WV1pGTm9aR2hIWjNSb05tVlpaVEJvTVdSeFlsTmhkMmM1WjFOaVJXZEhabEptVFdGa1lXNWlXV2RCWmtKaE1HTkZZWFJuU21WR2FIaG1UR1JoWVd0aWMyVk9ZMHRpYW1kelkycGtabUpGWkdkbFdHUlNZMVpqYjJOdVpHUmxSV1p6WVN0aVkySXpZMHBoT1dSWFlsSm5RV05hWkdGa1FXSjBaa1ptWW1ONFlrVmhWR0ZpWVRCbVpHTjZaVVZrTUdWa1lXOWtSbWhSYUhObVVtVkdaVVppVm1kdFlXTmlRbVZTWTFWaVQyUlVZMlJtU0dOWlpqRm1WbVJSWlZCa1IyaHNZbWhtUm1ab2FHaGxiV2hHWTBkb1dtUnRaVmxqV0dSQ1pWWm9ZbWN4YUhCalNHUklaVkprTVdSV1lWVmxhV1paWjNWalRHaHFZVmxrWm1GS2FFVmlkR2RZWlZkbmEySlJhSE5vUW1kVFkxWmhObWRWWTJoaFdXRmFaR1ZqUTJWUllXVm9VMlV4WjBaaFMySlJhR3RoYUdoNWFHTmpTR0ZDWjBsbVVXTXdZbXhoWVdaa1oxaGthR0ZNWldSaE0ySndZM0JvVm1jeFpXdGpVV1pYYUdsbmJHSlpZMEZvUjJJNFkxUm5VbU5wWkhkbVZXZFpabEpuUm1Oa2FGRmthR1JXWjBsaFZXVkZaV05rVVdGYVpHNWpTbUZYWmtablYyWndaM2xvVldaWVptUm9XR2RUWldoaFdXaHhaMGxsUldSV1ltUmpXbVpvWjFsaGVtRktZMVJvU21VNVoxSm1NbVF4WlVGbFltZFNhREJuWkdoV1lWWmlTbWd3WW1GaE0yaHdaMnBoVkdKWFpYQm9UR1JFWXpGb1NXVlJabHBuUldKM1pURm9UbWQzWmtWalNHUkdZVmhqYjJacVpGSmhaMmd3WTBwa1ZtUlNaMVZvYm1OamFFZGpjR05oWWxObVJXWk9aRXBoVjJKdVkxWmxOR2hUWlROa1pHWTJaR0ZuVm1ka1oxcG1SV2hDWm14bWIyRkRabmRtV1doMVpGRm1iR0ZhWlhablVtaFRZVnBrU0dKQlpWZG1WV05GWjFoaWFHRjNZVU5uUldSdVpYaGhXV2hXWkdoaVZtaHhaR05uYkdOR1lUTmxWbU13Wkc5a1YySmhhRmRpUldKWFlrZG5SMmRaYUZWaldtUnRZVnBuYUdKSlpHaGlRV1EzYUVSaWVHWldabFJuU0dSVVlXUmhZV1JKWlVOblRXTjZhRTFtUldSR1ozRmpTR2gzWlU1bFUySlJhRzFoYUdkTmFGQmtNMmc1WmtwallXVkNZbFppTkdGa1ltaGlTbWhNWTBkaVJXWk9abHBtV1dKdVkwcG9kMkZqWkVWb2FHSkVZbE5tVm1kdlpuaG1VR0ZSWVRCb01tRk1aM2xqVldoRVpsRmplbUZ2WmxwaFlXZEJablJsUm1KaVpuaGtSV1ZVWjJKak1HRmtZM3BuUldFd2FHUmliMk5HWTFWamFHVlJhRkprZUdaQlpIWm1UbVZHWkZsbVpHUkpZbTVqZEdaU1kwbGplR000WTFsa1YyVlVZalZpYUdoWFkwWmhNR2g0WVVab1FtWkpaUzlvVFdaVVpGVm1kMlZRWWxGbloyZEpZVlJoZUdoV1pWaGxTbVY2YUc5aVoyZE9aVU5oZDJWaFowcG9SV1IwWjB0aVNHZEdaazFoY21KRFprUmtPR0kwWVVaaFZtWm5ZVlppWldadVpsbG9XbUpUWkRGb01XUkxabEZoYTJOb1lubG9ZMmRJWTBKb1NXUlJaREJpYkdKaFlXUmhXR1ZvWlV4b1pHRXpaWEJoY0dOV1pURmthMmRSWkVkb1YySm5aRVJtUVdOSFpUaG5UV1ZGWVRKaFpHUkdZbU5rVW1kT1lrMWpZV1ZHWlVKblFtWllaR2htVG1KbVowTm1hbUl3WTBKbFZXWkVaV2RqVW1SRlpFTm1VV2RUWTFGaWFHVTVaR2RrWW1WU1kxbG5VV1ZNWjJoaVVtVTNZMXBtYldaQ1ltZG5XR0ZJWlZKbGQySlNaWGhqTUdKa1pWWmpWbVZLWlRCaFlXRXphSEJvYW1KVVpGZGtjR1JNWTBSbU1XVktaMDVvVkdGclpuaG9NbVJrWTJ4a1NtVkRaa1ptV0dab1lqSm9SV05yWm5SblJtRlRaR3huVm1SSmFHTmtibVpDWm5kaVUyaEZaVTVqU21kWGFHNW9WbWMwWjFObU0yUTRZakJpV21kM1oyTmtUR2RZWWpCb01HTnVhRmhsZUdKM2FDOW9WbU5DWlRCbU4yWkRhRUptYkdGblprdGxRV0paWVZablZtZFdhRUZoUW1GU1psTmpaMkY0WjBGa2JHWjNZMnhqVUdGR1kwWmpMMlpZWm10b2NHUk9hRkZoTW1SRllsZGtSMk5IWkZsbVZXaGFZMjFpV21ob1pXTm9SbVJXWlhaaFYyRm9ZbFpuV1daVFlWRmhRV1ZCWlU5aGJXWnpZMmhrVTJSVllqRmxjV2RUWVhka09XVlRZMFZuUjJGU1pVMWlaR1J1Wmxwb1UyVlJZMmhoVm1RMFkwbG5hMmh6WkdKbVdHZFdZMnhsV21SWlpVSmlRV1pzWlU1aVoyWTBaa2RuUjJZeFlXaG9OV1pWYUd0amRHTXpaV1ZrYldSc1pWaGxWMmhTWjBGa1dtUmhZVUZvZEdoR2FHSm1lR2RGWTFSa1MySjNZbGxoYm1oVllXeGtNV1p2WldSb1FtTnZaa05pUW1ocllteGhiMlpKWTJkb1VtWmhaMUJpYW1Rd2FFWmtUR0ZuWm1OaFVHRkhaRVJsYjJKMFpWaGpNV2h6WVdwb1IyTnBZVlZoYm1oTVkxUmplR05rWWs5bmVHZEpZVTlrVkdOb1pFMWxjV1ZGWTNsaldXUTFaV1ZsYW1JNGFGSmhZV0pvWmpsbVNHaEhZVEJvVG1kdllWUm5SMlphWVM5a1dHZHRaR2RtVm1GbFowaGhXV0ZUWjFOb2VHWm9aMFJpVjJSWFlVcGplV2hqWjBoa1FXZFdaRmRuUjJGT1lXRm9aR1ZZWm1oaVRHRmtZVE5pY0dkd1lsWm5NV2RyYUZGalVtTkhhRVZoVVdGaVp6SmxPR2hTWTBWak1tSTVaRWhvWTJkNFkwNWxTR2RRWld4blVXRmhZVlZrUW1GT1pFVmxXbVp0WnpsaVYyUkJaVmhoY0dkeVkxSmpNbU40WWpsb1UyUm9ZMXBsY0dWWmFGSmlXV1paWTFwb2FHaFNaM1ZpUzJoSFpqaGhaMmRDWVhsaFFXTlBhRU5pUldKc1prVm9RbVJTWW1Sak5tWlBhRVJrV1dGeFkwUmlhV2c1WkV4bFJXVnNaVXBrVjJoTllWRmpTV1F4WWtsaGFHWnpZVTVqVjJFelpHaGxLMkpTWW10aFkyTlpZVVZtVm1kQ1lXbGtTMlZXWVhCaGQyZFRaVVZpVG1oS1kxZGxibUZXWmpSalUyY3pZbVJpTm1SUVpuaG9XV2hNWkVWblJtTkNaMjlrUm1ocmFGVmxOMmRYWmxaaGIyWTRZVk5tVkdZNVoxZGtRMlJUWmpsalFtUkJZa1ZoZEdWMGFFVm1SMlJhWjNsaFZtUm9aVlppY1dkaloyeGhSbUV6WjFaaE1HRktaVU5oWVdkWVpIZG9WMlZTWTJwaWFHRkJZMkpuTW1Gd1pVeG5ZMlpHWjFaamRtTlhaMnRtWTJKa1kwaG1WbVZXWlZOa1pHVkhablJvTm1kaFlYaG1PV1J4YUZab1oyWTRhRVZoV0dONVlUQmpTV0ZrWW0xa1dtZFRaMWhqZDJKb1pteGpaR0pyWkVKbFRHUkNaREJqVFdSUloxbGhiV2RvYUhkaFRHWm9aMWxrVW1KUlpFWmlXbVJtYUdWa1JXaDBZak5qWldWdFlXeGhXR2hYWjFKa1FXaGFZV0ZrUVdSMFpVWm9abWg0WVVWbFRtZGlhSGhrVG1aNmFFUm9SV05rWkdkblNHZFNZWGhvVVdKVVpFRm5NV1J0WlU5bU1XVTRaRnBvWVdKdFlrcGxVbVZoWmxab1kyRmxhRVpoYldJNVpXNW1SbUpvWlVGa2VXRkdaVWhoZEdadFltTm5XR1JzWW1OalltTXdaa0poU0dkVFoxSmhNV1ZNWlZWa2FtTXhZbkpuWm1SSFlsWm1UbWhaYUdobU9HVlFaRlJuZUdWQllYUmtVbVpZWm5CbVkyUlZZMnRrU1dWV2FHVmxTR2haWjFObFUyUjRaR2htUkdkWFlWZGxTbWQ1WkZsalNHTkNaRmRvVVdoNFluUm9ZV1JoYUc1bWFHZEVabVptZVdGb1luQmlXR2RGWlZGa1VXVlZZVWRrUldOSVoxSm9XR000WWxKbVJHZFhZamhuVm1KalpIaGpWbU5DWjJGalFtRXdaV0ZvVldGR1oyOWhVV2RrWW01b2RHVm1ZVVpuV0dWQ1ozbGhRV1V6WjJSa1NtTlRZbXhrT1dWd1pscGhlR1JCWVZsblltSnJZMXBpYldWbFp6SmtSV0kxWjFoa1IyaE9abmRoVW1KNFp6Qm9aR2hXWjFabFNtWXdaMkZuTTJSd1lXcG1WR2hYWW5CbVRHUlhZVEZtU1dOUFpWcG1RbVExWXpKaVkyRkdhRkprUTJGSVpGTm5jR2d5WmtSa01HZDBaMDFpVTJkcmFFcGxTV1pqWkc1bFFtSjNaVk5oUldoT1prcGlWMlJ1WkZaaE5HTlRaSGxsUldjM2FFOWhNV1ZqWVdOa1EyTjZaMDVrYjJKRFp6QmlWbVYyWTBWaVVtaE9ablppVW1FelowMW1WR2RFWW1sb05HSldaMUZrUW1jMVlrcGpXbWRDWnpoalEyaE5aRE5tUldOV1pVVmtlV1JOWkVaaVRtZHFaRTVsY0dkSFoyaG1VbUp0WVdGalFXUnNaVzFtUldadGFEbG5UR1pqWlVaaVZtTjJZMWRoYTJKamFHUmhTR0ZXWlZaaVUyZGtaVWRoZEdFMlltRm1kMkZvWW5GblZtVm5aVGhvUjJWWFkwTmpNR0ZtWkdWb1EyVlZaVWhuUVdOR1pWRmxjV2hLWjBaa1RXaFRaMFZqUW1Ga1oxWmlXV0ZwWkVKbU5XUmxaVlZtVW1aRWFGRm1VbWM1WWpkb1FtVjZabEZsYm1aTGFFTmtXV0ZFWWtaamJXRTVaVzFoWVdGQ1pscGhSbUZKWWxKaE9XTkVabEJoVVdObmFHNW1XR1ZDWlUxbWVHZFNZbEZpTVdWYVkxaGtSR1J3WVcxalkyWnNZMWxvVm1SaGFHNW9TbUZTWm1Sb01XSmtZa3RtVldoNVoxVmhlV1ZWWkhoaloyVTVZVkJoYldSYVoyMWlXV2hZWTBKbVZtUmlhREZqY0dWSVpFaG9VbVF4WmxaalZXZHBZVWxrY1daTFlVZGpUV1JEWkdGaGJHTlpabEJrUVdWQ1prSmxjR1ZVWlVObVNtSjBaV1ZtUldKSlpGWm9aV2hJWVZsalUyZFRaM2hoYUdWRVoxZGlWMlJLYUhsalkyRkVZVlpqU1doWWFHdG1hMlpWWTAxaFEyRTVaVXhpVDJkWVkwbGhiV2RYWVRGaGJHUkhabFpuYVdKR1pGQm9VbUZZWkRobFdXaERaa1ZsVm1GSVoyTm9lR05PWVVoa1lXaENZMVppU1dkVlowVm1ZMlZSWTFwamJtZEpaVkZqVjJScVpHaGxlV2RYWTFOb1JXUlhaVWRtUW1kWlltaG9XV1ZSWkhOb1dXaGtaV2RqT1dKdFpVdGpWMkpHWTNWalZtaFRaMlJtUW1GU1ozaGhXV1ZYWlVoa1ZtTjBaVEJtVEdGbmFFVmhjbVZOWTBkamNHVlhhRVJpZDJKYWFGbG1UR2hTWmpobFRtaFFZbXhsU21kS1pVWm1VMlozWTB4b1EyWlhaa1ZtV1doUmFERm9iR0ZwWVdOb2JtWkNZbmRuVTJORlpFNWhTbVJDWVRGbk9XTTBaVk5tTTJWa1l6WmxZV0ZXWTJSbVdtVkZZMEptYkdOdloxZGhVV2RCWWpkalVtTkZZVVZpYUdGU1pYcG5XV0pKWm1KblYyWm5ZVlpoVTJoR1owSmlTR1ZGWmtka1dtZDVZa05uZUdkNFoyMWlWMkpHWmtaa00yaFdZVEJtYjJoWFpHRmtWMk5GWVZkbVIySkhhRmxqWTJaTFpFZGxaMko0YUVsbmFHRnZZVGRqUm1WU1prNWhSV2RVWWxKbFFtZGpZMHBoYVdZMFl6ZG5TbUY2WjJkblJHTkNZVlprYzJZclkyUmtWMlJTWlZKbVpHUnFaVUZrU0doRVkwWmhXV1Z6WWxCbE1XTXdaRVpuUjJGRllYTm9UbUppWkc1bFNXRnBZMlpoUldWbmFFdG1VV2hHYUc5bGRXTlZaMnRtZEdnellXVmtiV2RzWTFob1YyTlNaMEZoV21WaGFFRmpkR05HWm1KaWVHSnNZMGhtWW1neFlYQmtlbVZCYURCalkyUXdaa1ppVW1WNFoxcGpVMk40WTBKbGRXaEpaVVptV1dOSlptRmpiV2RLWWxKaVMyZ3haV05rV1daSVpqSm5WbVJvWjFobWVHSm5hRFpqVTJKSGFGbGlUR1JoWjFOalVtZGFaR0ptZDJKb1pVeG9TR0ZWWTJ0bFpHTkhaSGxqWkdkc1kwNWxhV1ZaYUVSbVRHSlNZamxtU0dKWFozZGpkR05QWkZSalNHSmFaakptVldkcmFFbGxWbWhsWWtoaldXaFRhRk5qZUdkb1owUmlTR2Q1WkRCa1oyZGpZVWhqWjJWbFpFRm5hR1YwWm1GalRXUklaV2hqVjJGa1kzbG1OR2hvWVVoa1oyRndhSEpoVkdkU1pWVmtTR1ZTWWxOalFXRlNaVVJsYldjNVpGZGtabUo0WlUxbFVHRmhaVUZuYUdKSlkxRmlSbUYzWkZGa1ltTllaV3RtWldWR1kxaGtXbU41YUVGbk0yaGthRkprVkdOQ1lscGhhR0ZNWkdoa1dXWlRZbVZuZUdaU1p6QmhZMmN6WW1SbE5XVlVhRzFpT1dSVVpHSmlVbUl3YUdSaVZtWldaMHBqTUdkaFlqTm5jR1JxWVZSa1YyUndaVXhrUkdJeFpFbGtVV2hKWlZWbWVHTTVZbUZtTVdKSllWZGhXR1ZVWkVWb2JHWmhZVkpoT0doWlpGTm9SbWRyWTNGbFJHY3pZVUprTm1OVFprRmxlR0ZUWm1OaFNHWldhRFJoVTJJelpHUm9ObVZoWlZablpHTmFZMFZuUW1Oc1oyOWlRMmg0WVdOb2NXWlNhRlZoV1dnNVowTmxXR2hPWWxka1dHaEZaa2xtVm1GVFowWm9RbUpJWjBWaFIySmFZM2xrVm1ob1lsWm1jV1ZNWXpGbWFHUTNZMlpuVldOdlpsZG9ZV0pYYUVWalYyVkhhRWRtV1dkVllWcGtiV1phWlhCbFVHWnNaM05sTDJkRFlVRmxhR0pLWjFWb1oyWkZaVXhpU21GRFlqVm5NR1pOWVZGbloyTnlhRVJsTTJKdllqZGpXR2RxWkVGaWRXUkZZVE5vV21WUVpWRm5iR0ZOWW5SalQyVkdZMFZqWm1SVlpsRm9kMmhZYUZsaWJtRnZZMnRqWm1WRmFHZGxVbVZTYUZabWIyRTRhR05rVldOemFITm1WV2RIWjJ4aldHTlhZMUpvUVdKYWFHRmlRV2gwWmtaalltUjRZMFZtVkdkaVlqQmhPR0Z1WjBWbU1XTndaVzlrUW1WVlkyZGtUV2RTWmpCblVtSjJaMlprYkdSWlpXUmhUMkZJWmtwblRXaGtaekJuWkdKTFpWTm1iV1pyWVhwblNHUjRaMUpoYldkWVpsZG9XV00yWWxCbFdHZEJZelJtV21KM1pEVmpUR05JWVZWbk9XVmFaVlZuYVdkQmFHcGxUV0Y2WWtKblJHTktZV2RsTldSQ1lrWm5WV05SWTNObFVtWlhaVEZqWTJKVlpHdGxTV2RXWm1WaVNHRlphRk5uVTJKNFltaGtSR0ZYYUZkalNtUjVaVTVpYW1ZNGFHRmhVV013WTBWbFRXTk9aa05qY0daTVpVMWtibWh3WlRCa1ZtVjNaekZvV1dGVlpVUmxkR1ozWTBWaVYyUTRabUZsUldNeVpVcGhTMk5KWjFkbU5XSk1ZV0ZoUm1Wd1pVbGpWR1ZWWm1ObVFtSm1hRmhpU1dORlkwWm9XR1JTWW5sa1VXTllaR1JoVW1OVVprSmhXbUpvWjB4aWFHTlpabE5rWldWNFlWSmhNR1ZqWWpOb1pHSTFhRlJoYldZNVpGUmtZbU5TWVRCalpHaFdhRlprU21Rd1pHRmtNMkp3WW1wb1ZHVlhaWEJuVEdaRVlqRmlTV2hSWlVsb1ZXRjRZamxrWVdReFkwbG5WMkpZWjFSblJXaHNaMkZvVW1NNFpsbG1VMkZHWTJ4a2RtSm1aWGxoU1dWT2FGTmpSV2hzWjBwb1JtZFhaelZtVTJKVFpETmhaR2MyWm1GalZtZGthRnBtUldaQ1kyeGhiMlJEWnpCaVZtSjJZbEZvTVdkWll6ZGhSV1pwYUVab1pHVlNZWGxuTUdSUFpWbGpiR2hDYUVoaFJXSkhZVnBrZVdGV1pHaG1WbUZ4WjJOb2JHRkZZM0ZtV0dWclpGbGlPR0poWlZkaFJXUlhaMGRrUjJkWllWVmtXbUZ0WkZwa2FHaGpaVVpoTUdSb1lsWm9RbVJrWVZCaVZXWm5hRVZpWkdSSllVUm1TV2R4YUVwaGEyUk5aVFJrUkdSclpEUmhWMmRhWVZGb01HRkRZa2xsYldjMVlWTmxXR1I0WmxWbEsyWkpZVEZqZDJkSmFGUm1RV0Z2WlZkbFRHZElaa3BuTkdSS1lrVm1VbUZFWkVkbk1XaE9aVEZpU1dZeVlrWm9NMk5sWW0xaGJHVllZMWRuVW1SQlpWcG5ZV1pCWVhSa1JtSmlabmhsUm1kQ2FFdGlhR2ROWVcxalVXVlJaV3hsYjJkU1pEQmhaMmROWlVkb2VHaEJaVXhuWldGbmFFbGtXbWRoWjIxaVRtUmtaV1JpZDJoTlpVTmpXR1Y2WlhCamRtUlhZV3hqTUdOdloxVmxlbUpKWVhWaVlXRklZWGhuVm1OUFpuaGlTV0ZQWVZSb2JXZFphRUpoVEdneWFEbGhRbUpsWkcxaVRtWk9hR0ZsYTJaelkxQmpWV1ZvWlVKb2EyZFVaa05vZEdjdmFGaG9iV05uYUZablpXSklZMWxuVTJWVFpYaGphR1JFWVZkb1YyUktaWGxqWldORVlqVm9SMlpGWW5obWMyRldZa2xtVkdaalltWm9UR1ZwWkc5b2MyWlhaVkZqZEdKV1oxZGhRMmg0WWl0b1RHSkRZa1psUm1SQlkyNWphMk55WmtabGFHUk9hR0ZoWVdGR1prMWxaR1pJWjJkb1VtSkZhRXhqZW1Zd2FGbGhSbWhYWVVsamJXVllabGhtWTJGR1lWRmplR0paWW5saVUyUjRaMWxsV1daYWFHaG5VbWR0WWxwbGJXVkdZbmRoVm1OWFl6bG5ZV2hTWnpCaE9XWlpaVUZpVVdoalltMW9TbWRZWm05bWVHSlVaVlJoV1dOWWFFUm9lbWM0WVZsblRXaEZaVUpoTW1aYVowWm1OV0pEWVZGaVZHaEJaQzltVVdWVlkxWmxWV2hDWldoblkyZHNaVXBsYW1Sb1lqVm1VbVpGWWsxa1pHZEZaR3BpZDJaeVpVMWpRMkpOWVVob1lXSlJaM1JtV21GSGFFVm9NR1puWVZGb2FHZFpaVlZuVW1OU1prNWthMmhTWkRKblNtWjFabEpsTTJGUllrcGlVMlpGWW1oa1QyaERZakJpZUdWNWFGWmthR1ZXWjNGb1kyTnNZMFpqTTJaV1l6QmhiMmhYWWs1blIyaG5ZV0ZvVFdkdGFGbGlWV0ZhWlcxbVdtUm9ZMk5tUm1oV2FIWm1WMlJyWkdOblZtTlZaREZvYzJoRGFFcGxhV2hSWlhWaVRHRkNaV3RoZW1SSFp6Qm9jR1JqWWxGaWFXTkZaazVpVFdWbmFFMWhOMk5FWmtWbFJtWndZVmxpU0dWQlozVmlSMkpHWXpWbVdtWktaa05rWTJRclpFMWllR2gzWlV0alFtVm9abEpsTVdWallrSm9PV0UzWldWa2FtTjBZV1ZoVjJSVlpITm5lbU5oWTBGbGRHZEdZV0pvZUdoRloxUm1ZbUV3WW1SaGVtUkZhREJtWkdWdlpWSmxkMll3WTBWalJXUnJhRWxuYjJkalltZG5VV2hXWVU1aWFXSTFZMUpqUjJoc1lUaGhaV1JIYUcxbGJHWjZaa2RqYUdSblpIbGhXR0ZEWmpobE1XUmlaSHBsZDJkUllVbG5VbWN3WVZSaFZtTlNZMUptV21GVmFHNW1kMlF2WTAxaGFXTnZaMlZtUldaU1p6bGxlV1ZWWm1ka2VHTTBhRlJsUjJFMVlTOW1WV0pvYURSaVZtaE1Za1JoTldOaVpVZG5SMk5OWjFobFYyWlhaR3hsZVdaWlpsRmpNV0ZVWVdGaFZXZHNaMkZoWkdGWVkyaGpUR1prWmpObWNHZHdaRlpoTVdoc1pVNW1SV2RIWmxGamFHRlNZbGRpT0dSU1prVm1NbUU1YUVoa1kyZDRaVTVsU0dSaFlVSm1NR2RIWlZoaGFHVmthRU5sUzJKVFlsbG9XbWhSWWxSalRXVnBaMFprU0dOclkwWm1SR0V4WkdObWRHWkdaVWhsT1dSWFowMW9aMmRrWnpCaFEyWm5hRkpoZDJOVFpFZGlPR1JqWjBWamJHVk9aR1ZqUVdOU1kzTmlOMlJLWjFobmNHTnlaMGRuVjJOYVlreGxXR05XWVhOa1VXSlFhREpoV21ReWFHUm1iR0ZLYUVOalJtZFlaV2htTW1kRlpHdGljMlZaWVZGbE1XSnJaM2RtVG1oNVpGRmxiR2hIWjJkaE1XTktabFZrYkdNNWFEUmhVMkV6WW1Sa05tZGhZVlpqWkdOYVprVmhRbVZzWlc5aVEyZ3dZMVpuZG1SRllWVmxSbU4yWTBkbWVXSTRaVlJuUzJKdFpVSm5RbVZTWTBaaFFtSlVZVWhqUjJkWloyMW5TR0ZzWm5kbE5XVm1aVUptTUdWNVprZGpVV2N4WTBOblNXUlhZbWRoWVdoTllXMWxXV2RWWkZwbGJXaGFabWhrWTJaR1lsWmxkbU5YWW10blkyUmthRWhvVm1oV1pWTmtabVpFYURoaGVXWkxaMmhqTkdGU1pFaGxNMmhLWVZOalZHZEhhRkprUldoSlkycGpOR0ppWWtWblYySTBZbk5oWkdKb2FHeG1UR1ZEWmxSaE5XTmFZbVprYldJMVpYZG1ZV1JGWkVaa1JHaEdabFpqY0dNNVkweG9RV2hOWVN0bFMyZFNhRWxrUkdWWFlWSmtjMlphWm1Wb2JtUmFZa1prWTJoM1p6QmxWR05tWTJ4blJtSTJZa2RvYTJKa1pXcG9VR2N3YUdoaVVXSlNaSGhvUW1adFpHTmliR1JaWjFab1lXRnVhRXBsVW1oa1p6RmhaR0ZMWmtaamJXRnNaM2RtUVdkQllqbG5lR1JCWnpOb1VtRXpaMlJuTTJoQ1pXWm1ZbVozWnpSb1VHVldhRVZtTkdGMWFFSmpibVpTWkdkbFpXVnVaMEZtZDJkUlkwVmtjMlZRWmxWb2FHUkNaMnRoVkdkSVkxcGpNbVJWWVd0aFNXUldaR1ZqU0dZNFpFcGxXV0pTWm1ob1JHZFhaVmRuU21GNWFHTm9TR1pDYUVsbFVXUXdZV3RrU0dGbVkwaG1VbUZvWTJSbU0yZHdZbkJsVm1JeFpXdGpVV1JIWWxkaFoyWk1aMUprVjJSa1kyWmtTR05VWnpob1ZtaFFhRVZoWTJOSmFGQm5SV1ozWmxsaFJtUlZabXhqUTJSSllucGxUV1pUWkZsa1FXRk5aemhrUW1SWFoxSm9SbU5MWkVoblRtRndaMlpsUW1SYVpHVm5UV2d4Wlc5aGJHVk5aV2xsWjJVdllVZG5NbVU1WjFOb1JXVjRaRVZoWkdoQ1l6Rm9kR1F3WlUxaFJtVkNZbXBsVkdKWFlYQmxUR2hFWWpGb1NXWlJaMXBpUldWNFlUSmhaR0ZzWWtsaVVXUlZaVU5qZDJacVoxRmhRV05WWmxsalUyWXpaRTVsYVdGalptNW1RbVIzWlZOb1JXTk9aVXBsVjJGdVoxWm1OR2hUWnpOa1pHUTJhR0ZqVVdkV2FGcGlWR1pGWjFaa2IySmFaMnRtTUdjM1praGtVbVpPWVRka1UyTXpaVTVuU0dGRVozbG5SbUZIWTFKaGFHZDNaME5uV0dWcFlrVm5iV0pJYUdoaGVHTnRZMWRtUm1oR1pETmtWbUV3Wkc5b1YyWmhZVmRrUldkWFlrZGlSMmRaWTFWbFdtRnRaVnBpYUdOWloxVmhUbU0wYUZSalZtRkJZMUJsUkdWRlowNWpVMlJtWVcxb2MyRjFaVXRqZDJGUlpUVm1UV1JHWjNObmRtaEZaRWRsT1dSdFpXUmhibUZhWVZOaFVXTm9aMVpuTkdOa2FHaGhTbWRNWmtkalJXWk9aVnBtV1dodVlVcGlkMlZqWmtWbFFtTk1aMGhqVW1aSlpUaGhTMlI2WTBGa2FtaGxaRzFtU21oWVkxTmhSMkl3YUZwbFpHVkNaMlJoUm1obWFHZGtZMmRoWkdKaGVHVjBhSHBoUjJWNFpVMW9aMk5ZWjBKa2MyVnlZMFZvZUdoQ1lYUm9ZMmRyWlZKa2IyRmhaRzFuTldkT2FHUmxNR1E1WkVSaFJtVnFaMVptYUdOUmFHeGhRV2gyWjFKa2VHUXdZbmxqV1dkWVlYUm9WbVZtWWtOaFpHUlBhRTVtZUdneFlWWm5WV1Z1WmxKbWNtSmxaMjFsVG1KT1pXRmxhMk56WlZCaFZXZG9aV3hsTDJSYVoyNWpXbU15WTFWaGEyVkpaVlpsWldkSVpWbGtVMk5UWlhoaFoyaGxaVlZpUjJjMVpGbG1ZMlJJWWtKbFNXSlJZakJoYkdOaFkyUm1XR2hvWlV4aVpHRXpaa2xvYm1SWFlWRmpiR2hEWWxaaWFtVjRaRVZqUldkVVpscG5RbU5XWVcxa1JXTldaRTVqYkdaSlkwUm5RV0ZXWVhOa1kySlFaa05rU1dWUlltVm1NMkpKWlZGa1VXUkRaMUZpZUdSQ1kxUm5OR1paWWtKbFFtUmFZbWhtVG1kU1pHOWtXV05PYUVKaGFHaHRaa3huTW1Gb1ozZGlSR2RyWVZaa1lXaFNZM2hrTUdOa1psWmlWbWRLWWpCbFlXY3paSEJpYW1oVWFGZGljR0ZFWlZka01XUkpZMDVuV21GR1lYaGtNbUpMYUd4aVNXZFhaMGhoU0dOU1pUSmtSMlpvWVd0bldXaFlaR3hvYkdWNVltTmphV2Q0WTNkalIyaHJZWEJuUm1KWFptcG1lR2cwWjBabmVXTjBaalptUW1oR1pqaG9UbWRJWWtKbmEyRTJaRUppTUdoVll6ZGhWMkZXWkc5b09HUlRaRlJoT1dGWGFFTmpVMlE1WkVKbFFXZEdaV3hvWTJOUFoyMWhXbU41WkZab2FHUldZWEZrWTJGc1lrWmhNMk5XWWpCbGIyaFhZMkZqVTJka2FGcG5VMk50WVZsbVkyZE5ZVU5vWTJWNmFHTmxRbWRDYUhaa1VtY3dZV1JtU21aV1pWSmtkMkpDWTBSa2VtVTRZa2huWW1nd1p6Qm9iR1ZUWTNoaFNtTlRhRUZuVjJSb1kwMWlVR1p1WVZwb1VHSlJabWRvVm1acVpXUm1hR0pzWTBGblZXUkZZVTVoUm1oWlltbGhRbVYzWldSbmEyYzFaVVJtVVdSU1pWWmhNV0pqWTJ4aVdtWXpZMkZpU0daNGFFSmxWV1ZCWlhOb1dtVlpZbE5oUm1SR1kySm1lR2hGWTFSaVltWXdZMlJrZW1aRllUQm9aR2R2Wmtaa1ZXTm9abEZvVW1neGFGWmhiV05sWVZWbmMyTldaVkJsYW1kdlkxbG5TbWhEYUhka1pXaEdZVzFoU21Kb1pGaG9iV2RXYUcxalNHTnRZVmxpY0dabGFHeG9jR1pXWVdKaE1XWndhRWhpU0dSU1p6RmtWbWRWWTI1a1VtRnlZV1ZvYldoTlkyWmlUR1o0WVRsb1lXTkJhRVpuTldWclpsSmtSR1JzYURKblYyaEdZVGhqVm1aaFoxZGhVV0ZMWjFGaGFHZFNaa1JqU0daSFlrcGtjMkZpWmxoblFXWklhRkZsTUdRNVlXTmxaR1JZWVVGbVQyRmtZek5uWkdRd1pWWmllbWRTWWxKb1ZHWlRZVUZuUm1KR1lsTm9RbVpIWlVkak0yVXhaRXhoWTJGM1pIUmlTR2RaWVdoblZXaGhZVmRpVldjMFpXTmlXbWhxWldSbFRtRlFZakpqY0dGNVlWVmpXR2hrWmxoaFUyRm9hRnBtY0daWllsSm1XbUpHWjJKa2VHWm9aRTFqV21adFpFWmxkMmhXWlZkak9XUmhaRkpsZUdZd1ltUmtWbVpXWkc5aU5tVmFZVk5qYjJkNFpVRmxhbVEwWVVWblYySjNaM1JpUVdGSloxVmlTV2RyWmsxaWVHUk5aa2RoWm1WRVlsbGhhV2hqWVVOak5HZFphRmhvYkdKclpHdGhTbUY2WkRSb2VtSklaa0ZpYjJoSFkwWmhTR0pXWW5kaFNHTXpZM1JoTm1WUGFERmlkR0phWjFkaFVtRkNhRzloVldKSFl6bG1kbUZGWVZKb1RtTjJaRkpqTTJKTlkxUmxVbWd5WVdkaFZtVlRaRVptUW1kUVpWSmlSMk5hYUhaalZtTm5abFprY1daTVoyeGxSV05xWVZobmEyWlpaMWRvV1daVVkwMWxWMlZDWlZkaldXTkZZVnBqYW1Gd1oyaGtTV1JzWVhoaGFtZFhabWRuTkdSa1lWRm5VV1JzWVZOaVIyVlhaazFqZFdKaWFEQm1NR1kwWWxKbGQyTTRaa2RoVjJkRFlUQm9abWhsYUVSa2IyWllaRVJrUm1aSlpITm1VR05vYUhSaFVXTk5ZbXRvVG1oYVpsbG9ibVpLWVhkaFkyUkZZV2hoUkdkVFpWWmtjR014WkdWbVFXWXdZVFJuUzJkSFpteG5abVJFWlRGalJtUk1abUZtUldRMVpFWm1ZMmRvWTBaaFFtaFpaVEJvWTJZNFkwVmhNV1p3WVc5aFFtaEZhRkpoVVdWRVpYaGhRbWczWm1ObloyWktZMlJoU1dONVpFVmhjV1JKWXpGa1pHWkNaa1psYldGU1kzTm9WV2N5WjFaa09XRkdZVU5qVG1SdFpHWmpNMkZDWmtabFltUXhaWGhuUW1kSVpsSm9WV0ZoWlZWaGJtZzFaVEpsWldGdVpFWm9XV05tWjBWbFNXVlZaRlZtYUdkc1lVOWlWR05JWkZwbU1tZFZZbXRqU1dkV1kyVmhTR05aWkZObFUyRjRaV2htUkdSWFoxZGlTV1kyWjJObVNHZDBabFprVVdONFlUQmpVMlZRWVVObWMyZDNaa2xvTTJad1lXbGpWbVl4WlZGaVpHTllZa0ptVldoTWFGUm1NbWc1WkdWa1EyZEZaVlpoU0dOallYaG1UbUZJWjJGaFFtaFdZa2xvVldoRlpXTm1VV1JhWkc1b1NXWkZhRlZtUkdRMFptNWpRV1o2Wkd4bVdHaFJZbXhpYkdKd1lXRmtkMmh6WTFsalpHTjNaMXBrSzJkaVlUSm9NV1IzWlVoblYyWTVaVVZqVjJWb1pERm5VMmhXYUZaalVtRjVZMkZrTTJWSlpYSmpWR2RYWW1SblYyWkVaSHBrT1daU1pVMWpRV1ZTWXpSblNtVm9ZekJpVm1KSVpGZGtjR0UyWTBWa2JHVk5aVmxoVTJkV1pHdG5kMkZsWWpOaGJHSTRaMU5vUVdGMFlWTmhZMlpJWVZabU5HTlRaVE5oWkdjMlpHRmhWbVZrYUZwaVJXaENZbXRsTVdSQlkydGpiR0pHWTBWb1VtaE9hSFpoVW1nemFFMWtWR1JTYURKaloySldZMU5sUm1GbllrcGhTR2RxWmxsb1oyZEhaRlZrUldWc1pFcGtaMkpuWTI1aVJXaHJaRkpsUldkTVowTm5RbU5UWTJOa1UyTm9Za0ZtWm1adFpGcG9PR1pqWkVKbVRXYzJaa1prUVdaU1prcGlWbVJDWkc5aFkyRmtZMGRsVFdaMVoySmlNR0V3WkRSalVXZG5ZVGhtU21OUFoyMWtVbWROYUdSbmJtaGFZMU5oVVdab1kxWmpOR2RrWjJobVNtSk1Za2RsUW1SRloyTm1UbU5wWVdOaGFXTlFaMnRpYUdoTVpGbGhNV1Z3WVRGaVpXVkZaSFJpTTJKbFlXMWtiR1ZZWWxkaVVtRkJaVnBvWVdkQlluUm5SbU5RYUZKb1JtTlFaVTFsTUdoalpHVmpSMlI0WVU1aGEyaEdabFpqYkdkalpsSm9NR0ZSWjNWalQySjNabFZvWW1GS1lXcG5ZMlptWmsxblFXaE5ZME5vU0dVeVpGWm1UR1JHYUdoamFHRnRZMFpsUjJKYVptMW9XV1JZWlVKalZtSmlaREZuY0doSVpFaGtVbVV4WkVWbFVXRkhZM2hvY21GbWFFZG1UV2hhYUVsaloyaEtaV05vUzJaVmFGRm9XbVpVWlVkbGJHSXlaMWhqTVdoTlpGWmlZMlZ1WlZsb1lXSlhZbEZsTVdGWFkxZGtWMlk1WkhsaFNtTkVaMmRsUW1oRlpFUmtTV2RQWmtOaVNHWm9aa0ZtWkdneVozUmxaMkZXWlRCblRXUlJaVlJtVTJKQ1owTm1SbWhvWWxKalJtSmlaV3RoVm1GSVpXTm9lR2hPWVVoaVlXRkNabFpsU1dOVlpFVm1ZMlZSYUZwa2JtSktZMlpsUkdScllrSm1lV0pWWVZoalpHWllZbE5rYUdKYVkzQmlXV2hTWVZsaldXSlBaM2hvTVdoeFkxUm1SMk5HWlhkaFZtZFhaamxoWVdoU1kzaGtNR05rWjFablZtaEthRGhrU21oWVpWRmxlbUZJYUhsblZXTm1aVkZqUVdWYVpVcGtUbWRCWW14a05HUkthRUpvWTJGRVoxVmhVbWRGWlRSaVVtUnNaVzlvVDJSTVlYcGllR1ZwWTJKak0yTkJaREppU0dKUll6QmtTMmRFWm1wamQyTXpZMEpqV0dWa1pIbG1VR0pXWm5SbVdtWlJaR2hoUW1GdlkxVmtSMlU1YUhaaFJXUlNZVTVvZG1OU1l6TmpUV2hVWjFKbE1taG5aVlpvVTJaR1kwRmxWbVJGYUVSbmIyaDFaVlpsYm1Ob2FHbG1TbVpzWXpGbk0yRlNaVlZvV1dGWFlWQmpVMmhzWldaaVUySXlaMmhrV1doSmFIbGtaMlp0WkVwaVFtRXhaVzFuVVdkWFlUQmhaR2hJWkZabVZtTlRaMlJqUjJaMFl6WmpXV0V3WnpGa2NXUlRZM2RoT0doRlpWVmhWR2hhWjAxblVHWXpZMXBuVUdSUloydG1SV1IzWjFCaU1HRkZZWGRrVkdORVpUVm9XbWRRWVc1bVNtYzBZa3BsUVdaQlpFdG9SMmRwWTBWbGFHVmxaVVZpUW1RelpHRmllR1JTWmxoa1VtTlJZM2RtV21OalowRm9TbWhsYUZKblVtZEZaMVJuWW1nd1lXUmplbWRGWlRCb1pHWnZhRVpqVldob1kxRm1VbWN3WTBsa2FtaEtaV2RoVG1SSVowcGhTR1JLWlVOb1dtaFZZMEpoWTJoRVlXMWhiR2R1WTBabmJHRkdZMjFsUTJVeVkxcG1lV1JqYURKamJHRkNaR1JrYTJad1lsZGhRMkZuWW5SblJtVlZabWxvYUdaeVkwMW5NbUpPWkZoallXVm5aVWxuVldGbFlrSmhRbUpyWVZSblNHUmFZekppVldaclkwbG1WbU5sWVVoaVdtRlFaRkZrYUdWU1lYQm1WMmhYYUVwbWVXRmpZVWhrUW1KSloxRmxNR0pzWTJGa1pHTllZMEZvUm1obFpGTmtiMmMzWWtkaFFXRXhaMlpuVkdaVVlrWmtZbVJCWTBkaFJtSkVZVlpoYVdZMFpVUm9SMmhzWVRCblZHZGxZMUZqVFdOeFprNW9WV2hqWms1aFdtZHFaRkZvUkdWWFlYbG5hMlZ0WVVka1JHZG5aVnBuVTJKb1p6Um1PV2hpWTFKaVdtaExaR0pvZUdWUlp6bG9WR0pIWkVabWQyUldhRmRqT1dOaFkxSmhlR1l3YUdSblZtTldhRXBtTUdSaGFIbGlhR1JxWWtWaVZHSmFaMHhtV1dSc1pYQmpSV2hoWkVWbWVHSnJZMlZrYkdkSllWZGxXR05VWjBWbWJHaElZMEZvWkdka1owUm1VbVkwWWpKaVQySnVZMnhqY21KWlkydG5UbWRLYUZkaWJtaFdZVFJvVTJZellXUm1ObUpoWWxaaFpHZGFaRVZoUldVNFpIQm1WMk5WYUZWamJXSkZhRkZrTldWMlpVVm5lbUYwWm1GaFJtRkNaVTVoUW1aVFkwWm5kR0ZJWmtGaFVtUjBZWGxoUTJob1pWWmxhV2hLWVdob2EyUXJhRUptUkdoR1pFTmhSbVpIWTBWaFMyVkNZVWRqV1doTlltSmhNMlF4WlV4b1kySkdabFpoZG1oWFoydGpZMlprWlVobFZtRldZMU5sWkdKSGFIUmtObWROWVZGaVoyWXJaVWhtYkdVd1kyTmtSV2hJWW1SbFpXTlpaVmRrUW1oTFpWRmhhR1JPWmpSb1VHUjRaMHBoVldKSFkwWmxaR0ZNWldWak1tWmFabkJsV1dGR1oyeGhWV0ZZWnpCaGNHZ3haRXBpUldaemFDdG5aV1p1WlU1aldHWkZaRUZoYzJkNllXRm5RV04wWjBabFltTjRZa1ZqVkdKaVpUQm9aR2g2WWtWbGVHVndZV2htUjJGWGFFcGpVV2hTYUhoblFtSnRZMk5tYkdkWlpsWmhZV0p1YUVwaFVtZG1ZM2huYkdWRllWSmhhbWh6Wm5WbVVXSnNaMk5rZVdKVVkxUm5XV05xWldKaWVXSkpZMUZsVEdWb1l6Um1kV1JWWVRCbmJHUkhZVkZpUW1kbmFFOWtaV1p1WlRWblRtWk1aa0pvTldoQ1lrVm5WV2RSWm5SbVFXUjZZMmhrTW1GWFkyaGtXV05hWjJWa1EyZFJaR0ptVTJNd1lVNW9jR0pYWWxkbFNtSjVZbU5oU0dWQ2FFbG9VV0V3WjJ4bVlXWmtZVmhrYUdOTVkwcGhWR2M0WlRsaFFXZG5aSFJtWldGSFlWZGlRV1pvWWxKaFYySTRaMUptUldNeVlqbGpTR2hqWTNoaVRtUklhR0ZuUW1WV2FFbGxWV2hGWldSalEySmFZMmxoTkdKTFpFWm5VV0ZrWnpabFFtaFlZblJoV0dSWVptaGpjR0Z3WlU1blZtSTFZbEpuVG1GU1kyOWtjV1JKWjNsbk9HTXpZMEZsVTJoa2FGUmtVMmg2WjJOalpHWldaMVppU21Vd1kyRm5NMlZ3WVdwaVZHWlhaSEJrVEdaRVp6RmlTV05SWVZwa1FtRm5ZU3RqVUdkM1pFVmxOV05SWkZGblZtVXlabFJtYldWRloxbG9VV014Wkd4aGFXWmpabTVpUW1OM2FGTmxSV0ZPWkVwblYyRnVZMVptTkdOVFp6TmlaR1UyWjFsa1VXUk5ZVkpsVjJaVlpXOWpWR0pZWkRCbFZtRnJaa1ZpVVdaSllWTm9VbUl5WWpoaFVHUlNZVE5tUVdkamFGTmpRV1Y0WTNSblJXUkhZVnBvZVdOV1ptaG9WbU54WjJOaWJHUkdaRE5sVm1nd1kyOW5WMmhoYUZkaFJXRlhhRWRvUjJJMVowRmpUR1ZwWWpobWVXSkRhSGRpUm1WMlpGVmtWV0ZqWlZCbldXZEdZMVptVDJkaFkwZGlkR1J5WldSa1ZXWlNabkZtUm1oNVlWWmlVMk5GWjBka1VtRk5aMlJuYm1OYVoxTmtVV1ZvWTFaaE5HSmtaR2htU21kTVkwZGpSV2hPWTFwaFlXUnBZMWxtTkdGUGFGSmtjMlkwWmtoblZtaHdaQ3RoWldoR1kyZGpTMk5sWlc1alZtZE1abGRpVVdSSlpFNWhXV1ZUWmtaaVJtaGlaM2hrUldkVWFHSmpNR2hrWkhwaFJXSXdabVJoYjJKR1oxVmlhR0ZhWWxoblJHTndaVzFvWTJWc1pGbGlWbWhoWm01a1NtZFNaR1JtTVdWa1lVdGlVMkV5WVVKamRHWlFaa0pvYUdOdFpFWmlSMkphWm0xbldXUllaVUpuVm1OaVpERmpjR0ZRWkZWaWVHSk5aa1pvUVdORVluTmhMMmRPWjFSb1kyUlZaRTltWjJFMFowSmlRV1JHYUZWbmJHZERZVUpsT0dJMFlrSm1iR2hGWmtob1IyRm9hRTFqVTJaV1lXaGlaMkZHWVVSaFEyaDNaM2huU21oRVptdGtTR0pFWlZWamJHUlRhRWxqV0dkU1pFeGpTbWRZWlU1a2NHWkVhRWhvVFdWUlprZGpWMkZuWmt4b1VtZFhZemhvVW1oRlpUSmpPV1ZJWm1Ob2VHTk5ZVlpvVEdkVlowVm1aR0ZCWW1kbmEyVlJabUprYkdOb1lWZGhSbUpYWW5Ca2VXZFZZbGhtWkdSWVoxTmlhR0ZhWjNCaFdXaFNhRmxpV1dkYVkydGhXbUZ0WVU5bGFtTXhZM2RqVDJGSFkyTmtUMlJUWVhobU1HTktZVmRqVm1aSlptZG1TV2g2WVUxb2QySlJaWGxoV1dKUFoxRmlVbUZXYUVWalRHUkZhRlpvTm1kWVkwWm9TbVJEWkVab1dHSm9hREpsUldacmFITm5XV1pSWnpGaWJHRnBZbU5pYm1SQ1lYZGhVV1pDWldOaVFtUkZaWGxuV1dSRVowaG9kMlZ3WWpaa1pHTlZhSFJsV21OQlpXZG1NV0ZvYUVOaGVHWnNZMFpuUldOU1lVNW9kbU5TYUROalRXRlVZMUprTW1GblpWWmlVMk5HYUVKaFNHTkZaVWRrV21oNVlWWmxhR1l3WXl0b1QyZG9ZbWRrYTJGTVlrSm5OR2hYWjFsa2JXWkZaVWhuV21KWFlWbGpTV0ZsWVcxbFdtVjNZbHBuYkdaNGFIWmhRbUZ0WlRCalpHVklhRlpvVm1WVFptUmlSMkowWkRabldXRXdZekZrY1dSVFpIZGlPV2hUWmtWa1IyTlNZazFoWm1WcFprbGlZV2REWXpCbVdXaEVaa2xvYUdkS1kwRm9SMlpHYUVWa2EyTlpZMjFqTldoelltTmlSbWhDWjB0alUyZFJaRnBsWm1kbFowVmhkR1l6WVdWbmJXRnNaRmhtVjJGU1pVRmlXbUZoWmtGamRHRkdaMkpqZUdKRllWUmhZbWQ0WVUxa04yaFhZV2hrVVdGVVpGRmpWV2hvWkdKalVtVjNZVTFpWW1aWFpFWm9XV1pXWm1GbGJtWkthRkpuWkdVeFlXUmlTMkZHWlcxaGJHaG9hRVpsYUdaR1pEbGhVR2h0WmxwbWJXaFpZMWhpUW1oV1oySm1NV0Z3WWtoaVNHaFNhREJrU1dWWFpUTmlhR1JDWW1Wa2JXRk9aazVrWVdaclkzTm5VR1JWWldoalFtRnJabFJpU0dVMFlqUm5XR0pDWWtwb1NHVk9abmxrU21oa1lraGpNR1JGWTFSb1NHVkhaSGRuWjJaT1kxUmxSV0ZOWkVwaVVXaFZabFpsVG1SRFkzZG1ibVJGWW01bGNHVXdZbFptZUdRNVlVWmtWbWg1WTNSa1ptWkVaa05qUW1obVprVm5NbVJqWkZSa1ptaDRZazFrVm1GWlpGSm5WV1ZVWjJWbWEyaGphRkZqV21kdVlVcGtWMlJHWlZkb2NHVjVZbFZtV0daa1lWaG5VMkpyWWxGbmMyTk9aVlZsVG1WTFowdG5RbUZSWWpCaFdtaHFaekJrYzJGV1pWRmpTbVJUWjBWamVHaEZhR1JuVVdaV1lqVmtNR0ZRWm5waFNXVnhaa2hsYldaUlpraG5VMkpvWVhobFdHZE5Za0ZpVW1VdloyVm9iR2hKWmpGblIyaDVZbTlqZW1aVlpYZGxPR1pSWVVaamVHSkZabkprU1dOWVozaGhkMkZJYUVWbk9XaEtaVmRoTW1kV1p6QmlVMkl5Wmxab2NHSmFaMVprWkdKT1pFZG1VV1pLWjBOaFEyUXdaRlpuZG1SRlpWSm5UbVYyYUZKak0yTk5aMVJpVW1KNllWVm5ZMk5TWmtobmNHUklhRVZoUjJkYVpIbGtWbWRvWTFab2NXSmpZV3hqUm1FelpGaG9kMmRSWTFsbVQyVlVaMDVrV21aVVkwTmliR0pCWjFCb2VtTlpaR3RtWm1KbllXTmtjV1pIWVhkaVRtSTNZMVZuVW1OdllWUm1TV2hCWjJ0b1ptSlpaREZsUW1GeFlrUmhWbU52WkdOaFZXRjZZa0ZuUm1GUFoxUm5hR1ZUYUZOb2EyWkdhREJrWkdGclowSm1RMlpIWVVKb2FHZDZaRmxoYm1GS1pYZG9ZMkpGWW1oblJHWlRZbFpuY0dReFkyVmtSV1YwWkRObFMyTkRZWGRuUkdWRVlVVmpTbU5ZWW1GaFJtZHNZVVpqVFdjd1pUQmtWR1ZCWVd0bk9HTnVZMGhrTUdka1pEaGhSMlpWWjJkaVJXVkVhREZsYTJneFkyWmhRbWh3WVZGblNtSkVaVlZsUm1SUVl6RmxOV1JIWkVabmFHUTFZblpsVW1OR1p6Qm9ibU5WWkVkb05HRjVZa3RqVkdOclpFZGhXV1F4Wlc5b1ZHZEZhRkpuTVdKVlpGRm9NMkZvYUhKallXRklZa0ptUW1GaFkyeG5PR2hIWjFObVZHaHdaV3RrVkdGSWFGcGxNbVJWWjJ0b1NXWldaR1ZpU0doWlpWTm9SbU5vWTBablVHVmpaREprU21GNVltTmtTR2hDWWtsaFVXZ3daMnhtWVdKa1lsaGthR1JFWlU5aVdHaFJaVFZvUW1WU1lscGtSV0ZXWkdwamVHUlRZVVpoVTJGdloyWmxVV05UWkc5aFIyZE9aVE5rWTJSSmFGQmxWbVZqWWtWbVJtZFRZblJpTVdOYVoyMW1PV1ZYWTFWbmVtUTRaamhpUldOcFpFMW5aV0ZDYUZabGFHWndaR0ZsVldWSlkxVm9XbVZyWTFwbWRtWmFZV3BpY0dGaFlWWmlWMlk1WldGbFVtVjRhREJqWkdaV1lWWmhTbVV3WVdGaE0yUndhR3BtU0dGNVl6aGhabWRYYUdkblFtZGxaRnBsUW1FMVlqSm1TMkpuWnpWblEyZGxaRWhuUVdacGFFaG1hMlJ6WWtGaFZHSXhZV3RtTW1oUGFHcG9hMlpxWmxKaFoyZzRaazFuUm1GRVlrbGxjMkZCWmpObk5XRXlaV0ZrVTJWQ1kxaGpVV05zYUhkbmNHaFVZekJoTUdjM1pWZGtWbVp2WVRoaFUySXpZMDVsU0dGVFp6Sm5aMkZWWmxkb1JtVjRaRWhuUW1SWVlsSm9LMkZXWm1kbk1XVnFZMkZvV0doMFpqTmpWbVV3WjI5alYyTmhaVmRtUldSWFlVZG9SMlZaWTFWa1QyZ3laemxpZEdaWFpHeG5WbWQyWTFkbmEyWmphR1JpU0dkV1oxWmxVMlprWjBkbGRHUjVaVXhvVldKTllqWm9SMlpWWmtGblIyWllabnBuUVdaV1owcG1hbUZPWW1ObVJXRkdZMEZtTldGTlkyNWtXV0pGWVZSbFVXUkZZMVpoU21oNGFFRm5WbVJqWWtablZtTkVZMFJvZDJnNFpqZGpUMmg0WVRoaEsyaE9ZVk5sWkdGWVoxVmtWV2RSYUZabFlXUkdZMnhsVFdWaVlqQm5iMkkxWm1Ka01HRmtZbnBsUldnd1lXUmxiMmRHWlZWaGFHSlJZbEppZUdkQ2FHMWlTV0ZDWms1bFFtRlFZbmxuUVdGbVkyUm9kMlpXWTB0blUyWnFaRlptYUdObFkzaGtRV1I1WVVkb1IyTmFaQ3RuWW1kWVkwRm1RbVZLWTNoblRXWlZaa1ZvTVdoRmFGRmhTR05FWVUxb0wyWk5ZbTFuY0dSQ1ptRmthbWQzWkVKb1FXSkdZMVZoYkdoRFlVaGlOR1JwWWtkb1oyZDBaVWRoWkdSSVpscGpSMmhTWlhoaWFHVkRZbE5vUjJRMVkzbGpXbVJYWWtwaFJXTlJaVEZpUm1SVVptSm1iR0ZLWWt4a1pHRXphSEJqY0dSV1pqRm9hMkpSWWtkbFYyUm5ZMHhsUjJSSFpGbGxaR0ZQWWxkak9XZElZMk5vZUdOT1owaGxZV0pDWTFaaVNXRlZaRVZoWTJkWlpFdG9TR1YzWWtka1VtSjVaVlZuYldKSVoybGpUV0pQYUVkaGJHUk9aVzVuVG1GclpGSmlVbVJOWld4b1JXTlVaRVJqZVdZNFptdGxUMkpSWW5Cb1lXTlhaR2hoTVdoaVlrRm1RbUYzWmpOblVHTjZhRTFpYzJoQlpqSmtjR0pFWkZkaU1XTTBhRkZqVG1kclpFSmlNbU5RWmpGbk5XRkRZVlZtU0dkR1lqSm1VMmRYWWtWbldXRlJZakZqYkdKcFpHTm9ibVJDWkhkbVUyVkZZazVqU21OWFptNWtWV1o0YUVSbldHSmtaSGxoV1dOV1lqaG5UbUZGWmtGalVtWnZaMEZpUW1OR1pXMWpTR0ZTWkU1aGJtZEdaMWhtVFdKUFpWSm5NMmRuWmxaaVJtWkdaRUZvVm1aSFoxZG1jR2Q1WkZoa2JHSjRaM0ZtWW1JeFlrWmxibWRXWlhobVdXRlhZa2xpUjJWblpXRm9SMmhIWW1SbFVtUmlZVEpuT1dab1lVdG5NMmc1WlhaaVYyZHJZbU5rWkdoSVpGWmlWbUZUWVdSbFIyRjBaVFpvV1dnd1pqRmxjV0ZUWWpGaWEyUlVaVkZoYldoUlkwUmlaR1p0YUhSbFUyWk1ZakZrVVdSeloxQm9hR0ozYUdKblZtaDRZVkpuVW1SalpFaGxOV1YzWldGaVJXaG9ZVXBsVTJGU1lVNWlPR1ZsWVVWaFdtVXpZMkZsTTJKS1pUbGtWMkZTWTBGbVdtWmhZVUZuZEdkR2FHSmtlR2RGWWxSbVltVXdZbVJpZW1ORlpqQm1ZMkZGWkVoblVtaDNZVmxoUkdGcllVNW1jV1ZqWjJkbVNXRmFaMkZpYVdKQ1pXUmxaR040WnpWbFIyZEdZV2xqV21SMFprWmpaMlJvYUhaaFJHVXdaM2hoYldGWllsaG5RbVJXWVdKa01XWndaMGhqU0dkU1pqRmxWbUpWWm01a1VXWXlZbFZtUjJKT1pFNWxZV0pyWTNOb1VHSlZaR2hsUW1oclkxUmlTR0ZhWXpKaVZXUm9aRkptVldoTGFHNWhXbU5oWlZOamQyTldaa1JvVTJWSFp6VmpXV05qWkVoa1FtaEpZbEZpTUdWc2FHRm1aR1ZZWkdoa1RHUmtZak5oY0dWd1pWWmxNV0ZzWkdWalIyUllaMVZvVEdOV1lsaGpVV1kzWlVWak1tRTVhRWhrWTJKNFkwNWlTR1ZoWlVKalZtSkphRlZpUldOallsRmpTV1JFWnpCa1JXVkdZMWRqU1dWdFkwZGxWR2MwWkVWa1RXWlZZMUZqVldoWlkxRmljMkpaWldSbVFXTkdhSHBsV21odFoyUm9kMlJCWlZoa1VtWmhhRlJuUW1aYWFGUmhWbVZWWVRWa01HSkphRzVpY0dKc1pWTmlNbU53WkVSbFVtWXhaVWxqWVdkbFpsVmtlR05yWmxsbE1HSlNaMHhpUkdWdVkyaG1MMk5QWWtWbmMyUlpZMUZrTVdOc1ptbGxZMkp1YUVKa2QyZFRZVVZrVG1aS2FGZGpibWhXWXpSbFNHUjZaVGhpZW1aUFlXbGxkMmhNWVVWalFtTkthRzlqVW1kVVoyaG9kbWhFWlVKalRtTnVhRVZvTTJkTlkyTmhVbUY1WjBGb1kyaFRZVVpqV21oSVpFRm5ibVpPWTI1bVZHSlVaRGxpY1dSalpHeGlSbUV6Wmxab01HSnZaRmRrWVdaWFpVVmlWMlpIWjBkaVdtWkhZMGxoZW1kSll6Qm5TV0pvWjNSaWRtRkRZMFZqWTJGWGFFaG9VbUY0WmtwbVdHVnRaSFJqTm1kWlpEQmtNV2h4WTFObWQyWTVZVk5qUldKSGFGRm1VbVptWVROamNHYzBZbEZvYUdGV1pUUm9aR0ZvWTBwbVRHTkhZVVZvVG1OYVlWbGlibVZ2Wnl0aFptTm9hR2RrVW1aQ1pHZGtOR1kyWjB4aFFtRkpZVzVpVUdFeVltTm1RV05EYURGaWJHUk9aa3hsV0dZMGFITmtTV2RWWjFaaWVHRkRZV3RrWkdKMWFFVm5kMlpGWWpsa1YySjNZM05tUldWRVpteG9PR1J2WTJOb2JHTTFZMEpqV21KdVlVbGxSR2RsWkRGalkyWkVaRWRuYldKclpXdG9TR1Y0WkdkbE9XTlFaVzFtV21WdFpWbG5XR05DWkZabFltY3haWEJpU0dWSWFGSm9NV1pXWjFWbmFtUXdaWFJvWldWdFpYUmhSbU5aWW1oaU9HWlFaVlJvZUdWQ2FIWmtSMlJJYURsa05tZFZaR3RvY0dGSVltVm1SMk56YUZOa1YyWjRZV2RsWm1WWFlWUmhRbWMzWTJaalNHSkNZVUZoUTJkcloyeGhTR1JrWTFkbWFHRk1aRXRoTTJkdmFHZG9XR0pzWmxWbFVXVkhZME5tTUdWRFlsUmtSMlE1YUV0aFQyZFhZVGxoU0doalozaG1UbVpJWVdGbFFtZFdZa2xtVldaRllXTmxVV2RhWTI1bVNtaFhaMUZvZVdaelpXZG1WV0pVYUdoaFdHTldabmhpV1doRlowbGhSV0pLWjFGallXZEZaVkZuY0doTlkxZGtiR1ZwWVZkbFYySTVaME5tVW1SNFlXTmpaR2RJWlVaaGRHY3daRnBoYm1Wd1ozbG9WbU5yWVVKaVRHVkVaekZsU1dWUmFGcGpSV1o0YURKaVpHTnNZMHBvUTJaR2FGaGxhR2N5WTBWbGFXRmpabEZoUm1kNFlrVmljbVJKWlZobWVHWjNZMGhtUldNNVlrcGpRMk5JWjJ4b05HaEJZMjVuZEdjMllrcGliR0owWkZwalFXTkNZa0ptZW1SSlkxVmlWbVIyWTBWbVVtWk9hSFpvVW1RellVMW1WR05TWWpKbFoyaFdaVk5vUVdneFpIUm1SV2hIWWxwaGVXaFdZV2hvVm1KeFpXTm9iR1pHWXpOalZtRXdaRzlqVjJGUVozbG1RbVJGWkVkalEyRTBhRlZpWldVeVlsbG9iMkpqWmtabWFHZDJaRk5vTUdKellqTmhTR2hXWVZab1UyUmtZMGRtZEdjMlkxbGtNR014WVhGblUyRjNZamxqVTJSRlpVZG5VV1pEWW1SamJXWjBZMU5tVldkM1pEVm5VMk5rWVdoaFNtaE1Za2RqUldOT1kxcGhXV0Z1WVVwb2QyRmpZMFZoYUdORVpVUm1lR0ZWWW01bVpXVkZhRTFtYW1KTlpHbGxRV2RGYUVsamEyRkpaVnBrV1dSM1kzTmtUbU5GWW1oaVJXaFBaV0pqTVdkV1ltMWpRbUpyWVdSb2RXWkdhRkpsZUdSTVkxSm5lR2N4WlhKblQyTnNabGxvVEdaa2FETm9TbVJDWkdSbk1XZEdhRTFsUm1kdFpFVmtkbVJHWm1ob1NtYzNaa1prU0dOU2FIcGxaR016WW14blQyaGlhREZtVG1kMFpVaGtVbWd4WTFaalZXWnVaMUprY21WbFpXMWhUbUpPWldGaGEyZHphRkJsVldGb2FFRm9kMkpDWjBSa09HVnNaRXRuVW1aQlpGWm9ZMkl6YUZwbVlXTk9aV2hoYUdWbFpsZGlWMlZ2WjIxaFkyaElZamxpU1daRVpGVmpRbWRoWldObU0yRm9ZVnBoV1dOdFlqbG5lV05tWlZab2EySlJZa2RqVjJkbllVeG5VbWhYWmpoalVtVkZZVEpoT1dWSVkyTmpNR0pGWmtObVVHVkZZa0ZtWVdKSVptdGxaR2REWmxwbWJtUnNabGRqV0dOSVlVWmtXV05WWmxoaFpHUllhRk5sYUdWYVozQmxXV0pTWVZsbVdXTmFZV3RvYkdWMlkyRmlhMmgwWW5kbFZtaFhZemxpWVdkU1ozaGpNR1ZrWlZabFZtSktZVEJqV1dkNllsSmpkR0pJWlZSbloyTkZZVmRvZUdReFowVmhVR0pTWlhkbGVtSmxaa0ZtVldWUlpWaG9RMlIzWkhwaFdtUjVZVXBqVjJGR1pUQm1SbWhwWm1KaU0yaEJZVEppU0dOUll6Qm9TMkpFWjJwa2QyY3pZa0poV0dGa1lYbGpVR0ZXWkhSbVdtTlJaMmhtVm1GdlpGRm5hMkY0WkhabVUyTnFhR3htZG1SU1pUTm9UV0pVWkZKbk1tTm5abFpqVTJkR1pVSmpTR1ZGWkVkbFdXaG5aRVZtTUdGRlpDOWlTV0pDWVRsb00yUllZVEpvUVdoWFptRmlWMkpGWjFkb1IyRkhZbGxtVldaYVpXMWpXbU5vWjJObVJtZFdhSFpoVjJOclp6bG1TbVpJWmxWaGFHaFRZbVprZW1nNVozcGtZbUV5WjJSbmNXaFRaSGRpT1dWVFpFVm9SMk5TWmsxblpHTnVhRnBtVTJSUlkyaG1WbWMwYUdSa2FHVnZZMXBqUjJWR2FEVm1XbWhqYUc1blNXSnphR05qUW1Gd1lrdG1VbWhZWTBKbE1XaGxaMFZqZEdZelpXVmliV05zWVZoa1YyUlNaa0ZoV21aaFlVRmtkR1pHWW1Kbk1XSm5abFJvVFdWNFluUmllbWRtWXpCaE9HUTRaRmhsVVdWRlowUm9VMk40WVVGaWVXRm1ZMnhqV21GSVpscG9ibWRLYUVGblpXSXhhR1JoV1dGQlpUTmllR1YwWTBaaFoyVm9ZWFppUjJWRmFIaG1iV2haWmxoa1FtSldaV0ptTVdWd1kwaG9TR1ZTWmpGb1ZtVlZaMjVoVW1WeVltVmhhV2d4WjBSbFNHUnFaa3BvTDJGT1l6Tm5VV1ZpWTB4b1VXaFJZVVZtVFdSNlkzUm9jV05EWkhkaVRtWnBZMDltTTJWalkzaGlUR05YWWtsbmRXSk1aMGhoUW1aQlpVWmxNR2RzWmtob1pHZFNaVlZqUzJOSmFIcGxTbWh1YUVWblVtSldZMlpqVm1KcVkyOWxSR2hGWlZkaldXWlpaVWhuTUdkV1lraGlZMmg0WlU1b1NHWmhhRUppVm1oSloxVm9SV0pqWlZGa1dtRnVhRXBuVjJOR1lsZGlTV0Z0YUVkaFZHTTBaa1ZpVFdSVlpsRmhWV2RaYUZGa2MyTlpaV1JoUVdOR1pucGxXbVJ0WkdSb2QySkJaRmRqV21kWGFHSmtVbVV3YUdSb1ZtaFdZMHBoTUdSaFpqTmhjR0pxWWxSaVYyRndhRXhrUkdNeFkwbGpVV0pPWld0amVHYzVhR1JsYTJGT1oyOWhSbVJZYUdobk1tUkZZV3RqYzJKWloxRmlNV05zWm1sa1kyUnVaVUptZDJGUlpGWmthR2RxWmxkaGJtUldaalJpVTJJemFHUmtObVpoWjFaa1pHVmFZVVZtUldkU2FHaG5RbWd5WXpsaGRtWkZaMUpvVG1KMlkxSmhNMlJOWjFSa1VtRXlZV2RoVm1WUlpFSmlOV1JLWWxGaVJHVlJaVGxsUVdac2FHOW9LMkpMWTNka1JXTjVZbGRqVW1FeFlVVm5TV2hFWWxab1ZHZGlaVkZqT1dOaFlVMWxibU5rWXpOblNHZEVaVUpsZG1SU1l6Qm5aR1ppWlZOa1FtVnphRkpoU1dORFowbGhNV0pNWTFWbU1XUnBaa2hpZDJaT1pWTmhVV0Z0WkdoaVRXSlFaek5oT1dWVFowZGtWR0U1WkRSaVpHaG9hRXBvVEdoSFlVVmpUbVphWmxsbmJtVktabmRpWTJKRlpHZGlVbU5FWjBGa05HRm5aMHRrWjJGV1l6Tm5ZMk5yWkU1bFdHVlhaRkpuUVdkYVptRm5RV0YwWmtaaVltZDRZVVZqVkdOaWFEQmlaR042WjBWak1HZzRaVGhoUm1aV1pGWmxVV1pVYUVWaVVtSjJaR1ppYm1aM1oxWmlZV2R1WVVwbVVtaGtZekZoWkdSTGFFWm9iV2RzWVdoaVJtRm9hR2hpYldaR1owZG5OR1V3WTFsa1YyY3haRlpsWm1VeFptOWlZbVJJWjFWa09XTmpabGhqYkdFMVlYSmhaV1Z0WTA1aFRtaGhabXRqYzJSUVlsVm5hR2hDWm10a1ZHaElaMXBvTW1OVllXZGxjMmhXWWtwaVEyaHZabE5rU21KNFkwRm1XR05GWWxOamMyTm9hR1prU0daQlpXTmtWR0V3Wkd0alNXaGxabGhpYUdGYVpHVmlNMk53WWk5b1VXSnJhSGRpUkdGRWFFZG1VV1pNWWxabFYyUlpZMlJoVDJOWGFEbGpTR1ZqWVhoa1RtVklaV0ZqUW1WV1kwbGxWV1pGWVdObFVXVmFZbTVvU21KWFlWZG9NbVpSWTBkaFMyZEJZV05tZVdGTVptMWphMmhKWkVWaE1tVlNhRFZsU0dReVpITmhWbVpGWVhoaFJXRkJZVTlrYUdjd1pIVm1ZbUpTWXpCbVpHUldZVlpsU21Zd1pXRm1NMlJ3WVdwaFZHVlhhSEJrVEdaRVlURmhTV1JSWjFwa1JXSjRZM0JqWkdKc1lYQm1TMlpSWlZSalFXWXZhRkZvVkdOQ1prdG5VR2hzWkd4bkwyZGpZVzFrU21Gc1oxaG1WV0ZPWVZCb1YyZHBhRVpqZUdKU1lqTm9aR041WmxCbFVtUTRaMUZvVVdReVpFbGpObVZEWXpCb05XaDJhRUZoUjJNMVpIWm1WMlJ1WWs1a1NHUlNZak5uV1dSTVlWWmhiR1pDWldaaFIyRlhaamxuV1dSV1pHaGhWbWh4WTJOa2JHVkdaVE5vVm1Rd1pXOWpWMk5oWTFkaVJXRlhaa2RpUjJoWloxVm1XbU51WW5obWFHaElaakZtTUdVM2FFVmxaMkkxWjA5blJXZFdZbFZpUjJGbFpFZG1jMmh2WkdKaU1HSXhabkpoVjJKM1kxcGlaV0ZQWkcxblVtZE5ZbVJqYm1kYWFGTmtVV0pvWmxabU5HUmthR2hsU21STVpFZGtSV1JPWmxwa1RXVklZVXBpTjJWallrWmtjR0p3WjFOalZtRndZakZqWldoRllYUmhNMmhsYUcxbWJHSllZVmRpVW1SQlpGcGpXV0ZTWWtKaWRtVmlaSGhtUldSVVptSmpNR1JrWTNwbVJXWXdZbVJpYjJSR1pGSmhWbWRhYUZOaGVtRndabTFsWTJKc1lWbGxWbVpoWW01aFNtaFNaR1JuTVdaa1lVdG5TR0pwWjJSaGRtSlNhR3RoYjJOd1psRmxRMkZyWlhsaFQySkRaRUZuVVdoWllsRm1NR1pXWmxaa1JXWnJabEZrU21kNFp6QmxiR0ZNWjI1alNtSmlaVU5vUTJJMFoxQm1WR0Y0YUVGb2FXWkhaVlJuWjJneFpFSmxaMlIwWjJGaFRtSnVZbGxuWVdoSVozaGlVbU5FWlVObU1tZzFabmxsVDJOWWFHeGxTV05IWmtkaVRtaGhZV1JvV0dKb1lreGhaR016Wm5CbGNHZFdhREZpYTJaUmFFZG5WMlZvWTFwblFXTkVZblJsUldGUloxTmpSbVpJWW1WaWVtTnNZVWhsWVdGQ1lWWm9TV0pWWjBWbVkyVlJZbHBpYm1aS1kxZGpSbUpYYUhCamVXaFZhRmhuT0dSRVpWTm9aMmQwWlhCbFlXZHJaVWxqVW1OaFltcG1OV0p0WlZwa2JXZEdaWGRoVm1aWGFEbGtZV05TWjNoa01HRmtaRlpsVm1SS1p6QmtZV016WTBsbWVHSlVabGhpWkdkTWFFaG5NV2hLWlUxaldtRkNhRFZpTDJobFoyNWphR2REWlVaa1dHSm9ZVEptUldOclpuTmtXV1pSWnpGbGJHTnBhR05sYm1KQ2FIZGxVMkpCWW5CaFNtRkNaMmxqYkdVMFkwcGtNMmc0WkhWalNXSlNaVFJoUzJoSVlrSmthMlE0WVVKak1HZFZZamxuU0daU1lrNW9PV0pUWlROa1RXTkdZbFZqYm1Zd1lrZGpXR1ZXWjNoaFNHSkJZa2RqT1djclpHWmtRbWhXWjNGbVkyTnNaRVpvTTJGV1lqQm5iMlJYWjJGalYyUkZhRmRtUjJkSFoxbGlWV0pMYUVkaVoyRldhRU5sVTJWVmFFdG5VR0pxWm1oak9HRmlZWGxvWTJWNllVUmxVbVJSWWtwaVJtaHFZekJpWVdaS1kwaGhNR0p0Wms5b2JXZFNaRTFqWkdKdVkxcGlVMk5SWjJobFZtSTBaV1JpYUdSS1lVeG5SMlZGWkU1bVdtRlpabTVpU21oMlptTm9SV1ZDWlV4aFNHZFNaa2xvT0dkTFpYcGhRV0pzWjBKa01tZHNaa3RrVjJGVmFGRmlXbVZrWm1obFZtaGlaR0puZDJScmFHRm1XV0l3YUdSa04ySlNhSGRsT0dOb2FGSm9hbWhOWjBOblVtWjRZblJpYldGWlkzbGljMk5XYUdSak0yWktZa1JtV1dkclowcGhTMlpGWkVkbmEySXhhRWhrZUdoR1lVMW1SbWRIYUZwbGJXRlpaRmhpUW1SV1pHSmhNV0Z3WjBoaFNHWlNhREZqVm1aVloyNWhVbVJ5WVdWaGJtZHNZMDVpUW1OVlpFNWxZbWRIWVd4b2EyRXpZVkZuU0doWlpHbGpXR1JyWTBwbVNHUmthRWhqV1dSVWFGZGthR0pHYUZCbFkyZ3lZMHBvZVdkalpVaGhRbUZKWlZGak1HVnNaR0ZvWkdaWVoyaGpUR2RrWVRObWNHWndhRUprVm1WclptSmhSMlpZWm05aWFHaFNZbGRpT0doU2FFVmxNbUk1WWtoalkyZDRZazVvU0daaFkwSmhWbU5KWWxkblZtWjNaRFpsV21WdVlVcGpWMlJHYUZkbGNHZDVhRlZoV0dGa2FGaGtVMmRyWkhSbVoySmlZVlJoZDJaWlpGcGthR0ZTWW0xb1dtaHRaMFprZDJSV1pWZGpPV1JoWjFSb01XVk5aMVJoUW1SUlprRm9OMkpRWlhwbFZXUXpZMFpuUkdGdllrOWpRV2RSWjFabFEyWk1aRkprWjJWNlowRm1lbU56WjAxbFVXaFhaWFJtYTJSbVltbGxOR0paWkZoa2JHTnJZMnRuU21ONllqUmtlbUpJWkVGa2IyaEhaMFpuU0dSV1luZGtTR0V6WTNSbk5tRlBaekZtZEdKYVlWZGxVbU5DWjI5b1ZXSkhaamxqZG1WRlpGSm1UbWQyWlZKbU0yVk5hRlJuVW1VeVltZGpWbVZUWVVaa1FXRldaRlpqVkdkSlkyNW5RbWhHWjNSb2NXUmxaRzVqZEdNellWWmhNR2R2WWxkbFlXTlhZa1ZrVjJOSFowZGpXV0pWWlZwaGJXRmFZV2hqWTJoR2FEQmpOMkZYYUd4a2IyUmtaVVpoWjJkR1lXSmxaV05GWTBaaU5tWlpaekJuTVdKeFpWTmtkMmc1WVZOa1JXWkhhRkpuVFdoa1kyNWpXbU5UWjFGbGFHTXdaSEZrWkdabmFEbG1UR2REWjBWa1RXWkdaVmxoYVdOQ1pEVmhabU5IWTBwaFJHSlRabFpsY0dneFoyVmxSV1IwWmpOalpXRnRZMnhoV0dWWFkxSmpRV2RhWkdGb1JXWktZa1prVFdVd1l6Qm1WR1JCWkRCb09HUnVaMWRoZDJJMFlUZGxSMk5WWldkaFJXTlRabmhoUVdFd2FHWmliR1JaWkVKaVdtVnVhRXBqUm1GYVpGVmhOV1psWkVSb00yWTVZVEprUW1SQlpFWmhlbWRIYUVkaldtSXlZV0ZqU0dONFlpOWlZbWd4YUhCaFNHaElaVkppTVdGV1kxVm9ibVpTWkhKb1pXTnRaRTVsVG1KaGFHdG1kR1ZDWTFoa1IyUlJaMlJsVUdSQ1lVMWpVMmRNWmxOalRtUnVaa05oYUdKa2FISmhUbUpIWkhOak1taExabEptU1dWa1pFRmhaMk5TWkdsaVVXRXdZbXhuWVdGa1lsaGxhR0ZNYUdSbU0yZHdZbkJvVm1VeFkydGlVV2hIWVZkbloySk1aVkpuV0doQlpsSmlSMll5WldOblZHaFBZakZqYjJKVlowVm1NR2hrWVVsblYyWXdaR05pUkdaSFlUTmpTbVJNWlVaalZHTTFaWGxrVkdZeVpteGxTbWRUWkdkaVVtUTVaV0ZrUW1kdlpubGpXbWhvWTFKbWJXWmFZMjFvUm1SM1pGWm9WMmc1YUdGalVtaDRhREJvWkdWV1psWm5TbVF3Wm1Gb00yUndaV3BvVW1OVVp6UmxSR1JTWm1kaFJtVnlaRTVpYTJaNGFEbGtaR2RyWlVGa0wyVkdZVmRoVm1neVlWSmphMlJ6WTBkaFdHaFZZV1JvYVdGWlpESmxXbWMxWTFKa1IyWnNaa3BuVjJOdVlWWm9OR2hUYUROalpHRTJaV0ZoVm1Sa1pWcGtSV1pDWkd4aWIyTkRaVEJoVm1OMllrVmxVbUZPWjI1a1JXRjZZM1JtWVdkR1prSmhUbVJJWmxOalJtWjBaMGhuUVdOU1luUm5lV0ZUWlhob1ZXSXJaV05oYTJjNVpuQm5VMk5WWm05b1QyWlpaRWRuTUdZNFlrZG1SMlpaWjFWa1dtWnRhRnBoYUdOalkwWmxWbVIyWkZkb2EyVmpZV1JvU0daV1psWmhVMkprWTBkbmRHVTJZMkZoZUdKcllXbGlRV0ZzWlhkamNHZFJaV2hsYkdWTlltRm9NMlphWVVGa1ZtWjNaMEpqTkdGallrSm1TV0ZtYUVWa1ZXaHdZWHBoV1dWdVpVcGxkMlJqWjBWaGFHWkVZbE5qVm1Od1l6RmpaV1JGWjNSak0yaGxZbTFtYkdWWVpsZGpVV0Z2WjFwb1FtaG5hRTFqVW1aS1lURm1hR2RCWTFsbk1HZGpaMjVsU0dFd1lXTm5ObVpIWmxWbWFHUlNZbFptZUdkc1lYRmhWMkpHWmxsaVZtVmhZMjVuU21SU1pHUm1NV05rYUV0a1JtWnRaR3hsYUdkR1oyaGhhR0Z0WWxKb2JXRmFhSFJoV1doWFpWSm1MMmhpWnpGamNHZElZMGhuVW1FeFpWWmpWV2h1WTFKaGNtSmxaMjFqVG1GT1kxbG5NV1pCWm14aFZXTm9aa0prYTJoVWFFaG5XbWN5WjFWbmEyRkpabFpuWldoRFkzTmtZbWhTWVhwalNtRkVabGRsVjJGS1pYbG5ZMk5JWlVKalNXWlJaakJoYkdSaFpHWmhWR1ZhWjBaaVNtUjVhR2RqYldkQlozaG1XbWhGWWxGblJHWm9ZMDlrVTJkNlpXaGpSR1pYWVdwaGMySkRhRUpvYm1WdlprcGxVR1ZCWWxwaFlXRk5aMmxqU1dSUlltVmhNMk5KYUZGaFVXTkRZVkZpZUdSQ1lWUmtOR0paWjBKblFtRmFaMmhvVG1SU1lXOWhXV1ZPYUVKb2FHUnRZMHhqTW1Ob1kzZG1SR0pyWlZabVlXSlNaWGhtTUdWa1pWWmtWbWhLWVRCaVlXSXpaM0JvYW1WVVpGZGtiMmRhWmxOaFoyaGFaVVpoVG1kblpFcGlNbVZtWlc1a2FHVkRaVVprV0dGb1pESmxSV05yWkhOaVdXUlJaakZoYkdkcFltTmxibWhDWVhkbVUyRkZhSE5oWkdoWFltMW1hR2MwWkZGaVEyUk9ZbnBqV21GWVlURmhXbWhGWTBKbWJHVnZhRU5tTUdKV1lYWmlSV0pTWVU1aWRtWlNaRE5qVFdWVWFGSmhNbWRDWWtobVUyWkZZekZvU0dOQlpVZGlXV1IxWkZaaGEySmtZbXBvWm1WdVkzUmxNMk5XWmpCamIyUlhabUZqVjJoRllsZG9SMkpIWVZsaVZXRmFabTFsV21Sb1ptTm5RbU40WTNaaVFtUm9aSE5vWkdkalpWWm1NR05IWlZCaVEyVkpaM0JoWW1nd1lUQm5LMmRTWlhka09HUkJZMGhqUjJGU1pGbG9aV1Z1WmxwaFIyaFZaRUZqZUdoelpXSm1kMmRTWkdOalEyVnNaSEJqVFdKaVptNWtTbUZuYUdWa1ZXZFNZbkJvVTJKV1lYQmtNV0psWTBWb2RHY3paR1ZsYldKc1kxaGlWMlZTWVVGb1dtVmhaa0ZoYzJkTVlsbG5WMkZXWm5Gb1NHaDVhRWxoV0dGaVowTmlXV05oWmxwamVXRnJZWEJvVDJSSFpFMW1WR0ZCWm1sb1dtTTJZVWRsUVdaYVpUZGxaR2d4WldSaFMySkdZVzFtYkdSb1pFWmthR2hvWVcxbVJtSkhZMXBoYldWWloxaG9RbWhXWVdKaU1HaFdhRWhsUm1KU1pGVm9RbU5IWjJwbk1HYzBZMEZtVkdWRlpIZGhZV0ZzWjFsblVHSkNabWhpUW1VMllWVmliV0pvWnpKa1VXTkdZMWxrWTJka1pVWmhkMkpUWjFOamVHWm9aMFJrVjJKWFlrcG5lV0pqWjBoblFtUkpaRkZvTUdoc1kyRmtaR05ZWm1oaFRHSmtZVE5sY0dOb1owRmxlR0pHWWxwbVUyZG9ZazVuV21OU1kxZGlVV05TWkVGamFHSktaVWhvWW1kb1owMW5WR1ZoWkVGbWRHSlhaMVJrYTJGalprSmlZMkpJWW5SbFlXaFFZakpsY0daNVpsVmtXR1JrWkZoaFUyWm9aMXBpY0dKWllWSmhXV0ZaWWxwbmFHSlNabTFtV21kdFlVWmhkMkpXWWxkb1kyUlBZVVJtTVdOU1lVOWpUR2RuWlVKa01HSlpaVWhrY0dKNFpVMWlSMmh3WjFkaVJHWjNZbGxuVVdKbFkyeG9TbWR2Wm1SaWEyWndaVXhrUjJkV1kwcG9NbU5GYUd0bWMyTlphRkZqTVdGc1kybGhZMkp1YUVKamQyWlRZVVZpVG1WS1psZGpibUpXWXpSaFUyRXpaR1JrZVdaUVpWSmhPR0pSWTFGaE1tSkpaelpoUTJjd1pqVmxkbWhCWm0xaE5XaDJaMWRpYm1kTlpFSmhWV2h1WkRCa1ZtSlVaMnhtUVdoVVkwZGpWMk01WjFsbFZtZG9hRlppY1dWamFHeGlSbWd6WkZab01HaHZZbGRrWVdWWFowVm9WMlpIWWtkbFdXWlZaVnBqYm1KNFpHaGpTR2RzWWpCbU4ySkZaV2RvTldoUFlrVm9WbVpWWmtkbFpXSkhhSE5rYjJoaVpqQmlNV1p5WVZkaVoyaGFaR1ZtVDJWdFpGSm5UV2hrWTI1aVdtUlRabEZuYUdaV1l6UmtaR2hvWjBwblRHUkhaRVZsVG1kYVkwMWtTR1pLWVRkbVkyZEdaWGhuY0dKVFpsWmtjR1V4YUdWb1JXTjBZek5qWldSdFpteGxXR0ZYWjFKalFXTmFaVmxsVW1OQ1ozWmtZbWQ0WWtWaVZHaGlaVEJuWkdkNlpVVm5NR2hrWm05b1JtWlNaMVppV21SVFlYcGxjR1p0WldObmJHZFpZVlpuWVdadVlrcG5VbU5rWkRGbVpHSkxaMGhrYVdGa1kzWmpVbVJyWVc5amNHTlJhRU5tYTJGNWFFOWxRMkZCWlZGbFdXVlJZakJpVm1GV2FFVmhhMkpSWms5aWVtTnZaQzlrUm1kbllscGpUbWRrWkRCaWRHSktZVUptTVdNMFltNWtSMmhFWkRob05XSklZa1ZsU1dka1oweG9TR0Z2WkZOaVIyZFNZMUprUkdoRlowZG9OV1o1YUU1bFdHTnNhRWxqUjJkSFprNWlZV2RrWVZobWFHaE1aMlJtTTJWd1kzQmlWbU14WVd0b1VXWkhZVmRuYUdORFpVRm1NbWc0WlZwa1IyY3laV05uVkdKalkzZG5OV2RJWlZsaE1HVkdaMEpvV0doRmFHTm1XV0pPWjBoalNtTk1Za1poV0dad1ozbGhSR0ZZWTJOaFJtRlJaSGhsY0dod1pWbGxSbVpOWjFKalltVjRaVkZpT1dGVVowZGlSbUozWmxaaVYyRTVZV0ZuVW1SNFpqQm1aR2hXWmxabVNtZ3daR0ZqTTJad1oycGlSMlY1Wm5ObldtZEVZM2hrTUdKUlkyVm9WV2QzWjJKblRtVjNhRmxqUzJaSGFIbGlaMlkxWWxKblZXUk5aMHRsVkdNeFlXeG1ObVJqWm01aWNHWjNZVUZtVldoT1pFVm1WMkZ0WWxKbmVHRlZZa1ptTVdVMlpXRm1WbU5rWTFwalJXZENZbXhpYjJKRFpEQm1WbVYyWTBWalVtTk9aWFprVW1ONFpqaGxZbUpGWVhsa1FtTmpaVWRrTVdWNFlraGpVbVZIWTNCamVXVkNaMEpuYkdGeFpVOWxNV0l4WVRObFIyRkZhRzlrWW1oaFlsaGxRV2hoWVVkblIyaDBaMkprWW1Zelp6RmtUR1JqWTBaa1ZtTjJZMWRrYTJKalltUmtTR05XWkZaalUyZGtZMGRuZEdNMlpsQm5iV1JrWlhGa1UyTjNZVGxvVTJkRllrZGxVbVZOWldSa2JtSmFZMU5oVVdab1lsVm5kV1JPYURCa1FtaE1ZVlZqUldGT1prVm9XV1p0WjBwaU9HaFhhR3RtYUdaRVoxTm9WbWh3WWpGalpXRkZZblJtTTJkbFpXMWxiR1JZWkZkbFVtVkJabHBsU21WblpIUmxXV05pWjNkbFFXWm1ZMUpoVldGa1kzcG9SV2d3WldSbWIyTkdaMVZvYUdOUloxSmllR0pDWTIxaVkyZHNaRmxuVm1kUFoxaGxTbUZOWm1SaU1HZGtaMUpsVUdKSFlXeGhhR2RHWm1obWFHZHRaMFpqUjJWYVltMW5XV0ZZWVVKalZtaGlaM2hvZDJWSlpWUm1lR0V4WTJSalFtZHFZWGRqYVdWTFpGSmlaMmRtWTBabU1HWnpaMU5tVldKblpFcG5lR1JYWTFobFdtTjNaMVZvYUdoWlpVOWpaV2RJWVRCbFdtSkJaM2hsYUdabVlsZGpVMkowWm5sa1pHTnVabHBsU1daVFkzZGlaR0ZoWm1abE1tVldaRXhrV21aWGFEbGxMMkpZWjJ0a1NXVlJaRVZtUldkSlpreG5VbUpYWXpoa1VtUkZaREpoT1dKSVptTmhlR2RPWlVoallXRkNaVlpuU1doVmFFWm5ZMmhSWjJWblNHWkpZME5sUm1OWFpuaG1NR1pWWlZkalpHVllabFpvZDJaMFpqQm5XV1JWWWxWa1dXRlpZMEpvU21SdFoyUmtiV2RHWVhobVUyTklaa3BuWVdaRlp6RmxWbUZWWjBKb2FXTnJZVzFvWVdFelpFWmthbWRDWlZkbGNHSkhaMFJqTUdOT2FIUmtXbWRGWm5CbWQyaGtaV3hvYjJaU2FFWm1WMmRXWnpKbFFXVXdaMGxpVldWaFpGWmtiR2hwWW1ObGJtSkNZWGRoVTJaRllVNWlTbVpYWkc1blZtYzBhRk5rTTJaa1pUWm5ZV1pXWVdSblVtaFNaMFpuUldSb1pGZG1SR00wWXpsbVJXRlNaV2hqZG1WRVluZGlOR1JVWVZkaWJXaG5ZV1JoVVdkR1ptZG1WR0ZGYUVkbmJHSjVZa2RpUW1KNFkzRm5ZbUpGYURsbU0yUlNaekJtVFdkWFkxcGxSMlZHWVVablJXZFhaRmxtVTJaYVlXNWtVbU13WWxwalZtaDRhREJvWTJaRlltTmtaR0pJYUZabVZtVlRhR1JsUjJKMFlUWmhXV1l3YURGb2NXTlRaekZsTUdOWVkxSmxSR05GWW1Wb1QyRklZMWxsUVdkUlkyaGtOV0kwWjFCbmQyVnNZMmhsUjJGRllVNWpXbUpaWlc1aVNtaDNabU5pUldKb1owUmtVMlJSYUdSbk9HVmtaRWRsUm1NelltVm5iV1ZzWkZob1YyTlNZMEZpV21GaFpVRmpkR0pHWmxwbE1XZzRZMlJuVUdaNFlWVmtPR2hTWlhkaloyZzRaMVJqUW1SbllsWmlVMlpWWm1OaE1HSlBZM2RvU21SUlkwRmplbU4zYUVaalJtRlVZMHBuUzJaRFp6Sm1hMmh1WTFGak1XZFpZMnhoVVdoRFpqaG9jR0pNWVROb1FtTmtZMDlrTVdGYVowaGtWR040YUVabFZtVkhaak5uYUdWeVpWQmlNbVZ3WVU1a1RXTlhaVVZqVUdWVlpHaGlRbWRyYUZSaFNHTmFaekpsVldacllVbGpWbVZsWkVobFdtZGlaVVJrVW1Wb1kweGpWV0pYYUc5bWJXRmpZMGRpTVdGSllsTmlRbVV4WjFSbFpXRllaV2htUkdWS1lWaG1jR013WlZabE1HWnJaVkZtVW1SWFkyaGpXbVJVWlVkb1RXUlNaVVZoYVdGd1owOWhaV0ZvYUUxaVkySlJaV2hrVm1WSlpGVmlSV0ZqWVZGbldtUnVaRXBtVjJKR1psZGtjR041WWxWb1dHaGtZVmhuU0dWR1oyTmtOMk5aWmxabGEyTlphR1ZtZUdkUlpVeG9TbUY2WkZWbE5HTlhhSHBoT0doV1pFVmlRbUZWYUZCblYyVldaMHBpYzJOaFpETm5RbUZxWmtKalIyVndZMGRuUkdJd2FFMW9XbWhtWkRKb1dtVXlaR1JrYkdoS1kwTm1SbVpZWTJobU1tVkZaR3RtYzJkWlkxRmhNV05zYUdsblkyRm9aWGhuTkdSSWFFRmxjMlJCWkVOb1dHVnNaRFJrU0dRelpYUmxObU5QYURGamRHWmFZbGRoVW1kV1ptOW1VbVJGWWxabWFXWkZaVkZoU21acVlsSmxNMlUxWjJOa1ZHRnVaMDFuTDJKVFlVWmhRbUZJWmtWalIyTmFaSGxvVm1Sb2FGWm5jV0pqWTJ4bVJtUXpaRU5sYldOQlkxZGtZV1JYWkVWalYyVkhZMGRqV1dSVloxcG9iV1ZhYUdob1kySkdZVlZtTldOSFpYaGtWV0ZrWmxabFZtUldZMUJpWkdORFowcGtObU5pWjJ0bE1XUTNaRkpuZVdWV2FGTmtSV1JIWVZKblRXVmtaRzVpV21SVFoxRmthR1ZXWmpSalpHZG9hRXBvVEdkSGFFRm5NV0ZhWm1aak0yTktaMmhpWm1OSFprcGxSR05UWVZaaGNHRXhZbVZoUldKMFpqTm1aV1p0Wld4aldHSlhaRkpvUVdoYVpHRmlSbWRvWkVaaVkyaG9ZVVZtUkdaa1lVZGxNV0o2WjBWb01HZGtaVzlvUm1GVlptaGlVV1pTWlhoaVFtZHRaR05pYkdSYVpGUm1TbU5UWVVKblVtWm1abmRvVFdORGFGaGtlbVp2WldGaFVtaENZbWhpZEdGR1prTmhOR2RpWTFsalYyZ3habFpuWm1GVllUbG9VMkZJWTFKbWRHSldhRUpsYldRNVlYSmhaR1F5YURSblJtVmhaV3hrVldoVFlWVm9aMmRDWjJ0a1UyZHVhRUpuTW1oWFlXZGlkMlpXWkdObmJXWnpZbE5rVjJGUlpqRmlWbWhWWlVobWJHaDVabVZvVm1Sd2FFbGhVV1F3WTJ4allXUmtaVmhqYUdWTVkyUmtNMlJ3WkhCb1ZtRXhaMnRpVVdWSFpsaG9aMlpNWWxkbU1tWTVhRVprUldZeVpXeG9RbU5qWm5kbFRtZElhR1JvVVdkb1pGWmxWV2hDWkZGaFVXWlphRWhpVW1WWFpVSmpWMmh3WkhwbVZHSkhaM0JrV0dGSVpteG5OR2RuWTAxbWJXTXhZVXRuV21Sb1lqbG9iV05NWVcxaVJtWTNabFppV0dZMFptNWlVbVo0WVhOaFltSldaVlpoYjJGdVpXRmpNbWRrWW1waVdHaEhZMDVsU0daS1lsWmlTV0pSWlZwbVJXTjRaREpqWkdWc1lVcG1RMmhHWTFoaWFHVXlhRVZrYTJOellWbGxVV2d4WVd4bWNXZEtabXBuWjJFMVlVZGllbWhuWm1KaVYyWnVaalZoTkdKQlkzZG1jR1kyWjJSbVJtVmtZVkpuUjJoQ1lrVmpPR0pEWlRCbmNHVjJhRmhrZUdSd2FIWmtWMkpYWkRCblZHaFdaakppUldSV1psSmpWbVJCWVZWalIySlhZVnBrTUdoV1oyZGlaR1V2YUZwbU1XaG9abk5qWm1SVllXOWxWMlJoWmxka1JXRlhaMGRuUjJkWllsVm9XbUZ0WVZwaGFHRmpZMEZpWTJkeGFFUm5hR1pLWWxCb1ZXY3hZVlZsUVdaa1pFZG5RbWcyWVV0amJHUmFaa0ZoVTJSM1lqbGtVMkpGWkVkbFVtZE5aMlJqYm1GYVlWTmlVV1ZyWm1oamVHRmxaR3BpYUdOTVpFZGlSV2RPWjFwbldXWnVaVXBpZDJKamFFVmphR0ZFWmxGaVVtTlNZamRoUzJSQ1ltdG1OR0pNWW1saVdXTkVZMEZvUldoQ2FHTmlXbUpzWlhkbVdHVktaMnRrVm1SWGFFSmtaMmRyWkc1aFEyVXdZV1JqTVdOR1lsRm9OR1pHWVVOaFZtRk5ZM2xsVDJkNFpHeGlZbVZoWVc1a2IySkdZV1ZrTVdSaloxbG5SMlJ0WjJ0b2IyUklabmhpWjJZNVpsQm5iV0phWlcxbFdXZFlZMEpoVm1aaVlqRmtjR1ZJWkVobFVtZ3hZVlpsVldWcFpGbGlkV1pNWkdwbVdXUm1aMHBqUldkelkwaG9aV1pDWTBKbGEyZFVaRWhvV21JeVoxVmthMmhKWjFaa1pXTklhRmxtVTJSVFpIaG9hR1pFWWxWa1ZHVmFaM2xsWW1aWVlVSmtSR1JHWXpCaFFtUlhaMWhpTTJKb1preG1aR1F6WVhCamNHVldhREZrYTJWUlprZGxWMlpuWTB4bFVtWlhaRGhoVW1oSFpYcG5NV1pJWW1KbGFHaE9aVmhrWVdaRlpXeGlTV0ZCWkd0aU5HVmpZVlJoU0dGS1oxZGxSbVZYWW5CbWVXWlZZMWhqWkdGWVpWTm5hR05hWTNCaVdXUlNhRmxoV1dOTVpIaG1VV0UyWVU5amJXVkZZMk5oV0dkVWFITmtVMkpFWjJ0aU5HUlNZVlpvVVdkYVl6UmpZV1o1WjJoamRtRlVaVmhoZEdoSVlrUm1NR1JOWkVOblkyZ3daRUpvTW1obFpqQm5UbVpSWWtSa1dHVkdZVFptVDJaRlpYTmlXV1JSWkRGbWJHWnBaV05qYm1WQ1luZGhVMk5GWms1alNtRlhabTVvVm1NMFowSmhXR2hyWTA5b1JXUkRabU5oT0daa1lrZGhXV1ZLWW1WalZHWmpaRTluWVdSSGFIZG5ZMkpOWTJkaVRtVnFZa3RsUW1Od1ltaGtVMlJCWTNkbFltVkZaMGRtTkdOdFpGWmxaMkpvWlhGalNHVjRZMEZsYW1OSVpqQmxVbUpSWkVwaVUyWTFaMXBvVTJkdFlqVm5RV2RpWWpKak9XVjBhRmRtYkdSV1pYWm9WMk5yWW1ObVpHUklaRlppVm1GVFptUm9SMk4wWXpaa1dXRXdaVEZuY1dkWFozZGtPV2ROWVVWbVJHRkNhRTFuWTJGSVlVSm9VMmhUWjJ0alJtUTBZbUZtZUdGS2FGcGlSR1ZXWjFwaldtRmhZbGhoU1dGcllXTm5SV0pPWWtSbVYyWkdZMDVpTldSVlpHdGpkR2d6YUdWamJXTnNaMWhqVjJaU2FFRm5XbWhoWkVGbmRHaEdZMkpqZUdORllWUm5XbVY0WjAxb04yZFhZV2hsVVdWVVpWSm5lbVJXWlZGalYyRm9aRUptTUdSYVpEQmxUV2hXWTJKaFNHTkpZa1pqWm1Gc1puUm5aMlZHYUcxaGJHZG9aMFppYUdSb1ltMWpSbWRIWlZwbGJXUlphRmhrUW1oV2FHSmxNV2R2WkZaaFNHZFNhRnBvVm1OUmFERmxOV1Z5WW1WaGJXSk9aazVsWVdGclpYTmhVR0pWWldobVFtRnJZVlJsU0dKYWFDOW1VMk5YWldkalZtRmxaMGhsV1daVFkxTm1lR2hvWkVSa1YyTlhaRXBvZVdaTVpGaGtiR05GWm1Ga1ZXWnNaMkZtWkdkWVptaG9UR0ZrWlRObmNHaHdaVlpuTVdKclpsbG9WbUV5WlZwb1ltRkdhSGxoUW1OR1kxaG9SR0p6YUdWbVNXWXhhRnBvU21KUVpUQm9ZMkZDWVVKaVFXVkthRFZvUzJSRFoxcGhTR0pCWVhkbVdXTllaRlZoVjJad1lWaGhSR1JGWVUxaWJtSkpZbXRqU21WU1pVdGpWbVp3WjIxaVltWnFZMVpqT0daV1oxUm1NV0pYWmxKbE1XRlJaMVZoVm1SUlpteGxaV2hoWnpOaWNHWnFaRlJsVjJkd1pVeGhSR0l4WjBsaFVXVmFZVVZtZUdReVowcGtRbU5qWWxkbVVXWkRabTluTkdORlptdG9UV2Q1WjFGak1XaHNaR2xvWTJOdVpFSmhkMk5UWWtWb1RtTktaVmRtYm1SV1pEUmpVMlF6WTJSbmVXSlFhRlpqWkdWRlowVm1RbVpKWlRoalFXWnJaR3hrUm1kRlpWSmhUbU4yYUZKaU0yUk5aRlJvVW1FeVkyZG9WbVJUWjBabFFtSklhRVZqUjJOYVlqWmhRbUZDWWxaa00yUmpaR3RqUm1RemFFTm9NR053WVVWbldXZEhZVEJtT0dKSFlrZG1XV2hWWVZwbGJXRmFabWhvWTJkR1pGWmxkbUZYWVd0b1kyTmtaMGhtVm1aVloySm9aR1ZFWkdOaWJXWlphSGxoUm1kcFlraG5NR1pqWW1Ka1VXY3lZbWhoVFdOSlkyNWljR2RUWTBWb1FtRnNaRFJpV21WQ1pUVm5UR0ZEWXpGaFJtRlBaMlJpUjJGV1lUaGpZMkpGWkZaa1VXSlhaVEJuTVdKcVkxbGhSV1JLYURkaFZXZEhZMnhsV0daWFlsSmtRV2hhWldGa1FXaDBaRVprWW1GNFpVVmtWR0ZpWnpCbFpHaDZZMWhoVldOclkyTm1ZbUZFWm1kak1XZEpaekpuT0dkSVlrRm5RMmRTYURCbFJXaDNaakJsYVdSQloybGpZMmcyYUdWbFVtUnpaRlpsVUdaQ1ptaG9iV1ZHWkVkaFdtZHRaRmxoV0dGQ1lsWmpZbU14Wm5Ca1NHWklabEpsTVdaV2FGVmhibU5TWVRCbFpXUnRZblJqUm1KUVlXZGpUbVpIWkVGalYySnpZakpuVFdGWVlWcGpjbUZWWjJ4blFXSkJhR0pvV0doWlkxVmpVMkV3Wlhob1MyaFdaVmRvU21ZMlowcGhSR0ZuYUVKb1JXRkVaa2xrU1dGa2FGaGxUbUZNYUZwbFoyaGtaWEJoVTJWc1pteGlSV1JIYUZoaFdXSldZMWRrTW1nNGFFcG5SMlp0WmxwbWRHTmpaWGhqVG1kSVptRmxRbWhXWWtsbVZXaEZaV05sVVdGYVltNW1TbWhYWjBabFYyRndhSGxtVldaWFpURm5XR1pLYUZKbk5HVTVZVXRrVm1NNVoweGxZV1ZvWmxGbGVXUmhZMjFpUldacFkxZGlWMk01WkdKblZtTjRhRkZrVW1KbVpqRmlTbWd3WW1GaE0ySndabXBvVkdGWFpuQm1UR1JFYURGb1NXUlJhRnBrUldKNFp6SmxTbVJHWWtwaVNtSkdZMWRtY0doallVVmlhMlp6WVZsalVXWXhaMnhvYVdGalpXNWxRbU4zYUZObFJXRk9aVXBtVldZeVp6Vm9VMmhUWVRObVpHVTJZbUZoVm1oa2FGcG5SV0ZDWkd4aWIyRkRaM2hrYUdodFkwaGtWR1ZzWjNaalVtSXpZMDFsVkdkU2FESm5aMlZXWVZOaVJtTkNaa2hqUjJGRFptaG1PR1pDWjJ0a1kyZHNaVXBqYUdJMFlXcG5SR2hvYUhCblZHTmFZWHBpV21SRlpGVmlWR1pLWjFKb1JHZDVaR2RoTVdGWlkxVmxUV05PYUZCbk1HZGpaMEZqU0dOU1lrMWlTR1pQYUdsbloyaDFaMHRqWjJWSllXdGpVMlIzYUdOaFIyaElaa2RtVVdKbFpHVm5ibUZaWW1KbVUyVjRaMVZqYW1oWWFFSmxTbU5NWjBkaFJXZE9aRnBuV1dkdVkwcGxkMk5qWkVWb2FHaEVZMU5qVVdWblpuZG1UR2RDWkRSbmJHTk9Za2RrYkdobVlXTm9lR1pCYUZwaFlXUkJaWFJtUm1aaVpYaGpSV05VWldKaE1HUmthSHBsUldVd1ltUm5iMkZJWkZKa2VHUlJaRmRvYUdWQ1lYUmlTbUZzWWpoaVdtSlJaMGhpU21KU1pXUmpNV1ZrWlV0aFJtaHRabXhpYUdKR1pHaGphR1J0WlVaa1IyZGFhRzFrWVdaVFlVcG1WbVpqWm14amNHVllaVWhuVldGR1lWWm9RV1JJWmpGaGJtSlZaMGRvVG1kT1pXRmthMmR6YUZCa1ZXTm9Za0pqYTJKVVpFaG9XbVl5WmxWaWEyWkpZMVprVFdaWWFGcGhUMkZHWm5oaloyaDJhRlZpVkdWWllUWmhUMmRUWlU1a1JXVlJaSGhtTVdGWGFHUmlVMlp3WmtoaVpHSXlaV2htYkdoV1p6QmliMkZEWkVSaWJtWTBZbU5oVTJWWGFEaGhZMkpCWTBobE1XSlJZbHBoVVdKMFkwOWhXbWRFYURsb1NXVlZaMFZrWTJSUlpscG9ibU5LWWxkalJtRlhaM0JqZVdoVllWaG5aR2hZWlZOb2JHSm9aMjVuUm1KWFpEbG5iMlZCWnpObVFXRmFZVUpvZUdKTlprTmhUbVpDWkZsamJHWk9aMGRpYUdGMFlVcGtWR0V3Wmtkb1NHRXhaVUprYW1GVVpsZGhjR0ZNWjBSaU1XaEpZMUZqV21GRllYaGpNbVprWjJ4a1NtSkRZMFpvV0dab1pESmxSR0pWWTNOaFVXaFRaWGRsTUdOeGFFOWxlV2hOWjB4b1IyZHFaalZuU21kU1lUTmlWV1p6WWxObU1tUnNZV3RtWkdJeFpHUmhRbVpIWTFKb1ZtaHZhRUZqZUdaRlltNWlWMkZGWlVGblZXSkdZMWhoVFdSWlpWSmtNMkZzWjI5blUyRkZaakZsU0dkQlptNW1UbWR1WVZaa2FHTk9aWEZrU21ac1kyaG9LMlptWVZWbGIyZFhaMkZoVjJoRloxZGxSMlpIWlZsaFZXVmFZMjFrV21Kb1oyTm9SbU5XWW5ablYyaHJZbU5qU0dGSVkxUm1jR05oWTBsaVEyUk5aM3BvVFdKRmFFWmtjV2RJWTNkbVRtVlRaRkZrYldGb1lVMWpaR0V5WVdSaVltUlVhR3BoT1dNMGFHUm5hR2RLWVV4alIyaEZZMDVtV21oWlkyNW9TbUozYUdObVJXVm9aVVJsVTJOUlkyaGxNV2hqWVRCbWRHVnNhRlZoUjJGc1pWaGxWMlJTWmtGaldtZGhaa0ZoZEdOR1ptSmxlR1pGWWxSalltSXdhRFZoYjJkUFpWVm5aR2R2WlVab1ZXWm9hRkZrVW1kNFlrSm1iV1ZqWm14aVdtTkphRmxqTTJjMVp6ZG5aR1l4WTJSbVMyRkdZbTFuYkdob1owWmxhR1ZvYUcxbVJtVkhaelJqYjJSaVlubGxRV1pJWjBsalFXZzBaa2xtVTJWVlpGRmxSbUpHWkRObGIyUTRaMHRoUTJodllscGxUR1o1WlVwaVFtaENaV2RpVG1neVkwbGpRbVZPYURKbFZHVXdZMHBoVkdWTVlWUmhhR0ZTWmtoaU1XVkZaVTFvUm1NeVkwcGxObVJLWlVoaWVHTkpaVVZoVldKV1lXRmtVR2RJWmtab1RHVk1Za1psUW1Gd1pGWm5NV1ZyWVZGalIySlhZV2RvVEdoU1lWZG9PR2hTWTBWbk1tUTRZMVppVG1GcllXTm5VMlpQWVd4bGRHWkphRmRsUjJnd1kxRm5XbVJ1WlVwbVYyaEdaMWRqY0dKNVkxVmxXR1JrWmxoblUyTm9ZVnBvY0dGWlpGSm9OV2ROYUZwaFoyTnNZbTFqWW1SVVpsWmhOV2hYWTFWaFZtZGhZbEpuZUdZd1ltUmpWbVpXWlVwbU1HUmhZek5sY0dacVpsUmlWMmh3Wmt4aVJHY3hhSEJrUTJOYVlVWmlSbWN5WjFwbmJHTkpZMlZrUm1kVGFIQmlMMlpJYUcxbFJXUlpZMUZuTVdSc1pXbGtZMlZ1WlVKaWQyRlRaRVZsVG1oS1kxZG9ibWRXWkRSaFUyaDZaelZvTm1kT2FGRmxkR2RhWTJaaFFtRkZaemhvVVdGM1puZGhPR05JWVZKaVRXSTNaMU5oTTJKT2FFSm1VMll5YUdkaVFtZFNaa1poUW1KV2FFRmtXR1ZLWm14alVXZG5aVEZpTldGYVpFVm1WbVJuWVZkaU1HZHZZMkppWldnellVRmlRMlpFYUROaVNXUk5ZV1JrV0doQ1lqRm9ZV2RHWjNoa2FtUmpZVVZoWTJoa1kwaGpWbVZXWkZOalpHZEhZWFJsTm1kWllqQmpNV1p4WjFOaGQyVTVaVk5pV0dGdFptOWpOR0pFWW5kaFdXZ3paa3BtYldOdlpWcGhRbUpIWlVGamNXVlpaMVJoZDJaeFowWmtkMlpKWWtGbVNHTjZhRzlvTTJGWlpURm1jR1F4WVdWblJXVjBaek5sWldGdFpHeGxXR0pYWjFKbFFXTmFabUZqUVdkMFpVWmlZbUY0WjBWa1RXZGlaREJrT1dRM2FGSmxkMmM0WW1oblVtaHFZazFpUTJWUFlXaGlRbUkzWVdObGEyZFJaVUZtWm1nelpVcGtXR05rWlhkbFRtVkVZVWRsYTJOT2FHaG5SbVJvWjJob2JXaEdZVWRsV21KdFkxbGpXR2RDWkZab1ltTXhZM0JqU0dWSVkxSmxNV2RXWWxWbmJtaFNaMnBrVEdWcGFITmtSV05QWkZSbFFtVmtZbFZpYUdWMGFHdG9XR05SWjNSaU1taFVaREJoU21oQ1lXVmxSMmRuWWsxbFZtWlNZMmhpWW1aVllVZG5OV0paWm1OaFNHZENhRWxsVVdVd1oyeGpZV1JrWkZoaWFHTk1ZMlJrTTJad1pIQm5WbUl4YUd0blVXWkhaVmRsWjJWTVpWUm9WR0owWTFwbVYyUnFaM2RvT0dGSlpsSmtUbVZOYUdGbVFXRmpaekZsVldSR1pXOWtVV0pOWkc1alNtZEpaME5sTTJkU1pubGlVV1JIWlVaa1pXTlNZbXBrZUdOd2FGbGhVbVJaWmxsbVdtaG9ZMUppYldSYVpHMWtSbUYzWWxaaFYyTTVabUZtVW1SNFpEQmpaR1JXWTFaalNtYzRaRkJpZW1oSlpIRm9TR2RvYUVWaldtSkVhREZqYTJGUlkyUm1lbWRHWkRKa1lXVXhZVWxuVjJKR1kxZGtXbVJ2WTBSaVJXUnpZMHRtVm1ReFlVSmtjbWhYWVVoblFtSjNaMU5tUldST1pFcGlWMmR1WWxab05HTlRaak5sWkdRMlkyRmhWbVprWTFwblJXWkNZbXhqZVdORFpubG1kR2h1WTFKbFZtSnpabTFvUm1SSVlqaGlWR0pGYURKalVXSldaa2RrYkdONFpFaGpSV1JZWjFwaU4yaFhZMnBrT1dOeFkyTmliR2RHYUROaVZtRXdZMjloVjJGaFpWZG1SV1ZYWkVkalIySlpaRlZoV21ScVpsSm1hR0psWmpGbVZtWTNZMk5pUldGalpHUmxTR0ZXWTFaaFUyZGtaMGRtZEdVMllsbGpNR0l4YUhGa1UyVjNaVnBpU21kUFpXMW9VbUpOWW1Sb2JtVmFZMU5qVVdWb1oxWm5OR2hrWjJoa1NXUlhaVVZqVldNNVozcGlXV051YUVwaGQyaGpZMFZqYUdSRVpGTmxWbVJ3WVRGb1pXWkZhRTFoTldWa1pVUmthMmhHWWtabWEyUlNabGRoVUdOR1prbG9WbWRMWVdob09XVkZZMUJoVVdnMFptNWtWbVJwWnpSbGJXWlJaVlpqZEdoRFkwcGtXR0pXWkcxb1ltVXhZMXBrVkdGUVlYcGtkMkpUWVVsbWVHVTBhRVppVjJOSFkyeG9jR0ZSWVdoaVVtUnRZVkpoYldKd1kyMWlTMkpJWW14bFZtWk9aa2hpUW1oSVlVaGlVbU14WTFab1ZXRnVaVkprY21KbFltMWtUbVpPWjJGa2EyWjBhR1JtUm1Vd1lWRmllR2hJWVdwa2FHTXlZVmRuYldSbloxWm9aV0pJWkZsb1UyWlRZM2hrYUdWRVoxZG5WMkZLWW5saFkySklhRUpsU1dSUlpEQm1SV1JQWm1SblYyWldZVXhoWm1GRFpqVm1aMk5YWVROalRXWlJaMGRuVjJGblpreG5VbU5YWVRob1VtSkZaakptT1dGSVkyTm1lR0pPWWtobllXTkNZVEJqWVdOVllVWmpiMkpSWkdSamJtRkpaRXRqUm1SVVpHaG1OMkZZWlZabU1XUllZbE5rYUdkYVlYQm5XV05TWVZsbVdXUmFZV2hsVW1adFkxcG5iV1pHYUhkalZtZFRaVnBsWVdSSGFEQmtSV1JrWkU5bVZtRnZabWRpU1dkNlprMWlkMkpSYUZkamIySm1aRUZvTVdkS1prTm9ZV1JGWlhobWFXSmxhR3huU21GUllrSmpSMmQ0Wm1oaFFtSnNhRTFtVEdKV2FGVmpNV0V4WjJab2JtZENZVGxsVjJSc1owcG9aR1pVYUZkblJtaG5abGRvUjJSR1pIVm9ZMlJXWXpWbVZtZFBaR2hoYkdWdllrTm1NR0pXWTNaa1JXSlNaRTVsZG1GU1pUTmhUV05VWkZKaU1tZG5abFprVjJoR2FFSm9XbVZGWmtSa1NtUjVZVlZoUW1ST1ozRm9aV0puYUZaaE0yRlRaV3RtYjJoRFptVmtNMlJuWWtOb1FXaFlZVUZuUkdSa1praG5PV1V3WldOblJtTTFablpsUkdaclpXTm1WMmRJWVZWaVVtSmlabVZqUldOR1l6WmhXV2N3WVRGbGNXRlRaWGRvT1dGVGFFVmtSMk5TWjAxbFpHSnVabHBuVTJSUlpXeGxkR2N5WkVGb2JXWnphRGRvWm1kVFpXTm5iV2RCYUhkbFFXWkRaMFZqVkdaRlpUaGhUMmhwWXpob1JtaERZME5pVVdOR1pFUm5hMkZPWWxoalYyZFNhRUZtV21aaFpVRmpkR1JHWldKbGVHTkZZMVJoWW1Zd1oyUm1lbU5GWnpCaFpHaHZhRU5uYTJWb1kxbGpWR2N3WWxGb2RXVlBaSGRqVm1SMVlVOW1RV0U1WjFKbllXTnNaR05tWldSR1kyNWhaR012WVVOa1FtSm9ZekJpUVdaSFl6bG1jV2hUWkROa1FtZFdZV0psTVdkd1kwaGtTR0ZTWmpGblZtRlZhRzVoVW1KeVkyVmpiV1pPWlU1allXTnJaM05oVUdKVllXaGlaMkYzWWtKb1JHUTRZbXhtUzJWU1lVRmlWbUZqWkROaVdXTkVaMDVsYUdab1ptVm5WMk5VWWxwbGVXZGlabTFuTldGWFpWRmhNV0ZvWkUxbFptTklaVkpoYUdOa2FETmljR0Z3WTFaaU1XWnJaVkZrUjJGWFpXZG9UR1pTWTFkak9HWlNaRVZqTW1FNWFFaGhZMlo0WlU1bFNHTlpZMFZqUldWQlpVZGxVbVpTWkhKbVRtWklZa3BvWkdkR1pGaGhaMlJRWjFWbFYyWndaMWhqU0dWb1lscGpNMmhtYUhkb1oyaFpZV1psYUdNeFpYRmxWR0pIYUVaaGQyTldZVmRqT1dWaFpWSmtlR1V3Wm1SaFZtRldhRXBtTUdSaFl6Tm9jR0ZxWmxSaVYyRndZMHhuUkdjeFkzQm5SV2hNWmtGbFZXaHNhRVJqVVdkQ1kwTmpTR2h1WldobGJHTmlZVEJtYzJSR1pGRmtNR04wWlROaFdtWXpaMEpuTW1aVFkwSm5aR2RCWjFWaE1XUTVaRFJsVTJZelkyUmxObU5oWWxaaVpHRmFaRVZqUW1Oc1kyOWtRMlV3WTFaaGRtVkZZVkprVG1WMlpGaGtXR2hPWlRsbVZHVjZhSGhrWkdSQloxRmhUbWRNYUVWa1JHZEtaeXRsVm1ocloyUmliV1JqWW14alFtUnRaVmhrYTJoWlpEaGhZV1JYWlVWalYyZEhZMGRuV1dKVlkxcGpiV1ZhWm1oblkyVkdabFpoZG1WWGFHdGxaR2hRWjBobFZtYzFhRk5rV1dSRlowWmlObVZaYURCaE1XTnhhRk5oZDJjNVlWTmtSV1pIWTFKalRXRmtaMjVqV21aaVlWZG5WR2M1WXpSalpHWm9ZVXBsVEdWSFkwVmlUbWRhWjFsb2JtaEtZWGRvVEdkVlowWm9VR1ZaWVRGamNHZ3haMlZoUldOMFlUTmxaV2R0Wld4bFdHaFhaMUpsUVdSU1lVcG5aMkpWWVZaaVVHSldZVFZtU0dKSllVSmhUV0p4WWxGa2QySktabTFsVVdob1pXOWpXbUpGWVRGblZXTkJZMUJoYUdSc1psVm9VR2RvWlRSbE1HTmtaREJuY0dKTFpGVm9SR0YzWlhaaVZtVlZZbmRvZG1kWGFIbGphR2R0WjJGblUyTlNZbHBpWW1aM1ltaG5UR05JWkZab1VtaGpaMVZuYVdVNVowSm5aV1J0WkU1bVRtUmhZbXRpYzJoUVpGVm9hR0ZDYUd0alZHRklabHBuTW1GQllrRmhaR0pDWjB4a1UyVlNhR05tVTJReFlVNWlUR1ZFYUZOb2IyVTNaMGxoTTJaNFpFbGlSbWN3WjFabVlXaEtaak5vVW1GTVkyUm1iV1Z3WW14aFZtRjRZVUZvV21GQloydGlTV0ZNWkZKblYyWTRZVkpuUldNeVl6bGtTR05qWjNoalRtZElaRTVuVW1aNFowVmhaV2hyWW1OaFVXWmFZVzVoU21SWGFFWmtWMkZ3WlhsaFZXTllaR1JuWm1SQ1lrSmtaMmMxWVUxaU1XWnNaRTFtUzJkVlowRmhMMlZPWjJsaVVtVXJZMEZvYW1Nd1lWUm5SV014Wkdobk4yRkhaVkppTUdJeGFGQm5lR0puWmtkaVZHVllaMlJoVEdOVFlWRmpaR0ZsWjBwbGVHZG5aeTlsVDJaU1luaG9RMlJJYUZObmVHSTJaa1ZpYUdSclpGVm9VV2Q0WjBKamNtUmphR2xrZEdoaGFGTm1SV2hPWmtwaVYyZHVabFpsTkdoVFl6Tm1aR1kyWTJGa1ZtaGtaVnBrVVdkc1pIZG1PR05ZWldoalkySm9ZVVZpVm1ab1pHNW9SV1Y2WlhSallXTkdaMGRtVVdaV2FFaGhSbVI0WjBobVVXSnRZbkJrZVdkV1puZG5VbVJ0Wm1ObGFHSm9hQ3RoVkdGSFlrRm9WMlJoWmxkb1JXUlhhRWRuUjJOWlpGVm1XbUp0WWxwaGFHSk1aMVprZUdkcVpXTmhSV0ZqWm1SblNHVldaRlpvVTJoa1kwZG1kR00yYUZsak1HWXhhR2xtUW1oUlprVmxRMlJSWW1sbmMyWlpZVTloVTJWSllVeGtSV1JzWTBKaU1tWkphRlZsUVdKRFoxUmpRV1paWVRsa1RHZFRZMk5sZVdOUVlrRm1NR1IyYUV4blJtVndaVzluWldGQllqQm5hV1pPWmtOaWIyVkVZa1ZqUm1ZNVkxaGxZV2RCWjAxbFVtWlpaSGhvUm1kQ1pWbGtNR0ZqWmpab1IyUnJZMk5pZW1oUVl6Qm9hR2hSWlZKb2VHSkNZMjFtWTJkc1pGbGxWbU5oWVc1a1NtTlNhR1JqZDJOVloxQmxVV1pxYUhkb2VtUlhaVUpuWjJSelkwaGlSR0ZKWlhWb1MyVkRaRTVrV21GaVpYZG9OV05NWVVoa1ZXTTVZVnBrVldWdVpGWmhOMmhrWjIxb1RXTkZaVmxuTVdSQlkyeGtWV05vWWtKamEyTlVaMGhsV21NeVpsVm9hMlpKWTFablpXRkRaM05vWW1KU1kzcGxTbUZFWlZkbVYySktabmxuWTJOSVlVSmpTV0pSWWpCa2JHUmhZMlpoVkdKYVpFWmhTbVo1WTJkaGJXVkJaSGhvV21KRlpsRmhSR1pvWjA5bVUyTjZhR2hoUkdWWFpXcGxjMkZEWlVabE1XWjNabE5vUzJkc1kydGxUbUZOWVdsa1NXRlJhR1ZuTTJoSlpWRmpVV0ZEWlZGbWVHaENZVlJvTkdoWlkwSmhRbWRhWjJob1RtVlNaVzloV1doT1owSmxhR0Z0YUV4aU1tWm9aWGRqUkdGclpsWmlZV05TWjNoaE1HaGtaVlpuVm1oS1pqQm5ZV1l6WjNCaWFtSlVZVmRvYjJoYVpWTm5aMkphWjBaa1RtRm5aVXBtTW1OUVlVWmxiMlZYWkZobFZHZEZZV3hsU0dWclpYUm5UV0pVWlRGa2EyZDNaR1poYm1KQ1lYaGlWMlZWWWpsbVNtVkZaRE5sZUdkcVoxbGtXR2hrWmpaaVlXaFdaV1JtV21kRmFFSmtiR2R2WTBObk1HRlZhSGxrUjJoQ1pUbGpSbUpTYURObFRXSlVZMUpsTW1KblpGWmtVMmRHWjBKalNHSkZZVWRqTkdFNFpWZGhSV2RWWVRSaVVHWlJhRlZrTkdoQlpIaG9UbUZIWkV4b1IyRTVaVlpoVm1KNlpGcGhUbUZhWTI1bmRHWm9aVTVpWjJkQlltaG5SMmRTWms1aVZXTlZZbWhoZEdSVFptWmpSR2M1WlRKbldXaDRaamxuYldSVFpUQmtXbVpsWkVWblEyaEdZa1pqWkdocFp6RmxOR0pSYUdob1ZtUTBaMlJqYUdOS1kweGhSMkpGWWs1aFdtTlpaMjVtU21WM1kwOWtVV1ExWjBSaVVXRllaVUpqTVdSbFpFVmtkR1V6WTJWb2JXUnNhRmhvVjJoU1owRmtXbUpoWmtGbWRHTkdaV0puZUdKc1ptRmlZbVo0Wm5Ob2RtZEZaakJoT0dob2FFWmlWbVJXWTFGb1ZtWjRaMnhtY1dSWFkwWmpXV2hXYUdGb2JtRkthRkpoWkdVeFptUm1TMlJHWVcxa2JHaG9ZVVpoYUdKb1ptMW1WV1ZYWTFsb05taFFaMWhrUW1oR1ltSmtNR1ZrWVdGa1FXSkNZakJqVVdaVlptbGpaMk16WjJWbmJXUnpaa2xtWVdWc2FGbGtVR1JDWld4a1oyWjBhRWhvTTJWblpUWmpSbVIzWjNobFUyVk1ZMFJsTkdSaVkxSmhlbWRLWjBSaFYyVlhZVXBtZVdoalkwaGpRbWhKWkZGbU1HaHNhR0ZpWkdOWVptaGhUR2hrWm5saWFHTndaRk5pVldkUllWRmhWR0ZYWmxwaVNHaEJZVU5oUm1oWGFGSmxlV0prWjBob1pHZFNaVlpvU0dkWlpFVm1aR2RKWWxSalZXSmtaVVZuWVdKRVpUUmhWR0pYWW5sbE1HUnRhRWRvV0dFMVltSm9XV1pDWmxwaGNHaFphRkppV1dWWlpGcG9hR05TYUcxa1dtZHRZa1puZDJoV1kxZG1PV0ZoWmtaaVVtSXhaRUpoUTJKV2FFcGlPR0pQYUZoamNHZ3JZVlJrV0dad1pVTmlRV016WTJkblVXZGFZa1ZrZUdReVlXUmpiR05LWWtOa1JtZFlhR2hrTW1kRlltdG9jMkZaWjFGbGVHVjRZbWxuWW1kSVpFSmxaMkZUWTBWbFZtSlFZMWRqYW1aNFpqUmxWbVJZWW1ObkwyRmhhRlpsUm1obVowVm1RbUpGWW5SbFEyTXhZbWhrZG1KWFlrSm1jR05xYUdKbVdHSk5aRlJuVW1JeWFHZGhWbWhUWVVab1FtVklhRVZpUjJKYVkzbG9WbWRvWVZaaGNXVk9aakZsUm1GeFlWTm5iR0ZqWmxkalNXZEhabWRuT0dSSFowZGhXV1pWWkZwaWJXRmFhR2htWTJKR1lWWm1kbWhYWld0blkyUmtaMFptU0dnNWFGTmlaR05IWTNSbk5tUlpZekJqTVdOeFpsTmxkMlE1WmxOb1JXUkhaRkpuVFdoa1ptbGlVV1ZZWkVaa2EyZEJZM0ZuVDJOQ1owcGxZbWRCWXpKbmJHVmFaVmxvYm1KS1luZG5ZMlpGWm1oa1JHWlRZMVppY0dJeFpXVmtSV056WWl0bVVHVkhZbXhqWm1aVFoxSmtRV2hGWTJSblVtRmFZa1ptVDJWNFpqbG9abVZMYUdkbmEyVXdZMUpoZDJVNWFHOW5VMk5TWWxKbFVXSldhSGhuUW1jM1pHSm9NR1J6WWxaa1VHTnFaMjltV1dkS1lrWmthMlJIWWxWbGVXZGpaVzFqVVdKc1lrSmpkbVJHWkVSbFVXZHFaMDVtVTJaVlpVaGlTV1JXWlhCbVdHUkNaV3BvWkdSV1pWVmtibVZTWjNKb1pXRnRaVTVpVG1OaGFHdG9jMlZRWWxWb2FHaEJZM1JvUTJodVpWcG9LMlpSWTJ0b1NXVk1ZMlZpUTJaUlpHSmtVMlV3Wm5kbFRHSkRaM2xrTUdOc1lXTmxSR2MwWlU1alJtTkZhR3RrYjJST1owUm9XV1pOWlUxamFHYzRaamRrUW1KU1pGcGlRMmhGYUZkamNHVm1aMEpvUkdVeFlWZGxWbWhxWlhObU1HaEtaVEZsU1daV2FGQmpRbWRWWkVobVFtTlNZazFrVVdGTFpsUm5VbWhYWTFab2VXWlZZVzVpU0doNlpFMW5SV1JUWWtKb09XRjVZVk5pZUdoWlpGbG5XbVJvWVZKb2JXTmFaVzFvUm1aM1lWWm5WMlE1WTJGbFVtRXhZMUprWW1OV1psWmtjR0ZyWjJGaU1taFNaMnBuUW1SSFltOW9XR0pWWWpGbFNtWmFaMXBtUm1oS1puSm9aR1puWWxsbVMyRllZVU5pZEdRMFpsaGtaMmcxWlZkbVFtRkJaVEJvY1dabFl6RmxjR2gzWVZOalJXaE9ZVXBtVjJodVpsWm1OR0ZUWWpOaVpHSTJhR0ZoVm1aa1kxcGlSV0ZGWmpCaloyTlhaMUZqYjJVMFlrVm1WbVF3WjNGb1JXUklZVTVrYUdkQ1pHbGtXbU5UYUVSblZHUlZhRlpoVVdScFltdGxaMlJZYUdoalkyVTFaVkJqVVdGUlkyeGhSbVpCWXpsaGJHSlFZVk5rUW1KRllsUm5SMlZhWm1Kb1RXVjZaRXBtYUdWUVkzaGlUbU4yWlVka1FXSm9hRWxvVldKNGFFVmhRbWhrWTIxbVNtWm9abE5qVldVeGFIRmlVMk4zWWpsaFUyaEZZa2RvVW1oTlpHUmtibWRhWVZObFVXTnNaWGRpSzJKa1oyaGxjR2hpWlVkalJtVXhaRnBuU21nelluUm9kMk5LWlVGb1FXRlNaRUprWjJZeFpURmtUbVZuYURSbFoyUmxhR2huYzJKWFprWm1NV05rWldObVJHWldZV3RqV0dGSlkwVmtUV1ZpWW1Kb1VtVlJaemhuVW1ab1psVmtjbWRWWWtObk1HTmxaa0ZvZUdOQlozQmhTbWgzWmtsalZtRktZVlJvVW1SU1prNWlVbVJuWTJaalYyZERZakJqZVdSR1lVSmtSbUk1WlZCa2JXSmFZVzFsV1dKWVlVSm5WbVJpWVRGbWNHUklaVWhvVW1jeFlWWm9WV0pxWTBabmNtTmFZVWRoVFdGYVowbG1aMmRLWTJOaldHTkdZM2RsYUdaQlltcGlSV1ZwWmtkbGEyZEpZVlJoWm1adVlsbGpZV1JFYUdoamFHWmxabGRrVkdOWlpqWm1UMlpUWkU1blIyVkVaWGRpZDJOVlprMW9hV1IzWTBSb1ptaHVabHBtUkdSV1lqRmthMmRSWTBkblYyVm5hRXhsVW1aWFl6aGtVbVJGWlRKbU9XWklaR05vZUdkTllsUmlXbWhzWm10alRtZElZMmRpUW1ORloweGxibVJLYUdKaVJtaFVaMmhtZVdGVVlWaG5ZMmRUWWxObGFHSjBZM0JpUzJKQ2FGbGxaV1paYUVKb1VtZDFaVWxvTW1GR1lYUm9WbU5VWW5SbVZXZERaekZvYUdWVVpVVm1aMlZaWkRob1lXSXpaR1JqYW1OSWFESmhjR0ZCYUVSaWVHZHpZVnBpWm1ReVlWcGpNbVprWW14alNtRkRaRVpsV0dob1pqSmhSV1JyWlhObldXSlJaekZsYTJFd1pVMW1lV0pLWTNkaVFtWXdhRGxuYW1SWGFHNWlWbU0wYUZOb00ySmtaalpoWVdWV1pHUmpXbWRGWjBKaGJHSnZZME5pTUdkVloyNWtSV2hSWmpWb2RtaEJabTVpVFdWbFkxSmhlV1JGWjA5bFdXZHNZa0puU0dORllrZG9XbU41WWxabWFHRldZWEZqWTJKc1prWmlNMmRXYUhkalRtaFJZV0ZuVjJOc2FFTmxWV1pEWnpsblNHSmFZbTVrZEdnNFptSmlWbWhWWlRka1YyaHJaRVZuWW1GSVpWRm1aR1ZUWW1GbGJXSnpaWHBrV1dRd1ozUmljMk5UYURCaWNHSlRZVVJqYldGUlltVm5abVV4WW5obVUyWlJZMmhrVm1VMFkyUmlhR05LWTB4bVIyWkZZMDVpV21oWlkyNWlTbWQzWm1OalFXYzBaRTFoUjJZeFozQmpPV1JPYURCamRHUnhhR1ZsYVdaR1oxaGlWbU5DWTBGaVNXUmpabmRvYzJWTFpHSm1kMlk0WjA5bFltRXhabVJpYjJSRllUQmpjR0ZzYUZkbGEyRkdaMUZuUldVeVpYTm1jR1JqWm14bU1HTldhRTluUVdFNVlsSm5ZV1ZzWVdObVpXWllaR2xsUVdaNVltSmtWbVJrWVcxaVNHY3laVmxpZG1GSWFFZG1kR1V2WkdKb01XVndZMGhpU0dOU1lqRmlWbVpWYUc1bVVtaHlaMlZsYldkT1lrNW1UR04zWW1SblkySkdZWGhqUVdKMFpFTmlibWRhWXl0blVXSjNhR05vUjJGbFpVZGxaMkpUWVVGa2VHVm5aR1poUW1OWGFFcG1lbU5RWm01aE5HSTRaRTlsYW1Scll5OW9SV2RSWVdOa2NXTkNZMUZuWjJWSllVeG5hV1JhWTJwaVltaENaV2huTjJSTFpXaGlNV2hzWjBkbmEySldhRWhqWTJGNFpFNW1TR1ZoWWtKaFZtTkpZVlZoUldkallWRmtXbVp1WlVwaVYyVkdaRk5uZDJFNVlrRmhNMlprWm1abVFtTlNabHBtTUdkWlpGRmxXV0pFYUZwbWJHZDRaRzFtWldGSFpFVmtMMlpVWkcxbk9XSlNZMVJpUm1KSllWVm9WbWhSWVZsa1VHVkthRWhoY0dOdlpGUm5WR05uWlRKb1JHRXdZemhvVVdSTlowRm5VV2N2WlVwa1UyVnJhRTVoUm1KWVpFNWxNbUZYWTNwbFdXRkVhR0ZoVm1Sc1ptbG5ZMlp1WTBKa2QyVlRZMFZsVG1GS1psZGxibWhXWXpSb1UyVjZaMGxvTW1GUFkyaG1TbUZhWTFwaVZtTkJaVzFoV0dVeFlqQmpUMmhSWVRCbFJXWjFaRWhsYm1NeFprUmxSbUpUWVdSbFFtVkNaWGRvVVdobFpWRm5RMlpPWlRobFFtRldaa0ZrSzJWbVpFSmtTV0V5WWtka2QyRlpabVZsVUdOWFl6QmhWMlJVWTBObE5XZGtaVTVoVjJWblpubGpTbWRTYUdOaGRXVkRZVUpqVm1WalpsSmpSbVF3YUdKaVpXUkhabk5qZW1oWlp6QmpXbVp4WjBGbmQyTmFabVZpUldWRVpscG1SbWRpWmxab2VHUlRaVkZqYUdKV1p6UmxaR0ZvWlVwalRHWkhZVVZrVG1aYWFGbGtibU5KWjJsb1RtWlNZbmRvVjJkSFpIaGhVbVl4WmsxbVJtZENhR1JtWldodFpHeGpXR05YWmxKalFXUmFZMkZvUVdkMGFFWmpZbVl3WkhkaVlXSlpaREppTVdkNllrVm1NR05rYUc5aFJtaFZZV2huVVdGU1kzaGhRbVp0WldWaGFHWm5aR0prVDJWcGFFRm1aV1ZKWm5obloyaGxZVlJtZW1acllXdGhSMk5HWVRSb2RtUlhZVU5vY0dadFpXWmpTR1ZCWTFSblQySm9ZVkZuUldaVGFGWmxVV1JoWjBobFNHWlNZbXBqVEdodFl6bGlUbVZQWTBWalkyaFFZa2RpZUdkNFltdG1RMlpZYURsb01tSkRaVmRrWjJKV2FHVmtTR05aWWxObVUyUjRhR2htUkdoWFpGZGlTbWQ1WVdObFNHaEJZa0ptUW1KVllXeG9VMmhrYUhsa2MyVm1Za3BoVkdKTlkyNWpSV2hHYUhObFVXZENaa2hsVldkTVkwVm5WR1JhWlVKaFZtVnBaRUZsUW1GallqQmpaR0ZQWm1GbVJXYzFZbWxpVldGRllXTm9VV1phWkc1aFNtVlhaVVpsVjJKd2FIbG1WV1pZWW1SaldHVlRaR2htV1dSblkwcG9lR05aWVZGb1ZHZENZbEpsYldoYVpXMWhSbUozWmxabVYyZzVaR0ZuVW1kNFp6QmlaR1pXWVZaaFNtSXdaV0ZuTTJGd1puSm5WR0o2WW10blptWllZMUpoZEdWbFlVbGxNR2cxWnpKbVlXSXdaRGxqUTJSUmFGTmpSV1p0WlZaa2QyVlNaV1ZpVVdGM1ozUm5TV05qYUc1alFtRjNZVk5oUldkT1prcG5WMlp1WVZab05HUlRaVE5rWkdFMlkyRmxWbVZrWlZwbFJXVkNZV3hrYjJKR2FFVm1WbVp1WTBka1ZtWmFZM1ppVjJGdVlrNWxRbU5VWlcxa1VXVldabEZoUVdSS1lraGhSR1pYWVZwaGFXTllhSGhuYkdaeGFHVmxhR05vWlRObVUyRnJaSEJqUTJkSlkxTm5hR2RHWkVabmFXRndaVkpoUzJORFlrVm1NV1pQWVVaamVHSnRaMk5tUldGalkyUmtTR2hXWTFabFUySmtZa2RtZEdVMmFGbGxNR014WkhGbFUyaDNZamxvVTJkRmFFZG1VbVpOWldSa2JXSjRZbE5pVVdkRllsbGljMlJLWWtaa2MyRkdaRmhtTUdSR1lWcG1abUV5WWpsbGQyUktZVUpqUldkVVlrUmtRbVpWWVhwbFpXZEJaa3BuTTJobVprZGlPV0ZZWWxWblVtZG9ZbU5vWVdKQ1pGcGpSbUpLYUdob1oyUm1ZV0ppTUdRNFl6WmtSV1F4Wm5Ca2IySlJZbEZrUVdaYVkwWm5RbVUwWm5GblRtaDRZMmhvVTJoUWFHcG9jR0paWW1abWJHWjBaMmRuUm1kdFkyeGlhR1pHWldoamFHWnRaRVpuUjJoYVltMWxXV1pZYUVKalZtWmlZVEZuY0dSSVlVaGhVV0o0YUZaa1ZHSXlZbXhsTW1kbFptcGlaR1JFWWtwa1oyUTFaMEprUm1WVlpsRmpjMk5TWlZaaWVHWXlaRlZpYTJWSllsWmpaV1JJWlZsb1UyTlRZWGhsYUdkRVpWZGhWMmhLWVhsbVkyZElaR3hpU1dWSFlVZGxUbUpoWW1Sa1dHWm9aVXhsWkdFemFIQmpjR2RXWVRGaWEyRlJZa2RsVjJablkweG1VbVZYWnpoblVtZFNhRk5oTkdKV1pXTmlNV2g0WlVoa1pHVlNZMVZsWTJKWVpXZG1VbUZaYUVwbWVXZEJaakZtVjJScFpqUmlNMk5OWkVOaVRtUm1aRmRqYUdNNVozbG9VMmg0YUZsb1dXUmFZbWhtVW1odFpscGhiV0ZHWjNkaVZtZFhaVGxsWVdKU1kzaGlNR1ZrWkZabFZtWkthRzFuWm1odFpIaGhhbUpWWnpKaGIySkZhRVJtTVdKUloxZG9XbUZGYUZGa2FXUmtaV3RrT1dORGFGZG5ibU5HWW5SbVQyWkZaM05oV1dGUmFERmhiR2RwWkdObmJtVkNaM2RqVTJkRllVNWxTbUZYWTI1blZtZzBZa1puYkdReFp6WmpZV1ZXYUdSbFdtaEZZVUpuYkdOdlkwTmtNR1pXWVhaaFJXVlNhRTVtZG1KU1lYcG5jR2hXWWxKbE1tSkNZa1JtUW1kNGFHdG1SR2hGWmtoaldtWjVZMVpuZDJob2FETmlZMmRvWjFKbk0yZFZhRlZqZDJSWFlXRm9lbVpLWjBOb1UyWnBhRGxqWVdkSllWZGtVbU5vYUdObVZXZG9ZM1ptUkdkb2FEVm1UbVpYWlVKa2IyZFZaMlJpUTJNMVozcG1VMlZWWXpGbWNXVlRaM2RsT1dGVFlrVmhSMlpTYUUxbVpHZHVZVnBsVTJKUlpHaGxWbVUwWldSb2FHTkphR1psVldOQ1owVmlWMk5PWTFobFNXZ3JaazVsVW1FNVpFUmpVR1ZSYUUxaGJHaFFaVk5oTkdoc1prdGlRMlJaWTBablZXVlNaVXBpWTJaS1ptdG9aMkZMWmt0ak1XZG9ZMlJtUzJoRlptTmpLMkpTWVdob1VXWTRaMFpuVVdGdlpsWmhVbWd4YUVabGJXVkpaMUZqU21KSVpVbGllbUozWlZkblpHTldhRFZsVW1OUVlVZGpiR1pvYUVab2FHRm9aRzFsUm1KSFkxcGliV0ZaYUZoaVFtaFdaV0ptTVdOd2FFaGxWbVJHWlhSalZtTlhaVzVoV1dZMFlreGhhbWRGYUVWaFNtZEJaM2RoVG1SVllXZGtNV0kxWjFSaFEyWkpaSFptUVdGbloyUmtZV0pRWlc1bFdtVllZbE5vZUdJMVlVWm1WMlZYWkUxak9HUm1ZV3BtYTJSaWFFcGxaMmRqWVZwbVQyRnFabmRtUTJaUFlWUmxNV05vWkVWaWJHUkJZVnBvVFdNeVpHZGtUR2RTWWxkb09HVlNaRVZvTW1VNWFFaGxZMlo0WVU1blNHVmhaVUpvVm1aSlpWVm9SV1prWVVWbVRHaHBaMEZtV21OUlltMWpiMkU0YUVaaVEySkNabGhrVUdScll6aG5OV2hLWkVoalRtUkxaVTVvUm1kelpqQm9ZbVJ0Wmsxa1JtaEhaM2xoVVdkVllrTm1SV1J3WjFSalZtaFNhR05vTm1STFpFUmtWV0p1WWtKb1EyZFJaazFpUm1SV1owbGhVMlJhWWtWalpHVXlZVTFqTVdKMFkxcGlVR016WTJoaE1tSkZaR3RoYzJOWllWRmhNV0ZzWm1salkySnVhRUpoZDJkVGFFSmxOV1JLWWtoaWVtZHJZWEppUkdKdVkyUmlOR1ZLWTNkbFNXVlZaVlZrYkdaM1pEWmlRMlJWWjFab2VXTkVaVUpvVFdjM1lVaG5hV0ZPWkZkb1EyRkRaalJvVm1aSVowWmtRbUpDWjBaaWJXRmFZalppUVdWb1pGWm5NMlZqWVd0alRtVnBaMUZtYTJWdlpsRm1ZV0pVWVZWa1ptWkJhREJqZDJGVlpWcGpiV2hhWm1obVkyRkdhRlppZG1oWGFHdGxZMkprWVVoaVZtZFZZV0pvVFdodFpIUm5lV1ZqWWpCaU1XZ3daMU5uTVdVeFpWTmxWR1pFWm1obFRXVkpZV3BuTkdWaVprVm1VbUZ6WXpCaFRXSXhZWGRuVFdKVVkwRmhkR05hWjJaamJtRkpZbWxoWTJaQ2FGRm5abVpUYUZGbU5HWTVaVTFoVW1ob1l6VmpUbUpwWVhka1dtVklZV3RuVW1WU1pXRmhRbUprWTBabFNtRm9hR2RuTldSaVpUQmxaR2g2WWtWbk1HRmtabTltUm1kVllXaGlVV1ZTWjNoblFtRnRZV05uYkdKYVlrSmtTV2hwWjBGblpXRkpaRVpoWTJkRlpWVmllbWMxWm1oaFdtUkdZbXRrYjJGVlpIbGtUV05FWjAxamVXWkphR0ZvVUdKV1lrcG1SbUpqWjJ0bloySkNZMVZrYW1WelpYUmhaV1pxYUVWbFRXZEtZMEZoZUdoTFpsVmtiR1ZyWlhGa1EyWkVZMDFuZFdWVlkwVmtjMmRQWVZWamJtUlpaVk5oVTJkNFkyaGxSR2hYWTFkbVNtUjVZbU5oU0doQ1lVbGhVV2gzWVVGb1kyTmtaRmhoUVdGYVpXUm1NbUpTWXpCbVZtWjRaVUZrV21OSGFGUm1jR1pQYUVWaVZHaHdZa1JsV0doWFpUaG1WR0ZQWkRGaWIyTlZZMk5vZW1jNVowbGtWV1pGYUdOaVVXTmFabTVoU21oWGFFWmpWMlJ3WW5saFZXTllZMlJpWm1SSFlrSm1XbUl6Wm1aamQyZG5ZVVpqV21abloxSmxkbUZoWjJ0bWRHWjNZVlpsVjJRNVpXRmlVbVY0WlRCb1pHaFdZVlpqU21Vd1kyRmpNMmh3WW1waFZHSlhaMGxrUTJKRVpEQm1PR2RSWlUxbloyTk5aaTlvVFdWc1owcG5VMk5HWlZkbVZtaHlaVVJrTUdGMFkxSmlVV2d3WTFwbGFXZEtaR3BpWjJZMWFFZG5NR2N3YUVabFNHSjZZWE5rTDJKSVlucGlPV0kyWldOa01XSmpaMUZsUldGQlpHUm9NbWhHWmxWb1ZtY3ZaMGRrUW1RNVpFWmhVbWd6WWsxalZHZFNaREpqWjJSV1kxTmhSbVJDWlVobVJXSkhabHBvZVdGV1kyaG1WV0lyWldOaVoyRXdaSEpvVm1Vd1pVcG9RMlJoWmxobGQyRlhaME5uUjJJNFlsQm5WR05IYUZwbWFHZGphRVpoVm1OMlpGZGxhMlJqWkdSblNHWldZbFprVTJaa2FFUmhNR1EzWmsxaVZXUXdZbWxuVldoRFkxWmxVMlZGWlVkb1VtVk5ZV1JsYm1oYVkxTmtVV1ZvWmxabk5HRmtZMmhqU1dORFoxaGxhMmhPWjFKaldXTkVaWGRpYkdWUVkxRmtiMlJIWkVkaE1XZG9aekZqV21aV1pWcG9NMkpNWkdwbVFXRklZVWhtUm1ZNVltWmpZV0pHWWpsalRXSmlaekZuWkdKalpGQmtWV1JrWkRkbFYyY3dZbVJuTVdSR1lsSm1jR0pNYUZKa01XRnNaVzFtWW1kR1lscG9aR1JqWVZoaVNtSmhhR1ptUW1jNVprUm1SbUpxWmpCbmNHaFlaVEJtYzJaa1lWaG5RbWQwYUcxaFptRklZa0ZsUW1oa1pVaG9RbVpJYUVoaFVtTXhZVlpuVldOdVpWSm1jbVJsWTIxbVRtaE9ZMkZrYTJaMFpFdG1TR2hyWkUxbWFHZFVZa05oTVdGalpWVmphMkpKWWxabVpXUklabGxsVTJKVFluaGhhR2hFWTFka1YyTktZM2xtWTJoSVpFRmlaV2hCWldoaWRHaGhhRXBoYm1Ob2FGZGhaR1Y2WlZKamJtaElaMmRtY0dWNVkxUmpRMmcxWlU1a1FXRkVaREJqV21kU2FESmtXbU5JWjJKblFtTk5abFJrWVdaQlpqbGlTV1pQWjBWbU9XVmxaMGxsZVdWV1psZGlWMmN5WlVsbWJXTllabGhrWTJGVGFGRmhlR1ZuWmpsa1RHaHRabFptVFdGT1owWm1NR2h2WTBsa1YyTnNaelZrV0dWSGFFNWpkMlZTWkhoaU1HUmtaVlpoVm1WS1p6QmlZV016WlhCbmFtUlVZVmRrY0dSTVpFUmtNV1pKWjFGaVdtVkJZVEZvTW1OaFl6Rm5TV1pTWmtkamVtTlJaM3BpV0dkQlluaGxUV0pEWVRCaVNtUkpaV05qYm1WQ1ozZG1VMkpGWlU1a1NtUlhaRzVvVm1jMFlsTm9NMmRrWkRaallXUldaR05tWm1WWVpEQm1kR1J2WlVGbmQyVXhaM1prUkdoQ1owNWtMMmRZWlVobVRtVmhZMUpuTW1KVlpsWm5SMlZzYUVKbFdtZEZhRU5vTldad2FGWm9hR1kxWldoaVQyUnNZMmhpTTJoQllYZGlTbUptWkU5bmFHVndZbVZoUjJkSFlqQm5WV1ZPWmtKb2RHWm9aV0puVm1KVllUaGxTV1pSWkRobVpHZEhZa1pqVldSVWFFTm5XR1pDWWxGb1dXTXdZakZtY1doVFozZGlPV1ZUWTBWalIyTlNaRTFpWkdKdWFGcGlVMlpJWm5wb09XTTBaV1JpYUdaS1preG5SMkpGWTA1a1dtVlpZVzVsU21WM1ltTm9SV0ZuWkZKalJHWkJaelJpWjJkTFpXZGtWbWd6WTB4amFXaEZZbVZrUTJGblkzTmplbU5oWVVGbWRHUkdZbUpqZUdoRlkxUmpZbVV3WjJSbGVtRkZZWGhsY0dSb2FFUmtiV0ZLWVZGaVVtRjRZa0poYldGallXeG1XV0ZXWVdGbmFXWlJZVkZtU21SV1ltTm1XV2RSYUcxaWJHSTRZMFppYUdGalpHUm5ZV0Z0WWpCaFlXTmlaRzFoUW1kWmFHUmxhbU4wWkV0bVdtTXhZbmhoV1doRFlraGphMkZWWlVKbk1tTjNZa3RpWTJKWGFFVmhVR1pWWTJoa1FtUnJaVlJpU0dGWmFISmhXR1ZCYUVaaFZXTk9aa1JpYjJaaFlrZG9VbVZTWmtSalJXTkhZWEJuYldGbFlWaGliR1pDWmxkb1IyVk9aMkZqWkdkWVpXaGxUR05MWW01b1dtVkVaRlprTVdScmFGRmpSMmRUWVRWa1pXWkRZWGxtZUdkR1pWZG5hV0ZCYUVwaFkyZDRaSE5vVkdSYVlrSm1WV0poWlZoblJXaGtZMXBtWW1VellVbG1UbWRRWXpKamNHZDVaRlZrV0dGa1pGaGxVMk5vWmpSbU4yTmlaakprVG1oNFlrTmpSMk5DWXpGb1pHaEhaRVpvZEdOV1lsTmpXbUpUWTFoamVHTlJabFZqVjJSV1lrcGlPR0pQWkZob1VXRlhaa3BuUVdGUlppOWhSMlZWWmxsaVVXWmxZMVZvZDJndlpXWm9hMlowWlV4aVNHRkhaMDVsWTJORlptdGhjMlZaWTFGamQyRlNablZsVjJWSVlrSmhkMlpUWWtWbFRXZFFZVVJoZW1aell6ZGtTR042WmpSa01XVktZVEZpWkdaU1oxSmtRbWRXWW05b1YyaFZaV3hoZG1SWFlrSmljR2gyWkVobFJtUnJaRlJtVW1JeVoyZG1WbU5UWWtab1FXUlVaa2hrYVdWTlpYRm5RbWRzWkc5ak5HaEtaR2RuU21RellWTmhhMkZ3Wms1bllXTlRZV3RpUm1WRFlXNW1kMk5WYUV4a01tRTFaM2xuWldOV1oyeG9kbWhGWkd4bVJXVktZVUppTVdGVlltSmtabUpJWkhCb2NXVmhZMnRvTUdJellsVm1RMlZXWlZOaVJXSkhZVkpoVFdoTFlqTm5jR1kwWWxGb2FHWldaRFJvWkdkc1lWRm1aV1JXWkdkblFXUk9Za3RpZW1Zd1ppdGpZMlJGWTBGbFdHTlNZVlptYjJSdVpXUm5SV0Z6WXl0b1kyY3laMnRtVFdKalluaG1RV2RhWTJGb1FXaDBaMFprWW1KNGFHeG9WbUpQWTJkbWEySjNabEpvZDJFMFoyNWpWMll3YUdoaldXRkdaVkpoYkdkdFowdGlXR1IzWWxaaFlXRnVaMHBrVW1Ga2FERmhaR2RMWTBaa2FXRTRaREJpVjJSR1puTm1lV0pZWjFOaWEyUnZaMWxoVkdkV1pXUmpUMlF4WWs1bFNHUlNhR3BsWkdGV1psVm9ibVJTWjNKb1pXRnRaRTVoVG1KaGFHdGxjMlpRWkVaaFJtZzRaREpoVkdWSWFEUmlaMmRGWTNobFFXSldZMHRuYm1GWmFGQmxVMlF5WVUxaksyWldZVmRvU1dNM1ptTm1SMkV4WlVsbVZXSXdZVlptWVdOTlpFaG1hR0pYWkdSbmVXVTFZVzVtUjJaNFluaGlaV0pZWTJwaWVHSkVabGhoYldnNVpWVmtSV1l6WlVabVNHTlBZMmRrYUdWSVlrbGlVbWcxWmtSbVYyTlZZMlJvVEdoVWFFaGpTbUZYWlVablYyRndaM2xqVldoWVoyUmtXR1pUWm1oaVdtSndZMWxoVldkQ1pscG9UbVpDWVZGbGNHSmFaMjVtZUdoM1lVRmxWMkZGWWxwbVJHY3hZM2hpVUdKT1pHaG5NR2QzWkV4aGFHZHpZak5tVW1kVFowNWpRMmRHWTBoaloyUlJhRnBpUldWNGFESmpaR1ZzWkVwa1EyZEdaVmhoYUdFeVlVVm5hMmR6WVVwaVZXZFZaMFpvYVdWaVowaG1RV1F2WmxsamEySk9ZMHBpVjJkdVpWWm1OR2RUWmpOaVpHYzJaV0ZtVm1ka2FGcG1SV2hDWld4bWIyaEdZa1ZtVldNNVlraGhNR1pOWnpaaFJtUkVaM05uWW1SRFowZG1SV0l2WTFOb1JtWkNaRWhqUldWSFkxcGllV0ZXWW1oblZtTnhZMk5qYkdoR1pUTm5WbU13WTI5b1RXUmhaVmhuVFdWSFlVUm1TR2cwWlZWalpXTkhaMWxoZFdSWFpteGxWbWQyWlZkbGEyaGpaV1JsU0dGV2FGWmpVMmhrWlVkaGRHYzJabGxrTUdZeFpIRmxWbWhCWmpobFFXaElaV3BuVVdKYWFFcG5WR0kxYUdGaFZXZDNaM2hsY1daa1pHdGxOV1JNWmtWaFFXZDRabHBtWm1OSFpIaGtkMk5hWkd0a1JtRlFaMU5tVldoMFkyNWtXV2hGWjNObGNtSmxaMjFrUm1GQ1kxTmxhR0pCWjJab1lXaEZZMUpqVFdSYVltcG9jMkpVWVdKbk1HWmthSHBrUldFd1ptUmxiMlJHYUZWbWFHTlJaMUpvZUdaQ1lXMW1ZMmhyWkhkalZtWm1ZakptWkdKRVltSm5hMlZHWTB0bFEyWkhZMnRoZFdoR1ptdGpVV1EyWlVabVEyTnNZbTFoWm1ZeVpERmpWbVZsYUd0bE1XWlZZVU5qVVdSc1l5OW1WV2R1WWxKb2NtWmxaVzFtVG1aT1pXRmhhMk56WlZCbVZXTm9Za0poYTJOVVowaG9XbU53WTFWbWFHWkJZbUpvUzJKRFowNWxRbU5CWlhob1FtSlNZVk5tTTJaYVozbG5UR2RJWkVKa1FXZEVZVVZtYkdaRlltRm5NMlpvWVdGaFdtWllaVTVvYkdaV1pUQmlaMlJEWWtGaFYySm9ZMWhpVW1WWGFHTm9XbVZZWVVkb09XWmFabUpqVW1WT1lWSmpXV2RTWTFaaFQyWlZaa1psUldGRWFHSmxNMkkxWmxkalFtRklabWhpY1dOVllsTmhkR1JZWWxGbVoyRkNhRFptV1dkU1lrRmxXV2RMWWxKb01XSjJZVlJsUjJGR1luZG5WbWRYWmpsallXaFNaM2hpTUdWa1pWWmlWbWhLWXpCbFlXUXpabkJrYW1aV1pqSmljR0ZFYUZKbWJHSnJhR0pqWVdWSFlWcGpNbWhrWVd4blNtSkRZMFpoV0dkb1p6Sm5SV1pyWlhObVdXWlJhREZsYkdocGFHTmpibWhDWlhkblVXSkJZWGhoU21oU1pETmhWbVYxYUZobGJXRktabkJoWm1neFpXUmhVMlJGWjBKbFJtWm5aRUZpTVdOU1lpOW1RV04zWmtKbGRtRlJaMWhoVG1OaloxUmhiV2huWlVwa1ZtRkdaa0ptVjJOQmFFZGpPV1o1WlVObGFHTldZV2xpV1dNd1kwWmhiR05TWmtWaGIyWlJZbUZtVkdaVloxbGhWMko1WVRWalZtVk9aRUZoVldGMVprNWpRbU5CWms5aVJHZHJaVGxpVldWR1pVWm1lR2hpWW1abFYyRmtZVkZrV1dnd1l6Rm9jV0ZUWTNkaE9XTlRhRVZvUjJSU1owMW1aR1Z1WTFwb1UyWlJZV2htVm1JMFoyUmphMlZDWkVab1UyUkNZVmxqUzJGTGFHNWljR2hoWVdOa1JXaG9Za1JpVTJKV2FIQmhNV2hsYUVWb2RHTXpaMlZuYldSc1psaGtWMlZTWkVGb1dtUmhZa0ZrZEdGR1kyWm1VV2hWYUVSbVltVjRablJvZW1aSGFIZGphR0p2WWtOb01XTmFZMUZsVm1kblpXaG9kbWhtWm01b2QyTldZbUZtYm1SS1kxSmtaR1F4WkdSb1MyWkdhRzFvYkdSb1lVWm5hR0pvWTIxbVJtUkhabHBuYldSWlkxaGtRbUpGWVdaaVZXVktZVWhvVVdSU1l6Rm9aR2RYWjJwbWRHSnlaRnBvU0dNeFprNWpaV1V4WTJ0bVIyVlZaR2hvV21kcllWZGhiV0ZXWmk5bFdHUnRabWRoVm1GbFowaGtXV1ZUWjFObGVHSm9ZMFJvVjJWWFlrcG1lV2RqWjBobVFtaEpabEZtTUdoc1pHRm5aR1JZWldoaFlXRmFabGRrU21Gd1pVTmtNV1pyWTFsaFJXSlRZMk5sVEdoWFlUTm9SV1pTWjBKaVYyRmFZMGhtWkdWU1prNW5VbUpsWVhoa2VHUkZZMlZvYTJkaloxRmhXbUZ1WTBwb1YyaEdZVmRrY0doNVlWVmtXR2RrWkZoaFUyZG9hRnBuY0dGWlpGSmxXV1ZaWmxwa1oyUldaakJrWm1KdFlrVmljMkZXWkZkbVpHZE5abFpuUW1Zd1lXSm9WbWhTWmpGbk9XZFJaMWhuY0dGcVkxUmpWMmh3WlV4alJHTXhaVWxqVVdKYVlVVm1lR2d5YUdSbWJHWktaVU5rUm1oWVlXaGhMMkpIWmpGb1FXUjVZMUZvTVdoc1kybG9ZMkZ1WTBKaGQyTlRaMFZuVG1KS1pGZGthV0ZvWlZObVUyTXpaR1JoTm1kaFlsWmxaR1JhYUVWaFFtTnNabTlpUTJWNFpXTm5jV05TWVZWbldXWTVZME5tV0daT1ptUm1RV1JxWVRoblZtTlFaVkpvYTJoS2FGSm9TR2cwWTFSb1FtaEZabU5qY21aTFp6Rm5hMlJzYUZobmJHTkZaemhuWVdaWGFFVmtWMk5IWVVkb1dXWlZZMXBpYldSWlpEaGtWMlpzWmxaa2RtaFhZMnRoWTJGa1pVaGtWbVZXWlZOaFRXaHFhRFJqTUdGSmFFSmxhMmRxWlVKbVJXVkdZMU5qV0dReVpuaG5SbU5rWkdsaE1XWTBZMUZuYUdkV1l6Um9aR1JvWWtwaFRHSkhZMFZtVG1SYVpsbGlhV0ZCWXpGaFNtUkNaREJoVW1oQ1pqRm9jR2R1WkdWa1JtRmFaSEZvWldOcFpXZG9SbVZJWTJ0bFZtSlZaa3hrVldKVlpGSm9VR2RDWmpsaVptTkxZV2RuYTJFd1lsSmlkMkU1WVVOaFJtZFZZbWhrVVdoU1luaGpRbUp0WjJOaGJHWlpaRlprWVdGdVlrcGpVbVpoWTBab1kyRkZZVlZoZW1jMVkyaG9WMlJTWjBGbWJtZFNaR2xtUldSNlkweG1SR0pWWjJKaFQyZDNabXRpT0doRVprZGhRbVpqWlZob1EyaEZZamRuVUdOcGFFbG1XbUZNWnpCblRtSlBaa0ZoUm1KalozaG5RV05VYUUxbE5HZENZbWhqUm1KMVoyRm5RV2R6WW1KbVVtaFdZbmRtUzJKSVpXbGxZMkZvWTBwalNHUm9aRUpuWVdaVlpHeG5ZV05rWTFobmFHaE1ZV1JrTTJSd1pYQmxWbWd4Wld0blVXUkhaVmhuU1doTVpFVmpVMkZrWlZsaFVXaEhhRGhvVDJkUVlWVm9RV2hVWlV0aFZtSnpZVXhpUm1SUloyaG9WMlZhWW1waE1XZzRZVVpoVjJKd2FIbGlWV1pZWW1Sb1dHWlRZV2hoV21Wd1pGbGxVbWRaWTFsblpXWlNaMUZoZDJkTFpGTm9aMkV3WTFabVUyaGtabFZrUW1SR1kzaGlVbVpIWmxaaWIyUm5hRWxrZW1OTlpIZGhVV1pYWTI5bFMySllaRkprVm1KR2FFdG9VV1pyWmpSaVNXUm5aVVZrTldSQ1oxRm5WbVl2YUU5a1JXUnpaRmxrVVdFeFlXeG9hV1JqWm01aFFtTjNZMU5qUldoT2FFcGlWMkZ0YURsbk5HSkNZMVJoU1dKMFltRmtVbUZvWlZKa1ZXVlZZbk5rZG1kWVoyZGhaMlJ4WWxoak1HSmpZamhuVUdkSFkwNWxkV2RVWm01bFRXRXZhRk5oUm1KQ1owaGlSV1ZIWVZwaWVXaFdZbWhsVldVemFGZG9SbVpHWmpOalZtUXdZMjlpVjJoaFlsZGxSV1pYWWxobWFtWk9ZV0ZpU21aVVlVbG5iMkpRWkhob2RHRjJZVVZsYTJFNVowcGxSbWhHYUZWb1NtSllZMjFpZEdjMlpsbGpNR0V4WW5GaVUyWjNZamxuVTJORlkwZG1VV1ZsWTAxbGVXSkpZa2hvUldWR1pYUm9OR0ptYUdwb2FHaE1aRWRvUldKT1lWcG5XV0Z1WTBwamQyVmphRVZvYUdKRVpGTmlWbVJ3YURsa1RHWkJhRTFpSzJKTFoxZG9ZMlZGWkVoaVJtVldaV1JrWVdWQ1lscGlSbWRQWW5oalJtSmhZVWxtVW1OUlpXNWlWV1ZuWTJ0a2NtVlZZa0ZrWTJGWGFGSmtNV00xWm0xaVltTldabHBqUW1WYVpFUm9SV2RrWjA5alFtVnJabEJqU0dGdFpVSmhhR1ZFWjBKaloyVnZaa2hvUkdkS1lYWmpZV1JJYUhobEwySmlhREZtY0daSWFFaGxVbU14WWxablZXRnVaMUptY21SbFltMW9UbWRPWjFsaGFHWTVaa2huUjJNd1lrNWxjV0ZIYUcxbVpHUXlZbFJvTUdaS1pVSmpUV2hFWmpsbFFtVlNabFZsYzJOSFlraGxRMlJhWVRoblRXTjZZM2RrU0doRVpWRm1lR05UWW1aa1NHWlpZa3RtVFdWNmFEVm9hR1JDWlVaalFXZGxaVmRoUTJSNFpWQmxWR2hUWVRSaVdXWkhZVzFuVG1GMFoyTmxlR2RPWmtoallXRkNZMVprU1dKVlowVm5ZMlpSWTFwamJtaEtabGRqU0doVVlqUmtObVpIWWtOblVtUmFZMGhtUVdoU1pYQmhabVpDWjFwa1RXRk1ZV3hvTUdFeFoyRmtSR1JKWmpGaVJXTkRZWFJvVldGQ1kwWmlSbVpUWWtka2VHRmtZamhsV1dKdVkxRmlhV1pEWkZObE5XaEVabFJtYkdoelkxcG5ZV2hIWmxwa01tVmtZV3hrU21GRGFFWm9XR1pvWVRKb1JXWnJaWE5rV1daUmFERm9iR0p4WmtwaGFtTm5ZelZqUjJZd1pUQm5abVZUWWxoaFZtaHNZbE5oZVdKTlpubGlTV0pCWVZKbldHaFJaREZpZDJaMFpWUm9NR0Z6WkhOb1dHRldaWGRoYUdKQlptNWxjMlZoWTFSbGJXaFJZeTlpVTJkR1lrSmxTR2RGWWtkaVdtWjVaRlpoYUdoV1puRm9ZMlpzWkVaaE0yTllaM2htTldObFkwbG5SR1pKWjFsa1ZHRnVZMGxqVldKbFpESmtXV0V4WVU5aVFtVjNhRGhpVm1OQ2FGSmhXV0ZYWVVKbVJtVmpZazVoZVdSalpERmpUR1ZSWW1oaWFXZFJhR2RpUldGQ1pWSmtVMk5aWjFsblNtUkVaMk5vVW1kR1oyaG5NR055WTJabmVHVjBhRWhpVFdSclkwNWpXbVZaWlc1bFNtRjNaMk5uUldWb1kwUmtVMkpXWVhCak1XVmxZVVZsVFdOcVkwMW1hV2hCWTBWbVZtWXdaRkpqVjJKUWFFVmpiMlZLWkVWaFJtSXhaRmRvU1dWVloyUmpkV1ZGWVRGaFpHZG9ZVWRtVjJOS1lWRm5VbUY0WkVKaGJXRmpabXhvV1dWV1oyRmxibVpLWTFKblpHUXhaV1JoUTJoUlltbGxSV2h2WTFKa1VtVlpZM0ppVldkVFkzTm1NV0pMWTBObGIyRlJZMkpvTUdGa1kwaGlSR1ZTWlZKbldtVmxaMGhqVW1SeVpXVmxiV0pPYUU1aFlXVnJZbk5qVUdSVlpHaGlRbVJyWlZSa1NHTTBZbWxqUjJOblozUmhSMlprWm1wa2RHUllZa0pqYkdoamFGSmxRV05IWkVwbWRtVmpZVVJvTkdoa1pFUm5kMlJXWVZSa1pXZFdaRXBtVEdSa1lqTm9jR0Z3WlZabE1XZHJZVkZqUjJOWFkyZGtUR2RTYUZkb09XSkdZMWRpZVdOWloxVm5WMkZTWkU1bVNHZGhZVUpoVm1KSlpWVmhSV1pqWVZGbldtaHVaRXBpWm1SRVlXdGtRbWQ1WkZWbldHRmtaMWhuVTJab2FGcG5jR1JaWWxWaWMyZDVZVnBqYUdKU1pHMW1XbVZ0WWtaa2QyRldaVmRoT0dGTmFFSmxhMlk0WTJSaFIyUXhaVXBsY0dKaGFIcG9UbWh5WVZob1IyUk9Za1pqWldScWFIUmxLMmRGWjBabE9XRnJhR0pvV0dKb1owTmtSbVZZWjJobE1tUkZaMnRoYzJaWlpsRm1lR0prWkhOaFNXRnBZVWxpTDJOSVowRmxkMkprWWtGa2VXVlZaamxuVW1KVGFEaGxhV1pKWWxObFoyZE5aMUZpUm1nd1lYQm5XR04zYUVKb2RtaEVZVUpuVFdod1lrVm9hbUV4WmxGblJXSjVZMFpuWVdGQ1pteGlRbWRRWlZKblIyZHdabmxrUW1SQ1kzaGpjV1JMWkZoaGRHRXpZVlpuTUdWdllsZG9ZV2hYWTBWbFYyUkhaRWRqV1doVlpFMWlRMmhqWVhwbFkyVkNhSGhpYW1WallrVm5ZMlprWTBoaFZtZFdZVk5pWkdaSFpIUm5ObWhaWnpCb01XZHhZbE5rTUdkd1kyVmxUMkp0WlZKalRXWmthRzVtV21aVFlWRmthR0ZXWWpSbVpHRm9aa3BvVEdGSFowRm9lR0phWm1ab00ySkpabmhvWm1acVlXTm1VR2hDWldkbk1XUTFZbFZvYTJKMFpETmxaV0p0WjJ4a1dHUlhZbEptUVdKYVkyRmpRV2gwWVVaaFltVXhaR3RrVkdaaloydGtZMko1WVVob1ZHSm5ZMmRtV0dOQlpEaG1XV2RZWTBSaGNHUnRZbU5rYkdKWlpWWmxZV1p1WlVwb1VtaGtaekZrWkdWTFlraGxhV1I0WldoaFEyRjRZbWRoZVdoR2FFZGtlR0p0WWt4a2JtWnNaMXBqWW1VeGFFbGhUMk5JWmxGblFtSldZa1ppTTJkU2FERm9XbUpJWmpGb1RtaGxaVEZqTUdOSFkxaGxhR05DWTNOaVFtRllaVnBtT1dKVVlUQmhTbVpJWjJWb1NHWjNhRk5oUW1OQ1pVWm5VR1pYWkZkbGIyWTNaR05pU0daYVoxWm5VV1l4WlRsbFVHZFpaRWRqZEdabFlXWmtibVJhYUhCb1dHSjRaa0ZsVVdkRlptNW1WV1ZNWWtWa1YyTTRabUprUldGNVpXUmlUMlpoWVVSaWJHTklZbUZuUW1KV1lrbGpWV05GWW1Ob1VXZGFZVzVtU21oWFoxRmplV2R6WVdkaVZXaFVaR3hrV0doV1kzaGxXV1E1WTB0aFZtYzVaa3htWVdSSGFITm1jV1pMWVZSbFdtUjNaMWhvYldjNVlWTm5WV05SWVdkaFNXWlNaV3RvWkdRd1pHSmxXR1p2WVcxbVVtSkhZVnBrYUdORVpqRm1TV1ZSWVZwalJXVjRaVEpuWkdSc1pFcGtRMk5HWVZoa2FHWXlZMUprTUdSemFFWm1VV0o0YUdSaGFXaGlaa2RrTldSMVoxTm5SbUZLWkdabFVXaFdhRGxvTkdKVFpUTm1aR1EyWW1GaVZtTmtZVnBrUldSQ1pXeG9iMmRZWW10alZtTnJaa1JqUW1KTlpUZGxSR042WjNCalFXVlRabEppWkdWa1prRm5VbWhqWjFCa1JXVkhaVEZoZVdKWVltZGxUbUV2WVZwbU1HSktaR2xrVm1Jd1luZG5WMmhKWlVkbVoyaE9aRTFsYldOWlpsVmxXbVJ0WWxwaWFHWmpZa1puVm1kMlpsZGthMk5rWlV4aldHRkJabVJrVTJGTllXMW9kR0p1WTFsa01HaFZaaTlpVTJONFowNWhUMk5GWmtobFZtSmhhR1psTTJkWlpFOWxVV1pvWWpGbmRXWlpZM2RuWkdWWmFFUm1WV1ZPWldabldXVnFaM2htTldKaFp6SmhTbVZFWTFOaVZtTndaekZpWldORlpuUm9NMkZsYUcxbWJHRllZVlZsVm1aWllWcGlaR1ZSWVhSalRtSkxZbEpsUldoUVptTm5NR2hrYUdsaFFXaEZZVFZsYjJWVFlsVmxhR05aWmtGa1VtSkNaRFJoWW1ORlptZGtWbWhsWVRKbGRHZFpabVpvYkdaMFoyZG1SbUZ0Wkd4aWFHVkdaMmhvYUdadFpVWmpSMkphWkcxaldXZFlZa0puVm1aYVpYaG9VbUpJWmtGalFtVXhZa1JoVW1FeVprWmpOR0ZpWmpKbVRtUk1aR0ZoWjJRd1lVZGpXR1pxYUhCa2EyUlVaRWhoV21neVlsVmphMmRKWlZablpXVklaRmxoVTJoVFozaGxhR2hNWVVSalIyZEtZWFprWTJaRVkxcGhTV2RZWTFablpHZEZaV1JuVjJSc1lXUm9abVJ1WjFwblJHTldZVEZoYTJWUlkwZG5WMmhuWTB4bFVtSlhaamhsVW1SRlp6SmlPV2hJYUdWb01XaDRaVWhqWkdOU1psVmhZbVpZWTJwb2FHZGpaVXRqVTJaV1oyWmtSMkZWWTBKamVXWlZaRmhpWkdGWVpsTm1hR1phWW5CbFdXVlNZbGxqV1dOYVpHaGhVbVIxWlV4bWJXUkdaM1JtVm1GVVluaGpWV2hQWVVaalZtaFZaMFZvYUdod1pqbGxXbU14WlVKaWFtRlVZbGRoY0daTVowUm1NV1JKWTFGaldtZEZabmhrTW1Sa1oyeG5TbVJMWjFWa1NHRm9hSEprUldabloxVmpXV2hUWjFaaGEyRjBZbVZtTTJaNFltRm9VMlZGWlU1alNtWlhabTVsVm1JMFlWTmtNMlprYURaaFlXTldaR1JtV21kSFpVWm9RbWh2WTBabWEyVlZZbkZvUldKUlp6Rm9lR1pYWTFobVRXZERaMVZqVjJGRlpGcGhXV1ZzWWtKblNHZEZZMGRtV21KNVkxWmphR2hXWjNGblkyRnNZMFprTTJkV1p6Qm5TbUZtWVdGblYySnZZMHhqUjJWRVpFMWpWV1JpWWtka1dXWjFZbVZrVm1Wc2FFWm9WMlJyYUdOaFpHaElZMVpuVm1oVFpXUm1SMkYwWXpabVdXY3dZakZtY1doUlpqQm9XbWhUWlVaamJtVnNaMDFpV1daSFpVNWpTR2RWWWxGaVFtaDRaMlZpYW1Kb1pVeGhSMk5GWjA1bVdtWlpaVzVvU21kM1kyTm1SV0ZvWVVSbFUyRldabkJvT1dWTloxVm1kR1E0WkZwak1tTnJabHBuVjJkU1lXOWlXbWRKYUVGaVNtaEtZVkprVW1oRlkxUmpZbVV3WTJSamVtRkZhREJsWkdKdllVWmhWV0pvWTFGaFVtRjRabWRuZVdaUFkyaG1PV0pIWjFwalFXY3dhR1JsVDJkQlpFSmpTMkZEWnpKaGJHSXpaRUZoZDJVeFl6RmxRV2hYWlZwaFoyVlpaVlJtVm1GallsbGpNMlZDWjBoa1NHSlNaREZtVm1oVmFHNWpVbUZ5WVdWbWJXRk9aazVtWVdaclpuTmtTR2hDWTJ4aVoyRjBaMGhqTTJKblprcG1SMlJuWlhSb1UyRk5aMGhuV1dkUVpsTmpkMkUxWjFkbFZHZElZMFpoYm1SalpraGxXbVZKWTBOa2EyaENZa0ptV0dReloyaG1UR2hrWlRObGNHVndZbFpqTVdKcllsRmpVbWhJWjAxamFHSlNhRmRtT0dGU1pFVmxNbWc1WWtoaVkySjRaMDFrVW1kTFpsVm1aR0ZKYUVGbE1HVmpZMDVvV21acVpYaG9aV1pHWXpOamFHUnJaVkpsUjJOT2FFUmhWMk5SWms1bUsySmtaWGRoWTJOaFltSmplR1ZvWVUxb1dtUnRZa1pvZDJkV1pWZG1PV0poWTFKamVHWXdZbVJtVm1SU2FFNW9NR1ZrWVc1a2IyaDBZbEpvVjJKb1lWcGhTR1JWWVZsbFIySm1aMFpvTldSclpGbG1NR05PWldKaVJtSXpaa1ptTm1WUFprVm9jMlJaWlZGa01XZHNZMmxrWTJKdVlVSmxkMmhUWmtWaVRXTmpZbGRtYldWb1pqUm9RbU5ZYURsa05HaGxZMnRpVm1KUVkwSmlaMmN4YUhka1JXaHNaWGhtSzJKQ1oyaG5SbWh0WmxObU1XVnJhRlJvVW1jeVkyZGtWbVJUWkVablFtZElaRVZtUjJSYVlYbG5SV1ZDWVZaa00yZGpabWhtT1dVdmFGWmtWbU4zWWtGb1kyVllaRTFoUVdSRVkxaGpVV1ZEWjJSaFYyaFNZVzlpWm1KSVpUbG9kbVZYWjJ0bVkySmtaMGhoVm1oV2FGTmpaR05IYUhSa05tZE1ZekJsTVdjellsTm5NR2RHWkdGaFJXaHVhR1JuWW1OWlpHMWxSbWhGYUZWaGQyVmFabWhpV21oU1kwSm1RMlJCWlRKbWJHWmFabGxpYm1GS1lYZGtZMkpGWm1ob1JHaFRhRlppU1djMllXUmhhR0Z6WTJ4a1RtZFVZekJvV1dGRVpGVm9iR1pLWkV4blVXTlZaRTFqU1dSV1kyaGpTR05pWkRGbWNHZDZZVmRsTUdJMVltdG9VR0l3WjJoaFVXVlNZM2htUW1kdFpHTm5iR1JaWkZaallXaHVZVXBuV21SUFkwWm9hMk5oWlZKaFEyZFpaVEZqVjJoVlpIZGlMMkZTWjBObFRtTnZaazVsUTJKQlpGSm5UR1puWVRSbFEyTklabEZqUW1aV1pVWmlRMlJGWld4aVQyRlVhR05tUldkS1pGRm5WV0ZRWVZkaGEyRlNhSFJqVkdORFlqRmtZMmRWWjJ0alNXZFdZbVZvU0dOWlpWTmlVMko0WVdoblJHVlhZVmRrU21WNVpVcGlhbUpGWVdGbVVXVjNaa0ppVjJaWVlqTmhhR1pNYUdSbU0yVndabkJvVm1JeFkydGlVV1pIWWxkaFoyRk1aVkprVjJJNGFGSmlXR05IWlRsallXUmpZWGhqUldaVlpsQmpSV0ZqWmtKaVNHRm5Za0ZqVTJWYVlXMW9PV1JNYUVaa1ZHTTBaM0poUVdSVVpFbG5XV2hFWWtKaVdXRTVZV1ZpYW1oM1lsbG9XbUZvWTFKbWJXZGFZMjFtUm1aM1psWm5WMlE1Wm1GblVtWjRaakZrVTJGV1lsWm5VbVo1WldGak0yVktaWEpoUjJKWFluQmxWMkpFWVhobFkyZFpZVTFrUldSV1p5OW1aV1JzWjBwblMyaFhZVzVrYUdGeVpVVmlhMkZ2WkVwb1UyTnNhRlpvYVdkbFpXcG9iR2QzWlZaa1ZXaE9Za2xvVTJOdVluaG1lR0ZTWXpGaE1XSTJhR0ZrVm1ka1lWcGtSV1JDWW14aWIyZERaakJsVm1WMlpFVmtVbVpPWm5ablVtY3paRVprUjJkRFlWTmhlR0pSYUVSamFHWnJZMHBoVm1kVFlrcG5kMlZXYUdobFVtY3paR05oWjJWVlluVm5RbVozYURsa1dtZE1aREpuUm1FelpsTmlhbVpTWTFab1VHaDNaRkZuTUdKT1kyaGxUV054WmtOa1JXZGpabUpsUjJRelpqbGxVMmhrWWtkbWRHSTJaRmxvTUdNeFkzRm5VMkYzWlRsblUyVkZZMGRtVW1KTllXUm1ibWRhYUZOaFJtZG9abFZsZUdKUFpVVmxSV0ptWkZkalVXVXdaR0ZsU21kNmFEQmlNbWhqWVVObGEyTlNZMGRoZUdoellYTmtSMlZvWkRSbGVHRlFhRU5oZDJGR2FGZGhVbVpaWkdablVXTm5ZM1JuUm1WaVozaG9SV2RVWldKak1HWmtaSHBvUldFd1ptUm1iMk5HWTFWbWFHRlJZMUpoZUdOQ1pIVmxaV2RvWnpoaFZtZGtaRE5uU21kUllWcG9NV1UxYUVka1JtaHRaa1ZoTVdkR1lXZGpWbVp0WlZkaWFXWk5hSGhqV1dSUllsVmhZMlJKWjFGb05XTm1ZV1pqUldFNFkwaGxSV1I1YURGaGFtSk1ZMjFoY0dORmFGbGxNV1JCWld4aVZXSm9Za0psYTJoVVpraGtXbUV5WTFWbGEyUkpabFpuWldKSWFGbGhVMmRJWkZabWEyZFNaMWRtVTJGd1pubG5ZbUpZYUVKbldXTlVZekppVG1KaGFHUmxXR1ZvWWt4aVpHWXpZWEJtY0daV1lURmhhMmRSWmtkalYyWm5aMHhsVW1OVFprVmhVbWRFWm0xbE9HSlVhR1psVm1JNGFFTm1TbUpzWTBsaFkyWkhaa1ZpYzJZMlpscG9ibWhLWkZkb1JtSlhhSEJpZVdaVllsaG5aR0ZZWjFObmFHRmFaWEJsV1doU1pGcGpUR1ZhWjJkbGJHRnRaRXhpYldKR1pUZGtWbVpUWVVabVFtZGlabEprTUdSa1psWm9WbUZLWlRCbllXWXpaSEJsYW1GVVpWZG1jR1JNWWtSa2VHSjBZbGRvV21kRlkxSm5iV0ZrYUd0bk9XTm1aRVpsVkdaYVpTOWlSV2hvWld4a1pHUkdaSGRuZDJWM2FGQm9TR1pCWkd0alFXaEJhRzlqWVdKUmFGWmlPV00wWkZObE0yZGtaRFptWVdWV1oyUm9XbUZGYUVKbWJHUnZZVU5qTUdOVmFHMWhWbVY0YUU1aGJtSmlZbGhtVFdKVVpWSmhNbVpuWVZablUyTkdhRUpsU0dKRlkwZG9XbVI1WkZabGFHRldaM0ZrWldOc2FHdGhhbVZJWjNkaVRtTkdaMXBqZW1oV2FGcGpWR2hEWW1SbFdXRkhZVk5sYjJacloxQm1iR0pXWld0alVtVXdZV1JvVkdGR1pVWmxiR0UwWVdSaVIyRjBhRFpvV1dNd1pURmhjV05UWTNka09XSlRZVVZtUjJWU1owMWlaR051WkZwbFEyUlJZbWRuYUdoc1ptUm1hMmRaWWtSb1ZXRlNZMEpsV0dGTVlucG5ZMk01WlVsaWQySkZZMXBtUkdWR2FIQmtlbVZtWkcxaFJtUXphR1ZtYldGc1lWaG9WMlZTWjBGb1dtUmhZVUZqZEdWR2FHSmplR2hGWTFSaVltUXdaV1JoZW1aSFpuaGxUV0ZuWjFoalFtUjBaR1ZqUTJKc1psVmpjbUZRWkZGa1VtaE5aR0ZtYldRNVpsSm5UMlJHWkdSaFZtTkdZMjFtZEdGcVkwWm9aMkZLYUcxbldHaFhhRnBuTldWWmFGUm1OR1JSWms5bFJtSnZZWGxuVm1WR1pFMW1RbVJUYUdob1ZXRTFaa3RvUTJkSllWVmtXV0pzWTI5aldtTlhaWGhpUW1jcmFGUmlSR1puWW5wbVFtaFZaMHBoU0dWallVZGhZMmRGWkZGamFHTkdaRkJoWTJneWFFcGllV0ZqWjBoblFtUkpZVkZpTUdSc1oyRm5aR1ZZWTJoblRHUmthRE5pY0dKd1prRm9lR0ZHWVZwb1UyRnRhRnBqUjJoQlprTm1TbU5EWlZkbmFtVlZhRU5pWTJaNFkyaGlTR0pLYUdoaVZtSlZaVlZvUm1KWlowZG9ZbWd4WVdobVYyUkdhRmRrY0dONVkxVmpXR2hrWlZobVUyZG9abHBvY0dSWlpsSmtXV1pTWjFSb1FtTlNZVzFrV21odFowWmlkMkZXWjFkak9XWmhaMUpuZUdJd1pHUmhWbWhXWTBwak1HWlBaRlJrT0dFemFFZG1SR05uWjBaalJHUXhaMjltTm1aYVpFVm9lR2d5WW1SbWJHTktaME5sUm1kWVkyaG5NbVZGWTJ0bGMyTlphRkZoTVdWc1pXbGhZMlpxWkRsbFlXSlRZVVZqVG1aS1lsZG1ibVZXWXpSblUyVXphR1JtTm1kaFoxWmhaR1JhWTBWaVFtWnNZVzlvUTJVd1lWWmlkbVJFWldoaFRtZHVaVVZuZW1GMGFHRmhSbVZIWjFwb1dXUkVZMUppTUdKSmFGRm1hbWM1YUhsb1dHaFJZMmhuY1dKS1lteGlhR1ZrWWxaaE1HWnZaMWRtWVdGWFlVVmtWMlJIWTBkbldXaFZhRnBrYldSYVkyaGlZMmhHWkZabGRtRlhaV3RvWTJGa1pVSmlNV2RWWVdKbldHSnRaSFJuTm1KWlpUQmlNV1p4YUZObmQyYzVaRk5pUldGSFpWSmlUV2hrWVc1aVdtZFRZVkZrYUdoV1lqUm9aR1puWkRGa1RHRlVZa0ZuYzJWUlowMW5XR1ozWXpsalRtRlJaMVZrVFdGSFlYZGhUbWMzWjB0aWQyRTBaV3BvWTJkcVlURmlXbWREWVd0bVZtVmlZMHRpVm1KcmFGaGxUR05yWldkbVltSm1aREJtZEdaNloxaGxWV0UxWW10bVJtRlNhSGRuV1doRVpXdG9UbU52WTFCbGVHUk9aVmxqVDJaVVlYTm1UR2hOWVd4bE5XWm5ZMFppYldOc1kyaG1SbU5vWkdoamJXUkdaa2RtV21KdFoxbGlXR2hDWlZaaVltTXhhSEJvU0dWSVoxSmlNV05XWlZOa1NHRlJaQzluWkdKRFkwRm9RMk5QWVdoalNXWklaVUpsYkdKblpIUmhTR1V6WTJkbU4yZEdZbmRsT1daaFpFdGthV000Wm1Wa1UyUXdhSGRoVEdaRlkwUmxSbU00WWxCaVZHUlZZMFptUldKQllVRmtRV1ZOWjBoblVtRk1abHBsTTJWYWFIQmlSMlpXWjBGaFkySk5aakpuWjJaTVlWSmpWMk00YUZKa1JXUXlaemxqU0daalluaGxUbWRJWm1GaFFtVldaRWxqVldaRllXTm1XV2hOWkdwaWIyUm1ZbEppYldKUllpOW5SbUpFWlc5bVJXWkJhREJuZDJaelkxbGhVbVV3WWtaaFdtRnNZbkJsZG1aaFptdGhkR1YzWTFaalYyRTVaMkZoVW1oNFpUQmlaR1ZXWmxablNtZ3daV0ZsTTJGd1ptcGhWR1ZYYUhCaFRHRlhZWGhuY0dKYVprNW9NbVphWXpKbVpHVnNZMHBtUTJoR2FGaG9hR1l5WkVWa2EyaHpaMWxrVVdZeFlteGphV1pqWW01aGJHTnlZbGxuYTJST1lVcGtWMk51WlZaaU5HaFRZak5vWkdnMlptRm1WbVprWWxwbFJXTkdaVUZoZFdoRFp6QmlNR1UzYUZkb1ZtRnZaamhrVTJoVVpEVmtWMlJEWm1wbmRHZGpZa1ZqYUdOV1pFaGhSR1J0WTFwaGFXRllZbmhsVldaNFlsZG9SbVZHWVROaVZtVXdZMjlsVjJOaFlsZGxSV1JYWlVkaFIyWlpaVlZpV21SdFpscG5hR1ZRWnpObk9XTjJhRmRsYTJSalkyUm5TR1pXWkZabFUyRmtZa2RuZEdRMlkxbGxNR2d4WlhGbFUyaDNZemxqVTJKRVp6SmxVbWhGYUVsaGFtYzBaV0psUldkU1pYTmlNV05OWVRGak9HVkZaVk5qYUdWd1pWcGpZV1pYWlRsbGQyUktaRVZrV1doUllVSm9VbU5OWVRKalVHSlZZazVrYm1aa1ptMWhiR05IWkZSbWVHSkJaMVZpWVdSR1pqaGpUbVpLWkd0aFNXaGthRWxrWjJSSllpdG5VV05CWXpSamVXUlZZMFZpUm1GYVpHSmxVbVpDWlcxalkyUnNZbGxuVm1OaGFHNW5TbUZTWVdSbU1XZGtZVXRtUm1WdFpHeG5hR1ZHWldoamFHZzRhRVpqUTJJNVlrMWpXV05ZWmtKb1ZtZGlaREZoY0dOSVpVaGxVbVV4WjFaaFZXUnVZMUpuY21WbFptMWxUbVpPWm1Gb2JHZFJaVkJuUW1Kc1ltZG1kR1JJWXpOa1oySTNaa1prZDJRNVoyRmlTMk5wWmpoalkyZEhhRVpsTUdoWVpGVmhWV2hvWlhsaFkyZElaRUptU1dkUlp6QmxiR0ZoWTJSbFdHVm9aMHhoWkdNellYQm9jR1JXWlRGamEyZFJZVWRqVjJKbllVeGtVbWRVWVhObFptWlJaRVJtYjJaR1pVMWthMlpGYUZabVMyRlZaM2huUVdOUllrVmpjMkpSWW1SbU1taFNabGRvUjJaSFlXOW5iV2RIWVZSa05HVkZabEpsUm1SemFITmlUR2hGWmxablVtVlFZMFpsUm1OMlptRm9hMmgwWlhkaFZtaFhZemxsWVdGU1lYaG9NR1prWVZaalZtUktaakJsWVdVemFIQmhhbU5VWTFkbmNHWk1aVVJpTVdaSlpGRmhXbVJDWkdkaEsyWlFhSGRtUm1GTlpWZGpSR2N3WVRka1VXUlJZa3BvUTJOQ1pXNW1UbUpwWjJOaWJtSkNaWGRvVTJaRmFFNW5TbVZYWjI1bFZtRTBabE5pTTJOa1lqWm5ZV1JXWVdSbFdtaEZZVUppYkdSb2FFbG9WV1pXWVhaalJXZFNZazVuZG1OU1p6TmxUV0ZVWTFKaU1tUm5hRlptVTJoR1prSmlTR1ZGWVVkbFdtaHZaVlptYTJGR1ltdG1UV2RTWVRSa2JtTkVaMnRpU21SRGFFbGhVMlZvYUVab1JtZHBhSFJoVW1oTFkzbG5hMko2WVV0b1ZtWnNZM1poUkdGbll6bG5WV2RVWTJ4aWMySm1hRTFsVTJOWlozQmtTMlZvWm1Oa2RtUlNabmRoT1dKRFkwaGpSMkZTWW1SbVdXRklabHBrWm1KUmFHdGlSV1IzWjFCb01HSkdZa1prVm1WUlkxbG5WV1JOWmxSbmMyRnhZMDVvVldkR1psbG1XV0V4Wm5CbE1XZGxhRVZuZEdJelkyVm9iV2RzWTFobVYyZFNZMEZpV21GaFkwRmlkR2RHWkU5a1ZtZENZMEptWW1KM1lscGxlbVJFWjJ0b1pHUTBaVVJuYldWS2FGRm5VbVo0WkVKbmJXVmpZV3hrV1dWV1lXRm1ibWhLWlZKalpHSXhabVJsUzJWR1pHbG1XbWRNWWtabWFHUm9ZbTFrUm1WSFoxcGhiV0ZaWkZob1FtTldZV0poTVdad1lVaGtTR2RTWmpGaFZtZFZZbTFoZEdWeWFHTmhhbWhqWkVaaVNXVjRabWRoUW1oQ1lVRm1SbVZ4WWtaaVEyRTBZU3RoVEdKU2FHUmtSbVZRWVVSb1pHaEhaVVJvYUdKQ1ozQmhWMmhYWWtwa2VXaGpZa2huUW1aSlpsRmlNR0ZzWkdGblpHUllaV2hvVEdWa1pqTmxjR053WmxabE1XUnJaMUZoUjJKWFltZG5SR1pGWTFOaFpHSlpZMUZrUjJkRlowdGtUbU5zWlRSa1NXTlBZbXRpZUdaSFkwVm1kMlE1WVZKblRtRkNZMFZpV21WVlpGTmxPR0pVWWtKaFdHZzRabGRrVTJob1p6Rm5jR1ZqWmtKaU9HWlpabVZuWjJob1oyMW5abWh0WldoamQyZERZVlZpVm1SaFlsSmplR0V3Wm1SaVZtTldZVXBpTUdWaFpETm9jR1JxWmxSb1YyUndhRXhrUkdJeFowbG9VV2hhWkVWb2VHVXlaV1JtYkdWS1lrTmtVV05VWmtGbUwyRlJZMVZsVm1OV2FFSm5hR2hSWjNSblNXTkRZV3hoSzJkRFozZGpjMlJKWTBObFFtaFpaek5oUkdSNllVbG5ZbUpRWkZaa09HSlphRWRvVW1GV2FFTm9RMlV3WWxabmRtaEZZMUpuVG1KMlpWSmhNMkZOYUZSblVtTXlZV2RpVm1aVFlVWmpRbUpJWkVWblIyaGFZM2xpVm1Sb1pWWmxhV05LWldoaWEyZ3Jaa0poUldGU1pHSm5UR1pEWlhobFdtRlRZMnBuT0doaGFFcGhVMmMwWW1kb1NXaHFaVmxoWjJKSVkyZGtTbVE0WmxOblZtWXdaMVJoWkdWSFpVSmlObU5qWkVWb1VtRnhZVlpoZUdGT1pGTm1RMkpIWlRGaVRXSkxaV3hsZUdkVGFGRm5hR1ZXYURSb1pHVm9aa3BpVEdSSFowVmpUbU5hWmxsbmJtZEtaWGRpWTJoRlptaGlSR1pUWVZaaWNHUXhabVZvUldSMFlqTmpUR2hwYUVWb1pXSkRZMmhrTldOVllreGtWV1JaWTB0alVHZFZZMmRoWkdGTVprRm9PR0Y1WWxGalUyWlJZMjVpVldKUlpqQm1lR2RGWkhobFoyWnVZbU5tYkdjd1psWmhaV2hJWVhSak4ySmtZakZsWkdoTFlrWmxiV2hzWkdob1JtTm9aMmhoYldoR1pVZG1XbUZ0WTFsb1dHRkNhRlpsWW1VeGFIQm1TR0pHWjBKa1JtY3ZZbFZtYm1KU1pISmtaV050YUU1aFRtaGhaMnRrYzJWUVlsVm1hR1ZDWkd0aVZHTklaVnBuTW1kVloydGhTV0pXYUdOblJHZGpabE5sVVdkQmFGWmhSR0pVWTFkaWRHUXJZbGRqYm1WQ1prbGhVV0V3Wld4bllXaGtZMWhuYUdaTVptUm9NMmR3Wm5CbVZtWXhhR3RuVVdkSGFGZGxaMlpNWVZKb1ZHRjBaVnBpVjJScVpuaGhTbWhLWjFGbVJtSktZMDFpUldRd1owRmlUR1o0YUVwbFFXRkpaMnBoVFdGRFkxVm5SMkZLWVZsblZXWllZV1JsV0dSVFlXaGhXbU53WVZsbVVtTlpZMWxpV21Sb1kxSmtiV0ZhWjIxblJtZDNhRlptVjJnNVlXRm5VbVo0WlRCbVZtTkJZMUpoYjJnNVpFOW9TR1JSWW5Wb1EyWkRaMk5oUldWWWFGRmhjMlJsWTBwbWQyVlJaVE5qU21SRWFFVmxUbVpWWjFSbE1HTllaMUptYTJGT1pGcGpVV2d4YUVwamFXWlpaRE5sYkdSM1oxWmxSbUU1YUVwaFVXUnVZWGhrTkdSR1lqRm9NV0kyWldGaFZtVmtaMXBoUldGQ1kyeGxiMlZEWmpCbVZtSjJZa1ZpVW1OT1pYWmxVbU16Wmsxa1ZHRlNaREpoWjJoV1kxTmtSbWRDWWtoa1VtWkRZalJrTjJOQ1lsSmljMkZ1YUU1bWVHVjNZelJrUW1SU1lVMWlXV2hMWVdsaGJHZFlaVk5uWjJWV1pXSm9TV0pwWlUxaFFXTktZMFpuTUdOMVpsVmtNR0Z6WXpOalNHVldhRlpuVTJka1kwZGtkR1UyWlZsbE1HTXhabkZvVTJkM1p6bG5VMmhGYUVkaFVtaE5aR1JvYm1KYVlWTmxVV1ZvWVZab2QyZEpabXhtYjJGRFpGTmpNR2N3WlZWbFNtTjZZVGhrTDJWSlkyaGhSbUpPWWtObWFHTkpZakJrUzJacGFHZGxOR2hRWTJsa2QyRXlZMFJtVW1ob1lsbG5ZV0pCWlVKaVJtSm1aRUptWjJGVVlXTm1NV1IwWkhwa1EyVXdhRFZoYjJSVFoxZG9TbWRSYUZKamVHSkNZVzFoWTJSc2FGbGxWbUZoWW01aFNtTlNZV1JvTVdSa1lVdGxSbU50YUd4bWFHaEdhR2huYUdkdFlrWmlSMkZhWm0xb1RtTlVabWRrWTJOUVprWm5VV05MWVZkbFJtRkJhR0ZrUVdGRGFERmxiR05QWjFOaGMyZE5hRTlqUTJob1lVRmtSbUZzWmxWblJtWkhaMGhvTkdVemFGVm5hMlZyWlZaa1lXSnVZVGhuTkdOVFkzaG1hR2RFWjFkalYyWktZWGxqWTJWSVlrSm5TV05SYURCaGJHUmhZV1JtV0dKb1kweGtaR0V6WVhCb2NHVllabXhrVldjMlprZGlWMk5uWlV4blVtUlhaamhsVW1SRmFESm1PV0ZJWW1OaGVHVk9aa2hvWVdGQ1pWWm5TV1pWWlVWaFkyRlJZbUpqYW1aT1psZG1TR2R1Wm1Sa2VXVlNaMWhqTldkaVpsbGhRbVZhWjNCaFdXTlNaRmxuV1dkYVltaGtVbVZ0WVZwaWJXTkdZM2RoVm1GWFpEbGhZV05TWTNobU1HZGtaVlpsVVdSWllqaGtTV1ZwWkd4b2RHSkhaak5tYkdoR1psWmtkMlp3WkZsb1IyWjRaV3RtYldSTlltaGxUV1JYYUZWbFNHRkNZMk5qUldWclpITmtXV1pSWmpGbGJHRnBZbU5rYm1SQ1luZG9VMlJGWVU1a1NtZFhabTVtVm1nMFkxTmtNMmhrWmpaaVlXSldaV1JtVW1GU1lVWmpSV2RvWlZkblJXRnpaV2xvVm1oR1lqUmxaMlJHWWxOa2IyWmtaRUpqUTJSQ1kxVm5SMkpxWmsxblNXZFdaME5vVFdWVVlrRm5hR2N3WlhKb1kyaHNhSEJsTTJkU1kydG5UV0pYYUdSaFdHVXdZMWRqUVdKSFpEaGpWV2hQWTJ0b2VHZG9aMk5pUm1kV1pYWmtWMkZyWTJOaVpHUklaVlpoVm1WVFptUm5SMkowWWpaaldXSXdaekZpY1daVFozZG9PV0pUWkVWbVIyRlNaVTFsU1dGcVlUUmlZbVJGWkZKaWMyZ3haRTFqTVdNNFpVVmpVMkpvWm5CbldHUkpaRlJuYjJaNFlVbGthV1J6WTAxaVJHTlNaamhvVldaTVprVmhUV0l5YUdObU1tZFdZemxsVjJOU1lVRmlXbUpoWWtGbmRHaEdZV0puZUdKRllsUmhZbWN3WW1SbmVtRkZZekJoWkdkdllrWmxWV1pvWVZGalVtTjRZa0pvZFdOS1ptaGpOV0ZqWms5bVdHTjNZMk5vVFdSb1ptOW1SbU5TWmtSblFtRjJZbFpuVm1aQmFHNWxVbWhuWkZWbGNHaEtaVlJsVldVd1lVOWxNV1pKWTBkaFNHWlNaVnBrVm1GUllWaGtNV1p5YUZwb2JtYzVaVTVsWTJKclowbGxVR05FWVdwamNHSnJZVlJvU0dWYVlUSmhWV2RyWWtsbVZtSmxhRWhuV1dkVFlsTm9lR05vWWtSaVYySlhZVXBpZVdaalowaG5RbWhKWVZGak1HWnNaR0ZtU1dWVVpFRmhRMkZLWWtobVVXRnJZa1ZuYUdSU1ptWm1VMmg2WjBWa1JtTkNZbWxrWkdWUmFGRmxVV2gzYUVsbVRtZ3haVmxtYldKUVkwSmpNR0pLWkZWaFJXRjNZbEZvWkdkSVluUm1PR1pHWWxkamNHUjVaVlZuV0doa1lWaG1VMmhvWTFwbmNHWlpZbEpuV1dWWlpscGphR1ZTWlcxaldtTnRZVVpvZDJGWVlVZG1UbUozWVZKamVHWXdhR1JpVm1oV1owcGhNR05oWnpObWNHaHFaVlJuVjJod1pFeGlSR0V4YUVsblVXaGFaVVZoZUdneVoyWmhhR0ZPWlVOalNHUnRabFptTW1OQ2FHdGxTV1JWWkdGalZtSnNaMmxpWTJGdVkwSm1kMkZUYUVWaVRtZEthRmRtYm1kV1lUUm9VMmd6WW1SbU5tZGhZMVprWkdOYVlrVm1SV0V3WldkalVXZG9aRnBtYUdKU1luZGtaR2hvWTBob2VXaDBhR0ppVDJaRVl6Rm1SbWRFWWtKbFJXSlVaMVpuVjJjMVpsbGxWbVpvWWxab2NXWmphR3hpUm1FelpsWm1NR052Wmxkb1lXVlhZa1ZvVjJkSGFFZG1XV2hWYUZwaWJXaGFZV2hsWTJWR1pGWmhibWhFWW1kbE9XZFZZbFJuYkdoemFHWm5UV05UWkZsb01XSk5aVkpoVW1oclpFTmtSV05qWWxSalVXWm5aR05rUkdWTlkycGhUV2g2WVVabWFHUXdhRFZrWkdob1pXeGxUR1JEWWxWamNHUmFaV1ptYldZMVluZG1ZV1JGWjBabFJHTkdhRmhpUW1jeFptVmtSV04wWnpObFpXZHRZbXhrV0dWWFlsSm1RV1ZhWjJGblFXRjBZMFpuWW1kNFprVmlWR1ppYURCbVpHTjZZVVZuTUdKa1pHOWpVV0pSWWtGbFdtUkdZVUpoTkdoeWFFNWhlR0owWVdGb1QyVkRaSFJrWm1oT1owSmpPR2RNWmxKblFXZHZZblZsVldoc1lqQm9TR1pSWVVkaE5HWnVZbUZoU0daNFlpOW5ZbVV4WkhCblNHUklZVkpuTVdKV1pGVmxibWhTWm5KblpXZHRaVTVrVG1oaFpHdG9jMlZRWjFWa2FHZENZMnRrVkdkSVlWcGpLMkZDWldkb2NHRmpaVXRvTTJKb1pHWmlSR0ZzWlZWblRXaERhSHBpZEdjNFpFMW1lbWhuYUVwbFJXVlRZVzlqVm1OTllsUm9NR1p4WWtsak0yaEpZMjlrVm1jeFpFbG5VV2hEWjIxaFJXSk1hRmRqV0dGTlpWSmhRMlV5WjFwb1NHUk1hSHBuYkdKSVpXRm5RbVpXWVVsaVZXaEZaMk5qVVdkYVpHNW5TbVJYWkVaaFYyZHdZWGxvVldaWWFHUmhXR1JUWm1ob1dtWndaRmxuVW1aWllsbGhUV0ZzWW5kb2RtZE9ZbGRoT0dnNVlrVmxRMlpKWjFabVJtSlZaRkZvVkdGR1pXaGtiMlV4WVU5bFVtWnJaM05tUTJaVFlUaGtjV2RYWWpGbWNHSlNabHBrUldWa1lqSm1XbU5HYUhSb2IyVkdhRmhvYUdneWFFVmhhMlZ6YUZsaVVXRXhaMnhuYVdkalptNW9RbVYzYUZOaFJXZE9aa3BqVjJKdVpGWm1OR1pSWm01aU5XZFJZbUZpVm1oa1lscGtSV0pDWW14a2IyaERaakJrVm1GMlpVVmxVbU5PWVhabVVtUXpZazFqVkdoU1l6Tm1TV1ZXWlZGblFXVlJZVkJrVjJkVVoxWmxPR1pCWWtGaFVtZHJZVXRsWjJGclpDOW1TMkpDWnpsblIyRk1aVk5oUW1ORFlWaGtWMlEwWWl0bldtRnRZVnBuYUdkalkwWm9WbWgyYUZkaGEySmpZbVJsU0dGV2FGWmpVMk5rWkVkbGRHYzJZMWxvTUdReFpYRm5VMmgzWnpsbllXTlNZa05vZDJSR1pFcGxXR0puWVdaaFFtTXhaMmRvTTJWS1prVmxjMk4zWmxka1ZXSk9ZVk5pV1dkdFpVMWxUbVpqWkVablVtZG1aRk5oVldaS1l6aGhaV1ZDWm1SaU0yWk1aV2xtUldKbFpFTm9hR0UxWWxWbVRHZFZhRmxsUzJaUVoxVm5hR2R2WkV4aWFtSndZeTlsVDJoVlpXUmliMlpHWWxWamFHSlJZbEpqZUdGQ1oyMW1ZMk5zWVZsblZtTmhZVzVsU21OU1ptUm1NV1ZrWTB0aFJtRnRZV3hvYUdkSVpHdG1kMkYxYUZoblZHWldZVzlpVEdGRVpWVmxXV1pKWlVGb1oyaGxZVnBtYkdkNGFGWm1WMmRZYUZKak5HUkNaVEpoVG1OU1pXUmthMlZ6WmxoaVYyZDRaa0ZtTkdGVVlrTmtTV1FyWTBkaGVHZEZhR0psVG1WVVpFNWlabVpDWWtWbWIyRmhaMGxtYVdoT1lubGxaV0l6WjBKbVlXaFFZMjFqVG1aaFpHUm1XR05vWjB4aVpHUXpZbkJpY0doV1pqRm9hMlJSWkVkbFYyZG5ZMHhqVW1KWFlqaG5VbVJGYURKaE9XaFBZMlptZW1ac1lraGpZV0pDWlZab1NXTlZhRVZuWTJGUlpWcGtibUpLWVZkaVJtTlhaWEJpZVdSVllsaGtaR1JZYUZOaWFHRmFZV2hsU1daQ1psbGhWR0psWW5oalVtVjVZMkpqTW1jeFpHRm5WbVpYWXpsbFlXWlNhSGhuTUdOa1oxWm5WbVJLYURCaFlXWXpaWEJoYW1WVVoxZG5jR05NYUVSa01XaEpZMUZvVFdOQllWRmhMMkpLWVZabGQyVlZhRUpqTTJoWlluVmtVMlpuWlU1bWJtaEdZV2RpYTJOdFkwMWtlV2hSWXpGbFVXZEhabXhuU21WWFlXNWxWbVUwWjFOaE0yVmtZVFptWVdWV1pHUmxXbU5GWWtKbmJHTnZaVU5vTUdGV1kzWm9SV0ZTWVU1bGRtUlNaVE5pZEdoSVpVUmplV1pHWWtkaFVtSm9aekJpUTJkWVpWTm9hMlpuWjBSaE1tTTBhSEpqWTJkc1kzQm5NMkpTWVdwblkyVlhaMlJrV0dNd1lWZGpRV1JIWmpoblZXWlBaVzFvV1djeFlrOWxRbUozWkRobVZtaEJhSEJqV1daVllVSmtiMlJCWWt4bVVtVkJZVGRsU0dGclprWmtRV0pUWkhka09XVlRaVVZqUjJOU2FFMW5aR2h1WjFwaVUyVlJZV2huVm1VMFoyUmlhR1ZLYUV4bFIyRkZaRTVtV21kWmFHNWxTbVUwWkVwaVFXUkJZMHRpUjJOc1psRmlOR1JRWVZGaFdXSTBZMHRqUkdaQmFITmtSMlZDWjBGbFUyUmhaVUprWjJFMFoySm5kMkV3WkZCbFltZ3hZamxrTm1ORlluaGtkR1Z2WmxGbFVXUkJaMXBpUm1KQ1pqUmtjbUpPWTNoamRHVmhaRTloUTJkelpuRm9UbU5zWm1SbVFtTkdaRzVtYzJaalpsQm5RbVZvWW0xa1JtSkhZVnBpYldaWllsaGhRbU5XYUdKbk1XSndaVWhrU0dSU1p6Rm9WbUpWWjI1b1VtVnlZbVZpYldOd1lVSmlVV0ZGWW5Ob1VHUlZZbWhvUW1GclpGUmhTR05hWmpKaVZXTnJhRWxsVm1KbFpVaG5XV0ZUYUZOamVHWm9ZMFJvVjJWWFkyOWhlbVZqWVVoaGRHWldZVkZoTVdneGFGUm1aV05XWmtwalRHSmtaVE5qY0dWd1lsWmpNV1JyWjFGbFIyZFhZV2RoVEdaU1lWZGlPR0ZTWVVWak1tWTVZVWhtWTJWNFlVMWxWR1ZKWmtabGQyTmlaMWhpYUdKRlpFUmpZV0ZEWW05aFQyWllhRkptVldkdVlrRmtWR2ROYUZkaFNHaHNZVTVvYUdOVFpuaG1XV0paWTFwaWFHWlNZVzFtV21odFpFWmhkMlJXWmxkb09XZGhZbEpqZUdVd1ltUm5WbUZXWmtwbE1HSmhaRE5vY0dKcVpsSmxWR0UwWkVSblVtUm5ZVVZqWldkTFlsRmhhMlUzYUU5bFVXWkJZV0pvWW1ocVkyeGpNbUpIYUZWb2MyaEtaRkJpYkdoc1lTdGlZbVJ1WmtKbWIyUlJZMVZpVFdGV1pGZG5hV1JGWm5kaFFXUnBaRkpsTUdKS1owSmtTV2RWWWxoaE1HUnpZM2huWTJGQlpsRmhVMmhJWVZSb2JHWjJZMUpsTTJSTlpsUmhVbUV5Wm1kbFZtVlRaMFprUW1aSVpFVmlSMlZhWjNsalZtWm9aVlpqY1dKalpHeG5SbWd6WmxaaU1HRktaME5qU1doVFptaG1SbVZHWldsaWRHaFNaVXRrZVdScllucG9TMkZUWVRSb2RXSlhaV3RsZDJoa1kwUmphV05vYUZOb1lXWklZV1JoTm1GbFl6Qm1VbUZ4YUVaa2QyVTRZVWRrVjJaRFpqQmhabU5sYUVSbmMyUllaRVJtTVdSdlpIRm9UR2N5YUd0alMyaEhZMFZsYUdGYVoyTm1RV1E1WjJGbFkyVkZabWhpUkdOVFpsWmhjR2d4WldWaVJXUjBaVE5uWldKdFpteGlXR2hYWWxKalFXaGFhR0ZsUVdaMFlVWmhXbWhvWlRCa05XUmlZekJpWkdaNlpVVmtNR1prWW05bVJtVlZaR2hvVVdoU1puaGlRbWR0WjJOaWJHaFpaRlpqWVdOdVkwcG9VbVZtWTNoaFdtaExZVWhqV0dOU2FHaGlRV0pvWTBab2NXUlFZbTFoV21odGFGbGxXR05DWlZabFltTXhabkJrU0dGSVoxSm9NV1pXYUZWb2JtRlNZbkptWldWdFkwNWhUbWRoWTJoaU9XWklaa2RuTUdWT2FIRmhSMlp0WjBwbE5HTkRaV2htY0dOa2FFSmplV1pPYUVOalJHY3haMnRvV0dGSWFFZGhjR0ZaWldOaVNHTkNhRWxuVVdJd2FHeGhZV0prWVZob2FHUk1ZMlJsTTJod1pYQmhWbVF4WVd0bFVXTkhaMWRrWjJkTVpGSmlWMmM0WTFwblVtTjVaR05rVDJkSlpFSm1NR2hMWTB4aFZtWm5hRWhrUVdSb1lUVmxjbU5LWlROaVNtVmtaVVpvV0doelpsQmlWV2hYYUhSaVRHVlRZMmRuTldWbllWbG1WV1J2WkZsb1RXaHNaM2RrZG1ST1oxZGlPR2c1YUVWbFEyRkphRlpqUm1oVllsSmpiV0pHWmtOaE9XTTBhRkZrV0dGd1ptcGxWR2hYYUhCbVRHTkVaVEZsU1dGUlpWcGpSV2g0WVRKaFpHRnNaRXBtUTJoR2FGaGhhR0V5WkVWaGEyRnpaMWxuVTJSM1pqQm5jV2RQWjNsaFRtY3JZa0psVVdkWllVVm5SbVJUWVdOb2FHTk5Za1JpV21VMllsbGtiR0prWVV0aVltSlNZV3hrTUdaR2FEQm9WbVV6WmtkbFFtWk5aM3BuVW1WNVltUm9ZbUZFWkdwbGMySmlZVUpuVW1aVlpVdGhXR042WjFGa2NtZE1hRlpvVW1oeFltVm9WbVpHYUd4a1MyUnRaMEZtVjJWaFlsZGpSV0pYWkVkaFIyaFphRlZvV21odFlscGhhR2hqWkVaa1ZtaDJZbGRqYTJKamFHUm9TR1JXWkZabFltSm1abGRtWkdSUlpsbG5NR2d4WTNGbVUyTjNaVGxsVTJkRllVZGhVbUpOWldSamJtRmFZbE5qVVdab1pWWm9OR1ZrWVdoa2IyUkVZVWRvUldSb1pVVmlXV0Z0WkU1bGJXSmpaMFZqVm1oRVowaG5VbU5KWlRoa1MyVXdZMVZsTm1OUVpIbGhVV2hGWkVWb1JXZHdaR05pV1dGUloyUmtkbU5pWlhobFJXVlVZV0pqTUdKa2FIcGtSV1V3WjJSamIyaEdabFZvYUdKUllWSmtlR1pDWm0xalkyUnNZalZpUW1KSlptcGljMkpEWldWblVtVnZhRkJtVjJKNmFHOWtiMmhVWWtaak1XSnRZVU5vVjJWYVlUSm5ZV1ZJWm5obEwyWmlaREZpY0dOSVpVaGxVbVF4WmxaaFZXSnVabEptY21KbFoyMW5UbVpPWkdGa2EyZHpaRkJuVldoc1p6bGxhMkpUWVc1bVFtWXlaRmRrYUdaYVpXUm1UV1JUYUZWbFkyTkNaV3hsTUdWUFlrWmhhbUpCWVhKb1kyRkhaakZpU1daUmFGVm9kR05VWVdKb2JHVktZa3hqWkdNemFIQm1jR2hXWmpGbmEyUlJaRWRtVjJSblpFeGxVbVJYWWpsaVRXUlBaMWRtT1dOSVptTmhlR05PWVVoa1lXSkNZMVprU1dKVlkwVm9ZMk5SWmxwa2FtSnpabEZpUm1WWFpFbG1hR0ZWYUZobWNHRllhRmRtZDJGQ1pIQmlabWQzWkhObFdXaE1aR2hvTVdWdFlWQmtWV1YwWTNkb1ZtSlhaRGxqWVdGU1ozaG1NR2RrWmxab1ZtZEtZakJqWVdZelpIQm5hbVZVWkZSaWQyRkxaVmhpVm1KS2FFWm9XbU5HWjBabk1tUktaVlpuU21GUVlrWmlWMlJzWm1kbFEyUlhaVVZpV1daUlpURmhiR2hwYUdOb2JtRkNaSGRvVTJGRlprNWpTbVJYWm01aVZtVTBZbE5pZW1GTllURm9VV0l4WW1SaFdtRkZZVUprYkdkdlprTm9NR2hXWW5abFJXZFNaMDVvZG1KU1l6Tm9UV2hVWVZKbU1tUm9ZV0ZrV1dOc2FFSmtTR05GWkVkbFdtZDVhRlpuYUdGV1pIRm1ZMlpzYUVaaE0yWldaakJqYjJWWFltRm1WMkpGWkZkblIyVklaR3RtVldSaVkycGtTV053WTA5alVXaGFaMmhoUkdGR1pWbG1WR05TWVZGbk1HZGhZVU5vZW1JMFluRm9TbVIzWW5kaEsyUkVaV2RuWkdVMGFFVmtSMlZTWlUxb1pHUnVaRnBsVTJkUloyaGlWbVUwWVdSb2FHTktZVXhsUjJWRlowNWlXbWRaWlc1aFNtaDNaR05vUldob1pVUm1VMk5XYUVsamFHTmtaR2RrWjJJdlowOWllbUZ6WmpCbFJtTnNabEpsWTJkRGFGWm5PV1ZPWkVwbWVHSkZaMWxuWW1ZeFpWcGtObWRGWWpGb2RHZ3dZa1puVm1WQ1pWcGhVbUV3WTNobmJXUktaMnhrYUdKWFowbG1hbU5OYUVSbVJtRkNhR2RsVDJWVmFIZG9aMkV4WVVoaGJHVkNaM1pqUjJKRmFIaGliV2RaWmxobFFtRldhR0psTVdod1pVaGhTR0ZTWkRGa1ZtTlZhRzVuVW1KeWFHVm5iV1JPWlU1allXSnJhSE5tVUdOVllXaG9RbU5yWWxKaVEyUktaelJpUldOUlluQm5WV2RMWjJobVZtTmtZVVJsTVdjd1ltbG5SR1JYWm05bk5tUmpaMGhrZEdGSloxVm5SV0ZDWW1Gb1lXWlhaRkppVEdoaVpqTmpUbVp3WlVObU1XZHNhRVZsUm1SNVluUmpSR1pDYUVSaE1XVjVaRmhuUTJKellrTm1SV1ZyWW1Sa1VHUkpaVUpsVm1aRVlsVmtSbU5WWkZwbFZHSklZMHBsVjJGR1pWZGtjR1Y1WTFWbVdHRmtaMWhoVTJGb1kxcG9jR2RaWTFKa1dXUlpZMXBtYUdkU1pHMW9XbVZ0WjBabWQyUllhRWRrVG1WM1kxSmplR013WVdSblZtTldaVXBuTUdOaFpUTm9jR1ZxWkZSb1YySndaa3huUkdJeFowbGlVV1ZhWWtWamVHVXlZMlJsYkdkS1kwdGhXR05ZWjJoa09XTkVhREJrYzJOTloxTmhiR0pXWWtsaVkyVnVZMEprZDJoVFkwVmlUbVpLWmxkamJtRldZalJuVTJVeloyUmtObVJoYUZaalpHUmFaMFZpUW1Wc1ptOWtRMlV3YUZWbE4yWlhabFpuYjJjNGFGTm9VMlJWWTBKblUyWlVZVUptVG1SQllrTmlPR2RUWWxGbVEyTkphSHBvUVdOc1owSm1hV1ZYYUVaaVJtY3phRlpuTUdSdloxZG1ZV1ZYWkVWbFYyZEhZa2RqV1dKVlkxcG9iV05hWm1oaFkyVkdaRlpvZG1kWFpXdGxZMkprYUVoaVZtUldabUZuU1dWSFkxVm9OV2hMWkhka2QyYzBZMHRtUldSQlkxZG5WbWRSWmxWa1dXSm1hR3BoTldOVFpGTmhVbVZXWlhCalptZDRaMHBvV0daQ1pVVm9UbWRDWldGbU0ySkpZbk5qWTJaQ1ozaGlUbVpEWVdoa1NXRXdZMHRoYVdWblpUUmxVR2hwWW5kak1tSkVaMUpsYUdGU1lWbG5VV0ZrYUhaaFltSjRZVVZpVkdSaVl6QmxaR1o2WlVWb01HWmtaMjlsUm1KVlpXaGpVV0pTWVhoaVFtTnRaR05tYkdoWloxWm9ZV2h1YUVwaFVtVmtZVEZpT0dobFpFZGxRMkZ2WlhCa1ZtRXdhRzlvUm1KWFlubG1TV0ZxWmtGblEyRlNaV1JoU21FeFlYQmtUV2RJYUZGbU5XUmpaRlZoYldob1pqTmxaV2h1WTNSalJXRmhabWhuWTJaUVprSmlhR2cwWW01bVFtTkVZV05oYTJGTlpGRmhNV05TWVZCalVtZGtZMGRuVVdFeGFFSmlSR1pWWm0xaVNtTm5aR1ZuVm1Kd2FFbGtVV013YUd4b1lXUmtZbGhoYUdOTVltUm5NMkZ3WTNCa1ZtY3haR3RuVVdkSFlWZG1aMkpNWWxKaFYySTRaMUprUldJeVpscGtUR2RYWVZKb1RtVklZbUZvUW1OV1lVbGpWV2hGWm1OaFVXRmFhRzVqU21OWFkwWm5WMmR3WlhsalZXWllZV1JuV0dkVFlXaGpXbU53WkdGaFZtZzBaVmxuWW1KUlpHeGpiV0ZqWkcxa2FHSTRaR1psTW1RNVkyRm5VbWg0WVRCblpHUldhRlpoU21Rd1oyRmpNMkZ3YUdwbFZHZFhZWEJqVEdoRVpqRm9TV0pSYUZwb1JXZDRZVEpuU1dKb1kyOWtUR05TWVc1bVdXRm5hRUZrVldOV1lrRmhSMko0WWtWbVpHZEthSGxsUVdFd1pVTm1VbWRqYUUxb1ZXZHNaamxsTkdSVFlqTmlaR1kyWm1GbFZtUmtZVnBqUldoQ1pHeG5iMlpEWnpCb1ZtVjJaMFZvVW1aT1kzWmlVbUl6WjAxbFZHVlNaakpvWjJKV1kxRm9RV1pTWjBwbFZXaDVaRFJqZW1aQ1lraG1XV0ZzWjA1bWFHSlJZMWRtUVdNd1owcG9aV0ZoWmxkbGIyVlhhRU5qVjJNNFpGVmhaV1p1WlhCa2FHVmhZVVpsZUdKMlpVSmphMmRrWjBwa1JXaDRaRmxtWVdoT1psUmthMlphWmt4bVFXVnJhSFpvUzJKc1pYUm5ZV2hYWkVka01XTkJZMWhrU0dWYVkxTmpVV1pvWWxabk5HSmtaR2huU21kTVpFZGpSV0ZPWTFwbVdXZHVZVXBpZDJOallVVmxhR0ZFWjFOaFZtWndhREZvWldkRlpuUmlMMlZNWkcxblkyVlZaVVZuVm1SR1pFeGtRMlV3WlZGbVFtZExhRzVtUW1oSVoxcG5kMk01WjNwaFIyaEZZV1JtTjJOSVpVVmlhR2hOWjFkamVHWkNaU3RvWldjeFlscGtTbVJoWW1saldtaG1aMDVsUW1VNFpFeG5VbVZCYUc5bmRXZFZhR3hvTUdGSVpWRmhSMk0wWlhWa1dXZFlaWFJoVm1KbVpWWm5UbUowWVVobFVtUXhaVlpuVldodVlsSmxjbUpsWm0xaFRtZE9ZV0ZuYTJaellWQmtWV0pvYUVKamEyVlVZa2hpV21ZeVlsVmphMlJKWW1ObVpHRkdaSGRvVTJSVFpuaGlhR1pFWjFkblYyUktaSGxtWTJSSVlVSm1TV05SWVRCbGJHRmhZMlJrV0dWb1preG5aR2N6WkhCbWNHUldaVEZqUm1GWlowZGtWMk5OYUZkaFVtTllZWE5oV1dGSVpqQmlWbWRJWjJObmVHTk9aa2htWVdGQ1pGWmxTV2RWWmtWaVkyZFJaVnBuYm1aS1kxZGlSbWhYWkhCbWVXVlZabGhtWkdaWVpsTm9hMlpKWTJoa1MyRkZaRlZtVjJoTlkwRmhRbUp2WVZCamFtUnJhRFJvUzJScWFHOWhTMlZCWXpGamVHZEtZVVZvUm1kd1lXVm9ZV016Wm5CbmFtWlVabGRpY0dSTVprUm9NV05KWlZGbldtUkZZWGhsTW1aa2FHeGtTbU5EWjBaaldHVm9hREppUldaclozTm1XV2RSWnpGaFJXY3lZV1ptUkdoTllUUmtRMlJTWmtWbWNXZEdZMVJrUldFNVprdGhhV0ZPWW5sbFNXTldaR1JsVTJaRllrRm1hR05vWlVOak1XaHNaSHBqUldoUlpIUmtiV0pTWjNsaU9HTlVaa1ZvTW1aYVpGZG5RV1JDWjBWblZtaGpaSGxtYTJReVpVVmlNMk5SWVN0blpXUm9aV3hqSzJoWFpUSmxRV2hYWldGbFYyaEZZVmRqUjJSSFpsbG5WV0ZhWTIxbVdtSm9ZbU5uUm1KV1ozWmxWMlpyWVdObFpHaElZbFptVm1oVFkyUm1SMlYwWWpabFlXSjRhR3hpYTJORFpFVmhZMk5VWlZGaFoyZGpZa1JuVFdacWFFMW1lbU5HWm1obk1HUjNaMlJqYUdkc1oweG5RMmd3WW5CbVdtVm1aVzFvTldoM1lXRmpSV05HWVVSaFJtUldZVzlvYUdoa1pXZGhaMlF2WWs5amVtWnpZVEJrUm1Wc1pWSm1ZMmhEWWxaaE9XSk9Za3BqZUdKRlkxbGlZbWN4WWxabk5tVlBaRlZqWkdSdmFFWmtWV05vWVZGbFVtaDRaVUppYldGallteGxXV2hXWkdGbWJtSktaRkppWkdJeFlXUmpTMlpHWkcxa2JHWm9Za2hrZUdaR1prMW5SbVJIYUZwbmJXaFpaRmhvUW1KV1oySmtNV1Z3WmtoblNHSlNaVEZpVm1GVlptNWpVbUZ5WTJWamJXSk9ZVTVvWTJSRllYTmtTR0pDWTJ4bVoyZDBaRWhqTTJkblptZGpVV0V3WlhoblRtVkpZVVJoTldKMFowaGhhMmRuWTBoaVIyWkVaVmxoTTJGbGFFWmhjR05KWkZGaU1HZHNZV0ZpWkdSWVltaGxUR05rWXpOb2NHZHdZMVptTVdGcloxRmtSMlpYWldkalRHUlNZVmRtT0dOU1lrVmpNbVU1WkVoalpXZ3dZMk5pT0dKSmFFSm9WbUpFWWxWblJtUmFaM1JtV21KdFlqVmpTMkpHYUZoaFNtZzNZVlZtVTJoMFpsaGtTR2h0WXpCaWFHVklaRUppYjJoNVpscGxhR0ZTWkcxbVdtVnRZMFprZDJkV2FGZGhPV05oWkZKamVHY3dZbVJoVm1OV1owcG1NR05oWmpObWNHaHFZVlJvVjJKd1lreG1SR0l4WkhCb1JXZElaWGRrVW1ZeWFHWm5WbVpLWWxKbllXVklabWhtY1doRVltdG9jMmhCWWxOaGJHUnJZeXRqWTJacGFGRm1UR1JCWTBWbFRtVkRZbGRtYldKallVWmhXV2RZWkdSbE5tUmhZbFprWkdOYVpVVm5RbVZzWm05a1EyRXdZMVpvZG1WRllWSm9UbVIyWWxKak0yRk5ZbFJpVW1neVpHZG9WbUZSWkZaamVHZDBaa1ZoUjJOYVlubGhWbUZvWjFabWNXaGpZV3htUm1NellsWm5NR2h2WjFkbVlXWlhhRVZtVjJoSFowZGlXV2hWWjFwaWJXWmFZbkJsVDJaR1kxWm1hMkZTWlRCaVkyRktaa1poUm1Oc1l6Um5aR1pIWTNSak5tWlpaekJsTVdSeFlWTmlkMkU1WkZOa1JXSkhaMUppVFdka1oyNWtXbVZUWjFGbmFHUldZelJrWkdob1pFbG1abUZWWjBGamIyUkxZV0prUTJkU1kybG1abUpvWTBGblltUkJZMU5tVldKblpVdGtRV2c0WlRKalRHWnBZM2hoWm1KamFIaGhRV1JhWTJGaFFXRjBZa1ptWW1aNFlVVmpWR2hpWVRCaVpHSjZZa1ZrTUdSa1pXOWxSbVpWWm1oa1VXVlNaWGhrUW1OdFptTm9iR1paWldSblVHUm5ZMnRsV21Ga1pqRmllR1JMWWtKaWVHTlNaV2hpUTJObmFGSmtiV1pFWlVka09XVnRaVkJqV0daQlowSm5SbVpDWWtsbU5taEZZVlJtWkdKV1kxVmtibVpTWm5KaFpXZHRhRTVsVG1aaGFHdG9jMmhRWjFWaGFHZENaV3RtVkdWSVpWcGpNbWhWWVd0aVNXZFdabVZsU0doWloxTm5VV0V3WjNka05HWkZaRmRqU21VMVltTmtSMmhOWVRGbFVXZ3hhRlpqUjJSa1oxZG5RbU5EWTJSaWVXZGFZM0JqUVdONVpVcG9XV1pIWWxkbFRXVk1aMVptZUdSSllqZGhSV2d5WmpsaVNHaGpaM2huVG1SSVoyRmlRbVZXWWtsalZXSkZabU5qVVdSYVpHNW1TbU5YWmtaaFYyRndZbmxoVldWWVptUmtaV1JTWVdwb2VHSndZVmxtVW1SWmFGbGpXbVJvWkZKa2JXRmFZVzFvUm1OM1kxWmlWMkk1WjJGbVVtVjRZakJtWkdWV1lsWm5TbWN3WTJGa00ySkpaM0pvVkdSWFprWmhWMkpFWVRCa1dXZGFaR0ZsUjJoYVl6SmxaR0pzWWtwbVEySkdZMWhoYUdNeVlrVmphMkZ6WTFsb1VXY3habXhoYVdkalptNWpRbU4zWTFOblJXVk9aRXBqVjJWcFowVmlkMlZCWm1sa1VtY3dZVkJpTUdkU1pWaG1VMk5GWlVWaloyaGtZVUpqUVdVdllsWmhWbU5KWkRkblFXRnVaWE5uTldkU1lqSmhaMmhXWWxOaFJtUkNaa2hrUldGSFkxcGplV2RXWjJob1ZtUnhZbU5sYkdOR1lUTmpWbVl3WTI5aVYyRmhaVmRtUldkWGFFZGhSMkkxWlVGalNHRlRaelZtYUdobFlURm9WbVVyWmtwb01HZGpaa0psUVdGV1lsWmpTMkZtWkZkaWMyaHRaMWxtZUdkcloxSm5RV1l6YUVwb1pXZFBZbTFsVW1oTmFHUmtibVJhWWxOalVXZG9aRlpvTkdka1pXaG1TbU5NWWtkalJXZE9hRnBpV1dKdVlrcGhkMkZqWmtWbmFHSkVhRk5uVm1Gd1pUbG1UR0ZFWkVGbUwyUmxZbTFoU21KWVlWTmtiV2N3WVZwbVpHRkNaMlJtUm1aa1luaGtaMk5VWjAxbU1HaGpZbTVsWVdWQll6bGtiMkpJWW10bGFHaERZMDlqYW1Sd2FHMWpZMlJzWTFsa1ZtSmhhRzVoU21GU1ltUm9NV1ZrWWt0b1JtTnRZMnhuYUdaR2FHaGhhR2h0WlVaaFIyZGFabTFqV1daWWFHeGhXbVJTWVZab2NHTklZa2hqVW1neGFGWmtWV0p1WWxKamNtUmxaRzFpVG1ST1pHRmlhMmR6WmxCalZXaG9Za0pqYTJoVVpraGlXbVl5WVZka1oyRnZZbFppWTJNeWFITmxVMlJZWlhoa1JtTlFhR05rTW1oS1lYbGxZMlZJWlVKaVNXVlJaREJrYkdGaFoyUmxXR1JvWWt4alpHVXphSEJtY0doV1lURmlhMmhSWmtkaVYyTm5aRXhvUldSVFoyUmpXV1ZSWlVkb1JXUlNabHBuZUdnd1oyWmxUV2RHWVRCb00yZENaMUpoWkdoVllrcG1lV1ZaWVZSa1NHTlZaVUpvZVdSVloxaG5aR1pZWkZObWFHWmFZM0JoV1dGU1oxbGhXV1ZhWTJoaVVtVnRZMXBoYldoR1luZGhWbVJYWWpsallXTlNaM2hrTUdka1psaGlVV2RaWjFCa1NXUXpaM0JvYjJKVVpGaGhjMmN5YUVSaU1HYzBaazFrV21oR1lWSmhMMmhrWW1kaU5XSkRhRkZpVVdaTll5dGxZbU13Wm1ObGVXUlJaekZuYkdacGFHTm5ibVpDWlhkblUyaEZaVTVvU21oWFlXNWtWbVkwWkZObU0yaGthRFpqWVdWV1pXUmpXbWRGWjBKaGJHaHZZa05vTUdjd1lUZG9ZV0pzYUhSbWRtRlVaMGhrVFdKQmFFOW9iV2huWWtwalZtVkdZVUpuWm1GSFpsZG9XV0YxWVZaaWEyRkZZbEprVDJOc1lrWmhPR1ZXWkRGamFHRnlZbEZsTW1ORlpGZG5SMmRIWTFsb1ZXSmFaRzFrV21Kb1pXTmxSbVZXWlhabVYyRnJaV05rWkdKSVlWWmlWbWhUWldSaFIyRjBhRFptWVdGcllWSmxiV05aWlZGb09XSlRaa1ZqUjJSU1owMWhaR0Z1WTFwaFUyaFJaR2hsVm1nMFoyUm5hR2hLWmt4alIyWkZhRTVqV21aWlltNWpiMmcwWjJObFJXUk9aR1ZpVTJkVlpEVm1PR0paWlRKaVJtWXpaMlZqYldoc1pWaGxWMlZTWWtGaVdtaGhaMEZrZEdkR1ltSm1lR1JGWVZSb1ltZDRZMEZsTjJOWFltZGxjMkYwWWtabVZXUkJhRVpvVW1SM1pqVm1OMlJqWVdobU5HZGpZV05tVm1kb2FGSmpaR014WTJSbVMyRkdabTFuYkdKb1pFWm5hR1JvWVcxaVJtZEhaVmxtTjJGVFlUTm1RbUZXWm1Kbk1XWndhRWhtU0dWU1lqRm1WbWhWWlc1a1VtVnlaR1ZuYW1GRlpFbG9VR0pvWXpWblpHTklaMEpvUW1WelpWcGhibWRhWnpKbFZXZHJaa2xoVm1abFkwaGtXV1JUWmxOaWVHSm9aVVJrVjJSWFlVcGxlV1ZKWXpOb1FtZFhabEZsZDJaR1pXRm9ZMll6WlRWaWFHWmtZVE5oY0dod1pGWm1NV2hyWkZGaVIyUlhZbWRrVEdOU1kxZGpPR1ZTYUVWbk1tYzVaRWhrWTJWNFozTm5TV05SWTJoblZtVkpabFZoUldGamFGRmpXbUZ1WlVwbVYySkdaVmRrY0dSNVpsVmlXR1prWWxoalUySm9ZMXBtY0dOWloxRmphMkZaWldKamEyRkJablZrVEdKNlowcG9LMmRIWkVOa2IyaFlhRU5vUldVNVpFVmtWbWRXYUd4bGNHUmhaWGxuTldWMGFFaGthV0paWmtOa1ZHTkNaMk5oV1dOTVprVmxWbVF2WVZobFJtRktZa05sUm1GWVlXaGlNbVZGYUd0b2MyWlpaMUZtTVdac1ltbGpZMlJ1WmtKbWQyVlRZMFZuVG1GS1kxZGtiV1U1WlRSaVFXSnNaREZrTm1aaFpWWmtaR1JhWlVWaFFtUnNhRzlsUTJFd1psWmpkbUZGYUZKa1RtaDJabEprTTJoTllWUmhVbUV5WjJkblMyaFRaa0ZuVVdoUVpWZGlWR05XYURoblIyZ3hZMEZqYm1OUVkxRmhUV0oxYUZkblVtTnNaVlJrVUdoWFpteG1RMlpHWTJwblZtSkNaVXBpUTJGalpYcGxTV2hvWTFGbE1tWlZZV2RpT0daU1pFaGlVV1JhWjJKbFpXRkhaM05vZFdOTFpuZG9VV2MxWlZKbFZXaEpaVmhuV0dOVVoyTmlSbWhNWlVSb1RtTmlZV0ZuUW1OV1l6UmhaR1JvWVVwbVRHaEhaa1ZqVG1kYVpGbG1ibVZLWVhkblkyUkZZMmhrUkdOVFoxWmpjR2d4WjJWbFJtWkdZVE5qVEdOdFltTm1WV0pHWW10aVFtSkJZbGxqUm1ZNFlVNWxTbVJyWmtsa1pHSkpZbWRtU1dVcllsaGxRbU5WWTNoalIyaFZaR2RpUldWRVpURmxhMlV4YUdabFFtWjBaVkZtU21oNVpVVm5XV0pNWVZKaFNtTkhZa1puYVdOR2FIUmtSbUpyWm5SamRtVkhZa1ZsZUdKdFlsbG9XR2RDWkZaaVltSXhhSEJtU0dWSVpGSmtNV1JXWTFWbWJtTlNaM0puWldGdFkwNW5UbVpaWTJoak9XSklZa2RoTUdoT1pYRm9RV2hVWkUxbU4yVkJaMUZtZEdKUVpGQmlXR1JaWVZCalUyVXdaM1JvUkdoV1pVZGpTV2MyWm1Wb1dHVnNaVVZrWVdSVmFHeGpZV1JrWjFoamFHWk1ZV1JrTTJWd2FIQm5WbVl4YUd0bVVXVkhaRmRqWjJaTVlVVmlVMk5rWTFsaVVXaEZZMVpqU0dGamFIaG1UbVJJWm1GbFFtVldaa2xrVldWRlptTmhVV0phWlc1blNtWm1ZVVJuYTJkQ1pYbG5WV05ZWldSbldHWlRhR2hsV21Kd1lWbGtVbWRaWlZsb1QyTjRaREZrY1dKVWFFZG1SbVIzWWxabVYyUTVZV0ZrVW1KNFpUQmxaR2RXWTFaaVNtZzRaa3BoU0dGUlpucG9TR041WVZWa1ptaFJZVUZpV21kS1prNWlRV0ZzYURSbVRXWm9aSE5vUm1kVllVTmtjMkpwWVVWbWJHSlpabGxsUW1OUlozZG1jMk5OYUZOblVXTTFaVUpoZDJReFkwcG9WV0p1WjNoaU5HUkZZVVpuTVdFMloyRmtWbU5rWmxwa1JXVkNhR3htYjJGRFpEQmpWbUYyWWtWb1VtSk5aRFZrUW1ocFprVm9WR05GWkRKb1VXSXZaRk5qUm1KQ1owaGlSV0pIWkZwaWVXRldaR2hqVm1keGFHTm5iR1JHWWpObFZtRXdZbkJrUldOYVlsVmhjMmRYWVVkbFIyRlphRlZsV21odFlWcGphR1ZqWTBaaVZtVjJZVmRuYTJSalpHUm9TR0pTWTNob1UyaGhaVmRuYzJaMVpVdGpkMmRSWlRWalVtTlZaa2xrV0dKWWFGTmtjMk5sWjB4aU0ySndaVFJpVVdKb1pGWmpOR2hrWTJoblNtTk1aRWRrUldoT1pGcGlXV2h1WkVwamQyTmpZa1ZuWjJWSGFGTm5WV1prWWpGaFpXWm9aR2RoYW1WTFlrTm1RV1JhWjBobGFHWkpZbHBoWkdKU1pscGlSbU5QWmpCaGFHWkVaRXRpWjJWbllURm9SV0YzWkRWbWEyVlFaVEJvYUdOUllWSmplR1ZDWVcxaVkyWnNaRmxrVm1SaFpHNW9TbVJTWkdSa01XRmthRXRsVjJWWFlteGtPR1pHWjJkaWFHVnhZbEJtYldaYVptMWxXV2RZWlVKbVZtVmlZakZqY0dGSWFFaGlVbU14WTFabVZXVnVabEppY21OTlltMWxUbUpSWVdGbGFHZzVaRWhuUjJNd1kwNWtjV1pCWVZSaFRXYzNaVUZoVVdaMFoxQm5VR1ZZWTI5b05HSlRZWGhvYUdoRVpsZGpWMk5LYUhsbFkyWklaMEpuU1dSUllUQmpiR2RoWm1SbFdHUm5aVWxrWkdReVpXUmhjR1ZIYUZKb2VHSklZVWRqVTJaWllVUmlWR0pJWjFGbk4yTkZZakprT1doSVltTm9lR1pPWVVobFlXTkNaRlpoU1dSVlpVVmhZMmhSWVVsa1JHTXdaRVZpUm1OWFlVcGhXV1ZWWWxoaVpHaFlZVk5vYUdoYVozQm9XV0pTWkZsb1dXZGFZMmhsVW1odFpscG1iV2hGWm10aFZtWllZMHBpZDJOU1kzaG9NR0prYUZaalZtVkthREJvWVdRelluQmxhbU5VWmxkaGNHaE1aRVJoTVdGSllWRmhXbU5DWTJka0syZFFhSGRvUm1OTlpWRmtWR0pqWW1sbFZXRjNhR1JsYm1WRVluaG5kMlJ6WkdObWJXYzFaM1JuVTJaR1owcG5abVZqWkVoaVZtSTBZMU5rTTJGa1pqWmtZV1JXWW1SbFdtZEZaRUptYkdWdlpFTmlNR1ZXWlhablJXRlNZVTVvZG1SU1pESmhkMlJVWTBWbmVXRkNZMk5sUjJneFpqUm5VbVJCWlZWamVHUjVhRlppYUdkV1puRmhZMk5zWTBaaE0yaFdhREJsYjJWWFlXRmhWMlZGWlZkb1IyTkhabGxtVldaYVkyMW5XbUZvYUdOaVJtaFdZM1prVm1oQ1psWm9VMkZUYUZKaGJHRmhaVnBpVjJoS2FGRm1XV0l3WXpGbmNXZFRaWGRuT1dKVGFFVm5SMmRTWVUxbFpHSnVhRnBtVTJKUlltaGxWbU0wWjJSbGFHaEtZVXhuUjJoRmFFNW1XbVpaWTI1aGQyTjRaVTVvUVdGNFkweG9XV1V4WjNCbk1XRmxZMFZtZEdJelltVmliV05zWmxoaFYyaFNaVUZqV21OaGFFRm5kR1pHWVdKbmVHVkZZbFJrWW1Vd1ptUmplbVZGWmpCb1pHVnZaRVpqVW1SM1kxbGpSR2RyWlU1bWIyUktaMFZtVVdNdmFHRm1ibWRLWTFKaVpHRXhaV1JpUzJGR1pXMWpiR0ZvYUVaaWFHVm9ZMjFuUm1WSFkxcG1iV2RaWmxobVFtVldaV0psTVdod1pVaGxTR1ZTWmpGalZtSlZhRzVqVW1Oc1lrdG1RMkYzWmxwa1NtTnJaVTFuV1dGWFpIcGpjR1JyWWxSaVNHVmFaakppVldKclpFbG9WbUZsWWtoaVdXRlRZVk5sZUdkb2FFUmlWMk5YWTBwbGVXTmpaRWhsUW1KSlpWRmhNR2RzWldGaFpHUllabWhvVEdaa1lUTmlVV1p2WTBWaGVHWXdaRmxqVkdGVGFFSm1RMk5HYUcxblJtZElZMEZpUjJkRlpGWmxVR05GWldOb1RHWlpaRUZsVW1GaGFGZGxWV1JzWWxKbFNXZHFaVnBrWldoUllWTmpTV1EzWVVGaWJtaHJZMEpvV0dSb1ltZGlOMk5NWkd0alNtaFZZMkpvWjJaV1ppdG5ZbU15Wm1obk5XRm1aekpuT1dKaFpWSmllR1l3WVdSbVZtVldaVXBtTUdaaFp6Tm5jR2RxWVZSbFYyUndZMHhrUkdZeGFFbGhVV1JhWlVWaGVHWXlaR1JuYkdGS1preGlVR2N6WjJob01taEZaMnRrYzJWWlkxRm9NV1JzWTJsa1kySnVZa0poZDJOVGFFVmhUbVpLWVZkbmJtUldaVFJsVTJFeVpURm9ObVJRWkZKak9HVlJZVkZsZUdkalp6ZGpWR0ZuWTBGaWNtUklaakZoUVdKcVkwTmxSR1V4WVZkblZHVXlZVVZpWW1KRFpGSm9VV0pFWTBkblEyWndaRGRsVjJOcVl6bGtjV2hqWm14blJtY3pZVlpvTUdodloxZGtZV0ZYWkVWaFYyRkhaVWRpV1doVlpGcGliV2RhWldobVNtSkdZbk5tZFdSSVpXZGtUV2hXYUZoamJHTnpaMVZqU21GcFlsRmtNMkpFWTFKbFoyRnVaME5tVldWdlpFRmtSMlJFYUVGa1JXTlFaSGxpVm1OalpVWmpiR1p2YUhOaVRtRXhaRFJqTUdoV1lrRm9XV2hZWm1Gb00yUjBZM0prVjJWclltaGxSR1JUYUZaamNHUXhaR1ZpUldGMFpETmxaV0Z0WVd4aldHaFhaMUprUVdaYWFFbGxRV1IwWmtsb1ltSjNaMVZsVkdOalpWWm9jR1I2WVZob1JtZDRaRU5oVUdVd1oyaG5VV0ZTWW5oa1FtVnRZV05sYkdGWlpGWmtZV0p1WlVwbVVtaGtaVEZsTldWbmFFWmhiV0ZzYUdoalJtUm9abWhqYldoR1lrZGhXbVp0WTFsb1dHWkNZVlpvWW1ZeFptOWxRMkZPWkhob01XSldZVlZpYm1aU1ozSm9aV050WWs1alRtSmhhR3RpYzJOUVoxVmxhR1ZDWVd0aFZHTklhRnBtY0dWVmFHZGhSV1ZpYUZCaGFXVlNZV1JvUW1odVkyOWtTMmRFWTFSa1JtSTJZbGRvYm1aQ1pVbGhVV1V3Wld4allXSmthRmhtYUdWTVkyUmxNMkp3WkhCblZtY3hZMnRqVVdWSFlWZGtaMkZNWWxKbFYyRTRZMUptUjJSNVlscGlTbVJOWkVaa2MyaEhhRTlvYm1GWlpraGxSbVpCWlVwamVHVk5ZMjVqYjJGYVlrWmlWMmhHWkhsa1VXZElZVFZvV0dKV1kyZGljR1Z3WTJWbFVtYzRaVmxsVDJWb1pGRmtkbVpoWlVOb1NXSTBZMFppUkdNd1pqVm5RMmhHWjJ4a1dXSk9aa0ZvV21jNFprcG5TR0pPWTNaa1dtRXlabkJoVEdWRWFERm9TV2RSWTFwa1JXWjRaekptWkdWc1pVcGlRMk5HWTFoaGFHSXlaRVZvYTJkellsbGhVV1F4Wld4aWFXSmxabXBqYkdJclpVTmpkMlp6WlVsaFEyaENZbGxuTTJSRVlucG5TV05pWTFCbFZtZzRhRmRoUldWQ1pFcGliMmhIWkVWbGVHRjJaMFJuVVdVNWFIWmhXR1V6WVc5bFZHUkhaekpuYUdkalkxSmhhR0pOWmxCa1ZXSlVZVkZuVW1kSGFGWmtSV2gyWTBWaGQyaFdaeTlpUjJKRlptOWlaR0ZoWkZobFRXaG1hRTFtYldkWllsVmtXbVZ0WTFwaGFHaGpZVVpvVm1OMloxZGlhMk5qWVdSalNHTldZVlprVTJKa1pVZGxkR0UyWmxsbE1HUlNaMEZpVTJOM1pqbGpVMlJGWTBkalVtTk5ZV1JsYm1SYWFGTm5VV05vWjFab05HWmtaMmhsU21WTVowZG5SbVZzWmxwbVNXUllaM2RvTW1aSlkyZGtZMkZQWkV0bWVHUk5ZV2hrUzJZd1lrNWlaR2hsWW0xaWJHUllZVmRuVW1KQlpWcGtZV1ZCWVhSalJtVmlhSGhtUldGVWFHSm5NR0prWVhwbVJXY3dabVJtYjJOR1oxVmxhR0ZaWTBSa2JXTnpaWEJsWTJSc1l6QmlWbWhsYUhkaE9XRlNZMkZuTUdaMFpFdGpSR1Z0WlVKb2FHTlRabWhvWjJKMlkySm1lV1pyWm1Kb1ltUldZWEJvVm1KaVpqRmljR0pJWjBoaFVtY3haMVpqVldKdVlsSm9jbVpsWlcxaFRtSk9aV0ZuYTJoemFGQmpWV2hvYUVKaWEyaFVaRWhtTkdjdlpVdGhVV2d3WlZabVkyWXpabGxuUW1ST1kyaGlhR1JtWWxKblYyRktaWEZrWldoWVkwRm9WV2RSWVhkaFFXWm9aMDloYm1Ob1pFRm9aR2N5Wm1kb1ZXUm1aRlprYTJaUlprZGhWMkZuWTB4aVVtWlhhRGhsVW1ORlpESmlPV1pJWW1Ob2VHUk9ZMGhoWVdaQ1pGWmpTV05WWkVWbU5HUmpZbFJoU0daS1psZGlSbWhYWkhCamVXVlZZVmhrWkdaWVlWTmlhR05hWVhCb1dXTlNabGxqV1dSYVpXaG5VV2g1WldGb1EyUkJaVEJrUldkWFltTmpXbVpUWkZaaFFtTkpZMGRqVVdSWlpqbGxUMk42WVZsbk5tZFNZMVJqT1dGRFpVSmxiR1Y0WTBOblMyWjRhR2RsTm1WbVpHdG1UbVJXYUVoa1NHUlpZVGRoVW1GM1kyUmxUV2hEWTJkbWEyZDFaa3RvTTJSbll6Sm5VV1pWWnpsaGFtZFhhRzVpVm1FMFpWTmxNMlZrWmpaaFlXSldaR1JqV21KRllrSmhiR0Z2WVVOaE1HTldaWFpuUldWU1pITmxaMkpTWVRObFoyRlBaVkppTTJkM1pHTmtWV016WVhCblNHVkZaa2RpV21KNVkxWm5hR1ZXWlhGaFkyUnNaVVprTTJKV1p6QmljR0pSWlVwbmFtTk5abGRuUldWSVpEQm1WV1ZNYUcxaldtTXZZV05qUW1Od1p6QmhWMk5yWVRSak0yVklZbFpsVm1KVFpXUmtSMlowWlRabFdXWXdhREZoY1dWVFozZG1PV05UWVVWa1IyUlJhRkJtWldKRVprRm9RV1JFWlZabFoySmhhRkJrTUdWWmFGbG9SV1JCWmxwaFdtRm1ZVmhoU1dJMVkyWmpaMmh6WVV4a1EyRkJabWRtVjJoT2FIZG1PR041YUVkbGVtSXhZMlprUm1Sb1pYTm1VMkZaWkZGbWRHWm1aR0puTVdOb1ptOWhTV1JGWm5oaE5HVmlaV3RsZEdWdllrSm5WV0pHWVdOalltUlNaRUpuYldOalkyeGtXV1pXWTJGaWJtTktabEppWkdjeFlXUm1TMkZHWm0xb2JHSm9aMFppYUdkblpYbGhSMlJwWm1ObGFXTktaVmhsWjJoWFkxbGpVbU5qWkZOb1ZXTlZaR3RvWTJKQlltcGhaMlo1WldOaGFXRTVZVVZpV1dJd1kxWmlaR0pJYUZWbVVXWnZhRkprUjJka1ltNWxWMk13YUhobFdXRk1hRlJsY0doSFpVRm5hMmhuWlZCalFXWkhZbTlrYUdabFpWZGtkR05wWjFGbU1HSnNaV0ZrWkdSWVoyaG1UR2RrWVROamNHSndhRlpsTVdKclpWRm1VMlo1WmpGbFptVkZaa1JuTVdSbVprVm5NbU5rWVhSblkyRjRaVTVvU0daaFkwSmpWbU5KWkZWaFJXWmpaVkZsV21KdVpVcG5WMmRHYUZkbGNHYzJZMEZqTTJoa2FFdG1VMlpyWTBwamJtZEphR3hsY0dKWVpFdG5SbUpHWkhWbFltRXlaemhqYW1WSVpWTmpXV1pqWkVWak1tWTVabFZpUldob1ptOWxaMlZaYURKbWRHVXlaVkpvUjJoT1praG5TbWhXWTBsblVXTmFaa1ZpZUdReVpXUm1iR1ZLWWtObVJtSllaV2hoTW1SRlltdGxjMlJaWTBaak1XZGpaRFpsVUdSVFowcG1OR1pIYUd0bWNHaElaVVprZVdOQlpqQm1TR042YURSb2NXaEtZbEZrTldoU1oxVmxVbUZDWTJ0blNXTlZaVlpuZG1KRllWSm1UbWgyWjFKbE0yaE5ZbFJoVW1jeVpXZG1WbWRUWjBaaVFtWklZVWRpUkdGU2FIbGhVMlo0WkZWbEsyVm1ZVUpuU1dVM1pFZG9RV0ZTWkZSa1dXUlhaR2RoV1dGVFpIbGlOV1ZrWjBsa1JHVkpZMVJqVDJGU1pVbGxibVZFWm10bU9HRk5aa1JrYkdKNGFHSm1aV0ZGYUVaak5tRlpaREJrTVdoeFoxTm1kMlE1WWxOalJXaEhaRkpvVFdSa1pHNWpXbU5UWlZGbmEyRkdaakpqVEdac1pEQmtXbVpGWkVKaFJtSlJaV0poUkdZNFpHeG1VR0ZDWm5ka1MyWkhaRkprV1dWellXTmtRbUUxWnl0b1pHaHJaMDVsV0dOWFlWSmhRV1phWm1Ga1FXTjBaa1psWW1kNGFFVm1WR1ZpWXpCalpHUjZaa1ZoTUdZNFlUWm9SbVZXWWxaaFVXTkZaWGhvTkdGc1kxQmlhR1JzWVdKaFRHY3paWEJrV1dSbFpWRmtVV2hEWjFoaWVXWTRhREZqV21GR1pVVmxhR1JZYUVSblNtWjFaV05vUjJWYVkyTmtXbVJzWVZwa2RHTklaMUpvTVdKV1kxVmxibWhTYUhKb1pXUnRaVTVuVG1kaFptdGtjMmRRWTFWaWFHaEJZM2RvVVdGcFpEUm5OV2hCWlVWamNHRklhR05oV0dWdlpUUmtVMk40WVdoaFJHaFhaRmRtU21KNVlXTmhTR1ZDYUVsb1VXY3daMnhuWVdKa1kxaGhaMk5tWjFCbWVtaE5ZelppVjJaU1lrSmhaV1JWWWtSbmQyRkVZa1ZoVTJOa1pGbG9VV1pIWjBWbVZXVk9abXhqV1dWRVpGbGpVbWhzWW1saFZXZEZhR05vVVdoYVpXNWtTbWhYYUVablYyWndaWGxsVldaWVkyUm5XR1JUWm1oa1dXVTVabE5uZUdWWllsbGhXbWhvWkZKbGJXRmFaVzFuUm1OM2FGWmhWMmM1WVdGaFVtSjRZMUZpUjJabVp6RmtTbVV3WkdGbU0yZHdZbXBsVkdSWFpuQm5UR1ZFYURGblNtUk9ZV0psVldoQ1ptTmtaR2hzYUVwbVEyTkdhRmhuYUdjeVlVVmlhMkZ6YUZsalVXY3hhRVZpTW1abVkwUmtWV052Wmtka1FXUjNaMkpuUkdKcFpscGhOR0ZXWW01bFkyVXhhRmxpUldONFpucGlSV1pDWW14aWIyTkRZekJrVm1WMlpsUmpRbVl3WTNOb1FtWnFaemxpWm1SVVpIcGliMkphWjFOblFtRnNZbEJuUVdGSFpqbGhPR1ZPWmtWaFFXTnphRTVuUW1OUmFHeGpXR1pyWTAxbFRtZFJaakptUldoWFowZG9SMlJhWmtwaVlXRnJaWGhsYUdoallVWmxWbVoyWmtoa1FtSktabFJsV0dWblprVm9ZbWRQWm5sbFZtWTJhR0ZpZUdac1ptcGtVMlV4WWxKbE5HWkZaa2RqVW1WTlpHUmhibUphWmxOa1JtZEdZMUZpY1dKa1oydG9RbWRSYUUxb2EyWk9ZMXBpV1dWdVkwcGpkMk5qWlVKbWNHTkVaMVptUm1kd1lqbG5VR2hvWkRSbE5XUlBabFJqTUdkbFowWmtiR1EwWlZwa1dXWkJZa3BpUm1OT2FFUmljMlJVWjJKbk1HTmtaWHBqUldVd1pXUmtiMlJHWTFKbGIySldZa1ZoTUdkVllqQm1VR2RHWTFwbFFtTkpZMnBvYzJkRFptSm1TR2d4WlV0a1JtZHRZbXhoYUdSR1pHaGxaMmMzWjBoalYySTFablpsWldOc1kzQmxWbVJpWnpGamNHSklZa2hqVW1nd1lVSmlRV2REWmpGaWNtaEpabFZoYkdoT1ltRmlhMk56WWxCbVZXVm9aVUpuYTJGVVprTmpVbU15WmxSb01HaEthRWhrWldKRGFIQmhUMk5UYUROaE5HTlhZVVppZVdGRlpXMW5UMmRVWnpoalIyZFRaREJtYzJaSlprMWtRMk4zWTJWalNtSlVaRkppY0dOQlpuaG1SbWhhWlZOaWJXUnZZa05vVkdSWFpGbG9VbUZVWW5walRtTklaMlZvZDJkS1kweG5ZV0ZHWmtGbVpXVkZhRkZtYzJoYWFHSm9ibVpCWkVObldHaFRaVTFtYUdKVlpqTm9OV0pOWTFsalFtUmFZM0JtV1dWU1psbG9XV1phWVd0b2JHRnRaa3BuVTJoQlptdGhSbUZwWkdSa1lXZFVaakZrVVdOVlkxWmpVV0ZzWkdWa1lXRXpaWEJuYW1OVVpsZGhjR1ZNWTBSaU1XWkpaMU5rUzJSM1pUUmhPR1pOWkhobFJXVlhZa1poTTJkb1puSm1SR2N3WjNSaVRXWkhabWRpYTJkdVkxQm5WR0phWVhkb1NHRjNZMjlpU0dKSVkycG1iMkYyWjFOaU0yUkdZVGhsWVdOV1l6aG9UR2RGWWtGb1VtVnZabGhoUVdWM1ptaGxWbWRXWlhka05HTlVaVzFsWjJNMVpsSmlNbVpuWlZablUyTkdaa0pqU0doVVkxVmxlR1o1WlZabWFHWldaSEZoWTJKc1lrVmthbUZYWkZGa09XRlBaMDloVTJVMVpFVmhWR2hFWWxWblZXSmxaekpvV1dKNllXRmpNMkU1WTNabFYyZHJabU5qWkdWUmFFWm1iR0UwWTJSa1IyZDBaelppV1dWM1puTmpMMmRDYUZWbGQyRkhabGRrVTJaemFFTmxaR0Z1WWpSa1IyRlVabWhpVldGeFoyWm1lR2RKYUZGa1RXRnJaVTVsV21SWloyNWhTbVIzWW1OaFJXSnZZVmRuUjJSb1pUbGlNV0pMWjNob09HUnNZazFtZVdadllVUmlWMmgzWkhOamVtRmhZa0ZrZEdaR1ptSm9lR2RGWTFSalMyRlNaVWxvT1dKVlpFSm1UV2hvWTFkaloyZGFaVkZvUkdWb1oyZG9lV0ZsWmpGa1dtZFBaRkZvU0dOS1oxSm5aR1F4WVdSalMyZEdaMjFvYkdOb1oxRmhSbUZyWXpCaVJtUkVaRkpqYldkbVpVaGhRV05DWmxsb1VtaFpaRU5sVldZeFoyOWpRbWRIWTIxbE9XSkNaMlZsYldGT1pFNWhZV1JyWjNOb1VHZFZaR2hsUVdWMFpVTm1ibVZhWXl0bVFXaEZaMGxpVVdobFpFZGpTV1pUWlZaa1VtUm9aVlJtVldkRlpXaG5lV2RqWmtoalFtTkpZbEZpTUdSc1ptRmtaR1JZWTJoblRHWkpZbnBoU1dRM1pVZG5RV00wWTFGb1ZtWjVZVEZsWTJSU1kxRmhjR1JFYUZGbVUyTkJZVlpqWldoNFpFVmxkV0ZLWVd0blRXZEtaMGhqUVdRMWFGVmtXbUZwWmtWblEyRlNaSGxsVFdnNFowWmlibVpzWVZoa1NtVnNZMDFvYm1kS1lXdGxTbWRSWkZwb2JHVnJhSHBqVG1kVVpGWmxkMlpHWVhsa2NHaGhaa0psYUdJeGFGRmtRV0pDWkRSbVoyRkpZbWxvYjJOMmFFTmtSMkZ2WTBWaFUyRldZMGxvUldWYVltdGhWbVIwWWxoaFJtSkthRU5qUm1kWVkyaG5NbVJGWld0bmMyVlpaa1ZoVW1GM1lqSmpTbU41WVVsaksyWlRaMFZtUm1OVllWZGtTR2RXWW14bFZtTnRZM0JtTm1aUVlWTm5kMkpNWkVWalFtZFNZbTloUjJKVVptaGlkbWhFWW1oblRtWTVhRkppTW1aclpsUmhVbVZZWlZWbFdHSlRZVVZpTVdSaFpVUmhWMkpaWlcxaVRHTlZaMlJuY1dGbVpERm1SbWR0WWt0a2EyWnZaMHBuWVdKWVowRm9WMkZCYUcxb1dXTkZaMlpqVldKNFlXaGxZMk5HWkZabmRtRlhhR3RtWkdGQlpVNWxNV1pXWmxOalpHRkhaSFJsTm1oWlpIZGhjMll2WlVKa1ZXaDNaRWRqVjJSVFpYTmpRMmRrWVdwaVRtaGhZVVpvYUdKNFpqUmpUR2hVWjJoaFRHZEhaa1ZuVG1SYVpGbGhibUZLWkhkblkyUkNaRzlrUjJaSWFGRmhPR2h1WkU1bmEyVjBaaTlsWVdkWFkyeGpaR1ZYYUZWb1VXSllZa3BvUldJMFoweGtTMlJGWTFaaVltVmFZbXRqWkdjNFprVmtNV2hPWW05alIyRkZaV2RtV21aVVp6QmpVbUoyWTJGaFdHRjNhRlpvWVdodVkwcGpVbU5rWnpGaFkyVllZbEJoUjJOc1lXaGtSbU5vWTJobmJXaEdZME5tUVdWNloweGxlbWhOWkVKaFNtSm9hRlZsU21OSWFGWm5TbWRrWmtKbmJtWXhaM0puU1dKVmFHeG1UbVJoWld0bmMyaFFZMVZoYUdaQ1lXdGlWR2REWWtGbE0yUkJaa1ZvU21KSVltUm5SbWgzWjFObVUyZDRaV2hqUkdSWFlWZGxTbU41WjJOaFNHVkNaVWxsUW1ScllWWm9kMlJrWVZoamFHUk1ZbVJvTTJWd1kzQmtWbWN4WVd0aVVXZEhZVk5uWTJKSVlXSm9NbWc0YUZKaFJXTXlZVGxoU0dSalozaGhUbUpJWkdGb1FtUlZaMEZsV0dWSFlqQm5VV1phWTI1a1NtUlhaVVprVjJSd1ozbGlWV1ZZYUdSaFdHUkNaVUptY0daRVkxbG5VbVpaWkZsaVdtVm9ZbEppYldaYVptMWhSbUYzWWxaalZHVjRZbUZrVjJkb1p6Rm9TbVZYYUhob05HTjRaRXBvVkdjd1pETm9RbWhZWVVabWFHTkVZVEZvU1dSUloxcGlSV1Y0WnpKbFpHVnNZMHBuUzJKWWFGaG9hR1p5WmtWaloyZEpaMUZsUm1JeFprSmhjbWhtWlc1aFFtRTBhRUpoYTJaT1pGVm9WMmhxWjNObU9XTklaRWhuWTJZNGFGbG5WbUU1Wmt0blJXSkNZMDVoYjJaWFlVVm5lR0oyWjBoamFHUk9hRGRtVW1ZellqUm5WR0ZFWnpKaFJXWmpZMUpqUm1GQ1kxQm1WbUpYWVZwaWRtWldabXhpTVdKeFlXSm9SbVJHYUc1aFZtY3habFZoVjJGUFkyMW1SV1ZpWkVkaFNHZEpZbFZtWm1OSGFGbGhlV1psWlZWb05XUkdZMWRsYTJGalpHUm9TR1pXWkZaa1UyVmtaVWRpYzJkelpFbGhhR0U1YUhGa1EyUm5aRGxuVUdKRllraGpVbVJZWjFoaVNHWmFZVk5pVVdab2FGWmlOR0prWm1obVNtVk1aVmhuWjJSM1lVeGlXV1Z1Wlc5aGFXRmpZMFpuVm1GRVpWZGlWV1ZHWVRGalVHRlZZblJtY0dGbFoycGpkR2ROWkZkalZXWkpZbHBsV1dkNFlWcG1SbVJsWlhoaloyYzFhR0pvTUdaa1lucGlSV2d3WTJSaGIyUkdZbFZqYUdWUmFGSmxlR1ZuWVhCb1kyaHJaWE5tTDJoaFpHNWhTbWRTYUdSaE1XTmtZMHRtUm1WdFlteGlhR0ZHWW1obGFHRnRZa2hvUkdGTloyUmlUbWRZWkRSaFYyaEtaSGhtYzJOV1pHWm5iR2hKWlZKb1JtVjRhRlZsTDJKalkycGtSbVJGWmtaaE1HZHpabFJrVkdab1pVSmhNV2RXWjBobE9XZ3lZVVJrYldOblpGWmtaV2hJWjFsb1UySlRaWGhpYUdkRVlsZG5WMk5LWlhsb1kyWklaMEpuUVdkR1kycG5TV2RQYUdWbWVtaHpaRVJqVG1GcFkyZG5TMk5IYUVKak1XaFdZV1ZvUkdOM1owUm5SbUl5WlRoaFlXUkZaek5sTldaUFpVUmthR1JPWldKalpHWkNZVlpoV21oUlltdGpOR1JSYUU5aGJHTm9abGRvUm1oWFpYQm5lV1JWWTFoa1pHUllZVk5pYUdSYVlYQm1XV0pTWlZsbVVXSk5aREpsT0dONVlXRm5RMmhKWmpSalJtUkVaekJuTldSRFpVWmhiR1JaWlU1bFFXTmFaRGhuVDJGWVkzQmhiMmhVWmxobmFHWkRaR05sYkdoSmFFMWhaV0ZGWlhoaloyaG1aVEZoU1dabGFGQmhNMlZvWkRKaVJXZHJZWE5tV1dKUlpERm1iR2RwWm1Ob2JtaENZM2RoVTJkQ1lWbG9lV1ZFWm01aGMyTTNaa0ZuZW1oWmFHOW1RMlpvWkdka1pHUldZVmhrWjJVNFpVRmllR1prWVhaaFIyTm9hRTVvT0dKVWFHZGpOR1ZoWjFOb01HTkpaRlprVTJGR1lVSmhTR1JGWWtkb1dtWjVabFprYUdaV1lYRm1ZMlZzWkVabUwyTkhZVlJuUm1oWVlWbGpiV1J3WTNKaFIyZElZbk5qVldoaVpXbGtiR1pvYUdKbGEyVjBaWFpoVTJReFlrVmtWV1pJWmxabFRtUlRabHBpYm1NMVozWmxZV1ZyWkVaaFFXZFRaM2RvT1dkVFowVmpSMkZTWWsxbFpHaHVabHBtVTJWUloyaGtWbVUwYUdabmJHRjNZbmRvVjJSVlptaGtVMmhJWmpObVNtZDBZMk5qUldWQllrMWhVMlpWWVZKbmNtVmxaMFpvVG1jclpHVm9iV0U1YUZoaFUyVjNZVlZvVFdkWlpWRmlaR2gyWm1Ka2VHTkZhRlJsWW1Zd1ltUmllbWRGWWpCalpHRnZhRVpuVldSb1pWRmpWR1F4WlRSbFpHWk5ZVEZvTUdobFprWmlNMmhLWjAxaVpHTXdaRlpsWm1GQlp6Sm5iR2R1WkVab2JHVmtZblprUkdRd1lYaGtiV0paWkZoaFFtUldaV0psTVdKd1lraGtTR1pWWVRoalVXRkNabWxpUldFMVlrNWlSMlJPWlVablVXaEZhSE5sVUdSVloyaGtRbVpyWmxSbVNHZGFaakpsVldOcmFFbG1TR1JsWTBka2MySlFZVlptYUdGbllreGtZMlF5WlVwamVXSmpZa2htUW1OSllsRm1NR2RzYUdGalpHUllhR2hoVEdKa1lUSmlWbVp3YUZoaU1XVkdabVpqUjJaWVpsVmlUR05VWWxSaGNHUnhZVkpoTW1KRlkwVmpUMk14YUVsbFZtUkRZekZrYjJKTmFFWmtVMlZhWWtWbFltZHBaVUpsWm1SaFlrZGhjR04xWjFSaVdHVmtZMFpoVVdGNFpsbGlNV0paWjFKaU5XWk9Za2hvVldkQ1kyOWpTbWRUWTJ0aGVHTkNaSGRoZDJKV1prRmpNV0pvWnpoblFXUldaVzltYldOaFl6TmhSbVpxWmxoblIyZE5ZVEprUkdVd1pYZGlUMlZhWWtabmFHY3ZabVpuTVdZMVpHOWpSbU5ZWm1obU1tUkZabXRtYzJWWllsRmhNV0ZzYUdsaFkyWnVZVUppZDJkVFlVVmpUbVZDYUVab1FXZzBZelZsVVdSSWFIZGlTR1ZoWVZWbWNHTmFZVUZqWjJGNFp6bGlRMmd3WVU1amRtaFlZMmhvY0dWdGFHSmtXR0pOWkZSbVVtVXlhR2RsVm1SVFpFWmlRbU5JWTBWbVIyVmFZM2xqVm1GblpqbGxjV0ZaWVRGaFJtTnhaMU5sYkdSallWZG5TV1JYWjBWa1VXRklabXRvZDJSVmFGcGpiV05hWkdoa1kyWkdabFpsZG1SWFpHdGtZMkZrWlVoa1ZtVldhRk5tWkdWSFlVNW1lV1pNYUVWaU1XWXpZbGxuVVdZNVkxTmtSV1ZIYUZKb1RXZGthRzVpV21GVFlWRmthR1ZXWVRSa1pHRm9aVXBsVEdaSFkwVmxUbWRTYUU1bWQyRnJZbXRtWm1SblpITmxUR05EWVVGbFoyaFhaMDVuZDJVNFozbG1SMlo2WlRGaFptVkRZbmhvYkdOclltRm9RbU5rWlZwaVltaDNaa0ZtUkdWYVlXdGhZMlYyWWs5blZXSmtaMjltUm1WVloyaGxVV05TWkhob1FtSnRZV05tYkdOWlpWWm5ZV1Z1WlVwbVVtWmtaVEZrWkdoRFpsRm1lR0ZKYURGa1IyaEdaM05tZFdWV1lWUm1VV1JHWkV4amFtZFJaRkZsUkdGbllUVmlVR2RVWm5obE1XUmxZbFZpYldSV1pXbG5RbUl5WlU1blVtWmtaV3RvYzJWaVpsZGllR1JCWVRSbVdtZHVaVnBuTW1SVloydG5TV1pXWldWbVNHWlphRk5pVTJGNFoyaGhSR1ZYWkZkaFNtZDVZbU5oU0dKQ1lrRmxSbVZxWTBsb1QyUmxaM3BrYzJoRWFFNW1hV2RuWmt0blIyUkNaREZvVm1abFprUmtkMmhFYUVabE1tTTRaV0ZrUldZellURm9UMmRFWldoa1RtSmFZbVJrYUdOV1oyRm5WMmRWWnpSaFkyZFVZMGhtU21oWFlVWm9WMmR3WVhsaVZXTllaMlJqV0dWVFltaGxXbWh3YUZsbFVtVlpaVmxqWW1Wc2FHOWhaR0ZLWXpKaWNHYzNaVXRuUjJjNVpFaGtVbUo0WVZaaVUyRldZVlZqZUdGeFpXRmlNbVZLWVhGa1ZHRlhZbmhuVEdGSVkxVmpZMmRHWm1KbVZXRkNabU5tWkdSc1lrcGhRMlJHWmxob2FHZ3laRVZtYTJaellWbG9VV0V4WVd4a2FXSmpZVzVuUW1nMFowSm5hbUZuWjBsb1ZXZFlZelJuUm1WVFpESmhjR1EyWm1Wbk1HVktaRTFoUldKQ1lqbGxiMkZTWlVWbWVHTnRZVWhtVkdkc2FIWm5VbWN6WkUxa1ZHSlNZakptWjJKV1pGTm1SbWRDWVVob1dHUnJaM2hpZVdkV1pHaG5WbUZ4WVdObmJHSkdhRE5vVm1Vd1kwMW5UbUZSWWpKb1JXaFhaVWRrUjJKWlpsVm9XbUZxWm5SbVRHTmpZMFpvVm1GMllWZG5hMkpqWVdSalYyVjNaRUZrWTJGT1pYcG9PR1I2WlV4aVFXTk9abkZqUVdSM1pXTm5SMlJIYUZkaFVXZFlaVmhpU0daYVkxTmlVV0ZvWkZabU5HWmtaMmhvU21OTWFGTm5aMkpaWVU1a1RtTjVaMEZrSzJoallVVmtRbWR3WkZOalZtRndaVEZrWldoRlozUmlNMk5sWTIxaGJHTllZVmRoVm1KR1lXbGpXV1pHWkRsb1JtSmpaRkZoT0dKVVoyWm9iR2c1WVRablJXSXdZVVpqYjJkQlpqRmhjMk4wWTFKamVHZDBhRzFuVFdKNVpqQm5aR1JRWm01a1NtZFFabUZuVm1aa1ltSmxRbUZIWkVKbmFHRkZaRUpqYUdKM1lrSm9lR0owWkcxallXTnVaMEZqVldGR1pFWm1TV1pVWjBobVVXTk9aRXhtVldkdFkwcGthV1JsWTIxb1ZtVk9aMlppUm1Sb1pIbGhWV2hvWm5SaWEyWkVaVkZtTVdObmFGRm5WV1ZKWVZSb1pXVkRaRXBsZG1OWlpWSmhhR05FYUZkb1YyaEtZbmxuWTJoSVpFSm1TV0pUYUd4a1NtVjNaR1JsV0dOb1lreGhaR1l6WkhCbmNHaERaRzVqVFdGUllrZG1WMmRuWmt4a1VtSlhaRGxtV0dKU1pXbGtSV1ZGWjBwbk1XaHZZMGxsU21Kb1oxVmlSMmRYYUVKbVRXRmpaMXBsYVdGQ1oyRmxSbWhUWTA1ak4yVlZhRk5qZUdNNVlWTmlhR1ZhWW5CbVdXUlNZMWxvV1dGYVpXaGpVV2RuWTB0alZHSk9ZM2RoV0dWVVptdG1ZbVZHWVZKak1XVlpaRmRsVm1GSllUZGxZV015WldSaWFtUk9ZbWhqWkdoSVowUm9lR1IzWkZGblpXSlZZWGRrYTJWaWFGWmhTV1ZNWVVabVYyRmFZakpsV0dWR1pFRmtXV05FWTFaamJHaHdZbUpsTTJaQ1pXcGlVV0ZYWTJ4bFNtRlhabTVtVm1jMFpWTmhNMmRrWlRab1lXRldhR1JoV21WSFowWm1lR0Z2WkVaaWEySldZMjVvVW1WWFlXZGhhR0pQWVc1a1RXWlFhRmRoTW1abmFFVmhXR0pzWTJ4bFNHRkhZakprV21FMlpVRmhiV00wWTJ0b1kyaHNZM0JuTTJOU2FHcGpZMk5YWldSbFdHY3dZMWRvUVdkSFlUaG9WV1ppWlZkbVdXTXhZa05vZUdOMFluWm5WV0ZWWkdOaVVHZFpaVVptZUdObFptUmtRMmRTWXpCbFRXZDRabWRqTldSQlpIZGpZMkZoWjBkaFEyTkdaa1poWm1ZeWFERmhOR2RSWkdoaFZtRTBabVJvYUdKS1lreG5SMmhGWTAxbFRHTktaWGxqV1dOc1lrbGtaMkphWkVSalFtUnNaVkZpTDJaT1pYZG1TV1ExYUdObmJXaDBaVlppVldOQllYTm9lbVpoYUVGa2RHWkdZMkprZUdaRlpWUm5UV1J0YURGbWVtTkZZVEJrWkdGdllrWmhWV1JuWjFkbFJXVnNaalJtYkdWS1lXaG1PV0poWjBwaFNHRkpZa05vWm1oM1pVNWtSR2RHWW1walNtTk1hRVpoYUdob1pXMWxSbWhIWlZwbmJXUlpZbGhqUVdaVVlrbGtRV05vYUVoalJtTlVhR1JrVm1GVllXNWpVbVp5Wm1Wb2JXUk9aMDVsWVdKclluTm1VR0pDWmtaalJXTXlabFJrUTJGU1pqWmpaV2hGWWtsa1ZtZGxZa2hsV1daVFpGTm9lR2hvWTBSblYySlhZa3BuZVdWallVUmxiR1ZKWWxoamEyUnJZazlsWldWNlpsRmpUMlpQWlZSa01HZzVaa2hqTVdKVlp6WmhSMmRYWldkaFRHZFNabGRvT0dGU1pVVmlNbVk1WTBoaFkySjRaMDVqU0dWTVlWSm5WbU5XYUZWaFFXVTBZbEZsV1djellVcGxSbVpIYUZWbFFtTjVaVlZtV0daa1lWaG5VMkpvWkZwbmNHZFpaMUpuV1dKWlpGcG9hR2RSWW5CbldtWnVaSGhvZDJKV1pUSmhNV1ZYYUdKa1VtUXdZMlJpVm1OV2FFcGxNR1ZoWmpOa2NHZHFaVlJrVjJGd1pVeGpSR0o0Wlc5blVXZGxabFZpZDJOT1prTmhNV2cxWTI5b1JtVllZMmhqTW1WRlptdG5jMlJaYUZGa01XVnNaR2xtWTJKdVowSmhkMlJIWWpCbFRtTlZhRmRsYldaU1ozVmxWMkpIWlRsamNHZGFZVmhsTVdSYVlVVmhRbWRzWm05b1EyY3daMVpsZG1ORlpsSm1UbU4yYUZKaE0yRk9aRWRoVW1nelpGVmtWbUpYYUVaa2VHUjBhRVZrUjJKYVpIbG1WbU5vWmxab2NXWmpaR3hoUm1FelpWWmpNR052WWxkaVRHZ3laMFZtVEdkSFpVTmpPR2RWWVdGb01tZFpaMnRpWVdVellqbG5kbUpYWTJ0a1kyTmtZVWhsVm1WV1pGTmhaR0ZIWVhSaE5tVktZVlZqTVdjd1pGTmhNV0Z3WVVwb1QyVnRZbEpoVFdka1pHNWpXbVZUWVZGb2FHWldaelJpWkdGb1lrbGtaV2RIWlVWbWFHWkZZVmxvYVdkR1pXRm5ZMmRGYUdoaFJHSlRZMVpqY0dneFpXVmpSV04wWVN0b1ZXVkhaR3htV0dkWGFGSm1RV05hWldGa1FXTjBaa1puWW1aNFlVWm1ZbUpaWVZKalkyRnRaMUZsUVdRNVkyZG5WMk13WkVGalJXVlRabmhqUVdSNlptWmtiR05hYUVGb1lXRnVZMnhvVW1SS1pVWm5aR2RWYUVabGFXUTVZbWhoUTJaU1pXZGlaMmRHWVVobGVHWnRaMDVqU0dOQ1oyVmpZbUYzWkd4a1QyVkdhRUZrV21JdlkxVmtibU5TWjNKbVpXVnRaazVuVG1GaFkydGlkR1prWlVaaU1HSlJZM2hpU0dkcVptaG5NbVZYWkcxa1oyUldhR1ZuU0dWWllWTm9VMlI0WjJobFJHTlhaRmRvU21SNVlsbGtXR1ZDYUZaaldHaHNZMUpoWVdkTllrWmtTbUpNWjJSbU0yUndZWEJpVm1NeFpHdG1VV1JIWmxkbFoyVk1ZMUpsVjJVNFowOW1SV1F5WkdSa1VHZEpZbEpqVG1kaFpHRmpSV2hGYUhwblIyUlZZV05tWkdoYWFHMWhUV1J5WjBob1IyUmFZVmxqVldoWWFHUm5XR1pUWTJob1dtSndabGxoVW1kWlpWbG1XbWRvWWxKb2JXSmFaVzFsUm1NMFowZG1iV0U1WlZKbFYyVm9hREZvWTJOTVlXZG1RbUV3YUdSaFYyVlNZV3BpV0dONFptUm5RMlZCWWpOaVoyWlJZMXBpUldWNFlqSmlaR2RzWWtwb1EyZEdZMWhuYUdjeVprVmxhMkp6WmxsaFVXRXhhRVZrZEdGalpXNWhkR2QwWmxOalFXSkpaM2xsVldWcFlXUm9OR2hXWmpKaGRHRTJaR1pvVm1JMVpWcGhSbVZvYUd4bUsyVkhaVVJsYUdKdFpVaGlWR2RzYUhaa1VtUXpaVTFuVkdaU1pUSmhaMlZXWWxOb1JtRkNaVWhuUldGSFlWcG1lV1pXWVdoak1HVnNaR05pYkdSd1ozRmtWbUV3WW1kblRHTmtaa2RtVFdabVlVVmxWV2gzWVZWa1dtUnRaMXBpYUdOamFFWmlWbWgyWlZkb2EyZGpZV1JpU0dSV1pWWm9TV1prWmtob2JHVTJaR1pvYkdKQ1pETmhVMlF3WTNCaVUyaEdaRzFrU21WdFpHUmtibWRhWWxOblVXRm9aRlpsTkdka1pHaGhTbUZNYUVkaVJXSk9ZVnBuV1dOdVpFcGxOR05sWTBKbmNHRkVhRlptUm1Gd1pqbGtUR0pFWlVGaEsyUmxaVzFvVW1SWWFGTmxNbWd3WkZwblpHSkNhR1JqUm1ka1kzaG1aMmhVWmxwaVJXWmpaMjVpWVdoQlpEVmpiMlJIWTBWamFHRkNZMDlsYUdac1pYRmhWMlZHWTFsbFZtWmhZMjVqU21kU2FHUmpNV1JrWjB0aVJtUnRabXhvYUdOR1ltaG1hR2h0YUVoa1EyVnNaMjFrWVdSdFlqRm9WbU5NWm1sa1JXZFdaa2hvVVdGT2FFeG1WV0Z0WVZaa04yWkNZVEpoY0dGQ1pWRmxSV0Z6WWxCaVZXRm9aRUptYTJWVVpFaGhXbVl5YUZWbGEyWkpaMVpsWldkSVlsbGxVMlJSWVRGbFpHVkVaVlZrYm1VNVpubGhUV1ZSWjNSblFXUkZaRlZqYkdORlpHRmxNMk5vWm1aaVptTnVabkJtZG1SV1pUQmtPR1pFYUZwaFIyUkZZa2htWW1VeVpqaG1VbVZGWVRKbU9XaElhR05pZUdaT2FFaGxZV0ZDWmxaaFNXSlZaa1ZuWTJKUmFHSm1hbWN4WmxkbVNHRnVZbVJqZVdKRllrRmplR1ptWTBkbVFtVmFZakZuWm1OU1lWbG1TMkppYUhobVVtUm5abHBuYm1oa1pHcGtTMkpIWmxwaFYyaGlaMUprTUdGa1pWWmlWbVpLWkRCaVlXWXpabkJvYW1KVVkxZG1jR1pNWlVSaU1XZEpaVkZsWW1aQlpVNWlNbUZtWjFWaU9XSkRaa1ptTW1OV1lqQmhSMmN3WWtsaVZXUmhaRlpvYkdWcFkyTm5ibVpDWlhkaVUyVkZZazVrU21WWFoyNWtWV0YzWWxKbVUyRmpablpuVDJab1pqbG1VbVpZWm5ob1FtZHJZVWxsVldGV1puWm1SV2RTWkU1amRtZFNZak5sVFdoVVlsSm1NbVpvWjJSblVtUm9aVzlqU1doWGFGTm1hR00yWmxabVFtaGtZV3BvVjJSR2FFWmxNMmhXWkRCbGIyVlhZMkZoVjJSRlkxZGtSV1ZZYURCbEsyaGFhRzFtV21Wb1lXTmtSbVJXWTNaaVFtY3laakJsWkdaSWFGWm1WbUZUWTJSb1IyWjBaM2xsVFdaVllVMW1iMlZGWW14b2MyVllabVptUTJORllVTm9UV2RUWTBsaVlXZFJZV2RoYUdjMFpFMWplR0YwWTBoaFIyTkZabk5rVEdSaWFFTmpXV2d2WTBWbGFHUkZaVmhvUkdaRVkzTmxibUZMYUdka2IyaDFaR1ZoYm1SU1pWaGxSbUZvWm10alZtZGhaVUZpVFdaWVlWbGlWbU5rWTBKa1NXUkJhRzltVW1oVFkyaGpUV04wWkdSb1FtVnZaRU5sUW1oclpHeGxiV2hpYURGbldtWkhZVmxoTW1oc1pqZG9aR0l4WkdSbFMyVkdZbTFoYkdob1psVmhSbUZqWnpCaVJtZEhaVFZtVFdGWlpWaGxRbVZXWVdKb01XaHdZVWhqU0dkU1pUQm9SR1ZGWTNsaFdtVnlaMDltTW1WT1psRm5ZV2hxWWtKa2VXUllaMnBqY0dkclkxUmpTR05hWXpKaVZXUnJhRWxsVm1obGFFaG9XV1JUWjBobGFHTm9ZV1ZuVjJkU1ptdGtVR2RtWWtab2NHWkpZMUZtTUdac1pHRmpaR2hZWjJoaVRHVmtaak5oY0dad1pFVmxWbWRyWkU1b1IyZFhaWEJqWldaRFkzbGpkR05WWlZaa1UySlpaRXBsVG1ac1ptUmhSbU5oWkVKb1VtRldZMVZvUW1aT1prcGhUbWhxWTJOaVdtSlZZakpsYjJOSVpFZGpSR0ZyWmtSa1ZXaHVaMk5pTjJGTlpURmlaR1ZDWTFwaloyUjBhRzFtUldKNVlXZG1LMkpCWjFoaFkyYzNaRVpoVldFNVoyTm5SR2hHWkVwbWRXaGhaWGhtYzJSNFkwaG1lV1J6WWxObVFXVXpaV2RsVVdWYVlrVmplR1F5Wm1SaWJHTkthRU5pUm1kWVpHaGhNbVJZWm10b2MySkdZV0ZsVm1Oc2FHbGtZMlJ1WjBKa2QyUlRaa1ZqVG1WS1psZGlibU5XWkRSb1UySXpaMVZsWW1ORFpYcGhVV1k1WTJSb1dHSTRZVkJuV1dWNVlYZG9SbVJsWlc1bU9HTkRaMHRvVW1oNGFHcGhUbWRvWTNCamJXWlFaRU5pVldoNFoxcGtlR1EwWkV4b1RHUkdhRkZrYjJKTlpsSm9WV1o1WVVWb1VXWXhaMlZtU1dWRFpYUm5aR1ZXYUVOb2RHUmhhRXRpVkdOWlpIZGxTV05uWjFsbk4yRkVaWGhtUm1STFpsSmxVV0ozWlVsbldtZElaWEJpYjJSalowWmhiR2N2WmxobVVtUm9hRXRoUTJSWFp6bGpSR2hrWmtobmNHYzBZVkZvYUdoV2FEUmpaR0ZvWVVwbFRHWkhaRVZpVG1kYVpGbG5hbUpHYUhkaVltTlZZbWhtVkdkU1oxaG1RbVF4WW1WbVJXSjBZak5qWldadGFHeGhXR1pYWjFKblFXTmFZVTlrUVdaMFoxbG5ZbUV4WnpCblpHVkpZbmRsU1dFNVpsWmtRbU5OWVdkaVJHSnRaMHBoVVdaU1puaGlRbVJ0WTJObGJHUlpZbFptWVdacFowcG9VbWRoYUZabFkyTktaVVJuVldGT1oyaG1SbWhvWldoaWJXaEdaRWRpV21SdFpGbG9XR1YwWW1WalRHRklZVUpoU0doSVpWSmtNV1JXYUZWaGJtaFNaMmxqVldoSFkwNWtUbU5oWkd0bWMySlFZVlZrYUdWQ1pHdGxVbWRFWldOa1RtZEZZVlJrT0dGV1oxcG1XR0phYUdWblRXWkdabk5oSzJGVlpVZG5OV1o1WTJWaFEySlZhSHBrUkdFd1ptTmtXbVpRWVZSbGEyWmFhRVptUkdOVlpYUmlSV0ZxWm1ob1JXZEZabE5qYzJGRFpFOW5SMkk0Wmsxb1JXZDVZbmhtVDJWaFpFUmliR2RJWm1GbFFtVldhRWxoVldoRlpXTm9XV2ROWlhkb2JHZFZaVWRvUjJSb1lqaG5SV05xWkRoalYySkhZMGhsVldOdFowcGtWbU5PWWpWaFRXSm9ZbmhtTW1OaVluaG9lR0ozWVZOblIyWTVaRTFuVm1KU1lsRmhVbVJXWkZabmIyaG9ZMFZtU0dWblptTm5WR015YUZGbFNXTlNaWGhvVG1oRGFFSmxkMlpOWlhsa1RXRjZZMDFuVjJOSVpGZGphR2N2WjJKak1HVnpaRVpsVVdjd1l6bGplR0ZsWnpKaWRHZGhabE5tUldGT1lrcGhWMlpwWW1oaE1HSlpZbGhsWkdnMlltRm5WbVZqWm1aa1VtVldZbU5pY21kWVpuZG1kMlZuWkZoaWVHUk9abTVsUldZelpqaG5WR2RHWlZka1JXTldZMFZpTTJSd1lraG5SV1JIWkZwaWVXUldZMmhtVm1GcFlVbGhSbVU0WjJ4aVJXaG5ZblJoVTJKaFpGaG9kMk5YWjFobmFtRk9aV0ZoU21GVVpVbGliMmRRWW5oa2RHUjJaMVZrYUdaTmFGSmlTR1JSWm1SaFpXVmtaRU5pU21VeVpWbG5kMkZvWkcxaFUyVXdZMEpsWW1GRlowUmtPV2R0Wm1SaWJtZGFaMU5vVVdSb1pGWm5OR1ZrWVdobVNXVmthRmRuVW1oR1lscGlTMlp1WmpWbVlXRmpaMFZtYUdoRVkxTm5WbWR3WmpGa1pXRkZZM1JrTTJabGFHbG9aR05pWVdOaGVHRkJZVnBvWVdGQlozUmlSbVJpWjNoaFJXUlVZV0psTUdkalkyZG5SV1F4YUhCaGIyUkVaRlZtYUdaaGFGSmxNV0U1WkcxaVptTXhZbHBuVVdSaFoyNWlPV0ZTWTFwamJHVjBaR2RsUm1kdFkyeGxhR1ZHWm1oamFHVnRhRVpuUjJkYVkyMWlXV2RVWmtaaFZtWmpaMnhoY0dGUVlVUm1RbVV4WkVwbFZHVnVhRkZpTkdkalpUSmpUbUpCWm1Ga2JHZHZZMFJuWldSQ1lrSm1hMmRVWlVobldtUXlaMVZpYTJGSlpGWmtaV2hJWWxwbVNHZFRaM2RtVm1aRVlVZG9SMmhLWm5ObFltSnVaMEprV21aVVpqSm5UbUZoWm1SaldHUm9aRXhtWkdnelozQmpjR1pXWlRGb2EySlJaRmhtTW1KblkxZG1VbUpYWmtsaFIyWklaakJtVm1KSVpHTmllR1pPWjBoallXUkNZMVprU1dKVlpFVmhZMmRSWWt0bWJtRktaMHhsUm1OVFkwNWllV2RVWkc1aFkyTlpZbE5pYUdOMFozQm5ZMlpDWTFsblEyaGFaV2RsVW1WeFlsUmxSMlZHWm5kalZtUlhZVGxrWVdOU1kzaGpNR1JrWTFaaVZtTkpaRE5uWVdVeWFHUmxhbUpDYUVkb2NHRlZaVVJvTVdVNFpFSmpXbVJHWjFwb01tWmFaVEZpTldGdlkwWm1XR0pvWWpKalJXRnJaSE5pV1dOUllURm5iR05wWm1ObWFXWkNaWGRqVm1SVllVMW9aR0ZKWjFOaVpHZzBaVkZtU0dWalpqSm5SbWRGWVhobWVtTkZaRUpqYkdodlpFTm5NR2hXWm5aa1JXWlNZVTFsY0dkRFpFTm1SV2RVWmxSbE1HWkpZMVprVTJaR1lVSm5TR0pGWTBkaVdtTjVaVlpqYUdWV1puRmtVR0pzYUVabU9HaFRZMnRuY0dkV1pscGlWMlJHWTJWaVIyaElaWE5sVldWT1pXMWtXbVJ1Wm1OaVJtRXhabTVuVTJJd1pXTm1RbVJCWmxab1ZtVm1hRTFrYldaS1pEWmpZbWRyWlRGaU4yWlJaV2RsVG1OVFpGRm5SMkZTWkZOallXaEhaSFJpVTJOVWFERm5UbU13YUdSaGJHVlNaVXhsUldZeFp6VmlXbWROWjFkaGJHTmhaMk5rUldKb1kwUm1VMk5XWW5CaE1XZGxaMFZqZEdFemFHVm5hV2c1WWxoalVtWjRaVUZrU21GalozbGhSbWRHWkdKbWVHWkZZbFJrWW1Vd2FHUmxlbWRGWnpCalpHWnZaVmhtVldkb1lVNWpVbVIzWTBwamVtaGFZMFppV1dSbVlXRmlhbVp3WjFKbVptaEdZMk5qWldWaVlsUmpkR0pvWVVoblVtWm5abkZrWVdaWFkzQmliV0ZNWTFoaVFtTmxZMk5pYkdodlkwVm9SV1JTYURCaFZHVlZaRzVsYkdReVkyVm9ibUowWW01bllXZHJhSE5pVUdSVlkyaGhRbWRyWTFSblNHTmFZaTlrVTJoWFltZGtWbU5sWWtob1dXSlRaMU5sZUdGb1kwUmlWMlpUWVZGbE9XVkpabTVuUW1KQlpXRmxWV1JzYUdGaFpHUllZbWhsVEdaa1lUTm1jR1Z3WkZab01XTnNaV1ZtUjJGWVlWVmhUR2RFWTFkaE9HaFlhRVZpTW1Sa1kxQmtXV0ZvWjA1b1ltUmtaMEpvVm1GR1pFWm9hMlEwWVZGbFlXZ3paa3BtU0dSSVprZGpXbVI1WWtka1dHVmtZMHBrVm1GQlpIUmpjR05pWmtaaFFXVlZZVnBpYkdWS1ltMWhZbUpZWVhoamQyTkZaVWhpVW1oM1pGSm9lR013WkdSaVZtRldaVXBuTUdGaFpETmhjR2hxYUZSblUyZDRaRXhsUldoV1lVbGhRV0ZtWXpKaVdtY3lhR1JtYkdKS1lrTmlSbUZZYUdobE1tWkZZMnRtYzJGWlprUm9WbWRzWVM5blkySnRaRXBvYkdaWVptdGhUbWRFWTFkb2FtZDBaVFJoVVdoSVpHTmhkV1ZGWkdkbFZtTmFaMGRpZUdkclptdG9aR2hyWld4bGRtVllaRkpqVG1aclpGZGtibUZPWkZGb1UyVXlaV2hoVkdGVGFFWmxNV1ZoWjBWbVNHVTFZVmxuVm1Ob1kxWm5jV0ZqWjJ4b1JtUXpaMVprTUdkdloyWm5ZMlZyWTNOalYyUkhaa2RvV1dWVmFGcG5iV0ZhWldoaFkyTkNZbmRvY0dkWFoydGtPR05PYUVoaFZXRm9aVkJrWVdWWFluTm9lV1poWkd0aE1HaHBaMU5oZUdoS1lsTmtRV1JYWkZKaFFtWmtaV2xrVG1GS1pHRm5RbUZXYURSb1pHRm9aMHBoVEdOSGFFVmpUbU5hWjBwaGVtWTBZV3BpVG1KVloyZGtXV1paWnpGbWNHWXhaMlZqUldaMFpETm1aV050WW14b1dHUlhZbEptUW1SUlpVeG1aMkowWVU1bVNtRjRaa1ZpVDJGalpteGpjR2g2WkZWamEyZzFaRzlpVW1aM1pqQmhSV05GWTJ0bFNXSnZZbU5uYUdWbllWWmpaR2hZWkVwbFFtWmtZekZpYUdKTFowSm5iV1JzWmpkaVJtSm9ZVUZsTW1GR1kwaGxiR2h0WkdKbFIyZEdaRlpuWkdaV2FIQmxWMkpHWjBKak1XUm1ZVlZqYm1ONFl6WmpaV1Z0YUhobFRtZGxaV3RvU1dWVlltVm1RbVpDWTJ0bFZHTklZVnBsTW1kVlpHdGhTV05XWldWalNHVlpabUZuUW1aU1pXaG1TV2RTWTBkbFNXZG1aVTFuVTJaUllVRm5WR2RTWW10blZtUkpZVzVrUW1aYVkyVmxNMmh2WlhObFdHZHNZMEZrWTJSSGFGZGtRbVJFWlZKbVYyUkpaazFsUldWNlkzQmxUMkZoWVVSbGJHSklZbUZsUW1SV2FFbGtWV1ZGWW1Ob1VXWmFaMmxsT1dnNFkwWmhWMlZ3Wm5sa1ZXVllabVJrV0doVGFHaGlXV1EzWWtwaVJXSktaVTVqVG1GR1luQmxiV1ppWjJwaFJtWjNaMU5oYldRNVpWaGhWbWhvWkRCalNHaFdaMVZsVG1nNWFHRm5NMmhDWkdwb1FXSXlhSEJqUW1aRVlYcG1PV0ZTWmsxa1FXZFNaRFJvU21Wb1lUQmpWbVpJWTFkbmNHVTJhRVZoWjJWTlpGbGlWR1ZzYUd0aGJtVmxZakpsZEdOaGFGTmtSV0ZPWWtwaFYyaHVZVlpqTkdkR1lXNWhOV2d5WWxGa01XZGtaVnBpUldSQ1lteGtiMkpEYURCaFZtRjJZVWRuVldOR1ptaGtSV1pEWjBaa1lXaEZZbmxtTUdaV1pWWmtWbUpCWWtKaFVtSlRZV2RoZUdoQlpXeGhkMlpzWWxCa1JtWkdZaTlrUVdZd1kxbGpWMlpQWlRKbk1HaFhhRlZoVjJKdlpGVmtTV0V5WW5Cb2FHWlFaekZvYkdOMmFFVm5hMlEwWW1SaFVtUnVaemxuVTJWa1lVZGtkR2MyWlZsb01HRXhabkZqVTJSM1l6bG5VMkZTWW1sbVZXZGxZbVJsYW1Ob1oyVmxZV0pDYUZab05HVmtZV2hrU21STVpVZGtSV1pPWVZwbFdXaHVhRXBpZDJKalpVSm5kR05RWTFsbE1XRndZakZsWldKRmFIUmtNMlZsWVcxa2JHWllaVmRuVW1WQllscGpZV0ZGWTNCaFNtUlNZbEpqUldoVVoySmtNR2hrWVhwb1JXY3dZMlJtYjJaR1lWVmxhR0ZSWVZKbE1HRldZVzFuWW1VeFpsbGxUbVZoYUc1b2FHRlNaMUJpTVdKa1pFaGlSbWRwWkZwbmFHaEhZM2hsYUdjellrZGpSV0Y0WjIxaldXaFlhRUpvVm1kaVp6Rm5jR2hJWjBoblVtY3haRlpvVldWdVlWRmxkR2hsWjI1bE5XZE9ZVmxvYkdOdmFGQmxWR2huYUhobmEyaEhaRmhqT1dNeVpGaG1NR05KWTBWa1pHRkdaSGRoVTJSVGFIaG5hR1ZFWTFkbFYyRktZbmxuWTJSSWFFSm1TV1pSWkRCamEyRlhabVJuVjJaV1pVeGtUV05ZWTNCb00yTlRhRlpvYTJKQ1kwWm9WV0ZKWmt4bFVtWlhaemhvVW1WRlp6SmpPV1JJWkdOaWVHaE9aMGhuWVdSQ2FGVm9UR0pWWVVab2IyVlJhR1JrUjJoR1lsZG1RMk5JWm1Sb2RtTlZhRlJoYUdOWVlWWmtVbVpaYUVWa1NXZEZaa3BpVVdKaFlrVmpVV1Z3WVUxa1YyVnNZV2xoVjJOWFlUbG5XR0pXWlZGa2EyTlZabFptVm1RNVlqQmtRbVZxWW5Obk0yRkNabGRsVVdKaVlsRmpRV1pWWWxsalpHUnJaVUpvTW1GbFl6Qm9WbUpXWVVoalNHUm9Zbk5oUldac1puTm9WV0poWjFabWJHUnBZV05sYm1SQ1puZGlVMk5GWkU1blNtRlhZVzVoVm1JMFpWTmllV1prWmpaaVpHTkdaV05qWTJORlpVRm1XbU52WTBkaE1HTldZVEZqUldWV1luUmhkbWhUWjI1blRXWkRaRk5tTUdaSlpsWm5VMlZHWVVKbFNHVkZaMGRpV21WNVpWWmlhR2RXWTNGbVkyTnNZMFZuTm1oV2FERm5ZMlZYWTB4aFIyTkZZa3BpUjJKSWFHTmxWV2htWjBkbVdtTnpZMWxoVm1ac2FFWm9WMk5yWm1OaFpHTklabFpvVm1oVFptUmlSMlYwYURabldXUXdaVEZtY1dKRloyZG9PV05RWkVWalNHaFNhRTFuWVdaSWFGbGlRV2RSWjJ0aGEyVnJaV1JrYUdOd1oySmhSMmRHWVRWa1JXaG1aek5vU1dWcFkyTm5SV1UxYUVabVUyUlZaWEJrTVdSYVpHdGtkR0p0WkdWaWJXaGFaMWhsUTJONFltdGhXbUprWm5kbmRHZFZZV0prZDJoelpsUmpabWd4WVhobFdtaEZaakJrWkdGdlowWmtWV0pvYUZGa1VtVjRaVUppYldSalltaG5RbWRoYUU5bFNHUktabHBpV0dOV1lXUm5TMmhHWVcxamJHWm9aRVptYUdGb1pHMWxSbVZIWVZwb2JXRlpabE5qU21kV1kyTmpiR052YUhGbVdHVkZZMnRvWkdKWVlVUmlWV2R3WlV0b1YyUnpaMlpvV1dZd1pHTm1iR05WWW1ob1FtVnJabFJrU0dSYVp6Sm9WV1JyWmtsaVZtaGxaVWhqV1dkVFpGTmplR0puWmt0b1EyVm5aM2RsZW1SSVoyNW5aMlZoWTFObWEyVnJaMGRpUzJOWVpXZGpXbVprWmpKaFpHSXdabE5pYkdSclpVSmpSMlJYWm1OaVRHVldaVlZtVldKU1kwVmpNbU01WlVoa1kyWjRZMDVpU0dSaFlVSmlWbU5KWlZWblJXSmpZbEZtV21SdVpVcGhWMkZEWjIxaWNHWTJZMWRtVTJOU1lsaG1WbVY0WkZsaFoyTk5aVzVrYUdKYVpFTmhRbWgzWlRCaVltUXlaVVprZG1GV1pGaGxOV0poWTFoalVtZ3daVTVsV0dKR1l6VmpNR05aWTNwbFVtaHFaVlZoUjJKdllrNWxRbWRzWVhOaE5taGFZVVZpZUdFeVptUm5iR1ZLWkVObVJtVllZMmhvTW1WRloydG9jMlZaWmxGbk1XWnNZV2xrWTJodGFIQmlkMkZSWjBWb2MyTklhRmRoYldKb1pUUmhTbUZxWlZsbGRXZEpaMVpuYTJWbVpsaG5SbU5aYUc1aFYyZFZaVEJtUTJOVlowVm1ZMlp1WVZOaVZHWTVaR05sUVdKSFowSm1TR1ZSWTFablFtZEpaa1ZtUVdWelpIcG1RV1pzWnpGbWEyTklaV3BpT1dWc1lsaG1hMmhOYUdGaVVXY3laMFZoVjJGSFpFZG9XV1ZWWkZwbWJXaGFaR2hrWTJWR2FGWmpkbWRYWld0bFkyZGtZVWhqVm1GV2FGTm5aR1ZFWVd4a05tSmhhRlZsTVdOcFpFTm1aMlk1WkZCaVJXVkJaMnRpVG1kSloycG5OV0pqWVVWbGJHWnZablpsWm1oblkwSm5TR1ZIWVVWbk5HTllZbUZsTTJSMFluZG9ZbVpGWW1oaFUySlRZMVptZUdkNlltVm9SV1pOWnpWalpHTXlabEpsWW1kWFpGSm1hR05aYUdGb1FXUkdaRmxtWW1kM1kwMWpZV05hWm10amRHWmFZa1ZqTUdGa1ptOWtSbWhWWjJoa1VXTlNaSGhrUW1KdGFHTmhiR05aWWxab1lXWnVaRXBuVW1oa1pERm9aR1pMWVVoa2FtUjBaR2hpU0dOUmFGWmxiV0pYWW0xb1dtVjBaRmxsVkdaNFkxWm9ZMlZWWldSalNHZEVZa0pvTVdSTFpGVm5hbU5rWTNKb1pHZFhaazFrVFdGaGFHeGlSV1ZRWVVWbFVtaENablZpVkdkQ1luTmlNMlpDWW1kamIySmlaa3RsUkdWc1owWm5VV04zWlhCalVHTlhaVmhvVG1SNVoyWmtXR2hCWjBWblUyaHJaRUptVjJGWVpqTmthR0pNWVdSak0yaHdZbkJsVm1NeFkydGxVV1ZIWmxkaloyaE1ZMUpsVjJNNGFGSm9SV0l5WXpsbFNHRmpaekJoUm1OSVkxbG5hR0pWWjBwa1ZXRkdZMnRrVG1OYVpXMW5RbWRYWVVWbk1taDRaSGxqVjJKVVkyeGhZMlpSWWxKbGNHUndhR0ZvVm1kalpGbG9ZV2RSWld4bmJXaGtZMGRsYUdJMVkxZG5WV2RXWm1GalVtUjRhREJqWkdoV1oxWmtTbVF3WW1Gb00ySndhR3BrVkdkWFkzQmlUR2RFWmpGbFNXRlJaMXBoUldWM1pqUmpaR1pzYUd4aFEyZFhaMWhvYUdOdlpFUm9NR1owWVdWbFlXWldZV3hvYVdkalltNW1RbVIzWjFObVJXTk9Za3BoVjJGdVpsWmhOR0pUWnpOaFpHSTJZMkZoVm1Oa1pscG1SV0pDWm14b2IySkdZVVZtVm1KdVlrZGpWV0ZDWkhabVYyVnVhRTFuUkdSVVpXMWhVV0pXWjFGb1FtTTFhRWhqUkdkWGFGbG5NR0pZWjNoaWVHWkJZV05qYkdOR2FETm1WbUl3WjI5aVYyWmhaVmRpUldoWFkwZGxSMk5aWjFWbldtUnRhRnBpYUdOamFFWmlWbVYyYUZkamEyTmpaVWhsU0dOU1puUmlVMmRtWWpKa2MyRXlZbGxvTVdaT1pUTmxVMk40YURWak5HVkZZVWRtVW1WTloyUmlibVJhWlZOa1VXRm9aVlppTkdoa1pXaG5TbWRNWkVkblJXZE9abHBoV1dSdVpFcGpkMmhqYUVWbGFHTmpZbE5tVm1OS1pqbG9TMlV3Wm5SbWNXWmxZVzFrUldKR2FGZGpVbU52WWxwa1MySlJaWFJrU1dSaVluZG5RV05oYUdKaE1HUXhabnBuWm1GbllWbG1PR1JZWjFWaFdXRkJaa05uUldOa1lYVm9XV1pHWVc5b1ZtaEtaVmhrZEdKWlpHVmlNV0prWjBOaFYyRkhhR3hsY1dSRFpIaGtaMlJ4WjBobVYyUTVZVTFuV1dOWVpVSmxWbWhpWlRGa2NHSklaRWhvVW1jeFkxWmpWV1p1WjFKb2NtRmxhRzFuVG1aT1ptRm5hMkZ6WkZCaFZXUm9ZVUpoSzJWVVpFaGlOV1VyWjBGb1ZXaEpaa2xvWldORFlsRmpVMmRSWVZKbVoyUjFZMGRtUkdkWlp6WmhabUZwYUVGblNHRkdZMFZpUm1KSlptVmpXR1puWWtob1pHUXpaR1JtY0dSU1pHeGpRV1pSWTBWbk1tRm9hRzFsUW1SRVluUmhXbVJJYUZSak9HZEpaVXBvUW1kMFlsWm1XbUpDWWxWbFNHTlhaRlZsTkdWallscG5ibVJ2WWxsbVJtZFlaR1JtZVdSUmFGaGxOV0psWlZGb2QyUXhaVVJqV1dWU1lsbG5XV1phWVdoa1VtZHRaRnBuYldkR1lYZGtWbVpYWVRsbllXVkRaVUptTUdKRWFGTmtSbUpLWm5ObFkyVkdZVUpoYW1SVVpGZGpjR1JNWmtSa01XVkpZMUZvV21aRlpIaG5NbUprWVd4bFNXZFhZV0ppYW1WR1lqSm9SMmhWWW5SaFNXTlFZbXhqYkdNdlpHTmhiV1ZLWTJ4aFdHRlZaazVtVUdKWFptbG9XbVV3WVZOb2VXVmtZelprV1dKcmFIQmxXbVZZWTFKbVZtSnZabGRoUldGV1ptZG9SR05DYUU1bk9XVlZabTFoVldKbVpWSmhlV0ZqWWxablVtaFZaREZvU0dKRGFFVm5lR0Y1WjFabGFHSldZbkZrWTJkc1pVWm5NMk5XYURCbmIyRlhZMWxsU0dOdlp6aGhSMk5IWjFsalZXRmFabTFtV21Kb1lXTm1SbVJXWjNab1YySm5aa1prVTJWVVlURmxWbU5oWWxoamJXTjBZVFppV1dnd1lURm9jV2hUWlhkaU9XVlRaMFZoUjJGU1lrMW1aR05xWkdoa1UyZFlabmhpVm1aM1lVOW9RbVpLWWxoblFtZEZhRTFqVjJkaFlqTm1TV1p6Wm1OaFFtTjBaRkJpVTJOUmFEbGlNV1ZqYURGaFdtRXphRTVqV0dSS1pqbGxWMkZTYUVGaldtSmhZMEZqZEdkR1kySmxlR1JGWjFSaVltUXdaMlJvZW1KU2FHdGxaR1l5WWtab1ZtaG9aVXhsWW1KU1pVSmliV0ZqWVd4b1dXSldZV0ZsYm1WS1lWSmtaR2d4WjJSaFMyZEdZV3BoTUdGaFpGaGplR0pvWm5SalJtWkVaVmxtWW1WWllWZG5NV1JXWW1aaFZXSTVZMU5qU0dWU1kzUmtWbUZJWVVoaWFHaHlZa3RvYldST1prZGtaR013YUhSa1EyaFlhR2hvUVdKeFoxUmpTR0pzWm5KbVZXSnNaa0ZsUVdGaVpHNWtiMlJUWVVoa2FHSm9hRTlqVW1oSGFFcG9jV1pYWm01aFFtaEpaMUZtTUdkc1kyRmlaR2RZWjJoaFRHRmtaek5oY0dobloxUm9TR2ROWlZGa1IyRlhZV2RuVEdaU2FGZGlPR1JTWWtWaE1tTTVaRWhsU21JeVptZGpUMk5oWVVKbk5XRkpaVUZuUldaalpHUmlXbUpxWXpoaWNtRkdZVlJrV21kMlkxVmtWMkZhYUVabVZXUm9ZMXBoYW1oWllsVm9PR2hFWjFSaFFtaFNZMjFuV21kdFpFWm9kMlZXWjFkbk9XUmhhRWRsYUdaUlpFZG1abVl4YUVwbU1HTmhhRE5oYjJRclpGRmhWV2RDWVV4a1JHVXhZa2xtVVdaSlltaGthMmMwWVU1aVVXWlpZa3huVjJWcVpscGtNbWRIWkdobk9HVlNZVkZpZDJSS1pVbGhZMk51WTBKbWQyUlRaMFZuVG1aS1prUm9SR1pSWlhGalUyWjVaRlpvTm1oa1pVWmlZMlpEWWxSa1VtTmpZemhpVW1ORVlsbGpOMk5SWlRGaGIyTm9aa0ZtUjJabllUVm5VbVl5WjJkalZtRlRhRVpvUW1kSVpWSmlSMlpuWmpOaFJHaHJZMVZuYkdoSllrRmpWV1pyYUZaak1XSmpaRGhvWVdoWFprVmxWMkZIWmtkaVdXaFZZMXBrYldGWllrRmlTV1puWVdObGRXSkJZakJqYkdGVllsUmphbUZSWkVGa1NtaHBaRzlrYW1KWllYaGxSV1l5WkZsbVVXZzVaMU5uUldoSFlWSmlUV05rWm01aldtVlRZa0prUldKQmFESm9UbWhWWTFsblEyaFdZM2RpTVdGYVkyRmxhV1ZhWnpWbVkyRkNaRTVqY0doVFlsWm9jR1l4Wm1WaFJXaDBaak5uWldadGFHeG9XR0ZYWlZWblNtTmpaRkJuUm1NMFpWaGxTV1ZTWjBWaFVtUkdZa0ZvWjJWNFpsZG1VV1pKWW5KaVVXSlZZMmRsZUdoR1oxVm5TV2h1YUV0bGVXTnpZMWhtWVdOdFlqbGpUV1JrWm5kalZtTkZZVlppVTJGblpuUmlWMkpvWlVGb2VXSklZMWhvTVdkTloxbGlXR05DWjFaalltUXhhSEJuU0dKSVpsSmtNR2RKYUZOalZtZzFZM0pqWldKdFprNWpUbVpPWXpCalkyUnNaRlZtYUdSQ1ltdG1WR1pFWmtGaGFtTklhRUZtUm1GQ1owMW1WR2hzYUdOalUyTjRhRUZoV0daV1oxZG1TV1puYUdWaFdHVkJaVlJrWVdkVlpHeGtZV0ZrWjFobmFHZE1aV1JuZVdSM1oyOWlRbWhXWVd4aFdtUkdabGRvYUdSUFoxaG9hMkZWWkZKaFJXTXlaemxoU0dKalkzaGpUbVZIWVZsalJtaE5abVJsU0dkbloxSmhSV1ZNWTNwak1HVlpZMFpuVjJSSllUbGhWMlpJYUdOblRXZFphRUpuV21Gd1kxbGhVbVJaWkZsbVdtSm9aMUpqYldKSlowUmhVV2NyWkVabmFtWnpaRlJoUTJWR1kwMW5aR0ZJWWxab2IyUm5ZMXBqTTJadmFIaG1VbWhIWTI5b1VXZEthRlpoU1dOUlpscGpSV1I0WVRKalpHWnNaRXBuUTJaR1pWaGlaMlJyWkZaaWVHWTVZVTVrUldSU1pXUmthV2RLWjJwaFoyZzFaRWRpTUdGTlpVRmhSbWhEWlZsamMyVkRaV3BvYTJRMVpFeGtRbUZuWkdaaFJXSkdZa1pqUTJaRFlUQmpWbVYyWkVWalVtZE9ZM1psVW1FelkwMWtWR2hTWkRKbVoyTldaVlpoTVdoQ1psQmtSMlpFWlVsb05tTklaekJuV21aclpVUmtVbVV3WnpSa1FXRkZZbTlsVEdWaGFGaG5SV2htWkVaaVJXSjNZMVZpV21adFpGcG9hR1pqWVVabFZtSjJhRmRtYTJWamFHUmlTR0pXYUZaalUyVmtaRWRsVFdGMVprdGtkMlZSWVRWbFVtRllZVUZoWVdKWFlsTm9UV2hGWkdSb2JXWjBZVk5sVldGb1ozaG1NR2hZWVVKb1NtTk1ZMGRvUldoT1lscGhXV0p1WTBwaGQyUmphRVZuYUdSRVlWTm5WbVJ3WkRGbVkyVkNaRGhqTDJoTlpIcG1jR05hWkVOaU1XWldaVlZtUzJaVllVbG1UR1pMYURGa1VtSkNZMkpoTVdad1ozcGlXR05TWkVsbGEyVlhaVlZoUm1WaloySm5VbWhDWm0xbFkyTnNaRmxsVm1OaFpHNW9TbWRTWW1SaE1XRmtaa3RrUm1OdFoyeGhhR2hHWTBWaU1HaHZhRlZqUTJoTlpHZGxTMlZFWlRSaFVXVkxaekZsYUdSSVlVRmlRV0pDYUZaa1FtRnBaREJtTjJkUWFIbGhkMlZNWm1GaGFHaHJaMnhqVldWb2FFSmxhMkZVWmtobFdtZ3laVlZuYTJGSlpGWm5aV2RJWTFsb1UyVlRabmhoYUdoRVpWZG1XR1l4WVhsbFNXTXpaelJoVEdoQlkyZGxWV1ZYYUdaaFUyVjNaMFJvVUdocFlteG9iR2hXWTNkaE1HSmFaRTFrTW1GbllreGxVbVZYWXpob1VtZEZZakprT1dOSVltTmhlR1JPYUVoaVlXaENaMVptU1dOVlpFVm1ZMkZMWWxwaGJtaEJaa1pvVVdoVVptZGlOMkZJWTNwa1FtVldaRk5oWjJOMFlqQm5XV1pWWlVwaVFtWk9ZbXhrUldOd1owbG1SMmhGWld0a1ptSXlaamxpWVdoU1puaGhNR05rWmxablZtRkthREJrWVdZelluQmxhbUZVWjFkbWNHVk1ZMFJqTVdOSlkxQmhXbVJCWWpGbU5HSk9ZVkppVFdWUFkxZG9XR2RCWldsb1YyUm5Za3BuVEdoVWFERmphMmN5Wm1aaWJtaEJZMmxqVVdOWFkyeGtTbVJYWTI1a1ZtUTBaRk5qTTJOa1lqWmxZV05XWm1SaVdtaEZaRUppYkdkdmFFTm5NR2hXWm5abFEySjRaazFvTldWRFlrUm1jR2RZWVZKa2VXWlpZMkpoUTJSNFprVm1UR2hZWWtkaE5HSnRZa2hvYkdSM1p6VmhabVZzWmtWb2FtaFhhREJpY0dSRlpGbG1SMlZuWkRobFIyTkhZMWxvVldWYVlXMW5XbU5vWldOaVJtZFdablpqVjJOcmFHTmpaR2hDWnpGb1ZXUmpZazFvVkdoNFpEWmpTMmd3WjFWb0syTlNZWGRpT0daQllVZG5XR1U1Wm0xbFpHZHVZMXBuVTJKUmFHaG9WbWMwWldSbWFHWkpZMWRqVFdoclpFNWxXbWRaWm01bFNtTjNaR05tUldkb1prUm5SR2gzYURoa04yWlBZM2hvT0dFclowNW1VMkZrYUZobVJtSjRZMmhsVG1GYVpFRmhjMk5ZWmxwbmFHZEdhRWxsVW1SVlkyUmtlbWhGYURCalpHWnZaMFpsVldOb1oxRmlVbVo0WmtGb01HSk9ZbmRuU21kQlpVOW1SR1Y0WWxKblptSjNhRTFuUTJoWVpYcGxjR1YyWjJGa1ZtZFJZbkJoVVdNeVpWcGxOMmhaWTFka1FtWldZMDFqTVdOdllsUmpSbUZDWjBabVZtRlhZV2xsUVdWcWFFMWxlbWhDWWtSb1JtaFJZazVrUjJkR1kxWmhhR0ZyWlZWaldHaGFZMjFuVldKb1lqUm9WbWhMYUc1a09HSmxhRk5pTUdWM2FFeGlSV1pFYUVaa2NHVlhaRzVtUW1KSlpsRmpNR2RzYUdGblpHUllaMmhuVEdWTFkyeG5RbWR3WlZabU1XRnJhRkZsUjJoWFoyZGxUR2RTWmxOamJHRkZZbGhqVTJaM1lWUmpUMkpzWm5kaFNtaGhaVVZrV21OQlpVSmpSV2cwYUZGaVVHWldabWhvVjJWR1pGZGpjR1Y1WTFWaVdHUmthRmhvVTJOb1oxcG5jR05OYURGbVRtRk5ZMDFpTUdSWloyOWtXbUp0YUd0b2EyaElZMU5pV1dSS1pWTm9WMmhLWVZKbVIyUm5ZVlprTUdKa1pXNW1jR0V4WVZkbVNHTTVabGxpUjJWc1lVbG5WMlJhWVVKb2FHZ3ZaMlZvYkdkS1lrdGhVV1pVWVVGbkwyaFJZMVZqVm1GdVowTm1lR1JCWVd4b1QyRnVaMEpvZEdWVFowSmtaR1JLWjFKaFIyRjBabTFrVTJneVpWcGhjMkpaWmtaamRHaGFhRkpqUm1GRlltaGlWMmhHWXpWaFJtSkZZbEppVG1oMmFGSmpNMmhOWVZSalVtSXlaV2hpU1dGWloyeG9RbVpJYUVWaVIySmFZM2xoVm1ab1oxWm1jV1ZPWVVGaVVXYzFZMFpoUW1jMVpHWmtTbWRwWWpoalYySlhabGRtTldkQlpHRmliV0ZaWm5wbFpXZFdabFZqTUdkalkwVmlZMkprWTBoa1ZtaFdaMU5uWkdGSFozUmpObVpaWkRCbk1HWTRhRU5rYkdneFkxTmlWMlpYWkZKa1VtUmtaR2xtV1dOVVlVVm5SV1JaWnpsaFNHUXhZM2RtWm1oRllrSm5aR1ZXYUZsa2FXSkNZbmRvVEdkQ2FGSmlSR1JYWlVWbGNHSTRZVmxqTW1oR1p6Tm5aV0p0Wm14a1dHUlhZMUpoUVdSYVptRmxRV1IwWWtaaVVHZFdZMUppU0dKUFptaGhWV0k1WVVWaE1HUTRZamhrV0dKUlpFVmlSR1JUWTFkaU9HSnhaMUJsVVdORloxWmhaR2N6WmtwaFNHRlpaV3RvU21KYVpFRmxNbVJzWlc1aFJtaHNaVVprZG1SSGFFZG1XbUYxWVU1b1ZHaG5hR05vVUdaR1oxRmlOR1JXWWxaaFVXaFRhRWRtYm1oU1pqSm5aV2RwWkhCb1RtWmtaa1ptVldSU1kxVmxaMmRHYUhsa1VtTllZM0JrTW1kQ1ltZGljR0ZqWlV0b01tY3daVFJvVTJaNFptaG9SR2hYWkZkaVNtRjVaV05uU0daQlkxWmhZV1ZWWld4a1lXTmtaVmhqYUdGTVpXUmhNMkZ3YUhCbldHSjNaa2xoTm1OSFpsZGxaMkZNWTFKblYyVTRhRkprUldNeWFEbG9TR1JqWlhkalFtVlNZbU5sYUdoVllVRmtWMlJEWW5Cb1VtUk5aR3BqY0dSWllsSm5VMkpWWkd4bFYyRlhaMUppUW1WU1ltaGtXbUU0WjJGa1FtSTRhRlZqVkdOQ1oxSm5iV2RhYUcxblJtTjNaVlpsVjJJNVkyRm1VbWQ0WlRCbFRXTlJZekJuYUdVd1pVbGxNMlZKWjA5bVJHRkVaelJtUkdWQlpsRmhTbWhtWWsxbE1HUlNZbTVqV1dSR1p6VmpRMlJCWW01bFJtUXZaRWhtYldSRlkxbG1VV2d4Wld4a2FXVmpZMjVoUW1oM2FGTmtSV0ZPWWtwblUyWXlaMVpvYVdOVFkzcGlPV2Q1YUVKbVFtWlpZazVsVjJoQ1oyTmtOR1ZTWTBKbVNtUnVhRUZsUVdkT1kycGpVbVF5Wkc5aFlXWlVaVzFtVVdjdlkxTmxSbWhDWjBobVJXRkhZMXBsZVdOV1kyaG9WbVJ4Wm1Ob2EySk9ablJvVm1GM1lVbGtaV1pDWkVObFFtRkRZMVZpUjJab2FFVmhTMlJVWjBab2NHZFpaR3hrYkdkMllWTm9WbVZqWVZWbFJtSkdZMnhrTkdOa1lVZGlkR0kyWTFsbE1HSXhaM0ZoVTJoM2FEaGpVR2RJWlVWa05XSk5ZMlJpYm1GYVkxTmtVV05vWWxaak5HaGtaMmhoU21WTVkxRmpNR0ZPWVV0blpHRkhZMmhtZDJaUFpVVmhRbUpSYUZoaE1XSk9ZalZvWldaR1pIQmphR1ZaWVVkaGEyUm1ZMVZsVVdaRllsQmlXV2RSYUdSb1JtaG1ZV2RsUldSS1ptSm9kMlU1WmpkaVFXSnNaV1JpYUdOSFpGVmphR0ZEWTFoa1VtUkJaSFZoWldSclpsRm9ZMlpoWm1sb09XRlpaV0poU0dneFkwdGlSbUp0Wkd4bGFHWkdabWhoYUdKdFlVWmtSMkUwWkhWa1ltWjVZa0ZsU0dOSlkwRmxOR1pKYUZOblZXTlJaRVprUm1VelkyOWxkR1JMWTBOaWQyVkJaa05uUVdGS1pHSmtRV2RTYUVKaE5XRlVZVVJvYUdJdlkxaGliV1puWmxaa1pXTklaVmxrVTJKVFozaG9hR1JFWmxkalYyUktaM2xuWldSRWFHaGtSMlpGWm5obWMyZFdaVWxtVkdSallXWmxUR2RwYUc5aGMyTlhhRkpsT1doRGFGWmhhV2hXWW14aVJXRkRhRXBpVkdkV2FHcGpNV0ZJWjJKaWFHTk5hRlZtV1dWU1kyeGhhV0ZWWmtWa1kyTlJZVnBpYm1aS2FGZGhSbWhYWVhCa2VXWlZZVmhrT0dGbVlWSmhSV1JaWnpkb1RHRnJaa3BvV0dKTlltdGtNR0l5WWtsb01tZzRZekpqUW1ONVkwRmtXR2RPWjBWbGJHTlFaa2hvUW1KM1kzcG9ZV015WTJSa2FtVkVZMGRvVG1KSVkwcG1WbUZKWVZGa1dtRkZaSGhtTW1aa2FHeG5TbUZEWWtabFdHZG9hQ3RvVjJWclkxWm9TV1JGWWxKbFdXY3laRkJqVTJGUlkzQmlSMlZCWjFwb1NHWkVZV3BsYjJoWFpraGthbUp2WVRSbVRHSkJZbFpvV21GRVpsSmthMlYxWlZoaloyUnpZbk5vVW1SV1ltOWlaMkpEWWxoalRXSmlaMVJqYldGb1pFOWtXV0ZzWTBKbFNHUkZaa2RsV21KNVlsWmlhR05XYUhGblkyRnNZMFprTTJkV1pYaG5hR0ZVWlZCalZHTlNaa1ZvVm1SdFoxbGlRMlZqWlROblRtRjVZbHBrYkdKV1oyeG5WMkZvWWs1a1ZtSldaVUZqV21aalowTmxlV0pOWm5wa1NtaEJZMVpoY1dOUlowRmpPR1ZIWkZkaVEyZ3dhR1pvWldaQlkydGtaV1ZFWWxWa1NtVnFhRmhvUW1kS1kweG9SMlZGWjA1bFdtVlpZMjVoU21kM1lXTmlSV05uWW1WbFVXVkdZVnBtWm1SbFpFVmpkR016WldWa2JXSnNhRmhqVjJoU1prRm9XbWhoWmtGbVRXTk9ZMWxoVldGR1lrSmxTV2hDWVUxbk9HTlNZM2hpTkdNMFpGVmxSV2RaYUVWaFEyWkhZMDFvZVdkSlprSmhPV1ppWVV4aFdHaEtZVTFrWkdKNFowVmpabUZYWVVOaWIyZ3hhRmhsTVdSalkyOWhSbU5IWWpSa2VXVmhZa2htUVdGUFlWSmpWbUZ3Wmtob1NHZFNZVEZsVm1oVloyNWxVbWh5WkdWbGJXZE9aRTVqWVdOb1lteGpTMlZDWTJ0bVZXVXlaa0ZvYm1SWloybGlSMlZuWlhSaVIySmtaV2xpU21Wa1kwcGlWV2d3WTA5aVIyWjVZMk5uWjJKbFpraGhiR0pIWjBabWQyaFpaM0JrU1doVFlXOWpRMmRQWkZSbE1XVm9aMEZvTVdWc1pFMW5VbVpYWjJka1lXUldaVmRvV1dGTFowOW9WMkU1WVVob1kyRjRZVTVuU0dkaGFFSmxWbWRKWlZWbFJXRmthRTVuWW1nelpqVmhPR1pHWlZkbGNHWjVaVlZpV0dOa1oxaGtVMkZvWlZwbGNHaFpZVkpqTldkUloyRmlSV1ZSWlRCaFMyVlVaRlZsTDJWQloxUmlXV0ZMWWtGaWFHSk9abU5uUldkU1kxcGpNR2RrWTI1aWIyaHNaRWRvUTJkUllVbG1WMk40WjNSaVptZExZMnRtZUdFclkwbG5iR1owWWtOa1ZHaHNaMHBtTW1aRloydGxjMlJaWlZGaE1XRnNhR2xrWTJKdVlrSmtkMlJUWjBWa1RXWm1aVWRrZVdGa1p6UmlSMkZZWldSb2JtUmhaMUZrVFdKU1pGZG1WV0p3YUcxbFpHWkJhR3RuWjJaU2FHaG1UbVZyWmxKa2VXVmpaV1JuVDJkRFoxSm9ZV1pJWnpGaGVHSjBhRVZuUjJaYVpubG1WbWRvWjFabmNXUmpabXhrUm1RellsWm9NR2h2WTFkbVlXVlhaa1pvWm1KSFkwaGhjMk5WWVU1aVIyUmFaQzlpWW1kcllYUm1kbWhUWmpGbVJXVkhhRTVrTVdKV2FGTm9aR0pIYUhSbU5tWlpaREJuTVdOeFkxTmlkMlE1WlZOaFJXVkVZMWxuU21WSlptbG1UV1ZCWlVSbFFtVldaSGRoV0dWQ1owcGlUR0pIWlVWb1RtRmFZMWxvYm1oS1puZGpZMmRGWm1oaFJHTlRaVlpqY0dNeFpXTm9RV05LWVRObVkyaFlZVkpsV0dSRVkxWmlhR1ZSWlU5amQyTlZZelppU21NeFptaGxWV1JLWWpCalpHUTBZMFZuZUdoT1pXMWpZV0puYUVGbFdtSkJZVVpsYUdkMlkyWm1ibWgzYUZabllXUnVaVXBuVW1aa1p6RmhaR2hMWkVabGJXVnNaMmhtUm1kb1lXaGxiV2hHWkVkaE5HWjVZVXRoVkdKcllVZG9XV2RUWWxWb1RHWlZZV3RoY0doV1lsUmhNMk5TWWpsaFltTXpabHBsWldkbVl6QmljMkpLWkZWa2EyaEtaSFJuVVdSR1lYaG5NbU5WWm10aFNXaFdZbVZtU0doWlkxTmlVMlI0WW1oalJHWlhaVmRsU21kNVptTm9TR0puYUdOalEyTjNaRUZqU21SbFluZG1ZMkpFWWxCa2FtSXdZV2hsVm1jd1kxRmhVV1JFWlRObk1HSmxaRlppYm1WdlpWSmlSbUZYWXpobVQySmxZbWhtT1doMFoyRmtRbU5XWmtsaVZXTkZaR05sVVdkYVkyNW9TbVpYWWtablYyRndabmxtVldKWVltTm5SR05CWTJ4bE9HZzJaMU5rZUdOWmFGbGlXbVpvWlZKaGJXZGFaMjFuUm1oM1psWm9WMkk1WW1GblVtZDRZMUZpUjJGbVpqRmlTbWN3WjJGa00yTndZbXBsVkdOWFkzQmxUR2RFYURGbVNtTk9ZMkppVldGQ1lXTmtaR0pzWVVwblEyWkdaMWhrYUdFeVpFVm9hMlp6WTFsaVVXVXhZMFZsY1dObVpFTmpRV2hwWkVKaGVHRmpaRWRrUkdacFozZGxiMkpFWkc1a2EyaHdaVkJrUW1oVllVNWlVV1JzWW1kbWNtaFlaREJoVm1ONVlrVmxWbVpWWkRaa1EyZFVZMEprU0dWRWFHbGtaR0ppWWxOa1JtSm5ZMVJtUjJWWGFGbG1jR05tWVVKblZtSnhaMk5sYkdWR1pETm5WbVl3Wkc5alYyWmhaVmRuUldOWFprZGpSR0ZTWjFKbVRXTnFZVTFrZW1WUVpXeGtWV2czWTBWbloyYzFaVTluUldWNFkxRm5WMmROWlVkb1RXUjFaV0pvVVdNMGFHMW5RbVpGWkVWbFdHSkhaMGRrTVdaRFlVOWpSR05OYUZabFFXZ3daa1ZqT1dObVkyaGtkR2hEWWtGb01tTnNaVnBvV1dadVprcGtkMmhqYUVWaGFHTkVhRk5uVm1Kd1p6RmlTbWRWWmtwaE4yZFZaa2RvYkdGWVkxZGtVbUZCWWxwbVlXaEJhSFJrUm1WaVluaGtSV2hpWTBwb01HUnJZbXBoVVdKUloyZG1PR2RYWjJobGQyUktaVVprTVdkV1pXOWlVR2gzWms1aldtaFFhR3BoYzJSQ1lVOWxkMmcxWVV0bVEyY3lhR3RrYm1aUllqRm9XV1JzYUZGbVEyTTRaM0JvVEdVelpVSmhaR05QWlRGa1RtRklZbEpsYW1oa1pWWm5WV2h1WjFKbWNtUmxaRzFuVG1aT1ltRmxhMk56WjFCalZXSm9ZMEZuZVdSRVoxTmlVbWd5WVVGalJXTTBaeTloWldSSVpsbGlVMmRUWTNoamFHaEVZbGRqVjJSS1ozbGlZMkpJWjBKbFNXSlJZekJsYTJWVVoyVmhWbWRLWWt4blpHTXpZWEJrY0doV1pERmphMlZSWmtkblYyUm5aVXhrVW1SWFl6aG1VbU5GWm5sbWNHTklaMkprYUdGTlkxUm1TV0ZHWjNkaVltTllZMnBsYUdkWlpreGplbVJWWVdWaFIyRlZZMEppZVdaVllsaGlaR2hZYUZOaGFHRmFaWEJvV1dSU1lsbGxXV0phYUdoaVVtVnRZVnBrYVdVMVluZG9VMkpIWXpoblQyZEVaekZsVW1SUFlWZG5lV1F3WmpSaFNtVkRZVEZtZG1kYVpqSm9jR2hNWTBSaE1XRkpaMUZoV21oRlluaGhNbWRrWkd4b1NtVkRhRVppV0dSb1pqSmhWMmhyWVhOa1JtZFJZWGRoTVdOemFFUm1WR1puWmpWaVJHSjNZblJtUm1WalkwaGtWbU0wWWxObE0yRmtaelppWVdkV1pHUm1XbU5GYUVKbGJHRnZZME5qTUdaV1pIWmhXR0Y0Wms1bWVXUlNaWGxqWTJOa1pVOWhRMk5TWVdGalNHUXdZM1JpZEdGRlkwZG9XbU41WkZabmFHWldaWEZqWTJGc1lVWm9NMlZXWWpCb2IyaFhaVTlrZVdOU1pFTm5WR0pVWWxKaFlXWmFZVzFuTldkTVptTm9SbU5XWlhaaFYyWnJabU5qWkdaSVlsWmxWbUZUWTJSbVIySjBZVFppV1dnd2FERm5hV2RCWVdkbE9XVlFhRVZsUTJGMFlVMWhabUpJYUZsalkyRlRabmhtYkdGVFltUm9hR05LWkV4alIyWkZZazVtV21WWlltNWlTbVYzWldObFJXaG9aRVJrVTJoV1puQmhPV2hMWm10b2RHZHhZbVZpYVdoQ1pGaG9VbVYzYURSalNHZGhZVUpvY0daVVkxcG9hR2d3WmpWb1ltSXdZV1JsZW1WRlp6QmpaR1J2WWtaa1ZXWm9aVkZpVW1ONFowSmtiV0pqWjJ4aldXSmtaMDlsU0dSS1oyRmhZV05zWkdOaVVHTkdhRzFsVG1Wb2FGZG1RbWRHWkhGaVVHUnRaMXBqYldkWmFGaGtRbU5XWW1KaU1XaHdaVWhuU0dGU1pERmxWbWRWWTI1aVVtVnlZMk5vYW1oR1pFNW5ZbUZHWmxsb1VHVlNaMEZpVm1aNFlsaGpNbVZPWXk5aldHaHRZbWRuVm1obGFFaGtXV1JUWWxOb2VHTm9aRVJoVjJWWGFFcGllV0pqWmtobFFtaEphRkZrTUdSRlpVbG5aR05ZWms1bVYyVmtaWHBsVm1Gd1pGaGtWbVZzWmxsbVJXUkhaRkZsYUdKU1oxZGtPR0pTWjBWbU1tUTVZMGhvWTJONGFFNW1TR1ZoWmtKbFZtRkpZVlZsUldkallWbGtUV1JxWm05aFptZFNhRzFqVVdoT1praGlWR2huWkVGblUyZG5ZblJsY0dGa1pIZGpUV1ZPWW1Sa1VXZEdaVzFtV1dGSFpVVmtOV1JZWWtkb1RtZDNZbEpuZUdRd1lXUm5WbVZXWmtwaU1HWmhaak5qY0dWcVpsUm5WMlZ3YUV4bVJHUXhZa2xtV1dSTmFFRmpVV1F2WjBwa1ZtUjNZamxoV0dkVVowVm1lR2RYWjJ0b2MyWkdZbEZvTUdRNVpqTmlXbVV5WVU1amJHWlRhRVZoVm1KS1owTm5TR2Q0WlRCb1dXTllaV1JvTm1kaFlWWmpaR1ZhWjBWalFtVnNZbTltUTJZd1pGWmtkbU5GWTFKbVRtZDJaa1ZrZW1GMGFHRm5SbWRGWmtsb1ZtUlRaMFpqUW1SSVpVVm1SMlZhWW5sbFZtVm9aMVpuY1doalkyeG9SbWdyWWxSbFIyTkJZbGRtWVdWWFkwVm1WMk5IWlVka1dXTlZhRnBsYldOYVpXaGlUR0ZXWkhob2FtaGpZMFZtWTJKa1kwaG5WbUZXWTFOb1pHUkhaM1JvTm1WWmFEQmtNV1pwWWtGaWQySkZZVU5rVVdGcFozTmlXV0pQYUZOaFNXVk1aRVZrYkdKQ1lUSmlUV0pzWjNObVpHUkhhRVpvTldKYVpVcGhRMlJqWnl0b1RXRjRaWGRqUzJGQ1oyaGtVbVV4WTJObFFtYzVZeXRsWldScVprcGhPV05YWkZKblFXTmFhR0ZoUVdKMFpFWm5ZbVY0WTBWb1ZHVmlaREJtWkdWNlkxZGhaMkpHYUc5aVNHSldhR2hoVVdGWFkyZG5NV1J0WVVwamJHSm9hSEZqU21ocVlUQmtSMkZrWVRGbFJtaE5aRVpoYm1ac1pXaGhRMk4zWlZaa2JXaFJhRWRvWjJoYVowdGlWR0ZyWVZOaVNtY3hZMDVoU0dkVFlsWmtWV2RJWTBoblUyWk9aSEppU0dKNmFFVmhabWhLWjFKaGEyTklZVlZrUm1oUlozUm5SMkpxWkRobGJHVkhabmRqTVdOaWFHVmhSR1JTWkV4aFUyZ3daVWxvUjJoRGFIbG5NV1IzWjJWblYyZDBaR2xvVVdZd1pHeGtZV05rWTFobmFHVk1ZMlJrTTJKd2FIQmlWbWd4WjJ0bVVXSlZZa05tTkdoTVlWUmpXR0U0WmxKbVJHRnVZMHBoU0dSS2FIaGpNR2MwWWtsaVJtaDNaRkJuUjJkRlpHTmtWMlJaWmtoaFNtSklZMFptV0doa1lYWmxWV2hUWVU1bVdtWk9abFptYjJkdFlrNWthR000Wlhsa1dtTm9aVkpuYldOYVpHMWpSbVIzYUZabVYySTVaV0ZqVW1WNFlUQm5aR2RXWmxaalNXTnRaRXhoYVdVMFlqSm9TR2g1WjFKbFRHZENaM2RuV21GWmFFeG5VbVU1WmpSbVNtSkNabU5vVUdGV1owUmlSV1UwWVZabFoyVTFZVXRrVVdFd2FGSm5hV0ZRWVVSbFZXZHVaRk5uUVdKMFprSmxVMk51YUhob2VHTlNaRE5vWTJaMVpFbGxVbUkwYUV0b1EyZDZZVTVpYjJORFpEQmhWbWgyYUVWbFVtVk9hSFptVW1JelpFMW1WR0ZTWnpKaWFHWmpZMFJrYkdGQ1pWQmxVbWRIWVdkb01XWkJaR2hoTUdJclkwOWthR2RuWld0aFdHZHJaMDFuT0dOaFpGZGtSV1JYWTBkalIySlpZVlZtV21adFpWcG1hR2RqWjBabVZtUjJZbGRtYTJWa1pGQm5WMkZCWlVWalNHTktZbWxoVm1nMlltRmxNbU5rWTNGaVUyTjNZemxtVTJaRlowZGpVbUpOWVdSaWJtSmFabE5uVVdab1lsWmpOR0prWW1oalNtaE1aRVZsUW1oamFGSmhTMko1Wmtaa0sySkpaV2RpTUdWUFkwTm1RbUZOWlRkalVHSkJZelJqYkdabFpXNWhVbWRZWlVSa1ZtVm9aRkZtVDJKM1pGVmhSMmRKWlRGbU5XVmtZa3RsYTJNNVpUWm9SMlZyYUhSb1EyWkdaMVZsYUdaUllWSmxlR0ZDWkcxaFkyWnNabGxsVm1SaFoyNWxTbVpTWjJSa01XUmtZMHRqUm1OdFlrVm5NV1JZWm14blJXWXhZa2RvYUdWclpuRmpUR1JwYUdSaFZtVmpaMnhpY0doWVlVWm1RbVpHWmk5a1ZXRnVZbEpuY21SbGFHMWtUbUZPYUdGamEySnpZVkJrVldSb1lrSmthMlpVWmtoa1dtRXlZbFZqYTJOd1owSm1UV1JFYURsbVFtWlNaMWRpWTJkTVpVVmtRMkZWYURabFkyTkhZakZrU1daVll6Qm9RbUZYWlZoa00ySm9aMHhqWkdjelpuQmpjR1JXWlRGaWEySlJZMGRsVjJSbllreG1VbVZYWWpoaFVtRkZhREpqT0dWVVkwOWpNV1Z2WjFWb1VXVm9aMVpuU1dKVlprVm9ZMkZSWmxwaWJtTktZMWRtUm1kWFpuQmtlV2RWWVZoalpHaFlaMUZvZDJjeFprUmtXV0ZTYUZsbldXUmFhR2hqVW1OdFpWcG9iV1pHWkhkbFZtUlhaRGxsWVdSRVlXeG5jMk5rWVZoaVVXRlpZemhrU1dkcFpteG5kR1pEWkVSa2RHRkVZVmRqTVdSeloxcGlWR1pyWjNobk1taGtaMnhoU21SRFlrWmpXR0ZvWlRKb1JXUnJhSE5uV1dSUllqRmpiR0ZwWlVsbVJHaFZabXRtU0dWU1lrVm1TR1JYWkc1bk1XWlRaVk5pTTJoa2FEWmhZV1pXWjJSaVdtUkZaa0puYkdWdlowTm5NR1JXYUhab1JXTlNaRTVvZG1KU1pqTmpkR2hJWlVSbmVXWkdaMGRpVW1oblpVbG5RMkpZWTFOa1kyWTNZa2RrUm1ORmFIWmxTV1ZHWmtabGNXaFdaSGRsVW1SVVlWQm9iV1JHWkdWaVJXSklZbGxoWkdSaVpqSmljR2RNWW1Ob1JtRldablpsVjJOcllXTm1aR0ZJWmxablZtWlRaMlJpUjJoMFpqWmhXV0l3WXpGaWNXWlRhSGRqWTJSSFlWZGxRMlF3WVdabFpXVkJaR3RoWldKRVoxVm1TbU0wWkdGaWVHRktZV0ZvUldoVmFEbG1lbWhaWW01aVNtRjNZbU5vUldWb1lVUm1VMkZXWTNCa01XWmxZa1ZqZEdRelptVmliV1ZzWmxoa1YyUlNaV2huVG1OSlprVmhTV2RYWWxsaVYyWTFaV0pqU21OblprRmlOMlJGWlRGbWNHSnZaMEppVldkR1kyTmpZbWhTWlVKbGJXTmpZMnhuV1dGV1kyRm5ibUZLWWxKblpHTXhabVJoUzJoR1pXMWpiR1JvWWtaamFHSm5ZM2xtV0dSRGFEaG9NV1ZUWXpObFFtRldZV0poTVdOd2FFaGlTR05TWlRGbVZtWlZZbTVpVW1SeVltVmhiV1pPWkU1a1dXSXhaVUZpYkdSVlltaGhRbVJyWkZSbFNHTmFZakpqVldSclpVbGxWbUZsWkVobVdXVlRaa1JoVm1aallsSmtWMlpYWlc5b2EyZE5hRk5uU21aSlpVVmhWV1ZzWTBobFpHSlRabmhpUm1OT1kwUmtXV0p0WmtkbFVtRjNabGxsUldkSFpWRmhUR1JFWWtkaE9HVk5Za1ZpTW1KS1lWZG5ZV1pDWlU1blIyRlFaRVpoTUdKQ1pVRmtNR0pzWVdObFRXZHVhRzlrUldaSVpFaGpSbVo1WjFkb1JtZ3hZbGhtVTJab1pGcGljR0paYUZKbldXVlphRnBqYUdSU1ptMWhXbUZ0WlVabGQyVldZMVJtTVdaVlowWmtSbU5XWTFWb1JXRjNhRmxpV1dWTVpXcG5kMll6YUZKaVdHRjBaRWhpUkdneFkwMWtRV05pWWxWaVFtY3laRkJpTVdGc1kwcGxSR1pzYUVwbU1tUkZhR3RoYzJGWllWRmhNV1ZzWldsaVkyVnVaMEpsZDJWVFlrVm5UV1ZRYUVabFUyUmtaVFJvVVdNeFpURmxObU5oWjFaaFpHVmFZVVZqUW1oc1kyOWxRMkl3WmxaamRtRkZhRkpqVG1KMlkxSmllV1JrWjJKaFJHZHFabk5tWW1OSFptaGxWV1ZMWkZWaFUyUTRaVGhtUldWc1kwRmlOR1ZqWm10bGVHZ3paa0ZtZDJKS1ltWm5UMlp0WXpsbVZtaFdZVU5pYkdSaFkwbGpNbVUxWjI5alptZEdaVlZrTjJWRllXZGtOV1ZQWWtWamVXVnZZV1ZrVDJGNlpIaGpObWhtWm10bE1XWTJaMUptZDJJNFprZG5WMmREWVRCa1ptWmxaa0ZuYTJaaFlVTmhNV1pKWTNkblpHTm5aVGxtVEdWRFlrWmphR2Q2WlZsamJtRktaM2RqWTJWRlpXaGtSR0ZUWjFab2NHUXhhR1ZvUldGMFp6Tm5aV1Z0Wld0a1pXZFhaMUZrTkdGRlkyRmtRbUYwWjJWb1VtTlNaMFZoVkdOaWFEQm9aR2Q2WmtWbE1HTmtZMjluUm1SVloyaGpVV0pTWW5oalFtZHRaMDlrTVdoelkxbGpVV1pJWkVwb1VtUmtZakZuWkdaTFpFWm1iV2RzWTJoaVJtRm9aMmhuYldGR1pFZG1PV0pOWlZsbldHUkNZbFppWW1ReFpYQmlTR0ZJWWxKbU1XVldabFZuYm1oU1lYSmtaV1p0Wmsxb1ptVmFaVUpuYUdoSWFFZGhNV2RaWVhkblVHTnFhRGhrZUdSSFlXaG1XV0prWkdGaFdHZzRaV1ZuV1dKU1kyaG9SR05YWmxkbFNtaDVaV05rU0doQ1prbGxVV0V3WW14aVlXTmtaRmhoYUdaTVkyUmhNMmh2WWpsaFNHZDRhRUppUkdKR1ozcGhjR1pQWVVObFEyUTFhRmxrV0dSVFkzTmpRMk5KWVZKaE1HVk1abEJuUW1Fd1lXRmpWMlJWWkdSaFRXRlBaMnhpYUdOWFowWm9WMkZ3WkhsbFZXSllaV1JvV0daVFoyaGpXbVJ3WTFsaVVtaFpZVmxtV21Gb1pGSm1iV1ZhWkcxaFJtUTBZMEZqVTJGallsUmtSbVJDWms1bVVHTkZZVUpvT0dReGFFbG5hbVJSWTI1blEySkVZbWhtUm1WWVlrRmtaR05UWlUxbVFtZzBaek5tVG1oUlkxcG5TMkZTYUROaFJtUTJhRTlvUldWelpGbGtVV1V4Wm14amFXSmpZbTVpUW1WM1lsTm1SV0pPYUVwaVYyZHVaMVpsTkdoVGFETmxaR2cyYUdGbVVtRTFhRnBsUkdWblpGSm5iMkpIWW14b1RtSkdhRVZpVW1WT1pIWmtVbU16Wmsxb1ZHaFNaREpvWjJoV1pGTmxSbWRDWkVobVJXSkhaMXBqZVdSV1kyaG9WbUZ4WkdOamJHVkdZbTlsVm1Nd1lVcG5RMlJKWTFOamFHZEdZa1pvYUdac2FHTm1UR1I1WkVWa2NHZGpaa0ZsYkdKNVlsZGtiR1paWTJSbFFXWlZaR3huVTJWbWFFTmlTbUkyWldKaWEyY3hZamRtV0dWUlpWcGhZbWhQWlcxblVtWk5hR1JpYm1kYVkxTmlVV05vWmxabk5HRmtaV2hpU21KTVlrZG1SV2hPWVZwaFdXaHVaa3BpZDJkalpVVm1hR2hFWWxWbU1XWndaRGxuVEdKQlpFMWtLMmRMWjFkblkyZHZhRVppVm1NNVlVOW9ZV0pHWW1SbldXVmlaSGRpUVdSVVpHTm1NV0YwWkhwaVYyWnJZVFZtYUdSRVoyMW5TbUpSYUZKamVHWkNabTFsWTJKc1pWbGxWbVJoWTI1aVNtVlNaMlJvTVdKalpsbGpWV1I2YURCbk1HUlNaa1ppV21KdFpsRmhRMk0wWTNaaVRXVnRablJpTDJSaVlqRmtjR2hJWkVoblVtY3haRlpqVldadVlWSmhjbVZsWVdwbk5XZEZaVnBuYldkRloxQm1WV05vWVVKbWEyVlVaMGhvV21FeVlWVm9hMkZKWmxabVkyaEVaelJrWTJoSGFEQmxiMk5OWVVSaVUyVXdhRzFsUzJOVFowRmlUbVJVWWxGaFkySm1aRTFtYW1acmFHWmhUV1J1WTNCaE1HSldabmhrT1dkR1psWmplV1YwYUdaaFJHUkRZa0ptWm1ORlpUSmtaR05QWm1OaE1HUm9hSFJtWVdkQ1lWWmhTV0ZWWlVWb1kyZFJaMXBuYm1SS1kxZGxSbWhYWkhCbmVXVkNaM3BsV1dGR2FGTmthMlZLWVhCb1ptZENaMWxtVVdOamFFRm9SbVY2WldSa1dHZFNaWGRvVldZeVpqaGpSV2hGWnpGa1ZtRlZZMEprYkdaM2FFeG9TbVI2YUZWaE1HTlNaMGRpY0daQlowUmtNR1ZOWkV4bFZHRnJZM2hvTW1Wa1pteG1TbUZEWkVaaFdHUm9ZVEpsUldoclluTmhXV0pSWm5kbmMyVnVZMHBvYVdkVllXbGlRbWhyWms1bFFtSmpZMGhuVm1NMFkxTm5NMlZrWmpabllXTldaMlJoV21KRlprSm9iR2R2WjBOaE1HSldZblpvUjJGVmFHTmxibWhFWldsbVFXSmtaVTlsUTJoU1pXRmhTR2N4WlVKbVlXSkZaRWhsUW1adVpWRmlkMmRhWmk5blkyZHNaMlJtTTJGQllUQmlUV1poYUZGbU1tTkZabGRsUjJaSFpsbG1WV05hWm0xbVdtTm9abU5oUm1oV2FIWm5WMkpyWkdOaVpHUkdaRkZqUldoaFkxQm5WR1ZvWnpCb1NHUkJaRlZtYW1aRVpFVmtaR2RUWjBSbFYyVlNZVVZpUzJSRFowbG9ZV1ZEYURCbFdtRXlaa05pVm1OdlprTmxXR1IzYUhSaldtSmhabGhtU21ZMFkwcGlSV2RvWTJSalZtVXdZbEppTVdWaFkxWmtNV0lyYUdOaE1tWnNZbEptVjJoUlpWbGhUV0ptWjFKbmFHUlJZVnBpYUdnd1p6VmpZbWN3Wm1SaWVtTkZZakJvWkdGdlkwWmhWV05vWmxGblVtRjRZa0pvYldGalpXeG9XbWhDWWtsaGFtWnpaVU5tV0dOV2FHUmlTMmhHWlcxaGJHUm9aVVpqYUdSb1pXMW1SbU5IYUZwbWJXaFpabGhpYkdKUGFGSmlWbWR3WWtoalNHSlNaREZvVm1KVlptNWtVbWh5WkdWbGJXVk5aMUZuV1dZd1oyTm5iR05WWVdoa1FtWnJabFJpU0dGYVl6SmtWV0ZyWmtsbFZtSmxaVWhsTldOaFoxSmlWV1puWlZKalJtVnFZMWxvT1dkS1prTmphMlJaWTBKb2EyUmpZMlprU21SRFlqQmlTMkZQWlhsamJHZHdaVk5vYkdac2FGbGlSbUY2WTJoa1dtVkRZV3BoZEdabFlsSm9lbVpaYUZob1RtVm9ZVEJqUTJGUFpGSm1WbU5XWmxWaFFXSkdZVVpoUzJORWFFVmhRMlJZWTBObVZXVTRZMVZpV0dnNFpFUmpVV1I0WVZsaGVXTlRhSGhoV1dOWlpGcGhhR1ZTWTIxbFdtSnRZVVppZDJOV1lsZG9PV1JoWTFKak1HRTVabGxqUVdkUlkyTmliV1ZLWjFoaWIyVXpaRUpuVTJKTlkxbGtRV1pUWnpGb1kyZExabmhqZEdReVptRmhNR1k1WmtOalVXTllZVmxqU21WWVpHZGlVbWhRWjFGbU1XZzVZV3RtWTJkcFoxRmlOR0ZCWTFKaFFtaElaMHBvVkdjd1puaGlSR1ZFWVRsaU5tUmtaRVZvY0dSYWFGSmtRbUZqWVZoaVVXZDNaWGRuYjJWWFlsRm1hR1ZHWVZKak0yTk5abFJvVW1NeVpXZGlWbVJUWVVabVFtZElhRVZpUkdSMFp6ZGpWMmRxYURsaWNXZGpabXhtUm1RellsWmtNR052WTFkaVlXZFhaa1ZqVjJKRlkwTm9OR2RoWWs1b2FtUlJaWFZsU21aQ1pXOWhOMlZCWTNobVpHVlphRVZtZUdGSllrRm1UV0pUWVc5bWRXZEtZMmhpT0dkbFlrRmhNR1EwWkdOaVJXRklaV3hpVFdaUVptNWxaMmhEWjBWbVJtZHZZWE5sVDJGVmFGbGtVMmRUWmtGbVdtRllaMHBsVTJWYVluZGpZbVJWWW1ka1JtRklZVUpuVVdFeVlreGxRV1pKWWpSaVRtTkhZV3hsWm1SRVpGSm5hMlphWWsxa2VXSkdZVVppWW1kNFpFVmlWR05pWlRCaVpHTjZZVVZvTUdaa1pXOWxSbVJWYUdkbFEyUkJZMnRsVVdoNlpFbG5RbVJuWWxaaVVHZHFaMjloV1daS1lVWmphMmN4WTFoaWFXWkJZVzFrV0dob1kyaGxOR2RHWkVSa1NtWnZhRWhvYW1WbmFHTmpTMkZDWWtwbWRHZElaMUpsTVdOV2FGVm1ibU5TWVhKaVpXRnRaazVvVG1kaFkydG5jMmhRWmxWaWFHRkNaamRvVkdKSVpHUm1iV0ZsWmtWb1NXVldZbVZvU0dSWlpGTmpVMkY0WjJoaFJHTlhaMWRqU21KNVlXTmtTR2RDWmtsaFYyTlZZV3RrVDJGUWFGUm9SV0paWjJWalVXSlZZMmhpU0dWb1p6VmlXV1JIWkZoalVXUk1hRVZsVjJOR1luVm9WMmQ1WjFsbFFXVlBaM3BrYkdWSVlXRmhRbVpXWkVsalZXRkZZV05pVVdWYVkyNWtTbWhYWmtabFYySndhSGxsVldWWFltaGtXR1pUWW5ka1pHWkVZMWxuVW1KWlkxbGtXbUZvWmxKa2JXRmFabTFpUm1GM2FGWmtWMkk1WW1Ga1VtVjRaakJoU0dOV2FGRmxXV000WTBsb2FXZHNhSFJrVFdacGFGbGtSV1ZYWkVaalNXRlBZbHBrUW1ab2FEUmpRMkZTWmpSblRtWlJZbTFoVG1SalpFVm5hMlZ6WjFsbVVXZ3hZbXhqYVdoalptNWxRbWgzWTFObFFtRTFZMEZqVm1Kc1lqbGhOR1JUWWpOalpHRTJhR0ZsVm1aa1oxcG1SV0pDWkd4a2IyUkJaSGRvTVdkb1pWRmhWV1pGYUdkaFJXZDZhSGhpU0dGSWFHcG5hR2RSYUZKaWFHTjNaa05pVVdoNlkxVmxSMkpJWm14aFVXZHJZV05tYTJkNFlqTmtTR2N3WTFKbFIyZFBZWGxpTldKRFkxWmhlbWhLWkU1bFRtVnBaRTVpZG1SUWFFRm1SbUYyWmxKa01HVmtZMkptVTJkQ1kzTmxVbU5KWWtOb1NXUXhaVXhuVldneFpXbGpTR1YzWjFwaFUyUlRZekJoTldSTllXUmxibVJhWmxOalVXVm9aMVpoTkdaa1ptaG1TbVpNWlVkbFJXSk5aMHhvU21ONVoxbGliR0pKWW1kaFdtRkVhRWhrVW1oSlp6aGpTMll3WmxWaFNXZE5ZMmxvUVdGUllrVmhVbVJCWmtab1lXaEdhRGxsVEdaRlprWm9iR0ZoWkV0blFXSTVaVnBtUldJd1ptUmtiMkZHYUZWb2FHaFJZMUpvZUdOQ1ptMWpZMmhzWWxsbVZtTmhabTVvU21OUFptUmlNV0phWldGalVHUkhZMnhsYUdkR1pHaGthR2h0WWtab1IyZGFaRzFrV1dSWVprSm1WbVppWXpGb2NHRklZMEprZUdNd1pVSmtSMkZxWmpCbE5HVmtZa0poZDJSR1lrbG1kMmg0WkVob1ZXZG5ZelZsYTJaSFpVaG5aMmRLWkVkbVoyUjBabE5qVFdWR1pYZGlVMmRUWVhoa2FHRkVZbGRsVjJGS1pYbGlZMmhJYUVKaVNXTlJaREJtYkdkaFkyUmpWMkprWWt4aVpHTnRZWFJtUkdWV1pERmhhMkZSWjBkaFYyTm5ZVXhvVW1oWFl6aGlVbUZGWkRKb09XZElaMk5uZUdOT1pXUmtZV2hGWkVWbFFXWkhZVkptVVdkbFprZGxWR2cwWkZwbVVXZHRaM0JrZFdWVmFGTmhUbUZhYUU1b1ZtVnZhRzFvVG1Obll6QmplV1phWldob1VtaHRaMXBpYldkR1pIZGhWbU5YWVRsallXWlNaakJpUVdoVllsZGlXR1ZvWnpCallXZ3pZWEJoYW1OVWFGZGxjR2RNWVVSaU1XTkpabEZrWW1KQllWSmlOR0pLWkdkalFXTk9aVkZoVkdGamFHbGhVMmg0WjNSblpHZFVabEptV1dGM1lXTmliV2d4WTNkaFJHUm9ZVmxoU0daSFlWTmlSV1o0WkVKbVJHTnNZelpoV1dOUlowNW5VV1ZGWjBWbFNtaERaME5pTUdKV1ozWm5SV1ZTWlU1aWRtTlNaRE5uVFdKVVlsSmlNbVZuWmxabFIyRm9aRlZvVkdKU1psUmtVV1U0WjFab2FHZ3dZeXRvVDJWb1pHZGlhMlZYWmxSb1ZtRmhZVXBsYW1kWlpWZG1VbWRJWkhOalZXRk5abTFqWjJWbFpGQm9RbUZ2WkRSblZXUXdZM05uWkdWR1oxRm9SV1poWlZCalZHWm9ZekJtU0doQlpGVmphbVpFWTBWblpHaFRZbFJoU0dKc1owMWlTV0p1WW1kamRHWkRhR3hvZDJZdlpWQm5hR1owWmtoblIyTkNZbU5rVW1STFlYbG1SbU55WWxkamEyUm9ZMFJoVTJkV1pYQm5NV2RsWmtWamRHTXpaR1ZpYldOclkwdGtWV1JDWjNka2VtRmhZMEZqZEdWR1kySm5lR0ZGWkZSaVltWXdZV1JuZW1kRlpEQm9PR1JuYUVkb2VHaG5aME5pUTJSRmFGRm1jR05LWm1kbU9XUkdaMHhoTTJkM1pWRm9UMlpTWTA1bFMyUkRaakpoYTJadVoxRm5NV1paWW14aFVXZERZamhtY0dSTVlqTmxRbVprYUU5b01XWk9Za2huVW1OcVlXUmtWbVJWWVc1a1VtaHlabVZvYldKT1lrNWtZV1ZyWVhOaVVHUlZaMmhpUVdjeVpVTmxVMlpKWm1wb1FXTkJZM2RsVm1KalpFTmlTbWRoWVVGbWEyWjBaazVoU21ScGFEUm5PV2hLWlROb1FtaFBaMWhoYTJkclkwOW5aV0ozWW1Oa1NHWlBZME5sTVdOblkxZGpNV05yWkZsblZHSlRhRUptUTJaR1pXMWhSbWgxWVZkbGVXRlpZa0ZrVDJGNFlrNWhRbUprWWxKalZXVmpZMWhuYW1Ob1lWbG9UR1I2WWxWbVpXVklaRWRuV21WNVkwSmxWR0U0WVdWaFIyRlJaREZsUkdkWlpWSmhXV2RaWjFwbWFHZFNaMjFvV21odFowWmtkMkZXWkZSaFNtaFVaMU5sZW1OaloyUm9WbVpXWmtwaU1HaGhZek5vY0dScVoxUmlWMmR3WWt4bFFtTjRaRzloWldKT1lVSmtOR0UxWVVsbGFHY3dZbGRoVkdkRFltZGplbUpJWTBGa1ZtWllaRVpuTVdOc1ppOWtZMlJxWmxsb2JHaENZMmRqUVdGa1lVVmtlbU52WWpKbFUyVXpaemxoZW1SaFpGRmtlR1I2YUVWaFFtaHNaRzlpUTJJd1lWWmlkbWhGWmxKbFRtZDJaVkpoTTJaTllWUm5SbVZUWkRGaVFtTklaMUZoU1dkS1pFVmtSMlkxWVZsbFZtUm9ZbFpqY1dkalpXeGpSbVF6WTFabE1HWnZZVmRvWVdOWFkwVmhWMk5IWVVkaFdXSmpaMDFoYVdRMFltOWxTV0l4Wm5Ob1VXTkdaV2RoYUdkTFpraG5WV2RvWVZOaldXZHVaelZsZG1kamFFWmxhR1J4WkZSblVXUTRaazFsVW1aRGFIZGxSbUpLWlZoaVoyRjBZa1JtYkdadlpuWm5abUo0WlRWaWFHRkhhRVZtVG1GYVlsbG5ibVpLWm5kaVkyRkZaMmhsUkdSVFlsWmljR1l4WjJWa1JXRjBaUzloVEdkcFlrVm1aV05EWTJoaE5XRnRaMGxsUldaSmFFTmpTbUo0WkVWb1QyZGlZVEZvUm1KdFowSm9iR2RTYURsbVJtZFZaVFZpVVdaSFkxVmhVV0YxWTA5aWQyZFZZMkpqUm1aVVpXOWtXV1ZOWmtKbE9XVkVZVWRvYTJoT1pHaG1SbU5vWldobWJXSkdhRWRpV21SdFoxbGpXR05DWWxablltZ3haWEJpU0dGSVpsVmlhMmRrYUVkaGVXVmtZVUprWldSdFlrNWpUbVJoWTJ0bWMyaFFhRlZpYUdWQ2FHdGhWR2hJWkZwb01tSlhaakZtYTJNdlltVmhTR0ZaWkZOaVUyaDRabWhrUkdoWGFGZG5TbVo1Wm1OalEySXhZa0poVkdneVlrNW1ZV0ZrWTFob2FHUk1ZMlJuTTJSd1pIQmtWbUl4YUd0bVVXSkZhRk5tUVdOR2FFWmtWR2d4WkdWbVVtTjVZVUZuVkdGTFpHdGhUV1JEWVZwb2EyRXdZVWhvUVdOclptTmpUbU5hWm1waVVXWkVZMWRrZVdOclpHMW1SMlJFWVdkbFdtSlRZMmhvTkdVNVpXRmpRbUphWWtSbVZHRkNhRkprYldoYVoyMW1SbVIzWTFaaFYyUTVZV0ZrVW1kNFlUQmpaR2hXWlZGb1FXTjRabEJsZVdNNFpYaGtRV0V5WlhCbFJHaFhhSGhtY0daYWFFNW5NR2hKWmtwbVQyTm9aVEJsVm1KR1lWRmxXbU55WkVWamFHVTRZMWRpVUdWQ1pGVm9kR2RLWTFoaWJHZzRZMU5pUldGellXUm1SV2RxWlhkb2NtWlNZVkZpWjJSNVowbGlRbVJCWTFKbFJXVkhZMlJvTVdoRGFIaGlSbVJvYUdKbGJHUnpabTFoUVdWRVlYTmhZV05UWlRKbWFHUkNaVUZoUW1SclpGVm5RMkl3Wm5oaWVXSldaV2hqVm1GeFkyTmhiR1pHWVROaFZtWXdZMjlrVjJST1lrZGxaMkpoWWsxa2JXaFpaRlZoV21adGFGcG5hR1JqWmtab1ZtZDJaMWRvYTJKalpsWm1WbVZXWkhOaVEyWktZV2xrVVdkMVpreGhRbU5yWkhwa1IyVXdaSEJuWTJSUmFIbGlkMmhHWlUxaFEyaEpaMmRrUTJFeGFFbGxkMkZKWW1oalNtZFhZVWRtUVdkMFoxaGlUV2RwWTBGaEwyWktaVUZpWTJKWVkwVmpRV1Z2Wm5kb1pHRm9ZMmRuTDJkTllYbG9PR0pFWWtObWVHZEJZVVZsWVdkRllqQm9VV1pKWWxabFNtTklaa3BoWjJoblpUbGxSV1F3WVRobk9HRklZMFZvWjJWTVoySm5VbVpDYUcxaVkyUnNhRmxsVm1oaFpXNW1TbU5TYUdSb01XUmtaa3RqUm1GcVkzTmthMmhSWVd0b01HTXdaRmRrYldOYVozVmpVMll6WWtKbVZtTmlZVEZuY0doSVpVaGlVbUl4WVZaalZXaHVZVkpvY21GbFoyMW9UbWhPWmxCa2EyaHpZMUptVldOblkwWm1lV2hhWVc1a1dtZ3laRlZsYTJaSlkxWm5aV2hJWlZsaVUySlRaWGhpYUdKRVlWZG5WMlpLWW5saFkyaElaRUptV0daUllUQm1SbVpUWmtsb1ZHZEJaME5vU21kSVpGRm1WMmRIWW5obFdtaElaMGRrV0dSVllVeG5SV0ZUWTJSaVdXUlJZa2RqUldFMFlrOWpNV2R2WTBGaVNXaENaVlprVjJKVVkydG1ZMlZaYUUxb2JtaEtabUpsUm1kWVpuUm1hMkpYWkVobE5XaGlaVk5rYUdVMGFEbGhTMkZXWVRsalRHaGhZVWRoYzJSMVkweG1lV1JaWVRSa1ZtTllaMHBpWVdKV1luaG1VV1ZWWVdaaE1XWktZakJsWVdRelpIQm5hbWRVWmxka2NHUk1aVVJvTVdoSlpWRm5XbUZGYUhobE1tSmtZbXhuU21kWlkwWm1WMlZzWW1kalJXRnNZMWxqUm1oUlluZGtNV2RKWTJOb2JtUkNaSGRsVTJkRlkwNWhTbVpYWjI1b1ZtRTBaVk5qTTJGa1lqWm1ZV05XWW1SaVdtSkZZVUZvV21GdllrRmpNR1l3Wmpka1YyVldabTltT0dWVFpsRmhlR1ptWlVOaFJHYzRZVlpoVm1SV1lrRmpWR1JYWkVOaU9HZG9ZVmRvUjJKdmFHbGxUMlY0WkZsaUwyTllhR3RvV1doWGFGbGlWR2RXWTJWblZXTlVaMVZtWVdGSFpGTmlOR0p2WWs1bmVHUXhZblpuVW1Zd2FHTmpUbVZHWTBabGVHWTBZV1JvUjJSMFpUWmxXV013YURGaWNXTlRaSGRrT1dGVFpVVmlSMkZTWkUxa1pHWnVaRnBuVTJaUlpHZGlPV1EwWTJab2FHWnZabVprVldGQlkyOWpTMkppWjBGaE1HSTRaMUJuZUdnNVlrUm9WbVpJWkVKbk1XWmxZMFZpZEdJellXVm9iV05zWkZoaVYySlNZa0ZvV21oaFlrRmhkR2hHWldKa2VHVkZabFJpWW1Nd1ltUmhlbVZGWnpCbE9HUTRaVmhuVVdSRllVUm9VMlpYWWpobmNXUlFaRkZuUldkV1kyUmhSMmg0WVZKaVNXSXhaelZsUzJOVFpXMWtiR1J3WTBobGEyTjNhSFZrV0dkVVpWWmhiMkpJWW1waVoyWmpaRXRoUW1SS1owaG1RV05SWkVablZtVlhZVzFtVm1jNVpXVmhiV2cxWWs1bFVHSnJZVWxrUjJKVllXaG5XbUZyWlZka2JXWk9abXBsVVdoV1lXTm1ZMlZqWWxob2IySTBZVk5rZUdWb1pFUmhWMlpYWTBwbGVXRmpaMGhoUW1KSlpGRmtNR2RzYUdGb1pHSllZV2huVEdoa1pUTmljR1p3WmxobGQyZ3hZMWxpVldWRWFITmpSbUZQWjJsbFpHaFpZMVptUTJGa2FFaG9ZbWhSWXpGbllXVmhZMFZtUm1OQ1lWZG9WV1Z6WlRaa1dtRnVZa3BuVjJGR1oxZGtjR2g1WkZWaldHTmtabGhtVTJOb1kxcGxjR2haWjFKaVdtaE5aVXhoYkdnd1p6RmhWR2RIWTBaaWQyZFdaMWRqT1dGaFpsSm5lR1F3WVdSa1ZtSldZa3BsTUdSaFpETm9UbU0wWmxwbk1tTndaRXhtUkdneFpVbG1VV1ZhWTBWbGVHVXlZMlJpYkdSSlltWm1TR2hJWVZKbVkyZEZaMnRtYzJaWloxRmhNV1JzYUdsa1kyUnVZa0prZDJoVFowVmljMmhDWmxabFEyWlZZWEZvUW1ORFlVMW9NV1pRYUZGak5HZEtZVlpoVW1SallqZGlVV2gzYUhkbGNHaFNaRmhqT0dOeFlVRmlVMmhqWmxSa1YyaHRaV2huWkdSU1ltZGhRV2hXWTFoa2VtRkpZemxqUVdaclozZGhObVpPWkRGb09HRnJaRWhsZDJoT1kxRmxVR0pUWXpCaVYyTkNabGRvV21kVGFFMWplV0puWkdsa1NtUkNZM2RsWjJSR2FFVmxZMlJXWTFOaFZtVnNaVk5oU21adFpVcG9ObU5QWjBkaFpHSnhaRk5qZDJVNVpsTm5SV05IWkZKaVRXUmtZVzVrV21kVFoxRm1hR1JWWW5GaFRXY3daRmxvWldOVFpHZGhNV2hhWldGa2JHWm9abmRuWTJKRloyaG9SR1pUWkZabGNHRXhZbVZvUldSMFlqTmhaV050Wm14a1dHWlhZVlZpVVdkYVpXUmpaMlYwWVZWb1pXVlVaM05tVkdkaVpEQmhaR2Q2WmtWak1HTmtaMjloUm1aVlpHaGhVV0pTYUhoaVFtTnRhR05uYkdKWllsWmpaR2hZWjBwb1dtRm1hSGRsVFdaRFkxaG9lbWh3WW5ab1lXZFdZa0ZvZG1kVmFIbG5OV1p0WW1abFNHSkJhRUpqU21SNFkwMW5WV1ZGWnpKa1NXUmFZMGhrVTJGT2FISmlXbU51WkRsa1RtWlpZV2huT0doUVpsaG9lR2RDWnpGaFYyaHVaamxoTDJOWVlXMWpaMkZXWW1WblNHaFpaRk5pVTJKNGFHaG5SR2RYWjFka1NtTjVabU5tU0dWQ1pFbGlVV2N3YUd4aVlXWmtZbGhuYUdaRVpFbG1lbUpKWm1kbVFtTkdZV1JtZG1oV1lsTmhaR0pqWWxKaldHSkpZbEptUVdReVpWcGxUR0ZYWVZKaFRtaElhR0ZsUW1KV1pFbGtWV0ZGWVdOblVXTmFZVzVvU21kWFpFWmhWMmR3Wm5saVZXWllaR1JoV0dGVFkydG9VbUZ3WmxCaVZXSnZaRmxvWW1OclkwRmhkV0pNWVhwaFNtUXJaVXRrYVdOalkxUmhRV2RHWmxWalpHWlZZVEJqT1dnd1lXWm9WMkk1WmpKa1dHSnVaamxpUTJGQ1ptNW5aMk5SWkZwalJXUjRZVEprWkdkc1kwcG5RMlJHWTFobWFHVXlZa1ZqYTJkemFGbGhVV1F4YUd4bWFXTmhaRWhvUW1Sb1pGaGxhMk5PWWxWbVVtWXpaVlZtYzJkWllsaGtaR1kyWldGaVZtVmtaMXBvUldOQ1kyeG9iMkpEWnpCaFZtTjJZVVZqVW1aT1puWm1VbWd6WmsxaFRXVlNZVEpsUVdGa1praGtRbU5uWlU5bVVXRXlaV2RrVG1WSVpteG5kMmgwWTA5a2JHVkdZbkZuVm1aNFpEVmlaV0ZKWkVSbFNXTlpZVnBqZVdGd1kySmpUV1ZYWVRsb2RHaGpaa1pqTUdRM1pVVmtaMmcxWWs5bFJXTjVZMjlqWldWUFpucGllR1UyWVdabmEyWXhaelprVVdOblkxcG1OR2hGWlVkbVVtaE5ZV1JsYm1aYVkxTmpVV1JvWTFabU5HUmtZbWhsU21kTVpVZGlSV2hPWWxwbFdXSnRZV2hvZDJobFkwVmxRV05ZWjBGblVtZE5aRzFrWkdOcVlWRm1MMkZOWVhsaE5HUm1aMWRtVVdFd1lWcGtXV05HWXpoblRtWktZMnRpU1dOa1prVmxRV1E0WXpaalZtWkJZamxpYjJKRFpWWmhVbUZSYUVWaWVHSnNaVzFrVEdWc2FGbGxaR0ZRWjJwbGIyWlpZa3BpUm1GcllqRmpWMkZwWVZsbU1tRkdZbWRsV21VMFpVWmpSMmMxWnpOalpHRXphRUptV1dSaVpYZG1OV05QWjBabVFtRlNZMXBsWldOSWFGSm5jbVpsWjIxaFRtTk9aR0ZvYTJkelpsQmlWV1ZvWlVKa2EyWlVaVWhvV21VeVoxVmphMlJKWmxablpXRklaalZqUjJWQlpURm1SV1JSWjFaa2VHZ3daQ3RoVUdONVkyUm9TV1ZZYUd0aWJHZFRZVWxuVkdGQlkwTmpTbU5JWmxGalYyWkhZWGhsV21aSVkwZGpXR0ZSYUZobFVtVlVaWE5uV1dGRll6Sm9iR0ZJWVZwalVXaGFZbE5uWldkM1pFSm9RbUpZWWtkak1HZFJZVnBvYm1kS2FGZGxSbVpYYUhCaGVXUlZabGhpWkdWWVlsTm9hR0phWlhCaldXUlNZMWxpV1dWYWFHaG1VV013WWxwa2FtRXdZM05uVm1SWFkyTmhUMlpFWXpGb1VtZFBZbGRsZVdNd2FEaGtTV2RxWmpCb2NtUlVZMWRvZUdGWGFFUmtNR0pSWlVabVkyZFdhRGxqYW1WbWFERmpkR1pQWjFCaE0yRm9ZakppUldacmFITm9XV2RSWXpGb2JHRnBZV05sYm1SQ1luZGtVMlpGWTA1b1NtUkVZMnBsTUdWNFowZG1SbWd4WWpab1lXRldaMlJsV21KRmFFSmhiR2R2WWtOak1HaFdablptUldaU1lVNW5iV1JZWTBab2EyZFVZMUprTW1KbllsWmpVMkpHYUVKaVNHRkZaVWRvV21kNVlVTm1lR2g0Wm0xblYyaEdaa1ppTTJKV1pEQm9iMkZYWW1GaVYyUkZabGRpUjJOSFpGbGpZMk5NWkcxbVoyVjRZVWxqYUdOdll6ZGhSbVZTWkU1bVJXTlVaVkpoUW1aalprcG9hV1pSWm5WblNXTm9hR3RuZG1aS1lUQmhiMkZWWkZKa1IySlNZMUpqWkdKcVp6VmxZMlpGWTJ0aFkyVXpaRWxsYkdZd1lXWmxVV0pTWlUxbVkyVmlaRU5pUVdZdlpFcG1RV1ZTWlVSaVZtTkdaVzlrZW1OTVlsRm9WV1F3WlV4amFXWkJZVmxpUm1WNFkwRm1VbUZRWWtGblNtaEdaRTVuUkdSelpsUm9ZbVF3WldSbmVtRkZaVEJqWkdOdllrWm9WV0ZvWlZGblVtUjRZVUZtZDJkTlkzZG1VV1ZXYUU5a1NHWktZMDFvWkdReFlqaGlaV05ZWkdsblFXRjVZa2RrUjJSalpIVmtXR1ZUWlVWaGRXWlpZVmRsZUdGS1ltSmlNR0owWWxKalJtaENZekJoU21KVlpHbGxRV1JxWlUxaWVtTkNhRVJoUm1KUllXUmhRV05DWTFGbWRHZFBaMVJoU0dKYVl6Sm1WV2hyWTBsblZtSmxZMGhqV1dWVFoxTm5lR1pvYUVSbVEyRjVZbU5sYldkS1lWTmlTV1pIWjFGa01HTkdZM2RpWkdSWWFHaG5UR0ZrWlROamNHRndabFptTVdkcmFGRmpSMmhYWldkb1RHRlNaMWRoT0dOYWFGRm5WMkk1WkdGb1kyRjRaM05uVm1oaFlrRmpiR1pWWTFWbFFtTk5aMXBqV21KcFp6Vm9WMlZJWWxSamFHRjVZbFJoTW1Wc1owcG5VMlpvWnpWbU5tSmpaSGhpV1dWV1kxcGphMlZDWjNabVltRXlZbWhsT0dObVpESmtPV2hoWmxKaGVHRXdZV1JoVm1GV1lVcG9NR2RoWkROb2NHSnFZVlJvVjJWd1lreGxRbU4zWVZwbVdXVk1aMUpvT1dRMGFFTmtVbVUwWVU1bVVXTnVZMmhvY21SRlkyeG9NR1pPWkZaaGEyaHdhRE5qWTJWdVkxcGpkMlZIYUd0bWNHTkdhR05rU0dOV1lUUmlVMlF6WjJSbE5tTmhZVlprWkdGYVprVm9RbUpzWkc5bFEyRXdhRlptZG1OSFpWVmtZMkp1WWtSaGFXWkJZbVJqVDJGRFlrSmtZMkZFWlhobmFHaElhRVJvVjJWWlkyZG1WbU5uWm5Sa01HSmlaMFptUm1kdFoxRmxWV0pOWW1GbFVXY3lZVVZsVjJGSFkwZGpXV1ZWWVZwaGJXZGFaV2htWTJkR1lsWmxkbWhYWm10bFkyRmtZVk5rVW1Nd1oySm9TbU13WTBabE5tWlpaREJrTVdGeFlWTmxkMlU1WmxObFJXZEhaMUppVFdWa2FHNWhXbWhpYUZkblZHSTVaelJsWkdKb1lrcGxUR1ZIWlVWbFRtSmFhRmxsYm1aS1pIZGlUR0pWWkVaalVHZFpZVEZtY0dneFlXVm9SV0YwWlROaFpXVnRaR3hsV0daWFlsSm1RV0ZTWlVsaVFXRlZabFptVUdkV1l6VmtTR0ZKWTBKbVRXaHhhRkZqZDJkS1oyMWhVbWQzWVdOalJXZENZbXRvVVdkcVpFRmlRbU01WlZOalNXWnBaMXBtVW1aaFlteGlZMkZEWVVkaVJHUnJZbnBvVjJkVlkzZGljR2hSWTBSbE9HTXlaMHBrU0djMFowaGxTV0ZCWnpSalZtTklhRkZtUW1SV2FFWmlRMlJGWld4blQyZFVhR05uUldaS1lsRm9WV1pRWmxkbmEyTlNZM1JoVkdaRFp6RmlZMmRWWTJ0bFNXSldaMlZsU0dKWloxTm5VMmg0WkdoalJHaFhaVmRoU21aNVpFcGlhbVpGWkdGblVXSjRZM1JoWVdSaFowaGphR1ZFWmtsaWVtVkpZV2RtUW1SR1pHUmxkbVJWWkZObVJtSk5aa1JsVjJJNFlrNWlSR1l5WXpsb1YyRmFZMUppY0dGSVlVNWhRbWhWWm1ObVIyTkJZVFZrUkdGaFlrRmhNR05oWlZka2FtTXhaWEJvWldNelpHUmxXR1pUWkdoaldtWndhRmxsVW1WWllsbGlXbUZvWWxKbWJXZGFZV3BsVFdFeFlVRm9WR2h2WmtsbFEyUlNaVEJpVm1GbVp6RmtTbU13WjJGaU0yWndaR3BoVkdOWGFIQmlUR1ZFWnpGaVNXSlJaRnBqUldSNFlUSm5abVpuYUVKblEyUkRaa2hsYUdNcllWRmxSV1Z6Wmtkb1dHUlZaR1JsYVdWS1pXNWliR2QzYUVabVJXUk9Za0ptUTJSSVpsWmxhMlZXYUROaFpHZDVabVZpYTJSV1lWcG9TR1ZTWld0b09HRkJaMnRpZUdSdGFFaGpWR1JzWkhabFVtRXphRTFsVkdGU1lUSmlaMkZXWVZOaFJtUkNaVWhuUldKSFoxcGhlV2hXWjJobk1HWXJaVTlsYUdGblltdG1WMmhVWWxaa1lXZEtabXBoV1doWFlrSmxWMlJaWmtOb1kyWXpZMDVpZVdGYVlsWmhWbUp3WmxkaGFHZFZabFZqUldSWVp6bG9VMk5rWTBkbmRHRTJZbGxuTUdJeFkzRmhVMlYzWWpsbVUyWkZZMGRrVW1STlpXUm5ibVUwWjBkaFEyWnNaWGRsY21KbGFFZGxNR05FWVZWalVXRlJhRkppV1dSdFlqbGlkMkZKWW10bWFHSmtaVlprTUdOU2FERm5ZV0pXWWpGaUsyaGtaV3RpVG1kWVlWZGlVbU5CYUZwbllXUkJZWFJsUm1OaVpYaGxSV0ZVWkdKbE1HUmtaSHBoUldWNFpFMWxaMmRZWVVKbGRHUTJZVkptZUdKQ1oyMW9ZMlZzWjFsbVZtWmhaRzVvU21SU2FHUmtNV2RrWmt0b1NHWXpZMHBtVEdkR1pXaGxhR0p0WjBaalIyTmFZMjFsV1dOWVpFSmlWbVppWjNkblpHaFBZVVZsVkdKa1pGWm1WV0p1WWxKa2NtWmxhRzFqVG1KT2FHRmlhMkp6WWxCaVYyRnNaR2hqY1dGSVpFTmpVV1UxWTBKbloyRXhZMEpoU1doVFpWcG1XR0ZTWjFabGMyUlFZVVprYVdGM1p6TmlZMkZIWWpGbVNXTkNZMUptZDJGVlprNWhhV0YzWWtOa1QyWkVaRkprY0dSWVlqRm5RV0pSWWxGamEyVkpaMHhsVW1OWGFEaGhVbWRGWnpKbE9XRklZMk5oZUdkT1pVaGpZV0ZDWjFWbFlXZEdaMUppVG1GR1owNW5SR0o0WTFkbFYyUjVaRGhtYkdSVlpsUmtPV2RtWTBob2JHVTBaMmRqVFdkb1pHaGxibVZMWTJ4bWMySjRaV0ZqYldGRlpHdGhTR1JUWlZsa1NtSlRaVmRtU21OV1lraG9RbU5WWmpoaFdXaHRZVVprU21SVVlWZGhjR0ZNWVVSbU1XWkpaVkZrV21kRlozaG1NbVJrWW1kbk9XSk1aRWRtVm1OS1pUSm1SV05yWVhOb1dXWlJaREZoYkdOcFlXTmxibU5DWTNka1VXUkJZbkJpU21WU2FETmlWV2RFWms1a2JtRTFZVEpqVVdReFpHUmlXbU5GWjBKa2JHWnZZVU5pTUdKV1pYWm5SV2hTYUU1bWJtWkJZVzVoVFdSUFkxSmhlV00xWjBGaFFtSm9aMDFtVkdWWFkxTmthMk00WlZaamFHY3haV3BpWTJKbllYQmhaR2RXWnpCaWIyTlhaR0ZuVjJWRlpGZGtSMkpIYUZsbFZXRmFhRzFoV21ab1pFbGhhR05CWWpkbFJHVjRZMVpuVkdKSVoxSm9NV1ZLWWxoa2JXVjBhRFprV1dFd1pURm9jV0ZUWjNkbU9XSlRZa1ZvUjJKUlpGSm5aV05FWm1ObFEyTkZZMnhtYTJSb1lXWm9hMkZDWTBoblIyaEJaSEJvVVdSaFlqTmpOV2RoWTJOalJXSm9ZMFJsVTJWV1pIQmlNV2RsWTBWbGRHSXpZbVZrYldSb1kyWmxSR0l4WmpsaVVXRk1aMEZuZEdWV2FHSmxlR05CWjA5bVkyZHJhR05sTW1oRllqQm9SbVoxWjBaalZXZEJZMFZpVTJoV1oxVm1LMmhKWldob2JHZElZVkJuYVdaR1lWSm1ZV1JzWldOaVVHRklZekpqUW1VMlpGQm9RbVZvWW0xb1JtaEhaMXBuYldOWmFGTmxNV0pqWjFwbGQyWTBaVkJpVm1SRllUVm5ZMkpUWmxabk5XRnlabVZvYldKT1lrNWhUbUl3YUdOaGJHRlZhR2hoUW1OcmFGUm9SR0pCYUdwbVNHRkJaa1ppUW1KTlpGUmpiR1ZqWjFObWVHZEJaRmhoVm1OWGFFbGxaMkpsWlZobVFXaFVaV0ZvVldWc1kyRmhaR1ZZWm1ob1RHVmthSGxtZDJGdlowSmlWbVpzWlZwb1JtRlhaMmhvVDJkWVltdGxWV1JTWVVWb01tWTVZMGhqWTJWNFpFNWtSMlZaWlVablRXWmtZMGhqWjJOU1pFVmtUR1Y2WmpCaldXRkdabGRtU1dJNVpWZG9TR2hqWTAxaldXRkNhRnBsY0dOWlpsSmxXV1JaWkZwbGFHaFNaRzFrU1dKRVpsRm1LMlZHWldwbmMyUlVaME5sUm1oTlptUmtTR0pXWVc5a1oyaGFaVE5uYjJKNFpsRmhWMk52YUVObFFXY3hhRXBqVm1KaWFGVmxkMk4wWlZobFJtZEtaVU5rUm1KWWFHaGtNbUpGWm10a2MyTlpZbEZvTVdaclluZG5UbVo1WkZGa2JHTkhZbWRqTVdOS1lVUm1hbUV3WlhoblIyaElabU5vZW1WS1puZG9VV1ZPWTFWb1ZtWmpZM0ptVkdWblpHOWpjR0pGWjFaamRHaEdZMUpvTTJaTlpsUmlVbVV5WTJkb1ZtZFRZVVpqUW1aSVlVVmtSMlJhWTNsbFUySlNabFptYVdkbFkyZGtWV0V2Wmtoa2FHZHJZVmxoVDJWNVpGSm1ZbUpYWjFOaE9XRmhZVWxsYVdKTlozcGlZMlpGWW1obWRtVkdaMEpqU21aU1kxVmtWbUY0WldWbFdHWnRaM1JoTm1OWmFEQm1NV2R4WkZOamQyYzVZVk5pUldoSFpWSm1UV1JrYUc1aldtVlRZbEZuUldkWllYTm1TbWRHWm5Oa1JtTllZVEJoUm1GYVltWmtNbVE1Wlhka1NtaENhRVZvVkdSRVkwSm1WV2Q2WTJWbFFtWTVhR1JpWldSdFpteG1XR1ZYWjFKb1FXaGFaMkZvUVdoMFpFWm1ZbVI0WkVWalZHUmlZVEJoWkdGNllrVmxNV2RvWm05bVZtRkZaMWxvVkdOQ1lteGlkMlJ4Wm1Wa1oyTkthR1JvU1dSNVowWmtaR1prWjNkbVRtZEhZVVptYW1kMFptOWhVR1pDWVdobmJXaEdaVWRpV21KdFpGbGlXR2RDYUZaaFltZ3habkJsU0daSVlsSmtNV05XWVZWaGJtSlNhSGhuWldGdFkwVmxXV1ZLWkVGa09XVkxaMFprUm1ocmFIRmxRMkZVWmtwbU1HUlZhR3hqT0dkSlpHVm1RMkZLWWt4blIyUXhhREJoVFdOSWFESmhTV0ZuWlZkaWJtUkNaVWxtVVdRd1pteG5ZV1JrWjFoaGFHRk1aR1JsTTJGd1pIQmtWbU14WjJ0bVVXSkhZMWRoWjJOVllWSmhWR0YzWm1ablZXWkRaelJvVEdGUVozaG1jMk5VWmtsalJtZDNhR0prV0doRlltUm9SV1JpWXpGbWFHSlhaa1prVjJkd1kzbGtWV1JZWTJSbldHUlRZV2hvV21Sd2FGbGlVbVpaWTFsaldtZG9hRkpvYldkbVprZG9SV1p0WWtkb2FXRlpZMlZvVW1JeFkwMW9WR1pHWmtGaVNXaHJaa3BqZVdGT1pYSmxSMkZUWkVsbVEyVllaRVpsTkdkUlprcGlVbVUwWkhobVNXaDRaRGhvU0dOWFozbGpkMkZzWmtkak1HaEpaM2xtVVdFeFpXeGxhV0ZqWkc1bVFtVjNZVk5rUldaT1lVcGlWMmR1WlZaak5HaFZhRmhtWTJNd1lreGhRV0pDWjFwbVYyUkNZVVZrT0daQ1pUQm1WV0k1WlVobVVtWk5ZMjFuVTJZellVNWpWMlpVWlc1blRXY3ZhRk5vUm1WQ2FFaGpSV1JIWkZwamVXZFdZV2hoVldjelpsZGtSbU5HWXpOblZtVXdhRzlvVjJWaFoxZGhSV1JYWVZoaGFtZE9aMkZvU21WVVpVbG5iMmRRWlhobGRHaDJhRVppUldRNVkwcG1SV0pXWmxWbVFXSmxZVWRpYzJoNloySmpNR2d3YUhablVXSm5ZamhtU21WUFkyMWhVbVZOWm1SamJtUmFhRk5oVVdOb1pGWmpOR1JrWjJobVNXZGFZMWhvVW1KalowMW1UV0pFYUhobmQyTmpZMmhuTUdOT1kwUmlVbUU0WVhwalRXaFJZVlZsZVdaUVoyMWtkR05ZWkZKbVFXSXdabHBoVUdWR1pVbGpWbUpMWTJ4aE5XRldZbUpvZDJFMVpscGlSV0l3WTJSbmIyaEdZVlZoYUdSUlkxSm9lR0ZDWlcxaVkySnNhRmxrVm1Ka1pWaGxTbVphWkdaaGQyRk5Za05uV0dGNmFIQmxkbUZoWWxabWJHRXlZa0ppUjJOYVpEZGlXV1pYWmxwb1FXZGxZMnRtYkdOVFpFaG5VbUowWWxab1FtaHVaVEZvYm1GVmFFZGlUbVZPWkdGbGEyVnpZVkJqVldob1pFSmxhMmRVWWtoaFdtZ3lZbFZpYTJOSlpGWmtZMlZEWTBwbVlXRkJaMnRoZEdKT1lrcGhhV1pPWjJwaldtTnVZMEpuVm1KUmFIaG9NV1JoWldGbE1tSmFaRlpqWkdVeVpYUmtMMlZZWjJ4aFZXWTJZMGRrVjJabmFFeGhVbWRYWWpobVVtRkZaREpsT1daSVltTmxlR0ZPWTBobllXRkNaVlpvUVdaQ1pVRm5PV1phWkU1aldHTjNZWEJrVm1GSVlteGhaMlJWYUZkbGNHVllaVmhsUVdST1pEaGlZMk5uYUUxbVdXUlpaa0prVVdnd1ltSmhNbVl4WVdGalZtWlhhRGxqWVdKU1pIaGlNR1ZrWmxabFZtTktaREJtWVdZelluQmlhbWhVWmxkaWNHWkVZbGRuZUdkd1kxcGlUbU13YUVsaVNtZE9ZVEJoV21KaFpFWmhWMk5XWlRKb1VXUkZhSE5uUjJWWVpsVmtaR1ZwWjFsb01tZGFZelZqVW1KSGFHeGhTbWhYWW01bVZtTTBhRk5rTTJOa2FEWmhZV2RXWm1SbVdtUkZaRUptYkdodlpVTmhlR0ZGYUc1b1YyTkZZa0pvYldkaVlsaG9UV05VWmxKaU1tVm5ZVlpvVTJGR1pFSmlTR2hGWmtkaVdtSjVZMVprWjJZNVozRmtaV2hzWm10b2FtRklZWGRvVG1WR1kxcGllR1kxYUZobFEyWklaRmxsVldKbFlqSm9XbU40WldOb1FXaHNaSFpsUkdGcmFEUm5VbVZPWXpGaVZtWlRZMlJvUjJoMFpUWmpXV0V3WXpGamNXSlRZM2RrT1dWVFlrVmhSMmRTWWsxblptTnBZMGxtWVdKRFlqQm5XbUV5WTBObFZtSk9ZV0ZoUkdScmFFNW5SV2RaWTIxblNtVjNhRXhuUldkblpGSmtVV2RHWTFwaFptZGxaa1ZsZEdnellXVm5iV0ZzWVZoaFYyWlNZMEZqV21KaFowRm9kR1JHWTJKbGVHRkZhR0poVDJkM1p6aGhObWhSWVVWbWEyVllaMVpsUm1SMFlVTmlVbVozWlRGbGJXTlpZV3hrV21aS1oyRm5hbUYwWVZsb1pXZ3pZekZoUzJSR1pXMW5iR2hvWlVaa2FHSm9aVzFuUm1GSFpscGtiV2RaWkZobVFtUldabUppTVdoSllsUmtWbWRXWmxGaFIyaFlhRUZuYzJGeFltSmhibUowYUU1blpHZ3daSE5tWm1SVmFHdGhlR1pyWTBOaFdHSTVZalppWldWRlprbGlWbVZsWlVoaFdXUlRaMU5rZUdkb1kwUmpWMk5YWkVwaWVXUmpaRWhtUW1OSlowWm9kMlZGYUZSbFNtUnVZa1psVVdkWVpWaG1jR2h3WTFaa01XaHJaMUZuUjJoWFkyZGpUR2RIWVVWaFZXTlNZMFZvTW1RNVpraG9ZMmg0Wms1bVNHSmhaRVppVFdSa1kwaGxaMkZTWVVWb1RHZDZZVEJoV1daR1kxUmtiR2cyWkVKbldHSTFhRmhtUldkVWFIaGhjR1ZaYUZKb1dXVlpZMXBtYUdoU1lXMW9XbVZ0YUVaaGQyUkNaM2xoYjJkUFlrVm5hMmM1WWxSaVZtZFdaWEJqWldaaFlqTm1jR2RxWVZSaFYyVndaVXhqUkdReFlVbG1VV1ZhWmtWaWVHY3lZMlpvWjJaWllrdG5XR1pEWlhSbE5HWmlZbEZsYjJOSllWVm5NV05zYUM5blkyRnRaVnBsYkdkWVoxWm5RbWhqWTFkbGJtWk9ZelJuU0dJemFEVmtNbUZSWXpGbFpHZGFZMFZtUW1Sc1pHOW1RMk13WkZaaWRtUkZaRkpuVG1OMllWSmpNMlowWjBob1JHWjVaa1ptUjJKU1lXbG1PR2RIWTBGaFdHTkNhSGxqVTJKNFkxVmhLMkpqWW10bk9XWndaMU5rVldOdlpFaGlabVl5WkdkallXZE5aRzFtV1dSVlpGcGtiV2RhWldoaFkyWkdaMVppZG1OWFptdGhZMk5rYUVoaVZtRXdZVWRtVUdSRFlrbGhjR2hpWjFSblNXWnlaMWRvUW1JeGFGTm5SR1ZYWmxKa1kyUm1Zek5tY0djMFoxRm5hR1pXWWpSalpHUm9ZMHBpVEdGSFprVm1UbU5hWmxsamJtWktaWGRuWldKQ1pYZGxUR1pCWTBGbmJHUTNaa0poZDJOd1lXcG9XV2h0WTJ4a1MyVlhaVkZoUVdSUllscGlRMlZHWjBaalltSjRZMFZpVkdKaVl6Qm9aR042WjBWak1HaGthRzlqUm1aVloyZGlSV05FWWpGaWEySXhaRmRvUm1OWllsWm1ZV0Z1YUVwa1VtSmtaakZrWkdSTFpVWm1iV2hzWVc5a1JHRlVaa3BpYldGR1owZG1XbWh0WjFsbVdHZENhRlpqWW1KM1kyUmtkR0ZJWkZKbE1XTldZbFZtYm1OU1ozSm5aV1J0YUUxblRHZFFaWGRsVm1aTmFFSm5iR2RyYUhKblFXUnVZMWxtTTJkWFoyaG5XV2hhWldWa1EyZFJZbUpsVTJZd2FFNWxjR0pYWTFkbFNtRjVaV05uU0dSQ1lrbG9VV0V3WVd4b1lXWmtZVmhuUVdGYVkyUmlNbU5rYUhCbVFtSldhR3hpVFdWU1pGZG1aMlJoYUZaaVYySlpaR1JsVDJWWFp6bG5TR1ZqWVhoalRtUklZV0ZtUW1oV1lVbG1WV0ZGWW1OaVVXTmFaVzVvYjJoRFpWaG9VMk5OWkdoaldHTjNZV2RtVjJKWFpHZGlXbVp3WldabFFtRlpaRWxvWW1aNGFHaG9UV1JhWTIxaVJtVjNabFppVjJnNVpHRmhVbVI0WnpCbFpHWldZMVpqU21Rd1kxbG9lV00wWkhKaVFtUkVaV3hpUm1GallVSmlUV1JDYUdObGEyZDRZM0psWkdKclpFcGpUR1pIWmxaa1NtRXlaMFZuYTJGellWbG9VV2d4Wm14amFXSmpaVzVuUW1GM1oxTmpSV0ZPWWtKb1JHZHFaekJpZUdkSFpVaGhhMlZHWkV0bVJXaFNaRXhsUldWQlpWSmliMlJIWWpCamVHSnFaazloZUdKT1pIWmlVbWN6WTAxbVZHSlNaekpqWjJSV1kxTm9SbWhDWkVoalJXWkhaRFJpYldSSVlXeGxkMmcxWm1aaVEyRTBZakprVVdZeFpVbGlWMmhrWVVkblJXZEhZa1ZuV0dFd1l5dG5XbWh0WjFwa2FHSmphRVpuVm1GMlpsZGphMmRqWW1SaVNHUlNaRTFpWkdKS1pXMWhkR1Y1YUZObFZXY3hZM0ZuVTJkM1pUbGpVMlZGWkVkbVVtaE5ZV1JsYm1SYVoxTm1VV1JyYUUxbk5XSktZMEpvU1dKRFpFZG1SbU0xWTFwblRtVjNaR3RoYVdGRVoxVm1aMlJtWTBabFZtVnZZamRrVUdOU1puaG5NMmhOWlcxbFJXWTJZMGRuUldKU1psSmxXbUpzWVhOa1MyWlBZVUpsYkdoQ1pGbGpNR0ZrWVcxblIyTnJhRFZpYTJkR1lsRmlNV1ZSWWxkb2FHaENaVEppWm1kc1pGcG5ZV1ZoWW0xb09XWlNZa2xuTVdGclprZGlWV0Y1YUdOaGJXWlJaMnhpUW1FNVoxQmtiV1JhWVcxb1dXTllaa0poVm1kaVl6Rm5jR1ZJWjBoa1VtTXhaMVpqVldWcVpYUm9jbU5hWTBkalRXVkphR05tVjJORlpWQmhWV05vWWtKb2EyaFVaVWhvV21VeVpGVmlhMlJKWlZabFpXWklZVnBoV0dOVFozaGhUbUZsWVZkaldHVmtZVmxrWTJWSVowSmpTV0ZSYURCa2JHTmhaR1JvV0dob1pFeG5aR016Wms1a2NHVkVaa2hqVFdGUllrZG1WMkpuWVV4alVtVlhaamhtVW1KRlpqSm9PV2hJWm1ObmVHaE5aRkpqUzJkVllXUm5TV1JJWVd0b1kyTk9hRnBsYUdJNFpsaGlVV2hUYUVwbk9HRklaVVJoTkdoYVpsRm1aMlJPWW14bVdXRldZbXRrV1daaFpuaGtVV05xWjJKbk1tY3hZMkZoVm1KWFpqbGtZV1JTWVhobk1HaGtaRlpoVm1SS1pEQmxZV2d6WTNCamFtSlVaVmRvYjJaWmFFUm5NR1U0WlZGa1RtTkJaVEJvYTJoS1kxSmlZMlp5WkZka2VXVjRaQ3RpVW1kclkxWm1UR2RFWkhoblFXaG9ZMDVpTTJWbllURmtVbVJGWTAxbVRXTlhZMjVpTldVMFkwSmxXR0kxWXpKa1lXaFJabFpsVVdoRGFIcG1UbWh2WjBObk1HWldaSFpuUldKU1lrNWhkbVpTWlROblRXVlVZbEpuTW1Sb1prSmlRV0pDWkd0aFZXZElaMmxvYzJodVlVZG9hMlZGWW1wb1NXTm9hREJrZFdWWWFERm9PR0pYWVdSbk1tWkdaRmxpUjJOSVoydGlWV05MWTBOaFRXY3lZMk5oUW1neGFHNWpUbVozWjFwblNtZFdZVlpvYzJKRGFFOWllbUo0WTNsa1RXSlZZa1poY1daQ2FGRmhXbUZpWVVWbVNHVTFZazFpVUdJell6bGpZMkpCWnpGa1JXTTRaMlpsYkdOM1pFOW1WR013WjAxblVtZGhZV2xsUm1nMVpHVmxWbWhPWlhCalUyaFdZbkJvTVdGbGFFVm1kR016WVdWbWJXUnNZbGhvVjJkVll6Qm9lbUZoWWtGbGRHSkdaV0ptZUdoRlpWUm5ZbVl3WjJSaGVtZEZZM2hqVldoMFoxRmxVbWd3WTBOblEyVlNaMEZsZVdWUFpXaGpPV0ZIWVdObVZtVm9ZVkpsWkdneFpXUmlTMmRHWkcxbmJHTm9hRVptYTJSV1owMWtSbWRIWmxwamJXUlpaVmhvUW1WV1pXSmtNV2h2WTFKbldHUkZaemxuVm1KQ1l6Tm1VbVV5WkdWa2FtSm9aVzVsWVdSclozTmhVR2RWYUdoaVFtSnJaVlJvU0dSYWFESm5WV2RyWmtsb1ZtZGhaMWRqUVdaSlpsTmtNV0ZDWWt4blRtWkRZMDFsYldGUFlVaG1OR2haWTBSaVFtWTFZMU5uV21kSFpUVmlTR05rWlRKbE9XTm5aMWhpYkdSVll6WmlSMlZYWkdkaVRHWlNZVmRqT0dKU1kwVmxNbWM1WTBoaFkyTjRaVTVoU0dobGFGRm9WbUpUWWxWblFXSTRaMWxpUTJGNllrMWtRMlJZWWxkbFVXaHBhRWhuYVdWQ1ptWm9WMkozWmxwaWJHUlpabEZvVFdKU1pXSmhlR0ZvWTAxb1dtaHRZa1prZDJOV1pGZGhPV0ZoWWxKbWVHRXdabVJqVm1GV1kwcGtNR1JsWkZkbVFtTnFZVUpqVjJSSlpHMWhWR2RuWVZwa1dXZGhZV2hoZDJFMVlrbGpWbWR3WVZGaFIyVllabWhvYW1SSFpEQmlTV1ZWWjJGalZtTnNaMmxuWTJWdVlrSm5kMlpUYUVWblRtRktaMWRrYm1aVlpHeG5VbVl4WXpGbE5tSmhhRlpuWkdKYVkwVm9RbVpzWm05b1EyUXdabFptZG1oV1ozaGhUbVI1WjFKbGVXaG5ZbFJpVm1WdVpEUm9VR0pUWWtKaWFHTlFZa0ZrV0dKQ1pEZGxWMmhvWWxabU4yZFpZMnRrZEdFelkwaG5NR2RKYUVobVpXSlhabWRuWVdOSFpVaGtVV1pQWjFwaWFXZzFaSEJqV1dWc1kzaG9kbVJDWWpGbmQyTXpZVWhrVm1OV1psTmtaR1ZIWjNSbE5tSlpZekJtTVdOcFprRm5kMkZGYUVObFVXUnBaM05sV1dKUFpsTmxTV1JNWTBWbGJHSkNaREpqVFdaRlkwRmxSV2hXWWxOb1JXaFJZVTVuYVdWR1puZGlZbU5WWm1kbVRtSlJaRVpsV21GbVltVmpSV0owWVROalpXSnRZbXhrV0dGWFlsSmtRV1phWldGa1FXUk5hRTVsV1dOVllrWm1RbVJKYUVKbFRXRTRaVkprZUdjMFpEUm1WV2hGWWxsblYyWkdZbFpvT0dOeWFFaGlRV2RPYUZsbFMyZEVaR05rUkdOa1pUQmpjR05MWmxKbVYyaENZWFJrVUdWQ1pHaG1iV1pHWTBkbVdtUnRhRmxvV0dGQ1lWWmlZbVF4WkhCa1VHaFdZbEppVFdKR2FFRmtSR1J6Wmk5blRtUlVaR05sVldSUFpHZG9OR0pDWkVabVJXZEpabkpvUVdaUmFGVm1hV2RCWmtGamRHaGlZbEJpTTJoWlpWQmhVMlF4Wld4bFMyaFdZbFZrYUdaNWFHTmtTR1ZDWTBsblVXVXdhR3htWVdoa1kxaG5hR2hNYUdabmVtTktZVzVoUW1kM1ozUmtabUpVWWxOalpHUm1ZMGhoUkdFNVpGVmxTR1ZVWW5ObFNXTklabFZtV1dkTFprdGhiR2hCWW1Gb1ZXZEdZMjlrVVdSSlpVTm1ZMk5aYUZabGFtSTBaVGRoU0dGcVpXeGxXR2hSYUdoak9XVndaRTlsYW1GM1pWbGtXbWRvWTFKaWJXVmFhRzFoUm1WM1pWWmhWMmM1WTJGaFVtSjRaVEZpVUdoRlpFRmhXV0ZvWms5blZHZFNaR3BsVjJZelpUbGpaV1pJWlVWb1VXZFJZMkppYTJSM1kybGtVR1pvWVhOblVtTkhaSGRuWTJnelpFRm9NV0V3WVZsalUyVkdaR3RvTW1SUFpHcGhhMmRxWlZKa2FtRjNaRWxqVTJGdFoxWmthbWRaWWxoalpHWTJaMkZpVm1Sa2FGcGlSV1JDWTJ4a2IyUkRZekJqVldSNWFFZGhRbVk1WVVablVtWXpaazFrVkdKU1pESmtaMmhXWkZOb1JtRkNZa2huUldKSFpUUmxObVJYWlVWbVZXRTBabEJqVVdKVlp6UmlRV1I0WjA1blIyaE1hRWRsT1doRFpsWmtlR1JXWmtGaVRtVkRaVGhvZG1aT1pERm9WbVo1WTFkaloyaEdaMGxrVldSNFoxbGtSMmRRWTFOaFVXVXdhRmxuTUdaVlpTdG1VV1puWlRobVNtTlBaMjFoVW1WTlpHUmpibU5hWVZOaFVXZG9abFpqTkdSa1lXaGlTbUZNWTBkbFFtaGtabHBuWm1jelowbGhhMkZqWmtKalVXVm1ZMU5tVldaMFlteG5XV0V5WlVaaU0yUmxhRzFpYkdSWVoxZG5VbVJCWjFwbFlXVkJaSFJrUm1WaVluaG1SbVZHWkV4a2FHVldZM3BvVVdWVlpHUmxNV1pHWWxGak5HaHlZMFZtTW1ReGFHMWxUR0ZuWm05bFZtZEtaMFJuWTJkSFkyUmtlR1U1WVVOaVVXVnRaa0psTm1KUVprSmhhR2R0WlVaa1IyUmFaMjFvV1daWVpFSmtWbVJpYURGamNHVklZa2hsVm1SUmFGUmtWV2R1WjNobGNXUk1hR2xoYzJORlkwOWpWV2RXWTBsbVFtSm9aV2RrTW1OU1pGaGtPV0l5WlVGa1FXVmtaa0puVEdoVGFGSm1ZMlZUWVRCbWQySk1ZMFZqUkdWR1pEaG9TbU5FWVRoamJXUkdZMmRrVVdWWlpVMW5RMkZ3WlVSaFptZHVabEZpT1dWSGFFTm1jR2RGWkZOa2VXRkdaa1pvUVdKdGFHUmpSbWRIWVc1aFVtUjBaR05uZUdkT1lVaGxZV0ZDWlZaaVNXaFZaMFZtWTJKUlpWcGxibUZLWWxkaVZXVjVaMVZqWjJkVllsaGlPV0U1WVZOaGFHaGFaWEJoV1dWU1pGbGhXV1phWldobVVtRnRZVnBpYldaR2FIZGpWbWRYYURoaFRXVkNaR3RpT0dKa1kwaGpSbVpLWW5CallXaDVaalJvY21GQ1pVUmpiR0pHWlZSbFFtZzFZMlpoUzJablpHeGxLMkZtWnpGb05XSkRZMVZtU0dSb1lYSmhSV05uYUZabVpHWkdaa1prYTJkRVpVbGxRMmhKYUhobFJXRlZaWFJsWm1SVVoyNW1lR2N3WWxObmVtSm9ZalpvWkdWR1ltUm5VR1ZCWlhkalNtTkRZME5uTUdGV1kzWm5SV2hTWWs1aGRtUlNhRE5oVFdkVVkxSmpNbVpuWkZabFUyWkdaMEZqU1doRmFFaG9hR2QyYUZab1oyVldaM0ZqWkdSR1ltUmxaR1pXWlRCamIyUlhhR0ZoVjJWRlpWZGxSMkpIYUZsaFZXaGFaMjFuV21Wb1kyTm5SbU5XWkc1blJXUXdabXhtV21GV1lVRm9UbWhoWVVwb2JXWktZVEppV1dNd1kxVmtkbWROWlVWbFFXUjJaVVZuU0dac1lVMWhVR016WVdkblFXSkNZVEZtWjJVMVkxQmxNV04zWmxCa1dHUlNZMFpvV0dWT1ltcGhNR1psWTBwalVXVlZaRUpuUkdkQlltaG5PV1ZqWlZWa1ZXaHFhRTVuVW1kdlpVUmxRMkl4Wm14aVdHRk1abmRsVFdoU1oxcGthR2RuWjJablltaDNaalZpT1dkV2FFSmtUbUpuWkZKa01HZEdaVnBpV0dORWFIQmhiV0pqWTJ4bFdXVldZMkZqYm1aS2FGSmxaR0V4Wm1SaVMySkdhRzFuYkdKb1lVWm1iR2hrWjNKbVIyaFZaWGhpYldGWlpWaGlRbU5XWkdKbU1XUndaVWhoU0dKU2FERm1WbVpWWVc1blVtRnBaVmxrVldKc1pFNWtZV05yWlhOaFVHZFZaV2hqUW1OcloxUmtTR05hWXpKb1ZXUnJaMHBoU0dGUVkxTmtTbWRJWkVkaFZtSmFZa1JuVldKVFoyTmpTbUpRWlROaFFtZEdhRkZpTVdObllXNWpaR0pYWkZaaFRHZFFaRzVrVVdZNVlVZGlSR05rWTBablZtZERabkJqVDJGR1l6Sm1ZMmhaWjBoalZHaHpZMGxrUVdORllXTmlWbU5KWmxaa2MyaFFabGRsUW1STloxcG9ZbVV6WmpWa1YyVlZaa2RqVVdJMFlraGphbVkwWmxwblVXUm9hRkptY21aaGFFRm5NR1o1WVZwbmFHZFNhRzFpV21WdFkwWm9kMmRXYUZkbE9XTmhaRkptTUdKQmFGVmxWMmRZWVdobU1HSmhaRE5tY0docWFGUm1WMkZ3YUV4a1JHSXhaa2xtVVdSaVpFRmpVbVkwWjBwaFoySkJZazVvVVdkVVpXTmxhV1ZUYUhoa2RHVmtZMVJpVW1OblpXMWtUbWh1WkVKbGRHTlRaMEZpVldWalpVWm5SR0paWVhObVFXZHFZV2RoTUdkaFpsWm9PR2RPWWtkbFVtVnJaM3BvU1dSVlpsWmlkbVJGWVZKaFRtVjJhRkpvTTJWTlkxUmtVbUl5WTJkaVZtVlRhRUZoV1dOSGFGRm1iV2RaWkdkbFZtVm5abWhtY1dKS1lXaGxhMllyYUVKbFJXTlNaSEJsUzJkSVpFVmlSMkZIWkVkaU1HTlZaRTFqYldGblpHVmtUV0pWWVZab0wyVldZbTFtTUdGa1owaGhWbVpXWTFObVpHaEhZM1JvTm1aWllUQmtNV054WWxOaGQyRTVabE5qUldWRFpqRmpUV0poWnpOb1dXVkJaRkZtWjJGMFpXMWhZV1JDWmtwbllXUkVZbXhqYUdWNlpsbGxibWRLWlhkbVkyVkZabWhtUkdKVGFGWmpjR2N4YUdWalJXVjBaRE5oVFdVeVlteGxZMk5TWjBKbFFtZE9aVWxtUldOSlpWZGpXV2RYYURWa1UyTm1ZbXhvUm1KNlkwZGxSV1JqWlRoa1IyWjZhR05oVW1oV1ltZGxXbWc1YUZkaVJtVlpaVlpqWVdSdVkwcG5VbVprYURGa1pHTkxhRVpvYldoc1pHaGhSbWRyWmpSbWJtUlNhRzFvV1dKcWFGbG1WMmd4WVZaaFNtSnNZbkJtV21WQlkzZGxUbWRXWWxGbE1taEtZbmRsVldOSGFFNWlUbVJoWW10aWMyRlFhRlZrYUdaQ2FHdGtWR1pJWmxwbE1tWlZZV2RoWTJkV1pHTmlNbUZ6WkZOalNHVXhaMEZtUzJaRFptMW9kMlZPWkUxaFYyRk9aV0ZoVVdVd2FFcGpZV1pKWWxoaFdXWXdaMDVoYldGc1p6ZGxWR1ZJYUUxaFVXUkhZbGRoWjJSTVlsSm9WMk00WlZKalJXUXlZamxsU0dGalkzaGtUV1pTWTB0bVZXTmtZMGxqU0dVd2FHTmhUbVJhWldwbFpHVlhaME5sTTJWU1pITmlWV0pYWTFwblFtTlZabFJoZUdkd1lWbG5VbVJaWjFsaVdtSm9abEpqYldGYVpHMWtSbVozWVZaaFYyVTRZa2xqUVdaclpXeGhTV1JDWkhobGVHY3dZbGxsTVdKQ1pHcG5WR2hYWW5CalRHTkVaREZqU1doUloxcGpSV1o0WlRKaFpHUnNaMHBtUTJOR1oxaGxRV0UxWTBWaWEyUkJaVVppVVdaM1lUQm5jV2hQYUhsbVRtWXJZazVpZDJWS1lXUmlVV2h1WmxabWVtWlRZbmxuVG1Rd1kwWm5hR0ZhWjA1alEyVkNaVUppYTJGSlpsVmlWbUoyWTBWbFVtWk9ZM1pqVW1VellrMWpWR1pTWXpKbloyTldabE5sUm1oQ1pVaGxSMlJFWlVsbk5tTklZakJoV21OclkwUmtVbVpDWVc1a1VtVXdaMjlvVEdOaFpGaGxZMkpFWmtSbldHVlZZMEpqV21GdFpVSmxhR1ZKWW14b2VHUnFhR05tUldWamFHUmtTR1pXWmxaaFUySmtZMGRpZEdnMllsbG1NR0l4YUhGbFUyRjNaRGxrVTJKSFpFUmlRV2hGWmxCb2VXUldaV05rVUdOV1lsSmpjR0paWkVKbFNtWlhZVWRvUm1KV1lrMWxaR2d5WmtaaGJHZGpaMFZqTldWRVlVRm1SbUZPWWpWa1ZXSnJZWFJvTTJKbGFHMW5iR1ZZWlZkbFVtSkJZVnBtWVdWQmFIUmlSbVppYUhoblJXZFVaRnBrZUdoTllUZG9WMk5vWkZKaWJXWmhaR2RuYkdaRVoxWmtVbVJDWkRkb1kySnJZVUZvUVdSbWFESmpSbVpGWkdSbk1XWkdaVXRqVldneVlVSm1kR1JRWWtKbmFHUnRZVVpuUjJaYVptMW5XV1JZWVVKb1ZtWmlaREZtY0dkSVpraGlVbWd4WTFab1YySnBaRUZqYW1STmFIcGtRbUpFWVVabVVXSnZhR0prVTJKb2FFSmhOV1pVWjBkbFFtVnFaMUpvTVdWRlprRmtaV2RJWlVGbFUyaENaVUprUm1WUWFHTmlNbVJLWkhsalkyUklaMEpvU1dKUmFEQmtiR1poWW1SbFdHZG9aa3huWkdVemFIQmhjR1ZCWW5ob1JtWmFabE5oYTJaSllVeGxVbWhYYURoaFVtWkZZVEppT1dkSVptTmplR1JPWVVoa1lXZENabFpsUW1kVFlUSm5NR1pSWjFwamJtRktabGRvUm1GWFpYQmtlV2hWWlZoaFpHZFlaVVptZUdNNVkyeG5VMlI0WjFsbVdXTmFhR2hpVW1SdFoxcGliV2RHWjNkblZtWlhZamxsVTJoRWFIaGlUbUpPWWtKbGVHZ3dabWRuU21WRGFEUmhObWhJWlZObE9XRkdhRmhvUVdKa1kxTmpUV2RDWXpSbE0yaE9aMUZvV21oRFpVTmhTR1ZuWlhkblVtSjNZbFpvWW1kR1pIaG9RV04wWVZCaFNHWkNZalJqU0dORlpYQmlTbWRCYUZaak9XWTBabE5qTTJka1pqWm9ZV2hXWVdSaldtUkZaa0puYkdOdllrTm9NR1pWWnpsbFZtUkZZbU5qTm1GR1kxUm1NR1ZVWTBWbmVXTkNZMk5rUjJZeFlqUmpSMmRXWkVObFNtSTJZa0ZpYUdKelkzQmhVR05vWmpSb05XSkZaR3RpU1dabWFGcGtlV0k1WVZSbFdHUjVaR1JoUVdGSmFESmxOV1Z2Wm1WaVZXRTFZa1pqVjJkcmFHTmpaR1pJWVZaalZtWlRZV1JtUjJkMFp6WmhXV0Y0WVVKbGFtWlNZM2xpVm1aVFpFVm5SMmhTWmsxblpHVnVaRnBvVTJSUlpXaG5WbWMwWldaaGJHVndaRVpvVTJKQ1prVmtWMk5PWm1wb01HSnJaMHRrVW1obllVZGtVbVo0WVdOaVoyaE9Za0ptT0dFclpVdGxhV0ZWWVU5aFYyZFJaekJsV21STVpteG1OR0ZNWVV4bVJXRldZbUZoU1dOQlkyeGllbWRIWTNoa1RtTm9aa1puVW1kT1p6Wm5VbVI0WVVKb2JXRmpaV3hpV1dWV1pXRmxibVpLWmxKbVpHZ3hhR1JoUzJaUlpFTmpaMlI2WTBaaGEyWndaMjFpUTJSWFpWbGtlV0pMWWxSaGEyRkhaVmxpVTJKVlowZGhSR0ZSWWpGbVdtaGxaVWhoVW1OeVpHVm5iV2hPYUU1allXSnJaM05uVUdGVlkyaGhRbVpyYUZSaVNHRmFaREptUjJZd1owbGpTV2hsWmtOaVNtZGhaRUZtYTJGMFowNWpTbVZwWlU1bGFtZGFhRzVsZUdWcFpWRmpNR2RzWW1GaVpHVllZMmhsVEdWa2FETmxjR1J3WkZaa01XaHJaVkZuUjJWWFpXaGtUMmhTWVZoblNXTlNaRkpvZVdaallrOW1TV1pDWlRCak5HRkxhRkZsV21kaFkxaGtSMlV3WTFGbFdtRnVhRXBrVjJaR1oxZGxjR2Q1WlZWbldHUmtaVmhpVTJOb1pscG1jR05aWWxaa2EyUlpZbVZtZUdWUlozbG1UR1ZwWm1kaGFtTlhZWGhvUVdoaVkxVmlkMmhWWWxKalptY3haa3BrTUdKaGFETmpjR1ZxWjFSaFYyaHdaVXhoUkdZeGFFbGxVV2hhWWtWamVHWXlabEJpYkdKS2FHWmxSbVZUWVhoaU5HVmlhRkZuYjJaSlpWVmtNV05XWmtsb1kySnVhRUppZDJSVFpFVmpUbWhLWjFkbGJtUldaelJpVTJRemFHUmpObVpoWVZaa1kyZFlaMFZsUVdKU1ptOWhXR0V3WkhOalVXUlZhRUZtU21ZMVlWTmpNV1ZyWmxSaFVtWXlaR2RqVm1kVFowWmxRbUZJWmtWalIyRmFZM2xvVm1Wb1pGWmtjV1ZqWVdkaVNtTXpaMU5vYTJkd1owTmxXbUo0WnpWbVdHWkRZek5uVVdSWloxUm5SMlZhWjJobFkyRkdhRlprZG1kWFpXdG5ZMmhrWlVoalZtRldZVk5tWkdGSFozUm1ObU5KWTJ0aE1XZ3pZMU5tTVdaMFpXTm1ZbU41WlZabVdXVmlhRzVtY0dRMFpWRmxhR1pXWkRSblpHRm9aVXBtVEdWSFowVmxUbUZhWVZsbWJtWktabmRuWTJGRlpXZGpWMlZUWkZWalpHWXhhRXRsYTJaMFlUbGhaV05wWjBaa1ltSmpZM2huUVdWYVpHRm1RV0YwWVVaa1ltTjRaVVZpVkdkaVlUQmtaR1I2WWtWb01HUmtZVzloVldRd1ltaGlUbUZTWlRCb1ZtSnRaMkpvUldablpFeGtZV0Z0WVU1b1NHaGlaRWhqTVdSTFpFWm9iV0ZzWTJoalJtVm9ZV2hqYldoR1pVZGhXbVJ0WTFsaVdHWkJZMVJvWW1NeFpVWm5ZV1ZJWlZWbE9XaFdZMWRqU0doUlpXeG1XV1ZWYUd4b1RtSmhaMnRpYzJWUVpGVmthR2RDWm10aFZHRklZMXBuTW1WVllXdG5TbU5FWWs5bVUySlJaVk5oUW1WNFoyaGxaV1JYWWxOaFVtUjVZV0poYldJMVpGZGtVV0l4Wm1oblRXSmlZbXhsU21kTVpXUmhNMlJ3YUhCa1ZtZ3hhR3RsVVdSSFpGZG1aMmRNWkZKbVYyZzRZVnBqVm1OWFp6bGpRbWhpWTJoaVRtaFNZMlpsVVdaQ1ptSm5VbWhWWVRSaVkyRmFaRzVvYjJWUmFFWmtWMlJHWVhaalZXSlVZelZvV0dWUmFFSmxXV1ZvWjJGblFtRnZZVmxrWW1kc1lXaG9iV1JpWkZoamVHUjNaVVZqTW1NNVlVVmlWMmRSWjAxalpHTlNhRVZvVW1NNVlscGpNMmh3YUhKbFFXUlhhSEJuUVdORllteGtTbU5EWkZwalJXVmFZekpoU21GV2FIUm1XbWRRWVROb2FHY3laVVZtYTJaelkxbGlVV1F4WW14bGFXSmpabTVsUW1oM1pWTm1RbWhWWkVsblEyZElZbFZtTjJSVGFESmljR2cyWmtwb1ZtVmtZVWhoUkdObmFHUmpiMmhIWld4bFRtUXdZMDlqZUdST1pIWmtVbWN6YUUxbVZHRlNaREprWjJGV1lWTmpSbVpDWTBoblJXUkVZbEZuTTJoQmFHdGhRV1EwWVZCbVJtaEdZaTlpWm1aVlkyOWxWMlpoWmxka1JXSlhaRWRoUjJaWlpWVmhXbWh0WjFwaWFHRmpaa1pvVm1KMlpGVm1aMkZ6YUdSb1IyY3dZMmhuVTJGWmFHNWhOV2gyWkdOa1JtZG9aMnBvVW1aNVlsWm5VMmRGWTBkbFVtZE5aMlJtYm1WYVkxTm1VV0pvWlZaaE5HaGtaR2htU21GTVpFZGhSV1Z6Wmxab1dXSnVaV3hpZEdaalkwRmxSbWRFWWxGaE1XRnZZVGRoWTJaVlpHUmlaR2RsWTIxaGJHZFlaVmRvVW1WQlpscG5ZV0pCWm5SaFJtTmlabmhuUldkVVoySmlNR0ZrWnpkbFZXZEZZV1JoYW1kRFowVmtaMmRqWTFKaGQyVTFaRFJvWW1SR1pGbGxSV1JtWlVobWRHTmtabGhpVm1Ga2FFdG1SbU50YUd4bWFHSkdabWhoYUdKdFkwWmhSMmRhYUcxaldXTllaa0puVm1OYVozaG1XbUZJWTBkaGQySkNhRlpsVW1aSGFFWmhLMkZoYUZoaFdtSkZhRnBpYldkRllWQmlWV1ZvWlVKaGEyZFVaVWhsV21ZeVpGVmlhMmRKWWxaaFpXVklaRmxvVTJoVFpuaG9RV0ZRWVZkb1YyRnNhSFpuWTJGRVoxWmlTV0ZUWlZWbGEyVlRZMlprU0daU1ptaGxaR1V6WW5CbmNHWldZakZrYTJWUllrZGlWMkpuWWt4bVVtZFhaamhqVW1kRll6SmxPV0ZRWkUxbVFtSk9aMDFpWkdGU2FGVmhSV2RWWkVab2EyaFBZbVZoU0dSS1praGhRV015Wms1aksyaGxaVE5rWkdGWVlsTm1hR2hhWVhCaVdXTlNZVmxsV1dkYVpXaG1VbUp0YUZwbGJXWkdZbmRvV0daVFlYaGtZV2RVWjBGaVFXSmtZa0prTVdSS1p5dG1ZV2Q2WVhSamNXZFJZbFZvUW1STVprUmlNV0pKWmxGbFdtSkZaM2hpTW1Oa1lteGhTbWREWTBaa1dHaG9aREptUldKcmFFNW5ZbVJSWXpGaE9XZ3ZaV05pYldKYVpXeGtXR1ZXWTBKblkySlZaek5rYkdSVFkxTm5NMkZrWkRaallXSldaR1JpV21GRlkwSmtiR1p2WVVOaU1HaFdhSFptUldaU1prNWtibWhDYUVoalRXRlpaVmRoYldOb1lXTmtVMlJHWm5Cb1NHaFJaekpuT1dZclpHWm1RbU5XYUhGbVkyWnNhRVprTTJGV1pUQmliMmRYWkdGbFYyUkZZVmRqUjJGSGFGbGxWV2RpWW1saVZtZG9hR1JuYTJkb1puWm1WR2RHWVVsaVNXUkVZMnRqUW1KaVoyVmlSV2RHWnpaaFdXSXdZVEZsY1dWVGFIZGpPV1pUWWtWblIyWlNaazFoWkdOdVpscG9VMmRSWVdoa01HSTNaR1JvYUdKc1pWZG1SMmhCYUZwa1dtUmhaa2hqU1dZclptVm9WV2hTWW5CblUySldaM0JvTVdGbFpFVmhkR1l6Wm1WamJXVnNZVmhsVjJoU1prRm5XbUZoWVVGbmRHZE9hRXhtUW1GRlkxWmlZMlJyWjJSaGJHaENhR3hqU21RM1kwRmpSV2hHYUdObVltZFNZVUpsYldOalpHeGxXV0ZXWTJGbmJtUktaMUppWkdneFpHUmhTMlpHWVcxbmJHZG9aa2huYkdGMFoyMWxTR1V6WVhSb2JXZE1hRzVrUW1obVoySm1lR2hLWkU5aFJXRlVaR1JvVm1KVlkyNWhVbWh5YUdWb2JXVk9hRTVoWVdacllYTmlVR2RWYUdoalFtSnJaMVJuU0dNMGFHbGlSMlpuWjNSbVIyWmtZMmRoYkdaVVpWZG5kMkZvWmtSaFVtTkhZMHBuYTJKYVpGZG9WbUppWlZab2EyTnNaMk5rWkdGVFlqRmtRMlJsWXpGa1FtaHdabFppTVdGcllWRmxSMlpYWW1kbFRHWlNaMWRuT0dkU1owVm1NbVk1WTBobFkySjRabk5vVkdoSllrWmpkMlJpYUZoa2FtZG9aMUptWkdZeVkxSm9WMmhEWmtkaWNHRnJaMUptUjJWS1lVVm9XR040WWxwamRtUlpaVlppUVdoU1ptRm1hbVUxWTIxbFdtRnRZMFpsZDJGV1pGZGxPV1poWmxKbGVHTXdaR1JpVm1aV1owcGtNR05oWnpOb1NXZ3phRUpsVTJGTloxbG1RV2RUWVRGbVVtTmtZakZqTldNeVkyRm5NV05LYUZWa1FXZEhZVEZvYkdkQ1lUQm5jMkZsWTFGbWVHZFdaM0pvWm1ac1kzQmtkMkpUYUVWblRtSktZbGRtYm1OV2FEUmpVMk16WldSbE5tVmhZVlpsWkdaYWFFVm1RbVJGWnpoblVXaDNaSGRoT0dOSVl6SmlkMmgxWTFWbE1tTnphRlJrVjJkdGFHZGlSR2hZWkZWalZtWlZZa0ptVjJaYVp6Qm1WbVJzWlZwa2FtWm1abTVoZEdRelkxWm1NR1p2WkZkaVlXUlhaRVZsVjJGSFowZG9XV0pWWTFwaGJXRmFZV2hsWTJoQmFFVmlibUZGWjNoaFVXZ3paRWhuVm1oV2FGTmtaR1pIWlhSak5tSlphREJqTVdkeFkxTmxkMkk1WmxOb1IyZFlaVGxpYldOa1ptNWhXbU5UWlZGbWFHTldZalJpWkdkb1pVcGtUR1pIWVVKbk5XWlJaR0pqYkdSb1pYZGlZMmhGWW1obVJHaFRabFpqY0dFeFptVmpSV1owWWpOaFkyWnBaMFprV21GRFpWVm1TbUpYWTFCbFJXUlJhRkpsVG1oclowWm1WMk5aWTFGb1RXRTJZMUpvVldKa1pURmhSbU5SWlRSbFJtZERZbFpqVFdWNVlrOW9lR1ZzWW1Ka1lXWnVZVzlrUm1GbVlteG1ZMk5TWVZCa1IyTnNZMmhpUm1ob1ptaG1iV2RHWTBka1dtSnRZMWxsV0dWQ1pWWmpZbWg0WWsxa1FtVklaRkptVm1SR1kxVmhiV05zWmpKa1pXZHFaV1JuUkdaR2FGRmpiMlpsWlZKaFFtaENaR2xvVTJodVkxcGhiV1pWWm14a09HSkpaV1ZqUTJOSlltTm5UbUpHWkd4a1VXRlRaREpsU21Zd1pXUm1ibVJDWTFsaVVXZ3habEpvU0dWa1lWTmxlR2RHWjBOa1JHZDBaamxpVkdVeFpFRm1VV0ZSYUd0aFNXSk1ZbEpqVjJnNFpWSmlSV0V5YURsblNHVmpZM2hvVG1KSVoyRm5RbUZXWjBsa1ZXZEJaRFZrVjJoYVptNWxjR1ZIYUVab1dHRmthSFpvVldKVFlrNWlXbU5PWTFabFpHRTFaMk5vVW1FNFkxbG9UV0ZzWkhkbk1HZExhRlJpV21aM1kwMWpSR013WVVsalEyaEZaamhrVm1kV1ozaG1XV0U1WjFCa1ZHRk5ZWGRsUW1WRFlsVmlSbU5FWkhob1FtaEtaMXBrUW1SWlpucGhTbUZDWWpGa1FXSklaa2RvVG1GalpVVm9hMlZ6WTFsbVVXVXhhR3htYVdGalptNWpRbWQzWTFOb1JXUk9ZVXBtVjJadVpWVmllR0pFWjFobVpHWjVaR1ZrUm1ka1lrVm9SR05TWVd0aU9HVkNabFJtYjJSMVkwRmpVV2hPYUcxalVtUjVaVVpoVjJGRmFIcGpNV2hJWWtKb2JHWkNZbEJsVW1SRGFEUmxOMkZDWlZKbWMyTTBZazVpZUdoM2FESmpTR05uWlZKa1UyRk1ZVVJsVFdoWFkwSmpWMmhhWldGblNXaDZhRVpsYUdoUFlVWmpNV1F2WTFWa01HRTBabEpuU0dWUllVVm5ZV05RYUZSb2FHUm9aRk5qVldNeFlYRmlVMlYzWWpsaVUyTkZaVWRqVW1WTlpHUmlibVJhWWxOblVXaHJaMmhtVTJGa1kyaGtTbUZNWWtkbFJXSk9ZVnBrV1dOdVkwcGxkMkpqWWtWamFHRkVZMEZoUW1GNFpqRmlZMlpDWmpsaU5XUlFZbFJsTVdkbVpFUm1WbVZvWjFGblQyaDNaMHBpVFdWU1psSm1SV0ZVWkdKbU1HaGtaM3BuUldRd1kyUm1iMlJHWjFWbWFHUlJZbEppZUdSQ1kyMW1TV2RDWWs1blFtVlFaWGxqUVdSbVpXUmpNV0k1WTJkaFJtZHRaMnhqYUdSR1ltaGlhR0p0WWtabVIyWmFaMjFsV1doWVlVSmpWbWhpWkRGbWNHaElZa2hvVW1KVlprSm1SMlpxWXpCak5HaGtZa1JtUldOSllrcGpkMlp3WlVkaFNHSkdaRkZoYUdGSVpHNWlXbVp5WWxWb2FHUmFaMlJoVFdGVFlWVmhZMlpEWTBabFVXSk5aa1psZVdKa1lqWmlaV0ZZWVd4alJXVmhZMVZsYkdSaFpHUmxXR1JvWTB4aFpHUXphSEJuY0daV1l6RmthMkZSWVVkaVYyaG5aVXhtVW1SWFpEaGxXbUZTYUhsb1kyWlBaa2xsUW1nd1lqUmtTMmhSYUZaaVdXUlZZa1ptYjJSUlpXUm9ibUYwWTJGaFVHZ3labkJrZVdSVlkxaG9aR2RZWTFObWFHRmFaWEJqV1dKU1lsbGtXV2hhYUdoaFVtUnRabHBsYldWR1p6Um9RV2RUWVdOaVZHZEdZVUpoVG1acGFFWm9SV1pPWjJsaFlXTXlabVJrYW1OWVpWZGxUbUZJWVVwbVZtTkpZMUZoV21KRlozaGlNbWhrWW14alNtRkRaMFpqV0dOb1p6SmtSV0pyWVhOaVdXSlJhREZpYkdOeGFFcG9hbU5uWmpWalIyTXdZVEJpTW1OSGFESmxXbVp4WTFObk1tSndaalpuWldSV1p6Vm5WbUZQWm1ob2JHUnZZa05sTUdaV1kzWmpSV2RTWTA1bGRtWlNaek5qVFdoVVpWSmtNbVJuWlZablUyTkdZMEptVUdkU1owTm1OR0kzWWtKblVtUnphRlptVFdJd1oxWmxkbWRXWkRGbVkyTlhaR1ZsVjJObmFHRmhUV1p0WTFsaVZXRmFZVzFpV21kb1lXTm5SbUZXYUhaalYyTnJZbU5vWkdkSVpWWmhWbUZUWkdSblIySnpaSFZvUzJaM1lWRm9OV2RaWkZGb09XRlRaRVZuUjJSU1lrMW1aR1p1WkZwa1UyaFJZbWhqVm1VMFptUm9hR1JLWVV4blJXSldaV2hoZW1OWmFHNWtTbUozWldObVJXRm9ZVVJoVTJoV1luQmxNV1psWWtWa2RHVXpaVTFsZVdJNVoxaG1WV1JWWjFKaVVtTkpabFppYUdWTVowdG9hMlJCWm1KaVQyWXdZalZvTm1SUFlsVmlaR2R2WTBaalZXWm9hRkZtVW1KNFpFSmtiV1pqWTJ4a1dXWldZMkZvYm1KS1lsSm1TbWRTWkVsa1pXaFJZM3BpYzJGMlkwWmxhR2RDWmsxbVJtRkhZMXBvYldkWlkxaG9RbVZXYUdKa01XUndZVWhoU0dKU1l6RmhWbVpWWjI1blVtZHlaMlZpYldkeloxcG9TV05uWlVwb1kyaFlaRVZvU1dGb1pVRmhWR0ZqWVM5alNHaEJaMXBvVVdoTFptNW5XV0ZRWmxOak1XSlpaRWRoUkdadFlVbG1ObVJsWlVka1FtRkNhRk5uYTJoV1ozZG9aR2RZWldobVRHaGtaak5tY0dWd2FGWmlNV05yWjFGaVIyZFhabWRuVEdKU1kxZGpPR1JTWTBWbU1tSmpZMVJpVDJNeFpHOWxWV0phWVcxa2IyaEtZbEZrUm1SallWRm5aV0l6WmtwbVNHVklhRWRvV21WWmFGVmhXR1JrWjFobFUyTm9hRnBtY0daWllWSm9XV2RaWjFwa2FHUlNhRzFtV21WdFpFWm1kMkpXWTFkaFkyTlBaa1JtTVdoU1pFOWtWMlY1YURCaE1XWmxZbTFtZUdocVlWVmxSMkZ3WjJKbVFtUnNaVFJvTm1WYWFFVmhlR2d5WW1Sa2JHTktZa05sUm1kWVpHaG1NbU5GWkd0bWMyWlpZbEZqTVdkc1pXbGtZMlZ1WkdkamEyZEJaRUZrYjJWaFlsWmhRV0p2WmpWblYyZEhaRlpuTm1Ka1lrWmpaR1pLYUVkbFVtTldaVU5tUTJJd1pGWmhkbU5GWVZKa1RtWjJZbEpsTTJWTlpGUmlVbU15Wm1kaVZtaFRZa1ppUW1aSVkwVmlSMkkwWW0xalNHTnNabmRuTldkbVkwTmlOR015WkZGaE1XaEphRmRrWkdOSFpVVmxSMk5GWlZkaWIyVXJaVnBvYldoYVltaG1ZMlpHWVZabmRtUlhhR3RtWTJSa1kwaG9WbUZXWWxOa1pHaEhablJqTm1GWllYaGlhMkZwWTBGa2JHTjRZelJvUldaSFlsSm5UV2hrWjI1aldtZFRaRkZpYUdoV1pEUm9aR2RvWmtwa1RHUkhaMFZuVG1aUlptVmpWbVJvWjNkaFkyZEZZMmhvUkdKVGFGWm1jR0l4YUdWblJXWjBhRE5rWldSdGFHdG1VbVZHWld0a1NXWmFabGxvUm1Zd2FFVmhVR0pTWlVaaVFtTmlaakZtY0dGNmFGSmpNR1pyWlhKaVYyRlJZMk5uWldKQlpXaG5hR2QyWW1abmJHRmFaV05uWVdSdFlqbGtVbVZsWm10a1dtaFNhRVprYldKbll6RmhXR2RzYUVWbU1XRkhhR2xsYjJSNVkyRm9VMkZLWjJOa1pHUkdZWEJrVDJkT1kzaG5NV1pXWmxWa2JtWlNabkprWldkdFpVNWhUbUpoWW10aWMyZFFhRlZrYUdWQ1pHdGhTR2R1WTJkbWJHUkhaR2RqZEdSVVkweG1RbVp3WTFoa1JHTlZZM2hpVEdkVFowZG1OV0o1WjJOaVYyZENaa0psVkdNd1pXdG5WR05tWTI1a1RtaFJhRmhtV0dad1lYQmlWbWN4Wld0blVXSkhaRmRrWjJaTVlWSmxWMmc0WTFKb1JXaDVaV3RpU1dOSlpsSmhUbU5RWjFGamFHTldaRWxrVldGRlpHTmtVV1ZhWjI1alNtTlhaa1ptVjJKd1pYbGtWV0ZZWW1SaFdHWklhR3hqTkdoblowMWphR2RvWjB0b1NXZ3haR3RqYm1kTVkzbGpPR1l3WlVWaFJHWXhaR0ZoVjJSb1l6RmpTbUpJWmxKbWMyaHVZVnBoVkdkclpIWmxRV2hwWTFGaFQyVkNZekZuYzJoallsUmlhMk40YURKbFpHVnNhRXBvUTJKR1lWaGlhR1V5WmtWbmEyZHphRmxvVVdJeFkyeG5hV1JqWm01bFFXZHJZMEZtUVdOdmFHRm9WbWhCWVc5b05XZFhZekpoWkdjMlptUmxSbVJrWmtwb1NHRkVaRTVsYjJaRFpUQmhWbVYyWlVWbVVtWk9ZblpoVW1ZelowMWtWR1pTWVRKbFoyZFdaRk5uUm1KQ1lVaGhVbVZEWXpSak4yWkNaVkpsYzJkV1lrMW9NR0pDWkdoaVZtTXhZbU5rVjJObFoxZGhNR1E0WWtkbVIyRlpZbFZsV21adFkxcG1hR0pqWjBaalZtUjJaVmRtYTJkaloyUmxTR05XWjFabFUyaGtaMFJuT0dWNVpVdGlhR00xWVd0aFRtTkZaRFZsUW1GQlptMW1VbUZTWm1Sb2JXUmFZMlZrWVdaQ1pWWmpOR1prWTJoaVNtUk1aRWRpUldGT1pscGpXV0Z1WmtwaWQySmpZa1ZoYUdWRVlWTmpWbWR2Wkdob1RXTkJZa2xuYTJoa1prSmtXV2hYWlZSaVVXTm5ZMXBtWkdoUlpIUmlWbVprWTBSamMySlVaR0psTUdOa2FIcGxSV2N3WkdSbmIySkdaVlZpYUdoUmFGSm9lR0pDWVcxbVkyRm9ZemhpVm1ka1lrZGlPV05TWmxwak1HRjRhR2RsUm1OdFkyeG5hR1ZHWVdobmFHTnRhRVpuUjJkYVpHMW5XV1ZZWmtKaVZtTmlhREZtYjJaUFkwVm9RbVJDWVM5aVZXUnVaRkpvY21GbFptMWlUbUpPWkdGaWEyaHpZVkJvVldob1prSmthMmRTWVZabGVHTXlaMVZoYTJGSloxWm5aV1pJWWxsalUyZFRZWGhrYUdoRVpGZG1WMk5LWlhsaVkyaERZa3BpUjJWRlpFRmlSV0pVWkUxaWVXWjNaVFZqVUdacWFEQmlhR05CYURGbFJXVkNhRVZpUjJGUloyaG1VbWhYWlRob1VtWkZaVEpvT1dOSWFHTmllR2RPWTBob1lXaENZMVprU1dGVlpFVm9ZMmhSWmxwamFXUlpZbVZvV0daRVpXeGtPR05CWjNwbVNXVmhaa05sTVdZNFltNW1TbWRXWms1blMyRmhaa1ppWjJKNVkySm1hbU5PWnpWa1ZtUlVZMDFpUjJoaVpGSmtNR0ZrYUZablZtUktaVEJqWVdJellYQmhhbUpVWmxkbGNHaE1aMFJoTVdWSlpWRmlXbUpGWm5ob01tSmtZV3hoYjJaWFpsaGhWR1pGWld4alNHSkNhR3hpWkdSRVoyaG5aMlJ5WWxCb1JHSlJaakZrUjJSclp6QmtZV05FWW5wbVkyUnpaVWRtVkdWWlpEVm5VR0pXWlRoaFRHaEhaVkprVm1ORFpVTmtNR2RXWjNablJXVlNZMDVpZG1GU1l6TmpUV1JVWjFKak1tTm5ZMVptVTJSR2FFSmpTR1pGWVVkaldtSjVaa2hpZUdGV2FEQmxZbVV4WWtabGFtTlVZakpoUVdWWFpHRmhWMlZGWmxkaVIyTkhaRmxuVldGYWFHMWpXbVpvWTJOa1JtaFdaWFpsVjJWclptTmlaR0ZJWmxab1ZtSlRZMlJvU0dWU1pEWm5ZV2Q0WTJ0aGFXSkJZMnhoZUdGaloySm9lV0pXWTFsb1ltTnVaRmxuVDJSWVpIaG5WbWR3Wm1SaVoyTTFaVmhuUjJORlluTm1VV1ZaWW01bU9XWjNZbHBuUm1OQ1pFdG5VV0ZJWmtKbE1XaGxZMFZpZEdRelltVm9iV2RzWkZoaFYySlNhRUZsV21aaFprRm1kR0ZHWW1Kb2VHVkZZbFJqWW1Nd1oyUmtlbUZGWXpGak1XZHZhRmhpUldGb1pVOWtWMlJvWWtKak1XaFpZVWhqZDJSV1oyRm9ibWhLWjFKb1pHSXhaV1JrUzJkR1pXMW9iR2RvWWtabGFHUm9aVzFuUm1kSFpGcG1iV2haWlZobVFtUldaMkptTUdOV1lVaGhSbVZWWjJ0blpHaEhabmxpWkdKc1pVSmpVMlpLWW1WaVpXZEZaSFJuVkdoVVpuaGxRbVV4WTFSb1IySndZWEZvVldKclpuQmtZMkZsWVVoamMyTlRZMWRuUVdGd1lrdG9WV1JGWVdobmVXZGpaa2hvUW1kSllsRm5NR1ZzWW1GaFpHaFlabWhpVEdGa1l6TmhjR1Z3WWxab01XSnJZMUZtUjJoWFpXZGpUR1pTWWxoalZXWlNZVmRqYldnNVlscGhZbWhvYUU1alYyVm1ZV3BpT1daSlkxVm1SV05qWlZGaldtRnVZa3BvVjJKR2FGZG1jR2Q1WTFWa1dHSmtabGhqVTJKb1pWcGpjR0paWkZKbFdXaFpabHBuWjJOMGFHMWpZbVZxWWxWak5HSklhRVJsZUdaVlowOWpSbU4zYUUxa1VXRXhZa2xrYjJka1ltNWtjR0o1WTFSaldHTmFZVmhoUkdVeFlYQm5XbUZhWWtWa1JtY3lZbHBuTUdaU1pFeGhTR2hHWTBwa01taEZaV3RvYzJGWlpGRm5NV1ZzWTJsbVkyUnVaMEppZDJkVFlrVmxUbWhLWlZka2JtZFdZelJrVTJFelltUm9ObUZoWmxWak1XRmFaMGRuUldFd1ltZGpVV0pvWkZwaGFHVmlZV3htU21FdlpsWm9NMkZPWTFCbVYyWnRhR2RtUldGVGFFVm5lR2hpWjBWblEySTVZamRoV0dSM1pEVmlRV0pqWkd4bFJtWXpZbFptTUdSdmFGZGtZV0pYYUVWb1YyaEhaMGRsV1dGVllVNW1RMkZOWVRGa1NtZFJabU5rYUdWWFoyaGxUbVJXWmxabFFXUmFaMHBqV0dodFlYUmxObWhaWnpCbU1XZHhhRk5uZDJZNVoxTmpSV0pIWWxGbVVtRm1hRE5tY0dNMFlWRm9hR1JXWWpSa1pHTm9Za3BqVEdaSFlVVmtUbVJhWVZsbmJtSnZaelJtWm1ob1pXZGpVbWhDWTJkbk5HZzJaVXhsUW1KSlpXNWtVR0l5Wm1OaldtaElZMFpvWkdOWlpWQmpSV2cxWTBablkyTm9aa1poVm1aUFptZGthMk4zYUZKaWQySTBaVzVvVjJnd1kyaGpXV1JVWVdobVFXZzVZMWRpUm1aWlpsWm5ZV051YUVwbFVtTmtaakZpWkdSTFpFWm5iV1JzWm1oa1JtVnJaelJoYm1kU1lXMW1XV1I1Wmxsa1YyUXhaMVpuV21jd1ozaG9VMlpEWTBGa05XWkJabFZvYm1aS1kzSmpTbWhFWm1OaVJtVkpaM2hsWjJWQ1pVeG9WbVJHWkRCbFdHUklZVGxrTW1OWFlsVmhTV0pGWkZsb01XaDNaVk5qVTJSNFpHaG1SR1ZYWTFkaFNtUjVhR05tU0dSQ1pFbGhVV1V3WVd0aVNXaE5ZME5rZDJWbFowcGtWR1ZTWVhCbldHVXpaMDFpVVdGSFpGZGlaMk5NWWxKa1YyZzRaRkpvUldFeVpqbGpTR0ZqWlhobFRtVklhR0ZsUW1Zd1kyTmxSMk5CWXpWaFJHUmhaRUZpTUdGWVprSmlXR1J3WlhsbFZHRklZMlJpUW1KWVpYZGlUbVkyYUdSbFFtUlpaR1ZtV21OclkwSm9kbVJoWVd0amRHRjNZMVptVjJjNVlXRmhVbUo0WmpCbFpHZFdZbFprU21Vd1kyRm5NMlp3WkdwalZHZFhZVWxuWm1aRVpqQmpPR2hSWm1KaFJtVndZV3BqV1dVd1pVWmpXR0ZHWkZobU5XWXlZVlJtUW1NNVkxRmtRMlZuWVhCbGMyVkVaVlJvUm1kb2FGaGxhMlZ3WTBwbVZXaFlaMVppZDJOSVl6Tm1aR1pyWkdSak1HSnNhRnBuUVdkUlpEbG5hR1ZCWVd0amJHTkdaa1ZtVW1oT1ozWm1VbVl6Wmsxa1ZHWlNaakptWjJoV1lWTmlSbU5DWmtoaVJXSkhZbHBtTm1OQlpXeGhNR1JxYUVsaFZtYzRZMGxtUm1ac1pITmlRV1ZoWmxoa2QyRlhaMFJqYm1GTlowSmtaR2RZWTA1a2FHZGtaV3hvVldJM1oxVm1NR1p6WVRObVNHSldZMVpoVTJka1pFZGxkR1EyWmxsbk1HRXhhSEZoVTJWM1lUbGpVMlpGWVVkaVVtSkZZMGxvYm1SYVpGQm9VV0ZvYURGbWRXZFphSGRsWkdGWlowUmxWV1JPWjJaaVdXSnBZWGRuYTJOUGFFRmhSV2hSWmxKbWVXRlZZVEJrWVdjeFlXeGxLMkpsWjIxblNtWllaMVZpVldaUloxcG5aR1ZvWmxaa1ltaGlabmRsUVdkR1oxcG1hMlExWnk5aVQyTlZaR1JvYjJoR1pGVmxhR2RSWTFKbmVHTkNaVzFrWTJGc1psbGtWbVpoWlc1a1NtUlNaV1poZDJOTlprTmhXR1I2WlhCa2RtSmhZMVpuYkdFeGFFSmxiV2hhWWpkb1dXUlhhRnBrUVdobFlXdGpiR1JUWVVoaVVtRjBZVlppUW1SdVpqRmlibU5WWTBka1RtaE9ZV0ZsYTJOelpGQmlWV1ZvWjBKaWEyaFVaVWhsV21ZeVkxVm1hMk5KWWxaaFkyWkRaa3BpWVdGQlpHdG5kR1pPYUVwaGFXVk9aVzFtWVdoSVlVSm9WbWhSWWpCbVJXUkZaa2xqVkdOQlpVTm5TbUZJWkZGbVYySkdaV3RpTUdkSlpVZGtWMkZOYUV4aFZHUlVaWE5rVW1SRWFGaGhSbWhhYUdOamQyVktZVkptV1dGU2FIaG1TV0ZXWTJ0a1kyRkhabU5pTW1Ka1prWmxRV0ZIWkU1a0syRmxZVE5sWkdkWVlWTm5hR0phWlhCb1dXaFNZVmxtV1dGYVoyaGlVbVJ0WjFwaWJXSkdZbmRoUVdkVFltTmlWR1pHWTBSaFkyWmthRlptVm1KS1p6QmtZV1V6WTNCbmFtTlVhRmRpY0dSTVkwUmtNV2hKWmxwaFptY3laMXBvTW1Sa1oyeGpTbWhEWlVabFdHUm9aREppUldOclpITmhXV05JWVd4b1FtSjFaVmRvU0dSQ1ozZG9VMmRGWVU1a1NtTlhhRzVsVm1NMFkxTm1NMlZrWW5sb1NXTldaR3RvU21kUmFHeGpXV2c0YUZKb1FtWkZaVEpuVVdSV2FGcGxhR2hCWVdsb1NtSkhZa0psYVdOU1lVZG9VMlpGWnpGb1NHUlhZa2RsWjJkcFowSmhSbWh2WVN0bFVHRlJabFZrZFdWQ1pYZG9PR2haYUV4alJHRkJaRmRpUW1GWFoxcGpVMlJOWm5sbVoySnBaa3BrUW1SM1pHZG1SbU5GWkdOb1ZtTlRZVlpqZUdOVFlVeG5NR1pHWWpabVdXRXdaVEZpY1dKVFpIZGtPV2hUWVVWaVIySlNZMDFoWkdodWFGbG1RV2RDWXpCb1JXSjBaMHBrUm1SNFlVeG5SV1JIWjJ4bVdtTlphRzVsU21WM2FHTmtSV1JvWWtSblUyTldhSEJvTVdGbFlrVm9kR0l6WjJWa2FtVXdZV1psUldaRlpFMWpXR1ZHWlRCaGNHWlNabVJrZUdKRllrOWhZMlpyWm1OaGJtVklaRlJoWjJWd1kwRmpWbVZDWVZGbVVXSlNZbHBrVFdoallXeGxXV1ZXWldGbmJtSktZbEpvWkdReGFHUmtTMkpHWm0xbmJHUm9ZVVpqYUdObmFIbGtXR05EWnpobE1XTmlaSGRuT0dkVllXWm5NR053WTBobFFXSkJaVUpsVm1aQ1oyNW1iMlZWYUU5a00yRk9aR1JpWVdoclpqQmhTbVpsWlVKaFFtSnJaVlJvU0dGYVl6SmpWV1pyWmtsb1ZtRmxZMGhpV1dWVFpWTm9lR1ZvWjBSblJHaFRaRzlrTjJOSlpqTmhOR2N6WjBGa2JHWndhRWxtWkdGWGFGWm1WMmhrWVhsaU5XaHVhRXRqUW1WbllVUm1RMlF5WjJkaVRtVlJZakJqVldSU1lrVmhNbVU1YUVoaFkyTjRZazVvU0doaFlrSmlWbU5KWlZWa1JXSmpaVkZrV21ScGFGbGlaV2RZWWtSaGJHWTRaMHhuYW1WYWFFZGhXR2RDWTFwa01HTm1ZVUpqV21aTlkyRmpSMk56Wm01aFpHWXpabVJrWVdWV2FGZG5PV1ZoWjFKbGVHRXdaV1JtVm1oV1owcGhNR1ZoYUROb2NHUnFaVkpqU0dGR1lXaG5SR0l4WmtsbFVXSmFaMFZpZUdReWFHUmliR1pLWmtOblJtaFRZMVprTDJaSVoyMW9SV2RaWkZGbk1XSnNhR2xtWTJodVpFSm1kMmhUYUVWaVRtUktZMVZpYW1ZeFlqSmhSMlI1WTFWak1XWlFaRkpqWjJST1pWTmhWV1ZyWlhSbFFtVlJaMGxrT1dWV2FFWmlTV0UzWVVGb2FXWkdaVzVuUkdaNVlXeG5ZbVZUWkVWaU1XaElaMWRoUjJkblpHbG1RbVZHWW05aEsyUlFZMUZsVldkMVlVSm1kMlE0WVZsalRHUnFZVlZuVjJoQ1kxZGpXbWRUWVUxaWVXSm5ZMmxqU21oQ1lYZGlaMlZHWkVWalkyVldZVk5oVm1WNGFGTm9UR0V3WVVaak5tTlpZakJvTVdaeFlWTmpkMlE1WVZOalJXRkhhRkppVFdSa1ltNW1XV1ZCWkVKbU1HZEZZblJrU21aR1pIaGxUR1pVWmtGaWMyZFJZVTFrV0doM1pGQm9UV2hXWjNobFltUlRabFZrVW1ZeFpreG1SV2RWYUVsbFQySXpZakZtVUdGalozaGhRV1phWVdGblFXUjBaRVppWW1WNFlrVmlWR0ppWXpCb1pHWjZaRVZvTUdoa1pXOWtRMmRyWVdobVVtZFdZM3BrY0dSdGFHTmhiR0paWWxabVlXVnVZMHBtVW1aa1lqRmpaR0ZMWlVabmJXaHNaR2hvUm1ablprcGpiV0ZSWmtObU5HVjJhRTFuYm1VMFozRm9UR05yWVRWaVptRklZMUZoUm1OV1prSmtibWR2WjFWbVQyZ3paMlJqVm1SUlowVm9jMlJRWkZWamFHRkNabXRtVkdSSVlscGpNbVZWWld0bFNXaFdhR1ZsU0dGWlpsTm9WbU5DWW1ob1EyTlRaMFZtYUdoNVpHTmxTR1ZDWVVsaVVXWXdaV3hpWVdoa1psaGphR0pNWkdSbE0yUndZM0JvVm1Fd1pVMWpVV1pVYUZObFFtTkRaMFppYldkR1pYVm1WV051WkhoblZtUmpaSGRpTVdaSVpWQm5RbVp6YURObVJXTldhRkZqUTJKVVlVaG5TbUpYWTBabFYySndaM2xrVldWWWFHUmhXR0pUWTJobVdtZHdaRmxvVW1SWlpWbG9aV2hTWVZKa2JtaGtZMnRtZEdaM1pGWmxWMmc1WkdGblVtSjRZekJtWkdkV1lsWmpTbU13Wm1GaE0yaHdZbXBqVkdWWWFFSmxUR2hYWm5oamNHaGFaMDVvTUdGSlowcGhUbUV3WjBab1VXTkdaVmRrVW1NeVpGSmthMk5XWVc1blFXWnJaWEJuZDJGWFlraGxRbUozWkZOa1JXRk9ZMHBrVjJOdVpsWmtOR05UWlROalpHRTJaV0ZtVm1Wa1lWcGhSR1o0WjJ4amNHTkhZbTFuT1doMmFFVm9VbU5PWm5aaVVtRXpaVTFrVkdSU1pESmtaMlpXWjFObFJtRkNaMGhrUldaSVkzaGplV1pCYUd4aE1HTnFaVWxoVm1ZNFowbGpSbWRzWjNOaFFXWmhaRmhvT0dKWGFGUmpSMlJvWjNKalNtUXpZMlJoTTJoWFlXeG5WbVoyWjFka2EyVmphR1JsU0dOV1lsWm5VMkZrWWtkb2RHWTJZVmxtTUdVeFkzRmpWbWhCWmpsaFZHWkJZa1ZrTldSTlkyUmhibU5hYUZObFVXRm9aMVpvTkdaa2FHaG5TbWRNWVVkalJXSk9ZVnBqV1dWdFltaGtkMmRLWVVGaVFXVkxaRWRoYkdWUmFFdGlUMmhXWTNCbmFHRmxaMjVvVm1GWVowUmlVbVkxWTIxa1MyaFNaM0JoVkdkU1lWSmlSV05VWTJKa01HZGtaSHBtUldJd1pXUmpiMmRHWkZWaWFHUlJaVkptZUdSQ1ltMWxZbUZXWTFsa1ZXZGxaREZvYUdGU1kyUmtNV05rWTB0aFJtTnRZV3hoYUdoR2FHaG5hR1Z0WmtaaVIyWmFZVzFuV1dKWFlYQm9WbVJQWkhobVNXWlBZMVJrYUdoTlpYRm1SV1F5WjFKbU4yWmxaRzVuTVdoT1kxQmlhMlpXWTNkaVJXVjNZa0puTUdKV1p6RmllR1F5WkZWbWEyTkpaMVpuWldkSVlsbGtVMlpUWW5oaWFHZEVaMEppUjJaMFpDdG5WMk51WjBKb1NXWlJZVEJqYkdkaFltUm5XR1pvWlV4aFpHUXpaWEJpYUdkSVlqRm1aR1JCWkZOaGVXUmtZbVpsUTJWcVpYUm1TV0pSYUhsbWNHWktaRkJpTVdkWloxVmxUMkV5WWtWblFXUkZZMUZpYTJkUllXVmhNMkpKWjJWa1IyZDZaRzlsWjJkSVltbGpUV1ZaWVVoaGEyRTRaelZpU21GQ1kyaG5WV1pOWkdoaVVtTTNhRnBvYVdWallXeGtSMko1WjNka1QyVkVabXhrU21kVVpWWmlWbWh2YUdkbFdXWnVaRzlqTkdSYVpESmpjR1pNWVVSak1XUkpaVkZvV21aRlkzaG1NbUZrWkd4aFNtWkRaVVpsVTJOdlpIcG5VbUZvWkRWaFMyZEVZVlpsYTJZeVprOW5hbWhyWm1walVtRnFZM2RqU1dGVVkyMW9NV00wWkZaa00yRmpaWFZrV21aNVkyZGpXV2hDWkVGalJtUkRaME5uTUdkV1kzWm5SV0ZTWVU1amRtWlNZek5qVFdkVVlWSm1NbUpuWjFabVUyaEdaRUprV1dWRllrZGtaR1JwWldabVFtRldZM0ZpWTJSc1pFWmtNMlpXWlRCbmIyZFhhR0ZpVjJkRlkxZG1SMlJIYUZsaFZXZG1ZVWRsV1dZeFowOWtRbVYzWXpobFZtTkVabWhvWTJKRGFGVmhNV1ZUWldGa2JXZHpablZrWW1KVVpVbGtjbU5ZWTNoblpHRTBaa1ZpUjJWU1lVMW1aR2R1WTFwa1UySlJZMmhsVm1RMFlXUmlhR2RLWVV4aFIyaEZaMDVqUjJKWlptNW9UbWRvWjFkaWEyRm9aRVJuVTJkV2FIQm1NV05sWTBWbGRHSXpabVZoYldSc1pWaGtWMmhTWlVGbldtaGpaR2RoYzJOU1lVcGlNV1JvWTBGaVdXZFVZbWRvZVdOQlprWmtWbVp2WVVOa1ZXWm5aa1ZvVTJWWFl6aG5ibU5aWTFWbVVXSXZZbUZvYm1WS1psSmpaR1l4WTJSbFMyZEdaMjFrYkdob1lrWmthR1pvWlcxbVJtTkhaVnBsTldSWlpsaG9SbVpHWTFKbVZtWndaRWhtU0dOU1pqRm5WbVJWWjI1a1VtVnlhR1ZqYldKT1lVNWhZV1JyWlhOb1VHVlRZVUpvUVdkM1pVSm5SR0U0WVd4bVdHRkVhREZsVldSaFlUSmxVV05UWVZaaFVtaG5abGhsVm1WNFl6Qm1lbUpaWWpKalNtaHBhRkZoTUdSc1ltRmhaR0ZZWW1oaVRHRmtZak5sY0dSd1psWmpNV0pyWmxGalIySlhaR2RoVldSU1pWZG5OR1JCWTA5aFYyRTVaVWhsWTJGNFkwNW5TR05oWkVKalZtZEphRlZsUldoalpsRmhXbVJ1WVVwa1YyTkVaREppYjJSdFpVZGpWR0kwWlVWa1VtWkhZV3RuYjJGalpVRm9RV1JaWjJWa2FHZFJaM2xoWVdKQ1pqUm5lR2hTWjBoaGJHSjNabEprZUdVd1kyUmlWbVJXWWtwak1HaGhZak5vY0dGcVkxUm9WMk53WVV4b1JHSXhZMGxqVUdoYVpVVmxNV2R0WTFoa1JtSktaRU5uUm1SWVlXaGpNbWhGWjJ0bWMyaFpaMUZtTVdKc1ltbG9ZMk51WjBKaWQySlZaR3RqVFdaa1lrVm5hbUozWVhKaVVtSlJaR2RsTjJkbGFFVmpSbWhhWTBSbWFHZHJZVGhqUW1SVVptOWhkV1JCWmtGa1ZtUkdaRkpsTTJOTlpsUm5VbU15WkdkalZtZFRaa1pvUW1WSVowVmhSMmhhWTNsaFZtWm9aRlpqTVdOalpteGpRbU50WjJaalZXWnZhRmRpWVdSWFlVVmlWMkZIWVVkaFdXaFZabHBpYldoYVpHaGxZMkpHWWxaaWRtTlJZa1ZqWkdaS2FGWmlVbVozYUVKb1pXWm9aMUZpTjJKalp6RmtNV0Z4WjFaaWQyTTRaRWRpU0dab1luTmhUbU5hWlcxa1dtVktaR0ZvUW1oV1l6UmxaR0ZvWWtwaVRHVkhZMFZpVG1SYVlsbGxibVJKWW5Sa1pXZFZaMUpvY0dWVFpsWmhjR2d4WW1Wa1JXWjBaak5sWldOdFpXeGhXR0pYWlZKbmFHSlNZMXBqYkdGelpWaGpTV2RGWmxabVkyWlBhSGhrTkdGcVpWWmhhMmRyWjI1aFVtZ3dhR2huVG1WU1pqRmpXV042WTFCbVFtTldZa0ptU1dKNlpqQmxabUprWlRGak9HRmxZMGhtTW1acmFEWmpVR05DWm1oamJXRkdaMGRrV21odFoxbGlXR2RDWlZablltVXhZM0JvU0dOSWFGVm9PR1pSWlVKa2FXSkZZalZsVG1WSFpFNW9SbVZSWTBWbWMyTlFZMVZsYUdSQ1kydGlWR0pJWmxwak1tTlZabXRoU1dOV1kyVmpTR2haWVZOb1VXSXdabmRvVEdkRlpVUmhSbWc0WVVSbmVtSkdZVmxuVldFd1ptdG5SMk5oWjBoaVoyTm1ZMlZoVVdkVlkyOW9VbWN3WVd0bVdtVkdhRlZpU1daTWFGSm9WMlE0YUZKb1JXTXlZemxrU0dGalpuaG5UbU5JWm1GaVFtaFdhRWxrVldORlpUbGxSV05NWldwbWMyRkdhRWRtZUdaVllYcGpVV0ZIWjBaaldHaEdaV2RrZEdad2FFNWpVbVZvWVc1b1NtRjNaMVppZDJWaWFESmxNV0ZoWWxaaVYyUTVaR0ZqVW1kNFlqQm1aR0ZXWlZabFNtVXdZV0ZrTTJOd1kycG9WR1ZYWlhCbVJHUlhaSGhpY0dSYVlVNW9NR2hKWWtwaVRtVXdaMFpsVVdGR1pWTm9VbUZ5WlVWbGFHWTRaVmRuVUdoQ1oyaGxlR1paWjBoaWJHUTRaMWxuYTJaT1owcG5WMlJ1WVZab05HRlRaVE5sWkdVMlltRm1WbUZrWjFwaVJXRkNZV3hpYjJoQlkzaGhSV1p1WWxkblJXaENabWhvVDJWRVkwbGhTR2hZYURKbmFHSktZVlptVm1aQllWUm9TR05vWW10bGVtRlJhR2RqTVdocVltWmtibVIwWmpOalZtTXdhRzltVjJSaFpGZGlSV0pYWjBkbFIyRlphRlZoV21kdFpGcG9hR05qWjBGaVJXTnVaRVZtZUdaUmFETmhTR1JXWVZabVUyUmtZa2RtZEdFMlpWbGtNR1F4WW5GbVUyTjNaamxsVTJOSFpWaGtPV1Z0WkdSb2JtTmFhRk5oVVdOb1lsWmpOR05rWVdoa1NtaE1aRWRsUW1ZMWFGRmxZbWRzWjJobWQyUmpZVVZpYUdWRVpGTmxWbUp3WXpGalpXRkZaSFJuTTJoalpXbG1SbWhhWlVOaVZXWktabGRuVUdGRloxRmxVbUpPWVd0aFJtVlhaVmxtVVdSWlpEbG1WbWd3YUdSaU1XaEdZbEZuTkdWR1lrTm9WbVJOWTNsaVQyZDRZMnhuWW1SaFpXNWliMlZHWkdabmJHWmpabEpvVUdoSFoyeGhhR1JHWjJob2FHWnRZa1puUjJKYVltMWlXV05ZYUVKa1ZtVmlaWGRrWjJWRGFGTm5WV1puWmtoa1NHUklZbEpqYW1GVlpVZG5UbU5PYUdGbmEyZHpZMUJpVldOb1prSmlhMkpVWWtoaVdtY3laVlZoYTJSSlpWWmhZMkZEYUVwbVlXVkJZMnRvZEdkT1pFcG1hV0pPWldsaFdXWklZMEpuVDJGWWFHdG1hMlZQWVdWamQyZGpZa3RpV21jeVkzQm9aMlJYWVROalRXaFJaRWRvVjJabllreG5VbU5YWnpob1VtTkZaekprT1dOSVltTm5lR1pPWlVobFlXaENZekJvWTJaSFpVRmtOV2RFWW1Gb1FXY3daMWhuUW1kSVozaGllV2RXWkRKbmNHSllaRWhtYUdkbllWZG5TV2RCWkdObFQyVmlaM2hoYUdOTlpscG5iV1pHWjNkbFZtVlhZVGxvWVdoU1kzaGpNR2RrWTFaaVZtWktZekJpWVdNelluQmpjbU5IWVZOb1NXTkRZVmhoUm1kNFpYWm5TbWRXWWpsb2EyVmtaMnhpVW1GbVlrWm1VMk40WWpSb1ltSlJhRzluVEdGVlpGWm9RbU4xWlZkaFNHRkNZWGRvVTJkRmFFNWlTbWRYWlc1b1ZtYzBaRk5pTTJOa1l6Wm1ZV1pXWTJSaldtUkhaMFZrTUdablkxRm1hR1ZhWTJoblltaHNZVXBqTjJWWWFETmpUV1ZXYUZkbWJXRm9aa0ptVW1ScFpqaG5SMmhDWTBob05XWTNabGRtYW1JNVpuRmlZMk5zWlVaak0yTldZekJuYjJWWFlXRm1WMmhGYUZkaVIyRkhZVmxoVldGYVpHcG9TV053WkU5bFVXWmFZMFpsVjJkclptTmhaR1ZJWmxabFZtSlRZbVJrUjJWMFp6WmpXV1F3WlRGb2NXSlJaR2hrVW1NMFpVVmhSMmhTWlUxa1pHUnVabHBuVTJSUlpHaG5WbU0wWjJSbGEySTVZa05qUm1kSFlXeGtXbWRaYUc1aVNtTjNabU5pUldab1lVUm1VMmhXWTNCbE1XWmpZa0ZqVG1NMVpVdGlhbWR6WkZsaFJHVldZamxtVG1GTllsWmpjMmRCWkZsaFZXVnNZMk5qVUdWVlptUmpkV0ZGYUhka1JXZzVZMWRqZDJKelowVmtSR1pzWmpoaGIyVmpZMnhoTldOQ1lsbGpNMk5KWjB0bVdHRldhR1JqUzJGR1pHMWxiR2hvWVVaaWFHWm9ZMjFtUm1OSFlWcGxiV05aWTFOalNXVlJaRTloZDJNNFkxWmpWV0o0WmpGblpHZGxaRWhuVW1WeVkyVmtiV1ZPWms1b1lXaHJaSE5oVUdWVlptaGlRbU5yWjFSblNHVmFZekptVjJGb1oxcGlaR1ZOYUZOaVZXUmpaMDVuUm1Wc1lsUmlVMkpYWWtsbVRXRmlhRmhuUVdKalpGUmhWR1JaWkdKb1dtUlhhR2hqUTJObFlURmxRbWR3WTFaak1XUnJZbEZuUjJOWFkyZGhUR1JTWVZkaU9HUlNhRVZqTW1VNVpFaG1ZMlo0WW5OaFZHVkpZa1poZDJSaVpGaGlhbVpvWkZKb1pHTXlaRkpsVjJoaFl6Tm5aR041WTBKbVdHVnJZbTltUTJSM1oyUmpMMkpoYUVKbGIyTjVZbHBpYUdaU1oyMWlXbVZ0WlVaaGQyWldZbGRrT1dKaFlWSmhlR0l3WjJSa1ZtVldaVXBoT0dkUWFIcGxTV2h4WkVobWJXTlJZakJtVkdKclowVmxRMmRhWlVSaVNtTnlZMlJoWjJKYVlrMW5ZV1pxYUd4bGJHUkJZVVZtU1doVlpXRm9WbUpzWkdsb1kyZHVaRUpuZDJSVFlVVm9UbU5LYUZkbWJtZFdhRFJqVTJVelpHUmtObUZaYUZGbFRXRlNaRmRtVldWd1ltMW1aR1JCWWxKb04yZERZVkprVFdWU1psZGhibWhPWWtobVUySlNhR1JpVldGWWFFVmphR2hQWlVobVJXaDRaM2xqVm1Ob1lsWmxjV0pqWTJ4aFJtTXpabFppTUdodlpsZGpZV0ZYWkVWblYyZEhZa1JoU21GalpVeGplbWRXWWt4bFkyUkdabFpsZG1WWFkydGlZMlZrWTBob1ZtSldaVk5uWkdKSFluUm5ObWhoWld4b1dtRkJZVk5sZDJnNVlWTmtSV05IWVZKaVRXaGtZVzVtV21SVFpsRm1hMlpvWjNob1pXSnFaV2huVEdkSFowVm5UbWhhWmxsaWJtWktZWGRsWTJKRmFHaG5SR05SWkZKbVNtWTNZVXRqUW1oclpUUmhUR0ZwWVZsbVJHTkJZa1ZvUW1WamFGcG1hMmhWWWt0aFQySjRaMFZrVDJoaVpYZGlSV1J0WkZoblVXZFJZemhrV0dSQmFHTmpaV05TWW5oa2FHWjJZbU5oWjJFd1lTOW9ZV1Z1WlVwa1VtRmtZakZuWkdGTFprWmhiV05zWm1oblJtZG9ZMmhpYldSU1kybG1UV0o1WlU1bVEyaEpZMkpsWW1NeFpVcG9kR0ZJWjFKbE1XTldaVlZpYm1OU1lYSm1aV1p0WWs1b1RtTmhhR3RtYzJOUVlsVmlhR2hDWVhOalIyWkVZalJtTDJSQllWVmllR1p4WTA5blYyRlpaRU5tVTJSM1psWmlSR1JVWnpOblpHWnVabGxsTW1kV1pVbGpVbUZWWm10aVJXRkphRlJrUVdkRFowcGxTR1JSWjFkaFJtaHJhR3RtUVdWRlprZGlVV0pvWlZKaVYySTRhRkppUldjeVlUbG5TR1ZqWjNobFRtWklhR0ZuUW1OV1prbG1WV1JGWjJOaldXRk5hR3BvYjJKbVpsSm5iV2hSWjA1b1JXSkhabHBrUW1KVFpHZGlkR2h3WTJSb2QyWk5ZVTVoWkdGUlowWmliV1paWmtkblJXSjFZa0ZqVTJaamFGUmlSbUZDWTA1a2FXWkdaMFZtVG1KcFoxbGlibVJhWkVwbFZHZFhZbkJuVEdGRWFERmhTV1JSWmxwalJXRjRaakptWkdSc2FFcGlRMmRHWVZobWFHUXJaRkpuWjJkT1psSm5SV1ZHWldObFpHWk5aekpsVG1KcFpGTmpSbVUxWVVwbVZHUkhaa0puZEdGWFlrZGtTbU0yWTJKbk1XaGpZVWhuVW1SR1pVVm1hR0ZYWVVWbmMyVlJabFZqUVdGQ2FEbGlWR1p1Wmpoa05XZFNaREpuWjJKV1lWTmxSbU5DWWtoa1JXZEhhRnBvZVdWV1lXaGhWbVp4WjJObmJHTkdaeTlpUVdOM1owcG9abU5QWW0xbE9XTndhRmRvV0doSllrMW9XbVp1WVhSbmFHUmFZV3RqUW1ZMlpsTmtWbVZKWW1Sa1IyTXhabFZqVFdaSlkwTmhUV1Y2WkUxb1JXZE5aMVpsUTJkb2FIUm5TMkZIWkZka2FHVnRabVJuYm1OYVoxTmxVV2hvWTFaa05HVmtZbWhoU21GTVlrZGtSV1ZPWlZwbldXVnVaa2xsYTJSUFpVRm5SV1pSWlZsaU1XVndaREZpWldGRlozUmlNMlpsWjIxbWJHUllaMWRpVW1aQmFGcGxZV0pCWWtwb1pXRlNaRkpqUldOVVoySm9NR0ZrWm5wbFJXUXdaMlJoYjJWR1pWVmxaMk5PWlZSbGFHRjRZazFuWTJGc1pGbGhWbUpoWTI1alNtRlNZbVJoTVdSa1lrdGtSbUZ0WTBWbWNHRkhaRVZtWjJNd1lsZGllbWhKWTNCa1RtWlRZV3RvUm1WTFpteG9VV2hWWkZaaFZtUlJaRlJtUW1KbmFGbGphV0pRWWxOb2MyTmFZbUZsYkdOWlpsQmtSMlpvWnpSb01HTklhR3BqYTJacFkwaG5VbUZhWlUxalMyTkVZazFuWTJaSFowWmpRV0pMWVVobGVtUlpaR2RsWTJaSGFERmxTV1ZDWkZKaGQyVlZhRTVoYVdoM1kwTmpUMkpFWmxKa2NHSllZWGRuTUdOYVkwZGxWR05OWjJob1VtRlhZemhpVW1ORllUSmhPV0pJWkdObGVHUk9ZVWhtWVdoQ1psWmhTV2RCWTJkblNtVkZhRTFsZVdaQlkxbGhSbVJYWkVwbFdXTlZZbGhpWkdKWVkxTmlhR0phWW5CaldXVlNZVmxuV1doYVpXaGhVbUp0WVZwa2JXSkdaRFJtUVdGWFp6bGpabVZYWjJobU1HSk1ZbEZpVm1aMGFEUm5VV1pZWW5CbmFtTlVZbGRrY0daTVpVUm1NV1JKWjFGb1dtSkZZM2hqTW1ka1lXeGtTbVJEWmxGaVdHZG9aMjlqUkdNd2FITmxUV1pYWVRObFRtSnBaMk5vYm1SQ1pYZGhVMkpGWms1alNtRlhZbTVuVm1jMFpsTm1NMlJrWmpaaVlXUldaR1JtV21ORVpuaGxiR0puWjBGa2VHaEZaRzVuVjJaRlpFSm1hR2RQWVVSaVNXaEVhRlprTW1obllVbGxVMlpCWjFGblVHSlhaVlJoVm1FNFlVdGpWbVZTWkN0aFlXaHNaa1ptY0dSVFpGVmliMkZsWVZCbFYyTkZhR0pvUjJWSVkwbG1UV2RpWlRKaE9XUjBZbGRrYkdkV2FIWm1WMlZyWldObVpHWklZVlpuVm1SVFlXUmxSMlowWVRaa1dXY3dZVEZsY1dOVFozZGxPV1JUYUVWbVIyTjNZVmxoVUdOcVpEaG9RbUpVWkVkaWIyVTFZMXBoZDJkU1pVeGtRbVJWWjA1blNtZGhaRE5pTldKaGFHTmpSV0pvWWtSbVUyUldZWEJtTVdKbFlVVmpkR1l6WVdWa2JXRnNZbGhtVjJWU1pFRmlXbVZoWWtGaWRHTkdhRnBoTUdSV1ltSm5TbUpvWVZKbU9XUmlZMEZpV21jM1lVSm1NR0pvWkU1bFVtRjNZa0puZG1KbVoyNWlkMmRXWW1Gb2JtSktZMUpvWkdneFltUm1TMmRHWm0xbmJHUm9aRVppYUdOb1pHMW1SbUpIWlZwaWJXaFphRmhtUW1Ka1lrOW5lR0ZKWms5a1ZHUm9ZMDFvY1dSRlpESmhRbU42WTJWa2JtZzFaRTVpWldaclpVbGxSMlJsYUVKaVFtRnJaVlJoU0dOYVpqSm1WV05yWmtsblZtTmxZMGhoV1dGVGFGTmplR2hvWWtSa1YyTlhaMHBvYjJOalkwTmxVbWRKWlZoa1ZtTlNZMkZvV21adFkzQmxhR05rWWpOaWNHTndZbFpvTVdOcllsRm1SMk5YYUdkaFRHSlNhRmRqT0dWU1pVVmhNbU01WjBobFkySjNhSGhqU0dGWllrSmhNR2RqWTFWbFJXVnZaRTVsV21GdFprWm1SV1JJWTBkaldtZFpZVlZrV0daa1pGaGlVMkZvWVZwa2NHaFpZMUpqV1doWllWcGlhR2hTYUcxbldtaHRaMFppZDJWV1psZGhPV1JoWmxSa01HVnNZbFppU0daQllrWmlObUZHWlVSbWRHUjZabGhsVjJkd1psZGpTbVZXWVVsaVVXVmFaVVZqZUdVeVlXUmpiR1JLWlVObVJtaFlaR2huTW1KRllXdG5jMmRaWmxGbk1XaHNZbWxrWTJKdWFFSm5kMkZZYUd4aldtZGpZbE5oVjJOQ1pqUmxWR0ZZYUdSb2VXaFpaRkZtVFdOU1lsZGlWV1p3Wkcxa1pHaEJZMUpoT0doQlkzaGpUbWQ0YUZkbVdHZE9ZMGhtVkdOdFoyaG1TbVpUWTBaa1oyTlVaRmRoUTJZNFptaG1WMkZIWm05a2NtWmFaR3RuYkdJeloxTmtNV05aYUZkbFdXVllZa0ZuUVdKSFowZG1jMmhWWlUxa2JXZzVaVzlvWldWV1kzaGlhbVJqWWtWa1kySmtaVWhtVm1KV1oxTmlaR0pIWW5Sak5tSlpaVEJvTVdSeFpGTmlkMmc1WlZOa1JXZEhabEpoVFdSa1lXNWpOR05IYUVObGJHWjNaM0pvWldKSFl6QmtTMmREWkZablZtTmFZV1psTTJoS2FEUmlTbUZCWkVGbVMyZEhabXhpVVdKTFlVOW5WbU01WkhablpXZHVaV1JoU21oWFpGVmlVV2RSWW1Gb1FXY3haVVpqWldoUlpWRm9SMlZtWkVabFNtZzJaa2hqTW1NeFpXOW9SbVpWWm1obVVXVlNabmhqUW1adFpHTmpiR2RaWkZaaFlXSnVZVXBoVW1ka1l6RmtaR1pMWjBaaGJXUnNabkJqVVdKc1owRmpkbUZTWnpKaFoyaGFaVWxsUjJST1lraG1ZbWd3YUdSaVNHWkVhRkpoVW1aYVkyVmlTR05TWjNKblpXUnRZazVuVG1kaFltdGljMmRRWlZWaWFHTkNhR3RsVkdKSVpGcGtNbVJWWTJ0a1NXRldZV1ZpU0dVMVowZG9RV0V4WkVWb1VXZFdaWGhvTUdkNloxcGhSMmRvWTBsaVdHSnJaR3hvUzJkbVpraG1SbUpvWW1SbE0yaHdZbkJuVm1NeFlXdG5VV1pIWlZkbloySk1ZbEpsVjJnNFpGSm9SV015WWpsb1NHaGpaM2RqYkdKSVlsQmhRbWhXWWxkbVZHRlZZMk5rUW1KallrWm9hR1JYYUVaalYyTndaM2xqVldkWVltUm1XR2hUYUdob1dtVndhRmxrVW1oWlpWbG1XbWRvWjFKamJXSmxhRmRtUm1jMFlWaGhWR2gwWW1GbVUyTm5ZVUZoWkdoU1pVVmtVbVk1WVZwb01XSkNabXBuVkdoWFpYQm5UR2hFWlRGbVNXUlJaRnBrUldWNFlUSmlaR2hzWTBwaFEyVkdZMWhoYUdJeVlrVm1hMmh6WVZGbFJtZDRaMFZsY21GSmFGaGpOR0ZRWmtObFZtWk9aVnBpVjJSdFltaG9VMlZUWWpOb1pHVTJaR0ZpVm1Ga1lscG5SV1ZDWld4a2IyVkRZVEJvVm1oMlprVmhVbWhPWkhaaVVtZ3pZazFsVkdkU1pqSm5aMmRFWlZoalZXZFdhRlZpUW1SWFoxcG1NR2RXWjJoak1XaHBhRXBsYUdacllpdG5RbWhGWjFKbmNHRkxaMGhqUVdaQlowZGxTR1puWkV0bldtTnFaa3BoYjJkallVRmliR0oyWjFWbGFHaE9abFpsVm1SQllscGxZMmhEWW5sbWNHSndaR05uVldNeFp6Sm9WbU4zWkRsbFlXSkJaVmhtU21WTmFHVmhNMmhaYUVkblUySjRaM2hsZUdobVluaG9OV1JvWkVkbFJXVk9ZVnBsV1dGdWFFcGlkMk5qWVVWbGFHTkVaRk5oVm1Wd1pERmhaV1pGWW5Sa00yRmxZVzFrYkdSWVkxVmlWV05TWkZKbFNXUldaV2hpVEdWRllVWm5RV1ZEWjJWbFZXSmtZblZqVDJoVlkyUmpiMlZHWWxWa2FHUlJZVkptZUdKQ1lXMW1ZMlZzWlZsbVZtWmhabTVuU21OU1kyUmtNV2hrYUV0alJtZHRZbXhqYUdKQlprRm5NV2Q2WmtKbk0ySk9ZVzFrV21RellrSmtaR05hWW5kaE5HTlFZbFpvUldnMVoySm5UR0ZVWmxabU5HUmhaa2RpVG1OVVptUmtSV2gwWm1Kb1YyVjRhRUZqTkdKVVpraGlOR0pwWkVkb1oyTjBaa2RoWkdobloyeGlWR0pZWW5kbFFtTkVZVkprV0dVMVkzbGtaV1JIWTBaaFpXTlJhREJqVW1oaFprbGlXR1ZHYUVOa1ptTnVaVTVoYkdkbVpWWm9hMkZSWTBkbVYyWm5aa3hoVW1aWFlUaGxVbWRGWXpKbU9XTklabU5uZUdKT1pFaGlZV1pDWWxabVNXVlZaRVZuT1dSRllreGlhbU56Wmtaa1IyUjRaVlZtZW1OUlkyMWxWbU5ZYUZabWVHUmFabWhpVG1aV1pUVmxVbVZPWVZKbWIyRmFhRXBvTTJaV1pXOW1WbU5ZWVVab1JXRlNaekJpYTJkVllsWm9WbUpTWXpCalptVlhaemxqTW1WWVptNW1PV0ZEWmtGaU0yUm5ZMUZrV21ORlpYaGhNbVZrWld4blNtWkRaVVpqV0dSb1pESmhSV2hyWjNOaVdXRlJaekZsYkdOcFkyTmpibUZDWWpSa1NHVkJZWE5tUVdoRFpsaGljMlpJWmtOaGJXWk9aV2xrWVdOVlkzQmxXbUpCWkVKblFtZG9aVWxtVldaV1puWm9SV1JTWkU1amRtRlNaRE5rVFdoVVpGSm5NbVZuWlZab1UySkdaMEpvU0daRlprZG9XbU52WVZaaGFHUXhabWxvU21Ob1kydGtLMlZDWWtWb1VtTndaVXRpU0dkRlpVZGtSMkpJWkhOaEsyWmFhRzFvV21kb1kyTmhSbWRXWjNaaVYyWnJZbU5sWkdkSVpGWmtWbUpUWkdSb1IyaDBaVFpsV1dNd2FERm9jV1ZUWm5kb09XaEZaRUprV0dGR1pHWmlXV1V6WjFwbVZXTlJaR2hvTVdGM1pFbGtiR052WlVOalUyY3dhREJsYldSSllqSm5TbVJuWkdObFJtVmFaMlJpVTJSUlpUVmhPR05sWVVKalpHVXpZMk5vYW1Rd1lXWmpSV0ZGWjAxaVdHUkdhREJrY0doVlpXVmxVbUZGWjFCaFkyZ3daR1JvTjJKQlkyeGtSbVJ2YUVkbFJXaG5hRVZvVkdWb1lXeGtkbVJsWWpGa2IyY3ZhR0ZsYm1GS1pWSm5aR0V4WW1SaVMyZEdhRzFuYkdWb1pFWmxhR2hvWkcxaVJtWkhZbHBqYldGWllWaGxRbWRXWTFwbmQyVTBZbEJrVm1GRlpUVmhZbU5NWmxSbFZtWTJaMkpvUjJoT1kxRmhVV2hGWm5OalVHSlZaR2hoUW1acllWUmpTR1phWkRKblZXRnJaVWxrVm1KbFlraGhXV1pUWkZObGVHVm9aMFJvVjJWWGFFcGplV0ZhWW0xa1ZtaGtaMVZvUm1SNFkyRmtZMmN6WVdoaFJHSm1ZWGxtTkdKb1lraGtaMmR2WW1Wa1dtTnBhR3RsWVdkVlp6Sm9PR05RWTBSb1YyRTRabFJtWldOb1lrMW9ZbWhoYUVKak1HaGpaVWRrUVdRMVowUm9ZV2RCWnpCbldHWkNZbTVrYUdONVoxUm5WMkYwWTFob1VXRm5ZMlJoTDJOWlpWSmtjMmRaWlUxbGFHWXhhSFppWW1FeVoyaGlPR2htWkRKb09XRmhZbEptZUdjd1ptUm1WbU5XWjBwa01HVmhaRE5qY0dKcVpsUmlWMlp3WVV4aVJHWXhZa2xuVVdSYVlVVmxVV05wWjFCaWFHVnpaRkppUjJkM1ltTmxNMmRCWjFabmEyWlpZMWhsYm1OT1kybG5ZMmh1WWtKbWQySlRZVVZpVG1kS1oxZGhibWRXWmpSbFUyZ3pZV1JqTm1GaFlWWmlaR1JhWjBWaVFtaHNabTlvUTJZeFlrNWxObUZDWjBGblFtUTJZMUpqTTJWVlpGUmtWR1V5WkVKaVFtSkJZMEptYTJKVmFFaG5hR2RyWTNwaVVtZFJZbVJoY1dKaVpVVmxPV1V6WWtGb01HSk5hRmRpVG1aWFlrVm5aV05VWlVOb05XVmtZVTVrVjJkbloyVmlUV05WWkVaaE0yZFhaMnhqYzJKQ1pVaG9WbUV4WmtSa1dXUnRhSFJrTTJWWlpIaGhiR0ZxWjFGbloySmFaV0poU0daRllUVmxUV0prWlc1aFdtUlRZMUZrYUdKV1pqUm5aR1JvWWtwaFRHSkhaMFZrVG1kYVpsbG1ibVpLWjNkalkyVkZabWhsVEdoSVlsSm9TV000WjB0bk1HTlZhRWxvVDJNelpqRm5VR05YWjFGb01HUmFZVmxtUm1FNFpFNW9TbUZyWlVsaFpHRkZaRUZrV21odVpFTmtNR0prWXpKblEyWXdaR2RtUldkVVptaGxRbWhuWW1OaWEyaEJhRUZvWm1NeVprWm1SV2RtWm14aU5XVkhZMUJrUjJOc1pHaG9SbWRvWjJoaGJXWkdaRWRqV21GdFpsbGpXR1ZDWmxabFltSXhaM0JoU0doVFoxWmlWV0ZqWkVGalZtVTFaM0poWldSdFkwNW9UbUZoWW10aWMySlFabFZoYUdKQ1pXdGtWR05JWWxwaEwyTlRZbGRoWjJGV1pXVmlTR0ZaWTFOblUySjRabWhtUkdkWGFGZGxTbWQ1WWt4aldHTnNZVVZoWVdKVloyeGpZV0prWlZobWFHUk1ZMlJvTTJkd1puQmhWbWN4Wm10bldXaFZaRmRpV21kaVowWmtlV2hDWTBab1dHSkVhSE5pWldaSlpqRmxXbUpLWjA5bk1XZ3dhRUpqUm1ab1pFNWpPR2RKWVhwaFVXVkRaMFpqV0doa1pubGpSMk5ZWTJ0blNHTkhaa1psYTJFNVlreGxhMlJLYUVKblRtUnNaRVpqYjJOT1lWTmlhMkUxWkVWaGVtSnpZbGRpVW1kM1lVRmxaR1ZGWlhkbFkyYzJZa3RsUTJJMFozRmtRV1JwWmxKa1RHZENhSGRoV1dOalpscG9RbWcxWWk5aFpHUm5aV3htYjJKR2FGaGphR2N5WjBWbmEyRnpabGxpVVdVeFpteGphV05qYUc1alFtZDNZa2RuWjJSWmFHUm1SR0o1WldOa01tSlRZVE5qT1dkUmFHRm1WbU5rWmxwbVJXSkNaMnhpYjJaRFlqQmtWbU4yWWtWbFVtaE9ZWFpoVW1ZelprMWpZbUZGWXpKbFoyTlJZbFpoVm1kQ1pGSmpRbUZIWVRsaEsyVm1aVUpuVm1KeGFHTmliR2RHWlROb1ZtVXdaRzlsVjJKaFoxZGtSV2hYWWtkb1IyWlpaVlZsVFdSdFpWcGtMMlZpWTFaaVZtVTNZMUZoYldRd1lXUmpTR2RXWTFaa1UyWmtZVWRqZEdJMloxbGhNR0l4WlhGbFUyZDNZamxuVTJWRlpVZGpVbU5OWVdGb1dHTmFZV0ZrVTJoclpFVmxkMlpRWkRCaFJtTkdZMXBuZDJWS1kwNWxaV2R1WkVwa2RHZGpaVUptZDJGTVpVRmlRV1JzWXpkalFtTjNZbkJsYm1WaFpXMWhiR2RNWjFKbVVtSkJaRkprVUdkQmFIUmlTV0ZpWkhkbFZXZE1aVnBuYTJFMVpTOW1UMmRWWldSbWIyZEdZbFZtYUdKUlpsSm9lR1JDWlcxbFkyaHNZVmxrVm1aaFpHNWtTbWhTWW1Sbk1XRmthRXRqUm1GdFowVm1NV1JZWkd4bVJXVXhZVWRrYUdGcmFHNWtZMkZ0YUVwa1ZtTmpabXhoY0doWVkwWmhRbU5HWnk5alZXZHVhRkpuY21abFkyMWxUbU5PWTJGamEyZHpaVkJsVldGb1owSmxhMlpVWjBoaFdtRXlaRlZqYTJoSlkxWmpZMlZEWWtwbFlXVkJZV3RqZEdKT1lVcG9hV0pPWkdwbFdtUnVaa0pvVm1SUlp6RmtiR0ZVWVdWb1ZtaEtaa3htWkdVelozQmtjR05XWnpGb2EyVlJaa2RrVjJkblpreGpVbVJYWkRoaVVtRkZZakprT1dOSVpXTmplR1JPWlZCbFVHVkdZekJpUW1GQll6QmxiR1oyWVVwbk1taEtZa2RpUm1WWVoyUmhlV1pSWWxobk5XWmxaRmxsUW1OYVlYQmxXV05TWjFsaVdXTmFZbWhtVW1odFpWcG5iV0ZHWjNkb1ZtSlhhRGxtWVdKU1kzaGlNR0pJWlZabVVXTmFZakJuWkdkWFkyUmphbUZZWkc1aWFHaG9hRVJrTVdoSlkxRm1XbVZGWlhoaE1taGtaR3hpU21WRFowWmlXR1ZvWWpKblJXTnJaWE5tV1daUmFEQmhXbUZwWW1WbWJtRm5hR3RuVTJKRllqVm9WV1JYWW0xaFdtUnhaVkZqYm1WMFoxRm1ZV05XWVdSaFdtTkZZMEprYkdodlowTmxNR1JXWm5abVJXUlNaVTVpZG1KU1lUTmxUV2RVWVZKak1taG5abFprVVdoQllWRm9VR0pYWmxSblZtTTRaRXRqVm1SU2FDdGlZV0pzWmtabGNXTldhREJrU21WRFpVbG9VMlpvWWtaaFJtSm9ZV3htVm1Sa1lqTm1RbUpvWTJKa1JXUnNZM1pvUkdKclpEUmhaR1JSYUZab1ZtaGhZMGxoUTJOTllucGtUV0ZGWVUxaFZtZERhR2hqT1dkRFlVVmpTR0p3WVZOaFpHWnVaelZqUkdKV1pVSm5WbU14WjJSbmEyUmFZME5uUldKVlpuQmtWbVJUWTBoblNtRjNZbU5uUldkb1lrUmhVMlJXYUhCbU1XVmxhRVZpZEdVelkyVmxiV2RzWWxoa1YyVlNaMEZsV21KaFpVRm1UV1ZTWWtwbU1XSm9ZMEZtV1daVVpHZG5lV1ZCWVVabVZtZHZhRU5qUldOb2FGbGhSV1l4WjJkamRtZEpaMVpvYUdKeGFFdG1NbVZLYUVKblpHWXdZWFJqVjJKR1oycG1NV1p2WkVab2FHWTFZMjFqUVdSdVkwNWplbUpqWTIxaFZtSmpZbGxpTTJKQ2FFaG1TR2hTWmpGbFZtZFZaMjVuVW1WeVpXVm1iV0ZPWlU1bllXZHJZWE5rVUdoVlkyaG9RbVJyYUZSblNHZGFaeXRoUW1KbmFIQmtZMkZMWVROamFHUjBaa05vWjJac1pGWmhWMlJZWnpsbGVXTlpaVWhpYkdKRlltRmpWV05zWjJGb1pHZFlaR2hqVEdWa1pUTmtjR2h3WVZabE1XZHJaVkZuUjJOWFpHZG5UR1JTWTFkak9HTlNZMFZrTW1kallsUmhUMlV4Wlc5alZXUmFaVzFrYjJaS2FGRmxSbVZqWlZGbFpXTXphRXBrUjJWSWFFZG9UbVJaYUZWaFdHZGtabGhqVTJKb1lscGxjR2haWVZKbFdXaFpZbHBrYUdaU2FHMWtXbVZ0WTBabmQyUldZVmhuVm1oaFlrVm5lR2d3WWtSalUyUkdaa3BoYkdobVkxWm1RbVpxWTFSaVYySndaVXhoUkdVeFkwbGlVV1phWWtWbGVHWXlaMlJrYkdoS1lVTm5SbVJZWjJoaU1tVkVaRlZsYzJGUloxTmtkMmd4Wldsa1ptVXlZekZuZDJWWGFGWmlWbVJCWVZaa2JHTTVZalJtVTJNelkyUmhObVJoWjFaa1pHVmFaRVZvUW1Sc1pXOWpRMk13Wmxaa2RtUkZaVkpoVG1SMlpWSmxNMkpOYUdKaVJXRjVaa0pqWTJSSFpERmlOR1kwWmxWaVdHVktZbkZpVm1GblptaGpjV2RsWkdkblZXY3ZhRWhtYUdWclpWbGtSbVJwWmtGbFJtRkRaRzFqV1dkSlpXVmtiV1ZaYURGblpXWldabFZpZW1oWFpHdG5PV0pLWkZablVtWjNhRUpuWldob1psRmhOMkZqWVd4aWRHWnhhRlppVW1oR1psTmxSMmhJWjFabllXZGtaRzVqZEdGVFpFWmthR040WW5oaFptZDRhRFZpYUdKSFlrVmlUbWRhWTFsbmJtSktaWGRqWTJkRloyaGhSR1pUYUZaaWNHRXhaMlZrUldGMFlqTmlaV2R0WVd4b1dHUlZaRlZsVW1GU1kwbGlWbVJvWTB4a1JXSkdZVUZvUVdObWFGVmhaR0YxWjA5bVZXVmtaMjlrUm1OVlltaGxVV1pTWkhoblFtSnRabU5sYkdWWlkxWmhZV1p1WmtwblVtUmtaekZrWkdkTFowWm9iV1pzWW1oaVFXSkJaVEZqZW1OQ1l6Tm9UbWR0YUZwaE0yUkNZbVJsV21GM2FEUmlVR1ZXYUVWbE5XRmlZMHhvVkdGV1pEWm5ZbUpIWjA1aFVtZGtZbXRrZEdoaVoxZG9lR05CWlRSbVZHaElZelJtYVdWSFpXZGxkR0pIWldSbloySnNaMVJoVjJkM1pHaG5SR1JTWWpOaGVHWjVZV1ZsUjJoR1pHVmpVV1V3WmxKa1lXWkphRmhpUm1oRFoyWmhibWRPWkd4bFptUldabXRvVVdGSFpsZG1aMmhNWTFKbVYyTTRZMUprUldZeVp6bGhTR1JqWjNobVRtVklZbUZqUW1GV1kwbGhWV2hGWmpsalJXaE1aMnBvYzJoR1pVZGllR2hWWVhwaFVXZEhZMFprV0dOV1puaG9XbUpvWms1aFZtSTFZVkpoVG1KU1lXOWlXbVJLWXpObVJtWm5ZMVpsV0dWT1lVZGhVbUl3YUd0bFZXUldaRlpsVW1Zd2FHWmhWMlU1WmpKaFdHUnVaamxoUTJWQllUTmhaMlpSWVZwaFJXZDRaekpvWkdac1kwcGxRMlJHWVZobWFHRXlZMFZsYTJaelkxbG5VV2N4Wkd4b2FXaGpZbTVtUW1VMFpraGlRV2h6WkVGbFEySllabk5vU0dKRGFHMWhaR0Z4YUdGalZXaHdaMXBuUVdGQ1prSmxhR0pKWlZWalZtRjJZVVZsVW1WT1puWmhVbUl6WlUxaFZHTlNhREptWjJKV1oxTmhSbVJDWTBoaFJXSkhaMXBvYjJkV1lXaG5NV1JwWmtwaWFHVnJZU3RpUW1ORllsSm5jR1ZMWkVoa1ZXaFBZMGRuU0dGemFGVm1ZbVpxWmtsbWNHVlBZVkZsV21Sb1owcGhVV1paWlVwaVFtaFdaMVpuVDJKaGFFZGljMkoxWVdGbmEyTXdZakprVTJaM1kyTmlSMlpYWlVOb01HaG1aMlZoUVdacllWUmxWV2RSWVdSbE5HUmhZVUZtZUdOTVprVmhSbVZLWkZCb1dXUnVaemxvZDJGS1lVVmxSbVpMWlZGaFJtUmFhR1ppWldWRllYUmlNMk5sWVcxbGJHVllhRmRqVW1WQlkxcGhZV1ZCYUhSblJtRmlhSGhtUldoVVkySmhNR0prWVhwalIyWjRaRTFpWjJSWVowSmtkR0psWms5b1JtZEdZakZsV1dSR1psbGtTV2hSYUVoblNtUlNabVJrTVdGa1lrdGtSbVJ0WVd4aWFHZEdhR2hpYUdOdFowWm9SMlphYUcxaVdXaFlZMEpqVm1OaVpURm1jR05JYUVOaGQyZG9aMEZoVVdOWFpVWmpjbUZtWTBkaVRtSkdaRmxsYUdRNVlVaGhSMlF3WjA1bmNXZE5aSHBrWkdGc1psRmhSV0ZKWVVwaldtVklaRnBrUjJaUlltaGlaMkZtWkZkaFYyUnZaMjFvVDJWRVkydG9ZbU5VWjFSa1dXZGlaVnBpUjJRMVoweGpZV1ZYWmxKb2NHWllZekJuWjJkSFprZGpWMkpWYUV4b1JXWlhaMWxsV1dGSFltMW5XbVpNWWxkbVVtSk9aa2hoWVdKQ1pGWmpTV0ZWWjBWa1kyWlJaVnBoYm1oS1lWZGlSbWRYWm5CbWVXZFZhRmhsWkdoWVpWTmlhR1UwWlRsalMyTldaemxtVEdaaFkwZGljMmR1WjJSaU0yRmtZM2RrVTJORlpsWmxZV1ZTWTNoak1HZGtZMVprVm1GS1p6Qm5ZV0l6WW5Ca2FtZFVZVmRsY0dGTVpFUm5NV1ZKWkZGbVdtVkZhSGhpTW1Ka1pXdGxVbVZZWTBGalIyWjBZV3BvUldacll6QmxXV1JUWlRGblJXY3laVTlsYW1KclptcG9VbUpxYUhkaVNXSlRaakpuVG1jMFpWWmlNbU4wWnpaalVHSldZalZoV21oVVprSmhiR2RuWmxoamQyUXdabTFoVVdob1pEQmpVV1JDYUcxaVRXaEVZbEpoTTJoWmFFeG1VMkpHWjJobVYySkNaVzFoV21FdlpGWm9hMkpHWm1waVpXRXhZMmhrSzJKWFlqSmxRV0ZYWTJGbVYyVkZabGRuUjJSSFoxbG9WV0ZhWW0xaldtVm9ZbU5rUm1aV1luWm9WMk5yWldOaFpHVklZMVpoVm1aaFkwbGxRMkZOWm5walRXTkZaMDFsVm1aRGFHaGtPV0ZEWmtWbFNHRnNaazFoWm1OcFlVbG1ZV1pEWVRCaFdtSXlaME5oVm1WT2FHSmhRMlJGWTA1a1JtaG1ZVzVrU1dKclptVm9WV1JvWWtab1UyaFZhSGhrWjJSaVoxWm1hR2RwWW1Ob01tWkNaMkptWTJGNFpVRm1XbUZoWlVGbGRHaEdabUpuZUdWRloxUmpZbWN3Wm1SbmVtZEZhREJtWkdKdlkxSmtNR0puWTAxbFIyVjRZMEpqZFdkS2FHaGlOV1pqWVU5bldHTjNablZtVG1aclpFNWlVMmRHWTIxak9XSTRhRVprWjJnMVkzcG1RV1ZZWWxab2VtSmhZMGhtZUdZdmFHSmpNV1J3WkVoblNHSlNaakZvVm1KVlltNW5VbWR5WW1Wb2JXZE9ZVTVoWVdOclpYUmhZbVJIWm14bGEyZ3pabHBtYm1aYVl6Sm5WV1ZyWlVsalZtZGxaVWhsV1doVFkxTm5lR0pvWkVSalYyZFhZM1JuY0dGWFpHNW5RbWhKWlZGaE1HVnNaV0ZtWkdGWVlXaGxUR1JrWWpObGIyUXdhRmhvYkdoVll6WmxSMkZYWW1kbVRHZFNabGRuT0dGU1lVVmxNbWM1WTBoa1kyZDRaSE5sVUdSYWFHdGxWV1ZoWTBob2VHaE9abVppVFdWcFluTm1SMkpWWjBka1VXaG5aRWhrYVdOTlpGZG9TR2RzWkUxa1JtRktaVVppUW1KTloxcGtaMmRzWW0xaVRHSnRZamhrWjJKQ1pubGpRV2RQWTBObVJXRnNaRVZsUW1aU1ptUmlObWRQWjFSblZXY3paMEZvVjJKd1kxZGxSR2Q0WVZKaFJtVkxZV2RsT0dacFlsQm9lR1V3WTAxb1JtVllZa0ZuYVdaSFpEQmpkR2RFWldGbFZtRnNZMmxoWTJOdVowSmpkMlZUWlVWblRtVkthRmRoYm1oV1pqUm5VMmQ2WlRSbE9HWmhaVlprT1dKU1pVZG5SV1l4Wkc5a1JHSnNaR2hsZG1aQ2FIZGhaR1p0WWxOb00yZE5ZVVJpVW1jemFGVm1TV0pUWmtGbVVtRlBaMGRpVjJaWlptZGhSV1l3WjBWbEwyTkpaVUpvT1dFelkwRm5kMmRLWjJabFQyTnVZMjlqT0daSFpFZG1XV2RWWWxwaWJXSmFhR2htWTJWR1oxWmhkbVJYWTJ0aVkyWmtZMVprUW1ST1kxTm1abVJFWkRsbk5tTm1abFpuUW1oeFpWZGpRbUV4WldKa1JXTkVhRGxuYldka2FHNW1XbVJUWjFGb2FHWldhRFJvWkdOb1prcGtUR1pIWTBWbVRtSmFaVmxvYm1WSlptMWlUV05TWlhCblJHaEhaakZvY0dodlkyVmhRbU00Wmk5bFRXTjZaSEJtV21GS1oyeGhSV1pLWkdWbVFtaENZblppWW1WNFkwVm1WR0ppWnpCaVpHVjZhRVZuTUdKa1ltOWtSbVZWWVdob1VXTlNabmhuUVdoMllrNWhSbWhaWldSalVXTklaRXBvVW1Oa1pERmhaR1pMWTBaa2JXaHNaV2hrUm1Wb1ptaGpiV2RHWlVkbldtTnRaVmxqV0dGQ1ltUmxXbWQzWWpSbFVHZFdaMFZrTldOaVlreGtWR2RXWWpkaVlXRnRhRTVpVVdWaFpXaGhPV0ZJWTBkbU1HZE9ZbkZpVFdKNlpXUmtiR2hSYUVWaGMyZGFZMVZqYm1SWllsTm1VMlI0WW1obFJHVlhZbGRsU21GNVlXTmlTR1pDWmtsaVVXTXdhR3hvWVdOa1oxaGhhR0ZFWWtsbmVtZEpaV2RoUW1SR1ptUmlkbWRYWVVoaGMyUmFabEptV0doSlpGSmhVV1JYWVZwb1RHUlhZMUpqVG1aSVpXRm9RbWRXWjBsbFZXRkZZV05vVVdGYVoyNWlTbU5YWkVablYySndhSGxrVldGWVoyUmpabUZIWjBKbldtRXdhRmxoVldkS1oxRmpUR1F3YUdSamIyaEhhRk5rUW1kcllWUm5WMkZhYUZka1ltRlNZVEJpWkdoV1lWWm1TbVF3WjJGa00yVndaMnBoVkdGWGFIQmtUR1ZFYURGalNXTlJZbHBoUldGNGFDdG5TV1ZvWVc5bFRHWlNhRzVoV1dKS1psVm1NV0k0WkVGalVXY3daRkpuYVdSS1oycGlaMk0xWlVkaU1HRXdZekptUjJZeVkxSmtkV0pSWjI1bWRHUlJaMkZqVm1ka2FGcGpSV0ZDWkd4bWIyZERZekJqVm1KMllrVmxVbVZPYUhaalVtRXphRTFsVkdoU2FESmxRbUZDWTBGb1FtZHJabFZpU0dab1ltdGtlbUZTWTNkalRtaHhZbUpvTVdaRlpteG1XR0pyYUZsak9HRmhhRmRtUldWWFprZGhSMkZaYUZWa1dtRnRZVnBpYUdkalowWmpWbWQyWkZkbGEyVmpZMlJuU0dOVlpscG5RV2hrWTBobVdtaHVhRmxsZUdoc1ltcG9XV2RSWkRsaFUyaEZaa2RrVW1KTllXUmtibVJhWmxOalVXaG9hRlppTkdGa2FHaGhTbWRNWjBWaVYyUnNaRnBsV1dodVkwcG9kMk5qWVVWaWFHVkVZMU5oVm1Kd1lURmtaV1ZGWm5SaE0yUmxZVzFsYkdoWVkwTmpNV1ZXWms1bVVHaFdaMnRoVEdKaVp6QmtWbVppWlVwb2FHVlNZbTluVDJGVlltUm1iMkpHWVZWaWFHZFJhRkpqZUdGQ1kyMWhZMmhzWVZsb1ZtZGhZMjVuU21WU1owbGxNV1ZrYUVoblEyVXlZV3huZVdSQ1lVRmtUbUZOWlVablIyWmFaVzFuV1dSWVowSmtWbWRpWmpGb2NHUklaRWhvVW1neFkxWm5SR2N4WmpWaGNtaGxZbTFrVG1KT1pHRmthMk56WmxCaVZXVm9Za0pqYTJKVVpVaGpXV2huWWtWbmVHaEJabFpoVFdOWVpWbG9VR1ZUYUhoaFFXSllaa1ZqVTJGemFHaG9abUpuWkRob1NtUldaakZqUm1oaFptRmpWMk5TWWt4bVdtSnRZbmhtWjJoV1pIZGhWV1pSWmxSbFUySkNaa05pUm1WdFlVWmtkV1ZWWTI1a2VHVldZMlprZW1ac1pFaG5ZV0pDYUZaaFNXVlZZa1ZuWTJKUllscGhibVJLWlZkalJtWlhZbkJsZVdSVloxUm9TbVJZWlZabmVHRmFaR2htVG1SV1pUVmhVbVZPWjFKa2IyWmFZMHBrTTJOQ1oyMW5WbWRZWms1aVIyWlNhSGRpZDJWTVoxaG9SbVJKYUc5aVlXUjVaelJqY21OQ1pVUm1iR0pHWkdOa1FtSk5aVUZuWkdKRlowSmhZMmRrWjJ4alNtaERZa1ppV0dab1pESm1SV0ZyWTNObVdXVlJZekZsYkdkcFltTmxibUpCWmk5b1UyaEdaVFZsU21GVlkycG5lR1kwWmxaak1taDBaalppVUdaV1lqVm5XbVZVWWtKa2JHSm5hRlJrYTJaV1lYaG1SR2gzWVRGbWRtUlVZekpuUVdWQ1pWSm5NbWhWWTFablNHVkdaV3hsVDJaSVkwVmxlR0Y1WTFaa2FHTldZWEZoWTJac1pFWm5NMmhXWlRCaWIyVlhZMkZsVjJaRlpGZG5SMkpEWmpSalZXaGxaVEptV21kd1lVNW1WbU5XYUhwa1VtUnJaMlJtU21aR1pVWmxWV1pQWm1Sb1IyRk5hSHBrV1djeFlVNW9NR05XWVZGa09XaGhZMEZvTTJSYVlrMWlaV016Wmxsa1IyVlRaSGhvZUdkcVlsaGxRbWRLWkV4aFIyUkZZMDVrV21GWlpXNWpTbUozWjJOaVJXaG9aMFJrVTJOUloyZG1kMlZNWkVKak5HUnNhRTVpUjJGc1pHWmpZMmg0WkVGbldtSmhZMEZsZEdWR1ptSmplR0ZGWjFSalltSXdaV1JoZW1aRllqQmxaR1Z2WVVob1VtSjNZbGxpUkdOclprNWpiMlZFWkZKblkyWkdhR1ZoYm1KS1pVMWlaR1l3WWtab1ptZEJZak5oY0dFd1prWmxhR1ExWlcxaVdHTkhaVGxvY1dKVFpqTmhRbVZXWVdKbE1XUndaVWhtU0dKU1pURmlWbUZWWlc1a1VtUnlhR1ZtYldST1lVNWpXV2hvWWpsblNHaEhaREJpVG1keFlrMWtlbVZrWW01b1VtWkZaa2xsU1dSbFpFUmpOR1pUWlZablVXUmFaV1JpVjJaWVkwNWlhMmhsWWxoa2VHTnBhRkZrTUdac1pXRmpaR1ZZWjJoblRHSmtaVE5oY0dKd1oxWm9NV2RyYUZGblIyRlhabWRsUkdaRlpsTmtaR1JaWTFGblIyWkZhRFJoVFdablpVSmpWbU5oWjBGamFHZEpabEpoYkdKSllVWmxaR2hYWVdSaVYyaEZZakpuYjJVNVpsZGxTR0owWXpsalUySm9hRnBsY0doWlpGSm9XV1ZaWlZwa2FHVlNaVzFoV21WdFowWmxkMkpXWVZkaU9XWlRZMFZrTVdoV1lWVm5RbWhzWkhkalRHTkxZbTFqTldJM1lWUm5XR1JrWVV4blVXVkdZa2xvVDJobFpHeG9TbWd5WWxwb01HWlNaRXhpUjJoV1kwcG9NbVpGWjJ0aWMyUlpZVkZrTVdKc1lXbGpZMk51YUVKbmQyZFRaa1ZsVG1OS1kxZGlhV0pGWW5kaVFXUnBaMUppVVdOaGFGWmpaR2hhWjBWa1FtZHNabTlpUTJjd1lWWm5kbUZGYUZKalRtaDJZbFJuYldOblpqVm1VbVl5WkdkbVZtWlRaa1puUW1GSVkwVm1SMmhhWkhsaVZtaHJZMmhoYW1WbVkyNWlkR016WWxabk1HSnZZbGRoWVdSWFprVm5WMmhIWWtkaldXTlZZMkpqYVdJMVpIWmpTV1JCYUdObVoyRkVZMmRtYUdKS1psSmpRV1ZWWWxoaVpXSnFZV3RvTVdGT1ozZGpkMmNyWlVSa2JtTXdaMkppVm1ONVluZG1XV1prWTIxbWRHRlRaVU5tYUdoelkyOWtTbUpHWnpCalptaFdZWGhpWTJaQllVMWthbVprWlN0bFNXUm5ZV05rV0dkSFpERmljR1p2YUdWbFFXTXdaV2xqVG1GRFlXOWpSR2hGWjBaak9XZFlaMkZtUVdkTmFGSm5XbVJvWkVabFNXRlNaRlZuWkdONllrVmxNR2RrWkc5bVJtWlZaR2hrVVdkU2FIaGlRbVZ0WVdOb2FHUTVaMVJsWVdkdWFIQmlXbWhtWW5kaFRtRkxaMFZvTTJSU1pXaGlRV1JCYUhoa2RtTkhhRWRoV21VeVpsbGxWMk14WmtsaFltTjNaVFZtVDJoR1lVSm5NR2hJWkVaaWVXaEJaU3RvUzJoRFp6RmtUbUpRWm1kalRtWkhhRUZtVVdkMGFFOWlWR2hJWVZwak1tZFZaR3RrU1daV1pHVmhTR05aWkZObVUyUjRZV2hrUkdaRlpVTmlVbVo1Wm1WbVEySlNaVWxuV0daV1lsSmhZV2hhYUcxaWNHWkRaMlJpZVdaR1kwUmtWbVl4Wkd0alVXUkhZbGRuWjJoTVlsSm5WMlE0WlZKalJXZ3laamxqU0dOalpYaGpUV1ZTYUV0blZXSmtaVWxvUVdOclpXTmlUbVZhWW1sbVdXWmxaVmhqUkdOc1lqaGxUR0ZxWlZwb1NHUlhZV2RpTVdKRVlWbG5VbWRaWkZsbFdtUm9aVkprYldGYWFHMWxSbUozWkZaalYyWTVZbUZvVW1SNFl6Rm9WV1pGWWpGblNtRTRZVkZpV0dod1oycGpWR05YWlhCbFRHVkVZakZvU1dkUlpWcGpSV1o0YURKbFpHTnNaVXBrUTJkR1psaGphR0VyWWtkamFHUTVaMUZrUTJkbmFIQmhjMk5FWWxSaVJtWm5ZbGRoUldKT1kxVmpWMlJwWVVWb2QySkJabWxpVW1nd1pVWmxhR0ZhWjB0aFFXVm9aa0psYTJkSloxVmtWbVYyWmtWblVtSk9ZblpuVW1FelpVMWpWR2RTWnpKbloyUldaVk5pUm1KQ1kwaG1SV2RIWjFwak5tZEJhR3hpTUdocVlrbGpWbUk0WkVsb1JtUnNZMnRrUldoaGFGaG1kMlJYWlZOaGJXWTRabGxpVkdoSGFGcGxhR05qWjBab1ZtUjJhRmRoYTJOamFHUmxTR05XWVZaalUyZGtaa2RtZEdNMllWbG1NR0V4WVdsaVIyZFJaRGxpVUdGRmFFUm9RV05GWTFCaGVXZFdabU5qVUdoV1pGSmhjMmRpWjJoa2RHZElaMDFsYTJST1pWcGhXV1J1WWtwbGQyZGpZVVZrYUdoRVoxTmhWbVZ3WlRGb1pXZEZaSFJrTTJGbFpXMWpiR0ptWWtSa1ZtWm9aRkZvVDJaM1pGVm1ObU5NWm1kbFZXUk1aV0ptTVdkd1lucGtVbVozWVRoaWFHZFNaV3RrV1doMlowSm1aMk5HWTNkbVpXSXhaRzlvTDJKaFpHNWlTbWhTWW1SbE1XUmtaVXRtUm1KdFlXeGphR1JHYUdobGFHSnRaa1ptUjJGYVptMWtXV1pZYUdkb1FtSkthSGhtVFdoVlowVm1NbVJKWjFWb1VXRXlhRXBqY21KYVp6Sm9UV2htWWxsb01HWmphR3hpVldWb1kwSm9hMk5VWlVoa1dtY3labFZpYTJOSlpsWm9aV2hJWTFsb1UyaFRaM2hrYUdaRVoxZGpXR0pHWTJkb1kyRkhaakZoVm1aUllYaGlNV0pVWVZoaU0ySm9aMHhoWkdFelpuQmhjR1pXWXpGaGEyTlJaMGRrVjJSbllreGpVbUZYWXpoa1VtSkhaR3RpVm1oSWFHTm5lR1JPWWtoaVlXaENhRlpoU1daVmFFVm5ZMkZSWVZwamJtSktaVmRuUm1aWFpuQm1lV0ZCWjNwaFNXVkVaRWhoTUdoUlltNW5XV1ZWWmtwaVVXVk1aREJuWkdRNWFGUmpSMlZHWjNkaFZtVlhhRGxtWVdWU1pYaGpNR1ZrWTFabFZtVkthREJsWVdRemFIQmxhbUpIYUZkaWNHZEhaVVZoYkdWSlprUmpaR2hzWVdSalkyRmtZbXhsU21SRGFFWmlXR1ZvWmpKbFJXWnJaM05tV1doUllqRmxiR0pwWjB4ak1XTndZM2RpVTJGRllVNWxTbWRYWkc1bFZtUTBaRk5tTTJWa1pEWmlZV0ZXWkdOa1VHWlZaMVZoZEdodlpsRm5hMmRXWVhsalJXaFNhSE5tTjJSRWFIcGpjR0ZCWWxObFVtSmtabFZsV0daRllXaGlTR2RFWVVoamNHaDVZMUptZDJGT1oycGhZMk5uWnpGaE0yRkJhSGRuU21ObVpFOWtiV0k1WW5Cb1YyUllZbFZuUjJSaFkydGplR1ZvWm1OblJtZFdhSFppVjJSclptTmpaR1JJWmxabFZtWlRaMlJoUjJWMFlqWmtXV1ozWVdob2NXRldZV2RpT1dWaFpsSm9RMmgzYUVaalNtRllZMmRrZEdSQlkzZGhVbWgxWW1SbloyYzFabGhsUjJWR1pVcGpVR1poWlROa1NXSnpaMk5pUW1GM1lreGtRV0pCWW14bU4yZENZWGRoY0dKdVkyRm1iV2hXWnpsaVYyTlNZMEZrV21oaFlrRmpkR1JHWjJKamVHRkZaRlJvWW1Vd1ltUmhlbWRGWmpCblkyWnVaa1pvVm1OV1lWRm5WR0l4Wld4a2JXTmlZVVZvWjJKTVpXRm1hV05hYUZsbFpHaDNhSFJpUzJSSVlXbGplR0ZvWVVObloyVlNaMjFvU0doSVlsWmhNR1JaWTFoak1XTldZMDlqTVdWT1pVOWtSV0ZVWjJSaFZtWlZZbTVqVW1GeVoyVm5iV1JPYUU1aVlXTnJaSE5uVUdkVlkyaG1RbU5yWlZSbVJHUTFhREprVkdRd1prbGtaR05RWlZoaVdXaE5ZVlpvVVdkYVprUm5SR0ZYWTNSaGVXUk1hRWhtUW1OQlpVTm1hMmhzYUVkallXVllZbWhtUkdaYVpFZGxhR1Z3YUZkbmJHRnNaMFZqUldSSFpFVmlVV1ZpWkRKa09HUlNaa1ZqTW1NNVpFaGhZMlY0WVU1alNHUmhZa0puVm1kSlpsVmlRbVZXWjFab1RXRnBaV05qUldOWGFESmtjR1kyWm1Wbk0yWmtZVmhqVTJGb1pWcGxjR0ZaYUZKaVdXUlpaMXBtYUdoU1pXMWtXbU50WjBaaWQyTllabFJsYzJSVFprUm5hMlkwWlZSb1MyRm9ZMDVtYTJKbFlUTmhjR0VyWVZSaVdHVjRaMlZuUjJaclowVmxSbUphWVVWaGNHWXlaRkJrYkdOMFprOWlVR016WldobE1tUkZZV3RsYzJKWlpsRm9NV1ZzYUdsa1kyVnVZa0prZDJkVFpVVmtUbVpLWjFWbmFXVkZaSGRuUVdOcFkxSm1NR1pHWkdobVdtSkpaMEptYUdWc1lURmpRMmgzWnpGa2RtVkVhSGRvTVdoNFpWSmpNbU5KWWtaa1ZHWnRZMUZvTDJaVFlrWmlRbU5JWmtWalIyVmFabmxrVm1ab1kxWmxjV1ZqYUd4aVJtTXphRlpsTUdodlpHVm1VR0ZUWld4aVptVlRaakpuYUdOeVprcG1NMlZXWkhwbFkyZEZaR2hoZG1SVVkwWm9TV1ZKWjBSbGEyUkNZVk5pWTJGdFpYTmhNV0poWW10aFJtTkJaRk5qZDJZNVpGTmhSV1JIWjFKaFRXZGtZbTVsV21GVGFGRm1hR2hXWnpSbFpHTm9Za3BvUkdKVVprRmpjMmhSWTAxbVdHZDNZVkJuVFdOV1puaGlZbWhUWWxWbFpHY3hZMDVqTUdOMFpYQmpXbVJJWkdSaFdHUlRaMEZtV1dOUlpWcGxRMlpHWmtab1ltSjRZa1ZqVkdGaVpqQm5aR2Q2WVVWaU1HaGtZbTlqUm1KVmFHaGlVV0ZTWWpCaVVXTjFaRTloZDJkVlpDOWpZV0Z1WkVwa1VtTmtaakZqWkdoTFlrWm1iV2hzWW1oalJtRm9abWhuYldGSWFGaGtNV1JOWTFsaldHSkNabFpsWW1FeFluQmpTR1pJWWxKa01XRldhRlZrYVdGc1oybG1aR1JyWjJ4blRtTmhZV3RrYzJOUVkxVm1hR0pDWkd0alZHSklaMXBtTW1oWFpXZG9iMkZpWVV0blEyaFNaR1JuU0dVeFpXTmxXR2RCWTBSbVNXTXphR1poYW1kTlpVVmpSR2RCWm1OalptZGthRmRsVm1GTVlVMWtVMlE0WTI1bFJtWkJhREZoV21kV1pXbGtXV1JNWWxSbVYyTlpabEpsVTJkRlpWWm1TR0ZqWTNobFRtSklaMkZrUW1SV1kwbG5WV1JGWldOblVXZGFaMjVoU1daRlpWVm5SR1UwWm01blFXTjZhR3hvV0doQ1pFWm5UV1lyWWxsbFZtZzBaRkZpVFdGc1lYZG9kbU5PYUZkbk9HaFFZa1pqU0dZNVpFdGhVMmQ0YURGbVNtTklaMUppYzJodWFGcG9VV2RWWVdsbldHSklZWGhuU0dORVpIZGxXbUpaYUV4bVVtTTVaRFJsUTJkU1prNWtVbWRDWVRObFVtWXlaRkppWjJKT1lWSmpSV2RHWTJOaFpHRk5aekpqVW1WdmFGRm5WbVJvWTJwbVYyUnVZbFprTkdOVGFETm1aR0kyWVdGaFZtaGtabHBvUldWRllsSm9hR2hDWXpKaE9XZDJhRVZrVW1OT1luWmhVbVV6WkUxaFZHVlNZVEpvWjJSV1oxRmhRbUpzWkVoaFJHUlhhRmxuU21STGFIaGllR2h0WkZka1JtWkdZak5pVm1Rd1pHOW1WMkZoWkZkaFJXTlhaa2RsUjJOWmFHTmtTV0l5WVZwaU9HUmpZVUptVFdFMlpFWmtRV2RTWVVwalZtaENZbTltWTJWa1pFZGxUbVI2WVZsa2VHRmFaa0ZvVTJSM1lUbGxVMlpGWjBkalVtUk5hR1JtYm1KYVpsTmpVV0ZvWkZaaE5HWktaVVprWTJabWFGUm5VbUpGWTFobldXaHFZWEJoY21kWFptdGthR05FWjFOa1ZtWndZekZuWldWRlpIUmhNMlJsWlcxbWEyaExaRlpoTVdaR2FFcG1UMlJGWm1OblkyaGFaREJvVFdkbVkySmxkMmcxWmpabFIyaHJhSFJoUTJoR1lWVmlhR0pSWlZKaWVHVkNabTFoWTJkc1kxbG5WbVZoYUc1b1RtUmFaVWxsVW1WbmFFUmxWV2R0WVd4bGVHTkdhR2huYkdVM1kwTm1WMk5aWjJwaFdXWllabHBvVkdaaVl6RmtTV05VWlVWaE1XRm5ZVTVpUVdOcVkzTmlOV1pNYUdwa1FtTk9ZMlJpTUdGMFprdG9WMkY0Wm14bEwySmFZMjVsV21JeVpWVmhhMlZKWVZaaVpXRkRZM05uWW1oUlpEQmxkMkZNWVVWb1JHaEdaRGRsWVdZeFpIQmtTV1pSWVRCamJHUmhaa3RtU0dkU2FHaGtaR1F6WVhCbGNHSldZM2hoT1dSR1kxWm9lV2gwYUdaaVJHZERZMEpvWm1ORll6Sm5ZMlZVWVdaaGVHaE5ZbFppV21SQ1kxVmlRbUZYWlZWbFpHRk1aMVJrU0dWS1lsZGpSbWhYWlhCaGVXaFZZVmhuT0dOU1lraGpNV1ZuWW5Gb1RtZFdaamxrV0dOTFprSm1VbU4xWVU1blIyWm9abmRpUkdOcllsWm1ZV05TWTNoaU1HaGtaMVpqVm1kS1lqQm5ZV2g2WTNkbk1tWkJZM2xpYTJKbVlsSm5hR014WVdWbVdtSkJZV3hpSzJKSloyeGtkR1JEYUZSb2JHVktaakpsUldaclpITmlXV0ZSYURGbmJHRnBZV05sYm1OQ1puZGhSR2huWjNkb1ltWlhaRzVsTUdSMVlVTmhhV1JXWnpabVQyY3hZbVJoUldkRmFFZGpTV0ZXWWtKbE1HaFZZMjFtUldkUll6VmlkbUZXWmpOa09HRlVZa0ZoYldObllrbGlVMk5CWmxKblNtaFlaRU5vVFdVNFlVVm1WV1JGWTJsa1lXSldZVVZuZVdKV1lURm9VV2hYWlVsbFNHRnZZMWRtVldOWGFEQm9abVZpWlRKbVdXVTJZVmRrYkdkV1ozWmxWMkZyWkdOalpHRklZbFpqVm1SVFpHUmhSMlIwWXpaa1dXRjRhSE5pY21KSFpGRm1PR2RrWlVWaVNHSnNaazFtU1dOdWFHZG9VbUZEWld4a1VXVnhhRVprVm1Vd2FGQm5XR05UWTBsblRtWmhaR3BrZEdnMVlXRmxNbUpLWjBSa1UyVldZM0JvTVdabFprVm1kR1F6WkdWb2JXUnNZMWhtVjJOU1kwRmlTV1psWjJobFRtaEdaMk5sVW1SR2FHTm1VbWRWYUdSamVtTkZZakJrWkdSdlkwWmlWV0pvWjFGalVtZDRaVUptYldWamFHeG1XV2hXWkdSaFdHSkpaRVJvWldWUlpXTmhabWRTWjFOaFJtTndaRmRvVW1KR1pFMWlSbU5IWlZwamJXTlpaMWhpUW1GV1ltSm1NV0p3WVVobVNHWlNaREZrVm1oVlpHNWpVbVY0WTJWbGJtUkdaV1JtWm1Oc1pVMWlVR1ZVWVVKbVFXaHlhRnBrYm1KYVp6SmhWV1pyWWtsa1ZtRmxaa2hqV1dOVFoxTm5lR1pvWTBSbVYySlhZa3BoZVdSaWFETmxRV2RoYUZSblVtRnJaMUJrU21kcVowSmlSR2RhWW0xaVRtYzNaVlpoZDJGVlpGRmhSV05UWVdObVRHVlhaRE5uUldaU1pVSmtWMmhhYUV4bFkyTjNZa3BqVm1WalpVSm5WV2RWWWxWb1JXYzRhRWRpWkdSWVkwcGtVV1ZHWkZOaVZtSTNaVmRvUm1VeFpGaGxVMmRvWWxwaGNHWlpZbEpoV1doWlpGcG5hR2hTWjIxaFdtZHRaMFppZDJoV1kxaG9WbVpoWlZWaloyRm5hRkJuVkdSRllWSm5NR0prWTFobWIyTnphRlJsVkdWWloxaGhSR2Q0WnpCaFVXVmxhR3hsUm1VeVoxbG1NR2hXWkZKblFXZFhabmhpWTJWRmFHdGtjMlZaWVZGbE1XWnNZbWxqWTJGdVprSm9kMlZUWkVWb1RtUktaRmRtYm1aV1pHNWpVMlI1WjFabE1HVlBabEZrU1doTFkxZGpRbWhHWmpabVIySldZVVprZG1KVVoxSmhUbUp1WjBOblNHUk5hRTVoVjJSWFlXZG9SV1JYWTJ4a2JHaE1ZMFZpU0dSa1lXZGtWR0pvWmxWaU1tUmpZMnhrYkdVdllrZG9SV1Z2WWtsb1pHUXlaRVZpUVdkRmFGZGtXV05UWmxwbWJtSkNhSGxpWldSV1lteGlkbVZUWkRGaFZXWkdaa2hrVVdWc1pWTmxabWRJWWpGbmNHSlpaREJpZEdKeFpVSm9RV0ZhWjJKbFQyaHRabEpoVFdKa1ltNWlXbUpUWVZGb2FHaFdhRFJvWkdkb1lVcGtUR2hIWWtWalRtRmFaR1ZvU0doS1lUUmhUMlpWWTA1alNXUlNaRmhpUW1NeGFHVmtSV0owWXpOaFpXSnRZV3htV0daWFpGSmhRV0ZhWldGa1FXSjBaRVprWW1oNFowVm9WR1ZhWm5kbmFHSjZZMFJtYTJWa1pDdG9RV05HWmpGb1JHaFZZbEppUW1GMFkyTmliR00wWm1Sb1dXaHRaazVvUW1aYVpsVmtVbU5MWkVWb1IyWnJaWFZuU0daNFoyaG5ObVpEYUVkb1dtZ3paMk5oV0dkc1lWWmxUV1l4WjNCblVHUkVaVUZvTVdkSVlsRmlXR2RTWVhSaFpXVnFZMlJuUkdkTGFGRm1UbUZQWmtGbFNHRk5ZbkpsUTJKRVpFMWpXR0pDWjJ0bWNHUmpZV05tV0dZNFlXSmtVV05vWWxKbWNHTlhZbGRvU21oNVlXTm9TR0ZDWmtsaVVXY3dZV3hqWVdka1lWaGphR05NYUdSa00yWndabkJoVm1SM1pITmxaV0ZUYUZSbE1XTlpZVVJtVjJSallqZGxSV0V5WkRsaVNHZGpaWGhuVG1aSWFHRmhRbWRXWVVsb1ZXWkZhR05pVVdSYVoyNWxTbU5YWjBaaFYySndaWGxpVVdjeVpFNW9TR0pUWld0b2NHUndZbUZtVm1GcllWbGlaV1JCWVhCa2JXSmtaVE5pYkdFMVkxZG1WV0pXYUdGbVVtTjRaVEJqWkdoV1pGWm1TbUV3WTJGb00yRndaV3BpVkdWWFozQmtUR05FWXpGbVNXTlJZMXBvUldWNFlXNWtXbUpGWlhCbVEyUlRaMWhuYUdFclpFZG5aMkpSWmxsbldHWlZhR1JpYVdWWmFESmpTbU0xWVZOa1JXWldhRXBrVkdSSFpscGllR2RTYURGaU1XSTJhR0ZvVm1aa1oxcGxSV1pDWjJ4bWIySkRZVEJpVm1aMllVVmhVbUZPWW5aa1VtWXpZazFrVkdaU1lUSmtaMk5GWkZka2EyaG9aa2htVkdaSFpGcGlObUZZWld4amNHVnhhR0prUldVNVp6Tm5VV1ZWWmsxbVYySmlaakpuUldWQlkwTmlNbUk0WWxsb1ZHSkhhRnBqYUdWamFFWm5WbVIyYUZkbGEyUmphR1JpU0doV1lsWm9VMkprWjBkbGRHWTJZbGxvTUdFeFpYRmxVMmQ0WmpWb1FXSkRZMGRtVVdGUloyUm1ibUkxWkVWblZXZFNZVlptSzJWa1lteG5NV05EWVUxa2EyVk9aMXBrV1dSdWFFcG1kMk5qWVVWaWFHVkVZMU5rVm1Gd1lqRmxaV2RGWkhSbU0yRmxhRzFrYkdObFlsVm5RV0p6WlhwbVlXUkJhSFJpUm1aaVluaG9SV0ZVWW1KaE1HaGtZbnBoUldaNFpIQmhRMkZHWWxWaGFHUlJaVkpvZUdGQ1pHMW1ZMlJzWkZsblZtZGhabWxoUVdkVlprbGtkMlpKWTFsbVYyTkhaR3RpZG1GVllqQmlPV0Z0WjFsbVUyVTRZMjlvVG1oWFpHZG5NR2RRWjFGaVoyaEhZVkpvUW1KVmFFaG5WMmd5Wmpsb1FtSmxZVzFrVG1aT1pXRmxhMmh6WjFCa1ZXWm9Za0ZsTldWYVoyNWhXbUV5WkZWb2EyTkphRlpvWldGSWFGbGhVMmRFWmxWb01HVk9aRWRqYW1OWlpEZGpVR0Y2WmpWb1NXVkVaMFZoUm1oVVpXUm1VMlZPWW1oa1pHTXpZM0JpY0daV1pERmthMmRSWmtkbVYySm5aa3hsVW1GVVpURm5WV1ZTWTNwa2IyVldZMUJtVW1ST1psWmhZV1JCWjJob1ZtTlZaa0ZuV21KRGFFbGhVMkZqWW1KbFZXaERZbEZvYldOQlptNW1hMlJpWkVSak1XSm5ZblZoVG1OV1pUUmtlV0phWTJoaVVtUnRaRnBvYldaR1lYZGpWbVpYWXpsbVlXZFNZbmhqTUdGa1psTm5iR2RKWmpablRHZHBaakZsYW1aQlpHMW1TV1JMWmxobFVtTldaRVpqUzJGUlltdG1OR2RKWTJka1JXRTFZa0prUVdWV2FDOWtTR1pDWkRWaVNXTkNaWGhtWjJJeVlVNW5NMlJuWlhoblIyUm5aVkZpWTJOR2FIcGtRV1l5WWtobmVXVlJaa0psWldkVFpuQmxVV1JJWkd4aU1HSm9ZMVJoUVdGQlp6aGxVbUpTWW5SaWJXSmlZMWhqVFdkVVpGSmxNbWhuWmxablUyVkdaVUpvU0dGRlowZGlXbWQ1WWxabFoyVTVZbkZoU21ab1ltdGtLMlJDWjBWamNHVm1Za3BsZW1GS1lVTmlWMmhUWjJobVdHTkpaM2xqYTJkdVoyTm5RbVZ3YUVaaFYyaHJhR05tWkdKSVkxWmtWbUpUWW1Sa1IyZDBaelpqV1dNd1p6RmxjV0ZXWjBGa09HUkZZbGhuZVdNd1kwbGxaR1pxWWpWbFkyUkJhRlppVVdZd2FFOWxhR052WVdabVZXUkJZMjlqUzJkaVltNWpTV1Y0WWtsaFoyUTRaRmRrUW1oQ1pEaGtOMkZNWkVKaFoySk5ZV0ZoYUdSU1pXVm5ZMk40WTBGa1dtZGhZa0ZqZEdKR2FHSmplR2hGWWxSbFltZ3daR1JrZW1aRlpURmhNV052WjFkbGQyTXdaVWhrVW1NeFl6bG5kV0pOWVhka1VtTlRaMUJoZW1JNFpsVmxUMlJSWWsxaVdtaGlZbGhuYTJkamFFaG1kMmhPWWsxaVJtVkhaVnBqYldWWllWaGhRbUpXWW1Kak1XUnZabUZsVG1oNFpERm5WbWhWWlc1aVVtVnlaR1ZtYldWT1lrNWxUR0ZDWkRWblFtZEZaRlZoVVdSMGFFRmxlbVpvWlRKbVIyVnJaM0JuUW1SalpWaG1XbWhLWmxsaVVtRm9ZMFJtVjJkWFkwcG9lV2hqWWtob1FtVkpaRkZtTUdGcmFFbGtUV2hEWlhkbFpXTktZVlJvVW1ad2FGaGxNMmhOWmxGaFIyZFhhR2RqVEdaU1psZGhPR05TWTBWbk1tTTVaa2hsWTJaNFowNWlVR0ZRYUVaaE1HUkNZa0ZuTUdWc1lVUmxTV042WldOa1UyRkdaRmhvWkdaNWFFSmxXR05qWTJWbVFtaEZhRlZoT1dKSlowWmhhR0ZpWkVsb01XaHpabWRvV21WcFpqbGhkMk5UWkcxbE9HUlBaVk5tVm1jMVlWSm9SMkpvWkhkaGVHRlpaRE5oVG1ocVkxWmxNbU52WWtaa1FtVjNaMWxvV21WaVlsVm5RbWRqYUdSamJHTktZME5vUm1WWVpHaG5NbUZGYUd0amMyRlphRkZsTVdGc1ptbGhaV2RwWTFGbk5HTkJaVkpqUW1GSVkwUmhSMlJTWnpSblZtTnVabU5oZFdGSloxSmtOR2hMWVVobGEyTnZZblJvVkdkblowWmhhR1ZWWld4b09HRm5ZME5tVkdoWlkySm5WR0Z0WWxwb1ZXaEVZa0ppVW1SUVlsRmpNbWc1Wmpoa1JtZ3haa1ZuZFdSbFpXaGlRbVlyWjFoamEyWlpZVGhqWVdoWFowVmtWMmRIWkVkaVdXZFZZMXBuYldoYVpXaGxZMlZHWWxab2RtaFZaR2hqVG1KV2FGWmlRV05hWjJOblNXaHVaMnhtTm1obWFHdG1NR0VyWjBGaU1HSlpaa0puU0dKcVpHTmpTbWhOWVhwalNtaGphRUZsVm1Wclp6TmpUMk5HYUdSblJHRkZZbFZrTUdaWllrcG5hbU5hWWpSalRXVlZaMFpoUzJWU1pGaGhRbVl4WTJWb1JXTjBZek5tWldKdFlXeG5XR1pYWmxKbFFXWmFZMkZoUVdGMFpFNWlUMkl4Wm14bllXSlFaa1ZpYTJOc1kwRm5SV0ZrWXpGaFJtaFNZM2RuV1dWRVoydG9UbUp2WjBsbFVtUk9aRkZpVEdodVpuZG5VMmRQWjNoaVoyVkZaVlZpTW1GR1ptOWhTR0Y0YUZKaVRXSkdZa2RqV21adFpsbGhXR1pDWVZablltZ3haWEJsU0doSVlsSmtNV05XWkZkbWFXTkJaV3BtVFdoNlpVSm1SR1JRWVVaaE9HTlFaMVJoZUdGQlpIZGtRbWRFWlRoa2JHaFlZVUpoUm1oUlpWQmxWR05KWkdOaFEyaEdhRkZpVFdWR1kzbGxaR0kyWjJWaVdHYzBaV0pvUm1GblpuTmlUMmhLWlhwb2EySkphRWxqTTJOSlpqWmlXR1JzWVVGbVkySk5hREptWjJoTWFGSm1WMlU0WVZKb1JXWXlZVGxsU0dKalkzaGtUbVZJYUdGalFtTXdZMk5vUjJaQlpqVmxSR05oWWtOaVdXUmFabEZqVTJaelpDdG5UR1JxWTNOb1UyUkNaa0psV21Nd1pGbGhVV1JaWjFKa1lXWnFZVFZvYldoYVlXMWlSbVYzWTFaaVYyRTVaV0ZqVW1KNFlqQm5aR0pXWTFaalNtUTRZMUJvZW1GSlluRmlTR2R0YUZGaVIyaFRZbWhtT1dORWFFeG1VbWRaWVhwb1pHWnJhRGxsUTJoQ1pGaG1SbUUyWms5blJXSnpZVmxuVVdZeGFHeGxhV0ZqYUc1blFtUjNabE5pUldKT1pVcGpWMlJ1WlRCaWMySkJaM3BsTkdGd1pWcGtlR052Wm1Ob1dHTldZVmxvTm1SVlptdGxWbVo1WmtWa1ZtVXdaalpuUTJkNllqaG1ZV2RUYURCblNXSldaVk5uUm1WQ1lVaGtSV1JIWjFwb2VXTldhR2hrVm1aeFoyTm5iR0ZGWTJwaFNHVjNaVTVqUm1oUlpESm1SV05YWWtka1IyZFpaVlZqV21OdFoxcGhhR1JqWTBaaFZtTnRZMUZsVjJnd1lXUm9TR1JXWVZab1UyaGtaMGRrZEdJMllWbG9lR2hDWVVGb1UyTjNhRGxrVTJKRlpFZGpVbWROWm1SbGJtRlpZa1ZrUVdZd1ltUmhOR2RQWTBKbVNtTlhaa2RvUVdSd1lsSm5ZMlF6WjNSaksyZENZMU5vUldGMFpsQmlWV1I0WTJobVpHVkhhRVptTTJabFptMWpiR0pZWTFkblVtaEJhRnBpWVdWQlluUmxSbVJRYUVKaFJXZFBZV0prZDJac1p6ZGhSV1JXWVZwbE5XZEJZbFppYUdKQmFGVmpRV2hHWkhsaVdtUlZaalJoUVdabFpXMW5WbVJHWkZsalZXSTFaR1ZrUVdSWVlrSmlkMlJHWkVKbFJtVnhaRkJqYldkYVkyMW5XV2hZWWtKbVZtSmlZekZpY0dWSVpraGlVbUl3WWxWbVZXTnRaR3hoY21WT1owZGlkR0pRWVdWaU1XVTRaMlpuVVdWQlpteGpkMkZYWW0xbFJtTnNaRkpoUm1oUmFFNWhXV0ZYWjBWblEyaFhZV2RvUm1kVllWTmxNMkpXWm5kbVpXZFlZWGhsYVdSUmFEQmliR1poWW1Sb1dHWm9hRXhvWkdnelpuQm1jR2RXWlhkb2QyVlJaVUpvUjJab1pFWm5WR1pYWnpCbVFXVkNhRmhsT1dKbFlscGxaMlYwWWxGbVkyUlJZbVJpVW1OUll6RmlOR0pEWW1aamJXVkdZVkJrUW1kSVkzaG1hbVJWWlROaU5XSmlaVmxoUW1oYWFIQmpXV2RTWTFsaldXTmFabWhqVW1KdFpscG1iV2RGWmpKbVZtSllaVXBuWVdaRFlWSm9WV0ZtWlZSb1JXUlNhR2hqWldneVpYQmhlR1pXWjBoaGFHZG1aRWhvVldGQlprbG1ZMlV4WkZKbGEyZGlhR3RpWkdoV1pFUmlTR1Z3WVM5a1NHSnRZVVZuV1dOUlpURm9iR0pwWW1OaWJtaENaWGRtVTJkRllrNW1TbVZHWlc1aVZtUnNZVk5qZW1Gc1lYbGhZV0V3WkZab1FtRkNhSGRvYkdNMVlVaG5SbU5LWkRkbVFtRkJaVTVsTDJoV1pHMWtSV1JHWVZab00yTm5aMGhoV0dKcllVWmxSbUZIWTFobU1XaFpabFptYUdkV1luRmlZMmhzWVVab00yVldZVEJvYjJGbFpFcG1iV001YUVkaVUyUnBaR3huUVdkTFlWUm9TV00wWWtsaVFtUkNhR2hoUldaM1lteGtWV0pUWTFabFZtWlFaV1JuUTJGT1pucGhZbVV5WjJSaGNXZFRZM2RtT1daVFkwVm1SMkZTWmsxaFpHZHVaRnBuVTJoVFkyeG9jR1V5WVVwb2EyTkJaVVZuVkdoQmFIZG1UbVZQWkhsa1NXTXhhR1pvYUdRd1lWUmxSR2hTYUhOb2FHZFFZbFZoZEdWeFptVmhhV000WTBOalJtSXhhRTVqVG1WSllWVmhVV05NWldKamVHaHNZMGhvV21OclltTm9iMk5QWVZWa1pHRnZaa1poVldWb1psRmhVbWQ0WmtKb2JXZGphR3hsV1dSV1kyRm5hV0ZSWWxGaFNtTldaMk5vUkdaSFptdG5UbWhvWWtaamFHTm9hRzFtUm1aSFpWcGxiV1paYUZoaFFtSldhR0prTVdSd1lraGxTR0pXWkVwbVZtWlVZek5pVW1Od1kwdGhWR1pqWkdablNXWjNabFpoU1dSVlowSmxRbU0xWmxWaVdHTlphR2xpUTJKNFlrcGxVV1JPWTNwbVFXTlRZVWhuZDJGT1luQm1WMkpYWmtwaGVXSmpZa2hrUW1kSllWRmhNR0pzYUdGaVpHSllabWhuVEdWUFpVaG9jR1oyWjFWblZtRnJaVmxsUldWVVpYZG5UR05YWkVkak9XSlZaa2RpZW1kMFpFOWxaV0pvWlRsbVNHZFpaMFpvY0dOSlkxUmpWV05qWTFKaVpHRXpaSFJrWVdaR1lWZGtTV1EzWmxWalYyaHdZVmhqVTJaM1lscG1aMkpoWVVKbGIyVjVZVnBpYUdOU1lXMWtXbWh0WmtaamQyWldaMWRoT1dGaFoxSmtlR2d3WldSaVZtSldaMHBoTW1SUVkycG1VV2h1WTBOaVEyZDNaVU5rVVdOU1ptUmxWV1JhWm10bWVHZ3paV0ZsTVdSSlpWZG9WR2hEYUdkaGVtSllhRkZtTUdaWlowbGpaMmR6Wkhkb1RXaDVhR3RpVTJOSVkxRmhWV1JRWWtobGVXSmtaelJrVkdoWVowWmpVV2RoWlZabFpHZGFZVVZsUW1ac1pHOW9RMmd3WVZaaGRtVkZaMUpqVG1WMllWSmtNMmROWkZSbVVtZDZabmRoVm1SQllWSmtOR1ZWWlZKbFEyTmpaamhsUm1oV1lVRmliR2hPWjBaaVJXSlhaRUpqVW1Wb1pWaGlUV0ZCWWs1blJHUllaR2xpUW1GU2FFNW1SMk5hWkc1b1pHTnVaVGxqZG1kWFpXdGhZMlZrWmtobVZtUldZbE5pWkdKSFozUm5ObWhaWVRCaE1XWnhaRk5uZDJVNVpWTm1SMlJIWW5kblJtWmtabTFoZEdOVFoxRm5kMlpXWW5ob1pXTm9aVXBqUkdkVVprVmpUbVJGYUZsa2FtaDNZekZrU21Nd1pXZG9NbVpCWWtKaVVXVm9aRmxpUTJGdlpHeGlTMkpEWW1kaFQyUlZhRlZtVVdSUllWbG9VV0pLWldWblVtUlNaRVZqVkdSaVpEQmlaR2Q2WVVWak1HUmthRzlrUm1oVlpXaGxVV1JTYURCaFdXVnVZMGxsUm1kYVltUm1ZV1p0WXpsalVtZGFaakZoZEdWblpFWmtiV2hzWW1oalJtWm9ZV2hqYldGR1lrZGhXbVJ0WVZsb1dHZENaRlpvWW1NeFkyOW5VMk5JWjFGalFtUldhRUpuYm1SdllXNW9VR0Y1WnpCblMyUlFabWRqVFdKRVpHVm1RbWRDWld0aVZHTklaMXBsTW1kVlptdG9TV2RXWm1WaVNHaFpZVk5uVTJkNFpXaGtSR05JWkRKb1NtVjJabU5vUkdWb1kwbGlVMlZGWjJ0bFVHZGlZV3hpU21OTVptUmxNMk53WVhCb1ZtZ3haMnRtVVdaSFkxZGhaMmRNWTFKa1YyRTVaRmxsVm1aWFl6bGpVR2haYUhoa1RtaGhZbVJqVW1oVlltUmhWMk5WWldSb1EySkpZM2xtV1doRVkxSmhlV0pTWW5salFtaFVZVGhrWldKSGFGRmlNV0pFWmxsb1VtUlphRmxtV21ab1psSmliV05hWm0xa1JtVjNhRlppVjJFNVpHRmtSR05zWjNOa1pHRllaMWhvYUdnd2FHRm5NMk53WVdwbVZHSlhhSEJqVEdWRVlURmpTV1JSWmxwa1JXVjRhREpsWkdoc1lYQm5TMlZSWTFSa1FXZ3ZhRkZtVldWV1pVMWxSR05CWnpCaWFtRlFaMmRoT0dNNFkwUmxVV014WTBwaFZXWlhaMmhoTkdkSVlXNWhOV0V5WVZGaE1XRmtaRnBrUldaQ1pHeGtiMkZEWkRCaVZtaDJaa1ZtVW1oT1pYWm1VbWN6WlUxaVZHZFdaakpuWjJWSlkxWm9WbVpCWWxSbVYyZERaVGhuYUdoWFlVWm5aMkoyWkZCb2QyVkpaQ3RqUkdaUmFEaG5WMkppWkRKb1kyTTRaVWRoUjJGWllWVmxXbVp0WlZwbGFHWmpaRVprVm1oMlpGZG1hMkpqWTJSaVNHRldhRlpsVTJWa1lVZG5UV1oxWWt0bGQyTlJZelZtVW1WVlowbGhXR1ZZWjFOa2MyaGxaMHhvTTJKYVpsQmlVV1pzWm5CaE5HTmhhRkpoU21KS1prZGthMkpPWTBSaldXZHFaM1JtZDJOaVpEQmlaMlJPWjBSblFXRXhaVEZsUkdoUlpVbG1OV2RNWjI1bVJXTXlaVU5rTUdSS1oxbG9UV1pSWkU1b1YySm1aRkpsWjJWVVlXUmtWV1pqWlRsb1ZtTm9Za0prYjJkU1lUQmxRbWRFWWxabFVtVnNablptWm1WdVpuZG5WbU5oWjI1bVNtWlNaV1JuTVdGa1pFdGtSbUZ0WW14aGFHWkdaR2hoYUdOdFpVWmpSR0ZKWm5Wb1MyTkRZazVsWW1GSlptaG5PR2RMWVZSaGJHSlJaMUJtUm1VemFGSmhaMlZsWkdwb1dtZE9aR1JuYTJWelpHTm1VV05DWW14bFQyVlVaa2htV21ZeVoxVm5hMlJKWjFaaVpXaElaMWxuVTJaVFpIaGlhR1JFWjFWblJXRm9aM2xvWTJWSVkwSm5TV1ZSWWpCaWJHZGhhR1JpV0dGb1oweGtaR0l6WjNCamNHTldaSGRrZEdSV1psUm5WR1F4WVZwa1EyWXlaemhoV21GUFlWZGlPV2RJYUdObWVHaE9ZVWhpWVdaQ1pWWm1TV2hWWkVWaFkyUlJabHBsYm1SS1pGZGxSbU5YWm05aU9XUmxaRE5uWkdGWVpWTmthR1JhWVhCbFdXTlNabGxpV1dKYVkyaGlVbU50WWxwaWJXZEdhSGRtVm1SWFpUbG5ZV0pTWkhkb1NXZGtZMWhqVVdOWlpUaGpTV05wYUd4aWRHZEJZa05tT0daSFpGRmtRV1JDWmtwb1dtUkZaV1JpY21ka1ptZGpXbVpNWVZCaE0yRm9aVEpuUldScmFITm9XV0ZSWkRGaWJHSnBaR05sYm1oQ1puZGpVMlJGWlU1aFNtaFhaMjVuVm1FMFlsTmpNbUl4WVRaaVNXZElaekZoV21SRmFFSm1iR0Z2WVVObk1HSldaM1psUldOU1lrNW9kbUpTWmpOa1RXWlVaRkppTW1SblpWWmxVMlpHWkVKbldXSkZaVVJtU1dNMlpFaGtNR1phWld0b1VHSjRaRkZpTm1GSFowSm9hR2RRWmxwbmVtaEtZMVJoVkdOSFpEVm9RV1poWmtSaVZXSXdaRTFoYUdGUmFEbGhRMlZCWmxwb1JXSkdaRlZtVm1ObFptUmlSR2cxYUhwblltSXdhREJuSzJaQlpUQm1XV05DWVVobGFXZHJZa3BuVDJONVpWVmlZbVpIWmtaaFFtaDRaRmhrUW1kS1kweGhSMlZGWTA1aFdtSlpaVzVtU21kM1oyTmpSV05vWTBSaFUyWldhSEJvTVdabFowVmlkR1l6WTJWamJtZE9aMWhuUkdGU1pqVmxZV1JLYURGaGMyVmpaRnBpTUdOV1lXSm1TbVJvWlZKb09XUllaR2RsU1dKc1lWZG1hR1p2WlVwalUyUjRaRUZrZVdSUFpXaGxPV2hIYUZwblJHUTRZVlZqVDJGblkxRm1SR1ZVWTBOb2VHSjBaRVpsWjJkb1pYRmhSbVZFWWs1bGRtSmlhRlpoY0dGV2FHSmlNV0Z3WmtobVNHTlNZakZoVm1KVmFHNWlVbWR5WjJWbGJXWk9aRTVsWVdoclpuTm1VR0pYWm10aVVXUnpZMEpvVTJWV1pqUm5TR0ozWkdSaldXaExaWHBsT1dSSlprUmphR1pvWmtsaVVtZEhZMGxqYm1abFlWaGllR1pwWkZGbE1HSnNaR0ZoWkdGWVkyaGxUR1ZrWmpObGNHWndabFpsTVdOcmFGRmxSMmhYWldkaVRHWlNZVlJoZEdKYVkxZGthbU40WW5SaFkyZDRZMDVqU0dWaFpVSmtWbWhKWjFWbFJXTmpZVkZsV21odVpFcG9WMlJHWjFkbWNHSTNabE5rYkdjeFpWaG5VMlZvWlZwaWNHWlpZVkptV1dSWlpGcGxhR2hTWjIxbFdtRnRaVVZoTldGRll6Sm9PV1JUWTBWaU1XVldZMVZuUW1Gc1puZGhOV0ZNWm1wb1kyaDNZMEprUkdkQlpVOW1SR2N3WTNkalVXUmthRVZsVm1VeVlVeG5XR1pvWTBObFJtSllaV2hsTW1oRmFHdGhjMlpaWlZGbU1XSnNaMmxvWTJSdVprSmhkMk5UYUVGamVHRnFabGRsYm1aV2FEUm1VMlF6WVdSb05tZGhaVlpoWkdGYVowVmtRbWRzWVc5alEyWXdZbFpuZG1kRllsRmllR04yWlZSa2VXZGtaV0ppUkdkcVpYTm5ZbWhDYUZKblZXZExZVmhqZW1aUllYSmxWbUZvWkRWaE0yRmpabWRuVm1ZMVprSm1RV0phWm1ablMyTnBaMUZvWldSRFlVZG9iMlJWWkdSbVdHZFNZMmhqWm1oV1kxVmxOMk5GWm1kaE5XRlBaa1ZoZUdSbmFGaGtUMlpVWkdka2VtWlBaRkZpYUdKcVkxRmphV0pXWTFOaVJXUkhaRkppVFdSa1pXNW1XbU5UYUZGbWFHTldaalJtWkdOb1prcG1UR0pIWlVWbFRtUmFaR1ZpU0dKSlpqVm1WMlJyWjJoblJHaFRZMVppY0dneFoyVmtSV2QwWmpObFpXRnRZbXhtV0dOWGFGSmxRV0ZhWm1GblFXRjBZMkZuWW1nd1kxWmhZbWhLWjJoaFVtRTVaRmhoWjJGSloyeG1WMmhvWTI5aFNtRlRaRlZvVFdOcWFFcGhiR1EwWVM5bllXZHVZa3BrVW1Ka2FERmhaR2hMWTBaaGJXSnNabWhvUm1Wb1lXaG9iV1ZHWkVkaFdtaHRZbGxqV0doQ1oxWmlZbU14Wkc5b1ZHRkZaVEJrTkdoQllrVmtSR1ZWWWpWb1MyaERZMGxsVldGWllXeGtjMlZFWWxWbVoyTk9aVEprVkdKSVlYUm1NbUZDWkdkaWNHSmpaa3RrTTJab1oyWmhSR1JzWVZWaVVXUkZZVVJtWjJRelkyVmpXR0Y0Wm1saVVXVXdaV3huWVdoa1oxaG9hR05NWjJSa00yTndaSEJvVm1ReGFHdG5VV1JIWmxkbVoyVk1hRkpuVjJnNFpsSm9SV0l5WXpoblZHUlBZVEZuYjJOVmFGcGxiR1JuYUU1a1NHZFNZbEpuV21KUVlVUm5aR1E0WWtablYyZHdaWGxoVldKWVpHUmlXR1JUWldoa1dtVndaVmxpVW1KWlpsbGxXbVJvYUZKaWJXZGFaMjFuUm1GM1pWaG9SV0pXWkdGa1VtaDRZVEJrWkdGV1pGWm9TbVl3WW1GaU0yaHdZMnBvVkdOWFlYQmlUR1pFWVRGaFNXVlJZV1poYTJaM1ptbG5aV1ZDWlVWaVRtWlNZbE5pUm1RcllsSmtaMkpPYUZKb1JXTkdZbU5pZG1GT1lYcG9NR2d2WWtkbmFHWndaVVpqVjJOcFpVVmxkMmhCYUdsalVtUXdaRXBpUW1OSllWVmtVV0V4YUVGbGVXUlVZbXRrYkdGMlprRm9VbWc1YUhaa1ZtSkhaRVZoVkdOVFoyMW9hR0ZDWVVGblFtWnJaRlZpU0dOcFpYTmpNMmRIWmpCbFdXWnFZa3RpUW1KU1pDdGxWR1pIWWtGa1YyZGhhRmRvUldoWFprZGpSMlpaWkZWbldtTnRZVnBtYUdGalkwWmpWbU4yYUZkaGFHZEdZMk5tVkdFeFpsVmpaV0prWTBoaldtSTJZbU5sTVdOYVlrRm9VMlIzWXpsbVUyVkZaMGRrVW1OTlpXUmpibWRhWkZOaFVXTm9abFpqTkdGa1lXaGxTV1ZEWlZoaWEyWk9aRkpqVEdaWVozUmhkMmhMWmpKbFNtZEVaMU5sVm1Wd1pURmlaV05GWVhSak0yaGxZbTFrYkdkWWFGZGlVbU5CWkZwbFlXVkJaSFJoUm1OUFpsWmtRbVZDWTJKa2QyUlNZMjlsVDJoVlpHUmtiMlpHWTFWamFHUlJZVkpvZUdoQ1lXMWpZMkZzWkZsa1ZtSmhhRzVtU21WU1pXUmtNV1prWjBOblZtVlhaMnhuT0doR1lteGtXbWQxWmxCaGJXRmFZMjFoV1dKWVlrSmlWbVJpWnpGb2NHSklaa2hoVW1NeFpWWmtWV051WkZKaGNtRmxabTFuVG1OT1ltRm9hMmhPWjJKaFIyUnNaV3RuTTJOUlltcGhjMlY2WjBoaGQyY3hZMGhuU1dOWVptaGtVbVpCWlRGa2EyaFNaazloYVdFd1lqSmtUbVZTWVVWbFkyZFRaSGRsVm1KaFoyWmhibU5vWVdGa1ptaHVaSEJtTVdKVFlURm5hMk5KWWtWb1IySm9hRmhuWW1neVl6aG1VbWRGWXpKb09XTklZMk5oZUdWT1pVaG9ZV1JDWTFablNXVlZZa1ZpWTJKUlpscG9ibVZLYUZkblJtTlhabkJoZVdGQ1lsUmtPR0ZsWlVkalVtWm5abXRvU21SR1pYUmpXR1JPWmtWb01XaHZaa3BtVTJoclluaGhRbVYzWkhkaVZtUkJaVEZrYUdnNFpVRmpWbVp2WXpSb1dXVnVabHBtU21KVVpGZGhjR1pNWmtSa01XVkpZMUZoV21aRlpYaG9NbVZrWld4a1NtWkRZa1ppV0dab1pESm1SV05yWlhOaldXTlRhSGRpTUdSeFlVOWllV05PWml0bFFtSlJZVmxvUldWR2FGTm1ZMkZvWlZKbVZHaFJhSGxqUzJOQllsVmhObVpZWVRGbE1HTjBaV0ZpYUdaR1lXNW5XR1pTWkU1bGEyZFNaakpvUVdaaFkxSmhNMlZSWmtwb1UyRkZaR2hrVDJGRlprUmtjR0paWVZabGFHVldabkZuWTJac1prWm1NMkpXWmpCb2IyZFhZbUZtVjJWRlpGZGpSMmRIWlZsbVZXUmFZVzFrV21Ob1oyTm9SbVZWYURkbVJXUm5ZVFZsVDJGRlozaG9aMlZZWVU5b1UySlJaMjlpVDJKclkwMWhjR0ZCWlRCb05HRkJZbU5tZVdkelpVbG1UV040WVdOblIyZFRhR3hsYkdZMGFHWm1VbVZLWkZwaFJXZFZhRGxsZW1kWllXNW9TbWgzWVdObFJXTm9aRVJpVTJGV1ozQmlNV1JsWjBWb2RHSXpaR1ZpYldSc1oxaGhWMlpTWTBGbldtTlpaMFpsT0dOT2FFcGlhMkZKWTJSblNXSm5aMGxtSzJKWVlrSm1WV0Y0WWtkamQyUnpaVmxuUW1acllVbG9SbUZRYUZKbVNtRlJhRU5vZVdkYVlWcGxUMkl4WTJSb1FtRkdaRzVtZUdSdlprWmtaMlZTWmpab1JtWklZalZvZG1OWllWTmxlR1V2WldKbU1XUndZa2htU0dSU1pqRm5WbUpWWjI1bVVtRnlZMlZpYldKT1pFNWlZV2hyWW5ObFVHUlZZV2hrUW1oclpsUmxTR2RaWm1sblIyWm5ZWFJoUjJoa1ltcGxkR05ZWlVKamJHSmpZVkprUVdSSFpIZGllR2RQWTBSalJXVmhZMGxtUVdaWllXVmxUV1ZDWW10blptUm1aSHBsV21od1kxaGlSbWRyWmtWblJXWkhZbEZvYUdoU2FGZG9PR1pTYUVWb01tUTVaRWhsWTJWNFlrNW1TR1JoYUVKblZtVkpaVlZsUldkaloxRm5XbVZ1WkVwalYyRklaMVJpTkdjMlkwZGpRMkZTYUZwaFFtUXhaazFtYTJOTVpHdGlVbVpDWVdGblJtRmpZblZoU21WNllVMWpWR1JIWjJsaWMySm1aMHBtYTJWcloxWm5SMlpXWWtwa0wySmhaekppTVdGeFpWUmpXR1JhWTFoaVJHUXdhRzltV21kYVlrSmhRbVZqWkdSaGJHSktZME5sUm1KWWFHaG1NbWhGWm10aGMyTlphRkZoTVdGc1ptbG5ZMmR1WlVKa2QyRlRaVVZqVG1SS1oxZGpibVZWWlhOalFXZDZZalJsY0dWYWFIaGpiMkZqWTFoa1ZtaFpaelpvVldocllYTmpjMlZYWlZablNXVTVaVXBrUkdGNFkxaGpRV1puWW14a1FtWlJaa0poZUdkSWFFZGxNbWRhWW10a1dHVjZZVGxtY1doalpteG1SbVF6WTFaa01HTnZZVmRsWVdGWFlrVmpWMmRIWmtkbFdXRlZaMXBsYldSYVlXaG9aV2hXWTNoaGFtaGpZMFZpWTJOa1pVaGpWbVZXWmxOaVpHWkhaWFJrTm1GWlp6QmpNV2h4WTFOaGQyZzVaVk5vUldkSFpGSm1UV1ZrWjJsblNXZGhZVU5tTUdGYWFESm5TV2RCWlU1aVJtaFhaVkZqWTJOa1kyRmlhbU5HYUN0alVHTlNZakJuVUdSSVpsSmhUV1ZzWms1blFtWktZUzlpVDJZeVpFSm9aV1ZXWlRCbVNtRlhaMUJqUldWa1lrNWtabVJCWjBGaVlXZFpaRkZpYjJGdFpsaGhlR1ZOWkdob1VtRlJaRkZrU21GVVpUQm5UbVYyWTJaa2JtRjNaVlprWVdOdVlVcGlVbUZrYURGbFpHRkxaMFptYldKc1pXaGhSbU5vWm1ob2JXWkdZa2RqV21SdFoxbG9XR05DYUdSaFNXUXhaM0JsVFdKQlpFSmxNV2hPYUZkbE0yRm9aVUpoWldodGFFNW9UbWRoWTJ0amMyTlFZVlZoYUdOQ1ltdG5WR2RJYUZwa01tVlZZbXRqU1daV1pXVmtTR1paWVZOaVVXUXhaM1JqUkdkU1kwZGpTV1U0Wm1WbVJtVndZVWxoVVdnd1pHeGtZV2RrWkZoaWFHZE1abVJrTTJkd2FIQm9WbU14Wm10a1VXWkhhRmRpWjJSTWFGSmlWMlU0YUZKblJXSXlZV05tVkdkUGFERmhiMlpWWVZwb2JHRm5ZVTVpU0dGUlptaGpRMmRRWVROb2QyZFdhRmhrVTJaelpHZG1UV0pxWldkblZHZEVhRE5uWTJFNVlXRmlWbUZ2Wmxsb1ltUlNZVkpuTTJkaVpESmpSbWh6WjFOaVYyYzVaa05rVkdOb1pURmlRbVJtYURGaVNtWXdaMkZoTTJSd1ptcGxWR05YWjNCa1RHSkVaakZpU1dKUloxcGpSV1I0WlRKb1pHVnNaMHBuUTJSR1lWaGthR2d5WkVWaWEyWjBZazFpUTJGNFowRmplR1JtWmtSb01HY3haMEpsVVdKM1ltSm9RV2N6WkhOb04yaEJZbnBrV1dWdllrTmxhR1puWVdSalZtZFlZV2RrT0dOQlpYZGpiR0Z0YUVoalZHTnNablprVW1RelpFMWxWR1pTWkRKaloyTldZMU5rUm1KQ1praG5SV1ZIWlZwbWVXaFdZV2hsVm1KeFptTmpiR1pHWVROblZtTXdaMHBvUTJSSmFGTm5hR0pHYUVaa2FXSjBZMUppUzJoNVptdGllbUZMWjFabmMyTnpaRVZrWjJoYVlWQm9abWRvYUc5a1YyTk5aRkZuYjJkMVkyRmhkMlpHWm5Ga1VXZEJZamxvUW1WSFoxZGpVbUZSWW1GaWJtUmFaMHRuVTJaNFpsVm9hMmRZWWtKaVNtRk1hRWRsUldST1lscGtXV2R1WjBwaWQyaGpZVVZsYUdORVoxTmhWbVJ3WmpGaVpXRkZhSFJvTTJObGFHMW1iR05ZYUZka1VtaENZazVsU1dKRlpFbG5WMk5aYUZabWVHTlhZMGxsWjJoblkyaGtVMkZyYUd0b2NtRllaMUZoYTJWRFpVcGlSbVk0WTJsaFRtZDZaMlJuUW1oWloycGpOV1pTWW1ab1JtaGtaMWxuU0dNeVkxWm9UR0pHWjJobmFHVnRaRVpuUjJWYVoyMWxXV0pZWjBKaVZtWmlaVEZuY0dWSVlVaGtVbVl4WkZablZXaHVaVkppY21SbFlXMWpUbUZHWkZCbloySk9aMGRuUVdOU1pqUmxjR0pEWjFSaWMyWTFaRUZrUW1KellXSm1UMlo2YURWb1ZHRkhZVmhuYzJkTlpVaGlVMlZqWlZSbFNtRklZV2RuUldWUlpqQm5TbVJoWVZsbVNHaEdhRXhtWVdNeVkxcGxjR1JVWWpGaVFXSlJaVkpsVldKSlpreGpVbVZYWVRoaVVtTkZZVEpvT1dSSVpHTm9lR0pPYUVoaVlXVkNaMVpvU1daVmFFVmtZMlpSWmxwbWJtZEtZMWRqUm1oWFpYQm9lV1JDWWxSbU9HZGxaVWRtVW1kblpHdGlTbVJHWlhSa1dHTk9aa1ZsTVdKdlpFcG1VMlpyWlhoaVFtaDNaWGRrVm1aQlpqRmxhR0k0WWtGa1ZtTnZaelJqWVdJelkwWmlhbUpYWVZkb1RtRklhRXBrVm1oSlkxRm5XbWRGWW5oa01tSmtaMnhsU21kRFprWmxXR2RvWVRKaVJXWnJZM05rV1dOUll6RmtiR1pwWjJOaWJtaENaSGRqVVdKQ2FHTmtRbVJGWjNsaldtZ3laa0psYW1SSlpETmlTbWhuWVZWaVFXWklabXhuYjJSbllWTm5hR1JqWlUxaldHRnNaV05uY1daS2FHbGpZMkppWlVOa01tWm5aV1ZpVTJKRlpHUm9UMkZGWWtoaWNHSjFabFptWjJNeFkycG1ZMlpuWmpGbVpHRldZVEJqYjJOWFoyRmxWMk5GWlZkb1IyVkhhRmxuVldWYVltMWpXbVpvWkdOa1JtZFdZM1pqVjJGcloyTmhaR0pJYUZaalZtSlRZMlJpUkdFNFlubG1TMk5vYURWa2EyZENaMnRtYjJabVpsaGtlbVpaWTFab1pXZEVZMVZoWVdGQmFEQmhZMmRpWlU5b1ZtZFpaMDltWldWU1ltUmpVbWRNWlc1bVNtWTNabU5pUm1jMVowdG9XV1V4WW5Cbk1XZGxZa1ZsZEdjelltVmliV1JzWVZobFYyRlNaa0ZsV21kaFpFRmlkR2hHWTJKbWVHUkZaRlJtWW1Vd1lqVmhObVJJYURKb01XTnZaMFprVldob1lsRm1VbUo0WWtKbWJXTmpZbXhtV1dSV1lXRm5ibU5LWVZKbVpHVXhabVJpUzJkR1pXMW1hMmN4WkZobWJHTkZZVEZtUjJacVpVSmpNR1JpWW5wblJXVlNaMHRuTVdkSlpFVm1SV2N4WjBGblFXRklabWxqUVdacFlrdG1hV2M0WmxWaFdXaG5ZbTlpUjJoWFkzaG1OR0V5WkVGbWVXaEpZalppVjJSc1lVVmxSV2hqWjFoa2FHZG1hRWhrYkdkUllsaGhSV1JFWVVsbksyUkxabGhqWjJWaVpWTmhhMkpXWVhkbFpHWllaR2hvVEdWa1p6TmpjR2R3WkZaak1XZHJZVkZuUjJkWFptZG9UR0ZTWkZka09HTlNaa1ZpTW1JNVowaGxaV0l4WXpsb1NHZFpabmRtYUdKSlpGTm9SV0UwWldOaFZHaElaMHBrVjJOR1pGZG9jR041WWxWbldHaGtZVmhpVTJSb1lWcG9jR0ZaYUZKaVdXUlpabHBqYUdWU2FHMW5XbUp0YUd0amVtVldaRmhvU21OaFkwTm9VbWhWWWpOaFZtRldaRXBqTUdGaFl6TmhjR1pxWlZSbFYyaHdZMHhtUkdjeFlrbGxVV1ZhWmtWbGVHWXlZV1JrYkdSS1lVTmlSbUpZWVdobUsySlNhR2RvVG1kU1lrVmhSbVZqWjNaa1RtWjZZekJoTDJoSFptaG9jR2hJYUVkblZHZ3daelZqUjJSU1kxRmtNV05NWlZKbFNXRTBaRkpoUW1WRlltdGtRMmd3YURWbmRtUkJZa0puY0dKMloxZG9NbVk0WlZSa1dHWXlaa1ZtVm1aR1pFaG5jR1ZJWTBWbFIyVmFaM2xvVm1Gb1oxWmpjV2hqWTJ4bFJtRXpZMVpoTUdGdllWZG1ZV1ZYWjBWb1YyUkhaVWRuV1dKVllWcG1iV2RhYUdobFNtVkNaakJtYldkRFlsVm1iR2hSYUZka1FtSm5ZV1JqU21kcVowcGlNR05KYUVGaVZXZHlhRWRoVjJoM1pXUmlWbVZEWjBWamRHZEpZbTVoTkdabGFGTmplR0pzWVZOa1pHUm9Za3BtVEdkSFpVVmlUbVphWlZsbmJtVktZbmRuWTJoRllXaGpSR1JUWWxab2NHWXhaV1ZvUldKMFpETmlaV0p0WjJ4aVptUkVZMVpoYUdOUlpVOWpkMkpWWmtsb1MyZHNabmhtWTJKUVoxSmxOV2M1WmxWbFFXYzRaWEJqVW1KNVkzTmxabVpCWlRGb1ZXZElZMHBoYkdRMVoxcGlZV2h1WTJ4aFVtSmFZMFpqTldSTFkwTmpibUZXWTJoaVJHaG9aMFprYldWVFkwVmxlR0Z0WWxsbVdHZENaMVptWW1VeFpYQmxTR2RJWmxKaU1XWldabFZtYm1KU1pYSm1aV1Z0WVU1bFRtSmhhR3RrYzJOUVpWVm9hR0ZDWTJ0a1IyTkVZVFJoTDJGQlpGVm9lR0paWjFCbVZHaDBhR1JuUjJSVlkwWm9UbUpIWldsaWIyUjZaVWxsYUdkTlpraG9RbU4zWm5kak4yUkpZMWhrUVdGSVpXUmhNMmRHWlhCaFVtSldaa0ZsWTJWTlpqSm5aMlpNWmxKblYyTTRZbEpoUldjeVl6bGpTR1ZqYUhoalRtVklaMkZoUW1WV1kwbG1WV2hGWkdOaFVXWmFZMjVpU21GWFpraGhWR1EwWmpaaFIyWkRaVkpsV21oQ1lqRmhUV05yYUV4aGEyVlNaMEprWVdOR1lXTm9kV2RLWVhwbVRXVlVZMGRtYVdaemFHWmxTbU5yWkd0bFZtWkhaVlpvU21ZdlltRmpNbVk1WlhGblZHSllhRnBpV0dSRVl6Qm1iMk5hWjFwb1FtZENhR05pWkdkc2FFcGhRMkZHWmxoaGFHSXlaVVZoYTJKelpsbG1VV014WW14aGFXZGpZVzVpUW1aM1oxTm9SV2hPWjBwb1YyUnVaRlpvTkdOVFpubGlUV0o1WTBsalFXRlNaMWhuV0daV2FIZG1iR2RTWWtKblkyUXlZMGhtTVdKQmFHNWlRbUpwWWtaa2QySkRaVU5uZUdoUlowdG5VV1pTWTFCaldHRkhZVnBoTldkV1ptZGhSbWhxWjJaaWJtUjBaRE5rVm1Jd1ltOWpWMmRoWWxkaFJXRlhhRWRsUjJOWlpsVm9XbUp0YUZwaGFHVmpZMFprVm1WMlpGZG1hMkpqWkdSb1NHTldhREJuUjJkUVlrTmpTV1p3YUdKa1VXTkJZblpoUW1aclprRmxRV0ZUWTFkaGIyTlFaRkJoYW1aalpFRmtTV2hXYUc5aE9HRk5aek5sVFdObVkwVmxRV0U1WTFwb1lXaFlZa3BvYm1KbFoxVmphR05tWmxaaVZtRndaM1JtWTJOVlkzTmhjbWRWWjBkamJHWllZVmRuVW1KQmFGcGlZV2hCWTNSaVJtUmlabmhpUldWVVpHSmxNR2hrYUhwbFJXWXdZV1JpYjJaR1oxVm1hR1pSWWxKbmVHUkJZbmxvVDJOb1p6bGpSMkphWmtSbk9HWlZhRTlqYUdWblpsbGtWR1F5YUdOamFXWllZbXhoYTJNd2FHUmplV1JyWW1saVNtTkNhRVZuUW1KYVpYaGlXbWRJYUVabGFHZ3hhRVJsVjJZeFlqVmpjbUZsWVcxalRtUk9ZbUZpYTJaemFGQm9WV2RvWWtKaGEyRlVhRWhpV21NeVpGVm5hMlpKWTFaa1pXaElZMWxuWW1kUlkyaGpVbVJ3WVZka1YySktZbmxvWTJkSVpFSmlTV2RSWmpCaGJHTmhabVJpV0dGb1pFeG5aR2N6WlhCbGNHVldaakZpYTJOUllsUm1VMlpDWlVOaFJtRnRZa1psU0dSQlowZGpSV0ZIWlU1bk1XUmthRkJvUzJONFlYTm9SbUZDWmxGbWRHUkZZVXhsZVdOSlpXRmtWR1JIWkVsaWVtUlhaRWhuTldKYVpVZGpSbUZyYURsaFRHTlNZalJvVEdaa1luaGpNV1p2WlV0aWVtZFJaamhvUVdaVFpWbGpTMkZEWmpCbFVXRldaMEpqYkdWMFpUUm9VV1ZZWkhCa2FtRlVaRmRtY0doTVlVUmlNV2hKWjFGa1dtSkZZbmhsTW1aa1lXeGxTbWREYUVaa1dHRm9aVEprUldaclkwNWlWV1JSWlRGblNtWXZZMk5tYldGb2FEVmtVbU5IWm14aVNtaFhaVzVuVm1jMFpWTm5NMmRrWmpabFlXWldaR1JoV21KRlpFSmxiR1Z2WmtOaE1HZFdhSFpsUldWU1owNWlibUZDYUVoaVRXZFBaMUprZVdSWlltUmtXV2hzWkVKalNHUkZZa2RpV21WNVpGWmhhR2hXWjNGaFkyVnNaVVpsTTJGV1pUQm5iMlZYWW1Gb1YyTkZaMWRvUjJWSGFGbGpWV0ppWjJwalNXSndaVTloVVdSYVoyaG9SbWQzWWtwaVVXRlZZMmRqWTJkTVpHVmphV0puYUhsalNXUm9aamhoU21KQ1owVm5jMlZZWVdOalZHaENaMFZuVDJGdVpGcGxXbUZSYUdkb1VtVjRaV1JqWjJFMVkxaGpSMk5HWlhSa1VXWlpZbWxoTldKaFltTmhSV1pvWjBSa1UyaFdabkJtTVdGbFlrVm1kR1F6WW1WamJXZHNaMWhqVjJOU1lVRmpXbWRoWTBGamRHVkdabUpoZUdkRlkxUmhZbUo0YUUxaU4yVlhZbWhvVW1kdFpWZG1RV1F3WkdSbFEyZEZZMGxrTDJSbVowSm1WbUprWlV0a2VXTkJhSGxrVDJaQ2FFMW5VR2RrWjNwbk1XVndaMWRpYUdkR1puRmpVR1p0YUZwaGJXaFpaVmhvUW1kV1ptSm5NV1Z3WmtoaFNHRlNZVEZsVm1WVlpXNWxVbWh5YUdWaGJXVk9aazVuWVdocllYTmtVR2hYWTJ0aFVXUnpaRUptVTJGV1lqUmhTR2QzWkdSbFdXZE9ZbmxtVW1GTVpWSmtWbVZ6WTB4a1IySkVZMEZtVW1kUVpYcGxVV0pPWTBsamFHTXhaRk5pVDJOWVltaG9RV1JrWVRKbWJHVm5aVlprTUdkVllrMW9SMkZZWmtGalEyTlNaRlJsVFdZM2FFVmpNbWc1WWtobFkyRjRhRTVpU0dOaFlrSmlWbUpKWVZWbFJXTmpaRkZvV21KdVpFcGxWMk5HWTFka2NHRjVhRlZpV0dKa1pWaGlVMk5yWWtsamFHVkxZVVZrVldkWFkwdG5NV2hGWVhKalMyWlVZMDFsY0dkWFlubG5kMk5UWTBKb2EyRTVaQ3RvUjJSb1kxbG9lR2REWjJsak5XZHlZa0ZuVjJod1owRmpSR1F3YUVGbldtaGhZa2RpV21ZeVlXUmpiR05LWTBOa1JtUllaR2htTW1GRllXdGxjMk5aWjFGb01XSnNZV2xrWTJWdVowSmpkMk5UWTBWblRtZEtaMWRoYm1Nd1luTm1RV0o2WVRSbWNHTmFZWGhoYjJoalpsaGlWbWhaWlRablZXTnJaWE5rYzJaWFpGWmlTV1U1WmtwbFJHWjRZMWhuUVdkblpXeG9RbVpSWVVKbGVHZElZMGRoTW1WYVpXNWlXR2Q0YUZabE1tUmlZMnhrUm1WMmFGaGxhMkp3WVV0aVVXWXlaMFZuVjJOSFkwZG1XV1JWWlZwamJXVmFZV2hvWTJWR1oxWmxkbVpYWTJ0blkyVmtZMGhpVm1oV1kxTmtaR1JIWTNSaE5tVlpaekJrTUdFclpVRm1NR2RaWlVKaVNHWnBaR3RoU21OUFpIcGlhMlpCWTBkbGVHWnpaemRpVUdWc1owMWlXbVZsWW5kamQyWmtZa3BqZUdGTlpHdGxaV1pCWWxKblJHaFJZbXhvY0dkb1pHTmlWV1JrWW1SalpXRnRaR3hqV0dGWFlWSmtRV1phWVdGaFFXTjBaMFprWW1GNFowVmlWR1ppWkRCblpHaDZZMFZvTUdKa1ltOWpSbWRWWkdobFdXUkZaekZvWjJWMllrbG1WbUpvWjFsaFRHaDZhRGhqWldSS1kxRm5OV2RGYUZaaFUyUkZZV2RtVW1SSVluTmxjR0pWWWtObVRXSklZazVsV0doblpscGxZbVV4WmtaaVNHUkRZbWhvVW1SV1pGUmliV2hvWkhKaldXTnRZWEJrVG1KT1kyMW1SV1ZRWkZWbmFHVkNZMnRsVkdOSVpWcGhNbVJWYUd0bFNXTldaMlZvU0dkWlpGTm1VMkY0YUdobFJHTlhabGRsU21SNVpHTmtTR05DWTBsbVJtSjNaa1ZrVkdkS1lXNW9XV1pIWTAxamFtaGpZMjFpUW1SUlpFRm9aV1JYWVdsbVFtUkxaMFptZDJaNFoyVm1WbVI1Wkc5b2JXRktZbmhqYzJoTVltRmtRbVUxWlVsa1VtUnJaRFJpTm1kYVpXNWxTbWRYWTBabVYyRndaWGxoVldGWVltUmxXR0pUWW1oaVdtRndZVmxpVW1KWlpGbG1XbVJvWTFKamJXVmlhREpuYUdFNFkyWmlNbUk1WkdGbVVtTjRhREJpWkdSV1pWWm1TbVV3WTJGaU0yVndZbXBoVkdOWFpIQm9UR0pFWlRGaFNXaFJaMXBtUW1oblpTdGtVR1YzWTBab1RXTlJZekpuZUdnMFkxVm1kMlk1WTJObFUyVjRaWEJpYzJSUVozbGlWV1E0WWtoblFXVnZhRnBpUm1KcFlYaG9kMmREWlc1bU5XZDZZVnBpZDJoVmFGZGtVbU5HWkZaa1oyaEhaRVpuVW1adFpVaG1NV0UwWXpab1EyVjVhR1JuWVdWR1pIbG1VbUpOYUZGa1FXRk9ZazluUTJJd1ozaGhlV0pXWVdobVZtVnhhR05uYkdkR2FETmxWbUl3WjI5a1YyRmhZMWRsUldaWFlrZG1SR056WVZWbFNXRjVZMjloZVdKT1oxWmxWV1l3Wm1OblJXWmpaR1JpU0dSV1lWWmpVMlJrWjBkbWRHRTJaRmxuTUdJeFpIRmtVMlozWXpsbVUyWkZZa2RsVVdOaFowNWtlV0ZTWmxOaVFXTlJaalZsVTJoa2FHaG5TbWhNWTBkalJXUk9aMXBpV1dOdVpVcGpkMmRqWWtWbGFHWkVhRk5rVm1Wd1pERmtaV0pGWmsxaU1HaGxhRzVoVW1GWVlrWmtlR1puWlhwbllXZEJhSFJpUm1aaVluaG5SV0pVWkdKaU1HTmtZM3BvUldjd1lXUmpiMmRHWkZWbWFHWlJZbEpsZUdkQ1ltMWpaV1puYUVwbVpHWkpaWGxvUm1ObVlrOWthR05KWmtoblYyTlVabk5sTkdaaVpWWm5VbU50WjBobU1tTmFaRE5sU0dOSVpVSmtTbUZqYURGaWNHaG1aa1ppUW1Nd1pFcGlWV0pwWkVGa2FtVk5ZM3BsUW1SRVprcG9kMmcxYUVOalNHUlZZMGxuT1dGT2FIcGtiMlZNWmxob2JXaG5ZbFppWldoSVpWbGpVMkpUWVhoaGFHUkVZVmRtVjJoS1lubGxZMk5JWjBKa1NXZFJZekJqYkdSaFlXUmlXR1pvWjBSblNXSjZZVWxuWjJSQ2FFWm1aR0prWjFoa1EyaFdaVVZoUm1KNlpWcGpjV2RZWnpKbE9XWk5aV05rZDJSQllUWmtZV0ZCWTJ4a1ZXUlZZa1pqT0dSYVpscGphV1kxWmxkaFVXVlRZa2xuTjJOQlpHNW1hMk5oWkVSbU1XWnpabTFsVFdRd2FEbGthbUpMWTJoaVVtTjBabHBoYm1KTmFFNWlWMmhWWjFabllXZFNaWGhpTUdKa1oxWm1WbWhLWlRCaFlXWXpZWEJrYW1GVVlsZG1jR2RNYUVSbk1XWkpaMUZoV21GRlkzaGxLMmRKWTJobGIyTk1aMUpqYm1aWlpEZGpWbU4zWmxwbldHVkZaRkZqUVdWYVpGQmpibWRDWWpkalUyZEdaMWxrTUdGWGFHMWpiR0ZyYUZOaU1tTTVaWHBqWVdkUlpYUmtXbWRTWlVaa1JXVm9abGRuUldaelpXbG5WbU5HWXpSbVoyUkdZMU5oY0dWdmFFTm9NbVZuYUdWbFUyZEZZVkZtTm1aSVlrVmtlR1o1WWxaa2FHUldabkZrWTJSc1lrWmlNMkZXWVRCb2IyWlhabUZpVjJoRllsZGpSMkZIWTFsb1ZXRmFaMjFtV21ad1pFcG5RbWN3WjIxa1EySlZhR3hvVVdKWFlVSmtaMk5rWVVwbmFtZEpZa0poVEdJd1pqRmhhR1pUWW5oaFoyVjJaMFZqU0dOb1lWRmxaR050WXpWblltSlJaMnRqYkdFMFowbG1iR1p2WmtOb1UyRXdhREJoVldGS2FIcGxPR1V2WjBsa2FHRkZZalJuUW1oV1kzQmtLMmRsWjBabU1HaExaMVZrUjJSc1kxaGlWMmhTYUVGb1dtZGhaRUZvZEdSR1pHSm9lR1JGWkZSbVltSXdhR1JvZW1GRlpUQm9aR0pvWTBoaFJXTlNZalpoVW1KNGFFSmtiV1pqWjJ4bFdXZFdhR0ZvYm1kS1pGSmxaR1l4WldSbVMyTkdZVzFvYkdWb1pFWmthR1JvWW0xblVXWkRZelJoZG1OTmFHNW9OR2hFWTJaaWJHaFJaRWRpVjJSV2FHeGlaR1pGWlZobWIyRnRZVXhrZVdjNFlWcGlTV040WW5SaVJHVkRaWGhtWjJWc1psSmxXR0k1WnpSaFFXWkJaekZpUW1GT1kwaGxOR05DWmxkamFHSkdaMDVoUm1KRVpHTmtLMlpLWkVSaGEyRlpZMFJoZUdKQ1pWTm1TbVp1WTBaalNHWllhRmhpY0dkd1lsWm1NV1pyWTFGb1IyTlhaV2RsVEdOU1lWZGxPR0pTWkVWb01tWTVZVWhoWTJoNGFFNWlTR1poWkVKb01HRkZZbFZvUldGM1prNW5XbVp0WVhCaFptaEhZVlZrUW1oNVpsVmtXR1ZrWVZoblUyRm9ZMXBvY0doWlpsSmtXV0ZaWWxwbWFHaFNaVzFrV21odFlVWm1kMkZXYUZkbE9XUlRaMEpqUW1Vd1lVRmpWbVpTWm5oa09HUlJaRmhsY0dacVoxUm1WMmh3WVV4bVJHRXhaVWxvVVdGYWFFVm9lR1l5YUdSb2JHVkthRU5pUm1WWVpXaG5NbWhGWld0bGMyVlpZMU5uZDJNd2FIRm9UMk41Wms1aEsyUkNaMUZvV1dGRllrWmtVMmRqWldoa1RXRkVZblJuTm1GWllteGhaR05KWldKblVtZHNZakJvUm1Nd1kxWm1NMmhIWVVKbVRXWjZabEpuZVdSa1oySm9SR2RxWVhOaVltSkNabEpuVldGTFkxaG9lbWhSWTNKbVRHUldaV3RoV0dWbVpHNWhkR1F6YUZabE1HZHZabGRsWVdGWFowVmxWMmRIWlVkaldXaFZhRnBpYldWYVltaGhZMmRHWVZabGRtZFhZbXRtWTJka1pVaG9WbVF3WlVkblVHZERZMGxsY0dGaVkxRmtRV2QyWmtKb2EyWkJhRUZoVTJaU1lUaGpRV2hrWjI1aE1XaFRaRlZpVjJKb1pEUm1ZV0ZuYURWbFRHVkJaa1ZtY0daYVkxQmtibU5KWkd0bVQyaEJZa1ZuVVdOU1kzaG1ZMmQzWVU1bFVXZFJZMnhpU1dKNFowbGhZbWRYWlZKaWMyWmFhR1ZoYm1KYVpFcG1VbVZTWTBWaFZHUmlZakJsWkdkNllVVm5NR1JrWm05aFJtRlZZMmhvVVdoU1luaGpRbVJ0WjJOa2JHSlpZMVpsWVdadVlVcGlVbWhtYUhkblRXTkRhRmhvZW1Sd1kzWmpWMll4WWpCamNtUlhZM3BpVVdZdlowZGlhbWQ0WjFaaFdtRkdaM0JrVTJOWlpFSmtNV1pLWlZSa2JtaFNZbnBqWTJjeVkwMWlVbWRoWldob09XVklhRWRpTUdST1pIRm5RV1ZVYUUxa04yWklaRkpsUW1oTllVRmtlbVJ2WjFObFVXVkNaMmhsV0dSS1lVZG9OV2haWW1OblNHUkNhRWxpVVdVd1lteGxZV0prYUZob2FHVk1aMlJtTTJkd1pIQm9WbWd4WjJ0blVXWkhabGRrWjJSTVpWSmtWMlk0WlZwbFVtZDVaR05rVDJSSlkwSmpNR05MWWt4bVZtZG5ZVWhtUVdkb1lqVmpjbUpMWm01aFNtVmtaa1pvV0dZd2FGQmtWV05YWjNSaFRHTlRZMmRuTldKblkxbGhWV1J2WmxsblRXTnNZWGRpZG1oT1lWZGtPR2M1WjBWalEyRkpZVlprUm1WVlpWSmtiV1JIWWxabVNtWXZZbUZqTW1oM2FHVm9XbWd5WlhCaFRHTkVZakZoU1dOUllscGtSV1I0WnpKblpHTnNaRXBrUTJkR1lWaG9hR1V5WWtWamEyZHpZMWxrVVdZeGFFSmxjbUptWW14bWNHSjNaRk5pUldoT1pVcG1WMlp1WlZaak5HWlRaak5uWkdZMlpXRmlWbWRrWVZwbVJXSkNZbXhoYjJWRFlqQmxWV1kzYUZkblZtTnZZemhoVTJKVFlWVm9RbUpUWjFOaGJHRlNhRVJvUm1obllVVm5TR05wYUhOamJtVkhZV3RtUldKcVkwbGxhR0l3WVhWbVdHSjNaWE5uWm1oWllVZGtPV1JGWmxaa2VtSktaVmxrWW1odVlWWm1kMk5sWmxabGMySnBhRVJoZDJWMFowcGpWbVpCYUZWaVpXVk1abGRtVFdod1pXRmxhMkZHWjBGalUyWjNaVGxvVTJORlpFZGlVbUZOWldSbmJtUmFaMU5tVVdOb1oxWm5OR0prWVdob1NtTk1aRWRsUldST1kxcGhZV0pxWXpWaGQySmxZekZpVm1SRVoxVmlWbVpPWXpWbFZXTnJhSFJoTTJobFptMWpiR0ZZWmxkbFVtTkJaMXBuWVdaQlkzUm5SbVZpWlhoalJXWlVaR0ptTUdKa1pucG1SV2d3WXpoaGNtWkdaRlptVm1kUlpVTm9VbUZvWmsxblkyaHNZbGxoVm1KaFkyNW1TbWhTWjJSaE1XRmtZMHRuUm1OdFlteGphR2hHWVdobWFHaHRaMFptUjJOYVltMWhXV1JZWlVKbFpHZFBabmhtU1dkUFpWUm1hR2hOYUZsaVJtRjZZbXRsYTJSTFkwUm9iMlV5WkVwaGEyVnpaMFZuVldObllVVmtXbWRVWVVkamNHVnhaRlZpYkdKdlkyTmpaV1JEWm05aFUyRklZVEZtUVdOTFowTm9iV1ozYUM5bFRtRlVZekJtU0dSRlpsSm5RV1JvWWs5blVXUldaVWhpV0dSWVpYQm9jR2hXWnpGamEyVlJaMGRpVjJOblkweG9VbVZYWkRob1VtSkZZekppT1doSVlXTm1lR0ZPWVVoaFlXZENZbFpqU1dSWFlrSmhUbVpaWWt4aGVXRkdhRmxvVjJORFl6aG1MMk5JWTJsa1ZXVlBZMDFvVm1Gd1kzQm5ZV1pvWWxsaFRHWkhhSGhtVW1NMlkyVm9iV2RHWm05b1dHaEhaamhoUjJGU1pEQmpiR0pXWmtoaVFXTkdaalppU21acVl6aGlkV2hCWkdwbloyTlRZbVJvUW1nMFpGRm5ZbWd3WjNoaWEyVkRaekZtTldKdlpVWmlXR2RvYURKbVJXVnJZM05rV1dWUllURmhiR1pwYUdOaWJtZENabmRqVTJkRlprNW9TbVJYWkc1alZtVTBZbE5pTTJoa1lYbGlVR2RTWmpobVVXSlJaSGhtWTJOc1oxUm5aMmhuWjJkalVXSXdZMjlvVldoRGFETm5UV05aWmxKbE0yVXhaRzltVTJWRlkzaGhZbWRGWWtoa05XTTNaMVpsYTJkc1kzRm5TbWRvWTJ0a0syVkNZa1ZsVW1KaVpreG5RMlY0WlZwbFUyZHFaemxqZG1OTFltMW5XbVp4WkdObFJXVkZabE5oVm1OdFlqQm5aR1pJWjFaalZtaFRhR1JpUjJaMFpUWmxXV1F3WWpGbWNXSlRabmRvT1dKVFowVmtSMkpTWVUxaVpHRnVZVnBoVTJkUlltaG9NR2h6WlZCaGJHaHpaRmxuUm1ObllUUm5ZMmhNWVhwa01HZHBZa3RtVkdOTlkxQmhVMlZXWTBabk1XUmlaWHBqV21VelpWcGlibUZXWjFoa1VXaFNaR3RvV21oT1pFRmhjMk5TYUVwbk1XZG9aRUZvV1dGUlptOW1NbVpZWW1kbloyUTJabFJuUkdaTmFHTmpVbVI0YUhSbWJXaGFaVU5uYzJVdlkyRmlibUpLWmxKblpHSXhhR1JsUzJaR1oyMWtiR1ZvWTBaaGFHTm9ZbTFrUm1oSFlWcG1iV0ZaWWxoaVFtaFdaMXBpYkdkT1preGhUbUo0WVRGbFZtWlZaRzVrVW1oeVptVmxiV1ZPWTA1a1lXVnJaM05vVUdaVlpXaG5RbUpyWVZSa1NHSmFaVEpsVldkb1oxcG9aR05OWVZObFZXVmpZMGhsVVdOMFpFNWlSMk5EWmxsbk1tZGxaRVJsVG1kSFlrUmphR1ozWTFka1NXTlVaRVZoWW1kUFpubGpUbWhvYUVabGJHaEJaMXBuUm1GNlpYQmlSV2RGWmxOaFRXaGFaa0ZtU0dZMVprOW9abVpXWWpSblUyZEtaMFZtUldWQ1pFRmpRV0owWWtwb1ltSnBhRVptWm1OSFkxVmlRbVo1WVZWbFdHZGtZbGhtVTJkb2FGcGxjR0paYUZKaFdXTlpaMXBrYUdaU1pHMWlXbU50WTBaaGQyWldZMWRtT1dGVFlVTm1lR1l3WmxkbFUyZEdhRXBtYzJaWlpXNWtXbVJLWkZSaVYyUndaMHhvUkdReFlVbGtVV2RhYUVWaWVHY3lhR1JuYkdGS1prTmxSbVpZWW1obE1tZEZaV3RrYzJaWllsTm5lR1p3WVdsb1ltSXpaVUZqSzJoUllrZG9iR0pLYUZkaWJtRldZVFJvVTJNelkyUm5ObWhoWTFabFpHZGFZMFZvUW1Sc2FHOWlRMlF3Wmxab2RtRkZabEppVG1aMlpWSmhNMlIwWlVobFJHTjVhRVpvUjJGU1kyaG1NR1ZEWlZoalUySnJabWRrUkdVeVpUUmtiV1pqYUd4bmNHY3pZbEpvYW1oallsZG1aR2hZWnpCaVYyUkJZa2RoT0dKVlpFOWhiV0paWkRGaFQySkNaM2RsT0dkV1kwRmljR0paWWxWaVFtaHZZMEZtVEdGU1lrRm5NbUZJWm10blJtSkJaMU5pZDJZNWFGTm5SV1ZIWjFKa1RXUmtabTVpV21kVFlsRm5hR0pXWlRSa1pHRm9aRXBvVEdWSGFFVmhUbUZhWlZsaWJtZEtZVFJtU21OQlkwRmpTMkZIWW14a1VXSTBhRkJtVVdWWllUUmlTMmhFWmtGbGMyaEdZMUprUVdOVFptRm1RbUpuWmpSaVltUjNaVEJtVUdaaVpqRmlPV2MyWTBWb2VHWjBaVzlvVVdKUlprRm9XbVpHWmtKaE5HVnlaRTVtZUdoMFlXRmpUMlZEWlhOb2NXaFBaakZpWkdOQ1pFWm5ibVZ6WldOblIyVnFaMHBqYldWR1kwZGxXbUZ0WkZsaldHVkNaVlprWW1jeGFIQmxTR0ZJWWxKbk1XRldhRlZuYm1kU1lYSm5aV2h0WVU1aFRtWmhZbXRsVG1oaVpVZGliR0pyWnpOb1VXUnFhSE5uZW1OSVluZGhNV05JWWtsb1VXVXhZV1ZuVTJGNGFFNWxSR1JVWkVKa09XSjVabUpqUjJkNFprbGhWMkl3WWtKb1lXZExZVmhuWjJGbVlsQmhlbUpOWVRabVYyTlNZMUpqVm1SV1lVTmpaR1phWVVoaVFtSlNhR1JoUldVeVpGSmlTR2RhWlRKbk5XSk1aVkZvYUdkV1pFbGpWV2hGYUdOb1VXUmFhRzVpU21SWFowWm5WMlp3WlhsbFZXUllZMlJoV0doVFlXaGhXbUp3WjFsb1VtUlpaVmxuWW1KcmFFRmtkV1JNWW5wa1NtWXJaa2RrUTJadloxaGlRMkpGWmpsaFJXWk1ZV2huTldJd2FGbG5TR1J3WVRCbFRXUkhabkJvV0dORlp6Rm5TV2RKYUdKa1ZXRjNZbkZsWkdkblkxbGtTMmhZWWtOa2RHSTBaVmhvZDJZMVoxWmlSR0pCWkhObk4ySkRZbFJuZUdKM1pGRmxNR1JPWm1aalNtZ3hZemxqTkdSVFpETm9aR1EyWkdGaFZtWmtZbHBoUldWQ1oyeGpiMlJEYURCblZtRjJaa1ZrVW1WT1pIWmlVbVF6WjAxbllXWlVZMjFqVVdNdllWTm5SbVJDWjBoa1JXZEhhRnBuZVdSV1oyaGpWbUZ4WW1ObmJHZEdZek5sVm1Jd1kyOWlWMkZoWVZkalJXWlhaRlJtUTJJMVpXUmtUbUpYWTJkaU0yZGFaa1ppYzJkMVlraGxaMmhOWWxabVdHRnNaM05vWm1KSlpsTm1ZMloxWlV0a2FHWXdZMjFqUldoblpXTm5WR1ZIWjFkbk1XRkRaRXBoUkdSclowZGpSR0ZvWXpGbmNtaGFaWGhoZEdWR1pWWm9VbU5aWVZaaVRtVnFhSE5uWjJaUWFFSmxSbVpNWWtkaGJHWk9ZWFZoVldOclpYUmtNMlZsWTIxamJHZFlaRmRqVW1kQllWcGtZV05CWVhSbVJtZGlaWGhpUldaVVpFMWpiV2d4YUhwa1JXSXdaMlJpYjJaR1kxVmthR1JSWmxKa2VHaENaMjFrWTJKc1pGbG5WbU5oYUc1bWIyVmFaR1JpTVdKNFpWaG9SbWR1WW5CbGVtRkdaV2hoVm1OdFpWRmlRMk0wWlhab1RXZHVaalJoV1dWTFlXaG1ZMmhWWVZablJXaGpabEZoVjJNemFHaGhRbVpsWm0xb1RtaE9abUZqYTJaelkxQmtWV1ZvWVVKa2EyTlVaa2hoV21neVpWVm1hMkZKWWxabVpXVklhRFZuUjJGQmFERm1SV1pSWVZaamVXSTRaVE5vVUdkVGFFMWlRbUpIYUZGbmVHUmhZbUZsU0dWb1pHSmlabWR1WmxwalJHTldaekZtYTJaUllVZG1WMmhuWkV4aVVtaFhhRGhqVW1aRmFESmpPV0ZJWW1ObWVHUk9aa2hoWVdWR1pYQm9TV05XWld0alJXRlJhR0pvYVdoWlptVm9XR1JFWTJ4b09HaElaRVJpU1dWaFlVSm1WV1JSWW5kaldXSlJaSE5uV1dOYVlrSmlXbVoyWldabFZXUjBZWGRsVm1KWFlUbG9ZV1pTWW5obU1HSmtaVlpsVm1KS1lUQmxZV1F6Wkc5bUsyRmFZakprY0dkTVowUm5NV2hKWTFGbVdtaEZaWGhpTW1Ga1lXeGxTbU5EWmtaaVZHVkZabmRrUldScllVNWlaV2RSWWpGblVtWnBaMWxoVjJOS1ozZGpWbVpzYURWbFNtZEZaRzVvZUdNMFlVVmxSbVV4WkRaallXZFdZMlJvV21GRmFFSmtiR0p2WVVOaU1HTldaM1prUldOU1lrNWtkbVZTWkhsb1ZtZFRZMFpqVjJWb1pFWmhVMkZGWVRGa1NHZFdhRzFqV21ZdlpWWmtaMlZhWXpSa1lXWllZWFJpTTJKV1pEQmliMkZYWW1GaFYyTkZaVmRqUjJKSFpWbGpWV1JhYUcxb1dtVm9ZMk5tUW1GRlpXZGlWMlZvWkhkbU0ySklZVlpoVm1oVFptUmpSMkYwWnpaaVdXWXdZekZsY1dkVFkzZGlPV2RUWmtWb1IyWlNZMDFuWkdocVl6aG9WV1pSWkdoaE1HZ3paR1prZUdOSlpsRmxUV2RyWWs1aldtTlpZVzVtU21kM1ltTmxSV0ZvWmtSaFUyaFdaSEJqTVdabFpVVmpkR0l6YUdWbmJXVnNZbGhoVjJOVllWcGxXV05QYUdkaWMyUkhZV1JqUkdOelpWUmtZbVV3Wm1SbGVtTkZhREJuWkdodllrWm5WV0pvWkZGbVVtRjRaVUpuYldaalpteGlXV1pXYUdGbWJtWktabHBpVG1kR1ltUmhXR1pHWVdsbFpHTndZMUJrUW1Wb1ptMWlSbVJIWVZwbGJXZFpaVmhuUW1KV1kySmhNV2R3WVVoaFNHaFNaVEZtVm1oVlltNW9VbUp5Wm1WbWJXWk9ZVTVvV1dWb1pEaGxRbWhGWTFaaloyZHNaRWhrYUdaVlpqVm9SbUZuWkdSak1HSk1aRWhsTldGaFpGTm9lR1JPWjBSblUyaEhaWFJpZVdWaVowZG5lR1pKWjFkbE1HTkNaV0ZpUzJGWVkyZGtabVpsWTFSa2EyZG9ZVVprWjJWMFlYcGhWbUpwWVhoalQyRktaMFJsYzJSYWFGZG5NbU5hWVV4alYyUlNaMDVuU0dOaFowSm9WbVJKYUZWaFJXRmpZVkZvV21odVpVcG1WMkpHWmxkbGNHSjVabFZrV0daa1pWaGhVMlZvWmxwbmNHTmhaMVZqU1daWFpVcGhWbWQzWW01aFRtUkJaMGxpTDJaRllWTmxiMlEzWWtWaGVHSldZbFppVm1kV2FHeGhNR0ZsWlVoblRtZHFhRlZuV0dOYVkweG1SbVl4WjNOalVXUlBaRVZqZDJKcFpHVm1RbUpGYUV0blZtUkRabTlrVm1SWVpGRm9PV2hrWWtsa1oyTXhaWEZqVDJWdWFFSmtOMkZUWVVaaFJtUkJhRlpoYkdRNVlqUm9VMlF6WW1Sak5tRmhZMVpoWkdWYWFFVmpRbUZzWTI5a1EyRXdabFpqZG1GRlpsSmtUbUYyWkZKaE0ySk5ZMVJrVW1FeVlrSmhRbU5TWW1obVRXVlFZVlZuVkdaUllsSmxSMmRXWTBWaGRtVkZaSGRvVm1FdllVaGxNR1p2WVdSaVlXZFlabEZsWm1WSFpVaGtiMmRKWlZwbWJtRTFZVzlpWTJWQlkyeGlkbUpFWVd0aWJHaGxaVlpuVW1oUmFFRmtSbVI1WlZGbUsySktZV2xsZDJNclpWRmlNR2RrWlZObFIySXlhRkpoV1dabWFETmhjR1UwWlZGaWFHWldaelJvWkdSb1lVcGxUR0ZIWTBWb1RtWmFZVmxsYm1WS1lYZGlZMmRGYUdob1JHaFRaMVpvY0djeGFHVm9SV0YwWXk5blRHUnRaMk5uVldKRllWWm1SbVJNWkVOaU1HWlJaRUpqUzJSdWFFSmlTR05hWlhkbE9XZDZhRWRvUldOa1l5OWlTR2hGWVdobVRXRlhaWGhsUW1NclkyVmtNV1ZhWlVwa1lXVnBZMXBvWm1aT1pFSmhPR2hNWVZKa1FXUnZZblZoVldGc2FEQmpTR2hSWkVkbU5HUjFabGxtV0daMFpGWmtaV1JXWVU1bWRHVklZbEpoTVdSV1pGVm1ibU5TWm5KbFpXUnRZazVrVG1GaGFHdG5jMkZRWjFWbGFHZENZV3RpVkdoSVlWcG5NbWRYWmpCaWMyRmFaRlZrYm1SWllsTmpVMlY0WVdoa1JHTlhabGRuU21GNVpXTmxTR1pDWmtsa1VXWXdhR3hsWVdka1lsaGthR05NWVdSaE0yRndZWEJuUVdWNFlrWmpXbUpUWTIxbFdtZGtZMVpuUjJaR1lWRmtWbUo1WjNSbFVHWk5ZVUpoTUdoTGFGQm5WbVpyWldOalIyUlNZbVJtWTJSUVpqTmpiMmRZYUVob1IyWk9ZemhsUVdKNmFHZGxSR2RDWTJobU5XVTJabU5sUW1JNFpsZGpTMk13WTBWamNXRk5aMmxuWjJWbllrZGpWR2RhWVZOaFJtZENabEZoVW1kbVpERmxTbWd3WVdGb00yZHdaV3BpVkdKWFpuQmxUR1JFWmpGb1NXVlJaRnBvUldKNFl6Sm9aR2RzWVVwbVEyWkdZVmhtYUdJeVkwZGpaMmhOWjFsbFUyRkZZVkpoYVdWaFlXNW1iR1U0WVZsa2EyaE9ZVXBuVjJOdVpWWm1OR0pUWmpObFpHUTJZbUZqVm1ka2FGcGhSV0pDWm14amIyVkRZakJvVm1GMlpFVm9VbWRPWjNablZHZDZhRUZpVkdoWFpXMWthR1JpWTFGbVNHWndZMGhuUldSSFkxcGhlV1pXWVdoblZtUnhhR05rYkdkR1lUTm1WbUV3WjI5alYySmhaMWRvUldKWFlrZGtSMlJaWkZWbVdtWnRabHBpYUdobFkwRmpSbVZvYUVkbFVXRTVaR05vVkdKNlkxbG5aR2ROYUVOaE5HRmlhRTVpTUdGVlkybG5VMmQzWlZKaVUyVkJZVmRqTVdWTlkyRmhiV1p3WmxObFYyaG9ZbmhtTkdSTFltaG1TV2RtWWtaaFoyUkJZVkpsU1dkNVpVRmpWR05RWjNkb2QyZEhZMHRoUVdJMVlUbGpUV05GWlVwa04yRlZaRWRuYkdOWVpGZG1VbUZCWlZwbVlXWkJaM1JoUm1oaVluaG5SV1pVWVdKak1HSmthSHBqUldVd1ltUm5iMlJHWjFWbWFHaFJZbEpqZUdoQ2FIVmtTbUZzWVdoaFYyUkpZV3BsVFdKRVlrWm5RbWhuWms5bVZXaDNaV2RpTVdoSVoyeGhRbVZ0WjBoaU1tTmFaekZuWVdGSWFFSmxTbWRqWnpGaWNHSm1aMFppUW1Vd1pFcGpWV0ZwWmtKbWJHWlBZbE5oYzJGTlpVOWlRMlpvWTBGbFJtRnNaMVZuUm1WSFpVaG5OR1VyWjFWaGEyZHJaRlpuWVdkdVp6aG5aV1ZaWTFKaGFHZEVaRmRrVjJSS1pIbGhZMmhJWjBKb1NXaFJhREJoYkdaaFkyUmpXR2hvYUV4bFpHZ3pabkJuY0dWV1l6RmlhMlZSWkVkbFYyUm5aRVJrUldoWFowWm1VMmhYWm5sbk5HWldaRVZoUm1GM1kwUmlUR1pZWTFGalkyTlhaVUZpT0dOUlptSm5XR1pLWkVSblNHUkhabkJuZFdOVWFGaGxaR1ZRWkZGbWVHRlpZVEZqV1dGVlpVbGlWMkpLYUZaa2QyaHVZazVvUVdWSlpDOWpSV05UWkc5bE4yVkZhSGhtVm1WV1psWmtWbUZzWWpCaFptUXpZazVvZG1GYVlUSmhjR2RNWWtSbk1XRkphRkZqV21oRllYaGtNbUprWld4alNtRkRZVVpsV0dKb1pESmhSV2hyYUhObFdXaFJaREZuYkdkcFptTm9ibU5DWXpSa1NHTkZhREJsUzJWRmFHcGpVV1p4WjB0alJHVm5aU3RpVEdSRWFGbGhUbWRIYUVaaVJtVnZZMEZoUldSV1lUUm5SMk5DWjA1b2VtRlhaek5uVFdOTVoxUmpiV05vWlVwa1UyWkJZVkppU21WVlozbGtOR2g2YUVKalNHRlpZMnhtVG1Sb1pGRmhWMlJCYURCa1NtRmxaR0ZqVjJSdllsZGlSR2h0WVRoaksySmFaMjFqV21Wb1pHTmtSbU5XWVhablYySnJhR05uWkdSSWFGWmhWbVJUWjJSalIyRjBaVFptV1dJd1pURmxjV2RUWlhkbU9XSmlZa2RrVjJob1pHMWlaR051WTFwbFUyRlJaV2huVm1jMFkyUmphR1pLYUV4blIyUkZZMDVvV21aWlpHNWxTbWQzYUdObVJXSm9aVVJvVTJKV1kyOWhhR0ZOWkVGa1NXRnJZMlJoUkdnNVpVWm1WbUV4WVVabFpHRk1aa0ZsVFdoSFpGbGlWbUY0WWtkaVNXZDRZazFqTm1WUmFIZGtjMmQ0WjBoaFVXVnNZMXBqVkdOb2FEUmhNR05RWmxGaFNtWmFhRmxtYldoR1pFRm5abUZzWW10blNHUlJZWGxtVldZeFpsaG9NR05uWW5GaFZHSlhZelJvTVdWaFpraGxlR1F2YUdKbE1XWndhRWhvU0dOU1lURmtWbWhWWlc1b1VtWnlZV1ZtYldWT1owNWtZV0ZyYUhOaFVHZFZZMmhoUW1KclpGUmpTR2hhWlN0bVIyZHJaa2xuWldWYVlWaGhXV0pMWTFGbWFHRlNZbkJvVjJSWFkwcGxlV2RqWVVobVFtRkpaVkZtTUdKc1lXRm1aR2RZWm1ob1RHZGthRE5sY0dkd2FGWm1NV0ZyWWxGaFIyZFhZV2RoUkdOQ1lXMWpPR0ZOWkVWa2VXSkdaVkJrVjJoU1lVNWpTR0poWjBKbFZtWkphRlZtUldkallsRmpXbVp1WlVwbFYySkdZVmRrY0dkNVpGVmxXR0prWmxoblUyUm9aRnBrY0dOWllsSmtXV05SYUUxbmFHWnZaMnhqVEdkcFpVRmthV2RPWW1saVFXSmxZMEZrYm1WNFlrcGtXR2RTWjNCak1HTlpZMGhpY0dWNVlWSmhSMmh3WjFoalJXY3haRWxpU1doaVlsVmxkMmR4WTJSb1oySmFaMDFrVm1kcVpVRmlNMk5SYUVOaWFHUllaRUpsZUdWM1lrUmpTbWR1Wm1kbU5HRlJZVlZtT1docVpWZGhibUZXYURSaFUyTXpaV1JqTm1OaFkxWmhaR0ZhWlVWalFtVnNaRzlpUTJFd2FGWmtkbVZGYUZKbFRtaDJaMUpsTTJkTllsUmlVbVV5WVVKbFFtaFNabWhtVFdSUVkxVmhWR1JSWlZKa1IyaFdaa1ZqZG1WRlpuZG5WbUl2WWtoaU1HUnZaV1JpWVdkWVpVbG5abUpIWjBobmIyWkpabHBvYm1nMVptOW1ZMlpCWm14bmRtRkVaV3RtYkdKbFlsWm1VbVJSWTBGblJtRjVaRkZqSzJoS1pHbGpkMklyYUZGb01HUmtaVk5vUjJVeVpsSm5aV05tWmpOaGNHSTBaVkZvYUdGV1lqUmtaR0ZvWlVwa1RHWkhaRVZpVG1WYVpsbG9ibVJLWlhkaVkyTkZabWhsUkdOVFlWWmljR014WVdWbFJXSjBaek5rWldWdFlVVm5SR0pXWkRGa1RtSlNZa3RoVm1SclltMWpTV05HYUZablYyUkVZMmhrVG1nM2FGZGtNR05rWW1walJtZFdaakZuV21kU1ozZGxlR1EyYUdOamEyUTBZV05tWVdOcFlqVm9VbU5KWWpGbWEyVkthRmhrYVdoblozcGlaR0ZXWldObWFXZFZZbEZoWTJONVltRmlWR0pvWkZab1dtRkdaWEJsVkdSR1prSm9SbUV2WlZWbmJtaFNZbkpqWldodFlVNW5UbVpoWVd0bGMyRlFZbFZoYUdkQ1oydGtWR2hJWkZwbk1tTlZhR3RsU1dkV2FHVmlTR0ZaWVZOa1UyRjRhRUZoV0dSV1lubG1SV2MyWjAxblUyaEpZbkprUkdOQlpqQm1abUZHYUVOb2VHZEVZMUJpTTJod1kybGpWbVl3WXpSa1dtTkhaVmhqVVdkWVlWSmtXR2RqWjFsbVJXUjZaVTVsU0dOS1ozaG5NR05GWmtsblJtaFJZbUZuVFdGM1lXaGlWV1pKWjNoa1RXUkRaMGhrVTJoS1pubGlWMlJ1WkdSbVFtVlJabnBtZUdOd2FGbG5VbU5aWmxsaFdtRm9hRkprYldOYVpHMW5SbWgzWWxaaVYyVTVaV0ZpVW1oNFpUQmpaR1pXWVZaa1NtUXdaMkZsTTJoT1puRmtVV0ZWWjBKb1RHRkVZVEZrU1dOUlpWcGxSV2Q0WlRKaFpHTnNZVXBqUTJKR1lsaGlhR0V5WWtWbmEyaHpZMWxoVVdJeFpXeGlhV05qWTJsa1VXWTBaMEZpVW1WQ1lraGpSR1JIWlZwaE1taERaR3BtVFdFcllWbGxVbU5TWTFobFdHTlZaSGRsYTJKWVkzZGtkMmN2WlZoaFZXVndhRzVoUW1kdWFHOW5ZV1ZUWWxSbmNHRmhaRWhuUW1ONFoxQmlRV1l6YUdSbE4ySlhhRVptWjJJdlpWQmtaMk5WYUN0a1FtRjNabHBrVUdoWlpsUm9TV2htWjBablJXSjNaVlZuV21kdFlWcGxhR1ZqWWtaaVZtWjJaRmRvYTJoallXUm1TR05XWjFaa1UyZGtaMGRvZEdnMllsbGxNR1F4WlhGbFUyZDNabU5sWVdKRlowZGxPV0ZTWVdSbmJXRTFabUpuVkdKcVlUbGhOR05rWldoa1NtVk1Za2RrUldkT1oxcG9XV1p1Wmtwa2QySmpaMFZpYUdORVpGTm9WbVZ3WXpGblpXZEZaSFJrTTJKbFkyMWtSV05WYUZkaFVXWXdZVnBpU21obllrNW9kbVZpWVhoa1JXZFVZV0ppTUdWa1pucGtSV1F3WTJSaGIyZEdhRlZqYUdWUllsSm5lR0pDWW0xb1kyaHNaMWxsVm1SaFkyNW1TbWhTWldSb01XUTRZbVZqUjJWRFkyOWtjR2hXYURCaGIySkdaMWRsZVdaSmFHcG9RV0pEWmxKbVpHVktaREZtY0doTlkwaGpVV040WjJOblZXSnRZV2hsTTJWbFkyNWhkR1JGWkdGamFHWmpabEJqUW1Ob1pUUm5ibUpDWjBSaFkyUnJaVTFrVVdVeFlsSmxVR0pTWjJSaFIyTlJZakZoUW1STFpsWmpWV2RvWTNsaVkyVklaMEpvU1daUmFEQm9iR2hoWldSaFdHWm9aMHhvWkdjellYQmhjR2RXWVRGaGEyWlJhRWRrVjJobloweGtVbVZYWnpoaVVtWkhaWHBuZEdkS1pFMWtSbWh6WjBkaVQyRnVhRmxuU0dWR1pVRm5TbUY0WTAxamJtTnZZMlZoUm1KWFowWm1lV2RSWlc1bU5XZFlZVlpqWjJOd1puQmtaV2hTYURob1dXTlBaV2hsVVdONVltRm5RMk5KWnpSb1JtUkVhREJpTldKRFkwWm1iR1paYUU1alFXSmFaamhuU1dNelluQmhiMmhVWmxoaWFHRkRaRUZsTTJGbllWRm5XbU5GWkhobE1tVmtZMnhtU21kRFowWm5XR0ZvWVRKa1JXTnJaM05tV1dGUlpURmhiR1pwWTJOaWJtWkNZM2RtVTJGRllVNWpTbWhWWldsalJtZ3lhRU5sUkdFNFl6ZGpUMlY2WTFGa1YySldaVVpvZDJGS1lWaGpNR1F3Wlc1bFJXUlNabWhpZG1oVllXNW1iMlpVWlZkaU0yWlJaMVpsVldSR1lteG9TR2RVWjBkb1dXRnRabGRuUm1KWllXbG1UV0ozWTAxbVZXaEhZVUZoTldSVVlrTmtSR1pWWTJWaVZXRkhabGxuWm1GYVltNW1TbUp2WTJaalNHYzVaWFppVjJacmFHTmxaR1JJWkZabVZtWlRhR1JvUjJoMFpqWmpXV013WlRGbmNXSlRZWGRvT1doVFpVVmpSMlJTWmsxbVpHZHVaRnBuVTJOVFlXdGhSbU15WlU1bFZtSnZaMHRsVTJGcGFFRm5WMk5LWjJwaFkyRlNaa3BuUldaQlpVeG5VMmRXWlVabE1XSmlaVEJtU21NelpWcG1ibWhXWWxoalVXUlNZMnRoV21oT1kwRmxjMmRTWjFsblZtWktZV0poVEdOb1kxVmlVV0ZZWkVGa1RXZDBhR1JuUW1SNFlsbGhSR2g0WjBKbmRHZGpabXRvUVdaalpGRmxTR2RLWVZKaFpHY3hZMlJrUzJoR1ptMWpiR1ZvWWtaa2FHTm9ZVzFrUm1SSFoxcG9iV0paWWxobVFtTldhR0pqTVdWd1praG1SbUpDYUZKb1dtSmxaMGhrVW1KeVkyVmpiV2RPWlU1bVlXVnJZbk5rVUdKVmFHaGxRbWRyWmxSblNHVmFaREppVldWcmFFbGxWbUpsWVVoaFdXSlRZMGhpTVdSQllVdG9RMkZ0Wm5kbmEyVmFaMGhqTkdoS2FFSmlkMmd4WTFObVRtZHVZVmxvUjJOSlltcGhXV001WTBoaFoyZHNZV05rVVdkSFprSm1TMlpVWkVkbldXUm1aVkZqVTJKQlpGUm1VR1o0Wm5SblZXZGxaRkpsZUdOSFlVaG5VbWhLWm1ObVRXaHFZM05vUjJaWFlsUmhUbVUyWlVGaGJtSTFaazFsV1daQ1pscGtjR1ZaWkZKb1dXaFpaMXBsYUdGU1pXMWhXbVJ0WkVabmQyVldZMWRsT1doaFlWSmhlR1l4WTBGblZtZFNZMk5pTkdKUFlVUm9PV2RxYUVabGEyTkNaVXhvUkdNeFowbG1VV05hWmtWamVHTXlZMlJsYkdkS2FFTmtSbVJZWkdoaE1tVkZZV3RqYzJSWmFGRmxNV0ZyWWpCbFRXTjVaRXBqZDJoRFlURmlhR2hxWlZkbmJtTldZelJqVTJZelpHUmhObVpoWlZabFpHSmFZVVZvUW1Sc2FHOW5RMkl3WkZabWRtSkZabEpsVG1oMlkxUm5lbUpCWWxSa1YyaHRabWhsWW1oUlpFaG1jR0pJWlVWaVIyRmFabmxtVm1ob1oxWm1jV1pqWTJ4a1JtWXpZbFpsTUdOdllsZGlZV1ZYWVVWblYySkhaMGRoV1dOVllscGxiV0kwWlRGbVEyTjRZakZrZG1GVllsVm9ZMkpOWlZsa1JtaFdZMDlrWVdGSFkzUmthV0poWTJ0b01HZ3lZbE5tTVdSelluQmxWMmhDWm14alFXVllaa2hvV21kVFlsRm9hR1ZXWkRSa1pHZG9aa3BsVEdOSFkwVmpUbUZhWjFsbmJtTkthSGRtWTJaRllXaGlSR1JUWVZabWNHWXhhR05qUW1ZNFkwMWpUV0p0Wm14blkySlhhRkZoVG1oclltRmlRbUprWWxwbVltZDNhR3RoWVdKaWFIaG1kR042WjFKaWVtRjNZMmRsUm1OVlpVNW1VV05XWmxkaU1XZHhZVmRvUm1kWlpsWmtZV1Z1WkVwbFVtVmtaekZtWkdGTGFFWmliV0pzWTJoblJtaG9hR2huYldKR1pFZGtXbWR0WkZsbVdHaENaRlppV21GM1l6UmhPR1JXWkZKaU1XUmxaVlZoYldkRlpGZGhaV2h1WVRsaFVtRmhZMnhvVFdWSFlsVm9hMlo0YUd0aVIyTkJaREJpSzJoVlpHdGphMmRXWldKbVFXZHpaV1ZrV1dSU2FHaGpSR1pYWlZkb1NtZDVaR05pU0dSQ1prbGhVV1l3Wkd4bVlXaGtaVmhrYUdWTVptUm1NMmh3YUhCblZtWXhaV3RvVVdGRllsUmplR0ozWjBSaVYyUTRhR0ZoUldFelkyZGpObUpqWjNkbU9XWmlaV0ZrUVdReFpFSm9WV1JDWlhOb1VXTk5aR2RpYTJobFpFWm9WMmRHYUhsa1VtRjNhSEJtT1doVFpHaGlXbVZ3WkZsb1VtTlpZMWxoV21ob1lWSmliV0phWjIxaFJtUjNhRlppVjJJNVptRmlVbVY0WnpCaFpHaFlhRVptZEdnMFkxRmpXR053WW1wblZHVlhZbkJvVEdGRVlURmxTV0pSWkZwa1JXUjRaakptWkdWc1lrcGtRMkZHWVZobmFHVXlaVVZsYTJoellsbGpSbU40WkVWa2NtTkpaMWhqTkdGdFkxZGhWV0V3WkVsblNHWnFZVVptZDJGRFlraG9hMkl6WkZCb1FtUnpZMDVsVjJOVlkydG1hMk5WYUd0ak1HZDFaa2RoUW1od1pXaGhSbVJVWm5ob1NHTkRaakpoUVdWSGFGZG5WbVpzWVVwaVdHSlVaMDFsSzJKQmFHeG5kMmMyWTFCbVoyVm9ZaTlrUW1SRlkwMWlZV05SWnpKaVJXRlhhRWRpUjJoWlpsVm1XbVp0WWxwbmFHVmpaVVptVm1oMlpGZGlhMmRqYUdSbVNHaFdZVlpqVTJSa1prZGhkR2cyWVdGbWQyWldaWEZrVVdoQ1pVcG5VMkpEWVVkbE1XZEJabGhvU0dGYVkxTmpVV1pvWVZabk5HWmtaR2hsU21kTVpFZGlSV0ZPYUZwaFdXUnVZVXBoZDJOalpVVmxhR1JFWjFObVZtWndaREZuWTJKQlpXaGpNMmRhYURKbGEyVmFZMVZtVkdSdloxcG9ZV1JCWjNSa1JtRmlaM2hpUldOVVkySm1NR2RrWW5wblJXRXdaMlJvYjJSR1oxVm9hR1JSYUZKbGVHZENhRzFtWTJSc1oxbGxWbUZaWkdsa1dXRnhabEJtTVdOa1prSmlSbVp1WjJkbVkyZEdZMmRtVW1RMlpVWmhTR2MxYUhaaldXZFRZWGhuVm1oUFlYbG5SV05RWTFsa1FtUkdZUzluVldWdVpsSm9jbUZsYUcxblRtSk9ZV0ZtYTJaemFGQmpWV2RvYUVKaWEyaFVZMGhuV21FeVlWVmphMlpKWVZaaFpXWklZMWxuVTJWVFpuaG9RV1JZWmtsbGFXZHdZWGxtWldVelpVSm5ZbVpRWVd0a2JHVkhaR0ZtV0dSb1lWUmlabVp1WW05a01XUldZbmRtTVdaeWFGVm9WMkZuWlVGaFVtVllZekZrYzJoSVlUQmlWbUpJWVdOb2VHRk9Za2huWVdWQ1oxWmhTV2hWYUVWaFkyVlJabHBsYm1OS1kxZG5SbUpYWm5Cb2VXUlZaRmhsWkdGWVlsTmhhR2hhWW5CaVlXUlZhRXBqYW1WTVkyaG5VbUowWmxwamJtSlJhRTVtVm1OWVlrNW1SMmhTWTNkalZXRlZZMVpvVVdnMVpEQm5VR0ozYUVWamNtSlVZbGRuUm1kTVprZG9lV1U0WTJObVZHVnJaWGhpTW1Ga1pHeG1TbWhEWlVaa1dHTm9ZVEpuUldWclpYTmpXV1ZSYURGaGJHVnBaR05tYm1SQ1pIZGlVMlpGWVU1bVNtWlhZMjVsVm1kM1lraG1kMlozWlhsb1lXSldZbmhsV21SQ1lqSmlVbVZ2Wmtab01XSnNhSFprUTJKU1kzQmlkbVZIWVROaVRtTklZMUJvUTJKQlpsWmlVV1l4WWtKa1VtZGlhRlZqZUdSNVkxWmphR1JXWTNGb1kyVnNZVVprTTJoV1pqQmliMkZYWm1GaFYyaEZaMWRsUjJSSFoxbG1WV0phWVcxbldtSm9hR05rUm1GNFkyMWxWbWR0WlRCalpHWklaMVpsVm1aVFpHUm1SMmgwWmpabldXY3daekZoY1dkVFkzZGlPV1ZUWkVWaVIyUlNaRTFuWkdodVpGcG5VMmRSWld0aFJXaDNaMUJpTUdkR2FFWm9WR1JzWlVabFdHTkpZbnBrV1djd2FHVmpRV0YwWWs1a1FtWkJaRGhsTldOTVowRm1TV0p1WTA1aWFtSkNaV1ptUjJoQ1pXdGpVV2hhWkd4aWEyVkxaMDlvTVdNd1ltSmlabUpHWkZwbk5tSklZVkZrYjJJNVpWZG1VbVIzWkZwa1JtWXhaM2RvTDJkbFpXZG1WV0pqWkZwamJHWm9ZVkprWkdVeFpXUmtTMmhHWjIxbGJHUm9Za1puYUdkb2FHMWlSbWRIWVZwbGJXVlpZMWhpUW1WV1ptSmtNV0Z3YUVobFNHRlNaRlZsWkdKVlptNWlPV0V5WldWbmJtZDBZa1ZoV21kdFlrVmpVR1JWWTJoalFtTnJZbFJvU0dOYVpUSmhWV0ZyWWtsblZtSmxaVWhrV1dGVFpWTmllR1pvWlVSalYyUlhaRXBrZVdOalpraG5aMkpNWTFGbk1XZFNaMkZoVDJnellVSm9hR2RrWkROa2NHWndZbFpoTVdoclkxRmhSMlZYWkdkb1RHVlNZMWRrT0daU1prVmhNbUk1WlVoa1kyTjRaRTVpU0daaFkwSmhWbVJKWmxWblJXUTVZMFZuU0dSVWFIQmlWMlJJWW0xbGNHVnFZMHhtU0daa1lreGhWbVZvWmxwb2VHSmhZVUptV21SRmFGcGxhMkpCWldSaVRHUm9aWGhqT0dWbVpqSm9PV2RoWmxKaGVHTXdaV1JsVm1SV1pFcGxNR2hoWVRObGNHTnFaRlJtVjJOd2FFeG1SR2N4WmtsaFVXTmFaVVZuZUdZeVptUm5iR0ZLWVV0bFVXVlJaMDFsSzJKRlptdG1RV1JaWmxWa1EyaFNaV2xqWW1WdFpIaGxkMlpWYUVWamNHZEtaRUpsYm1OVlluTmxUV0pFWnpsb05taFpabXhoWkdoTVpHSm5VbU5XWkVObFEyWXdaRlpsZG1kRllsSmhUbWgyWVZKaE0yUk5aRlJpVW1neVpHZGxWbVJUYUVablFtaElhRVZoUjJGYVlYbGhWbUZvWWxaa2NXRmpabXhrYTJacVpVeG9RV1pKWVZkbFdXWnRZVVZrUkdaYVoxZGtXV2hKWjJWaWJXRmFaalZoWldSV1oxVm9lbUpYWkdoa1RtRnRZMVpqVm1WV2FGcGhaR0pJWlRobVNHVmlaakpsWkdKeGFGTmxkMlE1WmxOa1JXSkhZbEprVFdaa1ptNWtXbVZUWjFGamFHWldZVFJuWkdSb1lVcGpUR1JIWVVWblRtWmFabGxoYm1aS1puZG1aV1ZDWTNka05HSkJhRlpoY0dncmFHVmlSbVYzWjB0blpXVnVZMVppVEdoWFlsRm9aMlJSWm1GbFJtUmtZa1pqVDJReVluQmxZbUZpWWpCa2VHTjZZMEprVkdkd1owTmlSbWhWWVdobFVXRlNabmhvUW1odGFHTmpiR1paWWxabllXUnVaMHBpVW1ka1lURmpaR2hMWmtabWJXTnNaR2hoUm1Ob1kyaG1kbWRJWTFkaGNHUk5abGxoV0dGQ1kxWm5ZbWN4Wm5CbVNHUklhRkptTVdGV1lWVm9ibUZTWm5KbVpXSnRaMDVrVG1SaFlXdG1jMlJRWVZWbmFHaEJZbmRpUW1WRVpqaGliR2hZWWtKbFVXaEhZV1JqYW1Oa1kxZGtSR1Y0WVVGa1FXaFdaSGxtT0dGdVoxQmtRMlpSWlVKalJXSjNZbFZrUkdObVlsUmxiR2hEWldabWJtSlJaamRqUjJoQll6Rm9ZMkpGWTFobGMyZGhZVlJqUjJoR1oyTmlVbWhwWjAxbFZHZFBZMnRsVFdGTVlrMWxVbU13WW1KbVYyUlZabk5oTm1aYVlXNW5TbWRYWmtab1YyWndaWGxqVldoWVkyUmpXR1ZUYUdobFdtVndaMWxtVW1KWmFGbGpXbVpvWTFKb2JXaGFaMjFqUm1VMFlraGxWMmc1WWxKalYyZG9aVEJuUm1GWVowWmxOV2hsWVdGak0yZHdZV3BsVkdaWFpIQmpUR2hFWVRGbVNXUlJZbHBrUldSNFpUSm1aR0ZzWkVwalEyTkdZbGhpYUdReVlVVmhhMlp6WkZGbVFXZEdZMnhvTDJSaloycG1OV00wWlZsa2EyZE9ZVXBoVjJodVkxWm9OR2hUWkROblpHSTJZV0ZrVm1oa1oxcGxSV0pDWW14bmIyUkRaREJpVm1GMlprVmpVbVZPWm5aa1VtZ3paVTFoWW1kRlpIaGpUbUprWlZObFJtaDBaMGhuUVdkU1kzUmxlV1pUWW1kbWJHRnhZV0ZtYkdSb1pETmlRMk13Wm5CaFEyTkZaV2xqYkdOeVprWmlSV1IzWTFWaldtUnRZMXBrYUdOallVWm1WbU4yWjFkbWEyZGpaV1JsU0dkV1oxWmlVMlprWVVkbmRHUTJaRmxuTUdReFpYRmxVMkYzWnpsbVUyRkhZMFJsUVdjelpGQm9ibUZhWVZwaVVXUm5aVmxoUm1Wa1ltZG5OV1ZZYUVkalJtZDBhRkZpV1dGcFp6VmxkMlJLWjBSbFRXZE1aMU5sVm1kR2FERmlZV2hxWWxwaE4yWlZaRWRuYkdKWVlWZGlVbWRCWkZwallXaEJZWFJvUm1KaVlYaGxSV0ZVWldKbk1HaGtaWHBsUldnd1kyUmpiMlZHWjFWaWFHTlJZMUpuZUdaQ1luVm5TbVZwWVRGaFpHVmhaRzVoYkdSU1pGbGhhV1p3WkV0b1EyVnVZVlpqYUdaRVpHaG1SbUp0WWxOaVIyWlpZbmxrUjJGcWFHaGxWbVphWWtaaWNHWlVabGxtUW1GR1pTOWxWV0p1WkZKbWNtZGxZVzFrVG1ST1ptRmthMlZ6WTFCbFZXVm9Za0ptYTJKVVpFaGxXbVl5WVZWbmEyWkpZbFpqWldWSVoxbG9VMmhUWW5oblFXSllaVWxuYVdSd1kzbG5aV016WkVKblptTlFabXRvYkdSSFptRmpXR0ZvWVZSb1ptRnVabTlqTVdkV1pIZG9NV1p5WjFWalYyWm5aRUZsVW1WWVpHeG9jMlJQWTFkaU9XTklaV05pZUdST1kwaGxZV1JDWkZabVNXVlZaMFZuWTJkUloxcGhibWRLYUZkbFJtTlhZM0JoZVdaVllWaG5aR1JZWlZGbGVHVTVZbXhqVTJGNFoxbG1XV2RhWVdoa1VtZHRaRnBqYldGR1pIZGtWbU5YWlRsb1lXRlNZWGhvTUdaa1pWWmtWbVJLWlRCallXUXpabkJtYW1aSFpGTmxTV05EWVZoaVJtTjRaMGRvWTJkRllVbGpNMlpOWTJoaVdtWkxaMVpoYm1GWllUZGhVbWQzWW1SalRXVkRaV2RtYTJOMVpFdGpNMlJuWW5oaFVXVlZZbkJoU0dSRGFFUm1iMlJ6WjBKak0yVTVaSEJuWldoR1lqVmpXR2hZWWxWa2QyVnJabGhqZDJSM1p5OWlXR2hWWW5Cb2JtWkdhRWhrYjJKSlpXSm5WMlpuWlZaa1UyUkdaVUpvU0dWRmFFZG1XbVo1WTFabGFHUldaSEZpWTJKc1pFWmhNMkpXWVRCb2NHRk1ZVkZtTW1ORllWZG9SMmhIYUZsbFZXRmFZMjFvV21Gb1lXTm9SbUZXWkhabVYySnJhR05uWkdkSVlsWm5WV1JoWW1SaVIyUkNaVzVuV1dJeFpGWm9lR0paWTFGaE9XWlRaMFZvUjJoU2FFMWpaR0Z1WWxwaVUyWlJabWhpVm1nMGFHUmxhR0ZLWTB4alVtWlZZMDFoVDJWTGFHcGxjMk00WTA1aVZXTm9aa3hrUjJGV1lYQm5jbVphWVZWb2MyVXZZbU5uTTJaS1pEbG5WMkZTWTBGbVdtTmhaVUZsZEdGR1lXSmxlR2hGWkZSaVltVXdhR1JrZW1OVVoyMW9NV052WmtabVZXTm9ZMUZqVW1WNGFFSm9iV2hqWld4bVdXTldhR0ZrYm1GSlpFUmlUV0ZuWjAxalptTlNaVU5tWkdSb1kwaGhhbUZLWVcxb1JtUkhhRnBvYldSWlpGaG1RbVJXWTJKa01XZHdaVWhsU0dGU1lqRmpWbVJWWW1wblNtWnlZbHBtUjJWTlpFWm9ZV05yWkRCbFNtSmxaVUpoUW1WcmFGUmpTR1phWnpKalZXUnJZMGxtVm1abFpVaGhXV05UWlZOamVHSm9ZMFJqVjJaWFkwcGtObUpRWnpGamNHaEpabEZpTUdac1oyRmpaR1JZWldobFRHTmtaVE5uY0dSd1lWWm5NV1pyWjFGalIyZFhhR2RtVEdkU1oxZGlPR05QWTBWbk1tVmphRlJtVDJJeFlXOWtWV1JhWTJ4bloyWk9Za2hvVVdkb1prTmpVR0l6WTBwbFpHUkRZa2RsYjJkdFlWaG9lV1pSYUdKblFXZ3habFZpYzJOaFoxWm1OR1pTWjJKaGVtYzFaMjFoV21GdFkwWmpkMmhXWVZkb09XaGhZbEpoZUdNd1lXUmtWbWRXWTBwaE1HZGhaek5oY0dkcVpGUmhWMkZ3WTFKbFJHTjRhSE5rTm1WYVprVmtlR0V5WjJSaGJHVktaVU5sUm1OWVkyaGlNbUZGWkd0aGMySlpZVkZuTVdWc2FHbG1ZMk51WjBKaWQyZFdZekJtVFdaa1pVVmthbUozWjNKblVtaFVhRzlrTDJSS2FFSm5aMmRNWmxOblVtVmpaemRvVkdob1kwWm5ibU5TWjFKb01HYzRaa1ZvYW1OR1oxTm1SbU5VWm5CbFZXaEZZVlpuWjJGUVpFaGlSMmRaWlRCa1dHTjRZbXhtY1daS1ptaGthMlVyYUVKaFJXVlNaV0ptVEdWRGFIaGtSbWRWWTFSamVHVlNZbUpqTUdoNGFHaGpZMk5HWVZaaGRtVlhaR3RqWTJaa1owaGhWbWRXWTFOa1pHaEhaM1JrTm1SWlpEQm1NV0p4WlZOa2QySTVaVWxpUldKRVowSmhRMkZPWlZSamEyZERaMGRqZUdRd1pYTm5VR1pzWVhOaVdXSkdZbWRqTkdaalpreG5lbVV3Wm1saFMyVlZZbEpqUkdSSVpWSm9TV0k0WVV0a01HUlZaRFpqVUdGNVpWRm1SV2hGWkVWa2NHaGpabHBuUVdWellrNWhXV0o0WmtablZtUmFaR3RoZEdoYVowVm1NR1ZrWm05aVJtZFZaR2hvVVdOU1luaGlRbVJ0WTJObGJHTlphRlprWVdOdVowcG5VbWRrWWpGak9HaGxZVmhtYVdKQmFIbGlSMmhHWWxWaWFtWlhaRlJsVldSMlowOWtlbU5XWmxaaFkyVnNaMjluUW1KSVoxSmxRbWhXWlVkamJtZ3hZbWxuWkdOcllXeG5UbUZoWW10aWMyWlFabFZqYUdaQ1oydG5WR1JJWjFwaU1tSlZZMnRpU1dGV1pHVm9RMmRLWTJGaVFXUnJhSFJuY0dKWFpGZGpTbUo1WkdOalNHUkNaVWxqVVdjd2FHeGpZV05rWjFobWFHRk1ZMlpvYldoR1owUmlWbWd4Wm10bVVXSkhaRmRqWjJoTWFGSm5WMlU0WlZKb1JXSjZaVXBsVDJWbVkzcGpiR05JWm1Ga1FtaFdaRWxrVldORmFHTm9VV2RhYUc1a1NtRlhaMGhuVTJSV1lUaG9RV05UWTFWbFdXZElhR3huYTJFNVlrOWxSV1phWm1SallXVkdaa0ZuZG1KSloxTmlVV05xWTBGalYyUTVaVWhqVW1FeFpuUm1TV1pIWTNoaVJXSm5aMGxpYW1WVmFIUmlWR0ZYWlVwaVEyaEVabmRrYTJRMlpscGhSV2Q0WXpKb1pHVnNaRXBvUTJWR1oxaGhhR1F5WmtWbmEyWnpZbGxuUm1aU1kyZGhkMkZqWVdsbFVtUTRZMWxpYTJKT1pVcG1WMlJ1YUZabk5HRlRhRE5pWkdjMlpXRm1WbU5rWkZwa1JXaENaMnhuYjJoWFkxVmliR0pHWVVWbVVtUk9aWFpsVW1jelpVMWhWR2hTYURKaloyRldZVk5oUm1KQ1lraGxSV2RIWkZsb04yVldaR2RqYUdKeGFFcGphR2hyWVN0blFtZEZZbEpvWW1OTVpFTm9lR1phWVZOb2FtUTRabGxpVkdoSFpGcGxhR0pqWkVaaVZtSjJaRmRpYTJWallXUm1TR0ZXWlZabFUySmtaa2RvZEdFMlpVcG9hMkV4WkRObVUySjNaekJoUW1GU1prUm5XV2RHWTA5aVJHSkdaMUZtVVdGblltaGxiR1JrWVd0aFdXUlRaVk5tUVdWWlpGZG9TbVZJYUVsb05XUm1aRWRpU21ORVlsTmtWbUp3YURGbVpXUkZZWFJuTTJkbFkyMW5iR05ZWVZkblVtTkJaMXBvWVdoRllsSmpSbUZqWjJoa1JXTkVZMWxvTW1jeGFIcGxSV2d3WW1SaGIySkdZVlZrYUdWUllWSmtlR1ZDWTIxalkyVnNZbGxvVm1WaGFHcGpjR05TYUdGamJHVmpZbVZuV0dkcFpVRmhlV1ZIWjBaaVZXZHFaVmRuVkdSVlpYWmlUMlo2WlZaa1dtZFNabFptY0dOSVlVaGhVbWN4WkZaaVZXUnVaRkprY21obFpHMWpUbUpPWVdGaWEyRnpZMUJrUldGU2FFSm5OV1ZVWmtSaFoyUjZZa0ptVldGS1ltSmhZMlpJWVRoa1NtWlpZbEpvYUdSRVlsZGlWMlJLWVhsaVkyRklhRUptU1dKUlpqQm5iR2RoWW1Sb1ZHWTBZMFZpU21oWVozQm1hR0ZtYUZaaGEyaFJaa2RpVjJOblpVeG5VbVZYWmpoblVtVkZaVEpvT1dWSVltTm9lR05PWWtoblVHTkdaakJsUW1KQlpUQm5iR1ZGWmt0bFUyRlpabGhtVjJOU2FGVmtLMlJHWTBSaWJHRllaMVpoUVdoMGFIQmlZMkpuWlZGa2VXWmFhR2hqVW1SdFpWcGliV1pHWTNkb1ZtTlhaamxsWVdGU1kzaGlNR1JrWVZabVZtWktZakJrWVdVeWFGWmhhbUpTYUZkbFNXWm1ZMFJoTUdRNFpWRmhUV1pCWTFGa0wyWkthRlpoZDJGVlkwSmlTR05aWkRGb1dHaG5ZMUpsVjJSQ1pHeGpSbU55WjJablEyWkpZeTluU0dGQllqbGpRbUZUYUROaWVHUjRabEpvTVdFeGFEWm5ZV2RXWkdSbVdtRkZZVUprYkdOdmFFTmlNR2RXWTNaalJXVlNZVTVtZG1kU1l6Tm1UV1ZVWjFKb01tRm9ZVUprVW1Wb1kwVm9SR2RXWlVkbk5HVnRZVWhpYkdWM1l6VmxabWhCYUdSaWJHSlhZbEZoYkdKaFprcGxhV1E1WlZSaFJXSkhaVGhrWVdaT1lrTmhhMll4WkZCaVJtUXhZalJuVldVd1lqUm5VbVZPWlRGa1ZtSlRZMlJtUjJoMFl6WmhXV0V3YURGbWNXUlRZWGRrT1daVFowVm1SMlJTWmsxbFpHVnVaVnBoVTJKUlkydG5SbWd5WlU1b01XVlpaVkJsUldKQ2FHTm5VbVZMWm5salJtSXJaVXBuYkdaMFkwNW5RMlZvWmxsbk5tZE9abWRtTldndmFHTmxNbVJqWTBaaFJtUnJaRkptVm1kWlkwSm5jR2RZWlZwaWFHRm5hR1poVW1aVlkyUmtlbVJGWkRCbFpHUnZaa1ppVldGb2FGRmpVbVo0WmtKamJXZGpaV3hpV1dSV1ptRm5ibVpLWWxKblpHSjNaazVpUldaV1ozbG1NR1ZzWmtoaGEyWjNZWFZrV0daVVpGWmhiMmRPWVRKb1VtVmlZMHhpUW1kWllVbG9WV1F4YUdoblpHaFhaRE5uYjJNMVkwNW1WR1JqWmtKa1dXSnNhRzltV0dSWGFIaGliR1p2YUZwbmJtUmFZVEpuVldScllrbGhWbU5sWkVob1dXTlRZMU5tZUdab2FFUmxWMk5YYUVwamVXZGpZVWhuUW1OSloxRmtlR0l4WlZWbVRHaFVhR05uV21GbVpYbGxOR1ZvWTBobFoyVnZabVZrVkdjelkydGxSbWhEWmtSaGNHUmtaVkpqZVdoWlpsaGlVR0V3WW5Cb1VHRkxabEpqZUdWSFowRmlaMk5vWkVWa1MySnVaM0JtUm1oQ1owZGhUbUU0WlVob1EyTkpaR0puU0dkc1l6aGhOV1JNYUZWbE9HZFJZMDVqVW1neFpIWmhZV2RyWm5Sb2QyUldabGRoT1dGaFpWSmplR1F3WldSbVZtRldaVXBpTUdaaGFETmtjR05xWTFSbFYyaHdaVXhoUkdjeFowcG1SV0ZoWm1kbVJXRnFZMDluWjJoWlpVeGxVbVpVWjFGa2RtWkhZbWhuWjJoU1pGUmtVbWhuWlcxbFRtWnVZbWRrTW1GUlpGVm5PV2RxYUZkb2JtRldaVFJuVTJneloyUmxObUZoWkZablpHTmFZVVZpUW1Gc1pHOWlRMll3WTFabGRtUkZZbEpoVG1SMmFFVmtNMkl4WVV4bFEyVkVZbTltWkdWSVlrSm9aMlpQWmxGa01taG5abXRvVW1WQ1pITmhibUZLWVhoak1HaHFhRWhuYUdWd1pXRm5UV0pIWTJ4aFdHZEZZbGRqYUdGSFowdGlWR05KWVhSaFpXTkZaMXBtSzJoVlpEQm5iR0pSYUZOb1FtWnJaRWRvVUdkVVkzTmlNbWhQWTJ0b1ZXYzFaVkZrWjJkYVkyVmxUMkp0WlZKbVRXZGtZVzVpV21OVFpGRmxhR1pXWXpSbVpHUm9ZVXBsVEdoSFprVm9UbVJhWkZsaGJtaEtabmRqWTJSQ1pIaGtUbUZDWkVGbU9HVTFaMHhsUVdWSlkyNWpUbVJxYUVKblptVkRhR2hpYTJoWVowdGpWV2c0WVVKaVdtSXhhR05sWVdWWllqSmtNV1o2WVVWbk1HWmtZbTluUm1OVmFHaG1VV1pTYUhob1FtSnRZbU5sYkdGWllWWm1ZV051YUVwb1VtUmtaVEZpWTJKbFpFZGpSR0pGWlhWaVVtZENZVUZuZVdoWVlrTmlPR1l4WjJKbmVXUmFZMGRvV1dKU1ptTm5VMk5WWVZWb2EyTmpZMEZrYW1KbllubGlZMk5wWmtwalJXWmFZa0prYkdoQlkwSmtiR040WW5ObVdHTXlhR1JoTDJaWVkwRmtPV1ZCWVU1a1EyWkthR0ppUjJReGFGRmtZV0pWWmxSalJtZzNZV1ZrV0dSNFlXbGlVV1V3YUd4allXVmtaVmhqYUdOTVlXUm5NMkZ3WlhCalZtZ3hZbXRtVVdGSFpsZGlaMmhNWlZKbFYyVTRaRkpsVW1FeVprVmxTMk5LWld4bU9HaFVZVWxvVldKVmFFVmtRMmhWWVRsa1JHTmlaak5sZDJoWWFGVmxVMmMxWmpaa1JtWXpaRFZsWW1KWlowSm9XbU53WlZsalVtRlpZMWxrV21Wb1oxSmtiV1ZhWW0xbVJtVjNZVlprVjJjNVltRmlVbWg0WnpCb1pHaFdhRkZrV21JMllVMWxlbWRWWm5oaVVtZFVZelJtUkdOU1kyZGhSV0psWVUxbmJHUm9ZalJpVDJkM1pHTmtUMlZSWTFSblJXWnRZbGhoYUdSSlpsRmlRV2RzWmtKaWMySkpaRVJvT0daclkwSm1SV0owWjJGbFUyWXpZM2htTW1kQ1kybGxTV015WVZCblVtZzBhRXBqV0dKRllrSmhaMlZYWjBWbGVHVnRaVWhqVkdOc1ozWmpVbU16WmsxalZHSlNaekptWjJkV1lWTmhSbWhDWTBoa1JXTkhZVnBvZVdKV1lXaGpWbWR4Wm1OamJHRkZaMnBsVjJKUmFHUmhSR05LWmxSalZtZG1ZVk5pUTJad1owNWtZbUZxWjFaaGIyWm1aR2htVVdSeVlraGxhMlU1Wm1KblJtWkdhSGhoTkdOa1pFZG5kR0kyWkZsbU1HVXhZbkZuVTJGM1lqbG9VMlpGWmtkb1VtaE5ZbVJtYm1GYWFGTmxVV0puYURsak5HSm1aR3RuV21GTVkwSm1WV1ZOWlU1aFMyRnFZbk5oYW1abVltaG9jMmhIWTBSaFFtTTFaRGRrVDJWM1lXTmlOR0pPWmtOaWVHUm1ZVlZuUW1ZMVlWbG9UR1ZGWVRsbFRtUkpZWGhpWjJGaFlsbGhNbU14WW5wbVJXTXdabVJrYjJSR1oxVmphR05SWlZKa2VHSkNaVzFoWTJOc1kxbGtWbWRoWW01a1NtSlNZVWxoTVdGcllVeGhWV1ZwWkRGb2NHVldZVkpuV1dobllWSm9hV2hyWVhKalJHRjVabFZsV1dKTVlWSmlPR1pXWjBaaFZXWnJZbVJvUjJKNVpXUmtiR1ZNWldsaWQySmFZVXRuZDJSa1lYZGhTR2RzWWxWb2NXUlNaRmhvT1dkMFkyVmpSV1JKWWxaa1pXSklhRmxsVTJOVGFIaGthR0ZFWWxka1YyVktabmxvWTJWSVkwSmxTV0pEYURCamJHZFlaMlJuVjJOQ2FFeG9ZV0pYWVdSa2NHRkhaMFZpU1djMlpFMWpNbUpuWmt4a1VtVlhZemhqVW1aRllqSm1PV0ZJWkdOaGVHTk9aRWhvWVdGQ1kzaGlhV2hWWlVWbVkyWlJaVnBoYm1kS1kxZGxSbVJYWW5CaGVXSlZZMWhuWkdOWVpsTmlhR2RaWm5OaFUyRjRaRmxqV1dOYWFHaG1VbVJ0WmxwaGJXZEdZWGRpVm1kWFpqbG5ZV1JTYUhoak1HSmtZVlpsVm1aS1kzSmlZV2Q2WjJ4b2RHVkRaWHBvWjJGRllsRmphbVpDYUZwa1RXRkNaVGxvSzJaWVowWmpTbWREWlVaaldHUm9ZVEprUldkclluTmhXV0pSWkRGaGJHVnBZV05uYm1WQ1pYZG9VMmhGWkU1bVNtZFhaRzVoVm1VMFpsRm5lbWMxWWpCbFMyTm9aamhoV1dSUlpXNW5iMlZ1YUZSbmQyTkJZVTlrVW1GU1puTmlaMlZTWWpObVoyZFVZbFpqYldSRlpWWmpWbVJGWW5oalNHZERZMGRqT1dKNVpVTm5hR1pWWjJwbVptSkNaVWxrTDJWR1oyaGxhR2N4WTBwb2FXWldaVlJqWldSVVowbG9ZMkpMWkZkak9XUjBaVmRuYkdWV1puWm1WMkZyYUdObFpHZElabFptVm1SVFptUm5SMlowWkRaaVdXWXdaVEZvY1dKVFpYZGtPV2RUWkVWaVIyWlNZVTFpWm1KcWFEbGhZMk5CWTFaa01HUTFZVXBrU0dGRmFFVm9XR0pCWWxsak5HZE9ZVzVpYjJJdlpXTm9SV1JPWjBSblYyRnNZazVsTVdaYVlVWmtaR0l6WlZsbWJXTkNhRmhvUW1aU1kwSmpVV1JhWm10bVoyRk9aMHhvYTJST1pYZGxTV1pCWjAxbk1tTmpaR2hoVG1KbloxZG5hMlpvWldKa1VtaDNZMHBuZG1SbVltNW1kMlZXWjJGbGJtUkthRkpsWkdZeFoyUm5TMlJHYUcxaGJHTm9aRVpsYUdKb1oyMWpSbVZIWmxwaGJXaFpZbGhuUW1kV1ptSm9NV0pKWkU5aFJXUXhZalJuWkdWRllubG1XV05KWTA1aFUyZGpaRWxqUTJONFlUaGpTR0pJWjFKb1FtaDJZMVJrUjJoT1ppOWpWV1pzYURSaFNtSmxhRWRrTkdoaVpsTmxNR1JTYUVSaVJXaEhhSGRtZUdOUFlrUm9SV0ZoWlVsaFFXZFpaR1ZvVFdGQ1kydG1abUZtWkhwalZtUndabGhtUm1OclowVmxSV0ZIWVZGamFHZFNaVmRpT0dGU1lrVmxNbVE1WWtoaFkyUjRZMDVrU0daaFprSmpWbU5KWVZWaFJXUmpZVkZsV21KdVlrcG9WMlZHWTFkb2NHVTJhRWRqU0dKclpGVmhRV0pzWjJOa04yVkJaR3hsYkdkalowbGxNMlZWWjNsblltRnBaVFZrZDJOWVoyMWpPV1pPWTFSb2FHVXdZMEpsVTJoV1owcG5jMkZaWTI1amIyRXZZbFJuVTJkT1pFWm9WR2RDWTNCblVtTk9hR2xoT0dZMVlrMWphR1JqWjJwb1VXaFlaVUZsTldORloydGxRV0paWkZaalZtWkNaMGxuWTJKdVlVSm1kMkZUYUVWbVRtTktaVmRoYm1WV1p6UmhVMkl6WjJSbk5tSmhhRlppWkdGYVlrVm5RbVJzWVc5aFFXTnRhRGxpZG1KRlpWSm5UbU4yWVZKaU0yUk5ZbFJrVW1neVkyZG9WbUZUWjBab1FtSklaMFZoUjJSYVpIbG9WR05DWlZWamNHWm1aa0puWTJKc1pFZGpRV1ZrWnpCa1NXTkVaVlppUm1ORmFFVm1kMlJWWWxwbmJXSmFaR2hqWTJkR1lWWm1kbUpYWjJ0bVkyZGtaMGhuVm1aV1psTm9aR2hIWjNSbU5tUlpaakJsTVdoeFpWTm9kMlZqYUdKaVlXUjVaWFJrVFdObVlWaGlXbUpFYUZCa2VHSldaMnRtWVdkb1lrcGpWR0ZGWmxWalRXVkdaMWxtYW1SeloweGlVR0o2WjFaaFVHSlpZekZvY0djeFpXVmtSV0YwWkROaFpXVnRabXhvV0dGWFlsSmhRV1JhWW1GbFFXZDBZa1puWW1SNFpFVm9WR2RpWlRCa1pHVjZZVWRvZDJZMFoxUm5WMlJyWVdoaFltUlNhSGRtVFdGaWFHTmphMmh2WmtwaFlXTnRaM0JuV1doa1pIZG1kR0ZMWjFob2VHTkpZWFZsUm1ob2FFNW1iV0pDYUdoa2RHUnhaRk5pTTJkQ1oxWmpZbVl4WjNCalNHaElZbEpsTVdaV2FGVm5ibVpTWTNKalpXVnRaMDVpVG1KaFpXdGtjMlZRWkZWb2FHVkNaV3RtVW1aRVl6aGlUbU5JWjFWblNXWmxhR1ZrUjJoT1kzWmxVMlozWjFKaVptTlhZbGhtY0dRM1oyTmlRMkY0WTBsalEyRnFaRWxsVm1Oa1oxaGhUbWhNWmxsa2QyWmtZbXhsWm1WV2FHdGhVV0pIWWxkaloyTk1aVkpsVjJJNFpsSm9SV1F5WXpsbFNHWmpZM2huVG1oSVkyRm1RbWhXWVVsblZXaEZaR05pVVdKaVltcGpjMkowWWxkb2JXaHdZalZvVldSWFpFRm5jV0pUWTJkbWNHRXhaMWxtVVdZMFpGSmtXbVZyWW1oamJXSk1ZM2hsYjJndloxWmhWMlpTWW1GbVZXSlhZMEZoTTJGV1lsWm5TbWd3YUdGbE0yZHdhR3BrVkdkWFpIQm1UR0ZFWlRGbVNXWlJaRnBtUldKNFl6Sm9aR05zWjBwbFEyUklhRWhtVW1WallrVm5hMmR6WkZsbFVXVXhZV3huYVdWalltNW9RbUYzWmxObFJXaE9aMHBtVjJKdVlsWmpOR2hUYUhwaVVtWXdaMHBsUVdaSmFGWmhVbU5HWkVGak5HUlNZM2hvZUdkdVpWVm9RbUZ3YUdoaFJtWlVaWGhqU0dkRFlqSmpRV1JIWVZkaVZtVnNZVXBqV0dWVVprMW5LMk5CWW14amQyUTJZMUJuWjJWb1l5OW5RbWhGWjAxb1lXSlJaVEptUldGWFowZG1SMmRaWWxWbVdtUnRaVnBtYUdkalprWm9WbWQyYUZkbWEyVmpaMlJqU0dKV2FGVmlSMmRsYUdwa1RXWXhaRTFvVldaVllYQmtVV2huWWtWaFFXZFlZWHBoUVdkQlpXWmliV2hTWWtaaFUyUjRhSE5vTVdoSllqRmtOR1ZtWmxWaVVtRk5ZVlpsVDJjemFHOWxhbVZsWlZWaFdXaERaVVJoVW1jMWFEbGhVR1pyYUVwbk4yaFZhRWRrYkdkWVkxZG1VbVZCYUZwaFlXWkJaSFJpUm1OaVpuaGlSV05VWVdKbU1HSmtaWHBpUldJd2FHUmtaMlpYWjJ0aGFHWmlaVmRtYUdSQ1lpdGpaV0l3WkRCaEwyWmhZbTVsU21kU1pXUm1NV2hrWWt0b1JtTnRaR3hqYUdGR1oyaGthR0Z0WmxWbWFXTnJaakJtV1dkWVpHaG1MMmRpWVRGbGNHUklZa2htVW1NeFkxWmtWV0p1WmxKb2NtaGxabTFvVG1aT1pHRm9hMlowYUVob1ZXTm5aRFZqTldkVVpFUm1iR1V5WTFkalZXTkpaa0ptWldoSVowRmhWV2haWWxKamFHaEVaMWRuVjJGS1lYbGpZMlJJWmtKaFNXRlJaREJqYkdKaFpHUmhXR0ZvWWt4bFptTjZZVGxrUkdoV1p6RmxhMmRSWjBkaFYyaG5aMHhtVW1WWFl6aGpVbVZGWmpKbk9XRklaR05rZUdST1owaG9ZV1ZCWW5CbVNXVkZaekJsYkdaWFpFNWhSR2d3WldKbFpHUjVaazFqYldOQlptNW1PV0k1WlZOaWFHSmFZM0JtV1dOU1oxbGlXV05hWkdoa1VtTnRaVnBrYldSR1luZG1WbUpYWVRsallXSlNZWGhqTUdka1lWWmtWbVJLWWpobVNXUnVZMUZsWjJSQ1pGTmtjMlphWTJKb1FtTXhabFZqU1dKVFl6QmthV1JtWldoaE1XZERhRWhqYm1ob2FHNWpSMlV3WTNOaVJXRllaREZoYkdZMlpHVmtNMlJCWjNOblUyVkJZbkJoU0dGSFpWUmhNR2MxWmtkbVVtaFJZakZvVEdoU1pFbG9OR0pTWlVKblJXTnVaRUZoYTJKc2FFWm9SV0pTWTA1bWRtWlNaRE5pVFdSVVoxSmxNbUpuWlZab1UyTkdaMEpsU0daRlowZG5XbUY1WjFabGFHZFdabkZrWTJoc1lVWmhMMlpJWjJ0aVVtZFdaa2xsVTJkQ2FFVm9aV1I1WjJ4aVVXUkphSGRqWTJFeFptVmpRbUp3WW5aaFZXVlZaV05pVDJkR1pFWm1WbU5QWTJGblIyVjBZMmxuWVdWclpUQmpNbVpUWnpCbVdtSmpZMVZpZVdWM1lrNWlTbVZDYUZWaVpHWkNaMnhuUVdGYVpVbG5hR2R2YUVWaFIyaEZZMmhpV21SalpraGhkR2c0WkZka2EyVm9aVVJvVTJKV1ozQm5NV1ZsWWtWaGRHRXpaV1ZvYldoc1pGaGpWMmRTWmtGaVdtZGhZMEZqZEdoR1pXSmtlR1pGWmxSblptVXdhSFJpV21WRmFEQmtaR052WkVaalZXSm9abEZvVW1aNFpFSmliV2hqWTJ4bFdXZFdZV0ZsYm1SS1pWSm9aR1l4WkdSaFMyZEdaRzFoYkdONFlsQmtRbVpvWjIxa1JtSkhZMXBqYldKWlkxaG1RbVpXWTJKbE1XWndZMGhuU0dWU1l6Rm5WbUZWWVc1blVtZHlabVZqYldWd1pHNWhZV2RyYUhOaFVHVlZaR2hpUW1SclkxUmpTR2RhWlRKb1ZXUnJZa2xqVm1GbFpVaGpXV2RUWlZObGQyVkthRVJsUjJOdGFIZG5NR05KWkdwbE9HSkdZMGxtVVdOQllrOWpTbUp1WjBKbmFHVmtZVE5uY0dGd1lWWmtNV1ZyWlZGbVIyUlhaMmRrVEdWU1pWZGxPR1pTYUVWb01tTTVaMGhqWTJGNFpVNWlTR05oWmtKb1ZtUkJZVWRqVkdoNGFHWmlXbU51Wkd4bFYySkNZa0poWkdWNVlWUmpWMlYwWVZoalZXWm9aVGxoY0doUVlWSmpXbVpTWTBobFZtSnpaV0pvWVdKcllYUm9kMkpXWmxka09XUmhhRkpqZUdjd1oyUmtWbVJXYUVwbE1HVmhaVE5sY0dScWFGUm9WMkp3WlV4bFJHVXhaMGxpVVdaYVpFVm9VV0V2WVVSbVVtTXhZME5tU0dkdWFHaG9iR2hpWWpCb2MyRkZZVmhuTVdkc1pqWm5aV016WlVGa2MySlRZa0ZrYjJWNVpFWm9XR05XWW5waVUyUXlabFZpU0dWYVlWaGlNV2hhWWtWaFFtSnNhRzlrUTJNd1lsWm9kbWhGWTFKbFRtSjJZMUptTTJOTllsUm9VbVF5WldkblZtTlRZa1psUW1kSVowVmpTR1phWnl0aFptVkNaMVpqY1dWamFHeG1SbWd6WVZaa01HRnZZMWRrWVdKWFpVVmxWMmhIWVVkbFdXZFZZbHBrYldkYVpHaGtZMkZHWWxaa2RtRlRabTFvTUdOa1pFaGxWbUpXYUZObVpHSkhhSFJtTm1oWllqQmlNV1J4WjFObGQyZzVZMU5sUldOSFoxSmtUV2hrWW01bVdtRmlaMVJsYW1ZNVpEUmlaR2RvWTBwalRHTkhhRVZoVG1GYVpGbGpibVpLWm5ka1kyTkZaV2hqUkdOVFpWRmhOV2MzWWtsaFFXRlJZV3hqWTJOcFpuQmtXbUZHYUVWblZtSldZVkJoUldOSlpGWm5TV1V3WW1kbFltWlFaa1ZqTldjMlpVaGlVbU5WWm01b1VXWlJabEpuV1dGV2FGRm1UbWgyWm1aaVFtTjBZMEZsU21acFoxbGxXV0pLWlhobmMyaFVaa2hoYVdGb1pXOWtSMlZHWjJ0bGFXVlZaMGRoTkdWNlkyRmlTR1Y0YUM5alltY3haM0JpU0dkSVoxSmpNV1JXWkZWb2JtaFNhSEprWldodFprNWlUbWhoWTJ0b2MyZElZa2hqVW1kQ1ozWmhWV2RZWWxwbGFXRlhZekJpYzJWUFkxVm5ibVpaWmxOa1UyTjRabWhrUkdOWFpsZGpTbVY1Wm1ObVNHWkNZa2xpVVdFd1pteG5ZV0pRWjFobGFHZFdaR1JoZW1KV1lYbG1abVJZWmsxbFVXWkhabGRoWjJOTVkxSmxWMlU0WWxKb1JXUXlhRGxoU0dOalozaG9UbU5QWkZGbmFHTldhRWxsVldKRlkyTmlVV0phYUc1aFNtZFhaVVppVjJkd1ozbGxWV2RZWm1Sa1dHVkRaRkpqWjJoMllrMWxNV05zYUZabFFtTkdaakJvZVdaT1oxZGlhMlF4WmxabldHTkNZMkZoUkdKb1prNWxaV1pJWTFKalRXUnRaa05sUkdoVllXNWlRMlJCYUhOaVptVkNZWGhtTUdKaVptSm5NR2hXWXpKblltaEdaa2xoVEdoaWFHcGhaR1U1WkVkbVZHUlpaMVZsVVdFd1lteGhkV0pqWW0xbFFtWTRabE5vUm1KT1lVRmpWbWhzWkRsak5HVlRaek5uWkdFMlkyRmlWbUprWVZwaVJXTkNaV3hvYjJKRFlqQmpWbWgyWjBWa1VtRk9aWFprUldjelpqRmtUR1ZEWlVSa2IyWmtZVU5oTVdZMFlrdGxVbVpUWTI5amJXaElaREJrVldGdFpVdG9NV1pyYURkbVdHTnJaRTFsV1daUFlYbGxOV2hEWVZaaVIyZzBaRVptWkdReVlqbGtkbVpRWkZGb1FXSnFhRVJuWjJRMVkwNW9WV05SWTNoallXSktaREpqU21Wb1kxTmxWV0V4WjNGb1UyVjNaamxsVTJORllVZG5VbUZOWm1SbWJtRmFaMU5tVVdWcmFHTmpPV2RKWjJ0aFkyVmFaMVptYTJkT1psSmpVMmRJWlVwamQySmphRVZqYUdKRVpsTm9WbVJ3WlRGalpXTkZaSFJoTTJkbFptMWtiR0pZWWxWaFZXVkpZbHBoWkdKUlpITm9VbU5aWTFaaVNtZG1aa2xrUVdScllUSmhSMmN3WkRWbGJXZFNaMmRpUVdKYVlVRmlWV1pSWWxWalQySjRZMFpuWkdOUWFHNWtjR2hEYUZwaVJtUTFaRVJpUjJocllVNW1hR2hHWm1oaWFHaHRZa1pqUjJKYVptMW9XV1pZWjBKb1ZtZGlZekZtY0dSSVowaGtWV1ZzYUdKb1EyUnFhSE5rTldKalpHcGpSbWhGWjFwa1FXTmFabUZrU0dGclpGRmhkR0ZJWmtSb2IyVjJabGRoWjJOTloyTm9aR1JHWW5ka1UyRlRZbmhtYUdaRVpsZGxWMkZLWVhsalkyVklaRUpuU1dkUlpEQmtiR0ZoWjJSbldHWkJaMXBsWkdReVptUm9jR0ZCWkRGaFpHSlVaVlpqVTJSa1lrWmxRV1ZIWm1ObldXSklZbFJvZDJSUVlVOW9iR05WWlZSalIyTnNhSGRpVUdSSFprSmtUV0ZaWjJSbFIyZDBaMlppU0dOSFpWcG5XV1pWWWxob1pHVllZbE5oYUdWYVpuQm5XV05TWlZsb1dXZGFZbWhuVW1OdGFGcGpiV1JGYUd0bVYyWjZhR05sVm1aR1kxSmlWbWhRWVZobFJtaDNaRFZuVUdGcVpGbG9NMlZDYUVSbWIySklaMVpoYkdOd1pVWm1ZbVJWWVVKalkyVmtZMnhqU21KRFprWm9XR0pvYURKb1JXTnJabk5pV1dSUlpURmliR1pwWTJOaWJtSkNhRFJsUjJKclprNWhWV1pYWTJsalJtRXlaVU5oUkdGelpERmxTbUY0WjBwbFVtRkhaVkpqWTJZM1lsRm5kMk4zWW5CbVVtSlhaMFZoYldGQlpFUm9kR0ZJWkZSa00yRnpZMGhoVVdaV1pXeGlUR0ZQWlcxa1dtTjVZbFpvYUdkV1pIRmxZMk5zWkVabk0yRldaVEJsYjJaWFpHRm9WMmhGWWxkblZHSkhZbWhtVFdGTFpWUm1VbUp3WTBsa2JHTjRZbXBtWTJoRlkyTm1aR1pJWWxaaVZtWlRZbVJtUjJkMFpUWm5XV0V3WVRGbWNXWlRaSGRoT1dGVFpsSmxRMmgzWkVabVNtaFlabWRuWW1oRVlrWm1kMlJ6WkdaaGEyUlpaMFJsVldWU1pVSmhXR0pOWjFSbFkySXhZMDVrUldSR1psQmpXV1V4WTNCbE1XUmxaVVZrZEdVellXVm5iV2hzWTFobVYySlNZa0ZuV21GaFowRmlkR2RHWVU5bGVtaHpZbFJtWW1Nd1ltUmplbVpGWkRCbVpHTnZaa1psVldSb1lsRmlVbVI0YUVKa2RtSmhZbGhvZDJWV1pXRm9ibVJLWTFKaFpHTXhaR1JuUzJSR1pHMW1iR0ZvWkZOa2VHWkdaWEZvVUdWdFkxcGliV05aWjFoblFtVldhR0prTVdOd1lVaGlTR0pTWlRGbFpHaENhRzVoYjJWMVpFbGhhbVZOWTBOa1QyUkNaemxrWTJaVloyZGpNV0pyWWtGaE0yRTVZWFJpWldWRlpVbGlWbVJsYUVoaVdXWlRhRk5qTUdoV1pFNWlSMmhwYUUxbksyaFFaRWhtWjJGaFpWUm9NR0pyWmxSa1ptZFhaR2hrUTJabFlWSmtaMkU0WjBWaFVtUTVabFpuVTJneWFFVm5RMlpZWm10bVZXVlNhRVZrTW1jNVlVaG1UR05vWnpsamRHTmhZMEprVldneFpGZGxWbWgzWXpaaVQyZ3pZM1JuVG1WUVpUQm1RV0lyWkVaaVEyUk9ZMWhqUVdkc2FHdGhObVZPWlZab2FHTmFaMHRoTVdGR1oyMW1aV2d5WkVab00yaFZhRzVoVW1oM1pFUm1iR1p6WjJSbFdHUlJaMWxvZEdKUFozcGtPR2R6WVVOa01tZHZZMk5vVW1Wb1pYaGhWV1ZMWlhoaGRHUXlaMkZuTUdJNWFHWmhSbWhZYURoamFtaFlaVUZqT1dKa1lrSm5VbU5CWW5OaVRtWjZaMUprTTJaVGFFSmlPR2hXWlZkb2FXRnpaekJuUW1kRVoxRmtOMlZRWmxKaU5HaFhhRmhuYUdGalpXZGlWMkpSWWtGaGNHZElaREZrYjJWb1pVRmtlbU5hWlV4blMyRkRZalJqWkdkVFkyaGhTV1ZNYUZob2VXRlNZMjloVm1oQ1puaGxhbVJqYUdkaWNHSmtZVlpvTUdKd2FHVmxTbVpxWVVwalEyUldaV2xoWkdOYVprbG9NbWRhWnpoblkyUkdabU5vTkdoR2FGSmlWbVpYWlZkbVFXTmtaVkZpWW1Jd1prVmpibU5aWlhkbVoyTnRhRWRvUldOd2FGTm1VMlV3WWpWaVRXaGthR2xoU1doQlkwZGhlR1pWWjJwbFdHWkNhRXBrVEdGSFowVmlUV1ZTWWt4a1UyWkZabXRuVUdObllXdGtUMlZFWTBab2NHaHZhR1ZoUldkTlpEVmhVR1o2WkRWbVdHaE1hRWRvU21VeGFGbG5SV1ZqWlV0blRHTkdZa0psU0dWS1pXZGxaMlE1WWtob1VXYzRaVFptVldKQlpUVm9XbWhVWjJoaE5HSjFhRkJpVVdKV1kwSmlTbVpFWVUxbVkyRk5aMnhqWTJoWFpGTm9iV2RzWW1waFZtUkdZMnRvYVdkR1pHNW1NV1ZOWTFsaldHUkJZa2xsWW1SNFpHdG1SMlZUWkZabU5HUmtZVlZpYm1WM1kzVmlZMmd5WmsxaFYyaFJaVVZqYzJOUVkxVmxhR0pCWW5Ob1FXaDVZbFZtYVdaSVprRmpUbVZaWTFCbFdHZFpabEJuVTJWNFkyOW1WV1JHWVdwalFXYzFaazVrVTJKS1pVdGlWMkpIWVU1allXSmtaRk5vVm1Gb2FFdG1iR05DWTBSbVIyUjRaM2hqUldoSFkxUm9lR0ZtWkZKaFdHVkpabEpqUldWdFl6UmhRV1pRWXpGaWQyVkdZa3RrVm1ocllUaGlSMlJCWkRWb1JHUmhaVVJtWTJWQlkxWmtRMlZaWkVwaFNXZHBhRTFpUm1KQlpERm1aMlYxWjJKbU1XUkNZa3RrUzJoV1ltdG5SbWRMWlZOa1ZXTXhZa3BvVTJkQmFGUm1RMmRWWjJ0bFZtaFVZVlZqVG1kMFptWmpibUZOWldWbVZHVllaRlpsVEdGVFlrSm1OV0ptWTBwbloyVXdZalpoUVdOb1oyOWhUR1ZTWm01bFdXTmFhRmxuUTJoc1pXOW1UV1ZVWWxsbVpHZEhZMUpqVldaS1psTmlRbWc0WkZablYyVnFhREJuTTJoSFkwTm1UV2d3WTB0aVFtTnZZV05oUldKQmFFNWhiMk5CYUhka1NXRnFZbGhtYkdoRmFIVm1RMkYzWjJSalltZEVaR3BpYzJOaVprcGhlV0pKWW14b1dXSkNhRkZpWkdGTFlsaGlOR1pRWjBOb01XVkZhSEpqUTJjd1lYQmhaV1pLWW1wblNtVkRZMVpqYVdoa1pWcG5TV1l5WnpsbGFHWmxZVEZsVm1GMFkxZGthMkZWWjBkbVRtZDRaVmxqWkdSUFpHcGlaMlYxWjFsaGQyRnpaWE5vVTJaNFlrcGpVMkpXWTNsaloyRkVaazVuUkdKaloyVmpUbUpzWXpCbWVHTktaVkpvZDJWRlpsTmpRV2haWTFoaFNtSjVaa0ppSzJKRVozZGliMlpYWmtSbGVHVjNhRGxpWVdjeFpteGpMMkZoWVcxa1FtVmFhRVJtUldKQ1kyUmpTMmhXWVRoalFXRmFhREJoVm1aSVkxcGphMlJyWmpOaVYyaG5aVUZoZEdoU1pXaGtlR2haYUZSaGFHYzBZWGxsVUdGVFpsWm9RbUpQWTBSaWMyTm1aVTFvUm1nNVkySmpRV1pIWVVKamRtWlNaMnhuYTJOcFlWcGllbUZKWm01aVRXZDVhRkppWkdabWFHdG1lR05NWVVoaVVXTXhaV05tV0dkRFkwRmphMmRHWVdsamQyRmhaa3hpZUdWc1kzTmhSV0l3Wmsxb2FHaFNaVWhvT1doMFltVm9RV1pXWmxwaVRtWjZZbEpoVkdSQ1p6Sm9kMmRNWTBWbVJHRkdaemhqVUdkNVpFRmlUbWhFWjFGa2QyZEphR1JtVjJaV1lVeG1UV05FWVZsamJXTkdaRkpoYUdGalltSmhVMmhDWkVObFJtWnRZVVpuZFdkWVlrUmxPR1ZEWmxCblZtSlphRlptWTJWNlpEaGlUV0pHWkZGaWRHaFdZMDFuYW1aa1kxZGxWV1JwWjFsa09XWkZZbnBtV1dkaVpGQmpiR1UwWW1kalRXWm9abWhpWkdKTlprWmtWV1Z4WVVoaVVtaEpZMnRuUW1KNVkxbG9WV2RCYUVKaVRtRmlhRUpqZUdZd1pUVmlRMkpFWkZWaGJtRkRaVUpsYjJORlpGSmxhR1I0WVVWblltVkdhRkpvYm1SaVpEQmlaR1pNWm1GbVIyaE9ZbU5uUjJWbllqRmpUbUpFWkZKamIyVXlaVTlqZW1RNFl5dGtVV2RFYUhobVdtRkJZbTFvWkdoMlpsZGlSR2hSWWpkaVptWldhSE5rYldOQllVVmlSbU0zWkVWaGJHUkdhQ3RpVldjeFkxcGhiV1ZJWWtOa1ZtSlRaMFpvVjJSb1ozRmtWMlZCWTJoaVZtWldaV2xrVW1OdFpsUmtiR1ZDWnpObVJHSlZaa1ZqZG1KU1lXeGxhMlpGYUdObFYyUXhaSEJoUTJkRVpqUmtRV1pLWjBOblRXZHNaVTVuUldWQ2FIbGlTbUZXWTJSbFJtTkVZekJoU21kQ1pFNWhlV1J3YUhWb1lXZ3daRkprZUdOSVowVmpZMkppWjFobVEyTkdZVVZsWkdFelpHTmxjR2RRWW5obmQyaHFhRWxpYTJaQmFGTmxVV1I0WTFWaFdXTk5aRWhqU1dGUVkxbGhRbU5DWjFkbVYySXdaVFZrYTJSaVpHeG5hR1Z4WTB0bWFXZG5ZMFppUTJOc1pWWmlkMkZLWTJ4bE9XSk9aRVZpUVdSR1preGxabVJSWkVWbWVHaENaVEZpT0dkMFowaG1WbUZuWmtsb1ZtaG5aazVqTUdWbFpERmhPR2RoYUdWaWFXWndZa0ZqWm1oV2FEaG5ZV1JXWVhwbmMyVjVZbFZtTTJoRlptOWtVV2RIWkRSbldtSmphRk5pYUdOSVkwdGpVbVZvWjFSalFtUldaV2hrWkdWUllXbG5lR00yWTJGa1EyZENhRVZoV1dRd1psRmhabU5EWldkbVNtUjBhRkppZVdoWlpqTmlRV05DWWtab1VXRkZZMVJpYUdSSFpsRmlNbVJrWkZSaFFXVllhRUZsTUdKTllXMW1VbU5SWlVKa2EySkdaVXRqVEdKWFoyeG9XV2RaWW01a1RtWm5ZbGRvUldKc1pFbGpRMlZ0WTBsa1JHaFRZVVJrT1dOUllsRm9WR1YzWlVOb1IyZHNaekJuVkdOWlprZG5jR2haYUVOalJtZFdabGRrU21aSGFGcGhUMmRWYUVkblNtRnBZa05tVjJGYVlrVmhXR1pvWlRsbFoyaGlabWRsV21GQlptTm5hR014Wm5SaVRtVnBZVUZoYVdSQ1pHbGhiMkY2WWtOb1ZXTnJaRlprUzJkclpFbG9jMkpsWlZSbmQyZG9aMWRuV0dKSmFFOW5RbWN3WWtwa1NXRmtabFpsTkdnd1ptWm5NV2gwWkU1bVFtTlRaVUppYW1GSFlVVm5UbWhKWmtGbFoyaHpaSGhsVG1GNFpHdGxLMlZJWTBWaGMyWXlZVk5vYVdVeFozRmtSR0pVWkZabWRXZGpZbEpoU21SU2FFRmtSV1JHWkRWblIyZEdZa3BrYldaSFpFSm5lR0l2WkVoa01tRlZZV0ZoVkdaSFpsWm1SbUpEWWxGaFNXaFZhRlpvVVdNNFpEaG5RV1pvWWpCblZtWlpZbWRtYkdOc1pVVm1VV05uYUVOb1kyRlRZMUZvWldoRFowUmhOR1ZHWjJSbVEySk9aVzloWldkV1kzQm5MMkZCWW14bFFXaFhZVVZsUVdKVlpsUm9TbWhxWm1ka0wySkRaR2RoVFdjcllWRmxNMlpDWWtOblUyUklabGxpUzJWT1lrZGtTbVJMWTBKaWVHVXhabTlpVEdOblkwNWtXV2REWlRCamNHaFJhR0ppVjJaSlkyOW1ZV1JGWTAxaFZHTkRZVUZvWjJWdFoxQmxVMlJKWXpWalRHTnRaVVZrYjJKVFoxVmlaMk5NWWt4bGEyVnNZVkpqWkdJeFpGRm1ZbVJtWlhoa09XVnBaRUZvVVdKT1kyaG9TR2hGWTJSa1FXTklaWGRqYkdWelpHVmhiR0YwWVVaalMyZDVZVUZtUTJKTlpXcGxOR1pGYUZGaWJXaEZZV1ZqUW1oclowSmlNR0ZWWkdsa1VtZDVZV1ZtVkdkV1kyUmtabU4zYUVwa1YyaEVZakZqZEdOaloxZG5NMmgwWnpkbFNXSnBaMHBvUldGWmFGSm9kR0ZQYUVGb1JXRk5aMmhpU21WVVpHZGlhV1ZYWkdwbk1HVkdhRWxrUjJkU1pGVmtRMlZSYUhob1ltVklaRWRsY0dGcFlrdG9SMkZHWW1KaVZXVnJZMEpsVkdabFlXMWxaMk5VWjA1alYyUkZZbWRuUldSV2FFWm9kbVpEWWxSa1FXZGxZVlpvTTJWellVRm1RbVpZWkhoallXUmlZbWRvTkdVMFlXVmtSV2N4YUdKb1UyaFdaRTFtUW1WS1pVUmtaR0ptWWxaamVtWm5aak5qUldaRVozaGxUV1JFWWpGb2IyRTJaRXBsUW1KYVkyNWlaR05yWW5oaWVXTktaRU5pVVdNd1lrVmpXR0p2Wm1obFVXWkZZakZpU1dSQ2FHaGljR1o2WkVabWJtaEphR05oV0dGVVkwcGtabVJVWTFKaVpHRlZZa2xvUm1WcllVNWpZMk5SWmtWaFMyRllaVVJqTkdGcFprWm9WR1paWlZGbFUyWnNZVUprTldOTVkzcGlUV1I0WkVoaFFXVkJaMEpuVldOblkzQmxiMlpGWlRKblVtRjBaMlZqZUdoTlpWbG1WV2Q0WmtGaWVtSmtZa1puVldFelowSm5WbWRGWjNGaVFXWjZZMk5qUjJWUVprZG9PV0pHYUVoaFVXVk5aRkJtUm1oNFpuUm5ObVZMWWxGb1ZXRjVaVnBsYUdoTmFIbGlSV1ozWVRSaVJHVkZaVzFpV21GR1kxVmhRMk01YUZOa1RXUnRZa1ZsWTJObFprWmplR1J0WTFGbVVtTndhRUZpVVdaR1pqQmtkR1JhWlVSbVRtaDJaRWxoVm1KNGFIcG1VbVI0WlRob1MyZEJZV2xsVldaSloxbG5WMmhLWkdKaVUyWjNZelJuSzJGSmFERmtkMlpKWmxSaVFXRnZabGRvVEdaSVpFbGxiMlZMWjBKa1FXUlNZa05pUVdWclpuaG9VR0puWVZaamEyTmpabTFsUVdkTlprSmtSbUphWVUxb1NtRnJabWRuVW1KS1pteGlOV1JrWTJKamVtWm9ZMnBsVTJNeFkwbG5jV1ZDYUVaaVJtaFpaRlJoYTJOelpIZGlUV1ozYUZGaFZtZEdaMWRoU1dOS1kwMWhNR1ZWWlU5alFXaElaR3htZW1oRFpESmxUbU5vWTBKbWJtaEtZUzlvWkdodFpVWm5UbWhsWkhsb1FXTXhZV1JqYldkUlpXMWpSbVZ1WTA1aWJtVm1ZbGhqUW1KVlltWmlSbUpPWW1sblNHVnVZM05rYkdWRFkyZGtPV040YUZoaWEyRlZaRWhqWW1ZeWFGWm1ZbVZOWlZWbmIySnJhRXRpVTJoNFp6Rm5abUpJWVdObFoyZENaV2RuVldGWFprOWpaMlJSWkZSaldtWlhaVzlsWldaSFlrRm1kR2RqWTFob1YyaHJZazFpVTJKWFltZGhRMlJCWVc1blkyZHJaRTFsUm1WclpVTmtSMkl5WjFablVHTllaMFZuUVdKRFpXTm9NbWhLWkVGbVFtSlJZVEJqYTJkSlpGSm9WV1ZGWTBSalVtUkdaMnhtV21GbllXTmlTMmRrYUZGa1NXWnNZa1ZpZUdkSllXZGtTV1puWWs1blpHSlRaSGhoYjJGS2FGRmtWV0pTWVhSbFptVjRZemhsY21GSVoyaGtaMlpPWkdGa01XUlZZMk5qV1djeGFEVm9iV0phWTBWaWNHZGhaVUppTW1OM1lXTm1WMmg2WVhSalYyRkdZMEZvZEdGc1kyWm5ibWRrWTJsa1dHUnNZVTFsZW1oRllrRmxSV0YxYUUxb1VtZFdaamxuV21kV1owRm1WbVJZWmpGbk5XaDJZa0poTUdaS1pqUmlRMmRCWjFwb04yVllaMjFoU1daSVlrTm1RbVJDWlRsalRHUkVaVTFqWldGR1pESmljR1F4WWxKaWQySlpaVnBvUjJKb1pWVmlWbVZRWldsaldXTlNaMFpsU0dOd1pIQmtRMlZFWVRSbFFtWktZa2hrWkdFMFoySmpVbUpOWmpaaVJtWkJabEprU21aV1kwSmxiMlpqWVdablIyVkpabWhuVFdaUllXZG1LMkZJWm14a01HUmpaMFZsUW1aMFlXTmpUR2hxWTBwalFXSkNaR2RrVG1WdllWcG9RV05yWkZka1FXZDRZa1ZsWTJST1pXbGtZMlZwWjFCamEyUm5aamhrVjJaUmFFcGtaMlZQWkd4aGNHaDFZbU5vYldWQ2FFMWtRbWhHWWxwbFRXaEtZMnRoWjJSU1pFcG5iR0UxWldSaFltSjZaR2huYW1WVFpERm5XbVEzWTBKb01XUkNaMWxsVDJoQlkwRmpLMkZaWWxWbVZXaERabU5uTW1kamFGTmtaV0Y1WW1obVlXUlVhRzVuZDJKc1lrRmlWbVV4YUROalFtSkhaRGhqT1dGT1lucG1SV1pJWkdKaWVXRldZVmhuVW1oUlpHZG9XR0ZSWlRKa01HVjJaRkJvU0dVMGFIbGhaV0pvYUUxaFlXZEZZMEZvUm1FNVpWSmpTR2M1WlhSaVFXaEJaMlJrUW1KTVpWTmpVbWhqWlZOak1taGtaMVJuUVdSWVpVNW1hR2haWlcxaWFHRldZVUpqVW1aM1pGVmlUbVZwWjNkbVEyRlBaMFJrVW1Ob1lVdG1SV0pzWTBsaVEyZElaM05vV21SWVoxaGpZMkpDWjBoamVHWkNhRmhsUzJSM1lscGpWMmhtWmtab1JXTlBZMUpvUldNMVpreG1SMlJYYUVsblQyRkNaVWhoYkdGbllsTmtWMkU1WTBoblZtZ3laMnhtTldoUFpWRm5ZMlJNYUdSaVFXVjRhQ3RqWkdadFkzaGhaMmRFWmxoa05XZEpZa0puVVdaYVlVeGlSbUZCWWtKaU1HRkdZVWRvYjJVM1oxaGhNMk5KWms1a1IyaFZZV05rUldSbFlsUmhUbVJ0WlV4amEyWmpaRUZtUW1OSFpFVmhlV2hXWjBSb1FtSnVaVlZuZDJSR1lucG9XV2hYWjBwaWIyRlZZVVpoVFdjd1kxRmpVMmRqWXpsaVNHTjVZa2xsYjJaS1pURm1ZMmh0WTBGalJXUkdaelptUldoM1kwNWpOV2hDWkVGbVpHY3daVWRtYm1RNVpITm9WbVo2WWtGaVJXRlhZVEJpU21GbVpFZGhRbVZzWjJsbVJHWm5ZbHBrTldKYWFGVmhhR2hwWVVabVJXWmFhSEJrWldWVVptdG5SR1JZYUVobFJtVlNZMlJvTTJOYVpHOWxZV2QzWVdkb00yVkJaV2hqT1dKUVpWaG9RV1paWVZkblRXVnBZMVppY0daaFpqQmtVbUo0WWxsbVZXTkZaVmhrVW1JeVpsRmtkR0ZLWlVOblVXZFVZVWRpZUdFeFluVm9XV2hvWlhSaVJtUlZaMmRvZDJGUlpreGtTR1J2WnpKbFRtTnJaa1psV1dSVFpWWmhjR1kyWW1SbU1HZHpaa1JtVFdOcFlVRmlSV1ZYWWxWbFpHWlJaa3BrUldOa1lrWm9UR05XYUZGbFZHVlBaSGRuT0dVeVowVm9lR1ZGWm5CalYyTlNaVEJpVm1kU1pUQmhTV1pxWTBwbFoyRk9Za2hrU21ORWFHTm1WbWhrWjNobVZXTlVaMFpqYVdaM1pqTm1WbU14WTFKa1RXUlFabWRtUFdjOUFIVnlWRXRhUTIxS2F5OXlNRVJzVmxaeVlqVllWakpyT0dONVFsSlFVR2hqYVhwVldHdFhXa2wzZVRBNVNDdGxUekV6VDJkVE0yZElOV2h3WnpCR1VuWTFTbEp4VjNkcU5rbEJOamhHTkVaR1FWQjFUM3BuUFQwQU1ERXlNelExTmpjNE9RQkRMbFZVUmkwNEFFRkNRMFJGUmtkSVNVcExURTFPVDFCUlVsTlVWVlpYV0ZsYVlXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhvd01USXpORFUyTnpnNUt5OEFMZ0FvYm5Wc2JDa0FVSFZ5WlNCMmFYSjBkV0ZzSUdaMWJtTjBhVzl1SUdOaGJHeGxaQ0VBYkdsaVl5c3JZV0pwT2lBQUFBQUFBQUFBbkxNRUFHVUFBQUF5TmxCeWIzQmhaMkYwWldSUWIzTnBkR2x2YmxCeWIzQmxjblI1QUFBQUFHejlCQUI4c3dRQTJMWUVBRkF5TmxCeWIzQmhaMkYwWldSUWIzTnBkR2x2YmxCeWIzQmxjblI1QUFBQU5Qd0VBS2l6QkFBQUFBQUFuTE1FQUZCTE1qWlFjbTl3WVdkaGRHVmtVRzl6YVhScGIyNVFjbTl3WlhKMGVRQUFOUHdFQU5pekJBQUJBQUFBbkxNRUFNaXpCQUF3K3dRQXlMTUVBS1M0QkFCcGFXbHBBR1JwYVFCMmFXbGtBRkF4TmtWdWRHbDBlVU52Ykd4bFkzUnBiMjRBQUFBMC9BUUFKclFFQUFBQUFBRG90UVFBVUVzeE5rVnVkR2wwZVVOdmJHeGxZM1JwYjI0QUFBQUFOUHdFQUV5MEJBQUJBQUFBNkxVRUFEeTBCQUJndHdRQUFBQUFBTmkyQkFCbUFBQUFNVFpRYjNOcGRHbHZibEJ5YjNCbGNuUjVBRkJMTVRaUWIzTnBkR2x2YmxCeWIzQmxjblI1QURUOEJBQ2J0QVFBQVFBQUFOaTJCQURndGdRQVpQc0VBT0MyQkFDVSt3UUFORUpoYzJVQUFBQXMvUVFBMExRRUFGQTBRbUZ6WlFBQU5Qd0VBT0MwQkFBQUFBQUEyTFFFQUZCTE5FSmhjMlVBTlB3RUFQaTBCQUFCQUFBQTJMUUVBSFlBQUFEb3RBUUFBQUFBQU5pMEJBQm5BQUFBYUFBQUFHa0FBQUJndHdRQUFMVUVBRGhUZFdKamJHRnpjd0FBQUd6OUJBQTB0UVFBMkxRRUFGQTRVM1ZpWTJ4aGMzTUFBRFQ4QkFCTXRRUUFBQUFBQUVDMUJBQlFTemhUZFdKamJHRnpjd0EwL0FRQWFMVUVBQUVBQUFCQXRRUUFXTFVFQUREN0JBQUFBQUFBUUxVRUFHY0FBQUJxQUFBQWF3QUFBR0MzQkFCMHRRUUEwUG9FQU5pMEJBQUFBQUFBOExVRUFHd0FBQUJ0QUFBQWFRQXhObEJ2YzJsMGFXOXVVbVZuYVhOMGNua0FNVFpGYm5ScGRIbERiMnhzWldOMGFXOXVBQ3o5QkFEVnRRUUFiUDBFQU1LMUJBRG90UVFBQUFBQUFPaTFCQUJ1QUFBQWJ3QUFBRkF4TmxCdmMybDBhVzl1VW1WbmFYTjBjbmtBTlB3RUFBeTJCQUFBQUFBQThMVUVBRkJMTVRaUWIzTnBkR2x2YmxKbFoybHpkSEo1QUFBQUFEVDhCQUF3dGdRQUFRQUFBUEMxQkFCcGFRQjJhUUFBQUNDMkJBQmd0d1FBYVdscEFHVDdCQUJJdGdRQTBQb0VBQ0MyQkFCUSt3UUFkbWxwYVFBQUFBRFErZ1FBSUxZRUFIWnBhUUJrK3dRQUlMWUVBSlQ3QkFCcGFXbGtBRUd3N1JJTGd3aGsrd1FBSUxZRUFPQzJCQUNVK3dRQTZQb0VBRkF4TmxCdmMybDBhVzl1VUhKdmNHVnlkSGtBTFAwRUFJaTBCQUEwL0FRQXhMWUVBQUFBQUFEWXRnUUFhV2xwYVdScEFBQmsrd1FBSUxZRUFORDZCQUF3K3dRQU1Qc0VBSlQ3QkFBdyt3UUFNUHNFQUhacGFXbGthV2tBVGxOME0xOWZNakV5WW1GemFXTmZjM1J5YVc1blNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVTVUWHpsaGJHeHZZMkYwYjNKSlkwVkZSVVVBQUN6OUJBQWd0d1FBVGxOME0xOWZNakV5WW1GemFXTmZjM1J5YVc1blNXaE9VMTh4TVdOb1lYSmZkSEpoYVhSelNXaEZSVTVUWHpsaGJHeHZZMkYwYjNKSmFFVkZSVVVBQUN6OUJBQm90d1FBVGxOME0xOWZNakV5WW1GemFXTmZjM1J5YVc1blNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVTVUWHpsaGJHeHZZMkYwYjNKSmQwVkZSVVVBQUN6OUJBQ3d0d1FBVGxOME0xOWZNakV5WW1GemFXTmZjM1J5YVc1blNVUnpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbEVjMFZGVGxOZk9XRnNiRzlqWVhSdmNrbEVjMFZGUlVVQUFBQXMvUVFBK0xjRUFFNVRkRE5mWHpJeE1tSmhjMmxqWDNOMGNtbHVaMGxFYVU1VFh6RXhZMmhoY2w5MGNtRnBkSE5KUkdsRlJVNVRYemxoYkd4dlkyRjBiM0pKUkdsRlJVVkZBQUFBTFAwRUFFUzRCQUJPTVRCbGJYTmpjbWx3ZEdWdU0zWmhiRVVBQUN6OUJBQ1F1QVFBVGpFd1pXMXpZM0pwY0hSbGJqRXhiV1Z0YjNKNVgzWnBaWGRKWTBWRkFBQXMvUVFBckxnRUFFNHhNR1Z0YzJOeWFYQjBaVzR4TVcxbGJXOXllVjkyYVdWM1NXRkZSUUFBTFAwRUFOUzRCQUJPTVRCbGJYTmpjbWx3ZEdWdU1URnRaVzF2Y25sZmRtbGxkMGxvUlVVQUFDejlCQUQ4dUFRQVRqRXdaVzF6WTNKcGNIUmxiakV4YldWdGIzSjVYM1pwWlhkSmMwVkZBQUFzL1FRQUpMa0VBRTR4TUdWdGMyTnlhWEIwWlc0eE1XMWxiVzl5ZVY5MmFXVjNTWFJGUlFBQUxQMEVBRXk1QkFCT01UQmxiWE5qY21sd2RHVnVNVEZ0WlcxdmNubGZkbWxsZDBscFJVVUFBQ3o5QkFCMHVRUUFUakV3WlcxelkzSnBjSFJsYmpFeGJXVnRiM0o1WDNacFpYZEpha1ZGQUFBcy9RUUFuTGtFQUU0eE1HVnRjMk55YVhCMFpXNHhNVzFsYlc5eWVWOTJhV1YzU1d4RlJRQUFMUDBFQU1TNUJBQk9NVEJsYlhOamNtbHdkR1Z1TVRGdFpXMXZjbmxmZG1sbGQwbHRSVVVBQUN6OUJBRHN1UVFBVGpFd1pXMXpZM0pwY0hSbGJqRXhiV1Z0YjNKNVgzWnBaWGRKZUVWRkFBQXMvUVFBRkxvRUFFNHhNR1Z0YzJOeWFYQjBaVzR4TVcxbGJXOXllVjkyYVdWM1NYbEZSUUFBTFAwRUFEeTZCQUJPTVRCbGJYTmpjbWx3ZEdWdU1URnRaVzF2Y25sZmRtbGxkMGxtUlVVQUFDejlCQUJrdWdRQVRqRXdaVzF6WTNKcGNIUmxiakV4YldWdGIzSjVYM1pwWlhkSlpFVkZBQUFzL1FRQWpMb0VBRUhBOVJJTFlFKzdZUVZuck4wL0dDMUVWUHNoNlQrYjlvSFNDM1B2UHhndFJGVDdJZmsvNG1VdkluOHJlandIWEJRekpxYUJQTDNMOEhxSUIzQThCMXdVTXlhbWtUd1lMVVJVK3lIcFB4Z3RSRlQ3SWVtLzBpRXpmM3paQWtEU0lUTi9mTmtDd0FCQnIvWVNDK2dWZ0JndFJGVDdJUWxBR0MxRVZQc2hDY0FEQUFBQUJBQUFBQVFBQUFBR0FBQUFnL21pQUVST2JnRDhLUlVBMFZjbkFOMDA5UUJpMjhBQVBKbVZBRUdRUXdCalVmNEF1OTZyQUxkaHhRQTZiaVFBMGsxQ0FFa0c0QUFKNmk0QUhKTFJBT3NkL2dBcHNSd0E2RDZuQVBVMWdnQkV1eTRBbk9tRUFMUW1jQUJCZmw4QTFwRTVBRk9ET1FDYzlEa0FpMStFQUNqNXZRRDRIenNBM3YrWEFBK1lCUUFSTCs4QUNscUxBRzBmYlFEUGZqWUFDY3NuQUVaUHR3Q2VaajhBTGVwZkFMb25kUURsNjhjQVBYdnhBUGM1QndDU1Vvb0ErMnZxQUIreFh3QUlYWTBBTUFOV0FIdjhSZ0R3cTJzQUlMelBBRGIwbWdEanFSMEFYbUdSQUFnYjVnQ0ZtV1VBb0JSZkFJMUFhQUNBMlA4QUozTk5BQVlHTVFES1ZoVUF5YWh6QUh2aVlBQnJqTUFBR2NSSEFNMW53d0FKNk53QVdZTXFBSXQyeEFDbUhKWUFSSy9kQUJsWDBRQ2xQZ1VBQlFmL0FETitQd0RDTXVnQW1FL2VBTHQ5TWdBbVBjTUFIbXZ2QUovNFhnQTFIem9BZi9MS0FQR0hIUUI4a0NFQWFpUjhBTlZ1K2dBd0xYY0FGVHREQUxVVXhnRERHWjBBcmNUQ0FDeE5RUUFNQUYwQWhuMUdBT054TFFDYnhwb0FNMklBQUxUU2ZBQzBwNWNBTjFYVkFOYys5Z0NqRUJnQVRYYjhBR1NkS2dCdzE2c0FZM3o0QUhxd1Z3QVhGZWNBd0VsV0FEdlcyUUNuaERnQUpDUExBTmFLZHdCYVZDTUFBQis1QVBFS0d3QVp6dDhBbnpIL0FHWWVhZ0NaVjJFQXJQdEhBSDUvMkFBaVpiY0FNdWlKQU9hL1lBRHZ4TTBBYkRZSkFGMC8xQUFXM3RjQVdEdmVBTjZia2dEU0lpZ0FLSWJvQU9KWVRRREd5aklBQ09NV0FPQjl5d0FYd0ZBQTh4Mm5BQmpnV3dBdUV6UUFneEppQUlOSUFRRDFqbHNBcmJCL0FCN3A4Z0JJU2tNQUVHZlRBS3JkMkFDdVgwSUFhbUhPQUFvb3BBRFRtYlFBQnFieUFGeDNmd0Nqd29NQVlUeUlBSXB6ZUFDdmpGb0FiOWU5QUMybVl3RDB2OHNBallIdkFDYkJad0JWeWtVQXl0azJBQ2lvMGdEQ1lZMEFFc2wzQUFRbUZBQVNScHNBeEZuRUFNakZSQUJOc3BFQUFCZnpBTlJEclFBcFNlVUEvZFVRQUFDKy9BQWVsTXdBY003dUFCTSs5UURzOFlBQXMrZkRBTWY0S0FDVEJaUUF3WEUrQUM0SnN3QUxSZk1BaUJLY0FLc2dld0F1dFo4QVI1TENBSHN5THdBTVZXMEFjcWVRQUd2bkh3QXh5NVlBZVJaS0FFRjU0Z0QwMzRrQTZKU1hBT0xtaEFDWk1aY0FpTzFyQUY5Zk5nQzcvUTRBU0pxMEFHZWtiQUJ4Y2tJQWpWMHlBSjhWdUFDODVRa0FqVEVsQVBkME9RQXdCUndBRFF3QkFFc0lhQUFzN2xnQVI2cVFBSFRuQWdDOTFpUUE5MzJtQUc1SWNnQ2ZGdThBanBTbUFMU1I5Z0RSVTFFQXp3cnlBQ0NZTXdEMVMzNEFzbU5vQU4wK1h3QkFYUU1BaFlsL0FGVlNLUUEzWk1BQWJkZ1FBREpJTWdCYlRIVUFUbkhVQUVWVWJnQUxDY0VBS3ZWcEFCUm0xUUFuQjUwQVhRUlFBTFE3MndEcWRzVUFoL2tYQUVscmZRQWRKN29BbG1rcEFNYk1yQUN0RkZRQWtPSnFBSWpaaVFBc2NsQUFCS1MrQUhjSGxBRHpNSEFBQVB3bkFPcHhxQUJtd2trQVpPQTlBSmZkZ3dDalA1Y0FRNVQ5QUEyR2pBQXhRZDRBa2ptZEFOMXdqQUFYdCtjQUNOODdBQlUzS3dCY2dLQUFXb0NUQUJBUmtnQVA2TmdBYklDdkFOdi9Td0E0a0E4QVdSaDJBR0tsRlFCaHk3c0F4NG01QUJCQXZRRFM4Z1FBU1hVbkFPdTI5Z0RiSXJzQUNoU3FBSWttTHdCa2czWUFDVHN6QUE2VUdnQlJPcW9BSGFQQ0FLL3RyZ0JjSmhJQWJjSk5BQzE2bkFEQVZwY0FBeitEQUFudzlnQXJRSXdBYlRHWkFEbTBCd0FNSUJVQTJNTmJBUFdTeEFER3JVc0FUc3FsQUtjM3pRRG1xVFlBcTVLVUFOMUNhQUFaWTk0QWRvenZBR2lMVWdEODJ6Y0FycUdyQU44Vk1RQUFycUVBRFB2YUFHUk5aZ0R0QmJjQUtXVXdBRmRXdndCSC96b0Fhdm01QUhXKzh3QW9rOThBcTRBd0FHYU05Z0FFeXhVQStpSUdBTm5rSFFBOXM2UUFWeHVQQURiTkNRQk9RdWtBRTc2a0FETWp0UUR3cWhvQVQyV29BTkxCcFFBTFB3OEFXM2pOQUNQNWRnQjdpd1FBaVJkeUFNYW1Vd0J2YnVJQTcrc0FBSnRLV0FERTJyY0FxbWE2QUhiUHp3RFJBaDBBc2ZFdEFJeVp3UUREclhjQWhramFBUGRkb0FER2dQUUFyUEF2QU4zc21nQS9YTHdBME41dEFKREhId0FxMjdZQW95VTZBQUN2bWdDdFU1TUF0bGNFQUNrdHRBQkxnSDRBMmdlbkFIYXFEZ0I3V2FFQUZoSXFBTnkzTFFENjVmMEFpZHYrQUltKy9RRGtkbXdBQnFuOEFENkFjQUNGYmhVQS9ZZi9BQ2crQndCaFp6TUFLaGlHQUUyOTZnQ3o1NjhBajIxdUFKVm5PUUF4djFzQWhOZElBRERmRmdESExVTUFKV0UxQU1sd3pnQXd5N2dBdjJ6OUFLUUFvZ0FGYk9RQVd0MmdBQ0Z2UndCaUV0SUF1VnlFQUhCaFNRQnJWdUFBbVZJQkFGQlZOd0FlMWJjQU0vSEVBQk51WHdCZE1PUUFoUzZwQUIyeXd3Q2hNallBQ0xla0FPcXgxQUFXOXlFQWoybmtBQ2YvZHdBTUE0QUFqVUF0QUUvTm9BQWdwWmtBczZMVEFDOWRDZ0MwK1VJQUVkckxBSDIrMEFDYjI4RUFxeGU5QU1xaWdRQUlhbHdBTGxVWEFDY0FWUUIvRlBBQTRRZUdBQlFMWkFDV1FZMEFoNzdlQU5yOUtnQnJKYllBZTRrMEFBWHovZ0M1djU0QWFHcFBBRW9xcUFCUHhGb0FMZmk4QU5kYW1BRDB4NVVBRFUyTkFDQTZwZ0NrVjE4QUZEK3hBSUE0bFFETUlBRUFjZDJHQU1uZXRnQy9ZUFVBVFdVUkFBRUhhd0NNc0t3QXNzRFFBRkZWU0FBZSt3NEFsWExEQUtNR093REFRRFVBQnR4N0FPQkZ6QUJPS2ZvQTFzcklBT2p6UVFCOFpONEFtMlRZQU5tK01RQ2tsOE1BZDFqVUFHbmp4UUR3MmhNQXVqbzhBRVlZUmdCVmRWOEEwcjMxQUc2U3hnQ3NMbDBBRGtUdEFCdytRZ0JoeEljQUtmM3BBT2ZXOHdBaWZNb0FiNUUxQUFqZ3hRRC8xNDBBYm1yaUFMRDl4Z0NUQ01FQWZGMTBBR3V0c2dETmJwMEFQbko3QU1ZUmFnRDN6NmtBS1hQZkFMWEp1Z0MzQUZFQTRySU5BSFM2SkFEbGZXQUFkTmlLQUEwVkxBQ0JHQXdBZm1hVUFBRXBGZ0NmZW5ZQS9mMitBRlpGN3dEWmZqWUE3TmtUQUl1NnVRREVsL3dBTWFnbkFQRnV3d0NVeFRZQTJLaFdBTFNvdFFEUHpBNEFFb2t0QUc5WE5BQXNWb2tBbWM3akFOWWd1UUJyWHFvQVBpcWNBQkZmekFEOUMwb0E0ZlQ3QUk0N2JRRGloaXdBNmRTRUFQeTBxUUR2N3RFQUxqWEpBQzg1WVFBNElVUUFHOW5JQUlIOENnRDdTbW9BTHh6WUFGTzBoQUJPbVl3QVZDTE1BQ3BWM0FEQXh0WUFDeG1XQUJwd3VBQnBsV1FBSmxwZ0FEOVM3Z0IvRVE4QTlMVVJBUHpMOVFBMHZDMEFOTHp1QU9oZHpBRGRYbUFBWjQ2YkFKSXo3d0RKRjdnQVlWaWJBT0ZYdkFCUmc4WUEyRDRRQU4xeFNBQXRITjBBcnhpaEFDRXNSZ0JaODljQTJYcVlBSjVVd0FCUGh2b0FWZ2I4QU9WNXJnQ0pJallBT0swaUFHZVQzQUJWNktvQWdpWTRBTXJubXdCUkRhUUFtVE94QUtuWERnQnBCVWdBWmJMd0FIK0lwd0NJVEpjQStkRTJBQ0dTc3dCN2drb0FtTThoQUVDZjNBRGNSMVVBNFhRNkFHZnJRZ0QrbmQ4QVh0UmZBSHRucEFDNnJIb0FWZmFpQUN1SUl3QkJ1bFVBV1c0SUFDRXFoZ0E1UjRNQWllUG1BT1dlMUFCSiswQUEvMWJwQUJ3UHlnREZXWW9BbFBvckFOUEJ4UUFQeGM4QTIxcXVBRWZGaGdDRlEySUFJWVk3QUN4NWxBQVFZWWNBS2t4N0FJQXNHZ0JEdnhJQWlDYVFBSGc4aVFDb3hPUUE1ZHQ3QU1RNndnQW05T29BOTJlS0FBMlN2d0Jsb3lzQVBaT3hBTDE4Q3dDa1Vkd0FKOTFqQUduaDNRQ2FsQmtBcUNtVkFHak9LQUFKN2JRQVJKOGdBRTZZeWdCd2dtTUFmbndqQUErNU1nQ245WTRBRkZibkFDSHhDQUMxblNvQWIzNU5BS1VaVVFDMSthc0FndC9XQUpiZFlRQVdOZ0lBeERxZkFJT2lvUUJ5N1cwQU9ZMTZBSUs0cVFCck1sd0FSaWRiQUFBMDdRRFNBSGNBL1BSVkFBRlpUUURnY1lBQVFhT01Fd3QrUVBzaCtUOEFBQUFBTFVSMFBnQUFBSUNZUnZnOEFBQUFZRkhNZURzQUFBQ0FneHZ3T1FBQUFFQWdKWG80QUFBQWdDS0M0ellBQUFBQUhmTnBOUmtBQ2dBWkdSa0FBQUFBQlFBQUFBQUFBQWtBQUFBQUN3QUFBQUFBQUFBQUdRQVJDaGtaR1FNS0J3QUJBQWtMR0FBQUNRWUxBQUFMQUFZWkFBQUFHUmtaQUVHeGpSTUxJUTRBQUFBQUFBQUFBQmtBQ2cwWkdSa0FEUUFBQWdBSkRnQUFBQWtBRGdBQURnQkI2NDBUQ3dFTUFFSDNqUk1MRlJNQUFBQUFFd0FBQUFBSkRBQUFBQUFBREFBQURBQkJwWTRUQ3dFUUFFR3hqaE1MRlE4QUFBQUVEd0FBQUFBSkVBQUFBQUFBRUFBQUVBQkIzNDRUQ3dFU0FFSHJqaE1MSGhFQUFBQUFFUUFBQUFBSkVnQUFBQUFBRWdBQUVnQUFHZ0FBQUJvYUdnQkJvbzhUQ3c0YUFBQUFHaG9hQUFBQUFBQUFDUUJCMDQ4VEN3RVVBRUhmanhNTEZSY0FBQUFBRndBQUFBQUpGQUFBQUFBQUZBQUFGQUJCalpBVEN3RVdBRUdaa0JNTC93SVZBQUFBQUJVQUFBQUFDUllBQUFBQUFCWUFBQllBQURBeE1qTTBOVFkzT0RsQlFrTkVSVWIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FBRUNBd1FGQmdjSUNmLy8vLy8vLy84S0N3d05EZzhRRVJJVEZCVVdGeGdaR2hzY0hSNGZJQ0VpSS8vLy8vLy8vd29MREEwT0R4QVJFaE1VRlJZWEdCa2FHeHdkSGg4Z0lTSWovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy93QUJBZ1FIQXdZRkFBQUFBQUFBQU5GMG5nQlhuYjBxZ0hCU0QvLy9QaWNLQUFBQVpBQUFBT2dEQUFBUUp3QUFvSVlCQUVCQ0R3Q0FscGdBQU9IMUJSZ0FBQUExQUFBQWNRQUFBR3YvLy8vTysvLy9rci8vL3dCQnZKTVRDd0ZTQUVIa2t4TUxDUC8vLy8vLy8vLy9BRUdzbEJNTCtBbUV6QVFBZGdBQUFIY0FBQUI0QUFBQWVRQUFBSG9BQUFCN0FBQUFmQUFBQUgwQUFBQitBQUFBZndBQUFJQUFBQUNCQUFBQWdnQUFBSU1BQUFBQUFBQUFETTRFQUlRQUFBQ0ZBQUFBaGdBQUFJY0FBQUNJQUFBQWlRQUFBSW9BQUFDTEFBQUFqQUFBQUkwQUFBQ09BQUFBandBQUFKQUFBQUNSQUFBQVRsTjBNMTlmTWpsaVlYTnBZMTlwYjNOSlkwNVRYekV4WTJoaGNsOTBjbUZwZEhOSlkwVkZSVVVBVGxOME0xOWZNakUxWW1GemFXTmZjM1J5WldGdFluVm1TV05PVTE4eE1XTm9ZWEpmZEhKaGFYUnpTV05GUlVWRkFFNVRkRE5mWHpJeE0ySmhjMmxqWDJsemRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFUbE4wTTE5Zk1qRXpZbUZ6YVdOZmIzTjBjbVZoYlVsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSUUJPVTNRelgxOHlPV0poYzJsalgybHZjMGwzVGxOZk1URmphR0Z5WDNSeVlXbDBjMGwzUlVWRlJRQk9VM1F6WDE4eU1UVmlZWE5wWTE5emRISmxZVzFpZFdaSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVVBVGxOME0xOWZNakV6WW1GemFXTmZhWE4wY21WaGJVbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlFCT1UzUXpYMTh5TVROaVlYTnBZMTl2YzNSeVpXRnRTWGRPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTWGRGUlVWRkFFNVRkRE5mWHpJNGFXOXpYMkpoYzJWRkFBQUFBQUNNekFRQWRnQUFBSklBQUFDVEFBQUFlUUFBQUhvQUFBQjdBQUFBZkFBQUFIMEFBQUIrQUFBQWxBQUFBSlVBQUFDV0FBQUFnZ0FBQUlNQUFBQk9VM1F6WDE4eU1UQmZYM04wWkdsdVluVm1TV05GUlFBcy9RUUEwc29FQUd6OUJBQnN6QVFBaE13RUFBZ0FBQUFBQUFBQXdNd0VBSmNBQUFDWUFBQUErUC8vLy9qLy8vL0F6QVFBbVFBQUFKb0FBQURZK3dRQUE4c0VBQUFBQUFBQkFBQUE2TXdFQUFQMC8vOEFBQUFBNk13RUFKc0FBQUNjQUFBQWJQMEVBS2pLQkFBRXpRUUFBQUFBQUFUTkJBQ2RBQUFBbmdBQUFDejlCQUFhekFRQUFBQUFBR2pOQkFCMkFBQUFud0FBQUtBQUFBQjVBQUFBZWdBQUFIc0FBQUNoQUFBQWZRQUFBSDRBQUFCL0FBQUFnQUFBQUlFQUFBQ2lBQUFBb3dBQUFFNVRkRE5mWHpJeE1WOWZjM1JrYjNWMFluVm1TV05GUlFBQUFBQnMvUVFBVE0wRUFJVE1CQUFFQUFBQUFBQUFBSnpOQkFDa0FBQUFwUUFBQVB6Ly8vLzgvLy8vbk0wRUFLWUFBQUNuQUFBQTJQc0VBRExMQkFBQUFBQUFBUUFBQU9qTUJBQUQ5UC8vQUFBQUFCVE9CQUNFQUFBQXFBQUFBS2tBQUFDSEFBQUFpQUFBQUlrQUFBQ0tBQUFBaXdBQUFJd0FBQUNxQUFBQXF3QUFBS3dBQUFDUUFBQUFrUUFBQUU1VGRETmZYekl4TUY5ZmMzUmthVzVpZFdaSmQwVkZBQ3o5QkFDTHl3UUFiUDBFQVBUTkJBQU16Z1FBQ0FBQUFBQUFBQUJJemdRQXJRQUFBSzRBQUFENC8vLy8rUC8vLzBqT0JBQ3ZBQUFBc0FBQUFOajdCQUM4eXdRQUFBQUFBQUVBQUFCd3pnUUFBL1QvL3dBQUFBQnd6Z1FBc1FBQUFMSUFBQUJzL1FRQVljc0VBQVROQkFBQUFBQUEyTTRFQUlRQUFBQ3pBQUFBdEFBQUFJY0FBQUNJQUFBQWlRQUFBTFVBQUFDTEFBQUFqQUFBQUkwQUFBQ09BQUFBandBQUFMWUFBQUMzQUFBQVRsTjBNMTlmTWpFeFgxOXpkR1J2ZFhSaWRXWkpkMFZGQUFBQUFHejlCQUM4emdRQURNNEVBQVFBQUFBQUFBQUFETThFQUxnQUFBQzVBQUFBL1AvLy8vei8vLzhNendRQXVnQUFBTHNBQUFEWSt3UUE2OHNFQUFBQUFBQUJBQUFBY000RUFBUDAvLzhBUWJDZUV3c1UzaElFbFFBQUFBRC8vLy8vLy8vLy8vLy8vLzhBUWRDZUV3dFhURU5mUTFSWlVFVUFBQUFBVEVOZlRsVk5SVkpKUXdBQVRFTmZWRWxOUlFBQUFBQUFURU5mUTA5TVRFRlVSUUFBVEVOZlRVOU9SVlJCVWxrQVRFTmZUVVZUVTBGSFJWTUFNTThFQUJRQUFBQkRMbFZVUmkwNEFFSEVveE1MK1FNQkFBQUFBZ0FBQUFNQUFBQUVBQUFBQlFBQUFBWUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUFBQUVRQUFBQklBQUFBVEFBQUFGQUFBQUJVQUFBQVdBQUFBRndBQUFCZ0FBQUFaQUFBQUdnQUFBQnNBQUFBY0FBQUFIUUFBQUI0QUFBQWZBQUFBSUFBQUFDRUFBQUFpQUFBQUl3QUFBQ1FBQUFBbEFBQUFKZ0FBQUNjQUFBQW9BQUFBS1FBQUFDb0FBQUFyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQURBQUFBQXhBQUFBTWdBQUFETUFBQUEwQUFBQU5RQUFBRFlBQUFBM0FBQUFPQUFBQURrQUFBQTZBQUFBT3dBQUFEd0FBQUE5QUFBQVBnQUFBRDhBQUFCQUFBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBQUFhZ0FBQUdzQUFBQnNBQUFBYlFBQUFHNEFBQUJ2QUFBQWNBQUFBSEVBQUFCeUFBQUFjd0FBQUhRQUFBQjFBQUFBZGdBQUFIY0FBQUI0QUFBQWVRQUFBSG9BQUFCYkFBQUFYQUFBQUYwQUFBQmVBQUFBWHdBQUFHQUFBQUJoQUFBQVlnQUFBR01BQUFCa0FBQUFaUUFBQUdZQUFBQm5BQUFBYUFBQUFHa0FBQUJxQUFBQWF3QUFBR3dBQUFCdEFBQUFiZ0FBQUc4QUFBQndBQUFBY1FBQUFISUFBQUJ6QUFBQWRBQUFBSFVBQUFCMkFBQUFkd0FBQUhnQUFBQjVBQUFBZWdBQUFIc0FBQUI4QUFBQWZRQUFBSDRBQUFCL0FFSEVyeE1MK1FNQkFBQUFBZ0FBQUFNQUFBQUVBQUFBQlFBQUFBWUFBQUFIQUFBQUNBQUFBQWtBQUFBS0FBQUFDd0FBQUF3QUFBQU5BQUFBRGdBQUFBOEFBQUFRQUFBQUVRQUFBQklBQUFBVEFBQUFGQUFBQUJVQUFBQVdBQUFBRndBQUFCZ0FBQUFaQUFBQUdnQUFBQnNBQUFBY0FBQUFIUUFBQUI0QUFBQWZBQUFBSUFBQUFDRUFBQUFpQUFBQUl3QUFBQ1FBQUFBbEFBQUFKZ0FBQUNjQUFBQW9BQUFBS1FBQUFDb0FBQUFyQUFBQUxBQUFBQzBBQUFBdUFBQUFMd0FBQURBQUFBQXhBQUFBTWdBQUFETUFBQUEwQUFBQU5RQUFBRFlBQUFBM0FBQUFPQUFBQURrQUFBQTZBQUFBT3dBQUFEd0FBQUE5QUFBQVBnQUFBRDhBQUFCQUFBQUFRUUFBQUVJQUFBQkRBQUFBUkFBQUFFVUFBQUJHQUFBQVJ3QUFBRWdBQUFCSkFBQUFTZ0FBQUVzQUFBQk1BQUFBVFFBQUFFNEFBQUJQQUFBQVVBQUFBRkVBQUFCU0FBQUFVd0FBQUZRQUFBQlZBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCYkFBQUFYQUFBQUYwQUFBQmVBQUFBWHdBQUFHQUFBQUJCQUFBQVFnQUFBRU1BQUFCRUFBQUFSUUFBQUVZQUFBQkhBQUFBU0FBQUFFa0FBQUJLQUFBQVN3QUFBRXdBQUFCTkFBQUFUZ0FBQUU4QUFBQlFBQUFBVVFBQUFGSUFBQUJUQUFBQVZBQUFBRlVBQUFCV0FBQUFWd0FBQUZnQUFBQlpBQUFBV2dBQUFIc0FBQUI4QUFBQWZRQUFBSDRBQUFCL0FFSEF0eE1MZ3dJQ0FBREFBd0FBd0FRQUFNQUZBQURBQmdBQXdBY0FBTUFJQUFEQUNRQUF3QW9BQU1BTEFBREFEQUFBd0EwQUFNQU9BQURBRHdBQXdCQUFBTUFSQUFEQUVnQUF3Qk1BQU1BVUFBREFGUUFBd0JZQUFNQVhBQURBR0FBQXdCa0FBTUFhQUFEQUd3QUF3QndBQU1BZEFBREFIZ0FBd0I4QUFNQUFBQUN6QVFBQXd3SUFBTU1EQUFEREJBQUF3d1VBQU1NR0FBRERCd0FBd3dnQUFNTUpBQUREQ2dBQXd3c0FBTU1NQUFERERRQUEwdzRBQU1NUEFBRERBQUFNdXdFQURNTUNBQXpEQXdBTXd3UUFETnNBQUFBQU1ERXlNelExTmpjNE9XRmlZMlJsWmtGQ1EwUkZSbmhZS3kxd1VHbEpiazRBYkFBbFNUb2xUVG9sVXlBbGNDVklPaVZOQUVIUXVSTUxnUUVsQUFBQWJRQUFBQzhBQUFBbEFBQUFaQUFBQUM4QUFBQWxBQUFBZVFBQUFDVUFBQUJaQUFBQUxRQUFBQ1VBQUFCdEFBQUFMUUFBQUNVQUFBQmtBQUFBSlFBQUFFa0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQWdBQUFBSlFBQUFIQUFBQUFBQUFBQUpRQUFBRWdBQUFBNkFBQUFKUUFBQUUwQVFlQzZFd3RsSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQUFBQUFBMU9ZRUFMd0FBQUM5QUFBQXZnQUFBQUFBQUFBMDV3UUF2d0FBQU1BQUFBQytBQUFBd1FBQUFNSUFBQUREQUFBQXhBQUFBTVVBQUFER0FBQUF4d0FBQU1nQVFkQzdFd3Y5QXdRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFVQ0FBQUZBQUFBQlFBQUFBVUFBQUFGQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUF3SUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFFSUJBQUJDQVFBQVFnRUFBRUlCQUFCQ0FRQUFRZ0VBQUVJQkFBQkNBUUFBUWdFQUFFSUJBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBS2dFQUFDb0JBQUFxQVFBQUtnRUFBQ29CQUFBcUFRQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFBeUFRQUFNZ0VBQURJQkFBQXlBUUFBTWdFQUFESUJBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQUVBRUhVd3hNTDdRS2M1Z1FBeVFBQUFNb0FBQUMrQUFBQXl3QUFBTXdBQUFETkFBQUF6Z0FBQU04QUFBRFFBQUFBMFFBQUFBQUFBQUJzNXdRQTBnQUFBTk1BQUFDK0FBQUExQUFBQU5VQUFBRFdBQUFBMXdBQUFOZ0FBQUFBQUFBQWtPY0VBTmtBQUFEYUFBQUF2Z0FBQU5zQUFBRGNBQUFBM1FBQUFONEFBQURmQUFBQWRBQUFBSElBQUFCMUFBQUFaUUFBQUFBQUFBQm1BQUFBWVFBQUFHd0FBQUJ6QUFBQVpRQUFBQUFBQUFBbEFBQUFiUUFBQUM4QUFBQWxBQUFBWkFBQUFDOEFBQUFsQUFBQWVRQUFBQUFBQUFBbEFBQUFTQUFBQURvQUFBQWxBQUFBVFFBQUFEb0FBQUFsQUFBQVV3QUFBQUFBQUFBbEFBQUFZUUFBQUNBQUFBQWxBQUFBWWdBQUFDQUFBQUFsQUFBQVpBQUFBQ0FBQUFBbEFBQUFTQUFBQURvQUFBQWxBQUFBVFFBQUFEb0FBQUFsQUFBQVV3QUFBQ0FBQUFBbEFBQUFXUUFBQUFBQUFBQWxBQUFBU1FBQUFEb0FBQUFsQUFBQVRRQUFBRG9BQUFBbEFBQUFVd0FBQUNBQUFBQWxBQUFBY0FCQnpNWVRDLzhLZE9NRUFPQUFBQURoQUFBQXZnQUFBRTVUZEROZlh6STJiRzlqWVd4bE5XWmhZMlYwUlFBQUFHejlCQUJjNHdRQU1Qa0VBQUFBQUFEMDR3UUE0QUFBQU9JQUFBQytBQUFBNHdBQUFPUUFBQURsQUFBQTVnQUFBT2NBQUFEb0FBQUE2UUFBQU9vQUFBRHJBQUFBN0FBQUFPMEFBQUR1QUFBQVRsTjBNMTlmTWpWamRIbHdaVWwzUlVVQVRsTjBNMTlmTWpFd1kzUjVjR1ZmWW1GelpVVUFBQ3o5QkFEVzR3UUEyUHNFQU1UakJBQUFBQUFBQWdBQUFIVGpCQUFDQUFBQTdPTUVBQUlBQUFBQUFBQUFpT1FFQU9BQUFBRHZBQUFBdmdBQUFQQUFBQUR4QUFBQThnQUFBUE1BQUFEMEFBQUE5UUFBQVBZQUFBQk9VM1F6WDE4eU4yTnZaR1ZqZG5SSlkyTXhNVjlmYldKemRHRjBaVjkwUlVVQVRsTjBNMTlmTWpFeVkyOWtaV04yZEY5aVlYTmxSUUFBQUFBcy9RUUFadVFFQU5qN0JBQkU1QVFBQUFBQUFBSUFBQUIwNHdRQUFnQUFBSURrQkFBQ0FBQUFBQUFBQVB6a0JBRGdBQUFBOXdBQUFMNEFBQUQ0QUFBQStRQUFBUG9BQUFEN0FBQUEvQUFBQVAwQUFBRCtBQUFBVGxOME0xOWZNamRqYjJSbFkzWjBTVVJ6WXpFeFgxOXRZbk4wWVhSbFgzUkZSUUFBMlBzRUFOamtCQUFBQUFBQUFnQUFBSFRqQkFBQ0FBQUFnT1FFQUFJQUFBQUFBQUFBY09VRUFPQUFBQUQvQUFBQXZnQUFBQUFCQUFBQkFRQUFBZ0VBQUFNQkFBQUVBUUFBQlFFQUFBWUJBQUJPVTNRelgxOHlOMk52WkdWamRuUkpSSE5FZFRFeFgxOXRZbk4wWVhSbFgzUkZSUURZK3dRQVRPVUVBQUFBQUFBQ0FBQUFkT01FQUFJQUFBQ0E1QVFBQWdBQUFBQUFBQURrNVFRQTRBQUFBQWNCQUFDK0FBQUFDQUVBQUFrQkFBQUtBUUFBQ3dFQUFBd0JBQUFOQVFBQURnRUFBRTVUZEROZlh6STNZMjlrWldOMmRFbEVhV014TVY5ZmJXSnpkR0YwWlY5MFJVVUFBTmo3QkFEQTVRUUFBQUFBQUFJQUFBQjA0d1FBQWdBQUFJRGtCQUFDQUFBQUFBQUFBRmptQkFEZ0FBQUFEd0VBQUw0QUFBQVFBUUFBRVFFQUFCSUJBQUFUQVFBQUZBRUFBQlVCQUFBV0FRQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNVUnBSSFV4TVY5ZmJXSnpkR0YwWlY5MFJVVUEyUHNFQURUbUJBQUFBQUFBQWdBQUFIVGpCQUFDQUFBQWdPUUVBQUlBQUFCT1UzUXpYMTh5TjJOdlpHVmpkblJKZDJNeE1WOWZiV0p6ZEdGMFpWOTBSVVVBQUFEWSt3UUFlT1lFQUFBQUFBQUNBQUFBZE9NRUFBSUFBQUNBNUFRQUFnQUFBRTVUZEROZlh6STJiRzlqWVd4bE5WOWZhVzF3UlFBQUFHejlCQUM4NWdRQWRPTUVBRTVUZEROZlh6STNZMjlzYkdGMFpVbGpSVVVBYlAwRUFPRG1CQUIwNHdRQVRsTjBNMTlmTWpkamIyeHNZWFJsU1hkRlJRQnMvUVFBQU9jRUFIVGpCQUJPVTNRelgxOHlOV04wZVhCbFNXTkZSUUFBQU5qN0JBQWc1d1FBQUFBQUFBSUFBQUIwNHdRQUFnQUFBT3pqQkFBQ0FBQUFUbE4wTTE5Zk1qaHVkVzF3ZFc1amRFbGpSVVVBQUFBQWJQMEVBRlRuQkFCMDR3UUFUbE4wTTE5Zk1qaHVkVzF3ZFc1amRFbDNSVVVBQUFBQWJQMEVBSGpuQkFCMDR3UUFBQUFBQVBUbUJBQVhBUUFBR0FFQUFMNEFBQUFaQVFBQUdnRUFBQnNCQUFBQUFBQUFGT2NFQUJ3QkFBQWRBUUFBdmdBQUFCNEJBQUFmQVFBQUlBRUFBQUFBQUFDdzZBUUE0QUFBQUNFQkFBQytBQUFBSWdFQUFDTUJBQUFrQVFBQUpRRUFBQ1lCQUFBbkFRQUFLQUVBQUNrQkFBQXFBUUFBS3dFQUFDd0JBQUJPVTNRelgxOHlOMjUxYlY5blpYUkpZMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlVWRkFFNVRkRE5mWHpJNVgxOXVkVzFmWjJWMFNXTkZSUUJPVTNRelgxOHlNVFJmWDI1MWJWOW5aWFJmWW1GelpVVUFBQ3o5QkFCMjZBUUEyUHNFQUdEb0JBQUFBQUFBQVFBQUFKRG9CQUFBQUFBQTJQc0VBQnpvQkFBQUFBQUFBZ0FBQUhUakJBQUNBQUFBbU9nRUFFSFUwUk1MeXdHRTZRUUE0QUFBQUMwQkFBQytBQUFBTGdFQUFDOEJBQUF3QVFBQU1RRUFBRElCQUFBekFRQUFOQUVBQURVQkFBQTJBUUFBTndFQUFEZ0JBQUJPVTNRelgxOHlOMjUxYlY5blpYUkpkMDVUWHpFNWFYTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJNVgxOXVkVzFmWjJWMFNYZEZSUUFBQU5qN0JBQlU2UVFBQUFBQUFBRUFBQUNRNkFRQUFBQUFBTmo3QkFBUTZRUUFBQUFBQUFJQUFBQjA0d1FBQWdBQUFHenBCQUJCcU5NVEM5OEJiT29FQU9BQUFBQTVBUUFBdmdBQUFEb0JBQUE3QVFBQVBBRUFBRDBCQUFBK0FRQUFQd0VBQUVBQkFBQkJBUUFBVGxOME0xOWZNamR1ZFcxZmNIVjBTV05PVTE4eE9XOXpkSEpsWVcxaWRXWmZhWFJsY21GMGIzSkpZMDVUWHpFeFkyaGhjbDkwY21GcGRITkpZMFZGUlVWRlJRQk9VM1F6WDE4eU9WOWZiblZ0WDNCMWRFbGpSVVVBVGxOME0xOWZNakUwWDE5dWRXMWZjSFYwWDJKaGMyVkZBQUFzL1FRQU11b0VBTmo3QkFBYzZnUUFBQUFBQUFFQUFBQk02Z1FBQUFBQUFOajdCQURZNlFRQUFBQUFBQUlBQUFCMDR3UUFBZ0FBQUZUcUJBQkJrTlVUQzc4Qk5Pc0VBT0FBQUFCQ0FRQUF2Z0FBQUVNQkFBQkVBUUFBUlFFQUFFWUJBQUJIQVFBQVNBRUFBRWtCQUFCS0FRQUFUbE4wTTE5Zk1qZHVkVzFmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYM0IxZEVsM1JVVUFBQURZK3dRQUJPc0VBQUFBQUFBQkFBQUFUT29FQUFBQUFBRFkrd1FBd09vRUFBQUFBQUFDQUFBQWRPTUVBQUlBQUFBYzZ3UUFRZGpXRXd1YkN6VHNCQUJMQVFBQVRBRUFBTDRBQUFCTkFRQUFUZ0VBQUU4QkFBQlFBUUFBVVFFQUFGSUJBQUJUQVFBQStQLy8velRzQkFCVUFRQUFWUUVBQUZZQkFBQlhBUUFBV0FFQUFGa0JBQUJhQVFBQVRsTjBNMTlmTWpoMGFXMWxYMmRsZEVsalRsTmZNVGxwYzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZSVVVBVGxOME0xOWZNamwwYVcxbFgySmhjMlZGQUN6OUJBRHQ2d1FBVGxOME0xOWZNakl3WDE5MGFXMWxYMmRsZEY5algzTjBiM0poWjJWSlkwVkZBQUFBTFAwRUFBanNCQURZK3dRQXFPc0VBQUFBQUFBREFBQUFkT01FQUFJQUFBQUE3QVFBQWdBQUFDenNCQUFBQ0FBQUFBQUFBQ0R0QkFCYkFRQUFYQUVBQUw0QUFBQmRBUUFBWGdFQUFGOEJBQUJnQVFBQVlRRUFBR0lCQUFCakFRQUErUC8vL3lEdEJBQmtBUUFBWlFFQUFHWUJBQUJuQVFBQWFBRUFBR2tCQUFCcUFRQUFUbE4wTTE5Zk1qaDBhVzFsWDJkbGRFbDNUbE5mTVRscGMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNYZE9VMTh4TVdOb1lYSmZkSEpoYVhSelNYZEZSVVZGUlVVQVRsTjBNMTlmTWpJd1gxOTBhVzFsWDJkbGRGOWpYM04wYjNKaFoyVkpkMFZGQUFBcy9RUUE5ZXdFQU5qN0JBQ3c3QVFBQUFBQUFBTUFBQUIwNHdRQUFnQUFBQURzQkFBQ0FBQUFHTzBFQUFBSUFBQUFBQUFBeE8wRUFHc0JBQUJzQVFBQXZnQUFBRzBCQUFCT1UzUXpYMTh5T0hScGJXVmZjSFYwU1dOT1UxOHhPVzl6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEJmWDNScGJXVmZjSFYwUlFBQUFDejlCQUNsN1FRQTJQc0VBR0R0QkFBQUFBQUFBZ0FBQUhUakJBQUNBQUFBdk8wRUFBQUlBQUFBQUFBQVJPNEVBRzRCQUFCdkFRQUF2Z0FBQUhBQkFBQk9VM1F6WDE4eU9IUnBiV1ZmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFBQUFBRFkrd1FBL08wRUFBQUFBQUFDQUFBQWRPTUVBQUlBQUFDODdRUUFBQWdBQUFBQUFBRFk3Z1FBNEFBQUFIRUJBQUMrQUFBQWNnRUFBSE1CQUFCMEFRQUFkUUVBQUhZQkFBQjNBUUFBZUFFQUFIa0JBQUI2QVFBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbGpUR0l3UlVWRkFFNVRkRE5mWHpJeE1HMXZibVY1WDJKaGMyVkZBQUFBQUN6OUJBQzQ3Z1FBMlBzRUFKenVCQUFBQUFBQUFnQUFBSFRqQkFBQ0FBQUEwTzRFQUFJQUFBQUFBQUFBVE84RUFPQUFBQUI3QVFBQXZnQUFBSHdCQUFCOUFRQUFmZ0VBQUg4QkFBQ0FBUUFBZ1FFQUFJSUJBQUNEQVFBQWhBRUFBRTVUZEROZlh6SXhNRzF2Ym1WNWNIVnVZM1JKWTB4aU1VVkZSUURZK3dRQU1POEVBQUFBQUFBQ0FBQUFkT01FQUFJQUFBRFE3Z1FBQWdBQUFBQUFBQURBN3dRQTRBQUFBSVVCQUFDK0FBQUFoZ0VBQUljQkFBQ0lBUUFBaVFFQUFJb0JBQUNMQVFBQWpBRUFBSTBCQUFDT0FRQUFUbE4wTTE5Zk1qRXdiVzl1Wlhsd2RXNWpkRWwzVEdJd1JVVkZBTmo3QkFDazd3UUFBQUFBQUFJQUFBQjA0d1FBQWdBQUFORHVCQUFDQUFBQUFBQUFBRFR3QkFEZ0FBQUFqd0VBQUw0QUFBQ1FBUUFBa1FFQUFKSUJBQUNUQVFBQWxBRUFBSlVCQUFDV0FRQUFsd0VBQUpnQkFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTWGRNWWpGRlJVVUEyUHNFQUJqd0JBQUFBQUFBQWdBQUFIVGpCQUFDQUFBQTBPNEVBQUlBQUFBQUFBQUEyUEFFQU9BQUFBQ1pBUUFBdmdBQUFKb0JBQUNiQVFBQVRsTjBNMTlmTWpsdGIyNWxlVjluWlhSSlkwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmWjJWMFNXTkZSUUFBTFAwRUFMYndCQURZK3dRQWNQQUVBQUFBQUFBQ0FBQUFkT01FQUFJQUFBRFE4QVFBUWZ6aEV3dWJBWHp4QkFEZ0FBQUFuQUVBQUw0QUFBQ2RBUUFBbmdFQUFFNVRkRE5mWHpJNWJXOXVaWGxmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5TVRGZlgyMXZibVY1WDJkbGRFbDNSVVVBQUN6OUJBQmE4UVFBMlBzRUFCVHhCQUFBQUFBQUFnQUFBSFRqQkFBQ0FBQUFkUEVFQUVHZzR4TUxtd0VnOGdRQTRBQUFBSjhCQUFDK0FBQUFvQUVBQUtFQkFBQk9VM1F6WDE4eU9XMXZibVY1WDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpFeFgxOXRiMjVsZVY5d2RYUkpZMFZGQUFBcy9RUUEvdkVFQU5qN0JBQzQ4UVFBQUFBQUFBSUFBQUIwNHdRQUFnQUFBQmp5QkFCQnhPUVRDNXNCeFBJRUFPQUFBQUNpQVFBQXZnQUFBS01CQUFDa0FRQUFUbE4wTTE5Zk1qbHRiMjVsZVY5d2RYUkpkMDVUWHpFNWIzTjBjbVZoYldKMVpsOXBkR1Z5WVhSdmNrbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlVWRkFFNVRkRE5mWHpJeE1WOWZiVzl1WlhsZmNIVjBTWGRGUlFBQUxQMEVBS0x5QkFEWSt3UUFYUElFQUFBQUFBQUNBQUFBZE9NRUFBSUFBQUM4OGdRQVFlamxFd3U1Q0R6ekJBRGdBQUFBcFFFQUFMNEFBQUNtQVFBQXB3RUFBS2dCQUFCT1UzUXpYMTh5T0cxbGMzTmhaMlZ6U1dORlJRQk9VM1F6WDE4eU1UTnRaWE56WVdkbGMxOWlZWE5sUlFBQUFBQXMvUVFBR2ZNRUFOajdCQUFFOHdRQUFBQUFBQUlBQUFCMDR3UUFBZ0FBQURUekJBQUNBQUFBQUFBQUFKVHpCQURnQUFBQXFRRUFBTDRBQUFDcUFRQUFxd0VBQUt3QkFBQk9VM1F6WDE4eU9HMWxjM05oWjJWelNYZEZSUUFBQUFEWSt3UUFmUE1FQUFBQUFBQUNBQUFBZE9NRUFBSUFBQUEwOHdRQUFnQUFBRk1BQUFCMUFBQUFiZ0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJOQUFBQWJ3QUFBRzRBQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBVkFBQUFIVUFBQUJsQUFBQWN3QUFBR1FBQUFCaEFBQUFlUUFBQUFBQUFBQlhBQUFBWlFBQUFHUUFBQUJ1QUFBQVpRQUFBSE1BQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBVkFBQUFHZ0FBQUIxQUFBQWNnQUFBSE1BQUFCa0FBQUFZUUFBQUhrQUFBQUFBQUFBUmdBQUFISUFBQUJwQUFBQVpBQUFBR0VBQUFCNUFBQUFBQUFBQUZNQUFBQmhBQUFBZEFBQUFIVUFBQUJ5QUFBQVpBQUFBR0VBQUFCNUFBQUFBQUFBQUZNQUFBQjFBQUFBYmdBQUFBQUFBQUJOQUFBQWJ3QUFBRzRBQUFBQUFBQUFWQUFBQUhVQUFBQmxBQUFBQUFBQUFGY0FBQUJsQUFBQVpBQUFBQUFBQUFCVUFBQUFhQUFBQUhVQUFBQUFBQUFBUmdBQUFISUFBQUJwQUFBQUFBQUFBRk1BQUFCaEFBQUFkQUFBQUFBQUFBQktBQUFBWVFBQUFHNEFBQUIxQUFBQVlRQUFBSElBQUFCNUFBQUFBQUFBQUVZQUFBQmxBQUFBWWdBQUFISUFBQUIxQUFBQVlRQUFBSElBQUFCNUFBQUFBQUFBQUUwQUFBQmhBQUFBY2dBQUFHTUFBQUJvQUFBQUFBQUFBRUVBQUFCd0FBQUFjZ0FBQUdrQUFBQnNBQUFBQUFBQUFFMEFBQUJoQUFBQWVRQUFBQUFBQUFCS0FBQUFkUUFBQUc0QUFBQmxBQUFBQUFBQUFFb0FBQUIxQUFBQWJBQUFBSGtBQUFBQUFBQUFRUUFBQUhVQUFBQm5BQUFBZFFBQUFITUFBQUIwQUFBQUFBQUFBRk1BQUFCbEFBQUFjQUFBQUhRQUFBQmxBQUFBYlFBQUFHSUFBQUJsQUFBQWNnQUFBQUFBQUFCUEFBQUFZd0FBQUhRQUFBQnZBQUFBWWdBQUFHVUFBQUJ5QUFBQUFBQUFBRTRBQUFCdkFBQUFkZ0FBQUdVQUFBQnRBQUFBWWdBQUFHVUFBQUJ5QUFBQUFBQUFBRVFBQUFCbEFBQUFZd0FBQUdVQUFBQnRBQUFBWWdBQUFHVUFBQUJ5QUFBQUFBQUFBRW9BQUFCaEFBQUFiZ0FBQUFBQUFBQkdBQUFBWlFBQUFHSUFBQUFBQUFBQVRRQUFBR0VBQUFCeUFBQUFBQUFBQUVFQUFBQndBQUFBY2dBQUFBQUFBQUJLQUFBQWRRQUFBRzRBQUFBQUFBQUFTZ0FBQUhVQUFBQnNBQUFBQUFBQUFFRUFBQUIxQUFBQVp3QUFBQUFBQUFCVEFBQUFaUUFBQUhBQUFBQUFBQUFBVHdBQUFHTUFBQUIwQUFBQUFBQUFBRTRBQUFCdkFBQUFkZ0FBQUFBQUFBQkVBQUFBWlFBQUFHTUFBQUFBQUFBQVFRQUFBRTBBQUFBQUFBQUFVQUFBQUUwQVFhenVFd3RjTE93RUFGUUJBQUJWQVFBQVZnRUFBRmNCQUFCWUFRQUFXUUVBQUZvQkFBQUFBQUFBR08wRUFHUUJBQUJsQVFBQVpnRUFBR2NCQUFCb0FRQUFhUUVBQUdvQkFBQk9VM1F6WDE4eU1UUmZYM05vWVhKbFpGOWpiM1Z1ZEVVQVFhVHZFd3NEbU04RUFFSEE3eE1MeUFFd01EQXhNREl3TXpBME1EVXdOakEzTURnd09URXdNVEV4TWpFek1UUXhOVEUyTVRjeE9ERTVNakF5TVRJeU1qTXlOREkxTWpZeU56STRNamt6TURNeE16SXpNek0wTXpVek5qTTNNemd6T1RRd05ERTBNalF6TkRRME5UUTJORGMwT0RRNU5UQTFNVFV5TlRNMU5EVTFOVFkxTnpVNE5UazJNRFl4TmpJMk16WTBOalUyTmpZM05qZzJPVGN3TnpFM01qY3pOelEzTlRjMk56YzNPRGM1T0RBNE1UZ3lPRE00TkRnMU9EWTROemc0T0RrNU1Ea3hPVEk1TXprME9UVTVOamszT1RnNU9RQkJtUEVUQzQ0S0NnQUFBQUFBQUFCa0FBQUFBQUFBQU9nREFBQUFBQUFBRUNjQUFBQUFBQUNnaGdFQUFBQUFBRUJDRHdBQUFBQUFnSmFZQUFBQUFBQUE0ZlVGQUFBQUFBREttanNBQUFBQUFPUUxWQUlBQUFBQTZIWklGd0FBQUFBUXBkVG9BQUFBQUtCeVRoZ0pBQUFBUUhvUTgxb0FBQUNBeHFSK2pRTUFBQURCYi9LR0l3QUFBSXBkZUVWakFRQUFaS2V6dHVBTkFBRG9pUVFqeDRvcy9RUUFjUGNFQUFBQUFBQXcrUVFBclFFQUFLNEJBQUN2QVFBQVRqRXdYMTlqZUhoaFltbDJNVEUyWDE5emFHbHRYM1I1Y0dWZmFXNW1iMFVBQUFBQWJQMEVBRXo1QkFCYy9RUUFUakV3WDE5amVIaGhZbWwyTVRFM1gxOWpiR0Z6YzE5MGVYQmxYMmx1Wm05RkFBQUFiUDBFQUh6NUJBQncrUVFBVGpFd1gxOWplSGhoWW1sMk1URTNYMTl3WW1GelpWOTBlWEJsWDJsdVptOUZBQUFBYlAwRUFLejVCQUJ3K1FRQVRqRXdYMTlqZUhoaFltbDJNVEU1WDE5d2IybHVkR1Z5WDNSNWNHVmZhVzVtYjBVQWJQMEVBTno1QkFEUStRUUFUakV3WDE5amVIaGhZbWwyTVRJd1gxOW1kVzVqZEdsdmJsOTBlWEJsWDJsdVptOUZBQUFBQUd6OUJBQU0rZ1FBY1BrRUFFNHhNRjlmWTNoNFlXSnBkakV5T1Y5ZmNHOXBiblJsY2w5MGIxOXRaVzFpWlhKZmRIbHdaVjlwYm1adlJRQUFBR3o5QkFCQStnUUEwUGtFQUFBQUFBREErZ1FBc1FFQUFMSUJBQUN6QVFBQXRBRUFBTFVCQUFCT01UQmZYMk40ZUdGaWFYWXhNak5mWDJaMWJtUmhiV1Z1ZEdGc1gzUjVjR1ZmYVc1bWIwVUFiUDBFQUpqNkJBQncrUVFBZGdBQUFJVDZCQURNK2dRQVJHNEFBSVQ2QkFEWStnUUFZZ0FBQUlUNkJBRGsrZ1FBWXdBQUFJVDZCQUR3K2dRQWFBQUFBSVQ2QkFEOCtnUUFZUUFBQUlUNkJBQUkrd1FBY3dBQUFJVDZCQUFVK3dRQWRBQUFBSVQ2QkFBZyt3UUFhUUFBQUlUNkJBQXMrd1FBYWdBQUFJVDZCQUE0K3dRQWhQb0VBTEhjQkFCUWJBQUFOUHdFQUV6N0JBQUFBQUFBUlBzRUFHMEFBQUNFK2dRQVlQc0VBSGdBQUFDRStnUUFiUHNFQUhrQUFBQ0UrZ1FBZVBzRUFHWUFBQUNFK2dRQWhQc0VBR1FBQUFDRStnUUFrUHNFQUU0eE1GOWZZM2g0WVdKcGRqRXlNRjlmYzJsZlkyeGhjM05mZEhsd1pWOXBibVp2UlFBQUFBQnMvUVFBblBzRUFLRDVCQUFBQUFBQUlQd0VBTEVCQUFDMkFRQUFzd0VBQUxRQkFBQzNBUUFBdUFFQUFMa0JBQUM2QVFBQVRqRXdYMTlqZUhoaFltbDJNVEl4WDE5MmJXbGZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQUFBR3o5QkFENCt3UUFvUGtFQUFBQUFBQUErZ1FBc1FFQUFMc0JBQUN6QVFBQXRBRUFBTHdCQUFBQUFBQUFqUHdFQUUwQUFBQzlBUUFBdmdFQUFBQUFBQUMwL0FRQVRRQUFBTDhCQUFEQUFRQUFVM1E1WlhoalpYQjBhVzl1QUZOME9XSmhaRjloYkd4dll3QUFBR3o5QkFCOS9BUUFqUDBFQUZOME1qQmlZV1JmWVhKeVlYbGZibVYzWDJ4bGJtZDBhQUFBQUFCcy9RUUFtUHdFQUl6OEJBQUFBQUFBNVB3RUFBSUFBQURCQVFBQXdnRUFBRk4wTVRGc2IyZHBZMTlsY25KdmNnQnMvUVFBMVB3RUFJejlCQUFBQUFBQUdQMEVBQUlBQUFEREFRQUF3Z0VBQUZOME1USnNaVzVuZEdoZlpYSnliM0lBQUFBQWJQMEVBQVQ5QkFEay9BUUFBQUFBQUtENUJBQ3hBUUFBeEFFQUFMTUJBQUMwQVFBQXR3RUFBTVVCQUFER0FRQUF4d0VBQUZOME9YUjVjR1ZmYVc1bWJ3QUFBQUFzL1FRQVRQMEVBQUFBQUFERSt3UUFzUUVBQU1nQkFBQ3pBUUFBdEFFQUFMY0JBQURKQVFBQXlnRUFBTXNCQUFBcy9RUUFjUHdFQUFBQUFBQ00vUVFBVFFBQUFNd0JBQUROQVFCQnFQc1RDeEZBR1FZQUFBQUFBSTJYYmhJajZyaEFCUUJCeFBzVEN3RndBRUhjK3hNTEMzRUFBQUJ5QUFBQU5BUUZBRUgwK3hNTEFRSUFRWVQ4RXdzSS8vLy8vLy8vLy84QVFjajhFd3NKdVAwRUFBQUFBQUFGQUVIYy9CTUxBWE1BUWZUOEV3c09jUUFBQUhRQUFBQllDQVVBQUFRQVFZejlFd3NCQVFCQm5QMFRDd1gvLy8vL0NnQkI0UDBUQ3dsUS9nUUFBQUFBQUFrQVFmVDlFd3NCY0FCQmlQNFRDeEoxQUFBQUFBQUFBSElBQUFCSUJBVUFBQVFBUWJUK0V3c0UvLy8vL3dCQitQNFRDd0t3QVE9PSIsUmkoVmkpfHwoVmk9UihWaSkpO2Z1bmN0aW9uIGduKHUpe2lmKHU9PVZpJiZHKXJldHVybiBuZXcgVWludDhBcnJheShHKTt2YXIgUz1DOCh1KTtpZihTKXJldHVybiBTO2lmKE4pcmV0dXJuIE4odSk7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifWZ1bmN0aW9uIERlKHUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5nbih1KSl9ZnVuY3Rpb24gWWUodSxTLFcpe3JldHVybiBEZSh1KS50aGVuKFA9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFAsUykpLnRoZW4oUD0+UCkudGhlbihXLFA9PntiKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK1ApLHNpKFZpKSYmYigid2FybmluZzogTG9hZGluZyBmcm9tIGEgZmlsZSBVUkkgKCIrVmkrIikgaXMgbm90IHN1cHBvcnRlZCBpbiBtb3N0IGJyb3dzZXJzLiBTZWUgaHR0cHM6Ly9lbXNjcmlwdGVuLm9yZy9kb2NzL2dldHRpbmdfc3RhcnRlZC9GQVEuaHRtbCNob3ctZG8taS1ydW4tYS1sb2NhbC13ZWJzZXJ2ZXItZm9yLXRlc3Rpbmctd2h5LWRvZXMtbXktcHJvZ3JhbS1zdGFsbC1pbi1kb3dubG9hZGluZy1vci1wcmVwYXJpbmciKSxHZShQKX0pfWZ1bmN0aW9uIEJpKHUsUyxXLFApe3JldHVybiBZZShTLFcsUCl9ZnVuY3Rpb24gQW4oKXt2YXIgdT17ZW52OndCLHdhc2lfc25hcHNob3RfcHJldmlldzE6d0J9O2Z1bmN0aW9uIFMoJCxodCl7dmFyIGR0PSQuZXhwb3J0cztyZXR1cm4gVT1kdCxRPVUubWVtb3J5LGMoUSwibWVtb3J5IG5vdCBmb3VuZCBpbiB3YXNtIGV4cG9ydHMiKSx0dCgpLEI9VS5fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlLGMoQiwidGFibGUgbm90IGZvdW5kIGluIHdhc20gZXhwb3J0cyIpLGNlKFUuX193YXNtX2NhbGxfY3RvcnMpLHplKCJ3YXNtLWluc3RhbnRpYXRlIiksZHR9bmkoIndhc20taW5zdGFudGlhdGUiKTt2YXIgVz1pO2Z1bmN0aW9uIFAoJCl7YyhpPT09VywidGhlIE1vZHVsZSBvYmplY3Qgc2hvdWxkIG5vdCBiZSByZXBsYWNlZCBkdXJpbmcgYXN5bmMgY29tcGlsYXRpb24gLSBwZXJoYXBzIHRoZSBvcmRlciBvZiBIVE1MIGVsZW1lbnRzIGlzIHdyb25nPyIpLFc9bnVsbCxTKCQuaW5zdGFuY2UpfWlmKGkuaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gaS5pbnN0YW50aWF0ZVdhc20odSxTKX1jYXRjaCgkKXtiKCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAiKyQpLHMoJCl9cmV0dXJuIEJpKEcsVmksdSxQKS5jYXRjaChzKSx7fX12YXIgTmUsZWk7ZnVuY3Rpb24gX24odSxTLFc9ITApe09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSx1KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGksdSx7Y29uZmlndXJhYmxlOiEwLGdldCgpe2xldCBQPVc/IiAodGhlIGluaXRpYWwgdmFsdWUgY2FuIGJlIHByb3ZpZGVkIG9uIE1vZHVsZSwgYnV0IGFmdGVyIHN0YXJ0dXAgdGhlIHZhbHVlIGlzIG9ubHkgbG9va2VkIGZvciBvbiBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgbmFtZSkiOiIiO0dlKGBcYE1vZHVsZS4ke3V9XGAgaGFzIGJlZW4gcmVwbGFjZWQgYnkgXGAke1N9XGBgK1ApfX0pfWZ1bmN0aW9uIGhzKHUpe09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSx1KSYmR2UoYFxgTW9kdWxlLiR7dX1cYCB3YXMgc3VwcGxpZWQgYnV0IFxgJHt1fVxgIG5vdCBpbmNsdWRlZCBpbiBJTkNPTUlOR19NT0RVTEVfSlNfQVBJYCl9ZnVuY3Rpb24gUWkodSl7cmV0dXJuIHU9PT0iRlNfY3JlYXRlUGF0aCJ8fHU9PT0iRlNfY3JlYXRlRGF0YUZpbGUifHx1PT09IkZTX2NyZWF0ZVByZWxvYWRlZEZpbGUifHx1PT09IkZTX3VubGluayJ8fHU9PT0iYWRkUnVuRGVwZW5kZW5jeSJ8fHU9PT0iRlNfY3JlYXRlTGF6eUZpbGUifHx1PT09IkZTX2NyZWF0ZURldmljZSJ8fHU9PT0icmVtb3ZlUnVuRGVwZW5kZW5jeSJ9ZnVuY3Rpb24gbm4odSxTKXt0eXBlb2YgZ2xvYmFsVGhpczwidSImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLHUse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXtBaSgiYCIrdSsiYCBpcyBub3QgbG9uZ2VyIGRlZmluZWQgYnkgZW1zY3JpcHRlbi4gIitTKX19KX1ubigiYnVmZmVyIiwiUGxlYXNlIHVzZSBIRUFQOC5idWZmZXIgb3Igd2FzbU1lbW9yeS5idWZmZXIiKTtmdW5jdGlvbiBraSh1KXt0eXBlb2YgZ2xvYmFsVGhpczwidSImJiFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbFRoaXMsdSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLHUse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXt2YXIgUz0iYCIrdSsiYCBpcyBhIGxpYnJhcnkgc3ltYm9sIGFuZCBub3QgaW5jbHVkZWQgYnkgZGVmYXVsdDsgYWRkIGl0IHRvIHlvdXIgbGlicmFyeS5qcyBfX2RlcHMgb3IgdG8gREVGQVVMVF9MSUJSQVJZX0ZVTkNTX1RPX0lOQ0xVREUgb24gdGhlIGNvbW1hbmQgbGluZSIsVz11O1cuc3RhcnRzV2l0aCgiXyIpfHwoVz0iJCIrdSksUys9IiAoZS5nLiAtc0RFRkFVTFRfTElCUkFSWV9GVU5DU19UT19JTkNMVURFPSciK1crIicpIixRaSh1KSYmKFMrPSIuIEFsdGVybmF0aXZlbHksIGZvcmNpbmcgZmlsZXN5c3RlbSBzdXBwb3J0ICgtc0ZPUkNFX0ZJTEVTWVNURU0pIGNhbiBleHBvcnQgdGhpcyBmb3IgeW91IiksQWkoUyl9fSksc24odSl9ZnVuY3Rpb24gc24odSl7T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLHUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSx1LHtjb25maWd1cmFibGU6ITAsZ2V0KCl7dmFyIFM9IiciK3UrIicgd2FzIG5vdCBleHBvcnRlZC4gYWRkIGl0IHRvIEVYUE9SVEVEX1JVTlRJTUVfTUVUSE9EUyAoc2VlIHRoZSBFbXNjcmlwdGVuIEZBUSkiO1FpKHUpJiYoUys9Ii4gQWx0ZXJuYXRpdmVseSwgZm9yY2luZyBmaWxlc3lzdGVtIHN1cHBvcnQgKC1zRk9SQ0VfRklMRVNZU1RFTSkgY2FuIGV4cG9ydCB0aGlzIGZvciB5b3UiKSxHZShTKX19KX12YXIgQ3M9ezMyNzU0ODooKT0+e2NvbnNvbGUubG9nKCJubyBzaG93Iil9fTtmdW5jdGlvbiBjcyh1KXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiLHRoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke3V9KWAsdGhpcy5zdGF0dXM9dX12YXIgeG49dT0+e2Zvcig7dS5sZW5ndGg+MDspdS5zaGlmdCgpKGkpfSxQbj11PT4oYyh0eXBlb2YgdT09Im51bWJlciIpLHU+Pj49MCwiMHgiK3UudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSksQWk9dT0+e0FpLnNob3dufHwoQWkuc2hvd249e30pLEFpLnNob3duW3VdfHwoQWkuc2hvd25bdV09MSxiKHUpKX07ZnVuY3Rpb24gQ2kodSl7dGhpcy5leGNQdHI9dSx0aGlzLnB0cj11LTI0LHRoaXMuc2V0X3R5cGU9ZnVuY3Rpb24oUyl7SFt0aGlzLnB0cis0Pj4yXT1TfSx0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIEhbdGhpcy5wdHIrND4+Ml19LHRoaXMuc2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oUyl7SFt0aGlzLnB0cis4Pj4yXT1TfSx0aGlzLmdldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIEhbdGhpcy5wdHIrOD4+Ml19LHRoaXMuc2V0X2NhdWdodD1mdW5jdGlvbihTKXtTPVM/MTowLGdbdGhpcy5wdHIrMTI+PjBdPVN9LHRoaXMuZ2V0X2NhdWdodD1mdW5jdGlvbigpe3JldHVybiBnW3RoaXMucHRyKzEyPj4wXSE9MH0sdGhpcy5zZXRfcmV0aHJvd249ZnVuY3Rpb24oUyl7Uz1TPzE6MCxnW3RoaXMucHRyKzEzPj4wXT1TfSx0aGlzLmdldF9yZXRocm93bj1mdW5jdGlvbigpe3JldHVybiBnW3RoaXMucHRyKzEzPj4wXSE9MH0sdGhpcy5pbml0PWZ1bmN0aW9uKFMsVyl7dGhpcy5zZXRfYWRqdXN0ZWRfcHRyKDApLHRoaXMuc2V0X3R5cGUoUyksdGhpcy5zZXRfZGVzdHJ1Y3RvcihXKX0sdGhpcy5zZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKFMpe0hbdGhpcy5wdHIrMTY+PjJdPVN9LHRoaXMuZ2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbigpe3JldHVybiBIW3RoaXMucHRyKzE2Pj4yXX0sdGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe3ZhciBTPXA4KHRoaXMuZ2V0X3R5cGUoKSk7aWYoUylyZXR1cm4gSFt0aGlzLmV4Y1B0cj4+Ml07dmFyIFc9dGhpcy5nZXRfYWRqdXN0ZWRfcHRyKCk7cmV0dXJuIFchPT0wP1c6dGhpcy5leGNQdHJ9fXZhciBKbj0wLGxzPTA7ZnVuY3Rpb24gYW8odSxTLFcpe3ZhciBQPW5ldyBDaSh1KTtQLmluaXQoUyxXKSxKbj11LGxzKyssYyghMSwiRXhjZXB0aW9uIHRocm93biwgYnV0IGV4Y2VwdGlvbiBjYXRjaGluZyBpcyBub3QgZW5hYmxlZC4gQ29tcGlsZSB3aXRoIC1zTk9fRElTQUJMRV9FWENFUFRJT05fQ0FUQ0hJTkcgb3IgLXNFWENFUFRJT05fQ0FUQ0hJTkdfQUxMT1dFRD1bLi5dIHRvIGNhdGNoLiIpfWZ1bmN0aW9uIHFpKHUsUyxXLFAsJCl7fWZ1bmN0aW9uIGhuKHUpe3N3aXRjaCh1KXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDg6cmV0dXJuIDM7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKGBVbmtub3duIHR5cGUgc2l6ZTogJHt1fWApfX1mdW5jdGlvbiBqbygpe2Zvcih2YXIgdT1uZXcgQXJyYXkoMjU2KSxTPTA7UzwyNTY7KytTKXVbU109U3RyaW5nLmZyb21DaGFyQ29kZShTKTtkcz11fXZhciBkcz12b2lkIDA7ZnVuY3Rpb24gb24odSl7Zm9yKHZhciBTPSIiLFc9dTtWW1ddOylTKz1kc1tWW1crK11dO3JldHVybiBTfXZhciB3cz17fSxTbz17fSxGcj17fSxPbz12b2lkIDA7ZnVuY3Rpb24gJGUodSl7dGhyb3cgbmV3IE9vKHUpfXZhciBhYT12b2lkIDA7ZnVuY3Rpb24gWXIodSl7dGhyb3cgbmV3IGFhKHUpfWZ1bmN0aW9uIHhzKHUsUyxXKXt1LmZvckVhY2goZnVuY3Rpb24oZnQpe0ZyW2Z0XT1TfSk7ZnVuY3Rpb24gUChmdCl7dmFyIEJ0PVcoZnQpO0J0Lmxlbmd0aCE9PXUubGVuZ3RoJiZZcigiTWlzbWF0Y2hlZCB0eXBlIGNvbnZlcnRlciBjb3VudCIpO2Zvcih2YXIgTHQ9MDtMdDx1Lmxlbmd0aDsrK0x0KVRuKHVbTHRdLEJ0W0x0XSl9dmFyICQ9bmV3IEFycmF5KFMubGVuZ3RoKSxodD1bXSxkdD0wO1MuZm9yRWFjaCgoZnQsQnQpPT57U28uaGFzT3duUHJvcGVydHkoZnQpPyRbQnRdPVNvW2Z0XTooaHQucHVzaChmdCksd3MuaGFzT3duUHJvcGVydHkoZnQpfHwod3NbZnRdPVtdKSx3c1tmdF0ucHVzaCgoKT0+eyRbQnRdPVNvW2Z0XSwrK2R0LGR0PT09aHQubGVuZ3RoJiZQKCQpfSkpfSksaHQubGVuZ3RoPT09MCYmUCgkKX1mdW5jdGlvbiBncyh1LFMsVz17fSl7dmFyIFA9Uy5uYW1lO2lmKHV8fCRlKGB0eXBlICIke1B9IiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyYCksU28uaGFzT3duUHJvcGVydHkodSkpe2lmKFcuaWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9ucylyZXR1cm47JGUoYENhbm5vdCByZWdpc3RlciB0eXBlICcke1B9JyB0d2ljZWApfWlmKFNvW3VdPVMsZGVsZXRlIEZyW3VdLHdzLmhhc093blByb3BlcnR5KHUpKXt2YXIgJD13c1t1XTtkZWxldGUgd3NbdV0sJC5mb3JFYWNoKGh0PT5odCgpKX19ZnVuY3Rpb24gVG4odSxTLFc9e30pe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIFMpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKTtyZXR1cm4gZ3ModSxTLFcpfWZ1bmN0aW9uIGhyKHUsUyxXLFAsJCl7dmFyIGh0PWhuKFcpO1M9b24oUyksVG4odSx7bmFtZTpTLGZyb21XaXJlVHlwZTpmdW5jdGlvbihkdCl7cmV0dXJuISFkdH0sdG9XaXJlVHlwZTpmdW5jdGlvbihkdCxmdCl7cmV0dXJuIGZ0P1A6JH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmdW5jdGlvbihkdCl7dmFyIGZ0O2lmKFc9PT0xKWZ0PWc7ZWxzZSBpZihXPT09MilmdD1EO2Vsc2UgaWYoVz09PTQpZnQ9eDtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gYm9vbGVhbiB0eXBlIHNpemU6ICIrUyk7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKGZ0W2R0Pj5odF0pfSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIE1oKHUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG1yKXx8ISh1IGluc3RhbmNlb2YgbXIpKXJldHVybiExO2Zvcih2YXIgUz10aGlzLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFc9dGhpcy4kJC5wdHIsUD11LiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLCQ9dS4kJC5wdHI7Uy5iYXNlQ2xhc3M7KVc9Uy51cGNhc3QoVyksUz1TLmJhc2VDbGFzcztmb3IoO1AuYmFzZUNsYXNzOykkPVAudXBjYXN0KCQpLFA9UC5iYXNlQ2xhc3M7cmV0dXJuIFM9PT1QJiZXPT09JH1mdW5jdGlvbiBVaCh1KXtyZXR1cm57Y291bnQ6dS5jb3VudCxkZWxldGVTY2hlZHVsZWQ6dS5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6dS5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSxwdHI6dS5wdHIscHRyVHlwZTp1LnB0clR5cGUsc21hcnRQdHI6dS5zbWFydFB0cixzbWFydFB0clR5cGU6dS5zbWFydFB0clR5cGV9fWZ1bmN0aW9uIFZuKHUpe2Z1bmN0aW9uIFMoVyl7cmV0dXJuIFcuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MubmFtZX0kZShTKHUpKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIil9dmFyIGNyPSExO2Z1bmN0aW9uIElpKHUpe31mdW5jdGlvbiBWbyh1KXt1LnNtYXJ0UHRyP3Uuc21hcnRQdHJUeXBlLnJhd0Rlc3RydWN0b3IodS5zbWFydFB0cik6dS5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5yYXdEZXN0cnVjdG9yKHUucHRyKX1mdW5jdGlvbiBLYyh1KXt1LmNvdW50LnZhbHVlLT0xO3ZhciBTPXUuY291bnQudmFsdWU9PT0wO1MmJlZvKHUpfWZ1bmN0aW9uIFhjKHUsUyxXKXtpZihTPT09VylyZXR1cm4gdTtpZihXLmJhc2VDbGFzcz09PXZvaWQgMClyZXR1cm4gbnVsbDt2YXIgUD1YYyh1LFMsVy5iYXNlQ2xhc3MpO3JldHVybiBQPT09bnVsbD9udWxsOlcuZG93bmNhc3QoUCl9dmFyIHFjPXt9O2Z1bmN0aW9uIFFoKCl7cmV0dXJuIE9iamVjdC5rZXlzKFhhKS5sZW5ndGh9ZnVuY3Rpb24ga2goKXt2YXIgdT1bXTtmb3IodmFyIFMgaW4gWGEpWGEuaGFzT3duUHJvcGVydHkoUykmJnUucHVzaChYYVtTXSk7cmV0dXJuIHV9dmFyIEFhPVtdO2Z1bmN0aW9uIExoKCl7Zm9yKDtBYS5sZW5ndGg7KXt2YXIgdT1BYS5wb3AoKTt1LiQkLmRlbGV0ZVNjaGVkdWxlZD0hMSx1LmRlbGV0ZSgpfX12YXIgaGE9dm9pZCAwO2Z1bmN0aW9uIEthKHUpe2hhPXUsQWEubGVuZ3RoJiZoYSYmaGEoTGgpfWZ1bmN0aW9uIFNkKCl7aS5nZXRJbmhlcml0ZWRJbnN0YW5jZUNvdW50PVFoLGkuZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcz1raCxpLmZsdXNoUGVuZGluZ0RlbGV0ZXM9TGgsaS5zZXREZWxheUZ1bmN0aW9uPUthfXZhciBYYT17fTtmdW5jdGlvbiBPZCh1LFMpe2ZvcihTPT09dm9pZCAwJiYkZSgicHRyIHNob3VsZCBub3QgYmUgdW5kZWZpbmVkIik7dS5iYXNlQ2xhc3M7KVM9dS51cGNhc3QoUyksdT11LmJhc2VDbGFzcztyZXR1cm4gU31mdW5jdGlvbiBxYSh1LFMpe3JldHVybiBTPU9kKHUsUyksWGFbU119ZnVuY3Rpb24gbHIodSxTKXsoIVMucHRyVHlwZXx8IVMucHRyKSYmWXIoIm1ha2VDbGFzc0hhbmRsZSByZXF1aXJlcyBwdHIgYW5kIHB0clR5cGUiKTt2YXIgVz0hIVMuc21hcnRQdHJUeXBlLFA9ISFTLnNtYXJ0UHRyO3JldHVybiBXIT09UCYmWXIoIkJvdGggc21hcnRQdHJUeXBlIGFuZCBzbWFydFB0ciBtdXN0IGJlIHNwZWNpZmllZCIpLFMuY291bnQ9e3ZhbHVlOjF9LCRhKE9iamVjdC5jcmVhdGUodSx7JCQ6e3ZhbHVlOlN9fSkpfWZ1bmN0aW9uIGtBKHUpe3ZhciBTPXRoaXMuZ2V0UG9pbnRlZSh1KTtpZighUylyZXR1cm4gdGhpcy5kZXN0cnVjdG9yKHUpLG51bGw7dmFyIFc9cWEodGhpcy5yZWdpc3RlcmVkQ2xhc3MsUyk7aWYoVyE9PXZvaWQgMCl7aWYoVy4kJC5jb3VudC52YWx1ZT09PTApcmV0dXJuIFcuJCQucHRyPVMsVy4kJC5zbWFydFB0cj11LFcuY2xvbmUoKTt2YXIgUD1XLmNsb25lKCk7cmV0dXJuIHRoaXMuZGVzdHJ1Y3Rvcih1KSxQfWZ1bmN0aW9uICQoKXtyZXR1cm4gdGhpcy5pc1NtYXJ0UG9pbnRlcj9scih0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0aGlzLnBvaW50ZWVUeXBlLHB0cjpTLHNtYXJ0UHRyVHlwZTp0aGlzLHNtYXJ0UHRyOnV9KTpscih0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0aGlzLHB0cjp1fSl9dmFyIGh0PXRoaXMucmVnaXN0ZXJlZENsYXNzLmdldEFjdHVhbFR5cGUoUyksZHQ9cWNbaHRdO2lmKCFkdClyZXR1cm4gJC5jYWxsKHRoaXMpO3ZhciBmdDt0aGlzLmlzQ29uc3Q/ZnQ9ZHQuY29uc3RQb2ludGVyVHlwZTpmdD1kdC5wb2ludGVyVHlwZTt2YXIgQnQ9WGMoUyx0aGlzLnJlZ2lzdGVyZWRDbGFzcyxmdC5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBCdD09PW51bGw/JC5jYWxsKHRoaXMpOnRoaXMuaXNTbWFydFBvaW50ZXI/bHIoZnQucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOmZ0LHB0cjpCdCxzbWFydFB0clR5cGU6dGhpcyxzbWFydFB0cjp1fSk6bHIoZnQucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOmZ0LHB0cjpCdH0pfXZhciAkYT1mdW5jdGlvbih1KXtyZXR1cm4gdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5PiJ1Ij8oJGE9Uz0+Uyx1KTooY3I9bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KFM9Pntjb25zb2xlLndhcm4oUy5sZWFrV2FybmluZy5zdGFjay5yZXBsYWNlKC9eRXJyb3I6IC8sIiIpKSxLYyhTLiQkKX0pLCRhPVM9Pnt2YXIgVz1TLiQkLFA9ISFXLnNtYXJ0UHRyO2lmKFApe3ZhciAkPXskJDpXfSxodD1XLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzOyQubGVha1dhcm5pbmc9bmV3IEVycm9yKGBFbWJpbmQgZm91bmQgYSBsZWFrZWQgQysrIGluc3RhbmNlICR7aHQubmFtZX0gPCR7UG4oVy5wdHIpfT4uCldlJ2xsIGZyZWUgaXQgYXV0b21hdGljYWxseSBpbiB0aGlzIGNhc2UsIGJ1dCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHJlbGlhYmxlIGFjcm9zcyB2YXJpb3VzIGVudmlyb25tZW50cy4KTWFrZSBzdXJlIHRvIGludm9rZSAuZGVsZXRlKCkgbWFudWFsbHkgb25jZSB5b3UncmUgZG9uZSB3aXRoIHRoZSBpbnN0YW5jZSBpbnN0ZWFkLgpPcmlnaW5hbGx5IGFsbG9jYXRlZGApLCJjYXB0dXJlU3RhY2tUcmFjZSJpbiBFcnJvciYmRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoJC5sZWFrV2FybmluZyxrQSksY3IucmVnaXN0ZXIoUywkLFMpfXJldHVybiBTfSxJaT1TPT5jci51bnJlZ2lzdGVyKFMpLCRhKHUpKX07ZnVuY3Rpb24gVmQoKXtpZih0aGlzLiQkLnB0cnx8Vm4odGhpcyksdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSlyZXR1cm4gdGhpcy4kJC5jb3VudC52YWx1ZSs9MSx0aGlzO3ZhciB1PSRhKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6VWgodGhpcy4kJCl9fSkpO3JldHVybiB1LiQkLmNvdW50LnZhbHVlKz0xLHUuJCQuZGVsZXRlU2NoZWR1bGVkPSExLHV9ZnVuY3Rpb24gZHIoKXt0aGlzLiQkLnB0cnx8Vm4odGhpcyksdGhpcy4kJC5kZWxldGVTY2hlZHVsZWQmJiF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlJiYkZSgiT2JqZWN0IGFscmVhZHkgc2NoZWR1bGVkIGZvciBkZWxldGlvbiIpLElpKHRoaXMpLEtjKHRoaXMuJCQpLHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGV8fCh0aGlzLiQkLnNtYXJ0UHRyPXZvaWQgMCx0aGlzLiQkLnB0cj12b2lkIDApfWZ1bmN0aW9uICRjKCl7cmV0dXJuIXRoaXMuJCQucHRyfWZ1bmN0aW9uIHRsKCl7cmV0dXJuIHRoaXMuJCQucHRyfHxWbih0aGlzKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUmJiRlKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksQWEucHVzaCh0aGlzKSxBYS5sZW5ndGg9PT0xJiZoYSYmaGEoTGgpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkPSEwLHRoaXN9ZnVuY3Rpb24geWgoKXttci5wcm90b3R5cGUuaXNBbGlhc09mPU1oLG1yLnByb3RvdHlwZS5jbG9uZT1WZCxtci5wcm90b3R5cGUuZGVsZXRlPWRyLG1yLnByb3RvdHlwZS5pc0RlbGV0ZWQ9JGMsbXIucHJvdG90eXBlLmRlbGV0ZUxhdGVyPXRsfWZ1bmN0aW9uIG1yKCl7fXZhciB3aD00OCxHZD01NztmdW5jdGlvbiB4aCh1KXtpZih1PT09dm9pZCAwKXJldHVybiJfdW5rbm93biI7dT11LnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciBTPXUuY2hhckNvZGVBdCgwKTtyZXR1cm4gUz49d2gmJlM8PUdkP2BfJHt1fWA6dX1mdW5jdGlvbiBQaCh1LFMpe3JldHVybiB1PXhoKHUpLHtbdV06ZnVuY3Rpb24oKXtyZXR1cm4gUy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fVt1XX1mdW5jdGlvbiBlbCh1LFMsVyl7aWYodVtTXS5vdmVybG9hZFRhYmxlPT09dm9pZCAwKXt2YXIgUD11W1NdO3VbU109ZnVuY3Rpb24oKXtyZXR1cm4gdVtTXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpfHwkZShgRnVuY3Rpb24gJyR7V30nIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJHthcmd1bWVudHMubGVuZ3RofSkgLSBleHBlY3RzIG9uZSBvZiAoJHt1W1NdLm92ZXJsb2FkVGFibGV9KSFgKSx1W1NdLm92ZXJsb2FkVGFibGVbYXJndW1lbnRzLmxlbmd0aF0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSx1W1NdLm92ZXJsb2FkVGFibGU9W10sdVtTXS5vdmVybG9hZFRhYmxlW1AuYXJnQ291bnRdPVB9fWZ1bmN0aW9uIGlsKHUsUyxXKXtpLmhhc093blByb3BlcnR5KHUpPygoVz09PXZvaWQgMHx8aVt1XS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZpW3VdLm92ZXJsb2FkVGFibGVbV10hPT12b2lkIDApJiYkZShgQ2Fubm90IHJlZ2lzdGVyIHB1YmxpYyBuYW1lICcke3V9JyB0d2ljZWApLGVsKGksdSx1KSxpLmhhc093blByb3BlcnR5KFcpJiYkZShgQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIG92ZXJsb2FkcyBvZiBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJHtXfSkhYCksaVt1XS5vdmVybG9hZFRhYmxlW1ddPVMpOihpW3VdPVMsVyE9PXZvaWQgMCYmKGlbdV0ubnVtQXJndW1lbnRzPVcpKX1mdW5jdGlvbiBCZCh1LFMsVyxQLCQsaHQsZHQsZnQpe3RoaXMubmFtZT11LHRoaXMuY29uc3RydWN0b3I9Uyx0aGlzLmluc3RhbmNlUHJvdG90eXBlPVcsdGhpcy5yYXdEZXN0cnVjdG9yPVAsdGhpcy5iYXNlQ2xhc3M9JCx0aGlzLmdldEFjdHVhbFR5cGU9aHQsdGhpcy51cGNhc3Q9ZHQsdGhpcy5kb3duY2FzdD1mdCx0aGlzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zPVtdfWZ1bmN0aW9uIHRBKHUsUyxXKXtmb3IoO1MhPT1XOylTLnVwY2FzdHx8JGUoYEV4cGVjdGVkIG51bGwgb3IgaW5zdGFuY2Ugb2YgJHtXLm5hbWV9LCBnb3QgYW4gaW5zdGFuY2Ugb2YgJHtTLm5hbWV9YCksdT1TLnVwY2FzdCh1KSxTPVMuYmFzZUNsYXNzO3JldHVybiB1fWZ1bmN0aW9uIFdkKHUsUyl7aWYoUz09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJiRlKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApLDA7Uy4kJHx8JGUoYENhbm5vdCBwYXNzICIke2xhKFMpfSIgYXMgYSAke3RoaXMubmFtZX1gKSxTLiQkLnB0cnx8JGUoYENhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICR7dGhpcy5uYW1lfWApO3ZhciBXPVMuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsUD10QShTLiQkLnB0cixXLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gUH1mdW5jdGlvbiBEZCh1LFMpe3ZhciBXO2lmKFM9PT1udWxsKXJldHVybiB0aGlzLmlzUmVmZXJlbmNlJiYkZShgbnVsbCBpcyBub3QgYSB2YWxpZCAke3RoaXMubmFtZX1gKSx0aGlzLmlzU21hcnRQb2ludGVyPyhXPXRoaXMucmF3Q29uc3RydWN0b3IoKSx1IT09bnVsbCYmdS5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixXKSxXKTowO1MuJCR8fCRlKGBDYW5ub3QgcGFzcyAiJHtsYShTKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCksUy4kJC5wdHJ8fCRlKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKSwhdGhpcy5pc0NvbnN0JiZTLiQkLnB0clR5cGUuaXNDb25zdCYmJGUoYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtTLiQkLnNtYXJ0UHRyVHlwZT9TLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOlMuJCQucHRyVHlwZS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gKTt2YXIgUD1TLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO2lmKFc9dEEoUy4kJC5wdHIsUCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyksdGhpcy5pc1NtYXJ0UG9pbnRlcilzd2l0Y2goUy4kJC5zbWFydFB0cj09PXZvaWQgMCYmJGUoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIiksdGhpcy5zaGFyaW5nUG9saWN5KXtjYXNlIDA6Uy4kJC5zbWFydFB0clR5cGU9PT10aGlzP1c9Uy4kJC5zbWFydFB0cjokZShgQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAke1MuJCQuc21hcnRQdHJUeXBlP1MuJCQuc21hcnRQdHJUeXBlLm5hbWU6Uy4kJC5wdHJUeXBlLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApO2JyZWFrO2Nhc2UgMTpXPVMuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKFMuJCQuc21hcnRQdHJUeXBlPT09dGhpcylXPVMuJCQuc21hcnRQdHI7ZWxzZXt2YXIgJD1TLmNsb25lKCk7Vz10aGlzLnJhd1NoYXJlKFcsR28udG9IYW5kbGUoZnVuY3Rpb24oKXskLmRlbGV0ZSgpfSkpLHUhPT1udWxsJiZ1LnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLFcpfWJyZWFrO2RlZmF1bHQ6JGUoIlVuc3VwcG9ydGluZyBzaGFyaW5nIHBvbGljeSIpfXJldHVybiBXfWZ1bmN0aW9uIE1kKHUsUyl7aWYoUz09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJiRlKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApLDA7Uy4kJHx8JGUoYENhbm5vdCBwYXNzICIke2xhKFMpfSIgYXMgYSAke3RoaXMubmFtZX1gKSxTLiQkLnB0cnx8JGUoYENhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICR7dGhpcy5uYW1lfWApLFMuJCQucHRyVHlwZS5pc0NvbnN0JiYkZShgQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAke1MuJCQucHRyVHlwZS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gKTt2YXIgVz1TLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFA9dEEoUy4kJC5wdHIsVyx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFB9ZnVuY3Rpb24gTEEodSl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHhbdT4+Ml0pfWZ1bmN0aW9uIGVBKHUpe3JldHVybiB0aGlzLnJhd0dldFBvaW50ZWUmJih1PXRoaXMucmF3R2V0UG9pbnRlZSh1KSksdX1mdW5jdGlvbiBVZCh1KXt0aGlzLnJhd0Rlc3RydWN0b3ImJnRoaXMucmF3RGVzdHJ1Y3Rvcih1KX1mdW5jdGlvbiBRZCh1KXt1IT09bnVsbCYmdS5kZWxldGUoKX1mdW5jdGlvbiB5QSgpe0hvLnByb3RvdHlwZS5nZXRQb2ludGVlPWVBLEhvLnByb3RvdHlwZS5kZXN0cnVjdG9yPVVkLEhvLnByb3RvdHlwZS5hcmdQYWNrQWR2YW5jZT04LEhvLnByb3RvdHlwZS5yZWFkVmFsdWVGcm9tUG9pbnRlcj1MQSxIby5wcm90b3R5cGUuZGVsZXRlT2JqZWN0PVFkLEhvLnByb3RvdHlwZS5mcm9tV2lyZVR5cGU9a0F9ZnVuY3Rpb24gSG8odSxTLFcsUCwkLGh0LGR0LGZ0LEJ0LEx0LHJlKXt0aGlzLm5hbWU9dSx0aGlzLnJlZ2lzdGVyZWRDbGFzcz1TLHRoaXMuaXNSZWZlcmVuY2U9Vyx0aGlzLmlzQ29uc3Q9UCx0aGlzLmlzU21hcnRQb2ludGVyPSQsdGhpcy5wb2ludGVlVHlwZT1odCx0aGlzLnNoYXJpbmdQb2xpY3k9ZHQsdGhpcy5yYXdHZXRQb2ludGVlPWZ0LHRoaXMucmF3Q29uc3RydWN0b3I9QnQsdGhpcy5yYXdTaGFyZT1MdCx0aGlzLnJhd0Rlc3RydWN0b3I9cmUsISQmJlMuYmFzZUNsYXNzPT09dm9pZCAwP1A/KHRoaXMudG9XaXJlVHlwZT1XZCx0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsKToodGhpcy50b1dpcmVUeXBlPU1kLHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGwpOnRoaXMudG9XaXJlVHlwZT1EZH1mdW5jdGlvbiBubCh1LFMsVyl7aS5oYXNPd25Qcm9wZXJ0eSh1KXx8WXIoIlJlcGxhY2luZyBub25leGlzdGFudCBwdWJsaWMgc3ltYm9sIiksaVt1XS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZXIT09dm9pZCAwP2lbdV0ub3ZlcmxvYWRUYWJsZVtXXT1TOihpW3VdPVMsaVt1XS5hcmdDb3VudD1XKX12YXIgdm89KHUsUyxXKT0+e2MoImR5bkNhbGxfIit1IGluIGksYGJhZCBmdW5jdGlvbiBwb2ludGVyIHR5cGUgLSBkeW5DYWxsIGZ1bmN0aW9uIG5vdCBmb3VuZCBmb3Igc2lnICcke3V9J2ApLFcmJlcubGVuZ3RoP2MoVy5sZW5ndGg9PT11LnN1YnN0cmluZygxKS5yZXBsYWNlKC9qL2csIi0tIikubGVuZ3RoKTpjKHUubGVuZ3RoPT0xKTt2YXIgUD1pWyJkeW5DYWxsXyIrdV07cmV0dXJuIFcmJlcubGVuZ3RoP1AuYXBwbHkobnVsbCxbU10uY29uY2F0KFcpKTpQLmNhbGwobnVsbCxTKX0saUE9W10sSmg9dT0+e3ZhciBTPWlBW3VdO3JldHVybiBTfHwodT49aUEubGVuZ3RoJiYoaUEubGVuZ3RoPXUrMSksaUFbdV09Uz1CLmdldCh1KSksYyhCLmdldCh1KT09UywiSmF2YVNjcmlwdC1zaWRlIFdhc20gZnVuY3Rpb24gdGFibGUgbWlycm9yIGlzIG91dCBvZiBkYXRlISIpLFN9LGtkPSh1LFMsVyk9PntpZih1LmluY2x1ZGVzKCJqIikpcmV0dXJuIHZvKHUsUyxXKTtjKEpoKFMpLGBtaXNzaW5nIHRhYmxlIGVudHJ5IGluIGR5bkNhbGw6ICR7U31gKTt2YXIgUD1KaChTKS5hcHBseShudWxsLFcpO3JldHVybiBQfSxMZD0odSxTKT0+e2ModS5pbmNsdWRlcygiaiIpfHx1LmluY2x1ZGVzKCJwIiksImdldER5bkNhbGxlciBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBpNjQgc2lncyIpO3ZhciBXPVtdO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBXLmxlbmd0aD0wLE9iamVjdC5hc3NpZ24oVyxhcmd1bWVudHMpLGtkKHUsUyxXKX19O2Z1bmN0aW9uIGpuKHUsUyl7dT1vbih1KTtmdW5jdGlvbiBXKCl7cmV0dXJuIHUuaW5jbHVkZXMoImoiKT9MZCh1LFMpOkpoKFMpfXZhciBQPVcoKTtyZXR1cm4gdHlwZW9mIFAhPSJmdW5jdGlvbiImJiRlKGB1bmtub3duIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aCBzaWduYXR1cmUgJHt1fTogJHtTfWApLFB9ZnVuY3Rpb24gc2wodSxTKXt2YXIgVz1QaChTLGZ1bmN0aW9uKFApe3RoaXMubmFtZT1TLHRoaXMubWVzc2FnZT1QO3ZhciAkPW5ldyBFcnJvcihQKS5zdGFjazskIT09dm9pZCAwJiYodGhpcy5zdGFjaz10aGlzLnRvU3RyaW5nKCkrYApgKyQucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywiIikpfSk7cmV0dXJuIFcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodS5wcm90b3R5cGUpLFcucHJvdG90eXBlLmNvbnN0cnVjdG9yPVcsVy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlPT09dm9pZCAwP3RoaXMubmFtZTpgJHt0aGlzLm5hbWV9OiAke3RoaXMubWVzc2FnZX1gfSxXfXZhciBqaD12b2lkIDA7ZnVuY3Rpb24gbkEodSl7dmFyIFM9bTgodSksVz1vbihTKTtyZXR1cm4gSEEoUyksV31mdW5jdGlvbiBjYSh1LFMpe3ZhciBXPVtdLFA9e307ZnVuY3Rpb24gJChodCl7aWYoIVBbaHRdJiYhU29baHRdKXtpZihGcltodF0pe0ZyW2h0XS5mb3JFYWNoKCQpO3JldHVybn1XLnB1c2goaHQpLFBbaHRdPSEwfX10aHJvdyBTLmZvckVhY2goJCksbmV3IGpoKGAke3V9OiBgK1cubWFwKG5BKS5qb2luKFsiLCAiXSkpfWZ1bmN0aW9uIEhoKHUsUyxXLFAsJCxodCxkdCxmdCxCdCxMdCxyZSx1ZSxmZSl7cmU9b24ocmUpLGh0PWpuKCQsaHQpLGZ0JiYoZnQ9am4oZHQsZnQpKSxMdCYmKEx0PWpuKEJ0LEx0KSksZmU9am4odWUsZmUpO3ZhciBFZT14aChyZSk7aWwoRWUsZnVuY3Rpb24oKXtjYShgQ2Fubm90IGNvbnN0cnVjdCAke3JlfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsW1BdKX0pLHhzKFt1LFMsV10sUD9bUF06W10sZnVuY3Rpb24oU2Upe1NlPVNlWzBdO3ZhciBkaSxsbjtQPyhkaT1TZS5yZWdpc3RlcmVkQ2xhc3MsbG49ZGkuaW5zdGFuY2VQcm90b3R5cGUpOmxuPW1yLnByb3RvdHlwZTt2YXIgUm49UGgoRWUsZnVuY3Rpb24oKXtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykhPT1xdCl0aHJvdyBuZXcgT28oIlVzZSAnbmV3JyB0byBjb25zdHJ1Y3QgIityZSk7aWYoRmUuY29uc3RydWN0b3JfYm9keT09PXZvaWQgMCl0aHJvdyBuZXcgT28ocmUrIiBoYXMgbm8gYWNjZXNzaWJsZSBjb25zdHJ1Y3RvciIpO3ZhciBtcz1GZS5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ3VtZW50cy5sZW5ndGhdO2lmKG1zPT09dm9pZCAwKXRocm93IG5ldyBPbyhgVHJpZWQgdG8gaW52b2tlIGN0b3Igb2YgJHtyZX0gd2l0aCBpbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzICgke2FyZ3VtZW50cy5sZW5ndGh9KSAtIGV4cGVjdGVkICgke09iamVjdC5rZXlzKEZlLmNvbnN0cnVjdG9yX2JvZHkpLnRvU3RyaW5nKCl9KSBwYXJhbWV0ZXJzIGluc3RlYWQhYCk7cmV0dXJuIG1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHF0PU9iamVjdC5jcmVhdGUobG4se2NvbnN0cnVjdG9yOnt2YWx1ZTpSbn19KTtSbi5wcm90b3R5cGU9cXQ7dmFyIEZlPW5ldyBCZChyZSxSbixxdCxmZSxkaSxodCxmdCxMdCk7RmUuYmFzZUNsYXNzJiYoRmUuYmFzZUNsYXNzLl9fZGVyaXZlZENsYXNzZXM9PT12b2lkIDAmJihGZS5iYXNlQ2xhc3MuX19kZXJpdmVkQ2xhc3Nlcz1bXSksRmUuYmFzZUNsYXNzLl9fZGVyaXZlZENsYXNzZXMucHVzaChGZSkpO3ZhciBUcz1uZXcgSG8ocmUsRmUsITAsITEsITEpLFpuPW5ldyBIbyhyZSsiKiIsRmUsITEsITEsITEpLEtvPW5ldyBIbyhyZSsiIGNvbnN0KiIsRmUsITEsITAsITEpO3JldHVybiBxY1t1XT17cG9pbnRlclR5cGU6Wm4sY29uc3RQb2ludGVyVHlwZTpLb30sbmwoRWUsUm4pLFtUcyxabixLb119KX1mdW5jdGlvbiB2aCh1LFMpe2Zvcih2YXIgVz1bXSxQPTA7UDx1O1ArKylXLnB1c2goSFtTK1AqND4+Ml0pO3JldHVybiBXfWZ1bmN0aW9uIHdBKHUpe2Zvcig7dS5sZW5ndGg7KXt2YXIgUz11LnBvcCgpLFc9dS5wb3AoKTtXKFMpfX1mdW5jdGlvbiBvbCh1LFMpe2lmKCEodSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl0aHJvdyBuZXcgVHlwZUVycm9yKGBuZXdfIGNhbGxlZCB3aXRoIGNvbnN0cnVjdG9yIHR5cGUgJHt0eXBlb2YgdX0gd2hpY2ggaXMgbm90IGEgZnVuY3Rpb25gKTt2YXIgVz1QaCh1Lm5hbWV8fCJ1bmtub3duRnVuY3Rpb25OYW1lIixmdW5jdGlvbigpe30pO1cucHJvdG90eXBlPXUucHJvdG90eXBlO3ZhciBQPW5ldyBXLCQ9dS5hcHBseShQLFMpO3JldHVybiAkIGluc3RhbmNlb2YgT2JqZWN0PyQ6UH1mdW5jdGlvbiB6aCh1LFMsVyxQLCQsaHQpe3ZhciBkdD1TLmxlbmd0aDtkdDwyJiYkZSgiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIiksYyghaHQsIkFzeW5jIGJpbmRpbmdzIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIEpTUEkuIik7Zm9yKHZhciBmdD1TWzFdIT09bnVsbCYmVyE9PW51bGwsQnQ9ITEsTHQ9MTtMdDxTLmxlbmd0aDsrK0x0KWlmKFNbTHRdIT09bnVsbCYmU1tMdF0uZGVzdHJ1Y3RvckZ1bmN0aW9uPT09dm9pZCAwKXtCdD0hMDticmVha31mb3IodmFyIHJlPVNbMF0ubmFtZSE9PSJ2b2lkIix1ZT0iIixmZT0iIixMdD0wO0x0PGR0LTI7KytMdCl1ZSs9KEx0IT09MD8iLCAiOiIiKSsiYXJnIitMdCxmZSs9KEx0IT09MD8iLCAiOiIiKSsiYXJnIitMdCsiV2lyZWQiO3ZhciBFZT1gCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICR7eGgodSl9KCR7dWV9KSB7CiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09ICR7ZHQtMn0pIHsKICAgICAgICAgIHRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiAke3V9IGNhbGxlZCB3aXRoICR7YXJndW1lbnRzLmxlbmd0aH0gYXJndW1lbnRzLCBleHBlY3RlZCAke2R0LTJ9IGFyZ3MhJyk7CiAgICAgICAgfWA7QnQmJihFZSs9YHZhciBkZXN0cnVjdG9ycyA9IFtdOwpgKTt2YXIgU2U9QnQ/ImRlc3RydWN0b3JzIjoibnVsbCIsZGk9WyJ0aHJvd0JpbmRpbmdFcnJvciIsImludm9rZXIiLCJmbiIsInJ1bkRlc3RydWN0b3JzIiwicmV0VHlwZSIsImNsYXNzUGFyYW0iXSxsbj1bJGUsUCwkLHdBLFNbMF0sU1sxXV07ZnQmJihFZSs9InZhciB0aGlzV2lyZWQgPSBjbGFzc1BhcmFtLnRvV2lyZVR5cGUoIitTZStgLCB0aGlzKTsKYCk7Zm9yKHZhciBMdD0wO0x0PGR0LTI7KytMdClFZSs9InZhciBhcmciK0x0KyJXaXJlZCA9IGFyZ1R5cGUiK0x0KyIudG9XaXJlVHlwZSgiK1NlKyIsIGFyZyIrTHQrIik7IC8vICIrU1tMdCsyXS5uYW1lK2AKYCxkaS5wdXNoKCJhcmdUeXBlIitMdCksbG4ucHVzaChTW0x0KzJdKTtpZihmdCYmKGZlPSJ0aGlzV2lyZWQiKyhmZS5sZW5ndGg+MD8iLCAiOiIiKStmZSksRWUrPShyZXx8aHQ/InZhciBydiA9ICI6IiIpKyJpbnZva2VyKGZuIisoZmUubGVuZ3RoPjA/IiwgIjoiIikrZmUrYCk7CmAsQnQpRWUrPWBydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7CmA7ZWxzZSBmb3IodmFyIEx0PWZ0PzE6MjtMdDxTLmxlbmd0aDsrK0x0KXt2YXIgUm49THQ9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhMdC0yKSsiV2lyZWQiO1NbTHRdLmRlc3RydWN0b3JGdW5jdGlvbiE9PW51bGwmJihFZSs9Um4rIl9kdG9yKCIrUm4rIik7IC8vICIrU1tMdF0ubmFtZStgCmAsZGkucHVzaChSbisiX2R0b3IiKSxsbi5wdXNoKFNbTHRdLmRlc3RydWN0b3JGdW5jdGlvbikpfXJldHVybiByZSYmKEVlKz1gdmFyIHJldCA9IHJldFR5cGUuZnJvbVdpcmVUeXBlKHJ2KTsKcmV0dXJuIHJldDsKYCksRWUrPWB9CmAsZGkucHVzaChFZSksb2woRnVuY3Rpb24sZGkpLmFwcGx5KG51bGwsbG4pfWZ1bmN0aW9uIHlkKHUsUyxXLFAsJCxodCl7YyhTPjApO3ZhciBkdD12aChTLFcpOyQ9am4oUCwkKSx4cyhbXSxbdV0sZnVuY3Rpb24oZnQpe2Z0PWZ0WzBdO3ZhciBCdD1gY29uc3RydWN0b3IgJHtmdC5uYW1lfWA7aWYoZnQucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9PT12b2lkIDAmJihmdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT1bXSksZnQucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHlbUy0xXSE9PXZvaWQgMCl0aHJvdyBuZXcgT28oYENhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMgd2l0aCBpZGVudGljYWwgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCR7Uy0xfSkgZm9yIGNsYXNzICcke2Z0Lm5hbWV9JyEgT3ZlcmxvYWQgcmVzb2x1dGlvbiBpcyBjdXJyZW50bHkgb25seSBwZXJmb3JtZWQgdXNpbmcgdGhlIHBhcmFtZXRlciBjb3VudCwgbm90IGFjdHVhbCB0eXBlIGluZm8hYCk7cmV0dXJuIGZ0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W1MtMV09KCk9PntjYShgQ2Fubm90IGNvbnN0cnVjdCAke2Z0Lm5hbWV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCxkdCl9LHhzKFtdLGR0LGZ1bmN0aW9uKEx0KXtyZXR1cm4gTHQuc3BsaWNlKDEsMCxudWxsKSxmdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVtTLTFdPXpoKEJ0LEx0LG51bGwsJCxodCksW119KSxbXX0pfWZ1bmN0aW9uIEtoKHUsUyxXLFAsJCxodCxkdCxmdCxCdCl7dmFyIEx0PXZoKFcsUCk7Uz1vbihTKSxodD1qbigkLGh0KSx4cyhbXSxbdV0sZnVuY3Rpb24ocmUpe3JlPXJlWzBdO3ZhciB1ZT1gJHtyZS5uYW1lfS4ke1N9YDtTLnN0YXJ0c1dpdGgoIkBAIikmJihTPVN5bWJvbFtTLnN1YnN0cmluZygyKV0pLGZ0JiZyZS5yZWdpc3RlcmVkQ2xhc3MucHVyZVZpcnR1YWxGdW5jdGlvbnMucHVzaChTKTtmdW5jdGlvbiBmZSgpe2NhKGBDYW5ub3QgY2FsbCAke3VlfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsTHQpfXZhciBFZT1yZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUsU2U9RWVbU107cmV0dXJuIFNlPT09dm9pZCAwfHxTZS5vdmVybG9hZFRhYmxlPT09dm9pZCAwJiZTZS5jbGFzc05hbWUhPT1yZS5uYW1lJiZTZS5hcmdDb3VudD09PVctMj8oZmUuYXJnQ291bnQ9Vy0yLGZlLmNsYXNzTmFtZT1yZS5uYW1lLEVlW1NdPWZlKTooZWwoRWUsUyx1ZSksRWVbU10ub3ZlcmxvYWRUYWJsZVtXLTJdPWZlKSx4cyhbXSxMdCxmdW5jdGlvbihkaSl7dmFyIGxuPXpoKHVlLGRpLHJlLGh0LGR0LEJ0KTtyZXR1cm4gRWVbU10ub3ZlcmxvYWRUYWJsZT09PXZvaWQgMD8obG4uYXJnQ291bnQ9Vy0yLEVlW1NdPWxuKTpFZVtTXS5vdmVybG9hZFRhYmxlW1ctMl09bG4sW119KSxbXX0pfWZ1bmN0aW9uIFNzKHUsUyxXKXtyZXR1cm4gdSBpbnN0YW5jZW9mIE9iamVjdHx8JGUoYCR7V30gd2l0aCBpbnZhbGlkICJ0aGlzIjogJHt1fWApLHUgaW5zdGFuY2VvZiBTLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcnx8JGUoYCR7V30gaW5jb21wYXRpYmxlIHdpdGggInRoaXMiIG9mIHR5cGUgJHt1LmNvbnN0cnVjdG9yLm5hbWV9YCksdS4kJC5wdHJ8fCRlKGBjYW5ub3QgY2FsbCBlbXNjcmlwdGVuIGJpbmRpbmcgbWV0aG9kICR7V30gb24gZGVsZXRlZCBvYmplY3RgKSx0QSh1LiQkLnB0cix1LiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFMucmVnaXN0ZXJlZENsYXNzKX1mdW5jdGlvbiBYaCh1LFMsVyxQLCQsaHQsZHQsZnQsQnQsTHQpe1M9b24oUyksJD1qbihQLCQpLHhzKFtdLFt1XSxmdW5jdGlvbihyZSl7cmU9cmVbMF07dmFyIHVlPWAke3JlLm5hbWV9LiR7U31gLGZlPXtnZXQoKXtjYShgQ2Fubm90IGFjY2VzcyAke3VlfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsW1csZHRdKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O3JldHVybiBCdD9mZS5zZXQ9KCk9PntjYShgQ2Fubm90IGFjY2VzcyAke3VlfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsW1csZHRdKX06ZmUuc2V0PUVlPT57JGUodWUrIiBpcyBhIHJlYWQtb25seSBwcm9wZXJ0eSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkocmUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLFMsZmUpLHhzKFtdLEJ0P1tXLGR0XTpbV10sZnVuY3Rpb24oRWUpe3ZhciBTZT1FZVswXSxkaT17Z2V0KCl7dmFyIFJuPVNzKHRoaXMscmUsdWUrIiBnZXR0ZXIiKTtyZXR1cm4gU2UuZnJvbVdpcmVUeXBlKCQoaHQsUm4pKX0sZW51bWVyYWJsZTohMH07aWYoQnQpe0J0PWpuKGZ0LEJ0KTt2YXIgbG49RWVbMV07ZGkuc2V0PWZ1bmN0aW9uKFJuKXt2YXIgcXQ9U3ModGhpcyxyZSx1ZSsiIHNldHRlciIpLEZlPVtdO0J0KEx0LHF0LGxuLnRvV2lyZVR5cGUoRmUsUm4pKSx3QShGZSl9fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLFMsZGkpLFtdfSksW119KX1mdW5jdGlvbiB3ZCgpe09iamVjdC5hc3NpZ24ocmwucHJvdG90eXBlLHtnZXQodSl7cmV0dXJuIGModGhpcy5hbGxvY2F0ZWRbdV0hPT12b2lkIDAsYGludmFsaWQgaGFuZGxlOiAke3V9YCksdGhpcy5hbGxvY2F0ZWRbdV19LGhhcyh1KXtyZXR1cm4gdGhpcy5hbGxvY2F0ZWRbdV0hPT12b2lkIDB9LGFsbG9jYXRlKHUpe3ZhciBTPXRoaXMuZnJlZWxpc3QucG9wKCl8fHRoaXMuYWxsb2NhdGVkLmxlbmd0aDtyZXR1cm4gdGhpcy5hbGxvY2F0ZWRbU109dSxTfSxmcmVlKHUpe2ModGhpcy5hbGxvY2F0ZWRbdV0hPT12b2lkIDApLHRoaXMuYWxsb2NhdGVkW3VdPXZvaWQgMCx0aGlzLmZyZWVsaXN0LnB1c2godSl9fSl9ZnVuY3Rpb24gcmwoKXt0aGlzLmFsbG9jYXRlZD1bdm9pZCAwXSx0aGlzLmZyZWVsaXN0PVtdfXZhciBBbz1uZXcgcmw7ZnVuY3Rpb24gaG8odSl7dT49QW8ucmVzZXJ2ZWQmJi0tQW8uZ2V0KHUpLnJlZmNvdW50PT09MCYmQW8uZnJlZSh1KX1mdW5jdGlvbiB4ZCgpe2Zvcih2YXIgdT0wLFM9QW8ucmVzZXJ2ZWQ7UzxBby5hbGxvY2F0ZWQubGVuZ3RoOysrUylBby5hbGxvY2F0ZWRbU10hPT12b2lkIDAmJisrdTtyZXR1cm4gdX1mdW5jdGlvbiBQZCgpe0FvLmFsbG9jYXRlZC5wdXNoKHt2YWx1ZTp2b2lkIDB9LHt2YWx1ZTpudWxsfSx7dmFsdWU6ITB9LHt2YWx1ZTohMX0pLEFvLnJlc2VydmVkPUFvLmFsbG9jYXRlZC5sZW5ndGgsaS5jb3VudF9lbXZhbF9oYW5kbGVzPXhkfXZhciBHbz17dG9WYWx1ZTp1PT4odXx8JGUoIkNhbm5vdCB1c2UgZGVsZXRlZCB2YWwuIGhhbmRsZSA9ICIrdSksQW8uZ2V0KHUpLnZhbHVlKSx0b0hhbmRsZTp1PT57c3dpdGNoKHUpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6cmV0dXJuIEFvLmFsbG9jYXRlKHtyZWZjb3VudDoxLHZhbHVlOnV9KX19fTtmdW5jdGlvbiB4QSh1LFMpe1M9b24oUyksVG4odSx7bmFtZTpTLGZyb21XaXJlVHlwZTpmdW5jdGlvbihXKXt2YXIgUD1Hby50b1ZhbHVlKFcpO3JldHVybiBobyhXKSxQfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKFcsUCl7cmV0dXJuIEdvLnRvSGFuZGxlKFApfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOkxBLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gbGEodSl7aWYodT09PW51bGwpcmV0dXJuIm51bGwiO3ZhciBTPXR5cGVvZiB1O3JldHVybiBTPT09Im9iamVjdCJ8fFM9PT0iYXJyYXkifHxTPT09ImZ1bmN0aW9uIj91LnRvU3RyaW5nKCk6IiIrdX1mdW5jdGlvbiBkYSh1LFMpe3N3aXRjaChTKXtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKFcpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShqW1c+PjJdKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihXKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoWFtXPj4zXSl9O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBmbG9hdCB0eXBlOiAiK3UpfX1mdW5jdGlvbiBKZCh1LFMsVyl7dmFyIFA9aG4oVyk7Uz1vbihTKSxUbih1LHtuYW1lOlMsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKCQpe3JldHVybiAkfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKCQsaHQpe2lmKHR5cGVvZiBodCE9Im51bWJlciImJnR5cGVvZiBodCE9ImJvb2xlYW4iKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBjb252ZXJ0ICR7bGEoaHQpfSB0byAke3RoaXMubmFtZX1gKTtyZXR1cm4gaHR9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6ZGEoUyxQKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIGpkKHUsUyxXLFAsJCxodCxkdCl7dmFyIGZ0PXZoKFMsVyk7dT1vbih1KSwkPWpuKFAsJCksaWwodSxmdW5jdGlvbigpe2NhKGBDYW5ub3QgY2FsbCAke3V9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCxmdCl9LFMtMSkseHMoW10sZnQsZnVuY3Rpb24oQnQpe3ZhciBMdD1bQnRbMF0sbnVsbF0uY29uY2F0KEJ0LnNsaWNlKDEpKTtyZXR1cm4gbmwodSx6aCh1LEx0LG51bGwsJCxodCxkdCksUy0xKSxbXX0pfWZ1bmN0aW9uIEhkKHUsUyxXKXtzd2l0Y2goUyl7Y2FzZSAwOnJldHVybiBXP2Z1bmN0aW9uKCQpe3JldHVybiBnWyRdfTpmdW5jdGlvbigkKXtyZXR1cm4gVlskXX07Y2FzZSAxOnJldHVybiBXP2Z1bmN0aW9uKCQpe3JldHVybiBEWyQ+PjFdfTpmdW5jdGlvbigkKXtyZXR1cm4gd1skPj4xXX07Y2FzZSAyOnJldHVybiBXP2Z1bmN0aW9uKCQpe3JldHVybiB4WyQ+PjJdfTpmdW5jdGlvbigkKXtyZXR1cm4gSFskPj4yXX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIit1KX19ZnVuY3Rpb24gdmQodSxTLFcsUCwkKXtTPW9uKFMpLCQ9PT0tMSYmKCQ9NDI5NDk2NzI5NSk7dmFyIGh0PWhuKFcpLGR0PXVlPT51ZTtpZihQPT09MCl7dmFyIGZ0PTMyLTgqVztkdD11ZT0+dWU8PGZ0Pj4+ZnR9dmFyIEJ0PVMuaW5jbHVkZXMoInVuc2lnbmVkIiksTHQ9KHVlLGZlKT0+e2lmKHR5cGVvZiB1ZSE9Im51bWJlciImJnR5cGVvZiB1ZSE9ImJvb2xlYW4iKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBjb252ZXJ0ICIke2xhKHVlKX0iIHRvICR7ZmV9YCk7aWYodWU8UHx8dWU+JCl0aHJvdyBuZXcgVHlwZUVycm9yKGBQYXNzaW5nIGEgbnVtYmVyICIke2xhKHVlKX0iIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIiR7U30iLCB3aGljaCBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBbJHtQfSwgJHskfV0hYCl9LHJlO0J0P3JlPWZ1bmN0aW9uKHVlLGZlKXtyZXR1cm4gTHQoZmUsdGhpcy5uYW1lKSxmZT4+PjB9OnJlPWZ1bmN0aW9uKHVlLGZlKXtyZXR1cm4gTHQoZmUsdGhpcy5uYW1lKSxmZX0sVG4odSx7bmFtZTpTLGZyb21XaXJlVHlwZTpkdCx0b1dpcmVUeXBlOnJlLGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6SGQoUyxodCxQIT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiB6ZCh1LFMsVyl7dmFyIFA9W0ludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5XSwkPVBbU107ZnVuY3Rpb24gaHQoZHQpe2R0PWR0Pj4yO3ZhciBmdD1ILEJ0PWZ0W2R0XSxMdD1mdFtkdCsxXTtyZXR1cm4gbmV3ICQoZnQuYnVmZmVyLEx0LEJ0KX1XPW9uKFcpLFRuKHUse25hbWU6Vyxmcm9tV2lyZVR5cGU6aHQsYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpodH0se2lnbm9yZUR1cGxpY2F0ZVJlZ2lzdHJhdGlvbnM6ITB9KX12YXIgcWg9KHUsUyxXLFApPT57aWYoYyh0eXBlb2YgdT09InN0cmluZyIpLCEoUD4wKSlyZXR1cm4gMDtmb3IodmFyICQ9VyxodD1XK1AtMSxkdD0wO2R0PHUubGVuZ3RoOysrZHQpe3ZhciBmdD11LmNoYXJDb2RlQXQoZHQpO2lmKGZ0Pj01NTI5NiYmZnQ8PTU3MzQzKXt2YXIgQnQ9dS5jaGFyQ29kZUF0KCsrZHQpO2Z0PTY1NTM2KygoZnQmMTAyMyk8PDEwKXxCdCYxMDIzfWlmKGZ0PD0xMjcpe2lmKFc+PWh0KWJyZWFrO1NbVysrXT1mdH1lbHNlIGlmKGZ0PD0yMDQ3KXtpZihXKzE+PWh0KWJyZWFrO1NbVysrXT0xOTJ8ZnQ+PjYsU1tXKytdPTEyOHxmdCY2M31lbHNlIGlmKGZ0PD02NTUzNSl7aWYoVysyPj1odClicmVhaztTW1crK109MjI0fGZ0Pj4xMixTW1crK109MTI4fGZ0Pj42JjYzLFNbVysrXT0xMjh8ZnQmNjN9ZWxzZXtpZihXKzM+PWh0KWJyZWFrO2Z0PjExMTQxMTEmJkFpKCJJbnZhbGlkIFVuaWNvZGUgY29kZSBwb2ludCAiK1BuKGZ0KSsiIGVuY291bnRlcmVkIHdoZW4gc2VyaWFsaXppbmcgYSBKUyBzdHJpbmcgdG8gYSBVVEYtOCBzdHJpbmcgaW4gd2FzbSBtZW1vcnkhIChWYWxpZCB1bmljb2RlIGNvZGUgcG9pbnRzIHNob3VsZCBiZSBpbiByYW5nZSAwLTB4MTBGRkZGKS4iKSxTW1crK109MjQwfGZ0Pj4xOCxTW1crK109MTI4fGZ0Pj4xMiY2MyxTW1crK109MTI4fGZ0Pj42JjYzLFNbVysrXT0xMjh8ZnQmNjN9fXJldHVybiBTW1ddPTAsVy0kfSxQQT0odSxTLFcpPT4oYyh0eXBlb2YgVz09Im51bWJlciIsInN0cmluZ1RvVVRGOChzdHIsIG91dFB0ciwgbWF4Qnl0ZXNUb1dyaXRlKSBpcyBtaXNzaW5nIHRoZSB0aGlyZCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciEiKSxxaCh1LFYsUyxXKSksbWE9dT0+e2Zvcih2YXIgUz0wLFc9MDtXPHUubGVuZ3RoOysrVyl7dmFyIFA9dS5jaGFyQ29kZUF0KFcpO1A8PTEyNz9TKys6UDw9MjA0Nz9TKz0yOlA+PTU1Mjk2JiZQPD01NzM0Mz8oUys9NCwrK1cpOlMrPTN9cmV0dXJuIFN9LGFsPXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwLGZhPSh1LFMsVyk9Pntmb3IodmFyIFA9UytXLCQ9Uzt1WyRdJiYhKCQ+PVApOykrKyQ7aWYoJC1TPjE2JiZ1LmJ1ZmZlciYmYWwpcmV0dXJuIGFsLmRlY29kZSh1LnN1YmFycmF5KFMsJCkpO2Zvcih2YXIgaHQ9IiI7UzwkOyl7dmFyIGR0PXVbUysrXTtpZighKGR0JjEyOCkpe2h0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGR0KTtjb250aW51ZX12YXIgZnQ9dVtTKytdJjYzO2lmKChkdCYyMjQpPT0xOTIpe2h0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChkdCYzMSk8PDZ8ZnQpO2NvbnRpbnVlfXZhciBCdD11W1MrK10mNjM7aWYoKGR0JjI0MCk9PTIyND9kdD0oZHQmMTUpPDwxMnxmdDw8NnxCdDooKGR0JjI0OCkhPTI0MCYmQWkoIkludmFsaWQgVVRGLTggbGVhZGluZyBieXRlICIrUG4oZHQpKyIgZW5jb3VudGVyZWQgd2hlbiBkZXNlcmlhbGl6aW5nIGEgVVRGLTggc3RyaW5nIGluIHdhc20gbWVtb3J5IHRvIGEgSlMgc3RyaW5nISIpLGR0PShkdCY3KTw8MTh8ZnQ8PDEyfEJ0PDw2fHVbUysrXSY2MyksZHQ8NjU1MzYpaHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZHQpO2Vsc2V7dmFyIEx0PWR0LTY1NTM2O2h0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fEx0Pj4xMCw1NjMyMHxMdCYxMDIzKX19cmV0dXJuIGh0fSxFYT0odSxTKT0+KGModHlwZW9mIHU9PSJudW1iZXIiKSx1P2ZhKFYsdSxTKToiIik7ZnVuY3Rpb24gc0EodSxTKXtTPW9uKFMpO3ZhciBXPVM9PT0ic3RkOjpzdHJpbmciO1RuKHUse25hbWU6Uyxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oUCl7dmFyICQ9SFtQPj4yXSxodD1QKzQsZHQ7aWYoVylmb3IodmFyIGZ0PWh0LEJ0PTA7QnQ8PSQ7KytCdCl7dmFyIEx0PWh0K0J0O2lmKEJ0PT0kfHxWW0x0XT09MCl7dmFyIHJlPUx0LWZ0LHVlPUVhKGZ0LHJlKTtkdD09PXZvaWQgMD9kdD11ZTooZHQrPSJcMCIsZHQrPXVlKSxmdD1MdCsxfX1lbHNle2Zvcih2YXIgZmU9bmV3IEFycmF5KCQpLEJ0PTA7QnQ8JDsrK0J0KWZlW0J0XT1TdHJpbmcuZnJvbUNoYXJDb2RlKFZbaHQrQnRdKTtkdD1mZS5qb2luKCIiKX1yZXR1cm4gSEEoUCksZHR9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oUCwkKXskIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJigkPW5ldyBVaW50OEFycmF5KCQpKTt2YXIgaHQsZHQ9dHlwZW9mICQ9PSJzdHJpbmciO2R0fHwkIGluc3RhbmNlb2YgVWludDhBcnJheXx8JCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHwkIGluc3RhbmNlb2YgSW50OEFycmF5fHwkZSgiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpLFcmJmR0P2h0PW1hKCQpOmh0PSQubGVuZ3RoO3ZhciBmdD1LUig0K2h0KzEpLEJ0PWZ0KzQ7aWYoSFtmdD4+Ml09aHQsVyYmZHQpUEEoJCxCdCxodCsxKTtlbHNlIGlmKGR0KWZvcih2YXIgTHQ9MDtMdDxodDsrK0x0KXt2YXIgcmU9JC5jaGFyQ29kZUF0KEx0KTtyZT4yNTUmJihIQShCdCksJGUoIlN0cmluZyBoYXMgVVRGLTE2IGNvZGUgdW5pdHMgdGhhdCBkbyBub3QgZml0IGluIDggYml0cyIpKSxWW0J0K0x0XT1yZX1lbHNlIGZvcih2YXIgTHQ9MDtMdDxodDsrK0x0KVZbQnQrTHRdPSRbTHRdO3JldHVybiBQIT09bnVsbCYmUC5wdXNoKEhBLGZ0KSxmdH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpMQSxkZXN0cnVjdG9yRnVuY3Rpb246ZnVuY3Rpb24oUCl7SEEoUCl9fSl9dmFyIEFsPXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOnZvaWQgMCxLZD0odSxTKT0+e2ModSUyPT0wLCJQb2ludGVyIHBhc3NlZCB0byBVVEYxNlRvU3RyaW5nIG11c3QgYmUgYWxpZ25lZCB0byB0d28gYnl0ZXMhIik7Zm9yKHZhciBXPXUsUD1XPj4xLCQ9UCtTLzI7IShQPj0kKSYmd1tQXTspKytQO2lmKFc9UDw8MSxXLXU+MzImJkFsKXJldHVybiBBbC5kZWNvZGUoVi5zdWJhcnJheSh1LFcpKTtmb3IodmFyIGh0PSIiLGR0PTA7IShkdD49Uy8yKTsrK2R0KXt2YXIgZnQ9RFt1K2R0KjI+PjFdO2lmKGZ0PT0wKWJyZWFrO2h0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGZ0KX1yZXR1cm4gaHR9LEpBPSh1LFMsVyk9PntpZihjKFMlMj09MCwiUG9pbnRlciBwYXNzZWQgdG8gc3RyaW5nVG9VVEYxNiBtdXN0IGJlIGFsaWduZWQgdG8gdHdvIGJ5dGVzISIpLGModHlwZW9mIFc9PSJudW1iZXIiLCJzdHJpbmdUb1VURjE2KHN0ciwgb3V0UHRyLCBtYXhCeXRlc1RvV3JpdGUpIGlzIG1pc3NpbmcgdGhlIHRoaXJkIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgYnVmZmVyISIpLFc9PT12b2lkIDAmJihXPTIxNDc0ODM2NDcpLFc8MilyZXR1cm4gMDtXLT0yO2Zvcih2YXIgUD1TLCQ9Vzx1Lmxlbmd0aCoyP1cvMjp1Lmxlbmd0aCxodD0wO2h0PCQ7KytodCl7dmFyIGR0PXUuY2hhckNvZGVBdChodCk7RFtTPj4xXT1kdCxTKz0yfXJldHVybiBEW1M+PjFdPTAsUy1QfSwkaD11PT51Lmxlbmd0aCoyLFhkPSh1LFMpPT57Yyh1JTQ9PTAsIlBvaW50ZXIgcGFzc2VkIHRvIFVURjMyVG9TdHJpbmcgbXVzdCBiZSBhbGlnbmVkIHRvIGZvdXIgYnl0ZXMhIik7Zm9yKHZhciBXPTAsUD0iIjshKFc+PVMvNCk7KXt2YXIgJD14W3UrVyo0Pj4yXTtpZigkPT0wKWJyZWFrO2lmKCsrVywkPj02NTUzNil7dmFyIGh0PSQtNjU1MzY7UCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxodD4+MTAsNTYzMjB8aHQmMTAyMyl9ZWxzZSBQKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCQpfXJldHVybiBQfSxobD0odSxTLFcpPT57aWYoYyhTJTQ9PTAsIlBvaW50ZXIgcGFzc2VkIHRvIHN0cmluZ1RvVVRGMzIgbXVzdCBiZSBhbGlnbmVkIHRvIGZvdXIgYnl0ZXMhIiksYyh0eXBlb2YgVz09Im51bWJlciIsInN0cmluZ1RvVVRGMzIoc3RyLCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSkgaXMgbWlzc2luZyB0aGUgdGhpcmQgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBidWZmZXIhIiksVz09PXZvaWQgMCYmKFc9MjE0NzQ4MzY0NyksVzw0KXJldHVybiAwO2Zvcih2YXIgUD1TLCQ9UCtXLTQsaHQ9MDtodDx1Lmxlbmd0aDsrK2h0KXt2YXIgZHQ9dS5jaGFyQ29kZUF0KGh0KTtpZihkdD49NTUyOTYmJmR0PD01NzM0Myl7dmFyIGZ0PXUuY2hhckNvZGVBdCgrK2h0KTtkdD02NTUzNisoKGR0JjEwMjMpPDwxMCl8ZnQmMTAyM31pZih4W1M+PjJdPWR0LFMrPTQsUys0PiQpYnJlYWt9cmV0dXJuIHhbUz4+Ml09MCxTLVB9LHFkPXU9Pntmb3IodmFyIFM9MCxXPTA7Vzx1Lmxlbmd0aDsrK1cpe3ZhciBQPXUuY2hhckNvZGVBdChXKTtQPj01NTI5NiYmUDw9NTczNDMmJisrVyxTKz00fXJldHVybiBTfSwkZD1mdW5jdGlvbih1LFMsVyl7Vz1vbihXKTt2YXIgUCwkLGh0LGR0LGZ0O1M9PT0yPyhQPUtkLCQ9SkEsZHQ9JGgsaHQ9KCk9PncsZnQ9MSk6Uz09PTQmJihQPVhkLCQ9aGwsZHQ9cWQsaHQ9KCk9PkgsZnQ9MiksVG4odSx7bmFtZTpXLGZyb21XaXJlVHlwZTpmdW5jdGlvbihCdCl7Zm9yKHZhciBMdD1IW0J0Pj4yXSxyZT1odCgpLHVlLGZlPUJ0KzQsRWU9MDtFZTw9THQ7KytFZSl7dmFyIFNlPUJ0KzQrRWUqUztpZihFZT09THR8fHJlW1NlPj5mdF09PTApe3ZhciBkaT1TZS1mZSxsbj1QKGZlLGRpKTt1ZT09PXZvaWQgMD91ZT1sbjoodWUrPSJcMCIsdWUrPWxuKSxmZT1TZStTfX1yZXR1cm4gSEEoQnQpLHVlfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKEJ0LEx0KXt0eXBlb2YgTHQhPSJzdHJpbmciJiYkZShgQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBDKysgc3RyaW5nIHR5cGUgJHtXfWApO3ZhciByZT1kdChMdCksdWU9S1IoNCtyZStTKTtyZXR1cm4gSFt1ZT4+Ml09cmU+PmZ0LCQoTHQsdWUrNCxyZStTKSxCdCE9PW51bGwmJkJ0LnB1c2goSEEsdWUpLHVlfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOkxBLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbihCdCl7SEEoQnQpfX0pfTtmdW5jdGlvbiB0bSh1LFMpe1M9b24oUyksVG4odSx7aXNWb2lkOiEwLG5hbWU6UyxhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTpmdW5jdGlvbigpe30sdG9XaXJlVHlwZTpmdW5jdGlvbihXLFApe319KX12YXIgZW09ITAsaW09KCk9PmVtO2Z1bmN0aW9uIG5tKHUsUyl7dmFyIFc9U29bdV07cmV0dXJuIFc9PT12b2lkIDAmJiRlKFMrIiBoYXMgdW5rbm93biB0eXBlICIrbkEodSkpLFd9ZnVuY3Rpb24gc20odSxTLFcpe3U9R28udG9WYWx1ZSh1KSxTPW5tKFMsImVtdmFsOjphcyIpO3ZhciBQPVtdLCQ9R28udG9IYW5kbGUoUCk7cmV0dXJuIEhbVz4+Ml09JCxTLnRvV2lyZVR5cGUoUCx1KX1mdW5jdGlvbiBvbSh1LFMpe3JldHVybiB1PUdvLnRvVmFsdWUodSksUz1Hby50b1ZhbHVlKFMpLEdvLnRvSGFuZGxlKHVbU10pfXZhciBjbD17fTtmdW5jdGlvbiBybSh1KXt2YXIgUz1jbFt1XTtyZXR1cm4gUz09PXZvaWQgMD9vbih1KTpTfWZ1bmN0aW9uIGFtKHUpe3JldHVybiBHby50b0hhbmRsZShybSh1KSl9ZnVuY3Rpb24gQW0odSl7dmFyIFM9R28udG9WYWx1ZSh1KTt3QShTKSxobyh1KX1mdW5jdGlvbiBsbCh1LFMpe3JldHVybiBjKHU9PXU+Pj4wfHx1PT0odXwwKSksYyhTPT09KFN8MCkpLFMrMjA5NzE1Mj4+PjA8NDE5NDMwNS0hIXU/KHU+Pj4wKStTKjQyOTQ5NjcyOTY6TmFOfWZ1bmN0aW9uIGhtKHUsUyxXKXt2YXIgUD1sbCh1LFMpLCQ9bmV3IERhdGUoUCoxZTMpO3hbVz4+Ml09JC5nZXRVVENTZWNvbmRzKCkseFtXKzQ+PjJdPSQuZ2V0VVRDTWludXRlcygpLHhbVys4Pj4yXT0kLmdldFVUQ0hvdXJzKCkseFtXKzEyPj4yXT0kLmdldFVUQ0RhdGUoKSx4W1crMTY+PjJdPSQuZ2V0VVRDTW9udGgoKSx4W1crMjA+PjJdPSQuZ2V0VVRDRnVsbFllYXIoKS0xOTAwLHhbVysyND4+Ml09JC5nZXRVVENEYXkoKTt2YXIgaHQ9RGF0ZS5VVEMoJC5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKSxkdD0oJC5nZXRUaW1lKCktaHQpLygxZTMqNjAqNjAqMjQpfDA7eFtXKzI4Pj4yXT1kdH12YXIgb0E9dT0+dSU0PT09MCYmKHUlMTAwIT09MHx8dSU0MDA9PT0wKSxjbT1bMCwzMSw2MCw5MSwxMjEsMTUyLDE4MiwyMTMsMjQ0LDI3NCwzMDUsMzM1XSxqQT1bMCwzMSw1OSw5MCwxMjAsMTUxLDE4MSwyMTIsMjQzLDI3MywzMDQsMzM0XSxsbT11PT57dmFyIFM9b0EodS5nZXRGdWxsWWVhcigpKSxXPVM/Y206akEsUD1XW3UuZ2V0TW9udGgoKV0rdS5nZXREYXRlKCktMTtyZXR1cm4gUH0sZG09ZnVuY3Rpb24odSl7dmFyIFM9KCgpPT57dmFyIFc9bmV3IERhdGUoeFt1KzIwPj4yXSsxOTAwLHhbdSsxNj4+Ml0seFt1KzEyPj4yXSx4W3UrOD4+Ml0seFt1KzQ+PjJdLHhbdT4+Ml0sMCksUD14W3UrMzI+PjJdLCQ9Vy5nZXRUaW1lem9uZU9mZnNldCgpLGh0PW5ldyBEYXRlKFcuZ2V0RnVsbFllYXIoKSwwLDEpLGR0PW5ldyBEYXRlKFcuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCksZnQ9aHQuZ2V0VGltZXpvbmVPZmZzZXQoKSxCdD1NYXRoLm1pbihmdCxkdCk7aWYoUDwwKXhbdSszMj4+Ml09KyhkdCE9ZnQmJkJ0PT0kKTtlbHNlIGlmKFA+MCE9KEJ0PT0kKSl7dmFyIEx0PU1hdGgubWF4KGZ0LGR0KSxyZT1QPjA/QnQ6THQ7Vy5zZXRUaW1lKFcuZ2V0VGltZSgpKyhyZS0kKSo2ZTQpfXhbdSsyND4+Ml09Vy5nZXREYXkoKTt2YXIgdWU9bG0oVyl8MDtyZXR1cm4geFt1KzI4Pj4yXT11ZSx4W3U+PjJdPVcuZ2V0U2Vjb25kcygpLHhbdSs0Pj4yXT1XLmdldE1pbnV0ZXMoKSx4W3UrOD4+Ml09Vy5nZXRIb3VycygpLHhbdSsxMj4+Ml09Vy5nZXREYXRlKCkseFt1KzE2Pj4yXT1XLmdldE1vbnRoKCkseFt1KzIwPj4yXT1XLmdldFllYXIoKSxXLmdldFRpbWUoKS8xZTN9KSgpO3JldHVybiBmOCgoTmU9UywrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKSksUz4+PjB9LGRsPXU9Pnt2YXIgUz1tYSh1KSsxLFc9S1IoUyk7cmV0dXJuIFcmJlBBKHUsVyxTKSxXfSxtbT0odSxTLFcpPT57dmFyIFA9bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLCQ9bmV3IERhdGUoUCwwLDEpLGh0PW5ldyBEYXRlKFAsNiwxKSxkdD0kLmdldFRpbWV6b25lT2Zmc2V0KCksZnQ9aHQuZ2V0VGltZXpvbmVPZmZzZXQoKSxCdD1NYXRoLm1heChkdCxmdCk7SFt1Pj4yXT1CdCo2MCx4W1M+PjJdPSsoZHQhPWZ0KTtmdW5jdGlvbiBMdChTZSl7dmFyIGRpPVNlLnRvVGltZVN0cmluZygpLm1hdGNoKC9cKChbQS1aYS16IF0rKVwpJC8pO3JldHVybiBkaT9kaVsxXToiR01UIn12YXIgcmU9THQoJCksdWU9THQoaHQpLGZlPWRsKHJlKSxFZT1kbCh1ZSk7ZnQ8ZHQ/KEhbVz4+Ml09ZmUsSFtXKzQ+PjJdPUVlKTooSFtXPj4yXT1FZSxIW1crND4+Ml09ZmUpfSxmbT0oKT0+e0dlKCJuYXRpdmUgY29kZSBjYWxsZWQgYWJvcnQoKSIpfSxyQT1bXSxmaT0odSxTKT0+e2MoQXJyYXkuaXNBcnJheShyQSkpLGMoUyUxNj09MCksckEubGVuZ3RoPTA7dmFyIFc7Zm9yKFM+Pj0yO1c9Vlt1KytdOyl7dmFyIFA9U3RyaW5nLmZyb21DaGFyQ29kZShXKSwkPVsiZCIsImYiLCJpIl07YygkLmluY2x1ZGVzKFApLGBJbnZhbGlkIGNoYXJhY3RlciAke1d9KCIke1B9IikgaW4gcmVhZEVtQXNtQXJncyEgVXNlIG9ubHkgWyR7JH1dLCBhbmQgZG8gbm90IHNwZWNpZnkgInYiIGZvciB2b2lkIHJldHVybiBhcmd1bWVudC5gKSxTKz1XIT0xMDUmUyxyQS5wdXNoKFc9PTEwNT94W1NdOlhbUysrPj4xXSksKytTfXJldHVybiByQX0sej0odSxTLFcpPT57dmFyIFA9ZmkoUyxXKTtyZXR1cm4gQ3MuaGFzT3duUHJvcGVydHkodSl8fEdlKGBObyBFTV9BU00gY29uc3RhbnQgZm91bmQgYXQgYWRkcmVzcyAke3V9YCksQ3NbdV0uYXBwbHkobnVsbCxQKX0sZXQ9KHUsUyxXKT0+eih1LFMsVyk7ZnVuY3Rpb24gcHQoKXtyZXR1cm4gRGF0ZS5ub3coKX12YXIgJHQ7JHQ9KCk9PnBlcmZvcm1hbmNlLm5vdygpO3ZhciB2ZT0odSxTLFcpPT5WLmNvcHlXaXRoaW4odSxTLFMrVyksaGk9KCk9PjIxNDc0ODM2NDgsX2E9dT0+e3ZhciBTPVEuYnVmZmVyLFc9dS1TLmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNjt0cnl7cmV0dXJuIFEuZ3JvdyhXKSx0dCgpLDF9Y2F0Y2goUCl7YihgZ3Jvd01lbW9yeTogQXR0ZW1wdGVkIHRvIGdyb3cgaGVhcCBmcm9tICR7Uy5ieXRlTGVuZ3RofSBieXRlcyB0byAke3V9IGJ5dGVzLCBidXQgZ290IGVycm9yOiAke1B9YCl9fSx0Yz11PT57dmFyIFM9Vi5sZW5ndGg7dT4+Pj0wLGModT5TKTt2YXIgVz1oaSgpO2lmKHU+VylyZXR1cm4gYihgQ2Fubm90IGVubGFyZ2UgbWVtb3J5LCBhc2tlZCB0byBnbyB1cCB0byAke3V9IGJ5dGVzLCBidXQgdGhlIGxpbWl0IGlzICR7V30gYnl0ZXMhYCksITE7Zm9yKHZhciBQPShCdCxMdCk9PkJ0KyhMdC1CdCVMdCklTHQsJD0xOyQ8PTQ7JCo9Mil7dmFyIGh0PVMqKDErLjIvJCk7aHQ9TWF0aC5taW4oaHQsdSsxMDA2NjMyOTYpO3ZhciBkdD1NYXRoLm1pbihXLFAoTWF0aC5tYXgodSxodCksNjU1MzYpKSxmdD1fYShkdCk7aWYoZnQpcmV0dXJuITB9cmV0dXJuIGIoYEZhaWxlZCB0byBncm93IHRoZSBoZWFwIGZyb20gJHtTfSBieXRlcyB0byAke2R0fSBieXRlcywgbm90IGVub3VnaCBtZW1vcnkhYCksITF9LEo9dT0+e3ZhciBTPShnbG9iYWxUaGlzLmV2YWxbIlx1MjAwMyJdPWdsb2JhbFRoaXMuZXZhbCkoRWEodSkpO2lmKFM9PW51bGwpcmV0dXJuIDA7Uys9IiI7dmFyIFc9SixQPW1hKFMpO3JldHVybighVy5idWZmZXJTaXplfHxXLmJ1ZmZlclNpemU8UCsxKSYmKFcuYnVmZmVyU2l6ZSYmSEEoVy5idWZmZXIpLFcuYnVmZmVyU2l6ZT1QKzEsVy5idWZmZXI9S1IoVy5idWZmZXJTaXplKSksUEEoUyxXLmJ1ZmZlcixXLmJ1ZmZlclNpemUpLFcuYnVmZmVyfSx2PXt9LHN0PSgpPT5hfHwiLi90aGlzLnByb2dyYW0iLFJ0PSgpPT57aWYoIVJ0LnN0cmluZ3Mpe3ZhciB1PSh0eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0IiYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLFM9e1VTRVI6IndlYl91c2VyIixMT0dOQU1FOiJ3ZWJfdXNlciIsUEFUSDoiLyIsUFdEOiIvIixIT01FOiIvaG9tZS93ZWJfdXNlciIsTEFORzp1LF86c3QoKX07Zm9yKHZhciBXIGluIHYpdltXXT09PXZvaWQgMD9kZWxldGUgU1tXXTpTW1ddPXZbV107dmFyIFA9W107Zm9yKHZhciBXIGluIFMpUC5wdXNoKGAke1d9PSR7U1tXXX1gKTtSdC5zdHJpbmdzPVB9cmV0dXJuIFJ0LnN0cmluZ3N9LFN0PSh1LFMpPT57Zm9yKHZhciBXPTA7Vzx1Lmxlbmd0aDsrK1cpYyh1LmNoYXJDb2RlQXQoVyk9PT0odS5jaGFyQ29kZUF0KFcpJjI1NSkpLGdbUysrPj4wXT11LmNoYXJDb2RlQXQoVyk7Z1tTPj4wXT0wfSxHdD17aXNBYnM6dT0+dS5jaGFyQXQoMCk9PT0iLyIsc3BsaXRQYXRoOnU9Pnt2YXIgUz0vXihcLz98KShbXHNcU10qPykoKD86XC57MSwyfXxbXlwvXSs/fCkoXC5bXi5cL10qfCkpKD86W1wvXSopJC87cmV0dXJuIFMuZXhlYyh1KS5zbGljZSgxKX0sbm9ybWFsaXplQXJyYXk6KHUsUyk9Pntmb3IodmFyIFc9MCxQPXUubGVuZ3RoLTE7UD49MDtQLS0pe3ZhciAkPXVbUF07JD09PSIuIj91LnNwbGljZShQLDEpOiQ9PT0iLi4iPyh1LnNwbGljZShQLDEpLFcrKyk6VyYmKHUuc3BsaWNlKFAsMSksVy0tKX1pZihTKWZvcig7VztXLS0pdS51bnNoaWZ0KCIuLiIpO3JldHVybiB1fSxub3JtYWxpemU6dT0+e3ZhciBTPUd0LmlzQWJzKHUpLFc9dS5zdWJzdHIoLTEpPT09Ii8iO3JldHVybiB1PUd0Lm5vcm1hbGl6ZUFycmF5KHUuc3BsaXQoIi8iKS5maWx0ZXIoUD0+ISFQKSwhUykuam9pbigiLyIpLCF1JiYhUyYmKHU9Ii4iKSx1JiZXJiYodSs9Ii8iKSwoUz8iLyI6IiIpK3V9LGRpcm5hbWU6dT0+e3ZhciBTPUd0LnNwbGl0UGF0aCh1KSxXPVNbMF0sUD1TWzFdO3JldHVybiFXJiYhUD8iLiI6KFAmJihQPVAuc3Vic3RyKDAsUC5sZW5ndGgtMSkpLFcrUCl9LGJhc2VuYW1lOnU9PntpZih1PT09Ii8iKXJldHVybiIvIjt1PUd0Lm5vcm1hbGl6ZSh1KSx1PXUucmVwbGFjZSgvXC8kLywiIik7dmFyIFM9dS5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBTPT09LTE/dTp1LnN1YnN0cihTKzEpfSxqb2luOmZ1bmN0aW9uKCl7dmFyIHU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gR3Qubm9ybWFsaXplKHUuam9pbigiLyIpKX0sam9pbjI6KHUsUyk9Pkd0Lm5vcm1hbGl6ZSh1KyIvIitTKX0sanQ9KCk9PntpZih0eXBlb2YgY3J5cHRvPT0ib2JqZWN0IiYmdHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXM9PSJmdW5jdGlvbiIpcmV0dXJuIHU9PmNyeXB0by5nZXRSYW5kb21WYWx1ZXModSk7R2UoIm5vIGNyeXB0b2dyYXBoaWMgc3VwcG9ydCBmb3VuZCBmb3IgcmFuZG9tRGV2aWNlLiBjb25zaWRlciBwb2x5ZmlsbGluZyBpdCBpZiB5b3Ugd2FudCB0byB1c2Ugc29tZXRoaW5nIGluc2VjdXJlIGxpa2UgTWF0aC5yYW5kb20oKSwgZS5nLiBwdXQgdGhpcyBpbiBhIC0tcHJlLWpzOiB2YXIgY3J5cHRvID0geyBnZXRSYW5kb21WYWx1ZXM6IChhcnJheSkgPT4geyBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSBhcnJheVtpXSA9IChNYXRoLnJhbmRvbSgpKjI1Nil8MCB9IH07Iil9LFV0PXU9PihVdD1qdCgpKSh1KSxEdD17cmVzb2x2ZTpmdW5jdGlvbigpe2Zvcih2YXIgdT0iIixTPSExLFc9YXJndW1lbnRzLmxlbmd0aC0xO1c+PS0xJiYhUztXLS0pe3ZhciBQPVc+PTA/YXJndW1lbnRzW1ddOksuY3dkKCk7aWYodHlwZW9mIFAhPSJzdHJpbmciKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7aWYoIVApcmV0dXJuIiI7dT1QKyIvIit1LFM9R3QuaXNBYnMoUCl9cmV0dXJuIHU9R3Qubm9ybWFsaXplQXJyYXkodS5zcGxpdCgiLyIpLmZpbHRlcigkPT4hISQpLCFTKS5qb2luKCIvIiksKFM/Ii8iOiIiKSt1fHwiLiJ9LHJlbGF0aXZlOih1LFMpPT57dT1EdC5yZXNvbHZlKHUpLnN1YnN0cigxKSxTPUR0LnJlc29sdmUoUykuc3Vic3RyKDEpO2Z1bmN0aW9uIFcoTHQpe2Zvcih2YXIgcmU9MDtyZTxMdC5sZW5ndGgmJkx0W3JlXT09PSIiO3JlKyspO2Zvcih2YXIgdWU9THQubGVuZ3RoLTE7dWU+PTAmJkx0W3VlXT09PSIiO3VlLS0pO3JldHVybiByZT51ZT9bXTpMdC5zbGljZShyZSx1ZS1yZSsxKX1mb3IodmFyIFA9Vyh1LnNwbGl0KCIvIikpLCQ9VyhTLnNwbGl0KCIvIikpLGh0PU1hdGgubWluKFAubGVuZ3RoLCQubGVuZ3RoKSxkdD1odCxmdD0wO2Z0PGh0O2Z0KyspaWYoUFtmdF0hPT0kW2Z0XSl7ZHQ9ZnQ7YnJlYWt9Zm9yKHZhciBCdD1bXSxmdD1kdDtmdDxQLmxlbmd0aDtmdCsrKUJ0LnB1c2goIi4uIik7cmV0dXJuIEJ0PUJ0LmNvbmNhdCgkLnNsaWNlKGR0KSksQnQuam9pbigiLyIpfX0scGU9W107ZnVuY3Rpb24gQmUodSxTLFcpe3ZhciBQPVc+MD9XOm1hKHUpKzEsJD1uZXcgQXJyYXkoUCksaHQ9cWgodSwkLDAsJC5sZW5ndGgpO3JldHVybiBTJiYoJC5sZW5ndGg9aHQpLCR9dmFyIGNpPSgpPT57aWYoIXBlLmxlbmd0aCl7dmFyIHU9bnVsbDtpZih0eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5wcm9tcHQ9PSJmdW5jdGlvbiI/KHU9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpLHUhPT1udWxsJiYodSs9YApgKSk6dHlwZW9mIHJlYWRsaW5lPT0iZnVuY3Rpb24iJiYodT1yZWFkbGluZSgpLHUhPT1udWxsJiYodSs9YApgKSksIXUpcmV0dXJuIG51bGw7cGU9QmUodSwhMCl9cmV0dXJuIHBlLnNoaWZ0KCl9LHBpPXt0dHlzOltdLGluaXQ6ZnVuY3Rpb24oKXt9LHNodXRkb3duOmZ1bmN0aW9uKCl7fSxyZWdpc3RlcjpmdW5jdGlvbih1LFMpe3BpLnR0eXNbdV09e2lucHV0OltdLG91dHB1dDpbXSxvcHM6U30sSy5yZWdpc3RlckRldmljZSh1LHBpLnN0cmVhbV9vcHMpfSxzdHJlYW1fb3BzOntvcGVuOmZ1bmN0aW9uKHUpe3ZhciBTPXBpLnR0eXNbdS5ub2RlLnJkZXZdO2lmKCFTKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDMpO3UudHR5PVMsdS5zZWVrYWJsZT0hMX0sY2xvc2U6ZnVuY3Rpb24odSl7dS50dHkub3BzLmZzeW5jKHUudHR5KX0sZnN5bmM6ZnVuY3Rpb24odSl7dS50dHkub3BzLmZzeW5jKHUudHR5KX0scmVhZDpmdW5jdGlvbih1LFMsVyxQLCQpe2lmKCF1LnR0eXx8IXUudHR5Lm9wcy5nZXRfY2hhcil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYwKTtmb3IodmFyIGh0PTAsZHQ9MDtkdDxQO2R0Kyspe3ZhciBmdDt0cnl7ZnQ9dS50dHkub3BzLmdldF9jaGFyKHUudHR5KX1jYXRjaHt0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI5KX1pZihmdD09PXZvaWQgMCYmaHQ9PT0wKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNik7aWYoZnQ9PW51bGwpYnJlYWs7aHQrKyxTW1crZHRdPWZ0fXJldHVybiBodCYmKHUubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksaHR9LHdyaXRlOmZ1bmN0aW9uKHUsUyxXLFAsJCl7aWYoIXUudHR5fHwhdS50dHkub3BzLnB1dF9jaGFyKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjApO3RyeXtmb3IodmFyIGh0PTA7aHQ8UDtodCsrKXUudHR5Lm9wcy5wdXRfY2hhcih1LnR0eSxTW1craHRdKX1jYXRjaHt0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI5KX1yZXR1cm4gUCYmKHUubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksaHR9fSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOmZ1bmN0aW9uKHUpe3JldHVybiBjaSgpfSxwdXRfY2hhcjpmdW5jdGlvbih1LFMpe1M9PT1udWxsfHxTPT09MTA/KEYoZmEodS5vdXRwdXQsMCkpLHUub3V0cHV0PVtdKTpTIT0wJiZ1Lm91dHB1dC5wdXNoKFMpfSxmc3luYzpmdW5jdGlvbih1KXt1Lm91dHB1dCYmdS5vdXRwdXQubGVuZ3RoPjAmJihGKGZhKHUub3V0cHV0LDApKSx1Lm91dHB1dD1bXSl9LGlvY3RsX3RjZ2V0czpmdW5jdGlvbih1KXtyZXR1cm57Y19pZmxhZzoyNTg1NixjX29mbGFnOjUsY19jZmxhZzoxOTEsY19sZmxhZzozNTM4NyxjX2NjOlszLDI4LDEyNywyMSw0LDAsMSwwLDE3LDE5LDI2LDAsMTgsMTUsMjMsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF19fSxpb2N0bF90Y3NldHM6ZnVuY3Rpb24odSxTLFcpe3JldHVybiAwfSxpb2N0bF90aW9jZ3dpbnN6OmZ1bmN0aW9uKHUpe3JldHVyblsyNCw4MF19fSxkZWZhdWx0X3R0eTFfb3BzOntwdXRfY2hhcjpmdW5jdGlvbih1LFMpe1M9PT1udWxsfHxTPT09MTA/KGIoZmEodS5vdXRwdXQsMCkpLHUub3V0cHV0PVtdKTpTIT0wJiZ1Lm91dHB1dC5wdXNoKFMpfSxmc3luYzpmdW5jdGlvbih1KXt1Lm91dHB1dCYmdS5vdXRwdXQubGVuZ3RoPjAmJihiKGZhKHUub3V0cHV0LDApKSx1Lm91dHB1dD1bXSl9fX0sY249dT0+e0dlKCJpbnRlcm5hbCBlcnJvcjogbW1hcEFsbG9jIGNhbGxlZCBidXQgYGVtc2NyaXB0ZW5fYnVpbHRpbl9tZW1hbGlnbmAgbmF0aXZlIHN5bWJvbCBub3QgZXhwb3J0ZWQiKX0sUWU9e29wc190YWJsZTpudWxsLG1vdW50KHUpe3JldHVybiBRZS5jcmVhdGVOb2RlKG51bGwsIi8iLDE2ODk1LDApfSxjcmVhdGVOb2RlKHUsUyxXLFApe2lmKEsuaXNCbGtkZXYoVyl8fEsuaXNGSUZPKFcpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpO1FlLm9wc190YWJsZXx8KFFlLm9wc190YWJsZT17ZGlyOntub2RlOntnZXRhdHRyOlFlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpRZS5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpRZS5ub2RlX29wcy5sb29rdXAsbWtub2Q6UWUubm9kZV9vcHMubWtub2QscmVuYW1lOlFlLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6UWUubm9kZV9vcHMudW5saW5rLHJtZGlyOlFlLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6UWUubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOlFlLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOlFlLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpRZS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6UWUubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6UWUuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpRZS5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6UWUuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpRZS5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6UWUuc3RyZWFtX29wcy5tbWFwLG1zeW5jOlFlLnN0cmVhbV9vcHMubXN5bmN9fSxsaW5rOntub2RlOntnZXRhdHRyOlFlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpRZS5ub2RlX29wcy5zZXRhdHRyLHJlYWRsaW5rOlFlLm5vZGVfb3BzLnJlYWRsaW5rfSxzdHJlYW06e319LGNocmRldjp7bm9kZTp7Z2V0YXR0cjpRZS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6UWUubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOksuY2hyZGV2X3N0cmVhbV9vcHN9fSk7dmFyICQ9Sy5jcmVhdGVOb2RlKHUsUyxXLFApO3JldHVybiBLLmlzRGlyKCQubW9kZSk/KCQubm9kZV9vcHM9UWUub3BzX3RhYmxlLmRpci5ub2RlLCQuc3RyZWFtX29wcz1RZS5vcHNfdGFibGUuZGlyLnN0cmVhbSwkLmNvbnRlbnRzPXt9KTpLLmlzRmlsZSgkLm1vZGUpPygkLm5vZGVfb3BzPVFlLm9wc190YWJsZS5maWxlLm5vZGUsJC5zdHJlYW1fb3BzPVFlLm9wc190YWJsZS5maWxlLnN0cmVhbSwkLnVzZWRCeXRlcz0wLCQuY29udGVudHM9bnVsbCk6Sy5pc0xpbmsoJC5tb2RlKT8oJC5ub2RlX29wcz1RZS5vcHNfdGFibGUubGluay5ub2RlLCQuc3RyZWFtX29wcz1RZS5vcHNfdGFibGUubGluay5zdHJlYW0pOksuaXNDaHJkZXYoJC5tb2RlKSYmKCQubm9kZV9vcHM9UWUub3BzX3RhYmxlLmNocmRldi5ub2RlLCQuc3RyZWFtX29wcz1RZS5vcHNfdGFibGUuY2hyZGV2LnN0cmVhbSksJC50aW1lc3RhbXA9RGF0ZS5ub3coKSx1JiYodS5jb250ZW50c1tTXT0kLHUudGltZXN0YW1wPSQudGltZXN0YW1wKSwkfSxnZXRGaWxlRGF0YUFzVHlwZWRBcnJheSh1KXtyZXR1cm4gdS5jb250ZW50cz91LmNvbnRlbnRzLnN1YmFycmF5P3UuY29udGVudHMuc3ViYXJyYXkoMCx1LnVzZWRCeXRlcyk6bmV3IFVpbnQ4QXJyYXkodS5jb250ZW50cyk6bmV3IFVpbnQ4QXJyYXkoMCl9LGV4cGFuZEZpbGVTdG9yYWdlKHUsUyl7dmFyIFc9dS5jb250ZW50cz91LmNvbnRlbnRzLmxlbmd0aDowO2lmKCEoVz49Uykpe3ZhciBQPTEwMjQqMTAyNDtTPU1hdGgubWF4KFMsVyooVzxQPzI6MS4xMjUpPj4+MCksVyE9MCYmKFM9TWF0aC5tYXgoUywyNTYpKTt2YXIgJD11LmNvbnRlbnRzO3UuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkoUyksdS51c2VkQnl0ZXM+MCYmdS5jb250ZW50cy5zZXQoJC5zdWJhcnJheSgwLHUudXNlZEJ5dGVzKSwwKX19LHJlc2l6ZUZpbGVTdG9yYWdlKHUsUyl7aWYodS51c2VkQnl0ZXMhPVMpaWYoUz09MCl1LmNvbnRlbnRzPW51bGwsdS51c2VkQnl0ZXM9MDtlbHNle3ZhciBXPXUuY29udGVudHM7dS5jb250ZW50cz1uZXcgVWludDhBcnJheShTKSxXJiZ1LmNvbnRlbnRzLnNldChXLnN1YmFycmF5KDAsTWF0aC5taW4oUyx1LnVzZWRCeXRlcykpKSx1LnVzZWRCeXRlcz1TfX0sbm9kZV9vcHM6e2dldGF0dHIodSl7dmFyIFM9e307cmV0dXJuIFMuZGV2PUsuaXNDaHJkZXYodS5tb2RlKT91LmlkOjEsUy5pbm89dS5pZCxTLm1vZGU9dS5tb2RlLFMubmxpbms9MSxTLnVpZD0wLFMuZ2lkPTAsUy5yZGV2PXUucmRldixLLmlzRGlyKHUubW9kZSk/Uy5zaXplPTQwOTY6Sy5pc0ZpbGUodS5tb2RlKT9TLnNpemU9dS51c2VkQnl0ZXM6Sy5pc0xpbmsodS5tb2RlKT9TLnNpemU9dS5saW5rLmxlbmd0aDpTLnNpemU9MCxTLmF0aW1lPW5ldyBEYXRlKHUudGltZXN0YW1wKSxTLm10aW1lPW5ldyBEYXRlKHUudGltZXN0YW1wKSxTLmN0aW1lPW5ldyBEYXRlKHUudGltZXN0YW1wKSxTLmJsa3NpemU9NDA5NixTLmJsb2Nrcz1NYXRoLmNlaWwoUy5zaXplL1MuYmxrc2l6ZSksU30sc2V0YXR0cih1LFMpe1MubW9kZSE9PXZvaWQgMCYmKHUubW9kZT1TLm1vZGUpLFMudGltZXN0YW1wIT09dm9pZCAwJiYodS50aW1lc3RhbXA9Uy50aW1lc3RhbXApLFMuc2l6ZSE9PXZvaWQgMCYmUWUucmVzaXplRmlsZVN0b3JhZ2UodSxTLnNpemUpfSxsb29rdXAodSxTKXt0aHJvdyBLLmdlbmVyaWNFcnJvcnNbNDRdfSxta25vZCh1LFMsVyxQKXtyZXR1cm4gUWUuY3JlYXRlTm9kZSh1LFMsVyxQKX0scmVuYW1lKHUsUyxXKXtpZihLLmlzRGlyKHUubW9kZSkpe3ZhciBQO3RyeXtQPUsubG9va3VwTm9kZShTLFcpfWNhdGNoe31pZihQKWZvcih2YXIgJCBpbiBQLmNvbnRlbnRzKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNTUpfWRlbGV0ZSB1LnBhcmVudC5jb250ZW50c1t1Lm5hbWVdLHUucGFyZW50LnRpbWVzdGFtcD1EYXRlLm5vdygpLHUubmFtZT1XLFMuY29udGVudHNbV109dSxTLnRpbWVzdGFtcD11LnBhcmVudC50aW1lc3RhbXAsdS5wYXJlbnQ9U30sdW5saW5rKHUsUyl7ZGVsZXRlIHUuY29udGVudHNbU10sdS50aW1lc3RhbXA9RGF0ZS5ub3coKX0scm1kaXIodSxTKXt2YXIgVz1LLmxvb2t1cE5vZGUodSxTKTtmb3IodmFyIFAgaW4gVy5jb250ZW50cyl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDU1KTtkZWxldGUgdS5jb250ZW50c1tTXSx1LnRpbWVzdGFtcD1EYXRlLm5vdygpfSxyZWFkZGlyKHUpe3ZhciBTPVsiLiIsIi4uIl07Zm9yKHZhciBXIGluIHUuY29udGVudHMpdS5jb250ZW50cy5oYXNPd25Qcm9wZXJ0eShXKSYmUy5wdXNoKFcpO3JldHVybiBTfSxzeW1saW5rKHUsUyxXKXt2YXIgUD1RZS5jcmVhdGVOb2RlKHUsUyw0MTQ3MSwwKTtyZXR1cm4gUC5saW5rPVcsUH0scmVhZGxpbmsodSl7aWYoIUsuaXNMaW5rKHUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7cmV0dXJuIHUubGlua319LHN0cmVhbV9vcHM6e3JlYWQodSxTLFcsUCwkKXt2YXIgaHQ9dS5ub2RlLmNvbnRlbnRzO2lmKCQ+PXUubm9kZS51c2VkQnl0ZXMpcmV0dXJuIDA7dmFyIGR0PU1hdGgubWluKHUubm9kZS51c2VkQnl0ZXMtJCxQKTtpZihjKGR0Pj0wKSxkdD44JiZodC5zdWJhcnJheSlTLnNldChodC5zdWJhcnJheSgkLCQrZHQpLFcpO2Vsc2UgZm9yKHZhciBmdD0wO2Z0PGR0O2Z0KyspU1tXK2Z0XT1odFskK2Z0XTtyZXR1cm4gZHR9LHdyaXRlKHUsUyxXLFAsJCxodCl7aWYoYyghKFMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpLFMuYnVmZmVyPT09Zy5idWZmZXImJihodD0hMSksIVApcmV0dXJuIDA7dmFyIGR0PXUubm9kZTtpZihkdC50aW1lc3RhbXA9RGF0ZS5ub3coKSxTLnN1YmFycmF5JiYoIWR0LmNvbnRlbnRzfHxkdC5jb250ZW50cy5zdWJhcnJheSkpe2lmKGh0KXJldHVybiBjKCQ9PT0wLCJjYW5Pd24gbXVzdCBpbXBseSBubyB3ZWlyZCBwb3NpdGlvbiBpbnNpZGUgdGhlIGZpbGUiKSxkdC5jb250ZW50cz1TLnN1YmFycmF5KFcsVytQKSxkdC51c2VkQnl0ZXM9UCxQO2lmKGR0LnVzZWRCeXRlcz09PTAmJiQ9PT0wKXJldHVybiBkdC5jb250ZW50cz1TLnNsaWNlKFcsVytQKSxkdC51c2VkQnl0ZXM9UCxQO2lmKCQrUDw9ZHQudXNlZEJ5dGVzKXJldHVybiBkdC5jb250ZW50cy5zZXQoUy5zdWJhcnJheShXLFcrUCksJCksUH1pZihRZS5leHBhbmRGaWxlU3RvcmFnZShkdCwkK1ApLGR0LmNvbnRlbnRzLnN1YmFycmF5JiZTLnN1YmFycmF5KWR0LmNvbnRlbnRzLnNldChTLnN1YmFycmF5KFcsVytQKSwkKTtlbHNlIGZvcih2YXIgZnQ9MDtmdDxQO2Z0KyspZHQuY29udGVudHNbJCtmdF09U1tXK2Z0XTtyZXR1cm4gZHQudXNlZEJ5dGVzPU1hdGgubWF4KGR0LnVzZWRCeXRlcywkK1ApLFB9LGxsc2Vlayh1LFMsVyl7dmFyIFA9UztpZihXPT09MT9QKz11LnBvc2l0aW9uOlc9PT0yJiZLLmlzRmlsZSh1Lm5vZGUubW9kZSkmJihQKz11Lm5vZGUudXNlZEJ5dGVzKSxQPDApdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7cmV0dXJuIFB9LGFsbG9jYXRlKHUsUyxXKXtRZS5leHBhbmRGaWxlU3RvcmFnZSh1Lm5vZGUsUytXKSx1Lm5vZGUudXNlZEJ5dGVzPU1hdGgubWF4KHUubm9kZS51c2VkQnl0ZXMsUytXKX0sbW1hcCh1LFMsVyxQLCQpe2lmKCFLLmlzRmlsZSh1Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0Myk7dmFyIGh0LGR0LGZ0PXUubm9kZS5jb250ZW50cztpZighKCQmMikmJmZ0LmJ1ZmZlcj09PWcuYnVmZmVyKWR0PSExLGh0PWZ0LmJ5dGVPZmZzZXQ7ZWxzZXtpZigoVz4wfHxXK1M8ZnQubGVuZ3RoKSYmKGZ0LnN1YmFycmF5P2Z0PWZ0LnN1YmFycmF5KFcsVytTKTpmdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmdCxXLFcrUykpLGR0PSEwLGh0PWNuKFMpLCFodCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ4KTtnLnNldChmdCxodCl9cmV0dXJue3B0cjpodCxhbGxvY2F0ZWQ6ZHR9fSxtc3luYyh1LFMsVyxQLCQpe3JldHVybiBRZS5zdHJlYW1fb3BzLndyaXRlKHUsUywwLFAsVywhMSksMH19fSxYcz0odSxTLFcsUCk9Pnt2YXIgJD1QPyIiOmJlKGBhbCAke3V9YCk7Qyh1LGh0PT57YyhodCxgTG9hZGluZyBkYXRhIGZpbGUgIiR7dX0iIGZhaWxlZCAobm8gYXJyYXlCdWZmZXIpLmApLFMobmV3IFVpbnQ4QXJyYXkoaHQpKSwkJiZ6ZSgkKX0saHQ9PntpZihXKVcoKTtlbHNlIHRocm93YExvYWRpbmcgZGF0YSBmaWxlICIke3V9IiBmYWlsZWQuYH0pLCQmJm5pKCQpfSx6bz1pLnByZWxvYWRQbHVnaW5zfHxbXTtmdW5jdGlvbiBTcih1LFMsVyxQKXt0eXBlb2YgQnJvd3NlcjwidSImJkJyb3dzZXIuaW5pdCgpO3ZhciAkPSExO3JldHVybiB6by5mb3JFYWNoKGZ1bmN0aW9uKGh0KXskfHxodC5jYW5IYW5kbGUoUykmJihodC5oYW5kbGUodSxTLFcsUCksJD0hMCl9KSwkfWZ1bmN0aW9uIG1sKHUsUyxXLFAsJCxodCxkdCxmdCxCdCxMdCl7dmFyIHJlPVM/RHQucmVzb2x2ZShHdC5qb2luMih1LFMpKTp1LHVlPWJlKGBjcCAke3JlfWApO2Z1bmN0aW9uIGZlKEVlKXtmdW5jdGlvbiBTZShkaSl7THQmJkx0KCksZnR8fEsuY3JlYXRlRGF0YUZpbGUodSxTLGRpLFAsJCxCdCksaHQmJmh0KCksemUodWUpfVNyKEVlLHJlLFNlLCgpPT57ZHQmJmR0KCksemUodWUpfSl8fFNlKEVlKX1uaSh1ZSksdHlwZW9mIFc9PSJzdHJpbmciP1hzKFcsRWU9PmZlKEVlKSxkdCk6ZmUoVyl9ZnVuY3Rpb24gUmEodSl7dmFyIFM9e3I6MCwicisiOjIsdzo1NzcsIncrIjo1NzgsYToxMDg5LCJhKyI6MTA5MH0sVz1TW3VdO2lmKHR5cGVvZiBXPiJ1Iil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZmlsZSBvcGVuIG1vZGU6ICR7dX1gKTtyZXR1cm4gV31mdW5jdGlvbiBpRSh1LFMpe3ZhciBXPTA7cmV0dXJuIHUmJihXfD0zNjUpLFMmJihXfD0xNDYpLFd9dmFyIGpSPXswOiJTdWNjZXNzIiwxOiJBcmcgbGlzdCB0b28gbG9uZyIsMjoiUGVybWlzc2lvbiBkZW5pZWQiLDM6IkFkZHJlc3MgYWxyZWFkeSBpbiB1c2UiLDQ6IkFkZHJlc3Mgbm90IGF2YWlsYWJsZSIsNToiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCBmYW1pbHkiLDY6Ik5vIG1vcmUgcHJvY2Vzc2VzIiw3OiJTb2NrZXQgYWxyZWFkeSBjb25uZWN0ZWQiLDg6IkJhZCBmaWxlIG51bWJlciIsOToiVHJ5aW5nIHRvIHJlYWQgdW5yZWFkYWJsZSBtZXNzYWdlIiwxMDoiTW91bnQgZGV2aWNlIGJ1c3kiLDExOiJPcGVyYXRpb24gY2FuY2VsZWQiLDEyOiJObyBjaGlsZHJlbiIsMTM6IkNvbm5lY3Rpb24gYWJvcnRlZCIsMTQ6IkNvbm5lY3Rpb24gcmVmdXNlZCIsMTU6IkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciIsMTY6IkZpbGUgbG9ja2luZyBkZWFkbG9jayBlcnJvciIsMTc6IkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiLDE4OiJNYXRoIGFyZyBvdXQgb2YgZG9tYWluIG9mIGZ1bmMiLDE5OiJRdW90YSBleGNlZWRlZCIsMjA6IkZpbGUgZXhpc3RzIiwyMToiQmFkIGFkZHJlc3MiLDIyOiJGaWxlIHRvbyBsYXJnZSIsMjM6Ikhvc3QgaXMgdW5yZWFjaGFibGUiLDI0OiJJZGVudGlmaWVyIHJlbW92ZWQiLDI1OiJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UiLDI2OiJDb25uZWN0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MiLDI3OiJJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCIsMjg6IkludmFsaWQgYXJndW1lbnQiLDI5OiJJL08gZXJyb3IiLDMwOiJTb2NrZXQgaXMgYWxyZWFkeSBjb25uZWN0ZWQiLDMxOiJJcyBhIGRpcmVjdG9yeSIsMzI6IlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIiwzMzoiVG9vIG1hbnkgb3BlbiBmaWxlcyIsMzQ6IlRvbyBtYW55IGxpbmtzIiwzNToiTWVzc2FnZSB0b28gbG9uZyIsMzY6Ik11bHRpaG9wIGF0dGVtcHRlZCIsMzc6IkZpbGUgb3IgcGF0aCBuYW1lIHRvbyBsb25nIiwzODoiTmV0d29yayBpbnRlcmZhY2UgaXMgbm90IGNvbmZpZ3VyZWQiLDM5OiJDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsiLDQwOiJOZXR3b3JrIGlzIHVucmVhY2hhYmxlIiw0MToiVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0iLDQyOiJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIiw0MzoiTm8gc3VjaCBkZXZpY2UiLDQ0OiJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Iiw0NToiRXhlYyBmb3JtYXQgZXJyb3IiLDQ2OiJObyByZWNvcmQgbG9ja3MgYXZhaWxhYmxlIiw0NzoiVGhlIGxpbmsgaGFzIGJlZW4gc2V2ZXJlZCIsNDg6Ik5vdCBlbm91Z2ggY29yZSIsNDk6Ik5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlIiw1MDoiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSIsNTE6Ik5vIHNwYWNlIGxlZnQgb24gZGV2aWNlIiw1MjoiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkIiw1MzoiU29ja2V0IGlzIG5vdCBjb25uZWN0ZWQiLDU0OiJOb3QgYSBkaXJlY3RvcnkiLDU1OiJEaXJlY3Rvcnkgbm90IGVtcHR5Iiw1NjoiU3RhdGUgbm90IHJlY292ZXJhYmxlIiw1NzoiU29ja2V0IG9wZXJhdGlvbiBvbiBub24tc29ja2V0Iiw1OToiTm90IGEgdHlwZXdyaXRlciIsNjA6Ik5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MiLDYxOiJWYWx1ZSB0b28gbGFyZ2UgZm9yIGRlZmluZWQgZGF0YSB0eXBlIiw2MjoiUHJldmlvdXMgb3duZXIgZGllZCIsNjM6Ik5vdCBzdXBlci11c2VyIiw2NDoiQnJva2VuIHBpcGUiLDY1OiJQcm90b2NvbCBlcnJvciIsNjY6IlVua25vd24gcHJvdG9jb2wiLDY3OiJQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQiLDY4OiJNYXRoIHJlc3VsdCBub3QgcmVwcmVzZW50YWJsZSIsNjk6IlJlYWQgb25seSBmaWxlIHN5c3RlbSIsNzA6IklsbGVnYWwgc2VlayIsNzE6Ik5vIHN1Y2ggcHJvY2VzcyIsNzI6IlN0YWxlIGZpbGUgaGFuZGxlIiw3MzoiQ29ubmVjdGlvbiB0aW1lZCBvdXQiLDc0OiJUZXh0IGZpbGUgYnVzeSIsNzU6IkNyb3NzLWRldmljZSBsaW5rIiwxMDA6IkRldmljZSBub3QgYSBzdHJlYW0iLDEwMToiQmFkIGZvbnQgZmlsZSBmbXQiLDEwMjoiSW52YWxpZCBzbG90IiwxMDM6IkludmFsaWQgcmVxdWVzdCBjb2RlIiwxMDQ6Ik5vIGFub2RlIiwxMDU6IkJsb2NrIGRldmljZSByZXF1aXJlZCIsMTA2OiJDaGFubmVsIG51bWJlciBvdXQgb2YgcmFuZ2UiLDEwNzoiTGV2ZWwgMyBoYWx0ZWQiLDEwODoiTGV2ZWwgMyByZXNldCIsMTA5OiJMaW5rIG51bWJlciBvdXQgb2YgcmFuZ2UiLDExMDoiUHJvdG9jb2wgZHJpdmVyIG5vdCBhdHRhY2hlZCIsMTExOiJObyBDU0kgc3RydWN0dXJlIGF2YWlsYWJsZSIsMTEyOiJMZXZlbCAyIGhhbHRlZCIsMTEzOiJJbnZhbGlkIGV4Y2hhbmdlIiwxMTQ6IkludmFsaWQgcmVxdWVzdCBkZXNjcmlwdG9yIiwxMTU6IkV4Y2hhbmdlIGZ1bGwiLDExNjoiTm8gZGF0YSAoZm9yIG5vIGRlbGF5IGlvKSIsMTE3OiJUaW1lciBleHBpcmVkIiwxMTg6Ik91dCBvZiBzdHJlYW1zIHJlc291cmNlcyIsMTE5OiJNYWNoaW5lIGlzIG5vdCBvbiB0aGUgbmV0d29yayIsMTIwOiJQYWNrYWdlIG5vdCBpbnN0YWxsZWQiLDEyMToiVGhlIG9iamVjdCBpcyByZW1vdGUiLDEyMjoiQWR2ZXJ0aXNlIGVycm9yIiwxMjM6IlNybW91bnQgZXJyb3IiLDEyNDoiQ29tbXVuaWNhdGlvbiBlcnJvciBvbiBzZW5kIiwxMjU6IkNyb3NzIG1vdW50IHBvaW50IChub3QgcmVhbGx5IGVycm9yKSIsMTI2OiJHaXZlbiBsb2cuIG5hbWUgbm90IHVuaXF1ZSIsMTI3OiJmLmQuIGludmFsaWQgZm9yIHRoaXMgb3BlcmF0aW9uIiwxMjg6IlJlbW90ZSBhZGRyZXNzIGNoYW5nZWQiLDEyOToiQ2FuICAgYWNjZXNzIGEgbmVlZGVkIHNoYXJlZCBsaWIiLDEzMDoiQWNjZXNzaW5nIGEgY29ycnVwdGVkIHNoYXJlZCBsaWIiLDEzMToiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZCIsMTMyOiJBdHRlbXB0aW5nIHRvIGxpbmsgaW4gdG9vIG1hbnkgbGlicyIsMTMzOiJBdHRlbXB0aW5nIHRvIGV4ZWMgYSBzaGFyZWQgbGlicmFyeSIsMTM1OiJTdHJlYW1zIHBpcGUgZXJyb3IiLDEzNjoiVG9vIG1hbnkgdXNlcnMiLDEzNzoiU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCIsMTM4OiJOb3Qgc3VwcG9ydGVkIiwxMzk6IlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkIiwxNDA6IkNhbid0IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duIiwxNDE6IlRvbyBtYW55IHJlZmVyZW5jZXMiLDE0MjoiSG9zdCBpcyBkb3duIiwxNDg6Ik5vIG1lZGl1bSAoaW4gdGFwZSBkcml2ZSkiLDE1NjoiTGV2ZWwgMiBub3Qgc3luY2hyb25pemVkIn0sRW09e307ZnVuY3Rpb24gSFIodSl7cmV0dXJuIEFpKCJ3YXJuaW5nOiBidWlsZCB3aXRoIC1zREVNQU5HTEVfU1VQUE9SVCB0byBsaW5rIGluIGxpYmN4eGFiaSBkZW1hbmdsaW5nIiksdX1mdW5jdGlvbiB6WCh1KXt2YXIgUz0vXGJfWltcd1xkX10rL2c7cmV0dXJuIHUucmVwbGFjZShTLGZ1bmN0aW9uKFcpe3ZhciBQPUhSKFcpO3JldHVybiBXPT09UD9XOlArIiBbIitXKyJdIn0pfXZhciBLPXtyb290Om51bGwsbW91bnRzOltdLGRldmljZXM6e30sc3RyZWFtczpbXSxuZXh0SW5vZGU6MSxuYW1lVGFibGU6bnVsbCxjdXJyZW50UGF0aDoiLyIsaW5pdGlhbGl6ZWQ6ITEsaWdub3JlUGVybWlzc2lvbnM6ITAsRXJybm9FcnJvcjpudWxsLGdlbmVyaWNFcnJvcnM6e30sZmlsZXN5c3RlbXM6bnVsbCxzeW5jRlNSZXF1ZXN0czowLGxvb2t1cFBhdGg6KHUsUz17fSk9PntpZih1PUR0LnJlc29sdmUodSksIXUpcmV0dXJue3BhdGg6IiIsbm9kZTpudWxsfTt2YXIgVz17Zm9sbG93X21vdW50OiEwLHJlY3Vyc2VfY291bnQ6MH07aWYoUz1PYmplY3QuYXNzaWduKFcsUyksUy5yZWN1cnNlX2NvdW50PjgpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigzMik7Zm9yKHZhciBQPXUuc3BsaXQoIi8iKS5maWx0ZXIodWU9PiEhdWUpLCQ9Sy5yb290LGh0PSIvIixkdD0wO2R0PFAubGVuZ3RoO2R0Kyspe3ZhciBmdD1kdD09PVAubGVuZ3RoLTE7aWYoZnQmJlMucGFyZW50KWJyZWFrO2lmKCQ9Sy5sb29rdXBOb2RlKCQsUFtkdF0pLGh0PUd0LmpvaW4yKGh0LFBbZHRdKSxLLmlzTW91bnRwb2ludCgkKSYmKCFmdHx8ZnQmJlMuZm9sbG93X21vdW50KSYmKCQ9JC5tb3VudGVkLnJvb3QpLCFmdHx8Uy5mb2xsb3cpZm9yKHZhciBCdD0wO0suaXNMaW5rKCQubW9kZSk7KXt2YXIgTHQ9Sy5yZWFkbGluayhodCk7aHQ9RHQucmVzb2x2ZShHdC5kaXJuYW1lKGh0KSxMdCk7dmFyIHJlPUsubG9va3VwUGF0aChodCx7cmVjdXJzZV9jb3VudDpTLnJlY3Vyc2VfY291bnQrMX0pO2lmKCQ9cmUubm9kZSxCdCsrPjQwKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMzIpfX1yZXR1cm57cGF0aDpodCxub2RlOiR9fSxnZXRQYXRoOnU9Pntmb3IodmFyIFM7Oyl7aWYoSy5pc1Jvb3QodSkpe3ZhciBXPXUubW91bnQubW91bnRwb2ludDtyZXR1cm4gUz9XW1cubGVuZ3RoLTFdIT09Ii8iP2Ake1d9LyR7U31gOlcrUzpXfVM9Uz9gJHt1Lm5hbWV9LyR7U31gOnUubmFtZSx1PXUucGFyZW50fX0saGFzaE5hbWU6KHUsUyk9Pntmb3IodmFyIFc9MCxQPTA7UDxTLmxlbmd0aDtQKyspVz0oVzw8NSktVytTLmNoYXJDb2RlQXQoUCl8MDtyZXR1cm4odStXPj4+MCklSy5uYW1lVGFibGUubGVuZ3RofSxoYXNoQWRkTm9kZTp1PT57dmFyIFM9Sy5oYXNoTmFtZSh1LnBhcmVudC5pZCx1Lm5hbWUpO3UubmFtZV9uZXh0PUsubmFtZVRhYmxlW1NdLEsubmFtZVRhYmxlW1NdPXV9LGhhc2hSZW1vdmVOb2RlOnU9Pnt2YXIgUz1LLmhhc2hOYW1lKHUucGFyZW50LmlkLHUubmFtZSk7aWYoSy5uYW1lVGFibGVbU109PT11KUsubmFtZVRhYmxlW1NdPXUubmFtZV9uZXh0O2Vsc2UgZm9yKHZhciBXPUsubmFtZVRhYmxlW1NdO1c7KXtpZihXLm5hbWVfbmV4dD09PXUpe1cubmFtZV9uZXh0PXUubmFtZV9uZXh0O2JyZWFrfVc9Vy5uYW1lX25leHR9fSxsb29rdXBOb2RlOih1LFMpPT57dmFyIFc9Sy5tYXlMb29rdXAodSk7aWYoVyl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKFcsdSk7Zm9yKHZhciBQPUsuaGFzaE5hbWUodS5pZCxTKSwkPUsubmFtZVRhYmxlW1BdOyQ7JD0kLm5hbWVfbmV4dCl7dmFyIGh0PSQubmFtZTtpZigkLnBhcmVudC5pZD09PXUuaWQmJmh0PT09UylyZXR1cm4gJH1yZXR1cm4gSy5sb29rdXAodSxTKX0sY3JlYXRlTm9kZToodSxTLFcsUCk9PntjKHR5cGVvZiB1PT0ib2JqZWN0Iik7dmFyICQ9bmV3IEsuRlNOb2RlKHUsUyxXLFApO3JldHVybiBLLmhhc2hBZGROb2RlKCQpLCR9LGRlc3Ryb3lOb2RlOnU9PntLLmhhc2hSZW1vdmVOb2RlKHUpfSxpc1Jvb3Q6dT0+dT09PXUucGFyZW50LGlzTW91bnRwb2ludDp1PT4hIXUubW91bnRlZCxpc0ZpbGU6dT0+KHUmNjE0NDApPT09MzI3NjgsaXNEaXI6dT0+KHUmNjE0NDApPT09MTYzODQsaXNMaW5rOnU9Pih1JjYxNDQwKT09PTQwOTYwLGlzQ2hyZGV2OnU9Pih1JjYxNDQwKT09PTgxOTIsaXNCbGtkZXY6dT0+KHUmNjE0NDApPT09MjQ1NzYsaXNGSUZPOnU9Pih1JjYxNDQwKT09PTQwOTYsaXNTb2NrZXQ6dT0+KHUmNDkxNTIpPT09NDkxNTIsZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmc6dT0+e3ZhciBTPVsiciIsInciLCJydyJdW3UmM107cmV0dXJuIHUmNTEyJiYoUys9InciKSxTfSxub2RlUGVybWlzc2lvbnM6KHUsUyk9PksuaWdub3JlUGVybWlzc2lvbnM/MDpTLmluY2x1ZGVzKCJyIikmJiEodS5tb2RlJjI5Mil8fFMuaW5jbHVkZXMoInciKSYmISh1Lm1vZGUmMTQ2KXx8Uy5pbmNsdWRlcygieCIpJiYhKHUubW9kZSY3Myk/MjowLG1heUxvb2t1cDp1PT57dmFyIFM9Sy5ub2RlUGVybWlzc2lvbnModSwieCIpO3JldHVybiBTfHwodS5ub2RlX29wcy5sb29rdXA/MDoyKX0sbWF5Q3JlYXRlOih1LFMpPT57dHJ5e3ZhciBXPUsubG9va3VwTm9kZSh1LFMpO3JldHVybiAyMH1jYXRjaHt9cmV0dXJuIEsubm9kZVBlcm1pc3Npb25zKHUsInd4Iil9LG1heURlbGV0ZToodSxTLFcpPT57dmFyIFA7dHJ5e1A9Sy5sb29rdXBOb2RlKHUsUyl9Y2F0Y2goaHQpe3JldHVybiBodC5lcnJub312YXIgJD1LLm5vZGVQZXJtaXNzaW9ucyh1LCJ3eCIpO2lmKCQpcmV0dXJuICQ7aWYoVyl7aWYoIUsuaXNEaXIoUC5tb2RlKSlyZXR1cm4gNTQ7aWYoSy5pc1Jvb3QoUCl8fEsuZ2V0UGF0aChQKT09PUsuY3dkKCkpcmV0dXJuIDEwfWVsc2UgaWYoSy5pc0RpcihQLm1vZGUpKXJldHVybiAzMTtyZXR1cm4gMH0sbWF5T3BlbjoodSxTKT0+dT9LLmlzTGluayh1Lm1vZGUpPzMyOksuaXNEaXIodS5tb2RlKSYmKEsuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoUykhPT0iciJ8fFMmNTEyKT8zMTpLLm5vZGVQZXJtaXNzaW9ucyh1LEsuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoUykpOjQ0LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooKT0+e2Zvcih2YXIgdT0wO3U8PUsuTUFYX09QRU5fRkRTO3UrKylpZighSy5zdHJlYW1zW3VdKXJldHVybiB1O3Rocm93IG5ldyBLLkVycm5vRXJyb3IoMzMpfSxnZXRTdHJlYW1DaGVja2VkOnU9Pnt2YXIgUz1LLmdldFN0cmVhbSh1KTtpZighUyl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO3JldHVybiBTfSxnZXRTdHJlYW06dT0+Sy5zdHJlYW1zW3VdLGNyZWF0ZVN0cmVhbToodSxTPS0xKT0+KEsuRlNTdHJlYW18fChLLkZTU3RyZWFtPWZ1bmN0aW9uKCl7dGhpcy5zaGFyZWQ9e319LEsuRlNTdHJlYW0ucHJvdG90eXBlPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEsuRlNTdHJlYW0ucHJvdG90eXBlLHtvYmplY3Q6e2dldCgpe3JldHVybiB0aGlzLm5vZGV9LHNldChXKXt0aGlzLm5vZGU9V319LGlzUmVhZDp7Z2V0KCl7cmV0dXJuKHRoaXMuZmxhZ3MmMjA5NzE1NSkhPT0xfX0saXNXcml0ZTp7Z2V0KCl7cmV0dXJuKHRoaXMuZmxhZ3MmMjA5NzE1NSkhPT0wfX0saXNBcHBlbmQ6e2dldCgpe3JldHVybiB0aGlzLmZsYWdzJjEwMjR9fSxmbGFnczp7Z2V0KCl7cmV0dXJuIHRoaXMuc2hhcmVkLmZsYWdzfSxzZXQoVyl7dGhpcy5zaGFyZWQuZmxhZ3M9V319LHBvc2l0aW9uOntnZXQoKXtyZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb259LHNldChXKXt0aGlzLnNoYXJlZC5wb3NpdGlvbj1XfX19KSksdT1PYmplY3QuYXNzaWduKG5ldyBLLkZTU3RyZWFtLHUpLFM9PS0xJiYoUz1LLm5leHRmZCgpKSx1LmZkPVMsSy5zdHJlYW1zW1NdPXUsdSksY2xvc2VTdHJlYW06dT0+e0suc3RyZWFtc1t1XT1udWxsfSxjaHJkZXZfc3RyZWFtX29wczp7b3Blbjp1PT57dmFyIFM9Sy5nZXREZXZpY2UodS5ub2RlLnJkZXYpO3Uuc3RyZWFtX29wcz1TLnN0cmVhbV9vcHMsdS5zdHJlYW1fb3BzLm9wZW4mJnUuc3RyZWFtX29wcy5vcGVuKHUpfSxsbHNlZWs6KCk9Pnt0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDcwKX19LG1ham9yOnU9PnU+PjgsbWlub3I6dT0+dSYyNTUsbWFrZWRldjoodSxTKT0+dTw8OHxTLHJlZ2lzdGVyRGV2aWNlOih1LFMpPT57Sy5kZXZpY2VzW3VdPXtzdHJlYW1fb3BzOlN9fSxnZXREZXZpY2U6dT0+Sy5kZXZpY2VzW3VdLGdldE1vdW50czp1PT57Zm9yKHZhciBTPVtdLFc9W3VdO1cubGVuZ3RoOyl7dmFyIFA9Vy5wb3AoKTtTLnB1c2goUCksVy5wdXNoLmFwcGx5KFcsUC5tb3VudHMpfXJldHVybiBTfSxzeW5jZnM6KHUsUyk9Pnt0eXBlb2YgdT09ImZ1bmN0aW9uIiYmKFM9dSx1PSExKSxLLnN5bmNGU1JlcXVlc3RzKyssSy5zeW5jRlNSZXF1ZXN0cz4xJiZiKGB3YXJuaW5nOiAke0suc3luY0ZTUmVxdWVzdHN9IEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmtgKTt2YXIgVz1LLmdldE1vdW50cyhLLnJvb3QubW91bnQpLFA9MDtmdW5jdGlvbiAkKGR0KXtyZXR1cm4gYyhLLnN5bmNGU1JlcXVlc3RzPjApLEsuc3luY0ZTUmVxdWVzdHMtLSxTKGR0KX1mdW5jdGlvbiBodChkdCl7aWYoZHQpcmV0dXJuIGh0LmVycm9yZWQ/dm9pZCAwOihodC5lcnJvcmVkPSEwLCQoZHQpKTsrK1A+PVcubGVuZ3RoJiYkKG51bGwpfVcuZm9yRWFjaChkdD0+e2lmKCFkdC50eXBlLnN5bmNmcylyZXR1cm4gaHQobnVsbCk7ZHQudHlwZS5zeW5jZnMoZHQsdSxodCl9KX0sbW91bnQ6KHUsUyxXKT0+e2lmKHR5cGVvZiB1PT0ic3RyaW5nIil0aHJvdyB1O3ZhciBQPVc9PT0iLyIsJD0hVyxodDtpZihQJiZLLnJvb3QpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigxMCk7aWYoIVAmJiEkKXt2YXIgZHQ9Sy5sb29rdXBQYXRoKFcse2ZvbGxvd19tb3VudDohMX0pO2lmKFc9ZHQucGF0aCxodD1kdC5ub2RlLEsuaXNNb3VudHBvaW50KGh0KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDEwKTtpZighSy5pc0RpcihodC5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDU0KX12YXIgZnQ9e3R5cGU6dSxvcHRzOlMsbW91bnRwb2ludDpXLG1vdW50czpbXX0sQnQ9dS5tb3VudChmdCk7cmV0dXJuIEJ0Lm1vdW50PWZ0LGZ0LnJvb3Q9QnQsUD9LLnJvb3Q9QnQ6aHQmJihodC5tb3VudGVkPWZ0LGh0Lm1vdW50JiZodC5tb3VudC5tb3VudHMucHVzaChmdCkpLEJ0fSx1bm1vdW50OnU9Pnt2YXIgUz1LLmxvb2t1cFBhdGgodSx7Zm9sbG93X21vdW50OiExfSk7aWYoIUsuaXNNb3VudHBvaW50KFMubm9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7dmFyIFc9Uy5ub2RlLFA9Vy5tb3VudGVkLCQ9Sy5nZXRNb3VudHMoUCk7T2JqZWN0LmtleXMoSy5uYW1lVGFibGUpLmZvckVhY2goZHQ9Pntmb3IodmFyIGZ0PUsubmFtZVRhYmxlW2R0XTtmdDspe3ZhciBCdD1mdC5uYW1lX25leHQ7JC5pbmNsdWRlcyhmdC5tb3VudCkmJksuZGVzdHJveU5vZGUoZnQpLGZ0PUJ0fX0pLFcubW91bnRlZD1udWxsO3ZhciBodD1XLm1vdW50Lm1vdW50cy5pbmRleE9mKFApO2MoaHQhPT0tMSksVy5tb3VudC5tb3VudHMuc3BsaWNlKGh0LDEpfSxsb29rdXA6KHUsUyk9PnUubm9kZV9vcHMubG9va3VwKHUsUyksbWtub2Q6KHUsUyxXKT0+e3ZhciBQPUsubG9va3VwUGF0aCh1LHtwYXJlbnQ6ITB9KSwkPVAubm9kZSxodD1HdC5iYXNlbmFtZSh1KTtpZighaHR8fGh0PT09Ii4ifHxodD09PSIuLiIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7dmFyIGR0PUsubWF5Q3JlYXRlKCQsaHQpO2lmKGR0KXRocm93IG5ldyBLLkVycm5vRXJyb3IoZHQpO2lmKCEkLm5vZGVfb3BzLm1rbm9kKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpO3JldHVybiAkLm5vZGVfb3BzLm1rbm9kKCQsaHQsUyxXKX0sY3JlYXRlOih1LFMpPT4oUz1TIT09dm9pZCAwP1M6NDM4LFMmPTQwOTUsU3w9MzI3NjgsSy5ta25vZCh1LFMsMCkpLG1rZGlyOih1LFMpPT4oUz1TIT09dm9pZCAwP1M6NTExLFMmPTEwMjMsU3w9MTYzODQsSy5ta25vZCh1LFMsMCkpLG1rZGlyVHJlZToodSxTKT0+e2Zvcih2YXIgVz11LnNwbGl0KCIvIiksUD0iIiwkPTA7JDxXLmxlbmd0aDsrKyQpaWYoV1skXSl7UCs9Ii8iK1dbJF07dHJ5e0subWtkaXIoUCxTKX1jYXRjaChodCl7aWYoaHQuZXJybm8hPTIwKXRocm93IGh0fX19LG1rZGV2Oih1LFMsVyk9Pih0eXBlb2YgVz4idSImJihXPVMsUz00MzgpLFN8PTgxOTIsSy5ta25vZCh1LFMsVykpLHN5bWxpbms6KHUsUyk9PntpZighRHQucmVzb2x2ZSh1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ0KTt2YXIgVz1LLmxvb2t1cFBhdGgoUyx7cGFyZW50OiEwfSksUD1XLm5vZGU7aWYoIVApdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7dmFyICQ9R3QuYmFzZW5hbWUoUyksaHQ9Sy5tYXlDcmVhdGUoUCwkKTtpZihodCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKGh0KTtpZighUC5ub2RlX29wcy5zeW1saW5rKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpO3JldHVybiBQLm5vZGVfb3BzLnN5bWxpbmsoUCwkLHUpfSxyZW5hbWU6KHUsUyk9Pnt2YXIgVz1HdC5kaXJuYW1lKHUpLFA9R3QuZGlybmFtZShTKSwkPUd0LmJhc2VuYW1lKHUpLGh0PUd0LmJhc2VuYW1lKFMpLGR0LGZ0LEJ0O2lmKGR0PUsubG9va3VwUGF0aCh1LHtwYXJlbnQ6ITB9KSxmdD1kdC5ub2RlLGR0PUsubG9va3VwUGF0aChTLHtwYXJlbnQ6ITB9KSxCdD1kdC5ub2RlLCFmdHx8IUJ0KXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO2lmKGZ0Lm1vdW50IT09QnQubW91bnQpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig3NSk7dmFyIEx0PUsubG9va3VwTm9kZShmdCwkKSxyZT1EdC5yZWxhdGl2ZSh1LFApO2lmKHJlLmNoYXJBdCgwKSE9PSIuIil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtpZihyZT1EdC5yZWxhdGl2ZShTLFcpLHJlLmNoYXJBdCgwKSE9PSIuIil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDU1KTt2YXIgdWU7dHJ5e3VlPUsubG9va3VwTm9kZShCdCxodCl9Y2F0Y2h7fWlmKEx0IT09dWUpe3ZhciBmZT1LLmlzRGlyKEx0Lm1vZGUpLEVlPUsubWF5RGVsZXRlKGZ0LCQsZmUpO2lmKEVlKXRocm93IG5ldyBLLkVycm5vRXJyb3IoRWUpO2lmKEVlPXVlP0subWF5RGVsZXRlKEJ0LGh0LGZlKTpLLm1heUNyZWF0ZShCdCxodCksRWUpdGhyb3cgbmV3IEsuRXJybm9FcnJvcihFZSk7aWYoIWZ0Lm5vZGVfb3BzLnJlbmFtZSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYzKTtpZihLLmlzTW91bnRwb2ludChMdCl8fHVlJiZLLmlzTW91bnRwb2ludCh1ZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigxMCk7aWYoQnQhPT1mdCYmKEVlPUsubm9kZVBlcm1pc3Npb25zKGZ0LCJ3IiksRWUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoRWUpO0suaGFzaFJlbW92ZU5vZGUoTHQpO3RyeXtmdC5ub2RlX29wcy5yZW5hbWUoTHQsQnQsaHQpfWNhdGNoKFNlKXt0aHJvdyBTZX1maW5hbGx5e0suaGFzaEFkZE5vZGUoTHQpfX19LHJtZGlyOnU9Pnt2YXIgUz1LLmxvb2t1cFBhdGgodSx7cGFyZW50OiEwfSksVz1TLm5vZGUsUD1HdC5iYXNlbmFtZSh1KSwkPUsubG9va3VwTm9kZShXLFApLGh0PUsubWF5RGVsZXRlKFcsUCwhMCk7aWYoaHQpdGhyb3cgbmV3IEsuRXJybm9FcnJvcihodCk7aWYoIVcubm9kZV9vcHMucm1kaXIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7aWYoSy5pc01vdW50cG9pbnQoJCkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigxMCk7Vy5ub2RlX29wcy5ybWRpcihXLFApLEsuZGVzdHJveU5vZGUoJCl9LHJlYWRkaXI6dT0+e3ZhciBTPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6ITB9KSxXPVMubm9kZTtpZighVy5ub2RlX29wcy5yZWFkZGlyKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNTQpO3JldHVybiBXLm5vZGVfb3BzLnJlYWRkaXIoVyl9LHVubGluazp1PT57dmFyIFM9Sy5sb29rdXBQYXRoKHUse3BhcmVudDohMH0pLFc9Uy5ub2RlO2lmKCFXKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO3ZhciBQPUd0LmJhc2VuYW1lKHUpLCQ9Sy5sb29rdXBOb2RlKFcsUCksaHQ9Sy5tYXlEZWxldGUoVyxQLCExKTtpZihodCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKGh0KTtpZighVy5ub2RlX29wcy51bmxpbmspdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7aWYoSy5pc01vdW50cG9pbnQoJCkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigxMCk7Vy5ub2RlX29wcy51bmxpbmsoVyxQKSxLLmRlc3Ryb3lOb2RlKCQpfSxyZWFkbGluazp1PT57dmFyIFM9Sy5sb29rdXBQYXRoKHUpLFc9Uy5ub2RlO2lmKCFXKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO2lmKCFXLm5vZGVfb3BzLnJlYWRsaW5rKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO3JldHVybiBEdC5yZXNvbHZlKEsuZ2V0UGF0aChXLnBhcmVudCksVy5ub2RlX29wcy5yZWFkbGluayhXKSl9LHN0YXQ6KHUsUyk9Pnt2YXIgVz1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiFTfSksUD1XLm5vZGU7aWYoIVApdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7aWYoIVAubm9kZV9vcHMuZ2V0YXR0cil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYzKTtyZXR1cm4gUC5ub2RlX29wcy5nZXRhdHRyKFApfSxsc3RhdDp1PT5LLnN0YXQodSwhMCksY2htb2Q6KHUsUyxXKT0+e3ZhciBQO2lmKHR5cGVvZiB1PT0ic3RyaW5nIil7dmFyICQ9Sy5sb29rdXBQYXRoKHUse2ZvbGxvdzohV30pO1A9JC5ub2RlfWVsc2UgUD11O2lmKCFQLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7UC5ub2RlX29wcy5zZXRhdHRyKFAse21vZGU6UyY0MDk1fFAubW9kZSYtNDA5Nix0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2htb2Q6KHUsUyk9PntLLmNobW9kKHUsUywhMCl9LGZjaG1vZDoodSxTKT0+e3ZhciBXPUsuZ2V0U3RyZWFtQ2hlY2tlZCh1KTtLLmNobW9kKFcubm9kZSxTKX0sY2hvd246KHUsUyxXLFApPT57dmFyICQ7aWYodHlwZW9mIHU9PSJzdHJpbmciKXt2YXIgaHQ9Sy5sb29rdXBQYXRoKHUse2ZvbGxvdzohUH0pOyQ9aHQubm9kZX1lbHNlICQ9dTtpZighJC5ub2RlX29wcy5zZXRhdHRyKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpOyQubm9kZV9vcHMuc2V0YXR0cigkLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2hvd246KHUsUyxXKT0+e0suY2hvd24odSxTLFcsITApfSxmY2hvd246KHUsUyxXKT0+e3ZhciBQPUsuZ2V0U3RyZWFtQ2hlY2tlZCh1KTtLLmNob3duKFAubm9kZSxTLFcpfSx0cnVuY2F0ZToodSxTKT0+e2lmKFM8MCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTt2YXIgVztpZih0eXBlb2YgdT09InN0cmluZyIpe3ZhciBQPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6ITB9KTtXPVAubm9kZX1lbHNlIFc9dTtpZighVy5ub2RlX29wcy5zZXRhdHRyKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpO2lmKEsuaXNEaXIoVy5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDMxKTtpZighSy5pc0ZpbGUoVy5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTt2YXIgJD1LLm5vZGVQZXJtaXNzaW9ucyhXLCJ3Iik7aWYoJCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKCQpO1cubm9kZV9vcHMuc2V0YXR0cihXLHtzaXplOlMsdGltZXN0YW1wOkRhdGUubm93KCl9KX0sZnRydW5jYXRlOih1LFMpPT57dmFyIFc9Sy5nZXRTdHJlYW1DaGVja2VkKHUpO2lmKCEoVy5mbGFncyYyMDk3MTU1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtLLnRydW5jYXRlKFcubm9kZSxTKX0sdXRpbWU6KHUsUyxXKT0+e3ZhciBQPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6ITB9KSwkPVAubm9kZTskLm5vZGVfb3BzLnNldGF0dHIoJCx7dGltZXN0YW1wOk1hdGgubWF4KFMsVyl9KX0sb3BlbjoodSxTLFcpPT57aWYodT09PSIiKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO1M9dHlwZW9mIFM9PSJzdHJpbmciP1JhKFMpOlMsVz10eXBlb2YgVz4idSI/NDM4OlcsUyY2ND9XPVcmNDA5NXwzMjc2ODpXPTA7dmFyIFA7aWYodHlwZW9mIHU9PSJvYmplY3QiKVA9dTtlbHNle3U9R3Qubm9ybWFsaXplKHUpO3RyeXt2YXIgJD1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiEoUyYxMzEwNzIpfSk7UD0kLm5vZGV9Y2F0Y2h7fX12YXIgaHQ9ITE7aWYoUyY2NClpZihQKXtpZihTJjEyOCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDIwKX1lbHNlIFA9Sy5ta25vZCh1LFcsMCksaHQ9ITA7aWYoIVApdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7aWYoSy5pc0NocmRldihQLm1vZGUpJiYoUyY9LTUxMyksUyY2NTUzNiYmIUsuaXNEaXIoUC5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDU0KTtpZighaHQpe3ZhciBkdD1LLm1heU9wZW4oUCxTKTtpZihkdCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKGR0KX1TJjUxMiYmIWh0JiZLLnRydW5jYXRlKFAsMCksUyY9LTEzMTcxMzt2YXIgZnQ9Sy5jcmVhdGVTdHJlYW0oe25vZGU6UCxwYXRoOksuZ2V0UGF0aChQKSxmbGFnczpTLHNlZWthYmxlOiEwLHBvc2l0aW9uOjAsc3RyZWFtX29wczpQLnN0cmVhbV9vcHMsdW5nb3R0ZW46W10sZXJyb3I6ITF9KTtyZXR1cm4gZnQuc3RyZWFtX29wcy5vcGVuJiZmdC5zdHJlYW1fb3BzLm9wZW4oZnQpLGkubG9nUmVhZEZpbGVzJiYhKFMmMSkmJihLLnJlYWRGaWxlc3x8KEsucmVhZEZpbGVzPXt9KSx1IGluIEsucmVhZEZpbGVzfHwoSy5yZWFkRmlsZXNbdV09MSkpLGZ0fSxjbG9zZTp1PT57aWYoSy5pc0Nsb3NlZCh1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO3UuZ2V0ZGVudHMmJih1LmdldGRlbnRzPW51bGwpO3RyeXt1LnN0cmVhbV9vcHMuY2xvc2UmJnUuc3RyZWFtX29wcy5jbG9zZSh1KX1jYXRjaChTKXt0aHJvdyBTfWZpbmFsbHl7Sy5jbG9zZVN0cmVhbSh1LmZkKX11LmZkPW51bGx9LGlzQ2xvc2VkOnU9PnUuZmQ9PT1udWxsLGxsc2VlazoodSxTLFcpPT57aWYoSy5pc0Nsb3NlZCh1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO2lmKCF1LnNlZWthYmxlfHwhdS5zdHJlYW1fb3BzLmxsc2Vlayl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDcwKTtpZihXIT0wJiZXIT0xJiZXIT0yKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO3JldHVybiB1LnBvc2l0aW9uPXUuc3RyZWFtX29wcy5sbHNlZWsodSxTLFcpLHUudW5nb3R0ZW49W10sdS5wb3NpdGlvbn0scmVhZDoodSxTLFcsUCwkKT0+e2lmKGMoVz49MCksUDwwfHwkPDApdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7aWYoSy5pc0Nsb3NlZCh1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO2lmKCh1LmZsYWdzJjIwOTcxNTUpPT09MSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO2lmKEsuaXNEaXIodS5ub2RlLm1vZGUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMzEpO2lmKCF1LnN0cmVhbV9vcHMucmVhZCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTt2YXIgaHQ9dHlwZW9mICQ8InUiO2lmKCFodCkkPXUucG9zaXRpb247ZWxzZSBpZighdS5zZWVrYWJsZSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDcwKTt2YXIgZHQ9dS5zdHJlYW1fb3BzLnJlYWQodSxTLFcsUCwkKTtyZXR1cm4gaHR8fCh1LnBvc2l0aW9uKz1kdCksZHR9LHdyaXRlOih1LFMsVyxQLCQsaHQpPT57aWYoYyhXPj0wKSxQPDB8fCQ8MCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtpZihLLmlzQ2xvc2VkKHUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7aWYoISh1LmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7aWYoSy5pc0Rpcih1Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigzMSk7aWYoIXUuc3RyZWFtX29wcy53cml0ZSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTt1LnNlZWthYmxlJiZ1LmZsYWdzJjEwMjQmJksubGxzZWVrKHUsMCwyKTt2YXIgZHQ9dHlwZW9mICQ8InUiO2lmKCFkdCkkPXUucG9zaXRpb247ZWxzZSBpZighdS5zZWVrYWJsZSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDcwKTt2YXIgZnQ9dS5zdHJlYW1fb3BzLndyaXRlKHUsUyxXLFAsJCxodCk7cmV0dXJuIGR0fHwodS5wb3NpdGlvbis9ZnQpLGZ0fSxhbGxvY2F0ZToodSxTLFcpPT57aWYoSy5pc0Nsb3NlZCh1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO2lmKFM8MHx8Vzw9MCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtpZighKHUuZmxhZ3MmMjA5NzE1NSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig4KTtpZighSy5pc0ZpbGUodS5ub2RlLm1vZGUpJiYhSy5pc0Rpcih1Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0Myk7aWYoIXUuc3RyZWFtX29wcy5hbGxvY2F0ZSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDEzOCk7dS5zdHJlYW1fb3BzLmFsbG9jYXRlKHUsUyxXKX0sbW1hcDoodSxTLFcsUCwkKT0+e2lmKFAmMiYmISgkJjIpJiYodS5mbGFncyYyMDk3MTU1KSE9PTIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyKTtpZigodS5mbGFncyYyMDk3MTU1KT09PTEpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyKTtpZighdS5zdHJlYW1fb3BzLm1tYXApdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0Myk7cmV0dXJuIHUuc3RyZWFtX29wcy5tbWFwKHUsUyxXLFAsJCl9LG1zeW5jOih1LFMsVyxQLCQpPT4oYyhXPj0wKSx1LnN0cmVhbV9vcHMubXN5bmM/dS5zdHJlYW1fb3BzLm1zeW5jKHUsUyxXLFAsJCk6MCksbXVubWFwOnU9PjAsaW9jdGw6KHUsUyxXKT0+e2lmKCF1LnN0cmVhbV9vcHMuaW9jdGwpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig1OSk7cmV0dXJuIHUuc3RyZWFtX29wcy5pb2N0bCh1LFMsVyl9LHJlYWRGaWxlOih1LFM9e30pPT57aWYoUy5mbGFncz1TLmZsYWdzfHwwLFMuZW5jb2Rpbmc9Uy5lbmNvZGluZ3x8ImJpbmFyeSIsUy5lbmNvZGluZyE9PSJ1dGY4IiYmUy5lbmNvZGluZyE9PSJiaW5hcnkiKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbmNvZGluZyB0eXBlICIke1MuZW5jb2Rpbmd9ImApO3ZhciBXLFA9Sy5vcGVuKHUsUy5mbGFncyksJD1LLnN0YXQodSksaHQ9JC5zaXplLGR0PW5ldyBVaW50OEFycmF5KGh0KTtyZXR1cm4gSy5yZWFkKFAsZHQsMCxodCwwKSxTLmVuY29kaW5nPT09InV0ZjgiP1c9ZmEoZHQsMCk6Uy5lbmNvZGluZz09PSJiaW5hcnkiJiYoVz1kdCksSy5jbG9zZShQKSxXfSx3cml0ZUZpbGU6KHUsUyxXPXt9KT0+e1cuZmxhZ3M9Vy5mbGFnc3x8NTc3O3ZhciBQPUsub3Blbih1LFcuZmxhZ3MsVy5tb2RlKTtpZih0eXBlb2YgUz09InN0cmluZyIpe3ZhciAkPW5ldyBVaW50OEFycmF5KG1hKFMpKzEpLGh0PXFoKFMsJCwwLCQubGVuZ3RoKTtLLndyaXRlKFAsJCwwLGh0LHZvaWQgMCxXLmNhbk93bil9ZWxzZSBpZihBcnJheUJ1ZmZlci5pc1ZpZXcoUykpSy53cml0ZShQLFMsMCxTLmJ5dGVMZW5ndGgsdm9pZCAwLFcuY2FuT3duKTtlbHNlIHRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7Sy5jbG9zZShQKX0sY3dkOigpPT5LLmN1cnJlbnRQYXRoLGNoZGlyOnU9Pnt2YXIgUz1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiEwfSk7aWYoUy5ub2RlPT09bnVsbCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ0KTtpZighSy5pc0RpcihTLm5vZGUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig1NCk7dmFyIFc9Sy5ub2RlUGVybWlzc2lvbnMoUy5ub2RlLCJ4Iik7aWYoVyl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKFcpO0suY3VycmVudFBhdGg9Uy5wYXRofSxjcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXM6KCk9PntLLm1rZGlyKCIvdG1wIiksSy5ta2RpcigiL2hvbWUiKSxLLm1rZGlyKCIvaG9tZS93ZWJfdXNlciIpfSxjcmVhdGVEZWZhdWx0RGV2aWNlczooKT0+e0subWtkaXIoIi9kZXYiKSxLLnJlZ2lzdGVyRGV2aWNlKEsubWFrZWRldigxLDMpLHtyZWFkOigpPT4wLHdyaXRlOihQLCQsaHQsZHQsZnQpPT5kdH0pLEsubWtkZXYoIi9kZXYvbnVsbCIsSy5tYWtlZGV2KDEsMykpLHBpLnJlZ2lzdGVyKEsubWFrZWRldig1LDApLHBpLmRlZmF1bHRfdHR5X29wcykscGkucmVnaXN0ZXIoSy5tYWtlZGV2KDYsMCkscGkuZGVmYXVsdF90dHkxX29wcyksSy5ta2RldigiL2Rldi90dHkiLEsubWFrZWRldig1LDApKSxLLm1rZGV2KCIvZGV2L3R0eTEiLEsubWFrZWRldig2LDApKTt2YXIgdT1uZXcgVWludDhBcnJheSgxMDI0KSxTPTAsVz0oKT0+KFM9PT0wJiYoUz1VdCh1KS5ieXRlTGVuZ3RoKSx1Wy0tU10pO0suY3JlYXRlRGV2aWNlKCIvZGV2IiwicmFuZG9tIixXKSxLLmNyZWF0ZURldmljZSgiL2RldiIsInVyYW5kb20iLFcpLEsubWtkaXIoIi9kZXYvc2htIiksSy5ta2RpcigiL2Rldi9zaG0vdG1wIil9LGNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllczooKT0+e0subWtkaXIoIi9wcm9jIik7dmFyIHU9Sy5ta2RpcigiL3Byb2Mvc2VsZiIpO0subWtkaXIoIi9wcm9jL3NlbGYvZmQiKSxLLm1vdW50KHttb3VudDooKT0+e3ZhciBTPUsuY3JlYXRlTm9kZSh1LCJmZCIsMTY4OTUsNzMpO3JldHVybiBTLm5vZGVfb3BzPXtsb29rdXA6KFcsUCk9Pnt2YXIgJD0rUCxodD1LLmdldFN0cmVhbUNoZWNrZWQoJCksZHQ9e3BhcmVudDpudWxsLG1vdW50Onttb3VudHBvaW50OiJmYWtlIn0sbm9kZV9vcHM6e3JlYWRsaW5rOigpPT5odC5wYXRofX07cmV0dXJuIGR0LnBhcmVudD1kdCxkdH19LFN9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpfSxjcmVhdGVTdGFuZGFyZFN0cmVhbXM6KCk9PntpLnN0ZGluP0suY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkaW4iLGkuc3RkaW4pOksuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZGluIiksaS5zdGRvdXQ/Sy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsaS5zdGRvdXQpOksuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZG91dCIpLGkuc3RkZXJyP0suY3JlYXRlRGV2aWNlKCIvZGV2Iiwic3RkZXJyIixudWxsLGkuc3RkZXJyKTpLLnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIik7dmFyIHU9Sy5vcGVuKCIvZGV2L3N0ZGluIiwwKSxTPUsub3BlbigiL2Rldi9zdGRvdXQiLDEpLFc9Sy5vcGVuKCIvZGV2L3N0ZGVyciIsMSk7Yyh1LmZkPT09MCxgaW52YWxpZCBoYW5kbGUgZm9yIHN0ZGluICgke3UuZmR9KWApLGMoUy5mZD09PTEsYGludmFsaWQgaGFuZGxlIGZvciBzdGRvdXQgKCR7Uy5mZH0pYCksYyhXLmZkPT09MixgaW52YWxpZCBoYW5kbGUgZm9yIHN0ZGVyciAoJHtXLmZkfSlgKX0sZW5zdXJlRXJybm9FcnJvcjooKT0+e0suRXJybm9FcnJvcnx8KEsuRXJybm9FcnJvcj1mdW5jdGlvbihTLFcpe3RoaXMubmFtZT0iRXJybm9FcnJvciIsdGhpcy5ub2RlPVcsdGhpcy5zZXRFcnJubz1mdW5jdGlvbihQKXt0aGlzLmVycm5vPVA7Zm9yKHZhciAkIGluIEVtKWlmKEVtWyRdPT09UCl7dGhpcy5jb2RlPSQ7YnJlYWt9fSx0aGlzLnNldEVycm5vKFMpLHRoaXMubWVzc2FnZT1qUltTXSx0aGlzLnN0YWNrJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInN0YWNrIix7dmFsdWU6bmV3IEVycm9yKCkuc3RhY2ssd3JpdGFibGU6ITB9KSx0aGlzLnN0YWNrPXpYKHRoaXMuc3RhY2spKX0sSy5FcnJub0Vycm9yLnByb3RvdHlwZT1uZXcgRXJyb3IsSy5FcnJub0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1LLkVycm5vRXJyb3IsWzQ0XS5mb3JFYWNoKHU9PntLLmdlbmVyaWNFcnJvcnNbdV09bmV3IEsuRXJybm9FcnJvcih1KSxLLmdlbmVyaWNFcnJvcnNbdV0uc3RhY2s9IjxnZW5lcmljIGVycm9yLCBubyBzdGFjaz4ifSkpfSxzdGF0aWNJbml0OigpPT57Sy5lbnN1cmVFcnJub0Vycm9yKCksSy5uYW1lVGFibGU9bmV3IEFycmF5KDQwOTYpLEsubW91bnQoUWUse30sIi8iKSxLLmNyZWF0ZURlZmF1bHREaXJlY3RvcmllcygpLEsuY3JlYXRlRGVmYXVsdERldmljZXMoKSxLLmNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllcygpLEsuZmlsZXN5c3RlbXM9e01FTUZTOlFlfX0saW5pdDoodSxTLFcpPT57YyghSy5pbml0LmluaXRpYWxpemVkLCJGUy5pbml0IHdhcyBwcmV2aW91c2x5IGNhbGxlZC4gSWYgeW91IHdhbnQgdG8gaW5pdGlhbGl6ZSBsYXRlciB3aXRoIGN1c3RvbSBwYXJhbWV0ZXJzLCByZW1vdmUgYW55IGVhcmxpZXIgY2FsbHMgKG5vdGUgdGhhdCBvbmUgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIGNvZGUpIiksSy5pbml0LmluaXRpYWxpemVkPSEwLEsuZW5zdXJlRXJybm9FcnJvcigpLGkuc3RkaW49dXx8aS5zdGRpbixpLnN0ZG91dD1TfHxpLnN0ZG91dCxpLnN0ZGVycj1XfHxpLnN0ZGVycixLLmNyZWF0ZVN0YW5kYXJkU3RyZWFtcygpfSxxdWl0OigpPT57Sy5pbml0LmluaXRpYWxpemVkPSExLGQ4KDApO2Zvcih2YXIgdT0wO3U8Sy5zdHJlYW1zLmxlbmd0aDt1Kyspe3ZhciBTPUsuc3RyZWFtc1t1XTtTJiZLLmNsb3NlKFMpfX0sZmluZE9iamVjdDoodSxTKT0+e3ZhciBXPUsuYW5hbHl6ZVBhdGgodSxTKTtyZXR1cm4gVy5leGlzdHM/Vy5vYmplY3Q6bnVsbH0sYW5hbHl6ZVBhdGg6KHUsUyk9Pnt0cnl7dmFyIFc9Sy5sb29rdXBQYXRoKHUse2ZvbGxvdzohU30pO3U9Vy5wYXRofWNhdGNoe312YXIgUD17aXNSb290OiExLGV4aXN0czohMSxlcnJvcjowLG5hbWU6bnVsbCxwYXRoOm51bGwsb2JqZWN0Om51bGwscGFyZW50RXhpc3RzOiExLHBhcmVudFBhdGg6bnVsbCxwYXJlbnRPYmplY3Q6bnVsbH07dHJ5e3ZhciBXPUsubG9va3VwUGF0aCh1LHtwYXJlbnQ6ITB9KTtQLnBhcmVudEV4aXN0cz0hMCxQLnBhcmVudFBhdGg9Vy5wYXRoLFAucGFyZW50T2JqZWN0PVcubm9kZSxQLm5hbWU9R3QuYmFzZW5hbWUodSksVz1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiFTfSksUC5leGlzdHM9ITAsUC5wYXRoPVcucGF0aCxQLm9iamVjdD1XLm5vZGUsUC5uYW1lPVcubm9kZS5uYW1lLFAuaXNSb290PVcucGF0aD09PSIvIn1jYXRjaCgkKXtQLmVycm9yPSQuZXJybm99cmV0dXJuIFB9LGNyZWF0ZVBhdGg6KHUsUyxXLFApPT57dT10eXBlb2YgdT09InN0cmluZyI/dTpLLmdldFBhdGgodSk7Zm9yKHZhciAkPVMuc3BsaXQoIi8iKS5yZXZlcnNlKCk7JC5sZW5ndGg7KXt2YXIgaHQ9JC5wb3AoKTtpZihodCl7dmFyIGR0PUd0LmpvaW4yKHUsaHQpO3RyeXtLLm1rZGlyKGR0KX1jYXRjaHt9dT1kdH19cmV0dXJuIGR0fSxjcmVhdGVGaWxlOih1LFMsVyxQLCQpPT57dmFyIGh0PUd0LmpvaW4yKHR5cGVvZiB1PT0ic3RyaW5nIj91OksuZ2V0UGF0aCh1KSxTKSxkdD1pRShQLCQpO3JldHVybiBLLmNyZWF0ZShodCxkdCl9LGNyZWF0ZURhdGFGaWxlOih1LFMsVyxQLCQsaHQpPT57dmFyIGR0PVM7dSYmKHU9dHlwZW9mIHU9PSJzdHJpbmciP3U6Sy5nZXRQYXRoKHUpLGR0PVM/R3Quam9pbjIodSxTKTp1KTt2YXIgZnQ9aUUoUCwkKSxCdD1LLmNyZWF0ZShkdCxmdCk7aWYoVyl7aWYodHlwZW9mIFc9PSJzdHJpbmciKXtmb3IodmFyIEx0PW5ldyBBcnJheShXLmxlbmd0aCkscmU9MCx1ZT1XLmxlbmd0aDtyZTx1ZTsrK3JlKUx0W3JlXT1XLmNoYXJDb2RlQXQocmUpO1c9THR9Sy5jaG1vZChCdCxmdHwxNDYpO3ZhciBmZT1LLm9wZW4oQnQsNTc3KTtLLndyaXRlKGZlLFcsMCxXLmxlbmd0aCwwLGh0KSxLLmNsb3NlKGZlKSxLLmNobW9kKEJ0LGZ0KX1yZXR1cm4gQnR9LGNyZWF0ZURldmljZToodSxTLFcsUCk9Pnt2YXIgJD1HdC5qb2luMih0eXBlb2YgdT09InN0cmluZyI/dTpLLmdldFBhdGgodSksUyksaHQ9aUUoISFXLCEhUCk7Sy5jcmVhdGVEZXZpY2UubWFqb3J8fChLLmNyZWF0ZURldmljZS5tYWpvcj02NCk7dmFyIGR0PUsubWFrZWRldihLLmNyZWF0ZURldmljZS5tYWpvcisrLDApO3JldHVybiBLLnJlZ2lzdGVyRGV2aWNlKGR0LHtvcGVuOmZ0PT57ZnQuc2Vla2FibGU9ITF9LGNsb3NlOmZ0PT57UCYmUC5idWZmZXImJlAuYnVmZmVyLmxlbmd0aCYmUCgxMCl9LHJlYWQ6KGZ0LEJ0LEx0LHJlLHVlKT0+e2Zvcih2YXIgZmU9MCxFZT0wO0VlPHJlO0VlKyspe3ZhciBTZTt0cnl7U2U9VygpfWNhdGNoe3Rocm93IG5ldyBLLkVycm5vRXJyb3IoMjkpfWlmKFNlPT09dm9pZCAwJiZmZT09PTApdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2KTtpZihTZT09bnVsbClicmVhaztmZSsrLEJ0W0x0K0VlXT1TZX1yZXR1cm4gZmUmJihmdC5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxmZX0sd3JpdGU6KGZ0LEJ0LEx0LHJlLHVlKT0+e2Zvcih2YXIgZmU9MDtmZTxyZTtmZSsrKXRyeXtQKEJ0W0x0K2ZlXSl9Y2F0Y2h7dGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOSl9cmV0dXJuIHJlJiYoZnQubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksZmV9fSksSy5ta2RldigkLGh0LGR0KX0sZm9yY2VMb2FkRmlsZTp1PT57aWYodS5pc0RldmljZXx8dS5pc0ZvbGRlcnx8dS5saW5rfHx1LmNvbnRlbnRzKXJldHVybiEwO2lmKHR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIpdGhyb3cgbmV3IEVycm9yKCJMYXp5IGxvYWRpbmcgc2hvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgKGNvbnRlbnRzIHNldCkgaW4gY3JlYXRlTGF6eUZpbGUsIGJ1dCBpdCB3YXMgbm90LiBMYXp5IGxvYWRpbmcgb25seSB3b3JrcyBpbiB3ZWIgd29ya2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIG9uIHRoZSBtYWluIHRocmVhZC4iKTtpZihJKXRyeXt1LmNvbnRlbnRzPUJlKEkodS51cmwpLCEwKSx1LnVzZWRCeXRlcz11LmNvbnRlbnRzLmxlbmd0aH1jYXRjaHt0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI5KX1lbHNlIHRocm93IG5ldyBFcnJvcigiQ2Fubm90IGxvYWQgd2l0aG91dCByZWFkKCkgb3IgWE1MSHR0cFJlcXVlc3QuIil9LGNyZWF0ZUxhenlGaWxlOih1LFMsVyxQLCQpPT57ZnVuY3Rpb24gaHQoKXt0aGlzLmxlbmd0aEtub3duPSExLHRoaXMuY2h1bmtzPVtdfWlmKGh0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oRWUpe2lmKCEoRWU+dGhpcy5sZW5ndGgtMXx8RWU8MCkpe3ZhciBTZT1FZSV0aGlzLmNodW5rU2l6ZSxkaT1FZS90aGlzLmNodW5rU2l6ZXwwO3JldHVybiB0aGlzLmdldHRlcihkaSlbU2VdfX0saHQucHJvdG90eXBlLnNldERhdGFHZXR0ZXI9ZnVuY3Rpb24oRWUpe3RoaXMuZ2V0dGVyPUVlfSxodC5wcm90b3R5cGUuY2FjaGVMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgRWU9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKEVlLm9wZW4oIkhFQUQiLFcsITEpLEVlLnNlbmQobnVsbCksIShFZS5zdGF0dXM+PTIwMCYmRWUuc3RhdHVzPDMwMHx8RWUuc3RhdHVzPT09MzA0KSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIitXKyIuIFN0YXR1czogIitFZS5zdGF0dXMpO3ZhciBTZT1OdW1iZXIoRWUuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikpLGRpLGxuPShkaT1FZS5nZXRSZXNwb25zZUhlYWRlcigiQWNjZXB0LVJhbmdlcyIpKSYmZGk9PT0iYnl0ZXMiLFJuPShkaT1FZS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1FbmNvZGluZyIpKSYmZGk9PT0iZ3ppcCIscXQ9MTAyNCoxMDI0O2xufHwocXQ9U2UpO3ZhciBGZT0oWm4sS28pPT57aWYoWm4+S28pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlICgiK1puKyIsICIrS28rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKEtvPlNlLTEpdGhyb3cgbmV3IEVycm9yKCJvbmx5ICIrU2UrIiBieXRlcyBhdmFpbGFibGUhIHByb2dyYW1tZXIgZXJyb3IhIik7dmFyIG1zPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihtcy5vcGVuKCJHRVQiLFcsITEpLFNlIT09cXQmJm1zLnNldFJlcXVlc3RIZWFkZXIoIlJhbmdlIiwiYnl0ZXM9IitabisiLSIrS28pLG1zLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLG1zLm92ZXJyaWRlTWltZVR5cGUmJm1zLm92ZXJyaWRlTWltZVR5cGUoInRleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQiKSxtcy5zZW5kKG51bGwpLCEobXMuc3RhdHVzPj0yMDAmJm1zLnN0YXR1czwzMDB8fG1zLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrVysiLiBTdGF0dXM6ICIrbXMuc3RhdHVzKTtyZXR1cm4gbXMucmVzcG9uc2UhPT12b2lkIDA/bmV3IFVpbnQ4QXJyYXkobXMucmVzcG9uc2V8fFtdKTpCZShtcy5yZXNwb25zZVRleHR8fCIiLCEwKX0sVHM9dGhpcztUcy5zZXREYXRhR2V0dGVyKFpuPT57dmFyIEtvPVpuKnF0LG1zPShabisxKSpxdC0xO2lmKG1zPU1hdGgubWluKG1zLFNlLTEpLHR5cGVvZiBUcy5jaHVua3NbWm5dPiJ1IiYmKFRzLmNodW5rc1tabl09RmUoS28sbXMpKSx0eXBlb2YgVHMuY2h1bmtzW1puXT4idSIpdGhyb3cgbmV3IEVycm9yKCJkb1hIUiBmYWlsZWQhIik7cmV0dXJuIFRzLmNodW5rc1tabl19KSwoUm58fCFTZSkmJihxdD1TZT0xLFNlPXRoaXMuZ2V0dGVyKDApLmxlbmd0aCxxdD1TZSxGKCJMYXp5RmlsZXMgb24gZ3ppcCBmb3JjZXMgZG93bmxvYWQgb2YgdGhlIHdob2xlIGZpbGUgd2hlbiBsZW5ndGggaXMgYWNjZXNzZWQiKSksdGhpcy5fbGVuZ3RoPVNlLHRoaXMuX2NodW5rU2l6ZT1xdCx0aGlzLmxlbmd0aEtub3duPSEwfSx0eXBlb2YgWE1MSHR0cFJlcXVlc3Q8InUiKXtpZighZCl0aHJvdyJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjIjt2YXIgZHQ9bmV3IGh0O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGR0LHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aEtub3dufHx0aGlzLmNhY2hlTGVuZ3RoKCksdGhpcy5fbGVuZ3RofX0sY2h1bmtTaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGhLbm93bnx8dGhpcy5jYWNoZUxlbmd0aCgpLHRoaXMuX2NodW5rU2l6ZX19fSk7dmFyIGZ0PXtpc0RldmljZTohMSxjb250ZW50czpkdH19ZWxzZSB2YXIgZnQ9e2lzRGV2aWNlOiExLHVybDpXfTt2YXIgQnQ9Sy5jcmVhdGVGaWxlKHUsUyxmdCxQLCQpO2Z0LmNvbnRlbnRzP0J0LmNvbnRlbnRzPWZ0LmNvbnRlbnRzOmZ0LnVybCYmKEJ0LmNvbnRlbnRzPW51bGwsQnQudXJsPWZ0LnVybCksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQnQse3VzZWRCeXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudHMubGVuZ3RofX19KTt2YXIgTHQ9e30scmU9T2JqZWN0LmtleXMoQnQuc3RyZWFtX29wcyk7cmUuZm9yRWFjaChmZT0+e3ZhciBFZT1CdC5zdHJlYW1fb3BzW2ZlXTtMdFtmZV09ZnVuY3Rpb24oKXtyZXR1cm4gSy5mb3JjZUxvYWRGaWxlKEJ0KSxFZS5hcHBseShudWxsLGFyZ3VtZW50cyl9fSk7ZnVuY3Rpb24gdWUoZmUsRWUsU2UsZGksbG4pe3ZhciBSbj1mZS5ub2RlLmNvbnRlbnRzO2lmKGxuPj1Sbi5sZW5ndGgpcmV0dXJuIDA7dmFyIHF0PU1hdGgubWluKFJuLmxlbmd0aC1sbixkaSk7aWYoYyhxdD49MCksUm4uc2xpY2UpZm9yKHZhciBGZT0wO0ZlPHF0O0ZlKyspRWVbU2UrRmVdPVJuW2xuK0ZlXTtlbHNlIGZvcih2YXIgRmU9MDtGZTxxdDtGZSsrKUVlW1NlK0ZlXT1Sbi5nZXQobG4rRmUpO3JldHVybiBxdH1yZXR1cm4gTHQucmVhZD0oZmUsRWUsU2UsZGksbG4pPT4oSy5mb3JjZUxvYWRGaWxlKEJ0KSx1ZShmZSxFZSxTZSxkaSxsbikpLEx0Lm1tYXA9KGZlLEVlLFNlLGRpLGxuKT0+e0suZm9yY2VMb2FkRmlsZShCdCk7dmFyIFJuPWNuKEVlKTtpZighUm4pdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0OCk7cmV0dXJuIHVlKGZlLGcsUm4sRWUsU2UpLHtwdHI6Um4sYWxsb2NhdGVkOiEwfX0sQnQuc3RyZWFtX29wcz1MdCxCdH0sYWJzb2x1dGVQYXRoOigpPT57R2UoIkZTLmFic29sdXRlUGF0aCBoYXMgYmVlbiByZW1vdmVkOyB1c2UgUEFUSF9GUy5yZXNvbHZlIGluc3RlYWQiKX0sY3JlYXRlRm9sZGVyOigpPT57R2UoIkZTLmNyZWF0ZUZvbGRlciBoYXMgYmVlbiByZW1vdmVkOyB1c2UgRlMubWtkaXIgaW5zdGVhZCIpfSxjcmVhdGVMaW5rOigpPT57R2UoIkZTLmNyZWF0ZUxpbmsgaGFzIGJlZW4gcmVtb3ZlZDsgdXNlIEZTLnN5bWxpbmsgaW5zdGVhZCIpfSxqb2luUGF0aDooKT0+e0dlKCJGUy5qb2luUGF0aCBoYXMgYmVlbiByZW1vdmVkOyB1c2UgUEFUSC5qb2luIGluc3RlYWQiKX0sbW1hcEFsbG9jOigpPT57R2UoIkZTLm1tYXBBbGxvYyBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUgdG9wIGxldmVsIGZ1bmN0aW9uIG1tYXBBbGxvYyIpfSxzdGFuZGFyZGl6ZVBhdGg6KCk9PntHZSgiRlMuc3RhbmRhcmRpemVQYXRoIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZSBQQVRILm5vcm1hbGl6ZSBpbnN0ZWFkIil9fSxlYz17REVGQVVMVF9QT0xMTUFTSzo1LGNhbGN1bGF0ZUF0OmZ1bmN0aW9uKHUsUyxXKXtpZihHdC5pc0FicyhTKSlyZXR1cm4gUzt2YXIgUDtpZih1PT09LTEwMClQPUsuY3dkKCk7ZWxzZXt2YXIgJD1lYy5nZXRTdHJlYW1Gcm9tRkQodSk7UD0kLnBhdGh9aWYoUy5sZW5ndGg9PTApe2lmKCFXKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO3JldHVybiBQfXJldHVybiBHdC5qb2luMihQLFMpfSxkb1N0YXQ6ZnVuY3Rpb24odSxTLFcpe3RyeXt2YXIgUD11KFMpfWNhdGNoKGZ0KXtpZihmdCYmZnQubm9kZSYmR3Qubm9ybWFsaXplKFMpIT09R3Qubm9ybWFsaXplKEsuZ2V0UGF0aChmdC5ub2RlKSkpcmV0dXJuLTU0O3Rocm93IGZ0fXhbVz4+Ml09UC5kZXYseFtXKzQ+PjJdPVAubW9kZSxIW1crOD4+Ml09UC5ubGluayx4W1crMTI+PjJdPVAudWlkLHhbVysxNj4+Ml09UC5naWQseFtXKzIwPj4yXT1QLnJkZXYsZWk9W1Auc2l6ZT4+PjAsKE5lPVAuc2l6ZSwrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seFtXKzI0Pj4yXT1laVswXSx4W1crMjg+PjJdPWVpWzFdLHhbVyszMj4+Ml09NDA5Nix4W1crMzY+PjJdPVAuYmxvY2tzO3ZhciAkPVAuYXRpbWUuZ2V0VGltZSgpLGh0PVAubXRpbWUuZ2V0VGltZSgpLGR0PVAuY3RpbWUuZ2V0VGltZSgpO3JldHVybiBlaT1bTWF0aC5mbG9vcigkLzFlMyk+Pj4wLChOZT1NYXRoLmZsb29yKCQvMWUzKSwrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seFtXKzQwPj4yXT1laVswXSx4W1crNDQ+PjJdPWVpWzFdLEhbVys0OD4+Ml09JCUxZTMqMWUzLGVpPVtNYXRoLmZsb29yKGh0LzFlMyk+Pj4wLChOZT1NYXRoLmZsb29yKGh0LzFlMyksK01hdGguYWJzKE5lKT49MT9OZT4wPytNYXRoLmZsb29yKE5lLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKE5lLSsofn5OZT4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLHhbVys1Nj4+Ml09ZWlbMF0seFtXKzYwPj4yXT1laVsxXSxIW1crNjQ+PjJdPWh0JTFlMyoxZTMsZWk9W01hdGguZmxvb3IoZHQvMWUzKT4+PjAsKE5lPU1hdGguZmxvb3IoZHQvMWUzKSwrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seFtXKzcyPj4yXT1laVswXSx4W1crNzY+PjJdPWVpWzFdLEhbVys4MD4+Ml09ZHQlMWUzKjFlMyxlaT1bUC5pbm8+Pj4wLChOZT1QLmlubywrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seFtXKzg4Pj4yXT1laVswXSx4W1crOTI+PjJdPWVpWzFdLDB9LGRvTXN5bmM6ZnVuY3Rpb24odSxTLFcsUCwkKXtpZighSy5pc0ZpbGUoUy5ub2RlLm1vZGUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDMpO2lmKFAmMilyZXR1cm4gMDt2YXIgaHQ9Vi5zbGljZSh1LHUrVyk7Sy5tc3luYyhTLGh0LCQsVyxQKX0sdmFyYXJnczp2b2lkIDAsZ2V0KCl7YyhlYy52YXJhcmdzIT1udWxsKSxlYy52YXJhcmdzKz00O3ZhciB1PXhbZWMudmFyYXJncy00Pj4yXTtyZXR1cm4gdX0sZ2V0U3RyKHUpe3ZhciBTPUVhKHUpO3JldHVybiBTfSxnZXRTdHJlYW1Gcm9tRkQ6ZnVuY3Rpb24odSl7dmFyIFM9Sy5nZXRTdHJlYW1DaGVja2VkKHUpO3JldHVybiBTfX0sS1g9KHUsUyk9Pnt2YXIgVz0wO3JldHVybiBSdCgpLmZvckVhY2goZnVuY3Rpb24oUCwkKXt2YXIgaHQ9UytXO0hbdSskKjQ+PjJdPWh0LFN0KFAsaHQpLFcrPVAubGVuZ3RoKzF9KSwwfSxYWD0odSxTKT0+e3ZhciBXPVJ0KCk7SFt1Pj4yXT1XLmxlbmd0aDt2YXIgUD0wO3JldHVybiBXLmZvckVhY2goZnVuY3Rpb24oJCl7UCs9JC5sZW5ndGgrMX0pLEhbUz4+Ml09UCwwfTtmdW5jdGlvbiBxWCh1KXt0cnl7dmFyIFM9ZWMuZ2V0U3RyZWFtRnJvbUZEKHUpO3JldHVybiBLLmNsb3NlKFMpLDB9Y2F0Y2goVyl7aWYodHlwZW9mIEs+InUifHxXLm5hbWUhPT0iRXJybm9FcnJvciIpdGhyb3cgVztyZXR1cm4gVy5lcnJub319dmFyICRYPSh1LFMsVyxQKT0+e2Zvcih2YXIgJD0wLGh0PTA7aHQ8VztodCsrKXt2YXIgZHQ9SFtTPj4yXSxmdD1IW1MrND4+Ml07Uys9ODt2YXIgQnQ9Sy5yZWFkKHUsZyxkdCxmdCxQKTtpZihCdDwwKXJldHVybi0xO2lmKCQrPUJ0LEJ0PGZ0KWJyZWFrO3R5cGVvZiBQPCJ1IiYmKFArPUJ0KX1yZXR1cm4gJH07ZnVuY3Rpb24gdDgodSxTLFcsUCl7dHJ5e3ZhciAkPWVjLmdldFN0cmVhbUZyb21GRCh1KSxodD0kWCgkLFMsVyk7cmV0dXJuIEhbUD4+Ml09aHQsMH1jYXRjaChkdCl7aWYodHlwZW9mIEs+InUifHxkdC5uYW1lIT09IkVycm5vRXJyb3IiKXRocm93IGR0O3JldHVybiBkdC5lcnJub319ZnVuY3Rpb24gZTgodSxTLFcsUCwkKXt2YXIgaHQ9bGwoUyxXKTt0cnl7aWYoaXNOYU4oaHQpKXJldHVybiA2MTt2YXIgZHQ9ZWMuZ2V0U3RyZWFtRnJvbUZEKHUpO3JldHVybiBLLmxsc2VlayhkdCxodCxQKSxlaT1bZHQucG9zaXRpb24+Pj4wLChOZT1kdC5wb3NpdGlvbiwrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seFskPj4yXT1laVswXSx4WyQrND4+Ml09ZWlbMV0sZHQuZ2V0ZGVudHMmJmh0PT09MCYmUD09PTAmJihkdC5nZXRkZW50cz1udWxsKSwwfWNhdGNoKGZ0KXtpZih0eXBlb2YgSz4idSJ8fGZ0Lm5hbWUhPT0iRXJybm9FcnJvciIpdGhyb3cgZnQ7cmV0dXJuIGZ0LmVycm5vfX12YXIgaTg9KHUsUyxXLFApPT57Zm9yKHZhciAkPTAsaHQ9MDtodDxXO2h0Kyspe3ZhciBkdD1IW1M+PjJdLGZ0PUhbUys0Pj4yXTtTKz04O3ZhciBCdD1LLndyaXRlKHUsZyxkdCxmdCxQKTtpZihCdDwwKXJldHVybi0xOyQrPUJ0LHR5cGVvZiBQPCJ1IiYmKFArPUJ0KX1yZXR1cm4gJH07ZnVuY3Rpb24gbjgodSxTLFcsUCl7dHJ5e3ZhciAkPWVjLmdldFN0cmVhbUZyb21GRCh1KSxodD1pOCgkLFMsVyk7cmV0dXJuIEhbUD4+Ml09aHQsMH1jYXRjaChkdCl7aWYodHlwZW9mIEs+InUifHxkdC5uYW1lIT09IkVycm5vRXJyb3IiKXRocm93IGR0O3JldHVybiBkdC5lcnJub319dmFyIHM4PSh1LFMpPT57Zm9yKHZhciBXPTAsUD0wO1A8PVM7Vys9dVtQKytdKTtyZXR1cm4gV30sVUI9WzMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxRQj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLG84PSh1LFMpPT57Zm9yKHZhciBXPW5ldyBEYXRlKHUuZ2V0VGltZSgpKTtTPjA7KXt2YXIgUD1vQShXLmdldEZ1bGxZZWFyKCkpLCQ9Vy5nZXRNb250aCgpLGh0PShQP1VCOlFCKVskXTtpZihTPmh0LVcuZ2V0RGF0ZSgpKVMtPWh0LVcuZ2V0RGF0ZSgpKzEsVy5zZXREYXRlKDEpLCQ8MTE/Vy5zZXRNb250aCgkKzEpOihXLnNldE1vbnRoKDApLFcuc2V0RnVsbFllYXIoVy5nZXRGdWxsWWVhcigpKzEpKTtlbHNlIHJldHVybiBXLnNldERhdGUoVy5nZXREYXRlKCkrUyksV31yZXR1cm4gV30sa0I9KHUsUyk9PntjKHUubGVuZ3RoPj0wLCJ3cml0ZUFycmF5VG9NZW1vcnkgYXJyYXkgbXVzdCBoYXZlIGEgbGVuZ3RoIChzaG91bGQgYmUgYW4gYXJyYXkgb3IgdHlwZWQgYXJyYXkpIiksZy5zZXQodSxTKX0scjg9KHUsUyxXLFApPT57dmFyICQ9eFtQKzQwPj4yXSxodD17dG1fc2VjOnhbUD4+Ml0sdG1fbWluOnhbUCs0Pj4yXSx0bV9ob3VyOnhbUCs4Pj4yXSx0bV9tZGF5OnhbUCsxMj4+Ml0sdG1fbW9uOnhbUCsxNj4+Ml0sdG1feWVhcjp4W1ArMjA+PjJdLHRtX3dkYXk6eFtQKzI0Pj4yXSx0bV95ZGF5OnhbUCsyOD4+Ml0sdG1faXNkc3Q6eFtQKzMyPj4yXSx0bV9nbXRvZmY6eFtQKzM2Pj4yXSx0bV96b25lOiQ/RWEoJCk6IiJ9LGR0PUVhKFcpLGZ0PXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZLSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIsIiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIlZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIEJ0IGluIGZ0KWR0PWR0LnJlcGxhY2UobmV3IFJlZ0V4cChCdCwiZyIpLGZ0W0J0XSk7dmFyIEx0PVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxyZT1bIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl07ZnVuY3Rpb24gdWUocXQsRmUsVHMpe2Zvcih2YXIgWm49dHlwZW9mIHF0PT0ibnVtYmVyIj9xdC50b1N0cmluZygpOnF0fHwiIjtabi5sZW5ndGg8RmU7KVpuPVRzWzBdK1puO3JldHVybiBabn1mdW5jdGlvbiBmZShxdCxGZSl7cmV0dXJuIHVlKHF0LEZlLCIwIil9ZnVuY3Rpb24gRWUocXQsRmUpe2Z1bmN0aW9uIFRzKEtvKXtyZXR1cm4gS288MD8tMTpLbz4wPzE6MH12YXIgWm47cmV0dXJuKFpuPVRzKHF0LmdldEZ1bGxZZWFyKCktRmUuZ2V0RnVsbFllYXIoKSkpPT09MCYmKFpuPVRzKHF0LmdldE1vbnRoKCktRmUuZ2V0TW9udGgoKSkpPT09MCYmKFpuPVRzKHF0LmdldERhdGUoKS1GZS5nZXREYXRlKCkpKSxabn1mdW5jdGlvbiBTZShxdCl7c3dpdGNoKHF0LmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKHF0LmdldEZ1bGxZZWFyKCktMSwxMSwyOSk7Y2FzZSAxOnJldHVybiBxdDtjYXNlIDI6cmV0dXJuIG5ldyBEYXRlKHF0LmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKHF0LmdldEZ1bGxZZWFyKCksMCwyKTtjYXNlIDQ6cmV0dXJuIG5ldyBEYXRlKHF0LmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKHF0LmdldEZ1bGxZZWFyKCktMSwxMSwzMSk7Y2FzZSA2OnJldHVybiBuZXcgRGF0ZShxdC5nZXRGdWxsWWVhcigpLTEsMTEsMzApfX1mdW5jdGlvbiBkaShxdCl7dmFyIEZlPW84KG5ldyBEYXRlKHF0LnRtX3llYXIrMTkwMCwwLDEpLHF0LnRtX3lkYXkpLFRzPW5ldyBEYXRlKEZlLmdldEZ1bGxZZWFyKCksMCw0KSxabj1uZXcgRGF0ZShGZS5nZXRGdWxsWWVhcigpKzEsMCw0KSxLbz1TZShUcyksbXM9U2UoWm4pO3JldHVybiBFZShLbyxGZSk8PTA/RWUobXMsRmUpPD0wP0ZlLmdldEZ1bGxZZWFyKCkrMTpGZS5nZXRGdWxsWWVhcigpOkZlLmdldEZ1bGxZZWFyKCktMX12YXIgbG49eyIlYSI6cXQ9Pkx0W3F0LnRtX3dkYXldLnN1YnN0cmluZygwLDMpLCIlQSI6cXQ9Pkx0W3F0LnRtX3dkYXldLCIlYiI6cXQ9PnJlW3F0LnRtX21vbl0uc3Vic3RyaW5nKDAsMyksIiVCIjpxdD0+cmVbcXQudG1fbW9uXSwiJUMiOnF0PT57dmFyIEZlPXF0LnRtX3llYXIrMTkwMDtyZXR1cm4gZmUoRmUvMTAwfDAsMil9LCIlZCI6cXQ9PmZlKHF0LnRtX21kYXksMiksIiVlIjpxdD0+dWUocXQudG1fbWRheSwyLCIgIiksIiVnIjpxdD0+ZGkocXQpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLCIlRyI6cXQ9PmRpKHF0KSwiJUgiOnF0PT5mZShxdC50bV9ob3VyLDIpLCIlSSI6cXQ9Pnt2YXIgRmU9cXQudG1faG91cjtyZXR1cm4gRmU9PTA/RmU9MTI6RmU+MTImJihGZS09MTIpLGZlKEZlLDIpfSwiJWoiOnF0PT5mZShxdC50bV9tZGF5K3M4KG9BKHF0LnRtX3llYXIrMTkwMCk/VUI6UUIscXQudG1fbW9uLTEpLDMpLCIlbSI6cXQ9PmZlKHF0LnRtX21vbisxLDIpLCIlTSI6cXQ9PmZlKHF0LnRtX21pbiwyKSwiJW4iOigpPT5gCmAsIiVwIjpxdD0+cXQudG1faG91cj49MCYmcXQudG1faG91cjwxMj8iQU0iOiJQTSIsIiVTIjpxdD0+ZmUocXQudG1fc2VjLDIpLCIldCI6KCk9PiIJIiwiJXUiOnF0PT5xdC50bV93ZGF5fHw3LCIlVSI6cXQ9Pnt2YXIgRmU9cXQudG1feWRheSs3LXF0LnRtX3dkYXk7cmV0dXJuIGZlKE1hdGguZmxvb3IoRmUvNyksMil9LCIlViI6cXQ9Pnt2YXIgRmU9TWF0aC5mbG9vcigocXQudG1feWRheSs3LShxdC50bV93ZGF5KzYpJTcpLzcpO2lmKChxdC50bV93ZGF5KzM3MS1xdC50bV95ZGF5LTIpJTc8PTImJkZlKyssRmUpe2lmKEZlPT01Myl7dmFyIFpuPShxdC50bV93ZGF5KzM3MS1xdC50bV95ZGF5KSU3O1puIT00JiYoWm4hPTN8fCFvQShxdC50bV95ZWFyKSkmJihGZT0xKX19ZWxzZXtGZT01Mjt2YXIgVHM9KHF0LnRtX3dkYXkrNy1xdC50bV95ZGF5LTEpJTc7KFRzPT00fHxUcz09NSYmb0EocXQudG1feWVhciU0MDAtMSkpJiZGZSsrfXJldHVybiBmZShGZSwyKX0sIiV3IjpxdD0+cXQudG1fd2RheSwiJVciOnF0PT57dmFyIEZlPXF0LnRtX3lkYXkrNy0ocXQudG1fd2RheSs2KSU3O3JldHVybiBmZShNYXRoLmZsb29yKEZlLzcpLDIpfSwiJXkiOnF0PT4ocXQudG1feWVhcisxOTAwKS50b1N0cmluZygpLnN1YnN0cmluZygyKSwiJVkiOnF0PT5xdC50bV95ZWFyKzE5MDAsIiV6IjpxdD0+e3ZhciBGZT1xdC50bV9nbXRvZmYsVHM9RmU+PTA7cmV0dXJuIEZlPU1hdGguYWJzKEZlKS82MCxGZT1GZS82MCoxMDArRmUlNjAsKFRzPyIrIjoiLSIpKygiMDAwMCIrRmUpLnNsaWNlKC00KX0sIiVaIjpxdD0+cXQudG1fem9uZSwiJSUiOigpPT4iJSJ9O2R0PWR0LnJlcGxhY2UoLyUlL2csIlwwXDAiKTtmb3IodmFyIEJ0IGluIGxuKWR0LmluY2x1ZGVzKEJ0KSYmKGR0PWR0LnJlcGxhY2UobmV3IFJlZ0V4cChCdCwiZyIpLGxuW0J0XShodCkpKTtkdD1kdC5yZXBsYWNlKC9cMFwwL2csIiUiKTt2YXIgUm49QmUoZHQsITEpO3JldHVybiBSbi5sZW5ndGg+Uz8wOihrQihSbix1KSxSbi5sZW5ndGgtMSl9LGE4PSh1LFMsVyxQLCQpPT5yOCh1LFMsVyxQKTtmdW5jdGlvbiBBOCh1KXt2YXIgUz1pWyJfIit1XTtyZXR1cm4gYyhTLCJDYW5ub3QgY2FsbCB1bmtub3duIGZ1bmN0aW9uICIrdSsiLCBtYWtlIHN1cmUgaXQgaXMgZXhwb3J0ZWQiKSxTfXZhciBoOD11PT57dmFyIFM9bWEodSkrMSxXPVBCKFMpO3JldHVybiBQQSh1LFcsUyksV30sTEI9ZnVuY3Rpb24odSxTLFcsUCwkKXt2YXIgaHQ9e3N0cmluZzpTZT0+e3ZhciBkaT0wO3JldHVybiBTZSE9bnVsbCYmU2UhPT0wJiYoZGk9aDgoU2UpKSxkaX0sYXJyYXk6U2U9Pnt2YXIgZGk9UEIoU2UubGVuZ3RoKTtyZXR1cm4ga0IoU2UsZGkpLGRpfX07ZnVuY3Rpb24gZHQoU2Upe3JldHVybiBTPT09InN0cmluZyI/RWEoU2UpOlM9PT0iYm9vbGVhbiI/ISFTZTpTZX12YXIgZnQ9QTgodSksQnQ9W10sTHQ9MDtpZihjKFMhPT0iYXJyYXkiLCdSZXR1cm4gdHlwZSBzaG91bGQgbm90IGJlICJhcnJheSIuJyksUClmb3IodmFyIHJlPTA7cmU8UC5sZW5ndGg7cmUrKyl7dmFyIHVlPWh0W1dbcmVdXTt1ZT8oTHQ9PT0wJiYoTHQ9UjgoKSksQnRbcmVdPXVlKFBbcmVdKSk6QnRbcmVdPVBbcmVdfXZhciBmZT1mdC5hcHBseShudWxsLEJ0KTtmdW5jdGlvbiBFZShTZSl7cmV0dXJuIEx0IT09MCYmWjgoTHQpLGR0KFNlKX1yZXR1cm4gZmU9RWUoZmUpLGZlfTtmdW5jdGlvbiBjOCh1LFMsVyxQKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTEIodSxTLFcsYXJndW1lbnRzLFApfX1qbygpLE9vPWkuQmluZGluZ0Vycm9yPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoUyl7c3VwZXIoUyksdGhpcy5uYW1lPSJCaW5kaW5nRXJyb3IifX0sYWE9aS5JbnRlcm5hbEVycm9yPWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoUyl7c3VwZXIoUyksdGhpcy5uYW1lPSJJbnRlcm5hbEVycm9yIn19LHloKCksU2QoKSx5QSgpLGpoPWkuVW5ib3VuZFR5cGVFcnJvcj1zbChFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpLHdkKCksUGQoKTt2YXIgeUI9ZnVuY3Rpb24odSxTLFcsUCl7dXx8KHU9dGhpcyksdGhpcy5wYXJlbnQ9dSx0aGlzLm1vdW50PXUubW91bnQsdGhpcy5tb3VudGVkPW51bGwsdGhpcy5pZD1LLm5leHRJbm9kZSsrLHRoaXMubmFtZT1TLHRoaXMubW9kZT1XLHRoaXMubm9kZV9vcHM9e30sdGhpcy5zdHJlYW1fb3BzPXt9LHRoaXMucmRldj1QfSx2Uj0zNjUselI9MTQ2O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHlCLnByb3RvdHlwZSx7cmVhZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMubW9kZSZ2Uik9PT12Un0sc2V0OmZ1bmN0aW9uKHUpe3U/dGhpcy5tb2RlfD12Ujp0aGlzLm1vZGUmPX52Un19LHdyaXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnpSKT09PXpSfSxzZXQ6ZnVuY3Rpb24odSl7dT90aGlzLm1vZGV8PXpSOnRoaXMubW9kZSY9fnpSfX0saXNGb2xkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBLLmlzRGlyKHRoaXMubW9kZSl9fSxpc0RldmljZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEsuaXNDaHJkZXYodGhpcy5tb2RlKX19fSksSy5GU05vZGU9eUIsSy5jcmVhdGVQcmVsb2FkZWRGaWxlPW1sLEsuc3RhdGljSW5pdCgpLEVtPXtFUEVSTTo2MyxFTk9FTlQ6NDQsRVNSQ0g6NzEsRUlOVFI6MjcsRUlPOjI5LEVOWElPOjYwLEUyQklHOjEsRU5PRVhFQzo0NSxFQkFERjo4LEVDSElMRDoxMixFQUdBSU46NixFV09VTERCTE9DSzo2LEVOT01FTTo0OCxFQUNDRVM6MixFRkFVTFQ6MjEsRU5PVEJMSzoxMDUsRUJVU1k6MTAsRUVYSVNUOjIwLEVYREVWOjc1LEVOT0RFVjo0MyxFTk9URElSOjU0LEVJU0RJUjozMSxFSU5WQUw6MjgsRU5GSUxFOjQxLEVNRklMRTozMyxFTk9UVFk6NTksRVRYVEJTWTo3NCxFRkJJRzoyMixFTk9TUEM6NTEsRVNQSVBFOjcwLEVST0ZTOjY5LEVNTElOSzozNCxFUElQRTo2NCxFRE9NOjE4LEVSQU5HRTo2OCxFTk9NU0c6NDksRUlEUk06MjQsRUNIUk5HOjEwNixFTDJOU1lOQzoxNTYsRUwzSExUOjEwNyxFTDNSU1Q6MTA4LEVMTlJORzoxMDksRVVOQVRDSDoxMTAsRU5PQ1NJOjExMSxFTDJITFQ6MTEyLEVERUFETEs6MTYsRU5PTENLOjQ2LEVCQURFOjExMyxFQkFEUjoxMTQsRVhGVUxMOjExNSxFTk9BTk86MTA0LEVCQURSUUM6MTAzLEVCQURTTFQ6MTAyLEVERUFETE9DSzoxNixFQkZPTlQ6MTAxLEVOT1NUUjoxMDAsRU5PREFUQToxMTYsRVRJTUU6MTE3LEVOT1NSOjExOCxFTk9ORVQ6MTE5LEVOT1BLRzoxMjAsRVJFTU9URToxMjEsRU5PTElOSzo0NyxFQURWOjEyMixFU1JNTlQ6MTIzLEVDT01NOjEyNCxFUFJPVE86NjUsRU1VTFRJSE9QOjM2LEVET1RET1Q6MTI1LEVCQURNU0c6OSxFTk9UVU5JUToxMjYsRUJBREZEOjEyNyxFUkVNQ0hHOjEyOCxFTElCQUNDOjEyOSxFTElCQkFEOjEzMCxFTElCU0NOOjEzMSxFTElCTUFYOjEzMixFTElCRVhFQzoxMzMsRU5PU1lTOjUyLEVOT1RFTVBUWTo1NSxFTkFNRVRPT0xPTkc6MzcsRUxPT1A6MzIsRU9QTk9UU1VQUDoxMzgsRVBGTk9TVVBQT1JUOjEzOSxFQ09OTlJFU0VUOjE1LEVOT0JVRlM6NDIsRUFGTk9TVVBQT1JUOjUsRVBST1RPVFlQRTo2NyxFTk9UU09DSzo1NyxFTk9QUk9UT09QVDo1MCxFU0hVVERPV046MTQwLEVDT05OUkVGVVNFRDoxNCxFQUREUklOVVNFOjMsRUNPTk5BQk9SVEVEOjEzLEVORVRVTlJFQUNIOjQwLEVORVRET1dOOjM4LEVUSU1FRE9VVDo3MyxFSE9TVERPV046MTQyLEVIT1NUVU5SRUFDSDoyMyxFSU5QUk9HUkVTUzoyNixFQUxSRUFEWTo3LEVERVNUQUREUlJFUToxNyxFTVNHU0laRTozNSxFUFJPVE9OT1NVUFBPUlQ6NjYsRVNPQ0tUTk9TVVBQT1JUOjEzNyxFQUREUk5PVEFWQUlMOjQsRU5FVFJFU0VUOjM5LEVJU0NPTk46MzAsRU5PVENPTk46NTMsRVRPT01BTllSRUZTOjE0MSxFVVNFUlM6MTM2LEVEUVVPVDoxOSxFU1RBTEU6NzIsRU5PVFNVUDoxMzgsRU5PTUVESVVNOjE0OCxFSUxTRVE6MjUsRU9WRVJGTE9XOjYxLEVDQU5DRUxFRDoxMSxFTk9UUkVDT1ZFUkFCTEU6NTYsRU9XTkVSREVBRDo2MixFU1RSUElQRToxMzV9O2Z1bmN0aW9uIGw4KCl7aHMoImZldGNoU2V0dGluZ3MiKX12YXIgd0I9e19fY3hhX3Rocm93OmFvLF9lbWJpbmRfcmVnaXN0ZXJfYmlnaW50OnFpLF9lbWJpbmRfcmVnaXN0ZXJfYm9vbDpocixfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzOkhoLF9lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3I6eWQsX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbjpLaCxfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5OlhoLF9lbWJpbmRfcmVnaXN0ZXJfZW12YWw6eEEsX2VtYmluZF9yZWdpc3Rlcl9mbG9hdDpKZCxfZW1iaW5kX3JlZ2lzdGVyX2Z1bmN0aW9uOmpkLF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcjp2ZCxfZW1iaW5kX3JlZ2lzdGVyX21lbW9yeV92aWV3OnpkLF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZzpzQSxfZW1iaW5kX3JlZ2lzdGVyX3N0ZF93c3RyaW5nOiRkLF9lbWJpbmRfcmVnaXN0ZXJfdm9pZDp0bSxfZW1zY3JpcHRlbl9nZXRfbm93X2lzX21vbm90b25pYzppbSxfZW12YWxfYXM6c20sX2VtdmFsX2RlY3JlZjpobyxfZW12YWxfZ2V0X3Byb3BlcnR5Om9tLF9lbXZhbF9uZXdfY3N0cmluZzphbSxfZW12YWxfcnVuX2Rlc3RydWN0b3JzOkFtLF9nbXRpbWVfanM6aG0sX21rdGltZV9qczpkbSxfdHpzZXRfanM6bW0sYWJvcnQ6Zm0sZW1zY3JpcHRlbl9hc21fY29uc3RfaW50OmV0LGVtc2NyaXB0ZW5fZGF0ZV9ub3c6cHQsZW1zY3JpcHRlbl9nZXRfbm93OiR0LGVtc2NyaXB0ZW5fbWVtY3B5X2JpZzp2ZSxlbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwOnRjLGVtc2NyaXB0ZW5fcnVuX3NjcmlwdF9zdHJpbmc6SixlbnZpcm9uX2dldDpLWCxlbnZpcm9uX3NpemVzX2dldDpYWCxmZF9jbG9zZTpxWCxmZF9yZWFkOnQ4LGZkX3NlZWs6ZTgsZmRfd3JpdGU6bjgsc3RyZnRpbWVfbDphOH0sTEl0PUFuKCkseUl0PXFlKCJfX3dhc21fY2FsbF9jdG9ycyIpLEtSPWkuX21hbGxvYz1xZSgibWFsbG9jIiksSEE9aS5fZnJlZT1xZSgiZnJlZSIpLHdJdD1pLl9pbmZsYXRlRWxsaXBzb2lkPXFlKCJpbmZsYXRlRWxsaXBzb2lkIikseEl0PWkuX2dldENvdmVyYWdlUG9zaXRpb25zPXFlKCJnZXRDb3ZlcmFnZVBvc2l0aW9ucyIpLGQ4PWkuX2ZmbHVzaD1xZSgiZmZsdXNoIiksbTg9cWUoIl9fZ2V0VHlwZU5hbWUiKSxQSXQ9aS5fX2VtYmluZF9pbml0aWFsaXplX2JpbmRpbmdzPXFlKCJfZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MiKSxKSXQ9cWUoIl9fZXJybm9fbG9jYXRpb24iKSxmOD1xZSgic2V0VGVtcFJldDAiKSx4Qj0oKT0+KHhCPVUuZW1zY3JpcHRlbl9zdGFja19pbml0KSgpLEU4PSgpPT4oRTg9VS5lbXNjcmlwdGVuX3N0YWNrX2dldF9mcmVlKSgpLF84PSgpPT4oXzg9VS5lbXNjcmlwdGVuX3N0YWNrX2dldF9iYXNlKSgpLCRnPSgpPT4oJGc9VS5lbXNjcmlwdGVuX3N0YWNrX2dldF9lbmQpKCksUjg9cWUoInN0YWNrU2F2ZSIpLFo4PXFlKCJzdGFja1Jlc3RvcmUiKSxQQj1xZSgic3RhY2tBbGxvYyIpLEk4PSgpPT4oSTg9VS5lbXNjcmlwdGVuX3N0YWNrX2dldF9jdXJyZW50KSgpLGpJdD1xZSgiX19jeGFfaW5jcmVtZW50X2V4Y2VwdGlvbl9yZWZjb3VudCIpLHA4PXFlKCJfX2N4YV9pc19wb2ludGVyX3R5cGUiKSxISXQ9aS5keW5DYWxsX2ppamk9cWUoImR5bkNhbGxfamlqaSIpLHZJdD1pLmR5bkNhbGxfdmlpamlpPXFlKCJkeW5DYWxsX3ZpaWppaSIpLHpJdD1pLmR5bkNhbGxfaWlpaWlqPXFlKCJkeW5DYWxsX2lpaWlpaiIpLEtJdD1pLmR5bkNhbGxfaWlpaWlqaj1xZSgiZHluQ2FsbF9paWlpaWpqIiksWEl0PWkuZHluQ2FsbF9paWlpaWlqaj1xZSgiZHluQ2FsbF9paWlpaWlqaiIpO2Z1bmN0aW9uIHU4KHUpe3RyeXtmb3IodmFyIFM9YXRvYih1KSxXPW5ldyBVaW50OEFycmF5KFMubGVuZ3RoKSxQPTA7UDxTLmxlbmd0aDsrK1ApV1tQXT1TLmNoYXJDb2RlQXQoUCk7cmV0dXJuIFd9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJDb252ZXJ0aW5nIGJhc2U2NCBzdHJpbmcgdG8gYnl0ZXMgZmFpbGVkLiIpfX1mdW5jdGlvbiBDOCh1KXtpZihSaSh1KSlyZXR1cm4gdTgodS5zbGljZShVaS5sZW5ndGgpKX1pLmNjYWxsPUxCLGkuY3dyYXA9Yzg7dmFyIGc4PVsid3JpdGVJNTNUb0k2NCIsIndyaXRlSTUzVG9JNjRDbGFtcGVkIiwid3JpdGVJNTNUb0k2NFNpZ25hbGluZyIsIndyaXRlSTUzVG9VNjRDbGFtcGVkIiwid3JpdGVJNTNUb1U2NFNpZ25hbGluZyIsInJlYWRJNTNGcm9tSTY0IiwicmVhZEk1M0Zyb21VNjQiLCJjb252ZXJ0STMyUGFpclRvSTUzIiwiY29udmVydFUzMlBhaXJUb0k1MyIsImV4aXRKUyIsInNldEVyck5vIiwiaW5ldFB0b240IiwiaW5ldE50b3A0IiwiaW5ldFB0b242IiwiaW5ldE50b3A2IiwicmVhZFNvY2thZGRyIiwid3JpdGVTb2NrYWRkciIsImdldEhvc3RCeU5hbWUiLCJnZXRDYWxsc3RhY2siLCJlbXNjcmlwdGVuTG9nIiwiY29udmVydFBDdG9Tb3VyY2VMb2NhdGlvbiIsInJ1bk1haW5UaHJlYWRFbUFzbSIsImpzdG9pX3EiLCJqc3RvaV9zIiwibGlzdGVuT25jZSIsImF1dG9SZXN1bWVBdWRpb0NvbnRleHQiLCJoYW5kbGVFeGNlcHRpb24iLCJydW50aW1lS2VlcGFsaXZlUHVzaCIsInJ1bnRpbWVLZWVwYWxpdmVQb3AiLCJjYWxsVXNlckNhbGxiYWNrIiwibWF5YmVFeGl0Iiwic2FmZVNldFRpbWVvdXQiLCJhc21qc01hbmdsZSIsImdldE5hdGl2ZVR5cGVTaXplIiwiU1RBQ0tfU0laRSIsIlNUQUNLX0FMSUdOIiwiUE9JTlRFUl9TSVpFIiwiQVNTRVJUSU9OUyIsInVsZWIxMjhFbmNvZGUiLCJzaWdUb1dhc21UeXBlcyIsImdlbmVyYXRlRnVuY1R5cGUiLCJjb252ZXJ0SnNGdW5jdGlvblRvV2FzbSIsImdldEVtcHR5VGFibGVTbG90IiwidXBkYXRlVGFibGVNYXAiLCJnZXRGdW5jdGlvbkFkZHJlc3MiLCJhZGRGdW5jdGlvbiIsInJlbW92ZUZ1bmN0aW9uIiwicmVhbGx5TmVnYXRpdmUiLCJ1blNpZ24iLCJzdHJMZW4iLCJyZVNpZ24iLCJmb3JtYXRTdHJpbmciLCJpbnRBcnJheVRvU3RyaW5nIiwiQXNjaWlUb1N0cmluZyIsInJlZ2lzdGVyS2V5RXZlbnRDYWxsYmFjayIsIm1heWJlQ1N0cmluZ1RvSnNTdHJpbmciLCJmaW5kRXZlbnRUYXJnZXQiLCJmaW5kQ2FudmFzRXZlbnRUYXJnZXQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJmaWxsTW91c2VFdmVudERhdGEiLCJyZWdpc3Rlck1vdXNlRXZlbnRDYWxsYmFjayIsInJlZ2lzdGVyV2hlZWxFdmVudENhbGxiYWNrIiwicmVnaXN0ZXJVaUV2ZW50Q2FsbGJhY2siLCJyZWdpc3RlckZvY3VzRXZlbnRDYWxsYmFjayIsImZpbGxEZXZpY2VPcmllbnRhdGlvbkV2ZW50RGF0YSIsInJlZ2lzdGVyRGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrIiwiZmlsbERldmljZU1vdGlvbkV2ZW50RGF0YSIsInJlZ2lzdGVyRGV2aWNlTW90aW9uRXZlbnRDYWxsYmFjayIsInNjcmVlbk9yaWVudGF0aW9uIiwiZmlsbE9yaWVudGF0aW9uQ2hhbmdlRXZlbnREYXRhIiwicmVnaXN0ZXJPcmllbnRhdGlvbkNoYW5nZUV2ZW50Q2FsbGJhY2siLCJmaWxsRnVsbHNjcmVlbkNoYW5nZUV2ZW50RGF0YSIsInJlZ2lzdGVyRnVsbHNjcmVlbkNoYW5nZUV2ZW50Q2FsbGJhY2siLCJKU0V2ZW50c19yZXF1ZXN0RnVsbHNjcmVlbiIsIkpTRXZlbnRzX3Jlc2l6ZUNhbnZhc0ZvckZ1bGxzY3JlZW4iLCJyZWdpc3RlclJlc3RvcmVPbGRTdHlsZSIsImhpZGVFdmVyeXRoaW5nRXhjZXB0R2l2ZW5FbGVtZW50IiwicmVzdG9yZUhpZGRlbkVsZW1lbnRzIiwic2V0TGV0dGVyYm94Iiwic29mdEZ1bGxzY3JlZW5SZXNpemVXZWJHTFJlbmRlclRhcmdldCIsImRvUmVxdWVzdEZ1bGxzY3JlZW4iLCJmaWxsUG9pbnRlcmxvY2tDaGFuZ2VFdmVudERhdGEiLCJyZWdpc3RlclBvaW50ZXJsb2NrQ2hhbmdlRXZlbnRDYWxsYmFjayIsInJlZ2lzdGVyUG9pbnRlcmxvY2tFcnJvckV2ZW50Q2FsbGJhY2siLCJyZXF1ZXN0UG9pbnRlckxvY2siLCJmaWxsVmlzaWJpbGl0eUNoYW5nZUV2ZW50RGF0YSIsInJlZ2lzdGVyVmlzaWJpbGl0eUNoYW5nZUV2ZW50Q2FsbGJhY2siLCJyZWdpc3RlclRvdWNoRXZlbnRDYWxsYmFjayIsImZpbGxHYW1lcGFkRXZlbnREYXRhIiwicmVnaXN0ZXJHYW1lcGFkRXZlbnRDYWxsYmFjayIsInJlZ2lzdGVyQmVmb3JlVW5sb2FkRXZlbnRDYWxsYmFjayIsImZpbGxCYXR0ZXJ5RXZlbnREYXRhIiwiYmF0dGVyeSIsInJlZ2lzdGVyQmF0dGVyeUV2ZW50Q2FsbGJhY2siLCJzZXRDYW52YXNFbGVtZW50U2l6ZSIsImdldENhbnZhc0VsZW1lbnRTaXplIiwianNTdGFja1RyYWNlIiwic3RhY2tUcmFjZSIsImNoZWNrV2FzaUNsb2NrIiwid2FzaVJpZ2h0c1RvTXVzbE9GbGFncyIsIndhc2lPRmxhZ3NUb011c2xPRmxhZ3MiLCJjcmVhdGVEeW5jYWxsV3JhcHBlciIsInNldEltbWVkaWF0ZVdyYXBwZWQiLCJjbGVhckltbWVkaWF0ZVdyYXBwZWQiLCJwb2x5ZmlsbFNldEltbWVkaWF0ZSIsImdldFByb21pc2UiLCJtYWtlUHJvbWlzZSIsImlkc1RvUHJvbWlzZXMiLCJtYWtlUHJvbWlzZUNhbGxiYWNrIiwiZmluZE1hdGNoaW5nQ2F0Y2giLCJzZXRNYWluTG9vcCIsImdldFNvY2tldEZyb21GRCIsImdldFNvY2tldEFkZHJlc3MiLCJfc2V0TmV0d29ya0NhbGxiYWNrIiwiaGVhcE9iamVjdEZvcldlYkdMVHlwZSIsImhlYXBBY2Nlc3NTaGlmdEZvcldlYkdMSGVhcCIsIndlYmdsX2VuYWJsZV9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiwid2ViZ2xfZW5hYmxlX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iiwid2ViZ2xfZW5hYmxlX1dFQkdMX2RyYXdfYnVmZmVycyIsIndlYmdsX2VuYWJsZV9XRUJHTF9tdWx0aV9kcmF3IiwiZW1zY3JpcHRlbldlYkdMR2V0IiwiY29tcHV0ZVVucGFja0FsaWduZWRJbWFnZVNpemUiLCJjb2xvckNoYW5uZWxzSW5HbFRleHR1cmVGb3JtYXQiLCJlbXNjcmlwdGVuV2ViR0xHZXRUZXhQaXhlbERhdGEiLCJfX2dsR2VuT2JqZWN0IiwiZW1zY3JpcHRlbldlYkdMR2V0VW5pZm9ybSIsIndlYmdsR2V0VW5pZm9ybUxvY2F0aW9uIiwid2ViZ2xQcmVwYXJlVW5pZm9ybUxvY2F0aW9uc0JlZm9yZUZpcnN0VXNlIiwid2ViZ2xHZXRMZWZ0QnJhY2VQb3MiLCJlbXNjcmlwdGVuV2ViR0xHZXRWZXJ0ZXhBdHRyaWIiLCJfX2dsR2V0QWN0aXZlQXR0cmliT3JVbmlmb3JtIiwid3JpdGVHTEFycmF5IiwicmVnaXN0ZXJXZWJHbEV2ZW50Q2FsbGJhY2siLCJydW5BbmRBYm9ydElmRXJyb3IiLCJTRExfdW5pY29kZSIsIlNETF90dGZDb250ZXh0IiwiU0RMX2F1ZGlvIiwiR0xGV19XaW5kb3ciLCJBTExPQ19OT1JNQUwiLCJBTExPQ19TVEFDSyIsImFsbG9jYXRlIiwid3JpdGVTdHJpbmdUb01lbW9yeSIsIndyaXRlQXNjaWlUb01lbW9yeSIsInJlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UiLCJ1bnJlZ2lzdGVySW5oZXJpdGVkSW5zdGFuY2UiLCJlbnVtUmVhZFZhbHVlRnJvbVBvaW50ZXIiLCJjcmFmdEVtdmFsQWxsb2NhdG9yIiwiZW12YWxfZ2V0X2dsb2JhbCIsImVtdmFsX2xvb2t1cFR5cGVzIiwiZW12YWxfYWxsb2NhdGVEZXN0cnVjdG9ycyIsImVtdmFsX2FkZE1ldGhvZENhbGxlciJdO2c4LmZvckVhY2goa2kpO3ZhciBUOD1bInJ1biIsImFkZE9uUHJlUnVuIiwiYWRkT25Jbml0IiwiYWRkT25QcmVNYWluIiwiYWRkT25FeGl0IiwiYWRkT25Qb3N0UnVuIiwiYWRkUnVuRGVwZW5kZW5jeSIsInJlbW92ZVJ1bkRlcGVuZGVuY3kiLCJGU19jcmVhdGVGb2xkZXIiLCJGU19jcmVhdGVQYXRoIiwiRlNfY3JlYXRlRGF0YUZpbGUiLCJGU19jcmVhdGVMYXp5RmlsZSIsIkZTX2NyZWF0ZUxpbmsiLCJGU19jcmVhdGVEZXZpY2UiLCJGU191bmxpbmsiLCJvdXQiLCJlcnIiLCJjYWxsTWFpbiIsImFib3J0Iiwia2VlcFJ1bnRpbWVBbGl2ZSIsIndhc21NZW1vcnkiLCJ3YXNtVGFibGUiLCJ3YXNtRXhwb3J0cyIsInN0YWNrQWxsb2MiLCJzdGFja1NhdmUiLCJzdGFja1Jlc3RvcmUiLCJnZXRUZW1wUmV0MCIsInNldFRlbXBSZXQwIiwid3JpdGVTdGFja0Nvb2tpZSIsImNoZWNrU3RhY2tDb29raWUiLCJpbnRBcnJheUZyb21CYXNlNjQiLCJ0cnlQYXJzZUFzRGF0YVVSSSIsImNvbnZlcnRJMzJQYWlyVG9JNTNDaGVja2VkIiwicHRyVG9TdHJpbmciLCJ6ZXJvTWVtb3J5IiwiZ2V0SGVhcE1heCIsImdyb3dNZW1vcnkiLCJFTlYiLCJNT05USF9EQVlTX1JFR1VMQVIiLCJNT05USF9EQVlTX0xFQVAiLCJNT05USF9EQVlTX1JFR1VMQVJfQ1VNVUxBVElWRSIsIk1PTlRIX0RBWVNfTEVBUF9DVU1VTEFUSVZFIiwiaXNMZWFwWWVhciIsInlkYXlGcm9tRGF0ZSIsImFycmF5U3VtIiwiYWRkRGF5cyIsIkVSUk5PX0NPREVTIiwiRVJSTk9fTUVTU0FHRVMiLCJETlMiLCJQcm90b2NvbHMiLCJTb2NrZXRzIiwiaW5pdFJhbmRvbUZpbGwiLCJyYW5kb21GaWxsIiwidGltZXJzIiwid2Fybk9uY2UiLCJVTldJTkRfQ0FDSEUiLCJyZWFkRW1Bc21BcmdzQXJyYXkiLCJyZWFkRW1Bc21BcmdzIiwicnVuRW1Bc21GdW5jdGlvbiIsImdldEV4ZWN1dGFibGVOYW1lIiwiZHluQ2FsbExlZ2FjeSIsImdldER5bkNhbGxlciIsImR5bkNhbGwiLCJhc3luY0xvYWQiLCJhbGlnbk1lbW9yeSIsIm1tYXBBbGxvYyIsImhhbmRsZUFsbG9jYXRvckluaXQiLCJIYW5kbGVBbGxvY2F0b3IiLCJnZXRDRnVuYyIsImZyZWVUYWJsZUluZGV4ZXMiLCJmdW5jdGlvbnNJblRhYmxlTWFwIiwic2V0VmFsdWUiLCJnZXRWYWx1ZSIsIlBBVEgiLCJQQVRIX0ZTIiwiVVRGOERlY29kZXIiLCJVVEY4QXJyYXlUb1N0cmluZyIsIlVURjhUb1N0cmluZyIsInN0cmluZ1RvVVRGOEFycmF5Iiwic3RyaW5nVG9VVEY4IiwibGVuZ3RoQnl0ZXNVVEY4IiwiaW50QXJyYXlGcm9tU3RyaW5nIiwic3RyaW5nVG9Bc2NpaSIsIlVURjE2RGVjb2RlciIsIlVURjE2VG9TdHJpbmciLCJzdHJpbmdUb1VURjE2IiwibGVuZ3RoQnl0ZXNVVEYxNiIsIlVURjMyVG9TdHJpbmciLCJzdHJpbmdUb1VURjMyIiwibGVuZ3RoQnl0ZXNVVEYzMiIsInN0cmluZ1RvTmV3VVRGOCIsInN0cmluZ1RvVVRGOE9uU3RhY2siLCJ3cml0ZUFycmF5VG9NZW1vcnkiLCJKU0V2ZW50cyIsInNwZWNpYWxIVE1MVGFyZ2V0cyIsImN1cnJlbnRGdWxsc2NyZWVuU3RyYXRlZ3kiLCJyZXN0b3JlT2xkV2luZG93ZWRTdHlsZSIsImRlbWFuZ2xlIiwiZGVtYW5nbGVBbGwiLCJFeGl0U3RhdHVzIiwiZ2V0RW52U3RyaW5ncyIsImRvUmVhZHYiLCJkb1dyaXRldiIsInByb21pc2VNYXAiLCJ1bmNhdWdodEV4Y2VwdGlvbkNvdW50IiwiZXhjZXB0aW9uTGFzdCIsImV4Y2VwdGlvbkNhdWdodCIsIkV4Y2VwdGlvbkluZm8iLCJCcm93c2VyIiwid2dldCIsIlNZU0NBTExTIiwicHJlbG9hZFBsdWdpbnMiLCJGU19jcmVhdGVQcmVsb2FkZWRGaWxlIiwiRlNfbW9kZVN0cmluZ1RvRmxhZ3MiLCJGU19nZXRNb2RlIiwiRlNfc3RkaW5fZ2V0Q2hhcl9idWZmZXIiLCJGU19zdGRpbl9nZXRDaGFyIiwiRlMiLCJNRU1GUyIsIlRUWSIsIlBJUEVGUyIsIlNPQ0tGUyIsInRlbXBGaXhlZExlbmd0aEFycmF5IiwibWluaVRlbXBXZWJHTEZsb2F0QnVmZmVycyIsIm1pbmlUZW1wV2ViR0xJbnRCdWZmZXJzIiwiR0wiLCJlbXNjcmlwdGVuX3dlYmdsX3Bvd2VyX3ByZWZlcmVuY2VzIiwiQUwiLCJHTFVUIiwiRUdMIiwiR0xFVyIsIklEQlN0b3JlIiwiU0RMIiwiU0RMX2dmeCIsIkdMRlciLCJhbGxvY2F0ZVVURjgiLCJhbGxvY2F0ZVVURjhPblN0YWNrIiwiSW50ZXJuYWxFcnJvciIsIkJpbmRpbmdFcnJvciIsInRocm93SW50ZXJuYWxFcnJvciIsInRocm93QmluZGluZ0Vycm9yIiwicmVnaXN0ZXJlZFR5cGVzIiwiYXdhaXRpbmdEZXBlbmRlbmNpZXMiLCJ0eXBlRGVwZW5kZW5jaWVzIiwidHVwbGVSZWdpc3RyYXRpb25zIiwic3RydWN0UmVnaXN0cmF0aW9ucyIsInNoYXJlZFJlZ2lzdGVyVHlwZSIsIndoZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkIiwiZW1iaW5kX2NoYXJDb2RlcyIsImVtYmluZF9pbml0X2NoYXJDb2RlcyIsInJlYWRMYXRpbjFTdHJpbmciLCJnZXRUeXBlTmFtZSIsImhlYXAzMlZlY3RvclRvQXJyYXkiLCJyZXF1aXJlUmVnaXN0ZXJlZFR5cGUiLCJVbmJvdW5kVHlwZUVycm9yIiwiUHVyZVZpcnR1YWxFcnJvciIsImluaXRfZW1iaW5kIiwidGhyb3dVbmJvdW5kVHlwZUVycm9yIiwiZW5zdXJlT3ZlcmxvYWRUYWJsZSIsImV4cG9zZVB1YmxpY1N5bWJvbCIsInJlcGxhY2VQdWJsaWNTeW1ib2wiLCJleHRlbmRFcnJvciIsImNyZWF0ZU5hbWVkRnVuY3Rpb24iLCJlbWJpbmRSZXByIiwicmVnaXN0ZXJlZEluc3RhbmNlcyIsImdldEJhc2VzdFBvaW50ZXIiLCJnZXRJbmhlcml0ZWRJbnN0YW5jZSIsImdldEluaGVyaXRlZEluc3RhbmNlQ291bnQiLCJnZXRMaXZlSW5oZXJpdGVkSW5zdGFuY2VzIiwicmVnaXN0ZXJlZFBvaW50ZXJzIiwicmVnaXN0ZXJUeXBlIiwiZ2V0U2hpZnRGcm9tU2l6ZSIsImludGVnZXJSZWFkVmFsdWVGcm9tUG9pbnRlciIsImZsb2F0UmVhZFZhbHVlRnJvbVBvaW50ZXIiLCJzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlciIsInJ1bkRlc3RydWN0b3JzIiwibmV3RnVuYyIsImNyYWZ0SW52b2tlckZ1bmN0aW9uIiwiZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24iLCJnZW5lcmljUG9pbnRlclRvV2lyZVR5cGUiLCJjb25zdE5vU21hcnRQdHJSYXdQb2ludGVyVG9XaXJlVHlwZSIsIm5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlIiwiaW5pdF9SZWdpc3RlcmVkUG9pbnRlciIsIlJlZ2lzdGVyZWRQb2ludGVyIiwiUmVnaXN0ZXJlZFBvaW50ZXJfZ2V0UG9pbnRlZSIsIlJlZ2lzdGVyZWRQb2ludGVyX2Rlc3RydWN0b3IiLCJSZWdpc3RlcmVkUG9pbnRlcl9kZWxldGVPYmplY3QiLCJSZWdpc3RlcmVkUG9pbnRlcl9mcm9tV2lyZVR5cGUiLCJydW5EZXN0cnVjdG9yIiwicmVsZWFzZUNsYXNzSGFuZGxlIiwiZmluYWxpemF0aW9uUmVnaXN0cnkiLCJkZXRhY2hGaW5hbGl6ZXJfZGVwcyIsImRldGFjaEZpbmFsaXplciIsImF0dGFjaEZpbmFsaXplciIsIm1ha2VDbGFzc0hhbmRsZSIsImluaXRfQ2xhc3NIYW5kbGUiLCJDbGFzc0hhbmRsZSIsIkNsYXNzSGFuZGxlX2lzQWxpYXNPZiIsInRocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCIsIkNsYXNzSGFuZGxlX2Nsb25lIiwiQ2xhc3NIYW5kbGVfZGVsZXRlIiwiZGVsZXRpb25RdWV1ZSIsIkNsYXNzSGFuZGxlX2lzRGVsZXRlZCIsIkNsYXNzSGFuZGxlX2RlbGV0ZUxhdGVyIiwiZmx1c2hQZW5kaW5nRGVsZXRlcyIsImRlbGF5RnVuY3Rpb24iLCJzZXREZWxheUZ1bmN0aW9uIiwiUmVnaXN0ZXJlZENsYXNzIiwic2hhbGxvd0NvcHlJbnRlcm5hbFBvaW50ZXIiLCJkb3duY2FzdFBvaW50ZXIiLCJ1cGNhc3RQb2ludGVyIiwidmFsaWRhdGVUaGlzIiwiY2hhcl8wIiwiY2hhcl85IiwibWFrZUxlZ2FsRnVuY3Rpb25OYW1lIiwiZW12YWxfaGFuZGxlcyIsImVtdmFsX3N5bWJvbHMiLCJpbml0X2VtdmFsIiwiY291bnRfZW12YWxfaGFuZGxlcyIsImdldFN0cmluZ09yU3ltYm9sIiwiRW12YWwiLCJlbXZhbF9uZXdlcnMiLCJlbXZhbF9tZXRob2RDYWxsZXJzIiwiZW12YWxfcmVnaXN0ZXJlZE1ldGhvZHMiXTtUOC5mb3JFYWNoKHNuKTt2YXIgWFI7VWU9ZnVuY3Rpb24gdSgpe1hSfHxKQigpLFhSfHwoVWU9dSl9O2Z1bmN0aW9uIE44KCl7eEIoKSxJdCgpfWZ1bmN0aW9uIEpCKCl7aWYoT2U+MHx8KE44KCksSnQoKSxPZT4wKSlyZXR1cm47ZnVuY3Rpb24gdSgpe1hSfHwoWFI9ITAsaS5jYWxsZWRSdW49ITAsIWsmJihXdCgpLG4oaSksaS5vblJ1bnRpbWVJbml0aWFsaXplZCYmaS5vblJ1bnRpbWVJbml0aWFsaXplZCgpLGMoIWkuX21haW4sJ2NvbXBpbGVkIHdpdGhvdXQgYSBtYWluLCBidXQgb25lIGlzIHByZXNlbnQuIGlmIHlvdSBhZGRlZCBpdCBmcm9tIEpTLCB1c2UgTW9kdWxlWyJvblJ1bnRpbWVJbml0aWFsaXplZCJdJyksRnQoKSkpfWkuc2V0U3RhdHVzPyhpLnNldFN0YXR1cygiUnVubmluZy4uLiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5zZXRTdGF0dXMoIiIpfSwxKSx1KCl9LDEpKTp1KCksZ3QoKX1pZihpLnByZUluaXQpZm9yKHR5cGVvZiBpLnByZUluaXQ9PSJmdW5jdGlvbiImJihpLnByZUluaXQ9W2kucHJlSW5pdF0pO2kucHJlSW5pdC5sZW5ndGg+MDspaS5wcmVJbml0LnBvcCgpKCk7cmV0dXJuIEpCKCksZS5yZWFkeX19KSgpLEdDPVNodH0pO3ZhciBkdixtdj1PKCgpPT57bHYoKTtnbG9iYWxUaGlzLkJ1ZmZlcj1nbG9iYWxUaGlzLkJ1ZmZlcnx8e307ZHY9KEdDLmhhc093blByb3BlcnR5KCJ0aGVuIik/R0M6UHJvbWlzZS5yZXNvbHZlKEdDKCkpKS50aGVuKHQ9PntsZXQgZT17ZmluZF9uZWFyYnlfaW5kaWNlczp7cnZhbDoiYm9vbGVhbiIscGFyYW1zOlsibnVtYmVyIiwibnVtYmVyIl19LGdldENvdmVyYWdlUG9zaXRpb25zOntydmFsOm51bGwscGFyYW1zOlsibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIl19LGluZmxhdGVFbGxpcHNvaWQ6e3J2YWw6bnVsbCxwYXJhbXM6WyJudW1iZXIiXX19LGk9e3dhc206dH07cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2gobj0+e2lbbl09ZVtuXS5wYXJhbXM/dC5jd3JhcChuLGVbbl0ucnZhbCxlW25dLnBhcmFtcyk6dC5jd3JhcChuLGVbbl0ucnZhbCl9KSxpfSl9KTt2YXIgVmh0LEtTLGZ2LExmZSxFdj1PKCgpPT57bXYoKTtWdCgpO1ZyKCk7KHtGaW5hbGl6YXRpb25SZWdpc3RyeTpWaHR9PWdsb2JhbFRoaXMpLEtTPXtfcHJldmlvdXNMb2FkOiExLF9pbnN0YW5jZTp2b2lkIDAsX3dhc21Nb2R1bGU6dm9pZCAwLF9wb3NpdGlvblBvaW50ZXI6LTEsX3ByZWNpc2lvbk1vZGU6NzUsYXN5bmMgaW5pdEluc3RhbmNlKCl7bGV0IHQ9ImRlZmF1bHQiO2lmKCF0aGlzLl9wcmV2aW91c0xvYWQpdHJ5e3RoaXMuX3dhc21Nb2R1bGU9KGF3YWl0IGR2KS53YXNtLHRoaXMuX3ByZXZpb3VzTG9hZD0hMH1jYXRjaChlKXt0aHJvdyBuZXcgWShgRmFpbGVkIHRvIGxvYWQgdGhlIFdBU00gbW9kdWxlOiAke2UubWVzc2FnZX1gKX1pZighdGhpcy5faW5zdGFuY2Upe2xldHtQb3NpdGlvblJlZ2lzdHJ5OmV9PXRoaXMuX3dhc21Nb2R1bGU7dGhpcy5faW5zdGFuY2U9bmV3IGUodCl9cmV0dXJue2luc3RhbmNlOnRoaXMuX2luc3RhbmNlLHdhc21Nb2R1bGU6dGhpcy5fd2FzbU1vZHVsZX19LGdldCBpbnN0YW5jZSgpe3JldHVybiB0aGlzLl9pbnN0YW5jZX0sZ2V0IHdhc21Nb2R1bGUoKXtyZXR1cm4gdGhpcy5fd2FzbU1vZHVsZX0sZ2V0IHBvc2l0aW9uUG9pbnRlcigpe3JldHVybiB0aGlzLl9wb3NpdGlvblBvaW50ZXJ9LHVwZGF0ZSh0KXtpZighdGhpcy5faW5zdGFuY2UpcmV0dXJuIDA7bGV0IGU9TWF0aC5yb3VuZCh0L3RoaXMuX3ByZWNpc2lvbk1vZGUpKnRoaXMuX3ByZWNpc2lvbk1vZGU7cmV0dXJuIHRoaXMuX2xhc3RVcGRhdGUhPT1lJiYodGhpcy5fbGFzdFVwZGF0ZT1lLHRoaXMuX3Bvc2l0aW9uUG9pbnRlcj10aGlzLl9pbnN0YW5jZS51cGRhdGUoZSkpLHRoaXMuX3Bvc2l0aW9uUG9pbnRlcnx8MH0sdXBkYXRlSnVsaWFuRGF0ZSh0KXtpZighdGhpcy5faW5zdGFuY2UpcmV0dXJuIDA7aWYoISh0IGluc3RhbmNlb2YgWmUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGp1bGlhbkRhdGUgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgSnVsaWFuRGF0ZSIpO2xldCBlPVplLnRvRGF0ZSh0KS5nZXRUaW1lKCk7cmV0dXJuIHRoaXMudXBkYXRlKGUpfSxnZXQgcHJlY2lzaW9uTW9kZSgpe3JldHVybiB0aGlzLl9wcmVjaXNpb25Nb2RlfSxzZXQgcHJlY2lzaW9uTW9kZSh0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJlY2lzaW9uIG1vZGUgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci4iKTt0aGlzLl9wcmVjaXNpb25Nb2RlPXR9fSxmdj17fSxMZmU9bmV3IFZodCh0PT57bGV0IGU9ZnZbdF07ZSYmKEtTLl93YXNtTW9kdWxlLndhc20ucmVtb3ZlUG9zaXRpb24oZSksZGVsZXRlIGZ2W3RdLGNvbnNvbGUubG9nKGBFbnRpdHkgd2l0aCBJRCAke3R9IGhhcyBiZWVuIGdhcmJhZ2UgY29sbGVjdGVkLCBwb2ludGVyICR7ZX1gKSl9KX0pO2Z1bmN0aW9uIF92KHQpe2xldCBlPVtdLGk9dC5wcm9wZXJ0aWVzLkNBVC5nZXRWYWx1ZSgpLG49dC5wcm9wZXJ0aWVzLk9NTS5nZXRWYWx1ZSgpLHM9bi5TRU1JX01BSk9SX0FYSVM7aWYoaS5QRVJJT0Q8MTI4KjYwJiZuLkVDQ0VOVFJJQ0lUWTwuMjUmJmUucHVzaChOaS5MRU8pLHM+MzZlMyl7bGV0IG89WmUubm93KCkscj1aZS5hZGRNaW51dGVzKG8sMTQ0MCxuZXcgWmUpLGE9MTAsaD0xLzAsQT0tMS8wO2ZvcihsZXQgZD1vO1plLmxlc3NUaGFuKGQscik7ZD1aZS5hZGRNaW51dGVzKGQsYSxuZXcgWmUpKXtsZXQgZj10LnBvc2l0aW9uLmdldFZhbHVlKGQpLHtsYXRpdHVkZTpFfT11dC5mcm9tQ2FydGVzaWFuKGYsb3QuV0dTODQpfHx7bGF0aXR1ZGU6MH0sXz1MLnRvRGVncmVlcyhFKTtoPU1hdGgubWluKGgsXyksQT1NYXRoLm1heChBLF8pfWkuUEVSSU9EPlhTLTYwJiZpLlBFUklPRDxYUys2MCYmKG4uSU5DTElOQVRJT048MT9lLnB1c2goTmkuR0VPKTplLnB1c2goTmkuR0VPU1lOQykpLG4uSU5DTElOQVRJT04+PTI1JiZuLklOQ0xJTkFUSU9OPD0xODAmJnM+PTM3OTQ4JiZzPD00NjM4MCYmbi5FQ0NFTlRSSUNJVFk8PS4yNSYmZS5wdXNoKE5pLklHTyksbi5JTkNMSU5BVElPTj49MCYmbi5JTkNMSU5BVElPTjw9MjUmJnM+PTM3OTQ4JiZzPD00NjM4MCYmbi5FQ0NFTlRSSUNJVFk8PS4yNSYmZS5wdXNoKE5pLkVHTyksaD49LTE1JiZBPD0xNSYmaS5QRVJJR0VFPj0zNTU4NiYmaS5QRVJJR0VFPD0zNTk4NiYmZS5wdXNoKE5pLkdFT0lBREMpfXJldHVybiBpLlBFUklHRUU+PTJlMyYmaS5QRVJJR0VFPDM1NzAwP2UucHVzaChOaS5NRU8pOmkuUEVSSUdFRT4zNTc4NiYmZS5wdXNoKE5pLkhFTyksbi5JTkNMSU5BVElPTj45NyYmbi5JTkNMSU5BVElPTjw5OSYmZS5wdXNoKE5pLlNVTlNZTkMpLE1hdGguYWJzKGkuUEVSSU9ELS41KlhTKTwxJiZlLnB1c2goTmkuU0VNSVNZTkMpLG4uSU5DTElOQVRJT04+PTgwJiZuLklOQ0xJTkFUSU9OPD0xMDAmJmUucHVzaChOaS5QT0xBUiksZS5sZW5ndGg9PT0wJiZlLnB1c2goTmkuVU5LTk9XTiksZX12YXIgTmksWFMsUnY9TygoKT0+e1ZyKCk7X2UoKTtyaSgpO1ZlKCk7Tmk9e0xFTzoiTG93IEVhcnRoIE9yYml0IixNRU86Ik1lZGl1bSBFYXJ0aCBPcmJpdCIsSEVPOiJIaWdobHkgRWxsaXB0aWNhbCBPcmJpdCIsR0VPOiJHZW9zdGF0aW9uYXJ5IE9yYml0IixJR086IkluY2xpbmVkIEdlb3N5bmNocm9ub3VzIE9yYml0IixFR086IkV4dGVuZGVkIEdlb3N0YXRpb25hcnkgT3JiaXQiLEdFT0lBREM6IklBREMgR0VPIFByb3RlY3RlZCBSZWdpb24iLEdFT1NZTkM6Ikdlb3N5bmNocm9ub3VzIE9yYml0IixTVU5TWU5DOiJTdW4gU3luY2hyb25vdXMgT3JiaXQiLFNFTUlTWU5DOiJTZW1pIFN5bmNocm9ub3VzIE9yYml0IixQT0xBUjoiUE9MQVIgT3JiaXQiLFVOS05PV046IlVOS05PV04ifSxYUz04NjE2NC4wOTA1fSk7ZnVuY3Rpb24gQ2YodCxlKXt0aGlzLl9jYWxsYmFjaz12b2lkIDAsdGhpcy5faXNDb25zdGFudD12b2lkIDAsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuc2V0Q2FsbGJhY2sodCxlKX12YXIgWnYsSXY9TygoKT0+e210KCk7VnQoKTt4aSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKENmLnByb3RvdHlwZSx7aXNDb25zdGFudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQ29uc3RhbnR9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX19KTtDZi5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2sodCxlKX07Q2YucHJvdG90eXBlLnNldENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNhbGxiYWNrIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJpc0NvbnN0YW50IGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX2NhbGxiYWNrIT09dHx8dGhpcy5faXNDb25zdGFudCE9PWU7dGhpcy5fY2FsbGJhY2s9dCx0aGlzLl9pc0NvbnN0YW50PWUsaSYmdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzKX07Q2YucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fHQgaW5zdGFuY2VvZiBDZiYmdGhpcy5fY2FsbGJhY2s9PT10Ll9jYWxsYmFjayYmdGhpcy5faXNDb25zdGFudD09PXQuX2lzQ29uc3RhbnR9O1p2PUNmfSk7dmFyIHFTLHB2LHV2PU8oKCk9PntRbigpO2NwKCk7SHQoKTtWdCgpO0diKCk7SXYoKTtxUz1jbGFzcyBleHRlbmRzIFNfe2NvbnN0cnVjdG9yKGUpe2lmKCEoZS5zZGMgaW5zdGFuY2VvZiBTXyl8fCFlLnNkYy5fd2FzbU1vZHVsZSl0aHJvdyBuZXcgWSgiSW52YWxpZCBTcGFjZUNhdGFsb2dEYXRhU291cmNlIik7c3VwZXIoYCR7ZS5zZGMubmFtZX1fY292ZXJhZ2VHcm91cGApLHRoaXMub2JqZWN0TGlzdD1bXSx0aGlzLnNkYz1lLnNkYyx0aGlzLnNkYy5lbnRpdGllcy5jb2xsZWN0aW9uQ2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKChpLG4scyxvKT0+e2ZvcihsZXQgcj0wO3I8cy5sZW5ndGg7cisrKX50aGlzLm9iamVjdExpc3QuaW5kZXhPZihzW3JdKSYmdGhpcy5yZW1vdmUoc1tyXSk7Zm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspIX50aGlzLm9iamVjdExpc3QuaW5kZXhPZihuW3JdKSYmbltyXS5fY292ZXJhZ2VTaG93aW5nJiZ0aGlzLnB1c2gobltyXSl9KSx0aGlzLmNvdmVyYWdlVHlwZT1lLmNvdmVyYWdlVHlwZXx8MCx0aGlzLmNvbG9yPWUuY29sb3J8fFp0LmZyb21SYW5kb20oe2FscGhhOi4zfSksdGhpcy5ncm91bmRDb3ZlcmFnZU9ubHk9ZS5ncm91bmRDb3ZlcmFnZU9ubHl8fCExLHRoaXMuYW5nbGU9ZS5hbmdsZSx0aGlzLmxhc3RJbnRlcnNlY3Rpb25UaW1lPW51bGwsdGhpcy5jYWNoZWRQb3NpdGlvbnM9W10sdGhpcy53YXNtTW9kdWxlPXRoaXMuc2RjLl93YXNtTW9kdWxlLHRoaXMuc2FtcGxlcz1lLnNhbXBsZXN8fDEwLHRoaXMuZWNlZlBvaW50ZXI9dGhpcy53YXNtTW9kdWxlLl9tYWxsb2MoMjQpLHRoaXMuZWNlZlBvaW50cz1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbU1vZHVsZS5IRUFQOC5idWZmZXIsdGhpcy5lY2VmUG9pbnRlciwzKSx0aGlzLnBvc2l0aW9ucz1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbU1vZHVsZS5IRUFQOC5idWZmZXIsdGhpcy5wb3NBcnJheVBvaW50ZXIsdGhpcy5fc2l6ZSksdGhpcy5yZXN1bHQ9bmV3IGwsdGhpcy5waD1uZXcgc2YsdGhpcy5jM2FycmF5PVtdfWdldCB2aWV3ZXIoKXtyZXR1cm4gdGhpcy5fdmlld2VyfWdldCBzYW1wbGVzKCl7cmV0dXJuIHRoaXMuX3NhbXBsZXN9c2V0IHNhbXBsZXMoZSl7dGhpcy5fc2FtcGxlcz1lLHRoaXMuX3NpemU9Nip0aGlzLl9zYW1wbGVzLHRoaXMuX2J5dGVzU2l6ZT10aGlzLl9zaXplKjgsdGhpcy5wb3NBcnJheVBvaW50ZXImJnRoaXMud2FzbU1vZHVsZS5fZnJlZSh0aGlzLnBvc0FycmF5UG9pbnRlciksdGhpcy5wb3NBcnJheVBvaW50ZXI9dGhpcy53YXNtTW9kdWxlLl9tYWxsb2ModGhpcy5fYnl0ZXNTaXplKSx0aGlzLnBvc2l0aW9ucz1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbU1vZHVsZS5IRUFQOC5idWZmZXIsdGhpcy5wb3NBcnJheVBvaW50ZXIsdGhpcy5fc2l6ZSl9Y3JlYXRlR2VvbWV0cnkoKXtsZXQgZT0ibm9jbGljazpDb3ZlcmFnZUVudGl0eSI7aWYodGhpcy5waC5zYXRwb3M9W10sIXRoaXMuZW50aXRpZXMuZ2V0QnlJZChlKSl7bGV0IGk9dGhpcy5lbnRpdGllcy5hZGQoe2lkOmUscG9seWdvbjp7aGllcmFyY2h5Om5ldyBadihuPT57dGhpcy5waC5wb3NpdGlvbnNBcnJheT1bXSx0aGlzLnBoLnBvc2l0aW9ucz1bXTtmb3IobGV0IHM9MDtzPHRoaXMub2JqZWN0TGlzdC5sZW5ndGg7KytzKWlmKHRoaXMub2JqZWN0TGlzdFtzXS5zaG93KXtpZih0aGlzLmMzYXJyYXk9W10sdGhpcy5yZXN1bHQ9dGhpcy5vYmplY3RMaXN0W3NdLnBvc2l0aW9uLmdldFZhbHVlKG4sdGhpcy5yZXN1bHQsITEpLHRoaXMubW9kZWxNYXRyaXg9dGhpcy5vYmplY3RMaXN0W3NdLmNvbXB1dGVNb2RlbE1hdHJpeChuKSxsLnBhY2sodGhpcy5yZXN1bHQsdGhpcy5lY2VmUG9pbnRzKSx0aGlzLndhc21Nb2R1bGUuZ2V0Q292ZXJhZ2VQb3NpdGlvbnModGhpcy5lY2VmUG9pbnRlcix0aGlzLmNvdmVyYWdlVHlwZSx0aGlzLmFuZ2xlLHRoaXMuc2FtcGxlcyx0aGlzLnBvc0FycmF5UG9pbnRlciksdGhpcy5wb3NpdGlvbnMubGVuZ3RoJTM9PT0wKXtsZXQgbz1sLnVucGFja0FycmF5KHRoaXMucG9zaXRpb25zLHRoaXMuYzNhcnJheSk7dGhpcy5waC5wb3NpdGlvbnNBcnJheVtzXT1vfWVsc2UgY29udGludWU7dGhpcy5ncm91bmRDb3ZlcmFnZU9ubHl8fCh0aGlzLnBoLnNhdHBvc1tzXT1sLmNsb25lKHRoaXMucmVzdWx0KSl9cmV0dXJuIHRoaXMucGh9LCExKSxwZXJQb3NpdGlvbkhlaWdodDohMCxtYXRlcmlhbDp0aGlzLmNvbG9yfSxwcm9wZXJ0aWVzOnt1bnNlbGVjdGFibGU6ITB9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSx7c2hvdzp7Z2V0OigpPT4hMCxzZXQ6KCk9Pnt9fX0pfX1nZXRCeUlkKGUpe3JldHVybiB0aGlzLm9iamVjdExpc3QuZmlsdGVyKGk9PmkuaWQ9PT1lKX1wdXNoKGUpe3RoaXMub2JqZWN0TGlzdC5maWx0ZXIoaT0+aS5pZD09PWUuaWQpLmxlbmd0aHx8KHRoaXMub2JqZWN0TGlzdC5wdXNoKGUpLHRoaXMuY3JlYXRlR2VvbWV0cnkoKSl9cmVtb3ZlKGUpe3RoaXMub2JqZWN0TGlzdD10aGlzLm9iamVjdExpc3QuZmlsdGVyKGk9PmkuaWQhPT1lLmlkKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtzaG93Ontjb25maWd1cmFibGU6ITAsZ2V0OigpPT5lLl9zaG93LHNldDppPT57ZS5fc2hvdz1pfX19KSx0aGlzLmNyZWF0ZUdlb21ldHJ5KCl9fSxwdj1xU30pO3ZhciBaRWUsSUVlLHBFZSxHaHQsQkMsQ3Y9TygoKT0+e2ljKCk7R2IoKTtjdigpO1FuKCk7SHQoKTtJRSgpO1ZtKCk7RXYoKTtSdigpO3V2KCk7aWgoKTtWdCgpO1ozKCk7elMoKTsoe09NTVQ6WkVlLE9NTUNPTExFQ1RJT05UOklFZX09cmQpLHtDQVRUOnBFZSxDQVRDT0xMRUNUSU9OVDpHaHR9PWVkLEJDPWNsYXNzIGV4dGVuZHMgU197Y29uc3RydWN0b3IoZT17bmFtZT1HcygpLHJlZmVyZW5jZUZyYW1lPSRpLkZJWEVELGNhbGNWZWxvY2l0eT0hMSxlbnRpdHlEZWZhdWx0PXt9fT17fSl7c3VwZXIoZS5uYW1lKSx0aGlzLl92aWV3ZXI9dm9pZCAwLHRoaXMuT01NPW51bGwsdGhpcy5DQVRSQVc9bnVsbCx0aGlzLkNBVD1udWxsLHRoaXMuQ09NQklORURPTU1DQVQ9W10sdGhpcy5sYXN0TG9hZGVkPW51bGwsdGhpcy5vcHRpb25zPWUsdGhpcy5fd2FzbU1vZHVsZT1udWxsLHRoaXMuX3JlZ2lzdGVyZWQ9ITEsdGhpcy5fZW50aXR5Q29sbGVjdGlvbi5yZWZlcmVuY2VGcmFtZT0kaS5GSVhFRCx0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLmNhbGNWZWxvY2l0eT1lLmNhbGNWZWxvY2l0eXx8ITE7bGV0IGk9KG4scyxvLHIpPT57by5maWx0ZXIoYT0+YS5wcm9wZXJ0aWVzPy5wb2ludGVyKS5mb3JFYWNoKGE9Pnt0aGlzLl93YXNtTW9kdWxlLnJlbW92ZUVudGl0eShhLnByb3BlcnRpZXMucG9pbnRlcil9KSx0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLnJlZmVyZW5jZUZyYW1lPXRoaXMuX3ZpZXdlcj8uc2NlbmUucmVmZXJlbmNlRnJhbWV8fHRoaXMuX2VudGl0eUNvbGxlY3Rpb24ucmVmZXJlbmNlRnJhbWV9O3RoaXMuX2VudGl0eUNvbGxlY3Rpb24uY29sbGVjdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihpLHRoaXMpLHRoaXMuX29yYml0cz17W05pLkxFT106W10sW05pLk1FT106W10sW05pLkhFT106W10sW05pLkdFT106W10sW05pLklHT106W10sW05pLkVHT106W10sW05pLkdFT0lBRENdOltdLFtOaS5HRU9TWU5DXTpbXSxbTmkuU1VOU1lOQ106W10sW05pLlNFTUlTWU5DXTpbXSxbTmkuUE9MQVJdOltdLFtOaS5VTktOT1dOXTpbXX19b25BZGQoZSl7fmUuZ2V0QnlOYW1lKHRoaXMuX2NvdmVyYWdlR3JvdXAubmFtZSkubGVuZ3RoJiZlLmFkZCh0aGlzLl9jb3ZlcmFnZUdyb3VwKX1vblJlbW92ZShlKXtlLmdldEJ5TmFtZSh0aGlzLl9jb3ZlcmFnZUdyb3VwLm5hbWUpLmxlbmd0aCYmZS5yZW1vdmUodGhpcy5fY292ZXJhZ2VHcm91cCl9YXN5bmMgbG9hZChlKXtyZXR1cm4gYXdhaXQgdGhpcy5sb2FkT01NKGUsInRsZSIpfWxvYWRPTU0oZSxpLG49ITEpe2lmKCFlKXRocm93IG5ldyBZKCdUaGUgcGFyYW1ldGVyICJvbW0iIGlzIHJlcXVpcmVkLicpO2lmKCFpKXRocm93IG5ldyBZKCdUaGUgcGFyYW1ldGVyICJzYXRjYXQiIGlzIHJlcXVpcmVkLicpO3JldHVybiBuZXcgUHJvbWlzZShhc3luYyBzPT57bGV0IG89YXdhaXQgS1MuaW5pdEluc3RhbmNlKCk7aWYodGhpcy5fd2FzbU1vZHVsZT1vLndhc21Nb2R1bGUsdGhpcy5fY292ZXJhZ2VHcm91cD10aGlzLl9jb3ZlcmFnZUdyb3VwfHxuZXcgcHYoe3NhbXBsZXM6NzIsc2RjOnRoaXMsY292ZXJhZ2VUeXBlOjEsYW5nbGU6OTAsZ3JvdW5kQ292ZXJhZ2VPbmx5OiExLGNvbG9yOlp0LkxJTUVHUkVFTi53aXRoQWxwaGEoLjUpfSksdGhpcy5lbnRpdGllcy5zdXNwZW5kRXZlbnRzKCksdGhpcy5fd2FzbVNhdGVsbGl0ZUNhdGFsb2c9dGhpcy5fd2FzbVNhdGVsbGl0ZUNhdGFsb2d8fG8uaW5zdGFuY2UsKGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpJiYoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoZT1uZXcgVWludDhBcnJheShlKSksdGhpcy5PTU09TWIoZSwiT01NIixyZCkpLChlLlJFQ09SRFN8fEFycmF5LmlzQXJyYXkoZSkpJiYodGhpcy5PTU09e1JFQ09SRFM6ZT8uUkVDT1JEU3x8ZX0pLCF0aGlzLk9NTSl0aHJvdyBFcnJvcigiT01NQ09MTEVDVElPTlQgaW52YWxpZCIpO2xldCByPVtdO3RoaXMuQ0FUPW5ldyBHaHQsKGkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpJiYoaSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoaT1uZXcgVWludDhBcnJheShpKSksdGhpcy5DQVRSQVc9TWIoaSwiQ0FUIixlZCkpLChpLlJFQ09SRFN8fEFycmF5LmlzQXJyYXkoaSkpJiYodGhpcy5DQVRSQVc9e1JFQ09SRFM6aT8uUkVDT1JEU3x8aX0pO2ZvcihsZXQgYT0wO2E8dGhpcy5DQVRSQVcuUkVDT1JEUy5sZW5ndGg7YSsrKXJbdGhpcy5DQVRSQVcuUkVDT1JEU1thXS5OT1JBRF9DQVRfSURdPWE7Zm9yKGxldCBhPTA7YTx0aGlzLk9NTS5SRUNPUkRTLmxlbmd0aDthKyspe2xldCBoPXRoaXMuT01NLlJFQ09SRFNbYV07dGhpcy5DQVQuUkVDT1JEU1thXT10aGlzLkNBVFJBVy5SRUNPUkRTW3JbaC5OT1JBRF9DQVRfSURdXSx0aGlzLkNPTUJJTkVET01NQ0FUW2FdPXt9O2ZvcihsZXQgZiBpbiBoKWguaGFzT3duUHJvcGVydHkoZikmJih0aGlzLkNPTUJJTkVET01NQ0FUW2FdW2ZdPWhbZl0pO2ZvcihsZXQgZiBpbiB0aGlzLkNBVC5SRUNPUkRTW2FdKXRoaXMuQ0FULlJFQ09SRFNbYV0uaGFzT3duUHJvcGVydHkoZikmJih0aGlzLkNPTUJJTkVET01NQ0FUW2FdW2ZdPXRoaXMuQ0FULlJFQ09SRFNbYV1bZl0pO2xldCBBLGQ9aC5OT1JBRF9DQVRfSUQ7aWYoQT10aGlzLmVudGl0aWVzLmdldEJ5SWQoZCkpQS5sb2FkT01NKGgpO2Vsc2V7bGV0IGY9e2lkOmQsbmFtZTp0aGlzLkNBVC5SRUNPUkRTW2FdPy5PQkpFQ1RfTkFNRXx8ZCxwcm9wZXJ0aWVzOntJTkRFWDphLENBVDp0aGlzLkNBVC5SRUNPUkRTW2FdLE9NTTpofSxwb2ludDp7cGl4ZWxTaXplOjEsc2NhbGVCeURpc3RhbmNlOm51bGx9LGxhYmVsOntzaG93OiExLHRleHQ6YCR7aC5PQkpFQ1RfSUQudG9TdHJpbmcoKS5wYWRTdGFydCg1LDApfWAsZm9udDoiMXJlbSBIZWx2ZXRpY2EiLHNob3dCYWNrZ3JvdW5kOiEwLGhvcml6b250YWxPcmlnaW46dG8uTEVGVCxiYWNrZ3JvdW5kQ29sb3I6bmV3IFp0KC4xLC4xLC4xLC45KSxwaXhlbE9mZnNldDpuZXcgbCgxMCwwKSxzY2FsZUJ5RGlzdGFuY2U6bmV3IGdpKDE1MCwxLjUsMTNlNywwKSxwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZTpuZXcgZ2koMTUwLDMsMTVlNiwuNSl9fTtmb3IobGV0IEUgaW4gdGhpcy5vcHRpb25zLmVudGl0eURlZmF1bHQpdGhpcy5vcHRpb25zLmVudGl0eURlZmF1bHRbRV0mJihmW0VdPU9iamVjdC5hc3NpZ24oe30sZltFXXx8e30sdGhpcy5vcHRpb25zLmVudGl0eURlZmF1bHRbRV0pKTtpZihmJiZ0aGlzLl93YXNtTW9kdWxlJiZoKXRyeXtsZXQgRT1uZXcgVkMoZix0aGlzLl93YXNtTW9kdWxlLHRoaXMuX3dhc21TYXRlbGxpdGVDYXRhbG9nLGgpO0E9dGhpcy5lbnRpdGllcy5hZGQoRSxhKTtsZXR7QVBPR0VFOl8sUEVSSUdFRTpSfT1FLnByb3BlcnRpZXMuQ0FULmdldFZhbHVlKCkse1NFTUlfTUFKT1JfQVhJUzpJLFNFTUlfTUlOT1JfQVhJUzpDfT1FLnByb3BlcnRpZXMuT01NLmdldFZhbHVlKCkse0VDQ0VOVFJJQ0lUWTpOfT1FLnByb3BlcnRpZXMuT01NLmdldFZhbHVlKCk7Xy89MWUzLFIvPTFlMyx0aGlzLkNBVC5SRUNPUkRTW2FdJiYodGhpcy5DQVQuUkVDT1JEU1thXS5BUE9HRUU9Xyx0aGlzLkNBVC5SRUNPUkRTW2FdLlBFUklHRUU9UiksdGhpcy5PTU0uUkVDT1JEU1thXSYmKHRoaXMuT01NLlJFQ09SRFNbYV0uU0VNSV9NQUpPUl9BWElTPUksdGhpcy5PTU0uUkVDT1JEU1thXS5TRU1JX01JTk9SX0FYSVM9Qyx0aGlzLk9NTS5SRUNPUkRTW2FdLkVDQ0VOVFJJQ0lUWT1OKSx0aGlzLkNPTUJJTkVET01NQ0FUW2FdPXsuLi50aGlzLkNPTUJJTkVET01NQ0FUW2FdLEFQT0dFRTpfLFBFUklHRUU6UixTRU1JX01BSk9SX0FYSVM6SSxTRU1JX01JTk9SX0FYSVM6QyxFQ0NFTlRSSUNJVFk6Tn19Y2F0Y2goRSl7Z2xvYmFsVGhpcy5lcnJvcnx8KGNvbnNvbGUubG9nKEUpLGdsb2JhbFRoaXMuZXJyb3I9RSl9fX10aGlzLmVudGl0aWVzLl9zdXNwZW5kQ291bnQmJnRoaXMuZW50aXRpZXMucmVzdW1lRXZlbnRzKCksdGhpcy5lbnRpdGllcy5yZWZlcmVuY2VGcmFtZT10aGlzLl92aWV3ZXI/LnNjZW5lLnJlZmVyZW5jZUZyYW1lLHModGhpcyl9KX1nZXRFbnRpdGllc0J5T3JiaXRUeXBlKGUpe3JldHVybiB0aGlzLl9vcmJpdHNbZV19Y2F0ZWdvcml6ZVNhdGVsbGl0ZXMoKXtmb3IobGV0IGUgaW4gTmkpdGhpcy5fb3JiaXRzW2VdJiYodGhpcy5fb3JiaXRzW2VdPVtdKTtmb3IobGV0IGU9MDtlPHRoaXMuZW50aXRpZXMudmFsdWVzLmxlbmd0aDtlKyspe2xldCBpPXRoaXMuZW50aXRpZXMudmFsdWVzW2VdLG49X3YoaSk7Zm9yKGxldCBzIGluIG4paWYobltzXSl7bGV0IG89bltzXTtvPT09TmkuTEVPP3RoaXMuTEVPLnB1c2goaSk6bz09PU5pLk1FTz90aGlzLk1FTy5wdXNoKGkpOm89PT1OaS5IRU8/dGhpcy5IRU8ucHVzaChpKTpvPT09TmkuR0VPP3RoaXMuR0VPLnB1c2goaSk6bz09PU5pLklHTz90aGlzLklHTy5wdXNoKGkpOm89PT1OaS5FR08/dGhpcy5FR08ucHVzaChpKTpvPT09TmkuR0VPSUFEQz90aGlzLkdFT0lBREMucHVzaChpKTpvPT09TmkuR0VPU1lOQz90aGlzLkdFT1NZTkMucHVzaChpKTpvPT09TmkuU1VOU1lOQz90aGlzLlNVTlNZTkMucHVzaChpKTpvPT09TmkuU0VNSVNZTkM/dGhpcy5TRU1JU1lOQy5wdXNoKGkpOm89PT1OaS5QT0xBUj90aGlzLlBPTEFSLnB1c2goaSk6bz09PU5pLlVOS05PV04mJnRoaXMuVU5LTk9XTi5wdXNoKGkpfX19fX0pO3ZhciAkUz17fTtIZSgkUyx7ZGVmYXVsdDooKT0+V2h0fSk7YXN5bmMgZnVuY3Rpb24gQmh0KHQpe2xldHt0cmFuc2ZlckVudGl0aWVzOmUsc2NyZWVuaW5nT2JqZWN0SWRzOml9PXQsbj1bXSx7T01NOnMsQ0FUOm99PWUscj1uZXcgQkMoe25hbWU6IndvcmtlckNhdGFsb2cifSk7YXdhaXQgci5sb2FkT01NKHMsbyk7bGV0IGE9ci5fd2FzbVNhdGVsbGl0ZUNhdGFsb2cuY29uanVuY3Rpb25Bc3Nlc3NtZW50KHQuc3RhcnQsdC5zdG9wLHQuc3RlcCx0LnJhZGl1cyxpKTtmb3IobGV0IGg9MDtoPGEuc2l6ZSgpO2grKyl7bGV0IEE9YS5nZXQoaCk7bi5wdXNoKHtwcmltYXJ5OkEucHJpbWFyeS5jYXRhbG9nTnVtYmVyLHNlY29uZGFyeTpBLnNlY29uZGFyeS5jYXRhbG9nTnVtYmVyLFRDQTpBLlRDQSxkaXN0YW5jZTpBLmRpc3RhbmNlfSl9cmV0dXJuIG59dmFyIFdodCx0Tz1PKCgpPT57TnMoKTtDdigpO1dodD1XaShCaHQpfSk7dmFyIGVPPXt9O0hlKGVPLHtkZWZhdWx0OigpPT5NaHR9KTtmdW5jdGlvbiBEaHQodCxlKXtsZXQgaT1UQS51bnBhY2tDb21iaW5lR2VvbWV0cnlQYXJhbWV0ZXJzKHQpLG49VEEuY29tYmluZUdlb21ldHJ5KGkpO3JldHVybiBUQS5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cyhuLGUpfXZhciBNaHQsaU89TygoKT0+e0tJKCk7TnMoKTtNaHQ9V2koRGh0KX0pO2Z1bmN0aW9uIGdyKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10Lm1pbmltdW0saT10Lm1heGltdW07aWYocC50eXBlT2Yub2JqZWN0KCJtaW4iLGUpLHAudHlwZU9mLm9iamVjdCgibWF4IixpKSxtKHQub2Zmc2V0QXR0cmlidXRlKSYmdC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApdGhyb3cgbmV3IFkoIkdlb21ldHJ5T2Zmc2V0QXR0cmlidXRlLlRPUCBpcyBub3QgYSBzdXBwb3J0ZWQgb3B0aW9ucy5vZmZzZXRBdHRyaWJ1dGUgZm9yIHRoaXMgZ2VvbWV0cnkuIik7bGV0IG49Wih0LnZlcnRleEZvcm1hdCxPdC5ERUZBVUxUKTt0aGlzLl9taW5pbXVtPWwuY2xvbmUoZSksdGhpcy5fbWF4aW11bT1sLmNsb25lKGkpLHRoaXMuX3ZlcnRleEZvcm1hdD1uLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVCb3hHZW9tZXRyeSJ9dmFyIFVodCxUdixOdixidixndixuTyxjUixzTz1PKCgpPT57X2koKTtIdCgpO2FlKCk7b2koKTtidCgpO210KCk7VnQoKTt5aSgpO2ppKCk7RW4oKTtnbygpO1hpKCk7THMoKTtVaHQ9bmV3IGw7Z3IuZnJvbURpbWVuc2lvbnM9ZnVuY3Rpb24odCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuZGltZW5zaW9ucztwLnR5cGVPZi5vYmplY3QoImRpbWVuc2lvbnMiLGUpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLngiLGUueCwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy55IixlLnksMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueiIsZS56LDApO2xldCBpPWwubXVsdGlwbHlCeVNjYWxhcihlLC41LG5ldyBsKTtyZXR1cm4gbmV3IGdyKHttaW5pbXVtOmwubmVnYXRlKGksbmV3IGwpLG1heGltdW06aSx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXQsb2Zmc2V0QXR0cmlidXRlOnQub2Zmc2V0QXR0cmlidXRlfSl9O2dyLmZyb21BeGlzQWxpZ25lZEJvdW5kaW5nQm94PWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImJvdW5kaW5nQm94Iix0KSxuZXcgZ3Ioe21pbmltdW06dC5taW5pbXVtLG1heGltdW06dC5tYXhpbXVtfSl9O2dyLnBhY2tlZExlbmd0aD0yKmwucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aCsxO2dyLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxsLnBhY2sodC5fbWluaW11bSxlLGkpLGwucGFjayh0Ll9tYXhpbXVtLGUsaStsLnBhY2tlZExlbmd0aCksT3QucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxpKzIqbC5wYWNrZWRMZW5ndGgpLGVbaSsyKmwucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aF09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O1R2PW5ldyBsLE52PW5ldyBsLGJ2PW5ldyBPdCxndj17bWluaW11bTpUdixtYXhpbXVtOk52LHZlcnRleEZvcm1hdDpidixvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtnci51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPWwudW5wYWNrKHQsZSxUdikscz1sLnVucGFjayh0LGUrbC5wYWNrZWRMZW5ndGgsTnYpLG89T3QudW5wYWNrKHQsZSsyKmwucGFja2VkTGVuZ3RoLGJ2KSxyPXRbZSsyKmwucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aF07cmV0dXJuIG0oaSk/KGkuX21pbmltdW09bC5jbG9uZShuLGkuX21pbmltdW0pLGkuX21heGltdW09bC5jbG9uZShzLGkuX21heGltdW0pLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShvLGkuX3ZlcnRleEZvcm1hdCksaS5fb2Zmc2V0QXR0cmlidXRlPXI9PT0tMT92b2lkIDA6cixpKTooZ3Yub2Zmc2V0QXR0cmlidXRlPXI9PT0tMT92b2lkIDA6cixuZXcgZ3IoZ3YpKX07Z3IuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fbWluaW11bSxpPXQuX21heGltdW0sbj10Ll92ZXJ0ZXhGb3JtYXQ7aWYobC5lcXVhbHMoZSxpKSlyZXR1cm47bGV0IHM9bmV3IHdlLG8scjtpZihuLnBvc2l0aW9uJiYobi5zdHx8bi5ub3JtYWx8fG4udGFuZ2VudHx8bi5iaXRhbmdlbnQpKXtpZihuLnBvc2l0aW9uJiYocj1uZXcgRmxvYXQ2NEFycmF5KDYqNCozKSxyWzBdPWUueCxyWzFdPWUueSxyWzJdPWkueixyWzNdPWkueCxyWzRdPWUueSxyWzVdPWkueixyWzZdPWkueCxyWzddPWkueSxyWzhdPWkueixyWzldPWUueCxyWzEwXT1pLnksclsxMV09aS56LHJbMTJdPWUueCxyWzEzXT1lLnksclsxNF09ZS56LHJbMTVdPWkueCxyWzE2XT1lLnksclsxN109ZS56LHJbMThdPWkueCxyWzE5XT1pLnksclsyMF09ZS56LHJbMjFdPWUueCxyWzIyXT1pLnksclsyM109ZS56LHJbMjRdPWkueCxyWzI1XT1lLnksclsyNl09ZS56LHJbMjddPWkueCxyWzI4XT1pLnksclsyOV09ZS56LHJbMzBdPWkueCxyWzMxXT1pLnksclszMl09aS56LHJbMzNdPWkueCxyWzM0XT1lLnksclszNV09aS56LHJbMzZdPWUueCxyWzM3XT1lLnksclszOF09ZS56LHJbMzldPWUueCxyWzQwXT1pLnkscls0MV09ZS56LHJbNDJdPWUueCxyWzQzXT1pLnkscls0NF09aS56LHJbNDVdPWUueCxyWzQ2XT1lLnkscls0N109aS56LHJbNDhdPWUueCxyWzQ5XT1pLnkscls1MF09ZS56LHJbNTFdPWkueCxyWzUyXT1pLnkscls1M109ZS56LHJbNTRdPWkueCxyWzU1XT1pLnkscls1Nl09aS56LHJbNTddPWUueCxyWzU4XT1pLnkscls1OV09aS56LHJbNjBdPWUueCxyWzYxXT1lLnkscls2Ml09ZS56LHJbNjNdPWkueCxyWzY0XT1lLnkscls2NV09ZS56LHJbNjZdPWkueCxyWzY3XT1lLnkscls2OF09aS56LHJbNjldPWUueCxyWzcwXT1lLnkscls3MV09aS56LHMucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpyfSkpLG4ubm9ybWFsKXtsZXQgQT1uZXcgRmxvYXQzMkFycmF5KDcyKTtBWzBdPTAsQVsxXT0wLEFbMl09MSxBWzNdPTAsQVs0XT0wLEFbNV09MSxBWzZdPTAsQVs3XT0wLEFbOF09MSxBWzldPTAsQVsxMF09MCxBWzExXT0xLEFbMTJdPTAsQVsxM109MCxBWzE0XT0tMSxBWzE1XT0wLEFbMTZdPTAsQVsxN109LTEsQVsxOF09MCxBWzE5XT0wLEFbMjBdPS0xLEFbMjFdPTAsQVsyMl09MCxBWzIzXT0tMSxBWzI0XT0xLEFbMjVdPTAsQVsyNl09MCxBWzI3XT0xLEFbMjhdPTAsQVsyOV09MCxBWzMwXT0xLEFbMzFdPTAsQVszMl09MCxBWzMzXT0xLEFbMzRdPTAsQVszNV09MCxBWzM2XT0tMSxBWzM3XT0wLEFbMzhdPTAsQVszOV09LTEsQVs0MF09MCxBWzQxXT0wLEFbNDJdPS0xLEFbNDNdPTAsQVs0NF09MCxBWzQ1XT0tMSxBWzQ2XT0wLEFbNDddPTAsQVs0OF09MCxBWzQ5XT0xLEFbNTBdPTAsQVs1MV09MCxBWzUyXT0xLEFbNTNdPTAsQVs1NF09MCxBWzU1XT0xLEFbNTZdPTAsQVs1N109MCxBWzU4XT0xLEFbNTldPTAsQVs2MF09MCxBWzYxXT0tMSxBWzYyXT0wLEFbNjNdPTAsQVs2NF09LTEsQVs2NV09MCxBWzY2XT0wLEFbNjddPS0xLEFbNjhdPTAsQVs2OV09MCxBWzcwXT0tMSxBWzcxXT0wLHMubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpBfSl9aWYobi5zdCl7bGV0IEE9bmV3IEZsb2F0MzJBcnJheSg0OCk7QVswXT0wLEFbMV09MCxBWzJdPTEsQVszXT0wLEFbNF09MSxBWzVdPTEsQVs2XT0wLEFbN109MSxBWzhdPTEsQVs5XT0wLEFbMTBdPTAsQVsxMV09MCxBWzEyXT0wLEFbMTNdPTEsQVsxNF09MSxBWzE1XT0xLEFbMTZdPTAsQVsxN109MCxBWzE4XT0xLEFbMTldPTAsQVsyMF09MSxBWzIxXT0xLEFbMjJdPTAsQVsyM109MSxBWzI0XT0xLEFbMjVdPTAsQVsyNl09MCxBWzI3XT0wLEFbMjhdPTAsQVsyOV09MSxBWzMwXT0xLEFbMzFdPTEsQVszMl09MSxBWzMzXT0wLEFbMzRdPTAsQVszNV09MCxBWzM2XT0wLEFbMzddPTEsQVszOF09MSxBWzM5XT0xLEFbNDBdPTAsQVs0MV09MCxBWzQyXT0xLEFbNDNdPTAsQVs0NF09MSxBWzQ1XT0xLEFbNDZdPTAsQVs0N109MSxzLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpBfSl9aWYobi50YW5nZW50KXtsZXQgQT1uZXcgRmxvYXQzMkFycmF5KDcyKTtBWzBdPTEsQVsxXT0wLEFbMl09MCxBWzNdPTEsQVs0XT0wLEFbNV09MCxBWzZdPTEsQVs3XT0wLEFbOF09MCxBWzldPTEsQVsxMF09MCxBWzExXT0wLEFbMTJdPS0xLEFbMTNdPTAsQVsxNF09MCxBWzE1XT0tMSxBWzE2XT0wLEFbMTddPTAsQVsxOF09LTEsQVsxOV09MCxBWzIwXT0wLEFbMjFdPS0xLEFbMjJdPTAsQVsyM109MCxBWzI0XT0wLEFbMjVdPTEsQVsyNl09MCxBWzI3XT0wLEFbMjhdPTEsQVsyOV09MCxBWzMwXT0wLEFbMzFdPTEsQVszMl09MCxBWzMzXT0wLEFbMzRdPTEsQVszNV09MCxBWzM2XT0wLEFbMzddPS0xLEFbMzhdPTAsQVszOV09MCxBWzQwXT0tMSxBWzQxXT0wLEFbNDJdPTAsQVs0M109LTEsQVs0NF09MCxBWzQ1XT0wLEFbNDZdPS0xLEFbNDddPTAsQVs0OF09LTEsQVs0OV09MCxBWzUwXT0wLEFbNTFdPS0xLEFbNTJdPTAsQVs1M109MCxBWzU0XT0tMSxBWzU1XT0wLEFbNTZdPTAsQVs1N109LTEsQVs1OF09MCxBWzU5XT0wLEFbNjBdPTEsQVs2MV09MCxBWzYyXT0wLEFbNjNdPTEsQVs2NF09MCxBWzY1XT0wLEFbNjZdPTEsQVs2N109MCxBWzY4XT0wLEFbNjldPTEsQVs3MF09MCxBWzcxXT0wLHMudGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6QX0pfWlmKG4uYml0YW5nZW50KXtsZXQgQT1uZXcgRmxvYXQzMkFycmF5KDcyKTtBWzBdPTAsQVsxXT0xLEFbMl09MCxBWzNdPTAsQVs0XT0xLEFbNV09MCxBWzZdPTAsQVs3XT0xLEFbOF09MCxBWzldPTAsQVsxMF09MSxBWzExXT0wLEFbMTJdPTAsQVsxM109MSxBWzE0XT0wLEFbMTVdPTAsQVsxNl09MSxBWzE3XT0wLEFbMThdPTAsQVsxOV09MSxBWzIwXT0wLEFbMjFdPTAsQVsyMl09MSxBWzIzXT0wLEFbMjRdPTAsQVsyNV09MCxBWzI2XT0xLEFbMjddPTAsQVsyOF09MCxBWzI5XT0xLEFbMzBdPTAsQVszMV09MCxBWzMyXT0xLEFbMzNdPTAsQVszNF09MCxBWzM1XT0xLEFbMzZdPTAsQVszN109MCxBWzM4XT0xLEFbMzldPTAsQVs0MF09MCxBWzQxXT0xLEFbNDJdPTAsQVs0M109MCxBWzQ0XT0xLEFbNDVdPTAsQVs0Nl09MCxBWzQ3XT0xLEFbNDhdPTAsQVs0OV09MCxBWzUwXT0xLEFbNTFdPTAsQVs1Ml09MCxBWzUzXT0xLEFbNTRdPTAsQVs1NV09MCxBWzU2XT0xLEFbNTddPTAsQVs1OF09MCxBWzU5XT0xLEFbNjBdPTAsQVs2MV09MCxBWzYyXT0xLEFbNjNdPTAsQVs2NF09MCxBWzY1XT0xLEFbNjZdPTAsQVs2N109MCxBWzY4XT0xLEFbNjldPTAsQVs3MF09MCxBWzcxXT0xLHMuYml0YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpBfSl9bz1uZXcgVWludDE2QXJyYXkoNioyKjMpLG9bMF09MCxvWzFdPTEsb1syXT0yLG9bM109MCxvWzRdPTIsb1s1XT0zLG9bNl09NixvWzddPTUsb1s4XT00LG9bOV09NyxvWzEwXT02LG9bMTFdPTQsb1sxMl09OCxvWzEzXT05LG9bMTRdPTEwLG9bMTVdPTgsb1sxNl09MTAsb1sxN109MTEsb1sxOF09MTQsb1sxOV09MTMsb1syMF09MTIsb1syMV09MTUsb1syMl09MTQsb1syM109MTIsb1syNF09MTgsb1syNV09MTcsb1syNl09MTYsb1syN109MTksb1syOF09MTgsb1syOV09MTYsb1szMF09MjAsb1szMV09MjEsb1szMl09MjIsb1szM109MjAsb1szNF09MjIsb1szNV09MjN9ZWxzZSByPW5ldyBGbG9hdDY0QXJyYXkoOCozKSxyWzBdPWUueCxyWzFdPWUueSxyWzJdPWUueixyWzNdPWkueCxyWzRdPWUueSxyWzVdPWUueixyWzZdPWkueCxyWzddPWkueSxyWzhdPWUueixyWzldPWUueCxyWzEwXT1pLnksclsxMV09ZS56LHJbMTJdPWUueCxyWzEzXT1lLnksclsxNF09aS56LHJbMTVdPWkueCxyWzE2XT1lLnksclsxN109aS56LHJbMThdPWkueCxyWzE5XT1pLnksclsyMF09aS56LHJbMjFdPWUueCxyWzIyXT1pLnksclsyM109aS56LHMucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpyfSksbz1uZXcgVWludDE2QXJyYXkoNioyKjMpLG9bMF09NCxvWzFdPTUsb1syXT02LG9bM109NCxvWzRdPTYsb1s1XT03LG9bNl09MSxvWzddPTAsb1s4XT0zLG9bOV09MSxvWzEwXT0zLG9bMTFdPTIsb1sxMl09MSxvWzEzXT02LG9bMTRdPTUsb1sxNV09MSxvWzE2XT0yLG9bMTddPTYsb1sxOF09MixvWzE5XT0zLG9bMjBdPTcsb1syMV09MixvWzIyXT03LG9bMjNdPTYsb1syNF09MyxvWzI1XT0wLG9bMjZdPTQsb1syN109MyxvWzI4XT00LG9bMjldPTcsb1szMF09MCxvWzMxXT0xLG9bMzJdPTUsb1szM109MCxvWzM0XT01LG9bMzVdPTQ7bGV0IGE9bC5zdWJ0cmFjdChpLGUsVWh0KSxoPWwubWFnbml0dWRlKGEpKi41O2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IEE9ci5sZW5ndGgsZD10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxmPW5ldyBVaW50OEFycmF5KEEvMykuZmlsbChkKTtzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmZ9KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOnMsaW5kaWNlczpvLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBOdChsLlpFUk8saCksb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtnci5nZXRVbml0Qm94PWZ1bmN0aW9uKCl7cmV0dXJuIG0obk8pfHwobk89Z3IuY3JlYXRlR2VvbWV0cnkoZ3IuZnJvbURpbWVuc2lvbnMoe2RpbWVuc2lvbnM6bmV3IGwoMSwxLDEpLHZlcnRleEZvcm1hdDpPdC5QT1NJVElPTl9PTkxZfSkpKSxuT307Y1I9Z3J9KTt2YXIgb089e307SGUob08se2RlZmF1bHQ6KCk9PmtodH0pO2Z1bmN0aW9uIFFodCh0LGUpe3JldHVybiBtKGUpJiYodD1jUi51bnBhY2sodCxlKSksY1IuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGtodCxyTz1PKCgpPT57c08oKTttdCgpO2todD1RaHR9KTtmdW5jdGlvbiBTQSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5taW5pbXVtLGk9dC5tYXhpbXVtO2lmKHAudHlwZU9mLm9iamVjdCgibWluIixlKSxwLnR5cGVPZi5vYmplY3QoIm1heCIsaSksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKXRocm93IG5ldyBZKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX21pbj1sLmNsb25lKGUpLHRoaXMuX21heD1sLmNsb25lKGkpLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVCb3hPdXRsaW5lR2VvbWV0cnkifXZhciBMaHQsWXYsU3YsRnYsYU8sT3Y9TygoKT0+e19pKCk7SHQoKTthZSgpO29pKCk7YnQoKTttdCgpO1Z0KCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtYaSgpO0xodD1uZXcgbDtTQS5mcm9tRGltZW5zaW9ucz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5kaW1lbnNpb25zO3AudHlwZU9mLm9iamVjdCgiZGltZW5zaW9ucyIsZSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueCIsZS54LDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnkiLGUueSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy56IixlLnosMCk7bGV0IGk9bC5tdWx0aXBseUJ5U2NhbGFyKGUsLjUsbmV3IGwpO3JldHVybiBuZXcgU0Eoe21pbmltdW06bC5uZWdhdGUoaSxuZXcgbCksbWF4aW11bTppLG9mZnNldEF0dHJpYnV0ZTp0Lm9mZnNldEF0dHJpYnV0ZX0pfTtTQS5mcm9tQXhpc0FsaWduZWRCb3VuZGluZ0JveD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJib3VuZGluZEJveCIsdCksbmV3IFNBKHttaW5pbXVtOnQubWluaW11bSxtYXhpbXVtOnQubWF4aW11bX0pfTtTQS5wYWNrZWRMZW5ndGg9MipsLnBhY2tlZExlbmd0aCsxO1NBLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxsLnBhY2sodC5fbWluLGUsaSksbC5wYWNrKHQuX21heCxlLGkrbC5wYWNrZWRMZW5ndGgpLGVbaStsLnBhY2tlZExlbmd0aCoyXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07WXY9bmV3IGwsU3Y9bmV3IGwsRnY9e21pbmltdW06WXYsbWF4aW11bTpTdixvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtTQS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPWwudW5wYWNrKHQsZSxZdikscz1sLnVucGFjayh0LGUrbC5wYWNrZWRMZW5ndGgsU3YpLG89dFtlK2wucGFja2VkTGVuZ3RoKjJdO3JldHVybiBtKGkpPyhpLl9taW49bC5jbG9uZShuLGkuX21pbiksaS5fbWF4PWwuY2xvbmUocyxpLl9tYXgpLGkuX29mZnNldEF0dHJpYnV0ZT1vPT09LTE/dm9pZCAwOm8saSk6KEZ2Lm9mZnNldEF0dHJpYnV0ZT1vPT09LTE/dm9pZCAwOm8sbmV3IFNBKEZ2KSl9O1NBLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX21pbixpPXQuX21heDtpZihsLmVxdWFscyhlLGkpKXJldHVybjtsZXQgbj1uZXcgd2Uscz1uZXcgVWludDE2QXJyYXkoMTIqMiksbz1uZXcgRmxvYXQ2NEFycmF5KDgqMyk7b1swXT1lLngsb1sxXT1lLnksb1syXT1lLnosb1szXT1pLngsb1s0XT1lLnksb1s1XT1lLnosb1s2XT1pLngsb1s3XT1pLnksb1s4XT1lLnosb1s5XT1lLngsb1sxMF09aS55LG9bMTFdPWUueixvWzEyXT1lLngsb1sxM109ZS55LG9bMTRdPWkueixvWzE1XT1pLngsb1sxNl09ZS55LG9bMTddPWkueixvWzE4XT1pLngsb1sxOV09aS55LG9bMjBdPWkueixvWzIxXT1lLngsb1syMl09aS55LG9bMjNdPWkueixuLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6b30pLHNbMF09NCxzWzFdPTUsc1syXT01LHNbM109NixzWzRdPTYsc1s1XT03LHNbNl09NyxzWzddPTQsc1s4XT0wLHNbOV09MSxzWzEwXT0xLHNbMTFdPTIsc1sxMl09MixzWzEzXT0zLHNbMTRdPTMsc1sxNV09MCxzWzE2XT0wLHNbMTddPTQsc1sxOF09MSxzWzE5XT01LHNbMjBdPTIsc1syMV09NixzWzIyXT0zLHNbMjNdPTc7bGV0IHI9bC5zdWJ0cmFjdChpLGUsTGh0KSxhPWwubWFnbml0dWRlKHIpKi41O2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGg9by5sZW5ndGgsQT10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxkPW5ldyBVaW50OEFycmF5KGgvMykuZmlsbChBKTtuLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmR9KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOm4saW5kaWNlczpzLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6bmV3IE50KGwuWkVSTyxhKSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O2FPPVNBfSk7dmFyIEFPPXt9O0hlKEFPLHtkZWZhdWx0OigpPT53aHR9KTtmdW5jdGlvbiB5aHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9YU8udW5wYWNrKHQsZSkpLGFPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciB3aHQsaE89TygoKT0+e092KCk7bXQoKTt3aHQ9eWh0fSk7ZnVuY3Rpb24gZ2YodCxlLGksbixzLG8scixhLGgsQSl7bGV0IGQ9dCtlO2wubXVsdGlwbHlCeVNjYWxhcihuLE1hdGguY29zKGQpLFdDKSxsLm11bHRpcGx5QnlTY2FsYXIoaSxNYXRoLnNpbihkKSxWdiksbC5hZGQoV0MsVnYsV0MpO2xldCBmPU1hdGguY29zKHQpO2Y9ZipmO2xldCBFPU1hdGguc2luKHQpO0U9RSpFO2xldCBSPW8vTWF0aC5zcXJ0KHIqZitzKkUpL2E7cmV0dXJuIEFlLmZyb21BeGlzQW5nbGUoV0MsUixHdiksbHQuZnJvbVF1YXRlcm5pb24oR3YsQnYpLGx0Lm11bHRpcGx5QnlWZWN0b3IoQnYsaCxBKSxsLm5vcm1hbGl6ZShBLEEpLGwubXVsdGlwbHlCeVNjYWxhcihBLGEsQSksQX12YXIgbE8sV0MsVnYsR3YsQnYsV3YsRHYsY08seGh0LFBodCxKaHQsamh0LHlhLGRPPU8oKCk9PntIdCgpO19lKCk7ZG4oKTskcygpO2xPPXt9LFdDPW5ldyBsLFZ2PW5ldyBsLEd2PW5ldyBBZSxCdj1uZXcgbHQ7V3Y9bmV3IGwsRHY9bmV3IGwsY089bmV3IGwseGh0PW5ldyBsO2xPLnJhaXNlUG9zaXRpb25zVG9IZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe2xldCBuPWUuZWxsaXBzb2lkLHM9ZS5oZWlnaHQsbz1lLmV4dHJ1ZGVkSGVpZ2h0LHI9aT90Lmxlbmd0aC8zKjI6dC5sZW5ndGgvMyxhPW5ldyBGbG9hdDY0QXJyYXkociozKSxoPXQubGVuZ3RoLEE9aT9oOjA7Zm9yKGxldCBkPTA7ZDxoO2QrPTMpe2xldCBmPWQrMSxFPWQrMixfPWwuZnJvbUFycmF5KHQsZCxXdik7bi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKF8sXyk7bGV0IFI9bC5jbG9uZShfLER2KSxJPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKF8seGh0KSxDPWwubXVsdGlwbHlCeVNjYWxhcihJLHMsY08pO2wuYWRkKF8sQyxfKSxpJiYobC5tdWx0aXBseUJ5U2NhbGFyKEksbyxDKSxsLmFkZChSLEMsUiksYVtkK0FdPVIueCxhW2YrQV09Ui55LGFbRStBXT1SLnopLGFbZF09Xy54LGFbZl09Xy55LGFbRV09Xy56fXJldHVybiBhfTtQaHQ9bmV3IGwsSmh0PW5ldyBsLGpodD1uZXcgbDtsTy5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsaSl7bGV0IG49dC5zZW1pTWlub3JBeGlzLHM9dC5zZW1pTWFqb3JBeGlzLG89dC5yb3RhdGlvbixyPXQuY2VudGVyLGE9dC5ncmFudWxhcml0eSo4LGg9bipuLEE9cypzLGQ9cypuLGY9bC5tYWduaXR1ZGUociksRT1sLm5vcm1hbGl6ZShyLFBodCksXz1sLmNyb3NzKGwuVU5JVF9aLHIsSmh0KTtfPWwubm9ybWFsaXplKF8sXyk7bGV0IFI9bC5jcm9zcyhFLF8samh0KSxJPTErTWF0aC5jZWlsKEwuUElfT1ZFUl9UV08vYSksQz1MLlBJX09WRVJfVFdPLyhJLTEpLE49TC5QSV9PVkVSX1RXTy1JKkM7TjwwJiYoSS09TWF0aC5jZWlsKE1hdGguYWJzKE4pL0MpKTtsZXQgVD0yKihJKihJKzIpKSxGPWU/bmV3IEFycmF5KFQqMyk6dm9pZCAwLGI9MCxHPVd2LE09RHYsUT1JKjQqMyxVPVEtMSxrPTAseT1pP25ldyBBcnJheShRKTp2b2lkIDAsYyxnLFYsRCx3O2ZvcihOPUwuUElfT1ZFUl9UV08sRz1nZihOLG8sUixfLGgsZCxBLGYsRSxHKSxlJiYoRltiKytdPUcueCxGW2IrK109Ry55LEZbYisrXT1HLnopLGkmJih5W1UtLV09Ry56LHlbVS0tXT1HLnkseVtVLS1dPUcueCksTj1MLlBJX09WRVJfVFdPLUMsYz0xO2M8SSsxOysrYyl7aWYoRz1nZihOLG8sUixfLGgsZCxBLGYsRSxHKSxNPWdmKE1hdGguUEktTixvLFIsXyxoLGQsQSxmLEUsTSksZSl7Zm9yKEZbYisrXT1HLngsRltiKytdPUcueSxGW2IrK109Ry56LFY9MipjKzIsZz0xO2c8Vi0xOysrZylEPWcvKFYtMSksdz1sLmxlcnAoRyxNLEQsY08pLEZbYisrXT13LngsRltiKytdPXcueSxGW2IrK109dy56O0ZbYisrXT1NLngsRltiKytdPU0ueSxGW2IrK109TS56fWkmJih5W1UtLV09Ry56LHlbVS0tXT1HLnkseVtVLS1dPUcueCx5W2srK109TS54LHlbaysrXT1NLnkseVtrKytdPU0ueiksTj1MLlBJX09WRVJfVFdPLShjKzEpKkN9Zm9yKGM9STtjPjE7LS1jKXtpZihOPUwuUElfT1ZFUl9UV08tKGMtMSkqQyxHPWdmKC1OLG8sUixfLGgsZCxBLGYsRSxHKSxNPWdmKE4rTWF0aC5QSSxvLFIsXyxoLGQsQSxmLEUsTSksZSl7Zm9yKEZbYisrXT1HLngsRltiKytdPUcueSxGW2IrK109Ry56LFY9MiooYy0xKSsyLGc9MTtnPFYtMTsrK2cpRD1nLyhWLTEpLHc9bC5sZXJwKEcsTSxELGNPKSxGW2IrK109dy54LEZbYisrXT13LnksRltiKytdPXcuejtGW2IrK109TS54LEZbYisrXT1NLnksRltiKytdPU0uen1pJiYoeVtVLS1dPUcueix5W1UtLV09Ry55LHlbVS0tXT1HLngseVtrKytdPU0ueCx5W2srK109TS55LHlbaysrXT1NLnopfU49TC5QSV9PVkVSX1RXTyxHPWdmKC1OLG8sUixfLGgsZCxBLGYsRSxHKTtsZXQgeD17fTtyZXR1cm4gZSYmKEZbYisrXT1HLngsRltiKytdPUcueSxGW2IrK109Ry56LHgucG9zaXRpb25zPUYseC5udW1QdHM9SSksaSYmKHlbVS0tXT1HLnoseVtVLS1dPUcueSx5W1UtLV09Ry54LHgub3V0ZXJQb3NpdGlvbnM9eSkseH07eWE9bE99KTtmdW5jdGlvbiBQdih0LGUsaSl7bGV0IG49ZS52ZXJ0ZXhGb3JtYXQscz1lLmNlbnRlcixvPWUuc2VtaU1ham9yQXhpcyxyPWUuc2VtaU1pbm9yQXhpcyxhPWUuZWxsaXBzb2lkLGg9ZS5zdFJvdGF0aW9uLEE9aT90Lmxlbmd0aC8zKjI6dC5sZW5ndGgvMyxkPWUuc2hhZG93Vm9sdW1lLGY9bi5zdD9uZXcgRmxvYXQzMkFycmF5KEEqMik6dm9pZCAwLEU9bi5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShBKjMpOnZvaWQgMCxfPW4udGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KEEqMyk6dm9pZCAwLFI9bi5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShBKjMpOnZvaWQgMCxJPWQ/bmV3IEZsb2F0MzJBcnJheShBKjMpOnZvaWQgMCxDPTAsTj1RdixUPWt2LEY9THYsYj1uZXcgT3MoYSksRz1iLnByb2plY3QoYS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhzLFVDKSx5diksTT1hLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocyxUZik7YS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoTSxNKTtsZXQgUT1VdixVPUhodDtpZihoIT09MCl7bGV0IHc9QWUuZnJvbUF4aXNBbmdsZShNLGgsRU8pO1E9bHQuZnJvbVF1YXRlcm5pb24odyxRKSx3PUFlLmZyb21BeGlzQW5nbGUoTSwtaCxFTyksVT1sdC5mcm9tUXVhdGVybmlvbih3LFUpfWVsc2UgUT1sdC5jbG9uZShsdC5JREVOVElUWSxRKSxVPWx0LmNsb25lKGx0LklERU5USVRZLFUpO2xldCBrPW50LmZyb21FbGVtZW50cyhOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHd2KSx5PW50LmZyb21FbGVtZW50cyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHh2KSxjPXQubGVuZ3RoLGc9aT9jOjAsVj1nLzMqMjtmb3IobGV0IHc9MDt3PGM7dys9Myl7bGV0IHg9dysxLEg9dysyLGo9bC5mcm9tQXJyYXkodCx3LFRmKTtpZihuLnN0KXtsZXQgWD1sdC5tdWx0aXBseUJ5VmVjdG9yKFEsaixtTyksdHQ9Yi5wcm9qZWN0KGEuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoWCxVQyksZk8pO2wuc3VidHJhY3QodHQsRyx0dCksRnMueD0odHQueCtvKS8oMipvKSxGcy55PSh0dC55K3IpLygyKnIpLGsueD1NYXRoLm1pbihGcy54LGsueCksay55PU1hdGgubWluKEZzLnksay55KSx5Lng9TWF0aC5tYXgoRnMueCx5LngpLHkueT1NYXRoLm1heChGcy55LHkueSksaSYmKGZbQytWXT1Gcy54LGZbQysxK1ZdPUZzLnkpLGZbQysrXT1Gcy54LGZbQysrXT1Gcy55fShuLm5vcm1hbHx8bi50YW5nZW50fHxuLmJpdGFuZ2VudHx8ZCkmJihOPWEuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGosTiksZCYmKElbdytnXT0tTi54LElbeCtnXT0tTi55LElbSCtnXT0tTi56KSwobi5ub3JtYWx8fG4udGFuZ2VudHx8bi5iaXRhbmdlbnQpJiYoKG4udGFuZ2VudHx8bi5iaXRhbmdlbnQpJiYoVD1sLm5vcm1hbGl6ZShsLmNyb3NzKGwuVU5JVF9aLE4sVCksVCksbHQubXVsdGlwbHlCeVZlY3RvcihVLFQsVCkpLG4ubm9ybWFsJiYoRVt3XT1OLngsRVt4XT1OLnksRVtIXT1OLnosaSYmKEVbdytnXT0tTi54LEVbeCtnXT0tTi55LEVbSCtnXT0tTi56KSksbi50YW5nZW50JiYoX1t3XT1ULngsX1t4XT1ULnksX1tIXT1ULnosaSYmKF9bdytnXT0tVC54LF9beCtnXT0tVC55LF9bSCtnXT0tVC56KSksbi5iaXRhbmdlbnQmJihGPWwubm9ybWFsaXplKGwuY3Jvc3MoTixULEYpLEYpLFJbd109Ri54LFJbeF09Ri55LFJbSF09Ri56LGkmJihSW3crZ109Ri54LFJbeCtnXT1GLnksUltIK2ddPUYueikpKSl9aWYobi5zdCl7Yz1mLmxlbmd0aDtmb3IobGV0IHc9MDt3PGM7dys9MilmW3ddPShmW3ddLWsueCkvKHkueC1rLngpLGZbdysxXT0oZlt3KzFdLWsueSkvKHkueS1rLnkpfWxldCBEPW5ldyB3ZTtpZihuLnBvc2l0aW9uKXtsZXQgdz15YS5yYWlzZVBvc2l0aW9uc1RvSGVpZ2h0KHQsZSxpKTtELnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6d30pfWlmKG4uc3QmJihELnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpmfSkpLG4ubm9ybWFsJiYoRC5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkV9KSksbi50YW5nZW50JiYoRC50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLG4uYml0YW5nZW50JiYoRC5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlJ9KSksZCYmKEQuZXh0cnVkZURpcmVjdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6SX0pKSxpJiZtKGUub2Zmc2V0QXR0cmlidXRlKSl7bGV0IHc9bmV3IFVpbnQ4QXJyYXkoQSk7aWYoZS5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1Apdz13LmZpbGwoMSwwLEEvMik7ZWxzZXtsZXQgeD1lLm9mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxO3c9dy5maWxsKHgpfUQuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6d30pfXJldHVybiBEfWZ1bmN0aW9uIEp2KHQpe2xldCBlPW5ldyBBcnJheSgxMioodCoodCsxKSktNiksaT0wLG4scyxvLHIsYTtmb3Iobj0wLG89MSxyPTA7cjwzO3IrKyllW2krK109bysrLGVbaSsrXT1uLGVbaSsrXT1vO2ZvcihyPTI7cjx0KzE7KytyKXtmb3Iobz1yKihyKzEpLTEsbj0oci0xKSpyLTEsZVtpKytdPW8rKyxlW2krK109bixlW2krK109byxzPTIqcixhPTA7YTxzLTE7KythKWVbaSsrXT1vLGVbaSsrXT1uKyssZVtpKytdPW4sZVtpKytdPW8rKyxlW2krK109bixlW2krK109bztlW2krK109bysrLGVbaSsrXT1uLGVbaSsrXT1vfWZvcihzPXQqMiwrK28sKytuLHI9MDtyPHMtMTsrK3IpZVtpKytdPW8sZVtpKytdPW4rKyxlW2krK109bixlW2krK109bysrLGVbaSsrXT1uLGVbaSsrXT1vO2ZvcihlW2krK109byxlW2krK109bisrLGVbaSsrXT1uLGVbaSsrXT1vKyssZVtpKytdPW4rKyxlW2krK109biwrK24scj10LTE7cj4xOy0tcil7Zm9yKGVbaSsrXT1uKyssZVtpKytdPW4sZVtpKytdPW8scz0yKnIsYT0wO2E8cy0xOysrYSllW2krK109byxlW2krK109bisrLGVbaSsrXT1uLGVbaSsrXT1vKyssZVtpKytdPW4sZVtpKytdPW87ZVtpKytdPW4rKyxlW2krK109bisrLGVbaSsrXT1vKyt9Zm9yKHI9MDtyPDM7cisrKWVbaSsrXT1uKyssZVtpKytdPW4sZVtpKytdPW87cmV0dXJuIGV9ZnVuY3Rpb24gdmh0KHQpe2xldCBlPXQuY2VudGVyO0FkPWwubXVsdGlwbHlCeVNjYWxhcih0LmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxBZCksdC5oZWlnaHQsQWQpLEFkPWwuYWRkKGUsQWQsQWQpO2xldCBpPW5ldyBOdChBZCx0LnNlbWlNYWpvckF4aXMpLG49eWEuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMCwhMSkscz1uLnBvc2l0aW9ucyxvPW4ubnVtUHRzLHI9UHYocyx0LCExKSxhPUp2KG8pO3JldHVybiBhPXRlLmNyZWF0ZVR5cGVkQXJyYXkocy5sZW5ndGgvMyxhKSx7Ym91bmRpbmdTcGhlcmU6aSxhdHRyaWJ1dGVzOnIsaW5kaWNlczphfX1mdW5jdGlvbiB6aHQodCxlKXtsZXQgaT1lLnZlcnRleEZvcm1hdCxuPWUuY2VudGVyLHM9ZS5zZW1pTWFqb3JBeGlzLG89ZS5zZW1pTWlub3JBeGlzLHI9ZS5lbGxpcHNvaWQsYT1lLmhlaWdodCxoPWUuZXh0cnVkZWRIZWlnaHQsQT1lLnN0Um90YXRpb24sZD10Lmxlbmd0aC8zKjIsZj1uZXcgRmxvYXQ2NEFycmF5KGQqMyksRT1pLnN0P25ldyBGbG9hdDMyQXJyYXkoZCoyKTp2b2lkIDAsXz1pLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KGQqMyk6dm9pZCAwLFI9aS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoZCozKTp2b2lkIDAsST1pLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KGQqMyk6dm9pZCAwLEM9ZS5zaGFkb3dWb2x1bWUsTj1DP25ldyBGbG9hdDMyQXJyYXkoZCozKTp2b2lkIDAsVD0wLEY9UXYsYj1rdixHPUx2LE09bmV3IE9zKHIpLFE9TS5wcm9qZWN0KHIuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobixVQykseXYpLFU9ci5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKG4sVGYpO3IuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKFUsVSk7bGV0IGs9QWUuZnJvbUF4aXNBbmdsZShVLEEsRU8pLHk9bHQuZnJvbVF1YXRlcm5pb24oayxVdiksYz1udC5mcm9tRWxlbWVudHMoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSx3diksZz1udC5mcm9tRWxlbWVudHMoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLE51bWJlci5ORUdBVElWRV9JTkZJTklUWSx4diksVj10Lmxlbmd0aCxEPVYvMyoyO2ZvcihsZXQgeD0wO3g8Vjt4Kz0zKXtsZXQgSD14KzEsaj14KzIsWD1sLmZyb21BcnJheSh0LHgsVGYpLHR0O2lmKGkuc3Qpe2xldCBJdD1sdC5tdWx0aXBseUJ5VmVjdG9yKHksWCxtTyksZ3Q9TS5wcm9qZWN0KHIuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoSXQsVUMpLGZPKTtsLnN1YnRyYWN0KGd0LFEsZ3QpLEZzLng9KGd0LngrcykvKDIqcyksRnMueT0oZ3QueStvKS8oMipvKSxjLng9TWF0aC5taW4oRnMueCxjLngpLGMueT1NYXRoLm1pbihGcy55LGMueSksZy54PU1hdGgubWF4KEZzLngsZy54KSxnLnk9TWF0aC5tYXgoRnMueSxnLnkpLEVbVCtEXT1Gcy54LEVbVCsxK0RdPUZzLnksRVtUKytdPUZzLngsRVtUKytdPUZzLnl9WD1yLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoWCxYKSx0dD1sLmNsb25lKFgsbU8pLEY9ci5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoWCxGKSxDJiYoTlt4K1ZdPS1GLngsTltIK1ZdPS1GLnksTltqK1ZdPS1GLnopO2xldCBCPWwubXVsdGlwbHlCeVNjYWxhcihGLGEsTXYpO2lmKFg9bC5hZGQoWCxCLFgpLEI9bC5tdWx0aXBseUJ5U2NhbGFyKEYsaCxCKSx0dD1sLmFkZCh0dCxCLHR0KSxpLnBvc2l0aW9uJiYoZlt4K1ZdPXR0LngsZltIK1ZdPXR0LnksZltqK1ZdPXR0LnosZlt4XT1YLngsZltIXT1YLnksZltqXT1YLnopLGkubm9ybWFsfHxpLnRhbmdlbnR8fGkuYml0YW5nZW50KXtHPWwuY2xvbmUoRixHKTtsZXQgSXQ9bC5mcm9tQXJyYXkodCwoeCszKSVWLE12KTtsLnN1YnRyYWN0KEl0LFgsSXQpO2xldCBndD1sLnN1YnRyYWN0KHR0LFgsZk8pO0Y9bC5ub3JtYWxpemUobC5jcm9zcyhndCxJdCxGKSxGKSxpLm5vcm1hbCYmKF9beF09Ri54LF9bSF09Ri55LF9bal09Ri56LF9beCtWXT1GLngsX1tIK1ZdPUYueSxfW2orVl09Ri56KSxpLnRhbmdlbnQmJihiPWwubm9ybWFsaXplKGwuY3Jvc3MoRyxGLGIpLGIpLFJbeF09Yi54LFJbSF09Yi55LFJbal09Yi56LFJbeCtWXT1iLngsUlt4KzErVl09Yi55LFJbeCsyK1ZdPWIueiksaS5iaXRhbmdlbnQmJihJW3hdPUcueCxJW0hdPUcueSxJW2pdPUcueixJW3grVl09Ry54LElbSCtWXT1HLnksSVtqK1ZdPUcueil9fWlmKGkuc3Qpe1Y9RS5sZW5ndGg7Zm9yKGxldCB4PTA7eDxWO3grPTIpRVt4XT0oRVt4XS1jLngpLyhnLngtYy54KSxFW3grMV09KEVbeCsxXS1jLnkpLyhnLnktYy55KX1sZXQgdz1uZXcgd2U7aWYoaS5wb3NpdGlvbiYmKHcucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpmfSkpLGkuc3QmJih3LnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpFfSkpLGkubm9ybWFsJiYody5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSksaS50YW5nZW50JiYody50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpSfSkpLGkuYml0YW5nZW50JiYody5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkl9KSksQyYmKHcuZXh0cnVkZURpcmVjdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Tn0pKSxtKGUub2Zmc2V0QXR0cmlidXRlKSl7bGV0IHg9bmV3IFVpbnQ4QXJyYXkoZCk7aWYoZS5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApeD14LmZpbGwoMSwwLGQvMik7ZWxzZXtsZXQgSD1lLm9mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxO3g9eC5maWxsKEgpfXcuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6eH0pfXJldHVybiB3fWZ1bmN0aW9uIEtodCh0KXtsZXQgZT10Lmxlbmd0aC8zLGk9dGUuY3JlYXRlVHlwZWRBcnJheShlLGUqNiksbj0wO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBvPXMscj1zK2UsYT0obysxKSVlLGg9YStlO2lbbisrXT1vLGlbbisrXT1yLGlbbisrXT1hLGlbbisrXT1hLGlbbisrXT1yLGlbbisrXT1ofXJldHVybiBpfWZ1bmN0aW9uIFhodCh0KXtsZXQgZT10LmNlbnRlcixpPXQuZWxsaXBzb2lkLG49dC5zZW1pTWFqb3JBeGlzLHM9bC5tdWx0aXBseUJ5U2NhbGFyKGkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGUsVGYpLHQuaGVpZ2h0LFRmKTtEQy5jZW50ZXI9bC5hZGQoZSxzLERDLmNlbnRlciksREMucmFkaXVzPW4scz1sLm11bHRpcGx5QnlTY2FsYXIoaS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxzKSx0LmV4dHJ1ZGVkSGVpZ2h0LHMpLE1DLmNlbnRlcj1sLmFkZChlLHMsTUMuY2VudGVyKSxNQy5yYWRpdXM9bjtsZXQgbz15YS5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucyh0LCEwLCEwKSxyPW8ucG9zaXRpb25zLGE9by5udW1QdHMsaD1vLm91dGVyUG9zaXRpb25zLEE9TnQudW5pb24oREMsTUMpLGQ9UHYocix0LCEwKSxmPUp2KGEpLEU9Zi5sZW5ndGg7Zi5sZW5ndGg9RSoyO2xldCBfPXIubGVuZ3RoLzM7Zm9yKGxldCBiPTA7YjxFO2IrPTMpZltiK0VdPWZbYisyXStfLGZbYisxK0VdPWZbYisxXStfLGZbYisyK0VdPWZbYl0rXztsZXQgUj10ZS5jcmVhdGVUeXBlZEFycmF5KF8qMi8zLGYpLEk9bmV3IHNlKHthdHRyaWJ1dGVzOmQsaW5kaWNlczpSLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfSksQz16aHQoaCx0KTtmPUtodChoKTtsZXQgTj10ZS5jcmVhdGVUeXBlZEFycmF5KGgubGVuZ3RoKjIvMyxmKSxUPW5ldyBzZSh7YXR0cmlidXRlczpDLGluZGljZXM6TixwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFU30pLEY9d2kuY29tYmluZUluc3RhbmNlcyhbbmV3IExuKHtnZW9tZXRyeTpJfSksbmV3IExuKHtnZW9tZXRyeTpUfSldKTtyZXR1cm57Ym91bmRpbmdTcGhlcmU6QSxhdHRyaWJ1dGVzOkZbMF0uYXR0cmlidXRlcyxpbmRpY2VzOkZbMF0uaW5kaWNlc319ZnVuY3Rpb24ganYodCxlLGksbixzLG8scil7bGV0IGg9eWEuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnMoe2NlbnRlcjp0LHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmkscm90YXRpb246bixncmFudWxhcml0eTpzfSwhMSwhMCkub3V0ZXJQb3NpdGlvbnMsQT1oLmxlbmd0aC8zLGQ9bmV3IEFycmF5KEEpO2ZvcihsZXQgRT0wO0U8QTsrK0UpZFtFXT1sLmZyb21BcnJheShoLEUqMyk7bGV0IGY9WHQuZnJvbUNhcnRlc2lhbkFycmF5KGQsbyxyKTtyZXR1cm4gZi53aWR0aD5MLlBJJiYoZi5ub3J0aD1mLm5vcnRoPjA/TC5QSV9PVkVSX1RXTy1MLkVQU0lMT043OmYubm9ydGgsZi5zb3V0aD1mLnNvdXRoPDA/TC5FUFNJTE9ONy1MLlBJX09WRVJfVFdPOmYuc291dGgsZi5lYXN0PUwuUEksZi53ZXN0PS1MLlBJKSxmfWZ1bmN0aW9uIFZBKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LmNlbnRlcixpPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLG49dC5zZW1pTWFqb3JBeGlzLHM9dC5zZW1pTWlub3JBeGlzLG89Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSxyPVoodC52ZXJ0ZXhGb3JtYXQsT3QuREVGQVVMVCk7aWYocC5kZWZpbmVkKCJvcHRpb25zLmNlbnRlciIsZSkscC50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNYWpvckF4aXMiLG4pLHAudHlwZU9mLm51bWJlcigib3B0aW9ucy5zZW1pTWlub3JBeGlzIixzKSxuPHMpdGhyb3cgbmV3IFkoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYobzw9MCl0aHJvdyBuZXcgWSgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgYT1aKHQuaGVpZ2h0LDApLGg9Wih0LmV4dHJ1ZGVkSGVpZ2h0LGEpO3RoaXMuX2NlbnRlcj1sLmNsb25lKGUpLHRoaXMuX3NlbWlNYWpvckF4aXM9bix0aGlzLl9zZW1pTWlub3JBeGlzPXMsdGhpcy5fZWxsaXBzb2lkPW90LmNsb25lKGkpLHRoaXMuX3JvdGF0aW9uPVoodC5yb3RhdGlvbiwwKSx0aGlzLl9zdFJvdGF0aW9uPVoodC5zdFJvdGF0aW9uLDApLHRoaXMuX2hlaWdodD1NYXRoLm1heChoLGEpLHRoaXMuX2dyYW51bGFyaXR5PW8sdGhpcy5fdmVydGV4Rm9ybWF0PU90LmNsb25lKHIpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKGgsYSksdGhpcy5fc2hhZG93Vm9sdW1lPVoodC5zaGFkb3dWb2x1bWUsITEpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc2VHZW9tZXRyeSIsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3JlY3RhbmdsZT12b2lkIDAsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz12b2lkIDB9ZnVuY3Rpb24gcWh0KHQpe2xldCBlPS10Ll9zdFJvdGF0aW9uO2lmKGU9PT0wKXJldHVyblswLDAsMCwxLDEsMF07bGV0IG49eWEuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnMoe2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxyb3RhdGlvbjp0Ll9yb3RhdGlvbixncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eX0sITEsITApLm91dGVyUG9zaXRpb25zLHM9bi5sZW5ndGgvMyxvPW5ldyBBcnJheShzKTtmb3IobGV0IGg9MDtoPHM7KytoKW9baF09bC5mcm9tQXJyYXkobixoKjMpO2xldCByPXQuX2VsbGlwc29pZCxhPXQucmVjdGFuZ2xlO3JldHVybiBzZS5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyhvLGUscixhKX12YXIgVGYsbU8sZk8sTXYsRnMsVXYsSGh0LEVPLFF2LGt2LEx2LFVDLHl2LHd2LHh2LEFkLERDLE1DLEh2LHZ2LHp2LE9BLHdhLF9PPU8oKCk9PntfaSgpO1hlKCk7SHQoKTtyaSgpO2FlKCk7b2koKTtidCgpO210KCk7VnQoKTtkTygpO1ZlKCk7ekEoKTt5aSgpO2ppKCk7RW4oKTt1QSgpO2dvKCk7Z0EoKTtEaSgpO19lKCk7ZG4oKTtYaSgpOyRzKCk7cG4oKTtMcygpO1RmPW5ldyBsLG1PPW5ldyBsLGZPPW5ldyBsLE12PW5ldyBsLEZzPW5ldyBudCxVdj1uZXcgbHQsSGh0PW5ldyBsdCxFTz1uZXcgQWUsUXY9bmV3IGwsa3Y9bmV3IGwsTHY9bmV3IGwsVUM9bmV3IHV0LHl2PW5ldyBsLHd2PW5ldyBudCx4dj1uZXcgbnQ7QWQ9bmV3IGw7REM9bmV3IE50LE1DPW5ldyBOdDtWQS5wYWNrZWRMZW5ndGg9bC5wYWNrZWRMZW5ndGgrb3QucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aCs5O1ZBLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxsLnBhY2sodC5fY2VudGVyLGUsaSksaSs9bC5wYWNrZWRMZW5ndGgsb3QucGFjayh0Ll9lbGxpcHNvaWQsZSxpKSxpKz1vdC5wYWNrZWRMZW5ndGgsT3QucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxpKSxpKz1PdC5wYWNrZWRMZW5ndGgsZVtpKytdPXQuX3NlbWlNYWpvckF4aXMsZVtpKytdPXQuX3NlbWlNaW5vckF4aXMsZVtpKytdPXQuX3JvdGF0aW9uLGVbaSsrXT10Ll9zdFJvdGF0aW9uLGVbaSsrXT10Ll9oZWlnaHQsZVtpKytdPXQuX2dyYW51bGFyaXR5LGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2krK109dC5fc2hhZG93Vm9sdW1lPzE6MCxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtIdj1uZXcgbCx2dj1uZXcgb3QsenY9bmV3IE90LE9BPXtjZW50ZXI6SHYsZWxsaXBzb2lkOnZ2LHZlcnRleEZvcm1hdDp6dixzZW1pTWFqb3JBeGlzOnZvaWQgMCxzZW1pTWlub3JBeGlzOnZvaWQgMCxyb3RhdGlvbjp2b2lkIDAsc3RSb3RhdGlvbjp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07VkEudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj1sLnVucGFjayh0LGUsSHYpO2UrPWwucGFja2VkTGVuZ3RoO2xldCBzPW90LnVucGFjayh0LGUsdnYpO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgbz1PdC51bnBhY2sodCxlLHp2KTtlKz1PdC5wYWNrZWRMZW5ndGg7bGV0IHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdLEE9dFtlKytdLGQ9dFtlKytdLGY9dFtlKytdLEU9dFtlKytdLF89dFtlKytdPT09MSxSPXRbZV07cmV0dXJuIG0oaSk/KGkuX2NlbnRlcj1sLmNsb25lKG4saS5fY2VudGVyKSxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShvLGkuX3ZlcnRleEZvcm1hdCksaS5fc2VtaU1ham9yQXhpcz1yLGkuX3NlbWlNaW5vckF4aXM9YSxpLl9yb3RhdGlvbj1oLGkuX3N0Um90YXRpb249QSxpLl9oZWlnaHQ9ZCxpLl9ncmFudWxhcml0eT1mLGkuX2V4dHJ1ZGVkSGVpZ2h0PUUsaS5fc2hhZG93Vm9sdW1lPV8saS5fb2Zmc2V0QXR0cmlidXRlPVI9PT0tMT92b2lkIDA6UixpKTooT0EuaGVpZ2h0PWQsT0EuZXh0cnVkZWRIZWlnaHQ9RSxPQS5ncmFudWxhcml0eT1mLE9BLnN0Um90YXRpb249QSxPQS5yb3RhdGlvbj1oLE9BLnNlbWlNYWpvckF4aXM9cixPQS5zZW1pTWlub3JBeGlzPWEsT0Euc2hhZG93Vm9sdW1lPV8sT0Eub2Zmc2V0QXR0cmlidXRlPVI9PT0tMT92b2lkIDA6UixuZXcgVkEoT0EpKX07VkEuY29tcHV0ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgaT10LmNlbnRlcixuPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLHM9dC5zZW1pTWFqb3JBeGlzLG89dC5zZW1pTWlub3JBeGlzLHI9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSxhPVoodC5yb3RhdGlvbiwwKTtpZihwLmRlZmluZWQoIm9wdGlvbnMuY2VudGVyIixpKSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMuc2VtaU1ham9yQXhpcyIscykscC50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNaW5vckF4aXMiLG8pLHM8byl0aHJvdyBuZXcgWSgic2VtaU1ham9yQXhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc2VtaU1pbm9yQXhpcy4iKTtpZihyPD0wKXRocm93IG5ldyBZKCJncmFudWxhcml0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO3JldHVybiBqdihpLHMsbyxhLHIsbixlKX07VkEuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7aWYodC5fc2VtaU1ham9yQXhpczw9MHx8dC5fc2VtaU1pbm9yQXhpczw9MClyZXR1cm47bGV0IGU9dC5faGVpZ2h0LGk9dC5fZXh0cnVkZWRIZWlnaHQsbj0hTC5lcXVhbHNFcHNpbG9uKGUsaSwwLEwuRVBTSUxPTjIpO3QuX2NlbnRlcj10Ll9lbGxpcHNvaWQuc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0Ll9jZW50ZXIsdC5fY2VudGVyKTtsZXQgcz17Y2VudGVyOnQuX2NlbnRlcixzZW1pTWFqb3JBeGlzOnQuX3NlbWlNYWpvckF4aXMsc2VtaU1pbm9yQXhpczp0Ll9zZW1pTWlub3JBeGlzLGVsbGlwc29pZDp0Ll9lbGxpcHNvaWQscm90YXRpb246dC5fcm90YXRpb24saGVpZ2h0OmUsZ3JhbnVsYXJpdHk6dC5fZ3JhbnVsYXJpdHksdmVydGV4Rm9ybWF0OnQuX3ZlcnRleEZvcm1hdCxzdFJvdGF0aW9uOnQuX3N0Um90YXRpb259LG87aWYobilzLmV4dHJ1ZGVkSGVpZ2h0PWkscy5zaGFkb3dWb2x1bWU9dC5fc2hhZG93Vm9sdW1lLHMub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSxvPVhodChzKTtlbHNlIGlmKG89dmh0KHMpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IHI9by5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsYT10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxoPW5ldyBVaW50OEFycmF5KHIvMykuZmlsbChhKTtvLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6aH0pfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6by5hdHRyaWJ1dGVzLGluZGljZXM6by5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm8uYm91bmRpbmdTcGhlcmUsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtWQS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuX2dyYW51bGFyaXR5LHM9dC5fZWxsaXBzb2lkLG89ZShuLHMpLHI9aShuLHMpO3JldHVybiBuZXcgVkEoe2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxlbGxpcHNvaWQ6cyxyb3RhdGlvbjp0Ll9yb3RhdGlvbixzdFJvdGF0aW9uOnQuX3N0Um90YXRpb24sZ3JhbnVsYXJpdHk6bixleHRydWRlZEhlaWdodDpvLGhlaWdodDpyLHZlcnRleEZvcm1hdDpPdC5QT1NJVElPTl9PTkxZLHNoYWRvd1ZvbHVtZTohMH0pfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWQS5wcm90b3R5cGUse3JlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fcmVjdGFuZ2xlKXx8KHRoaXMuX3JlY3RhbmdsZT1qdih0aGlzLl9jZW50ZXIsdGhpcy5fc2VtaU1ham9yQXhpcyx0aGlzLl9zZW1pTWlub3JBeGlzLHRoaXMuX3JvdGF0aW9uLHRoaXMuX2dyYW51bGFyaXR5LHRoaXMuX2VsbGlwc29pZCkpLHRoaXMuX3JlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMpfHwodGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz1xaHQodGhpcykpLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHN9fX0pO3dhPVZBfSk7ZnVuY3Rpb24gVGgodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucmFkaXVzO3AudHlwZU9mLm51bWJlcigicmFkaXVzIixlKTtsZXQgaT17Y2VudGVyOnQuY2VudGVyLHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmUsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHksdmVydGV4Rm9ybWF0OnQudmVydGV4Rm9ybWF0LHN0Um90YXRpb246dC5zdFJvdGF0aW9uLHNoYWRvd1ZvbHVtZTp0LnNoYWRvd1ZvbHVtZX07dGhpcy5fZWxsaXBzZUdlb21ldHJ5PW5ldyB3YShpKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDaXJjbGVHZW9tZXRyeSJ9dmFyICRodCxObyxSTyxLdj1PKCgpPT57SHQoKTthZSgpO2J0KCk7bXQoKTtfTygpO1ZlKCk7THMoKTtUaC5wYWNrZWRMZW5ndGg9d2EucGFja2VkTGVuZ3RoO1RoLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx3YS5wYWNrKHQuX2VsbGlwc2VHZW9tZXRyeSxlLGkpfTskaHQ9bmV3IHdhKHtjZW50ZXI6bmV3IGwsc2VtaU1ham9yQXhpczoxLHNlbWlNaW5vckF4aXM6MX0pLE5vPXtjZW50ZXI6bmV3IGwscmFkaXVzOnZvaWQgMCxlbGxpcHNvaWQ6b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLGhlaWdodDp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCx2ZXJ0ZXhGb3JtYXQ6bmV3IE90LHN0Um90YXRpb246dm9pZCAwLHNlbWlNYWpvckF4aXM6dm9pZCAwLHNlbWlNaW5vckF4aXM6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDB9O1RoLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7bGV0IG49d2EudW5wYWNrKHQsZSwkaHQpO3JldHVybiBOby5jZW50ZXI9bC5jbG9uZShuLl9jZW50ZXIsTm8uY2VudGVyKSxOby5lbGxpcHNvaWQ9b3QuY2xvbmUobi5fZWxsaXBzb2lkLE5vLmVsbGlwc29pZCksTm8uaGVpZ2h0PW4uX2hlaWdodCxOby5leHRydWRlZEhlaWdodD1uLl9leHRydWRlZEhlaWdodCxOby5ncmFudWxhcml0eT1uLl9ncmFudWxhcml0eSxOby52ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUobi5fdmVydGV4Rm9ybWF0LE5vLnZlcnRleEZvcm1hdCksTm8uc3RSb3RhdGlvbj1uLl9zdFJvdGF0aW9uLE5vLnNoYWRvd1ZvbHVtZT1uLl9zaGFkb3dWb2x1bWUsbShpKT8oTm8uc2VtaU1ham9yQXhpcz1uLl9zZW1pTWFqb3JBeGlzLE5vLnNlbWlNaW5vckF4aXM9bi5fc2VtaU1pbm9yQXhpcyxpLl9lbGxpcHNlR2VvbWV0cnk9bmV3IHdhKE5vKSxpKTooTm8ucmFkaXVzPW4uX3NlbWlNYWpvckF4aXMsbmV3IFRoKE5vKSl9O1RoLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiB3YS5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNlR2VvbWV0cnkpfTtUaC5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuX2VsbGlwc2VHZW9tZXRyeS5fZ3JhbnVsYXJpdHkscz10Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCxvPWUobixzKSxyPWkobixzKTtyZXR1cm4gbmV3IFRoKHtjZW50ZXI6dC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXIscmFkaXVzOnQuX2VsbGlwc2VHZW9tZXRyeS5fc2VtaU1ham9yQXhpcyxlbGxpcHNvaWQ6cyxzdFJvdGF0aW9uOnQuX2VsbGlwc2VHZW9tZXRyeS5fc3RSb3RhdGlvbixncmFudWxhcml0eTpuLGV4dHJ1ZGVkSGVpZ2h0Om8saGVpZ2h0OnIsdmVydGV4Rm9ybWF0Ok90LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRoLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzZUdlb21ldHJ5LnJlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNlR2VvbWV0cnkudGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7Uk89VGh9KTt2YXIgWk89e307SGUoWk8se2RlZmF1bHQ6KCk9PmVjdH0pO2Z1bmN0aW9uIHRjdCh0LGUpe3JldHVybiBtKGUpJiYodD1STy51bnBhY2sodCxlKSksdC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXI9bC5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2NlbnRlciksdC5fZWxsaXBzZUdlb21ldHJ5Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzZUdlb21ldHJ5Ll9lbGxpcHNvaWQpLFJPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBlY3QsSU89TygoKT0+e0h0KCk7S3YoKTttdCgpO1ZlKCk7ZWN0PXRjdH0pO2Z1bmN0aW9uIGljdCh0KXtsZXQgZT10LmNlbnRlcjtoZD1sLm11bHRpcGx5QnlTY2FsYXIodC5lbGxpcHNvaWQuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGUsaGQpLHQuaGVpZ2h0LGhkKSxoZD1sLmFkZChlLGhkLGhkKTtsZXQgaT1uZXcgTnQoaGQsdC5zZW1pTWFqb3JBeGlzKSxuPXlhLmNvbXB1dGVFbGxpcHNlUG9zaXRpb25zKHQsITEsITApLm91dGVyUG9zaXRpb25zLHM9bmV3IHdlKHtwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnlhLnJhaXNlUG9zaXRpb25zVG9IZWlnaHQobix0LCExKX0pfSksbz1uLmxlbmd0aC8zLHI9dGUuY3JlYXRlVHlwZWRBcnJheShvLG8qMiksYT0wO2ZvcihsZXQgaD0wO2g8bzsrK2gpclthKytdPWgsclthKytdPShoKzEpJW87cmV0dXJue2JvdW5kaW5nU3BoZXJlOmksYXR0cmlidXRlczpzLGluZGljZXM6cn19ZnVuY3Rpb24gbmN0KHQpe2xldCBlPXQuY2VudGVyLGk9dC5lbGxpcHNvaWQsbj10LnNlbWlNYWpvckF4aXMscz1sLm11bHRpcGx5QnlTY2FsYXIoaS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxYdiksdC5oZWlnaHQsWHYpO1FDLmNlbnRlcj1sLmFkZChlLHMsUUMuY2VudGVyKSxRQy5yYWRpdXM9bixzPWwubXVsdGlwbHlCeVNjYWxhcihpLmdlb2RldGljU3VyZmFjZU5vcm1hbChlLHMpLHQuZXh0cnVkZWRIZWlnaHQscyksa0MuY2VudGVyPWwuYWRkKGUscyxrQy5jZW50ZXIpLGtDLnJhZGl1cz1uO2xldCBvPXlhLmNvbXB1dGVFbGxpcHNlUG9zaXRpb25zKHQsITEsITApLm91dGVyUG9zaXRpb25zLHI9bmV3IHdlKHtwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnlhLnJhaXNlUG9zaXRpb25zVG9IZWlnaHQobyx0LCEwKX0pfSk7bz1yLnBvc2l0aW9uLnZhbHVlcztsZXQgYT1OdC51bmlvbihRQyxrQyksaD1vLmxlbmd0aC8zO2lmKG0odC5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgUj1uZXcgVWludDhBcnJheShoKTtpZih0Lm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUClSPVIuZmlsbCgxLDAsaC8yKTtlbHNle2xldCBJPXQub2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjE7Uj1SLmZpbGwoSSl9ci5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpSfSl9bGV0IEE9Wih0Lm51bWJlck9mVmVydGljYWxMaW5lcywxNik7QT1MLmNsYW1wKEEsMCxoLzIpO2xldCBkPXRlLmNyZWF0ZVR5cGVkQXJyYXkoaCxoKjIrQSoyKTtoLz0yO2xldCBmPTAsRTtmb3IoRT0wO0U8aDsrK0UpZFtmKytdPUUsZFtmKytdPShFKzEpJWgsZFtmKytdPUUraCxkW2YrK109KEUrMSklaCtoO2xldCBfO2lmKEE+MCl7bGV0IFI9TWF0aC5taW4oQSxoKTtfPU1hdGgucm91bmQoaC9SKTtsZXQgST1NYXRoLm1pbihfKkEsaCk7Zm9yKEU9MDtFPEk7RSs9XylkW2YrK109RSxkW2YrK109RStofXJldHVybntib3VuZGluZ1NwaGVyZTphLGF0dHJpYnV0ZXM6cixpbmRpY2VzOmR9fWZ1bmN0aW9uIE5mKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LmNlbnRlcixpPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLG49dC5zZW1pTWFqb3JBeGlzLHM9dC5zZW1pTWlub3JBeGlzLG89Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKTtpZighbShlKSl0aHJvdyBuZXcgWSgiY2VudGVyIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJzZW1pTWFqb3JBeGlzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHMpKXRocm93IG5ldyBZKCJzZW1pTWlub3JBeGlzIGlzIHJlcXVpcmVkLiIpO2lmKG48cyl0aHJvdyBuZXcgWSgic2VtaU1ham9yQXhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc2VtaU1pbm9yQXhpcy4iKTtpZihvPD0wKXRocm93IG5ldyBZKCJncmFudWxhcml0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2xldCByPVoodC5oZWlnaHQsMCksYT1aKHQuZXh0cnVkZWRIZWlnaHQscik7dGhpcy5fY2VudGVyPWwuY2xvbmUoZSksdGhpcy5fc2VtaU1ham9yQXhpcz1uLHRoaXMuX3NlbWlNaW5vckF4aXM9cyx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoaSksdGhpcy5fcm90YXRpb249Wih0LnJvdGF0aW9uLDApLHRoaXMuX2hlaWdodD1NYXRoLm1heChhLHIpLHRoaXMuX2dyYW51bGFyaXR5PW8sdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oYSxyKSx0aGlzLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9TWF0aC5tYXgoWih0Lm51bWJlck9mVmVydGljYWxMaW5lcywxNiksMCksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc2VPdXRsaW5lR2VvbWV0cnkifXZhciBYdixoZCxRQyxrQyxxdiwkdixOaCx4YSxwTz1PKCgpPT57X2koKTtIdCgpO29pKCk7YnQoKTttdCgpO1Z0KCk7ZE8oKTtWZSgpO3lpKCk7amkoKTtFbigpO2dvKCk7RGkoKTtfZSgpO1hpKCk7WHY9bmV3IGwsaGQ9bmV3IGw7UUM9bmV3IE50LGtDPW5ldyBOdDtOZi5wYWNrZWRMZW5ndGg9bC5wYWNrZWRMZW5ndGgrb3QucGFja2VkTGVuZ3RoKzg7TmYucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIGk9WihpLDApLGwucGFjayh0Ll9jZW50ZXIsZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxlW2krK109dC5fc2VtaU1ham9yQXhpcyxlW2krK109dC5fc2VtaU1pbm9yQXhpcyxlW2krK109dC5fcm90YXRpb24sZVtpKytdPXQuX2hlaWdodCxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbaSsrXT10Ll9udW1iZXJPZlZlcnRpY2FsTGluZXMsZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07cXY9bmV3IGwsJHY9bmV3IG90LE5oPXtjZW50ZXI6cXYsZWxsaXBzb2lkOiR2LHNlbWlNYWpvckF4aXM6dm9pZCAwLHNlbWlNaW5vckF4aXM6dm9pZCAwLHJvdGF0aW9uOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtOZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuPWwudW5wYWNrKHQsZSxxdik7ZSs9bC5wYWNrZWRMZW5ndGg7bGV0IHM9b3QudW5wYWNrKHQsZSwkdik7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPXRbZSsrXSxyPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXSxmPXRbZSsrXSxFPXRbZV07cmV0dXJuIG0oaSk/KGkuX2NlbnRlcj1sLmNsb25lKG4saS5fY2VudGVyKSxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX3NlbWlNYWpvckF4aXM9byxpLl9zZW1pTWlub3JBeGlzPXIsaS5fcm90YXRpb249YSxpLl9oZWlnaHQ9aCxpLl9ncmFudWxhcml0eT1BLGkuX2V4dHJ1ZGVkSGVpZ2h0PWQsaS5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzPWYsaS5fb2Zmc2V0QXR0cmlidXRlPUU9PT0tMT92b2lkIDA6RSxpKTooTmguaGVpZ2h0PWgsTmguZXh0cnVkZWRIZWlnaHQ9ZCxOaC5ncmFudWxhcml0eT1BLE5oLnJvdGF0aW9uPWEsTmguc2VtaU1ham9yQXhpcz1vLE5oLnNlbWlNaW5vckF4aXM9cixOaC5udW1iZXJPZlZlcnRpY2FsTGluZXM9ZixOaC5vZmZzZXRBdHRyaWJ1dGU9RT09PS0xP3ZvaWQgMDpFLG5ldyBOZihOaCkpfTtOZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtpZih0Ll9zZW1pTWFqb3JBeGlzPD0wfHx0Ll9zZW1pTWlub3JBeGlzPD0wKXJldHVybjtsZXQgZT10Ll9oZWlnaHQsaT10Ll9leHRydWRlZEhlaWdodCxuPSFMLmVxdWFsc0Vwc2lsb24oZSxpLDAsTC5FUFNJTE9OMik7dC5fY2VudGVyPXQuX2VsbGlwc29pZC5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQuX2NlbnRlcix0Ll9jZW50ZXIpO2xldCBzPXtjZW50ZXI6dC5fY2VudGVyLHNlbWlNYWpvckF4aXM6dC5fc2VtaU1ham9yQXhpcyxzZW1pTWlub3JBeGlzOnQuX3NlbWlNaW5vckF4aXMsZWxsaXBzb2lkOnQuX2VsbGlwc29pZCxyb3RhdGlvbjp0Ll9yb3RhdGlvbixoZWlnaHQ6ZSxncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eSxudW1iZXJPZlZlcnRpY2FsTGluZXM6dC5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzfSxvO2lmKG4pcy5leHRydWRlZEhlaWdodD1pLHMub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSxvPW5jdChzKTtlbHNlIGlmKG89aWN0KHMpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IHI9by5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsYT10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxoPW5ldyBVaW50OEFycmF5KHIvMykuZmlsbChhKTtvLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6aH0pfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6by5hdHRyaWJ1dGVzLGluZGljZXM6by5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6by5ib3VuZGluZ1NwaGVyZSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O3hhPU5mfSk7ZnVuY3Rpb24gYmYodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucmFkaXVzO3AudHlwZU9mLm51bWJlcigicmFkaXVzIixlKTtsZXQgaT17Y2VudGVyOnQuY2VudGVyLHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmUsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHksbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzfTt0aGlzLl9lbGxpcHNlR2VvbWV0cnk9bmV3IHhhKGkpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNpcmNsZU91dGxpbmVHZW9tZXRyeSJ9dmFyIHNjdCxUcix1Tyx0ej1PKCgpPT57SHQoKTthZSgpO2J0KCk7bXQoKTtwTygpO1ZlKCk7YmYucGFja2VkTGVuZ3RoPXhhLnBhY2tlZExlbmd0aDtiZi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseGEucGFjayh0Ll9lbGxpcHNlR2VvbWV0cnksZSxpKX07c2N0PW5ldyB4YSh7Y2VudGVyOm5ldyBsLHNlbWlNYWpvckF4aXM6MSxzZW1pTWlub3JBeGlzOjF9KSxUcj17Y2VudGVyOm5ldyBsLHJhZGl1czp2b2lkIDAsZWxsaXBzb2lkOm90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnZvaWQgMCxzZW1pTWFqb3JBeGlzOnZvaWQgMCxzZW1pTWlub3JBeGlzOnZvaWQgMH07YmYudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj14YS51bnBhY2sodCxlLHNjdCk7cmV0dXJuIFRyLmNlbnRlcj1sLmNsb25lKG4uX2NlbnRlcixUci5jZW50ZXIpLFRyLmVsbGlwc29pZD1vdC5jbG9uZShuLl9lbGxpcHNvaWQsVHIuZWxsaXBzb2lkKSxUci5oZWlnaHQ9bi5faGVpZ2h0LFRyLmV4dHJ1ZGVkSGVpZ2h0PW4uX2V4dHJ1ZGVkSGVpZ2h0LFRyLmdyYW51bGFyaXR5PW4uX2dyYW51bGFyaXR5LFRyLm51bWJlck9mVmVydGljYWxMaW5lcz1uLl9udW1iZXJPZlZlcnRpY2FsTGluZXMsbShpKT8oVHIuc2VtaU1ham9yQXhpcz1uLl9zZW1pTWFqb3JBeGlzLFRyLnNlbWlNaW5vckF4aXM9bi5fc2VtaU1pbm9yQXhpcyxpLl9lbGxpcHNlR2VvbWV0cnk9bmV3IHhhKFRyKSxpKTooVHIucmFkaXVzPW4uX3NlbWlNYWpvckF4aXMsbmV3IGJmKFRyKSl9O2JmLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiB4YS5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNlR2VvbWV0cnkpfTt1Tz1iZn0pO3ZhciBDTz17fTtIZShDTyx7ZGVmYXVsdDooKT0+cmN0fSk7ZnVuY3Rpb24gb2N0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXVPLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNlR2VvbWV0cnkuX2NlbnRlcj1sLmNsb25lKHQuX2VsbGlwc2VHZW9tZXRyeS5fY2VudGVyKSx0Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCksdU8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIHJjdCxnTz1PKCgpPT57SHQoKTt0eigpO210KCk7VmUoKTtyY3Q9b2N0fSk7ZnVuY3Rpb24gb3oodCxlLGksbixzKXtsZXQgbz1sLnN1YnRyYWN0KHQsZSxhY3QpLHI9bC5kb3QoaSxvKSxhPWwuZG90KG4sbyk7cmV0dXJuIG50LmZyb21FbGVtZW50cyhyLGEscyl9dmFyIGxSLGFjdCxleixpeixueixzeixGZixUTz1PKCgpPT57WGUoKTtIdCgpO2FlKCk7ZG4oKTtKbCgpO2xSPXt9LGFjdD1uZXcgbCxlej1uZXcgbCxpej1uZXcgbCxuej1uZXcgbCxzej1uZXcgenM7bFIudmFsaWRPdXRsaW5lPWZ1bmN0aW9uKHQpe3AuZGVmaW5lZCgicG9zaXRpb25zIix0KTtsZXQgaT16cy5mcm9tUG9pbnRzKHQsc3opLmhhbGZBeGVzLG49bHQuZ2V0Q29sdW1uKGksMCxleikscz1sdC5nZXRDb2x1bW4oaSwxLGl6KSxvPWx0LmdldENvbHVtbihpLDIsbnopLHI9bC5tYWduaXR1ZGUobiksYT1sLm1hZ25pdHVkZShzKSxoPWwubWFnbml0dWRlKG8pO3JldHVybiEocj09PTAmJihhPT09MHx8aD09PTApfHxhPT09MCYmaD09PTApfTtsUi5jb21wdXRlUHJvamVjdFRvMkRBcmd1bWVudHM9ZnVuY3Rpb24odCxlLGksbil7cC5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpLHAuZGVmaW5lZCgiY2VudGVyUmVzdWx0IixlKSxwLmRlZmluZWQoInBsYW5lQXhpczFSZXN1bHQiLGkpLHAuZGVmaW5lZCgicGxhbmVBeGlzMlJlc3VsdCIsbik7bGV0IHM9enMuZnJvbVBvaW50cyh0LHN6KSxvPXMuaGFsZkF4ZXMscj1sdC5nZXRDb2x1bW4obywwLGV6KSxhPWx0LmdldENvbHVtbihvLDEsaXopLGg9bHQuZ2V0Q29sdW1uKG8sMixueiksQT1sLm1hZ25pdHVkZShyKSxkPWwubWFnbml0dWRlKGEpLGY9bC5tYWduaXR1ZGUoaCksRT1NYXRoLm1pbihBLGQsZik7aWYoQT09PTAmJihkPT09MHx8Zj09PTApfHxkPT09MCYmZj09PTApcmV0dXJuITE7bGV0IF8sUjtyZXR1cm4oRT09PWR8fEU9PT1mKSYmKF89ciksRT09PUE/Xz1hOkU9PT1mJiYoUj1hKSwoRT09PUF8fEU9PT1kKSYmKFI9aCksbC5ub3JtYWxpemUoXyxpKSxsLm5vcm1hbGl6ZShSLG4pLGwuY2xvbmUocy5jZW50ZXIsZSksITB9O2xSLmNyZWF0ZVByb2plY3RQb2ludHNUbzJERnVuY3Rpb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBmdW5jdGlvbihuKXtsZXQgcz1uZXcgQXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXNbb109b3oobltvXSx0LGUsaSk7cmV0dXJuIHN9fTtsUi5jcmVhdGVQcm9qZWN0UG9pbnRUbzJERnVuY3Rpb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBmdW5jdGlvbihuLHMpe3JldHVybiBveihuLHQsZSxpLHMpfX07RmY9bFJ9KTt2YXIgY3o9dHMoKE5SZSxZTyk9PnsidXNlIHN0cmljdCI7WU8uZXhwb3J0cz13QztZTy5leHBvcnRzLmRlZmF1bHQ9d0M7ZnVuY3Rpb24gd0ModCxlLGkpe2k9aXx8Mjt2YXIgbj1lJiZlLmxlbmd0aCxzPW4/ZVswXSppOnQubGVuZ3RoLG89YXoodCwwLHMsaSwhMCkscj1bXTtpZighb3x8by5uZXh0PT09by5wcmV2KXJldHVybiByO3ZhciBhLGgsQSxkLGYsRSxfO2lmKG4mJihvPWRjdCh0LGUsbyxpKSksdC5sZW5ndGg+ODAqaSl7YT1BPXRbMF0saD1kPXRbMV07Zm9yKHZhciBSPWk7UjxzO1IrPWkpZj10W1JdLEU9dFtSKzFdLGY8YSYmKGE9ZiksRTxoJiYoaD1FKSxmPkEmJihBPWYpLEU+ZCYmKGQ9RSk7Xz1NYXRoLm1heChBLWEsZC1oKSxfPV8hPT0wPzMyNzY3L186MH1yZXR1cm4gZFIobyxyLGksYSxoLF8sMCkscn1mdW5jdGlvbiBheih0LGUsaSxuLHMpe3ZhciBvLHI7aWYocz09PUZPKHQsZSxpLG4pPjApZm9yKG89ZTtvPGk7bys9bilyPXJ6KG8sdFtvXSx0W28rMV0scik7ZWxzZSBmb3Iobz1pLW47bz49ZTtvLT1uKXI9cnoobyx0W29dLHRbbysxXSxyKTtyZXR1cm4gciYmeEMocixyLm5leHQpJiYoZlIocikscj1yLm5leHQpLHJ9ZnVuY3Rpb24gY2QodCxlKXtpZighdClyZXR1cm4gdDtlfHwoZT10KTt2YXIgaT10LG47ZG8gaWYobj0hMSwhaS5zdGVpbmVyJiYoeEMoaSxpLm5leHQpfHxhcyhpLnByZXYsaSxpLm5leHQpPT09MCkpe2lmKGZSKGkpLGk9ZT1pLnByZXYsaT09PWkubmV4dClicmVhaztuPSEwfWVsc2UgaT1pLm5leHQ7d2hpbGUobnx8aSE9PWUpO3JldHVybiBlfWZ1bmN0aW9uIGRSKHQsZSxpLG4scyxvLHIpe2lmKHQpeyFyJiZvJiZSY3QodCxuLHMsbyk7Zm9yKHZhciBhPXQsaCxBO3QucHJldiE9PXQubmV4dDspe2lmKGg9dC5wcmV2LEE9dC5uZXh0LG8/aGN0KHQsbixzLG8pOkFjdCh0KSl7ZS5wdXNoKGguaS9pfDApLGUucHVzaCh0LmkvaXwwKSxlLnB1c2goQS5pL2l8MCksZlIodCksdD1BLm5leHQsYT1BLm5leHQ7Y29udGludWV9aWYodD1BLHQ9PT1hKXtyP3I9PT0xPyh0PWNjdChjZCh0KSxlLGkpLGRSKHQsZSxpLG4scyxvLDIpKTpyPT09MiYmbGN0KHQsZSxpLG4scyxvKTpkUihjZCh0KSxlLGksbixzLG8sMSk7YnJlYWt9fX19ZnVuY3Rpb24gQWN0KHQpe3ZhciBlPXQucHJldixpPXQsbj10Lm5leHQ7aWYoYXMoZSxpLG4pPj0wKXJldHVybiExO2Zvcih2YXIgcz1lLngsbz1pLngscj1uLngsYT1lLnksaD1pLnksQT1uLnksZD1zPG8/czxyP3M6cjpvPHI/bzpyLGY9YTxoP2E8QT9hOkE6aDxBP2g6QSxFPXM+bz9zPnI/czpyOm8+cj9vOnIsXz1hPmg/YT5BP2E6QTpoPkE/aDpBLFI9bi5uZXh0O1IhPT1lOyl7aWYoUi54Pj1kJiZSLng8PUUmJlIueT49ZiYmUi55PD1fJiZZZihzLGEsbyxoLHIsQSxSLngsUi55KSYmYXMoUi5wcmV2LFIsUi5uZXh0KT49MClyZXR1cm4hMTtSPVIubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiBoY3QodCxlLGksbil7dmFyIHM9dC5wcmV2LG89dCxyPXQubmV4dDtpZihhcyhzLG8scik+PTApcmV0dXJuITE7Zm9yKHZhciBhPXMueCxoPW8ueCxBPXIueCxkPXMueSxmPW8ueSxFPXIueSxfPWE8aD9hPEE/YTpBOmg8QT9oOkEsUj1kPGY/ZDxFP2Q6RTpmPEU/ZjpFLEk9YT5oP2E+QT9hOkE6aD5BP2g6QSxDPWQ+Zj9kPkU/ZDpFOmY+RT9mOkUsTj1OTyhfLFIsZSxpLG4pLFQ9Tk8oSSxDLGUsaSxuKSxGPXQucHJldlosYj10Lm5leHRaO0YmJkYuej49TiYmYiYmYi56PD1UOyl7aWYoRi54Pj1fJiZGLng8PUkmJkYueT49UiYmRi55PD1DJiZGIT09cyYmRiE9PXImJllmKGEsZCxoLGYsQSxFLEYueCxGLnkpJiZhcyhGLnByZXYsRixGLm5leHQpPj0wfHwoRj1GLnByZXZaLGIueD49XyYmYi54PD1JJiZiLnk+PVImJmIueTw9QyYmYiE9PXMmJmIhPT1yJiZZZihhLGQsaCxmLEEsRSxiLngsYi55KSYmYXMoYi5wcmV2LGIsYi5uZXh0KT49MCkpcmV0dXJuITE7Yj1iLm5leHRafWZvcig7RiYmRi56Pj1OOyl7aWYoRi54Pj1fJiZGLng8PUkmJkYueT49UiYmRi55PD1DJiZGIT09cyYmRiE9PXImJllmKGEsZCxoLGYsQSxFLEYueCxGLnkpJiZhcyhGLnByZXYsRixGLm5leHQpPj0wKXJldHVybiExO0Y9Ri5wcmV2Wn1mb3IoO2ImJmIuejw9VDspe2lmKGIueD49XyYmYi54PD1JJiZiLnk+PVImJmIueTw9QyYmYiE9PXMmJmIhPT1yJiZZZihhLGQsaCxmLEEsRSxiLngsYi55KSYmYXMoYi5wcmV2LGIsYi5uZXh0KT49MClyZXR1cm4hMTtiPWIubmV4dFp9cmV0dXJuITB9ZnVuY3Rpb24gY2N0KHQsZSxpKXt2YXIgbj10O2Rve3ZhciBzPW4ucHJldixvPW4ubmV4dC5uZXh0OyF4QyhzLG8pJiZBeihzLG4sbi5uZXh0LG8pJiZtUihzLG8pJiZtUihvLHMpJiYoZS5wdXNoKHMuaS9pfDApLGUucHVzaChuLmkvaXwwKSxlLnB1c2goby5pL2l8MCksZlIobiksZlIobi5uZXh0KSxuPXQ9byksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBjZChuKX1mdW5jdGlvbiBsY3QodCxlLGksbixzLG8pe3ZhciByPXQ7ZG97Zm9yKHZhciBhPXIubmV4dC5uZXh0O2EhPT1yLnByZXY7KXtpZihyLmkhPT1hLmkmJnBjdChyLGEpKXt2YXIgaD1oeihyLGEpO3I9Y2QocixyLm5leHQpLGg9Y2QoaCxoLm5leHQpLGRSKHIsZSxpLG4scyxvLDApLGRSKGgsZSxpLG4scyxvLDApO3JldHVybn1hPWEubmV4dH1yPXIubmV4dH13aGlsZShyIT09dCl9ZnVuY3Rpb24gZGN0KHQsZSxpLG4pe3ZhciBzPVtdLG8scixhLGgsQTtmb3Iobz0wLHI9ZS5sZW5ndGg7bzxyO28rKylhPWVbb10qbixoPW88ci0xP2VbbysxXSpuOnQubGVuZ3RoLEE9YXoodCxhLGgsbiwhMSksQT09PUEubmV4dCYmKEEuc3RlaW5lcj0hMCkscy5wdXNoKEljdChBKSk7Zm9yKHMuc29ydChtY3QpLG89MDtvPHMubGVuZ3RoO28rKylpPWZjdChzW29dLGkpO3JldHVybiBpfWZ1bmN0aW9uIG1jdCh0LGUpe3JldHVybiB0LngtZS54fWZ1bmN0aW9uIGZjdCh0LGUpe3ZhciBpPUVjdCh0LGUpO2lmKCFpKXJldHVybiBlO3ZhciBuPWh6KGksdCk7cmV0dXJuIGNkKG4sbi5uZXh0KSxjZChpLGkubmV4dCl9ZnVuY3Rpb24gRWN0KHQsZSl7dmFyIGk9ZSxuPXQueCxzPXQueSxvPS0xLzAscjtkb3tpZihzPD1pLnkmJnM+PWkubmV4dC55JiZpLm5leHQueSE9PWkueSl7dmFyIGE9aS54KyhzLWkueSkqKGkubmV4dC54LWkueCkvKGkubmV4dC55LWkueSk7aWYoYTw9biYmYT5vJiYobz1hLHI9aS54PGkubmV4dC54P2k6aS5uZXh0LGE9PT1uKSlyZXR1cm4gcn1pPWkubmV4dH13aGlsZShpIT09ZSk7aWYoIXIpcmV0dXJuIG51bGw7dmFyIGg9cixBPXIueCxkPXIueSxmPTEvMCxFO2k9cjtkbyBuPj1pLngmJmkueD49QSYmbiE9PWkueCYmWWYoczxkP246byxzLEEsZCxzPGQ/bzpuLHMsaS54LGkueSkmJihFPU1hdGguYWJzKHMtaS55KS8obi1pLngpLG1SKGksdCkmJihFPGZ8fEU9PT1mJiYoaS54PnIueHx8aS54PT09ci54JiZfY3QocixpKSkpJiYocj1pLGY9RSkpLGk9aS5uZXh0O3doaWxlKGkhPT1oKTtyZXR1cm4gcn1mdW5jdGlvbiBfY3QodCxlKXtyZXR1cm4gYXModC5wcmV2LHQsZS5wcmV2KTwwJiZhcyhlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gUmN0KHQsZSxpLG4pe3ZhciBzPXQ7ZG8gcy56PT09MCYmKHMuej1OTyhzLngscy55LGUsaSxuKSkscy5wcmV2Wj1zLnByZXYscy5uZXh0Wj1zLm5leHQscz1zLm5leHQ7d2hpbGUocyE9PXQpO3MucHJldloubmV4dFo9bnVsbCxzLnByZXZaPW51bGwsWmN0KHMpfWZ1bmN0aW9uIFpjdCh0KXt2YXIgZSxpLG4scyxvLHIsYSxoLEE9MTtkb3tmb3IoaT10LHQ9bnVsbCxvPW51bGwscj0wO2k7KXtmb3IocisrLG49aSxhPTAsZT0wO2U8QSYmKGErKyxuPW4ubmV4dFosISFuKTtlKyspO2ZvcihoPUE7YT4wfHxoPjAmJm47KWEhPT0wJiYoaD09PTB8fCFufHxpLno8PW4ueik/KHM9aSxpPWkubmV4dFosYS0tKToocz1uLG49bi5uZXh0WixoLS0pLG8/by5uZXh0Wj1zOnQ9cyxzLnByZXZaPW8sbz1zO2k9bn1vLm5leHRaPW51bGwsQSo9Mn13aGlsZShyPjEpO3JldHVybiB0fWZ1bmN0aW9uIE5PKHQsZSxpLG4scyl7cmV0dXJuIHQ9KHQtaSkqc3wwLGU9KGUtbikqc3wwLHQ9KHR8dDw8OCkmMTY3MTE5MzUsdD0odHx0PDw0KSYyNTI2NDUxMzUsdD0odHx0PDwyKSY4NTg5OTM0NTksdD0odHx0PDwxKSYxNDMxNjU1NzY1LGU9KGV8ZTw8OCkmMTY3MTE5MzUsZT0oZXxlPDw0KSYyNTI2NDUxMzUsZT0oZXxlPDwyKSY4NTg5OTM0NTksZT0oZXxlPDwxKSYxNDMxNjU1NzY1LHR8ZTw8MX1mdW5jdGlvbiBJY3QodCl7dmFyIGU9dCxpPXQ7ZG8oZS54PGkueHx8ZS54PT09aS54JiZlLnk8aS55KSYmKGk9ZSksZT1lLm5leHQ7d2hpbGUoZSE9PXQpO3JldHVybiBpfWZ1bmN0aW9uIFlmKHQsZSxpLG4scyxvLHIsYSl7cmV0dXJuKHMtcikqKGUtYSk+PSh0LXIpKihvLWEpJiYodC1yKSoobi1hKT49KGktcikqKGUtYSkmJihpLXIpKihvLWEpPj0ocy1yKSoobi1hKX1mdW5jdGlvbiBwY3QodCxlKXtyZXR1cm4gdC5uZXh0LmkhPT1lLmkmJnQucHJldi5pIT09ZS5pJiYhdWN0KHQsZSkmJihtUih0LGUpJiZtUihlLHQpJiZDY3QodCxlKSYmKGFzKHQucHJldix0LGUucHJldil8fGFzKHQsZS5wcmV2LGUpKXx8eEModCxlKSYmYXModC5wcmV2LHQsdC5uZXh0KT4wJiZhcyhlLnByZXYsZSxlLm5leHQpPjApfWZ1bmN0aW9uIGFzKHQsZSxpKXtyZXR1cm4oZS55LXQueSkqKGkueC1lLngpLShlLngtdC54KSooaS55LWUueSl9ZnVuY3Rpb24geEModCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9ZnVuY3Rpb24gQXoodCxlLGksbil7dmFyIHM9eUMoYXModCxlLGkpKSxvPXlDKGFzKHQsZSxuKSkscj15QyhhcyhpLG4sdCkpLGE9eUMoYXMoaSxuLGUpKTtyZXR1cm4hIShzIT09byYmciE9PWF8fHM9PT0wJiZMQyh0LGksZSl8fG89PT0wJiZMQyh0LG4sZSl8fHI9PT0wJiZMQyhpLHQsbil8fGE9PT0wJiZMQyhpLGUsbikpfWZ1bmN0aW9uIExDKHQsZSxpKXtyZXR1cm4gZS54PD1NYXRoLm1heCh0LngsaS54KSYmZS54Pj1NYXRoLm1pbih0LngsaS54KSYmZS55PD1NYXRoLm1heCh0LnksaS55KSYmZS55Pj1NYXRoLm1pbih0LnksaS55KX1mdW5jdGlvbiB5Qyh0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9ZnVuY3Rpb24gdWN0KHQsZSl7dmFyIGk9dDtkb3tpZihpLmkhPT10LmkmJmkubmV4dC5pIT09dC5pJiZpLmkhPT1lLmkmJmkubmV4dC5pIT09ZS5pJiZBeihpLGkubmV4dCx0LGUpKXJldHVybiEwO2k9aS5uZXh0fXdoaWxlKGkhPT10KTtyZXR1cm4hMX1mdW5jdGlvbiBtUih0LGUpe3JldHVybiBhcyh0LnByZXYsdCx0Lm5leHQpPDA/YXModCxlLHQubmV4dCk+PTAmJmFzKHQsdC5wcmV2LGUpPj0wOmFzKHQsZSx0LnByZXYpPDB8fGFzKHQsdC5uZXh0LGUpPDB9ZnVuY3Rpb24gQ2N0KHQsZSl7dmFyIGk9dCxuPSExLHM9KHQueCtlLngpLzIsbz0odC55K2UueSkvMjtkbyBpLnk+byE9aS5uZXh0Lnk+byYmaS5uZXh0LnkhPT1pLnkmJnM8KGkubmV4dC54LWkueCkqKG8taS55KS8oaS5uZXh0LnktaS55KStpLngmJihuPSFuKSxpPWkubmV4dDt3aGlsZShpIT09dCk7cmV0dXJuIG59ZnVuY3Rpb24gaHoodCxlKXt2YXIgaT1uZXcgYk8odC5pLHQueCx0LnkpLG49bmV3IGJPKGUuaSxlLngsZS55KSxzPXQubmV4dCxvPWUucHJldjtyZXR1cm4gdC5uZXh0PWUsZS5wcmV2PXQsaS5uZXh0PXMscy5wcmV2PWksbi5uZXh0PWksaS5wcmV2PW4sby5uZXh0PW4sbi5wcmV2PW8sbn1mdW5jdGlvbiByeih0LGUsaSxuKXt2YXIgcz1uZXcgYk8odCxlLGkpO3JldHVybiBuPyhzLm5leHQ9bi5uZXh0LHMucHJldj1uLG4ubmV4dC5wcmV2PXMsbi5uZXh0PXMpOihzLnByZXY9cyxzLm5leHQ9cyksc31mdW5jdGlvbiBmUih0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIGJPKHQsZSxpKXt0aGlzLmk9dCx0aGlzLng9ZSx0aGlzLnk9aSx0aGlzLnByZXY9bnVsbCx0aGlzLm5leHQ9bnVsbCx0aGlzLno9MCx0aGlzLnByZXZaPW51bGwsdGhpcy5uZXh0Wj1udWxsLHRoaXMuc3RlaW5lcj0hMX13Qy5kZXZpYXRpb249ZnVuY3Rpb24odCxlLGksbil7dmFyIHM9ZSYmZS5sZW5ndGgsbz1zP2VbMF0qaTp0Lmxlbmd0aCxyPU1hdGguYWJzKEZPKHQsMCxvLGkpKTtpZihzKWZvcih2YXIgYT0wLGg9ZS5sZW5ndGg7YTxoO2ErKyl7dmFyIEE9ZVthXSppLGQ9YTxoLTE/ZVthKzFdKmk6dC5sZW5ndGg7ci09TWF0aC5hYnMoRk8odCxBLGQsaSkpfXZhciBmPTA7Zm9yKGE9MDthPG4ubGVuZ3RoO2ErPTMpe3ZhciBFPW5bYV0qaSxfPW5bYSsxXSppLFI9blthKzJdKmk7Zis9TWF0aC5hYnMoKHRbRV0tdFtSXSkqKHRbXysxXS10W0UrMV0pLSh0W0VdLXRbX10pKih0W1IrMV0tdFtFKzFdKSl9cmV0dXJuIHI9PT0wJiZmPT09MD8wOk1hdGguYWJzKChmLXIpL3IpfTtmdW5jdGlvbiBGTyh0LGUsaSxuKXtmb3IodmFyIHM9MCxvPWUscj1pLW47bzxpO28rPW4pcys9KHRbcl0tdFtvXSkqKHRbbysxXSt0W3IrMV0pLHI9bztyZXR1cm4gc313Qy5mbGF0dGVuPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10WzBdWzBdLmxlbmd0aCxpPXt2ZXJ0aWNlczpbXSxob2xlczpbXSxkaW1lbnNpb25zOmV9LG49MCxzPTA7czx0Lmxlbmd0aDtzKyspe2Zvcih2YXIgbz0wO288dFtzXS5sZW5ndGg7bysrKWZvcih2YXIgcj0wO3I8ZTtyKyspaS52ZXJ0aWNlcy5wdXNoKHRbc11bb11bcl0pO3M+MCYmKG4rPXRbcy0xXS5sZW5ndGgsaS5ob2xlcy5wdXNoKG4pKX1yZXR1cm4gaX19KTt2YXIgZnosZ2N0LFRjdCxNYyxFeixfeixSeixseixkeixteixiaCxaeixJeixweixTZixOY3QsYmN0LEZjdCxTTyx1aSxQYT1PKCgpPT57Zno9Y28oY3ooKSwxKTtYZSgpO0h0KCk7cmkoKTthZSgpO29pKCk7YnQoKTttdCgpO1ZlKCk7SEUoKTt5aSgpO2ppKCk7X2UoKTtYaSgpO2ZjKCk7Z2N0PW5ldyBsLFRjdD1uZXcgbCxNYz17fTtNYy5jb21wdXRlQXJlYTJEPWZ1bmN0aW9uKHQpe3AuZGVmaW5lZCgicG9zaXRpb25zIix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicG9zaXRpb25zLmxlbmd0aCIsdC5sZW5ndGgsMyk7bGV0IGU9dC5sZW5ndGgsaT0wO2ZvcihsZXQgbj1lLTEscz0wO3M8ZTtuPXMrKyl7bGV0IG89dFtuXSxyPXRbc107aSs9by54KnIueS1yLngqby55fXJldHVybiBpKi41fTtNYy5jb21wdXRlV2luZGluZ09yZGVyMkQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1jLmNvbXB1dGVBcmVhMkQodCk+MD9Ncy5DT1VOVEVSX0NMT0NLV0lTRTpNcy5DTE9DS1dJU0V9O01jLnRyaWFuZ3VsYXRlPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpO2xldCBpPW50LnBhY2tBcnJheSh0KTtyZXR1cm4oMCxmei5kZWZhdWx0KShpLGUsMil9O0V6PW5ldyBsLF96PW5ldyBsLFJ6PW5ldyBsLGx6PW5ldyBsLGR6PW5ldyBsLG16PW5ldyBsLGJoPW5ldyBsLFp6PW5ldyBudCxJej1uZXcgbnQscHo9bmV3IG50LFNmPW5ldyBudDtNYy5jb21wdXRlU3ViZGl2aXNpb249ZnVuY3Rpb24odCxlLGksbixzKXtzPVoocyxMLlJBRElBTlNfUEVSX0RFR1JFRSk7bGV0IG89bShuKTtwLnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCkscC5kZWZpbmVkKCJwb3NpdGlvbnMiLGUpLHAuZGVmaW5lZCgiaW5kaWNlcyIsaSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGljZXMubGVuZ3RoIixpLmxlbmd0aCwzKSxwLnR5cGVPZi5udW1iZXIuZXF1YWxzKCJpbmRpY2VzLmxlbmd0aCAlIDMiLCIwIixpLmxlbmd0aCUzLDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiZ3JhbnVsYXJpdHkiLHMsMCk7bGV0IHI9aS5zbGljZSgwKSxhLGg9ZS5sZW5ndGgsQT1uZXcgQXJyYXkoaCozKSxkPW5ldyBBcnJheShoKjIpLGY9MCxFPTA7Zm9yKGE9MDthPGg7YSsrKXtsZXQgRj1lW2FdO2lmKEFbZisrXT1GLngsQVtmKytdPUYueSxBW2YrK109Ri56LG8pe2xldCBiPW5bYV07ZFtFKytdPWIueCxkW0UrK109Yi55fX1sZXQgXz1bXSxSPXt9LEk9dC5tYXhpbXVtUmFkaXVzLEM9TC5jaG9yZExlbmd0aChzLEkpLE49QypDO2Zvcig7ci5sZW5ndGg+MDspe2xldCBGPXIucG9wKCksYj1yLnBvcCgpLEc9ci5wb3AoKSxNPWwuZnJvbUFycmF5KEEsRyozLEV6KSxRPWwuZnJvbUFycmF5KEEsYiozLF96KSxVPWwuZnJvbUFycmF5KEEsRiozLFJ6KSxrLHksYztvJiYoaz1udC5mcm9tQXJyYXkoZCxHKjIsWnopLHk9bnQuZnJvbUFycmF5KGQsYioyLEl6KSxjPW50LmZyb21BcnJheShkLEYqMixweikpO2xldCBnPWwubXVsdGlwbHlCeVNjYWxhcihsLm5vcm1hbGl6ZShNLGx6KSxJLGx6KSxWPWwubXVsdGlwbHlCeVNjYWxhcihsLm5vcm1hbGl6ZShRLGR6KSxJLGR6KSxEPWwubXVsdGlwbHlCeVNjYWxhcihsLm5vcm1hbGl6ZShVLG16KSxJLG16KSx3PWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KGcsVixiaCkpLHg9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoVixELGJoKSksSD1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChELGcsYmgpKSxqPU1hdGgubWF4KHcseCxIKSxYLHR0LEI7aj5OP3c9PT1qPyhYPWAke01hdGgubWluKEcsYil9ICR7TWF0aC5tYXgoRyxiKX1gLGE9UltYXSxtKGEpfHwodHQ9bC5hZGQoTSxRLGJoKSxsLm11bHRpcGx5QnlTY2FsYXIodHQsLjUsdHQpLEEucHVzaCh0dC54LHR0LnksdHQueiksYT1BLmxlbmd0aC8zLTEsUltYXT1hLG8mJihCPW50LmFkZChrLHksU2YpLG50Lm11bHRpcGx5QnlTY2FsYXIoQiwuNSxCKSxkLnB1c2goQi54LEIueSkpKSxyLnB1c2goRyxhLEYpLHIucHVzaChhLGIsRikpOng9PT1qPyhYPWAke01hdGgubWluKGIsRil9ICR7TWF0aC5tYXgoYixGKX1gLGE9UltYXSxtKGEpfHwodHQ9bC5hZGQoUSxVLGJoKSxsLm11bHRpcGx5QnlTY2FsYXIodHQsLjUsdHQpLEEucHVzaCh0dC54LHR0LnksdHQueiksYT1BLmxlbmd0aC8zLTEsUltYXT1hLG8mJihCPW50LmFkZCh5LGMsU2YpLG50Lm11bHRpcGx5QnlTY2FsYXIoQiwuNSxCKSxkLnB1c2goQi54LEIueSkpKSxyLnB1c2goYixhLEcpLHIucHVzaChhLEYsRykpOkg9PT1qJiYoWD1gJHtNYXRoLm1pbihGLEcpfSAke01hdGgubWF4KEYsRyl9YCxhPVJbWF0sbShhKXx8KHR0PWwuYWRkKFUsTSxiaCksbC5tdWx0aXBseUJ5U2NhbGFyKHR0LC41LHR0KSxBLnB1c2godHQueCx0dC55LHR0LnopLGE9QS5sZW5ndGgvMy0xLFJbWF09YSxvJiYoQj1udC5hZGQoYyxrLFNmKSxudC5tdWx0aXBseUJ5U2NhbGFyKEIsLjUsQiksZC5wdXNoKEIueCxCLnkpKSksci5wdXNoKEYsYSxiKSxyLnB1c2goYSxHLGIpKTooXy5wdXNoKEcpLF8ucHVzaChiKSxfLnB1c2goRikpfWxldCBUPXthdHRyaWJ1dGVzOntwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkF9KX0saW5kaWNlczpfLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfTtyZXR1cm4gbyYmKFQuYXR0cmlidXRlcy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6ZH0pKSxuZXcgc2UoVCl9O05jdD1uZXcgdXQsYmN0PW5ldyB1dCxGY3Q9bmV3IHV0LFNPPW5ldyB1dDtNYy5jb21wdXRlUmh1bWJMaW5lU3ViZGl2aXNpb249ZnVuY3Rpb24odCxlLGksbixzKXtzPVoocyxMLlJBRElBTlNfUEVSX0RFR1JFRSk7bGV0IG89bShuKTtwLnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCkscC5kZWZpbmVkKCJwb3NpdGlvbnMiLGUpLHAuZGVmaW5lZCgiaW5kaWNlcyIsaSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGljZXMubGVuZ3RoIixpLmxlbmd0aCwzKSxwLnR5cGVPZi5udW1iZXIuZXF1YWxzKCJpbmRpY2VzLmxlbmd0aCAlIDMiLCIwIixpLmxlbmd0aCUzLDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiZ3JhbnVsYXJpdHkiLHMsMCk7bGV0IHI9aS5zbGljZSgwKSxhLGg9ZS5sZW5ndGgsQT1uZXcgQXJyYXkoaCozKSxkPW5ldyBBcnJheShoKjIpLGY9MCxFPTA7Zm9yKGE9MDthPGg7YSsrKXtsZXQgRz1lW2FdO2lmKEFbZisrXT1HLngsQVtmKytdPUcueSxBW2YrK109Ry56LG8pe2xldCBNPW5bYV07ZFtFKytdPU0ueCxkW0UrK109TS55fX1sZXQgXz1bXSxSPXt9LEk9dC5tYXhpbXVtUmFkaXVzLEM9TC5jaG9yZExlbmd0aChzLEkpLE49bmV3IGVyKHZvaWQgMCx2b2lkIDAsdCksVD1uZXcgZXIodm9pZCAwLHZvaWQgMCx0KSxGPW5ldyBlcih2b2lkIDAsdm9pZCAwLHQpO2Zvcig7ci5sZW5ndGg+MDspe2xldCBHPXIucG9wKCksTT1yLnBvcCgpLFE9ci5wb3AoKSxVPWwuZnJvbUFycmF5KEEsUSozLEV6KSxrPWwuZnJvbUFycmF5KEEsTSozLF96KSx5PWwuZnJvbUFycmF5KEEsRyozLFJ6KSxjLGcsVjtvJiYoYz1udC5mcm9tQXJyYXkoZCxRKjIsWnopLGc9bnQuZnJvbUFycmF5KGQsTSoyLEl6KSxWPW50LmZyb21BcnJheShkLEcqMixweikpO2xldCBEPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoVSxOY3QpLHc9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhrLGJjdCkseD10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHksRmN0KTtOLnNldEVuZFBvaW50cyhELHcpO2xldCBIPU4uc3VyZmFjZURpc3RhbmNlO1Quc2V0RW5kUG9pbnRzKHcseCk7bGV0IGo9VC5zdXJmYWNlRGlzdGFuY2U7Ri5zZXRFbmRQb2ludHMoeCxEKTtsZXQgWD1GLnN1cmZhY2VEaXN0YW5jZSx0dD1NYXRoLm1heChILGosWCksQixJdCxndCxZdCxNdDt0dD5DP0g9PT10dD8oQj1gJHtNYXRoLm1pbihRLE0pfSAke01hdGgubWF4KFEsTSl9YCxhPVJbQl0sbShhKXx8KEl0PU4uaW50ZXJwb2xhdGVVc2luZ0ZyYWN0aW9uKC41LFNPKSxndD0oRC5oZWlnaHQrdy5oZWlnaHQpKi41LFl0PWwuZnJvbVJhZGlhbnMoSXQubG9uZ2l0dWRlLEl0LmxhdGl0dWRlLGd0LHQsYmgpLEEucHVzaChZdC54LFl0LnksWXQueiksYT1BLmxlbmd0aC8zLTEsUltCXT1hLG8mJihNdD1udC5hZGQoYyxnLFNmKSxudC5tdWx0aXBseUJ5U2NhbGFyKE10LC41LE10KSxkLnB1c2goTXQueCxNdC55KSkpLHIucHVzaChRLGEsRyksci5wdXNoKGEsTSxHKSk6aj09PXR0PyhCPWAke01hdGgubWluKE0sRyl9ICR7TWF0aC5tYXgoTSxHKX1gLGE9UltCXSxtKGEpfHwoSXQ9VC5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsU08pLGd0PSh3LmhlaWdodCt4LmhlaWdodCkqLjUsWXQ9bC5mcm9tUmFkaWFucyhJdC5sb25naXR1ZGUsSXQubGF0aXR1ZGUsZ3QsdCxiaCksQS5wdXNoKFl0LngsWXQueSxZdC56KSxhPUEubGVuZ3RoLzMtMSxSW0JdPWEsbyYmKE10PW50LmFkZChnLFYsU2YpLG50Lm11bHRpcGx5QnlTY2FsYXIoTXQsLjUsTXQpLGQucHVzaChNdC54LE10LnkpKSksci5wdXNoKE0sYSxRKSxyLnB1c2goYSxHLFEpKTpYPT09dHQmJihCPWAke01hdGgubWluKEcsUSl9ICR7TWF0aC5tYXgoRyxRKX1gLGE9UltCXSxtKGEpfHwoSXQ9Ri5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsU08pLGd0PSh4LmhlaWdodCtELmhlaWdodCkqLjUsWXQ9bC5mcm9tUmFkaWFucyhJdC5sb25naXR1ZGUsSXQubGF0aXR1ZGUsZ3QsdCxiaCksQS5wdXNoKFl0LngsWXQueSxZdC56KSxhPUEubGVuZ3RoLzMtMSxSW0JdPWEsbyYmKE10PW50LmFkZChWLGMsU2YpLG50Lm11bHRpcGx5QnlTY2FsYXIoTXQsLjUsTXQpLGQucHVzaChNdC54LE10LnkpKSksci5wdXNoKEcsYSxNKSxyLnB1c2goYSxRLE0pKTooXy5wdXNoKFEpLF8ucHVzaChNKSxfLnB1c2goRykpfWxldCBiPXthdHRyaWJ1dGVzOntwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkF9KX0saW5kaWNlczpfLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfTtyZXR1cm4gbyYmKGIuYXR0cmlidXRlcy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6ZH0pKSxuZXcgc2UoYil9O01jLnNjYWxlVG9HZW9kZXRpY0hlaWdodD1mdW5jdGlvbih0LGUsaSxuKXtpPVooaSxvdC5XR1M4NCk7bGV0IHM9Z2N0LG89VGN0O2lmKGU9WihlLDApLG49WihuLCEwKSxtKHQpKXtsZXQgcj10Lmxlbmd0aDtmb3IobGV0IGE9MDthPHI7YSs9MylsLmZyb21BcnJheSh0LGEsbyksbiYmKG89aS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKG8sbykpLGUhPT0wJiYocz1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChvLHMpLGwubXVsdGlwbHlCeVNjYWxhcihzLGUscyksbC5hZGQobyxzLG8pKSx0W2FdPW8ueCx0W2ErMV09by55LHRbYSsyXT1vLnp9cmV0dXJuIHR9O3VpPU1jfSk7ZnVuY3Rpb24gVWMoKXt0aGlzLl9hcnJheT1bXSx0aGlzLl9vZmZzZXQ9MCx0aGlzLl9sZW5ndGg9MH12YXIgT08sdXo9TygoKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFVjLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGVuZ3RofX19KTtVYy5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbih0KXt0aGlzLl9hcnJheS5wdXNoKHQpLHRoaXMuX2xlbmd0aCsrfTtVYy5wcm90b3R5cGUuZGVxdWV1ZT1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aD09PTApcmV0dXJuO2xldCB0PXRoaXMuX2FycmF5LGU9dGhpcy5fb2Zmc2V0LGk9dFtlXTtyZXR1cm4gdFtlXT12b2lkIDAsZSsrLGU+MTAmJmUqMj50Lmxlbmd0aCYmKHRoaXMuX2FycmF5PXQuc2xpY2UoZSksZT0wKSx0aGlzLl9vZmZzZXQ9ZSx0aGlzLl9sZW5ndGgtLSxpfTtVYy5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aCE9PTApcmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX29mZnNldF19O1VjLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXJyYXkuaW5kZXhPZih0KSE9PS0xfTtVYy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9hcnJheS5sZW5ndGg9dGhpcy5fb2Zmc2V0PXRoaXMuX2xlbmd0aD0wfTtVYy5wcm90b3R5cGUuc29ydD1mdW5jdGlvbih0KXt0aGlzLl9vZmZzZXQ+MCYmKHRoaXMuX2FycmF5PXRoaXMuX2FycmF5LnNsaWNlKHRoaXMuX29mZnNldCksdGhpcy5fb2Zmc2V0PTApLHRoaXMuX2FycmF5LnNvcnQodCl9O09PPVVjfSk7ZnVuY3Rpb24gVHoodCxlLGksbil7cmV0dXJuIG50LnN1YnRyYWN0KGUsdCxsZCksbnQubXVsdGlwbHlCeVNjYWxhcihsZCxpL24sbGQpLG50LmFkZCh0LGxkLGxkKSxbbGQueCxsZC55XX1mdW5jdGlvbiBZY3QodCxlLGksbil7cmV0dXJuIGwuc3VidHJhY3QoZSx0LFFjKSxsLm11bHRpcGx5QnlTY2FsYXIoUWMsaS9uLFFjKSxsLmFkZCh0LFFjLFFjKSxbUWMueCxRYy55LFFjLnpdfWZ1bmN0aW9uIE1jdCh0LGUsaSl7bGV0IG49aS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LEpDKSxzPWkuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZSxqQyk7aWYoTWF0aC5zaWduKG4ubGF0aXR1ZGUpPT09TWF0aC5zaWduKHMubGF0aXR1ZGUpKXJldHVybjtQQy5zZXRFbmRQb2ludHMobixzKTtsZXQgbz1QQy5maW5kSW50ZXJzZWN0aW9uV2l0aExhdGl0dWRlKDAsRGN0KTtpZighbShvKSlyZXR1cm47bGV0IHI9TWF0aC5taW4obi5sb25naXR1ZGUscy5sb25naXR1ZGUpLGE9TWF0aC5tYXgobi5sb25naXR1ZGUscy5sb25naXR1ZGUpO2lmKE1hdGguYWJzKGEtcik+TC5QSSl7bGV0IGg9cjtyPWEsYT1ofWlmKCEoby5sb25naXR1ZGU8cnx8by5sb25naXR1ZGU+YSkpcmV0dXJuIGkuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4obyl9ZnVuY3Rpb24gVWN0KHQsZSxpLG4pe2lmKG49PT10aS5SSFVNQilyZXR1cm4gTWN0KHQsZSxpKTtsZXQgcz1uby5saW5lU2VnbWVudFBsYW5lKHQsZSxLaS5PUklHSU5fWFlfUExBTkUpO2lmKG0ocykpcmV0dXJuIGkuc2NhbGVUb0dlb2RldGljU3VyZmFjZShzLHMpfWZ1bmN0aW9uIGtjdCh0LGUsaSl7bGV0IG49W10scyxvLHIsYSxoLEE9MDtmb3IoO0E8dC5sZW5ndGg7KXtzPXRbQV0sbz10WyhBKzEpJXQubGVuZ3RoXSxyPUwuc2lnbihzLnopLGE9TC5zaWduKG8ueik7bGV0IGQ9Zj0+ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhmLFFjdCkubG9uZ2l0dWRlO2lmKHI9PT0wKW4ucHVzaCh7cG9zaXRpb246QSx0eXBlOnIsdmlzaXRlZDohMSxuZXh0OmEsdGhldGE6ZChzKX0pO2Vsc2UgaWYoYSE9PTApe2lmKGg9VWN0KHMsbyxlLGkpLCsrQSwhbShoKSljb250aW51ZTt0LnNwbGljZShBLDAsaCksbi5wdXNoKHtwb3NpdGlvbjpBLHR5cGU6cix2aXNpdGVkOiExLG5leHQ6YSx0aGV0YTpkKGgpfSl9KytBfXJldHVybiBufWZ1bmN0aW9uIE56KHQsZSxpLG4scyxvLHIpe2xldCBhPVtdLGg9byxBPWY9PkU9PkUucG9zaXRpb249PT1mLGQ9W107ZG97bGV0IGY9aVtoXTthLnB1c2goZik7bGV0IEU9bi5maW5kSW5kZXgoQShoKSksXz1uW0VdO2lmKCFtKF8pKXsrK2g7Y29udGludWV9bGV0e3Zpc2l0ZWQ6Uix0eXBlOkksbmV4dDpDfT1fO2lmKF8udmlzaXRlZD0hMCxJPT09MCl7aWYoQz09PTApe2xldCBiPW5bRS0ocj8xOi0xKV07aWYoYj8ucG9zaXRpb249PT1oKzEpYi52aXNpdGVkPSEwO2Vsc2V7KytoO2NvbnRpbnVlfX1pZighUiYmciYmQz4wfHxvPT09aCYmIXImJkM8MCl7KytoO2NvbnRpbnVlfX1pZighKHI/ST49MDpJPD0wKSl7KytoO2NvbnRpbnVlfVJ8fGQucHVzaChoKTtsZXQgVD1FKyhyPzE6LTEpLEY9bltUXTtpZighbShGKSl7KytoO2NvbnRpbnVlfWg9Ri5wb3NpdGlvbn13aGlsZShoPGkubGVuZ3RoJiZoPj0wJiZoIT09byYmYS5sZW5ndGg8aS5sZW5ndGgpO3Quc3BsaWNlKGUscyxhKTtmb3IobGV0IGYgb2YgZCllPU56KHQsKytlLGksbiwwLGYsIXIpO3JldHVybiBlfXZhciBNbixsZCxRYyxKQyxqQyxTY3QsT2N0LFBDLFZjdCxHY3QsQmN0LFdjdCxEY3QsUWN0LExjdCx5Y3Qsd2N0LHhjdCxDeixneixQY3QsSmN0LGlpLEVSPU8oKCk9PntCbCgpO09hKCk7WGUoKTtIdCgpO3JpKCk7b2koKTtidCgpO210KCk7VmUoKTtIRSgpO3lpKCk7amkoKTtFbigpO2dBKCk7RGkoKTtNbCgpO19lKCk7ZG4oKTtuaCgpO2NwKCk7UGEoKTtYaSgpOyRzKCk7dXooKTtmYygpO01uPXt9O01uLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGg9ZnVuY3Rpb24odCxlKXtsZXQgaT0wLG49W3RdO2Zvcig7bi5sZW5ndGg+MDspe2xldCBzPW4ucG9wKCk7aWYoIW0ocykpY29udGludWU7aSs9MjtsZXQgbz1zLnBvc2l0aW9ucyxyPXMuaG9sZXM7aWYobShvKSYmby5sZW5ndGg+MCYmKGkrPW8ubGVuZ3RoKmUucGFja2VkTGVuZ3RoKSxtKHIpKXtsZXQgYT1yLmxlbmd0aDtmb3IobGV0IGg9MDtoPGE7KytoKW4ucHVzaChyW2hdKX19cmV0dXJuIGl9O01uLnBhY2tQb2x5Z29uSGllcmFyY2h5PWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzPVt0XTtmb3IoO3MubGVuZ3RoPjA7KXtsZXQgbz1zLnBvcCgpO2lmKCFtKG8pKWNvbnRpbnVlO2xldCByPW8ucG9zaXRpb25zLGE9by5ob2xlcztpZihlW2krK109bShyKT9yLmxlbmd0aDowLGVbaSsrXT1tKGEpP2EubGVuZ3RoOjAsbShyKSl7bGV0IGg9ci5sZW5ndGg7Zm9yKGxldCBBPTA7QTxoOysrQSxpKz1uLnBhY2tlZExlbmd0aCluLnBhY2socltBXSxlLGkpfWlmKG0oYSkpe2xldCBoPWEubGVuZ3RoO2ZvcihsZXQgQT0wO0E8aDsrK0Epcy5wdXNoKGFbQV0pfX1yZXR1cm4gaX07TW4udW5wYWNrUG9seWdvbkhpZXJhcmNoeT1mdW5jdGlvbih0LGUsaSl7bGV0IG49dFtlKytdLHM9dFtlKytdLG89bmV3IEFycmF5KG4pLHI9cz4wP25ldyBBcnJheShzKTp2b2lkIDA7Zm9yKGxldCBhPTA7YTxuOysrYSxlKz1pLnBhY2tlZExlbmd0aClvW2FdPWkudW5wYWNrKHQsZSk7Zm9yKGxldCBhPTA7YTxzOysrYSlyW2FdPU1uLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLGkpLGU9clthXS5zdGFydGluZ0luZGV4LGRlbGV0ZSByW2FdLnN0YXJ0aW5nSW5kZXg7cmV0dXJue3Bvc2l0aW9uczpvLGhvbGVzOnIsc3RhcnRpbmdJbmRleDplfX07bGQ9bmV3IG50O1FjPW5ldyBsO01uLnN1YmRpdmlkZUxpbmVDb3VudD1mdW5jdGlvbih0LGUsaSl7bGV0IHM9bC5kaXN0YW5jZSh0LGUpL2ksbz1NYXRoLm1heCgwLE1hdGguY2VpbChMLmxvZzIocykpKTtyZXR1cm4gTWF0aC5wb3coMixvKX07SkM9bmV3IHV0LGpDPW5ldyB1dCxTY3Q9bmV3IHV0LE9jdD1uZXcgbCxQQz1uZXcgZXI7TW4uc3ViZGl2aWRlUmh1bWJMaW5lQ291bnQ9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLEpDKSxvPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoaSxqQyksYT1uZXcgZXIocyxvLHQpLnN1cmZhY2VEaXN0YW5jZS9uLGg9TWF0aC5tYXgoMCxNYXRoLmNlaWwoTC5sb2cyKGEpKSk7cmV0dXJuIE1hdGgucG93KDIsaCl9O01uLnN1YmRpdmlkZVRleGNvb3JkTGluZT1mdW5jdGlvbih0LGUsaSxuLHMsbyl7bGV0IHI9TW4uc3ViZGl2aWRlTGluZUNvdW50KGksbixzKSxhPW50LmRpc3RhbmNlKHQsZSksaD1hL3IsQT1vO0EubGVuZ3RoPXIqMjtsZXQgZD0wO2ZvcihsZXQgZj0wO2Y8cjtmKyspe2xldCBFPVR6KHQsZSxmKmgsYSk7QVtkKytdPUVbMF0sQVtkKytdPUVbMV19cmV0dXJuIEF9O01uLnN1YmRpdmlkZUxpbmU9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9TW4uc3ViZGl2aWRlTGluZUNvdW50KHQsZSxpKSxvPWwuZGlzdGFuY2UodCxlKSxyPW8vczttKG4pfHwobj1bXSk7bGV0IGE9bjthLmxlbmd0aD1zKjM7bGV0IGg9MDtmb3IobGV0IEE9MDtBPHM7QSsrKXtsZXQgZD1ZY3QodCxlLEEqcixvKTthW2grK109ZFswXSxhW2grK109ZFsxXSxhW2grK109ZFsyXX1yZXR1cm4gYX07TW4uc3ViZGl2aWRlVGV4Y29vcmRSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLGksbixzLG8scil7bGV0IGE9aS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhuLEpDKSxoPWkuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocyxqQyk7UEMuc2V0RW5kUG9pbnRzKGEsaCk7bGV0IEE9UEMuc3VyZmFjZURpc3RhbmNlL28sZD1NYXRoLm1heCgwLE1hdGguY2VpbChMLmxvZzIoQSkpKSxmPU1hdGgucG93KDIsZCksRT1udC5kaXN0YW5jZSh0LGUpLF89RS9mLFI9cjtSLmxlbmd0aD1mKjI7bGV0IEk9MDtmb3IobGV0IEM9MDtDPGY7QysrKXtsZXQgTj1Ueih0LGUsQypfLEUpO1JbSSsrXT1OWzBdLFJbSSsrXT1OWzFdfXJldHVybiBSfTtNbi5zdWJkaXZpZGVSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLGksbixzKXtsZXQgbz10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsSkMpLHI9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhpLGpDKSxhPW5ldyBlcihvLHIsdCksaD1hLnN1cmZhY2VEaXN0YW5jZS9uLEE9TWF0aC5tYXgoMCxNYXRoLmNlaWwoTC5sb2cyKGgpKSksZD1NYXRoLnBvdygyLEEpLGY9YS5zdXJmYWNlRGlzdGFuY2UvZDttKHMpfHwocz1bXSk7bGV0IEU9cztFLmxlbmd0aD1kKjM7bGV0IF89MDtmb3IobGV0IFI9MDtSPGQ7UisrKXtsZXQgST1hLmludGVycG9sYXRlVXNpbmdTdXJmYWNlRGlzdGFuY2UoUipmLFNjdCksQz10LmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEksT2N0KTtFW18rK109Qy54LEVbXysrXT1DLnksRVtfKytdPUMuen1yZXR1cm4gRX07VmN0PW5ldyBsLEdjdD1uZXcgbCxCY3Q9bmV3IGwsV2N0PW5ldyBsO01uLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkPWZ1bmN0aW9uKHQsZSxpLG4scyl7bj1aKG4sb3QuV0dTODQpO2xldCBvPVZjdCxyPUdjdCxhPUJjdCxoPVdjdDtpZihtKHQpJiZtKHQuYXR0cmlidXRlcykmJm0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKSl7bGV0IEE9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxkPUEubGVuZ3RoLzI7Zm9yKGxldCBmPTA7ZjxkO2YrPTMpbC5mcm9tQXJyYXkoQSxmLGEpLG4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGEsbyksaD1uLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoYSxoKSxyPWwubXVsdGlwbHlCeVNjYWxhcihvLGkscikscj1sLmFkZChoLHIsciksQVtmK2RdPXIueCxBW2YrMStkXT1yLnksQVtmKzIrZF09ci56LHMmJihoPWwuY2xvbmUoYSxoKSkscj1sLm11bHRpcGx5QnlTY2FsYXIobyxlLHIpLHI9bC5hZGQoaCxyLHIpLEFbZl09ci54LEFbZisxXT1yLnksQVtmKzJdPXIuen1yZXR1cm4gdH07TW4ucG9seWdvbk91dGxpbmVzRnJvbUhpZXJhcmNoeT1mdW5jdGlvbih0LGUsaSl7bGV0IG49W10scz1uZXcgT087cy5lbnF1ZXVlKHQpO2xldCBvLHIsYTtmb3IoO3MubGVuZ3RoIT09MDspe2xldCBoPXMuZGVxdWV1ZSgpLEE9aC5wb3NpdGlvbnM7aWYoZSlmb3IoYT1BLmxlbmd0aCxvPTA7bzxhO28rKylpLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoQVtvXSxBW29dKTtpZihBPVhuKEEsbC5lcXVhbHNFcHNpbG9uLCEwKSxBLmxlbmd0aDwzKWNvbnRpbnVlO2xldCBkPWguaG9sZXM/aC5ob2xlcy5sZW5ndGg6MDtmb3Iobz0wO288ZDtvKyspe2xldCBmPWguaG9sZXNbb10sRT1mLnBvc2l0aW9ucztpZihlKWZvcihhPUUubGVuZ3RoLHI9MDtyPGE7KytyKWkuc2NhbGVUb0dlb2RldGljU3VyZmFjZShFW3JdLEVbcl0pO2lmKEU9WG4oRSxsLmVxdWFsc0Vwc2lsb24sITApLEUubGVuZ3RoPDMpY29udGludWU7bi5wdXNoKEUpO2xldCBfPTA7Zm9yKG0oZi5ob2xlcykmJihfPWYuaG9sZXMubGVuZ3RoKSxyPTA7cjxfO3IrKylzLmVucXVldWUoZi5ob2xlc1tyXSl9bi5wdXNoKEEpfXJldHVybiBufTtEY3Q9bmV3IHV0O1FjdD1uZXcgdXQ7TW4uc3BsaXRQb2x5Z29uc09uRXF1YXRvcj1mdW5jdGlvbih0LGUsaSxuKXttKG4pfHwobj1bXSksbi5zcGxpY2UoMCwwLC4uLnQpLG4ubGVuZ3RoPXQubGVuZ3RoO2xldCBzPTA7Zm9yKDtzPG4ubGVuZ3RoOyl7bGV0IG89bltzXSxyPW8uc2xpY2UoKTtpZihvLmxlbmd0aDwzKXtuW3NdPXIsKytzO2NvbnRpbnVlfWxldCBhPWtjdChyLGUsaSk7aWYoci5sZW5ndGg9PT1vLmxlbmd0aHx8YS5sZW5ndGg8PTEpe25bc109ciwrK3M7Y29udGludWV9YS5zb3J0KChBLGQpPT5BLnRoZXRhLWQudGhldGEpO2xldCBoPXJbMF0uej49MDtzPU56KG4scyxyLGEsMSwwLGgpfXJldHVybiBufTtNbi5wb2x5Z29uc0Zyb21IaWVyYXJjaHk9ZnVuY3Rpb24odCxlLGksbixzLG8pe2xldCByPVtdLGE9W10saD1uZXcgT087aC5lbnF1ZXVlKHQpO2xldCBBPW0obyk7Zm9yKDtoLmxlbmd0aCE9PTA7KXtsZXQgZD1oLmRlcXVldWUoKSxmPWQucG9zaXRpb25zLEU9ZC5ob2xlcyxfLFI7aWYobilmb3IoUj1mLmxlbmd0aCxfPTA7XzxSO18rKylzLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZltfXSxmW19dKTtpZihlfHwoZj1YbihmLGwuZXF1YWxzRXBzaWxvbiwhMCkpLGYubGVuZ3RoPDMpY29udGludWU7bGV0IEk9aShmKTtpZighbShJKSljb250aW51ZTtsZXQgQz1bXSxOPXVpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChJKTtpZihOPT09TXMuQ0xPQ0tXSVNFJiYoSS5yZXZlcnNlKCksZj1mLnNsaWNlKCkucmV2ZXJzZSgpKSxBKXtBPSExO2xldCBNPVtmXTtpZihNPW8oTSxNKSxNLmxlbmd0aD4xKXtmb3IobGV0IFEgb2YgTSloLmVucXVldWUobmV3IHNmKFEsRSkpO2NvbnRpbnVlfX1sZXQgVD1mLnNsaWNlKCksRj1tKEUpP0UubGVuZ3RoOjAsYj1bXSxHO2ZvcihfPTA7XzxGO18rKyl7bGV0IE09RVtfXSxRPU0ucG9zaXRpb25zO2lmKG4pZm9yKFI9US5sZW5ndGgsRz0wO0c8UjsrK0cpcy5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKFFbR10sUVtHXSk7aWYoZXx8KFE9WG4oUSxsLmVxdWFsc0Vwc2lsb24sITApKSxRLmxlbmd0aDwzKWNvbnRpbnVlO2xldCBVPWkoUSk7aWYoIW0oVSkpY29udGludWU7Tj11aS5jb21wdXRlV2luZGluZ09yZGVyMkQoVSksTj09PU1zLkNMT0NLV0lTRSYmKFUucmV2ZXJzZSgpLFE9US5zbGljZSgpLnJldmVyc2UoKSksYi5wdXNoKFEpLEMucHVzaChULmxlbmd0aCksVD1ULmNvbmNhdChRKSxJPUkuY29uY2F0KFUpO2xldCBrPTA7Zm9yKG0oTS5ob2xlcykmJihrPU0uaG9sZXMubGVuZ3RoKSxHPTA7RzxrO0crKyloLmVucXVldWUoTS5ob2xlc1tHXSl9ci5wdXNoKHtvdXRlclJpbmc6Zixob2xlczpifSksYS5wdXNoKHtwb3NpdGlvbnM6VCxwb3NpdGlvbnMyRDpJLGhvbGVzOkN9KX1yZXR1cm57aGllcmFyY2h5OnIscG9seWdvbnM6YX19O0xjdD1uZXcgbnQseWN0PW5ldyBsLHdjdD1uZXcgQWUseGN0PW5ldyBsdDtNbi5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGksbixzKXtsZXQgbz1BZS5mcm9tQXhpc0FuZ2xlKHQsbix3Y3QpLHI9bHQuZnJvbVF1YXRlcm5pb24obyx4Y3QpLGE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGg9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGQ9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGY9aS5sZW5ndGg7Zm9yKGxldCBFPTA7RTxmOysrRSl7bGV0IF89bC5jbG9uZShpW0VdLHljdCk7bHQubXVsdGlwbHlCeVZlY3RvcihyLF8sXyk7bGV0IFI9ZShfLExjdCk7bShSKSYmKGE9TWF0aC5taW4oYSxSLngpLGg9TWF0aC5tYXgoaCxSLngpLEE9TWF0aC5taW4oQSxSLnkpLGQ9TWF0aC5tYXgoZCxSLnkpKX1yZXR1cm4gcy54PWEscy55PUEscy53aWR0aD1oLWEscy5oZWlnaHQ9ZC1BLHN9O01uLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsaSxuLHMsbyxyKXtsZXQgYT11aS50cmlhbmd1bGF0ZShlLnBvc2l0aW9uczJELGUuaG9sZXMpO2EubGVuZ3RoPDMmJihhPVswLDEsMl0pO2xldCBoPWUucG9zaXRpb25zLEE9bShpKSxkPUE/aS5wb3NpdGlvbnM6dm9pZCAwO2lmKHMpe2xldCBmPWgubGVuZ3RoLEU9bmV3IEFycmF5KGYqMyksXz0wO2ZvcihsZXQgQz0wO0M8ZjtDKyspe2xldCBOPWhbQ107RVtfKytdPU4ueCxFW18rK109Ti55LEVbXysrXT1OLnp9bGV0IFI9e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RX0pfSxpbmRpY2VzOmEscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVN9O0EmJihSLmF0dHJpYnV0ZXMuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOm50LnBhY2tBcnJheShkKX0pKTtsZXQgST1uZXcgc2UoUik7cmV0dXJuIG8ubm9ybWFsP3dpLmNvbXB1dGVOb3JtYWwoSSk6SX1pZihyPT09dGkuR0VPREVTSUMpcmV0dXJuIHVpLmNvbXB1dGVTdWJkaXZpc2lvbih0LGgsYSxkLG4pO2lmKHI9PT10aS5SSFVNQilyZXR1cm4gdWkuY29tcHV0ZVJodW1iTGluZVN1YmRpdmlzaW9uKHQsaCxhLGQsbil9O0N6PVtdLGd6PVtdLFBjdD1uZXcgbCxKY3Q9bmV3IGw7TW4uY29tcHV0ZVdhbGxHZW9tZXRyeT1mdW5jdGlvbih0LGUsaSxuLHMsbyl7bGV0IHIsYSxoLEEsZCxmLEUsXyxSLEk9dC5sZW5ndGgsQz0wLE49MCxUPW0oZSksRj1UP2UucG9zaXRpb25zOnZvaWQgMDtpZihzKWZvcihhPUkqMyoyLHI9bmV3IEFycmF5KGEqMiksVCYmKFI9SSoyKjIsXz1uZXcgQXJyYXkoUioyKSksaD0wO2g8STtoKyspQT10W2hdLGQ9dFsoaCsxKSVJXSxyW0NdPXJbQythXT1BLngsKytDLHJbQ109cltDK2FdPUEueSwrK0MscltDXT1yW0MrYV09QS56LCsrQyxyW0NdPXJbQythXT1kLngsKytDLHJbQ109cltDK2FdPWQueSwrK0MscltDXT1yW0MrYV09ZC56LCsrQyxUJiYoZj1GW2hdLEU9RlsoaCsxKSVJXSxfW05dPV9bTitSXT1mLngsKytOLF9bTl09X1tOK1JdPWYueSwrK04sX1tOXT1fW04rUl09RS54LCsrTixfW05dPV9bTitSXT1FLnksKytOKTtlbHNle2xldCBVPUwuY2hvcmRMZW5ndGgobixpLm1heGltdW1SYWRpdXMpLGs9MDtpZihvPT09dGkuR0VPREVTSUMpZm9yKGg9MDtoPEk7aCsrKWsrPU1uLnN1YmRpdmlkZUxpbmVDb3VudCh0W2hdLHRbKGgrMSklSV0sVSk7ZWxzZSBpZihvPT09dGkuUkhVTUIpZm9yKGg9MDtoPEk7aCsrKWsrPU1uLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KGksdFtoXSx0WyhoKzEpJUldLFUpO2ZvcihhPShrK0kpKjMscj1uZXcgQXJyYXkoYSoyKSxUJiYoUj0oaytJKSoyLF89bmV3IEFycmF5KFIqMikpLGg9MDtoPEk7aCsrKXtBPXRbaF0sZD10WyhoKzEpJUldO2xldCB5LGM7VCYmKGY9RltoXSxFPUZbKGgrMSklSV0pLG89PT10aS5HRU9ERVNJQz8oeT1Nbi5zdWJkaXZpZGVMaW5lKEEsZCxVLGd6KSxUJiYoYz1Nbi5zdWJkaXZpZGVUZXhjb29yZExpbmUoZixFLEEsZCxVLEN6KSkpOm89PT10aS5SSFVNQiYmKHk9TW4uc3ViZGl2aWRlUmh1bWJMaW5lKGksQSxkLFUsZ3opLFQmJihjPU1uLnN1YmRpdmlkZVRleGNvb3JkUmh1bWJMaW5lKGYsRSxpLEEsZCxVLEN6KSkpO2xldCBnPXkubGVuZ3RoO2ZvcihsZXQgVj0wO1Y8ZzsrK1YsKytDKXJbQ109eVtWXSxyW0MrYV09eVtWXTtpZihyW0NdPWQueCxyW0MrYV09ZC54LCsrQyxyW0NdPWQueSxyW0MrYV09ZC55LCsrQyxyW0NdPWQueixyW0MrYV09ZC56LCsrQyxUKXtsZXQgVj1jLmxlbmd0aDtmb3IobGV0IEQ9MDtEPFY7KytELCsrTilfW05dPWNbRF0sX1tOK1JdPWNbRF07X1tOXT1FLngsX1tOK1JdPUUueCwrK04sX1tOXT1FLnksX1tOK1JdPUUueSwrK059fX1JPXIubGVuZ3RoO2xldCBiPXRlLmNyZWF0ZVR5cGVkQXJyYXkoSS8zLEktdC5sZW5ndGgqNiksRz0wO2ZvcihJLz02LGg9MDtoPEk7aCsrKXtsZXQgVT1oLGs9VSsxLHk9VStJLGM9eSsxO0E9bC5mcm9tQXJyYXkocixVKjMsUGN0KSxkPWwuZnJvbUFycmF5KHIsayozLEpjdCksIWwuZXF1YWxzRXBzaWxvbihBLGQsTC5FUFNJTE9OMTAsTC5FUFNJTE9OMTApJiYoYltHKytdPVUsYltHKytdPXksYltHKytdPWssYltHKytdPWssYltHKytdPXksYltHKytdPWMpfWxldCBNPXthdHRyaWJ1dGVzOm5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpyfSl9KSxpbmRpY2VzOmIscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVN9O3JldHVybiBUJiYoTS5hdHRyaWJ1dGVzLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpffSkpLG5ldyBzZShNKX07aWk9TW59KTtmdW5jdGlvbiBzbHQodCxlLGksbixzLG8scixhLGgpe2xldCBBPXQucG9zaXRpb25zLGQ9dWkudHJpYW5ndWxhdGUodC5wb3NpdGlvbnMyRCx0LmhvbGVzKTtkLmxlbmd0aDwzJiYoZD1bMCwxLDJdKTtsZXQgZj10ZS5jcmVhdGVUeXBlZEFycmF5KEEubGVuZ3RoLGQubGVuZ3RoKTtmLnNldChkKTtsZXQgRT1lbHQ7aWYobiE9PTApe2xldCBjPUFlLmZyb21BeGlzQW5nbGUocixuLGJ6KTtpZihFPWx0LmZyb21RdWF0ZXJuaW9uKGMsRSksZS50YW5nZW50fHxlLmJpdGFuZ2VudCl7Yz1BZS5mcm9tQXhpc0FuZ2xlKHIsLW4sYnopO2xldCBnPWx0LmZyb21RdWF0ZXJuaW9uKGMsaWx0KTthPWwubm9ybWFsaXplKGx0Lm11bHRpcGx5QnlWZWN0b3IoZyxhLGEpLGEpLGUuYml0YW5nZW50JiYoaD1sLm5vcm1hbGl6ZShsLmNyb3NzKHIsYSxoKSxoKSl9fWVsc2UgRT1sdC5jbG9uZShsdC5JREVOVElUWSxFKTtsZXQgXz16Y3Q7ZS5zdCYmKF8ueD1pLngsXy55PWkueSk7bGV0IFI9QS5sZW5ndGgsST1SKjMsQz1uZXcgRmxvYXQ2NEFycmF5KEkpLE49ZS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShJKTp2b2lkIDAsVD1lLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShJKTp2b2lkIDAsRj1lLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KEkpOnZvaWQgMCxiPWUuc3Q/bmV3IEZsb2F0MzJBcnJheShSKjIpOnZvaWQgMCxHPTAsTT0wLFE9MCxVPTAsaz0wO2ZvcihsZXQgYz0wO2M8UjtjKyspe2xldCBnPUFbY107aWYoQ1tHKytdPWcueCxDW0crK109Zy55LENbRysrXT1nLnosZS5zdClpZihtKHMpJiZzLnBvc2l0aW9ucy5sZW5ndGg9PT1SKWJbaysrXT1zLnBvc2l0aW9uc1tjXS54LGJbaysrXT1zLnBvc2l0aW9uc1tjXS55O2Vsc2V7bGV0IFY9bHQubXVsdGlwbHlCeVZlY3RvcihFLGcsamN0KSxEPW8oVix2Y3QpO250LnN1YnRyYWN0KEQsXyxEKTtsZXQgdz1MLmNsYW1wKEQueC9pLndpZHRoLDAsMSkseD1MLmNsYW1wKEQueS9pLmhlaWdodCwwLDEpO2JbaysrXT13LGJbaysrXT14fWUubm9ybWFsJiYoTltNKytdPXIueCxOW00rK109ci55LE5bTSsrXT1yLnopLGUudGFuZ2VudCYmKFRbVSsrXT1hLngsVFtVKytdPWEueSxUW1UrK109YS56KSxlLmJpdGFuZ2VudCYmKEZbUSsrXT1oLngsRltRKytdPWgueSxGW1ErK109aC56KX1sZXQgeT1uZXcgd2U7cmV0dXJuIGUucG9zaXRpb24mJih5LnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Q30pKSxlLm5vcm1hbCYmKHkubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpOfSkpLGUudGFuZ2VudCYmKHkudGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6VH0pKSxlLmJpdGFuZ2VudCYmKHkuYml0YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpGfSkpLGUuc3QmJih5LnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpifSkpLG5ldyBzZSh7YXR0cmlidXRlczp5LGluZGljZXM6ZixwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFU30pfWZ1bmN0aW9uIGRkKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksaT10LnRleHR1cmVDb29yZGluYXRlcztwLmRlZmluZWQoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsZSk7bGV0IG49Wih0LnZlcnRleEZvcm1hdCxPdC5ERUZBVUxUKTt0aGlzLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUobiksdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3N0Um90YXRpb249Wih0LnN0Um90YXRpb24sMCksdGhpcy5fZWxsaXBzb2lkPW90LmNsb25lKFoodC5lbGxpcHNvaWQsb3QuV0dTODQpKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3BsYW5hclBvbHlnb25HZW9tZXRyeSIsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVzPWksdGhpcy5wYWNrZWRMZW5ndGg9aWkuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChlLGwpK090LnBhY2tlZExlbmd0aCtvdC5wYWNrZWRMZW5ndGgrKG0oaSk/aWkuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChpLG50KToxKSsyfXZhciBqY3QsSGN0LHZjdCx6Y3QsS2N0LFhjdCxxY3QsX1IsJGN0LHRsdCxieixlbHQsaWx0LG5sdCxvbHQscmx0LGFsdCxWTyxGej1PKCgpPT57T2EoKTtFcigpO19pKCk7WGUoKTtIdCgpO2FlKCk7b2koKTtUTygpO2J0KCk7bXQoKTtWZSgpO3lpKCk7amkoKTtFbigpO3VBKCk7Z0EoKTtEaSgpO19lKCk7ZG4oKTtFUigpO1BhKCk7WGkoKTskcygpO0xzKCk7amN0PW5ldyBsLEhjdD1uZXcgbWksdmN0PW5ldyBudCx6Y3Q9bmV3IG50LEtjdD1uZXcgbCxYY3Q9bmV3IGwscWN0PW5ldyBsLF9SPW5ldyBsLCRjdD1uZXcgbCx0bHQ9bmV3IGwsYno9bmV3IEFlLGVsdD1uZXcgbHQsaWx0PW5ldyBsdCxubHQ9bmV3IGw7ZGQuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsdC5wb3NpdGlvbnMpO2xldCBlPXtwb2x5Z29uSGllcmFyY2h5Ontwb3NpdGlvbnM6dC5wb3NpdGlvbnN9LHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxzdFJvdGF0aW9uOnQuc3RSb3RhdGlvbixlbGxpcHNvaWQ6dC5lbGxpcHNvaWQsdGV4dHVyZUNvb3JkaW5hdGVzOnQudGV4dHVyZUNvb3JkaW5hdGVzfTtyZXR1cm4gbmV3IGRkKGUpfTtkZC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksaT1paS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsaSxsKSxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fc3RSb3RhdGlvbixtKHQuX3RleHR1cmVDb29yZGluYXRlcyk/aT1paS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZSxpLG50KTplW2krK109LTEsZVtpKytdPXQucGFja2VkTGVuZ3RoLGV9O29sdD1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSkscmx0PW5ldyBPdCxhbHQ9e3BvbHlnb25IaWVyYXJjaHk6e319O2RkLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49aWkudW5wYWNrUG9seWdvbkhpZXJhcmNoeSh0LGUsbCk7ZT1uLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIG4uc3RhcnRpbmdJbmRleDtsZXQgcz1vdC51bnBhY2sodCxlLG9sdCk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPU90LnVucGFjayh0LGUscmx0KTtlKz1PdC5wYWNrZWRMZW5ndGg7bGV0IHI9dFtlKytdLGE9dFtlXT09PS0xP3ZvaWQgMDppaS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxudCk7bShhKT8oZT1hLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIGEuc3RhcnRpbmdJbmRleCk6ZSsrO2xldCBoPXRbZSsrXTtyZXR1cm4gbShpKXx8KGk9bmV3IGRkKGFsdCkpLGkuX3BvbHlnb25IaWVyYXJjaHk9bixpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShvLGkuX3ZlcnRleEZvcm1hdCksaS5fc3RSb3RhdGlvbj1yLGkuX3RleHR1cmVDb29yZGluYXRlcz1hLGkucGFja2VkTGVuZ3RoPWgsaX07ZGQuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fdmVydGV4Rm9ybWF0LGk9dC5fcG9seWdvbkhpZXJhcmNoeSxuPXQuX3N0Um90YXRpb24scz10Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsbz1tKHMpLHI9aS5wb3NpdGlvbnM7aWYocj1YbihyLGwuZXF1YWxzRXBzaWxvbiwhMCksci5sZW5ndGg8MylyZXR1cm47bGV0IGE9S2N0LGg9WGN0LEE9cWN0LGQ9JGN0LGY9dGx0O2lmKCFGZi5jb21wdXRlUHJvamVjdFRvMkRBcmd1bWVudHMocixfUixkLGYpKXJldHVybjtpZihhPWwuY3Jvc3MoZCxmLGEpLGE9bC5ub3JtYWxpemUoYSxhKSwhbC5lcXVhbHNFcHNpbG9uKF9SLGwuWkVSTyxMLkVQU0lMT042KSl7bGV0IGs9dC5fZWxsaXBzb2lkLmdlb2RldGljU3VyZmFjZU5vcm1hbChfUixubHQpO2wuZG90KGEsayk8MCYmKGE9bC5uZWdhdGUoYSxhKSxkPWwubmVnYXRlKGQsZCkpfWxldCBfPUZmLmNyZWF0ZVByb2plY3RQb2ludHNUbzJERnVuY3Rpb24oX1IsZCxmKSxSPUZmLmNyZWF0ZVByb2plY3RQb2ludFRvMkRGdW5jdGlvbihfUixkLGYpO2UudGFuZ2VudCYmKGg9bC5jbG9uZShkLGgpKSxlLmJpdGFuZ2VudCYmKEE9bC5jbG9uZShmLEEpKTtsZXQgST1paS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkoaSxvLF8sITEpLEM9SS5oaWVyYXJjaHksTj1JLnBvbHlnb25zLFQ9ZnVuY3Rpb24oayl7cmV0dXJuIGt9LEY9bz9paS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkocywhMCxULCExKS5wb2x5Z29uczp2b2lkIDA7aWYoQy5sZW5ndGg9PT0wKXJldHVybjtyPUNbMF0ub3V0ZXJSaW5nO2xldCBiPU50LmZyb21Qb2ludHMociksRz1paS5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGUoYSxSLHIsbixIY3QpLE09W107Zm9yKGxldCBrPTA7azxOLmxlbmd0aDtrKyspe2xldCB5PW5ldyBMbih7Z2VvbWV0cnk6c2x0KE5ba10sZSxHLG4sbz9GW2tdOnZvaWQgMCxSLGEsaCxBKX0pO00ucHVzaCh5KX1sZXQgUT13aS5jb21iaW5lSW5zdGFuY2VzKE0pWzBdO1EuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9bmV3IEZsb2F0NjRBcnJheShRLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzKSxRLmluZGljZXM9dGUuY3JlYXRlVHlwZWRBcnJheShRLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLFEuaW5kaWNlcyk7bGV0IFU9US5hdHRyaWJ1dGVzO3JldHVybiBlLnBvc2l0aW9ufHxkZWxldGUgVS5wb3NpdGlvbixuZXcgc2Uoe2F0dHJpYnV0ZXM6VSxpbmRpY2VzOlEuaW5kaWNlcyxwcmltaXRpdmVUeXBlOlEucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTpifSl9O1ZPPWRkfSk7dmFyIEdPPXt9O0hlKEdPLHtkZWZhdWx0OigpPT5obHR9KTtmdW5jdGlvbiBBbHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9Vk8udW5wYWNrKHQsZSkpLFZPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBobHQsQk89TygoKT0+e0Z6KCk7bXQoKTtobHQ9QWx0fSk7ZnVuY3Rpb24gY2x0KHQpe2xldCBlPXQubGVuZ3RoLGk9bmV3IEZsb2F0NjRBcnJheShlKjMpLG49dGUuY3JlYXRlVHlwZWRBcnJheShlLGUqMikscz0wLG89MDtmb3IobGV0IGE9MDthPGU7YSsrKXtsZXQgaD10W2FdO2lbcysrXT1oLngsaVtzKytdPWgueSxpW3MrK109aC56LG5bbysrXT1hLG5bbysrXT0oYSsxKSVlfWxldCByPW5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczppfSl9KTtyZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOnIsaW5kaWNlczpuLHByaW1pdGl2ZVR5cGU6bmUuTElORVN9KX1mdW5jdGlvbiBtZCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb2x5Z29uSGllcmFyY2h5O3AuZGVmaW5lZCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5IixlKSx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlQ29wbGFuYXJQb2x5Z29uT3V0bGluZUdlb21ldHJ5Iix0aGlzLnBhY2tlZExlbmd0aD1paS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsbCkrMX12YXIgbGx0LFdPLFl6PU8oKCk9PntPYSgpO19pKCk7SHQoKTthZSgpO29pKCk7VE8oKTtidCgpO210KCk7eWkoKTtqaSgpO0VuKCk7dUEoKTtnQSgpO0RpKCk7RVIoKTtYaSgpO21kLmZyb21Qb3NpdGlvbnM9ZnVuY3Rpb24odCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLHQucG9zaXRpb25zKTtsZXQgZT17cG9seWdvbkhpZXJhcmNoeTp7cG9zaXRpb25zOnQucG9zaXRpb25zfX07cmV0dXJuIG5ldyBtZChlKX07bWQucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGk9aWkucGFja1BvbHlnb25IaWVyYXJjaHkodC5fcG9seWdvbkhpZXJhcmNoeSxlLGksbCksZVtpXT10LnBhY2tlZExlbmd0aCxlfTtsbHQ9e3BvbHlnb25IaWVyYXJjaHk6e319O21kLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49aWkudW5wYWNrUG9seWdvbkhpZXJhcmNoeSh0LGUsbCk7ZT1uLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIG4uc3RhcnRpbmdJbmRleDtsZXQgcz10W2VdO3JldHVybiBtKGkpfHwoaT1uZXcgbWQobGx0KSksaS5fcG9seWdvbkhpZXJhcmNoeT1uLGkucGFja2VkTGVuZ3RoPXMsaX07bWQuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9seWdvbkhpZXJhcmNoeSxpPWUucG9zaXRpb25zO2lmKGk9WG4oaSxsLmVxdWFsc0Vwc2lsb24sITApLGkubGVuZ3RoPDN8fCFGZi52YWxpZE91dGxpbmUoaSkpcmV0dXJuO2xldCBzPWlpLnBvbHlnb25PdXRsaW5lc0Zyb21IaWVyYXJjaHkoZSwhMSk7aWYocy5sZW5ndGg9PT0wKXJldHVybjtsZXQgbz1bXTtmb3IobGV0IGg9MDtoPHMubGVuZ3RoO2grKyl7bGV0IEE9bmV3IExuKHtnZW9tZXRyeTpjbHQoc1toXSl9KTtvLnB1c2goQSl9bGV0IHI9d2kuY29tYmluZUluc3RhbmNlcyhvKVswXSxhPU50LmZyb21Qb2ludHMoZS5wb3NpdGlvbnMpO3JldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6ci5hdHRyaWJ1dGVzLGluZGljZXM6ci5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6ci5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmF9KX07V089bWR9KTt2YXIgRE89e307SGUoRE8se2RlZmF1bHQ6KCk9Pm1sdH0pO2Z1bmN0aW9uIGRsdCh0LGUpe3JldHVybiBtKGUpJiYodD1XTy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksV08uY3JlYXRlR2VvbWV0cnkodCl9dmFyIG1sdCxNTz1PKCgpPT57WXooKTttdCgpO1ZlKCk7bWx0PWRsdH0pO3ZhciBmbHQsQ24sZmQ9TygoKT0+e2ZsdD17Uk9VTkRFRDowLE1JVEVSRUQ6MSxCRVZFTEVEOjJ9LENuPU9iamVjdC5mcmVlemUoZmx0KX0pO2Z1bmN0aW9uIEd6KHQsZSxpKXtsZXQgbj1RTztuLmxlbmd0aD10O2xldCBzO2lmKGU9PT1pKXtmb3Iocz0wO3M8dDtzKyspbltzXT1lO3JldHVybiBufWxldCByPShpLWUpL3Q7Zm9yKHM9MDtzPHQ7cysrKXtsZXQgYT1lK3MqcjtuW3NdPWF9cmV0dXJuIG59ZnVuY3Rpb24gZ2x0KHQsZSxpLG4scyxvLHIsYSl7bGV0IGg9bi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQsa08pLEE9bi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGUsQ2x0KSxkPXlvLm51bWJlck9mUG9pbnRzKHQsZSxpKSxmPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoaCx2QyksRT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKEEsSEMpLF89R3ooZCxzLG8pO1VPLnNldEVuZFBvaW50cyhmLEUpO2xldCBSPVVPLnN1cmZhY2VEaXN0YW5jZS9kLEk9YTtmLmhlaWdodD1zO2xldCBDPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZixrYyk7bC5wYWNrKEMscixJKSxJKz0zO2ZvcihsZXQgTj0xO048ZDtOKyspe2xldCBUPVVPLmludGVycG9sYXRlVXNpbmdTdXJmYWNlRGlzdGFuY2UoTipSLEhDKTtULmhlaWdodD1fW05dLEM9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihULGtjKSxsLnBhY2soQyxyLEkpLEkrPTN9cmV0dXJuIEl9ZnVuY3Rpb24gVGx0KHQsZSxpLG4scyxvLHIsYSl7bGV0IGg9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LHZDKSxBPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZSxIQyksZD15by5udW1iZXJPZlBvaW50c1JodW1iTGluZShoLEEsaSk7aC5oZWlnaHQ9MCxBLmhlaWdodD0wO2xldCBmPUd6KGQscyxvKTtSUi5lbGxpcHNvaWQuZXF1YWxzKG4pfHwoUlI9bmV3IGVyKHZvaWQgMCx2b2lkIDAsbikpLFJSLnNldEVuZFBvaW50cyhoLEEpO2xldCBFPVJSLnN1cmZhY2VEaXN0YW5jZS9kLF89YTtoLmhlaWdodD1zO2xldCBSPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaCxrYyk7bC5wYWNrKFIscixfKSxfKz0zO2ZvcihsZXQgST0xO0k8ZDtJKyspe2xldCBDPVJSLmludGVycG9sYXRlVXNpbmdTdXJmYWNlRGlzdGFuY2UoSSpFLEhDKTtDLmhlaWdodD1mW0ldLFI9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihDLGtjKSxsLnBhY2soUixyLF8pLF8rPTN9cmV0dXJuIF99dmFyIHlvLEVsdCxfbHQsUmx0LFN6LFpsdCxPeixJbHQscGx0LHVsdCxRTyx2QyxIQyxrYyxrTyxDbHQsVU8sUlIsVnosTmx0LE9uLE9mPU8oKCk9PntIdCgpO3JpKCk7YnQoKTttdCgpO1Z0KCk7VmUoKTtFTigpO0hFKCk7TWwoKTtfZSgpO0ZpKCk7bmgoKTt5bz17fTt5by5udW1iZXJPZlBvaW50cz1mdW5jdGlvbih0LGUsaSl7bGV0IG49bC5kaXN0YW5jZSh0LGUpO3JldHVybiBNYXRoLmNlaWwobi9pKX07eW8ubnVtYmVyT2ZQb2ludHNSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPU1hdGgucG93KHQubG9uZ2l0dWRlLWUubG9uZ2l0dWRlLDIpK01hdGgucG93KHQubGF0aXR1ZGUtZS5sYXRpdHVkZSwyKTtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmNlaWwoTWF0aC5zcXJ0KG4vKGkqaSkpKSl9O0VsdD1uZXcgdXQ7eW8uZXh0cmFjdEhlaWdodHM9ZnVuY3Rpb24odCxlKXtsZXQgaT10Lmxlbmd0aCxuPW5ldyBBcnJheShpKTtmb3IobGV0IHM9MDtzPGk7cysrKXtsZXQgbz10W3NdO25bc109ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhvLEVsdCkuaGVpZ2h0fXJldHVybiBufTtfbHQ9bmV3IGF0LFJsdD1uZXcgbCxTej1uZXcgbCxabHQ9bmV3IEtpKGwuVU5JVF9YLDApLE96PW5ldyBsLElsdD1uZXcgS2kobC5VTklUX1gsMCkscGx0PW5ldyBsLHVsdD1uZXcgbCxRTz1bXTt2Qz1uZXcgdXQsSEM9bmV3IHV0LGtjPW5ldyBsLGtPPW5ldyBsLENsdD1uZXcgbCxVTz1uZXcgYkksUlI9bmV3IGVyO3lvLndyYXBMb25naXR1ZGU9ZnVuY3Rpb24odCxlKXtsZXQgaT1bXSxuPVtdO2lmKG0odCkmJnQubGVuZ3RoPjApe2U9WihlLGF0LklERU5USVRZKTtsZXQgcz1hdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24oZSxfbHQpLG89YXQubXVsdGlwbHlCeVBvaW50KHMsbC5aRVJPLFJsdCkscj1sLm5vcm1hbGl6ZShhdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihzLGwuVU5JVF9ZLFN6KSxTeiksYT1LaS5mcm9tUG9pbnROb3JtYWwobyxyLFpsdCksaD1sLm5vcm1hbGl6ZShhdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihzLGwuVU5JVF9YLE96KSxPeiksQT1LaS5mcm9tUG9pbnROb3JtYWwobyxoLElsdCksZD0xO2kucHVzaChsLmNsb25lKHRbMF0pKTtsZXQgZj1pWzBdLEU9dC5sZW5ndGg7Zm9yKGxldCBfPTE7XzxFOysrXyl7bGV0IFI9dFtfXTtpZihLaS5nZXRQb2ludERpc3RhbmNlKEEsZik8MHx8S2kuZ2V0UG9pbnREaXN0YW5jZShBLFIpPDApe2xldCBJPW5vLmxpbmVTZWdtZW50UGxhbmUoZixSLGEscGx0KTtpZihtKEkpKXtsZXQgQz1sLm11bHRpcGx5QnlTY2FsYXIociw1ZS05LHVsdCk7S2kuZ2V0UG9pbnREaXN0YW5jZShhLGYpPDAmJmwubmVnYXRlKEMsQyksaS5wdXNoKGwuYWRkKEksQyxuZXcgbCkpLG4ucHVzaChkKzEpLGwubmVnYXRlKEMsQyksaS5wdXNoKGwuYWRkKEksQyxuZXcgbCkpLGQ9MX19aS5wdXNoKGwuY2xvbmUodFtfXSkpLGQrKyxmPVJ9bi5wdXNoKGQpfXJldHVybntwb3NpdGlvbnM6aSxsZW5ndGhzOm59fTt5by5nZW5lcmF0ZUFyYz1mdW5jdGlvbih0KXttKHQpfHwodD17fSk7bGV0IGU9dC5wb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2xldCBpPWUubGVuZ3RoLG49Wih0LmVsbGlwc29pZCxvdC5XR1M4NCkscz1aKHQuaGVpZ2h0LDApLG89QXJyYXkuaXNBcnJheShzKTtpZihpPDEpcmV0dXJuW107aWYoaT09PTEpe2xldCBJPW4uc2NhbGVUb0dlb2RldGljU3VyZmFjZShlWzBdLGtPKTtpZihzPW8/c1swXTpzLHMhPT0wKXtsZXQgQz1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChJLGtjKTtsLm11bHRpcGx5QnlTY2FsYXIoQyxzLEMpLGwuYWRkKEksQyxJKX1yZXR1cm5bSS54LEkueSxJLnpdfWxldCByPXQubWluRGlzdGFuY2U7aWYoIW0ocikpe2xldCBJPVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSk7cj1MLmNob3JkTGVuZ3RoKEksbi5tYXhpbXVtUmFkaXVzKX1sZXQgYT0wLGg7Zm9yKGg9MDtoPGktMTtoKyspYSs9eW8ubnVtYmVyT2ZQb2ludHMoZVtoXSxlW2grMV0scik7bGV0IEE9KGErMSkqMyxkPW5ldyBBcnJheShBKSxmPTA7Zm9yKGg9MDtoPGktMTtoKyspe2xldCBJPWVbaF0sQz1lW2grMV0sTj1vP3NbaF06cyxUPW8/c1toKzFdOnM7Zj1nbHQoSSxDLHIsbixOLFQsZCxmKX1RTy5sZW5ndGg9MDtsZXQgRT1lW2ktMV0sXz1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKEUsdkMpO18uaGVpZ2h0PW8/c1tpLTFdOnM7bGV0IFI9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihfLGtjKTtyZXR1cm4gbC5wYWNrKFIsZCxBLTMpLGR9O1Z6PW5ldyB1dCxObHQ9bmV3IHV0O3lvLmdlbmVyYXRlUmh1bWJBcmM9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9e30pO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBZKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgaT1lLmxlbmd0aCxuPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLHM9Wih0LmhlaWdodCwwKSxvPUFycmF5LmlzQXJyYXkocyk7aWYoaTwxKXJldHVybltdO2lmKGk9PT0xKXtsZXQgTj1uLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZVswXSxrTyk7aWYocz1vP3NbMF06cyxzIT09MCl7bGV0IFQ9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoTixrYyk7bC5tdWx0aXBseUJ5U2NhbGFyKFQscyxUKSxsLmFkZChOLFQsTil9cmV0dXJuW04ueCxOLnksTi56XX1sZXQgcj1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLGE9MCxoLEE9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlWzBdLFZ6KSxkO2ZvcihoPTA7aDxpLTE7aCsrKWQ9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlW2grMV0sTmx0KSxhKz15by5udW1iZXJPZlBvaW50c1JodW1iTGluZShBLGQsciksQT11dC5jbG9uZShkLFZ6KTtsZXQgZj0oYSsxKSozLEU9bmV3IEFycmF5KGYpLF89MDtmb3IoaD0wO2g8aS0xO2grKyl7bGV0IE49ZVtoXSxUPWVbaCsxXSxGPW8/c1toXTpzLGI9bz9zW2grMV06cztfPVRsdChOLFQscixuLEYsYixFLF8pfVFPLmxlbmd0aD0wO2xldCBSPWVbaS0xXSxJPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoUix2Qyk7SS5oZWlnaHQ9bz9zW2ktMV06cztsZXQgQz1uLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEksa2MpO3JldHVybiBsLnBhY2soQyxFLGYtMyksRX07eW8uZ2VuZXJhdGVDYXJ0ZXNpYW5BcmM9ZnVuY3Rpb24odCl7bGV0IGU9eW8uZ2VuZXJhdGVBcmModCksaT1lLmxlbmd0aC8zLG49bmV3IEFycmF5KGkpO2ZvcihsZXQgcz0wO3M8aTtzKyspbltzXT1sLnVucGFjayhlLHMqMyk7cmV0dXJuIG59O3lvLmdlbmVyYXRlQ2FydGVzaWFuUmh1bWJBcmM9ZnVuY3Rpb24odCl7bGV0IGU9eW8uZ2VuZXJhdGVSaHVtYkFyYyh0KSxpPWUubGVuZ3RoLzMsbj1uZXcgQXJyYXkoaSk7Zm9yKGxldCBzPTA7czxpO3MrKyluW3NdPWwudW5wYWNrKGUscyozKTtyZXR1cm4gbn07T249eW99KTtmdW5jdGlvbiBaUih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpZGVudGlmaWVyIGlzIHJlcXVpcmVkLiIpO20oQnpbdF0pfHwoQnpbdF09ITAsY29uc29sZS53YXJuKFooZSx0KSkpfXZhciBCeix6QyxMTz1PKCgpPT57YnQoKTttdCgpO1Z0KCk7Qno9e307WlIuZ2VvbWV0cnlPdXRsaW5lcz0iRW50aXR5IGdlb21ldHJ5IG91dGxpbmVzIGFyZSB1bnN1cHBvcnRlZCBvbiB0ZXJyYWluLiBPdXRsaW5lcyB3aWxsIGJlIGRpc2FibGVkLiBUbyBlbmFibGUgb3V0bGluZXMsIGRpc2FibGUgZ2VvbWV0cnkgdGVycmFpbiBjbGFtcGluZyBieSBleHBsaWNpdGx5IHNldHRpbmcgaGVpZ2h0IHRvIDAuIjtaUi5nZW9tZXRyeVpJbmRleD0iRW50aXR5IGdlb21ldHJ5IHdpdGggekluZGV4IGFyZSB1bnN1cHBvcnRlZCB3aGVuIGhlaWdodCBvciBleHRydWRlZEhlaWdodCBhcmUgZGVmaW5lZC4gIHpJbmRleCB3aWxsIGJlIGlnbm9yZWQiO1pSLmdlb21ldHJ5SGVpZ2h0UmVmZXJlbmNlPSJFbnRpdHkgY29ycmlkb3IsIGVsbGlwc2UsIHBvbHlnb24gb3IgcmVjdGFuZ2xlIHdpdGggaGVpZ2h0UmVmZXJlbmNlIG11c3QgYWxzbyBoYXZlIGEgZGVmaW5lZCBoZWlnaHQuICBoZWlnaHRSZWZlcmVuY2Ugd2lsbCBiZSBpZ25vcmVkIjtaUi5nZW9tZXRyeUV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlPSJFbnRpdHkgY29ycmlkb3IsIGVsbGlwc2UsIHBvbHlnb24gb3IgcmVjdGFuZ2xlIHdpdGggZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UgbXVzdCBhbHNvIGhhdmUgYSBkZWZpbmVkIGV4dHJ1ZGVkSGVpZ2h0LiAgZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2Ugd2lsbCBiZSBpZ25vcmVkIjt6Qz1aUn0pO2Z1bmN0aW9uIERsdCh0LGUpe2xldCBpPW5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBzPXRbbl07eU89ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhzLHlPKSxpW25dPXlPLmhlaWdodCx0W25dPWUuc2NhbGVUb0dlb2RldGljU3VyZmFjZShzLHMpfXJldHVybiBpfWZ1bmN0aW9uIHdPKHQsZSxpLG4pe2xldCBzPXRbMF0sbz10WzFdLHI9bC5hbmdsZUJldHdlZW4ocyxvKSxhPU1hdGguY2VpbChyL24pLGg9bmV3IEFycmF5KGEpLEE7aWYoZT09PWkpe2ZvcihBPTA7QTxhO0ErKyloW0FdPWU7cmV0dXJuIGgucHVzaChpKSxofWxldCBmPShpLWUpL2E7Zm9yKEE9MTtBPGE7QSsrKXtsZXQgRT1lK0EqZjtoW0FdPUV9cmV0dXJuIGhbMF09ZSxoLnB1c2goaSksaH1mdW5jdGlvbiBNbHQodCxlLGksbil7bGV0IHM9bmV3IG9vKGksbiksbz1zLnByb2plY3RQb2ludE9udG9QbGFuZShsLmFkZChpLHQsWEMpLFhDKSxyPXMucHJvamVjdFBvaW50T250b1BsYW5lKGwuYWRkKGksZSxxQykscUMpLGE9bnQuYW5nbGVCZXR3ZWVuKG8scik7cmV0dXJuIHIueCpvLnktci55Km8ueD49MD8tYTphfWZ1bmN0aW9uIEZoKHQsZSxpLG4scyxvLHIsYSl7bGV0IGg9TGx0LEE9eWx0O0VkPUluLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHQscyxFZCksaD1hdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihFZCxVbHQsaCksaD1sLm5vcm1hbGl6ZShoLGgpO2xldCBkPU1sdChoLGUsdCxzKTt4Tz1sdC5mcm9tUm90YXRpb25aKGQseE8pLFd6Lno9byxFZD1hdC5tdWx0aXBseVRyYW5zZm9ybWF0aW9uKEVkLGF0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKHhPLFd6LFFsdCksRWQpO2xldCBmPWtsdDtmWzBdPXI7Zm9yKGxldCBFPTA7RTxhO0UrKylmb3IobGV0IF89MDtfPGkubGVuZ3RoO18rPTMpQT1sLmZyb21BcnJheShpLF8sQSksQT1sdC5tdWx0aXBseUJ5VmVjdG9yKGYsQSxBKSxBPWF0Lm11bHRpcGx5QnlQb2ludChFZCxBLEEpLG4ucHVzaChBLngsQS55LEEueik7cmV0dXJuIG59ZnVuY3Rpb24gUE8odCxlLGksbixzLG8scil7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKz0zKXtsZXQgaD1sLmZyb21BcnJheSh0LGEsd2x0KTtuPUZoKGgsZSxpLG4scyxvW2EvM10sciwxKX1yZXR1cm4gbn1mdW5jdGlvbiB4bHQodCxlKXtsZXQgaT10Lmxlbmd0aCxuPW5ldyBBcnJheShpKjYpLHM9MCxvPWUueCtlLndpZHRoLzIscj1lLnkrZS5oZWlnaHQvMixhPXRbMF07bltzKytdPWEueC1vLG5bcysrXT0wLG5bcysrXT1hLnktcjtmb3IobGV0IGg9MTtoPGk7aCsrKXthPXRbaF07bGV0IEE9YS54LW8sZD1hLnktcjtuW3MrK109QSxuW3MrK109MCxuW3MrK109ZCxuW3MrK109QSxuW3MrK109MCxuW3MrK109ZH1yZXR1cm4gYT10WzBdLG5bcysrXT1hLngtbyxuW3MrK109MCxuW3MrK109YS55LXIsbn1mdW5jdGlvbiBEeih0LGUpe2xldCBpPXQubGVuZ3RoLG49bmV3IEFycmF5KGkqMykscz0wLG89ZS54K2Uud2lkdGgvMixyPWUueStlLmhlaWdodC8yO2ZvcihsZXQgYT0wO2E8aTthKyspbltzKytdPXRbYV0ueC1vLG5bcysrXT0wLG5bcysrXT10W2FdLnktcjtyZXR1cm4gbn1mdW5jdGlvbiBreih0LGUsaSxuLHMsbyxyLGEsaCxBKXtsZXQgZD1sLmFuZ2xlQmV0d2VlbihsLnN1YnRyYWN0KGUsdCxWZiksbC5zdWJ0cmFjdChpLHQsS0MpKSxmPW49PT1Dbi5CRVZFTEVEPzA6TWF0aC5jZWlsKGQvTC50b1JhZGlhbnMoNSkpLEU7cz9FPWx0LmZyb21RdWF0ZXJuaW9uKEFlLmZyb21BeGlzQW5nbGUobC5uZWdhdGUodCxWZiksZC8oZisxKSxNeiksUXopOkU9bHQuZnJvbVF1YXRlcm5pb24oQWUuZnJvbUF4aXNBbmdsZSh0LGQvKGYrMSksTXopLFF6KTtsZXQgXyxSO2lmKGU9bC5jbG9uZShlLFV6KSxmPjApe2xldCBJPUE/MjoxO2ZvcihsZXQgQz0wO0M8ZjtDKyspZT1sdC5tdWx0aXBseUJ5VmVjdG9yKEUsZSxlKSxfPWwuc3VidHJhY3QoZSx0LFZmKSxfPWwubm9ybWFsaXplKF8sXyksc3x8KF89bC5uZWdhdGUoXyxfKSksUj1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZSxLQykscj1GaChSLF8sYSxyLG8saCwxLEkpfWVsc2UgXz1sLnN1YnRyYWN0KGUsdCxWZiksXz1sLm5vcm1hbGl6ZShfLF8pLHN8fChfPWwubmVnYXRlKF8sXykpLFI9by5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGUsS0MpLHI9RmgoUixfLGEscixvLGgsMSwxKSxpPWwuY2xvbmUoaSxVeiksXz1sLnN1YnRyYWN0KGksdCxWZiksXz1sLm5vcm1hbGl6ZShfLF8pLHN8fChfPWwubmVnYXRlKF8sXykpLFI9by5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGksS0MpLHI9RmgoUixfLGEscixvLGgsMSwxKTtyZXR1cm4gcn12YXIgS3MsYmx0LEZsdCxZbHQsU2x0LE9sdCxWbHQsR2x0LEJsdCxXbHQsVmYsS0MsSVIseU8sWEMscUMsVWx0LEVkLFFsdCx4TyxrbHQsTGx0LHlsdCxXeix3bHQsTXosVXosUXosUGx0LEpsdCxMYywkQz1PKCgpPT57WGUoKTtIdCgpO1ZzKCk7cmkoKTtmZCgpO1htKCk7X2UoKTtkbigpO0ZpKCk7T2YoKTskcygpO2ZyKCk7TE8oKTtLcz1bbmV3IGwsbmV3IGxdLGJsdD1uZXcgbCxGbHQ9bmV3IGwsWWx0PW5ldyBsLFNsdD1uZXcgbCxPbHQ9bmV3IGwsVmx0PW5ldyBsLEdsdD1uZXcgbCxCbHQ9bmV3IGwsV2x0PW5ldyBsLFZmPW5ldyBsLEtDPW5ldyBsLElSPXt9LHlPPW5ldyB1dDtYQz1uZXcgbCxxQz1uZXcgbDtVbHQ9bmV3IGwoLTEsMCwwKSxFZD1uZXcgYXQsUWx0PW5ldyBhdCx4Tz1uZXcgbHQsa2x0PWx0LklERU5USVRZLmNsb25lKCksTGx0PW5ldyBsLHlsdD1uZXcgaWUsV3o9bmV3IGw7d2x0PW5ldyBsO016PW5ldyBBZSxVej1uZXcgbCxRej1uZXcgbHQ7SVIucmVtb3ZlRHVwbGljYXRlc0Zyb21TaGFwZT1mdW5jdGlvbih0KXtsZXQgZT10Lmxlbmd0aCxpPVtdO2ZvcihsZXQgbj1lLTEscz0wO3M8ZTtuPXMrKyl7bGV0IG89dFtuXSxyPXRbc107bnQuZXF1YWxzKG8scil8fGkucHVzaChyKX1yZXR1cm4gaX07SVIuYW5nbGVJc0dyZWF0ZXJUaGFuUGk9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9bmV3IG9vKGksbiksbz1zLnByb2plY3RQb2ludE9udG9QbGFuZShsLmFkZChpLHQsWEMpLFhDKSxyPXMucHJvamVjdFBvaW50T250b1BsYW5lKGwuYWRkKGksZSxxQykscUMpO3JldHVybiByLngqby55LXIueSpvLng+PTB9O1BsdD1uZXcgbCxKbHQ9bmV3IGw7SVIuY29tcHV0ZVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsaSxuLHMpe2xldCBvPW4uX2VsbGlwc29pZCxyPURsdCh0LG8pLGE9bi5fZ3JhbnVsYXJpdHksaD1uLl9jb3JuZXJUeXBlLEE9cz94bHQoZSxpKTpEeihlLGkpLGQ9cz9EeihlLGkpOnZvaWQgMCxmPWkuaGVpZ2h0LzIsRT1pLndpZHRoLzIsXz10Lmxlbmd0aCxSPVtdLEk9cz9bXTp2b2lkIDAsQz1ibHQsTj1GbHQsVD1ZbHQsRj1TbHQsYj1PbHQsRz1WbHQsTT1HbHQsUT1CbHQsVT1XbHQsaz10WzBdLHk9dFsxXTtGPW8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGssRiksQz1sLnN1YnRyYWN0KHksayxDKSxDPWwubm9ybWFsaXplKEMsQyksUT1sLmNyb3NzKEYsQyxRKSxRPWwubm9ybWFsaXplKFEsUSk7bGV0IGM9clswXSxnPXJbMV07cyYmKEk9RmgoayxRLGQsSSxvLGMrZiwxLDEpKSxVPWwuY2xvbmUoayxVKSxrPXksTj1sLm5lZ2F0ZShDLE4pO2xldCBWLEQ7Zm9yKGxldCBIPTE7SDxfLTE7SCsrKXtsZXQgaj1zPzI6MTtpZih5PXRbSCsxXSxrLmVxdWFscyh5KSl7ekMoIlBvc2l0aW9ucyBhcmUgdG9vIGNsb3NlIGFuZCBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IHdpdGggcm91bmRpbmcgZXJyb3IuIik7Y29udGludWV9Qz1sLnN1YnRyYWN0KHksayxDKSxDPWwubm9ybWFsaXplKEMsQyksVD1sLmFkZChDLE4sVCksVD1sLm5vcm1hbGl6ZShULFQpLEY9by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoayxGKTtsZXQgWD1sLm11bHRpcGx5QnlTY2FsYXIoRixsLmRvdChDLEYpLFBsdCk7bC5zdWJ0cmFjdChDLFgsWCksbC5ub3JtYWxpemUoWCxYKTtsZXQgdHQ9bC5tdWx0aXBseUJ5U2NhbGFyKEYsbC5kb3QoTixGKSxKbHQpO2lmKGwuc3VidHJhY3QoTix0dCx0dCksbC5ub3JtYWxpemUodHQsdHQpLCFMLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMobC5kb3QoWCx0dCkpLDEsTC5FUFNJTE9ONykpe1Q9bC5jcm9zcyhULEYsVCksVD1sLmNyb3NzKEYsVCxUKSxUPWwubm9ybWFsaXplKFQsVCk7bGV0IEl0PTEvTWF0aC5tYXgoLjI1LGwubWFnbml0dWRlKGwuY3Jvc3MoVCxOLFZmKSkpLGd0PUlSLmFuZ2xlSXNHcmVhdGVyVGhhblBpKEMsTixrLG8pO2d0PyhiPWwuYWRkKGssbC5tdWx0aXBseUJ5U2NhbGFyKFQsSXQqRSxUKSxiKSxHPWwuYWRkKGIsbC5tdWx0aXBseUJ5U2NhbGFyKFEsRSxHKSxHKSxLc1swXT1sLmNsb25lKFUsS3NbMF0pLEtzWzFdPWwuY2xvbmUoRyxLc1sxXSksVj13TyhLcyxjK2YsZytmLGEpLEQ9T24uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczpLcyxncmFudWxhcml0eTphLGVsbGlwc29pZDpvfSksUj1QTyhELFEsQSxSLG8sViwxKSxRPWwuY3Jvc3MoRixDLFEpLFE9bC5ub3JtYWxpemUoUSxRKSxNPWwuYWRkKGIsbC5tdWx0aXBseUJ5U2NhbGFyKFEsRSxNKSxNKSxoPT09Q24uUk9VTkRFRHx8aD09PUNuLkJFVkVMRUQ/a3ooYixHLE0saCxndCxvLFIsQSxnK2Yscyk6KFQ9bC5uZWdhdGUoVCxUKSxSPUZoKGssVCxBLFIsbyxnK2YsSXQsaikpLFU9bC5jbG9uZShNLFUpKTooYj1sLmFkZChrLGwubXVsdGlwbHlCeVNjYWxhcihULEl0KkUsVCksYiksRz1sLmFkZChiLGwubXVsdGlwbHlCeVNjYWxhcihRLC1FLEcpLEcpLEtzWzBdPWwuY2xvbmUoVSxLc1swXSksS3NbMV09bC5jbG9uZShHLEtzWzFdKSxWPXdPKEtzLGMrZixnK2YsYSksRD1Pbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOktzLGdyYW51bGFyaXR5OmEsZWxsaXBzb2lkOm99KSxSPVBPKEQsUSxBLFIsbyxWLDEpLFE9bC5jcm9zcyhGLEMsUSksUT1sLm5vcm1hbGl6ZShRLFEpLE09bC5hZGQoYixsLm11bHRpcGx5QnlTY2FsYXIoUSwtRSxNKSxNKSxoPT09Q24uUk9VTkRFRHx8aD09PUNuLkJFVkVMRUQ/a3ooYixHLE0saCxndCxvLFIsQSxnK2Yscyk6Uj1GaChrLFQsQSxSLG8sZytmLEl0LGopLFU9bC5jbG9uZShNLFUpKSxOPWwubmVnYXRlKEMsTil9ZWxzZSBSPUZoKFUsUSxBLFIsbyxjK2YsMSwxKSxVPWs7Yz1nLGc9cltIKzFdLGs9eX1Lc1swXT1sLmNsb25lKFUsS3NbMF0pLEtzWzFdPWwuY2xvbmUoayxLc1sxXSksVj13TyhLcyxjK2YsZytmLGEpLEQ9T24uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczpLcyxncmFudWxhcml0eTphLGVsbGlwc29pZDpvfSksUj1QTyhELFEsQSxSLG8sViwxKSxzJiYoST1GaChrLFEsZCxJLG8sZytmLDEsMSkpLF89Ui5sZW5ndGg7bGV0IHc9cz9fK0kubGVuZ3RoOl8seD1uZXcgRmxvYXQ2NEFycmF5KHcpO3JldHVybiB4LnNldChSKSxzJiZ4LnNldChJLF8pLHh9O0xjPUlSfSk7ZnVuY3Rpb24gdGcodCxlLGksbixzKXtsZXQgbz1sLmFuZ2xlQmV0d2VlbihsLnN1YnRyYWN0KGUsdCxHZiksbC5zdWJ0cmFjdChpLHQsUHopKSxyPW49PT1Dbi5CRVZFTEVEPzE6TWF0aC5jZWlsKG8vTC50b1JhZGlhbnMoNSkpKzEsYT1yKjMsaD1uZXcgQXJyYXkoYSk7aFthLTNdPWkueCxoW2EtMl09aS55LGhbYS0xXT1pLno7bGV0IEE7cz9BPWx0LmZyb21RdWF0ZXJuaW9uKEFlLmZyb21BeGlzQW5nbGUobC5uZWdhdGUodCxHZiksby9yLHl6KSx3eik6QT1sdC5mcm9tUXVhdGVybmlvbihBZS5mcm9tQXhpc0FuZ2xlKHQsby9yLHl6KSx3eik7bGV0IGQ9MDtlPWwuY2xvbmUoZSxHZik7Zm9yKGxldCBmPTA7ZjxyO2YrKyllPWx0Lm11bHRpcGx5QnlWZWN0b3IoQSxlLGUpLGhbZCsrXT1lLngsaFtkKytdPWUueSxoW2QrK109ZS56O3JldHVybiBofWZ1bmN0aW9uIHRkdCh0KXtsZXQgZT1KeixpPWp6LG49SHoscz10WzFdO2k9bC5mcm9tQXJyYXkodFsxXSxzLmxlbmd0aC0zLGkpLG49bC5mcm9tQXJyYXkodFswXSwwLG4pLGU9bC5taWRwb2ludChpLG4sZSk7bGV0IG89dGcoZSxpLG4sQ24uUk9VTkRFRCwhMSkscj10Lmxlbmd0aC0xLGE9dFtyLTFdO3M9dFtyXSxpPWwuZnJvbUFycmF5KGEsYS5sZW5ndGgtMyxpKSxuPWwuZnJvbUFycmF5KHMsMCxuKSxlPWwubWlkcG9pbnQoaSxuLGUpO2xldCBoPXRnKGUsaSxuLENuLlJPVU5ERUQsITEpO3JldHVybltvLGhdfWZ1bmN0aW9uIHh6KHQsZSxpLG4pe2xldCBzPUdmO3JldHVybiBuP3M9bC5hZGQodCxlLHMpOihlPWwubmVnYXRlKGUsZSkscz1sLmFkZCh0LGUscykpLFtzLngscy55LHMueixpLngsaS55LGkuel19ZnVuY3Rpb24gSk8odCxlLGksbil7bGV0IHM9bmV3IEFycmF5KHQubGVuZ3RoKSxvPW5ldyBBcnJheSh0Lmxlbmd0aCkscj1sLm11bHRpcGx5QnlTY2FsYXIoZSxpLEdmKSxhPWwubmVnYXRlKHIsUHopLGg9MCxBPXQubGVuZ3RoLTE7Zm9yKGxldCBkPTA7ZDx0Lmxlbmd0aDtkKz0zKXtsZXQgZj1sLmZyb21BcnJheSh0LGQsamx0KSxFPWwuYWRkKGYsYSxMeik7c1toKytdPUUueCxzW2grK109RS55LHNbaCsrXT1FLno7bGV0IF89bC5hZGQoZixyLEx6KTtvW0EtLV09Xy56LG9bQS0tXT1fLnksb1tBLS1dPV8ueH1yZXR1cm4gbi5wdXNoKHMsbyksbn12YXIgak8sR2YsUHosamx0LEx6LHdvLEp6LGp6LEh6LEhsdCx2bHQsemx0LEtsdCxYbHQscWx0LCRsdCx5eix3eixlZHQsaWR0LHZpLEhPPU8oKCk9PntIdCgpO2ZkKCk7bXQoKTtfZSgpO2RuKCk7T2YoKTskQygpOyRzKCk7ak89e30sR2Y9bmV3IGwsUHo9bmV3IGwsamx0PW5ldyBsLEx6PW5ldyBsLHdvPVtuZXcgbCxuZXcgbF0sSno9bmV3IGwsano9bmV3IGwsSHo9bmV3IGwsSGx0PW5ldyBsLHZsdD1uZXcgbCx6bHQ9bmV3IGwsS2x0PW5ldyBsLFhsdD1uZXcgbCxxbHQ9bmV3IGwsJGx0PW5ldyBsLHl6PW5ldyBBZSx3ej1uZXcgbHQ7ak8uYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzPWUueCxvPWUueSxyPWUuejttKGkpJiYodFtpXT1zLHRbaSsxXT1vLHRbaSsyXT1yKSxtKG4pJiYodFtuXT1yLHRbbi0xXT1vLHRbbi0yXT1zKX07ZWR0PW5ldyBsLGlkdD1uZXcgbDtqTy5jb21wdXRlUG9zaXRpb25zPWZ1bmN0aW9uKHQpe2xldCBlPXQuZ3JhbnVsYXJpdHksaT10LnBvc2l0aW9ucyxuPXQuZWxsaXBzb2lkLHM9dC53aWR0aC8yLG89dC5jb3JuZXJUeXBlLHI9dC5zYXZlQXR0cmlidXRlcyxhPUp6LGg9anosQT1IeixkPUhsdCxmPXZsdCxFPXpsdCxfPUtsdCxSPVhsdCxJPXFsdCxDPSRsdCxOPVtdLFQ9cj9bXTp2b2lkIDAsRj1yP1tdOnZvaWQgMCxiPWlbMF0sRz1pWzFdO2g9bC5ub3JtYWxpemUobC5zdWJ0cmFjdChHLGIsaCksaCksYT1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChiLGEpLGQ9bC5ub3JtYWxpemUobC5jcm9zcyhhLGgsZCksZCksciYmKFQucHVzaChkLngsZC55LGQueiksRi5wdXNoKGEueCxhLnksYS56KSksXz1sLmNsb25lKGIsXyksYj1HLEE9bC5uZWdhdGUoaCxBKTtsZXQgTSxRPVtdLFUsaz1pLmxlbmd0aDtmb3IoVT0xO1U8ay0xO1UrKyl7YT1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChiLGEpLEc9aVtVKzFdLGg9bC5ub3JtYWxpemUobC5zdWJ0cmFjdChHLGIsaCksaCksZj1sLm5vcm1hbGl6ZShsLmFkZChoLEEsZiksZik7bGV0IGM9bC5tdWx0aXBseUJ5U2NhbGFyKGEsbC5kb3QoaCxhKSxlZHQpO2wuc3VidHJhY3QoaCxjLGMpLGwubm9ybWFsaXplKGMsYyk7bGV0IGc9bC5tdWx0aXBseUJ5U2NhbGFyKGEsbC5kb3QoQSxhKSxpZHQpO2lmKGwuc3VidHJhY3QoQSxnLGcpLGwubm9ybWFsaXplKGcsZyksIUwuZXF1YWxzRXBzaWxvbihNYXRoLmFicyhsLmRvdChjLGcpKSwxLEwuRVBTSUxPTjcpKXtmPWwuY3Jvc3MoZixhLGYpLGY9bC5jcm9zcyhhLGYsZiksZj1sLm5vcm1hbGl6ZShmLGYpO2xldCBEPXMvTWF0aC5tYXgoLjI1LGwubWFnbml0dWRlKGwuY3Jvc3MoZixBLEdmKSkpLHc9TGMuYW5nbGVJc0dyZWF0ZXJUaGFuUGkoaCxBLGIsbik7Zj1sLm11bHRpcGx5QnlTY2FsYXIoZixELGYpLHc/KFI9bC5hZGQoYixmLFIpLEM9bC5hZGQoUixsLm11bHRpcGx5QnlTY2FsYXIoZCxzLEMpLEMpLEk9bC5hZGQoUixsLm11bHRpcGx5QnlTY2FsYXIoZCxzKjIsSSksSSksd29bMF09bC5jbG9uZShfLHdvWzBdKSx3b1sxXT1sLmNsb25lKEMsd29bMV0pLE09T24uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp3byxncmFudWxhcml0eTplLGVsbGlwc29pZDpufSksTj1KTyhNLGQscyxOKSxyJiYoVC5wdXNoKGQueCxkLnksZC56KSxGLnB1c2goYS54LGEueSxhLnopKSxFPWwuY2xvbmUoSSxFKSxkPWwubm9ybWFsaXplKGwuY3Jvc3MoYSxoLGQpLGQpLEk9bC5hZGQoUixsLm11bHRpcGx5QnlTY2FsYXIoZCxzKjIsSSksSSksXz1sLmFkZChSLGwubXVsdGlwbHlCeVNjYWxhcihkLHMsXyksXyksbz09PUNuLlJPVU5ERUR8fG89PT1Dbi5CRVZFTEVEP1EucHVzaCh7bGVmdFBvc2l0aW9uczp0ZyhSLEUsSSxvLHcpfSk6US5wdXNoKHtsZWZ0UG9zaXRpb25zOnh6KGIsbC5uZWdhdGUoZixmKSxJLHcpfSkpOihJPWwuYWRkKGIsZixJKSxDPWwuYWRkKEksbC5uZWdhdGUobC5tdWx0aXBseUJ5U2NhbGFyKGQscyxDKSxDKSxDKSxSPWwuYWRkKEksbC5uZWdhdGUobC5tdWx0aXBseUJ5U2NhbGFyKGQscyoyLFIpLFIpLFIpLHdvWzBdPWwuY2xvbmUoXyx3b1swXSksd29bMV09bC5jbG9uZShDLHdvWzFdKSxNPU9uLmdlbmVyYXRlQXJjKHtwb3NpdGlvbnM6d28sZ3JhbnVsYXJpdHk6ZSxlbGxpcHNvaWQ6bn0pLE49Sk8oTSxkLHMsTiksciYmKFQucHVzaChkLngsZC55LGQueiksRi5wdXNoKGEueCxhLnksYS56KSksRT1sLmNsb25lKFIsRSksZD1sLm5vcm1hbGl6ZShsLmNyb3NzKGEsaCxkKSxkKSxSPWwuYWRkKEksbC5uZWdhdGUobC5tdWx0aXBseUJ5U2NhbGFyKGQscyoyLFIpLFIpLFIpLF89bC5hZGQoSSxsLm5lZ2F0ZShsLm11bHRpcGx5QnlTY2FsYXIoZCxzLF8pLF8pLF8pLG89PT1Dbi5ST1VOREVEfHxvPT09Q24uQkVWRUxFRD9RLnB1c2goe3JpZ2h0UG9zaXRpb25zOnRnKEksRSxSLG8sdyl9KTpRLnB1c2goe3JpZ2h0UG9zaXRpb25zOnh6KGIsZixSLHcpfSkpLEE9bC5uZWdhdGUoaCxBKX1iPUd9YT1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChiLGEpLHdvWzBdPWwuY2xvbmUoXyx3b1swXSksd29bMV09bC5jbG9uZShiLHdvWzFdKSxNPU9uLmdlbmVyYXRlQXJjKHtwb3NpdGlvbnM6d28sZ3JhbnVsYXJpdHk6ZSxlbGxpcHNvaWQ6bn0pLE49Sk8oTSxkLHMsTiksciYmKFQucHVzaChkLngsZC55LGQueiksRi5wdXNoKGEueCxhLnksYS56KSk7bGV0IHk7cmV0dXJuIG89PT1Dbi5ST1VOREVEJiYoeT10ZHQoTikpLHtwb3NpdGlvbnM6Tixjb3JuZXJzOlEsbGVmdHM6VCxub3JtYWxzOkYsZW5kUG9zaXRpb25zOnl9fTt2aT1qT30pO2Z1bmN0aW9uICR6KHQsZSl7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXT1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodFtpXSx0W2ldKTtyZXR1cm4gdH1mdW5jdGlvbiBKYSh0LGUsaSxuLHMsbyl7bGV0IHI9dC5ub3JtYWxzLGE9dC50YW5nZW50cyxoPXQuYml0YW5nZW50cyxBPWwubm9ybWFsaXplKGwuY3Jvc3MoaSxlLHljKSx5Yyk7by5ub3JtYWwmJnZpLmFkZEF0dHJpYnV0ZShyLGUsbixzKSxvLnRhbmdlbnQmJnZpLmFkZEF0dHJpYnV0ZShhLEEsbixzKSxvLmJpdGFuZ2VudCYmdmkuYWRkQXR0cmlidXRlKGgsaSxuLHMpfWZ1bmN0aW9uIHQ1KHQsZSxpKXtsZXQgbj10LnBvc2l0aW9ucyxzPXQuY29ybmVycyxvPXQuZW5kUG9zaXRpb25zLHI9dC5sZWZ0cyxhPXQubm9ybWFscyxoPW5ldyB3ZSxBLGQ9MCxmPTAsRSxfPTAsUjtmb3IoRT0wO0U8bi5sZW5ndGg7RSs9MilSPW5bRV0ubGVuZ3RoLTMsZCs9UixfKz1SKjIsZis9bltFKzFdLmxlbmd0aC0zO2ZvcihkKz0zLGYrPTMsRT0wO0U8cy5sZW5ndGg7RSsrKXtBPXNbRV07bGV0IEN0PXNbRV0ubGVmdFBvc2l0aW9uczttKEN0KT8oUj1DdC5sZW5ndGgsZCs9UixfKz1SKTooUj1zW0VdLnJpZ2h0UG9zaXRpb25zLmxlbmd0aCxmKz1SLF8rPVIpfWxldCBJPW0obyksQztJJiYoQz1vWzBdLmxlbmd0aC0zLGQrPUMsZis9QyxDLz0zLF8rPUMqNik7bGV0IE49ZCtmLFQ9bmV3IEZsb2F0NjRBcnJheShOKSxGPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoTik6dm9pZCAwLGI9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoTik6dm9pZCAwLEc9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShOKTp2b2lkIDAsTT17bm9ybWFsczpGLHRhbmdlbnRzOmIsYml0YW5nZW50czpHfSxRPTAsVT1OLTEsayx5LGMsZyxWPUt6LEQ9WHosdyx4LEg9Qy8yLGo9dGUuY3JlYXRlVHlwZWRBcnJheShOLzMsXyksWD0wO2lmKEkpe3g9ZWcsdz1pZztsZXQgQ3Q9b1swXTtmb3IoVj1sLmZyb21BcnJheShhLDAsViksRD1sLmZyb21BcnJheShyLDAsRCksRT0wO0U8SDtFKyspeD1sLmZyb21BcnJheShDdCwoSC0xLUUpKjMseCksdz1sLmZyb21BcnJheShDdCwoSCtFKSozLHcpLHZpLmFkZEF0dHJpYnV0ZShULHcsUSksdmkuYWRkQXR0cmlidXRlKFQseCx2b2lkIDAsVSksSmEoTSxWLEQsUSxVLGUpLHk9US8zLGc9eSsxLGs9KFUtMikvMyxjPWstMSxqW1grK109ayxqW1grK109eSxqW1grK109YyxqW1grK109YyxqW1grK109eSxqW1grK109ZyxRKz0zLFUtPTN9bGV0IHR0PTAsQj0wLEl0PW5bdHQrK10sZ3Q9blt0dCsrXTtULnNldChJdCxRKSxULnNldChndCxVLWd0Lmxlbmd0aCsxKSxEPWwuZnJvbUFycmF5KHIsQixEKTtsZXQgWXQsTXQ7Zm9yKFI9Z3QubGVuZ3RoLTMsRT0wO0U8UjtFKz0zKVl0PWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGwuZnJvbUFycmF5KEl0LEUseWMpLHljKSxNdD1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChsLmZyb21BcnJheShndCxSLUUsQmYpLEJmKSxWPWwubm9ybWFsaXplKGwuYWRkKFl0LE10LFYpLFYpLEphKE0sVixELFEsVSxlKSx5PVEvMyxnPXkrMSxrPShVLTIpLzMsYz1rLTEsaltYKytdPWssaltYKytdPXksaltYKytdPWMsaltYKytdPWMsaltYKytdPXksaltYKytdPWcsUSs9MyxVLT0zO2ZvcihZdD1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChsLmZyb21BcnJheShJdCxSLHljKSx5YyksTXQ9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobC5mcm9tQXJyYXkoZ3QsUixCZiksQmYpLFY9bC5ub3JtYWxpemUobC5hZGQoWXQsTXQsViksViksQis9MyxFPTA7RTxzLmxlbmd0aDtFKyspe2xldCBDdDtBPXNbRV07bGV0IHp0PUEubGVmdFBvc2l0aW9ucyxrdD1BLnJpZ2h0UG9zaXRpb25zLEp0LFd0LEZ0PXF6LGVlPWVnLGNlPWlnO2lmKFY9bC5mcm9tQXJyYXkoYSxCLFYpLG0oenQpKXtmb3IoSmEoTSxWLEQsdm9pZCAwLFUsZSksVS09MyxKdD1nLFd0PWMsQ3Q9MDtDdDx6dC5sZW5ndGgvMztDdCsrKUZ0PWwuZnJvbUFycmF5KHp0LEN0KjMsRnQpLGpbWCsrXT1KdCxqW1grK109V3QtQ3QtMSxqW1grK109V3QtQ3QsdmkuYWRkQXR0cmlidXRlKFQsRnQsdm9pZCAwLFUpLGVlPWwuZnJvbUFycmF5KFQsKFd0LUN0LTEpKjMsZWUpLGNlPWwuZnJvbUFycmF5KFQsSnQqMyxjZSksRD1sLm5vcm1hbGl6ZShsLnN1YnRyYWN0KGVlLGNlLEQpLEQpLEphKE0sVixELHZvaWQgMCxVLGUpLFUtPTM7RnQ9bC5mcm9tQXJyYXkoVCxKdCozLEZ0KSxlZT1sLnN1YnRyYWN0KGwuZnJvbUFycmF5KFQsV3QqMyxlZSksRnQsZWUpLGNlPWwuc3VidHJhY3QobC5mcm9tQXJyYXkoVCwoV3QtQ3QpKjMsY2UpLEZ0LGNlKSxEPWwubm9ybWFsaXplKGwuYWRkKGVlLGNlLEQpLEQpLEphKE0sVixELFEsdm9pZCAwLGUpLFErPTN9ZWxzZXtmb3IoSmEoTSxWLEQsUSx2b2lkIDAsZSksUSs9MyxKdD1jLFd0PWcsQ3Q9MDtDdDxrdC5sZW5ndGgvMztDdCsrKUZ0PWwuZnJvbUFycmF5KGt0LEN0KjMsRnQpLGpbWCsrXT1KdCxqW1grK109V3QrQ3QsaltYKytdPVd0K0N0KzEsdmkuYWRkQXR0cmlidXRlKFQsRnQsUSksZWU9bC5mcm9tQXJyYXkoVCxKdCozLGVlKSxjZT1sLmZyb21BcnJheShULChXdCtDdCkqMyxjZSksRD1sLm5vcm1hbGl6ZShsLnN1YnRyYWN0KGVlLGNlLEQpLEQpLEphKE0sVixELFEsdm9pZCAwLGUpLFErPTM7RnQ9bC5mcm9tQXJyYXkoVCxKdCozLEZ0KSxlZT1sLnN1YnRyYWN0KGwuZnJvbUFycmF5KFQsKFd0K0N0KSozLGVlKSxGdCxlZSksY2U9bC5zdWJ0cmFjdChsLmZyb21BcnJheShULFd0KjMsY2UpLEZ0LGNlKSxEPWwubm9ybWFsaXplKGwubmVnYXRlKGwuYWRkKGNlLGVlLEQpLEQpLEQpLEphKE0sVixELHZvaWQgMCxVLGUpLFUtPTN9Zm9yKEl0PW5bdHQrK10sZ3Q9blt0dCsrXSxJdC5zcGxpY2UoMCwzKSxndC5zcGxpY2UoZ3QubGVuZ3RoLTMsMyksVC5zZXQoSXQsUSksVC5zZXQoZ3QsVS1ndC5sZW5ndGgrMSksUj1ndC5sZW5ndGgtMyxCKz0zLEQ9bC5mcm9tQXJyYXkocixCLEQpLEN0PTA7Q3Q8Z3QubGVuZ3RoO0N0Kz0zKVl0PWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGwuZnJvbUFycmF5KEl0LEN0LHljKSx5YyksTXQ9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobC5mcm9tQXJyYXkoZ3QsUi1DdCxCZiksQmYpLFY9bC5ub3JtYWxpemUobC5hZGQoWXQsTXQsViksViksSmEoTSxWLEQsUSxVLGUpLGc9US8zLHk9Zy0xLGM9KFUtMikvMyxrPWMrMSxqW1grK109ayxqW1grK109eSxqW1grK109YyxqW1grK109YyxqW1grK109eSxqW1grK109ZyxRKz0zLFUtPTM7US09MyxVKz0zfWlmKFY9bC5mcm9tQXJyYXkoYSxhLmxlbmd0aC0zLFYpLEphKE0sVixELFEsVSxlKSxJKXtRKz0zLFUtPTMseD1lZyx3PWlnO2xldCBDdD1vWzFdO2ZvcihFPTA7RTxIO0UrKyl4PWwuZnJvbUFycmF5KEN0LChDLUUtMSkqMyx4KSx3PWwuZnJvbUFycmF5KEN0LEUqMyx3KSx2aS5hZGRBdHRyaWJ1dGUoVCx4LHZvaWQgMCxVKSx2aS5hZGRBdHRyaWJ1dGUoVCx3LFEpLEphKE0sVixELFEsVSxlKSxnPVEvMyx5PWctMSxjPShVLTIpLzMsaz1jKzEsaltYKytdPWssaltYKytdPXksaltYKytdPWMsaltYKytdPWMsaltYKytdPXksaltYKytdPWcsUSs9MyxVLT0zfWlmKGgucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpUfSksZS5zdCl7bGV0IEN0PW5ldyBGbG9hdDMyQXJyYXkoTi8zKjIpLHp0LGt0LEp0PTA7aWYoSSl7ZC89MyxmLz0zO2xldCBXdD1NYXRoLlBJLyhDKzEpO2t0PTEvKGQtQysxKSx6dD0xLyhmLUMrMSk7bGV0IEZ0LGVlPUMvMjtmb3IoRT1lZSsxO0U8QysxO0UrKylGdD1MLlBJX09WRVJfVFdPK1d0KkUsQ3RbSnQrK109enQqKDErTWF0aC5jb3MoRnQpKSxDdFtKdCsrXT0uNSooMStNYXRoLnNpbihGdCkpO2ZvcihFPTE7RTxmLUMrMTtFKyspQ3RbSnQrK109RSp6dCxDdFtKdCsrXT0wO2ZvcihFPUM7RT5lZTtFLS0pRnQ9TC5QSV9PVkVSX1RXTy1FKld0LEN0W0p0KytdPTEtenQqKDErTWF0aC5jb3MoRnQpKSxDdFtKdCsrXT0uNSooMStNYXRoLnNpbihGdCkpO2ZvcihFPWVlO0U+MDtFLS0pRnQ9TC5QSV9PVkVSX1RXTy1XdCpFLEN0W0p0KytdPTEta3QqKDErTWF0aC5jb3MoRnQpKSxDdFtKdCsrXT0uNSooMStNYXRoLnNpbihGdCkpO2ZvcihFPWQtQztFPjA7RS0tKUN0W0p0KytdPUUqa3QsQ3RbSnQrK109MTtmb3IoRT0xO0U8ZWUrMTtFKyspRnQ9TC5QSV9PVkVSX1RXTytXdCpFLEN0W0p0KytdPWt0KigxK01hdGguY29zKEZ0KSksQ3RbSnQrK109LjUqKDErTWF0aC5zaW4oRnQpKX1lbHNle2ZvcihkLz0zLGYvPTMsa3Q9MS8oZC0xKSx6dD0xLyhmLTEpLEU9MDtFPGY7RSsrKUN0W0p0KytdPUUqenQsQ3RbSnQrK109MDtmb3IoRT1kO0U+MDtFLS0pQ3RbSnQrK109KEUtMSkqa3QsQ3RbSnQrK109MX1oLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpDdH0pfXJldHVybiBlLm5vcm1hbCYmKGgubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpNLm5vcm1hbHN9KSksZS50YW5nZW50JiYoaC50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpNLnRhbmdlbnRzfSkpLGUuYml0YW5nZW50JiYoaC5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOk0uYml0YW5nZW50c30pKSx7YXR0cmlidXRlczpoLGluZGljZXM6an19ZnVuY3Rpb24gc2R0KHQsZSl7aWYoIWUubm9ybWFsJiYhZS50YW5nZW50JiYhZS5iaXRhbmdlbnQmJiFlLnN0KXJldHVybiB0O2xldCBpPXQucG9zaXRpb24udmFsdWVzLG4sczsoZS5ub3JtYWx8fGUuYml0YW5nZW50KSYmKG49dC5ub3JtYWwudmFsdWVzLHM9dC5iaXRhbmdlbnQudmFsdWVzKTtsZXQgbz10LnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMTgscj1vKjMsYT1vKjIsaD1yKjIsQTtpZihlLm5vcm1hbHx8ZS5iaXRhbmdlbnR8fGUudGFuZ2VudCl7bGV0IGQ9ZS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShyKjYpOnZvaWQgMCxmPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHIqNik6dm9pZCAwLEU9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShyKjYpOnZvaWQgMCxfPUt6LFI9WHosST1lZyxDPWlnLE49bmR0LFQ9cXosRj1oO2ZvcihBPTA7QTxyO0ErPTMpe2xldCBiPUYraDtfPWwuZnJvbUFycmF5KGksQSxfKSxSPWwuZnJvbUFycmF5KGksQStyLFIpLEk9bC5mcm9tQXJyYXkoaSwoQSszKSVyLEkpLFI9bC5zdWJ0cmFjdChSLF8sUiksST1sLnN1YnRyYWN0KEksXyxJKSxDPWwubm9ybWFsaXplKGwuY3Jvc3MoUixJLEMpLEMpLGUubm9ybWFsJiYodmkuYWRkQXR0cmlidXRlKGQsQyxiKSx2aS5hZGRBdHRyaWJ1dGUoZCxDLGIrMyksdmkuYWRkQXR0cmlidXRlKGQsQyxGKSx2aS5hZGRBdHRyaWJ1dGUoZCxDLEYrMykpLChlLnRhbmdlbnR8fGUuYml0YW5nZW50KSYmKFQ9bC5mcm9tQXJyYXkobixBLFQpLGUuYml0YW5nZW50JiYodmkuYWRkQXR0cmlidXRlKEUsVCxiKSx2aS5hZGRBdHRyaWJ1dGUoRSxULGIrMyksdmkuYWRkQXR0cmlidXRlKEUsVCxGKSx2aS5hZGRBdHRyaWJ1dGUoRSxULEYrMykpLGUudGFuZ2VudCYmKE49bC5ub3JtYWxpemUobC5jcm9zcyhULEMsTiksTiksdmkuYWRkQXR0cmlidXRlKGYsTixiKSx2aS5hZGRBdHRyaWJ1dGUoZixOLGIrMyksdmkuYWRkQXR0cmlidXRlKGYsTixGKSx2aS5hZGRBdHRyaWJ1dGUoZixOLEYrMykpKSxGKz02fWlmKGUubm9ybWFsKXtmb3IoZC5zZXQobiksQT0wO0E8cjtBKz0zKWRbQStyXT0tbltBXSxkW0ErcisxXT0tbltBKzFdLGRbQStyKzJdPS1uW0ErMl07dC5ub3JtYWwudmFsdWVzPWR9ZWxzZSB0Lm5vcm1hbD12b2lkIDA7aWYoZS5iaXRhbmdlbnQ/KEUuc2V0KHMpLEUuc2V0KHMsciksdC5iaXRhbmdlbnQudmFsdWVzPUUpOnQuYml0YW5nZW50PXZvaWQgMCxlLnRhbmdlbnQpe2xldCBiPXQudGFuZ2VudC52YWx1ZXM7Zi5zZXQoYiksZi5zZXQoYixyKSx0LnRhbmdlbnQudmFsdWVzPWZ9fWlmKGUuc3Qpe2xldCBkPXQuc3QudmFsdWVzLGY9bmV3IEZsb2F0MzJBcnJheShhKjYpO2Yuc2V0KGQpLGYuc2V0KGQsYSk7bGV0IEU9YSoyO2ZvcihsZXQgXz0wO188MjtfKyspe2ZvcihmW0UrK109ZFswXSxmW0UrK109ZFsxXSxBPTI7QTxhO0ErPTIpe2xldCBSPWRbQV0sST1kW0ErMV07ZltFKytdPVIsZltFKytdPUksZltFKytdPVIsZltFKytdPUl9ZltFKytdPWRbMF0sZltFKytdPWRbMV19dC5zdC52YWx1ZXM9Zn1yZXR1cm4gdH1mdW5jdGlvbiB2Tyh0LGUsaSl7aVtlKytdPXRbMF0saVtlKytdPXRbMV0saVtlKytdPXRbMl07Zm9yKGxldCBuPTM7bjx0Lmxlbmd0aDtuKz0zKXtsZXQgcz10W25dLG89dFtuKzFdLHI9dFtuKzJdO2lbZSsrXT1zLGlbZSsrXT1vLGlbZSsrXT1yLGlbZSsrXT1zLGlbZSsrXT1vLGlbZSsrXT1yfXJldHVybiBpW2UrK109dFswXSxpW2UrK109dFsxXSxpW2UrK109dFsyXSxpfWZ1bmN0aW9uIG9kdCh0LGUpe2xldCBpPW5ldyBPdCh7cG9zaXRpb246ZS5wb3NpdGlvbixub3JtYWw6ZS5ub3JtYWx8fGUuYml0YW5nZW50fHx0LnNoYWRvd1ZvbHVtZSx0YW5nZW50OmUudGFuZ2VudCxiaXRhbmdlbnQ6ZS5ub3JtYWx8fGUuYml0YW5nZW50LHN0OmUuc3R9KSxuPXQuZWxsaXBzb2lkLHM9dmkuY29tcHV0ZVBvc2l0aW9ucyh0KSxvPXQ1KHMsaSxuKSxyPXQuaGVpZ2h0LGE9dC5leHRydWRlZEhlaWdodCxoPW8uYXR0cmlidXRlcyxBPW8uaW5kaWNlcyxkPWgucG9zaXRpb24udmFsdWVzLGY9ZC5sZW5ndGgsRT1uZXcgRmxvYXQ2NEFycmF5KGYqNiksXz1uZXcgRmxvYXQ2NEFycmF5KGYpO18uc2V0KGQpO2xldCBSPW5ldyBGbG9hdDY0QXJyYXkoZio0KTtkPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChkLHIsbiksUj12TyhkLDAsUiksXz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoXyxhLG4pLFI9dk8oXyxmKjIsUiksRS5zZXQoZCksRS5zZXQoXyxmKSxFLnNldChSLGYqMiksaC5wb3NpdGlvbi52YWx1ZXM9RSxoPXNkdChoLGUpO2xldCBJLEM9Zi8zO2lmKHQuc2hhZG93Vm9sdW1lKXtsZXQgaz1oLm5vcm1hbC52YWx1ZXM7Zj1rLmxlbmd0aDtsZXQgeT1uZXcgRmxvYXQzMkFycmF5KGYqNik7Zm9yKEk9MDtJPGY7SSsrKWtbSV09LWtbSV07eS5zZXQoayxmKSx5PXZPKGssZio0LHkpLGguZXh0cnVkZURpcmVjdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6eX0pLGUubm9ybWFsfHwoaC5ub3JtYWw9dm9pZCAwKX1pZihtKHQub2Zmc2V0QXR0cmlidXRlKSl7bGV0IGs9bmV3IFVpbnQ4QXJyYXkoQyo2KTtpZih0Lm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUClrPWsuZmlsbCgxLDAsQykuZmlsbCgxLEMqMixDKjQpO2Vsc2V7bGV0IHk9dC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MTtrPWsuZmlsbCh5KX1oLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmt9KX1sZXQgTj1BLmxlbmd0aCxUPUMrQyxGPXRlLmNyZWF0ZVR5cGVkQXJyYXkoRS5sZW5ndGgvMyxOKjIrVCozKTtGLnNldChBKTtsZXQgYj1OO2ZvcihJPTA7STxOO0krPTMpe2xldCBrPUFbSV0seT1BW0krMV0sYz1BW0krMl07RltiKytdPWMrQyxGW2IrK109eStDLEZbYisrXT1rK0N9bGV0IEcsTSxRLFU7Zm9yKEk9MDtJPFQ7SSs9MilHPUkrVCxNPUcrVCxRPUcrMSxVPU0rMSxGW2IrK109RyxGW2IrK109TSxGW2IrK109USxGW2IrK109USxGW2IrK109TSxGW2IrK109VTtyZXR1cm57YXR0cmlidXRlczpoLGluZGljZXM6Rn19ZnVuY3Rpb24genoodCxlLGksbixzLG8pe2xldCByPWwuc3VidHJhY3QoZSx0LHZ6KTtsLm5vcm1hbGl6ZShyLHIpO2xldCBhPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQscFIpLGg9bC5jcm9zcyhyLGEsdnopO2wubXVsdGlwbHlCeVNjYWxhcihoLG4saCk7bGV0IEE9cy5sYXRpdHVkZSxkPXMubG9uZ2l0dWRlLGY9by5sYXRpdHVkZSxFPW8ubG9uZ2l0dWRlO2wuYWRkKHQsaCxwUiksaS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhwUiwkcik7bGV0IF89JHIubGF0aXR1ZGUsUj0kci5sb25naXR1ZGU7QT1NYXRoLm1pbihBLF8pLGQ9TWF0aC5taW4oZCxSKSxmPU1hdGgubWF4KGYsXyksRT1NYXRoLm1heChFLFIpLGwuc3VidHJhY3QodCxoLHBSKSxpLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHBSLCRyKSxfPSRyLmxhdGl0dWRlLFI9JHIubG9uZ2l0dWRlLEE9TWF0aC5taW4oQSxfKSxkPU1hdGgubWluKGQsUiksZj1NYXRoLm1heChmLF8pLEU9TWF0aC5tYXgoRSxSKSxzLmxhdGl0dWRlPUEscy5sb25naXR1ZGU9ZCxvLmxhdGl0dWRlPWYsby5sb25naXR1ZGU9RX1mdW5jdGlvbiBlNSh0LGUsaSxuLHMpe3Q9JHoodCxlKTtsZXQgbz1Ybih0LGwuZXF1YWxzRXBzaWxvbikscj1vLmxlbmd0aDtpZihyPDJ8fGk8PTApcmV0dXJuIG5ldyBYdDtsZXQgYT1pKi41O3JyLmxhdGl0dWRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyci5sb25naXR1ZGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGFyLmxhdGl0dWRlPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxhci5sb25naXR1ZGU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2xldCBoLEE7aWYobj09PUNuLlJPVU5ERUQpe2xldCBFPW9bMF07bC5zdWJ0cmFjdChFLG9bMV0scXIpLGwubm9ybWFsaXplKHFyLHFyKSxsLm11bHRpcGx5QnlTY2FsYXIocXIsYSxxciksbC5hZGQoRSxxcix1UiksZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh1UiwkciksaD0kci5sYXRpdHVkZSxBPSRyLmxvbmdpdHVkZSxyci5sYXRpdHVkZT1NYXRoLm1pbihyci5sYXRpdHVkZSxoKSxyci5sb25naXR1ZGU9TWF0aC5taW4ocnIubG9uZ2l0dWRlLEEpLGFyLmxhdGl0dWRlPU1hdGgubWF4KGFyLmxhdGl0dWRlLGgpLGFyLmxvbmdpdHVkZT1NYXRoLm1heChhci5sb25naXR1ZGUsQSl9Zm9yKGxldCBFPTA7RTxyLTE7KytFKXp6KG9bRV0sb1tFKzFdLGUsYSxycixhcik7bGV0IGQ9b1tyLTFdO2wuc3VidHJhY3QoZCxvW3ItMl0scXIpLGwubm9ybWFsaXplKHFyLHFyKSxsLm11bHRpcGx5QnlTY2FsYXIocXIsYSxxciksbC5hZGQoZCxxcix1UiksenooZCx1UixlLGEscnIsYXIpLG49PT1Dbi5ST1VOREVEJiYoZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh1UiwkciksaD0kci5sYXRpdHVkZSxBPSRyLmxvbmdpdHVkZSxyci5sYXRpdHVkZT1NYXRoLm1pbihyci5sYXRpdHVkZSxoKSxyci5sb25naXR1ZGU9TWF0aC5taW4ocnIubG9uZ2l0dWRlLEEpLGFyLmxhdGl0dWRlPU1hdGgubWF4KGFyLmxhdGl0dWRlLGgpLGFyLmxvbmdpdHVkZT1NYXRoLm1heChhci5sb25naXR1ZGUsQSkpO2xldCBmPW0ocyk/czpuZXcgWHQ7cmV0dXJuIGYubm9ydGg9YXIubGF0aXR1ZGUsZi5zb3V0aD1yci5sYXRpdHVkZSxmLmVhc3Q9YXIubG9uZ2l0dWRlLGYud2VzdD1yci5sb25naXR1ZGUsZn1mdW5jdGlvbiBTaCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnMsaT10LndpZHRoO3AuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLGUpLHAuZGVmaW5lZCgib3B0aW9ucy53aWR0aCIsaSk7bGV0IG49Wih0LmhlaWdodCwwKSxzPVoodC5leHRydWRlZEhlaWdodCxuKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShaKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpKSx0aGlzLl93aWR0aD1pLHRoaXMuX2hlaWdodD1NYXRoLm1heChuLHMpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKG4scyksdGhpcy5fY29ybmVyVHlwZT1aKHQuY29ybmVyVHlwZSxDbi5ST1VOREVEKSx0aGlzLl9ncmFudWxhcml0eT1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHRoaXMuX3NoYWRvd1ZvbHVtZT1aKHQuc2hhZG93Vm9sdW1lLCExKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3JyaWRvckdlb21ldHJ5Iix0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLnBhY2tlZExlbmd0aD0xK2UubGVuZ3RoKmwucGFja2VkTGVuZ3RoK290LnBhY2tlZExlbmd0aCtPdC5wYWNrZWRMZW5ndGgrN312YXIgS3osWHosZWcsaWcsbmR0LHF6LHljLEJmLHZ6LHBSLCRyLHFyLHVSLHJyLGFyLGk1LG41LFloLHpPLHM1PU8oKCk9PntPYSgpO19pKCk7SHQoKTtyaSgpO2FlKCk7b2koKTtmZCgpO0hPKCk7YnQoKTttdCgpO1ZlKCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO19lKCk7UGEoKTtYaSgpO3BuKCk7THMoKTtLej1uZXcgbCxYej1uZXcgbCxlZz1uZXcgbCxpZz1uZXcgbCxuZHQ9bmV3IGwscXo9bmV3IGwseWM9bmV3IGwsQmY9bmV3IGw7dno9bmV3IGwscFI9bmV3IGwsJHI9bmV3IHV0O3FyPW5ldyBsLHVSPW5ldyBsLHJyPW5ldyB1dCxhcj1uZXcgdXQ7U2gucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCk7bGV0IG49dC5fcG9zaXRpb25zLHM9bi5sZW5ndGg7ZVtpKytdPXM7Zm9yKGxldCBvPTA7bzxzOysrbyxpKz1sLnBhY2tlZExlbmd0aClsLnBhY2sobltvXSxlLGkpO3JldHVybiBvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fd2lkdGgsZVtpKytdPXQuX2hlaWdodCxlW2krK109dC5fZXh0cnVkZWRIZWlnaHQsZVtpKytdPXQuX2Nvcm5lclR5cGUsZVtpKytdPXQuX2dyYW51bGFyaXR5LGVbaSsrXT10Ll9zaGFkb3dWb2x1bWU/MTowLGVbaV09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O2k1PW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxuNT1uZXcgT3QsWWg9e3Bvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOmk1LHZlcnRleEZvcm1hdDpuNSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsY29ybmVyVHlwZTp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07U2gudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj10W2UrK10scz1uZXcgQXJyYXkobik7Zm9yKGxldCBSPTA7UjxuOysrUixlKz1sLnBhY2tlZExlbmd0aClzW1JdPWwudW5wYWNrKHQsZSk7bGV0IG89b3QudW5wYWNrKHQsZSxpNSk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCByPU90LnVucGFjayh0LGUsbjUpO2UrPU90LnBhY2tlZExlbmd0aDtsZXQgYT10W2UrK10saD10W2UrK10sQT10W2UrK10sZD10W2UrK10sZj10W2UrK10sRT10W2UrK109PT0xLF89dFtlXTtyZXR1cm4gbShpKT8oaS5fcG9zaXRpb25zPXMsaS5fZWxsaXBzb2lkPW90LmNsb25lKG8saS5fZWxsaXBzb2lkKSxpLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUocixpLl92ZXJ0ZXhGb3JtYXQpLGkuX3dpZHRoPWEsaS5faGVpZ2h0PWgsaS5fZXh0cnVkZWRIZWlnaHQ9QSxpLl9jb3JuZXJUeXBlPWQsaS5fZ3JhbnVsYXJpdHk9ZixpLl9zaGFkb3dWb2x1bWU9RSxpLl9vZmZzZXRBdHRyaWJ1dGU9Xz09PS0xP3ZvaWQgMDpfLGkpOihZaC5wb3NpdGlvbnM9cyxZaC53aWR0aD1hLFloLmhlaWdodD1oLFloLmV4dHJ1ZGVkSGVpZ2h0PUEsWWguY29ybmVyVHlwZT1kLFloLmdyYW51bGFyaXR5PWYsWWguc2hhZG93Vm9sdW1lPUUsWWgub2Zmc2V0QXR0cmlidXRlPV89PT0tMT92b2lkIDA6XyxuZXcgU2goWWgpKX07U2guY29tcHV0ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgaT10LnBvc2l0aW9ucyxuPXQud2lkdGg7cC5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsaSkscC5kZWZpbmVkKCJvcHRpb25zLndpZHRoIixuKTtsZXQgcz1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxvPVoodC5jb3JuZXJUeXBlLENuLlJPVU5ERUQpO3JldHVybiBlNShpLHMsbixvLGUpfTtTaC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsaT10Ll93aWR0aCxuPXQuX2VsbGlwc29pZDtlPSR6KGUsbik7bGV0IHM9WG4oZSxsLmVxdWFsc0Vwc2lsb24pO2lmKHMubGVuZ3RoPDJ8fGk8PTApcmV0dXJuO2xldCBvPXQuX2hlaWdodCxyPXQuX2V4dHJ1ZGVkSGVpZ2h0LGE9IUwuZXF1YWxzRXBzaWxvbihvLHIsMCxMLkVQU0lMT04yKSxoPXQuX3ZlcnRleEZvcm1hdCxBPXtlbGxpcHNvaWQ6bixwb3NpdGlvbnM6cyx3aWR0aDppLGNvcm5lclR5cGU6dC5fY29ybmVyVHlwZSxncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eSxzYXZlQXR0cmlidXRlczohMH0sZDtpZihhKUEuaGVpZ2h0PW8sQS5leHRydWRlZEhlaWdodD1yLEEuc2hhZG93Vm9sdW1lPXQuX3NoYWRvd1ZvbHVtZSxBLm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUsZD1vZHQoQSxoKTtlbHNle2xldCBfPXZpLmNvbXB1dGVQb3NpdGlvbnMoQSk7aWYoZD10NShfLGgsbiksZC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoZC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxvLG4pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IFI9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsST1kLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxDPW5ldyBVaW50OEFycmF5KEkvMykuZmlsbChSKTtkLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Q30pfX1sZXQgZj1kLmF0dHJpYnV0ZXMsRT1OdC5mcm9tVmVydGljZXMoZi5wb3NpdGlvbi52YWx1ZXMsdm9pZCAwLDMpO3JldHVybiBoLnBvc2l0aW9ufHwoZC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz12b2lkIDApLG5ldyBzZSh7YXR0cmlidXRlczpmLGluZGljZXM6ZC5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOkUsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtTaC5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuX2dyYW51bGFyaXR5LHM9dC5fZWxsaXBzb2lkLG89ZShuLHMpLHI9aShuLHMpO3JldHVybiBuZXcgU2goe3Bvc2l0aW9uczp0Ll9wb3NpdGlvbnMsd2lkdGg6dC5fd2lkdGgsY29ybmVyVHlwZTp0Ll9jb3JuZXJUeXBlLGVsbGlwc29pZDpzLGdyYW51bGFyaXR5Om4sZXh0cnVkZWRIZWlnaHQ6byxoZWlnaHQ6cix2ZXJ0ZXhGb3JtYXQ6T3QuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoU2gucHJvdG90eXBlLHtyZWN0YW5nbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3JlY3RhbmdsZSl8fCh0aGlzLl9yZWN0YW5nbGU9ZTUodGhpcy5fcG9zaXRpb25zLHRoaXMuX2VsbGlwc29pZCx0aGlzLl93aWR0aCx0aGlzLl9jb3JuZXJUeXBlKSksdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuWzAsMCwwLDEsMSwwXX19fSk7ek89U2h9KTt2YXIgS089e307SGUoS08se2RlZmF1bHQ6KCk9PmFkdH0pO2Z1bmN0aW9uIHJkdCh0LGUpe3JldHVybiBtKGUpJiYodD16Ty51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksek8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIGFkdCxYTz1PKCgpPT57czUoKTttdCgpO1ZlKCk7YWR0PXJkdH0pO2Z1bmN0aW9uIGhkdCh0LGUpe2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV09ZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHRbaV0sdFtpXSk7cmV0dXJuIHR9ZnVuY3Rpb24gYTUodCxlKXtsZXQgaT1bXSxuPXQucG9zaXRpb25zLHM9dC5jb3JuZXJzLG89dC5lbmRQb3NpdGlvbnMscj1uZXcgd2UsYSxoPTAsQT0wLGQsZj0wLEU7Zm9yKGQ9MDtkPG4ubGVuZ3RoO2QrPTIpRT1uW2RdLmxlbmd0aC0zLGgrPUUsZis9RS8zKjQsQSs9bltkKzFdLmxlbmd0aC0zO2ZvcihoKz0zLEErPTMsZD0wO2Q8cy5sZW5ndGg7ZCsrKXthPXNbZF07bGV0IHc9c1tkXS5sZWZ0UG9zaXRpb25zO20odyk/KEU9dy5sZW5ndGgsaCs9RSxmKz1FLzMqMik6KEU9c1tkXS5yaWdodFBvc2l0aW9ucy5sZW5ndGgsQSs9RSxmKz1FLzMqMil9bGV0IF89bShvKSxSO18mJihSPW9bMF0ubGVuZ3RoLTMsaCs9UixBKz1SLFIvPTMsZis9Uio0KTtsZXQgST1oK0EsQz1uZXcgRmxvYXQ2NEFycmF5KEkpLE49MCxUPUktMSxGLGIsRyxNLFEsVSxrPVIvMix5PXRlLmNyZWF0ZVR5cGVkQXJyYXkoSS8zLGYrNCksYz0wO2lmKHlbYysrXT1OLzMseVtjKytdPShULTIpLzMsXyl7aS5wdXNoKE4vMyksVT1vNSxRPXI1O2xldCB3PW9bMF07Zm9yKGQ9MDtkPGs7ZCsrKVU9bC5mcm9tQXJyYXkodywoay0xLWQpKjMsVSksUT1sLmZyb21BcnJheSh3LChrK2QpKjMsUSksdmkuYWRkQXR0cmlidXRlKEMsUSxOKSx2aS5hZGRBdHRyaWJ1dGUoQyxVLHZvaWQgMCxUKSxiPU4vMyxNPWIrMSxGPShULTIpLzMsRz1GLTEseVtjKytdPUYseVtjKytdPUcseVtjKytdPWIseVtjKytdPU0sTis9MyxULT0zfWxldCBnPTAsVj1uW2crK10sRD1uW2crK107Zm9yKEMuc2V0KFYsTiksQy5zZXQoRCxULUQubGVuZ3RoKzEpLEU9RC5sZW5ndGgtMyxpLnB1c2goTi8zLChULTIpLzMpLGQ9MDtkPEU7ZCs9MyliPU4vMyxNPWIrMSxGPShULTIpLzMsRz1GLTEseVtjKytdPUYseVtjKytdPUcseVtjKytdPWIseVtjKytdPU0sTis9MyxULT0zO2ZvcihkPTA7ZDxzLmxlbmd0aDtkKyspe2xldCB3O2E9c1tkXTtsZXQgeD1hLmxlZnRQb3NpdGlvbnMsSD1hLnJpZ2h0UG9zaXRpb25zLGosWD1BZHQ7aWYobSh4KSl7Zm9yKFQtPTMsaj1HLGkucHVzaChNKSx3PTA7dzx4Lmxlbmd0aC8zO3crKylYPWwuZnJvbUFycmF5KHgsdyozLFgpLHlbYysrXT1qLXctMSx5W2MrK109ai13LHZpLmFkZEF0dHJpYnV0ZShDLFgsdm9pZCAwLFQpLFQtPTM7aS5wdXNoKGotTWF0aC5mbG9vcih4Lmxlbmd0aC82KSksZT09PUNuLkJFVkVMRUQmJmkucHVzaCgoVC0yKS8zKzEpLE4rPTN9ZWxzZXtmb3IoTis9MyxqPU0saS5wdXNoKEcpLHc9MDt3PEgubGVuZ3RoLzM7dysrKVg9bC5mcm9tQXJyYXkoSCx3KjMsWCkseVtjKytdPWordyx5W2MrK109ait3KzEsdmkuYWRkQXR0cmlidXRlKEMsWCxOKSxOKz0zO2kucHVzaChqK01hdGguZmxvb3IoSC5sZW5ndGgvNikpLGU9PT1Dbi5CRVZFTEVEJiZpLnB1c2goTi8zLTEpLFQtPTN9Zm9yKFY9bltnKytdLEQ9bltnKytdLFYuc3BsaWNlKDAsMyksRC5zcGxpY2UoRC5sZW5ndGgtMywzKSxDLnNldChWLE4pLEMuc2V0KEQsVC1ELmxlbmd0aCsxKSxFPUQubGVuZ3RoLTMsdz0wO3c8RC5sZW5ndGg7dys9MylNPU4vMyxiPU0tMSxHPShULTIpLzMsRj1HKzEseVtjKytdPUYseVtjKytdPUcseVtjKytdPWIseVtjKytdPU0sTis9MyxULT0zO04tPTMsVCs9MyxpLnB1c2goTi8zLChULTIpLzMpfWlmKF8pe04rPTMsVC09MyxVPW81LFE9cjU7bGV0IHc9b1sxXTtmb3IoZD0wO2Q8aztkKyspVT1sLmZyb21BcnJheSh3LChSLWQtMSkqMyxVKSxRPWwuZnJvbUFycmF5KHcsZCozLFEpLHZpLmFkZEF0dHJpYnV0ZShDLFUsdm9pZCAwLFQpLHZpLmFkZEF0dHJpYnV0ZShDLFEsTiksTT1OLzMsYj1NLTEsRz0oVC0yKS8zLEY9RysxLHlbYysrXT1GLHlbYysrXT1HLHlbYysrXT1iLHlbYysrXT1NLE4rPTMsVC09MztpLnB1c2goTi8zKX1lbHNlIGkucHVzaChOLzMsKFQtMikvMyk7cmV0dXJuIHlbYysrXT1OLzMseVtjKytdPShULTIpLzMsci5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkN9KSx7YXR0cmlidXRlczpyLGluZGljZXM6eSx3YWxsSW5kaWNlczppfX1mdW5jdGlvbiBjZHQodCl7bGV0IGU9dC5lbGxpcHNvaWQsaT12aS5jb21wdXRlUG9zaXRpb25zKHQpLG49YTUoaSx0LmNvcm5lclR5cGUpLHM9bi53YWxsSW5kaWNlcyxvPXQuaGVpZ2h0LHI9dC5leHRydWRlZEhlaWdodCxhPW4uYXR0cmlidXRlcyxoPW4uaW5kaWNlcyxBPWEucG9zaXRpb24udmFsdWVzLGQ9QS5sZW5ndGgsZj1uZXcgRmxvYXQ2NEFycmF5KGQpO2Yuc2V0KEEpO2xldCBFPW5ldyBGbG9hdDY0QXJyYXkoZCoyKTtpZihBPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChBLG8sZSksZj11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoZixyLGUpLEUuc2V0KEEpLEUuc2V0KGYsZCksYS5wb3NpdGlvbi52YWx1ZXM9RSxkLz0zLG0odC5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgRj1uZXcgVWludDhBcnJheShkKjIpO2lmKHQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKUY9Ri5maWxsKDEsMCxkKTtlbHNle2xldCBiPXQub2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjE7Rj1GLmZpbGwoYil9YS5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpGfSl9bGV0IF8sUj1oLmxlbmd0aCxJPXRlLmNyZWF0ZVR5cGVkQXJyYXkoRS5sZW5ndGgvMywoUitzLmxlbmd0aCkqMik7SS5zZXQoaCk7bGV0IEM9Ujtmb3IoXz0wO188UjtfKz0yKXtsZXQgRj1oW19dLGI9aFtfKzFdO0lbQysrXT1GK2QsSVtDKytdPWIrZH1sZXQgTixUO2ZvcihfPTA7XzxzLmxlbmd0aDtfKyspTj1zW19dLFQ9TitkLElbQysrXT1OLElbQysrXT1UO3JldHVybnthdHRyaWJ1dGVzOmEsaW5kaWNlczpJfX1mdW5jdGlvbiBDUih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnMsaT10LndpZHRoO3AudHlwZU9mLm9iamVjdCgib3B0aW9ucy5wb3NpdGlvbnMiLGUpLHAudHlwZU9mLm51bWJlcigib3B0aW9ucy53aWR0aCIsaSk7bGV0IG49Wih0LmhlaWdodCwwKSxzPVoodC5leHRydWRlZEhlaWdodCxuKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX3dpZHRoPWksdGhpcy5faGVpZ2h0PU1hdGgubWF4KG4scyksdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4obixzKSx0aGlzLl9jb3JuZXJUeXBlPVoodC5jb3JuZXJUeXBlLENuLlJPVU5ERUQpLHRoaXMuX2dyYW51bGFyaXR5PVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNvcnJpZG9yT3V0bGluZUdlb21ldHJ5Iix0aGlzLnBhY2tlZExlbmd0aD0xK2UubGVuZ3RoKmwucGFja2VkTGVuZ3RoK290LnBhY2tlZExlbmd0aCs2fXZhciBvNSxyNSxBZHQsQTUsd2MscU8saDU9TygoKT0+e09hKCk7X2koKTtIdCgpO2FlKCk7b2koKTtmZCgpO0hPKCk7YnQoKTttdCgpO1ZlKCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO19lKCk7UGEoKTtYaSgpO281PW5ldyBsLHI1PW5ldyBsLEFkdD1uZXcgbDtDUi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLnR5cGVPZi5vYmplY3QoImFycmF5IixlKSxpPVooaSwwKTtsZXQgbj10Ll9wb3NpdGlvbnMscz1uLmxlbmd0aDtlW2krK109cztmb3IobGV0IG89MDtvPHM7KytvLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhuW29dLGUsaSk7cmV0dXJuIG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll93aWR0aCxlW2krK109dC5faGVpZ2h0LGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2krK109dC5fY29ybmVyVHlwZSxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07QTU9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLHdjPXtwb3NpdGlvbnM6dm9pZCAwLGVsbGlwc29pZDpBNSx3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsY29ybmVyVHlwZTp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O0NSLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49dFtlKytdLHM9bmV3IEFycmF5KG4pO2ZvcihsZXQgRT0wO0U8bjsrK0UsZSs9bC5wYWNrZWRMZW5ndGgpc1tFXT1sLnVucGFjayh0LGUpO2xldCBvPW90LnVucGFjayh0LGUsQTUpO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgcj10W2UrK10sYT10W2UrK10saD10W2UrK10sQT10W2UrK10sZD10W2UrK10sZj10W2VdO3JldHVybiBtKGkpPyhpLl9wb3NpdGlvbnM9cyxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUobyxpLl9lbGxpcHNvaWQpLGkuX3dpZHRoPXIsaS5faGVpZ2h0PWEsaS5fZXh0cnVkZWRIZWlnaHQ9aCxpLl9jb3JuZXJUeXBlPUEsaS5fZ3JhbnVsYXJpdHk9ZCxpLl9vZmZzZXRBdHRyaWJ1dGU9Zj09PS0xP3ZvaWQgMDpmLGkpOih3Yy5wb3NpdGlvbnM9cyx3Yy53aWR0aD1yLHdjLmhlaWdodD1hLHdjLmV4dHJ1ZGVkSGVpZ2h0PWgsd2MuY29ybmVyVHlwZT1BLHdjLmdyYW51bGFyaXR5PWQsd2Mub2Zmc2V0QXR0cmlidXRlPWY9PT0tMT92b2lkIDA6ZixuZXcgQ1Iod2MpKX07Q1IuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLGk9dC5fd2lkdGgsbj10Ll9lbGxpcHNvaWQ7ZT1oZHQoZSxuKTtsZXQgcz1YbihlLGwuZXF1YWxzRXBzaWxvbik7aWYocy5sZW5ndGg8Mnx8aTw9MClyZXR1cm47bGV0IG89dC5faGVpZ2h0LHI9dC5fZXh0cnVkZWRIZWlnaHQsYT0hTC5lcXVhbHNFcHNpbG9uKG8sciwwLEwuRVBTSUxPTjIpLGg9e2VsbGlwc29pZDpuLHBvc2l0aW9uczpzLHdpZHRoOmksY29ybmVyVHlwZTp0Ll9jb3JuZXJUeXBlLGdyYW51bGFyaXR5OnQuX2dyYW51bGFyaXR5LHNhdmVBdHRyaWJ1dGVzOiExfSxBO2lmKGEpaC5oZWlnaHQ9byxoLmV4dHJ1ZGVkSGVpZ2h0PXIsaC5vZmZzZXRBdHRyaWJ1dGU9dC5fb2Zmc2V0QXR0cmlidXRlLEE9Y2R0KGgpO2Vsc2V7bGV0IEU9dmkuY29tcHV0ZVBvc2l0aW9ucyhoKTtpZihBPWE1KEUsaC5jb3JuZXJUeXBlKSxBLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChBLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLG8sbiksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgXz1BLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxSPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLEk9bmV3IFVpbnQ4QXJyYXkoXy8zKS5maWxsKFIpO0EuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpJfSl9fWxldCBkPUEuYXR0cmlidXRlcyxmPU50LmZyb21WZXJ0aWNlcyhkLnBvc2l0aW9uLnZhbHVlcyx2b2lkIDAsMyk7cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpkLGluZGljZXM6QS5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6ZixvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O3FPPUNSfSk7dmFyICRPPXt9O0hlKCRPLHtkZWZhdWx0OigpPT5kZHR9KTtmdW5jdGlvbiBsZHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9cU8udW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLHFPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBkZHQsdFY9TygoKT0+e2g1KCk7bXQoKTtWZSgpO2RkdD1sZHR9KTt2YXIgYzUsbmcsZVY9TygoKT0+e19lKCk7YzU9e307YzUuY29tcHV0ZVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsaSxuLHMpe2xldCBvPXQqLjUscj0tbyxhPW4rbixoPXM/MiphOmEsQT1uZXcgRmxvYXQ2NEFycmF5KGgqMyksZCxmPTAsRT0wLF89cz9hKjM6MCxSPXM/KGErbikqMzpuKjM7Zm9yKGQ9MDtkPG47ZCsrKXtsZXQgST1kL24qTC5UV09fUEksQz1NYXRoLmNvcyhJKSxOPU1hdGguc2luKEkpLFQ9QyppLEY9TippLGI9QyplLEc9TiplO0FbRStfXT1ULEFbRStfKzFdPUYsQVtFK18rMl09cixBW0UrUl09YixBW0UrUisxXT1HLEFbRStSKzJdPW8sRSs9MyxzJiYoQVtmKytdPVQsQVtmKytdPUYsQVtmKytdPXIsQVtmKytdPWIsQVtmKytdPUcsQVtmKytdPW8pfXJldHVybiBBfTtuZz1jNX0pO2Z1bmN0aW9uIE9oKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10Lmxlbmd0aCxpPXQudG9wUmFkaXVzLG49dC5ib3R0b21SYWRpdXMscz1aKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpLG89Wih0LnNsaWNlcywxMjgpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJvcHRpb25zLmxlbmd0aCBtdXN0IGJlIGRlZmluZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMudG9wUmFkaXVzIG11c3QgYmUgZGVmaW5lZC4iKTtpZighbShuKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5ib3R0b21SYWRpdXMgbXVzdCBiZSBkZWZpbmVkLiIpO2lmKG88Myl0aHJvdyBuZXcgWSgib3B0aW9ucy5zbGljZXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMy4iKTtpZihtKHQub2Zmc2V0QXR0cmlidXRlKSYmdC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApdGhyb3cgbmV3IFkoIkdlb21ldHJ5T2Zmc2V0QXR0cmlidXRlLlRPUCBpcyBub3QgYSBzdXBwb3J0ZWQgb3B0aW9ucy5vZmZzZXRBdHRyaWJ1dGUgZm9yIHRoaXMgZ2VvbWV0cnkuIik7dGhpcy5fbGVuZ3RoPWUsdGhpcy5fdG9wUmFkaXVzPWksdGhpcy5fYm90dG9tUmFkaXVzPW4sdGhpcy5fdmVydGV4Rm9ybWF0PU90LmNsb25lKHMpLHRoaXMuX3NsaWNlcz1vLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDeWxpbmRlckdlb21ldHJ5In12YXIgaVYsbWR0LGZkdCxFZHQsX2R0LGw1LFdmLG5WLGdSLHNWPU8oKCk9PntfaSgpO1hlKCk7SHQoKTtvaSgpO2VWKCk7YnQoKTttdCgpO1Z0KCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO19lKCk7WGkoKTtMcygpO2lWPW5ldyBudCxtZHQ9bmV3IGwsZmR0PW5ldyBsLEVkdD1uZXcgbCxfZHQ9bmV3IGw7T2gucGFja2VkTGVuZ3RoPU90LnBhY2tlZExlbmd0aCs1O09oLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fbGVuZ3RoLGVbaSsrXT10Ll90b3BSYWRpdXMsZVtpKytdPXQuX2JvdHRvbVJhZGl1cyxlW2krK109dC5fc2xpY2VzLGVbaV09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O2w1PW5ldyBPdCxXZj17dmVydGV4Rm9ybWF0Omw1LGxlbmd0aDp2b2lkIDAsdG9wUmFkaXVzOnZvaWQgMCxib3R0b21SYWRpdXM6dm9pZCAwLHNsaWNlczp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07T2gudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbj1PdC51bnBhY2sodCxlLGw1KTtlKz1PdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLG89dFtlKytdLHI9dFtlKytdLGE9dFtlKytdLGg9dFtlXTtyZXR1cm4gbShpKT8oaS5fdmVydGV4Rm9ybWF0PU90LmNsb25lKG4saS5fdmVydGV4Rm9ybWF0KSxpLl9sZW5ndGg9cyxpLl90b3BSYWRpdXM9byxpLl9ib3R0b21SYWRpdXM9cixpLl9zbGljZXM9YSxpLl9vZmZzZXRBdHRyaWJ1dGU9aD09PS0xP3ZvaWQgMDpoLGkpOihXZi5sZW5ndGg9cyxXZi50b3BSYWRpdXM9byxXZi5ib3R0b21SYWRpdXM9cixXZi5zbGljZXM9YSxXZi5vZmZzZXRBdHRyaWJ1dGU9aD09PS0xP3ZvaWQgMDpoLG5ldyBPaChXZikpfTtPaC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9sZW5ndGgsaT10Ll90b3BSYWRpdXMsbj10Ll9ib3R0b21SYWRpdXMscz10Ll92ZXJ0ZXhGb3JtYXQsbz10Ll9zbGljZXM7aWYoZTw9MHx8aTwwfHxuPDB8fGk9PT0wJiZuPT09MClyZXR1cm47bGV0IHI9bytvLGE9bytyLGg9cityLEE9bmcuY29tcHV0ZVBvc2l0aW9ucyhlLGksbixvLCEwKSxkPXMuc3Q/bmV3IEZsb2F0MzJBcnJheShoKjIpOnZvaWQgMCxmPXMubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoaCozKTp2b2lkIDAsRT1zLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShoKjMpOnZvaWQgMCxfPXMuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoaCozKTp2b2lkIDAsUixJPXMubm9ybWFsfHxzLnRhbmdlbnR8fHMuYml0YW5nZW50O2lmKEkpe2xldCBRPXMudGFuZ2VudHx8cy5iaXRhbmdlbnQsVT0wLGs9MCx5PTAsYz1NYXRoLmF0YW4yKG4taSxlKSxnPW1kdDtnLno9TWF0aC5zaW4oYyk7bGV0IFY9TWF0aC5jb3MoYyksRD1FZHQsdz1mZHQ7Zm9yKFI9MDtSPG87UisrKXtsZXQgeD1SL28qTC5UV09fUEksSD1WKk1hdGguY29zKHgpLGo9VipNYXRoLnNpbih4KTtJJiYoZy54PUgsZy55PWosUSYmKEQ9bC5ub3JtYWxpemUobC5jcm9zcyhsLlVOSVRfWixnLEQpLEQpKSxzLm5vcm1hbCYmKGZbVSsrXT1nLngsZltVKytdPWcueSxmW1UrK109Zy56LGZbVSsrXT1nLngsZltVKytdPWcueSxmW1UrK109Zy56KSxzLnRhbmdlbnQmJihFW2srK109RC54LEVbaysrXT1ELnksRVtrKytdPUQueixFW2srK109RC54LEVbaysrXT1ELnksRVtrKytdPUQueikscy5iaXRhbmdlbnQmJih3PWwubm9ybWFsaXplKGwuY3Jvc3MoZyxELHcpLHcpLF9beSsrXT13LngsX1t5KytdPXcueSxfW3krK109dy56LF9beSsrXT13LngsX1t5KytdPXcueSxfW3krK109dy56KSl9Zm9yKFI9MDtSPG87UisrKXMubm9ybWFsJiYoZltVKytdPTAsZltVKytdPTAsZltVKytdPS0xKSxzLnRhbmdlbnQmJihFW2srK109MSxFW2srK109MCxFW2srK109MCkscy5iaXRhbmdlbnQmJihfW3krK109MCxfW3krK109LTEsX1t5KytdPTApO2ZvcihSPTA7UjxvO1IrKylzLm5vcm1hbCYmKGZbVSsrXT0wLGZbVSsrXT0wLGZbVSsrXT0xKSxzLnRhbmdlbnQmJihFW2srK109MSxFW2srK109MCxFW2srK109MCkscy5iaXRhbmdlbnQmJihfW3krK109MCxfW3krK109MSxfW3krK109MCl9bGV0IEM9MTIqby0xMixOPXRlLmNyZWF0ZVR5cGVkQXJyYXkoaCxDKSxUPTAsRj0wO2ZvcihSPTA7UjxvLTE7UisrKU5bVCsrXT1GLE5bVCsrXT1GKzIsTltUKytdPUYrMyxOW1QrK109RixOW1QrK109RiszLE5bVCsrXT1GKzEsRis9Mjtmb3IoTltUKytdPXItMixOW1QrK109MCxOW1QrK109MSxOW1QrK109ci0yLE5bVCsrXT0xLE5bVCsrXT1yLTEsUj0xO1I8by0xO1IrKylOW1QrK109citSKzEsTltUKytdPXIrUixOW1QrK109cjtmb3IoUj0xO1I8by0xO1IrKylOW1QrK109YSxOW1QrK109YStSLE5bVCsrXT1hK1IrMTtsZXQgYj0wO2lmKHMuc3Qpe2xldCBRPU1hdGgubWF4KGksbik7Zm9yKFI9MDtSPGg7UisrKXtsZXQgVT1sLmZyb21BcnJheShBLFIqMyxfZHQpO2RbYisrXT0oVS54K1EpLygyKlEpLGRbYisrXT0oVS55K1EpLygyKlEpfX1sZXQgRz1uZXcgd2U7cy5wb3NpdGlvbiYmKEcucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpBfSkpLHMubm9ybWFsJiYoRy5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmZ9KSkscy50YW5nZW50JiYoRy50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpFfSkpLHMuYml0YW5nZW50JiYoRy5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSkscy5zdCYmKEcuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmR9KSksaVYueD1lKi41LGlWLnk9TWF0aC5tYXgobixpKTtsZXQgTT1uZXcgTnQobC5aRVJPLG50Lm1hZ25pdHVkZShpVikpO2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7ZT1BLmxlbmd0aDtsZXQgUT10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxVPW5ldyBVaW50OEFycmF5KGUvMykuZmlsbChRKTtHLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOlV9KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOkcsaW5kaWNlczpOLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOk0sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtPaC5nZXRVbml0Q3lsaW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbShuVil8fChuVj1PaC5jcmVhdGVHZW9tZXRyeShuZXcgT2goe3RvcFJhZGl1czoxLGJvdHRvbVJhZGl1czoxLGxlbmd0aDoxLHZlcnRleEZvcm1hdDpPdC5QT1NJVElPTl9PTkxZfSkpKSxuVn07Z1I9T2h9KTt2YXIgb1Y9e307SGUob1Yse2RlZmF1bHQ6KCk9PlpkdH0pO2Z1bmN0aW9uIFJkdCh0LGUpe3JldHVybiBtKGUpJiYodD1nUi51bnBhY2sodCxlKSksZ1IuY3JlYXRlR2VvbWV0cnkodCl9dmFyIFpkdCxyVj1PKCgpPT57c1YoKTttdCgpO1pkdD1SZHR9KTtmdW5jdGlvbiBEZih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5sZW5ndGgsaT10LnRvcFJhZGl1cyxuPXQuYm90dG9tUmFkaXVzLHM9Wih0LnNsaWNlcywxMjgpLG89TWF0aC5tYXgoWih0Lm51bWJlck9mVmVydGljYWxMaW5lcywxNiksMCk7aWYocC50eXBlT2YubnVtYmVyKCJvcHRpb25zLnBvc2l0aW9ucyIsZSkscC50eXBlT2YubnVtYmVyKCJvcHRpb25zLnRvcFJhZGl1cyIsaSkscC50eXBlT2YubnVtYmVyKCJvcHRpb25zLmJvdHRvbVJhZGl1cyIsbikscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm9wdGlvbnMuc2xpY2VzIixzLDMpLG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUCl0aHJvdyBuZXcgWSgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTt0aGlzLl9sZW5ndGg9ZSx0aGlzLl90b3BSYWRpdXM9aSx0aGlzLl9ib3R0b21SYWRpdXM9bix0aGlzLl9zbGljZXM9cyx0aGlzLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9byx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlQ3lsaW5kZXJPdXRsaW5lR2VvbWV0cnkifXZhciBhVixfZCxBVixkNT1PKCgpPT57X2koKTtYZSgpO0h0KCk7YWUoKTtvaSgpO2VWKCk7YnQoKTttdCgpO1Z0KCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO1hpKCk7YVY9bmV3IG50O0RmLnBhY2tlZExlbmd0aD02O0RmLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC5fbGVuZ3RoLGVbaSsrXT10Ll90b3BSYWRpdXMsZVtpKytdPXQuX2JvdHRvbVJhZGl1cyxlW2krK109dC5fc2xpY2VzLGVbaSsrXT10Ll9udW1iZXJPZlZlcnRpY2FsTGluZXMsZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07X2Q9e2xlbmd0aDp2b2lkIDAsdG9wUmFkaXVzOnZvaWQgMCxib3R0b21SYWRpdXM6dm9pZCAwLHNsaWNlczp2b2lkIDAsbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtEZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPXRbZSsrXSxzPXRbZSsrXSxvPXRbZSsrXSxyPXRbZSsrXSxhPXRbZSsrXSxoPXRbZV07cmV0dXJuIG0oaSk/KGkuX2xlbmd0aD1uLGkuX3RvcFJhZGl1cz1zLGkuX2JvdHRvbVJhZGl1cz1vLGkuX3NsaWNlcz1yLGkuX251bWJlck9mVmVydGljYWxMaW5lcz1hLGkuX29mZnNldEF0dHJpYnV0ZT1oPT09LTE/dm9pZCAwOmgsaSk6KF9kLmxlbmd0aD1uLF9kLnRvcFJhZGl1cz1zLF9kLmJvdHRvbVJhZGl1cz1vLF9kLnNsaWNlcz1yLF9kLm51bWJlck9mVmVydGljYWxMaW5lcz1hLF9kLm9mZnNldEF0dHJpYnV0ZT1oPT09LTE/dm9pZCAwOmgsbmV3IERmKF9kKSl9O0RmLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2xlbmd0aCxpPXQuX3RvcFJhZGl1cyxuPXQuX2JvdHRvbVJhZGl1cyxzPXQuX3NsaWNlcyxvPXQuX251bWJlck9mVmVydGljYWxMaW5lcztpZihlPD0wfHxpPDB8fG48MHx8aT09PTAmJm49PT0wKXJldHVybjtsZXQgcj1zKjIsYT1uZy5jb21wdXRlUG9zaXRpb25zKGUsaSxuLHMsITEpLGg9cyoyLEE7aWYobz4wKXtsZXQgST1NYXRoLm1pbihvLHMpO0E9TWF0aC5yb3VuZChzL0kpLGgrPUl9bGV0IGQ9dGUuY3JlYXRlVHlwZWRBcnJheShyLGgqMiksZj0wLEU7Zm9yKEU9MDtFPHMtMTtFKyspZFtmKytdPUUsZFtmKytdPUUrMSxkW2YrK109RStzLGRbZisrXT1FKzErcztpZihkW2YrK109cy0xLGRbZisrXT0wLGRbZisrXT1zK3MtMSxkW2YrK109cyxvPjApZm9yKEU9MDtFPHM7RSs9QSlkW2YrK109RSxkW2YrK109RStzO2xldCBfPW5ldyB3ZTtfLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6YX0pLGFWLng9ZSouNSxhVi55PU1hdGgubWF4KG4saSk7bGV0IFI9bmV3IE50KGwuWkVSTyxudC5tYWduaXR1ZGUoYVYpKTtpZihtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2U9YS5sZW5ndGg7bGV0IEk9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsQz1uZXcgVWludDhBcnJheShlLzMpLmZpbGwoSSk7Xy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpDfSl9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpfLGluZGljZXM6ZCxwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOlIsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtBVj1EZn0pO3ZhciBoVj17fTtIZShoVix7ZGVmYXVsdDooKT0+cGR0fSk7ZnVuY3Rpb24gSWR0KHQsZSl7cmV0dXJuIG0oZSkmJih0PUFWLnVucGFjayh0LGUpKSxBVi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgcGR0LGNWPU8oKCk9PntkNSgpO210KCk7cGR0PUlkdH0pO3ZhciBsVj17fTtIZShsVix7ZGVmYXVsdDooKT0+Q2R0fSk7ZnVuY3Rpb24gdWR0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXdhLnVucGFjayh0LGUpKSx0Ll9jZW50ZXI9bC5jbG9uZSh0Ll9jZW50ZXIpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLHdhLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBDZHQsZFY9TygoKT0+e0h0KCk7bXQoKTtfTygpO1ZlKCk7Q2R0PXVkdH0pO3ZhciBtVj17fTtIZShtVix7ZGVmYXVsdDooKT0+VGR0fSk7ZnVuY3Rpb24gZ2R0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXhhLnVucGFjayh0LGUpKSx0Ll9jZW50ZXI9bC5jbG9uZSh0Ll9jZW50ZXIpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLHhhLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBUZHQsZlY9TygoKT0+e0h0KCk7bXQoKTtwTygpO1ZlKCk7VGR0PWdkdH0pO2Z1bmN0aW9uIFZoKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQucmFkaWksT2R0KSxpPVoodC5pbm5lclJhZGlpLGUpLG49Wih0Lm1pbmltdW1DbG9jaywwKSxzPVoodC5tYXhpbXVtQ2xvY2ssTC5UV09fUEkpLG89Wih0Lm1pbmltdW1Db25lLDApLHI9Wih0Lm1heGltdW1Db25lLEwuUEkpLGE9TWF0aC5yb3VuZChaKHQuc3RhY2tQYXJ0aXRpb25zLDY0KSksaD1NYXRoLnJvdW5kKFoodC5zbGljZVBhcnRpdGlvbnMsNjQpKSxBPVoodC52ZXJ0ZXhGb3JtYXQsT3QuREVGQVVMVCk7aWYoaDwzKXRocm93IG5ldyBZKCJvcHRpb25zLnNsaWNlUGFydGl0aW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIHRocmVlLiIpO2lmKGE8Myl0aHJvdyBuZXcgWSgib3B0aW9ucy5zdGFja1BhcnRpdGlvbnMgY2Fubm90IGJlIGxlc3MgdGhhbiB0aHJlZS4iKTt0aGlzLl9yYWRpaT1sLmNsb25lKGUpLHRoaXMuX2lubmVyUmFkaWk9bC5jbG9uZShpKSx0aGlzLl9taW5pbXVtQ2xvY2s9bix0aGlzLl9tYXhpbXVtQ2xvY2s9cyx0aGlzLl9taW5pbXVtQ29uZT1vLHRoaXMuX21heGltdW1Db25lPXIsdGhpcy5fc3RhY2tQYXJ0aXRpb25zPWEsdGhpcy5fc2xpY2VQYXJ0aXRpb25zPWgsdGhpcy5fdmVydGV4Rm9ybWF0PU90LmNsb25lKEEpLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVFbGxpcHNvaWRHZW9tZXRyeSJ9dmFyIE5kdCxiZHQsRmR0LFlkdCxTZHQsT2R0LG01LGY1LEU1LF81LFI1LHhjLEVWLE5yLHNnPU8oKCk9PntfaSgpO1hlKCk7SHQoKTtvaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO19lKCk7WGkoKTtMcygpO05kdD1uZXcgbCxiZHQ9bmV3IGwsRmR0PW5ldyBsLFlkdD1uZXcgbCxTZHQ9bmV3IGwsT2R0PW5ldyBsKDEsMSwxKSxtNT1NYXRoLmNvcyxmNT1NYXRoLnNpbjtWaC5wYWNrZWRMZW5ndGg9MipsLnBhY2tlZExlbmd0aCtPdC5wYWNrZWRMZW5ndGgrNztWaC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gaT1aKGksMCksbC5wYWNrKHQuX3JhZGlpLGUsaSksaSs9bC5wYWNrZWRMZW5ndGgsbC5wYWNrKHQuX2lubmVyUmFkaWksZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fbWluaW11bUNsb2NrLGVbaSsrXT10Ll9tYXhpbXVtQ2xvY2ssZVtpKytdPXQuX21pbmltdW1Db25lLGVbaSsrXT10Ll9tYXhpbXVtQ29uZSxlW2krK109dC5fc3RhY2tQYXJ0aXRpb25zLGVbaSsrXT10Ll9zbGljZVBhcnRpdGlvbnMsZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07RTU9bmV3IGwsXzU9bmV3IGwsUjU9bmV3IE90LHhjPXtyYWRpaTpFNSxpbm5lclJhZGlpOl81LHZlcnRleEZvcm1hdDpSNSxtaW5pbXVtQ2xvY2s6dm9pZCAwLG1heGltdW1DbG9jazp2b2lkIDAsbWluaW11bUNvbmU6dm9pZCAwLG1heGltdW1Db25lOnZvaWQgMCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07VmgudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbj1sLnVucGFjayh0LGUsRTUpO2UrPWwucGFja2VkTGVuZ3RoO2xldCBzPWwudW5wYWNrKHQsZSxfNSk7ZSs9bC5wYWNrZWRMZW5ndGg7bGV0IG89T3QudW5wYWNrKHQsZSxSNSk7ZSs9T3QucGFja2VkTGVuZ3RoO2xldCByPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXSxmPXRbZSsrXSxFPXRbZV07cmV0dXJuIG0oaSk/KGkuX3JhZGlpPWwuY2xvbmUobixpLl9yYWRpaSksaS5faW5uZXJSYWRpaT1sLmNsb25lKHMsaS5faW5uZXJSYWRpaSksaS5fdmVydGV4Rm9ybWF0PU90LmNsb25lKG8saS5fdmVydGV4Rm9ybWF0KSxpLl9taW5pbXVtQ2xvY2s9cixpLl9tYXhpbXVtQ2xvY2s9YSxpLl9taW5pbXVtQ29uZT1oLGkuX21heGltdW1Db25lPUEsaS5fc3RhY2tQYXJ0aXRpb25zPWQsaS5fc2xpY2VQYXJ0aXRpb25zPWYsaS5fb2Zmc2V0QXR0cmlidXRlPUU9PT0tMT92b2lkIDA6RSxpKTooeGMubWluaW11bUNsb2NrPXIseGMubWF4aW11bUNsb2NrPWEseGMubWluaW11bUNvbmU9aCx4Yy5tYXhpbXVtQ29uZT1BLHhjLnN0YWNrUGFydGl0aW9ucz1kLHhjLnNsaWNlUGFydGl0aW9ucz1mLHhjLm9mZnNldEF0dHJpYnV0ZT1FPT09LTE/dm9pZCAwOkUsbmV3IFZoKHhjKSl9O1ZoLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3JhZGlpO2lmKGUueDw9MHx8ZS55PD0wfHxlLno8PTApcmV0dXJuO2xldCBpPXQuX2lubmVyUmFkaWk7aWYoaS54PD0wfHxpLnk8PTB8fGkuejw9MClyZXR1cm47bGV0IG49dC5fbWluaW11bUNsb2NrLHM9dC5fbWF4aW11bUNsb2NrLG89dC5fbWluaW11bUNvbmUscj10Ll9tYXhpbXVtQ29uZSxhPXQuX3ZlcnRleEZvcm1hdCxoPXQuX3NsaWNlUGFydGl0aW9ucysxLEE9dC5fc3RhY2tQYXJ0aXRpb25zKzE7aD1NYXRoLnJvdW5kKGgqTWF0aC5hYnMocy1uKS9MLlRXT19QSSksQT1NYXRoLnJvdW5kKEEqTWF0aC5hYnMoci1vKS9MLlBJKSxoPDImJihoPTIpLEE8MiYmKEE9Mik7bGV0IGQsZixFPTAsXz1bb10sUj1bbl07Zm9yKGQ9MDtkPEE7ZCsrKV8ucHVzaChvK2QqKHItbykvKEEtMSkpO2ZvcihfLnB1c2gociksZj0wO2Y8aDtmKyspUi5wdXNoKG4rZioocy1uKS8oaC0xKSk7Ui5wdXNoKHMpO2xldCBJPV8ubGVuZ3RoLEM9Ui5sZW5ndGgsTj0wLFQ9MSxGPWkueCE9PWUueHx8aS55IT09ZS55fHxpLnohPT1lLnosYj0hMSxHPSExLE09ITE7RiYmKFQ9MixvPjAmJihiPSEwLE4rPWgtMSkscjxNYXRoLlBJJiYoRz0hMCxOKz1oLTEpLChzLW4pJUwuVFdPX1BJPyhNPSEwLE4rPShBLTEpKjIrMSk6Tis9MSk7bGV0IFE9QypJKlQsVT1uZXcgRmxvYXQ2NEFycmF5KFEqMyksaz1uZXcgQXJyYXkoUSkuZmlsbCghMSkseT1uZXcgQXJyYXkoUSkuZmlsbCghMSksYz1oKkEqVCxnPTYqKGMrTisxLShoK0EpKlQpLFY9dGUuY3JlYXRlVHlwZWRBcnJheShjLGcpLEQ9YS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShRKjMpOnZvaWQgMCx3PWEudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KFEqMyk6dm9pZCAwLHg9YS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShRKjMpOnZvaWQgMCxIPWEuc3Q/bmV3IEZsb2F0MzJBcnJheShRKjIpOnZvaWQgMCxqPW5ldyBBcnJheShJKSxYPW5ldyBBcnJheShJKTtmb3IoZD0wO2Q8STtkKyspaltkXT1mNShfW2RdKSxYW2RdPW01KF9bZF0pO2xldCB0dD1uZXcgQXJyYXkoQyksQj1uZXcgQXJyYXkoQyk7Zm9yKGY9MDtmPEM7ZisrKUJbZl09bTUoUltmXSksdHRbZl09ZjUoUltmXSk7Zm9yKGQ9MDtkPEk7ZCsrKWZvcihmPTA7ZjxDO2YrKylVW0UrK109ZS54KmpbZF0qQltmXSxVW0UrK109ZS55KmpbZF0qdHRbZl0sVVtFKytdPWUueipYW2RdO2xldCBJdD1RLzI7aWYoRilmb3IoZD0wO2Q8STtkKyspZm9yKGY9MDtmPEM7ZisrKVVbRSsrXT1pLngqaltkXSpCW2ZdLFVbRSsrXT1pLnkqaltkXSp0dFtmXSxVW0UrK109aS56KlhbZF0sa1tJdF09ITAsZD4wJiZkIT09SS0xJiZmIT09MCYmZiE9PUMtMSYmKHlbSXRdPSEwKSxJdCsrO0U9MDtsZXQgZ3QsWXQ7Zm9yKGQ9MTtkPEktMjtkKyspZm9yKGd0PWQqQyxZdD0oZCsxKSpDLGY9MTtmPEMtMjtmKyspVltFKytdPVl0K2YsVltFKytdPVl0K2YrMSxWW0UrK109Z3QrZisxLFZbRSsrXT1ZdCtmLFZbRSsrXT1ndCtmKzEsVltFKytdPWd0K2Y7aWYoRil7bGV0IE1lPUkqQztmb3IoZD0xO2Q8SS0yO2QrKylmb3IoZ3Q9TWUrZCpDLFl0PU1lKyhkKzEpKkMsZj0xO2Y8Qy0yO2YrKylWW0UrK109WXQrZixWW0UrK109Z3QrZixWW0UrK109Z3QrZisxLFZbRSsrXT1ZdCtmLFZbRSsrXT1ndCtmKzEsVltFKytdPVl0K2YrMX1sZXQgTXQsQ3Q7aWYoRil7aWYoYilmb3IoQ3Q9SSpDLGQ9MTtkPEMtMjtkKyspVltFKytdPWQsVltFKytdPWQrMSxWW0UrK109Q3QrZCsxLFZbRSsrXT1kLFZbRSsrXT1DdCtkKzEsVltFKytdPUN0K2Q7aWYoRylmb3IoTXQ9SSpDLUMsQ3Q9SSpDKlQtQyxkPTE7ZDxDLTI7ZCsrKVZbRSsrXT1NdCtkKzEsVltFKytdPU10K2QsVltFKytdPUN0K2QsVltFKytdPU10K2QrMSxWW0UrK109Q3QrZCxWW0UrK109Q3QrZCsxfWlmKE0pe2ZvcihkPTE7ZDxJLTI7ZCsrKUN0PUMqSStDKmQsTXQ9QypkLFZbRSsrXT1DdCxWW0UrK109TXQrQyxWW0UrK109TXQsVltFKytdPUN0LFZbRSsrXT1DdCtDLFZbRSsrXT1NdCtDO2ZvcihkPTE7ZDxJLTI7ZCsrKUN0PUMqSStDKihkKzEpLTEsTXQ9QyooZCsxKS0xLFZbRSsrXT1NdCtDLFZbRSsrXT1DdCxWW0UrK109TXQsVltFKytdPU10K0MsVltFKytdPUN0K0MsVltFKytdPUN0fWxldCB6dD1uZXcgd2U7YS5wb3NpdGlvbiYmKHp0LnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6VX0pKTtsZXQga3Q9MCxKdD0wLFd0PTAsRnQ9MCxlZT1RLzIsY2UsamU9b3QuZnJvbUNhcnRlc2lhbjMoZSksT2U9b3QuZnJvbUNhcnRlc2lhbjMoaSk7aWYoYS5zdHx8YS5ub3JtYWx8fGEudGFuZ2VudHx8YS5iaXRhbmdlbnQpe2ZvcihkPTA7ZDxRO2QrKyl7Y2U9a1tkXT9PZTpqZTtsZXQgTWU9bC5mcm9tQXJyYXkoVSxkKjMsTmR0KSxVZT1jZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoTWUsYmR0KTtpZih5W2RdJiZsLm5lZ2F0ZShVZSxVZSksYS5zdCl7bGV0IENlPW50Lm5lZ2F0ZShVZSxTZHQpO0hba3QrK109TWF0aC5hdGFuMihDZS55LENlLngpL0wuVFdPX1BJKy41LEhba3QrK109TWF0aC5hc2luKFVlLnopL01hdGguUEkrLjV9aWYoYS5ub3JtYWwmJihEW0p0KytdPVVlLngsRFtKdCsrXT1VZS55LERbSnQrK109VWUueiksYS50YW5nZW50fHxhLmJpdGFuZ2VudCl7bGV0IENlPUZkdCxiZT0wLG5pO2lmKGtbZF0mJihiZT1lZSksIWImJmQ+PWJlJiZkPGJlK0MqMj9uaT1sLlVOSVRfWDpuaT1sLlVOSVRfWixsLmNyb3NzKG5pLFVlLENlKSxsLm5vcm1hbGl6ZShDZSxDZSksYS50YW5nZW50JiYod1tXdCsrXT1DZS54LHdbV3QrK109Q2UueSx3W1d0KytdPUNlLnopLGEuYml0YW5nZW50KXtsZXQgemU9bC5jcm9zcyhVZSxDZSxZZHQpO2wubm9ybWFsaXplKHplLHplKSx4W0Z0KytdPXplLngseFtGdCsrXT16ZS55LHhbRnQrK109emUuen19fWEuc3QmJih6dC5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6SH0pKSxhLm5vcm1hbCYmKHp0Lm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RH0pKSxhLnRhbmdlbnQmJih6dC50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp3fSkpLGEuYml0YW5nZW50JiYoenQuYml0YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp4fSkpfWlmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IE1lPVUubGVuZ3RoLFVlPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLENlPW5ldyBVaW50OEFycmF5KE1lLzMpLmZpbGwoVWUpO3p0LmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkNlfSl9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczp6dCxpbmRpY2VzOlYscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6TnQuZnJvbUVsbGlwc29pZChqZSksb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtWaC5nZXRVbml0RWxsaXBzb2lkPWZ1bmN0aW9uKCl7cmV0dXJuIG0oRVYpfHwoRVY9VmguY3JlYXRlR2VvbWV0cnkobmV3IFZoKHtyYWRpaTpuZXcgbCgxLDEsMSksdmVydGV4Rm9ybWF0Ok90LlBPU0lUSU9OX09OTFl9KSkpLEVWfTtOcj1WaH0pO3ZhciBfVj17fTtIZShfVix7ZGVmYXVsdDooKT0+R2R0fSk7ZnVuY3Rpb24gVmR0KHQsZSl7cmV0dXJuIG0oZSkmJih0PU5yLnVucGFjayh0LGUpKSxOci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgR2R0LFJWPU8oKCk9PnttdCgpO3NnKCk7R2R0PVZkdH0pO2Z1bmN0aW9uIE1mKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQucmFkaWksQmR0KSxpPVoodC5pbm5lclJhZGlpLGUpLG49Wih0Lm1pbmltdW1DbG9jaywwKSxzPVoodC5tYXhpbXVtQ2xvY2ssTC5UV09fUEkpLG89Wih0Lm1pbmltdW1Db25lLDApLHI9Wih0Lm1heGltdW1Db25lLEwuUEkpLGE9TWF0aC5yb3VuZChaKHQuc3RhY2tQYXJ0aXRpb25zLDEwKSksaD1NYXRoLnJvdW5kKFoodC5zbGljZVBhcnRpdGlvbnMsOCkpLEE9TWF0aC5yb3VuZChaKHQuc3ViZGl2aXNpb25zLDEyOCkpO2lmKGE8MSl0aHJvdyBuZXcgWSgib3B0aW9ucy5zdGFja1BhcnRpdGlvbnMgY2Fubm90IGJlIGxlc3MgdGhhbiAxIik7aWYoaDwwKXRocm93IG5ldyBZKCJvcHRpb25zLnNsaWNlUGFydGl0aW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAiKTtpZihBPDApdGhyb3cgbmV3IFkoIm9wdGlvbnMuc3ViZGl2aXNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8uIik7aWYobSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKXRocm93IG5ldyBZKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX3JhZGlpPWwuY2xvbmUoZSksdGhpcy5faW5uZXJSYWRpaT1sLmNsb25lKGkpLHRoaXMuX21pbmltdW1DbG9jaz1uLHRoaXMuX21heGltdW1DbG9jaz1zLHRoaXMuX21pbmltdW1Db25lPW8sdGhpcy5fbWF4aW11bUNvbmU9cix0aGlzLl9zdGFja1BhcnRpdGlvbnM9YSx0aGlzLl9zbGljZVBhcnRpdGlvbnM9aCx0aGlzLl9zdWJkaXZpc2lvbnM9QSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlRWxsaXBzb2lkT3V0bGluZUdlb21ldHJ5In12YXIgQmR0LG9nLHJnLFo1LEk1LEdoLGphLFpWPU8oKCk9PntfaSgpO0h0KCk7b2koKTtidCgpO210KCk7VnQoKTtWZSgpO3lpKCk7amkoKTtFbigpO2dvKCk7RGkoKTtfZSgpO1hpKCk7QmR0PW5ldyBsKDEsMSwxKSxvZz1NYXRoLmNvcyxyZz1NYXRoLnNpbjtNZi5wYWNrZWRMZW5ndGg9MipsLnBhY2tlZExlbmd0aCs4O01mLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxsLnBhY2sodC5fcmFkaWksZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxsLnBhY2sodC5faW5uZXJSYWRpaSxlLGkpLGkrPWwucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9taW5pbXVtQ2xvY2ssZVtpKytdPXQuX21heGltdW1DbG9jayxlW2krK109dC5fbWluaW11bUNvbmUsZVtpKytdPXQuX21heGltdW1Db25lLGVbaSsrXT10Ll9zdGFja1BhcnRpdGlvbnMsZVtpKytdPXQuX3NsaWNlUGFydGl0aW9ucyxlW2krK109dC5fc3ViZGl2aXNpb25zLGVbaV09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O1o1PW5ldyBsLEk1PW5ldyBsLEdoPXtyYWRpaTpaNSxpbm5lclJhZGlpOkk1LG1pbmltdW1DbG9jazp2b2lkIDAsbWF4aW11bUNsb2NrOnZvaWQgMCxtaW5pbXVtQ29uZTp2b2lkIDAsbWF4aW11bUNvbmU6dm9pZCAwLHN0YWNrUGFydGl0aW9uczp2b2lkIDAsc2xpY2VQYXJ0aXRpb25zOnZvaWQgMCxzdWJkaXZpc2lvbnM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O01mLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1aKGUsMCk7bGV0IG49bC51bnBhY2sodCxlLFo1KTtlKz1sLnBhY2tlZExlbmd0aDtsZXQgcz1sLnVucGFjayh0LGUsSTUpO2UrPWwucGFja2VkTGVuZ3RoO2xldCBvPXRbZSsrXSxyPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXSxmPXRbZSsrXSxFPXRbZV07cmV0dXJuIG0oaSk/KGkuX3JhZGlpPWwuY2xvbmUobixpLl9yYWRpaSksaS5faW5uZXJSYWRpaT1sLmNsb25lKHMsaS5faW5uZXJSYWRpaSksaS5fbWluaW11bUNsb2NrPW8saS5fbWF4aW11bUNsb2NrPXIsaS5fbWluaW11bUNvbmU9YSxpLl9tYXhpbXVtQ29uZT1oLGkuX3N0YWNrUGFydGl0aW9ucz1BLGkuX3NsaWNlUGFydGl0aW9ucz1kLGkuX3N1YmRpdmlzaW9ucz1mLGkuX29mZnNldEF0dHJpYnV0ZT1FPT09LTE/dm9pZCAwOkUsaSk6KEdoLm1pbmltdW1DbG9jaz1vLEdoLm1heGltdW1DbG9jaz1yLEdoLm1pbmltdW1Db25lPWEsR2gubWF4aW11bUNvbmU9aCxHaC5zdGFja1BhcnRpdGlvbnM9QSxHaC5zbGljZVBhcnRpdGlvbnM9ZCxHaC5zdWJkaXZpc2lvbnM9ZixHaC5vZmZzZXRBdHRyaWJ1dGU9RT09PS0xP3ZvaWQgMDpFLG5ldyBNZihHaCkpfTtNZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9yYWRpaTtpZihlLng8PTB8fGUueTw9MHx8ZS56PD0wKXJldHVybjtsZXQgaT10Ll9pbm5lclJhZGlpO2lmKGkueDw9MHx8aS55PD0wfHxpLno8PTApcmV0dXJuO2xldCBuPXQuX21pbmltdW1DbG9jayxzPXQuX21heGltdW1DbG9jayxvPXQuX21pbmltdW1Db25lLHI9dC5fbWF4aW11bUNvbmUsYT10Ll9zdWJkaXZpc2lvbnMsaD1vdC5mcm9tQ2FydGVzaWFuMyhlKSxBPXQuX3NsaWNlUGFydGl0aW9ucysxLGQ9dC5fc3RhY2tQYXJ0aXRpb25zKzE7QT1NYXRoLnJvdW5kKEEqTWF0aC5hYnMocy1uKS9MLlRXT19QSSksZD1NYXRoLnJvdW5kKGQqTWF0aC5hYnMoci1vKS9MLlBJKSxBPDImJihBPTIpLGQ8MiYmKGQ9Mik7bGV0IGY9MCxFPTEsXz1pLnghPT1lLnh8fGkueSE9PWUueXx8aS56IT09ZS56LFI9ITEsST0hMTtfJiYoRT0yLG8+MCYmKFI9ITAsZis9QSkscjxNYXRoLlBJJiYoST0hMCxmKz1BKSk7bGV0IEM9YSpFKihkK0EpLE49bmV3IEZsb2F0NjRBcnJheShDKjMpLFQ9MiooQytmLShBK2QpKkUpLEY9dGUuY3JlYXRlVHlwZWRBcnJheShDLFQpLGIsRyxNLFEsVT0wLGs9bmV3IEFycmF5KGQpLHk9bmV3IEFycmF5KGQpO2ZvcihiPTA7YjxkO2IrKylRPW8rYiooci1vKS8oZC0xKSxrW2JdPXJnKFEpLHlbYl09b2coUSk7bGV0IGM9bmV3IEFycmF5KGEpLGc9bmV3IEFycmF5KGEpO2ZvcihiPTA7YjxhO2IrKylNPW4rYioocy1uKS8oYS0xKSxjW2JdPXJnKE0pLGdbYl09b2coTSk7Zm9yKGI9MDtiPGQ7YisrKWZvcihHPTA7RzxhO0crKylOW1UrK109ZS54KmtbYl0qZ1tHXSxOW1UrK109ZS55KmtbYl0qY1tHXSxOW1UrK109ZS56KnlbYl07aWYoXylmb3IoYj0wO2I8ZDtiKyspZm9yKEc9MDtHPGE7RysrKU5bVSsrXT1pLngqa1tiXSpnW0ddLE5bVSsrXT1pLnkqa1tiXSpjW0ddLE5bVSsrXT1pLnoqeVtiXTtmb3Ioay5sZW5ndGg9YSx5Lmxlbmd0aD1hLGI9MDtiPGE7YisrKVE9bytiKihyLW8pLyhhLTEpLGtbYl09cmcoUSkseVtiXT1vZyhRKTtmb3IoYy5sZW5ndGg9QSxnLmxlbmd0aD1BLGI9MDtiPEE7YisrKU09bitiKihzLW4pLyhBLTEpLGNbYl09cmcoTSksZ1tiXT1vZyhNKTtmb3IoYj0wO2I8YTtiKyspZm9yKEc9MDtHPEE7RysrKU5bVSsrXT1lLngqa1tiXSpnW0ddLE5bVSsrXT1lLnkqa1tiXSpjW0ddLE5bVSsrXT1lLnoqeVtiXTtpZihfKWZvcihiPTA7YjxhO2IrKylmb3IoRz0wO0c8QTtHKyspTltVKytdPWkueCprW2JdKmdbR10sTltVKytdPWkueSprW2JdKmNbR10sTltVKytdPWkueip5W2JdO2ZvcihVPTAsYj0wO2I8ZCpFO2IrKyl7bGV0IHc9YiphO2ZvcihHPTA7RzxhLTE7RysrKUZbVSsrXT13K0csRltVKytdPXcrRysxfWxldCBWPWQqYSpFO2ZvcihiPTA7YjxBO2IrKylmb3IoRz0wO0c8YS0xO0crKylGW1UrK109VitiK0cqQSxGW1UrK109VitiKyhHKzEpKkE7aWYoXylmb3IoVj1kKmEqRStBKmEsYj0wO2I8QTtiKyspZm9yKEc9MDtHPGEtMTtHKyspRltVKytdPVYrYitHKkEsRltVKytdPVYrYisoRysxKSpBO2lmKF8pe2xldCB3PWQqYSpFLHg9dythKkE7aWYoUilmb3IoYj0wO2I8QTtiKyspRltVKytdPXcrYixGW1UrK109eCtiO2lmKEkpZm9yKHcrPWEqQS1BLHgrPWEqQS1BLGI9MDtiPEE7YisrKUZbVSsrXT13K2IsRltVKytdPXgrYn1sZXQgRD1uZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Tn0pfSk7aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1OLmxlbmd0aCx4PXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLEg9bmV3IFVpbnQ4QXJyYXkody8zKS5maWxsKHgpO0QuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6SH0pfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6RCxpbmRpY2VzOkYscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpOdC5mcm9tRWxsaXBzb2lkKGgpLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07amE9TWZ9KTt2YXIgSVY9e307SGUoSVYse2RlZmF1bHQ6KCk9PkRkdH0pO2Z1bmN0aW9uIFdkdCh0LGUpe3JldHVybiBtKHQuYnVmZmVyLGUpJiYodD1qYS51bnBhY2sodCxlKSksamEuY3JlYXRlR2VvbWV0cnkodCl9dmFyIERkdCxwVj1PKCgpPT57bXQoKTtaVigpO0RkdD1XZHR9KTtmdW5jdGlvbiBHQSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5sZWZ0PXQubGVmdCx0aGlzLl9sZWZ0PXZvaWQgMCx0aGlzLnJpZ2h0PXQucmlnaHQsdGhpcy5fcmlnaHQ9dm9pZCAwLHRoaXMudG9wPXQudG9wLHRoaXMuX3RvcD12b2lkIDAsdGhpcy5ib3R0b209dC5ib3R0b20sdGhpcy5fYm90dG9tPXZvaWQgMCx0aGlzLm5lYXI9Wih0Lm5lYXIsMSksdGhpcy5fbmVhcj10aGlzLm5lYXIsdGhpcy5mYXI9Wih0LmZhciw1ZTgpLHRoaXMuX2Zhcj10aGlzLmZhcix0aGlzLl9jdWxsaW5nVm9sdW1lPW5ldyBYWix0aGlzLl9wZXJzcGVjdGl2ZU1hdHJpeD1uZXcgYXQsdGhpcy5faW5maW5pdGVQZXJzcGVjdGl2ZT1uZXcgYXR9ZnVuY3Rpb24gdVYodCl7aWYoIW0odC5yaWdodCl8fCFtKHQubGVmdCl8fCFtKHQudG9wKXx8IW0odC5ib3R0b20pfHwhbSh0Lm5lYXIpfHwhbSh0LmZhcikpdGhyb3cgbmV3IFkoInJpZ2h0LCBsZWZ0LCB0b3AsIGJvdHRvbSwgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7bGV0IGU9dC50b3AsaT10LmJvdHRvbSxuPXQucmlnaHQscz10LmxlZnQsbz10Lm5lYXIscj10LmZhcjtpZihlIT09dC5fdG9wfHxpIT09dC5fYm90dG9tfHxzIT09dC5fbGVmdHx8biE9PXQuX3JpZ2h0fHxvIT09dC5fbmVhcnx8ciE9PXQuX2Zhcil7aWYodC5uZWFyPD0wfHx0Lm5lYXI+dC5mYXIpdGhyb3cgbmV3IFkoIm5lYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIGZhci4iKTt0Ll9sZWZ0PXMsdC5fcmlnaHQ9bix0Ll90b3A9ZSx0Ll9ib3R0b209aSx0Ll9uZWFyPW8sdC5fZmFyPXIsdC5fcGVyc3BlY3RpdmVNYXRyaXg9YXQuY29tcHV0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyKHMsbixpLGUsbyxyLHQuX3BlcnNwZWN0aXZlTWF0cml4KSx0Ll9pbmZpbml0ZVBlcnNwZWN0aXZlPWF0LmNvbXB1dGVJbmZpbml0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyKHMsbixpLGUsbyx0Ll9pbmZpbml0ZVBlcnNwZWN0aXZlKX19dmFyIE1kdCxVZHQsUWR0LGtkdCxwNSx1NT1PKCgpPT57SHQoKTtWcygpO1pUKCk7YnQoKTttdCgpO1Z0KCk7X2UoKTtGaSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEdBLnByb3RvdHlwZSx7cHJvamVjdGlvbk1hdHJpeDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHVWKHRoaXMpLHRoaXMuX3BlcnNwZWN0aXZlTWF0cml4fX0saW5maW5pdGVQcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdVYodGhpcyksdGhpcy5faW5maW5pdGVQZXJzcGVjdGl2ZX19fSk7TWR0PW5ldyBsLFVkdD1uZXcgbCxRZHQ9bmV3IGwsa2R0PW5ldyBsO0dBLnByb3RvdHlwZS5jb21wdXRlQ3VsbGluZ1ZvbHVtZT1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJkaXJlY3Rpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInVwIGlzIHJlcXVpcmVkLiIpO2xldCBuPXRoaXMuX2N1bGxpbmdWb2x1bWUucGxhbmVzLHM9dGhpcy50b3Asbz10aGlzLmJvdHRvbSxyPXRoaXMucmlnaHQsYT10aGlzLmxlZnQsaD10aGlzLm5lYXIsQT10aGlzLmZhcixkPWwuY3Jvc3MoZSxpLE1kdCksZj1VZHQ7bC5tdWx0aXBseUJ5U2NhbGFyKGUsaCxmKSxsLmFkZCh0LGYsZik7bGV0IEU9UWR0O2wubXVsdGlwbHlCeVNjYWxhcihlLEEsRSksbC5hZGQodCxFLEUpO2xldCBfPWtkdDtsLm11bHRpcGx5QnlTY2FsYXIoZCxhLF8pLGwuYWRkKGYsXyxfKSxsLnN1YnRyYWN0KF8sdCxfKSxsLm5vcm1hbGl6ZShfLF8pLGwuY3Jvc3MoXyxpLF8pLGwubm9ybWFsaXplKF8sXyk7bGV0IFI9blswXTtyZXR1cm4gbShSKXx8KFI9blswXT1uZXcgaWUpLFIueD1fLngsUi55PV8ueSxSLno9Xy56LFIudz0tbC5kb3QoXyx0KSxsLm11bHRpcGx5QnlTY2FsYXIoZCxyLF8pLGwuYWRkKGYsXyxfKSxsLnN1YnRyYWN0KF8sdCxfKSxsLmNyb3NzKGksXyxfKSxsLm5vcm1hbGl6ZShfLF8pLFI9blsxXSxtKFIpfHwoUj1uWzFdPW5ldyBpZSksUi54PV8ueCxSLnk9Xy55LFIuej1fLnosUi53PS1sLmRvdChfLHQpLGwubXVsdGlwbHlCeVNjYWxhcihpLG8sXyksbC5hZGQoZixfLF8pLGwuc3VidHJhY3QoXyx0LF8pLGwuY3Jvc3MoZCxfLF8pLGwubm9ybWFsaXplKF8sXyksUj1uWzJdLG0oUil8fChSPW5bMl09bmV3IGllKSxSLng9Xy54LFIueT1fLnksUi56PV8ueixSLnc9LWwuZG90KF8sdCksbC5tdWx0aXBseUJ5U2NhbGFyKGkscyxfKSxsLmFkZChmLF8sXyksbC5zdWJ0cmFjdChfLHQsXyksbC5jcm9zcyhfLGQsXyksbC5ub3JtYWxpemUoXyxfKSxSPW5bM10sbShSKXx8KFI9blszXT1uZXcgaWUpLFIueD1fLngsUi55PV8ueSxSLno9Xy56LFIudz0tbC5kb3QoXyx0KSxSPW5bNF0sbShSKXx8KFI9bls0XT1uZXcgaWUpLFIueD1lLngsUi55PWUueSxSLno9ZS56LFIudz0tbC5kb3QoZSxmKSxsLm5lZ2F0ZShlLF8pLFI9bls1XSxtKFIpfHwoUj1uWzVdPW5ldyBpZSksUi54PV8ueCxSLnk9Xy55LFIuej1fLnosUi53PS1sLmRvdChfLEUpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O0dBLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLGksbixzKXtpZih1Vih0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IFkoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBZKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBZKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkIik7aWYobjw9MCl0aHJvdyBuZXcgWSgicGl4ZWxSYXRpbyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKCFtKHMpKXRocm93IG5ldyBZKCJBIHJlc3VsdCBvYmplY3QgaXMgcmVxdWlyZWQuIik7bGV0IG89MS90aGlzLm5lYXIscj10aGlzLnRvcCpvLGE9MipuKmkqci9lO3I9dGhpcy5yaWdodCpvO2xldCBoPTIqbippKnIvdDtyZXR1cm4gcy54PWgscy55PWEsc307R0EucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgR0EpLHQucmlnaHQ9dGhpcy5yaWdodCx0LmxlZnQ9dGhpcy5sZWZ0LHQudG9wPXRoaXMudG9wLHQuYm90dG9tPXRoaXMuYm90dG9tLHQubmVhcj10aGlzLm5lYXIsdC5mYXI9dGhpcy5mYXIsdC5fbGVmdD12b2lkIDAsdC5fcmlnaHQ9dm9pZCAwLHQuX3RvcD12b2lkIDAsdC5fYm90dG9tPXZvaWQgMCx0Ll9uZWFyPXZvaWQgMCx0Ll9mYXI9dm9pZCAwLHR9O0dBLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJnQgaW5zdGFuY2VvZiBHQSYmdGhpcy5yaWdodD09PXQucmlnaHQmJnRoaXMubGVmdD09PXQubGVmdCYmdGhpcy50b3A9PT10LnRvcCYmdGhpcy5ib3R0b209PT10LmJvdHRvbSYmdGhpcy5uZWFyPT09dC5uZWFyJiZ0aGlzLmZhcj09PXQuZmFyfTtHQS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ9PT10aGlzfHxtKHQpJiZ0IGluc3RhbmNlb2YgR0EmJkwuZXF1YWxzRXBzaWxvbih0aGlzLnJpZ2h0LHQucmlnaHQsZSxpKSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMubGVmdCx0LmxlZnQsZSxpKSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMudG9wLHQudG9wLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLmJvdHRvbSx0LmJvdHRvbSxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5uZWFyLHQubmVhcixlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5mYXIsdC5mYXIsZSxpKX07cDU9R0F9KTtmdW5jdGlvbiBBcih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bT1uZXcgcDUsdGhpcy5mb3Y9dC5mb3YsdGhpcy5fZm92PXZvaWQgMCx0aGlzLl9mb3Z5PXZvaWQgMCx0aGlzLl9zc2VEZW5vbWluYXRvcj12b2lkIDAsdGhpcy5hc3BlY3RSYXRpbz10LmFzcGVjdFJhdGlvLHRoaXMuX2FzcGVjdFJhdGlvPXZvaWQgMCx0aGlzLm5lYXI9Wih0Lm5lYXIsMSksdGhpcy5fbmVhcj10aGlzLm5lYXIsdGhpcy5mYXI9Wih0LmZhciw1ZTgpLHRoaXMuX2Zhcj10aGlzLmZhcix0aGlzLnhPZmZzZXQ9Wih0LnhPZmZzZXQsMCksdGhpcy5feE9mZnNldD10aGlzLnhPZmZzZXQsdGhpcy55T2Zmc2V0PVoodC55T2Zmc2V0LDApLHRoaXMuX3lPZmZzZXQ9dGhpcy55T2Zmc2V0fWZ1bmN0aW9uIEhhKHQpe2lmKCFtKHQuZm92KXx8IW0odC5hc3BlY3RSYXRpbyl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgWSgiZm92LCBhc3BlY3RSYXRpbywgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7bGV0IGU9dC5fb2ZmQ2VudGVyRnJ1c3R1bTtpZih0LmZvdiE9PXQuX2Zvdnx8dC5hc3BlY3RSYXRpbyE9PXQuX2FzcGVjdFJhdGlvfHx0Lm5lYXIhPT10Ll9uZWFyfHx0LmZhciE9PXQuX2Zhcnx8dC54T2Zmc2V0IT09dC5feE9mZnNldHx8dC55T2Zmc2V0IT09dC5feU9mZnNldCl7aWYodC5mb3Y8MHx8dC5mb3Y+PU1hdGguUEkpdGhyb3cgbmV3IFkoImZvdiBtdXN0IGJlIGluIHRoZSByYW5nZSBbMCwgUEkpLiIpO2lmKHQuYXNwZWN0UmF0aW88MCl0aHJvdyBuZXcgWSgiYXNwZWN0UmF0aW8gbXVzdCBiZSBwb3NpdGl2ZS4iKTtpZih0Lm5lYXI8MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBZKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fYXNwZWN0UmF0aW89dC5hc3BlY3RSYXRpbyx0Ll9mb3Y9dC5mb3YsdC5fZm92eT10LmFzcGVjdFJhdGlvPD0xP3QuZm92Ok1hdGguYXRhbihNYXRoLnRhbih0LmZvdiouNSkvdC5hc3BlY3RSYXRpbykqMix0Ll9uZWFyPXQubmVhcix0Ll9mYXI9dC5mYXIsdC5fc3NlRGVub21pbmF0b3I9MipNYXRoLnRhbiguNSp0Ll9mb3Z5KSx0Ll94T2Zmc2V0PXQueE9mZnNldCx0Ll95T2Zmc2V0PXQueU9mZnNldCxlLnRvcD10Lm5lYXIqTWF0aC50YW4oLjUqdC5fZm92eSksZS5ib3R0b209LWUudG9wLGUucmlnaHQ9dC5hc3BlY3RSYXRpbyplLnRvcCxlLmxlZnQ9LWUucmlnaHQsZS5uZWFyPXQubmVhcixlLmZhcj10LmZhcixlLnJpZ2h0Kz10LnhPZmZzZXQsZS5sZWZ0Kz10LnhPZmZzZXQsZS50b3ArPXQueU9mZnNldCxlLmJvdHRvbSs9dC55T2Zmc2V0fX12YXIgYm8sQ1Y9TygoKT0+e2FlKCk7YnQoKTttdCgpO1Z0KCk7X2UoKTt1NSgpO0FyLnBhY2tlZExlbmd0aD02O0FyLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC5mb3YsZVtpKytdPXQuYXNwZWN0UmF0aW8sZVtpKytdPXQubmVhcixlW2krK109dC5mYXIsZVtpKytdPXQueE9mZnNldCxlW2ldPXQueU9mZnNldCxlfTtBci51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgQXIpLGkuZm92PXRbZSsrXSxpLmFzcGVjdFJhdGlvPXRbZSsrXSxpLm5lYXI9dFtlKytdLGkuZmFyPXRbZSsrXSxpLnhPZmZzZXQ9dFtlKytdLGkueU9mZnNldD10W2VdLGl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEFyLnByb3RvdHlwZSx7cHJvamVjdGlvbk1hdHJpeDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX29mZkNlbnRlckZydXN0dW0ucHJvamVjdGlvbk1hdHJpeH19LGluZmluaXRlUHJvamVjdGlvbk1hdHJpeDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX29mZkNlbnRlckZydXN0dW0uaW5maW5pdGVQcm9qZWN0aW9uTWF0cml4fX0sZm92eTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX2Zvdnl9fSxzc2VEZW5vbWluYXRvcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX3NzZURlbm9taW5hdG9yfX0sb2ZmQ2VudGVyRnJ1c3R1bTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX29mZkNlbnRlckZydXN0dW19fX0pO0FyLnByb3RvdHlwZS5jb21wdXRlQ3VsbGluZ1ZvbHVtZT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX29mZkNlbnRlckZydXN0dW0uY29tcHV0ZUN1bGxpbmdWb2x1bWUodCxlLGkpfTtBci5wcm90b3R5cGUuZ2V0UGl4ZWxEaW1lbnNpb25zPWZ1bmN0aW9uKHQsZSxpLG4scyl7cmV0dXJuIEhhKHRoaXMpLHRoaXMuX29mZkNlbnRlckZydXN0dW0uZ2V0UGl4ZWxEaW1lbnNpb25zKHQsZSxpLG4scyl9O0FyLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KXx8KHQ9bmV3IEFyKSx0LmFzcGVjdFJhdGlvPXRoaXMuYXNwZWN0UmF0aW8sdC5mb3Y9dGhpcy5mb3YsdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9hc3BlY3RSYXRpbz12b2lkIDAsdC5fZm92PXZvaWQgMCx0Ll9uZWFyPXZvaWQgMCx0Ll9mYXI9dm9pZCAwLHRoaXMuX29mZkNlbnRlckZydXN0dW0uY2xvbmUodC5fb2ZmQ2VudGVyRnJ1c3R1bSksdH07QXIucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4hbSh0KXx8ISh0IGluc3RhbmNlb2YgQXIpPyExOihIYSh0aGlzKSxIYSh0KSx0aGlzLmZvdj09PXQuZm92JiZ0aGlzLmFzcGVjdFJhdGlvPT09dC5hc3BlY3RSYXRpbyYmdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5lcXVhbHModC5fb2ZmQ2VudGVyRnJ1c3R1bSkpfTtBci5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIEFyKT8hMTooSGEodGhpcyksSGEodCksTC5lcXVhbHNFcHNpbG9uKHRoaXMuZm92LHQuZm92LGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLmFzcGVjdFJhdGlvLHQuYXNwZWN0UmF0aW8sZSxpKSYmdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5lcXVhbHNFcHNpbG9uKHQuX29mZkNlbnRlckZydXN0dW0sZSxpKSl9O2JvPUFyfSk7ZnVuY3Rpb24gUmQodCl7cC50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMuZnJ1c3R1bSIsdC5mcnVzdHVtKSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMub3JpZ2luIix0Lm9yaWdpbikscC50eXBlT2Yub2JqZWN0KCJvcHRpb25zLm9yaWVudGF0aW9uIix0Lm9yaWVudGF0aW9uKTtsZXQgZT10LmZydXN0dW0saT10Lm9yaWVudGF0aW9uLG49dC5vcmlnaW4scz1aKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpLG89Wih0Ll9kcmF3TmVhclBsYW5lLCEwKSxyLGE7ZSBpbnN0YW5jZW9mIGJvPyhyPWFnLGE9Ym8ucGFja2VkTGVuZ3RoKTplIGluc3RhbmNlb2YganMmJihyPUxkdCxhPWpzLnBhY2tlZExlbmd0aCksdGhpcy5fZnJ1c3R1bVR5cGU9cix0aGlzLl9mcnVzdHVtPWUuY2xvbmUoKSx0aGlzLl9vcmlnaW49bC5jbG9uZShuKSx0aGlzLl9vcmllbnRhdGlvbj1BZS5jbG9uZShpKSx0aGlzLl9kcmF3TmVhclBsYW5lPW8sdGhpcy5fdmVydGV4Rm9ybWF0PXMsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlRnJ1c3R1bUdlb21ldHJ5Iix0aGlzLnBhY2tlZExlbmd0aD0yK2ErbC5wYWNrZWRMZW5ndGgrQWUucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aH1mdW5jdGlvbiBVZih0LGUsaSxuLHMsbyxyLGEpe2xldCBoPXQvMyoyO2ZvcihsZXQgQT0wO0E8NDsrK0EpbShlKSYmKGVbdF09by54LGVbdCsxXT1vLnksZVt0KzJdPW8ueiksbShpKSYmKGlbdF09ci54LGlbdCsxXT1yLnksaVt0KzJdPXIueiksbShuKSYmKG5bdF09YS54LG5bdCsxXT1hLnksblt0KzJdPWEueiksdCs9MztzW2hdPTAsc1toKzFdPTAsc1toKzJdPTEsc1toKzNdPTAsc1toKzRdPTEsc1toKzVdPTEsc1toKzZdPTAsc1toKzddPTF9dmFyIGFnLExkdCx5ZHQsd2R0LHhkdCxQZHQsSmR0LGpkdCxIZHQsZ1YsQzUsZzUsVDUsdmR0LHpkdCxLZHQsUGMsVFIsTjUsTlIsVFY9TygoKT0+e19pKCk7SHQoKTtWcygpO2FlKCk7b2koKTtidCgpO210KCk7eWkoKTtqaSgpO0VuKCk7ZG4oKTtGaSgpOyRaKCk7Q1YoKTtYaSgpOyRzKCk7THMoKTthZz0wLExkdD0xO1JkLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApO2xldCBuPXQuX2ZydXN0dW1UeXBlLHM9dC5fZnJ1c3R1bTtyZXR1cm4gZVtpKytdPW4sbj09PWFnPyhiby5wYWNrKHMsZSxpKSxpKz1iby5wYWNrZWRMZW5ndGgpOihqcy5wYWNrKHMsZSxpKSxpKz1qcy5wYWNrZWRMZW5ndGgpLGwucGFjayh0Ll9vcmlnaW4sZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxBZS5wYWNrKHQuX29yaWVudGF0aW9uLGUsaSksaSs9QWUucGFja2VkTGVuZ3RoLE90LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9T3QucGFja2VkTGVuZ3RoLGVbaV09dC5fZHJhd05lYXJQbGFuZT8xOjAsZX07eWR0PW5ldyBibyx3ZHQ9bmV3IGpzLHhkdD1uZXcgQWUsUGR0PW5ldyBsLEpkdD1uZXcgT3Q7UmQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj10W2UrK10scztuPT09YWc/KHM9Ym8udW5wYWNrKHQsZSx5ZHQpLGUrPWJvLnBhY2tlZExlbmd0aCk6KHM9anMudW5wYWNrKHQsZSx3ZHQpLGUrPWpzLnBhY2tlZExlbmd0aCk7bGV0IG89bC51bnBhY2sodCxlLFBkdCk7ZSs9bC5wYWNrZWRMZW5ndGg7bGV0IHI9QWUudW5wYWNrKHQsZSx4ZHQpO2UrPUFlLnBhY2tlZExlbmd0aDtsZXQgYT1PdC51bnBhY2sodCxlLEpkdCk7ZSs9T3QucGFja2VkTGVuZ3RoO2xldCBoPXRbZV09PT0xO2lmKCFtKGkpKXJldHVybiBuZXcgUmQoe2ZydXN0dW06cyxvcmlnaW46byxvcmllbnRhdGlvbjpyLHZlcnRleEZvcm1hdDphLF9kcmF3TmVhclBsYW5lOmh9KTtsZXQgQT1uPT09aS5fZnJ1c3R1bVR5cGU/aS5fZnJ1c3R1bTp2b2lkIDA7cmV0dXJuIGkuX2ZydXN0dW09cy5jbG9uZShBKSxpLl9mcnVzdHVtVHlwZT1uLGkuX29yaWdpbj1sLmNsb25lKG8saS5fb3JpZ2luKSxpLl9vcmllbnRhdGlvbj1BZS5jbG9uZShyLGkuX29yaWVudGF0aW9uKSxpLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUoYSxpLl92ZXJ0ZXhGb3JtYXQpLGkuX2RyYXdOZWFyUGxhbmU9aCxpfTtqZHQ9bmV3IGx0LEhkdD1uZXcgYXQsZ1Y9bmV3IGF0LEM1PW5ldyBsLGc1PW5ldyBsLFQ1PW5ldyBsLHZkdD1uZXcgbCx6ZHQ9bmV3IGwsS2R0PW5ldyBsLFBjPW5ldyBBcnJheSgzKSxUUj1uZXcgQXJyYXkoNCk7VFJbMF09bmV3IGllKC0xLC0xLDEsMSk7VFJbMV09bmV3IGllKDEsLTEsMSwxKTtUUlsyXT1uZXcgaWUoMSwxLDEsMSk7VFJbM109bmV3IGllKC0xLDEsMSwxKTtONT1uZXcgQXJyYXkoNCk7Zm9yKGxldCB0PTA7dDw0OysrdClONVt0XT1uZXcgaWU7UmQuX2NvbXB1dGVOZWFyRmFyUGxhbmVzPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIsYSl7bGV0IGg9bHQuZnJvbVF1YXRlcm5pb24oZSxqZHQpLEE9WihvLEM1KSxkPVoocixnNSksZj1aKGEsVDUpO0E9bHQuZ2V0Q29sdW1uKGgsMCxBKSxkPWx0LmdldENvbHVtbihoLDEsZCksZj1sdC5nZXRDb2x1bW4oaCwyLGYpLGwubm9ybWFsaXplKEEsQSksbC5ub3JtYWxpemUoZCxkKSxsLm5vcm1hbGl6ZShmLGYpLGwubmVnYXRlKEEsQSk7bGV0IEU9YXQuY29tcHV0ZVZpZXcodCxmLGQsQSxIZHQpLF8sUixJPW4ucHJvamVjdGlvbk1hdHJpeDtpZihpPT09YWcpe2xldCBDPWF0Lm11bHRpcGx5KEksRSxnVik7Uj1hdC5pbnZlcnNlKEMsZ1YpfWVsc2UgXz1hdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24oRSxnVik7bShSKT8oUGNbMF09bi5uZWFyLFBjWzFdPW4uZmFyKTooUGNbMF09MCxQY1sxXT1uLm5lYXIsUGNbMl09bi5mYXIpO2ZvcihsZXQgQz0wO0M8MjsrK0MpZm9yKGxldCBOPTA7Tjw0OysrTil7bGV0IFQ9aWUuY2xvbmUoVFJbTl0sTjVbTl0pO2lmKG0oUikpe1Q9YXQubXVsdGlwbHlCeVZlY3RvcihSLFQsVCk7bGV0IEY9MS9ULnc7bC5tdWx0aXBseUJ5U2NhbGFyKFQsRixUKSxsLnN1YnRyYWN0KFQsdCxUKSxsLm5vcm1hbGl6ZShULFQpO2xldCBiPWwuZG90KGYsVCk7bC5tdWx0aXBseUJ5U2NhbGFyKFQsUGNbQ10vYixUKSxsLmFkZChULHQsVCl9ZWxzZXtsZXQgRj1uLm9mZkNlbnRlckZydXN0dW07bShGKSYmKG49Rik7bGV0IGI9UGNbQ10sRz1QY1tDKzFdO1QueD0oVC54KihuLnJpZ2h0LW4ubGVmdCkrbi5sZWZ0K24ucmlnaHQpKi41LFQueT0oVC55KihuLnRvcC1uLmJvdHRvbSkrbi5ib3R0b20rbi50b3ApKi41LFQuej0oVC56KihiLUcpLWItRykqLjUsVC53PTEsYXQubXVsdGlwbHlCeVZlY3RvcihfLFQsVCl9c1sxMipDK04qM109VC54LHNbMTIqQytOKjMrMV09VC55LHNbMTIqQytOKjMrMl09VC56fX07UmQuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fZnJ1c3R1bVR5cGUsaT10Ll9mcnVzdHVtLG49dC5fb3JpZ2luLHM9dC5fb3JpZW50YXRpb24sbz10Ll9kcmF3TmVhclBsYW5lLHI9dC5fdmVydGV4Rm9ybWF0LGE9bz82OjUsaD1uZXcgRmxvYXQ2NEFycmF5KDMqNCo2KTtSZC5fY29tcHV0ZU5lYXJGYXJQbGFuZXMobixzLGUsaSxoKTtsZXQgQT0zKjQqMjtoW0FdPWhbMyo0XSxoW0ErMV09aFszKjQrMV0saFtBKzJdPWhbMyo0KzJdLGhbQSszXT1oWzBdLGhbQSs0XT1oWzFdLGhbQSs1XT1oWzJdLGhbQSs2XT1oWzMqM10saFtBKzddPWhbMyozKzFdLGhbQSs4XT1oWzMqMysyXSxoW0ErOV09aFszKjddLGhbQSsxMF09aFszKjcrMV0saFtBKzExXT1oWzMqNysyXSxBKz0zKjQsaFtBXT1oWzMqNV0saFtBKzFdPWhbMyo1KzFdLGhbQSsyXT1oWzMqNSsyXSxoW0ErM109aFszXSxoW0ErNF09aFs0XSxoW0ErNV09aFs1XSxoW0ErNl09aFswXSxoW0ErN109aFsxXSxoW0ErOF09aFsyXSxoW0ErOV09aFszKjRdLGhbQSsxMF09aFszKjQrMV0saFtBKzExXT1oWzMqNCsyXSxBKz0zKjQsaFtBXT1oWzNdLGhbQSsxXT1oWzRdLGhbQSsyXT1oWzVdLGhbQSszXT1oWzMqNV0saFtBKzRdPWhbMyo1KzFdLGhbQSs1XT1oWzMqNSsyXSxoW0ErNl09aFszKjZdLGhbQSs3XT1oWzMqNisxXSxoW0ErOF09aFszKjYrMl0saFtBKzldPWhbMyoyXSxoW0ErMTBdPWhbMyoyKzFdLGhbQSsxMV09aFszKjIrMl0sQSs9Myo0LGhbQV09aFszKjJdLGhbQSsxXT1oWzMqMisxXSxoW0ErMl09aFszKjIrMl0saFtBKzNdPWhbMyo2XSxoW0ErNF09aFszKjYrMV0saFtBKzVdPWhbMyo2KzJdLGhbQSs2XT1oWzMqN10saFtBKzddPWhbMyo3KzFdLGhbQSs4XT1oWzMqNysyXSxoW0ErOV09aFszKjNdLGhbQSsxMF09aFszKjMrMV0saFtBKzExXT1oWzMqMysyXSxvfHwoaD1oLnN1YmFycmF5KDMqNCkpO2xldCBkPW5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSl9KTtpZihtKHIubm9ybWFsKXx8bShyLnRhbmdlbnQpfHxtKHIuYml0YW5nZW50KXx8bShyLnN0KSl7bGV0IEU9bShyLm5vcm1hbCk/bmV3IEZsb2F0MzJBcnJheSgxMiphKTp2b2lkIDAsXz1tKHIudGFuZ2VudCk/bmV3IEZsb2F0MzJBcnJheSgzKjQqYSk6dm9pZCAwLFI9bShyLmJpdGFuZ2VudCk/bmV3IEZsb2F0MzJBcnJheSgzKjQqYSk6dm9pZCAwLEk9bShyLnN0KT9uZXcgRmxvYXQzMkFycmF5KDIqNCphKTp2b2lkIDAsQz1DNSxOPWc1LFQ9VDUsRj1sLm5lZ2F0ZShDLHZkdCksYj1sLm5lZ2F0ZShOLHpkdCksRz1sLm5lZ2F0ZShULEtkdCk7QT0wLG8mJihVZihBLEUsXyxSLEksRyxDLE4pLEErPTMqNCksVWYoQSxFLF8sUixJLFQsRixOKSxBKz0zKjQsVWYoQSxFLF8sUixJLEYsRyxOKSxBKz0zKjQsVWYoQSxFLF8sUixJLGIsRyxGKSxBKz0zKjQsVWYoQSxFLF8sUixJLEMsVCxOKSxBKz0zKjQsVWYoQSxFLF8sUixJLE4sVCxGKSxtKEUpJiYoZC5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkV9KSksbShfKSYmKGQudGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pKSxtKFIpJiYoZC5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlJ9KSksbShJKSYmKGQuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkl9KSl9bGV0IGY9bmV3IFVpbnQxNkFycmF5KDYqYSk7Zm9yKGxldCBFPTA7RTxhOysrRSl7bGV0IF89RSo2LFI9RSo0O2ZbX109UixmW18rMV09UisxLGZbXysyXT1SKzIsZltfKzNdPVIsZltfKzRdPVIrMixmW18rNV09UiszfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6ZCxpbmRpY2VzOmYscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6TnQuZnJvbVZlcnRpY2VzKGgpfSl9O05SPVJkfSk7dmFyIE5WPXt9O0hlKE5WLHtkZWZhdWx0OigpPT5xZHR9KTtmdW5jdGlvbiBYZHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9TlIudW5wYWNrKHQsZSkpLE5SLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBxZHQsYlY9TygoKT0+e210KCk7VFYoKTtxZHQ9WGR0fSk7ZnVuY3Rpb24gYlIodCl7cC50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMuZnJ1c3R1bSIsdC5mcnVzdHVtKSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMub3JpZ2luIix0Lm9yaWdpbikscC50eXBlT2Yub2JqZWN0KCJvcHRpb25zLm9yaWVudGF0aW9uIix0Lm9yaWVudGF0aW9uKTtsZXQgZT10LmZydXN0dW0saT10Lm9yaWVudGF0aW9uLG49dC5vcmlnaW4scz1aKHQuX2RyYXdOZWFyUGxhbmUsITApLG8scjtlIGluc3RhbmNlb2YgYm8/KG89RlYscj1iby5wYWNrZWRMZW5ndGgpOmUgaW5zdGFuY2VvZiBqcyYmKG89JGR0LHI9anMucGFja2VkTGVuZ3RoKSx0aGlzLl9mcnVzdHVtVHlwZT1vLHRoaXMuX2ZydXN0dW09ZS5jbG9uZSgpLHRoaXMuX29yaWdpbj1sLmNsb25lKG4pLHRoaXMuX29yaWVudGF0aW9uPUFlLmNsb25lKGkpLHRoaXMuX2RyYXdOZWFyUGxhbmU9cyx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVGcnVzdHVtT3V0bGluZUdlb21ldHJ5Iix0aGlzLnBhY2tlZExlbmd0aD0yK3IrbC5wYWNrZWRMZW5ndGgrQWUucGFja2VkTGVuZ3RofXZhciBGViwkZHQsdG10LGVtdCxpbXQsbm10LFlWLGI1PU8oKCk9PntfaSgpO0h0KCk7YWUoKTtvaSgpO2J0KCk7bXQoKTtUVigpO3lpKCk7amkoKTtFbigpOyRaKCk7Q1YoKTtYaSgpOyRzKCk7RlY9MCwkZHQ9MTtiUi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKTtsZXQgbj10Ll9mcnVzdHVtVHlwZSxzPXQuX2ZydXN0dW07cmV0dXJuIGVbaSsrXT1uLG49PT1GVj8oYm8ucGFjayhzLGUsaSksaSs9Ym8ucGFja2VkTGVuZ3RoKTooanMucGFjayhzLGUsaSksaSs9anMucGFja2VkTGVuZ3RoKSxsLnBhY2sodC5fb3JpZ2luLGUsaSksaSs9bC5wYWNrZWRMZW5ndGgsQWUucGFjayh0Ll9vcmllbnRhdGlvbixlLGkpLGkrPUFlLnBhY2tlZExlbmd0aCxlW2ldPXQuX2RyYXdOZWFyUGxhbmU/MTowLGV9O3RtdD1uZXcgYm8sZW10PW5ldyBqcyxpbXQ9bmV3IEFlLG5tdD1uZXcgbDtiUi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPXRbZSsrXSxzO249PT1GVj8ocz1iby51bnBhY2sodCxlLHRtdCksZSs9Ym8ucGFja2VkTGVuZ3RoKToocz1qcy51bnBhY2sodCxlLGVtdCksZSs9anMucGFja2VkTGVuZ3RoKTtsZXQgbz1sLnVucGFjayh0LGUsbm10KTtlKz1sLnBhY2tlZExlbmd0aDtsZXQgcj1BZS51bnBhY2sodCxlLGltdCk7ZSs9QWUucGFja2VkTGVuZ3RoO2xldCBhPXRbZV09PT0xO2lmKCFtKGkpKXJldHVybiBuZXcgYlIoe2ZydXN0dW06cyxvcmlnaW46byxvcmllbnRhdGlvbjpyLF9kcmF3TmVhclBsYW5lOmF9KTtsZXQgaD1uPT09aS5fZnJ1c3R1bVR5cGU/aS5fZnJ1c3R1bTp2b2lkIDA7cmV0dXJuIGkuX2ZydXN0dW09cy5jbG9uZShoKSxpLl9mcnVzdHVtVHlwZT1uLGkuX29yaWdpbj1sLmNsb25lKG8saS5fb3JpZ2luKSxpLl9vcmllbnRhdGlvbj1BZS5jbG9uZShyLGkuX29yaWVudGF0aW9uKSxpLl9kcmF3TmVhclBsYW5lPWEsaX07YlIuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fZnJ1c3R1bVR5cGUsaT10Ll9mcnVzdHVtLG49dC5fb3JpZ2luLHM9dC5fb3JpZW50YXRpb24sbz10Ll9kcmF3TmVhclBsYW5lLHI9bmV3IEZsb2F0NjRBcnJheSgzKjQqMik7TlIuX2NvbXB1dGVOZWFyRmFyUGxhbmVzKG4scyxlLGkscik7bGV0IGE9bmV3IHdlKHtwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnJ9KX0pLGgsQSxkPW8/MjoxLGY9bmV3IFVpbnQxNkFycmF5KDgqKGQrMSkpLEU9bz8wOjE7Zm9yKDtFPDI7KytFKWg9bz9FKjg6MCxBPUUqNCxmW2hdPUEsZltoKzFdPUErMSxmW2grMl09QSsxLGZbaCszXT1BKzIsZltoKzRdPUErMixmW2grNV09QSszLGZbaCs2XT1BKzMsZltoKzddPUE7Zm9yKEU9MDtFPDI7KytFKWg9KGQrRSkqOCxBPUUqNCxmW2hdPUEsZltoKzFdPUErNCxmW2grMl09QSsxLGZbaCszXT1BKzUsZltoKzRdPUErMixmW2grNV09QSs2LGZbaCs2XT1BKzMsZltoKzddPUErNztyZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmEsaW5kaWNlczpmLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6TnQuZnJvbVZlcnRpY2VzKHIpfSl9O1lWPWJSfSk7dmFyIFNWPXt9O0hlKFNWLHtkZWZhdWx0OigpPT5vbXR9KTtmdW5jdGlvbiBzbXQodCxlKXtyZXR1cm4gbShlKSYmKHQ9WVYudW5wYWNrKHQsZSkpLFlWLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBvbXQsT1Y9TygoKT0+e210KCk7YjUoKTtvbXQ9c210fSk7dmFyIFZWPXt9O0hlKFZWLHtkZWZhdWx0OigpPT5hbXR9KTtmdW5jdGlvbiBybXQodCxlKXtyZXR1cm4gRG8uaW5pdGlhbGl6ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gbShlKSYmKHQ9S0UudW5wYWNrKHQsZSkpLEtFLmNyZWF0ZUdlb21ldHJ5KHQpfSl9dmFyIGFtdCxHVj1PKCgpPT57SkUoKTttdCgpO1ZOKCk7YW10PXJtdH0pO2Z1bmN0aW9uIFFmKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpO3RoaXMuX3ZlcnRleEZvcm1hdD1lLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBsYW5lR2VvbWV0cnkifXZhciBGNSxBbXQsQWcsaGcsQlYsWTU9TygoKT0+e19pKCk7SHQoKTthZSgpO29pKCk7YnQoKTttdCgpO3lpKCk7amkoKTtFbigpO1hpKCk7THMoKTtRZi5wYWNrZWRMZW5ndGg9T3QucGFja2VkTGVuZ3RoO1FmLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGV9O0Y1PW5ldyBPdCxBbXQ9e3ZlcnRleEZvcm1hdDpGNX07UWYudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj1PdC51bnBhY2sodCxlLEY1KTtyZXR1cm4gbShpKT8oaS5fdmVydGV4Rm9ybWF0PU90LmNsb25lKG4saS5fdmVydGV4Rm9ybWF0KSxpKTpuZXcgUWYoQW10KX07QWc9bmV3IGwoLS41LC0uNSwwKSxoZz1uZXcgbCguNSwuNSwwKTtRZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll92ZXJ0ZXhGb3JtYXQsaT1uZXcgd2UsbixzO2lmKGUucG9zaXRpb24pe2lmKHM9bmV3IEZsb2F0NjRBcnJheSg0KjMpLHNbMF09QWcueCxzWzFdPUFnLnksc1syXT0wLHNbM109aGcueCxzWzRdPUFnLnksc1s1XT0wLHNbNl09aGcueCxzWzddPWhnLnksc1s4XT0wLHNbOV09QWcueCxzWzEwXT1oZy55LHNbMTFdPTAsaS5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnN9KSxlLm5vcm1hbCl7bGV0IG89bmV3IEZsb2F0MzJBcnJheSgxMik7b1swXT0wLG9bMV09MCxvWzJdPTEsb1szXT0wLG9bNF09MCxvWzVdPTEsb1s2XT0wLG9bN109MCxvWzhdPTEsb1s5XT0wLG9bMTBdPTAsb1sxMV09MSxpLm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6b30pfWlmKGUuc3Qpe2xldCBvPW5ldyBGbG9hdDMyQXJyYXkoOCk7b1swXT0wLG9bMV09MCxvWzJdPTEsb1szXT0wLG9bNF09MSxvWzVdPTEsb1s2XT0wLG9bN109MSxpLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpvfSl9aWYoZS50YW5nZW50KXtsZXQgbz1uZXcgRmxvYXQzMkFycmF5KDEyKTtvWzBdPTEsb1sxXT0wLG9bMl09MCxvWzNdPTEsb1s0XT0wLG9bNV09MCxvWzZdPTEsb1s3XT0wLG9bOF09MCxvWzldPTEsb1sxMF09MCxvWzExXT0wLGkudGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6b30pfWlmKGUuYml0YW5nZW50KXtsZXQgbz1uZXcgRmxvYXQzMkFycmF5KDEyKTtvWzBdPTAsb1sxXT0xLG9bMl09MCxvWzNdPTAsb1s0XT0xLG9bNV09MCxvWzZdPTAsb1s3XT0xLG9bOF09MCxvWzldPTAsb1sxMF09MSxvWzExXT0wLGkuYml0YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpvfSl9bj1uZXcgVWludDE2QXJyYXkoMiozKSxuWzBdPTAsblsxXT0xLG5bMl09MixuWzNdPTAsbls0XT0yLG5bNV09M31yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmksaW5kaWNlczpuLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBOdChsLlpFUk8sTWF0aC5zcXJ0KDIpKX0pfTtCVj1RZn0pO3ZhciBXVj17fTtIZShXVix7ZGVmYXVsdDooKT0+Y210fSk7ZnVuY3Rpb24gaG10KHQsZSl7cmV0dXJuIG0oZSkmJih0PUJWLnVucGFjayh0LGUpKSxCVi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgY210LERWPU8oKCk9PnttdCgpO1k1KCk7Y210PWhtdH0pO2Z1bmN0aW9uIGtmKCl7dGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUGxhbmVPdXRsaW5lR2VvbWV0cnkifXZhciBKYyxjZyxNVixTNT1PKCgpPT57X2koKTtIdCgpO2FlKCk7b2koKTttdCgpO3lpKCk7amkoKTtFbigpO1hpKCk7a2YucGFja2VkTGVuZ3RoPTA7a2YucGFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBwLmRlZmluZWQoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxlfTtrZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxtKGkpP2k6bmV3IGtmfTtKYz1uZXcgbCgtLjUsLS41LDApLGNnPW5ldyBsKC41LC41LDApO2tmLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKCl7bGV0IHQ9bmV3IHdlLGU9bmV3IFVpbnQxNkFycmF5KDQqMiksaT1uZXcgRmxvYXQ2NEFycmF5KDQqMyk7cmV0dXJuIGlbMF09SmMueCxpWzFdPUpjLnksaVsyXT1KYy56LGlbM109Y2cueCxpWzRdPUpjLnksaVs1XT1KYy56LGlbNl09Y2cueCxpWzddPWNnLnksaVs4XT1KYy56LGlbOV09SmMueCxpWzEwXT1jZy55LGlbMTFdPUpjLnosdC5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOml9KSxlWzBdPTAsZVsxXT0xLGVbMl09MSxlWzNdPTIsZVs0XT0yLGVbNV09MyxlWzZdPTMsZVs3XT0wLG5ldyBzZSh7YXR0cmlidXRlczp0LGluZGljZXM6ZSxwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOm5ldyBOdChsLlpFUk8sTWF0aC5zcXJ0KDIpKX0pfTtNVj1rZn0pO3ZhciBVVj17fTtIZShVVix7ZGVmYXVsdDooKT0+ZG10fSk7ZnVuY3Rpb24gbG10KHQsZSl7cmV0dXJuIG0oZSkmJih0PU1WLnVucGFjayh0LGUpKSxNVi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgZG10LFFWPU8oKCk9PnttdCgpO1M1KCk7ZG10PWxtdH0pO2Z1bmN0aW9uIEFzKHQsZSl7dGhpcy5wb3NpdGlvbj10LG0odGhpcy5wb3NpdGlvbil8fCh0aGlzLnBvc2l0aW9uPW5ldyBudCksdGhpcy50YW5nZW50UGxhbmU9ZSxtKHRoaXMudGFuZ2VudFBsYW5lKXx8KHRoaXMudGFuZ2VudFBsYW5lPUFzLk5PUlRIX1BPTEVfVEFOR0VOVF9QTEFORSl9dmFyIExmLG1tdCxmbXQsRW10LF9tdCxicixPNT1PKCgpPT57WGUoKTtIdCgpO3JpKCk7YWUoKTttdCgpO1ZlKCk7WG0oKTtNbCgpO19lKCk7T0koKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBcy5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFuZ2VudFBsYW5lLmVsbGlwc29pZH19LHg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uLnh9fSx5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbi55fX0sY29uZm9ybWFsTGF0aXR1ZGU6e2dldDpmdW5jdGlvbigpe2xldCB0PW50Lm1hZ25pdHVkZSh0aGlzLnBvc2l0aW9uKSxlPTIqdGhpcy5lbGxpcHNvaWQubWF4aW11bVJhZGl1cztyZXR1cm4gdGhpcy50YW5nZW50UGxhbmUucGxhbmUubm9ybWFsLnoqKEwuUElfT1ZFUl9UV08tMipNYXRoLmF0YW4yKHQsZSkpfX0sbG9uZ2l0dWRlOntnZXQ6ZnVuY3Rpb24oKXtsZXQgdD1MLlBJX09WRVJfVFdPK01hdGguYXRhbjIodGhpcy55LHRoaXMueCk7cmV0dXJuIHQ+TWF0aC5QSSYmKHQtPUwuVFdPX1BJKSx0fX19KTtMZj1uZXcgdXQsbW10PW5ldyBsO0FzLnByb3RvdHlwZS5nZXRMYXRpdHVkZT1mdW5jdGlvbih0KXttKHQpfHwodD1vdC5XR1M4NCksTGYubGF0aXR1ZGU9dGhpcy5jb25mb3JtYWxMYXRpdHVkZSxMZi5sb25naXR1ZGU9dGhpcy5sb25naXR1ZGUsTGYuaGVpZ2h0PTA7bGV0IGU9dGhpcy5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTGYsbW10KTtyZXR1cm4gdC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLExmKSxMZi5sYXRpdHVkZX07Zm10PW5ldyBXbCxFbXQ9bmV3IGwsX210PW5ldyBsO0FzLmZyb21DYXJ0ZXNpYW49ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbiIsdCk7bGV0IGk9TC5zaWduTm90WmVybyh0LnopLG49QXMuTk9SVEhfUE9MRV9UQU5HRU5UX1BMQU5FLHM9QXMuU09VVEhfUE9MRTtpPDAmJihuPUFzLlNPVVRIX1BPTEVfVEFOR0VOVF9QTEFORSxzPUFzLk5PUlRIX1BPTEUpO2xldCBvPWZtdDtvLm9yaWdpbj1uLmVsbGlwc29pZC5zY2FsZVRvR2VvY2VudHJpY1N1cmZhY2UodCxvLm9yaWdpbiksby5kaXJlY3Rpb249bC5zdWJ0cmFjdChvLm9yaWdpbixzLEVtdCksbC5ub3JtYWxpemUoby5kaXJlY3Rpb24sby5kaXJlY3Rpb24pO2xldCByPW5vLnJheVBsYW5lKG8sbi5wbGFuZSxfbXQpLGE9bC5zdWJ0cmFjdChyLHMsciksaD1sLmRvdChuLnhBeGlzLGEpLEE9aSpsLmRvdChuLnlBeGlzLGEpO3JldHVybiBtKGUpPyhlLnBvc2l0aW9uPW5ldyBudChoLEEpLGUudGFuZ2VudFBsYW5lPW4sZSk6bmV3IEFzKG5ldyBudChoLEEpLG4pfTtBcy5mcm9tQ2FydGVzaWFuQXJyYXk9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbnMiLHQpO2xldCBpPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9aTplPW5ldyBBcnJheShpKTtmb3IobGV0IG49MDtuPGk7bisrKWVbbl09QXMuZnJvbUNhcnRlc2lhbih0W25dLGVbbl0pO3JldHVybiBlfTtBcy5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUucG9zaXRpb249dC5wb3NpdGlvbixlLnRhbmdlbnRQbGFuZT10LnRhbmdlbnRQbGFuZSxlKTpuZXcgQXModC5wb3NpdGlvbix0LnRhbmdlbnRQbGFuZSl9O0FzLkhBTEZfVU5JVF9TUEhFUkU9T2JqZWN0LmZyZWV6ZShuZXcgb3QoLjUsLjUsLjUpKTtBcy5OT1JUSF9QT0xFPU9iamVjdC5mcmVlemUobmV3IGwoMCwwLC41KSk7QXMuU09VVEhfUE9MRT1PYmplY3QuZnJlZXplKG5ldyBsKDAsMCwtLjUpKTtBcy5OT1JUSF9QT0xFX1RBTkdFTlRfUExBTkU9T2JqZWN0LmZyZWV6ZShuZXcgb28oQXMuTk9SVEhfUE9MRSxBcy5IQUxGX1VOSVRfU1BIRVJFKSk7QXMuU09VVEhfUE9MRV9UQU5HRU5UX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IG9vKEFzLlNPVVRIX1BPTEUsQXMuSEFMRl9VTklUX1NQSEVSRSkpO2JyPUFzfSk7ZnVuY3Rpb24gWm10KHQsZSxpLG4pe2xldCBvPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModCxSbXQpLmhlaWdodCxyPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZSxWNSk7ci5oZWlnaHQ9byxuLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHIsZSk7bGV0IGE9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhpLFY1KTthLmhlaWdodD1vLTEwMCxuLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGEsaSl9ZnVuY3Rpb24ga1YodCl7bGV0IGU9dC52ZXJ0ZXhGb3JtYXQsaT10Lmdlb21ldHJ5LG49dC5zaGFkb3dWb2x1bWUscz1pLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLG89bShpLmF0dHJpYnV0ZXMuc3QpP2kuYXR0cmlidXRlcy5zdC52YWx1ZXM6dm9pZCAwLHI9cy5sZW5ndGgsYT10LndhbGwsaD10LnRvcHx8YSxBPXQuYm90dG9tfHxhO2lmKGUuc3R8fGUubm9ybWFsfHxlLnRhbmdlbnR8fGUuYml0YW5nZW50fHxuKXtsZXQgZD10LmJvdW5kaW5nUmVjdGFuZ2xlLGY9dC5yb3RhdGlvbkF4aXMsRT10LnByb2plY3RUbzJkLF89dC5lbGxpcHNvaWQsUj10LnN0Um90YXRpb24sST10LnBlclBvc2l0aW9uSGVpZ2h0LEM9Tm10O0MueD1kLngsQy55PWQueTtsZXQgTj1lLnN0P25ldyBGbG9hdDMyQXJyYXkoMiooci8zKSk6dm9pZCAwLFQ7ZS5ub3JtYWwmJihJJiZoJiYhYT9UPWkuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzOlQ9bmV3IEZsb2F0MzJBcnJheShyKSk7bGV0IEY9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocik6dm9pZCAwLGI9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShyKTp2b2lkIDAsRz1uP25ldyBGbG9hdDMyQXJyYXkocik6dm9pZCAwLE09MCxRPTAsVT1wbXQsaz11bXQseT1DbXQsYz0hMCxnPVltdCxWPVNtdDtpZihSIT09MCl7bGV0IHg9QWUuZnJvbUF4aXNBbmdsZShmLFIsQjUpO2c9bHQuZnJvbVF1YXRlcm5pb24oeCxnKSx4PUFlLmZyb21BeGlzQW5nbGUoZiwtUixCNSksVj1sdC5mcm9tUXVhdGVybmlvbih4LFYpfWVsc2UgZz1sdC5jbG9uZShsdC5JREVOVElUWSxnKSxWPWx0LmNsb25lKGx0LklERU5USVRZLFYpO2xldCBEPTAsdz0wO2gmJkEmJihEPXIvMix3PXIvMyxyLz0yKTtmb3IobGV0IHg9MDt4PHI7eCs9Myl7bGV0IEg9bC5mcm9tQXJyYXkocyx4LEZtdCk7aWYoZS5zdCYmIW0obykpe2xldCBqPWx0Lm11bHRpcGx5QnlWZWN0b3IoZyxILEltdCk7aj1fLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoaixqKTtsZXQgWD1FKFtqXSxibXQpWzBdO250LnN1YnRyYWN0KFgsQyxYKTtsZXQgdHQ9TC5jbGFtcChYLngvZC53aWR0aCwwLDEpLEI9TC5jbGFtcChYLnkvZC5oZWlnaHQsMCwxKTtBJiYoTltNK3ddPXR0LE5bTSsxK3ddPUIpLGgmJihOW01dPXR0LE5bTSsxXT1CKSxNKz0yfWlmKGUubm9ybWFsfHxlLnRhbmdlbnR8fGUuYml0YW5nZW50fHxuKXtsZXQgaj1RKzEsWD1RKzI7aWYoYSl7aWYoeCszPHIpe2xldCB0dD1sLmZyb21BcnJheShzLHgrMyxnbXQpO2lmKGMpe2xldCBCPWwuZnJvbUFycmF5KHMseCtyLFRtdCk7SSYmWm10KEgsdHQsQixfKSxsLnN1YnRyYWN0KHR0LEgsdHQpLGwuc3VidHJhY3QoQixILEIpLFU9bC5ub3JtYWxpemUobC5jcm9zcyhCLHR0LFUpLFUpLGM9ITF9bC5lcXVhbHNFcHNpbG9uKHR0LEgsTC5FUFNJTE9OMTApJiYoYz0hMCl9KGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYoeT1fLmdlb2RldGljU3VyZmFjZU5vcm1hbChILHkpLGUudGFuZ2VudCYmKGs9bC5ub3JtYWxpemUobC5jcm9zcyh5LFUsayksaykpKX1lbHNlIFU9Xy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoSCxVKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihJJiYobGc9bC5mcm9tQXJyYXkoVCxRLGxnKSxCQT1sLmNyb3NzKGwuVU5JVF9aLGxnLEJBKSxCQT1sLm5vcm1hbGl6ZShsdC5tdWx0aXBseUJ5VmVjdG9yKFYsQkEsQkEpLEJBKSxlLmJpdGFuZ2VudCYmKHlmPWwubm9ybWFsaXplKGwuY3Jvc3MobGcsQkEseWYpLHlmKSkpLGs9bC5jcm9zcyhsLlVOSVRfWixVLGspLGs9bC5ub3JtYWxpemUobHQubXVsdGlwbHlCeVZlY3RvcihWLGssayksayksZS5iaXRhbmdlbnQmJih5PWwubm9ybWFsaXplKGwuY3Jvc3MoVSxrLHkpLHkpKSk7ZS5ub3JtYWwmJih0LndhbGw/KFRbUStEXT1VLngsVFtqK0RdPVUueSxUW1grRF09VS56KTpBJiYoVFtRK0RdPS1VLngsVFtqK0RdPS1VLnksVFtYK0RdPS1VLnopLChoJiYhSXx8YSkmJihUW1FdPVUueCxUW2pdPVUueSxUW1hdPVUueikpLG4mJihhJiYoVT1fLmdlb2RldGljU3VyZmFjZU5vcm1hbChILFUpKSxHW1ErRF09LVUueCxHW2orRF09LVUueSxHW1grRF09LVUueiksZS50YW5nZW50JiYodC53YWxsPyhGW1ErRF09ay54LEZbaitEXT1rLnksRltYK0RdPWsueik6QSYmKEZbUStEXT0tay54LEZbaitEXT0tay55LEZbWCtEXT0tay56KSxoJiYoST8oRltRXT1CQS54LEZbal09QkEueSxGW1hdPUJBLnopOihGW1FdPWsueCxGW2pdPWsueSxGW1hdPWsueikpKSxlLmJpdGFuZ2VudCYmKEEmJihiW1ErRF09eS54LGJbaitEXT15LnksYltYK0RdPXkueiksaCYmKEk/KGJbUV09eWYueCxiW2pdPXlmLnksYltYXT15Zi56KTooYltRXT15LngsYltqXT15LnksYltYXT15LnopKSksUSs9M319ZS5zdCYmIW0obykmJihpLmF0dHJpYnV0ZXMuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOk59KSksZS5ub3JtYWwmJihpLmF0dHJpYnV0ZXMubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpUfSkpLGUudGFuZ2VudCYmKGkuYXR0cmlidXRlcy50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpGfSkpLGUuYml0YW5nZW50JiYoaS5hdHRyaWJ1dGVzLmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Yn0pKSxuJiYoaS5hdHRyaWJ1dGVzLmV4dHJ1ZGVEaXJlY3Rpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkd9KSl9aWYodC5leHRydWRlJiZtKHQub2Zmc2V0QXR0cmlidXRlKSl7bGV0IGQ9cy5sZW5ndGgvMyxmPW5ldyBVaW50OEFycmF5KGQpO2lmKHQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKWgmJkF8fGE/Zj1mLmZpbGwoMSwwLGQvMik6aCYmKGY9Zi5maWxsKDEpKTtlbHNle2xldCBFPXQub2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjE7Zj1mLmZpbGwoRSl9aS5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmZ9KX1yZXR1cm4gaX1mdW5jdGlvbiBPbXQodCxlLGksbixzLG8scixhLGgsQSl7bGV0IGQ9e3dhbGxzOltdfSxmO2lmKHJ8fGEpe2xldCBUPWlpLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucyh0LGUsaSxuLG8saCxBKSxGPVQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsYj1ULmluZGljZXMsRyxNO2lmKHImJmEpe2xldCBRPUYuY29uY2F0KEYpO0c9US5sZW5ndGgvMyxNPXRlLmNyZWF0ZVR5cGVkQXJyYXkoRyxiLmxlbmd0aCoyKSxNLnNldChiKTtsZXQgVT1iLmxlbmd0aCxrPUcvMjtmb3IoZj0wO2Y8VTtmKz0zKXtsZXQgeT1NW2ZdK2ssYz1NW2YrMV0rayxnPU1bZisyXStrO01bZitVXT1nLE1bZisxK1VdPWMsTVtmKzIrVV09eX1pZihULmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPVEsbyYmaC5ub3JtYWwpe2xldCB5PVQuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzO1QuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzPW5ldyBGbG9hdDMyQXJyYXkoUS5sZW5ndGgpLFQuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzLnNldCh5KX1pZihoLnN0JiZtKGkpKXtsZXQgeT1ULmF0dHJpYnV0ZXMuc3QudmFsdWVzO1QuYXR0cmlidXRlcy5zdC52YWx1ZXM9bmV3IEZsb2F0MzJBcnJheShHKjIpLFQuYXR0cmlidXRlcy5zdC52YWx1ZXM9eS5jb25jYXQoeSl9VC5pbmRpY2VzPU19ZWxzZSBpZihhKXtmb3IoRz1GLmxlbmd0aC8zLE09dGUuY3JlYXRlVHlwZWRBcnJheShHLGIubGVuZ3RoKSxmPTA7ZjxiLmxlbmd0aDtmKz0zKU1bZl09YltmKzJdLE1bZisxXT1iW2YrMV0sTVtmKzJdPWJbZl07VC5pbmRpY2VzPU19ZC50b3BBbmRCb3R0b209bmV3IExuKHtnZW9tZXRyeTpUfSl9bGV0IEU9cy5vdXRlclJpbmcsXz1vby5mcm9tUG9pbnRzKEUsdCksUj1fLnByb2plY3RQb2ludHNPbnRvUGxhbmUoRSxXNSksST11aS5jb21wdXRlV2luZGluZ09yZGVyMkQoUik7ST09PU1zLkNMT0NLV0lTRSYmKEU9RS5zbGljZSgpLnJldmVyc2UoKSk7bGV0IEM9aWkuY29tcHV0ZVdhbGxHZW9tZXRyeShFLGksdCxuLG8sQSk7ZC53YWxscy5wdXNoKG5ldyBMbih7Z2VvbWV0cnk6Q30pKTtsZXQgTj1zLmhvbGVzO2ZvcihmPTA7ZjxOLmxlbmd0aDtmKyspe2xldCBUPU5bZl07Uj1fLnByb2plY3RQb2ludHNPbnRvUGxhbmUoVCxXNSksST11aS5jb21wdXRlV2luZGluZ09yZGVyMkQoUiksST09PU1zLkNPVU5URVJfQ0xPQ0tXSVNFJiYoVD1ULnNsaWNlKCkucmV2ZXJzZSgpKSxDPWlpLmNvbXB1dGVXYWxsR2VvbWV0cnkoVCxpLHQsbixvLEEpLGQud2FsbHMucHVzaChuZXcgTG4oe2dlb21ldHJ5OkN9KSl9cmV0dXJuIGR9ZnVuY3Rpb24gZWEodCl7aWYocC50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsdC5wb2x5Z29uSGllcmFyY2h5KSxtKHQucGVyUG9zaXRpb25IZWlnaHQpJiZ0LnBlclBvc2l0aW9uSGVpZ2h0JiZtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgWSgiQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMucGVyUG9zaXRpb25IZWlnaHQgYW5kIG9wdGlvbnMuaGVpZ2h0Iik7aWYobSh0LmFyY1R5cGUpJiZ0LmFyY1R5cGUhPT10aS5HRU9ERVNJQyYmdC5hcmNUeXBlIT09dGkuUkhVTUIpdGhyb3cgbmV3IFkoIkludmFsaWQgYXJjVHlwZS4gVmFsaWQgb3B0aW9ucyBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksaT1aKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpLG49Wih0LmVsbGlwc29pZCxvdC5XR1M4NCkscz1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLG89Wih0LnN0Um90YXRpb24sMCkscj10LnRleHR1cmVDb29yZGluYXRlcyxhPVoodC5wZXJQb3NpdGlvbkhlaWdodCwhMSksaD1hJiZtKHQuZXh0cnVkZWRIZWlnaHQpLEE9Wih0LmhlaWdodCwwKSxkPVoodC5leHRydWRlZEhlaWdodCxBKTtpZighaCl7bGV0IGY9TWF0aC5tYXgoQSxkKTtkPU1hdGgubWluKEEsZCksQT1mfXRoaXMuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShpKSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUobiksdGhpcy5fZ3JhbnVsYXJpdHk9cyx0aGlzLl9zdFJvdGF0aW9uPW8sdGhpcy5faGVpZ2h0PUEsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9ZCx0aGlzLl9jbG9zZVRvcD1aKHQuY2xvc2VUb3AsITApLHRoaXMuX2Nsb3NlQm90dG9tPVoodC5jbG9zZUJvdHRvbSwhMCksdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3BlclBvc2l0aW9uSGVpZ2h0PWEsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPWgsdGhpcy5fc2hhZG93Vm9sdW1lPVoodC5zaGFkb3dWb2x1bWUsITEpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBvbHlnb25HZW9tZXRyeSIsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX2FyY1R5cGU9Wih0LmFyY1R5cGUsdGkuR0VPREVTSUMpLHRoaXMuX3JlY3RhbmdsZT12b2lkIDAsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz12b2lkIDAsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVzPXIsdGhpcy5wYWNrZWRMZW5ndGg9aWkuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChlLGwpK290LnBhY2tlZExlbmd0aCtPdC5wYWNrZWRMZW5ndGgrKHI/aWkuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChyLG50KToxKSsxMn1mdW5jdGlvbiBENSh0LGUsaSxuLHMsbyl7bGV0IHI9dC5sb25naXR1ZGUsYT1yPj0wP3I6citMLlRXT19QSTtzLndlc3RPdmVySWRsPU1hdGgubWluKHMud2VzdE92ZXJJZGwsYSkscy5lYXN0T3ZlcklkbD1NYXRoLm1heChzLmVhc3RPdmVySWRsLGEpLG8ud2VzdD1NYXRoLm1pbihvLndlc3Qsciksby5lYXN0PU1hdGgubWF4KG8uZWFzdCxyKTtsZXQgaD10LmdldExhdGl0dWRlKGkpLEE9aDtpZihvLnNvdXRoPU1hdGgubWluKG8uc291dGgsaCksby5ub3J0aD1NYXRoLm1heChvLm5vcnRoLGgpLG4hPT10aS5SSFVNQil7bGV0IEU9bnQuc3VidHJhY3QoZS5wb3NpdGlvbix0LnBvc2l0aW9uLFdtdCksXz1udC5kb3QoZS5wb3NpdGlvbixFKS9udC5kb3QoRSxFKTtpZihfPjAmJl88MSl7bGV0IFI9bnQuYWRkKGUucG9zaXRpb24sbnQubXVsdGlwbHlCeVNjYWxhcihFLC1fLEUpLERtdCksST1ici5jbG9uZShlLE1tdCk7SS5wb3NpdGlvbj1SO2xldCBDPUkuZ2V0TGF0aXR1ZGUoaSk7by5zb3V0aD1NYXRoLm1pbihvLnNvdXRoLEMpLG8ubm9ydGg9TWF0aC5tYXgoby5ub3J0aCxDKSxNYXRoLmFicyhoKT5NYXRoLmFicyhDKSYmKEE9Qyl9fWxldCBkPWUueCp0LnktdC54KmUueSxmPU1hdGguc2lnbihkKTtmIT09MCYmKGYqPW50LmFuZ2xlQmV0d2VlbihlLnBvc2l0aW9uLHQucG9zaXRpb24pKSxBPj0wJiYocy5ub3J0aEFuZ2xlKz1mKSxBPD0wJiYocy5zb3V0aEFuZ2xlKz1mKX1mdW5jdGlvbiBrbXQodCxlLGkpe3JldHVybiB0LmhlaWdodD49TC5QSXx8dC53aWR0aD49TC5QST9ici5mcm9tQ2FydGVzaWFuKGVbMF0sUW10KS50YW5nZW50UGxhbmU6b28uZnJvbVBvaW50cyhlLGkpfWZ1bmN0aW9uIExtdCh0LGUsaSl7cmV0dXJuKG4scyk9PntpZih0LmhlaWdodD49TC5QSXx8dC53aWR0aD49TC5QSSl7aWYodC5zb3V0aDwwJiZ0Lm5vcnRoPjApe20ocyl8fChzPVtdKTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoOysrcil7bGV0IGE9aS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhuW3JdLFU1KTtzW3JdPW5ldyBudChhLmxvbmdpdHVkZS9MLlBJLGEubGF0aXR1ZGUvTC5QSV9PVkVSX1RXTyl9cmV0dXJuIHMubGVuZ3RoPW4ubGVuZ3RoLHN9cmV0dXJuIGJyLmZyb21DYXJ0ZXNpYW5BcnJheShuLHMpfXJldHVybiBvby5mcm9tUG9pbnRzKGUsaSkucHJvamVjdFBvaW50c09udG9QbGFuZShuLHMpfX1mdW5jdGlvbiB5bXQodCxlLGkpe2lmKHQuaGVpZ2h0Pj1MLlBJfHx0LndpZHRoPj1MLlBJKXJldHVybihzLG8pPT57aWYodC5zb3V0aDwwJiZ0Lm5vcnRoPjApe2xldCByPWkuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocyxVNSk7cmV0dXJuIG0obyl8fChvPW5ldyBudCksby54PXIubG9uZ2l0dWRlL0wuUEksby55PXIubGF0aXR1ZGUvTC5QSV9PVkVSX1RXTyxvfXJldHVybiBici5mcm9tQ2FydGVzaWFuKHMsbyl9O2xldCBuPW9vLmZyb21Qb2ludHMoZSxpKTtyZXR1cm4ocyxvKT0+bi5wcm9qZWN0UG9pbnRzT250b1BsYW5lKHMsbyl9ZnVuY3Rpb24gd210KHQsZSxpLG4pe3JldHVybihzLG8pPT4hbiYmKHQuaGVpZ2h0Pj1MLlBJX09WRVJfVFdPfHx0LndpZHRoPj0yKkwuUElfT1ZFUl9USFJFRSk/aWkuc3BsaXRQb2x5Z29uc09uRXF1YXRvcihzLGUsaSxvKTpzfWZ1bmN0aW9uIHhtdCh0LGUsaSxuKXtpZihlLmhlaWdodD49TC5QSXx8ZS53aWR0aD49TC5QSSlyZXR1cm4gbWkuZnJvbVJlY3RhbmdsZShlLHZvaWQgMCxHNSk7bGV0IHM9dCxvPW9vLmZyb21Qb2ludHMocyxpKTtyZXR1cm4gaWkuY29tcHV0ZUJvdW5kaW5nUmVjdGFuZ2xlKG8ucGxhbmUubm9ybWFsLG8ucHJvamVjdFBvaW50T250b1BsYW5lLmJpbmQobykscyxuLEc1KX1mdW5jdGlvbiBQbXQodCl7bGV0IGU9LXQuX3N0Um90YXRpb247aWYoZT09PTApcmV0dXJuWzAsMCwwLDEsMSwwXTtsZXQgaT10Ll9lbGxpcHNvaWQsbj10Ll9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9ucyxzPXQucmVjdGFuZ2xlO3JldHVybiBzZS5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyhuLGUsaSxzKX12YXIgUm10LFY1LEc1LEltdCxwbXQsdW10LENtdCxnbXQsVG10LGxnLEJBLHlmLE5tdCxibXQsRm10LEI1LFltdCxTbXQsVzUsVm10LEdtdCxCbXQsV210LERtdCxNbXQsTTUsVW10LHRhLFFtdCxVNSxMVixRNT1PKCgpPT57QmwoKTtFcigpO19pKCk7WGUoKTtIdCgpO3JpKCk7YWUoKTtvaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7WG0oKTt5aSgpO2ppKCk7dUEoKTtnbygpO2dBKCk7RGkoKTtfZSgpO2RuKCk7RVIoKTtQYSgpOyRzKCk7cG4oKTtPNSgpO0xzKCk7ZmMoKTtSbXQ9bmV3IHV0LFY1PW5ldyB1dDtHNT1uZXcgbWksSW10PW5ldyBsLHBtdD1uZXcgbCx1bXQ9bmV3IGwsQ210PW5ldyBsLGdtdD1uZXcgbCxUbXQ9bmV3IGwsbGc9bmV3IGwsQkE9bmV3IGwseWY9bmV3IGwsTm10PW5ldyBudCxibXQ9bmV3IG50LEZtdD1uZXcgbCxCNT1uZXcgQWUsWW10PW5ldyBsdCxTbXQ9bmV3IGx0O1c1PVtdO2VhLmZyb21Qb3NpdGlvbnM9ZnVuY3Rpb24odCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLHQucG9zaXRpb25zKTtsZXQgZT17cG9seWdvbkhpZXJhcmNoeTp7cG9zaXRpb25zOnQucG9zaXRpb25zfSxoZWlnaHQ6dC5oZWlnaHQsZXh0cnVkZWRIZWlnaHQ6dC5leHRydWRlZEhlaWdodCx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXQsc3RSb3RhdGlvbjp0LnN0Um90YXRpb24sZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHkscGVyUG9zaXRpb25IZWlnaHQ6dC5wZXJQb3NpdGlvbkhlaWdodCxjbG9zZVRvcDp0LmNsb3NlVG9wLGNsb3NlQm90dG9tOnQuY2xvc2VCb3R0b20sb2Zmc2V0QXR0cmlidXRlOnQub2Zmc2V0QXR0cmlidXRlLGFyY1R5cGU6dC5hcmNUeXBlLHRleHR1cmVDb29yZGluYXRlczp0LnRleHR1cmVDb29yZGluYXRlc307cmV0dXJuIG5ldyBlYShlKX07ZWEucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGk9aWkucGFja1BvbHlnb25IaWVyYXJjaHkodC5fcG9seWdvbkhpZXJhcmNoeSxlLGksbCksb3QucGFjayh0Ll9lbGxpcHNvaWQsZSxpKSxpKz1vdC5wYWNrZWRMZW5ndGgsT3QucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxpKSxpKz1PdC5wYWNrZWRMZW5ndGgsZVtpKytdPXQuX2hlaWdodCxlW2krK109dC5fZXh0cnVkZWRIZWlnaHQsZVtpKytdPXQuX2dyYW51bGFyaXR5LGVbaSsrXT10Ll9zdFJvdGF0aW9uLGVbaSsrXT10Ll9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU/MTowLGVbaSsrXT10Ll9wZXJQb3NpdGlvbkhlaWdodD8xOjAsZVtpKytdPXQuX2Nsb3NlVG9wPzE6MCxlW2krK109dC5fY2xvc2VCb3R0b20/MTowLGVbaSsrXT10Ll9zaGFkb3dWb2x1bWU/MTowLGVbaSsrXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZVtpKytdPXQuX2FyY1R5cGUsbSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMpP2k9aWkucGFja1BvbHlnb25IaWVyYXJjaHkodC5fdGV4dHVyZUNvb3JkaW5hdGVzLGUsaSxudCk6ZVtpKytdPS0xLGVbaSsrXT10LnBhY2tlZExlbmd0aCxlfTtWbXQ9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLEdtdD1uZXcgT3QsQm10PXtwb2x5Z29uSGllcmFyY2h5Ont9fTtlYS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPWlpLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLGwpO2U9bi5zdGFydGluZ0luZGV4LGRlbGV0ZSBuLnN0YXJ0aW5nSW5kZXg7bGV0IHM9b3QudW5wYWNrKHQsZSxWbXQpO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgbz1PdC51bnBhY2sodCxlLEdtdCk7ZSs9T3QucGFja2VkTGVuZ3RoO2xldCByPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXT09PTEsZj10W2UrK109PT0xLEU9dFtlKytdPT09MSxfPXRbZSsrXT09PTEsUj10W2UrK109PT0xLEk9dFtlKytdLEM9dFtlKytdLE49dFtlXT09PS0xP3ZvaWQgMDppaS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxudCk7bShOKT8oZT1OLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIE4uc3RhcnRpbmdJbmRleCk6ZSsrO2xldCBUPXRbZSsrXTtyZXR1cm4gbShpKXx8KGk9bmV3IGVhKEJtdCkpLGkuX3BvbHlnb25IaWVyYXJjaHk9bixpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShvLGkuX3ZlcnRleEZvcm1hdCksaS5faGVpZ2h0PXIsaS5fZXh0cnVkZWRIZWlnaHQ9YSxpLl9ncmFudWxhcml0eT1oLGkuX3N0Um90YXRpb249QSxpLl9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU9ZCxpLl9wZXJQb3NpdGlvbkhlaWdodD1mLGkuX2Nsb3NlVG9wPUUsaS5fY2xvc2VCb3R0b209XyxpLl9zaGFkb3dWb2x1bWU9UixpLl9vZmZzZXRBdHRyaWJ1dGU9ST09PS0xP3ZvaWQgMDpJLGkuX2FyY1R5cGU9QyxpLl90ZXh0dXJlQ29vcmRpbmF0ZXM9TixpLnBhY2tlZExlbmd0aD1ULGl9O1dtdD1uZXcgbnQsRG10PW5ldyBudCxNbXQ9bmV3IGJyO001PW5ldyBicixVbXQ9bmV3IGJyLHRhPXtub3J0aEFuZ2xlOjAsc291dGhBbmdsZTowLHdlc3RPdmVySWRsOjAsZWFzdE92ZXJJZGw6MH07ZWEuY29tcHV0ZVJlY3RhbmdsZUZyb21Qb3NpdGlvbnM9ZnVuY3Rpb24odCxlLGksbil7aWYocC5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpLG0obil8fChuPW5ldyBYdCksdC5sZW5ndGg8MylyZXR1cm4gbjtuLndlc3Q9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG4uZWFzdD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksbi5zb3V0aD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbi5ub3J0aD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksdGEubm9ydGhBbmdsZT0wLHRhLnNvdXRoQW5nbGU9MCx0YS53ZXN0T3ZlcklkbD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksdGEuZWFzdE92ZXJJZGw9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2xldCBzPXQubGVuZ3RoLG89YnIuZnJvbUNhcnRlc2lhbih0WzBdLFVtdCk7Zm9yKGxldCByPTE7cjxzO3IrKyl7bGV0IGE9YnIuZnJvbUNhcnRlc2lhbih0W3JdLE01KTtENShhLG8sZSxpLHRhLG4pLG89YnIuY2xvbmUoYSxvKX1yZXR1cm4gRDUoYnIuZnJvbUNhcnRlc2lhbih0WzBdLE01KSxvLGUsaSx0YSxuKSxuLmVhc3Qtbi53ZXN0PnRhLmVhc3RPdmVySWRsLXRhLndlc3RPdmVySWRsJiYobi53ZXN0PXRhLndlc3RPdmVySWRsLG4uZWFzdD10YS5lYXN0T3ZlcklkbCxuLmVhc3Q+TC5QSSYmKG4uZWFzdD1uLmVhc3QtTC5UV09fUEkpLG4ud2VzdD5MLlBJJiYobi53ZXN0PW4ud2VzdC1MLlRXT19QSSkpLEwuZXF1YWxzRXBzaWxvbihNYXRoLmFicyh0YS5ub3J0aEFuZ2xlKSxMLlRXT19QSSxMLkVQU0lMT04xMCkmJihuLm5vcnRoPUwuUElfT1ZFUl9UV08sbi5lYXN0PUwuUEksbi53ZXN0PS1MLlBJKSxMLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnModGEuc291dGhBbmdsZSksTC5UV09fUEksTC5FUFNJTE9OMTApJiYobi5zb3V0aD0tTC5QSV9PVkVSX1RXTyxuLmVhc3Q9TC5QSSxuLndlc3Q9LUwuUEkpLG59O1FtdD1uZXcgYnI7VTU9bmV3IHV0O2VhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3ZlcnRleEZvcm1hdCxpPXQuX2VsbGlwc29pZCxuPXQuX2dyYW51bGFyaXR5LHM9dC5fc3RSb3RhdGlvbixvPXQuX3BvbHlnb25IaWVyYXJjaHkscj10Ll9wZXJQb3NpdGlvbkhlaWdodCxhPXQuX2Nsb3NlVG9wLGg9dC5fY2xvc2VCb3R0b20sQT10Ll9hcmNUeXBlLGQ9dC5fdGV4dHVyZUNvb3JkaW5hdGVzLGY9bShkKSxFPW8ucG9zaXRpb25zO2lmKEUubGVuZ3RoPDMpcmV0dXJuO2xldCBfPXQucmVjdGFuZ2xlLFI9aWkucG9seWdvbnNGcm9tSGllcmFyY2h5KG8sZixMbXQoXyxFLGkpLCFyLGksd210KF8saSxBLHIpKSxJPVIuaGllcmFyY2h5LEM9Ui5wb2x5Z29ucyxOPWZ1bmN0aW9uKEQpe3JldHVybiBEfSxUPWY/aWkucG9seWdvbnNGcm9tSGllcmFyY2h5KGQsITAsTiwhMSxpKS5wb2x5Z29uczp2b2lkIDA7aWYoSS5sZW5ndGg9PT0wKXJldHVybjtsZXQgRj1JWzBdLm91dGVyUmluZyxiPXhtdChGLF8saSxzKSxHPVtdLE09dC5faGVpZ2h0LFE9dC5fZXh0cnVkZWRIZWlnaHQsVT10Ll9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGV8fCFMLmVxdWFsc0Vwc2lsb24oTSxRLDAsTC5FUFNJTE9OMiksaz17cGVyUG9zaXRpb25IZWlnaHQ6cix2ZXJ0ZXhGb3JtYXQ6ZSxnZW9tZXRyeTp2b2lkIDAscm90YXRpb25BeGlzOmttdChfLEYsaSkucGxhbmUubm9ybWFsLHByb2plY3RUbzJkOnltdChfLEYsaSksYm91bmRpbmdSZWN0YW5nbGU6YixlbGxpcHNvaWQ6aSxzdFJvdGF0aW9uOnMsdGV4dHVyZUNvb3JkaW5hdGVzOnZvaWQgMCxib3R0b206ITEsdG9wOiEwLHdhbGw6ITEsZXh0cnVkZTohMSxhcmNUeXBlOkF9LHk7aWYoVSlmb3Ioay5leHRydWRlPSEwLGsudG9wPWEsay5ib3R0b209aCxrLnNoYWRvd1ZvbHVtZT10Ll9zaGFkb3dWb2x1bWUsay5vZmZzZXRBdHRyaWJ1dGU9dC5fb2Zmc2V0QXR0cmlidXRlLHk9MDt5PEMubGVuZ3RoO3krKyl7bGV0IEQ9T210KGksQ1t5XSxmP1RbeV06dm9pZCAwLG4sSVt5XSxyLGEsaCxlLEEpLHc7YSYmaD8odz1ELnRvcEFuZEJvdHRvbSxrLmdlb21ldHJ5PWlpLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKHcuZ2VvbWV0cnksTSxRLGkscikpOmE/KHc9RC50b3BBbmRCb3R0b20sdy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQody5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxNLGksIXIpLGsuZ2VvbWV0cnk9dy5nZW9tZXRyeSk6aCYmKHc9RC50b3BBbmRCb3R0b20sdy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQody5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxRLGksITApLGsuZ2VvbWV0cnk9dy5nZW9tZXRyeSksKGF8fGgpJiYoay53YWxsPSExLHcuZ2VvbWV0cnk9a1YoayksRy5wdXNoKHcpKTtsZXQgeD1ELndhbGxzO2sud2FsbD0hMDtmb3IobGV0IEg9MDtIPHgubGVuZ3RoO0grKyl7bGV0IGo9eFtIXTtrLmdlb21ldHJ5PWlpLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKGouZ2VvbWV0cnksTSxRLGksciksai5nZW9tZXRyeT1rVihrKSxHLnB1c2goail9fWVsc2UgZm9yKHk9MDt5PEMubGVuZ3RoO3krKyl7bGV0IEQ9bmV3IExuKHtnZW9tZXRyeTppaS5jcmVhdGVHZW9tZXRyeUZyb21Qb3NpdGlvbnMoaSxDW3ldLGY/VFt5XTp2b2lkIDAsbixyLGUsQSl9KTtpZihELmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChELmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLE0saSwhciksay5nZW9tZXRyeT1ELmdlb21ldHJ5LEQuZ2VvbWV0cnk9a1YoayksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1ELmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCx4PXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLEg9bmV3IFVpbnQ4QXJyYXkody8zKS5maWxsKHgpO0QuZ2VvbWV0cnkuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpIfSl9Ry5wdXNoKEQpfWxldCBjPXdpLmNvbWJpbmVJbnN0YW5jZXMoRylbMF07Yy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1uZXcgRmxvYXQ2NEFycmF5KGMuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpLGMuaW5kaWNlcz10ZS5jcmVhdGVUeXBlZEFycmF5KGMuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMsYy5pbmRpY2VzKTtsZXQgZz1jLmF0dHJpYnV0ZXMsVj1OdC5mcm9tVmVydGljZXMoZy5wb3NpdGlvbi52YWx1ZXMpO3JldHVybiBlLnBvc2l0aW9ufHxkZWxldGUgZy5wb3NpdGlvbixuZXcgc2Uoe2F0dHJpYnV0ZXM6ZyxpbmRpY2VzOmMuaW5kaWNlcyxwcmltaXRpdmVUeXBlOmMucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTpWLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07ZWEuY3JlYXRlU2hhZG93Vm9sdW1lPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10Ll9ncmFudWxhcml0eSxzPXQuX2VsbGlwc29pZCxvPWUobixzKSxyPWkobixzKTtyZXR1cm4gbmV3IGVhKHtwb2x5Z29uSGllcmFyY2h5OnQuX3BvbHlnb25IaWVyYXJjaHksZWxsaXBzb2lkOnMsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om4scGVyUG9zaXRpb25IZWlnaHQ6ITEsZXh0cnVkZWRIZWlnaHQ6byxoZWlnaHQ6cix2ZXJ0ZXhGb3JtYXQ6T3QuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITAsYXJjVHlwZTp0Ll9hcmNUeXBlfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGVhLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtpZighbSh0aGlzLl9yZWN0YW5nbGUpKXtsZXQgdD10aGlzLl9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9uczt0aGlzLl9yZWN0YW5nbGU9ZWEuY29tcHV0ZVJlY3RhbmdsZUZyb21Qb3NpdGlvbnModCx0aGlzLl9lbGxpcHNvaWQsdGhpcy5fYXJjVHlwZSl9cmV0dXJuIHRoaXMuX3JlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMpfHwodGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz1QbXQodGhpcykpLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHN9fX0pO0xWPWVhfSk7dmFyIHlWPXt9O0hlKHlWLHtkZWZhdWx0OigpPT5qbXR9KTtmdW5jdGlvbiBKbXQodCxlKXtyZXR1cm4gbShlKSYmKHQ9TFYudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLExWLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBqbXQsd1Y9TygoKT0+e210KCk7VmUoKTtRNSgpO2ptdD1KbXR9KTtmdW5jdGlvbiBIbXQodCxlLGksbixzKXtsZXQgcj1vby5mcm9tUG9pbnRzKGUsdCkucHJvamVjdFBvaW50c09udG9QbGFuZShlLGs1KTt1aS5jb21wdXRlV2luZGluZ09yZGVyMkQocik9PT1Ncy5DTE9DS1dJU0UmJihyLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpO2xldCBoLEEsZD1lLmxlbmd0aCxmPTA7aWYobilmb3IoaD1uZXcgRmxvYXQ2NEFycmF5KGQqMiozKSxBPTA7QTxkO0ErKyl7bGV0IFI9ZVtBXSxJPWVbKEErMSklZF07aFtmKytdPVIueCxoW2YrK109Ui55LGhbZisrXT1SLnosaFtmKytdPUkueCxoW2YrK109SS55LGhbZisrXT1JLnp9ZWxzZXtsZXQgUj0wO2lmKHM9PT10aS5HRU9ERVNJQylmb3IoQT0wO0E8ZDtBKyspUis9aWkuc3ViZGl2aWRlTGluZUNvdW50KGVbQV0sZVsoQSsxKSVkXSxpKTtlbHNlIGlmKHM9PT10aS5SSFVNQilmb3IoQT0wO0E8ZDtBKyspUis9aWkuc3ViZGl2aWRlUmh1bWJMaW5lQ291bnQodCxlW0FdLGVbKEErMSklZF0saSk7Zm9yKGg9bmV3IEZsb2F0NjRBcnJheShSKjMpLEE9MDtBPGQ7QSsrKXtsZXQgSTtzPT09dGkuR0VPREVTSUM/ST1paS5zdWJkaXZpZGVMaW5lKGVbQV0sZVsoQSsxKSVkXSxpLGRnKTpzPT09dGkuUkhVTUImJihJPWlpLnN1YmRpdmlkZVJodW1iTGluZSh0LGVbQV0sZVsoQSsxKSVkXSxpLGRnKSk7bGV0IEM9SS5sZW5ndGg7Zm9yKGxldCBOPTA7TjxDOysrTiloW2YrK109SVtOXX19ZD1oLmxlbmd0aC8zO2xldCBFPWQqMixfPXRlLmNyZWF0ZVR5cGVkQXJyYXkoZCxFKTtmb3IoZj0wLEE9MDtBPGQtMTtBKyspX1tmKytdPUEsX1tmKytdPUErMTtyZXR1cm4gX1tmKytdPWQtMSxfW2YrK109MCxuZXcgTG4oe2dlb21ldHJ5Om5ldyBzZSh7YXR0cmlidXRlczpuZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pfSksaW5kaWNlczpfLHByaW1pdGl2ZVR5cGU6bmUuTElORVN9KX0pfWZ1bmN0aW9uIHZtdCh0LGUsaSxuLHMpe2xldCByPW9vLmZyb21Qb2ludHMoZSx0KS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKGUsazUpO3VpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChyKT09PU1zLkNMT0NLV0lTRSYmKHIucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7bGV0IGgsQSxkPWUubGVuZ3RoLGY9bmV3IEFycmF5KGQpLEU9MDtpZihuKWZvcihoPW5ldyBGbG9hdDY0QXJyYXkoZCoyKjMqMiksQT0wO0E8ZDsrK0Epe2ZbQV09RS8zO2xldCBDPWVbQV0sTj1lWyhBKzEpJWRdO2hbRSsrXT1DLngsaFtFKytdPUMueSxoW0UrK109Qy56LGhbRSsrXT1OLngsaFtFKytdPU4ueSxoW0UrK109Ti56fWVsc2V7bGV0IEM9MDtpZihzPT09dGkuR0VPREVTSUMpZm9yKEE9MDtBPGQ7QSsrKUMrPWlpLnN1YmRpdmlkZUxpbmVDb3VudChlW0FdLGVbKEErMSklZF0saSk7ZWxzZSBpZihzPT09dGkuUkhVTUIpZm9yKEE9MDtBPGQ7QSsrKUMrPWlpLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KHQsZVtBXSxlWyhBKzEpJWRdLGkpO2ZvcihoPW5ldyBGbG9hdDY0QXJyYXkoQyozKjIpLEE9MDtBPGQ7KytBKXtmW0FdPUUvMztsZXQgTjtzPT09dGkuR0VPREVTSUM/Tj1paS5zdWJkaXZpZGVMaW5lKGVbQV0sZVsoQSsxKSVkXSxpLGRnKTpzPT09dGkuUkhVTUImJihOPWlpLnN1YmRpdmlkZVJodW1iTGluZSh0LGVbQV0sZVsoQSsxKSVkXSxpLGRnKSk7bGV0IFQ9Ti5sZW5ndGg7Zm9yKGxldCBGPTA7RjxUOysrRiloW0UrK109TltGXX19ZD1oLmxlbmd0aC8oMyoyKTtsZXQgXz1mLmxlbmd0aCxSPShkKjIrXykqMixJPXRlLmNyZWF0ZVR5cGVkQXJyYXkoZCtfLFIpO2ZvcihFPTAsQT0wO0E8ZDsrK0EpSVtFKytdPUEsSVtFKytdPShBKzEpJWQsSVtFKytdPUErZCxJW0UrK109KEErMSklZCtkO2ZvcihBPTA7QTxfO0ErKyl7bGV0IEM9ZltBXTtJW0UrK109QyxJW0UrK109QytkfXJldHVybiBuZXcgTG4oe2dlb21ldHJ5Om5ldyBzZSh7YXR0cmlidXRlczpuZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pfSksaW5kaWNlczpJLHByaW1pdGl2ZVR5cGU6bmUuTElORVN9KX0pfWZ1bmN0aW9uIFpkKHQpe2lmKHAudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkscC50eXBlT2Yub2JqZWN0KCJvcHRpb25zLnBvbHlnb25IaWVyYXJjaHkiLHQucG9seWdvbkhpZXJhcmNoeSksdC5wZXJQb3NpdGlvbkhlaWdodCYmbSh0LmhlaWdodCkpdGhyb3cgbmV3IFkoIkNhbm5vdCB1c2UgYm90aCBvcHRpb25zLnBlclBvc2l0aW9uSGVpZ2h0IGFuZCBvcHRpb25zLmhlaWdodCIpO2lmKG0odC5hcmNUeXBlKSYmdC5hcmNUeXBlIT09dGkuR0VPREVTSUMmJnQuYXJjVHlwZSE9PXRpLlJIVU1CKXRocm93IG5ldyBZKCJJbnZhbGlkIGFyY1R5cGUuIFZhbGlkIG9wdGlvbnMgYXJlIEFyY1R5cGUuR0VPREVTSUMgYW5kIEFyY1R5cGUuUkhVTUIuIik7bGV0IGU9dC5wb2x5Z29uSGllcmFyY2h5LGk9Wih0LmVsbGlwc29pZCxvdC5XR1M4NCksbj1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHM9Wih0LnBlclBvc2l0aW9uSGVpZ2h0LCExKSxvPXMmJm0odC5leHRydWRlZEhlaWdodCkscj1aKHQuYXJjVHlwZSx0aS5HRU9ERVNJQyksYT1aKHQuaGVpZ2h0LDApLGg9Wih0LmV4dHJ1ZGVkSGVpZ2h0LGEpO2lmKCFvKXtsZXQgQT1NYXRoLm1heChhLGgpO2g9TWF0aC5taW4oYSxoKSxhPUF9dGhpcy5fZWxsaXBzb2lkPW90LmNsb25lKGkpLHRoaXMuX2dyYW51bGFyaXR5PW4sdGhpcy5faGVpZ2h0PWEsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9aCx0aGlzLl9hcmNUeXBlPXIsdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3BlclBvc2l0aW9uSGVpZ2h0PXMsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPW8sdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBvbHlnb25PdXRsaW5lR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPWlpLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGgoZSxsKStvdC5wYWNrZWRMZW5ndGgrOH12YXIgazUsZGcsem10LEttdCx4VixMNT1PKCgpPT57QmwoKTtfaSgpO0h0KCk7YWUoKTtvaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7WG0oKTt5aSgpO2ppKCk7RW4oKTt1QSgpO2dvKCk7Z0EoKTtEaSgpO19lKCk7RVIoKTtQYSgpO1hpKCk7ZmMoKTtrNT1bXSxkZz1bXTtaZC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksaT1paS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsaSxsKSxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxlW2krK109dC5faGVpZ2h0LGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT8xOjAsZVtpKytdPXQuX3BlclBvc2l0aW9uSGVpZ2h0PzE6MCxlW2krK109dC5fYXJjVHlwZSxlW2krK109Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGVbaV09dC5wYWNrZWRMZW5ndGgsZX07em10PW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxLbXQ9e3BvbHlnb25IaWVyYXJjaHk6e319O1pkLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49aWkudW5wYWNrUG9seWdvbkhpZXJhcmNoeSh0LGUsbCk7ZT1uLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIG4uc3RhcnRpbmdJbmRleDtsZXQgcz1vdC51bnBhY2sodCxlLHptdCk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPXRbZSsrXSxyPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXT09PTEsQT10W2UrK109PT0xLGQ9dFtlKytdLGY9dFtlKytdLEU9dFtlXTtyZXR1cm4gbShpKXx8KGk9bmV3IFpkKEttdCkpLGkuX3BvbHlnb25IaWVyYXJjaHk9bixpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX2hlaWdodD1vLGkuX2V4dHJ1ZGVkSGVpZ2h0PXIsaS5fZ3JhbnVsYXJpdHk9YSxpLl9wZXJQb3NpdGlvbkhlaWdodD1BLGkuX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT1oLGkuX2FyY1R5cGU9ZCxpLl9vZmZzZXRBdHRyaWJ1dGU9Zj09PS0xP3ZvaWQgMDpmLGkucGFja2VkTGVuZ3RoPUUsaX07WmQuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsdC5wb3NpdGlvbnMpO2xldCBlPXtwb2x5Z29uSGllcmFyY2h5Ontwb3NpdGlvbnM6dC5wb3NpdGlvbnN9LGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGVsbGlwc29pZDp0LmVsbGlwc29pZCxncmFudWxhcml0eTp0LmdyYW51bGFyaXR5LHBlclBvc2l0aW9uSGVpZ2h0OnQucGVyUG9zaXRpb25IZWlnaHQsYXJjVHlwZTp0LmFyY1R5cGUsb2Zmc2V0QXR0cmlidXRlOnQub2Zmc2V0QXR0cmlidXRlfTtyZXR1cm4gbmV3IFpkKGUpfTtaZC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9lbGxpcHNvaWQsaT10Ll9ncmFudWxhcml0eSxuPXQuX3BvbHlnb25IaWVyYXJjaHkscz10Ll9wZXJQb3NpdGlvbkhlaWdodCxvPXQuX2FyY1R5cGUscj1paS5wb2x5Z29uT3V0bGluZXNGcm9tSGllcmFyY2h5KG4sIXMsZSk7aWYoci5sZW5ndGg9PT0wKXJldHVybjtsZXQgYSxoPVtdLEE9TC5jaG9yZExlbmd0aChpLGUubWF4aW11bVJhZGl1cyksZD10Ll9oZWlnaHQsZj10Ll9leHRydWRlZEhlaWdodCxFPXQuX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZXx8IUwuZXF1YWxzRXBzaWxvbihkLGYsMCxMLkVQU0lMT04yKSxfLFI7aWYoRSlmb3IoUj0wO1I8ci5sZW5ndGg7UisrKXtpZihhPXZtdChlLHJbUl0sQSxzLG8pLGEuZ2VvbWV0cnk9aWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0RXh0cnVkZWQoYS5nZW9tZXRyeSxkLGYsZSxzKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBOPWEuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMsVD1uZXcgVWludDhBcnJheShOKTt0Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1A/VD1ULmZpbGwoMSwwLE4vMik6KF89dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsVD1ULmZpbGwoXykpLGEuZ2VvbWV0cnkuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpUfSl9aC5wdXNoKGEpfWVsc2UgZm9yKFI9MDtSPHIubGVuZ3RoO1IrKyl7aWYoYT1IbXQoZSxyW1JdLEEscyxvKSxhLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChhLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGQsZSwhcyksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgTj1hLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aDtfPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxO2xldCBUPW5ldyBVaW50OEFycmF5KE4vMykuZmlsbChfKTthLmdlb21ldHJ5LmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6VH0pfWgucHVzaChhKX1sZXQgST13aS5jb21iaW5lSW5zdGFuY2VzKGgpWzBdLEM9TnQuZnJvbVZlcnRpY2VzKEkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpO3JldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6SS5hdHRyaWJ1dGVzLGluZGljZXM6SS5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6SS5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOkMsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTt4Vj1aZH0pO3ZhciBQVj17fTtIZShQVix7ZGVmYXVsdDooKT0+cW10fSk7ZnVuY3Rpb24gWG10KHQsZSl7cmV0dXJuIG0oZSkmJih0PXhWLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSx4Vi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgcW10LEpWPU8oKCk9PnttdCgpO1ZlKCk7TDUoKTtxbXQ9WG10fSk7ZnVuY3Rpb24gJG10KHQsZSxpLG4scyl7bGV0IG89SjU7by5sZW5ndGg9cztsZXQgcixhPWkucmVkLGg9aS5ncmVlbixBPWkuYmx1ZSxkPWkuYWxwaGEsZj1uLnJlZCxFPW4uZ3JlZW4sXz1uLmJsdWUsUj1uLmFscGhhO2lmKFp0LmVxdWFscyhpLG4pKXtmb3Iocj0wO3I8cztyKyspb1tyXT1adC5jbG9uZShpKTtyZXR1cm4gb31sZXQgST0oZi1hKS9zLEM9KEUtaCkvcyxOPShfLUEpL3MsVD0oUi1kKS9zO2ZvcihyPTA7cjxzO3IrKylvW3JdPW5ldyBadChhK3IqSSxoK3IqQyxBK3IqTixkK3IqVCk7cmV0dXJuIG99ZnVuY3Rpb24gRlIodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zLGk9dC5jb2xvcnMsbj1aKHQud2lkdGgsMSkscz1aKHQuY29sb3JzUGVyVmVydGV4LCExKTtpZighbShlKXx8ZS5sZW5ndGg8Mil0aHJvdyBuZXcgWSgiQXQgbGVhc3QgdHdvIHBvc2l0aW9ucyBhcmUgcmVxdWlyZWQuIik7aWYodHlwZW9mIG4hPSJudW1iZXIiKXRocm93IG5ldyBZKCJ3aWR0aCBtdXN0IGJlIGEgbnVtYmVyIik7aWYobShpKSYmKHMmJmkubGVuZ3RoPGUubGVuZ3RofHwhcyYmaS5sZW5ndGg8ZS5sZW5ndGgtMSkpdGhyb3cgbmV3IFkoImNvbG9ycyBoYXMgYW4gaW52YWxpZCBsZW5ndGguIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fY29sb3JzPWksdGhpcy5fd2lkdGg9bix0aGlzLl9jb2xvcnNQZXJWZXJ0ZXg9cyx0aGlzLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUoWih0LnZlcnRleEZvcm1hdCxPdC5ERUZBVUxUKSksdGhpcy5fYXJjVHlwZT1aKHQuYXJjVHlwZSx0aS5HRU9ERVNJQyksdGhpcy5fZ3JhbnVsYXJpdHk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBvbHlsaW5lR2VvbWV0cnkiO2xldCBvPTErZS5sZW5ndGgqbC5wYWNrZWRMZW5ndGg7bys9bShpKT8xK2kubGVuZ3RoKlp0LnBhY2tlZExlbmd0aDoxLHRoaXMucGFja2VkTGVuZ3RoPW8rb3QucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aCs0fXZhciBKNSxqNSxINSxJZCx5NSx3NSx4NSxQNSxqVix2NT1PKCgpPT57QmwoKTtPYSgpO19pKCk7SHQoKTtRbigpO29pKCk7YnQoKTttdCgpO1Z0KCk7VmUoKTt5aSgpO2ppKCk7RW4oKTtkSSgpO0RpKCk7X2UoKTtPZigpO1hpKCk7THMoKTtKNT1bXTtGUi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtpPVooaSwwKTtsZXQgbixzPXQuX3Bvc2l0aW9ucyxvPXMubGVuZ3RoO2ZvcihlW2krK109byxuPTA7bjxvOysrbixpKz1sLnBhY2tlZExlbmd0aClsLnBhY2soc1tuXSxlLGkpO2xldCByPXQuX2NvbG9ycztmb3Iobz1tKHIpP3IubGVuZ3RoOjAsZVtpKytdPW8sbj0wO248bzsrK24saSs9WnQucGFja2VkTGVuZ3RoKVp0LnBhY2socltuXSxlLGkpO3JldHVybiBvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fd2lkdGgsZVtpKytdPXQuX2NvbG9yc1BlclZlcnRleD8xOjAsZVtpKytdPXQuX2FyY1R5cGUsZVtpXT10Ll9ncmFudWxhcml0eSxlfTtqNT1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksSDU9bmV3IE90LElkPXtwb3NpdGlvbnM6dm9pZCAwLGNvbG9yczp2b2lkIDAsZWxsaXBzb2lkOmo1LHZlcnRleEZvcm1hdDpINSx3aWR0aDp2b2lkIDAsY29sb3JzUGVyVmVydGV4OnZvaWQgMCxhcmNUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O0ZSLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1aKGUsMCk7bGV0IG4scz10W2UrK10sbz1uZXcgQXJyYXkocyk7Zm9yKG49MDtuPHM7KytuLGUrPWwucGFja2VkTGVuZ3RoKW9bbl09bC51bnBhY2sodCxlKTtzPXRbZSsrXTtsZXQgcj1zPjA/bmV3IEFycmF5KHMpOnZvaWQgMDtmb3Iobj0wO248czsrK24sZSs9WnQucGFja2VkTGVuZ3RoKXJbbl09WnQudW5wYWNrKHQsZSk7bGV0IGE9b3QudW5wYWNrKHQsZSxqNSk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBoPU90LnVucGFjayh0LGUsSDUpO2UrPU90LnBhY2tlZExlbmd0aDtsZXQgQT10W2UrK10sZD10W2UrK109PT0xLGY9dFtlKytdLEU9dFtlXTtyZXR1cm4gbShpKT8oaS5fcG9zaXRpb25zPW8saS5fY29sb3JzPXIsaS5fZWxsaXBzb2lkPW90LmNsb25lKGEsaS5fZWxsaXBzb2lkKSxpLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUoaCxpLl92ZXJ0ZXhGb3JtYXQpLGkuX3dpZHRoPUEsaS5fY29sb3JzUGVyVmVydGV4PWQsaS5fYXJjVHlwZT1mLGkuX2dyYW51bGFyaXR5PUUsaSk6KElkLnBvc2l0aW9ucz1vLElkLmNvbG9ycz1yLElkLndpZHRoPUEsSWQuY29sb3JzUGVyVmVydGV4PWQsSWQuYXJjVHlwZT1mLElkLmdyYW51bGFyaXR5PUUsbmV3IEZSKElkKSl9O3k1PW5ldyBsLHc1PW5ldyBsLHg1PW5ldyBsLFA1PW5ldyBsO0ZSLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3dpZHRoLGk9dC5fdmVydGV4Rm9ybWF0LG49dC5fY29sb3JzLHM9dC5fY29sb3JzUGVyVmVydGV4LG89dC5fYXJjVHlwZSxyPXQuX2dyYW51bGFyaXR5LGE9dC5fZWxsaXBzb2lkLGgsQSxkLGY9W10sRT1Ybih0Ll9wb3NpdGlvbnMsbC5lcXVhbHNFcHNpbG9uLCExLGYpO2lmKG0obikmJmYubGVuZ3RoPjApe2xldCB3PTAseD1mWzBdO249bi5maWx0ZXIoZnVuY3Rpb24oSCxqKXtsZXQgWD0hMTtyZXR1cm4gcz9YPWo9PT14fHxqPT09MCYmeD09PTE6WD1qKzE9PT14LFg/KHcrKyx4PWZbd10sITEpOiEwfSl9bGV0IF89RS5sZW5ndGg7aWYoXzwyfHxlPD0wKXJldHVybjtpZihvPT09dGkuR0VPREVTSUN8fG89PT10aS5SSFVNQil7bGV0IHcseDtvPT09dGkuR0VPREVTSUM/KHc9TC5jaG9yZExlbmd0aChyLGEubWF4aW11bVJhZGl1cykseD1Pbi5udW1iZXJPZlBvaW50cyk6KHc9cix4PU9uLm51bWJlck9mUG9pbnRzUmh1bWJMaW5lKTtsZXQgSD1Pbi5leHRyYWN0SGVpZ2h0cyhFLGEpO2lmKG0obikpe2xldCBqPTE7Zm9yKGg9MDtoPF8tMTsrK2gpais9eChFW2hdLEVbaCsxXSx3KTtsZXQgWD1uZXcgQXJyYXkoaiksdHQ9MDtmb3IoaD0wO2g8Xy0xOysraCl7bGV0IEI9RVtoXSxJdD1FW2grMV0sZ3Q9bltoXSxZdD14KEIsSXQsdyk7aWYocyYmaDxqKXtsZXQgTXQ9bltoKzFdLEN0PSRtdChCLEl0LGd0LE10LFl0KSx6dD1DdC5sZW5ndGg7Zm9yKEE9MDtBPHp0OysrQSlYW3R0KytdPUN0W0FdfWVsc2UgZm9yKEE9MDtBPFl0OysrQSlYW3R0KytdPVp0LmNsb25lKGd0KX1YW3R0XT1adC5jbG9uZShuW24ubGVuZ3RoLTFdKSxuPVgsSjUubGVuZ3RoPTB9bz09PXRpLkdFT0RFU0lDP0U9T24uZ2VuZXJhdGVDYXJ0ZXNpYW5BcmMoe3Bvc2l0aW9uczpFLG1pbkRpc3RhbmNlOncsZWxsaXBzb2lkOmEsaGVpZ2h0Okh9KTpFPU9uLmdlbmVyYXRlQ2FydGVzaWFuUmh1bWJBcmMoe3Bvc2l0aW9uczpFLGdyYW51bGFyaXR5OncsZWxsaXBzb2lkOmEsaGVpZ2h0Okh9KX1fPUUubGVuZ3RoO2xldCBSPV8qNC00LEk9bmV3IEZsb2F0NjRBcnJheShSKjMpLEM9bmV3IEZsb2F0NjRBcnJheShSKjMpLE49bmV3IEZsb2F0NjRBcnJheShSKjMpLFQ9bmV3IEZsb2F0MzJBcnJheShSKjIpLEY9aS5zdD9uZXcgRmxvYXQzMkFycmF5KFIqMik6dm9pZCAwLGI9bShuKT9uZXcgVWludDhBcnJheShSKjQpOnZvaWQgMCxHPTAsTT0wLFE9MCxVPTAsaztmb3IoQT0wO0E8XzsrK0Epe0E9PT0wPyhrPXk1LGwuc3VidHJhY3QoRVswXSxFWzFdLGspLGwuYWRkKEVbMF0sayxrKSk6az1FW0EtMV0sbC5jbG9uZShrLHg1KSxsLmNsb25lKEVbQV0sdzUpLEE9PT1fLTE/KGs9eTUsbC5zdWJ0cmFjdChFW18tMV0sRVtfLTJdLGspLGwuYWRkKEVbXy0xXSxrLGspKTprPUVbQSsxXSxsLmNsb25lKGssUDUpO2xldCB3LHg7bShiKSYmKEEhPT0wJiYhcz93PW5bQS0xXTp3PW5bQV0sQSE9PV8tMSYmKHg9bltBXSkpO2xldCBIPUE9PT0wPzI6MCxqPUE9PT1fLTE/Mjo0O2ZvcihkPUg7ZDxqOysrZCl7bC5wYWNrKHc1LEksRyksbC5wYWNrKHg1LEMsRyksbC5wYWNrKFA1LE4sRyksRys9MztsZXQgWD1kLTI8MD8tMToxO2lmKFRbTSsrXT0yKihkJTIpLTEsVFtNKytdPVgqZSxpLnN0JiYoRltRKytdPUEvKF8tMSksRltRKytdPU1hdGgubWF4KFRbTS0yXSwwKSksbShiKSl7bGV0IHR0PWQ8Mj93Ong7YltVKytdPVp0LmZsb2F0VG9CeXRlKHR0LnJlZCksYltVKytdPVp0LmZsb2F0VG9CeXRlKHR0LmdyZWVuKSxiW1UrK109WnQuZmxvYXRUb0J5dGUodHQuYmx1ZSksYltVKytdPVp0LmZsb2F0VG9CeXRlKHR0LmFscGhhKX19fWxldCB5PW5ldyB3ZTt5LnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6SX0pLHkucHJldlBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Q30pLHkubmV4dFBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Tn0pLHkuZXhwYW5kQW5kV2lkdGg9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOlR9KSxpLnN0JiYoeS5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6Rn0pKSxtKGIpJiYoeS5jb2xvcj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LHZhbHVlczpiLG5vcm1hbGl6ZTohMH0pKTtsZXQgYz10ZS5jcmVhdGVUeXBlZEFycmF5KFIsXyo2LTYpLGc9MCxWPTAsRD1fLTE7Zm9yKEE9MDtBPEQ7KytBKWNbVisrXT1nLGNbVisrXT1nKzIsY1tWKytdPWcrMSxjW1YrK109ZysxLGNbVisrXT1nKzIsY1tWKytdPWcrMyxnKz00O3JldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6eSxpbmRpY2VzOmMscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6TnQuZnJvbVBvaW50cyhFKSxnZW9tZXRyeVR5cGU6QWguUE9MWUxJTkVTfSl9O2pWPUZSfSk7dmFyIEhWPXt9O0hlKEhWLHtkZWZhdWx0OigpPT5lZnR9KTtmdW5jdGlvbiB0ZnQodCxlKXtyZXR1cm4gbShlKSYmKHQ9alYudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLGpWLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBlZnQsdlY9TygoKT0+e210KCk7VmUoKTt2NSgpO2VmdD10ZnR9KTtmdW5jdGlvbiBpZnQodCxlLGksbil7bGV0IHM9bmV3IHdlO24ucG9zaXRpb24mJihzLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dH0pKTtsZXQgbz1lLmxlbmd0aCxyPXQubGVuZ3RoLzMsYT0oci1vKjIpLyhvKjIpLGg9dWkudHJpYW5ndWxhdGUoZSksQT0oYS0xKSpvKjYraC5sZW5ndGgqMixkPXRlLmNyZWF0ZVR5cGVkQXJyYXkocixBKSxmLEUsXyxSLEksQyxOPW8qMixUPTA7Zm9yKGY9MDtmPGEtMTtmKyspe2ZvcihFPTA7RTxvLTE7RSsrKV89RSoyK2YqbyoyLEM9XytOLFI9XysxLEk9UitOLGRbVCsrXT1SLGRbVCsrXT1fLGRbVCsrXT1JLGRbVCsrXT1JLGRbVCsrXT1fLGRbVCsrXT1DO189byoyLTIrZipvKjIsUj1fKzEsST1SK04sQz1fK04sZFtUKytdPVIsZFtUKytdPV8sZFtUKytdPUksZFtUKytdPUksZFtUKytdPV8sZFtUKytdPUN9aWYobi5zdHx8bi50YW5nZW50fHxuLmJpdGFuZ2VudCl7bGV0IEc9bmV3IEZsb2F0MzJBcnJheShyKjIpLE09MS8oYS0xKSxRPTEvaS5oZWlnaHQsVT1pLmhlaWdodC8yLGsseSxjPTA7Zm9yKGY9MDtmPGE7ZisrKXtmb3Ioaz1mKk0seT1RKihlWzBdLnkrVSksR1tjKytdPWssR1tjKytdPXksRT0xO0U8bztFKyspeT1RKihlW0VdLnkrVSksR1tjKytdPWssR1tjKytdPXksR1tjKytdPWssR1tjKytdPXk7eT1RKihlWzBdLnkrVSksR1tjKytdPWssR1tjKytdPXl9Zm9yKEU9MDtFPG87RSsrKWs9MCx5PVEqKGVbRV0ueStVKSxHW2MrK109ayxHW2MrK109eTtmb3IoRT0wO0U8bztFKyspaz0oYS0xKSpNLHk9USooZVtFXS55K1UpLEdbYysrXT1rLEdbYysrXT15O3Muc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOm5ldyBGbG9hdDMyQXJyYXkoRyl9KX1sZXQgRj1yLW8qMjtmb3IoZj0wO2Y8aC5sZW5ndGg7Zis9Myl7bGV0IEc9aFtmXStGLE09aFtmKzFdK0YsUT1oW2YrMl0rRjtkW1QrK109RyxkW1QrK109TSxkW1QrK109USxkW1QrK109UStvLGRbVCsrXT1NK28sZFtUKytdPUcrb31sZXQgYj1uZXcgc2Uoe2F0dHJpYnV0ZXM6cyxpbmRpY2VzOmQsYm91bmRpbmdTcGhlcmU6TnQuZnJvbVZlcnRpY2VzKHQpLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfSk7aWYobi5ub3JtYWwmJihiPXdpLmNvbXB1dGVOb3JtYWwoYikpLG4udGFuZ2VudHx8bi5iaXRhbmdlbnQpe3RyeXtiPXdpLmNvbXB1dGVUYW5nZW50QW5kQml0YW5nZW50KGIpfWNhdGNoe3pDKCJwb2x5bGluZS12b2x1bWUtdGFuZ2VudC1iaXRhbmdlbnQiLCJVbmFibGUgdG8gY29tcHV0ZSB0YW5nZW50cyBhbmQgYml0YW5nZW50cyBmb3IgcG9seWxpbmUgdm9sdW1lIGdlb21ldHJ5Iil9bi50YW5nZW50fHwoYi5hdHRyaWJ1dGVzLnRhbmdlbnQ9dm9pZCAwKSxuLmJpdGFuZ2VudHx8KGIuYXR0cmlidXRlcy5iaXRhbmdlbnQ9dm9pZCAwKSxuLnN0fHwoYi5hdHRyaWJ1dGVzLnN0PXZvaWQgMCl9cmV0dXJuIGJ9ZnVuY3Rpb24gU1IodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9seWxpbmVQb3NpdGlvbnMsaT10LnNoYXBlUG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBZKCJvcHRpb25zLnBvbHlsaW5lUG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJvcHRpb25zLnNoYXBlUG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3Bvc2l0aW9ucz1lLHRoaXMuX3NoYXBlPWksdGhpcy5fZWxsaXBzb2lkPW90LmNsb25lKFoodC5lbGxpcHNvaWQsb3QuV0dTODQpKSx0aGlzLl9jb3JuZXJUeXBlPVoodC5jb3JuZXJUeXBlLENuLlJPVU5ERUQpLHRoaXMuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShaKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpKSx0aGlzLl9ncmFudWxhcml0eT1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBvbHlsaW5lVm9sdW1lR2VvbWV0cnkiO2xldCBuPTErZS5sZW5ndGgqbC5wYWNrZWRMZW5ndGg7bis9MStpLmxlbmd0aCpudC5wYWNrZWRMZW5ndGgsdGhpcy5wYWNrZWRMZW5ndGg9bitvdC5wYWNrZWRMZW5ndGgrT3QucGFja2VkTGVuZ3RoKzJ9dmFyIHo1LEs1LFlSLG5mdCx6VixYNT1PKCgpPT57T2EoKTtFcigpO19pKCk7WGUoKTtIdCgpO29pKCk7ZmQoKTtidCgpO210KCk7VnQoKTtWZSgpO3lpKCk7amkoKTtFbigpO2dBKCk7RGkoKTtfZSgpO0xPKCk7UGEoKTskQygpO1hpKCk7THMoKTtmYygpO1NSLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2k9WihpLDApO2xldCBuLHM9dC5fcG9zaXRpb25zLG89cy5sZW5ndGg7Zm9yKGVbaSsrXT1vLG49MDtuPG87KytuLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhzW25dLGUsaSk7bGV0IHI9dC5fc2hhcGU7Zm9yKG89ci5sZW5ndGgsZVtpKytdPW8sbj0wO248bzsrK24saSs9bnQucGFja2VkTGVuZ3RoKW50LnBhY2socltuXSxlLGkpO3JldHVybiBvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fY29ybmVyVHlwZSxlW2ldPXQuX2dyYW51bGFyaXR5LGV9O3o1PW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxLNT1uZXcgT3QsWVI9e3BvbHlsaW5lUG9zaXRpb25zOnZvaWQgMCxzaGFwZVBvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOno1LHZlcnRleEZvcm1hdDpLNSxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O1NSLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1aKGUsMCk7bGV0IG4scz10W2UrK10sbz1uZXcgQXJyYXkocyk7Zm9yKG49MDtuPHM7KytuLGUrPWwucGFja2VkTGVuZ3RoKW9bbl09bC51bnBhY2sodCxlKTtzPXRbZSsrXTtsZXQgcj1uZXcgQXJyYXkocyk7Zm9yKG49MDtuPHM7KytuLGUrPW50LnBhY2tlZExlbmd0aClyW25dPW50LnVucGFjayh0LGUpO2xldCBhPW90LnVucGFjayh0LGUsejUpO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgaD1PdC51bnBhY2sodCxlLEs1KTtlKz1PdC5wYWNrZWRMZW5ndGg7bGV0IEE9dFtlKytdLGQ9dFtlXTtyZXR1cm4gbShpKT8oaS5fcG9zaXRpb25zPW8saS5fc2hhcGU9cixpLl9lbGxpcHNvaWQ9b3QuY2xvbmUoYSxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShoLGkuX3ZlcnRleEZvcm1hdCksaS5fY29ybmVyVHlwZT1BLGkuX2dyYW51bGFyaXR5PWQsaSk6KFlSLnBvbHlsaW5lUG9zaXRpb25zPW8sWVIuc2hhcGVQb3NpdGlvbnM9cixZUi5jb3JuZXJUeXBlPUEsWVIuZ3JhbnVsYXJpdHk9ZCxuZXcgU1IoWVIpKX07bmZ0PW5ldyBtaTtTUi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsaT1YbihlLGwuZXF1YWxzRXBzaWxvbiksbj10Ll9zaGFwZTtpZihuPUxjLnJlbW92ZUR1cGxpY2F0ZXNGcm9tU2hhcGUobiksaS5sZW5ndGg8Mnx8bi5sZW5ndGg8MylyZXR1cm47dWkuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKG4pPT09TXMuQ0xPQ0tXSVNFJiZuLnJldmVyc2UoKTtsZXQgcz1taS5mcm9tUG9pbnRzKG4sbmZ0KSxvPUxjLmNvbXB1dGVQb3NpdGlvbnMoaSxuLHMsdCwhMCk7cmV0dXJuIGlmdChvLG4scyx0Ll92ZXJ0ZXhGb3JtYXQpfTt6Vj1TUn0pO3ZhciBLVj17fTtIZShLVix7ZGVmYXVsdDooKT0+b2Z0fSk7ZnVuY3Rpb24gc2Z0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXpWLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSx6Vi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgb2Z0LFhWPU8oKCk9PnttdCgpO1ZlKCk7WDUoKTtvZnQ9c2Z0fSk7ZnVuY3Rpb24gcmZ0KHQsZSl7bGV0IGk9bmV3IHdlO2kucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp0fSk7bGV0IG49ZS5sZW5ndGgscz1pLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxyPXQubGVuZ3RoLzMvbixhPXRlLmNyZWF0ZVR5cGVkQXJyYXkocywyKm4qKHIrMSkpLGgsQSxkPTA7aD0wO2xldCBmPWgqbjtmb3IoQT0wO0E8bi0xO0ErKylhW2QrK109QStmLGFbZCsrXT1BK2YrMTtmb3IoYVtkKytdPW4tMStmLGFbZCsrXT1mLGg9ci0xLGY9aCpuLEE9MDtBPG4tMTtBKyspYVtkKytdPUErZixhW2QrK109QStmKzE7Zm9yKGFbZCsrXT1uLTErZixhW2QrK109ZixoPTA7aDxyLTE7aCsrKXtsZXQgXz1uKmgsUj1fK247Zm9yKEE9MDtBPG47QSsrKWFbZCsrXT1BK18sYVtkKytdPUErUn1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmksaW5kaWNlczp0ZS5jcmVhdGVUeXBlZEFycmF5KHMsYSksYm91bmRpbmdTcGhlcmU6TnQuZnJvbVZlcnRpY2VzKHQpLHByaW1pdGl2ZVR5cGU6bmUuTElORVN9KX1mdW5jdGlvbiBWUih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb2x5bGluZVBvc2l0aW9ucyxpPXQuc2hhcGVQb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9seWxpbmVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuc2hhcGVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fc2hhcGU9aSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX2Nvcm5lclR5cGU9Wih0LmNvcm5lclR5cGUsQ24uUk9VTkRFRCksdGhpcy5fZ3JhbnVsYXJpdHk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeSI7bGV0IG49MStlLmxlbmd0aCpsLnBhY2tlZExlbmd0aDtuKz0xK2kubGVuZ3RoKm50LnBhY2tlZExlbmd0aCx0aGlzLnBhY2tlZExlbmd0aD1uK290LnBhY2tlZExlbmd0aCsyfXZhciBxNSxPUixhZnQscVYsJDU9TygoKT0+e09hKCk7RXIoKTtfaSgpO1hlKCk7SHQoKTtvaSgpO2ZkKCk7YnQoKTttdCgpO1Z0KCk7VmUoKTt5aSgpO2ppKCk7RW4oKTtEaSgpO19lKCk7UGEoKTskQygpO1hpKCk7ZmMoKTtWUi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtpPVooaSwwKTtsZXQgbixzPXQuX3Bvc2l0aW9ucyxvPXMubGVuZ3RoO2ZvcihlW2krK109byxuPTA7bjxvOysrbixpKz1sLnBhY2tlZExlbmd0aClsLnBhY2soc1tuXSxlLGkpO2xldCByPXQuX3NoYXBlO2ZvcihvPXIubGVuZ3RoLGVbaSsrXT1vLG49MDtuPG87KytuLGkrPW50LnBhY2tlZExlbmd0aCludC5wYWNrKHJbbl0sZSxpKTtyZXR1cm4gb3QucGFjayh0Ll9lbGxpcHNvaWQsZSxpKSxpKz1vdC5wYWNrZWRMZW5ndGgsZVtpKytdPXQuX2Nvcm5lclR5cGUsZVtpXT10Ll9ncmFudWxhcml0eSxlfTtxNT1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksT1I9e3BvbHlsaW5lUG9zaXRpb25zOnZvaWQgMCxzaGFwZVBvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOnE1LGhlaWdodDp2b2lkIDAsY29ybmVyVHlwZTp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwfTtWUi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuLHM9dFtlKytdLG89bmV3IEFycmF5KHMpO2ZvcihuPTA7bjxzOysrbixlKz1sLnBhY2tlZExlbmd0aClvW25dPWwudW5wYWNrKHQsZSk7cz10W2UrK107bGV0IHI9bmV3IEFycmF5KHMpO2ZvcihuPTA7bjxzOysrbixlKz1udC5wYWNrZWRMZW5ndGgpcltuXT1udC51bnBhY2sodCxlKTtsZXQgYT1vdC51bnBhY2sodCxlLHE1KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IGg9dFtlKytdLEE9dFtlXTtyZXR1cm4gbShpKT8oaS5fcG9zaXRpb25zPW8saS5fc2hhcGU9cixpLl9lbGxpcHNvaWQ9b3QuY2xvbmUoYSxpLl9lbGxpcHNvaWQpLGkuX2Nvcm5lclR5cGU9aCxpLl9ncmFudWxhcml0eT1BLGkpOihPUi5wb2x5bGluZVBvc2l0aW9ucz1vLE9SLnNoYXBlUG9zaXRpb25zPXIsT1IuY29ybmVyVHlwZT1oLE9SLmdyYW51bGFyaXR5PUEsbmV3IFZSKE9SKSl9O2FmdD1uZXcgbWk7VlIuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLGk9WG4oZSxsLmVxdWFsc0Vwc2lsb24pLG49dC5fc2hhcGU7aWYobj1MYy5yZW1vdmVEdXBsaWNhdGVzRnJvbVNoYXBlKG4pLGkubGVuZ3RoPDJ8fG4ubGVuZ3RoPDMpcmV0dXJuO3VpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChuKT09PU1zLkNMT0NLV0lTRSYmbi5yZXZlcnNlKCk7bGV0IHM9bWkuZnJvbVBvaW50cyhuLGFmdCksbz1MYy5jb21wdXRlUG9zaXRpb25zKGksbixzLHQsITEpO3JldHVybiByZnQobyxuKX07cVY9VlJ9KTt2YXIgJFY9e307SGUoJFYse2RlZmF1bHQ6KCk9PmhmdH0pO2Z1bmN0aW9uIEFmdCh0LGUpe3JldHVybiBtKGUpJiYodD1xVi51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCkscVYuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGhmdCx0Rz1PKCgpPT57bXQoKTtWZSgpOyQ1KCk7aGZ0PUFmdH0pO2Z1bmN0aW9uIGk2KHQsZSxpLG4scyxvLHIpe2xldCBhPU1hdGguY29zKGUpLGg9biphLEE9aSphLGQ9TWF0aC5zaW4oZSksZj1uKmQsRT1pKmQ7aWE9ZUcucHJvamVjdCh0LGlhKSxpYT1sLnN1YnRyYWN0KGlhLG1nLGlhKTtsZXQgXz1Ibi5mcm9tUm90YXRpb24oZSxsZnQpO2lhPUhuLm11bHRpcGx5QnlWZWN0b3IoXyxpYSxpYSksaWE9bC5hZGQoaWEsbWcsaWEpLHQ9ZUcudW5wcm9qZWN0KGlhLHQpLG8tPTEsci09MTtsZXQgUj10LmxhdGl0dWRlLEk9UitvKkUsQz1SLWgqcixOPVItaCpyK28qRSxUPU1hdGgubWF4KFIsSSxDLE4pLEY9TWF0aC5taW4oUixJLEMsTiksYj10LmxvbmdpdHVkZSxHPWIrbypBLE09YityKmYsUT1iK3IqZitvKkEsVT1NYXRoLm1heChiLEcsTSxRKSxrPU1hdGgubWluKGIsRyxNLFEpO3JldHVybntub3J0aDpULHNvdXRoOkYsZWFzdDpVLHdlc3Q6ayxncmFuWUNvczpoLGdyYW5ZU2luOmYsZ3JhblhDb3M6QSxncmFuWFNpbjpFLG53Q29ybmVyOnR9fXZhciB0NixlNixjZnQsaUcsbGZ0LGlhLGRmdCxtZyxlRyxybyxuRz1PKCgpPT57SHQoKTtyaSgpO210KCk7VnQoKTt6QSgpO19lKCk7ZGMoKTtwbigpO3Q2PU1hdGguY29zLGU2PU1hdGguc2luLGNmdD1NYXRoLnNxcnQsaUc9e307aUcuY29tcHV0ZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2xldCBhPWUucmFkaWlTcXVhcmVkLGg9dC5ud0Nvcm5lcixBPXQuYm91bmRpbmdSZWN0YW5nbGUsZD1oLmxhdGl0dWRlLXQuZ3JhbllDb3MqbitzKnQuZ3JhblhTaW4sZj10NihkKSxFPWU2KGQpLF89YS56KkUsUj1oLmxvbmdpdHVkZStuKnQuZ3JhbllTaW4rcyp0LmdyYW5YQ29zLEk9Zip0NihSKSxDPWYqZTYoUiksTj1hLngqSSxUPWEueSpDLEY9Y2Z0KE4qSStUKkMrXypFKTtpZihvLng9Ti9GLG8ueT1UL0Ysby56PV8vRixpKXtsZXQgYj10LnN0TndDb3JuZXI7bShiKT8oZD1iLmxhdGl0dWRlLXQuc3RHcmFuWUNvcypuK3MqdC5zdEdyYW5YU2luLFI9Yi5sb25naXR1ZGUrbip0LnN0R3JhbllTaW4rcyp0LnN0R3JhblhDb3Msci54PShSLXQuc3RXZXN0KSp0LmxvblNjYWxhcixyLnk9KGQtdC5zdFNvdXRoKSp0LmxhdFNjYWxhcik6KHIueD0oUi1BLndlc3QpKnQubG9uU2NhbGFyLHIueT0oZC1BLnNvdXRoKSp0LmxhdFNjYWxhcil9fTtsZnQ9bmV3IEhuLGlhPW5ldyBsLGRmdD1uZXcgdXQsbWc9bmV3IGwsZUc9bmV3IE9zO2lHLmNvbXB1dGVPcHRpb25zPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2xldCBhPXQuZWFzdCxoPXQud2VzdCxBPXQubm9ydGgsZD10LnNvdXRoLGY9ITEsRT0hMTtBPT09TC5QSV9PVkVSX1RXTyYmKGY9ITApLGQ9PT0tTC5QSV9PVkVSX1RXTyYmKEU9ITApO2xldCBfLFI9QS1kO2g+YT9fPUwuVFdPX1BJLWgrYTpfPWEtaDtsZXQgST1NYXRoLmNlaWwoXy9lKSsxLEM9TWF0aC5jZWlsKFIvZSkrMSxOPV8vKEktMSksVD1SLyhDLTEpLEY9WHQubm9ydGh3ZXN0KHQsbyksYj1YdC5jZW50ZXIodCxkZnQpOyhpIT09MHx8biE9PTApJiYoYi5sb25naXR1ZGU8Ri5sb25naXR1ZGUmJihiLmxvbmdpdHVkZSs9TC5UV09fUEkpLG1nPWVHLnByb2plY3QoYixtZykpO2xldCBHPVQsTT1OLFE9MCxVPTAsaz1YdC5jbG9uZSh0LHMpLHk9e2dyYW5ZQ29zOkcsZ3JhbllTaW46USxncmFuWENvczpNLGdyYW5YU2luOlUsbndDb3JuZXI6Rixib3VuZGluZ1JlY3RhbmdsZTprLHdpZHRoOkksaGVpZ2h0OkMsbm9ydGhDYXA6Zixzb3V0aENhcDpFfTtpZihpIT09MCl7bGV0IGM9aTYoRixpLE4sVCxiLEksQyk7aWYoQT1jLm5vcnRoLGQ9Yy5zb3V0aCxhPWMuZWFzdCxoPWMud2VzdCxBPC1MLlBJX09WRVJfVFdPfHxBPkwuUElfT1ZFUl9UV098fGQ8LUwuUElfT1ZFUl9UV098fGQ+TC5QSV9PVkVSX1RXTyl0aHJvdyBuZXcgWSgiUm90YXRlZCByZWN0YW5nbGUgaXMgaW52YWxpZC4gIEl0IGNyb3NzZXMgb3ZlciBlaXRoZXIgdGhlIG5vcnRoIG9yIHNvdXRoIHBvbGUuIik7eS5ncmFuWUNvcz1jLmdyYW5ZQ29zLHkuZ3JhbllTaW49Yy5ncmFuWVNpbix5LmdyYW5YQ29zPWMuZ3JhblhDb3MseS5ncmFuWFNpbj1jLmdyYW5YU2luLGsubm9ydGg9QSxrLnNvdXRoPWQsay5lYXN0PWEsay53ZXN0PWh9aWYobiE9PTApe2k9aS1uO2xldCBjPVh0Lm5vcnRod2VzdChrLHIpLGc9aTYoYyxpLE4sVCxiLEksQyk7eS5zdEdyYW5ZQ29zPWcuZ3JhbllDb3MseS5zdEdyYW5YQ29zPWcuZ3JhblhDb3MseS5zdEdyYW5ZU2luPWcuZ3JhbllTaW4seS5zdEdyYW5YU2luPWcuZ3JhblhTaW4seS5zdE53Q29ybmVyPWMseS5zdFdlc3Q9Zy53ZXN0LHkuc3RTb3V0aD1nLnNvdXRofXJldHVybiB5fTtybz1pR30pO2Z1bmN0aW9uIGg2KHQsZSl7bGV0IGk9bmV3IHNlKHthdHRyaWJ1dGVzOm5ldyB3ZSxwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFU30pO3JldHVybiBpLmF0dHJpYnV0ZXMucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLnBvc2l0aW9uc30pLHQubm9ybWFsJiYoaS5hdHRyaWJ1dGVzLm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6ZS5ub3JtYWxzfSkpLHQudGFuZ2VudCYmKGkuYXR0cmlidXRlcy50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLnRhbmdlbnRzfSkpLHQuYml0YW5nZW50JiYoaS5hdHRyaWJ1dGVzLmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6ZS5iaXRhbmdlbnRzfSkpLGl9ZnVuY3Rpb24gX2Z0KHQsZSxpLG4pe2xldCBzPXQubGVuZ3RoLG89ZS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShzKTp2b2lkIDAscj1lLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShzKTp2b2lkIDAsYT1lLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxoPTAsQT1hNixkPXI2LGY9bzY7aWYoZS5ub3JtYWx8fGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpZm9yKGxldCBFPTA7RTxzO0UrPTMpe2xldCBfPWwuZnJvbUFycmF5KHQsRSxzRyksUj1oKzEsST1oKzI7Zj1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChfLGYpLChlLnRhbmdlbnR8fGUuYml0YW5nZW50KSYmKGwuY3Jvc3MobC5VTklUX1osZixkKSxsdC5tdWx0aXBseUJ5VmVjdG9yKG4sZCxkKSxsLm5vcm1hbGl6ZShkLGQpLGUuYml0YW5nZW50JiZsLm5vcm1hbGl6ZShsLmNyb3NzKGYsZCxBKSxBKSksZS5ub3JtYWwmJihvW2hdPWYueCxvW1JdPWYueSxvW0ldPWYueiksZS50YW5nZW50JiYocltoXT1kLngscltSXT1kLnkscltJXT1kLnopLGUuYml0YW5nZW50JiYoYVtoXT1BLngsYVtSXT1BLnksYVtJXT1BLnopLGgrPTN9cmV0dXJuIGg2KGUse3Bvc2l0aW9uczp0LG5vcm1hbHM6byx0YW5nZW50czpyLGJpdGFuZ2VudHM6YX0pfWZ1bmN0aW9uIFJmdCh0LGUsaSl7bGV0IG49dC5sZW5ndGgscz1lLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KG4pOnZvaWQgMCxvPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KG4pOnZvaWQgMCxyPWUuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkobik6dm9pZCAwLGE9MCxoPTAsQT0wLGQ9ITAsZj1hNixFPXI2LF89bzY7aWYoZS5ub3JtYWx8fGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpZm9yKGxldCBSPTA7UjxuO1IrPTYpe2xldCBJPWwuZnJvbUFycmF5KHQsUixzRyksQz1sLmZyb21BcnJheSh0LChSKzYpJW4sb0cpO2lmKGQpe2xldCBOPWwuZnJvbUFycmF5KHQsKFIrMyklbixjNik7bC5zdWJ0cmFjdChDLEksQyksbC5zdWJ0cmFjdChOLEksTiksXz1sLm5vcm1hbGl6ZShsLmNyb3NzKE4sQyxfKSxfKSxkPSExfWwuZXF1YWxzRXBzaWxvbihDLEksTC5FUFNJTE9OMTApJiYoZD0hMCksKGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYoZj1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChJLGYpLGUudGFuZ2VudCYmKEU9bC5ub3JtYWxpemUobC5jcm9zcyhmLF8sRSksRSkpKSxlLm5vcm1hbCYmKHNbYSsrXT1fLngsc1thKytdPV8ueSxzW2ErK109Xy56LHNbYSsrXT1fLngsc1thKytdPV8ueSxzW2ErK109Xy56KSxlLnRhbmdlbnQmJihvW2grK109RS54LG9baCsrXT1FLnksb1toKytdPUUueixvW2grK109RS54LG9baCsrXT1FLnksb1toKytdPUUueiksZS5iaXRhbmdlbnQmJihyW0ErK109Zi54LHJbQSsrXT1mLnkscltBKytdPWYueixyW0ErK109Zi54LHJbQSsrXT1mLnkscltBKytdPWYueil9cmV0dXJuIGg2KGUse3Bvc2l0aW9uczp0LG5vcm1hbHM6cyx0YW5nZW50czpvLGJpdGFuZ2VudHM6cn0pfWZ1bmN0aW9uIGw2KHQsZSl7bGV0IGk9dC5fdmVydGV4Rm9ybWF0LG49dC5fZWxsaXBzb2lkLHM9ZS5oZWlnaHQsbz1lLndpZHRoLHI9ZS5ub3J0aENhcCxhPWUuc291dGhDYXAsaD0wLEE9cyxkPXMsZj0wO3ImJihoPTEsZC09MSxmKz0xKSxhJiYoQS09MSxkLT0xLGYrPTEpLGYrPW8qZDtsZXQgRT1pLnBvc2l0aW9uP25ldyBGbG9hdDY0QXJyYXkoZiozKTp2b2lkIDAsXz1pLnN0P25ldyBGbG9hdDMyQXJyYXkoZioyKTp2b2lkIDAsUj0wLEk9MCxDPXNHLE49bWZ0LFQ9TnVtYmVyLk1BWF9WQUxVRSxGPU51bWJlci5NQVhfVkFMVUUsYj0tTnVtYmVyLk1BWF9WQUxVRSxHPS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgZz1oO2c8QTsrK2cpZm9yKGxldCBWPTA7VjxvOysrVilyby5jb21wdXRlUG9zaXRpb24oZSxuLGkuc3QsZyxWLEMsTiksRVtSKytdPUMueCxFW1IrK109Qy55LEVbUisrXT1DLnosaS5zdCYmKF9bSSsrXT1OLngsX1tJKytdPU4ueSxUPU1hdGgubWluKFQsTi54KSxGPU1hdGgubWluKEYsTi55KSxiPU1hdGgubWF4KGIsTi54KSxHPU1hdGgubWF4KEcsTi55KSk7aWYociYmKHJvLmNvbXB1dGVQb3NpdGlvbihlLG4saS5zdCwwLDAsQyxOKSxFW1IrK109Qy54LEVbUisrXT1DLnksRVtSKytdPUMueixpLnN0JiYoX1tJKytdPU4ueCxfW0krK109Ti55LFQ9Ti54LEY9Ti55LGI9Ti54LEc9Ti55KSksYSYmKHJvLmNvbXB1dGVQb3NpdGlvbihlLG4saS5zdCxzLTEsMCxDLE4pLEVbUisrXT1DLngsRVtSKytdPUMueSxFW1JdPUMueixpLnN0JiYoX1tJKytdPU4ueCxfW0ldPU4ueSxUPU1hdGgubWluKFQsTi54KSxGPU1hdGgubWluKEYsTi55KSxiPU1hdGgubWF4KGIsTi54KSxHPU1hdGgubWF4KEcsTi55KSkpLGkuc3QmJihUPDB8fEY8MHx8Yj4xfHxHPjEpKWZvcihsZXQgZz0wO2c8Xy5sZW5ndGg7Zys9MilfW2ddPShfW2ddLVQpLyhiLVQpLF9bZysxXT0oX1tnKzFdLUYpLyhHLUYpO2xldCBNPV9mdChFLGksbixlLnRhbmdlbnRSb3RhdGlvbk1hdHJpeCksUT02KihvLTEpKihkLTEpO3ImJihRKz0zKihvLTEpKSxhJiYoUSs9Myooby0xKSk7bGV0IFU9dGUuY3JlYXRlVHlwZWRBcnJheShmLFEpLGs9MCx5PTAsYztmb3IoYz0wO2M8ZC0xOysrYyl7Zm9yKGxldCBnPTA7ZzxvLTE7KytnKXtsZXQgVj1rLEQ9VitvLHc9RCsxLHg9VisxO1VbeSsrXT1WLFVbeSsrXT1ELFVbeSsrXT14LFVbeSsrXT14LFVbeSsrXT1ELFVbeSsrXT13LCsra30rK2t9aWYocnx8YSl7bGV0IGc9Zi0xLFY9Zi0xO3ImJmEmJihnPWYtMik7bGV0IEQsdztpZihrPTAscilmb3IoYz0wO2M8by0xO2MrKylEPWssdz1EKzEsVVt5KytdPWcsVVt5KytdPUQsVVt5KytdPXcsKytrO2lmKGEpZm9yKGs9KGQtMSkqbyxjPTA7YzxvLTE7YysrKUQ9ayx3PUQrMSxVW3krK109RCxVW3krK109VixVW3krK109dywrK2t9cmV0dXJuIE0uaW5kaWNlcz1VLGkuc3QmJihNLmF0dHJpYnV0ZXMuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOl99KSksTX1mdW5jdGlvbiB3Zih0LGUsaSxuLHMpe3JldHVybiB0W2UrK109bltpXSx0W2UrK109bltpKzFdLHRbZSsrXT1uW2krMl0sdFtlKytdPXNbaV0sdFtlKytdPXNbaSsxXSx0W2VdPXNbaSsyXSx0fWZ1bmN0aW9uIHhmKHQsZSxpLG4pe3JldHVybiB0W2UrK109bltpXSx0W2UrK109bltpKzFdLHRbZSsrXT1uW2ldLHRbZV09bltpKzFdLHR9ZnVuY3Rpb24gWmZ0KHQsZSl7bGV0IGk9dC5fc2hhZG93Vm9sdW1lLG49dC5fb2Zmc2V0QXR0cmlidXRlLHM9dC5fdmVydGV4Rm9ybWF0LG89dC5fZXh0cnVkZWRIZWlnaHQscj10Ll9zdXJmYWNlSGVpZ2h0LGE9dC5fZWxsaXBzb2lkLGg9ZS5oZWlnaHQsQT1lLndpZHRoLGQ7aWYoaSl7bGV0IGJlPU90LmNsb25lKHMsckcpO2JlLm5vcm1hbD0hMCx0Ll92ZXJ0ZXhGb3JtYXQ9YmV9bGV0IGY9bDYodCxlKTtpJiYodC5fdmVydGV4Rm9ybWF0PXMpO2xldCBFPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChmLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLHIsYSwhMSk7RT1uZXcgRmxvYXQ2NEFycmF5KEUpO2xldCBfPUUubGVuZ3RoLFI9XyoyLEk9bmV3IEZsb2F0NjRBcnJheShSKTtJLnNldChFKTtsZXQgQz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoZi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxvLGEpO0kuc2V0KEMsXyksZi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1JO2xldCBOPXMubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoUik6dm9pZCAwLFQ9cy50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoUik6dm9pZCAwLEY9cy5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShSKTp2b2lkIDAsYj1zLnN0P25ldyBGbG9hdDMyQXJyYXkoUi8zKjIpOnZvaWQgMCxHLE07aWYocy5ub3JtYWwpe2ZvcihNPWYuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzLE4uc2V0KE0pLGQ9MDtkPF87ZCsrKU1bZF09LU1bZF07Ti5zZXQoTSxfKSxmLmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcz1OfWlmKGkpe009Zi5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMscy5ub3JtYWx8fChmLmF0dHJpYnV0ZXMubm9ybWFsPXZvaWQgMCk7bGV0IGJlPW5ldyBGbG9hdDMyQXJyYXkoUik7Zm9yKGQ9MDtkPF87ZCsrKU1bZF09LU1bZF07YmUuc2V0KE0sXyksZi5hdHRyaWJ1dGVzLmV4dHJ1ZGVEaXJlY3Rpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmJlfSl9bGV0IFEsVT1tKG4pO2lmKFUpe2xldCBiZT1fLzMqMixuaT1uZXcgVWludDhBcnJheShiZSk7bj09PVBlLlRPUD9uaT1uaS5maWxsKDEsMCxiZS8yKTooUT1uPT09UGUuTk9ORT8wOjEsbmk9bmkuZmlsbChRKSksZi5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOm5pfSl9aWYocy50YW5nZW50KXtsZXQgYmU9Zi5hdHRyaWJ1dGVzLnRhbmdlbnQudmFsdWVzO2ZvcihULnNldChiZSksZD0wO2Q8XztkKyspYmVbZF09LWJlW2RdO1Quc2V0KGJlLF8pLGYuYXR0cmlidXRlcy50YW5nZW50LnZhbHVlcz1UfWlmKHMuYml0YW5nZW50KXtsZXQgYmU9Zi5hdHRyaWJ1dGVzLmJpdGFuZ2VudC52YWx1ZXM7Ri5zZXQoYmUpLEYuc2V0KGJlLF8pLGYuYXR0cmlidXRlcy5iaXRhbmdlbnQudmFsdWVzPUZ9cy5zdCYmKEc9Zi5hdHRyaWJ1dGVzLnN0LnZhbHVlcyxiLnNldChHKSxiLnNldChHLF8vMyoyKSxmLmF0dHJpYnV0ZXMuc3QudmFsdWVzPWIpO2xldCBrPWYuaW5kaWNlcyx5PWsubGVuZ3RoLGM9Xy8zLGc9dGUuY3JlYXRlVHlwZWRBcnJheShSLzMseSoyKTtmb3IoZy5zZXQoayksZD0wO2Q8eTtkKz0zKWdbZCt5XT1rW2QrMl0rYyxnW2QrMSt5XT1rW2QrMV0rYyxnW2QrMit5XT1rW2RdK2M7Zi5pbmRpY2VzPWc7bGV0IFY9ZS5ub3J0aENhcCxEPWUuc291dGhDYXAsdz1oLHg9MixIPTAsaj00LFg9NDtWJiYoeC09MSx3LT0xLEgrPTEsai09MixYLT0xKSxEJiYoeC09MSx3LT0xLEgrPTEsai09MixYLT0xKSxIKz14KkErMip3LWo7bGV0IHR0PShIK1gpKjIsQj1uZXcgRmxvYXQ2NEFycmF5KHR0KjMpLEl0PWk/bmV3IEZsb2F0MzJBcnJheSh0dCozKTp2b2lkIDAsZ3Q9VT9uZXcgVWludDhBcnJheSh0dCk6dm9pZCAwLFl0PXMuc3Q/bmV3IEZsb2F0MzJBcnJheSh0dCoyKTp2b2lkIDAsTXQ9bj09PVBlLlRPUDtVJiYhTXQmJihRPW49PT1QZS5BTEw/MTowLGd0PWd0LmZpbGwoUSkpO2xldCBDdD0wLHp0PTAsa3Q9MCxKdD0wLFd0PUEqdyxGdDtmb3IoZD0wO2Q8V3Q7ZCs9QSlGdD1kKjMsQj13ZihCLEN0LEZ0LEUsQyksQ3QrPTYscy5zdCYmKFl0PXhmKFl0LHp0LGQqMixHKSx6dCs9NCksaSYmKGt0Kz0zLEl0W2t0KytdPU1bRnRdLEl0W2t0KytdPU1bRnQrMV0sSXRba3QrK109TVtGdCsyXSksTXQmJihndFtKdCsrXT0xLEp0Kz0xKTtpZihEKXtsZXQgYmU9Vj9XdCsxOld0O2ZvcihGdD1iZSozLGQ9MDtkPDI7ZCsrKUI9d2YoQixDdCxGdCxFLEMpLEN0Kz02LHMuc3QmJihZdD14ZihZdCx6dCxiZSoyLEcpLHp0Kz00KSxpJiYoa3QrPTMsSXRba3QrK109TVtGdF0sSXRba3QrK109TVtGdCsxXSxJdFtrdCsrXT1NW0Z0KzJdKSxNdCYmKGd0W0p0KytdPTEsSnQrPTEpfWVsc2UgZm9yKGQ9V3QtQTtkPFd0O2QrKylGdD1kKjMsQj13ZihCLEN0LEZ0LEUsQyksQ3QrPTYscy5zdCYmKFl0PXhmKFl0LHp0LGQqMixHKSx6dCs9NCksaSYmKGt0Kz0zLEl0W2t0KytdPU1bRnRdLEl0W2t0KytdPU1bRnQrMV0sSXRba3QrK109TVtGdCsyXSksTXQmJihndFtKdCsrXT0xLEp0Kz0xKTtmb3IoZD1XdC0xO2Q+MDtkLT1BKUZ0PWQqMyxCPXdmKEIsQ3QsRnQsRSxDKSxDdCs9NixzLnN0JiYoWXQ9eGYoWXQsenQsZCoyLEcpLHp0Kz00KSxpJiYoa3QrPTMsSXRba3QrK109TVtGdF0sSXRba3QrK109TVtGdCsxXSxJdFtrdCsrXT1NW0Z0KzJdKSxNdCYmKGd0W0p0KytdPTEsSnQrPTEpO2lmKFYpe2xldCBiZT1XdDtmb3IoRnQ9YmUqMyxkPTA7ZDwyO2QrKylCPXdmKEIsQ3QsRnQsRSxDKSxDdCs9NixzLnN0JiYoWXQ9eGYoWXQsenQsYmUqMixHKSx6dCs9NCksaSYmKGt0Kz0zLEl0W2t0KytdPU1bRnRdLEl0W2t0KytdPU1bRnQrMV0sSXRba3QrK109TVtGdCsyXSksTXQmJihndFtKdCsrXT0xLEp0Kz0xKX1lbHNlIGZvcihkPUEtMTtkPj0wO2QtLSlGdD1kKjMsQj13ZihCLEN0LEZ0LEUsQyksQ3QrPTYscy5zdCYmKFl0PXhmKFl0LHp0LGQqMixHKSx6dCs9NCksaSYmKGt0Kz0zLEl0W2t0KytdPU1bRnRdLEl0W2t0KytdPU1bRnQrMV0sSXRba3QrK109TVtGdCsyXSksTXQmJihndFtKdCsrXT0xLEp0Kz0xKTtsZXQgZWU9UmZ0KEIscyxhKTtzLnN0JiYoZWUuYXR0cmlidXRlcy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6WXR9KSksaSYmKGVlLmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6SXR9KSksVSYmKGVlLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Z3R9KSk7bGV0IGNlPXRlLmNyZWF0ZVR5cGVkQXJyYXkodHQsSCo2KSxqZSxPZSxNZSxVZTtfPUIubGVuZ3RoLzM7bGV0IENlPTA7Zm9yKGQ9MDtkPF8tMTtkKz0yKXtqZT1kLFVlPShqZSsyKSVfO2xldCBiZT1sLmZyb21BcnJheShCLGplKjMsb0cpLG5pPWwuZnJvbUFycmF5KEIsVWUqMyxjNik7bC5lcXVhbHNFcHNpbG9uKGJlLG5pLEwuRVBTSUxPTjEwKXx8KE9lPShqZSsxKSVfLE1lPShPZSsyKSVfLGNlW0NlKytdPWplLGNlW0NlKytdPU9lLGNlW0NlKytdPVVlLGNlW0NlKytdPVVlLGNlW0NlKytdPU9lLGNlW0NlKytdPU1lKX1yZXR1cm4gZWUuaW5kaWNlcz1jZSxlZT13aS5jb21iaW5lSW5zdGFuY2VzKFtuZXcgTG4oe2dlb21ldHJ5OmZ9KSxuZXcgTG4oe2dlb21ldHJ5OmVlfSldKSxlZVswXX1mdW5jdGlvbiBhRyh0LGUsaSxuLHMpe2lmKGk9PT0wKXJldHVybiBYdC5jbG9uZSh0LHMpO2xldCBvPXJvLmNvbXB1dGVPcHRpb25zKHQsZSxpLDAsQTYsZDYpLHI9by5oZWlnaHQsYT1vLndpZHRoLGg9SWZ0O3JldHVybiByby5jb21wdXRlUG9zaXRpb24obyxuLCExLDAsMCxoWzBdKSxyby5jb21wdXRlUG9zaXRpb24obyxuLCExLDAsYS0xLGhbMV0pLHJvLmNvbXB1dGVQb3NpdGlvbihvLG4sITEsci0xLDAsaFsyXSkscm8uY29tcHV0ZVBvc2l0aW9uKG8sbiwhMSxyLTEsYS0xLGhbM10pLFh0LmZyb21DYXJ0ZXNpYW5BcnJheShoLG4scyl9ZnVuY3Rpb24gV0EodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucmVjdGFuZ2xlO2lmKHAudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIixlKSxYdC52YWxpZGF0ZShlKSxlLm5vcnRoPGUuc291dGgpdGhyb3cgbmV3IFkoIm9wdGlvbnMucmVjdGFuZ2xlLm5vcnRoIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG9wdGlvbnMucmVjdGFuZ2xlLnNvdXRoIik7bGV0IGk9Wih0LmhlaWdodCwwKSxuPVoodC5leHRydWRlZEhlaWdodCxpKTt0aGlzLl9yZWN0YW5nbGU9WHQuY2xvbmUoZSksdGhpcy5fZ3JhbnVsYXJpdHk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX3N1cmZhY2VIZWlnaHQ9TWF0aC5tYXgoaSxuKSx0aGlzLl9yb3RhdGlvbj1aKHQucm90YXRpb24sMCksdGhpcy5fc3RSb3RhdGlvbj1aKHQuc3RSb3RhdGlvbiwwKSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUoWih0LnZlcnRleEZvcm1hdCxPdC5ERUZBVUxUKSksdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oaSxuKSx0aGlzLl9zaGFkb3dWb2x1bWU9Wih0LnNoYWRvd1ZvbHVtZSwhMSksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUmVjdGFuZ2xlR2VvbWV0cnkiLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXZvaWQgMH1mdW5jdGlvbiBiZnQodCl7aWYodC5fc3RSb3RhdGlvbj09PTApcmV0dXJuWzAsMCwwLDEsMSwwXTtsZXQgZT1YdC5jbG9uZSh0Ll9yZWN0YW5nbGUsczYpLGk9dC5fZ3JhbnVsYXJpdHksbj10Ll9lbGxpcHNvaWQscz10Ll9yb3RhdGlvbi10Ll9zdFJvdGF0aW9uLG89YUcoZSxpLHMsbixzNikscj1nZnQ7clswXS54PW8ud2VzdCxyWzBdLnk9by5zb3V0aCxyWzFdLng9by53ZXN0LHJbMV0ueT1vLm5vcnRoLHJbMl0ueD1vLmVhc3QsclsyXS55PW8uc291dGg7bGV0IGE9dC5yZWN0YW5nbGUsaD1Ibi5mcm9tUm90YXRpb24odC5fc3RSb3RhdGlvbixUZnQpLEE9WHQuY2VudGVyKGEsTmZ0KTtmb3IobGV0IFI9MDtSPDM7KytSKXtsZXQgST1yW1JdO0kueC09QS5sb25naXR1ZGUsSS55LT1BLmxhdGl0dWRlLEhuLm11bHRpcGx5QnlWZWN0b3IoaCxJLEkpLEkueCs9QS5sb25naXR1ZGUsSS55Kz1BLmxhdGl0dWRlLEkueD0oSS54LWEud2VzdCkvYS53aWR0aCxJLnk9KEkueS1hLnNvdXRoKS9hLmhlaWdodH1sZXQgZD1yWzBdLGY9clsxXSxFPXJbMl0sXz1uZXcgQXJyYXkoNik7cmV0dXJuIG50LnBhY2soZCxfKSxudC5wYWNrKGYsXywyKSxudC5wYWNrKEUsXyw0KSxffXZhciBzRyxvNixyNixhNixBNixtZnQsZmZ0LEVmdCxvRyxjNixyRyxJZnQsZDYscGZ0LG02LGY2LGpjLHVmdCxuNixDZnQsczYsZ2Z0LFRmdCxOZnQsQUcsRTY9TygoKT0+e19pKCk7WGUoKTtIdCgpO3JpKCk7YWUoKTtvaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7eWkoKTtqaSgpO0VuKCk7dUEoKTtnbygpO2dBKCk7RGkoKTtfZSgpO2RjKCk7ZG4oKTtQYSgpO1hpKCk7JHMoKTtwbigpO25HKCk7THMoKTtzRz1uZXcgbCxvNj1uZXcgbCxyNj1uZXcgbCxhNj1uZXcgbCxBNj1uZXcgWHQsbWZ0PW5ldyBudCxmZnQ9bmV3IE50LEVmdD1uZXcgTnQ7b0c9bmV3IGwsYzY9bmV3IGw7ckc9bmV3IE90O0lmdD1bbmV3IGwsbmV3IGwsbmV3IGwsbmV3IGxdLGQ2PW5ldyB1dCxwZnQ9bmV3IHV0O1dBLnBhY2tlZExlbmd0aD1YdC5wYWNrZWRMZW5ndGgrb3QucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aCs3O1dBLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxYdC5wYWNrKHQuX3JlY3RhbmdsZSxlLGkpLGkrPVh0LnBhY2tlZExlbmd0aCxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX3N1cmZhY2VIZWlnaHQsZVtpKytdPXQuX3JvdGF0aW9uLGVbaSsrXT10Ll9zdFJvdGF0aW9uLGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2krK109dC5fc2hhZG93Vm9sdW1lPzE6MCxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTttNj1uZXcgWHQsZjY9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLGpjPXtyZWN0YW5nbGU6bTYsZWxsaXBzb2lkOmY2LHZlcnRleEZvcm1hdDpyRyxncmFudWxhcml0eTp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxyb3RhdGlvbjp2b2lkIDAsc3RSb3RhdGlvbjp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07V0EudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj1YdC51bnBhY2sodCxlLG02KTtlKz1YdC5wYWNrZWRMZW5ndGg7bGV0IHM9b3QudW5wYWNrKHQsZSxmNik7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPU90LnVucGFjayh0LGUsckcpO2UrPU90LnBhY2tlZExlbmd0aDtsZXQgcj10W2UrK10sYT10W2UrK10saD10W2UrK10sQT10W2UrK10sZD10W2UrK10sZj10W2UrK109PT0xLEU9dFtlXTtyZXR1cm4gbShpKT8oaS5fcmVjdGFuZ2xlPVh0LmNsb25lKG4saS5fcmVjdGFuZ2xlKSxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShvLGkuX3ZlcnRleEZvcm1hdCksaS5fZ3JhbnVsYXJpdHk9cixpLl9zdXJmYWNlSGVpZ2h0PWEsaS5fcm90YXRpb249aCxpLl9zdFJvdGF0aW9uPUEsaS5fZXh0cnVkZWRIZWlnaHQ9ZCxpLl9zaGFkb3dWb2x1bWU9ZixpLl9vZmZzZXRBdHRyaWJ1dGU9RT09PS0xP3ZvaWQgMDpFLGkpOihqYy5ncmFudWxhcml0eT1yLGpjLmhlaWdodD1hLGpjLnJvdGF0aW9uPWgsamMuc3RSb3RhdGlvbj1BLGpjLmV4dHJ1ZGVkSGVpZ2h0PWQsamMuc2hhZG93Vm9sdW1lPWYsamMub2Zmc2V0QXR0cmlidXRlPUU9PT0tMT92b2lkIDA6RSxuZXcgV0EoamMpKX07V0EuY29tcHV0ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgaT10LnJlY3RhbmdsZTtpZihwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsaSksWHQudmFsaWRhdGUoaSksaS5ub3J0aDxpLnNvdXRoKXRocm93IG5ldyBZKCJvcHRpb25zLnJlY3RhbmdsZS5ub3J0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBvcHRpb25zLnJlY3RhbmdsZS5zb3V0aCIpO2xldCBuPVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSkscz1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxvPVoodC5yb3RhdGlvbiwwKTtyZXR1cm4gYUcoaSxuLG8scyxlKX07dWZ0PW5ldyBsdCxuNj1uZXcgQWUsQ2Z0PW5ldyB1dDtXQS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtpZihMLmVxdWFsc0Vwc2lsb24odC5fcmVjdGFuZ2xlLm5vcnRoLHQuX3JlY3RhbmdsZS5zb3V0aCxMLkVQU0lMT04xMCl8fEwuZXF1YWxzRXBzaWxvbih0Ll9yZWN0YW5nbGUuZWFzdCx0Ll9yZWN0YW5nbGUud2VzdCxMLkVQU0lMT04xMCkpcmV0dXJuO2xldCBlPXQuX3JlY3RhbmdsZSxpPXQuX2VsbGlwc29pZCxuPXQuX3JvdGF0aW9uLHM9dC5fc3RSb3RhdGlvbixvPXQuX3ZlcnRleEZvcm1hdCxyPXJvLmNvbXB1dGVPcHRpb25zKGUsdC5fZ3JhbnVsYXJpdHksbixzLEE2LGQ2LHBmdCksYT11ZnQ7aWYocyE9PTB8fG4hPT0wKXtsZXQgXz1YdC5jZW50ZXIoZSxDZnQpLFI9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWxDYXJ0b2dyYXBoaWMoXyxvRyk7QWUuZnJvbUF4aXNBbmdsZShSLC1zLG42KSxsdC5mcm9tUXVhdGVybmlvbihuNixhKX1lbHNlIGx0LmNsb25lKGx0LklERU5USVRZLGEpO2xldCBoPXQuX3N1cmZhY2VIZWlnaHQsQT10Ll9leHRydWRlZEhlaWdodCxkPSFMLmVxdWFsc0Vwc2lsb24oaCxBLDAsTC5FUFNJTE9OMik7ci5sb25TY2FsYXI9MS90Ll9yZWN0YW5nbGUud2lkdGgsci5sYXRTY2FsYXI9MS90Ll9yZWN0YW5nbGUuaGVpZ2h0LHIudGFuZ2VudFJvdGF0aW9uTWF0cml4PWE7bGV0IGYsRTtpZihlPXQuX3JlY3RhbmdsZSxkKXtmPVpmdCh0LHIpO2xldCBfPU50LmZyb21SZWN0YW5nbGUzRChlLGksaCxFZnQpLFI9TnQuZnJvbVJlY3RhbmdsZTNEKGUsaSxBLGZmdCk7RT1OdC51bmlvbihfLFIpfWVsc2V7aWYoZj1sNih0LHIpLGYuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KGYuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsaCxpLCExKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBfPWYuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLFI9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsST1uZXcgVWludDhBcnJheShfLzMpLmZpbGwoUik7Zi5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkl9KX1FPU50LmZyb21SZWN0YW5nbGUzRChlLGksaCl9cmV0dXJuIG8ucG9zaXRpb258fGRlbGV0ZSBmLmF0dHJpYnV0ZXMucG9zaXRpb24sbmV3IHNlKHthdHRyaWJ1dGVzOmYuYXR0cmlidXRlcyxpbmRpY2VzOmYuaW5kaWNlcyxwcmltaXRpdmVUeXBlOmYucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTpFLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07V0EuY3JlYXRlU2hhZG93Vm9sdW1lPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10Ll9ncmFudWxhcml0eSxzPXQuX2VsbGlwc29pZCxvPWUobixzKSxyPWkobixzKTtyZXR1cm4gbmV3IFdBKHtyZWN0YW5nbGU6dC5fcmVjdGFuZ2xlLHJvdGF0aW9uOnQuX3JvdGF0aW9uLGVsbGlwc29pZDpzLHN0Um90YXRpb246dC5fc3RSb3RhdGlvbixncmFudWxhcml0eTpuLGV4dHJ1ZGVkSGVpZ2h0OnIsaGVpZ2h0Om8sdmVydGV4Rm9ybWF0Ok90LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O3M2PW5ldyBYdCxnZnQ9W25ldyBudCxuZXcgbnQsbmV3IG50XSxUZnQ9bmV3IEhuLE5mdD1uZXcgdXQ7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoV0EucHJvdG90eXBlLHtyZWN0YW5nbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3JvdGF0ZWRSZWN0YW5nbGUpfHwodGhpcy5fcm90YXRlZFJlY3RhbmdsZT1hRyh0aGlzLl9yZWN0YW5nbGUsdGhpcy5fZ3JhbnVsYXJpdHksdGhpcy5fcm90YXRpb24sdGhpcy5fZWxsaXBzb2lkKSksdGhpcy5fcm90YXRlZFJlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMpfHwodGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz1iZnQodGhpcykpLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHN9fX0pO0FHPVdBfSk7dmFyIGhHPXt9O0hlKGhHLHtkZWZhdWx0OigpPT5ZZnR9KTtmdW5jdGlvbiBGZnQodCxlKXtyZXR1cm4gbShlKSYmKHQ9QUcudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLHQuX3JlY3RhbmdsZT1YdC5jbG9uZSh0Ll9yZWN0YW5nbGUpLEFHLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBZZnQsY0c9TygoKT0+e210KCk7VmUoKTtwbigpO0U2KCk7WWZ0PUZmdH0pO2Z1bmN0aW9uIF82KHQsZSl7bGV0IGk9dC5fZWxsaXBzb2lkLG49ZS5oZWlnaHQscz1lLndpZHRoLG89ZS5ub3J0aENhcCxyPWUuc291dGhDYXAsYT1uLGg9MixBPTAsZD00O28mJihoLT0xLGEtPTEsQSs9MSxkLT0yKSxyJiYoaC09MSxhLT0xLEErPTEsZC09MiksQSs9aCpzKzIqYS1kO2xldCBmPW5ldyBGbG9hdDY0QXJyYXkoQSozKSxFPTAsXz0wLFIsST1WZnQ7aWYobylyby5jb21wdXRlUG9zaXRpb24oZSxpLCExLF8sMCxJKSxmW0UrK109SS54LGZbRSsrXT1JLnksZltFKytdPUkuejtlbHNlIGZvcihSPTA7UjxzO1IrKylyby5jb21wdXRlUG9zaXRpb24oZSxpLCExLF8sUixJKSxmW0UrK109SS54LGZbRSsrXT1JLnksZltFKytdPUkuejtmb3IoUj1zLTEsXz0xO188bjtfKyspcm8uY29tcHV0ZVBvc2l0aW9uKGUsaSwhMSxfLFIsSSksZltFKytdPUkueCxmW0UrK109SS55LGZbRSsrXT1JLno7aWYoXz1uLTEsIXIpZm9yKFI9cy0yO1I+PTA7Ui0tKXJvLmNvbXB1dGVQb3NpdGlvbihlLGksITEsXyxSLEkpLGZbRSsrXT1JLngsZltFKytdPUkueSxmW0UrK109SS56O2ZvcihSPTAsXz1uLTI7Xz4wO18tLSlyby5jb21wdXRlUG9zaXRpb24oZSxpLCExLF8sUixJKSxmW0UrK109SS54LGZbRSsrXT1JLnksZltFKytdPUkuejtsZXQgQz1mLmxlbmd0aC8zKjIsTj10ZS5jcmVhdGVUeXBlZEFycmF5KGYubGVuZ3RoLzMsQyksVD0wO2ZvcihsZXQgYj0wO2I8Zi5sZW5ndGgvMy0xO2IrKylOW1QrK109YixOW1QrK109YisxO05bVCsrXT1mLmxlbmd0aC8zLTEsTltUKytdPTA7bGV0IEY9bmV3IHNlKHthdHRyaWJ1dGVzOm5ldyB3ZSxwcmltaXRpdmVUeXBlOm5lLkxJTkVTfSk7cmV0dXJuIEYuYXR0cmlidXRlcy5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmZ9KSxGLmluZGljZXM9TixGfWZ1bmN0aW9uIEJmdCh0LGUpe2xldCBpPXQuX3N1cmZhY2VIZWlnaHQsbj10Ll9leHRydWRlZEhlaWdodCxzPXQuX2VsbGlwc29pZCxvPV82KHQsZSkscj1lLmhlaWdodCxhPWUud2lkdGgsaD11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoby5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxpLHMsITEpLEE9aC5sZW5ndGgsZD1uZXcgRmxvYXQ2NEFycmF5KEEqMik7ZC5zZXQoaCk7bGV0IGY9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KG8uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsbixzKTtkLnNldChmLEEpLG8uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9ZDtsZXQgRT1lLm5vcnRoQ2FwLF89ZS5zb3V0aENhcCxSPTQ7RSYmKFItPTEpLF8mJihSLT0xKTtsZXQgST0oZC5sZW5ndGgvMytSKSoyLEM9dGUuY3JlYXRlVHlwZWRBcnJheShkLmxlbmd0aC8zLEkpO0E9ZC5sZW5ndGgvNjtsZXQgTj0wO2ZvcihsZXQgRj0wO0Y8QS0xO0YrKylDW04rK109RixDW04rK109RisxLENbTisrXT1GK0EsQ1tOKytdPUYrQSsxO0NbTisrXT1BLTEsQ1tOKytdPTAsQ1tOKytdPUErQS0xLENbTisrXT1BLENbTisrXT0wLENbTisrXT1BO2xldCBUO2lmKEUpVD1yLTE7ZWxzZXtsZXQgRj1hLTE7Q1tOKytdPUYsQ1tOKytdPUYrQSxUPWErci0yfWlmKENbTisrXT1ULENbTisrXT1UK0EsIV8pe2xldCBGPWErVC0xO0NbTisrXT1GLENbTl09RitBfXJldHVybiBvLmluZGljZXM9QyxvfWZ1bmN0aW9uIEpmKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnJlY3RhbmdsZSxpPVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSksbj1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxzPVoodC5yb3RhdGlvbiwwKTtpZighbShlKSl0aHJvdyBuZXcgWSgicmVjdGFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKFh0LnZhbGlkYXRlKGUpLGUubm9ydGg8ZS5zb3V0aCl0aHJvdyBuZXcgWSgib3B0aW9ucy5yZWN0YW5nbGUubm9ydGggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3B0aW9ucy5yZWN0YW5nbGUuc291dGgiKTtsZXQgbz1aKHQuaGVpZ2h0LDApLHI9Wih0LmV4dHJ1ZGVkSGVpZ2h0LG8pO3RoaXMuX3JlY3RhbmdsZT1YdC5jbG9uZShlKSx0aGlzLl9ncmFudWxhcml0eT1pLHRoaXMuX2VsbGlwc29pZD1uLHRoaXMuX3N1cmZhY2VIZWlnaHQ9TWF0aC5tYXgobyxyKSx0aGlzLl9yb3RhdGlvbj1zLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKG8sciksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVJlY3RhbmdsZU91dGxpbmVHZW9tZXRyeSJ9dmFyIFNmdCxPZnQsVmZ0LEdmdCxSNixaNixQZixXZnQsbEcsSTY9TygoKT0+e19pKCk7SHQoKTtyaSgpO29pKCk7YnQoKTttdCgpO1Z0KCk7VmUoKTt5aSgpO2ppKCk7RW4oKTtnbygpO0RpKCk7X2UoKTtQYSgpO1hpKCk7cG4oKTtuRygpO1NmdD1uZXcgTnQsT2Z0PW5ldyBOdCxWZnQ9bmV3IGwsR2Z0PW5ldyBYdDtKZi5wYWNrZWRMZW5ndGg9WHQucGFja2VkTGVuZ3RoK290LnBhY2tlZExlbmd0aCs1O0pmLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxYdC5wYWNrKHQuX3JlY3RhbmdsZSxlLGkpLGkrPVh0LnBhY2tlZExlbmd0aCxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX3N1cmZhY2VIZWlnaHQsZVtpKytdPXQuX3JvdGF0aW9uLGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtSNj1uZXcgWHQsWjY9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLFBmPXtyZWN0YW5nbGU6UjYsZWxsaXBzb2lkOlo2LGdyYW51bGFyaXR5OnZvaWQgMCxoZWlnaHQ6dm9pZCAwLHJvdGF0aW9uOnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07SmYudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbj1YdC51bnBhY2sodCxlLFI2KTtlKz1YdC5wYWNrZWRMZW5ndGg7bGV0IHM9b3QudW5wYWNrKHQsZSxaNik7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPXRbZSsrXSxyPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZV07cmV0dXJuIG0oaSk/KGkuX3JlY3RhbmdsZT1YdC5jbG9uZShuLGkuX3JlY3RhbmdsZSksaS5fZWxsaXBzb2lkPW90LmNsb25lKHMsaS5fZWxsaXBzb2lkKSxpLl9zdXJmYWNlSGVpZ2h0PXIsaS5fcm90YXRpb249YSxpLl9leHRydWRlZEhlaWdodD1oLGkuX29mZnNldEF0dHJpYnV0ZT1BPT09LTE/dm9pZCAwOkEsaSk6KFBmLmdyYW51bGFyaXR5PW8sUGYuaGVpZ2h0PXIsUGYucm90YXRpb249YSxQZi5leHRydWRlZEhlaWdodD1oLFBmLm9mZnNldEF0dHJpYnV0ZT1BPT09LTE/dm9pZCAwOkEsbmV3IEpmKFBmKSl9O1dmdD1uZXcgdXQ7SmYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcmVjdGFuZ2xlLGk9dC5fZWxsaXBzb2lkLG49cm8uY29tcHV0ZU9wdGlvbnMoZSx0Ll9ncmFudWxhcml0eSx0Ll9yb3RhdGlvbiwwLEdmdCxXZnQpLHMsbztpZihMLmVxdWFsc0Vwc2lsb24oZS5ub3J0aCxlLnNvdXRoLEwuRVBTSUxPTjEwKXx8TC5lcXVhbHNFcHNpbG9uKGUuZWFzdCxlLndlc3QsTC5FUFNJTE9OMTApKXJldHVybjtsZXQgcj10Ll9zdXJmYWNlSGVpZ2h0LGE9dC5fZXh0cnVkZWRIZWlnaHQsaD0hTC5lcXVhbHNFcHNpbG9uKHIsYSwwLEwuRVBTSUxPTjIpLEE7aWYoaCl7aWYocz1CZnQodCxuKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBFPXMuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMsXz1uZXcgVWludDhBcnJheShFKTt0Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1A/Xz1fLmZpbGwoMSwwLEUvMik6KEE9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsXz1fLmZpbGwoQSkpLHMuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpffSl9bGV0IGQ9TnQuZnJvbVJlY3RhbmdsZTNEKGUsaSxyLE9mdCksZj1OdC5mcm9tUmVjdGFuZ2xlM0QoZSxpLGEsU2Z0KTtvPU50LnVuaW9uKGQsZil9ZWxzZXtpZihzPV82KHQsbikscy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQocy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxyLGksITEpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGQ9cy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGg7QT10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MTtsZXQgZj1uZXcgVWludDhBcnJheShkLzMpLmZpbGwoQSk7cy5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmZ9KX1vPU50LmZyb21SZWN0YW5nbGUzRChlLGkscil9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpzLmF0dHJpYnV0ZXMsaW5kaWNlczpzLmluZGljZXMscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpvLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07bEc9SmZ9KTt2YXIgZEc9e307SGUoZEcse2RlZmF1bHQ6KCk9Pk1mdH0pO2Z1bmN0aW9uIERmdCh0LGUpe3JldHVybiBtKGUpJiYodD1sRy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksdC5fcmVjdGFuZ2xlPVh0LmNsb25lKHQuX3JlY3RhbmdsZSksbEcuY3JlYXRlR2VvbWV0cnkodCl9dmFyIE1mdCxtRz1PKCgpPT57bXQoKTtWZSgpO3BuKCk7STYoKTtNZnQ9RGZ0fSk7ZnVuY3Rpb24gVWZ0KHQsZSxpLG4scyxvLHIpe2xldCBhPU9uLm51bWJlck9mUG9pbnRzKHQsZSxzKSxoLEE9aS5yZWQsZD1pLmdyZWVuLGY9aS5ibHVlLEU9aS5hbHBoYSxfPW4ucmVkLFI9bi5ncmVlbixJPW4uYmx1ZSxDPW4uYWxwaGE7aWYoWnQuZXF1YWxzKGksbikpe2ZvcihoPTA7aDxhO2grKylvW3IrK109WnQuZmxvYXRUb0J5dGUoQSksb1tyKytdPVp0LmZsb2F0VG9CeXRlKGQpLG9bcisrXT1adC5mbG9hdFRvQnl0ZShmKSxvW3IrK109WnQuZmxvYXRUb0J5dGUoRSk7cmV0dXJuIHJ9bGV0IE49KF8tQSkvYSxUPShSLWQpL2EsRj0oSS1mKS9hLGI9KEMtRSkvYSxHPXI7Zm9yKGg9MDtoPGE7aCsrKW9bRysrXT1adC5mbG9hdFRvQnl0ZShBK2gqTiksb1tHKytdPVp0LmZsb2F0VG9CeXRlKGQraCpUKSxvW0crK109WnQuZmxvYXRUb0J5dGUoZitoKkYpLG9bRysrXT1adC5mbG9hdFRvQnl0ZShFK2gqYik7cmV0dXJuIEd9ZnVuY3Rpb24gR1IodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zLGk9dC5jb2xvcnMsbj1aKHQuY29sb3JzUGVyVmVydGV4LCExKTtpZighbShlKXx8ZS5sZW5ndGg8Mil0aHJvdyBuZXcgWSgiQXQgbGVhc3QgdHdvIHBvc2l0aW9ucyBhcmUgcmVxdWlyZWQuIik7aWYobShpKSYmKG4mJmkubGVuZ3RoPGUubGVuZ3RofHwhbiYmaS5sZW5ndGg8ZS5sZW5ndGgtMSkpdGhyb3cgbmV3IFkoImNvbG9ycyBoYXMgYW4gaW52YWxpZCBsZW5ndGguIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fY29sb3JzPWksdGhpcy5fY29sb3JzUGVyVmVydGV4PW4sdGhpcy5fYXJjVHlwZT1aKHQuYXJjVHlwZSx0aS5HRU9ERVNJQyksdGhpcy5fZ3JhbnVsYXJpdHk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSx0aGlzLl9lbGxpcHNvaWQ9Wih0LmVsbGlwc29pZCxvdC5XR1M4NCksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeSI7bGV0IHM9MStlLmxlbmd0aCpsLnBhY2tlZExlbmd0aDtzKz1tKGkpPzEraS5sZW5ndGgqWnQucGFja2VkTGVuZ3RoOjEsdGhpcy5wYWNrZWRMZW5ndGg9cytvdC5wYWNrZWRMZW5ndGgrM312YXIgZmcsRWcsUWZ0LGZHLHA2PU8oKCk9PntCbCgpO19pKCk7SHQoKTtRbigpO29pKCk7YnQoKTttdCgpO1Z0KCk7VmUoKTt5aSgpO2ppKCk7RW4oKTtEaSgpO19lKCk7T2YoKTtYaSgpO0dSLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2k9WihpLDApO2xldCBuLHM9dC5fcG9zaXRpb25zLG89cy5sZW5ndGg7Zm9yKGVbaSsrXT1vLG49MDtuPG87KytuLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhzW25dLGUsaSk7bGV0IHI9dC5fY29sb3JzO2ZvcihvPW0ocik/ci5sZW5ndGg6MCxlW2krK109byxuPTA7bjxvOysrbixpKz1adC5wYWNrZWRMZW5ndGgpWnQucGFjayhyW25dLGUsaSk7cmV0dXJuIG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9jb2xvcnNQZXJWZXJ0ZXg/MTowLGVbaSsrXT10Ll9hcmNUeXBlLGVbaV09dC5fZ3JhbnVsYXJpdHksZX07R1IudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbixzPXRbZSsrXSxvPW5ldyBBcnJheShzKTtmb3Iobj0wO248czsrK24sZSs9bC5wYWNrZWRMZW5ndGgpb1tuXT1sLnVucGFjayh0LGUpO3M9dFtlKytdO2xldCByPXM+MD9uZXcgQXJyYXkocyk6dm9pZCAwO2ZvcihuPTA7bjxzOysrbixlKz1adC5wYWNrZWRMZW5ndGgpcltuXT1adC51bnBhY2sodCxlKTtsZXQgYT1vdC51bnBhY2sodCxlKTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IGg9dFtlKytdPT09MSxBPXRbZSsrXSxkPXRbZV07cmV0dXJuIG0oaSk/KGkuX3Bvc2l0aW9ucz1vLGkuX2NvbG9ycz1yLGkuX2VsbGlwc29pZD1hLGkuX2NvbG9yc1BlclZlcnRleD1oLGkuX2FyY1R5cGU9QSxpLl9ncmFudWxhcml0eT1kLGkpOm5ldyBHUih7cG9zaXRpb25zOm8sY29sb3JzOnIsZWxsaXBzb2lkOmEsY29sb3JzUGVyVmVydGV4OmgsYXJjVHlwZTpBLGdyYW51bGFyaXR5OmR9KX07Zmc9bmV3IEFycmF5KDIpLEVnPW5ldyBBcnJheSgyKSxRZnQ9e3Bvc2l0aW9uczpmZyxoZWlnaHQ6RWcsZWxsaXBzb2lkOnZvaWQgMCxtaW5EaXN0YW5jZTp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwfTtHUi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsaT10Ll9jb2xvcnMsbj10Ll9jb2xvcnNQZXJWZXJ0ZXgscz10Ll9hcmNUeXBlLG89dC5fZ3JhbnVsYXJpdHkscj10Ll9lbGxpcHNvaWQsYT1MLmNob3JkTGVuZ3RoKG8sci5tYXhpbXVtUmFkaXVzKSxoPW0oaSkmJiFuLEEsZD1lLmxlbmd0aCxmLEUsXyxSLEk9MDtpZihzPT09dGkuR0VPREVTSUN8fHM9PT10aS5SSFVNQil7bGV0IGIsRyxNO3M9PT10aS5HRU9ERVNJQz8oYj1MLmNob3JkTGVuZ3RoKG8sci5tYXhpbXVtUmFkaXVzKSxHPU9uLm51bWJlck9mUG9pbnRzLE09T24uZ2VuZXJhdGVBcmMpOihiPW8sRz1Pbi5udW1iZXJPZlBvaW50c1JodW1iTGluZSxNPU9uLmdlbmVyYXRlUmh1bWJBcmMpO2xldCBRPU9uLmV4dHJhY3RIZWlnaHRzKGUsciksVT1RZnQ7aWYocz09PXRpLkdFT0RFU0lDP1UubWluRGlzdGFuY2U9YTpVLmdyYW51bGFyaXR5PW8sVS5lbGxpcHNvaWQ9cixoKXtsZXQgaz0wO2ZvcihBPTA7QTxkLTE7QSsrKWsrPUcoZVtBXSxlW0ErMV0sYikrMTtmPW5ldyBGbG9hdDY0QXJyYXkoayozKSxfPW5ldyBVaW50OEFycmF5KGsqNCksVS5wb3NpdGlvbnM9ZmcsVS5oZWlnaHQ9RWc7bGV0IHk9MDtmb3IoQT0wO0E8ZC0xOysrQSl7ZmdbMF09ZVtBXSxmZ1sxXT1lW0ErMV0sRWdbMF09UVtBXSxFZ1sxXT1RW0ErMV07bGV0IGM9TShVKTtpZihtKGkpKXtsZXQgZz1jLmxlbmd0aC8zO1I9aVtBXTtmb3IobGV0IFY9MDtWPGc7KytWKV9beSsrXT1adC5mbG9hdFRvQnl0ZShSLnJlZCksX1t5KytdPVp0LmZsb2F0VG9CeXRlKFIuZ3JlZW4pLF9beSsrXT1adC5mbG9hdFRvQnl0ZShSLmJsdWUpLF9beSsrXT1adC5mbG9hdFRvQnl0ZShSLmFscGhhKX1mLnNldChjLEkpLEkrPWMubGVuZ3RofX1lbHNlIGlmKFUucG9zaXRpb25zPWUsVS5oZWlnaHQ9USxmPW5ldyBGbG9hdDY0QXJyYXkoTShVKSksbShpKSl7Zm9yKF89bmV3IFVpbnQ4QXJyYXkoZi5sZW5ndGgvMyo0KSxBPTA7QTxkLTE7KytBKXtsZXQgeT1lW0FdLGM9ZVtBKzFdLGc9aVtBXSxWPWlbQSsxXTtJPVVmdCh5LGMsZyxWLGEsXyxJKX1sZXQgaz1pW2QtMV07X1tJKytdPVp0LmZsb2F0VG9CeXRlKGsucmVkKSxfW0krK109WnQuZmxvYXRUb0J5dGUoay5ncmVlbiksX1tJKytdPVp0LmZsb2F0VG9CeXRlKGsuYmx1ZSksX1tJKytdPVp0LmZsb2F0VG9CeXRlKGsuYWxwaGEpfX1lbHNle0U9aD9kKjItMjpkLGY9bmV3IEZsb2F0NjRBcnJheShFKjMpLF89bShpKT9uZXcgVWludDhBcnJheShFKjQpOnZvaWQgMDtsZXQgYj0wLEc9MDtmb3IoQT0wO0E8ZDsrK0Epe2xldCBNPWVbQV07aWYoaCYmQT4wJiYobC5wYWNrKE0sZixiKSxiKz0zLFI9aVtBLTFdLF9bRysrXT1adC5mbG9hdFRvQnl0ZShSLnJlZCksX1tHKytdPVp0LmZsb2F0VG9CeXRlKFIuZ3JlZW4pLF9bRysrXT1adC5mbG9hdFRvQnl0ZShSLmJsdWUpLF9bRysrXT1adC5mbG9hdFRvQnl0ZShSLmFscGhhKSksaCYmQT09PWQtMSlicmVhaztsLnBhY2soTSxmLGIpLGIrPTMsbShpKSYmKFI9aVtBXSxfW0crK109WnQuZmxvYXRUb0J5dGUoUi5yZWQpLF9bRysrXT1adC5mbG9hdFRvQnl0ZShSLmdyZWVuKSxfW0crK109WnQuZmxvYXRUb0J5dGUoUi5ibHVlKSxfW0crK109WnQuZmxvYXRUb0J5dGUoUi5hbHBoYSkpfX1sZXQgQz1uZXcgd2U7Qy5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmZ9KSxtKGkpJiYoQy5jb2xvcj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LHZhbHVlczpfLG5vcm1hbGl6ZTohMH0pKSxFPWYubGVuZ3RoLzM7bGV0IE49KEUtMSkqMixUPXRlLmNyZWF0ZVR5cGVkQXJyYXkoRSxOKSxGPTA7Zm9yKEE9MDtBPEUtMTsrK0EpVFtGKytdPUEsVFtGKytdPUErMTtyZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOkMsaW5kaWNlczpULHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6TnQuZnJvbVBvaW50cyhlKX0pfTtmRz1HUn0pO3ZhciBFRz17fTtIZShFRyx7ZGVmYXVsdDooKT0+TGZ0fSk7ZnVuY3Rpb24ga2Z0KHQsZSl7cmV0dXJuIG0oZSkmJih0PWZHLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSxmRy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgTGZ0LF9HPU8oKCk9PnttdCgpO1ZlKCk7cDYoKTtMZnQ9a2Z0fSk7ZnVuY3Rpb24gamYodCl7bGV0IGU9Wih0LnJhZGl1cywxKSxuPXtyYWRpaTpuZXcgbChlLGUsZSksc3RhY2tQYXJ0aXRpb25zOnQuc3RhY2tQYXJ0aXRpb25zLHNsaWNlUGFydGl0aW9uczp0LnNsaWNlUGFydGl0aW9ucyx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXR9O3RoaXMuX2VsbGlwc29pZEdlb21ldHJ5PW5ldyBOcihuKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVTcGhlcmVHZW9tZXRyeSJ9dmFyIHlmdCxIYyxSRyx1Nj1PKCgpPT57SHQoKTthZSgpO2J0KCk7bXQoKTtzZygpO0xzKCk7amYucGFja2VkTGVuZ3RoPU5yLnBhY2tlZExlbmd0aDtqZi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksTnIucGFjayh0Ll9lbGxpcHNvaWRHZW9tZXRyeSxlLGkpfTt5ZnQ9bmV3IE5yLEhjPXtyYWRpdXM6dm9pZCAwLHJhZGlpOm5ldyBsLHZlcnRleEZvcm1hdDpuZXcgT3Qsc3RhY2tQYXJ0aXRpb25zOnZvaWQgMCxzbGljZVBhcnRpdGlvbnM6dm9pZCAwfTtqZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2xldCBuPU5yLnVucGFjayh0LGUseWZ0KTtyZXR1cm4gSGMudmVydGV4Rm9ybWF0PU90LmNsb25lKG4uX3ZlcnRleEZvcm1hdCxIYy52ZXJ0ZXhGb3JtYXQpLEhjLnN0YWNrUGFydGl0aW9ucz1uLl9zdGFja1BhcnRpdGlvbnMsSGMuc2xpY2VQYXJ0aXRpb25zPW4uX3NsaWNlUGFydGl0aW9ucyxtKGkpPyhsLmNsb25lKG4uX3JhZGlpLEhjLnJhZGlpKSxpLl9lbGxpcHNvaWRHZW9tZXRyeT1uZXcgTnIoSGMpLGkpOihIYy5yYWRpdXM9bi5fcmFkaWkueCxuZXcgamYoSGMpKX07amYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIE5yLmNyZWF0ZUdlb21ldHJ5KHQuX2VsbGlwc29pZEdlb21ldHJ5KX07Ukc9amZ9KTt2YXIgWkc9e307SGUoWkcse2RlZmF1bHQ6KCk9PnhmdH0pO2Z1bmN0aW9uIHdmdCh0LGUpe3JldHVybiBtKGUpJiYodD1SRy51bnBhY2sodCxlKSksUkcuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHhmdCxJRz1PKCgpPT57bXQoKTt1NigpO3hmdD13ZnR9KTtmdW5jdGlvbiBIZih0KXtsZXQgZT1aKHQucmFkaXVzLDEpLG49e3JhZGlpOm5ldyBsKGUsZSxlKSxzdGFja1BhcnRpdGlvbnM6dC5zdGFja1BhcnRpdGlvbnMsc2xpY2VQYXJ0aXRpb25zOnQuc2xpY2VQYXJ0aXRpb25zLHN1YmRpdmlzaW9uczp0LnN1YmRpdmlzaW9uc307dGhpcy5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IGphKG4pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeSJ9dmFyIFBmdCxwZCxwRyxDNj1PKCgpPT57SHQoKTthZSgpO2J0KCk7bXQoKTtaVigpO0hmLnBhY2tlZExlbmd0aD1qYS5wYWNrZWRMZW5ndGg7SGYucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLGphLnBhY2sodC5fZWxsaXBzb2lkR2VvbWV0cnksZSxpKX07UGZ0PW5ldyBqYSxwZD17cmFkaXVzOnZvaWQgMCxyYWRpaTpuZXcgbCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDAsc3ViZGl2aXNpb25zOnZvaWQgMH07SGYudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1qYS51bnBhY2sodCxlLFBmdCk7cmV0dXJuIHBkLnN0YWNrUGFydGl0aW9ucz1uLl9zdGFja1BhcnRpdGlvbnMscGQuc2xpY2VQYXJ0aXRpb25zPW4uX3NsaWNlUGFydGl0aW9ucyxwZC5zdWJkaXZpc2lvbnM9bi5fc3ViZGl2aXNpb25zLG0oaSk/KGwuY2xvbmUobi5fcmFkaWkscGQucmFkaWkpLGkuX2VsbGlwc29pZEdlb21ldHJ5PW5ldyBqYShwZCksaSk6KHBkLnJhZGl1cz1uLl9yYWRpaS54LG5ldyBIZihwZCkpfTtIZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtyZXR1cm4gamEuY3JlYXRlR2VvbWV0cnkodC5fZWxsaXBzb2lkR2VvbWV0cnkpfTtwRz1IZn0pO3ZhciB1Rz17fTtIZSh1Ryx7ZGVmYXVsdDooKT0+amZ0fSk7ZnVuY3Rpb24gSmZ0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXBHLnVucGFjayh0LGUpKSxwRy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgamZ0LENHPU8oKCk9PnttdCgpO0M2KCk7amZ0PUpmdH0pO3ZhciBnRz17fTtIZShnRyx7ZGVmYXVsdDooKT0+ZEV0fSk7ZnVuY3Rpb24gS2Z0KHQsZSxpLG4scyxvLHIpe2xldCBhPXQubGVuZ3RoLGg9bmV3IEZsb2F0NjRBcnJheShhKjMpO2ZvcihsZXQgQT0wO0E8YTsrK0Epe2xldCBkPXRbQV0sZj1lW0FdLEU9aVtBXSxfPUwubGVycChuLndlc3Qsbi5lYXN0LGQvQlIpLFI9TC5sZXJwKG4uc291dGgsbi5ub3J0aCxmL0JSKSxJPUwubGVycChzLG8sRS9CUiksQz11dC5mcm9tUmFkaWFucyhfLFIsSSx2ZnQpLE49ci5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihDLHpmdCk7bC5wYWNrKE4saCxBKjMpfXJldHVybiBofWZ1bmN0aW9uIFhmdCh0KXtsZXQgZT10Lmxlbmd0aCxpPW5ldyBVaW50MzJBcnJheShlKzEpLG49MDtmb3IobGV0IHM9MDtzPGU7KytzKWlbc109bixuKz10W3NdO3JldHVybiBpW2VdPW4saX1mdW5jdGlvbiB0RXQodCxlLGksbil7bGV0IHM9bi5sZW5ndGgsbz10Lmxlbmd0aCxyPW5ldyBVaW50OEFycmF5KG8pLGE9cWZ0LGg9JGZ0LEE9MDtmb3IobGV0IGY9MDtmPHM7ZisrKXtsZXQgRT1uW2ZdLF89RTtmb3IobGV0IFI9MTtSPEU7UisrKXtsZXQgST1BK1IsQz1JLTE7aC5sb25naXR1ZGU9dFtJXSxoLmxhdGl0dWRlPWVbSV0sYS5sb25naXR1ZGU9dFtDXSxhLmxhdGl0dWRlPWVbQ10sdXQuZXF1YWxzKGgsYSkmJihfLS0scltDXT0xKX1uW2ZdPV8sQSs9RX1sZXQgZD0wO2ZvcihsZXQgZj0wO2Y8bztmKyspcltmXSE9PTEmJih0W2RdPXRbZl0sZVtkXT1lW2ZdLGlbZF09aVtmXSxkKyspfWZ1bmN0aW9uIEY2KHQpe2xldCBlPXQqOCxpPWUqMyxuPWUqNDt0aGlzLnN0YXJ0RWxsaXBzb2lkTm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KGkpLHRoaXMuZW5kRWxsaXBzb2lkTm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KGkpLHRoaXMuc3RhcnRQb3NpdGlvbkFuZEhlaWdodHM9bmV3IEZsb2F0MzJBcnJheShuKSx0aGlzLnN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkcz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMuZW5kUG9zaXRpb25BbmRIZWlnaHRzPW5ldyBGbG9hdDMyQXJyYXkobiksdGhpcy5lbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRocz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMudmVydGV4QmF0Y2hJZHM9bmV3IFVpbnQxNkFycmF5KGUpLHRoaXMuaW5kaWNlcz10ZS5jcmVhdGVUeXBlZEFycmF5KGUsMzYqdCksdGhpcy52ZWMzT2Zmc2V0PTAsdGhpcy52ZWM0T2Zmc2V0PTAsdGhpcy5iYXRjaElkT2Zmc2V0PTAsdGhpcy5pbmRleE9mZnNldD0wLHRoaXMudm9sdW1lU3RhcnRJbmRleD0wfWZ1bmN0aW9uIFQ2KHQsZSxpLG4scyl7bGV0IG89bC5zdWJ0cmFjdChpLGUsZUV0KSxyPWwuc3VidHJhY3QoZSx0LGc2KTtyZXR1cm4gbC5ub3JtYWxpemUobyxvKSxsLm5vcm1hbGl6ZShyLHIpLGwuZG90KG8scik8SGZ0JiYocj1sLm11bHRpcGx5QnlTY2FsYXIociwtMSxnNikpLGwuYWRkKG8scixzKSxsLmVxdWFscyhzLGwuWkVSTykmJihzPWwuc3VidHJhY3QodCxlKSksbC5jcm9zcyhzLG4scyksbC5jcm9zcyhuLHMscyksbC5ub3JtYWxpemUocyxzKSxzfWZ1bmN0aW9uIGxFdCh0LGUpe2xldCBpPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbj1uZXcgVWludDE2QXJyYXkodC53aWR0aHMpLHM9bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxvPW5ldyBVaW50MTZBcnJheSh0LmJhdGNoSWRzKSxyPXJFdCxhPWFFdCxoPUFFdCxBPW5ldyBGbG9hdDY0QXJyYXkodC5wYWNrZWRCdWZmZXIpLGQ9MCxmPUFbZCsrXSxFPUFbZCsrXTtYdC51bnBhY2soQSxkLHIpLGQrPVh0LnBhY2tlZExlbmd0aCxvdC51bnBhY2soQSxkLGEpLGQrPW90LnBhY2tlZExlbmd0aCxsLnVucGFjayhBLGQsaCk7bGV0IF8sUj1pLmxlbmd0aC8zLEk9aS5zdWJhcnJheSgwLFIpLEM9aS5zdWJhcnJheShSLDIqUiksTj1pLnN1YmFycmF5KDIqUiwzKlIpO1lpLnppZ1phZ0RlbHRhRGVjb2RlKEksQyxOKSx0RXQoSSxDLE4scyk7bGV0IFQ9cy5sZW5ndGgsRj0wO2ZvcihfPTA7XzxUO18rKyl7bGV0IGM9c1tfXTtGKz1jLTF9bGV0IGI9bmV3IEY2KEYpLEc9S2Z0KEksQyxOLHIsZixFLGEsaCk7Uj1JLmxlbmd0aDtsZXQgTT1uZXcgRmxvYXQzMkFycmF5KFIqMyk7Zm9yKF89MDtfPFI7KytfKU1bXyozXT1HW18qM10taC54LE1bXyozKzFdPUdbXyozKzFdLWgueSxNW18qMysyXT1HW18qMysyXS1oLno7bGV0IFE9MCxVPTA7Zm9yKF89MDtfPFQ7XysrKXtsZXQgYz1zW19dLTEsZz1uW19dKi41LFY9b1tfXSxEPVE7Zm9yKGxldCB3PTA7dzxjO3crKyl7bGV0IHg9bC51bnBhY2soTSxRLGhFdCksSD1sLnVucGFjayhNLFErMyxjRXQpLGo9TltVXSxYPU5bVSsxXTtqPUwubGVycChmLEUsai9CUiksWD1MLmxlcnAoZixFLFgvQlIpLFUrKztsZXQgdHQ9X2csQj1SZztpZih3PT09MCl7bGV0IEl0PUQrYyozLGd0PWwudW5wYWNrKE0sSXQsX2cpO2lmKGwuZXF1YWxzKGd0LHgpKWwudW5wYWNrKE0sSXQtMyx0dCk7ZWxzZXtsZXQgWXQ9bC5zdWJ0cmFjdCh4LEgsX2cpO3R0PWwuYWRkKFl0LHgsX2cpfX1lbHNlIGwudW5wYWNrKE0sUS0zLHR0KTtpZih3PT09Yy0xKXtsZXQgSXQ9bC51bnBhY2soTSxELFJnKTtpZihsLmVxdWFscyhJdCxIKSlsLnVucGFjayhNLEQrMyxCKTtlbHNle2xldCBndD1sLnN1YnRyYWN0KEgseCxSZyk7Qj1sLmFkZChndCxILFJnKX19ZWxzZSBsLnVucGFjayhNLFErNixCKTtiLmFkZFZvbHVtZSh0dCx4LEgsQixqLFgsZyxWLGgsYSksUSs9M31RKz0zLFUrK31sZXQgaz1iLmluZGljZXM7ZS5wdXNoKGIuc3RhcnRFbGxpcHNvaWROb3JtYWxzLmJ1ZmZlciksZS5wdXNoKGIuZW5kRWxsaXBzb2lkTm9ybWFscy5idWZmZXIpLGUucHVzaChiLnN0YXJ0UG9zaXRpb25BbmRIZWlnaHRzLmJ1ZmZlciksZS5wdXNoKGIuc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzLmJ1ZmZlciksZS5wdXNoKGIuZW5kUG9zaXRpb25BbmRIZWlnaHRzLmJ1ZmZlciksZS5wdXNoKGIuZW5kRmFjZU5vcm1hbEFuZEhhbGZXaWR0aHMuYnVmZmVyKSxlLnB1c2goYi52ZXJ0ZXhCYXRjaElkcy5idWZmZXIpLGUucHVzaChrLmJ1ZmZlcik7bGV0IHk9e2luZGV4RGF0YXR5cGU6ay5CWVRFU19QRVJfRUxFTUVOVD09PTI/dGUuVU5TSUdORURfU0hPUlQ6dGUuVU5TSUdORURfSU5ULHN0YXJ0RWxsaXBzb2lkTm9ybWFsczpiLnN0YXJ0RWxsaXBzb2lkTm9ybWFscy5idWZmZXIsZW5kRWxsaXBzb2lkTm9ybWFsczpiLmVuZEVsbGlwc29pZE5vcm1hbHMuYnVmZmVyLHN0YXJ0UG9zaXRpb25BbmRIZWlnaHRzOmIuc3RhcnRQb3NpdGlvbkFuZEhlaWdodHMuYnVmZmVyLHN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkczpiLnN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkcy5idWZmZXIsZW5kUG9zaXRpb25BbmRIZWlnaHRzOmIuZW5kUG9zaXRpb25BbmRIZWlnaHRzLmJ1ZmZlcixlbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRoczpiLmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzLmJ1ZmZlcix2ZXJ0ZXhCYXRjaElkczpiLnZlcnRleEJhdGNoSWRzLmJ1ZmZlcixpbmRpY2VzOmsuYnVmZmVyfTtpZih0LmtlZXBEZWNvZGVkUG9zaXRpb25zKXtsZXQgYz1YZnQocyk7ZS5wdXNoKEcuYnVmZmVyLGMuYnVmZmVyKSx5PWVzKHkse2RlY29kZWRQb3NpdGlvbnM6Ry5idWZmZXIsZGVjb2RlZFBvc2l0aW9uT2Zmc2V0czpjLmJ1ZmZlcn0pfXJldHVybiB5fXZhciBCUixIZnQsdmZ0LHpmdCxxZnQsJGZ0LGc2LGVFdCxZNixONixiNixpRXQsbkV0LHNFdCxvRXQsckV0LGFFdCxBRXQsX2csaEV0LGNFdCxSZyxkRXQsVEc9TygoKT0+e29oKCk7SHQoKTtyaSgpO0tBKCk7VmUoKTtEaSgpO19lKCk7cG4oKTtOcygpO0JSPTMyNzY3LEhmdD1NYXRoLmNvcyhMLnRvUmFkaWFucygxNTApKSx2ZnQ9bmV3IHV0LHpmdD1uZXcgbDtxZnQ9bmV3IHV0LCRmdD1uZXcgdXQ7ZzY9bmV3IGwsZUV0PW5ldyBsO1k2PVswLDIsNiwwLDYsNCwwLDEsMywwLDMsMiwwLDQsNSwwLDUsMSw1LDMsMSw1LDcsMyw3LDUsNCw3LDQsNiw3LDYsMiw3LDIsM10sTjY9WTYubGVuZ3RoLGI2PW5ldyBsLGlFdD1uZXcgbCxuRXQ9bmV3IGwsc0V0PW5ldyBsLG9FdD1uZXcgbDtGNi5wcm90b3R5cGUuYWRkVm9sdW1lPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIsYSxoLEEpe2xldCBkPWwuYWRkKGUsaCxiNiksZj1BLmdlb2RldGljU3VyZmFjZU5vcm1hbChkLGlFdCk7ZD1sLmFkZChpLGgsYjYpO2xldCBFPUEuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGQsc0V0KSxfPVQ2KHQsZSxpLGYsbkV0KSxSPVQ2KG4saSxlLEUsb0V0KSxJPXRoaXMuc3RhcnRFbGxpcHNvaWROb3JtYWxzLEM9dGhpcy5lbmRFbGxpcHNvaWROb3JtYWxzLE49dGhpcy5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cyxUPXRoaXMuc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzLEY9dGhpcy5lbmRQb3NpdGlvbkFuZEhlaWdodHMsYj10aGlzLmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzLEc9dGhpcy52ZXJ0ZXhCYXRjaElkcyxNPXRoaXMuYmF0Y2hJZE9mZnNldCxRPXRoaXMudmVjM09mZnNldCxVPXRoaXMudmVjNE9mZnNldCxrO2ZvcihrPTA7azw4O2srKylsLnBhY2soZixJLFEpLGwucGFjayhFLEMsUSksbC5wYWNrKGUsTixVKSxOW1UrM109cyxsLnBhY2soaSxGLFUpLEZbVSszXT1vLGwucGFjayhfLFQsVSksVFtVKzNdPWssbC5wYWNrKFIsYixVKSxiW1UrM109cixHW00rK109YSxRKz0zLFUrPTQ7dGhpcy5iYXRjaElkT2Zmc2V0PU0sdGhpcy52ZWMzT2Zmc2V0PVEsdGhpcy52ZWM0T2Zmc2V0PVU7bGV0IHk9dGhpcy5pbmRpY2VzLGM9dGhpcy52b2x1bWVTdGFydEluZGV4LGc9dGhpcy5pbmRleE9mZnNldDtmb3Ioaz0wO2s8TjY7aysrKXlbZytrXT1ZNltrXStjO3RoaXMudm9sdW1lU3RhcnRJbmRleCs9OCx0aGlzLmluZGV4T2Zmc2V0Kz1ONn07ckV0PW5ldyBYdCxhRXQ9bmV3IG90LEFFdD1uZXcgbCxfZz1uZXcgbCxoRXQ9bmV3IGwsY0V0PW5ldyBsLFJnPW5ldyBsO2RFdD1XaShsRXQpfSk7ZnVuY3Rpb24gbUV0KHQpe3RoaXMub2Zmc2V0PXQub2Zmc2V0LHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLmNvbG9yPXQuY29sb3IsdGhpcy5iYXRjaElkcz10LmJhdGNoSWRzfXZhciBTNixPNj1PKCgpPT57UzY9bUV0fSk7dmFyIE5HPXt9O0hlKE5HLHtkZWZhdWx0OigpPT5GRXR9KTtmdW5jdGlvbiBaRXQodCxlKXtsZXQgaT1lKmZFdCxuPWwudW5wYWNrKHQsaSxJZyk7aSs9bC5wYWNrZWRMZW5ndGg7bGV0IHM9YXQudW5wYWNrKHQsaSxuYS5tb2RlbE1hdHJpeCk7YXQubXVsdGlwbHlCeVNjYWxlKHMsbixzKTtsZXQgbz1uYS5ib3VuZGluZ1ZvbHVtZTtyZXR1cm4gbC5jbG9uZShsLlpFUk8sby5jZW50ZXIpLG8ucmFkaXVzPU1hdGguc3FydCgzKSxuYX1mdW5jdGlvbiBJRXQodCxlKXtsZXQgaT1lKkVFdCxuPXRbaSsrXSxzPXRbaSsrXSxvPWwuZnJvbUVsZW1lbnRzKG4sbixzLElnKSxyPWF0LnVucGFjayh0LGksbmEubW9kZWxNYXRyaXgpO2F0Lm11bHRpcGx5QnlTY2FsZShyLG8scik7bGV0IGE9bmEuYm91bmRpbmdWb2x1bWU7cmV0dXJuIGwuY2xvbmUobC5aRVJPLGEuY2VudGVyKSxhLnJhZGl1cz1NYXRoLnNxcnQoMiksbmF9ZnVuY3Rpb24gcEV0KHQsZSl7bGV0IGk9ZSpfRXQsbj1sLnVucGFjayh0LGksSWcpO2krPWwucGFja2VkTGVuZ3RoO2xldCBzPWF0LnVucGFjayh0LGksbmEubW9kZWxNYXRyaXgpO2F0Lm11bHRpcGx5QnlTY2FsZShzLG4scyk7bGV0IG89bmEuYm91bmRpbmdWb2x1bWU7cmV0dXJuIGwuY2xvbmUobC5aRVJPLG8uY2VudGVyKSxvLnJhZGl1cz0xLG5hfWZ1bmN0aW9uIHVFdCh0LGUpe2xldCBpPWUqUkV0LG49dFtpKytdLHM9bC51bnBhY2sodCxpLElnKSxvPWF0LmZyb21UcmFuc2xhdGlvbihzLG5hLm1vZGVsTWF0cml4KTthdC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlKG8sbixvKTtsZXQgcj1uYS5ib3VuZGluZ1ZvbHVtZTtyZXR1cm4gbC5jbG9uZShsLlpFUk8sci5jZW50ZXIpLHIucmFkaXVzPTEsbmF9ZnVuY3Rpb24gWmcodCxlLGksbixzKXtpZighbShlKSlyZXR1cm47bGV0IG89aS5sZW5ndGgscj1uLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGE9bi5pbmRpY2VzLGg9dC5wb3NpdGlvbnMsQT10LnZlcnRleEJhdGNoSWRzLGQ9dC5pbmRpY2VzLGY9dC5iYXRjaElkcyxFPXQuYmF0Y2hUYWJsZUNvbG9ycyxfPXQuYmF0Y2hlZEluZGljZXMsUj10LmluZGV4T2Zmc2V0cyxJPXQuaW5kZXhDb3VudHMsQz10LmJvdW5kaW5nVm9sdW1lcyxOPXQubW9kZWxNYXRyaXgsVD10LmNlbnRlcixGPXQucG9zaXRpb25PZmZzZXQsYj10LmJhdGNoSWRJbmRleCxHPXQuaW5kZXhPZmZzZXQsTT10LmJhdGNoZWRJbmRpY2VzT2Zmc2V0O2ZvcihsZXQgUT0wO1E8bzsrK1Epe2xldCBVPXMoZSxRKSxrPVUubW9kZWxNYXRyaXg7YXQubXVsdGlwbHkoTixrLGspO2xldCB5PWlbUV0sYz1yLmxlbmd0aDtmb3IobGV0IEQ9MDtEPGM7RCs9Myl7bGV0IHc9bC51bnBhY2socixELENFdCk7YXQubXVsdGlwbHlCeVBvaW50KGssdyx3KSxsLnN1YnRyYWN0KHcsVCx3KSxsLnBhY2sodyxoLEYqMytEKSxBW2IrK109eX1sZXQgZz1hLmxlbmd0aDtmb3IobGV0IEQ9MDtEPGc7KytEKWRbRytEXT1hW0RdK0Y7bGV0IFY9UStNO19bVl09bmV3IFM2KHtvZmZzZXQ6Ryxjb3VudDpnLGNvbG9yOlp0LmZyb21SZ2JhKEVbeV0pLGJhdGNoSWRzOlt5XX0pLGZbVl09eSxSW1ZdPUcsSVtWXT1nLENbVl09TnQudHJhbnNmb3JtKFUuYm91bmRpbmdWb2x1bWUsayksRis9Yy8zLEcrPWd9dC5wb3NpdGlvbk9mZnNldD1GLHQuYmF0Y2hJZEluZGV4PWIsdC5pbmRleE9mZnNldD1HLHQuYmF0Y2hlZEluZGljZXNPZmZzZXQrPW99ZnVuY3Rpb24gZ0V0KHQpe2xldCBlPW5ldyBGbG9hdDY0QXJyYXkodCksaT0wO2wudW5wYWNrKGUsaSxWNiksaSs9bC5wYWNrZWRMZW5ndGgsYXQudW5wYWNrKGUsaSxHNil9ZnVuY3Rpb24gVEV0KHQpe2xldCBlPXQubGVuZ3RoLGk9MDtmb3IobGV0IG49MDtuPGU7KytuKWkrPVp0LnBhY2tlZExlbmd0aCszK3Rbbl0uYmF0Y2hJZHMubGVuZ3RoO3JldHVybiBpfWZ1bmN0aW9uIE5FdCh0LGUsaSl7bGV0IG49aS5sZW5ndGgscz0yK24qTnQucGFja2VkTGVuZ3RoKzErVEV0KGUpLG89bmV3IEZsb2F0NjRBcnJheShzKSxyPTA7b1tyKytdPXQsb1tyKytdPW47Zm9yKGxldCBoPTA7aDxuOysraClOdC5wYWNrKGlbaF0sbyxyKSxyKz1OdC5wYWNrZWRMZW5ndGg7bGV0IGE9ZS5sZW5ndGg7b1tyKytdPWE7Zm9yKGxldCBoPTA7aDxhOysraCl7bGV0IEE9ZVtoXTtadC5wYWNrKEEuY29sb3IsbyxyKSxyKz1adC5wYWNrZWRMZW5ndGgsb1tyKytdPUEub2Zmc2V0LG9bcisrXT1BLmNvdW50O2xldCBkPUEuYmF0Y2hJZHMsZj1kLmxlbmd0aDtvW3IrK109Zjtmb3IobGV0IEU9MDtFPGY7KytFKW9bcisrXT1kW0VdfXJldHVybiBvfWZ1bmN0aW9uIGJFdCh0LGUpe2xldCBpPW0odC5ib3hlcyk/bmV3IEZsb2F0MzJBcnJheSh0LmJveGVzKTp2b2lkIDAsbj1tKHQuYm94QmF0Y2hJZHMpP25ldyBVaW50MTZBcnJheSh0LmJveEJhdGNoSWRzKTp2b2lkIDAscz1tKHQuY3lsaW5kZXJzKT9uZXcgRmxvYXQzMkFycmF5KHQuY3lsaW5kZXJzKTp2b2lkIDAsbz1tKHQuY3lsaW5kZXJCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuY3lsaW5kZXJCYXRjaElkcyk6dm9pZCAwLHI9bSh0LmVsbGlwc29pZHMpP25ldyBGbG9hdDMyQXJyYXkodC5lbGxpcHNvaWRzKTp2b2lkIDAsYT1tKHQuZWxsaXBzb2lkQmF0Y2hJZHMpP25ldyBVaW50MTZBcnJheSh0LmVsbGlwc29pZEJhdGNoSWRzKTp2b2lkIDAsaD1tKHQuc3BoZXJlcyk/bmV3IEZsb2F0MzJBcnJheSh0LnNwaGVyZXMpOnZvaWQgMCxBPW0odC5zcGhlcmVCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuc3BoZXJlQmF0Y2hJZHMpOnZvaWQgMCxkPW0oaSk/bi5sZW5ndGg6MCxmPW0ocyk/by5sZW5ndGg6MCxFPW0ocik/YS5sZW5ndGg6MCxfPW0oaCk/QS5sZW5ndGg6MCxSPWNSLmdldFVuaXRCb3goKSxJPWdSLmdldFVuaXRDeWxpbmRlcigpLEM9TnIuZ2V0VW5pdEVsbGlwc29pZCgpLE49Ui5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxUPUkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsRj1DLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGI9Ti5sZW5ndGgqZDtiKz1ULmxlbmd0aCpmLGIrPUYubGVuZ3RoKihFK18pO2xldCBHPVIuaW5kaWNlcyxNPUkuaW5kaWNlcyxRPUMuaW5kaWNlcyxVPUcubGVuZ3RoKmQ7VSs9TS5sZW5ndGgqZixVKz1RLmxlbmd0aCooRStfKTtsZXQgaz1uZXcgRmxvYXQzMkFycmF5KGIpLHk9bmV3IFVpbnQxNkFycmF5KGIvMyksYz10ZS5jcmVhdGVUeXBlZEFycmF5KGIvMyxVKSxnPWQrZitFK18sVj1uZXcgVWludDE2QXJyYXkoZyksRD1uZXcgQXJyYXkoZyksdz1uZXcgVWludDMyQXJyYXkoZykseD1uZXcgVWludDMyQXJyYXkoZyksSD1uZXcgQXJyYXkoZyk7Z0V0KHQucGFja2VkQnVmZmVyKTtsZXQgaj17YmF0Y2hUYWJsZUNvbG9yczpuZXcgVWludDMyQXJyYXkodC5iYXRjaFRhYmxlQ29sb3JzKSxwb3NpdGlvbnM6ayx2ZXJ0ZXhCYXRjaElkczp5LGluZGljZXM6YyxiYXRjaElkczpWLGJhdGNoZWRJbmRpY2VzOkQsaW5kZXhPZmZzZXRzOncsaW5kZXhDb3VudHM6eCxib3VuZGluZ1ZvbHVtZXM6SCxwb3NpdGlvbk9mZnNldDowLGJhdGNoSWRJbmRleDowLGluZGV4T2Zmc2V0OjAsYmF0Y2hlZEluZGljZXNPZmZzZXQ6MCxtb2RlbE1hdHJpeDpHNixjZW50ZXI6VjZ9O1pnKGosaSxuLFIsWkV0KSxaZyhqLHMsbyxJLElFdCksWmcoaixyLGEsQyxwRXQpLFpnKGosaCxBLEMsdUV0KTtsZXQgWD1ORXQoYy5CWVRFU19QRVJfRUxFTUVOVCxELEgpO3JldHVybiBlLnB1c2goay5idWZmZXIseS5idWZmZXIsYy5idWZmZXIpLGUucHVzaChWLmJ1ZmZlcix3LmJ1ZmZlcix4LmJ1ZmZlciksZS5wdXNoKFguYnVmZmVyKSx7cG9zaXRpb25zOmsuYnVmZmVyLHZlcnRleEJhdGNoSWRzOnkuYnVmZmVyLGluZGljZXM6Yy5idWZmZXIsaW5kZXhPZmZzZXRzOncuYnVmZmVyLGluZGV4Q291bnRzOnguYnVmZmVyLGJhdGNoSWRzOlYuYnVmZmVyLHBhY2tlZEJ1ZmZlcjpYLmJ1ZmZlcn19dmFyIElnLGZFdCxFRXQsX0V0LFJFdCxuYSxDRXQsVjYsRzYsRkV0LGJHPU8oKCk9PntfaSgpO3NPKCk7SHQoKTtRbigpO3NWKCk7bXQoKTtzZygpO0RpKCk7RmkoKTtPNigpO05zKCk7SWc9bmV3IGwsZkV0PWF0LnBhY2tlZExlbmd0aCtsLnBhY2tlZExlbmd0aCxFRXQ9YXQucGFja2VkTGVuZ3RoKzIsX0V0PWF0LnBhY2tlZExlbmd0aCtsLnBhY2tlZExlbmd0aCxSRXQ9bC5wYWNrZWRMZW5ndGgrMSxuYT17bW9kZWxNYXRyaXg6bmV3IGF0LGJvdW5kaW5nVm9sdW1lOm5ldyBOdH07Q0V0PW5ldyBsO1Y2PW5ldyBsLEc2PW5ldyBhdDtGRXQ9V2koYkV0KX0pO3ZhciBZRz17fTtIZShZRyx7ZGVmYXVsdDooKT0+R0V0fSk7ZnVuY3Rpb24gT0V0KHQpe3Q9bmV3IEZsb2F0NjRBcnJheSh0KTtsZXQgZT0wO3BnLm1pbj10W2UrK10scGcubWF4PXRbZSsrXSxYdC51bnBhY2sodCxlLEI2KSxlKz1YdC5wYWNrZWRMZW5ndGgsb3QudW5wYWNrKHQsZSxXNil9ZnVuY3Rpb24gVkV0KHQsZSl7bGV0IGk9bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKTtPRXQodC5wYWNrZWRCdWZmZXIpO2xldCBuPUI2LHM9VzYsbz1wZy5taW4scj1wZy5tYXgsYT1pLmxlbmd0aC8zLGg9aS5zdWJhcnJheSgwLGEpLEE9aS5zdWJhcnJheShhLDIqYSksZD1pLnN1YmFycmF5KDIqYSwzKmEpO1lpLnppZ1phZ0RlbHRhRGVjb2RlKGgsQSxkKTtsZXQgZj1uZXcgRmxvYXQ2NEFycmF5KGkubGVuZ3RoKTtmb3IobGV0IEU9MDtFPGE7KytFKXtsZXQgXz1oW0VdLFI9QVtFXSxJPWRbRV0sQz1MLmxlcnAobi53ZXN0LG4uZWFzdCxfL0ZHKSxOPUwubGVycChuLnNvdXRoLG4ubm9ydGgsUi9GRyksVD1MLmxlcnAobyxyLEkvRkcpLEY9dXQuZnJvbVJhZGlhbnMoQyxOLFQsWUV0KSxiPXMuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRixTRXQpO2wucGFjayhiLGYsRSozKX1yZXR1cm4gZS5wdXNoKGYuYnVmZmVyKSx7cG9zaXRpb25zOmYuYnVmZmVyfX12YXIgRkcsWUV0LFNFdCxCNixXNixwZyxHRXQsU0c9TygoKT0+e29oKCk7SHQoKTtyaSgpO1ZlKCk7X2UoKTtwbigpO05zKCk7Rkc9MzI3NjcsWUV0PW5ldyB1dCxTRXQ9bmV3IGwsQjY9bmV3IFh0LFc2PW5ldyBvdCxwZz17bWluOnZvaWQgMCxtYXg6dm9pZCAwfTtHRXQ9V2koVkV0KX0pO3ZhciBPRz17fTtIZShPRyx7ZGVmYXVsdDooKT0+d0V0fSk7ZnVuY3Rpb24gQkV0KHQpe2xldCBlPW5ldyBGbG9hdDY0QXJyYXkodCksaT0wO3ZmLmluZGV4Qnl0ZXNQZXJFbGVtZW50PWVbaSsrXSx2Zi5taW49ZVtpKytdLHZmLm1heD1lW2krK10sbC51bnBhY2soZSxpLFE2KSxpKz1sLnBhY2tlZExlbmd0aCxvdC51bnBhY2soZSxpLGs2KSxpKz1vdC5wYWNrZWRMZW5ndGgsWHQudW5wYWNrKGUsaSxMNil9ZnVuY3Rpb24gV0V0KHQpe2xldCBlPXQubGVuZ3RoLGk9MDtmb3IobGV0IG49MDtuPGU7KytuKWkrPVp0LnBhY2tlZExlbmd0aCszK3Rbbl0uYmF0Y2hJZHMubGVuZ3RoO3JldHVybiBpfWZ1bmN0aW9uIERFdCh0LGUsaSl7bGV0IG49ZS5sZW5ndGgscz0yK24qenMucGFja2VkTGVuZ3RoKzErV0V0KGkpLG89bmV3IEZsb2F0NjRBcnJheShzKSxyPTA7b1tyKytdPXQsb1tyKytdPW47Zm9yKGxldCBoPTA7aDxuOysraCl6cy5wYWNrKGVbaF0sbyxyKSxyKz16cy5wYWNrZWRMZW5ndGg7bGV0IGE9aS5sZW5ndGg7b1tyKytdPWE7Zm9yKGxldCBoPTA7aDxhOysraCl7bGV0IEE9aVtoXTtadC5wYWNrKEEuY29sb3IsbyxyKSxyKz1adC5wYWNrZWRMZW5ndGgsb1tyKytdPUEub2Zmc2V0LG9bcisrXT1BLmNvdW50O2xldCBkPUEuYmF0Y2hJZHMsZj1kLmxlbmd0aDtvW3IrK109Zjtmb3IobGV0IEU9MDtFPGY7KytFKW9bcisrXT1kW0VdfXJldHVybiBvfWZ1bmN0aW9uIHlFdCh0LGUpe0JFdCh0LnBhY2tlZEJ1ZmZlcik7bGV0IGk7dmYuaW5kZXhCeXRlc1BlckVsZW1lbnQ9PT0yP2k9bmV3IFVpbnQxNkFycmF5KHQuaW5kaWNlcyk6aT1uZXcgVWludDMyQXJyYXkodC5pbmRpY2VzKTtsZXQgcz1uZXcgVWludDE2QXJyYXkodC5wb3NpdGlvbnMpLG89bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxyPW5ldyBVaW50MzJBcnJheSh0LmluZGV4Q291bnRzKSxhPW5ldyBVaW50MzJBcnJheSh0LmJhdGNoSWRzKSxoPW5ldyBVaW50MzJBcnJheSh0LmJhdGNoVGFibGVDb2xvcnMpLEE9bmV3IEFycmF5KG8ubGVuZ3RoKSxkPVE2LGY9azYsRT1MNixfPXZmLm1pbixSPXZmLm1heCxJPXQubWluaW11bUhlaWdodHMsQz10Lm1heGltdW1IZWlnaHRzO20oSSkmJm0oQykmJihJPW5ldyBGbG9hdDMyQXJyYXkoSSksQz1uZXcgRmxvYXQzMkFycmF5KEMpKTtsZXQgTixULEYsYj1zLmxlbmd0aC8yLEc9cy5zdWJhcnJheSgwLGIpLE09cy5zdWJhcnJheShiLDIqYik7WWkuemlnWmFnRGVsdGFEZWNvZGUoRyxNKTtsZXQgUT1uZXcgRmxvYXQ2NEFycmF5KGIqMyk7Zm9yKE49MDtOPGI7KytOKXtsZXQgQ3Q9R1tOXSx6dD1NW05dLGt0PUwubGVycChFLndlc3QsRS5lYXN0LEN0L0Q2KSxKdD1MLmxlcnAoRS5zb3V0aCxFLm5vcnRoLHp0L0Q2KSxXdD11dC5mcm9tUmFkaWFucyhrdCxKdCwwLFU2KSxGdD1mLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFd0LE02KTtsLnBhY2soRnQsUSxOKjMpfWxldCBVPW8ubGVuZ3RoLGs9bmV3IEFycmF5KFUpLHk9bmV3IEFycmF5KFUpLGM9MCxnPTA7Zm9yKE49MDtOPFU7KytOKWtbTl09Yyx5W05dPWcsYys9b1tOXSxnKz1yW05dO2xldCBWPW5ldyBGbG9hdDMyQXJyYXkoYiozKjIpLEQ9bmV3IFVpbnQxNkFycmF5KGIqMiksdz1uZXcgVWludDMyQXJyYXkoeS5sZW5ndGgpLHg9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoKSxIPVtdLGo9e307Zm9yKE49MDtOPFU7KytOKUY9aFtOXSxtKGpbRl0pPyhqW0ZdLnBvc2l0aW9uTGVuZ3RoKz1vW05dLGpbRl0uaW5kZXhMZW5ndGgrPXJbTl0saltGXS5iYXRjaElkcy5wdXNoKE4pKTpqW0ZdPXtwb3NpdGlvbkxlbmd0aDpvW05dLGluZGV4TGVuZ3RoOnJbTl0sb2Zmc2V0OjAsaW5kZXhPZmZzZXQ6MCxiYXRjaElkczpbTl19O2xldCBYLHR0PTAsQj0wO2ZvcihGIGluIGopaWYoai5oYXNPd25Qcm9wZXJ0eShGKSl7WD1qW0ZdLFgub2Zmc2V0PXR0LFguaW5kZXhPZmZzZXQ9QjtsZXQgQ3Q9WC5wb3NpdGlvbkxlbmd0aCoyLHp0PVguaW5kZXhMZW5ndGgqMitYLnBvc2l0aW9uTGVuZ3RoKjY7dHQrPUN0LEIrPXp0LFguaW5kZXhMZW5ndGg9enR9bGV0IEl0PVtdO2ZvcihGIGluIGopai5oYXNPd25Qcm9wZXJ0eShGKSYmKFg9altGXSxJdC5wdXNoKHtjb2xvcjpadC5mcm9tUmdiYShwYXJzZUludChGKSksb2Zmc2V0OlguaW5kZXhPZmZzZXQsY291bnQ6WC5pbmRleExlbmd0aCxiYXRjaElkczpYLmJhdGNoSWRzfSkpO2ZvcihOPTA7TjxVOysrTil7Rj1oW05dLFg9altGXTtsZXQgQ3Q9WC5vZmZzZXQsenQ9Q3QqMyxrdD1DdCxKdD1rW05dLFd0PW9bTl0sRnQ9YVtOXSxlZT1fLGNlPVI7bShJKSYmbShDKSYmKGVlPUlbTl0sY2U9Q1tOXSk7bGV0IGplPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxPZT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksTWU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFVlPU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtmb3IoVD0wO1Q8V3Q7KytUKXtsZXQgemU9bC51bnBhY2soUSxKdCozK1QqMyxNNik7Zi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHplLHplKTtsZXQgR2U9Zi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh6ZSxVNiksVWk9R2UubGF0aXR1ZGUsUmk9R2UubG9uZ2l0dWRlO2plPU1hdGgubWluKFVpLGplKSxPZT1NYXRoLm1heChVaSxPZSksTWU9TWF0aC5taW4oUmksTWUpLFVlPU1hdGgubWF4KFJpLFVlKTtsZXQgc2k9Zi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoemUsTUV0KSxxZT1sLm11bHRpcGx5QnlTY2FsYXIoc2ksZWUsVUV0KSxWaT1sLmFkZCh6ZSxxZSxRRXQpO3FlPWwubXVsdGlwbHlCeVNjYWxhcihzaSxjZSxxZSk7bGV0IGduPWwuYWRkKHplLHFlLGtFdCk7bC5zdWJ0cmFjdChnbixkLGduKSxsLnN1YnRyYWN0KFZpLGQsVmkpLGwucGFjayhnbixWLHp0KSxsLnBhY2soVmksVix6dCszKSxEW2t0XT1GdCxEW2t0KzFdPUZ0LHp0Kz02LGt0Kz0yfUU9TEV0LEUud2VzdD1NZSxFLmVhc3Q9VWUsRS5zb3V0aD1qZSxFLm5vcnRoPU9lLEFbTl09enMuZnJvbVJlY3RhbmdsZShFLF8sUixmKTtsZXQgQ2U9WC5pbmRleE9mZnNldCxiZT15W05dLG5pPXJbTl07Zm9yKHdbTl09Q2UsVD0wO1Q8bmk7VCs9Myl7bGV0IHplPWlbYmUrVF0tSnQsR2U9aVtiZStUKzFdLUp0LFVpPWlbYmUrVCsyXS1KdDtIW0NlKytdPXplKjIrQ3QsSFtDZSsrXT1HZSoyK0N0LEhbQ2UrK109VWkqMitDdCxIW0NlKytdPVVpKjIrMStDdCxIW0NlKytdPUdlKjIrMStDdCxIW0NlKytdPXplKjIrMStDdH1mb3IoVD0wO1Q8V3Q7KytUKXtsZXQgemU9VCxHZT0oVCsxKSVXdDtIW0NlKytdPXplKjIrMStDdCxIW0NlKytdPUdlKjIrQ3QsSFtDZSsrXT16ZSoyK0N0LEhbQ2UrK109emUqMisxK0N0LEhbQ2UrK109R2UqMisxK0N0LEhbQ2UrK109R2UqMitDdH1YLm9mZnNldCs9V3QqMixYLmluZGV4T2Zmc2V0PUNlLHhbTl09Q2Utd1tOXX1IPXRlLmNyZWF0ZVR5cGVkQXJyYXkoVi5sZW5ndGgvMyxIKTtsZXQgZ3Q9SXQubGVuZ3RoO2ZvcihsZXQgQ3Q9MDtDdDxndDsrK0N0KXtsZXQgenQ9SXRbQ3RdLmJhdGNoSWRzLGt0PTAsSnQ9enQubGVuZ3RoO2ZvcihsZXQgV3Q9MDtXdDxKdDsrK1d0KWt0Kz14W3p0W1d0XV07SXRbQ3RdLmNvdW50PWt0fWxldCBZdD1ILkJZVEVTX1BFUl9FTEVNRU5UPT09Mj90ZS5VTlNJR05FRF9TSE9SVDp0ZS5VTlNJR05FRF9JTlQsTXQ9REV0KFl0LEEsSXQpO3JldHVybiBlLnB1c2goVi5idWZmZXIsSC5idWZmZXIsdy5idWZmZXIseC5idWZmZXIsRC5idWZmZXIsTXQuYnVmZmVyKSx7cG9zaXRpb25zOlYuYnVmZmVyLGluZGljZXM6SC5idWZmZXIsaW5kZXhPZmZzZXRzOncuYnVmZmVyLGluZGV4Q291bnRzOnguYnVmZmVyLGJhdGNoSWRzOkQuYnVmZmVyLHBhY2tlZEJ1ZmZlcjpNdC5idWZmZXJ9fXZhciBRNixrNixMNix2ZixENixNNixNRXQsVUV0LFFFdCxrRXQsVTYsTEV0LHdFdCxWRz1PKCgpPT57b2goKTtIdCgpO3JpKCk7UW4oKTttdCgpO1ZlKCk7RGkoKTtfZSgpO0psKCk7cG4oKTtOcygpO1E2PW5ldyBsLGs2PW5ldyBvdCxMNj1uZXcgWHQsdmY9e21pbjp2b2lkIDAsbWF4OnZvaWQgMCxpbmRleEJ5dGVzUGVyRWxlbWVudDp2b2lkIDB9O0Q2PTMyNzY3LE02PW5ldyBsLE1FdD1uZXcgbCxVRXQ9bmV3IGwsUUV0PW5ldyBsLGtFdD1uZXcgbCxVNj1uZXcgdXQsTEV0PW5ldyBYdDt3RXQ9V2koeUV0KX0pO2Z1bmN0aW9uIEpFdCh0LGUsaSxuLHMpe2xldCBvPXQubGVuZ3RoLzMscj10LnN1YmFycmF5KDAsbyksYT10LnN1YmFycmF5KG8sMipvKSxoPXQuc3ViYXJyYXkoMipvLDMqbyk7WWkuemlnWmFnRGVsdGFEZWNvZGUocixhLGgpO2xldCBBPW5ldyBGbG9hdDY0QXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgZD0wO2Q8bzsrK2Qpe2xldCBmPXJbZF0sRT1hW2RdLF89aFtkXSxSPUwubGVycChlLndlc3QsZS5lYXN0LGYvR0cpLEk9TC5sZXJwKGUuc291dGgsZS5ub3J0aCxFL0dHKSxDPUwubGVycChpLG4sXy9HRyksTj11dC5mcm9tUmFkaWFucyhSLEksQyx4RXQpLFQ9cy5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihOLFBFdCk7bC5wYWNrKFQsQSxkKjMpfXJldHVybiBBfXZhciBHRyx4RXQsUEV0LHk2LHc2PU8oKCk9PntvaCgpO0h0KCk7cmkoKTtfZSgpO0dHPTMyNzY3LHhFdD1uZXcgdXQsUEV0PW5ldyBsO3k2PUpFdH0pO3ZhciBCRz17fTtIZShCRyx7ZGVmYXVsdDooKT0+S0V0fSk7ZnVuY3Rpb24gakV0KHQpe3Q9bmV3IEZsb2F0NjRBcnJheSh0KTtsZXQgZT0wO3VnLm1pbj10W2UrK10sdWcubWF4PXRbZSsrXSxYdC51bnBhY2sodCxlLEg2KSxlKz1YdC5wYWNrZWRMZW5ndGgsb3QudW5wYWNrKHQsZSx2NiksZSs9b3QucGFja2VkTGVuZ3RoLGwudW5wYWNrKHQsZSx6Nil9ZnVuY3Rpb24gSEV0KHQpe2xldCBlPXQubGVuZ3RoLGk9bmV3IFVpbnQzMkFycmF5KGUrMSksbj0wO2ZvcihsZXQgcz0wO3M8ZTsrK3MpaVtzXT1uLG4rPXRbc107cmV0dXJuIGlbZV09bixpfWZ1bmN0aW9uIHpFdCh0LGUpe2xldCBpPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbj1uZXcgVWludDE2QXJyYXkodC53aWR0aHMpLHM9bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxvPW5ldyBVaW50MTZBcnJheSh0LmJhdGNoSWRzKTtqRXQodC5wYWNrZWRCdWZmZXIpO2xldCByPUg2LGE9djYsaD16NixBPXVnLm1pbixkPXVnLm1heCxmPXk2KGkscixBLGQsYSksRT1mLmxlbmd0aC8zLF89RSo0LTQsUj1uZXcgRmxvYXQzMkFycmF5KF8qMyksST1uZXcgRmxvYXQzMkFycmF5KF8qMyksQz1uZXcgRmxvYXQzMkFycmF5KF8qMyksTj1uZXcgRmxvYXQzMkFycmF5KF8qMiksVD1uZXcgVWludDE2QXJyYXkoXyksRj0wLGI9MCxHPTAsTSxRPTAsVT1zLmxlbmd0aDtmb3IoTT0wO008VTsrK00pe2xldCBWPXNbTV0sRD1uW01dLHc9b1tNXTtmb3IobGV0IHg9MDt4PFY7Kyt4KXtsZXQgSDtpZih4PT09MCl7bGV0IEl0PWwudW5wYWNrKGYsUSozLHg2KSxndD1sLnVucGFjayhmLChRKzEpKjMsUDYpO0g9bC5zdWJ0cmFjdChJdCxndCxKNiksbC5hZGQoSXQsSCxIKX1lbHNlIEg9bC51bnBhY2soZiwoUSt4LTEpKjMsSjYpO2xldCBqPWwudW5wYWNrKGYsKFEreCkqMyx2RXQpLFg7aWYoeD09PVYtMSl7bGV0IEl0PWwudW5wYWNrKGYsKFErVi0xKSozLHg2KSxndD1sLnVucGFjayhmLChRK1YtMikqMyxQNik7WD1sLnN1YnRyYWN0KEl0LGd0LGo2KSxsLmFkZChJdCxYLFgpfWVsc2UgWD1sLnVucGFjayhmLChRK3grMSkqMyxqNik7bC5zdWJ0cmFjdChILGgsSCksbC5zdWJ0cmFjdChqLGgsaiksbC5zdWJ0cmFjdChYLGgsWCk7bGV0IHR0PXg9PT0wPzI6MCxCPXg9PT1WLTE/Mjo0O2ZvcihsZXQgSXQ9dHQ7SXQ8QjsrK0l0KXtsLnBhY2soaixSLEYpLGwucGFjayhILEksRiksbC5wYWNrKFgsQyxGKSxGKz0zO2xldCBndD1JdC0yPDA/LTE6MTtOW2IrK109MiooSXQlMiktMSxOW2IrK109Z3QqRCxUW0crK109d319USs9Vn1sZXQgaz10ZS5jcmVhdGVUeXBlZEFycmF5KF8sRSo2LTYpLHk9MCxjPTA7Zm9yKFU9RS0xLE09MDtNPFU7KytNKWtbYysrXT15LGtbYysrXT15KzIsa1tjKytdPXkrMSxrW2MrK109eSsxLGtbYysrXT15KzIsa1tjKytdPXkrMyx5Kz00O2UucHVzaChSLmJ1ZmZlcixJLmJ1ZmZlcixDLmJ1ZmZlciksZS5wdXNoKE4uYnVmZmVyLFQuYnVmZmVyLGsuYnVmZmVyKTtsZXQgZz17aW5kZXhEYXRhdHlwZTprLkJZVEVTX1BFUl9FTEVNRU5UPT09Mj90ZS5VTlNJR05FRF9TSE9SVDp0ZS5VTlNJR05FRF9JTlQsY3VycmVudFBvc2l0aW9uczpSLmJ1ZmZlcixwcmV2aW91c1Bvc2l0aW9uczpJLmJ1ZmZlcixuZXh0UG9zaXRpb25zOkMuYnVmZmVyLGV4cGFuZEFuZFdpZHRoOk4uYnVmZmVyLGJhdGNoSWRzOlQuYnVmZmVyLGluZGljZXM6ay5idWZmZXJ9O2lmKHQua2VlcERlY29kZWRQb3NpdGlvbnMpe2xldCBWPUhFdChzKTtlLnB1c2goZi5idWZmZXIsVi5idWZmZXIpLGc9ZXMoZyx7ZGVjb2RlZFBvc2l0aW9uczpmLmJ1ZmZlcixkZWNvZGVkUG9zaXRpb25PZmZzZXRzOlYuYnVmZmVyfSl9cmV0dXJuIGd9dmFyIEg2LHY2LHo2LHVnLHg2LFA2LEo2LHZFdCxqNixLRXQsV0c9TygoKT0+e0h0KCk7S0EoKTt3NigpO1ZlKCk7RGkoKTtwbigpO05zKCk7SDY9bmV3IFh0LHY2PW5ldyBvdCx6Nj1uZXcgbCx1Zz17bWluOnZvaWQgMCxtYXg6dm9pZCAwfTt4Nj1uZXcgbCxQNj1uZXcgbCxKNj1uZXcgbCx2RXQ9bmV3IGwsajY9bmV3IGw7S0V0PVdpKHpFdCl9KTt2YXIgWEV0LHNhLEs2PU8oKCk9PntYRXQ9e05PTkU6MCxCSVRTMTI6MX0sc2E9T2JqZWN0LmZyZWV6ZShYRXQpfSk7ZnVuY3Rpb24gRm8odCxlLGksbixzLG8scixhLGgsQSl7bGV0IGQ9c2EuTk9ORSxmLEU7aWYobShlKSYmbShpKSYmbShuKSYmbShzKSl7bGV0IF89ZS5taW5pbXVtLFI9ZS5tYXhpbXVtLEk9bC5zdWJ0cmFjdChSLF8scUV0KSxDPW4taTtNYXRoLm1heChsLm1heGltdW1Db21wb25lbnQoSSksQyk8dF90LTE/ZD1zYS5CSVRTMTI6ZD1zYS5OT05FLGY9YXQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKHMsbmV3IGF0KTtsZXQgVD1sLm5lZ2F0ZShfLHVkKTthdC5tdWx0aXBseShhdC5mcm9tVHJhbnNsYXRpb24oVCxDZyksZixmKTtsZXQgRj11ZDtGLng9MS9JLngsRi55PTEvSS55LEYuej0xL0kueixhdC5tdWx0aXBseShhdC5mcm9tU2NhbGUoRixDZyksZixmKSxFPWF0LmNsb25lKHMpLGF0LnNldFRyYW5zbGF0aW9uKEUsbC5aRVJPLEUpLHM9YXQuY2xvbmUocyxuZXcgYXQpO2xldCBiPWF0LmZyb21UcmFuc2xhdGlvbihfLENnKSxHPWF0LmZyb21TY2FsZShJLCRFdCksTT1hdC5tdWx0aXBseShiLEcsQ2cpO2F0Lm11bHRpcGx5KHMsTSxzKSxhdC5tdWx0aXBseShFLE0sRSl9dGhpcy5xdWFudGl6YXRpb249ZCx0aGlzLm1pbmltdW1IZWlnaHQ9aSx0aGlzLm1heGltdW1IZWlnaHQ9bix0aGlzLmNlbnRlcj1sLmNsb25lKHQpLHRoaXMudG9TY2FsZWRFTlU9Zix0aGlzLmZyb21TY2FsZWRFTlU9cyx0aGlzLm1hdHJpeD1FLHRoaXMuaGFzVmVydGV4Tm9ybWFscz1vLHRoaXMuaGFzV2ViTWVyY2F0b3JUPVoociwhMSksdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPVooYSwhMSksdGhpcy5leGFnZ2VyYXRpb249WihoLDEpLHRoaXMuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQ9WihBLDApLHRoaXMuc3RyaWRlPTAsdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsPTAsdGhpcy5fb2Zmc2V0VmVydGV4Tm9ybWFsPTAsdGhpcy5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cygpfXZhciB1ZCxxRXQsb2EsQ2csJEV0LHRfdCxlX3QsWDYsZ2csVGcsdmMsV1I9TygoKT0+e29oKCk7WGUoKTtIdCgpO29pKCk7YnQoKTttdCgpO19lKCk7RmkoKTtoYigpO0s2KCk7dWQ9bmV3IGwscUV0PW5ldyBsLG9hPW5ldyBudCxDZz1uZXcgYXQsJEV0PW5ldyBhdCx0X3Q9TWF0aC5wb3coMiwxMik7Rm8ucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih0LGUsaSxuLHMsbyxyLGEpe2xldCBoPW4ueCxBPW4ueTtpZih0aGlzLnF1YW50aXphdGlvbj09PXNhLkJJVFMxMil7aT1hdC5tdWx0aXBseUJ5UG9pbnQodGhpcy50b1NjYWxlZEVOVSxpLHVkKSxpLng9TC5jbGFtcChpLngsMCwxKSxpLnk9TC5jbGFtcChpLnksMCwxKSxpLno9TC5jbGFtcChpLnosMCwxKTtsZXQgZD10aGlzLm1heGltdW1IZWlnaHQtdGhpcy5taW5pbXVtSGVpZ2h0LGY9TC5jbGFtcCgocy10aGlzLm1pbmltdW1IZWlnaHQpL2QsMCwxKTtudC5mcm9tRWxlbWVudHMoaS54LGkueSxvYSk7bGV0IEU9WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMob2EpO250LmZyb21FbGVtZW50cyhpLnosZixvYSk7bGV0IF89WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMob2EpO250LmZyb21FbGVtZW50cyhoLEEsb2EpO2xldCBSPVlpLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKG9hKTtpZih0W2UrK109RSx0W2UrK109Xyx0W2UrK109Uix0aGlzLmhhc1dlYk1lcmNhdG9yVCl7bnQuZnJvbUVsZW1lbnRzKHIsMCxvYSk7bGV0IEk9WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMob2EpO3RbZSsrXT1JfX1lbHNlIGwuc3VidHJhY3QoaSx0aGlzLmNlbnRlcix1ZCksdFtlKytdPXVkLngsdFtlKytdPXVkLnksdFtlKytdPXVkLnosdFtlKytdPXMsdFtlKytdPWgsdFtlKytdPUEsdGhpcy5oYXNXZWJNZXJjYXRvclQmJih0W2UrK109cik7cmV0dXJuIHRoaXMuaGFzVmVydGV4Tm9ybWFscyYmKHRbZSsrXT1ZaS5vY3RQYWNrRmxvYXQobykpLHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscyYmKHRbZSsrXT1hLngsdFtlKytdPWEueSx0W2UrK109YS56KSxlfTtlX3Q9bmV3IGwsWDY9bmV3IGw7Rm8ucHJvdG90eXBlLmFkZEdlb2RldGljU3VyZmFjZU5vcm1hbHM9ZnVuY3Rpb24odCxlLGkpe2lmKHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscylyZXR1cm47bGV0IG49dGhpcy5zdHJpZGUscz10Lmxlbmd0aC9uO3RoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz0hMCx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCk7bGV0IG89dGhpcy5zdHJpZGU7Zm9yKGxldCByPTA7cjxzO3IrKyl7Zm9yKGxldCBkPTA7ZDxuO2QrKyl7bGV0IGY9cipuK2QsRT1yKm8rZDtlW0VdPXRbZl19bGV0IGE9dGhpcy5kZWNvZGVQb3NpdGlvbihlLHIsZV90KSxoPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGEsWDYpLEE9cipvK3RoaXMuX29mZnNldEdlb2RldGljU3VyZmFjZU5vcm1hbDtlW0FdPWgueCxlW0ErMV09aC55LGVbQSsyXT1oLnp9fTtGby5wcm90b3R5cGUucmVtb3ZlR2VvZGV0aWNTdXJmYWNlTm9ybWFscz1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMpcmV0dXJuO2xldCBpPXRoaXMuc3RyaWRlLG49dC5sZW5ndGgvaTt0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHM9ITEsdGhpcy5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cygpO2xldCBzPXRoaXMuc3RyaWRlO2ZvcihsZXQgbz0wO288bjtvKyspZm9yKGxldCByPTA7cjxzO3IrKyl7bGV0IGE9byppK3IsaD1vKnMrcjtlW2hdPXRbYV19fTtGby5wcm90b3R5cGUuZGVjb2RlUG9zaXRpb249ZnVuY3Rpb24odCxlLGkpe2lmKG0oaSl8fChpPW5ldyBsKSxlKj10aGlzLnN0cmlkZSx0aGlzLnF1YW50aXphdGlvbj09PXNhLkJJVFMxMil7bGV0IG49WWkuZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2VdLG9hKTtpLng9bi54LGkueT1uLnk7bGV0IHM9WWkuZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrMV0sb2EpO3JldHVybiBpLno9cy54LGF0Lm11bHRpcGx5QnlQb2ludCh0aGlzLmZyb21TY2FsZWRFTlUsaSxpKX1yZXR1cm4gaS54PXRbZV0saS55PXRbZSsxXSxpLno9dFtlKzJdLGwuYWRkKGksdGhpcy5jZW50ZXIsaSl9O0ZvLnByb3RvdHlwZS5nZXRFeGFnZ2VyYXRlZFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpKXtpPXRoaXMuZGVjb2RlUG9zaXRpb24odCxlLGkpO2xldCBuPXRoaXMuZXhhZ2dlcmF0aW9uLHM9dGhpcy5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodDtpZihuIT09MSYmdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzKXtsZXQgcj10aGlzLmRlY29kZUdlb2RldGljU3VyZmFjZU5vcm1hbCh0LGUsWDYpLGE9dGhpcy5kZWNvZGVIZWlnaHQodCxlKSxoPUFfLmdldEhlaWdodChhLG4scyktYTtpLngrPXIueCpoLGkueSs9ci55KmgsaS56Kz1yLnoqaH1yZXR1cm4gaX07Rm8ucHJvdG90eXBlLmRlY29kZVRleHR1cmVDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG0oaSl8fChpPW5ldyBudCksZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1zYS5CSVRTMTI/WWkuZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrMl0saSk6bnQuZnJvbUVsZW1lbnRzKHRbZSs0XSx0W2UrNV0saSl9O0ZvLnByb3RvdHlwZS5kZWNvZGVIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1zYS5CSVRTMTI/WWkuZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrMV0sb2EpLnkqKHRoaXMubWF4aW11bUhlaWdodC10aGlzLm1pbmltdW1IZWlnaHQpK3RoaXMubWluaW11bUhlaWdodDp0W2UrM119O0ZvLnByb3RvdHlwZS5kZWNvZGVXZWJNZXJjYXRvclQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1zYS5CSVRTMTI/WWkuZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrM10sb2EpLng6dFtlKzZdfTtGby5wcm90b3R5cGUuZ2V0T2N0RW5jb2RlZE5vcm1hbD1mdW5jdGlvbih0LGUsaSl7ZT1lKnRoaXMuc3RyaWRlK3RoaXMuX29mZnNldFZlcnRleE5vcm1hbDtsZXQgbj10W2VdLzI1NixzPU1hdGguZmxvb3Iobiksbz0obi1zKSoyNTY7cmV0dXJuIG50LmZyb21FbGVtZW50cyhzLG8saSl9O0ZvLnByb3RvdHlwZS5kZWNvZGVHZW9kZXRpY1N1cmZhY2VOb3JtYWw9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlPWUqdGhpcy5zdHJpZGUrdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsLGkueD10W2VdLGkueT10W2UrMV0saS56PXRbZSsyXSxpfTtGby5wcm90b3R5cGUuX2NhbGN1bGF0ZVN0cmlkZUFuZE9mZnNldHM9ZnVuY3Rpb24oKXtsZXQgdD0wO3N3aXRjaCh0aGlzLnF1YW50aXphdGlvbil7Y2FzZSBzYS5CSVRTMTI6dCs9MzticmVhaztkZWZhdWx0OnQrPTZ9dGhpcy5oYXNXZWJNZXJjYXRvclQmJih0Kz0xKSx0aGlzLmhhc1ZlcnRleE5vcm1hbHMmJih0aGlzLl9vZmZzZXRWZXJ0ZXhOb3JtYWw9dCx0Kz0xKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJih0aGlzLl9vZmZzZXRHZW9kZXRpY1N1cmZhY2VOb3JtYWw9dCx0Kz0zKSx0aGlzLnN0cmlkZT10fTtnZz17cG9zaXRpb24zREFuZEhlaWdodDowLHRleHR1cmVDb29yZEFuZEVuY29kZWROb3JtYWxzOjEsZ2VvZGV0aWNTdXJmYWNlTm9ybWFsOjJ9LFRnPXtjb21wcmVzc2VkMDowLGNvbXByZXNzZWQxOjEsZ2VvZGV0aWNTdXJmYWNlTm9ybWFsOjJ9O0ZvLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe2xldCBlPUF0LkZMT0FULGk9QXQuZ2V0U2l6ZUluQnl0ZXMoZSksbj10aGlzLnN0cmlkZSppLHM9MCxvPVtdO2Z1bmN0aW9uIHIoYSxoKXtvLnB1c2goe2luZGV4OmEsdmVydGV4QnVmZmVyOnQsY29tcG9uZW50RGF0YXR5cGU6ZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOmgsb2Zmc2V0SW5CeXRlczpzLHN0cmlkZUluQnl0ZXM6bn0pLHMrPWgqaX1pZih0aGlzLnF1YW50aXphdGlvbj09PXNhLk5PTkUpe3IoZ2cucG9zaXRpb24zREFuZEhlaWdodCw0KTtsZXQgYT0yO2ErPXRoaXMuaGFzV2ViTWVyY2F0b3JUPzE6MCxhKz10aGlzLmhhc1ZlcnRleE5vcm1hbHM/MTowLHIoZ2cudGV4dHVyZUNvb3JkQW5kRW5jb2RlZE5vcm1hbHMsYSksdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzJiZyKGdnLmdlb2RldGljU3VyZmFjZU5vcm1hbCwzKX1lbHNle2xldCBhPXRoaXMuaGFzV2ViTWVyY2F0b3JUfHx0aGlzLmhhc1ZlcnRleE5vcm1hbHMsaD10aGlzLmhhc1dlYk1lcmNhdG9yVCYmdGhpcy5oYXNWZXJ0ZXhOb3JtYWxzO3IoVGcuY29tcHJlc3NlZDAsYT80OjMpLGgmJnIoVGcuY29tcHJlc3NlZDEsMSksdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzJiZyKFRnLmdlb2RldGljU3VyZmFjZU5vcm1hbCwzKX1yZXR1cm4gb307Rm8ucHJvdG90eXBlLmdldEF0dHJpYnV0ZUxvY2F0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnF1YW50aXphdGlvbj09PXNhLk5PTkU/Z2c6VGd9O0ZvLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKXx8KGU9bmV3IEZvKSxlLnF1YW50aXphdGlvbj10LnF1YW50aXphdGlvbixlLm1pbmltdW1IZWlnaHQ9dC5taW5pbXVtSGVpZ2h0LGUubWF4aW11bUhlaWdodD10Lm1heGltdW1IZWlnaHQsZS5jZW50ZXI9bC5jbG9uZSh0LmNlbnRlciksZS50b1NjYWxlZEVOVT1hdC5jbG9uZSh0LnRvU2NhbGVkRU5VKSxlLmZyb21TY2FsZWRFTlU9YXQuY2xvbmUodC5mcm9tU2NhbGVkRU5VKSxlLm1hdHJpeD1hdC5jbG9uZSh0Lm1hdHJpeCksZS5oYXNWZXJ0ZXhOb3JtYWxzPXQuaGFzVmVydGV4Tm9ybWFscyxlLmhhc1dlYk1lcmNhdG9yVD10Lmhhc1dlYk1lcmNhdG9yVCxlLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHM9dC5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzLGUuZXhhZ2dlcmF0aW9uPXQuZXhhZ2dlcmF0aW9uLGUuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQ9dC5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodCxlLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCksZX07dmM9Rm99KTt2YXIgTUc9e307SGUoTUcse2RlZmF1bHQ6KCk9PmhfdH0pO2Z1bmN0aW9uIERSKHQsZSxpKXtpPVooaSxMKTtsZXQgbj10Lmxlbmd0aDtmb3IobGV0IHM9MDtzPG47KytzKWlmKGkuZXF1YWxzRXBzaWxvbih0W3NdLGUsTC5FUFNJTE9OMTIpKXJldHVybiBzO3JldHVybi0xfWZ1bmN0aW9uIHNfdCh0LGUpe3QuZWxsaXBzb2lkPW90LmNsb25lKHQuZWxsaXBzb2lkKSx0LnJlY3RhbmdsZT1YdC5jbG9uZSh0LnJlY3RhbmdsZSk7bGV0IGk9QV90KHQuYnVmZmVyLHQucmVsYXRpdmVUb0NlbnRlcix0LmVsbGlwc29pZCx0LnJlY3RhbmdsZSx0Lm5hdGl2ZVJlY3RhbmdsZSx0LmV4YWdnZXJhdGlvbix0LmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0LHQuc2tpcnRIZWlnaHQsdC5pbmNsdWRlV2ViTWVyY2F0b3JULHQubmVnYXRpdmVBbHRpdHVkZUV4cG9uZW50Qmlhcyx0Lm5lZ2F0aXZlRWxldmF0aW9uVGhyZXNob2xkKSxuPWkudmVydGljZXM7ZS5wdXNoKG4uYnVmZmVyKTtsZXQgcz1pLmluZGljZXM7cmV0dXJuIGUucHVzaChzLmJ1ZmZlcikse3ZlcnRpY2VzOm4uYnVmZmVyLGluZGljZXM6cy5idWZmZXIsbnVtYmVyT2ZBdHRyaWJ1dGVzOmkuZW5jb2Rpbmcuc3RyaWRlLG1pbmltdW1IZWlnaHQ6aS5taW5pbXVtSGVpZ2h0LG1heGltdW1IZWlnaHQ6aS5tYXhpbXVtSGVpZ2h0LGJvdW5kaW5nU3BoZXJlM0Q6aS5ib3VuZGluZ1NwaGVyZTNELG9yaWVudGVkQm91bmRpbmdCb3g6aS5vcmllbnRlZEJvdW5kaW5nQm94LG9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlOmkub2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2UsZW5jb2Rpbmc6aS5lbmNvZGluZyx2ZXJ0ZXhDb3VudFdpdGhvdXRTa2lydHM6aS52ZXJ0ZXhDb3VudFdpdGhvdXRTa2lydHMsaW5kZXhDb3VudFdpdGhvdXRTa2lydHM6aS5pbmRleENvdW50V2l0aG91dFNraXJ0cyx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDppLndlc3RJbmRpY2VzU291dGhUb05vcnRoLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6aS5zb3V0aEluZGljZXNFYXN0VG9XZXN0LGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOmkuZWFzdEluZGljZXNOb3J0aFRvU291dGgsbm9ydGhJbmRpY2VzV2VzdFRvRWFzdDppLm5vcnRoSW5kaWNlc1dlc3RUb0Vhc3R9fWZ1bmN0aW9uIEFfdCh0LGUsaSxuLHMsbyxyLGEsaCxBLGQpe2xldCBmLEUsXyxSLEksQzttKG4pPyhmPW4ud2VzdCxFPW4uc291dGgsXz1uLmVhc3QsUj1uLm5vcnRoLEk9bi53aWR0aCxDPW4uaGVpZ2h0KTooZj1MLnRvUmFkaWFucyhzLndlc3QpLEU9TC50b1JhZGlhbnMocy5zb3V0aCksXz1MLnRvUmFkaWFucyhzLmVhc3QpLFI9TC50b1JhZGlhbnMocy5ub3J0aCksST1MLnRvUmFkaWFucyhuLndpZHRoKSxDPUwudG9SYWRpYW5zKG4uaGVpZ2h0KSk7bGV0IE49W0UsUl0sVD1bZixfXSxGPUluLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKGUsaSksYj1hdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24oRixhX3QpLEcsTTtoJiYoRz1rcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKEUpLE09MS8oa3MuZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShSKS1HKSk7bGV0IFU9byE9PTEsaz1uZXcgRGF0YVZpZXcodCkseT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYz1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksZz1vX3Q7Zy54PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxnLnk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGcuej1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bGV0IFY9cl90O1YueD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksVi55PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxWLno9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2xldCBEPTAsdz0wLHg9MCxILGo7Zm9yKGo9MDtqPDQ7KytqKXtsZXQgRGU9RDtIPWsuZ2V0VWludDMyKERlLCEwKSxEZSs9REc7bGV0IFllPUwudG9SYWRpYW5zKGsuZ2V0RmxvYXQ2NChEZSwhMCkqMTgwKTtEZSs9Q2QsRFIoVCxZZSk9PT0tMSYmVC5wdXNoKFllKTtsZXQgQmk9TC50b1JhZGlhbnMoay5nZXRGbG9hdDY0KERlLCEwKSoxODApO0RlKz1DZCxEUihOLEJpKT09PS0xJiZOLnB1c2goQmkpLERlKz0yKkNkO2xldCBBbj1rLmdldEludDMyKERlLCEwKTtEZSs9Tmcsdys9QW4sQW49ay5nZXRJbnQzMihEZSwhMCkseCs9QW4qMyxEKz1IK0RHfWxldCBYPVtdLHR0PVtdLEI9bmV3IEFycmF5KHcpLEl0PW5ldyBBcnJheSh3KSxndD1uZXcgQXJyYXkodyksWXQ9aD9uZXcgQXJyYXkodyk6W10sTXQ9VT9uZXcgQXJyYXkodyk6W10sQ3Q9bmV3IEFycmF5KHgpLHp0PVtdLGt0PVtdLEp0PVtdLFd0PVtdLEZ0PTAsZWU9MDtmb3IoRD0wLGo9MDtqPDQ7KytqKXtIPWsuZ2V0VWludDMyKEQsITApLEQrPURHO2xldCBEZT1ELFllPUwudG9SYWRpYW5zKGsuZ2V0RmxvYXQ2NChELCEwKSoxODApO0QrPUNkO2xldCBCaT1MLnRvUmFkaWFucyhrLmdldEZsb2F0NjQoRCwhMCkqMTgwKTtEKz1DZDtsZXQgQW49TC50b1JhZGlhbnMoay5nZXRGbG9hdDY0KEQsITApKjE4MCksTmU9QW4qLjU7RCs9Q2Q7bGV0IGVpPUwudG9SYWRpYW5zKGsuZ2V0RmxvYXQ2NChELCEwKSoxODApLF9uPWVpKi41O0QrPUNkO2xldCBocz1rLmdldEludDMyKEQsITApO0QrPU5nO2xldCBRaT1rLmdldEludDMyKEQsITApO0QrPU5nLEQrPU5nO2xldCBubj1uZXcgQXJyYXkoaHMpO2ZvcihsZXQgc249MDtzbjxoczsrK3NuKXtsZXQgQ3M9WWUray5nZXRVaW50OChEKyspKkFuO1lvLmxvbmdpdHVkZT1DcztsZXQgY3M9Qmkray5nZXRVaW50OChEKyspKmVpO1lvLmxhdGl0dWRlPWNzO2xldCB4bj1rLmdldEZsb2F0MzIoRCwhMCk7aWYoRCs9bl90LHhuIT09MCYmeG48ZCYmKHhuKj0tTWF0aC5wb3coMixBKSkseG4qPTYzNzEwMTAsWW8uaGVpZ2h0PXhuLERSKFQsQ3MpIT09LTF8fERSKE4sY3MpIT09LTEpe2xldCBKbj1EUihYLFlvLHV0KTtpZihKbj09PS0xKVgucHVzaCh1dC5jbG9uZShZbykpLHR0LnB1c2goRnQpO2Vsc2V7bm5bc25dPXR0W0puXTtjb250aW51ZX19bm5bc25dPUZ0LE1hdGguYWJzKENzLWYpPE5lP3p0LnB1c2goe2luZGV4OkZ0LGNhcnRvZ3JhcGhpYzp1dC5jbG9uZShZbyl9KTpNYXRoLmFicyhDcy1fKTxOZT9KdC5wdXNoKHtpbmRleDpGdCxjYXJ0b2dyYXBoaWM6dXQuY2xvbmUoWW8pfSk6TWF0aC5hYnMoY3MtRSk8X24/a3QucHVzaCh7aW5kZXg6RnQsY2FydG9ncmFwaGljOnV0LmNsb25lKFlvKX0pOk1hdGguYWJzKGNzLVIpPF9uJiZXdC5wdXNoKHtpbmRleDpGdCxjYXJ0b2dyYXBoaWM6dXQuY2xvbmUoWW8pfSkseT1NYXRoLm1pbih4bix5KSxjPU1hdGgubWF4KHhuLGMpLGd0W0Z0XT14bjtsZXQgUG49aS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihZbyk7aWYoQltGdF09UG4saCYmKFl0W0Z0XT0oa3MuZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShjcyktRykqTSksVSl7bGV0IEpuPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKFBuKTtNdFtGdF09Sm59YXQubXVsdGlwbHlCeVBvaW50KGIsUG4semYpLGwubWluaW11bUJ5Q29tcG9uZW50KHpmLGcsZyksbC5tYXhpbXVtQnlDb21wb25lbnQoemYsVixWKTtsZXQgQWk9KENzLWYpLyhfLWYpO0FpPUwuY2xhbXAoQWksMCwxKTtsZXQgQ2k9KGNzLUUpLyhSLUUpO0NpPUwuY2xhbXAoQ2ksMCwxKSxJdFtGdF09bmV3IG50KEFpLENpKSwrK0Z0fWxldCBraT1RaSozO2ZvcihsZXQgc249MDtzbjxraTsrK3NuLCsrZWUpQ3RbZWVdPW5uW2suZ2V0VWludDE2KEQsITApXSxEKz1pX3Q7aWYoSCE9PUQtRGUpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIHRlcnJhaW4gdGlsZS4iKX1CLmxlbmd0aD1GdCxJdC5sZW5ndGg9RnQsZ3QubGVuZ3RoPUZ0LGgmJihZdC5sZW5ndGg9RnQpLFUmJihNdC5sZW5ndGg9RnQpO2xldCBjZT1GdCxqZT1lZSxPZT17aE1pbjp5LGxhc3RCb3JkZXJQb2ludDp2b2lkIDAsc2tpcnRIZWlnaHQ6YSx0b0VOVTpiLGVsbGlwc29pZDppLG1pbmltdW06ZyxtYXhpbXVtOlZ9O3p0LnNvcnQoZnVuY3Rpb24oRGUsWWUpe3JldHVybiBZZS5jYXJ0b2dyYXBoaWMubGF0aXR1ZGUtRGUuY2FydG9ncmFwaGljLmxhdGl0dWRlfSksa3Quc29ydChmdW5jdGlvbihEZSxZZSl7cmV0dXJuIERlLmNhcnRvZ3JhcGhpYy5sb25naXR1ZGUtWWUuY2FydG9ncmFwaGljLmxvbmdpdHVkZX0pLEp0LnNvcnQoZnVuY3Rpb24oRGUsWWUpe3JldHVybiBEZS5jYXJ0b2dyYXBoaWMubGF0aXR1ZGUtWWUuY2FydG9ncmFwaGljLmxhdGl0dWRlfSksV3Quc29ydChmdW5jdGlvbihEZSxZZSl7cmV0dXJuIFllLmNhcnRvZ3JhcGhpYy5sb25naXR1ZGUtRGUuY2FydG9ncmFwaGljLmxvbmdpdHVkZX0pO2xldCBNZT0xZS01O2lmKGJnKEIsZ3QsSXQsWXQsTXQsQ3QsT2UsenQsLU1lKkksITAsLU1lKkMpLGJnKEIsZ3QsSXQsWXQsTXQsQ3QsT2Usa3QsLU1lKkMsITEpLGJnKEIsZ3QsSXQsWXQsTXQsQ3QsT2UsSnQsTWUqSSwhMCxNZSpDKSxiZyhCLGd0LEl0LFl0LE10LEN0LE9lLFd0LE1lKkMsITEpLHp0Lmxlbmd0aD4wJiZXdC5sZW5ndGg+MCl7bGV0IERlPXp0WzBdLmluZGV4LFllPWNlLEJpPVd0W1d0Lmxlbmd0aC0xXS5pbmRleCxBbj1CLmxlbmd0aC0xO0N0LnB1c2goQmksQW4sWWUsWWUsRGUsQmkpfXc9Qi5sZW5ndGg7bGV0IFVlPU50LmZyb21Qb2ludHMoQiksQ2U7bShuKSYmKENlPXpzLmZyb21SZWN0YW5nbGUobix5LGMsaSkpO2xldCBuaT1uZXcgZEEoaSkuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRQb3NzaWJseVVuZGVyRWxsaXBzb2lkKGUsQix5KSx6ZT1uZXcgcGgoZyxWLGUpLEdlPW5ldyB2YyhlLHplLE9lLmhNaW4sYyxGLCExLGgsVSxvLHIpLFVpPW5ldyBGbG9hdDMyQXJyYXkodypHZS5zdHJpZGUpLFJpPTA7Zm9yKGxldCBEZT0wO0RlPHc7KytEZSlSaT1HZS5lbmNvZGUoVWksUmksQltEZV0sSXRbRGVdLGd0W0RlXSx2b2lkIDAsWXRbRGVdLE10W0RlXSk7bGV0IHNpPXp0Lm1hcChmdW5jdGlvbihEZSl7cmV0dXJuIERlLmluZGV4fSkucmV2ZXJzZSgpLHFlPWt0Lm1hcChmdW5jdGlvbihEZSl7cmV0dXJuIERlLmluZGV4fSkucmV2ZXJzZSgpLFZpPUp0Lm1hcChmdW5jdGlvbihEZSl7cmV0dXJuIERlLmluZGV4fSkucmV2ZXJzZSgpLGduPVd0Lm1hcChmdW5jdGlvbihEZSl7cmV0dXJuIERlLmluZGV4fSkucmV2ZXJzZSgpO3JldHVybiBxZS51bnNoaWZ0KFZpW1ZpLmxlbmd0aC0xXSkscWUucHVzaChzaVswXSksZ24udW5zaGlmdChzaVtzaS5sZW5ndGgtMV0pLGduLnB1c2goVmlbMF0pLHt2ZXJ0aWNlczpVaSxpbmRpY2VzOm5ldyBVaW50MTZBcnJheShDdCksbWF4aW11bUhlaWdodDpjLG1pbmltdW1IZWlnaHQ6eSxlbmNvZGluZzpHZSxib3VuZGluZ1NwaGVyZTNEOlVlLG9yaWVudGVkQm91bmRpbmdCb3g6Q2Usb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6bmksdmVydGV4Q291bnRXaXRob3V0U2tpcnRzOmNlLGluZGV4Q291bnRXaXRob3V0U2tpcnRzOmplLHdlc3RJbmRpY2VzU291dGhUb05vcnRoOnNpLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6cWUsZWFzdEluZGljZXNOb3J0aFRvU291dGg6Vmksbm9ydGhJbmRpY2VzV2VzdFRvRWFzdDpnbn19ZnVuY3Rpb24gYmcodCxlLGksbixzLG8scixhLGgsQSxkKXtsZXQgZj1hLmxlbmd0aDtmb3IobGV0IEU9MDtFPGY7KytFKXtsZXQgXz1hW0VdLFI9Xy5jYXJ0b2dyYXBoaWMsST1fLmluZGV4LEM9dC5sZW5ndGgsTj1SLmxvbmdpdHVkZSxUPVIubGF0aXR1ZGU7VD1MLmNsYW1wKFQsLUwuUElfT1ZFUl9UV08sTC5QSV9PVkVSX1RXTyk7bGV0IEY9Ui5oZWlnaHQtci5za2lydEhlaWdodDtyLmhNaW49TWF0aC5taW4oci5oTWluLEYpLHV0LmZyb21SYWRpYW5zKE4sVCxGLFlvKSxBJiYoWW8ubG9uZ2l0dWRlKz1oKSxBP0U9PT1mLTE/WW8ubGF0aXR1ZGUrPWQ6RT09PTAmJihZby5sYXRpdHVkZS09ZCk6WW8ubGF0aXR1ZGUrPWg7bGV0IGI9ci5lbGxpcHNvaWQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oWW8pO3QucHVzaChiKSxlLnB1c2goRiksaS5wdXNoKG50LmNsb25lKGlbSV0pKSxuLmxlbmd0aD4wJiZuLnB1c2gobltJXSkscy5sZW5ndGg+MCYmcy5wdXNoKHNbSV0pLGF0Lm11bHRpcGx5QnlQb2ludChyLnRvRU5VLGIsemYpO2xldCBHPXIubWluaW11bSxNPXIubWF4aW11bTtsLm1pbmltdW1CeUNvbXBvbmVudCh6ZixHLEcpLGwubWF4aW11bUJ5Q29tcG9uZW50KHpmLE0sTSk7bGV0IFE9ci5sYXN0Qm9yZGVyUG9pbnQ7aWYobShRKSl7bGV0IFU9US5pbmRleDtvLnB1c2goVSxDLTEsQyxDLEksVSl9ci5sYXN0Qm9yZGVyUG9pbnQ9X319dmFyIGlfdCxOZyxERyxuX3QsQ2QsWW8semYsb190LHJfdCxhX3QsaF90LFVHPU8oKCk9PnthXygpO19pKCk7WGUoKTtIdCgpO3JpKCk7YnQoKTttdCgpO1ZlKCk7U20oKTtfZSgpO0ZpKCk7SmwoKTtwbigpO1BzKCk7V1IoKTtmcigpO1VsKCk7TnMoKTtpX3Q9VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsTmc9SW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxERz1VaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxuX3Q9RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULENkPUZsb2F0NjRBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtZbz1uZXcgdXQsemY9bmV3IGwsb190PW5ldyBsLHJfdD1uZXcgbCxhX3Q9bmV3IGF0O2hfdD1XaShzX3QpfSk7dmFyIGNfdCxxNiwkNj1PKCgpPT57Y190PXtOT05FOjAsTEVSQzoxfSxxNj1PYmplY3QuZnJlZXplKGNfdCl9KTt2YXIgREEsUUcsbF90LGRfdCxtX3QsdEssZUs9TygoKT0+e2FfKCk7X2koKTtYZSgpO0h0KCk7YnQoKTttdCgpO1Z0KCk7VmUoKTtTbSgpO19lKCk7RmkoKTtKbCgpO3BuKCk7V1IoKTtmcigpO1VsKCk7REE9e307REEuREVGQVVMVF9TVFJVQ1RVUkU9T2JqZWN0LmZyZWV6ZSh7aGVpZ2h0U2NhbGU6MSxoZWlnaHRPZmZzZXQ6MCxlbGVtZW50c1BlckhlaWdodDoxLHN0cmlkZToxLGVsZW1lbnRNdWx0aXBsaWVyOjI1Nixpc0JpZ0VuZGlhbjohMX0pO1FHPW5ldyBsLGxfdD1uZXcgYXQsZF90PW5ldyBsLG1fdD1uZXcgbDtEQS5jb21wdXRlVmVydGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCl8fCFtKHQuaGVpZ2h0bWFwKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5oZWlnaHRtYXAgaXMgcmVxdWlyZWQuIik7aWYoIW0odC53aWR0aCl8fCFtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgWSgib3B0aW9ucy53aWR0aCBhbmQgb3B0aW9ucy5oZWlnaHQgYXJlIHJlcXVpcmVkLiIpO2lmKCFtKHQubmF0aXZlUmVjdGFuZ2xlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5uYXRpdmVSZWN0YW5nbGUgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5za2lydEhlaWdodCkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuc2tpcnRIZWlnaHQgaXMgcmVxdWlyZWQuIik7bGV0IGU9TWF0aC5jb3MsaT1NYXRoLnNpbixuPU1hdGguc3FydCxzPU1hdGguYXRhbixvPU1hdGguZXhwLHI9TC5QSV9PVkVSX1RXTyxhPUwudG9SYWRpYW5zLGg9dC5oZWlnaHRtYXAsQT10LndpZHRoLGQ9dC5oZWlnaHQsZj10LnNraXJ0SGVpZ2h0LEU9Zj4wLF89Wih0LmlzR2VvZ3JhcGhpYywhMCksUj1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxJPTEvUi5tYXhpbXVtUmFkaXVzLEM9WHQuY2xvbmUodC5uYXRpdmVSZWN0YW5nbGUpLE49WHQuY2xvbmUodC5yZWN0YW5nbGUpLFQsRixiLEc7bShOKT8oVD1OLndlc3QsRj1OLnNvdXRoLGI9Ti5lYXN0LEc9Ti5ub3J0aCk6Xz8oVD1hKEMud2VzdCksRj1hKEMuc291dGgpLGI9YShDLmVhc3QpLEc9YShDLm5vcnRoKSk6KFQ9Qy53ZXN0KkksRj1yLTIqcyhvKC1DLnNvdXRoKkkpKSxiPUMuZWFzdCpJLEc9ci0yKnMobygtQy5ub3J0aCpJKSkpO2xldCBNPXQucmVsYXRpdmVUb0NlbnRlcixRPW0oTSk7TT1RP006bC5aRVJPO2xldCBVPVoodC5pbmNsdWRlV2ViTWVyY2F0b3JULCExKSxrPVoodC5leGFnZ2VyYXRpb24sMSkseT1aKHQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsMCksZz1rIT09MSxWPVoodC5zdHJ1Y3R1cmUsREEuREVGQVVMVF9TVFJVQ1RVUkUpLEQ9WihWLmhlaWdodFNjYWxlLERBLkRFRkFVTFRfU1RSVUNUVVJFLmhlaWdodFNjYWxlKSx3PVooVi5oZWlnaHRPZmZzZXQsREEuREVGQVVMVF9TVFJVQ1RVUkUuaGVpZ2h0T2Zmc2V0KSx4PVooVi5lbGVtZW50c1BlckhlaWdodCxEQS5ERUZBVUxUX1NUUlVDVFVSRS5lbGVtZW50c1BlckhlaWdodCksSD1aKFYuc3RyaWRlLERBLkRFRkFVTFRfU1RSVUNUVVJFLnN0cmlkZSksaj1aKFYuZWxlbWVudE11bHRpcGxpZXIsREEuREVGQVVMVF9TVFJVQ1RVUkUuZWxlbWVudE11bHRpcGxpZXIpLFg9WihWLmlzQmlnRW5kaWFuLERBLkRFRkFVTFRfU1RSVUNUVVJFLmlzQmlnRW5kaWFuKSx0dD1YdC5jb21wdXRlV2lkdGgoQyksQj1YdC5jb21wdXRlSGVpZ2h0KEMpLEl0PXR0LyhBLTEpLGd0PUIvKGQtMSk7X3x8KHR0Kj1JLEIqPUkpO2xldCBZdD1SLnJhZGlpU3F1YXJlZCxNdD1ZdC54LEN0PVl0LnksenQ9WXQueixrdD02NTUzNixKdD0tNjU1MzYsV3Q9SW4uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoTSxSKSxGdD1hdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24oV3QsbF90KSxlZSxjZTtVJiYoZWU9a3MuZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShGKSxjZT0xLyhrcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKEcpLWVlKSk7bGV0IGplPWRfdDtqZS54PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxqZS55PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxqZS56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgT2U9bV90O09lLng9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLE9lLnk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLE9lLno9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2xldCBNZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksVWU9QSpkLENlPWY+MD9BKjIrZCoyOjAsYmU9VWUrQ2Usbmk9bmV3IEFycmF5KGJlKSx6ZT1uZXcgQXJyYXkoYmUpLEdlPW5ldyBBcnJheShiZSksVWk9VT9uZXcgQXJyYXkoYmUpOltdLFJpPWc/bmV3IEFycmF5KGJlKTpbXSxzaT0wLHFlPWQsVmk9MCxnbj1BO0UmJigtLXNpLCsrcWUsLS1WaSwrK2duKTtsZXQgRGU9MWUtNTtmb3IobGV0IFFpPXNpO1FpPHFlOysrUWkpe2xldCBubj1RaTtubjwwJiYobm49MCksbm4+PWQmJihubj1kLTEpO2xldCBraT1DLm5vcnRoLWd0Km5uO18/a2k9YShraSk6a2k9ci0yKnMobygta2kqSSkpO2xldCBzbj0oa2ktRikvKEctRik7c249TC5jbGFtcChzbiwwLDEpO2xldCBDcz1RaT09PXNpLGNzPVFpPT09cWUtMTtmPjAmJihDcz9raSs9RGUqQjpjcyYmKGtpLT1EZSpCKSk7bGV0IHhuPWUoa2kpLFBuPWkoa2kpLEFpPXp0KlBuLENpO1UmJihDaT0oa3MuZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShraSktZWUpKmNlKTtmb3IobGV0IEpuPVZpO0puPGduOysrSm4pe2xldCBscz1KbjtsczwwJiYobHM9MCksbHM+PUEmJihscz1BLTEpO2xldCBhbz1ubiooQSpIKStscypILHFpO2lmKHg9PT0xKXFpPWhbYW9dO2Vsc2V7cWk9MDtsZXQgVG47aWYoWClmb3IoVG49MDtUbjx4OysrVG4pcWk9cWkqaitoW2FvK1RuXTtlbHNlIGZvcihUbj14LTE7VG4+PTA7LS1UbilxaT1xaSpqK2hbYW8rVG5dfXFpPXFpKkQrdyxKdD1NYXRoLm1heChKdCxxaSksa3Q9TWF0aC5taW4oa3QscWkpO2xldCBobj1DLndlc3QrSXQqbHM7Xz9obj1hKGhuKTpobj1obipJO2xldCBqbz0oaG4tVCkvKGItVCk7am89TC5jbGFtcChqbywwLDEpO2xldCBkcz1ubipBK2xzO2lmKGY+MCl7bGV0IFRuPUpuPT09VmksaHI9Sm49PT1nbi0xLE1oPUNzfHxjc3x8VG58fGhyO2lmKChDc3x8Y3MpJiYoVG58fGhyKSljb250aW51ZTtNaCYmKHFpLT1mLFRuPyhkcz1VZSsoZC1ubi0xKSxobi09RGUqdHQpOmNzP2RzPVVlK2QrKEEtbHMtMSk6aHI/KGRzPVVlK2QrQStubixobis9RGUqdHQpOkNzJiYoZHM9VWUrZCtBK2QrbHMpKX1sZXQgb249eG4qZShobiksd3M9eG4qaShobiksU289TXQqb24sRnI9Q3Qqd3MsJGU9MS9uKFNvKm9uK0ZyKndzK0FpKlBuKSxhYT1TbyokZSxZcj1GciokZSx4cz1BaSokZSxncz1uZXcgbDtncy54PWFhK29uKnFpLGdzLnk9WXIrd3MqcWksZ3Muej14cytQbipxaSxhdC5tdWx0aXBseUJ5UG9pbnQoRnQsZ3MsUUcpLGwubWluaW11bUJ5Q29tcG9uZW50KFFHLGplLGplKSxsLm1heGltdW1CeUNvbXBvbmVudChRRyxPZSxPZSksTWU9TWF0aC5taW4oTWUscWkpLG5pW2RzXT1ncyxHZVtkc109bmV3IG50KGpvLHNuKSx6ZVtkc109cWksVSYmKFVpW2RzXT1DaSksZyYmKFJpW2RzXT1SLmdlb2RldGljU3VyZmFjZU5vcm1hbChncykpfX1sZXQgWWU9TnQuZnJvbVBvaW50cyhuaSksQmk7bShOKSYmKEJpPXpzLmZyb21SZWN0YW5nbGUoTixrdCxKdCxSKSk7bGV0IEFuO1EmJihBbj1uZXcgZEEoUikuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRQb3NzaWJseVVuZGVyRWxsaXBzb2lkKE0sbmksa3QpKTtsZXQgTmU9bmV3IHBoKGplLE9lLE0pLGVpPW5ldyB2YyhNLE5lLE1lLEp0LFd0LCExLFUsZyxrLHkpLF9uPW5ldyBGbG9hdDMyQXJyYXkoYmUqZWkuc3RyaWRlKSxocz0wO2ZvcihsZXQgUWk9MDtRaTxiZTsrK1FpKWhzPWVpLmVuY29kZShfbixocyxuaVtRaV0sR2VbUWldLHplW1FpXSx2b2lkIDAsVWlbUWldLFJpW1FpXSk7cmV0dXJue3ZlcnRpY2VzOl9uLG1heGltdW1IZWlnaHQ6SnQsbWluaW11bUhlaWdodDprdCxlbmNvZGluZzplaSxib3VuZGluZ1NwaGVyZTNEOlllLG9yaWVudGVkQm91bmRpbmdCb3g6Qmksb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6QW59fTt0Sz1EQX0pO3ZhciBpSz10cygoQVNlLEZnKT0+ey8qIENvcHlyaWdodCAyMDE1LTIwMTggRXNyaS4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCBAcHJlc2VydmUgKi8oZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe3ZhciBzPXt9O3MuZGVmYXVsdE5vRGF0YVZhbHVlPS0zNDAyNzk5OTM4NzkwMTQ4NGUyMixzLmRlY29kZT1mdW5jdGlvbihkLGYpe2Y9Znx8e307dmFyIEU9Zi5lbmNvZGVkTWFza0RhdGF8fGYuZW5jb2RlZE1hc2tEYXRhPT09bnVsbCxfPWgoZCxmLmlucHV0T2Zmc2V0fHwwLEUpLFI9Zi5ub0RhdGFWYWx1ZSE9PW51bGw/Zi5ub0RhdGFWYWx1ZTpzLmRlZmF1bHROb0RhdGFWYWx1ZSxJPW8oXyxmLnBpeGVsVHlwZXx8RmxvYXQzMkFycmF5LGYuZW5jb2RlZE1hc2tEYXRhLFIsZi5yZXR1cm5NYXNrKSxDPXt3aWR0aDpfLndpZHRoLGhlaWdodDpfLmhlaWdodCxwaXhlbERhdGE6SS5yZXN1bHRQaXhlbHMsbWluVmFsdWU6SS5taW5WYWx1ZSxtYXhWYWx1ZTpfLnBpeGVscy5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpSfTtyZXR1cm4gSS5yZXN1bHRNYXNrJiYoQy5tYXNrRGF0YT1JLnJlc3VsdE1hc2spLGYucmV0dXJuRW5jb2RlZE1hc2smJl8ubWFzayYmKEMuZW5jb2RlZE1hc2tEYXRhPV8ubWFzay5iaXRzZXQ/Xy5tYXNrLmJpdHNldDpudWxsKSxmLnJldHVybkZpbGVJbmZvJiYoQy5maWxlSW5mbz1yKF8pLGYuY29tcHV0ZVVzZWRCaXREZXB0aHMmJihDLmZpbGVJbmZvLmJpdERlcHRocz1hKF8pKSksQ307dmFyIG89ZnVuY3Rpb24oZCxmLEUsXyxSKXt2YXIgST0wLEM9ZC5waXhlbHMubnVtQmxvY2tzWCxOPWQucGl4ZWxzLm51bUJsb2Nrc1ksVD1NYXRoLmZsb29yKGQud2lkdGgvQyksRj1NYXRoLmZsb29yKGQuaGVpZ2h0L04pLGI9MipkLm1heFpFcnJvcixHPU51bWJlci5NQVhfVkFMVUUsTTtFPUV8fChkLm1hc2s/ZC5tYXNrLmJpdHNldDpudWxsKTt2YXIgUSxVO1E9bmV3IGYoZC53aWR0aCpkLmhlaWdodCksUiYmRSYmKFU9bmV3IFVpbnQ4QXJyYXkoZC53aWR0aCpkLmhlaWdodCkpO2Zvcih2YXIgaz1uZXcgRmxvYXQzMkFycmF5KFQqRikseSxjLGc9MDtnPD1OO2crKyl7dmFyIFY9ZyE9PU4/RjpkLmhlaWdodCVOO2lmKFYhPT0wKWZvcih2YXIgRD0wO0Q8PUM7RCsrKXt2YXIgdz1EIT09Qz9UOmQud2lkdGglQztpZih3IT09MCl7dmFyIHg9ZypkLndpZHRoKkYrRCpULEg9ZC53aWR0aC13LGo9ZC5waXhlbHMuYmxvY2tzW0ldLFgsdHQsQjtqLmVuY29kaW5nPDI/KGouZW5jb2Rpbmc9PT0wP1g9ai5yYXdEYXRhOihBKGouc3R1ZmZlZERhdGEsai5iaXRzUGVyUGl4ZWwsai5udW1WYWxpZFBpeGVscyxqLm9mZnNldCxiLGssZC5waXhlbHMubWF4VmFsdWUpLFg9ayksdHQ9MCk6ai5lbmNvZGluZz09PTI/Qj0wOkI9ai5vZmZzZXQ7dmFyIEl0O2lmKEUpZm9yKGM9MDtjPFY7YysrKXtmb3IoeCY3JiYoSXQ9RVt4Pj4zXSxJdDw8PXgmNykseT0wO3k8dzt5KyspeCY3fHwoSXQ9RVt4Pj4zXSksSXQmMTI4PyhVJiYoVVt4XT0xKSxNPWouZW5jb2Rpbmc8Mj9YW3R0KytdOkIsRz1HPk0/TTpHLFFbeCsrXT1NKTooVSYmKFVbeF09MCksUVt4KytdPV8pLEl0PDw9MTt4Kz1IfWVsc2UgaWYoai5lbmNvZGluZzwyKWZvcihjPTA7YzxWO2MrKyl7Zm9yKHk9MDt5PHc7eSsrKU09WFt0dCsrXSxHPUc+TT9NOkcsUVt4KytdPU07eCs9SH1lbHNlIGZvcihHPUc+Qj9COkcsYz0wO2M8VjtjKyspe2Zvcih5PTA7eTx3O3krKylRW3grK109Qjt4Kz1IfWlmKGouZW5jb2Rpbmc9PT0xJiZ0dCE9PWoubnVtVmFsaWRQaXhlbHMpdGhyb3ciQmxvY2sgYW5kIE1hc2sgZG8gbm90IG1hdGNoIjtJKyt9fX1yZXR1cm57cmVzdWx0UGl4ZWxzOlEscmVzdWx0TWFzazpVLG1pblZhbHVlOkd9fSxyPWZ1bmN0aW9uKGQpe3JldHVybntmaWxlSWRlbnRpZmllclN0cmluZzpkLmZpbGVJZGVudGlmaWVyU3RyaW5nLGZpbGVWZXJzaW9uOmQuZmlsZVZlcnNpb24saW1hZ2VUeXBlOmQuaW1hZ2VUeXBlLGhlaWdodDpkLmhlaWdodCx3aWR0aDpkLndpZHRoLG1heFpFcnJvcjpkLm1heFpFcnJvcixlb2ZPZmZzZXQ6ZC5lb2ZPZmZzZXQsbWFzazpkLm1hc2s/e251bUJsb2Nrc1g6ZC5tYXNrLm51bUJsb2Nrc1gsbnVtQmxvY2tzWTpkLm1hc2subnVtQmxvY2tzWSxudW1CeXRlczpkLm1hc2subnVtQnl0ZXMsbWF4VmFsdWU6ZC5tYXNrLm1heFZhbHVlfTpudWxsLHBpeGVsczp7bnVtQmxvY2tzWDpkLnBpeGVscy5udW1CbG9ja3NYLG51bUJsb2Nrc1k6ZC5waXhlbHMubnVtQmxvY2tzWSxudW1CeXRlczpkLnBpeGVscy5udW1CeXRlcyxtYXhWYWx1ZTpkLnBpeGVscy5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpkLm5vRGF0YVZhbHVlfX19LGE9ZnVuY3Rpb24oZCl7Zm9yKHZhciBmPWQucGl4ZWxzLm51bUJsb2Nrc1gqZC5waXhlbHMubnVtQmxvY2tzWSxFPXt9LF89MDtfPGY7XysrKXt2YXIgUj1kLnBpeGVscy5ibG9ja3NbX107Ui5lbmNvZGluZz09PTA/RS5mbG9hdDMyPSEwOlIuZW5jb2Rpbmc9PT0xP0VbUi5iaXRzUGVyUGl4ZWxdPSEwOkVbMF09ITB9cmV0dXJuIE9iamVjdC5rZXlzKEUpfSxoPWZ1bmN0aW9uKGQsZixFKXt2YXIgXz17fSxSPW5ldyBVaW50OEFycmF5KGQsZiwxMCk7aWYoXy5maWxlSWRlbnRpZmllclN0cmluZz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsUiksXy5maWxlSWRlbnRpZmllclN0cmluZy50cmltKCkhPT0iQ250WkltYWdlIil0aHJvdyJVbmV4cGVjdGVkIGZpbGUgaWRlbnRpZmllciBzdHJpbmc6ICIrXy5maWxlSWRlbnRpZmllclN0cmluZztmKz0xMDt2YXIgST1uZXcgRGF0YVZpZXcoZCxmLDI0KTtpZihfLmZpbGVWZXJzaW9uPUkuZ2V0SW50MzIoMCwhMCksXy5pbWFnZVR5cGU9SS5nZXRJbnQzMig0LCEwKSxfLmhlaWdodD1JLmdldFVpbnQzMig4LCEwKSxfLndpZHRoPUkuZ2V0VWludDMyKDEyLCEwKSxfLm1heFpFcnJvcj1JLmdldEZsb2F0NjQoMTYsITApLGYrPTI0LCFFKWlmKEk9bmV3IERhdGFWaWV3KGQsZiwxNiksXy5tYXNrPXt9LF8ubWFzay5udW1CbG9ja3NZPUkuZ2V0VWludDMyKDAsITApLF8ubWFzay5udW1CbG9ja3NYPUkuZ2V0VWludDMyKDQsITApLF8ubWFzay5udW1CeXRlcz1JLmdldFVpbnQzMig4LCEwKSxfLm1hc2subWF4VmFsdWU9SS5nZXRGbG9hdDMyKDEyLCEwKSxmKz0xNixfLm1hc2subnVtQnl0ZXM+MCl7dmFyIEM9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKF8ud2lkdGgqXy5oZWlnaHQvOCkpO0k9bmV3IERhdGFWaWV3KGQsZixfLm1hc2subnVtQnl0ZXMpO3ZhciBOPUkuZ2V0SW50MTYoMCwhMCksVD0yLEY9MDtkb3tpZihOPjApZm9yKDtOLS07KUNbRisrXT1JLmdldFVpbnQ4KFQrKyk7ZWxzZXt2YXIgYj1JLmdldFVpbnQ4KFQrKyk7Zm9yKE49LU47Ti0tOylDW0YrK109Yn1OPUkuZ2V0SW50MTYoVCwhMCksVCs9Mn13aGlsZShUPF8ubWFzay5udW1CeXRlcyk7aWYoTiE9PS0zMjc2OHx8RjxDLmxlbmd0aCl0aHJvdyJVbmV4cGVjdGVkIGVuZCBvZiBtYXNrIFJMRSBlbmNvZGluZyI7Xy5tYXNrLmJpdHNldD1DLGYrPV8ubWFzay5udW1CeXRlc31lbHNlIF8ubWFzay5udW1CeXRlc3xfLm1hc2subnVtQmxvY2tzWXxfLm1hc2subWF4VmFsdWV8fChfLm1hc2suYml0c2V0PW5ldyBVaW50OEFycmF5KE1hdGguY2VpbChfLndpZHRoKl8uaGVpZ2h0LzgpKSk7ST1uZXcgRGF0YVZpZXcoZCxmLDE2KSxfLnBpeGVscz17fSxfLnBpeGVscy5udW1CbG9ja3NZPUkuZ2V0VWludDMyKDAsITApLF8ucGl4ZWxzLm51bUJsb2Nrc1g9SS5nZXRVaW50MzIoNCwhMCksXy5waXhlbHMubnVtQnl0ZXM9SS5nZXRVaW50MzIoOCwhMCksXy5waXhlbHMubWF4VmFsdWU9SS5nZXRGbG9hdDMyKDEyLCEwKSxmKz0xNjt2YXIgRz1fLnBpeGVscy5udW1CbG9ja3NYLE09Xy5waXhlbHMubnVtQmxvY2tzWSxRPUcrKF8ud2lkdGglRz4wPzE6MCksVT1NKyhfLmhlaWdodCVNPjA/MTowKTtfLnBpeGVscy5ibG9ja3M9bmV3IEFycmF5KFEqVSk7Zm9yKHZhciBrPTAseT0wO3k8VTt5KyspZm9yKHZhciBjPTA7YzxRO2MrKyl7dmFyIGc9MCxWPWQuYnl0ZUxlbmd0aC1mO0k9bmV3IERhdGFWaWV3KGQsZixNYXRoLm1pbigxMCxWKSk7dmFyIEQ9e307Xy5waXhlbHMuYmxvY2tzW2srK109RDt2YXIgdz1JLmdldFVpbnQ4KDApO2lmKGcrKyxELmVuY29kaW5nPXcmNjMsRC5lbmNvZGluZz4zKXRocm93IkludmFsaWQgYmxvY2sgZW5jb2RpbmcgKCIrRC5lbmNvZGluZysiKSI7aWYoRC5lbmNvZGluZz09PTIpe2YrKztjb250aW51ZX1pZih3IT09MCYmdyE9PTIpe2lmKHc+Pj02LEQub2Zmc2V0VHlwZT13LHc9PT0yKUQub2Zmc2V0PUkuZ2V0SW50OCgxKSxnKys7ZWxzZSBpZih3PT09MSlELm9mZnNldD1JLmdldEludDE2KDEsITApLGcrPTI7ZWxzZSBpZih3PT09MClELm9mZnNldD1JLmdldEZsb2F0MzIoMSwhMCksZys9NDtlbHNlIHRocm93IkludmFsaWQgYmxvY2sgb2Zmc2V0IHR5cGUiO2lmKEQuZW5jb2Rpbmc9PT0xKWlmKHc9SS5nZXRVaW50OChnKSxnKyssRC5iaXRzUGVyUGl4ZWw9dyY2Myx3Pj49NixELm51bVZhbGlkUGl4ZWxzVHlwZT13LHc9PT0yKUQubnVtVmFsaWRQaXhlbHM9SS5nZXRVaW50OChnKSxnKys7ZWxzZSBpZih3PT09MSlELm51bVZhbGlkUGl4ZWxzPUkuZ2V0VWludDE2KGcsITApLGcrPTI7ZWxzZSBpZih3PT09MClELm51bVZhbGlkUGl4ZWxzPUkuZ2V0VWludDMyKGcsITApLGcrPTQ7ZWxzZSB0aHJvdyJJbnZhbGlkIHZhbGlkIHBpeGVsIGNvdW50IHR5cGUifWlmKGYrPWcsRC5lbmNvZGluZyE9PTMpe3ZhciB4LEg7aWYoRC5lbmNvZGluZz09PTApe3ZhciBqPShfLnBpeGVscy5udW1CeXRlcy0xKS80O2lmKGohPT1NYXRoLmZsb29yKGopKXRocm93InVuY29tcHJlc3NlZCBibG9jayBoYXMgaW52YWxpZCBsZW5ndGgiO3g9bmV3IEFycmF5QnVmZmVyKGoqNCksSD1uZXcgVWludDhBcnJheSh4KSxILnNldChuZXcgVWludDhBcnJheShkLGYsaio0KSk7dmFyIFg9bmV3IEZsb2F0MzJBcnJheSh4KTtELnJhd0RhdGE9WCxmKz1qKjR9ZWxzZSBpZihELmVuY29kaW5nPT09MSl7dmFyIHR0PU1hdGguY2VpbChELm51bVZhbGlkUGl4ZWxzKkQuYml0c1BlclBpeGVsLzgpLEI9TWF0aC5jZWlsKHR0LzQpO3g9bmV3IEFycmF5QnVmZmVyKEIqNCksSD1uZXcgVWludDhBcnJheSh4KSxILnNldChuZXcgVWludDhBcnJheShkLGYsdHQpKSxELnN0dWZmZWREYXRhPW5ldyBVaW50MzJBcnJheSh4KSxmKz10dH19fXJldHVybiBfLmVvZk9mZnNldD1mLF99LEE9ZnVuY3Rpb24oZCxmLEUsXyxSLEksQyl7dmFyIE49KDE8PGYpLTEsVD0wLEYsYj0wLEcsTSxRPU1hdGguY2VpbCgoQy1fKS9SKSxVPWQubGVuZ3RoKjQtTWF0aC5jZWlsKGYqRS84KTtmb3IoZFtkLmxlbmd0aC0xXTw8PTgqVSxGPTA7RjxFO0YrKyl7aWYoYj09PTAmJihNPWRbVCsrXSxiPTMyKSxiPj1mKUc9TT4+PmItZiZOLGItPWY7ZWxzZXt2YXIgaz1mLWI7Rz0oTSZOKTw8ayZOLE09ZFtUKytdLGI9MzItayxHKz1NPj4+Yn1JW0ZdPUc8UT9fK0cqUjpDfXJldHVybiBJfTtyZXR1cm4gc30oKSxlPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBzPXt1bnN0dWZmOmZ1bmN0aW9uKGgsQSxkLGYsRSxfLFIsSSl7dmFyIEM9KDE8PGQpLTEsTj0wLFQsRj0wLGIsRyxNLFEsVT1oLmxlbmd0aCo0LU1hdGguY2VpbChkKmYvOCk7aWYoaFtoLmxlbmd0aC0xXTw8PTgqVSxFKWZvcihUPTA7VDxmO1QrKylGPT09MCYmKEc9aFtOKytdLEY9MzIpLEY+PWQ/KGI9Rz4+PkYtZCZDLEYtPWQpOihNPWQtRixiPShHJkMpPDxNJkMsRz1oW04rK10sRj0zMi1NLGIrPUc+Pj5GKSxBW1RdPUVbYl07ZWxzZSBmb3IoUT1NYXRoLmNlaWwoKEktXykvUiksVD0wO1Q8ZjtUKyspRj09PTAmJihHPWhbTisrXSxGPTMyKSxGPj1kPyhiPUc+Pj5GLWQmQyxGLT1kKTooTT1kLUYsYj0oRyZDKTw8TSZDLEc9aFtOKytdLEY9MzItTSxiKz1HPj4+RiksQVtUXT1iPFE/XytiKlI6SX0sdW5zdHVmZkxVVDpmdW5jdGlvbihoLEEsZCxmLEUsXyl7dmFyIFI9KDE8PEEpLTEsST0wLEM9MCxOPTAsVD0wLEY9MCxiLEc9W10sTT1oLmxlbmd0aCo0LU1hdGguY2VpbChBKmQvOCk7aFtoLmxlbmd0aC0xXTw8PTgqTTt2YXIgUT1NYXRoLmNlaWwoKF8tZikvRSk7Zm9yKEM9MDtDPGQ7QysrKVQ9PT0wJiYoYj1oW0krK10sVD0zMiksVD49QT8oRj1iPj4+VC1BJlIsVC09QSk6KE49QS1ULEY9KGImUik8PE4mUixiPWhbSSsrXSxUPTMyLU4sRis9Yj4+PlQpLEdbQ109RjxRP2YrRipFOl87cmV0dXJuIEcudW5zaGlmdChmKSxHfSx1bnN0dWZmMjpmdW5jdGlvbihoLEEsZCxmLEUsXyxSLEkpe3ZhciBDPSgxPDxkKS0xLE49MCxULEY9MCxiPTAsRyxNLFE7aWYoRSlmb3IoVD0wO1Q8ZjtUKyspRj09PTAmJihNPWhbTisrXSxGPTMyLGI9MCksRj49ZD8oRz1NPj4+YiZDLEYtPWQsYis9ZCk6KFE9ZC1GLEc9TT4+PmImQyxNPWhbTisrXSxGPTMyLVEsR3w9KE0mKDE8PFEpLTEpPDxkLVEsYj1RKSxBW1RdPUVbR107ZWxzZXt2YXIgVT1NYXRoLmNlaWwoKEktXykvUik7Zm9yKFQ9MDtUPGY7VCsrKUY9PT0wJiYoTT1oW04rK10sRj0zMixiPTApLEY+PWQ/KEc9TT4+PmImQyxGLT1kLGIrPWQpOihRPWQtRixHPU0+Pj5iJkMsTT1oW04rK10sRj0zMi1RLEd8PShNJigxPDxRKS0xKTw8ZC1RLGI9USksQVtUXT1HPFU/XytHKlI6SX1yZXR1cm4gQX0sdW5zdHVmZkxVVDI6ZnVuY3Rpb24oaCxBLGQsZixFLF8pe3ZhciBSPSgxPDxBKS0xLEk9MCxDPTAsTj0wLFQ9MCxGPTAsYj0wLEcsTT1bXSxRPU1hdGguY2VpbCgoXy1mKS9FKTtmb3IoQz0wO0M8ZDtDKyspVD09PTAmJihHPWhbSSsrXSxUPTMyLGI9MCksVD49QT8oRj1HPj4+YiZSLFQtPUEsYis9QSk6KE49QS1ULEY9Rz4+PmImUixHPWhbSSsrXSxUPTMyLU4sRnw9KEcmKDE8PE4pLTEpPDxBLU4sYj1OKSxNW0NdPUY8UT9mK0YqRTpfO3JldHVybiBNLnVuc2hpZnQoZiksTX0sb3JpZ2luYWxVbnN0dWZmOmZ1bmN0aW9uKGgsQSxkLGYpe3ZhciBFPSgxPDxkKS0xLF89MCxSLEk9MCxDLE4sVCxGPWgubGVuZ3RoKjQtTWF0aC5jZWlsKGQqZi84KTtmb3IoaFtoLmxlbmd0aC0xXTw8PTgqRixSPTA7UjxmO1IrKylJPT09MCYmKE49aFtfKytdLEk9MzIpLEk+PWQ/KEM9Tj4+PkktZCZFLEktPWQpOihUPWQtSSxDPShOJkUpPDxUJkUsTj1oW18rK10sST0zMi1ULEMrPU4+Pj5JKSxBW1JdPUM7cmV0dXJuIEF9LG9yaWdpbmFsVW5zdHVmZjI6ZnVuY3Rpb24oaCxBLGQsZil7dmFyIEU9KDE8PGQpLTEsXz0wLFIsST0wLEM9MCxOLFQsRjtmb3IoUj0wO1I8ZjtSKyspST09PTAmJihUPWhbXysrXSxJPTMyLEM9MCksST49ZD8oTj1UPj4+QyZFLEktPWQsQys9ZCk6KEY9ZC1JLE49VD4+PkMmRSxUPWhbXysrXSxJPTMyLUYsTnw9KFQmKDE8PEYpLTEpPDxkLUYsQz1GKSxBW1JdPU47cmV0dXJuIEF9fSxvPXtIVUZGTUFOX0xVVF9CSVRTX01BWDoxMixjb21wdXRlQ2hlY2tzdW1GbGV0Y2hlcjMyOmZ1bmN0aW9uKGgpe2Zvcih2YXIgQT02NTUzNSxkPTY1NTM1LGY9aC5sZW5ndGgsRT1NYXRoLmZsb29yKGYvMiksXz0wO0U7KXt2YXIgUj1FPj0zNTk/MzU5OkU7RS09UjtkbyBBKz1oW18rK108PDgsZCs9QSs9aFtfKytdO3doaWxlKC0tUik7QT0oQSY2NTUzNSkrKEE+Pj4xNiksZD0oZCY2NTUzNSkrKGQ+Pj4xNil9cmV0dXJuIGYmMSYmKGQrPUErPWhbX108PDgpLEE9KEEmNjU1MzUpKyhBPj4+MTYpLGQ9KGQmNjU1MzUpKyhkPj4+MTYpLChkPDwxNnxBKT4+PjB9LHJlYWRIZWFkZXJJbmZvOmZ1bmN0aW9uKGgsQSl7dmFyIGQ9QS5wdHIsZj1uZXcgVWludDhBcnJheShoLGQsNiksRT17fTtpZihFLmZpbGVJZGVudGlmaWVyU3RyaW5nPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxmKSxFLmZpbGVJZGVudGlmaWVyU3RyaW5nLmxhc3RJbmRleE9mKCJMZXJjMiIsMCkhPT0wKXRocm93IlVuZXhwZWN0ZWQgZmlsZSBpZGVudGlmaWVyIHN0cmluZyAoZXhwZWN0IExlcmMyICk6ICIrRS5maWxlSWRlbnRpZmllclN0cmluZztkKz02O3ZhciBfPW5ldyBEYXRhVmlldyhoLGQsOCksUj1fLmdldEludDMyKDAsITApO0UuZmlsZVZlcnNpb249UixkKz00LFI+PTMmJihFLmNoZWNrc3VtPV8uZ2V0VWludDMyKDQsITApLGQrPTQpLF89bmV3IERhdGFWaWV3KGgsZCwxMiksRS5oZWlnaHQ9Xy5nZXRVaW50MzIoMCwhMCksRS53aWR0aD1fLmdldFVpbnQzMig0LCEwKSxkKz04LFI+PTQ/KEUubnVtRGltcz1fLmdldFVpbnQzMig4LCEwKSxkKz00KTpFLm51bURpbXM9MSxfPW5ldyBEYXRhVmlldyhoLGQsNDApLEUubnVtVmFsaWRQaXhlbD1fLmdldFVpbnQzMigwLCEwKSxFLm1pY3JvQmxvY2tTaXplPV8uZ2V0SW50MzIoNCwhMCksRS5ibG9iU2l6ZT1fLmdldEludDMyKDgsITApLEUuaW1hZ2VUeXBlPV8uZ2V0SW50MzIoMTIsITApLEUubWF4WkVycm9yPV8uZ2V0RmxvYXQ2NCgxNiwhMCksRS56TWluPV8uZ2V0RmxvYXQ2NCgyNCwhMCksRS56TWF4PV8uZ2V0RmxvYXQ2NCgzMiwhMCksZCs9NDAsQS5oZWFkZXJJbmZvPUUsQS5wdHI9ZDt2YXIgSSxDO2lmKFI+PTMmJihDPVI+PTQ/NTI6NDgsST10aGlzLmNvbXB1dGVDaGVja3N1bUZsZXRjaGVyMzIobmV3IFVpbnQ4QXJyYXkoaCxkLUMsRS5ibG9iU2l6ZS0xNCkpLEkhPT1FLmNoZWNrc3VtKSl0aHJvdyJDaGVja3N1bSBmYWlsZWQuIjtyZXR1cm4hMH0sY2hlY2tNaW5NYXhSYW5nZXM6ZnVuY3Rpb24oaCxBKXt2YXIgZD1BLmhlYWRlckluZm8sZj10aGlzLmdldERhdGFUeXBlQXJyYXkoZC5pbWFnZVR5cGUpLEU9ZC5udW1EaW1zKnRoaXMuZ2V0RGF0YVR5cGVTaXplKGQuaW1hZ2VUeXBlKSxfPXRoaXMucmVhZFN1YkFycmF5KGgsQS5wdHIsZixFKSxSPXRoaXMucmVhZFN1YkFycmF5KGgsQS5wdHIrRSxmLEUpO0EucHRyKz0yKkU7dmFyIEksQz0hMDtmb3IoST0wO0k8ZC5udW1EaW1zO0krKylpZihfW0ldIT09UltJXSl7Qz0hMTticmVha31yZXR1cm4gZC5taW5WYWx1ZXM9XyxkLm1heFZhbHVlcz1SLEN9LHJlYWRTdWJBcnJheTpmdW5jdGlvbihoLEEsZCxmKXt2YXIgRTtpZihkPT09VWludDhBcnJheSlFPW5ldyBVaW50OEFycmF5KGgsQSxmKTtlbHNle3ZhciBfPW5ldyBBcnJheUJ1ZmZlcihmKSxSPW5ldyBVaW50OEFycmF5KF8pO1Iuc2V0KG5ldyBVaW50OEFycmF5KGgsQSxmKSksRT1uZXcgZChfKX1yZXR1cm4gRX0scmVhZE1hc2s6ZnVuY3Rpb24oaCxBKXt2YXIgZD1BLnB0cixmPUEuaGVhZGVySW5mbyxFPWYud2lkdGgqZi5oZWlnaHQsXz1mLm51bVZhbGlkUGl4ZWwsUj1uZXcgRGF0YVZpZXcoaCxkLDQpLEk9e307aWYoSS5udW1CeXRlcz1SLmdldFVpbnQzMigwLCEwKSxkKz00LChfPT09MHx8RT09PV8pJiZJLm51bUJ5dGVzIT09MCl0aHJvdyJpbnZhbGlkIG1hc2siO3ZhciBDLE47aWYoXz09PTApQz1uZXcgVWludDhBcnJheShNYXRoLmNlaWwoRS84KSksSS5iaXRzZXQ9QyxOPW5ldyBVaW50OEFycmF5KEUpLEEucGl4ZWxzLnJlc3VsdE1hc2s9TixkKz1JLm51bUJ5dGVzO2Vsc2UgaWYoSS5udW1CeXRlcz4wKXtDPW5ldyBVaW50OEFycmF5KE1hdGguY2VpbChFLzgpKSxSPW5ldyBEYXRhVmlldyhoLGQsSS5udW1CeXRlcyk7dmFyIFQ9Ui5nZXRJbnQxNigwLCEwKSxGPTIsYj0wLEc9MDtkb3tpZihUPjApZm9yKDtULS07KUNbYisrXT1SLmdldFVpbnQ4KEYrKyk7ZWxzZSBmb3IoRz1SLmdldFVpbnQ4KEYrKyksVD0tVDtULS07KUNbYisrXT1HO1Q9Ui5nZXRJbnQxNihGLCEwKSxGKz0yfXdoaWxlKEY8SS5udW1CeXRlcyk7aWYoVCE9PS0zMjc2OHx8YjxDLmxlbmd0aCl0aHJvdyJVbmV4cGVjdGVkIGVuZCBvZiBtYXNrIFJMRSBlbmNvZGluZyI7Tj1uZXcgVWludDhBcnJheShFKTt2YXIgTT0wLFE9MDtmb3IoUT0wO1E8RTtRKyspUSY3PyhNPUNbUT4+M10sTTw8PVEmNyk6TT1DW1E+PjNdLE0mMTI4JiYoTltRXT0xKTtBLnBpeGVscy5yZXN1bHRNYXNrPU4sSS5iaXRzZXQ9QyxkKz1JLm51bUJ5dGVzfXJldHVybiBBLnB0cj1kLEEubWFzaz1JLCEwfSxyZWFkRGF0YU9uZVN3ZWVwOmZ1bmN0aW9uKGgsQSxkKXt2YXIgZj1BLnB0cixFPUEuaGVhZGVySW5mbyxfPUUubnVtRGltcyxSPUUud2lkdGgqRS5oZWlnaHQsST1FLmltYWdlVHlwZSxDPUUubnVtVmFsaWRQaXhlbCpvLmdldERhdGFUeXBlU2l6ZShJKSpfLE4sVD1BLnBpeGVscy5yZXN1bHRNYXNrO2lmKGQ9PT1VaW50OEFycmF5KU49bmV3IFVpbnQ4QXJyYXkoaCxmLEMpO2Vsc2V7dmFyIEY9bmV3IEFycmF5QnVmZmVyKEMpLGI9bmV3IFVpbnQ4QXJyYXkoRik7Yi5zZXQobmV3IFVpbnQ4QXJyYXkoaCxmLEMpKSxOPW5ldyBkKEYpfWlmKE4ubGVuZ3RoPT09UipfKUEucGl4ZWxzLnJlc3VsdFBpeGVscz1OO2Vsc2V7QS5waXhlbHMucmVzdWx0UGl4ZWxzPW5ldyBkKFIqXyk7dmFyIEc9MCxNPTAsUT0wLFU9MDtpZihfPjEpZm9yKFE9MDtRPF87USsrKWZvcihVPVEqUixNPTA7TTxSO00rKylUW01dJiYoQS5waXhlbHMucmVzdWx0UGl4ZWxzW1UrTV09TltHKytdKTtlbHNlIGZvcihNPTA7TTxSO00rKylUW01dJiYoQS5waXhlbHMucmVzdWx0UGl4ZWxzW01dPU5bRysrXSl9cmV0dXJuIGYrPUMsQS5wdHI9ZiwhMH0scmVhZEh1ZmZtYW5UcmVlOmZ1bmN0aW9uKGgsQSl7dmFyIGQ9dGhpcy5IVUZGTUFOX0xVVF9CSVRTX01BWCxmPW5ldyBEYXRhVmlldyhoLEEucHRyLDE2KTtBLnB0cis9MTY7dmFyIEU9Zi5nZXRJbnQzMigwLCEwKTtpZihFPDIpdGhyb3cidW5zdXBwb3J0ZWQgSHVmZm1hbiB2ZXJzaW9uIjt2YXIgXz1mLmdldEludDMyKDQsITApLFI9Zi5nZXRJbnQzMig4LCEwKSxJPWYuZ2V0SW50MzIoMTIsITApO2lmKFI+PUkpcmV0dXJuITE7dmFyIEM9bmV3IFVpbnQzMkFycmF5KEktUik7by5kZWNvZGVCaXRzKGgsQSxDKTt2YXIgTj1bXSxULEYsYixHO2ZvcihUPVI7VDxJO1QrKylGPVQtKFQ8Xz8wOl8pLE5bRl09e2ZpcnN0OkNbVC1SXSxzZWNvbmQ6bnVsbH07dmFyIE09aC5ieXRlTGVuZ3RoLUEucHRyLFE9TWF0aC5jZWlsKE0vNCksVT1uZXcgQXJyYXlCdWZmZXIoUSo0KSxrPW5ldyBVaW50OEFycmF5KFUpO2suc2V0KG5ldyBVaW50OEFycmF5KGgsQS5wdHIsTSkpO3ZhciB5PW5ldyBVaW50MzJBcnJheShVKSxjPTAsZyxWPTA7Zm9yKGc9eVswXSxUPVI7VDxJO1QrKylGPVQtKFQ8Xz8wOl8pLEc9TltGXS5maXJzdCxHPjAmJihOW0ZdLnNlY29uZD1nPDxjPj4+MzItRywzMi1jPj1HPyhjKz1HLGM9PT0zMiYmKGM9MCxWKyssZz15W1ZdKSk6KGMrPUctMzIsVisrLGc9eVtWXSxOW0ZdLnNlY29uZHw9Zz4+PjMyLWMpKTt2YXIgRD0wLHc9MCx4PW5ldyByO2ZvcihUPTA7VDxOLmxlbmd0aDtUKyspTltUXSE9PXZvaWQgMCYmKEQ9TWF0aC5tYXgoRCxOW1RdLmZpcnN0KSk7RD49ZD93PWQ6dz1ELEQ+PTMwJiZjb25zb2xlLmxvZygiV0FSbmluZywgbGFyZ2UgTlVNIExVVCBCSVRTIElTICIrRCk7dmFyIEg9W10saixYLHR0LEIsSXQsZ3Q7Zm9yKFQ9UjtUPEk7VCsrKWlmKEY9VC0oVDxfPzA6XyksRz1OW0ZdLmZpcnN0LEc+MClpZihqPVtHLEZdLEc8PXcpZm9yKFg9TltGXS5zZWNvbmQ8PHctRyx0dD0xPDx3LUcsYj0wO2I8dHQ7YisrKUhbWHxiXT1qO2Vsc2UgZm9yKFg9TltGXS5zZWNvbmQsZ3Q9eCxCPUctMTtCPj0wO0ItLSlJdD1YPj4+QiYxLEl0PyhndC5yaWdodHx8KGd0LnJpZ2h0PW5ldyByKSxndD1ndC5yaWdodCk6KGd0LmxlZnR8fChndC5sZWZ0PW5ldyByKSxndD1ndC5sZWZ0KSxCPT09MCYmIWd0LnZhbCYmKGd0LnZhbD1qWzFdKTtyZXR1cm57ZGVjb2RlTHV0OkgsbnVtQml0c0xVVFFpY2s6dyxudW1CaXRzTFVUOkQsdHJlZTp4LHN0dWZmZWREYXRhOnksc3JjUHRyOlYsYml0UG9zOmN9fSxyZWFkSHVmZm1hbjpmdW5jdGlvbihoLEEsZCl7dmFyIGY9QS5oZWFkZXJJbmZvLEU9Zi5udW1EaW1zLF89QS5oZWFkZXJJbmZvLmhlaWdodCxSPUEuaGVhZGVySW5mby53aWR0aCxJPVIqXyxDPXRoaXMucmVhZEh1ZmZtYW5UcmVlKGgsQSksTj1DLmRlY29kZUx1dCxUPUMudHJlZSxGPUMuc3R1ZmZlZERhdGEsYj1DLnNyY1B0cixHPUMuYml0UG9zLE09Qy5udW1CaXRzTFVUUWljayxRPUMubnVtQml0c0xVVCxVPUEuaGVhZGVySW5mby5pbWFnZVR5cGU9PT0wPzEyODowLGsseSxjLGc9QS5waXhlbHMucmVzdWx0TWFzayxWLEQsdyx4LEgsaixYLHR0PTA7Rz4wJiYoYisrLEc9MCk7dmFyIEI9RltiXSxJdD1BLmVuY29kZU1vZGU9PT0xLGd0PW5ldyBkKEkqRSksWXQ9Z3QsTXQ7Zm9yKE10PTA7TXQ8Zi5udW1EaW1zO010Kyspe2lmKEU+MSYmKFl0PW5ldyBkKGd0LmJ1ZmZlcixJKk10LEkpLHR0PTApLEEuaGVhZGVySW5mby5udW1WYWxpZFBpeGVsPT09UipfKWZvcihqPTAseD0wO3g8Xzt4KyspZm9yKEg9MDtIPFI7SCsrLGorKyl7aWYoeT0wLFY9Qjw8Rz4+PjMyLU0sRD1WLDMyLUc8TSYmKFZ8PUZbYisxXT4+PjY0LUctTSxEPVYpLE5bRF0peT1OW0RdWzFdLEcrPU5bRF1bMF07ZWxzZSBmb3IoVj1CPDxHPj4+MzItUSxEPVYsMzItRzxRJiYoVnw9RltiKzFdPj4+NjQtRy1RLEQ9Viksaz1ULFg9MDtYPFE7WCsrKWlmKHc9Vj4+PlEtWC0xJjEsaz13P2sucmlnaHQ6ay5sZWZ0LCEoay5sZWZ0fHxrLnJpZ2h0KSl7eT1rLnZhbCxHPUcrWCsxO2JyZWFrfUc+PTMyJiYoRy09MzIsYisrLEI9RltiXSksYz15LVUsSXQ/KEg+MD9jKz10dDp4PjA/Yys9WXRbai1SXTpjKz10dCxjJj0yNTUsWXRbal09Yyx0dD1jKTpZdFtqXT1jfWVsc2UgZm9yKGo9MCx4PTA7eDxfO3grKylmb3IoSD0wO0g8UjtIKyssaisrKWlmKGdbal0pe2lmKHk9MCxWPUI8PEc+Pj4zMi1NLEQ9ViwzMi1HPE0mJihWfD1GW2IrMV0+Pj42NC1HLU0sRD1WKSxOW0RdKXk9TltEXVsxXSxHKz1OW0RdWzBdO2Vsc2UgZm9yKFY9Qjw8Rz4+PjMyLVEsRD1WLDMyLUc8USYmKFZ8PUZbYisxXT4+PjY0LUctUSxEPVYpLGs9VCxYPTA7WDxRO1grKylpZih3PVY+Pj5RLVgtMSYxLGs9dz9rLnJpZ2h0OmsubGVmdCwhKGsubGVmdHx8ay5yaWdodCkpe3k9ay52YWwsRz1HK1grMTticmVha31HPj0zMiYmKEctPTMyLGIrKyxCPUZbYl0pLGM9eS1VLEl0PyhIPjAmJmdbai0xXT9jKz10dDp4PjAmJmdbai1SXT9jKz1ZdFtqLVJdOmMrPXR0LGMmPTI1NSxZdFtqXT1jLHR0PWMpOll0W2pdPWN9QS5wdHI9QS5wdHIrKGIrMSkqNCsoRz4wPzQ6MCl9QS5waXhlbHMucmVzdWx0UGl4ZWxzPWd0fSxkZWNvZGVCaXRzOmZ1bmN0aW9uKGgsQSxkLGYsRSl7e3ZhciBfPUEuaGVhZGVySW5mbyxSPV8uZmlsZVZlcnNpb24sST0wLEM9bmV3IERhdGFWaWV3KGgsQS5wdHIsNSksTj1DLmdldFVpbnQ4KDApO0krKzt2YXIgVD1OPj42LEY9VD09PTA/NDozLVQsYj0oTiYzMik+MCxHPU4mMzEsTT0wO2lmKEY9PT0xKU09Qy5nZXRVaW50OChJKSxJKys7ZWxzZSBpZihGPT09MilNPUMuZ2V0VWludDE2KEksITApLEkrPTI7ZWxzZSBpZihGPT09NClNPUMuZ2V0VWludDMyKEksITApLEkrPTQ7ZWxzZSB0aHJvdyJJbnZhbGlkIHZhbGlkIHBpeGVsIGNvdW50IHR5cGUiO3ZhciBRPTIqXy5tYXhaRXJyb3IsVSxrLHksYyxnLFYsRCx3LHgsSCxqPV8ubnVtRGltcz4xP18ubWF4VmFsdWVzW0VdOl8uek1heDtpZihiKXtmb3IoQS5jb3VudGVyLmx1dCsrLHc9Qy5nZXRVaW50OChJKSx4PUcsSSsrLGM9TWF0aC5jZWlsKCh3LTEpKkcvOCksZz1NYXRoLmNlaWwoYy80KSxrPW5ldyBBcnJheUJ1ZmZlcihnKjQpLHk9bmV3IFVpbnQ4QXJyYXkoayksQS5wdHIrPUkseS5zZXQobmV3IFVpbnQ4QXJyYXkoaCxBLnB0cixjKSksRD1uZXcgVWludDMyQXJyYXkoayksQS5wdHIrPWMsSD0wO3ctMT4+Pkg7KUgrKztjPU1hdGguY2VpbChNKkgvOCksZz1NYXRoLmNlaWwoYy80KSxrPW5ldyBBcnJheUJ1ZmZlcihnKjQpLHk9bmV3IFVpbnQ4QXJyYXkoaykseS5zZXQobmV3IFVpbnQ4QXJyYXkoaCxBLnB0cixjKSksVT1uZXcgVWludDMyQXJyYXkoayksQS5wdHIrPWMsUj49Mz9WPXMudW5zdHVmZkxVVDIoRCxHLHctMSxmLFEsaik6Vj1zLnVuc3R1ZmZMVVQoRCxHLHctMSxmLFEsaiksUj49Mz9zLnVuc3R1ZmYyKFUsZCxILE0sVik6cy51bnN0dWZmKFUsZCxILE0sVil9ZWxzZSBBLmNvdW50ZXIuYml0c3R1ZmZlcisrLEg9RyxBLnB0cis9SSxIPjAmJihjPU1hdGguY2VpbChNKkgvOCksZz1NYXRoLmNlaWwoYy80KSxrPW5ldyBBcnJheUJ1ZmZlcihnKjQpLHk9bmV3IFVpbnQ4QXJyYXkoaykseS5zZXQobmV3IFVpbnQ4QXJyYXkoaCxBLnB0cixjKSksVT1uZXcgVWludDMyQXJyYXkoayksQS5wdHIrPWMsUj49Mz9mPT1udWxsP3Mub3JpZ2luYWxVbnN0dWZmMihVLGQsSCxNKTpzLnVuc3R1ZmYyKFUsZCxILE0sITEsZixRLGopOmY9PW51bGw/cy5vcmlnaW5hbFVuc3R1ZmYoVSxkLEgsTSk6cy51bnN0dWZmKFUsZCxILE0sITEsZixRLGopKX19LHJlYWRUaWxlczpmdW5jdGlvbihoLEEsZCl7dmFyIGY9QS5oZWFkZXJJbmZvLEU9Zi53aWR0aCxfPWYuaGVpZ2h0LFI9Zi5taWNyb0Jsb2NrU2l6ZSxJPWYuaW1hZ2VUeXBlLEM9by5nZXREYXRhVHlwZVNpemUoSSksTj1NYXRoLmNlaWwoRS9SKSxUPU1hdGguY2VpbChfL1IpO0EucGl4ZWxzLm51bUJsb2Nrc1k9VCxBLnBpeGVscy5udW1CbG9ja3NYPU4sQS5waXhlbHMucHRyPTA7dmFyIEY9MCxiPTAsRz0wLE09MCxRPTAsVT0wLGs9MCx5PTAsYz0wLGc9MCxWPTAsRD0wLHc9MCx4PTAsSD0wLGo9MCxYLHR0LEIsSXQsZ3QsWXQsTXQ9bmV3IGQoUipSKSxDdD1fJVJ8fFIsenQ9RSVSfHxSLGt0LEp0LFd0PWYubnVtRGltcyxGdCxlZT1BLnBpeGVscy5yZXN1bHRNYXNrLGNlPUEucGl4ZWxzLnJlc3VsdFBpeGVscztmb3IoRz0wO0c8VDtHKyspZm9yKFE9RyE9PVQtMT9SOkN0LE09MDtNPE47TSsrKWZvcihVPU0hPT1OLTE/Ujp6dCxWPUcqRSpSK00qUixEPUUtVSxGdD0wO0Z0PFd0O0Z0Kyspe2lmKFd0PjEmJihjZT1uZXcgZChBLnBpeGVscy5yZXN1bHRQaXhlbHMuYnVmZmVyLEUqXypGdCpDLEUqXykpLGs9aC5ieXRlTGVuZ3RoLUEucHRyLFg9bmV3IERhdGFWaWV3KGgsQS5wdHIsTWF0aC5taW4oMTAsaykpLHR0PXt9LGo9MCx5PVguZ2V0VWludDgoMCksaisrLGM9eT4+NiYyNTUsZz15Pj4yJjE1LGchPT0oTSpSPj4zJjE1KSl0aHJvdyJpbnRlZ3JpdHkgaXNzdWUiO2lmKFl0PXkmMyxZdD4zKXRocm93IEEucHRyKz1qLCJJbnZhbGlkIGJsb2NrIGVuY29kaW5nICgiK1l0KyIpIjtpZihZdD09PTIpe0EuY291bnRlci5jb25zdGFudCsrLEEucHRyKz1qO2NvbnRpbnVlfWVsc2UgaWYoWXQ9PT0wKXtpZihBLmNvdW50ZXIudW5jb21wcmVzc2VkKyssQS5wdHIrPWosdz1RKlUqQyx4PWguYnl0ZUxlbmd0aC1BLnB0cix3PXc8eD93OngsQj1uZXcgQXJyYXlCdWZmZXIodyVDPT09MD93OncrQy13JUMpLEl0PW5ldyBVaW50OEFycmF5KEIpLEl0LnNldChuZXcgVWludDhBcnJheShoLEEucHRyLHcpKSxndD1uZXcgZChCKSxIPTAsZWUpZm9yKEY9MDtGPFE7RisrKXtmb3IoYj0wO2I8VTtiKyspZWVbVl0mJihjZVtWXT1ndFtIKytdKSxWKys7Vis9RH1lbHNlIGZvcihGPTA7RjxRO0YrKyl7Zm9yKGI9MDtiPFU7YisrKWNlW1YrK109Z3RbSCsrXTtWKz1EfUEucHRyKz1IKkN9ZWxzZSBpZihrdD1vLmdldERhdGFUeXBlVXNlZChJLGMpLEp0PW8uZ2V0T25lUGl4ZWwodHQsaixrdCxYKSxqKz1vLmdldERhdGFUeXBlU2l6ZShrdCksWXQ9PT0zKWlmKEEucHRyKz1qLEEuY291bnRlci5jb25zdGFudG9mZnNldCsrLGVlKWZvcihGPTA7RjxRO0YrKyl7Zm9yKGI9MDtiPFU7YisrKWVlW1ZdJiYoY2VbVl09SnQpLFYrKztWKz1EfWVsc2UgZm9yKEY9MDtGPFE7RisrKXtmb3IoYj0wO2I8VTtiKyspY2VbVisrXT1KdDtWKz1EfWVsc2UgaWYoQS5wdHIrPWosby5kZWNvZGVCaXRzKGgsQSxNdCxKdCxGdCksaj0wLGVlKWZvcihGPTA7RjxRO0YrKyl7Zm9yKGI9MDtiPFU7YisrKWVlW1ZdJiYoY2VbVl09TXRbaisrXSksVisrO1YrPUR9ZWxzZSBmb3IoRj0wO0Y8UTtGKyspe2ZvcihiPTA7YjxVO2IrKyljZVtWKytdPU10W2orK107Vis9RH19fSxmb3JtYXRGaWxlSW5mbzpmdW5jdGlvbihoKXtyZXR1cm57ZmlsZUlkZW50aWZpZXJTdHJpbmc6aC5oZWFkZXJJbmZvLmZpbGVJZGVudGlmaWVyU3RyaW5nLGZpbGVWZXJzaW9uOmguaGVhZGVySW5mby5maWxlVmVyc2lvbixpbWFnZVR5cGU6aC5oZWFkZXJJbmZvLmltYWdlVHlwZSxoZWlnaHQ6aC5oZWFkZXJJbmZvLmhlaWdodCx3aWR0aDpoLmhlYWRlckluZm8ud2lkdGgsbnVtVmFsaWRQaXhlbDpoLmhlYWRlckluZm8ubnVtVmFsaWRQaXhlbCxtaWNyb0Jsb2NrU2l6ZTpoLmhlYWRlckluZm8ubWljcm9CbG9ja1NpemUsYmxvYlNpemU6aC5oZWFkZXJJbmZvLmJsb2JTaXplLG1heFpFcnJvcjpoLmhlYWRlckluZm8ubWF4WkVycm9yLHBpeGVsVHlwZTpvLmdldFBpeGVsVHlwZShoLmhlYWRlckluZm8uaW1hZ2VUeXBlKSxlb2ZPZmZzZXQ6aC5lb2ZPZmZzZXQsbWFzazpoLm1hc2s/e251bUJ5dGVzOmgubWFzay5udW1CeXRlc306bnVsbCxwaXhlbHM6e251bUJsb2Nrc1g6aC5waXhlbHMubnVtQmxvY2tzWCxudW1CbG9ja3NZOmgucGl4ZWxzLm51bUJsb2Nrc1ksbWF4VmFsdWU6aC5oZWFkZXJJbmZvLnpNYXgsbWluVmFsdWU6aC5oZWFkZXJJbmZvLnpNaW4sbm9EYXRhVmFsdWU6aC5ub0RhdGFWYWx1ZX19fSxjb25zdHJ1Y3RDb25zdGFudFN1cmZhY2U6ZnVuY3Rpb24oaCl7dmFyIEE9aC5oZWFkZXJJbmZvLnpNYXgsZD1oLmhlYWRlckluZm8ubnVtRGltcyxmPWguaGVhZGVySW5mby5oZWlnaHQqaC5oZWFkZXJJbmZvLndpZHRoLEU9ZipkLF89MCxSPTAsST0wLEM9aC5waXhlbHMucmVzdWx0TWFzaztpZihDKWlmKGQ+MSlmb3IoXz0wO188ZDtfKyspZm9yKEk9XypmLFI9MDtSPGY7UisrKUNbUl0mJihoLnBpeGVscy5yZXN1bHRQaXhlbHNbSStSXT1BKTtlbHNlIGZvcihSPTA7UjxmO1IrKylDW1JdJiYoaC5waXhlbHMucmVzdWx0UGl4ZWxzW1JdPUEpO2Vsc2UgaWYoaC5waXhlbHMucmVzdWx0UGl4ZWxzLmZpbGwpaC5waXhlbHMucmVzdWx0UGl4ZWxzLmZpbGwoQSk7ZWxzZSBmb3IoUj0wO1I8RTtSKyspaC5waXhlbHMucmVzdWx0UGl4ZWxzW1JdPUF9LGdldERhdGFUeXBlQXJyYXk6ZnVuY3Rpb24oaCl7dmFyIEE7c3dpdGNoKGgpe2Nhc2UgMDpBPUludDhBcnJheTticmVhaztjYXNlIDE6QT1VaW50OEFycmF5O2JyZWFrO2Nhc2UgMjpBPUludDE2QXJyYXk7YnJlYWs7Y2FzZSAzOkE9VWludDE2QXJyYXk7YnJlYWs7Y2FzZSA0OkE9SW50MzJBcnJheTticmVhaztjYXNlIDU6QT1VaW50MzJBcnJheTticmVhaztjYXNlIDY6QT1GbG9hdDMyQXJyYXk7YnJlYWs7Y2FzZSA3OkE9RmxvYXQ2NEFycmF5O2JyZWFrO2RlZmF1bHQ6QT1GbG9hdDMyQXJyYXl9cmV0dXJuIEF9LGdldFBpeGVsVHlwZTpmdW5jdGlvbihoKXt2YXIgQTtzd2l0Y2goaCl7Y2FzZSAwOkE9IlM4IjticmVhaztjYXNlIDE6QT0iVTgiO2JyZWFrO2Nhc2UgMjpBPSJTMTYiO2JyZWFrO2Nhc2UgMzpBPSJVMTYiO2JyZWFrO2Nhc2UgNDpBPSJTMzIiO2JyZWFrO2Nhc2UgNTpBPSJVMzIiO2JyZWFrO2Nhc2UgNjpBPSJGMzIiO2JyZWFrO2Nhc2UgNzpBPSJGNjQiO2JyZWFrO2RlZmF1bHQ6QT0iRjMyIn1yZXR1cm4gQX0saXNWYWxpZFBpeGVsVmFsdWU6ZnVuY3Rpb24oaCxBKXtpZihBPT1udWxsKXJldHVybiExO3ZhciBkO3N3aXRjaChoKXtjYXNlIDA6ZD1BPj0tMTI4JiZBPD0xMjc7YnJlYWs7Y2FzZSAxOmQ9QT49MCYmQTw9MjU1O2JyZWFrO2Nhc2UgMjpkPUE+PS0zMjc2OCYmQTw9MzI3Njc7YnJlYWs7Y2FzZSAzOmQ9QT49MCYmQTw9NjU1MzY7YnJlYWs7Y2FzZSA0OmQ9QT49LTIxNDc0ODM2NDgmJkE8PTIxNDc0ODM2NDc7YnJlYWs7Y2FzZSA1OmQ9QT49MCYmQTw9NDI5NDk2NzI5NjticmVhaztjYXNlIDY6ZD1BPj0tMzQwMjc5OTkzODc5MDE0ODRlMjImJkE8PTM0MDI3OTk5Mzg3OTAxNDg0ZTIyO2JyZWFrO2Nhc2UgNzpkPUE+PTVlLTMyNCYmQTw9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2JyZWFrO2RlZmF1bHQ6ZD0hMX1yZXR1cm4gZH0sZ2V0RGF0YVR5cGVTaXplOmZ1bmN0aW9uKGgpe3ZhciBBPTA7c3dpdGNoKGgpe2Nhc2UgMDpjYXNlIDE6QT0xO2JyZWFrO2Nhc2UgMjpjYXNlIDM6QT0yO2JyZWFrO2Nhc2UgNDpjYXNlIDU6Y2FzZSA2OkE9NDticmVhaztjYXNlIDc6QT04O2JyZWFrO2RlZmF1bHQ6QT1ofXJldHVybiBBfSxnZXREYXRhVHlwZVVzZWQ6ZnVuY3Rpb24oaCxBKXt2YXIgZD1oO3N3aXRjaChoKXtjYXNlIDI6Y2FzZSA0OmQ9aC1BO2JyZWFrO2Nhc2UgMzpjYXNlIDU6ZD1oLTIqQTticmVhaztjYXNlIDY6QT09PTA/ZD1oOkE9PT0xP2Q9MjpkPTE7YnJlYWs7Y2FzZSA3OkE9PT0wP2Q9aDpkPWgtMipBKzE7YnJlYWs7ZGVmYXVsdDpkPWg7YnJlYWt9cmV0dXJuIGR9LGdldE9uZVBpeGVsOmZ1bmN0aW9uKGgsQSxkLGYpe3ZhciBFPTA7c3dpdGNoKGQpe2Nhc2UgMDpFPWYuZ2V0SW50OChBKTticmVhaztjYXNlIDE6RT1mLmdldFVpbnQ4KEEpO2JyZWFrO2Nhc2UgMjpFPWYuZ2V0SW50MTYoQSwhMCk7YnJlYWs7Y2FzZSAzOkU9Zi5nZXRVaW50MTYoQSwhMCk7YnJlYWs7Y2FzZSA0OkU9Zi5nZXRJbnQzMihBLCEwKTticmVhaztjYXNlIDU6RT1mLmdldFVJbnQzMihBLCEwKTticmVhaztjYXNlIDY6RT1mLmdldEZsb2F0MzIoQSwhMCk7YnJlYWs7Y2FzZSA3OkU9Zi5nZXRGbG9hdDY0KEEsITApO2JyZWFrO2RlZmF1bHQ6dGhyb3cidGhlIGRlY29kZXIgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGlzIHBpeGVsIHR5cGUifXJldHVybiBFfX0scj1mdW5jdGlvbihoLEEsZCl7dGhpcy52YWw9aCx0aGlzLmxlZnQ9QSx0aGlzLnJpZ2h0PWR9LGE9e2RlY29kZTpmdW5jdGlvbihoLEEpe0E9QXx8e307dmFyIGQ9QS5ub0RhdGFWYWx1ZSxmPTAsRT17fTtpZihFLnB0cj1BLmlucHV0T2Zmc2V0fHwwLEUucGl4ZWxzPXt9LCEhby5yZWFkSGVhZGVySW5mbyhoLEUpKXt2YXIgXz1FLmhlYWRlckluZm8sUj1fLmZpbGVWZXJzaW9uLEk9by5nZXREYXRhVHlwZUFycmF5KF8uaW1hZ2VUeXBlKTtvLnJlYWRNYXNrKGgsRSksXy5udW1WYWxpZFBpeGVsIT09Xy53aWR0aCpfLmhlaWdodCYmIUUucGl4ZWxzLnJlc3VsdE1hc2smJihFLnBpeGVscy5yZXN1bHRNYXNrPUEubWFza0RhdGEpO3ZhciBDPV8ud2lkdGgqXy5oZWlnaHQ7aWYoRS5waXhlbHMucmVzdWx0UGl4ZWxzPW5ldyBJKEMqXy5udW1EaW1zKSxFLmNvdW50ZXI9e29uZXN3ZWVwOjAsdW5jb21wcmVzc2VkOjAsbHV0OjAsYml0c3R1ZmZlcjowLGNvbnN0YW50OjAsY29uc3RhbnRvZmZzZXQ6MH0sXy5udW1WYWxpZFBpeGVsIT09MClpZihfLnpNYXg9PT1fLnpNaW4pby5jb25zdHJ1Y3RDb25zdGFudFN1cmZhY2UoRSk7ZWxzZSBpZihSPj00JiZvLmNoZWNrTWluTWF4UmFuZ2VzKGgsRSkpby5jb25zdHJ1Y3RDb25zdGFudFN1cmZhY2UoRSk7ZWxzZXt2YXIgTj1uZXcgRGF0YVZpZXcoaCxFLnB0ciwyKSxUPU4uZ2V0VWludDgoMCk7aWYoRS5wdHIrKyxUKW8ucmVhZERhdGFPbmVTd2VlcChoLEUsSSk7ZWxzZSBpZihSPjEmJl8uaW1hZ2VUeXBlPD0xJiZNYXRoLmFicyhfLm1heFpFcnJvci0uNSk8MWUtNSl7dmFyIEY9Ti5nZXRVaW50OCgxKTtpZihFLnB0cisrLEUuZW5jb2RlTW9kZT1GLEY+Mnx8Ujw0JiZGPjEpdGhyb3ciSW52YWxpZCBIdWZmbWFuIGZsYWcgIitGO0Y/by5yZWFkSHVmZm1hbihoLEUsSSk6by5yZWFkVGlsZXMoaCxFLEkpfWVsc2Ugby5yZWFkVGlsZXMoaCxFLEkpfUUuZW9mT2Zmc2V0PUUucHRyO3ZhciBiO0EuaW5wdXRPZmZzZXQ/KGI9RS5oZWFkZXJJbmZvLmJsb2JTaXplK0EuaW5wdXRPZmZzZXQtRS5wdHIsTWF0aC5hYnMoYik+PTEmJihFLmVvZk9mZnNldD1BLmlucHV0T2Zmc2V0K0UuaGVhZGVySW5mby5ibG9iU2l6ZSkpOihiPUUuaGVhZGVySW5mby5ibG9iU2l6ZS1FLnB0cixNYXRoLmFicyhiKT49MSYmKEUuZW9mT2Zmc2V0PUUuaGVhZGVySW5mby5ibG9iU2l6ZSkpO3ZhciBHPXt3aWR0aDpfLndpZHRoLGhlaWdodDpfLmhlaWdodCxwaXhlbERhdGE6RS5waXhlbHMucmVzdWx0UGl4ZWxzLG1pblZhbHVlOl8uek1pbixtYXhWYWx1ZTpfLnpNYXgsdmFsaWRQaXhlbENvdW50Ol8ubnVtVmFsaWRQaXhlbCxkaW1Db3VudDpfLm51bURpbXMsZGltU3RhdHM6e21pblZhbHVlczpfLm1pblZhbHVlcyxtYXhWYWx1ZXM6Xy5tYXhWYWx1ZXN9LG1hc2tEYXRhOkUucGl4ZWxzLnJlc3VsdE1hc2t9O2lmKEUucGl4ZWxzLnJlc3VsdE1hc2smJm8uaXNWYWxpZFBpeGVsVmFsdWUoXy5pbWFnZVR5cGUsZCkpe3ZhciBNPUUucGl4ZWxzLnJlc3VsdE1hc2s7Zm9yKGY9MDtmPEM7ZisrKU1bZl18fChHLnBpeGVsRGF0YVtmXT1kKTtHLm5vRGF0YVZhbHVlPWR9cmV0dXJuIEUubm9EYXRhVmFsdWU9ZCxBLnJldHVybkZpbGVJbmZvJiYoRy5maWxlSW5mbz1vLmZvcm1hdEZpbGVJbmZvKEUpKSxHfX0sZ2V0QmFuZENvdW50OmZ1bmN0aW9uKGgpe3ZhciBBPTAsZD0wLGY9e307Zm9yKGYucHRyPTAsZi5waXhlbHM9e307ZDxoLmJ5dGVMZW5ndGgtNTg7KW8ucmVhZEhlYWRlckluZm8oaCxmKSxkKz1mLmhlYWRlckluZm8uYmxvYlNpemUsQSsrLGYucHRyPWQ7cmV0dXJuIEF9fTtyZXR1cm4gYX0oKSxpPWZ1bmN0aW9uKCl7dmFyIHM9bmV3IEFycmF5QnVmZmVyKDQpLG89bmV3IFVpbnQ4QXJyYXkocykscj1uZXcgVWludDMyQXJyYXkocyk7cmV0dXJuIHJbMF09MSxvWzBdPT09MX0oKSxuPXtkZWNvZGU6ZnVuY3Rpb24ocyxvKXtpZighaSl0aHJvdyJCaWcgZW5kaWFuIHN5c3RlbSBpcyBub3Qgc3VwcG9ydGVkLiI7bz1vfHx7fTt2YXIgcj1vLmlucHV0T2Zmc2V0fHwwLGE9bmV3IFVpbnQ4QXJyYXkocyxyLDEwKSxoPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhKSxBLGQ7aWYoaC50cmltKCk9PT0iQ250WkltYWdlIilBPXQsZD0xO2Vsc2UgaWYoaC5zdWJzdHJpbmcoMCw1KT09PSJMZXJjMiIpQT1lLGQ9MjtlbHNlIHRocm93IlVuZXhwZWN0ZWQgZmlsZSBpZGVudGlmaWVyIHN0cmluZzogIitoO2Zvcih2YXIgZj0wLEU9cy5ieXRlTGVuZ3RoLTEwLF8sUj1bXSxJLEMsTj17d2lkdGg6MCxoZWlnaHQ6MCxwaXhlbHM6W10scGl4ZWxUeXBlOm8ucGl4ZWxUeXBlLG1hc2s6bnVsbCxzdGF0aXN0aWNzOltdfTtyPEU7KXt2YXIgVD1BLmRlY29kZShzLHtpbnB1dE9mZnNldDpyLGVuY29kZWRNYXNrRGF0YTpfLG1hc2tEYXRhOkMscmV0dXJuTWFzazpmPT09MCxyZXR1cm5FbmNvZGVkTWFzazpmPT09MCxyZXR1cm5GaWxlSW5mbzohMCxwaXhlbFR5cGU6by5waXhlbFR5cGV8fG51bGwsbm9EYXRhVmFsdWU6by5ub0RhdGFWYWx1ZXx8bnVsbH0pO3I9VC5maWxlSW5mby5lb2ZPZmZzZXQsZj09PTAmJihfPVQuZW5jb2RlZE1hc2tEYXRhLEM9VC5tYXNrRGF0YSxOLndpZHRoPVQud2lkdGgsTi5oZWlnaHQ9VC5oZWlnaHQsTi5kaW1Db3VudD1ULmRpbUNvdW50fHwxLE4ucGl4ZWxUeXBlPVQucGl4ZWxUeXBlfHxULmZpbGVJbmZvLnBpeGVsVHlwZSxOLm1hc2s9VC5tYXNrRGF0YSksZD4xJiZULmZpbGVJbmZvLm1hc2smJlQuZmlsZUluZm8ubWFzay5udW1CeXRlcz4wJiZSLnB1c2goVC5tYXNrRGF0YSksZisrLE4ucGl4ZWxzLnB1c2goVC5waXhlbERhdGEpLE4uc3RhdGlzdGljcy5wdXNoKHttaW5WYWx1ZTpULm1pblZhbHVlLG1heFZhbHVlOlQubWF4VmFsdWUsbm9EYXRhVmFsdWU6VC5ub0RhdGFWYWx1ZSxkaW1TdGF0czpULmRpbVN0YXRzfSl9dmFyIEYsYixHO2lmKGQ+MSYmUi5sZW5ndGg+MSl7Zm9yKEc9Ti53aWR0aCpOLmhlaWdodCxOLmJhbmRNYXNrcz1SLEM9bmV3IFVpbnQ4QXJyYXkoRyksQy5zZXQoUlswXSksRj0xO0Y8Ui5sZW5ndGg7RisrKWZvcihJPVJbRl0sYj0wO2I8RztiKyspQ1tiXT1DW2JdJklbYl07Ti5tYXNrRGF0YT1DfXJldHVybiBOfX07dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbn0pOnR5cGVvZiBGZzwidSImJkZnLmV4cG9ydHM/RmcuZXhwb3J0cz1uOnRoaXMuTGVyYz1ufSkoKX0pO3ZhciBrRz17fTtIZShrRyx7ZGVmYXVsdDooKT0+RV90fSk7ZnVuY3Rpb24gZl90KHQsZSl7aWYodC5lbmNvZGluZz09PXE2LkxFUkMpe2xldCBzO3RyeXtzPW5LLmRlZmF1bHQuZGVjb2RlKHQuaGVpZ2h0bWFwKX1jYXRjaChyKXt0aHJvdyBuZXcga2Uocil9aWYocy5zdGF0aXN0aWNzWzBdLm1pblZhbHVlPT09TnVtYmVyLk1BWF9WQUxVRSl0aHJvdyBuZXcga2UoIkludmFsaWQgdGlsZSBkYXRhIik7dC5oZWlnaHRtYXA9cy5waXhlbHNbMF0sdC53aWR0aD1zLndpZHRoLHQuaGVpZ2h0PXMuaGVpZ2h0fXQuZWxsaXBzb2lkPW90LmNsb25lKHQuZWxsaXBzb2lkKSx0LnJlY3RhbmdsZT1YdC5jbG9uZSh0LnJlY3RhbmdsZSk7bGV0IGk9dEsuY29tcHV0ZVZlcnRpY2VzKHQpLG49aS52ZXJ0aWNlcztyZXR1cm4gZS5wdXNoKG4uYnVmZmVyKSx7dmVydGljZXM6bi5idWZmZXIsbnVtYmVyT2ZBdHRyaWJ1dGVzOmkuZW5jb2Rpbmcuc3RyaWRlLG1pbmltdW1IZWlnaHQ6aS5taW5pbXVtSGVpZ2h0LG1heGltdW1IZWlnaHQ6aS5tYXhpbXVtSGVpZ2h0LGdyaWRXaWR0aDp0LndpZHRoLGdyaWRIZWlnaHQ6dC5oZWlnaHQsYm91bmRpbmdTcGhlcmUzRDppLmJvdW5kaW5nU3BoZXJlM0Qsb3JpZW50ZWRCb3VuZGluZ0JveDppLm9yaWVudGVkQm91bmRpbmdCb3gsb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6aS5vY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZSxlbmNvZGluZzppLmVuY29kaW5nLHdlc3RJbmRpY2VzU291dGhUb05vcnRoOmkud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsc291dGhJbmRpY2VzRWFzdFRvV2VzdDppLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsZWFzdEluZGljZXNOb3J0aFRvU291dGg6aS5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxub3J0aEluZGljZXNXZXN0VG9FYXN0Omkubm9ydGhJbmRpY2VzV2VzdFRvRWFzdH19dmFyIG5LLEVfdCxMRz1PKCgpPT57VmUoKTskNigpO2VLKCk7cG4oKTtQcygpO25LPWNvKGlLKCksMSk7TnMoKTtFX3Q9V2koZl90KX0pO2Z1bmN0aW9uIHhvKCl7WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcigpfWZ1bmN0aW9uIGFLKHQsZSl7bGV0IGk9bmV3IEFycmF5KGUpLG49bmV3IEFycmF5KHQpLHM9bmV3IEFycmF5KGUpLG89bmV3IEFycmF5KHQpLHI7Zm9yKHI9MDtyPHQ7KytyKW9bcl09cixuW3JdPXQqZS0xLXI7Zm9yKHI9MDtyPGU7KytyKXNbcl09KHIrMSkqdC0xLGlbcl09KGUtci0xKSp0O3JldHVybnt3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDppLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6bixlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpzLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6b319ZnVuY3Rpb24gQUsodCxlLGksbil7bGV0IHM9MDtmb3IobGV0IG89MDtvPGUtMTsrK28pe2ZvcihsZXQgcj0wO3I8dC0xOysrcil7bGV0IGE9cyxoPWErdCxBPWgrMSxkPWErMTtpW24rK109YSxpW24rK109aCxpW24rK109ZCxpW24rK109ZCxpW24rK109aCxpW24rK109QSwrK3N9KytzfX1mdW5jdGlvbiBZZyh0LGUsaSxuKXtsZXQgcz10WzBdLG89dC5sZW5ndGg7Zm9yKGxldCByPTE7cjxvOysrcil7bGV0IGE9dFtyXTtpW24rK109cyxpW24rK109YSxpW24rK109ZSxpW24rK109ZSxpW24rK109YSxpW24rK109ZSsxLHM9YSwrK2V9cmV0dXJuIG59dmFyIHNLLG9LLHJLLGhLLGNLPU8oKCk9PnttdCgpO1Z0KCk7RGkoKTtfZSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHhvLnByb3RvdHlwZSx7ZXJyb3JFdmVudDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGNyZWRpdDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LHRpbGluZ1NjaGVtZTp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGhhc1dhdGVyTWFzazp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGhhc1ZlcnRleE5vcm1hbHM6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxhdmFpbGFiaWxpdHk6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfX0pO3NLPVtdO3hvLmdldFJlZ3VsYXJHcmlkSW5kaWNlcz1mdW5jdGlvbih0LGUpe2lmKHQqZT49TC5GT1VSX0dJR0FCWVRFUyl0aHJvdyBuZXcgWSgiVGhlIHRvdGFsIG51bWJlciBvZiB2ZXJ0aWNlcyAod2lkdGggKiBoZWlnaHQpIG11c3QgYmUgbGVzcyB0aGFuIDQsMjk0LDk2NywyOTYuIik7bGV0IGk9c0tbdF07bShpKXx8KHNLW3RdPWk9W10pO2xldCBuPWlbZV07cmV0dXJuIG0obil8fCh0KmU8TC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uPWlbZV09bmV3IFVpbnQxNkFycmF5KCh0LTEpKihlLTEpKjYpOm49aVtlXT1uZXcgVWludDMyQXJyYXkoKHQtMSkqKGUtMSkqNiksQUsodCxlLG4sMCkpLG59O29LPVtdO3hvLmdldFJlZ3VsYXJHcmlkSW5kaWNlc0FuZEVkZ2VJbmRpY2VzPWZ1bmN0aW9uKHQsZSl7aWYodCplPj1MLkZPVVJfR0lHQUJZVEVTKXRocm93IG5ldyBZKCJUaGUgdG90YWwgbnVtYmVyIG9mIHZlcnRpY2VzICh3aWR0aCAqIGhlaWdodCkgbXVzdCBiZSBsZXNzIHRoYW4gNCwyOTQsOTY3LDI5Ni4iKTtsZXQgaT1vS1t0XTttKGkpfHwob0tbdF09aT1bXSk7bGV0IG49aVtlXTtpZighbShuKSl7bGV0IHM9eG8uZ2V0UmVndWxhckdyaWRJbmRpY2VzKHQsZSksbz1hSyh0LGUpLHI9by53ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aCxhPW8uc291dGhJbmRpY2VzRWFzdFRvV2VzdCxoPW8uZWFzdEluZGljZXNOb3J0aFRvU291dGgsQT1vLm5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q7bj1pW2VdPXtpbmRpY2VzOnMsd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6cixzb3V0aEluZGljZXNFYXN0VG9XZXN0OmEsZWFzdEluZGljZXNOb3J0aFRvU291dGg6aCxub3J0aEluZGljZXNXZXN0VG9FYXN0OkF9fXJldHVybiBufTtySz1bXTt4by5nZXRSZWd1bGFyR3JpZEFuZFNraXJ0SW5kaWNlc0FuZEVkZ2VJbmRpY2VzPWZ1bmN0aW9uKHQsZSl7aWYodCplPj1MLkZPVVJfR0lHQUJZVEVTKXRocm93IG5ldyBZKCJUaGUgdG90YWwgbnVtYmVyIG9mIHZlcnRpY2VzICh3aWR0aCAqIGhlaWdodCkgbXVzdCBiZSBsZXNzIHRoYW4gNCwyOTQsOTY3LDI5Ni4iKTtsZXQgaT1yS1t0XTttKGkpfHwocktbdF09aT1bXSk7bGV0IG49aVtlXTtpZighbShuKSl7bGV0IHM9dCplLG89KHQtMSkqKGUtMSkqNixyPXQqMitlKjIsYT1NYXRoLm1heCgwLHItNCkqNixoPXMrcixBPW8rYSxkPWFLKHQsZSksZj1kLndlc3RJbmRpY2VzU291dGhUb05vcnRoLEU9ZC5zb3V0aEluZGljZXNFYXN0VG9XZXN0LF89ZC5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxSPWQubm9ydGhJbmRpY2VzV2VzdFRvRWFzdCxJPXRlLmNyZWF0ZVR5cGVkQXJyYXkoaCxBKTtBSyh0LGUsSSwwKSx4by5hZGRTa2lydEluZGljZXMoZixFLF8sUixzLEksbyksbj1pW2VdPXtpbmRpY2VzOkksd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6Zixzb3V0aEluZGljZXNFYXN0VG9XZXN0OkUsZWFzdEluZGljZXNOb3J0aFRvU291dGg6Xyxub3J0aEluZGljZXNXZXN0VG9FYXN0OlIsaW5kZXhDb3VudFdpdGhvdXRTa2lydHM6b319cmV0dXJuIG59O3hvLmFkZFNraXJ0SW5kaWNlcz1mdW5jdGlvbih0LGUsaSxuLHMsbyxyKXtsZXQgYT1zO3I9WWcodCxhLG8sciksYSs9dC5sZW5ndGgscj1ZZyhlLGEsbyxyKSxhKz1lLmxlbmd0aCxyPVlnKGksYSxvLHIpLGErPWkubGVuZ3RoLFlnKG4sYSxvLHIpfTt4by5oZWlnaHRtYXBUZXJyYWluUXVhbGl0eT0uMjU7eG8uZ2V0RXN0aW1hdGVkTGV2ZWxaZXJvR2VvbWV0cmljRXJyb3JGb3JBSGVpZ2h0bWFwPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5tYXhpbXVtUmFkaXVzKjIqTWF0aC5QSSp4by5oZWlnaHRtYXBUZXJyYWluUXVhbGl0eS8oZSppKX07eG8ucHJvdG90eXBlLnJlcXVlc3RUaWxlR2VvbWV0cnk9WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcjt4by5wcm90b3R5cGUuZ2V0TGV2ZWxNYXhpbXVtR2VvbWV0cmljRXJyb3I9WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcjt4by5wcm90b3R5cGUuZ2V0VGlsZURhdGFBdmFpbGFibGU9WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcjt4by5wcm90b3R5cGUubG9hZFRpbGVEYXRhQXZhaWxhYmlsaXR5PVkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3I7aEs9eG99KTt2YXIgd0c9e307SGUod0cse2RlZmF1bHQ6KCk9PklfdH0pO2Z1bmN0aW9uIFpfdCh0LGUpe2xldCBpPXQucXVhbnRpemVkVmVydGljZXMsbj1pLmxlbmd0aC8zLHM9dC5vY3RFbmNvZGVkTm9ybWFscyxvPXQud2VzdEluZGljZXMubGVuZ3RoK3QuZWFzdEluZGljZXMubGVuZ3RoK3Quc291dGhJbmRpY2VzLmxlbmd0aCt0Lm5vcnRoSW5kaWNlcy5sZW5ndGgscj10LmluY2x1ZGVXZWJNZXJjYXRvclQsYT10LmV4YWdnZXJhdGlvbixoPXQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsZD1hIT09MSxmPVh0LmNsb25lKHQucmVjdGFuZ2xlKSxFPWYud2VzdCxfPWYuc291dGgsUj1mLmVhc3QsST1mLm5vcnRoLEM9b3QuY2xvbmUodC5lbGxpcHNvaWQpLE49dC5taW5pbXVtSGVpZ2h0LFQ9dC5tYXhpbXVtSGVpZ2h0LEY9dC5yZWxhdGl2ZVRvQ2VudGVyLGI9SW4uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoRixDKSxHPWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihiLG5ldyBhdCksTSxRO3ImJihNPWtzLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoXyksUT0xLyhrcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKEkpLU0pKTtsZXQgVT1pLnN1YmFycmF5KDAsbiksaz1pLnN1YmFycmF5KG4sMipuKSx5PWkuc3ViYXJyYXkobioyLDMqbiksYz1tKHMpLGc9bmV3IEFycmF5KG4pLFY9bmV3IEFycmF5KG4pLEQ9bmV3IEFycmF5KG4pLHc9cj9uZXcgQXJyYXkobik6W10seD1kP25ldyBBcnJheShuKTpbXSxIPV9fdDtILng9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLEgueT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksSC56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgaj1SX3Q7ai54PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxqLnk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGouej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IFg9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHR0PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxCPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxJdD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKGxldCBZZT0wO1llPG47KytZZSl7bGV0IEJpPVVbWWVdLEFuPWtbWWVdLE5lPUJpL3lHLGVpPUFuL3lHLF9uPUwubGVycChOLFQseVtZZV0veUcpO1lzLmxvbmdpdHVkZT1MLmxlcnAoRSxSLE5lKSxZcy5sYXRpdHVkZT1MLmxlcnAoXyxJLGVpKSxZcy5oZWlnaHQ9X24sWD1NYXRoLm1pbihZcy5sb25naXR1ZGUsWCksdHQ9TWF0aC5tYXgoWXMubG9uZ2l0dWRlLHR0KSxCPU1hdGgubWluKFlzLmxhdGl0dWRlLEIpLEl0PU1hdGgubWF4KFlzLmxhdGl0dWRlLEl0KTtsZXQgaHM9Qy5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihZcyk7Z1tZZV09bmV3IG50KE5lLGVpKSxWW1llXT1fbixEW1llXT1ocyxyJiYod1tZZV09KGtzLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoWXMubGF0aXR1ZGUpLU0pKlEpLGQmJih4W1llXT1DLmdlb2RldGljU3VyZmFjZU5vcm1hbChocykpLGF0Lm11bHRpcGx5QnlQb2ludChHLGhzLE1SKSxsLm1pbmltdW1CeUNvbXBvbmVudChNUixILEgpLGwubWF4aW11bUJ5Q29tcG9uZW50KE1SLGosail9bGV0IGd0PVZnKHQud2VzdEluZGljZXMsZnVuY3Rpb24oWWUsQmkpe3JldHVybiBnW1llXS55LWdbQmldLnl9KSxZdD1WZyh0LmVhc3RJbmRpY2VzLGZ1bmN0aW9uKFllLEJpKXtyZXR1cm4gZ1tCaV0ueS1nW1llXS55fSksTXQ9VmcodC5zb3V0aEluZGljZXMsZnVuY3Rpb24oWWUsQmkpe3JldHVybiBnW0JpXS54LWdbWWVdLnh9KSxDdD1WZyh0Lm5vcnRoSW5kaWNlcyxmdW5jdGlvbihZZSxCaSl7cmV0dXJuIGdbWWVdLngtZ1tCaV0ueH0pLHp0O048MCYmKHp0PW5ldyBkQShDKS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludFBvc3NpYmx5VW5kZXJFbGxpcHNvaWQoRixELE4pKTtsZXQga3Q9TjtrdD1NYXRoLm1pbihrdCxTZyh0Lndlc3RJbmRpY2VzLHQud2VzdFNraXJ0SGVpZ2h0LFYsZyxmLEMsRyxILGopKSxrdD1NYXRoLm1pbihrdCxTZyh0LnNvdXRoSW5kaWNlcyx0LnNvdXRoU2tpcnRIZWlnaHQsVixnLGYsQyxHLEgsaikpLGt0PU1hdGgubWluKGt0LFNnKHQuZWFzdEluZGljZXMsdC5lYXN0U2tpcnRIZWlnaHQsVixnLGYsQyxHLEgsaikpLGt0PU1hdGgubWluKGt0LFNnKHQubm9ydGhJbmRpY2VzLHQubm9ydGhTa2lydEhlaWdodCxWLGcsZixDLEcsSCxqKSk7bGV0IEp0PW5ldyBwaChILGosRiksV3Q9bmV3IHZjKEYsSnQsa3QsVCxiLGMscixkLGEsaCksRnQ9V3Quc3RyaWRlLGVlPW4qRnQrbypGdCxjZT1uZXcgRmxvYXQzMkFycmF5KGVlKSxqZT0wO2ZvcihsZXQgWWU9MDtZZTxuOysrWWUpe2lmKGMpe2xldCBCaT1ZZSoyO0tmLng9c1tCaV0sS2YueT1zW0JpKzFdfWplPVd0LmVuY29kZShjZSxqZSxEW1llXSxnW1llXSxWW1llXSxLZix3W1llXSx4W1llXSl9bGV0IE9lPU1hdGgubWF4KDAsKG8tNCkqMiksTWU9dC5pbmRpY2VzLmxlbmd0aCtPZSozLFVlPXRlLmNyZWF0ZVR5cGVkQXJyYXkobitvLE1lKTtVZS5zZXQodC5pbmRpY2VzLDApO2xldCBDZT0xZS00LGJlPSh0dC1YKSpDZSxuaT0oSXQtQikqQ2UsemU9LWJlLEdlPTAsVWk9YmUsUmk9MCxzaT0wLHFlPW5pLFZpPTAsZ249LW5pLERlPW4qRnQ7cmV0dXJuIE9nKGNlLERlLGd0LFd0LFYsZyxzLEMsZix0Lndlc3RTa2lydEhlaWdodCxNLFEsemUsR2UpLERlKz10Lndlc3RJbmRpY2VzLmxlbmd0aCpGdCxPZyhjZSxEZSxNdCxXdCxWLGcscyxDLGYsdC5zb3V0aFNraXJ0SGVpZ2h0LE0sUSxWaSxnbiksRGUrPXQuc291dGhJbmRpY2VzLmxlbmd0aCpGdCxPZyhjZSxEZSxZdCxXdCxWLGcscyxDLGYsdC5lYXN0U2tpcnRIZWlnaHQsTSxRLFVpLFJpKSxEZSs9dC5lYXN0SW5kaWNlcy5sZW5ndGgqRnQsT2coY2UsRGUsQ3QsV3QsVixnLHMsQyxmLHQubm9ydGhTa2lydEhlaWdodCxNLFEsc2kscWUpLGhLLmFkZFNraXJ0SW5kaWNlcyhndCxNdCxZdCxDdCxuLFVlLHQuaW5kaWNlcy5sZW5ndGgpLGUucHVzaChjZS5idWZmZXIsVWUuYnVmZmVyKSx7dmVydGljZXM6Y2UuYnVmZmVyLGluZGljZXM6VWUuYnVmZmVyLHdlc3RJbmRpY2VzU291dGhUb05vcnRoOmd0LHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6TXQsZWFzdEluZGljZXNOb3J0aFRvU291dGg6WXQsbm9ydGhJbmRpY2VzV2VzdFRvRWFzdDpDdCx2ZXJ0ZXhTdHJpZGU6RnQsY2VudGVyOkYsbWluaW11bUhlaWdodDpOLG1heGltdW1IZWlnaHQ6VCxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTp6dCxlbmNvZGluZzpXdCxpbmRleENvdW50V2l0aG91dFNraXJ0czp0LmluZGljZXMubGVuZ3RofX1mdW5jdGlvbiBTZyh0LGUsaSxuLHMsbyxyLGEsaCl7bGV0IEE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGQ9cy5ub3J0aCxmPXMuc291dGgsRT1zLmVhc3QsXz1zLndlc3Q7RTxfJiYoRSs9TC5UV09fUEkpO2xldCBSPXQubGVuZ3RoO2ZvcihsZXQgST0wO0k8UjsrK0kpe2xldCBDPXRbSV0sTj1pW0NdLFQ9bltDXTtZcy5sb25naXR1ZGU9TC5sZXJwKF8sRSxULngpLFlzLmxhdGl0dWRlPUwubGVycChmLGQsVC55KSxZcy5oZWlnaHQ9Ti1lO2xldCBGPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oWXMsTVIpO2F0Lm11bHRpcGx5QnlQb2ludChyLEYsRiksbC5taW5pbXVtQnlDb21wb25lbnQoRixhLGEpLGwubWF4aW11bUJ5Q29tcG9uZW50KEYsaCxoKSxBPU1hdGgubWluKEEsWXMuaGVpZ2h0KX1yZXR1cm4gQX1mdW5jdGlvbiBPZyh0LGUsaSxuLHMsbyxyLGEsaCxBLGQsZixFLF8pe2xldCBSPW0ociksST1oLm5vcnRoLEM9aC5zb3V0aCxOPWguZWFzdCxUPWgud2VzdDtOPFQmJihOKz1MLlRXT19QSSk7bGV0IEY9aS5sZW5ndGg7Zm9yKGxldCBiPTA7YjxGOysrYil7bGV0IEc9aVtiXSxNPXNbR10sUT1vW0ddO1lzLmxvbmdpdHVkZT1MLmxlcnAoVCxOLFEueCkrRSxZcy5sYXRpdHVkZT1MLmxlcnAoQyxJLFEueSkrXyxZcy5oZWlnaHQ9TS1BO2xldCBVPWEuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oWXMsTVIpO2lmKFIpe2xldCBjPUcqMjtLZi54PXJbY10sS2YueT1yW2MrMV19bGV0IGs7bi5oYXNXZWJNZXJjYXRvclQmJihrPShrcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKFlzLmxhdGl0dWRlKS1kKSpmKTtsZXQgeTtuLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJih5PWEuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKFUpKSxlPW4uZW5jb2RlKHQsZSxVLFEsWXMuaGVpZ2h0LEtmLGsseSl9fWZ1bmN0aW9uIFZnKHQsZSl7bGV0IGk7cmV0dXJuIHR5cGVvZiB0LnNsaWNlPT0iZnVuY3Rpb24iJiYoaT10LnNsaWNlKCksdHlwZW9mIGkuc29ydCE9ImZ1bmN0aW9uIiYmKGk9dm9pZCAwKSksbShpKXx8KGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCkpLGkuc29ydChlKSxpfXZhciB5RyxNUixfX3QsUl90LFlzLEtmLElfdCx4Rz1PKCgpPT57YV8oKTtYZSgpO0h0KCk7cmkoKTttdCgpO1ZlKCk7U20oKTtEaSgpO19lKCk7RmkoKTtwbigpO1dSKCk7Y0soKTtmcigpO1VsKCk7TnMoKTt5Rz0zMjc2NyxNUj1uZXcgbCxfX3Q9bmV3IGwsUl90PW5ldyBsLFlzPW5ldyB1dCxLZj1uZXcgbnQ7SV90PVdpKFpfdCl9KTtmdW5jdGlvbiBwX3QodCxlKXtyZXR1cm4gTC5lcXVhbHNFcHNpbG9uKHQubGF0aXR1ZGUsZS5sYXRpdHVkZSxMLkVQU0lMT04xMCkmJkwuZXF1YWxzRXBzaWxvbih0LmxvbmdpdHVkZSxlLmxvbmdpdHVkZSxMLkVQU0lMT04xMCl9ZnVuY3Rpb24gZ190KHQsZSxpLG4pe2U9WG4oZSxsLmVxdWFsc0Vwc2lsb24pO2xldCBzPWUubGVuZ3RoO2lmKHM8MilyZXR1cm47bGV0IG89bShuKSxyPW0oaSksYT1uZXcgQXJyYXkocyksaD1uZXcgQXJyYXkocyksQT1uZXcgQXJyYXkocyksZD1lWzBdO2FbMF09ZDtsZXQgZj10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGQsdV90KTtyJiYoZi5oZWlnaHQ9aVswXSksaFswXT1mLmhlaWdodCxvP0FbMF09blswXTpBWzBdPTA7bGV0IEU9aFswXSxfPUFbMF0sUj1FPT09XyxJPTE7Zm9yKGxldCBDPTE7QzxzOysrQyl7bGV0IE49ZVtDXSxUPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoTixDX3QpO3ImJihULmhlaWdodD1pW0NdKSxSPVImJlQuaGVpZ2h0PT09MCxwX3QoZixUKT9mLmhlaWdodDxULmhlaWdodCYmKGhbSS0xXT1ULmhlaWdodCk6KGFbSV09TixoW0ldPVQuaGVpZ2h0LG8/QVtJXT1uW0NdOkFbSV09MCxSPVImJmhbSV09PT1BW0ldLHV0LmNsb25lKFQsZiksKytJKX1pZighKFJ8fEk8MikpcmV0dXJuIGEubGVuZ3RoPUksaC5sZW5ndGg9SSxBLmxlbmd0aD1JLHtwb3NpdGlvbnM6YSx0b3BIZWlnaHRzOmgsYm90dG9tSGVpZ2h0czpBfX12YXIgbEssdV90LENfdCxUX3QsTl90LGJfdCxHZyxQRz1PKCgpPT57T2EoKTtIdCgpO3JpKCk7bXQoKTtfZSgpO09mKCk7bEs9e307dV90PW5ldyB1dCxDX3Q9bmV3IHV0O1RfdD1uZXcgQXJyYXkoMiksTl90PW5ldyBBcnJheSgyKSxiX3Q9e3Bvc2l0aW9uczp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsZWxsaXBzb2lkOnZvaWQgMH07bEsuY29tcHV0ZVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsaSxuLHMsbyl7bGV0IHI9Z190KHQsZSxpLG4pO2lmKCFtKHIpKXJldHVybjtlPXIucG9zaXRpb25zLGk9ci50b3BIZWlnaHRzLG49ci5ib3R0b21IZWlnaHRzO2xldCBhPWUubGVuZ3RoLGg9YS0yLEEsZCxmPUwuY2hvcmRMZW5ndGgocyx0Lm1heGltdW1SYWRpdXMpLEU9Yl90O2lmKEUubWluRGlzdGFuY2U9ZixFLmVsbGlwc29pZD10LG8pe2xldCBfPTAsUjtmb3IoUj0wO1I8YS0xO1IrKylfKz1Pbi5udW1iZXJPZlBvaW50cyhlW1JdLGVbUisxXSxmKSsxO0E9bmV3IEZsb2F0NjRBcnJheShfKjMpLGQ9bmV3IEZsb2F0NjRBcnJheShfKjMpO2xldCBJPVRfdCxDPU5fdDtFLnBvc2l0aW9ucz1JLEUuaGVpZ2h0PUM7bGV0IE49MDtmb3IoUj0wO1I8YS0xO1IrKyl7SVswXT1lW1JdLElbMV09ZVtSKzFdLENbMF09aVtSXSxDWzFdPWlbUisxXTtsZXQgVD1Pbi5nZW5lcmF0ZUFyYyhFKTtBLnNldChULE4pLENbMF09bltSXSxDWzFdPW5bUisxXSxkLnNldChPbi5nZW5lcmF0ZUFyYyhFKSxOKSxOKz1ULmxlbmd0aH19ZWxzZSBFLnBvc2l0aW9ucz1lLEUuaGVpZ2h0PWksQT1uZXcgRmxvYXQ2NEFycmF5KE9uLmdlbmVyYXRlQXJjKEUpKSxFLmhlaWdodD1uLGQ9bmV3IEZsb2F0NjRBcnJheShPbi5nZW5lcmF0ZUFyYyhFKSk7cmV0dXJue2JvdHRvbVBvc2l0aW9uczpkLHRvcFBvc2l0aW9uczpBLG51bUNvcm5lcnM6aH19O0dnPWxLfSk7ZnVuY3Rpb24gZ2QodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zLGk9dC5tYXhpbXVtSGVpZ2h0cyxuPXQubWluaW11bUhlaWdodHM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2lmKG0oaSkmJmkubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGFuZCBvcHRpb25zLm1heGltdW1IZWlnaHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGguIik7aWYobShuKSYmbi5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWluaW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtsZXQgcz1aKHQudmVydGV4Rm9ybWF0LE90LkRFRkFVTFQpLG89Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSxyPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpO3RoaXMuX3Bvc2l0aW9ucz1lLHRoaXMuX21pbmltdW1IZWlnaHRzPW4sdGhpcy5fbWF4aW11bUhlaWdodHM9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9T3QuY2xvbmUocyksdGhpcy5fZ3JhbnVsYXJpdHk9byx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUociksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlV2FsbEdlb21ldHJ5IjtsZXQgYT0xK2UubGVuZ3RoKmwucGFja2VkTGVuZ3RoKzI7bShuKSYmKGErPW4ubGVuZ3RoKSxtKGkpJiYoYSs9aS5sZW5ndGgpLHRoaXMucGFja2VkTGVuZ3RoPWErb3QucGFja2VkTGVuZ3RoK090LnBhY2tlZExlbmd0aCsxfXZhciBKRyxCZyxGX3QsZEssWV90LFNfdCxPX3QsbUssZkssVVIsakcsRUs9TygoKT0+e19pKCk7SHQoKTtvaSgpO2J0KCk7bXQoKTtWdCgpO1ZlKCk7eWkoKTtqaSgpO0VuKCk7RGkoKTtfZSgpO1hpKCk7THMoKTtQRygpO0pHPW5ldyBsLEJnPW5ldyBsLEZfdD1uZXcgbCxkSz1uZXcgbCxZX3Q9bmV3IGwsU190PW5ldyBsLE9fdD1uZXcgbDtnZC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtpPVooaSwwKTtsZXQgbixzPXQuX3Bvc2l0aW9ucyxvPXMubGVuZ3RoO2ZvcihlW2krK109byxuPTA7bjxvOysrbixpKz1sLnBhY2tlZExlbmd0aClsLnBhY2soc1tuXSxlLGkpO2xldCByPXQuX21pbmltdW1IZWlnaHRzO2lmKG89bShyKT9yLmxlbmd0aDowLGVbaSsrXT1vLG0ocikpZm9yKG49MDtuPG87KytuKWVbaSsrXT1yW25dO2xldCBhPXQuX21heGltdW1IZWlnaHRzO2lmKG89bShhKT9hLmxlbmd0aDowLGVbaSsrXT1vLG0oYSkpZm9yKG49MDtuPG87KytuKWVbaSsrXT1hW25dO3JldHVybiBvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxPdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPU90LnBhY2tlZExlbmd0aCxlW2ldPXQuX2dyYW51bGFyaXR5LGV9O21LPW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxmSz1uZXcgT3QsVVI9e3Bvc2l0aW9uczp2b2lkIDAsbWluaW11bUhlaWdodHM6dm9pZCAwLG1heGltdW1IZWlnaHRzOnZvaWQgMCxlbGxpcHNvaWQ6bUssdmVydGV4Rm9ybWF0OmZLLGdyYW51bGFyaXR5OnZvaWQgMH07Z2QudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbixzPXRbZSsrXSxvPW5ldyBBcnJheShzKTtmb3Iobj0wO248czsrK24sZSs9bC5wYWNrZWRMZW5ndGgpb1tuXT1sLnVucGFjayh0LGUpO3M9dFtlKytdO2xldCByO2lmKHM+MClmb3Iocj1uZXcgQXJyYXkocyksbj0wO248czsrK24pcltuXT10W2UrK107cz10W2UrK107bGV0IGE7aWYocz4wKWZvcihhPW5ldyBBcnJheShzKSxuPTA7bjxzOysrbilhW25dPXRbZSsrXTtsZXQgaD1vdC51bnBhY2sodCxlLG1LKTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IEE9T3QudW5wYWNrKHQsZSxmSyk7ZSs9T3QucGFja2VkTGVuZ3RoO2xldCBkPXRbZV07cmV0dXJuIG0oaSk/KGkuX3Bvc2l0aW9ucz1vLGkuX21pbmltdW1IZWlnaHRzPXIsaS5fbWF4aW11bUhlaWdodHM9YSxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUoaCxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1PdC5jbG9uZShBLGkuX3ZlcnRleEZvcm1hdCksaS5fZ3JhbnVsYXJpdHk9ZCxpKTooVVIucG9zaXRpb25zPW8sVVIubWluaW11bUhlaWdodHM9cixVUi5tYXhpbXVtSGVpZ2h0cz1hLFVSLmdyYW51bGFyaXR5PWQsbmV3IGdkKFVSKSl9O2dkLmZyb21Db25zdGFudEhlaWdodHM9ZnVuY3Rpb24odCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBZKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgaSxuLHM9dC5taW5pbXVtSGVpZ2h0LG89dC5tYXhpbXVtSGVpZ2h0LHI9bShzKSxhPW0obyk7aWYocnx8YSl7bGV0IEE9ZS5sZW5ndGg7aT1yP25ldyBBcnJheShBKTp2b2lkIDAsbj1hP25ldyBBcnJheShBKTp2b2lkIDA7Zm9yKGxldCBkPTA7ZDxBOysrZClyJiYoaVtkXT1zKSxhJiYobltkXT1vKX1sZXQgaD17cG9zaXRpb25zOmUsbWF4aW11bUhlaWdodHM6bixtaW5pbXVtSGVpZ2h0czppLGVsbGlwc29pZDp0LmVsbGlwc29pZCx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXR9O3JldHVybiBuZXcgZ2QoaCl9O2dkLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxpPXQuX21pbmltdW1IZWlnaHRzLG49dC5fbWF4aW11bUhlaWdodHMscz10Ll92ZXJ0ZXhGb3JtYXQsbz10Ll9ncmFudWxhcml0eSxyPXQuX2VsbGlwc29pZCxhPUdnLmNvbXB1dGVQb3NpdGlvbnMocixlLG4saSxvLCEwKTtpZighbShhKSlyZXR1cm47bGV0IGg9YS5ib3R0b21Qb3NpdGlvbnMsQT1hLnRvcFBvc2l0aW9ucyxkPWEubnVtQ29ybmVycyxmPUEubGVuZ3RoLEU9ZioyLF89cy5wb3NpdGlvbj9uZXcgRmxvYXQ2NEFycmF5KEUpOnZvaWQgMCxSPXMubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoRSk6dm9pZCAwLEk9cy50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoRSk6dm9pZCAwLEM9cy5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShFKTp2b2lkIDAsTj1zLnN0P25ldyBGbG9hdDMyQXJyYXkoRS8zKjIpOnZvaWQgMCxUPTAsRj0wLGI9MCxHPTAsTT0wLFE9T190LFU9U190LGs9WV90LHk9ITA7Zi89MztsZXQgYyxnPTAsVj0xLyhmLWQtMSk7Zm9yKGM9MDtjPGY7KytjKXtsZXQgaj1jKjMsWD1sLmZyb21BcnJheShBLGosSkcpLHR0PWwuZnJvbUFycmF5KGgsaixCZyk7aWYocy5wb3NpdGlvbiYmKF9bVCsrXT10dC54LF9bVCsrXT10dC55LF9bVCsrXT10dC56LF9bVCsrXT1YLngsX1tUKytdPVgueSxfW1QrK109WC56KSxzLnN0JiYoTltNKytdPWcsTltNKytdPTAsTltNKytdPWcsTltNKytdPTEpLHMubm9ybWFsfHxzLnRhbmdlbnR8fHMuYml0YW5nZW50KXtsZXQgQj1sLmNsb25lKGwuWkVSTyxkSyksSXQ9bC5zdWJ0cmFjdChYLHIuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKFgsQmcpLEJnKTtpZihjKzE8ZiYmKEI9bC5mcm9tQXJyYXkoQSxqKzMsZEspKSx5KXtsZXQgZ3Q9bC5zdWJ0cmFjdChCLFgsRl90KSxZdD1sLnN1YnRyYWN0KEl0LFgsSkcpO1E9bC5ub3JtYWxpemUobC5jcm9zcyhZdCxndCxRKSxRKSx5PSExfWwuZXF1YWxzRXBzaWxvbihYLEIsTC5FUFNJTE9OMTApP3k9ITA6KGcrPVYscy50YW5nZW50JiYoVT1sLm5vcm1hbGl6ZShsLnN1YnRyYWN0KEIsWCxVKSxVKSkscy5iaXRhbmdlbnQmJihrPWwubm9ybWFsaXplKGwuY3Jvc3MoUSxVLGspLGspKSkscy5ub3JtYWwmJihSW0YrK109US54LFJbRisrXT1RLnksUltGKytdPVEueixSW0YrK109US54LFJbRisrXT1RLnksUltGKytdPVEueikscy50YW5nZW50JiYoSVtHKytdPVUueCxJW0crK109VS55LElbRysrXT1VLnosSVtHKytdPVUueCxJW0crK109VS55LElbRysrXT1VLnopLHMuYml0YW5nZW50JiYoQ1tiKytdPWsueCxDW2IrK109ay55LENbYisrXT1rLnosQ1tiKytdPWsueCxDW2IrK109ay55LENbYisrXT1rLnopfX1sZXQgRD1uZXcgd2U7cy5wb3NpdGlvbiYmKEQucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLHMubm9ybWFsJiYoRC5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlJ9KSkscy50YW5nZW50JiYoRC50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpJfSkpLHMuYml0YW5nZW50JiYoRC5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkN9KSkscy5zdCYmKEQuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOk59KSk7bGV0IHc9RS8zO0UtPTYqKGQrMSk7bGV0IHg9dGUuY3JlYXRlVHlwZWRBcnJheSh3LEUpLEg9MDtmb3IoYz0wO2M8dy0yO2MrPTIpe2xldCBqPWMsWD1jKzIsdHQ9bC5mcm9tQXJyYXkoXyxqKjMsSkcpLEI9bC5mcm9tQXJyYXkoXyxYKjMsQmcpO2lmKGwuZXF1YWxzRXBzaWxvbih0dCxCLEwuRVBTSUxPTjEwKSljb250aW51ZTtsZXQgSXQ9YysxLGd0PWMrMzt4W0grK109SXQseFtIKytdPWoseFtIKytdPWd0LHhbSCsrXT1ndCx4W0grK109aix4W0grK109WH1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOkQsaW5kaWNlczp4LHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBOdC5mcm9tVmVydGljZXMoXyl9KX07akc9Z2R9KTt2YXIgSEc9e307SGUoSEcse2RlZmF1bHQ6KCk9PkdfdH0pO2Z1bmN0aW9uIFZfdCh0LGUpe3JldHVybiBtKGUpJiYodD1qRy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksakcuY3JlYXRlR2VvbWV0cnkodCl9dmFyIEdfdCx2Rz1PKCgpPT57bXQoKTtWZSgpO0VLKCk7R190PVZfdH0pO2Z1bmN0aW9uIFRkKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvc2l0aW9ucyxpPXQubWF4aW11bUhlaWdodHMsbj10Lm1pbmltdW1IZWlnaHRzO2lmKCFtKGUpKXRocm93IG5ldyBZKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtpZihtKGkpJiZpLmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBZKCJvcHRpb25zLnBvc2l0aW9ucyBhbmQgb3B0aW9ucy5tYXhpbXVtSGVpZ2h0cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2lmKG0obikmJm4ubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGFuZCBvcHRpb25zLm1pbmltdW1IZWlnaHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGguIik7bGV0IHM9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSxvPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpO3RoaXMuX3Bvc2l0aW9ucz1lLHRoaXMuX21pbmltdW1IZWlnaHRzPW4sdGhpcy5fbWF4aW11bUhlaWdodHM9aSx0aGlzLl9ncmFudWxhcml0eT1zLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShvKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVXYWxsT3V0bGluZUdlb21ldHJ5IjtsZXQgcj0xK2UubGVuZ3RoKmwucGFja2VkTGVuZ3RoKzI7bShuKSYmKHIrPW4ubGVuZ3RoKSxtKGkpJiYocis9aS5sZW5ndGgpLHRoaXMucGFja2VkTGVuZ3RoPXIrb3QucGFja2VkTGVuZ3RoKzF9dmFyIF9LLFJLLFpLLFFSLHpHLElLPU8oKCk9PntfaSgpO0h0KCk7b2koKTtidCgpO210KCk7VnQoKTtWZSgpO3lpKCk7amkoKTtFbigpO0RpKCk7X2UoKTtYaSgpO1BHKCk7X0s9bmV3IGwsUks9bmV3IGw7VGQucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7aT1aKGksMCk7bGV0IG4scz10Ll9wb3NpdGlvbnMsbz1zLmxlbmd0aDtmb3IoZVtpKytdPW8sbj0wO248bzsrK24saSs9bC5wYWNrZWRMZW5ndGgpbC5wYWNrKHNbbl0sZSxpKTtsZXQgcj10Ll9taW5pbXVtSGVpZ2h0cztpZihvPW0ocik/ci5sZW5ndGg6MCxlW2krK109byxtKHIpKWZvcihuPTA7bjxvOysrbillW2krK109cltuXTtsZXQgYT10Ll9tYXhpbXVtSGVpZ2h0cztpZihvPW0oYSk/YS5sZW5ndGg6MCxlW2krK109byxtKGEpKWZvcihuPTA7bjxvOysrbillW2krK109YVtuXTtyZXR1cm4gb3QucGFjayh0Ll9lbGxpcHNvaWQsZSxpKSxpKz1vdC5wYWNrZWRMZW5ndGgsZVtpXT10Ll9ncmFudWxhcml0eSxlfTtaSz1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksUVI9e3Bvc2l0aW9uczp2b2lkIDAsbWluaW11bUhlaWdodHM6dm9pZCAwLG1heGltdW1IZWlnaHRzOnZvaWQgMCxlbGxpcHNvaWQ6WkssZ3JhbnVsYXJpdHk6dm9pZCAwfTtUZC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuLHM9dFtlKytdLG89bmV3IEFycmF5KHMpO2ZvcihuPTA7bjxzOysrbixlKz1sLnBhY2tlZExlbmd0aClvW25dPWwudW5wYWNrKHQsZSk7cz10W2UrK107bGV0IHI7aWYocz4wKWZvcihyPW5ldyBBcnJheShzKSxuPTA7bjxzOysrbilyW25dPXRbZSsrXTtzPXRbZSsrXTtsZXQgYTtpZihzPjApZm9yKGE9bmV3IEFycmF5KHMpLG49MDtuPHM7KytuKWFbbl09dFtlKytdO2xldCBoPW90LnVucGFjayh0LGUsWkspO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgQT10W2VdO3JldHVybiBtKGkpPyhpLl9wb3NpdGlvbnM9byxpLl9taW5pbXVtSGVpZ2h0cz1yLGkuX21heGltdW1IZWlnaHRzPWEsaS5fZWxsaXBzb2lkPW90LmNsb25lKGgsaS5fZWxsaXBzb2lkKSxpLl9ncmFudWxhcml0eT1BLGkpOihRUi5wb3NpdGlvbnM9byxRUi5taW5pbXVtSGVpZ2h0cz1yLFFSLm1heGltdW1IZWlnaHRzPWEsUVIuZ3JhbnVsYXJpdHk9QSxuZXcgVGQoUVIpKX07VGQuZnJvbUNvbnN0YW50SGVpZ2h0cz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2xldCBpLG4scz10Lm1pbmltdW1IZWlnaHQsbz10Lm1heGltdW1IZWlnaHQscj1tKHMpLGE9bShvKTtpZihyfHxhKXtsZXQgQT1lLmxlbmd0aDtpPXI/bmV3IEFycmF5KEEpOnZvaWQgMCxuPWE/bmV3IEFycmF5KEEpOnZvaWQgMDtmb3IobGV0IGQ9MDtkPEE7KytkKXImJihpW2RdPXMpLGEmJihuW2RdPW8pfWxldCBoPXtwb3NpdGlvbnM6ZSxtYXhpbXVtSGVpZ2h0czpuLG1pbmltdW1IZWlnaHRzOmksZWxsaXBzb2lkOnQuZWxsaXBzb2lkfTtyZXR1cm4gbmV3IFRkKGgpfTtUZC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsaT10Ll9taW5pbXVtSGVpZ2h0cyxuPXQuX21heGltdW1IZWlnaHRzLHM9dC5fZ3JhbnVsYXJpdHksbz10Ll9lbGxpcHNvaWQscj1HZy5jb21wdXRlUG9zaXRpb25zKG8sZSxuLGkscywhMSk7aWYoIW0ocikpcmV0dXJuO2xldCBhPXIuYm90dG9tUG9zaXRpb25zLGg9ci50b3BQb3NpdGlvbnMsQT1oLmxlbmd0aCxkPUEqMixmPW5ldyBGbG9hdDY0QXJyYXkoZCksRT0wO0EvPTM7bGV0IF87Zm9yKF89MDtfPEE7KytfKXtsZXQgVD1fKjMsRj1sLmZyb21BcnJheShoLFQsX0spLGI9bC5mcm9tQXJyYXkoYSxULFJLKTtmW0UrK109Yi54LGZbRSsrXT1iLnksZltFKytdPWIueixmW0UrK109Ri54LGZbRSsrXT1GLnksZltFKytdPUYuen1sZXQgUj1uZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Zn0pfSksST1kLzM7ZD0yKkktNCtJO2xldCBDPXRlLmNyZWF0ZVR5cGVkQXJyYXkoSSxkKSxOPTA7Zm9yKF89MDtfPEktMjtfKz0yKXtsZXQgVD1fLEY9XysyLGI9bC5mcm9tQXJyYXkoZixUKjMsX0spLEc9bC5mcm9tQXJyYXkoZixGKjMsUkspO2lmKGwuZXF1YWxzRXBzaWxvbihiLEcsTC5FUFNJTE9OMTApKWNvbnRpbnVlO2xldCBNPV8rMSxRPV8rMztDW04rK109TSxDW04rK109VCxDW04rK109TSxDW04rK109USxDW04rK109VCxDW04rK109Rn1yZXR1cm4gQ1tOKytdPUktMixDW04rK109SS0xLG5ldyBzZSh7YXR0cmlidXRlczpSLGluZGljZXM6QyxwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOm5ldyBOdC5mcm9tVmVydGljZXMoZil9KX07ekc9VGR9KTt2YXIgS0c9e307SGUoS0cse2RlZmF1bHQ6KCk9PldfdH0pO2Z1bmN0aW9uIEJfdCh0LGUpe3JldHVybiBtKGUpJiYodD16Ry51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksekcuY3JlYXRlR2VvbWV0cnkodCl9dmFyIFdfdCxYRz1PKCgpPT57bXQoKTtWZSgpO0lLKCk7V190PUJfdH0pO3ZhciB0Qj10cygoa1IsJEcpPT57dmFyIGhlPWhlfHx7fTtoZS5zY29wZT17fTtoZS5hcnJheUl0ZXJhdG9ySW1wbD1mdW5jdGlvbih0KXt2YXIgZT0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlPHQubGVuZ3RoP3tkb25lOiExLHZhbHVlOnRbZSsrXX06e2RvbmU6ITB9fX07aGUuYXJyYXlJdGVyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm57bmV4dDpoZS5hcnJheUl0ZXJhdG9ySW1wbCh0KX19O2hlLm1ha2VJdGVyYXRvcj1mdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLml0ZXJhdG9yJiZ0W1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGU/ZS5jYWxsKHQpOmhlLmFycmF5SXRlcmF0b3IodCl9O2hlLkFTU1VNRV9FUzU9ITE7aGUuQVNTVU1FX05PX05BVElWRV9NQVA9ITE7aGUuQVNTVU1FX05PX05BVElWRV9TRVQ9ITE7aGUuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTtoZS5JU09MQVRFX1BPTFlGSUxMUz0hMTtoZS5GT1JDRV9QT0xZRklMTF9QUk9NSVNFPSExO2hlLkZPUkNFX1BPTFlGSUxMX1BST01JU0VfV0hFTl9OT19VTkhBTkRMRURfUkVKRUNUSU9OPSExO2hlLmdldEdsb2JhbD1mdW5jdGlvbih0KXt0PVt0eXBlb2YgZ2xvYmFsVGhpcz09Im9iamVjdCImJmdsb2JhbFRoaXMsdCx0eXBlb2Ygd2luZG93PT0ib2JqZWN0IiYmd2luZG93LHR5cGVvZiBzZWxmPT0ib2JqZWN0IiYmc2VsZix0eXBlb2YgZ2xvYmFsPT0ib2JqZWN0IiYmZ2xvYmFsXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoOysrZSl7dmFyIGk9dFtlXTtpZihpJiZpLk1hdGg9PU1hdGgpcmV0dXJuIGl9dGhyb3cgRXJyb3IoIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3QiKX07aGUuZ2xvYmFsPWhlLmdldEdsb2JhbChrUik7aGUuZGVmaW5lUHJvcGVydHk9aGUuQVNTVU1FX0VTNXx8dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPT0iZnVuY3Rpb24iP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ9PUFycmF5LnByb3RvdHlwZXx8dD09T2JqZWN0LnByb3RvdHlwZXx8KHRbZV09aS52YWx1ZSksdH07aGUuSVNfU1lNQk9MX05BVElWRT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZ0eXBlb2YgU3ltYm9sKCJ4Iik9PSJzeW1ib2wiO2hlLlRSVVNUX0VTNl9QT0xZRklMTFM9IWhlLklTT0xBVEVfUE9MWUZJTExTfHxoZS5JU19TWU1CT0xfTkFUSVZFO2hlLnBvbHlmaWxscz17fTtoZS5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2w9e307aGUuUE9MWUZJTExfUFJFRklYPSIkanNjcCQiO2hlLnBvbHlmaWxsPWZ1bmN0aW9uKHQsZSxpLG4pe2UmJihoZS5JU09MQVRFX1BPTFlGSUxMUz9oZS5wb2x5ZmlsbElzb2xhdGVkKHQsZSxpLG4pOmhlLnBvbHlmaWxsVW5pc29sYXRlZCh0LGUsaSxuKSl9O2hlLnBvbHlmaWxsVW5pc29sYXRlZD1mdW5jdGlvbih0LGUsaSxuKXtmb3IoaT1oZS5nbG9iYWwsdD10LnNwbGl0KCIuIiksbj0wO248dC5sZW5ndGgtMTtuKyspe3ZhciBzPXRbbl07aWYoIShzIGluIGkpKXJldHVybjtpPWlbc119dD10W3QubGVuZ3RoLTFdLG49aVt0XSxlPWUobiksZSE9biYmZSE9bnVsbCYmaGUuZGVmaW5lUHJvcGVydHkoaSx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfTtoZS5wb2x5ZmlsbElzb2xhdGVkPWZ1bmN0aW9uKHQsZSxpLG4pe3ZhciBzPXQuc3BsaXQoIi4iKTt0PXMubGVuZ3RoPT09MSxuPXNbMF0sbj0hdCYmbiBpbiBoZS5wb2x5ZmlsbHM/aGUucG9seWZpbGxzOmhlLmdsb2JhbDtmb3IodmFyIG89MDtvPHMubGVuZ3RoLTE7bysrKXt2YXIgcj1zW29dO2lmKCEociBpbiBuKSlyZXR1cm47bj1uW3JdfXM9c1tzLmxlbmd0aC0xXSxpPWhlLklTX1NZTUJPTF9OQVRJVkUmJmk9PT0iZXM2Ij9uW3NdOm51bGwsZT1lKGkpLGUhPW51bGwmJih0P2hlLmRlZmluZVByb3BlcnR5KGhlLnBvbHlmaWxscyxzLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pOmUhPT1pJiYoaGUucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW3NdPT09dm9pZCAwJiYoaT0xZTkqTWF0aC5yYW5kb20oKT4+PjAsaGUucHJvcGVydHlUb1BvbHlmaWxsU3ltYm9sW3NdPWhlLklTX1NZTUJPTF9OQVRJVkU/aGUuZ2xvYmFsLlN5bWJvbChzKTpoZS5QT0xZRklMTF9QUkVGSVgraSsiJCIrcyksaGUuZGVmaW5lUHJvcGVydHkobixoZS5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbc10se2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSkpKX07aGUucG9seWZpbGwoIlByb21pc2UiLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt0aGlzLmJhdGNoXz1udWxsfWZ1bmN0aW9uIGkocil7cmV0dXJuIHIgaW5zdGFuY2VvZiBzP3I6bmV3IHMoZnVuY3Rpb24oYSxoKXthKHIpfSl9aWYodCYmKCEoaGUuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRXx8aGUuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT04mJnR5cGVvZiBoZS5nbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50PiJ1Iil8fCFoZS5nbG9iYWwuUHJvbWlzZXx8aGUuZ2xvYmFsLlByb21pc2UudG9TdHJpbmcoKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIik9PT0tMSkpcmV0dXJuIHQ7ZS5wcm90b3R5cGUuYXN5bmNFeGVjdXRlPWZ1bmN0aW9uKHIpe2lmKHRoaXMuYmF0Y2hfPT1udWxsKXt0aGlzLmJhdGNoXz1bXTt2YXIgYT10aGlzO3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXthLmV4ZWN1dGVCYXRjaF8oKX0pfXRoaXMuYmF0Y2hfLnB1c2gocil9O3ZhciBuPWhlLmdsb2JhbC5zZXRUaW1lb3V0O2UucHJvdG90eXBlLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uPWZ1bmN0aW9uKHIpe24ociwwKX0sZS5wcm90b3R5cGUuZXhlY3V0ZUJhdGNoXz1mdW5jdGlvbigpe2Zvcig7dGhpcy5iYXRjaF8mJnRoaXMuYmF0Y2hfLmxlbmd0aDspe3ZhciByPXRoaXMuYmF0Y2hfO3RoaXMuYmF0Y2hfPVtdO2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7KythKXt2YXIgaD1yW2FdO3JbYV09bnVsbDt0cnl7aCgpfWNhdGNoKEEpe3RoaXMuYXN5bmNUaHJvd18oQSl9fX10aGlzLmJhdGNoXz1udWxsfSxlLnByb3RvdHlwZS5hc3luY1Rocm93Xz1mdW5jdGlvbihyKXt0aGlzLmFzeW5jRXhlY3V0ZUZ1bmN0aW9uKGZ1bmN0aW9uKCl7dGhyb3cgcn0pfTt2YXIgcz1mdW5jdGlvbihyKXt0aGlzLnN0YXRlXz0wLHRoaXMucmVzdWx0Xz12b2lkIDAsdGhpcy5vblNldHRsZWRDYWxsYmFja3NfPVtdLHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXz0hMTt2YXIgYT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7dHJ5e3IoYS5yZXNvbHZlLGEucmVqZWN0KX1jYXRjaChoKXthLnJlamVjdChoKX19O3MucHJvdG90eXBlLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihBKXtyZXR1cm4gZnVuY3Rpb24oZCl7aHx8KGg9ITAsQS5jYWxsKGEsZCkpfX12YXIgYT10aGlzLGg9ITE7cmV0dXJue3Jlc29sdmU6cih0aGlzLnJlc29sdmVUb18pLHJlamVjdDpyKHRoaXMucmVqZWN0Xyl9fSxzLnByb3RvdHlwZS5yZXNvbHZlVG9fPWZ1bmN0aW9uKHIpe2lmKHI9PT10aGlzKXRoaXMucmVqZWN0XyhuZXcgVHlwZUVycm9yKCJBIFByb21pc2UgY2Fubm90IHJlc29sdmUgdG8gaXRzZWxmIikpO2Vsc2UgaWYociBpbnN0YW5jZW9mIHMpdGhpcy5zZXR0bGVTYW1lQXNQcm9taXNlXyhyKTtlbHNle3Q6c3dpdGNoKHR5cGVvZiByKXtjYXNlIm9iamVjdCI6dmFyIGE9ciE9bnVsbDticmVhayB0O2Nhc2UiZnVuY3Rpb24iOmE9ITA7YnJlYWsgdDtkZWZhdWx0OmE9ITF9YT90aGlzLnJlc29sdmVUb05vblByb21pc2VPYmpfKHIpOnRoaXMuZnVsZmlsbF8ocil9fSxzLnByb3RvdHlwZS5yZXNvbHZlVG9Ob25Qcm9taXNlT2JqXz1mdW5jdGlvbihyKXt2YXIgYT12b2lkIDA7dHJ5e2E9ci50aGVufWNhdGNoKGgpe3RoaXMucmVqZWN0XyhoKTtyZXR1cm59dHlwZW9mIGE9PSJmdW5jdGlvbiI/dGhpcy5zZXR0bGVTYW1lQXNUaGVuYWJsZV8oYSxyKTp0aGlzLmZ1bGZpbGxfKHIpfSxzLnByb3RvdHlwZS5yZWplY3RfPWZ1bmN0aW9uKHIpe3RoaXMuc2V0dGxlXygyLHIpfSxzLnByb3RvdHlwZS5mdWxmaWxsXz1mdW5jdGlvbihyKXt0aGlzLnNldHRsZV8oMSxyKX0scy5wcm90b3R5cGUuc2V0dGxlXz1mdW5jdGlvbihyLGEpe2lmKHRoaXMuc3RhdGVfIT0wKXRocm93IEVycm9yKCJDYW5ub3Qgc2V0dGxlKCIrcisiLCAiK2ErIik6IFByb21pc2UgYWxyZWFkeSBzZXR0bGVkIGluIHN0YXRlIit0aGlzLnN0YXRlXyk7dGhpcy5zdGF0ZV89cix0aGlzLnJlc3VsdF89YSx0aGlzLnN0YXRlXz09PTImJnRoaXMuc2NoZWR1bGVVbmhhbmRsZWRSZWplY3Rpb25DaGVja18oKSx0aGlzLmV4ZWN1dGVPblNldHRsZWRDYWxsYmFja3NfKCl9LHMucHJvdG90eXBlLnNjaGVkdWxlVW5oYW5kbGVkUmVqZWN0aW9uQ2hlY2tfPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztuKGZ1bmN0aW9uKCl7aWYoci5ub3RpZnlVbmhhbmRsZWRSZWplY3Rpb25fKCkpe3ZhciBhPWhlLmdsb2JhbC5jb25zb2xlO3R5cGVvZiBhPCJ1IiYmYS5lcnJvcihyLnJlc3VsdF8pfX0sMSl9LHMucHJvdG90eXBlLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl89ZnVuY3Rpb24oKXtpZih0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF8pcmV0dXJuITE7dmFyIHI9aGUuZ2xvYmFsLkN1c3RvbUV2ZW50LGE9aGUuZ2xvYmFsLkV2ZW50LGg9aGUuZ2xvYmFsLmRpc3BhdGNoRXZlbnQ7cmV0dXJuIHR5cGVvZiBoPiJ1Ij8hMDoodHlwZW9mIHI9PSJmdW5jdGlvbiI/cj1uZXcgcigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOnR5cGVvZiBhPT0iZnVuY3Rpb24iP3I9bmV3IGEoInVuaGFuZGxlZHJlamVjdGlvbiIse2NhbmNlbGFibGU6ITB9KToocj1oZS5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkN1c3RvbUV2ZW50Iiksci5pbml0Q3VzdG9tRXZlbnQoInVuaGFuZGxlZHJlamVjdGlvbiIsITEsITAscikpLHIucHJvbWlzZT10aGlzLHIucmVhc29uPXRoaXMucmVzdWx0XyxoKHIpKX0scy5wcm90b3R5cGUuZXhlY3V0ZU9uU2V0dGxlZENhbGxiYWNrc189ZnVuY3Rpb24oKXtpZih0aGlzLm9uU2V0dGxlZENhbGxiYWNrc18hPW51bGwpe2Zvcih2YXIgcj0wO3I8dGhpcy5vblNldHRsZWRDYWxsYmFja3NfLmxlbmd0aDsrK3Ipby5hc3luY0V4ZWN1dGUodGhpcy5vblNldHRsZWRDYWxsYmFja3NfW3JdKTt0aGlzLm9uU2V0dGxlZENhbGxiYWNrc189bnVsbH19O3ZhciBvPW5ldyBlO3JldHVybiBzLnByb3RvdHlwZS5zZXR0bGVTYW1lQXNQcm9taXNlXz1mdW5jdGlvbihyKXt2YXIgYT10aGlzLmNyZWF0ZVJlc29sdmVBbmRSZWplY3RfKCk7ci5jYWxsV2hlblNldHRsZWRfKGEucmVzb2x2ZSxhLnJlamVjdCl9LHMucHJvdG90eXBlLnNldHRsZVNhbWVBc1RoZW5hYmxlXz1mdW5jdGlvbihyLGEpe3ZhciBoPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTt0cnl7ci5jYWxsKGEsaC5yZXNvbHZlLGgucmVqZWN0KX1jYXRjaChBKXtoLnJlamVjdChBKX19LHMucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24ocixhKXtmdW5jdGlvbiBoKEUsXyl7cmV0dXJuIHR5cGVvZiBFPT0iZnVuY3Rpb24iP2Z1bmN0aW9uKFIpe3RyeXtBKEUoUikpfWNhdGNoKEkpe2QoSSl9fTpffXZhciBBLGQsZj1uZXcgcyhmdW5jdGlvbihFLF8pe0E9RSxkPV99KTtyZXR1cm4gdGhpcy5jYWxsV2hlblNldHRsZWRfKGgocixBKSxoKGEsZCkpLGZ9LHMucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHIpfSxzLnByb3RvdHlwZS5jYWxsV2hlblNldHRsZWRfPWZ1bmN0aW9uKHIsYSl7ZnVuY3Rpb24gaCgpe3N3aXRjaChBLnN0YXRlXyl7Y2FzZSAxOnIoQS5yZXN1bHRfKTticmVhaztjYXNlIDI6YShBLnJlc3VsdF8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuZXhwZWN0ZWQgc3RhdGU6ICIrQS5zdGF0ZV8pfX12YXIgQT10aGlzO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz09bnVsbD9vLmFzeW5jRXhlY3V0ZShoKTp0aGlzLm9uU2V0dGxlZENhbGxiYWNrc18ucHVzaChoKSx0aGlzLmlzUmVqZWN0aW9uSGFuZGxlZF89ITB9LHMucmVzb2x2ZT1pLHMucmVqZWN0PWZ1bmN0aW9uKHIpe3JldHVybiBuZXcgcyhmdW5jdGlvbihhLGgpe2gocil9KX0scy5yYWNlPWZ1bmN0aW9uKHIpe3JldHVybiBuZXcgcyhmdW5jdGlvbihhLGgpe2Zvcih2YXIgQT1oZS5tYWtlSXRlcmF0b3IociksZD1BLm5leHQoKTshZC5kb25lO2Q9QS5uZXh0KCkpaShkLnZhbHVlKS5jYWxsV2hlblNldHRsZWRfKGEsaCl9KX0scy5hbGw9ZnVuY3Rpb24ocil7dmFyIGE9aGUubWFrZUl0ZXJhdG9yKHIpLGg9YS5uZXh0KCk7cmV0dXJuIGguZG9uZT9pKFtdKTpuZXcgcyhmdW5jdGlvbihBLGQpe2Z1bmN0aW9uIGYoUil7cmV0dXJuIGZ1bmN0aW9uKEkpe0VbUl09SSxfLS0sXz09MCYmQShFKX19dmFyIEU9W10sXz0wO2RvIEUucHVzaCh2b2lkIDApLF8rKyxpKGgudmFsdWUpLmNhbGxXaGVuU2V0dGxlZF8oZihFLmxlbmd0aC0xKSxkKSxoPWEubmV4dCgpO3doaWxlKCFoLmRvbmUpfSl9LHN9LCJlczYiLCJlczMiKTtoZS5vd25zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfTtoZS5hc3NpZ249aGUuVFJVU1RfRVM2X1BPTFlGSUxMUyYmdHlwZW9mIE9iamVjdC5hc3NpZ249PSJmdW5jdGlvbiI/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBuPWFyZ3VtZW50c1tpXTtpZihuKWZvcih2YXIgcyBpbiBuKWhlLm93bnMobixzKSYmKHRbc109bltzXSl9cmV0dXJuIHR9O2hlLnBvbHlmaWxsKCJPYmplY3QuYXNzaWduIixmdW5jdGlvbih0KXtyZXR1cm4gdHx8aGUuYXNzaWdufSwiZXM2IiwiZXMzIik7aGUuY2hlY2tTdHJpbmdBcmdzPWZ1bmN0aW9uKHQsZSxpKXtpZih0PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSAndGhpcycgdmFsdWUgZm9yIFN0cmluZy5wcm90b3R5cGUuIitpKyIgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuIitpKyIgbXVzdCBub3QgYmUgYSByZWd1bGFyIGV4cHJlc3Npb24iKTtyZXR1cm4gdCsiIn07aGUucG9seWZpbGwoIlN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCIsZnVuY3Rpb24odCl7cmV0dXJuIHR8fGZ1bmN0aW9uKGUsaSl7dmFyIG49aGUuY2hlY2tTdHJpbmdBcmdzKHRoaXMsZSwic3RhcnRzV2l0aCIpO2UrPSIiO3ZhciBzPW4ubGVuZ3RoLG89ZS5sZW5ndGg7aT1NYXRoLm1heCgwLE1hdGgubWluKGl8MCxuLmxlbmd0aCkpO2Zvcih2YXIgcj0wO3I8byYmaTxzOylpZihuW2krK10hPWVbcisrXSlyZXR1cm4hMTtyZXR1cm4gcj49b319LCJlczYiLCJlczMiKTtoZS5wb2x5ZmlsbCgiQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoaSl7cmV0dXJuIGk9TnVtYmVyKGkpLGk9PT0xLzB8fGk9PT0tMS8wP2k6aXwwfXJldHVybiB0fHxmdW5jdGlvbihpLG4scyl7dmFyIG89dGhpcy5sZW5ndGg7aWYoaT1lKGkpLG49ZShuKSxzPXM9PT12b2lkIDA/bzplKHMpLGk9MD5pP01hdGgubWF4KG8raSwwKTpNYXRoLm1pbihpLG8pLG49MD5uP01hdGgubWF4KG8rbiwwKTpNYXRoLm1pbihuLG8pLHM9MD5zP01hdGgubWF4KG8rcywwKTpNYXRoLm1pbihzLG8pLGk8bilmb3IoO248czspbiBpbiB0aGlzP3RoaXNbaSsrXT10aGlzW24rK106KGRlbGV0ZSB0aGlzW2krK10sbisrKTtlbHNlIGZvcihzPU1hdGgubWluKHMsbytuLWkpLGkrPXMtbjtzPm47KS0tcyBpbiB0aGlzP3RoaXNbLS1pXT10aGlzW3NdOmRlbGV0ZSB0aGlzWy0taV07cmV0dXJuIHRoaXN9fSwiZXM2IiwiZXMzIik7aGUudHlwZWRBcnJheUNvcHlXaXRoaW49ZnVuY3Rpb24odCl7cmV0dXJuIHR8fEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGlufTtoZS5wb2x5ZmlsbCgiSW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixoZS50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7aGUucG9seWZpbGwoIlVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGhlLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtoZS5wb2x5ZmlsbCgiVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGhlLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtoZS5wb2x5ZmlsbCgiSW50MTZBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsaGUudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2hlLnBvbHlmaWxsKCJVaW50MTZBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsaGUudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2hlLnBvbHlmaWxsKCJJbnQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixoZS50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7aGUucG9seWZpbGwoIlVpbnQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixoZS50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7aGUucG9seWZpbGwoIkZsb2F0MzJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsaGUudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2hlLnBvbHlmaWxsKCJGbG9hdDY0QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGhlLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTt2YXIgcUc9ZnVuY3Rpb24oKXt2YXIgdD10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0P2RvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjOnZvaWQgMDtyZXR1cm4gdHlwZW9mIF9fZmlsZW5hbWU8InUiJiYodD10fHxfX2ZpbGVuYW1lKSxmdW5jdGlvbihlKXtmdW5jdGlvbiBpKHope3JldHVybiBCLmxvY2F0ZUZpbGU/Qi5sb2NhdGVGaWxlKHosV3QpOld0K3p9ZnVuY3Rpb24gbih6LGV0LHB0KXt2YXIgJHQ9ZXQrcHQ7Zm9yKHB0PWV0O3pbcHRdJiYhKHB0Pj0kdCk7KSsrcHQ7aWYoMTY8cHQtZXQmJnouYnVmZmVyJiZ6ZSlyZXR1cm4gemUuZGVjb2RlKHouc3ViYXJyYXkoZXQscHQpKTtmb3IoJHQ9IiI7ZXQ8cHQ7KXt2YXIgdmU9eltldCsrXTtpZih2ZSYxMjgpe3ZhciBoaT16W2V0KytdJjYzO2lmKCh2ZSYyMjQpPT0xOTIpJHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKHZlJjMxKTw8NnxoaSk7ZWxzZXt2YXIgX2E9eltldCsrXSY2Mzt2ZT0odmUmMjQwKT09MjI0Pyh2ZSYxNSk8PDEyfGhpPDw2fF9hOih2ZSY3KTw8MTh8aGk8PDEyfF9hPDw2fHpbZXQrK10mNjMsNjU1MzY+dmU/JHQrPVN0cmluZy5mcm9tQ2hhckNvZGUodmUpOih2ZS09NjU1MzYsJHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8dmU+PjEwLDU2MzIwfHZlJjEwMjMpKX19ZWxzZSAkdCs9U3RyaW5nLmZyb21DaGFyQ29kZSh2ZSl9cmV0dXJuICR0fWZ1bmN0aW9uIHMoeixldCl7cmV0dXJuIHo/bihVaSx6LGV0KToiIn1mdW5jdGlvbiBvKCl7dmFyIHo9YmUuYnVmZmVyO0IuSEVBUDg9R2U9bmV3IEludDhBcnJheSh6KSxCLkhFQVAxNj1uZXcgSW50MTZBcnJheSh6KSxCLkhFQVAzMj1SaT1uZXcgSW50MzJBcnJheSh6KSxCLkhFQVBVOD1VaT1uZXcgVWludDhBcnJheSh6KSxCLkhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KHopLEIuSEVBUFUzMj1zaT1uZXcgVWludDMyQXJyYXkoeiksQi5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoeiksQi5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoeil9ZnVuY3Rpb24gcih6KXt0aHJvdyBCLm9uQWJvcnQmJkIub25BYm9ydCh6KSx6PSJBYm9ydGVkKCIreisiKSIsVWUoeiksbmk9ITAsej1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKHorIi4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iKSxndCh6KSx6fWZ1bmN0aW9uIGEoeil7dHJ5e2lmKHo9PU5lJiZDZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoQ2UpO2lmKGplKXJldHVybiBqZSh6KTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCJ9Y2F0Y2goZXQpe3IoZXQpfX1mdW5jdGlvbiBoKCl7aWYoIUNlJiYoenR8fGt0KSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhTmUuc3RhcnRzV2l0aCgiZmlsZTovLyIpKXJldHVybiBmZXRjaChOZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oeil7aWYoIXoub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitOZSsiJyI7cmV0dXJuIHouYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGEoTmUpfSk7aWYoT2UpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHosZXQpe09lKE5lLGZ1bmN0aW9uKHB0KXt6KG5ldyBVaW50OEFycmF5KHB0KSl9LGV0KX0pfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGEoTmUpfSl9ZnVuY3Rpb24gQSh6KXtmb3IoOzA8ei5sZW5ndGg7KXouc2hpZnQoKShCKX1mdW5jdGlvbiBkKHope3RoaXMuZXhjUHRyPXosdGhpcy5wdHI9ei0yNCx0aGlzLnNldF90eXBlPWZ1bmN0aW9uKGV0KXtzaVt0aGlzLnB0cis0Pj4yXT1ldH0sdGhpcy5nZXRfdHlwZT1mdW5jdGlvbigpe3JldHVybiBzaVt0aGlzLnB0cis0Pj4yXX0sdGhpcy5zZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbihldCl7c2lbdGhpcy5wdHIrOD4+Ml09ZXR9LHRoaXMuZ2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gc2lbdGhpcy5wdHIrOD4+Ml19LHRoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKGV0KXtSaVt0aGlzLnB0cj4+Ml09ZXR9LHRoaXMuc2V0X2NhdWdodD1mdW5jdGlvbihldCl7R2VbdGhpcy5wdHIrMTI+PjBdPWV0PzE6MH0sdGhpcy5nZXRfY2F1Z2h0PWZ1bmN0aW9uKCl7cmV0dXJuIEdlW3RoaXMucHRyKzEyPj4wXSE9MH0sdGhpcy5zZXRfcmV0aHJvd249ZnVuY3Rpb24oZXQpe0dlW3RoaXMucHRyKzEzPj4wXT1ldD8xOjB9LHRoaXMuZ2V0X3JldGhyb3duPWZ1bmN0aW9uKCl7cmV0dXJuIEdlW3RoaXMucHRyKzEzPj4wXSE9MH0sdGhpcy5pbml0PWZ1bmN0aW9uKGV0LHB0KXt0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCksdGhpcy5zZXRfdHlwZShldCksdGhpcy5zZXRfZGVzdHJ1Y3RvcihwdCksdGhpcy5zZXRfcmVmY291bnQoMCksdGhpcy5zZXRfY2F1Z2h0KCExKSx0aGlzLnNldF9yZXRocm93bighMSl9LHRoaXMuYWRkX3JlZj1mdW5jdGlvbigpe1JpW3RoaXMucHRyPj4yXSs9MX0sdGhpcy5yZWxlYXNlX3JlZj1mdW5jdGlvbigpe3ZhciBldD1SaVt0aGlzLnB0cj4+Ml07cmV0dXJuIFJpW3RoaXMucHRyPj4yXT1ldC0xLGV0PT09MX0sdGhpcy5zZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKGV0KXtzaVt0aGlzLnB0cisxNj4+Ml09ZXR9LHRoaXMuZ2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbigpe3JldHVybiBzaVt0aGlzLnB0cisxNj4+Ml19LHRoaXMuZ2V0X2V4Y2VwdGlvbl9wdHI9ZnVuY3Rpb24oKXtpZihmbSh0aGlzLmdldF90eXBlKCkpKXJldHVybiBzaVt0aGlzLmV4Y1B0cj4+Ml07dmFyIGV0PXRoaXMuZ2V0X2FkanVzdGVkX3B0cigpO3JldHVybiBldCE9PTA/ZXQ6dGhpcy5leGNQdHJ9fWZ1bmN0aW9uIGYoKXtmdW5jdGlvbiB6KCl7aWYoIXJBJiYockE9ITAsQi5jYWxsZWRSdW49ITAsIW5pKSl7aWYoRGU9ITAsQShWaSksSXQoQiksQi5vblJ1bnRpbWVJbml0aWFsaXplZCYmQi5vblJ1bnRpbWVJbml0aWFsaXplZCgpLEIucG9zdFJ1bilmb3IodHlwZW9mIEIucG9zdFJ1bj09ImZ1bmN0aW9uIiYmKEIucG9zdFJ1bj1bQi5wb3N0UnVuXSk7Qi5wb3N0UnVuLmxlbmd0aDspZ24udW5zaGlmdChCLnBvc3RSdW4uc2hpZnQoKSk7QShnbil9fWlmKCEoMDxZZSkpe2lmKEIucHJlUnVuKWZvcih0eXBlb2YgQi5wcmVSdW49PSJmdW5jdGlvbiImJihCLnByZVJ1bj1bQi5wcmVSdW5dKTtCLnByZVJ1bi5sZW5ndGg7KXFlLnVuc2hpZnQoQi5wcmVSdW4uc2hpZnQoKSk7QShxZSksMDxZZXx8KEIuc2V0U3RhdHVzPyhCLnNldFN0YXR1cygiUnVubmluZy4uLiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qi5zZXRTdGF0dXMoIiIpfSwxKSx6KCl9LDEpKTp6KCkpfX1mdW5jdGlvbiBFKCl7fWZ1bmN0aW9uIF8oeil7cmV0dXJuKHp8fEUpLl9fY2FjaGVfX31mdW5jdGlvbiBSKHosZXQpe3ZhciBwdD1fKGV0KSwkdD1wdFt6XTtyZXR1cm4gJHR8fCgkdD1PYmplY3QuY3JlYXRlKChldHx8RSkucHJvdG90eXBlKSwkdC5wdHI9eixwdFt6XT0kdCl9ZnVuY3Rpb24gSSh6KXtpZih0eXBlb2Ygej09InN0cmluZyIpe2Zvcih2YXIgZXQ9MCxwdD0wO3B0PHoubGVuZ3RoOysrcHQpe3ZhciAkdD16LmNoYXJDb2RlQXQocHQpOzEyNz49JHQ/ZXQrKzoyMDQ3Pj0kdD9ldCs9Mjo1NTI5Njw9JHQmJjU3MzQzPj0kdD8oZXQrPTQsKytwdCk6ZXQrPTN9aWYoZXQ9QXJyYXkoZXQrMSkscHQ9MCwkdD1ldC5sZW5ndGgsMDwkdCl7JHQ9cHQrJHQtMTtmb3IodmFyIHZlPTA7dmU8ei5sZW5ndGg7Kyt2ZSl7dmFyIGhpPXouY2hhckNvZGVBdCh2ZSk7aWYoNTUyOTY8PWhpJiY1NzM0Mz49aGkpe3ZhciBfYT16LmNoYXJDb2RlQXQoKyt2ZSk7aGk9NjU1MzYrKChoaSYxMDIzKTw8MTApfF9hJjEwMjN9aWYoMTI3Pj1oaSl7aWYocHQ+PSR0KWJyZWFrO2V0W3B0KytdPWhpfWVsc2V7aWYoMjA0Nz49aGkpe2lmKHB0KzE+PSR0KWJyZWFrO2V0W3B0KytdPTE5MnxoaT4+Nn1lbHNle2lmKDY1NTM1Pj1oaSl7aWYocHQrMj49JHQpYnJlYWs7ZXRbcHQrK109MjI0fGhpPj4xMn1lbHNle2lmKHB0KzM+PSR0KWJyZWFrO2V0W3B0KytdPTI0MHxoaT4+MTgsZXRbcHQrK109MTI4fGhpPj4xMiY2M31ldFtwdCsrXT0xMjh8aGk+PjYmNjN9ZXRbcHQrK109MTI4fGhpJjYzfX1ldFtwdF09MH1yZXR1cm4gej1maS5hbGxvYyhldCxHZSksZmkuY29weShldCxHZSx6KSx6fXJldHVybiB6fWZ1bmN0aW9uIEMoeil7aWYodHlwZW9mIHo9PSJvYmplY3QiKXt2YXIgZXQ9ZmkuYWxsb2MoeixHZSk7cmV0dXJuIGZpLmNvcHkoeixHZSxldCksZXR9cmV0dXJuIHp9ZnVuY3Rpb24gTigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBWb2lkUHRyLCBubyBjb25zdHJ1Y3RvciBpbiBJREwifWZ1bmN0aW9uIFQoKXt0aGlzLnB0cj1ubigpLF8oVClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gRigpe3RoaXMucHRyPUNzKCksXyhGKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBiKCl7dGhpcy5wdHI9UG4oKSxfKGIpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEcoKXt0aGlzLnB0cj1DaSgpLF8oRylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTSgpe3RoaXMucHRyPUZyKCksXyhNKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBRKCl7dGhpcy5wdHI9Z3MoKSxfKFEpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFUoKXt0aGlzLnB0cj1VaCgpLF8oVSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gaygpe3RoaXMucHRyPVZvKCksXyhrKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB5KCl7dGhpcy5wdHI9a2goKSxfKHkpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIGMoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgU3RhdHVzLCBubyBjb25zdHJ1Y3RvciBpbiBJREwifWZ1bmN0aW9uIGcoKXt0aGlzLnB0cj1YYSgpLF8oZylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gVigpe3RoaXMucHRyPWtBKCksXyhWKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBEKCl7dGhpcy5wdHI9JGMoKSxfKEQpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHcoKXt0aGlzLnB0cj13aCgpLF8odylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geCgpe3RoaXMucHRyPWVsKCksXyh4KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBIKCl7dGhpcy5wdHI9V2QoKSxfKEgpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIGooKXt0aGlzLnB0cj1lQSgpLF8oailbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gWCgpe3RoaXMucHRyPUhvKCksXyhYKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB0dCgpe3RoaXMucHRyPWpoKCksXyh0dClbdGhpcy5wdHJdPXRoaXN9ZT1lPT09dm9pZCAwP3t9OmU7dmFyIEI9dHlwZW9mIGU8InUiP2U6e30sSXQsZ3Q7Qi5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbih6LGV0KXtJdD16LGd0PWV0fSk7dmFyIFl0PSExLE10PSExO0Iub25SdW50aW1lSW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXtZdD0hMCxNdCYmdHlwZW9mIEIub25Nb2R1bGVMb2FkZWQ9PSJmdW5jdGlvbiImJkIub25Nb2R1bGVMb2FkZWQoQil9LEIub25Nb2R1bGVQYXJzZWQ9ZnVuY3Rpb24oKXtNdD0hMCxZdCYmdHlwZW9mIEIub25Nb2R1bGVMb2FkZWQ9PSJmdW5jdGlvbiImJkIub25Nb2R1bGVMb2FkZWQoQil9LEIuaXNWZXJzaW9uU3VwcG9ydGVkPWZ1bmN0aW9uKHope3JldHVybiB0eXBlb2YgeiE9InN0cmluZyI/ITE6KHo9ei5zcGxpdCgiLiIpLDI+ei5sZW5ndGh8fDM8ei5sZW5ndGg/ITE6elswXT09MSYmMDw9elsxXSYmNT49elsxXT8hMDohKHpbMF0hPTB8fDEwPHpbMV0pKX07dmFyIEN0PU9iamVjdC5hc3NpZ24oe30sQiksenQ9dHlwZW9mIHdpbmRvdz09Im9iamVjdCIsa3Q9dHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIsSnQ9dHlwZW9mIHByb2Nlc3M9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PSJzdHJpbmciLFd0PSIiO2lmKEp0KXt2YXIgRnQ9WG8oImZzIiksZWU9WG8oInBhdGgiKTtXdD1rdD9lZS5kaXJuYW1lKFd0KSsiLyI6X19kaXJuYW1lKyIvIjt2YXIgY2U9ZnVuY3Rpb24oeixldCl7cmV0dXJuIHo9ei5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTCh6KTplZS5ub3JtYWxpemUoeiksRnQucmVhZEZpbGVTeW5jKHosZXQ/dm9pZCAwOiJ1dGY4Iil9LGplPWZ1bmN0aW9uKHope3JldHVybiB6PWNlKHosITApLHouYnVmZmVyfHwoej1uZXcgVWludDhBcnJheSh6KSksen0sT2U9ZnVuY3Rpb24oeixldCxwdCl7ej16LnN0YXJ0c1dpdGgoImZpbGU6Ly8iKT9uZXcgVVJMKHopOmVlLm5vcm1hbGl6ZSh6KSxGdC5yZWFkRmlsZSh6LGZ1bmN0aW9uKCR0LHZlKXskdD9wdCgkdCk6ZXQodmUuYnVmZmVyKX0pfTsxPHByb2Nlc3MuYXJndi5sZW5ndGgmJnByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikscHJvY2Vzcy5hcmd2LnNsaWNlKDIpLEIuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9fWVsc2UoenR8fGt0KSYmKGt0P1d0PXNlbGYubG9jYXRpb24uaHJlZjp0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoV3Q9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHQmJihXdD10KSxXdD1XdC5pbmRleE9mKCJibG9iOiIpIT09MD9XdC5zdWJzdHIoMCxXdC5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLGNlPWZ1bmN0aW9uKHope3ZhciBldD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIGV0Lm9wZW4oIkdFVCIseiwhMSksZXQuc2VuZChudWxsKSxldC5yZXNwb25zZVRleHR9LGt0JiYoamU9ZnVuY3Rpb24oeil7dmFyIGV0PW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gZXQub3BlbigiR0VUIix6LCExKSxldC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixldC5zZW5kKG51bGwpLG5ldyBVaW50OEFycmF5KGV0LnJlc3BvbnNlKX0pLE9lPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD1uZXcgWE1MSHR0cFJlcXVlc3Q7JHQub3BlbigiR0VUIix6LCEwKSwkdC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIiwkdC5vbmxvYWQ9ZnVuY3Rpb24oKXskdC5zdGF0dXM9PTIwMHx8JHQuc3RhdHVzPT0wJiYkdC5yZXNwb25zZT9ldCgkdC5yZXNwb25zZSk6cHQoKX0sJHQub25lcnJvcj1wdCwkdC5zZW5kKG51bGwpfSk7dmFyIE1lPUIucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksVWU9Qi5wcmludEVycnx8Y29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihCLEN0KSxDdD1udWxsO3ZhciBDZTtCLndhc21CaW5hcnkmJihDZT1CLndhc21CaW5hcnkpLHR5cGVvZiBXZWJBc3NlbWJseSE9Im9iamVjdCImJnIoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgYmUsbmk9ITEsemU9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDAsR2UsVWksUmksc2kscWU9W10sVmk9W10sZ249W10sRGU9ITEsWWU9MCxCaT1udWxsLEFuPW51bGwsTmU9ImRyYWNvX2RlY29kZXIud2FzbSI7TmUuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfHwoTmU9aShOZSkpO3ZhciBlaT0wLF9uPVtudWxsLFtdLFtdXSxocz17YjpmdW5jdGlvbih6LGV0LHB0KXt0aHJvdyBuZXcgZCh6KS5pbml0KGV0LHB0KSxlaSsrLHp9LGE6ZnVuY3Rpb24oKXtyKCIiKX0sZzpmdW5jdGlvbih6LGV0LHB0KXtVaS5jb3B5V2l0aGluKHosZXQsZXQrcHQpfSxlOmZ1bmN0aW9uKHope3ZhciBldD1VaS5sZW5ndGg7aWYoej4+Pj0wLDIxNDc0ODM2NDg8eilyZXR1cm4hMTtmb3IodmFyIHB0PTE7ND49cHQ7cHQqPTIpe3ZhciAkdD1ldCooMSsuMi9wdCk7JHQ9TWF0aC5taW4oJHQseisxMDA2NjMyOTYpO3ZhciB2ZT1NYXRoOyR0PU1hdGgubWF4KHosJHQpLHZlPXZlLm1pbi5jYWxsKHZlLDIxNDc0ODM2NDgsJHQrKDY1NTM2LSR0JTY1NTM2KSU2NTUzNik7dDp7JHQ9YmUuYnVmZmVyO3RyeXtiZS5ncm93KHZlLSR0LmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNiksbygpO3ZhciBoaT0xO2JyZWFrIHR9Y2F0Y2h7fWhpPXZvaWQgMH1pZihoaSlyZXR1cm4hMH1yZXR1cm4hMX0sZjpmdW5jdGlvbih6KXtyZXR1cm4gNTJ9LGQ6ZnVuY3Rpb24oeixldCxwdCwkdCx2ZSl7cmV0dXJuIDcwfSxjOmZ1bmN0aW9uKHosZXQscHQsJHQpe2Zvcih2YXIgdmU9MCxoaT0wO2hpPHB0O2hpKyspe3ZhciBfYT1zaVtldD4+Ml0sdGM9c2lbZXQrND4+Ml07ZXQrPTg7Zm9yKHZhciBKPTA7Sjx0YztKKyspe3ZhciB2PVVpW19hK0pdLHN0PV9uW3pdO3Y9PT0wfHx2PT09MTA/KCh6PT09MT9NZTpVZSkobihzdCwwKSksc3QubGVuZ3RoPTApOnN0LnB1c2godil9dmUrPXRjfXJldHVybiBzaVskdD4+Ml09dmUsMH19OyhmdW5jdGlvbigpe2Z1bmN0aW9uIHoodmUsaGkpe0IuYXNtPXZlLmV4cG9ydHMsYmU9Qi5hc20uaCxvKCksVmkudW5zaGlmdChCLmFzbS5pKSxZZS0tLEIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmQi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKFllKSxZZT09MCYmKEJpIT09bnVsbCYmKGNsZWFySW50ZXJ2YWwoQmkpLEJpPW51bGwpLEFuJiYodmU9QW4sQW49bnVsbCx2ZSgpKSl9ZnVuY3Rpb24gZXQodmUpe3oodmUuaW5zdGFuY2UpfWZ1bmN0aW9uIHB0KHZlKXtyZXR1cm4gaCgpLnRoZW4oZnVuY3Rpb24oaGkpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShoaSwkdCl9KS50aGVuKGZ1bmN0aW9uKGhpKXtyZXR1cm4gaGl9KS50aGVuKHZlLGZ1bmN0aW9uKGhpKXtVZSgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIitoaSkscihoaSl9KX12YXIgJHQ9e2E6aHN9O2lmKFllKyssQi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZCLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoWWUpLEIuaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gQi5pbnN0YW50aWF0ZVdhc20oJHQseil9Y2F0Y2godmUpe1VlKCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAiK3ZlKSxndCh2ZSl9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIENlfHx0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmchPSJmdW5jdGlvbiJ8fE5lLnN0YXJ0c1dpdGgoImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiKXx8TmUuc3RhcnRzV2l0aCgiZmlsZTovLyIpfHxKdHx8dHlwZW9mIGZldGNoIT0iZnVuY3Rpb24iP3B0KGV0KTpmZXRjaChOZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24odmUpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyh2ZSwkdCkudGhlbihldCxmdW5jdGlvbihoaSl7cmV0dXJuIFVlKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIitoaSksVWUoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIikscHQoZXQpfSl9KX0oKS5jYXRjaChndCkse319KSgpO3ZhciBRaT1CLl9lbXNjcmlwdGVuX2JpbmRfVm9pZFB0cl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFFpPUIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9Qi5hc20uaykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxubj1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9ZnVuY3Rpb24oKXtyZXR1cm4obm49Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfRGVjb2RlckJ1ZmZlcl8wPUIuYXNtLmwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2k9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGtpPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX0luaXRfMj1CLmFzbS5tKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNuPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oc249Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1CLmFzbS5uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENzPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1mdW5jdGlvbigpe3JldHVybihDcz1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9Qi5hc20ubykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjcz1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV90cmFuc2Zvcm1fdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGNzPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9Qi5hc20ucCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4bj1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHhuPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX19fZGVzdHJveV9fXzA9Qi5hc20ucSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQbj1CLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfR2VvbWV0cnlBdHRyaWJ1dGVfMD1mdW5jdGlvbigpe3JldHVybihQbj1CLl9lbXNjcmlwdGVuX2JpbmRfR2VvbWV0cnlBdHRyaWJ1dGVfR2VvbWV0cnlBdHRyaWJ1dGVfMD1CLmFzbS5yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFpPUIuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEFpPUIuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9fX2Rlc3Ryb3lfX18wPUIuYXNtLnMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2k9Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX1BvaW50QXR0cmlidXRlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQ2k9Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX1BvaW50QXR0cmlidXRlXzA9Qi5hc20udCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKbj1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEpuPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9zaXplXzA9Qi5hc20udSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxscz1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGxzPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9Qi5hc20udikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhbz1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYXR0cmlidXRlX3R5cGVfMD1mdW5jdGlvbigpe3JldHVybihhbz1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYXR0cmlidXRlX3R5cGVfMD1CLmFzbS53KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFpPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1mdW5jdGlvbigpe3JldHVybihxaT1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfZGF0YV90eXBlXzA9Qi5hc20ueCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxobj1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbnVtX2NvbXBvbmVudHNfMD1mdW5jdGlvbigpe3JldHVybihobj1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbnVtX2NvbXBvbmVudHNfMD1CLmFzbS55KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpvPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ub3JtYWxpemVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oam89Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1CLmFzbS56KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRzPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRzPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9ieXRlX3N0cmlkZV8wPUIuYXNtLkEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb249Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfb2Zmc2V0XzA9ZnVuY3Rpb24oKXtyZXR1cm4ob249Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfb2Zmc2V0XzA9Qi5hc20uQikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3cz1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfdW5pcXVlX2lkXzA9ZnVuY3Rpb24oKXtyZXR1cm4od3M9Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3VuaXF1ZV9pZF8wPUIuYXNtLkMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU289Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oU289Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX19fZGVzdHJveV9fXzA9Qi5hc20uRCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGcj1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZyPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtXzA9Qi5hc20uRSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPbz1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oT289Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPUIuYXNtLkYpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGU9Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPWZ1bmN0aW9uKCl7cmV0dXJuKCRlPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1CLmFzbS5HKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGFhPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fbWluX3ZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oYWE9Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1CLmFzbS5IKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlyPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1mdW5jdGlvbigpe3JldHVybihZcj1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3JhbmdlXzA9Qi5hc20uSSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4cz1CLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeHM9Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPUIuYXNtLkopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ3M9Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGdzPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fMD1CLmFzbS5LKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRuPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVG49Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1CLmFzbS5MKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhyPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaHI9Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1CLmFzbS5NKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1oPUIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTWg9Qi5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1CLmFzbS5OKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFVoPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1mdW5jdGlvbigpe3JldHVybihVaD1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9Qb2ludENsb3VkXzA9Qi5hc20uTykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWbj1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fYXR0cmlidXRlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZuPUIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9Qi5hc20uUCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjcj1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oY3I9Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX3BvaW50c18wPUIuYXNtLlEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWk9Qi5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihJaT1CLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPUIuYXNtLlIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVm89Qi5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFZvPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX01lc2hfMD1CLmFzbS5TKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtjPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9mYWNlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKEtjPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9mYWNlc18wPUIuYXNtLlQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWGM9Qi5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2F0dHJpYnV0ZXNfMD1mdW5jdGlvbigpe3JldHVybihYYz1CLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fYXR0cmlidXRlc18wPUIuYXNtLlUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scWM9Qi5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX3BvaW50c18wPWZ1bmN0aW9uKCl7cmV0dXJuKHFjPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9wb2ludHNfMD1CLmFzbS5WKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFoPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWg9Qi5fZW1zY3JpcHRlbl9iaW5kX01lc2hfX19kZXN0cm95X19fMD1CLmFzbS5XKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtoPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YV9NZXRhZGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGtoPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YV9NZXRhZGF0YV8wPUIuYXNtLlgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWE9Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWE9Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX19fZGVzdHJveV9fXzA9Qi5hc20uWSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMaD1CLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX2NvZGVfMD1mdW5jdGlvbigpe3JldHVybihMaD1CLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX2NvZGVfMD1CLmFzbS5aKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhhPUIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfb2tfMD1mdW5jdGlvbigpe3JldHVybihoYT1CLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX29rXzA9Qi5hc20uXykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLYT1CLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX2Vycm9yX21zZ18wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPUIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9Qi5hc20uJCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxTZD1CLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oU2Q9Qi5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19fX2Rlc3Ryb3lfX18wPUIuYXNtLmFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhhPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9EcmFjb0Zsb2F0MzJBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFhhPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9EcmFjb0Zsb2F0MzJBcnJheV8wPUIuYXNtLmJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9kPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9kPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9HZXRWYWx1ZV8xPUIuYXNtLmNhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFhPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocWE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X3NpemVfMD1CLmFzbS5kYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxscj1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihscj1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfX19kZXN0cm95X19fMD1CLmFzbS5lYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrQT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfRHJhY29JbnQ4QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihrQT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfRHJhY29JbnQ4QXJyYXlfMD1CLmFzbS5mYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybigkYT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfR2V0VmFsdWVfMT1CLmFzbS5nYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWZD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFZkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9zaXplXzA9Qi5hc20uaGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZHI9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZHI9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X19fZGVzdHJveV9fXzA9Qi5hc20uaWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGM9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9EcmFjb1VJbnQ4QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybigkYz1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPUIuYXNtLmphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRsPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybih0bD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0dldFZhbHVlXzE9Qi5hc20ua2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeWg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9zaXplXzA9Qi5hc20ubGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbXI9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKG1yPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfX19kZXN0cm95X19fMD1CLmFzbS5tYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3aD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0RyYWNvSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHdoPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfRHJhY29JbnQxNkFycmF5XzA9Qi5hc20ubmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR2Q9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKEdkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfR2V0VmFsdWVfMT1CLmFzbS5vYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4aD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybih4aD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X3NpemVfMD1CLmFzbS5wYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQaD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPUIuYXNtLnFhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVsPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0RyYWNvVUludDE2QXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihlbD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9EcmFjb1VJbnQxNkFycmF5XzA9Qi5hc20ucmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWw9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihpbD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPUIuYXNtLnNhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihCZD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9zaXplXzA9Qi5hc20udGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdEE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih0QT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPUIuYXNtLnVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfRHJhY29JbnQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oV2Q9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1CLmFzbS52YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEZD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oRGQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9HZXRWYWx1ZV8xPUIuYXNtLndhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1kPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1kPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfc2l6ZV8wPUIuYXNtLnhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExBPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihMQT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X19fZGVzdHJveV9fXzA9Qi5hc20ueWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZUE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfRHJhY29VSW50MzJBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGVBPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0RyYWNvVUludDMyQXJyYXlfMD1CLmFzbS56YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVZD1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0dldFZhbHVlXzE9Qi5hc20uQWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFFkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X3NpemVfMD1CLmFzbS5CYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5QT1CLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHlBPUIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X19fZGVzdHJveV9fXzA9Qi5hc20uQ2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSG89Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9NZXRhZGF0YVF1ZXJpZXJfMD1mdW5jdGlvbigpe3JldHVybihIbz1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPUIuYXNtLkRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5sPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihubD1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0hhc0VudHJ5XzI9Qi5hc20uRWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdm89Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHZvPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlfMj1CLmFzbS5GYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpQT1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihpQT1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5QXJyYXlfMz1CLmFzbS5HYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKaD1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldERvdWJsZUVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4oSmg9Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXREb3VibGVFbnRyeV8yPUIuYXNtLkhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtkPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0U3RyaW5nRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihrZD1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldFN0cmluZ0VudHJ5XzI9Qi5hc20uSWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGQ9Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9OdW1FbnRyaWVzXzE9ZnVuY3Rpb24oKXtyZXR1cm4oTGQ9Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9OdW1FbnRyaWVzXzE9Qi5hc20uSmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sam49Qi5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRFbnRyeU5hbWVfMj1mdW5jdGlvbigpe3JldHVybihqbj1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEVudHJ5TmFtZV8yPUIuYXNtLkthKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNsPUIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihzbD1CLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX19fZGVzdHJveV9fXzA9Qi5hc20uTGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGpoPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZXJfMD1CLmFzbS5NYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuQT1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvUG9pbnRDbG91ZF8zPWZ1bmN0aW9uKCl7cmV0dXJuKG5BPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9Qi5hc20uTmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2E9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb01lc2hfMz1mdW5jdGlvbigpe3JldHVybihjYT1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPUIuYXNtLk9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhoPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkXzI9ZnVuY3Rpb24oKXtyZXR1cm4oSGg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1CLmFzbS5QYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2aD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHZoPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9Qi5hc20uUWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd0E9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnlfMz1mdW5jdGlvbigpe3JldHVybih3QT1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeV8zPUIuYXNtLlJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9sPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKG9sPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZV8yPUIuYXNtLlNhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpoPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUJ5VW5pcXVlSWRfMj1mdW5jdGlvbigpe3JldHVybih6aD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkXzI9Qi5hc20uVGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0TWV0YWRhdGFfMT1mdW5jdGlvbigpe3JldHVybih5ZD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRNZXRhZGF0YV8xPUIuYXNtLlVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtoPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZU1ldGFkYXRhXzI9ZnVuY3Rpb24oKXtyZXR1cm4oS2g9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlTWV0YWRhdGFfMj1CLmFzbS5WYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxTcz1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRGYWNlRnJvbU1lc2hfMz1mdW5jdGlvbigpe3JldHVybihTcz1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRGYWNlRnJvbU1lc2hfMz1CLmFzbS5XYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYaD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoXzI9ZnVuY3Rpb24oKXtyZXR1cm4oWGg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaF8yPUIuYXNtLlhhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQxNkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4od2Q9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1CLmFzbS5ZYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxybD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MzJBcnJheV8zPWZ1bmN0aW9uKCl7cmV0dXJuKHJsPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9Qi5hc20uWmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQW89Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRfMz1mdW5jdGlvbigpe3JldHVybihBbz1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdF8zPUIuYXNtLl9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhvPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oaG89Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHNfMz1CLmFzbS4kYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4ZD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybih4ZD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHNfMz1CLmFzbS5hYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQZD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oUGQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50c18zPUIuYXNtLmJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdvPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oR289Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHNfMz1CLmFzbS5jYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4QT1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKHhBPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzXzM9Qi5hc20uZGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4obGE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzXzM9Qi5hc20uZWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihkYT1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPUIuYXNtLmZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKEpkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50c18zPUIuYXNtLmdiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PWZ1bmN0aW9uKCl7cmV0dXJuKGpkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50c181PUIuYXNtLmhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhkPUIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX1NraXBBdHRyaWJ1dGVUcmFuc2Zvcm1fMT1mdW5jdGlvbigpe3JldHVybihIZD1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9Ta2lwQXR0cmlidXRlVHJhbnNmb3JtXzE9Qi5hc20uaWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkXzE9ZnVuY3Rpb24oKXtyZXR1cm4odmQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkXzE9Qi5hc20uamIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQnVmZmVyVG9Qb2ludENsb3VkXzI9ZnVuY3Rpb24oKXtyZXR1cm4oemQ9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQnVmZmVyVG9Qb2ludENsb3VkXzI9Qi5hc20ua2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scWg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQnVmZmVyVG9NZXNoXzI9ZnVuY3Rpb24oKXtyZXR1cm4ocWg9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQnVmZmVyVG9NZXNoXzI9Qi5hc20ubGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUEE9Qi5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihQQT1CLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9fX2Rlc3Ryb3lfX18wPUIuYXNtLm1iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1hPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihtYT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfSU5WQUxJRF9UUkFOU0ZPUk09Qi5hc20ubmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWw9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX05PX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihhbD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPUIuYXNtLm9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZhPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKGZhPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPUIuYXNtLnBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEVhPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1mdW5jdGlvbigpe3JldHVybihFYT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09Qi5hc20ucWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc0E9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfSU5WQUxJRD1mdW5jdGlvbigpe3JldHVybihzQT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9JTlZBTElEPUIuYXNtLnJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFsPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1BPU0lUSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKEFsPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1BPU0lUSU9OPUIuYXNtLnNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtkPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX05PUk1BTD1mdW5jdGlvbigpe3JldHVybihLZD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9OT1JNQUw9Qi5hc20udGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSkE9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfQ09MT1I9ZnVuY3Rpb24oKXtyZXR1cm4oSkE9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfQ09MT1I9Qi5hc20udWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGg9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfVEVYX0NPT1JEPWZ1bmN0aW9uKCl7cmV0dXJuKCRoPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX1RFWF9DT09SRD1CLmFzbS52YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYZD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9HRU5FUklDPWZ1bmN0aW9uKCl7cmV0dXJuKFhkPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9Qi5hc20ud2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGw9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPWZ1bmN0aW9uKCl7cmV0dXJuKGhsPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX0lOVkFMSURfR0VPTUVUUllfVFlQRT1CLmFzbS54YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxZD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9QT0lOVF9DTE9VRD1mdW5jdGlvbigpe3JldHVybihxZD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9QT0lOVF9DTE9VRD1CLmFzbS55YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkZD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9ZnVuY3Rpb24oKXtyZXR1cm4oJGQ9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfVFJJQU5HVUxBUl9NRVNIPUIuYXNtLnpiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlZBTElEPWZ1bmN0aW9uKCl7cmV0dXJuKHRtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlZBTElEPUIuYXNtLkFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ4PWZ1bmN0aW9uKCl7cmV0dXJuKGVtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ4PUIuYXNtLkJiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGltPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UOD1mdW5jdGlvbigpe3JldHVybihpbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDg9Qi5hc20uQ2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbm09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDE2PWZ1bmN0aW9uKCl7cmV0dXJuKG5tPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQxNj1CLmFzbS5EYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDE2PWZ1bmN0aW9uKCl7cmV0dXJuKHNtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMTY9Qi5hc20uRWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb209Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDMyPWZ1bmN0aW9uKCl7cmV0dXJuKG9tPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQzMj1CLmFzbS5GYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjbD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDMyPWZ1bmN0aW9uKCl7cmV0dXJuKGNsPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9Qi5hc20uR2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scm09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKHJtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9JTlQ2ND1CLmFzbS5IYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVUlOVDY0PWZ1bmN0aW9uKCl7cmV0dXJuKGFtPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9Qi5hc20uSWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQW09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9ZnVuY3Rpb24oKXtyZXR1cm4oQW09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUMzI9Qi5hc20uSmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGw9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUNjQ9ZnVuY3Rpb24oKXtyZXR1cm4obGw9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0ZMT0FUNjQ9Qi5hc20uS2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0JPT0w9ZnVuY3Rpb24oKXtyZXR1cm4oaG09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0JPT0w9Qi5hc20uTGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb0E9Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1RZUEVTX0NPVU5UPWZ1bmN0aW9uKCl7cmV0dXJuKG9BPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9UWVBFU19DT1VOVD1CLmFzbS5NYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9PSz1mdW5jdGlvbigpe3JldHVybihjbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9PSz1CLmFzbS5OYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqQT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9EUkFDT19FUlJPUj1mdW5jdGlvbigpe3JldHVybihqQT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9EUkFDT19FUlJPUj1CLmFzbS5PYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9JT19FUlJPUj1mdW5jdGlvbigpe3JldHVybihsbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9JT19FUlJPUj1CLmFzbS5QYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9JTlZBTElEX1BBUkFNRVRFUj1mdW5jdGlvbigpe3JldHVybihkbT1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9JTlZBTElEX1BBUkFNRVRFUj1CLmFzbS5RYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkbD1CLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTlNVUFBPUlRFRF9WRVJTSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKGRsPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049Qi5hc20uUmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbW09Qi5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPWZ1bmN0aW9uKCl7cmV0dXJuKG1tPUIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOS05PV05fVkVSU0lPTj1CLmFzbS5TYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtCLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oQi5fbWFsbG9jPUIuYXNtLlRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEIuX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oQi5fZnJlZT1CLmFzbS5VYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgZm09ZnVuY3Rpb24oKXtyZXR1cm4oZm09Qi5hc20uVmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Qi5fX19zdGFydF9lbV9qcz0xNTg1NixCLl9fX3N0b3BfZW1fanM9MTU5NTQ7dmFyIHJBO2lmKEFuPWZ1bmN0aW9uIHooKXtyQXx8ZigpLHJBfHwoQW49eil9LEIucHJlSW5pdClmb3IodHlwZW9mIEIucHJlSW5pdD09ImZ1bmN0aW9uIiYmKEIucHJlSW5pdD1bQi5wcmVJbml0XSk7MDxCLnByZUluaXQubGVuZ3RoOylCLnByZUluaXQucG9wKCkoKTtmKCksRS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksRS5wcm90b3R5cGUuY29uc3RydWN0b3I9RSxFLnByb3RvdHlwZS5fX2NsYXNzX189RSxFLl9fY2FjaGVfXz17fSxCLldyYXBwZXJPYmplY3Q9RSxCLmdldENhY2hlPV8sQi53cmFwUG9pbnRlcj1SLEIuY2FzdE9iamVjdD1mdW5jdGlvbih6LGV0KXtyZXR1cm4gUih6LnB0cixldCl9LEIuTlVMTD1SKDApLEIuZGVzdHJveT1mdW5jdGlvbih6KXtpZighei5fX2Rlc3Ryb3lfXyl0aHJvdyJFcnJvcjogQ2Fubm90IGRlc3Ryb3kgb2JqZWN0LiAoRGlkIHlvdSBjcmVhdGUgaXQgeW91cnNlbGY/KSI7ei5fX2Rlc3Ryb3lfXygpLGRlbGV0ZSBfKHouX19jbGFzc19fKVt6LnB0cl19LEIuY29tcGFyZT1mdW5jdGlvbih6LGV0KXtyZXR1cm4gei5wdHI9PT1ldC5wdHJ9LEIuZ2V0UG9pbnRlcj1mdW5jdGlvbih6KXtyZXR1cm4gei5wdHJ9LEIuZ2V0Q2xhc3M9ZnVuY3Rpb24oeil7cmV0dXJuIHouX19jbGFzc19ffTt2YXIgZmk9e2J1ZmZlcjowLHNpemU6MCxwb3M6MCx0ZW1wczpbXSxuZWVkZWQ6MCxwcmVwYXJlOmZ1bmN0aW9uKCl7aWYoZmkubmVlZGVkKXtmb3IodmFyIHo9MDt6PGZpLnRlbXBzLmxlbmd0aDt6KyspQi5fZnJlZShmaS50ZW1wc1t6XSk7ZmkudGVtcHMubGVuZ3RoPTAsQi5fZnJlZShmaS5idWZmZXIpLGZpLmJ1ZmZlcj0wLGZpLnNpemUrPWZpLm5lZWRlZCxmaS5uZWVkZWQ9MH1maS5idWZmZXJ8fChmaS5zaXplKz0xMjgsZmkuYnVmZmVyPUIuX21hbGxvYyhmaS5zaXplKSxmaS5idWZmZXJ8fHIodm9pZCAwKSksZmkucG9zPTB9LGFsbG9jOmZ1bmN0aW9uKHosZXQpe3JldHVybiBmaS5idWZmZXJ8fHIodm9pZCAwKSx6PXoubGVuZ3RoKmV0LkJZVEVTX1BFUl9FTEVNRU5ULHo9eis3Ji04LGZpLnBvcyt6Pj1maS5zaXplPygwPHp8fHIodm9pZCAwKSxmaS5uZWVkZWQrPXosZXQ9Qi5fbWFsbG9jKHopLGZpLnRlbXBzLnB1c2goZXQpKTooZXQ9ZmkuYnVmZmVyK2ZpLnBvcyxmaS5wb3MrPXopLGV0fSxjb3B5OmZ1bmN0aW9uKHosZXQscHQpe3N3aXRjaChwdD4+Pj0wLGV0LkJZVEVTX1BFUl9FTEVNRU5UKXtjYXNlIDI6cHQ+Pj49MTticmVhaztjYXNlIDQ6cHQ+Pj49MjticmVhaztjYXNlIDg6cHQ+Pj49M31mb3IodmFyICR0PTA7JHQ8ei5sZW5ndGg7JHQrKylldFtwdCskdF09elskdF19fTtyZXR1cm4gTi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksTi5wcm90b3R5cGUuY29uc3RydWN0b3I9TixOLnByb3RvdHlwZS5fX2NsYXNzX189TixOLl9fY2FjaGVfXz17fSxCLlZvaWRQdHI9TixOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1OLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1FpKHRoaXMucHRyKX0sVC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksVC5wcm90b3R5cGUuY29uc3RydWN0b3I9VCxULnByb3RvdHlwZS5fX2NsYXNzX189VCxULl9fY2FjaGVfXz17fSxCLkRlY29kZXJCdWZmZXI9VCxULnByb3RvdHlwZS5Jbml0PVQucHJvdG90eXBlLkluaXQ9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO2ZpLnByZXBhcmUoKSx0eXBlb2Ygej09Im9iamVjdCImJih6PUMoeikpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxraShwdCx6LGV0KX0sVC5wcm90b3R5cGUuX19kZXN0cm95X189VC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtzbih0aGlzLnB0cil9LEYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLEYucHJvdG90eXBlLmNvbnN0cnVjdG9yPUYsRi5wcm90b3R5cGUuX19jbGFzc19fPUYsRi5fX2NhY2hlX189e30sQi5BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhPUYsRi5wcm90b3R5cGUudHJhbnNmb3JtX3R5cGU9Ri5wcm90b3R5cGUudHJhbnNmb3JtX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gY3ModGhpcy5wdHIpfSxGLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1GLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3huKHRoaXMucHRyKX0sYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksYi5wcm90b3R5cGUuY29uc3RydWN0b3I9YixiLnByb3RvdHlwZS5fX2NsYXNzX189YixiLl9fY2FjaGVfXz17fSxCLkdlb21ldHJ5QXR0cmlidXRlPWIsYi5wcm90b3R5cGUuX19kZXN0cm95X189Yi5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtBaSh0aGlzLnB0cil9LEcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLEcucHJvdG90eXBlLmNvbnN0cnVjdG9yPUcsRy5wcm90b3R5cGUuX19jbGFzc19fPUcsRy5fX2NhY2hlX189e30sQi5Qb2ludEF0dHJpYnV0ZT1HLEcucHJvdG90eXBlLnNpemU9Ry5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBKbih0aGlzLnB0cil9LEcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGE9Ry5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiBSKGxzKHRoaXMucHRyKSxGKX0sRy5wcm90b3R5cGUuYXR0cmlidXRlX3R5cGU9Ry5wcm90b3R5cGUuYXR0cmlidXRlX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gYW8odGhpcy5wdHIpfSxHLnByb3RvdHlwZS5kYXRhX3R5cGU9Ry5wcm90b3R5cGUuZGF0YV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHFpKHRoaXMucHRyKX0sRy5wcm90b3R5cGUubnVtX2NvbXBvbmVudHM9Ry5wcm90b3R5cGUubnVtX2NvbXBvbmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gaG4odGhpcy5wdHIpfSxHLnByb3RvdHlwZS5ub3JtYWxpemVkPUcucHJvdG90eXBlLm5vcm1hbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIWpvKHRoaXMucHRyKX0sRy5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9Ry5wcm90b3R5cGUuYnl0ZV9zdHJpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gZHModGhpcy5wdHIpfSxHLnByb3RvdHlwZS5ieXRlX29mZnNldD1HLnByb3RvdHlwZS5ieXRlX29mZnNldD1mdW5jdGlvbigpe3JldHVybiBvbih0aGlzLnB0cil9LEcucHJvdG90eXBlLnVuaXF1ZV9pZD1HLnByb3RvdHlwZS51bmlxdWVfaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gd3ModGhpcy5wdHIpfSxHLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1HLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1NvKHRoaXMucHRyKX0sTS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksTS5wcm90b3R5cGUuY29uc3RydWN0b3I9TSxNLnByb3RvdHlwZS5fX2NsYXNzX189TSxNLl9fY2FjaGVfXz17fSxCLkF0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybT1NLE0ucHJvdG90eXBlLkluaXRGcm9tQXR0cmlidXRlPU0ucHJvdG90eXBlLkluaXRGcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksISFPbyhldCx6KX0sTS5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9TS5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gJGUodGhpcy5wdHIpfSxNLnByb3RvdHlwZS5taW5fdmFsdWU9TS5wcm90b3R5cGUubWluX3ZhbHVlPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksYWEoZXQseil9LE0ucHJvdG90eXBlLnJhbmdlPU0ucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIFlyKHRoaXMucHRyKX0sTS5wcm90b3R5cGUuX19kZXN0cm95X189TS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXt4cyh0aGlzLnB0cil9LFEucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLFEucHJvdG90eXBlLmNvbnN0cnVjdG9yPVEsUS5wcm90b3R5cGUuX19jbGFzc19fPVEsUS5fX2NhY2hlX189e30sQi5BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtPVEsUS5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9US5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSwhIVRuKGV0LHopfSxRLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1RLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiBocih0aGlzLnB0cil9LFEucHJvdG90eXBlLl9fZGVzdHJveV9fPVEucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7TWgodGhpcy5wdHIpfSxVLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxVLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1VLFUucHJvdG90eXBlLl9fY2xhc3NfXz1VLFUuX19jYWNoZV9fPXt9LEIuUG9pbnRDbG91ZD1VLFUucHJvdG90eXBlLm51bV9hdHRyaWJ1dGVzPVUucHJvdG90eXBlLm51bV9hdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIFZuKHRoaXMucHRyKX0sVS5wcm90b3R5cGUubnVtX3BvaW50cz1VLnByb3RvdHlwZS5udW1fcG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIGNyKHRoaXMucHRyKX0sVS5wcm90b3R5cGUuX19kZXN0cm95X189VS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtJaSh0aGlzLnB0cil9LGsucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLGsucHJvdG90eXBlLmNvbnN0cnVjdG9yPWssay5wcm90b3R5cGUuX19jbGFzc19fPWssay5fX2NhY2hlX189e30sQi5NZXNoPWssay5wcm90b3R5cGUubnVtX2ZhY2VzPWsucHJvdG90eXBlLm51bV9mYWNlcz1mdW5jdGlvbigpe3JldHVybiBLYyh0aGlzLnB0cil9LGsucHJvdG90eXBlLm51bV9hdHRyaWJ1dGVzPWsucHJvdG90eXBlLm51bV9hdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIFhjKHRoaXMucHRyKX0say5wcm90b3R5cGUubnVtX3BvaW50cz1rLnByb3RvdHlwZS5udW1fcG9pbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHFjKHRoaXMucHRyKX0say5wcm90b3R5cGUuX19kZXN0cm95X189ay5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtRaCh0aGlzLnB0cil9LHkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHkucHJvdG90eXBlLmNvbnN0cnVjdG9yPXkseS5wcm90b3R5cGUuX19jbGFzc19fPXkseS5fX2NhY2hlX189e30sQi5NZXRhZGF0YT15LHkucHJvdG90eXBlLl9fZGVzdHJveV9fPXkucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7QWEodGhpcy5wdHIpfSxjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jLGMucHJvdG90eXBlLl9fY2xhc3NfXz1jLGMuX19jYWNoZV9fPXt9LEIuU3RhdHVzPWMsYy5wcm90b3R5cGUuY29kZT1jLnByb3RvdHlwZS5jb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIExoKHRoaXMucHRyKX0sYy5wcm90b3R5cGUub2s9Yy5wcm90b3R5cGUub2s9ZnVuY3Rpb24oKXtyZXR1cm4hIWhhKHRoaXMucHRyKX0sYy5wcm90b3R5cGUuZXJyb3JfbXNnPWMucHJvdG90eXBlLmVycm9yX21zZz1mdW5jdGlvbigpe3JldHVybiBzKEthKHRoaXMucHRyKSl9LGMucHJvdG90eXBlLl9fZGVzdHJveV9fPWMucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7U2QodGhpcy5wdHIpfSxnLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxnLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nLGcucHJvdG90eXBlLl9fY2xhc3NfXz1nLGcuX19jYWNoZV9fPXt9LEIuRHJhY29GbG9hdDMyQXJyYXk9ZyxnLnByb3RvdHlwZS5HZXRWYWx1ZT1nLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLE9kKGV0LHopfSxnLnByb3RvdHlwZS5zaXplPWcucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gcWEodGhpcy5wdHIpfSxnLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1nLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2xyKHRoaXMucHRyKX0sVi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksVi5wcm90b3R5cGUuY29uc3RydWN0b3I9VixWLnByb3RvdHlwZS5fX2NsYXNzX189VixWLl9fY2FjaGVfXz17fSxCLkRyYWNvSW50OEFycmF5PVYsVi5wcm90b3R5cGUuR2V0VmFsdWU9Vi5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSwkYShldCx6KX0sVi5wcm90b3R5cGUuc2l6ZT1WLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFZkKHRoaXMucHRyKX0sVi5wcm90b3R5cGUuX19kZXN0cm95X189Vi5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtkcih0aGlzLnB0cil9LEQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLEQucHJvdG90eXBlLmNvbnN0cnVjdG9yPUQsRC5wcm90b3R5cGUuX19jbGFzc19fPUQsRC5fX2NhY2hlX189e30sQi5EcmFjb1VJbnQ4QXJyYXk9RCxELnByb3RvdHlwZS5HZXRWYWx1ZT1ELnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLHRsKGV0LHopfSxELnByb3RvdHlwZS5zaXplPUQucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4geWgodGhpcy5wdHIpfSxELnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1ELnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe21yKHRoaXMucHRyKX0sdy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksdy5wcm90b3R5cGUuY29uc3RydWN0b3I9dyx3LnByb3RvdHlwZS5fX2NsYXNzX189dyx3Ll9fY2FjaGVfXz17fSxCLkRyYWNvSW50MTZBcnJheT13LHcucHJvdG90eXBlLkdldFZhbHVlPXcucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksR2QoZXQseil9LHcucHJvdG90eXBlLnNpemU9dy5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB4aCh0aGlzLnB0cil9LHcucHJvdG90eXBlLl9fZGVzdHJveV9fPXcucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7UGgodGhpcy5wdHIpfSx4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSx4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14LHgucHJvdG90eXBlLl9fY2xhc3NfXz14LHguX19jYWNoZV9fPXt9LEIuRHJhY29VSW50MTZBcnJheT14LHgucHJvdG90eXBlLkdldFZhbHVlPXgucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksaWwoZXQseil9LHgucHJvdG90eXBlLnNpemU9eC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBCZCh0aGlzLnB0cil9LHgucHJvdG90eXBlLl9fZGVzdHJveV9fPXgucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dEEodGhpcy5wdHIpfSxILnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ILEgucHJvdG90eXBlLl9fY2xhc3NfXz1ILEguX19jYWNoZV9fPXt9LEIuRHJhY29JbnQzMkFycmF5PUgsSC5wcm90b3R5cGUuR2V0VmFsdWU9SC5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxEZChldCx6KX0sSC5wcm90b3R5cGUuc2l6ZT1ILnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIE1kKHRoaXMucHRyKX0sSC5wcm90b3R5cGUuX19kZXN0cm95X189SC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtMQSh0aGlzLnB0cil9LGoucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLGoucHJvdG90eXBlLmNvbnN0cnVjdG9yPWosai5wcm90b3R5cGUuX19jbGFzc19fPWosai5fX2NhY2hlX189e30sQi5EcmFjb1VJbnQzMkFycmF5PWosai5wcm90b3R5cGUuR2V0VmFsdWU9ai5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxVZChldCx6KX0sai5wcm90b3R5cGUuc2l6ZT1qLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIFFkKHRoaXMucHRyKX0sai5wcm90b3R5cGUuX19kZXN0cm95X189ai5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXt5QSh0aGlzLnB0cil9LFgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLFgucHJvdG90eXBlLmNvbnN0cnVjdG9yPVgsWC5wcm90b3R5cGUuX19jbGFzc19fPVgsWC5fX2NhY2hlX189e30sQi5NZXRhZGF0YVF1ZXJpZXI9WCxYLnByb3RvdHlwZS5IYXNFbnRyeT1YLnByb3RvdHlwZS5IYXNFbnRyeT1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIGZpLnByZXBhcmUoKSx6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldD1ldCYmdHlwZW9mIGV0PT0ib2JqZWN0Ij9ldC5wdHI6SShldCksISFubChwdCx6LGV0KX0sWC5wcm90b3R5cGUuR2V0SW50RW50cnk9WC5wcm90b3R5cGUuR2V0SW50RW50cnk9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiBmaS5wcmVwYXJlKCkseiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQ9ZXQmJnR5cGVvZiBldD09Im9iamVjdCI/ZXQucHRyOkkoZXQpLHZvKHB0LHosZXQpfSxYLnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PVgucHJvdG90eXBlLkdldEludEVudHJ5QXJyYXk9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO2ZpLnByZXBhcmUoKSx6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldD1ldCYmdHlwZW9mIGV0PT0ib2JqZWN0Ij9ldC5wdHI6SShldCkscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLGlBKCR0LHosZXQscHQpfSxYLnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT1YLnByb3RvdHlwZS5HZXREb3VibGVFbnRyeT1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIGZpLnByZXBhcmUoKSx6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldD1ldCYmdHlwZW9mIGV0PT0ib2JqZWN0Ij9ldC5wdHI6SShldCksSmgocHQseixldCl9LFgucHJvdG90eXBlLkdldFN0cmluZ0VudHJ5PVgucHJvdG90eXBlLkdldFN0cmluZ0VudHJ5PWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0PWV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiP2V0LnB0cjpJKGV0KSxzKGtkKHB0LHosZXQpKX0sWC5wcm90b3R5cGUuTnVtRW50cmllcz1YLnByb3RvdHlwZS5OdW1FbnRyaWVzPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksTGQoZXQseil9LFgucHJvdG90eXBlLkdldEVudHJ5TmFtZT1YLnByb3RvdHlwZS5HZXRFbnRyeU5hbWU9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscyhqbihwdCx6LGV0KSl9LFgucHJvdG90eXBlLl9fZGVzdHJveV9fPVgucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7c2wodGhpcy5wdHIpfSx0dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksdHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR0LHR0LnByb3RvdHlwZS5fX2NsYXNzX189dHQsdHQuX19jYWNoZV9fPXt9LEIuRGVjb2Rlcj10dCx0dC5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWQ9dHQucHJvdG90eXBlLkRlY29kZUFycmF5VG9Qb2ludENsb3VkPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9Qyh6KSksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSxSKG5BKCR0LHosZXQscHQpLGMpfSx0dC5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb01lc2g9dHQucHJvdG90eXBlLkRlY29kZUFycmF5VG9NZXNoPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9Qyh6KSksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSxSKGNhKCR0LHosZXQscHQpLGMpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWQ9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLEhoKHB0LHosZXQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU5hbWU9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkQnlOYW1lPWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0PWV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiP2V0LnB0cjpJKGV0KSx2aChwdCx6LGV0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5PXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeT1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIGZpLnByZXBhcmUoKSx6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldD1ldCYmdHlwZW9mIGV0PT0ib2JqZWN0Ij9ldC5wdHI6SShldCkscHQ9cHQmJnR5cGVvZiBwdD09Im9iamVjdCI/cHQucHRyOkkocHQpLHdBKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGU9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0ciksUihvbChwdCx6LGV0KSxHKX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQ9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQ9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0ciksUih6aChwdCx6LGV0KSxHKX0sdHQucHJvdG90eXBlLkdldE1ldGFkYXRhPXR0LnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLFIoeWQoZXQseikseSl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVNZXRhZGF0YT10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlTWV0YWRhdGE9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0ciksUihLaChwdCx6LGV0KSx5KX0sdHQucHJvdG90eXBlLkdldEZhY2VGcm9tTWVzaD10dC5wcm90b3R5cGUuR2V0RmFjZUZyb21NZXNoPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIVNzKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaD10dC5wcm90b3R5cGUuR2V0VHJpYW5nbGVTdHJpcHNGcm9tTWVzaD1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxYaChwdCx6LGV0KX0sdHQucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PXR0LnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MTZBcnJheT1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISF3ZCgkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQzMkFycmF5PXR0LnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISFybCgkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0PXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdD1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISFBbygkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cz1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISFobygkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludEZvckFsbFBvaW50cz10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIXhkKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cz10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cz1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISFQZCgkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50cz1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISFHbygkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISF4QSgkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIWxhKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIWRhKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLCEhSmQoJHQseixldCxwdCl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHM9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50cz1mdW5jdGlvbih6LGV0LHB0LCR0LHZlKXt2YXIgaGk9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksJHQmJnR5cGVvZiAkdD09Im9iamVjdCImJigkdD0kdC5wdHIpLHZlJiZ0eXBlb2YgdmU9PSJvYmplY3QiJiYodmU9dmUucHRyKSwhIWpkKGhpLHosZXQscHQsJHQsdmUpfSx0dC5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT10dC5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7eiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksSGQoZXQseil9LHR0LnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWQ9dHQucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLHZkKGV0LHopfSx0dC5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9Qb2ludENsb3VkPXR0LnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0ciksUih6ZChwdCx6LGV0KSxjKX0sdHQucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD10dC5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9NZXNoPWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLFIocWgocHQseixldCksYyl9LHR0LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz10dC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtQQSh0aGlzLnB0cil9LGZ1bmN0aW9uKCl7ZnVuY3Rpb24geigpe0IuQVRUUklCVVRFX0lOVkFMSURfVFJBTlNGT1JNPW1hKCksQi5BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWFsKCksQi5BVFRSSUJVVEVfUVVBTlRJWkFUSU9OX1RSQU5TRk9STT1mYSgpLEIuQVRUUklCVVRFX09DVEFIRURST05fVFJBTlNGT1JNPUVhKCksQi5JTlZBTElEPXNBKCksQi5QT1NJVElPTj1BbCgpLEIuTk9STUFMPUtkKCksQi5DT0xPUj1KQSgpLEIuVEVYX0NPT1JEPSRoKCksQi5HRU5FUklDPVhkKCksQi5JTlZBTElEX0dFT01FVFJZX1RZUEU9aGwoKSxCLlBPSU5UX0NMT1VEPXFkKCksQi5UUklBTkdVTEFSX01FU0g9JGQoKSxCLkRUX0lOVkFMSUQ9dG0oKSxCLkRUX0lOVDg9ZW0oKSxCLkRUX1VJTlQ4PWltKCksQi5EVF9JTlQxNj1ubSgpLEIuRFRfVUlOVDE2PXNtKCksQi5EVF9JTlQzMj1vbSgpLEIuRFRfVUlOVDMyPWNsKCksQi5EVF9JTlQ2ND1ybSgpLEIuRFRfVUlOVDY0PWFtKCksQi5EVF9GTE9BVDMyPUFtKCksQi5EVF9GTE9BVDY0PWxsKCksQi5EVF9CT09MPWhtKCksQi5EVF9UWVBFU19DT1VOVD1vQSgpLEIuT0s9Y20oKSxCLkRSQUNPX0VSUk9SPWpBKCksQi5JT19FUlJPUj1sbSgpLEIuSU5WQUxJRF9QQVJBTUVURVI9ZG0oKSxCLlVOU1VQUE9SVEVEX1ZFUlNJT049ZGwoKSxCLlVOS05PV05fVkVSU0lPTj1tbSgpfURlP3ooKTpWaS51bnNoaWZ0KHopfSgpLHR5cGVvZiBCLm9uTW9kdWxlUGFyc2VkPT0iZnVuY3Rpb24iJiZCLm9uTW9kdWxlUGFyc2VkKCksQi5EZWNvZGVyLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlPWZ1bmN0aW9uKHope2lmKHouX19jbGFzc19fJiZ6Ll9fY2xhc3NfXz09PUIuRGVjb2RlckJ1ZmZlcilyZXR1cm4gQi5EZWNvZGVyLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWQoeik7aWYoOD56LmJ5dGVMZW5ndGgpcmV0dXJuIEIuSU5WQUxJRF9HRU9NRVRSWV9UWVBFO3N3aXRjaCh6WzddKXtjYXNlIDA6cmV0dXJuIEIuUE9JTlRfQ0xPVUQ7Y2FzZSAxOnJldHVybiBCLlRSSUFOR1VMQVJfTUVTSDtkZWZhdWx0OnJldHVybiBCLklOVkFMSURfR0VPTUVUUllfVFlQRX19LGUucmVhZHl9fSgpO3R5cGVvZiBrUj09Im9iamVjdCImJnR5cGVvZiAkRz09Im9iamVjdCI/JEcuZXhwb3J0cz1xRzp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShbXSxmdW5jdGlvbigpe3JldHVybiBxR30pOnR5cGVvZiBrUj09Im9iamVjdCImJihrUi5EcmFjb0RlY29kZXJNb2R1bGU9cUcpfSk7dmFyIGlCPXt9O0hlKGlCLHtkZWZhdWx0OigpPT54X3R9KTtmdW5jdGlvbiBEX3QodCxlKXtsZXQgaT10Lm51bV9wb2ludHMoKSxuPXQubnVtX2ZhY2VzKCkscz1uZXcgYmkuRHJhY29JbnQzMkFycmF5LG89biozLHI9dGUuY3JlYXRlVHlwZWRBcnJheShpLG8pLGE9MDtmb3IobGV0IGg9MDtoPG47KytoKWUuR2V0RmFjZUZyb21NZXNoKHQsaCxzKSxyW2ErMF09cy5HZXRWYWx1ZSgwKSxyW2ErMV09cy5HZXRWYWx1ZSgxKSxyW2ErMl09cy5HZXRWYWx1ZSgyKSxhKz0zO3JldHVybiBiaS5kZXN0cm95KHMpLHt0eXBlZEFycmF5OnIsbnVtYmVyT2ZJbmRpY2VzOm99fWZ1bmN0aW9uIE1fdCh0LGUsaSxuLHMpe2xldCBvLHI7bi5xdWFudGl6YXRpb25CaXRzPD04PyhyPW5ldyBiaS5EcmFjb1VJbnQ4QXJyYXksbz1uZXcgVWludDhBcnJheShzKSxlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzKHQsaSxyKSk6bi5xdWFudGl6YXRpb25CaXRzPD0xNj8ocj1uZXcgYmkuRHJhY29VSW50MTZBcnJheSxvPW5ldyBVaW50MTZBcnJheShzKSxlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cyh0LGkscikpOihyPW5ldyBiaS5EcmFjb0Zsb2F0MzJBcnJheSxvPW5ldyBGbG9hdDMyQXJyYXkocyksZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cyh0LGkscikpO2ZvcihsZXQgYT0wO2E8czsrK2Epb1thXT1yLkdldFZhbHVlKGEpO3JldHVybiBiaS5kZXN0cm95KHIpLG99ZnVuY3Rpb24gVV90KHQsZSxpLG4pe2xldCBzLG87c3dpdGNoKGkuZGF0YV90eXBlKCkpe2Nhc2UgMTpjYXNlIDExOm89bmV3IGJpLkRyYWNvSW50OEFycmF5LHM9bmV3IEludDhBcnJheShuKSxlLkdldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHModCxpLG8pO2JyZWFrO2Nhc2UgMjpvPW5ldyBiaS5EcmFjb1VJbnQ4QXJyYXkscz1uZXcgVWludDhBcnJheShuKSxlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzKHQsaSxvKTticmVhaztjYXNlIDM6bz1uZXcgYmkuRHJhY29JbnQxNkFycmF5LHM9bmV3IEludDE2QXJyYXkobiksZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cyh0LGksbyk7YnJlYWs7Y2FzZSA0Om89bmV3IGJpLkRyYWNvVUludDE2QXJyYXkscz1uZXcgVWludDE2QXJyYXkobiksZS5HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHModCxpLG8pO2JyZWFrO2Nhc2UgNTpjYXNlIDc6bz1uZXcgYmkuRHJhY29JbnQzMkFycmF5LHM9bmV3IEludDMyQXJyYXkobiksZS5HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50cyh0LGksbyk7YnJlYWs7Y2FzZSA2OmNhc2UgODpvPW5ldyBiaS5EcmFjb1VJbnQzMkFycmF5LHM9bmV3IFVpbnQzMkFycmF5KG4pLGUuR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzKHQsaSxvKTticmVhaztjYXNlIDk6Y2FzZSAxMDpvPW5ldyBiaS5EcmFjb0Zsb2F0MzJBcnJheSxzPW5ldyBGbG9hdDMyQXJyYXkobiksZS5HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50cyh0LGksbyk7YnJlYWt9Zm9yKGxldCByPTA7cjxuOysrcilzW3JdPW8uR2V0VmFsdWUocik7cmV0dXJuIGJpLmRlc3Ryb3kobyksc31mdW5jdGlvbiBwSyh0LGUsaSl7bGV0IG49dC5udW1fcG9pbnRzKCkscz1pLm51bV9jb21wb25lbnRzKCksbyxyPW5ldyBiaS5BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm07aWYoci5Jbml0RnJvbUF0dHJpYnV0ZShpKSl7bGV0IGQ9bmV3IEFycmF5KHMpO2ZvcihsZXQgZj0wO2Y8czsrK2YpZFtmXT1yLm1pbl92YWx1ZShmKTtvPXtxdWFudGl6YXRpb25CaXRzOnIucXVhbnRpemF0aW9uX2JpdHMoKSxtaW5WYWx1ZXM6ZCxyYW5nZTpyLnJhbmdlKCksb2N0RW5jb2RlZDohMX19YmkuZGVzdHJveShyKSxyPW5ldyBiaS5BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtLHIuSW5pdEZyb21BdHRyaWJ1dGUoaSkmJihvPXtxdWFudGl6YXRpb25CaXRzOnIucXVhbnRpemF0aW9uX2JpdHMoKSxvY3RFbmNvZGVkOiEwfSksYmkuZGVzdHJveShyKTtsZXQgYT1uKnMsaDttKG8pP2g9TV90KHQsZSxpLG8sYSk6aD1VX3QodCxlLGksYSk7bGV0IEE9QXQuZnJvbVR5cGVkQXJyYXkoaCk7cmV0dXJue2FycmF5OmgsZGF0YTp7Y29tcG9uZW50c1BlckF0dHJpYnV0ZTpzLGNvbXBvbmVudERhdGF0eXBlOkEsYnl0ZU9mZnNldDppLmJ5dGVfb2Zmc2V0KCksYnl0ZVN0cmlkZTpBdC5nZXRTaXplSW5CeXRlcyhBKSpzLG5vcm1hbGl6ZWQ6aS5ub3JtYWxpemVkKCkscXVhbnRpemF0aW9uOm99fX1mdW5jdGlvbiBRX3QodCl7bGV0IGU9bmV3IGJpLkRlY29kZXI7dC5kZXF1YW50aXplSW5TaGFkZXImJihlLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm0oYmkuUE9TSVRJT04pLGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybShiaS5OT1JNQUwpKTtsZXQgaT1uZXcgYmkuRGVjb2RlckJ1ZmZlcjtpZihpLkluaXQodC5idWZmZXIsdC5idWZmZXIubGVuZ3RoKSxlLkdldEVuY29kZWRHZW9tZXRyeVR5cGUoaSkhPT1iaS5QT0lOVF9DTE9VRCl0aHJvdyBuZXcga2UoIkRyYWNvIGdlb21ldHJ5IHR5cGUgbXVzdCBiZSBQT0lOVF9DTE9VRC4iKTtsZXQgcz1uZXcgYmkuUG9pbnRDbG91ZCxvPWUuRGVjb2RlQnVmZmVyVG9Qb2ludENsb3VkKGkscyk7aWYoIW8ub2soKXx8cy5wdHI9PT0wKXRocm93IG5ldyBrZShgRXJyb3IgZGVjb2RpbmcgZHJhY28gcG9pbnQgY2xvdWQ6ICR7by5lcnJvcl9tc2coKX1gKTtiaS5kZXN0cm95KGkpO2xldCByPXt9LGE9dC5wcm9wZXJ0aWVzO2ZvcihsZXQgaCBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkoaCkpe2xldCBBO2lmKGg9PT0iUE9TSVRJT04ifHxoPT09Ik5PUk1BTCIpe2xldCBkPWUuR2V0QXR0cmlidXRlSWQocyxiaVtoXSk7QT1lLkdldEF0dHJpYnV0ZShzLGQpfWVsc2V7bGV0IGQ9YVtoXTtBPWUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZChzLGQpfXJbaF09cEsocyxlLEEpfXJldHVybiBiaS5kZXN0cm95KHMpLGJpLmRlc3Ryb3koZSkscn1mdW5jdGlvbiBrX3QodCl7bGV0IGU9bmV3IGJpLkRlY29kZXIsaT1bIlBPU0lUSU9OIiwiTk9STUFMIiwiQ09MT1IiLCJURVhfQ09PUkQiXTtpZih0LmRlcXVhbnRpemVJblNoYWRlcilmb3IobGV0IGY9MDtmPGkubGVuZ3RoOysrZillLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm0oYmlbaVtmXV0pO2xldCBuPXQuYnVmZmVyVmlldyxzPW5ldyBiaS5EZWNvZGVyQnVmZmVyO2lmKHMuSW5pdCh0LmFycmF5LG4uYnl0ZUxlbmd0aCksZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlKHMpIT09YmkuVFJJQU5HVUxBUl9NRVNIKXRocm93IG5ldyBrZSgiVW5zdXBwb3J0ZWQgZHJhY28gbWVzaCBnZW9tZXRyeSB0eXBlLiIpO2xldCByPW5ldyBiaS5NZXNoLGE9ZS5EZWNvZGVCdWZmZXJUb01lc2gocyxyKTtpZighYS5vaygpfHxyLnB0cj09PTApdGhyb3cgbmV3IGtlKGBFcnJvciBkZWNvZGluZyBkcmFjbyBtZXNoIGdlb21ldHJ5OiAke2EuZXJyb3JfbXNnKCl9YCk7YmkuZGVzdHJveShzKTtsZXQgaD17fSxBPXQuY29tcHJlc3NlZEF0dHJpYnV0ZXM7Zm9yKGxldCBmIGluIEEpaWYoQS5oYXNPd25Qcm9wZXJ0eShmKSl7bGV0IEU9QVtmXSxfPWUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZChyLEUpO2hbZl09cEsocixlLF8pfWxldCBkPXtpbmRleEFycmF5OkRfdChyLGUpLGF0dHJpYnV0ZURhdGE6aH07cmV0dXJuIGJpLmRlc3Ryb3kociksYmkuZGVzdHJveShlKSxkfWFzeW5jIGZ1bmN0aW9uIExfdCh0LGUpe3JldHVybiBtKHQuYnVmZmVyVmlldyk/a190KHQpOlFfdCh0KX1hc3luYyBmdW5jdGlvbiB5X3QodCxlKXtsZXQgaT10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKGkpJiZtKGkud2FzbUJpbmFyeUZpbGUpP2JpPWF3YWl0KDAsZUIuZGVmYXVsdCkoaSk6Ymk9YXdhaXQoMCxlQi5kZWZhdWx0KSgpLCEwfWFzeW5jIGZ1bmN0aW9uIHdfdCh0LGUpe2xldCBpPXQud2ViQXNzZW1ibHlDb25maWc7cmV0dXJuIG0oaSk/eV90KHQsZSk6TF90KHQsZSl9dmFyIGVCLGJpLHhfdCxuQj1PKCgpPT57b2koKTttdCgpO0RpKCk7UHMoKTtOcygpO2VCPWNvKHRCKCksMSk7eF90PVdpKHdfdCl9KTtmdW5jdGlvbiBzQih0LGUpe2lmKHNCLnBhc3NUaHJvdWdoRGF0YUZvclRlc3RpbmcpcmV0dXJuIGU7cC50eXBlT2Yub2JqZWN0KCJrZXkiLHQpLHAudHlwZU9mLm9iamVjdCgiZGF0YSIsZSk7bGV0IGk9dC5ieXRlTGVuZ3RoO2lmKGk9PT0wfHxpJTQhPT0wKXRocm93IG5ldyBrZSgiVGhlIGxlbmd0aCBvZiBrZXkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgYSBtdWx0aXBsZSBvZiA0LiIpO2xldCBuPW5ldyBEYXRhVmlldyhlKSxzPW4uZ2V0VWludDMyKDAsITApO2lmKHM9PT1QX3R8fHM9PT1KX3QpcmV0dXJuIGU7bGV0IG89bmV3IERhdGFWaWV3KHQpLHI9MCxhPWUuYnl0ZUxlbmd0aCxoPWEtYSU4LEE9aSxkLGY9ODtmb3IoO3I8aDspZm9yKGY9KGYrOCklMjQsZD1mO3I8aCYmZDxBOyluLnNldFVpbnQzMihyLG4uZ2V0VWludDMyKHIsITApXm8uZ2V0VWludDMyKGQsITApLCEwKSxuLnNldFVpbnQzMihyKzQsbi5nZXRVaW50MzIocis0LCEwKV5vLmdldFVpbnQzMihkKzQsITApLCEwKSxyKz04LGQrPTI0O2lmKHI8YSlmb3IoZD49QSYmKGY9KGYrOCklMjQsZD1mKTtyPGE7KW4uc2V0VWludDgocixuLmdldFVpbnQ4KHIpXm8uZ2V0VWludDgoZCkpLHIrKyxkKyt9dmFyIFBfdCxKX3QsdUssQ0s9TygoKT0+e2FlKCk7UHMoKTtQX3Q9MTk1MzAyOTgwNSxKX3Q9MjkxNzAzNDEwMDtzQi5wYXNzVGhyb3VnaERhdGFGb3JUZXN0aW5nPSExO3VLPXNCfSk7ZnVuY3Rpb24gal90KHQsZSl7cmV0dXJuKHQmZSkhPT0wfXZhciBYZixnSz1PKCgpPT57WGY9al90fSk7ZnVuY3Rpb24gTUEodCxlLGksbixzLG8pe3RoaXMuX2JpdHM9dCx0aGlzLmNub2RlVmVyc2lvbj1lLHRoaXMuaW1hZ2VyeVZlcnNpb249aSx0aGlzLnRlcnJhaW5WZXJzaW9uPW4sdGhpcy5pbWFnZXJ5UHJvdmlkZXI9cyx0aGlzLnRlcnJhaW5Qcm92aWRlcj1vLHRoaXMuYW5jZXN0b3JIYXNUZXJyYWluPSExLHRoaXMudGVycmFpblN0YXRlPXZvaWQgMH12YXIgSF90LFRLLHZfdCx6X3QsS190LE5LLGJLPU8oKCk9PnttdCgpO2dLKCk7SF90PVsxLDIsNCw4XSxUSz0xNSx2X3Q9MTYsel90PTY0LEtfdD0xMjg7TUEuY2xvbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbShlKT8oZS5fYml0cz10Ll9iaXRzLGUuY25vZGVWZXJzaW9uPXQuY25vZGVWZXJzaW9uLGUuaW1hZ2VyeVZlcnNpb249dC5pbWFnZXJ5VmVyc2lvbixlLnRlcnJhaW5WZXJzaW9uPXQudGVycmFpblZlcnNpb24sZS5pbWFnZXJ5UHJvdmlkZXI9dC5pbWFnZXJ5UHJvdmlkZXIsZS50ZXJyYWluUHJvdmlkZXI9dC50ZXJyYWluUHJvdmlkZXIpOmU9bmV3IE1BKHQuX2JpdHMsdC5jbm9kZVZlcnNpb24sdC5pbWFnZXJ5VmVyc2lvbix0LnRlcnJhaW5WZXJzaW9uLHQuaW1hZ2VyeVByb3ZpZGVyLHQudGVycmFpblByb3ZpZGVyKSxlLmFuY2VzdG9ySGFzVGVycmFpbj10LmFuY2VzdG9ySGFzVGVycmFpbixlLnRlcnJhaW5TdGF0ZT10LnRlcnJhaW5TdGF0ZSxlfTtNQS5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQpe3RoaXMuYW5jZXN0b3JIYXNUZXJyYWluPXQuYW5jZXN0b3JIYXNUZXJyYWlufHx0aGlzLmhhc1RlcnJhaW4oKX07TUEucHJvdG90eXBlLmhhc1N1YnRyZWU9ZnVuY3Rpb24oKXtyZXR1cm4gWGYodGhpcy5fYml0cyx2X3QpfTtNQS5wcm90b3R5cGUuaGFzSW1hZ2VyeT1mdW5jdGlvbigpe3JldHVybiBYZih0aGlzLl9iaXRzLHpfdCl9O01BLnByb3RvdHlwZS5oYXNUZXJyYWluPWZ1bmN0aW9uKCl7cmV0dXJuIFhmKHRoaXMuX2JpdHMsS190KX07TUEucHJvdG90eXBlLmhhc0NoaWxkcmVuPWZ1bmN0aW9uKCl7cmV0dXJuIFhmKHRoaXMuX2JpdHMsVEspfTtNQS5wcm90b3R5cGUuaGFzQ2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIFhmKHRoaXMuX2JpdHMsSF90W3RdKX07TUEucHJvdG90eXBlLmdldENoaWxkQml0bWFzaz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iaXRzJlRLfTtOSz1NQX0pO3ZhciBZSz10cygoUU9lLEZLKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgWF90PSh0LGUsaSxuKT0+e2xldCBzPXQmNjU1MzV8MCxvPXQ+Pj4xNiY2NTUzNXwwLHI9MDtmb3IoO2khPT0wOyl7cj1pPjJlMz8yZTM6aSxpLT1yO2RvIHM9cytlW24rK118MCxvPW8rc3wwO3doaWxlKC0tcik7cyU9NjU1MjEsbyU9NjU1MjF9cmV0dXJuIHN8bzw8MTZ8MH07RksuZXhwb3J0cz1YX3R9KTt2YXIgT0s9dHMoKGtPZSxTSyk9PnsidXNlIHN0cmljdCI7dmFyIHFfdD0oKT0+e2xldCB0LGU9W107Zm9yKHZhciBpPTA7aTwyNTY7aSsrKXt0PWk7Zm9yKHZhciBuPTA7bjw4O24rKyl0PXQmMT8zOTg4MjkyMzg0XnQ+Pj4xOnQ+Pj4xO2VbaV09dH1yZXR1cm4gZX0sJF90PW5ldyBVaW50MzJBcnJheShxX3QoKSksdFJ0PSh0LGUsaSxuKT0+e2xldCBzPSRfdCxvPW4raTt0Xj0tMTtmb3IobGV0IHI9bjtyPG87cisrKXQ9dD4+Pjhec1sodF5lW3JdKSYyNTVdO3JldHVybiB0Xi0xfTtTSy5leHBvcnRzPXRSdH0pO3ZhciBHSz10cygoTE9lLFZLKT0+eyJ1c2Ugc3RyaWN0IjtWSy5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7bGV0IG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEksQyxOLFQsRixiLEcsTSxRLFUsayx5LGM9ZS5zdGF0ZTtuPWUubmV4dF9pbixrPWUuaW5wdXQscz1uKyhlLmF2YWlsX2luLTUpLG89ZS5uZXh0X291dCx5PWUub3V0cHV0LHI9by0oaS1lLmF2YWlsX291dCksYT1vKyhlLmF2YWlsX291dC0yNTcpLGg9Yy5kbWF4LEE9Yy53c2l6ZSxkPWMud2hhdmUsZj1jLnduZXh0LEU9Yy53aW5kb3csXz1jLmhvbGQsUj1jLmJpdHMsST1jLmxlbmNvZGUsQz1jLmRpc3Rjb2RlLE49KDE8PGMubGVuYml0cyktMSxUPSgxPDxjLmRpc3RiaXRzKS0xO3Q6ZG97UjwxNSYmKF8rPWtbbisrXTw8UixSKz04LF8rPWtbbisrXTw8UixSKz04KSxGPUlbXyZOXTtlOmZvcig7Oyl7aWYoYj1GPj4+MjQsXz4+Pj1iLFItPWIsYj1GPj4+MTYmMjU1LGI9PT0wKXlbbysrXT1GJjY1NTM1O2Vsc2UgaWYoYiYxNil7Rz1GJjY1NTM1LGImPTE1LGImJihSPGImJihfKz1rW24rK108PFIsUis9OCksRys9XyYoMTw8YiktMSxfPj4+PWIsUi09YiksUjwxNSYmKF8rPWtbbisrXTw8UixSKz04LF8rPWtbbisrXTw8UixSKz04KSxGPUNbXyZUXTtpOmZvcig7Oyl7aWYoYj1GPj4+MjQsXz4+Pj1iLFItPWIsYj1GPj4+MTYmMjU1LGImMTYpe2lmKE09RiY2NTUzNSxiJj0xNSxSPGImJihfKz1rW24rK108PFIsUis9OCxSPGImJihfKz1rW24rK108PFIsUis9OCkpLE0rPV8mKDE8PGIpLTEsTT5oKXtlLm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLGMubW9kZT0xNjIwOTticmVhayB0fWlmKF8+Pj49YixSLT1iLGI9by1yLE0+Yil7aWYoYj1NLWIsYj5kJiZjLnNhbmUpe2UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsYy5tb2RlPTE2MjA5O2JyZWFrIHR9aWYoUT0wLFU9RSxmPT09MCl7aWYoUSs9QS1iLGI8Ryl7Ry09YjtkbyB5W28rK109RVtRKytdO3doaWxlKC0tYik7UT1vLU0sVT15fX1lbHNlIGlmKGY8Yil7aWYoUSs9QStmLWIsYi09ZixiPEcpe0ctPWI7ZG8geVtvKytdPUVbUSsrXTt3aGlsZSgtLWIpO2lmKFE9MCxmPEcpe2I9ZixHLT1iO2RvIHlbbysrXT1FW1ErK107d2hpbGUoLS1iKTtRPW8tTSxVPXl9fX1lbHNlIGlmKFErPWYtYixiPEcpe0ctPWI7ZG8geVtvKytdPUVbUSsrXTt3aGlsZSgtLWIpO1E9by1NLFU9eX1mb3IoO0c+MjspeVtvKytdPVVbUSsrXSx5W28rK109VVtRKytdLHlbbysrXT1VW1ErK10sRy09MztHJiYoeVtvKytdPVVbUSsrXSxHPjEmJih5W28rK109VVtRKytdKSl9ZWxzZXtRPW8tTTtkbyB5W28rK109eVtRKytdLHlbbysrXT15W1ErK10seVtvKytdPXlbUSsrXSxHLT0zO3doaWxlKEc+Mik7RyYmKHlbbysrXT15W1ErK10sRz4xJiYoeVtvKytdPXlbUSsrXSkpfX1lbHNlIGlmKGImNjQpe2UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLGMubW9kZT0xNjIwOTticmVhayB0fWVsc2V7Rj1DWyhGJjY1NTM1KSsoXyYoMTw8YiktMSldO2NvbnRpbnVlIGl9YnJlYWt9fWVsc2UgaWYoYiY2NClpZihiJjMyKXtjLm1vZGU9MTYxOTE7YnJlYWsgdH1lbHNle2UubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLGMubW9kZT0xNjIwOTticmVhayB0fWVsc2V7Rj1JWyhGJjY1NTM1KSsoXyYoMTw8YiktMSldO2NvbnRpbnVlIGV9YnJlYWt9fXdoaWxlKG48cyYmbzxhKTtHPVI+PjMsbi09RyxSLT1HPDwzLF8mPSgxPDxSKS0xLGUubmV4dF9pbj1uLGUubmV4dF9vdXQ9byxlLmF2YWlsX2luPW48cz81KyhzLW4pOjUtKG4tcyksZS5hdmFpbF9vdXQ9bzxhPzI1NysoYS1vKToyNTctKG8tYSksYy5ob2xkPV8sYy5iaXRzPVJ9fSk7dmFyIFdLPXRzKCh5T2UsQkspPT57InVzZSBzdHJpY3QiO3ZhciBlUnQ9bmV3IFVpbnQxNkFycmF5KFszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDAsMF0pLGlSdD1uZXcgVWludDhBcnJheShbMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdKSxuUnQ9bmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsMCwwXSksc1J0PW5ldyBVaW50OEFycmF5KFsxNiwxNiwxNiwxNiwxNywxNywxOCwxOCwxOSwxOSwyMCwyMCwyMSwyMSwyMiwyMiwyMywyMywyNCwyNCwyNSwyNSwyNiwyNiwyNywyNywyOCwyOCwyOSwyOSw2NCw2NF0pLG9SdD0odCxlLGksbixzLG8scixhKT0+e2xldCBoPWEuYml0cyxBPTAsZD0wLGY9MCxFPTAsXz0wLFI9MCxJPTAsQz0wLE49MCxUPTAsRixiLEcsTSxRLFU9bnVsbCxrLHk9bmV3IFVpbnQxNkFycmF5KDE2KSxjPW5ldyBVaW50MTZBcnJheSgxNiksZz1udWxsLFYsRCx3O2ZvcihBPTA7QTw9MTU7QSsrKXlbQV09MDtmb3IoZD0wO2Q8bjtkKyspeVtlW2krZF1dKys7Zm9yKF89aCxFPTE1O0U+PTEmJnlbRV09PT0wO0UtLSk7aWYoXz5FJiYoXz1FKSxFPT09MClyZXR1cm4gc1tvKytdPTE8PDI0fDY0PDwxNnwwLHNbbysrXT0xPDwyNHw2NDw8MTZ8MCxhLmJpdHM9MSwwO2ZvcihmPTE7ZjxFJiZ5W2ZdPT09MDtmKyspO2ZvcihfPGYmJihfPWYpLEM9MSxBPTE7QTw9MTU7QSsrKWlmKEM8PD0xLEMtPXlbQV0sQzwwKXJldHVybi0xO2lmKEM+MCYmKHQ9PT0wfHxFIT09MSkpcmV0dXJuLTE7Zm9yKGNbMV09MCxBPTE7QTwxNTtBKyspY1tBKzFdPWNbQV0reVtBXTtmb3IoZD0wO2Q8bjtkKyspZVtpK2RdIT09MCYmKHJbY1tlW2krZF1dKytdPWQpO2lmKHQ9PT0wPyhVPWc9cixrPTIwKTp0PT09MT8oVT1lUnQsZz1pUnQsaz0yNTcpOihVPW5SdCxnPXNSdCxrPTApLFQ9MCxkPTAsQT1mLFE9byxSPV8sST0wLEc9LTEsTj0xPDxfLE09Ti0xLHQ9PT0xJiZOPjg1Mnx8dD09PTImJk4+NTkyKXJldHVybiAxO2Zvcig7Oyl7Vj1BLUkscltkXSsxPGs/KEQ9MCx3PXJbZF0pOnJbZF0+PWs/KEQ9Z1tyW2RdLWtdLHc9VVtyW2RdLWtdKTooRD05Nix3PTApLEY9MTw8QS1JLGI9MTw8UixmPWI7ZG8gYi09RixzW1ErKFQ+PkkpK2JdPVY8PDI0fEQ8PDE2fHd8MDt3aGlsZShiIT09MCk7Zm9yKEY9MTw8QS0xO1QmRjspRj4+PTE7aWYoRiE9PTA/KFQmPUYtMSxUKz1GKTpUPTAsZCsrLC0teVtBXT09PTApe2lmKEE9PT1FKWJyZWFrO0E9ZVtpK3JbZF1dfWlmKEE+XyYmKFQmTSkhPT1HKXtmb3IoST09PTAmJihJPV8pLFErPWYsUj1BLUksQz0xPDxSO1IrSTxFJiYoQy09eVtSK0ldLCEoQzw9MCkpOylSKyssQzw8PTE7aWYoTis9MTw8Uix0PT09MSYmTj44NTJ8fHQ9PT0yJiZOPjU5MilyZXR1cm4gMTtHPVQmTSxzW0ddPV88PDI0fFI8PDE2fFEtb3wwfX1yZXR1cm4gVCE9PTAmJihzW1ErVF09QS1JPDwyNHw2NDw8MTZ8MCksYS5iaXRzPV8sMH07QksuZXhwb3J0cz1vUnR9KTt2YXIgV2c9dHMoKHdPZSxESyk9PnsidXNlIHN0cmljdCI7REsuZXhwb3J0cz17Wl9OT19GTFVTSDowLFpfUEFSVElBTF9GTFVTSDoxLFpfU1lOQ19GTFVTSDoyLFpfRlVMTF9GTFVTSDozLFpfRklOSVNIOjQsWl9CTE9DSzo1LFpfVFJFRVM6NixaX09LOjAsWl9TVFJFQU1fRU5EOjEsWl9ORUVEX0RJQ1Q6MixaX0VSUk5POi0xLFpfU1RSRUFNX0VSUk9SOi0yLFpfREFUQV9FUlJPUjotMyxaX01FTV9FUlJPUjotNCxaX0JVRl9FUlJPUjotNSxaX05PX0NPTVBSRVNTSU9OOjAsWl9CRVNUX1NQRUVEOjEsWl9CRVNUX0NPTVBSRVNTSU9OOjksWl9ERUZBVUxUX0NPTVBSRVNTSU9OOi0xLFpfRklMVEVSRUQ6MSxaX0hVRkZNQU5fT05MWToyLFpfUkxFOjMsWl9GSVhFRDo0LFpfREVGQVVMVF9TVFJBVEVHWTowLFpfQklOQVJZOjAsWl9URVhUOjEsWl9VTktOT1dOOjIsWl9ERUZMQVRFRDo4fX0pO3ZhciBfWD10cygoeE9lLHZhKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgY0I9WUsoKSxVQT1PSygpLHJSdD1HSygpLExSPVdLKCksYVJ0PTAsYVg9MSxBWD0yLHtaX0ZJTklTSDpNSyxaX0JMT0NLOkFSdCxaX1RSRUVTOkRnLFpfT0s6TmQsWl9TVFJFQU1fRU5EOmhSdCxaX05FRURfRElDVDpjUnQsWl9TVFJFQU1fRVJST1I6cmEsWl9EQVRBX0VSUk9SOmhYLFpfTUVNX0VSUk9SOmxCLFpfQlVGX0VSUk9SOmxSdCxaX0RFRkxBVEVEOlVLfT1XZygpLGtnPTE2MTgwLFFLPTE2MTgxLGtLPTE2MTgyLExLPTE2MTgzLHlLPTE2MTg0LHdLPTE2MTg1LHhLPTE2MTg2LFBLPTE2MTg3LEpLPTE2MTg4LGpLPTE2MTg5LFFnPTE2MTkwLEJoPTE2MTkxLG9CPTE2MTkyLEhLPTE2MTkzLHJCPTE2MTk0LHZLPTE2MTk1LHpLPTE2MTk2LEtLPTE2MTk3LFhLPTE2MTk4LE1nPTE2MTk5LFVnPTE2MjAwLHFLPTE2MjAxLCRLPTE2MjAyLHRYPTE2MjAzLGVYPTE2MjA0LGlYPTE2MjA1LGFCPTE2MjA2LG5YPTE2MjA3LHNYPTE2MjA4LCRuPTE2MjA5LGRCPTE2MjEwLGNYPTE2MjExLGRSdD04NTIsbVJ0PTU5MixmUnQ9MTUsRVJ0PWZSdCxvWD10PT4odD4+PjI0JjI1NSkrKHQ+Pj44JjY1MjgwKSsoKHQmNjUyODApPDw4KSsoKHQmMjU1KTw8MjQpO2Z1bmN0aW9uIF9SdCgpe3RoaXMuc3RybT1udWxsLHRoaXMubW9kZT0wLHRoaXMubGFzdD0hMSx0aGlzLndyYXA9MCx0aGlzLmhhdmVkaWN0PSExLHRoaXMuZmxhZ3M9MCx0aGlzLmRtYXg9MCx0aGlzLmNoZWNrPTAsdGhpcy50b3RhbD0wLHRoaXMuaGVhZD1udWxsLHRoaXMud2JpdHM9MCx0aGlzLndzaXplPTAsdGhpcy53aGF2ZT0wLHRoaXMud25leHQ9MCx0aGlzLndpbmRvdz1udWxsLHRoaXMuaG9sZD0wLHRoaXMuYml0cz0wLHRoaXMubGVuZ3RoPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmV4dHJhPTAsdGhpcy5sZW5jb2RlPW51bGwsdGhpcy5kaXN0Y29kZT1udWxsLHRoaXMubGVuYml0cz0wLHRoaXMuZGlzdGJpdHM9MCx0aGlzLm5jb2RlPTAsdGhpcy5ubGVuPTAsdGhpcy5uZGlzdD0wLHRoaXMuaGF2ZT0wLHRoaXMubmV4dD1udWxsLHRoaXMubGVucz1uZXcgVWludDE2QXJyYXkoMzIwKSx0aGlzLndvcms9bmV3IFVpbnQxNkFycmF5KDI4OCksdGhpcy5sZW5keW49bnVsbCx0aGlzLmRpc3RkeW49bnVsbCx0aGlzLnNhbmU9MCx0aGlzLmJhY2s9MCx0aGlzLndhcz0wfXZhciBiZD10PT57aWYoIXQpcmV0dXJuIDE7bGV0IGU9dC5zdGF0ZTtyZXR1cm4hZXx8ZS5zdHJtIT09dHx8ZS5tb2RlPGtnfHxlLm1vZGU+Y1g/MTowfSxsWD10PT57aWYoYmQodCkpcmV0dXJuIHJhO2xldCBlPXQuc3RhdGU7cmV0dXJuIHQudG90YWxfaW49dC50b3RhbF9vdXQ9ZS50b3RhbD0wLHQubXNnPSIiLGUud3JhcCYmKHQuYWRsZXI9ZS53cmFwJjEpLGUubW9kZT1rZyxlLmxhc3Q9MCxlLmhhdmVkaWN0PTAsZS5mbGFncz0tMSxlLmRtYXg9MzI3NjgsZS5oZWFkPW51bGwsZS5ob2xkPTAsZS5iaXRzPTAsZS5sZW5jb2RlPWUubGVuZHluPW5ldyBJbnQzMkFycmF5KGRSdCksZS5kaXN0Y29kZT1lLmRpc3RkeW49bmV3IEludDMyQXJyYXkobVJ0KSxlLnNhbmU9MSxlLmJhY2s9LTEsTmR9LGRYPXQ9PntpZihiZCh0KSlyZXR1cm4gcmE7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gZS53c2l6ZT0wLGUud2hhdmU9MCxlLnduZXh0PTAsbFgodCl9LG1YPSh0LGUpPT57bGV0IGk7aWYoYmQodCkpcmV0dXJuIHJhO2xldCBuPXQuc3RhdGU7cmV0dXJuIGU8MD8oaT0wLGU9LWUpOihpPShlPj40KSs1LGU8NDgmJihlJj0xNSkpLGUmJihlPDh8fGU+MTUpP3JhOihuLndpbmRvdyE9PW51bGwmJm4ud2JpdHMhPT1lJiYobi53aW5kb3c9bnVsbCksbi53cmFwPWksbi53Yml0cz1lLGRYKHQpKX0sZlg9KHQsZSk9PntpZighdClyZXR1cm4gcmE7bGV0IGk9bmV3IF9SdDt0LnN0YXRlPWksaS5zdHJtPXQsaS53aW5kb3c9bnVsbCxpLm1vZGU9a2c7bGV0IG49bVgodCxlKTtyZXR1cm4gbiE9PU5kJiYodC5zdGF0ZT1udWxsKSxufSxSUnQ9dD0+ZlgodCxFUnQpLHJYPSEwLEFCLGhCLFpSdD10PT57aWYoclgpe0FCPW5ldyBJbnQzMkFycmF5KDUxMiksaEI9bmV3IEludDMyQXJyYXkoMzIpO2xldCBlPTA7Zm9yKDtlPDE0NDspdC5sZW5zW2UrK109ODtmb3IoO2U8MjU2Oyl0LmxlbnNbZSsrXT05O2Zvcig7ZTwyODA7KXQubGVuc1tlKytdPTc7Zm9yKDtlPDI4ODspdC5sZW5zW2UrK109ODtmb3IoTFIoYVgsdC5sZW5zLDAsMjg4LEFCLDAsdC53b3JrLHtiaXRzOjl9KSxlPTA7ZTwzMjspdC5sZW5zW2UrK109NTtMUihBWCx0LmxlbnMsMCwzMixoQiwwLHQud29yayx7Yml0czo1fSksclg9ITF9dC5sZW5jb2RlPUFCLHQubGVuYml0cz05LHQuZGlzdGNvZGU9aEIsdC5kaXN0Yml0cz01fSxFWD0odCxlLGksbik9PntsZXQgcyxvPXQuc3RhdGU7cmV0dXJuIG8ud2luZG93PT09bnVsbCYmKG8ud3NpemU9MTw8by53Yml0cyxvLnduZXh0PTAsby53aGF2ZT0wLG8ud2luZG93PW5ldyBVaW50OEFycmF5KG8ud3NpemUpKSxuPj1vLndzaXplPyhvLndpbmRvdy5zZXQoZS5zdWJhcnJheShpLW8ud3NpemUsaSksMCksby53bmV4dD0wLG8ud2hhdmU9by53c2l6ZSk6KHM9by53c2l6ZS1vLnduZXh0LHM+biYmKHM9biksby53aW5kb3cuc2V0KGUuc3ViYXJyYXkoaS1uLGktbitzKSxvLnduZXh0KSxuLT1zLG4/KG8ud2luZG93LnNldChlLnN1YmFycmF5KGktbixpKSwwKSxvLnduZXh0PW4sby53aGF2ZT1vLndzaXplKTooby53bmV4dCs9cyxvLnduZXh0PT09by53c2l6ZSYmKG8ud25leHQ9MCksby53aGF2ZTxvLndzaXplJiYoby53aGF2ZSs9cykpKSwwfSxJUnQ9KHQsZSk9PntsZXQgaSxuLHMsbyxyLGEsaCxBLGQsZixFLF8sUixJLEM9MCxOLFQsRixiLEcsTSxRLFUsaz1uZXcgVWludDhBcnJheSg0KSx5LGMsZz1uZXcgVWludDhBcnJheShbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV0pO2lmKGJkKHQpfHwhdC5vdXRwdXR8fCF0LmlucHV0JiZ0LmF2YWlsX2luIT09MClyZXR1cm4gcmE7aT10LnN0YXRlLGkubW9kZT09PUJoJiYoaS5tb2RlPW9CKSxyPXQubmV4dF9vdXQscz10Lm91dHB1dCxoPXQuYXZhaWxfb3V0LG89dC5uZXh0X2luLG49dC5pbnB1dCxhPXQuYXZhaWxfaW4sQT1pLmhvbGQsZD1pLmJpdHMsZj1hLEU9aCxVPU5kO3Q6Zm9yKDs7KXN3aXRjaChpLm1vZGUpe2Nhc2Uga2c6aWYoaS53cmFwPT09MCl7aS5tb2RlPW9CO2JyZWFrfWZvcig7ZDwxNjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKGkud3JhcCYyJiZBPT09MzU2MTUpe2kud2JpdHM9PT0wJiYoaS53Yml0cz0xNSksaS5jaGVjaz0wLGtbMF09QSYyNTUsa1sxXT1BPj4+OCYyNTUsaS5jaGVjaz1VQShpLmNoZWNrLGssMiwwKSxBPTAsZD0wLGkubW9kZT1RSzticmVha31pZihpLmhlYWQmJihpLmhlYWQuZG9uZT0hMSksIShpLndyYXAmMSl8fCgoKEEmMjU1KTw8OCkrKEE+PjgpKSUzMSl7dC5tc2c9ImluY29ycmVjdCBoZWFkZXIgY2hlY2siLGkubW9kZT0kbjticmVha31pZigoQSYxNSkhPT1VSyl7dC5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixpLm1vZGU9JG47YnJlYWt9aWYoQT4+Pj00LGQtPTQsUT0oQSYxNSkrOCxpLndiaXRzPT09MCYmKGkud2JpdHM9USksUT4xNXx8UT5pLndiaXRzKXt0Lm1zZz0iaW52YWxpZCB3aW5kb3cgc2l6ZSIsaS5tb2RlPSRuO2JyZWFrfWkuZG1heD0xPDxpLndiaXRzLGkuZmxhZ3M9MCx0LmFkbGVyPWkuY2hlY2s9MSxpLm1vZGU9QSY1MTI/aks6QmgsQT0wLGQ9MDticmVhaztjYXNlIFFLOmZvcig7ZDwxNjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKGkuZmxhZ3M9QSwoaS5mbGFncyYyNTUpIT09VUspe3QubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsaS5tb2RlPSRuO2JyZWFrfWlmKGkuZmxhZ3MmNTczNDQpe3QubXNnPSJ1bmtub3duIGhlYWRlciBmbGFncyBzZXQiLGkubW9kZT0kbjticmVha31pLmhlYWQmJihpLmhlYWQudGV4dD1BPj44JjEpLGkuZmxhZ3MmNTEyJiZpLndyYXAmNCYmKGtbMF09QSYyNTUsa1sxXT1BPj4+OCYyNTUsaS5jaGVjaz1VQShpLmNoZWNrLGssMiwwKSksQT0wLGQ9MCxpLm1vZGU9a0s7Y2FzZSBrSzpmb3IoO2Q8MzI7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pLmhlYWQmJihpLmhlYWQudGltZT1BKSxpLmZsYWdzJjUxMiYmaS53cmFwJjQmJihrWzBdPUEmMjU1LGtbMV09QT4+PjgmMjU1LGtbMl09QT4+PjE2JjI1NSxrWzNdPUE+Pj4yNCYyNTUsaS5jaGVjaz1VQShpLmNoZWNrLGssNCwwKSksQT0wLGQ9MCxpLm1vZGU9TEs7Y2FzZSBMSzpmb3IoO2Q8MTY7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pLmhlYWQmJihpLmhlYWQueGZsYWdzPUEmMjU1LGkuaGVhZC5vcz1BPj44KSxpLmZsYWdzJjUxMiYmaS53cmFwJjQmJihrWzBdPUEmMjU1LGtbMV09QT4+PjgmMjU1LGkuY2hlY2s9VUEoaS5jaGVjayxrLDIsMCkpLEE9MCxkPTAsaS5tb2RlPXlLO2Nhc2UgeUs6aWYoaS5mbGFncyYxMDI0KXtmb3IoO2Q8MTY7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pLmxlbmd0aD1BLGkuaGVhZCYmKGkuaGVhZC5leHRyYV9sZW49QSksaS5mbGFncyY1MTImJmkud3JhcCY0JiYoa1swXT1BJjI1NSxrWzFdPUE+Pj44JjI1NSxpLmNoZWNrPVVBKGkuY2hlY2ssaywyLDApKSxBPTAsZD0wfWVsc2UgaS5oZWFkJiYoaS5oZWFkLmV4dHJhPW51bGwpO2kubW9kZT13SztjYXNlIHdLOmlmKGkuZmxhZ3MmMTAyNCYmKF89aS5sZW5ndGgsXz5hJiYoXz1hKSxfJiYoaS5oZWFkJiYoUT1pLmhlYWQuZXh0cmFfbGVuLWkubGVuZ3RoLGkuaGVhZC5leHRyYXx8KGkuaGVhZC5leHRyYT1uZXcgVWludDhBcnJheShpLmhlYWQuZXh0cmFfbGVuKSksaS5oZWFkLmV4dHJhLnNldChuLnN1YmFycmF5KG8sbytfKSxRKSksaS5mbGFncyY1MTImJmkud3JhcCY0JiYoaS5jaGVjaz1VQShpLmNoZWNrLG4sXyxvKSksYS09XyxvKz1fLGkubGVuZ3RoLT1fKSxpLmxlbmd0aCkpYnJlYWsgdDtpLmxlbmd0aD0wLGkubW9kZT14SztjYXNlIHhLOmlmKGkuZmxhZ3MmMjA0OCl7aWYoYT09PTApYnJlYWsgdDtfPTA7ZG8gUT1uW28rXysrXSxpLmhlYWQmJlEmJmkubGVuZ3RoPDY1NTM2JiYoaS5oZWFkLm5hbWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoUSkpO3doaWxlKFEmJl88YSk7aWYoaS5mbGFncyY1MTImJmkud3JhcCY0JiYoaS5jaGVjaz1VQShpLmNoZWNrLG4sXyxvKSksYS09XyxvKz1fLFEpYnJlYWsgdH1lbHNlIGkuaGVhZCYmKGkuaGVhZC5uYW1lPW51bGwpO2kubGVuZ3RoPTAsaS5tb2RlPVBLO2Nhc2UgUEs6aWYoaS5mbGFncyY0MDk2KXtpZihhPT09MClicmVhayB0O189MDtkbyBRPW5bbytfKytdLGkuaGVhZCYmUSYmaS5sZW5ndGg8NjU1MzYmJihpLmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZShRKSk7d2hpbGUoUSYmXzxhKTtpZihpLmZsYWdzJjUxMiYmaS53cmFwJjQmJihpLmNoZWNrPVVBKGkuY2hlY2ssbixfLG8pKSxhLT1fLG8rPV8sUSlicmVhayB0fWVsc2UgaS5oZWFkJiYoaS5oZWFkLmNvbW1lbnQ9bnVsbCk7aS5tb2RlPUpLO2Nhc2UgSks6aWYoaS5mbGFncyY1MTIpe2Zvcig7ZDwxNjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKGkud3JhcCY0JiZBIT09KGkuY2hlY2smNjU1MzUpKXt0Lm1zZz0iaGVhZGVyIGNyYyBtaXNtYXRjaCIsaS5tb2RlPSRuO2JyZWFrfUE9MCxkPTB9aS5oZWFkJiYoaS5oZWFkLmhjcmM9aS5mbGFncz4+OSYxLGkuaGVhZC5kb25lPSEwKSx0LmFkbGVyPWkuY2hlY2s9MCxpLm1vZGU9Qmg7YnJlYWs7Y2FzZSBqSzpmb3IoO2Q8MzI7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH10LmFkbGVyPWkuY2hlY2s9b1goQSksQT0wLGQ9MCxpLm1vZGU9UWc7Y2FzZSBRZzppZihpLmhhdmVkaWN0PT09MClyZXR1cm4gdC5uZXh0X291dD1yLHQuYXZhaWxfb3V0PWgsdC5uZXh0X2luPW8sdC5hdmFpbF9pbj1hLGkuaG9sZD1BLGkuYml0cz1kLGNSdDt0LmFkbGVyPWkuY2hlY2s9MSxpLm1vZGU9Qmg7Y2FzZSBCaDppZihlPT09QVJ0fHxlPT09RGcpYnJlYWsgdDtjYXNlIG9COmlmKGkubGFzdCl7QT4+Pj1kJjcsZC09ZCY3LGkubW9kZT1hQjticmVha31mb3IoO2Q8Mzspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fXN3aXRjaChpLmxhc3Q9QSYxLEE+Pj49MSxkLT0xLEEmMyl7Y2FzZSAwOmkubW9kZT1ISzticmVhaztjYXNlIDE6aWYoWlJ0KGkpLGkubW9kZT1NZyxlPT09RGcpe0E+Pj49MixkLT0yO2JyZWFrIHR9YnJlYWs7Y2FzZSAyOmkubW9kZT16SzticmVhaztjYXNlIDM6dC5tc2c9ImludmFsaWQgYmxvY2sgdHlwZSIsaS5tb2RlPSRufUE+Pj49MixkLT0yO2JyZWFrO2Nhc2UgSEs6Zm9yKEE+Pj49ZCY3LGQtPWQmNztkPDMyOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoKEEmNjU1MzUpIT09KEE+Pj4xNl42NTUzNSkpe3QubXNnPSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIixpLm1vZGU9JG47YnJlYWt9aWYoaS5sZW5ndGg9QSY2NTUzNSxBPTAsZD0wLGkubW9kZT1yQixlPT09RGcpYnJlYWsgdDtjYXNlIHJCOmkubW9kZT12SztjYXNlIHZLOmlmKF89aS5sZW5ndGgsXyl7aWYoXz5hJiYoXz1hKSxfPmgmJihfPWgpLF89PT0wKWJyZWFrIHQ7cy5zZXQobi5zdWJhcnJheShvLG8rXyksciksYS09XyxvKz1fLGgtPV8scis9XyxpLmxlbmd0aC09XzticmVha31pLm1vZGU9Qmg7YnJlYWs7Y2FzZSB6Szpmb3IoO2Q8MTQ7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pZihpLm5sZW49KEEmMzEpKzI1NyxBPj4+PTUsZC09NSxpLm5kaXN0PShBJjMxKSsxLEE+Pj49NSxkLT01LGkubmNvZGU9KEEmMTUpKzQsQT4+Pj00LGQtPTQsaS5ubGVuPjI4Nnx8aS5uZGlzdD4zMCl7dC5tc2c9InRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzIixpLm1vZGU9JG47YnJlYWt9aS5oYXZlPTAsaS5tb2RlPUtLO2Nhc2UgS0s6Zm9yKDtpLmhhdmU8aS5uY29kZTspe2Zvcig7ZDwzOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aS5sZW5zW2dbaS5oYXZlKytdXT1BJjcsQT4+Pj0zLGQtPTN9Zm9yKDtpLmhhdmU8MTk7KWkubGVuc1tnW2kuaGF2ZSsrXV09MDtpZihpLmxlbmNvZGU9aS5sZW5keW4saS5sZW5iaXRzPTcseT17Yml0czppLmxlbmJpdHN9LFU9TFIoYVJ0LGkubGVucywwLDE5LGkubGVuY29kZSwwLGkud29yayx5KSxpLmxlbmJpdHM9eS5iaXRzLFUpe3QubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLGkubW9kZT0kbjticmVha31pLmhhdmU9MCxpLm1vZGU9WEs7Y2FzZSBYSzpmb3IoO2kuaGF2ZTxpLm5sZW4raS5uZGlzdDspe2Zvcig7Qz1pLmxlbmNvZGVbQSYoMTw8aS5sZW5iaXRzKS0xXSxOPUM+Pj4yNCxUPUM+Pj4xNiYyNTUsRj1DJjY1NTM1LCEoTjw9ZCk7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pZihGPDE2KUE+Pj49TixkLT1OLGkubGVuc1tpLmhhdmUrK109RjtlbHNle2lmKEY9PT0xNil7Zm9yKGM9TisyO2Q8Yzspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKEE+Pj49TixkLT1OLGkuaGF2ZT09PTApe3QubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixpLm1vZGU9JG47YnJlYWt9UT1pLmxlbnNbaS5oYXZlLTFdLF89MysoQSYzKSxBPj4+PTIsZC09Mn1lbHNlIGlmKEY9PT0xNyl7Zm9yKGM9TiszO2Q8Yzspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fUE+Pj49TixkLT1OLFE9MCxfPTMrKEEmNyksQT4+Pj0zLGQtPTN9ZWxzZXtmb3IoYz1OKzc7ZDxjOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9QT4+Pj1OLGQtPU4sUT0wLF89MTErKEEmMTI3KSxBPj4+PTcsZC09N31pZihpLmhhdmUrXz5pLm5sZW4raS5uZGlzdCl7dC5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLGkubW9kZT0kbjticmVha31mb3IoO18tLTspaS5sZW5zW2kuaGF2ZSsrXT1RfX1pZihpLm1vZGU9PT0kbilicmVhaztpZihpLmxlbnNbMjU2XT09PTApe3QubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siLGkubW9kZT0kbjticmVha31pZihpLmxlbmJpdHM9OSx5PXtiaXRzOmkubGVuYml0c30sVT1MUihhWCxpLmxlbnMsMCxpLm5sZW4saS5sZW5jb2RlLDAsaS53b3JrLHkpLGkubGVuYml0cz15LmJpdHMsVSl7dC5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsaS5tb2RlPSRuO2JyZWFrfWlmKGkuZGlzdGJpdHM9NixpLmRpc3Rjb2RlPWkuZGlzdGR5bix5PXtiaXRzOmkuZGlzdGJpdHN9LFU9TFIoQVgsaS5sZW5zLGkubmxlbixpLm5kaXN0LGkuZGlzdGNvZGUsMCxpLndvcmsseSksaS5kaXN0Yml0cz15LmJpdHMsVSl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsaS5tb2RlPSRuO2JyZWFrfWlmKGkubW9kZT1NZyxlPT09RGcpYnJlYWsgdDtjYXNlIE1nOmkubW9kZT1VZztjYXNlIFVnOmlmKGE+PTYmJmg+PTI1OCl7dC5uZXh0X291dD1yLHQuYXZhaWxfb3V0PWgsdC5uZXh0X2luPW8sdC5hdmFpbF9pbj1hLGkuaG9sZD1BLGkuYml0cz1kLHJSdCh0LEUpLHI9dC5uZXh0X291dCxzPXQub3V0cHV0LGg9dC5hdmFpbF9vdXQsbz10Lm5leHRfaW4sbj10LmlucHV0LGE9dC5hdmFpbF9pbixBPWkuaG9sZCxkPWkuYml0cyxpLm1vZGU9PT1CaCYmKGkuYmFjaz0tMSk7YnJlYWt9Zm9yKGkuYmFjaz0wO0M9aS5sZW5jb2RlW0EmKDE8PGkubGVuYml0cyktMV0sTj1DPj4+MjQsVD1DPj4+MTYmMjU1LEY9QyY2NTUzNSwhKE48PWQpOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoVCYmIShUJjI0MCkpe2ZvcihiPU4sRz1ULE09RjtDPWkubGVuY29kZVtNKygoQSYoMTw8YitHKS0xKT4+YildLE49Qz4+PjI0LFQ9Qz4+PjE2JjI1NSxGPUMmNjU1MzUsIShiK048PWQpOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9QT4+Pj1iLGQtPWIsaS5iYWNrKz1ifWlmKEE+Pj49TixkLT1OLGkuYmFjays9TixpLmxlbmd0aD1GLFQ9PT0wKXtpLm1vZGU9aVg7YnJlYWt9aWYoVCYzMil7aS5iYWNrPS0xLGkubW9kZT1CaDticmVha31pZihUJjY0KXt0Lm1zZz0iaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlIixpLm1vZGU9JG47YnJlYWt9aS5leHRyYT1UJjE1LGkubW9kZT1xSztjYXNlIHFLOmlmKGkuZXh0cmEpe2ZvcihjPWkuZXh0cmE7ZDxjOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aS5sZW5ndGgrPUEmKDE8PGkuZXh0cmEpLTEsQT4+Pj1pLmV4dHJhLGQtPWkuZXh0cmEsaS5iYWNrKz1pLmV4dHJhfWkud2FzPWkubGVuZ3RoLGkubW9kZT0kSztjYXNlICRLOmZvcig7Qz1pLmRpc3Rjb2RlW0EmKDE8PGkuZGlzdGJpdHMpLTFdLE49Qz4+PjI0LFQ9Qz4+PjE2JjI1NSxGPUMmNjU1MzUsIShOPD1kKTspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKCEoVCYyNDApKXtmb3IoYj1OLEc9VCxNPUY7Qz1pLmRpc3Rjb2RlW00rKChBJigxPDxiK0cpLTEpPj5iKV0sTj1DPj4+MjQsVD1DPj4+MTYmMjU1LEY9QyY2NTUzNSwhKGIrTjw9ZCk7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1BPj4+PWIsZC09YixpLmJhY2srPWJ9aWYoQT4+Pj1OLGQtPU4saS5iYWNrKz1OLFQmNjQpe3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlIGNvZGUiLGkubW9kZT0kbjticmVha31pLm9mZnNldD1GLGkuZXh0cmE9VCYxNSxpLm1vZGU9dFg7Y2FzZSB0WDppZihpLmV4dHJhKXtmb3IoYz1pLmV4dHJhO2Q8Yzspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWkub2Zmc2V0Kz1BJigxPDxpLmV4dHJhKS0xLEE+Pj49aS5leHRyYSxkLT1pLmV4dHJhLGkuYmFjays9aS5leHRyYX1pZihpLm9mZnNldD5pLmRtYXgpe3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsaS5tb2RlPSRuO2JyZWFrfWkubW9kZT1lWDtjYXNlIGVYOmlmKGg9PT0wKWJyZWFrIHQ7aWYoXz1FLWgsaS5vZmZzZXQ+Xyl7aWYoXz1pLm9mZnNldC1fLF8+aS53aGF2ZSYmaS5zYW5lKXt0Lm1zZz0iaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2siLGkubW9kZT0kbjticmVha31fPmkud25leHQ/KF8tPWkud25leHQsUj1pLndzaXplLV8pOlI9aS53bmV4dC1fLF8+aS5sZW5ndGgmJihfPWkubGVuZ3RoKSxJPWkud2luZG93fWVsc2UgST1zLFI9ci1pLm9mZnNldCxfPWkubGVuZ3RoO18+aCYmKF89aCksaC09XyxpLmxlbmd0aC09XztkbyBzW3IrK109SVtSKytdO3doaWxlKC0tXyk7aS5sZW5ndGg9PT0wJiYoaS5tb2RlPVVnKTticmVhaztjYXNlIGlYOmlmKGg9PT0wKWJyZWFrIHQ7c1tyKytdPWkubGVuZ3RoLGgtLSxpLm1vZGU9VWc7YnJlYWs7Y2FzZSBhQjppZihpLndyYXApe2Zvcig7ZDwzMjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEF8PW5bbysrXTw8ZCxkKz04fWlmKEUtPWgsdC50b3RhbF9vdXQrPUUsaS50b3RhbCs9RSxpLndyYXAmNCYmRSYmKHQuYWRsZXI9aS5jaGVjaz1pLmZsYWdzP1VBKGkuY2hlY2sscyxFLHItRSk6Y0IoaS5jaGVjayxzLEUsci1FKSksRT1oLGkud3JhcCY0JiYoaS5mbGFncz9BOm9YKEEpKSE9PWkuY2hlY2spe3QubXNnPSJpbmNvcnJlY3QgZGF0YSBjaGVjayIsaS5tb2RlPSRuO2JyZWFrfUE9MCxkPTB9aS5tb2RlPW5YO2Nhc2Ugblg6aWYoaS53cmFwJiZpLmZsYWdzKXtmb3IoO2Q8MzI7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pZihpLndyYXAmNCYmQSE9PShpLnRvdGFsJjQyOTQ5NjcyOTUpKXt0Lm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIsaS5tb2RlPSRuO2JyZWFrfUE9MCxkPTB9aS5tb2RlPXNYO2Nhc2Ugc1g6VT1oUnQ7YnJlYWsgdDtjYXNlICRuOlU9aFg7YnJlYWsgdDtjYXNlIGRCOnJldHVybiBsQjtjYXNlIGNYOmRlZmF1bHQ6cmV0dXJuIHJhfXJldHVybiB0Lm5leHRfb3V0PXIsdC5hdmFpbF9vdXQ9aCx0Lm5leHRfaW49byx0LmF2YWlsX2luPWEsaS5ob2xkPUEsaS5iaXRzPWQsKGkud3NpemV8fEUhPT10LmF2YWlsX291dCYmaS5tb2RlPCRuJiYoaS5tb2RlPGFCfHxlIT09TUspKSYmRVgodCx0Lm91dHB1dCx0Lm5leHRfb3V0LEUtdC5hdmFpbF9vdXQpPyhpLm1vZGU9ZEIsbEIpOihmLT10LmF2YWlsX2luLEUtPXQuYXZhaWxfb3V0LHQudG90YWxfaW4rPWYsdC50b3RhbF9vdXQrPUUsaS50b3RhbCs9RSxpLndyYXAmNCYmRSYmKHQuYWRsZXI9aS5jaGVjaz1pLmZsYWdzP1VBKGkuY2hlY2sscyxFLHQubmV4dF9vdXQtRSk6Y0IoaS5jaGVjayxzLEUsdC5uZXh0X291dC1FKSksdC5kYXRhX3R5cGU9aS5iaXRzKyhpLmxhc3Q/NjQ6MCkrKGkubW9kZT09PUJoPzEyODowKSsoaS5tb2RlPT09TWd8fGkubW9kZT09PXJCPzI1NjowKSwoZj09PTAmJkU9PT0wfHxlPT09TUspJiZVPT09TmQmJihVPWxSdCksVSl9LHBSdD10PT57aWYoYmQodCkpcmV0dXJuIHJhO2xldCBlPXQuc3RhdGU7cmV0dXJuIGUud2luZG93JiYoZS53aW5kb3c9bnVsbCksdC5zdGF0ZT1udWxsLE5kfSx1UnQ9KHQsZSk9PntpZihiZCh0KSlyZXR1cm4gcmE7bGV0IGk9dC5zdGF0ZTtyZXR1cm4gaS53cmFwJjI/KGkuaGVhZD1lLGUuZG9uZT0hMSxOZCk6cmF9LENSdD0odCxlKT0+e2xldCBpPWUubGVuZ3RoLG4scyxvO3JldHVybiBiZCh0KXx8KG49dC5zdGF0ZSxuLndyYXAhPT0wJiZuLm1vZGUhPT1RZyk/cmE6bi5tb2RlPT09UWcmJihzPTEscz1jQihzLGUsaSwwKSxzIT09bi5jaGVjayk/aFg6KG89RVgodCxlLGksaSksbz8obi5tb2RlPWRCLGxCKToobi5oYXZlZGljdD0xLE5kKSl9O3ZhLmV4cG9ydHMuaW5mbGF0ZVJlc2V0PWRYO3ZhLmV4cG9ydHMuaW5mbGF0ZVJlc2V0Mj1tWDt2YS5leHBvcnRzLmluZmxhdGVSZXNldEtlZXA9bFg7dmEuZXhwb3J0cy5pbmZsYXRlSW5pdD1SUnQ7dmEuZXhwb3J0cy5pbmZsYXRlSW5pdDI9Zlg7dmEuZXhwb3J0cy5pbmZsYXRlPUlSdDt2YS5leHBvcnRzLmluZmxhdGVFbmQ9cFJ0O3ZhLmV4cG9ydHMuaW5mbGF0ZUdldEhlYWRlcj11UnQ7dmEuZXhwb3J0cy5pbmZsYXRlU2V0RGljdGlvbmFyeT1DUnQ7dmEuZXhwb3J0cy5pbmZsYXRlSW5mbz0icGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9KTt2YXIgUlg9dHMoKFBPZSxtQik9PnsidXNlIHN0cmljdCI7dmFyIGdSdD0odCxlKT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSk7bUIuZXhwb3J0cy5hc3NpZ249ZnVuY3Rpb24odCl7bGV0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Zvcig7ZS5sZW5ndGg7KXtsZXQgaT1lLnNoaWZ0KCk7aWYoaSl7aWYodHlwZW9mIGkhPSJvYmplY3QiKXRocm93IG5ldyBUeXBlRXJyb3IoaSsibXVzdCBiZSBub24tb2JqZWN0Iik7Zm9yKGxldCBuIGluIGkpZ1J0KGksbikmJih0W25dPWlbbl0pfX1yZXR1cm4gdH07bUIuZXhwb3J0cy5mbGF0dGVuQ2h1bmtzPXQ9PntsZXQgZT0wO2ZvcihsZXQgbj0wLHM9dC5sZW5ndGg7bjxzO24rKyllKz10W25dLmxlbmd0aDtsZXQgaT1uZXcgVWludDhBcnJheShlKTtmb3IobGV0IG49MCxzPTAsbz10Lmxlbmd0aDtuPG87bisrKXtsZXQgcj10W25dO2kuc2V0KHIscykscys9ci5sZW5ndGh9cmV0dXJuIGl9fSk7dmFyIElYPXRzKChKT2UsTGcpPT57InVzZSBzdHJpY3QiO3ZhciBaWD0hMDt0cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDEpKX1jYXRjaHtaWD0hMX12YXIgeVI9bmV3IFVpbnQ4QXJyYXkoMjU2KTtmb3IobGV0IHQ9MDt0PDI1Njt0KyspeVJbdF09dD49MjUyPzY6dD49MjQ4PzU6dD49MjQwPzQ6dD49MjI0PzM6dD49MTkyPzI6MTt5UlsyNTRdPXlSWzI1NF09MTtMZy5leHBvcnRzLnN0cmluZzJidWY9dD0+e2lmKHR5cGVvZiBUZXh0RW5jb2Rlcj09ImZ1bmN0aW9uIiYmVGV4dEVuY29kZXIucHJvdG90eXBlLmVuY29kZSlyZXR1cm4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHQpO2xldCBlLGksbixzLG8scj10Lmxlbmd0aCxhPTA7Zm9yKHM9MDtzPHI7cysrKWk9dC5jaGFyQ29kZUF0KHMpLChpJjY0NTEyKT09PTU1Mjk2JiZzKzE8ciYmKG49dC5jaGFyQ29kZUF0KHMrMSksKG4mNjQ1MTIpPT09NTYzMjAmJihpPTY1NTM2KyhpLTU1Mjk2PDwxMCkrKG4tNTYzMjApLHMrKykpLGErPWk8MTI4PzE6aTwyMDQ4PzI6aTw2NTUzNj8zOjQ7Zm9yKGU9bmV3IFVpbnQ4QXJyYXkoYSksbz0wLHM9MDtvPGE7cysrKWk9dC5jaGFyQ29kZUF0KHMpLChpJjY0NTEyKT09PTU1Mjk2JiZzKzE8ciYmKG49dC5jaGFyQ29kZUF0KHMrMSksKG4mNjQ1MTIpPT09NTYzMjAmJihpPTY1NTM2KyhpLTU1Mjk2PDwxMCkrKG4tNTYzMjApLHMrKykpLGk8MTI4P2VbbysrXT1pOmk8MjA0OD8oZVtvKytdPTE5MnxpPj4+NixlW28rK109MTI4fGkmNjMpOmk8NjU1MzY/KGVbbysrXT0yMjR8aT4+PjEyLGVbbysrXT0xMjh8aT4+PjYmNjMsZVtvKytdPTEyOHxpJjYzKTooZVtvKytdPTI0MHxpPj4+MTgsZVtvKytdPTEyOHxpPj4+MTImNjMsZVtvKytdPTEyOHxpPj4+NiY2MyxlW28rK109MTI4fGkmNjMpO3JldHVybiBlfTt2YXIgVFJ0PSh0LGUpPT57aWYoZTw2NTUzNCYmdC5zdWJhcnJheSYmWlgpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0Lmxlbmd0aD09PWU/dDp0LnN1YmFycmF5KDAsZSkpO2xldCBpPSIiO2ZvcihsZXQgbj0wO248ZTtuKyspaSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W25dKTtyZXR1cm4gaX07TGcuZXhwb3J0cy5idWYyc3RyaW5nPSh0LGUpPT57bGV0IGk9ZXx8dC5sZW5ndGg7aWYodHlwZW9mIFRleHREZWNvZGVyPT0iZnVuY3Rpb24iJiZUZXh0RGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlKXJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodC5zdWJhcnJheSgwLGUpKTtsZXQgbixzLG89bmV3IEFycmF5KGkqMik7Zm9yKHM9MCxuPTA7bjxpOyl7bGV0IHI9dFtuKytdO2lmKHI8MTI4KXtvW3MrK109cjtjb250aW51ZX1sZXQgYT15UltyXTtpZihhPjQpe29bcysrXT02NTUzMyxuKz1hLTE7Y29udGludWV9Zm9yKHImPWE9PT0yPzMxOmE9PT0zPzE1Ojc7YT4xJiZuPGk7KXI9cjw8Nnx0W24rK10mNjMsYS0tO2lmKGE+MSl7b1tzKytdPTY1NTMzO2NvbnRpbnVlfXI8NjU1MzY/b1tzKytdPXI6KHItPTY1NTM2LG9bcysrXT01NTI5NnxyPj4xMCYxMDIzLG9bcysrXT01NjMyMHxyJjEwMjMpfXJldHVybiBUUnQobyxzKX07TGcuZXhwb3J0cy51dGY4Ym9yZGVyPSh0LGUpPT57ZT1lfHx0Lmxlbmd0aCxlPnQubGVuZ3RoJiYoZT10Lmxlbmd0aCk7bGV0IGk9ZS0xO2Zvcig7aT49MCYmKHRbaV0mMTkyKT09PTEyODspaS0tO3JldHVybiBpPDB8fGk9PT0wP2U6aSt5Ult0W2ldXT5lP2k6ZX19KTt2YXIgdVg9dHMoKGpPZSxwWCk9PnsidXNlIHN0cmljdCI7cFguZXhwb3J0cz17MjoibmVlZCBkaWN0aW9uYXJ5IiwxOiJzdHJlYW0gZW5kIiwwOiIiLCItMSI6ImZpbGUgZXJyb3IiLCItMiI6InN0cmVhbSBlcnJvciIsIi0zIjoiZGF0YSBlcnJvciIsIi00IjoiaW5zdWZmaWNpZW50IG1lbW9yeSIsIi01IjoiYnVmZmVyIGVycm9yIiwiLTYiOiJpbmNvbXBhdGlibGUgdmVyc2lvbiJ9fSk7dmFyIGdYPXRzKChIT2UsQ1gpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIE5SdCgpe3RoaXMuaW5wdXQ9bnVsbCx0aGlzLm5leHRfaW49MCx0aGlzLmF2YWlsX2luPTAsdGhpcy50b3RhbF9pbj0wLHRoaXMub3V0cHV0PW51bGwsdGhpcy5uZXh0X291dD0wLHRoaXMuYXZhaWxfb3V0PTAsdGhpcy50b3RhbF9vdXQ9MCx0aGlzLm1zZz0iIix0aGlzLnN0YXRlPW51bGwsdGhpcy5kYXRhX3R5cGU9Mix0aGlzLmFkbGVyPTB9Q1guZXhwb3J0cz1OUnR9KTt2YXIgTlg9dHMoKHZPZSxUWCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYlJ0KCl7dGhpcy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPSIiLHRoaXMuY29tbWVudD0iIix0aGlzLmhjcmM9MCx0aGlzLmRvbmU9ITF9VFguZXhwb3J0cz1iUnR9KTt2YXIgU1g9dHMoKHpPZSxxZik9PnsidXNlIHN0cmljdCI7dmFyIFdoPV9YKCksRlg9UlgoKSxfQj1JWCgpLFJCPXVYKCksRlJ0PWdYKCksWVJ0PU5YKCksWVg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyx7Wl9OT19GTFVTSDpTUnQsWl9GSU5JU0g6T1J0LFpfT0s6d1IsWl9TVFJFQU1fRU5EOmZCLFpfTkVFRF9ESUNUOkVCLFpfU1RSRUFNX0VSUk9SOlZSdCxaX0RBVEFfRVJST1I6YlgsWl9NRU1fRVJST1I6R1J0fT1XZygpO2Z1bmN0aW9uIHhSKHQpe3RoaXMub3B0aW9ucz1GWC5hc3NpZ24oe2NodW5rU2l6ZToxMDI0KjY0LHdpbmRvd0JpdHM6MTUsdG86IiJ9LHR8fHt9KTtsZXQgZT10aGlzLm9wdGlvbnM7ZS5yYXcmJmUud2luZG93Qml0cz49MCYmZS53aW5kb3dCaXRzPDE2JiYoZS53aW5kb3dCaXRzPS1lLndpbmRvd0JpdHMsZS53aW5kb3dCaXRzPT09MCYmKGUud2luZG93Qml0cz0tMTUpKSxlLndpbmRvd0JpdHM+PTAmJmUud2luZG93Qml0czwxNiYmISh0JiZ0LndpbmRvd0JpdHMpJiYoZS53aW5kb3dCaXRzKz0zMiksZS53aW5kb3dCaXRzPjE1JiZlLndpbmRvd0JpdHM8NDgmJihlLndpbmRvd0JpdHMmMTV8fChlLndpbmRvd0JpdHN8PTE1KSksdGhpcy5lcnI9MCx0aGlzLm1zZz0iIix0aGlzLmVuZGVkPSExLHRoaXMuY2h1bmtzPVtdLHRoaXMuc3RybT1uZXcgRlJ0LHRoaXMuc3RybS5hdmFpbF9vdXQ9MDtsZXQgaT1XaC5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLGUud2luZG93Qml0cyk7aWYoaSE9PXdSKXRocm93IG5ldyBFcnJvcihSQltpXSk7aWYodGhpcy5oZWFkZXI9bmV3IFlSdCxXaC5pbmZsYXRlR2V0SGVhZGVyKHRoaXMuc3RybSx0aGlzLmhlYWRlciksZS5kaWN0aW9uYXJ5JiYodHlwZW9mIGUuZGljdGlvbmFyeT09InN0cmluZyI/ZS5kaWN0aW9uYXJ5PV9CLnN0cmluZzJidWYoZS5kaWN0aW9uYXJ5KTpZWC5jYWxsKGUuZGljdGlvbmFyeSk9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iJiYoZS5kaWN0aW9uYXJ5PW5ldyBVaW50OEFycmF5KGUuZGljdGlvbmFyeSkpLGUucmF3JiYoaT1XaC5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sZS5kaWN0aW9uYXJ5KSxpIT09d1IpKSl0aHJvdyBuZXcgRXJyb3IoUkJbaV0pfXhSLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7bGV0IGk9dGhpcy5zdHJtLG49dGhpcy5vcHRpb25zLmNodW5rU2l6ZSxzPXRoaXMub3B0aW9ucy5kaWN0aW9uYXJ5LG8scixhO2lmKHRoaXMuZW5kZWQpcmV0dXJuITE7Zm9yKGU9PT1+fmU/cj1lOnI9ZT09PSEwP09SdDpTUnQsWVguY2FsbCh0KT09PSJbb2JqZWN0IEFycmF5QnVmZmVyXSI/aS5pbnB1dD1uZXcgVWludDhBcnJheSh0KTppLmlucHV0PXQsaS5uZXh0X2luPTAsaS5hdmFpbF9pbj1pLmlucHV0Lmxlbmd0aDs7KXtmb3IoaS5hdmFpbF9vdXQ9PT0wJiYoaS5vdXRwdXQ9bmV3IFVpbnQ4QXJyYXkobiksaS5uZXh0X291dD0wLGkuYXZhaWxfb3V0PW4pLG89V2guaW5mbGF0ZShpLHIpLG89PT1FQiYmcyYmKG89V2guaW5mbGF0ZVNldERpY3Rpb25hcnkoaSxzKSxvPT09d1I/bz1XaC5pbmZsYXRlKGkscik6bz09PWJYJiYobz1FQikpO2kuYXZhaWxfaW4+MCYmbz09PWZCJiZpLnN0YXRlLndyYXA+MCYmdFtpLm5leHRfaW5dIT09MDspV2guaW5mbGF0ZVJlc2V0KGkpLG89V2guaW5mbGF0ZShpLHIpO3N3aXRjaChvKXtjYXNlIFZSdDpjYXNlIGJYOmNhc2UgRUI6Y2FzZSBHUnQ6cmV0dXJuIHRoaXMub25FbmQobyksdGhpcy5lbmRlZD0hMCwhMX1pZihhPWkuYXZhaWxfb3V0LGkubmV4dF9vdXQmJihpLmF2YWlsX291dD09PTB8fG89PT1mQikpaWYodGhpcy5vcHRpb25zLnRvPT09InN0cmluZyIpe2xldCBoPV9CLnV0Zjhib3JkZXIoaS5vdXRwdXQsaS5uZXh0X291dCksQT1pLm5leHRfb3V0LWgsZD1fQi5idWYyc3RyaW5nKGkub3V0cHV0LGgpO2kubmV4dF9vdXQ9QSxpLmF2YWlsX291dD1uLUEsQSYmaS5vdXRwdXQuc2V0KGkub3V0cHV0LnN1YmFycmF5KGgsaCtBKSwwKSx0aGlzLm9uRGF0YShkKX1lbHNlIHRoaXMub25EYXRhKGkub3V0cHV0Lmxlbmd0aD09PWkubmV4dF9vdXQ/aS5vdXRwdXQ6aS5vdXRwdXQuc3ViYXJyYXkoMCxpLm5leHRfb3V0KSk7aWYoIShvPT09d1ImJmE9PT0wKSl7aWYobz09PWZCKXJldHVybiBvPVdoLmluZmxhdGVFbmQodGhpcy5zdHJtKSx0aGlzLm9uRW5kKG8pLHRoaXMuZW5kZWQ9ITAsITA7aWYoaS5hdmFpbF9pbj09PTApYnJlYWt9fXJldHVybiEwfTt4Ui5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKHQpe3RoaXMuY2h1bmtzLnB1c2godCl9O3hSLnByb3RvdHlwZS5vbkVuZD1mdW5jdGlvbih0KXt0PT09d1ImJih0aGlzLm9wdGlvbnMudG89PT0ic3RyaW5nIj90aGlzLnJlc3VsdD10aGlzLmNodW5rcy5qb2luKCIiKTp0aGlzLnJlc3VsdD1GWC5mbGF0dGVuQ2h1bmtzKHRoaXMuY2h1bmtzKSksdGhpcy5jaHVua3M9W10sdGhpcy5lcnI9dCx0aGlzLm1zZz10aGlzLnN0cm0ubXNnfTtmdW5jdGlvbiBaQih0LGUpe2xldCBpPW5ldyB4UihlKTtpZihpLnB1c2godCksaS5lcnIpdGhyb3cgaS5tc2d8fFJCW2kuZXJyXTtyZXR1cm4gaS5yZXN1bHR9ZnVuY3Rpb24gQlJ0KHQsZSl7cmV0dXJuIGU9ZXx8e30sZS5yYXc9ITAsWkIodCxlKX1xZi5leHBvcnRzLkluZmxhdGU9eFI7cWYuZXhwb3J0cy5pbmZsYXRlPVpCO3FmLmV4cG9ydHMuaW5mbGF0ZVJhdz1CUnQ7cWYuZXhwb3J0cy51bmd6aXA9WkI7cWYuZXhwb3J0cy5jb25zdGFudHM9V2coKX0pO3ZhciBJQj17fTtIZShJQix7ZGVmYXVsdDooKT0+d1J0fSk7ZnVuY3Rpb24gV1J0KHQsZSl7bGV0IGk9emMuZnJvbVN0cmluZyh0LnR5cGUpLG49dC5idWZmZXI7dUsodC5rZXksbik7bGV0IHM9eVJ0KG4pO249cy5idWZmZXI7bGV0IG89cy5sZW5ndGg7c3dpdGNoKGkpe2Nhc2UgemMuTUVUQURBVEE6cmV0dXJuIE1SdChuLG8sdC5xdWFkS2V5KTtjYXNlIHpjLlRFUlJBSU46cmV0dXJuIGtSdChuLG8sZSk7Y2FzZSB6Yy5EQlJPT1Q6cmV0dXJuIGUucHVzaChuKSx7YnVmZmVyOm59fX1mdW5jdGlvbiBNUnQodCxlLGkpe2xldCBuPW5ldyBEYXRhVmlldyh0KSxzPTAsbz1uLmdldFVpbnQzMihzLCEwKTtpZihzKz10RSxvIT09RFJ0KXRocm93IG5ldyBrZSgiSW52YWxpZCBtYWdpYyIpO2xldCByPW4uZ2V0VWludDMyKHMsITApO2lmKHMrPXRFLHIhPT0xKXRocm93IG5ldyBrZSgiSW52YWxpZCBkYXRhIHR5cGUuIE11c3QgYmUgMSBmb3IgUXVhZFRyZWVQYWNrZXQiKTtsZXQgYT1uLmdldFVpbnQzMihzLCEwKTtpZihzKz10RSxhIT09Mil0aHJvdyBuZXcga2UoIkludmFsaWQgUXVhZFRyZWVQYWNrZXQgdmVyc2lvbi4gT25seSB2ZXJzaW9uIDIgaXMgc3VwcG9ydGVkLiIpO2xldCBoPW4uZ2V0SW50MzIocywhMCk7cys9RmQ7bGV0IEE9bi5nZXRJbnQzMihzLCEwKTtpZihzKz1GZCxBIT09MzIpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIGluc3RhbmNlIHNpemUuIik7bGV0IGQ9bi5nZXRJbnQzMihzLCEwKTtzKz1GZDtsZXQgZj1uLmdldEludDMyKHMsITApO3MrPUZkO2xldCBFPW4uZ2V0SW50MzIocywhMCk7aWYocys9RmQsZCE9PWgqQStzKXRocm93IG5ldyBrZSgiSW52YWxpZCBkYXRhQnVmZmVyT2Zmc2V0Iik7aWYoZCtmK0UhPT1lKXRocm93IG5ldyBrZSgiSW52YWxpZCBwYWNrZXQgb2Zmc2V0cyIpO2xldCBfPVtdO2ZvcihsZXQgRj0wO0Y8aDsrK0Ype2xldCBiPW4uZ2V0VWludDgocyk7KytzLCsrcztsZXQgRz1uLmdldFVpbnQxNihzLCEwKTtzKz0kZjtsZXQgTT1uLmdldFVpbnQxNihzLCEwKTtzKz0kZjtsZXQgUT1uLmdldFVpbnQxNihzLCEwKTtzKz0kZixzKz0kZixzKz0kZixzKz1GZCxzKz1GZCxzKz04O2xldCBVPW4uZ2V0VWludDgocysrKSxrPW4uZ2V0VWludDgocysrKTtzKz0kZixfLnB1c2gobmV3IE5LKGIsRyxNLFEsVSxrKSl9bGV0IFI9W10sST0wO2Z1bmN0aW9uIEMoRixiLEcpe2xldCBNPSExO2lmKEc9PT00KXtpZihiLmhhc1N1YnRyZWUoKSlyZXR1cm47TT0hMH1mb3IobGV0IFE9MDtRPDQ7KytRKXtsZXQgVT1GK1EudG9TdHJpbmcoKTtpZihNKVJbVV09bnVsbDtlbHNlIGlmKEc8NClpZighYi5oYXNDaGlsZChRKSlSW1VdPW51bGw7ZWxzZXtpZihJPT09aCl7Y29uc29sZS5sb2coIkluY29ycmVjdCBudW1iZXIgb2YgaW5zdGFuY2VzIik7cmV0dXJufWxldCBrPV9bSSsrXTtSW1VdPWssQyhVLGssRysxKX19fWxldCBOPTAsVD1fW0krK107cmV0dXJuIGk9PT0iIj8rK046UltpXT1ULEMoaSxULE4pLFJ9ZnVuY3Rpb24ga1J0KHQsZSxpKXtsZXQgbj1uZXcgRGF0YVZpZXcodCkscz1mdW5jdGlvbihhKXtmb3IobGV0IGg9MDtoPFFSdDsrK2gpe2xldCBBPW4uZ2V0VWludDMyKGEsITApO2lmKGErPXRFLGErPUEsYT5lKXRocm93IG5ldyBrZSgiTWFsZm9ybWVkIHRlcnJhaW4gcGFja2V0IGZvdW5kLiIpfXJldHVybiBhfSxvPTAscj1bXTtmb3IoO3IubGVuZ3RoPFVSdDspe2xldCBhPW87bz1zKG8pO2xldCBoPXQuc2xpY2UoYSxvKTtpLnB1c2goaCksci5wdXNoKGgpfXJldHVybiByfWZ1bmN0aW9uIHlSdCh0KXtsZXQgZT1uZXcgRGF0YVZpZXcodCksaT0wLG49ZS5nZXRVaW50MzIoaSwhMCk7aWYoaSs9dEUsbiE9PU9YJiZuIT09TFJ0KXRocm93IG5ldyBrZSgiSW52YWxpZCBtYWdpYyIpO2xldCBzPWUuZ2V0VWludDMyKGksbj09PU9YKTtpKz10RTtsZXQgbz1uZXcgVWludDhBcnJheSh0LGkpLHI9VlguZGVmYXVsdC5pbmZsYXRlKG8pO2lmKHIubGVuZ3RoIT09cyl0aHJvdyBuZXcga2UoIlNpemUgb2YgcGFja2V0IGRvZXNuJ3QgbWF0Y2ggaGVhZGVyIik7cmV0dXJuIHJ9dmFyIFZYLCRmLEZkLHRFLHpjLERSdCxVUnQsUVJ0LE9YLExSdCx3UnQscEI9TygoKT0+e0NLKCk7YksoKTtQcygpO1ZYPWNvKFNYKCksMSk7TnMoKTskZj1VaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxGZD1JbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULHRFPVVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULHpjPXtNRVRBREFUQTowLFRFUlJBSU46MSxEQlJPT1Q6Mn07emMuZnJvbVN0cmluZz1mdW5jdGlvbih0KXtpZih0PT09Ik1ldGFkYXRhIilyZXR1cm4gemMuTUVUQURBVEE7aWYodD09PSJUZXJyYWluIilyZXR1cm4gemMuVEVSUkFJTjtpZih0PT09IkRiUm9vdCIpcmV0dXJuIHpjLkRCUk9PVH07RFJ0PTMyMzAxO1VSdD01LFFSdD00O09YPTE5NTMwMjk4MDUsTFJ0PTI5MTcwMzQxMDA7d1J0PVdpKFdSdCl9KTtmdW5jdGlvbiB4UnQodCl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWUiLHQpLHQ8PS4wNDA0NT90Ki4wNzczOTkzODA4MDQ5NTM1NzpNYXRoLnBvdygodCsuMDU1KSouOTQ3ODY3Mjk4NTc4MTk5MSwyLjQpfXZhciB5ZyxHWD1PKCgpPT57YWUoKTt5Zz14UnR9KTt2YXIgVEI9e307SGUoVEIse2RlZmF1bHQ6KCk9PkVadH0pO2Z1bmN0aW9uIFBSdCh0LGUsaSxuLHMsbyl7bGV0IHI9aSooMS10KStuKnQsYT1zKigxLXQpK28qdDtyZXR1cm4gciooMS1lKSthKmV9ZnVuY3Rpb24gd2codCxlLGksbil7bGV0IHM9dCtlKmk7cmV0dXJuIG5bc119ZnVuY3Rpb24gSlJ0KHQsZSxpKXtsZXQgbj1pLm5hdGl2ZUV4dGVudCxzPSh0LW4ud2VzdCkvKG4uZWFzdC1uLndlc3QpKihpLndpZHRoLTEpLG89KGUtbi5zb3V0aCkvKG4ubm9ydGgtbi5zb3V0aCkqKGkuaGVpZ2h0LTEpLHI9TWF0aC5mbG9vcihzKSxhPU1hdGguZmxvb3Iobyk7cy09cixvLT1hO2xldCBoPXI8aS53aWR0aD9yKzE6cixBPWE8aS5oZWlnaHQ/YSsxOmE7YT1pLmhlaWdodC0xLWEsQT1pLmhlaWdodC0xLUE7bGV0IGQ9d2cocixhLGkud2lkdGgsaS5idWZmZXIpLGY9d2coaCxhLGkud2lkdGgsaS5idWZmZXIpLEU9d2cocixBLGkud2lkdGgsaS5idWZmZXIpLF89d2coaCxBLGkud2lkdGgsaS5idWZmZXIpLFI9UFJ0KHMsbyxkLGYsRSxfKTtyZXR1cm4gUj1SKmkuc2NhbGUraS5vZmZzZXQsUn1mdW5jdGlvbiBCWCh0LGUsaSl7Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDtuKyspe2xldCBzPWlbbl0ubmF0aXZlRXh0ZW50LG89bmV3IGw7aWYoaVtuXS5wcm9qZWN0aW9uVHlwZT09PSJXZWJNZXJjYXRvciIpe2xldCByPWlbbl0ucHJvamVjdGlvbi5fZWxsaXBzb2lkLl9yYWRpaTtvPW5ldyBrcyhuZXcgb3Qoci54LHIueSxyLnopKS5wcm9qZWN0KG5ldyB1dCh0LGUsMCkpfWVsc2Ugby54PXQsby55PWU7aWYoby54PnMud2VzdCYmby54PHMuZWFzdCYmby55PnMuc291dGgmJm8ueTxzLm5vcnRoKXJldHVybiBKUnQoby54LG8ueSxpW25dKX1yZXR1cm4gMH1mdW5jdGlvbiBqUnQodCxlLGksbixzLG8scil7aWYocilyZXR1cm47bGV0IGE9Qlgocy5sb25naXR1ZGUscy5sYXRpdHVkZSxvKTtmb3IobGV0IGg9MDtoPHQ7KytoKXtsZXQgQT1CWChzLmxvbmdpdHVkZStMLnRvUmFkaWFucyhpKmVbaCozXSkscy5sYXRpdHVkZStMLnRvUmFkaWFucyhuKmVbaCozKzFdKSxvKTtlW2gqMysyXSs9QS1hfX1mdW5jdGlvbiBIUnQodCxlLGksbixzLG8scixhLGgpe2lmKHQ9PT0wfHwhbShlKXx8ZS5sZW5ndGg9PT0wKXJldHVybjtsZXQgQT1uZXcgb3QoTWF0aC5zcXJ0KHIueCksTWF0aC5zcXJ0KHIueSksTWF0aC5zcXJ0KHIueikpO2ZvcihsZXQgZD0wO2Q8dDsrK2Qpe2xldCBmPWQqMyxFPWYrMSxfPWYrMixSPW5ldyB1dDtSLmxvbmdpdHVkZT1uLmxvbmdpdHVkZStMLnRvUmFkaWFucyhhKmVbZl0pLFIubGF0aXR1ZGU9bi5sYXRpdHVkZStMLnRvUmFkaWFucyhoKmVbRV0pLFIuaGVpZ2h0PW4uaGVpZ2h0K2VbX107bGV0IEk9e307QS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihSLEkpLEkueC09cy54LEkueS09cy55LEkuei09cy56O2xldCBDPXt9O2lmKGx0Lm11bHRpcGx5QnlWZWN0b3IobyxJLEMpLGVbZl09Qy54LGVbRV09Qy55LGVbX109Qy56LG0oaSkpe2xldCBOPW5ldyBsKGlbZl0saVtFXSxpW19dKSxUPXt9O2x0Lm11bHRpcGx5QnlWZWN0b3IobyxOLFQpLGlbZl09VC54LGlbRV09VC55LGlbX109VC56fX19ZnVuY3Rpb24gdlJ0KHQsZSxpKXtmb3IobGV0IG49MDtuPHQ7KytuKXtsZXQgcz1pW24qNF0vNjU1MzUsbz1pW24qNCsxXS82NTUzNSxyPShpW24qNCsyXS1pW24qNF0pLzY1NTM1LGE9KGlbbio0KzNdLWlbbio0KzFdKS82NTUzNTtlW24qMl0qPXIsZVtuKjJdKz1zLGVbbioyKzFdKj1hLGVbbioyKzFdKz1vfX1mdW5jdGlvbiB6UnQodCxlLGksbil7bGV0IHM9bmV3IFVpbnQzMkFycmF5KHQpLG89bShlKT9hPT5lW2FdOmE9PmEscj0wO2lmKG4mJm0oaSkpe2xldCBhPWg9PmlbbyhoKSo0KzNdPDI1NTtmb3IobGV0IGg9MDtoPHQ7aCs9MykhYShoKSYmIWEoaCsxKSYmIWEoaCsyKSYmKHNbcisrXT1vKGgpLHNbcisrXT1vKGgrMSksc1tyKytdPW8oaCsyKSk7aWYocj4wKXtsZXQgaD1yO2ZvcihsZXQgQT0wO0E8dDtBKz0zKShhKEEpfHxhKEErMSl8fGEoQSsyKSkmJihzW2grK109byhBKSxzW2grK109byhBKzEpLHNbaCsrXT1vKEErMikpfWVsc2UgZm9yKGxldCBoPTA7aDx0OysraClzW2hdPW8oaCl9ZWxzZXtyPXQ7Zm9yKGxldCBhPTA7YTx0OysrYSlzW2FdPW8oYSl9cmV0dXJue2luZGV4QXJyYXk6cyx0cmFuc3BhcmVudFZlcnRleE9mZnNldDpyfX1mdW5jdGlvbiBLUnQodCxlLGkpe2xldCBuPWVbaV07aWYobShuKSlyZXR1cm4gbjtsZXQgcz1lW2ldPXtwb3NpdGlvbnM6e30saW5kaWNlczp7fSxlZGdlczp7fX0sbz1aKHRbaV0sdC5kZWZhdWx0KTtyZXR1cm4gcy5oYXNPdXRsaW5lPW0obz8uZWRnZXMpLHN9ZnVuY3Rpb24gWFJ0KHQsZSxpLG4pe2lmKCFtKHRbaV0pKXtsZXQgcz1pKjMsbz1lO2ZvcihsZXQgcj0wO3I8MztyKyspe2xldCBhPW5bcytyXTttKG9bYV0pfHwob1thXT17fSksbz1vW2FdfW0oby5pbmRleCl8fChvLmluZGV4PWkpLHRbaV09by5pbmRleH19ZnVuY3Rpb24gcVJ0KHQsZSxpLG4scyxvKXtsZXQgcixhO248cz8ocj1uLGE9cyk6KHI9cyxhPW4pO2xldCBoPXRbcl07bShoKXx8KGg9dFtyXT17fSk7bGV0IEE9aFthXTttKEEpfHwoQT1oW2FdPXtub3JtYWxzSW5kZXg6W10sb3V0bGluZXM6W119KSxBLm5vcm1hbHNJbmRleC5wdXNoKG8pLChBLm91dGxpbmVzLmxlbmd0aD09PTB8fGUhPT1ufHxpIT09cykmJkEub3V0bGluZXMucHVzaChlLGkpfWZ1bmN0aW9uICRSdCh0LGUsaSxuKXtsZXQgcz1bXTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rPTMpe2xldCByPW0oZSk/ZVtpW29dXToiZGVmYXVsdCIsYT1LUnQodCxzLHIpO2lmKCFhLmhhc091dGxpbmUpY29udGludWU7bGV0IGg9YS5pbmRpY2VzLEE9YS5wb3NpdGlvbnM7Zm9yKGxldCBmPTA7ZjwzO2YrKyl7bGV0IEU9aVtvK2ZdO1hSdChoLEEsRSxuKX1sZXQgZD1hLmVkZ2VzO2ZvcihsZXQgZj0wO2Y8MztmKyspe2xldCBFPWlbbytmXSxfPWlbbysoZisxKSUzXSxSPWhbRV0sST1oW19dO3FSdChkLEUsXyxSLEksbyl9fXJldHVybiBzfWZ1bmN0aW9uIFdYKHQsZSxpLG4pe2xldCBzPWlbZV0qMyxvPWlbZSsxXSozLHI9aVtlKzJdKjM7bC5mcm9tQXJyYXkobixzLFFBKSxsLmZyb21BcnJheShuLG8seGcpLGwuZnJvbUFycmF5KG4scixQZyksbC5zdWJ0cmFjdCh4ZyxRQSx4ZyksbC5zdWJ0cmFjdChQZyxRQSxQZyksbC5jcm9zcyh4ZyxQZyxRQSk7bGV0IGE9bC5tYWduaXR1ZGUoUUEpO2EhPT0wJiZsLmRpdmlkZUJ5U2NhbGFyKFFBLGEsUUEpO2xldCBoPWUqMyxBPShlKzEpKjMsZD0oZSsyKSozO2wucGFjayhRQSx0LGgpLGwucGFjayhRQSx0LEEpLGwucGFjayhRQSx0LGQpfWZ1bmN0aW9uIHRadCh0LGUsaSl7bC5mcm9tQXJyYXkodCxlLEpnKSxsLmZyb21BcnJheSh0LGksdUIpO2xldCBuPWwuZG90KEpnLHVCKSxzPWwubWFnbml0dWRlKGwuY3Jvc3MoSmcsdUIsSmcpKTtyZXR1cm4gTWF0aC5hdGFuMihzLG4pPC4yNX1mdW5jdGlvbiBlWnQodCxlLGksbixzKXtpZihlLm5vcm1hbHNJbmRleC5sZW5ndGg+MSl7bGV0IG89bi5sZW5ndGg9PT1zLmxlbmd0aDtmb3IobGV0IHI9MDtyPGUubm9ybWFsc0luZGV4Lmxlbmd0aDtyKyspe2xldCBhPWUubm9ybWFsc0luZGV4W3JdO2lmKG0oc1thKjNdKXx8V1gocyxhLGksbiksciE9PTApZm9yKGxldCBoPTA7aDxyO2grKyl7bGV0IEE9ZS5ub3JtYWxzSW5kZXhbaF0sZD1vP2lbYV0qMzphKjMsZj1vP2lbQV0qMzpBKjM7aWYodFp0KHMsZCxmKSlyZXR1cm59fX10LnB1c2goLi4uZS5vdXRsaW5lcyl9ZnVuY3Rpb24gaVp0KHQsZSxpLG4scyl7bGV0IG89T2JqZWN0LmtleXMoZSk7Zm9yKGxldCByPTA7cjxvLmxlbmd0aDtyKyspe2xldCBhPWVbb1tyXV0saD1PYmplY3Qua2V5cyhhKTtmb3IobGV0IEE9MDtBPGgubGVuZ3RoO0ErKyl7bGV0IGQ9YVtoW0FdXTtlWnQodCxkLGksbixzKX19fWZ1bmN0aW9uIG5adCh0LGUsaSxuKXtsZXQgcz1bXSxvPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgcj0wO3I8by5sZW5ndGg7cisrKXtsZXQgYT10W29bcl1dLmVkZ2VzO2ladChzLGEsZSxpLG4pfXJldHVybiBzfWZ1bmN0aW9uIHNadCh0LGUsaSxuLHMpe2lmKCFtKHQpfHxPYmplY3Qua2V5cyh0KS5sZW5ndGg9PT0wKXJldHVybjtsZXQgbz0kUnQodCxlLGksbik7KCFtKHMpfHxpLmxlbmd0aCozIT09cy5sZW5ndGgpJiYocz1bXSk7bGV0IHI9blp0KG8saSxuLHMpO3JldHVybiByLmxlbmd0aD4wP25ldyBVaW50MzJBcnJheShyKTp2b2lkIDB9ZnVuY3Rpb24gb1p0KHQpe2xldCBlPW5ldyBGbG9hdDMyQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSs9NCllW2ldPXlnKFp0LmJ5dGVUb0Zsb2F0KHRbaV0pKSxlW2krMV09eWcoWnQuYnl0ZVRvRmxvYXQodFtpKzFdKSksZVtpKzJdPXlnKFp0LmJ5dGVUb0Zsb2F0KHRbaSsyXSkpLGVbaSszXT1adC5ieXRlVG9GbG9hdCh0W2krM10pO3JldHVybiBlfWZ1bmN0aW9uIHJadCh0LGUsaSxuLHMsbyxyKXtsZXQgYT17bm9ybWFsczp2b2lkIDAscG9zaXRpb25zOnZvaWQgMCx1djBzOnZvaWQgMCxjb2xvcnM6dm9pZCAwLGZlYXR1cmVJbmRleDp2b2lkIDAsdmVydGV4Q291bnQ6dm9pZCAwfTtpZih0PT09MHx8IW0oaSl8fGkubGVuZ3RoPT09MHx8bShuKSlyZXR1cm4gYTtpZihtKGUpKXthLnZlcnRleENvdW50PWUubGVuZ3RoLGEucG9zaXRpb25zPW5ldyBGbG9hdDMyQXJyYXkoZS5sZW5ndGgqMyksYS51djBzPW0ocyk/bmV3IEZsb2F0MzJBcnJheShlLmxlbmd0aCoyKTp2b2lkIDAsYS5jb2xvcnM9bShvKT9uZXcgVWludDhBcnJheShlLmxlbmd0aCo0KTp2b2lkIDAsYS5mZWF0dXJlSW5kZXg9bShyKT9uZXcgQXJyYXkoZS5sZW5ndGgpOnZvaWQgMDtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grKyl7bGV0IEE9ZVtoXTthLnBvc2l0aW9uc1toKjNdPWlbQSozXSxhLnBvc2l0aW9uc1toKjMrMV09aVtBKjMrMV0sYS5wb3NpdGlvbnNbaCozKzJdPWlbQSozKzJdLG0oYS51djBzKSYmKGEudXYwc1toKjJdPXNbQSoyXSxhLnV2MHNbaCoyKzFdPXNbQSoyKzFdKSxtKGEuY29sb3JzKSYmKGEuY29sb3JzW2gqNF09b1tBKjRdLGEuY29sb3JzW2gqNCsxXT1vW0EqNCsxXSxhLmNvbG9yc1toKjQrMl09b1tBKjQrMl0sYS5jb2xvcnNbaCo0KzNdPW9bQSo0KzNdKSxtKGEuZmVhdHVyZUluZGV4KSYmKGEuZmVhdHVyZUluZGV4W2hdPXJbQV0pfXQ9ZS5sZW5ndGgsaT1hLnBvc2l0aW9uc31lPW5ldyBBcnJheSh0KTtmb3IobGV0IGg9MDtoPHQ7aCsrKWVbaF09aDthLm5vcm1hbHM9bmV3IEZsb2F0MzJBcnJheShlLmxlbmd0aCozKTtmb3IobGV0IGg9MDtoPGUubGVuZ3RoO2grPTMpV1goYS5ub3JtYWxzLGgsZSxpKTtyZXR1cm4gYX1mdW5jdGlvbiBhWnQodCxlLGksbixzLG8scixhKXtpZih0PT09MHx8IW0oaSl8fGkubGVuZ3RoPT09MClyZXR1cm57YnVmZmVyczpbXSxidWZmZXJWaWV3czpbXSxhY2Nlc3NvcnM6W10sbWVzaGVzOltdLG5vZGVzOltdLG5vZGVzSW5TY2VuZTpbXX07bGV0IGg9W10sQT1bXSxkPVtdLGY9W10sRT1bXSxfPVtdLFI9e30sST1bXTttKGUpJiYodD1lLmxlbmd0aCk7bGV0e2luZGV4QXJyYXk6Qyx0cmFuc3BhcmVudFZlcnRleE9mZnNldDpOfT16UnQodCxlLG8sYS5zcGxpdEdlb21ldHJ5QnlDb2xvclRyYW5zcGFyZW5jeSksVD1uZXcgQmxvYihbQ10se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KSxGPVVSTC5jcmVhdGVPYmplY3RVUkwoVCksYj10LEc9YS5lbmFibGVGZWF0dXJlcyYmbShyKT9uZXcgRmxvYXQzMkFycmF5KHIubGVuZ3RoKTp2b2lkIDAsTT0wO2lmKG0oRykpZm9yKGxldCBGdD0wO0Z0PHIubGVuZ3RoOysrRnQpe0dbRnRdPXJbRnRdO2xldCBlZT1yW0Z0XSsxO008ZWUmJihNPWVlKX1sZXQgUSxVPXNadChhLnN5bWJvbG9neURhdGEscixDLGksbik7aWYobShVKSl7bGV0IEZ0PW5ldyBCbG9iKFtVXSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO1E9VVJMLmNyZWF0ZU9iamVjdFVSTChGdCl9bGV0IGs9aS5zdWJhcnJheSgwLGIqMykseT1uZXcgQmxvYihba10se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KSxjPVVSTC5jcmVhdGVPYmplY3RVUkwoeSksZz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksVj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksRD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksdz1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkseD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksSD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKGxldCBGdD0wO0Z0PGsubGVuZ3RoLzM7RnQrKylnPU1hdGgubWluKGcsa1tGdCozKzBdKSxWPU1hdGgubWF4KFYsa1tGdCozKzBdKSxEPU1hdGgubWluKEQsa1tGdCozKzFdKSx3PU1hdGgubWF4KHcsa1tGdCozKzFdKSx4PU1hdGgubWluKHgsa1tGdCozKzJdKSxIPU1hdGgubWF4KEgsa1tGdCozKzJdKTtsZXQgaj1uP24uc3ViYXJyYXkoMCxiKjMpOnZvaWQgMCxYO2lmKG0oaikpe2xldCBGdD1uZXcgQmxvYihbal0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtYPVVSTC5jcmVhdGVPYmplY3RVUkwoRnQpfWxldCB0dD1zP3Muc3ViYXJyYXkoMCxiKjIpOnZvaWQgMCxCO2lmKG0odHQpKXtsZXQgRnQ9bmV3IEJsb2IoW3R0XSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO0I9VVJMLmNyZWF0ZU9iamVjdFVSTChGdCl9bGV0IEl0PW0obyk/b1p0KG8uc3ViYXJyYXkoMCxiKjQpKTp2b2lkIDAsZ3Q7aWYobShJdCkpe2xldCBGdD1uZXcgQmxvYihbSXRdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7Z3Q9VVJMLmNyZWF0ZU9iamVjdFVSTChGdCl9bGV0IFl0PW0oRyk/Ry5zdWJhcnJheSgwLGIpOnZvaWQgMCxNdDtpZihtKFl0KSl7bGV0IEZ0PW5ldyBCbG9iKFtZdF0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtNdD1VUkwuY3JlYXRlT2JqZWN0VVJMKEZ0KX1sZXQgQ3Q9bShHKT9uZXcgRmxvYXQzMkFycmF5KE0pOnZvaWQgMCx6dDtpZihtKEN0KSl7Zm9yKGxldCBlZT0wO2VlPEN0Lmxlbmd0aDsrK2VlKUN0W2VlXT1lZTtsZXQgRnQ9bmV3IEJsb2IoW0N0XSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO3p0PVVSTC5jcmVhdGVPYmplY3RVUkwoRnQpfWxldCBrdD17fSxKdD17fTtrdC5QT1NJVElPTj1kLmxlbmd0aCxoLnB1c2goe3VyaTpjLGJ5dGVMZW5ndGg6ay5ieXRlTGVuZ3RofSksQS5wdXNoKHtidWZmZXI6aC5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDprLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksZC5wdXNoKHtidWZmZXJWaWV3OkEubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDprLmxlbmd0aC8zLHR5cGU6IlZFQzMiLG1heDpbZyxELHhdLG1pbjpbVix3LEhdfSksbShYKSYmKGt0Lk5PUk1BTD1kLmxlbmd0aCxoLnB1c2goe3VyaTpYLGJ5dGVMZW5ndGg6ai5ieXRlTGVuZ3RofSksQS5wdXNoKHtidWZmZXI6aC5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpqLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksZC5wdXNoKHtidWZmZXJWaWV3OkEubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDpqLmxlbmd0aC8zLHR5cGU6IlZFQzMifSkpLG0oQikmJihrdC5URVhDT09SRF8wPWQubGVuZ3RoLGgucHVzaCh7dXJpOkIsYnl0ZUxlbmd0aDp0dC5ieXRlTGVuZ3RofSksQS5wdXNoKHtidWZmZXI6aC5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDp0dC5ieXRlTGVuZ3RoLHRhcmdldDozNDk2Mn0pLGQucHVzaCh7YnVmZmVyVmlldzpBLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxjb21wb25lbnRUeXBlOjUxMjYsY291bnQ6dHQubGVuZ3RoLzIsdHlwZToiVkVDMiJ9KSksbShndCkmJihrdC5DT0xPUl8wPWQubGVuZ3RoLGgucHVzaCh7dXJpOmd0LGJ5dGVMZW5ndGg6SXQuYnl0ZUxlbmd0aH0pLEEucHVzaCh7YnVmZmVyOmgubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6SXQuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxkLnB1c2goe2J1ZmZlclZpZXc6QS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50Okl0Lmxlbmd0aC80LHR5cGU6IlZFQzQifSkpLG0oTXQpJiYoa3QuX0ZFQVRVUkVfSURfMD1kLmxlbmd0aCxoLnB1c2goe3VyaTpNdCxieXRlTGVuZ3RoOll0LmJ5dGVMZW5ndGh9KSxBLnB1c2goe2J1ZmZlcjpoLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOll0LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksZC5wdXNoKHtidWZmZXJWaWV3OkEubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDpZdC5sZW5ndGgsdHlwZToiU0NBTEFSIn0pLEp0LkVYVF9tZXNoX2ZlYXR1cmVzPXtmZWF0dXJlSWRzOlt7YXR0cmlidXRlOjAscHJvcGVydHlUYWJsZTowLGZlYXR1cmVDb3VudDpNfV19LEkucHVzaCgiRVhUX21lc2hfZmVhdHVyZXMiKSksbSh6dCkmJihoLnB1c2goe3VyaTp6dCxieXRlTGVuZ3RoOkN0LmJ5dGVMZW5ndGh9KSxBLnB1c2goe2J1ZmZlcjpoLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOkN0LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksUi5FWFRfc3RydWN0dXJhbF9tZXRhZGF0YT17c2NoZW1hOntpZDoiaTNzLW1ldGFkYXRhLXNjaGVtYS0wMDEiLG5hbWU6IkkzUyBtZXRhZGF0YSBzY2hlbWEgMDAxIixkZXNjcmlwdGlvbjoiVGhlIHNjaGVtYSBmb3IgSTNTIG1ldGFkYXRhIix2ZXJzaW9uOiIxLjAiLGNsYXNzZXM6e2ZlYXR1cmU6e25hbWU6ImZlYXR1cmUiLGRlc2NyaXB0aW9uOiJGZWF0dXJlIG1ldGFkYXRhIixwcm9wZXJ0aWVzOntpbmRleDp7ZGVzY3JpcHRpb246IlRoZSBmZWF0dXJlIGluZGV4Iix0eXBlOiJTQ0FMQVIiLGNvbXBvbmVudFR5cGU6IkZMT0FUMzIiLHJlcXVpcmVkOiEwfX19fX0scHJvcGVydHlUYWJsZXM6W3tuYW1lOiJmZWF0dXJlLWluZGljZXMtbWFwcGluZyIsY2xhc3M6ImZlYXR1cmUiLGNvdW50Ok0scHJvcGVydGllczp7aW5kZXg6e3ZhbHVlczpBLmxlbmd0aC0xfX19XX0sSS5wdXNoKCJFWFRfc3RydWN0dXJhbF9tZXRhZGF0YSIpKSxtKFEpJiYoaC5wdXNoKHt1cmk6USxieXRlTGVuZ3RoOlUuYnl0ZUxlbmd0aH0pLEEucHVzaCh7YnVmZmVyOmgubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6VS5ieXRlTGVuZ3RoLHRhcmdldDozNDk2M30pLGQucHVzaCh7YnVmZmVyVmlldzpBLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxjb21wb25lbnRUeXBlOjUxMjUsY291bnQ6VS5sZW5ndGgsdHlwZToiU0NBTEFSIn0pLEp0LkNFU0lVTV9wcmltaXRpdmVfb3V0bGluZT17aW5kaWNlczpkLmxlbmd0aC0xfSxJLnB1c2goIkNFU0lVTV9wcmltaXRpdmVfb3V0bGluZSIpKSxoLnB1c2goe3VyaTpGLGJ5dGVMZW5ndGg6Qy5ieXRlTGVuZ3RofSksQS5wdXNoKHtidWZmZXI6aC5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpDLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSk7bGV0IFd0PVtdO3JldHVybiBOPjAmJihkLnB1c2goe2J1ZmZlclZpZXc6QS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI1LGNvdW50Ok4sdHlwZToiU0NBTEFSIn0pLFd0LnB1c2goe2F0dHJpYnV0ZXM6a3QsaW5kaWNlczpkLmxlbmd0aC0xLG1hdGVyaWFsOld0Lmxlbmd0aCxleHRlbnNpb25zOkp0fSkpLE48dCYmKGQucHVzaCh7YnVmZmVyVmlldzpBLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6NCpOLGNvbXBvbmVudFR5cGU6NTEyNSxjb3VudDp0LU4sdHlwZToiU0NBTEFSIn0pLFd0LnB1c2goe2F0dHJpYnV0ZXM6a3QsaW5kaWNlczpkLmxlbmd0aC0xLG1hdGVyaWFsOld0Lmxlbmd0aCxleHRlbnNpb25zOkp0LGV4dHJhOntpc1RyYW5zcGFyZW50OiEwfX0pKSxmLnB1c2goe3ByaW1pdGl2ZXM6V3R9KSxfLnB1c2goMCksRS5wdXNoKHttZXNoOjB9KSx7YnVmZmVyczpoLGJ1ZmZlclZpZXdzOkEsYWNjZXNzb3JzOmQsbWVzaGVzOmYsbm9kZXM6RSxub2Rlc0luU2NlbmU6Xyxyb290RXh0ZW5zaW9uczpSLGV4dGVuc2lvbnNVc2VkOkl9fWZ1bmN0aW9uIEFadCh0LGUsaSxuKXtsZXQgcz1uZXcgVWludDhBcnJheSh0LDAsNSk7cmV0dXJuIHNbMF09PT02OCYmc1sxXT09PTgyJiZzWzJdPT09NjUmJnNbM109PT02NyYmc1s0XT09PTc5P2hadCh0LGkpOmxadCh0LGUsaSxuKX1mdW5jdGlvbiBoWnQodCl7bGV0IGU9Z0IsaT1uZXcgZS5EZWNvZGVyQnVmZmVyLG49bmV3IFVpbnQ4QXJyYXkodCk7aS5Jbml0KG4sbi5sZW5ndGgpO2xldCBzPW5ldyBlLkRlY29kZXIsbz1zLkdldEVuY29kZWRHZW9tZXRyeVR5cGUoaSkscj1uZXcgZS5NZXRhZGF0YVF1ZXJpZXIsYSxoO289PT1lLlRSSUFOR1VMQVJfTUVTSCYmKGE9bmV3IGUuTWVzaCxoPXMuRGVjb2RlQnVmZmVyVG9NZXNoKGksYSkpO2xldCBBPXt2ZXJ0ZXhDb3VudDpbMF0sZmVhdHVyZUNvdW50OjB9O2lmKG0oaCkmJmgub2soKSYmYS5wdHIhPT0wKXtsZXQgZD1hLm51bV9mYWNlcygpLGY9YS5udW1fYXR0cmlidXRlcygpLEU9YS5udW1fcG9pbnRzKCk7QS5pbmRpY2VzPW5ldyBVaW50MzJBcnJheShkKjMpO2xldCBfPUEuaW5kaWNlcztBLnZlcnRleENvdW50WzBdPUUsQS5zY2FsZV94PTEsQS5zY2FsZV95PTE7bGV0IFI9bmV3IGUuRHJhY29JbnQzMkFycmF5KDMpO2ZvcihsZXQgST0wO0k8ZDsrK0kpcy5HZXRGYWNlRnJvbU1lc2goYSxJLFIpLF9bSSozXT1SLkdldFZhbHVlKDApLF9bSSozKzFdPVIuR2V0VmFsdWUoMSksX1tJKjMrMl09Ui5HZXRWYWx1ZSgyKTtlLmRlc3Ryb3koUik7Zm9yKGxldCBJPTA7STxmOysrSSl7bGV0IEM9cy5HZXRBdHRyaWJ1dGUoYSxJKSxOPWNadChlLHMsYSxDLEUpLFQ9Qy5hdHRyaWJ1dGVfdHlwZSgpLEY9InVua25vd24iO1Q9PT1lLlBPU0lUSU9OP0Y9InBvc2l0aW9ucyI6VD09PWUuTk9STUFMP0Y9Im5vcm1hbHMiOlQ9PT1lLkNPTE9SP0Y9ImNvbG9ycyI6VD09PWUuVEVYX0NPT1JEJiYoRj0idXYwcyIpO2xldCBiPXMuR2V0QXR0cmlidXRlTWV0YWRhdGEoYSxJKTtpZihiLnB0ciE9PTApe2xldCBHPXIuTnVtRW50cmllcyhiKTtmb3IobGV0IE09MDtNPEc7KytNKXtsZXQgUT1yLkdldEVudHJ5TmFtZShiLE0pO1E9PT0iaTNzLXNjYWxlX3giP0Euc2NhbGVfeD1yLkdldERvdWJsZUVudHJ5KGIsImkzcy1zY2FsZV94Iik6UT09PSJpM3Mtc2NhbGVfeSI/QS5zY2FsZV95PXIuR2V0RG91YmxlRW50cnkoYiwiaTNzLXNjYWxlX3kiKTpRPT09Imkzcy1hdHRyaWJ1dGUtdHlwZSImJihGPXIuR2V0U3RyaW5nRW50cnkoYiwiaTNzLWF0dHJpYnV0ZS10eXBlIikpfX1tKEFbRl0pJiZjb25zb2xlLmxvZygiQXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIixGKSxBW0ZdPU4sRj09PSJmZWF0dXJlLWluZGV4IiYmQS5mZWF0dXJlQ291bnQrK31lLmRlc3Ryb3koYSl9cmV0dXJuIGUuZGVzdHJveShyKSxlLmRlc3Ryb3kocyksQX1mdW5jdGlvbiBjWnQodCxlLGksbixzKXtsZXQgbz1uLm51bV9jb21wb25lbnRzKCkqcyxyLGg9W2Z1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3I9bmV3IHQuRHJhY29JbnQ4QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzKGksbixyKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBkPW5ldyBJbnQ4QXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0ludDhBcnJheShvKSxlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzKGksbixyKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBkPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZj0wO2Y8bzsrK2YpZFtmXT1yLkdldFZhbHVlKGYpO3JldHVybiBkfSxmdW5jdGlvbigpe3I9bmV3IHQuRHJhY29JbnQxNkFycmF5KG8pLGUuR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IEludDE2QXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0ludDE2QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IFVpbnQxNkFycmF5KG8pO2ZvcihsZXQgZj0wO2Y8bzsrK2YpZFtmXT1yLkdldFZhbHVlKGYpO3JldHVybiBkfSxmdW5jdGlvbigpe3I9bmV3IHQuRHJhY29JbnQzMkFycmF5KG8pLGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IEludDMyQXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0ludDMyQXJyYXkobyksZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IFVpbnQzMkFycmF5KG8pO2ZvcihsZXQgZj0wO2Y8bzsrK2YpZFtmXT1yLkdldFZhbHVlKGYpO3JldHVybiBkfSxmdW5jdGlvbigpe30sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0Zsb2F0MzJBcnJheShvKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKGksbixyKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBkPW5ldyBGbG9hdDMyQXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3I9bmV3IHQuRHJhY29VSW50OEFycmF5KG8pLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9XVtuLmRhdGFfdHlwZSgpXSgpO3JldHVybiBtKHIpJiZ0LmRlc3Ryb3kociksaH1mdW5jdGlvbiBsWnQodCxlLGksbil7bGV0IHM9e3ZlcnRleENvdW50OjB9LG89bmV3IERhdGFWaWV3KHQpO3RyeXtsZXQgcj0wO2lmKHMudmVydGV4Q291bnQ9by5nZXRVaW50MzIociwxKSxyKz00LHMuZmVhdHVyZUNvdW50PW8uZ2V0VWludDMyKHIsMSkscis9NCxtKGkpKWZvcihsZXQgYT0wO2E8aS5hdHRyaWJ1dGVzLmxlbmd0aDthKyspbShqZ1tpLmF0dHJpYnV0ZXNbYV1dKT9yPWpnW2kuYXR0cmlidXRlc1thXV0ocyx0LHIpOmNvbnNvbGUuZXJyb3IoIlVua25vd24gZGVjb2RlciBmb3IiLGkuYXR0cmlidXRlc1thXSk7ZWxzZXtsZXQgYT1lLm9yZGVyaW5nLGg9ZS5mZWF0dXJlQXR0cmlidXRlT3JkZXI7bShuKSYmbShuLmdlb21ldHJ5RGF0YSkmJm0obi5nZW9tZXRyeURhdGFbMF0pJiZtKG4uZ2VvbWV0cnlEYXRhWzBdLnBhcmFtcykmJihhPU9iamVjdC5rZXlzKG4uZ2VvbWV0cnlEYXRhWzBdLnBhcmFtcy52ZXJ0ZXhBdHRyaWJ1dGVzKSxoPU9iamVjdC5rZXlzKG4uZ2VvbWV0cnlEYXRhWzBdLnBhcmFtcy5mZWF0dXJlQXR0cmlidXRlcykpO2ZvcihsZXQgQT0wO0E8YS5sZW5ndGg7QSsrKXtsZXQgZD1qZ1thW0FdXTtyPWQocyx0LHIpfWZvcihsZXQgQT0wO0E8aC5sZW5ndGg7QSsrKXtsZXQgZD1qZ1toW0FdXTtyPWQocyx0LHIpfX19Y2F0Y2gocil7Y29uc29sZS5lcnJvcihyKX1yZXR1cm4gcy5zY2FsZV94PTEscy5zY2FsZV95PTEsc31mdW5jdGlvbiBkWnQodCl7bGV0IGU9QVp0KHQuYmluYXJ5RGF0YSx0LnNjaGVtYSx0LmJ1ZmZlckluZm8sdC5mZWF0dXJlRGF0YSk7bSh0Lmdlb2lkRGF0YUxpc3QpJiZ0Lmdlb2lkRGF0YUxpc3QubGVuZ3RoPjAmJmpSdChlLnZlcnRleENvdW50LGUucG9zaXRpb25zLGUuc2NhbGVfeCxlLnNjYWxlX3ksdC5jYXJ0b2dyYXBoaWNDZW50ZXIsdC5nZW9pZERhdGFMaXN0LCExKSxIUnQoZS52ZXJ0ZXhDb3VudCxlLnBvc2l0aW9ucyxlLm5vcm1hbHMsdC5jYXJ0b2dyYXBoaWNDZW50ZXIsdC5jYXJ0ZXNpYW5DZW50ZXIsdC5wYXJlbnRSb3RhdGlvbix0LmVsbGlwc29pZFJhZGlpU3F1YXJlLGUuc2NhbGVfeCxlLnNjYWxlX3kpLG0oZS51djBzKSYmbShlWyJ1di1yZWdpb24iXSkmJnZSdChlLnZlcnRleENvdW50LGUudXYwcyxlWyJ1di1yZWdpb24iXSk7bGV0IGk7aWYobShlWyJmZWF0dXJlLWluZGV4Il0pKWk9ZVsiZmVhdHVyZS1pbmRleCJdO2Vsc2UgaWYobShlLmZhY2VSYW5nZSkpe2k9bmV3IEFycmF5KGUudmVydGV4Q291bnQpO2ZvcihsZXQgcj0wO3I8ZS5mYWNlUmFuZ2UubGVuZ3RoLTE7cis9Mil7bGV0IGE9ci8yLGg9ZS5mYWNlUmFuZ2Vbcl0sQT1lLmZhY2VSYW5nZVtyKzFdO2ZvcihsZXQgZD1oO2Q8PUE7ZCsrKWlbZCozXT1hLGlbZCozKzFdPWEsaVtkKjMrMl09YX19aWYodC5jYWxjdWxhdGVOb3JtYWxzKXtsZXQgcj1yWnQoZS52ZXJ0ZXhDb3VudCxlLmluZGljZXMsZS5wb3NpdGlvbnMsZS5ub3JtYWxzLGUudXYwcyxlLmNvbG9ycyxpKTttKHIubm9ybWFscykmJihlLm5vcm1hbHM9ci5ub3JtYWxzLG0oci52ZXJ0ZXhDb3VudCkmJihlLnZlcnRleENvdW50PXIudmVydGV4Q291bnQsZS5pbmRpY2VzPXIuaW5kaWNlcyxlLnBvc2l0aW9ucz1yLnBvc2l0aW9ucyxlLnV2MHM9ci51djBzLGUuY29sb3JzPXIuY29sb3JzLGk9ci5mZWF0dXJlSW5kZXgpKX1sZXQgbj1hWnQoZS52ZXJ0ZXhDb3VudCxlLmluZGljZXMsZS5wb3NpdGlvbnMsZS5ub3JtYWxzLGUudXYwcyxlLmNvbG9ycyxpLHQpLHM9e3Bvc2l0aW9uczplLnBvc2l0aW9ucyxpbmRpY2VzOmUuaW5kaWNlcyxmZWF0dXJlSW5kZXg6aSxzb3VyY2VVUkw6dC51cmwsY2FydGVzaWFuQ2VudGVyOnQuY2FydGVzaWFuQ2VudGVyLHBhcmVudFJvdGF0aW9uOnQucGFyZW50Um90YXRpb259O3JldHVybiBuLl9jdXN0b21BdHRyaWJ1dGVzPXMse21lc2hEYXRhOm59fWFzeW5jIGZ1bmN0aW9uIG1adCh0LGUpe2xldCBpPXQud2ViQXNzZW1ibHlDb25maWc7cmV0dXJuIG0oaSkmJm0oaS53YXNtQmluYXJ5RmlsZSk/Z0I9YXdhaXQoMCxDQi5kZWZhdWx0KShpKTpnQj1hd2FpdCgwLENCLmRlZmF1bHQpKCksITB9ZnVuY3Rpb24gZlp0KHQsZSl7bGV0IGk9dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShpKT9tWnQodCxlKTpkWnQodCxlKX12YXIgQ0IsZ0IsUUEseGcsUGcsSmcsdUIsamcsRVp0LE5CPU8oKCk9PntOcygpO2J0KCk7bXQoKTtVbCgpO1ZlKCk7cmkoKTtIdCgpO1FuKCk7ZG4oKTtfZSgpO0NCPWNvKHRCKCksMSk7R1goKTtRQT1uZXcgbCx4Zz1uZXcgbCxQZz1uZXcgbDtKZz1uZXcgbCx1Qj1uZXcgbDtqZz17cG9zaXRpb246ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQudmVydGV4Q291bnQqMztyZXR1cm4gdC5wb3NpdGlvbnM9bmV3IEZsb2F0MzJBcnJheShlLGksbiksaSs9bio0LGl9LG5vcm1hbDpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC52ZXJ0ZXhDb3VudCozO3JldHVybiB0Lm5vcm1hbHM9bmV3IEZsb2F0MzJBcnJheShlLGksbiksaSs9bio0LGl9LHV2MDpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC52ZXJ0ZXhDb3VudCoyO3JldHVybiB0LnV2MHM9bmV3IEZsb2F0MzJBcnJheShlLGksbiksaSs9bio0LGl9LGNvbG9yOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LnZlcnRleENvdW50KjQ7cmV0dXJuIHQuY29sb3JzPW5ldyBVaW50OEFycmF5KGUsaSxuKSxpKz1uLGl9LGZlYXR1cmVJZDpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC5mZWF0dXJlQ291bnQ7cmV0dXJuIGkrPW4qOCxpfSxpZDpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC5mZWF0dXJlQ291bnQ7cmV0dXJuIGkrPW4qOCxpfSxmYWNlUmFuZ2U6ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuZmVhdHVyZUNvdW50KjI7cmV0dXJuIHQuZmFjZVJhbmdlPW5ldyBVaW50MzJBcnJheShlLGksbiksaSs9bio0LGl9LHV2UmVnaW9uOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LnZlcnRleENvdW50KjQ7cmV0dXJuIHRbInV2LXJlZ2lvbiJdPW5ldyBVaW50MTZBcnJheShlLGksbiksaSs9bioyLGl9LHJlZ2lvbjpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC52ZXJ0ZXhDb3VudCo0O3JldHVybiB0WyJ1di1yZWdpb24iXT1uZXcgVWludDE2QXJyYXkoZSxpLG4pLGkrPW4qMixpfX07RVp0PVdpKGZadCl9KTt2YXIgX1p0LFBSLERYPU8oKCk9PntfWnQ9e1ZLX0ZPUk1BVF9VTkRFRklORUQ6MCxWS19GT1JNQVRfUjRHNF9VTk9STV9QQUNLODoxLFZLX0ZPUk1BVF9SNEc0QjRBNF9VTk9STV9QQUNLMTY6MixWS19GT1JNQVRfQjRHNFI0QTRfVU5PUk1fUEFDSzE2OjMsVktfRk9STUFUX1I1RzZCNV9VTk9STV9QQUNLMTY6NCxWS19GT1JNQVRfQjVHNlI1X1VOT1JNX1BBQ0sxNjo1LFZLX0ZPUk1BVF9SNUc1QjVBMV9VTk9STV9QQUNLMTY6NixWS19GT1JNQVRfQjVHNVI1QTFfVU5PUk1fUEFDSzE2OjcsVktfRk9STUFUX0ExUjVHNUI1X1VOT1JNX1BBQ0sxNjo4LFZLX0ZPUk1BVF9SOF9VTk9STTo5LFZLX0ZPUk1BVF9SOF9TTk9STToxMCxWS19GT1JNQVRfUjhfVVNDQUxFRDoxMSxWS19GT1JNQVRfUjhfU1NDQUxFRDoxMixWS19GT1JNQVRfUjhfVUlOVDoxMyxWS19GT1JNQVRfUjhfU0lOVDoxNCxWS19GT1JNQVRfUjhfU1JHQjoxNSxWS19GT1JNQVRfUjhHOF9VTk9STToxNixWS19GT1JNQVRfUjhHOF9TTk9STToxNyxWS19GT1JNQVRfUjhHOF9VU0NBTEVEOjE4LFZLX0ZPUk1BVF9SOEc4X1NTQ0FMRUQ6MTksVktfRk9STUFUX1I4RzhfVUlOVDoyMCxWS19GT1JNQVRfUjhHOF9TSU5UOjIxLFZLX0ZPUk1BVF9SOEc4X1NSR0I6MjIsVktfRk9STUFUX1I4RzhCOF9VTk9STToyMyxWS19GT1JNQVRfUjhHOEI4X1NOT1JNOjI0LFZLX0ZPUk1BVF9SOEc4QjhfVVNDQUxFRDoyNSxWS19GT1JNQVRfUjhHOEI4X1NTQ0FMRUQ6MjYsVktfRk9STUFUX1I4RzhCOF9VSU5UOjI3LFZLX0ZPUk1BVF9SOEc4QjhfU0lOVDoyOCxWS19GT1JNQVRfUjhHOEI4X1NSR0I6MjksVktfRk9STUFUX0I4RzhSOF9VTk9STTozMCxWS19GT1JNQVRfQjhHOFI4X1NOT1JNOjMxLFZLX0ZPUk1BVF9COEc4UjhfVVNDQUxFRDozMixWS19GT1JNQVRfQjhHOFI4X1NTQ0FMRUQ6MzMsVktfRk9STUFUX0I4RzhSOF9VSU5UOjM0LFZLX0ZPUk1BVF9COEc4UjhfU0lOVDozNSxWS19GT1JNQVRfQjhHOFI4X1NSR0I6MzYsVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNOjM3LFZLX0ZPUk1BVF9SOEc4QjhBOF9TTk9STTozOCxWS19GT1JNQVRfUjhHOEI4QThfVVNDQUxFRDozOSxWS19GT1JNQVRfUjhHOEI4QThfU1NDQUxFRDo0MCxWS19GT1JNQVRfUjhHOEI4QThfVUlOVDo0MSxWS19GT1JNQVRfUjhHOEI4QThfU0lOVDo0MixWS19GT1JNQVRfUjhHOEI4QThfU1JHQjo0MyxWS19GT1JNQVRfQjhHOFI4QThfVU5PUk06NDQsVktfRk9STUFUX0I4RzhSOEE4X1NOT1JNOjQ1LFZLX0ZPUk1BVF9COEc4UjhBOF9VU0NBTEVEOjQ2LFZLX0ZPUk1BVF9COEc4UjhBOF9TU0NBTEVEOjQ3LFZLX0ZPUk1BVF9COEc4UjhBOF9VSU5UOjQ4LFZLX0ZPUk1BVF9COEc4UjhBOF9TSU5UOjQ5LFZLX0ZPUk1BVF9COEc4UjhBOF9TUkdCOjUwLFZLX0ZPUk1BVF9BOEI4RzhSOF9VTk9STV9QQUNLMzI6NTEsVktfRk9STUFUX0E4QjhHOFI4X1NOT1JNX1BBQ0szMjo1MixWS19GT1JNQVRfQThCOEc4UjhfVVNDQUxFRF9QQUNLMzI6NTMsVktfRk9STUFUX0E4QjhHOFI4X1NTQ0FMRURfUEFDSzMyOjU0LFZLX0ZPUk1BVF9BOEI4RzhSOF9VSU5UX1BBQ0szMjo1NSxWS19GT1JNQVRfQThCOEc4UjhfU0lOVF9QQUNLMzI6NTYsVktfRk9STUFUX0E4QjhHOFI4X1NSR0JfUEFDSzMyOjU3LFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9VTk9STV9QQUNLMzI6NTgsVktfRk9STUFUX0EyUjEwRzEwQjEwX1NOT1JNX1BBQ0szMjo1OSxWS19GT1JNQVRfQTJSMTBHMTBCMTBfVVNDQUxFRF9QQUNLMzI6NjAsVktfRk9STUFUX0EyUjEwRzEwQjEwX1NTQ0FMRURfUEFDSzMyOjYxLFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9VSU5UX1BBQ0szMjo2MixWS19GT1JNQVRfQTJSMTBHMTBCMTBfU0lOVF9QQUNLMzI6NjMsVktfRk9STUFUX0EyQjEwRzEwUjEwX1VOT1JNX1BBQ0szMjo2NCxWS19GT1JNQVRfQTJCMTBHMTBSMTBfU05PUk1fUEFDSzMyOjY1LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9VU0NBTEVEX1BBQ0szMjo2NixWS19GT1JNQVRfQTJCMTBHMTBSMTBfU1NDQUxFRF9QQUNLMzI6NjcsVktfRk9STUFUX0EyQjEwRzEwUjEwX1VJTlRfUEFDSzMyOjY4LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TSU5UX1BBQ0szMjo2OSxWS19GT1JNQVRfUjE2X1VOT1JNOjcwLFZLX0ZPUk1BVF9SMTZfU05PUk06NzEsVktfRk9STUFUX1IxNl9VU0NBTEVEOjcyLFZLX0ZPUk1BVF9SMTZfU1NDQUxFRDo3MyxWS19GT1JNQVRfUjE2X1VJTlQ6NzQsVktfRk9STUFUX1IxNl9TSU5UOjc1LFZLX0ZPUk1BVF9SMTZfU0ZMT0FUOjc2LFZLX0ZPUk1BVF9SMTZHMTZfVU5PUk06NzcsVktfRk9STUFUX1IxNkcxNl9TTk9STTo3OCxWS19GT1JNQVRfUjE2RzE2X1VTQ0FMRUQ6NzksVktfRk9STUFUX1IxNkcxNl9TU0NBTEVEOjgwLFZLX0ZPUk1BVF9SMTZHMTZfVUlOVDo4MSxWS19GT1JNQVRfUjE2RzE2X1NJTlQ6ODIsVktfRk9STUFUX1IxNkcxNl9TRkxPQVQ6ODMsVktfRk9STUFUX1IxNkcxNkIxNl9VTk9STTo4NCxWS19GT1JNQVRfUjE2RzE2QjE2X1NOT1JNOjg1LFZLX0ZPUk1BVF9SMTZHMTZCMTZfVVNDQUxFRDo4NixWS19GT1JNQVRfUjE2RzE2QjE2X1NTQ0FMRUQ6ODcsVktfRk9STUFUX1IxNkcxNkIxNl9VSU5UOjg4LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU0lOVDo4OSxWS19GT1JNQVRfUjE2RzE2QjE2X1NGTE9BVDo5MCxWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOjkxLFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk06OTIsVktfRk9STUFUX1IxNkcxNkIxNkExNl9VU0NBTEVEOjkzLFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU1NDQUxFRDo5NCxWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6OTUsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UOjk2LFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0ZMT0FUOjk3LFZLX0ZPUk1BVF9SMzJfVUlOVDo5OCxWS19GT1JNQVRfUjMyX1NJTlQ6OTksVktfRk9STUFUX1IzMl9TRkxPQVQ6MTAwLFZLX0ZPUk1BVF9SMzJHMzJfVUlOVDoxMDEsVktfRk9STUFUX1IzMkczMl9TSU5UOjEwMixWS19GT1JNQVRfUjMyRzMyX1NGTE9BVDoxMDMsVktfRk9STUFUX1IzMkczMkIzMl9VSU5UOjEwNCxWS19GT1JNQVRfUjMyRzMyQjMyX1NJTlQ6MTA1LFZLX0ZPUk1BVF9SMzJHMzJCMzJfU0ZMT0FUOjEwNixWS19GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQ6MTA3LFZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVDoxMDgsVktfRk9STUFUX1IzMkczMkIzMkEzMl9TRkxPQVQ6MTA5LFZLX0ZPUk1BVF9SNjRfVUlOVDoxMTAsVktfRk9STUFUX1I2NF9TSU5UOjExMSxWS19GT1JNQVRfUjY0X1NGTE9BVDoxMTIsVktfRk9STUFUX1I2NEc2NF9VSU5UOjExMyxWS19GT1JNQVRfUjY0RzY0X1NJTlQ6MTE0LFZLX0ZPUk1BVF9SNjRHNjRfU0ZMT0FUOjExNSxWS19GT1JNQVRfUjY0RzY0QjY0X1VJTlQ6MTE2LFZLX0ZPUk1BVF9SNjRHNjRCNjRfU0lOVDoxMTcsVktfRk9STUFUX1I2NEc2NEI2NF9TRkxPQVQ6MTE4LFZLX0ZPUk1BVF9SNjRHNjRCNjRBNjRfVUlOVDoxMTksVktfRk9STUFUX1I2NEc2NEI2NEE2NF9TSU5UOjEyMCxWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1NGTE9BVDoxMjEsVktfRk9STUFUX0IxMEcxMVIxMV9VRkxPQVRfUEFDSzMyOjEyMixWS19GT1JNQVRfRTVCOUc5UjlfVUZMT0FUX1BBQ0szMjoxMjMsVktfRk9STUFUX0QxNl9VTk9STToxMjQsVktfRk9STUFUX1g4X0QyNF9VTk9STV9QQUNLMzI6MTI1LFZLX0ZPUk1BVF9EMzJfU0ZMT0FUOjEyNixWS19GT1JNQVRfUzhfVUlOVDoxMjcsVktfRk9STUFUX0QxNl9VTk9STV9TOF9VSU5UOjEyOCxWS19GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6MTI5LFZLX0ZPUk1BVF9EMzJfU0ZMT0FUX1M4X1VJTlQ6MTMwLFZLX0ZPUk1BVF9CQzFfUkdCX1VOT1JNX0JMT0NLOjEzMSxWS19GT1JNQVRfQkMxX1JHQl9TUkdCX0JMT0NLOjEzMixWS19GT1JNQVRfQkMxX1JHQkFfVU5PUk1fQkxPQ0s6MTMzLFZLX0ZPUk1BVF9CQzFfUkdCQV9TUkdCX0JMT0NLOjEzNCxWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLOjEzNSxWS19GT1JNQVRfQkMyX1NSR0JfQkxPQ0s6MTM2LFZLX0ZPUk1BVF9CQzNfVU5PUk1fQkxPQ0s6MTM3LFZLX0ZPUk1BVF9CQzNfU1JHQl9CTE9DSzoxMzgsVktfRk9STUFUX0JDNF9VTk9STV9CTE9DSzoxMzksVktfRk9STUFUX0JDNF9TTk9STV9CTE9DSzoxNDAsVktfRk9STUFUX0JDNV9VTk9STV9CTE9DSzoxNDEsVktfRk9STUFUX0JDNV9TTk9STV9CTE9DSzoxNDIsVktfRk9STUFUX0JDNkhfVUZMT0FUX0JMT0NLOjE0MyxWS19GT1JNQVRfQkM2SF9TRkxPQVRfQkxPQ0s6MTQ0LFZLX0ZPUk1BVF9CQzdfVU5PUk1fQkxPQ0s6MTQ1LFZLX0ZPUk1BVF9CQzdfU1JHQl9CTE9DSzoxNDYsVktfRk9STUFUX0VUQzJfUjhHOEI4X1VOT1JNX0JMT0NLOjE0NyxWS19GT1JNQVRfRVRDMl9SOEc4QjhfU1JHQl9CTE9DSzoxNDgsVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0s6MTQ5LFZLX0ZPUk1BVF9FVEMyX1I4RzhCOEExX1NSR0JfQkxPQ0s6MTUwLFZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLOjE1MSxWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLOjE1MixWS19GT1JNQVRfRUFDX1IxMV9VTk9STV9CTE9DSzoxNTMsVktfRk9STUFUX0VBQ19SMTFfU05PUk1fQkxPQ0s6MTU0LFZLX0ZPUk1BVF9FQUNfUjExRzExX1VOT1JNX0JMT0NLOjE1NSxWS19GT1JNQVRfRUFDX1IxMUcxMV9TTk9STV9CTE9DSzoxNTYsVktfRk9STUFUX0FTVENfNHg0X1VOT1JNX0JMT0NLOjE1NyxWS19GT1JNQVRfQVNUQ180eDRfU1JHQl9CTE9DSzoxNTgsVktfRk9STUFUX0FTVENfNXg0X1VOT1JNX0JMT0NLOjE1OSxWS19GT1JNQVRfQVNUQ181eDRfU1JHQl9CTE9DSzoxNjAsVktfRk9STUFUX0FTVENfNXg1X1VOT1JNX0JMT0NLOjE2MSxWS19GT1JNQVRfQVNUQ181eDVfU1JHQl9CTE9DSzoxNjIsVktfRk9STUFUX0FTVENfNng1X1VOT1JNX0JMT0NLOjE2MyxWS19GT1JNQVRfQVNUQ182eDVfU1JHQl9CTE9DSzoxNjQsVktfRk9STUFUX0FTVENfNng2X1VOT1JNX0JMT0NLOjE2NSxWS19GT1JNQVRfQVNUQ182eDZfU1JHQl9CTE9DSzoxNjYsVktfRk9STUFUX0FTVENfOHg1X1VOT1JNX0JMT0NLOjE2NyxWS19GT1JNQVRfQVNUQ184eDVfU1JHQl9CTE9DSzoxNjgsVktfRk9STUFUX0FTVENfOHg2X1VOT1JNX0JMT0NLOjE2OSxWS19GT1JNQVRfQVNUQ184eDZfU1JHQl9CTE9DSzoxNzAsVktfRk9STUFUX0FTVENfOHg4X1VOT1JNX0JMT0NLOjE3MSxWS19GT1JNQVRfQVNUQ184eDhfU1JHQl9CTE9DSzoxNzIsVktfRk9STUFUX0FTVENfMTB4NV9VTk9STV9CTE9DSzoxNzMsVktfRk9STUFUX0FTVENfMTB4NV9TUkdCX0JMT0NLOjE3NCxWS19GT1JNQVRfQVNUQ18xMHg2X1VOT1JNX0JMT0NLOjE3NSxWS19GT1JNQVRfQVNUQ18xMHg2X1NSR0JfQkxPQ0s6MTc2LFZLX0ZPUk1BVF9BU1RDXzEweDhfVU5PUk1fQkxPQ0s6MTc3LFZLX0ZPUk1BVF9BU1RDXzEweDhfU1JHQl9CTE9DSzoxNzgsVktfRk9STUFUX0FTVENfMTB4MTBfVU5PUk1fQkxPQ0s6MTc5LFZLX0ZPUk1BVF9BU1RDXzEweDEwX1NSR0JfQkxPQ0s6MTgwLFZLX0ZPUk1BVF9BU1RDXzEyeDEwX1VOT1JNX0JMT0NLOjE4MSxWS19GT1JNQVRfQVNUQ18xMngxMF9TUkdCX0JMT0NLOjE4MixWS19GT1JNQVRfQVNUQ18xMngxMl9VTk9STV9CTE9DSzoxODMsVktfRk9STUFUX0FTVENfMTJ4MTJfU1JHQl9CTE9DSzoxODQsVktfRk9STUFUX0c4QjhHOFI4XzQyMl9VTk9STToxMDAwMTU2ZTMsVktfRk9STUFUX0I4RzhSOEc4XzQyMl9VTk9STToxMDAwMTU2MDAxLFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDIwX1VOT1JNOjEwMDAxNTYwMDIsVktfRk9STUFUX0c4X0I4UjhfMlBMQU5FXzQyMF9VTk9STToxMDAwMTU2MDAzLFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDIyX1VOT1JNOjEwMDAxNTYwMDQsVktfRk9STUFUX0c4X0I4UjhfMlBMQU5FXzQyMl9VTk9STToxMDAwMTU2MDA1LFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDQ0X1VOT1JNOjEwMDAxNTYwMDYsVktfRk9STUFUX1IxMFg2X1VOT1JNX1BBQ0sxNjoxMDAwMTU2MDA3LFZLX0ZPUk1BVF9SMTBYNkcxMFg2X1VOT1JNXzJQQUNLMTY6MTAwMDE1NjAwOCxWS19GT1JNQVRfUjEwWDZHMTBYNkIxMFg2QTEwWDZfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDA5LFZLX0ZPUk1BVF9HMTBYNkIxMFg2RzEwWDZSMTBYNl80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDEwLFZLX0ZPUk1BVF9CMTBYNkcxMFg2UjEwWDZHMTBYNl80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDExLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNl9SMTBYNl8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxMixWS19GT1JNQVRfRzEwWDZfQjEwWDZSMTBYNl8yUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxMyxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMTQsVktfRk9STUFUX0cxMFg2X0IxMFg2UjEwWDZfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMTUsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80NDRfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDE2LFZLX0ZPUk1BVF9SMTJYNF9VTk9STV9QQUNLMTY6MTAwMDE1NjAxNyxWS19GT1JNQVRfUjEyWDRHMTJYNF9VTk9STV8yUEFDSzE2OjEwMDAxNTYwMTgsVktfRk9STUFUX1IxMlg0RzEyWDRCMTJYNEExMlg0X1VOT1JNXzRQQUNLMTY6MTAwMDE1NjAxOSxWS19GT1JNQVRfRzEyWDRCMTJYNEcxMlg0UjEyWDRfNDIyX1VOT1JNXzRQQUNLMTY6MTAwMDE1NjAyMCxWS19GT1JNQVRfQjEyWDRHMTJYNFIxMlg0RzEyWDRfNDIyX1VOT1JNXzRQQUNLMTY6MTAwMDE1NjAyMSxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQyMF9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjIsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMF9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjMsVktfRk9STUFUX0cxMlg0X0IxMlg0X1IxMlg0XzNQTEFORV80MjJfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDI0LFZLX0ZPUk1BVF9HMTJYNF9CMTJYNFIxMlg0XzJQTEFORV80MjJfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDI1LFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDQ0X1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyNixWS19GT1JNQVRfRzE2QjE2RzE2UjE2XzQyMl9VTk9STToxMDAwMTU2MDI3LFZLX0ZPUk1BVF9CMTZHMTZSMTZHMTZfNDIyX1VOT1JNOjEwMDAxNTYwMjgsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80MjBfVU5PUk06MTAwMDE1NjAyOSxWS19GT1JNQVRfRzE2X0IxNlIxNl8yUExBTkVfNDIwX1VOT1JNOjEwMDAxNTYwMzAsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80MjJfVU5PUk06MTAwMDE1NjAzMSxWS19GT1JNQVRfRzE2X0IxNlIxNl8yUExBTkVfNDIyX1VOT1JNOjEwMDAxNTYwMzIsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80NDRfVU5PUk06MTAwMDE1NjAzMyxWS19GT1JNQVRfUFZSVEMxXzJCUFBfVU5PUk1fQkxPQ0tfSU1HOjEwMDAwNTRlMyxWS19GT1JNQVRfUFZSVEMxXzRCUFBfVU5PUk1fQkxPQ0tfSU1HOjEwMDAwNTQwMDEsVktfRk9STUFUX1BWUlRDMl8yQlBQX1VOT1JNX0JMT0NLX0lNRzoxMDAwMDU0MDAyLFZLX0ZPUk1BVF9QVlJUQzJfNEJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NDAwMyxWS19GT1JNQVRfUFZSVEMxXzJCUFBfU1JHQl9CTE9DS19JTUc6MTAwMDA1NDAwNCxWS19GT1JNQVRfUFZSVEMxXzRCUFBfU1JHQl9CTE9DS19JTUc6MTAwMDA1NDAwNSxWS19GT1JNQVRfUFZSVEMyXzJCUFBfU1JHQl9CTE9DS19JTUc6MTAwMDA1NDAwNixWS19GT1JNQVRfUFZSVEMyXzRCUFBfU1JHQl9CTE9DS19JTUc6MTAwMDA1NDAwNyxWS19GT1JNQVRfQVNUQ180eDRfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2ZTMsVktfRk9STUFUX0FTVENfNXg0X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwMSxWS19GT1JNQVRfQVNUQ181eDVfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDAyLFZLX0ZPUk1BVF9BU1RDXzZ4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDMsVktfRk9STUFUX0FTVENfNng2X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwNCxWS19GT1JNQVRfQVNUQ184eDVfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA1LFZLX0ZPUk1BVF9BU1RDXzh4Nl9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDYsVktfRk9STUFUX0FTVENfOHg4X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwNyxWS19GT1JNQVRfQVNUQ18xMHg1X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwOCxWS19GT1JNQVRfQVNUQ18xMHg2X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwOSxWS19GT1JNQVRfQVNUQ18xMHg4X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAxMCxWS19GT1JNQVRfQVNUQ18xMHgxMF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMTEsVktfRk9STUFUX0FTVENfMTJ4MTBfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEyLFZLX0ZPUk1BVF9BU1RDXzEyeDEyX1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAxMyxWS19GT1JNQVRfRzhCOEc4UjhfNDIyX1VOT1JNX0tIUjoxMDAwMTU2ZTMsVktfRk9STUFUX0I4RzhSOEc4XzQyMl9VTk9STV9LSFI6MTAwMDE1NjAwMSxWS19GT1JNQVRfRzhfQjhfUjhfM1BMQU5FXzQyMF9VTk9STV9LSFI6MTAwMDE1NjAwMixWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIwX1VOT1JNX0tIUjoxMDAwMTU2MDAzLFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDA0LFZLX0ZPUk1BVF9HOF9COFI4XzJQTEFORV80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMDUsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80NDRfVU5PUk1fS0hSOjEwMDAxNTYwMDYsVktfRk9STUFUX1IxMFg2X1VOT1JNX1BBQ0sxNl9LSFI6MTAwMDE1NjAwNyxWS19GT1JNQVRfUjEwWDZHMTBYNl9VTk9STV8yUEFDSzE2X0tIUjoxMDAwMTU2MDA4LFZLX0ZPUk1BVF9SMTBYNkcxMFg2QjEwWDZBMTBYNl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDA5LFZLX0ZPUk1BVF9HMTBYNkIxMFg2RzEwWDZSMTBYNl80MjJfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxMCxWS19GT1JNQVRfQjEwWDZHMTBYNlIxMFg2RzEwWDZfNDIyX1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMTEsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80MjBfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxMixWS19GT1JNQVRfRzEwWDZfQjEwWDZSMTBYNl8yUExBTkVfNDIwX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMTMsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80MjJfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxNCxWS19GT1JNQVRfRzEwWDZfQjEwWDZSMTBYNl8yUExBTkVfNDIyX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMTUsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80NDRfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxNixWS19GT1JNQVRfUjEyWDRfVU5PUk1fUEFDSzE2X0tIUjoxMDAwMTU2MDE3LFZLX0ZPUk1BVF9SMTJYNEcxMlg0X1VOT1JNXzJQQUNLMTZfS0hSOjEwMDAxNTYwMTgsVktfRk9STUFUX1IxMlg0RzEyWDRCMTJYNEExMlg0X1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMTksVktfRk9STUFUX0cxMlg0QjEyWDRHMTJYNFIxMlg0XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDIwLFZLX0ZPUk1BVF9CMTJYNEcxMlg0UjEyWDRHMTJYNF80MjJfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAyMSxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDIyLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNFIxMlg0XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAyMyxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDI0LFZLX0ZPUk1BVF9HMTJYNF9CMTJYNFIxMlg0XzJQTEFORV80MjJfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAyNSxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDI2LFZLX0ZPUk1BVF9HMTZCMTZHMTZSMTZfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDI3LFZLX0ZPUk1BVF9CMTZHMTZSMTZHMTZfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDI4LFZLX0ZPUk1BVF9HMTZfQjE2X1IxNl8zUExBTkVfNDIwX1VOT1JNX0tIUjoxMDAwMTU2MDI5LFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMzAsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMzEsVktfRk9STUFUX0cxNl9CMTZSMTZfMlBMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAzMixWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQ0NF9VTk9STV9LSFI6MTAwMDE1NjAzM30sUFI9T2JqZWN0LmZyZWV6ZShfWnQpfSk7ZnVuY3Rpb24gTVgodCl7cmV0dXJuIHR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHQpOkJ1ZmZlci5mcm9tKHQpLnRvU3RyaW5nKCJ1dGY4Iil9ZnVuY3Rpb24gVVgodCl7bGV0IGU9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LFBvLmxlbmd0aCk7aWYoZVswXSE9PVBvWzBdfHxlWzFdIT09UG9bMV18fGVbMl0hPT1Qb1syXXx8ZVszXSE9PVBvWzNdfHxlWzRdIT09UG9bNF18fGVbNV0hPT1Qb1s1XXx8ZVs2XSE9PVBvWzZdfHxlWzddIT09UG9bN118fGVbOF0hPT1Qb1s4XXx8ZVs5XSE9PVBvWzldfHxlWzEwXSE9PVBvWzEwXXx8ZVsxMV0hPT1Qb1sxMV0pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIEtUWCAyLjAgaWRlbnRpZmllci4iKTtsZXQgaT1uZXcgYkIsbj0xNypVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxzPW5ldyBZZCh0LFBvLmxlbmd0aCxuLCEwKTtpLnZrRm9ybWF0PXMuX25leHRVaW50MzIoKSxpLnR5cGVTaXplPXMuX25leHRVaW50MzIoKSxpLnBpeGVsV2lkdGg9cy5fbmV4dFVpbnQzMigpLGkucGl4ZWxIZWlnaHQ9cy5fbmV4dFVpbnQzMigpLGkucGl4ZWxEZXB0aD1zLl9uZXh0VWludDMyKCksaS5sYXllckNvdW50PXMuX25leHRVaW50MzIoKSxpLmZhY2VDb3VudD1zLl9uZXh0VWludDMyKCk7bGV0IG89cy5fbmV4dFVpbnQzMigpO2kuc3VwZXJjb21wcmVzc2lvblNjaGVtZT1zLl9uZXh0VWludDMyKCk7bGV0IHI9cy5fbmV4dFVpbnQzMigpLGE9cy5fbmV4dFVpbnQzMigpLGg9cy5fbmV4dFVpbnQzMigpLEE9cy5fbmV4dFVpbnQzMigpLGQ9cy5fbmV4dFVpbnQ2NCgpLGY9cy5fbmV4dFVpbnQ2NCgpLEU9byozKjgsXz1uZXcgWWQodCxQby5sZW5ndGgrbixFLCEwKTtmb3IobGV0IHR0PTA7dHQ8bzt0dCsrKWkubGV2ZWxzLnB1c2goe2xldmVsRGF0YTpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQrXy5fbmV4dFVpbnQ2NCgpLF8uX25leHRVaW50NjQoKSksdW5jb21wcmVzc2VkQnl0ZUxlbmd0aDpfLl9uZXh0VWludDY0KCl9KTtsZXQgUj1uZXcgWWQodCxyLGEsITApLEk9e3ZlbmRvcklkOlIuX3NraXAoNCkuX25leHRVaW50MTYoKSxkZXNjcmlwdG9yVHlwZTpSLl9uZXh0VWludDE2KCksdmVyc2lvbk51bWJlcjpSLl9uZXh0VWludDE2KCksZGVzY3JpcHRvckJsb2NrU2l6ZTpSLl9uZXh0VWludDE2KCksY29sb3JNb2RlbDpSLl9uZXh0VWludDgoKSxjb2xvclByaW1hcmllczpSLl9uZXh0VWludDgoKSx0cmFuc2ZlckZ1bmN0aW9uOlIuX25leHRVaW50OCgpLGZsYWdzOlIuX25leHRVaW50OCgpLHRleGVsQmxvY2tEaW1lbnNpb246W1IuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpXSxieXRlc1BsYW5lOltSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKSxSLl9uZXh0VWludDgoKV0sc2FtcGxlczpbXX0sVD0oSS5kZXNjcmlwdG9yQmxvY2tTaXplLzQtNikvNDtmb3IobGV0IHR0PTA7dHQ8VDt0dCsrKXtsZXQgQj17Yml0T2Zmc2V0OlIuX25leHRVaW50MTYoKSxiaXRMZW5ndGg6Ui5fbmV4dFVpbnQ4KCksY2hhbm5lbFR5cGU6Ui5fbmV4dFVpbnQ4KCksc2FtcGxlUG9zaXRpb246W1IuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpXSxzYW1wbGVMb3dlcjotMS8wLHNhbXBsZVVwcGVyOjEvMH07Qi5jaGFubmVsVHlwZSY2ND8oQi5zYW1wbGVMb3dlcj1SLl9uZXh0SW50MzIoKSxCLnNhbXBsZVVwcGVyPVIuX25leHRJbnQzMigpKTooQi5zYW1wbGVMb3dlcj1SLl9uZXh0VWludDMyKCksQi5zYW1wbGVVcHBlcj1SLl9uZXh0VWludDMyKCkpLEkuc2FtcGxlc1t0dF09Qn1pLmRhdGFGb3JtYXREZXNjcmlwdG9yLmxlbmd0aD0wLGkuZGF0YUZvcm1hdERlc2NyaXB0b3IucHVzaChJKTtsZXQgRj1uZXcgWWQodCxoLEEsITApO2Zvcig7Ri5fb2Zmc2V0PEE7KXtsZXQgdHQ9Ri5fbmV4dFVpbnQzMigpLEI9Ri5fc2Nhbih0dCksSXQ9TVgoQik7aWYoaS5rZXlWYWx1ZVtJdF09Ri5fbmV4dFVpbnQ4QXJyYXkodHQtQi5ieXRlTGVuZ3RoLTEpLEl0Lm1hdGNoKC9ea3R4L2kpKXtsZXQgWXQ9TVgoaS5rZXlWYWx1ZVtJdF0pO2kua2V5VmFsdWVbSXRdPVl0LnN1YnN0cmluZygwLFl0Lmxhc3RJbmRleE9mKCJcMCIpKX1sZXQgZ3Q9dHQlND80LXR0JTQ6MDtGLl9za2lwKGd0KX1pZihmPD0wKXJldHVybiBpO2xldCBiPW5ldyBZZCh0LGQsZiwhMCksRz1iLl9uZXh0VWludDE2KCksTT1iLl9uZXh0VWludDE2KCksUT1iLl9uZXh0VWludDMyKCksVT1iLl9uZXh0VWludDMyKCksaz1iLl9uZXh0VWludDMyKCkseT1iLl9uZXh0VWludDMyKCksYz1bXTtmb3IobGV0IHR0PTA7dHQ8bzt0dCsrKWMucHVzaCh7aW1hZ2VGbGFnczpiLl9uZXh0VWludDMyKCkscmdiU2xpY2VCeXRlT2Zmc2V0OmIuX25leHRVaW50MzIoKSxyZ2JTbGljZUJ5dGVMZW5ndGg6Yi5fbmV4dFVpbnQzMigpLGFscGhhU2xpY2VCeXRlT2Zmc2V0OmIuX25leHRVaW50MzIoKSxhbHBoYVNsaWNlQnl0ZUxlbmd0aDpiLl9uZXh0VWludDMyKCl9KTtsZXQgZz1kK2IuX29mZnNldCxWPWcrUSxEPVYrVSx3PUQrayx4PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCtnLFEpLEg9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K1YsVSksaj1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQrRCxrKSxYPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCt3LHkpO3JldHVybiBpLmdsb2JhbERhdGE9e2VuZHBvaW50Q291bnQ6RyxzZWxlY3RvckNvdW50Ok0saW1hZ2VEZXNjczpjLGVuZHBvaW50c0RhdGE6eCxzZWxlY3RvcnNEYXRhOkgsdGFibGVzRGF0YTpqLGV4dGVuZGVkRGF0YTpYfSxpfXZhciBiQixZZCxmVmUsUG8sUVg9TygoKT0+e2JCPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy52a0Zvcm1hdD0wLHRoaXMudHlwZVNpemU9MSx0aGlzLnBpeGVsV2lkdGg9MCx0aGlzLnBpeGVsSGVpZ2h0PTAsdGhpcy5waXhlbERlcHRoPTAsdGhpcy5sYXllckNvdW50PTAsdGhpcy5mYWNlQ291bnQ9MSx0aGlzLnN1cGVyY29tcHJlc3Npb25TY2hlbWU9MCx0aGlzLmxldmVscz1bXSx0aGlzLmRhdGFGb3JtYXREZXNjcmlwdG9yPVt7dmVuZG9ySWQ6MCxkZXNjcmlwdG9yVHlwZTowLGRlc2NyaXB0b3JCbG9ja1NpemU6MCx2ZXJzaW9uTnVtYmVyOjIsY29sb3JNb2RlbDowLGNvbG9yUHJpbWFyaWVzOjEsdHJhbnNmZXJGdW5jdGlvbjoyLGZsYWdzOjAsdGV4ZWxCbG9ja0RpbWVuc2lvbjpbMCwwLDAsMF0sYnl0ZXNQbGFuZTpbMCwwLDAsMCwwLDAsMCwwXSxzYW1wbGVzOltdfV0sdGhpcy5rZXlWYWx1ZT17fSx0aGlzLmdsb2JhbERhdGE9bnVsbH19LFlkPWNsYXNze2NvbnN0cnVjdG9yKGUsaSxuLHMpe3RoaXMuX2RhdGFWaWV3PXZvaWQgMCx0aGlzLl9saXR0bGVFbmRpYW49dm9pZCAwLHRoaXMuX29mZnNldD12b2lkIDAsdGhpcy5fZGF0YVZpZXc9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCtpLG4pLHRoaXMuX2xpdHRsZUVuZGlhbj1zLHRoaXMuX29mZnNldD0wfV9uZXh0VWludDgoKXtsZXQgZT10aGlzLl9kYXRhVmlldy5nZXRVaW50OCh0aGlzLl9vZmZzZXQpO3JldHVybiB0aGlzLl9vZmZzZXQrPTEsZX1fbmV4dFVpbnQxNigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQxNih0aGlzLl9vZmZzZXQsdGhpcy5fbGl0dGxlRW5kaWFuKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz0yLGV9X25leHRVaW50MzIoKXtsZXQgZT10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0LHRoaXMuX2xpdHRsZUVuZGlhbik7cmV0dXJuIHRoaXMuX29mZnNldCs9NCxlfV9uZXh0VWludDY0KCl7bGV0IGU9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDMyKHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pLGk9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDMyKHRoaXMuX29mZnNldCs0LHRoaXMuX2xpdHRsZUVuZGlhbiksbj1lKzIqKjMyKmk7cmV0dXJuIHRoaXMuX29mZnNldCs9OCxufV9uZXh0SW50MzIoKXtsZXQgZT10aGlzLl9kYXRhVmlldy5nZXRJbnQzMih0aGlzLl9vZmZzZXQsdGhpcy5fbGl0dGxlRW5kaWFuKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz00LGV9X25leHRVaW50OEFycmF5KGUpe2xldCBpPW5ldyBVaW50OEFycmF5KHRoaXMuX2RhdGFWaWV3LmJ1ZmZlcix0aGlzLl9kYXRhVmlldy5ieXRlT2Zmc2V0K3RoaXMuX29mZnNldCxlKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz1lLGl9X3NraXAoZSl7cmV0dXJuIHRoaXMuX29mZnNldCs9ZSx0aGlzfV9zY2FuKGUsaT0wKXtsZXQgbj10aGlzLl9vZmZzZXQscz0wO2Zvcig7dGhpcy5fZGF0YVZpZXcuZ2V0VWludDgodGhpcy5fb2Zmc2V0KSE9PWkmJnM8ZTspcysrLHRoaXMuX29mZnNldCsrO3JldHVybiBzPGUmJnRoaXMuX29mZnNldCsrLG5ldyBVaW50OEFycmF5KHRoaXMuX2RhdGFWaWV3LmJ1ZmZlcix0aGlzLl9kYXRhVmlldy5ieXRlT2Zmc2V0K24scyl9fSxmVmU9bmV3IFVpbnQ4QXJyYXkoWzBdKSxQbz1bMTcxLDc1LDg0LDg4LDMyLDUwLDQ4LDE4NywxMywxMCwyNiwxMF19KTt2YXIga1g9dHMoKEhnLFlCKT0+e3ZhciBGQj1mdW5jdGlvbigpe3ZhciB0PXR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM6dm9pZCAwO3JldHVybiB0eXBlb2YgX19maWxlbmFtZTwidSImJih0PXR8fF9fZmlsZW5hbWUpLGZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIGk9dHlwZW9mIGU8InUiP2U6e30sbixzO2kucmVhZHk9bmV3IFByb21pc2UoZnVuY3Rpb24oSix2KXtuPUoscz12fSk7dmFyIG89e30scjtmb3IociBpbiBpKWkuaGFzT3duUHJvcGVydHkocikmJihvW3JdPWlbcl0pO3ZhciBhPVtdLGg9Ii4vdGhpcy5wcm9ncmFtIixBPWZ1bmN0aW9uKEosdil7dGhyb3cgdn0sZD0hMSxmPSExLEU9ITEsXz0hMTtkPXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiLGY9dHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIsRT10eXBlb2YgcHJvY2Vzcz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZT09InN0cmluZyIsXz0hZCYmIUUmJiFmO3ZhciBSPSIiO2Z1bmN0aW9uIEkoSil7cmV0dXJuIGkubG9jYXRlRmlsZT9pLmxvY2F0ZUZpbGUoSixSKTpSK0p9dmFyIEMsTixULEYsYixHO0U/KGY/Uj1YbygicGF0aCIpLmRpcm5hbWUoUikrIi8iOlI9X19kaXJuYW1lKyIvIixDPWZ1bmN0aW9uKHYsc3Qpe3JldHVybiBifHwoYj1YbygiZnMiKSksR3x8KEc9WG8oInBhdGgiKSksdj1HLm5vcm1hbGl6ZSh2KSxiLnJlYWRGaWxlU3luYyh2LHN0P251bGw6InV0ZjgiKX0sVD1mdW5jdGlvbih2KXt2YXIgc3Q9Qyh2LCEwKTtyZXR1cm4gc3QuYnVmZmVyfHwoc3Q9bmV3IFVpbnQ4QXJyYXkoc3QpKSx3KHN0LmJ1ZmZlciksc3R9LHByb2Nlc3MuYXJndi5sZW5ndGg+MSYmKGg9cHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKSksYT1wcm9jZXNzLmFyZ3Yuc2xpY2UoMikscHJvY2Vzcy5vbigidW5jYXVnaHRFeGNlcHRpb24iLGZ1bmN0aW9uKEope2lmKCEoSiBpbnN0YW5jZW9mIF9hKSl0aHJvdyBKfSkscHJvY2Vzcy5vbigidW5oYW5kbGVkUmVqZWN0aW9uIixraSksQT1mdW5jdGlvbihKKXtwcm9jZXNzLmV4aXQoSil9LGkuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9KTpfPyh0eXBlb2YgcmVhZDwidSImJihDPWZ1bmN0aW9uKHYpe3JldHVybiByZWFkKHYpfSksVD1mdW5jdGlvbih2KXt2YXIgc3Q7cmV0dXJuIHR5cGVvZiByZWFkYnVmZmVyPT0iZnVuY3Rpb24iP25ldyBVaW50OEFycmF5KHJlYWRidWZmZXIodikpOihzdD1yZWFkKHYsImJpbmFyeSIpLHcodHlwZW9mIHN0PT0ib2JqZWN0Iiksc3QpfSx0eXBlb2Ygc2NyaXB0QXJnczwidSI/YT1zY3JpcHRBcmdzOnR5cGVvZiBhcmd1bWVudHM8InUiJiYoYT1hcmd1bWVudHMpLHR5cGVvZiBxdWl0PT0iZnVuY3Rpb24iJiYoQT1mdW5jdGlvbihKKXtxdWl0KEopfSksdHlwZW9mIHByaW50PCJ1IiYmKHR5cGVvZiBjb25zb2xlPiJ1IiYmKGNvbnNvbGU9e30pLGNvbnNvbGUubG9nPXByaW50LGNvbnNvbGUud2Fybj1jb25zb2xlLmVycm9yPXR5cGVvZiBwcmludEVycjwidSI/cHJpbnRFcnI6cHJpbnQpKTooZHx8ZikmJihmP1I9c2VsZi5sb2NhdGlvbi5ocmVmOnR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihSPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjKSx0JiYoUj10KSxSLmluZGV4T2YoImJsb2I6IikhPT0wP1I9Ui5zdWJzdHIoMCxSLmxhc3RJbmRleE9mKCIvIikrMSk6Uj0iIixDPWZ1bmN0aW9uKEope3ZhciB2PW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gdi5vcGVuKCJHRVQiLEosITEpLHYuc2VuZChudWxsKSx2LnJlc3BvbnNlVGV4dH0sZiYmKFQ9ZnVuY3Rpb24oSil7dmFyIHY9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiB2Lm9wZW4oIkdFVCIsSiwhMSksdi5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIix2LnNlbmQobnVsbCksbmV3IFVpbnQ4QXJyYXkodi5yZXNwb25zZSl9KSxOPWZ1bmN0aW9uKEosdixzdCl7dmFyIFJ0PW5ldyBYTUxIdHRwUmVxdWVzdDtSdC5vcGVuKCJHRVQiLEosITApLFJ0LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLFJ0Lm9ubG9hZD1mdW5jdGlvbigpe2lmKFJ0LnN0YXR1cz09MjAwfHxSdC5zdGF0dXM9PTAmJlJ0LnJlc3BvbnNlKXt2KFJ0LnJlc3BvbnNlKTtyZXR1cm59c3QoKX0sUnQub25lcnJvcj1zdCxSdC5zZW5kKG51bGwpfSxGPWZ1bmN0aW9uKEope2RvY3VtZW50LnRpdGxlPUp9KTt2YXIgTT1pLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLFE9aS5wcmludEVycnx8Y29uc29sZS53YXJuLmJpbmQoY29uc29sZSk7Zm9yKHIgaW4gbylvLmhhc093blByb3BlcnR5KHIpJiYoaVtyXT1vW3JdKTtvPW51bGwsaS5hcmd1bWVudHMmJihhPWkuYXJndW1lbnRzKSxpLnRoaXNQcm9ncmFtJiYoaD1pLnRoaXNQcm9ncmFtKSxpLnF1aXQmJihBPWkucXVpdCk7dmFyIFU9MCxrPWZ1bmN0aW9uKEope1U9Sn0seTtpLndhc21CaW5hcnkmJih5PWkud2FzbUJpbmFyeSk7dmFyIGM9aS5ub0V4aXRSdW50aW1lfHwhMDt0eXBlb2YgV2ViQXNzZW1ibHkhPSJvYmplY3QiJiZraSgibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBnLFY9ITEsRDtmdW5jdGlvbiB3KEosdil7Snx8a2koIkFzc2VydGlvbiBmYWlsZWQ6ICIrdil9dmFyIHg9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDA7ZnVuY3Rpb24gSChKLHYsc3Qpe2Zvcih2YXIgUnQ9ditzdCxTdD12O0pbU3RdJiYhKFN0Pj1SdCk7KSsrU3Q7aWYoU3Qtdj4xNiYmSi5zdWJhcnJheSYmeClyZXR1cm4geC5kZWNvZGUoSi5zdWJhcnJheSh2LFN0KSk7Zm9yKHZhciBHdD0iIjt2PFN0Oyl7dmFyIGp0PUpbdisrXTtpZighKGp0JjEyOCkpe0d0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGp0KTtjb250aW51ZX12YXIgVXQ9Slt2KytdJjYzO2lmKChqdCYyMjQpPT0xOTIpe0d0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChqdCYzMSk8PDZ8VXQpO2NvbnRpbnVlfXZhciBEdD1KW3YrK10mNjM7aWYoKGp0JjI0MCk9PTIyND9qdD0oanQmMTUpPDwxMnxVdDw8NnxEdDpqdD0oanQmNyk8PDE4fFV0PDwxMnxEdDw8NnxKW3YrK10mNjMsanQ8NjU1MzYpR3QrPVN0cmluZy5mcm9tQ2hhckNvZGUoanQpO2Vsc2V7dmFyIHBlPWp0LTY1NTM2O0d0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fHBlPj4xMCw1NjMyMHxwZSYxMDIzKX19cmV0dXJuIEd0fWZ1bmN0aW9uIGooSix2KXtyZXR1cm4gSj9IKGVlLEosdik6IiJ9ZnVuY3Rpb24gWChKLHYsc3QsUnQpe2lmKCEoUnQ+MCkpcmV0dXJuIDA7Zm9yKHZhciBTdD1zdCxHdD1zdCtSdC0xLGp0PTA7anQ8Si5sZW5ndGg7KytqdCl7dmFyIFV0PUouY2hhckNvZGVBdChqdCk7aWYoVXQ+PTU1Mjk2JiZVdDw9NTczNDMpe3ZhciBEdD1KLmNoYXJDb2RlQXQoKytqdCk7VXQ9NjU1MzYrKChVdCYxMDIzKTw8MTApfER0JjEwMjN9aWYoVXQ8PTEyNyl7aWYoc3Q+PUd0KWJyZWFrO3Zbc3QrK109VXR9ZWxzZSBpZihVdDw9MjA0Nyl7aWYoc3QrMT49R3QpYnJlYWs7dltzdCsrXT0xOTJ8VXQ+PjYsdltzdCsrXT0xMjh8VXQmNjN9ZWxzZSBpZihVdDw9NjU1MzUpe2lmKHN0KzI+PUd0KWJyZWFrO3Zbc3QrK109MjI0fFV0Pj4xMix2W3N0KytdPTEyOHxVdD4+NiY2Myx2W3N0KytdPTEyOHxVdCY2M31lbHNle2lmKHN0KzM+PUd0KWJyZWFrO3Zbc3QrK109MjQwfFV0Pj4xOCx2W3N0KytdPTEyOHxVdD4+MTImNjMsdltzdCsrXT0xMjh8VXQ+PjYmNjMsdltzdCsrXT0xMjh8VXQmNjN9fXJldHVybiB2W3N0XT0wLHN0LVN0fWZ1bmN0aW9uIHR0KEosdixzdCl7cmV0dXJuIFgoSixlZSx2LHN0KX1mdW5jdGlvbiBCKEope2Zvcih2YXIgdj0wLHN0PTA7c3Q8Si5sZW5ndGg7KytzdCl7dmFyIFJ0PUouY2hhckNvZGVBdChzdCk7UnQ+PTU1Mjk2JiZSdDw9NTczNDMmJihSdD02NTUzNisoKFJ0JjEwMjMpPDwxMCl8Si5jaGFyQ29kZUF0KCsrc3QpJjEwMjMpLFJ0PD0xMjc/Kyt2OlJ0PD0yMDQ3P3YrPTI6UnQ8PTY1NTM1P3YrPTM6dis9NH1yZXR1cm4gdn12YXIgSXQ9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIik6dm9pZCAwO2Z1bmN0aW9uIGd0KEosdil7Zm9yKHZhciBzdD1KLFJ0PXN0Pj4xLFN0PVJ0K3YvMjshKFJ0Pj1TdCkmJmplW1J0XTspKytSdDtpZihzdD1SdDw8MSxzdC1KPjMyJiZJdClyZXR1cm4gSXQuZGVjb2RlKGVlLnN1YmFycmF5KEosc3QpKTtmb3IodmFyIEd0PSIiLGp0PTA7IShqdD49di8yKTsrK2p0KXt2YXIgVXQ9Y2VbSitqdCoyPj4xXTtpZihVdD09MClicmVhaztHdCs9U3RyaW5nLmZyb21DaGFyQ29kZShVdCl9cmV0dXJuIEd0fWZ1bmN0aW9uIFl0KEosdixzdCl7aWYoc3Q9PT12b2lkIDAmJihzdD0yMTQ3NDgzNjQ3KSxzdDwyKXJldHVybiAwO3N0LT0yO2Zvcih2YXIgUnQ9dixTdD1zdDxKLmxlbmd0aCoyP3N0LzI6Si5sZW5ndGgsR3Q9MDtHdDxTdDsrK0d0KXt2YXIganQ9Si5jaGFyQ29kZUF0KEd0KTtjZVt2Pj4xXT1qdCx2Kz0yfXJldHVybiBjZVt2Pj4xXT0wLHYtUnR9ZnVuY3Rpb24gTXQoSil7cmV0dXJuIEoubGVuZ3RoKjJ9ZnVuY3Rpb24gQ3QoSix2KXtmb3IodmFyIHN0PTAsUnQ9IiI7IShzdD49di80KTspe3ZhciBTdD1PZVtKK3N0KjQ+PjJdO2lmKFN0PT0wKWJyZWFrO2lmKCsrc3QsU3Q+PTY1NTM2KXt2YXIgR3Q9U3QtNjU1MzY7UnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8R3Q+PjEwLDU2MzIwfEd0JjEwMjMpfWVsc2UgUnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoU3QpfXJldHVybiBSdH1mdW5jdGlvbiB6dChKLHYsc3Qpe2lmKHN0PT09dm9pZCAwJiYoc3Q9MjE0NzQ4MzY0Nyksc3Q8NClyZXR1cm4gMDtmb3IodmFyIFJ0PXYsU3Q9UnQrc3QtNCxHdD0wO0d0PEoubGVuZ3RoOysrR3Qpe3ZhciBqdD1KLmNoYXJDb2RlQXQoR3QpO2lmKGp0Pj01NTI5NiYmanQ8PTU3MzQzKXt2YXIgVXQ9Si5jaGFyQ29kZUF0KCsrR3QpO2p0PTY1NTM2KygoanQmMTAyMyk8PDEwKXxVdCYxMDIzfWlmKE9lW3Y+PjJdPWp0LHYrPTQsdis0PlN0KWJyZWFrfXJldHVybiBPZVt2Pj4yXT0wLHYtUnR9ZnVuY3Rpb24ga3QoSil7Zm9yKHZhciB2PTAsc3Q9MDtzdDxKLmxlbmd0aDsrK3N0KXt2YXIgUnQ9Si5jaGFyQ29kZUF0KHN0KTtSdD49NTUyOTYmJlJ0PD01NzM0MyYmKytzdCx2Kz00fXJldHVybiB2fWZ1bmN0aW9uIEp0KEosdil7cmV0dXJuIEoldj4wJiYoSis9di1KJXYpLEp9dmFyIFd0LEZ0LGVlLGNlLGplLE9lLE1lLFVlLENlO2Z1bmN0aW9uIGJlKEope1d0PUosaS5IRUFQOD1GdD1uZXcgSW50OEFycmF5KEopLGkuSEVBUDE2PWNlPW5ldyBJbnQxNkFycmF5KEopLGkuSEVBUDMyPU9lPW5ldyBJbnQzMkFycmF5KEopLGkuSEVBUFU4PWVlPW5ldyBVaW50OEFycmF5KEopLGkuSEVBUFUxNj1qZT1uZXcgVWludDE2QXJyYXkoSiksaS5IRUFQVTMyPU1lPW5ldyBVaW50MzJBcnJheShKKSxpLkhFQVBGMzI9VWU9bmV3IEZsb2F0MzJBcnJheShKKSxpLkhFQVBGNjQ9Q2U9bmV3IEZsb2F0NjRBcnJheShKKX12YXIgbmk9aS5JTklUSUFMX01FTU9SWXx8MTY3NzcyMTYsemUsR2U9W10sVWk9W10sUmk9W10sc2k9W10scWU9ITE7ZnVuY3Rpb24gVmkoKXtpZihpLnByZVJ1bilmb3IodHlwZW9mIGkucHJlUnVuPT0iZnVuY3Rpb24iJiYoaS5wcmVSdW49W2kucHJlUnVuXSk7aS5wcmVSdW4ubGVuZ3RoOylCaShpLnByZVJ1bi5zaGlmdCgpKTthbyhHZSl9ZnVuY3Rpb24gZ24oKXtxZT0hMCxhbyhVaSl9ZnVuY3Rpb24gRGUoKXthbyhSaSl9ZnVuY3Rpb24gWWUoKXtpZihpLnBvc3RSdW4pZm9yKHR5cGVvZiBpLnBvc3RSdW49PSJmdW5jdGlvbiImJihpLnBvc3RSdW49W2kucG9zdFJ1bl0pO2kucG9zdFJ1bi5sZW5ndGg7KU5lKGkucG9zdFJ1bi5zaGlmdCgpKTthbyhzaSl9ZnVuY3Rpb24gQmkoSil7R2UudW5zaGlmdChKKX1mdW5jdGlvbiBBbihKKXtVaS51bnNoaWZ0KEopfWZ1bmN0aW9uIE5lKEope3NpLnVuc2hpZnQoSil9dmFyIGVpPTAsX249bnVsbCxocz1udWxsO2Z1bmN0aW9uIFFpKEope2VpKyssaS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZpLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoZWkpfWZ1bmN0aW9uIG5uKEope2lmKGVpLS0saS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZpLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoZWkpLGVpPT0wJiYoX24hPT1udWxsJiYoY2xlYXJJbnRlcnZhbChfbiksX249bnVsbCksaHMpKXt2YXIgdj1ocztocz1udWxsLHYoKX19aS5wcmVsb2FkZWRJbWFnZXM9e30saS5wcmVsb2FkZWRBdWRpb3M9e307ZnVuY3Rpb24ga2koSil7aS5vbkFib3J0JiZpLm9uQWJvcnQoSiksSis9IiIsUShKKSxWPSEwLEQ9MSxKPSJhYm9ydCgiK0orIikuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uIjt2YXIgdj1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKEopO3Rocm93IHModiksdn1mdW5jdGlvbiBzbihKLHYpe3JldHVybiBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGg/Si5zdGFydHNXaXRoKHYpOkouaW5kZXhPZih2KT09PTB9dmFyIENzPSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIjtmdW5jdGlvbiBjcyhKKXtyZXR1cm4gc24oSixDcyl9dmFyIHhuPSJmaWxlOi8vIjtmdW5jdGlvbiBQbihKKXtyZXR1cm4gc24oSix4bil9dmFyIEFpPSJiYXNpc190cmFuc2NvZGVyLndhc20iO2NzKEFpKXx8KEFpPUkoQWkpKTtmdW5jdGlvbiBDaShKKXt0cnl7aWYoSj09QWkmJnkpcmV0dXJuIG5ldyBVaW50OEFycmF5KHkpO2lmKFQpcmV0dXJuIFQoSik7dGhyb3ciYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifWNhdGNoKHYpe2tpKHYpfX1mdW5jdGlvbiBKbigpe2lmKCF5JiYoZHx8Zikpe2lmKHR5cGVvZiBmZXRjaD09ImZ1bmN0aW9uIiYmIVBuKEFpKSlyZXR1cm4gZmV0Y2goQWkse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKEope2lmKCFKLm9rKXRocm93ImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyIrQWkrIiciO3JldHVybiBKLmFycmF5QnVmZmVyKCl9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBDaShBaSl9KTtpZihOKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihKLHYpe04oQWksZnVuY3Rpb24oc3Qpe0oobmV3IFVpbnQ4QXJyYXkoc3QpKX0sdil9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBDaShBaSl9KX1mdW5jdGlvbiBscygpe3ZhciBKPXthOmZtfTtmdW5jdGlvbiB2KGp0LFV0KXt2YXIgRHQ9anQuZXhwb3J0cztpLmFzbT1EdCxnPWkuYXNtLkssYmUoZy5idWZmZXIpLHplPWkuYXNtLk8sQW4oaS5hc20uTCksbm4oIndhc20taW5zdGFudGlhdGUiKX1RaSgid2FzbS1pbnN0YW50aWF0ZSIpO2Z1bmN0aW9uIHN0KGp0KXt2KGp0Lmluc3RhbmNlKX1mdW5jdGlvbiBSdChqdCl7cmV0dXJuIEpuKCkudGhlbihmdW5jdGlvbihVdCl7dmFyIER0PVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKFV0LEopO3JldHVybiBEdH0pLnRoZW4oanQsZnVuY3Rpb24oVXQpe1EoImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICIrVXQpLGtpKFV0KX0pfWZ1bmN0aW9uIFN0KCl7cmV0dXJuIXkmJnR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZz09ImZ1bmN0aW9uIiYmIWNzKEFpKSYmIVBuKEFpKSYmdHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iP2ZldGNoKEFpLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihqdCl7dmFyIFV0PVdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGp0LEopO3JldHVybiBVdC50aGVuKHN0LGZ1bmN0aW9uKER0KXtyZXR1cm4gUSgid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIrRHQpLFEoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksUnQoc3QpfSl9KTpSdChzdCl9aWYoaS5pbnN0YW50aWF0ZVdhc20pdHJ5e3ZhciBHdD1pLmluc3RhbnRpYXRlV2FzbShKLHYpO3JldHVybiBHdH1jYXRjaChqdCl7cmV0dXJuIFEoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIranQpLCExfXJldHVybiBTdCgpLmNhdGNoKHMpLHt9fWZ1bmN0aW9uIGFvKEope2Zvcig7Si5sZW5ndGg+MDspe3ZhciB2PUouc2hpZnQoKTtpZih0eXBlb2Ygdj09ImZ1bmN0aW9uIil7dihpKTtjb250aW51ZX12YXIgc3Q9di5mdW5jO3R5cGVvZiBzdD09Im51bWJlciI/di5hcmc9PT12b2lkIDA/emUuZ2V0KHN0KSgpOnplLmdldChzdCkodi5hcmcpOnN0KHYuYXJnPT09dm9pZCAwP251bGw6di5hcmcpfX12YXIgcWk9e307ZnVuY3Rpb24gaG4oSil7Zm9yKDtKLmxlbmd0aDspe3ZhciB2PUoucG9wKCksc3Q9Si5wb3AoKTtzdCh2KX19ZnVuY3Rpb24gam8oSil7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKE1lW0o+PjJdKX12YXIgZHM9e30sb249e30sd3M9e30sU289NDgsRnI9NTc7ZnVuY3Rpb24gT28oSil7aWYoSj09PXZvaWQgMClyZXR1cm4iX3Vua25vd24iO0o9Si5yZXBsYWNlKC9bXmEtekEtWjAtOV9dL2csIiQiKTt2YXIgdj1KLmNoYXJDb2RlQXQoMCk7cmV0dXJuIHY+PVNvJiZ2PD1Gcj8iXyIrSjpKfWZ1bmN0aW9uICRlKEosdil7cmV0dXJuIEo9T28oSiksbmV3IEZ1bmN0aW9uKCJib2R5IiwicmV0dXJuIGZ1bmN0aW9uICIrSitgKCkgewogICAgInVzZSBzdHJpY3QiOyAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwp9OwpgKSh2KX1mdW5jdGlvbiBhYShKLHYpe3ZhciBzdD0kZSh2LGZ1bmN0aW9uKFJ0KXt0aGlzLm5hbWU9dix0aGlzLm1lc3NhZ2U9UnQ7dmFyIFN0PW5ldyBFcnJvcihSdCkuc3RhY2s7U3QhPT12b2lkIDAmJih0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKStgCmArU3QucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywiIikpfSk7cmV0dXJuIHN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEoucHJvdG90eXBlKSxzdC5wcm90b3R5cGUuY29uc3RydWN0b3I9c3Qsc3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVzc2FnZT09PXZvaWQgMD90aGlzLm5hbWU6dGhpcy5uYW1lKyI6ICIrdGhpcy5tZXNzYWdlfSxzdH12YXIgWXI9dm9pZCAwO2Z1bmN0aW9uIHhzKEope3Rocm93IG5ldyBZcihKKX1mdW5jdGlvbiBncyhKLHYsc3Qpe0ouZm9yRWFjaChmdW5jdGlvbihVdCl7d3NbVXRdPXZ9KTtmdW5jdGlvbiBSdChVdCl7dmFyIER0PXN0KFV0KTtEdC5sZW5ndGghPT1KLmxlbmd0aCYmeHMoIk1pc21hdGNoZWQgdHlwZSBjb252ZXJ0ZXIgY291bnQiKTtmb3IodmFyIHBlPTA7cGU8Si5sZW5ndGg7KytwZSlWbyhKW3BlXSxEdFtwZV0pfXZhciBTdD1uZXcgQXJyYXkodi5sZW5ndGgpLEd0PVtdLGp0PTA7di5mb3JFYWNoKGZ1bmN0aW9uKFV0LER0KXtvbi5oYXNPd25Qcm9wZXJ0eShVdCk/U3RbRHRdPW9uW1V0XTooR3QucHVzaChVdCksZHMuaGFzT3duUHJvcGVydHkoVXQpfHwoZHNbVXRdPVtdKSxkc1tVdF0ucHVzaChmdW5jdGlvbigpe1N0W0R0XT1vbltVdF0sKytqdCxqdD09PUd0Lmxlbmd0aCYmUnQoU3QpfSkpfSksR3QubGVuZ3RoPT09MCYmUnQoU3QpfWZ1bmN0aW9uIFRuKEope3ZhciB2PXFpW0pdO2RlbGV0ZSBxaVtKXTt2YXIgc3Q9di5yYXdDb25zdHJ1Y3RvcixSdD12LnJhd0Rlc3RydWN0b3IsU3Q9di5maWVsZHMsR3Q9U3QubWFwKGZ1bmN0aW9uKGp0KXtyZXR1cm4ganQuZ2V0dGVyUmV0dXJuVHlwZX0pLmNvbmNhdChTdC5tYXAoZnVuY3Rpb24oanQpe3JldHVybiBqdC5zZXR0ZXJBcmd1bWVudFR5cGV9KSk7Z3MoW0pdLEd0LGZ1bmN0aW9uKGp0KXt2YXIgVXQ9e307cmV0dXJuIFN0LmZvckVhY2goZnVuY3Rpb24oRHQscGUpe3ZhciBCZT1EdC5maWVsZE5hbWUsY2k9anRbcGVdLHBpPUR0LmdldHRlcixjbj1EdC5nZXR0ZXJDb250ZXh0LFFlPWp0W3BlK1N0Lmxlbmd0aF0sWHM9RHQuc2V0dGVyLHpvPUR0LnNldHRlckNvbnRleHQ7VXRbQmVdPXtyZWFkOmZ1bmN0aW9uKFNyKXtyZXR1cm4gY2kuZnJvbVdpcmVUeXBlKHBpKGNuLFNyKSl9LHdyaXRlOmZ1bmN0aW9uKFNyLG1sKXt2YXIgUmE9W107WHMoem8sU3IsUWUudG9XaXJlVHlwZShSYSxtbCkpLGhuKFJhKX19fSksW3tuYW1lOnYubmFtZSxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oRHQpe3ZhciBwZT17fTtmb3IodmFyIEJlIGluIFV0KXBlW0JlXT1VdFtCZV0ucmVhZChEdCk7cmV0dXJuIFJ0KER0KSxwZX0sdG9XaXJlVHlwZTpmdW5jdGlvbihEdCxwZSl7Zm9yKHZhciBCZSBpbiBVdClpZighKEJlIGluIHBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdNaXNzaW5nIGZpZWxkOiAgIicrQmUrJyInKTt2YXIgY2k9c3QoKTtmb3IoQmUgaW4gVXQpVXRbQmVdLndyaXRlKGNpLHBlW0JlXSk7cmV0dXJuIER0IT09bnVsbCYmRHQucHVzaChSdCxjaSksY2l9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6am8sZGVzdHJ1Y3RvckZ1bmN0aW9uOlJ0fV19KX1mdW5jdGlvbiBocihKKXtzd2l0Y2goSil7Y2FzZSAxOnJldHVybiAwO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDQ6cmV0dXJuIDI7Y2FzZSA4OnJldHVybiAzO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biB0eXBlIHNpemU6ICIrSil9fWZ1bmN0aW9uIE1oKCl7Zm9yKHZhciBKPW5ldyBBcnJheSgyNTYpLHY9MDt2PDI1NjsrK3YpSlt2XT1TdHJpbmcuZnJvbUNoYXJDb2RlKHYpO1VoPUp9dmFyIFVoPXZvaWQgMDtmdW5jdGlvbiBWbihKKXtmb3IodmFyIHY9IiIsc3Q9SjtlZVtzdF07KXYrPVVoW2VlW3N0KytdXTtyZXR1cm4gdn12YXIgY3I9dm9pZCAwO2Z1bmN0aW9uIElpKEope3Rocm93IG5ldyBjcihKKX1mdW5jdGlvbiBWbyhKLHYsc3Qpe2lmKHN0PXN0fHx7fSwhKCJhcmdQYWNrQWR2YW5jZSJpbiB2KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWdpc3RlclR5cGUgcmVnaXN0ZXJlZEluc3RhbmNlIHJlcXVpcmVzIGFyZ1BhY2tBZHZhbmNlIik7dmFyIFJ0PXYubmFtZTtpZihKfHxJaSgndHlwZSAiJytSdCsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyksb24uaGFzT3duUHJvcGVydHkoSikpe2lmKHN0Lmlnbm9yZUR1cGxpY2F0ZVJlZ2lzdHJhdGlvbnMpcmV0dXJuO0lpKCJDYW5ub3QgcmVnaXN0ZXIgdHlwZSAnIitSdCsiJyB0d2ljZSIpfWlmKG9uW0pdPXYsZGVsZXRlIHdzW0pdLGRzLmhhc093blByb3BlcnR5KEopKXt2YXIgU3Q9ZHNbSl07ZGVsZXRlIGRzW0pdLFN0LmZvckVhY2goZnVuY3Rpb24oR3Qpe0d0KCl9KX19ZnVuY3Rpb24gS2MoSix2LHN0LFJ0LFN0KXt2YXIgR3Q9aHIoc3QpO3Y9Vm4odiksVm8oSix7bmFtZTp2LGZyb21XaXJlVHlwZTpmdW5jdGlvbihqdCl7cmV0dXJuISFqdH0sdG9XaXJlVHlwZTpmdW5jdGlvbihqdCxVdCl7cmV0dXJuIFV0P1J0OlN0fSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZ1bmN0aW9uKGp0KXt2YXIgVXQ7aWYoc3Q9PT0xKVV0PUZ0O2Vsc2UgaWYoc3Q9PT0yKVV0PWNlO2Vsc2UgaWYoc3Q9PT00KVV0PU9lO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBib29sZWFuIHR5cGUgc2l6ZTogIit2KTtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoVXRbanQ+Pkd0XSl9LGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gWGMoSil7aWYoISh0aGlzIGluc3RhbmNlb2YgZHIpfHwhKEogaW5zdGFuY2VvZiBkcikpcmV0dXJuITE7Zm9yKHZhciB2PXRoaXMuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3Msc3Q9dGhpcy4kJC5wdHIsUnQ9Si4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcyxTdD1KLiQkLnB0cjt2LmJhc2VDbGFzczspc3Q9di51cGNhc3Qoc3QpLHY9di5iYXNlQ2xhc3M7Zm9yKDtSdC5iYXNlQ2xhc3M7KVN0PVJ0LnVwY2FzdChTdCksUnQ9UnQuYmFzZUNsYXNzO3JldHVybiB2PT09UnQmJnN0PT09U3R9ZnVuY3Rpb24gcWMoSil7cmV0dXJue2NvdW50OkouY291bnQsZGVsZXRlU2NoZWR1bGVkOkouZGVsZXRlU2NoZWR1bGVkLHByZXNlcnZlUG9pbnRlck9uRGVsZXRlOkoucHJlc2VydmVQb2ludGVyT25EZWxldGUscHRyOkoucHRyLHB0clR5cGU6Si5wdHJUeXBlLHNtYXJ0UHRyOkouc21hcnRQdHIsc21hcnRQdHJUeXBlOkouc21hcnRQdHJUeXBlfX1mdW5jdGlvbiBRaChKKXtmdW5jdGlvbiB2KHN0KXtyZXR1cm4gc3QuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MubmFtZX1JaSh2KEopKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIil9dmFyIGtoPSExO2Z1bmN0aW9uIEFhKEope31mdW5jdGlvbiBMaChKKXtKLnNtYXJ0UHRyP0ouc21hcnRQdHJUeXBlLnJhd0Rlc3RydWN0b3IoSi5zbWFydFB0cik6Si5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5yYXdEZXN0cnVjdG9yKEoucHRyKX1mdW5jdGlvbiBoYShKKXtKLmNvdW50LnZhbHVlLT0xO3ZhciB2PUouY291bnQudmFsdWU9PT0wO3YmJkxoKEopfWZ1bmN0aW9uIEthKEope3JldHVybiB0eXBlb2YgRmluYWxpemF0aW9uR3JvdXA+InUiPyhLYT1mdW5jdGlvbih2KXtyZXR1cm4gdn0sSik6KGtoPW5ldyBGaW5hbGl6YXRpb25Hcm91cChmdW5jdGlvbih2KXtmb3IodmFyIHN0PXYubmV4dCgpOyFzdC5kb25lO3N0PXYubmV4dCgpKXt2YXIgUnQ9c3QudmFsdWU7UnQucHRyP2hhKFJ0KTpjb25zb2xlLndhcm4oIm9iamVjdCBhbHJlYWR5IGRlbGV0ZWQ6ICIrUnQucHRyKX19KSxLYT1mdW5jdGlvbih2KXtyZXR1cm4ga2gucmVnaXN0ZXIodix2LiQkLHYuJCQpLHZ9LEFhPWZ1bmN0aW9uKHYpe2toLnVucmVnaXN0ZXIodi4kJCl9LEthKEopKX1mdW5jdGlvbiBTZCgpe2lmKHRoaXMuJCQucHRyfHxRaCh0aGlzKSx0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXJldHVybiB0aGlzLiQkLmNvdW50LnZhbHVlKz0xLHRoaXM7dmFyIEo9S2EoT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykseyQkOnt2YWx1ZTpxYyh0aGlzLiQkKX19KSk7cmV0dXJuIEouJCQuY291bnQudmFsdWUrPTEsSi4kJC5kZWxldGVTY2hlZHVsZWQ9ITEsSn1mdW5jdGlvbiBYYSgpe3RoaXMuJCQucHRyfHxRaCh0aGlzKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUmJklpKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksQWEodGhpcyksaGEodGhpcy4kJCksdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZXx8KHRoaXMuJCQuc21hcnRQdHI9dm9pZCAwLHRoaXMuJCQucHRyPXZvaWQgMCl9ZnVuY3Rpb24gT2QoKXtyZXR1cm4hdGhpcy4kJC5wdHJ9dmFyIHFhPXZvaWQgMCxscj1bXTtmdW5jdGlvbiBrQSgpe2Zvcig7bHIubGVuZ3RoOyl7dmFyIEo9bHIucG9wKCk7Si4kJC5kZWxldGVTY2hlZHVsZWQ9ITEsSi5kZWxldGUoKX19ZnVuY3Rpb24gJGEoKXtyZXR1cm4gdGhpcy4kJC5wdHJ8fFFoKHRoaXMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkJiYhdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSYmSWkoIk9iamVjdCBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24iKSxsci5wdXNoKHRoaXMpLGxyLmxlbmd0aD09PTEmJnFhJiZxYShrQSksdGhpcy4kJC5kZWxldGVTY2hlZHVsZWQ9ITAsdGhpc31mdW5jdGlvbiBWZCgpe2RyLnByb3RvdHlwZS5pc0FsaWFzT2Y9WGMsZHIucHJvdG90eXBlLmNsb25lPVNkLGRyLnByb3RvdHlwZS5kZWxldGU9WGEsZHIucHJvdG90eXBlLmlzRGVsZXRlZD1PZCxkci5wcm90b3R5cGUuZGVsZXRlTGF0ZXI9JGF9ZnVuY3Rpb24gZHIoKXt9dmFyICRjPXt9O2Z1bmN0aW9uIHRsKEosdixzdCl7aWYoSlt2XS5vdmVybG9hZFRhYmxlPT09dm9pZCAwKXt2YXIgUnQ9Slt2XTtKW3ZdPWZ1bmN0aW9uKCl7cmV0dXJuIEpbdl0ub3ZlcmxvYWRUYWJsZS5oYXNPd25Qcm9wZXJ0eShhcmd1bWVudHMubGVuZ3RoKXx8SWkoIkZ1bmN0aW9uICciK3N0KyInIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0cyBvbmUgb2YgKCIrSlt2XS5vdmVybG9hZFRhYmxlKyIpISIpLEpbdl0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LEpbdl0ub3ZlcmxvYWRUYWJsZT1bXSxKW3ZdLm92ZXJsb2FkVGFibGVbUnQuYXJnQ291bnRdPVJ0fX1mdW5jdGlvbiB5aChKLHYsc3Qpe2kuaGFzT3duUHJvcGVydHkoSik/KChzdD09PXZvaWQgMHx8aVtKXS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZpW0pdLm92ZXJsb2FkVGFibGVbc3RdIT09dm9pZCAwKSYmSWkoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIitKKyInIHR3aWNlIiksdGwoaSxKLEopLGkuaGFzT3duUHJvcGVydHkoc3QpJiZJaSgiQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIG92ZXJsb2FkcyBvZiBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cyAoIitzdCsiKSEiKSxpW0pdLm92ZXJsb2FkVGFibGVbc3RdPXYpOihpW0pdPXYsc3QhPT12b2lkIDAmJihpW0pdLm51bUFyZ3VtZW50cz1zdCkpfWZ1bmN0aW9uIG1yKEosdixzdCxSdCxTdCxHdCxqdCxVdCl7dGhpcy5uYW1lPUosdGhpcy5jb25zdHJ1Y3Rvcj12LHRoaXMuaW5zdGFuY2VQcm90b3R5cGU9c3QsdGhpcy5yYXdEZXN0cnVjdG9yPVJ0LHRoaXMuYmFzZUNsYXNzPVN0LHRoaXMuZ2V0QWN0dWFsVHlwZT1HdCx0aGlzLnVwY2FzdD1qdCx0aGlzLmRvd25jYXN0PVV0LHRoaXMucHVyZVZpcnR1YWxGdW5jdGlvbnM9W119ZnVuY3Rpb24gd2goSix2LHN0KXtmb3IoO3YhPT1zdDspdi51cGNhc3R8fElpKCJFeHBlY3RlZCBudWxsIG9yIGluc3RhbmNlIG9mICIrc3QubmFtZSsiLCBnb3QgYW4gaW5zdGFuY2Ugb2YgIit2Lm5hbWUpLEo9di51cGNhc3QoSiksdj12LmJhc2VDbGFzcztyZXR1cm4gSn1mdW5jdGlvbiBHZChKLHYpe2lmKHY9PT1udWxsKXJldHVybiB0aGlzLmlzUmVmZXJlbmNlJiZJaSgibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSksMDt2LiQkfHxJaSgnQ2Fubm90IHBhc3MgIicrZGEodikrJyIgYXMgYSAnK3RoaXMubmFtZSksdi4kJC5wdHJ8fElpKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSk7dmFyIHN0PXYuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsUnQ9d2godi4kJC5wdHIsc3QsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBSdH1mdW5jdGlvbiB4aChKLHYpe3ZhciBzdDtpZih2PT09bnVsbClyZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSYmSWkoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpLHRoaXMuaXNTbWFydFBvaW50ZXI/KHN0PXRoaXMucmF3Q29uc3RydWN0b3IoKSxKIT09bnVsbCYmSi5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixzdCksc3QpOjA7di4kJHx8SWkoJ0Nhbm5vdCBwYXNzICInK2RhKHYpKyciIGFzIGEgJyt0aGlzLm5hbWUpLHYuJCQucHRyfHxJaSgiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpLCF0aGlzLmlzQ29uc3QmJnYuJCQucHRyVHlwZS5pc0NvbnN0JiZJaSgiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyh2LiQkLnNtYXJ0UHRyVHlwZT92LiQkLnNtYXJ0UHRyVHlwZS5uYW1lOnYuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt2YXIgUnQ9di4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcztpZihzdD13aCh2LiQkLnB0cixSdCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyksdGhpcy5pc1NtYXJ0UG9pbnRlcilzd2l0Y2godi4kJC5zbWFydFB0cj09PXZvaWQgMCYmSWkoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIiksdGhpcy5zaGFyaW5nUG9saWN5KXtjYXNlIDA6di4kJC5zbWFydFB0clR5cGU9PT10aGlzP3N0PXYuJCQuc21hcnRQdHI6SWkoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisodi4kJC5zbWFydFB0clR5cGU/di4kJC5zbWFydFB0clR5cGUubmFtZTp2LiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSk7YnJlYWs7Y2FzZSAxOnN0PXYuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKHYuJCQuc21hcnRQdHJUeXBlPT09dGhpcylzdD12LiQkLnNtYXJ0UHRyO2Vsc2V7dmFyIFN0PXYuY2xvbmUoKTtzdD10aGlzLnJhd1NoYXJlKHN0LGhvKGZ1bmN0aW9uKCl7U3QuZGVsZXRlKCl9KSksSiE9PW51bGwmJkoucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3Isc3QpfWJyZWFrO2RlZmF1bHQ6SWkoIlVuc3VwcG9ydGluZyBzaGFyaW5nIHBvbGljeSIpfXJldHVybiBzdH1mdW5jdGlvbiBQaChKLHYpe2lmKHY9PT1udWxsKXJldHVybiB0aGlzLmlzUmVmZXJlbmNlJiZJaSgibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSksMDt2LiQkfHxJaSgnQ2Fubm90IHBhc3MgIicrZGEodikrJyIgYXMgYSAnK3RoaXMubmFtZSksdi4kJC5wdHJ8fElpKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSksdi4kJC5wdHJUeXBlLmlzQ29uc3QmJklpKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrdi4kJC5wdHJUeXBlLm5hbWUrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSk7dmFyIHN0PXYuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsUnQ9d2godi4kJC5wdHIsc3QsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBSdH1mdW5jdGlvbiBlbChKKXtyZXR1cm4gdGhpcy5yYXdHZXRQb2ludGVlJiYoSj10aGlzLnJhd0dldFBvaW50ZWUoSikpLEp9ZnVuY3Rpb24gaWwoSil7dGhpcy5yYXdEZXN0cnVjdG9yJiZ0aGlzLnJhd0Rlc3RydWN0b3IoSil9ZnVuY3Rpb24gQmQoSil7SiE9PW51bGwmJkouZGVsZXRlKCl9ZnVuY3Rpb24gdEEoSix2LHN0KXtpZih2PT09c3QpcmV0dXJuIEo7aWYoc3QuYmFzZUNsYXNzPT09dm9pZCAwKXJldHVybiBudWxsO3ZhciBSdD10QShKLHYsc3QuYmFzZUNsYXNzKTtyZXR1cm4gUnQ9PT1udWxsP251bGw6c3QuZG93bmNhc3QoUnQpfWZ1bmN0aW9uIFdkKCl7cmV0dXJuIE9iamVjdC5rZXlzKGVBKS5sZW5ndGh9ZnVuY3Rpb24gRGQoKXt2YXIgSj1bXTtmb3IodmFyIHYgaW4gZUEpZUEuaGFzT3duUHJvcGVydHkodikmJkoucHVzaChlQVt2XSk7cmV0dXJuIEp9ZnVuY3Rpb24gTWQoSil7cWE9Sixsci5sZW5ndGgmJnFhJiZxYShrQSl9ZnVuY3Rpb24gTEEoKXtpLmdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ9V2QsaS5nZXRMaXZlSW5oZXJpdGVkSW5zdGFuY2VzPURkLGkuZmx1c2hQZW5kaW5nRGVsZXRlcz1rQSxpLnNldERlbGF5RnVuY3Rpb249TWR9dmFyIGVBPXt9O2Z1bmN0aW9uIFVkKEosdil7Zm9yKHY9PT12b2lkIDAmJklpKCJwdHIgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKTtKLmJhc2VDbGFzczspdj1KLnVwY2FzdCh2KSxKPUouYmFzZUNsYXNzO3JldHVybiB2fWZ1bmN0aW9uIFFkKEosdil7cmV0dXJuIHY9VWQoSix2KSxlQVt2XX1mdW5jdGlvbiB5QShKLHYpeyghdi5wdHJUeXBlfHwhdi5wdHIpJiZ4cygibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpO3ZhciBzdD0hIXYuc21hcnRQdHJUeXBlLFJ0PSEhdi5zbWFydFB0cjtyZXR1cm4gc3QhPT1SdCYmeHMoIkJvdGggc21hcnRQdHJUeXBlIGFuZCBzbWFydFB0ciBtdXN0IGJlIHNwZWNpZmllZCIpLHYuY291bnQ9e3ZhbHVlOjF9LEthKE9iamVjdC5jcmVhdGUoSix7JCQ6e3ZhbHVlOnZ9fSkpfWZ1bmN0aW9uIEhvKEope3ZhciB2PXRoaXMuZ2V0UG9pbnRlZShKKTtpZighdilyZXR1cm4gdGhpcy5kZXN0cnVjdG9yKEopLG51bGw7dmFyIHN0PVFkKHRoaXMucmVnaXN0ZXJlZENsYXNzLHYpO2lmKHN0IT09dm9pZCAwKXtpZihzdC4kJC5jb3VudC52YWx1ZT09PTApcmV0dXJuIHN0LiQkLnB0cj12LHN0LiQkLnNtYXJ0UHRyPUosc3QuY2xvbmUoKTt2YXIgUnQ9c3QuY2xvbmUoKTtyZXR1cm4gdGhpcy5kZXN0cnVjdG9yKEopLFJ0fWZ1bmN0aW9uIFN0KCl7cmV0dXJuIHRoaXMuaXNTbWFydFBvaW50ZXI/eUEodGhpcy5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dGhpcy5wb2ludGVlVHlwZSxwdHI6dixzbWFydFB0clR5cGU6dGhpcyxzbWFydFB0cjpKfSk6eUEodGhpcy5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6dGhpcyxwdHI6Sn0pfXZhciBHdD10aGlzLnJlZ2lzdGVyZWRDbGFzcy5nZXRBY3R1YWxUeXBlKHYpLGp0PSRjW0d0XTtpZighanQpcmV0dXJuIFN0LmNhbGwodGhpcyk7dmFyIFV0O3RoaXMuaXNDb25zdD9VdD1qdC5jb25zdFBvaW50ZXJUeXBlOlV0PWp0LnBvaW50ZXJUeXBlO3ZhciBEdD10QSh2LHRoaXMucmVnaXN0ZXJlZENsYXNzLFV0LnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIER0PT09bnVsbD9TdC5jYWxsKHRoaXMpOnRoaXMuaXNTbWFydFBvaW50ZXI/eUEoVXQucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOlV0LHB0cjpEdCxzbWFydFB0clR5cGU6dGhpcyxzbWFydFB0cjpKfSk6eUEoVXQucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOlV0LHB0cjpEdH0pfWZ1bmN0aW9uIG5sKCl7dm8ucHJvdG90eXBlLmdldFBvaW50ZWU9ZWwsdm8ucHJvdG90eXBlLmRlc3RydWN0b3I9aWwsdm8ucHJvdG90eXBlLmFyZ1BhY2tBZHZhbmNlPTgsdm8ucHJvdG90eXBlLnJlYWRWYWx1ZUZyb21Qb2ludGVyPWpvLHZvLnByb3RvdHlwZS5kZWxldGVPYmplY3Q9QmQsdm8ucHJvdG90eXBlLmZyb21XaXJlVHlwZT1Ib31mdW5jdGlvbiB2byhKLHYsc3QsUnQsU3QsR3QsanQsVXQsRHQscGUsQmUpe3RoaXMubmFtZT1KLHRoaXMucmVnaXN0ZXJlZENsYXNzPXYsdGhpcy5pc1JlZmVyZW5jZT1zdCx0aGlzLmlzQ29uc3Q9UnQsdGhpcy5pc1NtYXJ0UG9pbnRlcj1TdCx0aGlzLnBvaW50ZWVUeXBlPUd0LHRoaXMuc2hhcmluZ1BvbGljeT1qdCx0aGlzLnJhd0dldFBvaW50ZWU9VXQsdGhpcy5yYXdDb25zdHJ1Y3Rvcj1EdCx0aGlzLnJhd1NoYXJlPXBlLHRoaXMucmF3RGVzdHJ1Y3Rvcj1CZSwhU3QmJnYuYmFzZUNsYXNzPT09dm9pZCAwP1J0Pyh0aGlzLnRvV2lyZVR5cGU9R2QsdGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbCk6KHRoaXMudG9XaXJlVHlwZT1QaCx0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsKTp0aGlzLnRvV2lyZVR5cGU9eGh9ZnVuY3Rpb24gaUEoSix2LHN0KXtpLmhhc093blByb3BlcnR5KEopfHx4cygiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKSxpW0pdLm92ZXJsb2FkVGFibGUhPT12b2lkIDAmJnN0IT09dm9pZCAwP2lbSl0ub3ZlcmxvYWRUYWJsZVtzdF09djooaVtKXT12LGlbSl0uYXJnQ291bnQ9c3QpfWZ1bmN0aW9uIEpoKEosdixzdCl7dmFyIFJ0PWlbImR5bkNhbGxfIitKXTtyZXR1cm4gc3QmJnN0Lmxlbmd0aD9SdC5hcHBseShudWxsLFt2XS5jb25jYXQoc3QpKTpSdC5jYWxsKG51bGwsdil9ZnVuY3Rpb24ga2QoSix2LHN0KXtyZXR1cm4gSi5pbmRleE9mKCJqIikhPS0xP0poKEosdixzdCk6emUuZ2V0KHYpLmFwcGx5KG51bGwsc3QpfWZ1bmN0aW9uIExkKEosdil7dmFyIHN0PVtdO3JldHVybiBmdW5jdGlvbigpe3N0Lmxlbmd0aD1hcmd1bWVudHMubGVuZ3RoO2Zvcih2YXIgUnQ9MDtSdDxhcmd1bWVudHMubGVuZ3RoO1J0Kyspc3RbUnRdPWFyZ3VtZW50c1tSdF07cmV0dXJuIGtkKEosdixzdCl9fWZ1bmN0aW9uIGpuKEosdil7Sj1WbihKKTtmdW5jdGlvbiBzdCgpe3JldHVybiBKLmluZGV4T2YoImoiKSE9LTE/TGQoSix2KTp6ZS5nZXQodil9dmFyIFJ0PXN0KCk7cmV0dXJuIHR5cGVvZiBSdCE9ImZ1bmN0aW9uIiYmSWkoInVua25vd24gZnVuY3Rpb24gcG9pbnRlciB3aXRoIHNpZ25hdHVyZSAiK0orIjogIit2KSxSdH12YXIgc2w9dm9pZCAwO2Z1bmN0aW9uIGpoKEope3ZhciB2PXB0KEopLHN0PVZuKHYpO3JldHVybiBldCh2KSxzdH1mdW5jdGlvbiBuQShKLHYpe3ZhciBzdD1bXSxSdD17fTtmdW5jdGlvbiBTdChHdCl7aWYoIVJ0W0d0XSYmIW9uW0d0XSl7aWYod3NbR3RdKXt3c1tHdF0uZm9yRWFjaChTdCk7cmV0dXJufXN0LnB1c2goR3QpLFJ0W0d0XT0hMH19dGhyb3cgdi5mb3JFYWNoKFN0KSxuZXcgc2woSisiOiAiK3N0Lm1hcChqaCkuam9pbihbIiwgIl0pKX1mdW5jdGlvbiBjYShKLHYsc3QsUnQsU3QsR3QsanQsVXQsRHQscGUsQmUsY2kscGkpe0JlPVZuKEJlKSxHdD1qbihTdCxHdCksVXQmJihVdD1qbihqdCxVdCkpLHBlJiYocGU9am4oRHQscGUpKSxwaT1qbihjaSxwaSk7dmFyIGNuPU9vKEJlKTt5aChjbixmdW5jdGlvbigpe25BKCJDYW5ub3QgY29uc3RydWN0ICIrQmUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsW1J0XSl9KSxncyhbSix2LHN0XSxSdD9bUnRdOltdLGZ1bmN0aW9uKFFlKXtRZT1RZVswXTt2YXIgWHMsem87UnQ/KFhzPVFlLnJlZ2lzdGVyZWRDbGFzcyx6bz1Ycy5pbnN0YW5jZVByb3RvdHlwZSk6em89ZHIucHJvdG90eXBlO3ZhciBTcj0kZShjbixmdW5jdGlvbigpe2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSE9PW1sKXRocm93IG5ldyBjcigiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiK0JlKTtpZihSYS5jb25zdHJ1Y3Rvcl9ib2R5PT09dm9pZCAwKXRocm93IG5ldyBjcihCZSsiIGhhcyBubyBhY2Nlc3NpYmxlIGNvbnN0cnVjdG9yIik7dmFyIEhSPVJhLmNvbnN0cnVjdG9yX2JvZHlbYXJndW1lbnRzLmxlbmd0aF07aWYoSFI9PT12b2lkIDApdGhyb3cgbmV3IGNyKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK0JlKyIgd2l0aCBpbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiK2FyZ3VtZW50cy5sZW5ndGgrIikgLSBleHBlY3RlZCAoIitPYmplY3Qua2V5cyhSYS5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKTtyZXR1cm4gSFIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksbWw9T2JqZWN0LmNyZWF0ZSh6byx7Y29uc3RydWN0b3I6e3ZhbHVlOlNyfX0pO1NyLnByb3RvdHlwZT1tbDt2YXIgUmE9bmV3IG1yKEJlLFNyLG1sLHBpLFhzLEd0LFV0LHBlKSxpRT1uZXcgdm8oQmUsUmEsITAsITEsITEpLGpSPW5ldyB2byhCZSsiKiIsUmEsITEsITEsITEpLEVtPW5ldyB2byhCZSsiIGNvbnN0KiIsUmEsITEsITAsITEpO3JldHVybiAkY1tKXT17cG9pbnRlclR5cGU6alIsY29uc3RQb2ludGVyVHlwZTpFbX0saUEoY24sU3IpLFtpRSxqUixFbV19KX1mdW5jdGlvbiBIaChKLHYpe2Zvcih2YXIgc3Q9W10sUnQ9MDtSdDxKO1J0Kyspc3QucHVzaChPZVsodj4+MikrUnRdKTtyZXR1cm4gc3R9ZnVuY3Rpb24gdmgoSix2LHN0LFJ0LFN0LEd0KXt3KHY+MCk7dmFyIGp0PUhoKHYsc3QpO1N0PWpuKFJ0LFN0KTt2YXIgVXQ9W0d0XSxEdD1bXTtncyhbXSxbSl0sZnVuY3Rpb24ocGUpe3BlPXBlWzBdO3ZhciBCZT0iY29uc3RydWN0b3IgIitwZS5uYW1lO2lmKHBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5PT09dm9pZCAwJiYocGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9W10pLHBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W3YtMV0hPT12b2lkIDApdGhyb3cgbmV3IGNyKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyh2LTEpKyIpIGZvciBjbGFzcyAnIitwZS5uYW1lKyInISBPdmVybG9hZCByZXNvbHV0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHBlcmZvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVyIGNvdW50LCBub3QgYWN0dWFsIHR5cGUgaW5mbyEiKTtyZXR1cm4gcGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHlbdi0xXT1mdW5jdGlvbigpe25BKCJDYW5ub3QgY29uc3RydWN0ICIrcGUubmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixqdCl9LGdzKFtdLGp0LGZ1bmN0aW9uKGNpKXtyZXR1cm4gcGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHlbdi0xXT1mdW5jdGlvbigpe2FyZ3VtZW50cy5sZW5ndGghPT12LTEmJklpKEJlKyIgY2FsbGVkIHdpdGggIithcmd1bWVudHMubGVuZ3RoKyIgYXJndW1lbnRzLCBleHBlY3RlZCAiKyh2LTEpKSxEdC5sZW5ndGg9MCxVdC5sZW5ndGg9djtmb3IodmFyIGNuPTE7Y248djsrK2NuKVV0W2NuXT1jaVtjbl0udG9XaXJlVHlwZShEdCxhcmd1bWVudHNbY24tMV0pO3ZhciBRZT1TdC5hcHBseShudWxsLFV0KTtyZXR1cm4gaG4oRHQpLGNpWzBdLmZyb21XaXJlVHlwZShRZSl9LFtdfSksW119KX1mdW5jdGlvbiB3QShKLHYpe2lmKCEoSiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJuZXdfIGNhbGxlZCB3aXRoIGNvbnN0cnVjdG9yIHR5cGUgIit0eXBlb2YgSisiIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uIik7dmFyIHN0PSRlKEoubmFtZXx8InVua25vd25GdW5jdGlvbk5hbWUiLGZ1bmN0aW9uKCl7fSk7c3QucHJvdG90eXBlPUoucHJvdG90eXBlO3ZhciBSdD1uZXcgc3QsU3Q9Si5hcHBseShSdCx2KTtyZXR1cm4gU3QgaW5zdGFuY2VvZiBPYmplY3Q/U3Q6UnR9ZnVuY3Rpb24gb2woSix2LHN0LFJ0LFN0KXt2YXIgR3Q9di5sZW5ndGg7R3Q8MiYmSWkoImFyZ1R5cGVzIGFycmF5IHNpemUgbWlzbWF0Y2ghIE11c3QgYXQgbGVhc3QgZ2V0IHJldHVybiB2YWx1ZSBhbmQgJ3RoaXMnIHR5cGVzISIpO2Zvcih2YXIganQ9dlsxXSE9PW51bGwmJnN0IT09bnVsbCxVdD0hMSxEdD0xO0R0PHYubGVuZ3RoOysrRHQpaWYodltEdF0hPT1udWxsJiZ2W0R0XS5kZXN0cnVjdG9yRnVuY3Rpb249PT12b2lkIDApe1V0PSEwO2JyZWFrfWZvcih2YXIgcGU9dlswXS5uYW1lIT09InZvaWQiLEJlPSIiLGNpPSIiLER0PTA7RHQ8R3QtMjsrK0R0KUJlKz0oRHQhPT0wPyIsICI6IiIpKyJhcmciK0R0LGNpKz0oRHQhPT0wPyIsICI6IiIpKyJhcmciK0R0KyJXaXJlZCI7dmFyIHBpPSJyZXR1cm4gZnVuY3Rpb24gIitPbyhKKSsiKCIrQmUrYCkgewppZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gYCsoR3QtMikrYCkgewp0aHJvd0JpbmRpbmdFcnJvcignZnVuY3Rpb24gYCtKKyIgY2FsbGVkIHdpdGggJyArIGFyZ3VtZW50cy5sZW5ndGggKyAnIGFyZ3VtZW50cywgZXhwZWN0ZWQgIisoR3QtMikrYCBhcmdzIScpOwp9CmA7VXQmJihwaSs9YHZhciBkZXN0cnVjdG9ycyA9IFtdOwpgKTt2YXIgY249VXQ/ImRlc3RydWN0b3JzIjoibnVsbCIsUWU9WyJ0aHJvd0JpbmRpbmdFcnJvciIsImludm9rZXIiLCJmbiIsInJ1bkRlc3RydWN0b3JzIiwicmV0VHlwZSIsImNsYXNzUGFyYW0iXSxYcz1bSWksUnQsU3QsaG4sdlswXSx2WzFdXTtqdCYmKHBpKz0idmFyIHRoaXNXaXJlZCA9IGNsYXNzUGFyYW0udG9XaXJlVHlwZSgiK2NuK2AsIHRoaXMpOwpgKTtmb3IodmFyIER0PTA7RHQ8R3QtMjsrK0R0KXBpKz0idmFyIGFyZyIrRHQrIldpcmVkID0gYXJnVHlwZSIrRHQrIi50b1dpcmVUeXBlKCIrY24rIiwgYXJnIitEdCsiKTsgLy8gIit2W0R0KzJdLm5hbWUrYApgLFFlLnB1c2goImFyZ1R5cGUiK0R0KSxYcy5wdXNoKHZbRHQrMl0pO2lmKGp0JiYoY2k9InRoaXNXaXJlZCIrKGNpLmxlbmd0aD4wPyIsICI6IiIpK2NpKSxwaSs9KHBlPyJ2YXIgcnYgPSAiOiIiKSsiaW52b2tlcihmbiIrKGNpLmxlbmd0aD4wPyIsICI6IiIpK2NpK2ApOwpgLFV0KXBpKz1gcnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpOwpgO2Vsc2UgZm9yKHZhciBEdD1qdD8xOjI7RHQ8di5sZW5ndGg7KytEdCl7dmFyIHpvPUR0PT09MT8idGhpc1dpcmVkIjoiYXJnIisoRHQtMikrIldpcmVkIjt2W0R0XS5kZXN0cnVjdG9yRnVuY3Rpb24hPT1udWxsJiYocGkrPXpvKyJfZHRvcigiK3pvKyIpOyAvLyAiK3ZbRHRdLm5hbWUrYApgLFFlLnB1c2goem8rIl9kdG9yIiksWHMucHVzaCh2W0R0XS5kZXN0cnVjdG9yRnVuY3Rpb24pKX1wZSYmKHBpKz1gdmFyIHJldCA9IHJldFR5cGUuZnJvbVdpcmVUeXBlKHJ2KTsKcmV0dXJuIHJldDsKYCkscGkrPWB9CmAsUWUucHVzaChwaSk7dmFyIFNyPXdBKEZ1bmN0aW9uLFFlKS5hcHBseShudWxsLFhzKTtyZXR1cm4gU3J9ZnVuY3Rpb24gemgoSix2LHN0LFJ0LFN0LEd0LGp0LFV0KXt2YXIgRHQ9SGgoc3QsUnQpO3Y9Vm4odiksR3Q9am4oU3QsR3QpLGdzKFtdLFtKXSxmdW5jdGlvbihwZSl7cGU9cGVbMF07dmFyIEJlPXBlLm5hbWUrIi4iK3Y7VXQmJnBlLnJlZ2lzdGVyZWRDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5wdXNoKHYpO2Z1bmN0aW9uIGNpKCl7bkEoIkNhbm5vdCBjYWxsICIrQmUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsRHQpfXZhciBwaT1wZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUsY249cGlbdl07cmV0dXJuIGNuPT09dm9pZCAwfHxjbi5vdmVybG9hZFRhYmxlPT09dm9pZCAwJiZjbi5jbGFzc05hbWUhPT1wZS5uYW1lJiZjbi5hcmdDb3VudD09PXN0LTI/KGNpLmFyZ0NvdW50PXN0LTIsY2kuY2xhc3NOYW1lPXBlLm5hbWUscGlbdl09Y2kpOih0bChwaSx2LEJlKSxwaVt2XS5vdmVybG9hZFRhYmxlW3N0LTJdPWNpKSxncyhbXSxEdCxmdW5jdGlvbihRZSl7dmFyIFhzPW9sKEJlLFFlLHBlLEd0LGp0KTtyZXR1cm4gcGlbdl0ub3ZlcmxvYWRUYWJsZT09PXZvaWQgMD8oWHMuYXJnQ291bnQ9c3QtMixwaVt2XT1Ycyk6cGlbdl0ub3ZlcmxvYWRUYWJsZVtzdC0yXT1YcyxbXX0pLFtdfSl9ZnVuY3Rpb24geWQoSix2LHN0KXtKPVZuKEopLGdzKFtdLFt2XSxmdW5jdGlvbihSdCl7cmV0dXJuIFJ0PVJ0WzBdLGlbSl09UnQuZnJvbVdpcmVUeXBlKHN0KSxbXX0pfXZhciBLaD1bXSxTcz1be30se3ZhbHVlOnZvaWQgMH0se3ZhbHVlOm51bGx9LHt2YWx1ZTohMH0se3ZhbHVlOiExfV07ZnVuY3Rpb24gWGgoSil7Sj40JiYtLVNzW0pdLnJlZmNvdW50PT09MCYmKFNzW0pdPXZvaWQgMCxLaC5wdXNoKEopKX1mdW5jdGlvbiB3ZCgpe2Zvcih2YXIgSj0wLHY9NTt2PFNzLmxlbmd0aDsrK3YpU3Nbdl0hPT12b2lkIDAmJisrSjtyZXR1cm4gSn1mdW5jdGlvbiBybCgpe2Zvcih2YXIgSj01O0o8U3MubGVuZ3RoOysrSilpZihTc1tKXSE9PXZvaWQgMClyZXR1cm4gU3NbSl07cmV0dXJuIG51bGx9ZnVuY3Rpb24gQW8oKXtpLmNvdW50X2VtdmFsX2hhbmRsZXM9d2QsaS5nZXRfZmlyc3RfZW12YWw9cmx9ZnVuY3Rpb24gaG8oSil7c3dpdGNoKEope2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6e3ZhciB2PUtoLmxlbmd0aD9LaC5wb3AoKTpTcy5sZW5ndGg7cmV0dXJuIFNzW3ZdPXtyZWZjb3VudDoxLHZhbHVlOkp9LHZ9fX1mdW5jdGlvbiB4ZChKLHYpe3Y9Vm4odiksVm8oSix7bmFtZTp2LGZyb21XaXJlVHlwZTpmdW5jdGlvbihzdCl7dmFyIFJ0PVNzW3N0XS52YWx1ZTtyZXR1cm4gWGgoc3QpLFJ0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKHN0LFJ0KXtyZXR1cm4gaG8oUnQpfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmpvLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gUGQoSix2LHN0KXtzd2l0Y2godil7Y2FzZSAwOnJldHVybiBmdW5jdGlvbihSdCl7dmFyIFN0PXN0P0Z0OmVlO3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShTdFtSdF0pfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKFJ0KXt2YXIgU3Q9c3Q/Y2U6amU7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKFN0W1J0Pj4xXSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oUnQpe3ZhciBTdD1zdD9PZTpNZTtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoU3RbUnQ+PjJdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIitKKX19ZnVuY3Rpb24gR28oSix2LHN0LFJ0KXt2YXIgU3Q9aHIoc3QpO3Y9Vm4odik7ZnVuY3Rpb24gR3QoKXt9R3QudmFsdWVzPXt9LFZvKEose25hbWU6dixjb25zdHJ1Y3RvcjpHdCxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oanQpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnZhbHVlc1tqdF19LHRvV2lyZVR5cGU6ZnVuY3Rpb24oanQsVXQpe3JldHVybiBVdC52YWx1ZX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpQZCh2LFN0LFJ0KSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pLHloKHYsR3QpfWZ1bmN0aW9uIHhBKEosdil7dmFyIHN0PW9uW0pdO3JldHVybiBzdD09PXZvaWQgMCYmSWkodisiIGhhcyB1bmtub3duIHR5cGUgIitqaChKKSksc3R9ZnVuY3Rpb24gbGEoSix2LHN0KXt2YXIgUnQ9eEEoSiwiZW51bSIpO3Y9Vm4odik7dmFyIFN0PVJ0LmNvbnN0cnVjdG9yLEd0PU9iamVjdC5jcmVhdGUoUnQuY29uc3RydWN0b3IucHJvdG90eXBlLHt2YWx1ZTp7dmFsdWU6c3R9LGNvbnN0cnVjdG9yOnt2YWx1ZTokZShSdC5uYW1lKyJfIit2LGZ1bmN0aW9uKCl7fSl9fSk7U3QudmFsdWVzW3N0XT1HdCxTdFt2XT1HdH1mdW5jdGlvbiBkYShKKXtpZihKPT09bnVsbClyZXR1cm4ibnVsbCI7dmFyIHY9dHlwZW9mIEo7cmV0dXJuIHY9PT0ib2JqZWN0Inx8dj09PSJhcnJheSJ8fHY9PT0iZnVuY3Rpb24iP0oudG9TdHJpbmcoKToiIitKfWZ1bmN0aW9uIEpkKEosdil7c3dpdGNoKHYpe2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oc3Qpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShVZVtzdD4+Ml0pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHN0KXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoQ2Vbc3Q+PjNdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGZsb2F0IHR5cGU6ICIrSil9fWZ1bmN0aW9uIGpkKEosdixzdCl7dmFyIFJ0PWhyKHN0KTt2PVZuKHYpLFZvKEose25hbWU6dixmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oU3Qpe3JldHVybiBTdH0sdG9XaXJlVHlwZTpmdW5jdGlvbihTdCxHdCl7aWYodHlwZW9mIEd0IT0ibnVtYmVyIiYmdHlwZW9mIEd0IT0iYm9vbGVhbiIpdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgIicrZGEoR3QpKyciIHRvICcrdGhpcy5uYW1lKTtyZXR1cm4gR3R9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6SmQodixSdCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBIZChKLHYsc3QsUnQsU3QsR3Qpe3ZhciBqdD1IaCh2LHN0KTtKPVZuKEopLFN0PWpuKFJ0LFN0KSx5aChKLGZ1bmN0aW9uKCl7bkEoIkNhbm5vdCBjYWxsICIrSisiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixqdCl9LHYtMSksZ3MoW10sanQsZnVuY3Rpb24oVXQpe3ZhciBEdD1bVXRbMF0sbnVsbF0uY29uY2F0KFV0LnNsaWNlKDEpKTtyZXR1cm4gaUEoSixvbChKLER0LG51bGwsU3QsR3QpLHYtMSksW119KX1mdW5jdGlvbiB2ZChKLHYsc3Qpe3N3aXRjaCh2KXtjYXNlIDA6cmV0dXJuIHN0P2Z1bmN0aW9uKFN0KXtyZXR1cm4gRnRbU3RdfTpmdW5jdGlvbihTdCl7cmV0dXJuIGVlW1N0XX07Y2FzZSAxOnJldHVybiBzdD9mdW5jdGlvbihTdCl7cmV0dXJuIGNlW1N0Pj4xXX06ZnVuY3Rpb24oU3Qpe3JldHVybiBqZVtTdD4+MV19O2Nhc2UgMjpyZXR1cm4gc3Q/ZnVuY3Rpb24oU3Qpe3JldHVybiBPZVtTdD4+Ml19OmZ1bmN0aW9uKFN0KXtyZXR1cm4gTWVbU3Q+PjJdfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gaW50ZWdlciB0eXBlOiAiK0opfX1mdW5jdGlvbiB6ZChKLHYsc3QsUnQsU3Qpe3Y9Vm4odiksU3Q9PT0tMSYmKFN0PTQyOTQ5NjcyOTUpO3ZhciBHdD1ocihzdCksanQ9ZnVuY3Rpb24ocGUpe3JldHVybiBwZX07aWYoUnQ9PT0wKXt2YXIgVXQ9MzItOCpzdDtqdD1mdW5jdGlvbihwZSl7cmV0dXJuIHBlPDxVdD4+PlV0fX12YXIgRHQ9di5pbmRleE9mKCJ1bnNpZ25lZCIpIT0tMTtWbyhKLHtuYW1lOnYsZnJvbVdpcmVUeXBlOmp0LHRvV2lyZVR5cGU6ZnVuY3Rpb24ocGUsQmUpe2lmKHR5cGVvZiBCZSE9Im51bWJlciImJnR5cGVvZiBCZSE9ImJvb2xlYW4iKXRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0ICInK2RhKEJlKSsnIiB0byAnK3RoaXMubmFtZSk7aWYoQmU8UnR8fEJlPlN0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1Bhc3NpbmcgYSBudW1iZXIgIicrZGEoQmUpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrdisnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrUnQrIiwgIitTdCsiXSEiKTtyZXR1cm4gRHQ/QmU+Pj4wOkJlfDB9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6dmQodixHdCxSdCE9PTApLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gcWgoSix2LHN0KXt2YXIgUnQ9W0ludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5XSxTdD1SdFt2XTtmdW5jdGlvbiBHdChqdCl7anQ9anQ+PjI7dmFyIFV0PU1lLER0PVV0W2p0XSxwZT1VdFtqdCsxXTtyZXR1cm4gbmV3IFN0KFd0LHBlLER0KX1zdD1WbihzdCksVm8oSix7bmFtZTpzdCxmcm9tV2lyZVR5cGU6R3QsYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpHdH0se2lnbm9yZUR1cGxpY2F0ZVJlZ2lzdHJhdGlvbnM6ITB9KX1mdW5jdGlvbiBQQShKLHYpe3Y9Vm4odik7dmFyIHN0PXY9PT0ic3RkOjpzdHJpbmciO1ZvKEose25hbWU6dixmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oUnQpe3ZhciBTdD1NZVtSdD4+Ml0sR3Q7aWYoc3QpZm9yKHZhciBqdD1SdCs0LFV0PTA7VXQ8PVN0OysrVXQpe3ZhciBEdD1SdCs0K1V0O2lmKFV0PT1TdHx8ZWVbRHRdPT0wKXt2YXIgcGU9RHQtanQsQmU9aihqdCxwZSk7R3Q9PT12b2lkIDA/R3Q9QmU6KEd0Kz0iXDAiLEd0Kz1CZSksanQ9RHQrMX19ZWxzZXtmb3IodmFyIGNpPW5ldyBBcnJheShTdCksVXQ9MDtVdDxTdDsrK1V0KWNpW1V0XT1TdHJpbmcuZnJvbUNoYXJDb2RlKGVlW1J0KzQrVXRdKTtHdD1jaS5qb2luKCIiKX1yZXR1cm4gZXQoUnQpLEd0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKFJ0LFN0KXtTdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYoU3Q9bmV3IFVpbnQ4QXJyYXkoU3QpKTt2YXIgR3QsanQ9dHlwZW9mIFN0PT0ic3RyaW5nIjtqdHx8U3QgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxTdCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHxTdCBpbnN0YW5jZW9mIEludDhBcnJheXx8SWkoIkNhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gc3RkOjpzdHJpbmciKSxzdCYmanQ/R3Q9ZnVuY3Rpb24oKXtyZXR1cm4gQihTdCl9Okd0PWZ1bmN0aW9uKCl7cmV0dXJuIFN0Lmxlbmd0aH07dmFyIFV0PUd0KCksRHQ9eig0K1V0KzEpO2lmKE1lW0R0Pj4yXT1VdCxzdCYmanQpdHQoU3QsRHQrNCxVdCsxKTtlbHNlIGlmKGp0KWZvcih2YXIgcGU9MDtwZTxVdDsrK3BlKXt2YXIgQmU9U3QuY2hhckNvZGVBdChwZSk7QmU+MjU1JiYoZXQoRHQpLElpKCJTdHJpbmcgaGFzIFVURi0xNiBjb2RlIHVuaXRzIHRoYXQgZG8gbm90IGZpdCBpbiA4IGJpdHMiKSksZWVbRHQrNCtwZV09QmV9ZWxzZSBmb3IodmFyIHBlPTA7cGU8VXQ7KytwZSllZVtEdCs0K3BlXT1TdFtwZV07cmV0dXJuIFJ0IT09bnVsbCYmUnQucHVzaChldCxEdCksRHR9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6am8sZGVzdHJ1Y3RvckZ1bmN0aW9uOmZ1bmN0aW9uKFJ0KXtldChSdCl9fSl9ZnVuY3Rpb24gbWEoSix2LHN0KXtzdD1WbihzdCk7dmFyIFJ0LFN0LEd0LGp0LFV0O3Y9PT0yPyhSdD1ndCxTdD1ZdCxqdD1NdCxHdD1mdW5jdGlvbigpe3JldHVybiBqZX0sVXQ9MSk6dj09PTQmJihSdD1DdCxTdD16dCxqdD1rdCxHdD1mdW5jdGlvbigpe3JldHVybiBNZX0sVXQ9MiksVm8oSix7bmFtZTpzdCxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oRHQpe2Zvcih2YXIgcGU9TWVbRHQ+PjJdLEJlPUd0KCksY2kscGk9RHQrNCxjbj0wO2NuPD1wZTsrK2NuKXt2YXIgUWU9RHQrNCtjbip2O2lmKGNuPT1wZXx8QmVbUWU+PlV0XT09MCl7dmFyIFhzPVFlLXBpLHpvPVJ0KHBpLFhzKTtjaT09PXZvaWQgMD9jaT16bzooY2krPSJcMCIsY2krPXpvKSxwaT1RZSt2fX1yZXR1cm4gZXQoRHQpLGNpfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKER0LHBlKXt0eXBlb2YgcGUhPSJzdHJpbmciJiZJaSgiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBDKysgc3RyaW5nIHR5cGUgIitzdCk7dmFyIEJlPWp0KHBlKSxjaT16KDQrQmUrdik7cmV0dXJuIE1lW2NpPj4yXT1CZT4+VXQsU3QocGUsY2krNCxCZSt2KSxEdCE9PW51bGwmJkR0LnB1c2goZXQsY2kpLGNpfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmpvLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbihEdCl7ZXQoRHQpfX0pfWZ1bmN0aW9uIGFsKEosdixzdCxSdCxTdCxHdCl7cWlbSl09e25hbWU6Vm4odikscmF3Q29uc3RydWN0b3I6am4oc3QsUnQpLHJhd0Rlc3RydWN0b3I6am4oU3QsR3QpLGZpZWxkczpbXX19ZnVuY3Rpb24gZmEoSix2LHN0LFJ0LFN0LEd0LGp0LFV0LER0LHBlKXtxaVtKXS5maWVsZHMucHVzaCh7ZmllbGROYW1lOlZuKHYpLGdldHRlclJldHVyblR5cGU6c3QsZ2V0dGVyOmpuKFJ0LFN0KSxnZXR0ZXJDb250ZXh0Okd0LHNldHRlckFyZ3VtZW50VHlwZTpqdCxzZXR0ZXI6am4oVXQsRHQpLHNldHRlckNvbnRleHQ6cGV9KX1mdW5jdGlvbiBFYShKLHYpe3Y9Vm4odiksVm8oSix7aXNWb2lkOiEwLG5hbWU6dixhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTpmdW5jdGlvbigpe30sdG9XaXJlVHlwZTpmdW5jdGlvbihzdCxSdCl7fX0pfWZ1bmN0aW9uIHNBKEope3JldHVybiBKfHxJaSgiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIitKKSxTc1tKXS52YWx1ZX1mdW5jdGlvbiBBbChKLHYsc3Qpe0o9c0EoSiksdj14QSh2LCJlbXZhbDo6YXMiKTt2YXIgUnQ9W10sU3Q9aG8oUnQpO3JldHVybiBPZVtzdD4+Ml09U3Qsdi50b1dpcmVUeXBlKFJ0LEopfXZhciBLZD17fTtmdW5jdGlvbiBKQShKKXt2YXIgdj1LZFtKXTtyZXR1cm4gdj09PXZvaWQgMD9WbihKKTp2fXZhciAkaD1bXTtmdW5jdGlvbiBYZChKLHYsc3QsUnQpe0o9JGhbSl0sdj1zQSh2KSxzdD1KQShzdCksSih2LHN0LG51bGwsUnQpfWZ1bmN0aW9uIGhsKCl7cmV0dXJuIHR5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0Ij9nbG9iYWxUaGlzOmZ1bmN0aW9uKCl7cmV0dXJuIEZ1bmN0aW9ufSgpKCJyZXR1cm4gdGhpcyIpKCl9ZnVuY3Rpb24gcWQoSil7cmV0dXJuIEo9PT0wP2hvKGhsKCkpOihKPUpBKEopLGhvKGhsKClbSl0pKX1mdW5jdGlvbiAkZChKKXt2YXIgdj0kaC5sZW5ndGg7cmV0dXJuICRoLnB1c2goSiksdn1mdW5jdGlvbiB0bShKLHYpe2Zvcih2YXIgc3Q9bmV3IEFycmF5KEopLFJ0PTA7UnQ8SjsrK1J0KXN0W1J0XT14QShPZVsodj4+MikrUnRdLCJwYXJhbWV0ZXIgIitSdCk7cmV0dXJuIHN0fWZ1bmN0aW9uIGVtKEosdil7Zm9yKHZhciBzdD10bShKLHYpLFJ0PXN0WzBdLFN0PVJ0Lm5hbWUrIl8kIitzdC5zbGljZSgxKS5tYXAoZnVuY3Rpb24oY24pe3JldHVybiBjbi5uYW1lfSkuam9pbigiXyIpKyIkIixHdD1bInJldFR5cGUiXSxqdD1bUnRdLFV0PSIiLER0PTA7RHQ8Si0xOysrRHQpVXQrPShEdCE9PTA/IiwgIjoiIikrImFyZyIrRHQsR3QucHVzaCgiYXJnVHlwZSIrRHQpLGp0LnB1c2goc3RbMStEdF0pO2Zvcih2YXIgcGU9T28oIm1ldGhvZENhbGxlcl8iK1N0KSxCZT0icmV0dXJuIGZ1bmN0aW9uICIrcGUrYChoYW5kbGUsIG5hbWUsIGRlc3RydWN0b3JzLCBhcmdzKSB7CmAsY2k9MCxEdD0wO0R0PEotMTsrK0R0KUJlKz0iICAgIHZhciBhcmciK0R0KyIgPSBhcmdUeXBlIitEdCsiLnJlYWRWYWx1ZUZyb21Qb2ludGVyKGFyZ3MiKyhjaT8iKyIrY2k6IiIpK2ApOwpgLGNpKz1zdFtEdCsxXS5hcmdQYWNrQWR2YW5jZTtCZSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIitVdCtgKTsKYDtmb3IodmFyIER0PTA7RHQ8Si0xOysrRHQpc3RbRHQrMV0uZGVsZXRlT2JqZWN0JiYoQmUrPSIgICAgYXJnVHlwZSIrRHQrIi5kZWxldGVPYmplY3QoYXJnIitEdCtgKTsKYCk7UnQuaXNWb2lkfHwoQmUrPWAgICAgcmV0dXJuIHJldFR5cGUudG9XaXJlVHlwZShkZXN0cnVjdG9ycywgcnYpOwpgKSxCZSs9YH07CmAsR3QucHVzaChCZSk7dmFyIHBpPXdBKEZ1bmN0aW9uLEd0KS5hcHBseShudWxsLGp0KTtyZXR1cm4gJGQocGkpfWZ1bmN0aW9uIGltKEope3JldHVybiBKPUpBKEopLGhvKGlbSl0pfWZ1bmN0aW9uIG5tKEosdil7cmV0dXJuIEo9c0EoSiksdj1zQSh2KSxobyhKW3ZdKX1mdW5jdGlvbiBzbShKKXtKPjQmJihTc1tKXS5yZWZjb3VudCs9MSl9ZnVuY3Rpb24gb20oSil7Zm9yKHZhciB2PSIiLHN0PTA7c3Q8SjsrK3N0KXYrPShzdCE9PTA/IiwgIjoiIikrImFyZyIrc3Q7Zm9yKHZhciBSdD0icmV0dXJuIGZ1bmN0aW9uIGVtdmFsX2FsbG9jYXRvcl8iK0orYChjb25zdHJ1Y3RvciwgYXJnVHlwZXMsIGFyZ3MpIHsKYCxzdD0wO3N0PEo7KytzdClSdCs9InZhciBhcmdUeXBlIitzdCsiID0gcmVxdWlyZVJlZ2lzdGVyZWRUeXBlKE1vZHVsZVsnSEVBUDMyJ11bKGFyZ1R5cGVzID4+PiAyKSArICIrc3QrJ10sICJwYXJhbWV0ZXIgJytzdCtgIik7CnZhciBhcmdgK3N0KyIgPSBhcmdUeXBlIitzdCtgLnJlYWRWYWx1ZUZyb21Qb2ludGVyKGFyZ3MpOwphcmdzICs9IGFyZ1R5cGVgK3N0K2BbJ2FyZ1BhY2tBZHZhbmNlJ107CmA7cmV0dXJuIFJ0Kz0idmFyIG9iaiA9IG5ldyBjb25zdHJ1Y3RvcigiK3YrYCk7CnJldHVybiBfX2VtdmFsX3JlZ2lzdGVyKG9iaik7Cn0KYCxuZXcgRnVuY3Rpb24oInJlcXVpcmVSZWdpc3RlcmVkVHlwZSIsIk1vZHVsZSIsIl9fZW12YWxfcmVnaXN0ZXIiLFJ0KSh4QSxpLGhvKX12YXIgY2w9e307ZnVuY3Rpb24gcm0oSix2LHN0LFJ0KXtKPXNBKEopO3ZhciBTdD1jbFt2XTtyZXR1cm4gU3R8fChTdD1vbSh2KSxjbFt2XT1TdCksU3QoSixzdCxSdCl9ZnVuY3Rpb24gYW0oSil7cmV0dXJuIGhvKEpBKEopKX1mdW5jdGlvbiBBbShKKXt2YXIgdj1Tc1tKXS52YWx1ZTtobih2KSxYaChKKX1mdW5jdGlvbiBsbCgpe2tpKCl9ZnVuY3Rpb24gaG0oSix2LHN0KXtlZS5jb3B5V2l0aGluKEosdix2K3N0KX1mdW5jdGlvbiBvQShKKXt0cnl7cmV0dXJuIGcuZ3JvdyhKLVd0LmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNiksYmUoZy5idWZmZXIpLDF9Y2F0Y2h7fX1mdW5jdGlvbiBjbShKKXt2YXIgdj1lZS5sZW5ndGg7Sj1KPj4+MDt2YXIgc3Q9MjE0NzQ4MzY0ODtpZihKPnN0KXJldHVybiExO2Zvcih2YXIgUnQ9MTtSdDw9NDtSdCo9Mil7dmFyIFN0PXYqKDErLjIvUnQpO1N0PU1hdGgubWluKFN0LEorMTAwNjYzMjk2KTt2YXIgR3Q9TWF0aC5taW4oc3QsSnQoTWF0aC5tYXgoSixTdCksNjU1MzYpKSxqdD1vQShHdCk7aWYoanQpcmV0dXJuITB9cmV0dXJuITF9dmFyIGpBPXttYXBwaW5nczp7fSxidWZmZXJzOltudWxsLFtdLFtdXSxwcmludENoYXI6ZnVuY3Rpb24oSix2KXt2YXIgc3Q9akEuYnVmZmVyc1tKXTt2PT09MHx8dj09PTEwPygoSj09PTE/TTpRKShIKHN0LDApKSxzdC5sZW5ndGg9MCk6c3QucHVzaCh2KX0sdmFyYXJnczp2b2lkIDAsZ2V0OmZ1bmN0aW9uKCl7akEudmFyYXJncys9NDt2YXIgSj1PZVtqQS52YXJhcmdzLTQ+PjJdO3JldHVybiBKfSxnZXRTdHI6ZnVuY3Rpb24oSil7dmFyIHY9aihKKTtyZXR1cm4gdn0sZ2V0NjQ6ZnVuY3Rpb24oSix2KXtyZXR1cm4gSn19O2Z1bmN0aW9uIGxtKEope3JldHVybiAwfWZ1bmN0aW9uIGRtKEosdixzdCxSdCxTdCl7fWZ1bmN0aW9uIGRsKEosdixzdCxSdCl7Zm9yKHZhciBTdD0wLEd0PTA7R3Q8c3Q7R3QrKyl7Zm9yKHZhciBqdD1PZVt2K0d0Kjg+PjJdLFV0PU9lW3YrKEd0KjgrNCk+PjJdLER0PTA7RHQ8VXQ7RHQrKylqQS5wcmludENoYXIoSixlZVtqdCtEdF0pO1N0Kz1VdH1yZXR1cm4gT2VbUnQ+PjJdPVN0LDB9ZnVuY3Rpb24gbW0oSil7ayhKfDApfVlyPWkuSW50ZXJuYWxFcnJvcj1hYShFcnJvciwiSW50ZXJuYWxFcnJvciIpLE1oKCksY3I9aS5CaW5kaW5nRXJyb3I9YWEoRXJyb3IsIkJpbmRpbmdFcnJvciIpLFZkKCksbmwoKSxMQSgpLHNsPWkuVW5ib3VuZFR5cGVFcnJvcj1hYShFcnJvciwiVW5ib3VuZFR5cGVFcnJvciIpLEFvKCk7dmFyIGZtPXt0OlRuLEk6S2MseDpjYSx3OnZoLGQ6emgsazp5ZCxIOnhkLG46R28sYTpsYSxBOmpkLGk6SGQsajp6ZCxoOnFoLEI6UEEsdjptYSx1OmFsLGM6ZmEsSjpFYSxtOkFsLHM6WGQsYjpYaCx5OnFkLHA6ZW0scjppbSxlOm5tLGc6c20scTpybSxmOmFtLGw6QW0sbzpsbCxFOmhtLEY6Y20sRzpsbSxDOmRtLHo6ZGwsRDptbX0sckE9bHMoKSxmaT1pLl9fX3dhc21fY2FsbF9jdG9ycz1mdW5jdGlvbigpe3JldHVybihmaT1pLl9fX3dhc21fY2FsbF9jdG9ycz1pLmFzbS5MKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHo9aS5fbWFsbG9jPWZ1bmN0aW9uKCl7cmV0dXJuKHo9aS5fbWFsbG9jPWkuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZXQ9aS5fZnJlZT1mdW5jdGlvbigpe3JldHVybihldD1pLl9mcmVlPWkuYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scHQ9aS5fX19nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybihwdD1pLl9fX2dldFR5cGVOYW1lPWkuYXNtLlApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJHQ9aS5fX19lbWJpbmRfcmVnaXN0ZXJfbmF0aXZlX2FuZF9idWlsdGluX3R5cGVzPWZ1bmN0aW9uKCl7cmV0dXJuKCR0PWkuX19fZW1iaW5kX3JlZ2lzdGVyX25hdGl2ZV9hbmRfYnVpbHRpbl90eXBlcz1pLmFzbS5RKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZlPWkuZHluQ2FsbF9qaWppPWZ1bmN0aW9uKCl7cmV0dXJuKHZlPWkuZHluQ2FsbF9qaWppPWkuYXNtLlIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGk7ZnVuY3Rpb24gX2EoSil7dGhpcy5uYW1lPSJFeGl0U3RhdHVzIix0aGlzLm1lc3NhZ2U9IlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoIitKKyIpIix0aGlzLnN0YXR1cz1KfWhzPWZ1bmN0aW9uIEooKXtoaXx8dGMoKSxoaXx8KGhzPUopfTtmdW5jdGlvbiB0YyhKKXtpZihKPUp8fGEsZWk+MHx8KFZpKCksZWk+MCkpcmV0dXJuO2Z1bmN0aW9uIHYoKXtoaXx8KGhpPSEwLGkuY2FsbGVkUnVuPSEwLCFWJiYoZ24oKSxEZSgpLG4oaSksaS5vblJ1bnRpbWVJbml0aWFsaXplZCYmaS5vblJ1bnRpbWVJbml0aWFsaXplZCgpLFllKCkpKX1pLnNldFN0YXR1cz8oaS5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2kuc2V0U3RhdHVzKCIiKX0sMSksdigpfSwxKSk6digpfWlmKGkucnVuPXRjLGkucHJlSW5pdClmb3IodHlwZW9mIGkucHJlSW5pdD09ImZ1bmN0aW9uIiYmKGkucHJlSW5pdD1baS5wcmVJbml0XSk7aS5wcmVJbml0Lmxlbmd0aD4wOylpLnByZUluaXQucG9wKCkoKTtyZXR1cm4gdGMoKSxlLnJlYWR5fX0oKTt0eXBlb2YgSGc9PSJvYmplY3QiJiZ0eXBlb2YgWUI9PSJvYmplY3QiP1lCLmV4cG9ydHM9RkI6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gRkJ9KTp0eXBlb2YgSGc9PSJvYmplY3QiJiYoSGcuQkFTSVM9RkIpfSk7dmFyIFNCPXt9O0hlKFNCLHtkZWZhdWx0OigpPT5DWnR9KTtmdW5jdGlvbiBSWnQodCxlKXtwLnR5cGVPZi5vYmplY3QoInRyYW5zY29kZXJNb2R1bGUiLEpSKTtsZXQgaT10Lmt0eDJCdWZmZXIsbj10LnN1cHBvcnRlZFRhcmdldEZvcm1hdHMsczt0cnl7cz1VWChpKX1jYXRjaHt0aHJvdyBuZXcga2UoIkludmFsaWQgS1RYMiBmaWxlLiIpfWlmKHMubGF5ZXJDb3VudCE9PTApdGhyb3cgbmV3IGtlKCJLVFgyIHRleHR1cmUgYXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkLiIpO2lmKHMucGl4ZWxEZXB0aCE9PTApdGhyb3cgbmV3IGtlKCJLVFgyIDNEIHRleHR1cmVzIGFyZSB1bnN1cHBvcnRlZC4iKTtsZXQgbz1zLmRhdGFGb3JtYXREZXNjcmlwdG9yWzBdLHI9bmV3IEFycmF5KHMubGV2ZWxDb3VudCk7cmV0dXJuIHMudmtGb3JtYXQ9PT0wJiYoby5jb2xvck1vZGVsPT09d1h8fG8uY29sb3JNb2RlbD09PXhYKT9JWnQoaSxzLG4sSlIsZSxyKTooZS5wdXNoKGkuYnVmZmVyKSxaWnQocyxyKSkscn1mdW5jdGlvbiBaWnQodCxlKXtsZXQgaT10LnZrRm9ybWF0PT09UFIuVktfRk9STUFUX1I4RzhCOF9TUkdCP0llLlJHQjpJZS5SR0JBLG47dC52a0Zvcm1hdD09PVBSLlZLX0ZPUk1BVF9SOEc4QjhBOF9VTk9STT9uPWdlLlVOU0lHTkVEX0JZVEU6dC52a0Zvcm1hdD09PVBSLlZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0ZMT0FUP249Z2UuSEFMRl9GTE9BVDp0LnZrRm9ybWF0PT09UFIuVktfRk9STUFUX1IzMkczMkIzMkEzMl9TRkxPQVQmJihuPWdlLkZMT0FUKTtmb3IobGV0IHM9MDtzPHQubGV2ZWxzLmxlbmd0aDsrK3Mpe2xldCBvPXt9O2Vbc109bztsZXQgcj10LmxldmVsc1tzXS5sZXZlbERhdGEsYT10LnBpeGVsV2lkdGg+PnMsaD10LnBpeGVsSGVpZ2h0Pj5zLEE9YSpoKkllLmNvbXBvbmVudHNMZW5ndGgoaSk7Zm9yKGxldCBkPTA7ZDx0LmZhY2VDb3VudDsrK2Qpe2xldCBmPXIuYnl0ZU9mZnNldCtBKnQudHlwZVNpemUqZCxFOyFtKG4pfHxnZS5zaXplSW5CeXRlcyhuKT09PTE/RT1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixmLEEpOmdlLnNpemVJbkJ5dGVzKG4pPT09Mj9FPW5ldyBVaW50MTZBcnJheShyLmJ1ZmZlcixmLEEpOkU9bmV3IEZsb2F0MzJBcnJheShyLmJ1ZmZlcixmLEEpLG9beVhbZF1dPXtpbnRlcm5hbEZvcm1hdDppLGRhdGF0eXBlOm4sd2lkdGg6YSxoZWlnaHQ6aCxsZXZlbEJ1ZmZlcjpFfX19fWZ1bmN0aW9uIEladCh0LGUsaSxuLHMsbyl7bGV0IHI9bmV3IG4uS1RYMkZpbGUodCksYT1yLmdldFdpZHRoKCksaD1yLmdldEhlaWdodCgpLEE9ci5nZXRMZXZlbHMoKSxkPXIuZ2V0SGFzQWxwaGEoKTtpZighKGE+MCl8fCEoaD4wKXx8IShBPjApKXRocm93IHIuY2xvc2UoKSxyLmRlbGV0ZSgpLG5ldyBrZSgiSW52YWxpZCBLVFgyIGZpbGUiKTtsZXQgZixFLF89ZS5kYXRhRm9ybWF0RGVzY3JpcHRvclswXSxSPW4udHJhbnNjb2Rlcl90ZXh0dXJlX2Zvcm1hdDtpZihfLmNvbG9yTW9kZWw9PT13WClpZihpLmV0YylmPWQ/SWUuUkdCQThfRVRDMl9FQUM6SWUuUkdCOF9FVEMyLEU9ZD9SLmNURkVUQzJfUkdCQTpSLmNURkVUQzFfUkdCO2Vsc2UgaWYoaS5ldGMxJiYhZClmPUllLlJHQl9FVEMxLEU9Ui5jVEZFVEMxX1JHQjtlbHNlIGlmKGkuczN0YylmPWQ/SWUuUkdCQV9EWFQ1OkllLlJHQl9EWFQxLEU9ZD9SLmNURkJDM19SR0JBOlIuY1RGQkMxX1JHQjtlbHNlIGlmKGkucHZydGMpZj1kP0llLlJHQkFfUFZSVENfNEJQUFYxOkllLlJHQl9QVlJUQ180QlBQVjEsRT1kP1IuY1RGUFZSVEMxXzRfUkdCQTpSLmNURlBWUlRDMV80X1JHQjtlbHNlIGlmKGkuYXN0YylmPUllLlJHQkFfQVNUQyxFPVIuY1RGQVNUQ180eDRfUkdCQTtlbHNlIGlmKGkuYmM3KWY9SWUuUkdCQV9CQzcsRT1SLmNURkJDN19SR0JBO2Vsc2UgdGhyb3cgbmV3IGtlKCJObyB0cmFuc2NvZGluZyBmb3JtYXQgdGFyZ2V0IGF2YWlsYWJsZSBmb3IgRVRDMVMgY29tcHJlc3NlZCBrdHgyLiIpO2Vsc2UgaWYoXy5jb2xvck1vZGVsPT09eFgpaWYoaS5hc3RjKWY9SWUuUkdCQV9BU1RDLEU9Ui5jVEZBU1RDXzR4NF9SR0JBO2Vsc2UgaWYoaS5iYzcpZj1JZS5SR0JBX0JDNyxFPVIuY1RGQkM3X1JHQkE7ZWxzZSBpZihpLnMzdGMpZj1kP0llLlJHQkFfRFhUNTpJZS5SR0JfRFhUMSxFPWQ/Ui5jVEZCQzNfUkdCQTpSLmNURkJDMV9SR0I7ZWxzZSBpZihpLmV0YylmPWQ/SWUuUkdCQThfRVRDMl9FQUM6SWUuUkdCOF9FVEMyLEU9ZD9SLmNURkVUQzJfUkdCQTpSLmNURkVUQzFfUkdCO2Vsc2UgaWYoaS5ldGMxJiYhZClmPUllLlJHQl9FVEMxLEU9Ui5jVEZFVEMxX1JHQjtlbHNlIGlmKGkucHZydGMpZj1kP0llLlJHQkFfUFZSVENfNEJQUFYxOkllLlJHQl9QVlJUQ180QlBQVjEsRT1kP1IuY1RGUFZSVEMxXzRfUkdCQTpSLmNURlBWUlRDMV80X1JHQjtlbHNlIHRocm93IG5ldyBrZSgiTm8gdHJhbnNjb2RpbmcgZm9ybWF0IHRhcmdldCBhdmFpbGFibGUgZm9yIFVBU1RDIGNvbXByZXNzZWQga3R4Mi4iKTtpZighci5zdGFydFRyYW5zY29kaW5nKCkpdGhyb3cgci5jbG9zZSgpLHIuZGVsZXRlKCksbmV3IGtlKCJzdGFydFRyYW5zY29kaW5nKCkgZmFpbGVkIik7Zm9yKGxldCBJPTA7STxlLmxldmVscy5sZW5ndGg7KytJKXtsZXQgQz17fTtvW0ldPUMsYT1lLnBpeGVsV2lkdGg+PkksaD1lLnBpeGVsSGVpZ2h0Pj5JO2xldCBOPXIuZ2V0SW1hZ2VUcmFuc2NvZGVkU2l6ZUluQnl0ZXMoSSwwLDAsRS52YWx1ZSksVD1uZXcgVWludDhBcnJheShOKSxGPXIudHJhbnNjb2RlSW1hZ2UoVCxJLDAsMCxFLnZhbHVlLDAsLTEsLTEpO2lmKCFtKEYpKXRocm93IG5ldyBrZSgidHJhbnNjb2RlSW1hZ2UoKSBmYWlsZWQuIik7cy5wdXNoKFQuYnVmZmVyKSxDW3lYWzBdXT17aW50ZXJuYWxGb3JtYXQ6Zix3aWR0aDphLGhlaWdodDpoLGxldmVsQnVmZmVyOlR9fXJldHVybiByLmNsb3NlKCksci5kZWxldGUoKSxvfWFzeW5jIGZ1bmN0aW9uIHBadCh0LGUpe2xldCBpPXQud2ViQXNzZW1ibHlDb25maWcsbj1aKExYLmRlZmF1bHQsc2VsZi5CQVNJUyk7cmV0dXJuIG0oaS53YXNtQmluYXJ5RmlsZSk/SlI9YXdhaXQgbihpKTpKUj1hd2FpdCBuKCksSlIuaW5pdGlhbGl6ZUJhc2lzKCksITB9ZnVuY3Rpb24gdVp0KHQsZSl7bGV0IGk9dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShpKT9wWnQodCxlKTpSWnQodCxlKX12YXIgTFgseVgsd1gseFgsSlIsQ1p0LE9CPU8oKCk9PntidCgpO210KCk7YWUoKTtfYygpO1BzKCk7RFgoKTtFYygpO05zKCk7UVgoKTtMWD1jbyhrWCgpLDEpLHlYPVsicG9zaXRpdmVYIiwibmVnYXRpdmVYIiwicG9zaXRpdmVZIiwibmVnYXRpdmVZIiwicG9zaXRpdmVaIiwibmVnYXRpdmVaIl0sd1g9MTYzLHhYPTE2NjtDWnQ9V2kodVp0KX0pO3ZhciBQWD17fTt2YXIgVkI9TygoKT0+e3NlbGYub25tZXNzYWdlPWZ1bmN0aW9uKHQpe2xldCBlPXQuZGF0YS5hcnJheSxpPXNlbGYud2Via2l0UG9zdE1lc3NhZ2V8fHNlbGYucG9zdE1lc3NhZ2U7dHJ5e2koe2FycmF5OmV9LFtlLmJ1ZmZlcl0pfWNhdGNoe2koe30pfX19KTt2YXIgdmcsemcsSlg9TygoKT0+e1hlKCk7SHQoKTthZSgpO210KCk7VnQoKTt2Zz17fTt2Zy5jbGlwVHJpYW5nbGVBdEF4aXNBbGlnbmVkVGhyZXNob2xkPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidGhyZXNob2xkIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJrZWVwQWJvdmUgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInUwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJ1MSBpcyByZXF1aXJlZC4iKTtpZighbShzKSl0aHJvdyBuZXcgWSgidTIgaXMgcmVxdWlyZWQuIik7bShvKT9vLmxlbmd0aD0wOm89W107bGV0IHIsYSxoO2U/KHI9aTx0LGE9bjx0LGg9czx0KToocj1pPnQsYT1uPnQsaD1zPnQpO2xldCBBPXIrYStoLGQsZixFLF8sUixJO3JldHVybiBBPT09MT9yPyhkPSh0LWkpLyhuLWkpLGY9KHQtaSkvKHMtaSksby5wdXNoKDEpLG8ucHVzaCgyKSxmIT09MSYmKG8ucHVzaCgtMSksby5wdXNoKDApLG8ucHVzaCgyKSxvLnB1c2goZikpLGQhPT0xJiYoby5wdXNoKC0xKSxvLnB1c2goMCksby5wdXNoKDEpLG8ucHVzaChkKSkpOmE/KEU9KHQtbikvKHMtbiksXz0odC1uKS8oaS1uKSxvLnB1c2goMiksby5wdXNoKDApLF8hPT0xJiYoby5wdXNoKC0xKSxvLnB1c2goMSksby5wdXNoKDApLG8ucHVzaChfKSksRSE9PTEmJihvLnB1c2goLTEpLG8ucHVzaCgxKSxvLnB1c2goMiksby5wdXNoKEUpKSk6aCYmKFI9KHQtcykvKGktcyksST0odC1zKS8obi1zKSxvLnB1c2goMCksby5wdXNoKDEpLEkhPT0xJiYoby5wdXNoKC0xKSxvLnB1c2goMiksby5wdXNoKDEpLG8ucHVzaChJKSksUiE9PTEmJihvLnB1c2goLTEpLG8ucHVzaCgyKSxvLnB1c2goMCksby5wdXNoKFIpKSk6QT09PTI/IXImJmkhPT10PyhfPSh0LW4pLyhpLW4pLFI9KHQtcykvKGktcyksby5wdXNoKDApLG8ucHVzaCgtMSksby5wdXNoKDEpLG8ucHVzaCgwKSxvLnB1c2goXyksby5wdXNoKC0xKSxvLnB1c2goMiksby5wdXNoKDApLG8ucHVzaChSKSk6IWEmJm4hPT10PyhJPSh0LXMpLyhuLXMpLGQ9KHQtaSkvKG4taSksby5wdXNoKDEpLG8ucHVzaCgtMSksby5wdXNoKDIpLG8ucHVzaCgxKSxvLnB1c2goSSksby5wdXNoKC0xKSxvLnB1c2goMCksby5wdXNoKDEpLG8ucHVzaChkKSk6IWgmJnMhPT10JiYoZj0odC1pKS8ocy1pKSxFPSh0LW4pLyhzLW4pLG8ucHVzaCgyKSxvLnB1c2goLTEpLG8ucHVzaCgwKSxvLnB1c2goMiksby5wdXNoKGYpLG8ucHVzaCgtMSksby5wdXNoKDEpLG8ucHVzaCgyKSxvLnB1c2goRSkpOkEhPT0zJiYoby5wdXNoKDApLG8ucHVzaCgxKSxvLnB1c2goMikpLG99O3ZnLmNvbXB1dGVCYXJ5Y2VudHJpY0Nvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIsYSxoKXtpZighbSh0KSl0aHJvdyBuZXcgWSgieCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgieSBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgieDEgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IFkoInkxIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHMpKXRocm93IG5ldyBZKCJ4MiBpcyByZXF1aXJlZC4iKTtpZighbShvKSl0aHJvdyBuZXcgWSgieTIgaXMgcmVxdWlyZWQuIik7aWYoIW0ocikpdGhyb3cgbmV3IFkoIngzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGEpKXRocm93IG5ldyBZKCJ5MyBpcyByZXF1aXJlZC4iKTtsZXQgQT1pLXIsZD1yLXMsZj1vLWEsRT1uLWEsXz0xLyhmKkErZCpFKSxSPWUtYSxJPXQtcixDPShmKkkrZCpSKSpfLE49KC1FKkkrQSpSKSpfLFQ9MS1DLU47cmV0dXJuIG0oaCk/KGgueD1DLGgueT1OLGguej1ULGgpOm5ldyBsKEMsTixUKX07dmcuY29tcHV0ZUxpbmVTZWdtZW50TGluZVNlZ21lbnRJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLGksbixzLG8scixhLGgpe3AudHlwZU9mLm51bWJlcigieDAwIix0KSxwLnR5cGVPZi5udW1iZXIoInkwMCIsZSkscC50eXBlT2YubnVtYmVyKCJ4MDEiLGkpLHAudHlwZU9mLm51bWJlcigieTAxIixuKSxwLnR5cGVPZi5udW1iZXIoIngxMCIscykscC50eXBlT2YubnVtYmVyKCJ5MTAiLG8pLHAudHlwZU9mLm51bWJlcigieDExIixyKSxwLnR5cGVPZi5udW1iZXIoInkxMSIsYSk7bGV0IEE9KHItcykqKGUtbyktKGEtbykqKHQtcyksZD0oaS10KSooZS1vKS0obi1lKSoodC1zKSxmPShhLW8pKihpLXQpLShyLXMpKihuLWUpO2lmKGY9PT0wKXJldHVybjtsZXQgRT1BL2YsXz1kL2Y7aWYoRT49MCYmRTw9MSYmXz49MCYmXzw9MSlyZXR1cm4gbShoKXx8KGg9bmV3IG50KSxoLng9dCtFKihpLXQpLGgueT1lK0UqKG4tZSksaH07emc9dmd9KTt2YXIgR0I9e307SGUoR0Ise2RlZmF1bHQ6KCk9PlFadH0pO2Z1bmN0aW9uIERadCh0LGUpe2xldCBpPXQuaXNFYXN0Q2hpbGQsbj10LmlzTm9ydGhDaGlsZCxzPWk/emE6MCxvPWk/cHM6emEscj1uP3phOjAsYT1uP3BzOnphLGg9Tlp0LEE9Ylp0LGQ9Rlp0LGY9U1p0O2gubGVuZ3RoPTAsQS5sZW5ndGg9MCxkLmxlbmd0aD0wLGYubGVuZ3RoPTA7bGV0IEU9WVp0O0UubGVuZ3RoPTA7bGV0IF89e30sUj10LnZlcnRpY2VzLEk9dC5pbmRpY2VzO0k9SS5zdWJhcnJheSgwLHQuaW5kZXhDb3VudFdpdGhvdXRTa2lydHMpO2xldCBDPXZjLmNsb25lKHQuZW5jb2RpbmcpLE49Qy5oYXNWZXJ0ZXhOb3JtYWxzLFQ9MCxGPXQudmVydGV4Q291bnRXaXRob3V0U2tpcnRzLGI9dC5taW5pbXVtSGVpZ2h0LEc9dC5tYXhpbXVtSGVpZ2h0LE09bmV3IEFycmF5KEYpLFE9bmV3IEFycmF5KEYpLFU9bmV3IEFycmF5KEYpLGs9Tj9uZXcgQXJyYXkoRioyKTp2b2lkIDAseT0yMCxjLGcsVixELHc7Zm9yKGc9MCxWPTA7ZzxGOysrZyxWKz0yKXtsZXQgUmk9Qy5kZWNvZGVUZXh0dXJlQ29vcmRpbmF0ZXMoUixnLEJadCk7aWYoYz1DLmRlY29kZUhlaWdodChSLGcpLEQ9TC5jbGFtcChSaS54KnBzfDAsMCxwcyksdz1MLmNsYW1wKFJpLnkqcHN8MCwwLHBzKSxVW2ddPUwuY2xhbXAoKGMtYikvKEctYikqcHN8MCwwLHBzKSxEPHkmJihEPTApLHc8eSYmKHc9MCkscHMtRDx5JiYoRD1wcykscHMtdzx5JiYodz1wcyksTVtnXT1ELFFbZ109dyxOKXtsZXQgc2k9Qy5nZXRPY3RFbmNvZGVkTm9ybWFsKFIsZyxXWnQpO2tbVl09c2kueCxrW1YrMV09c2kueX0oaSYmRD49emF8fCFpJiZEPD16YSkmJihuJiZ3Pj16YXx8IW4mJnc8PXphKSYmKF9bZ109VCxoLnB1c2goRCksQS5wdXNoKHcpLGQucHVzaChVW2ddKSxOJiYoZi5wdXNoKGtbVl0pLGYucHVzaChrW1YrMV0pKSwrK1QpfWxldCB4PVtdO3gucHVzaChuZXcgdXMpLHgucHVzaChuZXcgdXMpLHgucHVzaChuZXcgdXMpO2xldCBIPVtdO0gucHVzaChuZXcgdXMpLEgucHVzaChuZXcgdXMpLEgucHVzaChuZXcgdXMpO2xldCBqLFg7Zm9yKGc9MDtnPEkubGVuZ3RoO2crPTMpe2xldCBSaT1JW2ddLHNpPUlbZysxXSxxZT1JW2crMl0sVmk9TVtSaV0sZ249TVtzaV0sRGU9TVtxZV07eFswXS5pbml0aWFsaXplSW5kZXhlZChNLFEsVSxrLFJpKSx4WzFdLmluaXRpYWxpemVJbmRleGVkKE0sUSxVLGssc2kpLHhbMl0uaW5pdGlhbGl6ZUluZGV4ZWQoTSxRLFUsayxxZSk7bGV0IFllPXpnLmNsaXBUcmlhbmdsZUF0QXhpc0FsaWduZWRUaHJlc2hvbGQoemEsaSxWaSxnbixEZSxnWnQpO2o9MCwhKGo+PVllLmxlbmd0aCkmJihqPUhbMF0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFllLGoseCksIShqPj1ZZS5sZW5ndGgpJiYoaj1IWzFdLmluaXRpYWxpemVGcm9tQ2xpcFJlc3VsdChZZSxqLHgpLCEoaj49WWUubGVuZ3RoKSYmKGo9SFsyXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQoWWUsaix4KSxYPXpnLmNsaXBUcmlhbmdsZUF0QXhpc0FsaWduZWRUaHJlc2hvbGQoemEsbixIWzBdLmdldFYoKSxIWzFdLmdldFYoKSxIWzJdLmdldFYoKSxqWCksSFgoaCxBLGQsZixFLF8sWCxILE4pLGo8WWUubGVuZ3RoJiYoSFsyXS5jbG9uZShIWzFdKSxIWzJdLmluaXRpYWxpemVGcm9tQ2xpcFJlc3VsdChZZSxqLHgpLFg9emcuY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZCh6YSxuLEhbMF0uZ2V0VigpLEhbMV0uZ2V0VigpLEhbMl0uZ2V0VigpLGpYKSxIWChoLEEsZCxmLEUsXyxYLEgsTikpKSkpfWxldCB0dD1pPy1wczowLEI9bj8tcHM6MCxJdD1bXSxndD1bXSxZdD1bXSxNdD1bXSxDdD1OdW1iZXIuTUFYX1ZBTFVFLHp0PS1DdCxrdD1UWnQ7a3QubGVuZ3RoPTA7bGV0IEp0PW90LmNsb25lKHQuZWxsaXBzb2lkKSxXdD1YdC5jbG9uZSh0LmNoaWxkUmVjdGFuZ2xlKSxGdD1XdC5ub3J0aCxlZT1XdC5zb3V0aCxjZT1XdC5lYXN0LGplPVd0Lndlc3Q7Zm9yKGNlPGplJiYoY2UrPUwuVFdPX1BJKSxnPTA7ZzxoLmxlbmd0aDsrK2cpRD1NYXRoLnJvdW5kKGhbZ10pLEQ8PXM/KEl0LnB1c2goZyksRD0wKTpEPj1vPyhZdC5wdXNoKGcpLEQ9cHMpOkQ9RCoyK3R0LGhbZ109RCx3PU1hdGgucm91bmQoQVtnXSksdzw9cj8oZ3QucHVzaChnKSx3PTApOnc+PWE/KE10LnB1c2goZyksdz1wcyk6dz13KjIrQixBW2ddPXcsYz1MLmxlcnAoYixHLGRbZ10vcHMpLGM8Q3QmJihDdD1jKSxjPnp0JiYoenQ9YyksZFtnXT1jLEtnLmxvbmdpdHVkZT1MLmxlcnAoamUsY2UsRC9wcyksS2cubGF0aXR1ZGU9TC5sZXJwKGVlLEZ0LHcvcHMpLEtnLmhlaWdodD1jLEp0LmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEtnLERoKSxrdC5wdXNoKERoLngpLGt0LnB1c2goRGgueSksa3QucHVzaChEaC56KTtsZXQgT2U9TnQuZnJvbVZlcnRpY2VzKGt0LGwuWkVSTywzLFZadCksTWU9enMuZnJvbVJlY3RhbmdsZShXdCxDdCx6dCxKdCxHWnQpLENlPW5ldyBkQShKdCkuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tVmVydGljZXNQb3NzaWJseVVuZGVyRWxsaXBzb2lkKE9lLmNlbnRlcixrdCwzLE9lLmNlbnRlcixDdCxPWnQpLGJlPXp0LUN0LG5pPW5ldyBVaW50MTZBcnJheShoLmxlbmd0aCtBLmxlbmd0aCtkLmxlbmd0aCk7Zm9yKGc9MDtnPGgubGVuZ3RoOysrZyluaVtnXT1oW2ddO2xldCB6ZT1oLmxlbmd0aDtmb3IoZz0wO2c8QS5sZW5ndGg7KytnKW5pW3plK2ddPUFbZ107Zm9yKHplKz1BLmxlbmd0aCxnPTA7ZzxkLmxlbmd0aDsrK2cpbmlbemUrZ109cHMqKGRbZ10tQ3QpL2JlO2xldCBHZT10ZS5jcmVhdGVUeXBlZEFycmF5KGgubGVuZ3RoLEUpLFVpO2lmKE4pe2xldCBSaT1uZXcgVWludDhBcnJheShmKTtlLnB1c2gobmkuYnVmZmVyLEdlLmJ1ZmZlcixSaS5idWZmZXIpLFVpPVJpLmJ1ZmZlcn1lbHNlIGUucHVzaChuaS5idWZmZXIsR2UuYnVmZmVyKTtyZXR1cm57dmVydGljZXM6bmkuYnVmZmVyLGVuY29kZWROb3JtYWxzOlVpLGluZGljZXM6R2UuYnVmZmVyLG1pbmltdW1IZWlnaHQ6Q3QsbWF4aW11bUhlaWdodDp6dCx3ZXN0SW5kaWNlczpJdCxzb3V0aEluZGljZXM6Z3QsZWFzdEluZGljZXM6WXQsbm9ydGhJbmRpY2VzOk10LGJvdW5kaW5nU3BoZXJlOk9lLG9yaWVudGVkQm91bmRpbmdCb3g6TWUsaG9yaXpvbk9jY2x1c2lvblBvaW50OkNlfX1mdW5jdGlvbiB1cygpe3RoaXMudmVydGV4QnVmZmVyPXZvaWQgMCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLmZpcnN0PXZvaWQgMCx0aGlzLnNlY29uZD12b2lkIDAsdGhpcy5yYXRpbz12b2lkIDB9ZnVuY3Rpb24gdlgodCxlKXsrK1hnO2xldCBpPU1adFtYZ10sbj1VWnRbWGddO3JldHVybiBpPVlpLm9jdERlY29kZSh0LmZpcnN0LmdldE5vcm1hbFgoKSx0LmZpcnN0LmdldE5vcm1hbFkoKSxpKSxuPVlpLm9jdERlY29kZSh0LnNlY29uZC5nZXROb3JtYWxYKCksdC5zZWNvbmQuZ2V0Tm9ybWFsWSgpLG4pLERoPWwubGVycChpLG4sdC5yYXRpbyxEaCksbC5ub3JtYWxpemUoRGgsRGgpLFlpLm9jdEVuY29kZShEaCxlKSwtLVhnLGV9ZnVuY3Rpb24gSFgodCxlLGksbixzLG8scixhLGgpe2lmKHIubGVuZ3RoPT09MClyZXR1cm47bGV0IEE9MCxkPTA7Zm9yKDtkPHIubGVuZ3RoOylkPUpvW0ErK10uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KHIsZCxhKTtmb3IobGV0IGY9MDtmPEE7KytmKXtsZXQgRT1Kb1tmXTtpZihFLmlzSW5kZXhlZCgpKUUubmV3SW5kZXg9b1tFLmluZGV4XSxFLnVCdWZmZXI9dCxFLnZCdWZmZXI9ZSxFLmhlaWdodEJ1ZmZlcj1pLGgmJihFLm5vcm1hbEJ1ZmZlcj1uKTtlbHNle2xldCBfPUUuZ2V0S2V5KCk7aWYobShvW19dKSlFLm5ld0luZGV4PW9bX107ZWxzZXtsZXQgUj10Lmxlbmd0aDt0LnB1c2goRS5nZXRVKCkpLGUucHVzaChFLmdldFYoKSksaS5wdXNoKEUuZ2V0SCgpKSxoJiYobi5wdXNoKEUuZ2V0Tm9ybWFsWCgpKSxuLnB1c2goRS5nZXROb3JtYWxZKCkpKSxFLm5ld0luZGV4PVIsb1tfXT1SfX19QT09PTM/KHMucHVzaChKb1swXS5uZXdJbmRleCkscy5wdXNoKEpvWzFdLm5ld0luZGV4KSxzLnB1c2goSm9bMl0ubmV3SW5kZXgpKTpBPT09NCYmKHMucHVzaChKb1swXS5uZXdJbmRleCkscy5wdXNoKEpvWzFdLm5ld0luZGV4KSxzLnB1c2goSm9bMl0ubmV3SW5kZXgpLHMucHVzaChKb1swXS5uZXdJbmRleCkscy5wdXNoKEpvWzJdLm5ld0luZGV4KSxzLnB1c2goSm9bM10ubmV3SW5kZXgpKX12YXIgcHMsemEsZ1p0LGpYLFRadCxLZyxEaCxOWnQsYlp0LEZadCxZWnQsU1p0LE9adCxWWnQsR1p0LEJadCxXWnQsZUUsWGcsTVp0LFVadCxKbyxRWnQsQkI9TygoKT0+e29oKCk7X2koKTtYZSgpO0h0KCk7cmkoKTttdCgpO1ZlKCk7U20oKTtEaSgpO0pYKCk7X2UoKTtKbCgpO3BuKCk7V1IoKTtOcygpO3BzPTMyNzY3LHphPXBzLzJ8MCxnWnQ9W10salg9W10sVFp0PVtdLEtnPW5ldyB1dCxEaD1uZXcgbCxOWnQ9W10sYlp0PVtdLEZadD1bXSxZWnQ9W10sU1p0PVtdLE9adD1uZXcgbCxWWnQ9bmV3IE50LEdadD1uZXcgenMsQlp0PW5ldyBudCxXWnQ9bmV3IGw7dXMucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgdXMpLHQudUJ1ZmZlcj10aGlzLnVCdWZmZXIsdC52QnVmZmVyPXRoaXMudkJ1ZmZlcix0LmhlaWdodEJ1ZmZlcj10aGlzLmhlaWdodEJ1ZmZlcix0Lm5vcm1hbEJ1ZmZlcj10aGlzLm5vcm1hbEJ1ZmZlcix0LmluZGV4PXRoaXMuaW5kZXgsdC5maXJzdD10aGlzLmZpcnN0LHQuc2Vjb25kPXRoaXMuc2Vjb25kLHQucmF0aW89dGhpcy5yYXRpbyx0fTt1cy5wcm90b3R5cGUuaW5pdGlhbGl6ZUluZGV4ZWQ9ZnVuY3Rpb24odCxlLGksbixzKXt0aGlzLnVCdWZmZXI9dCx0aGlzLnZCdWZmZXI9ZSx0aGlzLmhlaWdodEJ1ZmZlcj1pLHRoaXMubm9ybWFsQnVmZmVyPW4sdGhpcy5pbmRleD1zLHRoaXMuZmlyc3Q9dm9pZCAwLHRoaXMuc2Vjb25kPXZvaWQgMCx0aGlzLnJhdGlvPXZvaWQgMH07dXMucHJvdG90eXBlLmluaXRpYWxpemVGcm9tQ2xpcFJlc3VsdD1mdW5jdGlvbih0LGUsaSl7bGV0IG49ZSsxO3JldHVybiB0W2VdIT09LTE/aVt0W2VdXS5jbG9uZSh0aGlzKToodGhpcy52ZXJ0ZXhCdWZmZXI9dm9pZCAwLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMuZmlyc3Q9aVt0W25dXSwrK24sdGhpcy5zZWNvbmQ9aVt0W25dXSwrK24sdGhpcy5yYXRpbz10W25dLCsrbiksbn07dXMucHJvdG90eXBlLmdldEtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5kZXhlZCgpP3RoaXMuaW5kZXg6SlNPTi5zdHJpbmdpZnkoe2ZpcnN0OnRoaXMuZmlyc3QuZ2V0S2V5KCksc2Vjb25kOnRoaXMuc2Vjb25kLmdldEtleSgpLHJhdGlvOnRoaXMucmF0aW99KX07dXMucHJvdG90eXBlLmlzSW5kZXhlZD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpfTt1cy5wcm90b3R5cGUuZ2V0SD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMuaGVpZ2h0QnVmZmVyW3RoaXMuaW5kZXhdOkwubGVycCh0aGlzLmZpcnN0LmdldEgoKSx0aGlzLnNlY29uZC5nZXRIKCksdGhpcy5yYXRpbyl9O3VzLnByb3RvdHlwZS5nZXRVPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5pbmRleCk/dGhpcy51QnVmZmVyW3RoaXMuaW5kZXhdOkwubGVycCh0aGlzLmZpcnN0LmdldFUoKSx0aGlzLnNlY29uZC5nZXRVKCksdGhpcy5yYXRpbyl9O3VzLnByb3RvdHlwZS5nZXRWPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5pbmRleCk/dGhpcy52QnVmZmVyW3RoaXMuaW5kZXhdOkwubGVycCh0aGlzLmZpcnN0LmdldFYoKSx0aGlzLnNlY29uZC5nZXRWKCksdGhpcy5yYXRpbyl9O2VFPW5ldyBudCxYZz0tMSxNWnQ9W25ldyBsLG5ldyBsXSxVWnQ9W25ldyBsLG5ldyBsXTt1cy5wcm90b3R5cGUuZ2V0Tm9ybWFsWD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMubm9ybWFsQnVmZmVyW3RoaXMuaW5kZXgqMl06KGVFPXZYKHRoaXMsZUUpLGVFLngpfTt1cy5wcm90b3R5cGUuZ2V0Tm9ybWFsWT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMubm9ybWFsQnVmZmVyW3RoaXMuaW5kZXgqMisxXTooZUU9dlgodGhpcyxlRSksZUUueSl9O0pvPVtdO0pvLnB1c2gobmV3IHVzKTtKby5wdXNoKG5ldyB1cyk7Sm8ucHVzaChuZXcgdXMpO0pvLnB1c2gobmV3IHVzKTtRWnQ9V2koRFp0KX0pO3ZhciBrWnQsV0I9TygoKT0+e2tadD1qQih7Ii4vQW5hbHlzaXNXb3JrZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oaTAoKSxlMCkpLCIuL0Nvbmp1bmN0aW9uQXNzZXNzbWVudC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih0TygpLCRTKSksIi4vY29tYmluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGlPKCksZU8pKSwiLi9jcmVhdGVCb3hHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihyTygpLG9PKSksIi4vY3JlYXRlQm94T3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGhPKCksQU8pKSwiLi9jcmVhdGVDaXJjbGVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihJTygpLFpPKSksIi4vY3JlYXRlQ2lyY2xlT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGdPKCksQ08pKSwiLi9jcmVhdGVDb3BsYW5hclBvbHlnb25HZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihCTygpLEdPKSksIi4vY3JlYXRlQ29wbGFuYXJQb2x5Z29uT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KE1PKCksRE8pKSwiLi9jcmVhdGVDb3JyaWRvckdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFhPKCksS08pKSwiLi9jcmVhdGVDb3JyaWRvck91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih0VigpLCRPKSksIi4vY3JlYXRlQ3lsaW5kZXJHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihyVigpLG9WKSksIi4vY3JlYXRlQ3lsaW5kZXJPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oY1YoKSxoVikpLCIuL2NyZWF0ZUVsbGlwc2VHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkVigpLGxWKSksIi4vY3JlYXRlRWxsaXBzZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihmVigpLG1WKSksIi4vY3JlYXRlRWxsaXBzb2lkR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oUlYoKSxfVikpLCIuL2NyZWF0ZUVsbGlwc29pZE91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihwVigpLElWKSksIi4vY3JlYXRlRnJ1c3R1bUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGJWKCksTlYpKSwiLi9jcmVhdGVGcnVzdHVtT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KE9WKCksU1YpKSwiLi9jcmVhdGVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihNQigpLERCKSksIi4vY3JlYXRlR3JvdW5kUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihHVigpLFZWKSksIi4vY3JlYXRlUGxhbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihEVigpLFdWKSksIi4vY3JlYXRlUGxhbmVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oUVYoKSxVVikpLCIuL2NyZWF0ZVBvbHlnb25HZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih3VigpLHlWKSksIi4vY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihKVigpLFBWKSksIi4vY3JlYXRlUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih2VigpLEhWKSksIi4vY3JlYXRlUG9seWxpbmVWb2x1bWVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihYVigpLEtWKSksIi4vY3JlYXRlUG9seWxpbmVWb2x1bWVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4odEcoKSwkVikpLCIuL2NyZWF0ZVJlY3RhbmdsZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGNHKCksaEcpKSwiLi9jcmVhdGVSZWN0YW5nbGVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4obUcoKSxkRykpLCIuL2NyZWF0ZVNpbXBsZVBvbHlsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oX0coKSxFRykpLCIuL2NyZWF0ZVNwaGVyZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KElHKCksWkcpKSwiLi9jcmVhdGVTcGhlcmVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oQ0coKSx1RykpLCIuL2NyZWF0ZVRhc2tQcm9jZXNzb3JXb3JrZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oTnMoKSx0MCkpLCIuL2NyZWF0ZVZlY3RvclRpbGVDbGFtcGVkUG9seWxpbmVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFRHKCksZ0cpKSwiLi9jcmVhdGVWZWN0b3JUaWxlR2VvbWV0cmllcy5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihiRygpLE5HKSksIi4vY3JlYXRlVmVjdG9yVGlsZVBvaW50cy5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihTRygpLFlHKSksIi4vY3JlYXRlVmVjdG9yVGlsZVBvbHlnb25zLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFZHKCksT0cpKSwiLi9jcmVhdGVWZWN0b3JUaWxlUG9seWxpbmVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFdHKCksQkcpKSwiLi9jcmVhdGVWZXJ0aWNlc0Zyb21Hb29nbGVFYXJ0aEVudGVycHJpc2VCdWZmZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oVUcoKSxNRykpLCIuL2NyZWF0ZVZlcnRpY2VzRnJvbUhlaWdodG1hcC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihMRygpLGtHKSksIi4vY3JlYXRlVmVydGljZXNGcm9tUXVhbnRpemVkVGVycmFpbk1lc2guanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oeEcoKSx3RykpLCIuL2NyZWF0ZVdhbGxHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih2RygpLEhHKSksIi4vY3JlYXRlV2FsbE91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihYRygpLEtHKSksIi4vZGVjb2RlRHJhY28uanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4obkIoKSxpQikpLCIuL2RlY29kZUdvb2dsZUVhcnRoRW50ZXJwcmlzZVBhY2tldC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihwQigpLElCKSksIi4vZGVjb2RlSTNTLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KE5CKCksVEIpKSwiLi90cmFuc2NvZGVLVFgyLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KE9CKCksU0IpKSwiLi90cmFuc2ZlclR5cGVkQXJyYXlUZXN0LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFZCKCksUFgpKSwiLi91cHNhbXBsZVF1YW50aXplZFRlcnJhaW5NZXNoLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEJCKCksR0IpKX0pfSk7dmFyIERCPXt9O0hlKERCLHtkZWZhdWx0OigpPT53WnR9KTthc3luYyBmdW5jdGlvbiBMWnQodCxlKXtsZXQgaT1aKHFnW2VdLHFnW3RdKTtyZXR1cm4gbShpKT9pOm0oZSk/KHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0Ij9pPVhvKGUpOmk9KGF3YWl0IGltcG9ydChlKSkuZGVmYXVsdCxxZ1tlXT1pLGkpOih0eXBlb2YgZXhwb3J0cz09Im9iamVjdCI/aT1YbyhgV29ya2Vycy8ke3R9YCk6aT0obShlKT9hd2FpdCBpbXBvcnQoZSk6YXdhaXQga1p0KGAuLyR7dH0uanNgKSkuZGVmYXVsdCxxZ1t0XT1pLGkpfWFzeW5jIGZ1bmN0aW9uIHladCh0LGUpe2xldCBpPXQuc3ViVGFza3Msbj1pLmxlbmd0aCxzPW5ldyBBcnJheShuKTtmb3IobGV0IG89MDtvPG47bysrKXtsZXQgcj1pW29dLGE9ci5nZW9tZXRyeSxoPXIubW9kdWxlTmFtZSxBPXIubW9kdWxlUGF0aDtpZihtKGgpJiZtKEEpKXRocm93IG5ldyBZKCJNdXN0IG9ubHkgc2V0IG1vZHVsZU5hbWUgb3IgbW9kdWxlUGF0aCIpO20oaCl8fG0oQSk/c1tvXT1MWnQoaCxBKS50aGVuKGQ9PmQoYSxyLm9mZnNldCkpOnNbb109YX1yZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbihmdW5jdGlvbihvKXtyZXR1cm4gVEEucGFja0NyZWF0ZUdlb21ldHJ5UmVzdWx0cyhvLGUpfSl9dmFyIHFnLHdadCxNQj1PKCgpPT57VnQoKTtidCgpO210KCk7S0koKTtOcygpO1dCKCk7cWc9e307d1p0PVdpKHladCl9KTt2YXIga0l0PXt9O0hlKGtJdCx7QW5hbHlzaXNXb3JrZXI6KCk9PnhadCxDb25qdW5jdGlvbkFzc2Vzc21lbnQ6KCk9PlBadCxjb21iaW5lR2VvbWV0cnk6KCk9PkpadCxjcmVhdGVCb3hHZW9tZXRyeTooKT0+alp0LGNyZWF0ZUJveE91dGxpbmVHZW9tZXRyeTooKT0+SFp0LGNyZWF0ZUNpcmNsZUdlb21ldHJ5OigpPT52WnQsY3JlYXRlQ2lyY2xlT3V0bGluZUdlb21ldHJ5OigpPT56WnQsY3JlYXRlQ29wbGFuYXJQb2x5Z29uR2VvbWV0cnk6KCk9PktadCxjcmVhdGVDb3BsYW5hclBvbHlnb25PdXRsaW5lR2VvbWV0cnk6KCk9PlhadCxjcmVhdGVDb3JyaWRvckdlb21ldHJ5OigpPT5xWnQsY3JlYXRlQ29ycmlkb3JPdXRsaW5lR2VvbWV0cnk6KCk9PiRadCxjcmVhdGVDeWxpbmRlckdlb21ldHJ5OigpPT50SXQsY3JlYXRlQ3lsaW5kZXJPdXRsaW5lR2VvbWV0cnk6KCk9PmVJdCxjcmVhdGVFbGxpcHNlR2VvbWV0cnk6KCk9PmlJdCxjcmVhdGVFbGxpcHNlT3V0bGluZUdlb21ldHJ5OigpPT5uSXQsY3JlYXRlRWxsaXBzb2lkR2VvbWV0cnk6KCk9PnNJdCxjcmVhdGVFbGxpcHNvaWRPdXRsaW5lR2VvbWV0cnk6KCk9Pm9JdCxjcmVhdGVGcnVzdHVtR2VvbWV0cnk6KCk9PnJJdCxjcmVhdGVGcnVzdHVtT3V0bGluZUdlb21ldHJ5OigpPT5hSXQsY3JlYXRlR2VvbWV0cnk6KCk9PkFJdCxjcmVhdGVHcm91bmRQb2x5bGluZUdlb21ldHJ5OigpPT5oSXQsY3JlYXRlUGxhbmVHZW9tZXRyeTooKT0+Y0l0LGNyZWF0ZVBsYW5lT3V0bGluZUdlb21ldHJ5OigpPT5sSXQsY3JlYXRlUG9seWdvbkdlb21ldHJ5OigpPT5kSXQsY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeTooKT0+bUl0LGNyZWF0ZVBvbHlsaW5lR2VvbWV0cnk6KCk9PmZJdCxjcmVhdGVQb2x5bGluZVZvbHVtZUdlb21ldHJ5OigpPT5FSXQsY3JlYXRlUG9seWxpbmVWb2x1bWVPdXRsaW5lR2VvbWV0cnk6KCk9Pl9JdCxjcmVhdGVSZWN0YW5nbGVHZW9tZXRyeTooKT0+Ukl0LGNyZWF0ZVJlY3RhbmdsZU91dGxpbmVHZW9tZXRyeTooKT0+Wkl0LGNyZWF0ZVNpbXBsZVBvbHlsaW5lR2VvbWV0cnk6KCk9PklJdCxjcmVhdGVTcGhlcmVHZW9tZXRyeTooKT0+cEl0LGNyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeTooKT0+dUl0LGNyZWF0ZVRhc2tQcm9jZXNzb3JXb3JrZXI6KCk9PkNJdCxjcmVhdGVWZWN0b3JUaWxlQ2xhbXBlZFBvbHlsaW5lczooKT0+Z0l0LGNyZWF0ZVZlY3RvclRpbGVHZW9tZXRyaWVzOigpPT5USXQsY3JlYXRlVmVjdG9yVGlsZVBvaW50czooKT0+Tkl0LGNyZWF0ZVZlY3RvclRpbGVQb2x5Z29uczooKT0+Ykl0LGNyZWF0ZVZlY3RvclRpbGVQb2x5bGluZXM6KCk9PkZJdCxjcmVhdGVWZXJ0aWNlc0Zyb21Hb29nbGVFYXJ0aEVudGVycHJpc2VCdWZmZXI6KCk9PllJdCxjcmVhdGVWZXJ0aWNlc0Zyb21IZWlnaHRtYXA6KCk9PlNJdCxjcmVhdGVWZXJ0aWNlc0Zyb21RdWFudGl6ZWRUZXJyYWluTWVzaDooKT0+T0l0LGNyZWF0ZVdhbGxHZW9tZXRyeTooKT0+Vkl0LGNyZWF0ZVdhbGxPdXRsaW5lR2VvbWV0cnk6KCk9PkdJdCxkZWNvZGVEcmFjbzooKT0+Qkl0LGRlY29kZUdvb2dsZUVhcnRoRW50ZXJwcmlzZVBhY2tldDooKT0+V0l0LGRlY29kZUkzUzooKT0+REl0LHRyYW5zY29kZUtUWDI6KCk9Pk1JdCx0cmFuc2ZlclR5cGVkQXJyYXlUZXN0OigpPT5VSXQsdXBzYW1wbGVRdWFudGl6ZWRUZXJyYWluTWVzaDooKT0+UUl0fSk7dmFyIHhadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmkwKCkpfSxQWnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50TygpKX0sSlp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+aU8oKSl9LGpadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnJPKCkpfSxIWnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5oTygpKX0sdlp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+SU8oKSl9LHpadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmdPKCkpfSxLWnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5CTygpKX0sWFp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+TU8oKSl9LHFadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlhPKCkpfSwkWnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50VigpKX0sdEl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+clYoKSl9LGVJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmNWKCkpfSxpSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5kVigpKX0sbkl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+ZlYoKSl9LHNJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlJWKCkpfSxvSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5wVigpKX0sckl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+YlYoKSl9LGFJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk9WKCkpfSxBSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5NQigpKX0saEl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+R1YoKSl9LGNJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkRWKCkpfSxsSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5RVigpKX0sZEl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+d1YoKSl9LG1JdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkpWKCkpfSxmSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT52VigpKX0sRUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+WFYoKSl9LF9JdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRHKCkpfSxSSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5jRygpKX0sWkl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+bUcoKSl9LElJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pl9HKCkpfSxwSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5JRygpKX0sdUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+Q0coKSl9LENJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk5zKCkpfSxnSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5URygpKX0sVEl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+YkcoKSl9LE5JdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlNHKCkpfSxiSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5WRygpKX0sRkl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+V0coKSl9LFlJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlVHKCkpfSxTSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5MRygpKX0sT0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+eEcoKSl9LFZJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnZHKCkpfSxHSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5YRygpKX0sQkl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+bkIoKSl9LFdJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnBCKCkpfSxESXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5OQigpKX0sTUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+T0IoKSl9LFVJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlZCKCkpfSxRSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5CQigpKX07cmV0dXJuIFY4KGtJdCk7fSkoKTsK")});var KO=Vo((tOe,wct)=>{var eOe=R(W()),VR=function(t){t==null&&(t=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,t.constructor==Array?this.init_by_array(t,t.length):this.init_seed(t)};VR.prototype.init_seed=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(((t&4294901760)>>>16)*1812433253<<16)+(t&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};VR.prototype.init_by_array=function(t,e){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>e?this.N:e;o;o--){var a=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((a&4294901760)>>>16)*1664525<<16)+(a&65535)*1664525)+t[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=e&&(i=0)}for(o=this.N-1;o;o--){var a=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((a&4294901760)>>>16)*1566083941<<16)+(a&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};VR.prototype.random_int=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n>>1^e[t&1];for(;n>>1^e[t&1];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[t&1],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0};VR.prototype.random_int31=function(){return this.random_int()>>>1};VR.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};VR.prototype.random=function(){return this.random_int()*(1/4294967296)};VR.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};VR.prototype.random_long=function(){var t=this.random_int()>>>5,e=this.random_int()>>>6;return(t*67108864+e)*(1/9007199254740992)};wct.exports=VR});var bmt=Vo((jg,qg)=>{var Lwe=R(W());/*! https://mths.be/punycode v1.4.0 by @mathias */(function(t){var e=typeof jg=="object"&&jg&&!jg.nodeType&&jg,n=typeof qg=="object"&&qg&&!qg.nodeType&&qg,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(t=i);var o,a=2147483647,s=36,l=1,r=26,d=38,m=700,h=72,Z=128,b="-",u=/^xn--/,F=/[^\x20-\x7E]/,U=/[\x2E\u3002\uFF0E\uFF61]/g,G={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=s-l,T=Math.floor,g=String.fromCharCode,C;function y(w){throw new RangeError(G[w])}function Y(w,z){for(var H=w.length,nt=[];H--;)nt[H]=z(w[H]);return nt}function Q(w,z){var H=w.split("@"),nt="";H.length>1&&(nt=H[0]+"@",w=H[1]),w=w.replace(U,".");var $=w.split("."),dt=Y($,z).join(".");return nt+dt}function J(w){for(var z=[],H=0,nt=w.length,$,dt;H=55296&&$<=56319&&H65535&&(z-=65536,H+=g(z>>>10&1023|55296),z=56320|z&1023),H+=g(z),H}).join("")}function V(w){return w-48<10?w-22:w-65<26?w-65:w-97<26?w-97:s}function E(w,z){return w+22+75*(w<26)-((z!=0)<<5)}function I(w,z,H){var nt=0;for(w=H?T(w/m):w>>1,w+=T(w/z);w>A*r>>1;nt+=s)w=T(w/A);return T(nt+(A+1)*w/(w+d))}function B(w){var z=[],H=w.length,nt,$=0,dt=Z,q=h,at,st,Et,Qt,Wt,Nt,kt,Mt,qt;for(at=w.lastIndexOf(b),at<0&&(at=0),st=0;st=128&&y("not-basic"),z.push(w.charCodeAt(st));for(Et=at>0?at+1:0;Et=H&&y("invalid-input"),kt=V(w.charCodeAt(Et++)),(kt>=s||kt>T((a-$)/Wt))&&y("overflow"),$+=kt*Wt,Mt=Nt<=q?l:Nt>=q+r?r:Nt-q,!(ktT(a/qt)&&y("overflow"),Wt*=qt;nt=z.length+1,q=I($-Qt,nt,Qt==0),T($/nt)>a-dt&&y("overflow"),dt+=T($/nt),$%=nt,z.splice($++,0,dt)}return M(z)}function X(w){var z,H,nt,$,dt,q,at,st,Et,Qt,Wt,Nt=[],kt,Mt,qt,ie;for(w=J(w),kt=w.length,z=Z,H=0,dt=h,q=0;q=z&&WtT((a-H)/Mt)&&y("overflow"),H+=(at-z)*Mt,z=at,q=0;qa&&y("overflow"),Wt==z){for(st=H,Et=s;Qt=Et<=dt?l:Et>=dt+r?r:Et-dt,!(st{var Mwe=R(W());/*! +var Cesium=(()=>{var pMt=Object.create;var PO=Object.defineProperty;var VMt=Object.getOwnPropertyDescriptor;var uMt=Object.getOwnPropertyNames;var ZMt=Object.getPrototypeOf,RMt=Object.prototype.hasOwnProperty;var Og=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Zo=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),vO=(t,e)=>{for(var n in e)PO(t,n,{get:e[n],enumerable:!0})},Oct=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of uMt(e))!RMt.call(t,o)&&o!==n&&PO(t,o,{get:()=>e[o],enumerable:!(i=VMt(e,o))||i.enumerable});return t};var b=(t,e,n)=>(n=t!=null?pMt(ZMt(t)):{},Oct(e||!t||!t.__esModule?PO(n,"default",{value:t,enumerable:!0}):n,t)),bMt=t=>Oct(PO({},"__esModule",{value:!0}),t);var W=Zo(()=>{globalThis.CESIUM_WORKERS=atob("dmFyIENlc2l1bVdvcmtlcnM9KCgpPT57dmFyIEZYPU9iamVjdC5jcmVhdGU7dmFyIHFSPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgYlg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt2YXIgWVg9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7dmFyIFZYPU9iamVjdC5nZXRQcm90b3R5cGVPZixTWD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBYbz0odD0+dHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6dHlwZW9mIFByb3h5PCJ1Ij9uZXcgUHJveHkodCx7Z2V0OihlLGkpPT4odHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6ZSlbaV19KTp0KShmdW5jdGlvbih0KXtpZih0eXBlb2YgcmVxdWlyZTwidSIpcmV0dXJuIHJlcXVpcmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Rocm93IEVycm9yKCdEeW5hbWljIHJlcXVpcmUgb2YgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkJyl9KSxqRz10PT5lPT57dmFyIGk9dFtlXTtpZihpKXJldHVybiBpKCk7dGhyb3cgbmV3IEVycm9yKCJNb2R1bGUgbm90IGZvdW5kIGluIGJ1bmRsZTogIitlKX07dmFyIFM9KHQsZSk9PigpPT4odCYmKGU9dCh0PTApKSxlKTt2YXIgdHM9KHQsZSk9PigpPT4oZXx8dCgoZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZSksZS5leHBvcnRzKSxIZT0odCxlKT0+e2Zvcih2YXIgaSBpbiBlKXFSKHQsaSx7Z2V0OmVbaV0sZW51bWVyYWJsZTohMH0pfSxIRz0odCxlLGksbik9PntpZihlJiZ0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKWZvcihsZXQgcyBvZiBZWChlKSkhU1guY2FsbCh0LHMpJiZzIT09aSYmcVIodCxzLHtnZXQ6KCk9PmVbc10sZW51bWVyYWJsZTohKG49YlgoZSxzKSl8fG4uZW51bWVyYWJsZX0pO3JldHVybiB0fTt2YXIgY289KHQsZSxpKT0+KGk9dCE9bnVsbD9GWChWWCh0KSk6e30sSEcoZXx8IXR8fCF0Ll9fZXNNb2R1bGU/cVIoaSwiZGVmYXVsdCIse3ZhbHVlOnQsZW51bWVyYWJsZTohMH0pOmksdCkpLE9YPXQ9PkhHKHFSKHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0KTtmdW5jdGlvbiBCWCh0KXtyZXR1cm4gdCE9bnVsbH12YXIgbSxtdD1TKCgpPT57bT1CWH0pO2Z1bmN0aW9uIEdYKHQpe2xldCBlLGk9dC5uYW1lLG49dC5tZXNzYWdlO20oaSkmJm0obik/ZT1gJHtpfTogJHtufWA6ZT10LnRvU3RyaW5nKCk7bGV0IHM9dC5zdGFjaztyZXR1cm4gbShzKSYmKGUrPWAKJHtzfWApLGV9dmFyIHZHLHpHPVMoKCk9PnttdCgpO3ZHPUdYfSk7dmFyIHQwPXt9O0hlKHQwLHtkZWZhdWx0OigpPT5XaX0pO2Z1bmN0aW9uIFdYKHQpe2FzeW5jIGZ1bmN0aW9uIGUoe2RhdGE6bn0pe2xldCBzPVtdLG89e2lkOm4uaWQscmVzdWx0OnZvaWQgMCxlcnJvcjp2b2lkIDB9O3NlbGYuQ0VTSVVNX0JBU0VfVVJMPW4uYmFzZVVybDt0cnl7bGV0IHI9YXdhaXQgdChuLnBhcmFtZXRlcnMscyk7by5yZXN1bHQ9cn1jYXRjaChyKXtyIGluc3RhbmNlb2YgRXJyb3I/by5lcnJvcj17bmFtZTpyLm5hbWUsbWVzc2FnZTpyLm1lc3NhZ2Usc3RhY2s6ci5zdGFja306by5lcnJvcj1yfW4uY2FuVHJhbnNmZXJBcnJheUJ1ZmZlcnx8KHMubGVuZ3RoPTApO3RyeXtwb3N0TWVzc2FnZShvLHMpfWNhdGNoKHIpe28ucmVzdWx0PXZvaWQgMCxvLmVycm9yPWBwb3N0TWVzc2FnZSBmYWlsZWQgd2l0aCBlcnJvcjogJHt2RyhyKX0KICB3aXRoIHJlc3BvbnNlTWVzc2FnZTogJHtKU09OLnN0cmluZ2lmeShvKX1gLHBvc3RNZXNzYWdlKG8pfX1mdW5jdGlvbiBpKG4pe3Bvc3RNZXNzYWdlKHtpZDpuLmRhdGE/LmlkLGVycm9yOmBwb3N0TWVzc2FnZSBmYWlsZWQgd2l0aCBlcnJvcjogJHtKU09OLnN0cmluZ2lmeShuKX1gfSl9cmV0dXJuIHNlbGYub25tZXNzYWdlPWUsc2VsZi5vbm1lc3NhZ2VlcnJvcj1pLHNlbGZ9dmFyIFdpLE5zPVMoKCk9Pnt6RygpO1dpPVdYfSk7dmFyIGUwPXt9O0hlKGUwLHtkZWZhdWx0OigpPT5VWH0pO2FzeW5jIGZ1bmN0aW9uIERYKCl7cmV0dXJuW119dmFyIFVYLGkwPVMoKCk9PntOcygpO1VYPVdpKERYKX0pO3ZhciBLRyxYRywkaSxpYz1TKCgpPT57S0c9e0ZJWEVEOjAsSU5FUlRJQUw6MSxURU1FOjIsVlZMSDozLEVOVTo0LE5FRDo1LE5FVTo2LFJJQzo3fSxYRz1bS0cuTkVVXSwkaT1PYmplY3QuZnJlZXplKEtHKX0pO2Z1bmN0aW9uIGZsKHQpe3RoaXMubmFtZT0iRGV2ZWxvcGVyRXJyb3IiLHRoaXMubWVzc2FnZT10O2xldCBlO3RyeXt0aHJvdyBuZXcgRXJyb3J9Y2F0Y2goaSl7ZT1pLnN0YWNrfXRoaXMuc3RhY2s9ZX12YXIgWSxPdD1TKCgpPT57bXQoKTttKE9iamVjdC5jcmVhdGUpJiYoZmwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxmbC5wcm90b3R5cGUuY29uc3RydWN0b3I9ZmwpO2ZsLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB0PWAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7cmV0dXJuIG0odGhpcy5zdGFjaykmJih0Kz1gCiR7dGhpcy5zdGFjay50b1N0cmluZygpfWApLHR9O2ZsLnRocm93SW5zdGFudGlhdGlvbkVycm9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IGZsKCJUaGlzIGZ1bmN0aW9uIGRlZmluZXMgYW4gaW50ZXJmYWNlIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4iKX07WT1mbH0pO2Z1bmN0aW9uIE1YKHQpe3JldHVybmAke3R9IGlzIHJlcXVpcmVkLCBhY3R1YWwgdmFsdWUgd2FzIHVuZGVmaW5lZGB9ZnVuY3Rpb24gX20odCxlLGkpe3JldHVybmBFeHBlY3RlZCAke2l9IHRvIGJlIHR5cGVvZiAke2V9LCBhY3R1YWwgdHlwZW9mIHdhcyAke3R9YH12YXIgRnMscCxhZT1TKCgpPT57bXQoKTtPdCgpO0ZzPXt9O0ZzLnR5cGVPZj17fTtGcy5kZWZpbmVkPWZ1bmN0aW9uKHQsZSl7aWYoIW0oZSkpdGhyb3cgbmV3IFkoTVgodCkpfTtGcy50eXBlT2YuZnVuYz1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJmdW5jdGlvbiIsdCkpfTtGcy50eXBlT2Yuc3RyaW5nPWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJzdHJpbmciKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJzdHJpbmciLHQpKX07RnMudHlwZU9mLm51bWJlcj1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgWShfbSh0eXBlb2YgZSwibnVtYmVyIix0KSl9O0ZzLnR5cGVPZi5udW1iZXIubGVzc1RoYW49ZnVuY3Rpb24odCxlLGkpe2lmKEZzLnR5cGVPZi5udW1iZXIodCxlKSxlPj1pKXRocm93IG5ldyBZKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiAke2l9LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07RnMudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxpKXtpZihGcy50eXBlT2YubnVtYmVyKHQsZSksZT5pKXRocm93IG5ldyBZKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke2l9LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07RnMudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbj1mdW5jdGlvbih0LGUsaSl7aWYoRnMudHlwZU9mLm51bWJlcih0LGUpLGU8PWkpdGhyb3cgbmV3IFkoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuICR7aX0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTtGcy50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHM9ZnVuY3Rpb24odCxlLGkpe2lmKEZzLnR5cGVPZi5udW1iZXIodCxlKSxlPGkpdGhyb3cgbmV3IFkoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7aX0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTtGcy50eXBlT2Yub2JqZWN0PWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJvYmplY3QiLHQpKX07RnMudHlwZU9mLmJvb2w9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJvb2xlYW4iKXRocm93IG5ldyBZKF9tKHR5cGVvZiBlLCJib29sZWFuIix0KSl9O0ZzLnR5cGVPZi5iaWdpbnQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJpZ2ludCIpdGhyb3cgbmV3IFkoX20odHlwZW9mIGUsImJpZ2ludCIsdCkpfTtGcy50eXBlT2YubnVtYmVyLmVxdWFscz1mdW5jdGlvbih0LGUsaSxuKXtpZihGcy50eXBlT2YubnVtYmVyKHQsaSksRnMudHlwZU9mLm51bWJlcihlLG4pLGkhPT1uKXRocm93IG5ldyBZKGAke3R9IG11c3QgYmUgZXF1YWwgdG8gJHtlfSwgdGhlIGFjdHVhbCB2YWx1ZXMgYXJlICR7aX0gYW5kICR7bn1gKX07cD1Gc30pO2Z1bmN0aW9uIG5FKCl7dGhpcy5fbGlzdGVuZXJzPVtdLHRoaXMuX3Njb3Blcz1bXSx0aGlzLl90b1JlbW92ZT1bXSx0aGlzLl9pbnNpZGVSYWlzZUV2ZW50PSExfWZ1bmN0aW9uIFFYKHQsZSl7cmV0dXJuIGUtdH12YXIgV2UseGk9UygoKT0+e2FlKCk7bXQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuRS5wcm90b3R5cGUse251bWJlck9mTGlzdGVuZXJzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzLmxlbmd0aC10aGlzLl90b1JlbW92ZS5sZW5ndGh9fX0pO25FLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2YuZnVuYygibGlzdGVuZXIiLHQpLHRoaXMuX2xpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3Njb3Blcy5wdXNoKGUpO2xldCBpPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7aS5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl9fTtuRS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLmZ1bmMoImxpc3RlbmVyIix0KTtsZXQgaT10aGlzLl9saXN0ZW5lcnMsbj10aGlzLl9zY29wZXMscz0tMTtmb3IobGV0IG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dPT09dCYmbltvXT09PWUpe3M9bzticmVha31yZXR1cm4gcyE9PS0xPyh0aGlzLl9pbnNpZGVSYWlzZUV2ZW50Pyh0aGlzLl90b1JlbW92ZS5wdXNoKHMpLGlbc109dm9pZCAwLG5bc109dm9pZCAwKTooaS5zcGxpY2UocywxKSxuLnNwbGljZShzLDEpKSwhMCk6ITF9O25FLnByb3RvdHlwZS5yYWlzZUV2ZW50PWZ1bmN0aW9uKCl7dGhpcy5faW5zaWRlUmFpc2VFdmVudD0hMDtsZXQgdCxlPXRoaXMuX2xpc3RlbmVycyxpPXRoaXMuX3Njb3BlcyxuPWUubGVuZ3RoO2Zvcih0PTA7dDxuO3QrKyl7bGV0IG89ZVt0XTttKG8pJiZlW3RdLmFwcGx5KGlbdF0sYXJndW1lbnRzKX1sZXQgcz10aGlzLl90b1JlbW92ZTtpZihuPXMubGVuZ3RoLG4+MCl7Zm9yKHMuc29ydChRWCksdD0wO3Q8bjt0Kyspe2xldCBvPXNbdF07ZS5zcGxpY2UobywxKSxpLnNwbGljZShvLDEpfXMubGVuZ3RoPTB9dGhpcy5faW5zaWRlUmFpc2VFdmVudD0hMX07V2U9bkV9KTtmdW5jdGlvbiAkUigpe1kudGhyb3dJbnN0YW50aWF0aW9uRXJyb3IoKX12YXIgcUcsJEc9UygoKT0+e090KCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoJFIucHJvdG90eXBlLHtuYW1lOntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY2xvY2s6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxlbnRpdGllczp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGlzTG9hZGluZzp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGNoYW5nZWRFdmVudDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGVycm9yRXZlbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxsb2FkaW5nRXZlbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxzaG93OntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY2x1c3RlcmluZzp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7JFIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9OyRSLnNldExvYWRpbmc9ZnVuY3Rpb24odCxlKXt0Ll9pc0xvYWRpbmchPT1lJiYoZT90Ll9lbnRpdHlDb2xsZWN0aW9uLnN1c3BlbmRFdmVudHMoKTp0Ll9lbnRpdHlDb2xsZWN0aW9uLnJlc3VtZUV2ZW50cygpLHQuX2lzTG9hZGluZz1lLHQuX2xvYWRpbmcucmFpc2VFdmVudCh0LGUpKX07cUc9JFJ9KTtmdW5jdGlvbiB0Mih0LGUpe3JldHVybiB0Pz9lfXZhciBaLEZ0PVMoKCk9Pnt0Mi5FTVBUWV9PQkpFQ1Q9T2JqZWN0LmZyZWV6ZSh7fSk7Wj10Mn0pO3ZhciBpMj10cygoX3B0LGUyKT0+e3ZhciB2QT1mdW5jdGlvbih0KXt0PT1udWxsJiYodD1uZXcgRGF0ZSgpLmdldFRpbWUoKSksdGhpcy5OPTYyNCx0aGlzLk09Mzk3LHRoaXMuTUFUUklYX0E9MjU2NzQ4MzYxNSx0aGlzLlVQUEVSX01BU0s9MjE0NzQ4MzY0OCx0aGlzLkxPV0VSX01BU0s9MjE0NzQ4MzY0Nyx0aGlzLm10PW5ldyBBcnJheSh0aGlzLk4pLHRoaXMubXRpPXRoaXMuTisxLHQuY29uc3RydWN0b3I9PUFycmF5P3RoaXMuaW5pdF9ieV9hcnJheSh0LHQubGVuZ3RoKTp0aGlzLmluaXRfc2VlZCh0KX07dkEucHJvdG90eXBlLmluaXRfc2VlZD1mdW5jdGlvbih0KXtmb3IodGhpcy5tdFswXT10Pj4+MCx0aGlzLm10aT0xO3RoaXMubXRpPHRoaXMuTjt0aGlzLm10aSsrKXt2YXIgdD10aGlzLm10W3RoaXMubXRpLTFdXnRoaXMubXRbdGhpcy5tdGktMV0+Pj4zMDt0aGlzLm10W3RoaXMubXRpXT0oKCh0JjQyOTQ5MDE3NjApPj4+MTYpKjE4MTI0MzMyNTM8PDE2KSsodCY2NTUzNSkqMTgxMjQzMzI1Myt0aGlzLm10aSx0aGlzLm10W3RoaXMubXRpXT4+Pj0wfX07dkEucHJvdG90eXBlLmluaXRfYnlfYXJyYXk9ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM7Zm9yKHRoaXMuaW5pdF9zZWVkKDE5NjUwMjE4KSxpPTEsbj0wLHM9dGhpcy5OPmU/dGhpcy5OOmU7cztzLS0pe3ZhciBvPXRoaXMubXRbaS0xXV50aGlzLm10W2ktMV0+Pj4zMDt0aGlzLm10W2ldPSh0aGlzLm10W2ldXigoKG8mNDI5NDkwMTc2MCk+Pj4xNikqMTY2NDUyNTw8MTYpKyhvJjY1NTM1KSoxNjY0NTI1KSt0W25dK24sdGhpcy5tdFtpXT4+Pj0wLGkrKyxuKyssaT49dGhpcy5OJiYodGhpcy5tdFswXT10aGlzLm10W3RoaXMuTi0xXSxpPTEpLG4+PWUmJihuPTApfWZvcihzPXRoaXMuTi0xO3M7cy0tKXt2YXIgbz10aGlzLm10W2ktMV1edGhpcy5tdFtpLTFdPj4+MzA7dGhpcy5tdFtpXT0odGhpcy5tdFtpXV4oKChvJjQyOTQ5MDE3NjApPj4+MTYpKjE1NjYwODM5NDE8PDE2KSsobyY2NTUzNSkqMTU2NjA4Mzk0MSktaSx0aGlzLm10W2ldPj4+PTAsaSsrLGk+PXRoaXMuTiYmKHRoaXMubXRbMF09dGhpcy5tdFt0aGlzLk4tMV0saT0xKX10aGlzLm10WzBdPTIxNDc0ODM2NDh9O3ZBLnByb3RvdHlwZS5yYW5kb21faW50PWZ1bmN0aW9uKCl7dmFyIHQsZT1uZXcgQXJyYXkoMCx0aGlzLk1BVFJJWF9BKTtpZih0aGlzLm10aT49dGhpcy5OKXt2YXIgaTtmb3IodGhpcy5tdGk9PXRoaXMuTisxJiZ0aGlzLmluaXRfc2VlZCg1NDg5KSxpPTA7aTx0aGlzLk4tdGhpcy5NO2krKyl0PXRoaXMubXRbaV0mdGhpcy5VUFBFUl9NQVNLfHRoaXMubXRbaSsxXSZ0aGlzLkxPV0VSX01BU0ssdGhpcy5tdFtpXT10aGlzLm10W2krdGhpcy5NXV50Pj4+MV5lW3QmMV07Zm9yKDtpPHRoaXMuTi0xO2krKyl0PXRoaXMubXRbaV0mdGhpcy5VUFBFUl9NQVNLfHRoaXMubXRbaSsxXSZ0aGlzLkxPV0VSX01BU0ssdGhpcy5tdFtpXT10aGlzLm10W2krKHRoaXMuTS10aGlzLk4pXV50Pj4+MV5lW3QmMV07dD10aGlzLm10W3RoaXMuTi0xXSZ0aGlzLlVQUEVSX01BU0t8dGhpcy5tdFswXSZ0aGlzLkxPV0VSX01BU0ssdGhpcy5tdFt0aGlzLk4tMV09dGhpcy5tdFt0aGlzLk0tMV1edD4+PjFeZVt0JjFdLHRoaXMubXRpPTB9cmV0dXJuIHQ9dGhpcy5tdFt0aGlzLm10aSsrXSx0Xj10Pj4+MTEsdF49dDw8NyYyNjM2OTI4NjQwLHRePXQ8PDE1JjQwMjI3MzA3NTIsdF49dD4+PjE4LHQ+Pj4wfTt2QS5wcm90b3R5cGUucmFuZG9tX2ludDMxPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZG9tX2ludCgpPj4+MX07dkEucHJvdG90eXBlLnJhbmRvbV9pbmNsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZG9tX2ludCgpKigxLzQyOTQ5NjcyOTUpfTt2QS5wcm90b3R5cGUucmFuZG9tPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmFuZG9tX2ludCgpKigxLzQyOTQ5NjcyOTYpfTt2QS5wcm90b3R5cGUucmFuZG9tX2V4Y2w9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yYW5kb21faW50KCkrLjUpKigxLzQyOTQ5NjcyOTYpfTt2QS5wcm90b3R5cGUucmFuZG9tX2xvbmc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnJhbmRvbV9pbnQoKT4+PjUsZT10aGlzLnJhbmRvbV9pbnQoKT4+PjY7cmV0dXJuKHQqNjcxMDg4NjQrZSkqKDEvOTAwNzE5OTI1NDc0MDk5Mil9O2UyLmV4cG9ydHM9dkF9KTt2YXIgbjAsS3QsdFosbjIsTCxfZT1TKCgpPT57bjA9Y28oaTIoKSwxKTthZSgpO0Z0KCk7bXQoKTtPdCgpO0t0PXt9O0t0LkVQU0lMT04xPS4xO0t0LkVQU0lMT04yPS4wMTtLdC5FUFNJTE9OMz0uMDAxO0t0LkVQU0lMT040PTFlLTQ7S3QuRVBTSUxPTjU9MWUtNTtLdC5FUFNJTE9ONj0xZS02O0t0LkVQU0lMT043PTFlLTc7S3QuRVBTSUxPTjg9MWUtODtLdC5FUFNJTE9OOT0xZS05O0t0LkVQU0lMT04xMD0xZS0xMDtLdC5FUFNJTE9OMTE9MWUtMTE7S3QuRVBTSUxPTjEyPTFlLTEyO0t0LkVQU0lMT04xMz0xZS0xMztLdC5FUFNJTE9OMTQ9MWUtMTQ7S3QuRVBTSUxPTjE1PTFlLTE1O0t0LkVQU0lMT04xNj0xZS0xNjtLdC5FUFNJTE9OMTc9MWUtMTc7S3QuRVBTSUxPTjE4PTFlLTE4O0t0LkVQU0lMT04xOT0xZS0xOTtLdC5FUFNJTE9OMjA9MWUtMjA7S3QuRVBTSUxPTjIxPTFlLTIxO0t0LkdSQVZJVEFUSU9OQUxQQVJBTUVURVI9Mzk4NjAwNDQxOGU1O0t0LlNPTEFSX1JBRElVUz02OTU1ZTU7S3QuTFVOQVJfUkFESVVTPTE3Mzc0MDA7S3QuU0lYVFlfRk9VUl9LSUxPQllURVM9NjQqMTAyNDtLdC5GT1VSX0dJR0FCWVRFUz00KjEwMjQqMTAyNCoxMDI0O0t0LnNpZ249WihNYXRoLnNpZ24sZnVuY3Rpb24oZSl7cmV0dXJuIGU9K2UsZT09PTB8fGUhPT1lP2U6ZT4wPzE6LTF9KTtLdC5zaWduTm90WmVybz1mdW5jdGlvbih0KXtyZXR1cm4gdDwwPy0xOjF9O0t0LnRvU05vcm09ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1aKGUsMjU1KSxNYXRoLnJvdW5kKChLdC5jbGFtcCh0LC0xLDEpKi41Ky41KSplKX07S3QuZnJvbVNOb3JtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9WihlLDI1NSksS3QuY2xhbXAodCwwLGUpL2UqMi0xfTtLdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPU1hdGgubWF4KGktZSwwKSxpPT09MD8wOkt0LmNsYW1wKCh0LWUpL2ksMCwxKX07S3Quc2luaD1aKE1hdGguc2luaCxmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5leHAoZSktTWF0aC5leHAoLWUpKS8yfSk7S3QuY29zaD1aKE1hdGguY29zaCxmdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5leHAoZSkrTWF0aC5leHAoLWUpKS8yfSk7S3QubGVycD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuKDEtaSkqdCtpKmV9O0t0LlBJPU1hdGguUEk7S3QuT05FX09WRVJfUEk9MS9NYXRoLlBJO0t0LlBJX09WRVJfVFdPPU1hdGguUEkvMjtLdC5QSV9PVkVSX1RIUkVFPU1hdGguUEkvMztLdC5QSV9PVkVSX0ZPVVI9TWF0aC5QSS80O0t0LlBJX09WRVJfU0lYPU1hdGguUEkvNjtLdC5USFJFRV9QSV9PVkVSX1RXTz0zKk1hdGguUEkvMjtLdC5UV09fUEk9MipNYXRoLlBJO0t0Lk9ORV9PVkVSX1RXT19QST0xLygyKk1hdGguUEkpO0t0LlJBRElBTlNfUEVSX0RFR1JFRT1NYXRoLlBJLzE4MDtLdC5ERUdSRUVTX1BFUl9SQURJQU49MTgwL01hdGguUEk7S3QuUkFESUFOU19QRVJfQVJDU0VDT05EPUt0LlJBRElBTlNfUEVSX0RFR1JFRS8zNjAwO0t0LnRvUmFkaWFucz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZGVncmVlcyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdCpLdC5SQURJQU5TX1BFUl9ERUdSRUV9O0t0LnRvRGVncmVlcz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgicmFkaWFucyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdCpLdC5ERUdSRUVTX1BFUl9SQURJQU59O0t0LmNvbnZlcnRMb25naXR1ZGVSYW5nZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYW5nbGUgaXMgcmVxdWlyZWQuIik7bGV0IGU9S3QuVFdPX1BJLGk9dC1NYXRoLmZsb29yKHQvZSkqZTtyZXR1cm4gaTwtTWF0aC5QST9pK2U6aT49TWF0aC5QST9pLWU6aX07S3QuY2xhbXBUb0xhdGl0dWRlUmFuZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO3JldHVybiBLdC5jbGFtcCh0LC0xKkt0LlBJX09WRVJfVFdPLEt0LlBJX09WRVJfVFdPKX07S3QubmVnYXRpdmVQaVRvUGk9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0Pj0tS3QuUEkmJnQ8PUt0LlBJP3Q6S3QuemVyb1RvVHdvUGkodCtLdC5QSSktS3QuUEl9O0t0Lnplcm9Ub1R3b1BpPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhbmdsZSBpcyByZXF1aXJlZC4iKTtpZih0Pj0wJiZ0PD1LdC5UV09fUEkpcmV0dXJuIHQ7bGV0IGU9S3QubW9kKHQsS3QuVFdPX1BJKTtyZXR1cm4gTWF0aC5hYnMoZSk8S3QuRVBTSUxPTjE0JiZNYXRoLmFicyh0KT5LdC5FUFNJTE9OMTQ/S3QuVFdPX1BJOmV9O0t0Lm1vZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJtIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJuIGlzIHJlcXVpcmVkLiIpO2lmKGU9PT0wKXRocm93IG5ldyBZKCJkaXZpc29yIGNhbm5vdCBiZSAwLiIpO3JldHVybiBLdC5zaWduKHQpPT09S3Quc2lnbihlKSYmTWF0aC5hYnModCk8TWF0aC5hYnMoZSk/dDoodCVlK2UpJWV9O0t0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO2k9WihpLDApLG49WihuLGkpO2xldCBzPU1hdGguYWJzKHQtZSk7cmV0dXJuIHM8PW58fHM8PWkqTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpfTtLdC5sZXNzVGhhbj1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImZpcnN0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzZWNvbmQgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImFic29sdXRlRXBzaWxvbiBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC1lPC1pfTtLdC5sZXNzVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZmlyc3QgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInNlY29uZCBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiYWJzb2x1dGVFcHNpbG9uIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LWU8aX07S3QuZ3JlYXRlclRoYW49ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJmaXJzdCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgic2Vjb25kIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJhYnNvbHV0ZUVwc2lsb24gaXMgcmVxdWlyZWQuIik7cmV0dXJuIHQtZT5pfTtLdC5ncmVhdGVyVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZmlyc3QgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInNlY29uZCBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiYWJzb2x1dGVFcHNpbG9uIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LWU+LWl9O3RaPVsxXTtLdC5mYWN0b3JpYWw9ZnVuY3Rpb24odCl7aWYodHlwZW9mIHQhPSJudW1iZXIifHx0PDApdGhyb3cgbmV3IFkoIkEgbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRaLmxlbmd0aDtpZih0Pj1lKXtsZXQgaT10WltlLTFdO2ZvcihsZXQgbj1lO248PXQ7bisrKXtsZXQgcz1pKm47dFoucHVzaChzKSxpPXN9fXJldHVybiB0Wlt0XX07S3QuaW5jcmVtZW50V3JhcD1mdW5jdGlvbih0LGUsaSl7aWYoaT1aKGksMCksIW0odCkpdGhyb3cgbmV3IFkoIm4gaXMgcmVxdWlyZWQuIik7aWYoZTw9aSl0aHJvdyBuZXcgWSgibWF4aW11bVZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmltdW1WYWx1ZS4iKTtyZXR1cm4rK3QsdD5lJiYodD1pKSx0fTtLdC5pc1Bvd2VyT2ZUd289ZnVuY3Rpb24odCl7aWYodHlwZW9mIHQhPSJudW1iZXIifHx0PDB8fHQ+NDI5NDk2NzI5NSl0aHJvdyBuZXcgWSgiQSBudW1iZXIgYmV0d2VlbiAwIGFuZCAoMl4zMiktMSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdCE9PTAmJih0JnQtMSk9PT0wfTtLdC5uZXh0UG93ZXJPZlR3bz1mdW5jdGlvbih0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8MHx8dD4yMTQ3NDgzNjQ4KXRocm93IG5ldyBZKCJBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDJeMzEgaXMgcmVxdWlyZWQuIik7cmV0dXJuLS10LHR8PXQ+PjEsdHw9dD4+Mix0fD10Pj40LHR8PXQ+PjgsdHw9dD4+MTYsKyt0LHR9O0t0LnByZXZpb3VzUG93ZXJPZlR3bz1mdW5jdGlvbih0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8MHx8dD40Mjk0OTY3Mjk1KXRocm93IG5ldyBZKCJBIG51bWJlciBiZXR3ZWVuIDAgYW5kICgyXjMyKS0xIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0fD10Pj4xLHR8PXQ+PjIsdHw9dD4+NCx0fD10Pj44LHR8PXQ+PjE2LHR8PXQ+PjMyLHQ9KHQ+Pj4wKS0odD4+PjEpLHR9O0t0LmNsYW1wPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCkscC50eXBlT2YubnVtYmVyKCJtaW4iLGUpLHAudHlwZU9mLm51bWJlcigibWF4IixpKSx0PGU/ZTp0Pmk/aTp0fTtuMj1uZXcgbjAuZGVmYXVsdDtLdC5zZXRSYW5kb21OdW1iZXJTZWVkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzZWVkIGlzIHJlcXVpcmVkLiIpO24yPW5ldyBuMC5kZWZhdWx0KHQpfTtLdC5uZXh0UmFuZG9tTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIG4yLnJhbmRvbSgpfTtLdC5yYW5kb21CZXR3ZWVuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEt0Lm5leHRSYW5kb21OdW1iZXIoKSooZS10KSt0fTtLdC5hY29zQ2xhbXBlZD1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE1hdGguYWNvcyhLdC5jbGFtcCh0LC0xLDEpKX07S3QuYXNpbkNsYW1wZWQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3JldHVybiBNYXRoLmFzaW4oS3QuY2xhbXAodCwtMSwxKSl9O0t0LmNob3JkTGVuZ3RoPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyYWRpdXMgaXMgcmVxdWlyZWQuIik7cmV0dXJuIDIqZSpNYXRoLnNpbih0Ki41KX07S3QubG9nQmFzZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJudW1iZXIgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImJhc2UgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE1hdGgubG9nKHQpL01hdGgubG9nKGUpfTtLdC5jYnJ0PVooTWF0aC5jYnJ0LGZ1bmN0aW9uKGUpe2xldCBpPU1hdGgucG93KE1hdGguYWJzKGUpLC4zMzMzMzMzMzMzMzMzMzMzKTtyZXR1cm4gZTwwPy1pOml9KTtLdC5sb2cyPVooTWF0aC5sb2cyLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKSpNYXRoLkxPRzJFfSk7S3QuZm9nPWZ1bmN0aW9uKHQsZSl7bGV0IGk9dCplO3JldHVybiAxLU1hdGguZXhwKC0oaSppKSl9O0t0LmZhc3RBcHByb3hpbWF0ZUF0YW49ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigieCIsdCksdCooLS4xNzg0Kk1hdGguYWJzKHQpLS4wNjYzKnQqdCsxLjAzMDEpfTtLdC5mYXN0QXBwcm94aW1hdGVBdGFuMj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm51bWJlcigieCIsdCkscC50eXBlT2YubnVtYmVyKCJ5IixlKTtsZXQgaSxuPU1hdGguYWJzKHQpO2k9TWF0aC5hYnMoZSk7bGV0IHM9TWF0aC5tYXgobixpKTtpPU1hdGgubWluKG4saSk7bGV0IG89aS9zO2lmKGlzTmFOKG8pKXRocm93IG5ldyBZKCJlaXRoZXIgeCBvciB5IG11c3QgYmUgbm9uemVybyIpO3JldHVybiBuPUt0LmZhc3RBcHByb3hpbWF0ZUF0YW4obyksbj1NYXRoLmFicyhlKT5NYXRoLmFicyh0KT9LdC5QSV9PVkVSX1RXTy1uOm4sbj10PDA/S3QuUEktbjpuLG49ZTwwPy1uOm4sbn07TD1LdH0pO2Z1bmN0aW9uIFJlKHQsZSl7dGhpcy54PVoodCwwKSx0aGlzLnk9WihlLDApfXZhciBlWixzMixvMixyMixrWCxudCxYZT1TKCgpPT57YWUoKTtGdCgpO210KCk7T3QoKTtfZSgpO1JlLmZyb21FbGVtZW50cz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG0oaSk/KGkueD10LGkueT1lLGkpOm5ldyBSZSh0LGUpfTtSZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlKTpuZXcgUmUodC54LHQueSl9O1JlLmZyb21DYXJ0ZXNpYW4zPVJlLmNsb25lO1JlLmZyb21DYXJ0ZXNpYW40PVJlLmNsb25lO1JlLnBhY2tlZExlbmd0aD0yO1JlLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaV09dC55LGV9O1JlLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApLG0oaSl8fChpPW5ldyBSZSksaS54PXRbZSsrXSxpLnk9dFtlXSxpfTtSZS5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImFycmF5Iix0KTtsZXQgaT10Lmxlbmd0aCxuPWkqMjtpZighbShlKSllPW5ldyBBcnJheShuKTtlbHNle2lmKCFBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aCE9PW4pdGhyb3cgbmV3IFkoIklmIHJlc3VsdCBpcyBhIHR5cGVkIGFycmF5LCBpdCBtdXN0IGhhdmUgZXhhY3RseSBhcnJheS5sZW5ndGggKiAyIGVsZW1lbnRzIik7ZS5sZW5ndGghPT1uJiYoZS5sZW5ndGg9bil9Zm9yKGxldCBzPTA7czxpOysrcylSZS5wYWNrKHRbc10sZSxzKjIpO3JldHVybiBlfTtSZS51bnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe2lmKHAuZGVmaW5lZCgiYXJyYXkiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJhcnJheS5sZW5ndGgiLHQubGVuZ3RoLDIpLHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBZKCJhcnJheSBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIuIik7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pLzI6ZT1uZXcgQXJyYXkoaS8yKTtmb3IobGV0IG49MDtuPGk7bis9Mil7bGV0IHM9bi8yO2Vbc109UmUudW5wYWNrKHQsbixlW3NdKX1yZXR1cm4gZX07UmUuZnJvbUFycmF5PVJlLnVucGFjaztSZS5tYXhpbXVtQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksTWF0aC5tYXgodC54LHQueSl9O1JlLm1pbmltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1pbih0LngsdC55KX07UmUubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5taW4odC54LGUueCksaS55PU1hdGgubWluKHQueSxlLnkpLGl9O1JlLm1heGltdW1CeUNvbXBvbmVudD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiZmlyc3QiLHQpLHAudHlwZU9mLm9iamVjdCgic2Vjb25kIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PU1hdGgubWF4KHQueCxlLngpLGkueT1NYXRoLm1heCh0LnksZS55KSxpfTtSZS5jbGFtcD1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLnR5cGVPZi5vYmplY3QoIm1pbiIsZSkscC50eXBlT2Yub2JqZWN0KCJtYXgiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgcz1MLmNsYW1wKHQueCxlLngsaS54KSxvPUwuY2xhbXAodC55LGUueSxpLnkpO3JldHVybiBuLng9cyxuLnk9byxufTtSZS5tYWduaXR1ZGVTcXVhcmVkPWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksdC54KnQueCt0LnkqdC55fTtSZS5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydChSZS5tYWduaXR1ZGVTcXVhcmVkKHQpKX07ZVo9bmV3IFJlO1JlLmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksUmUuc3VidHJhY3QodCxlLGVaKSxSZS5tYWduaXR1ZGUoZVopfTtSZS5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxSZS5zdWJ0cmFjdCh0LGUsZVopLFJlLm1hZ25pdHVkZVNxdWFyZWQoZVopfTtSZS5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPVJlLm1hZ25pdHVkZSh0KTtpZihlLng9dC54L2ksZS55PXQueS9pLGlzTmFOKGUueCl8fGlzTmFOKGUueSkpdGhyb3cgbmV3IFkoIm5vcm1hbGl6ZWQgcmVzdWx0IGlzIG5vdCBhIG51bWJlciIpO3JldHVybiBlfTtSZS5kb3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx0LngqZS54K3QueSplLnl9O1JlLmNyb3NzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueS10LnkqZS54fTtSZS5tdWx0aXBseUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54KmUueCxpLnk9dC55KmUueSxpfTtSZS5kaXZpZGVDb21wb25lbnRzPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueC9lLngsaS55PXQueS9lLnksaX07UmUuYWRkPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueCtlLngsaS55PXQueStlLnksaX07UmUuc3VidHJhY3Q9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54LWUueCxpLnk9dC55LWUueSxpfTtSZS5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueCplLGkueT10LnkqZSxpfTtSZS5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngvZSxpLnk9dC55L2UsaX07UmUubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZX07UmUuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PU1hdGguYWJzKHQueCksZS55PU1hdGguYWJzKHQueSksZX07czI9bmV3IFJlO1JlLmxlcnA9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHAudHlwZU9mLm9iamVjdCgiZW5kIixlKSxwLnR5cGVPZi5udW1iZXIoInQiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxSZS5tdWx0aXBseUJ5U2NhbGFyKGUsaSxzMiksbj1SZS5tdWx0aXBseUJ5U2NhbGFyKHQsMS1pLG4pLFJlLmFkZChzMixuLG4pfTtvMj1uZXcgUmUscjI9bmV3IFJlO1JlLmFuZ2xlQmV0d2Vlbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLFJlLm5vcm1hbGl6ZSh0LG8yKSxSZS5ub3JtYWxpemUoZSxyMiksTC5hY29zQ2xhbXBlZChSZS5kb3QobzIscjIpKX07a1g9bmV3IFJlO1JlLm1vc3RPcnRob2dvbmFsQXhpcz1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9UmUubm9ybWFsaXplKHQsa1gpO3JldHVybiBSZS5hYnMoaSxpKSxpLng8PWkueT9lPVJlLmNsb25lKFJlLlVOSVRfWCxlKTplPVJlLmNsb25lKFJlLlVOSVRfWSxlKSxlfTtSZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQueD09PWUueCYmdC55PT09ZS55fTtSZS5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQueD09PWVbaV0mJnQueT09PWVbaSsxXX07UmUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJkwuZXF1YWxzRXBzaWxvbih0LngsZS54LGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnksZS55LGksbil9O1JlLlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgUmUoMCwwKSk7UmUuT05FPU9iamVjdC5mcmVlemUobmV3IFJlKDEsMSkpO1JlLlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyBSZSgxLDApKTtSZS5VTklUX1k9T2JqZWN0LmZyZWV6ZShuZXcgUmUoMCwxKSk7UmUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBSZS5jbG9uZSh0aGlzLHQpfTtSZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBSZS5lcXVhbHModGhpcyx0KX07UmUucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBSZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLGkpfTtSZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9KWB9O250PVJlfSk7ZnVuY3Rpb24gd3QodCxlLGkpe3RoaXMueD1aKHQsMCksdGhpcy55PVooZSwwKSx0aGlzLno9WihpLDApfXZhciBuWixhMixpWixzMCxMWCxTcixSbSx5WCxsLEh0PVMoKCk9PnthZSgpO0Z0KCk7bXQoKTtPdCgpO19lKCk7d3QuZnJvbVNwaGVyaWNhbD1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgic3BoZXJpY2FsIix0KSxtKGUpfHwoZT1uZXcgd3QpO2xldCBpPXQuY2xvY2ssbj10LmNvbmUscz1aKHQubWFnbml0dWRlLDEpLG89cypNYXRoLnNpbihuKTtyZXR1cm4gZS54PW8qTWF0aC5jb3MoaSksZS55PW8qTWF0aC5zaW4oaSksZS56PXMqTWF0aC5jb3MobiksZX07d3QuZnJvbUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBtKG4pPyhuLng9dCxuLnk9ZSxuLno9aSxuKTpuZXcgd3QodCxlLGkpfTt3dC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlLno9dC56LGUpOm5ldyB3dCh0LngsdC55LHQueil9O3d0LmZyb21DYXJ0ZXNpYW40PXd0LmNsb25lO3d0LnBhY2tlZExlbmd0aD0zO3d0LnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaSsrXT10LnksZVtpXT10LnosZX07d3QudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCksbShpKXx8KGk9bmV3IHd0KSxpLng9dFtlKytdLGkueT10W2UrK10saS56PXRbZV0saX07d3QucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IGk9dC5sZW5ndGgsbj1pKjM7aWYoIW0oZSkpZT1uZXcgQXJyYXkobik7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1uKXRocm93IG5ldyBZKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogMyBlbGVtZW50cyIpO2UubGVuZ3RoIT09biYmKGUubGVuZ3RoPW4pfWZvcihsZXQgcz0wO3M8aTsrK3Mpd3QucGFjayh0W3NdLGUscyozKTtyZXR1cm4gZX07d3QudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZihwLmRlZmluZWQoImFycmF5Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCwzKSx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgWSgiYXJyYXkgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzLiIpO2xldCBpPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9aS8zOmU9bmV3IEFycmF5KGkvMyk7Zm9yKGxldCBuPTA7bjxpO24rPTMpe2xldCBzPW4vMztlW3NdPXd0LnVucGFjayh0LG4sZVtzXSl9cmV0dXJuIGV9O3d0LmZyb21BcnJheT13dC51bnBhY2s7d3QubWF4aW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWF4KHQueCx0LnksdC56KX07d3QubWluaW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWluKHQueCx0LnksdC56KX07d3QubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5taW4odC54LGUueCksaS55PU1hdGgubWluKHQueSxlLnkpLGkuej1NYXRoLm1pbih0LnosZS56KSxpfTt3dC5tYXhpbXVtQnlDb21wb25lbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImZpcnN0Iix0KSxwLnR5cGVPZi5vYmplY3QoInNlY29uZCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD1NYXRoLm1heCh0LngsZS54KSxpLnk9TWF0aC5tYXgodC55LGUueSksaS56PU1hdGgubWF4KHQueixlLnopLGl9O3d0LmNsYW1wPWZ1bmN0aW9uKHQsZSxpLG4pe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAudHlwZU9mLm9iamVjdCgibWluIixlKSxwLnR5cGVPZi5vYmplY3QoIm1heCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBzPUwuY2xhbXAodC54LGUueCxpLngpLG89TC5jbGFtcCh0LnksZS55LGkueSkscj1MLmNsYW1wKHQueixlLnosaS56KTtyZXR1cm4gbi54PXMsbi55PW8sbi56PXIsbn07d3QubWFnbml0dWRlU3F1YXJlZD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHQueCp0LngrdC55KnQueSt0LnoqdC56fTt3dC5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh3dC5tYWduaXR1ZGVTcXVhcmVkKHQpKX07blo9bmV3IHd0O3d0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksd3Quc3VidHJhY3QodCxlLG5aKSx3dC5tYWduaXR1ZGUoblopfTt3dC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx3dC5zdWJ0cmFjdCh0LGUsblopLHd0Lm1hZ25pdHVkZVNxdWFyZWQoblopfTt3dC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXd0Lm1hZ25pdHVkZSh0KTtpZihlLng9dC54L2ksZS55PXQueS9pLGUuej10LnovaSxpc05hTihlLngpfHxpc05hTihlLnkpfHxpc05hTihlLnopKXRocm93IG5ldyBZKCJub3JtYWxpemVkIHJlc3VsdCBpcyBub3QgYSBudW1iZXIiKTtyZXR1cm4gZX07d3QuZG90PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueCt0LnkqZS55K3QueiplLnp9O3d0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngqZS54LGkueT10LnkqZS55LGkuej10LnoqZS56LGl9O3d0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54L2UueCxpLnk9dC55L2UueSxpLno9dC56L2UueixpfTt3dC5hZGQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54K2UueCxpLnk9dC55K2UueSxpLno9dC56K2UueixpfTt3dC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngtZS54LGkueT10LnktZS55LGkuej10LnotZS56LGl9O3d0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54KmUsaS55PXQueSplLGkuej10LnoqZSxpfTt3dC5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngvZSxpLnk9dC55L2UsaS56PXQuei9lLGl9O3d0Lm5lZ2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD0tdC54LGUueT0tdC55LGUuej0tdC56LGV9O3d0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD1NYXRoLmFicyh0LngpLGUueT1NYXRoLmFicyh0LnkpLGUuej1NYXRoLmFicyh0LnopLGV9O2EyPW5ldyB3dDt3dC5sZXJwPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSxwLnR5cGVPZi5vYmplY3QoImVuZCIsZSkscC50eXBlT2YubnVtYmVyKCJ0IixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksd3QubXVsdGlwbHlCeVNjYWxhcihlLGksYTIpLG49d3QubXVsdGlwbHlCeVNjYWxhcih0LDEtaSxuKSx3dC5hZGQoYTIsbixuKX07aVo9bmV3IHd0LHMwPW5ldyB3dDt3dC5hbmdsZUJldHdlZW49ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHd0Lm5vcm1hbGl6ZSh0LGlaKSx3dC5ub3JtYWxpemUoZSxzMCk7bGV0IGk9d3QuZG90KGlaLHMwKSxuPXd0Lm1hZ25pdHVkZSh3dC5jcm9zcyhpWixzMCxpWikpO3JldHVybiBNYXRoLmF0YW4yKG4saSl9O0xYPW5ldyB3dDt3dC5tb3N0T3J0aG9nb25hbEF4aXM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXd0Lm5vcm1hbGl6ZSh0LExYKTtyZXR1cm4gd3QuYWJzKGksaSksaS54PD1pLnk/aS54PD1pLno/ZT13dC5jbG9uZSh3dC5VTklUX1gsZSk6ZT13dC5jbG9uZSh3dC5VTklUX1osZSk6aS55PD1pLno/ZT13dC5jbG9uZSh3dC5VTklUX1ksZSk6ZT13dC5jbG9uZSh3dC5VTklUX1osZSksZX07d3QucHJvamVjdFZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhIix0KSxwLmRlZmluZWQoImIiLGUpLHAuZGVmaW5lZCgicmVzdWx0IixpKTtsZXQgbj13dC5kb3QodCxlKS93dC5kb3QoZSxlKTtyZXR1cm4gd3QubXVsdGlwbHlCeVNjYWxhcihlLG4saSl9O3d0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUuen07d3QuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Lng9PT1lW2ldJiZ0Lnk9PT1lW2krMV0mJnQuej09PWVbaSsyXX07d3QuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJkwuZXF1YWxzRXBzaWxvbih0LngsZS54LGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnksZS55LGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnosZS56LGksbil9O3d0LmNyb3NzPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10Lngscz10Lnksbz10Lnoscj1lLngsYT1lLnksaD1lLnosQT1zKmgtbyphLGQ9bypyLW4qaCxmPW4qYS1zKnI7cmV0dXJuIGkueD1BLGkueT1kLGkuej1mLGl9O3d0Lm1pZHBvaW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PSh0LngrZS54KSouNSxpLnk9KHQueStlLnkpKi41LGkuej0odC56K2UueikqLjUsaX07d3QuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLHQ9TC50b1JhZGlhbnModCksZT1MLnRvUmFkaWFucyhlKSx3dC5mcm9tUmFkaWFucyh0LGUsaSxuLHMpfTtTcj1uZXcgd3QsUm09bmV3IHd0LHlYPW5ldyB3dCg2Mzc4MTM3KjYzNzgxMzcsNjM3ODEzNyo2Mzc4MTM3LDYzNTY3NTIzMTQyNDUxNzllLTkqNjM1Njc1MjMxNDI0NTE3OWUtOSk7d3QuZnJvbVJhZGlhbnM9ZnVuY3Rpb24odCxlLGksbixzKXtwLnR5cGVPZi5udW1iZXIoImxvbmdpdHVkZSIsdCkscC50eXBlT2YubnVtYmVyKCJsYXRpdHVkZSIsZSksaT1aKGksMCk7bGV0IG89bShuKT9uLnJhZGlpU3F1YXJlZDp5WCxyPU1hdGguY29zKGUpO1NyLng9cipNYXRoLmNvcyh0KSxTci55PXIqTWF0aC5zaW4odCksU3Iuej1NYXRoLnNpbihlKSxTcj13dC5ub3JtYWxpemUoU3IsU3IpLHd0Lm11bHRpcGx5Q29tcG9uZW50cyhvLFNyLFJtKTtsZXQgYT1NYXRoLnNxcnQod3QuZG90KFNyLFJtKSk7cmV0dXJuIFJtPXd0LmRpdmlkZUJ5U2NhbGFyKFJtLGEsUm0pLFNyPXd0Lm11bHRpcGx5QnlTY2FsYXIoU3IsaSxTciksbShzKXx8KHM9bmV3IHd0KSx3dC5hZGQoUm0sU3Iscyl9O3d0LmZyb21EZWdyZWVzQXJyYXk9ZnVuY3Rpb24odCxlLGkpe2lmKHAuZGVmaW5lZCgiY29vcmRpbmF0ZXMiLHQpLHQubGVuZ3RoPDJ8fHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBZKCJ0aGUgbnVtYmVyIG9mIGNvb3JkaW5hdGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyIGFuZCBhdCBsZWFzdCAyIik7bGV0IG49dC5sZW5ndGg7bShpKT9pLmxlbmd0aD1uLzI6aT1uZXcgQXJyYXkobi8yKTtmb3IobGV0IHM9MDtzPG47cys9Mil7bGV0IG89dFtzXSxyPXRbcysxXSxhPXMvMjtpW2FdPXd0LmZyb21EZWdyZWVzKG8sciwwLGUsaVthXSl9cmV0dXJuIGl9O3d0LmZyb21SYWRpYW5zQXJyYXk9ZnVuY3Rpb24odCxlLGkpe2lmKHAuZGVmaW5lZCgiY29vcmRpbmF0ZXMiLHQpLHQubGVuZ3RoPDJ8fHQubGVuZ3RoJTIhPT0wKXRocm93IG5ldyBZKCJ0aGUgbnVtYmVyIG9mIGNvb3JkaW5hdGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyIGFuZCBhdCBsZWFzdCAyIik7bGV0IG49dC5sZW5ndGg7bShpKT9pLmxlbmd0aD1uLzI6aT1uZXcgQXJyYXkobi8yKTtmb3IobGV0IHM9MDtzPG47cys9Mil7bGV0IG89dFtzXSxyPXRbcysxXSxhPXMvMjtpW2FdPXd0LmZyb21SYWRpYW5zKG8sciwwLGUsaVthXSl9cmV0dXJuIGl9O3d0LmZyb21EZWdyZWVzQXJyYXlIZWlnaHRzPWZ1bmN0aW9uKHQsZSxpKXtpZihwLmRlZmluZWQoImNvb3JkaW5hdGVzIix0KSx0Lmxlbmd0aDwzfHx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgWSgidGhlIG51bWJlciBvZiBjb29yZGluYXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMyBhbmQgYXQgbGVhc3QgMyIpO2xldCBuPXQubGVuZ3RoO20oaSk/aS5sZW5ndGg9bi8zOmk9bmV3IEFycmF5KG4vMyk7Zm9yKGxldCBzPTA7czxuO3MrPTMpe2xldCBvPXRbc10scj10W3MrMV0sYT10W3MrMl0saD1zLzM7aVtoXT13dC5mcm9tRGVncmVlcyhvLHIsYSxlLGlbaF0pfXJldHVybiBpfTt3dC5mcm9tUmFkaWFuc0FycmF5SGVpZ2h0cz1mdW5jdGlvbih0LGUsaSl7aWYocC5kZWZpbmVkKCJjb29yZGluYXRlcyIsdCksdC5sZW5ndGg8M3x8dC5sZW5ndGglMyE9PTApdGhyb3cgbmV3IFkoInRoZSBudW1iZXIgb2YgY29vcmRpbmF0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMgYW5kIGF0IGxlYXN0IDMiKTtsZXQgbj10Lmxlbmd0aDttKGkpP2kubGVuZ3RoPW4vMzppPW5ldyBBcnJheShuLzMpO2ZvcihsZXQgcz0wO3M8bjtzKz0zKXtsZXQgbz10W3NdLHI9dFtzKzFdLGE9dFtzKzJdLGg9cy8zO2lbaF09d3QuZnJvbVJhZGlhbnMobyxyLGEsZSxpW2hdKX1yZXR1cm4gaX07d3QuWkVSTz1PYmplY3QuZnJlZXplKG5ldyB3dCgwLDAsMCkpO3d0Lk9ORT1PYmplY3QuZnJlZXplKG5ldyB3dCgxLDEsMSkpO3d0LlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyB3dCgxLDAsMCkpO3d0LlVOSVRfWT1PYmplY3QuZnJlZXplKG5ldyB3dCgwLDEsMCkpO3d0LlVOSVRfWj1PYmplY3QuZnJlZXplKG5ldyB3dCgwLDAsMSkpO3d0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QuY2xvbmUodGhpcyx0KX07d3QucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gd3QuZXF1YWxzKHRoaXMsdCl9O3d0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gd3QuZXF1YWxzRXBzaWxvbih0aGlzLHQsZSxpKX07d3QucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMueH0sICR7dGhpcy55fSwgJHt0aGlzLnp9KWB9O2w9d3R9KTtmdW5jdGlvbiBQWCh0LGUsaSxuLHMpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJjYXJ0ZXNpYW4gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9uZU92ZXJSYWRpaSBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgib25lT3ZlclJhZGlpU3F1YXJlZCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgWSgiY2VudGVyVG9sZXJhbmNlU3F1YXJlZCBpcyByZXF1aXJlZC4iKTtsZXQgbz10Lngscj10LnksYT10LnosaD1lLngsQT1lLnksZD1lLnosZj1vKm8qaCpoLEU9cipyKkEqQSxfPWEqYSpkKmQsUj1mK0UrXyxJPU1hdGguc3FydCgxL1IpLEM9bC5tdWx0aXBseUJ5U2NhbGFyKHQsSSx3WCk7aWYoUjxuKXJldHVybiBpc0Zpbml0ZShJKT9sLmNsb25lKEMscyk6dm9pZCAwO2xldCBOPWkueCxUPWkueSxiPWkueixGPXhYO0YueD1DLngqTioyLEYueT1DLnkqVCoyLEYuej1DLnoqYioyO2xldCBCPSgxLUkpKmwubWFnbml0dWRlKHQpLyguNSpsLm1hZ25pdHVkZShGKSksVT0wLFEsTSxrLHksYyxnLE8sRCx3LHgsSDtkb3tCLT1VLGs9MS8oMStCKk4pLHk9MS8oMStCKlQpLGM9MS8oMStCKmIpLGc9ayprLE89eSp5LEQ9YypjLHc9ZyprLHg9Typ5LEg9RCpjLFE9ZipnK0UqTytfKkQtMSxNPWYqdypOK0UqeCpUK18qSCpiO2xldCBqPS0yKk07VT1RL2p9d2hpbGUoTWF0aC5hYnMoUSk+TC5FUFNJTE9OMTIpO3JldHVybiBtKHMpPyhzLng9byprLHMueT1yKnkscy56PWEqYyxzKTpuZXcgbChvKmsscip5LGEqYyl9dmFyIHdYLHhYLHNaLG8wPVMoKCk9PntIdCgpO210KCk7T3QoKTtfZSgpO3dYPW5ldyBsLHhYPW5ldyBsO3NaPVBYfSk7ZnVuY3Rpb24gZnModCxlLGkpe3RoaXMubG9uZ2l0dWRlPVoodCwwKSx0aGlzLmxhdGl0dWRlPVooZSwwKSx0aGlzLmhlaWdodD1aKGksMCl9dmFyIEpYLGpYLEhYLHZYLHpYLEtYLHV0LHJpPVMoKCk9PntIdCgpO2FlKCk7RnQoKTttdCgpO19lKCk7bzAoKTtmcy5mcm9tUmFkaWFucz1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLGk9WihpLDApLG0obik/KG4ubG9uZ2l0dWRlPXQsbi5sYXRpdHVkZT1lLG4uaGVpZ2h0PWksbik6bmV3IGZzKHQsZSxpKX07ZnMuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm51bWJlcigibG9uZ2l0dWRlIix0KSxwLnR5cGVPZi5udW1iZXIoImxhdGl0dWRlIixlKSx0PUwudG9SYWRpYW5zKHQpLGU9TC50b1JhZGlhbnMoZSksZnMuZnJvbVJhZGlhbnModCxlLGksbil9O0pYPW5ldyBsLGpYPW5ldyBsLEhYPW5ldyBsLHZYPW5ldyBsKDEvNjM3ODEzNywxLzYzNzgxMzcsMS82MzU2NzUyMzE0MjQ1MTc5ZS05KSx6WD1uZXcgbCgxLyg2Mzc4MTM3KjYzNzgxMzcpLDEvKDYzNzgxMzcqNjM3ODEzNyksMS8oNjM1Njc1MjMxNDI0NTE3OWUtOSo2MzU2NzUyMzE0MjQ1MTc5ZS05KSksS1g9TC5FUFNJTE9OMTtmcy5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1tKGUpP2Uub25lT3ZlclJhZGlpOnZYLHM9bShlKT9lLm9uZU92ZXJSYWRpaVNxdWFyZWQ6elgsbz1tKGUpP2UuX2NlbnRlclRvbGVyYW5jZVNxdWFyZWQ6S1gscj1zWih0LG4scyxvLGpYKTtpZighbShyKSlyZXR1cm47bGV0IGE9bC5tdWx0aXBseUNvbXBvbmVudHMocixzLEpYKTthPWwubm9ybWFsaXplKGEsYSk7bGV0IGg9bC5zdWJ0cmFjdCh0LHIsSFgpLEE9TWF0aC5hdGFuMihhLnksYS54KSxkPU1hdGguYXNpbihhLnopLGY9TC5zaWduKGwuZG90KGgsdCkpKmwubWFnbml0dWRlKGgpO3JldHVybiBtKGkpPyhpLmxvbmdpdHVkZT1BLGkubGF0aXR1ZGU9ZCxpLmhlaWdodD1mLGkpOm5ldyBmcyhBLGQsZil9O2ZzLnRvQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJjYXJ0b2dyYXBoaWMiLHQpLGwuZnJvbVJhZGlhbnModC5sb25naXR1ZGUsdC5sYXRpdHVkZSx0LmhlaWdodCxlLGkpfTtmcy5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPXQubG9uZ2l0dWRlLGUubGF0aXR1ZGU9dC5sYXRpdHVkZSxlLmhlaWdodD10LmhlaWdodCxlKTpuZXcgZnModC5sb25naXR1ZGUsdC5sYXRpdHVkZSx0LmhlaWdodCl9O2ZzLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC5sb25naXR1ZGU9PT1lLmxvbmdpdHVkZSYmdC5sYXRpdHVkZT09PWUubGF0aXR1ZGUmJnQuaGVpZ2h0PT09ZS5oZWlnaHR9O2ZzLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC5sb25naXR1ZGUtZS5sb25naXR1ZGUpPD1pJiZNYXRoLmFicyh0LmxhdGl0dWRlLWUubGF0aXR1ZGUpPD1pJiZNYXRoLmFicyh0LmhlaWdodC1lLmhlaWdodCk8PWl9O2ZzLlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgZnMoMCwwLDApKTtmcy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGZzLmNsb25lKHRoaXMsdCl9O2ZzLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZzLmVxdWFscyh0aGlzLHQpfTtmcy5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBmcy5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07ZnMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMubG9uZ2l0dWRlfSwgJHt0aGlzLmxhdGl0dWRlfSwgJHt0aGlzLmhlaWdodH0pYH07dXQ9ZnN9KTtmdW5jdGlvbiBoMih0LGUsaSxuKXtlPVooZSwwKSxpPVooaSwwKSxuPVoobiwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieCIsZSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieSIsaSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieiIsbiwwKSx0Ll9yYWRpaT1uZXcgbChlLGksbiksdC5fcmFkaWlTcXVhcmVkPW5ldyBsKGUqZSxpKmksbipuKSx0Ll9yYWRpaVRvVGhlRm91cnRoPW5ldyBsKGUqZSplKmUsaSppKmkqaSxuKm4qbipuKSx0Ll9vbmVPdmVyUmFkaWk9bmV3IGwoZT09PTA/MDoxL2UsaT09PTA/MDoxL2ksbj09PTA/MDoxL24pLHQuX29uZU92ZXJSYWRpaVNxdWFyZWQ9bmV3IGwoZT09PTA/MDoxLyhlKmUpLGk9PT0wPzA6MS8oaSppKSxuPT09MD8wOjEvKG4qbikpLHQuX21pbmltdW1SYWRpdXM9TWF0aC5taW4oZSxpLG4pLHQuX21heGltdW1SYWRpdXM9TWF0aC5tYXgoZSxpLG4pLHQuX2NlbnRlclRvbGVyYW5jZVNxdWFyZWQ9TC5FUFNJTE9OMSx0Ll9yYWRpaVNxdWFyZWQueiE9PTAmJih0Ll9zcXVhcmVkWE92ZXJTcXVhcmVkWj10Ll9yYWRpaVNxdWFyZWQueC90Ll9yYWRpaVNxdWFyZWQueil9ZnVuY3Rpb24gTGkodCxlLGkpe3RoaXMuX3JhZGlpPXZvaWQgMCx0aGlzLl9yYWRpaVNxdWFyZWQ9dm9pZCAwLHRoaXMuX3JhZGlpVG9UaGVGb3VydGg9dm9pZCAwLHRoaXMuX29uZU92ZXJSYWRpaT12b2lkIDAsdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZD12b2lkIDAsdGhpcy5fbWluaW11bVJhZGl1cz12b2lkIDAsdGhpcy5fbWF4aW11bVJhZGl1cz12b2lkIDAsdGhpcy5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZD12b2lkIDAsdGhpcy5fc3F1YXJlZFhPdmVyU3F1YXJlZFo9dm9pZCAwLGgyKHRoaXMsdCxlLGkpfWZ1bmN0aW9uIEEyKHQsZSxpKXtwLnR5cGVPZi5udW1iZXIoImEiLHQpLHAudHlwZU9mLm51bWJlcigiYiIsZSkscC50eXBlT2YuZnVuYygiZnVuYyIsaSk7bGV0IG49LjUqKGUrdCkscz0uNSooZS10KSxvPTA7Zm9yKGxldCByPTA7cjw1O3IrKyl7bGV0IGE9cypucVtyXTtvKz1zcVtyXSooaShuK2EpK2kobi1hKSl9cmV0dXJuIG8qPXMsb312YXIgWFgscVgsJFgsdHEsZXEsaXEsbnEsc3Esb3QsT2U9UygoKT0+e1hlKCk7SHQoKTtyaSgpO2FlKCk7RnQoKTttdCgpO090KCk7X2UoKTtvMCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKExpLnByb3RvdHlwZSx7cmFkaWk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYWRpaX19LHJhZGlpU3F1YXJlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpU3F1YXJlZH19LHJhZGlpVG9UaGVGb3VydGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYWRpaVRvVGhlRm91cnRofX0sb25lT3ZlclJhZGlpOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25lT3ZlclJhZGlpfX0sb25lT3ZlclJhZGlpU3F1YXJlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uZU92ZXJSYWRpaVNxdWFyZWR9fSxtaW5pbXVtUmFkaXVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWluaW11bVJhZGl1c319LG1heGltdW1SYWRpdXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhpbXVtUmFkaXVzfX19KTtMaS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXJldHVybjtsZXQgaT10Ll9yYWRpaTtyZXR1cm4gbShlKT8obC5jbG9uZShpLGUuX3JhZGlpKSxsLmNsb25lKHQuX3JhZGlpU3F1YXJlZCxlLl9yYWRpaVNxdWFyZWQpLGwuY2xvbmUodC5fcmFkaWlUb1RoZUZvdXJ0aCxlLl9yYWRpaVRvVGhlRm91cnRoKSxsLmNsb25lKHQuX29uZU92ZXJSYWRpaSxlLl9vbmVPdmVyUmFkaWkpLGwuY2xvbmUodC5fb25lT3ZlclJhZGlpU3F1YXJlZCxlLl9vbmVPdmVyUmFkaWlTcXVhcmVkKSxlLl9taW5pbXVtUmFkaXVzPXQuX21pbmltdW1SYWRpdXMsZS5fbWF4aW11bVJhZGl1cz10Ll9tYXhpbXVtUmFkaXVzLGUuX2NlbnRlclRvbGVyYW5jZVNxdWFyZWQ9dC5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZCxlKTpuZXcgTGkoaS54LGkueSxpLnopfTtMaS5mcm9tQ2FydGVzaWFuMz1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpfHwoZT1uZXcgTGkpLG0odCkmJmgyKGUsdC54LHQueSx0LnopLGV9O0xpLldHUzg0PU9iamVjdC5mcmVlemUobmV3IExpKDYzNzgxMzcsNjM3ODEzNyw2MzU2NzUyMzE0MjQ1MTc5ZS05KSk7TGkuVU5JVF9TUEhFUkU9T2JqZWN0LmZyZWV6ZShuZXcgTGkoMSwxLDEpKTtMaS5NT09OPU9iamVjdC5mcmVlemUobmV3IExpKEwuTFVOQVJfUkFESVVTLEwuTFVOQVJfUkFESVVTLEwuTFVOQVJfUkFESVVTKSk7TGkucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBMaS5jbG9uZSh0aGlzLHQpfTtMaS5wYWNrZWRMZW5ndGg9bC5wYWNrZWRMZW5ndGg7TGkucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGwucGFjayh0Ll9yYWRpaSxlLGkpLGV9O0xpLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49bC51bnBhY2sodCxlKTtyZXR1cm4gTGkuZnJvbUNhcnRlc2lhbjMobixpKX07TGkucHJvdG90eXBlLmdlb2NlbnRyaWNTdXJmYWNlTm9ybWFsPWwubm9ybWFsaXplO0xpLnByb3RvdHlwZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWxDYXJ0b2dyYXBoaWM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRvZ3JhcGhpYyIsdCk7bGV0IGk9dC5sb25naXR1ZGUsbj10LmxhdGl0dWRlLHM9TWF0aC5jb3Mobiksbz1zKk1hdGguY29zKGkpLHI9cypNYXRoLnNpbihpKSxhPU1hdGguc2luKG4pO3JldHVybiBtKGUpfHwoZT1uZXcgbCksZS54PW8sZS55PXIsZS56PWEsbC5ub3JtYWxpemUoZSxlKX07TGkucHJvdG90eXBlLmdlb2RldGljU3VyZmFjZU5vcm1hbD1mdW5jdGlvbih0LGUpe2lmKHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxpc05hTih0LngpfHxpc05hTih0LnkpfHxpc05hTih0LnopKXRocm93IG5ldyBZKCJjYXJ0ZXNpYW4gaGFzIGEgTmFOIGNvbXBvbmVudCIpO2lmKCFsLmVxdWFsc0Vwc2lsb24odCxsLlpFUk8sTC5FUFNJTE9OMTQpKXJldHVybiBtKGUpfHwoZT1uZXcgbCksZT1sLm11bHRpcGx5Q29tcG9uZW50cyh0LHRoaXMuX29uZU92ZXJSYWRpaVNxdWFyZWQsZSksbC5ub3JtYWxpemUoZSxlKX07WFg9bmV3IGwscVg9bmV3IGw7TGkucHJvdG90eXBlLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7bGV0IGk9WFgsbj1xWDt0aGlzLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYyh0LGkpLGwubXVsdGlwbHlDb21wb25lbnRzKHRoaXMuX3JhZGlpU3F1YXJlZCxpLG4pO2xldCBzPU1hdGguc3FydChsLmRvdChpLG4pKTtyZXR1cm4gbC5kaXZpZGVCeVNjYWxhcihuLHMsbiksbC5tdWx0aXBseUJ5U2NhbGFyKGksdC5oZWlnaHQsaSksbShlKXx8KGU9bmV3IGwpLGwuYWRkKG4saSxlKX07TGkucHJvdG90eXBlLmNhcnRvZ3JhcGhpY0FycmF5VG9DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydG9ncmFwaGljcyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTtuKyspZVtuXT10aGlzLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHRbbl0sZVtuXSk7cmV0dXJuIGV9OyRYPW5ldyBsLHRxPW5ldyBsLGVxPW5ldyBsO0xpLnByb3RvdHlwZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYz1mdW5jdGlvbih0LGUpe2xldCBpPXRoaXMuc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0LHRxKTtpZighbShpKSlyZXR1cm47bGV0IG49dGhpcy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaSwkWCkscz1sLnN1YnRyYWN0KHQsaSxlcSksbz1NYXRoLmF0YW4yKG4ueSxuLngpLHI9TWF0aC5hc2luKG4ueiksYT1MLnNpZ24obC5kb3Qocyx0KSkqbC5tYWduaXR1ZGUocyk7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPW8sZS5sYXRpdHVkZT1yLGUuaGVpZ2h0PWEsZSk6bmV3IHV0KG8scixhKX07TGkucHJvdG90eXBlLmNhcnRlc2lhbkFycmF5VG9DYXJ0b2dyYXBoaWNBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTsrK24pZVtuXT10aGlzLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHRbbl0sZVtuXSk7cmV0dXJuIGV9O0xpLnByb3RvdHlwZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNaKHQsdGhpcy5fb25lT3ZlclJhZGlpLHRoaXMuX29uZU92ZXJSYWRpaVNxdWFyZWQsdGhpcy5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZCxlKX07TGkucHJvdG90eXBlLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxtKGUpfHwoZT1uZXcgbCk7bGV0IGk9dC54LG49dC55LHM9dC56LG89dGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZCxyPTEvTWF0aC5zcXJ0KGkqaSpvLngrbipuKm8ueStzKnMqby56KTtyZXR1cm4gbC5tdWx0aXBseUJ5U2NhbGFyKHQscixlKX07TGkucHJvdG90eXBlLnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpfHwoZT1uZXcgbCksbC5tdWx0aXBseUNvbXBvbmVudHModCx0aGlzLl9vbmVPdmVyUmFkaWksZSl9O0xpLnByb3RvdHlwZS50cmFuc2Zvcm1Qb3NpdGlvbkZyb21TY2FsZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpfHwoZT1uZXcgbCksbC5tdWx0aXBseUNvbXBvbmVudHModCx0aGlzLl9yYWRpaSxlKX07TGkucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fG0odCkmJmwuZXF1YWxzKHRoaXMuX3JhZGlpLHQuX3JhZGlpKX07TGkucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpLnRvU3RyaW5nKCl9O0xpLnByb3RvdHlwZS5nZXRTdXJmYWNlTm9ybWFsSW50ZXJzZWN0aW9uV2l0aFpBeGlzPWZ1bmN0aW9uKHQsZSxpKXtpZihwLnR5cGVPZi5vYmplY3QoInBvc2l0aW9uIix0KSwhTC5lcXVhbHNFcHNpbG9uKHRoaXMuX3JhZGlpLngsdGhpcy5fcmFkaWkueSxMLkVQU0lMT04xNSkpdGhyb3cgbmV3IFkoIkVsbGlwc29pZCBtdXN0IGJlIGFuIGVsbGlwc29pZCBvZiByZXZvbHV0aW9uIChyYWRpaS54ID09IHJhZGlpLnkpIik7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJFbGxpcHNvaWQucmFkaWkueiIsdGhpcy5fcmFkaWkueiwwKSxlPVooZSwwKTtsZXQgbj10aGlzLl9zcXVhcmVkWE92ZXJTcXVhcmVkWjtpZihtKGkpfHwoaT1uZXcgbCksaS54PTAsaS55PTAsaS56PXQueiooMS1uKSwhKE1hdGguYWJzKGkueik+PXRoaXMuX3JhZGlpLnotZSkpcmV0dXJuIGl9O2lxPW5ldyBsO0xpLnByb3RvdHlwZS5nZXRMb2NhbEN1cnZhdHVyZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgic3VyZmFjZVBvc2l0aW9uIix0KSxtKGUpfHwoZT1uZXcgbnQpO2xldCBpPXRoaXMuZ2V0U3VyZmFjZU5vcm1hbEludGVyc2VjdGlvbldpdGhaQXhpcyh0LDAsaXEpLG49bC5kaXN0YW5jZSh0LGkpLHM9dGhpcy5taW5pbXVtUmFkaXVzKm4vdGhpcy5tYXhpbXVtUmFkaXVzKioyLG89bipzKioyO3JldHVybiBudC5mcm9tRWxlbWVudHMoMS9uLDEvbyxlKX07bnE9Wy4xNDg4NzQzMzg5ODE2MywuNDMzMzk1Mzk0MTI5MjUsLjY3OTQwOTU2ODI5OTAyLC44NjUwNjMzNjY2ODg5OCwuOTczOTA2NTI4NTE3MTcsMF0sc3E9Wy4yOTU1MjQyMjQ3MTQ3NSwuMjY5MjY2NzE5MzA5OTksLjIxOTA4NjM2MjUxNTk4LC4xNDk0NTEzNDkxNTA1OCwuMDY2NjcxMzQ0MzA4Njg0LDBdO0xpLnByb3RvdHlwZS5zdXJmYWNlQXJlYT1mdW5jdGlvbih0KXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCk7bGV0IGU9dC53ZXN0LGk9dC5lYXN0LG49dC5zb3V0aCxzPXQubm9ydGg7Zm9yKDtpPGU7KWkrPUwuVFdPX1BJO2xldCBvPXRoaXMuX3JhZGlpU3F1YXJlZCxyPW8ueCxhPW8ueSxoPW8ueixBPXIqYTtyZXR1cm4gQTIobixzLGZ1bmN0aW9uKGQpe2xldCBmPU1hdGguY29zKGQpLEU9TWF0aC5zaW4oZCk7cmV0dXJuIE1hdGguY29zKGQpKkEyKGUsaSxmdW5jdGlvbihfKXtsZXQgUj1NYXRoLmNvcyhfKSxJPU1hdGguc2luKF8pO3JldHVybiBNYXRoLnNxcnQoQSpFKkUraCooYSpSKlIrcipJKkkpKmYqZil9KX0pfTtvdD1MaX0pO2Z1bmN0aW9uIG9aKHQpe3RoaXMuX2VsbGlwc29pZD1aKHQsb3QuV0dTODQpLHRoaXMuX3NlbWltYWpvckF4aXM9dGhpcy5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsdGhpcy5fb25lT3ZlclNlbWltYWpvckF4aXM9MS90aGlzLl9zZW1pbWFqb3JBeGlzfXZhciBTcyx6QT1TKCgpPT57SHQoKTtyaSgpO0Z0KCk7bXQoKTtPdCgpO09lKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMob1oucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fX0pO29aLnByb3RvdHlwZS5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7bGV0IGk9dGhpcy5fc2VtaW1ham9yQXhpcyxuPXQubG9uZ2l0dWRlKmkscz10LmxhdGl0dWRlKmksbz10LmhlaWdodDtyZXR1cm4gbShlKT8oZS54PW4sZS55PXMsZS56PW8sZSk6bmV3IGwobixzLG8pfTtvWi5wcm90b3R5cGUudW5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNhcnRlc2lhbiBpcyByZXF1aXJlZCIpO2xldCBpPXRoaXMuX29uZU92ZXJTZW1pbWFqb3JBeGlzLG49dC54Kmkscz10LnkqaSxvPXQuejtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9bixlLmxhdGl0dWRlPXMsZS5oZWlnaHQ9byxlKTpuZXcgdXQobixzLG8pfTtTcz1vWn0pO3ZhciBvcSxObixuYz1TKCgpPT57b3E9e09VVFNJREU6LTEsSU5URVJTRUNUSU5HOjAsSU5TSURFOjF9LE5uPU9iamVjdC5mcmVlemUob3EpfSk7ZnVuY3Rpb24gb2UodCxlLGksbil7dGhpcy54PVoodCwwKSx0aGlzLnk9WihlLDApLHRoaXMuej1aKGksMCksdGhpcy53PVoobiwwKX12YXIgclosYzIscnEscjAsbG8sYXEsQXEsbDIsaWUsT3M9UygoKT0+e2FlKCk7RnQoKTttdCgpO090KCk7X2UoKTtvZS5mcm9tRWxlbWVudHM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gbShzKT8ocy54PXQscy55PWUscy56PWkscy53PW4scyk6bmV3IG9lKHQsZSxpLG4pfTtvZS5mcm9tQ29sb3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjb2xvciIsdCksbShlKT8oZS54PXQucmVkLGUueT10LmdyZWVuLGUuej10LmJsdWUsZS53PXQuYWxwaGEsZSk6bmV3IG9lKHQucmVkLHQuZ3JlZW4sdC5ibHVlLHQuYWxwaGEpfTtvZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlLno9dC56LGUudz10LncsZSk6bmV3IG9lKHQueCx0LnksdC56LHQudyl9O29lLnBhY2tlZExlbmd0aD00O29lLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaSsrXT10LnksZVtpKytdPXQueixlW2ldPXQudyxlfTtvZS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgb2UpLGkueD10W2UrK10saS55PXRbZSsrXSxpLno9dFtlKytdLGkudz10W2VdLGl9O29lLnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBpPXQubGVuZ3RoLG49aSo0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG4pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09bil0aHJvdyBuZXcgWSgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW4mJihlLmxlbmd0aD1uKX1mb3IobGV0IHM9MDtzPGk7KytzKW9lLnBhY2sodFtzXSxlLHMqNCk7cmV0dXJuIGV9O29lLnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYocC5kZWZpbmVkKCJhcnJheSIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IFkoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgaT10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPWkvNDplPW5ldyBBcnJheShpLzQpO2ZvcihsZXQgbj0wO248aTtuKz00KXtsZXQgcz1uLzQ7ZVtzXT1vZS51bnBhY2sodCxuLGVbc10pfXJldHVybiBlfTtvZS5mcm9tQXJyYXk9b2UudW5wYWNrO29lLm1heGltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1heCh0LngsdC55LHQueix0LncpfTtvZS5taW5pbXVtQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksTWF0aC5taW4odC54LHQueSx0LnosdC53KX07b2UubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5taW4odC54LGUueCksaS55PU1hdGgubWluKHQueSxlLnkpLGkuej1NYXRoLm1pbih0LnosZS56KSxpLnc9TWF0aC5taW4odC53LGUudyksaX07b2UubWF4aW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkscC50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9TWF0aC5tYXgodC54LGUueCksaS55PU1hdGgubWF4KHQueSxlLnkpLGkuej1NYXRoLm1heCh0LnosZS56KSxpLnc9TWF0aC5tYXgodC53LGUudyksaX07b2UuY2xhbXA9ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC50eXBlT2Yub2JqZWN0KCJtaW4iLGUpLHAudHlwZU9mLm9iamVjdCgibWF4IixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IHM9TC5jbGFtcCh0LngsZS54LGkueCksbz1MLmNsYW1wKHQueSxlLnksaS55KSxyPUwuY2xhbXAodC56LGUueixpLnopLGE9TC5jbGFtcCh0LncsZS53LGkudyk7cmV0dXJuIG4ueD1zLG4ueT1vLG4uej1yLG4udz1hLG59O29lLm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx0LngqdC54K3QueSp0LnkrdC56KnQueit0LncqdC53fTtvZS5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydChvZS5tYWduaXR1ZGVTcXVhcmVkKHQpKX07clo9bmV3IG9lO29lLmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksb2Uuc3VidHJhY3QodCxlLHJaKSxvZS5tYWduaXR1ZGUoclopfTtvZS5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxvZS5zdWJ0cmFjdCh0LGUsclopLG9lLm1hZ25pdHVkZVNxdWFyZWQoclopfTtvZS5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPW9lLm1hZ25pdHVkZSh0KTtpZihlLng9dC54L2ksZS55PXQueS9pLGUuej10LnovaSxlLnc9dC53L2ksaXNOYU4oZS54KXx8aXNOYU4oZS55KXx8aXNOYU4oZS56KXx8aXNOYU4oZS53KSl0aHJvdyBuZXcgWSgibm9ybWFsaXplZCByZXN1bHQgaXMgbm90IGEgbnVtYmVyIik7cmV0dXJuIGV9O29lLmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueSt0LnoqZS56K3QudyplLnd9O29lLm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngqZS54LGkueT10LnkqZS55LGkuej10LnoqZS56LGkudz10LncqZS53LGl9O29lLmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54L2UueCxpLnk9dC55L2UueSxpLno9dC56L2UueixpLnc9dC53L2UudyxpfTtvZS5hZGQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54K2UueCxpLnk9dC55K2UueSxpLno9dC56K2UueixpLnc9dC53K2UudyxpfTtvZS5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngtZS54LGkueT10LnktZS55LGkuej10LnotZS56LGkudz10LnctZS53LGl9O29lLm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54KmUsaS55PXQueSplLGkuej10LnoqZSxpLnc9dC53KmUsaX07b2UuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLng9dC54L2UsaS55PXQueS9lLGkuej10LnovZSxpLnc9dC53L2UsaX07b2UubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PS10LncsZX07b2UuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PU1hdGguYWJzKHQueCksZS55PU1hdGguYWJzKHQueSksZS56PU1hdGguYWJzKHQueiksZS53PU1hdGguYWJzKHQudyksZX07YzI9bmV3IG9lO29lLmxlcnA9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHAudHlwZU9mLm9iamVjdCgiZW5kIixlKSxwLnR5cGVPZi5udW1iZXIoInQiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxvZS5tdWx0aXBseUJ5U2NhbGFyKGUsaSxjMiksbj1vZS5tdWx0aXBseUJ5U2NhbGFyKHQsMS1pLG4pLG9lLmFkZChjMixuLG4pfTtycT1uZXcgb2U7b2UubW9zdE9ydGhvZ29uYWxBeGlzPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgaT1vZS5ub3JtYWxpemUodCxycSk7cmV0dXJuIG9lLmFicyhpLGkpLGkueDw9aS55P2kueDw9aS56P2kueDw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9YLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpOmkuejw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9aLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpOmkueTw9aS56P2kueTw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9ZLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpOmkuejw9aS53P2U9b2UuY2xvbmUob2UuVU5JVF9aLGUpOmU9b2UuY2xvbmUob2UuVU5JVF9XLGUpLGV9O29lLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUueiYmdC53PT09ZS53fTtvZS5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQueD09PWVbaV0mJnQueT09PWVbaSsxXSYmdC56PT09ZVtpKzJdJiZ0Lnc9PT1lW2krM119O29lLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZMLmVxdWFsc0Vwc2lsb24odC54LGUueCxpLG4pJiZMLmVxdWFsc0Vwc2lsb24odC55LGUueSxpLG4pJiZMLmVxdWFsc0Vwc2lsb24odC56LGUueixpLG4pJiZMLmVxdWFsc0Vwc2lsb24odC53LGUudyxpLG4pfTtvZS5aRVJPPU9iamVjdC5mcmVlemUobmV3IG9lKDAsMCwwLDApKTtvZS5PTkU9T2JqZWN0LmZyZWV6ZShuZXcgb2UoMSwxLDEsMSkpO29lLlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyBvZSgxLDAsMCwwKSk7b2UuVU5JVF9ZPU9iamVjdC5mcmVlemUobmV3IG9lKDAsMSwwLDApKTtvZS5VTklUX1o9T2JqZWN0LmZyZWV6ZShuZXcgb2UoMCwwLDEsMCkpO29lLlVOSVRfVz1PYmplY3QuZnJlZXplKG5ldyBvZSgwLDAsMCwxKSk7b2UucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBvZS5jbG9uZSh0aGlzLHQpfTtvZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBvZS5lcXVhbHModGhpcyx0KX07b2UucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBvZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLGkpfTtvZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9LCAke3RoaXMuen0sICR7dGhpcy53fSlgfTtyMD1uZXcgRmxvYXQzMkFycmF5KDEpLGxvPW5ldyBVaW50OEFycmF5KHIwLmJ1ZmZlciksYXE9bmV3IFVpbnQzMkFycmF5KFsyODc0NTQwMjBdKSxBcT1uZXcgVWludDhBcnJheShhcS5idWZmZXIpLGwyPUFxWzBdPT09Njg7b2UucGFja0Zsb2F0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLG0oZSl8fChlPW5ldyBvZSkscjBbMF09dCxsMj8oZS54PWxvWzBdLGUueT1sb1sxXSxlLno9bG9bMl0sZS53PWxvWzNdKTooZS54PWxvWzNdLGUueT1sb1syXSxlLno9bG9bMV0sZS53PWxvWzBdKSxlfTtvZS51bnBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJwYWNrZWRGbG9hdCIsdCksbDI/KGxvWzBdPXQueCxsb1sxXT10LnksbG9bMl09dC56LGxvWzNdPXQudyk6KGxvWzBdPXQudyxsb1sxXT10LnosbG9bMl09dC55LGxvWzNdPXQueCkscjBbMF19O2llPW9lfSk7ZnVuY3Rpb24gaHEodCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLHAuZGVmaW5lZCgiaXRlbVRvRmluZCIsZSkscC5kZWZpbmVkKCJjb21wYXJhdG9yIixpKTtsZXQgbj0wLHM9dC5sZW5ndGgtMSxvLHI7Zm9yKDtuPD1zOyl7aWYobz1+figobitzKS8yKSxyPWkodFtvXSxlKSxyPDApe249bysxO2NvbnRpbnVlfWlmKHI+MCl7cz1vLTE7Y29udGludWV9cmV0dXJuIG99cmV0dXJufihzKzEpfXZhciBHbyxzRT1TKCgpPT57YWUoKTtHbz1ocX0pO2Z1bmN0aW9uIGNxKHQsZSxpLG4scyl7dGhpcy54UG9sZVdhbmRlcj10LHRoaXMueVBvbGVXYW5kZXI9ZSx0aGlzLnhQb2xlT2Zmc2V0PWksdGhpcy55UG9sZU9mZnNldD1uLHRoaXMudXQxTWludXNVdGM9c312YXIgb0UsYTA9UygoKT0+e29FPWNxfSk7ZnVuY3Rpb24gbHEodCl7aWYodD09PW51bGx8fGlzTmFOKHQpKXRocm93IG5ldyBZKCJ5ZWFyIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgbnVtYmVyLiIpO3JldHVybiB0JTQ9PT0wJiZ0JTEwMCE9PTB8fHQlNDAwPT09MH12YXIgckUsQTA9UygoKT0+e090KCk7ckU9bHF9KTtmdW5jdGlvbiBkcSh0LGUsaSxuLHMsbyxyLGEpe3Q9Wih0LDEpLGU9WihlLDEpLGk9WihpLDEpLG49WihuLDApLHM9WihzLDApLG89WihvLDApLHI9WihyLDApLGE9WihhLCExKSxJKCksQygpLHRoaXMueWVhcj10LHRoaXMubW9udGg9ZSx0aGlzLmRheT1pLHRoaXMuaG91cj1uLHRoaXMubWludXRlPXMsdGhpcy5zZWNvbmQ9byx0aGlzLm1pbGxpc2Vjb25kPXIsdGhpcy5pc0xlYXBTZWNvbmQ9YTtmdW5jdGlvbiBJKCl7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIlllYXIiLHQsMSkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIlllYXIiLHQsOTk5OSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIk1vbnRoIixlLDEpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJNb250aCIsZSwxMikscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIkRheSIsaSwxKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiRGF5IixpLDMxKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiSG91ciIsbiwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiSG91ciIsbiwyMykscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIk1pbnV0ZSIscywwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiTWludXRlIixzLDU5KSxwLnR5cGVPZi5ib29sKCJJc0xlYXBTZWNvbmQiLGEpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJTZWNvbmQiLG8sMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIlNlY29uZCIsbyxhPzYwOjU5KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiTWlsbGlzZWNvbmQiLHIsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuKCJNaWxsaXNlY29uZCIsciwxZTMpfWZ1bmN0aW9uIEMoKXtsZXQgTj1lPT09MiYmckUodCk/ZDJbZS0xXSsxOmQyW2UtMV07aWYoaT5OKXRocm93IG5ldyBZKCJNb250aCBhbmQgRGF5IHJlcHJlc2VudHMgaW52YWxpZCBkYXRlIil9fXZhciBkMixhWixtMj1TKCgpPT57YWUoKTtGdCgpO090KCk7QTAoKTtkMj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2FaPWRxfSk7ZnVuY3Rpb24gbXEodCxlKXt0aGlzLmp1bGlhbkRhdGU9dCx0aGlzLm9mZnNldD1lfXZhciB6aSxoMD1TKCgpPT57emk9bXF9KTt2YXIgZnEsRm4sQVo9UygoKT0+e2ZxPXtTRUNPTkRTX1BFUl9NSUxMSVNFQ09ORDouMDAxLFNFQ09ORFNfUEVSX01JTlVURTo2MCxNSU5VVEVTX1BFUl9IT1VSOjYwLEhPVVJTX1BFUl9EQVk6MjQsU0VDT05EU19QRVJfSE9VUjozNjAwLE1JTlVURVNfUEVSX0RBWToxNDQwLFNFQ09ORFNfUEVSX0RBWTo4NjQwMCxEQVlTX1BFUl9KVUxJQU5fQ0VOVFVSWTozNjUyNSxQSUNPU0VDT05EOjFlLTksTU9ESUZJRURfSlVMSUFOX0RBVEVfRElGRkVSRU5DRToyNDAwMDAwNWUtMX0sRm49T2JqZWN0LmZyZWV6ZShmcSl9KTt2YXIgRXEsRWksaFo9UygoKT0+e0VxPXtVVEM6MCxUQUk6MX0sRWk9T2JqZWN0LmZyZWV6ZShFcSl9KTtmdW5jdGlvbiBjMCh0LGUpe3JldHVybiBtZS5jb21wYXJlKHQuanVsaWFuRGF0ZSxlLmp1bGlhbkRhdGUpfWZ1bmN0aW9uIG1aKHQpe1ptLmp1bGlhbkRhdGU9dDtsZXQgZT1tZS5sZWFwU2Vjb25kcyxpPUdvKGUsWm0sYzApO2k8MCYmKGk9fmkpLGk+PWUubGVuZ3RoJiYoaT1lLmxlbmd0aC0xKTtsZXQgbj1lW2ldLm9mZnNldDtpPjAmJm1lLnNlY29uZHNEaWZmZXJlbmNlKGVbaV0uanVsaWFuRGF0ZSx0KT5uJiYoaS0tLG49ZVtpXS5vZmZzZXQpLG1lLmFkZFNlY29uZHModCxuLHQpfWZ1bmN0aW9uIGYyKHQsZSl7Wm0uanVsaWFuRGF0ZT10O2xldCBpPW1lLmxlYXBTZWNvbmRzLG49R28oaSxabSxjMCk7aWYobjwwJiYobj1+biksbj09PTApcmV0dXJuIG1lLmFkZFNlY29uZHModCwtaVswXS5vZmZzZXQsZSk7aWYobj49aS5sZW5ndGgpcmV0dXJuIG1lLmFkZFNlY29uZHModCwtaVtuLTFdLm9mZnNldCxlKTtsZXQgcz1tZS5zZWNvbmRzRGlmZmVyZW5jZShpW25dLmp1bGlhbkRhdGUsdCk7aWYocz09PTApcmV0dXJuIG1lLmFkZFNlY29uZHModCwtaVtuXS5vZmZzZXQsZSk7aWYoIShzPD0xKSlyZXR1cm4gbWUuYWRkU2Vjb25kcyh0LC1pWy0tbl0ub2Zmc2V0LGUpfWZ1bmN0aW9uIHNjKHQsZSxpKXtsZXQgbj1lL0ZuLlNFQ09ORFNfUEVSX0RBWXwwO3JldHVybiB0Kz1uLGUtPUZuLlNFQ09ORFNfUEVSX0RBWSpuLGU8MCYmKHQtLSxlKz1Gbi5TRUNPTkRTX1BFUl9EQVkpLGkuZGF5TnVtYmVyPXQsaS5zZWNvbmRzT2ZEYXk9ZSxpfWZ1bmN0aW9uIGwwKHQsZSxpLG4scyxvLHIpe2xldCBhPShlLTE0KS8xMnwwLGg9dCs0ODAwK2EsQT0oMTQ2MSpoLzR8MCkrKDM2NyooZS0yLTEyKmEpLzEyfDApLSgzKigoaCsxMDApLzEwMHwwKS80fDApK2ktMzIwNzU7bj1uLTEyLG48MCYmKG4rPTI0KTtsZXQgZD1vKyhuKkZuLlNFQ09ORFNfUEVSX0hPVVIrcypGbi5TRUNPTkRTX1BFUl9NSU5VVEUrcipGbi5TRUNPTkRTX1BFUl9NSUxMSVNFQ09ORCk7cmV0dXJuIGQ+PTQzMjAwJiYoQS09MSksW0EsZF19ZnVuY3Rpb24gbWUodCxlLGkpe3RoaXMuZGF5TnVtYmVyPXZvaWQgMCx0aGlzLnNlY29uZHNPZkRheT12b2lkIDAsdD1aKHQsMCksZT1aKGUsMCksaT1aKGksRWkuVVRDKTtsZXQgbj10fDA7ZT1lKyh0LW4pKkZuLlNFQ09ORFNfUEVSX0RBWSxzYyhuLGUsdGhpcyksaT09PUVpLlVUQyYmbVoodGhpcyl9dmFyIEUyLGNaLGxaLFptLF9xLFJxLFpxLElxLHBxLGQwLHVxLENxLGdxLFphLGRaLFplLE9yPVMoKCk9PntzRSgpO0Z0KCk7bXQoKTtPdCgpO20yKCk7QTAoKTtoMCgpO0FaKCk7aFooKTtFMj1uZXcgYVosY1o9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSxsWj0yOTtabT1uZXcgemk7X3E9L14oXGR7NH0pJC8sUnE9L14oXGR7NH0pLShcZHsyfSkkLyxacT0vXihcZHs0fSktPyhcZHszfSkkLyxJcT0vXihcZHs0fSktP1coXGR7Mn0pLT8oXGR7MX0pPyQvLHBxPS9eKFxkezR9KS0/KFxkezJ9KS0/KFxkezJ9KSQvLGQwPS8oW1orXC1dKT8oXGR7Mn0pPzo/KFxkezJ9KT8kLyx1cT0vXihcZHsyfSkoXC5cZCspPy8uc291cmNlK2QwLnNvdXJjZSxDcT0vXihcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK2QwLnNvdXJjZSxncT0vXihcZHsyfSk6PyhcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK2QwLnNvdXJjZSxaYT0iSW52YWxpZCBJU08gODYwMSBkYXRlLiI7bWUuZnJvbUdyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBhWikpdGhyb3cgbmV3IFkoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEdyZWdvcmlhbkRhdGUuIik7bGV0IGk9bDAodC55ZWFyLHQubW9udGgsdC5kYXksdC5ob3VyLHQubWludXRlLHQuc2Vjb25kLHQubWlsbGlzZWNvbmQpO3JldHVybiBtKGUpPyhzYyhpWzBdLGlbMV0sZSksbVooZSksZSk6bmV3IG1lKGlbMF0saVsxXSxFaS5VVEMpfTttZS5mcm9tRGF0ZT1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIERhdGUpfHxpc05hTih0LmdldFRpbWUoKSkpdGhyb3cgbmV3IFkoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZS4iKTtsZXQgaT1sMCh0LmdldFVUQ0Z1bGxZZWFyKCksdC5nZXRVVENNb250aCgpKzEsdC5nZXRVVENEYXRlKCksdC5nZXRVVENIb3VycygpLHQuZ2V0VVRDTWludXRlcygpLHQuZ2V0VVRDU2Vjb25kcygpLHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO3JldHVybiBtKGUpPyhzYyhpWzBdLGlbMV0sZSksbVooZSksZSk6bmV3IG1lKGlbMF0saVsxXSxFaS5VVEMpfTttZS5mcm9tSXNvODYwMT1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgWShaYSk7dD10LnJlcGxhY2UoIiwiLCIuIik7bGV0IGk9dC5zcGxpdCgiVCIpLG4scz0xLG89MSxyPTAsYT0wLGg9MCxBPTAsZD1pWzBdLGY9aVsxXSxFLF87aWYoIW0oZCkpdGhyb3cgbmV3IFkoWmEpO2xldCBSO2lmKGk9ZC5tYXRjaChwcSksaSE9PW51bGwpe2lmKFI9ZC5zcGxpdCgiLSIpLmxlbmd0aC0xLFI+MCYmUiE9PTIpdGhyb3cgbmV3IFkoWmEpO249K2lbMV0scz0raVsyXSxvPStpWzNdfWVsc2UgaWYoaT1kLm1hdGNoKFJxKSxpIT09bnVsbCluPStpWzFdLHM9K2lbMl07ZWxzZSBpZihpPWQubWF0Y2goX3EpLGkhPT1udWxsKW49K2lbMV07ZWxzZXtsZXQgVDtpZihpPWQubWF0Y2goWnEpLGkhPT1udWxsKXtpZihuPStpWzFdLFQ9K2lbMl0sXz1yRShuKSxUPDF8fF8mJlQ+MzY2fHwhXyYmVD4zNjUpdGhyb3cgbmV3IFkoWmEpfWVsc2UgaWYoaT1kLm1hdGNoKElxKSxpIT09bnVsbCl7bj0raVsxXTtsZXQgYj0raVsyXSxGPStpWzNdfHwwO2lmKFI9ZC5zcGxpdCgiLSIpLmxlbmd0aC0xLFI+MCYmKCFtKGlbM10pJiZSIT09MXx8bShpWzNdKSYmUiE9PTIpKXRocm93IG5ldyBZKFphKTtsZXQgQj1uZXcgRGF0ZShEYXRlLlVUQyhuLDAsNCkpO1Q9Yio3K0YtQi5nZXRVVENEYXkoKS0zfWVsc2UgdGhyb3cgbmV3IFkoWmEpO0U9bmV3IERhdGUoRGF0ZS5VVEMobiwwLDEpKSxFLnNldFVUQ0RhdGUoVCkscz1FLmdldFVUQ01vbnRoKCkrMSxvPUUuZ2V0VVRDRGF0ZSgpfWlmKF89ckUobiksczwxfHxzPjEyfHxvPDF8fChzIT09Mnx8IV8pJiZvPmNaW3MtMV18fF8mJnM9PT0yJiZvPmxaKXRocm93IG5ldyBZKFphKTtsZXQgSTtpZihtKGYpKXtpZihpPWYubWF0Y2goZ3EpLGkhPT1udWxsKXtpZihSPWYuc3BsaXQoIjoiKS5sZW5ndGgtMSxSPjAmJlIhPT0yJiZSIT09Myl0aHJvdyBuZXcgWShaYSk7cj0raVsxXSxhPStpWzJdLGg9K2lbM10sQT0rKGlbNF18fDApKjFlMyxJPTV9ZWxzZSBpZihpPWYubWF0Y2goQ3EpLGkhPT1udWxsKXtpZihSPWYuc3BsaXQoIjoiKS5sZW5ndGgtMSxSPjIpdGhyb3cgbmV3IFkoWmEpO3I9K2lbMV0sYT0raVsyXSxoPSsoaVszXXx8MCkqNjAsST00fWVsc2UgaWYoaT1mLm1hdGNoKHVxKSxpIT09bnVsbClyPStpWzFdLGE9KyhpWzJdfHwwKSo2MCxJPTM7ZWxzZSB0aHJvdyBuZXcgWShaYSk7aWYoYT49NjB8fGg+PTYxfHxyPjI0fHxyPT09MjQmJihhPjB8fGg+MHx8QT4wKSl0aHJvdyBuZXcgWShaYSk7bGV0IFQ9aVtJXSxiPStpW0krMV0sRj0rKGlbSSsyXXx8MCk7c3dpdGNoKFQpe2Nhc2UiKyI6cj1yLWIsYT1hLUY7YnJlYWs7Y2FzZSItIjpyPXIrYixhPWErRjticmVhaztjYXNlIloiOmJyZWFrO2RlZmF1bHQ6YT1hK25ldyBEYXRlKERhdGUuVVRDKG4scy0xLG8scixhKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTticmVha319bGV0IEM9aD09PTYwO2ZvcihDJiZoLS07YT49NjA7KWEtPTYwLHIrKztmb3IoO3I+PTI0OylyLT0yNCxvKys7Zm9yKEU9XyYmcz09PTI/bFo6Y1pbcy0xXTtvPkU7KW8tPUUscysrLHM+MTImJihzLT0xMixuKyspLEU9XyYmcz09PTI/bFo6Y1pbcy0xXTtmb3IoO2E8MDspYSs9NjAsci0tO2Zvcig7cjwwOylyKz0yNCxvLS07Zm9yKDtvPDE7KXMtLSxzPDEmJihzKz0xMixuLS0pLEU9XyYmcz09PTI/bFo6Y1pbcy0xXSxvKz1FO2xldCBOPWwwKG4scyxvLHIsYSxoLEEpO3JldHVybiBtKGUpPyhzYyhOWzBdLE5bMV0sZSksbVooZSkpOmU9bmV3IG1lKE5bMF0sTlsxXSxFaS5VVEMpLEMmJm1lLmFkZFNlY29uZHMoZSwxLGUpLGV9O21lLm5vdz1mdW5jdGlvbih0KXtyZXR1cm4gbWUuZnJvbURhdGUobmV3IERhdGUsdCl9O2RaPW5ldyBtZSgwLDAsRWkuVEFJKTttZS50b0dyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgaT0hMSxuPWYyKHQsZFopO20obil8fChtZS5hZGRTZWNvbmRzKHQsLTEsZFopLG49ZjIoZFosZFopLGk9ITApO2xldCBzPW4uZGF5TnVtYmVyLG89bi5zZWNvbmRzT2ZEYXk7bz49NDMyMDAmJihzKz0xKTtsZXQgcj1zKzY4NTY5fDAsYT00KnIvMTQ2MDk3fDA7cj1yLSgoMTQ2MDk3KmErMykvNHwwKXwwO2xldCBoPTRlMyoocisxKS8xNDYxMDAxfDA7cj1yLSgxNDYxKmgvNHwwKSszMXwwO2xldCBBPTgwKnIvMjQ0N3wwLGQ9ci0oMjQ0NypBLzgwfDApfDA7cj1BLzExfDA7bGV0IGY9QSsyLTEyKnJ8MCxFPTEwMCooYS00OSkraCtyfDAsXz1vL0ZuLlNFQ09ORFNfUEVSX0hPVVJ8MCxSPW8tXypGbi5TRUNPTkRTX1BFUl9IT1VSLEk9Ui9Gbi5TRUNPTkRTX1BFUl9NSU5VVEV8MDtSPVItSSpGbi5TRUNPTkRTX1BFUl9NSU5VVEU7bGV0IEM9UnwwLE49KFItQykvRm4uU0VDT05EU19QRVJfTUlMTElTRUNPTkQ7cmV0dXJuIF8rPTEyLF8+MjMmJihfLT0yNCksaSYmKEMrPTEpLG0oZSk/KGUueWVhcj1FLGUubW9udGg9ZixlLmRheT1kLGUuaG91cj1fLGUubWludXRlPUksZS5zZWNvbmQ9QyxlLm1pbGxpc2Vjb25kPU4sZS5pc0xlYXBTZWNvbmQ9aSxlKTpuZXcgYVooRSxmLGQsXyxJLEMsTixpKX07bWUudG9EYXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2xldCBlPW1lLnRvR3JlZ29yaWFuRGF0ZSh0LEUyKSxpPWUuc2Vjb25kO3JldHVybiBlLmlzTGVhcFNlY29uZCYmKGktPTEpLG5ldyBEYXRlKERhdGUuVVRDKGUueWVhcixlLm1vbnRoLTEsZS5kYXksZS5ob3VyLGUubWludXRlLGksZS5taWxsaXNlY29uZCkpfTttZS50b0lzbzg2MDE9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgaT1tZS50b0dyZWdvcmlhbkRhdGUodCxFMiksbj1pLnllYXIscz1pLm1vbnRoLG89aS5kYXkscj1pLmhvdXIsYT1pLm1pbnV0ZSxoPWkuc2Vjb25kLEE9aS5taWxsaXNlY29uZDtuPT09MWU0JiZzPT09MSYmbz09PTEmJnI9PT0wJiZhPT09MCYmaD09PTAmJkE9PT0wJiYobj05OTk5LHM9MTIsbz0zMSxyPTI0KTtsZXQgZDtyZXR1cm4hbShlKSYmQSE9PTA/KGQ9KEEqLjAxKS50b1N0cmluZygpLnJlcGxhY2UoIi4iLCIiKSxgJHtuLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwiMCIpfS0ke3MudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7by50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1UJHtyLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2EudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7aC50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0uJHtkfVpgKTohbShlKXx8ZT09PTA/YCR7bi50b1N0cmluZygpLnBhZFN0YXJ0KDQsIjAiKX0tJHtzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS0ke28udG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9VCR7ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHthLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2gudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9WmA6KGQ9KEEqLjAxKS50b0ZpeGVkKGUpLnJlcGxhY2UoIi4iLCIiKS5zbGljZSgwLGUpLGAke24udG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9LSR7cy50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHtvLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVQke3IudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7YS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHtoLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS4ke2R9WmApfTttZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUuZGF5TnVtYmVyPXQuZGF5TnVtYmVyLGUuc2Vjb25kc09mRGF5PXQuc2Vjb25kc09mRGF5LGUpOm5ldyBtZSh0LmRheU51bWJlcix0LnNlY29uZHNPZkRheSxFaS5UQUkpfTttZS5jb21wYXJlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO2xldCBpPXQuZGF5TnVtYmVyLWUuZGF5TnVtYmVyO3JldHVybiBpIT09MD9pOnQuc2Vjb25kc09mRGF5LWUuc2Vjb25kc09mRGF5fTttZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQuZGF5TnVtYmVyPT09ZS5kYXlOdW1iZXImJnQuc2Vjb25kc09mRGF5PT09ZS5zZWNvbmRzT2ZEYXl9O21lLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnMobWUuc2Vjb25kc0RpZmZlcmVuY2UodCxlKSk8PWl9O21lLnRvdGFsRGF5cz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC5kYXlOdW1iZXIrdC5zZWNvbmRzT2ZEYXkvRm4uU0VDT05EU19QRVJfREFZfTttZS5zZWNvbmRzRGlmZmVyZW5jZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJsZWZ0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyaWdodCBpcyByZXF1aXJlZC4iKTtyZXR1cm4odC5kYXlOdW1iZXItZS5kYXlOdW1iZXIpKkZuLlNFQ09ORFNfUEVSX0RBWSsodC5zZWNvbmRzT2ZEYXktZS5zZWNvbmRzT2ZEYXkpfTttZS5kYXlzRGlmZmVyZW5jZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJsZWZ0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyaWdodCBpcyByZXF1aXJlZC4iKTtsZXQgaT10LmRheU51bWJlci1lLmRheU51bWJlcixuPSh0LnNlY29uZHNPZkRheS1lLnNlY29uZHNPZkRheSkvRm4uU0VDT05EU19QRVJfREFZO3JldHVybiBpK259O21lLmNvbXB1dGVUYWlNaW51c1V0Yz1mdW5jdGlvbih0KXtabS5qdWxpYW5EYXRlPXQ7bGV0IGU9bWUubGVhcFNlY29uZHMsaT1HbyhlLFptLGMwKTtyZXR1cm4gaTwwJiYoaT1+aSwtLWksaTwwJiYoaT0wKSksZVtpXS5vZmZzZXR9O21lLmFkZFNlY29uZHM9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzZWNvbmRzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHNjKHQuZGF5TnVtYmVyLHQuc2Vjb25kc09mRGF5K2UsaSl9O21lLmFkZE1pbnV0ZXM9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJtaW51dGVzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5zZWNvbmRzT2ZEYXkrZSpGbi5TRUNPTkRTX1BFUl9NSU5VVEU7cmV0dXJuIHNjKHQuZGF5TnVtYmVyLG4saSl9O21lLmFkZEhvdXJzPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiaG91cnMgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbj10LnNlY29uZHNPZkRheStlKkZuLlNFQ09ORFNfUEVSX0hPVVI7cmV0dXJuIHNjKHQuZGF5TnVtYmVyLG4saSl9O21lLmFkZERheXM9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJkYXlzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5kYXlOdW1iZXIrZTtyZXR1cm4gc2Mobix0LnNlY29uZHNPZkRheSxpKX07bWUubGVzc1RoYW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gbWUuY29tcGFyZSh0LGUpPDB9O21lLmxlc3NUaGFuT3JFcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbWUuY29tcGFyZSh0LGUpPD0wfTttZS5ncmVhdGVyVGhhbj1mdW5jdGlvbih0LGUpe3JldHVybiBtZS5jb21wYXJlKHQsZSk+MH07bWUuZ3JlYXRlclRoYW5PckVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiBtZS5jb21wYXJlKHQsZSk+PTB9O21lLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbWUuY2xvbmUodGhpcyx0KX07bWUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbWUuZXF1YWxzKHRoaXMsdCl9O21lLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG1lLmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTttZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbWUudG9Jc284NjAxKHRoaXMpfTttZS5sZWFwU2Vjb25kcz1bbmV3IHppKG5ldyBtZSgyNDQxMzE3LDQzMjEwLEVpLlRBSSksMTApLG5ldyB6aShuZXcgbWUoMjQ0MTQ5OSw0MzIxMSxFaS5UQUkpLDExKSxuZXcgemkobmV3IG1lKDI0NDE2ODMsNDMyMTIsRWkuVEFJKSwxMiksbmV3IHppKG5ldyBtZSgyNDQyMDQ4LDQzMjEzLEVpLlRBSSksMTMpLG5ldyB6aShuZXcgbWUoMjQ0MjQxMyw0MzIxNCxFaS5UQUkpLDE0KSxuZXcgemkobmV3IG1lKDI0NDI3NzgsNDMyMTUsRWkuVEFJKSwxNSksbmV3IHppKG5ldyBtZSgyNDQzMTQ0LDQzMjE2LEVpLlRBSSksMTYpLG5ldyB6aShuZXcgbWUoMjQ0MzUwOSw0MzIxNyxFaS5UQUkpLDE3KSxuZXcgemkobmV3IG1lKDI0NDM4NzQsNDMyMTgsRWkuVEFJKSwxOCksbmV3IHppKG5ldyBtZSgyNDQ0MjM5LDQzMjE5LEVpLlRBSSksMTkpLG5ldyB6aShuZXcgbWUoMjQ0NDc4Niw0MzIyMCxFaS5UQUkpLDIwKSxuZXcgemkobmV3IG1lKDI0NDUxNTEsNDMyMjEsRWkuVEFJKSwyMSksbmV3IHppKG5ldyBtZSgyNDQ1NTE2LDQzMjIyLEVpLlRBSSksMjIpLG5ldyB6aShuZXcgbWUoMjQ0NjI0Nyw0MzIyMyxFaS5UQUkpLDIzKSxuZXcgemkobmV3IG1lKDI0NDcxNjEsNDMyMjQsRWkuVEFJKSwyNCksbmV3IHppKG5ldyBtZSgyNDQ3ODkyLDQzMjI1LEVpLlRBSSksMjUpLG5ldyB6aShuZXcgbWUoMjQ0ODI1Nyw0MzIyNixFaS5UQUkpLDI2KSxuZXcgemkobmV3IG1lKDI0NDg4MDQsNDMyMjcsRWkuVEFJKSwyNyksbmV3IHppKG5ldyBtZSgyNDQ5MTY5LDQzMjI4LEVpLlRBSSksMjgpLG5ldyB6aShuZXcgbWUoMjQ0OTUzNCw0MzIyOSxFaS5UQUkpLDI5KSxuZXcgemkobmV3IG1lKDI0NTAwODMsNDMyMzAsRWkuVEFJKSwzMCksbmV3IHppKG5ldyBtZSgyNDUwNjMwLDQzMjMxLEVpLlRBSSksMzEpLG5ldyB6aShuZXcgbWUoMjQ1MTE3OSw0MzIzMixFaS5UQUkpLDMyKSxuZXcgemkobmV3IG1lKDI0NTM3MzYsNDMyMzMsRWkuVEFJKSwzMyksbmV3IHppKG5ldyBtZSgyNDU0ODMyLDQzMjM0LEVpLlRBSSksMzQpLG5ldyB6aShuZXcgbWUoMjQ1NjEwOSw0MzIzNSxFaS5UQUkpLDM1KSxuZXcgemkobmV3IG1lKDI0NTcyMDQsNDMyMzYsRWkuVEFJKSwzNiksbmV3IHppKG5ldyBtZSgyNDU3NzU0LDQzMjM3LEVpLlRBSSksMzcpXTtaZT1tZX0pO3ZhciBfMj10cygoSW0scG0pPT57LyohIGh0dHBzOi8vbXRocy5iZS9wdW55Y29kZSB2MS40LjAgYnkgQG1hdGhpYXMgKi8oZnVuY3Rpb24odCl7dmFyIGU9dHlwZW9mIEltPT0ib2JqZWN0IiYmSW0mJiFJbS5ub2RlVHlwZSYmSW0saT10eXBlb2YgcG09PSJvYmplY3QiJiZwbSYmIXBtLm5vZGVUeXBlJiZwbSxuPXR5cGVvZiBnbG9iYWw9PSJvYmplY3QiJiZnbG9iYWw7KG4uZ2xvYmFsPT09bnx8bi53aW5kb3c9PT1ufHxuLnNlbGY9PT1uKSYmKHQ9bik7dmFyIHMsbz0yMTQ3NDgzNjQ3LHI9MzYsYT0xLGg9MjYsQT0zOCxkPTcwMCxmPTcyLEU9MTI4LF89Ii0iLFI9L154bi0tLyxJPS9bXlx4MjAtXHg3RV0vLEM9L1tceDJFXHUzMDAyXHVGRjBFXHVGRjYxXS9nLE49e292ZXJmbG93OiJPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2VzcyIsIm5vdC1iYXNpYyI6IklsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCkiLCJpbnZhbGlkLWlucHV0IjoiSW52YWxpZCBpbnB1dCJ9LFQ9ci1hLGI9TWF0aC5mbG9vcixGPVN0cmluZy5mcm9tQ2hhckNvZGUsQjtmdW5jdGlvbiBVKGope3Rocm93IG5ldyBSYW5nZUVycm9yKE5bal0pfWZ1bmN0aW9uIFEoaixYKXtmb3IodmFyIHR0PWoubGVuZ3RoLEc9W107dHQtLTspR1t0dF09WChqW3R0XSk7cmV0dXJuIEd9ZnVuY3Rpb24gTShqLFgpe3ZhciB0dD1qLnNwbGl0KCJAIiksRz0iIjt0dC5sZW5ndGg+MSYmKEc9dHRbMF0rIkAiLGo9dHRbMV0pLGo9ai5yZXBsYWNlKEMsIi4iKTt2YXIgSXQ9ai5zcGxpdCgiLiIpLGd0PVEoSXQsWCkuam9pbigiLiIpO3JldHVybiBHK2d0fWZ1bmN0aW9uIGsoail7Zm9yKHZhciBYPVtdLHR0PTAsRz1qLmxlbmd0aCxJdCxndDt0dDxHOylJdD1qLmNoYXJDb2RlQXQodHQrKyksSXQ+PTU1Mjk2JiZJdDw9NTYzMTkmJnR0PEc/KGd0PWouY2hhckNvZGVBdCh0dCsrKSwoZ3QmNjQ1MTIpPT01NjMyMD9YLnB1c2goKChJdCYxMDIzKTw8MTApKyhndCYxMDIzKSs2NTUzNik6KFgucHVzaChJdCksdHQtLSkpOlgucHVzaChJdCk7cmV0dXJuIFh9ZnVuY3Rpb24geShqKXtyZXR1cm4gUShqLGZ1bmN0aW9uKFgpe3ZhciB0dD0iIjtyZXR1cm4gWD42NTUzNSYmKFgtPTY1NTM2LHR0Kz1GKFg+Pj4xMCYxMDIzfDU1Mjk2KSxYPTU2MzIwfFgmMTAyMyksdHQrPUYoWCksdHR9KS5qb2luKCIiKX1mdW5jdGlvbiBjKGope3JldHVybiBqLTQ4PDEwP2otMjI6ai02NTwyNj9qLTY1OmotOTc8MjY/ai05NzpyfWZ1bmN0aW9uIGcoaixYKXtyZXR1cm4gaisyMis3NSooajwyNiktKChYIT0wKTw8NSl9ZnVuY3Rpb24gTyhqLFgsdHQpe3ZhciBHPTA7Zm9yKGo9dHQ/YihqL2QpOmo+PjEsais9YihqL1gpO2o+VCpoPj4xO0crPXIpaj1iKGovVCk7cmV0dXJuIGIoRysoVCsxKSpqLyhqK0EpKX1mdW5jdGlvbiBEKGope3ZhciBYPVtdLHR0PWoubGVuZ3RoLEcsSXQ9MCxndD1FLFl0PWYsVXQsQ3QsenQsa3QsSnQsV3QsYnQsZWUsY2U7Zm9yKFV0PWoubGFzdEluZGV4T2YoXyksVXQ8MCYmKFV0PTApLEN0PTA7Q3Q8VXQ7KytDdClqLmNoYXJDb2RlQXQoQ3QpPj0xMjgmJlUoIm5vdC1iYXNpYyIpLFgucHVzaChqLmNoYXJDb2RlQXQoQ3QpKTtmb3IoenQ9VXQ+MD9VdCsxOjA7enQ8dHQ7KXtmb3Ioa3Q9SXQsSnQ9MSxXdD1yO3p0Pj10dCYmVSgiaW52YWxpZC1pbnB1dCIpLGJ0PWMoai5jaGFyQ29kZUF0KHp0KyspKSwoYnQ+PXJ8fGJ0PmIoKG8tSXQpL0p0KSkmJlUoIm92ZXJmbG93IiksSXQrPWJ0Kkp0LGVlPVd0PD1ZdD9hOld0Pj1ZdCtoP2g6V3QtWXQsIShidDxlZSk7V3QrPXIpY2U9ci1lZSxKdD5iKG8vY2UpJiZVKCJvdmVyZmxvdyIpLEp0Kj1jZTtHPVgubGVuZ3RoKzEsWXQ9TyhJdC1rdCxHLGt0PT0wKSxiKEl0L0cpPm8tZ3QmJlUoIm92ZXJmbG93IiksZ3QrPWIoSXQvRyksSXQlPUcsWC5zcGxpY2UoSXQrKywwLGd0KX1yZXR1cm4geShYKX1mdW5jdGlvbiB3KGope3ZhciBYLHR0LEcsSXQsZ3QsWXQsVXQsQ3QsenQsa3QsSnQsV3Q9W10sYnQsZWUsY2UsamU7Zm9yKGo9ayhqKSxidD1qLmxlbmd0aCxYPUUsdHQ9MCxndD1mLFl0PTA7WXQ8YnQ7KytZdClKdD1qW1l0XSxKdDwxMjgmJld0LnB1c2goRihKdCkpO2ZvcihHPUl0PVd0Lmxlbmd0aCxJdCYmV3QucHVzaChfKTtHPGJ0Oyl7Zm9yKFV0PW8sWXQ9MDtZdDxidDsrK1l0KUp0PWpbWXRdLEp0Pj1YJiZKdDxVdCYmKFV0PUp0KTtmb3IoZWU9RysxLFV0LVg+Yigoby10dCkvZWUpJiZVKCJvdmVyZmxvdyIpLHR0Kz0oVXQtWCkqZWUsWD1VdCxZdD0wO1l0PGJ0OysrWXQpaWYoSnQ9altZdF0sSnQ8WCYmKyt0dD5vJiZVKCJvdmVyZmxvdyIpLEp0PT1YKXtmb3IoQ3Q9dHQsenQ9cjtrdD16dDw9Z3Q/YTp6dD49Z3QraD9oOnp0LWd0LCEoQ3Q8a3QpO3p0Kz1yKWplPUN0LWt0LGNlPXIta3QsV3QucHVzaChGKGcoa3QramUlY2UsMCkpKSxDdD1iKGplL2NlKTtXdC5wdXNoKEYoZyhDdCwwKSkpLGd0PU8odHQsZWUsRz09SXQpLHR0PTAsKytHfSsrdHQsKytYfXJldHVybiBXdC5qb2luKCIiKX1mdW5jdGlvbiB4KGope3JldHVybiBNKGosZnVuY3Rpb24oWCl7cmV0dXJuIFIudGVzdChYKT9EKFguc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6WH0pfWZ1bmN0aW9uIEgoail7cmV0dXJuIE0oaixmdW5jdGlvbihYKXtyZXR1cm4gSS50ZXN0KFgpPyJ4bi0tIit3KFgpOlh9KX1pZihzPXt2ZXJzaW9uOiIxLjMuMiIsdWNzMjp7ZGVjb2RlOmssZW5jb2RlOnl9LGRlY29kZTpELGVuY29kZTp3LHRvQVNDSUk6SCx0b1VuaWNvZGU6eH0sdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmdHlwZW9mIGRlZmluZS5hbWQ9PSJvYmplY3QiJiZkZWZpbmUuYW1kKWRlZmluZSgicHVueWNvZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KTtlbHNlIGlmKGUmJmkpaWYocG0uZXhwb3J0cz09ZSlpLmV4cG9ydHM9cztlbHNlIGZvcihCIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShCKSYmKGVbQl09c1tCXSk7ZWxzZSB0LnB1bnljb2RlPXN9KShJbSl9KTt2YXIgWjI9dHMoKFIyLGZaKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIElQdjYgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIGZaPT0ib2JqZWN0IiYmZlouZXhwb3J0cz9mWi5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LklQdjY9ZSh0KX0pKFIyLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10JiZ0LklQdjY7ZnVuY3Rpb24gaShzKXt2YXIgbz1zLnRvTG93ZXJDYXNlKCkscj1vLnNwbGl0KCI6IiksYT1yLmxlbmd0aCxoPTg7clswXT09PSIiJiZyWzFdPT09IiImJnJbMl09PT0iIj8oci5zaGlmdCgpLHIuc2hpZnQoKSk6clswXT09PSIiJiZyWzFdPT09IiI/ci5zaGlmdCgpOnJbYS0xXT09PSIiJiZyW2EtMl09PT0iIiYmci5wb3AoKSxhPXIubGVuZ3RoLHJbYS0xXS5pbmRleE9mKCIuIikhPT0tMSYmKGg9Nyk7dmFyIEE7Zm9yKEE9MDtBPGEmJnJbQV0hPT0iIjtBKyspO2lmKEE8aClmb3Ioci5zcGxpY2UoQSwxLCIwMDAwIik7ci5sZW5ndGg8aDspci5zcGxpY2UoQSwwLCIwMDAwIik7Zm9yKHZhciBkLGY9MDtmPGg7ZisrKXtkPXJbZl0uc3BsaXQoIiIpO2Zvcih2YXIgRT0wO0U8MyYmKGRbMF09PT0iMCImJmQubGVuZ3RoPjEpO0UrKylkLnNwbGljZSgwLDEpO3JbZl09ZC5qb2luKCIiKX12YXIgXz0tMSxSPTAsST0wLEM9LTEsTj0hMTtmb3IoZj0wO2Y8aDtmKyspTj9yW2ZdPT09IjAiP0krPTE6KE49ITEsST5SJiYoXz1DLFI9SSkpOnJbZl09PT0iMCImJihOPSEwLEM9ZixJPTEpO0k+UiYmKF89QyxSPUkpLFI+MSYmci5zcGxpY2UoXyxSLCIiKSxhPXIubGVuZ3RoO3ZhciBUPSIiO2ZvcihyWzBdPT09IiImJihUPSI6IiksZj0wO2Y8YSYmKFQrPXJbZl0sZiE9PWEtMSk7ZisrKVQrPSI6IjtyZXR1cm4gclthLTFdPT09IiImJihUKz0iOiIpLFR9ZnVuY3Rpb24gbigpe3JldHVybiB0LklQdjY9PT10aGlzJiYodC5JUHY2PWUpLHRoaXN9cmV0dXJue2Jlc3Q6aSxub0NvbmZsaWN0Om59fSl9KTt2YXIgcDI9dHMoKEkyLEVaKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIFNlY29uZCBMZXZlbCBEb21haW4gKFNMRCkgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIEVaPT0ib2JqZWN0IiYmRVouZXhwb3J0cz9FWi5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LlNlY29uZExldmVsRG9tYWlucz1lKHQpfSkoSTIsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPXQmJnQuU2Vjb25kTGV2ZWxEb21haW5zLGk9e2xpc3Q6e2FjOiIgY29tIGdvdiBtaWwgbmV0IG9yZyAiLGFlOiIgYWMgY28gZ292IG1pbCBuYW1lIG5ldCBvcmcgcHJvIHNjaCAiLGFmOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGFsOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixhbzoiIGNvIGVkIGd2IGl0IG9nIHBiICIsYXI6IiBjb20gZWR1IGdvYiBnb3YgaW50IG1pbCBuZXQgb3JnIHR1ciAiLGF0OiIgYWMgY28gZ3Ygb3IgIixhdToiIGFzbiBjb20gY3Npcm8gZWR1IGdvdiBpZCBuZXQgb3JnICIsYmE6IiBjbyBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyBycyB1bmJpIHVubW8gdW5zYSB1bnR6IHVuemUgIixiYjoiIGJpeiBjbyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgc3RvcmUgdHYgIixiaDoiIGJpeiBjYyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixibjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixibzoiIGNvbSBlZHUgZ29iIGdvdiBpbnQgbWlsIG5ldCBvcmcgdHYgIixicjoiIGFkbSBhZHYgYWdyIGFtIGFycSBhcnQgYXRvIGIgYmlvIGJsb2cgYm1kIGNpbSBjbmcgY250IGNvbSBjb29wIGVjbiBlZHUgZW5nIGVzcCBldGMgZXRpIGZhciBmbG9nIGZtIGZuZCBmb3QgZnN0IGcxMiBnZ2YgZ292IGltYiBpbmQgaW5mIGpvciBqdXMgbGVsIG1hdCBtZWQgbWlsIG11cyBuZXQgbm9tIG5vdCBudHIgb2RvIG9yZyBwcGcgcHJvIHBzYyBwc2kgcXNsIHJlYyBzbGcgc3J2IHRtcCB0cmQgdHVyIHR2IHZldCB2bG9nIHdpa2kgemxnICIsYnM6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsYno6IiBkdSBldCBvbSBvdiByZyAiLGNhOiIgYWIgYmMgbWIgbmIgbmYgbmwgbnMgbnQgbnUgb24gcGUgcWMgc2sgeWsgIixjazoiIGJpeiBjbyBlZHUgZ2VuIGdvdiBpbmZvIG5ldCBvcmcgIixjbjoiIGFjIGFoIGJqIGNvbSBjcSBlZHUgZmogZ2QgZ292IGdzIGd4IGd6IGhhIGhiIGhlIGhpIGhsIGhuIGpsIGpzIGp4IGxuIG1pbCBuZXQgbm0gbnggb3JnIHFoIHNjIHNkIHNoIHNuIHN4IHRqIHR3IHhqIHh6IHluIHpqICIsY286IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5vbSBvcmcgIixjcjoiIGFjIGMgY28gZWQgZmkgZ28gb3Igc2EgIixjeToiIGFjIGJpeiBjb20gZWtsb2dlcyBnb3YgbHRkIG5hbWUgbmV0IG9yZyBwYXJsaWFtZW50IHByZXNzIHBybyB0bSAiLGRvOiIgYXJ0IGNvbSBlZHUgZ29iIGdvdiBtaWwgbmV0IG9yZyBzbGQgd2ViICIsZHo6IiBhcnQgYXNzbyBjb20gZWR1IGdvdiBuZXQgb3JnIHBvbCAiLGVjOiIgY29tIGVkdSBmaW4gZ292IGluZm8gbWVkIG1pbCBuZXQgb3JnIHBybyAiLGVnOiIgY29tIGVkdSBldW4gZ292IG1pbCBuYW1lIG5ldCBvcmcgc2NpICIsZXI6IiBjb20gZWR1IGdvdiBpbmQgbWlsIG5ldCBvcmcgcm9jaGVzdCB3ICIsZXM6IiBjb20gZWR1IGdvYiBub20gb3JnICIsZXQ6IiBiaXogY29tIGVkdSBnb3YgaW5mbyBuYW1lIG5ldCBvcmcgIixmajoiIGFjIGJpeiBjb20gaW5mbyBtaWwgbmFtZSBuZXQgb3JnIHBybyAiLGZrOiIgYWMgY28gZ292IG5ldCBub20gb3JnICIsZnI6IiBhc3NvIGNvbSBmIGdvdXYgbm9tIHByZCBwcmVzc2UgdG0gIixnZzoiIGNvIG5ldCBvcmcgIixnaDoiIGNvbSBlZHUgZ292IG1pbCBvcmcgIixnbjoiIGFjIGNvbSBnb3YgbmV0IG9yZyAiLGdyOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixndDoiIGNvbSBlZHUgZ29iIGluZCBtaWwgbmV0IG9yZyAiLGd1OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGhrOiIgY29tIGVkdSBnb3YgaWR2IG5ldCBvcmcgIixodToiIDIwMDAgYWdyYXIgYm9sdCBjYXNpbm8gY2l0eSBjbyBlcm90aWNhIGVyb3Rpa2EgZmlsbSBmb3J1bSBnYW1lcyBob3RlbCBpbmZvIGluZ2F0bGFuIGpvZ2FzeiBrb255dmVsbyBsYWthcyBtZWRpYSBuZXdzIG9yZyBwcml2IHJla2xhbSBzZXggc2hvcCBzcG9ydCBzdWxpIHN6ZXggdG0gdG96c2RlIHV0YXphcyB2aWRlbyAiLGlkOiIgYWMgY28gZ28gbWlsIG5ldCBvciBzY2ggd2ViICIsaWw6IiBhYyBjbyBnb3YgaWRmIGsxMiBtdW5pIG5ldCBvcmcgIixpbjoiIGFjIGNvIGVkdSBlcm5ldCBmaXJtIGdlbiBnb3YgaSBpbmQgbWlsIG5ldCBuaWMgb3JnIHJlcyAiLGlxOiIgY29tIGVkdSBnb3YgaSBtaWwgbmV0IG9yZyAiLGlyOiIgYWMgY28gZG5zc2VjIGdvdiBpIGlkIG5ldCBvcmcgc2NoICIsaXQ6IiBlZHUgZ292ICIsamU6IiBjbyBuZXQgb3JnICIsam86IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLGpwOiIgYWMgYWQgY28gZWQgZ28gZ3IgbGcgbmUgb3IgIixrZToiIGFjIGNvIGdvIGluZm8gbWUgbW9iaSBuZSBvciBzYyAiLGtoOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgcGVyICIsa2k6IiBiaXogY29tIGRlIGVkdSBnb3YgaW5mbyBtb2IgbmV0IG9yZyB0ZWwgIixrbToiIGFzc28gY29tIGNvb3AgZWR1IGdvdXYgayBtZWRlY2luIG1pbCBub20gbm90YWlyZXMgcGhhcm1hY2llbnMgcHJlc3NlIHRtIHZldGVyaW5haXJlICIsa246IiBlZHUgZ292IG5ldCBvcmcgIixrcjoiIGFjIGJ1c2FuIGNodW5nYnVrIGNodW5nbmFtIGNvIGRhZWd1IGRhZWplb24gZXMgZ2FuZ3dvbiBnbyBnd2FuZ2p1IGd5ZW9uZ2J1ayBneWVvbmdnaSBneWVvbmduYW0gaHMgaW5jaGVvbiBqZWp1IGplb25idWsgamVvbm5hbSBrIGtnIG1pbCBtcyBuZSBvciBwZSByZSBzYyBzZW91bCB1bHNhbiAiLGt3OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt5OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt6OiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixsYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsazoiIGFzc24gY29tIGVkdSBnb3YgZ3JwIGhvdGVsIGludCBsdGQgbmV0IG5nbyBvcmcgc2NoIHNvYyB3ZWIgIixscjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsdjoiIGFzbiBjb20gY29uZiBlZHUgZ292IGlkIG1pbCBuZXQgb3JnICIsbHk6IiBjb20gZWR1IGdvdiBpZCBtZWQgbmV0IG9yZyBwbGMgc2NoICIsbWE6IiBhYyBjbyBnb3YgbSBuZXQgb3JnIHByZXNzICIsbWM6IiBhc3NvIHRtICIsbWU6IiBhYyBjbyBlZHUgZ292IGl0cyBuZXQgb3JnIHByaXYgIixtZzoiIGNvbSBlZHUgZ292IG1pbCBub20gb3JnIHByZCB0bSAiLG1rOiIgY29tIGVkdSBnb3YgaW5mIG5hbWUgbmV0IG9yZyBwcm8gIixtbDoiIGNvbSBlZHUgZ292IG5ldCBvcmcgcHJlc3NlICIsbW46IiBlZHUgZ292IG9yZyAiLG1vOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG10OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG12OiIgYWVybyBiaXogY29tIGNvb3AgZWR1IGdvdiBpbmZvIGludCBtaWwgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gIixtdzoiIGFjIGNvIGNvbSBjb29wIGVkdSBnb3YgaW50IG11c2V1bSBuZXQgb3JnICIsbXg6IiBjb20gZWR1IGdvYiBuZXQgb3JnICIsbXk6IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLG5mOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5ldCBvdGhlciBwZXIgcmVjIHN0b3JlIHdlYiAiLG5nOiIgYml6IGNvbSBlZHUgZ292IG1pbCBtb2JpIG5hbWUgbmV0IG9yZyBzY2ggIixuaToiIGFjIGNvIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyAiLG5wOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixucjoiIGJpeiBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixvbToiIGFjIGJpeiBjbyBjb20gZWR1IGdvdiBtZWQgbWlsIG11c2V1bSBuZXQgb3JnIHBybyBzY2ggIixwZToiIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyBzbGQgIixwaDoiIGNvbSBlZHUgZ292IGkgbWlsIG5ldCBuZ28gb3JnICIscGs6IiBiaXogY29tIGVkdSBmYW0gZ29iIGdvayBnb24gZ29wIGdvcyBnb3YgbmV0IG9yZyB3ZWIgIixwbDoiIGFydCBiaWFseXN0b2sgYml6IGNvbSBlZHUgZ2RhIGdkYW5zayBnb3J6b3cgZ292IGluZm8ga2F0b3dpY2Uga3Jha293IGxvZHogbHVibGluIG1pbCBuZXQgbmdvIG9sc3p0eW4gb3JnIHBvem5hbiBwd3IgcmFkb20gc2x1cHNrIHN6Y3plY2luIHRvcnVuIHdhcnN6YXdhIHdhdyB3cm9jIHdyb2NsYXcgemdvcmEgIixwcjoiIGFjIGJpeiBjb20gZWR1IGVzdCBnb3YgaW5mbyBpc2xhIG5hbWUgbmV0IG9yZyBwcm8gcHJvZiAiLHBzOiIgY29tIGVkdSBnb3YgbmV0IG9yZyBwbG8gc2VjICIscHc6IiBiZWxhdSBjbyBlZCBnbyBuZSBvciAiLHJvOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5vbSBudCBvcmcgcmVjIHN0b3JlIHRtIHd3dyAiLHJzOiIgYWMgY28gZWR1IGdvdiBpbiBvcmcgIixzYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzYzoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzaDoiIGNvIGNvbSBlZHUgZ292IG5ldCBub20gb3JnICIsc2w6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsc3Q6IiBjbyBjb20gY29uc3VsYWRvIGVkdSBlbWJhaXhhZGEgZ292IG1pbCBuZXQgb3JnIHByaW5jaXBlIHNhb3RvbWUgc3RvcmUgIixzdjoiIGNvbSBlZHUgZ29iIG9yZyByZWQgIixzejoiIGFjIGNvIG9yZyAiLHRyOiIgYXYgYmJzIGJlbCBiaXogY29tIGRyIGVkdSBnZW4gZ292IGluZm8gazEyIG5hbWUgbmV0IG9yZyBwb2wgdGVsIHRzayB0diB3ZWIgIix0dDoiIGFlcm8gYml6IGNhdCBjbyBjb20gY29vcCBlZHUgZ292IGluZm8gaW50IGpvYnMgbWlsIG1vYmkgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gdGVsIHRyYXZlbCAiLHR3OiIgY2x1YiBjb20gZWJpeiBlZHUgZ2FtZSBnb3YgaWR2IG1pbCBuZXQgb3JnICIsbXU6IiBhYyBjbyBjb20gZ292IG5ldCBvciBvcmcgIixtejoiIGFjIGNvIGVkdSBnb3Ygb3JnICIsbmE6IiBjbyBjb20gIixuejoiIGFjIGNvIGNyaSBnZWVrIGdlbiBnb3Z0IGhlYWx0aCBpd2kgbWFvcmkgbWlsIG5ldCBvcmcgcGFybGlhbWVudCBzY2hvb2wgIixwYToiIGFibyBhYyBjb20gZWR1IGdvYiBpbmcgbWVkIG5ldCBub20gb3JnIHNsZCAiLHB0OiIgY29tIGVkdSBnb3YgaW50IG5ldCBub21lIG9yZyBwdWJsICIscHk6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyAiLHFhOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixyZToiIGFzc28gY29tIG5vbSAiLHJ1OiIgYWMgYWR5Z2V5YSBhbHRhaSBhbXVyIGFya2hhbmdlbHNrIGFzdHJha2hhbiBiYXNoa2lyaWEgYmVsZ29yb2QgYmlyIGJyeWFuc2sgYnVyeWF0aWEgY2JnIGNoZWwgY2hlbHlhYmluc2sgY2hpdGEgY2h1a290a2EgY2h1dmFzaGlhIGNvbSBkYWdlc3RhbiBlLWJ1cmcgZWR1IGdvdiBncm96bnkgaW50IGlya3V0c2sgaXZhbm92byBpemhldnNrIGphciBqb3Noa2FyLW9sYSBrYWxteWtpYSBrYWx1Z2Ega2FtY2hhdGthIGthcmVsaWEga2F6YW4ga2NociBrZW1lcm92byBraGFiYXJvdnNrIGtoYWthc3NpYSBraHYga2lyb3Yga29lbmlnIGtvbWkga29zdHJvbWEga3Jhbm95YXJzayBrdWJhbiBrdXJnYW4ga3Vyc2sgbGlwZXRzayBtYWdhZGFuIG1hcmkgbWFyaS1lbCBtYXJpbmUgbWlsIG1vcmRvdmlhIG1vc3JlZyBtc2sgbXVybWFuc2sgbmFsY2hpayBuZXQgbm5vdiBub3Ygbm92b3NpYmlyc2sgbnNrIG9tc2sgb3JlbmJ1cmcgb3JnIG9yeW9sIHBlbnphIHBlcm0gcHAgcHNrb3YgcHR6IHJuZCByeWF6YW4gc2FraGFsaW4gc2FtYXJhIHNhcmF0b3Ygc2ltYmlyc2sgc21vbGVuc2sgc3BiIHN0YXZyb3BvbCBzdHYgc3VyZ3V0IHRhbWJvdiB0YXRhcnN0YW4gdG9tIHRvbXNrIHRzYXJpdHN5biB0c2sgdHVsYSB0dXZhIHR2ZXIgdHl1bWVuIHVkbSB1ZG11cnRpYSB1bGFuLXVkZSB2bGFkaWthdmtheiB2bGFkaW1pciB2bGFkaXZvc3RvayB2b2xnb2dyYWQgdm9sb2dkYSB2b3JvbmV6aCB2cm4gdnlhdGthIHlha3V0aWEgeWFtYWwgeWVrYXRlcmluYnVyZyB5dXpobm8tc2FraGFsaW5zayAiLHJ3OiIgYWMgY28gY29tIGVkdSBnb3V2IGdvdiBpbnQgbWlsIG5ldCAiLHNhOiIgY29tIGVkdSBnb3YgbWVkIG5ldCBvcmcgcHViIHNjaCAiLHNkOiIgY29tIGVkdSBnb3YgaW5mbyBtZWQgbmV0IG9yZyB0diAiLHNlOiIgYSBhYyBiIGJkIGMgZCBlIGYgZyBoIGkgayBsIG0gbiBvIG9yZyBwIHBhcnRpIHBwIHByZXNzIHIgcyB0IHRtIHUgdyB4IHkgeiAiLHNnOiIgY29tIGVkdSBnb3YgaWRuIG5ldCBvcmcgcGVyICIsc246IiBhcnQgY29tIGVkdSBnb3V2IG9yZyBwZXJzbyB1bml2ICIsc3k6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5ld3Mgb3JnICIsdGg6IiBhYyBjbyBnbyBpbiBtaSBuZXQgb3IgIix0ajoiIGFjIGJpeiBjbyBjb20gZWR1IGdvIGdvdiBpbmZvIGludCBtaWwgbmFtZSBuZXQgbmljIG9yZyB0ZXN0IHdlYiAiLHRuOiIgYWdyaW5ldCBjb20gZGVmZW5zZSBlZHVuZXQgZW5zIGZpbiBnb3YgaW5kIGluZm8gaW50bCBtaW5jb20gbmF0IG5ldCBvcmcgcGVyc28gcm5ydCBybnMgcm51IHRvdXJpc20gIix0ejoiIGFjIGNvIGdvIG5lIG9yICIsdWE6IiBiaXogY2hlcmthc3N5IGNoZXJuaWdvdiBjaGVybm92dHN5IGNrIGNuIGNvIGNvbSBjcmltZWEgY3YgZG4gZG5lcHJvcGV0cm92c2sgZG9uZXRzayBkcCBlZHUgZ292IGlmIGluIGl2YW5vLWZyYW5raXZzayBraCBraGFya292IGtoZXJzb24ga2htZWxuaXRza2l5IGtpZXYga2lyb3ZvZ3JhZCBrbSBrciBrcyBrdiBsZyBsdWdhbnNrIGx1dHNrIGx2aXYgbWUgbWsgbmV0IG5pa29sYWV2IG9kIG9kZXNzYSBvcmcgcGwgcG9sdGF2YSBwcCByb3ZubyBydiBzZWJhc3RvcG9sIHN1bXkgdGUgdGVybm9waWwgdXpoZ29yb2QgdmlubmljYSB2biB6YXBvcml6aHpoZSB6aGl0b21pciB6cCB6dCAiLHVnOiIgYWMgY28gZ28gbmUgb3Igb3JnIHNjICIsdWs6IiBhYyBibCBicml0aXNoLWxpYnJhcnkgY28gY3ltIGdvdiBnb3Z0IGljbmV0IGpldCBsZWEgbHRkIG1lIG1pbCBtb2QgbmF0aW9uYWwtbGlicmFyeS1zY290bGFuZCBuZWwgbmV0IG5ocyBuaWMgbmxzIG9yZyBvcmduIHBhcmxpYW1lbnQgcGxjIHBvbGljZSBzY2ggc2NvdCBzb2MgIix1czoiIGRuaSBmZWQgaXNhIGtpZHMgbnNuICIsdXk6IiBjb20gZWR1IGd1YiBtaWwgbmV0IG9yZyAiLHZlOiIgY28gY29tIGVkdSBnb2IgaW5mbyBtaWwgbmV0IG9yZyB3ZWIgIix2aToiIGNvIGNvbSBrMTIgbmV0IG9yZyAiLHZuOiIgYWMgYml6IGNvbSBlZHUgZ292IGhlYWx0aCBpbmZvIGludCBuYW1lIG5ldCBvcmcgcHJvICIseWU6IiBjbyBjb20gZ292IGx0ZCBtZSBuZXQgb3JnIHBsYyAiLHl1OiIgYWMgY28gZWR1IGdvdiBvcmcgIix6YToiIGFjIGFncmljIGFsdCBib3Vyc2UgY2l0eSBjbyBjeWJlcm5ldCBkYiBlZHUgZ292IGdyb25kYXIgaWFjY2VzcyBpbXQgaW5jYSBsYW5kZXNpZ24gbGF3IG1pbCBuZXQgbmdvIG5pcyBub20gb2xpdmV0dGkgb3JnIHBpeCBzY2hvb2wgdG0gd2ViICIsem06IiBhYyBjbyBjb20gZWR1IGdvdiBuZXQgb3JnIHNjaCAiLGNvbToiYXIgYnIgY24gZGUgZXUgZ2IgZ3IgaHUganBuIGtyIG5vIHFjIHJ1IHNhIHNlIHVrIHVzIHV5IHphICIsbmV0OiJnYiBqcCBzZSB1ayAiLG9yZzoiYWUiLGRlOiJjb20gIn0saGFzOmZ1bmN0aW9uKG4pe3ZhciBzPW4ubGFzdEluZGV4T2YoIi4iKTtpZihzPD0wfHxzPj1uLmxlbmd0aC0xKXJldHVybiExO3ZhciBvPW4ubGFzdEluZGV4T2YoIi4iLHMtMSk7aWYobzw9MHx8bz49cy0xKXJldHVybiExO3ZhciByPWkubGlzdFtuLnNsaWNlKHMrMSldO3JldHVybiByP3IuaW5kZXhPZigiICIrbi5zbGljZShvKzEscykrIiAiKT49MDohMX0saXM6ZnVuY3Rpb24obil7dmFyIHM9bi5sYXN0SW5kZXhPZigiLiIpO2lmKHM8PTB8fHM+PW4ubGVuZ3RoLTEpcmV0dXJuITE7dmFyIG89bi5sYXN0SW5kZXhPZigiLiIscy0xKTtpZihvPj0wKXJldHVybiExO3ZhciByPWkubGlzdFtuLnNsaWNlKHMrMSldO3JldHVybiByP3IuaW5kZXhPZigiICIrbi5zbGljZSgwLHMpKyIgIik+PTA6ITF9LGdldDpmdW5jdGlvbihuKXt2YXIgcz1uLmxhc3RJbmRleE9mKCIuIik7aWYoczw9MHx8cz49bi5sZW5ndGgtMSlyZXR1cm4gbnVsbDt2YXIgbz1uLmxhc3RJbmRleE9mKCIuIixzLTEpO2lmKG88PTB8fG8+PXMtMSlyZXR1cm4gbnVsbDt2YXIgcj1pLmxpc3Rbbi5zbGljZShzKzEpXTtyZXR1cm4hcnx8ci5pbmRleE9mKCIgIituLnNsaWNlKG8rMSxzKSsiICIpPDA/bnVsbDpuLnNsaWNlKG8rMSl9LG5vQ29uZmxpY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdC5TZWNvbmRMZXZlbERvbWFpbnM9PT10aGlzJiYodC5TZWNvbmRMZXZlbERvbWFpbnM9ZSksdGhpc319O3JldHVybiBpfSl9KTt2YXIgb2M9dHMoKHUyLF9aKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqCiAqIFZlcnNpb246IDEuMTkuMTEKICoKICogQXV0aG9yOiBSb2RuZXkgUmVobQogKiBXZWI6IGh0dHA6Ly9tZWRpYWxpemUuZ2l0aHViLmlvL1VSSS5qcy8KICoKICogTGljZW5zZWQgdW5kZXIKICogICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAqCiAqLyhmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0Ijt0eXBlb2YgX1o9PSJvYmplY3QiJiZfWi5leHBvcnRzP19aLmV4cG9ydHM9ZShfMigpLFoyKCkscDIoKSk6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoWyIuL3B1bnljb2RlIiwiLi9JUHY2IiwiLi9TZWNvbmRMZXZlbERvbWFpbnMiXSxlKTp0LlVSST1lKHQucHVueWNvZGUsdC5JUHY2LHQuU2Vjb25kTGV2ZWxEb21haW5zLHQpfSkodTIsZnVuY3Rpb24odCxlLGksbil7InVzZSBzdHJpY3QiO3ZhciBzPW4mJm4uVVJJO2Z1bmN0aW9uIG8oZyxPKXt2YXIgRD1hcmd1bWVudHMubGVuZ3RoPj0xLHc9YXJndW1lbnRzLmxlbmd0aD49MjtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4gRD93P25ldyBvKGcsTyk6bmV3IG8oZyk6bmV3IG87aWYoZz09PXZvaWQgMCl7aWYoRCl0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmRlZmluZWQgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQgZm9yIFVSSSIpO3R5cGVvZiBsb2NhdGlvbjwidSI/Zz1sb2NhdGlvbi5ocmVmKyIiOmc9IiJ9aWYoZz09PW51bGwmJkQpdGhyb3cgbmV3IFR5cGVFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgVVJJIik7cmV0dXJuIHRoaXMuaHJlZihnKSxPIT09dm9pZCAwP3RoaXMuYWJzb2x1dGVUbyhPKTp0aGlzfWZ1bmN0aW9uIHIoZyl7cmV0dXJuL15bMC05XSskLy50ZXN0KGcpfW8udmVyc2lvbj0iMS4xOS4xMSI7dmFyIGE9by5wcm90b3R5cGUsaD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEEoZyl7cmV0dXJuIGcucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9ZnVuY3Rpb24gZChnKXtyZXR1cm4gZz09PXZvaWQgMD8iVW5kZWZpbmVkIjpTdHJpbmcoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGcpKS5zbGljZSg4LC0xKX1mdW5jdGlvbiBmKGcpe3JldHVybiBkKGcpPT09IkFycmF5In1mdW5jdGlvbiBFKGcsTyl7dmFyIEQ9e30sdyx4O2lmKGQoTyk9PT0iUmVnRXhwIilEPW51bGw7ZWxzZSBpZihmKE8pKWZvcih3PTAseD1PLmxlbmd0aDt3PHg7dysrKURbT1t3XV09ITA7ZWxzZSBEW09dPSEwO2Zvcih3PTAseD1nLmxlbmd0aDt3PHg7dysrKXt2YXIgSD1EJiZEW2dbd11dIT09dm9pZCAwfHwhRCYmTy50ZXN0KGdbd10pO0gmJihnLnNwbGljZSh3LDEpLHgtLSx3LS0pfXJldHVybiBnfWZ1bmN0aW9uIF8oZyxPKXt2YXIgRCx3O2lmKGYoTykpe2ZvcihEPTAsdz1PLmxlbmd0aDtEPHc7RCsrKWlmKCFfKGcsT1tEXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIHg9ZChPKTtmb3IoRD0wLHc9Zy5sZW5ndGg7RDx3O0QrKylpZih4PT09IlJlZ0V4cCIpe2lmKHR5cGVvZiBnW0RdPT0ic3RyaW5nIiYmZ1tEXS5tYXRjaChPKSlyZXR1cm4hMH1lbHNlIGlmKGdbRF09PT1PKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFIoZyxPKXtpZighZihnKXx8IWYoTyl8fGcubGVuZ3RoIT09Ty5sZW5ndGgpcmV0dXJuITE7Zy5zb3J0KCksTy5zb3J0KCk7Zm9yKHZhciBEPTAsdz1nLmxlbmd0aDtEPHc7RCsrKWlmKGdbRF0hPT1PW0RdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEkoZyl7dmFyIE89L15cLyt8XC8rJC9nO3JldHVybiBnLnJlcGxhY2UoTywiIil9by5fcGFydHM9ZnVuY3Rpb24oKXtyZXR1cm57cHJvdG9jb2w6bnVsbCx1c2VybmFtZTpudWxsLHBhc3N3b3JkOm51bGwsaG9zdG5hbWU6bnVsbCx1cm46bnVsbCxwb3J0Om51bGwscGF0aDpudWxsLHF1ZXJ5Om51bGwsZnJhZ21lbnQ6bnVsbCxwcmV2ZW50SW52YWxpZEhvc3RuYW1lOm8ucHJldmVudEludmFsaWRIb3N0bmFtZSxkdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM6by5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsZXNjYXBlUXVlcnlTcGFjZTpvLmVzY2FwZVF1ZXJ5U3BhY2V9fSxvLnByZXZlbnRJbnZhbGlkSG9zdG5hbWU9ITEsby5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM9ITEsby5lc2NhcGVRdWVyeVNwYWNlPSEwLG8ucHJvdG9jb2xfZXhwcmVzc2lvbj0vXlthLXpdW2EtejAtOS4rLV0qJC9pLG8uaWRuX2V4cHJlc3Npb249L1teYS16MC05XC5fLV0vaSxvLnB1bnljb2RlX2V4cHJlc3Npb249Lyh4bi0tKS9pLG8uaXA0X2V4cHJlc3Npb249L15cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9JC8sby5pcDZfZXhwcmVzc2lvbj0vXlxzKigoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKShcLigyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpKSglLispP1xzKiQvLG8uZmluZF91cmlfZXhwcmVzc2lvbj0vXGIoKD86W2Etel1bXHctXSs6KD86XC97MSwzfXxbYS16MC05JV0pfHd3d1xkezAsM31bLl18W2EtejAtOS5cLV0rWy5dW2Etel17Miw0fVwvKSg/OlteXHMoKTw+XSt8XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKSkrKD86XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKXxbXlxzYCEoKVxbXF17fTs6JyIuLDw+P8KrwrvigJzigJ3igJjigJldKSkvaWcsby5maW5kVXJpPXtzdGFydDovXGIoPzooW2Etel1bYS16MC05ListXSo6XC9cLyl8d3d3XC4pL2dpLGVuZDovW1xzXHJcbl18JC8sdHJpbTovW2AhKClcW1xde307OiciLiw8Pj/Cq8K74oCc4oCd4oCe4oCY4oCZXSskLyxwYXJlbnM6LyhcKFteXCldKlwpfFxbW15cXV0qXF18XHtbXn1dKlx9fDxbXj5dKj4pL2d9LG8ubGVhZGluZ193aGl0ZXNwYWNlX2V4cHJlc3Npb249L15bXHgwMC1ceDIwXHUwMGEwXHUxNjgwXHUyMDAwLVx1MjAwYVx1MjAyOFx1MjAyOVx1MjAyZlx1MjA1Zlx1MzAwMFx1ZmVmZl0rLyxvLmFzY2lpX3RhYl93aGl0ZXNwYWNlPS9bXHUwMDA5XHUwMDBBXHUwMDBEXSsvZyxvLmRlZmF1bHRQb3J0cz17aHR0cDoiODAiLGh0dHBzOiI0NDMiLGZ0cDoiMjEiLGdvcGhlcjoiNzAiLHdzOiI4MCIsd3NzOiI0NDMifSxvLmhvc3RQcm90b2NvbHM9WyJodHRwIiwiaHR0cHMiXSxvLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycz0vW15hLXpBLVowLTlcLlwtOl9dLyxvLmRvbUF0dHJpYnV0ZXM9e2E6ImhyZWYiLGJsb2NrcXVvdGU6ImNpdGUiLGxpbms6ImhyZWYiLGJhc2U6ImhyZWYiLHNjcmlwdDoic3JjIixmb3JtOiJhY3Rpb24iLGltZzoic3JjIixhcmVhOiJocmVmIixpZnJhbWU6InNyYyIsZW1iZWQ6InNyYyIsc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLGlucHV0OiJzcmMiLGF1ZGlvOiJzcmMiLHZpZGVvOiJzcmMifSxvLmdldERvbUF0dHJpYnV0ZT1mdW5jdGlvbihnKXtpZighKCFnfHwhZy5ub2RlTmFtZSkpe3ZhciBPPWcubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighKE89PT0iaW5wdXQiJiZnLnR5cGUhPT0iaW1hZ2UiKSlyZXR1cm4gby5kb21BdHRyaWJ1dGVzW09dfX07ZnVuY3Rpb24gQyhnKXtyZXR1cm4gZXNjYXBlKGcpfWZ1bmN0aW9uIE4oZyl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChnKS5yZXBsYWNlKC9bIScoKSpdL2csQykucmVwbGFjZSgvXCovZywiJTJBIil9by5lbmNvZGU9TixvLmRlY29kZT1kZWNvZGVVUklDb21wb25lbnQsby5pc284ODU5PWZ1bmN0aW9uKCl7by5lbmNvZGU9ZXNjYXBlLG8uZGVjb2RlPXVuZXNjYXBlfSxvLnVuaWNvZGU9ZnVuY3Rpb24oKXtvLmVuY29kZT1OLG8uZGVjb2RlPWRlY29kZVVSSUNvbXBvbmVudH0sby5jaGFyYWN0ZXJzPXtwYXRobmFtZTp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDI0fDI2fDJCfDJDfDNCfDNEfDNBfDQwKS9pZyxtYXA6eyIlMjQiOiIkIiwiJTI2IjoiJiIsIiUyQiI6IisiLCIlMkMiOiIsIiwiJTNCIjoiOyIsIiUzRCI6Ij0iLCIlM0EiOiI6IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/I10vZyxtYXA6eyIvIjoiJTJGIiwiPyI6IiUzRiIsIiMiOiIlMjMifX19LHJlc2VydmVkOntlbmNvZGU6e2V4cHJlc3Npb246LyUoMjF8MjN8MjR8MjZ8Mjd8Mjh8Mjl8MkF8MkJ8MkN8MkZ8M0F8M0J8M0R8M0Z8NDB8NUJ8NUQpL2lnLG1hcDp7IiUzQSI6IjoiLCIlMkYiOiIvIiwiJTNGIjoiPyIsIiUyMyI6IiMiLCIlNUIiOiJbIiwiJTVEIjoiXSIsIiU0MCI6IkAiLCIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNiI6IiYiLCIlMjciOiInIiwiJTI4IjoiKCIsIiUyOSI6IikiLCIlMkEiOiIqIiwiJTJCIjoiKyIsIiUyQyI6IiwiLCIlM0IiOiI7IiwiJTNEIjoiPSJ9fX0sdXJucGF0aDp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDIxfDI0fDI3fDI4fDI5fDJBfDJCfDJDfDNCfDNEfDQwKS9pZyxtYXA6eyIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNyI6IiciLCIlMjgiOiIoIiwiJTI5IjoiKSIsIiUyQSI6IioiLCIlMkIiOiIrIiwiJTJDIjoiLCIsIiUzQiI6IjsiLCIlM0QiOiI9IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/IzpdL2csbWFwOnsiLyI6IiUyRiIsIj8iOiIlM0YiLCIjIjoiJTIzIiwiOiI6IiUzQSJ9fX19LG8uZW5jb2RlUXVlcnk9ZnVuY3Rpb24oZyxPKXt2YXIgRD1vLmVuY29kZShnKyIiKTtyZXR1cm4gTz09PXZvaWQgMCYmKE89by5lc2NhcGVRdWVyeVNwYWNlKSxPP0QucmVwbGFjZSgvJTIwL2csIisiKTpEfSxvLmRlY29kZVF1ZXJ5PWZ1bmN0aW9uKGcsTyl7Zys9IiIsTz09PXZvaWQgMCYmKE89by5lc2NhcGVRdWVyeVNwYWNlKTt0cnl7cmV0dXJuIG8uZGVjb2RlKE8/Zy5yZXBsYWNlKC9cKy9nLCIlMjAiKTpnKX1jYXRjaHtyZXR1cm4gZ319O3ZhciBUPXtlbmNvZGU6ImVuY29kZSIsZGVjb2RlOiJkZWNvZGUifSxiLEY9ZnVuY3Rpb24oZyxPKXtyZXR1cm4gZnVuY3Rpb24oRCl7dHJ5e3JldHVybiBvW09dKEQrIiIpLnJlcGxhY2Uoby5jaGFyYWN0ZXJzW2ddW09dLmV4cHJlc3Npb24sZnVuY3Rpb24odyl7cmV0dXJuIG8uY2hhcmFjdGVyc1tnXVtPXS5tYXBbd119KX1jYXRjaHtyZXR1cm4gRH19fTtmb3IoYiBpbiBUKW9bYisiUGF0aFNlZ21lbnQiXT1GKCJwYXRobmFtZSIsVFtiXSksb1tiKyJVcm5QYXRoU2VnbWVudCJdPUYoInVybnBhdGgiLFRbYl0pO3ZhciBCPWZ1bmN0aW9uKGcsTyxEKXtyZXR1cm4gZnVuY3Rpb24odyl7dmFyIHg7RD94PWZ1bmN0aW9uKHR0KXtyZXR1cm4gb1tPXShvW0RdKHR0KSl9Ong9b1tPXTtmb3IodmFyIEg9KHcrIiIpLnNwbGl0KGcpLGo9MCxYPUgubGVuZ3RoO2o8WDtqKyspSFtqXT14KEhbal0pO3JldHVybiBILmpvaW4oZyl9fTtvLmRlY29kZVBhdGg9QigiLyIsImRlY29kZVBhdGhTZWdtZW50Iiksby5kZWNvZGVVcm5QYXRoPUIoIjoiLCJkZWNvZGVVcm5QYXRoU2VnbWVudCIpLG8ucmVjb2RlUGF0aD1CKCIvIiwiZW5jb2RlUGF0aFNlZ21lbnQiLCJkZWNvZGUiKSxvLnJlY29kZVVyblBhdGg9QigiOiIsImVuY29kZVVyblBhdGhTZWdtZW50IiwiZGVjb2RlIiksby5lbmNvZGVSZXNlcnZlZD1GKCJyZXNlcnZlZCIsImVuY29kZSIpLG8ucGFyc2U9ZnVuY3Rpb24oZyxPKXt2YXIgRDtyZXR1cm4gT3x8KE89e3ByZXZlbnRJbnZhbGlkSG9zdG5hbWU6by5wcmV2ZW50SW52YWxpZEhvc3RuYW1lfSksZz1nLnJlcGxhY2Uoby5sZWFkaW5nX3doaXRlc3BhY2VfZXhwcmVzc2lvbiwiIiksZz1nLnJlcGxhY2Uoby5hc2NpaV90YWJfd2hpdGVzcGFjZSwiIiksRD1nLmluZGV4T2YoIiMiKSxEPi0xJiYoTy5mcmFnbWVudD1nLnN1YnN0cmluZyhEKzEpfHxudWxsLGc9Zy5zdWJzdHJpbmcoMCxEKSksRD1nLmluZGV4T2YoIj8iKSxEPi0xJiYoTy5xdWVyeT1nLnN1YnN0cmluZyhEKzEpfHxudWxsLGc9Zy5zdWJzdHJpbmcoMCxEKSksZz1nLnJlcGxhY2UoL14oaHR0cHM/fGZ0cHx3c3M/KT86K1svXFxdKi9pLCIkMTovLyIpLGc9Zy5yZXBsYWNlKC9eWy9cXF17Mix9L2ksIi8vIiksZy5zdWJzdHJpbmcoMCwyKT09PSIvLyI/KE8ucHJvdG9jb2w9bnVsbCxnPWcuc3Vic3RyaW5nKDIpLGc9by5wYXJzZUF1dGhvcml0eShnLE8pKTooRD1nLmluZGV4T2YoIjoiKSxEPi0xJiYoTy5wcm90b2NvbD1nLnN1YnN0cmluZygwLEQpfHxudWxsLE8ucHJvdG9jb2wmJiFPLnByb3RvY29sLm1hdGNoKG8ucHJvdG9jb2xfZXhwcmVzc2lvbik/Ty5wcm90b2NvbD12b2lkIDA6Zy5zdWJzdHJpbmcoRCsxLEQrMykucmVwbGFjZSgvXFwvZywiLyIpPT09Ii8vIj8oZz1nLnN1YnN0cmluZyhEKzMpLGc9by5wYXJzZUF1dGhvcml0eShnLE8pKTooZz1nLnN1YnN0cmluZyhEKzEpLE8udXJuPSEwKSkpLE8ucGF0aD1nLE99LG8ucGFyc2VIb3N0PWZ1bmN0aW9uKGcsTyl7Z3x8KGc9IiIpLGc9Zy5yZXBsYWNlKC9cXC9nLCIvIik7dmFyIEQ9Zy5pbmRleE9mKCIvIiksdyx4O2lmKEQ9PT0tMSYmKEQ9Zy5sZW5ndGgpLGcuY2hhckF0KDApPT09IlsiKXc9Zy5pbmRleE9mKCJdIiksTy5ob3N0bmFtZT1nLnN1YnN0cmluZygxLHcpfHxudWxsLE8ucG9ydD1nLnN1YnN0cmluZyh3KzIsRCl8fG51bGwsTy5wb3J0PT09Ii8iJiYoTy5wb3J0PW51bGwpO2Vsc2V7dmFyIEg9Zy5pbmRleE9mKCI6Iiksaj1nLmluZGV4T2YoIi8iKSxYPWcuaW5kZXhPZigiOiIsSCsxKTtYIT09LTEmJihqPT09LTF8fFg8aik/KE8uaG9zdG5hbWU9Zy5zdWJzdHJpbmcoMCxEKXx8bnVsbCxPLnBvcnQ9bnVsbCk6KHg9Zy5zdWJzdHJpbmcoMCxEKS5zcGxpdCgiOiIpLE8uaG9zdG5hbWU9eFswXXx8bnVsbCxPLnBvcnQ9eFsxXXx8bnVsbCl9cmV0dXJuIE8uaG9zdG5hbWUmJmcuc3Vic3RyaW5nKEQpLmNoYXJBdCgwKSE9PSIvIiYmKEQrKyxnPSIvIitnKSxPLnByZXZlbnRJbnZhbGlkSG9zdG5hbWUmJm8uZW5zdXJlVmFsaWRIb3N0bmFtZShPLmhvc3RuYW1lLE8ucHJvdG9jb2wpLE8ucG9ydCYmby5lbnN1cmVWYWxpZFBvcnQoTy5wb3J0KSxnLnN1YnN0cmluZyhEKXx8Ii8ifSxvLnBhcnNlQXV0aG9yaXR5PWZ1bmN0aW9uKGcsTyl7cmV0dXJuIGc9by5wYXJzZVVzZXJpbmZvKGcsTyksby5wYXJzZUhvc3QoZyxPKX0sby5wYXJzZVVzZXJpbmZvPWZ1bmN0aW9uKGcsTyl7dmFyIEQ9Zyx3PWcuaW5kZXhPZigiXFwiKTt3IT09LTEmJihnPWcucmVwbGFjZSgvXFwvZywiLyIpKTt2YXIgeD1nLmluZGV4T2YoIi8iKSxIPWcubGFzdEluZGV4T2YoIkAiLHg+LTE/eDpnLmxlbmd0aC0xKSxqO3JldHVybiBIPi0xJiYoeD09PS0xfHxIPHgpPyhqPWcuc3Vic3RyaW5nKDAsSCkuc3BsaXQoIjoiKSxPLnVzZXJuYW1lPWpbMF0/by5kZWNvZGUoalswXSk6bnVsbCxqLnNoaWZ0KCksTy5wYXNzd29yZD1qWzBdP28uZGVjb2RlKGouam9pbigiOiIpKTpudWxsLGc9RC5zdWJzdHJpbmcoSCsxKSk6KE8udXNlcm5hbWU9bnVsbCxPLnBhc3N3b3JkPW51bGwpLGd9LG8ucGFyc2VRdWVyeT1mdW5jdGlvbihnLE8pe2lmKCFnKXJldHVybnt9O2lmKGc9Zy5yZXBsYWNlKC8mKy9nLCImIikucmVwbGFjZSgvXlw/KiYqfCYrJC9nLCIiKSwhZylyZXR1cm57fTtmb3IodmFyIEQ9e30sdz1nLnNwbGl0KCImIikseD13Lmxlbmd0aCxILGosWCx0dD0wO3R0PHg7dHQrKylIPXdbdHRdLnNwbGl0KCI9Iiksaj1vLmRlY29kZVF1ZXJ5KEguc2hpZnQoKSxPKSxYPUgubGVuZ3RoP28uZGVjb2RlUXVlcnkoSC5qb2luKCI9IiksTyk6bnVsbCxqIT09Il9fcHJvdG9fXyImJihoLmNhbGwoRCxqKT8oKHR5cGVvZiBEW2pdPT0ic3RyaW5nInx8RFtqXT09PW51bGwpJiYoRFtqXT1bRFtqXV0pLERbal0ucHVzaChYKSk6RFtqXT1YKTtyZXR1cm4gRH0sby5idWlsZD1mdW5jdGlvbihnKXt2YXIgTz0iIixEPSExO3JldHVybiBnLnByb3RvY29sJiYoTys9Zy5wcm90b2NvbCsiOiIpLCFnLnVybiYmKE98fGcuaG9zdG5hbWUpJiYoTys9Ii8vIixEPSEwKSxPKz1vLmJ1aWxkQXV0aG9yaXR5KGcpfHwiIix0eXBlb2YgZy5wYXRoPT0ic3RyaW5nIiYmKGcucGF0aC5jaGFyQXQoMCkhPT0iLyImJkQmJihPKz0iLyIpLE8rPWcucGF0aCksdHlwZW9mIGcucXVlcnk9PSJzdHJpbmciJiZnLnF1ZXJ5JiYoTys9Ij8iK2cucXVlcnkpLHR5cGVvZiBnLmZyYWdtZW50PT0ic3RyaW5nIiYmZy5mcmFnbWVudCYmKE8rPSIjIitnLmZyYWdtZW50KSxPfSxvLmJ1aWxkSG9zdD1mdW5jdGlvbihnKXt2YXIgTz0iIjtpZihnLmhvc3RuYW1lKW8uaXA2X2V4cHJlc3Npb24udGVzdChnLmhvc3RuYW1lKT9PKz0iWyIrZy5ob3N0bmFtZSsiXSI6Tys9Zy5ob3N0bmFtZTtlbHNlIHJldHVybiIiO3JldHVybiBnLnBvcnQmJihPKz0iOiIrZy5wb3J0KSxPfSxvLmJ1aWxkQXV0aG9yaXR5PWZ1bmN0aW9uKGcpe3JldHVybiBvLmJ1aWxkVXNlcmluZm8oZykrby5idWlsZEhvc3QoZyl9LG8uYnVpbGRVc2VyaW5mbz1mdW5jdGlvbihnKXt2YXIgTz0iIjtyZXR1cm4gZy51c2VybmFtZSYmKE8rPW8uZW5jb2RlKGcudXNlcm5hbWUpKSxnLnBhc3N3b3JkJiYoTys9IjoiK28uZW5jb2RlKGcucGFzc3dvcmQpKSxPJiYoTys9IkAiKSxPfSxvLmJ1aWxkUXVlcnk9ZnVuY3Rpb24oZyxPLEQpe3ZhciB3PSIiLHgsSCxqLFg7Zm9yKEggaW4gZylpZihIIT09Il9fcHJvdG9fXyImJmguY2FsbChnLEgpKWlmKGYoZ1tIXSkpZm9yKHg9e30saj0wLFg9Z1tIXS5sZW5ndGg7ajxYO2orKylnW0hdW2pdIT09dm9pZCAwJiZ4W2dbSF1bal0rIiJdPT09dm9pZCAwJiYodys9IiYiK28uYnVpbGRRdWVyeVBhcmFtZXRlcihILGdbSF1bal0sRCksTyE9PSEwJiYoeFtnW0hdW2pdKyIiXT0hMCkpO2Vsc2UgZ1tIXSE9PXZvaWQgMCYmKHcrPSImIitvLmJ1aWxkUXVlcnlQYXJhbWV0ZXIoSCxnW0hdLEQpKTtyZXR1cm4gdy5zdWJzdHJpbmcoMSl9LG8uYnVpbGRRdWVyeVBhcmFtZXRlcj1mdW5jdGlvbihnLE8sRCl7cmV0dXJuIG8uZW5jb2RlUXVlcnkoZyxEKSsoTyE9PW51bGw/Ij0iK28uZW5jb2RlUXVlcnkoTyxEKToiIil9LG8uYWRkUXVlcnk9ZnVuY3Rpb24oZyxPLEQpe2lmKHR5cGVvZiBPPT0ib2JqZWN0Iilmb3IodmFyIHcgaW4gTyloLmNhbGwoTyx3KSYmby5hZGRRdWVyeShnLHcsT1t3XSk7ZWxzZSBpZih0eXBlb2YgTz09InN0cmluZyIpe2lmKGdbT109PT12b2lkIDApe2dbT109RDtyZXR1cm59ZWxzZSB0eXBlb2YgZ1tPXT09InN0cmluZyImJihnW09dPVtnW09dXSk7ZihEKXx8KEQ9W0RdKSxnW09dPShnW09dfHxbXSkuY29uY2F0KEQpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmFkZFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0sby5zZXRRdWVyeT1mdW5jdGlvbihnLE8sRCl7aWYodHlwZW9mIE89PSJvYmplY3QiKWZvcih2YXIgdyBpbiBPKWguY2FsbChPLHcpJiZvLnNldFF1ZXJ5KGcsdyxPW3ddKTtlbHNlIGlmKHR5cGVvZiBPPT0ic3RyaW5nIilnW09dPUQ9PT12b2lkIDA/bnVsbDpEO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLnNldFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0sby5yZW1vdmVRdWVyeT1mdW5jdGlvbihnLE8sRCl7dmFyIHcseCxIO2lmKGYoTykpZm9yKHc9MCx4PU8ubGVuZ3RoO3c8eDt3KyspZ1tPW3ddXT12b2lkIDA7ZWxzZSBpZihkKE8pPT09IlJlZ0V4cCIpZm9yKEggaW4gZylPLnRlc3QoSCkmJihnW0hdPXZvaWQgMCk7ZWxzZSBpZih0eXBlb2YgTz09Im9iamVjdCIpZm9yKEggaW4gTyloLmNhbGwoTyxIKSYmby5yZW1vdmVRdWVyeShnLEgsT1tIXSk7ZWxzZSBpZih0eXBlb2YgTz09InN0cmluZyIpRCE9PXZvaWQgMD9kKEQpPT09IlJlZ0V4cCI/IWYoZ1tPXSkmJkQudGVzdChnW09dKT9nW09dPXZvaWQgMDpnW09dPUUoZ1tPXSxEKTpnW09dPT09U3RyaW5nKEQpJiYoIWYoRCl8fEQubGVuZ3RoPT09MSk/Z1tPXT12b2lkIDA6ZihnW09dKSYmKGdbT109RShnW09dLEQpKTpnW09dPXZvaWQgMDtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5yZW1vdmVRdWVyeSgpIGFjY2VwdHMgYW4gb2JqZWN0LCBzdHJpbmcsIFJlZ0V4cCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIil9LG8uaGFzUXVlcnk9ZnVuY3Rpb24oZyxPLEQsdyl7c3dpdGNoKGQoTykpe2Nhc2UiU3RyaW5nIjpicmVhaztjYXNlIlJlZ0V4cCI6Zm9yKHZhciB4IGluIGcpaWYoaC5jYWxsKGcseCkmJk8udGVzdCh4KSYmKEQ9PT12b2lkIDB8fG8uaGFzUXVlcnkoZyx4LEQpKSlyZXR1cm4hMDtyZXR1cm4hMTtjYXNlIk9iamVjdCI6Zm9yKHZhciBIIGluIE8paWYoaC5jYWxsKE8sSCkmJiFvLmhhc1F1ZXJ5KGcsSCxPW0hdKSlyZXR1cm4hMTtyZXR1cm4hMDtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5oYXNRdWVyeSgpIGFjY2VwdHMgYSBzdHJpbmcsIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBvYmplY3QgYXMgdGhlIG5hbWUgcGFyYW1ldGVyIil9c3dpdGNoKGQoRCkpe2Nhc2UiVW5kZWZpbmVkIjpyZXR1cm4gTyBpbiBnO2Nhc2UiQm9vbGVhbiI6dmFyIGo9ISEoZihnW09dKT9nW09dLmxlbmd0aDpnW09dKTtyZXR1cm4gRD09PWo7Y2FzZSJGdW5jdGlvbiI6cmV0dXJuISFEKGdbT10sTyxnKTtjYXNlIkFycmF5IjppZighZihnW09dKSlyZXR1cm4hMTt2YXIgWD13P186UjtyZXR1cm4gWChnW09dLEQpO2Nhc2UiUmVnRXhwIjpyZXR1cm4gZihnW09dKT93P18oZ1tPXSxEKTohMTohIShnW09dJiZnW09dLm1hdGNoKEQpKTtjYXNlIk51bWJlciI6RD1TdHJpbmcoRCk7Y2FzZSJTdHJpbmciOnJldHVybiBmKGdbT10pP3c/XyhnW09dLEQpOiExOmdbT109PT1EO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmhhc1F1ZXJ5KCkgYWNjZXB0cyB1bmRlZmluZWQsIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBSZWdFeHAsIEZ1bmN0aW9uIGFzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIiKX19LG8uam9pblBhdGhzPWZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLE89W10sRD0wLHc9MDt3PGFyZ3VtZW50cy5sZW5ndGg7dysrKXt2YXIgeD1uZXcgbyhhcmd1bWVudHNbd10pO2cucHVzaCh4KTtmb3IodmFyIEg9eC5zZWdtZW50KCksaj0wO2o8SC5sZW5ndGg7aisrKXR5cGVvZiBIW2pdPT0ic3RyaW5nIiYmTy5wdXNoKEhbal0pLEhbal0mJkQrK31pZighTy5sZW5ndGh8fCFEKXJldHVybiBuZXcgbygiIik7dmFyIFg9bmV3IG8oIiIpLnNlZ21lbnQoTyk7cmV0dXJuKGdbMF0ucGF0aCgpPT09IiJ8fGdbMF0ucGF0aCgpLnNsaWNlKDAsMSk9PT0iLyIpJiZYLnBhdGgoIi8iK1gucGF0aCgpKSxYLm5vcm1hbGl6ZSgpfSxvLmNvbW1vblBhdGg9ZnVuY3Rpb24oZyxPKXt2YXIgRD1NYXRoLm1pbihnLmxlbmd0aCxPLmxlbmd0aCksdztmb3Iodz0wO3c8RDt3KyspaWYoZy5jaGFyQXQodykhPT1PLmNoYXJBdCh3KSl7dy0tO2JyZWFrfXJldHVybiB3PDE/Zy5jaGFyQXQoMCk9PT1PLmNoYXJBdCgwKSYmZy5jaGFyQXQoMCk9PT0iLyI/Ii8iOiIiOigoZy5jaGFyQXQodykhPT0iLyJ8fE8uY2hhckF0KHcpIT09Ii8iKSYmKHc9Zy5zdWJzdHJpbmcoMCx3KS5sYXN0SW5kZXhPZigiLyIpKSxnLnN1YnN0cmluZygwLHcrMSkpfSxvLndpdGhpblN0cmluZz1mdW5jdGlvbihnLE8sRCl7RHx8KEQ9e30pO3ZhciB3PUQuc3RhcnR8fG8uZmluZFVyaS5zdGFydCx4PUQuZW5kfHxvLmZpbmRVcmkuZW5kLEg9RC50cmltfHxvLmZpbmRVcmkudHJpbSxqPUQucGFyZW5zfHxvLmZpbmRVcmkucGFyZW5zLFg9L1thLXowLTktXT1bIiddPyQvaTtmb3Iody5sYXN0SW5kZXg9MDs7KXt2YXIgdHQ9dy5leGVjKGcpO2lmKCF0dClicmVhazt2YXIgRz10dC5pbmRleDtpZihELmlnbm9yZUh0bWwpe3ZhciBJdD1nLnNsaWNlKE1hdGgubWF4KEctMywwKSxHKTtpZihJdCYmWC50ZXN0KEl0KSljb250aW51ZX1mb3IodmFyIGd0PUcrZy5zbGljZShHKS5zZWFyY2goeCksWXQ9Zy5zbGljZShHLGd0KSxVdD0tMTs7KXt2YXIgQ3Q9ai5leGVjKFl0KTtpZighQ3QpYnJlYWs7dmFyIHp0PUN0LmluZGV4K0N0WzBdLmxlbmd0aDtVdD1NYXRoLm1heChVdCx6dCl9aWYoVXQ+LTE/WXQ9WXQuc2xpY2UoMCxVdCkrWXQuc2xpY2UoVXQpLnJlcGxhY2UoSCwiIik6WXQ9WXQucmVwbGFjZShILCIiKSwhKFl0Lmxlbmd0aDw9dHRbMF0ubGVuZ3RoKSYmIShELmlnbm9yZSYmRC5pZ25vcmUudGVzdChZdCkpKXtndD1HK1l0Lmxlbmd0aDt2YXIga3Q9TyhZdCxHLGd0LGcpO2lmKGt0PT09dm9pZCAwKXt3Lmxhc3RJbmRleD1ndDtjb250aW51ZX1rdD1TdHJpbmcoa3QpLGc9Zy5zbGljZSgwLEcpK2t0K2cuc2xpY2UoZ3QpLHcubGFzdEluZGV4PUcra3QubGVuZ3RofX1yZXR1cm4gdy5sYXN0SW5kZXg9MCxnfSxvLmVuc3VyZVZhbGlkSG9zdG5hbWU9ZnVuY3Rpb24oZyxPKXt2YXIgRD0hIWcsdz0hIU8seD0hMTtpZih3JiYoeD1fKG8uaG9zdFByb3RvY29scyxPKSkseCYmIUQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSG9zdG5hbWUgY2Fubm90IGJlIGVtcHR5LCBpZiBwcm90b2NvbCBpcyAiK08pO2lmKGcmJmcubWF0Y2goby5pbnZhbGlkX2hvc3RuYW1lX2NoYXJhY3RlcnMpKXtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdIb3N0bmFtZSAiJytnKyciIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05Li06X10gYW5kIFB1bnljb2RlLmpzIGlzIG5vdCBhdmFpbGFibGUnKTtpZih0LnRvQVNDSUkoZykubWF0Y2goby5pbnZhbGlkX2hvc3RuYW1lX2NoYXJhY3RlcnMpKXRocm93IG5ldyBUeXBlRXJyb3IoJ0hvc3RuYW1lICInK2crJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuLTpfXScpfX0sby5lbnN1cmVWYWxpZFBvcnQ9ZnVuY3Rpb24oZyl7aWYoZyl7dmFyIE89TnVtYmVyKGcpO2lmKCEocihPKSYmTz4wJiZPPDY1NTM2KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQb3J0ICInK2crJyIgaXMgbm90IGEgdmFsaWQgcG9ydCcpfX0sby5ub0NvbmZsaWN0PWZ1bmN0aW9uKGcpe2lmKGcpe3ZhciBPPXtVUkk6dGhpcy5ub0NvbmZsaWN0KCl9O3JldHVybiBuLlVSSVRlbXBsYXRlJiZ0eXBlb2Ygbi5VUklUZW1wbGF0ZS5ub0NvbmZsaWN0PT0iZnVuY3Rpb24iJiYoTy5VUklUZW1wbGF0ZT1uLlVSSVRlbXBsYXRlLm5vQ29uZmxpY3QoKSksbi5JUHY2JiZ0eXBlb2Ygbi5JUHY2Lm5vQ29uZmxpY3Q9PSJmdW5jdGlvbiImJihPLklQdjY9bi5JUHY2Lm5vQ29uZmxpY3QoKSksbi5TZWNvbmRMZXZlbERvbWFpbnMmJnR5cGVvZiBuLlNlY29uZExldmVsRG9tYWlucy5ub0NvbmZsaWN0PT0iZnVuY3Rpb24iJiYoTy5TZWNvbmRMZXZlbERvbWFpbnM9bi5TZWNvbmRMZXZlbERvbWFpbnMubm9Db25mbGljdCgpKSxPfWVsc2Ugbi5VUkk9PT10aGlzJiYobi5VUkk9cyk7cmV0dXJuIHRoaXN9LGEuYnVpbGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGc9PT0hMD90aGlzLl9kZWZlcnJlZF9idWlsZD0hMDooZz09PXZvaWQgMHx8dGhpcy5fZGVmZXJyZWRfYnVpbGQpJiYodGhpcy5fc3RyaW5nPW8uYnVpbGQodGhpcy5fcGFydHMpLHRoaXMuX2RlZmVycmVkX2J1aWxkPSExKSx0aGlzfSxhLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvKHRoaXMpfSxhLnZhbHVlT2Y9YS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1aWxkKCExKS5fc3RyaW5nfTtmdW5jdGlvbiBVKGcpe3JldHVybiBmdW5jdGlvbihPLEQpe3JldHVybiBPPT09dm9pZCAwP3RoaXMuX3BhcnRzW2ddfHwiIjoodGhpcy5fcGFydHNbZ109T3x8bnVsbCx0aGlzLmJ1aWxkKCFEKSx0aGlzKX19ZnVuY3Rpb24gUShnLE8pe3JldHVybiBmdW5jdGlvbihELHcpe3JldHVybiBEPT09dm9pZCAwP3RoaXMuX3BhcnRzW2ddfHwiIjooRCE9PW51bGwmJihEPUQrIiIsRC5jaGFyQXQoMCk9PT1PJiYoRD1ELnN1YnN0cmluZygxKSkpLHRoaXMuX3BhcnRzW2ddPUQsdGhpcy5idWlsZCghdyksdGhpcyl9fWEucHJvdG9jb2w9VSgicHJvdG9jb2wiKSxhLnVzZXJuYW1lPVUoInVzZXJuYW1lIiksYS5wYXNzd29yZD1VKCJwYXNzd29yZCIpLGEuaG9zdG5hbWU9VSgiaG9zdG5hbWUiKSxhLnBvcnQ9VSgicG9ydCIpLGEucXVlcnk9USgicXVlcnkiLCI/IiksYS5mcmFnbWVudD1RKCJmcmFnbWVudCIsIiMiKSxhLnNlYXJjaD1mdW5jdGlvbihnLE8pe3ZhciBEPXRoaXMucXVlcnkoZyxPKTtyZXR1cm4gdHlwZW9mIEQ9PSJzdHJpbmciJiZELmxlbmd0aD8iPyIrRDpEfSxhLmhhc2g9ZnVuY3Rpb24oZyxPKXt2YXIgRD10aGlzLmZyYWdtZW50KGcsTyk7cmV0dXJuIHR5cGVvZiBEPT0ic3RyaW5nIiYmRC5sZW5ndGg/IiMiK0Q6RH0sYS5wYXRobmFtZT1mdW5jdGlvbihnLE8pe2lmKGc9PT12b2lkIDB8fGc9PT0hMCl7dmFyIEQ9dGhpcy5fcGFydHMucGF0aHx8KHRoaXMuX3BhcnRzLmhvc3RuYW1lPyIvIjoiIik7cmV0dXJuIGc/KHRoaXMuX3BhcnRzLnVybj9vLmRlY29kZVVyblBhdGg6by5kZWNvZGVQYXRoKShEKTpEfWVsc2UgcmV0dXJuIHRoaXMuX3BhcnRzLnVybj90aGlzLl9wYXJ0cy5wYXRoPWc/by5yZWNvZGVVcm5QYXRoKGcpOiIiOnRoaXMuX3BhcnRzLnBhdGg9Zz9vLnJlY29kZVBhdGgoZyk6Ii8iLHRoaXMuYnVpbGQoIU8pLHRoaXN9LGEucGF0aD1hLnBhdGhuYW1lLGEuaHJlZj1mdW5jdGlvbihnLE8pe3ZhciBEO2lmKGc9PT12b2lkIDApcmV0dXJuIHRoaXMudG9TdHJpbmcoKTt0aGlzLl9zdHJpbmc9IiIsdGhpcy5fcGFydHM9by5fcGFydHMoKTt2YXIgdz1nIGluc3RhbmNlb2Ygbyx4PXR5cGVvZiBnPT0ib2JqZWN0IiYmKGcuaG9zdG5hbWV8fGcucGF0aHx8Zy5wYXRobmFtZSk7aWYoZy5ub2RlTmFtZSl7dmFyIEg9by5nZXREb21BdHRyaWJ1dGUoZyk7Zz1nW0hdfHwiIix4PSExfWlmKCF3JiZ4JiZnLnBhdGhuYW1lIT09dm9pZCAwJiYoZz1nLnRvU3RyaW5nKCkpLHR5cGVvZiBnPT0ic3RyaW5nInx8ZyBpbnN0YW5jZW9mIFN0cmluZyl0aGlzLl9wYXJ0cz1vLnBhcnNlKFN0cmluZyhnKSx0aGlzLl9wYXJ0cyk7ZWxzZSBpZih3fHx4KXt2YXIgaj13P2cuX3BhcnRzOmc7Zm9yKEQgaW4gailEIT09InF1ZXJ5IiYmaC5jYWxsKHRoaXMuX3BhcnRzLEQpJiYodGhpcy5fcGFydHNbRF09altEXSk7ai5xdWVyeSYmdGhpcy5xdWVyeShqLnF1ZXJ5LCExKX1lbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgaW5wdXQiKTtyZXR1cm4gdGhpcy5idWlsZCghTyksdGhpc30sYS5pcz1mdW5jdGlvbihnKXt2YXIgTz0hMSxEPSExLHc9ITEseD0hMSxIPSExLGo9ITEsWD0hMSx0dD0hdGhpcy5fcGFydHMudXJuO3N3aXRjaCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSYmKHR0PSExLEQ9by5pcDRfZXhwcmVzc2lvbi50ZXN0KHRoaXMuX3BhcnRzLmhvc3RuYW1lKSx3PW8uaXA2X2V4cHJlc3Npb24udGVzdCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksTz1EfHx3LHg9IU8sSD14JiZpJiZpLmhhcyh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksaj14JiZvLmlkbl9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpLFg9eCYmby5wdW55Y29kZV9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpKSxnLnRvTG93ZXJDYXNlKCkpe2Nhc2UicmVsYXRpdmUiOnJldHVybiB0dDtjYXNlImFic29sdXRlIjpyZXR1cm4hdHQ7Y2FzZSJkb21haW4iOmNhc2UibmFtZSI6cmV0dXJuIHg7Y2FzZSJzbGQiOnJldHVybiBIO2Nhc2UiaXAiOnJldHVybiBPO2Nhc2UiaXA0IjpjYXNlImlwdjQiOmNhc2UiaW5ldDQiOnJldHVybiBEO2Nhc2UiaXA2IjpjYXNlImlwdjYiOmNhc2UiaW5ldDYiOnJldHVybiB3O2Nhc2UiaWRuIjpyZXR1cm4gajtjYXNlInVybCI6cmV0dXJuIXRoaXMuX3BhcnRzLnVybjtjYXNlInVybiI6cmV0dXJuISF0aGlzLl9wYXJ0cy51cm47Y2FzZSJwdW55Y29kZSI6cmV0dXJuIFh9cmV0dXJuIG51bGx9O3ZhciBNPWEucHJvdG9jb2wsaz1hLnBvcnQseT1hLmhvc3RuYW1lO2EucHJvdG9jb2w9ZnVuY3Rpb24oZyxPKXtpZihnJiYoZz1nLnJlcGxhY2UoLzooXC9cLyk/JC8sIiIpLCFnLm1hdGNoKG8ucHJvdG9jb2xfZXhwcmVzc2lvbikpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb3RvY29sICInK2crYCIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuKy1dIG9yIGRvZXNuJ3Qgc3RhcnQgd2l0aCBbQS1aXWApO3JldHVybiBNLmNhbGwodGhpcyxnLE8pfSxhLnNjaGVtZT1hLnByb3RvY29sLGEucG9ydD1mdW5jdGlvbihnLE8pe3JldHVybiB0aGlzLl9wYXJ0cy51cm4/Zz09PXZvaWQgMD8iIjp0aGlzOihnIT09dm9pZCAwJiYoZz09PTAmJihnPW51bGwpLGcmJihnKz0iIixnLmNoYXJBdCgwKT09PSI6IiYmKGc9Zy5zdWJzdHJpbmcoMSkpLG8uZW5zdXJlVmFsaWRQb3J0KGcpKSksay5jYWxsKHRoaXMsZyxPKSl9LGEuaG9zdG5hbWU9ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnIT09dm9pZCAwKXt2YXIgRD17cHJldmVudEludmFsaWRIb3N0bmFtZTp0aGlzLl9wYXJ0cy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lfSx3PW8ucGFyc2VIb3N0KGcsRCk7aWYodyE9PSIvIil0aHJvdyBuZXcgVHlwZUVycm9yKCdIb3N0bmFtZSAiJytnKyciIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05Li1dJyk7Zz1ELmhvc3RuYW1lLHRoaXMuX3BhcnRzLnByZXZlbnRJbnZhbGlkSG9zdG5hbWUmJm8uZW5zdXJlVmFsaWRIb3N0bmFtZShnLHRoaXMuX3BhcnRzLnByb3RvY29sKX1yZXR1cm4geS5jYWxsKHRoaXMsZyxPKX0sYS5vcmlnaW49ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwKXt2YXIgRD10aGlzLnByb3RvY29sKCksdz10aGlzLmF1dGhvcml0eSgpO3JldHVybiB3PyhEP0QrIjovLyI6IiIpK3RoaXMuYXV0aG9yaXR5KCk6IiJ9ZWxzZXt2YXIgeD1vKGcpO3JldHVybiB0aGlzLnByb3RvY29sKHgucHJvdG9jb2woKSkuYXV0aG9yaXR5KHguYXV0aG9yaXR5KCkpLmJ1aWxkKCFPKSx0aGlzfX0sYS5ob3N0PWZ1bmN0aW9uKGcsTyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBnPT09dm9pZCAwPyIiOnRoaXM7aWYoZz09PXZvaWQgMClyZXR1cm4gdGhpcy5fcGFydHMuaG9zdG5hbWU/by5idWlsZEhvc3QodGhpcy5fcGFydHMpOiIiO3ZhciBEPW8ucGFyc2VIb3N0KGcsdGhpcy5fcGFydHMpO2lmKEQhPT0iLyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrZysnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tXScpO3JldHVybiB0aGlzLmJ1aWxkKCFPKSx0aGlzfSxhLmF1dGhvcml0eT1mdW5jdGlvbihnLE8pe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gZz09PXZvaWQgMD8iIjp0aGlzO2lmKGc9PT12b2lkIDApcmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lP28uYnVpbGRBdXRob3JpdHkodGhpcy5fcGFydHMpOiIiO3ZhciBEPW8ucGFyc2VBdXRob3JpdHkoZyx0aGlzLl9wYXJ0cyk7aWYoRCE9PSIvIil0aHJvdyBuZXcgVHlwZUVycm9yKCdIb3N0bmFtZSAiJytnKyciIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05Li1dJyk7cmV0dXJuIHRoaXMuYnVpbGQoIU8pLHRoaXN9LGEudXNlcmluZm89ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwKXt2YXIgRD1vLmJ1aWxkVXNlcmluZm8odGhpcy5fcGFydHMpO3JldHVybiBEJiZELnN1YnN0cmluZygwLEQubGVuZ3RoLTEpfWVsc2UgcmV0dXJuIGdbZy5sZW5ndGgtMV0hPT0iQCImJihnKz0iQCIpLG8ucGFyc2VVc2VyaW5mbyhnLHRoaXMuX3BhcnRzKSx0aGlzLmJ1aWxkKCFPKSx0aGlzfSxhLnJlc291cmNlPWZ1bmN0aW9uKGcsTyl7dmFyIEQ7cmV0dXJuIGc9PT12b2lkIDA/dGhpcy5wYXRoKCkrdGhpcy5zZWFyY2goKSt0aGlzLmhhc2goKTooRD1vLnBhcnNlKGcpLHRoaXMuX3BhcnRzLnBhdGg9RC5wYXRoLHRoaXMuX3BhcnRzLnF1ZXJ5PUQucXVlcnksdGhpcy5fcGFydHMuZnJhZ21lbnQ9RC5mcmFnbWVudCx0aGlzLmJ1aWxkKCFPKSx0aGlzKX0sYS5zdWJkb21haW49ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwKXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpcmV0dXJuIiI7dmFyIEQ9dGhpcy5fcGFydHMuaG9zdG5hbWUubGVuZ3RoLXRoaXMuZG9tYWluKCkubGVuZ3RoLTE7cmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZygwLEQpfHwiIn1lbHNle3ZhciB3PXRoaXMuX3BhcnRzLmhvc3RuYW1lLmxlbmd0aC10aGlzLmRvbWFpbigpLmxlbmd0aCx4PXRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZygwLHcpLEg9bmV3IFJlZ0V4cCgiXiIrQSh4KSk7aWYoZyYmZy5jaGFyQXQoZy5sZW5ndGgtMSkhPT0iLiImJihnKz0iLiIpLGcuaW5kZXhPZigiOiIpIT09LTEpdGhyb3cgbmV3IFR5cGVFcnJvcigiRG9tYWlucyBjYW5ub3QgY29udGFpbiBjb2xvbnMiKTtyZXR1cm4gZyYmby5lbnN1cmVWYWxpZEhvc3RuYW1lKGcsdGhpcy5fcGFydHMucHJvdG9jb2wpLHRoaXMuX3BhcnRzLmhvc3RuYW1lPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnJlcGxhY2UoSCxnKSx0aGlzLmJ1aWxkKCFPKSx0aGlzfX0sYS5kb21haW49ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZih0eXBlb2YgZz09ImJvb2xlYW4iJiYoTz1nLGc9dm9pZCAwKSxnPT09dm9pZCAwKXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpcmV0dXJuIiI7dmFyIEQ9dGhpcy5fcGFydHMuaG9zdG5hbWUubWF0Y2goL1wuL2cpO2lmKEQmJkQubGVuZ3RoPDIpcmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lO3ZhciB3PXRoaXMuX3BhcnRzLmhvc3RuYW1lLmxlbmd0aC10aGlzLnRsZChPKS5sZW5ndGgtMTtyZXR1cm4gdz10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sYXN0SW5kZXhPZigiLiIsdy0xKSsxLHRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZyh3KXx8IiJ9ZWxzZXtpZighZyl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYW5ub3Qgc2V0IGRvbWFpbiBlbXB0eSIpO2lmKGcuaW5kZXhPZigiOiIpIT09LTEpdGhyb3cgbmV3IFR5cGVFcnJvcigiRG9tYWlucyBjYW5ub3QgY29udGFpbiBjb2xvbnMiKTtpZihvLmVuc3VyZVZhbGlkSG9zdG5hbWUoZyx0aGlzLl9wYXJ0cy5wcm90b2NvbCksIXRoaXMuX3BhcnRzLmhvc3RuYW1lfHx0aGlzLmlzKCJJUCIpKXRoaXMuX3BhcnRzLmhvc3RuYW1lPWc7ZWxzZXt2YXIgeD1uZXcgUmVnRXhwKEEodGhpcy5kb21haW4oKSkrIiQiKTt0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS5yZXBsYWNlKHgsZyl9cmV0dXJuIHRoaXMuYnVpbGQoIU8pLHRoaXN9fSxhLnRsZD1mdW5jdGlvbihnLE8pe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gZz09PXZvaWQgMD8iIjp0aGlzO2lmKHR5cGVvZiBnPT0iYm9vbGVhbiImJihPPWcsZz12b2lkIDApLGc9PT12b2lkIDApe2lmKCF0aGlzLl9wYXJ0cy5ob3N0bmFtZXx8dGhpcy5pcygiSVAiKSlyZXR1cm4iIjt2YXIgRD10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sYXN0SW5kZXhPZigiLiIpLHc9dGhpcy5fcGFydHMuaG9zdG5hbWUuc3Vic3RyaW5nKEQrMSk7cmV0dXJuIE8hPT0hMCYmaSYmaS5saXN0W3cudG9Mb3dlckNhc2UoKV0mJmkuZ2V0KHRoaXMuX3BhcnRzLmhvc3RuYW1lKXx8d31lbHNle3ZhciB4O2lmKGcpaWYoZy5tYXRjaCgvW15hLXpBLVowLTktXS8pKWlmKGkmJmkuaXMoZykpeD1uZXcgUmVnRXhwKEEodGhpcy50bGQoKSkrIiQiKSx0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS5yZXBsYWNlKHgsZyk7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCdUTEQgIicrZysnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOV0nKTtlbHNle2lmKCF0aGlzLl9wYXJ0cy5ob3N0bmFtZXx8dGhpcy5pcygiSVAiKSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoImNhbm5vdCBzZXQgVExEIG9uIG5vbi1kb21haW4gaG9zdCIpO3g9bmV3IFJlZ0V4cChBKHRoaXMudGxkKCkpKyIkIiksdGhpcy5fcGFydHMuaG9zdG5hbWU9dGhpcy5fcGFydHMuaG9zdG5hbWUucmVwbGFjZSh4LGcpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiY2Fubm90IHNldCBUTEQgZW1wdHkiKTtyZXR1cm4gdGhpcy5idWlsZCghTyksdGhpc319LGEuZGlyZWN0b3J5PWZ1bmN0aW9uKGcsTyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBnPT09dm9pZCAwPyIiOnRoaXM7aWYoZz09PXZvaWQgMHx8Zz09PSEwKXtpZighdGhpcy5fcGFydHMucGF0aCYmIXRoaXMuX3BhcnRzLmhvc3RuYW1lKXJldHVybiIiO2lmKHRoaXMuX3BhcnRzLnBhdGg9PT0iLyIpcmV0dXJuIi8iO3ZhciBEPXRoaXMuX3BhcnRzLnBhdGgubGVuZ3RoLXRoaXMuZmlsZW5hbWUoKS5sZW5ndGgtMSx3PXRoaXMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKDAsRCl8fCh0aGlzLl9wYXJ0cy5ob3N0bmFtZT8iLyI6IiIpO3JldHVybiBnP28uZGVjb2RlUGF0aCh3KTp3fWVsc2V7dmFyIHg9dGhpcy5fcGFydHMucGF0aC5sZW5ndGgtdGhpcy5maWxlbmFtZSgpLmxlbmd0aCxIPXRoaXMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKDAseCksaj1uZXcgUmVnRXhwKCJeIitBKEgpKTtyZXR1cm4gdGhpcy5pcygicmVsYXRpdmUiKXx8KGd8fChnPSIvIiksZy5jaGFyQXQoMCkhPT0iLyImJihnPSIvIitnKSksZyYmZy5jaGFyQXQoZy5sZW5ndGgtMSkhPT0iLyImJihnKz0iLyIpLGc9by5yZWNvZGVQYXRoKGcpLHRoaXMuX3BhcnRzLnBhdGg9dGhpcy5fcGFydHMucGF0aC5yZXBsYWNlKGosZyksdGhpcy5idWlsZCghTyksdGhpc319LGEuZmlsZW5hbWU9ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZih0eXBlb2YgZyE9InN0cmluZyIpe2lmKCF0aGlzLl9wYXJ0cy5wYXRofHx0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiIiO3ZhciBEPXRoaXMuX3BhcnRzLnBhdGgubGFzdEluZGV4T2YoIi8iKSx3PXRoaXMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKEQrMSk7cmV0dXJuIGc/by5kZWNvZGVQYXRoU2VnbWVudCh3KTp3fWVsc2V7dmFyIHg9ITE7Zy5jaGFyQXQoMCk9PT0iLyImJihnPWcuc3Vic3RyaW5nKDEpKSxnLm1hdGNoKC9cLj9cLy8pJiYoeD0hMCk7dmFyIEg9bmV3IFJlZ0V4cChBKHRoaXMuZmlsZW5hbWUoKSkrIiQiKTtyZXR1cm4gZz1vLnJlY29kZVBhdGgoZyksdGhpcy5fcGFydHMucGF0aD10aGlzLl9wYXJ0cy5wYXRoLnJlcGxhY2UoSCxnKSx4P3RoaXMubm9ybWFsaXplUGF0aChPKTp0aGlzLmJ1aWxkKCFPKSx0aGlzfX0sYS5zdWZmaXg9ZnVuY3Rpb24oZyxPKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIGc9PT12b2lkIDA/IiI6dGhpcztpZihnPT09dm9pZCAwfHxnPT09ITApe2lmKCF0aGlzLl9wYXJ0cy5wYXRofHx0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiIiO3ZhciBEPXRoaXMuZmlsZW5hbWUoKSx3PUQubGFzdEluZGV4T2YoIi4iKSx4LEg7cmV0dXJuIHc9PT0tMT8iIjooeD1ELnN1YnN0cmluZyh3KzEpLEg9L15bYS16MC05JV0rJC9pLnRlc3QoeCk/eDoiIixnP28uZGVjb2RlUGF0aFNlZ21lbnQoSCk6SCl9ZWxzZXtnLmNoYXJBdCgwKT09PSIuIiYmKGc9Zy5zdWJzdHJpbmcoMSkpO3ZhciBqPXRoaXMuc3VmZml4KCksWDtpZihqKWc/WD1uZXcgUmVnRXhwKEEoaikrIiQiKTpYPW5ldyBSZWdFeHAoQSgiLiIraikrIiQiKTtlbHNle2lmKCFnKXJldHVybiB0aGlzO3RoaXMuX3BhcnRzLnBhdGgrPSIuIitvLnJlY29kZVBhdGgoZyl9cmV0dXJuIFgmJihnPW8ucmVjb2RlUGF0aChnKSx0aGlzLl9wYXJ0cy5wYXRoPXRoaXMuX3BhcnRzLnBhdGgucmVwbGFjZShYLGcpKSx0aGlzLmJ1aWxkKCFPKSx0aGlzfX0sYS5zZWdtZW50PWZ1bmN0aW9uKGcsTyxEKXt2YXIgdz10aGlzLl9wYXJ0cy51cm4/IjoiOiIvIix4PXRoaXMucGF0aCgpLEg9eC5zdWJzdHJpbmcoMCwxKT09PSIvIixqPXguc3BsaXQodyk7aWYoZyE9PXZvaWQgMCYmdHlwZW9mIGchPSJudW1iZXIiJiYoRD1PLE89ZyxnPXZvaWQgMCksZyE9PXZvaWQgMCYmdHlwZW9mIGchPSJudW1iZXIiKXRocm93IG5ldyBFcnJvcignQmFkIHNlZ21lbnQgIicrZysnIiwgbXVzdCBiZSAwLWJhc2VkIGludGVnZXInKTtpZihIJiZqLnNoaWZ0KCksZzwwJiYoZz1NYXRoLm1heChqLmxlbmd0aCtnLDApKSxPPT09dm9pZCAwKXJldHVybiBnPT09dm9pZCAwP2o6altnXTtpZihnPT09bnVsbHx8altnXT09PXZvaWQgMClpZihmKE8pKXtqPVtdO2Zvcih2YXIgWD0wLHR0PU8ubGVuZ3RoO1g8dHQ7WCsrKSFPW1hdLmxlbmd0aCYmKCFqLmxlbmd0aHx8IWpbai5sZW5ndGgtMV0ubGVuZ3RoKXx8KGoubGVuZ3RoJiYhaltqLmxlbmd0aC0xXS5sZW5ndGgmJmoucG9wKCksai5wdXNoKEkoT1tYXSkpKX1lbHNlKE98fHR5cGVvZiBPPT0ic3RyaW5nIikmJihPPUkoTyksaltqLmxlbmd0aC0xXT09PSIiP2pbai5sZW5ndGgtMV09TzpqLnB1c2goTykpO2Vsc2UgTz9qW2ddPUkoTyk6ai5zcGxpY2UoZywxKTtyZXR1cm4gSCYmai51bnNoaWZ0KCIiKSx0aGlzLnBhdGgoai5qb2luKHcpLEQpfSxhLnNlZ21lbnRDb2RlZD1mdW5jdGlvbihnLE8sRCl7dmFyIHcseCxIO2lmKHR5cGVvZiBnIT0ibnVtYmVyIiYmKEQ9TyxPPWcsZz12b2lkIDApLE89PT12b2lkIDApe2lmKHc9dGhpcy5zZWdtZW50KGcsTyxEKSwhZih3KSl3PXchPT12b2lkIDA/by5kZWNvZGUodyk6dm9pZCAwO2Vsc2UgZm9yKHg9MCxIPXcubGVuZ3RoO3g8SDt4Kyspd1t4XT1vLmRlY29kZSh3W3hdKTtyZXR1cm4gd31pZighZihPKSlPPXR5cGVvZiBPPT0ic3RyaW5nInx8TyBpbnN0YW5jZW9mIFN0cmluZz9vLmVuY29kZShPKTpPO2Vsc2UgZm9yKHg9MCxIPU8ubGVuZ3RoO3g8SDt4KyspT1t4XT1vLmVuY29kZShPW3hdKTtyZXR1cm4gdGhpcy5zZWdtZW50KGcsTyxEKX07dmFyIGM9YS5xdWVyeTtyZXR1cm4gYS5xdWVyeT1mdW5jdGlvbihnLE8pe2lmKGc9PT0hMClyZXR1cm4gby5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO2lmKHR5cGVvZiBnPT0iZnVuY3Rpb24iKXt2YXIgRD1vLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdz1nLmNhbGwodGhpcyxEKTtyZXR1cm4gdGhpcy5fcGFydHMucXVlcnk9by5idWlsZFF1ZXJ5KHd8fEQsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHRoaXMuYnVpbGQoIU8pLHRoaXN9ZWxzZSByZXR1cm4gZyE9PXZvaWQgMCYmdHlwZW9mIGchPSJzdHJpbmciPyh0aGlzLl9wYXJ0cy5xdWVyeT1vLmJ1aWxkUXVlcnkoZyx0aGlzLl9wYXJ0cy5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdGhpcy5idWlsZCghTyksdGhpcyk6Yy5jYWxsKHRoaXMsZyxPKX0sYS5zZXRRdWVyeT1mdW5jdGlvbihnLE8sRCl7dmFyIHc9by5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO2lmKHR5cGVvZiBnPT0ic3RyaW5nInx8ZyBpbnN0YW5jZW9mIFN0cmluZyl3W2ddPU8hPT12b2lkIDA/TzpudWxsO2Vsc2UgaWYodHlwZW9mIGc9PSJvYmplY3QiKWZvcih2YXIgeCBpbiBnKWguY2FsbChnLHgpJiYod1t4XT1nW3hdKTtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5hZGRRdWVyeSgpIGFjY2VwdHMgYW4gb2JqZWN0LCBzdHJpbmcgYXMgdGhlIG5hbWUgcGFyYW1ldGVyIik7cmV0dXJuIHRoaXMuX3BhcnRzLnF1ZXJ5PW8uYnVpbGRRdWVyeSh3LHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycyx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx0eXBlb2YgZyE9InN0cmluZyImJihEPU8pLHRoaXMuYnVpbGQoIUQpLHRoaXN9LGEuYWRkUXVlcnk9ZnVuY3Rpb24oZyxPLEQpe3ZhciB3PW8ucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKTtyZXR1cm4gby5hZGRRdWVyeSh3LGcsTz09PXZvaWQgMD9udWxsOk8pLHRoaXMuX3BhcnRzLnF1ZXJ5PW8uYnVpbGRRdWVyeSh3LHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycyx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx0eXBlb2YgZyE9InN0cmluZyImJihEPU8pLHRoaXMuYnVpbGQoIUQpLHRoaXN9LGEucmVtb3ZlUXVlcnk9ZnVuY3Rpb24oZyxPLEQpe3ZhciB3PW8ucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKTtyZXR1cm4gby5yZW1vdmVRdWVyeSh3LGcsTyksdGhpcy5fcGFydHMucXVlcnk9by5idWlsZFF1ZXJ5KHcsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHR5cGVvZiBnIT0ic3RyaW5nIiYmKEQ9TyksdGhpcy5idWlsZCghRCksdGhpc30sYS5oYXNRdWVyeT1mdW5jdGlvbihnLE8sRCl7dmFyIHc9by5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO3JldHVybiBvLmhhc1F1ZXJ5KHcsZyxPLEQpfSxhLnNldFNlYXJjaD1hLnNldFF1ZXJ5LGEuYWRkU2VhcmNoPWEuYWRkUXVlcnksYS5yZW1vdmVTZWFyY2g9YS5yZW1vdmVRdWVyeSxhLmhhc1NlYXJjaD1hLmhhc1F1ZXJ5LGEubm9ybWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcnRzLnVybj90aGlzLm5vcm1hbGl6ZVByb3RvY29sKCExKS5ub3JtYWxpemVQYXRoKCExKS5ub3JtYWxpemVRdWVyeSghMSkubm9ybWFsaXplRnJhZ21lbnQoITEpLmJ1aWxkKCk6dGhpcy5ub3JtYWxpemVQcm90b2NvbCghMSkubm9ybWFsaXplSG9zdG5hbWUoITEpLm5vcm1hbGl6ZVBvcnQoITEpLm5vcm1hbGl6ZVBhdGgoITEpLm5vcm1hbGl6ZVF1ZXJ5KCExKS5ub3JtYWxpemVGcmFnbWVudCghMSkuYnVpbGQoKX0sYS5ub3JtYWxpemVQcm90b2NvbD1mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIHRoaXMuX3BhcnRzLnByb3RvY29sPT0ic3RyaW5nIiYmKHRoaXMuX3BhcnRzLnByb3RvY29sPXRoaXMuX3BhcnRzLnByb3RvY29sLnRvTG93ZXJDYXNlKCksdGhpcy5idWlsZCghZykpLHRoaXN9LGEubm9ybWFsaXplSG9zdG5hbWU9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lJiYodGhpcy5pcygiSUROIikmJnQ/dGhpcy5fcGFydHMuaG9zdG5hbWU9dC50b0FTQ0lJKHRoaXMuX3BhcnRzLmhvc3RuYW1lKTp0aGlzLmlzKCJJUHY2IikmJmUmJih0aGlzLl9wYXJ0cy5ob3N0bmFtZT1lLmJlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpKSx0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpLHRoaXMuYnVpbGQoIWcpKSx0aGlzfSxhLm5vcm1hbGl6ZVBvcnQ9ZnVuY3Rpb24oZyl7cmV0dXJuIHR5cGVvZiB0aGlzLl9wYXJ0cy5wcm90b2NvbD09InN0cmluZyImJnRoaXMuX3BhcnRzLnBvcnQ9PT1vLmRlZmF1bHRQb3J0c1t0aGlzLl9wYXJ0cy5wcm90b2NvbF0mJih0aGlzLl9wYXJ0cy5wb3J0PW51bGwsdGhpcy5idWlsZCghZykpLHRoaXN9LGEubm9ybWFsaXplUGF0aD1mdW5jdGlvbihnKXt2YXIgTz10aGlzLl9wYXJ0cy5wYXRoO2lmKCFPKXJldHVybiB0aGlzO2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gdGhpcy5fcGFydHMucGF0aD1vLnJlY29kZVVyblBhdGgodGhpcy5fcGFydHMucGF0aCksdGhpcy5idWlsZCghZyksdGhpcztpZih0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiB0aGlzO089by5yZWNvZGVQYXRoKE8pO3ZhciBELHc9IiIseCxIO2ZvcihPLmNoYXJBdCgwKSE9PSIvIiYmKEQ9ITAsTz0iLyIrTyksKE8uc2xpY2UoLTMpPT09Ii8uLiJ8fE8uc2xpY2UoLTIpPT09Ii8uIikmJihPKz0iLyIpLE89Ty5yZXBsYWNlKC8oXC8oXC5cLykrKXwoXC9cLiQpL2csIi8iKS5yZXBsYWNlKC9cL3syLH0vZywiLyIpLEQmJih3PU8uc3Vic3RyaW5nKDEpLm1hdGNoKC9eKFwuXC5cLykrLyl8fCIiLHcmJih3PXdbMF0pKTt4PU8uc2VhcmNoKC9cL1wuXC4oXC98JCkvKSx4IT09LTE7KXtpZih4PT09MCl7Tz1PLnN1YnN0cmluZygzKTtjb250aW51ZX1IPU8uc3Vic3RyaW5nKDAseCkubGFzdEluZGV4T2YoIi8iKSxIPT09LTEmJihIPXgpLE89Ty5zdWJzdHJpbmcoMCxIKStPLnN1YnN0cmluZyh4KzMpfXJldHVybiBEJiZ0aGlzLmlzKCJyZWxhdGl2ZSIpJiYoTz13K08uc3Vic3RyaW5nKDEpKSx0aGlzLl9wYXJ0cy5wYXRoPU8sdGhpcy5idWlsZCghZyksdGhpc30sYS5ub3JtYWxpemVQYXRobmFtZT1hLm5vcm1hbGl6ZVBhdGgsYS5ub3JtYWxpemVRdWVyeT1mdW5jdGlvbihnKXtyZXR1cm4gdHlwZW9mIHRoaXMuX3BhcnRzLnF1ZXJ5PT0ic3RyaW5nIiYmKHRoaXMuX3BhcnRzLnF1ZXJ5Lmxlbmd0aD90aGlzLnF1ZXJ5KG8ucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSk6dGhpcy5fcGFydHMucXVlcnk9bnVsbCx0aGlzLmJ1aWxkKCFnKSksdGhpc30sYS5ub3JtYWxpemVGcmFnbWVudD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fcGFydHMuZnJhZ21lbnR8fCh0aGlzLl9wYXJ0cy5mcmFnbWVudD1udWxsLHRoaXMuYnVpbGQoIWcpKSx0aGlzfSxhLm5vcm1hbGl6ZVNlYXJjaD1hLm5vcm1hbGl6ZVF1ZXJ5LGEubm9ybWFsaXplSGFzaD1hLm5vcm1hbGl6ZUZyYWdtZW50LGEuaXNvODg1OT1mdW5jdGlvbigpe3ZhciBnPW8uZW5jb2RlLE89by5kZWNvZGU7by5lbmNvZGU9ZXNjYXBlLG8uZGVjb2RlPWRlY29kZVVSSUNvbXBvbmVudDt0cnl7dGhpcy5ub3JtYWxpemUoKX1maW5hbGx5e28uZW5jb2RlPWcsby5kZWNvZGU9T31yZXR1cm4gdGhpc30sYS51bmljb2RlPWZ1bmN0aW9uKCl7dmFyIGc9by5lbmNvZGUsTz1vLmRlY29kZTtvLmVuY29kZT1OLG8uZGVjb2RlPXVuZXNjYXBlO3RyeXt0aGlzLm5vcm1hbGl6ZSgpfWZpbmFsbHl7by5lbmNvZGU9ZyxvLmRlY29kZT1PfXJldHVybiB0aGlzfSxhLnJlYWRhYmxlPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcy5jbG9uZSgpO2cudXNlcm5hbWUoIiIpLnBhc3N3b3JkKCIiKS5ub3JtYWxpemUoKTt2YXIgTz0iIjtpZihnLl9wYXJ0cy5wcm90b2NvbCYmKE8rPWcuX3BhcnRzLnByb3RvY29sKyI6Ly8iKSxnLl9wYXJ0cy5ob3N0bmFtZSYmKGcuaXMoInB1bnljb2RlIikmJnQ/KE8rPXQudG9Vbmljb2RlKGcuX3BhcnRzLmhvc3RuYW1lKSxnLl9wYXJ0cy5wb3J0JiYoTys9IjoiK2cuX3BhcnRzLnBvcnQpKTpPKz1nLmhvc3QoKSksZy5fcGFydHMuaG9zdG5hbWUmJmcuX3BhcnRzLnBhdGgmJmcuX3BhcnRzLnBhdGguY2hhckF0KDApIT09Ii8iJiYoTys9Ii8iKSxPKz1nLnBhdGgoITApLGcuX3BhcnRzLnF1ZXJ5KXtmb3IodmFyIEQ9IiIsdz0wLHg9Zy5fcGFydHMucXVlcnkuc3BsaXQoIiYiKSxIPXgubGVuZ3RoO3c8SDt3Kyspe3ZhciBqPSh4W3ddfHwiIikuc3BsaXQoIj0iKTtEKz0iJiIrby5kZWNvZGVRdWVyeShqWzBdLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLnJlcGxhY2UoLyYvZywiJTI2IiksalsxXSE9PXZvaWQgMCYmKEQrPSI9IitvLmRlY29kZVF1ZXJ5KGpbMV0sdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSkucmVwbGFjZSgvJi9nLCIlMjYiKSl9Tys9Ij8iK0Quc3Vic3RyaW5nKDEpfXJldHVybiBPKz1vLmRlY29kZVF1ZXJ5KGcuaGFzaCgpLCEwKSxPfSxhLmFic29sdXRlVG89ZnVuY3Rpb24oZyl7dmFyIE89dGhpcy5jbG9uZSgpLEQ9WyJwcm90b2NvbCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJob3N0bmFtZSIsInBvcnQiXSx3LHgsSDtpZih0aGlzLl9wYXJ0cy51cm4pdGhyb3cgbmV3IEVycm9yKCJVUk5zIGRvIG5vdCBoYXZlIGFueSBnZW5lcmFsbHkgZGVmaW5lZCBoaWVyYXJjaGljYWwgY29tcG9uZW50cyIpO2lmKGcgaW5zdGFuY2VvZiBvfHwoZz1uZXcgbyhnKSksTy5fcGFydHMucHJvdG9jb2x8fChPLl9wYXJ0cy5wcm90b2NvbD1nLl9wYXJ0cy5wcm90b2NvbCx0aGlzLl9wYXJ0cy5ob3N0bmFtZSkpcmV0dXJuIE87Zm9yKHg9MDtIPURbeF07eCsrKU8uX3BhcnRzW0hdPWcuX3BhcnRzW0hdO3JldHVybiBPLl9wYXJ0cy5wYXRoPyhPLl9wYXJ0cy5wYXRoLnN1YnN0cmluZygtMik9PT0iLi4iJiYoTy5fcGFydHMucGF0aCs9Ii8iKSxPLnBhdGgoKS5jaGFyQXQoMCkhPT0iLyImJih3PWcuZGlyZWN0b3J5KCksdz13fHwoZy5wYXRoKCkuaW5kZXhPZigiLyIpPT09MD8iLyI6IiIpLE8uX3BhcnRzLnBhdGg9KHc/dysiLyI6IiIpK08uX3BhcnRzLnBhdGgsTy5ub3JtYWxpemVQYXRoKCkpKTooTy5fcGFydHMucGF0aD1nLl9wYXJ0cy5wYXRoLE8uX3BhcnRzLnF1ZXJ5fHwoTy5fcGFydHMucXVlcnk9Zy5fcGFydHMucXVlcnkpKSxPLmJ1aWxkKCksT30sYS5yZWxhdGl2ZVRvPWZ1bmN0aW9uKGcpe3ZhciBPPXRoaXMuY2xvbmUoKS5ub3JtYWxpemUoKSxELHcseCxILGo7aWYoTy5fcGFydHMudXJuKXRocm93IG5ldyBFcnJvcigiVVJOcyBkbyBub3QgaGF2ZSBhbnkgZ2VuZXJhbGx5IGRlZmluZWQgaGllcmFyY2hpY2FsIGNvbXBvbmVudHMiKTtpZihnPW5ldyBvKGcpLm5vcm1hbGl6ZSgpLEQ9Ty5fcGFydHMsdz1nLl9wYXJ0cyxIPU8ucGF0aCgpLGo9Zy5wYXRoKCksSC5jaGFyQXQoMCkhPT0iLyIpdGhyb3cgbmV3IEVycm9yKCJVUkkgaXMgYWxyZWFkeSByZWxhdGl2ZSIpO2lmKGouY2hhckF0KDApIT09Ii8iKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNhbGN1bGF0ZSBhIFVSSSByZWxhdGl2ZSB0byBhbm90aGVyIHJlbGF0aXZlIFVSSSIpO2lmKEQucHJvdG9jb2w9PT13LnByb3RvY29sJiYoRC5wcm90b2NvbD1udWxsKSxELnVzZXJuYW1lIT09dy51c2VybmFtZXx8RC5wYXNzd29yZCE9PXcucGFzc3dvcmR8fEQucHJvdG9jb2whPT1udWxsfHxELnVzZXJuYW1lIT09bnVsbHx8RC5wYXNzd29yZCE9PW51bGwpcmV0dXJuIE8uYnVpbGQoKTtpZihELmhvc3RuYW1lPT09dy5ob3N0bmFtZSYmRC5wb3J0PT09dy5wb3J0KUQuaG9zdG5hbWU9bnVsbCxELnBvcnQ9bnVsbDtlbHNlIHJldHVybiBPLmJ1aWxkKCk7aWYoSD09PWopcmV0dXJuIEQucGF0aD0iIixPLmJ1aWxkKCk7aWYoeD1vLmNvbW1vblBhdGgoSCxqKSwheClyZXR1cm4gTy5idWlsZCgpO3ZhciBYPXcucGF0aC5zdWJzdHJpbmcoeC5sZW5ndGgpLnJlcGxhY2UoL1teXC9dKiQvLCIiKS5yZXBsYWNlKC8uKj9cLy9nLCIuLi8iKTtyZXR1cm4gRC5wYXRoPVgrRC5wYXRoLnN1YnN0cmluZyh4Lmxlbmd0aCl8fCIuLyIsTy5idWlsZCgpfSxhLmVxdWFscz1mdW5jdGlvbihnKXt2YXIgTz10aGlzLmNsb25lKCksRD1uZXcgbyhnKSx3PXt9LHg9e30sSD17fSxqLFgsdHQ7aWYoTy5ub3JtYWxpemUoKSxELm5vcm1hbGl6ZSgpLE8udG9TdHJpbmcoKT09PUQudG9TdHJpbmcoKSlyZXR1cm4hMDtpZihqPU8ucXVlcnkoKSxYPUQucXVlcnkoKSxPLnF1ZXJ5KCIiKSxELnF1ZXJ5KCIiKSxPLnRvU3RyaW5nKCkhPT1ELnRvU3RyaW5nKCl8fGoubGVuZ3RoIT09WC5sZW5ndGgpcmV0dXJuITE7dz1vLnBhcnNlUXVlcnkoaix0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx4PW8ucGFyc2VRdWVyeShYLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO2Zvcih0dCBpbiB3KWlmKGguY2FsbCh3LHR0KSl7aWYoZih3W3R0XSkpe2lmKCFSKHdbdHRdLHhbdHRdKSlyZXR1cm4hMX1lbHNlIGlmKHdbdHRdIT09eFt0dF0pcmV0dXJuITE7SFt0dF09ITB9Zm9yKHR0IGluIHgpaWYoaC5jYWxsKHgsdHQpJiYhSFt0dF0pcmV0dXJuITE7cmV0dXJuITB9LGEucHJldmVudEludmFsaWRIb3N0bmFtZT1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fcGFydHMucHJldmVudEludmFsaWRIb3N0bmFtZT0hIWcsdGhpc30sYS5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycz0hIWcsdGhpc30sYS5lc2NhcGVRdWVyeVNwYWNlPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlPSEhZyx0aGlzfSxvfSl9KTtmdW5jdGlvbiBUcSh0KXtyZXR1cm4odC5sZW5ndGg9PT0wfHx0W3QubGVuZ3RoLTFdIT09Ii8iKSYmKHQ9YCR7dH0vYCksdH12YXIgQzIsZzI9UygoKT0+e0MyPVRxfSk7ZnVuY3Rpb24gVDIodCxlKXtpZih0PT09bnVsbHx8dHlwZW9mIHQhPSJvYmplY3QiKXJldHVybiB0O2U9WihlLCExKTtsZXQgaT1uZXcgdC5jb25zdHJ1Y3Rvcjtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtsZXQgcz10W25dO2UmJihzPVQyKHMsZSkpLGlbbl09c31yZXR1cm4gaX12YXIgcXMsYUU9UygoKT0+e0Z0KCk7cXM9VDJ9KTtmdW5jdGlvbiBOMih0LGUsaSl7aT1aKGksITEpO2xldCBuPXt9LHM9bSh0KSxvPW0oZSkscixhLGg7aWYocylmb3IociBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJihhPXRbcl0sbyYmaSYmdHlwZW9mIGE9PSJvYmplY3QiJiZlLmhhc093blByb3BlcnR5KHIpPyhoPWVbcl0sdHlwZW9mIGg9PSJvYmplY3QiP25bcl09TjIoYSxoLGkpOm5bcl09YSk6bltyXT1hKTtpZihvKWZvcihyIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmIW4uaGFzT3duUHJvcGVydHkocikmJihoPWVbcl0sbltyXT1oKTtyZXR1cm4gbn12YXIgZXMsS0E9UygoKT0+e0Z0KCk7bXQoKTtlcz1OMn0pO2Z1bmN0aW9uIE5xKCl7bGV0IHQsZSxpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scyl7dD1uLGU9c30pO3JldHVybntyZXNvbHZlOnQscmVqZWN0OmUscHJvbWlzZTppfX12YXIgRWwsbTA9UygoKT0+e0VsPU5xfSk7ZnVuY3Rpb24gZjAodCxlKXtsZXQgaTtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PCJ1IiYmKGk9ZG9jdW1lbnQpLGYwLl9pbXBsZW1lbnRhdGlvbih0LGUsaSl9dmFyIEYyLEFFLEUwPVMoKCk9PntGMj1jbyhvYygpLDEpO0Z0KCk7bXQoKTtPdCgpO2YwLl9pbXBsZW1lbnRhdGlvbj1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJlbGF0aXZlIHVyaSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl7aWYodHlwZW9mIGk+InUiKXJldHVybiB0O2U9WihpLmJhc2VVUkksaS5sb2NhdGlvbi5ocmVmKX1sZXQgbj1uZXcgRjIuZGVmYXVsdCh0KTtyZXR1cm4gbi5zY2hlbWUoKSE9PSIiP24udG9TdHJpbmcoKTpuLmFic29sdXRlVG8oZSkudG9TdHJpbmcoKX07QUU9ZjB9KTtmdW5jdGlvbiBGcSh0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ1cmkgaXMgcmVxdWlyZWQuIik7bGV0IGk9IiIsbj10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIG4hPT0tMSYmKGk9dC5zdWJzdHJpbmcoMCxuKzEpKSxlJiYodD1uZXcgYjIuZGVmYXVsdCh0KSx0LnF1ZXJ5KCkubGVuZ3RoIT09MCYmKGkrPWA/JHt0LnF1ZXJ5KCl9YCksdC5mcmFnbWVudCgpLmxlbmd0aCE9PTAmJihpKz1gIyR7dC5mcmFnbWVudCgpfWApKSxpfXZhciBiMixZMixWMj1TKCgpPT57YjI9Y28ob2MoKSwxKTttdCgpO090KCk7WTI9RnF9KTtmdW5jdGlvbiBicSh0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidXJpIGlzIHJlcXVpcmVkLiIpO2xldCBlPW5ldyBTMi5kZWZhdWx0KHQpO2Uubm9ybWFsaXplKCk7bGV0IGk9ZS5wYXRoKCksbj1pLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIG4hPT0tMSYmKGk9aS5zdWJzdHIobisxKSksbj1pLmxhc3RJbmRleE9mKCIuIiksbj09PS0xP2k9IiI6aT1pLnN1YnN0cihuKzEpLGl9dmFyIFMyLE8yLEIyPVMoKCk9PntTMj1jbyhvYygpLDEpO210KCk7T3QoKTtPMj1icX0pO2Z1bmN0aW9uIFlxKHQsZSxpKXttKGUpfHwoZT10LndpZHRoKSxtKGkpfHwoaT10LmhlaWdodCk7bGV0IG49RzJbZV07bShuKXx8KG49e30sRzJbZV09bik7bGV0IHM9bltpXTtpZighbShzKSl7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7by53aWR0aD1lLG8uaGVpZ2h0PWkscz1vLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkscy5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249ImNvcHkiLG5baV09c31yZXR1cm4gcy5kcmF3SW1hZ2UodCwwLDAsZSxpKSxzLmdldEltYWdlRGF0YSgwLDAsZSxpKS5kYXRhfXZhciBHMixfMCxXMj1TKCgpPT57bXQoKTtHMj17fTtfMD1ZcX0pO2Z1bmN0aW9uIFNxKHQpe3JldHVybiBwLnR5cGVPZi5zdHJpbmcoInVyaSIsdCksVnEudGVzdCh0KX12YXIgVnEsUlosUjA9UygoKT0+e2FlKCk7VnE9L15ibG9iOi9pO1JaPVNxfSk7ZnVuY3Rpb24gT3EodCl7bShhQSl8fChhQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLGFBLmhyZWY9d2luZG93LmxvY2F0aW9uLmhyZWY7bGV0IGU9YUEuaG9zdCxpPWFBLnByb3RvY29sO3JldHVybiBhQS5ocmVmPXQsYUEuaHJlZj1hQS5ocmVmLGkhPT1hQS5wcm90b2NvbHx8ZSE9PWFBLmhvc3R9dmFyIGFBLFpaLFowPVMoKCk9PnttdCgpO1paPU9xfSk7ZnVuY3Rpb24gR3EodCl7cmV0dXJuIHAudHlwZU9mLnN0cmluZygidXJpIix0KSxCcS50ZXN0KHQpfXZhciBCcSxJWixJMD1TKCgpPT57YWUoKTtCcT0vXmRhdGE6L2k7SVo9R3F9KTtmdW5jdGlvbiBXcSh0KXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtyZXR1cm4gZS5hc3luYz0hMCxlLnNyYz10LG5ldyBQcm9taXNlKChpLG4pPT57d2luZG93LmNyb3NzT3JpZ2luSXNvbGF0ZWQmJmUuc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsImFub255bW91cyIpO2xldCBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07ZS5vbmxvYWQ9ZnVuY3Rpb24oKXtlLm9ubG9hZD12b2lkIDAscy5yZW1vdmVDaGlsZChlKSxpKCl9LGUub25lcnJvcj1mdW5jdGlvbihvKXtuKG8pfSxzLmFwcGVuZENoaWxkKGUpfSl9dmFyIEQyLFUyPVMoKCk9PntEMj1XcX0pO2Z1bmN0aW9uIERxKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJvYmogaXMgcmVxdWlyZWQuIik7bGV0IGU9IiI7Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IG49dFtpXSxzPWAke2VuY29kZVVSSUNvbXBvbmVudChpKX09YDtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgbz0wLHI9bi5sZW5ndGg7bzxyOysrbyllKz1gJHtzK2VuY29kZVVSSUNvbXBvbmVudChuW29dKX0mYDtlbHNlIGUrPWAke3MrZW5jb2RlVVJJQ29tcG9uZW50KG4pfSZgfXJldHVybiBlPWUuc2xpY2UoMCwtMSksZX12YXIgTTIsUTI9UygoKT0+e210KCk7T3QoKTtNMj1EcX0pO2Z1bmN0aW9uIFVxKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJxdWVyeVN0cmluZyBpcyByZXF1aXJlZC4iKTtsZXQgZT17fTtpZih0PT09IiIpcmV0dXJuIGU7bGV0IGk9dC5yZXBsYWNlKC9cKy9nLCIlMjAiKS5zcGxpdCgvWyY7XS8pO2ZvcihsZXQgbj0wLHM9aS5sZW5ndGg7bjxzOysrbil7bGV0IG89aVtuXS5zcGxpdCgiPSIpLHI9ZGVjb2RlVVJJQ29tcG9uZW50KG9bMF0pLGE9b1sxXTttKGEpP2E9ZGVjb2RlVVJJQ29tcG9uZW50KGEpOmE9IiI7bGV0IGg9ZVtyXTt0eXBlb2YgaD09InN0cmluZyI/ZVtyXT1baCxhXTpBcnJheS5pc0FycmF5KGgpP2gucHVzaChhKTplW3JdPWF9cmV0dXJuIGV9dmFyIGsyLEwyPVMoKCk9PnttdCgpO090KCk7azI9VXF9KTt2YXIgTXEsTW4scFo9UygoKT0+e01xPXtVTklTU1VFRDowLElTU1VFRDoxLEFDVElWRToyLFJFQ0VJVkVEOjMsQ0FOQ0VMTEVEOjQsRkFJTEVEOjV9LE1uPU9iamVjdC5mcmVlemUoTXEpfSk7dmFyIFFxLHkyLHcyPVMoKCk9PntRcT17VEVSUkFJTjowLElNQUdFUlk6MSxUSUxFUzNEOjIsT1RIRVI6M30seTI9T2JqZWN0LmZyZWV6ZShRcSl9KTtmdW5jdGlvbiB1Wih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9Wih0LnRocm90dGxlQnlTZXJ2ZXIsITEpLGk9Wih0LnRocm90dGxlLCExKTt0aGlzLnVybD10LnVybCx0aGlzLnJlcXVlc3RGdW5jdGlvbj10LnJlcXVlc3RGdW5jdGlvbix0aGlzLmNhbmNlbEZ1bmN0aW9uPXQuY2FuY2VsRnVuY3Rpb24sdGhpcy5wcmlvcml0eUZ1bmN0aW9uPXQucHJpb3JpdHlGdW5jdGlvbix0aGlzLnByaW9yaXR5PVoodC5wcmlvcml0eSwwKSx0aGlzLnRocm90dGxlPWksdGhpcy50aHJvdHRsZUJ5U2VydmVyPWUsdGhpcy50eXBlPVoodC50eXBlLHkyLk9USEVSKSx0aGlzLnNlcnZlcktleT10LnNlcnZlcktleSx0aGlzLnN0YXRlPU1uLlVOSVNTVUVELHRoaXMuZGVmZXJyZWQ9dm9pZCAwLHRoaXMuY2FuY2VsbGVkPSExfXZhciB4MixQMj1TKCgpPT57RnQoKTttdCgpO3BaKCk7dzIoKTt1Wi5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxsZWQ9ITB9O3VaLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC51cmw9dGhpcy51cmwsdC5yZXF1ZXN0RnVuY3Rpb249dGhpcy5yZXF1ZXN0RnVuY3Rpb24sdC5jYW5jZWxGdW5jdGlvbj10aGlzLmNhbmNlbEZ1bmN0aW9uLHQucHJpb3JpdHlGdW5jdGlvbj10aGlzLnByaW9yaXR5RnVuY3Rpb24sdC5wcmlvcml0eT10aGlzLnByaW9yaXR5LHQudGhyb3R0bGU9dGhpcy50aHJvdHRsZSx0LnRocm90dGxlQnlTZXJ2ZXI9dGhpcy50aHJvdHRsZUJ5U2VydmVyLHQudHlwZT10aGlzLnR5cGUsdC5zZXJ2ZXJLZXk9dGhpcy5zZXJ2ZXJLZXksdC5zdGF0ZT1Nbi5VTklTU1VFRCx0LmRlZmVycmVkPXZvaWQgMCx0LmNhbmNlbGxlZD0hMSx0KTpuZXcgdVoodGhpcyl9O3gyPXVafSk7ZnVuY3Rpb24ga3EodCl7bGV0IGU9e307aWYoIXQpcmV0dXJuIGU7bGV0IGk9dC5zcGxpdChgXHIKYCk7Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDsrK24pe2xldCBzPWlbbl0sbz1zLmluZGV4T2YoIjogIik7aWYobz4wKXtsZXQgcj1zLnN1YnN0cmluZygwLG8pLGE9cy5zdWJzdHJpbmcobysyKTtlW3JdPWF9fXJldHVybiBlfXZhciBKMixqMj1TKCgpPT57SjI9a3F9KTtmdW5jdGlvbiBIMih0LGUsaSl7dGhpcy5zdGF0dXNDb2RlPXQsdGhpcy5yZXNwb25zZT1lLHRoaXMucmVzcG9uc2VIZWFkZXJzPWksdHlwZW9mIHRoaXMucmVzcG9uc2VIZWFkZXJzPT0ic3RyaW5nIiYmKHRoaXMucmVzcG9uc2VIZWFkZXJzPUoyKHRoaXMucmVzcG9uc2VIZWFkZXJzKSl9dmFyIGhFLHYyPVMoKCk9PnttdCgpO2oyKCk7SDIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHQ9IlJlcXVlc3QgaGFzIGZhaWxlZC4iO3JldHVybiBtKHRoaXMuc3RhdHVzQ29kZSkmJih0Kz1gIFN0YXR1cyBDb2RlOiAke3RoaXMuc3RhdHVzQ29kZX1gKSx0fTtoRT1IMn0pO2Z1bmN0aW9uIF9sKHQpe3AudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbXBhcmF0b3IiLHQuY29tcGFyYXRvciksdGhpcy5fY29tcGFyYXRvcj10LmNvbXBhcmF0b3IsdGhpcy5fYXJyYXk9W10sdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWF4aW11bUxlbmd0aD12b2lkIDB9ZnVuY3Rpb24gcDAodCxlLGkpe2xldCBuPXRbZV07dFtlXT10W2ldLHRbaV09bn12YXIgejIsSzI9UygoKT0+e2FlKCk7RnQoKTttdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKF9sLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGVuZ3RofX0saW50ZXJuYWxBcnJheTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fX0sbWF4aW11bUxlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heGltdW1MZW5ndGh9LHNldDpmdW5jdGlvbih0KXtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygibWF4aW11bUxlbmd0aCIsdCwwKTtsZXQgZT10aGlzLl9sZW5ndGg7aWYodDxlKXtsZXQgaT10aGlzLl9hcnJheTtmb3IobGV0IG49dDtuPGU7KytuKWlbbl09dm9pZCAwO3RoaXMuX2xlbmd0aD10LGkubGVuZ3RoPXR9dGhpcy5fbWF4aW11bUxlbmd0aD10fX0sY29tcGFyYXRvcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBhcmF0b3J9fX0pO19sLnByb3RvdHlwZS5yZXNlcnZlPWZ1bmN0aW9uKHQpe3Q9Wih0LHRoaXMuX2xlbmd0aCksdGhpcy5fYXJyYXkubGVuZ3RoPXR9O19sLnByb3RvdHlwZS5oZWFwaWZ5PWZ1bmN0aW9uKHQpe3Q9Wih0LDApO2xldCBlPXRoaXMuX2xlbmd0aCxpPXRoaXMuX2NvbXBhcmF0b3Isbj10aGlzLl9hcnJheSxzPS0xLG89ITA7Zm9yKDtvOyl7bGV0IHI9MioodCsxKSxhPXItMTthPGUmJmkoblthXSxuW3RdKTwwP3M9YTpzPXQscjxlJiZpKG5bcl0sbltzXSk8MCYmKHM9cikscyE9PXQ/KHAwKG4scyx0KSx0PXMpOm89ITF9fTtfbC5wcm90b3R5cGUucmVzb3J0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fbGVuZ3RoO2ZvcihsZXQgZT1NYXRoLmNlaWwodC8yKTtlPj0wOy0tZSl0aGlzLmhlYXBpZnkoZSl9O19sLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJlbGVtZW50Iix0KTtsZXQgZT10aGlzLl9hcnJheSxpPXRoaXMuX2NvbXBhcmF0b3Isbj10aGlzLl9tYXhpbXVtTGVuZ3RoLHM9dGhpcy5fbGVuZ3RoKys7Zm9yKHM8ZS5sZW5ndGg/ZVtzXT10OmUucHVzaCh0KTtzIT09MDspe2xldCByPU1hdGguZmxvb3IoKHMtMSkvMik7aWYoaShlW3NdLGVbcl0pPDApcDAoZSxzLHIpLHM9cjtlbHNlIGJyZWFrfWxldCBvO3JldHVybiBtKG4pJiZ0aGlzLl9sZW5ndGg+biYmKG89ZVtuXSx0aGlzLl9sZW5ndGg9biksb307X2wucHJvdG90eXBlLnBvcD1mdW5jdGlvbih0KXtpZih0PVoodCwwKSx0aGlzLl9sZW5ndGg9PT0wKXJldHVybjtwLnR5cGVPZi5udW1iZXIubGVzc1RoYW4oImluZGV4Iix0LHRoaXMuX2xlbmd0aCk7bGV0IGU9dGhpcy5fYXJyYXksaT1lW3RdO3JldHVybiBwMChlLHQsLS10aGlzLl9sZW5ndGgpLHRoaXMuaGVhcGlmeSh0KSxlW3RoaXMuX2xlbmd0aF09dm9pZCAwLGl9O3oyPV9sfSk7ZnVuY3Rpb24gTHEodCxlKXtyZXR1cm4gdC5wcmlvcml0eS1lLnByaW9yaXR5fWZ1bmN0aW9uIEJuKCl7fWZ1bmN0aW9uIFgyKHQpe20odC5wcmlvcml0eUZ1bmN0aW9uKSYmKHQucHJpb3JpdHk9dC5wcmlvcml0eUZ1bmN0aW9uKCkpfWZ1bmN0aW9uIHEyKHQpe3JldHVybiB0LnN0YXRlPT09TW4uVU5JU1NVRUQmJih0LnN0YXRlPU1uLklTU1VFRCx0LmRlZmVycmVkPUVsKCkpLHQuZGVmZXJyZWQucHJvbWlzZX1mdW5jdGlvbiB3cSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodC5zdGF0ZT09PU1uLkNBTkNFTExFRClyZXR1cm47bGV0IGk9dC5kZWZlcnJlZDstLVBpLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsLS1YQVt0LnNlcnZlcktleV0sZ1oucmFpc2VFdmVudCgpLHQuc3RhdGU9TW4uUkVDRUlWRUQsdC5kZWZlcnJlZD12b2lkIDAsaS5yZXNvbHZlKGUpfX1mdW5jdGlvbiB4cSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dC5zdGF0ZSE9PU1uLkNBTkNFTExFRCYmKCsrUGkubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cywtLVBpLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsLS1YQVt0LnNlcnZlcktleV0sZ1oucmFpc2VFdmVudChlKSx0LnN0YXRlPU1uLkZBSUxFRCx0LmRlZmVycmVkLnJlamVjdChlKSl9fWZ1bmN0aW9uICQyKHQpe2xldCBlPXEyKHQpO3JldHVybiB0LnN0YXRlPU1uLkFDVElWRSxBQS5wdXNoKHQpLCsrUGkubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cywrK1BpLm51bWJlck9mQWN0aXZlUmVxdWVzdHNFdmVyLCsrWEFbdC5zZXJ2ZXJLZXldLHQucmVxdWVzdEZ1bmN0aW9uKCkudGhlbih3cSh0KSkuY2F0Y2goeHEodCkpLGV9ZnVuY3Rpb24gUmwodCl7bGV0IGU9dC5zdGF0ZT09PU1uLkFDVElWRTtpZih0LnN0YXRlPU1uLkNBTkNFTExFRCwrK1BpLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHMsbSh0LmRlZmVycmVkKSl7bGV0IGk9dC5kZWZlcnJlZDt0LmRlZmVycmVkPXZvaWQgMCxpLnJlamVjdCgpfWUmJigtLVBpLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsLS1YQVt0LnNlcnZlcktleV0sKytQaS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzKSxtKHQuY2FuY2VsRnVuY3Rpb24pJiZ0LmNhbmNlbEZ1bmN0aW9uKCl9ZnVuY3Rpb24gUHEoKXtCbi5kZWJ1Z1Nob3dTdGF0aXN0aWNzJiYoUGkubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz09PTAmJlBpLmxhc3ROdW1iZXJPZkFjdGl2ZVJlcXVlc3RzPjAmJihQaS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzPjAmJihjb25zb2xlLmxvZyhgTnVtYmVyIG9mIGF0dGVtcHRlZCByZXF1ZXN0czogJHtQaS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzfWApLFBpLm51bWJlck9mQXR0ZW1wdGVkUmVxdWVzdHM9MCksUGkubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0cz4wJiYoY29uc29sZS5sb2coYE51bWJlciBvZiBjYW5jZWxsZWQgcmVxdWVzdHM6ICR7UGkubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0c31gKSxQaS5udW1iZXJPZkNhbmNlbGxlZFJlcXVlc3RzPTApLFBpLm51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM+MCYmKGNvbnNvbGUubG9nKGBOdW1iZXIgb2YgY2FuY2VsbGVkIGFjdGl2ZSByZXF1ZXN0czogJHtQaS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzfWApLFBpLm51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM9MCksUGkubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cz4wJiYoY29uc29sZS5sb2coYE51bWJlciBvZiBmYWlsZWQgcmVxdWVzdHM6ICR7UGkubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0c31gKSxQaS5udW1iZXJPZkZhaWxlZFJlcXVlc3RzPTApKSxQaS5sYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz1QaS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzKX12YXIgQ1osUGksdW0sbW8sQUEsWEEseXEsZ1osVFosdFc9UygoKT0+e0NaPWNvKG9jKCksMSk7YWUoKTtGdCgpO20wKCk7bXQoKTt4aSgpO0syKCk7UjAoKTtJMCgpO3BaKCk7UGk9e251bWJlck9mQXR0ZW1wdGVkUmVxdWVzdHM6MCxudW1iZXJPZkFjdGl2ZVJlcXVlc3RzOjAsbnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0czowLG51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM6MCxudW1iZXJPZkZhaWxlZFJlcXVlc3RzOjAsbnVtYmVyT2ZBY3RpdmVSZXF1ZXN0c0V2ZXI6MCxsYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0czowfSx1bT0yMCxtbz1uZXcgejIoe2NvbXBhcmF0b3I6THF9KTttby5tYXhpbXVtTGVuZ3RoPXVtO21vLnJlc2VydmUodW0pO0FBPVtdLFhBPXt9LHlxPXR5cGVvZiBkb2N1bWVudDwidSI/bmV3IENaLmRlZmF1bHQoZG9jdW1lbnQubG9jYXRpb24uaHJlZik6bmV3IENaLmRlZmF1bHQsZ1o9bmV3IFdlO0JuLm1heGltdW1SZXF1ZXN0cz01MDtCbi5tYXhpbXVtUmVxdWVzdHNQZXJTZXJ2ZXI9MTg7Qm4ucmVxdWVzdHNCeVNlcnZlcj17fTtCbi50aHJvdHRsZVJlcXVlc3RzPSEwO0JuLmRlYnVnU2hvd1N0YXRpc3RpY3M9ITE7Qm4ucmVxdWVzdENvbXBsZXRlZEV2ZW50PWdaO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEJuLHtzdGF0aXN0aWNzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUGl9fSxwcmlvcml0eUhlYXBMZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB1bX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHQ8dW0pZm9yKDttby5sZW5ndGg+dDspe2xldCBlPW1vLnBvcCgpO1JsKGUpfXVtPXQsbW8ubWF4aW11bUxlbmd0aD10LG1vLnJlc2VydmUodCl9fX0pO0JuLnNlcnZlckhhc09wZW5TbG90cz1mdW5jdGlvbih0LGUpe2U9WihlLDEpO2xldCBpPVooQm4ucmVxdWVzdHNCeVNlcnZlclt0XSxCbi5tYXhpbXVtUmVxdWVzdHNQZXJTZXJ2ZXIpO3JldHVybiBYQVt0XStlPD1pfTtCbi5oZWFwSGFzT3BlblNsb3RzPWZ1bmN0aW9uKHQpe3JldHVybiBtby5sZW5ndGgrdDw9dW19O0JuLnVwZGF0ZT1mdW5jdGlvbigpe2xldCB0LGUsaT0wLG49QUEubGVuZ3RoO2Zvcih0PTA7dDxuOysrdCl7aWYoZT1BQVt0XSxlLmNhbmNlbGxlZCYmUmwoZSksZS5zdGF0ZSE9PU1uLkFDVElWRSl7KytpO2NvbnRpbnVlfWk+MCYmKEFBW3QtaV09ZSl9QUEubGVuZ3RoLT1pO2xldCBzPW1vLmludGVybmFsQXJyYXksbz1tby5sZW5ndGg7Zm9yKHQ9MDt0PG87Kyt0KVgyKHNbdF0pO21vLnJlc29ydCgpO2xldCByPU1hdGgubWF4KEJuLm1heGltdW1SZXF1ZXN0cy1BQS5sZW5ndGgsMCksYT0wO2Zvcig7YTxyJiZtby5sZW5ndGg+MDspe2lmKGU9bW8ucG9wKCksZS5jYW5jZWxsZWQpe1JsKGUpO2NvbnRpbnVlfWlmKGUudGhyb3R0bGVCeVNlcnZlciYmIUJuLnNlcnZlckhhc09wZW5TbG90cyhlLnNlcnZlcktleSkpe1JsKGUpO2NvbnRpbnVlfSQyKGUpLCsrYX1QcSgpfTtCbi5nZXRTZXJ2ZXJLZXk9ZnVuY3Rpb24odCl7cC50eXBlT2Yuc3RyaW5nKCJ1cmwiLHQpO2xldCBlPW5ldyBDWi5kZWZhdWx0KHQpO2Uuc2NoZW1lKCk9PT0iIiYmKGU9ZS5hYnNvbHV0ZVRvKHlxKSxlLm5vcm1hbGl6ZSgpKTtsZXQgaT1lLmF1dGhvcml0eSgpOy86Ly50ZXN0KGkpfHwoaT1gJHtpfToke2Uuc2NoZW1lKCk9PT0iaHR0cHMiPyI0NDMiOiI4MCJ9YCk7bGV0IG49WEFbaV07cmV0dXJuIG0obil8fChYQVtpXT0wKSxpfTtCbi5yZXF1ZXN0PWZ1bmN0aW9uKHQpe2lmKHAudHlwZU9mLm9iamVjdCgicmVxdWVzdCIsdCkscC50eXBlT2Yuc3RyaW5nKCJyZXF1ZXN0LnVybCIsdC51cmwpLHAudHlwZU9mLmZ1bmMoInJlcXVlc3QucmVxdWVzdEZ1bmN0aW9uIix0LnJlcXVlc3RGdW5jdGlvbiksSVoodC51cmwpfHxSWih0LnVybCkpcmV0dXJuIGdaLnJhaXNlRXZlbnQoKSx0LnN0YXRlPU1uLlJFQ0VJVkVELHQucmVxdWVzdEZ1bmN0aW9uKCk7aWYoKytQaS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzLG0odC5zZXJ2ZXJLZXkpfHwodC5zZXJ2ZXJLZXk9Qm4uZ2V0U2VydmVyS2V5KHQudXJsKSksQm4udGhyb3R0bGVSZXF1ZXN0cyYmdC50aHJvdHRsZUJ5U2VydmVyJiYhQm4uc2VydmVySGFzT3BlblNsb3RzKHQuc2VydmVyS2V5KSlyZXR1cm47aWYoIUJuLnRocm90dGxlUmVxdWVzdHN8fCF0LnRocm90dGxlKXJldHVybiAkMih0KTtpZihBQS5sZW5ndGg+PUJuLm1heGltdW1SZXF1ZXN0cylyZXR1cm47WDIodCk7bGV0IGU9bW8uaW5zZXJ0KHQpO2lmKG0oZSkpe2lmKGU9PT10KXJldHVybjtSbChlKX1yZXR1cm4gcTIodCl9O0JuLmNsZWFyRm9yU3BlY3M9ZnVuY3Rpb24oKXtmb3IoO21vLmxlbmd0aD4wOyl7bGV0IGU9bW8ucG9wKCk7UmwoZSl9bGV0IHQ9QUEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8dDsrK2UpUmwoQUFbZV0pO0FBLmxlbmd0aD0wLFhBPXt9LFBpLm51bWJlck9mQXR0ZW1wdGVkUmVxdWVzdHM9MCxQaS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzPTAsUGkubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0cz0wLFBpLm51bWJlck9mQ2FuY2VsbGVkQWN0aXZlUmVxdWVzdHM9MCxQaS5udW1iZXJPZkZhaWxlZFJlcXVlc3RzPTAsUGkubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0c0V2ZXI9MCxQaS5sYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz0wfTtCbi5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzQnlTZXJ2ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIFhBW3RdfTtCbi5yZXF1ZXN0SGVhcD1tbztUWj1Cbn0pO2Z1bmN0aW9uIGNFKHQpe3RoaXMubmFtZT0iUnVudGltZUVycm9yIix0aGlzLm1lc3NhZ2U9dDtsZXQgZTt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGkpe2U9aS5zdGFja310aGlzLnN0YWNrPWV9dmFyIGtlLFBzPVMoKCk9PnttdCgpO20oT2JqZWN0LmNyZWF0ZSkmJihjRS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGNFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jRSk7Y0UucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHQ9YCR7dGhpcy5uYW1lfTogJHt0aGlzLm1lc3NhZ2V9YDtyZXR1cm4gbSh0aGlzLnN0YWNrKSYmKHQrPWAKJHt0aGlzLnN0YWNrLnRvU3RyaW5nKCl9YCksdH07a2U9Y0V9KTtmdW5jdGlvbiBKcSh0KXtsZXQgZT1uZXcgZVcuZGVmYXVsdCh0KTtlLm5vcm1hbGl6ZSgpO2xldCBpPWUuYXV0aG9yaXR5KCk7aWYoaS5sZW5ndGghPT0wKXtpZihlLmF1dGhvcml0eShpKSxpLmluZGV4T2YoIkAiKSE9PS0xJiYoaT1pLnNwbGl0KCJAIilbMV0pLGkuaW5kZXhPZigiOiIpPT09LTEpe2xldCBuPWUuc2NoZW1lKCk7aWYobi5sZW5ndGg9PT0wJiYobj13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsbj1uLnN1YnN0cmluZygwLG4ubGVuZ3RoLTEpKSxuPT09Imh0dHAiKWkrPSI6ODAiO2Vsc2UgaWYobj09PSJodHRwcyIpaSs9Ijo0NDMiO2Vsc2UgcmV0dXJufXJldHVybiBpfX12YXIgZVcsbEUsQ20sdTAsaVc9UygoKT0+e2VXPWNvKG9jKCksMSk7bXQoKTtPdCgpO2xFPXt9LENtPXt9O2xFLmFkZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBZKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBpPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShDbVtpXSl8fChDbVtpXT0hMCl9O2xFLnJlbW92ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBZKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBpPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShDbVtpXSkmJmRlbGV0ZSBDbVtpXX07bEUuY29udGFpbnM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInVybCBpcyByZXF1aXJlZC4iKTtsZXQgZT1KcSh0KTtyZXR1cm4hIShtKGUpJiZtKENtW2VdKSl9O2xFLmNsZWFyPWZ1bmN0aW9uKCl7Q209e319O3UwPWxFfSk7ZnVuY3Rpb24gbGUodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9e3VybDp0fSkscC50eXBlT2Yuc3RyaW5nKCJvcHRpb25zLnVybCIsdC51cmwpLHRoaXMuX3VybD12b2lkIDAsdGhpcy5fdGVtcGxhdGVWYWx1ZXM9aEEodC50ZW1wbGF0ZVZhbHVlcyx7fSksdGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWhBKHQucXVlcnlQYXJhbWV0ZXJzLHt9KSx0aGlzLmhlYWRlcnM9aEEodC5oZWFkZXJzLHt9KSx0aGlzLnJlcXVlc3Q9Wih0LnJlcXVlc3QsbmV3IHgyKSx0aGlzLnByb3h5PXQucHJveHksdGhpcy5yZXRyeUNhbGxiYWNrPXQucmV0cnlDYWxsYmFjayx0aGlzLnJldHJ5QXR0ZW1wdHM9Wih0LnJldHJ5QXR0ZW1wdHMsMCksdGhpcy5fcmV0cnlDb3VudD0wLFoodC5wYXJzZVVybCwhMCk/dGhpcy5wYXJzZVVybCh0LnVybCwhMCwhMCk6dGhpcy5fdXJsPXQudXJsLHRoaXMuX2NyZWRpdHM9dC5jcmVkaXRzfWZ1bmN0aW9uIGhBKHQsZSl7cmV0dXJuIG0odCk/cXModCk6ZX1mdW5jdGlvbiBqcSh0KXtyZXR1cm4gdC5sZW5ndGg9PT0wP3t9OnQuaW5kZXhPZigiPSIpPT09LTE/e1t0XTp2b2lkIDB9OmsyKHQpfWZ1bmN0aW9uIEZaKHQsZSxpKXtpZighaSlyZXR1cm4gZXModCxlKTtsZXQgbj1xcyh0LCEwKTtmb3IobGV0IHMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHMpKXtsZXQgbz1uW3NdLHI9ZVtzXTttKG8pPyhBcnJheS5pc0FycmF5KG8pfHwobz1uW3NdPVtvXSksbltzXT1vLmNvbmNhdChyKSk6bltzXT1BcnJheS5pc0FycmF5KHIpP3Iuc2xpY2UoKTpyfXJldHVybiBufWZ1bmN0aW9uIEhxKHQpe2xldCBlPU9iamVjdC5rZXlzKHQpO3JldHVybiBlLmxlbmd0aD09PTA/IiI6ZS5sZW5ndGg9PT0xJiYhbSh0W2VbMF1dKT9gPyR7ZVswXX1gOmA/JHtNMih0KX1gfWZ1bmN0aW9uIEMwKHQpe2xldCBlPXQucmVzb3VyY2UsaT10LmZsaXBZLG49dC5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24scz10LnByZWZlckltYWdlQml0bWFwLG89ZS5yZXF1ZXN0O28udXJsPWUudXJsLG8ucmVxdWVzdEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bGV0IGE9ITE7IWUuaXNEYXRhVXJpJiYhZS5pc0Jsb2JVcmkmJihhPWUuaXNDcm9zc09yaWdpblVybCk7bGV0IGg9RWwoKTtyZXR1cm4gbGUuX0ltcGxlbWVudGF0aW9ucy5jcmVhdGVJbWFnZShvLGEsaCxpLG4scyksaC5wcm9taXNlfTtsZXQgcj1UWi5yZXF1ZXN0KG8pO2lmKG0ocikpcmV0dXJuIHIuY2F0Y2goZnVuY3Rpb24oYSl7cmV0dXJuIG8uc3RhdGUhPT1Nbi5GQUlMRUQ/UHJvbWlzZS5yZWplY3QoYSk6ZS5yZXRyeU9uRXJyb3IoYSkudGhlbihmdW5jdGlvbihoKXtyZXR1cm4gaD8oby5zdGF0ZT1Nbi5VTklTU1VFRCxvLmRlZmVycmVkPXZvaWQgMCxDMCh7cmVzb3VyY2U6ZSxmbGlwWTppLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjpuLHByZWZlckltYWdlQml0bWFwOnN9KSk6UHJvbWlzZS5yZWplY3QoYSl9KX0pfWZ1bmN0aW9uIHJXKHQsZSxpKXtsZXQgbj17fTtuW2VdPWksdC5zZXRRdWVyeVBhcmFtZXRlcnMobik7bGV0IHM9dC5yZXF1ZXN0LG89dC51cmw7cy51cmw9byxzLnJlcXVlc3RGdW5jdGlvbj1mdW5jdGlvbigpe2xldCBhPUVsKCk7cmV0dXJuIHdpbmRvd1tpXT1mdW5jdGlvbihoKXthLnJlc29sdmUoaCk7dHJ5e2RlbGV0ZSB3aW5kb3dbaV19Y2F0Y2h7d2luZG93W2ldPXZvaWQgMH19LGxlLl9JbXBsZW1lbnRhdGlvbnMubG9hZEFuZEV4ZWN1dGVTY3JpcHQobyxpLGEpLGEucHJvbWlzZX07bGV0IHI9VFoucmVxdWVzdChzKTtpZihtKHIpKXJldHVybiByLmNhdGNoKGZ1bmN0aW9uKGEpe3JldHVybiBzLnN0YXRlIT09TW4uRkFJTEVEP1Byb21pc2UucmVqZWN0KGEpOnQucmV0cnlPbkVycm9yKGEpLnRoZW4oZnVuY3Rpb24oaCl7cmV0dXJuIGg/KHMuc3RhdGU9TW4uVU5JU1NVRUQscy5kZWZlcnJlZD12b2lkIDAsclcodCxlLGkpKTpQcm9taXNlLnJlamVjdChhKX0pfSl9ZnVuY3Rpb24gZzAodCl7aWYodC5zdGF0ZT09PU1uLklTU1VFRHx8dC5zdGF0ZT09PU1uLkFDVElWRSl0aHJvdyBuZXcga2UoIlRoZSBSZXNvdXJjZSBpcyBhbHJlYWR5IGJlaW5nIGZldGNoZWQuIik7dC5zdGF0ZT1Nbi5VTklTU1VFRCx0LmRlZmVycmVkPXZvaWQgMH1mdW5jdGlvbiBOWih0LGUpe2xldCBpPWRlY29kZVVSSUNvbXBvbmVudChlKTtyZXR1cm4gdD9hdG9iKGkpOml9ZnVuY3Rpb24gblcodCxlKXtsZXQgaT1OWih0LGUpLG49bmV3IEFycmF5QnVmZmVyKGkubGVuZ3RoKSxzPW5ldyBVaW50OEFycmF5KG4pO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXNbb109aS5jaGFyQ29kZUF0KG8pO3JldHVybiBufWZ1bmN0aW9uIHpxKHQsZSl7ZT1aKGUsIiIpO2xldCBpPXRbMV0sbj0hIXRbMl0scz10WzNdLG8scjtzd2l0Y2goZSl7Y2FzZSIiOmNhc2UidGV4dCI6cmV0dXJuIE5aKG4scyk7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIG5XKG4scyk7Y2FzZSJibG9iIjpyZXR1cm4gbz1uVyhuLHMpLG5ldyBCbG9iKFtvXSx7dHlwZTppfSk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIHI9bmV3IERPTVBhcnNlcixyLnBhcnNlRnJvbVN0cmluZyhOWihuLHMpLGkpO2Nhc2UianNvbiI6cmV0dXJuIEpTT04ucGFyc2UoTloobixzKSk7ZGVmYXVsdDp0aHJvdyBuZXcgWShgVW5oYW5kbGVkIHJlc3BvbnNlVHlwZTogJHtlfWApfX1mdW5jdGlvbiBLcSh0LGUsaSxuLHMsbyxyKXtmZXRjaCh0LHttZXRob2Q6aSxoZWFkZXJzOnN9KS50aGVuKGFzeW5jIGE9PntpZighYS5vayl7bGV0IGg9e307YS5oZWFkZXJzLmZvckVhY2goKEEsZCk9PntoW2RdPUF9KSxvLnJlamVjdChuZXcgaEUoYS5zdGF0dXMsYSxoKSk7cmV0dXJufXN3aXRjaChlKXtjYXNlInRleHQiOm8ucmVzb2x2ZShhLnRleHQoKSk7YnJlYWs7Y2FzZSJqc29uIjpvLnJlc29sdmUoYS5qc29uKCkpO2JyZWFrO2RlZmF1bHQ6by5yZXNvbHZlKG5ldyBVaW50OEFycmF5KGF3YWl0IGEuYXJyYXlCdWZmZXIoKSkuYnVmZmVyKTticmVha319KS5jYXRjaCgoKT0+e28ucmVqZWN0KG5ldyBoRSl9KX12YXIgc1csb1csZ20sdnEsWHEsdG4sSWE9UygoKT0+e3NXPWNvKG9jKCksMSk7ZzIoKTthZSgpO2FFKCk7S0EoKTtGdCgpO20wKCk7bXQoKTtPdCgpO0UwKCk7VjIoKTtCMigpO1cyKCk7UjAoKTtaMCgpO0kwKCk7VTIoKTtfZSgpO1EyKCk7TDIoKTtQMigpO3YyKCk7dFcoKTtwWigpO1BzKCk7aVcoKTtvVz1mdW5jdGlvbigpe3RyeXtsZXQgdD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbigiR0VUIiwiIyIsITApLHQucmVzcG9uc2VUeXBlPSJibG9iIix0LnJlc3BvbnNlVHlwZT09PSJibG9iIn1jYXRjaHtyZXR1cm4hMX19KCk7bGUuY3JlYXRlSWZOZWVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBsZT90LmdldERlcml2ZWRSZXNvdXJjZSh7cmVxdWVzdDp0LnJlcXVlc3R9KTp0eXBlb2YgdCE9InN0cmluZyI/dDpuZXcgbGUoe3VybDp0fSl9O2xlLnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG0oZ20pP2dtOnR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCE9ImZ1bmN0aW9uIj8oZ209UHJvbWlzZS5yZXNvbHZlKCExKSxnbSk6KGdtPWxlLmZldGNoQmxvYih7dXJsOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQUlBQUFDUWQxUGVBQUFBQkdkQlRVRUFBRTRnM3JFaURnQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFERWxFUVZRSTEyTmc2R0FBQUFFVUFJbmdFM1ppQUFBQUFFbEZUa1N1UW1DQyJ9KS50aGVuKGZ1bmN0aW9uKGUpe2xldCBpPXtpbWFnZU9yaWVudGF0aW9uOiJmbGlwWSIscHJlbXVsdGlwbHlBbHBoYToibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifTtyZXR1cm4gUHJvbWlzZS5hbGwoW2NyZWF0ZUltYWdlQml0bWFwKGUsaSksY3JlYXRlSW1hZ2VCaXRtYXAoZSldKX0pLnRoZW4oZnVuY3Rpb24oZSl7bGV0IGk9XzAoZVswXSksbj1fMChlWzFdKTtyZXR1cm4gaVsxXSE9PW5bMV19KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSksZ20pfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsZSx7aXNCbG9iU3VwcG9ydGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb1d9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxlLnByb3RvdHlwZSx7cXVlcnlQYXJhbWV0ZXJzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbWV0ZXJzfX0sdGVtcGxhdGVWYWx1ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZW1wbGF0ZVZhbHVlc319LHVybDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VXJsQ29tcG9uZW50KCEwLCEwKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucGFyc2VVcmwodCwhMSwhMSl9fSxleHRlbnNpb246e2dldDpmdW5jdGlvbigpe3JldHVybiBPMih0aGlzLl91cmwpfX0saXNEYXRhVXJpOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSVoodGhpcy5fdXJsKX19LGlzQmxvYlVyaTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFJaKHRoaXMuX3VybCl9fSxpc0Nyb3NzT3JpZ2luVXJsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWloodGhpcy5fdXJsKX19LGhhc0hlYWRlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmhlYWRlcnMpLmxlbmd0aD4wfX0sY3JlZGl0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWRpdHN9fX0pO2xlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFVybENvbXBvbmVudCghMCwhMCl9O2xlLnByb3RvdHlwZS5wYXJzZVVybD1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz1uZXcgc1cuZGVmYXVsdCh0KSxvPWpxKHMucXVlcnkoKSk7dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWU/Rloobyx0aGlzLnF1ZXJ5UGFyYW1ldGVycyxpKTpvLHMuc2VhcmNoKCIiKSxzLmZyYWdtZW50KCIiKSxtKG4pJiZzLnNjaGVtZSgpPT09IiImJihzPXMuYWJzb2x1dGVUbyhBRShuKSkpLHRoaXMuX3VybD1zLnRvU3RyaW5nKCl9O2xlLnByb3RvdHlwZS5nZXRVcmxDb21wb25lbnQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmlzRGF0YVVyaSlyZXR1cm4gdGhpcy5fdXJsO2xldCBpPXRoaXMuX3VybDt0JiYoaT1gJHtpfSR7SHEodGhpcy5xdWVyeVBhcmFtZXRlcnMpfWApLGk9aS5yZXBsYWNlKC8lN0IvZywieyIpLnJlcGxhY2UoLyU3RC9nLCJ9Iik7bGV0IG49dGhpcy5fdGVtcGxhdGVWYWx1ZXM7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wJiYoaT1pLnJlcGxhY2UoL3soLio/KX0vZyxmdW5jdGlvbihzLG8pe2xldCByPW5bb107cmV0dXJuIG0ocik/ZW5jb2RlVVJJQ29tcG9uZW50KHIpOnN9KSksZSYmbSh0aGlzLnByb3h5KSYmKGk9dGhpcy5wcm94eS5nZXRVUkwoaSkpLGl9O2xlLnByb3RvdHlwZS5zZXRRdWVyeVBhcmFtZXRlcnM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3F1ZXJ5UGFyYW1ldGVycz1GWih0aGlzLl9xdWVyeVBhcmFtZXRlcnMsdCwhMSk6dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPUZaKHQsdGhpcy5fcXVlcnlQYXJhbWV0ZXJzLCExKX07bGUucHJvdG90eXBlLmFwcGVuZFF1ZXJ5UGFyYW1ldGVycz1mdW5jdGlvbih0KXt0aGlzLl9xdWVyeVBhcmFtZXRlcnM9RloodCx0aGlzLl9xdWVyeVBhcmFtZXRlcnMsITApfTtsZS5wcm90b3R5cGUuc2V0VGVtcGxhdGVWYWx1ZXM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3RlbXBsYXRlVmFsdWVzPWVzKHRoaXMuX3RlbXBsYXRlVmFsdWVzLHQpOnRoaXMuX3RlbXBsYXRlVmFsdWVzPWVzKHQsdGhpcy5fdGVtcGxhdGVWYWx1ZXMpfTtsZS5wcm90b3R5cGUuZ2V0RGVyaXZlZFJlc291cmNlPWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuY2xvbmUoKTtpZihlLl9yZXRyeUNvdW50PTAsbSh0LnVybCkpe2xldCBpPVoodC5wcmVzZXJ2ZVF1ZXJ5UGFyYW1ldGVycywhMSk7ZS5wYXJzZVVybCh0LnVybCwhMCxpLHRoaXMuX3VybCl9cmV0dXJuIG0odC5xdWVyeVBhcmFtZXRlcnMpJiYoZS5fcXVlcnlQYXJhbWV0ZXJzPWVzKHQucXVlcnlQYXJhbWV0ZXJzLGUucXVlcnlQYXJhbWV0ZXJzKSksbSh0LnRlbXBsYXRlVmFsdWVzKSYmKGUuX3RlbXBsYXRlVmFsdWVzPWVzKHQudGVtcGxhdGVWYWx1ZXMsZS50ZW1wbGF0ZVZhbHVlcykpLG0odC5oZWFkZXJzKSYmKGUuaGVhZGVycz1lcyh0LmhlYWRlcnMsZS5oZWFkZXJzKSksbSh0LnByb3h5KSYmKGUucHJveHk9dC5wcm94eSksbSh0LnJlcXVlc3QpJiYoZS5yZXF1ZXN0PXQucmVxdWVzdCksbSh0LnJldHJ5Q2FsbGJhY2spJiYoZS5yZXRyeUNhbGxiYWNrPXQucmV0cnlDYWxsYmFjayksbSh0LnJldHJ5QXR0ZW1wdHMpJiYoZS5yZXRyeUF0dGVtcHRzPXQucmV0cnlBdHRlbXB0cyksZX07bGUucHJvdG90eXBlLnJldHJ5T25FcnJvcj1mdW5jdGlvbih0KXtsZXQgZT10aGlzLnJldHJ5Q2FsbGJhY2s7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiJ8fHRoaXMuX3JldHJ5Q291bnQ+PXRoaXMucmV0cnlBdHRlbXB0cylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCExKTtsZXQgaT10aGlzO3JldHVybiBQcm9taXNlLnJlc29sdmUoZSh0aGlzLHQpKS50aGVuKGZ1bmN0aW9uKG4pe3JldHVybisraS5fcmV0cnlDb3VudCxufSl9O2xlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5fdXJsPXRoaXMuX3VybCx0Ll9xdWVyeVBhcmFtZXRlcnM9cXModGhpcy5fcXVlcnlQYXJhbWV0ZXJzKSx0Ll90ZW1wbGF0ZVZhbHVlcz1xcyh0aGlzLl90ZW1wbGF0ZVZhbHVlcyksdC5oZWFkZXJzPXFzKHRoaXMuaGVhZGVycyksdC5wcm94eT10aGlzLnByb3h5LHQucmV0cnlDYWxsYmFjaz10aGlzLnJldHJ5Q2FsbGJhY2ssdC5yZXRyeUF0dGVtcHRzPXRoaXMucmV0cnlBdHRlbXB0cyx0Ll9yZXRyeUNvdW50PTAsdC5yZXF1ZXN0PXRoaXMucmVxdWVzdC5jbG9uZSgpLHQpOm5ldyBsZSh7dXJsOnRoaXMuX3VybCxxdWVyeVBhcmFtZXRlcnM6dGhpcy5xdWVyeVBhcmFtZXRlcnMsdGVtcGxhdGVWYWx1ZXM6dGhpcy50ZW1wbGF0ZVZhbHVlcyxoZWFkZXJzOnRoaXMuaGVhZGVycyxwcm94eTp0aGlzLnByb3h5LHJldHJ5Q2FsbGJhY2s6dGhpcy5yZXRyeUNhbGxiYWNrLHJldHJ5QXR0ZW1wdHM6dGhpcy5yZXRyeUF0dGVtcHRzLHJlcXVlc3Q6dGhpcy5yZXF1ZXN0LmNsb25lKCkscGFyc2VVcmw6ITEsY3JlZGl0czptKHRoaXMuY3JlZGl0cyk/dGhpcy5jcmVkaXRzLnNsaWNlKCk6dm9pZCAwfSl9O2xlLnByb3RvdHlwZS5nZXRCYXNlVXJpPWZ1bmN0aW9uKHQpe3JldHVybiBZMih0aGlzLmdldFVybENvbXBvbmVudCh0KSx0KX07bGUucHJvdG90eXBlLmFwcGVuZEZvcndhcmRTbGFzaD1mdW5jdGlvbigpe3RoaXMuX3VybD1DMih0aGlzLl91cmwpfTtsZS5wcm90b3R5cGUuZmV0Y2hBcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIn0pfTtsZS5mZXRjaEFycmF5QnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2hBcnJheUJ1ZmZlcigpfTtsZS5wcm90b3R5cGUuZmV0Y2hCbG9iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmV0Y2goe3Jlc3BvbnNlVHlwZToiYmxvYiJ9KX07bGUuZmV0Y2hCbG9iPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2hCbG9iKCl9O2xlLnByb3RvdHlwZS5mZXRjaEltYWdlPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQucHJlZmVySW1hZ2VCaXRtYXAsITEpLGk9Wih0LnByZWZlckJsb2IsITEpLG49Wih0LmZsaXBZLCExKSxzPVoodC5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24sITEpO2lmKGcwKHRoaXMucmVxdWVzdCksIW9XfHx0aGlzLmlzRGF0YVVyaXx8dGhpcy5pc0Jsb2JVcml8fCF0aGlzLmhhc0hlYWRlcnMmJiFpKXJldHVybiBDMCh7cmVzb3VyY2U6dGhpcyxmbGlwWTpuLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjpzLHByZWZlckltYWdlQml0bWFwOmV9KTtsZXQgbz10aGlzLmZldGNoQmxvYigpO2lmKCFtKG8pKXJldHVybjtsZXQgcixhLGgsQTtyZXR1cm4gbGUuc3VwcG9ydHNJbWFnZUJpdG1hcE9wdGlvbnMoKS50aGVuKGZ1bmN0aW9uKGQpe3JldHVybiByPWQsYT1yJiZlLG99KS50aGVuKGZ1bmN0aW9uKGQpe2lmKCFtKGQpKXJldHVybjtpZihBPWQsYSlyZXR1cm4gbGUuY3JlYXRlSW1hZ2VCaXRtYXBGcm9tQmxvYihkLHtmbGlwWTpuLHByZW11bHRpcGx5QWxwaGE6ITEsc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnN9KTtsZXQgZj13aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChkKTtyZXR1cm4gaD1uZXcgbGUoe3VybDpmfSksQzAoe3Jlc291cmNlOmgsZmxpcFk6bixza2lwQ29sb3JTcGFjZUNvbnZlcnNpb246cyxwcmVmZXJJbWFnZUJpdG1hcDohMX0pfSkudGhlbihmdW5jdGlvbihkKXtpZihtKGQpKXJldHVybiBkLmJsb2I9QSxhfHx3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChoLnVybCksZH0pLmNhdGNoKGZ1bmN0aW9uKGQpe3JldHVybiBtKGgpJiZ3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChoLnVybCksZC5ibG9iPUEsUHJvbWlzZS5yZWplY3QoZCl9KX07bGUuZmV0Y2hJbWFnZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLmZldGNoSW1hZ2Uoe2ZsaXBZOnQuZmxpcFksc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uLHByZWZlckJsb2I6dC5wcmVmZXJCbG9iLHByZWZlckltYWdlQml0bWFwOnQucHJlZmVySW1hZ2VCaXRtYXB9KX07bGUucHJvdG90eXBlLmZldGNoVGV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6InRleHQifSl9O2xlLmZldGNoVGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLmZldGNoVGV4dCgpfTtsZS5wcm90b3R5cGUuZmV0Y2hKc29uPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJ0ZXh0IixoZWFkZXJzOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sKi8qO3E9MC4wMSJ9fSk7aWYobSh0KSlyZXR1cm4gdC50aGVuKGZ1bmN0aW9uKGUpe2lmKG0oZSkpcmV0dXJuIEpTT04ucGFyc2UoZSl9KX07bGUuZmV0Y2hKc29uPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2hKc29uKCl9O2xlLnByb3RvdHlwZS5mZXRjaFhNTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6ImRvY3VtZW50IixvdmVycmlkZU1pbWVUeXBlOiJ0ZXh0L3htbCJ9KX07bGUuZmV0Y2hYTUw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5mZXRjaFhNTCgpfTtsZS5wcm90b3R5cGUuZmV0Y2hKc29ucD1mdW5jdGlvbih0KXt0PVoodCwiY2FsbGJhY2siKSxnMCh0aGlzLnJlcXVlc3QpO2xldCBlO2RvIGU9YGxvYWRKc29ucCR7TC5uZXh0UmFuZG9tTnVtYmVyKCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiw4KX1gO3doaWxlKG0od2luZG93W2VdKSk7cmV0dXJuIHJXKHRoaXMsdCxlKX07bGUuZmV0Y2hKc29ucD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLmZldGNoSnNvbnAodC5jYWxsYmFja1BhcmFtZXRlck5hbWUpfTtsZS5wcm90b3R5cGUuX21ha2VSZXF1ZXN0PWZ1bmN0aW9uKHQpe2xldCBlPXRoaXM7ZzAoZS5yZXF1ZXN0KTtsZXQgaT1lLnJlcXVlc3Qsbj1lLnVybDtpLnVybD1uLGkucmVxdWVzdEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bGV0IG89dC5yZXNwb25zZVR5cGUscj1lcyh0LmhlYWRlcnMsZS5oZWFkZXJzKSxhPXQub3ZlcnJpZGVNaW1lVHlwZSxoPXQubWV0aG9kLEE9dC5kYXRhLGQ9RWwoKSxmPWxlLl9JbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHIobixvLGgsQSxyLGQsYSk7cmV0dXJuIG0oZikmJm0oZi5hYm9ydCkmJihpLmNhbmNlbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7Zi5hYm9ydCgpfSksZC5wcm9taXNlfTtsZXQgcz1UWi5yZXF1ZXN0KGkpO2lmKG0ocykpcmV0dXJuIHMudGhlbihmdW5jdGlvbihvKXtyZXR1cm4gaS5jYW5jZWxGdW5jdGlvbj12b2lkIDAsb30pLmNhdGNoKGZ1bmN0aW9uKG8pe3JldHVybiBpLmNhbmNlbEZ1bmN0aW9uPXZvaWQgMCxpLnN0YXRlIT09TW4uRkFJTEVEP1Byb21pc2UucmVqZWN0KG8pOmUucmV0cnlPbkVycm9yKG8pLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHI/KGkuc3RhdGU9TW4uVU5JU1NVRUQsaS5kZWZlcnJlZD12b2lkIDAsZS5mZXRjaCh0KSk6UHJvbWlzZS5yZWplY3Qobyl9KX0pfTt2cT0vXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLztsZS5wcm90b3R5cGUuZmV0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aEEodCx7fSksdC5tZXRob2Q9IkdFVCIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O2xlLmZldGNoPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkuZmV0Y2goe3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZX0pfTtsZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PWhBKHQse30pLHQubWV0aG9kPSJERUxFVEUiLHRoaXMuX21ha2VSZXF1ZXN0KHQpfTtsZS5kZWxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5kZWxldGUoe3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZSxkYXRhOnQuZGF0YX0pfTtsZS5wcm90b3R5cGUuaGVhZD1mdW5jdGlvbih0KXtyZXR1cm4gdD1oQSh0LHt9KSx0Lm1ldGhvZD0iSEVBRCIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O2xlLmhlYWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5oZWFkKHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07bGUucHJvdG90eXBlLm9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aEEodCx7fSksdC5tZXRob2Q9Ik9QVElPTlMiLHRoaXMuX21ha2VSZXF1ZXN0KHQpfTtsZS5vcHRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGUodCkub3B0aW9ucyh7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O2xlLnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgiZGF0YSIsdCksZT1oQShlLHt9KSxlLm1ldGhvZD0iUE9TVCIsZS5kYXRhPXQsdGhpcy5fbWFrZVJlcXVlc3QoZSl9O2xlLnBvc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5wb3N0KHQuZGF0YSx7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O2xlLnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC5kZWZpbmVkKCJkYXRhIix0KSxlPWhBKGUse30pLGUubWV0aG9kPSJQVVQiLGUuZGF0YT10LHRoaXMuX21ha2VSZXF1ZXN0KGUpfTtsZS5wdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZSh0KS5wdXQodC5kYXRhLHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07bGUucHJvdG90eXBlLnBhdGNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgiZGF0YSIsdCksZT1oQShlLHt9KSxlLm1ldGhvZD0iUEFUQ0giLGUuZGF0YT10LHRoaXMuX21ha2VSZXF1ZXN0KGUpfTtsZS5wYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxlKHQpLnBhdGNoKHQuZGF0YSx7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O2xlLl9JbXBsZW1lbnRhdGlvbnM9e307bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkSW1hZ2VFbGVtZW50PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1uZXcgSW1hZ2U7bi5vbmxvYWQ9ZnVuY3Rpb24oKXtuLm5hdHVyYWxXaWR0aD09PTAmJm4ubmF0dXJhbEhlaWdodD09PTAmJm4ud2lkdGg9PT0wJiZuLmhlaWdodD09PTAmJihuLndpZHRoPTMwMCxuLmhlaWdodD0xNTApLGkucmVzb2x2ZShuKX0sbi5vbmVycm9yPWZ1bmN0aW9uKHMpe2kucmVqZWN0KHMpfSxlJiYodTAuY29udGFpbnModCk/bi5jcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIjpuLmNyb3NzT3JpZ2luPSIiKSxuLnNyYz10fTtsZS5fSW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj10LnVybDtsZS5zdXBwb3J0c0ltYWdlQml0bWFwT3B0aW9ucygpLnRoZW4oZnVuY3Rpb24oYSl7aWYoIShhJiZvKSl7bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkSW1hZ2VFbGVtZW50KHIsZSxpKTtyZXR1cm59bGV0IGg9ImJsb2IiLEE9IkdFVCIsZD1FbCgpLGY9bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkV2l0aFhocihyLGgsQSx2b2lkIDAsdm9pZCAwLGQsdm9pZCAwLHZvaWQgMCx2b2lkIDApO3JldHVybiBtKGYpJiZtKGYuYWJvcnQpJiYodC5jYW5jZWxGdW5jdGlvbj1mdW5jdGlvbigpe2YuYWJvcnQoKX0pLGQucHJvbWlzZS50aGVuKGZ1bmN0aW9uKEUpe2lmKCFtKEUpKXtpLnJlamVjdChuZXcga2UoYFN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgJHtyfSBidXQgaXQgY29udGFpbmVkIG5vIGNvbnRlbnQuYCkpO3JldHVybn1yZXR1cm4gbGUuY3JlYXRlSW1hZ2VCaXRtYXBGcm9tQmxvYihFLHtmbGlwWTpuLHByZW11bHRpcGx5QWxwaGE6ITEsc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnN9KX0pLnRoZW4oZnVuY3Rpb24oRSl7aS5yZXNvbHZlKEUpfSl9KS5jYXRjaChmdW5jdGlvbihhKXtpLnJlamVjdChhKX0pfTtsZS5jcmVhdGVJbWFnZUJpdG1hcEZyb21CbG9iPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgib3B0aW9ucyIsZSkscC50eXBlT2YuYm9vbCgib3B0aW9ucy5mbGlwWSIsZS5mbGlwWSkscC50eXBlT2YuYm9vbCgib3B0aW9ucy5wcmVtdWx0aXBseUFscGhhIixlLnByZW11bHRpcGx5QWxwaGEpLHAudHlwZU9mLmJvb2woIm9wdGlvbnMuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uIixlLnNraXBDb2xvclNwYWNlQ29udmVyc2lvbiksY3JlYXRlSW1hZ2VCaXRtYXAodCx7aW1hZ2VPcmllbnRhdGlvbjplLmZsaXBZPyJmbGlwWSI6Im5vbmUiLHByZW11bHRpcGx5QWxwaGE6ZS5wcmVtdWx0aXBseUFscGhhPyJwcmVtdWx0aXBseSI6Im5vbmUiLGNvbG9yU3BhY2VDb252ZXJzaW9uOmUuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uPyJub25lIjoiZGVmYXVsdCJ9KX07WHE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0PiJ1IjtsZS5fSW1wbGVtZW50YXRpb25zLmxvYWRXaXRoWGhyPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2xldCBhPXZxLmV4ZWModCk7aWYoYSE9PW51bGwpe28ucmVzb2x2ZSh6cShhLGUpKTtyZXR1cm59aWYoWHEpe0txKHQsZSxpLG4scyxvLHIpO3JldHVybn1sZXQgaD1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYodTAuY29udGFpbnModCkmJihoLndpdGhDcmVkZW50aWFscz0hMCksaC5vcGVuKGksdCwhMCksbShyKSYmbShoLm92ZXJyaWRlTWltZVR5cGUpJiZoLm92ZXJyaWRlTWltZVR5cGUociksbShzKSlmb3IobGV0IGQgaW4gcylzLmhhc093blByb3BlcnR5KGQpJiZoLnNldFJlcXVlc3RIZWFkZXIoZCxzW2RdKTttKGUpJiYoaC5yZXNwb25zZVR5cGU9ZSk7bGV0IEE9ITE7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIiYmKEE9dC5pbmRleE9mKCJmaWxlOi8vIik9PT0wfHx0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmxvY2F0aW9uLm9yaWdpbj09PSJmaWxlOi8vIiksaC5vbmxvYWQ9ZnVuY3Rpb24oKXtpZigoaC5zdGF0dXM8MjAwfHxoLnN0YXR1cz49MzAwKSYmIShBJiZoLnN0YXR1cz09PTApKXtvLnJlamVjdChuZXcgaEUoaC5zdGF0dXMsaC5yZXNwb25zZSxoLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSk7cmV0dXJufWxldCBkPWgucmVzcG9uc2UsZj1oLnJlc3BvbnNlVHlwZTtpZihpPT09IkhFQUQifHxpPT09Ik9QVElPTlMiKXtsZXQgXz1oLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLnRyaW0oKS5zcGxpdCgvW1xyXG5dKy8pLFI9e307Xy5mb3JFYWNoKGZ1bmN0aW9uKEkpe2xldCBDPUkuc3BsaXQoIjogIiksTj1DLnNoaWZ0KCk7UltOXT1DLmpvaW4oIjogIil9KSxvLnJlc29sdmUoUik7cmV0dXJufWlmKGguc3RhdHVzPT09MjA0KW8ucmVzb2x2ZSh2b2lkIDApO2Vsc2UgaWYobShkKSYmKCFtKGUpfHxmPT09ZSkpby5yZXNvbHZlKGQpO2Vsc2UgaWYoZT09PSJqc29uIiYmdHlwZW9mIGQ9PSJzdHJpbmciKXRyeXtvLnJlc29sdmUoSlNPTi5wYXJzZShkKSl9Y2F0Y2goRSl7by5yZWplY3QoRSl9ZWxzZShmPT09IiJ8fGY9PT0iZG9jdW1lbnQiKSYmbShoLnJlc3BvbnNlWE1MKSYmaC5yZXNwb25zZVhNTC5oYXNDaGlsZE5vZGVzKCk/by5yZXNvbHZlKGgucmVzcG9uc2VYTUwpOihmPT09IiJ8fGY9PT0idGV4dCIpJiZtKGgucmVzcG9uc2VUZXh0KT9vLnJlc29sdmUoaC5yZXNwb25zZVRleHQpOm8ucmVqZWN0KG5ldyBrZSgiSW52YWxpZCBYTUxIdHRwUmVxdWVzdCByZXNwb25zZSB0eXBlLiIpKX0saC5vbmVycm9yPWZ1bmN0aW9uKGQpe28ucmVqZWN0KG5ldyBoRSl9LGguc2VuZChuKSxofTtsZS5fSW1wbGVtZW50YXRpb25zLmxvYWRBbmRFeGVjdXRlU2NyaXB0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gRDIodCxlKS5jYXRjaChmdW5jdGlvbihuKXtpLnJlamVjdChuKX0pfTtsZS5fRGVmYXVsdEltcGxlbWVudGF0aW9ucz17fTtsZS5fRGVmYXVsdEltcGxlbWVudGF0aW9ucy5jcmVhdGVJbWFnZT1sZS5fSW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlO2xlLl9EZWZhdWx0SW1wbGVtZW50YXRpb25zLmxvYWRXaXRoWGhyPWxlLl9JbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHI7bGUuX0RlZmF1bHRJbXBsZW1lbnRhdGlvbnMubG9hZEFuZEV4ZWN1dGVTY3JpcHQ9bGUuX0ltcGxlbWVudGF0aW9ucy5sb2FkQW5kRXhlY3V0ZVNjcmlwdDtsZS5ERUZBVUxUPU9iamVjdC5mcmVlemUobmV3IGxlKHt1cmw6dHlwZW9mIGRvY3VtZW50PiJ1Ij8iIjpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLnNwbGl0KCI/IilbMF19KSk7dG49bGV9KTtmdW5jdGlvbiBtRSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZGF0ZXM9dm9pZCAwLHRoaXMuX3NhbXBsZXM9dm9pZCAwLHRoaXMuX2RhdGVDb2x1bW49LTEsdGhpcy5feFBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uPS0xLHRoaXMuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj0tMSx0aGlzLl91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW49LTEsdGhpcy5feENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uPS0xLHRoaXMuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj0tMSx0aGlzLl90YWlNaW51c1V0Y1NlY29uZHNDb2x1bW49LTEsdGhpcy5fY29sdW1uQ291bnQ9MCx0aGlzLl9sYXN0SW5kZXg9LTEsdGhpcy5fYWRkTmV3TGVhcFNlY29uZHM9Wih0LmFkZE5ld0xlYXBTZWNvbmRzLCEwKSxtKHQuZGF0YSk/YVcodGhpcyx0LmRhdGEpOmFXKHRoaXMse2NvbHVtbk5hbWVzOlsiZGF0ZUlzbzg2MDEiLCJtb2RpZmllZEp1bGlhbkRhdGVVdGMiLCJ4UG9sZVdhbmRlclJhZGlhbnMiLCJ5UG9sZVdhbmRlclJhZGlhbnMiLCJ1dDFNaW51c1V0Y1NlY29uZHMiLCJsZW5ndGhPZkRheUNvcnJlY3Rpb25TZWNvbmRzIiwieENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zIiwieUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zIiwidGFpTWludXNVdGNTZWNvbmRzIl0sc2FtcGxlczpbXX0pfWZ1bmN0aW9uIHFxKHQsZSl7cmV0dXJuIFplLmNvbXBhcmUodC5qdWxpYW5EYXRlLGUpfWZ1bmN0aW9uIGFXKHQsZSl7aWYoIW0oZS5jb2x1bW5OYW1lcykpdGhyb3cgbmV3IGtlKCJFcnJvciBpbiBsb2FkZWQgRU9QIGRhdGE6IFRoZSBjb2x1bW5OYW1lcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC4iKTtpZighbShlLnNhbXBsZXMpKXRocm93IG5ldyBrZSgiRXJyb3IgaW4gbG9hZGVkIEVPUCBkYXRhOiBUaGUgc2FtcGxlcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC4iKTtsZXQgaT1lLmNvbHVtbk5hbWVzLmluZGV4T2YoIm1vZGlmaWVkSnVsaWFuRGF0ZVV0YyIpLG49ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ4UG9sZVdhbmRlclJhZGlhbnMiKSxzPWUuY29sdW1uTmFtZXMuaW5kZXhPZigieVBvbGVXYW5kZXJSYWRpYW5zIiksbz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInV0MU1pbnVzVXRjU2Vjb25kcyIpLHI9ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ4Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiKSxhPWUuY29sdW1uTmFtZXMuaW5kZXhPZigieUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zIiksaD1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInRhaU1pbnVzVXRjU2Vjb25kcyIpO2lmKGk8MHx8bjwwfHxzPDB8fG88MHx8cjwwfHxhPDB8fGg8MCl0aHJvdyBuZXcga2UoIkVycm9yIGluIGxvYWRlZCBFT1AgZGF0YTogVGhlIGNvbHVtbk5hbWVzIHByb3BlcnR5IG11c3QgaW5jbHVkZSBtb2RpZmllZEp1bGlhbkRhdGVVdGMsIHhQb2xlV2FuZGVyUmFkaWFucywgeVBvbGVXYW5kZXJSYWRpYW5zLCB1dDFNaW51c1V0Y1NlY29uZHMsIHhDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFucywgeUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zLCBhbmQgdGFpTWludXNVdGNTZWNvbmRzIGNvbHVtbnMiKTtsZXQgQT10Ll9zYW1wbGVzPWUuc2FtcGxlcyxkPXQuX2RhdGVzPVtdO3QuX2RhdGVDb2x1bW49aSx0Ll94UG9sZVdhbmRlclJhZGlhbnNDb2x1bW49bix0Ll95UG9sZVdhbmRlclJhZGlhbnNDb2x1bW49cyx0Ll91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW49byx0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW49cix0Ll95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW49YSx0Ll90YWlNaW51c1V0Y1NlY29uZHNDb2x1bW49aCx0Ll9jb2x1bW5Db3VudD1lLmNvbHVtbk5hbWVzLmxlbmd0aCx0Ll9sYXN0SW5kZXg9dm9pZCAwO2xldCBmLEU9dC5fYWRkTmV3TGVhcFNlY29uZHM7Zm9yKGxldCBfPTAsUj1BLmxlbmd0aDtfPFI7Xys9dC5fY29sdW1uQ291bnQpe2xldCBJPUFbXytpXSxDPUFbXytoXSxOPUkrRm4uTU9ESUZJRURfSlVMSUFOX0RBVEVfRElGRkVSRU5DRSxUPW5ldyBaZShOLEMsRWkuVEFJKTtpZihkLnB1c2goVCksRSl7aWYoQyE9PWYmJm0oZikpe2xldCBiPVplLmxlYXBTZWNvbmRzLEY9R28oYixULHFxKTtpZihGPDApe2xldCBCPW5ldyB6aShULEMpO2Iuc3BsaWNlKH5GLDAsQil9fWY9Q319fWZ1bmN0aW9uIEFXKHQsZSxpLG4scyl7bGV0IG89aSpuO3MueFBvbGVXYW5kZXI9ZVtvK3QuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0scy55UG9sZVdhbmRlcj1lW28rdC5feVBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSxzLnhQb2xlT2Zmc2V0PWVbbyt0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dLHMueVBvbGVPZmZzZXQ9ZVtvK3QuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0scy51dDFNaW51c1V0Yz1lW28rdC5fdXQxTWludXNVdGNTZWNvbmRzQ29sdW1uXX1mdW5jdGlvbiBkRSh0LGUsaSl7cmV0dXJuIGUrdCooaS1lKX1mdW5jdGlvbiBoVyh0LGUsaSxuLHMsbyxyKXtsZXQgYT10Ll9jb2x1bW5Db3VudDtpZihvPmUubGVuZ3RoLTEpcmV0dXJuIHIueFBvbGVXYW5kZXI9MCxyLnlQb2xlV2FuZGVyPTAsci54UG9sZU9mZnNldD0wLHIueVBvbGVPZmZzZXQ9MCxyLnV0MU1pbnVzVXRjPTAscjtsZXQgaD1lW3NdLEE9ZVtvXTtpZihoLmVxdWFscyhBKXx8bi5lcXVhbHMoaCkpcmV0dXJuIEFXKHQsaSxzLGEscikscjtpZihuLmVxdWFscyhBKSlyZXR1cm4gQVcodCxpLG8sYSxyKSxyO2xldCBkPVplLnNlY29uZHNEaWZmZXJlbmNlKG4saCkvWmUuc2Vjb25kc0RpZmZlcmVuY2UoQSxoKSxmPXMqYSxFPW8qYSxfPWlbZit0Ll91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW5dLFI9aVtFK3QuX3V0MU1pbnVzVXRjU2Vjb25kc0NvbHVtbl0sST1SLV87aWYoST4uNXx8STwtLjUpe2xldCBDPWlbZit0Ll90YWlNaW51c1V0Y1NlY29uZHNDb2x1bW5dLE49aVtFK3QuX3RhaU1pbnVzVXRjU2Vjb25kc0NvbHVtbl07QyE9PU4mJihBLmVxdWFscyhuKT9fPVI6Ui09Ti1DKX1yZXR1cm4gci54UG9sZVdhbmRlcj1kRShkLGlbZit0Ll94UG9sZVdhbmRlclJhZGlhbnNDb2x1bW5dLGlbRSt0Ll94UG9sZVdhbmRlclJhZGlhbnNDb2x1bW5dKSxyLnlQb2xlV2FuZGVyPWRFKGQsaVtmK3QuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0saVtFK3QuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0pLHIueFBvbGVPZmZzZXQ9ZEUoZCxpW2YrdC5feENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uXSxpW0UrdC5feENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uXSksci55UG9sZU9mZnNldD1kRShkLGlbZit0Ll95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dLGlbRSt0Ll95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dKSxyLnV0MU1pbnVzVXRjPWRFKGQsXyxSKSxyfXZhciBjVyxsVz1TKCgpPT57c0UoKTthZSgpO0Z0KCk7bXQoKTthMCgpO09yKCk7aDAoKTtJYSgpO1BzKCk7QVooKTtoWigpO21FLmZyb21Vcmw9YXN5bmMgZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoInVybCIsdCksZT1aKGUsWi5FTVBUWV9PQkpFQ1QpO2xldCBpPXRuLmNyZWF0ZUlmTmVlZGVkKHQpLG47dHJ5e249YXdhaXQgaS5mZXRjaEpzb24oKX1jYXRjaHt0aHJvdyBuZXcga2UoYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHJldHJpZXZpbmcgdGhlIEVPUCBkYXRhIGZyb20gdGhlIFVSTCAke2kudXJsfS5gKX1yZXR1cm4gbmV3IG1FKHthZGROZXdMZWFwU2Vjb25kczplLmFkZE5ld0xlYXBTZWNvbmRzLGRhdGE6bn0pfTttRS5OT05FPU9iamVjdC5mcmVlemUoe2NvbXB1dGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbShlKT8oZS54UG9sZVdhbmRlcj0wLGUueVBvbGVXYW5kZXI9MCxlLnhQb2xlT2Zmc2V0PTAsZS55UG9sZU9mZnNldD0wLGUudXQxTWludXNVdGM9MCk6ZT1uZXcgb0UoMCwwLDAsMCwwKSxlfX0pO21FLnByb3RvdHlwZS5jb21wdXRlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odGhpcy5fc2FtcGxlcykpcmV0dXJuO2lmKG0oZSl8fChlPW5ldyBvRSgwLDAsMCwwLDApKSx0aGlzLl9zYW1wbGVzLmxlbmd0aD09PTApcmV0dXJuIGUueFBvbGVXYW5kZXI9MCxlLnlQb2xlV2FuZGVyPTAsZS54UG9sZU9mZnNldD0wLGUueVBvbGVPZmZzZXQ9MCxlLnV0MU1pbnVzVXRjPTAsZTtsZXQgaT10aGlzLl9kYXRlcyxuPXRoaXMuX2xhc3RJbmRleCxzPTAsbz0wO2lmKG0obikpe2xldCBhPWlbbl0saD1pW24rMV0sQT1aZS5sZXNzVGhhbk9yRXF1YWxzKGEsdCksZD0hbShoKSxmPWR8fFplLmdyZWF0ZXJUaGFuT3JFcXVhbHMoaCx0KTtpZihBJiZmKXJldHVybiBzPW4sIWQmJmguZXF1YWxzKHQpJiYrK3Msbz1zKzEsaFcodGhpcyxpLHRoaXMuX3NhbXBsZXMsdCxzLG8sZSksZX1sZXQgcj1HbyhpLHQsWmUuY29tcGFyZSx0aGlzLl9kYXRlQ29sdW1uKTtyZXR1cm4gcj49MD8ocjxpLmxlbmd0aC0xJiZpW3IrMV0uZXF1YWxzKHQpJiYrK3Iscz1yLG89cik6KG89fnIscz1vLTEsczwwJiYocz0wKSksdGhpcy5fbGFzdEluZGV4PXMsaFcodGhpcyxpLHRoaXMuX3NhbXBsZXMsdCxzLG8sZSksZX07Y1c9bUV9KTtmdW5jdGlvbiB4dCh0LGUsaSxuLHMsbyxyLGEsaCl7dGhpc1swXT1aKHQsMCksdGhpc1sxXT1aKG4sMCksdGhpc1syXT1aKHIsMCksdGhpc1szXT1aKGUsMCksdGhpc1s0XT1aKHMsMCksdGhpc1s1XT1aKGEsMCksdGhpc1s2XT1aKGksMCksdGhpc1s3XT1aKG8sMCksdGhpc1s4XT1aKGgsMCl9ZnVuY3Rpb24gbjkodCl7bGV0IGU9MDtmb3IobGV0IGk9MDtpPDk7KytpKXtsZXQgbj10W2ldO2UrPW4qbn1yZXR1cm4gTWF0aC5zcXJ0KGUpfWZ1bmN0aW9uIHM5KHQpe2xldCBlPTA7Zm9yKGxldCBpPTA7aTwzOysraSl7bGV0IG49dFt4dC5nZXRFbGVtZW50SW5kZXgoRjBbaV0sTjBbaV0pXTtlKz0yKm4qbn1yZXR1cm4gTWF0aC5zcXJ0KGUpfWZ1bmN0aW9uIG85KHQsZSl7bGV0IGk9TC5FUFNJTE9OMTUsbj0wLHM9MTtmb3IobGV0IEE9MDtBPDM7KytBKXtsZXQgZD1NYXRoLmFicyh0W3h0LmdldEVsZW1lbnRJbmRleChGMFtBXSxOMFtBXSldKTtkPm4mJihzPUEsbj1kKX1sZXQgbz0xLHI9MCxhPU4wW3NdLGg9RjBbc107aWYoTWF0aC5hYnModFt4dC5nZXRFbGVtZW50SW5kZXgoaCxhKV0pPmkpe2xldCBBPXRbeHQuZ2V0RWxlbWVudEluZGV4KGgsaCldLGQ9dFt4dC5nZXRFbGVtZW50SW5kZXgoYSxhKV0sZj10W3h0LmdldEVsZW1lbnRJbmRleChoLGEpXSxFPShBLWQpLzIvZixfO0U8MD9fPS0xLygtRStNYXRoLnNxcnQoMStFKkUpKTpfPTEvKEUrTWF0aC5zcXJ0KDErRSpFKSksbz0xL01hdGguc3FydCgxK18qXykscj1fKm99cmV0dXJuIGU9eHQuY2xvbmUoeHQuSURFTlRJVFksZSksZVt4dC5nZXRFbGVtZW50SW5kZXgoYSxhKV09ZVt4dC5nZXRFbGVtZW50SW5kZXgoaCxoKV09byxlW3h0LmdldEVsZW1lbnRJbmRleChoLGEpXT1yLGVbeHQuZ2V0RWxlbWVudEluZGV4KGEsaCldPS1yLGV9dmFyICRxLHQ5LFQwLGRXLGU5LGk5LE4wLEYwLGJaLG1XLHI5LGx0LGRuPVMoKCk9PntIdCgpO2FlKCk7RnQoKTttdCgpO090KCk7X2UoKTt4dC5wYWNrZWRMZW5ndGg9OTt4dC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksZVtpKytdPXRbMF0sZVtpKytdPXRbMV0sZVtpKytdPXRbMl0sZVtpKytdPXRbM10sZVtpKytdPXRbNF0sZVtpKytdPXRbNV0sZVtpKytdPXRbNl0sZVtpKytdPXRbN10sZVtpKytdPXRbOF0sZX07eHQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCksbShpKXx8KGk9bmV3IHh0KSxpWzBdPXRbZSsrXSxpWzFdPXRbZSsrXSxpWzJdPXRbZSsrXSxpWzNdPXRbZSsrXSxpWzRdPXRbZSsrXSxpWzVdPXRbZSsrXSxpWzZdPXRbZSsrXSxpWzddPXRbZSsrXSxpWzhdPXRbZSsrXSxpfTt4dC5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImFycmF5Iix0KTtsZXQgaT10Lmxlbmd0aCxuPWkqOTtpZighbShlKSllPW5ldyBBcnJheShuKTtlbHNle2lmKCFBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aCE9PW4pdGhyb3cgbmV3IFkoIklmIHJlc3VsdCBpcyBhIHR5cGVkIGFycmF5LCBpdCBtdXN0IGhhdmUgZXhhY3RseSBhcnJheS5sZW5ndGggKiA5IGVsZW1lbnRzIik7ZS5sZW5ndGghPT1uJiYoZS5sZW5ndGg9bil9Zm9yKGxldCBzPTA7czxpOysrcyl4dC5wYWNrKHRbc10sZSxzKjkpO3JldHVybiBlfTt4dC51bnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe2lmKHAuZGVmaW5lZCgiYXJyYXkiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJhcnJheS5sZW5ndGgiLHQubGVuZ3RoLDkpLHQubGVuZ3RoJTkhPT0wKXRocm93IG5ldyBZKCJhcnJheSBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDkuIik7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pLzk6ZT1uZXcgQXJyYXkoaS85KTtmb3IobGV0IG49MDtuPGk7bis9OSl7bGV0IHM9bi85O2Vbc109eHQudW5wYWNrKHQsbixlW3NdKX1yZXR1cm4gZX07eHQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZVs0XT10WzRdLGVbNV09dFs1XSxlWzZdPXRbNl0sZVs3XT10WzddLGVbOF09dFs4XSxlKTpuZXcgeHQodFswXSx0WzNdLHRbNl0sdFsxXSx0WzRdLHRbN10sdFsyXSx0WzVdLHRbOF0pfTt4dC5mcm9tQXJyYXk9eHQudW5wYWNrO3h0LmZyb21Db2x1bW5NYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWVzIix0KSx4dC5jbG9uZSh0LGUpfTt4dC5mcm9tUm93TWFqb3JBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBwLmRlZmluZWQoInZhbHVlcyIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFszXSxlWzJdPXRbNl0sZVszXT10WzFdLGVbNF09dFs0XSxlWzVdPXRbN10sZVs2XT10WzJdLGVbN109dFs1XSxlWzhdPXRbOF0sZSk6bmV3IHh0KHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl0sdFs3XSx0WzhdKX07eHQuZnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpO2xldCBpPXQueCp0Lngsbj10LngqdC55LHM9dC54KnQueixvPXQueCp0Lncscj10LnkqdC55LGE9dC55KnQueixoPXQueSp0LncsQT10LnoqdC56LGQ9dC56KnQudyxmPXQudyp0LncsRT1pLXItQStmLF89Mioobi1kKSxSPTIqKHMraCksST0yKihuK2QpLEM9LWkrci1BK2YsTj0yKihhLW8pLFQ9Mioocy1oKSxiPTIqKGErbyksRj0taS1yK0ErZjtyZXR1cm4gbShlKT8oZVswXT1FLGVbMV09SSxlWzJdPVQsZVszXT1fLGVbNF09QyxlWzVdPWIsZVs2XT1SLGVbN109TixlWzhdPUYsZSk6bmV3IHh0KEUsXyxSLEksQyxOLFQsYixGKX07eHQuZnJvbUhlYWRpbmdQaXRjaFJvbGw9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImhlYWRpbmdQaXRjaFJvbGwiLHQpO2xldCBpPU1hdGguY29zKC10LnBpdGNoKSxuPU1hdGguY29zKC10LmhlYWRpbmcpLHM9TWF0aC5jb3ModC5yb2xsKSxvPU1hdGguc2luKC10LnBpdGNoKSxyPU1hdGguc2luKC10LmhlYWRpbmcpLGE9TWF0aC5zaW4odC5yb2xsKSxoPWkqbixBPS1zKnIrYSpvKm4sZD1hKnIrcypvKm4sZj1pKnIsRT1zKm4rYSpvKnIsXz0tYSpuK3MqbypyLFI9LW8sST1hKmksQz1zKmk7cmV0dXJuIG0oZSk/KGVbMF09aCxlWzFdPWYsZVsyXT1SLGVbM109QSxlWzRdPUUsZVs1XT1JLGVbNl09ZCxlWzddPV8sZVs4XT1DLGUpOm5ldyB4dChoLEEsZCxmLEUsXyxSLEksQyl9O3h0LmZyb21TY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNjYWxlIix0KSxtKGUpPyhlWzBdPXQueCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPXQueSxlWzVdPTAsZVs2XT0wLGVbN109MCxlWzhdPXQueixlKTpuZXcgeHQodC54LDAsMCwwLHQueSwwLDAsMCx0LnopfTt4dC5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPXQsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT10LGUpOm5ldyB4dCh0LDAsMCwwLHQsMCwwLDAsdCl9O3h0LmZyb21Dcm9zc1Byb2R1Y3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2ZWN0b3IiLHQpLG0oZSk/KGVbMF09MCxlWzFdPXQueixlWzJdPS10LnksZVszXT0tdC56LGVbNF09MCxlWzVdPXQueCxlWzZdPXQueSxlWzddPS10LngsZVs4XT0wLGUpOm5ldyB4dCgwLC10LnosdC55LHQueiwwLC10LngsLXQueSx0LngsMCl9O3h0LmZyb21Sb3RhdGlvblg9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5udW1iZXIoImFuZ2xlIix0KTtsZXQgaT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiBtKGUpPyhlWzBdPTEsZVsxXT0wLGVbMl09MCxlWzNdPTAsZVs0XT1pLGVbNV09bixlWzZdPTAsZVs3XT0tbixlWzhdPWksZSk6bmV3IHh0KDEsMCwwLDAsaSwtbiwwLG4saSl9O3h0LmZyb21Sb3RhdGlvblk9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5udW1iZXIoImFuZ2xlIix0KTtsZXQgaT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiBtKGUpPyhlWzBdPWksZVsxXT0wLGVbMl09LW4sZVszXT0wLGVbNF09MSxlWzVdPTAsZVs2XT1uLGVbN109MCxlWzhdPWksZSk6bmV3IHh0KGksMCxuLDAsMSwwLC1uLDAsaSl9O3h0LmZyb21Sb3RhdGlvblo9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5udW1iZXIoImFuZ2xlIix0KTtsZXQgaT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiBtKGUpPyhlWzBdPWksZVsxXT1uLGVbMl09MCxlWzNdPS1uLGVbNF09aSxlWzVdPTAsZVs2XT0wLGVbN109MCxlWzhdPTEsZSk6bmV3IHh0KGksLW4sMCxuLGksMCwwLDAsMSl9O3h0LnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4XT10WzhdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdLHRbN10sdFs4XV19O3h0LmdldEVsZW1lbnRJbmRleD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicm93IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJyb3ciLGUsMikscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImNvbHVtbiIsdCwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiY29sdW1uIix0LDIpLHQqMytlfTt4dC5nZXRDb2x1bW49ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDIpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1lKjMscz10W25dLG89dFtuKzFdLHI9dFtuKzJdO3JldHVybiBpLng9cyxpLnk9byxpLno9cixpfTt4dC5zZXRDb2x1bW49ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMikscC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuPXh0LmNsb25lKHQsbik7bGV0IHM9ZSozO3JldHVybiBuW3NdPWkueCxuW3MrMV09aS55LG5bcysyXT1pLnosbn07eHQuZ2V0Um93PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwyKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFtlXSxzPXRbZSszXSxvPXRbZSs2XTtyZXR1cm4gaS54PW4saS55PXMsaS56PW8saX07eHQuc2V0Um93PWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwyKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49eHQuY2xvbmUodCxuKSxuW2VdPWkueCxuW2UrM109aS55LG5bZSs2XT1pLnosbn07JHE9bmV3IGw7eHQuc2V0U2NhbGU9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInNjYWxlIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49eHQuZ2V0U2NhbGUodCwkcSkscz1lLngvbi54LG89ZS55L24ueSxyPWUuei9uLno7cmV0dXJuIGlbMF09dFswXSpzLGlbMV09dFsxXSpzLGlbMl09dFsyXSpzLGlbM109dFszXSpvLGlbNF09dFs0XSpvLGlbNV09dFs1XSpvLGlbNl09dFs2XSpyLGlbN109dFs3XSpyLGlbOF09dFs4XSpyLGl9O3Q5PW5ldyBsO3h0LnNldFVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj14dC5nZXRTY2FsZSh0LHQ5KSxzPWUvbi54LG89ZS9uLnkscj1lL24uejtyZXR1cm4gaVswXT10WzBdKnMsaVsxXT10WzFdKnMsaVsyXT10WzJdKnMsaVszXT10WzNdKm8saVs0XT10WzRdKm8saVs1XT10WzVdKm8saVs2XT10WzZdKnIsaVs3XT10WzddKnIsaVs4XT10WzhdKnIsaX07VDA9bmV3IGw7eHQuZ2V0U2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFswXSx0WzFdLHRbMl0sVDApKSxlLnk9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFszXSx0WzRdLHRbNV0sVDApKSxlLno9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFs2XSx0WzddLHRbOF0sVDApKSxlfTtkVz1uZXcgbDt4dC5nZXRNYXhpbXVtU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHh0LmdldFNjYWxlKHQsZFcpLGwubWF4aW11bUNvbXBvbmVudChkVyl9O2U5PW5ldyBsO3h0LnNldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXh0LmdldFNjYWxlKHQsZTkpO3JldHVybiBpWzBdPWVbMF0qbi54LGlbMV09ZVsxXSpuLngsaVsyXT1lWzJdKm4ueCxpWzNdPWVbM10qbi55LGlbNF09ZVs0XSpuLnksaVs1XT1lWzVdKm4ueSxpWzZdPWVbNl0qbi56LGlbN109ZVs3XSpuLnosaVs4XT1lWzhdKm4ueixpfTtpOT1uZXcgbDt4dC5nZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9eHQuZ2V0U2NhbGUodCxpOSk7cmV0dXJuIGVbMF09dFswXS9pLngsZVsxXT10WzFdL2kueCxlWzJdPXRbMl0vaS54LGVbM109dFszXS9pLnksZVs0XT10WzRdL2kueSxlWzVdPXRbNV0vaS55LGVbNl09dFs2XS9pLnosZVs3XT10WzddL2kueixlWzhdPXRbOF0vaS56LGV9O3h0Lm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10WzBdKmVbMF0rdFszXSplWzFdK3RbNl0qZVsyXSxzPXRbMV0qZVswXSt0WzRdKmVbMV0rdFs3XSplWzJdLG89dFsyXSplWzBdK3RbNV0qZVsxXSt0WzhdKmVbMl0scj10WzBdKmVbM10rdFszXSplWzRdK3RbNl0qZVs1XSxhPXRbMV0qZVszXSt0WzRdKmVbNF0rdFs3XSplWzVdLGg9dFsyXSplWzNdK3RbNV0qZVs0XSt0WzhdKmVbNV0sQT10WzBdKmVbNl0rdFszXSplWzddK3RbNl0qZVs4XSxkPXRbMV0qZVs2XSt0WzRdKmVbN10rdFs3XSplWzhdLGY9dFsyXSplWzZdK3RbNV0qZVs3XSt0WzhdKmVbOF07cmV0dXJuIGlbMF09bixpWzFdPXMsaVsyXT1vLGlbM109cixpWzRdPWEsaVs1XT1oLGlbNl09QSxpWzddPWQsaVs4XT1mLGl9O3h0LmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGlbMF09dFswXStlWzBdLGlbMV09dFsxXStlWzFdLGlbMl09dFsyXStlWzJdLGlbM109dFszXStlWzNdLGlbNF09dFs0XStlWzRdLGlbNV09dFs1XStlWzVdLGlbNl09dFs2XStlWzZdLGlbN109dFs3XStlWzddLGlbOF09dFs4XStlWzhdLGl9O3h0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdLWVbMF0saVsxXT10WzFdLWVbMV0saVsyXT10WzJdLWVbMl0saVszXT10WzNdLWVbM10saVs0XT10WzRdLWVbNF0saVs1XT10WzVdLWVbNV0saVs2XT10WzZdLWVbNl0saVs3XT10WzddLWVbN10saVs4XT10WzhdLWVbOF0saX07eHQubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9dFswXSpuK3RbM10qcyt0WzZdKm8sYT10WzFdKm4rdFs0XSpzK3RbN10qbyxoPXRbMl0qbit0WzVdKnMrdFs4XSpvO3JldHVybiBpLng9cixpLnk9YSxpLno9aCxpfTt4dC5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdKmUsaVsxXT10WzFdKmUsaVsyXT10WzJdKmUsaVszXT10WzNdKmUsaVs0XT10WzRdKmUsaVs1XT10WzVdKmUsaVs2XT10WzZdKmUsaVs3XT10WzddKmUsaVs4XT10WzhdKmUsaX07eHQubXVsdGlwbHlCeVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZS54LGlbMV09dFsxXSplLngsaVsyXT10WzJdKmUueCxpWzNdPXRbM10qZS55LGlbNF09dFs0XSplLnksaVs1XT10WzVdKmUueSxpWzZdPXRbNl0qZS56LGlbN109dFs3XSplLnosaVs4XT10WzhdKmUueixpfTt4dC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZSxpWzFdPXRbMV0qZSxpWzJdPXRbMl0qZSxpWzNdPXRbM10qZSxpWzRdPXRbNF0qZSxpWzVdPXRbNV0qZSxpWzZdPXRbNl0qZSxpWzddPXRbN10qZSxpWzhdPXRbOF0qZSxpfTt4dC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPS10WzBdLGVbMV09LXRbMV0sZVsyXT0tdFsyXSxlWzNdPS10WzNdLGVbNF09LXRbNF0sZVs1XT0tdFs1XSxlWzZdPS10WzZdLGVbN109LXRbN10sZVs4XT0tdFs4XSxlfTt4dC50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXRbMF0sbj10WzNdLHM9dFs2XSxvPXRbMV0scj10WzRdLGE9dFs3XSxoPXRbMl0sQT10WzVdLGQ9dFs4XTtyZXR1cm4gZVswXT1pLGVbMV09bixlWzJdPXMsZVszXT1vLGVbNF09cixlWzVdPWEsZVs2XT1oLGVbN109QSxlWzhdPWQsZX07TjA9WzEsMCwwXSxGMD1bMiwyLDFdO2JaPW5ldyB4dCxtVz1uZXcgeHQ7eHQuY29tcHV0ZUVpZ2VuRGVjb21wb3NpdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KTtsZXQgaT1MLkVQU0lMT04yMCxuPTEwLHM9MCxvPTA7bShlKXx8KGU9e30pO2xldCByPWUudW5pdGFyeT14dC5jbG9uZSh4dC5JREVOVElUWSxlLnVuaXRhcnkpLGE9ZS5kaWFnb25hbD14dC5jbG9uZSh0LGUuZGlhZ29uYWwpLGg9aSpuOShhKTtmb3IoO288biYmczkoYSk+aDspbzkoYSxiWikseHQudHJhbnNwb3NlKGJaLG1XKSx4dC5tdWx0aXBseShhLGJaLGEpLHh0Lm11bHRpcGx5KG1XLGEsYSkseHQubXVsdGlwbHkocixiWixyKSwrK3M+MiYmKCsrbyxzPTApO3JldHVybiBlfTt4dC5hYnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPU1hdGguYWJzKHRbMF0pLGVbMV09TWF0aC5hYnModFsxXSksZVsyXT1NYXRoLmFicyh0WzJdKSxlWzNdPU1hdGguYWJzKHRbM10pLGVbNF09TWF0aC5hYnModFs0XSksZVs1XT1NYXRoLmFicyh0WzVdKSxlWzZdPU1hdGguYWJzKHRbNl0pLGVbN109TWF0aC5hYnModFs3XSksZVs4XT1NYXRoLmFicyh0WzhdKSxlfTt4dC5kZXRlcm1pbmFudD1mdW5jdGlvbih0KXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IGU9dFswXSxpPXRbM10sbj10WzZdLHM9dFsxXSxvPXRbNF0scj10WzddLGE9dFsyXSxoPXRbNV0sQT10WzhdO3JldHVybiBlKihvKkEtaCpyKStzKihoKm4taSpBKSthKihpKnItbypuKX07eHQuaW52ZXJzZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9dFswXSxuPXRbMV0scz10WzJdLG89dFszXSxyPXRbNF0sYT10WzVdLGg9dFs2XSxBPXRbN10sZD10WzhdLGY9eHQuZGV0ZXJtaW5hbnQodCk7aWYoTWF0aC5hYnMoZik8PUwuRVBTSUxPTjE1KXRocm93IG5ldyBZKCJtYXRyaXggaXMgbm90IGludmVydGlibGUiKTtlWzBdPXIqZC1BKmEsZVsxXT1BKnMtbipkLGVbMl09biphLXIqcyxlWzNdPWgqYS1vKmQsZVs0XT1pKmQtaCpzLGVbNV09bypzLWkqYSxlWzZdPW8qQS1oKnIsZVs3XT1oKm4taSpBLGVbOF09aSpyLW8qbjtsZXQgRT0xL2Y7cmV0dXJuIHh0Lm11bHRpcGx5QnlTY2FsYXIoZSxFLGUpfTtyOT1uZXcgeHQ7eHQuaW52ZXJzZVRyYW5zcG9zZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLHh0LmludmVyc2UoeHQudHJhbnNwb3NlKHQscjkpLGUpfTt4dC5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnRbMF09PT1lWzBdJiZ0WzFdPT09ZVsxXSYmdFsyXT09PWVbMl0mJnRbM109PT1lWzNdJiZ0WzRdPT09ZVs0XSYmdFs1XT09PWVbNV0mJnRbNl09PT1lWzZdJiZ0WzddPT09ZVs3XSYmdFs4XT09PWVbOF19O3h0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModFswXS1lWzBdKTw9aSYmTWF0aC5hYnModFsxXS1lWzFdKTw9aSYmTWF0aC5hYnModFsyXS1lWzJdKTw9aSYmTWF0aC5hYnModFszXS1lWzNdKTw9aSYmTWF0aC5hYnModFs0XS1lWzRdKTw9aSYmTWF0aC5hYnModFs1XS1lWzVdKTw9aSYmTWF0aC5hYnModFs2XS1lWzZdKTw9aSYmTWF0aC5hYnModFs3XS1lWzddKTw9aSYmTWF0aC5hYnModFs4XS1lWzhdKTw9aX07eHQuSURFTlRJVFk9T2JqZWN0LmZyZWV6ZShuZXcgeHQoMSwwLDAsMCwxLDAsMCwwLDEpKTt4dC5aRVJPPU9iamVjdC5mcmVlemUobmV3IHh0KDAsMCwwLDAsMCwwLDAsMCwwKSk7eHQuQ09MVU1OMFJPVzA9MDt4dC5DT0xVTU4wUk9XMT0xO3h0LkNPTFVNTjBST1cyPTI7eHQuQ09MVU1OMVJPVzA9Mzt4dC5DT0xVTU4xUk9XMT00O3h0LkNPTFVNTjFST1cyPTU7eHQuQ09MVU1OMlJPVzA9Njt4dC5DT0xVTU4yUk9XMT03O3h0LkNPTFVNTjJST1cyPTg7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeHQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB4dC5wYWNrZWRMZW5ndGh9fX0pO3h0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4geHQuY2xvbmUodGhpcyx0KX07eHQucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4geHQuZXF1YWxzKHRoaXMsdCl9O3h0LmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdFswXT09PWVbaV0mJnRbMV09PT1lW2krMV0mJnRbMl09PT1lW2krMl0mJnRbM109PT1lW2krM10mJnRbNF09PT1lW2krNF0mJnRbNV09PT1lW2krNV0mJnRbNl09PT1lW2krNl0mJnRbN109PT1lW2krN10mJnRbOF09PT1lW2krOF19O3h0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHh0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTt4dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpc1swXX0sICR7dGhpc1szXX0sICR7dGhpc1s2XX0pCigke3RoaXNbMV19LCAke3RoaXNbNF19LCAke3RoaXNbN119KQooJHt0aGlzWzJdfSwgJHt0aGlzWzVdfSwgJHt0aGlzWzhdfSlgfTtsdD14dH0pO2Z1bmN0aW9uIHl0KHQsZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEkpe3RoaXNbMF09Wih0LDApLHRoaXNbMV09WihzLDApLHRoaXNbMl09WihoLDApLHRoaXNbM109WihFLDApLHRoaXNbNF09WihlLDApLHRoaXNbNV09WihvLDApLHRoaXNbNl09WihBLDApLHRoaXNbN109WihfLDApLHRoaXNbOF09WihpLDApLHRoaXNbOV09WihyLDApLHRoaXNbMTBdPVooZCwwKSx0aGlzWzExXT1aKFIsMCksdGhpc1sxMl09WihuLDApLHRoaXNbMTNdPVooYSwwKSx0aGlzWzE0XT1aKGYsMCksdGhpc1sxNV09WihJLDApfXZhciBUbSxObSxmRSxhOSxBOSxiMCxmVyxoOSxjOSxsOSxkOSxtOSxmOSxFOSxhdCxiaT1TKCgpPT57SHQoKTtPcygpO2FlKCk7RnQoKTttdCgpO090KCk7X2UoKTtkbigpO1BzKCk7eXQucGFja2VkTGVuZ3RoPTE2O3l0LnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dFswXSxlW2krK109dFsxXSxlW2krK109dFsyXSxlW2krK109dFszXSxlW2krK109dFs0XSxlW2krK109dFs1XSxlW2krK109dFs2XSxlW2krK109dFs3XSxlW2krK109dFs4XSxlW2krK109dFs5XSxlW2krK109dFsxMF0sZVtpKytdPXRbMTFdLGVbaSsrXT10WzEyXSxlW2krK109dFsxM10sZVtpKytdPXRbMTRdLGVbaV09dFsxNV0sZX07eXQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCksbShpKXx8KGk9bmV3IHl0KSxpWzBdPXRbZSsrXSxpWzFdPXRbZSsrXSxpWzJdPXRbZSsrXSxpWzNdPXRbZSsrXSxpWzRdPXRbZSsrXSxpWzVdPXRbZSsrXSxpWzZdPXRbZSsrXSxpWzddPXRbZSsrXSxpWzhdPXRbZSsrXSxpWzldPXRbZSsrXSxpWzEwXT10W2UrK10saVsxMV09dFtlKytdLGlbMTJdPXRbZSsrXSxpWzEzXT10W2UrK10saVsxNF09dFtlKytdLGlbMTVdPXRbZV0saX07eXQucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IGk9dC5sZW5ndGgsbj1pKjE2O2lmKCFtKGUpKWU9bmV3IEFycmF5KG4pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09bil0aHJvdyBuZXcgWSgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDE2IGVsZW1lbnRzIik7ZS5sZW5ndGghPT1uJiYoZS5sZW5ndGg9bil9Zm9yKGxldCBzPTA7czxpOysrcyl5dC5wYWNrKHRbc10sZSxzKjE2KTtyZXR1cm4gZX07eXQudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZihwLmRlZmluZWQoImFycmF5Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCwxNiksdC5sZW5ndGglMTYhPT0wKXRocm93IG5ldyBZKCJhcnJheSBsZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LiIpO2xldCBpPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9aS8xNjplPW5ldyBBcnJheShpLzE2KTtmb3IobGV0IG49MDtuPGk7bis9MTYpe2xldCBzPW4vMTY7ZVtzXT15dC51bnBhY2sodCxuLGVbc10pfXJldHVybiBlfTt5dC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4XT10WzhdLGVbOV09dFs5XSxlWzEwXT10WzEwXSxlWzExXT10WzExXSxlWzEyXT10WzEyXSxlWzEzXT10WzEzXSxlWzE0XT10WzE0XSxlWzE1XT10WzE1XSxlKTpuZXcgeXQodFswXSx0WzRdLHRbOF0sdFsxMl0sdFsxXSx0WzVdLHRbOV0sdFsxM10sdFsyXSx0WzZdLHRbMTBdLHRbMTRdLHRbM10sdFs3XSx0WzExXSx0WzE1XSl9O3l0LmZyb21BcnJheT15dC51bnBhY2s7eXQuZnJvbUNvbHVtbk1ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC5kZWZpbmVkKCJ2YWx1ZXMiLHQpLHl0LmNsb25lKHQsZSl9O3l0LmZyb21Sb3dNYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWVzIix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzRdLGVbMl09dFs4XSxlWzNdPXRbMTJdLGVbNF09dFsxXSxlWzVdPXRbNV0sZVs2XT10WzldLGVbN109dFsxM10sZVs4XT10WzJdLGVbOV09dFs2XSxlWzEwXT10WzEwXSxlWzExXT10WzE0XSxlWzEyXT10WzNdLGVbMTNdPXRbN10sZVsxNF09dFsxMV0sZVsxNV09dFsxNV0sZSk6bmV3IHl0KHRbMF0sdFsxXSx0WzJdLHRbM10sdFs0XSx0WzVdLHRbNl0sdFs3XSx0WzhdLHRbOV0sdFsxMF0sdFsxMV0sdFsxMl0sdFsxM10sdFsxNF0sdFsxNV0pfTt5dC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicm90YXRpb24iLHQpLGU9WihlLGwuWkVSTyksbShpKT8oaVswXT10WzBdLGlbMV09dFsxXSxpWzJdPXRbMl0saVszXT0wLGlbNF09dFszXSxpWzVdPXRbNF0saVs2XT10WzVdLGlbN109MCxpWzhdPXRbNl0saVs5XT10WzddLGlbMTBdPXRbOF0saVsxMV09MCxpWzEyXT1lLngsaVsxM109ZS55LGlbMTRdPWUueixpWzE1XT0xLGkpOm5ldyB5dCh0WzBdLHRbM10sdFs2XSxlLngsdFsxXSx0WzRdLHRbN10sZS55LHRbMl0sdFs1XSx0WzhdLGUueiwwLDAsMCwxKX07eXQuZnJvbVRyYW5zbGF0aW9uUXVhdGVybmlvblJvdGF0aW9uU2NhbGU9ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJ0cmFuc2xhdGlvbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyb3RhdGlvbiIsZSkscC50eXBlT2Yub2JqZWN0KCJzY2FsZSIsaSksbShuKXx8KG49bmV3IHl0KTtsZXQgcz1pLngsbz1pLnkscj1pLnosYT1lLngqZS54LGg9ZS54KmUueSxBPWUueCplLnosZD1lLngqZS53LGY9ZS55KmUueSxFPWUueSplLnosXz1lLnkqZS53LFI9ZS56KmUueixJPWUueiplLncsQz1lLncqZS53LE49YS1mLVIrQyxUPTIqKGgtSSksYj0yKihBK18pLEY9MiooaCtJKSxCPS1hK2YtUitDLFU9MiooRS1kKSxRPTIqKEEtXyksTT0yKihFK2QpLGs9LWEtZitSK0M7cmV0dXJuIG5bMF09TipzLG5bMV09RipzLG5bMl09USpzLG5bM109MCxuWzRdPVQqbyxuWzVdPUIqbyxuWzZdPU0qbyxuWzddPTAsbls4XT1iKnIsbls5XT1VKnIsblsxMF09aypyLG5bMTFdPTAsblsxMl09dC54LG5bMTNdPXQueSxuWzE0XT10LnosblsxNV09MSxufTt5dC5mcm9tVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlIix0KSx5dC5mcm9tVHJhbnNsYXRpb25RdWF0ZXJuaW9uUm90YXRpb25TY2FsZSh0LnRyYW5zbGF0aW9uLHQucm90YXRpb24sdC5zY2FsZSxlKX07eXQuZnJvbVRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb24iLHQpLHl0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKGx0LklERU5USVRZLHQsZSl9O3l0LmZyb21TY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNjYWxlIix0KSxtKGUpPyhlWzBdPXQueCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT10LnksZVs2XT0wLGVbN109MCxlWzhdPTAsZVs5XT0wLGVbMTBdPXQueixlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsZSk6bmV3IHl0KHQueCwwLDAsMCwwLHQueSwwLDAsMCwwLHQueiwwLDAsMCwwLDEpfTt5dC5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT10LGVbNl09MCxlWzddPTAsZVs4XT0wLGVbOV09MCxlWzEwXT10LGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSxlKTpuZXcgeXQodCwwLDAsMCwwLHQsMCwwLDAsMCx0LDAsMCwwLDAsMSl9O3l0LmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJvdGF0aW9uIix0KSxtKGUpfHwoZT1uZXcgeXQpLGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109MCxlWzRdPXRbM10sZVs1XT10WzRdLGVbNl09dFs1XSxlWzddPTAsZVs4XT10WzZdLGVbOV09dFs3XSxlWzEwXT10WzhdLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSxlfTtUbT1uZXcgbCxObT1uZXcgbCxmRT1uZXcgbDt5dC5mcm9tQ2FtZXJhPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJjYW1lcmEiLHQpO2xldCBpPXQucG9zaXRpb24sbj10LmRpcmVjdGlvbixzPXQudXA7cC50eXBlT2Yub2JqZWN0KCJjYW1lcmEucG9zaXRpb24iLGkpLHAudHlwZU9mLm9iamVjdCgiY2FtZXJhLmRpcmVjdGlvbiIsbikscC50eXBlT2Yub2JqZWN0KCJjYW1lcmEudXAiLHMpLGwubm9ybWFsaXplKG4sVG0pLGwubm9ybWFsaXplKGwuY3Jvc3MoVG0scyxObSksTm0pLGwubm9ybWFsaXplKGwuY3Jvc3MoTm0sVG0sZkUpLGZFKTtsZXQgbz1ObS54LHI9Tm0ueSxhPU5tLnosaD1UbS54LEE9VG0ueSxkPVRtLnosZj1mRS54LEU9ZkUueSxfPWZFLnosUj1pLngsST1pLnksQz1pLnosTj1vKi1SK3IqLUkrYSotQyxUPWYqLVIrRSotSStfKi1DLGI9aCpSK0EqSStkKkM7cmV0dXJuIG0oZSk/KGVbMF09byxlWzFdPWYsZVsyXT0taCxlWzNdPTAsZVs0XT1yLGVbNV09RSxlWzZdPS1BLGVbN109MCxlWzhdPWEsZVs5XT1fLGVbMTBdPS1kLGVbMTFdPTAsZVsxMl09TixlWzEzXT1ULGVbMTRdPWIsZVsxNV09MSxlKTpuZXcgeXQobyxyLGEsTixmLEUsXyxULC1oLC1BLC1kLGIsMCwwLDAsMSl9O3l0LmNvbXB1dGVQZXJzcGVjdGl2ZUZpZWxkT2ZWaWV3PWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJmb3ZZIix0LDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbigiZm92WSIsdCxNYXRoLlBJKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oIm5lYXIiLGksMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJmYXIiLG4sMCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLHMpO2xldCByPTEvTWF0aC50YW4odCouNSksYT1yL2UsaD0obitpKS8oaS1uKSxBPTIqbippLyhpLW4pO3JldHVybiBzWzBdPWEsc1sxXT0wLHNbMl09MCxzWzNdPTAsc1s0XT0wLHNbNV09cixzWzZdPTAsc1s3XT0wLHNbOF09MCxzWzldPTAsc1sxMF09aCxzWzExXT0tMSxzWzEyXT0wLHNbMTNdPTAsc1sxNF09QSxzWzE1XT0wLHN9O3l0LmNvbXB1dGVPcnRob2dyYXBoaWNPZmZDZW50ZXI9ZnVuY3Rpb24odCxlLGksbixzLG8scil7cC50eXBlT2YubnVtYmVyKCJsZWZ0Iix0KSxwLnR5cGVPZi5udW1iZXIoInJpZ2h0IixlKSxwLnR5cGVPZi5udW1iZXIoImJvdHRvbSIsaSkscC50eXBlT2YubnVtYmVyKCJ0b3AiLG4pLHAudHlwZU9mLm51bWJlcigibmVhciIscykscC50eXBlT2YubnVtYmVyKCJmYXIiLG8pLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixyKTtsZXQgYT0xLyhlLXQpLGg9MS8obi1pKSxBPTEvKG8tcyksZD0tKGUrdCkqYSxmPS0obitpKSpoLEU9LShvK3MpKkE7cmV0dXJuIGEqPTIsaCo9MixBKj0tMixyWzBdPWEsclsxXT0wLHJbMl09MCxyWzNdPTAscls0XT0wLHJbNV09aCxyWzZdPTAscls3XT0wLHJbOF09MCxyWzldPTAsclsxMF09QSxyWzExXT0wLHJbMTJdPWQsclsxM109ZixyWzE0XT1FLHJbMTVdPTEscn07eXQuY29tcHV0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe3AudHlwZU9mLm51bWJlcigibGVmdCIsdCkscC50eXBlT2YubnVtYmVyKCJyaWdodCIsZSkscC50eXBlT2YubnVtYmVyKCJib3R0b20iLGkpLHAudHlwZU9mLm51bWJlcigidG9wIixuKSxwLnR5cGVPZi5udW1iZXIoIm5lYXIiLHMpLHAudHlwZU9mLm51bWJlcigiZmFyIixvKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIscik7bGV0IGE9MipzLyhlLXQpLGg9MipzLyhuLWkpLEE9KGUrdCkvKGUtdCksZD0obitpKS8obi1pKSxmPS0obytzKS8oby1zKSxFPS0xLF89LTIqbypzLyhvLXMpO3JldHVybiByWzBdPWEsclsxXT0wLHJbMl09MCxyWzNdPTAscls0XT0wLHJbNV09aCxyWzZdPTAscls3XT0wLHJbOF09QSxyWzldPWQsclsxMF09ZixyWzExXT1FLHJbMTJdPTAsclsxM109MCxyWzE0XT1fLHJbMTVdPTAscn07eXQuY29tcHV0ZUluZmluaXRlUGVyc3BlY3RpdmVPZmZDZW50ZXI9ZnVuY3Rpb24odCxlLGksbixzLG8pe3AudHlwZU9mLm51bWJlcigibGVmdCIsdCkscC50eXBlT2YubnVtYmVyKCJyaWdodCIsZSkscC50eXBlT2YubnVtYmVyKCJib3R0b20iLGkpLHAudHlwZU9mLm51bWJlcigidG9wIixuKSxwLnR5cGVPZi5udW1iZXIoIm5lYXIiLHMpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKTtsZXQgcj0yKnMvKGUtdCksYT0yKnMvKG4taSksaD0oZSt0KS8oZS10KSxBPShuK2kpLyhuLWkpLGQ9LTEsZj0tMSxFPS0yKnM7cmV0dXJuIG9bMF09cixvWzFdPTAsb1syXT0wLG9bM109MCxvWzRdPTAsb1s1XT1hLG9bNl09MCxvWzddPTAsb1s4XT1oLG9bOV09QSxvWzEwXT1kLG9bMTFdPWYsb1sxMl09MCxvWzEzXT0wLG9bMTRdPUUsb1sxNV09MCxvfTt5dC5jb21wdXRlVmlld3BvcnRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSxuKXttKG4pfHwobj1uZXcgeXQpLHQ9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgcz1aKHQueCwwKSxvPVoodC55LDApLHI9Wih0LndpZHRoLDApLGE9Wih0LmhlaWdodCwwKTtlPVooZSwwKSxpPVooaSwxKTtsZXQgaD1yKi41LEE9YSouNSxkPShpLWUpKi41LGY9aCxFPUEsXz1kLFI9cytoLEk9bytBLEM9ZStkLE49MTtyZXR1cm4gblswXT1mLG5bMV09MCxuWzJdPTAsblszXT0wLG5bNF09MCxuWzVdPUUsbls2XT0wLG5bN109MCxuWzhdPTAsbls5XT0wLG5bMTBdPV8sblsxMV09MCxuWzEyXT1SLG5bMTNdPUksblsxNF09QyxuWzE1XT1OLG59O3l0LmNvbXB1dGVWaWV3PWZ1bmN0aW9uKHQsZSxpLG4scyl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicG9zaXRpb24iLHQpLHAudHlwZU9mLm9iamVjdCgiZGlyZWN0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInVwIixpKSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixuKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIscyksc1swXT1uLngsc1sxXT1pLngsc1syXT0tZS54LHNbM109MCxzWzRdPW4ueSxzWzVdPWkueSxzWzZdPS1lLnksc1s3XT0wLHNbOF09bi56LHNbOV09aS56LHNbMTBdPS1lLnosc1sxMV09MCxzWzEyXT0tbC5kb3Qobix0KSxzWzEzXT0tbC5kb3QoaSx0KSxzWzE0XT1sLmRvdChlLHQpLHNbMTVdPTEsc307eXQudG9BcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdLHRbN10sdFs4XSx0WzldLHRbMTBdLHRbMTFdLHRbMTJdLHRbMTNdLHRbMTRdLHRbMTVdXX07eXQuZ2V0RWxlbWVudEluZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJyb3ciLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoInJvdyIsZSwzKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiY29sdW1uIix0LDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMyksdCo0K2V9O3l0LmdldENvbHVtbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPWUqNCxzPXRbbl0sbz10W24rMV0scj10W24rMl0sYT10W24rM107cmV0dXJuIGkueD1zLGkueT1vLGkuej1yLGkudz1hLGl9O3l0LnNldENvbHVtbj1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwzKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49eXQuY2xvbmUodCxuKTtsZXQgcz1lKjQ7cmV0dXJuIG5bc109aS54LG5bcysxXT1pLnksbltzKzJdPWkueixuW3MrM109aS53LG59O3l0LmdldFJvdz1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXRbZV0scz10W2UrNF0sbz10W2UrOF0scj10W2UrMTJdO3JldHVybiBpLng9bixpLnk9cyxpLno9byxpLnc9cixpfTt5dC5zZXRSb3c9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDMpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbj15dC5jbG9uZSh0LG4pLG5bZV09aS54LG5bZSs0XT1pLnksbltlKzhdPWkueixuW2UrMTJdPWkudyxufTt5dC5zZXRUcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInRyYW5zbGF0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdLGlbMV09dFsxXSxpWzJdPXRbMl0saVszXT10WzNdLGlbNF09dFs0XSxpWzVdPXRbNV0saVs2XT10WzZdLGlbN109dFs3XSxpWzhdPXRbOF0saVs5XT10WzldLGlbMTBdPXRbMTBdLGlbMTFdPXRbMTFdLGlbMTJdPWUueCxpWzEzXT1lLnksaVsxNF09ZS56LGlbMTVdPXRbMTVdLGl9O2E5PW5ldyBsO3l0LnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXl0LmdldFNjYWxlKHQsYTkpLHM9ZS54L24ueCxvPWUueS9uLnkscj1lLnovbi56O3JldHVybiBpWzBdPXRbMF0qcyxpWzFdPXRbMV0qcyxpWzJdPXRbMl0qcyxpWzNdPXRbM10saVs0XT10WzRdKm8saVs1XT10WzVdKm8saVs2XT10WzZdKm8saVs3XT10WzddLGlbOF09dFs4XSpyLGlbOV09dFs5XSpyLGlbMTBdPXRbMTBdKnIsaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07QTk9bmV3IGw7eXQuc2V0VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXl0LmdldFNjYWxlKHQsQTkpLHM9ZS9uLngsbz1lL24ueSxyPWUvbi56O3JldHVybiBpWzBdPXRbMF0qcyxpWzFdPXRbMV0qcyxpWzJdPXRbMl0qcyxpWzNdPXRbM10saVs0XT10WzRdKm8saVs1XT10WzVdKm8saVs2XT10WzZdKm8saVs3XT10WzddLGlbOF09dFs4XSpyLGlbOV09dFs5XSpyLGlbMTBdPXRbMTBdKnIsaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07YjA9bmV3IGw7eXQuZ2V0U2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFswXSx0WzFdLHRbMl0sYjApKSxlLnk9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFs0XSx0WzVdLHRbNl0sYjApKSxlLno9bC5tYWduaXR1ZGUobC5mcm9tRWxlbWVudHModFs4XSx0WzldLHRbMTBdLGIwKSksZX07Zlc9bmV3IGw7eXQuZ2V0TWF4aW11bVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB5dC5nZXRTY2FsZSh0LGZXKSxsLm1heGltdW1Db21wb25lbnQoZlcpfTtoOT1uZXcgbDt5dC5zZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj15dC5nZXRTY2FsZSh0LGg5KTtyZXR1cm4gaVswXT1lWzBdKm4ueCxpWzFdPWVbMV0qbi54LGlbMl09ZVsyXSpuLngsaVszXT10WzNdLGlbNF09ZVszXSpuLnksaVs1XT1lWzRdKm4ueSxpWzZdPWVbNV0qbi55LGlbN109dFs3XSxpWzhdPWVbNl0qbi56LGlbOV09ZVs3XSpuLnosaVsxMF09ZVs4XSpuLnosaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07Yzk9bmV3IGw7eXQuZ2V0Um90YXRpb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXl0LmdldFNjYWxlKHQsYzkpO3JldHVybiBlWzBdPXRbMF0vaS54LGVbMV09dFsxXS9pLngsZVsyXT10WzJdL2kueCxlWzNdPXRbNF0vaS55LGVbNF09dFs1XS9pLnksZVs1XT10WzZdL2kueSxlWzZdPXRbOF0vaS56LGVbN109dFs5XS9pLnosZVs4XT10WzEwXS9pLnosZX07eXQubXVsdGlwbHk9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPXRbMF0scz10WzFdLG89dFsyXSxyPXRbM10sYT10WzRdLGg9dFs1XSxBPXRbNl0sZD10WzddLGY9dFs4XSxFPXRbOV0sXz10WzEwXSxSPXRbMTFdLEk9dFsxMl0sQz10WzEzXSxOPXRbMTRdLFQ9dFsxNV0sYj1lWzBdLEY9ZVsxXSxCPWVbMl0sVT1lWzNdLFE9ZVs0XSxNPWVbNV0saz1lWzZdLHk9ZVs3XSxjPWVbOF0sZz1lWzldLE89ZVsxMF0sRD1lWzExXSx3PWVbMTJdLHg9ZVsxM10sSD1lWzE0XSxqPWVbMTVdLFg9bipiK2EqRitmKkIrSSpVLHR0PXMqYitoKkYrRSpCK0MqVSxHPW8qYitBKkYrXypCK04qVSxJdD1yKmIrZCpGK1IqQitUKlUsZ3Q9bipRK2EqTStmKmsrSSp5LFl0PXMqUStoKk0rRSprK0MqeSxVdD1vKlErQSpNK18qaytOKnksQ3Q9cipRK2QqTStSKmsrVCp5LHp0PW4qYythKmcrZipPK0kqRCxrdD1zKmMraCpnK0UqTytDKkQsSnQ9bypjK0EqZytfKk8rTipELFd0PXIqYytkKmcrUipPK1QqRCxidD1uKncrYSp4K2YqSCtJKmosZWU9cyp3K2gqeCtFKkgrQypqLGNlPW8qdytBKngrXypIK04qaixqZT1yKncrZCp4K1IqSCtUKmo7cmV0dXJuIGlbMF09WCxpWzFdPXR0LGlbMl09RyxpWzNdPUl0LGlbNF09Z3QsaVs1XT1ZdCxpWzZdPVV0LGlbN109Q3QsaVs4XT16dCxpWzldPWt0LGlbMTBdPUp0LGlbMTFdPVd0LGlbMTJdPWJ0LGlbMTNdPWVlLGlbMTRdPWNlLGlbMTVdPWplLGl9O3l0LmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGlbMF09dFswXStlWzBdLGlbMV09dFsxXStlWzFdLGlbMl09dFsyXStlWzJdLGlbM109dFszXStlWzNdLGlbNF09dFs0XStlWzRdLGlbNV09dFs1XStlWzVdLGlbNl09dFs2XStlWzZdLGlbN109dFs3XStlWzddLGlbOF09dFs4XStlWzhdLGlbOV09dFs5XStlWzldLGlbMTBdPXRbMTBdK2VbMTBdLGlbMTFdPXRbMTFdK2VbMTFdLGlbMTJdPXRbMTJdK2VbMTJdLGlbMTNdPXRbMTNdK2VbMTNdLGlbMTRdPXRbMTRdK2VbMTRdLGlbMTVdPXRbMTVdK2VbMTVdLGl9O3l0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdLWVbMF0saVsxXT10WzFdLWVbMV0saVsyXT10WzJdLWVbMl0saVszXT10WzNdLWVbM10saVs0XT10WzRdLWVbNF0saVs1XT10WzVdLWVbNV0saVs2XT10WzZdLWVbNl0saVs3XT10WzddLWVbN10saVs4XT10WzhdLWVbOF0saVs5XT10WzldLWVbOV0saVsxMF09dFsxMF0tZVsxMF0saVsxMV09dFsxMV0tZVsxMV0saVsxMl09dFsxMl0tZVsxMl0saVsxM109dFsxM10tZVsxM10saVsxNF09dFsxNF0tZVsxNF0saVsxNV09dFsxNV0tZVsxNV0saX07eXQubXVsdGlwbHlUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFswXSxzPXRbMV0sbz10WzJdLHI9dFs0XSxhPXRbNV0saD10WzZdLEE9dFs4XSxkPXRbOV0sZj10WzEwXSxFPXRbMTJdLF89dFsxM10sUj10WzE0XSxJPWVbMF0sQz1lWzFdLE49ZVsyXSxUPWVbNF0sYj1lWzVdLEY9ZVs2XSxCPWVbOF0sVT1lWzldLFE9ZVsxMF0sTT1lWzEyXSxrPWVbMTNdLHk9ZVsxNF0sYz1uKkkrcipDK0EqTixnPXMqSSthKkMrZCpOLE89bypJK2gqQytmKk4sRD1uKlQrcipiK0EqRix3PXMqVCthKmIrZCpGLHg9bypUK2gqYitmKkYsSD1uKkIrcipVK0EqUSxqPXMqQithKlUrZCpRLFg9bypCK2gqVStmKlEsdHQ9bipNK3IqaytBKnkrRSxHPXMqTSthKmsrZCp5K18sSXQ9bypNK2gqaytmKnkrUjtyZXR1cm4gaVswXT1jLGlbMV09ZyxpWzJdPU8saVszXT0wLGlbNF09RCxpWzVdPXcsaVs2XT14LGlbN109MCxpWzhdPUgsaVs5XT1qLGlbMTBdPVgsaVsxMV09MCxpWzEyXT10dCxpWzEzXT1HLGlbMTRdPUl0LGlbMTVdPTEsaX07eXQubXVsdGlwbHlCeU1hdHJpeDM9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJvdGF0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFswXSxzPXRbMV0sbz10WzJdLHI9dFs0XSxhPXRbNV0saD10WzZdLEE9dFs4XSxkPXRbOV0sZj10WzEwXSxFPWVbMF0sXz1lWzFdLFI9ZVsyXSxJPWVbM10sQz1lWzRdLE49ZVs1XSxUPWVbNl0sYj1lWzddLEY9ZVs4XSxCPW4qRStyKl8rQSpSLFU9cypFK2EqXytkKlIsUT1vKkUraCpfK2YqUixNPW4qSStyKkMrQSpOLGs9cypJK2EqQytkKk4seT1vKkkraCpDK2YqTixjPW4qVCtyKmIrQSpGLGc9cypUK2EqYitkKkYsTz1vKlQraCpiK2YqRjtyZXR1cm4gaVswXT1CLGlbMV09VSxpWzJdPVEsaVszXT0wLGlbNF09TSxpWzVdPWssaVs2XT15LGlbN109MCxpWzhdPWMsaVs5XT1nLGlbMTBdPU8saVsxMV09MCxpWzEyXT10WzEyXSxpWzEzXT10WzEzXSxpWzE0XT10WzE0XSxpWzE1XT10WzE1XSxpfTt5dC5tdWx0aXBseUJ5VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInRyYW5zbGF0aW9uIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9bip0WzBdK3MqdFs0XStvKnRbOF0rdFsxMl0sYT1uKnRbMV0rcyp0WzVdK28qdFs5XSt0WzEzXSxoPW4qdFsyXStzKnRbNl0rbyp0WzEwXSt0WzE0XTtyZXR1cm4gaVswXT10WzBdLGlbMV09dFsxXSxpWzJdPXRbMl0saVszXT10WzNdLGlbNF09dFs0XSxpWzVdPXRbNV0saVs2XT10WzZdLGlbN109dFs3XSxpWzhdPXRbOF0saVs5XT10WzldLGlbMTBdPXRbMTBdLGlbMTFdPXRbMTFdLGlbMTJdPXIsaVsxM109YSxpWzE0XT1oLGlbMTVdPXRbMTVdLGl9O3l0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1lLngscz1lLnksbz1lLno7cmV0dXJuIG49PT0xJiZzPT09MSYmbz09PTE/eXQuY2xvbmUodCxpKTooaVswXT1uKnRbMF0saVsxXT1uKnRbMV0saVsyXT1uKnRbMl0saVszXT10WzNdLGlbNF09cyp0WzRdLGlbNV09cyp0WzVdLGlbNl09cyp0WzZdLGlbN109dFs3XSxpWzhdPW8qdFs4XSxpWzldPW8qdFs5XSxpWzEwXT1vKnRbMTBdLGlbMTFdPXRbMTFdLGlbMTJdPXRbMTJdLGlbMTNdPXRbMTNdLGlbMTRdPXRbMTRdLGlbMTVdPXRbMTVdLGkpfTt5dC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZSxpWzFdPXRbMV0qZSxpWzJdPXRbMl0qZSxpWzNdPXRbM10saVs0XT10WzRdKmUsaVs1XT10WzVdKmUsaVs2XT10WzZdKmUsaVs3XT10WzddLGlbOF09dFs4XSplLGlbOV09dFs5XSplLGlbMTBdPXRbMTBdKmUsaVsxMV09dFsxMV0saVsxMl09dFsxMl0saVsxM109dFsxM10saVsxNF09dFsxNF0saVsxNV09dFsxNV0saX07eXQubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9ZS53LGE9dFswXSpuK3RbNF0qcyt0WzhdKm8rdFsxMl0qcixoPXRbMV0qbit0WzVdKnMrdFs5XSpvK3RbMTNdKnIsQT10WzJdKm4rdFs2XSpzK3RbMTBdKm8rdFsxNF0qcixkPXRbM10qbit0WzddKnMrdFsxMV0qbyt0WzE1XSpyO3JldHVybiBpLng9YSxpLnk9aCxpLno9QSxpLnc9ZCxpfTt5dC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3Rvcj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49ZS54LHM9ZS55LG89ZS56LHI9dFswXSpuK3RbNF0qcyt0WzhdKm8sYT10WzFdKm4rdFs1XSpzK3RbOV0qbyxoPXRbMl0qbit0WzZdKnMrdFsxMF0qbztyZXR1cm4gaS54PXIsaS55PWEsaS56PWgsaX07eXQubXVsdGlwbHlCeVBvaW50PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1lLngscz1lLnksbz1lLnoscj10WzBdKm4rdFs0XSpzK3RbOF0qbyt0WzEyXSxhPXRbMV0qbit0WzVdKnMrdFs5XSpvK3RbMTNdLGg9dFsyXSpuK3RbNl0qcyt0WzEwXSpvK3RbMTRdO3JldHVybiBpLng9cixpLnk9YSxpLno9aCxpfTt5dC5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdKmUsaVsxXT10WzFdKmUsaVsyXT10WzJdKmUsaVszXT10WzNdKmUsaVs0XT10WzRdKmUsaVs1XT10WzVdKmUsaVs2XT10WzZdKmUsaVs3XT10WzddKmUsaVs4XT10WzhdKmUsaVs5XT10WzldKmUsaVsxMF09dFsxMF0qZSxpWzExXT10WzExXSplLGlbMTJdPXRbMTJdKmUsaVsxM109dFsxM10qZSxpWzE0XT10WzE0XSplLGlbMTVdPXRbMTVdKmUsaX07eXQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT0tdFswXSxlWzFdPS10WzFdLGVbMl09LXRbMl0sZVszXT0tdFszXSxlWzRdPS10WzRdLGVbNV09LXRbNV0sZVs2XT0tdFs2XSxlWzddPS10WzddLGVbOF09LXRbOF0sZVs5XT0tdFs5XSxlWzEwXT0tdFsxMF0sZVsxMV09LXRbMTFdLGVbMTJdPS10WzEyXSxlWzEzXT0tdFsxM10sZVsxNF09LXRbMTRdLGVbMTVdPS10WzE1XSxlfTt5dC50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXRbMV0sbj10WzJdLHM9dFszXSxvPXRbNl0scj10WzddLGE9dFsxMV07cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbNF0sZVsyXT10WzhdLGVbM109dFsxMl0sZVs0XT1pLGVbNV09dFs1XSxlWzZdPXRbOV0sZVs3XT10WzEzXSxlWzhdPW4sZVs5XT1vLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTRdLGVbMTJdPXMsZVsxM109cixlWzE0XT1hLGVbMTVdPXRbMTVdLGV9O3l0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09TWF0aC5hYnModFswXSksZVsxXT1NYXRoLmFicyh0WzFdKSxlWzJdPU1hdGguYWJzKHRbMl0pLGVbM109TWF0aC5hYnModFszXSksZVs0XT1NYXRoLmFicyh0WzRdKSxlWzVdPU1hdGguYWJzKHRbNV0pLGVbNl09TWF0aC5hYnModFs2XSksZVs3XT1NYXRoLmFicyh0WzddKSxlWzhdPU1hdGguYWJzKHRbOF0pLGVbOV09TWF0aC5hYnModFs5XSksZVsxMF09TWF0aC5hYnModFsxMF0pLGVbMTFdPU1hdGguYWJzKHRbMTFdKSxlWzEyXT1NYXRoLmFicyh0WzEyXSksZVsxM109TWF0aC5hYnModFsxM10pLGVbMTRdPU1hdGguYWJzKHRbMTRdKSxlWzE1XT1NYXRoLmFicyh0WzE1XSksZX07eXQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzEyXT09PWVbMTJdJiZ0WzEzXT09PWVbMTNdJiZ0WzE0XT09PWVbMTRdJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzRdPT09ZVs0XSYmdFs1XT09PWVbNV0mJnRbNl09PT1lWzZdJiZ0WzhdPT09ZVs4XSYmdFs5XT09PWVbOV0mJnRbMTBdPT09ZVsxMF0mJnRbM109PT1lWzNdJiZ0WzddPT09ZVs3XSYmdFsxMV09PT1lWzExXSYmdFsxNV09PT1lWzE1XX07eXQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGk9WihpLDApLHQ9PT1lfHxtKHQpJiZtKGUpJiZNYXRoLmFicyh0WzBdLWVbMF0pPD1pJiZNYXRoLmFicyh0WzFdLWVbMV0pPD1pJiZNYXRoLmFicyh0WzJdLWVbMl0pPD1pJiZNYXRoLmFicyh0WzNdLWVbM10pPD1pJiZNYXRoLmFicyh0WzRdLWVbNF0pPD1pJiZNYXRoLmFicyh0WzVdLWVbNV0pPD1pJiZNYXRoLmFicyh0WzZdLWVbNl0pPD1pJiZNYXRoLmFicyh0WzddLWVbN10pPD1pJiZNYXRoLmFicyh0WzhdLWVbOF0pPD1pJiZNYXRoLmFicyh0WzldLWVbOV0pPD1pJiZNYXRoLmFicyh0WzEwXS1lWzEwXSk8PWkmJk1hdGguYWJzKHRbMTFdLWVbMTFdKTw9aSYmTWF0aC5hYnModFsxMl0tZVsxMl0pPD1pJiZNYXRoLmFicyh0WzEzXS1lWzEzXSk8PWkmJk1hdGguYWJzKHRbMTRdLWVbMTRdKTw9aSYmTWF0aC5hYnModFsxNV0tZVsxNV0pPD1pfTt5dC5nZXRUcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD10WzEyXSxlLnk9dFsxM10sZS56PXRbMTRdLGV9O3l0LmdldE1hdHJpeDM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbNF0sZVs0XT10WzVdLGVbNV09dFs2XSxlWzZdPXRbOF0sZVs3XT10WzldLGVbOF09dFsxMF0sZX07bDk9bmV3IGx0LGQ5PW5ldyBsdCxtOT1uZXcgaWUsZjk9bmV3IGllKDAsMCwwLDEpO3l0LmludmVyc2U9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXRbMF0sbj10WzRdLHM9dFs4XSxvPXRbMTJdLHI9dFsxXSxhPXRbNV0saD10WzldLEE9dFsxM10sZD10WzJdLGY9dFs2XSxFPXRbMTBdLF89dFsxNF0sUj10WzNdLEk9dFs3XSxDPXRbMTFdLE49dFsxNV0sVD1FKk4sYj1fKkMsRj1mKk4sQj1fKkksVT1mKkMsUT1FKkksTT1kKk4saz1fKlIseT1kKkMsYz1FKlIsZz1kKkksTz1mKlIsRD1UKmErQipoK1UqQS0oYiphK0YqaCtRKkEpLHc9YipyK00qaCtjKkEtKFQqcitrKmgreSpBKSx4PUYqcitrKmErZypBLShCKnIrTSphK08qQSksSD1RKnIreSphK08qaC0oVSpyK2MqYStnKmgpLGo9YipuK0YqcytRKm8tKFQqbitCKnMrVSpvKSxYPVQqaStrKnMreSpvLShiKmkrTSpzK2MqbyksdHQ9QippK00qbitPKm8tKEYqaStrKm4rZypvKSxHPVUqaStjKm4rZypzLShRKmkreSpuK08qcyk7VD1zKkEsYj1vKmgsRj1uKkEsQj1vKmEsVT1uKmgsUT1zKmEsTT1pKkEsaz1vKnIseT1pKmgsYz1zKnIsZz1pKmEsTz1uKnI7bGV0IEl0PVQqSStCKkMrVSpOLShiKkkrRipDK1EqTiksZ3Q9YipSK00qQytjKk4tKFQqUitrKkMreSpOKSxZdD1GKlIraypJK2cqTi0oQipSK00qSStPKk4pLFV0PVEqUit5KkkrTypDLShVKlIrYypJK2cqQyksQ3Q9RipFK1EqXytiKmYtKFUqXytUKmYrQipFKSx6dD15Kl8rVCpkK2sqRS0oTSpFK2MqXytiKmQpLGt0PU0qZitPKl8rQipkLShnKl8rRipkK2sqZiksSnQ9ZypFK1UqZCtjKmYtKHkqZitPKkUrUSpkKSxXdD1pKkQrbip3K3MqeCtvKkg7aWYoTWF0aC5hYnMoV3QpPEwuRVBTSUxPTjIxKXtpZihsdC5lcXVhbHNFcHNpbG9uKHl0LmdldE1hdHJpeDModCxsOSksZDksTC5FUFNJTE9ONykmJmllLmVxdWFscyh5dC5nZXRSb3codCwzLG05KSxmOSkpcmV0dXJuIGVbMF09MCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0wLGVbOV09MCxlWzEwXT0wLGVbMTFdPTAsZVsxMl09LXRbMTJdLGVbMTNdPS10WzEzXSxlWzE0XT0tdFsxNF0sZVsxNV09MSxlO3Rocm93IG5ldyBrZSgibWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIGJlY2F1c2UgaXRzIGRldGVybWluYXRlIGlzIHplcm8uIil9cmV0dXJuIFd0PTEvV3QsZVswXT1EKld0LGVbMV09dypXdCxlWzJdPXgqV3QsZVszXT1IKld0LGVbNF09aipXdCxlWzVdPVgqV3QsZVs2XT10dCpXdCxlWzddPUcqV3QsZVs4XT1JdCpXdCxlWzldPWd0Kld0LGVbMTBdPVl0Kld0LGVbMTFdPVV0Kld0LGVbMTJdPUN0Kld0LGVbMTNdPXp0Kld0LGVbMTRdPWt0Kld0LGVbMTVdPUp0Kld0LGV9O3l0LmludmVyc2VUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9dFswXSxuPXRbMV0scz10WzJdLG89dFs0XSxyPXRbNV0sYT10WzZdLGg9dFs4XSxBPXRbOV0sZD10WzEwXSxmPXRbMTJdLEU9dFsxM10sXz10WzE0XSxSPS1pKmYtbipFLXMqXyxJPS1vKmYtcipFLWEqXyxDPS1oKmYtQSpFLWQqXztyZXR1cm4gZVswXT1pLGVbMV09byxlWzJdPWgsZVszXT0wLGVbNF09bixlWzVdPXIsZVs2XT1BLGVbN109MCxlWzhdPXMsZVs5XT1hLGVbMTBdPWQsZVsxMV09MCxlWzEyXT1SLGVbMTNdPUksZVsxNF09QyxlWzE1XT0xLGV9O0U5PW5ldyB5dDt5dC5pbnZlcnNlVHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSkseXQuaW52ZXJzZSh5dC50cmFuc3Bvc2UodCxFOSksZSl9O3l0LklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IHl0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpKTt5dC5aRVJPPU9iamVjdC5mcmVlemUobmV3IHl0KDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDApKTt5dC5DT0xVTU4wUk9XMD0wO3l0LkNPTFVNTjBST1cxPTE7eXQuQ09MVU1OMFJPVzI9Mjt5dC5DT0xVTU4wUk9XMz0zO3l0LkNPTFVNTjFST1cwPTQ7eXQuQ09MVU1OMVJPVzE9NTt5dC5DT0xVTU4xUk9XMj02O3l0LkNPTFVNTjFST1czPTc7eXQuQ09MVU1OMlJPVzA9ODt5dC5DT0xVTU4yUk9XMT05O3l0LkNPTFVNTjJST1cyPTEwO3l0LkNPTFVNTjJST1czPTExO3l0LkNPTFVNTjNST1cwPTEyO3l0LkNPTFVNTjNST1cxPTEzO3l0LkNPTFVNTjNST1cyPTE0O3l0LkNPTFVNTjNST1czPTE1O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHl0LnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geXQucGFja2VkTGVuZ3RofX19KTt5dC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHl0LmNsb25lKHRoaXMsdCl9O3l0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHl0LmVxdWFscyh0aGlzLHQpfTt5dC5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRbMF09PT1lW2ldJiZ0WzFdPT09ZVtpKzFdJiZ0WzJdPT09ZVtpKzJdJiZ0WzNdPT09ZVtpKzNdJiZ0WzRdPT09ZVtpKzRdJiZ0WzVdPT09ZVtpKzVdJiZ0WzZdPT09ZVtpKzZdJiZ0WzddPT09ZVtpKzddJiZ0WzhdPT09ZVtpKzhdJiZ0WzldPT09ZVtpKzldJiZ0WzEwXT09PWVbaSsxMF0mJnRbMTFdPT09ZVtpKzExXSYmdFsxMl09PT1lW2krMTJdJiZ0WzEzXT09PWVbaSsxM10mJnRbMTRdPT09ZVtpKzE0XSYmdFsxNV09PT1lW2krMTVdfTt5dC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiB5dC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07eXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXNbMF19LCAke3RoaXNbNF19LCAke3RoaXNbOF19LCAke3RoaXNbMTJdfSkKKCR7dGhpc1sxXX0sICR7dGhpc1s1XX0sICR7dGhpc1s5XX0sICR7dGhpc1sxM119KQooJHt0aGlzWzJdfSwgJHt0aGlzWzZdfSwgJHt0aGlzWzEwXX0sICR7dGhpc1sxNF19KQooJHt0aGlzWzNdfSwgJHt0aGlzWzddfSwgJHt0aGlzWzExXX0sICR7dGhpc1sxNV19KWB9O2F0PXl0fSk7dmFyIHJjLGlzLHFvLEVXLF9XPVMoKCk9PnttdCgpO2lzPXtyZXF1ZXN0RnVsbHNjcmVlbjp2b2lkIDAsZXhpdEZ1bGxzY3JlZW46dm9pZCAwLGZ1bGxzY3JlZW5FbmFibGVkOnZvaWQgMCxmdWxsc2NyZWVuRWxlbWVudDp2b2lkIDAsZnVsbHNjcmVlbmNoYW5nZTp2b2lkIDAsZnVsbHNjcmVlbmVycm9yOnZvaWQgMH0scW89e307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocW8se2VsZW1lbnQ6e2dldDpmdW5jdGlvbigpe2lmKHFvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBkb2N1bWVudFtpcy5mdWxsc2NyZWVuRWxlbWVudF19fSxjaGFuZ2VFdmVudE5hbWU6e2dldDpmdW5jdGlvbigpe2lmKHFvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBpcy5mdWxsc2NyZWVuY2hhbmdlfX0sZXJyb3JFdmVudE5hbWU6e2dldDpmdW5jdGlvbigpe2lmKHFvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBpcy5mdWxsc2NyZWVuZXJyb3J9fSxlbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtpZihxby5zdXBwb3J0c0Z1bGxzY3JlZW4oKSlyZXR1cm4gZG9jdW1lbnRbaXMuZnVsbHNjcmVlbkVuYWJsZWRdfX0sZnVsbHNjcmVlbjp7Z2V0OmZ1bmN0aW9uKCl7aWYocW8uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIHFvLmVsZW1lbnQhPT1udWxsfX19KTtxby5zdXBwb3J0c0Z1bGxzY3JlZW49ZnVuY3Rpb24oKXtpZihtKHJjKSlyZXR1cm4gcmM7cmM9ITE7bGV0IHQ9ZG9jdW1lbnQuYm9keTtpZih0eXBlb2YgdC5yZXF1ZXN0RnVsbHNjcmVlbj09ImZ1bmN0aW9uIilyZXR1cm4gaXMucmVxdWVzdEZ1bGxzY3JlZW49InJlcXVlc3RGdWxsc2NyZWVuIixpcy5leGl0RnVsbHNjcmVlbj0iZXhpdEZ1bGxzY3JlZW4iLGlzLmZ1bGxzY3JlZW5FbmFibGVkPSJmdWxsc2NyZWVuRW5hYmxlZCIsaXMuZnVsbHNjcmVlbkVsZW1lbnQ9ImZ1bGxzY3JlZW5FbGVtZW50Iixpcy5mdWxsc2NyZWVuY2hhbmdlPSJmdWxsc2NyZWVuY2hhbmdlIixpcy5mdWxsc2NyZWVuZXJyb3I9ImZ1bGxzY3JlZW5lcnJvciIscmM9ITAscmM7bGV0IGU9WyJ3ZWJraXQiLCJtb3oiLCJvIiwibXMiLCJraHRtbCJdLGk7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7KytuKXtsZXQgbz1lW25dO2k9YCR7b31SZXF1ZXN0RnVsbHNjcmVlbmAsdHlwZW9mIHRbaV09PSJmdW5jdGlvbiI/KGlzLnJlcXVlc3RGdWxsc2NyZWVuPWkscmM9ITApOihpPWAke299UmVxdWVzdEZ1bGxTY3JlZW5gLHR5cGVvZiB0W2ldPT0iZnVuY3Rpb24iJiYoaXMucmVxdWVzdEZ1bGxzY3JlZW49aSxyYz0hMCkpLGk9YCR7b31FeGl0RnVsbHNjcmVlbmAsdHlwZW9mIGRvY3VtZW50W2ldPT0iZnVuY3Rpb24iP2lzLmV4aXRGdWxsc2NyZWVuPWk6KGk9YCR7b31DYW5jZWxGdWxsU2NyZWVuYCx0eXBlb2YgZG9jdW1lbnRbaV09PSJmdW5jdGlvbiImJihpcy5leGl0RnVsbHNjcmVlbj1pKSksaT1gJHtvfUZ1bGxzY3JlZW5FbmFibGVkYCxkb2N1bWVudFtpXSE9PXZvaWQgMD9pcy5mdWxsc2NyZWVuRW5hYmxlZD1pOihpPWAke299RnVsbFNjcmVlbkVuYWJsZWRgLGRvY3VtZW50W2ldIT09dm9pZCAwJiYoaXMuZnVsbHNjcmVlbkVuYWJsZWQ9aSkpLGk9YCR7b31GdWxsc2NyZWVuRWxlbWVudGAsZG9jdW1lbnRbaV0hPT12b2lkIDA/aXMuZnVsbHNjcmVlbkVsZW1lbnQ9aTooaT1gJHtvfUZ1bGxTY3JlZW5FbGVtZW50YCxkb2N1bWVudFtpXSE9PXZvaWQgMCYmKGlzLmZ1bGxzY3JlZW5FbGVtZW50PWkpKSxpPWAke299ZnVsbHNjcmVlbmNoYW5nZWAsZG9jdW1lbnRbYG9uJHtpfWBdIT09dm9pZCAwJiYobz09PSJtcyImJihpPSJNU0Z1bGxzY3JlZW5DaGFuZ2UiKSxpcy5mdWxsc2NyZWVuY2hhbmdlPWkpLGk9YCR7b31mdWxsc2NyZWVuZXJyb3JgLGRvY3VtZW50W2BvbiR7aX1gXSE9PXZvaWQgMCYmKG89PT0ibXMiJiYoaT0iTVNGdWxsc2NyZWVuRXJyb3IiKSxpcy5mdWxsc2NyZWVuZXJyb3I9aSl9cmV0dXJuIHJjfTtxby5yZXF1ZXN0RnVsbHNjcmVlbj1mdW5jdGlvbih0LGUpe3FvLnN1cHBvcnRzRnVsbHNjcmVlbigpJiZ0W2lzLnJlcXVlc3RGdWxsc2NyZWVuXSh7dnJEaXNwbGF5OmV9KX07cW8uZXhpdEZ1bGxzY3JlZW49ZnVuY3Rpb24oKXtxby5zdXBwb3J0c0Z1bGxzY3JlZW4oKSYmZG9jdW1lbnRbaXMuZXhpdEZ1bGxzY3JlZW5dKCl9O3FvLl9uYW1lcz1pcztFVz1xb30pO2Z1bmN0aW9uIFpsKHQpe2xldCBlPXQuc3BsaXQoIi4iKTtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjsrK2kpZVtpXT1wYXJzZUludChlW2ldLDEwKTtyZXR1cm4gZX1mdW5jdGlvbiBHMCgpe2lmKCFtKFlaKSYmKFlaPSExLCFXWigpKSl7bGV0IHQ9LyBDaHJvbWVcLyhbXC4wLTldKykvLmV4ZWMoRW8udXNlckFnZW50KTt0IT09bnVsbCYmKFlaPSEwLFJXPVpsKHRbMV0pKX1yZXR1cm4gWVp9ZnVuY3Rpb24gXzkoKXtyZXR1cm4gRzAoKSYmUld9ZnVuY3Rpb24gSVcoKXtpZighbShWWikmJihWWj0hMSwhRzAoKSYmIVdaKCkmJi8gU2FmYXJpXC9bXC4wLTldKy8udGVzdChFby51c2VyQWdlbnQpKSl7bGV0IHQ9LyBWZXJzaW9uXC8oW1wuMC05XSspLy5leGVjKEVvLnVzZXJBZ2VudCk7dCE9PW51bGwmJihWWj0hMCxaVz1abCh0WzFdKSl9cmV0dXJuIFZafWZ1bmN0aW9uIFI5KCl7cmV0dXJuIElXKCkmJlpXfWZ1bmN0aW9uIHBXKCl7aWYoIW0oU1opKXtTWj0hMTtsZXQgdD0vIEFwcGxlV2ViS2l0XC8oW1wuMC05XSspKFwrPykvLmV4ZWMoRW8udXNlckFnZW50KTt0IT09bnVsbCYmKFNaPSEwLE8wPVpsKHRbMV0pLE8wLmlzTmlnaHRseT0hIXRbMl0pfXJldHVybiBTWn1mdW5jdGlvbiBaOSgpe3JldHVybiBwVygpJiZPMH1mdW5jdGlvbiB1Vygpe2lmKCFtKEVFKSl7RUU9ITE7bGV0IHQ7RW8uYXBwTmFtZT09PSJNaWNyb3NvZnQgSW50ZXJuZXQgRXhwbG9yZXIiPyh0PS9NU0lFIChbMC05XXsxLH1bXC4wLTldezAsfSkvLmV4ZWMoRW8udXNlckFnZW50KSx0IT09bnVsbCYmKEVFPSEwLEIwPVpsKHRbMV0pKSk6RW8uYXBwTmFtZT09PSJOZXRzY2FwZSImJih0PS9UcmlkZW50XC8uKnJ2OihbMC05XXsxLH1bXC4wLTldezAsfSkvLmV4ZWMoRW8udXNlckFnZW50KSx0IT09bnVsbCYmKEVFPSEwLEIwPVpsKHRbMV0pKSl9cmV0dXJuIEVFfWZ1bmN0aW9uIEk5KCl7cmV0dXJuIHVXKCkmJkIwfWZ1bmN0aW9uIFdaKCl7aWYoIW0oT1opKXtPWj0hMTtsZXQgdD0vIEVkZ1wvKFtcLjAtOV0rKS8uZXhlYyhFby51c2VyQWdlbnQpO3QhPT1udWxsJiYoT1o9ITAsQ1c9WmwodFsxXSkpfXJldHVybiBPWn1mdW5jdGlvbiBwOSgpe3JldHVybiBXWigpJiZDV31mdW5jdGlvbiBEWigpe2lmKCFtKEJaKSl7Qlo9ITE7bGV0IHQ9L0ZpcmVmb3hcLyhbXC4wLTldKykvLmV4ZWMoRW8udXNlckFnZW50KTt0IT09bnVsbCYmKEJaPSEwLFcwPVpsKHRbMV0pKX1yZXR1cm4gQlp9ZnVuY3Rpb24gdTkoKXtyZXR1cm4gbShZMCl8fChZMD0vV2luZG93cy9pLnRlc3QoRW8uYXBwVmVyc2lvbikpLFkwfWZ1bmN0aW9uIEM5KCl7cmV0dXJuIG0oVjApfHwoVjA9bmF2aWdhdG9yLnBsYXRmb3JtPT09ImlQaG9uZSJ8fG5hdmlnYXRvci5wbGF0Zm9ybT09PSJpUG9kInx8bmF2aWdhdG9yLnBsYXRmb3JtPT09ImlQYWQiKSxWMH1mdW5jdGlvbiBnOSgpe3JldHVybiBEWigpJiZXMH1mdW5jdGlvbiBUOSgpe3JldHVybiBtKFMwKXx8KFMwPSFEWigpJiZ0eXBlb2YgUG9pbnRlckV2ZW50PCJ1IiYmKCFtKEVvLnBvaW50ZXJFbmFibGVkKXx8RW8ucG9pbnRlckVuYWJsZWQpKSxTMH1mdW5jdGlvbiBUVygpe2lmKCFtKEdaKSl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7dC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzO2ltYWdlLXJlbmRlcmluZzogcGl4ZWxhdGVkOyIpO2xldCBlPXQuc3R5bGUuaW1hZ2VSZW5kZXJpbmc7R1o9bShlKSYmZSE9PSIiLEdaJiYoZ1c9ZSl9cmV0dXJuIEdafWZ1bmN0aW9uIE45KCl7cmV0dXJuIFRXKCk/Z1c6dm9pZCAwfWZ1bmN0aW9uIGZvKCl7aWYoIWZvLmluaXRpYWxpemVkKXRocm93IG5ldyBZKCJZb3UgbXVzdCBjYWxsIEZlYXR1cmVEZXRlY3Rpb24uc3VwcG9ydHNXZWJQLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGNhbGxpbmcgRmVhdHVyZURldGVjdGlvbi5zdXBwb3J0c1dlYlAiKTtyZXR1cm4gZm8uX3Jlc3VsdH12YXIgRW8sWVosUlcsVlosWlcsU1osTzAsRUUsQjAsT1osQ1csQlosVzAsWTAsVjAsUzAsZ1csR1osRm0sQnIsX28sSWw9UygoKT0+e2FlKCk7RnQoKTttdCgpO090KCk7X1coKTt0eXBlb2YgbmF2aWdhdG9yPCJ1Ij9Fbz1uYXZpZ2F0b3I6RW89e307Zm8uX3Byb21pc2U9dm9pZCAwO2ZvLl9yZXN1bHQ9dm9pZCAwO2ZvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gbShmby5fcHJvbWlzZSl8fChmby5fcHJvbWlzZT1uZXcgUHJvbWlzZSh0PT57bGV0IGU9bmV3IEltYWdlO2Uub25sb2FkPWZ1bmN0aW9uKCl7Zm8uX3Jlc3VsdD1lLndpZHRoPjAmJmUuaGVpZ2h0PjAsdChmby5fcmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7Zm8uX3Jlc3VsdD0hMSx0KGZvLl9yZXN1bHQpfSxlLnNyYz0iZGF0YTppbWFnZS93ZWJwO2Jhc2U2NCxVa2xHUmlJQUFBQlhSVUpRVmxBNElCWUFBQUF3QVFDZEFTb0JBQUVBRHNEK0phUUFBM0FBQUFBQSJ9KSksZm8uX3Byb21pc2V9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGZvLHtpbml0aWFsaXplZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0oZm8uX3Jlc3VsdCl9fX0pO0ZtPVtdO3R5cGVvZiBBcnJheUJ1ZmZlcjwidSImJihGbS5wdXNoKEludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZGbS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZGbS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgQmlnSW50NjRBcnJheTwidSImJkZtLnB1c2goQmlnSW50NjRBcnJheSksdHlwZW9mIEJpZ1VpbnQ2NEFycmF5PCJ1IiYmRm0ucHVzaChCaWdVaW50NjRBcnJheSkpO0JyPXtpc0Nocm9tZTpHMCxjaHJvbWVWZXJzaW9uOl85LGlzU2FmYXJpOklXLHNhZmFyaVZlcnNpb246UjksaXNXZWJraXQ6cFcsd2Via2l0VmVyc2lvbjpaOSxpc0ludGVybmV0RXhwbG9yZXI6dVcsaW50ZXJuZXRFeHBsb3JlclZlcnNpb246STksaXNFZGdlOldaLGVkZ2VWZXJzaW9uOnA5LGlzRmlyZWZveDpEWixmaXJlZm94VmVyc2lvbjpnOSxpc1dpbmRvd3M6dTksaXNJUGFkT3JJT1M6QzksaGFyZHdhcmVDb25jdXJyZW5jeTpaKEVvLmhhcmR3YXJlQ29uY3VycmVuY3ksMyksc3VwcG9ydHNQb2ludGVyRXZlbnRzOlQ5LHN1cHBvcnRzSW1hZ2VSZW5kZXJpbmdQaXhlbGF0ZWQ6VFcsc3VwcG9ydHNXZWJQOmZvLGltYWdlUmVuZGVyaW5nVmFsdWU6TjksdHlwZWRBcnJheVR5cGVzOkZtfTtCci5zdXBwb3J0c0Jhc2lzPWZ1bmN0aW9uKHQpe3JldHVybiBCci5zdXBwb3J0c1dlYkFzc2VtYmx5KCkmJnQuY29udGV4dC5zdXBwb3J0c0Jhc2lzfTtCci5zdXBwb3J0c0Z1bGxzY3JlZW49ZnVuY3Rpb24oKXtyZXR1cm4gRVcuc3VwcG9ydHNGdWxsc2NyZWVuKCl9O0JyLnN1cHBvcnRzVHlwZWRBcnJheXM9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyPCJ1In07QnIuc3VwcG9ydHNCaWdJbnQ2NEFycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBCaWdJbnQ2NEFycmF5PCJ1In07QnIuc3VwcG9ydHNCaWdVaW50NjRBcnJheT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnVWludDY0QXJyYXk8InUifTtCci5zdXBwb3J0c0JpZ0ludD1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnSW50PCJ1In07QnIuc3VwcG9ydHNXZWJXb3JrZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBXb3JrZXI8InUifTtCci5zdXBwb3J0c1dlYkFzc2VtYmx5PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBXZWJBc3NlbWJseTwidSJ9O0JyLnN1cHBvcnRzV2ViZ2wyPWZ1bmN0aW9uKHQpe3JldHVybiBwLmRlZmluZWQoInNjZW5lIix0KSx0LmNvbnRleHQud2ViZ2wyfTtCci5zdXBwb3J0c0VzbVdlYldvcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4hRFooKXx8cGFyc2VJbnQoVzApPj0xMTR9O19vPUJyfSk7ZnVuY3Rpb24gUHQodCxlLGksbil7dGhpcy54PVoodCwwKSx0aGlzLnk9WihlLDApLHRoaXMuej1aKGksMCksdGhpcy53PVoobiwwKX12YXIgX0UsRjksYjksTlcsRlcsRDAsYlcsVVosVTAscGEsWVcsTVosTTAsVlcsUTAsazAsWTksVjksUkUsYm0sUzksU1csUVosa1oscUEsJEEsQWUsJHM9UygoKT0+e0h0KCk7YWUoKTtGdCgpO210KCk7SWwoKTtfZSgpO2RuKCk7X0U9bmV3IGw7UHQuZnJvbUF4aXNBbmdsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJheGlzIix0KSxwLnR5cGVPZi5udW1iZXIoImFuZ2xlIixlKTtsZXQgbj1lLzIscz1NYXRoLnNpbihuKTtfRT1sLm5vcm1hbGl6ZSh0LF9FKTtsZXQgbz1fRS54KnMscj1fRS55KnMsYT1fRS56KnMsaD1NYXRoLmNvcyhuKTtyZXR1cm4gbShpKT8oaS54PW8saS55PXIsaS56PWEsaS53PWgsaSk6bmV3IFB0KG8scixhLGgpfTtGOT1bMSwyLDBdLGI5PW5ldyBBcnJheSgzKTtQdC5mcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IGksbixzLG8scixhPXRbbHQuQ09MVU1OMFJPVzBdLGg9dFtsdC5DT0xVTU4xUk9XMV0sQT10W2x0LkNPTFVNTjJST1cyXSxkPWEraCtBO2lmKGQ+MClpPU1hdGguc3FydChkKzEpLHI9LjUqaSxpPS41L2ksbj0odFtsdC5DT0xVTU4xUk9XMl0tdFtsdC5DT0xVTU4yUk9XMV0pKmkscz0odFtsdC5DT0xVTU4yUk9XMF0tdFtsdC5DT0xVTU4wUk9XMl0pKmksbz0odFtsdC5DT0xVTU4wUk9XMV0tdFtsdC5DT0xVTU4xUk9XMF0pKmk7ZWxzZXtsZXQgZj1GOSxFPTA7aD5hJiYoRT0xKSxBPmEmJkE+aCYmKEU9Mik7bGV0IF89ZltFXSxSPWZbX107aT1NYXRoLnNxcnQodFtsdC5nZXRFbGVtZW50SW5kZXgoRSxFKV0tdFtsdC5nZXRFbGVtZW50SW5kZXgoXyxfKV0tdFtsdC5nZXRFbGVtZW50SW5kZXgoUixSKV0rMSk7bGV0IEk9Yjk7SVtFXT0uNSppLGk9LjUvaSxyPSh0W2x0LmdldEVsZW1lbnRJbmRleChSLF8pXS10W2x0LmdldEVsZW1lbnRJbmRleChfLFIpXSkqaSxJW19dPSh0W2x0LmdldEVsZW1lbnRJbmRleChfLEUpXSt0W2x0LmdldEVsZW1lbnRJbmRleChFLF8pXSkqaSxJW1JdPSh0W2x0LmdldEVsZW1lbnRJbmRleChSLEUpXSt0W2x0LmdldEVsZW1lbnRJbmRleChFLFIpXSkqaSxuPS1JWzBdLHM9LUlbMV0sbz0tSVsyXX1yZXR1cm4gbShlKT8oZS54PW4sZS55PXMsZS56PW8sZS53PXIsZSk6bmV3IFB0KG4scyxvLHIpfTtOVz1uZXcgUHQsRlc9bmV3IFB0LEQwPW5ldyBQdCxiVz1uZXcgUHQ7UHQuZnJvbUhlYWRpbmdQaXRjaFJvbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJoZWFkaW5nUGl0Y2hSb2xsIix0KSxiVz1QdC5mcm9tQXhpc0FuZ2xlKGwuVU5JVF9YLHQucm9sbCxOVyksRDA9UHQuZnJvbUF4aXNBbmdsZShsLlVOSVRfWSwtdC5waXRjaCxlKSxlPVB0Lm11bHRpcGx5KEQwLGJXLEQwKSxGVz1QdC5mcm9tQXhpc0FuZ2xlKGwuVU5JVF9aLC10LmhlYWRpbmcsTlcpLFB0Lm11bHRpcGx5KEZXLGUsZSl9O1VaPW5ldyBsLFUwPW5ldyBsLHBhPW5ldyBQdCxZVz1uZXcgUHQsTVo9bmV3IFB0O1B0LnBhY2tlZExlbmd0aD00O1B0LnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC54LGVbaSsrXT10LnksZVtpKytdPXQueixlW2ldPXQudyxlfTtQdC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgUHQpLGkueD10W2VdLGkueT10W2UrMV0saS56PXRbZSsyXSxpLnc9dFtlKzNdLGl9O1B0LnBhY2tlZEludGVycG9sYXRpb25MZW5ndGg9MztQdC5jb252ZXJ0UGFja2VkQXJyYXlGb3JJbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKHQsZSxpLG4pe1B0LnVucGFjayh0LGkqNCxNWiksUHQuY29uanVnYXRlKE1aLE1aKTtmb3IobGV0IHM9MCxvPWktZSsxO3M8bztzKyspe2xldCByPXMqMztQdC51bnBhY2sodCwoZStzKSo0LHBhKSxQdC5tdWx0aXBseShwYSxNWixwYSkscGEudzwwJiZQdC5uZWdhdGUocGEscGEpLFB0LmNvbXB1dGVBeGlzKHBhLFVaKTtsZXQgYT1QdC5jb21wdXRlQW5nbGUocGEpO20obil8fChuPVtdKSxuW3JdPVVaLngqYSxuW3IrMV09VVoueSphLG5bcisyXT1VWi56KmF9fTtQdC51bnBhY2tJbnRlcnBvbGF0aW9uUmVzdWx0PWZ1bmN0aW9uKHQsZSxpLG4scyl7bShzKXx8KHM9bmV3IFB0KSxsLmZyb21BcnJheSh0LDAsVTApO2xldCBvPWwubWFnbml0dWRlKFUwKTtyZXR1cm4gUHQudW5wYWNrKGUsbio0LFlXKSxvPT09MD9QdC5jbG9uZShQdC5JREVOVElUWSxwYSk6UHQuZnJvbUF4aXNBbmdsZShVMCxvLHBhKSxQdC5tdWx0aXBseShwYSxZVyxzKX07UHQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS56PXQueixlLnc9dC53LGUpOm5ldyBQdCh0LngsdC55LHQueix0LncpfTtQdC5jb25qdWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PXQudyxlfTtQdC5tYWduaXR1ZGVTcXVhcmVkPWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHQueCp0LngrdC55KnQueSt0LnoqdC56K3Qudyp0Lnd9O1B0Lm1hZ25pdHVkZT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KFB0Lm1hZ25pdHVkZVNxdWFyZWQodCkpfTtQdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9MS9QdC5tYWduaXR1ZGUodCksbj10LngqaSxzPXQueSppLG89dC56Kmkscj10LncqaTtyZXR1cm4gZS54PW4sZS55PXMsZS56PW8sZS53PXIsZX07UHQuaW52ZXJzZT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgaT1QdC5tYWduaXR1ZGVTcXVhcmVkKHQpO3JldHVybiBlPVB0LmNvbmp1Z2F0ZSh0LGUpLFB0Lm11bHRpcGx5QnlTY2FsYXIoZSwxL2ksZSl9O1B0LmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngrZS54LGkueT10LnkrZS55LGkuej10LnorZS56LGkudz10LncrZS53LGl9O1B0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueC1lLngsaS55PXQueS1lLnksaS56PXQuei1lLnosaS53PXQudy1lLncsaX07UHQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD0tdC54LGUueT0tdC55LGUuej0tdC56LGUudz0tdC53LGV9O1B0LmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueSt0LnoqZS56K3QudyplLnd9O1B0Lm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10Lngscz10Lnksbz10Lnoscj10LncsYT1lLngsaD1lLnksQT1lLnosZD1lLncsZj1yKmErbipkK3MqQS1vKmgsRT1yKmgtbipBK3MqZCtvKmEsXz1yKkErbipoLXMqYStvKmQsUj1yKmQtbiphLXMqaC1vKkE7cmV0dXJuIGkueD1mLGkueT1FLGkuej1fLGkudz1SLGl9O1B0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS54PXQueCplLGkueT10LnkqZSxpLno9dC56KmUsaS53PXQudyplLGl9O1B0LmRpdmlkZUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkueD10LngvZSxpLnk9dC55L2UsaS56PXQuei9lLGkudz10LncvZSxpfTtQdC5jb21wdXRlQXhpcz1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPXQudztpZihNYXRoLmFicyhpLTEpPEwuRVBTSUxPTjZ8fE1hdGguYWJzKGkrMSk8TC5FUFNJTE9ONilyZXR1cm4gZS54PTEsZS55PWUuej0wLGU7bGV0IG49MS9NYXRoLnNxcnQoMS1pKmkpO3JldHVybiBlLng9dC54Km4sZS55PXQueSpuLGUuej10LnoqbixlfTtQdC5jb21wdXRlQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCksTWF0aC5hYnModC53LTEpPEwuRVBTSUxPTjY/MDoyKk1hdGguYWNvcyh0LncpfTtNMD1uZXcgUHQ7UHQubGVycD1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkscC50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHAudHlwZU9mLm51bWJlcigidCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLE0wPVB0Lm11bHRpcGx5QnlTY2FsYXIoZSxpLE0wKSxuPVB0Lm11bHRpcGx5QnlTY2FsYXIodCwxLWksbiksUHQuYWRkKE0wLG4sbil9O1ZXPW5ldyBQdCxRMD1uZXcgUHQsazA9bmV3IFB0O1B0LnNsZXJwPWZ1bmN0aW9uKHQsZSxpLG4pe3AudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHAudHlwZU9mLm9iamVjdCgiZW5kIixlKSxwLnR5cGVPZi5udW1iZXIoInQiLGkpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgcz1QdC5kb3QodCxlKSxvPWU7aWYoczwwJiYocz0tcyxvPVZXPVB0Lm5lZ2F0ZShlLFZXKSksMS1zPEwuRVBTSUxPTjYpcmV0dXJuIFB0LmxlcnAodCxvLGksbik7bGV0IHI9TWF0aC5hY29zKHMpO3JldHVybiBRMD1QdC5tdWx0aXBseUJ5U2NhbGFyKHQsTWF0aC5zaW4oKDEtaSkqciksUTApLGswPVB0Lm11bHRpcGx5QnlTY2FsYXIobyxNYXRoLnNpbihpKnIpLGswKSxuPVB0LmFkZChRMCxrMCxuKSxQdC5tdWx0aXBseUJ5U2NhbGFyKG4sMS9NYXRoLnNpbihyKSxuKX07UHQubG9nPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9TC5hY29zQ2xhbXBlZCh0LncpLG49MDtyZXR1cm4gaSE9PTAmJihuPWkvTWF0aC5zaW4oaSkpLGwubXVsdGlwbHlCeVNjYWxhcih0LG4sZSl9O1B0LmV4cD1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9bC5tYWduaXR1ZGUodCksbj0wO3JldHVybiBpIT09MCYmKG49TWF0aC5zaW4oaSkvaSksZS54PXQueCpuLGUueT10LnkqbixlLno9dC56Km4sZS53PU1hdGguY29zKGkpLGV9O1k5PW5ldyBsLFY5PW5ldyBsLFJFPW5ldyBQdCxibT1uZXcgUHQ7UHQuY29tcHV0ZUlubmVyUXVhZHJhbmdsZT1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInEwIix0KSxwLnR5cGVPZi5vYmplY3QoInExIixlKSxwLnR5cGVPZi5vYmplY3QoInEyIixpKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IHM9UHQuY29uanVnYXRlKGUsUkUpO1B0Lm11bHRpcGx5KHMsaSxibSk7bGV0IG89UHQubG9nKGJtLFk5KTtQdC5tdWx0aXBseShzLHQsYm0pO2xldCByPVB0LmxvZyhibSxWOSk7cmV0dXJuIGwuYWRkKG8scixvKSxsLm11bHRpcGx5QnlTY2FsYXIobywuMjUsbyksbC5uZWdhdGUobyxvKSxQdC5leHAobyxSRSksUHQubXVsdGlwbHkoZSxSRSxuKX07UHQuc3F1YWQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe3AudHlwZU9mLm9iamVjdCgicTAiLHQpLHAudHlwZU9mLm9iamVjdCgicTEiLGUpLHAudHlwZU9mLm9iamVjdCgiczAiLGkpLHAudHlwZU9mLm9iamVjdCgiczEiLG4pLHAudHlwZU9mLm51bWJlcigidCIscykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVB0LnNsZXJwKHQsZSxzLFJFKSxhPVB0LnNsZXJwKGksbixzLGJtKTtyZXR1cm4gUHQuc2xlcnAocixhLDIqcyooMS1zKSxvKX07Uzk9bmV3IFB0LFNXPTEuOTAxMTA3NDUzNTE3MzAwMyxRWj1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXSxrWj1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXSxxQT1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXSwkQT1fby5zdXBwb3J0c1R5cGVkQXJyYXlzKCk/bmV3IEZsb2F0MzJBcnJheSg4KTpbXTtmb3IobGV0IHQ9MDt0PDc7Kyt0KXtsZXQgZT10KzEsaT0yKmUrMTtRWlt0XT0xLyhlKmkpLGtaW3RdPWUvaX1RWls3XT1TVy8oOCoxNyk7a1pbN109U1cqOC8xNztQdC5mYXN0U2xlcnA9ZnVuY3Rpb24odCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkscC50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHAudHlwZU9mLm51bWJlcigidCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBzPVB0LmRvdCh0LGUpLG87cz49MD9vPTE6KG89LTEscz0tcyk7bGV0IHI9cy0xLGE9MS1pLGg9aSppLEE9YSphO2ZvcihsZXQgXz03O18+PTA7LS1fKXFBW19dPShRWltfXSpoLWtaW19dKSpyLCRBW19dPShRWltfXSpBLWtaW19dKSpyO2xldCBkPW8qaSooMStxQVswXSooMStxQVsxXSooMStxQVsyXSooMStxQVszXSooMStxQVs0XSooMStxQVs1XSooMStxQVs2XSooMStxQVs3XSkpKSkpKSkpLGY9YSooMSskQVswXSooMSskQVsxXSooMSskQVsyXSooMSskQVszXSooMSskQVs0XSooMSskQVs1XSooMSskQVs2XSooMSskQVs3XSkpKSkpKSkpLEU9UHQubXVsdGlwbHlCeVNjYWxhcih0LGYsUzkpO3JldHVybiBQdC5tdWx0aXBseUJ5U2NhbGFyKGUsZCxuKSxQdC5hZGQoRSxuLG4pfTtQdC5mYXN0U3F1YWQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe3AudHlwZU9mLm9iamVjdCgicTAiLHQpLHAudHlwZU9mLm9iamVjdCgicTEiLGUpLHAudHlwZU9mLm9iamVjdCgiczAiLGkpLHAudHlwZU9mLm9iamVjdCgiczEiLG4pLHAudHlwZU9mLm51bWJlcigidCIscykscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVB0LmZhc3RTbGVycCh0LGUscyxSRSksYT1QdC5mYXN0U2xlcnAoaSxuLHMsYm0pO3JldHVybiBQdC5mYXN0U2xlcnAocixhLDIqcyooMS1zKSxvKX07UHQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lng9PT1lLngmJnQueT09PWUueSYmdC56PT09ZS56JiZ0Lnc9PT1lLnd9O1B0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBpPVooaSwwKSx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC54LWUueCk8PWkmJk1hdGguYWJzKHQueS1lLnkpPD1pJiZNYXRoLmFicyh0LnotZS56KTw9aSYmTWF0aC5hYnModC53LWUudyk8PWl9O1B0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgUHQoMCwwLDAsMCkpO1B0LklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IFB0KDAsMCwwLDEpKTtQdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIFB0LmNsb25lKHRoaXMsdCl9O1B0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIFB0LmVxdWFscyh0aGlzLHQpfTtQdC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBQdC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07UHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMueH0sICR7dGhpcy55fSwgJHt0aGlzLnp9LCAke3RoaXMud30pYH07QWU9UHR9KTtmdW5jdGlvbiBSbyh0LGUsaSl7dGhpcy5oZWFkaW5nPVoodCwwKSx0aGlzLnBpdGNoPVooZSwwKSx0aGlzLnJvbGw9WihpLDApfXZhciBaRSxPVz1TKCgpPT57RnQoKTttdCgpO090KCk7X2UoKTtkbigpO2JpKCk7JHMoKTtSby5mcm9tUXVhdGVybmlvbj1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInF1YXRlcm5pb24gaXMgcmVxdWlyZWQiKTttKGUpfHwoZT1uZXcgUm8pO2xldCBuLHM7aWYobShpKSl7aWYodHlwZW9mIGk9PSJmdW5jdGlvbiIpbj1pKCk7ZWxzZSBpZihpIGluc3RhbmNlb2YgYXQpbj1pO2Vsc2UgdGhyb3cgbmV3IFkoInJlZmVyZW5jZUZyYW1lIG11c3QgYmUgYSBNYXRyaXg0IG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgTWF0cml4NCIpO2xldCBkPWF0LmludmVyc2UobixuZXcgYXQpLGY9YXQuZ2V0Um90YXRpb24oZCxuZXcgbHQpLEU9QWUuZnJvbVJvdGF0aW9uTWF0cml4KGYsbmV3IEFlKTtzPUFlLm11bHRpcGx5KEUsdCxuZXcgQWUpfWVsc2Ugcz10O2xldCBvPTIqKHMudypzLnktcy56KnMueCkscj0xLTIqKHMueCpzLngrcy55KnMueSksYT0yKihzLncqcy54K3MueSpzLnopLGg9MS0yKihzLnkqcy55K3MueipzLnopLEE9Mioocy53KnMueitzLngqcy55KTtyZXR1cm4gZS5oZWFkaW5nPS1NYXRoLmF0YW4yKEEsaCksZS5yb2xsPU1hdGguYXRhbjIoYSxyKSxlLnBpdGNoPS1MLmFzaW5DbGFtcGVkKG8pLGV9O1JvLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJoZWFkaW5nIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInBpdGNoIGlzIHJlcXVpcmVkIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInJvbGwgaXMgcmVxdWlyZWQiKTtyZXR1cm4gbShuKXx8KG49bmV3IFJvKSxuLmhlYWRpbmc9dCpMLlJBRElBTlNfUEVSX0RFR1JFRSxuLnBpdGNoPWUqTC5SQURJQU5TX1BFUl9ERUdSRUUsbi5yb2xsPWkqTC5SQURJQU5TX1BFUl9ERUdSRUUsbn07Um8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLmhlYWRpbmc9dC5oZWFkaW5nLGUucGl0Y2g9dC5waXRjaCxlLnJvbGw9dC5yb2xsLGUpOm5ldyBSbyh0LmhlYWRpbmcsdC5waXRjaCx0LnJvbGwpfTtSby5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQuaGVhZGluZz09PWUuaGVhZGluZyYmdC5waXRjaD09PWUucGl0Y2gmJnQucm9sbD09PWUucm9sbH07Um8uZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJkwuZXF1YWxzRXBzaWxvbih0LmhlYWRpbmcsZS5oZWFkaW5nLGksbikmJkwuZXF1YWxzRXBzaWxvbih0LnBpdGNoLGUucGl0Y2gsaSxuKSYmTC5lcXVhbHNFcHNpbG9uKHQucm9sbCxlLnJvbGwsaSxuKX07Um8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBSby5jbG9uZSh0aGlzLHQpfTtSby5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBSby5lcXVhbHModGhpcyx0KX07Um8ucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGkpe3JldHVybiBSby5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLGkpfTtSby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy5oZWFkaW5nfSwgJHt0aGlzLnBpdGNofSwgJHt0aGlzLnJvbGx9KWB9O1pFPVJvfSk7dmFyIEwwLExaLEJXLHlaPVMoKCk9PntMMD17fSxMWj1bXSxCVz17fX0pO2Z1bmN0aW9uIE85KCl7bGV0IHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7bGV0IG49dFtlXS5nZXRBdHRyaWJ1dGUoInNyYyIpLHM9V1cuZXhlYyhuKTtpZihzIT09bnVsbClyZXR1cm4gc1sxXX19ZnVuY3Rpb24gRFcodCl7cmV0dXJuIHR5cGVvZiBkb2N1bWVudD4idSI/dDoobSh3Wil8fCh3Wj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLHdaLmhyZWY9dCx3Wi5ocmVmKX1mdW5jdGlvbiBVVygpe2lmKG0ocGwpKXJldHVybiBwbDtsZXQgdDtyZXR1cm4gdHlwZW9mIENFU0lVTV9CQVNFX1VSTDwidSI/dD1DRVNJVU1fQkFTRV9VUkw6bShHVz8udXJsKT90PUFFKCIuIixHVy51cmwpOnR5cGVvZiBkZWZpbmU9PSJvYmplY3QiJiZtKGRlZmluZS5hbWQpJiYhZGVmaW5lLmFtZC50b1VybFVuZGVmaW5lZCYmbShYby50b1VybCk/dD1BRSgiLi4iLHVsKCJDb3JlL2J1aWxkTW9kdWxlVXJsLmpzIikpOnQ9TzkoKSxtKHQpfHwodD0iLyIpLHBsPW5ldyB0bih7dXJsOkRXKHQpfSkscGwuYXBwZW5kRm9yd2FyZFNsYXNoKCkscGx9ZnVuY3Rpb24gQjkodCl7cmV0dXJuIERXKFhvLnRvVXJsKGAuLi8ke3R9YCkpfWZ1bmN0aW9uIE1XKHQpe3JldHVybiBVVygpLmdldERlcml2ZWRSZXNvdXJjZSh7dXJsOnR9KS51cmx9ZnVuY3Rpb24gdWwodCl7cmV0dXJuIEwwW3RdP0wwW3RdOihtKHhaKXx8KHR5cGVvZiBkZWZpbmU9PSJvYmplY3QiJiZtKGRlZmluZS5hbWQpJiYhZGVmaW5lLmFtZC50b1VybFVuZGVmaW5lZCYmbShYby50b1VybCk/eFo9Qjk6eFo9TVcpLHhaKHQpKX12YXIgR1csV1csd1oscGwseFosdGgsUFo9UygoKT0+e210KCk7RTAoKTtJYSgpO3laKCk7R1c9e30sV1c9LygoPzouKlwvKXxeKUNlc2l1bVwuanMoPzpcP3xcI3wkKS87dWwuX2Nlc2l1bVNjcmlwdFJlZ2V4PVdXO3VsLl9idWlsZE1vZHVsZVVybEZyb21CYXNlVXJsPU1XO3VsLl9jbGVhckJhc2VSZXNvdXJjZT1mdW5jdGlvbigpe3BsPXZvaWQgMH07dWwuc2V0QmFzZVVybD1mdW5jdGlvbih0KXtwbD10bi5ERUZBVUxULmdldERlcml2ZWRSZXNvdXJjZSh7dXJsOnR9KX07dWwuZ2V0Q2VzaXVtQmFzZVVybD1VVzt0aD11bH0pO2Z1bmN0aW9uIEc5KHQsZSxpKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLnM9aX12YXIgSloseTA9UygoKT0+e0paPUc5fSk7ZnVuY3Rpb24gUDAodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuX3h5c0ZpbGVVcmxUZW1wbGF0ZT10bi5jcmVhdGVJZk5lZWRlZCh0Lnh5c0ZpbGVVcmxUZW1wbGF0ZSksdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyPVoodC5pbnRlcnBvbGF0aW9uT3JkZXIsOSksdGhpcy5fc2FtcGxlWmVyb0p1bGlhbkVwaGVtZXJpc0RhdGU9Wih0LnNhbXBsZVplcm9KdWxpYW5FcGhlbWVyaXNEYXRlLDI0NDIzOTY1ZS0xKSx0aGlzLl9zYW1wbGVaZXJvRGF0ZVRUPW5ldyBaZSh0aGlzLl9zYW1wbGVaZXJvSnVsaWFuRXBoZW1lcmlzRGF0ZSwwLEVpLlRBSSksdGhpcy5fc3RlcFNpemVEYXlzPVoodC5zdGVwU2l6ZURheXMsMSksdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGU9Wih0LnNhbXBsZXNQZXJYeXNGaWxlLDFlMyksdGhpcy5fdG90YWxTYW1wbGVzPVoodC50b3RhbFNhbXBsZXMsMjc0MjYpLHRoaXMuX3NhbXBsZXM9Qld8fG5ldyBBcnJheSh0aGlzLl90b3RhbFNhbXBsZXMqMyksdGhpcy5fY2h1bmtEb3dubG9hZHNJblByb2dyZXNzPVtdO2xldCBlPXRoaXMuX2ludGVycG9sYXRpb25PcmRlcixpPXRoaXMuX2Rlbm9taW5hdG9ycz1uZXcgQXJyYXkoZSsxKSxuPXRoaXMuX3hUYWJsZT1uZXcgQXJyYXkoZSsxKSxzPU1hdGgucG93KHRoaXMuX3N0ZXBTaXplRGF5cyxlKTtmb3IobGV0IG89MDtvPD1lOysrbyl7aVtvXT1zLG5bb109byp0aGlzLl9zdGVwU2l6ZURheXM7Zm9yKGxldCByPTA7cjw9ZTsrK3IpciE9PW8mJihpW29dKj1vLXIpO2lbb109MS9pW29dfXRoaXMuX3dvcms9bmV3IEFycmF5KGUrMSksdGhpcy5fY29lZj1uZXcgQXJyYXkoZSsxKX1mdW5jdGlvbiB3MCh0LGUsaSl7bGV0IG49Vzk7cmV0dXJuIG4uZGF5TnVtYmVyPWUsbi5zZWNvbmRzT2ZEYXk9aSxaZS5kYXlzRGlmZmVyZW5jZShuLHQuX3NhbXBsZVplcm9EYXRlVFQpfWZ1bmN0aW9uIHgwKHQsZSl7aWYodC5fY2h1bmtEb3dubG9hZHNJblByb2dyZXNzW2VdKXJldHVybiB0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV07bGV0IGksbj10Ll94eXNGaWxlVXJsVGVtcGxhdGU7bShuKT9pPW4uZ2V0RGVyaXZlZFJlc291cmNlKHt0ZW1wbGF0ZVZhbHVlczp7MDplfX0pOmk9bmV3IHRuKHt1cmw6dGgoYEFzc2V0cy9JQVUyMDA2X1hZUy9JQVUyMDA2X1hZU18ke2V9Lmpzb25gKX0pO2xldCBzPWkuZmV0Y2hKc29uKCkudGhlbihmdW5jdGlvbihvKXt0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV09ITE7bGV0IHI9dC5fc2FtcGxlcyxhPW8uc2FtcGxlcyxoPWUqdC5fc2FtcGxlc1Blclh5c0ZpbGUqMztmb3IobGV0IEE9MCxkPWEubGVuZ3RoO0E8ZDsrK0EpcltoK0FdPWFbQV19KTtyZXR1cm4gdC5fY2h1bmtEb3dubG9hZHNJblByb2dyZXNzW2VdPXMsc312YXIgVzksUVcsa1c9UygoKT0+e1BaKCk7RnQoKTttdCgpO3kwKCk7T3IoKTtJYSgpO2haKCk7eVooKTtXOT1uZXcgWmUoMCwwLEVpLlRBSSk7UDAucHJvdG90eXBlLnByZWxvYWQ9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9dzAodGhpcyx0LGUpLG89dzAodGhpcyxpLG4pLHI9cy90aGlzLl9zdGVwU2l6ZURheXMtdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyLzJ8MDtyPDAmJihyPTApO2xldCBhPW8vdGhpcy5fc3RlcFNpemVEYXlzLXRoaXMuX2ludGVycG9sYXRpb25PcmRlci8yfDArdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyO2E+PXRoaXMuX3RvdGFsU2FtcGxlcyYmKGE9dGhpcy5fdG90YWxTYW1wbGVzLTEpO2xldCBoPXIvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxBPWEvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxkPVtdO2ZvcihsZXQgZj1oO2Y8PUE7KytmKWQucHVzaCh4MCh0aGlzLGYpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZCl9O1AwLnByb3RvdHlwZS5jb21wdXRlWHlzUmFkaWFucz1mdW5jdGlvbih0LGUsaSl7bGV0IG49dzAodGhpcyx0LGUpO2lmKG48MClyZXR1cm47bGV0IHM9bi90aGlzLl9zdGVwU2l6ZURheXN8MDtpZihzPj10aGlzLl90b3RhbFNhbXBsZXMpcmV0dXJuO2xldCBvPXRoaXMuX2ludGVycG9sYXRpb25PcmRlcixyPXMtKG8vMnwwKTtyPDAmJihyPTApO2xldCBhPXIrbzthPj10aGlzLl90b3RhbFNhbXBsZXMmJihhPXRoaXMuX3RvdGFsU2FtcGxlcy0xLHI9YS1vLHI8MCYmKHI9MCkpO2xldCBoPSExLEE9dGhpcy5fc2FtcGxlcztpZihtKEFbciozXSl8fCh4MCh0aGlzLHIvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCksaD0hMCksbShBW2EqM10pfHwoeDAodGhpcyxhL3RoaXMuX3NhbXBsZXNQZXJYeXNGaWxlfDApLGg9ITApLGgpcmV0dXJuO20oaSk/KGkueD0wLGkueT0wLGkucz0wKTppPW5ldyBKWigwLDAsMCk7bGV0IGQ9bi1yKnRoaXMuX3N0ZXBTaXplRGF5cyxmPXRoaXMuX3dvcmssRT10aGlzLl9kZW5vbWluYXRvcnMsXz10aGlzLl9jb2VmLFI9dGhpcy5feFRhYmxlLEksQztmb3IoST0wO0k8PW87KytJKWZbSV09ZC1SW0ldO2ZvcihJPTA7STw9bzsrK0kpe2ZvcihfW0ldPTEsQz0wO0M8PW87KytDKUMhPT1JJiYoX1tJXSo9ZltDXSk7X1tJXSo9RVtJXTtsZXQgTj0ocitJKSozO2kueCs9X1tJXSpBW04rK10saS55Kz1fW0ldKkFbTisrXSxpLnMrPV9bSV0qQVtOXX1yZXR1cm4gaX07UVc9UDB9KTt2YXIgS2UsSjAsWW0sajAsJG8sYWMsQWMsaGMsRDksVTksTTksUTksazksTDkseTksTFcsdzkseDksUDksSjksajksSDksdjksejksSzksWDksalosSzAscTksJDksdDcsSDAsdjAsZTcsaTcsbjcsczcsd1cseFcsWDAsbzcscjcscTAsUFcsYTcsQTcsaDcsYzcsbDcsZDcsbTcsZjcsejAsRTcsXzcsUjcsaVR0LHlXLEluLGZyPVMoKCk9PntYZSgpO0h0KCk7T3MoKTtyaSgpO2FlKCk7RnQoKTttdCgpO090KCk7bFcoKTthMCgpO09lKCk7T1coKTtrVygpO3kwKCk7T3IoKTtfZSgpO2RuKCk7YmkoKTskcygpO0FaKCk7aWMoKTtLZT17fSxKMD17dXA6e3NvdXRoOiJlYXN0Iixub3J0aDoid2VzdCIsd2VzdDoic291dGgiLGVhc3Q6Im5vcnRoIn0sZG93bjp7c291dGg6Indlc3QiLG5vcnRoOiJlYXN0Iix3ZXN0OiJub3J0aCIsZWFzdDoic291dGgifSxzb3V0aDp7dXA6Indlc3QiLGRvd246ImVhc3QiLHdlc3Q6ImRvd24iLGVhc3Q6InVwIn0sbm9ydGg6e3VwOiJlYXN0Iixkb3duOiJ3ZXN0Iix3ZXN0OiJ1cCIsZWFzdDoiZG93biJ9LHdlc3Q6e3VwOiJub3J0aCIsZG93bjoic291dGgiLG5vcnRoOiJkb3duIixzb3V0aDoidXAifSxlYXN0Ont1cDoic291dGgiLGRvd246Im5vcnRoIixub3J0aDoidXAiLHNvdXRoOiJkb3duIn19LFltPXtub3J0aDpbLTEsMCwwXSxlYXN0OlswLDEsMF0sdXA6WzAsMCwxXSxzb3V0aDpbMSwwLDBdLHdlc3Q6WzAsLTEsMF0sZG93bjpbMCwwLC0xXX0sajA9e30sJG89e2Vhc3Q6bmV3IGwsbm9ydGg6bmV3IGwsdXA6bmV3IGwsd2VzdDpuZXcgbCxzb3V0aDpuZXcgbCxkb3duOm5ldyBsfSxhYz1uZXcgbCxBYz1uZXcgbCxoYz1uZXcgbDtLZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yPWZ1bmN0aW9uKHQsZSl7aWYoIUowLmhhc093blByb3BlcnR5KHQpfHwhSjBbdF0uaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IFkoImZpcnN0QXhpcyBhbmQgc2Vjb25kQXhpcyBtdXN0IGJlIGVhc3QsIG5vcnRoLCB1cCwgd2VzdCwgc291dGggb3IgZG93bi4iKTtsZXQgaT1KMFt0XVtlXSxuLHM9dCtlO3JldHVybiBtKGowW3NdKT9uPWowW3NdOihuPWZ1bmN0aW9uKG8scixhKXtpZighbShvKSl0aHJvdyBuZXcgWSgib3JpZ2luIGlzIHJlcXVpcmVkLiIpO2lmKGlzTmFOKG8ueCl8fGlzTmFOKG8ueSl8fGlzTmFOKG8ueikpdGhyb3cgbmV3IFkoIm9yaWdpbiBoYXMgYSBOYU4gY29tcG9uZW50Iik7aWYobShhKXx8KGE9bmV3IGF0KSxsLmVxdWFsc0Vwc2lsb24obyxsLlpFUk8sTC5FUFNJTE9OMTQpKWwudW5wYWNrKFltW3RdLDAsYWMpLGwudW5wYWNrKFltW2VdLDAsQWMpLGwudW5wYWNrKFltW2ldLDAsaGMpO2Vsc2UgaWYoTC5lcXVhbHNFcHNpbG9uKG8ueCwwLEwuRVBTSUxPTjE0KSYmTC5lcXVhbHNFcHNpbG9uKG8ueSwwLEwuRVBTSUxPTjE0KSl7bGV0IGg9TC5zaWduKG8ueik7bC51bnBhY2soWW1bdF0sMCxhYyksdCE9PSJlYXN0IiYmdCE9PSJ3ZXN0IiYmbC5tdWx0aXBseUJ5U2NhbGFyKGFjLGgsYWMpLGwudW5wYWNrKFltW2VdLDAsQWMpLGUhPT0iZWFzdCImJmUhPT0id2VzdCImJmwubXVsdGlwbHlCeVNjYWxhcihBYyxoLEFjKSxsLnVucGFjayhZbVtpXSwwLGhjKSxpIT09ImVhc3QiJiZpIT09Indlc3QiJiZsLm11bHRpcGx5QnlTY2FsYXIoaGMsaCxoYyl9ZWxzZXtyPVoocixvdC5XR1M4NCksci5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobywkby51cCk7bGV0IGg9JG8udXAsQT0kby5lYXN0O0EueD0tby55LEEueT1vLngsQS56PTAsbC5ub3JtYWxpemUoQSwkby5lYXN0KSxsLmNyb3NzKGgsQSwkby5ub3J0aCksbC5tdWx0aXBseUJ5U2NhbGFyKCRvLnVwLC0xLCRvLmRvd24pLGwubXVsdGlwbHlCeVNjYWxhcigkby5lYXN0LC0xLCRvLndlc3QpLGwubXVsdGlwbHlCeVNjYWxhcigkby5ub3J0aCwtMSwkby5zb3V0aCksYWM9JG9bdF0sQWM9JG9bZV0saGM9JG9baV19cmV0dXJuIGFbMF09YWMueCxhWzFdPWFjLnksYVsyXT1hYy56LGFbM109MCxhWzRdPUFjLngsYVs1XT1BYy55LGFbNl09QWMueixhWzddPTAsYVs4XT1oYy54LGFbOV09aGMueSxhWzEwXT1oYy56LGFbMTFdPTAsYVsxMl09by54LGFbMTNdPW8ueSxhWzE0XT1vLnosYVsxNV09MSxhfSxqMFtzXT1uKSxufTtLZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZT1LZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJlYXN0Iiwibm9ydGgiKTtLZS5ub3J0aEVhc3REb3duVG9GaXhlZEZyYW1lPUtlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwiZWFzdCIpO0tlLm5vcnRoVXBFYXN0VG9GaXhlZEZyYW1lPUtlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwidXAiKTtLZS5ub3J0aFdlc3RVcFRvRml4ZWRGcmFtZT1LZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJub3J0aCIsIndlc3QiKTtEOT1uZXcgQWUsVTk9bmV3IGwoMSwxLDEpLE05PW5ldyBhdDtLZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKSxuPVoobixLZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSk7bGV0IG89QWUuZnJvbUhlYWRpbmdQaXRjaFJvbGwoZSxEOSkscj1hdC5mcm9tVHJhbnNsYXRpb25RdWF0ZXJuaW9uUm90YXRpb25TY2FsZShsLlpFUk8sbyxVOSxNOSk7cmV0dXJuIHM9bih0LGkscyksYXQubXVsdGlwbHkocyxyLHMpfTtLZS5sb2NhbFRvRml4ZWRGcmFtZVF1YXRlcm5pb249ZnVuY3Rpb24odCxlLGksbixzKXtpZighbShlKSl0aHJvdyBuZXcgWSgibG9jYWxRdWF0ZXJuaW9uIGlzIHJlcXVpcmVkIik7bj1aKG4sS2UuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUpO2xldCBvPW4odCxpKSxyPWF0LmdldE1hdHJpeDMobyxuZXcgbHQpLGE9QWUuZnJvbVJvdGF0aW9uTWF0cml4KHIpO3JldHVybiBzPW0ocyk/czpuZXcgQWUsQWUubXVsdGlwbHkoYSxlLHMpfTtROT1uZXcgYXQsazk9bmV3IGx0O0tlLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKTtsZXQgbz1LZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKHQsZSxpLG4sUTkpLHI9YXQuZ2V0TWF0cml4MyhvLGs5KTtyZXR1cm4gQWUuZnJvbVJvdGF0aW9uTWF0cml4KHIscyl9O0w5PW5ldyBsKDEsMSwxKSx5OT1uZXcgbCxMVz1uZXcgYXQsdzk9bmV3IGF0LHg5PW5ldyBsdCxQOT1uZXcgQWU7S2UuZml4ZWRGcmFtZVRvSGVhZGluZ1BpdGNoUm9sbD1mdW5jdGlvbih0LGUsaSxuKXtwLmRlZmluZWQoInRyYW5zZm9ybSIsdCksZT1aKGUsb3QuV0dTODQpLGk9WihpLEtlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKSxtKG4pfHwobj1uZXcgWkUpO2xldCBzPWF0LmdldFRyYW5zbGF0aW9uKHQseTkpO2lmKGwuZXF1YWxzKHMsbC5aRVJPKSlyZXR1cm4gbi5oZWFkaW5nPTAsbi5waXRjaD0wLG4ucm9sbD0wLG47bGV0IG89YXQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKGkocyxlLExXKSxMVykscj1hdC5zZXRTY2FsZSh0LEw5LHc5KTtyPWF0LnNldFRyYW5zbGF0aW9uKHIsbC5aRVJPLHIpLG89YXQubXVsdGlwbHkobyxyLG8pO2xldCBhPUFlLmZyb21Sb3RhdGlvbk1hdHJpeChhdC5nZXRNYXRyaXgzKG8seDkpLFA5KTtyZXR1cm4gYT1BZS5ub3JtYWxpemUoYSxhKSxaRS5mcm9tUXVhdGVybmlvbihhLG4pfTtKOT02KjM2MDArNDEqNjArNTAuNTQ4NDEsajk9ODY0MDE4NDgxMjg2NmUtNixIOT0uMDkzMTA0LHY5PS02MmUtNyx6OT0xMTc3Mjc1ODM4NDY2OGUtMzIsSzk9NzI5MjExNTg1NTNlLTE1LFg5PUwuVFdPX1BJLzg2NDAwLGpaPW5ldyBaZTtLZS5jb21wdXRlVGVtZVRvUHNldWRvRml4ZWRNYXRyaXg9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZGF0ZSBpcyByZXF1aXJlZC4iKTtqWj1aZS5hZGRTZWNvbmRzKHQsLVplLmNvbXB1dGVUYWlNaW51c1V0Yyh0KSxqWik7bGV0IGk9alouZGF5TnVtYmVyLG49alouc2Vjb25kc09mRGF5LHMsbz1pLTI0NTE1NDU7bj49NDMyMDA/cz0obysuNSkvRm4uREFZU19QRVJfSlVMSUFOX0NFTlRVUlk6cz0oby0uNSkvRm4uREFZU19QRVJfSlVMSUFOX0NFTlRVUlk7bGV0IGE9KEo5K3MqKGo5K3MqKEg5K3MqdjkpKSkqWDklTC5UV09fUEksaD1LOSt6OSooaS0yNDUxNTQ1NWUtMSksQT0obitGbi5TRUNPTkRTX1BFUl9EQVkqLjUpJUZuLlNFQ09ORFNfUEVSX0RBWSxkPWEraCpBLGY9TWF0aC5jb3MoZCksRT1NYXRoLnNpbihkKTtyZXR1cm4gbShlKT8oZVswXT1mLGVbMV09LUUsZVsyXT0wLGVbM109RSxlWzRdPWYsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0xLGUpOm5ldyBsdChmLEUsMCwtRSxmLDAsMCwwLDEpfTtLZS5pYXUyMDA2WHlzRGF0YT1uZXcgUVc7S2UuZWFydGhPcmllbnRhdGlvblBhcmFtZXRlcnM9Y1cuTk9ORTtLMD0zMi4xODQscTk9MjQ1MTU0NTtLZS5wcmVsb2FkSWNyZkZpeGVkPWZ1bmN0aW9uKHQpe2xldCBlPXQuc3RhcnQuZGF5TnVtYmVyLGk9dC5zdGFydC5zZWNvbmRzT2ZEYXkrSzAsbj10LnN0b3AuZGF5TnVtYmVyLHM9dC5zdG9wLnNlY29uZHNPZkRheStLMDtyZXR1cm4gS2UuaWF1MjAwNlh5c0RhdGEucHJlbG9hZChlLGksbixzKX07S2UuY29tcHV0ZUljcmZUb0ZpeGVkTWF0cml4PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImRhdGUgaXMgcmVxdWlyZWQuIik7bShlKXx8KGU9bmV3IGx0KTtsZXQgaT1LZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgodCxlKTtpZihtKGkpKXJldHVybiBsdC50cmFuc3Bvc2UoaSxlKX07JDk9bmV3IEpaKDAsMCwwKSx0Nz1uZXcgb0UoMCwwLDAsMCwwLDApLEgwPW5ldyBsdCx2MD1uZXcgbHQ7S2UuY29tcHV0ZUZpeGVkVG9JY3JmTWF0cml4PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImRhdGUgaXMgcmVxdWlyZWQuIik7bShlKXx8KGU9bmV3IGx0KTtsZXQgaT1LZS5lYXJ0aE9yaWVudGF0aW9uUGFyYW1ldGVycy5jb21wdXRlKHQsdDcpO2lmKCFtKGkpKXJldHVybjtsZXQgbj10LmRheU51bWJlcixzPXQuc2Vjb25kc09mRGF5K0swLG89S2UuaWF1MjAwNlh5c0RhdGEuY29tcHV0ZVh5c1JhZGlhbnMobixzLCQ5KTtpZighbShvKSlyZXR1cm47bGV0IHI9by54K2kueFBvbGVPZmZzZXQsYT1vLnkraS55UG9sZU9mZnNldCxoPTEvKDErTWF0aC5zcXJ0KDEtcipyLWEqYSkpLEE9SDA7QVswXT0xLWgqcipyLEFbM109LWgqciphLEFbNl09cixBWzFdPS1oKnIqYSxBWzRdPTEtaCphKmEsQVs3XT1hLEFbMl09LXIsQVs1XT0tYSxBWzhdPTEtaCoocipyK2EqYSk7bGV0IGQ9bHQuZnJvbVJvdGF0aW9uWigtby5zLHYwKSxmPWx0Lm11bHRpcGx5KEEsZCxIMCksRT10LmRheU51bWJlcixfPXQuc2Vjb25kc09mRGF5LVplLmNvbXB1dGVUYWlNaW51c1V0Yyh0KStpLnV0MU1pbnVzVXRjLFI9RS0yNDUxNTQ1LEk9Xy9Gbi5TRUNPTkRTX1BFUl9EQVksQz0uNzc5MDU3MjczMjY0K0krLjAwMjczNzgxMTkxMTM1NDQ4KihSK0kpO0M9QyUxKkwuVFdPX1BJO2xldCBOPWx0LmZyb21Sb3RhdGlvblooQyx2MCksVD1sdC5tdWx0aXBseShmLE4sSDApLGI9TWF0aC5jb3MoaS54UG9sZVdhbmRlciksRj1NYXRoLmNvcyhpLnlQb2xlV2FuZGVyKSxCPU1hdGguc2luKGkueFBvbGVXYW5kZXIpLFU9TWF0aC5zaW4oaS55UG9sZVdhbmRlciksUT1uLXE5K3MvRm4uU0VDT05EU19QRVJfREFZO1EvPTM2NTI1O2xldCBNPS00N2UtNipRKkwuUkFESUFOU19QRVJfREVHUkVFLzM2MDAsaz1NYXRoLmNvcyhNKSx5PU1hdGguc2luKE0pLGM9djA7cmV0dXJuIGNbMF09YiprLGNbMV09Yip5LGNbMl09QixjWzNdPS1GKnkrVSpCKmssY1s0XT1GKmsrVSpCKnksY1s1XT0tVSpiLGNbNl09LVUqeS1GKkIqayxjWzddPVUqay1GKkIqeSxjWzhdPUYqYixsdC5tdWx0aXBseShULGMsZSl9O2U3PW5ldyBpZTtLZS5wb2ludFRvV2luZG93Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIG49S2UucG9pbnRUb0dMV2luZG93Q29vcmRpbmF0ZXModCxlLGksbiksbi55PTIqZVs1XS1uLnksbn07S2UucG9pbnRUb0dMV2luZG93Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoIm1vZGVsVmlld1Byb2plY3Rpb25NYXRyaXggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInZpZXdwb3J0VHJhbnNmb3JtYXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInBvaW50IGlzIHJlcXVpcmVkLiIpO20obil8fChuPW5ldyBudCk7bGV0IHM9ZTc7cmV0dXJuIGF0Lm11bHRpcGx5QnlWZWN0b3IodCxpZS5mcm9tRWxlbWVudHMoaS54LGkueSxpLnosMSxzKSxzKSxpZS5tdWx0aXBseUJ5U2NhbGFyKHMsMS9zLncscyksYXQubXVsdGlwbHlCeVZlY3RvcihlLHMscyksbnQuZnJvbUNhcnRlc2lhbjQocyxuKX07aTc9bmV3IGwsbjc9bmV3IGwsczc9bmV3IGw7S2Uucm90YXRpb25NYXRyaXhGcm9tUG9zaXRpb25WZWxvY2l0eT1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicG9zaXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInZlbG9jaXR5IGlzIHJlcXVpcmVkLiIpO2xldCBzPVooaSxvdC5XR1M4NCkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsaTcpLG89bC5jcm9zcyhlLHMsbjcpO2wuZXF1YWxzRXBzaWxvbihvLGwuWkVSTyxMLkVQU0lMT042KSYmKG89bC5jbG9uZShsLlVOSVRfWCxvKSk7bGV0IHI9bC5jcm9zcyhvLGUsczcpO3JldHVybiBsLm5vcm1hbGl6ZShyLHIpLGwuY3Jvc3MoZSxyLG8pLGwubmVnYXRlKG8sbyksbC5ub3JtYWxpemUobyxvKSxtKG4pfHwobj1uZXcgbHQpLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56LG5bM109by54LG5bNF09by55LG5bNV09by56LG5bNl09ci54LG5bN109ci55LG5bOF09ci56LG59O3dXPW5ldyBhdCgwLDAsMSwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMCwxKSx4Vz1uZXcgdXQsWDA9bmV3IGwsbzc9bmV3IGwscjc9bmV3IGx0LHEwPW5ldyBhdCxQVz1uZXcgYXQ7S2UuYmFzaXNUbzJEPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicHJvamVjdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgibWF0cml4IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49YXQuZ2V0VHJhbnNsYXRpb24oZSxvNykscz10LmVsbGlwc29pZCxvO2lmKGwuZXF1YWxzKG4sbC5aRVJPKSlvPWwuY2xvbmUobC5aRVJPLFgwKTtlbHNle2xldCBkPXMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobix4Vyk7bz10LnByb2plY3QoZCxYMCksbC5mcm9tRWxlbWVudHMoby56LG8ueCxvLnksbyl9bGV0IHI9S2UuZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUobixzLHEwKSxhPWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihyLFBXKSxoPWF0LmdldE1hdHJpeDMoZSxyNyksQT1hdC5tdWx0aXBseUJ5TWF0cml4MyhhLGgsaSk7cmV0dXJuIGF0Lm11bHRpcGx5KHdXLEEsaSksYXQuc2V0VHJhbnNsYXRpb24oaSxvLGkpLGl9O0tlLndnczg0VG8yRE1vZGVsTWF0cml4PWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicHJvamVjdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiY2VudGVyIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJyZXN1bHQgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5lbGxpcHNvaWQscz1LZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShlLG4scTApLG89YXQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKHMsUFcpLHI9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLHhXKSxhPXQucHJvamVjdChyLFgwKTtsLmZyb21FbGVtZW50cyhhLnosYS54LGEueSxhKTtsZXQgaD1hdC5mcm9tVHJhbnNsYXRpb24oYSxxMCk7cmV0dXJuIGF0Lm11bHRpcGx5KHdXLG8saSksYXQubXVsdGlwbHkoaCxpLGkpLGl9O2E3PW5ldyBsLEE3PW5ldyBsLGg3PW5ldyBsLGM3PW5ldyBsLGw3PW5ldyBsLGQ3PW5ldyBsLG03PW5ldyBsLGY3PW5ldyBsLHowPW5ldyBaZSxFNz1uZXcgbHQsXzc9bmV3IGx0LFI3PW5ldyBsdDtLZS52dmxoVG9GaXhlZD1mdW5jdGlvbih0LGUsaSl7bGV0IG49dC5nZXRWYWx1ZShlLGE3KTtaZS5hZGRTZWNvbmRzKGUsLjAxLHowKTtsZXQgcz10LmdldFZhbHVlKHowLEE3KSxvPW90LldHUzg0LHI9by5tYXhpbXVtUmFkaXVzKzFlNTtpZihtKGkpfHwoaT1uZXcgYXQpLGwubWFnbml0dWRlKG4pPD1yKXtsZXQgRT1sLnN1YnRyYWN0KHMsbixuZXcgbCksXztpZihsLm1hZ25pdHVkZShFKT09PTApe2xldCBDPUtlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG4sbyk7Xz1uZXcgbChDWzBdLENbMV0sQ1syXSl9ZWxzZSBfPWwubm9ybWFsaXplKEUsbmV3IGwpO2xldCBSPW8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKG4sbmV3IGwpLEk9bC5jcm9zcyhSLF8sbmV3IGwpO3JldHVybiBpWzBdPV8ueCxpWzFdPV8ueSxpWzJdPV8ueixpWzNdPTAsaVs0XT1JLngsaVs1XT1JLnksaVs2XT1JLnosaVs3XT0wLGlbOF09Ui54LGlbOV09Ui55LGlbMTBdPVIueixpWzExXT0wLGlbMTJdPW4ueCxpWzEzXT1uLnksaVsxNF09bi56LGlbMTVdPTEsaX1sZXQgYT1LZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgoZSxFNyk7aWYoIWEpcmV0dXJuIG5ldyBhdDtsZXQgaD1LZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgoejAsXzcpLEE9bHQudHJhbnNwb3NlKGEsUjcpLGQ9bHQubXVsdGlwbHlCeVZlY3RvcihhLG4saDcpLGY9bHQubXVsdGlwbHlCeVZlY3RvcihoLHMsYzcpO2lmKCFsLmVxdWFsc0Vwc2lsb24oZCxmLEwuRVBTSUxPTjE0KSl7bGV0IEU9bC5zdWJ0cmFjdChmLGQsbDcpLF89ZDc7dHJ5e2wubmVnYXRlKGwubm9ybWFsaXplKGQsXyksXyl9Y2F0Y2h7Y29uc29sZS5sb2coZCxfKX1sZXQgUj1sLmNyb3NzKEUsXyxtNyk7bC5uZWdhdGUoUixSKTtsZXQgST1sLmNyb3NzKFIsXyxmNyk7dHJ5e2x0Lm11bHRpcGx5QnlWZWN0b3IoQSxJLEkpLGx0Lm11bHRpcGx5QnlWZWN0b3IoQSxSLFIpLGx0Lm11bHRpcGx5QnlWZWN0b3IoQSxfLF8pLGwubm9ybWFsaXplKEksSSksbC5ub3JtYWxpemUoUixSKSxsLm5vcm1hbGl6ZShfLF8pLGlbMF09SS54LGlbMV09SS55LGlbMl09SS56LGlbM109MCxpWzRdPVIueCxpWzVdPVIueSxpWzZdPVIueixpWzddPTAsaVs4XT1fLngsaVs5XT1fLnksaVsxMF09Xy56LGlbMTFdPTAsaVsxMl09bi54LGlbMTNdPW4ueSxpWzE0XT1uLnosaVsxNV09MX1jYXRjaChDKXtyZXR1cm4gY29uc29sZS5sb2coQyxJLFIsXyxFLG4scyx0KSxuZXcgQXJyYXkoMTYpLmZpbGwoMCl9fXJldHVybiBhdC5tdWx0aXBseShpLG5ldyBhdCgxLDAsMCwwLDAsLTEsMCwwLDAsMCwtMSwwLDAsMCwwLDEpLGkpLGl9O0tlLnJldmVyc2VIZWFkaW5nUXVhdGVybmlvbj1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgib3JpZW50YXRpb24gaXMgcmVxdWlyZWQiKTtsZXQgZT1uZXcgWkU7WkUuZnJvbVF1YXRlcm5pb24odCxlKSxlLmhlYWRpbmc9LWUuaGVhZGluZyxlLnJvbGw9LWUucm9sbDtsZXQgaT1uZXcgQWU7cmV0dXJuIEFlLmZyb21IZWFkaW5nUGl0Y2hSb2xsKGUsaSksaX07aVR0PW5ldyBhdCgwLDAsMSwwLDAsMSwwLDAsLTEsMCwwLDAsMCwwLDAsMSk7S2UuZ2V0UG9zaXRpb25JblZWTEg9ZnVuY3Rpb24odCxlLGksbixzPSRpLkZJWEVEKXtsZXQgbz1lLnBvc2l0aW9uLmdldFZhbHVlSW5SZWZlcmVuY2VGcmFtZShpLHMuRklYRUQpLHI9dC5wb3NpdGlvbi5nZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWUobixzLkZJWEVEKSxhO3RyeXthPWF0LmludmVyc2UoS2UudnZsaFRvRml4ZWQodC5wb3NpdGlvbixpKSxuZXcgYXQpfWNhdGNoe2E9bmV3IGF0fWxldCBoPWF0Lm11bHRpcGx5QnlQb2ludChhLG8sbmV3IGwpLEE9YXQuZ2V0Um90YXRpb24oS2UudnZsaFRvRml4ZWQodC5wb3NpdGlvbixuKSxuZXcgbHQpLGQ9bHQubXVsdGlwbHlCeVZlY3RvcihBLGgsbmV3IGwpLGY9bC5hZGQocixkLG5ldyBsKTtpZihzPT09JGkuSU5FUlRJQUwpe2xldCBFPUtlLmNvbXB1dGVGaXhlZFRvSWNyZk1hdHJpeChuKTtFJiYoZj1sdC5tdWx0aXBseUJ5VmVjdG9yKEUsZixuZXcgbCkpfXJldHVybiBmfTt5Vz1LZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJub3J0aCIsIndlc3QiKTtLZS5nZXRUcmFuc2Zvcm1Ub0ZpeGVkRnJhbWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuLHM9e1skaS5GSVhFRF06KCk9PmF0LklERU5USVRZLFskaS5JTkVSVElBTF06KCk9PntpZighbShlKSl0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIElORVJUSUFMIHRvIEZJWEVEIHJlcXVpcmVzIGEgdGltZS4iKTtyZXR1cm4gS2UuY29tcHV0ZUljcmZUb0ZpeGVkTWF0cml4KGUpfSxbJGkuVEVNRV06KCk9Pnt0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIFRFTUUgdG8gRklYRUQgaXMgbm90IGltcGxlbWVudGVkLiIpfSxbJGkuVlZMSF06KCk9PntpZighbShlKXx8IW0oaSkpdGhyb3cgbmV3IFkoIkNvbnZlcnNpb24gZnJvbSBWVkxIIHRvIEZJWEVEIHJlcXVpcmVzIGJvdGggdGltZSBhbmQgcG9zaXRpb24uIik7bGV0IG89S2UudnZsaFRvRml4ZWQoaSxlKSxyPWF0LmZyb21TY2FsZShuZXcgbCgxLC0xLC0xKSk7cmV0dXJuIGF0Lm11bHRpcGx5KG8scixuZXcgYXQpfSxbJGkuTkVEXTooKT0+e2lmKCFtKGUpfHwhbShpKSl0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIE5FRCB0byBGSVhFRCByZXF1aXJlcyBib3RoIHRpbWUgYW5kIHBvc2l0aW9uLiIpO2xldCBvPXlXKGkuZ2V0VmFsdWUoZSkpLHI9YXQuZnJvbVNjYWxlKG5ldyBsKDEsLTEsLTEpKTtyZXR1cm4gYXQubXVsdGlwbHkobyxyLG5ldyBhdCl9LFskaS5ORVVdOigpPT57aWYoIW0oZSl8fCFtKGkpKXRocm93IG5ldyBZKCJDb252ZXJzaW9uIGZyb20gTkVVIHRvIEZJWEVEIHJlcXVpcmVzIGJvdGggdGltZSBhbmQgcG9zaXRpb24uIik7bGV0IG89eVcoaS5nZXRWYWx1ZShlKSkscj1hdC5mcm9tU2NhbGUobmV3IGwoMSwtMSwxKSk7cmV0dXJuIGF0Lm11bHRpcGx5KG8scixuZXcgYXQpfSxbJGkuUklDXTooKT0+e2lmKCFtKGUpfHwhbShpKSl0aHJvdyBuZXcgWSgiQ29udmVyc2lvbiBmcm9tIFJJQyB0byBGSVhFRCByZXF1aXJlcyBib3RoIHRpbWUgYW5kIHBvc2l0aW9uLiIpO2xldCBvPUtlLnZ2bGhUb0ZpeGVkKGksZSkscj1hdC5mcm9tQXJyYXkoWzAsMCwxLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDFdKTtyZXR1cm4gYXQubXVsdGlwbHkobyxyLG5ldyBhdCl9fTtyZXR1cm4gcy5oYXNPd25Qcm9wZXJ0eSh0KT9uPXNbdF06bj1LZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSxufTtJbj1LZX0pO2Z1bmN0aW9uIEplKHQsZSxpLG4pe3RoaXMud2VzdD1aKHQsMCksdGhpcy5zb3V0aD1aKGUsMCksdGhpcy5lYXN0PVooaSwwKSx0aGlzLm5vcnRoPVoobiwwKX12YXIgWjcsSTcscDcsdTcsQzcsJDAsZzcsWHQscG49UygoKT0+e0h0KCk7cmkoKTthZSgpO0Z0KCk7bXQoKTtPZSgpO19lKCk7ZnIoKTtiaSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEplLnByb3RvdHlwZSx7d2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBKZS5jb21wdXRlV2lkdGgodGhpcyl9fSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBKZS5jb21wdXRlSGVpZ2h0KHRoaXMpfX19KTtKZS5wYWNrZWRMZW5ndGg9NDtKZS5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksZVtpKytdPXQud2VzdCxlW2krK109dC5zb3V0aCxlW2krK109dC5lYXN0LGVbaV09dC5ub3J0aCxlfTtKZS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgSmUpLGkud2VzdD10W2UrK10saS5zb3V0aD10W2UrK10saS5lYXN0PXRbZSsrXSxpLm5vcnRoPXRbZV0saX07SmUuY29tcHV0ZVdpZHRoPWZ1bmN0aW9uKHQpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KTtsZXQgZT10LmVhc3QsaT10Lndlc3Q7cmV0dXJuIGU8aSYmKGUrPUwuVFdPX1BJKSxlLWl9O0plLmNvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSx0Lm5vcnRoLXQuc291dGh9O0plLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxpLG4scyl7cmV0dXJuIHQ9TC50b1JhZGlhbnMoWih0LDApKSxlPUwudG9SYWRpYW5zKFooZSwwKSksaT1MLnRvUmFkaWFucyhaKGksMCkpLG49TC50b1JhZGlhbnMoWihuLDApKSxtKHMpPyhzLndlc3Q9dCxzLnNvdXRoPWUscy5lYXN0PWkscy5ub3J0aD1uLHMpOm5ldyBKZSh0LGUsaSxuKX07SmUuZnJvbVJhZGlhbnM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gbShzKT8ocy53ZXN0PVoodCwwKSxzLnNvdXRoPVooZSwwKSxzLmVhc3Q9WihpLDApLHMubm9ydGg9WihuLDApLHMpOm5ldyBKZSh0LGUsaSxuKX07SmUuZnJvbUNhcnRvZ3JhcGhpY0FycmF5PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjYXJ0b2dyYXBoaWNzIix0KTtsZXQgaT1OdW1iZXIuTUFYX1ZBTFVFLG49LU51bWJlci5NQVhfVkFMVUUscz1OdW1iZXIuTUFYX1ZBTFVFLG89LU51bWJlci5NQVhfVkFMVUUscj1OdW1iZXIuTUFYX1ZBTFVFLGE9LU51bWJlci5NQVhfVkFMVUU7Zm9yKGxldCBoPTAsQT10Lmxlbmd0aDtoPEE7aCsrKXtsZXQgZD10W2hdO2k9TWF0aC5taW4oaSxkLmxvbmdpdHVkZSksbj1NYXRoLm1heChuLGQubG9uZ2l0dWRlKSxyPU1hdGgubWluKHIsZC5sYXRpdHVkZSksYT1NYXRoLm1heChhLGQubGF0aXR1ZGUpO2xldCBmPWQubG9uZ2l0dWRlPj0wP2QubG9uZ2l0dWRlOmQubG9uZ2l0dWRlK0wuVFdPX1BJO3M9TWF0aC5taW4ocyxmKSxvPU1hdGgubWF4KG8sZil9cmV0dXJuIG4taT5vLXMmJihpPXMsbj1vLG4+TC5QSSYmKG49bi1MLlRXT19QSSksaT5MLlBJJiYoaT1pLUwuVFdPX1BJKSksbShlKT8oZS53ZXN0PWksZS5zb3V0aD1yLGUuZWFzdD1uLGUubm9ydGg9YSxlKTpuZXcgSmUoaSxyLG4sYSl9O0plLmZyb21DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJjYXJ0ZXNpYW5zIix0KSxlPVooZSxvdC5XR1M4NCk7bGV0IG49TnVtYmVyLk1BWF9WQUxVRSxzPS1OdW1iZXIuTUFYX1ZBTFVFLG89TnVtYmVyLk1BWF9WQUxVRSxyPS1OdW1iZXIuTUFYX1ZBTFVFLGE9TnVtYmVyLk1BWF9WQUxVRSxoPS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgQT0wLGQ9dC5sZW5ndGg7QTxkO0ErKyl7bGV0IGY9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0W0FdKTtuPU1hdGgubWluKG4sZi5sb25naXR1ZGUpLHM9TWF0aC5tYXgocyxmLmxvbmdpdHVkZSksYT1NYXRoLm1pbihhLGYubGF0aXR1ZGUpLGg9TWF0aC5tYXgoaCxmLmxhdGl0dWRlKTtsZXQgRT1mLmxvbmdpdHVkZT49MD9mLmxvbmdpdHVkZTpmLmxvbmdpdHVkZStMLlRXT19QSTtvPU1hdGgubWluKG8sRSkscj1NYXRoLm1heChyLEUpfXJldHVybiBzLW4+ci1vJiYobj1vLHM9cixzPkwuUEkmJihzPXMtTC5UV09fUEkpLG4+TC5QSSYmKG49bi1MLlRXT19QSSkpLG0oaSk/KGkud2VzdD1uLGkuc291dGg9YSxpLmVhc3Q9cyxpLm5vcnRoPWgsaSk6bmV3IEplKG4sYSxzLGgpfTtaNz1uZXcgbCxJNz1uZXcgbCxwNz1uZXcgbCx1Nz1uZXcgbCxDNz1uZXcgbCwkMD1uZXcgQXJyYXkoNSk7Zm9yKGxldCB0PTA7dDwkMC5sZW5ndGg7Kyt0KSQwW3RdPW5ldyBsO0plLmZyb21Cb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJib3VuZGluZ1NwaGVyZSIsdCk7bGV0IG49dC5jZW50ZXIscz10LnJhZGl1cztpZihtKGUpfHwoZT1vdC5XR1M4NCksbShpKXx8KGk9bmV3IEplKSxsLmVxdWFscyhuLGwuWkVSTykpcmV0dXJuIEplLmNsb25lKEplLk1BWF9WQUxVRSxpKSxpO2xldCBvPUluLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG4sZSxaNykscj1hdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihvLGwuVU5JVF9YLEk3KTtsLm5vcm1hbGl6ZShyLHIpO2xldCBhPWF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKG8sbC5VTklUX1kscDcpO2wubm9ybWFsaXplKGEsYSksbC5tdWx0aXBseUJ5U2NhbGFyKGEscyxhKSxsLm11bHRpcGx5QnlTY2FsYXIocixzLHIpO2xldCBoPWwubmVnYXRlKGEsQzcpLEE9bC5uZWdhdGUocix1NyksZD0kMCxmPWRbMF07cmV0dXJuIGwuYWRkKG4sYSxmKSxmPWRbMV0sbC5hZGQobixBLGYpLGY9ZFsyXSxsLmFkZChuLGgsZiksZj1kWzNdLGwuYWRkKG4scixmKSxkWzRdPW4sSmUuZnJvbUNhcnRlc2lhbkFycmF5KGQsZSxpKX07SmUuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLndlc3Q9dC53ZXN0LGUuc291dGg9dC5zb3V0aCxlLmVhc3Q9dC5lYXN0LGUubm9ydGg9dC5ub3J0aCxlKTpuZXcgSmUodC53ZXN0LHQuc291dGgsdC5lYXN0LHQubm9ydGgpfTtKZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaT1aKGksMCksdD09PWV8fG0odCkmJm0oZSkmJk1hdGguYWJzKHQud2VzdC1lLndlc3QpPD1pJiZNYXRoLmFicyh0LnNvdXRoLWUuc291dGgpPD1pJiZNYXRoLmFicyh0LmVhc3QtZS5lYXN0KTw9aSYmTWF0aC5hYnModC5ub3J0aC1lLm5vcnRoKTw9aX07SmUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBKZS5jbG9uZSh0aGlzLHQpfTtKZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBKZS5lcXVhbHModGhpcyx0KX07SmUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lndlc3Q9PT1lLndlc3QmJnQuc291dGg9PT1lLnNvdXRoJiZ0LmVhc3Q9PT1lLmVhc3QmJnQubm9ydGg9PT1lLm5vcnRofTtKZS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBKZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07SmUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQubm9ydGg7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoIixlLC1MLlBJX09WRVJfVFdPKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGgiLGUsTC5QSV9PVkVSX1RXTyk7bGV0IGk9dC5zb3V0aDtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygic291dGgiLGksLUwuUElfT1ZFUl9UV08pLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJzb3V0aCIsaSxMLlBJX09WRVJfVFdPKTtsZXQgbj10Lndlc3Q7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIndlc3QiLG4sLU1hdGguUEkpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0IixuLE1hdGguUEkpO2xldCBzPXQuZWFzdDtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZWFzdCIscywtTWF0aC5QSSkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImVhc3QiLHMsTWF0aC5QSSl9O0plLnNvdXRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0Lndlc3QsdC5zb3V0aCl9O0plLm5vcnRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0Lndlc3QsdC5ub3J0aCl9O0plLm5vcnRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0LmVhc3QsdC5ub3J0aCl9O0plLnNvdXRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyB1dCh0LmVhc3QsdC5zb3V0aCl9O0plLmNlbnRlcj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KTtsZXQgaT10LmVhc3Qsbj10Lndlc3Q7aTxuJiYoaSs9TC5UV09fUEkpO2xldCBzPUwubmVnYXRpdmVQaVRvUGkoKG4raSkqLjUpLG89KHQuc291dGgrdC5ub3J0aCkqLjU7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPXMsZS5sYXRpdHVkZT1vLGUuaGVpZ2h0PTAsZSk6bmV3IHV0KHMsbyl9O0plLmludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHAudHlwZU9mLm9iamVjdCgib3RoZXJSZWN0YW5nbGUiLGUpO2xldCBuPXQuZWFzdCxzPXQud2VzdCxvPWUuZWFzdCxyPWUud2VzdDtuPHMmJm8+MD9uKz1MLlRXT19QSTpvPHImJm4+MCYmKG8rPUwuVFdPX1BJKSxuPHMmJnI8MD9yKz1MLlRXT19QSTpvPHImJnM8MCYmKHMrPUwuVFdPX1BJKTtsZXQgYT1MLm5lZ2F0aXZlUGlUb1BpKE1hdGgubWF4KHMscikpLGg9TC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihuLG8pKTtpZigodC53ZXN0PHQuZWFzdHx8ZS53ZXN0PGUuZWFzdCkmJmg8PWEpcmV0dXJuO2xldCBBPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksZD1NYXRoLm1pbih0Lm5vcnRoLGUubm9ydGgpO2lmKCEoQT49ZCkpcmV0dXJuIG0oaSk/KGkud2VzdD1hLGkuc291dGg9QSxpLmVhc3Q9aCxpLm5vcnRoPWQsaSk6bmV3IEplKGEsQSxoLGQpfTtKZS5zaW1wbGVJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSxwLnR5cGVPZi5vYmplY3QoIm90aGVyUmVjdGFuZ2xlIixlKTtsZXQgbj1NYXRoLm1heCh0Lndlc3QsZS53ZXN0KSxzPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksbz1NYXRoLm1pbih0LmVhc3QsZS5lYXN0KSxyPU1hdGgubWluKHQubm9ydGgsZS5ub3J0aCk7aWYoIShzPj1yfHxuPj1vKSlyZXR1cm4gbShpKT8oaS53ZXN0PW4saS5zb3V0aD1zLGkuZWFzdD1vLGkubm9ydGg9cixpKTpuZXcgSmUobixzLG8scil9O0plLnVuaW9uPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkscC50eXBlT2Yub2JqZWN0KCJvdGhlclJlY3RhbmdsZSIsZSksbShpKXx8KGk9bmV3IEplKTtsZXQgbj10LmVhc3Qscz10Lndlc3Qsbz1lLmVhc3Qscj1lLndlc3Q7bjxzJiZvPjA/bis9TC5UV09fUEk6bzxyJiZuPjAmJihvKz1MLlRXT19QSSksbjxzJiZyPDA/cis9TC5UV09fUEk6bzxyJiZzPDAmJihzKz1MLlRXT19QSSk7bGV0IGE9TC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihzLHIpKSxoPUwubmVnYXRpdmVQaVRvUGkoTWF0aC5tYXgobixvKSk7cmV0dXJuIGkud2VzdD1hLGkuc291dGg9TWF0aC5taW4odC5zb3V0aCxlLnNvdXRoKSxpLmVhc3Q9aCxpLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5ub3J0aCksaX07SmUuZXhwYW5kPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHAudHlwZU9mLm9iamVjdCgiY2FydG9ncmFwaGljIixlKSxtKGkpfHwoaT1uZXcgSmUpLGkud2VzdD1NYXRoLm1pbih0Lndlc3QsZS5sb25naXR1ZGUpLGkuc291dGg9TWF0aC5taW4odC5zb3V0aCxlLmxhdGl0dWRlKSxpLmVhc3Q9TWF0aC5tYXgodC5lYXN0LGUubG9uZ2l0dWRlKSxpLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5sYXRpdHVkZSksaX07SmUuY29udGFpbnM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkscC50eXBlT2Yub2JqZWN0KCJjYXJ0b2dyYXBoaWMiLGUpO2xldCBpPWUubG9uZ2l0dWRlLG49ZS5sYXRpdHVkZSxzPXQud2VzdCxvPXQuZWFzdDtyZXR1cm4gbzxzJiYobys9TC5UV09fUEksaTwwJiYoaSs9TC5UV09fUEkpKSwoaT5zfHxMLmVxdWFsc0Vwc2lsb24oaSxzLEwuRVBTSUxPTjE0KSkmJihpPG98fEwuZXF1YWxzRXBzaWxvbihpLG8sTC5FUFNJTE9OMTQpKSYmbj49dC5zb3V0aCYmbjw9dC5ub3J0aH07Zzc9bmV3IHV0O0plLnN1YnNhbXBsZT1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksZT1aKGUsb3QuV0dTODQpLGk9WihpLDApLG0obil8fChuPVtdKTtsZXQgcz0wLG89dC5ub3J0aCxyPXQuc291dGgsYT10LmVhc3QsaD10Lndlc3QsQT1nNztBLmhlaWdodD1pLEEubG9uZ2l0dWRlPWgsQS5sYXRpdHVkZT1vLG5bc109ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihBLG5bc10pLHMrKyxBLmxvbmdpdHVkZT1hLG5bc109ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihBLG5bc10pLHMrKyxBLmxhdGl0dWRlPXIsbltzXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEEsbltzXSkscysrLEEubG9uZ2l0dWRlPWgsbltzXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEEsbltzXSkscysrLG88MD9BLmxhdGl0dWRlPW86cj4wP0EubGF0aXR1ZGU9cjpBLmxhdGl0dWRlPTA7Zm9yKGxldCBkPTE7ZDw4OysrZClBLmxvbmdpdHVkZT0tTWF0aC5QSStkKkwuUElfT1ZFUl9UV08sSmUuY29udGFpbnModCxBKSYmKG5bc109ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihBLG5bc10pLHMrKyk7cmV0dXJuIEEubGF0aXR1ZGU9PT0wJiYoQS5sb25naXR1ZGU9aCxuW3NdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oQSxuW3NdKSxzKyssQS5sb25naXR1ZGU9YSxuW3NdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oQSxuW3NdKSxzKyspLG4ubGVuZ3RoPXMsbn07SmUuc3Vic2VjdGlvbj1mdW5jdGlvbih0LGUsaSxuLHMsbyl7aWYocC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygid2VzdExlcnAiLGUsMSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInNvdXRoTGVycCIsaSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixpLDEpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJlYXN0TGVycCIsbiwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiZWFzdExlcnAiLG4sMSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoTGVycCIscywwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGhMZXJwIixzLDEpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSxuKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixpLHMpLG0obyl8fChvPW5ldyBKZSksdC53ZXN0PD10LmVhc3Qpe2xldCBhPXQuZWFzdC10Lndlc3Q7by53ZXN0PXQud2VzdCtlKmEsby5lYXN0PXQud2VzdCtuKmF9ZWxzZXtsZXQgYT1MLlRXT19QSSt0LmVhc3QtdC53ZXN0O28ud2VzdD1MLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtlKmEpLG8uZWFzdD1MLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtuKmEpfWxldCByPXQubm9ydGgtdC5zb3V0aDtyZXR1cm4gby5zb3V0aD10LnNvdXRoK2kqcixvLm5vcnRoPXQuc291dGgrcypyLGU9PT0xJiYoby53ZXN0PXQuZWFzdCksbj09PTEmJihvLmVhc3Q9dC5lYXN0KSxpPT09MSYmKG8uc291dGg9dC5ub3J0aCkscz09PTEmJihvLm5vcnRoPXQubm9ydGgpLG99O0plLk1BWF9WQUxVRT1PYmplY3QuZnJlZXplKG5ldyBKZSgtTWF0aC5QSSwtTC5QSV9PVkVSX1RXTyxNYXRoLlBJLEwuUElfT1ZFUl9UV08pKTtYdD1KZX0pO2Z1bmN0aW9uIG5zKHQsZSxpLG4pe3RoaXMueD1aKHQsMCksdGhpcy55PVooZSwwKSx0aGlzLndpZHRoPVooaSwwKSx0aGlzLmhlaWdodD1aKG4sMCl9dmFyIFQ3LE43LEY3LG1pLEVyPVMoKCk9PntYZSgpO3JpKCk7YWUoKTtGdCgpO210KCk7ekEoKTtuYygpO3BuKCk7bnMucGFja2VkTGVuZ3RoPTQ7bnMucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGVbaSsrXT10LngsZVtpKytdPXQueSxlW2krK109dC53aWR0aCxlW2ldPXQuaGVpZ2h0LGV9O25zLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApLG0oaSl8fChpPW5ldyBucyksaS54PXRbZSsrXSxpLnk9dFtlKytdLGkud2lkdGg9dFtlKytdLGkuaGVpZ2h0PXRbZV0saX07bnMuZnJvbVBvaW50cz1mdW5jdGlvbih0LGUpe2lmKG0oZSl8fChlPW5ldyBucyksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gZS54PTAsZS55PTAsZS53aWR0aD0wLGUuaGVpZ2h0PTAsZTtsZXQgaT10Lmxlbmd0aCxuPXRbMF0ueCxzPXRbMF0ueSxvPXRbMF0ueCxyPXRbMF0ueTtmb3IobGV0IGE9MTthPGk7YSsrKXtsZXQgaD10W2FdLEE9aC54LGQ9aC55O249TWF0aC5taW4oQSxuKSxvPU1hdGgubWF4KEEsbykscz1NYXRoLm1pbihkLHMpLHI9TWF0aC5tYXgoZCxyKX1yZXR1cm4gZS54PW4sZS55PXMsZS53aWR0aD1vLW4sZS5oZWlnaHQ9ci1zLGV9O1Q3PW5ldyBTcyxONz1uZXcgdXQsRjc9bmV3IHV0O25zLmZyb21SZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGkpe2lmKG0oaSl8fChpPW5ldyBucyksIW0odCkpcmV0dXJuIGkueD0wLGkueT0wLGkud2lkdGg9MCxpLmhlaWdodD0wLGk7ZT1aKGUsVDcpO2xldCBuPWUucHJvamVjdChYdC5zb3V0aHdlc3QodCxONykpLHM9ZS5wcm9qZWN0KFh0Lm5vcnRoZWFzdCh0LEY3KSk7cmV0dXJuIG50LnN1YnRyYWN0KHMsbixzKSxpLng9bi54LGkueT1uLnksaS53aWR0aD1zLngsaS5oZWlnaHQ9cy55LGl9O25zLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS54PXQueCxlLnk9dC55LGUud2lkdGg9dC53aWR0aCxlLmhlaWdodD10LmhlaWdodCxlKTpuZXcgbnModC54LHQueSx0LndpZHRoLHQuaGVpZ2h0KX07bnMudW5pb249ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksbShpKXx8KGk9bmV3IG5zKTtsZXQgbj1NYXRoLm1pbih0LngsZS54KSxzPU1hdGgubWluKHQueSxlLnkpLG89TWF0aC5tYXgodC54K3Qud2lkdGgsZS54K2Uud2lkdGgpLHI9TWF0aC5tYXgodC55K3QuaGVpZ2h0LGUueStlLmhlaWdodCk7cmV0dXJuIGkueD1uLGkueT1zLGkud2lkdGg9by1uLGkuaGVpZ2h0PXItcyxpfTtucy5leHBhbmQ9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSxwLnR5cGVPZi5vYmplY3QoInBvaW50IixlKSxpPW5zLmNsb25lKHQsaSk7bGV0IG49ZS54LWkueCxzPWUueS1pLnk7cmV0dXJuIG4+aS53aWR0aD9pLndpZHRoPW46bjwwJiYoaS53aWR0aC09bixpLng9ZS54KSxzPmkuaGVpZ2h0P2kuaGVpZ2h0PXM6czwwJiYoaS5oZWlnaHQtPXMsaS55PWUueSksaX07bnMuaW50ZXJzZWN0PWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKTtsZXQgaT10Lngsbj10Lnkscz1lLngsbz1lLnk7cmV0dXJuIGk+cytlLndpZHRofHxpK3Qud2lkdGg8c3x8bit0LmhlaWdodDxvfHxuPm8rZS5oZWlnaHQ/Tm4uT1VUU0lERTpObi5JTlRFUlNFQ1RJTkd9O25zLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQud2lkdGg9PT1lLndpZHRoJiZ0LmhlaWdodD09PWUuaGVpZ2h0fTtucy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5zLmNsb25lKHRoaXMsdCl9O25zLnByb3RvdHlwZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIG5zLmludGVyc2VjdCh0aGlzLHQpfTtucy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBucy5lcXVhbHModGhpcyx0KX07bWk9bnN9KTtmdW5jdGlvbiBiNyh0LGUpe3RoaXMuc3RhcnQ9Wih0LDApLHRoaXMuc3RvcD1aKGUsMCl9dmFyIGNBLEhaPVMoKCk9PntGdCgpO2NBPWI3fSk7ZnVuY3Rpb24gTGUodCxlKXt0aGlzLmNlbnRlcj1sLmNsb25lKFoodCxsLlpFUk8pKSx0aGlzLnJhZGl1cz1aKGUsMCl9dmFyIGlULG5ULHNULG9ULHJULGFULEFULEpzLGhULGNULGxULGRULFk3LFY3LFM3LE83LHRULGVULEI3LEc3LFc3LEQ3LFU3LE03LFE3LGs3LEw3LHk3LHc3LHg3LEpXLFA3LEo3LGo3LEg3LHY3LGpXLHo3LE50LF9pPVMoKCk9PntIdCgpO3JpKCk7YWUoKTtGdCgpO210KCk7T2UoKTt6QSgpO25jKCk7SFooKTtfZSgpO2RuKCk7YmkoKTtwbigpO2lUPW5ldyBsLG5UPW5ldyBsLHNUPW5ldyBsLG9UPW5ldyBsLHJUPW5ldyBsLGFUPW5ldyBsLEFUPW5ldyBsLEpzPW5ldyBsLGhUPW5ldyBsLGNUPW5ldyBsLGxUPW5ldyBsLGRUPW5ldyBsLFk3PTQvMypMLlBJO0xlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXtpZihtKGUpfHwoZT1uZXcgTGUpLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIGUuY2VudGVyPWwuY2xvbmUobC5aRVJPLGUuY2VudGVyKSxlLnJhZGl1cz0wLGU7bGV0IGk9bC5jbG9uZSh0WzBdLEFUKSxuPWwuY2xvbmUoaSxpVCkscz1sLmNsb25lKGksblQpLG89bC5jbG9uZShpLHNUKSxyPWwuY2xvbmUoaSxvVCksYT1sLmNsb25lKGksclQpLGg9bC5jbG9uZShpLGFUKSxBPXQubGVuZ3RoLGQ7Zm9yKGQ9MTtkPEE7ZCsrKXtsLmNsb25lKHRbZF0saSk7bGV0IE09aS54LGs9aS55LHk9aS56O008bi54JiZsLmNsb25lKGksbiksTT5yLngmJmwuY2xvbmUoaSxyKSxrPHMueSYmbC5jbG9uZShpLHMpLGs+YS55JiZsLmNsb25lKGksYSkseTxvLnomJmwuY2xvbmUoaSxvKSx5PmgueiYmbC5jbG9uZShpLGgpfWxldCBmPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KHIsbixKcykpLEU9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoYSxzLEpzKSksXz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChoLG8sSnMpKSxSPW4sST1yLEM9ZjtFPkMmJihDPUUsUj1zLEk9YSksXz5DJiYoQz1fLFI9byxJPWgpO2xldCBOPWhUO04ueD0oUi54K0kueCkqLjUsTi55PShSLnkrSS55KSouNSxOLno9KFIueitJLnopKi41O2xldCBUPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEksTixKcykpLGI9TWF0aC5zcXJ0KFQpLEY9Y1Q7Ri54PW4ueCxGLnk9cy55LEYuej1vLno7bGV0IEI9bFQ7Qi54PXIueCxCLnk9YS55LEIuej1oLno7bGV0IFU9bC5taWRwb2ludChGLEIsZFQpLFE9MDtmb3IoZD0wO2Q8QTtkKyspe2wuY2xvbmUodFtkXSxpKTtsZXQgTT1sLm1hZ25pdHVkZShsLnN1YnRyYWN0KGksVSxKcykpO00+USYmKFE9TSk7bGV0IGs9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoaSxOLEpzKSk7aWYoaz5UKXtsZXQgeT1NYXRoLnNxcnQoayk7Yj0oYit5KSouNSxUPWIqYjtsZXQgYz15LWI7Ti54PShiKk4ueCtjKmkueCkveSxOLnk9KGIqTi55K2MqaS55KS95LE4uej0oYipOLnorYyppLnopL3l9fXJldHVybiBiPFE/KGwuY2xvbmUoTixlLmNlbnRlciksZS5yYWRpdXM9Yik6KGwuY2xvbmUoVSxlLmNlbnRlciksZS5yYWRpdXM9USksZX07Vjc9bmV3IFNzLFM3PW5ldyBsLE83PW5ldyBsLHRUPW5ldyB1dCxlVD1uZXcgdXQ7TGUuZnJvbVJlY3RhbmdsZTJEPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gTGUuZnJvbVJlY3RhbmdsZVdpdGhIZWlnaHRzMkQodCxlLDAsMCxpKX07TGUuZnJvbVJlY3RhbmdsZVdpdGhIZWlnaHRzMkQ9ZnVuY3Rpb24odCxlLGksbixzKXtpZihtKHMpfHwocz1uZXcgTGUpLCFtKHQpKXJldHVybiBzLmNlbnRlcj1sLmNsb25lKGwuWkVSTyxzLmNlbnRlcikscy5yYWRpdXM9MCxzO2U9WihlLFY3KSxYdC5zb3V0aHdlc3QodCx0VCksdFQuaGVpZ2h0PWksWHQubm9ydGhlYXN0KHQsZVQpLGVULmhlaWdodD1uO2xldCBvPWUucHJvamVjdCh0VCxTNykscj1lLnByb2plY3QoZVQsTzcpLGE9ci54LW8ueCxoPXIueS1vLnksQT1yLnotby56O3MucmFkaXVzPU1hdGguc3FydChhKmEraCpoK0EqQSkqLjU7bGV0IGQ9cy5jZW50ZXI7cmV0dXJuIGQueD1vLngrYSouNSxkLnk9by55K2gqLjUsZC56PW8ueitBKi41LHN9O0I3PVtdO0xlLmZyb21SZWN0YW5nbGUzRD1mdW5jdGlvbih0LGUsaSxuKXtpZihlPVooZSxvdC5XR1M4NCksaT1aKGksMCksbShuKXx8KG49bmV3IExlKSwhbSh0KSlyZXR1cm4gbi5jZW50ZXI9bC5jbG9uZShsLlpFUk8sbi5jZW50ZXIpLG4ucmFkaXVzPTAsbjtsZXQgcz1YdC5zdWJzYW1wbGUodCxlLGksQjcpO3JldHVybiBMZS5mcm9tUG9pbnRzKHMsbil9O0xlLmZyb21WZXJ0aWNlcz1mdW5jdGlvbih0LGUsaSxuKXtpZihtKG4pfHwobj1uZXcgTGUpLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIG4uY2VudGVyPWwuY2xvbmUobC5aRVJPLG4uY2VudGVyKSxuLnJhZGl1cz0wLG47ZT1aKGUsbC5aRVJPKSxpPVooaSwzKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygic3RyaWRlIixpLDMpO2xldCBzPUFUO3MueD10WzBdK2UueCxzLnk9dFsxXStlLnkscy56PXRbMl0rZS56O2xldCBvPWwuY2xvbmUocyxpVCkscj1sLmNsb25lKHMsblQpLGE9bC5jbG9uZShzLHNUKSxoPWwuY2xvbmUocyxvVCksQT1sLmNsb25lKHMsclQpLGQ9bC5jbG9uZShzLGFUKSxmPXQubGVuZ3RoLEU7Zm9yKEU9MDtFPGY7RSs9aSl7bGV0IHk9dFtFXStlLngsYz10W0UrMV0rZS55LGc9dFtFKzJdK2UuejtzLng9eSxzLnk9YyxzLno9Zyx5PG8ueCYmbC5jbG9uZShzLG8pLHk+aC54JiZsLmNsb25lKHMsaCksYzxyLnkmJmwuY2xvbmUocyxyKSxjPkEueSYmbC5jbG9uZShzLEEpLGc8YS56JiZsLmNsb25lKHMsYSksZz5kLnomJmwuY2xvbmUocyxkKX1sZXQgXz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChoLG8sSnMpKSxSPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEEscixKcykpLEk9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoZCxhLEpzKSksQz1vLE49aCxUPV87Uj5UJiYoVD1SLEM9cixOPUEpLEk+VCYmKFQ9SSxDPWEsTj1kKTtsZXQgYj1oVDtiLng9KEMueCtOLngpKi41LGIueT0oQy55K04ueSkqLjUsYi56PShDLnorTi56KSouNTtsZXQgRj1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChOLGIsSnMpKSxCPU1hdGguc3FydChGKSxVPWNUO1UueD1vLngsVS55PXIueSxVLno9YS56O2xldCBRPWxUO1EueD1oLngsUS55PUEueSxRLno9ZC56O2xldCBNPWwubWlkcG9pbnQoVSxRLGRUKSxrPTA7Zm9yKEU9MDtFPGY7RSs9aSl7cy54PXRbRV0rZS54LHMueT10W0UrMV0rZS55LHMuej10W0UrMl0rZS56O2xldCB5PWwubWFnbml0dWRlKGwuc3VidHJhY3QocyxNLEpzKSk7eT5rJiYoaz15KTtsZXQgYz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChzLGIsSnMpKTtpZihjPkYpe2xldCBnPU1hdGguc3FydChjKTtCPShCK2cpKi41LEY9QipCO2xldCBPPWctQjtiLng9KEIqYi54K08qcy54KS9nLGIueT0oQipiLnkrTypzLnkpL2csYi56PShCKmIueitPKnMueikvZ319cmV0dXJuIEI8az8obC5jbG9uZShiLG4uY2VudGVyKSxuLnJhZGl1cz1CKToobC5jbG9uZShNLG4uY2VudGVyKSxuLnJhZGl1cz1rKSxufTtMZS5mcm9tRW5jb2RlZENhcnRlc2lhblZlcnRpY2VzPWZ1bmN0aW9uKHQsZSxpKXtpZihtKGkpfHwoaT1uZXcgTGUpLCFtKHQpfHwhbShlKXx8dC5sZW5ndGghPT1lLmxlbmd0aHx8dC5sZW5ndGg9PT0wKXJldHVybiBpLmNlbnRlcj1sLmNsb25lKGwuWkVSTyxpLmNlbnRlciksaS5yYWRpdXM9MCxpO2xldCBuPUFUO24ueD10WzBdK2VbMF0sbi55PXRbMV0rZVsxXSxuLno9dFsyXStlWzJdO2xldCBzPWwuY2xvbmUobixpVCksbz1sLmNsb25lKG4sblQpLHI9bC5jbG9uZShuLHNUKSxhPWwuY2xvbmUobixvVCksaD1sLmNsb25lKG4sclQpLEE9bC5jbG9uZShuLGFUKSxkPXQubGVuZ3RoLGY7Zm9yKGY9MDtmPGQ7Zis9Myl7bGV0IGs9dFtmXStlW2ZdLHk9dFtmKzFdK2VbZisxXSxjPXRbZisyXStlW2YrMl07bi54PWssbi55PXksbi56PWMsazxzLngmJmwuY2xvbmUobixzKSxrPmEueCYmbC5jbG9uZShuLGEpLHk8by55JiZsLmNsb25lKG4sbykseT5oLnkmJmwuY2xvbmUobixoKSxjPHIueiYmbC5jbG9uZShuLHIpLGM+QS56JiZsLmNsb25lKG4sQSl9bGV0IEU9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoYSxzLEpzKSksXz1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChoLG8sSnMpKSxSPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEEscixKcykpLEk9cyxDPWEsTj1FO18+TiYmKE49XyxJPW8sQz1oKSxSPk4mJihOPVIsST1yLEM9QSk7bGV0IFQ9aFQ7VC54PShJLngrQy54KSouNSxULnk9KEkueStDLnkpKi41LFQuej0oSS56K0MueikqLjU7bGV0IGI9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoQyxULEpzKSksRj1NYXRoLnNxcnQoYiksQj1jVDtCLng9cy54LEIueT1vLnksQi56PXIuejtsZXQgVT1sVDtVLng9YS54LFUueT1oLnksVS56PUEuejtsZXQgUT1sLm1pZHBvaW50KEIsVSxkVCksTT0wO2ZvcihmPTA7ZjxkO2YrPTMpe24ueD10W2ZdK2VbZl0sbi55PXRbZisxXStlW2YrMV0sbi56PXRbZisyXStlW2YrMl07bGV0IGs9bC5tYWduaXR1ZGUobC5zdWJ0cmFjdChuLFEsSnMpKTtrPk0mJihNPWspO2xldCB5PWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KG4sVCxKcykpO2lmKHk+Yil7bGV0IGM9TWF0aC5zcXJ0KHkpO0Y9KEYrYykqLjUsYj1GKkY7bGV0IGc9Yy1GO1QueD0oRipULngrZypuLngpL2MsVC55PShGKlQueStnKm4ueSkvYyxULno9KEYqVC56K2cqbi56KS9jfX1yZXR1cm4gRjxNPyhsLmNsb25lKFQsaS5jZW50ZXIpLGkucmFkaXVzPUYpOihsLmNsb25lKFEsaS5jZW50ZXIpLGkucmFkaXVzPU0pLGl9O0xlLmZyb21Db3JuZXJQb2ludHM9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgiY29ybmVyIix0KSxwLnR5cGVPZi5vYmplY3QoIm9wcG9zaXRlQ29ybmVyIixlKSxtKGkpfHwoaT1uZXcgTGUpO2xldCBuPWwubWlkcG9pbnQodCxlLGkuY2VudGVyKTtyZXR1cm4gaS5yYWRpdXM9bC5kaXN0YW5jZShuLGUpLGl9O0xlLmZyb21FbGxpcHNvaWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJlbGxpcHNvaWQiLHQpLG0oZSl8fChlPW5ldyBMZSksbC5jbG9uZShsLlpFUk8sZS5jZW50ZXIpLGUucmFkaXVzPXQubWF4aW11bVJhZGl1cyxlfTtHNz1uZXcgbDtMZS5mcm9tQm91bmRpbmdTcGhlcmVzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IExlKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLmNlbnRlcj1sLmNsb25lKGwuWkVSTyxlLmNlbnRlciksZS5yYWRpdXM9MCxlO2xldCBpPXQubGVuZ3RoO2lmKGk9PT0xKXJldHVybiBMZS5jbG9uZSh0WzBdLGUpO2lmKGk9PT0yKXJldHVybiBMZS51bmlvbih0WzBdLHRbMV0sZSk7bGV0IG49W10scztmb3Iocz0wO3M8aTtzKyspbi5wdXNoKHRbc10uY2VudGVyKTtlPUxlLmZyb21Qb2ludHMobixlKTtsZXQgbz1lLmNlbnRlcixyPWUucmFkaXVzO2ZvcihzPTA7czxpO3MrKyl7bGV0IGE9dFtzXTtyPU1hdGgubWF4KHIsbC5kaXN0YW5jZShvLGEuY2VudGVyLEc3KSthLnJhZGl1cyl9cmV0dXJuIGUucmFkaXVzPXIsZX07Vzc9bmV3IGwsRDc9bmV3IGwsVTc9bmV3IGw7TGUuZnJvbU9yaWVudGVkQm91bmRpbmdCb3g9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoIm9yaWVudGVkQm91bmRpbmdCb3giLHQpLG0oZSl8fChlPW5ldyBMZSk7bGV0IGk9dC5oYWxmQXhlcyxuPWx0LmdldENvbHVtbihpLDAsVzcpLHM9bHQuZ2V0Q29sdW1uKGksMSxENyksbz1sdC5nZXRDb2x1bW4oaSwyLFU3KTtyZXR1cm4gbC5hZGQobixzLG4pLGwuYWRkKG4sbyxuKSxlLmNlbnRlcj1sLmNsb25lKHQuY2VudGVyLGUuY2VudGVyKSxlLnJhZGl1cz1sLm1hZ25pdHVkZShuKSxlfTtNNz1uZXcgbCxRNz1uZXcgbDtMZS5mcm9tVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybWF0aW9uIix0KSxtKGUpfHwoZT1uZXcgTGUpO2xldCBpPWF0LmdldFRyYW5zbGF0aW9uKHQsTTcpLG49YXQuZ2V0U2NhbGUodCxRNykscz0uNSpsLm1hZ25pdHVkZShuKTtyZXR1cm4gZS5jZW50ZXI9bC5jbG9uZShpLGUuY2VudGVyKSxlLnJhZGl1cz1zLGV9O0xlLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5jZW50ZXI9bC5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksZS5yYWRpdXM9dC5yYWRpdXMsZSk6bmV3IExlKHQuY2VudGVyLHQucmFkaXVzKX07TGUucGFja2VkTGVuZ3RoPTQ7TGUucGFjaz1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCk7bGV0IG49dC5jZW50ZXI7cmV0dXJuIGVbaSsrXT1uLngsZVtpKytdPW4ueSxlW2krK109bi56LGVbaV09dC5yYWRpdXMsZX07TGUudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgTGUpO2xldCBuPWkuY2VudGVyO3JldHVybiBuLng9dFtlKytdLG4ueT10W2UrK10sbi56PXRbZSsrXSxpLnJhZGl1cz10W2VdLGl9O2s3PW5ldyBsLEw3PW5ldyBsO0xlLnVuaW9uPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLG0oaSl8fChpPW5ldyBMZSk7bGV0IG49dC5jZW50ZXIscz10LnJhZGl1cyxvPWUuY2VudGVyLHI9ZS5yYWRpdXMsYT1sLnN1YnRyYWN0KG8sbixrNyksaD1sLm1hZ25pdHVkZShhKTtpZihzPj1oK3IpcmV0dXJuIHQuY2xvbmUoaSksaTtpZihyPj1oK3MpcmV0dXJuIGUuY2xvbmUoaSksaTtsZXQgQT0ocytoK3IpKi41LGQ9bC5tdWx0aXBseUJ5U2NhbGFyKGEsKC1zK0EpL2gsTDcpO3JldHVybiBsLmFkZChkLG4sZCksbC5jbG9uZShkLGkuY2VudGVyKSxpLnJhZGl1cz1BLGl9O3k3PW5ldyBsO0xlLmV4cGFuZD1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHAudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLGk9TGUuY2xvbmUodCxpKTtsZXQgbj1sLm1hZ25pdHVkZShsLnN1YnRyYWN0KGUsaS5jZW50ZXIseTcpKTtyZXR1cm4gbj5pLnJhZGl1cyYmKGkucmFkaXVzPW4pLGl9O0xlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHAudHlwZU9mLm9iamVjdCgicGxhbmUiLGUpO2xldCBpPXQuY2VudGVyLG49dC5yYWRpdXMscz1lLm5vcm1hbCxvPWwuZG90KHMsaSkrZS5kaXN0YW5jZTtyZXR1cm4gbzwtbj9Obi5PVVRTSURFOm88bj9Obi5JTlRFUlNFQ1RJTkc6Tm4uSU5TSURFfTtMZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkscC50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0oaSl8fChpPW5ldyBMZSksaS5jZW50ZXI9YXQubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsaS5jZW50ZXIpLGkucmFkaXVzPWF0LmdldE1heGltdW1TY2FsZShlKSp0LnJhZGl1cyxpfTt3Nz1uZXcgbDtMZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgic3BoZXJlIix0KSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsZSk7bGV0IGk9bC5zdWJ0cmFjdCh0LmNlbnRlcixlLHc3KSxuPWwubWFnbml0dWRlKGkpLXQucmFkaXVzO3JldHVybiBuPD0wPzA6bipufTtMZS50cmFuc2Zvcm1XaXRob3V0U2NhbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkscC50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0oaSl8fChpPW5ldyBMZSksaS5jZW50ZXI9YXQubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsaS5jZW50ZXIpLGkucmFkaXVzPXQucmFkaXVzLGl9O3g3PW5ldyBsO0xlLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkscC50eXBlT2Yub2JqZWN0KCJwb3NpdGlvbiIsZSkscC50eXBlT2Yub2JqZWN0KCJkaXJlY3Rpb24iLGkpLG0obil8fChuPW5ldyBjQSk7bGV0IHM9bC5zdWJ0cmFjdCh0LmNlbnRlcixlLHg3KSxvPWwuZG90KGkscyk7cmV0dXJuIG4uc3RhcnQ9by10LnJhZGl1cyxuLnN0b3A9byt0LnJhZGl1cyxufTtKVz1uZXcgbCxQNz1uZXcgbCxKNz1uZXcgbCxqNz1uZXcgbCxINz1uZXcgbCx2Nz1uZXcgdXQsalc9bmV3IEFycmF5KDgpO2ZvcihsZXQgdD0wO3Q8ODsrK3QpaldbdF09bmV3IGw7ejc9bmV3IFNzO0xlLnByb2plY3RUbzJEPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCksZT1aKGUsejcpO2xldCBuPWUuZWxsaXBzb2lkLHM9dC5jZW50ZXIsbz10LnJhZGl1cyxyO2wuZXF1YWxzKHMsbC5aRVJPKT9yPWwuY2xvbmUobC5VTklUX1gsSlcpOnI9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwocyxKVyk7bGV0IGE9bC5jcm9zcyhsLlVOSVRfWixyLFA3KTtsLm5vcm1hbGl6ZShhLGEpO2xldCBoPWwuY3Jvc3MocixhLEo3KTtsLm5vcm1hbGl6ZShoLGgpLGwubXVsdGlwbHlCeVNjYWxhcihyLG8sciksbC5tdWx0aXBseUJ5U2NhbGFyKGgsbyxoKSxsLm11bHRpcGx5QnlTY2FsYXIoYSxvLGEpO2xldCBBPWwubmVnYXRlKGgsSDcpLGQ9bC5uZWdhdGUoYSxqNyksZj1qVyxFPWZbMF07bC5hZGQocixoLEUpLGwuYWRkKEUsYSxFKSxFPWZbMV0sbC5hZGQocixoLEUpLGwuYWRkKEUsZCxFKSxFPWZbMl0sbC5hZGQocixBLEUpLGwuYWRkKEUsZCxFKSxFPWZbM10sbC5hZGQocixBLEUpLGwuYWRkKEUsYSxFKSxsLm5lZ2F0ZShyLHIpLEU9Zls0XSxsLmFkZChyLGgsRSksbC5hZGQoRSxhLEUpLEU9Zls1XSxsLmFkZChyLGgsRSksbC5hZGQoRSxkLEUpLEU9Zls2XSxsLmFkZChyLEEsRSksbC5hZGQoRSxkLEUpLEU9Zls3XSxsLmFkZChyLEEsRSksbC5hZGQoRSxhLEUpO2xldCBfPWYubGVuZ3RoO2ZvcihsZXQgTj0wO048XzsrK04pe2xldCBUPWZbTl07bC5hZGQocyxULFQpO2xldCBiPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoVCx2Nyk7ZS5wcm9qZWN0KGIsVCl9aT1MZS5mcm9tUG9pbnRzKGYsaSkscz1pLmNlbnRlcjtsZXQgUj1zLngsST1zLnksQz1zLno7cmV0dXJuIHMueD1DLHMueT1SLHMuej1JLGl9O0xlLmlzT2NjbHVkZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHAudHlwZU9mLm9iamVjdCgib2NjbHVkZXIiLGUpLCFlLmlzQm91bmRpbmdTcGhlcmVWaXNpYmxlKHQpfTtMZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJmwuZXF1YWxzKHQuY2VudGVyLGUuY2VudGVyKSYmdC5yYWRpdXM9PT1lLnJhZGl1c307TGUucHJvdG90eXBlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBMZS5pbnRlcnNlY3RQbGFuZSh0aGlzLHQpfTtMZS5wcm90b3R5cGUuZGlzdGFuY2VTcXVhcmVkVG89ZnVuY3Rpb24odCl7cmV0dXJuIExlLmRpc3RhbmNlU3F1YXJlZFRvKHRoaXMsdCl9O0xlLnByb3RvdHlwZS5jb21wdXRlUGxhbmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBMZS5jb21wdXRlUGxhbmVEaXN0YW5jZXModGhpcyx0LGUsaSl9O0xlLnByb3RvdHlwZS5pc09jY2x1ZGVkPWZ1bmN0aW9uKHQpe3JldHVybiBMZS5pc09jY2x1ZGVkKHRoaXMsdCl9O0xlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIExlLmVxdWFscyh0aGlzLHQpfTtMZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIExlLmNsb25lKHRoaXMsdCl9O0xlLnByb3RvdHlwZS52b2x1bWU9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnJhZGl1cztyZXR1cm4gWTcqdCp0KnR9O050PUxlfSk7ZnVuY3Rpb24gbEEodCxlKXtwLnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCksdGhpcy5fZWxsaXBzb2lkPXQsdGhpcy5fY2FtZXJhUG9zaXRpb249bmV3IGwsdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlPW5ldyBsLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQ9MCxtKGUpJiYodGhpcy5jYW1lcmFQb3NpdGlvbj1lKX1mdW5jdGlvbiB6Vyh0LGUsaSl7aWYobShlKSYmZTwwJiZ0Lm1pbmltdW1SYWRpdXM+LWUpe2xldCBuPWwuZnJvbUVsZW1lbnRzKHQucmFkaWkueCtlLHQucmFkaWkueStlLHQucmFkaWkueitlLHE3KTt0PW90LmZyb21DYXJ0ZXNpYW4zKG4saSl9cmV0dXJuIHR9ZnVuY3Rpb24gS1codCxlLGksbil7cC50eXBlT2Yub2JqZWN0KCJkaXJlY3Rpb25Ub1BvaW50IixlKSxwLmRlZmluZWQoInBvc2l0aW9ucyIsaSksbShuKXx8KG49bmV3IGwpO2xldCBzPXREKHQsZSksbz0wO2ZvcihsZXQgcj0wLGE9aS5sZW5ndGg7cjxhOysrcil7bGV0IGg9aVtyXSxBPXFXKHQsaCxzKTtpZihBPDApcmV0dXJuO289TWF0aC5tYXgobyxBKX1yZXR1cm4gJFcocyxvLG4pfWZ1bmN0aW9uIFhXKHQsZSxpLG4scyxvKXtwLnR5cGVPZi5vYmplY3QoImRpcmVjdGlvblRvUG9pbnQiLGUpLHAuZGVmaW5lZCgidmVydGljZXMiLGkpLHAudHlwZU9mLm51bWJlcigic3RyaWRlIixuKSxtKG8pfHwobz1uZXcgbCksbj1aKG4sMykscz1aKHMsbC5aRVJPKTtsZXQgcj10RCh0LGUpLGE9MDtmb3IobGV0IGg9MCxBPWkubGVuZ3RoO2g8QTtoKz1uKXt2Wi54PWlbaF0rcy54LHZaLnk9aVtoKzFdK3MueSx2Wi56PWlbaCsyXStzLno7bGV0IGQ9cVcodCx2WixyKTtpZihkPDApcmV0dXJuO2E9TWF0aC5tYXgoYSxkKX1yZXR1cm4gJFcocixhLG8pfWZ1bmN0aW9uIGZUKHQsZSxpKXtsZXQgbj1lLHM9aSxvPWwuc3VidHJhY3QodCxuLEhXKSxyPS1sLmRvdChvLG4pO3JldHVybiEoczwwP3I+MDpyPnMmJnIqci9sLm1hZ25pdHVkZVNxdWFyZWQobyk+cyl9ZnVuY3Rpb24gcVcodCxlLGkpe2xldCBuPXQudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlKGUsJDcpLHM9bC5tYWduaXR1ZGVTcXVhcmVkKG4pLG89TWF0aC5zcXJ0KHMpLHI9bC5kaXZpZGVCeVNjYWxhcihuLG8sdCQpO3M9TWF0aC5tYXgoMSxzKSxvPU1hdGgubWF4KDEsbyk7bGV0IGE9bC5kb3QocixpKSxoPWwubWFnbml0dWRlKGwuY3Jvc3MocixpLHIpKSxBPTEvbyxkPU1hdGguc3FydChzLTEpKkE7cmV0dXJuIDEvKGEqQS1oKmQpfWZ1bmN0aW9uICRXKHQsZSxpKXtpZighKGU8PTB8fGU9PT0xLzB8fGUhPT1lKSlyZXR1cm4gbC5tdWx0aXBseUJ5U2NhbGFyKHQsZSxpKX1mdW5jdGlvbiB0RCh0LGUpe3JldHVybiBsLmVxdWFscyhlLGwuWkVSTyk/ZToodC50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UoZSxtVCksbC5ub3JtYWxpemUobVQsbVQpKX12YXIgSFcsSzcsdlcsWDcscTcsdlosJDcsdCQsbVQsZEEsVm09UygoKT0+e19pKCk7SHQoKTthZSgpO0Z0KCk7bXQoKTtPZSgpO3BuKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobEEucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxjYW1lcmFQb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbWVyYVBvc2l0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7bGV0IGk9dGhpcy5fZWxsaXBzb2lkLnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZSh0LHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5TY2FsZWRTcGFjZSksbj1sLm1hZ25pdHVkZVNxdWFyZWQoaSktMTtsLmNsb25lKHQsdGhpcy5fY2FtZXJhUG9zaXRpb24pLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5TY2FsZWRTcGFjZT1pLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQ9bn19fSk7SFc9bmV3IGw7bEEucHJvdG90eXBlLmlzUG9pbnRWaXNpYmxlPWZ1bmN0aW9uKHQpe2xldCBpPXRoaXMuX2VsbGlwc29pZC50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UodCxIVyk7cmV0dXJuIGZUKGksdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQpfTtsQS5wcm90b3R5cGUuaXNTY2FsZWRTcGFjZVBvaW50VmlzaWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gZlQodCx0aGlzLl9jYW1lcmFQb3NpdGlvbkluU2NhbGVkU3BhY2UsdGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZCl9O0s3PW5ldyBsO2xBLnByb3RvdHlwZS5pc1NjYWxlZFNwYWNlUG9pbnRWaXNpYmxlUG9zc2libHlVbmRlckVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2xldCBpPXRoaXMuX2VsbGlwc29pZCxuLHM7cmV0dXJuIG0oZSkmJmU8MCYmaS5taW5pbXVtUmFkaXVzPi1lPyhzPUs3LHMueD10aGlzLl9jYW1lcmFQb3NpdGlvbi54LyhpLnJhZGlpLngrZSkscy55PXRoaXMuX2NhbWVyYVBvc2l0aW9uLnkvKGkucmFkaWkueStlKSxzLno9dGhpcy5fY2FtZXJhUG9zaXRpb24uei8oaS5yYWRpaS56K2UpLG49cy54KnMueCtzLnkqcy55K3MueipzLnotMSk6KHM9dGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlLG49dGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZCksZlQodCxzLG4pfTtsQS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBLVyh0aGlzLl9lbGxpcHNvaWQsdCxlLGkpfTt2Vz1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSk7bEEucHJvdG90eXBlLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZD1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz16Vyh0aGlzLl9lbGxpcHNvaWQsaSx2Vyk7cmV0dXJuIEtXKHMsdCxlLG4pfTtsQS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tVmVydGljZXM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gWFcodGhpcy5fZWxsaXBzb2lkLHQsZSxpLG4scyl9O2xBLnByb3RvdHlwZS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe2xldCByPXpXKHRoaXMuX2VsbGlwc29pZCxzLHZXKTtyZXR1cm4gWFcocix0LGUsaSxuLG8pfTtYNz1bXTtsQS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCk7bGV0IG49WHQuc3Vic2FtcGxlKHQsZSwwLFg3KSxzPU50LmZyb21Qb2ludHMobik7aWYoIShsLm1hZ25pdHVkZShzLmNlbnRlcik8LjEqZS5taW5pbXVtUmFkaXVzKSlyZXR1cm4gdGhpcy5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludChzLmNlbnRlcixuLGkpfTtxNz1uZXcgbDt2Wj1uZXcgbDskNz1uZXcgbCx0JD1uZXcgbDttVD1uZXcgbDtkQT1sQX0pO2Z1bmN0aW9uIEVUKHQsZSxpKXtyZXR1cm4gaTwwJiYoaSs9MSksaT4xJiYoaS09MSksaSo2PDE/dCsoZS10KSo2Kmk6aSoyPDE/ZTppKjM8Mj90KyhlLXQpKigyLzMtaSkqNjp0fWZ1bmN0aW9uIHEodCxlLGksbil7dGhpcy5yZWQ9Wih0LDEpLHRoaXMuZ3JlZW49WihlLDEpLHRoaXMuYmx1ZT1aKGksMSksdGhpcy5hbHBoYT1aKG4sMSl9dmFyIF9ULFJULGVoLGUkLGkkLG4kLHMkLFp0LFFuPVMoKCk9PnthZSgpO0Z0KCk7bXQoKTtJbCgpO19lKCk7cS5mcm9tQ2FydGVzaWFuND1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksbShlKT8oZS5yZWQ9dC54LGUuZ3JlZW49dC55LGUuYmx1ZT10LnosZS5hbHBoYT10LncsZSk6bmV3IHEodC54LHQueSx0LnosdC53KX07cS5mcm9tQnl0ZXM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gdD1xLmJ5dGVUb0Zsb2F0KFoodCwyNTUpKSxlPXEuYnl0ZVRvRmxvYXQoWihlLDI1NSkpLGk9cS5ieXRlVG9GbG9hdChaKGksMjU1KSksbj1xLmJ5dGVUb0Zsb2F0KFoobiwyNTUpKSxtKHMpPyhzLnJlZD10LHMuZ3JlZW49ZSxzLmJsdWU9aSxzLmFscGhhPW4scyk6bmV3IHEodCxlLGksbil9O3EuZnJvbUFscGhhPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJjb2xvciIsdCkscC50eXBlT2YubnVtYmVyKCJhbHBoYSIsZSksbShpKT8oaS5yZWQ9dC5yZWQsaS5ncmVlbj10LmdyZWVuLGkuYmx1ZT10LmJsdWUsaS5hbHBoYT1lLGkpOm5ldyBxKHQucmVkLHQuZ3JlZW4sdC5ibHVlLGUpfTtfby5zdXBwb3J0c1R5cGVkQXJyYXlzKCkmJihfVD1uZXcgQXJyYXlCdWZmZXIoNCksUlQ9bmV3IFVpbnQzMkFycmF5KF9UKSxlaD1uZXcgVWludDhBcnJheShfVCkpO3EuZnJvbVJnYmE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUlRbMF09dCxxLmZyb21CeXRlcyhlaFswXSxlaFsxXSxlaFsyXSxlaFszXSxlKX07cS5mcm9tSHNsPWZ1bmN0aW9uKHQsZSxpLG4scyl7dD1aKHQsMCklMSxlPVooZSwwKSxpPVooaSwwKSxuPVoobiwxKTtsZXQgbz1pLHI9aSxhPWk7aWYoZSE9PTApe2xldCBoO2k8LjU/aD1pKigxK2UpOmg9aStlLWkqZTtsZXQgQT0yKmktaDtvPUVUKEEsaCx0KzEvMykscj1FVChBLGgsdCksYT1FVChBLGgsdC0xLzMpfXJldHVybiBtKHMpPyhzLnJlZD1vLHMuZ3JlZW49cixzLmJsdWU9YSxzLmFscGhhPW4scyk6bmV3IHEobyxyLGEsbil9O3EuZnJvbVJhbmRvbT1mdW5jdGlvbih0LGUpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgaT10LnJlZDtpZighbShpKSl7bGV0IHI9Wih0Lm1pbmltdW1SZWQsMCksYT1aKHQubWF4aW11bVJlZCwxKTtwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibWluaW11bVJlZCIscixhKSxpPXIrTC5uZXh0UmFuZG9tTnVtYmVyKCkqKGEtcil9bGV0IG49dC5ncmVlbjtpZighbShuKSl7bGV0IHI9Wih0Lm1pbmltdW1HcmVlbiwwKSxhPVoodC5tYXhpbXVtR3JlZW4sMSk7cC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIm1pbmltdW1HcmVlbiIscixhKSxuPXIrTC5uZXh0UmFuZG9tTnVtYmVyKCkqKGEtcil9bGV0IHM9dC5ibHVlO2lmKCFtKHMpKXtsZXQgcj1aKHQubWluaW11bUJsdWUsMCksYT1aKHQubWF4aW11bUJsdWUsMSk7cC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIm1pbmltdW1CbHVlIixyLGEpLHM9citMLm5leHRSYW5kb21OdW1iZXIoKSooYS1yKX1sZXQgbz10LmFscGhhO2lmKCFtKG8pKXtsZXQgcj1aKHQubWluaW11bUFscGhhLDApLGE9Wih0Lm1heGltdW1BbHBoYSwxKTtwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibWludW11bUFscGhhIixyLGEpLG89citMLm5leHRSYW5kb21OdW1iZXIoKSooYS1yKX1yZXR1cm4gbShlKT8oZS5yZWQ9aSxlLmdyZWVuPW4sZS5ibHVlPXMsZS5hbHBoYT1vLGUpOm5ldyBxKGksbixzLG8pfTtlJD0vXiMoWzAtOWEtZl0pKFswLTlhLWZdKShbMC05YS1mXSkoWzAtOWEtZl0pPyQvaSxpJD0vXiMoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSkoWzAtOWEtZl17Mn0pPyQvaSxuJD0vXnJnYmE/XHMqXChccyooWzAtOS5dKyU/KVxzKlssXHNdK1xzKihbMC05Ll0rJT8pXHMqWyxcc10rXHMqKFswLTkuXSslPykoPzpccypbLFxzL10rXHMqKFswLTkuXSspKT9ccypcKSQvaSxzJD0vXmhzbGE/XHMqXChccyooWzAtOS5dKylccypbLFxzXStccyooWzAtOS5dKyUpXHMqWyxcc10rXHMqKFswLTkuXSslKSg/OlxzKlssXHMvXStccyooWzAtOS5dKykpP1xzKlwpJC9pO3EuZnJvbUNzc0NvbG9yU3RyaW5nPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yuc3RyaW5nKCJjb2xvciIsdCksbShlKXx8KGU9bmV3IHEpLHQ9dC50cmltKCk7bGV0IGk9cVt0LnRvVXBwZXJDYXNlKCldO2lmKG0oaSkpcmV0dXJuIHEuY2xvbmUoaSxlKSxlO2xldCBuPWUkLmV4ZWModCk7cmV0dXJuIG4hPT1udWxsPyhlLnJlZD1wYXJzZUludChuWzFdLDE2KS8xNSxlLmdyZWVuPXBhcnNlSW50KG5bMl0sMTYpLzE1LGUuYmx1ZT1wYXJzZUludChuWzNdLDE2KS8xNSxlLmFscGhhPXBhcnNlSW50KFoobls0XSwiZiIpLDE2KS8xNSxlKToobj1pJC5leGVjKHQpLG4hPT1udWxsPyhlLnJlZD1wYXJzZUludChuWzFdLDE2KS8yNTUsZS5ncmVlbj1wYXJzZUludChuWzJdLDE2KS8yNTUsZS5ibHVlPXBhcnNlSW50KG5bM10sMTYpLzI1NSxlLmFscGhhPXBhcnNlSW50KFoobls0XSwiZmYiKSwxNikvMjU1LGUpOihuPW4kLmV4ZWModCksbiE9PW51bGw/KGUucmVkPXBhcnNlRmxvYXQoblsxXSkvKG5bMV0uc3Vic3RyKC0xKT09PSIlIj8xMDA6MjU1KSxlLmdyZWVuPXBhcnNlRmxvYXQoblsyXSkvKG5bMl0uc3Vic3RyKC0xKT09PSIlIj8xMDA6MjU1KSxlLmJsdWU9cGFyc2VGbG9hdChuWzNdKS8oblszXS5zdWJzdHIoLTEpPT09IiUiPzEwMDoyNTUpLGUuYWxwaGE9cGFyc2VGbG9hdChaKG5bNF0sIjEuMCIpKSxlKToobj1zJC5leGVjKHQpLG4hPT1udWxsP3EuZnJvbUhzbChwYXJzZUZsb2F0KG5bMV0pLzM2MCxwYXJzZUZsb2F0KG5bMl0pLzEwMCxwYXJzZUZsb2F0KG5bM10pLzEwMCxwYXJzZUZsb2F0KFoobls0XSwiMS4wIikpLGUpOihlPXZvaWQgMCxlKSkpKX07cS5wYWNrZWRMZW5ndGg9NDtxLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dC5yZWQsZVtpKytdPXQuZ3JlZW4sZVtpKytdPXQuYmx1ZSxlW2ldPXQuYWxwaGEsZX07cS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgcSksaS5yZWQ9dFtlKytdLGkuZ3JlZW49dFtlKytdLGkuYmx1ZT10W2UrK10saS5hbHBoYT10W2VdLGl9O3EuYnl0ZVRvRmxvYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQvMjU1fTtxLmZsb2F0VG9CeXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09MT8yNTU6dCoyNTZ8MH07cS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUucmVkPXQucmVkLGUuZ3JlZW49dC5ncmVlbixlLmJsdWU9dC5ibHVlLGUuYWxwaGE9dC5hbHBoYSxlKTpuZXcgcSh0LnJlZCx0LmdyZWVuLHQuYmx1ZSx0LmFscGhhKX07cS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQucmVkPT09ZS5yZWQmJnQuZ3JlZW49PT1lLmdyZWVuJiZ0LmJsdWU9PT1lLmJsdWUmJnQuYWxwaGE9PT1lLmFscGhhfTtxLmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5yZWQ9PT1lW2ldJiZ0LmdyZWVuPT09ZVtpKzFdJiZ0LmJsdWU9PT1lW2krMl0mJnQuYWxwaGE9PT1lW2krM119O3EucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBxLmNsb25lKHRoaXMsdCl9O3EucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gcS5lcXVhbHModGhpcyx0KX07cS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmTWF0aC5hYnModGhpcy5yZWQtdC5yZWQpPD1lJiZNYXRoLmFicyh0aGlzLmdyZWVuLXQuZ3JlZW4pPD1lJiZNYXRoLmFicyh0aGlzLmJsdWUtdC5ibHVlKTw9ZSYmTWF0aC5hYnModGhpcy5hbHBoYS10LmFscGhhKTw9ZX07cS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy5yZWR9LCAke3RoaXMuZ3JlZW59LCAke3RoaXMuYmx1ZX0sICR7dGhpcy5hbHBoYX0pYH07cS5wcm90b3R5cGUudG9Dc3NDb2xvclN0cmluZz1mdW5jdGlvbigpe2xldCB0PXEuZmxvYXRUb0J5dGUodGhpcy5yZWQpLGU9cS5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKSxpPXEuZmxvYXRUb0J5dGUodGhpcy5ibHVlKTtyZXR1cm4gdGhpcy5hbHBoYT09PTE/YHJnYigke3R9LCR7ZX0sJHtpfSlgOmByZ2JhKCR7dH0sJHtlfSwke2l9LCR7dGhpcy5hbHBoYX0pYH07cS5wcm90b3R5cGUudG9Dc3NIZXhTdHJpbmc9ZnVuY3Rpb24oKXtsZXQgdD1xLmZsb2F0VG9CeXRlKHRoaXMucmVkKS50b1N0cmluZygxNik7dC5sZW5ndGg8MiYmKHQ9YDAke3R9YCk7bGV0IGU9cS5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKS50b1N0cmluZygxNik7ZS5sZW5ndGg8MiYmKGU9YDAke2V9YCk7bGV0IGk9cS5mbG9hdFRvQnl0ZSh0aGlzLmJsdWUpLnRvU3RyaW5nKDE2KTtpZihpLmxlbmd0aDwyJiYoaT1gMCR7aX1gKSx0aGlzLmFscGhhPDEpe2xldCBuPXEuZmxvYXRUb0J5dGUodGhpcy5hbHBoYSkudG9TdHJpbmcoMTYpO3JldHVybiBuLmxlbmd0aDwyJiYobj1gMCR7bn1gKSxgIyR7dH0ke2V9JHtpfSR7bn1gfXJldHVybmAjJHt0fSR7ZX0ke2l9YH07cS5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbih0KXtsZXQgZT1xLmZsb2F0VG9CeXRlKHRoaXMucmVkKSxpPXEuZmxvYXRUb0J5dGUodGhpcy5ncmVlbiksbj1xLmZsb2F0VG9CeXRlKHRoaXMuYmx1ZSkscz1xLmZsb2F0VG9CeXRlKHRoaXMuYWxwaGEpO3JldHVybiBtKHQpPyh0WzBdPWUsdFsxXT1pLHRbMl09bix0WzNdPXMsdCk6W2UsaSxuLHNdfTtxLnByb3RvdHlwZS50b1JnYmE9ZnVuY3Rpb24oKXtyZXR1cm4gZWhbMF09cS5mbG9hdFRvQnl0ZSh0aGlzLnJlZCksZWhbMV09cS5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKSxlaFsyXT1xLmZsb2F0VG9CeXRlKHRoaXMuYmx1ZSksZWhbM109cS5mbG9hdFRvQnl0ZSh0aGlzLmFscGhhKSxSVFswXX07cS5wcm90b3R5cGUuYnJpZ2h0ZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJtYWduaXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJtYWduaXR1ZGUiLHQsMCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLHQ9MS10LGUucmVkPTEtKDEtdGhpcy5yZWQpKnQsZS5ncmVlbj0xLSgxLXRoaXMuZ3JlZW4pKnQsZS5ibHVlPTEtKDEtdGhpcy5ibHVlKSp0LGUuYWxwaGE9dGhpcy5hbHBoYSxlfTtxLnByb3RvdHlwZS5kYXJrZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2YubnVtYmVyKCJtYWduaXR1ZGUiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJtYWduaXR1ZGUiLHQsMCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLHQ9MS10LGUucmVkPXRoaXMucmVkKnQsZS5ncmVlbj10aGlzLmdyZWVuKnQsZS5ibHVlPXRoaXMuYmx1ZSp0LGUuYWxwaGE9dGhpcy5hbHBoYSxlfTtxLnByb3RvdHlwZS53aXRoQWxwaGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcS5mcm9tQWxwaGEodGhpcyx0LGUpfTtxLmFkZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkK2UucmVkLGkuZ3JlZW49dC5ncmVlbitlLmdyZWVuLGkuYmx1ZT10LmJsdWUrZS5ibHVlLGkuYWxwaGE9dC5hbHBoYStlLmFscGhhLGl9O3Euc3VidHJhY3Q9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLnJlZD10LnJlZC1lLnJlZCxpLmdyZWVuPXQuZ3JlZW4tZS5ncmVlbixpLmJsdWU9dC5ibHVlLWUuYmx1ZSxpLmFscGhhPXQuYWxwaGEtZS5hbHBoYSxpfTtxLm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaS5yZWQ9dC5yZWQqZS5yZWQsaS5ncmVlbj10LmdyZWVuKmUuZ3JlZW4saS5ibHVlPXQuYmx1ZSplLmJsdWUsaS5hbHBoYT10LmFscGhhKmUuYWxwaGEsaX07cS5kaXZpZGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpLnJlZD10LnJlZC9lLnJlZCxpLmdyZWVuPXQuZ3JlZW4vZS5ncmVlbixpLmJsdWU9dC5ibHVlL2UuYmx1ZSxpLmFscGhhPXQuYWxwaGEvZS5hbHBoYSxpfTtxLm1vZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibGVmdCIsdCkscC50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkJWUucmVkLGkuZ3JlZW49dC5ncmVlbiVlLmdyZWVuLGkuYmx1ZT10LmJsdWUlZS5ibHVlLGkuYWxwaGE9dC5hbHBoYSVlLmFscGhhLGl9O3EubGVycD1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkscC50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHAudHlwZU9mLm51bWJlcigidCIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ucmVkPUwubGVycCh0LnJlZCxlLnJlZCxpKSxuLmdyZWVuPUwubGVycCh0LmdyZWVuLGUuZ3JlZW4saSksbi5ibHVlPUwubGVycCh0LmJsdWUsZS5ibHVlLGkpLG4uYWxwaGE9TC5sZXJwKHQuYWxwaGEsZS5hbHBoYSxpKSxufTtxLm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNvbG9yIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkKmUsaS5ncmVlbj10LmdyZWVuKmUsaS5ibHVlPXQuYmx1ZSplLGkuYWxwaGE9dC5hbHBoYSplLGl9O3EuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImNvbG9yIix0KSxwLnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGkucmVkPXQucmVkL2UsaS5ncmVlbj10LmdyZWVuL2UsaS5ibHVlPXQuYmx1ZS9lLGkuYWxwaGE9dC5hbHBoYS9lLGl9O3EuQUxJQ0VCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEY4RkYiKSk7cS5BTlRJUVVFV0hJVEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZBRUJENyIpKTtxLkFRVUE9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwRkZGRiIpKTtxLkFRVUFNQVJJTkU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzdGRkZENCIpKTtxLkFaVVJFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEZGRkYiKSk7cS5CRUlHRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjVGNURDIikpO3EuQklTUVVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkU0QzQiKSk7cS5CTEFDSz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMDAwIikpO3EuQkxBTkNIRURBTE1PTkQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRUJDRCIpKTtxLkJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwMDBGRiIpKTtxLkJMVUVWSU9MRVQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzhBMkJFMiIpKTtxLkJST1dOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBNTJBMkEiKSk7cS5CVVJMWVdPT0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0RFQjg4NyIpKTtxLkNBREVUQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNUY5RUEwIikpO3EuQ0hBUlRSRVVTRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0ZGRjAwIikpO3EuQ0hPQ09MQVRFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEMjY5MUUiKSk7cS5DT1JBTD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY3RjUwIikpO3EuQ09STkZMT1dFUkJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzY0OTVFRCIpKTtxLkNPUk5TSUxLPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkY4REMiKSk7cS5DUklNU09OPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEQzE0M0MiKSk7cS5DWUFOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEZGRkYiKSk7cS5EQVJLQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMDhCIikpO3EuREFSS0NZQU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwOEI4QiIpKTtxLkRBUktHT0xERU5ST0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0I4ODYwQiIpKTtxLkRBUktHUkFZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBOUE5QTkiKSk7cS5EQVJLR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwNjQwMCIpKTtxLkRBUktHUkVZPXEuREFSS0dSQVk7cS5EQVJLS0hBS0k9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0JEQjc2QiIpKTtxLkRBUktNQUdFTlRBPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4QjAwOEIiKSk7cS5EQVJLT0xJVkVHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNTU2QjJGIikpO3EuREFSS09SQU5HRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY4QzAwIikpO3EuREFSS09SQ0hJRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTkzMkNDIikpO3EuREFSS1JFRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOEIwMDAwIikpO3EuREFSS1NBTE1PTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRTk5NjdBIikpO3EuREFSS1NFQUdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4RkJDOEYiKSk7cS5EQVJLU0xBVEVCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0ODNEOEIiKSk7cS5EQVJLU0xBVEVHUkFZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyRjRGNEYiKSk7cS5EQVJLU0xBVEVHUkVZPXEuREFSS1NMQVRFR1JBWTtxLkRBUktUVVJRVU9JU0U9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwQ0VEMSIpKTtxLkRBUktWSU9MRVQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzk0MDBEMyIpKTtxLkRFRVBQSU5LPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjE0OTMiKSk7cS5ERUVQU0tZQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBCRkZGIikpO3EuRElNR1JBWT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNjk2OTY5IikpO3EuRElNR1JFWT1xLkRJTUdSQVk7cS5ET0RHRVJCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMxRTkwRkYiKSk7cS5GSVJFQlJJQ0s9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0IyMjIyMiIpKTtxLkZMT1JBTFdISVRFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZBRjAiKSk7cS5GT1JFU1RHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMjI4QjIyIikpO3EuRlVDSFNJQT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkYwMEZGIikpO3EuR0FJTlNCT1JPPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEQ0RDREMiKSk7cS5HSE9TVFdISVRFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGOEY4RkYiKSk7cS5HT0xEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkQ3MDAiKSk7cS5HT0xERU5ST0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0RBQTUyMCIpKTtxLkdSQVk9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzgwODA4MCIpKTtxLkdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDgwMDAiKSk7cS5HUkVFTllFTExPVz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjQURGRjJGIikpO3EuR1JFWT1xLkdSQVk7cS5IT05FWURFVz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjBGRkYwIikpO3EuSE9UUElOSz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY2OUI0IikpO3EuSU5ESUFOUkVEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNDRDVDNUMiKSk7cS5JTkRJR089T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzRCMDA4MiIpKTtxLklWT1JZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGRjAiKSk7cS5LSEFLST1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjBFNjhDIikpO3EuTEFWRU5ERVI9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0U2RTZGQSIpKTtxLkxBVkVOREFSX0JMVVNIPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkYwRjUiKSk7cS5MQVdOR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzdDRkMwMCIpKTtxLkxFTU9OQ0hJRkZPTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGQUNEIikpO3EuTElHSFRCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBREQ4RTYiKSk7cS5MSUdIVENPUkFMPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMDgwODAiKSk7cS5MSUdIVENZQU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0UwRkZGRiIpKTtxLkxJR0hUR09MREVOUk9EWUVMTE9XPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGQUZBRDIiKSk7cS5MSUdIVEdSQVk9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0QzRDNEMyIpKTtxLkxJR0hUR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzkwRUU5MCIpKTtxLkxJR0hUR1JFWT1xLkxJR0hUR1JBWTtxLkxJR0hUUElOSz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZCNkMxIikpO3EuTElHSFRTRUFHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMjBCMkFBIikpO3EuTElHSFRTS1lCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4N0NFRkEiKSk7cS5MSUdIVFNMQVRFR1JBWT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNzc4ODk5IikpO3EuTElHSFRTTEFURUdSRVk9cS5MSUdIVFNMQVRFR1JBWTtxLkxJR0hUU1RFRUxCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNCMEM0REUiKSk7cS5MSUdIVFlFTExPVz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGRkUwIikpO3EuTElNRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGRjAwIikpO3EuTElNRUdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMzMkNEMzIiKSk7cS5MSU5FTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkFGMEU2IikpO3EuTUFHRU5UQT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkYwMEZGIikpO3EuTUFST09OPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4MDAwMDAiKSk7cS5NRURJVU1BUVVBTUFSSU5FPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM2NkNEQUEiKSk7cS5NRURJVU1CTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDAwQ0QiKSk7cS5NRURJVU1PUkNISUQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0JBNTVEMyIpKTtxLk1FRElVTVBVUlBMRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTM3MERCIikpO3EuTUVESVVNU0VBR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzNDQjM3MSIpKTtxLk1FRElVTVNMQVRFQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0I2OEVFIikpO3EuTUVESVVNU1BSSU5HR1JFRU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwRkE5QSIpKTtxLk1FRElVTVRVUlFVT0lTRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNDhEMUNDIikpO3EuTUVESVVNVklPTEVUUkVEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNDNzE1ODUiKSk7cS5NSUROSUdIVEJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzE5MTk3MCIpKTtxLk1JTlRDUkVBTT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjVGRkZBIikpO3EuTUlTVFlST1NFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkU0RTEiKSk7cS5NT0NDQVNJTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZFNEI1IikpO3EuTkFWQUpPV0hJVEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZGREVBRCIpKTtxLk5BVlk9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwMDA4MCIpKTtxLk9MRExBQ0U9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZERjVFNiIpKTtxLk9MSVZFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4MDgwMDAiKSk7cS5PTElWRURSQUI9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzZCOEUyMyIpKTtxLk9SQU5HRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZBNTAwIikpO3EuT1JBTkdFUkVEPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjQ1MDAiKSk7cS5PUkNISUQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0RBNzBENiIpKTtxLlBBTEVHT0xERU5ST0Q9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0VFRThBQSIpKTtxLlBBTEVHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOThGQjk4IikpO3EuUEFMRVRVUlFVT0lTRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjQUZFRUVFIikpO3EuUEFMRVZJT0xFVFJFRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjREI3MDkzIikpO3EuUEFQQVlBV0hJUD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZFRkQ1IikpO3EuUEVBQ0hQVUZGPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkRBQjkiKSk7cS5QRVJVPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNDRDg1M0YiKSk7cS5QSU5LPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkMwQ0IiKSk7cS5QTFVNPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEREEwREQiKSk7cS5QT1dERVJCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNCMEUwRTYiKSk7cS5QVVJQTEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzgwMDA4MCIpKTtxLlJFRD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkYwMDAwIikpO3EuUk9TWUJST1dOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNCQzhGOEYiKSk7cS5ST1lBTEJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzQxNjlFMSIpKTtxLlNBRERMRUJST1dOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4QjQ1MTMiKSk7cS5TQUxNT049T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0ZBODA3MiIpKTtxLlNBTkRZQlJPV049T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0Y0QTQ2MCIpKTtxLlNFQUdSRUVOPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyRThCNTciKSk7cS5TRUFTSEVMTD1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGNUVFIikpO3EuU0lFTk5BPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBMDUyMkQiKSk7cS5TSUxWRVI9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0MwQzBDMCIpKTtxLlNLWUJMVUU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzg3Q0VFQiIpKTtxLlNMQVRFQkxVRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjNkE1QUNEIikpO3EuU0xBVEVHUkFZPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3MDgwOTAiKSk7cS5TTEFURUdSRVk9cS5TTEFURUdSQVk7cS5TTk9XPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZBRkEiKSk7cS5TUFJJTkdHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGRjdGIikpO3EuU1RFRUxCTFVFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0NjgyQjQiKSk7cS5UQU49T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0QyQjQ4QyIpKTtxLlRFQUw9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiIzAwODA4MCIpKTtxLlRISVNUTEU9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0Q4QkZEOCIpKTtxLlRPTUFUTz1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkY2MzQ3IikpO3EuVFVSUVVPSVNFPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0MEUwRDAiKSk7cS5WSU9MRVQ9T2JqZWN0LmZyZWV6ZShxLmZyb21Dc3NDb2xvclN0cmluZygiI0VFODJFRSIpKTtxLldIRUFUPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNURFQjMiKSk7cS5XSElURT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZGRkZGIikpO3EuV0hJVEVTTU9LRT1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjVGNUY1IikpO3EuWUVMTE9XPU9iamVjdC5mcmVlemUocS5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGMDAiKSk7cS5ZRUxMT1dHUkVFTj1PYmplY3QuZnJlZXplKHEuZnJvbUNzc0NvbG9yU3RyaW5nKCIjOUFDRDMyIikpO3EuVFJBTlNQQVJFTlQ9T2JqZWN0LmZyZWV6ZShuZXcgcSgwLDAsMCwwKSk7WnQ9cX0pO2Z1bmN0aW9uIG8kKCl7cmV0dXJuInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCIucmVwbGFjZSgvW3h5XS9nLGZ1bmN0aW9uKHQpe2xldCBlPU1hdGgucmFuZG9tKCkqMTZ8MDtyZXR1cm4odD09PSJ4Ij9lOmUmM3w4KS50b1N0cmluZygxNil9KX12YXIgQnMsaWg9UygoKT0+e0JzPW8kfSk7ZnVuY3Rpb24gX3IodCxlKXt0PVoodCwwKSx0aGlzLl9uZWFyPXQsZT1aKGUsTnVtYmVyLk1BWF9WQUxVRSksdGhpcy5fZmFyPWV9dmFyIFdvLHpaPVMoKCk9PntGdCgpO210KCk7T3QoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhfci5wcm90b3R5cGUse25lYXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWFyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmVhcj10fX0sZmFyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmFyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZmFyPXR9fX0pO19yLnBhY2tlZExlbmd0aD0yO19yLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxlW2krK109dC5uZWFyLGVbaV09dC5mYXIsZX07X3IudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gZT1aKGUsMCksbShpKXx8KGk9bmV3IF9yKSxpLm5lYXI9dFtlKytdLGkuZmFyPXRbZV0saX07X3IuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lm5lYXI9PT1lLm5lYXImJnQuZmFyPT09ZS5mYXJ9O19yLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKXx8KGU9bmV3IF9yKSxlLm5lYXI9dC5uZWFyLGUuZmFyPXQuZmFyLGV9O19yLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gX3IuY2xvbmUodGhpcyx0KX07X3IucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gX3IuZXF1YWxzKHRoaXMsdCl9O1dvPV9yfSk7ZnVuY3Rpb24gR3IodCxlLGksbil7dGhpcy5uZWFyPVoodCwwKSx0aGlzLm5lYXJWYWx1ZT1aKGUsMCksdGhpcy5mYXI9WihpLDEpLHRoaXMuZmFyVmFsdWU9WihuLDApfXZhciBnaSxJRT1TKCgpPT57RnQoKTttdCgpO090KCk7R3IuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLm5lYXI9dC5uZWFyLGUubmVhclZhbHVlPXQubmVhclZhbHVlLGUuZmFyPXQuZmFyLGUuZmFyVmFsdWU9dC5mYXJWYWx1ZSxlKTpuZXcgR3IodC5uZWFyLHQubmVhclZhbHVlLHQuZmFyLHQuZmFyVmFsdWUpfTtHci5wYWNrZWRMZW5ndGg9NDtHci5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gaT1aKGksMCksZVtpKytdPXQubmVhcixlW2krK109dC5uZWFyVmFsdWUsZVtpKytdPXQuZmFyLGVbaV09dC5mYXJWYWx1ZSxlfTtHci51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBlPVooZSwwKSxtKGkpfHwoaT1uZXcgR3IpLGkubmVhcj10W2UrK10saS5uZWFyVmFsdWU9dFtlKytdLGkuZmFyPXRbZSsrXSxpLmZhclZhbHVlPXRbZV0saX07R3IuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lm5lYXI9PT1lLm5lYXImJnQubmVhclZhbHVlPT09ZS5uZWFyVmFsdWUmJnQuZmFyPT09ZS5mYXImJnQuZmFyVmFsdWU9PT1lLmZhclZhbHVlfTtHci5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEdyLmNsb25lKHRoaXMsdCl9O0dyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIEdyLmVxdWFscyh0aGlzLHQpfTtnaT1Hcn0pO2Z1bmN0aW9uIGdsKHQpe3JldHVybiB0PT09Q2wuQ0xBTVBfVE9fR1JPVU5EfHx0PT09Q2wuQ0xBTVBfVE9fM0RfVElMRXx8dD09PUNsLkNMQU1QX1RPX1RFUlJBSU59ZnVuY3Rpb24gZUQodCl7cmV0dXJuIHQ9PT1DbC5SRUxBVElWRV9UT19HUk9VTkR8fHQ9PT1DbC5SRUxBVElWRV9UT18zRF9USUxFfHx0PT09Q2wuUkVMQVRJVkVfVE9fVEVSUkFJTn12YXIgQ2wsV3IsU209UygoKT0+e0NsPXtOT05FOjAsQ0xBTVBfVE9fR1JPVU5EOjEsUkVMQVRJVkVfVE9fR1JPVU5EOjIsQ0xBTVBfVE9fVEVSUkFJTjozLFJFTEFUSVZFX1RPX1RFUlJBSU46NCxDTEFNUF9UT18zRF9USUxFOjUsUkVMQVRJVkVfVE9fM0RfVElMRTo2fSxXcj1PYmplY3QuZnJlZXplKENsKX0pO3ZhciByJCx0byxPbT1TKCgpPT57ciQ9e0NFTlRFUjowLExFRlQ6MSxSSUdIVDotMX0sdG89T2JqZWN0LmZyZWV6ZShyJCl9KTt2YXIgS1oseWUsdWE9UygoKT0+e0taPXtNT1JQSElORzowLENPTFVNQlVTX1ZJRVc6MSxTQ0VORTJEOjIsU0NFTkUzRDozfTtLWi5nZXRNb3JwaFRpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1LWi5TQ0VORTNEPzE6dD09PUtaLk1PUlBISU5HP3ZvaWQgMDowfTt5ZT1PYmplY3QuZnJlZXplKEtaKX0pO2Z1bmN0aW9uIEdzKHQsZSl7aWYocC50eXBlT2Yub2JqZWN0KCJub3JtYWwiLHQpLCFMLmVxdWFsc0Vwc2lsb24obC5tYWduaXR1ZGUodCksMSxMLkVQU0lMT042KSl0aHJvdyBuZXcgWSgibm9ybWFsIG11c3QgYmUgbm9ybWFsaXplZC4iKTtwLnR5cGVPZi5udW1iZXIoImRpc3RhbmNlIixlKSx0aGlzLm5vcm1hbD1sLmNsb25lKHQpLHRoaXMuZGlzdGFuY2U9ZX12YXIgYSQsQSQsaCQsYyQsbCQsS2ksbmg9UygoKT0+e0h0KCk7T3MoKTthZSgpO210KCk7T3QoKTtfZSgpO2JpKCk7R3MuZnJvbVBvaW50Tm9ybWFsPWZ1bmN0aW9uKHQsZSxpKXtpZihwLnR5cGVPZi5vYmplY3QoInBvaW50Iix0KSxwLnR5cGVPZi5vYmplY3QoIm5vcm1hbCIsZSksIUwuZXF1YWxzRXBzaWxvbihsLm1hZ25pdHVkZShlKSwxLEwuRVBTSUxPTjYpKXRocm93IG5ldyBZKCJub3JtYWwgbXVzdCBiZSBub3JtYWxpemVkLiIpO2xldCBuPS1sLmRvdChlLHQpO3JldHVybiBtKGkpPyhsLmNsb25lKGUsaS5ub3JtYWwpLGkuZGlzdGFuY2U9bixpKTpuZXcgR3MoZSxuKX07YSQ9bmV3IGw7R3MuZnJvbUNhcnRlc2lhbjQ9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImNvZWZmaWNpZW50cyIsdCk7bGV0IGk9bC5mcm9tQ2FydGVzaWFuNCh0LGEkKSxuPXQudztpZighTC5lcXVhbHNFcHNpbG9uKGwubWFnbml0dWRlKGkpLDEsTC5FUFNJTE9ONikpdGhyb3cgbmV3IFkoIm5vcm1hbCBtdXN0IGJlIG5vcm1hbGl6ZWQuIik7cmV0dXJuIG0oZSk/KGwuY2xvbmUoaSxlLm5vcm1hbCksZS5kaXN0YW5jZT1uLGUpOm5ldyBHcyhpLG4pfTtHcy5nZXRQb2ludERpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicGxhbmUiLHQpLHAudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLGwuZG90KHQubm9ybWFsLGUpK3QuZGlzdGFuY2V9O0EkPW5ldyBsO0dzLnByb2plY3RQb2ludE9udG9QbGFuZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJwbGFuZSIsdCkscC50eXBlT2Yub2JqZWN0KCJwb2ludCIsZSksbShpKXx8KGk9bmV3IGwpO2xldCBuPUdzLmdldFBvaW50RGlzdGFuY2UodCxlKSxzPWwubXVsdGlwbHlCeVNjYWxhcih0Lm5vcm1hbCxuLEEkKTtyZXR1cm4gbC5zdWJ0cmFjdChlLHMsaSl9O2gkPW5ldyBhdCxjJD1uZXcgaWUsbCQ9bmV3IGw7R3MudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoInBsYW5lIix0KSxwLnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybSIsZSk7bGV0IG49dC5ub3JtYWwscz10LmRpc3RhbmNlLG89YXQuaW52ZXJzZVRyYW5zcG9zZShlLGgkKSxyPWllLmZyb21FbGVtZW50cyhuLngsbi55LG4ueixzLGMkKTtyPWF0Lm11bHRpcGx5QnlWZWN0b3IobyxyLHIpO2xldCBhPWwuZnJvbUNhcnRlc2lhbjQocixsJCk7cmV0dXJuIHI9aWUuZGl2aWRlQnlTY2FsYXIocixsLm1hZ25pdHVkZShhKSxyKSxHcy5mcm9tQ2FydGVzaWFuNChyLGkpfTtHcy5jbG9uZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInBsYW5lIix0KSxtKGUpPyhsLmNsb25lKHQubm9ybWFsLGUubm9ybWFsKSxlLmRpc3RhbmNlPXQuZGlzdGFuY2UsZSk6bmV3IEdzKHQubm9ybWFsLHQuZGlzdGFuY2UpfTtHcy5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx0LmRpc3RhbmNlPT09ZS5kaXN0YW5jZSYmbC5lcXVhbHModC5ub3JtYWwsZS5ub3JtYWwpfTtHcy5PUklHSU5fWFlfUExBTkU9T2JqZWN0LmZyZWV6ZShuZXcgR3MobC5VTklUX1osMCkpO0dzLk9SSUdJTl9ZWl9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBHcyhsLlVOSVRfWCwwKSk7R3MuT1JJR0lOX1pYX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IEdzKGwuVU5JVF9ZLDApKTtLaT1Hc30pO2Z1bmN0aW9uIERyKHQpe3RoaXMucGxhbmVzPVoodCxbXSl9dmFyIHBFLGNjLGQkLGlELFhaLFpUPVMoKCk9PntIdCgpO09zKCk7RnQoKTttdCgpO090KCk7bmMoKTtuaCgpO3BFPVtuZXcgbCxuZXcgbCxuZXcgbF07bC5jbG9uZShsLlVOSVRfWCxwRVswXSk7bC5jbG9uZShsLlVOSVRfWSxwRVsxXSk7bC5jbG9uZShsLlVOSVRfWixwRVsyXSk7Y2M9bmV3IGwsZCQ9bmV3IGwsaUQ9bmV3IEtpKG5ldyBsKDEsMCwwKSwwKTtEci5mcm9tQm91bmRpbmdTcGhlcmU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYm91bmRpbmdTcGhlcmUgaXMgcmVxdWlyZWQuIik7bShlKXx8KGU9bmV3IERyKTtsZXQgaT1wRS5sZW5ndGgsbj1lLnBsYW5lcztuLmxlbmd0aD0yKmk7bGV0IHM9dC5jZW50ZXIsbz10LnJhZGl1cyxyPTA7Zm9yKGxldCBhPTA7YTxpOysrYSl7bGV0IGg9cEVbYV0sQT1uW3JdLGQ9bltyKzFdO20oQSl8fChBPW5bcl09bmV3IGllKSxtKGQpfHwoZD1uW3IrMV09bmV3IGllKSxsLm11bHRpcGx5QnlTY2FsYXIoaCwtbyxjYyksbC5hZGQocyxjYyxjYyksQS54PWgueCxBLnk9aC55LEEuej1oLnosQS53PS1sLmRvdChoLGNjKSxsLm11bHRpcGx5QnlTY2FsYXIoaCxvLGNjKSxsLmFkZChzLGNjLGNjKSxkLng9LWgueCxkLnk9LWgueSxkLno9LWgueixkLnc9LWwuZG90KGwubmVnYXRlKGgsZCQpLGNjKSxyKz0yfXJldHVybiBlfTtEci5wcm90b3R5cGUuY29tcHV0ZVZpc2liaWxpdHk9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImJvdW5kaW5nVm9sdW1lIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMucGxhbmVzLGk9ITE7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7KytuKXtsZXQgbz10LmludGVyc2VjdFBsYW5lKEtpLmZyb21DYXJ0ZXNpYW40KGVbbl0saUQpKTtpZihvPT09Tm4uT1VUU0lERSlyZXR1cm4gTm4uT1VUU0lERTtvPT09Tm4uSU5URVJTRUNUSU5HJiYoaT0hMCl9cmV0dXJuIGk/Tm4uSU5URVJTRUNUSU5HOk5uLklOU0lERX07RHIucHJvdG90eXBlLmNvbXB1dGVWaXNpYmlsaXR5V2l0aFBsYW5lTWFzaz1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJib3VuZGluZ1ZvbHVtZSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicGFyZW50UGxhbmVNYXNrIGlzIHJlcXVpcmVkLiIpO2lmKGU9PT1Eci5NQVNLX09VVFNJREV8fGU9PT1Eci5NQVNLX0lOU0lERSlyZXR1cm4gZTtsZXQgaT1Eci5NQVNLX0lOU0lERSxuPXRoaXMucGxhbmVzO2ZvcihsZXQgcz0wLG89bi5sZW5ndGg7czxvOysrcyl7bGV0IHI9czwzMT8xPDxzOjA7aWYoczwzMSYmIShlJnIpKWNvbnRpbnVlO2xldCBhPXQuaW50ZXJzZWN0UGxhbmUoS2kuZnJvbUNhcnRlc2lhbjQobltzXSxpRCkpO2lmKGE9PT1Obi5PVVRTSURFKXJldHVybiBEci5NQVNLX09VVFNJREU7YT09PU5uLklOVEVSU0VDVElORyYmKGl8PXIpfXJldHVybiBpfTtEci5NQVNLX09VVFNJREU9NDI5NDk2NzI5NTtEci5NQVNLX0lOU0lERT0wO0RyLk1BU0tfSU5ERVRFUk1JTkFURT0yMTQ3NDgzNjQ3O1haPURyfSk7ZnVuY3Rpb24gbUEodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMubGVmdD10LmxlZnQsdGhpcy5fbGVmdD12b2lkIDAsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMuX3JpZ2h0PXZvaWQgMCx0aGlzLnRvcD10LnRvcCx0aGlzLl90b3A9dm9pZCAwLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMuX2JvdHRvbT12b2lkIDAsdGhpcy5uZWFyPVoodC5uZWFyLDEpLHRoaXMuX25lYXI9dGhpcy5uZWFyLHRoaXMuZmFyPVoodC5mYXIsNWU4KSx0aGlzLl9mYXI9dGhpcy5mYXIsdGhpcy5fY3VsbGluZ1ZvbHVtZT1uZXcgWFosdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4PW5ldyBhdH1mdW5jdGlvbiBuRCh0KXtpZighbSh0LnJpZ2h0KXx8IW0odC5sZWZ0KXx8IW0odC50b3ApfHwhbSh0LmJvdHRvbSl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgWSgicmlnaHQsIGxlZnQsIHRvcCwgYm90dG9tLCBuZWFyLCBvciBmYXIgcGFyYW1ldGVycyBhcmUgbm90IHNldC4iKTtpZih0LnRvcCE9PXQuX3RvcHx8dC5ib3R0b20hPT10Ll9ib3R0b218fHQubGVmdCE9PXQuX2xlZnR8fHQucmlnaHQhPT10Ll9yaWdodHx8dC5uZWFyIT09dC5fbmVhcnx8dC5mYXIhPT10Ll9mYXIpe2lmKHQubGVmdD50LnJpZ2h0KXRocm93IG5ldyBZKCJyaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBsZWZ0LiIpO2lmKHQuYm90dG9tPnQudG9wKXRocm93IG5ldyBZKCJ0b3AgbXVzdCBiZSBncmVhdGVyIHRoYW4gYm90dG9tLiIpO2lmKHQubmVhcjw9MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBZKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fbGVmdD10LmxlZnQsdC5fcmlnaHQ9dC5yaWdodCx0Ll90b3A9dC50b3AsdC5fYm90dG9tPXQuYm90dG9tLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcix0Ll9vcnRob2dyYXBoaWNNYXRyaXg9YXQuY29tcHV0ZU9ydGhvZ3JhcGhpY09mZkNlbnRlcih0LmxlZnQsdC5yaWdodCx0LmJvdHRvbSx0LnRvcCx0Lm5lYXIsdC5mYXIsdC5fb3J0aG9ncmFwaGljTWF0cml4KX19dmFyIG0kLGYkLEUkLElULHFaLHBUPVMoKCk9PntIdCgpO09zKCk7WlQoKTtGdCgpO210KCk7T3QoKTtfZSgpO2JpKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobUEucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbkQodGhpcyksdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4fX19KTttJD1uZXcgbCxmJD1uZXcgbCxFJD1uZXcgbCxJVD1uZXcgbDttQS5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJ1cCBpcyByZXF1aXJlZC4iKTtsZXQgbj10aGlzLl9jdWxsaW5nVm9sdW1lLnBsYW5lcyxzPXRoaXMudG9wLG89dGhpcy5ib3R0b20scj10aGlzLnJpZ2h0LGE9dGhpcy5sZWZ0LGg9dGhpcy5uZWFyLEE9dGhpcy5mYXIsZD1sLmNyb3NzKGUsaSxtJCk7bC5ub3JtYWxpemUoZCxkKTtsZXQgZj1mJDtsLm11bHRpcGx5QnlTY2FsYXIoZSxoLGYpLGwuYWRkKHQsZixmKTtsZXQgRT1FJDtsLm11bHRpcGx5QnlTY2FsYXIoZCxhLEUpLGwuYWRkKGYsRSxFKTtsZXQgXz1uWzBdO3JldHVybiBtKF8pfHwoXz1uWzBdPW5ldyBpZSksXy54PWQueCxfLnk9ZC55LF8uej1kLnosXy53PS1sLmRvdChkLEUpLGwubXVsdGlwbHlCeVNjYWxhcihkLHIsRSksbC5hZGQoZixFLEUpLF89blsxXSxtKF8pfHwoXz1uWzFdPW5ldyBpZSksXy54PS1kLngsXy55PS1kLnksXy56PS1kLnosXy53PS1sLmRvdChsLm5lZ2F0ZShkLElUKSxFKSxsLm11bHRpcGx5QnlTY2FsYXIoaSxvLEUpLGwuYWRkKGYsRSxFKSxfPW5bMl0sbShfKXx8KF89blsyXT1uZXcgaWUpLF8ueD1pLngsXy55PWkueSxfLno9aS56LF8udz0tbC5kb3QoaSxFKSxsLm11bHRpcGx5QnlTY2FsYXIoaSxzLEUpLGwuYWRkKGYsRSxFKSxfPW5bM10sbShfKXx8KF89blszXT1uZXcgaWUpLF8ueD0taS54LF8ueT0taS55LF8uej0taS56LF8udz0tbC5kb3QobC5uZWdhdGUoaSxJVCksRSksXz1uWzRdLG0oXyl8fChfPW5bNF09bmV3IGllKSxfLng9ZS54LF8ueT1lLnksXy56PWUueixfLnc9LWwuZG90KGUsZiksbC5tdWx0aXBseUJ5U2NhbGFyKGUsQSxFKSxsLmFkZCh0LEUsRSksXz1uWzVdLG0oXyl8fChfPW5bNV09bmV3IGllKSxfLng9LWUueCxfLnk9LWUueSxfLno9LWUueixfLnc9LWwuZG90KGwubmVnYXRlKGUsSVQpLEUpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O21BLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLGksbixzKXtpZihuRCh0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IFkoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBZKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBZKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkLiIpO2lmKG48PTApdGhyb3cgbmV3IFkoInBpeGVsUmF0aW8gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZighbShzKSl0aHJvdyBuZXcgWSgiQSByZXN1bHQgb2JqZWN0IGlzIHJlcXVpcmVkLiIpO2xldCBvPXRoaXMucmlnaHQtdGhpcy5sZWZ0LHI9dGhpcy50b3AtdGhpcy5ib3R0b20sYT1uKm8vdCxoPW4qci9lO3JldHVybiBzLng9YSxzLnk9aCxzfTttQS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBtQSksdC5sZWZ0PXRoaXMubGVmdCx0LnJpZ2h0PXRoaXMucmlnaHQsdC50b3A9dGhpcy50b3AsdC5ib3R0b209dGhpcy5ib3R0b20sdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9sZWZ0PXZvaWQgMCx0Ll9yaWdodD12b2lkIDAsdC5fdG9wPXZvaWQgMCx0Ll9ib3R0b209dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdH07bUEucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdCBpbnN0YW5jZW9mIG1BJiZ0aGlzLnJpZ2h0PT09dC5yaWdodCYmdGhpcy5sZWZ0PT09dC5sZWZ0JiZ0aGlzLnRvcD09PXQudG9wJiZ0aGlzLmJvdHRvbT09PXQuYm90dG9tJiZ0aGlzLm5lYXI9PT10Lm5lYXImJnRoaXMuZmFyPT09dC5mYXJ9O21BLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PXRoaXN8fG0odCkmJnQgaW5zdGFuY2VvZiBtQSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMucmlnaHQsdC5yaWdodCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5sZWZ0LHQubGVmdCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy50b3AsdC50b3AsZSxpKSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMuYm90dG9tLHQuYm90dG9tLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLm5lYXIsdC5uZWFyLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLmZhcix0LmZhcixlLGkpfTtxWj1tQX0pO2Z1bmN0aW9uIHRyKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtPW5ldyBxWix0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5fd2lkdGg9dm9pZCAwLHRoaXMuYXNwZWN0UmF0aW89dC5hc3BlY3RSYXRpbyx0aGlzLl9hc3BlY3RSYXRpbz12b2lkIDAsdGhpcy5uZWFyPVoodC5uZWFyLDEpLHRoaXMuX25lYXI9dGhpcy5uZWFyLHRoaXMuZmFyPVoodC5mYXIsNWU4KSx0aGlzLl9mYXI9dGhpcy5mYXJ9ZnVuY3Rpb24gbGModCl7aWYoIW0odC53aWR0aCl8fCFtKHQuYXNwZWN0UmF0aW8pfHwhbSh0Lm5lYXIpfHwhbSh0LmZhcikpdGhyb3cgbmV3IFkoIndpZHRoLCBhc3BlY3RSYXRpbywgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7bGV0IGU9dC5fb2ZmQ2VudGVyRnJ1c3R1bTtpZih0LndpZHRoIT09dC5fd2lkdGh8fHQuYXNwZWN0UmF0aW8hPT10Ll9hc3BlY3RSYXRpb3x8dC5uZWFyIT09dC5fbmVhcnx8dC5mYXIhPT10Ll9mYXIpe2lmKHQuYXNwZWN0UmF0aW88MCl0aHJvdyBuZXcgWSgiYXNwZWN0UmF0aW8gbXVzdCBiZSBwb3NpdGl2ZS4iKTtpZih0Lm5lYXI8MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBZKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fYXNwZWN0UmF0aW89dC5hc3BlY3RSYXRpbyx0Ll93aWR0aD10LndpZHRoLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcjtsZXQgaT0xL3QuYXNwZWN0UmF0aW87ZS5yaWdodD10LndpZHRoKi41LGUubGVmdD0tZS5yaWdodCxlLnRvcD1pKmUucmlnaHQsZS5ib3R0b209LWUudG9wLGUubmVhcj10Lm5lYXIsZS5mYXI9dC5mYXJ9fXZhciBqcywkWj1TKCgpPT57YWUoKTtGdCgpO210KCk7T3QoKTtfZSgpO3BUKCk7dHIucGFja2VkTGVuZ3RoPTQ7dHIucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGVbaSsrXT10LndpZHRoLGVbaSsrXT10LmFzcGVjdFJhdGlvLGVbaSsrXT10Lm5lYXIsZVtpXT10LmZhcixlfTt0ci51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgdHIpLGkud2lkdGg9dFtlKytdLGkuYXNwZWN0UmF0aW89dFtlKytdLGkubmVhcj10W2UrK10saS5mYXI9dFtlXSxpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0ci5wcm90b3R5cGUse3Byb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBsYyh0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLnByb2plY3Rpb25NYXRyaXh9fSxvZmZDZW50ZXJGcnVzdHVtOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbGModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bX19fSk7dHIucHJvdG90eXBlLmNvbXB1dGVDdWxsaW5nVm9sdW1lPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbGModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jb21wdXRlQ3VsbGluZ1ZvbHVtZSh0LGUsaSl9O3RyLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gbGModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5nZXRQaXhlbERpbWVuc2lvbnModCxlLGksbixzKX07dHIucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgdHIpLHQuYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx0LndpZHRoPXRoaXMud2lkdGgsdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9hc3BlY3RSYXRpbz12b2lkIDAsdC5fd2lkdGg9dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jbG9uZSh0Ll9vZmZDZW50ZXJGcnVzdHVtKSx0fTt0ci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiB0cik/ITE6KGxjKHRoaXMpLGxjKHQpLHRoaXMud2lkdGg9PT10LndpZHRoJiZ0aGlzLmFzcGVjdFJhdGlvPT09dC5hc3BlY3RSYXRpbyYmdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5lcXVhbHModC5fb2ZmQ2VudGVyRnJ1c3R1bSkpfTt0ci5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIHRyKT8hMToobGModGhpcyksbGModCksTC5lcXVhbHNFcHNpbG9uKHRoaXMud2lkdGgsdC53aWR0aCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5hc3BlY3RSYXRpbyx0LmFzcGVjdFJhdGlvLGUsaSkmJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzRXBzaWxvbih0Ll9vZmZDZW50ZXJGcnVzdHVtLGUsaSkpfTtqcz10cn0pO2Z1bmN0aW9uIHVFKHQsZSxpLG4pe2xldCBzPWkudmlld01hdHJpeCxvPWF0Lm11bHRpcGx5QnlWZWN0b3IocyxpZS5mcm9tRWxlbWVudHModC54LHQueSx0LnosMSxzRCksc0QpLHI9bC5tdWx0aXBseUNvbXBvbmVudHMoZSxsLm5vcm1hbGl6ZShvLG9EKSxvRCk7cmV0dXJuIG8ueCs9ZS54K3IueCxvLnkrPWUueStyLnksby56Kz1yLnosYXQubXVsdGlwbHlCeVZlY3RvcihpLmZydXN0dW0ucHJvamVjdGlvbk1hdHJpeCxvLG4pfXZhciBlbyxfJCxabyxSJCx1VCxDVCxzRCxvRCxaJCxJJCxwJCxzaCx1JCxyRCxhRCxBRCxDJCxoRCxCbSxnVD1TKCgpPT57RXIoKTtYZSgpO0h0KCk7T3MoKTtyaSgpO210KCk7T3QoKTtfZSgpO2JpKCk7JFooKTtwVCgpO2ZyKCk7dWEoKTtlbz17fSxfJD1uZXcgaWUoMCwwLDAsMSksWm89bmV3IGllLFIkPW5ldyBtaSx1VD1uZXcgbnQsQ1Q9bmV3IG50O2VvLndnczg0VG9XaW5kb3dDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGVvLndnczg0V2l0aEV5ZU9mZnNldFRvV2luZG93Q29vcmRpbmF0ZXModCxlLGwuWkVSTyxpKX07c0Q9bmV3IGllLG9EPW5ldyBsO1okPW5ldyB1dChNYXRoLlBJLEwuUElfT1ZFUl9UV08pLEkkPW5ldyBsLHAkPW5ldyBsO2VvLndnczg0V2l0aEV5ZU9mZnNldFRvV2luZG93Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNjZW5lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtsZXQgcz10LmZyYW1lU3RhdGUsbz1lby5jb21wdXRlQWN0dWFsV2dzODRQb3NpdGlvbihzLGUsXyQpO2lmKCFtKG8pKXJldHVybjtsZXQgcj10LmNhbnZhcyxhPVIkO2EueD0wLGEueT0wLGEud2lkdGg9ci5jbGllbnRXaWR0aCxhLmhlaWdodD1yLmNsaWVudEhlaWdodDtsZXQgaD10LmNhbWVyYSxBPSExO2lmKHMubW9kZT09PXllLlNDRU5FMkQpe2xldCBkPXQubWFwUHJvamVjdGlvbixmPVokLEU9ZC5wcm9qZWN0KGYsSSQpLF89bC5jbG9uZShoLnBvc2l0aW9uLHAkKSxSPWguZnJ1c3R1bS5jbG9uZSgpLEk9YXQuY29tcHV0ZVZpZXdwb3J0VHJhbnNmb3JtYXRpb24oYSwwLDEsbmV3IGF0KSxDPWguZnJ1c3R1bS5wcm9qZWN0aW9uTWF0cml4LE49aC5wb3NpdGlvbldDLnksVD1sLmZyb21FbGVtZW50cyhMLnNpZ24oTikqRS54LU4sMCwtaC5wb3NpdGlvbldDLngpLGI9SW4ucG9pbnRUb0dMV2luZG93Q29vcmRpbmF0ZXMoQyxJLFQpO2lmKE49PT0wfHxiLng8PTB8fGIueD49ci5jbGllbnRXaWR0aClBPSEwO2Vsc2V7aWYoYi54PnIuY2xpZW50V2lkdGgqLjUpe2Eud2lkdGg9Yi54LGguZnJ1c3R1bS5yaWdodD1FLngtTixabz11RShvLGksaCxabyksZW8uY2xpcFRvR0xXaW5kb3dDb29yZGluYXRlcyhhLFpvLHVUKSxhLngrPWIueCxoLnBvc2l0aW9uLng9LWgucG9zaXRpb24ueDtsZXQgRj1oLmZydXN0dW0ucmlnaHQ7aC5mcnVzdHVtLnJpZ2h0PS1oLmZydXN0dW0ubGVmdCxoLmZydXN0dW0ubGVmdD0tRixabz11RShvLGksaCxabyksZW8uY2xpcFRvR0xXaW5kb3dDb29yZGluYXRlcyhhLFpvLENUKX1lbHNle2EueCs9Yi54LGEud2lkdGgtPWIueCxoLmZydXN0dW0ubGVmdD0tRS54LU4sWm89dUUobyxpLGgsWm8pLGVvLmNsaXBUb0dMV2luZG93Q29vcmRpbmF0ZXMoYSxabyx1VCksYS54PWEueC1hLndpZHRoLGgucG9zaXRpb24ueD0taC5wb3NpdGlvbi54O2xldCBGPWguZnJ1c3R1bS5sZWZ0O2guZnJ1c3R1bS5sZWZ0PS1oLmZydXN0dW0ucmlnaHQsaC5mcnVzdHVtLnJpZ2h0PS1GLFpvPXVFKG8saSxoLFpvKSxlby5jbGlwVG9HTFdpbmRvd0Nvb3JkaW5hdGVzKGEsWm8sQ1QpfWwuY2xvbmUoXyxoLnBvc2l0aW9uKSxoLmZydXN0dW09Ui5jbG9uZSgpLG49bnQuY2xvbmUodVQsbiksKG4ueDwwfHxuLng+ci5jbGllbnRXaWR0aCkmJihuLng9Q1QueCl9fWlmKHMubW9kZSE9PXllLlNDRU5FMkR8fEEpe2lmKFpvPXVFKG8saSxoLFpvKSxaby56PDAmJiEoaC5mcnVzdHVtIGluc3RhbmNlb2YganMpJiYhKGguZnJ1c3R1bSBpbnN0YW5jZW9mIHFaKSlyZXR1cm47bj1lby5jbGlwVG9HTFdpbmRvd0Nvb3JkaW5hdGVzKGEsWm8sbil9cmV0dXJuIG4ueT1yLmNsaWVudEhlaWdodC1uLnksbn07ZW8ud2dzODRUb0RyYXdpbmdCdWZmZXJDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7aWYoaT1lby53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXModCxlLGkpLCEhbShpKSlyZXR1cm4gZW8udHJhbnNmb3JtV2luZG93VG9EcmF3aW5nQnVmZmVyKHQsaSxpKX07c2g9bmV3IGwsdSQ9bmV3IHV0O2VvLmNvbXB1dGVBY3R1YWxXZ3M4NFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10Lm1vZGU7aWYobj09PXllLlNDRU5FM0QpcmV0dXJuIGwuY2xvbmUoZSxpKTtsZXQgcz10Lm1hcFByb2plY3Rpb24sbz1zLmVsbGlwc29pZC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLHUkKTtpZighbShvKSlyZXR1cm47aWYocy5wcm9qZWN0KG8sc2gpLG49PT15ZS5DT0xVTUJVU19WSUVXKXJldHVybiBsLmZyb21FbGVtZW50cyhzaC56LHNoLngsc2gueSxpKTtpZihuPT09eWUuU0NFTkUyRClyZXR1cm4gbC5mcm9tRWxlbWVudHMoMCxzaC54LHNoLnksaSk7bGV0IHI9dC5tb3JwaFRpbWU7cmV0dXJuIGwuZnJvbUVsZW1lbnRzKEwubGVycChzaC56LGUueCxyKSxMLmxlcnAoc2gueCxlLnksciksTC5sZXJwKHNoLnksZS56LHIpLGkpfTtyRD1uZXcgbCxhRD1uZXcgbCxBRD1uZXcgYXQ7ZW8uY2xpcFRvR0xXaW5kb3dDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGwuZGl2aWRlQnlTY2FsYXIoZSxlLncsckQpLGF0LmNvbXB1dGVWaWV3cG9ydFRyYW5zZm9ybWF0aW9uKHQsMCwxLEFEKSxhdC5tdWx0aXBseUJ5UG9pbnQoQUQsckQsYUQpLG50LmZyb21DYXJ0ZXNpYW4zKGFELGkpfTtlby50cmFuc2Zvcm1XaW5kb3dUb0RyYXdpbmdCdWZmZXI9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuY2FudmFzLHM9dC5kcmF3aW5nQnVmZmVyV2lkdGgvbi5jbGllbnRXaWR0aCxvPXQuZHJhd2luZ0J1ZmZlckhlaWdodC9uLmNsaWVudEhlaWdodDtyZXR1cm4gbnQuZnJvbUVsZW1lbnRzKGUueCpzLGUueSpvLGkpfTtDJD1uZXcgaWUsaEQ9bmV3IGllO2VvLmRyYXdpbmdCdWZmZXJUb1dnczg0Q29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbil7bGV0IG89dC5jb250ZXh0LnVuaWZvcm1TdGF0ZSxyPW8uY3VycmVudEZydXN0dW0sYT1yLngsaD1yLnk7aWYodC5mcmFtZVN0YXRlLnVzZUxvZ0RlcHRoKXtsZXQgXz1pKm8ubG9nMkZhckRlcHRoRnJvbU5lYXJQbHVzT25lLFI9TWF0aC5wb3coMixfKS0xO2k9aCooMS1hLyhSK2EpKS8oaC1hKX1sZXQgQT10LnZpZXcucGFzc1N0YXRlLnZpZXdwb3J0LGQ9aWUuY2xvbmUoaWUuVU5JVF9XLEMkKTtkLng9KGUueC1BLngpL0Eud2lkdGgqMi0xLGQueT0oZS55LUEueSkvQS5oZWlnaHQqMi0xLGQuej1pKjItMSxkLnc9MTtsZXQgZixFPXQuY2FtZXJhLmZydXN0dW07aWYobShFLmZvdnkpKXtmPWF0Lm11bHRpcGx5QnlWZWN0b3Ioby5pbnZlcnNlVmlld1Byb2plY3Rpb24sZCxoRCk7bGV0IF89MS9mLnc7bC5tdWx0aXBseUJ5U2NhbGFyKGYsXyxmKX1lbHNle2xldCBfPUUub2ZmQ2VudGVyRnJ1c3R1bTttKF8pJiYoRT1fKSxmPWhELGYueD0oZC54KihFLnJpZ2h0LUUubGVmdCkrRS5sZWZ0K0UucmlnaHQpKi41LGYueT0oZC55KihFLnRvcC1FLmJvdHRvbSkrRS5ib3R0b20rRS50b3ApKi41LGYuej0oZC56KihhLWgpLWEtaCkqLjUsZi53PTEsZj1hdC5tdWx0aXBseUJ5VmVjdG9yKG8uaW52ZXJzZVZpZXcsZixmKX1yZXR1cm4gbC5mcm9tQ2FydGVzaWFuNChmLG4pfTtCbT1lb30pO3ZhciBnJCxtbixDRT1TKCgpPT57ZyQ9e0NFTlRFUjowLEJPVFRPTToxLEJBU0VMSU5FOjIsVE9QOi0xfSxtbj1PYmplY3QuZnJlZXplKGckKX0pO2Z1bmN0aW9uIFRpKHQsZSl7aWYodD1aKHQsWi5FTVBUWV9PQkpFQ1QpLG0odC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UpJiZ0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTwwKXRocm93IG5ldyBZKCJkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4wLiIpO2xldCBpPXQudHJhbnNsdWNlbmN5QnlEaXN0YW5jZSxuPXQucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2Uscz10LnNjYWxlQnlEaXN0YW5jZSxvPXQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uO2lmKG0oaSkpe2lmKGkuZmFyPD1pLm5lYXIpdGhyb3cgbmV3IFkoInRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UubmVhci4iKTtpPWdpLmNsb25lKGkpfWlmKG0obikpe2lmKG4uZmFyPD1uLm5lYXIpdGhyb3cgbmV3IFkoInBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZS5uZWFyLiIpO249Z2kuY2xvbmUobil9aWYobShzKSl7aWYocy5mYXI8PXMubmVhcil0aHJvdyBuZXcgWSgic2NhbGVCeURpc3RhbmNlLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBzY2FsZUJ5RGlzdGFuY2UubmVhci4iKTtzPWdpLmNsb25lKHMpfWlmKG0obykpe2lmKG8uZmFyPD1vLm5lYXIpdGhyb3cgbmV3IFkoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbi5mYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLm5lYXIuIik7bz1Xby5jbG9uZShvKX10aGlzLl9zaG93PVoodC5zaG93LCEwKSx0aGlzLl9wb3NpdGlvbj1sLmNsb25lKFoodC5wb3NpdGlvbixsLlpFUk8pKSx0aGlzLl9hY3R1YWxQb3NpdGlvbj1sLmNsb25lKHRoaXMuX3Bvc2l0aW9uKSx0aGlzLl9waXhlbE9mZnNldD1udC5jbG9uZShaKHQucGl4ZWxPZmZzZXQsbnQuWkVSTykpLHRoaXMuX3RyYW5zbGF0ZT1uZXcgbnQoMCwwKSx0aGlzLl9leWVPZmZzZXQ9bC5jbG9uZShaKHQuZXllT2Zmc2V0LGwuWkVSTykpLHRoaXMuX2hlaWdodFJlZmVyZW5jZT1aKHQuaGVpZ2h0UmVmZXJlbmNlLFdyLk5PTkUpLHRoaXMuX3ZlcnRpY2FsT3JpZ2luPVoodC52ZXJ0aWNhbE9yaWdpbixtbi5DRU5URVIpLHRoaXMuX2hvcml6b250YWxPcmlnaW49Wih0Lmhvcml6b250YWxPcmlnaW4sdG8uQ0VOVEVSKSx0aGlzLl9zY2FsZT1aKHQuc2NhbGUsMSksdGhpcy5fY29sb3I9WnQuY2xvbmUoWih0LmNvbG9yLFp0LldISVRFKSksdGhpcy5fcm90YXRpb249Wih0LnJvdGF0aW9uLDApLHRoaXMuX2FsaWduZWRBeGlzPWwuY2xvbmUoWih0LmFsaWduZWRBeGlzLGwuWkVSTykpLHRoaXMuX3dpZHRoPXQud2lkdGgsdGhpcy5faGVpZ2h0PXQuaGVpZ2h0LHRoaXMuX3NjYWxlQnlEaXN0YW5jZT1zLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9aSx0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1uLHRoaXMuX3NpemVJbk1ldGVycz1aKHQuc2l6ZUluTWV0ZXJzLCExKSx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249byx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsdGhpcy5faWQ9dC5pZCx0aGlzLl9jb2xsZWN0aW9uPVoodC5jb2xsZWN0aW9uLGUpLHRoaXMuX3BpY2tJZD12b2lkIDAsdGhpcy5fcGlja1ByaW1pdGl2ZT1aKHQuX3BpY2tQcmltaXRpdmUsdGhpcyksdGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbj1lLHRoaXMuX2RpcnR5PSExLHRoaXMuX2luZGV4PS0xLHRoaXMuX2JhdGNoSW5kZXg9dm9pZCAwLHRoaXMuX2ltYWdlSW5kZXg9LTEsdGhpcy5faW1hZ2VJbmRleFByb21pc2U9dm9pZCAwLHRoaXMuX2ltYWdlSWQ9dm9pZCAwLHRoaXMuX2ltYWdlPXZvaWQgMCx0aGlzLl9pbWFnZVN1YlJlZ2lvbj12b2lkIDAsdGhpcy5faW1hZ2VXaWR0aD12b2lkIDAsdGhpcy5faW1hZ2VIZWlnaHQ9dm9pZCAwLHRoaXMuX2xhYmVsRGltZW5zaW9ucz12b2lkIDAsdGhpcy5fbGFiZWxIb3Jpem9udGFsT3JpZ2luPXZvaWQgMCx0aGlzLl9sYWJlbFRyYW5zbGF0ZT12b2lkIDA7bGV0IHI9dC5pbWFnZSxhPXQuaW1hZ2VJZDttKHIpJiYobShhKXx8KHR5cGVvZiByPT0ic3RyaW5nIj9hPXI6bShyLnNyYyk/YT1yLnNyYzphPUJzKCkpLHRoaXMuX2ltYWdlSWQ9YSx0aGlzLl9pbWFnZT1yKSxtKHQuaW1hZ2VTdWJSZWdpb24pJiYodGhpcy5faW1hZ2VJZD1hLHRoaXMuX2ltYWdlU3ViUmVnaW9uPXQuaW1hZ2VTdWJSZWdpb24pLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbi5fdGV4dHVyZUF0bGFzKSYmdGhpcy5fbG9hZEltYWdlKCksdGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uPXZvaWQgMCx0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwLHRoaXMuX21vZGU9eWUuU0NFTkUzRCx0aGlzLl9jbHVzdGVyU2hvdz0hMCx0aGlzLl9vdXRsaW5lQ29sb3I9WnQuY2xvbmUoWih0Lm91dGxpbmVDb2xvcixadC5CTEFDSykpLHRoaXMuX291dGxpbmVXaWR0aD1aKHQub3V0bGluZVdpZHRoLDApLHRoaXMuX3VwZGF0ZUNsYW1waW5nKCl9ZnVuY3Rpb24gYm4odCxlKXtsZXQgaT10Ll9iaWxsYm9hcmRDb2xsZWN0aW9uO20oaSkmJihpLl91cGRhdGVCaWxsYm9hcmQodCxlKSx0Ll9kaXJ0eT0hMCl9dmFyIGNELGVJLGZELFQkLE4kLEYkLGIkLGlJLGxELFkkLFYkLFMkLE8kLEIkLEckLFckLGRELG5JLG1ELEVELHRJLHVuLHNJPVMoKCk9PntFcigpO1hlKCk7SHQoKTtPcygpO3JpKCk7YWUoKTtRbigpO2loKCk7RnQoKTttdCgpO090KCk7elooKTtPZSgpO2JpKCk7SUUoKTtJYSgpO1NtKCk7T20oKTt1YSgpO2dUKCk7Q0UoKTtjRD1UaS5TSE9XX0lOREVYPTAsZUk9VGkuUE9TSVRJT05fSU5ERVg9MSxmRD1UaS5QSVhFTF9PRkZTRVRfSU5ERVg9MixUJD1UaS5FWUVfT0ZGU0VUX0lOREVYPTMsTiQ9VGkuSE9SSVpPTlRBTF9PUklHSU5fSU5ERVg9NCxGJD1UaS5WRVJUSUNBTF9PUklHSU5fSU5ERVg9NSxiJD1UaS5TQ0FMRV9JTkRFWD02LGlJPVRpLklNQUdFX0lOREVYX0lOREVYPTcsbEQ9VGkuQ09MT1JfSU5ERVg9OCxZJD1UaS5ST1RBVElPTl9JTkRFWD05LFYkPVRpLkFMSUdORURfQVhJU19JTkRFWD0xMCxTJD1UaS5TQ0FMRV9CWV9ESVNUQU5DRV9JTkRFWD0xMSxPJD1UaS5UUkFOU0xVQ0VOQ1lfQllfRElTVEFOQ0VfSU5ERVg9MTIsQiQ9VGkuUElYRUxfT0ZGU0VUX1NDQUxFX0JZX0RJU1RBTkNFX0lOREVYPTEzLEckPVRpLkRJU1RBTkNFX0RJU1BMQVlfQ09ORElUSU9OPTE0LFckPVRpLkRJU0FCTEVfREVQVEhfRElTVEFOQ0U9MTU7VGkuVEVYVFVSRV9DT09SRElOQVRFX0JPVU5EUz0xNjtkRD1UaS5TREZfSU5ERVg9MTc7VGkuTlVNQkVSX09GX1BST1BFUlRJRVM9MTg7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVGkucHJvdG90eXBlLHtzaG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd30sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLmJvb2woInZhbHVlIix0KSx0aGlzLl9zaG93IT09dCYmKHRoaXMuX3Nob3c9dCxibih0aGlzLGNEKSl9fSxwb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5fcG9zaXRpb247bC5lcXVhbHMoZSx0KXx8KGwuY2xvbmUodCxlKSxsLmNsb25lKHQsdGhpcy5fYWN0dWFsUG9zaXRpb24pLHRoaXMuX3VwZGF0ZUNsYW1waW5nKCksYm4odGhpcyxlSSkpfX0saGVpZ2h0UmVmZXJlbmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0UmVmZXJlbmNlfSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5faGVpZ2h0UmVmZXJlbmNlO3QhPT1lJiYodGhpcy5faGVpZ2h0UmVmZXJlbmNlPXQsdGhpcy5fdXBkYXRlQ2xhbXBpbmcoKSxibih0aGlzLGVJKSl9fSxwaXhlbE9mZnNldDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpeGVsT2Zmc2V0fSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5fcGl4ZWxPZmZzZXQ7bnQuZXF1YWxzKGUsdCl8fChudC5jbG9uZSh0LGUpLGJuKHRoaXMsZkQpKX19LHNjYWxlQnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NjYWxlQnlEaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJihwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx0LmZhcjw9dC5uZWFyKSl0aHJvdyBuZXcgWSgiZmFyIGRpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIgZGlzdGFuY2UuIik7bGV0IGU9dGhpcy5fc2NhbGVCeURpc3RhbmNlO2dpLmVxdWFscyhlLHQpfHwodGhpcy5fc2NhbGVCeURpc3RhbmNlPWdpLmNsb25lKHQsZSksYm4odGhpcyxTJCkpfX0sdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiYocC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksdC5mYXI8PXQubmVhcikpdGhyb3cgbmV3IFkoImZhciBkaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIGRpc3RhbmNlLiIpO2xldCBlPXRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U7Z2kuZXF1YWxzKGUsdCl8fCh0aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlPWdpLmNsb25lKHQsZSksYm4odGhpcyxPJCkpfX0scGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJihwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx0LmZhcjw9dC5uZWFyKSl0aHJvdyBuZXcgWSgiZmFyIGRpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIgZGlzdGFuY2UuIik7bGV0IGU9dGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U7Z2kuZXF1YWxzKGUsdCl8fCh0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpLGJuKHRoaXMsQiQpKX19LGV5ZU9mZnNldDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V5ZU9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpO2xldCBlPXRoaXMuX2V5ZU9mZnNldDtsLmVxdWFscyhlLHQpfHwobC5jbG9uZSh0LGUpLGJuKHRoaXMsVCQpKX19LGhvcml6b250YWxPcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ob3Jpem9udGFsT3JpZ2lufSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksdGhpcy5faG9yaXpvbnRhbE9yaWdpbiE9PXQmJih0aGlzLl9ob3Jpem9udGFsT3JpZ2luPXQsYm4odGhpcyxOJCkpfX0sdmVydGljYWxPcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0aWNhbE9yaWdpbn0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHRoaXMuX3ZlcnRpY2FsT3JpZ2luIT09dCYmKHRoaXMuX3ZlcnRpY2FsT3JpZ2luPXQsYm4odGhpcyxGJCkpfX0sc2NhbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZX0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHRoaXMuX3NjYWxlIT09dCYmKHRoaXMuX3NjYWxlPXQsYm4odGhpcyxiJCkpfX0sY29sb3I6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvcn0sc2V0OmZ1bmN0aW9uKHQpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpO2xldCBlPXRoaXMuX2NvbG9yO1p0LmVxdWFscyhlLHQpfHwoWnQuY2xvbmUodCxlKSxibih0aGlzLGxEKSl9fSxyb3RhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdGF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksdGhpcy5fcm90YXRpb24hPT10JiYodGhpcy5fcm90YXRpb249dCxibih0aGlzLFkkKSl9fSxhbGlnbmVkQXhpczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsaWduZWRBeGlzfSxzZXQ6ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCk7bGV0IGU9dGhpcy5fYWxpZ25lZEF4aXM7bC5lcXVhbHMoZSx0KXx8KGwuY2xvbmUodCxlKSxibih0aGlzLFYkKSl9fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFoodGhpcy5fd2lkdGgsdGhpcy5faW1hZ2VXaWR0aCl9LHNldDpmdW5jdGlvbih0KXttKHQpJiZwLnR5cGVPZi5udW1iZXIoInZhbHVlIix0KSx0aGlzLl93aWR0aCE9PXQmJih0aGlzLl93aWR0aD10LGJuKHRoaXMsaUkpKX19LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFoodGhpcy5faGVpZ2h0LHRoaXMuX2ltYWdlSGVpZ2h0KX0sc2V0OmZ1bmN0aW9uKHQpe20odCkmJnAudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHRoaXMuX2hlaWdodCE9PXQmJih0aGlzLl9oZWlnaHQ9dCxibih0aGlzLGlJKSl9fSxzaXplSW5NZXRlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplSW5NZXRlcnN9LHNldDpmdW5jdGlvbih0KXtwLnR5cGVPZi5ib29sKCJ2YWx1ZSIsdCksdGhpcy5fc2l6ZUluTWV0ZXJzIT09dCYmKHRoaXMuX3NpemVJbk1ldGVycz10LGJuKHRoaXMsbEQpKX19LGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFXby5lcXVhbHModCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pKXtpZihtKHQpJiYocC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksdC5mYXI8PXQubmVhcikpdGhyb3cgbmV3IFkoImZhciBkaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIGRpc3RhbmNlLiIpO3RoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1Xby5jbG9uZSh0LHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksYm4odGhpcyxHJCl9fX0sZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlfSxzZXQ6ZnVuY3Rpb24odCl7aWYobSh0KSYmKHAudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLHQ8MCkpdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAuIik7dGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIT09dCYmKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZT10LGJuKHRoaXMsVyQpKX19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9pZD10LG0odGhpcy5fcGlja0lkKSYmKHRoaXMuX3BpY2tJZC5vYmplY3QuaWQ9dCl9fSxwaWNrUHJpbWl0aXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGlja1ByaW1pdGl2ZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3BpY2tQcmltaXRpdmU9dCxtKHRoaXMuX3BpY2tJZCkmJih0aGlzLl9waWNrSWQub2JqZWN0LnByaW1pdGl2ZT10KX19LHBpY2tJZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpY2tJZH19LGltYWdlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW1hZ2VJZH0sc2V0OmZ1bmN0aW9uKHQpe20odCk/dHlwZW9mIHQ9PSJzdHJpbmciP3RoaXMuc2V0SW1hZ2UodCx0KTp0IGluc3RhbmNlb2YgdG4/dGhpcy5zZXRJbWFnZSh0LnVybCx0KTptKHQuc3JjKT90aGlzLnNldEltYWdlKHQuc3JjLHQpOnRoaXMuc2V0SW1hZ2UoQnMoKSx0KToodGhpcy5faW1hZ2VJbmRleD0tMSx0aGlzLl9pbWFnZVN1YlJlZ2lvbj12b2lkIDAsdGhpcy5faW1hZ2VJZD12b2lkIDAsdGhpcy5faW1hZ2U9dm9pZCAwLHRoaXMuX2ltYWdlSW5kZXhQcm9taXNlPXZvaWQgMCxibih0aGlzLGlJKSl9fSxyZWFkeTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ltYWdlSW5kZXghPT0tMX19LF9jbGFtcGVkUG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3R1YWxDbGFtcGVkUG9zaXRpb259LHNldDpmdW5jdGlvbih0KXt0aGlzLl9hY3R1YWxDbGFtcGVkUG9zaXRpb249bC5jbG9uZSh0LHRoaXMuX2FjdHVhbENsYW1wZWRQb3NpdGlvbiksYm4odGhpcyxlSSl9fSxjbHVzdGVyU2hvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJTaG93fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlclNob3chPT10JiYodGhpcy5fY2x1c3RlclNob3c9dCxibih0aGlzLGNEKSl9fSxvdXRsaW5lQ29sb3I6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vdXRsaW5lQ29sb3J9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5fb3V0bGluZUNvbG9yO1p0LmVxdWFscyhlLHQpfHwoWnQuY2xvbmUodCxlKSxibih0aGlzLGREKSl9fSxvdXRsaW5lV2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vdXRsaW5lV2lkdGh9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9vdXRsaW5lV2lkdGghPT10JiYodGhpcy5fb3V0bGluZVdpZHRoPXQsYm4odGhpcyxkRCkpfX19KTtUaS5wcm90b3R5cGUuZ2V0UGlja0lkPWZ1bmN0aW9uKHQpe3JldHVybiBtKHRoaXMuX3BpY2tJZCl8fCh0aGlzLl9waWNrSWQ9dC5jcmVhdGVQaWNrSWQoe3ByaW1pdGl2ZTp0aGlzLl9waWNrUHJpbWl0aXZlLGNvbGxlY3Rpb246dGhpcy5fY29sbGVjdGlvbixpZDp0aGlzLl9pZH0pKSx0aGlzLl9waWNrSWR9O1RpLnByb3RvdHlwZS5fdXBkYXRlQ2xhbXBpbmc9ZnVuY3Rpb24oKXtUaS5fdXBkYXRlQ2xhbXBpbmcodGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbix0aGlzKX07bkk9bmV3IHV0O1RpLl91cGRhdGVDbGFtcGluZz1mdW5jdGlvbih0LGUpe2xldCBpPXQuX3NjZW5lO2lmKCFtKGkpKXtpZihlLl9oZWlnaHRSZWZlcmVuY2UhPT1Xci5OT05FKXRocm93IG5ldyBZKCJIZWlnaHQgcmVmZXJlbmNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aG91dCBhIHNjZW5lLiIpO3JldHVybn1sZXQgbj1pLmdsb2JlLHM9WihuPy5lbGxpcHNvaWQsb3QuV0dTODQpLG89aS5mcmFtZVN0YXRlLm1vZGUscj1vIT09ZS5fbW9kZTtpZihlLl9tb2RlPW8sKGUuX2hlaWdodFJlZmVyZW5jZT09PVdyLk5PTkV8fHIpJiZtKGUuX3JlbW92ZUNhbGxiYWNrRnVuYykmJihlLl9yZW1vdmVDYWxsYmFja0Z1bmMoKSxlLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwLGUuX2NsYW1wZWRQb3NpdGlvbj12b2lkIDApLGUuX2hlaWdodFJlZmVyZW5jZT09PVdyLk5PTkV8fCFtKGUuX3Bvc2l0aW9uKSlyZXR1cm47bShlLl9yZW1vdmVDYWxsYmFja0Z1bmMpJiZlLl9yZW1vdmVDYWxsYmFja0Z1bmMoKTtsZXQgYT1zLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUuX3Bvc2l0aW9uKTtpZighbShhKSl7ZS5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uPXZvaWQgMDtyZXR1cm59ZnVuY3Rpb24gaChkKXtsZXQgZj1zLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGQsZS5fY2xhbXBlZFBvc2l0aW9uKTtlRChlLl9oZWlnaHRSZWZlcmVuY2UpJiYoZS5fbW9kZT09PXllLlNDRU5FM0Q/KGQuaGVpZ2h0Kz1hLmhlaWdodCxzLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGQsZikpOmYueCs9YS5oZWlnaHQpLGUuX2NsYW1wZWRQb3NpdGlvbj1mfWUuX3JlbW92ZUNhbGxiYWNrRnVuYz1pLnVwZGF0ZUhlaWdodChhLGgsZS5faGVpZ2h0UmVmZXJlbmNlKSx1dC5jbG9uZShhLG5JKTtsZXQgQT1pLmdldEhlaWdodChhLGUuX2hlaWdodFJlZmVyZW5jZSk7bShBKSYmKG5JLmhlaWdodD1BKSxoKG5JKX07VGkucHJvdG90eXBlLl9sb2FkSW1hZ2U9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl90ZXh0dXJlQXRsYXMsZT10aGlzLl9pbWFnZUlkLGk9dGhpcy5faW1hZ2Usbj10aGlzLl9pbWFnZVN1YlJlZ2lvbixzLG89dGhpcztmdW5jdGlvbiByKGgpe2lmKG8uX2ltYWdlSWQhPT1lfHxvLl9pbWFnZSE9PWl8fCFtaS5lcXVhbHMoby5faW1hZ2VTdWJSZWdpb24sbikpcmV0dXJuO2xldCBBPXQudGV4dHVyZUNvb3JkaW5hdGVzW2hdO28uX2ltYWdlV2lkdGg9dC50ZXh0dXJlLndpZHRoKkEud2lkdGgsby5faW1hZ2VIZWlnaHQ9dC50ZXh0dXJlLmhlaWdodCpBLmhlaWdodCxvLl9pbWFnZUluZGV4PWgsby5fcmVhZHk9ITAsby5faW1hZ2U9dm9pZCAwLG8uX2ltYWdlSW5kZXhQcm9taXNlPXZvaWQgMCxibihvLGlJKTtsZXQgZD1vLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl9zY2VuZTttKGQpJiZkLmZyYW1lU3RhdGUuYWZ0ZXJSZW5kZXIucHVzaCgoKT0+ITApfWlmKG0oaSkmJihzPXQuYWRkSW1hZ2UoZSxpKSksbShuKSYmKHM9dC5hZGRTdWJSZWdpb24oZSxuKSksdGhpcy5faW1hZ2VJbmRleFByb21pc2U9cywhbShzKSlyZXR1cm47bGV0IGE9dC5nZXRJbWFnZUluZGV4KGUpO2lmKG0oYSkmJiFtKG4pKXtyKGEpO3JldHVybn1zLnRoZW4ocikuY2F0Y2goZnVuY3Rpb24oaCl7Y29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBpbWFnZSBmb3IgYmlsbGJvYXJkOiAke2h9YCksby5faW1hZ2VJbmRleFByb21pc2U9dm9pZCAwfSl9O1RpLnByb3RvdHlwZS5zZXRJbWFnZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpZCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiaW1hZ2UgaXMgcmVxdWlyZWQuIik7dGhpcy5faW1hZ2VJZCE9PXQmJih0aGlzLl9pbWFnZUluZGV4PS0xLHRoaXMuX2ltYWdlU3ViUmVnaW9uPXZvaWQgMCx0aGlzLl9pbWFnZUlkPXQsdGhpcy5faW1hZ2U9ZSxtKHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uX3RleHR1cmVBdGxhcykmJnRoaXMuX2xvYWRJbWFnZSgpKX07VGkucHJvdG90eXBlLnNldEltYWdlU3ViUmVnaW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzdWJSZWdpb24gaXMgcmVxdWlyZWQuIik7dGhpcy5faW1hZ2VJZD09PXQmJm1pLmVxdWFscyh0aGlzLl9pbWFnZVN1YlJlZ2lvbixlKXx8KHRoaXMuX2ltYWdlSW5kZXg9LTEsdGhpcy5faW1hZ2VJZD10LHRoaXMuX2ltYWdlU3ViUmVnaW9uPW1pLmNsb25lKGUpLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbi5fdGV4dHVyZUF0bGFzKSYmdGhpcy5fbG9hZEltYWdlKCkpfTtUaS5wcm90b3R5cGUuX3NldFRyYW5zbGF0ZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5fdHJhbnNsYXRlO250LmVxdWFscyhlLHQpfHwobnQuY2xvbmUodCxlKSxibih0aGlzLGZEKSl9O1RpLnByb3RvdHlwZS5fZ2V0QWN0dWFsUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9jbGFtcGVkUG9zaXRpb24pP3RoaXMuX2NsYW1wZWRQb3NpdGlvbjp0aGlzLl9hY3R1YWxQb3NpdGlvbn07VGkucHJvdG90eXBlLl9zZXRBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbih0KXttKHRoaXMuX2NsYW1wZWRQb3NpdGlvbil8fGwuY2xvbmUodCx0aGlzLl9hY3R1YWxQb3NpdGlvbiksYm4odGhpcyxlSSl9O21EPW5ldyBpZTtUaS5fY29tcHV0ZUFjdHVhbFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBtKHQuX2NsYW1wZWRQb3NpdGlvbik/KGkubW9kZSE9PXQuX21vZGUmJnQuX3VwZGF0ZUNsYW1waW5nKCksdC5fY2xhbXBlZFBvc2l0aW9uKTppLm1vZGU9PT15ZS5TQ0VORTNEP2U6KGF0Lm11bHRpcGx5QnlQb2ludChuLGUsbUQpLEJtLmNvbXB1dGVBY3R1YWxXZ3M4NFBvc2l0aW9uKGksbUQpKX07RUQ9bmV3IGw7VGkuX2NvbXB1dGVTY3JlZW5TcGFjZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj1hdC5tdWx0aXBseUJ5UG9pbnQodCxlLEVEKSxhPUJtLndnczg0V2l0aEV5ZU9mZnNldFRvV2luZG93Q29vcmRpbmF0ZXMocyxyLGksbyk7aWYobShhKSlyZXR1cm4gbnQuYWRkKGEsbixhKSxhfTt0ST1uZXcgbnQoMCwwKTtUaS5wcm90b3R5cGUuY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb249ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uO2lmKG0oZSl8fChlPW5ldyBudCksIW0oaSkpdGhyb3cgbmV3IFkoIkJpbGxib2FyZCBtdXN0IGJlIGluIGEgY29sbGVjdGlvbi4gIFdhcyBpdCByZW1vdmVkPyIpO2lmKCFtKHQpKXRocm93IG5ldyBZKCJzY2VuZSBpcyByZXF1aXJlZC4iKTtudC5jbG9uZSh0aGlzLl9waXhlbE9mZnNldCx0SSksbnQuYWRkKHRJLHRoaXMuX3RyYW5zbGF0ZSx0SSk7bGV0IG49aS5tb2RlbE1hdHJpeCxzPXRoaXMuX3Bvc2l0aW9uO2lmKG0odGhpcy5fY2xhbXBlZFBvc2l0aW9uKSYmKHM9dGhpcy5fY2xhbXBlZFBvc2l0aW9uLHQubW9kZSE9PXllLlNDRU5FM0QpKXtsZXQgcj10Lm1hcFByb2plY3Rpb24sYT1yLmVsbGlwc29pZCxoPXIudW5wcm9qZWN0KHMsbkkpO3M9YS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihoLEVEKSxuPWF0LklERU5USVRZfXJldHVybiBUaS5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24obixzLHRoaXMuX2V5ZU9mZnNldCx0SSx0LGUpfTtUaS5nZXRTY3JlZW5TcGFjZUJvdW5kaW5nQm94PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LndpZHRoLHM9dC5oZWlnaHQsbz10LnNjYWxlO24qPW8scyo9bztsZXQgcj1lLng7dC5ob3Jpem9udGFsT3JpZ2luPT09dG8uUklHSFQ/ci09bjp0Lmhvcml6b250YWxPcmlnaW49PT10by5DRU5URVImJihyLT1uKi41KTtsZXQgYT1lLnk7cmV0dXJuIHQudmVydGljYWxPcmlnaW49PT1tbi5CT1RUT018fHQudmVydGljYWxPcmlnaW49PT1tbi5CQVNFTElORT9hLT1zOnQudmVydGljYWxPcmlnaW49PT1tbi5DRU5URVImJihhLT1zKi41KSxtKGkpfHwoaT1uZXcgbWkpLGkueD1yLGkueT1hLGkud2lkdGg9bixpLmhlaWdodD1zLGl9O1RpLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHxtKHQpJiZ0aGlzLl9pZD09PXQuX2lkJiZsLmVxdWFscyh0aGlzLl9wb3NpdGlvbix0Ll9wb3NpdGlvbikmJnRoaXMuX2ltYWdlSWQ9PT10Ll9pbWFnZUlkJiZ0aGlzLl9zaG93PT09dC5fc2hvdyYmdGhpcy5fc2NhbGU9PT10Ll9zY2FsZSYmdGhpcy5fdmVydGljYWxPcmlnaW49PT10Ll92ZXJ0aWNhbE9yaWdpbiYmdGhpcy5faG9yaXpvbnRhbE9yaWdpbj09PXQuX2hvcml6b250YWxPcmlnaW4mJnRoaXMuX2hlaWdodFJlZmVyZW5jZT09PXQuX2hlaWdodFJlZmVyZW5jZSYmbWkuZXF1YWxzKHRoaXMuX2ltYWdlU3ViUmVnaW9uLHQuX2ltYWdlU3ViUmVnaW9uKSYmWnQuZXF1YWxzKHRoaXMuX2NvbG9yLHQuX2NvbG9yKSYmbnQuZXF1YWxzKHRoaXMuX3BpeGVsT2Zmc2V0LHQuX3BpeGVsT2Zmc2V0KSYmbnQuZXF1YWxzKHRoaXMuX3RyYW5zbGF0ZSx0Ll90cmFuc2xhdGUpJiZsLmVxdWFscyh0aGlzLl9leWVPZmZzZXQsdC5fZXllT2Zmc2V0KSYmZ2kuZXF1YWxzKHRoaXMuX3NjYWxlQnlEaXN0YW5jZSx0Ll9zY2FsZUJ5RGlzdGFuY2UpJiZnaS5lcXVhbHModGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0Ll90cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSYmZ2kuZXF1YWxzKHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLHQuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlKSYmV28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0Ll9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pJiZ0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9PT10Ll9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2V9O1RpLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbigpe20odGhpcy5fY3VzdG9tRGF0YSkmJih0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl9zY2VuZS5nbG9iZS5fc3VyZmFjZS5yZW1vdmVUaWxlQ3VzdG9tRGF0YSh0aGlzLl9jdXN0b21EYXRhKSx0aGlzLl9jdXN0b21EYXRhPXZvaWQgMCksbSh0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmMpJiYodGhpcy5fcmVtb3ZlQ2FsbGJhY2tGdW5jKCksdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGdW5jPXZvaWQgMCksdGhpcy5pbWFnZT12b2lkIDAsdGhpcy5fcGlja0lkPXRoaXMuX3BpY2tJZCYmdGhpcy5fcGlja0lkLmRlc3Ryb3koKSx0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uPXZvaWQgMH07dW49VGl9KTt2YXIgRCQsaXQsc3M9UygoKT0+e0QkPXtERVBUSF9CVUZGRVJfQklUOjI1NixTVEVOQ0lMX0JVRkZFUl9CSVQ6MTAyNCxDT0xPUl9CVUZGRVJfQklUOjE2Mzg0LFBPSU5UUzowLExJTkVTOjEsTElORV9MT09QOjIsTElORV9TVFJJUDozLFRSSUFOR0xFUzo0LFRSSUFOR0xFX1NUUklQOjUsVFJJQU5HTEVfRkFOOjYsWkVSTzowLE9ORToxLFNSQ19DT0xPUjo3NjgsT05FX01JTlVTX1NSQ19DT0xPUjo3NjksU1JDX0FMUEhBOjc3MCxPTkVfTUlOVVNfU1JDX0FMUEhBOjc3MSxEU1RfQUxQSEE6NzcyLE9ORV9NSU5VU19EU1RfQUxQSEE6NzczLERTVF9DT0xPUjo3NzQsT05FX01JTlVTX0RTVF9DT0xPUjo3NzUsU1JDX0FMUEhBX1NBVFVSQVRFOjc3NixGVU5DX0FERDozMjc3NCxCTEVORF9FUVVBVElPTjozMjc3NyxCTEVORF9FUVVBVElPTl9SR0I6MzI3NzcsQkxFTkRfRVFVQVRJT05fQUxQSEE6MzQ4NzcsRlVOQ19TVUJUUkFDVDozMjc3OCxGVU5DX1JFVkVSU0VfU1VCVFJBQ1Q6MzI3NzksQkxFTkRfRFNUX1JHQjozMjk2OCxCTEVORF9TUkNfUkdCOjMyOTY5LEJMRU5EX0RTVF9BTFBIQTozMjk3MCxCTEVORF9TUkNfQUxQSEE6MzI5NzEsQ09OU1RBTlRfQ09MT1I6MzI3NjksT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOjMyNzcwLENPTlNUQU5UX0FMUEhBOjMyNzcxLE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQTozMjc3MixCTEVORF9DT0xPUjozMjc3MyxBUlJBWV9CVUZGRVI6MzQ5NjIsRUxFTUVOVF9BUlJBWV9CVUZGRVI6MzQ5NjMsQVJSQVlfQlVGRkVSX0JJTkRJTkc6MzQ5NjQsRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzozNDk2NSxTVFJFQU1fRFJBVzozNTA0MCxTVEFUSUNfRFJBVzozNTA0NCxEWU5BTUlDX0RSQVc6MzUwNDgsQlVGRkVSX1NJWkU6MzQ2NjAsQlVGRkVSX1VTQUdFOjM0NjYxLENVUlJFTlRfVkVSVEVYX0FUVFJJQjozNDM0MixGUk9OVDoxMDI4LEJBQ0s6MTAyOSxGUk9OVF9BTkRfQkFDSzoxMDMyLENVTExfRkFDRToyODg0LEJMRU5EOjMwNDIsRElUSEVSOjMwMjQsU1RFTkNJTF9URVNUOjI5NjAsREVQVEhfVEVTVDoyOTI5LFNDSVNTT1JfVEVTVDozMDg5LFBPTFlHT05fT0ZGU0VUX0ZJTEw6MzI4MjMsU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFOjMyOTI2LFNBTVBMRV9DT1ZFUkFHRTozMjkyOCxOT19FUlJPUjowLElOVkFMSURfRU5VTToxMjgwLElOVkFMSURfVkFMVUU6MTI4MSxJTlZBTElEX09QRVJBVElPTjoxMjgyLE9VVF9PRl9NRU1PUlk6MTI4NSxDVzoyMzA0LENDVzoyMzA1LExJTkVfV0lEVEg6Mjg0OSxBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6MzM5MDEsQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOjMzOTAyLENVTExfRkFDRV9NT0RFOjI4ODUsRlJPTlRfRkFDRToyODg2LERFUFRIX1JBTkdFOjI5MjgsREVQVEhfV1JJVEVNQVNLOjI5MzAsREVQVEhfQ0xFQVJfVkFMVUU6MjkzMSxERVBUSF9GVU5DOjI5MzIsU1RFTkNJTF9DTEVBUl9WQUxVRToyOTYxLFNURU5DSUxfRlVOQzoyOTYyLFNURU5DSUxfRkFJTDoyOTY0LFNURU5DSUxfUEFTU19ERVBUSF9GQUlMOjI5NjUsU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6Mjk2NixTVEVOQ0lMX1JFRjoyOTY3LFNURU5DSUxfVkFMVUVfTUFTSzoyOTYzLFNURU5DSUxfV1JJVEVNQVNLOjI5NjgsU1RFTkNJTF9CQUNLX0ZVTkM6MzQ4MTYsU1RFTkNJTF9CQUNLX0ZBSUw6MzQ4MTcsU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTDozNDgxOCxTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTOjM0ODE5LFNURU5DSUxfQkFDS19SRUY6MzYwMDMsU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6MzYwMDQsU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzozNjAwNSxWSUVXUE9SVDoyOTc4LFNDSVNTT1JfQk9YOjMwODgsQ09MT1JfQ0xFQVJfVkFMVUU6MzEwNixDT0xPUl9XUklURU1BU0s6MzEwNyxVTlBBQ0tfQUxJR05NRU5UOjMzMTcsUEFDS19BTElHTk1FTlQ6MzMzMyxNQVhfVEVYVFVSRV9TSVpFOjMzNzksTUFYX1ZJRVdQT1JUX0RJTVM6MzM4NixTVUJQSVhFTF9CSVRTOjM0MDgsUkVEX0JJVFM6MzQxMCxHUkVFTl9CSVRTOjM0MTEsQkxVRV9CSVRTOjM0MTIsQUxQSEFfQklUUzozNDEzLERFUFRIX0JJVFM6MzQxNCxTVEVOQ0lMX0JJVFM6MzQxNSxQT0xZR09OX09GRlNFVF9VTklUUzoxMDc1MixQT0xZR09OX09GRlNFVF9GQUNUT1I6MzI4MjQsVEVYVFVSRV9CSU5ESU5HXzJEOjMyODczLFNBTVBMRV9CVUZGRVJTOjMyOTM2LFNBTVBMRVM6MzI5MzcsU0FNUExFX0NPVkVSQUdFX1ZBTFVFOjMyOTM4LFNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6MzI5MzksQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6MzQ0NjcsRE9OVF9DQVJFOjQzNTIsRkFTVEVTVDo0MzUzLE5JQ0VTVDo0MzU0LEdFTkVSQVRFX01JUE1BUF9ISU5UOjMzMTcwLEJZVEU6NTEyMCxVTlNJR05FRF9CWVRFOjUxMjEsU0hPUlQ6NTEyMixVTlNJR05FRF9TSE9SVDo1MTIzLElOVDo1MTI0LFVOU0lHTkVEX0lOVDo1MTI1LEZMT0FUOjUxMjYsREVQVEhfQ09NUE9ORU5UOjY0MDIsQUxQSEE6NjQwNixSR0I6NjQwNyxSR0JBOjY0MDgsTFVNSU5BTkNFOjY0MDksTFVNSU5BTkNFX0FMUEhBOjY0MTAsVU5TSUdORURfU0hPUlRfNF80XzRfNDozMjgxOSxVTlNJR05FRF9TSE9SVF81XzVfNV8xOjMyODIwLFVOU0lHTkVEX1NIT1JUXzVfNl81OjMzNjM1LEZSQUdNRU5UX1NIQURFUjozNTYzMixWRVJURVhfU0hBREVSOjM1NjMzLE1BWF9WRVJURVhfQVRUUklCUzozNDkyMSxNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzozNjM0NyxNQVhfVkFSWUlOR19WRUNUT1JTOjM2MzQ4LE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOjM1NjYxLE1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUzozNTY2MCxNQVhfVEVYVFVSRV9JTUFHRV9VTklUUzozNDkzMCxNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOjM2MzQ5LFNIQURFUl9UWVBFOjM1NjYzLERFTEVURV9TVEFUVVM6MzU3MTIsTElOS19TVEFUVVM6MzU3MTQsVkFMSURBVEVfU1RBVFVTOjM1NzE1LEFUVEFDSEVEX1NIQURFUlM6MzU3MTcsQUNUSVZFX1VOSUZPUk1TOjM1NzE4LEFDVElWRV9BVFRSSUJVVEVTOjM1NzIxLFNIQURJTkdfTEFOR1VBR0VfVkVSU0lPTjozNTcyNCxDVVJSRU5UX1BST0dSQU06MzU3MjUsTkVWRVI6NTEyLExFU1M6NTEzLEVRVUFMOjUxNCxMRVFVQUw6NTE1LEdSRUFURVI6NTE2LE5PVEVRVUFMOjUxNyxHRVFVQUw6NTE4LEFMV0FZUzo1MTksS0VFUDo3NjgwLFJFUExBQ0U6NzY4MSxJTkNSOjc2ODIsREVDUjo3NjgzLElOVkVSVDo1Mzg2LElOQ1JfV1JBUDozNDA1NSxERUNSX1dSQVA6MzQwNTYsVkVORE9SOjc5MzYsUkVOREVSRVI6NzkzNyxWRVJTSU9OOjc5MzgsTkVBUkVTVDo5NzI4LExJTkVBUjo5NzI5LE5FQVJFU1RfTUlQTUFQX05FQVJFU1Q6OTk4NCxMSU5FQVJfTUlQTUFQX05FQVJFU1Q6OTk4NSxORUFSRVNUX01JUE1BUF9MSU5FQVI6OTk4NixMSU5FQVJfTUlQTUFQX0xJTkVBUjo5OTg3LFRFWFRVUkVfTUFHX0ZJTFRFUjoxMDI0MCxURVhUVVJFX01JTl9GSUxURVI6MTAyNDEsVEVYVFVSRV9XUkFQX1M6MTAyNDIsVEVYVFVSRV9XUkFQX1Q6MTAyNDMsVEVYVFVSRV8yRDozNTUzLFRFWFRVUkU6NTg5MCxURVhUVVJFX0NVQkVfTUFQOjM0MDY3LFRFWFRVUkVfQklORElOR19DVUJFX01BUDozNDA2OCxURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6MzQwNjksVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOjM0MDcwLFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWTozNDA3MSxURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6MzQwNzIsVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOjM0MDczLFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjozNDA3NCxNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOjM0MDc2LFRFWFRVUkUwOjMzOTg0LFRFWFRVUkUxOjMzOTg1LFRFWFRVUkUyOjMzOTg2LFRFWFRVUkUzOjMzOTg3LFRFWFRVUkU0OjMzOTg4LFRFWFRVUkU1OjMzOTg5LFRFWFRVUkU2OjMzOTkwLFRFWFRVUkU3OjMzOTkxLFRFWFRVUkU4OjMzOTkyLFRFWFRVUkU5OjMzOTkzLFRFWFRVUkUxMDozMzk5NCxURVhUVVJFMTE6MzM5OTUsVEVYVFVSRTEyOjMzOTk2LFRFWFRVUkUxMzozMzk5NyxURVhUVVJFMTQ6MzM5OTgsVEVYVFVSRTE1OjMzOTk5LFRFWFRVUkUxNjozNGUzLFRFWFRVUkUxNzozNDAwMSxURVhUVVJFMTg6MzQwMDIsVEVYVFVSRTE5OjM0MDAzLFRFWFRVUkUyMDozNDAwNCxURVhUVVJFMjE6MzQwMDUsVEVYVFVSRTIyOjM0MDA2LFRFWFRVUkUyMzozNDAwNyxURVhUVVJFMjQ6MzQwMDgsVEVYVFVSRTI1OjM0MDA5LFRFWFRVUkUyNjozNDAxMCxURVhUVVJFMjc6MzQwMTEsVEVYVFVSRTI4OjM0MDEyLFRFWFRVUkUyOTozNDAxMyxURVhUVVJFMzA6MzQwMTQsVEVYVFVSRTMxOjM0MDE1LEFDVElWRV9URVhUVVJFOjM0MDE2LFJFUEVBVDoxMDQ5NyxDTEFNUF9UT19FREdFOjMzMDcxLE1JUlJPUkVEX1JFUEVBVDozMzY0OCxGTE9BVF9WRUMyOjM1NjY0LEZMT0FUX1ZFQzM6MzU2NjUsRkxPQVRfVkVDNDozNTY2NixJTlRfVkVDMjozNTY2NyxJTlRfVkVDMzozNTY2OCxJTlRfVkVDNDozNTY2OSxCT09MOjM1NjcwLEJPT0xfVkVDMjozNTY3MSxCT09MX1ZFQzM6MzU2NzIsQk9PTF9WRUM0OjM1NjczLEZMT0FUX01BVDI6MzU2NzQsRkxPQVRfTUFUMzozNTY3NSxGTE9BVF9NQVQ0OjM1Njc2LFNBTVBMRVJfMkQ6MzU2NzgsU0FNUExFUl9DVUJFOjM1NjgwLFZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDozNDMzOCxWRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6MzQzMzksVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6MzQzNDAsVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOjM0MzQxLFZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDozNDkyMixWRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVI6MzQzNzMsVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzozNDk3NSxJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6MzU3MzgsSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6MzU3MzksQ09NUElMRV9TVEFUVVM6MzU3MTMsTE9XX0ZMT0FUOjM2MzM2LE1FRElVTV9GTE9BVDozNjMzNyxISUdIX0ZMT0FUOjM2MzM4LExPV19JTlQ6MzYzMzksTUVESVVNX0lOVDozNjM0MCxISUdIX0lOVDozNjM0MSxGUkFNRUJVRkZFUjozNjE2MCxSRU5ERVJCVUZGRVI6MzYxNjEsUkdCQTQ6MzI4NTQsUkdCNV9BMTozMjg1NSxSR0I1NjU6MzYxOTQsREVQVEhfQ09NUE9ORU5UMTY6MzMxODksU1RFTkNJTF9JTkRFWDo2NDAxLFNURU5DSUxfSU5ERVg4OjM2MTY4LERFUFRIX1NURU5DSUw6MzQwNDEsUkVOREVSQlVGRkVSX1dJRFRIOjM2MTYyLFJFTkRFUkJVRkZFUl9IRUlHSFQ6MzYxNjMsUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDozNjE2NCxSRU5ERVJCVUZGRVJfUkVEX1NJWkU6MzYxNzYsUkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6MzYxNzcsUkVOREVSQlVGRkVSX0JMVUVfU0laRTozNjE3OCxSRU5ERVJCVUZGRVJfQUxQSEFfU0laRTozNjE3OSxSRU5ERVJCVUZGRVJfREVQVEhfU0laRTozNjE4MCxSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOjM2MTgxLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEU6MzYwNDgsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRTozNjA0OSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUw6MzYwNTAsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0U6MzYwNTEsQ09MT1JfQVRUQUNITUVOVDA6MzYwNjQsREVQVEhfQVRUQUNITUVOVDozNjA5NixTVEVOQ0lMX0FUVEFDSE1FTlQ6MzYxMjgsREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOjMzMzA2LE5PTkU6MCxGUkFNRUJVRkZFUl9DT01QTEVURTozNjA1MyxGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ6MzYwNTQsRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQ6MzYwNTUsRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TOjM2MDU3LEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOjM2MDYxLEZSQU1FQlVGRkVSX0JJTkRJTkc6MzYwMDYsUkVOREVSQlVGRkVSX0JJTkRJTkc6MzYwMDcsTUFYX1JFTkRFUkJVRkZFUl9TSVpFOjM0MDI0LElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OOjEyODYsVU5QQUNLX0ZMSVBfWV9XRUJHTDozNzQ0MCxVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0w6Mzc0NDEsQ09OVEVYVF9MT1NUX1dFQkdMOjM3NDQyLFVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0w6Mzc0NDMsQlJPV1NFUl9ERUZBVUxUX1dFQkdMOjM3NDQ0LENPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6MzM3NzYsQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6MzM3NzcsQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ6MzM3NzgsQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQ6MzM3NzksQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRzozNTg0MCxDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HOjM1ODQxLENPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HOjM1ODQyLENPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HOjM1ODQzLENPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9XRUJHTDozNzgwOCxDT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOjM2MTk2LENPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNOjM2NDkyLEhBTEZfRkxPQVRfT0VTOjM2MTkzLERPVUJMRTo1MTMwLFJFQURfQlVGRkVSOjMwNzQsVU5QQUNLX1JPV19MRU5HVEg6MzMxNCxVTlBBQ0tfU0tJUF9ST1dTOjMzMTUsVU5QQUNLX1NLSVBfUElYRUxTOjMzMTYsUEFDS19ST1dfTEVOR1RIOjMzMzAsUEFDS19TS0lQX1JPV1M6MzMzMSxQQUNLX1NLSVBfUElYRUxTOjMzMzIsQ09MT1I6NjE0NCxERVBUSDo2MTQ1LFNURU5DSUw6NjE0NixSRUQ6NjQwMyxSR0I4OjMyODQ5LFJHQkE4OjMyODU2LFJHQjEwX0EyOjMyODU3LFRFWFRVUkVfQklORElOR18zRDozMjg3NCxVTlBBQ0tfU0tJUF9JTUFHRVM6MzI4NzcsVU5QQUNLX0lNQUdFX0hFSUdIVDozMjg3OCxURVhUVVJFXzNEOjMyODc5LFRFWFRVUkVfV1JBUF9SOjMyODgyLE1BWF8zRF9URVhUVVJFX1NJWkU6MzI4ODMsVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOjMzNjQwLE1BWF9FTEVNRU5UU19WRVJUSUNFUzozM2UzLE1BWF9FTEVNRU5UU19JTkRJQ0VTOjMzMDAxLFRFWFRVUkVfTUlOX0xPRDozMzA4MixURVhUVVJFX01BWF9MT0Q6MzMwODMsVEVYVFVSRV9CQVNFX0xFVkVMOjMzMDg0LFRFWFRVUkVfTUFYX0xFVkVMOjMzMDg1LE1JTjozMjc3NSxNQVg6MzI3NzYsREVQVEhfQ09NUE9ORU5UMjQ6MzMxOTAsTUFYX1RFWFRVUkVfTE9EX0JJQVM6MzQwNDUsVEVYVFVSRV9DT01QQVJFX01PREU6MzQ4OTIsVEVYVFVSRV9DT01QQVJFX0ZVTkM6MzQ4OTMsQ1VSUkVOVF9RVUVSWTozNDkxNyxRVUVSWV9SRVNVTFQ6MzQ5MTgsUVVFUllfUkVTVUxUX0FWQUlMQUJMRTozNDkxOSxTVFJFQU1fUkVBRDozNTA0MSxTVFJFQU1fQ09QWTozNTA0MixTVEFUSUNfUkVBRDozNTA0NSxTVEFUSUNfQ09QWTozNTA0NixEWU5BTUlDX1JFQUQ6MzUwNDksRFlOQU1JQ19DT1BZOjM1MDUwLE1BWF9EUkFXX0JVRkZFUlM6MzQ4NTIsRFJBV19CVUZGRVIwOjM0ODUzLERSQVdfQlVGRkVSMTozNDg1NCxEUkFXX0JVRkZFUjI6MzQ4NTUsRFJBV19CVUZGRVIzOjM0ODU2LERSQVdfQlVGRkVSNDozNDg1NyxEUkFXX0JVRkZFUjU6MzQ4NTgsRFJBV19CVUZGRVI2OjM0ODU5LERSQVdfQlVGRkVSNzozNDg2MCxEUkFXX0JVRkZFUjg6MzQ4NjEsRFJBV19CVUZGRVI5OjM0ODYyLERSQVdfQlVGRkVSMTA6MzQ4NjMsRFJBV19CVUZGRVIxMTozNDg2NCxEUkFXX0JVRkZFUjEyOjM0ODY1LERSQVdfQlVGRkVSMTM6MzQ4NjYsRFJBV19CVUZGRVIxNDozNDg2NyxEUkFXX0JVRkZFUjE1OjM0ODY4LE1BWF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFM6MzU2NTcsTUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFM6MzU2NTgsU0FNUExFUl8zRDozNTY3OSxTQU1QTEVSXzJEX1NIQURPVzozNTY4MixGUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UOjM1NzIzLFBJWEVMX1BBQ0tfQlVGRkVSOjM1MDUxLFBJWEVMX1VOUEFDS19CVUZGRVI6MzUwNTIsUElYRUxfUEFDS19CVUZGRVJfQklORElORzozNTA1MyxQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkc6MzUwNTUsRkxPQVRfTUFUMngzOjM1Njg1LEZMT0FUX01BVDJ4NDozNTY4NixGTE9BVF9NQVQzeDI6MzU2ODcsRkxPQVRfTUFUM3g0OjM1Njg4LEZMT0FUX01BVDR4MjozNTY4OSxGTE9BVF9NQVQ0eDM6MzU2OTAsU1JHQjozNTkwNCxTUkdCODozNTkwNSxTUkdCOF9BTFBIQTg6MzU5MDcsQ09NUEFSRV9SRUZfVE9fVEVYVFVSRTozNDg5NCxSR0JBMzJGOjM0ODM2LFJHQjMyRjozNDgzNyxSR0JBMTZGOjM0ODQyLFJHQjE2RjozNDg0MyxWRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVI6MzUwNjksTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTOjM1MDcxLE1JTl9QUk9HUkFNX1RFWEVMX09GRlNFVDozNTA3NixNQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQ6MzUwNzcsTUFYX1ZBUllJTkdfQ09NUE9ORU5UUzozNTY1OSxURVhUVVJFXzJEX0FSUkFZOjM1ODY2LFRFWFRVUkVfQklORElOR18yRF9BUlJBWTozNTg2OSxSMTFGX0cxMUZfQjEwRjozNTg5OCxVTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWOjM1ODk5LFJHQjlfRTU6MzU5MDEsVU5TSUdORURfSU5UXzVfOV85XzlfUkVWOjM1OTAyLFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERTozNTk2NyxNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFM6MzU5NjgsVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTOjM1OTcxLFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQ6MzU5NzIsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOjM1OTczLFRSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU46MzU5NzYsUkFTVEVSSVpFUl9ESVNDQVJEOjM1OTc3LE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzozNTk3OCxNQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlM6MzU5NzksSU5URVJMRUFWRURfQVRUUklCUzozNTk4MCxTRVBBUkFURV9BVFRSSUJTOjM1OTgxLFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6MzU5ODIsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5ESU5HOjM1OTgzLFJHQkEzMlVJOjM2MjA4LFJHQjMyVUk6MzYyMDksUkdCQTE2VUk6MzYyMTQsUkdCMTZVSTozNjIxNSxSR0JBOFVJOjM2MjIwLFJHQjhVSTozNjIyMSxSR0JBMzJJOjM2MjI2LFJHQjMySTozNjIyNyxSR0JBMTZJOjM2MjMyLFJHQjE2STozNjIzMyxSR0JBOEk6MzYyMzgsUkdCOEk6MzYyMzksUkVEX0lOVEVHRVI6MzYyNDQsUkdCX0lOVEVHRVI6MzYyNDgsUkdCQV9JTlRFR0VSOjM2MjQ5LFNBTVBMRVJfMkRfQVJSQVk6MzYyODksU0FNUExFUl8yRF9BUlJBWV9TSEFET1c6MzYyOTIsU0FNUExFUl9DVUJFX1NIQURPVzozNjI5MyxVTlNJR05FRF9JTlRfVkVDMjozNjI5NCxVTlNJR05FRF9JTlRfVkVDMzozNjI5NSxVTlNJR05FRF9JTlRfVkVDNDozNjI5NixJTlRfU0FNUExFUl8yRDozNjI5OCxJTlRfU0FNUExFUl8zRDozNjI5OSxJTlRfU0FNUExFUl9DVUJFOjM2MzAwLElOVF9TQU1QTEVSXzJEX0FSUkFZOjM2MzAzLFVOU0lHTkVEX0lOVF9TQU1QTEVSXzJEOjM2MzA2LFVOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOjM2MzA3LFVOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6MzYzMDgsVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk6MzYzMTEsREVQVEhfQ09NUE9ORU5UMzJGOjM2MDEyLERFUFRIMzJGX1NURU5DSUw4OjM2MDEzLEZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVjozNjI2OSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5HOjMzMjk2LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEU6MzMyOTcsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRTozMzI5OCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkU6MzMyOTksRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkU6MzMzMDAsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFOjMzMzAxLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfREVQVEhfU0laRTozMzMwMixGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1NURU5DSUxfU0laRTozMzMwMyxGUkFNRUJVRkZFUl9ERUZBVUxUOjMzMzA0LFVOU0lHTkVEX0lOVF8yNF84OjM0MDQyLERFUFRIMjRfU1RFTkNJTDg6MzUwNTYsVU5TSUdORURfTk9STUFMSVpFRDozNTg2MyxEUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkc6MzYwMDYsUkVBRF9GUkFNRUJVRkZFUjozNjAwOCxEUkFXX0ZSQU1FQlVGRkVSOjM2MDA5LFJFQURfRlJBTUVCVUZGRVJfQklORElORzozNjAxMCxSRU5ERVJCVUZGRVJfU0FNUExFUzozNjAxMSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVI6MzYwNTIsTUFYX0NPTE9SX0FUVEFDSE1FTlRTOjM2MDYzLENPTE9SX0FUVEFDSE1FTlQxOjM2MDY1LENPTE9SX0FUVEFDSE1FTlQyOjM2MDY2LENPTE9SX0FUVEFDSE1FTlQzOjM2MDY3LENPTE9SX0FUVEFDSE1FTlQ0OjM2MDY4LENPTE9SX0FUVEFDSE1FTlQ1OjM2MDY5LENPTE9SX0FUVEFDSE1FTlQ2OjM2MDcwLENPTE9SX0FUVEFDSE1FTlQ3OjM2MDcxLENPTE9SX0FUVEFDSE1FTlQ4OjM2MDcyLENPTE9SX0FUVEFDSE1FTlQ5OjM2MDczLENPTE9SX0FUVEFDSE1FTlQxMDozNjA3NCxDT0xPUl9BVFRBQ0hNRU5UMTE6MzYwNzUsQ09MT1JfQVRUQUNITUVOVDEyOjM2MDc2LENPTE9SX0FUVEFDSE1FTlQxMzozNjA3NyxDT0xPUl9BVFRBQ0hNRU5UMTQ6MzYwNzgsQ09MT1JfQVRUQUNITUVOVDE1OjM2MDc5LEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEU6MzYxODIsTUFYX1NBTVBMRVM6MzYxODMsSEFMRl9GTE9BVDo1MTMxLFJHOjMzMzE5LFJHX0lOVEVHRVI6MzMzMjAsUjg6MzMzMjEsUkc4OjMzMzIzLFIxNkY6MzMzMjUsUjMyRjozMzMyNixSRzE2RjozMzMyNyxSRzMyRjozMzMyOCxSOEk6MzMzMjksUjhVSTozMzMzMCxSMTZJOjMzMzMxLFIxNlVJOjMzMzMyLFIzMkk6MzMzMzMsUjMyVUk6MzMzMzQsUkc4STozMzMzNSxSRzhVSTozMzMzNixSRzE2STozMzMzNyxSRzE2VUk6MzMzMzgsUkczMkk6MzMzMzksUkczMlVJOjMzMzQwLFZFUlRFWF9BUlJBWV9CSU5ESU5HOjM0MjI5LFI4X1NOT1JNOjM2NzU2LFJHOF9TTk9STTozNjc1NyxSR0I4X1NOT1JNOjM2NzU4LFJHQkE4X1NOT1JNOjM2NzU5LFNJR05FRF9OT1JNQUxJWkVEOjM2NzY0LENPUFlfUkVBRF9CVUZGRVI6MzY2NjIsQ09QWV9XUklURV9CVUZGRVI6MzY2NjMsQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HOjM2NjYyLENPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkc6MzY2NjMsVU5JRk9STV9CVUZGRVI6MzUzNDUsVU5JRk9STV9CVUZGRVJfQklORElORzozNTM2OCxVTklGT1JNX0JVRkZFUl9TVEFSVDozNTM2OSxVTklGT1JNX0JVRkZFUl9TSVpFOjM1MzcwLE1BWF9WRVJURVhfVU5JRk9STV9CTE9DS1M6MzUzNzEsTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTOjM1MzczLE1BWF9DT01CSU5FRF9VTklGT1JNX0JMT0NLUzozNTM3NCxNQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1M6MzUzNzUsTUFYX1VOSUZPUk1fQkxPQ0tfU0laRTozNTM3NixNQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzozNTM3NyxNQVhfQ09NQklORURfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTOjM1Mzc5LFVOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQ6MzUzODAsQUNUSVZFX1VOSUZPUk1fQkxPQ0tTOjM1MzgyLFVOSUZPUk1fVFlQRTozNTM4MyxVTklGT1JNX1NJWkU6MzUzODQsVU5JRk9STV9CTE9DS19JTkRFWDozNTM4NixVTklGT1JNX09GRlNFVDozNTM4NyxVTklGT1JNX0FSUkFZX1NUUklERTozNTM4OCxVTklGT1JNX01BVFJJWF9TVFJJREU6MzUzODksVU5JRk9STV9JU19ST1dfTUFKT1I6MzUzOTAsVU5JRk9STV9CTE9DS19CSU5ESU5HOjM1MzkxLFVOSUZPUk1fQkxPQ0tfREFUQV9TSVpFOjM1MzkyLFVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1TOjM1Mzk0LFVOSUZPUk1fQkxPQ0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUzozNTM5NSxVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUjozNTM5NixVTklGT1JNX0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOjM1Mzk4LElOVkFMSURfSU5ERVg6NDI5NDk2NzI5NSxNQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTOjM3MTU0LE1BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTOjM3MTU3LE1BWF9TRVJWRVJfV0FJVF9USU1FT1VUOjM3MTM3LE9CSkVDVF9UWVBFOjM3MTM4LFNZTkNfQ09ORElUSU9OOjM3MTM5LFNZTkNfU1RBVFVTOjM3MTQwLFNZTkNfRkxBR1M6MzcxNDEsU1lOQ19GRU5DRTozNzE0MixTWU5DX0dQVV9DT01NQU5EU19DT01QTEVURTozNzE0MyxVTlNJR05BTEVEOjM3MTQ0LFNJR05BTEVEOjM3MTQ1LEFMUkVBRFlfU0lHTkFMRUQ6MzcxNDYsVElNRU9VVF9FWFBJUkVEOjM3MTQ3LENPTkRJVElPTl9TQVRJU0ZJRUQ6MzcxNDgsV0FJVF9GQUlMRUQ6MzcxNDksU1lOQ19GTFVTSF9DT01NQU5EU19CSVQ6MSxWRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1I6MzUwNzAsQU5ZX1NBTVBMRVNfUEFTU0VEOjM1ODg3LEFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU6MzYyMDIsU0FNUExFUl9CSU5ESU5HOjM1MDk3LFJHQjEwX0EyVUk6MzY5NzUsSU5UXzJfMTBfMTBfMTBfUkVWOjM2MjU1LFRSQU5TRk9STV9GRUVEQkFDSzozNjM4NixUUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEOjM2Mzg3LFRSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkU6MzYzODgsVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc6MzYzODksQ09NUFJFU1NFRF9SMTFfRUFDOjM3NDg4LENPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUM6Mzc0ODksQ09NUFJFU1NFRF9SRzExX0VBQzozNzQ5MCxDT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzozNzQ5MSxDT01QUkVTU0VEX1JHQjhfRVRDMjozNzQ5MixDT01QUkVTU0VEX1NSR0I4X0VUQzI6Mzc0OTMsQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjozNzQ5NCxDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjozNzQ5NSxDT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOjM3NDk2LENPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOjM3NDk3LFRFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDozNzE2NyxNQVhfRUxFTUVOVF9JTkRFWDozNjIwMyxURVhUVVJFX0lNTVVUQUJMRV9MRVZFTFM6MzM1MDMsTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOjM0MDQ3fSxpdD1PYmplY3QuZnJlZXplKEQkKX0pO3ZhciB4ZSxBdCxvaT1TKCgpPT57RnQoKTttdCgpO090KCk7c3MoKTt4ZT17QllURTppdC5CWVRFLFVOU0lHTkVEX0JZVEU6aXQuVU5TSUdORURfQllURSxTSE9SVDppdC5TSE9SVCxVTlNJR05FRF9TSE9SVDppdC5VTlNJR05FRF9TSE9SVCxJTlQ6aXQuSU5ULFVOU0lHTkVEX0lOVDppdC5VTlNJR05FRF9JTlQsRkxPQVQ6aXQuRkxPQVQsRE9VQkxFOml0LkRPVUJMRX07eGUuZ2V0U2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3N3aXRjaCh0KXtjYXNlIHhlLkJZVEU6cmV0dXJuIEludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSB4ZS5TSE9SVDpyZXR1cm4gSW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLlVOU0lHTkVEX1NIT1JUOnJldHVybiBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLklOVDpyZXR1cm4gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHhlLlVOU0lHTkVEX0lOVDpyZXR1cm4gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSB4ZS5GTE9BVDpyZXR1cm4gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2UgeGUuRE9VQkxFOnJldHVybiBGbG9hdDY0QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTt4ZS5mcm9tVHlwZWRBcnJheT1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgSW50OEFycmF5KXJldHVybiB4ZS5CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiB4ZS5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5KXJldHVybiB4ZS5TSE9SVDtpZih0IGluc3RhbmNlb2YgVWludDE2QXJyYXkpcmV0dXJuIHhlLlVOU0lHTkVEX1NIT1JUO2lmKHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KXJldHVybiB4ZS5JTlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiB4ZS5VTlNJR05FRF9JTlQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSlyZXR1cm4geGUuRkxPQVQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSlyZXR1cm4geGUuRE9VQkxFO3Rocm93IG5ldyBZKCJhcnJheSBtdXN0IGJlIGFuIEludDhBcnJheSwgVWludDhBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIG9yIEZsb2F0NjRBcnJheS4iKX07eGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJih0PT09eGUuQllURXx8dD09PXhlLlVOU0lHTkVEX0JZVEV8fHQ9PT14ZS5TSE9SVHx8dD09PXhlLlVOU0lHTkVEX1NIT1JUfHx0PT09eGUuSU5UfHx0PT09eGUuVU5TSUdORURfSU5UfHx0PT09eGUuRkxPQVR8fHQ9PT14ZS5ET1VCTEUpfTt4ZS5jcmVhdGVUeXBlZEFycmF5PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJ2YWx1ZXNPckxlbmd0aCBpcyByZXF1aXJlZC4iKTtzd2l0Y2godCl7Y2FzZSB4ZS5CWVRFOnJldHVybiBuZXcgSW50OEFycmF5KGUpO2Nhc2UgeGUuVU5TSUdORURfQllURTpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSk7Y2FzZSB4ZS5TSE9SVDpyZXR1cm4gbmV3IEludDE2QXJyYXkoZSk7Y2FzZSB4ZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGUpO2Nhc2UgeGUuSU5UOnJldHVybiBuZXcgSW50MzJBcnJheShlKTtjYXNlIHhlLlVOU0lHTkVEX0lOVDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUpO2Nhc2UgeGUuRkxPQVQ6cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZSk7Y2FzZSB4ZS5ET1VCTEU6cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoZSk7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTt4ZS5jcmVhdGVBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24odCxlLGksbil7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJidWZmZXIgaXMgcmVxdWlyZWQuIik7c3dpdGNoKGk9WihpLDApLG49WihuLChlLmJ5dGVMZW5ndGgtaSkveGUuZ2V0U2l6ZUluQnl0ZXModCkpLHQpe2Nhc2UgeGUuQllURTpyZXR1cm4gbmV3IEludDhBcnJheShlLGksbik7Y2FzZSB4ZS5VTlNJR05FRF9CWVRFOnJldHVybiBuZXcgVWludDhBcnJheShlLGksbik7Y2FzZSB4ZS5TSE9SVDpyZXR1cm4gbmV3IEludDE2QXJyYXkoZSxpLG4pO2Nhc2UgeGUuVU5TSUdORURfU0hPUlQ6cmV0dXJuIG5ldyBVaW50MTZBcnJheShlLGksbik7Y2FzZSB4ZS5JTlQ6cmV0dXJuIG5ldyBJbnQzMkFycmF5KGUsaSxuKTtjYXNlIHhlLlVOU0lHTkVEX0lOVDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUsaSxuKTtjYXNlIHhlLkZMT0FUOnJldHVybiBuZXcgRmxvYXQzMkFycmF5KGUsaSxuKTtjYXNlIHhlLkRPVUJMRTpyZXR1cm4gbmV3IEZsb2F0NjRBcnJheShlLGksbik7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTt4ZS5mcm9tTmFtZT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJCWVRFIjpyZXR1cm4geGUuQllURTtjYXNlIlVOU0lHTkVEX0JZVEUiOnJldHVybiB4ZS5VTlNJR05FRF9CWVRFO2Nhc2UiU0hPUlQiOnJldHVybiB4ZS5TSE9SVDtjYXNlIlVOU0lHTkVEX1NIT1JUIjpyZXR1cm4geGUuVU5TSUdORURfU0hPUlQ7Y2FzZSJJTlQiOnJldHVybiB4ZS5JTlQ7Y2FzZSJVTlNJR05FRF9JTlQiOnJldHVybiB4ZS5VTlNJR05FRF9JTlQ7Y2FzZSJGTE9BVCI6cmV0dXJuIHhlLkZMT0FUO2Nhc2UiRE9VQkxFIjpyZXR1cm4geGUuRE9VQkxFO2RlZmF1bHQ6dGhyb3cgbmV3IFkoIm5hbWUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtBdD1PYmplY3QuZnJlZXplKHhlKX0pO2Z1bmN0aW9uIFRlKHQsZSxpLG4pe3RoaXNbMF09Wih0LDApLHRoaXNbMV09WihpLDApLHRoaXNbMl09WihlLDApLHRoaXNbM109WihuLDApfXZhciBVJCxNJCxfRCxSRCxRJCxrJCxIbixkYz1TKCgpPT57WGUoKTthZSgpO0Z0KCk7bXQoKTtPdCgpO1RlLnBhY2tlZExlbmd0aD00O1RlLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxlW2krK109dFswXSxlW2krK109dFsxXSxlW2krK109dFsyXSxlW2krK109dFszXSxlfTtUZS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgVGUpLGlbMF09dFtlKytdLGlbMV09dFtlKytdLGlbMl09dFtlKytdLGlbM109dFtlKytdLGl9O1RlLnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBpPXQubGVuZ3RoLG49aSo0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG4pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09bil0aHJvdyBuZXcgWSgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW4mJihlLmxlbmd0aD1uKX1mb3IobGV0IHM9MDtzPGk7KytzKVRlLnBhY2sodFtzXSxlLHMqNCk7cmV0dXJuIGV9O1RlLnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYocC5kZWZpbmVkKCJhcnJheSIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IFkoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgaT10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPWkvNDplPW5ldyBBcnJheShpLzQpO2ZvcihsZXQgbj0wO248aTtuKz00KXtsZXQgcz1uLzQ7ZVtzXT1UZS51bnBhY2sodCxuLGVbc10pfXJldHVybiBlfTtUZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlKTpuZXcgVGUodFswXSx0WzJdLHRbMV0sdFszXSl9O1RlLmZyb21BcnJheT1UZS51bnBhY2s7VGUuZnJvbUNvbHVtbk1ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC5kZWZpbmVkKCJ2YWx1ZXMiLHQpLFRlLmNsb25lKHQsZSl9O1RlLmZyb21Sb3dNYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWVzIix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzJdLGVbMl09dFsxXSxlWzNdPXRbM10sZSk6bmV3IFRlKHRbMF0sdFsxXSx0WzJdLHRbM10pfTtUZS5mcm9tU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJzY2FsZSIsdCksbShlKT8oZVswXT10LngsZVsxXT0wLGVbMl09MCxlWzNdPXQueSxlKTpuZXcgVGUodC54LDAsMCx0LnkpfTtUZS5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109dCxlKTpuZXcgVGUodCwwLDAsdCl9O1RlLmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm51bWJlcigiYW5nbGUiLHQpO2xldCBpPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIG0oZSk/KGVbMF09aSxlWzFdPW4sZVsyXT0tbixlWzNdPWksZSk6bmV3IFRlKGksLW4sbixpKX07VGUudG9BcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdXX07VGUuZ2V0RWxlbWVudEluZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJyb3ciLGUsMCkscC50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoInJvdyIsZSwxKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiY29sdW1uIix0LDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMSksdCoyK2V9O1RlLmdldENvbHVtbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPWUqMixzPXRbbl0sbz10W24rMV07cmV0dXJuIGkueD1zLGkueT1vLGl9O1RlLnNldENvbHVtbj1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49VGUuY2xvbmUodCxuKTtsZXQgcz1lKjI7cmV0dXJuIG5bc109aS54LG5bcysxXT1pLnksbn07VGUuZ2V0Um93PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IG49dFtlXSxzPXRbZSsyXTtyZXR1cm4gaS54PW4saS55PXMsaX07VGUuc2V0Um93PWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSxwLnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsaSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG49VGUuY2xvbmUodCxuKSxuW2VdPWkueCxuW2UrMl09aS55LG59O1UkPW5ldyBudDtUZS5zZXRTY2FsZT1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1UZS5nZXRTY2FsZSh0LFUkKSxzPWUueC9uLngsbz1lLnkvbi55O3JldHVybiBpWzBdPXRbMF0qcyxpWzFdPXRbMV0qcyxpWzJdPXRbMl0qbyxpWzNdPXRbM10qbyxpfTtNJD1uZXcgbnQ7VGUuc2V0VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBuPVRlLmdldFNjYWxlKHQsTSQpLHM9ZS9uLngsbz1lL24ueTtyZXR1cm4gaVswXT10WzBdKnMsaVsxXT10WzFdKnMsaVsyXT10WzJdKm8saVszXT10WzNdKm8saX07X0Q9bmV3IG50O1RlLmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PW50Lm1hZ25pdHVkZShudC5mcm9tRWxlbWVudHModFswXSx0WzFdLF9EKSksZS55PW50Lm1hZ25pdHVkZShudC5mcm9tRWxlbWVudHModFsyXSx0WzNdLF9EKSksZX07UkQ9bmV3IG50O1RlLmdldE1heGltdW1TY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gVGUuZ2V0U2NhbGUodCxSRCksbnQubWF4aW11bUNvbXBvbmVudChSRCl9O1EkPW5ldyBudDtUZS5zZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj1UZS5nZXRTY2FsZSh0LFEkKTtyZXR1cm4gaVswXT1lWzBdKm4ueCxpWzFdPWVbMV0qbi54LGlbMl09ZVsyXSpuLnksaVszXT1lWzNdKm4ueSxpfTtrJD1uZXcgbnQ7VGUuZ2V0Um90YXRpb249ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBpPVRlLmdldFNjYWxlKHQsayQpO3JldHVybiBlWzBdPXRbMF0vaS54LGVbMV09dFsxXS9pLngsZVsyXT10WzJdL2kueSxlWzNdPXRbM10vaS55LGV9O1RlLm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10WzBdKmVbMF0rdFsyXSplWzFdLHM9dFswXSplWzJdK3RbMl0qZVszXSxvPXRbMV0qZVswXSt0WzNdKmVbMV0scj10WzFdKmVbMl0rdFszXSplWzNdO3JldHVybiBpWzBdPW4saVsxXT1vLGlbMl09cyxpWzNdPXIsaX07VGUuYWRkPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSxwLnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdK2VbMF0saVsxXT10WzFdK2VbMV0saVsyXT10WzJdK2VbMl0saVszXT10WzNdK2VbM10saX07VGUuc3VidHJhY3Q9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHAudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0tZVswXSxpWzFdPXRbMV0tZVsxXSxpWzJdPXRbMl0tZVsyXSxpWzNdPXRbM10tZVszXSxpfTtUZS5tdWx0aXBseUJ5VmVjdG9yPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKTtsZXQgbj10WzBdKmUueCt0WzJdKmUueSxzPXRbMV0qZS54K3RbM10qZS55O3JldHVybiBpLng9bixpLnk9cyxpfTtUZS5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSksaVswXT10WzBdKmUsaVsxXT10WzFdKmUsaVsyXT10WzJdKmUsaVszXT10WzNdKmUsaX07VGUubXVsdGlwbHlCeVNjYWxlPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixpKSxpWzBdPXRbMF0qZS54LGlbMV09dFsxXSplLngsaVsyXT10WzJdKmUueSxpWzNdPXRbM10qZS55LGl9O1RlLm11bHRpcGx5QnlVbmlmb3JtU2NhbGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2YubnVtYmVyKCJzY2FsZSIsZSkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpLGlbMF09dFswXSplLGlbMV09dFsxXSplLGlbMl09dFsyXSplLGlbM109dFszXSplLGl9O1RlLm5lZ2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkscC50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09LXRbMF0sZVsxXT0tdFsxXSxlWzJdPS10WzJdLGVbM109LXRbM10sZX07VGUudHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHAudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgaT10WzBdLG49dFsyXSxzPXRbMV0sbz10WzNdO3JldHVybiBlWzBdPWksZVsxXT1uLGVbMl09cyxlWzNdPW8sZX07VGUuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT1NYXRoLmFicyh0WzBdKSxlWzFdPU1hdGguYWJzKHRbMV0pLGVbMl09TWF0aC5hYnModFsyXSksZVszXT1NYXRoLmFicyh0WzNdKSxlfTtUZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnRbMF09PT1lWzBdJiZ0WzFdPT09ZVsxXSYmdFsyXT09PWVbMl0mJnRbM109PT1lWzNdfTtUZS5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRbMF09PT1lW2ldJiZ0WzFdPT09ZVtpKzFdJiZ0WzJdPT09ZVtpKzJdJiZ0WzNdPT09ZVtpKzNdfTtUZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gaT1aKGksMCksdD09PWV8fG0odCkmJm0oZSkmJk1hdGguYWJzKHRbMF0tZVswXSk8PWkmJk1hdGguYWJzKHRbMV0tZVsxXSk8PWkmJk1hdGguYWJzKHRbMl0tZVsyXSk8PWkmJk1hdGguYWJzKHRbM10tZVszXSk8PWl9O1RlLklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IFRlKDEsMCwwLDEpKTtUZS5aRVJPPU9iamVjdC5mcmVlemUobmV3IFRlKDAsMCwwLDApKTtUZS5DT0xVTU4wUk9XMD0wO1RlLkNPTFVNTjBST1cxPTE7VGUuQ09MVU1OMVJPVzA9MjtUZS5DT0xVTU4xUk9XMT0zO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRlLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVGUucGFja2VkTGVuZ3RofX19KTtUZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIFRlLmNsb25lKHRoaXMsdCl9O1RlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIFRlLmVxdWFscyh0aGlzLHQpfTtUZS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBUZS5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07VGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXNbMF19LCAke3RoaXNbMl19KQooJHt0aGlzWzFdfSwgJHt0aGlzWzNdfSlgfTtIbj1UZX0pO3ZhciBKaSxaRCxJRD1TKCgpPT57WGUoKTtIdCgpO09zKCk7YWUoKTtPdCgpO2RjKCk7ZG4oKTtiaSgpO0ppPXtTQ0FMQVI6IlNDQUxBUiIsVkVDMjoiVkVDMiIsVkVDMzoiVkVDMyIsVkVDNDoiVkVDNCIsTUFUMjoiTUFUMiIsTUFUMzoiTUFUMyIsTUFUNDoiTUFUNCJ9O0ppLmdldE1hdGhUeXBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIEppLlNDQUxBUjpyZXR1cm4gTnVtYmVyO2Nhc2UgSmkuVkVDMjpyZXR1cm4gbnQ7Y2FzZSBKaS5WRUMzOnJldHVybiBsO2Nhc2UgSmkuVkVDNDpyZXR1cm4gaWU7Y2FzZSBKaS5NQVQyOnJldHVybiBIbjtjYXNlIEppLk1BVDM6cmV0dXJuIGx0O2Nhc2UgSmkuTUFUNDpyZXR1cm4gYXQ7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiYXR0cmlidXRlVHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O0ppLmdldE51bWJlck9mQ29tcG9uZW50cz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBKaS5TQ0FMQVI6cmV0dXJuIDE7Y2FzZSBKaS5WRUMyOnJldHVybiAyO2Nhc2UgSmkuVkVDMzpyZXR1cm4gMztjYXNlIEppLlZFQzQ6Y2FzZSBKaS5NQVQyOnJldHVybiA0O2Nhc2UgSmkuTUFUMzpyZXR1cm4gOTtjYXNlIEppLk1BVDQ6cmV0dXJuIDE2O2RlZmF1bHQ6dGhyb3cgbmV3IFkoImF0dHJpYnV0ZVR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtKaS5nZXRBdHRyaWJ1dGVMb2NhdGlvbkNvdW50PWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIEppLlNDQUxBUjpjYXNlIEppLlZFQzI6Y2FzZSBKaS5WRUMzOmNhc2UgSmkuVkVDNDpyZXR1cm4gMTtjYXNlIEppLk1BVDI6cmV0dXJuIDI7Y2FzZSBKaS5NQVQzOnJldHVybiAzO2Nhc2UgSmkuTUFUNDpyZXR1cm4gNDtkZWZhdWx0OnRocm93IG5ldyBZKCJhdHRyaWJ1dGVUeXBlIGlzIG5vdCBhIHZhbGlkIHZhbHVlLiIpfX07SmkuZ2V0R2xzbFR5cGU9ZnVuY3Rpb24odCl7c3dpdGNoKHAudHlwZU9mLnN0cmluZygiYXR0cmlidXRlVHlwZSIsdCksdCl7Y2FzZSBKaS5TQ0FMQVI6cmV0dXJuImZsb2F0IjtjYXNlIEppLlZFQzI6cmV0dXJuInZlYzIiO2Nhc2UgSmkuVkVDMzpyZXR1cm4idmVjMyI7Y2FzZSBKaS5WRUM0OnJldHVybiJ2ZWM0IjtjYXNlIEppLk1BVDI6cmV0dXJuIm1hdDIiO2Nhc2UgSmkuTUFUMzpyZXR1cm4ibWF0MyI7Y2FzZSBKaS5NQVQ0OnJldHVybiJtYXQ0IjtkZWZhdWx0OnRocm93IG5ldyBZKCJhdHRyaWJ1dGVUeXBlIGlzIG5vdCBhIHZhbGlkIHZhbHVlLiIpfX07WkQ9T2JqZWN0LmZyZWV6ZShKaSl9KTtmdW5jdGlvbiBvSSh0KXtyZXR1cm4gQ0RbMF09dCxDRFswXX1mdW5jdGlvbiBUVCh0KXtyZXR1cm4gdD4+MV4tKHQmMSl9dmFyIHBELHVELHJuLGdFLENELE5ULFlpLG9oPVMoKCk9PntYZSgpO0h0KCk7b2koKTthZSgpO210KCk7T3QoKTtfZSgpO0lEKCk7cEQ9MS8yNTYsdUQ9MjU2LHJuPXt9O3JuLm9jdEVuY29kZUluUmFuZ2U9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgidmVjdG9yIix0KSxwLmRlZmluZWQoInJlc3VsdCIsaSk7bGV0IG49bC5tYWduaXR1ZGVTcXVhcmVkKHQpO2lmKE1hdGguYWJzKG4tMSk+TC5FUFNJTE9ONil0aHJvdyBuZXcgWSgidmVjdG9yIG11c3QgYmUgbm9ybWFsaXplZC4iKTtpZihpLng9dC54LyhNYXRoLmFicyh0LngpK01hdGguYWJzKHQueSkrTWF0aC5hYnModC56KSksaS55PXQueS8oTWF0aC5hYnModC54KStNYXRoLmFicyh0LnkpK01hdGguYWJzKHQueikpLHQuejwwKXtsZXQgcz1pLngsbz1pLnk7aS54PSgxLU1hdGguYWJzKG8pKSpMLnNpZ25Ob3RaZXJvKHMpLGkueT0oMS1NYXRoLmFicyhzKSkqTC5zaWduTm90WmVybyhvKX1yZXR1cm4gaS54PUwudG9TTm9ybShpLngsZSksaS55PUwudG9TTm9ybShpLnksZSksaX07cm4ub2N0RW5jb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJuLm9jdEVuY29kZUluUmFuZ2UodCwyNTUsZSl9O2dFPW5ldyBudCxDRD1uZXcgVWludDhBcnJheSgxKTtybi5vY3RFbmNvZGVUb0NhcnRlc2lhbjQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcm4ub2N0RW5jb2RlSW5SYW5nZSh0LDY1NTM1LGdFKSxlLng9b0koZ0UueCpwRCksZS55PW9JKGdFLngpLGUuej1vSShnRS55KnBEKSxlLnc9b0koZ0UueSksZX07cm4ub2N0RGVjb2RlSW5SYW5nZT1mdW5jdGlvbih0LGUsaSxuKXtpZihwLmRlZmluZWQoInJlc3VsdCIsbiksdDwwfHx0Pml8fGU8MHx8ZT5pKXRocm93IG5ldyBZKGB4IGFuZCB5IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kICR7aX1gKTtpZihuLng9TC5mcm9tU05vcm0odCxpKSxuLnk9TC5mcm9tU05vcm0oZSxpKSxuLno9MS0oTWF0aC5hYnMobi54KStNYXRoLmFicyhuLnkpKSxuLno8MCl7bGV0IHM9bi54O24ueD0oMS1NYXRoLmFicyhuLnkpKSpMLnNpZ25Ob3RaZXJvKHMpLG4ueT0oMS1NYXRoLmFicyhzKSkqTC5zaWduTm90WmVybyhuLnkpfXJldHVybiBsLm5vcm1hbGl6ZShuLG4pfTtybi5vY3REZWNvZGU9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBybi5vY3REZWNvZGVJblJhbmdlKHQsZSwyNTUsaSl9O3JuLm9jdERlY29kZUZyb21DYXJ0ZXNpYW40PWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJlbmNvZGVkIix0KSxwLnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IGk9dC54LG49dC55LHM9dC56LG89dC53O2lmKGk8MHx8aT4yNTV8fG48MHx8bj4yNTV8fHM8MHx8cz4yNTV8fG88MHx8bz4yNTUpdGhyb3cgbmV3IFkoIngsIHksIHosIGFuZCB3IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kIDI1NSIpO2xldCByPWkqdUQrbixhPXMqdUQrbztyZXR1cm4gcm4ub2N0RGVjb2RlSW5SYW5nZShyLGEsNjU1MzUsZSl9O3JuLm9jdFBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gcC5kZWZpbmVkKCJlbmNvZGVkIix0KSwyNTYqdC54K3QueX07TlQ9bmV3IG50O3JuLm9jdEVuY29kZUZsb2F0PWZ1bmN0aW9uKHQpe3JldHVybiBybi5vY3RFbmNvZGUodCxOVCkscm4ub2N0UGFja0Zsb2F0KE5UKX07cm4ub2N0RGVjb2RlRmxvYXQ9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoInZhbHVlIix0KTtsZXQgaT10LzI1NixuPU1hdGguZmxvb3IoaSkscz0oaS1uKSoyNTY7cmV0dXJuIHJuLm9jdERlY29kZShuLHMsZSl9O3JuLm9jdFBhY2s9ZnVuY3Rpb24odCxlLGksbil7cC5kZWZpbmVkKCJ2MSIsdCkscC5kZWZpbmVkKCJ2MiIsZSkscC5kZWZpbmVkKCJ2MyIsaSkscC5kZWZpbmVkKCJyZXN1bHQiLG4pO2xldCBzPXJuLm9jdEVuY29kZUZsb2F0KHQpLG89cm4ub2N0RW5jb2RlRmxvYXQoZSkscj1ybi5vY3RFbmNvZGUoaSxOVCk7cmV0dXJuIG4ueD02NTUzNipyLngrcyxuLnk9NjU1MzYqci55K28sbn07cm4ub2N0VW5wYWNrPWZ1bmN0aW9uKHQsZSxpLG4pe3AuZGVmaW5lZCgicGFja2VkIix0KSxwLmRlZmluZWQoInYxIixlKSxwLmRlZmluZWQoInYyIixpKSxwLmRlZmluZWQoInYzIixuKTtsZXQgcz10LngvNjU1MzYsbz1NYXRoLmZsb29yKHMpLHI9KHMtbykqNjU1MzY7cz10LnkvNjU1MzY7bGV0IGE9TWF0aC5mbG9vcihzKSxoPShzLWEpKjY1NTM2O3JuLm9jdERlY29kZUZsb2F0KHIsZSkscm4ub2N0RGVjb2RlRmxvYXQoaCxpKSxybi5vY3REZWNvZGUobyxhLG4pfTtybi5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcz1mdW5jdGlvbih0KXtwLmRlZmluZWQoInRleHR1cmVDb29yZGluYXRlcyIsdCk7bGV0IGU9dC54KjQwOTV8MCxpPXQueSo0MDk1fDA7cmV0dXJuIDQwOTYqZStpfTtybi5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjb21wcmVzc2VkIix0KSxwLmRlZmluZWQoInJlc3VsdCIsZSk7bGV0IGk9dC80MDk2LG49TWF0aC5mbG9vcihpKTtyZXR1cm4gZS54PW4vNDA5NSxlLnk9KHQtbio0MDk2KS80MDk1LGV9O3JuLnppZ1phZ0RlbHRhRGVjb2RlPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoInVCdWZmZXIiLHQpLHAuZGVmaW5lZCgidkJ1ZmZlciIsZSkscC50eXBlT2YubnVtYmVyLmVxdWFscygidUJ1ZmZlci5sZW5ndGgiLCJ2QnVmZmVyLmxlbmd0aCIsdC5sZW5ndGgsZS5sZW5ndGgpLG0oaSkmJnAudHlwZU9mLm51bWJlci5lcXVhbHMoInVCdWZmZXIubGVuZ3RoIiwiaGVpZ2h0QnVmZmVyLmxlbmd0aCIsdC5sZW5ndGgsaS5sZW5ndGgpO2xldCBuPXQubGVuZ3RoLHM9MCxvPTAscj0wO2ZvcihsZXQgYT0wO2E8bjsrK2Epcys9VFQodFthXSksbys9VFQoZVthXSksdFthXT1zLGVbYV09byxtKGkpJiYocis9VFQoaVthXSksaVthXT1yKX07cm4uZGVxdWFudGl6ZT1mdW5jdGlvbih0LGUsaSxuKXtwLmRlZmluZWQoInR5cGVkQXJyYXkiLHQpLHAuZGVmaW5lZCgiY29tcG9uZW50RGF0YXR5cGUiLGUpLHAuZGVmaW5lZCgidHlwZSIsaSkscC5kZWZpbmVkKCJjb3VudCIsbik7bGV0IHM9WkQuZ2V0TnVtYmVyT2ZDb21wb25lbnRzKGkpLG87c3dpdGNoKGUpe2Nhc2UgQXQuQllURTpvPTEyNzticmVhaztjYXNlIEF0LlVOU0lHTkVEX0JZVEU6bz0yNTU7YnJlYWs7Y2FzZSBBdC5TSE9SVDpvPTMyNzY3O2JyZWFrO2Nhc2UgQXQuVU5TSUdORURfU0hPUlQ6bz02NTUzNTticmVhaztjYXNlIEF0LklOVDpvPTIxNDc0ODM2NDc7YnJlYWs7Y2FzZSBBdC5VTlNJR05FRF9JTlQ6bz00Mjk0OTY3Mjk1O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFkoYENhbm5vdCBkZXF1YW50aXplIGNvbXBvbmVudCBkYXRhdHlwZTogJHtlfWApfWxldCByPW5ldyBGbG9hdDMyQXJyYXkobipzKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgaD0wO2g8cztoKyspe2xldCBBPWEqcytoO3JbQV09TWF0aC5tYXgodFtBXS9vLC0xKX1yZXR1cm4gcn07cm4uZGVjb2RlUkdCNTY1PWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJ0eXBlZEFycmF5Iix0KTtsZXQgaT10Lmxlbmd0aCozO20oZSkmJnAudHlwZU9mLm51bWJlci5lcXVhbHMoInJlc3VsdC5sZW5ndGgiLCJ0eXBlZEFycmF5Lmxlbmd0aCAqIDMiLGUubGVuZ3RoLGkpO2xldCBuPXQubGVuZ3RoO20oZSl8fChlPW5ldyBGbG9hdDMyQXJyYXkobiozKSk7bGV0IHM9MzEsbz02MyxyPTEvMzEsYT0xLzYzO2ZvcihsZXQgaD0wO2g8bjtoKyspe2xldCBBPXRbaF0sZD1BPj4xMSxmPUE+PjUmbyxFPUEmcyxfPTMqaDtlW19dPWQqcixlW18rMV09ZiphLGVbXysyXT1FKnJ9cmV0dXJuIGV9O1lpPXJufSk7ZnVuY3Rpb24gTCQoKXtyZXR1cm4hMH1mdW5jdGlvbiB5JCh0LGUpe2U9WihlLCJUaGlzIG9iamVjdCB3YXMgZGVzdHJveWVkLCBpLmUuLCBkZXN0cm95KCkgd2FzIGNhbGxlZC4iKTtmdW5jdGlvbiBpKCl7dGhyb3cgbmV3IFkoZSl9Zm9yKGxldCBuIGluIHQpdHlwZW9mIHRbbl09PSJmdW5jdGlvbiImJih0W25dPWkpO3QuaXNEZXN0cm95ZWQ9TCR9dmFyIGxpLFdzPVMoKCk9PntGdCgpO090KCk7bGk9eSR9KTtmdW5jdGlvbiBmQSgpe3RoaXMuaGlnaD1sLmNsb25lKGwuWkVSTyksdGhpcy5sb3c9bC5jbG9uZShsLlpFUk8pfXZhciByaCxGVCxHbixUbD1TKCgpPT57SHQoKTthZSgpO210KCk7ZkEuZW5jb2RlPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksbShlKXx8KGU9e2hpZ2g6MCxsb3c6MH0pO2xldCBpO3JldHVybiB0Pj0wPyhpPU1hdGguZmxvb3IodC82NTUzNikqNjU1MzYsZS5oaWdoPWksZS5sb3c9dC1pKTooaT1NYXRoLmZsb29yKC10LzY1NTM2KSo2NTUzNixlLmhpZ2g9LWksZS5sb3c9dCtpKSxlfTtyaD17aGlnaDowLGxvdzowfTtmQS5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBmQSk7bGV0IGk9ZS5oaWdoLG49ZS5sb3c7cmV0dXJuIGZBLmVuY29kZSh0LngscmgpLGkueD1yaC5oaWdoLG4ueD1yaC5sb3csZkEuZW5jb2RlKHQueSxyaCksaS55PXJoLmhpZ2gsbi55PXJoLmxvdyxmQS5lbmNvZGUodC56LHJoKSxpLno9cmguaGlnaCxuLno9cmgubG93LGV9O0ZUPW5ldyBmQTtmQS53cml0ZUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImNhcnRlc2lhbkFycmF5IixlKSxwLnR5cGVPZi5udW1iZXIoImluZGV4IixpKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGksMCksZkEuZnJvbUNhcnRlc2lhbih0LEZUKTtsZXQgbj1GVC5oaWdoLHM9RlQubG93O2VbaV09bi54LGVbaSsxXT1uLnksZVtpKzJdPW4ueixlW2krM109cy54LGVbaSs0XT1zLnksZVtpKzVdPXMuen07R249ZkF9KTt2YXIgRHMsdGUsRGk9UygoKT0+e210KCk7T3QoKTtfZSgpO3NzKCk7RHM9e1VOU0lHTkVEX0JZVEU6aXQuVU5TSUdORURfQllURSxVTlNJR05FRF9TSE9SVDppdC5VTlNJR05FRF9TSE9SVCxVTlNJR05FRF9JTlQ6aXQuVU5TSUdORURfSU5UfTtEcy5nZXRTaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBEcy5VTlNJR05FRF9CWVRFOnJldHVybiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2UgRHMuVU5TSUdORURfU0hPUlQ6cmV0dXJuIFVpbnQxNkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2UgRHMuVU5TSUdORURfSU5UOnJldHVybiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVH10aHJvdyBuZXcgWSgiaW5kZXhEYXRhdHlwZSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHZhbGlkIEluZGV4RGF0YXR5cGUgY29uc3RhbnQuIil9O0RzLmZyb21TaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSAyOnJldHVybiBEcy5VTlNJR05FRF9TSE9SVDtjYXNlIDQ6cmV0dXJuIERzLlVOU0lHTkVEX0lOVDtjYXNlIDE6cmV0dXJuIERzLlVOU0lHTkVEX0JZVEU7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiU2l6ZSBpbiBieXRlcyBjYW5ub3QgYmUgbWFwcGVkIHRvIGFuIEluZGV4RGF0YXR5cGUiKX19O0RzLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiYodD09PURzLlVOU0lHTkVEX0JZVEV8fHQ9PT1Ecy5VTlNJR05FRF9TSE9SVHx8dD09PURzLlVOU0lHTkVEX0lOVCl9O0RzLmNyZWF0ZVR5cGVkQXJyYXk9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgibnVtYmVyT2ZWZXJ0aWNlcyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49TC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSk6bmV3IFVpbnQxNkFycmF5KGUpfTtEcy5jcmVhdGVUeXBlZEFycmF5RnJvbUFycmF5QnVmZmVyPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJudW1iZXJPZlZlcnRpY2VzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJzb3VyY2VBcnJheSBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiYnl0ZU9mZnNldCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49TC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSxpLG4pOm5ldyBVaW50MTZBcnJheShlLGksbil9O0RzLmZyb21UeXBlZEFycmF5PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBEcy5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheSlyZXR1cm4gRHMuVU5TSUdORURfU0hPUlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiBEcy5VTlNJR05FRF9JTlQ7dGhyb3cgbmV3IFkoImFycmF5IG11c3QgYmUgYSBVaW50OEFycmF5LCBVaW50MTZBcnJheSwgb3IgVWludDMyQXJyYXkuIil9O3RlPU9iamVjdC5mcmVlemUoRHMpfSk7dmFyIHJJLGFpLE5sPVMoKCk9PntzcygpO3JJPXtTVFJFQU1fRFJBVzppdC5TVFJFQU1fRFJBVyxTVEFUSUNfRFJBVzppdC5TVEFUSUNfRFJBVyxEWU5BTUlDX0RSQVc6aXQuRFlOQU1JQ19EUkFXLHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PT09ckkuU1RSRUFNX0RSQVd8fHQ9PT1ySS5TVEFUSUNfRFJBV3x8dD09PXJJLkRZTkFNSUNfRFJBV319LGFpPU9iamVjdC5mcmVlemUockkpfSk7ZnVuY3Rpb24gVXIodCl7aWYodD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpLCFtKHQudHlwZWRBcnJheSkmJiFtKHQuc2l6ZUluQnl0ZXMpKXRocm93IG5ldyBZKCJFaXRoZXIgb3B0aW9ucy5zaXplSW5CeXRlcyBvciBvcHRpb25zLnR5cGVkQXJyYXkgaXMgcmVxdWlyZWQuIik7aWYobSh0LnR5cGVkQXJyYXkpJiZtKHQuc2l6ZUluQnl0ZXMpKXRocm93IG5ldyBZKCJDYW5ub3QgcGFzcyBpbiBib3RoIG9wdGlvbnMuc2l6ZUluQnl0ZXMgYW5kIG9wdGlvbnMudHlwZWRBcnJheS4iKTtpZihtKHQudHlwZWRBcnJheSkmJihwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMudHlwZWRBcnJheSIsdC50eXBlZEFycmF5KSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMudHlwZWRBcnJheS5ieXRlTGVuZ3RoIix0LnR5cGVkQXJyYXkuYnl0ZUxlbmd0aCkpLCFhaS52YWxpZGF0ZSh0LnVzYWdlKSl0aHJvdyBuZXcgWSgidXNhZ2UgaXMgaW52YWxpZC4iKTtsZXQgZT10LmNvbnRleHQuX2dsLGk9dC5idWZmZXJUYXJnZXQsbj10LnR5cGVkQXJyYXkscz10LnNpemVJbkJ5dGVzLG89dC51c2FnZSxyPW0obik7ciYmKHM9bi5ieXRlTGVuZ3RoKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oInNpemVJbkJ5dGVzIixzLDApO2xldCBhPWUuY3JlYXRlQnVmZmVyKCk7ZS5iaW5kQnVmZmVyKGksYSksZS5idWZmZXJEYXRhKGkscj9uOnMsbyksZS5iaW5kQnVmZmVyKGksbnVsbCksdGhpcy5faWQ9QnMoKSx0aGlzLl9nbD1lLHRoaXMuX3dlYmdsMj10LmNvbnRleHQuX3dlYmdsMix0aGlzLl9idWZmZXJUYXJnZXQ9aSx0aGlzLl9zaXplSW5CeXRlcz1zLHRoaXMuX3VzYWdlPW8sdGhpcy5fYnVmZmVyPWEsdGhpcy52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlPSEwfXZhciBDYSxhST1TKCgpPT57YWUoKTtpaCgpO0Z0KCk7bXQoKTtXcygpO090KCk7RGkoKTtzcygpO05sKCk7VXIuY3JlYXRlVmVydGV4QnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBwLmRlZmluZWQoIm9wdGlvbnMuY29udGV4dCIsdC5jb250ZXh0KSxuZXcgVXIoe2NvbnRleHQ6dC5jb250ZXh0LGJ1ZmZlclRhcmdldDppdC5BUlJBWV9CVUZGRVIsdHlwZWRBcnJheTp0LnR5cGVkQXJyYXksc2l6ZUluQnl0ZXM6dC5zaXplSW5CeXRlcyx1c2FnZTp0LnVzYWdlfSl9O1VyLmNyZWF0ZUluZGV4QnVmZmVyPWZ1bmN0aW9uKHQpe2lmKHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpLCF0ZS52YWxpZGF0ZSh0LmluZGV4RGF0YXR5cGUpKXRocm93IG5ldyBZKCJJbnZhbGlkIGluZGV4RGF0YXR5cGUuIik7aWYodC5pbmRleERhdGF0eXBlPT09dGUuVU5TSUdORURfSU5UJiYhdC5jb250ZXh0LmVsZW1lbnRJbmRleFVpbnQpdGhyb3cgbmV3IFkoIkluZGV4RGF0YXR5cGUuVU5TSUdORURfSU5UIHJlcXVpcmVzIE9FU19lbGVtZW50X2luZGV4X3VpbnQsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0uICBDaGVjayBjb250ZXh0LmVsZW1lbnRJbmRleFVpbnQuIik7bGV0IGU9dC5jb250ZXh0LGk9dC5pbmRleERhdGF0eXBlLG49dGUuZ2V0U2l6ZUluQnl0ZXMoaSkscz1uZXcgVXIoe2NvbnRleHQ6ZSxidWZmZXJUYXJnZXQ6aXQuRUxFTUVOVF9BUlJBWV9CVUZGRVIsdHlwZWRBcnJheTp0LnR5cGVkQXJyYXksc2l6ZUluQnl0ZXM6dC5zaXplSW5CeXRlcyx1c2FnZTp0LnVzYWdlfSksbz1zLnNpemVJbkJ5dGVzL247cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHMse2luZGV4RGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBpfX0sYnl0ZXNQZXJJbmRleDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSxudW1iZXJPZkluZGljZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBvfX19KSxzfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVci5wcm90b3R5cGUse3NpemVJbkJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZUluQnl0ZXN9fSx1c2FnZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VzYWdlfX19KTtVci5wcm90b3R5cGUuX2dldEJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJ9O1VyLnByb3RvdHlwZS5jb3B5RnJvbUFycmF5Vmlldz1mdW5jdGlvbih0LGUpe2U9WihlLDApLHAuZGVmaW5lZCgiYXJyYXlWaWV3Iix0KSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygib2Zmc2V0SW5CeXRlcyArIGFycmF5Vmlldy5ieXRlTGVuZ3RoIixlK3QuYnl0ZUxlbmd0aCx0aGlzLl9zaXplSW5CeXRlcyk7bGV0IGk9dGhpcy5fZ2wsbj10aGlzLl9idWZmZXJUYXJnZXQ7aS5iaW5kQnVmZmVyKG4sdGhpcy5fYnVmZmVyKSxpLmJ1ZmZlclN1YkRhdGEobixlLHQpLGkuYmluZEJ1ZmZlcihuLG51bGwpfTtVci5wcm90b3R5cGUuY29weUZyb21CdWZmZXI9ZnVuY3Rpb24odCxlLGksbil7aWYoIXRoaXMuX3dlYmdsMil0aHJvdyBuZXcgWSgiQSBXZWJHTCAyIGNvbnRleHQgaXMgcmVxdWlyZWQuIik7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJlYWRCdWZmZXIgbXVzdCBiZSBkZWZpbmVkLiIpO2lmKCFtKG4pfHxuPD0wKXRocm93IG5ldyBZKCJzaXplSW5CeXRlcyBtdXN0IGJlIGRlZmluZWQgYW5kIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKCFtKGUpfHxlPDB8fGUrbj50Ll9zaXplSW5CeXRlcyl0aHJvdyBuZXcgWSgicmVhZE9mZnNldCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvIGFuZCByZWFkT2Zmc2V0ICsgc2l6ZUluQnl0ZXMgbXVzdCBiZSBsZXNzIHRoYW4gb2YgZXF1YWwgdG8gcmVhZEJ1ZmZlci5zaXplSW5CeXRlcy4iKTtpZighbShpKXx8aTwwfHxpK24+dGhpcy5fc2l6ZUluQnl0ZXMpdGhyb3cgbmV3IFkoIndyaXRlT2Zmc2V0IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8gYW5kIHdyaXRlT2Zmc2V0ICsgc2l6ZUluQnl0ZXMgbXVzdCBiZSBsZXNzIHRoYW4gb2YgZXF1YWwgdG8gdGhpcy5zaXplSW5CeXRlcy4iKTtpZih0aGlzLl9idWZmZXI9PT10Ll9idWZmZXImJihpPj1lJiZpPGUrbnx8ZT5pJiZlPGkrbikpdGhyb3cgbmV3IFkoIldoZW4gcmVhZEJ1ZmZlciBpcyBlcXVhbCB0byB0aGlzLCB0aGUgcmFuZ2VzIFtyZWFkT2Zmc2V0ICsgc2l6ZUluQnl0ZXMpIGFuZCBbd3JpdGVPZmZzZXQsIHdyaXRlT2Zmc2V0ICsgc2l6ZUluQnl0ZXMpIG11c3Qgbm90IG92ZXJsYXAuIik7aWYodGhpcy5fYnVmZmVyVGFyZ2V0PT09aXQuRUxFTUVOVF9BUlJBWV9CVUZGRVImJnQuX2J1ZmZlclRhcmdldCE9PWl0LkVMRU1FTlRfQVJSQVlfQlVGRkVSfHx0aGlzLl9idWZmZXJUYXJnZXQhPT1pdC5FTEVNRU5UX0FSUkFZX0JVRkZFUiYmdC5fYnVmZmVyVGFyZ2V0PT09aXQuRUxFTUVOVF9BUlJBWV9CVUZGRVIpdGhyb3cgbmV3IFkoIkNhbiBub3QgY29weSBhbiBpbmRleCBidWZmZXIgaW50byBhbm90aGVyIGJ1ZmZlciB0eXBlLiIpO2xldCBzPWl0LkNPUFlfUkVBRF9CVUZGRVIsbz1pdC5DT1BZX1dSSVRFX0JVRkZFUixyPXRoaXMuX2dsO3IuYmluZEJ1ZmZlcihvLHRoaXMuX2J1ZmZlciksci5iaW5kQnVmZmVyKHMsdC5fYnVmZmVyKSxyLmNvcHlCdWZmZXJTdWJEYXRhKHMsbyxlLGksbiksci5iaW5kQnVmZmVyKG8sbnVsbCksci5iaW5kQnVmZmVyKHMsbnVsbCl9O1VyLnByb3RvdHlwZS5nZXRCdWZmZXJEYXRhPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKGU9WihlLDApLGk9WihpLDApLCF0aGlzLl93ZWJnbDIpdGhyb3cgbmV3IFkoIkEgV2ViR0wgMiBjb250ZXh0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheVZpZXcgaXMgcmVxdWlyZWQuIik7bGV0IHMsbyxyPXQuYnl0ZUxlbmd0aDtpZihtKG4pPyhzPW4sbShyKT9vPTE6KHI9dC5sZW5ndGgsbz10LkJZVEVTX1BFUl9FTEVNRU5UKSk6bShyKT8ocz1yLWksbz0xKToocj10Lmxlbmd0aCxzPXItaSxvPXQuQllURVNfUEVSX0VMRU1FTlQpLGk8MHx8aT5yKXRocm93IG5ldyBZKCJkZXN0aW5hdGlvbk9mZnNldCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gdGhlIGFycmF5VmlldyBsZW5ndGguIik7aWYoaStzPnIpdGhyb3cgbmV3IFkoImRlc3RpbmF0aW9uT2Zmc2V0ICsgbGVuZ3RoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBhcnJheVZpZXdMZW5ndGguIik7aWYoZTwwfHxlPnRoaXMuX3NpemVJbkJ5dGVzKXRocm93IG5ldyBZKCJzb3VyY2VPZmZzZXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIHRoZSBidWZmZXJzIHNpemUuIik7aWYoZStzKm8+dGhpcy5fc2l6ZUluQnl0ZXMpdGhyb3cgbmV3IFkoInNvdXJjZU9mZnNldCArIGxlbmd0aCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgYnVmZmVycyBzaXplLiIpO2xldCBhPXRoaXMuX2dsLGg9aXQuQ09QWV9SRUFEX0JVRkZFUjthLmJpbmRCdWZmZXIoaCx0aGlzLl9idWZmZXIpLGEuZ2V0QnVmZmVyU3ViRGF0YShoLGUsdCxpLG4pLGEuYmluZEJ1ZmZlcihoLG51bGwpfTtVci5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07VXIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2wuZGVsZXRlQnVmZmVyKHRoaXMuX2J1ZmZlciksbGkodGhpcyl9O0NhPVVyfSk7dmFyIHZuLGVuLGdhPVMoKCk9Pnt2bj17X21heGltdW1Db21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOjAsX21heGltdW1DdWJlTWFwU2l6ZTowLF9tYXhpbXVtRnJhZ21lbnRVbmlmb3JtVmVjdG9yczowLF9tYXhpbXVtVGV4dHVyZUltYWdlVW5pdHM6MCxfbWF4aW11bVJlbmRlcmJ1ZmZlclNpemU6MCxfbWF4aW11bVRleHR1cmVTaXplOjAsX21heGltdW1WYXJ5aW5nVmVjdG9yczowLF9tYXhpbXVtVmVydGV4QXR0cmlidXRlczowLF9tYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHM6MCxfbWF4aW11bVZlcnRleFVuaWZvcm1WZWN0b3JzOjAsX21pbmltdW1BbGlhc2VkTGluZVdpZHRoOjAsX21heGltdW1BbGlhc2VkTGluZVdpZHRoOjAsX21pbmltdW1BbGlhc2VkUG9pbnRTaXplOjAsX21heGltdW1BbGlhc2VkUG9pbnRTaXplOjAsX21heGltdW1WaWV3cG9ydFdpZHRoOjAsX21heGltdW1WaWV3cG9ydEhlaWdodDowLF9tYXhpbXVtVGV4dHVyZUZpbHRlckFuaXNvdHJvcHk6MCxfbWF4aW11bURyYXdCdWZmZXJzOjAsX21heGltdW1Db2xvckF0dGFjaG1lbnRzOjAsX21heGltdW1TYW1wbGVzOjAsX2hpZ2hwRmxvYXRTdXBwb3J0ZWQ6ITEsX2hpZ2hwSW50U3VwcG9ydGVkOiExfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh2bix7bWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHN9fSxtYXhpbXVtQ3ViZU1hcFNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUN1YmVNYXBTaXplfX0sbWF4aW11bUZyYWdtZW50VW5pZm9ybVZlY3RvcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUZyYWdtZW50VW5pZm9ybVZlY3RvcnN9fSxtYXhpbXVtVGV4dHVyZUltYWdlVW5pdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bVRleHR1cmVJbWFnZVVuaXRzfX0sbWF4aW11bVJlbmRlcmJ1ZmZlclNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bVJlbmRlcmJ1ZmZlclNpemV9fSxtYXhpbXVtVGV4dHVyZVNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bVRleHR1cmVTaXplfX0sbWF4aW11bVZhcnlpbmdWZWN0b3JzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WYXJ5aW5nVmVjdG9yc319LG1heGltdW1WZXJ0ZXhBdHRyaWJ1dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WZXJ0ZXhBdHRyaWJ1dGVzfX0sbWF4aW11bVZlcnRleFRleHR1cmVJbWFnZVVuaXRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0c319LG1heGltdW1WZXJ0ZXhVbmlmb3JtVmVjdG9yczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtVmVydGV4VW5pZm9ybVZlY3RvcnN9fSxtaW5pbXVtQWxpYXNlZExpbmVXaWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9taW5pbXVtQWxpYXNlZExpbmVXaWR0aH19LG1heGltdW1BbGlhc2VkTGluZVdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1BbGlhc2VkTGluZVdpZHRofX0sbWluaW11bUFsaWFzZWRQb2ludFNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWluaW11bUFsaWFzZWRQb2ludFNpemV9fSxtYXhpbXVtQWxpYXNlZFBvaW50U2l6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtQWxpYXNlZFBvaW50U2l6ZX19LG1heGltdW1WaWV3cG9ydFdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WaWV3cG9ydFdpZHRofX0sbWF4aW11bVZpZXdwb3J0SGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX21heGltdW1WaWV3cG9ydEhlaWdodH19LG1heGltdW1UZXh0dXJlRmlsdGVyQW5pc290cm9weTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtVGV4dHVyZUZpbHRlckFuaXNvdHJvcHl9fSxtYXhpbXVtRHJhd0J1ZmZlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bURyYXdCdWZmZXJzfX0sbWF4aW11bUNvbG9yQXR0YWNobWVudHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5fbWF4aW11bUNvbG9yQXR0YWNobWVudHN9fSxtYXhpbXVtU2FtcGxlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZuLl9tYXhpbXVtU2FtcGxlc319LGhpZ2hwRmxvYXRTdXBwb3J0ZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB2bi5faGlnaHBGbG9hdFN1cHBvcnRlZH19LGhpZ2hwSW50U3VwcG9ydGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm4uX2hpZ2hwSW50U3VwcG9ydGVkfX19KTtlbj12bn0pO3ZhciBpbyxuZSxYaT1TKCgpPT57c3MoKTtpbz17UE9JTlRTOml0LlBPSU5UUyxMSU5FUzppdC5MSU5FUyxMSU5FX0xPT1A6aXQuTElORV9MT09QLExJTkVfU1RSSVA6aXQuTElORV9TVFJJUCxUUklBTkdMRVM6aXQuVFJJQU5HTEVTLFRSSUFOR0xFX1NUUklQOml0LlRSSUFOR0xFX1NUUklQLFRSSUFOR0xFX0ZBTjppdC5UUklBTkdMRV9GQU59O2lvLmlzTGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1pby5MSU5FU3x8dD09PWlvLkxJTkVfTE9PUHx8dD09PWlvLkxJTkVfU1RSSVB9O2lvLmlzVHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09aW8uVFJJQU5HTEVTfHx0PT09aW8uVFJJQU5HTEVfU1RSSVB8fHQ9PT1pby5UUklBTkdMRV9GQU59O2lvLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09aW8uUE9JTlRTfHx0PT09aW8uTElORVN8fHQ9PT1pby5MSU5FX0xPT1B8fHQ9PT1pby5MSU5FX1NUUklQfHx0PT09aW8uVFJJQU5HTEVTfHx0PT09aW8uVFJJQU5HTEVfU1RSSVB8fHQ9PT1pby5UUklBTkdMRV9GQU59O25lPU9iamVjdC5mcmVlemUoaW8pfSk7ZnVuY3Rpb24gVEUodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuX2JvdW5kaW5nVm9sdW1lPXQuYm91bmRpbmdWb2x1bWUsdGhpcy5fb3JpZW50ZWRCb3VuZGluZ0JveD10Lm9yaWVudGVkQm91bmRpbmdCb3gsdGhpcy5fbW9kZWxNYXRyaXg9dC5tb2RlbE1hdHJpeCx0aGlzLl9wcmltaXRpdmVUeXBlPVoodC5wcmltaXRpdmVUeXBlLG5lLlRSSUFOR0xFUyksdGhpcy5fdmVydGV4QXJyYXk9dC52ZXJ0ZXhBcnJheSx0aGlzLl9jb3VudD10LmNvdW50LHRoaXMuX29mZnNldD1aKHQub2Zmc2V0LDApLHRoaXMuX2luc3RhbmNlQ291bnQ9Wih0Lmluc3RhbmNlQ291bnQsMCksdGhpcy5fc2hhZGVyUHJvZ3JhbT10LnNoYWRlclByb2dyYW0sdGhpcy5fdW5pZm9ybU1hcD10LnVuaWZvcm1NYXAsdGhpcy5fcmVuZGVyU3RhdGU9dC5yZW5kZXJTdGF0ZSx0aGlzLl9mcmFtZWJ1ZmZlcj10LmZyYW1lYnVmZmVyLHRoaXMuX3Bhc3M9dC5wYXNzLHRoaXMuX293bmVyPXQub3duZXIsdGhpcy5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zPTAsdGhpcy5fcGlja0lkPXQucGlja0lkLHRoaXMuX2ZsYWdzPTAsdGhpcy5jdWxsPVoodC5jdWxsLCEwKSx0aGlzLm9jY2x1ZGU9Wih0Lm9jY2x1ZGUsITApLHRoaXMuZXhlY3V0ZUluQ2xvc2VzdEZydXN0dW09Wih0LmV4ZWN1dGVJbkNsb3Nlc3RGcnVzdHVtLCExKSx0aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPVoodC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSwhMSksdGhpcy5jYXN0U2hhZG93cz1aKHQuY2FzdFNoYWRvd3MsITEpLHRoaXMucmVjZWl2ZVNoYWRvd3M9Wih0LnJlY2VpdmVTaGFkb3dzLCExKSx0aGlzLnBpY2tPbmx5PVoodC5waWNrT25seSwhMSksdGhpcy5kZXB0aEZvclRyYW5zbHVjZW50Q2xhc3NpZmljYXRpb249Wih0LmRlcHRoRm9yVHJhbnNsdWNlbnRDbGFzc2lmaWNhdGlvbiwhMSksdGhpcy5kaXJ0eT0hMCx0aGlzLmxhc3REaXJ0eVRpbWU9MCx0aGlzLmRlcml2ZWRDb21tYW5kcz17fX1mdW5jdGlvbiBJbyh0LGUpe3JldHVybih0Ll9mbGFncyZlKT09PWV9ZnVuY3Rpb24gbWModCxlLGkpe2k/dC5fZmxhZ3N8PWU6dC5fZmxhZ3MmPX5lfXZhciB6bixmbixHbT1TKCgpPT57RnQoKTttdCgpO1hpKCk7em49e0NVTEw6MSxPQ0NMVURFOjIsRVhFQ1VURV9JTl9DTE9TRVNUX0ZSVVNUVU06NCxERUJVR19TSE9XX0JPVU5ESU5HX1ZPTFVNRTo4LENBU1RfU0hBRE9XUzoxNixSRUNFSVZFX1NIQURPV1M6MzIsUElDS19PTkxZOjY0LERFUFRIX0ZPUl9UUkFOU0xVQ0VOVF9DTEFTU0lGSUNBVElPTjoxMjh9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRFLnByb3RvdHlwZSx7Ym91bmRpbmdWb2x1bWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ib3VuZGluZ1ZvbHVtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2JvdW5kaW5nVm9sdW1lIT09dCYmKHRoaXMuX2JvdW5kaW5nVm9sdW1lPXQsdGhpcy5kaXJ0eT0hMCl9fSxvcmllbnRlZEJvdW5kaW5nQm94OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3JpZW50ZWRCb3VuZGluZ0JveH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX29yaWVudGVkQm91bmRpbmdCb3ghPT10JiYodGhpcy5fb3JpZW50ZWRCb3VuZGluZ0JveD10LHRoaXMuZGlydHk9ITApfX0sY3VsbDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIElvKHRoaXMsem4uQ1VMTCl9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLkNVTEwpIT09dCYmKG1jKHRoaXMsem4uQ1VMTCx0KSx0aGlzLmRpcnR5PSEwKX19LG9jY2x1ZGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLk9DQ0xVREUpfSxzZXQ6ZnVuY3Rpb24odCl7SW8odGhpcyx6bi5PQ0NMVURFKSE9PXQmJihtYyh0aGlzLHpuLk9DQ0xVREUsdCksdGhpcy5kaXJ0eT0hMCl9fSxtb2RlbE1hdHJpeDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vZGVsTWF0cml4fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbW9kZWxNYXRyaXghPT10JiYodGhpcy5fbW9kZWxNYXRyaXg9dCx0aGlzLmRpcnR5PSEwKX19LHByaW1pdGl2ZVR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVUeXBlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcHJpbWl0aXZlVHlwZSE9PXQmJih0aGlzLl9wcmltaXRpdmVUeXBlPXQsdGhpcy5kaXJ0eT0hMCl9fSx2ZXJ0ZXhBcnJheTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleEFycmF5fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fdmVydGV4QXJyYXkhPT10JiYodGhpcy5fdmVydGV4QXJyYXk9dCx0aGlzLmRpcnR5PSEwKX19LGNvdW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY291bnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jb3VudCE9PXQmJih0aGlzLl9jb3VudD10LHRoaXMuZGlydHk9ITApfX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb2Zmc2V0fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fb2Zmc2V0IT09dCYmKHRoaXMuX29mZnNldD10LHRoaXMuZGlydHk9ITApfX0saW5zdGFuY2VDb3VudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlQ291bnR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9pbnN0YW5jZUNvdW50IT09dCYmKHRoaXMuX2luc3RhbmNlQ291bnQ9dCx0aGlzLmRpcnR5PSEwKX19LHNoYWRlclByb2dyYW06e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaGFkZXJQcm9ncmFtfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fc2hhZGVyUHJvZ3JhbSE9PXQmJih0aGlzLl9zaGFkZXJQcm9ncmFtPXQsdGhpcy5kaXJ0eT0hMCl9fSxjYXN0U2hhZG93czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIElvKHRoaXMsem4uQ0FTVF9TSEFET1dTKX0sc2V0OmZ1bmN0aW9uKHQpe0lvKHRoaXMsem4uQ0FTVF9TSEFET1dTKSE9PXQmJihtYyh0aGlzLHpuLkNBU1RfU0hBRE9XUyx0KSx0aGlzLmRpcnR5PSEwKX19LHJlY2VpdmVTaGFkb3dzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSW8odGhpcyx6bi5SRUNFSVZFX1NIQURPV1MpfSxzZXQ6ZnVuY3Rpb24odCl7SW8odGhpcyx6bi5SRUNFSVZFX1NIQURPV1MpIT09dCYmKG1jKHRoaXMsem4uUkVDRUlWRV9TSEFET1dTLHQpLHRoaXMuZGlydHk9ITApfX0sdW5pZm9ybU1hcDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VuaWZvcm1NYXB9LHNldDpmdW5jdGlvbih0KXt0aGlzLl91bmlmb3JtTWFwIT09dCYmKHRoaXMuX3VuaWZvcm1NYXA9dCx0aGlzLmRpcnR5PSEwKX19LHJlbmRlclN0YXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RhdGV9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZW5kZXJTdGF0ZSE9PXQmJih0aGlzLl9yZW5kZXJTdGF0ZT10LHRoaXMuZGlydHk9ITApfX0sZnJhbWVidWZmZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mcmFtZWJ1ZmZlcn0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2ZyYW1lYnVmZmVyIT09dCYmKHRoaXMuX2ZyYW1lYnVmZmVyPXQsdGhpcy5kaXJ0eT0hMCl9fSxwYXNzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFzc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3Bhc3MhPT10JiYodGhpcy5fcGFzcz10LHRoaXMuZGlydHk9ITApfX0sZXhlY3V0ZUluQ2xvc2VzdEZydXN0dW06e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLkVYRUNVVEVfSU5fQ0xPU0VTVF9GUlVTVFVNKX0sc2V0OmZ1bmN0aW9uKHQpe0lvKHRoaXMsem4uRVhFQ1VURV9JTl9DTE9TRVNUX0ZSVVNUVU0pIT09dCYmKG1jKHRoaXMsem4uRVhFQ1VURV9JTl9DTE9TRVNUX0ZSVVNUVU0sdCksdGhpcy5kaXJ0eT0hMCl9fSxvd25lcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX293bmVyfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fb3duZXIhPT10JiYodGhpcy5fb3duZXI9dCx0aGlzLmRpcnR5PSEwKX19LGRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSW8odGhpcyx6bi5ERUJVR19TSE9XX0JPVU5ESU5HX1ZPTFVNRSl9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLkRFQlVHX1NIT1dfQk9VTkRJTkdfVk9MVU1FKSE9PXQmJihtYyh0aGlzLHpuLkRFQlVHX1NIT1dfQk9VTkRJTkdfVk9MVU1FLHQpLHRoaXMuZGlydHk9ITApfX0sZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zIT09dCYmKHRoaXMuX2RlYnVnT3ZlcmxhcHBpbmdGcnVzdHVtcz10LHRoaXMuZGlydHk9ITApfX0scGlja0lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGlja0lkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcGlja0lkIT09dCYmKHRoaXMuX3BpY2tJZD10LHRoaXMuZGlydHk9ITApfX0scGlja09ubHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLlBJQ0tfT05MWSl9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLlBJQ0tfT05MWSkhPT10JiYobWModGhpcyx6bi5QSUNLX09OTFksdCksdGhpcy5kaXJ0eT0hMCl9fSxkZXB0aEZvclRyYW5zbHVjZW50Q2xhc3NpZmljYXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiBJbyh0aGlzLHpuLkRFUFRIX0ZPUl9UUkFOU0xVQ0VOVF9DTEFTU0lGSUNBVElPTil9LHNldDpmdW5jdGlvbih0KXtJbyh0aGlzLHpuLkRFUFRIX0ZPUl9UUkFOU0xVQ0VOVF9DTEFTU0lGSUNBVElPTikhPT10JiYobWModGhpcyx6bi5ERVBUSF9GT1JfVFJBTlNMVUNFTlRfQ0xBU1NJRklDQVRJT04sdCksdGhpcy5kaXJ0eT0hMCl9fX0pO1RFLnNoYWxsb3dDbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSl8fChlPW5ldyBURSksZS5fYm91bmRpbmdWb2x1bWU9dC5fYm91bmRpbmdWb2x1bWUsZS5fb3JpZW50ZWRCb3VuZGluZ0JveD10Ll9vcmllbnRlZEJvdW5kaW5nQm94LGUuX21vZGVsTWF0cml4PXQuX21vZGVsTWF0cml4LGUuX3ByaW1pdGl2ZVR5cGU9dC5fcHJpbWl0aXZlVHlwZSxlLl92ZXJ0ZXhBcnJheT10Ll92ZXJ0ZXhBcnJheSxlLl9jb3VudD10Ll9jb3VudCxlLl9vZmZzZXQ9dC5fb2Zmc2V0LGUuX2luc3RhbmNlQ291bnQ9dC5faW5zdGFuY2VDb3VudCxlLl9zaGFkZXJQcm9ncmFtPXQuX3NoYWRlclByb2dyYW0sZS5fdW5pZm9ybU1hcD10Ll91bmlmb3JtTWFwLGUuX3JlbmRlclN0YXRlPXQuX3JlbmRlclN0YXRlLGUuX2ZyYW1lYnVmZmVyPXQuX2ZyYW1lYnVmZmVyLGUuX3Bhc3M9dC5fcGFzcyxlLl9vd25lcj10Ll9vd25lcixlLl9kZWJ1Z092ZXJsYXBwaW5nRnJ1c3R1bXM9dC5fZGVidWdPdmVybGFwcGluZ0ZydXN0dW1zLGUuX3BpY2tJZD10Ll9waWNrSWQsZS5fZmxhZ3M9dC5fZmxhZ3MsZS5kaXJ0eT0hMCxlLmxhc3REaXJ0eVRpbWU9MCxlfTtURS5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbih0LGUpe3QuZHJhdyh0aGlzLGUpfTtmbj1URX0pO3ZhciB3JCxvcyxXbT1TKCgpPT57dyQ9e0VOVklST05NRU5UOjAsQ09NUFVURToxLEdMT0JFOjIsVEVSUkFJTl9DTEFTU0lGSUNBVElPTjozLENFU0lVTV8zRF9USUxFOjQsQ0VTSVVNXzNEX1RJTEVfQ0xBU1NJRklDQVRJT046NSxDRVNJVU1fM0RfVElMRV9DTEFTU0lGSUNBVElPTl9JR05PUkVfU0hPVzo2LE9QQVFVRTo3LFRSQU5TTFVDRU5UOjgsVk9YRUxTOjksT1ZFUkxBWToxMCxOVU1CRVJfT0ZfUEFTU0VTOjExfSxvcz1PYmplY3QuZnJlZXplKHckKX0pO3ZhciBBSSxVcyxmYz1TKCgpPT57c3MoKTtBST17Q0xPQ0tXSVNFOml0LkNXLENPVU5URVJfQ0xPQ0tXSVNFOml0LkNDV307QUkudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1BSS5DTE9DS1dJU0V8fHQ9PT1BSS5DT1VOVEVSX0NMT0NLV0lTRX07VXM9T2JqZWN0LmZyZWV6ZShBSSl9KTtmdW5jdGlvbiBnRCh0KXtpZih0eXBlb2YgdCE9Im9iamVjdCJ8fHQ9PT1udWxsKXJldHVybiB0O2xldCBlLGk9T2JqZWN0LmtleXModCk7Zm9yKGxldCBuPTA7bjxpLmxlbmd0aDtuKyspZT1pW25dLHQuaGFzT3duUHJvcGVydHkoZSkmJmUhPT0iX2FwcGx5RnVuY3Rpb25zIiYmKHRbZV09Z0QodFtlXSkpO3JldHVybiBPYmplY3QuZnJlZXplKHQpfXZhciBURCxORD1TKCgpPT57VEQ9Z0R9KTtmdW5jdGlvbiBGRCh0KXtyZXR1cm4gdD09PWl0LkZVTkNfQUREfHx0PT09aXQuRlVOQ19TVUJUUkFDVHx8dD09PWl0LkZVTkNfUkVWRVJTRV9TVUJUUkFDVHx8dD09PWl0Lk1JTnx8dD09PWl0Lk1BWH1mdW5jdGlvbiBoSSh0KXtyZXR1cm4gdD09PWl0LlpFUk98fHQ9PT1pdC5PTkV8fHQ9PT1pdC5TUkNfQ09MT1J8fHQ9PT1pdC5PTkVfTUlOVVNfU1JDX0NPTE9SfHx0PT09aXQuRFNUX0NPTE9SfHx0PT09aXQuT05FX01JTlVTX0RTVF9DT0xPUnx8dD09PWl0LlNSQ19BTFBIQXx8dD09PWl0Lk9ORV9NSU5VU19TUkNfQUxQSEF8fHQ9PT1pdC5EU1RfQUxQSEF8fHQ9PT1pdC5PTkVfTUlOVVNfRFNUX0FMUEhBfHx0PT09aXQuQ09OU1RBTlRfQ09MT1J8fHQ9PT1pdC5PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1J8fHQ9PT1pdC5DT05TVEFOVF9BTFBIQXx8dD09PWl0Lk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQXx8dD09PWl0LlNSQ19BTFBIQV9TQVRVUkFURX1mdW5jdGlvbiB4JCh0KXtyZXR1cm4gdD09PWl0LkZST05UfHx0PT09aXQuQkFDS3x8dD09PWl0LkZST05UX0FORF9CQUNLfWZ1bmN0aW9uIFAkKHQpe3JldHVybiB0PT09aXQuTkVWRVJ8fHQ9PT1pdC5MRVNTfHx0PT09aXQuRVFVQUx8fHQ9PT1pdC5MRVFVQUx8fHQ9PT1pdC5HUkVBVEVSfHx0PT09aXQuTk9URVFVQUx8fHQ9PT1pdC5HRVFVQUx8fHQ9PT1pdC5BTFdBWVN9ZnVuY3Rpb24gYkQodCl7cmV0dXJuIHQ9PT1pdC5ORVZFUnx8dD09PWl0LkxFU1N8fHQ9PT1pdC5FUVVBTHx8dD09PWl0LkxFUVVBTHx8dD09PWl0LkdSRUFURVJ8fHQ9PT1pdC5OT1RFUVVBTHx8dD09PWl0LkdFUVVBTHx8dD09PWl0LkFMV0FZU31mdW5jdGlvbiBEbSh0KXtyZXR1cm4gdD09PWl0LlpFUk98fHQ9PT1pdC5LRUVQfHx0PT09aXQuUkVQTEFDRXx8dD09PWl0LklOQ1J8fHQ9PT1pdC5ERUNSfHx0PT09aXQuSU5WRVJUfHx0PT09aXQuSU5DUl9XUkFQfHx0PT09aXQuREVDUl9XUkFQfWZ1bmN0aW9uIF9BKHQpe2xldCBlPVoodCxaLkVNUFRZX09CSkVDVCksaT1aKGUuY3VsbCxaLkVNUFRZX09CSkVDVCksbj1aKGUucG9seWdvbk9mZnNldCxaLkVNUFRZX09CSkVDVCkscz1aKGUuc2Npc3NvclRlc3QsWi5FTVBUWV9PQkpFQ1QpLG89WihzLnJlY3RhbmdsZSxaLkVNUFRZX09CSkVDVCkscj1aKGUuZGVwdGhSYW5nZSxaLkVNUFRZX09CSkVDVCksYT1aKGUuZGVwdGhUZXN0LFouRU1QVFlfT0JKRUNUKSxoPVooZS5jb2xvck1hc2ssWi5FTVBUWV9PQkpFQ1QpLEE9WihlLmJsZW5kaW5nLFouRU1QVFlfT0JKRUNUKSxkPVooQS5jb2xvcixaLkVNUFRZX09CSkVDVCksZj1aKGUuc3RlbmNpbFRlc3QsWi5FTVBUWV9PQkpFQ1QpLEU9WihmLmZyb250T3BlcmF0aW9uLFouRU1QVFlfT0JKRUNUKSxfPVooZi5iYWNrT3BlcmF0aW9uLFouRU1QVFlfT0JKRUNUKSxSPVooZS5zYW1wbGVDb3ZlcmFnZSxaLkVNUFRZX09CSkVDVCksST1lLnZpZXdwb3J0O2lmKHRoaXMuZnJvbnRGYWNlPVooZS5mcm9udEZhY2UsVXMuQ09VTlRFUl9DTE9DS1dJU0UpLHRoaXMuY3VsbD17ZW5hYmxlZDpaKGkuZW5hYmxlZCwhMSksZmFjZTpaKGkuZmFjZSxpdC5CQUNLKX0sdGhpcy5saW5lV2lkdGg9WihlLmxpbmVXaWR0aCwxKSx0aGlzLnBvbHlnb25PZmZzZXQ9e2VuYWJsZWQ6WihuLmVuYWJsZWQsITEpLGZhY3RvcjpaKG4uZmFjdG9yLDApLHVuaXRzOloobi51bml0cywwKX0sdGhpcy5zY2lzc29yVGVzdD17ZW5hYmxlZDpaKHMuZW5hYmxlZCwhMSkscmVjdGFuZ2xlOm1pLmNsb25lKG8pfSx0aGlzLmRlcHRoUmFuZ2U9e25lYXI6WihyLm5lYXIsMCksZmFyOlooci5mYXIsMSl9LHRoaXMuZGVwdGhUZXN0PXtlbmFibGVkOlooYS5lbmFibGVkLCExKSxmdW5jOlooYS5mdW5jLGl0LkxFU1MpfSx0aGlzLmNvbG9yTWFzaz17cmVkOlooaC5yZWQsITApLGdyZWVuOlooaC5ncmVlbiwhMCksYmx1ZTpaKGguYmx1ZSwhMCksYWxwaGE6WihoLmFscGhhLCEwKX0sdGhpcy5kZXB0aE1hc2s9WihlLmRlcHRoTWFzaywhMCksdGhpcy5zdGVuY2lsTWFzaz1aKGUuc3RlbmNpbE1hc2ssLTEpLHRoaXMuYmxlbmRpbmc9e2VuYWJsZWQ6WihBLmVuYWJsZWQsITEpLGNvbG9yOm5ldyBadChaKGQucmVkLDApLFooZC5ncmVlbiwwKSxaKGQuYmx1ZSwwKSxaKGQuYWxwaGEsMCkpLGVxdWF0aW9uUmdiOlooQS5lcXVhdGlvblJnYixpdC5GVU5DX0FERCksZXF1YXRpb25BbHBoYTpaKEEuZXF1YXRpb25BbHBoYSxpdC5GVU5DX0FERCksZnVuY3Rpb25Tb3VyY2VSZ2I6WihBLmZ1bmN0aW9uU291cmNlUmdiLGl0Lk9ORSksZnVuY3Rpb25Tb3VyY2VBbHBoYTpaKEEuZnVuY3Rpb25Tb3VyY2VBbHBoYSxpdC5PTkUpLGZ1bmN0aW9uRGVzdGluYXRpb25SZ2I6WihBLmZ1bmN0aW9uRGVzdGluYXRpb25SZ2IsaXQuWkVSTyksZnVuY3Rpb25EZXN0aW5hdGlvbkFscGhhOlooQS5mdW5jdGlvbkRlc3RpbmF0aW9uQWxwaGEsaXQuWkVSTyl9LHRoaXMuc3RlbmNpbFRlc3Q9e2VuYWJsZWQ6WihmLmVuYWJsZWQsITEpLGZyb250RnVuY3Rpb246WihmLmZyb250RnVuY3Rpb24saXQuQUxXQVlTKSxiYWNrRnVuY3Rpb246WihmLmJhY2tGdW5jdGlvbixpdC5BTFdBWVMpLHJlZmVyZW5jZTpaKGYucmVmZXJlbmNlLDApLG1hc2s6WihmLm1hc2ssLTEpLGZyb250T3BlcmF0aW9uOntmYWlsOlooRS5mYWlsLGl0LktFRVApLHpGYWlsOlooRS56RmFpbCxpdC5LRUVQKSx6UGFzczpaKEUuelBhc3MsaXQuS0VFUCl9LGJhY2tPcGVyYXRpb246e2ZhaWw6WihfLmZhaWwsaXQuS0VFUCksekZhaWw6WihfLnpGYWlsLGl0LktFRVApLHpQYXNzOlooXy56UGFzcyxpdC5LRUVQKX19LHRoaXMuc2FtcGxlQ292ZXJhZ2U9e2VuYWJsZWQ6WihSLmVuYWJsZWQsITEpLHZhbHVlOlooUi52YWx1ZSwxKSxpbnZlcnQ6WihSLmludmVydCwhMSl9LHRoaXMudmlld3BvcnQ9bShJKT9uZXcgbWkoSS54LEkueSxJLndpZHRoLEkuaGVpZ2h0KTp2b2lkIDAsdGhpcy5saW5lV2lkdGg8ZW4ubWluaW11bUFsaWFzZWRMaW5lV2lkdGh8fHRoaXMubGluZVdpZHRoPmVuLm1heGltdW1BbGlhc2VkTGluZVdpZHRoKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5saW5lV2lkdGggaXMgb3V0IG9mIHJhbmdlLiAgQ2hlY2sgbWluaW11bUFsaWFzZWRMaW5lV2lkdGggYW5kIG1heGltdW1BbGlhc2VkTGluZVdpZHRoLiIpO2lmKCFVcy52YWxpZGF0ZSh0aGlzLmZyb250RmFjZSkpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuZnJvbnRGYWNlLiIpO2lmKCF4JCh0aGlzLmN1bGwuZmFjZSkpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuY3VsbC5mYWNlLiIpO2lmKHRoaXMuc2Npc3NvclRlc3QucmVjdGFuZ2xlLndpZHRoPDB8fHRoaXMuc2Npc3NvclRlc3QucmVjdGFuZ2xlLmhlaWdodDwwKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5zY2lzc29yVGVzdC5yZWN0YW5nbGUud2lkdGggYW5kIHJlbmRlclN0YXRlLnNjaXNzb3JUZXN0LnJlY3RhbmdsZS5oZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVyby4iKTtpZih0aGlzLmRlcHRoUmFuZ2UubmVhcj50aGlzLmRlcHRoUmFuZ2UuZmFyKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5kZXB0aFJhbmdlLm5lYXIgY2FuIG5vdCBiZSBncmVhdGVyIHRoYW4gcmVuZGVyU3RhdGUuZGVwdGhSYW5nZS5mYXIuIik7aWYodGhpcy5kZXB0aFJhbmdlLm5lYXI8MCl0aHJvdyBuZXcgWSgicmVuZGVyU3RhdGUuZGVwdGhSYW5nZS5uZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8uIik7aWYodGhpcy5kZXB0aFJhbmdlLmZhcj4xKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5kZXB0aFJhbmdlLmZhciBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUuIik7aWYoIVAkKHRoaXMuZGVwdGhUZXN0LmZ1bmMpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmRlcHRoVGVzdC5mdW5jLiIpO2lmKHRoaXMuYmxlbmRpbmcuY29sb3IucmVkPDB8fHRoaXMuYmxlbmRpbmcuY29sb3IucmVkPjF8fHRoaXMuYmxlbmRpbmcuY29sb3IuZ3JlZW48MHx8dGhpcy5ibGVuZGluZy5jb2xvci5ncmVlbj4xfHx0aGlzLmJsZW5kaW5nLmNvbG9yLmJsdWU8MHx8dGhpcy5ibGVuZGluZy5jb2xvci5ibHVlPjF8fHRoaXMuYmxlbmRpbmcuY29sb3IuYWxwaGE8MHx8dGhpcy5ibGVuZGluZy5jb2xvci5hbHBoYT4xKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS5ibGVuZGluZy5jb2xvciBjb21wb25lbnRzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8gYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBvbmUuIik7aWYoIUZEKHRoaXMuYmxlbmRpbmcuZXF1YXRpb25SZ2IpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmVxdWF0aW9uUmdiLiIpO2lmKCFGRCh0aGlzLmJsZW5kaW5nLmVxdWF0aW9uQWxwaGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmVxdWF0aW9uQWxwaGEuIik7aWYoIWhJKHRoaXMuYmxlbmRpbmcuZnVuY3Rpb25Tb3VyY2VSZ2IpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlUmdiLiIpO2lmKCFoSSh0aGlzLmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlQWxwaGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlQWxwaGEuIik7aWYoIWhJKHRoaXMuYmxlbmRpbmcuZnVuY3Rpb25EZXN0aW5hdGlvblJnYikpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuYmxlbmRpbmcuZnVuY3Rpb25EZXN0aW5hdGlvblJnYi4iKTtpZighaEkodGhpcy5ibGVuZGluZy5mdW5jdGlvbkRlc3RpbmF0aW9uQWxwaGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLmJsZW5kaW5nLmZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYS4iKTtpZighYkQodGhpcy5zdGVuY2lsVGVzdC5mcm9udEZ1bmN0aW9uKSl0aHJvdyBuZXcgWSgiSW52YWxpZCByZW5kZXJTdGF0ZS5zdGVuY2lsVGVzdC5mcm9udEZ1bmN0aW9uLiIpO2lmKCFiRCh0aGlzLnN0ZW5jaWxUZXN0LmJhY2tGdW5jdGlvbikpdGhyb3cgbmV3IFkoIkludmFsaWQgcmVuZGVyU3RhdGUuc3RlbmNpbFRlc3QuYmFja0Z1bmN0aW9uLiIpO2lmKCFEbSh0aGlzLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLmZhaWwpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLmZhaWwuIik7aWYoIURtKHRoaXMuc3RlbmNpbFRlc3QuZnJvbnRPcGVyYXRpb24uekZhaWwpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLnpGYWlsLiIpO2lmKCFEbSh0aGlzLnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLnpQYXNzKSl0aHJvdyBuZXcgWSgiSW52YWxpZCByZW5kZXJTdGF0ZS5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi56UGFzcy4iKTtpZighRG0odGhpcy5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLmZhaWwpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uZmFpbC4iKTtpZighRG0odGhpcy5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsKSl0aHJvdyBuZXcgWSgiSW52YWxpZCByZW5kZXJTdGF0ZS5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsLiIpO2lmKCFEbSh0aGlzLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MpKXRocm93IG5ldyBZKCJJbnZhbGlkIHJlbmRlclN0YXRlLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MuIik7aWYobSh0aGlzLnZpZXdwb3J0KSl7aWYodGhpcy52aWV3cG9ydC53aWR0aDwwKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZS52aWV3cG9ydC53aWR0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLiIpO2lmKHRoaXMudmlld3BvcnQuaGVpZ2h0PDApdGhyb3cgbmV3IFkoInJlbmRlclN0YXRlLnZpZXdwb3J0LmhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLiIpO2lmKHRoaXMudmlld3BvcnQud2lkdGg+ZW4ubWF4aW11bVZpZXdwb3J0V2lkdGgpdGhyb3cgbmV3IFkoYHJlbmRlclN0YXRlLnZpZXdwb3J0LndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHZpZXdwb3J0IHdpZHRoICgke2VuLm1heGltdW1WaWV3cG9ydFdpZHRoLnRvU3RyaW5nKCl9KS4gIENoZWNrIG1heGltdW1WaWV3cG9ydFdpZHRoLmApO2lmKHRoaXMudmlld3BvcnQuaGVpZ2h0PmVuLm1heGltdW1WaWV3cG9ydEhlaWdodCl0aHJvdyBuZXcgWShgcmVuZGVyU3RhdGUudmlld3BvcnQuaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIHZpZXdwb3J0IGhlaWdodCAoJHtlbi5tYXhpbXVtVmlld3BvcnRIZWlnaHQudG9TdHJpbmcoKX0pLiAgQ2hlY2sgbWF4aW11bVZpZXdwb3J0SGVpZ2h0LmApfXRoaXMuaWQ9MCx0aGlzLl9hcHBseUZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBGbCh0LGUsaSl7aT90LmVuYWJsZShlKTp0LmRpc2FibGUoZSl9ZnVuY3Rpb24gWUQodCxlKXt0LmZyb250RmFjZShlLmZyb250RmFjZSl9ZnVuY3Rpb24gVkQodCxlKXtsZXQgaT1lLmN1bGwsbj1pLmVuYWJsZWQ7RmwodCx0LkNVTExfRkFDRSxuKSxuJiZ0LmN1bGxGYWNlKGkuZmFjZSl9ZnVuY3Rpb24gU0QodCxlKXt0LmxpbmVXaWR0aChlLmxpbmVXaWR0aCl9ZnVuY3Rpb24gT0QodCxlKXtsZXQgaT1lLnBvbHlnb25PZmZzZXQsbj1pLmVuYWJsZWQ7RmwodCx0LlBPTFlHT05fT0ZGU0VUX0ZJTEwsbiksbiYmdC5wb2x5Z29uT2Zmc2V0KGkuZmFjdG9yLGkudW5pdHMpfWZ1bmN0aW9uIEJEKHQsZSxpKXtsZXQgbj1lLnNjaXNzb3JUZXN0LHM9bShpLnNjaXNzb3JUZXN0KT9pLnNjaXNzb3JUZXN0LmVuYWJsZWQ6bi5lbmFibGVkO2lmKEZsKHQsdC5TQ0lTU09SX1RFU1Qscykscyl7bGV0IG89bShpLnNjaXNzb3JUZXN0KT9pLnNjaXNzb3JUZXN0LnJlY3RhbmdsZTpuLnJlY3RhbmdsZTt0LnNjaXNzb3Ioby54LG8ueSxvLndpZHRoLG8uaGVpZ2h0KX19ZnVuY3Rpb24gR0QodCxlKXtsZXQgaT1lLmRlcHRoUmFuZ2U7dC5kZXB0aFJhbmdlKGkubmVhcixpLmZhcil9ZnVuY3Rpb24gV0QodCxlKXtsZXQgaT1lLmRlcHRoVGVzdCxuPWkuZW5hYmxlZDtGbCh0LHQuREVQVEhfVEVTVCxuKSxuJiZ0LmRlcHRoRnVuYyhpLmZ1bmMpfWZ1bmN0aW9uIEREKHQsZSl7bGV0IGk9ZS5jb2xvck1hc2s7dC5jb2xvck1hc2soaS5yZWQsaS5ncmVlbixpLmJsdWUsaS5hbHBoYSl9ZnVuY3Rpb24gVUQodCxlKXt0LmRlcHRoTWFzayhlLmRlcHRoTWFzayl9ZnVuY3Rpb24gTUQodCxlKXt0LnN0ZW5jaWxNYXNrKGUuc3RlbmNpbE1hc2spfWZ1bmN0aW9uIGokKHQsZSl7dC5ibGVuZENvbG9yKGUucmVkLGUuZ3JlZW4sZS5ibHVlLGUuYWxwaGEpfWZ1bmN0aW9uIFFEKHQsZSxpKXtsZXQgbj1lLmJsZW5kaW5nLHM9bShpLmJsZW5kaW5nRW5hYmxlZCk/aS5ibGVuZGluZ0VuYWJsZWQ6bi5lbmFibGVkO0ZsKHQsdC5CTEVORCxzKSxzJiYoaiQodCxuLmNvbG9yKSx0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShuLmVxdWF0aW9uUmdiLG4uZXF1YXRpb25BbHBoYSksdC5ibGVuZEZ1bmNTZXBhcmF0ZShuLmZ1bmN0aW9uU291cmNlUmdiLG4uZnVuY3Rpb25EZXN0aW5hdGlvblJnYixuLmZ1bmN0aW9uU291cmNlQWxwaGEsbi5mdW5jdGlvbkRlc3RpbmF0aW9uQWxwaGEpKX1mdW5jdGlvbiBrRCh0LGUpe2xldCBpPWUuc3RlbmNpbFRlc3Qsbj1pLmVuYWJsZWQ7aWYoRmwodCx0LlNURU5DSUxfVEVTVCxuKSxuKXtsZXQgcz1pLmZyb250RnVuY3Rpb24sbz1pLmJhY2tGdW5jdGlvbixyPWkucmVmZXJlbmNlLGE9aS5tYXNrO3Quc3RlbmNpbEZ1bmMocyxyLGEpLHQuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0LkJBQ0ssbyxyLGEpLHQuc3RlbmNpbEZ1bmNTZXBhcmF0ZSh0LkZST05ULHMscixhKTtsZXQgaD1pLmZyb250T3BlcmF0aW9uLEE9aC5mYWlsLGQ9aC56RmFpbCxmPWguelBhc3M7dC5zdGVuY2lsT3BTZXBhcmF0ZSh0LkZST05ULEEsZCxmKTtsZXQgRT1pLmJhY2tPcGVyYXRpb24sXz1FLmZhaWwsUj1FLnpGYWlsLEk9RS56UGFzczt0LnN0ZW5jaWxPcFNlcGFyYXRlKHQuQkFDSyxfLFIsSSl9fWZ1bmN0aW9uIExEKHQsZSl7bGV0IGk9ZS5zYW1wbGVDb3ZlcmFnZSxuPWkuZW5hYmxlZDtGbCh0LHQuU0FNUExFX0NPVkVSQUdFLG4pLG4mJnQuc2FtcGxlQ292ZXJhZ2UoaS52YWx1ZSxpLmludmVydCl9ZnVuY3Rpb24geUQodCxlLGkpe2xldCBuPVooZS52aWV3cG9ydCxpLnZpZXdwb3J0KTttKG4pfHwobj1IJCxuLndpZHRoPWkuY29udGV4dC5kcmF3aW5nQnVmZmVyV2lkdGgsbi5oZWlnaHQ9aS5jb250ZXh0LmRyYXdpbmdCdWZmZXJIZWlnaHQpLGkuY29udGV4dC51bmlmb3JtU3RhdGUudmlld3BvcnQ9bix0LnZpZXdwb3J0KG4ueCxuLnksbi53aWR0aCxuLmhlaWdodCl9ZnVuY3Rpb24gdiQodCxlKXtsZXQgaT1bXTtyZXR1cm4gdC5mcm9udEZhY2UhPT1lLmZyb250RmFjZSYmaS5wdXNoKFlEKSwodC5jdWxsLmVuYWJsZWQhPT1lLmN1bGwuZW5hYmxlZHx8dC5jdWxsLmZhY2UhPT1lLmN1bGwuZmFjZSkmJmkucHVzaChWRCksdC5saW5lV2lkdGghPT1lLmxpbmVXaWR0aCYmaS5wdXNoKFNEKSwodC5wb2x5Z29uT2Zmc2V0LmVuYWJsZWQhPT1lLnBvbHlnb25PZmZzZXQuZW5hYmxlZHx8dC5wb2x5Z29uT2Zmc2V0LmZhY3RvciE9PWUucG9seWdvbk9mZnNldC5mYWN0b3J8fHQucG9seWdvbk9mZnNldC51bml0cyE9PWUucG9seWdvbk9mZnNldC51bml0cykmJmkucHVzaChPRCksKHQuZGVwdGhSYW5nZS5uZWFyIT09ZS5kZXB0aFJhbmdlLm5lYXJ8fHQuZGVwdGhSYW5nZS5mYXIhPT1lLmRlcHRoUmFuZ2UuZmFyKSYmaS5wdXNoKEdEKSwodC5kZXB0aFRlc3QuZW5hYmxlZCE9PWUuZGVwdGhUZXN0LmVuYWJsZWR8fHQuZGVwdGhUZXN0LmZ1bmMhPT1lLmRlcHRoVGVzdC5mdW5jKSYmaS5wdXNoKFdEKSwodC5jb2xvck1hc2sucmVkIT09ZS5jb2xvck1hc2sucmVkfHx0LmNvbG9yTWFzay5ncmVlbiE9PWUuY29sb3JNYXNrLmdyZWVufHx0LmNvbG9yTWFzay5ibHVlIT09ZS5jb2xvck1hc2suYmx1ZXx8dC5jb2xvck1hc2suYWxwaGEhPT1lLmNvbG9yTWFzay5hbHBoYSkmJmkucHVzaChERCksdC5kZXB0aE1hc2shPT1lLmRlcHRoTWFzayYmaS5wdXNoKFVEKSx0LnN0ZW5jaWxNYXNrIT09ZS5zdGVuY2lsTWFzayYmaS5wdXNoKE1EKSwodC5zdGVuY2lsVGVzdC5lbmFibGVkIT09ZS5zdGVuY2lsVGVzdC5lbmFibGVkfHx0LnN0ZW5jaWxUZXN0LmZyb250RnVuY3Rpb24hPT1lLnN0ZW5jaWxUZXN0LmZyb250RnVuY3Rpb258fHQuc3RlbmNpbFRlc3QuYmFja0Z1bmN0aW9uIT09ZS5zdGVuY2lsVGVzdC5iYWNrRnVuY3Rpb258fHQuc3RlbmNpbFRlc3QucmVmZXJlbmNlIT09ZS5zdGVuY2lsVGVzdC5yZWZlcmVuY2V8fHQuc3RlbmNpbFRlc3QubWFzayE9PWUuc3RlbmNpbFRlc3QubWFza3x8dC5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi5mYWlsIT09ZS5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi5mYWlsfHx0LnN0ZW5jaWxUZXN0LmZyb250T3BlcmF0aW9uLnpGYWlsIT09ZS5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi56RmFpbHx8dC5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLmZhaWwhPT1lLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uZmFpbHx8dC5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsIT09ZS5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpGYWlsfHx0LnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MhPT1lLnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uelBhc3MpJiZpLnB1c2goa0QpLCh0LnNhbXBsZUNvdmVyYWdlLmVuYWJsZWQhPT1lLnNhbXBsZUNvdmVyYWdlLmVuYWJsZWR8fHQuc2FtcGxlQ292ZXJhZ2UudmFsdWUhPT1lLnNhbXBsZUNvdmVyYWdlLnZhbHVlfHx0LnNhbXBsZUNvdmVyYWdlLmludmVydCE9PWUuc2FtcGxlQ292ZXJhZ2UuaW52ZXJ0KSYmaS5wdXNoKExEKSxpfXZhciBKJCxFQSxIJCxZbixVbT1TKCgpPT57RXIoKTtRbigpO0Z0KCk7bXQoKTtPdCgpO3NzKCk7ZmMoKTtnYSgpO05EKCk7SiQ9MCxFQT17fTtfQS5mcm9tQ2FjaGU9ZnVuY3Rpb24odCl7bGV0IGU9SlNPTi5zdHJpbmdpZnkodCksaT1FQVtlXTtpZihtKGkpKXJldHVybisraS5yZWZlcmVuY2VDb3VudCxpLnN0YXRlO2xldCBuPW5ldyBfQSh0KSxzPUpTT04uc3RyaW5naWZ5KG4pO3JldHVybiBpPUVBW3NdLG0oaSl8fChuLmlkPUokKyssbj1URChuKSxpPXtyZWZlcmVuY2VDb3VudDowLHN0YXRlOm59LEVBW3NdPWkpLCsraS5yZWZlcmVuY2VDb3VudCxFQVtlXT17cmVmZXJlbmNlQ291bnQ6MSxzdGF0ZTppLnN0YXRlfSxpLnN0YXRlfTtfQS5yZW1vdmVGcm9tQ2FjaGU9ZnVuY3Rpb24odCl7bGV0IGU9bmV3IF9BKHQpLGk9SlNPTi5zdHJpbmdpZnkoZSksbj1FQVtpXSxzPUpTT04uc3RyaW5naWZ5KHQpLG89RUFbc107bShvKSYmKC0tby5yZWZlcmVuY2VDb3VudCxvLnJlZmVyZW5jZUNvdW50PT09MCYmKGRlbGV0ZSBFQVtzXSxtKG4pJiYtLW4ucmVmZXJlbmNlQ291bnQpKSxtKG4pJiZuLnJlZmVyZW5jZUNvdW50PT09MCYmZGVsZXRlIEVBW2ldfTtfQS5nZXRDYWNoZT1mdW5jdGlvbigpe3JldHVybiBFQX07X0EuY2xlYXJDYWNoZT1mdW5jdGlvbigpe0VBPXt9fTtIJD1uZXcgbWk7X0EuYXBwbHk9ZnVuY3Rpb24odCxlLGkpe1lEKHQsZSksVkQodCxlKSxTRCh0LGUpLE9EKHQsZSksR0QodCxlKSxXRCh0LGUpLEREKHQsZSksVUQodCxlKSxNRCh0LGUpLGtEKHQsZSksTEQodCxlKSxCRCh0LGUsaSksUUQodCxlLGkpLHlEKHQsZSxpKX07X0EucGFydGlhbEFwcGx5PWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtpZihlIT09aSl7bGV0IGQ9aS5fYXBwbHlGdW5jdGlvbnNbZS5pZF07bShkKXx8KGQ9diQoZSxpKSxpLl9hcHBseUZ1bmN0aW9uc1tlLmlkXT1kKTtsZXQgZj1kLmxlbmd0aDtmb3IobGV0IEU9MDtFPGY7KytFKWRbRV0odCxpKX1sZXQgcj1tKG4uc2Npc3NvclRlc3QpP24uc2Npc3NvclRlc3Q6ZS5zY2lzc29yVGVzdCxhPW0ocy5zY2lzc29yVGVzdCk/cy5zY2lzc29yVGVzdDppLnNjaXNzb3JUZXN0OyhyIT09YXx8bykmJkJEKHQsaSxzKTtsZXQgaD1tKG4uYmxlbmRpbmdFbmFibGVkKT9uLmJsZW5kaW5nRW5hYmxlZDplLmJsZW5kaW5nLmVuYWJsZWQsQT1tKHMuYmxlbmRpbmdFbmFibGVkKT9zLmJsZW5kaW5nRW5hYmxlZDppLmJsZW5kaW5nLmVuYWJsZWQ7KGghPT1BfHxBJiZlLmJsZW5kaW5nIT09aS5ibGVuZGluZykmJlFEKHQsaSxzKSwoZSE9PWl8fG4hPT1zfHxuLmNvbnRleHQhPT1zLmNvbnRleHQpJiZ5RCh0LGkscyl9O19BLmdldFN0YXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyZW5kZXJTdGF0ZSBpcyByZXF1aXJlZC4iKTtyZXR1cm57ZnJvbnRGYWNlOnQuZnJvbnRGYWNlLGN1bGw6e2VuYWJsZWQ6dC5jdWxsLmVuYWJsZWQsZmFjZTp0LmN1bGwuZmFjZX0sbGluZVdpZHRoOnQubGluZVdpZHRoLHBvbHlnb25PZmZzZXQ6e2VuYWJsZWQ6dC5wb2x5Z29uT2Zmc2V0LmVuYWJsZWQsZmFjdG9yOnQucG9seWdvbk9mZnNldC5mYWN0b3IsdW5pdHM6dC5wb2x5Z29uT2Zmc2V0LnVuaXRzfSxzY2lzc29yVGVzdDp7ZW5hYmxlZDp0LnNjaXNzb3JUZXN0LmVuYWJsZWQscmVjdGFuZ2xlOm1pLmNsb25lKHQuc2Npc3NvclRlc3QucmVjdGFuZ2xlKX0sZGVwdGhSYW5nZTp7bmVhcjp0LmRlcHRoUmFuZ2UubmVhcixmYXI6dC5kZXB0aFJhbmdlLmZhcn0sZGVwdGhUZXN0OntlbmFibGVkOnQuZGVwdGhUZXN0LmVuYWJsZWQsZnVuYzp0LmRlcHRoVGVzdC5mdW5jfSxjb2xvck1hc2s6e3JlZDp0LmNvbG9yTWFzay5yZWQsZ3JlZW46dC5jb2xvck1hc2suZ3JlZW4sYmx1ZTp0LmNvbG9yTWFzay5ibHVlLGFscGhhOnQuY29sb3JNYXNrLmFscGhhfSxkZXB0aE1hc2s6dC5kZXB0aE1hc2ssc3RlbmNpbE1hc2s6dC5zdGVuY2lsTWFzayxibGVuZGluZzp7ZW5hYmxlZDp0LmJsZW5kaW5nLmVuYWJsZWQsY29sb3I6WnQuY2xvbmUodC5ibGVuZGluZy5jb2xvciksZXF1YXRpb25SZ2I6dC5ibGVuZGluZy5lcXVhdGlvblJnYixlcXVhdGlvbkFscGhhOnQuYmxlbmRpbmcuZXF1YXRpb25BbHBoYSxmdW5jdGlvblNvdXJjZVJnYjp0LmJsZW5kaW5nLmZ1bmN0aW9uU291cmNlUmdiLGZ1bmN0aW9uU291cmNlQWxwaGE6dC5ibGVuZGluZy5mdW5jdGlvblNvdXJjZUFscGhhLGZ1bmN0aW9uRGVzdGluYXRpb25SZ2I6dC5ibGVuZGluZy5mdW5jdGlvbkRlc3RpbmF0aW9uUmdiLGZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYTp0LmJsZW5kaW5nLmZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYX0sc3RlbmNpbFRlc3Q6e2VuYWJsZWQ6dC5zdGVuY2lsVGVzdC5lbmFibGVkLGZyb250RnVuY3Rpb246dC5zdGVuY2lsVGVzdC5mcm9udEZ1bmN0aW9uLGJhY2tGdW5jdGlvbjp0LnN0ZW5jaWxUZXN0LmJhY2tGdW5jdGlvbixyZWZlcmVuY2U6dC5zdGVuY2lsVGVzdC5yZWZlcmVuY2UsbWFzazp0LnN0ZW5jaWxUZXN0Lm1hc2ssZnJvbnRPcGVyYXRpb246e2ZhaWw6dC5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi5mYWlsLHpGYWlsOnQuc3RlbmNpbFRlc3QuZnJvbnRPcGVyYXRpb24uekZhaWwselBhc3M6dC5zdGVuY2lsVGVzdC5mcm9udE9wZXJhdGlvbi56UGFzc30sYmFja09wZXJhdGlvbjp7ZmFpbDp0LnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uZmFpbCx6RmFpbDp0LnN0ZW5jaWxUZXN0LmJhY2tPcGVyYXRpb24uekZhaWwselBhc3M6dC5zdGVuY2lsVGVzdC5iYWNrT3BlcmF0aW9uLnpQYXNzfX0sc2FtcGxlQ292ZXJhZ2U6e2VuYWJsZWQ6dC5zYW1wbGVDb3ZlcmFnZS5lbmFibGVkLHZhbHVlOnQuc2FtcGxlQ292ZXJhZ2UudmFsdWUsaW52ZXJ0OnQuc2FtcGxlQ292ZXJhZ2UuaW52ZXJ0fSx2aWV3cG9ydDptKHQudmlld3BvcnQpP21pLmNsb25lKHQudmlld3BvcnQpOnZvaWQgMH19O1luPV9BfSk7ZnVuY3Rpb24gZGUodCl7dGhpcy5fc2l6ZT10LnNpemUsdGhpcy5fZGF0YXR5cGU9dC5kYXRhdHlwZSx0aGlzLmdldFZhbHVlPXQuZ2V0VmFsdWV9dmFyIHokLEhzLEskLE1tLGJUPVMoKCk9PntIdCgpO2JpKCk7c3MoKTt6JD1uZXcgbDtIcz17fTtIc1tpdC5GTE9BVF09ImZsb2F0IjtIc1tpdC5GTE9BVF9WRUMyXT0idmVjMiI7SHNbaXQuRkxPQVRfVkVDM109InZlYzMiO0hzW2l0LkZMT0FUX1ZFQzRdPSJ2ZWM0IjtIc1tpdC5JTlRdPSJpbnQiO0hzW2l0LklOVF9WRUMyXT0iaXZlYzIiO0hzW2l0LklOVF9WRUMzXT0iaXZlYzMiO0hzW2l0LklOVF9WRUM0XT0iaXZlYzQiO0hzW2l0LkJPT0xdPSJib29sIjtIc1tpdC5CT09MX1ZFQzJdPSJidmVjMiI7SHNbaXQuQk9PTF9WRUMzXT0iYnZlYzMiO0hzW2l0LkJPT0xfVkVDNF09ImJ2ZWM0IjtIc1tpdC5GTE9BVF9NQVQyXT0ibWF0MiI7SHNbaXQuRkxPQVRfTUFUM109Im1hdDMiO0hzW2l0LkZMT0FUX01BVDRdPSJtYXQ0IjtIc1tpdC5TQU1QTEVSXzJEXT0ic2FtcGxlcjJEIjtIc1tpdC5TQU1QTEVSX0NVQkVdPSJzYW1wbGVyQ3ViZSI7ZGUucHJvdG90eXBlLmdldERlY2xhcmF0aW9uPWZ1bmN0aW9uKHQpe2xldCBlPWB1bmlmb3JtICR7SHNbdGhpcy5fZGF0YXR5cGVdfSAke3R9YCxpPXRoaXMuX3NpemU7cmV0dXJuIGk9PT0xP2UrPSI7IjplKz1gWyR7aS50b1N0cmluZygpfV07YCxlfTtLJD17Y3ptX3ZpZXdwb3J0Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld3BvcnRDYXJ0ZXNpYW40fX0pLGN6bV92aWV3cG9ydE9ydGhvZ3JhcGhpYzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnZpZXdwb3J0T3J0aG9ncmFwaGljfX0pLGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld3BvcnRUcmFuc2Zvcm1hdGlvbn19KSxjem1fZ2xvYmVEZXB0aFRleHR1cmU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuU0FNUExFUl8yRCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nbG9iZURlcHRoVGV4dHVyZX19KSxjem1fbW9kZWw6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbH19KSxjem1faW52ZXJzZU1vZGVsOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZU1vZGVsfX0pLGN6bV92aWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld319KSxjem1fdmlldzNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlldzNEfX0pLGN6bV92aWV3Um90YXRpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC52aWV3Um90YXRpb259fSksY3ptX3ZpZXdSb3RhdGlvbjNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudmlld1JvdGF0aW9uM0R9fSksY3ptX2ludmVyc2VWaWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZVZpZXd9fSksY3ptX2ludmVyc2VWaWV3M0Q6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZlcnNlVmlldzNEfX0pLGN6bV9pbnZlcnNlVmlld1JvdGF0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZVZpZXdSb3RhdGlvbn19KSxjem1faW52ZXJzZVZpZXdSb3RhdGlvbjNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZVZpZXdSb3RhdGlvbjNEfX0pLGN6bV9wcm9qZWN0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucHJvamVjdGlvbn19KSxjem1faW52ZXJzZVByb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZlcnNlUHJvamVjdGlvbn19KSxjem1faW5maW5pdGVQcm9qZWN0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5maW5pdGVQcm9qZWN0aW9ufX0pLGN6bV9tb2RlbFZpZXc6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXd9fSksY3ptX21vZGVsVmlldzNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWxWaWV3M0R9fSksY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXdSZWxhdGl2ZVRvRXllfX0pLGN6bV9pbnZlcnNlTW9kZWxWaWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZU1vZGVsVmlld319KSxjem1faW52ZXJzZU1vZGVsVmlldzNEOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52ZXJzZU1vZGVsVmlldzNEfX0pLGN6bV92aWV3UHJvamVjdGlvbjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnZpZXdQcm9qZWN0aW9ufX0pLGN6bV9pbnZlcnNlVmlld1Byb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZlcnNlVmlld1Byb2plY3Rpb259fSksY3ptX21vZGVsVmlld1Byb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXdQcm9qZWN0aW9ufX0pLGN6bV9pbnZlcnNlTW9kZWxWaWV3UHJvamVjdGlvbjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVyc2VNb2RlbFZpZXdQcm9qZWN0aW9ufX0pLGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9uUmVsYXRpdmVUb0V5ZTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllfX0pLGN6bV9tb2RlbFZpZXdJbmZpbml0ZVByb2plY3Rpb246bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUNCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5tb2RlbFZpZXdJbmZpbml0ZVByb2plY3Rpb259fSksY3ptX29ydGhvZ3JhcGhpY0luM0Q6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQub3J0aG9ncmFwaGljSW4zRD8xOjB9fSksY3ptX25vcm1hbDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vcm1hbH19KSxjem1fbm9ybWFsM0Q6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfTUFUMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5ub3JtYWwzRH19KSxjem1faW52ZXJzZU5vcm1hbDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVyc2VOb3JtYWx9fSksY3ptX2ludmVyc2VOb3JtYWwzRDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVyc2VOb3JtYWwzRH19KSxjem1fZXllSGVpZ2h0Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmV5ZUhlaWdodH19KSxjem1fZXllSGVpZ2h0MkQ6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5leWVIZWlnaHQyRH19KSxjem1fZXllRWxsaXBzb2lkTm9ybWFsRUM6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5leWVFbGxpcHNvaWROb3JtYWxFQ319KSxjem1fZXllRWxsaXBzb2lkQ3VydmF0dXJlOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzIsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXllRWxsaXBzb2lkQ3VydmF0dXJlfX0pLGN6bV9tb2RlbFRvRW51Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubW9kZWxUb0VudX19KSxjem1fZW51VG9Nb2RlbDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9NQVQ0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmVudVRvTW9kZWx9fSksY3ptX2VudGlyZUZydXN0dW06bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5lbnRpcmVGcnVzdHVtfX0pLGN6bV9jdXJyZW50RnJ1c3R1bTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMyLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmN1cnJlbnRGcnVzdHVtfX0pLGN6bV9mcnVzdHVtUGxhbmVzOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJ1c3R1bVBsYW5lc319KSxjem1fZmFyRGVwdGhGcm9tTmVhclBsdXNPbmU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmFyRGVwdGhGcm9tTmVhclBsdXNPbmV9fSksY3ptX2xvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5sb2cyRmFyRGVwdGhGcm9tTmVhclBsdXNPbmV9fSksY3ptX29uZU92ZXJMb2cyRmFyRGVwdGhGcm9tTmVhclBsdXNPbmU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQub25lT3ZlckxvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZX19KSxjem1fc3VuUG9zaXRpb25XQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnN1blBvc2l0aW9uV0N9fSksY3ptX3N1blBvc2l0aW9uQ29sdW1idXNWaWV3Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3VuUG9zaXRpb25Db2x1bWJ1c1ZpZXd9fSksY3ptX3N1bkRpcmVjdGlvbkVDOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3VuRGlyZWN0aW9uRUN9fSksY3ptX3N1bkRpcmVjdGlvbldDOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3VuRGlyZWN0aW9uV0N9fSksY3ptX21vb25EaXJlY3Rpb25FQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1vb25EaXJlY3Rpb25FQ319KSxjem1fbGlnaHREaXJlY3Rpb25FQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmxpZ2h0RGlyZWN0aW9uRUN9fSksY3ptX2xpZ2h0RGlyZWN0aW9uV0M6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5saWdodERpcmVjdGlvbldDfX0pLGN6bV9saWdodENvbG9yOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGlnaHRDb2xvcn19KSxjem1fbGlnaHRDb2xvckhkcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmxpZ2h0Q29sb3JIZHJ9fSksY3ptX2VuY29kZWRDYW1lcmFQb3NpdGlvbk1DSGlnaDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmVuY29kZWRDYW1lcmFQb3NpdGlvbk1DSGlnaH19KSxjem1fZW5jb2RlZENhbWVyYVBvc2l0aW9uTUNMb3c6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMyxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5lbmNvZGVkQ2FtZXJhUG9zaXRpb25NQ0xvd319KSxjem1fdmlld2VyUG9zaXRpb25XQzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBhdC5nZXRUcmFuc2xhdGlvbih0LmludmVyc2VWaWV3LHokKX19KSxjem1fZnJhbWVOdW1iZXI6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJhbWVTdGF0ZS5mcmFtZU51bWJlcn19KSxjem1fbW9ycGhUaW1lOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmZyYW1lU3RhdGUubW9ycGhUaW1lfX0pLGN6bV9zY2VuZU1vZGU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJhbWVTdGF0ZS5tb2RlfX0pLGN6bV9wYXNzOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnBhc3N9fSksY3ptX2JhY2tncm91bmRDb2xvcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUM0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmJhY2tncm91bmRDb2xvcn19KSxjem1fYnJkZkx1dDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5TQU1QTEVSXzJELGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmJyZGZMdXR9fSksY3ptX2Vudmlyb25tZW50TWFwOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LlNBTVBMRVJfQ1VCRSxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5lbnZpcm9ubWVudE1hcH19KSxjem1fc3BlY3VsYXJFbnZpcm9ubWVudE1hcHM6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuU0FNUExFUl8yRCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGVjdWxhckVudmlyb25tZW50TWFwc319KSxjem1fc3BlY3VsYXJFbnZpcm9ubWVudE1hcFNpemU6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVRfVkVDMixnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGVjdWxhckVudmlyb25tZW50TWFwc0RpbWVuc2lvbnN9fSksY3ptX3NwZWN1bGFyRW52aXJvbm1lbnRNYXBzTWF4aW11bUxPRDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGVjdWxhckVudmlyb25tZW50TWFwc01heGltdW1MT0R9fSksY3ptX3NwaGVyaWNhbEhhcm1vbmljQ29lZmZpY2llbnRzOm5ldyBkZSh7c2l6ZTo5LGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc3BoZXJpY2FsSGFybW9uaWNDb2VmZmljaWVudHN9fSksY3ptX3RlbWVUb1BzZXVkb0ZpeGVkOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX01BVDMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQudGVtZVRvUHNldWRvRml4ZWRNYXRyaXh9fSksY3ptX3BpeGVsUmF0aW86bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQucGl4ZWxSYXRpb319KSxjem1fZm9nRGVuc2l0eTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5mb2dEZW5zaXR5fX0pLGN6bV9mb2dNaW5pbXVtQnJpZ2h0bmVzczpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5mb2dNaW5pbXVtQnJpZ2h0bmVzc319KSxjem1fYXRtb3NwaGVyZUhzYlNoaWZ0Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZUhzYlNoaWZ0fX0pLGN6bV9hdG1vc3BoZXJlTGlnaHRJbnRlbnNpdHk6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZUxpZ2h0SW50ZW5zaXR5fX0pLGN6bV9hdG1vc3BoZXJlUmF5bGVpZ2hDb2VmZmljaWVudDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmF0bW9zcGhlcmVSYXlsZWlnaENvZWZmaWNpZW50fX0pLGN6bV9hdG1vc3BoZXJlUmF5bGVpZ2hTY2FsZUhlaWdodDpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdG1vc3BoZXJlUmF5bGVpZ2hTY2FsZUhlaWdodH19KSxjem1fYXRtb3NwaGVyZU1pZUNvZWZmaWNpZW50Om5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZU1pZUNvZWZmaWNpZW50fX0pLGN6bV9hdG1vc3BoZXJlTWllU2NhbGVIZWlnaHQ6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXRtb3NwaGVyZU1pZVNjYWxlSGVpZ2h0fX0pLGN6bV9hdG1vc3BoZXJlTWllQW5pc290cm9weTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdG1vc3BoZXJlTWllQW5pc290cm9weX19KSxjem1fYXRtb3NwaGVyZUR5bmFtaWNMaWdodGluZzpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5hdG1vc3BoZXJlRHluYW1pY0xpZ2h0aW5nfX0pLGN6bV9zcGxpdFBvc2l0aW9uOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0UG9zaXRpb259fSksY3ptX2dlb21ldHJpY1RvbGVyYW5jZU92ZXJNZXRlcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVCxnZXRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZW9tZXRyaWNUb2xlcmFuY2VPdmVyTWV0ZXJ9fSksY3ptX21pbmltdW1EaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6bmV3IGRlKHtzaXplOjEsZGF0YXR5cGU6aXQuRkxPQVQsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZX19KSxjem1faW52ZXJ0Q2xhc3NpZmljYXRpb25Db2xvcjpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUM0LGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmludmVydENsYXNzaWZpY2F0aW9uQ29sb3J9fSksY3ptX2dhbW1hOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FULGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdhbW1hfX0pLGN6bV9lbGxpcHNvaWRSYWRpaTpuZXcgZGUoe3NpemU6MSxkYXRhdHlwZTppdC5GTE9BVF9WRUMzLGdldFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmVsbGlwc29pZC5yYWRpaX19KSxjem1fZWxsaXBzb2lkSW52ZXJzZVJhZGlpOm5ldyBkZSh7c2l6ZToxLGRhdGF0eXBlOml0LkZMT0FUX1ZFQzMsZ2V0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxsaXBzb2lkLm9uZU92ZXJSYWRpaX19KX0sTW09SyR9KTtmdW5jdGlvbiBYJCh0LGUsaSxuKXtzd2l0Y2goZS50eXBlKXtjYXNlIHQuRkxPQVQ6cmV0dXJuIG5ldyB3RCh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfVkVDMjpyZXR1cm4gbmV3IHhEKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9WRUMzOnJldHVybiBuZXcgUEQodCxlLGksbik7Y2FzZSB0LkZMT0FUX1ZFQzQ6cmV0dXJuIG5ldyBKRCh0LGUsaSxuKTtjYXNlIHQuU0FNUExFUl8yRDpjYXNlIHQuU0FNUExFUl9DVUJFOnJldHVybiBuZXcgWVQodCxlLGksbik7Y2FzZSB0LklOVDpjYXNlIHQuQk9PTDpyZXR1cm4gbmV3IGpEKHQsZSxpLG4pO2Nhc2UgdC5JTlRfVkVDMjpjYXNlIHQuQk9PTF9WRUMyOnJldHVybiBuZXcgSEQodCxlLGksbik7Y2FzZSB0LklOVF9WRUMzOmNhc2UgdC5CT09MX1ZFQzM6cmV0dXJuIG5ldyB2RCh0LGUsaSxuKTtjYXNlIHQuSU5UX1ZFQzQ6Y2FzZSB0LkJPT0xfVkVDNDpyZXR1cm4gbmV3IHpEKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9NQVQyOnJldHVybiBuZXcgS0QodCxlLGksbik7Y2FzZSB0LkZMT0FUX01BVDM6cmV0dXJuIG5ldyBYRCh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfTUFUNDpyZXR1cm4gbmV3IHFEKHQsZSxpLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IGtlKGBVbnJlY29nbml6ZWQgdW5pZm9ybSB0eXBlOiAke2UudHlwZX0gZm9yIHVuaWZvcm0gIiR7aX0iLmApfX1mdW5jdGlvbiB3RCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT0wLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiB4RCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgbnQsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufWZ1bmN0aW9uIFBEKHQsZSxpLG4pe3RoaXMubmFtZT1pLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW59ZnVuY3Rpb24gSkQodCxlLGksbil7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT12b2lkIDAsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiBZVCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW4sdGhpcy50ZXh0dXJlVW5pdEluZGV4PXZvaWQgMH1mdW5jdGlvbiBqRCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT0wLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiBIRCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgbnQsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufWZ1bmN0aW9uIHZEKHQsZSxpLG4pe3RoaXMubmFtZT1pLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlPW5ldyBsLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiB6RCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgaWUsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufWZ1bmN0aW9uIEtEKHQsZSxpLG4pe3RoaXMubmFtZT1pLHRoaXMudmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlPW5ldyBIbix0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW59ZnVuY3Rpb24gWEQodCxlLGksbil7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT12b2lkIDAsdGhpcy5fdmFsdWU9bmV3IGx0LHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249bn1mdW5jdGlvbiBxRCh0LGUsaSxuKXt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZT1uZXcgYXQsdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1ufXZhciBxJCwkJCx0dHQsJEQsdFU9UygoKT0+e1hlKCk7SHQoKTtPcygpO1FuKCk7bXQoKTtPdCgpO2RjKCk7ZG4oKTtiaSgpO1BzKCk7d0QucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3RoaXMudmFsdWUhPT10aGlzLl92YWx1ZSYmKHRoaXMuX3ZhbHVlPXRoaXMudmFsdWUsdGhpcy5fZ2wudW5pZm9ybTFmKHRoaXMuX2xvY2F0aW9uLHRoaXMudmFsdWUpKX07eEQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7bnQuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwobnQuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTJmKHRoaXMuX2xvY2F0aW9uLHQueCx0LnkpKX07UEQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7aWYobSh0LnJlZCkpWnQuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwodGhpcy5fdmFsdWU9WnQuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTNmKHRoaXMuX2xvY2F0aW9uLHQucmVkLHQuZ3JlZW4sdC5ibHVlKSk7ZWxzZSBpZihtKHQueCkpbC5lcXVhbHModCx0aGlzLl92YWx1ZSl8fCh0aGlzLl92YWx1ZT1sLmNsb25lKHQsdGhpcy5fdmFsdWUpLHRoaXMuX2dsLnVuaWZvcm0zZih0aGlzLl9sb2NhdGlvbix0LngsdC55LHQueikpO2Vsc2UgdGhyb3cgbmV3IFkoYEludmFsaWQgdmVjMyB2YWx1ZSBmb3IgdW5pZm9ybSAiJHt0aGlzLm5hbWV9Ii5gKX07SkQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7aWYobSh0LnJlZCkpWnQuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwodGhpcy5fdmFsdWU9WnQuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTRmKHRoaXMuX2xvY2F0aW9uLHQucmVkLHQuZ3JlZW4sdC5ibHVlLHQuYWxwaGEpKTtlbHNlIGlmKG0odC54KSlpZS5lcXVhbHModCx0aGlzLl92YWx1ZSl8fCh0aGlzLl92YWx1ZT1pZS5jbG9uZSh0LHRoaXMuX3ZhbHVlKSx0aGlzLl9nbC51bmlmb3JtNGYodGhpcy5fbG9jYXRpb24sdC54LHQueSx0LnosdC53KSk7ZWxzZSB0aHJvdyBuZXcgWShgSW52YWxpZCB2ZWM0IHZhbHVlIGZvciB1bmlmb3JtICIke3RoaXMubmFtZX0iLmApfTtZVC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fZ2w7dC5hY3RpdmVUZXh0dXJlKHQuVEVYVFVSRTArdGhpcy50ZXh0dXJlVW5pdEluZGV4KTtsZXQgZT10aGlzLnZhbHVlO3QuYmluZFRleHR1cmUoZS5fdGFyZ2V0LGUuX3RleHR1cmUpfTtZVC5wcm90b3R5cGUuX3NldFNhbXBsZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGV4dHVyZVVuaXRJbmRleD10LHRoaXMuX2dsLnVuaWZvcm0xaSh0aGlzLl9sb2NhdGlvbix0KSx0KzF9O2pELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXt0aGlzLnZhbHVlIT09dGhpcy5fdmFsdWUmJih0aGlzLl92YWx1ZT10aGlzLnZhbHVlLHRoaXMuX2dsLnVuaWZvcm0xaSh0aGlzLl9sb2NhdGlvbix0aGlzLnZhbHVlKSl9O0hELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlO250LmVxdWFscyh0LHRoaXMuX3ZhbHVlKXx8KG50LmNsb25lKHQsdGhpcy5fdmFsdWUpLHRoaXMuX2dsLnVuaWZvcm0yaSh0aGlzLl9sb2NhdGlvbix0LngsdC55KSl9O3ZELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlO2wuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwobC5jbG9uZSh0LHRoaXMuX3ZhbHVlKSx0aGlzLl9nbC51bmlmb3JtM2kodGhpcy5fbG9jYXRpb24sdC54LHQueSx0LnopKX07ekQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWU7aWUuZXF1YWxzKHQsdGhpcy5fdmFsdWUpfHwoaWUuY2xvbmUodCx0aGlzLl92YWx1ZSksdGhpcy5fZ2wudW5pZm9ybTRpKHRoaXMuX2xvY2F0aW9uLHQueCx0LnksdC56LHQudykpfTtxJD1uZXcgRmxvYXQzMkFycmF5KDQpO0tELnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtpZighSG4uZXF1YWxzQXJyYXkodGhpcy52YWx1ZSx0aGlzLl92YWx1ZSwwKSl7SG4uY2xvbmUodGhpcy52YWx1ZSx0aGlzLl92YWx1ZSk7bGV0IHQ9SG4udG9BcnJheSh0aGlzLnZhbHVlLHEkKTt0aGlzLl9nbC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuX2xvY2F0aW9uLCExLHQpfX07JCQ9bmV3IEZsb2F0MzJBcnJheSg5KTtYRC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7aWYoIWx0LmVxdWFsc0FycmF5KHRoaXMudmFsdWUsdGhpcy5fdmFsdWUsMCkpe2x0LmNsb25lKHRoaXMudmFsdWUsdGhpcy5fdmFsdWUpO2xldCB0PWx0LnRvQXJyYXkodGhpcy52YWx1ZSwkJCk7dGhpcy5fZ2wudW5pZm9ybU1hdHJpeDNmdih0aGlzLl9sb2NhdGlvbiwhMSx0KX19O3R0dD1uZXcgRmxvYXQzMkFycmF5KDE2KTtxRC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7aWYoIWF0LmVxdWFsc0FycmF5KHRoaXMudmFsdWUsdGhpcy5fdmFsdWUsMCkpe2F0LmNsb25lKHRoaXMudmFsdWUsdGhpcy5fdmFsdWUpO2xldCB0PWF0LnRvQXJyYXkodGhpcy52YWx1ZSx0dHQpO3RoaXMuX2dsLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5fbG9jYXRpb24sITEsdCl9fTskRD1YJH0pO2Z1bmN0aW9uIGV0dCh0LGUsaSxuKXtzd2l0Y2goZS50eXBlKXtjYXNlIHQuRkxPQVQ6cmV0dXJuIG5ldyBlVSh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfVkVDMjpyZXR1cm4gbmV3IGlVKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9WRUMzOnJldHVybiBuZXcgblUodCxlLGksbik7Y2FzZSB0LkZMT0FUX1ZFQzQ6cmV0dXJuIG5ldyBzVSh0LGUsaSxuKTtjYXNlIHQuU0FNUExFUl8yRDpjYXNlIHQuU0FNUExFUl9DVUJFOnJldHVybiBuZXcgVlQodCxlLGksbik7Y2FzZSB0LklOVDpjYXNlIHQuQk9PTDpyZXR1cm4gbmV3IG9VKHQsZSxpLG4pO2Nhc2UgdC5JTlRfVkVDMjpjYXNlIHQuQk9PTF9WRUMyOnJldHVybiBuZXcgclUodCxlLGksbik7Y2FzZSB0LklOVF9WRUMzOmNhc2UgdC5CT09MX1ZFQzM6cmV0dXJuIG5ldyBhVSh0LGUsaSxuKTtjYXNlIHQuSU5UX1ZFQzQ6Y2FzZSB0LkJPT0xfVkVDNDpyZXR1cm4gbmV3IEFVKHQsZSxpLG4pO2Nhc2UgdC5GTE9BVF9NQVQyOnJldHVybiBuZXcgaFUodCxlLGksbik7Y2FzZSB0LkZMT0FUX01BVDM6cmV0dXJuIG5ldyBjVSh0LGUsaSxuKTtjYXNlIHQuRkxPQVRfTUFUNDpyZXR1cm4gbmV3IGxVKHQsZSxpLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IGtlKGBVbnJlY29nbml6ZWQgdW5pZm9ybSB0eXBlOiAke2UudHlwZX0gZm9yIHVuaWZvcm0gIiR7aX0iLmApfX1mdW5jdGlvbiBlVSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249blswXX1mdW5jdGlvbiBpVSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMqMiksdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1uWzBdfWZ1bmN0aW9uIG5VKHQsZSxpLG4pe2xldCBzPW4ubGVuZ3RoO3RoaXMubmFtZT1pLHRoaXMudmFsdWU9bmV3IEFycmF5KHMpLHRoaXMuX3ZhbHVlPW5ldyBGbG9hdDMyQXJyYXkocyozKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gc1UodCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEZsb2F0MzJBcnJheShzKjQpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249blswXX1mdW5jdGlvbiBWVCh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb25zPW4sdGhpcy50ZXh0dXJlVW5pdEluZGV4PXZvaWQgMH1mdW5jdGlvbiBvVSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgSW50MzJBcnJheShzKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gclUodCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEludDMyQXJyYXkocyoyKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gYVUodCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEludDMyQXJyYXkocyozKSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gQVUodCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEludDMyQXJyYXkocyo0KSx0aGlzLl9nbD10LHRoaXMuX2xvY2F0aW9uPW5bMF19ZnVuY3Rpb24gaFUodCxlLGksbil7bGV0IHM9bi5sZW5ndGg7dGhpcy5uYW1lPWksdGhpcy52YWx1ZT1uZXcgQXJyYXkocyksdGhpcy5fdmFsdWU9bmV3IEZsb2F0MzJBcnJheShzKjQpLHRoaXMuX2dsPXQsdGhpcy5fbG9jYXRpb249blswXX1mdW5jdGlvbiBjVSh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aDt0aGlzLm5hbWU9aSx0aGlzLnZhbHVlPW5ldyBBcnJheShzKSx0aGlzLl92YWx1ZT1uZXcgRmxvYXQzMkFycmF5KHMqOSksdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1uWzBdfWZ1bmN0aW9uIGxVKHQsZSxpLG4pe2xldCBzPW4ubGVuZ3RoO3RoaXMubmFtZT1pLHRoaXMudmFsdWU9bmV3IEFycmF5KHMpLHRoaXMuX3ZhbHVlPW5ldyBGbG9hdDMyQXJyYXkocyoxNiksdGhpcy5fZ2w9dCx0aGlzLl9sb2NhdGlvbj1uWzBdfXZhciBkVSxtVT1TKCgpPT57WGUoKTtIdCgpO09zKCk7UW4oKTttdCgpO090KCk7ZGMoKTtkbigpO2JpKCk7UHMoKTtlVS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy52YWx1ZSxlPXQubGVuZ3RoLGk9dGhpcy5fdmFsdWUsbj0hMTtmb3IobGV0IHM9MDtzPGU7KytzKXtsZXQgbz10W3NdO28hPT1pW3NdJiYoaVtzXT1vLG49ITApfW4mJnRoaXMuX2dsLnVuaWZvcm0xZnYodGhpcy5fbG9jYXRpb24saSl9O2lVLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO250LmVxdWFsc0FycmF5KHIsaSxzKXx8KG50LnBhY2socixpLHMpLG49ITApLHMrPTJ9biYmdGhpcy5fZ2wudW5pZm9ybTJmdih0aGlzLl9sb2NhdGlvbixpKX07blUucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITEscz0wO2ZvcihsZXQgbz0wO288ZTsrK28pe2xldCByPXRbb107aWYobShyLnJlZCkpKHIucmVkIT09aVtzXXx8ci5ncmVlbiE9PWlbcysxXXx8ci5ibHVlIT09aVtzKzJdKSYmKGlbc109ci5yZWQsaVtzKzFdPXIuZ3JlZW4saVtzKzJdPXIuYmx1ZSxuPSEwKTtlbHNlIGlmKG0oci54KSlsLmVxdWFsc0FycmF5KHIsaSxzKXx8KGwucGFjayhyLGkscyksbj0hMCk7ZWxzZSB0aHJvdyBuZXcgWSgiSW52YWxpZCB2ZWMzIHZhbHVlLiIpO3MrPTN9biYmdGhpcy5fZ2wudW5pZm9ybTNmdih0aGlzLl9sb2NhdGlvbixpKX07c1UucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITEscz0wO2ZvcihsZXQgbz0wO288ZTsrK28pe2xldCByPXRbb107aWYobShyLnJlZCkpWnQuZXF1YWxzQXJyYXkocixpLHMpfHwoWnQucGFjayhyLGkscyksbj0hMCk7ZWxzZSBpZihtKHIueCkpaWUuZXF1YWxzQXJyYXkocixpLHMpfHwoaWUucGFjayhyLGkscyksbj0hMCk7ZWxzZSB0aHJvdyBuZXcgWSgiSW52YWxpZCB2ZWM0IHZhbHVlLiIpO3MrPTR9biYmdGhpcy5fZ2wudW5pZm9ybTRmdih0aGlzLl9sb2NhdGlvbixpKX07VlQucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsLGU9dC5URVhUVVJFMCt0aGlzLnRleHR1cmVVbml0SW5kZXgsaT10aGlzLnZhbHVlLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuOysrcyl7bGV0IG89aVtzXTt0LmFjdGl2ZVRleHR1cmUoZStzKSx0LmJpbmRUZXh0dXJlKG8uX3RhcmdldCxvLl90ZXh0dXJlKX19O1ZULnByb3RvdHlwZS5fc2V0U2FtcGxlcj1mdW5jdGlvbih0KXt0aGlzLnRleHR1cmVVbml0SW5kZXg9dDtsZXQgZT10aGlzLl9sb2NhdGlvbnMsaT1lLmxlbmd0aDtmb3IobGV0IG49MDtuPGk7KytuKXtsZXQgcz10K247dGhpcy5fZ2wudW5pZm9ybTFpKGVbbl0scyl9cmV0dXJuIHQraX07b1UucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITE7Zm9yKGxldCBzPTA7czxlOysrcyl7bGV0IG89dFtzXTtvIT09aVtzXSYmKGlbc109byxuPSEwKX1uJiZ0aGlzLl9nbC51bmlmb3JtMWl2KHRoaXMuX2xvY2F0aW9uLGkpfTtyVS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy52YWx1ZSxlPXQubGVuZ3RoLGk9dGhpcy5fdmFsdWUsbj0hMSxzPTA7Zm9yKGxldCBvPTA7bzxlOysrbyl7bGV0IHI9dFtvXTtudC5lcXVhbHNBcnJheShyLGkscyl8fChudC5wYWNrKHIsaSxzKSxuPSEwKSxzKz0yfW4mJnRoaXMuX2dsLnVuaWZvcm0yaXYodGhpcy5fbG9jYXRpb24saSl9O2FVLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO2wuZXF1YWxzQXJyYXkocixpLHMpfHwobC5wYWNrKHIsaSxzKSxuPSEwKSxzKz0zfW4mJnRoaXMuX2dsLnVuaWZvcm0zaXYodGhpcy5fbG9jYXRpb24saSl9O0FVLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO2llLmVxdWFsc0FycmF5KHIsaSxzKXx8KGllLnBhY2socixpLHMpLG49ITApLHMrPTR9biYmdGhpcy5fZ2wudW5pZm9ybTRpdih0aGlzLl9sb2NhdGlvbixpKX07aFUucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe2xldCB0PXRoaXMudmFsdWUsZT10Lmxlbmd0aCxpPXRoaXMuX3ZhbHVlLG49ITEscz0wO2ZvcihsZXQgbz0wO288ZTsrK28pe2xldCByPXRbb107SG4uZXF1YWxzQXJyYXkocixpLHMpfHwoSG4ucGFjayhyLGkscyksbj0hMCkscys9NH1uJiZ0aGlzLl9nbC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuX2xvY2F0aW9uLCExLGkpfTtjVS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy52YWx1ZSxlPXQubGVuZ3RoLGk9dGhpcy5fdmFsdWUsbj0hMSxzPTA7Zm9yKGxldCBvPTA7bzxlOysrbyl7bGV0IHI9dFtvXTtsdC5lcXVhbHNBcnJheShyLGkscyl8fChsdC5wYWNrKHIsaSxzKSxuPSEwKSxzKz05fW4mJnRoaXMuX2dsLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5fbG9jYXRpb24sITEsaSl9O2xVLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLnZhbHVlLGU9dC5sZW5ndGgsaT10aGlzLl92YWx1ZSxuPSExLHM9MDtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO2F0LmVxdWFsc0FycmF5KHIsaSxzKXx8KGF0LnBhY2socixpLHMpLG49ITApLHMrPTE2fW4mJnRoaXMuX2dsLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5fbG9jYXRpb24sITEsaSl9O2RVPWV0dH0pO2Z1bmN0aW9uIGFoKHQpe2xldCBlPXQudmVydGV4U2hhZGVyVGV4dCxpPXQuZnJhZ21lbnRTaGFkZXJUZXh0O3R5cGVvZiBzcGVjdG9yPCJ1IiYmKGU9ZS5yZXBsYWNlKC9eI2xpbmUvZ20sIi8vI2xpbmUiKSxpPWkucmVwbGFjZSgvXiNsaW5lL2dtLCIvLyNsaW5lIikpO2xldCBuPW50dChlLGkpO3RoaXMuX2dsPXQuZ2wsdGhpcy5fbG9nU2hhZGVyQ29tcGlsYXRpb249dC5sb2dTaGFkZXJDb21waWxhdGlvbix0aGlzLl9kZWJ1Z1NoYWRlcnM9dC5kZWJ1Z1NoYWRlcnMsdGhpcy5fYXR0cmlidXRlTG9jYXRpb25zPXQuYXR0cmlidXRlTG9jYXRpb25zLHRoaXMuX3Byb2dyYW09dm9pZCAwLHRoaXMuX251bWJlck9mVmVydGV4QXR0cmlidXRlcz12b2lkIDAsdGhpcy5fdmVydGV4QXR0cmlidXRlcz12b2lkIDAsdGhpcy5fdW5pZm9ybXNCeU5hbWU9dm9pZCAwLHRoaXMuX3VuaWZvcm1zPXZvaWQgMCx0aGlzLl9hdXRvbWF0aWNVbmlmb3Jtcz12b2lkIDAsdGhpcy5fbWFudWFsVW5pZm9ybXM9dm9pZCAwLHRoaXMuX2R1cGxpY2F0ZVVuaWZvcm1OYW1lcz1uLmR1cGxpY2F0ZVVuaWZvcm1OYW1lcyx0aGlzLl9jYWNoZWRTaGFkZXI9dm9pZCAwLHRoaXMubWF4aW11bVRleHR1cmVVbml0SW5kZXg9dm9pZCAwLHRoaXMuX3ZlcnRleFNoYWRlclNvdXJjZT10LnZlcnRleFNoYWRlclNvdXJjZSx0aGlzLl92ZXJ0ZXhTaGFkZXJUZXh0PXQudmVydGV4U2hhZGVyVGV4dCx0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZT10LmZyYWdtZW50U2hhZGVyU291cmNlLHRoaXMuX2ZyYWdtZW50U2hhZGVyVGV4dD1uLmZyYWdtZW50U2hhZGVyVGV4dCx0aGlzLmlkPWl0dCsrfWZ1bmN0aW9uIGZVKHQpe2xldCBlPVtdLGk9dC5tYXRjaCgvdW5pZm9ybS4qPyg/IVtee10qfSkoPz1bPVxbO10pL2cpO2lmKG0oaSkpe2xldCBuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjtzKyspe2xldCBvPWlbc10udHJpbSgpLHI9by5zbGljZShvLmxhc3RJbmRleE9mKCIgIikrMSk7ZS5wdXNoKHIpfX1yZXR1cm4gZX1mdW5jdGlvbiBudHQodCxlKXtsZXQgaT17fTtpZighZW4uaGlnaHBGbG9hdFN1cHBvcnRlZHx8IWVuLmhpZ2hwSW50U3VwcG9ydGVkKXtsZXQgbixzLG8scixhPWZVKHQpLGg9ZlUoZSksQT1hLmxlbmd0aCxkPWgubGVuZ3RoO2ZvcihuPTA7bjxBO24rKylmb3Iocz0wO3M8ZDtzKyspaWYoYVtuXT09PWhbc10pe289YVtuXSxyPWBjem1fbWVkaXVtcF8ke299YDtsZXQgZj1uZXcgUmVnRXhwKGAke299XFxiYCwiZyIpO2U9ZS5yZXBsYWNlKGYsciksaVtyXT1vfX1yZXR1cm57ZnJhZ21lbnRTaGFkZXJUZXh0OmUsZHVwbGljYXRlVW5pZm9ybU5hbWVzOml9fWZ1bmN0aW9uIHN0dCh0LGUpe2xldCBpPWUuX3ZlcnRleFNoYWRlclRleHQsbj1lLl9mcmFnbWVudFNoYWRlclRleHQscz10LmNyZWF0ZVNoYWRlcih0LlZFUlRFWF9TSEFERVIpO3Quc2hhZGVyU291cmNlKHMsaSksdC5jb21waWxlU2hhZGVyKHMpO2xldCBvPXQuY3JlYXRlU2hhZGVyKHQuRlJBR01FTlRfU0hBREVSKTt0LnNoYWRlclNvdXJjZShvLG4pLHQuY29tcGlsZVNoYWRlcihvKTtsZXQgcj10LmNyZWF0ZVByb2dyYW0oKTt0LmF0dGFjaFNoYWRlcihyLHMpLHQuYXR0YWNoU2hhZGVyKHIsbyk7bGV0IGE9ZS5fYXR0cmlidXRlTG9jYXRpb25zO2lmKG0oYSkpZm9yKGxldCBFIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShFKSYmdC5iaW5kQXR0cmliTG9jYXRpb24ocixhW0VdLEUpO3QubGlua1Byb2dyYW0ocik7bGV0IGg7aWYodC5nZXRQcm9ncmFtUGFyYW1ldGVyKHIsdC5MSU5LX1NUQVRVUykpcmV0dXJuIGUuX2xvZ1NoYWRlckNvbXBpbGF0aW9uJiYoaD10LmdldFNoYWRlckluZm9Mb2cocyksbShoKSYmaC5sZW5ndGg+MCYmY29uc29sZS5sb2coYCR7UkF9VmVydGV4IHNoYWRlciBjb21waWxlIGxvZzogJHtofWApLGg9dC5nZXRTaGFkZXJJbmZvTG9nKG8pLG0oaCkmJmgubGVuZ3RoPjAmJmNvbnNvbGUubG9nKGAke1JBfUZyYWdtZW50IHNoYWRlciBjb21waWxlIGxvZzogJHtofWApLGg9dC5nZXRQcm9ncmFtSW5mb0xvZyhyKSxtKGgpJiZoLmxlbmd0aD4wJiZjb25zb2xlLmxvZyhgJHtSQX1TaGFkZXIgcHJvZ3JhbSBsaW5rIGxvZzogJHtofWApKSx0LmRlbGV0ZVNoYWRlcihzKSx0LmRlbGV0ZVNoYWRlcihvKSxyO2xldCBBLGQ9ZS5fZGVidWdTaGFkZXJzO3Rocm93IHQuZ2V0U2hhZGVyUGFyYW1ldGVyKG8sdC5DT01QSUxFX1NUQVRVUyk/dC5nZXRTaGFkZXJQYXJhbWV0ZXIocyx0LkNPTVBJTEVfU1RBVFVTKT8oaD10LmdldFByb2dyYW1JbmZvTG9nKHIpLGNvbnNvbGUuZXJyb3IoYCR7UkF9U2hhZGVyIHByb2dyYW0gbGluayBsb2c6ICR7aH1gKSxmKHMsInZlcnRleCIpLGYobywiZnJhZ21lbnQiKSxBPWBQcm9ncmFtIGZhaWxlZCB0byBsaW5rLiAgTGluayBsb2c6ICR7aH1gKTooaD10LmdldFNoYWRlckluZm9Mb2cocyksY29uc29sZS5lcnJvcihgJHtSQX1WZXJ0ZXggc2hhZGVyIGNvbXBpbGUgbG9nOiAke2h9YCksY29uc29sZS5lcnJvcihgJHtSQX0gVmVydGV4IHNoYWRlciBzb3VyY2U6CiR7aX1gKSxBPWBWZXJ0ZXggc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiAgQ29tcGlsZSBsb2c6ICR7aH1gKTooaD10LmdldFNoYWRlckluZm9Mb2cobyksY29uc29sZS5lcnJvcihgJHtSQX1GcmFnbWVudCBzaGFkZXIgY29tcGlsZSBsb2c6ICR7aH1gKSxjb25zb2xlLmVycm9yKGAke1JBfSBGcmFnbWVudCBzaGFkZXIgc291cmNlOgoke259YCksQT1gRnJhZ21lbnQgc2hhZGVyIGZhaWxlZCB0byBjb21waWxlLiAgQ29tcGlsZSBsb2c6ICR7aH1gKSx0LmRlbGV0ZVNoYWRlcihzKSx0LmRlbGV0ZVNoYWRlcihvKSx0LmRlbGV0ZVByb2dyYW0ociksbmV3IGtlKEEpO2Z1bmN0aW9uIGYoRSxfKXtpZighbShkKSlyZXR1cm47bGV0IFI9ZC5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKEUpO2lmKFI9PT0iIil7Y29uc29sZS5lcnJvcihgJHtSQX0ke199IHNoYWRlciB0cmFuc2xhdGlvbiBmYWlsZWQuYCk7cmV0dXJufWNvbnNvbGUuZXJyb3IoYCR7UkF9VHJhbnNsYXRlZCAke199IHNoYWRlclNvdXJjZToKJHtSfWApfX1mdW5jdGlvbiBvdHQodCxlLGkpe2xldCBuPXt9O2ZvcihsZXQgcz0wO3M8aTsrK3Mpe2xldCBvPXQuZ2V0QWN0aXZlQXR0cmliKGUscykscj10LmdldEF0dHJpYkxvY2F0aW9uKGUsby5uYW1lKTtuW28ubmFtZV09e25hbWU6by5uYW1lLHR5cGU6by50eXBlLGluZGV4OnJ9fXJldHVybiBufWZ1bmN0aW9uIHJ0dCh0LGUpe2xldCBpPXt9LG49W10scz1bXSxvPXQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihlLHQuQUNUSVZFX1VOSUZPUk1TKTtmb3IobGV0IHI9MDtyPG87KytyKXtsZXQgYT10LmdldEFjdGl2ZVVuaWZvcm0oZSxyKSxoPSJbMF0iLEE9YS5uYW1lLmluZGV4T2YoaCxhLm5hbWUubGVuZ3RoLWgubGVuZ3RoKSE9PS0xP2EubmFtZS5zbGljZSgwLGEubmFtZS5sZW5ndGgtMyk6YS5uYW1lO2lmKEEuaW5kZXhPZigiZ2xfIikhPT0wKWlmKGEubmFtZS5pbmRleE9mKCJbIik8MCl7bGV0IGQ9dC5nZXRVbmlmb3JtTG9jYXRpb24oZSxBKTtpZihkIT09bnVsbCl7bGV0IGY9JEQodCxhLEEsZCk7aVtBXT1mLG4ucHVzaChmKSxmLl9zZXRTYW1wbGVyJiZzLnB1c2goZil9fWVsc2V7bGV0IGQsZixFLF8sUj1BLmluZGV4T2YoIlsiKTtpZihSPj0wKXtpZihkPWlbQS5zbGljZSgwLFIpXSwhbShkKSljb250aW51ZTtmPWQuX2xvY2F0aW9ucyxmLmxlbmd0aDw9MSYmKEU9ZC52YWx1ZSxfPXQuZ2V0VW5pZm9ybUxvY2F0aW9uKGUsQSksXyE9PW51bGwmJihmLnB1c2goXyksRS5wdXNoKHQuZ2V0VW5pZm9ybShlLF8pKSkpfWVsc2V7Zj1bXTtmb3IobGV0IEk9MDtJPGEuc2l6ZTsrK0kpXz10LmdldFVuaWZvcm1Mb2NhdGlvbihlLGAke0F9WyR7SX1dYCksXyE9PW51bGwmJmYucHVzaChfKTtkPWRVKHQsYSxBLGYpLGlbQV09ZCxuLnB1c2goZCksZC5fc2V0U2FtcGxlciYmcy5wdXNoKGQpfX19cmV0dXJue3VuaWZvcm1zQnlOYW1lOmksdW5pZm9ybXM6bixzYW1wbGVyVW5pZm9ybXM6c319ZnVuY3Rpb24gYXR0KHQsZSl7bGV0IGk9W10sbj1bXTtmb3IobGV0IHMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHMpKXtsZXQgbz1lW3NdLHI9cyxhPXQuX2R1cGxpY2F0ZVVuaWZvcm1OYW1lc1tyXTttKGEpJiYoby5uYW1lPWEscj1hKTtsZXQgaD1NbVtyXTttKGgpP2kucHVzaCh7dW5pZm9ybTpvLGF1dG9tYXRpY1VuaWZvcm06aH0pOm4ucHVzaChvKX1yZXR1cm57YXV0b21hdGljVW5pZm9ybXM6aSxtYW51YWxVbmlmb3JtczpufX1mdW5jdGlvbiBBdHQodCxlLGkpe3QudXNlUHJvZ3JhbShlKTtsZXQgbj0wLHM9aS5sZW5ndGg7Zm9yKGxldCBvPTA7bzxzOysrbyluPWlbb10uX3NldFNhbXBsZXIobik7cmV0dXJuIHQudXNlUHJvZ3JhbShudWxsKSxufWZ1bmN0aW9uIGNJKHQpe20odC5fcHJvZ3JhbSl8fEVVKHQpfWZ1bmN0aW9uIEVVKHQpe2xldCBlPXQuX3Byb2dyYW0saT10Ll9nbCxuPXN0dChpLHQsdC5fZGVidWdTaGFkZXJzKSxzPWkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLGkuQUNUSVZFX0FUVFJJQlVURVMpLG89cnR0KGksbikscj1hdHQodCxvLnVuaWZvcm1zQnlOYW1lKTt0Ll9wcm9ncmFtPW4sdC5fbnVtYmVyT2ZWZXJ0ZXhBdHRyaWJ1dGVzPXMsdC5fdmVydGV4QXR0cmlidXRlcz1vdHQoaSxuLHMpLHQuX3VuaWZvcm1zQnlOYW1lPW8udW5pZm9ybXNCeU5hbWUsdC5fdW5pZm9ybXM9by51bmlmb3Jtcyx0Ll9hdXRvbWF0aWNVbmlmb3Jtcz1yLmF1dG9tYXRpY1VuaWZvcm1zLHQuX21hbnVhbFVuaWZvcm1zPXIubWFudWFsVW5pZm9ybXMsdC5tYXhpbXVtVGV4dHVyZVVuaXRJbmRleD1BdHQoaSxuLG8uc2FtcGxlclVuaWZvcm1zKSxlJiZ0Ll9nbC5kZWxldGVQcm9ncmFtKGUpLHR5cGVvZiBzcGVjdG9yPCJ1IiYmKHQuX3Byb2dyYW0uX19TUEVDVE9SX3JlYnVpbGRQcm9ncmFtPWZ1bmN0aW9uKGEsaCxBLGQpe2xldCBmPXQuX3ZlcnRleFNoYWRlclRleHQsRT10Ll9mcmFnbWVudFNoYWRlclRleHQsXz0vICEgPSAvZzt0Ll92ZXJ0ZXhTaGFkZXJUZXh0PWEucmVwbGFjZShfLCIgIT0gIiksdC5fZnJhZ21lbnRTaGFkZXJUZXh0PWgucmVwbGFjZShfLCIgIT0gIik7dHJ5e0VVKHQpLEEodC5fcHJvZ3JhbSl9Y2F0Y2goUil7dC5fdmVydGV4U2hhZGVyVGV4dD1mLHQuX2ZyYWdtZW50U2hhZGVyVGV4dD1FO2xldCBDPS8oPzpDb21waWxlfExpbmspIGVycm9yOiAoW15dKikvLmV4ZWMoUi5tZXNzYWdlKTtkKEM/Q1sxXTpSLm1lc3NhZ2UpfX0pfXZhciBpdHQsUkEsRXMsUW09UygoKT0+e2FlKCk7RnQoKTttdCgpO1dzKCk7T3QoKTtQcygpO2JUKCk7Z2EoKTt0VSgpO21VKCk7aXR0PTA7YWguZnJvbUNhY2hlPWZ1bmN0aW9uKHQpe3JldHVybiB0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCksdC5jb250ZXh0LnNoYWRlckNhY2hlLmdldFNoYWRlclByb2dyYW0odCl9O2FoLnJlcGxhY2VDYWNoZT1mdW5jdGlvbih0KXtyZXR1cm4gdD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpLHQuY29udGV4dC5zaGFkZXJDYWNoZS5yZXBsYWNlU2hhZGVyUHJvZ3JhbSh0KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYWgucHJvdG90eXBlLHt2ZXJ0ZXhTaGFkZXJTb3VyY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2V9fSxmcmFnbWVudFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYWdtZW50U2hhZGVyU291cmNlfX0sdmVydGV4QXR0cmlidXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNJKHRoaXMpLHRoaXMuX3ZlcnRleEF0dHJpYnV0ZXN9fSxudW1iZXJPZlZlcnRleEF0dHJpYnV0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjSSh0aGlzKSx0aGlzLl9udW1iZXJPZlZlcnRleEF0dHJpYnV0ZXN9fSxhbGxVbmlmb3Jtczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNJKHRoaXMpLHRoaXMuX3VuaWZvcm1zQnlOYW1lfX19KTtSQT0iW0Nlc2l1bSBXZWJHTF0gIjthaC5wcm90b3R5cGUuX2JpbmQ9ZnVuY3Rpb24oKXtjSSh0aGlzKSx0aGlzLl9nbC51c2VQcm9ncmFtKHRoaXMuX3Byb2dyYW0pfTthaC5wcm90b3R5cGUuX3NldFVuaWZvcm1zPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbixzO2lmKG0odCkpe2xldCBhPXRoaXMuX21hbnVhbFVuaWZvcm1zO2ZvcihuPWEubGVuZ3RoLHM9MDtzPG47KytzKXtsZXQgaD1hW3NdO2gudmFsdWU9dFtoLm5hbWVdKCl9fWxldCBvPXRoaXMuX2F1dG9tYXRpY1VuaWZvcm1zO2ZvcihuPW8ubGVuZ3RoLHM9MDtzPG47KytzKXtsZXQgYT1vW3NdO2EudW5pZm9ybS52YWx1ZT1hLmF1dG9tYXRpY1VuaWZvcm0uZ2V0VmFsdWUoZSl9bGV0IHI9dGhpcy5fdW5pZm9ybXM7Zm9yKG49ci5sZW5ndGgscz0wO3M8bjsrK3MpcltzXS5zZXQoKTtpZihpKXtsZXQgYT10aGlzLl9nbCxoPXRoaXMuX3Byb2dyYW07aWYoYS52YWxpZGF0ZVByb2dyYW0oaCksIWEuZ2V0UHJvZ3JhbVBhcmFtZXRlcihoLGEuVkFMSURBVEVfU1RBVFVTKSl0aHJvdyBuZXcgWShgUHJvZ3JhbSB2YWxpZGF0aW9uIGZhaWxlZC4gIFByb2dyYW0gaW5mbyBsb2c6ICR7YS5nZXRQcm9ncmFtSW5mb0xvZyhoKX1gKX19O2FoLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTthaC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2NhY2hlZFNoYWRlci5jYWNoZS5yZWxlYXNlU2hhZGVyUHJvZ3JhbSh0aGlzKX07YWgucHJvdG90eXBlLmZpbmFsRGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nbC5kZWxldGVQcm9ncmFtKHRoaXMuX3Byb2dyYW0pLGxpKHRoaXMpfTtFcz1haH0pO3ZhciBfVSxSVT1TKCgpPT57X1U9YC8qKgogKiBBIGJ1aWx0LWluIEdMU0wgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQgZm9yIGNvbnZlcnRpbmcgcmFkaWFucyB0byBkZWdyZWVzLgogKgogKiBAYWxpYXMgY3ptX2RlZ3JlZXNQZXJSYWRpYW4KICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguREVHUkVFU19QRVJfUkFESUFOCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX2RlZ3JlZXNQZXJSYWRpYW4gPSAuLi47CiAqCiAqIC8vIEV4YW1wbGUKICogZmxvYXQgZGVnID0gY3ptX2RlZ3JlZXNQZXJSYWRpYW4gKiByYWQ7CiAqLwpjb25zdCBmbG9hdCBjem1fZGVncmVlc1BlclJhZGlhbiA9IDU3LjI5NTc3OTUxMzA4MjMyOwpgfSk7dmFyIFpVLElVPVMoKCk9PntaVT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCB2ZWMyIGNvbnN0YW50IGZvciBkZWZpbmluZyB0aGUgZGVwdGggcmFuZ2UuCiAqIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHRvIGEgYnVnIHdoZXJlIElFMTEgZG9lcyBub3QgaW1wbGVtZW50IGdsX0RlcHRoUmFuZ2UuCiAqCiAqIEBhbGlhcyBjem1fZGVwdGhSYW5nZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogZmxvYXQgZGVwdGhSYW5nZU5lYXIgPSBjem1fZGVwdGhSYW5nZS5uZWFyOwogKiBmbG9hdCBkZXB0aFJhbmdlRmFyID0gY3ptX2RlcHRoUmFuZ2UuZmFyOwogKgogKi8KY29uc3QgY3ptX2RlcHRoUmFuZ2VTdHJ1Y3QgY3ptX2RlcHRoUmFuZ2UgPSBjem1fZGVwdGhSYW5nZVN0cnVjdCgwLjAsIDEuMCk7CmB9KTt2YXIgcFUsdVU9UygoKT0+e3BVPWAvKioKICogMC4xCiAqCiAqIEBuYW1lIGN6bV9lcHNpbG9uMQogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fZXBzaWxvbjEgPSAwLjE7CmB9KTt2YXIgQ1UsZ1U9UygoKT0+e0NVPWAvKioKICogMC4wMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjIKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb24yID0gMC4wMTsKYH0pO3ZhciBUVSxOVT1TKCgpPT57VFU9YC8qKgogKiAwLjAwMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjMKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb24zID0gMC4wMDE7CmB9KTt2YXIgRlUsYlU9UygoKT0+e0ZVPWAvKioKICogMC4wMDAxCiAqCiAqIEBuYW1lIGN6bV9lcHNpbG9uNAogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fZXBzaWxvbjQgPSAwLjAwMDE7CmB9KTt2YXIgWVUsVlU9UygoKT0+e1lVPWAvKioKICogMC4wMDAwMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjUKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb241ID0gMC4wMDAwMTsKYH0pO3ZhciBTVSxPVT1TKCgpPT57U1U9YC8qKgogKiAwLjAwMDAwMQogKgogKiBAbmFtZSBjem1fZXBzaWxvbjYKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2Vwc2lsb242ID0gMC4wMDAwMDE7CmB9KTt2YXIgQlUsR1U9UygoKT0+e0JVPWAvKioKICogMC4wMDAwMDAxCiAqCiAqIEBuYW1lIGN6bV9lcHNpbG9uNwogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fZXBzaWxvbjcgPSAwLjAwMDAwMDE7CmB9KTt2YXIgV1UsRFU9UygoKT0+e1dVPWAvKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1faW5maW5pdHkKICogQGdsc2xDb25zdGFudAogKi8KY29uc3QgZmxvYXQgY3ptX2luZmluaXR5ID0gNTkwNjM3NjI3MjAwMC4wOyAgLy8gRGlzdGFuY2UgZnJvbSB0aGUgU3VuIHRvIFBsdXRvIGluIG1ldGVycy4gIFRPRE86IFdoYXQgaXMgYmVzdCBnaXZlbiBsb3dwLCBtZWRpdW1wLCBhbmQgaGlnaHA/CmB9KTt2YXIgVVUsTVU9UygoKT0+e1VVPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT4xL3BpPC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9vbmVPdmVyUGkKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguT05FX09WRVJfUEkKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fb25lT3ZlclBpID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gMS4wIC8gY3ptX29uZU92ZXJQaTsKICovCmNvbnN0IGZsb2F0IGN6bV9vbmVPdmVyUGkgPSAwLjMxODMwOTg4NjE4Mzc5MDc7CmB9KTt2YXIgUVUsa1U9UygoKT0+e1FVPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT4xLzJwaTwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fb25lT3ZlclR3b1BpCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBDZXNpdW1NYXRoLk9ORV9PVkVSX1RXT19QSQogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV9vbmVPdmVyVHdvUGkgPSAuLi47CiAqCiAqIC8vIEV4YW1wbGUKICogZmxvYXQgcGkgPSAyLjAgKiBjem1fb25lT3ZlclR3b1BpOwogKi8KY29uc3QgZmxvYXQgY3ptX29uZU92ZXJUd29QaSA9IDAuMTU5MTU0OTQzMDkxODk1MzU7CmB9KTt2YXIgTFUseVU9UygoKT0+e0xVPWAvKioKICogVGhlIGF1dG9tYXRpYyBHTFNMIGNvbnN0YW50IGZvciB7QGxpbmsgUGFzcyNDRVNJVU1fM0RfVElMRX0KICoKICogQG5hbWUgY3ptX3Bhc3NDZXNpdW0zRFRpbGUKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0Nlc2l1bTNEVGlsZSA9IDQuMDsKYH0pO3ZhciB3VSx4VT1TKCgpPT57d1U9YC8qKgogKiBUaGUgYXV0b21hdGljIEdMU0wgY29uc3RhbnQgZm9yIHtAbGluayBQYXNzI0NFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OfQogKgogKiBAbmFtZSBjem1fcGFzc0Nlc2l1bTNEVGlsZUNsYXNzaWZpY2F0aW9uCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NDZXNpdW0zRFRpbGVDbGFzc2lmaWNhdGlvbiA9IDUuMDsKYH0pO3ZhciBQVSxKVT1TKCgpPT57UFU9YC8qKgogKiBUaGUgYXV0b21hdGljIEdMU0wgY29uc3RhbnQgZm9yIHtAbGluayBQYXNzI0NFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OX0lHTk9SRV9TSE9XfQogKgogKiBAbmFtZSBjem1fcGFzc0Nlc2l1bTNEVGlsZUNsYXNzaWZpY2F0aW9uSWdub3JlU2hvdwogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgY3ptX3Bhc3MKICovCmNvbnN0IGZsb2F0IGN6bV9wYXNzQ2VzaXVtM0RUaWxlQ2xhc3NpZmljYXRpb25JZ25vcmVTaG93ID0gNi4wOwpgfSk7dmFyIGpVLEhVPVMoKCk9PntqVT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjQ0xBU1NJRklDQVRJT059CiAqCiAqIEBuYW1lIGN6bV9wYXNzQ2xhc3NpZmljYXRpb24KICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0NsYXNzaWZpY2F0aW9uID0gNy4wOwpgfSk7dmFyIHZVLHpVPVMoKCk9Pnt2VT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjQ09NUFVURX0KICoKICogQG5hbWUgY3ptX3Bhc3NDb21wdXRlCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NDb21wdXRlID0gMS4wOwpgfSk7dmFyIEtVLFhVPVMoKCk9PntLVT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjRU5WSVJPTk1FTlR9CiAqCiAqIEBuYW1lIGN6bV9wYXNzRW52aXJvbm1lbnQKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0Vudmlyb25tZW50ID0gMC4wOwpgfSk7dmFyIHFVLCRVPVMoKCk9PntxVT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjR0xPQkV9CiAqCiAqIEBuYW1lIGN6bV9wYXNzR2xvYmUKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIGN6bV9wYXNzCiAqLwpjb25zdCBmbG9hdCBjem1fcGFzc0dsb2JlID0gMi4wOwpgfSk7dmFyIHRNLGVNPVMoKCk9Pnt0TT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjT1BBUVVFfQogKgogKiBAbmFtZSBjem1fcGFzc09wYXF1ZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgY3ptX3Bhc3MKICovCmNvbnN0IGZsb2F0IGN6bV9wYXNzT3BhcXVlID0gNy4wOwpgfSk7dmFyIGlNLG5NPVMoKCk9PntpTT1gLyoqCiAqIFRoZSBhdXRvbWF0aWMgR0xTTCBjb25zdGFudCBmb3Ige0BsaW5rIFBhc3MjT1ZFUkxBWX0KICoKICogQG5hbWUgY3ptX3Bhc3NPdmVybGF5CiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NPdmVybGF5ID0gMTAuMDsKYH0pO3ZhciBzTSxvTT1TKCgpPT57c009YC8qKgogKiBUaGUgYXV0b21hdGljIEdMU0wgY29uc3RhbnQgZm9yIHtAbGluayBQYXNzI1RFUlJBSU5fQ0xBU1NJRklDQVRJT059CiAqCiAqIEBuYW1lIGN6bV9wYXNzVGVycmFpbkNsYXNzaWZpY2F0aW9uCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NUZXJyYWluQ2xhc3NpZmljYXRpb24gPSAzLjA7CmB9KTt2YXIgck0sYU09UygoKT0+e3JNPWAvKioKICogVGhlIGF1dG9tYXRpYyBHTFNMIGNvbnN0YW50IGZvciB7QGxpbmsgUGFzcyNUUkFOU0xVQ0VOVH0KICoKICogQG5hbWUgY3ptX3Bhc3NUcmFuc2x1Y2VudAogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgY3ptX3Bhc3MKICovCmNvbnN0IGZsb2F0IGN6bV9wYXNzVHJhbnNsdWNlbnQgPSA4LjA7CmB9KTt2YXIgQU0saE09UygoKT0+e0FNPWAvKioKICogVGhlIGF1dG9tYXRpYyBHTFNMIGNvbnN0YW50IGZvciB7QGxpbmsgUGFzcyNWT1hFTFN9CiAqCiAqIEBuYW1lIGN6bV9wYXNzVm94ZWxzCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBjem1fcGFzcwogKi8KY29uc3QgZmxvYXQgY3ptX3Bhc3NWb3hlbHMgPSA5LjA7CmB9KTt2YXIgY00sbE09UygoKT0+e2NNPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT5NYXRoLlBJPC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9waQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5QSQogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV9waSA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCB0d29QaSA9IDIuMCAqIGN6bV9waTsKICovCmNvbnN0IGZsb2F0IGN6bV9waSA9IDMuMTQxNTkyNjUzNTg5NzkzOwpgfSk7dmFyIGRNLG1NPVMoKCk9PntkTT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgPGNvZGU+cGkvNDwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fcGlPdmVyRm91cgogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5QSV9PVkVSX0ZPVVIKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fcGlPdmVyRm91ciA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCBwaSA9IDQuMCAqIGN6bV9waU92ZXJGb3VyOwogKi8KY29uc3QgZmxvYXQgY3ptX3BpT3ZlckZvdXIgPSAwLjc4NTM5ODE2MzM5NzQ0ODM7CmB9KTt2YXIgZk0sRU09UygoKT0+e2ZNPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT5waS82PC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9waU92ZXJTaXgKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguUElfT1ZFUl9TSVgKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fcGlPdmVyU2l4ID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gNi4wICogY3ptX3BpT3ZlclNpeDsKICovCmNvbnN0IGZsb2F0IGN6bV9waU92ZXJTaXggPSAwLjUyMzU5ODc3NTU5ODI5ODg7CmB9KTt2YXIgX00sUk09UygoKT0+e19NPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciA8Y29kZT5waS8zPC9jb2RlPi4KICoKICogQGFsaWFzIGN6bV9waU92ZXJUaHJlZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5QSV9PVkVSX1RIUkVFCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX3BpT3ZlclRocmVlID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gMy4wICogY3ptX3BpT3ZlclRocmVlOwogKi8KY29uc3QgZmxvYXQgY3ptX3BpT3ZlclRocmVlID0gMS4wNDcxOTc1NTExOTY1OTc2OwpgfSk7dmFyIFpNLElNPVMoKCk9PntaTT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgPGNvZGU+cGkvMjwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fcGlPdmVyVHdvCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBDZXNpdW1NYXRoLlBJX09WRVJfVFdPCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX3BpT3ZlclR3byA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCBwaSA9IDIuMCAqIGN6bV9waU92ZXJUd287CiAqLwpjb25zdCBmbG9hdCBjem1fcGlPdmVyVHdvID0gMS41NzA3OTYzMjY3OTQ4OTY2OwpgfSk7dmFyIHBNLHVNPVMoKCk9PntwTT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgY29udmVydGluZyBkZWdyZWVzIHRvIHJhZGlhbnMuCiAqCiAqIEBhbGlhcyBjem1fcmFkaWFuc1BlckRlZ3JlZQogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5SQURJQU5TX1BFUl9ERUdSRUUKICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbgogKiBjb25zdCBmbG9hdCBjem1fcmFkaWFuc1BlckRlZ3JlZSA9IC4uLjsKICoKICogLy8gRXhhbXBsZQogKiBmbG9hdCByYWQgPSBjem1fcmFkaWFuc1BlckRlZ3JlZSAqIGRlZzsKICovCmNvbnN0IGZsb2F0IGN6bV9yYWRpYW5zUGVyRGVncmVlID0gMC4wMTc0NTMyOTI1MTk5NDMyOTU7CmB9KTt2YXIgQ00sZ009UygoKT0+e0NNPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSAyRCB7QGxpbmsgU2NlbmVNb2RlfQogKgogKiBAbmFtZSBjem1fc2NlbmVNb2RlMkQKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3CiAqIEBzZWUgY3ptX3NjZW5lTW9kZTNECiAqIEBzZWUgY3ptX3NjZW5lTW9kZU1vcnBoaW5nCiAqLwpjb25zdCBmbG9hdCBjem1fc2NlbmVNb2RlMkQgPSAyLjA7CmB9KTt2YXIgVE0sTk09UygoKT0+e1RNPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSAzRCB7QGxpbmsgU2NlbmVNb2RlfQogKgogKiBAbmFtZSBjem1fc2NlbmVNb2RlM0QKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlMkQKICogQHNlZSBjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3CiAqIEBzZWUgY3ptX3NjZW5lTW9kZU1vcnBoaW5nCiAqLwpjb25zdCBmbG9hdCBjem1fc2NlbmVNb2RlM0QgPSAzLjA7CmB9KTt2YXIgRk0sYk09UygoKT0+e0ZNPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSBDb2x1bWJ1cyBWaWV3IHtAbGluayBTY2VuZU1vZGV9CiAqCiAqIEBuYW1lIGN6bV9zY2VuZU1vZGVDb2x1bWJ1c1ZpZXcKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlMkQKICogQHNlZSBjem1fc2NlbmVNb2RlM0QKICogQHNlZSBjem1fc2NlbmVNb2RlTW9ycGhpbmcKICovCmNvbnN0IGZsb2F0IGN6bV9zY2VuZU1vZGVDb2x1bWJ1c1ZpZXcgPSAxLjA7CmB9KTt2YXIgWU0sVk09UygoKT0+e1lNPWAvKioKICogVGhlIGNvbnN0YW50IGlkZW50aWZpZXIgZm9yIHRoZSBNb3JwaGluZyB7QGxpbmsgU2NlbmVNb2RlfQogKgogKiBAbmFtZSBjem1fc2NlbmVNb2RlTW9ycGhpbmcKICogQGdsc2xDb25zdGFudAogKiBAc2VlIGN6bV9zY2VuZU1vZGUKICogQHNlZSBjem1fc2NlbmVNb2RlMkQKICogQHNlZSBjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3CiAqIEBzZWUgY3ptX3NjZW5lTW9kZTNECiAqLwpjb25zdCBmbG9hdCBjem1fc2NlbmVNb2RlTW9ycGhpbmcgPSAwLjA7CmB9KTt2YXIgU00sT009UygoKT0+e1NNPWAvKioKICogQSBidWlsdC1pbiBHTFNMIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IGZvciBvbmUgc29sYXIgcmFkaXVzLgogKgogKiBAYWxpYXMgY3ptX3NvbGFyUmFkaXVzCiAqIEBnbHNsQ29uc3RhbnQKICoKICogQHNlZSBDZXNpdW1NYXRoLlNPTEFSX1JBRElVUwogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV9zb2xhclJhZGl1cyA9IC4uLjsKICovCmNvbnN0IGZsb2F0IGN6bV9zb2xhclJhZGl1cyA9IDY5NTUwMDAwMC4wOwpgfSk7dmFyIEJNLEdNPVMoKCk9PntCTT1gLyoqCiAqIEEgYnVpbHQtaW4gR0xTTCBmbG9hdGluZy1wb2ludCBjb25zdGFudCBmb3IgPGNvZGU+M3BpLzI8L2NvZGU+LgogKgogKiBAYWxpYXMgY3ptX3RocmVlUGlPdmVyMgogKiBAZ2xzbENvbnN0YW50CiAqCiAqIEBzZWUgQ2VzaXVtTWF0aC5USFJFRV9QSV9PVkVSX1RXTwogKgogKiBAZXhhbXBsZQogKiAvLyBHTFNMIGRlY2xhcmF0aW9uCiAqIGNvbnN0IGZsb2F0IGN6bV90aHJlZVBpT3ZlcjIgPSAuLi47CiAqCiAqIC8vIEV4YW1wbGUKICogZmxvYXQgcGkgPSAoMi4wIC8gMy4wKSAqIGN6bV90aHJlZVBpT3ZlcjI7CiAqLwpjb25zdCBmbG9hdCBjem1fdGhyZWVQaU92ZXIyID0gNC43MTIzODg5ODAzODQ2OTsKYH0pO3ZhciBXTSxETT1TKCgpPT57V009YC8qKgogKiBBIGJ1aWx0LWluIEdMU0wgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQgZm9yIDxjb2RlPjJwaTwvY29kZT4uCiAqCiAqIEBhbGlhcyBjem1fdHdvUGkKICogQGdsc2xDb25zdGFudAogKgogKiBAc2VlIENlc2l1bU1hdGguVFdPX1BJCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb24KICogY29uc3QgZmxvYXQgY3ptX3R3b1BpID0gLi4uOwogKgogKiAvLyBFeGFtcGxlCiAqIGZsb2F0IHBpID0gY3ptX3R3b1BpIC8gMi4wOwogKi8KY29uc3QgZmxvYXQgY3ptX3R3b1BpID0gNi4yODMxODUzMDcxNzk1ODY7CmB9KTt2YXIgVU0sTU09UygoKT0+e1VNPWAvKioKICogVGhlIG1heGltdW0gbGF0aXR1ZGUsIGluIHJhZGlhbnMsIGJvdGggTm9ydGggYW5kIFNvdXRoLCBzdXBwb3J0ZWQgYnkgYSBXZWIgTWVyY2F0b3IKICogKEVQU0c6Mzg1NykgcHJvamVjdGlvbi4gIFRlY2huaWNhbGx5LCB0aGUgTWVyY2F0b3IgcHJvamVjdGlvbiBpcyBkZWZpbmVkCiAqIGZvciBhbnkgbGF0aXR1ZGUgdXAgdG8gKGJ1dCBub3QgaW5jbHVkaW5nKSA5MCBkZWdyZWVzLCBidXQgaXQgbWFrZXMgc2Vuc2UKICogdG8gY3V0IGl0IG9mZiBzb29uZXIgYmVjYXVzZSBpdCBncm93cyBleHBvbmVudGlhbGx5IHdpdGggaW5jcmVhc2luZyBsYXRpdHVkZS4KICogVGhlIGxvZ2ljIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgY3V0b2ZmIHZhbHVlLCB3aGljaCBpcyB0aGUgb25lIHVzZWQgYnkKICogR29vZ2xlIE1hcHMsIEJpbmcgTWFwcywgYW5kIEVzcmksIGlzIHRoYXQgaXQgbWFrZXMgdGhlIHByb2plY3Rpb24KICogc3F1YXJlLiAgVGhhdCBpcywgdGhlIHJlY3RhbmdsZSBpcyBlcXVhbCBpbiB0aGUgWCBhbmQgWSBkaXJlY3Rpb25zLgogKgogKiBUaGUgY29uc3RhbnQgdmFsdWUgaXMgY29tcHV0ZWQgYXMgZm9sbG93czoKICogICBjem1fcGkgKiAwLjUgLSAoMi4wICogYXRhbihleHAoLWN6bV9waSkpKQogKgogKiBAbmFtZSBjem1fd2ViTWVyY2F0b3JNYXhMYXRpdHVkZQogKiBAZ2xzbENvbnN0YW50CiAqLwpjb25zdCBmbG9hdCBjem1fd2ViTWVyY2F0b3JNYXhMYXRpdHVkZSA9IDEuNDg0NDIyMjI5NzQ1MzMyNDsKYH0pO3ZhciBRTSxrTT1TKCgpPT57UU09YC8qKgogKiBAbmFtZSBjem1fZGVwdGhSYW5nZVN0cnVjdAogKiBAZ2xzbFN0cnVjdAogKi8Kc3RydWN0IGN6bV9kZXB0aFJhbmdlU3RydWN0CnsKICAgIGZsb2F0IG5lYXI7CiAgICBmbG9hdCBmYXI7Cn07CmB9KTt2YXIgTE0seU09UygoKT0+e0xNPWAvKioKICogSG9sZHMgbWF0ZXJpYWwgaW5mb3JtYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBmb3IgbGlnaHRpbmcuIFJldHVybmVkIGJ5IGFsbCBjem1fZ2V0TWF0ZXJpYWwgZnVuY3Rpb25zLgogKgogKiBAbmFtZSBjem1fbWF0ZXJpYWwKICogQGdsc2xTdHJ1Y3QKICoKICogQHByb3BlcnR5IHt2ZWMzfSBkaWZmdXNlIEluY29taW5nIGxpZ2h0IHRoYXQgc2NhdHRlcnMgZXZlbmx5IGluIGFsbCBkaXJlY3Rpb25zLgogKiBAcHJvcGVydHkge2Zsb2F0fSBzcGVjdWxhciBJbnRlbnNpdHkgb2YgaW5jb21pbmcgbGlnaHQgcmVmbGVjdGluZyBpbiBhIHNpbmdsZSBkaXJlY3Rpb24uCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IHNoaW5pbmVzcyBUaGUgc2hhcnBuZXNzIG9mIHRoZSBzcGVjdWxhciByZWZsZWN0aW9uLiAgSGlnaGVyIHZhbHVlcyBjcmVhdGUgYSBzbWFsbGVyLCBtb3JlIGZvY3VzZWQgc3BlY3VsYXIgaGlnaGxpZ2h0LgogKiBAcHJvcGVydHkge3ZlYzN9IG5vcm1hbCBTdXJmYWNlJ3Mgbm9ybWFsIGluIGV5ZSBjb29yZGluYXRlcy4gSXQgaXMgdXNlZCBmb3IgZWZmZWN0cyBzdWNoIGFzIG5vcm1hbCBtYXBwaW5nLiBUaGUgZGVmYXVsdCBpcyB0aGUgc3VyZmFjZSdzIHVubW9kaWZpZWQgbm9ybWFsLgogKiBAcHJvcGVydHkge3ZlYzN9IGVtaXNzaW9uIExpZ2h0IGVtaXR0ZWQgYnkgdGhlIG1hdGVyaWFsIGVxdWFsbHkgaW4gYWxsIGRpcmVjdGlvbnMuIFRoZSBkZWZhdWx0IGlzIHZlYzMoMC4wKSwgd2hpY2ggZW1pdHMgbm8gbGlnaHQuCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IGFscGhhIEFscGhhIG9mIHRoaXMgbWF0ZXJpYWwuIDAuMCBpcyBjb21wbGV0ZWx5IHRyYW5zcGFyZW50OyAxLjAgaXMgY29tcGxldGVseSBvcGFxdWUuCiAqLwpzdHJ1Y3QgY3ptX21hdGVyaWFsCnsKICAgIHZlYzMgZGlmZnVzZTsKICAgIGZsb2F0IHNwZWN1bGFyOwogICAgZmxvYXQgc2hpbmluZXNzOwogICAgdmVjMyBub3JtYWw7CiAgICB2ZWMzIGVtaXNzaW9uOwogICAgZmxvYXQgYWxwaGE7Cn07CmB9KTt2YXIgd00seE09UygoKT0+e3dNPWAvKioKICogVXNlZCBhcyBpbnB1dCB0byBldmVyeSBtYXRlcmlhbCdzIGN6bV9nZXRNYXRlcmlhbCBmdW5jdGlvbi4KICoKICogQG5hbWUgY3ptX21hdGVyaWFsSW5wdXQKICogQGdsc2xTdHJ1Y3QKICoKICogQHByb3BlcnR5IHtmbG9hdH0gcyAxRCB0ZXh0dXJlIGNvb3JkaW5hdGVzLgogKiBAcHJvcGVydHkge3ZlYzJ9IHN0IDJEIHRleHR1cmUgY29vcmRpbmF0ZXMuCiAqIEBwcm9wZXJ0eSB7dmVjM30gc3RyIDNEIHRleHR1cmUgY29vcmRpbmF0ZXMuCiAqIEBwcm9wZXJ0eSB7dmVjM30gbm9ybWFsRUMgVW5wZXJ0dXJiZWQgc3VyZmFjZSBub3JtYWwgaW4gZXllIGNvb3JkaW5hdGVzLgogKiBAcHJvcGVydHkge21hdDN9IHRhbmdlbnRUb0V5ZU1hdHJpeCBNYXRyaXggZm9yIGNvbnZlcnRpbmcgYSB0YW5nZW50IHNwYWNlIG5vcm1hbCB0byBleWUgc3BhY2UuCiAqIEBwcm9wZXJ0eSB7dmVjM30gcG9zaXRpb25Ub0V5ZUVDIFZlY3RvciBmcm9tIHRoZSBmcmFnbWVudCB0byB0aGUgZXllIGluIGV5ZSBjb29yZGluYXRlcy4gIFRoZSBtYWduaXR1ZGUgaXMgdGhlIGRpc3RhbmNlIGluIG1ldGVycyBmcm9tIHRoZSBmcmFnbWVudCB0byB0aGUgZXllLgogKiBAcHJvcGVydHkge2Zsb2F0fSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgdGVycmFpbiBpbiBtZXRlcnMgYWJvdmUgb3IgYmVsb3cgdGhlIFdHUzg0IGVsbGlwc29pZC4gIE9ubHkgYXZhaWxhYmxlIGZvciBnbG9iZSBtYXRlcmlhbHMuCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IHNsb3BlIFRoZSBzbG9wZSBvZiB0aGUgdGVycmFpbiBpbiByYWRpYW5zLiAgMCBpcyBmbGF0OyBwaS8yIGlzIHZlcnRpY2FsLiAgT25seSBhdmFpbGFibGUgZm9yIGdsb2JlIG1hdGVyaWFscy4KICogQHByb3BlcnR5IHtmbG9hdH0gYXNwZWN0IFRoZSBhc3BlY3Qgb2YgdGhlIHRlcnJhaW4gaW4gcmFkaWFucy4gIDAgaXMgRWFzdCwgcGkvMiBpcyBOb3J0aCwgcGkgaXMgV2VzdCwgM3BpLzIgaXMgU291dGguICBPbmx5IGF2YWlsYWJsZSBmb3IgZ2xvYmUgbWF0ZXJpYWxzLgogKi8Kc3RydWN0IGN6bV9tYXRlcmlhbElucHV0CnsKICAgIGZsb2F0IHM7CiAgICB2ZWMyIHN0OwogICAgdmVjMyBzdHI7CiAgICB2ZWMzIG5vcm1hbEVDOwogICAgbWF0MyB0YW5nZW50VG9FeWVNYXRyaXg7CiAgICB2ZWMzIHBvc2l0aW9uVG9FeWVFQzsKICAgIGZsb2F0IGhlaWdodDsKICAgIGZsb2F0IHNsb3BlOwogICAgZmxvYXQgYXNwZWN0Owp9OwpgfSk7dmFyIFBNLEpNPVMoKCk9PntQTT1gLyoqCiAqIFN0cnVjdCBmb3IgcmVwcmVzZW50aW5nIGEgbWF0ZXJpYWwgZm9yIGEge0BsaW5rIE1vZGVsfS4gVGhlIG1vZGVsCiAqIHJlbmRlcmluZyBwaXBlbGluZSB3aWxsIHBhc3MgdGhpcyBzdHJ1Y3QgYmV0d2VlbiBtYXRlcmlhbCwgY3VzdG9tIHNoYWRlcnMsCiAqIGFuZCBsaWdodGluZyBzdGFnZXMuIFRoaXMgaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGgge0BsaW5rIGN6bV9tYXRlcmlhbH0KICogd2hpY2ggaXMgdXNlZCBieSB0aGUgb2xkZXIgRmFicmljIG1hdGVyaWFscyBzeXN0ZW0sIGFsdGhvdWdoIHRoZXkgYXJlIHNpbWlsYXIuCiAqIDxwPgogKiBBbGwgY29sb3IgdmFsdWVzIChkaWZmdXNlLCBzcGVjdWxhciwgZW1pc3NpdmUpIGFyZSBpbiBsaW5lYXIgY29sb3Igc3BhY2UuCiAqIDwvcD4KICoKICogQG5hbWUgY3ptX21vZGVsTWF0ZXJpYWwKICogQGdsc2xTdHJ1Y3QKICoKICogQHByb3BlcnR5IHt2ZWMzfSBkaWZmdXNlIEluY29taW5nIGxpZ2h0IHRoYXQgc2NhdHRlcnMgZXZlbmx5IGluIGFsbCBkaXJlY3Rpb25zLgogKiBAcHJvcGVydHkge2Zsb2F0fSBhbHBoYSBBbHBoYSBvZiB0aGlzIG1hdGVyaWFsLiAwLjAgaXMgY29tcGxldGVseSB0cmFuc3BhcmVudDsgMS4wIGlzIGNvbXBsZXRlbHkgb3BhcXVlLgogKiBAcHJvcGVydHkge3ZlYzN9IHNwZWN1bGFyIENvbG9yIG9mIHJlZmxlY3RlZCBsaWdodCBhdCBub3JtYWwgaW5jaWRlbmNlIGluIFBCUiBtYXRlcmlhbHMuIFRoaXMgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIGYwIGluIHRoZSBsaXRlcmF0dXJlLgogKiBAcHJvcGVydHkge2Zsb2F0fSByb3VnaG5lc3MgQSBudW1iZXIgZnJvbSAwLjAgdG8gMS4wIHJlcHJlc2VudGluZyBob3cgcm91Z2ggdGhlIHN1cmZhY2UgaXMuIFZhbHVlcyBuZWFyIDAuMCBwcm9kdWNlIGdsb3NzeSBzdXJmYWNlcywgd2hpbGUgdmFsdWVzIG5lYXIgMS4wIHByb2R1Y2Ugcm91Z2ggc3VyZmFjZXMuCiAqIEBwcm9wZXJ0eSB7dmVjM30gbm9ybWFsRUMgU3VyZmFjZSdzIG5vcm1hbCBpbiBleWUgY29vcmRpbmF0ZXMuIEl0IGlzIHVzZWQgZm9yIGVmZmVjdHMgc3VjaCBhcyBub3JtYWwgbWFwcGluZy4gVGhlIGRlZmF1bHQgaXMgdGhlIHN1cmZhY2UncyB1bm1vZGlmaWVkIG5vcm1hbC4KICogQHByb3BlcnR5IHtmbG9hdH0gb2NjbHVzaW9uIEFtYmllbnQgb2NjbHVzaW9uIHJlY2lldmVkIGF0IHRoaXMgcG9pbnQgb24gdGhlIG1hdGVyaWFsLiAxLjAgbWVhbnMgZnVsbHkgbGl0LCAwLjAgbWVhbnMgZnVsbHkgb2NjbHVkZWQuCiAqIEBwcm9wZXJ0eSB7dmVjM30gZW1pc3NpdmUgTGlnaHQgZW1pdHRlZCBieSB0aGUgbWF0ZXJpYWwgZXF1YWxseSBpbiBhbGwgZGlyZWN0aW9ucy4gVGhlIGRlZmF1bHQgaXMgdmVjMygwLjApLCB3aGljaCBlbWl0cyBubyBsaWdodC4KICovCnN0cnVjdCBjem1fbW9kZWxNYXRlcmlhbCB7CiAgICB2ZWMzIGRpZmZ1c2U7CiAgICBmbG9hdCBhbHBoYTsKICAgIHZlYzMgc3BlY3VsYXI7CiAgICBmbG9hdCByb3VnaG5lc3M7CiAgICB2ZWMzIG5vcm1hbEVDOwogICAgZmxvYXQgb2NjbHVzaW9uOwogICAgdmVjMyBlbWlzc2l2ZTsKfTsKYH0pO3ZhciBqTSxITT1TKCgpPT57ak09YC8qKgogKiBTdHJ1Y3QgZm9yIHJlcHJlc2VudGluZyB0aGUgb3V0cHV0IG9mIGEgY3VzdG9tIHZlcnRleCBzaGFkZXIuCiAqIAogKiBAbmFtZSBjem1fbW9kZWxWZXJ0ZXhPdXRwdXQKICogQGdsc2xTdHJ1Y3QKICoKICogQHNlZSB7QGxpbmsgQ3VzdG9tU2hhZGVyfQogKiBAc2VlIHtAbGluayBNb2RlbH0KICoKICogQHByb3BlcnR5IHt2ZWMzfSBwb3NpdGlvbk1DIFRoZSBwb3NpdGlvbiBvZiB0aGUgdmVydGV4IGluIG1vZGVsIGNvb3JkaW5hdGVzCiAqIEBwcm9wZXJ0eSB7ZmxvYXR9IHBvaW50U2l6ZSBBIGN1c3RvbSB2YWx1ZSBmb3IgZ2xfUG9pbnRTaXplLiBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgcG9pbnQgcHJpbWl0aXZlcy4gCiAqLwpzdHJ1Y3QgY3ptX21vZGVsVmVydGV4T3V0cHV0IHsKICB2ZWMzIHBvc2l0aW9uTUM7CiAgZmxvYXQgcG9pbnRTaXplOwp9OwpgfSk7dmFyIHZNLHpNPVMoKCk9Pnt2TT1gLyoqCiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjem1fcGJyTGlnaHRpbmd9CiAqCiAqIEBuYW1lIGN6bV9tYXRlcmlhbAogKiBAZ2xzbFN0cnVjdAogKgogKiBAcHJvcGVydHkge3ZlYzN9IGRpZmZ1c2VDb2xvciB0aGUgZGlmZnVzZSBjb2xvciBvZiB0aGUgbWF0ZXJpYWwgZm9yIHRoZSBsYW1iZXJ0IHRlcm0gb2YgdGhlIHJlbmRlcmluZyBlcXVhdGlvbgogKiBAcHJvcGVydHkge2Zsb2F0fSByb3VnaG5lc3MgYSB2YWx1ZSBmcm9tIDAuMCB0byAxLjAgdGhhdCBpbmRpY2F0ZXMgaG93IHJvdWdoIHRoZSBzdXJmYWNlIG9mIHRoZSBtYXRlcmlhbCBpcy4KICogQHByb3BlcnR5IHt2ZWMzfSBmMCBUaGUgcmVmbGVjdGFuY2Ugb2YgdGhlIG1hdGVyaWFsIGF0IG5vcm1hbCBpbmNpZGVuY2UKICovCnN0cnVjdCBjem1fcGJyUGFyYW1ldGVycwp7CiAgICB2ZWMzIGRpZmZ1c2VDb2xvcjsKICAgIGZsb2F0IHJvdWdobmVzczsKICAgIHZlYzMgZjA7Cn07CmB9KTt2YXIgS00sWE09UygoKT0+e0tNPWAvKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fcmF5CiAqIEBnbHNsU3RydWN0CiAqLwpzdHJ1Y3QgY3ptX3JheQp7CiAgICB2ZWMzIG9yaWdpbjsKICAgIHZlYzMgZGlyZWN0aW9uOwp9OwpgfSk7dmFyIHFNLCRNPVMoKCk9PntxTT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX3JheVNlZ21lbnQKICogQGdsc2xTdHJ1Y3QKICovCnN0cnVjdCBjem1fcmF5U2VnbWVudAp7CiAgICBmbG9hdCBzdGFydDsKICAgIGZsb2F0IHN0b3A7Cn07CgovKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fZW1wdHlSYXlTZWdtZW50CiAqIEBnbHNsQ29uc3RhbnQgCiAqLwpjb25zdCBjem1fcmF5U2VnbWVudCBjem1fZW1wdHlSYXlTZWdtZW50ID0gY3ptX3JheVNlZ21lbnQoLWN6bV9pbmZpbml0eSwgLWN6bV9pbmZpbml0eSk7CgovKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fZnVsbFJheVNlZ21lbnQKICogQGdsc2xDb25zdGFudCAKICovCmNvbnN0IGN6bV9yYXlTZWdtZW50IGN6bV9mdWxsUmF5U2VnbWVudCA9IGN6bV9yYXlTZWdtZW50KDAuMCwgY3ptX2luZmluaXR5KTsKYH0pO3ZhciB0USxlUT1TKCgpPT57dFE9YHN0cnVjdCBjem1fc2hhZG93UGFyYW1ldGVycwp7CiNpZmRlZiBVU0VfQ1VCRV9NQVBfU0hBRE9XCiAgICB2ZWMzIHRleENvb3JkczsKI2Vsc2UKICAgIHZlYzIgdGV4Q29vcmRzOwojZW5kaWYKCiAgICBmbG9hdCBkZXB0aEJpYXM7CiAgICBmbG9hdCBkZXB0aDsKICAgIGZsb2F0IG5Eb3RMOwogICAgdmVjMiB0ZXhlbFN0ZXBTaXplOwogICAgZmxvYXQgbm9ybWFsU2hhZGluZ1Ntb290aDsKICAgIGZsb2F0IGRhcmtuZXNzOwp9OwpgfSk7dmFyIGlRLG5RPVMoKCk9PntpUT1gLyoqCiAqIENvbnZlcnRzIGFuIEhTQiBjb2xvciAoaHVlLCBzYXR1cmF0aW9uLCBicmlnaHRuZXNzKSB0byBSR0IKICogSFNCIDwtPiBSR0IgY29udmVyc2lvbiB3aXRoIG1pbmltYWwgYnJhbmNoaW5nOiB7QGxpbmsgaHR0cDovL2xvbGVuZ2luZS5uZXQvYmxvZy8yMDEzLzA3LzI3L3JnYi10by1oc3YtaW4tZ2xzbH0KICoKICogQG5hbWUgY3ptX0hTQlRvUkdCCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gaHNiIFRoZSBjb2xvciBpbiBIU0IuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gUkdCLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIGhzYiA9IGN6bV9SR0JUb0hTQihyZ2IpOwogKiBoc2IueiAqPSAwLjE7CiAqIHJnYiA9IGN6bV9IU0JUb1JHQihoc2IpOwogKi8KCmNvbnN0IHZlYzQgS19IU0IyUkdCID0gdmVjNCgxLjAsIDIuMCAvIDMuMCwgMS4wIC8gMy4wLCAzLjApOwoKdmVjMyBjem1fSFNCVG9SR0IodmVjMyBoc2IpCnsKICAgIHZlYzMgcCA9IGFicyhmcmFjdChoc2IueHh4ICsgS19IU0IyUkdCLnh5eikgKiA2LjAgLSBLX0hTQjJSR0Iud3d3KTsKICAgIHJldHVybiBoc2IueiAqIG1peChLX0hTQjJSR0IueHh4LCBjbGFtcChwIC0gS19IU0IyUkdCLnh4eCwgMC4wLCAxLjApLCBoc2IueSk7Cn0KYH0pO3ZhciBzUSxvUT1TKCgpPT57c1E9YC8qKgogKiBDb252ZXJ0cyBhbiBIU0wgY29sb3IgKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKSB0byBSR0IKICogSFNMIDwtPiBSR0IgY29udmVyc2lvbjoge0BsaW5rIGh0dHA6Ly93d3cuY2hpbGxpYW50LmNvbS9yZ2IyaHN2Lmh0bWx9CiAqCiAqIEBuYW1lIGN6bV9IU0xUb1JHQgogKiBAZ2xzbEZ1bmN0aW9uCiAqIAogKiBAcGFyYW0ge3ZlYzN9IHJnYiBUaGUgY29sb3IgaW4gSFNMLgogKgogKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIGluIFJHQi4KICoKICogQGV4YW1wbGUKICogdmVjMyBoc2wgPSBjem1fUkdCVG9IU0wocmdiKTsKICogaHNsLnogKj0gMC4xOwogKiByZ2IgPSBjem1fSFNMVG9SR0IoaHNsKTsKICovCgp2ZWMzIGh1ZVRvUkdCKGZsb2F0IGh1ZSkKewogICAgZmxvYXQgciA9IGFicyhodWUgKiA2LjAgLSAzLjApIC0gMS4wOwogICAgZmxvYXQgZyA9IDIuMCAtIGFicyhodWUgKiA2LjAgLSAyLjApOwogICAgZmxvYXQgYiA9IDIuMCAtIGFicyhodWUgKiA2LjAgLSA0LjApOwogICAgcmV0dXJuIGNsYW1wKHZlYzMociwgZywgYiksIDAuMCwgMS4wKTsKfQoKdmVjMyBjem1fSFNMVG9SR0IodmVjMyBoc2wpCnsKICAgIHZlYzMgcmdiID0gaHVlVG9SR0IoaHNsLngpOwogICAgZmxvYXQgYyA9ICgxLjAgLSBhYnMoMi4wICogaHNsLnogLSAxLjApKSAqIGhzbC55OwogICAgcmV0dXJuIChyZ2IgLSAwLjUpICogYyArIGhzbC56Owp9CmB9KTt2YXIgclEsYVE9UygoKT0+e3JRPWAvKioKICogQ29udmVydHMgYW4gUkdCIGNvbG9yIHRvIEhTQiAoaHVlLCBzYXR1cmF0aW9uLCBicmlnaHRuZXNzKQogKiBIU0IgPC0+IFJHQiBjb252ZXJzaW9uIHdpdGggbWluaW1hbCBicmFuY2hpbmc6IHtAbGluayBodHRwOi8vbG9sZW5naW5lLm5ldC9ibG9nLzIwMTMvMDcvMjcvcmdiLXRvLWhzdi1pbi1nbHNsfQogKgogKiBAbmFtZSBjem1fUkdCVG9IU0IKICogQGdsc2xGdW5jdGlvbgogKiAKICogQHBhcmFtIHt2ZWMzfSByZ2IgVGhlIGNvbG9yIGluIFJHQi4KICoKICogQHJldHVybnMge3ZlYzN9IFRoZSBjb2xvciBpbiBIU0IuCiAqCiAqIEBleGFtcGxlCiAqIHZlYzMgaHNiID0gY3ptX1JHQlRvSFNCKHJnYik7CiAqIGhzYi56ICo9IDAuMTsKICogcmdiID0gY3ptX0hTQlRvUkdCKGhzYik7CiAqLwoKY29uc3QgdmVjNCBLX1JHQjJIU0IgPSB2ZWM0KDAuMCwgLTEuMCAvIDMuMCwgMi4wIC8gMy4wLCAtMS4wKTsKCnZlYzMgY3ptX1JHQlRvSFNCKHZlYzMgcmdiKQp7CiAgICB2ZWM0IHAgPSBtaXgodmVjNChyZ2IuYmcsIEtfUkdCMkhTQi53eiksIHZlYzQocmdiLmdiLCBLX1JHQjJIU0IueHkpLCBzdGVwKHJnYi5iLCByZ2IuZykpOwogICAgdmVjNCBxID0gbWl4KHZlYzQocC54eXcsIHJnYi5yKSwgdmVjNChyZ2IuciwgcC55engpLCBzdGVwKHAueCwgcmdiLnIpKTsKCiAgICBmbG9hdCBkID0gcS54IC0gbWluKHEudywgcS55KTsKICAgIHJldHVybiB2ZWMzKGFicyhxLnogKyAocS53IC0gcS55KSAvICg2LjAgKiBkICsgY3ptX2Vwc2lsb243KSksIGQgLyAocS54ICsgY3ptX2Vwc2lsb243KSwgcS54KTsKfQpgfSk7dmFyIEFRLGhRPVMoKCk9PntBUT1gLyoqCiAqIENvbnZlcnRzIGFuIFJHQiBjb2xvciB0byBIU0wgKGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKQogKiBIU0wgPC0+IFJHQiBjb252ZXJzaW9uOiB7QGxpbmsgaHR0cDovL3d3dy5jaGlsbGlhbnQuY29tL3JnYjJoc3YuaHRtbH0KICoKICogQG5hbWUgY3ptX1JHQlRvSFNMCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvciBpbiBSR0IuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gSFNMLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIGhzbCA9IGN6bV9SR0JUb0hTTChyZ2IpOwogKiBoc2wueiAqPSAwLjE7CiAqIHJnYiA9IGN6bV9IU0xUb1JHQihoc2wpOwogKi8KIAp2ZWMzIFJHQnRvSENWKHZlYzMgcmdiKQp7CiAgICAvLyBCYXNlZCBvbiB3b3JrIGJ5IFNhbSBIb2NldmFyIGFuZCBFbWlsIFBlcnNzb24KICAgIHZlYzQgcCA9IChyZ2IuZyA8IHJnYi5iKSA/IHZlYzQocmdiLmJnLCAtMS4wLCAyLjAgLyAzLjApIDogdmVjNChyZ2IuZ2IsIDAuMCwgLTEuMCAvIDMuMCk7CiAgICB2ZWM0IHEgPSAocmdiLnIgPCBwLngpID8gdmVjNChwLnh5dywgcmdiLnIpIDogdmVjNChyZ2IuciwgcC55engpOwogICAgZmxvYXQgYyA9IHEueCAtIG1pbihxLncsIHEueSk7CiAgICBmbG9hdCBoID0gYWJzKChxLncgLSBxLnkpIC8gKDYuMCAqIGMgKyBjem1fZXBzaWxvbjcpICsgcS56KTsKICAgIHJldHVybiB2ZWMzKGgsIGMsIHEueCk7Cn0KCnZlYzMgY3ptX1JHQlRvSFNMKHZlYzMgcmdiKQp7CiAgICB2ZWMzIGhjdiA9IFJHQnRvSENWKHJnYik7CiAgICBmbG9hdCBsID0gaGN2LnogLSBoY3YueSAqIDAuNTsKICAgIGZsb2F0IHMgPSBoY3YueSAvICgxLjAgLSBhYnMobCAqIDIuMCAtIDEuMCkgKyBjem1fZXBzaWxvbjcpOwogICAgcmV0dXJuIHZlYzMoaGN2LngsIHMsIGwpOwp9CmB9KTt2YXIgY1EsbFE9UygoKT0+e2NRPWAvKioKICogQ29udmVydHMgYW4gUkdCIGNvbG9yIHRvIENJRSBZeHkuCiAqIDxwPlRoZSBjb252ZXJzaW9uIGlzIGRlc2NyaWJlZCBpbgogKiB7QGxpbmsgaHR0cDovL2NvbnRlbnQuZ3B3aWtpLm9yZy9pbmRleC5waHAvRDNEQm9vazpIaWdoLUR5bmFtaWNfUmFuZ2VfUmVuZGVyaW5nI0x1bWluYW5jZV9UcmFuc2Zvcm18THVtaW5hbmNlIFRyYW5zZm9ybX0KICogPC9wPgogKiAKICogQG5hbWUgY3ptX1JHQlRvWFlaCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvciBpbiBSR0IuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gQ0lFIFl4eS4KICoKICogQGV4YW1wbGUKICogdmVjMyB4eXogPSBjem1fUkdCVG9YWVoocmdiKTsKICogeHl6LnggPSBtYXgoeHl6LnggLSBsdW1pbmFuY2VUaHJlc2hvbGQsIDAuMCk7CiAqIHJnYiA9IGN6bV9YWVpUb1JHQih4eXopOwogKi8KdmVjMyBjem1fUkdCVG9YWVoodmVjMyByZ2IpCnsKICAgIGNvbnN0IG1hdDMgUkdCMlhZWiA9IG1hdDMoMC40MTI0LCAwLjIxMjYsIDAuMDE5MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTc2LCAwLjcxNTIsIDAuMTE5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4xODA1LCAwLjA3MjIsIDAuOTUwNSk7CiAgICB2ZWMzIHh5eiA9IFJHQjJYWVogKiByZ2I7CiAgICB2ZWMzIFl4eTsKICAgIFl4eS5yID0geHl6Lmc7CiAgICBmbG9hdCB0ZW1wID0gZG90KHZlYzMoMS4wKSwgeHl6KTsKICAgIFl4eS5nYiA9IHh5ei5yZyAvIHRlbXA7CiAgICByZXR1cm4gWXh5Owp9CmB9KTt2YXIgZFEsbVE9UygoKT0+e2RRPWAvKioKICogQ29udmVydHMgYSBDSUUgWXh5IGNvbG9yIHRvIFJHQi4KICogPHA+VGhlIGNvbnZlcnNpb24gaXMgZGVzY3JpYmVkIGluCiAqIHtAbGluayBodHRwOi8vY29udGVudC5ncHdpa2kub3JnL2luZGV4LnBocC9EM0RCb29rOkhpZ2gtRHluYW1pY19SYW5nZV9SZW5kZXJpbmcjTHVtaW5hbmNlX1RyYW5zZm9ybXxMdW1pbmFuY2UgVHJhbnNmb3JtfQogKiA8L3A+CiAqIAogKiBAbmFtZSBjem1fWFlaVG9SR0IKICogQGdsc2xGdW5jdGlvbgogKiAKICogQHBhcmFtIHt2ZWMzfSBZeHkgVGhlIGNvbG9yIGluIENJRSBZeHkuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gUkdCLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIHh5eiA9IGN6bV9SR0JUb1hZWihyZ2IpOwogKiB4eXoueCA9IG1heCh4eXoueCAtIGx1bWluYW5jZVRocmVzaG9sZCwgMC4wKTsKICogcmdiID0gY3ptX1hZWlRvUkdCKHh5eik7CiAqLwp2ZWMzIGN6bV9YWVpUb1JHQih2ZWMzIFl4eSkKewogICAgY29uc3QgbWF0MyBYWVoyUkdCID0gbWF0MyggMy4yNDA1LCAtMC45NjkzLCAgMC4wNTU2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMS41MzcxLCAgMS44NzYwLCAtMC4yMDQwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMC40OTg1LCAgMC4wNDE2LCAgMS4wNTcyKTsKICAgIHZlYzMgeHl6OwogICAgeHl6LnIgPSBZeHkuciAqIFl4eS5nIC8gWXh5LmI7CiAgICB4eXouZyA9IFl4eS5yOwogICAgeHl6LmIgPSBZeHkuciAqICgxLjAgLSBZeHkuZyAtIFl4eS5iKSAvIFl4eS5iOwogICAgCiAgICByZXR1cm4gWFlaMlJHQiAqIHh5ejsKfQpgfSk7dmFyIGZRLEVRPVMoKCk9PntmUT1gLy8gU2VlOgovLyAgICBodHRwczovL2tuYXJrb3dpY3oud29yZHByZXNzLmNvbS8yMDE2LzAxLzA2L2FjZXMtZmlsbWljLXRvbmUtbWFwcGluZy1jdXJ2ZS8KCnZlYzMgY3ptX2FjZXNUb25lbWFwcGluZyh2ZWMzIGNvbG9yKSB7CiAgICBmbG9hdCBnID0gMC45ODU7CiAgICBmbG9hdCBhID0gMC4wNjU7CiAgICBmbG9hdCBiID0gMC4wMDAxOwogICAgZmxvYXQgYyA9IDAuNDMzOwogICAgZmxvYXQgZCA9IDAuMjM4OwoKICAgIGNvbG9yID0gKGNvbG9yICogKGNvbG9yICsgYSkgLSBiKSAvIChjb2xvciAqIChnICogY29sb3IgKyBjKSArIGQpOwoKICAgIGNvbG9yID0gY2xhbXAoY29sb3IsIDAuMCwgMS4wKTsKCiAgICByZXR1cm4gY29sb3I7Cn0KYH0pO3ZhciBfUSxSUT1TKCgpPT57X1E9YC8qKgogKiBAcHJpdmF0ZQogKi8KZmxvYXQgY3ptX2FscGhhV2VpZ2h0KGZsb2F0IGEpCnsKICAgIGZsb2F0IHogPSAoZ2xfRnJhZ0Nvb3JkLnogLSBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvblszXVsyXSkgLyBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvblsyXVsyXTsKCiAgICAvLyBTZWUgV2VpZ2h0ZWQgQmxlbmRlZCBPcmRlci1JbmRlcGVuZGVudCBUcmFuc3BhcmVuY3kgZm9yIGV4YW1wbGVzIG9mIGRpZmZlcmVudCB3ZWlnaHRpbmcgZnVuY3Rpb25zOgogICAgLy8gaHR0cDovL2pjZ3Qub3JnL3B1Ymxpc2hlZC8wMDAyLzAyLzA5LwogICAgcmV0dXJuIHBvdyhhICsgMC4wMSwgNC4wKSArIG1heCgxZS0yLCBtaW4oMy4wICogMWUzLCAwLjAwMyAvICgxZS01ICsgcG93KGFicyh6KSAvIDIwMC4wLCA0LjApKSkpOwp9CmB9KTt2YXIgWlEsSVE9UygoKT0+e1pRPWAvKioKICogUHJvY2VkdXJhbCBhbnRpLWFsaWFzaW5nIGJ5IGJsdXJyaW5nIHR3byBjb2xvcnMgdGhhdCBtZWV0IGF0IGEgc2hhcnAgZWRnZS4KICoKICogQG5hbWUgY3ptX2FudGlhbGlhcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gY29sb3IxIFRoZSBjb2xvciBvbiBvbmUgc2lkZSBvZiB0aGUgZWRnZS4KICogQHBhcmFtIHt2ZWM0fSBjb2xvcjIgVGhlIGNvbG9yIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBlZGdlLgogKiBAcGFyYW0ge3ZlYzR9IGN1cnJlbnRjb2xvciBUaGUgY3VycmVudCBjb2xvciwgZWl0aGVyIDxjb2RlPmNvbG9yMTwvY29kZT4gb3IgPGNvZGU+Y29sb3IyPC9jb2RlPi4KICogQHBhcmFtIHtmbG9hdH0gZGlzdCBUaGUgZGlzdGFuY2UgdG8gdGhlIGVkZ2UgaW4gdGV4dHVyZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHtmbG9hdH0gW2Z1enpGYWN0b3I9MC4xXSBDb250cm9scyB0aGUgYmx1cnJpbmVzcyBiZXR3ZWVuIHRoZSB0d28gY29sb3JzLgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIGFudGktYWxpYXNlZCBjb2xvci4KICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbnMKICogdmVjNCBjem1fYW50aWFsaWFzKHZlYzQgY29sb3IxLCB2ZWM0IGNvbG9yMiwgdmVjNCBjdXJyZW50Q29sb3IsIGZsb2F0IGRpc3QsIGZsb2F0IGZ1enpGYWN0b3IpOwogKiB2ZWM0IGN6bV9hbnRpYWxpYXModmVjNCBjb2xvcjEsIHZlYzQgY29sb3IyLCB2ZWM0IGN1cnJlbnRDb2xvciwgZmxvYXQgZGlzdCk7CiAqCiAqIC8vIGdldCB0aGUgY29sb3IgZm9yIGEgbWF0ZXJpYWwgdGhhdCBoYXMgYSBzaGFycCBlZGdlIGF0IHRoZSBsaW5lIHkgPSAwLjUgaW4gdGV4dHVyZSBzcGFjZQogKiBmbG9hdCBkaXN0ID0gYWJzKHRleHR1cmVDb29yZGluYXRlcy50IC0gMC41KTsKICogdmVjNCBjdXJyZW50Q29sb3IgPSBtaXgoYm90dG9tQ29sb3IsIHRvcENvbG9yLCBzdGVwKDAuNSwgdGV4dHVyZUNvb3JkaW5hdGVzLnQpKTsKICogdmVjNCBjb2xvciA9IGN6bV9hbnRpYWxpYXMoYm90dG9tQ29sb3IsIHRvcENvbG9yLCBjdXJyZW50Q29sb3IsIGRpc3QsIDAuMSk7CiAqLwp2ZWM0IGN6bV9hbnRpYWxpYXModmVjNCBjb2xvcjEsIHZlYzQgY29sb3IyLCB2ZWM0IGN1cnJlbnRDb2xvciwgZmxvYXQgZGlzdCwgZmxvYXQgZnV6ekZhY3RvcikKewogICAgZmxvYXQgdmFsMSA9IGNsYW1wKGRpc3QgLyBmdXp6RmFjdG9yLCAwLjAsIDEuMCk7CiAgICBmbG9hdCB2YWwyID0gY2xhbXAoKGRpc3QgLSAwLjUpIC8gZnV6ekZhY3RvciwgMC4wLCAxLjApOwogICAgdmFsMSA9IHZhbDEgKiAoMS4wIC0gdmFsMik7CiAgICB2YWwxID0gdmFsMSAqIHZhbDEgKiAoMy4wIC0gKDIuMCAqIHZhbDEpKTsKICAgIHZhbDEgPSBwb3codmFsMSwgMC41KTsgLy9tYWtlcyB0aGUgdHJhbnNpdGlvbiBuaWNlcgogICAgCiAgICB2ZWM0IG1pZENvbG9yID0gKGNvbG9yMSArIGNvbG9yMikgKiAwLjU7CiAgICByZXR1cm4gbWl4KG1pZENvbG9yLCBjdXJyZW50Q29sb3IsIHZhbDEpOwp9Cgp2ZWM0IGN6bV9hbnRpYWxpYXModmVjNCBjb2xvcjEsIHZlYzQgY29sb3IyLCB2ZWM0IGN1cnJlbnRDb2xvciwgZmxvYXQgZGlzdCkKewogICAgcmV0dXJuIGN6bV9hbnRpYWxpYXMoY29sb3IxLCBjb2xvcjIsIGN1cnJlbnRDb2xvciwgZGlzdCwgMC4xKTsKfQpgfSk7dmFyIHBRLHVRPVMoKCk9PntwUT1gLyoqCiAqIEFwcGx5IGEgSFNCIGNvbG9yIHNoaWZ0IHRvIGFuIFJHQiBjb2xvci4KICoKICogQHBhcmFtIHt2ZWMzfSByZ2IgVGhlIGNvbG9yIGluIFJHQiBzcGFjZS4KICogQHBhcmFtIHt2ZWMzfSBoc2JTaGlmdCBUaGUgYW1vdW50IHRvIHNoaWZ0IGVhY2ggY29tcG9uZW50LiBUaGUgeHl6IGNvbXBvbmVudHMgY29ycmVzcG9uZCB0byBodWUsIHNhdHVyYXRpb24sIGFuZCBicmlnaHRuZXNzLiBTaGlmdGluZyB0aGUgaHVlIGJ5ICsvLSAxLjAgY29ycmVzcG9uZHMgdG8gc2hpZnRpbmcgdGhlIGh1ZSBieSBhIGZ1bGwgY3ljbGUuIFNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3MgYXJlIGNsYW1wZWQgYmV0d2VlbiAwIGFuZCAxIGFmdGVyIHRoZSBhZGp1c3RtZW50CiAqIEBwYXJhbSB7Ym9vbH0gaWdub3JlQmxhY2tQaXhlbHMgSWYgdHJ1ZSwgYmxhY2sgcGl4ZWxzIHdpbGwgYmUgdW5jaGFuZ2VkLiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBzb21lIHNoYWRlcnMgc3VjaCBhcyBhdG1vc3BoZXJlLXJlbGF0ZWQgZWZmZWN0cy4KICoKICogQHJldHVybiB7dmVjM30gVGhlIFJHQiBjb2xvciBhZnRlciBzaGlmdGluZyBpbiBIU0Igc3BhY2UgYW5kIGNsYW1waW5nIHNhdHVyYXRpb24gYW5kIGJyaWdodG5lc3MgdG8gYSB2YWxpZCByYW5nZS4KICovCnZlYzMgY3ptX2FwcGx5SFNCU2hpZnQodmVjMyByZ2IsIHZlYzMgaHNiU2hpZnQsIGJvb2wgaWdub3JlQmxhY2tQaXhlbHMpIHsKICAgIC8vIENvbnZlcnQgcmdiIGNvbG9yIHRvIGhzYgogICAgdmVjMyBoc2IgPSBjem1fUkdCVG9IU0IocmdiKTsKCiAgICAvLyBQZXJmb3JtIGhzYiBzaGlmdAogICAgLy8gSHVlIGN5Y2xlcyBhcm91bmQgc28gbm8gY2xhbXAgaXMgbmVlZGVkLgogICAgaHNiLnggKz0gaHNiU2hpZnQueDsgLy8gaHVlCiAgICBoc2IueSA9IGNsYW1wKGhzYi55ICsgaHNiU2hpZnQueSwgMC4wLCAxLjApOyAvLyBzYXR1cmF0aW9uCgogICAgLy8gYnJpZ2h0bmVzcwogICAgLy8KICAgIC8vIFNvbWUgc2hhZGVycyBzdWNoIGFzIGF0bW9zcGhlcmUtcmVsYXRlZCBlZmZlY3RzIG5lZWQgdG8gbGVhdmUgYmxhY2sKICAgIC8vIHBpeGVscyB1bmNoYW5nZWQKICAgIGlmIChpZ25vcmVCbGFja1BpeGVscykgewogICAgICAgIGhzYi56ID0gaHNiLnogPiBjem1fZXBzaWxvbjcgPyBoc2IueiArIGhzYlNoaWZ0LnogOiAwLjA7CiAgICB9IGVsc2UgewogICAgICAgIGhzYi56ID0gaHNiLnogKyBoc2JTaGlmdC56OwogICAgfQogICAgaHNiLnogPSBjbGFtcChoc2IueiwgMC4wLCAxLjApOwoKICAgIC8vIENvbnZlcnQgc2hpZnRlZCBoc2IgYmFjayB0byByZ2IKICAgIHJldHVybiBjem1fSFNCVG9SR0IoaHNiKTsKfQpgfSk7dmFyIENRLGdRPVMoKCk9PntDUT1gLyoqCiAqIEFwcHJveGltYXRlbHkgY29tcHV0ZXMgc3BoZXJpY2FsIGNvb3JkaW5hdGVzIGdpdmVuIGEgbm9ybWFsLgogKiBVc2VzIGFwcHJveGltYXRlIGludmVyc2UgdHJpZ29ub21ldHJ5IGZvciBzcGVlZCBhbmQgY29uc2lzdGVuY3ksCiAqIHNpbmNlIGludmVyc2UgdHJpZ29ub21ldHJ5IGNhbiBkaWZmZXIgZnJvbSB2ZW5kb3ItdG8tdmVuZG9yIGFuZCB3aGVuIGNvbXBhcmVkIHdpdGggdGhlIENQVS4KICoKICogQG5hbWUgY3ptX2FwcHJveGltYXRlU3BoZXJpY2FsQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IG5vcm1hbCBhcmJpdHJhcnktbGVuZ3RoIG5vcm1hbC4KICoKICogQHJldHVybnMge3ZlYzJ9IEFwcHJveGltYXRlIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUgc3BoZXJpY2FsIGNvb3JkaW5hdGVzLgogKi8KdmVjMiBjem1fYXBwcm94aW1hdGVTcGhlcmljYWxDb29yZGluYXRlcyh2ZWMzIG5vcm1hbCkgewogICAgLy8gUHJvamVjdCBpbnRvIHBsYW5lIHdpdGggdmVydGljYWwgZm9yIGxhdGl0dWRlCiAgICBmbG9hdCBsYXRpdHVkZUFwcHJveGltYXRpb24gPSBjem1fZmFzdEFwcHJveGltYXRlQXRhbihzcXJ0KG5vcm1hbC54ICogbm9ybWFsLnggKyBub3JtYWwueSAqIG5vcm1hbC55KSwgbm9ybWFsLnopOwogICAgZmxvYXQgbG9uZ2l0dWRlQXBwcm94aW1hdGlvbiA9IGN6bV9mYXN0QXBwcm94aW1hdGVBdGFuKG5vcm1hbC54LCBub3JtYWwueSk7CiAgICByZXR1cm4gdmVjMihsYXRpdHVkZUFwcHJveGltYXRpb24sIGxvbmdpdHVkZUFwcHJveGltYXRpb24pOwp9CmB9KTt2YXIgVFEsTlE9UygoKT0+e1RRPWAvKioKICogQ29tcHV0ZSBhIHJhdGlvbmFsIGFwcHJveGltYXRpb24gdG8gdGFuaCh4KQogKgogKiBAcGFyYW0ge2Zsb2F0fSB4IEEgcmVhbCBudW1iZXIgaW5wdXQKICogQHJldHVybnMge2Zsb2F0fSBBbiBhcHByb3hpbWF0aW9uIGZvciB0YW5oKHgpCiovCmZsb2F0IGN6bV9hcHByb3hpbWF0ZVRhbmgoZmxvYXQgeCkgewogICAgZmxvYXQgeDIgPSB4ICogeDsKICAgIHJldHVybiBtYXgoLTEuMCwgbWluKDEuMCwgeCAqICgyNy4wICsgeDIpIC8gKDI3LjAgKyA5LjAgKiB4MikpKTsKfQpgfSk7dmFyIEZRLGJRPVMoKCk9PntGUT1gLyoqCiAqIERldGVybWluZXMgaWYgdGhlIGZyYWdtZW50IGlzIGJhY2sgZmFjaW5nCiAqCiAqIEBuYW1lIGN6bV9iYWNrRmFjaW5nCiAqIEBnbHNsRnVuY3Rpb24gCiAqIAogKiBAcmV0dXJucyB7Ym9vbH0gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIGZyYWdtZW50IGlzIGJhY2sgZmFjaW5nOyBvdGhlcndpc2UsIDxjb2RlPmZhbHNlPC9jb2RlPi4KICovCmJvb2wgY3ptX2JhY2tGYWNpbmcoKQp7CiAgICAvLyAhZ2xfRnJvbnRGYWNpbmcgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIG9uIE1hYy9JbnRlbCBzbyB1c2UgdGhlIG1vcmUgdmVyYm9zZSBmb3JtIGluc3RlYWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vQ2VzaXVtR1MvY2VzaXVtL3B1bGwvODQ5NC4KICAgIHJldHVybiBnbF9Gcm9udEZhY2luZyA9PSBmYWxzZTsKfQpgfSk7dmFyIFlRLFZRPVMoKCk9PntZUT1gLyoqCiAqIEJyYW5jaGxlc3MgdGVybmFyeSBvcGVyYXRvciB0byBiZSB1c2VkIHdoZW4gaXQncyBpbmV4cGVuc2l2ZSB0byBleHBsaWNpdGx5CiAqIGV2YWx1YXRlIGJvdGggcG9zc2liaWxpdGllcyBmb3IgYSBmbG9hdCBleHByZXNzaW9uLgogKgogKiBAbmFtZSBjem1fYnJhbmNoRnJlZVRlcm5hcnkKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Jvb2x9IGNvbXBhcmlzb24gQSBjb21wYXJpc29uIHN0YXRlbWVudAogKiBAcGFyYW0ge2Zsb2F0fSBhIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgogKiBAcGFyYW0ge2Zsb2F0fSBiIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KICoKICogQHJldHVybnMge2Zsb2F0fSBlcXVpdmFsZW50IG9mIGNvbXBhcmlzb24gPyBhIDogYgogKi8KZmxvYXQgY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGJvb2wgY29tcGFyaXNvbiwgZmxvYXQgYSwgZmxvYXQgYikgewogICAgZmxvYXQgdXNlQSA9IGZsb2F0KGNvbXBhcmlzb24pOwogICAgcmV0dXJuIGEgKiB1c2VBICsgYiAqICgxLjAgLSB1c2VBKTsKfQoKLyoqCiAqIEJyYW5jaGxlc3MgdGVybmFyeSBvcGVyYXRvciB0byBiZSB1c2VkIHdoZW4gaXQncyBpbmV4cGVuc2l2ZSB0byBleHBsaWNpdGx5CiAqIGV2YWx1YXRlIGJvdGggcG9zc2liaWxpdGllcyBmb3IgYSB2ZWMyIGV4cHJlc3Npb24uCiAqCiAqIEBuYW1lIGN6bV9icmFuY2hGcmVlVGVybmFyeQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7Ym9vbH0gY29tcGFyaXNvbiBBIGNvbXBhcmlzb24gc3RhdGVtZW50CiAqIEBwYXJhbSB7dmVjMn0gYSBWYWx1ZSB0byByZXR1cm4gaWYgdGhlIGNvbXBhcmlzb24gaXMgdHJ1ZS4KICogQHBhcmFtIHt2ZWMyfSBiIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyBmYWxzZS4KICoKICogQHJldHVybnMge3ZlYzJ9IGVxdWl2YWxlbnQgb2YgY29tcGFyaXNvbiA/IGEgOiBiCiAqLwp2ZWMyIGN6bV9icmFuY2hGcmVlVGVybmFyeShib29sIGNvbXBhcmlzb24sIHZlYzIgYSwgdmVjMiBiKSB7CiAgICBmbG9hdCB1c2VBID0gZmxvYXQoY29tcGFyaXNvbik7CiAgICByZXR1cm4gYSAqIHVzZUEgKyBiICogKDEuMCAtIHVzZUEpOwp9CgovKioKICogQnJhbmNobGVzcyB0ZXJuYXJ5IG9wZXJhdG9yIHRvIGJlIHVzZWQgd2hlbiBpdCdzIGluZXhwZW5zaXZlIHRvIGV4cGxpY2l0bHkKICogZXZhbHVhdGUgYm90aCBwb3NzaWJpbGl0aWVzIGZvciBhIHZlYzMgZXhwcmVzc2lvbi4KICoKICogQG5hbWUgY3ptX2JyYW5jaEZyZWVUZXJuYXJ5CiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtib29sfSBjb21wYXJpc29uIEEgY29tcGFyaXNvbiBzdGF0ZW1lbnQKICogQHBhcmFtIHt2ZWMzfSBhIFZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29tcGFyaXNvbiBpcyB0cnVlLgogKiBAcGFyYW0ge3ZlYzN9IGIgVmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb21wYXJpc29uIGlzIGZhbHNlLgogKgogKiBAcmV0dXJucyB7dmVjM30gZXF1aXZhbGVudCBvZiBjb21wYXJpc29uID8gYSA6IGIKICovCnZlYzMgY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGJvb2wgY29tcGFyaXNvbiwgdmVjMyBhLCB2ZWMzIGIpIHsKICAgIGZsb2F0IHVzZUEgPSBmbG9hdChjb21wYXJpc29uKTsKICAgIHJldHVybiBhICogdXNlQSArIGIgKiAoMS4wIC0gdXNlQSk7Cn0KCi8qKgogKiBCcmFuY2hsZXNzIHRlcm5hcnkgb3BlcmF0b3IgdG8gYmUgdXNlZCB3aGVuIGl0J3MgaW5leHBlbnNpdmUgdG8gZXhwbGljaXRseQogKiBldmFsdWF0ZSBib3RoIHBvc3NpYmlsaXRpZXMgZm9yIGEgdmVjNCBleHByZXNzaW9uLgogKgogKiBAbmFtZSBjem1fYnJhbmNoRnJlZVRlcm5hcnkKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Jvb2x9IGNvbXBhcmlzb24gQSBjb21wYXJpc29uIHN0YXRlbWVudAogKiBAcGFyYW0ge3ZlYzN9IGEgVmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBjb21wYXJpc29uIGlzIHRydWUuCiAqIEBwYXJhbSB7dmVjM30gYiBWYWx1ZSB0byByZXR1cm4gaWYgdGhlIGNvbXBhcmlzb24gaXMgZmFsc2UuCiAqCiAqIEByZXR1cm5zIHt2ZWMzfSBlcXVpdmFsZW50IG9mIGNvbXBhcmlzb24gPyBhIDogYgogKi8KdmVjNCBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYm9vbCBjb21wYXJpc29uLCB2ZWM0IGEsIHZlYzQgYikgewogICAgZmxvYXQgdXNlQSA9IGZsb2F0KGNvbXBhcmlzb24pOwogICAgcmV0dXJuIGEgKiB1c2VBICsgYiAqICgxLjAgLSB1c2VBKTsKfQpgfSk7dmFyIFNRLE9RPVMoKCk9PntTUT1gCnZlYzQgY3ptX2Nhc2NhZGVDb2xvcih2ZWM0IHdlaWdodHMpCnsKICAgIHJldHVybiB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCkgKiB3ZWlnaHRzLnggKwogICAgICAgICAgIHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKSAqIHdlaWdodHMueSArCiAgICAgICAgICAgdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApICogd2VpZ2h0cy56ICsKICAgICAgICAgICB2ZWM0KDEuMCwgMC4wLCAxLjAsIDEuMCkgKiB3ZWlnaHRzLnc7Cn0KYH0pO3ZhciBCUSxHUT1TKCgpPT57QlE9YAp1bmlmb3JtIHZlYzQgc2hhZG93TWFwX2Nhc2NhZGVEaXN0YW5jZXM7CgpmbG9hdCBjem1fY2FzY2FkZURpc3RhbmNlKHZlYzQgd2VpZ2h0cykKewogICAgcmV0dXJuIGRvdChzaGFkb3dNYXBfY2FzY2FkZURpc3RhbmNlcywgd2VpZ2h0cyk7Cn0KYH0pO3ZhciBXUSxEUT1TKCgpPT57V1E9YAp1bmlmb3JtIG1hdDQgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1s0XTsKCm1hdDQgY3ptX2Nhc2NhZGVNYXRyaXgodmVjNCB3ZWlnaHRzKQp7CiAgICByZXR1cm4gc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1swXSAqIHdlaWdodHMueCArCiAgICAgICAgICAgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1sxXSAqIHdlaWdodHMueSArCiAgICAgICAgICAgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1syXSAqIHdlaWdodHMueiArCiAgICAgICAgICAgc2hhZG93TWFwX2Nhc2NhZGVNYXRyaWNlc1szXSAqIHdlaWdodHMudzsKfQpgfSk7dmFyIFVRLE1RPVMoKCk9PntVUT1gCnVuaWZvcm0gdmVjNCBzaGFkb3dNYXBfY2FzY2FkZVNwbGl0c1syXTsKCnZlYzQgY3ptX2Nhc2NhZGVXZWlnaHRzKGZsb2F0IGRlcHRoRXllKQp7CiAgICAvLyBPbmUgY29tcG9uZW50IGlzIHNldCB0byAxLjAgYW5kIGFsbCBvdGhlcnMgc2V0IHRvIDAuMC4KICAgIHZlYzQgbmVhciA9IHN0ZXAoc2hhZG93TWFwX2Nhc2NhZGVTcGxpdHNbMF0sIHZlYzQoZGVwdGhFeWUpKTsKICAgIHZlYzQgZmFyID0gc3RlcChkZXB0aEV5ZSwgc2hhZG93TWFwX2Nhc2NhZGVTcGxpdHNbMV0pOwogICAgcmV0dXJuIG5lYXIgKiBmYXI7Cn0KYH0pO3ZhciBRUSxrUT1TKCgpPT57UVE9YGZsb2F0IGdldFNpZ25lZERpc3RhbmNlKHZlYzIgdXYsIGhpZ2hwIHNhbXBsZXIyRCBjbGlwcGluZ0Rpc3RhbmNlKSB7CiAgICBmbG9hdCBzaWduZWREaXN0YW5jZSA9IHRleHR1cmUoY2xpcHBpbmdEaXN0YW5jZSwgdXYpLnI7CiAgICByZXR1cm4gKHNpZ25lZERpc3RhbmNlIC0gMC41KSAqIDIuMDsKfQoKdm9pZCBjem1fY2xpcFBvbHlnb25zKGhpZ2hwIHNhbXBsZXIyRCBjbGlwcGluZ0Rpc3RhbmNlLCBpbnQgZXh0ZW50c0xlbmd0aCwgdmVjMiBjbGlwcGluZ1Bvc2l0aW9uLCBpbnQgcmVnaW9uSW5kZXgpIHsKICAgIC8vIFBvc2l0aW9uIGlzIGNvbXBsZXRlbHkgb3V0c2lkZSBvZiBwb2x5Z29ucyBib3VuZHMKICAgIHZlYzIgcmVjdFV2ID0gY2xpcHBpbmdQb3NpdGlvbjsKICAgIGlmIChyZWdpb25JbmRleCA8IDAgfHwgcmVjdFV2LnggPD0gMC4wIHx8IHJlY3RVdi55IDw9IDAuMCB8fCByZWN0VXYueCA+PSAxLjAgfHwgcmVjdFV2LnkgPj0gMS4wKSB7CiAgICAgICAgI2lmZGVmIENMSVBQSU5HX0lOVkVSU0UgCiAgICAgICAgICAgIGRpc2NhcmQ7CiAgICAgICAgI2VuZGlmCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZlYzIgY2xpcHBpbmdEaXN0YW5jZVRleHR1cmVEaW1lbnNpb25zID0gdmVjMih0ZXh0dXJlU2l6ZShjbGlwcGluZ0Rpc3RhbmNlLCAwKSk7CiAgICB2ZWMyIHNhbXBsZU9mZnNldCA9IG1heCgxLjAgLyBjbGlwcGluZ0Rpc3RhbmNlVGV4dHVyZURpbWVuc2lvbnMsIHZlYzIoMC4wMDUpKTsKICAgIGZsb2F0IGRpbWVuc2lvbiA9IGZsb2F0KGV4dGVudHNMZW5ndGgpOwogICAgaWYgKGV4dGVudHNMZW5ndGggPiAyKSB7CiAgICAgICBkaW1lbnNpb24gPSBjZWlsKGxvZzIoZmxvYXQoZXh0ZW50c0xlbmd0aCkpKTsKICAgIH0KCiAgICB2ZWMyIHRleHR1cmVPZmZzZXQgPSB2ZWMyKG1vZChmbG9hdChyZWdpb25JbmRleCksIGRpbWVuc2lvbiksIGZsb29yKGZsb2F0KHJlZ2lvbkluZGV4KSAvIGRpbWVuc2lvbikpIC8gZGltZW5zaW9uOwogICAgdmVjMiB1diA9IHRleHR1cmVPZmZzZXQgKyByZWN0VXYgLyBkaW1lbnNpb247CgogICAgZmxvYXQgc2lnbmVkRGlzdGFuY2UgPSBnZXRTaWduZWREaXN0YW5jZSh1diwgY2xpcHBpbmdEaXN0YW5jZSk7CgogICAgI2lmZGVmIENMSVBQSU5HX0lOVkVSU0UKICAgIGlmIChzaWduZWREaXN0YW5jZSA+IDAuMCkgIHsKICAgICAgICBkaXNjYXJkOwogICAgfQogICAgI2Vsc2UKICAgIGlmIChzaWduZWREaXN0YW5jZSA8IDAuMCkgIHsKICAgICAgICBkaXNjYXJkOwogICAgfQogICAgI2VuZGlmCn0KYH0pO3ZhciBMUSx5UT1TKCgpPT57TFE9YC8qKgogKiBET0NfVEJBCiAqCiAqIEBuYW1lIGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaAogKiBAZ2xzbEZ1bmN0aW9uCiAqLwp2ZWM0IGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaCh2ZWM0IHBvc2l0aW9uMkQsIHZlYzQgcG9zaXRpb24zRCwgZmxvYXQgdGltZSkKewogICAgLy8gSnVzdCBsaW5lYXIgZm9yIG5vdy4KICAgIHZlYzMgcCA9IG1peChwb3NpdGlvbjJELnh5eiwgcG9zaXRpb24zRC54eXosIHRpbWUpOwogICAgcmV0dXJuIHZlYzQocCwgMS4wKTsKfQpgfSk7dmFyIHdRLHhRPVMoKCk9Pnt3UT1gLyoqCiAqIENvbXB1dGUgdGhlIGF0bW9zcGhlcmUgY29sb3IsIGFwcGx5aW5nIFJheWxlaWdoIGFuZCBNaWUgc2NhdHRlcmluZy4gVGhpcwogKiBidWlsdGluIHVzZXMgYXV0b21hdGljIHVuaWZvcm1zIHNvIHRoZSBhdG1vcGhlcmUgc2V0dGluZ3MgYXJlIHN5bmNlZCB3aXRoIHRoZQogKiBzdGF0ZSBvZiB0aGUgU2NlbmUsIGV2ZW4gaW4gb3RoZXIgY29udGV4dHMgbGlrZSBNb2RlbC4KICoKICogQG5hbWUgY3ptX2NvbXB1dGVBdG1vc3BoZXJlQ29sb3IKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IHBvc2l0aW9uV0MgUG9zaXRpb24gb2YgdGhlIGZyYWdtZW50IGluIHdvcmxkIGNvb3JkcyAobG93IHByZWNpc2lvbikKICogQHBhcmFtIHt2ZWMzfSBsaWdodERpcmVjdGlvbiBMaWdodCBkaXJlY3Rpb24gZnJvbSB0aGUgc3VuIG9yIG90aGVyIGxpZ2h0IHNvdXJjZS4KICogQHBhcmFtIHt2ZWMzfSByYXlsZWlnaENvbG9yIFRoZSBSYXlsZWlnaCBzY2F0dGVyaW5nIGNvbG9yIGNvbXB1dGVkIGJ5IGEgc2NhdHRlcmluZyBmdW5jdGlvbgogKiBAcGFyYW0ge3ZlYzN9IG1pZUNvbG9yIFRoZSBNaWUgc2NhdHRlcmluZyBjb2xvciBjb21wdXRlZCBieSBhIHNjYXR0ZXJpbmcgZnVuY3Rpb24KICogQHBhcmFtIHtmbG9hdH0gb3BhY2l0eSBUaGUgb3BhY2l0eSBjb21wdXRlZCBieSBhIHNjYXR0ZXJpbmcgZnVuY3Rpb24uCiAqLwp2ZWM0IGN6bV9jb21wdXRlQXRtb3NwaGVyZUNvbG9yKAogICAgdmVjMyBwb3NpdGlvbldDLAogICAgdmVjMyBsaWdodERpcmVjdGlvbiwKICAgIHZlYzMgcmF5bGVpZ2hDb2xvciwKICAgIHZlYzMgbWllQ29sb3IsCiAgICBmbG9hdCBvcGFjaXR5CikgewogICAgLy8gU2V0dXAgdGhlIHByaW1hcnkgcmF5OiBmcm9tIHRoZSBjYW1lcmEgcG9zaXRpb24gdG8gdGhlIHZlcnRleCBwb3NpdGlvbi4KICAgIHZlYzMgY2FtZXJhVG9Qb3NpdGlvbldDID0gcG9zaXRpb25XQyAtIGN6bV92aWV3ZXJQb3NpdGlvbldDOwogICAgdmVjMyBjYW1lcmFUb1Bvc2l0aW9uV0NEaXJlY3Rpb24gPSBub3JtYWxpemUoY2FtZXJhVG9Qb3NpdGlvbldDKTsKCiAgICBmbG9hdCBjb3NBbmdsZSA9IGRvdChjYW1lcmFUb1Bvc2l0aW9uV0NEaXJlY3Rpb24sIGxpZ2h0RGlyZWN0aW9uKTsKICAgIGZsb2F0IGNvc0FuZ2xlU3EgPSBjb3NBbmdsZSAqIGNvc0FuZ2xlOwoKICAgIGZsb2F0IEcgPSBjem1fYXRtb3NwaGVyZU1pZUFuaXNvdHJvcHk7CiAgICBmbG9hdCBHU3EgPSBHICogRzsKCiAgICAvLyBUaGUgUmF5bGVpZ2ggcGhhc2UgZnVuY3Rpb24uCiAgICBmbG9hdCByYXlsZWlnaFBoYXNlID0gMy4wIC8gKDUwLjI2NTQ4MjQ1NzQpICogKDEuMCArIGNvc0FuZ2xlU3EpOwogICAgLy8gVGhlIE1pZSBwaGFzZSBmdW5jdGlvbi4KICAgIGZsb2F0IG1pZVBoYXNlID0gMy4wIC8gKDI1LjEzMjc0MTIyODcpICogKCgxLjAgLSBHU3EpICogKGNvc0FuZ2xlU3EgKyAxLjApKSAvIChwb3coMS4wICsgR1NxIC0gMi4wICogY29zQW5nbGUgKiBHLCAxLjUpICogKDIuMCArIEdTcSkpOwoKICAgIC8vIFRoZSBmaW5hbCBjb2xvciBpcyBnZW5lcmF0ZWQgYnkgY29tYmluaW5nIHRoZSBlZmZlY3RzIG9mIHRoZSBSYXlsZWlnaCBhbmQgTWllIHNjYXR0ZXJpbmcuCiAgICB2ZWMzIHJheWxlaWdoID0gcmF5bGVpZ2hQaGFzZSAqIHJheWxlaWdoQ29sb3I7CiAgICB2ZWMzIG1pZSA9IG1pZVBoYXNlICogbWllQ29sb3I7CgogICAgdmVjMyBjb2xvciA9IChyYXlsZWlnaCArIG1pZSkgKiBjem1fYXRtb3NwaGVyZUxpZ2h0SW50ZW5zaXR5OwoKICAgIHJldHVybiB2ZWM0KGNvbG9yLCBvcGFjaXR5KTsKfQpgfSk7dmFyIFBRLEpRPVMoKCk9PntQUT1gLyoqCiAqIENvbXB1dGUgYXRtb3NwaGVyZSBzY2F0dGVyaW5nIGZvciB0aGUgZ3JvdW5kIGF0bW9zcGhlcmUgYW5kIGZvZy4gVGhpcyBtZXRob2QKICogdXNlcyBhdXRvbWF0aWMgdW5pZm9ybXMgc28gaXQgaXMgYWx3YXlzIHN5bmNlZCB3aXRoIHRoZSBzY2VuZSBzZXR0aW5ncy4KICoKICogQG5hbWUgY3ptX2NvbXB1dGVHcm91bmRBdG1vc3BoZXJlU2NhdHRlcmluZwogKiBAZ2xzbGZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25XQyBUaGUgcG9zaXRpb24gb2YgdGhlIGZyYWdtZW50IGluIHdvcmxkIGNvb3JkaW5hdGVzLgogKiBAcGFyYW0ge3ZlYzN9IGxpZ2h0RGlyZWN0aW9uIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxpZ2h0IHRvIGNhbGN1bGF0ZSB0aGUgc2NhdHRlcmluZyBmcm9tLgogKiBAcGFyYW0ge3ZlYzN9IHJheWxlaWdoQ29sb3IgVGhlIHZhcmlhYmxlIHRoZSBSYXlsZWlnaCBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHt2ZWMzfSBtaWVDb2xvciBUaGUgdmFyaWFibGUgdGhlIE1pZSBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHtmbG9hdH0gb3BhY2l0eSBUaGUgdmFyaWFibGUgdGhlIHRyYW5zbWl0dGFuY2Ugd2lsbCBiZSB3cml0dGVuIHRvLgogKi8Kdm9pZCBjem1fY29tcHV0ZUdyb3VuZEF0bW9zcGhlcmVTY2F0dGVyaW5nKHZlYzMgcG9zaXRpb25XQywgdmVjMyBsaWdodERpcmVjdGlvbiwgb3V0IHZlYzMgcmF5bGVpZ2hDb2xvciwgb3V0IHZlYzMgbWllQ29sb3IsIG91dCBmbG9hdCBvcGFjaXR5KSB7CiAgICB2ZWMzIGNhbWVyYVRvUG9zaXRpb25XQyA9IHBvc2l0aW9uV0MgLSBjem1fdmlld2VyUG9zaXRpb25XQzsKICAgIHZlYzMgY2FtZXJhVG9Qb3NpdGlvbldDRGlyZWN0aW9uID0gbm9ybWFsaXplKGNhbWVyYVRvUG9zaXRpb25XQyk7CiAgICBjem1fcmF5IHByaW1hcnlSYXkgPSBjem1fcmF5KGN6bV92aWV3ZXJQb3NpdGlvbldDLCBjYW1lcmFUb1Bvc2l0aW9uV0NEaXJlY3Rpb24pOwoKICAgIGZsb2F0IGF0bW9zcGhlcmVJbm5lclJhZGl1cyA9IGxlbmd0aChwb3NpdGlvbldDKTsKCiAgICBjem1fY29tcHV0ZVNjYXR0ZXJpbmcoCiAgICAgICAgcHJpbWFyeVJheSwKICAgICAgICBsZW5ndGgoY2FtZXJhVG9Qb3NpdGlvbldDKSwKICAgICAgICBsaWdodERpcmVjdGlvbiwKICAgICAgICBhdG1vc3BoZXJlSW5uZXJSYWRpdXMsCiAgICAgICAgcmF5bGVpZ2hDb2xvciwKICAgICAgICBtaWVDb2xvciwKICAgICAgICBvcGFjaXR5CiAgICApOwp9CmB9KTt2YXIgalEsSFE9UygoKT0+e2pRPWAvKioKICogUmV0dXJucyBhIHBvc2l0aW9uIGluIG1vZGVsIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIGV5ZSB0YWtpbmcgaW50bwogKiBhY2NvdW50IHRoZSBjdXJyZW50IHNjZW5lIG1vZGU6IDNELCAyRCwgb3IgQ29sdW1idXMgdmlldy4KICogPHA+CiAqIFRoaXMgdXNlcyBzdGFuZGFyZCBwb3NpdGlvbiBhdHRyaWJ1dGVzLCA8Y29kZT5wb3NpdGlvbjNESGlnaDwvY29kZT4sIAogKiA8Y29kZT5wb3NpdGlvbjNETG93PC9jb2RlPiwgPGNvZGU+cG9zaXRpb24yREhpZ2g8L2NvZGU+LCBhbmQgPGNvZGU+cG9zaXRpb24yRExvdzwvY29kZT4sIAogKiBhbmQgc2hvdWxkIGJlIHVzZWQgd2hlbiB3cml0aW5nIGEgdmVydGV4IHNoYWRlciBmb3IgYW4ge0BsaW5rIEFwcGVhcmFuY2V9LgogKiA8L3A+CiAqCiAqIEBuYW1lIGN6bV9jb21wdXRlUG9zaXRpb24KICogQGdsc2xGdW5jdGlvbgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGV5ZS4KICoKICogQGV4YW1wbGUKICogdmVjNCBwID0gY3ptX2NvbXB1dGVQb3NpdGlvbigpOwogKiB2X3Bvc2l0aW9uRUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwKS54eXo7CiAqIGdsX1Bvc2l0aW9uID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcDsKICoKICogQHNlZSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZQogKi8KdmVjNCBjem1fY29tcHV0ZVBvc2l0aW9uKCk7CmB9KTt2YXIgdlEselE9UygoKT0+e3ZRPWAvKioKICogVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgY29sb3JzIGNvbnRyaWJ1dGVkIGJ5IFJheWxpZWdoIGFuZCBNaWUgc2NhdHRlcmluZyBvbiBhIGdpdmVuIHJheSwgYXMgd2VsbCBhcwogKiB0aGUgdHJhbnNtaXR0YW5jZSB2YWx1ZSBmb3IgdGhlIHJheS4gVGhpcyBmdW5jdGlvbiB1c2VzIGF1dG9tYXRpYyB1bmlmb3JtcwogKiBzbyB0aGUgYXRtb3NwaGVyZSBzZXR0aW5ncyBhcmUgYWx3YXlzIHN5bmNlZCB3aXRoIHRoZSBjdXJyZW50IHNjZW5lLgogKgogKiBAbmFtZSBjem1fY29tcHV0ZVNjYXR0ZXJpbmcKICogQGdsc2xmdW5jdGlvbgogKgogKiBAcGFyYW0ge2N6bV9yYXl9IHByaW1hcnlSYXkgVGhlIHJheSBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIHBvc2l0aW9uLgogKiBAcGFyYW0ge2Zsb2F0fSBwcmltYXJ5UmF5TGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHByaW1hcnkgcmF5LgogKiBAcGFyYW0ge3ZlYzN9IGxpZ2h0RGlyZWN0aW9uIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxpZ2h0IHRvIGNhbGN1bGF0ZSB0aGUgc2NhdHRlcmluZyBmcm9tLgogKiBAcGFyYW0ge3ZlYzN9IHJheWxlaWdoQ29sb3IgVGhlIHZhcmlhYmxlIHRoZSBSYXlsZWlnaCBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHt2ZWMzfSBtaWVDb2xvciBUaGUgdmFyaWFibGUgdGhlIE1pZSBzY2F0dGVyaW5nIHdpbGwgYmUgd3JpdHRlbiB0by4KICogQHBhcmFtIHtmbG9hdH0gb3BhY2l0eSBUaGUgdmFyaWFibGUgdGhlIHRyYW5zbWl0dGFuY2Ugd2lsbCBiZSB3cml0dGVuIHRvLgogKi8Kdm9pZCBjem1fY29tcHV0ZVNjYXR0ZXJpbmcoCiAgICBjem1fcmF5IHByaW1hcnlSYXksCiAgICBmbG9hdCBwcmltYXJ5UmF5TGVuZ3RoLAogICAgdmVjMyBsaWdodERpcmVjdGlvbiwKICAgIGZsb2F0IGF0bW9zcGhlcmVJbm5lclJhZGl1cywKICAgIG91dCB2ZWMzIHJheWxlaWdoQ29sb3IsCiAgICBvdXQgdmVjMyBtaWVDb2xvciwKICAgIG91dCBmbG9hdCBvcGFjaXR5CikgewogICAgY29uc3QgZmxvYXQgQVRNT1NQSEVSRV9USElDS05FU1MgPSAxMTFlMzsgLy8gVGhlIHRoaWNrbmVzcyBvZiB0aGUgYXRtb3NwaGVyZSBpbiBtZXRlcnMuCiAgICBjb25zdCBpbnQgUFJJTUFSWV9TVEVQU19NQVggPSAxNjsgLy8gTWF4aW11bSBudW1iZXIgb2YgdGltZXMgdGhlIHJheSBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIHdvcmxkIHBvc2l0aW9uIChwcmltYXJ5IHJheSkgaXMgc2FtcGxlZC4KICAgIGNvbnN0IGludCBMSUdIVF9TVEVQU19NQVggPSA0OyAvLyBNYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgbGlnaHQgaXMgc2FtcGxlZCBmcm9tIHRoZSBsaWdodCBzb3VyY2UncyBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgYXRtb3NwaGVyZSB0byBhIHNhbXBsZSBwb3NpdGlvbiBvbiB0aGUgcHJpbWFyeSByYXkuCgogICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBzY2F0dGVyaW5nIGFtb3VudHMgdG8gMC4KICAgIHJheWxlaWdoQ29sb3IgPSB2ZWMzKDAuMCk7CiAgICBtaWVDb2xvciA9IHZlYzMoMC4wKTsKICAgIG9wYWNpdHkgPSAwLjA7CgogICAgZmxvYXQgYXRtb3NwaGVyZU91dGVyUmFkaXVzID0gYXRtb3NwaGVyZUlubmVyUmFkaXVzICsgQVRNT1NQSEVSRV9USElDS05FU1M7CgogICAgdmVjMyBvcmlnaW4gPSB2ZWMzKDAuMCk7CgogICAgLy8gQ2FsY3VsYXRlIGludGVyc2VjdGlvbiBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIG91dGVyIHJpbmcgb2YgdGhlIGF0bW9zcGhlcmUuCiAgICBjem1fcmF5U2VnbWVudCBwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdCA9IGN6bV9yYXlTcGhlcmVJbnRlcnNlY3Rpb25JbnRlcnZhbChwcmltYXJ5UmF5LCBvcmlnaW4sIGF0bW9zcGhlcmVPdXRlclJhZGl1cyk7CgogICAgLy8gUmV0dXJuIGVtcHR5IGNvbG9ycyBpZiBubyBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgYXRtb3NwaGVyZSBnZW9tZXRyeS4KICAgIGlmIChwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdCA9PSBjem1fZW1wdHlSYXlTZWdtZW50KSB7CiAgICAgICAgcmF5bGVpZ2hDb2xvciA9IHZlYzMoMS4wLCAwLjAsIDEuMCk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFRvIGRlYWwgd2l0aCBzbWFsbGVyIHZhbHVlcyBvZiBQUklNQVJZX1NURVBTIChlLmcuIDQpCiAgICAvLyB3ZSBpbXBsZW1lbnQgYSBzcGxpdCBzdHJhdGVneTogc2t5IG9yIGhvcml6b24uCiAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgaW5zdGVhZCBvZiBhIGlmL2Vsc2UgYnJhbmNoCiAgICAvLyBhIHNvZnQgY2hvaWNlIGlzIGltcGxlbWVudGVkIHRocm91Z2ggYSB3ZWlnaHQgMC4wIDw9IHdfc3RvcF9ndF9scHJsIDw9IDEuMAogICAgZmxvYXQgeCA9IDFlLTcgKiBwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdC5zdG9wIC8gbGVuZ3RoKHByaW1hcnlSYXlMZW5ndGgpOwogICAgLy8gVmFsdWUgY2xvc2UgdG8gMC4wOiBjbG9zZSB0byB0aGUgaG9yaXpvbgogICAgLy8gVmFsdWUgY2xvc2UgdG8gMS4wOiBhYm92ZSBpbiB0aGUgc2t5CiAgICBmbG9hdCB3X3N0b3BfZ3RfbHBybCA9IDAuNSAqICgxLjAgKyBjem1fYXBwcm94aW1hdGVUYW5oKHgpKTsKCiAgICAvLyBUaGUgcmF5IHNob3VsZCBzdGFydCBmcm9tIHRoZSBmaXJzdCBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgb3V0ZXIgYXRtb3BzaGVyZSwgb3IgZnJvbSB0aGUgY2FtZXJhIHBvc2l0aW9uLCBpZiBpdCBpcyBpbnNpZGUgdGhlIGF0bW9zcGhlcmUuCiAgICBmbG9hdCBzdGFydF8wID0gcHJpbWFyeVJheUF0bW9zcGhlcmVJbnRlcnNlY3Quc3RhcnQ7CiAgICBwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdC5zdGFydCA9IG1heChwcmltYXJ5UmF5QXRtb3NwaGVyZUludGVyc2VjdC5zdGFydCwgMC4wKTsKICAgIC8vIFRoZSByYXkgc2hvdWxkIGVuZCBhdCB0aGUgZXhpdCBmcm9tIHRoZSBhdG1vc3BoZXJlIG9yIGF0IHRoZSBkaXN0YW5jZSB0byB0aGUgdmVydGV4LCB3aGljaGV2ZXIgaXMgc21hbGxlci4KICAgIHByaW1hcnlSYXlBdG1vc3BoZXJlSW50ZXJzZWN0LnN0b3AgPSBtaW4ocHJpbWFyeVJheUF0bW9zcGhlcmVJbnRlcnNlY3Quc3RvcCwgbGVuZ3RoKHByaW1hcnlSYXlMZW5ndGgpKTsKCiAgICAvLyBGb3IgdGhlIG51bWJlciBvZiByYXkgc3RlcHMsIGRpc3Rpbmd1aXNoIGluc2lkZSBvciBvdXRzaWRlIGF0bW9zcGhlcmUgKG91dGVyIHNwYWNlKQogICAgLy8gKDEpIGZyb20gb3V0ZXIgc3BhY2Ugd2UgaGF2ZSB0byB1c2UgbW9yZSByYXkgc3RlcHMgdG8gZ2V0IGEgcmVhbGlzdGljIHJlbmRlcmluZwogICAgLy8gKDIpIHdpdGhpbiBhdG1vc3BoZXJlIHdlIG5lZWQgZmV3ZXIgc3RlcHMgZm9yIGZhc3RlciByZW5kZXJpbmcKICAgIGZsb2F0IHhfb19hID0gc3RhcnRfMCAtIEFUTU9TUEhFUkVfVEhJQ0tORVNTOyAvLyBBVE1PU1BIRVJFX1RISUNLTkVTUyB1c2VkIGFzIGFuIGFkLWhvYyBjb25zdGFudCwgbm8gcHJlY2lzZSBtZWFuaW5nIGhlcmUsIG9ubHkgdGhlIG9yZGVyIG9mIG1hZ25pdHVkZSBtYXR0ZXJzCiAgICBmbG9hdCB3X2luc2lkZV9hdG1vc3BoZXJlID0gMS4wIC0gMC41ICogKDEuMCArIGN6bV9hcHByb3hpbWF0ZVRhbmgoeF9vX2EpKTsKICAgIGludCBQUklNQVJZX1NURVBTID0gUFJJTUFSWV9TVEVQU19NQVggLSBpbnQod19pbnNpZGVfYXRtb3NwaGVyZSAqIDEyLjApOyAvLyBOdW1iZXIgb2YgdGltZXMgdGhlIHJheSBmcm9tIHRoZSBjYW1lcmEgdG8gdGhlIHdvcmxkIHBvc2l0aW9uIChwcmltYXJ5IHJheSkgaXMgc2FtcGxlZC4KICAgIGludCBMSUdIVF9TVEVQUyA9IExJR0hUX1NURVBTX01BWCAtIGludCh3X2luc2lkZV9hdG1vc3BoZXJlICogMi4wKTsgLy8gTnVtYmVyIG9mIHRpbWVzIHRoZSBsaWdodCBpcyBzYW1wbGVkIGZyb20gdGhlIGxpZ2h0IHNvdXJjZSdzIGludGVyc2VjdGlvbiB3aXRoIHRoZSBhdG1vc3BoZXJlIHRvIGEgc2FtcGxlIHBvc2l0aW9uIG9uIHRoZSBwcmltYXJ5IHJheS4KCiAgICAvLyBTZXR1cCBmb3Igc2FtcGxpbmcgcG9zaXRpb25zIGFsb25nIHRoZSByYXkgLSBzdGFydGluZyBmcm9tIHRoZSBpbnRlcnNlY3Rpb24gd2l0aCB0aGUgb3V0ZXIgcmluZyBvZiB0aGUgYXRtb3NwaGVyZS4KICAgIGZsb2F0IHJheVBvc2l0aW9uTGVuZ3RoID0gcHJpbWFyeVJheUF0bW9zcGhlcmVJbnRlcnNlY3Quc3RhcnQ7CiAgICAvLyAoMSkgT3V0c2lkZSB0aGUgYXRtb3NwaGVyZTogY29uc3RhbnQgcmF5U3RlcExlbmd0aAogICAgLy8gKDIpIEluc2lkZSBhdG1vc3BoZXJlOiB2YXJpYWJsZSByYXlTdGVwTGVuZ3RoIHRvIGNvbXBlbnNhdGUgdGhlIHJvdWdoIHJlbmRlcmluZyBvZiB0aGUgc21hbGxlciBudW1iZXIgb2YgcmF5IHN0ZXBzCiAgICBmbG9hdCB0b3RhbFJheUxlbmd0aCA9IHByaW1hcnlSYXlBdG1vc3BoZXJlSW50ZXJzZWN0LnN0b3AgLSByYXlQb3NpdGlvbkxlbmd0aDsKICAgIGZsb2F0IHJheVN0ZXBMZW5ndGhJbmNyZWFzZSA9IHdfaW5zaWRlX2F0bW9zcGhlcmUgKiAoKDEuMCAtIHdfc3RvcF9ndF9scHJsKSAqIHRvdGFsUmF5TGVuZ3RoIC8gKGZsb2F0KFBSSU1BUllfU1RFUFMgKiAoUFJJTUFSWV9TVEVQUyArIDEpKSAvIDIuMCkpOwogICAgZmxvYXQgcmF5U3RlcExlbmd0aCA9IG1heCgxLjAgLSB3X2luc2lkZV9hdG1vc3BoZXJlLCB3X3N0b3BfZ3RfbHBybCkgKiB0b3RhbFJheUxlbmd0aCAvIG1heCg3LjAgKiB3X2luc2lkZV9hdG1vc3BoZXJlLCBmbG9hdChQUklNQVJZX1NURVBTKSk7CgogICAgdmVjMyByYXlsZWlnaEFjY3VtdWxhdGlvbiA9IHZlYzMoMC4wKTsKICAgIHZlYzMgbWllQWNjdW11bGF0aW9uID0gdmVjMygwLjApOwogICAgdmVjMiBvcHRpY2FsRGVwdGggPSB2ZWMyKDAuMCk7CiAgICB2ZWMyIGhlaWdodFNjYWxlID0gdmVjMihjem1fYXRtb3NwaGVyZVJheWxlaWdoU2NhbGVIZWlnaHQsIGN6bV9hdG1vc3BoZXJlTWllU2NhbGVIZWlnaHQpOwoKICAgIC8vIFNhbXBsZSBwb3NpdGlvbnMgb24gdGhlIHByaW1hcnkgcmF5LgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQUklNQVJZX1NURVBTX01BWDsgKytpKSB7CgogICAgICAgIC8vIFRoZSBsb29wIHNob3VsZCBiZTogZm9yIChpbnQgaSA9IDA7IGkgPCBQUklNQVJZX1NURVBTOyArK2kpIHsuLi59IGJ1dCBXZWJHTDEgY2Fubm90CiAgICAgICAgLy8gbG9vcCB3aXRoIG5vbi1jb25zdGFudCBjb25kaXRpb24sIHNvIGl0IGhhcyB0byBicmVhayBlYXJseSBpbnN0ZWFkCiAgICAgICAgaWYgKGkgPj0gUFJJTUFSWV9TVEVQUykgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIC8vIENhbGN1bGF0ZSBzYW1wbGUgcG9zaXRpb24gYWxvbmcgdmlld3BvaW50IHJheS4KICAgICAgICB2ZWMzIHNhbXBsZVBvc2l0aW9uID0gcHJpbWFyeVJheS5vcmlnaW4gKyBwcmltYXJ5UmF5LmRpcmVjdGlvbiAqIChyYXlQb3NpdGlvbkxlbmd0aCArIHJheVN0ZXBMZW5ndGgpOwoKICAgICAgICAvLyBDYWxjdWxhdGUgaGVpZ2h0IG9mIHNhbXBsZSBwb3NpdGlvbiBhYm92ZSBlbGxpcHNvaWQuCiAgICAgICAgZmxvYXQgc2FtcGxlSGVpZ2h0ID0gbGVuZ3RoKHNhbXBsZVBvc2l0aW9uKSAtIGF0bW9zcGhlcmVJbm5lclJhZGl1czsKCiAgICAgICAgLy8gQ2FsY3VsYXRlIGFuZCBhY2N1bXVsYXRlIGRlbnNpdHkgb2YgcGFydGljbGVzIGF0IHRoZSBzYW1wbGUgcG9zaXRpb24uCiAgICAgICAgdmVjMiBzYW1wbGVEZW5zaXR5ID0gZXhwKC1zYW1wbGVIZWlnaHQgLyBoZWlnaHRTY2FsZSkgKiByYXlTdGVwTGVuZ3RoOwogICAgICAgIG9wdGljYWxEZXB0aCArPSBzYW1wbGVEZW5zaXR5OwoKICAgICAgICAvLyBHZW5lcmF0ZSByYXkgZnJvbSB0aGUgc2FtcGxlIHBvc2l0aW9uIHNlZ21lbnQgdG8gdGhlIGxpZ2h0IHNvdXJjZSwgdXAgdG8gdGhlIG91dGVyIHJpbmcgb2YgdGhlIGF0bW9zcGhlcmUuCiAgICAgICAgY3ptX3JheSBsaWdodFJheSA9IGN6bV9yYXkoc2FtcGxlUG9zaXRpb24sIGxpZ2h0RGlyZWN0aW9uKTsKICAgICAgICBjem1fcmF5U2VnbWVudCBsaWdodFJheUF0bW9zcGhlcmVJbnRlcnNlY3QgPSBjem1fcmF5U3BoZXJlSW50ZXJzZWN0aW9uSW50ZXJ2YWwobGlnaHRSYXksIG9yaWdpbiwgYXRtb3NwaGVyZU91dGVyUmFkaXVzKTsKCiAgICAgICAgZmxvYXQgbGlnaHRTdGVwTGVuZ3RoID0gbGlnaHRSYXlBdG1vc3BoZXJlSW50ZXJzZWN0LnN0b3AgLyBmbG9hdChMSUdIVF9TVEVQUyk7CiAgICAgICAgZmxvYXQgbGlnaHRQb3NpdGlvbkxlbmd0aCA9IDAuMDsKCiAgICAgICAgdmVjMiBsaWdodE9wdGljYWxEZXB0aCA9IHZlYzIoMC4wKTsKCiAgICAgICAgLy8gU2FtcGxlIHBvc2l0aW9ucyBhbG9uZyB0aGUgbGlnaHQgcmF5LCB0byBhY2N1bXVsYXRlIGluY2lkZW5jZSBvZiBsaWdodCBvbiB0aGUgbGF0ZXN0IHNhbXBsZSBzZWdtZW50LgogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTElHSFRfU1RFUFNfTUFYOyArK2opIHsKCiAgICAgICAgICAgIC8vIFRoZSBsb29wIHNob3VsZCBiZTogZm9yIChpbnQgaiA9IDA7IGkgPCBMSUdIVF9TVEVQUzsgKytqKSB7Li4ufSBidXQgV2ViR0wxIGNhbm5vdAogICAgICAgICAgICAvLyBsb29wIHdpdGggbm9uLWNvbnN0YW50IGNvbmRpdGlvbiwgc28gaXQgaGFzIHRvIGJyZWFrIGVhcmx5IGluc3RlYWQKICAgICAgICAgICAgaWYgKGogPj0gTElHSFRfU1RFUFMpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDYWxjdWxhdGUgc2FtcGxlIHBvc2l0aW9uIGFsb25nIGxpZ2h0IHJheS4KICAgICAgICAgICAgdmVjMyBsaWdodFBvc2l0aW9uID0gc2FtcGxlUG9zaXRpb24gKyBsaWdodERpcmVjdGlvbiAqIChsaWdodFBvc2l0aW9uTGVuZ3RoICsgbGlnaHRTdGVwTGVuZ3RoICogMC41KTsKCiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBoZWlnaHQgb2YgdGhlIGxpZ2h0IHNhbXBsZSBwb3NpdGlvbiBhYm92ZSBlbGxpcHNvaWQuCiAgICAgICAgICAgIGZsb2F0IGxpZ2h0SGVpZ2h0ID0gbGVuZ3RoKGxpZ2h0UG9zaXRpb24pIC0gYXRtb3NwaGVyZUlubmVyUmFkaXVzOwoKICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGRlbnNpdHkgb2YgcGhvdG9ucyBhdCB0aGUgbGlnaHQgc2FtcGxlIHBvc2l0aW9uLgogICAgICAgICAgICBsaWdodE9wdGljYWxEZXB0aCArPSBleHAoLWxpZ2h0SGVpZ2h0IC8gaGVpZ2h0U2NhbGUpICogbGlnaHRTdGVwTGVuZ3RoOwoKICAgICAgICAgICAgLy8gSW5jcmVtZW50IGRpc3RhbmNlIG9uIGxpZ2h0IHJheS4KICAgICAgICAgICAgbGlnaHRQb3NpdGlvbkxlbmd0aCArPSBsaWdodFN0ZXBMZW5ndGg7CiAgICAgICAgfQoKICAgICAgICAvLyBDb21wdXRlIGF0dGVudWF0aW9uIHZpYSB0aGUgcHJpbWFyeSByYXkgYW5kIHRoZSBsaWdodCByYXkuCiAgICAgICAgdmVjMyBhdHRlbnVhdGlvbiA9IGV4cCgtKChjem1fYXRtb3NwaGVyZU1pZUNvZWZmaWNpZW50ICogKG9wdGljYWxEZXB0aC55ICsgbGlnaHRPcHRpY2FsRGVwdGgueSkpICsgKGN6bV9hdG1vc3BoZXJlUmF5bGVpZ2hDb2VmZmljaWVudCAqIChvcHRpY2FsRGVwdGgueCArIGxpZ2h0T3B0aWNhbERlcHRoLngpKSkpOwoKICAgICAgICAvLyBBY2N1bXVsYXRlIHRoZSBzY2F0dGVyaW5nLgogICAgICAgIHJheWxlaWdoQWNjdW11bGF0aW9uICs9IHNhbXBsZURlbnNpdHkueCAqIGF0dGVudWF0aW9uOwogICAgICAgIG1pZUFjY3VtdWxhdGlvbiArPSBzYW1wbGVEZW5zaXR5LnkgKiBhdHRlbnVhdGlvbjsKCiAgICAgICAgLy8gSW5jcmVtZW50IGRpc3RhbmNlIG9uIHByaW1hcnkgcmF5LgogICAgICAgIHJheVBvc2l0aW9uTGVuZ3RoICs9IChyYXlTdGVwTGVuZ3RoICs9IHJheVN0ZXBMZW5ndGhJbmNyZWFzZSk7CiAgICB9CgogICAgLy8gQ29tcHV0ZSB0aGUgc2NhdHRlcmluZyBhbW91bnQuCiAgICByYXlsZWlnaENvbG9yID0gY3ptX2F0bW9zcGhlcmVSYXlsZWlnaENvZWZmaWNpZW50ICogcmF5bGVpZ2hBY2N1bXVsYXRpb247CiAgICBtaWVDb2xvciA9IGN6bV9hdG1vc3BoZXJlTWllQ29lZmZpY2llbnQgKiBtaWVBY2N1bXVsYXRpb247CgogICAgLy8gQ29tcHV0ZSB0aGUgdHJhbnNtaXR0YW5jZSBpLmUuIGhvdyBtdWNoIGxpZ2h0IGlzIHBhc3NpbmcgdGhyb3VnaCB0aGUgYXRtb3NwaGVyZS4KICAgIG9wYWNpdHkgPSBsZW5ndGgoZXhwKC0oKGN6bV9hdG1vc3BoZXJlTWllQ29lZmZpY2llbnQgKiBvcHRpY2FsRGVwdGgueSkgKyAoY3ptX2F0bW9zcGhlcmVSYXlsZWlnaENvZWZmaWNpZW50ICogb3B0aWNhbERlcHRoLngpKSkpOwp9CmB9KTt2YXIgS1EsWFE9UygoKT0+e0tRPWAvKioKICogQHByaXZhdGUKICovCnZlYzIgY29yZGljKGZsb2F0IGFuZ2xlKQp7Ci8vIFNjYWxlIHRoZSB2ZWN0b3IgYnkgdGhlIGFwcHJvcHJpYXRlIGZhY3RvciBmb3IgdGhlIDI0IGl0ZXJhdGlvbnMgdG8gZm9sbG93LgogICAgdmVjMiB2ZWN0b3IgPSB2ZWMyKDYuMDcyNTI5MzUwMDg4ODI2N2UtMSwgMC4wKTsKLy8gSXRlcmF0aW9uIDEKICAgIGZsb2F0IHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAvLyAgIGZsb2F0IGZhY3RvciA9IHNlbnNlICogMS4wOyAgLy8gMl4tMAogICAgbWF0MiByb3RhdGlvbiA9IG1hdDIoMS4wLCBzZW5zZSwgLXNlbnNlLCAxLjApOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDcuODUzOTgxNjMzOTc0NDgyOGUtMTsgIC8vIGF0YW4oMl4tMCkKLy8gSXRlcmF0aW9uIDIKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmbG9hdCBmYWN0b3IgPSBzZW5zZSAqIDUuMGUtMTsgIC8vIDJeLTEKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDQuNjM2NDc2MDkwMDA4MDYwOWUtMTsgIC8vIGF0YW4oMl4tMSkKLy8gSXRlcmF0aW9uIDMKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDIuNWUtMTsgIC8vIDJeLTIKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDIuNDQ5Nzg2NjMxMjY4NjQxNGUtMTsgIC8vIGF0YW4oMl4tMikKLy8gSXRlcmF0aW9uIDQKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDEuMjVlLTE7ICAvLyAyXi0zCiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAxLjI0MzU0OTk0NTQ2NzYxNDRlLTE7ICAvLyBhdGFuKDJeLTMpCi8vIEl0ZXJhdGlvbiA1CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiA2LjI1ZS0yOyAgLy8gMl4tNAogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogNi4yNDE4ODA5OTk1OTU3MzUwZS0yOyAgLy8gYXRhbigyXi00KQovLyBJdGVyYXRpb24gNgogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMy4xMjVlLTI7ICAvLyAyXi01CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAzLjEyMzk4MzM0MzAyNjgyNzdlLTI7ICAvLyBhdGFuKDJeLTUpCi8vIEl0ZXJhdGlvbiA3CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAxLjU2MjVlLTI7ICAvLyAyXi02CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAxLjU2MjM3Mjg2MjA0NzY4MzFlLTI7ICAvLyBhdGFuKDJeLTYpCi8vIEl0ZXJhdGlvbiA4CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiA3LjgxMjVlLTM7ICAvLyAyXi03CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiA3LjgxMjM0MTA2MDEwMTExMTFlLTM7ICAvLyBhdGFuKDJeLTcpCi8vIEl0ZXJhdGlvbiA5CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAzLjkwNjI1ZS0zOyAgLy8gMl4tOAogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogMy45MDYyMzAxMzE5NjY5NzE4ZS0zOyAgLy8gYXRhbigyXi04KQovLyBJdGVyYXRpb24gMTAKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDEuOTUzMTI1ZS0zOyAgLy8gMl4tOQogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogMS45NTMxMjI1MTY0Nzg4MTg4ZS0zOyAgLy8gYXRhbigyXi05KQovLyBJdGVyYXRpb24gMTEKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDkuNzY1NjI1ZS00OyAgLy8gMl4tMTAKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDkuNzY1NjIxODk1NTkzMTk0NmUtNDsgIC8vIGF0YW4oMl4tMTApCi8vIEl0ZXJhdGlvbiAxMgogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNC44ODI4MTI1ZS00OyAgLy8gMl4tMTEKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDQuODgyODEyMTExOTQ4OTgyOWUtNDsgIC8vIGF0YW4oMl4tMTEpCi8vIEl0ZXJhdGlvbiAxMwogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMi40NDE0MDYyNWUtNDsgIC8vIDJeLTEyCiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiAyLjQ0MTQwNjIwMTQ5MzYxNzdlLTQ7ICAvLyBhdGFuKDJeLTEyKQovLyBJdGVyYXRpb24gMTQKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDEuMjIwNzAzMTI1ZS00OyAgLy8gMl4tMTMKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDEuMjIwNzAzMTE4OTM2NzAyMWUtNDsgIC8vIGF0YW4oMl4tMTMpCi8vIEl0ZXJhdGlvbiAxNQogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNi4xMDM1MTU2MjVlLTU7ICAvLyAyXi0xNAogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogNi4xMDM1MTU2MTc0MjA4NzczZS01OyAgLy8gYXRhbigyXi0xNCkKLy8gSXRlcmF0aW9uIDE2CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAzLjA1MTc1NzgxMjVlLTU7ICAvLyAyXi0xNQogICAgcm90YXRpb25bMF1bMV0gPSBmYWN0b3I7CiAgICByb3RhdGlvblsxXVswXSA9IC1mYWN0b3I7CiAgICB2ZWN0b3IgPSByb3RhdGlvbiAqIHZlY3RvcjsKICAgIGFuZ2xlIC09IHNlbnNlICogMy4wNTE3NTc4MTE1NTI2MDk2ZS01OyAgLy8gYXRhbigyXi0xNSkKLy8gSXRlcmF0aW9uIDE3CiAgICBzZW5zZSA9IChhbmdsZSA8IDAuMCkgPyAtMS4wIDogMS4wOwogICAgZmFjdG9yID0gc2Vuc2UgKiAxLjUyNTg3ODkwNjI1ZS01OyAgLy8gMl4tMTYKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDEuNTI1ODc4OTA2MTMxNTc2MmUtNTsgIC8vIGF0YW4oMl4tMTYpCi8vIEl0ZXJhdGlvbiAxOAogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNy42MjkzOTQ1MzEyNWUtNjsgIC8vIDJeLTE3CiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiA3LjYyOTM5NDUzMTEwMTk3MDBlLTY7ICAvLyBhdGFuKDJeLTE3KQovLyBJdGVyYXRpb24gMTkKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDMuODE0Njk3MjY1NjI1ZS02OyAgLy8gMl4tMTgKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDMuODE0Njk3MjY1NjA2NDk2MWUtNjsgIC8vIGF0YW4oMl4tMTgpCi8vIEl0ZXJhdGlvbiAyMAogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMS45MDczNDg2MzI4MTI1ZS02OyAgLy8gMl4tMTkKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDEuOTA3MzQ4NjMyODEwMTg3MGUtNjsgIC8vIGF0YW4oMl4tMTkpCi8vIEl0ZXJhdGlvbiAyMQogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogOS41MzY3NDMxNjQwNjI1ZS03OyAgLy8gMl4tMjAKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDkuNTM2NzQzMTY0MDU5NjA4NGUtNzsgIC8vIGF0YW4oMl4tMjApCi8vIEl0ZXJhdGlvbiAyMgogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogNC43NjgzNzE1ODIwMzEyNWUtNzsgIC8vIDJeLTIxCiAgICByb3RhdGlvblswXVsxXSA9IGZhY3RvcjsKICAgIHJvdGF0aW9uWzFdWzBdID0gLWZhY3RvcjsKICAgIHZlY3RvciA9IHJvdGF0aW9uICogdmVjdG9yOwogICAgYW5nbGUgLT0gc2Vuc2UgKiA0Ljc2ODM3MTU4MjAzMDg4ODRlLTc7ICAvLyBhdGFuKDJeLTIxKQovLyBJdGVyYXRpb24gMjMKICAgIHNlbnNlID0gKGFuZ2xlIDwgMC4wKSA/IC0xLjAgOiAxLjA7CiAgICBmYWN0b3IgPSBzZW5zZSAqIDIuMzg0MTg1NzkxMDE1NjI1ZS03OyAgLy8gMl4tMjIKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7CiAgICBhbmdsZSAtPSBzZW5zZSAqIDIuMzg0MTg1NzkxMDE1NTc5N2UtNzsgIC8vIGF0YW4oMl4tMjIpCi8vIEl0ZXJhdGlvbiAyNAogICAgc2Vuc2UgPSAoYW5nbGUgPCAwLjApID8gLTEuMCA6IDEuMDsKICAgIGZhY3RvciA9IHNlbnNlICogMS4xOTIwOTI4OTU1MDc4MTI1ZS03OyAgLy8gMl4tMjMKICAgIHJvdGF0aW9uWzBdWzFdID0gZmFjdG9yOwogICAgcm90YXRpb25bMV1bMF0gPSAtZmFjdG9yOwogICAgdmVjdG9yID0gcm90YXRpb24gKiB2ZWN0b3I7Ci8vICAgIGFuZ2xlIC09IHNlbnNlICogMS4xOTIwOTI4OTU1MDc4MDY4ZS03OyAgLy8gYXRhbigyXi0yMykKCiAgICByZXR1cm4gdmVjdG9yOwp9CgovKioKICogQ29tcHV0ZXMgdGhlIGNvc2luZSBhbmQgc2luZSBvZiB0aGUgcHJvdmlkZWQgYW5nbGUgdXNpbmcgdGhlIENPUkRJQyBhbGdvcml0aG0uCiAqCiAqIEBuYW1lIGN6bV9jb3NpbmVBbmRTaW5lCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtmbG9hdH0gYW5nbGUgVGhlIGFuZ2xlIGluIHJhZGlhbnMuCiAqCiAqIEByZXR1cm5zIHt2ZWMyfSBUaGUgcmVzdWx0aW5nIGNvc2luZSBvZiB0aGUgYW5nbGUgKGFzIHRoZSB4IGNvb3JkaW5hdGUpIGFuZCBzaW5lIG9mIHRoZSBhbmdsZSAoYXMgdGhlIHkgY29vcmRpbmF0ZSkuCiAqCiAqIEBleGFtcGxlCiAqIHZlYzIgdiA9IGN6bV9jb3NpbmVBbmRTaW5lKGN6bV9waU92ZXJTaXgpOwogKiBmbG9hdCBjb3NpbmUgPSB2Lng7CiAqIGZsb2F0IHNpbmUgPSB2Lnk7CiAqLwp2ZWMyIGN6bV9jb3NpbmVBbmRTaW5lKGZsb2F0IGFuZ2xlKQp7CiAgICBpZiAoYW5nbGUgPCAtY3ptX3BpT3ZlclR3byB8fCBhbmdsZSA+IGN6bV9waU92ZXJUd28pCiAgICB7CiAgICAgICAgaWYgKGFuZ2xlIDwgMC4wKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIC1jb3JkaWMoYW5nbGUgKyBjem1fcGkpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gLWNvcmRpYyhhbmdsZSAtIGN6bV9waSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHJldHVybiBjb3JkaWMoYW5nbGUpOwogICAgfQp9CmB9KTt2YXIgcVEsJFE9UygoKT0+e3FRPWAvKioKICogRGVjb21wcmVzc2VzIHRleHR1cmUgY29vcmRpbmF0ZXMgdGhhdCB3ZXJlIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGZsb2F0LgogKgogKiBAbmFtZSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGVuY29kZWQgVGhlIGNvbXByZXNzZWQgdGV4dHVyZSBjb29yZGluYXRlcy4KICogQHJldHVybnMge3ZlYzJ9IFRoZSBkZWNvbXByZXNzZWQgdGV4dHVyZSBjb29yZGluYXRlcy4KICovCiB2ZWMyIGN6bV9kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKGZsb2F0IGVuY29kZWQpCiB7CiAgICBmbG9hdCB0ZW1wID0gZW5jb2RlZCAvIDQwOTYuMDsKICAgIGZsb2F0IHhaZXJvVG80MDk1ID0gZmxvb3IodGVtcCk7CiAgICBmbG9hdCBzdHggPSB4WmVyb1RvNDA5NSAvIDQwOTUuMDsKICAgIGZsb2F0IHN0eSA9IChlbmNvZGVkIC0geFplcm9UbzQwOTUgKiA0MDk2LjApIC8gNDA5NS4wOwogICAgcmV0dXJuIHZlYzIoc3R4LCBzdHkpOwogfQpgfSk7dmFyIHQxLGUxPVMoKCk9Pnt0MT1gLyoqCiAqIEdldCBkZWZhdWx0IHBhcmFtZXRlcnMgZm9yIHBoeXNpY2FsbHkgYmFzZWQgcmVuZGVyaW5nLiBUaGVzZSBkZWZhdWx0cwogKiBkZXNjcmliZSBhIHJvdWdoIGRpZWxlY3RyaWMgKG5vbi1tZXRhbCkgc3VyZmFjZSAoZS5nLiByb3VnaCBwbGFzdGljKS4KICoKICogQHJldHVybiB7Y3ptX3BiclBhcmFtZXRlcnN9IERlZmF1bHQgcGFyYW1ldGVycyBmb3Ige0BsaW5rIGN6bV9wYnJMaWdodGluZ30KICovCmN6bV9wYnJQYXJhbWV0ZXJzIGN6bV9kZWZhdWx0UGJyTWF0ZXJpYWwoKQp7CiAgICBjem1fcGJyUGFyYW1ldGVycyByZXN1bHRzOwogICAgcmVzdWx0cy5kaWZmdXNlQ29sb3IgPSB2ZWMzKDEuMCk7CiAgICByZXN1bHRzLnJvdWdobmVzcyA9IDEuMDsKCiAgICBjb25zdCB2ZWMzIFJFRkxFQ1RBTkNFX0RJRUxFQ1RSSUMgPSB2ZWMzKDAuMDQpOwogICAgcmVzdWx0cy5mMCA9IFJFRkxFQ1RBTkNFX0RJRUxFQ1RSSUM7CiAgICByZXR1cm4gcmVzdWx0czsKfQpgfSk7dmFyIGkxLG4xPVMoKCk9PntpMT1gLy8gZW11bGF0ZWQgbm9wZXJzcGVjdGl2ZQojaWYgKF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX0VYVF9mcmFnX2RlcHRoKSkgJiYgIWRlZmluZWQoTE9HX0RFUFRIKQpvdXQgZmxvYXQgdl9XaW5kb3daOwojZW5kaWYKCi8qKgogKiBFbXVsYXRlcyBHTF9ERVBUSF9DTEFNUCwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBpbiBXZWJHTCAxIG9yIDIuCiAqIEdMX0RFUFRIX0NMQU1QIGNsYW1wcyBnZW9tZXRyeSB0aGF0IGlzIG91dHNpZGUgdGhlIG5lYXIgYW5kIGZhciBwbGFuZXMsIAogKiBjYXBwaW5nIHRoZSBzaGFkb3cgdm9sdW1lLiBNb3JlIGluZm9ybWF0aW9uIGhlcmU6IAogKiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9PcGVuR0wvZXh0ZW5zaW9ucy9BUkIvQVJCX2RlcHRoX2NsYW1wLnR4dC4KICoKICogV2hlbiBHTF9FWFRfZnJhZ19kZXB0aCBpcyBhdmFpbGFibGUgd2UgZW11bGF0ZSBHTF9ERVBUSF9DTEFNUCBieSBlbnN1cmluZyAKICogbm8gZ2VvbWV0cnkgZ2V0cyBjbGlwcGVkIGJ5IHNldHRpbmcgdGhlIGNsaXAgc3BhY2UgeiB2YWx1ZSB0byAwLjAgYW5kIHRoZW4KICogc2VuZGluZyB0aGUgdW5hbHRlcmVkIHNjcmVlbiBzcGFjZSB6IHZhbHVlICh1c2luZyBlbXVsYXRlZCBub3BlcnNwZWN0aXZlCiAqIGludGVycG9sYXRpb24pIHRvIHRoZSBmcmFnIHNoYWRlciB3aGVyZSBpdCBpcyBjbGFtcGVkIHRvIFswLDFdIGFuZCB0aGVuCiAqIHdyaXR0ZW4gd2l0aCBnbF9GcmFnRGVwdGggKHNlZSBjem1fd3JpdGVEZXB0aENsYW1wKS4gVGhpcyB0ZWNobmlxdWUgaXMgYmFzZWQgb246CiAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU5NjA3NTcvaG93LXRvLWVtdWxhdGUtZ2wtZGVwdGgtY2xhbXAtbnYuCiAqCiAqIFdoZW4gR0xfRVhUX2ZyYWdfZGVwdGggaXMgbm90IGF2YWlsYWJsZSwgd2hpY2ggaXMgdGhlIGNhc2Ugb24gc29tZSBtb2JpbGUgCiAqIGRldmljZXMsIHdlIG11c3QgYXR0ZW1wdCB0byBmaXggdGhpcyBvbmx5IGluIHRoZSB2ZXJ0ZXggc2hhZGVyLiAKICogVGhlIGFwcHJvYWNoIGlzIHRvIGNsYW1wIHRoZSB6IHZhbHVlIHRvIHRoZSBmYXIgcGxhbmUsIHdoaWNoIGNsb3NlcyB0aGUgCiAqIHNoYWRvdyB2b2x1bWUgYnV0IGFsc28gZGlzdG9ydHMgdGhlIGdlb21ldHJ5LCBzbyB0aGVyZSBjYW4gc3RpbGwgYmUgYXJ0aWZhY3RzCiAqIG9uIGZydXN0dW0gc2VhbXMuCiAqCiAqIEBuYW1lIGN6bV9kZXB0aENsYW1wCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBjb29yZHMgVGhlIHZlcnRleCBpbiBjbGlwIGNvb3JkaW5hdGVzLgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIG1vZGlmaWVkIHZlcnRleC4KICoKICogQGV4YW1wbGUKICogZ2xfUG9zaXRpb24gPSBjem1fZGVwdGhDbGFtcChjem1fbW9kZWxWaWV3UHJvamVjdGlvbiAqIHZlYzQocG9zaXRpb24sIDEuMCkpOwogKgogKiBAc2VlIGN6bV93cml0ZURlcHRoQ2xhbXAKICovCnZlYzQgY3ptX2RlcHRoQ2xhbXAodmVjNCBjb29yZHMpCnsKI2lmbmRlZiBMT0dfREVQVEgKI2lmIF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX0VYVF9mcmFnX2RlcHRoKQogICAgdl9XaW5kb3daID0gKDAuNSAqIChjb29yZHMueiAvIGNvb3Jkcy53KSArIDAuNSkgKiBjb29yZHMudzsKICAgIGNvb3Jkcy56ID0gMC4wOwojZWxzZQogICAgY29vcmRzLnogPSBtaW4oY29vcmRzLnosIGNvb3Jkcy53KTsKI2VuZGlmCiNlbmRpZgogICAgcmV0dXJuIGNvb3JkczsKfQpgfSk7dmFyIHMxLG8xPVMoKCk9PntzMT1gLyoqCiAqIENvbXB1dGVzIGEgM3gzIHJvdGF0aW9uIG1hdHJpeCB0aGF0IHRyYW5zZm9ybXMgdmVjdG9ycyBmcm9tIGFuIGVsbGlwc29pZCdzIGVhc3Qtbm9ydGgtdXAgY29vcmRpbmF0ZSBzeXN0ZW0gCiAqIHRvIGV5ZSBjb29yZGluYXRlcy4gIEluIGVhc3Qtbm9ydGgtdXAgY29vcmRpbmF0ZXMsIHggcG9pbnRzIGVhc3QsIHkgcG9pbnRzIG5vcnRoLCBhbmQgeiBwb2ludHMgYWxvbmcgdGhlIAogKiBzdXJmYWNlIG5vcm1hbC4gIEVhc3Qtbm9ydGgtdXAgY2FuIGJlIHVzZWQgYXMgYW4gZWxsaXBzb2lkJ3MgdGFuZ2VudCBzcGFjZSBmb3Igb3BlcmF0aW9ucyBzdWNoIGFzIGJ1bXAgbWFwcGluZy4KICogPGJyIC8+PGJyIC8+CiAqIFRoZSBlbGxpcHNvaWQgaXMgYXNzdW1lZCB0byBiZSBjZW50ZXJlZCBhdCB0aGUgbW9kZWwgY29vcmRpbmF0ZSdzIG9yaWdpbi4KICoKICogQG5hbWUgY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25NQyBUaGUgcG9zaXRpb24gb24gdGhlIGVsbGlwc29pZCBpbiBtb2RlbCBjb29yZGluYXRlcy4KICogQHBhcmFtIHt2ZWMzfSBub3JtYWxFQyBUaGUgbm9ybWFsaXplZCBlbGxpcHNvaWQgc3VyZmFjZSBub3JtYWwsIGF0IDxjb2RlPnBvc2l0aW9uTUM8L2NvZGU+LCBpbiBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEByZXR1cm5zIHttYXQzfSBBIDN4MyByb3RhdGlvbiBtYXRyaXggdGhhdCB0cmFuc2Zvcm1zIHZlY3RvcnMgZnJvbSB0aGUgZWFzdC1ub3J0aC11cCBjb29yZGluYXRlIHN5c3RlbSB0byBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEBleGFtcGxlCiAqIC8vIFRyYW5zZm9ybSBhIHZlY3RvciBkZWZpbmVkIGluIHRoZSBlYXN0LW5vcnRoLXVwIGNvb3JkaW5hdGUgCiAqIC8vIHN5c3RlbSwgKDAsIDAsIDEpIHdoaWNoIGlzIHRoZSBzdXJmYWNlIG5vcm1hbCwgdG8gZXllIAogKiAvLyBjb29yZGluYXRlcy4KICogbWF0MyBtID0gY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlcyhwb3NpdGlvbk1DLCBub3JtYWxFQyk7CiAqIHZlYzMgbm9ybWFsRUMgPSBtICogdmVjMygwLjAsIDAuMCwgMS4wKTsKICovCm1hdDMgY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlcyh2ZWMzIHBvc2l0aW9uTUMsIHZlYzMgbm9ybWFsRUMpCnsKICAgIHZlYzMgdGFuZ2VudE1DID0gbm9ybWFsaXplKHZlYzMoLXBvc2l0aW9uTUMueSwgcG9zaXRpb25NQy54LCAwLjApKTsgIC8vIG5vcm1hbGl6ZWQgc3VyZmFjZSB0YW5nZW50IGluIG1vZGVsIGNvb3JkaW5hdGVzCiAgICB2ZWMzIHRhbmdlbnRFQyA9IG5vcm1hbGl6ZShjem1fbm9ybWFsM0QgKiB0YW5nZW50TUMpOyAgICAgICAgICAgICAgICAvLyBub3JtYWxpemVkIHN1cmZhY2UgdGFuZ2VudCBpbiBleWUgY29vcmRpbmF0ZXMKICAgIHZlYzMgYml0YW5nZW50RUMgPSBub3JtYWxpemUoY3Jvc3Mobm9ybWFsRUMsIHRhbmdlbnRFQykpOyAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgc3VyZmFjZSBiaXRhbmdlbnQgaW4gZXllIGNvb3JkaW5hdGVzCgogICAgcmV0dXJuIG1hdDMoCiAgICAgICAgdGFuZ2VudEVDLngsICAgdGFuZ2VudEVDLnksICAgdGFuZ2VudEVDLnosCiAgICAgICAgYml0YW5nZW50RUMueCwgYml0YW5nZW50RUMueSwgYml0YW5nZW50RUMueiwKICAgICAgICBub3JtYWxFQy54LCAgICBub3JtYWxFQy55LCAgICBub3JtYWxFQy56KTsKfQpgfSk7dmFyIHIxLGExPVMoKCk9PntyMT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX2VsbGlwc29pZENvbnRhaW5zUG9pbnQKICogQGdsc2xGdW5jdGlvbgogKgogKi8KYm9vbCBjem1fZWxsaXBzb2lkQ29udGFpbnNQb2ludCh2ZWMzIGVsbGlwc29pZF9pbnZlcnNlUmFkaWksIHZlYzMgcG9pbnQpCnsKICAgIHZlYzMgc2NhbGVkID0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQocG9pbnQsIDEuMCkpLnh5ejsKICAgIHJldHVybiAoZG90KHNjYWxlZCwgc2NhbGVkKSA8PSAxLjApOwp9CmB9KTt2YXIgQTEsaDE9UygoKT0+e0ExPWAvKioKICogRE9DX1RCQQogKgogKiBAbmFtZSBjem1fZWxsaXBzb2lkV2dzODRUZXh0dXJlQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKi8KdmVjMiBjem1fZWxsaXBzb2lkV2dzODRUZXh0dXJlQ29vcmRpbmF0ZXModmVjMyBub3JtYWwpCnsKICAgIHJldHVybiB2ZWMyKGF0YW4obm9ybWFsLnksIG5vcm1hbC54KSAqIGN6bV9vbmVPdmVyVHdvUGkgKyAwLjUsIGFzaW4obm9ybWFsLnopICogY3ptX29uZU92ZXJQaSArIDAuNSk7Cn0KYH0pO3ZhciBjMSxsMT1TKCgpPT57YzE9YC8qKgogKiBDb21wYXJlcyA8Y29kZT5sZWZ0PC9jb2RlPiBhbmQgPGNvZGU+cmlnaHQ8L2NvZGU+IGNvbXBvbmVudHdpc2UuIFJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4KICogaWYgdGhleSBhcmUgd2l0aGluIDxjb2RlPmVwc2lsb248L2NvZGU+IGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gb3RoZXJ3aXNlLiBUaGUgaW5wdXRzCiAqIDxjb2RlPmxlZnQ8L2NvZGU+IGFuZCA8Y29kZT5yaWdodDwvY29kZT4gY2FuIGJlIDxjb2RlPmZsb2F0PC9jb2RlPnMsIDxjb2RlPnZlYzI8L2NvZGU+cywKICogPGNvZGU+dmVjMzwvY29kZT5zLCBvciA8Y29kZT52ZWM0PC9jb2RlPnMuCiAqCiAqIEBuYW1lIGN6bV9lcXVhbHNFcHNpbG9uCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt9IGxlZnQgVGhlIGZpcnN0IHZlY3Rvci4KICogQHBhcmFtIHt9IHJpZ2h0IFRoZSBzZWNvbmQgdmVjdG9yLgogKiBAcGFyYW0ge2Zsb2F0fSBlcHNpbG9uIFRoZSBlcHNpbG9uIHRvIHVzZSBmb3IgZXF1YWxpdHkgdGVzdGluZy4KICogQHJldHVybnMge2Jvb2x9IDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBjb21wb25lbnRzIGFyZSB3aXRoaW4gPGNvZGU+ZXBzaWxvbjwvY29kZT4gYW5kIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCiAqCiAqIEBleGFtcGxlCiAqIC8vIEdMU0wgZGVjbGFyYXRpb25zCiAqIGJvb2wgY3ptX2VxdWFsc0Vwc2lsb24oZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGVwc2lsb24pOwogKiBib29sIGN6bV9lcXVhbHNFcHNpbG9uKHZlYzIgbGVmdCwgdmVjMiByaWdodCwgZmxvYXQgZXBzaWxvbik7CiAqIGJvb2wgY3ptX2VxdWFsc0Vwc2lsb24odmVjMyBsZWZ0LCB2ZWMzIHJpZ2h0LCBmbG9hdCBlcHNpbG9uKTsKICogYm9vbCBjem1fZXF1YWxzRXBzaWxvbih2ZWM0IGxlZnQsIHZlYzQgcmlnaHQsIGZsb2F0IGVwc2lsb24pOwogKi8KYm9vbCBjem1fZXF1YWxzRXBzaWxvbih2ZWM0IGxlZnQsIHZlYzQgcmlnaHQsIGZsb2F0IGVwc2lsb24pIHsKICAgIHJldHVybiBhbGwobGVzc1RoYW5FcXVhbChhYnMobGVmdCAtIHJpZ2h0KSwgdmVjNChlcHNpbG9uKSkpOwp9Cgpib29sIGN6bV9lcXVhbHNFcHNpbG9uKHZlYzMgbGVmdCwgdmVjMyByaWdodCwgZmxvYXQgZXBzaWxvbikgewogICAgcmV0dXJuIGFsbChsZXNzVGhhbkVxdWFsKGFicyhsZWZ0IC0gcmlnaHQpLCB2ZWMzKGVwc2lsb24pKSk7Cn0KCmJvb2wgY3ptX2VxdWFsc0Vwc2lsb24odmVjMiBsZWZ0LCB2ZWMyIHJpZ2h0LCBmbG9hdCBlcHNpbG9uKSB7CiAgICByZXR1cm4gYWxsKGxlc3NUaGFuRXF1YWwoYWJzKGxlZnQgLSByaWdodCksIHZlYzIoZXBzaWxvbikpKTsKfQoKYm9vbCBjem1fZXF1YWxzRXBzaWxvbihmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgZXBzaWxvbikgewogICAgcmV0dXJuIChhYnMobGVmdCAtIHJpZ2h0KSA8PSBlcHNpbG9uKTsKfQpgfSk7dmFyIGQxLG0xPVMoKCk9PntkMT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX2V5ZU9mZnNldAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcG9zaXRpb25FQyBET0NfVEJBLgogKiBAcGFyYW0ge3ZlYzN9IGV5ZU9mZnNldCBET0NfVEJBLgogKgogKiBAcmV0dXJucyB7dmVjNH0gRE9DX1RCQS4KICovCnZlYzQgY3ptX2V5ZU9mZnNldCh2ZWM0IHBvc2l0aW9uRUMsIHZlYzMgZXllT2Zmc2V0KQp7CiAgICAvLyBUaGlzIGVxdWF0aW9uIGlzIGFwcHJveGltYXRlIGluIHggYW5kIHkuCiAgICB2ZWM0IHAgPSBwb3NpdGlvbkVDOwogICAgdmVjNCB6RXllT2Zmc2V0ID0gbm9ybWFsaXplKHApICogZXllT2Zmc2V0Lno7CiAgICBwLnh5ICs9IGV5ZU9mZnNldC54eSArIHpFeWVPZmZzZXQueHk7CiAgICBwLnogKz0gekV5ZU9mZnNldC56OwogICAgcmV0dXJuIHA7Cn0KYH0pO3ZhciBmMSxFMT1TKCgpPT57ZjE9YC8qKgogKiBUcmFuc2Zvcm1zIGEgcG9zaXRpb24gZnJvbSBleWUgdG8gd2luZG93IGNvb3JkaW5hdGVzLiAgVGhlIHRyYW5zZm9ybWF0aW9uCiAqIGZyb20gZXllIHRvIGNsaXAgY29vcmRpbmF0ZXMgaXMgZG9uZSB1c2luZyB7QGxpbmsgY3ptX3Byb2plY3Rpb259LgogKiBUaGUgdHJhbnNmb3JtIGZyb20gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMgdG8gd2luZG93IGNvb3JkaW5hdGVzIGlzCiAqIGRvbmUgdXNpbmcge0BsaW5rIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9ufSwgd2hpY2ggYXNzdW1lcyBhIGRlcHRoIHJhbmdlCiAqIG9mIDxjb2RlPm5lYXIgPSAwPC9jb2RlPiBhbmQgPGNvZGU+ZmFyID0gMTwvY29kZT4uCiAqIDxiciAvPjxiciAvPgogKiBUaGlzIHRyYW5zZm9ybSBpcyB1c2VmdWwgd2hlbiB0aGVyZSBpcyBhIG5lZWQgdG8gbWFuaXB1bGF0ZSB3aW5kb3cgY29vcmRpbmF0ZXMKICogaW4gYSB2ZXJ0ZXggc2hhZGVyIGFzIGRvbmUgYnkge0BsaW5rIEJpbGxib2FyZENvbGxlY3Rpb259LgogKgogKiBAbmFtZSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIGluIGV5ZSBjb29yZGluYXRlcyB0byB0cmFuc2Zvcm0uCiAqCiAqIEByZXR1cm5zIHt2ZWM0fSBUaGUgdHJhbnNmb3JtZWQgcG9zaXRpb24gaW4gd2luZG93IGNvb3JkaW5hdGVzLgogKgogKiBAc2VlIGN6bV9tb2RlbFRvV2luZG93Q29vcmRpbmF0ZXMKICogQHNlZSBjem1fcHJvamVjdGlvbgogKiBAc2VlIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uCiAqIEBzZWUgQmlsbGJvYXJkQ29sbGVjdGlvbgogKgogKiBAZXhhbXBsZQogKiB2ZWM0IHBvc2l0aW9uV0MgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhwb3NpdGlvbkVDKTsKICovCnZlYzQgY3ptX2V5ZVRvV2luZG93Q29vcmRpbmF0ZXModmVjNCBwb3NpdGlvbkVDKQp7CiAgICB2ZWM0IHEgPSBjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUM7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xpcCBjb29yZGluYXRlcwogICAgcS54eXogLz0gcS53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzCiAgICBxLnh5eiA9IChjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbiAqIHZlYzQocS54eXosIDEuMCkpLnh5ejsgLy8gd2luZG93IGNvb3JkaW5hdGVzCiAgICByZXR1cm4gcTsKfQpgfSk7dmFyIF8xLFIxPVMoKCk9PntfMT1gLyoqCiAqIEFwcHJveGlhbXRlcyBhdGFuIG92ZXIgdGhlIHJhbmdlIFswLCAxXS4gU2FmZSB0byBmbGlwIG91dHB1dCBmb3IgbmVnYXRpdmUgaW5wdXQuCiAqCiAqIEJhc2VkIG9uIE1pY2hhbCBEcm9ib3QncyBhcHByb3hpbWF0aW9uIGZyb20gU2hhZGVyRmFzdExpYnMsIHdoaWNoIGluIHR1cm4gaXMgYmFzZWQgb24KICogIkVmZmljaWVudCBhcHByb3hpbWF0aW9ucyBmb3IgdGhlIGFyY3RhbmdlbnQgZnVuY3Rpb24sIiBSYWphbiwgUy4gU2ljaHVuIFdhbmcgSW5rb2wsIFIuIEpveWFsLCBBLiwgTWF5IDIwMDYuCiAqIEFkYXB0ZWQgZnJvbSBTaGFkZXJGYXN0TGlicyB1bmRlciBNSVQgTGljZW5zZS4KICoKICogQ2hvc2VuIGZvciB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcmlzdGljcyBvdmVyIHJhbmdlIFswLCAxXToKICogLSBiYXNpY2FsbHkgbm8gZXJyb3IgYXQgMCBhbmQgMSwgaW1wb3J0YW50IGZvciBnZXR0aW5nIGFyb3VuZCByYW5nZSBsaW1pdCAobmFpdmUgYXRhbjIgdmlhIGF0YW4gcmVxdWlyZXMgaW5maW5pdGUgcmFuZ2UgYXRhbikKICogLSBubyB2aXNpYmxlIGFydGlmYWN0cyBmcm9tIGZpcnN0LWRlcml2YXRpdmUgZGlzY29udGludWl0aWVzLCB1bmxpa2UgbGF0aXR1ZGUgdmlhIHJhbmdlLXJlZHVjZWQgc3FydCBhc2luIGFwcHJveGltYXRpb25zIChhdCBlcXVhdG9yKQogKgogKiBUaGUgb3JpZ2luYWwgY29kZSBpcyB4ICogKC0wLjE3ODQgKiBhYnMoeCkgLSAwLjA2NjMgKiB4ICogeCArIDEuMDMwMSk7CiAqIFJlbW92ZWQgdGhlIGFicygpIGluIGhlcmUgYmVjYXVzZSBpdCBpc24ndCBuZWVkZWQsIHRoZSBpbnB1dCByYW5nZSBpcyBndWFyYW50ZWVkIGFzIFswLCAxXSBieSBob3cgd2UncmUgYXBwcm94aW1hdGluZyBhdGFuMi4KICoKICogQG5hbWUgY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4KICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Zsb2F0fSB4IFZhbHVlIGJldHdlZW4gMCBhbmQgMSBpbmNsdXNpdmUuCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gQXBwcm94aW1hdGlvbiBvZiBhdGFuKHgpCiAqLwpmbG9hdCBjem1fZmFzdEFwcHJveGltYXRlQXRhbihmbG9hdCB4KSB7CiAgICByZXR1cm4geCAqICgtMC4xNzg0ICogeCAtIDAuMDY2MyAqIHggKiB4ICsgMS4wMzAxKTsKfQoKLyoqCiAqIEFwcHJveGltYXRpb24gb2YgYXRhbjIuCiAqCiAqIFJhbmdlIHJlZHVjdGlvbiBtYXRoIGJhc2VkIG9uIG52aWRpYSdzIGNnIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBmb3IgYXRhbjI6IGh0dHA6Ly9kZXZlbG9wZXIuZG93bmxvYWQubnZpZGlhLmNvbS9jZy9hdGFuMi5odG1sCiAqIEhvd2V2ZXIsIHdlIHJlcGxhY2VkIHRoZWlyIGF0YW4gY3VydmUgd2l0aCBNaWNoYWVsIERyb2JvdCdzIChzZWUgYWJvdmUpLgogKgogKiBAbmFtZSBjem1fZmFzdEFwcHJveGltYXRlQXRhbgogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IHggVmFsdWUgYmV0d2VlbiAtMSBhbmQgMSBpbmNsdXNpdmUuCiAqIEBwYXJhbSB7ZmxvYXR9IHkgVmFsdWUgYmV0d2VlbiAtMSBhbmQgMSBpbmNsdXNpdmUuCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gQXBwcm94aW1hdGlvbiBvZiBhdGFuMih4LCB5KQogKi8KZmxvYXQgY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4oZmxvYXQgeCwgZmxvYXQgeSkgewogICAgLy8gYXRhbiBhcHByb3hpbWF0aW9ucyBhcmUgdXN1YWxseSBvbmx5IHJlbGlhYmxlIG92ZXIgWy0xLCAxXSwgb3IsIGluIG91ciBjYXNlLCBbMCwgMV0gZHVlIHRvIG1vZGlmaWNhdGlvbnMuCiAgICAvLyBTbyByYW5nZS1yZWR1Y2UgdXNpbmcgYWJzIGFuZCBieSBmbGlwcGluZyB3aGV0aGVyIHggb3IgeSBpcyBvbiB0b3AuCiAgICBmbG9hdCB0ID0gYWJzKHgpOyAvLyB0IHVzZWQgYXMgc3dhcCBhbmQgYXRhbiByZXN1bHQuCiAgICBmbG9hdCBvcHBvc2l0ZSA9IGFicyh5KTsKICAgIGZsb2F0IGFkamFjZW50ID0gbWF4KHQsIG9wcG9zaXRlKTsKICAgIG9wcG9zaXRlID0gbWluKHQsIG9wcG9zaXRlKTsKCiAgICB0ID0gY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4ob3Bwb3NpdGUgLyBhZGphY2VudCk7CgogICAgLy8gVW5kbyByYW5nZSByZWR1Y3Rpb24KICAgIHQgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYWJzKHkpID4gYWJzKHgpLCBjem1fcGlPdmVyVHdvIC0gdCwgdCk7CiAgICB0ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KHggPCAwLjAsIGN6bV9waSAtIHQsIHQpOwogICAgdCA9IGN6bV9icmFuY2hGcmVlVGVybmFyeSh5IDwgMC4wLCAtdCwgdCk7CiAgICByZXR1cm4gdDsKfQpgfSk7dmFyIFoxLEkxPVMoKCk9PntaMT1gLyoqCiAqIEdldHMgdGhlIGNvbG9yIHdpdGggZm9nIGF0IGEgZGlzdGFuY2UgZnJvbSB0aGUgY2FtZXJhLgogKgogKiBAbmFtZSBjem1fZm9nCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtmbG9hdH0gZGlzdGFuY2VUb0NhbWVyYSBUaGUgZGlzdGFuY2UgdG8gdGhlIGNhbWVyYSBpbiBtZXRlcnMuCiAqIEBwYXJhbSB7dmVjM30gY29sb3IgVGhlIG9yaWdpbmFsIGNvbG9yLgogKiBAcGFyYW0ge3ZlYzN9IGZvZ0NvbG9yIFRoZSBjb2xvciBvZiB0aGUgZm9nLgogKgogKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIGFkanVzdGVkIGZvciBmb2cgYXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNhbWVyYS4KICovCnZlYzMgY3ptX2ZvZyhmbG9hdCBkaXN0YW5jZVRvQ2FtZXJhLCB2ZWMzIGNvbG9yLCB2ZWMzIGZvZ0NvbG9yKQp7CiAgICBmbG9hdCBzY2FsYXIgPSBkaXN0YW5jZVRvQ2FtZXJhICogY3ptX2ZvZ0RlbnNpdHk7CiAgICBmbG9hdCBmb2cgPSAxLjAgLSBleHAoLShzY2FsYXIgKiBzY2FsYXIpKTsKICAgIHJldHVybiBtaXgoY29sb3IsIGZvZ0NvbG9yLCBmb2cpOwp9CgovKioKICogR2V0cyB0aGUgY29sb3Igd2l0aCBmb2cgYXQgYSBkaXN0YW5jZSBmcm9tIHRoZSBjYW1lcmEuCiAqCiAqIEBuYW1lIGN6bV9mb2cKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Zsb2F0fSBkaXN0YW5jZVRvQ2FtZXJhIFRoZSBkaXN0YW5jZSB0byB0aGUgY2FtZXJhIGluIG1ldGVycy4KICogQHBhcmFtIHt2ZWMzfSBjb2xvciBUaGUgb3JpZ2luYWwgY29sb3IuCiAqIEBwYXJhbSB7dmVjM30gZm9nQ29sb3IgVGhlIGNvbG9yIG9mIHRoZSBmb2cuCiAqIEBwYXJhbSB7ZmxvYXR9IGZvZ01vZGlmaWVyQ29uc3RhbnQgQSBjb25zdGFudCB0byBtb2RpZnkgdGhlIGFwcGVhcmFuY2Ugb2YgZm9nLgogKgogKiBAcmV0dXJucyB7dmVjM30gVGhlIGNvbG9yIGFkanVzdGVkIGZvciBmb2cgYXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNhbWVyYS4KICovCnZlYzMgY3ptX2ZvZyhmbG9hdCBkaXN0YW5jZVRvQ2FtZXJhLCB2ZWMzIGNvbG9yLCB2ZWMzIGZvZ0NvbG9yLCBmbG9hdCBmb2dNb2RpZmllckNvbnN0YW50KQp7CiAgICBmbG9hdCBzY2FsYXIgPSBkaXN0YW5jZVRvQ2FtZXJhICogY3ptX2ZvZ0RlbnNpdHk7CiAgICBmbG9hdCBmb2cgPSAxLjAgLSBleHAoLSgoZm9nTW9kaWZpZXJDb25zdGFudCAqIHNjYWxhciArIGZvZ01vZGlmaWVyQ29uc3RhbnQpICogKHNjYWxhciAqICgxLjAgKyBmb2dNb2RpZmllckNvbnN0YW50KSkpKTsKICAgIHJldHVybiBtaXgoY29sb3IsIGZvZ0NvbG9yLCBmb2cpOwp9CmB9KTt2YXIgcDEsdTE9UygoKT0+e3AxPWAvKioKICogQ29udmVydHMgYSBjb2xvciBmcm9tIFJHQiBzcGFjZSB0byBsaW5lYXIgc3BhY2UuCiAqCiAqIEBuYW1lIGN6bV9nYW1tYUNvcnJlY3QKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGNvbG9yIFRoZSBjb2xvciBpbiBSR0Igc3BhY2UuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gbGluZWFyIHNwYWNlLgogKi8KdmVjMyBjem1fZ2FtbWFDb3JyZWN0KHZlYzMgY29sb3IpIHsKI2lmZGVmIEhEUgogICAgY29sb3IgPSBwb3coY29sb3IsIHZlYzMoY3ptX2dhbW1hKSk7CiNlbmRpZgogICAgcmV0dXJuIGNvbG9yOwp9Cgp2ZWM0IGN6bV9nYW1tYUNvcnJlY3QodmVjNCBjb2xvcikgewojaWZkZWYgSERSCiAgICBjb2xvci5yZ2IgPSBwb3coY29sb3IucmdiLCB2ZWMzKGN6bV9nYW1tYSkpOwojZW5kaWYKICAgIHJldHVybiBjb2xvcjsKfQpgfSk7dmFyIEMxLGcxPVMoKCk9PntDMT1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX2dlb2RldGljU3VyZmFjZU5vcm1hbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25PbkVsbGlwc29pZCBET0NfVEJBCiAqIEBwYXJhbSB7dmVjM30gZWxsaXBzb2lkQ2VudGVyIERPQ19UQkEKICogQHBhcmFtIHt2ZWMzfSBvbmVPdmVyRWxsaXBzb2lkUmFkaWlTcXVhcmVkIERPQ19UQkEKICogCiAqIEByZXR1cm5zIHt2ZWMzfSBET0NfVEJBLgogKi8KdmVjMyBjem1fZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHZlYzMgcG9zaXRpb25PbkVsbGlwc29pZCwgdmVjMyBlbGxpcHNvaWRDZW50ZXIsIHZlYzMgb25lT3ZlckVsbGlwc29pZFJhZGlpU3F1YXJlZCkKewogICAgcmV0dXJuIG5vcm1hbGl6ZSgocG9zaXRpb25PbkVsbGlwc29pZCAtIGVsbGlwc29pZENlbnRlcikgKiBvbmVPdmVyRWxsaXBzb2lkUmFkaWlTcXVhcmVkKTsKfQpgfSk7dmFyIFQxLE4xPVMoKCk9PntUMT1gLyoqCiAqIEFuIGN6bV9tYXRlcmlhbCB3aXRoIGRlZmF1bHQgdmFsdWVzLiBFdmVyeSBtYXRlcmlhbCdzIGN6bV9nZXRNYXRlcmlhbAogKiBzaG91bGQgdXNlIHRoaXMgZGVmYXVsdCBtYXRlcmlhbCBhcyBhIGJhc2UgZm9yIHRoZSBtYXRlcmlhbCBpdCByZXR1cm5zLgogKiBUaGUgZGVmYXVsdCBub3JtYWwgdmFsdWUgaXMgZ2l2ZW4gYnkgbWF0ZXJpYWxJbnB1dC5ub3JtYWxFQy4KICoKICogQG5hbWUgY3ptX2dldERlZmF1bHRNYXRlcmlhbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7Y3ptX21hdGVyaWFsSW5wdXR9IGlucHV0IFRoZSBpbnB1dCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgZGVmYXVsdCBtYXRlcmlhbC4KICoKICogQHJldHVybnMge2N6bV9tYXRlcmlhbH0gVGhlIGRlZmF1bHQgbWF0ZXJpYWwuCiAqCiAqIEBzZWUgY3ptX21hdGVyaWFsSW5wdXQKICogQHNlZSBjem1fbWF0ZXJpYWwKICogQHNlZSBjem1fZ2V0TWF0ZXJpYWwKICovCmN6bV9tYXRlcmlhbCBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbDsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSB2ZWMzKDAuMCk7CiAgICBtYXRlcmlhbC5zcGVjdWxhciA9IDAuMDsKICAgIG1hdGVyaWFsLnNoaW5pbmVzcyA9IDEuMDsKICAgIG1hdGVyaWFsLm5vcm1hbCA9IG1hdGVyaWFsSW5wdXQubm9ybWFsRUM7CiAgICBtYXRlcmlhbC5lbWlzc2lvbiA9IHZlYzMoMC4wKTsKICAgIG1hdGVyaWFsLmFscGhhID0gMS4wOwogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgRjEsYjE9UygoKT0+e0YxPWAvKioKICogU2VsZWN0IHdoaWNoIGRpcmVjdGlvbiB2ZWN0b3IgdG8gdXNlIGZvciBkeW5hbWljIGF0bW9zcGhlcmUgbGlnaHRpbmcgYmFzZWQgb24gYW4gZW51bSB2YWx1ZQogKgogKiBAbmFtZSBjem1fZ2V0RHluYW1pY0F0bW9zcGhlcmVMaWdodERpcmVjdGlvbgogKiBAZ2xzbGZ1bmN0aW9uCiAqIEBzZWUgRHluYW1pY0F0bW9zcGhlcmVMaWdodGluZ1R5cGUuanMKICoKICogQHBhcmFtIHt2ZWMzfSBwb3NpdGlvbldDIHRoZSBwb3NpdGlvbiBvZiB0aGUgdmVydGV4L2ZyYWdtZW50IGluIHdvcmxkIGNvb3JkaW5hdGVzLiBUaGlzIGlzIG5vcm1hbGl6ZWQgYW5kIHJldHVybmVkIHdoZW4gZHluYW1pYyBsaWdodGluZyBpcyB0dXJuZWQgb2ZmLgogKiBAcGFyYW0ge2Zsb2F0fSBsaWdodEVudW0gVGhlIGVudW0gdmFsdWUgZm9yIHNlbGVjdGluZyBiZXR3ZWVuIGxpZ2h0IHNvdXJjZXMuCiAqIEByZXR1cm4ge3ZlYzN9IFRoZSBub3JtYWxpemVkIGxpZ2h0IGRpcmVjdGlvbiB2ZWN0b3IuIERlcGVuZGluZyBvbiB0aGUgZW51bSB2YWx1ZSwgaXQgaXMgZWl0aGVyIHBvc2l0aW9uV0MsIGN6bV9saWdodERpcmVjdGlvbldDIG9yIGN6bV9zdW5EaXJlY3Rpb25XQwogKi8KdmVjMyBjem1fZ2V0RHluYW1pY0F0bW9zcGhlcmVMaWdodERpcmVjdGlvbih2ZWMzIHBvc2l0aW9uV0MsIGZsb2F0IGxpZ2h0RW51bSkgewogICAgY29uc3QgZmxvYXQgTk9ORSA9IDAuMDsKICAgIGNvbnN0IGZsb2F0IFNDRU5FX0xJR0hUID0gMS4wOwogICAgY29uc3QgZmxvYXQgU1VOTElHSFQgPSAyLjA7CgogICAgdmVjMyBsaWdodERpcmVjdGlvbiA9CiAgICAgICAgcG9zaXRpb25XQyAqIGZsb2F0KGxpZ2h0RW51bSA9PSBOT05FKSArCiAgICAgICAgY3ptX2xpZ2h0RGlyZWN0aW9uV0MgKiBmbG9hdChsaWdodEVudW0gPT0gU0NFTkVfTElHSFQpICsKICAgICAgICBjem1fc3VuRGlyZWN0aW9uV0MgKiBmbG9hdChsaWdodEVudW0gPT0gU1VOTElHSFQpOwogICAgcmV0dXJuIG5vcm1hbGl6ZShsaWdodERpcmVjdGlvbik7Cn0KYH0pO3ZhciBZMSxWMT1TKCgpPT57WTE9YC8qKgogKiBDYWxjdWxhdGVzIHRoZSBpbnRlbnNpdHkgb2YgZGlmZnVzZWx5IHJlZmxlY3RlZCBsaWdodC4KICoKICogQG5hbWUgY3ptX2dldExhbWJlcnREaWZmdXNlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWMzfSBsaWdodERpcmVjdGlvbkVDIFVuaXQgdmVjdG9yIHBvaW50aW5nIHRvIHRoZSBsaWdodCBzb3VyY2UgaW4gZXllIGNvb3JkaW5hdGVzLgogKiBAcGFyYW0ge3ZlYzN9IG5vcm1hbEVDIFRoZSBzdXJmYWNlIG5vcm1hbCBpbiBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gVGhlIGludGVuc2l0eSBvZiB0aGUgZGlmZnVzZSByZWZsZWN0aW9uLgogKgogKiBAc2VlIGN6bV9waG9uZwogKgogKiBAZXhhbXBsZQogKiBmbG9hdCBkaWZmdXNlSW50ZW5zaXR5ID0gY3ptX2dldExhbWJlcnREaWZmdXNlKGxpZ2h0RGlyZWN0aW9uRUMsIG5vcm1hbEVDKTsKICogZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHkgPSBjem1fZ2V0U3BlY3VsYXIobGlnaHREaXJlY3Rpb25FQywgdG9FeWVFQywgbm9ybWFsRUMsIDIwMCk7CiAqIHZlYzMgY29sb3IgPSAoZGlmZnVzZUNvbG9yICogZGlmZnVzZUludGVuc2l0eSkgKyAoc3BlY3VsYXJDb2xvciAqIHNwZWN1bGFySW50ZW5zaXR5KTsKICovCmZsb2F0IGN6bV9nZXRMYW1iZXJ0RGlmZnVzZSh2ZWMzIGxpZ2h0RGlyZWN0aW9uRUMsIHZlYzMgbm9ybWFsRUMpCnsKICAgIHJldHVybiBtYXgoZG90KGxpZ2h0RGlyZWN0aW9uRUMsIG5vcm1hbEVDKSwgMC4wKTsKfQpgfSk7dmFyIFMxLE8xPVMoKCk9PntTMT1gLyoqCiAqIENhbGN1bGF0ZXMgdGhlIHNwZWN1bGFyIGludGVuc2l0eSBvZiByZWZsZWN0ZWQgbGlnaHQuCiAqCiAqIEBuYW1lIGN6bV9nZXRTcGVjdWxhcgogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gbGlnaHREaXJlY3Rpb25FQyBVbml0IHZlY3RvciBwb2ludGluZyB0byB0aGUgbGlnaHQgc291cmNlIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHt2ZWMzfSB0b0V5ZUVDIFVuaXQgdmVjdG9yIHBvaW50aW5nIHRvIHRoZSBleWUgcG9zaXRpb24gaW4gZXllIGNvb3JkaW5hdGVzLgogKiBAcGFyYW0ge3ZlYzN9IG5vcm1hbEVDIFRoZSBzdXJmYWNlIG5vcm1hbCBpbiBleWUgY29vcmRpbmF0ZXMuCiAqIEBwYXJhbSB7ZmxvYXR9IHNoaW5pbmVzcyBUaGUgc2hhcnBuZXNzIG9mIHRoZSBzcGVjdWxhciByZWZsZWN0aW9uLiAgSGlnaGVyIHZhbHVlcyBjcmVhdGUgYSBzbWFsbGVyLCBtb3JlIGZvY3VzZWQgc3BlY3VsYXIgaGlnaGxpZ2h0LgogKgogKiBAcmV0dXJucyB7ZmxvYXR9IFRoZSBpbnRlbnNpdHkgb2YgdGhlIHNwZWN1bGFyIGhpZ2hsaWdodC4KICoKICogQHNlZSBjem1fcGhvbmcKICoKICogQGV4YW1wbGUKICogZmxvYXQgZGlmZnVzZUludGVuc2l0eSA9IGN6bV9nZXRMYW1iZXJ0RGlmZnVzZShsaWdodERpcmVjdGlvbkVDLCBub3JtYWxFQyk7CiAqIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5ID0gY3ptX2dldFNwZWN1bGFyKGxpZ2h0RGlyZWN0aW9uRUMsIHRvRXllRUMsIG5vcm1hbEVDLCAyMDApOwogKiB2ZWMzIGNvbG9yID0gKGRpZmZ1c2VDb2xvciAqIGRpZmZ1c2VJbnRlbnNpdHkpICsgKHNwZWN1bGFyQ29sb3IgKiBzcGVjdWxhckludGVuc2l0eSk7CiAqLwpmbG9hdCBjem1fZ2V0U3BlY3VsYXIodmVjMyBsaWdodERpcmVjdGlvbkVDLCB2ZWMzIHRvRXllRUMsIHZlYzMgbm9ybWFsRUMsIGZsb2F0IHNoaW5pbmVzcykKewogICAgdmVjMyB0b1JlZmxlY3RlZExpZ2h0ID0gcmVmbGVjdCgtbGlnaHREaXJlY3Rpb25FQywgbm9ybWFsRUMpOwogICAgZmxvYXQgc3BlY3VsYXIgPSBtYXgoZG90KHRvUmVmbGVjdGVkTGlnaHQsIHRvRXllRUMpLCAwLjApOwoKICAgIC8vIHBvdyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIGlmIGJvdGggcGFyYW1ldGVycyA8PSAwLgogICAgLy8gUHJldmVudCB0aGlzIGJ5IG1ha2luZyBzdXJlIHNoaW5pbmVzcyBpcyBhdCBsZWFzdCBjem1fZXBzaWxvbjIuCiAgICByZXR1cm4gcG93KHNwZWN1bGFyLCBtYXgoc2hpbmluZXNzLCBjem1fZXBzaWxvbjIpKTsKfQpgfSk7dmFyIEIxLEcxPVMoKCk9PntCMT1gLyoqCiAqIEBwcml2YXRlCiAqLwp2ZWM0IGN6bV9nZXRXYXRlck5vaXNlKHNhbXBsZXIyRCBub3JtYWxNYXAsIHZlYzIgdXYsIGZsb2F0IHRpbWUsIGZsb2F0IGFuZ2xlSW5SYWRpYW5zKQp7CiAgICBmbG9hdCBjb3NBbmdsZSA9IGNvcyhhbmdsZUluUmFkaWFucyk7CiAgICBmbG9hdCBzaW5BbmdsZSA9IHNpbihhbmdsZUluUmFkaWFucyk7CgogICAgLy8gdGltZSBkZXBlbmRlbnQgc2FtcGxpbmcgZGlyZWN0aW9ucwogICAgdmVjMiBzMCA9IHZlYzIoMS4wLzE3LjAsIDAuMCk7CiAgICB2ZWMyIHMxID0gdmVjMigtMS4wLzI5LjAsIDAuMCk7CiAgICB2ZWMyIHMyID0gdmVjMigxLjAvMTAxLjAsIDEuMC81OS4wKTsKICAgIHZlYzIgczMgPSB2ZWMyKC0xLjAvMTA5LjAsIC0xLjAvNTcuMCk7CgogICAgLy8gcm90YXRlIHNhbXBsaW5nIGRpcmVjdGlvbiBieSBzcGVjaWZpZWQgYW5nbGUKICAgIHMwID0gdmVjMigoY29zQW5nbGUgKiBzMC54KSAtIChzaW5BbmdsZSAqIHMwLnkpLCAoc2luQW5nbGUgKiBzMC54KSArIChjb3NBbmdsZSAqIHMwLnkpKTsKICAgIHMxID0gdmVjMigoY29zQW5nbGUgKiBzMS54KSAtIChzaW5BbmdsZSAqIHMxLnkpLCAoc2luQW5nbGUgKiBzMS54KSArIChjb3NBbmdsZSAqIHMxLnkpKTsKICAgIHMyID0gdmVjMigoY29zQW5nbGUgKiBzMi54KSAtIChzaW5BbmdsZSAqIHMyLnkpLCAoc2luQW5nbGUgKiBzMi54KSArIChjb3NBbmdsZSAqIHMyLnkpKTsKICAgIHMzID0gdmVjMigoY29zQW5nbGUgKiBzMy54KSAtIChzaW5BbmdsZSAqIHMzLnkpLCAoc2luQW5nbGUgKiBzMy54KSArIChjb3NBbmdsZSAqIHMzLnkpKTsKCiAgICB2ZWMyIHV2MCA9ICh1di8xMDMuMCkgKyAodGltZSAqIHMwKTsKICAgIHZlYzIgdXYxID0gdXYvMTA3LjAgKyAodGltZSAqIHMxKSArIHZlYzIoMC4yMyk7CiAgICB2ZWMyIHV2MiA9IHV2L3ZlYzIoODk3LjAsIDk4My4wKSArICh0aW1lICogczIpICsgdmVjMigwLjUxKTsKICAgIHZlYzIgdXYzID0gdXYvdmVjMig5OTEuMCwgODc3LjApICsgKHRpbWUgKiBzMykgKyB2ZWMyKDAuNzEpOwoKICAgIHV2MCA9IGZyYWN0KHV2MCk7CiAgICB1djEgPSBmcmFjdCh1djEpOwogICAgdXYyID0gZnJhY3QodXYyKTsKICAgIHV2MyA9IGZyYWN0KHV2Myk7CiAgICB2ZWM0IG5vaXNlID0gKHRleHR1cmUobm9ybWFsTWFwLCB1djApKSArCiAgICAgICAgICAgICAgICAgKHRleHR1cmUobm9ybWFsTWFwLCB1djEpKSArCiAgICAgICAgICAgICAgICAgKHRleHR1cmUobm9ybWFsTWFwLCB1djIpKSArCiAgICAgICAgICAgICAgICAgKHRleHR1cmUobm9ybWFsTWFwLCB1djMpKTsKCiAgICAvLyBhdmVyYWdlIGFuZCBzY2FsZSB0byBiZXR3ZWVuIC0xIGFuZCAxCiAgICByZXR1cm4gKChub2lzZSAvIDQuMCkgLSAwLjUpICogMi4wOwp9CmB9KTt2YXIgVzEsRDE9UygoKT0+e1cxPWAvKioKICogQWRqdXN0cyB0aGUgaHVlIG9mIGEgY29sb3IuCiAqIAogKiBAbmFtZSBjem1faHVlCiAqIEBnbHNsRnVuY3Rpb24KICogCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvci4KICogQHBhcmFtIHtmbG9hdH0gYWRqdXN0bWVudCBUaGUgYW1vdW50IHRvIGFkanVzdCB0aGUgaHVlIG9mIHRoZSBjb2xvciBpbiByYWRpYW5zLgogKgogKiBAcmV0dXJucyB7ZmxvYXR9IFRoZSBjb2xvciB3aXRoIHRoZSBodWUgYWRqdXN0ZWQuCiAqCiAqIEBleGFtcGxlCiAqIHZlYzMgYWRqdXN0SHVlID0gY3ptX2h1ZShjb2xvciwgY3ptX3BpKTsgLy8gVGhlIHNhbWUgYXMgY3ptX2h1ZShjb2xvciwgLWN6bV9waSkKICovCnZlYzMgY3ptX2h1ZSh2ZWMzIHJnYiwgZmxvYXQgYWRqdXN0bWVudCkKewogICAgY29uc3QgbWF0MyB0b1lJUSA9IG1hdDMoMC4yOTksICAgICAwLjU4NywgICAgIDAuMTE0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41OTU3MTYsIC0wLjI3NDQ1MywgLTAuMzIxMjYzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTE0NTYsIC0wLjUyMjU5MSwgIDAuMzExMTM1KTsKICAgIGNvbnN0IG1hdDMgdG9SR0IgPSBtYXQzKDEuMCwgIDAuOTU2MywgIDAuNjIxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCwgLTAuMjcyMSwgLTAuNjQ3NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMCwgLTEuMTA3LCAgIDEuNzA0Nik7CiAgICAKICAgIHZlYzMgeWlxID0gdG9ZSVEgKiByZ2I7CiAgICBmbG9hdCBodWUgPSBhdGFuKHlpcS56LCB5aXEueSkgKyBhZGp1c3RtZW50OwogICAgZmxvYXQgY2hyb21hID0gc3FydCh5aXEueiAqIHlpcS56ICsgeWlxLnkgKiB5aXEueSk7CiAgICAKICAgIHZlYzMgY29sb3IgPSB2ZWMzKHlpcS54LCBjaHJvbWEgKiBjb3MoaHVlKSwgY2hyb21hICogc2luKGh1ZSkpOwogICAgcmV0dXJuIHRvUkdCICogY29sb3I7Cn0KYH0pO3ZhciBVMSxNMT1TKCgpPT57VTE9YC8qKgogKiBDb252ZXJ0cyBhIGNvbG9yIGluIGxpbmVhciBzcGFjZSB0byBSR0Igc3BhY2UuCiAqCiAqIEBuYW1lIGN6bV9pbnZlcnNlR2FtbWEKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGNvbG9yIFRoZSBjb2xvciBpbiBsaW5lYXIgc3BhY2UuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgaW4gUkdCIHNwYWNlLgogKi8KdmVjMyBjem1faW52ZXJzZUdhbW1hKHZlYzMgY29sb3IpIHsKICAgIHJldHVybiBwb3coY29sb3IsIHZlYzMoMS4wIC8gY3ptX2dhbW1hKSk7Cn0KYH0pO3ZhciBRMSxrMT1TKCgpPT57UTE9YC8qKgogKiBEZXRlcm1pbmVzIGlmIGEgdGltZSBpbnRlcnZhbCBpcyBlbXB0eS4KICoKICogQG5hbWUgY3ptX2lzRW1wdHkKICogQGdsc2xGdW5jdGlvbiAKICogCiAqIEBwYXJhbSB7Y3ptX3JheVNlZ21lbnR9IGludGVydmFsIFRoZSBpbnRlcnZhbCB0byB0ZXN0LgogKiAKICogQHJldHVybnMge2Jvb2x9IDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSB0aW1lIGludGVydmFsIGlzIGVtcHR5OyBvdGhlcndpc2UsIDxjb2RlPmZhbHNlPC9jb2RlPi4KICoKICogQGV4YW1wbGUKICogYm9vbCBiMCA9IGN6bV9pc0VtcHR5KGN6bV9lbXB0eVJheVNlZ21lbnQpOyAgICAgIC8vIHRydWUKICogYm9vbCBiMSA9IGN6bV9pc0VtcHR5KGN6bV9yYXlTZWdtZW50KDAuMCwgMS4wKSk7IC8vIGZhbHNlCiAqIGJvb2wgYjIgPSBjem1faXNFbXB0eShjem1fcmF5U2VnbWVudCgxLjAsIDEuMCkpOyAvLyBmYWxzZSwgY29udGFpbnMgMS4wLgogKi8KYm9vbCBjem1faXNFbXB0eShjem1fcmF5U2VnbWVudCBpbnRlcnZhbCkKewogICAgcmV0dXJuIChpbnRlcnZhbC5zdG9wIDwgMC4wKTsKfQpgfSk7dmFyIEwxLHkxPVMoKCk9PntMMT1gLyoqCiAqIERldGVybWluZXMgaWYgYSB0aW1lIGludGVydmFsIGlzIGVtcHR5LgogKgogKiBAbmFtZSBjem1faXNGdWxsCiAqIEBnbHNsRnVuY3Rpb24gCiAqIAogKiBAcGFyYW0ge2N6bV9yYXlTZWdtZW50fSBpbnRlcnZhbCBUaGUgaW50ZXJ2YWwgdG8gdGVzdC4KICogCiAqIEByZXR1cm5zIHtib29sfSA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgdGltZSBpbnRlcnZhbCBpcyBlbXB0eTsgb3RoZXJ3aXNlLCA8Y29kZT5mYWxzZTwvY29kZT4uCiAqCiAqIEBleGFtcGxlCiAqIGJvb2wgYjAgPSBjem1faXNFbXB0eShjem1fZW1wdHlSYXlTZWdtZW50KTsgICAgICAvLyB0cnVlCiAqIGJvb2wgYjEgPSBjem1faXNFbXB0eShjem1fcmF5U2VnbWVudCgwLjAsIDEuMCkpOyAvLyBmYWxzZQogKiBib29sIGIyID0gY3ptX2lzRW1wdHkoY3ptX3JheVNlZ21lbnQoMS4wLCAxLjApKTsgLy8gZmFsc2UsIGNvbnRhaW5zIDEuMC4KICovCmJvb2wgY3ptX2lzRnVsbChjem1fcmF5U2VnbWVudCBpbnRlcnZhbCkKewogICAgcmV0dXJuIChpbnRlcnZhbC5zdGFydCA9PSAwLjAgJiYgaW50ZXJ2YWwuc3RvcCA9PSBjem1faW5maW5pdHkpOwp9CmB9KTt2YXIgdzEseDE9UygoKT0+e3cxPWAvKioKICogQ29tcHV0ZXMgdGhlIGZyYWN0aW9uIG9mIGEgV2ViIFdlcmNhdG9yIHJlY3RhbmdsZSBhdCB3aGljaCBhIGdpdmVuIGdlb2RldGljIGxhdGl0dWRlIGlzIGxvY2F0ZWQuCiAqCiAqIEBuYW1lIGN6bV9sYXRpdHVkZVRvV2ViTWVyY2F0b3JGcmFjdGlvbgogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGxhdGl0dWRlIFRoZSBnZW9kZXRpYyBsYXRpdHVkZSwgaW4gcmFkaWFucy4KICogQHBhcmFtIHtmbG9hdH0gc291dGhNZXJjYXRvclkgVGhlIFdlYiBNZXJjYXRvciBjb29yZGluYXRlIG9mIHRoZSBzb3V0aGVybiBib3VuZGFyeSBvZiB0aGUgcmVjdGFuZ2xlLgogKiBAcGFyYW0ge2Zsb2F0fSBvbmVPdmVyTWVyY2F0b3JIZWlnaHQgVGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlIGluIFdlYiBNZXJjYXRvciBjb29yZGluYXRlcy4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgZnJhY3Rpb24gb2YgdGhlIHJlY3RhbmdsZSBhdCB3aGljaCB0aGUgbGF0aXR1ZGUgb2NjdXJzLiAgSWYgdGhlIGxhdGl0dWRlIGlzIHRoZSBzb3V0aGVybgogKiAgICAgICAgICBib3VuZGFyeSBvZiB0aGUgcmVjdGFuZ2xlLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgemVyby4gIElmIGl0IGlzIHRoZSBub3J0aGVybiBib3VuZGFyeSwgdGhlIHJldHVybgogKiAgICAgICAgICB2YWx1ZSB3aWxsIGJlIDEuMC4gIExhdGl0dWRlcyBpbiBiZXR3ZWVuIGFyZSBtYXBwZWQgYWNjb3JkaW5nIHRvIHRoZSBXZWIgTWVyY2F0b3IgcHJvamVjdGlvbi4KICovIApmbG9hdCBjem1fbGF0aXR1ZGVUb1dlYk1lcmNhdG9yRnJhY3Rpb24oZmxvYXQgbGF0aXR1ZGUsIGZsb2F0IHNvdXRoTWVyY2F0b3JZLCBmbG9hdCBvbmVPdmVyTWVyY2F0b3JIZWlnaHQpCnsKICAgIGZsb2F0IHNpbkxhdGl0dWRlID0gc2luKGxhdGl0dWRlKTsKICAgIGZsb2F0IG1lcmNhdG9yWSA9IDAuNSAqIGxvZygoMS4wICsgc2luTGF0aXR1ZGUpIC8gKDEuMCAtIHNpbkxhdGl0dWRlKSk7CiAgICAKICAgIHJldHVybiAobWVyY2F0b3JZIC0gc291dGhNZXJjYXRvclkpICogb25lT3Zlck1lcmNhdG9ySGVpZ2h0Owp9CmB9KTt2YXIgUDEsSjE9UygoKT0+e1AxPWAvKioKICogQ29tcHV0ZXMgZGlzdGFuY2UgZnJvbSBhbiBwb2ludCBpbiAyRCB0byBhIGxpbmUgaW4gMkQuCiAqCiAqIEBuYW1lIGN6bV9saW5lRGlzdGFuY2UKICogQGdsc2xGdW5jdGlvbgogKgogKiBwYXJhbSB7dmVjMn0gcG9pbnQxIEEgcG9pbnQgYWxvbmcgdGhlIGxpbmUuCiAqIHBhcmFtIHt2ZWMyfSBwb2ludDIgQSBwb2ludCBhbG9uZyB0aGUgbGluZS4KICogcGFyYW0ge3ZlYzJ9IHBvaW50IEEgcG9pbnQgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBvbiB0aGUgbGluZS4KICogcmV0dXJucyB7ZmxvYXR9IFRoZSBkaXN0YW5jZSBmcm9tIHRoZSBwb2ludCB0byB0aGUgbGluZS4KICovCmZsb2F0IGN6bV9saW5lRGlzdGFuY2UodmVjMiBwb2ludDEsIHZlYzIgcG9pbnQyLCB2ZWMyIHBvaW50KSB7CiAgICByZXR1cm4gYWJzKChwb2ludDIueSAtIHBvaW50MS55KSAqIHBvaW50LnggLSAocG9pbnQyLnggLSBwb2ludDEueCkgKiBwb2ludC55ICsgcG9pbnQyLnggKiBwb2ludDEueSAtIHBvaW50Mi55ICogcG9pbnQxLngpIC8gZGlzdGFuY2UocG9pbnQyLCBwb2ludDEpOwp9CmB9KTt2YXIgajEsSDE9UygoKT0+e2oxPWAvKioKICogQ29udmVydHMgYSBsaW5lYXIgUkdCIGNvbG9yIHRvIGFuIHNSR0IgY29sb3IuCiAqCiAqIEBwYXJhbSB7dmVjM3x2ZWM0fSBsaW5lYXJJbiBUaGUgY29sb3IgaW4gbGluZWFyIGNvbG9yIHNwYWNlLgogKiBAcmV0dXJucyB7dmVjM3x2ZWM0fSBUaGUgY29sb3IgaW4gc1JHQiBjb2xvciBzcGFjZS4gVGhlIHZlY3RvciB0eXBlIG1hdGNoZXMgdGhlIGlucHV0LgogKi8KdmVjMyBjem1fbGluZWFyVG9TcmdiKHZlYzMgbGluZWFySW4pIAp7CiAgICByZXR1cm4gcG93KGxpbmVhckluLCB2ZWMzKDEuMC8yLjIpKTsKfQoKdmVjNCBjem1fbGluZWFyVG9TcmdiKHZlYzQgbGluZWFySW4pIAp7CiAgICB2ZWMzIHNyZ2JPdXQgPSBwb3cobGluZWFySW4ucmdiLCB2ZWMzKDEuMC8yLjIpKTsKICAgIHJldHVybiB2ZWM0KHNyZ2JPdXQsIGxpbmVhckluLmEpOwp9CmB9KTt2YXIgdjEsejE9UygoKT0+e3YxPWAvKioKICogQ29tcHV0ZXMgdGhlIGx1bWluYW5jZSBvZiBhIGNvbG9yLiAKICoKICogQG5hbWUgY3ptX2x1bWluYW5jZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcmdiIFRoZSBjb2xvci4KICogCiAqIEByZXR1cm5zIHtmbG9hdH0gVGhlIGx1bWluYW5jZS4KICoKICogQGV4YW1wbGUKICogZmxvYXQgbGlnaHQgPSBjem1fbHVtaW5hbmNlKHZlYzMoMC4wKSk7IC8vIDAuMAogKiBmbG9hdCBkYXJrID0gY3ptX2x1bWluYW5jZSh2ZWMzKDEuMCkpOyAgLy8gfjEuMCAKICovCmZsb2F0IGN6bV9sdW1pbmFuY2UodmVjMyByZ2IpCnsKICAgIC8vIEFsZ29yaXRobSBmcm9tIENoYXB0ZXIgMTAgb2YgR3JhcGhpY3MgU2hhZGVycy4KICAgIGNvbnN0IHZlYzMgVyA9IHZlYzMoMC4yMTI1LCAwLjcxNTQsIDAuMDcyMSk7CiAgICByZXR1cm4gZG90KHJnYiwgVyk7Cn0KYH0pO3ZhciBLMSxYMT1TKCgpPT57SzE9YC8qKgogKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIHBpeGVsIGluIG1ldGVycyBhdCBhIGRpc3RhbmNlIGZyb20gdGhlIGV5ZS4KICogPHA+CiAqIFVzZSB0aGlzIHZlcnNpb24gd2hlbiBwYXNzaW5nIGluIGEgY3VzdG9tIHBpeGVsIHJhdGlvLiBGb3IgZXhhbXBsZSwgcGFzc2luZyBpbiAxLjAgd2lsbCByZXR1cm4gbWV0ZXJzIHBlciBuYXRpdmUgZGV2aWNlIHBpeGVsLgogKiA8L3A+CiAqIEBuYW1lIGN6bV9tZXRlcnNQZXJQaXhlbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25FQyBUaGUgcG9zaXRpb24gdG8gZ2V0IHRoZSBtZXRlcnMgcGVyIHBpeGVsIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHtmbG9hdH0gcGl4ZWxSYXRpbyBUaGUgc2NhbGluZyBmYWN0b3IgZnJvbSBwaXhlbCBzcGFjZSB0byBjb29yZGluYXRlIHNwYWNlCiAqCiAqIEByZXR1cm5zIHtmbG9hdH0gVGhlIG1ldGVycyBwZXIgcGl4ZWwgYXQgcG9zaXRpb25FQy4KICovCmZsb2F0IGN6bV9tZXRlcnNQZXJQaXhlbCh2ZWM0IHBvc2l0aW9uRUMsIGZsb2F0IHBpeGVsUmF0aW8pCnsKICAgIGZsb2F0IHdpZHRoID0gY3ptX3ZpZXdwb3J0Lno7CiAgICBmbG9hdCBoZWlnaHQgPSBjem1fdmlld3BvcnQudzsKICAgIGZsb2F0IHBpeGVsV2lkdGg7CiAgICBmbG9hdCBwaXhlbEhlaWdodDsKCiAgICBmbG9hdCB0b3AgPSBjem1fZnJ1c3R1bVBsYW5lcy54OwogICAgZmxvYXQgYm90dG9tID0gY3ptX2ZydXN0dW1QbGFuZXMueTsKICAgIGZsb2F0IGxlZnQgPSBjem1fZnJ1c3R1bVBsYW5lcy56OwogICAgZmxvYXQgcmlnaHQgPSBjem1fZnJ1c3R1bVBsYW5lcy53OwoKICAgIGlmIChjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUyRCB8fCBjem1fb3J0aG9ncmFwaGljSW4zRCA9PSAxLjApCiAgICB7CiAgICAgICAgZmxvYXQgZnJ1c3R1bVdpZHRoID0gcmlnaHQgLSBsZWZ0OwogICAgICAgIGZsb2F0IGZydXN0dW1IZWlnaHQgPSB0b3AgLSBib3R0b207CiAgICAgICAgcGl4ZWxXaWR0aCA9IGZydXN0dW1XaWR0aCAvIHdpZHRoOwogICAgICAgIHBpeGVsSGVpZ2h0ID0gZnJ1c3R1bUhlaWdodCAvIGhlaWdodDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBmbG9hdCBkaXN0YW5jZVRvUGl4ZWwgPSAtcG9zaXRpb25FQy56OwogICAgICAgIGZsb2F0IGludmVyc2VOZWFyID0gMS4wIC8gY3ptX2N1cnJlbnRGcnVzdHVtLng7CiAgICAgICAgZmxvYXQgdGFuVGhldGEgPSB0b3AgKiBpbnZlcnNlTmVhcjsKICAgICAgICBwaXhlbEhlaWdodCA9IDIuMCAqIGRpc3RhbmNlVG9QaXhlbCAqIHRhblRoZXRhIC8gaGVpZ2h0OwogICAgICAgIHRhblRoZXRhID0gcmlnaHQgKiBpbnZlcnNlTmVhcjsKICAgICAgICBwaXhlbFdpZHRoID0gMi4wICogZGlzdGFuY2VUb1BpeGVsICogdGFuVGhldGEgLyB3aWR0aDsKICAgIH0KCiAgICByZXR1cm4gbWF4KHBpeGVsV2lkdGgsIHBpeGVsSGVpZ2h0KSAqIHBpeGVsUmF0aW87Cn0KCi8qKgogKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIHBpeGVsIGluIG1ldGVycyBhdCBhIGRpc3RhbmNlIGZyb20gdGhlIGV5ZS4KICogPHA+CiAqIFVzZSB0aGlzIHZlcnNpb24gd2hlbiBzY2FsaW5nIGJ5IHBpeGVsIHJhdGlvLgogKiA8L3A+CiAqIEBuYW1lIGN6bV9tZXRlcnNQZXJQaXhlbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gcG9zaXRpb25FQyBUaGUgcG9zaXRpb24gdG8gZ2V0IHRoZSBtZXRlcnMgcGVyIHBpeGVsIGluIGV5ZSBjb29yZGluYXRlcy4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgbWV0ZXJzIHBlciBwaXhlbCBhdCBwb3NpdGlvbkVDLgogKi8KZmxvYXQgY3ptX21ldGVyc1BlclBpeGVsKHZlYzQgcG9zaXRpb25FQykKewogICAgcmV0dXJuIGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVDLCBjem1fcGl4ZWxSYXRpbyk7Cn0KYH0pO3ZhciBxMSwkMT1TKCgpPT57cTE9YC8qKgogKiBUcmFuc2Zvcm1zIGEgcG9zaXRpb24gZnJvbSBtb2RlbCB0byB3aW5kb3cgY29vcmRpbmF0ZXMuICBUaGUgdHJhbnNmb3JtYXRpb24KICogZnJvbSBtb2RlbCB0byBjbGlwIGNvb3JkaW5hdGVzIGlzIGRvbmUgdXNpbmcge0BsaW5rIGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9ufS4KICogVGhlIHRyYW5zZm9ybSBmcm9tIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzIHRvIHdpbmRvdyBjb29yZGluYXRlcyBpcwogKiBkb25lIHVzaW5nIHtAbGluayBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbn0sIHdoaWNoIGFzc3VtZXMgYSBkZXB0aCByYW5nZQogKiBvZiA8Y29kZT5uZWFyID0gMDwvY29kZT4gYW5kIDxjb2RlPmZhciA9IDE8L2NvZGU+LgogKiA8YnIgLz48YnIgLz4KICogVGhpcyB0cmFuc2Zvcm0gaXMgdXNlZnVsIHdoZW4gdGhlcmUgaXMgYSBuZWVkIHRvIG1hbmlwdWxhdGUgd2luZG93IGNvb3JkaW5hdGVzCiAqIGluIGEgdmVydGV4IHNoYWRlciBhcyBkb25lIGJ5IHtAbGluayBCaWxsYm9hcmRDb2xsZWN0aW9ufS4KICogPGJyIC8+PGJyIC8+CiAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHtAbGluayBjem1fdmlld3BvcnRPcnRob2dyYXBoaWN9LAogKiB3aGljaCBpcyBhbiBvcnRob2dyYXBoaWMgcHJvamVjdGlvbiBtYXRyaXggdGhhdCB0cmFuc2Zvcm1zIGZyb20gd2luZG93IAogKiBjb29yZGluYXRlcyB0byBjbGlwIGNvb3JkaW5hdGVzLgogKgogKiBAbmFtZSBjem1fbW9kZWxUb1dpbmRvd0Nvb3JkaW5hdGVzCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBwb3NpdGlvbiBUaGUgcG9zaXRpb24gaW4gbW9kZWwgY29vcmRpbmF0ZXMgdG8gdHJhbnNmb3JtLgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIHRyYW5zZm9ybWVkIHBvc2l0aW9uIGluIHdpbmRvdyBjb29yZGluYXRlcy4KICoKICogQHNlZSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcwogKiBAc2VlIGN6bV9tb2RlbFZpZXdQcm9qZWN0aW9uCiAqIEBzZWUgY3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb24KICogQHNlZSBjem1fdmlld3BvcnRPcnRob2dyYXBoaWMKICogQHNlZSBCaWxsYm9hcmRDb2xsZWN0aW9uCiAqCiAqIEBleGFtcGxlCiAqIHZlYzQgcG9zaXRpb25XQyA9IGN6bV9tb2RlbFRvV2luZG93Q29vcmRpbmF0ZXMocG9zaXRpb25NQyk7CiAqLwp2ZWM0IGN6bV9tb2RlbFRvV2luZG93Q29vcmRpbmF0ZXModmVjNCBwb3NpdGlvbikKewogICAgdmVjNCBxID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb24gKiBwb3NpdGlvbjsgICAgICAgICAgICAgICAgLy8gY2xpcCBjb29yZGluYXRlcwogICAgcS54eXogLz0gcS53OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzCiAgICBxLnh5eiA9IChjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbiAqIHZlYzQocS54eXosIDEuMCkpLnh5ejsgLy8gd2luZG93IGNvb3JkaW5hdGVzCiAgICByZXR1cm4gcTsKfQpgfSk7dmFyIHRrLGVrPVMoKCk9Pnt0az1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX211bHRpcGx5V2l0aENvbG9yQmFsYW5jZQogKiBAZ2xzbEZ1bmN0aW9uCiAqLwp2ZWMzIGN6bV9tdWx0aXBseVdpdGhDb2xvckJhbGFuY2UodmVjMyBsZWZ0LCB2ZWMzIHJpZ2h0KQp7CiAgICAvLyBBbGdvcml0aG0gZnJvbSBDaGFwdGVyIDEwIG9mIEdyYXBoaWNzIFNoYWRlcnMuCiAgICBjb25zdCB2ZWMzIFcgPSB2ZWMzKDAuMjEyNSwgMC43MTU0LCAwLjA3MjEpOwogICAgCiAgICB2ZWMzIHRhcmdldCA9IGxlZnQgKiByaWdodDsKICAgIGZsb2F0IGxlZnRMdW1pbmFuY2UgPSBkb3QobGVmdCwgVyk7CiAgICBmbG9hdCByaWdodEx1bWluYW5jZSA9IGRvdChyaWdodCwgVyk7CiAgICBmbG9hdCB0YXJnZXRMdW1pbmFuY2UgPSBkb3QodGFyZ2V0LCBXKTsKICAgIAogICAgcmV0dXJuICgobGVmdEx1bWluYW5jZSArIHJpZ2h0THVtaW5hbmNlKSAvICgyLjAgKiB0YXJnZXRMdW1pbmFuY2UpKSAqIHRhcmdldDsKfQpgfSk7dmFyIGlrLG5rPVMoKCk9Pntpaz1gLyoqCiAqIENvbXB1dGVzIGEgdmFsdWUgdGhhdCBzY2FsZXMgd2l0aCBkaXN0YW5jZS4gIFRoZSBzY2FsaW5nIGlzIGNsYW1wZWQgYXQgdGhlIG5lYXIgYW5kCiAqIGZhciBkaXN0YW5jZXMsIGFuZCBkb2VzIG5vdCBleHRyYXBvbGF0ZS4gIFRoaXMgZnVuY3Rpb24gd29ya3Mgd2l0aCB0aGUKICoge0BsaW5rIE5lYXJGYXJTY2FsYXJ9IEphdmFTY3JpcHQgY2xhc3MuCiAqCiAqIEBuYW1lIGN6bV9uZWFyRmFyU2NhbGFyCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBuZWFyRmFyU2NhbGFyIEEgdmVjdG9yIHdpdGggNCBjb21wb25lbnRzOiBOZWFyIGRpc3RhbmNlICh4KSwgTmVhciB2YWx1ZSAoeSksIEZhciBkaXN0YW5jZSAoeiksIEZhciB2YWx1ZSAodykuCiAqIEBwYXJhbSB7ZmxvYXR9IGNhbWVyYURpc3RTcSBUaGUgc3F1YXJlIG9mIHRoZSBjdXJyZW50IGRpc3RhbmNlIGZyb20gdGhlIGNhbWVyYS4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgdmFsdWUgYXQgdGhpcyBkaXN0YW5jZS4KICovCmZsb2F0IGN6bV9uZWFyRmFyU2NhbGFyKHZlYzQgbmVhckZhclNjYWxhciwgZmxvYXQgY2FtZXJhRGlzdFNxKQp7CiAgICBmbG9hdCB2YWx1ZUF0TWluID0gbmVhckZhclNjYWxhci55OwogICAgZmxvYXQgdmFsdWVBdE1heCA9IG5lYXJGYXJTY2FsYXIudzsKICAgIGZsb2F0IG5lYXJEaXN0YW5jZVNxID0gbmVhckZhclNjYWxhci54ICogbmVhckZhclNjYWxhci54OwogICAgZmxvYXQgZmFyRGlzdGFuY2VTcSA9IG5lYXJGYXJTY2FsYXIueiAqIG5lYXJGYXJTY2FsYXIuejsKCiAgICBmbG9hdCB0ID0gKGNhbWVyYURpc3RTcSAtIG5lYXJEaXN0YW5jZVNxKSAvIChmYXJEaXN0YW5jZVNxIC0gbmVhckRpc3RhbmNlU3EpOwoKICAgIHQgPSBwb3coY2xhbXAodCwgMC4wLCAxLjApLCAwLjIpOwoKICAgIHJldHVybiBtaXgodmFsdWVBdE1pbiwgdmFsdWVBdE1heCwgdCk7Cn0KYH0pO3ZhciBzayxvaz1TKCgpPT57c2s9YCAvKioKICAqIERlY29kZXMgYSB1bml0LWxlbmd0aCB2ZWN0b3IgaW4gJ29jdCcgZW5jb2RpbmcgdG8gYSBub3JtYWxpemVkIDMtY29tcG9uZW50IENhcnRlc2lhbiB2ZWN0b3IuCiAgKiBUaGUgJ29jdCcgZW5jb2RpbmcgaXMgZGVzY3JpYmVkIGluICJBIFN1cnZleSBvZiBFZmZpY2llbnQgUmVwcmVzZW50YXRpb25zIG9mIEluZGVwZW5kZW50IFVuaXQgVmVjdG9ycyIsCiAgKiBDaWdvbGxlIGV0IGFsIDIwMTQ6IGh0dHA6Ly9qY2d0Lm9yZy9wdWJsaXNoZWQvMDAwMy8wMi8wMS8KICAqCiAgKiBAbmFtZSBjem1fb2N0RGVjb2RlCiAgKiBAcGFyYW0ge3ZlYzJ9IGVuY29kZWQgVGhlIG9jdC1lbmNvZGVkLCB1bml0LWxlbmd0aCB2ZWN0b3IKICAqIEBwYXJhbSB7ZmxvYXR9IHJhbmdlIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBTTk9STSByYW5nZS4gVGhlIGVuY29kZWQgdmVjdG9yIGlzIHN0b3JlZCBpbiBsb2cyKHJhbmdlTWF4KzEpIGJpdHMuCiAgKiBAcmV0dXJucyB7dmVjM30gVGhlIGRlY29kZWQgYW5kIG5vcm1hbGl6ZWQgdmVjdG9yCiAgKi8KICB2ZWMzIGN6bV9vY3REZWNvZGUodmVjMiBlbmNvZGVkLCBmbG9hdCByYW5nZSkKICB7CiAgICAgIGlmIChlbmNvZGVkLnggPT0gMC4wICYmIGVuY29kZWQueSA9PSAwLjApIHsKICAgICAgICAgIHJldHVybiB2ZWMzKDAuMCwgMC4wLCAwLjApOwogICAgICB9CgogICAgIGVuY29kZWQgPSBlbmNvZGVkIC8gcmFuZ2UgKiAyLjAgLSAxLjA7CiAgICAgdmVjMyB2ID0gdmVjMyhlbmNvZGVkLngsIGVuY29kZWQueSwgMS4wIC0gYWJzKGVuY29kZWQueCkgLSBhYnMoZW5jb2RlZC55KSk7CiAgICAgaWYgKHYueiA8IDAuMCkKICAgICB7CiAgICAgICAgIHYueHkgPSAoMS4wIC0gYWJzKHYueXgpKSAqIGN6bV9zaWduTm90WmVybyh2Lnh5KTsKICAgICB9CgogICAgIHJldHVybiBub3JtYWxpemUodik7CiAgfQoKLyoqCiAqIERlY29kZXMgYSB1bml0LWxlbmd0aCB2ZWN0b3IgaW4gJ29jdCcgZW5jb2RpbmcgdG8gYSBub3JtYWxpemVkIDMtY29tcG9uZW50IENhcnRlc2lhbiB2ZWN0b3IuCiAqIFRoZSAnb2N0JyBlbmNvZGluZyBpcyBkZXNjcmliZWQgaW4gIkEgU3VydmV5IG9mIEVmZmljaWVudCBSZXByZXNlbnRhdGlvbnMgb2YgSW5kZXBlbmRlbnQgVW5pdCBWZWN0b3JzIiwKICogQ2lnb2xsZSBldCBhbCAyMDE0OiBodHRwOi8vamNndC5vcmcvcHVibGlzaGVkLzAwMDMvMDIvMDEvCiAqCiAqIEBuYW1lIGN6bV9vY3REZWNvZGUKICogQHBhcmFtIHt2ZWMyfSBlbmNvZGVkIFRoZSBvY3QtZW5jb2RlZCwgdW5pdC1sZW5ndGggdmVjdG9yCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgZGVjb2RlZCBhbmQgbm9ybWFsaXplZCB2ZWN0b3IKICovCiB2ZWMzIGN6bV9vY3REZWNvZGUodmVjMiBlbmNvZGVkKQogewogICAgcmV0dXJuIGN6bV9vY3REZWNvZGUoZW5jb2RlZCwgMjU1LjApOwogfQoKIC8qKgogKiBEZWNvZGVzIGEgdW5pdC1sZW5ndGggdmVjdG9yIGluICdvY3QnIGVuY29kaW5nIHBhY2tlZCBpbnRvIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGEgbm9ybWFsaXplZCAzLWNvbXBvbmVudCBDYXJ0ZXNpYW4gdmVjdG9yLgogKiBUaGUgJ29jdCcgZW5jb2RpbmcgaXMgZGVzY3JpYmVkIGluICJBIFN1cnZleSBvZiBFZmZpY2llbnQgUmVwcmVzZW50YXRpb25zIG9mIEluZGVwZW5kZW50IFVuaXQgVmVjdG9ycyIsCiAqIENpZ29sbGUgZXQgYWwgMjAxNDogaHR0cDovL2pjZ3Qub3JnL3B1Ymxpc2hlZC8wMDAzLzAyLzAxLwogKgogKiBAbmFtZSBjem1fb2N0RGVjb2RlCiAqIEBwYXJhbSB7ZmxvYXR9IGVuY29kZWQgVGhlIG9jdC1lbmNvZGVkLCB1bml0LWxlbmd0aCB2ZWN0b3IKICogQHJldHVybnMge3ZlYzN9IFRoZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3RvcgogKi8KIHZlYzMgY3ptX29jdERlY29kZShmbG9hdCBlbmNvZGVkKQogewogICAgZmxvYXQgdGVtcCA9IGVuY29kZWQgLyAyNTYuMDsKICAgIGZsb2F0IHggPSBmbG9vcih0ZW1wKTsKICAgIGZsb2F0IHkgPSAodGVtcCAtIHgpICogMjU2LjA7CiAgICByZXR1cm4gY3ptX29jdERlY29kZSh2ZWMyKHgsIHkpKTsKIH0KCi8qKgogKiBEZWNvZGVzIHRocmVlIHVuaXQtbGVuZ3RoIHZlY3RvcnMgaW4gJ29jdCcgZW5jb2RpbmcgcGFja2VkIGludG8gdHdvIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgdG8gbm9ybWFsaXplZCAzLWNvbXBvbmVudCBDYXJ0ZXNpYW4gdmVjdG9ycy4KICogVGhlICdvY3QnIGVuY29kaW5nIGlzIGRlc2NyaWJlZCBpbiAiQSBTdXJ2ZXkgb2YgRWZmaWNpZW50IFJlcHJlc2VudGF0aW9ucyBvZiBJbmRlcGVuZGVudCBVbml0IFZlY3RvcnMiLAogKiBDaWdvbGxlIGV0IGFsIDIwMTQ6IGh0dHA6Ly9qY2d0Lm9yZy9wdWJsaXNoZWQvMDAwMy8wMi8wMS8KICoKICogQG5hbWUgY3ptX29jdERlY29kZQogKiBAcGFyYW0ge3ZlYzJ9IGVuY29kZWQgVGhlIHBhY2tlZCBvY3QtZW5jb2RlZCwgdW5pdC1sZW5ndGggdmVjdG9ycy4KICogQHBhcmFtIHt2ZWMzfSB2ZWN0b3IxIE9uZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3Rvci4KICogQHBhcmFtIHt2ZWMzfSB2ZWN0b3IyIE9uZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3Rvci4KICogQHBhcmFtIHt2ZWMzfSB2ZWN0b3IzIE9uZSBkZWNvZGVkIGFuZCBub3JtYWxpemVkIHZlY3Rvci4KICovCiAgdm9pZCBjem1fb2N0RGVjb2RlKHZlYzIgZW5jb2RlZCwgb3V0IHZlYzMgdmVjdG9yMSwgb3V0IHZlYzMgdmVjdG9yMiwgb3V0IHZlYzMgdmVjdG9yMykKIHsKICAgIGZsb2F0IHRlbXAgPSBlbmNvZGVkLnggLyA2NTUzNi4wOwogICAgZmxvYXQgeCA9IGZsb29yKHRlbXApOwogICAgZmxvYXQgZW5jb2RlZEZsb2F0MSA9ICh0ZW1wIC0geCkgKiA2NTUzNi4wOwoKICAgIHRlbXAgPSBlbmNvZGVkLnkgLyA2NTUzNi4wOwogICAgZmxvYXQgeSA9IGZsb29yKHRlbXApOwogICAgZmxvYXQgZW5jb2RlZEZsb2F0MiA9ICh0ZW1wIC0geSkgKiA2NTUzNi4wOwoKICAgIHZlY3RvcjEgPSBjem1fb2N0RGVjb2RlKGVuY29kZWRGbG9hdDEpOwogICAgdmVjdG9yMiA9IGN6bV9vY3REZWNvZGUoZW5jb2RlZEZsb2F0Mik7CiAgICB2ZWN0b3IzID0gY3ptX29jdERlY29kZSh2ZWMyKHgsIHkpKTsKIH0KCmB9KTt2YXIgcmssYWs9UygoKT0+e3JrPWAvKioKICogUGFja3MgYSBkZXB0aCB2YWx1ZSBpbnRvIGEgdmVjMyB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBieSB1bnNpZ25lZCBieXRlcy4KICoKICogQG5hbWUgY3ptX3BhY2tEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGRlcHRoIFRoZSBmbG9hdGluZy1wb2ludCBkZXB0aC4KICogQHJldHVybnMge3ZlYzN9IFRoZSBwYWNrZWQgZGVwdGguCiAqLwp2ZWM0IGN6bV9wYWNrRGVwdGgoZmxvYXQgZGVwdGgpCnsKICAgIC8vIFNlZSBBcmFzIFByYW5ja2V2aVx1MDEwRGl1cycgcG9zdCBFbmNvZGluZyBGbG9hdHMgdG8gUkdCQQogICAgLy8gaHR0cDovL2FyYXMtcC5pbmZvL2Jsb2cvMjAwOS8wNy8zMC9lbmNvZGluZy1mbG9hdHMtdG8tcmdiYS10aGUtZmluYWwvCiAgICB2ZWM0IGVuYyA9IHZlYzQoMS4wLCAyNTUuMCwgNjUwMjUuMCwgMTY1ODEzNzUuMCkgKiBkZXB0aDsKICAgIGVuYyA9IGZyYWN0KGVuYyk7CiAgICBlbmMgLT0gZW5jLnl6d3cgKiB2ZWM0KDEuMCAvIDI1NS4wLCAxLjAgLyAyNTUuMCwgMS4wIC8gMjU1LjAsIDAuMCk7CiAgICByZXR1cm4gZW5jOwp9CmB9KTt2YXIgQWssaGs9UygoKT0+e0FrPWB2ZWMzIGxhbWJlcnRpYW5EaWZmdXNlKHZlYzMgZGlmZnVzZUNvbG9yKQp7CiAgICByZXR1cm4gZGlmZnVzZUNvbG9yIC8gY3ptX3BpOwp9Cgp2ZWMzIGZyZXNuZWxTY2hsaWNrMih2ZWMzIGYwLCB2ZWMzIGY5MCwgZmxvYXQgVmRvdEgpCnsKICAgIHJldHVybiBmMCArIChmOTAgLSBmMCkgKiBwb3coY2xhbXAoMS4wIC0gVmRvdEgsIDAuMCwgMS4wKSwgNS4wKTsKfQoKZmxvYXQgc21pdGhWaXNpYmlsaXR5RzEoZmxvYXQgTmRvdFYsIGZsb2F0IHJvdWdobmVzcykKewogICAgLy8gdGhpcyBpcyB0aGUgayB2YWx1ZSBmb3IgZGlyZWN0IGxpZ2h0aW5nLgogICAgLy8gZm9yIGltYWdlIGJhc2VkIGxpZ2h0aW5nIGl0IHdpbGwgYmUgcm91Z2huZXNzXjIgLyAyCiAgICBmbG9hdCBrID0gKHJvdWdobmVzcyArIDEuMCkgKiAocm91Z2huZXNzICsgMS4wKSAvIDguMDsKICAgIHJldHVybiBOZG90ViAvIChOZG90ViAqICgxLjAgLSBrKSArIGspOwp9CgpmbG9hdCBzbWl0aFZpc2liaWxpdHlHR1goZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOZG90TCwgZmxvYXQgTmRvdFYpCnsKICAgIHJldHVybiAoCiAgICAgICAgc21pdGhWaXNpYmlsaXR5RzEoTmRvdEwsIHJvdWdobmVzcykgKgogICAgICAgIHNtaXRoVmlzaWJpbGl0eUcxKE5kb3RWLCByb3VnaG5lc3MpCiAgICApOwp9CgpmbG9hdCBHR1goZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOZG90SCkKewogICAgZmxvYXQgcm91Z2huZXNzU3F1YXJlZCA9IHJvdWdobmVzcyAqIHJvdWdobmVzczsKICAgIGZsb2F0IGYgPSAoTmRvdEggKiByb3VnaG5lc3NTcXVhcmVkIC0gTmRvdEgpICogTmRvdEggKyAxLjA7CiAgICByZXR1cm4gcm91Z2huZXNzU3F1YXJlZCAvIChjem1fcGkgKiBmICogZik7Cn0KCi8qKgogKiBDb21wdXRlIHRoZSBkaWZmdXNlIGFuZCBzcGVjdWxhciBjb250cmlidXRpb25zIHVzaW5nIHBoeXNpY2FsbHkgYmFzZWQKICogcmVuZGVyaW5nLiBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyBkaXJlY3QgbGlnaHRpbmcuCiAqIDxwPgogKiBUaGlzIGZ1bmN0aW9uIG9ubHkgaGFuZGxlcyB0aGUgbGlnaHRpbmcgY2FsY3VsYXRpb25zLiBNZXRhbGxpYy9yb3VnaG5lc3MKICogYW5kIHNwZWN1bGFyL2dsb3NzeSBtdXN0IGJlIGhhbmRsZWQgc2VwYXJhdGVseS4gU2VlIHtAY3ptX3Bick1ldGFsbGljUm91Z2huZXNzTWF0ZXJpYWx9LCB7QGN6bV9wYnJTcGVjdWxhckdsb3NzaW5lc3NNYXRlcmlhbH0gYW5kIHtAY3ptX2RlZmF1bHRQYnJNYXRlcmlhbH0KICogPC9wPgogKgogKiBAbmFtZSBjem1fcGJybGlnaHRpbmcKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IHBvc2l0aW9uRUMgVGhlIHBvc2l0aW9uIG9mIHRoZSBmcmFnbWVudCBpbiBleWUgY29vcmRpbmF0ZXMKICogQHBhcmFtIHt2ZWMzfSBub3JtYWxFQyBUaGUgc3VyZmFjZSBub3JtYWwgaW4gZXllIGNvb3JkaW5hdGVzCiAqIEBwYXJhbSB7dmVjM30gbGlnaHREaXJlY3Rpb25FQyBVbml0IHZlY3RvciBwb2ludGluZyB0byB0aGUgbGlnaHQgc291cmNlIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHt2ZWMzfSBsaWdodENvbG9ySGRyIHJhZGlhbmNlIG9mIHRoZSBsaWdodCBzb3VyY2UuIFRoaXMgaXMgYSBIRFIgdmFsdWUuCiAqIEBwYXJhbSB7Y3ptX3BiclBhcmFtZXRlcnN9IFRoZSBjb21wdXRlZCBQQlIgcGFyYW1ldGVycy4KICogQHJldHVybiB7dmVjM30gVGhlIGNvbXB1dGVkIEhEUiBjb2xvcgogKgogKiBAZXhhbXBsZQogKiBjem1fcGJyUGFyYW1ldGVycyBwYnJQYXJhbWV0ZXJzID0gY3ptX3Bick1ldGFsbGljUm91Z2huZXNzTWF0ZXJpYWwoCiAqICBiYXNlQ29sb3IsCiAqICBtZXRhbGxpYywKICogIHJvdWdobmVzcwogKiApOwogKiB2ZWMzIGNvbG9yID0gY3ptX3BicmxpZ2h0aW5nKAogKiAgcG9zaXRpb25FQywKICogIG5vcm1hbEVDLAogKiAgbGlnaHREaXJlY3Rpb25FQywKICogIGxpZ2h0Q29sb3JIZHIsCiAqICBwYnJQYXJhbWV0ZXJzKTsKICovCnZlYzMgY3ptX3BickxpZ2h0aW5nKAogICAgdmVjMyBwb3NpdGlvbkVDLAogICAgdmVjMyBub3JtYWxFQywKICAgIHZlYzMgbGlnaHREaXJlY3Rpb25FQywKICAgIHZlYzMgbGlnaHRDb2xvckhkciwKICAgIGN6bV9wYnJQYXJhbWV0ZXJzIHBiclBhcmFtZXRlcnMKKQp7CiAgICB2ZWMzIHYgPSAtbm9ybWFsaXplKHBvc2l0aW9uRUMpOwogICAgdmVjMyBsID0gbm9ybWFsaXplKGxpZ2h0RGlyZWN0aW9uRUMpOwogICAgdmVjMyBoID0gbm9ybWFsaXplKHYgKyBsKTsKICAgIHZlYzMgbiA9IG5vcm1hbEVDOwogICAgZmxvYXQgTmRvdEwgPSBjbGFtcChkb3QobiwgbCksIDAuMDAxLCAxLjApOwogICAgZmxvYXQgTmRvdFYgPSBhYnMoZG90KG4sIHYpKSArIDAuMDAxOwogICAgZmxvYXQgTmRvdEggPSBjbGFtcChkb3QobiwgaCksIDAuMCwgMS4wKTsKICAgIGZsb2F0IExkb3RIID0gY2xhbXAoZG90KGwsIGgpLCAwLjAsIDEuMCk7CiAgICBmbG9hdCBWZG90SCA9IGNsYW1wKGRvdCh2LCBoKSwgMC4wLCAxLjApOwoKICAgIHZlYzMgZjAgPSBwYnJQYXJhbWV0ZXJzLmYwOwogICAgZmxvYXQgcmVmbGVjdGFuY2UgPSBtYXgobWF4KGYwLnIsIGYwLmcpLCBmMC5iKTsKICAgIHZlYzMgZjkwID0gdmVjMyhjbGFtcChyZWZsZWN0YW5jZSAqIDI1LjAsIDAuMCwgMS4wKSk7CiAgICB2ZWMzIEYgPSBmcmVzbmVsU2NobGljazIoZjAsIGY5MCwgVmRvdEgpOwoKICAgIGZsb2F0IGFscGhhID0gcGJyUGFyYW1ldGVycy5yb3VnaG5lc3M7CiAgICBmbG9hdCBHID0gc21pdGhWaXNpYmlsaXR5R0dYKGFscGhhLCBOZG90TCwgTmRvdFYpOwogICAgZmxvYXQgRCA9IEdHWChhbHBoYSwgTmRvdEgpOwogICAgdmVjMyBzcGVjdWxhckNvbnRyaWJ1dGlvbiA9IEYgKiBHICogRCAvICg0LjAgKiBOZG90TCAqIE5kb3RWKTsKCiAgICB2ZWMzIGRpZmZ1c2VDb2xvciA9IHBiclBhcmFtZXRlcnMuZGlmZnVzZUNvbG9yOwogICAgLy8gRiBoZXJlIHJlcHJlc2VudHMgdGhlIHNwZWN1bGFyIGNvbnRyaWJ1dGlvbgogICAgdmVjMyBkaWZmdXNlQ29udHJpYnV0aW9uID0gKDEuMCAtIEYpICogbGFtYmVydGlhbkRpZmZ1c2UoZGlmZnVzZUNvbG9yKTsKCiAgICAvLyBMbyA9IChkaWZmdXNlICsgc3BlY3VsYXIpICogTGkgKiBOZG90TAogICAgcmV0dXJuIChkaWZmdXNlQ29udHJpYnV0aW9uICsgc3BlY3VsYXJDb250cmlidXRpb24pICogTmRvdEwgKiBsaWdodENvbG9ySGRyOwp9CmB9KTt2YXIgY2ssbGs9UygoKT0+e2NrPWAvKioKICogQ29tcHV0ZSBwYXJhbWV0ZXJzIGZvciBwaHlzaWNhbGx5IGJhc2VkIHJlbmRlcmluZyB1c2luZyB0aGUKICogbWV0YWxsaWMvcm91Z2huZXNzIHdvcmtmbG93LiBBbGwgaW5wdXRzIGFyZSBsaW5lYXI7IHNSR0IgdGV4dHVyZSB2YWx1ZXMgbXVzdAogKiBiZSBkZWNvZGVkIGJlZm9yZWhhbmQKICoKICogQG5hbWUgY3ptX3Bick1ldGFsbGljUm91Z2huZXNzTWF0ZXJpYWwKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGJhc2VDb2xvciBGb3IgZGllbGVjdHJpY3MsIHRoaXMgaXMgdGhlIGJhc2UgY29sb3IuIEZvciBtZXRhbHMsIHRoaXMgaXMgdGhlIGYwIHZhbHVlIChyZWZsZWN0YW5jZSBhdCBub3JtYWwgaW5jaWRlbmNlKQogKiBAcGFyYW0ge2Zsb2F0fSBtZXRhbGxpYyAwLjAgaW5kaWNhdGVzIGRpZWxlY3RyaWMuIDEuMCBpbmRpY2F0ZXMgbWV0YWwuIFZhbHVlcyBpbiBiZXR3ZWVuIGFyZSBhbGxvd2VkIChlLmcuIHRvIG1vZGVsIHJ1c3Qgb3IgZGlydCk7CiAqIEBwYXJhbSB7ZmxvYXR9IHJvdWdobmVzcyBBIHZhbHVlIGJldHdlZW4gMC4wIGFuZCAxLjAKICogQHJldHVybiB7Y3ptX3BiclBhcmFtZXRlcnN9IHBhcmFtZXRlcnMgdG8gcGFzcyBpbnRvIHtAbGluayBjem1fcGJyTGlnaHRpbmd9CiAqLwpjem1fcGJyUGFyYW1ldGVycyBjem1fcGJyTWV0YWxsaWNSb3VnaG5lc3NNYXRlcmlhbCgKICAgIHZlYzMgYmFzZUNvbG9yLAogICAgZmxvYXQgbWV0YWxsaWMsCiAgICBmbG9hdCByb3VnaG5lc3MKKSAKewogICAgY3ptX3BiclBhcmFtZXRlcnMgcmVzdWx0czsKCiAgICAvLyByb3VnaG5lc3MgaXMgYXV0aG9yZWQgYXMgcGVyY2VwdHVhbCByb3VnaG5lc3MKICAgIC8vIHNxdWFyZSBpdCB0byBnZXQgbWF0ZXJpYWwgcm91Z2huZXNzCiAgICByb3VnaG5lc3MgPSBjbGFtcChyb3VnaG5lc3MsIDAuMCwgMS4wKTsKICAgIHJlc3VsdHMucm91Z2huZXNzID0gcm91Z2huZXNzICogcm91Z2huZXNzOwoKICAgIC8vIGRpZWxlY3RyaWNzIHVzZSBmMCA9IDAuMDQsIG1ldGFscyB1c2UgYWxiZWRvIGFzIGYwCiAgICBtZXRhbGxpYyA9IGNsYW1wKG1ldGFsbGljLCAwLjAsIDEuMCk7CiAgICBjb25zdCB2ZWMzIFJFRkxFQ1RBTkNFX0RJRUxFQ1RSSUMgPSB2ZWMzKDAuMDQpOwogICAgdmVjMyBmMCA9IG1peChSRUZMRUNUQU5DRV9ESUVMRUNUUklDLCBiYXNlQ29sb3IsIG1ldGFsbGljKTsKICAgIHJlc3VsdHMuZjAgPSBmMDsKCiAgICAvLyBkaWZmdXNlIG9ubHkgYXBwbGllcyB0byBkaWVsZWN0cmljcy4KICAgIHJlc3VsdHMuZGlmZnVzZUNvbG9yID0gYmFzZUNvbG9yICogKDEuMCAtIGYwKSAqICgxLjAgLSBtZXRhbGxpYyk7CgogICAgcmV0dXJuIHJlc3VsdHM7Cn0KYH0pO3ZhciBkayxtaz1TKCgpPT57ZGs9YC8qKgogKiBDb21wdXRlIHBhcmFtZXRlcnMgZm9yIHBoeXNpY2FsbHkgYmFzZWQgcmVuZGVyaW5nIHVzaW5nIHRoZQogKiBzcGVjdWxhci9nbG9zc3kgd29ya2Zsb3cuIEFsbCBpbnB1dHMgYXJlIGxpbmVhcjsgc1JHQiB0ZXh0dXJlIHZhbHVlcyBtdXN0CiAqIGJlIGRlY29kZWQgYmVmb3JlaGFuZAogKgogKiBAbmFtZSBjem1fcGJyU3BlY3VsYXJHbG9zc2luZXNzTWF0ZXJpYWwKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzN9IGRpZmZ1c2UgVGhlIGRpZmZ1c2UgY29sb3IgZm9yIGRpZWxlY3RyaWNzIChub24tbWV0YWxzKQogKiBAcGFyYW0ge3ZlYzN9IHNwZWN1bGFyIFRoZSByZWZsZWN0YW5jZSBhdCBub3JtYWwgaW5jaWRlbmNlIChmMCkKICogQHBhcmFtIHtmbG9hdH0gZ2xvc3NpbmVzcyBBIG51bWJlciBmcm9tIDAuMCB0byAxLjAgaW5kaWNhdGluZyBob3cgc21vb3RoIHRoZSBzdXJmYWNlIGlzLgogKiBAcmV0dXJuIHtjem1fcGJyUGFyYW1ldGVyc30gcGFyYW1ldGVycyB0byBwYXNzIGludG8ge0BsaW5rIGN6bV9wYnJMaWdodGluZ30KICovCmN6bV9wYnJQYXJhbWV0ZXJzIGN6bV9wYnJTcGVjdWxhckdsb3NzaW5lc3NNYXRlcmlhbCgKICAgIHZlYzMgZGlmZnVzZSwKICAgIHZlYzMgc3BlY3VsYXIsCiAgICBmbG9hdCBnbG9zc2luZXNzCikgCnsKICAgIGN6bV9wYnJQYXJhbWV0ZXJzIHJlc3VsdHM7CgogICAgLy8gZ2xvc3NpbmVzcyBpcyB0aGUgb3Bwb3NpdGUgb2Ygcm91Z2huZXNzLCBidXQgZWFzaWVyIGZvciBhcnRpc3RzIHRvIHVzZS4KICAgIGZsb2F0IHJvdWdobmVzcyA9IDEuMCAtIGdsb3NzaW5lc3M7CiAgICByZXN1bHRzLnJvdWdobmVzcyA9IHJvdWdobmVzcyAqIHJvdWdobmVzczsKCiAgICByZXN1bHRzLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2UgKiAoMS4wIC0gbWF4KG1heChzcGVjdWxhci5yLCBzcGVjdWxhci5nKSwgc3BlY3VsYXIuYikpOwogICAgcmVzdWx0cy5mMCA9IHNwZWN1bGFyOwoKICAgIHJldHVybiByZXN1bHRzOwp9CmB9KTt2YXIgZmssRWs9UygoKT0+e2ZrPWBmbG9hdCBjem1fcHJpdmF0ZV9nZXRMYW1iZXJ0RGlmZnVzZU9mTWF0ZXJpYWwodmVjMyBsaWdodERpcmVjdGlvbkVDLCBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwpCnsKICAgIHJldHVybiBjem1fZ2V0TGFtYmVydERpZmZ1c2UobGlnaHREaXJlY3Rpb25FQywgbWF0ZXJpYWwubm9ybWFsKTsKfQoKZmxvYXQgY3ptX3ByaXZhdGVfZ2V0U3BlY3VsYXJPZk1hdGVyaWFsKHZlYzMgbGlnaHREaXJlY3Rpb25FQywgdmVjMyB0b0V5ZUVDLCBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwpCnsKICAgIHJldHVybiBjem1fZ2V0U3BlY3VsYXIobGlnaHREaXJlY3Rpb25FQywgdG9FeWVFQywgbWF0ZXJpYWwubm9ybWFsLCBtYXRlcmlhbC5zaGluaW5lc3MpOwp9CgovKioKICogQ29tcHV0ZXMgYSBjb2xvciB1c2luZyB0aGUgUGhvbmcgbGlnaHRpbmcgbW9kZWwuCiAqCiAqIEBuYW1lIGN6bV9waG9uZwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gdG9FeWUgQSBub3JtYWxpemVkIHZlY3RvciBmcm9tIHRoZSBmcmFnbWVudCB0byB0aGUgZXllIGluIGV5ZSBjb29yZGluYXRlcy4KICogQHBhcmFtIHtjem1fbWF0ZXJpYWx9IG1hdGVyaWFsIFRoZSBmcmFnbWVudCdzIG1hdGVyaWFsLgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIGNvbXB1dGVkIGNvbG9yLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIHBvc2l0aW9uVG9FeWVFQyA9IC8vIC4uLgogKiBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSAvLyAuLi4KICogdmVjMyBsaWdodERpcmVjdGlvbkVDID0gLy8gLi4uCiAqIG91dF9GcmFnQ29sb3IgPSBjem1fcGhvbmcobm9ybWFsaXplKHBvc2l0aW9uVG9FeWVFQyksIG1hdGVyaWFsLCBsaWdodERpcmVjdGlvbkVDKTsKICoKICogQHNlZSBjem1fZ2V0TWF0ZXJpYWwKICovCnZlYzQgY3ptX3Bob25nKHZlYzMgdG9FeWUsIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCwgdmVjMyBsaWdodERpcmVjdGlvbkVDKQp7CiAgICAvLyBEaWZmdXNlIGZyb20gZGlyZWN0aW9uYWwgbGlnaHQgc291cmNlcyBhdCBleWUgKGZvciB0b3AtZG93bikKICAgIGZsb2F0IGRpZmZ1c2UgPSBjem1fcHJpdmF0ZV9nZXRMYW1iZXJ0RGlmZnVzZU9mTWF0ZXJpYWwodmVjMygwLjAsIDAuMCwgMS4wKSwgbWF0ZXJpYWwpOwogICAgaWYgKGN6bV9zY2VuZU1vZGUgPT0gY3ptX3NjZW5lTW9kZTNEKSB7CiAgICAgICAgLy8gKGFuZCBob3Jpem9uIHZpZXdzIGluIDNEKQogICAgICAgIGRpZmZ1c2UgKz0gY3ptX3ByaXZhdGVfZ2V0TGFtYmVydERpZmZ1c2VPZk1hdGVyaWFsKHZlYzMoMC4wLCAxLjAsIDAuMCksIG1hdGVyaWFsKTsKICAgIH0KCiAgICBmbG9hdCBzcGVjdWxhciA9IGN6bV9wcml2YXRlX2dldFNwZWN1bGFyT2ZNYXRlcmlhbChsaWdodERpcmVjdGlvbkVDLCB0b0V5ZSwgbWF0ZXJpYWwpOwoKICAgIC8vIFRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciBhZGRpbmcgYW1iaWVudC4KICAgIHZlYzMgbWF0ZXJpYWxEaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZSAqIDAuNTsKCiAgICB2ZWMzIGFtYmllbnQgPSBtYXRlcmlhbERpZmZ1c2U7CiAgICB2ZWMzIGNvbG9yID0gYW1iaWVudCArIG1hdGVyaWFsLmVtaXNzaW9uOwogICAgY29sb3IgKz0gbWF0ZXJpYWxEaWZmdXNlICogZGlmZnVzZSAqIGN6bV9saWdodENvbG9yOwogICAgY29sb3IgKz0gbWF0ZXJpYWwuc3BlY3VsYXIgKiBzcGVjdWxhciAqIGN6bV9saWdodENvbG9yOwoKICAgIHJldHVybiB2ZWM0KGNvbG9yLCBtYXRlcmlhbC5hbHBoYSk7Cn0KCnZlYzQgY3ptX3ByaXZhdGVfcGhvbmcodmVjMyB0b0V5ZSwgY3ptX21hdGVyaWFsIG1hdGVyaWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uRUMpCnsKICAgIGZsb2F0IGRpZmZ1c2UgPSBjem1fcHJpdmF0ZV9nZXRMYW1iZXJ0RGlmZnVzZU9mTWF0ZXJpYWwobGlnaHREaXJlY3Rpb25FQywgbWF0ZXJpYWwpOwogICAgZmxvYXQgc3BlY3VsYXIgPSBjem1fcHJpdmF0ZV9nZXRTcGVjdWxhck9mTWF0ZXJpYWwobGlnaHREaXJlY3Rpb25FQywgdG9FeWUsIG1hdGVyaWFsKTsKCiAgICB2ZWMzIGFtYmllbnQgPSB2ZWMzKDAuMCk7CiAgICB2ZWMzIGNvbG9yID0gYW1iaWVudCArIG1hdGVyaWFsLmVtaXNzaW9uOwogICAgY29sb3IgKz0gbWF0ZXJpYWwuZGlmZnVzZSAqIGRpZmZ1c2UgKiBjem1fbGlnaHRDb2xvcjsKICAgIGNvbG9yICs9IG1hdGVyaWFsLnNwZWN1bGFyICogc3BlY3VsYXIgKiBjem1fbGlnaHRDb2xvcjsKCiAgICByZXR1cm4gdmVjNChjb2xvciwgbWF0ZXJpYWwuYWxwaGEpOwp9CmB9KTt2YXIgX2ssUms9UygoKT0+e19rPWAvKioKICogQ29tcHV0ZXMgZGlzdGFuY2UgZnJvbSBhIHBvaW50IHRvIGEgcGxhbmUuCiAqCiAqIEBuYW1lIGN6bV9wbGFuZURpc3RhbmNlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogcGFyYW0ge3ZlYzR9IHBsYW5lIEEgUGxhbmUgaW4gSGVzc2lhbiBOb3JtYWwgRm9ybS4gU2VlIFBsYW5lLmpzCiAqIHBhcmFtIHt2ZWMzfSBwb2ludCBBIHBvaW50IGluIHRoZSBzYW1lIHNwYWNlIGFzIHRoZSBwbGFuZS4KICogcmV0dXJucyB7ZmxvYXR9IFRoZSBkaXN0YW5jZSBmcm9tIHRoZSBwb2ludCB0byB0aGUgcGxhbmUuCiAqLwpmbG9hdCBjem1fcGxhbmVEaXN0YW5jZSh2ZWM0IHBsYW5lLCB2ZWMzIHBvaW50KSB7CiAgICByZXR1cm4gKGRvdChwbGFuZS54eXosIHBvaW50KSArIHBsYW5lLncpOwp9CgovKioKICogQ29tcHV0ZXMgZGlzdGFuY2UgZnJvbSBhIHBvaW50IHRvIGEgcGxhbmUuCiAqCiAqIEBuYW1lIGN6bV9wbGFuZURpc3RhbmNlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogcGFyYW0ge3ZlYzN9IHBsYW5lTm9ybWFsIE5vcm1hbCBmb3IgYSBwbGFuZSBpbiBIZXNzaWFuIE5vcm1hbCBGb3JtLiBTZWUgUGxhbmUuanMKICogcGFyYW0ge2Zsb2F0fSBwbGFuZURpc3RhbmNlIERpc3RhbmNlIGZvciBhIHBsYW5lIGluIEhlc3NpYW4gTm9ybWFsIGZvcm0uIFNlZSBQbGFuZS5qcwogKiBwYXJhbSB7dmVjM30gcG9pbnQgQSBwb2ludCBpbiB0aGUgc2FtZSBzcGFjZSBhcyB0aGUgcGxhbmUuCiAqIHJldHVybnMge2Zsb2F0fSBUaGUgZGlzdGFuY2UgZnJvbSB0aGUgcG9pbnQgdG8gdGhlIHBsYW5lLgogKi8KZmxvYXQgY3ptX3BsYW5lRGlzdGFuY2UodmVjMyBwbGFuZU5vcm1hbCwgZmxvYXQgcGxhbmVEaXN0YW5jZSwgdmVjMyBwb2ludCkgewogICAgcmV0dXJuIChkb3QocGxhbmVOb3JtYWwsIHBvaW50KSArIHBsYW5lRGlzdGFuY2UpOwp9CmB9KTt2YXIgWmssSWs9UygoKT0+e1prPWAvKioKICogQ29tcHV0ZXMgdGhlIHBvaW50IGFsb25nIGEgcmF5IGF0IHRoZSBnaXZlbiB0aW1lLiAgPGNvZGU+dGltZTwvY29kZT4gY2FuIGJlIHBvc2l0aXZlLCBuZWdhdGl2ZSwgb3IgemVyby4KICoKICogQG5hbWUgY3ptX3BvaW50QWxvbmdSYXkKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2N6bV9yYXl9IHJheSBUaGUgcmF5IHRvIGNvbXB1dGUgdGhlIHBvaW50IGFsb25nLgogKiBAcGFyYW0ge2Zsb2F0fSB0aW1lIFRoZSB0aW1lIGFsb25nIHRoZSByYXkuCiAqIAogKiBAcmV0dXJucyB7dmVjM30gVGhlIHBvaW50IGFsb25nIHRoZSByYXkgYXQgdGhlIGdpdmVuIHRpbWUuCiAqIAogKiBAZXhhbXBsZQogKiBjem1fcmF5IHJheSA9IGN6bV9yYXkodmVjMygwLjApLCB2ZWMzKDEuMCwgMC4wLCAwLjApKTsgLy8gb3JpZ2luLCBkaXJlY3Rpb24KICogdmVjMyB2ID0gY3ptX3BvaW50QWxvbmdSYXkocmF5LCAyLjApOyAvLyAoMi4wLCAwLjAsIDAuMCkKICovCnZlYzMgY3ptX3BvaW50QWxvbmdSYXkoY3ptX3JheSByYXksIGZsb2F0IHRpbWUpCnsKICAgIHJldHVybiByYXkub3JpZ2luICsgKHRpbWUgKiByYXkuZGlyZWN0aW9uKTsKfQpgfSk7dmFyIHBrLHVrPVMoKCk9Pntwaz1gLyoqCiAqIERPQ19UQkEKICoKICogQG5hbWUgY3ptX3JheUVsbGlwc29pZEludGVyc2VjdGlvbkludGVydmFsCiAqIEBnbHNsRnVuY3Rpb24KICovCmN6bV9yYXlTZWdtZW50IGN6bV9yYXlFbGxpcHNvaWRJbnRlcnNlY3Rpb25JbnRlcnZhbChjem1fcmF5IHJheSwgdmVjMyBlbGxpcHNvaWRfY2VudGVyLCB2ZWMzIGVsbGlwc29pZF9pbnZlcnNlUmFkaWkpCnsKICAgLy8gcmF5IGFuZCBlbGxpcHNvaWQgY2VudGVyIGluIGV5ZSBjb29yZGluYXRlcy4gIHJhZGlpIGluIG1vZGVsIGNvb3JkaW5hdGVzLgogICAgdmVjMyBxID0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQocmF5Lm9yaWdpbiwgMS4wKSkueHl6OwogICAgdmVjMyB3ID0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQocmF5LmRpcmVjdGlvbiwgMC4wKSkueHl6OwoKICAgIHEgPSBxIC0gZWxsaXBzb2lkX2ludmVyc2VSYWRpaSAqIChjem1faW52ZXJzZU1vZGVsVmlldyAqIHZlYzQoZWxsaXBzb2lkX2NlbnRlciwgMS4wKSkueHl6OwoKICAgIGZsb2F0IHEyID0gZG90KHEsIHEpOwogICAgZmxvYXQgcXcgPSBkb3QocSwgdyk7CgogICAgaWYgKHEyID4gMS4wKSAvLyBPdXRzaWRlIGVsbGlwc29pZC4KICAgIHsKICAgICAgICBpZiAocXcgPj0gMC4wKSAvLyBMb29raW5nIG91dHdhcmQgb3IgdGFuZ2VudCAoMCBpbnRlcnNlY3Rpb25zKS4KICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBjem1fZW1wdHlSYXlTZWdtZW50OwogICAgICAgIH0KICAgICAgICBlbHNlIC8vIHF3IDwgMC4wLgogICAgICAgIHsKICAgICAgICAgICAgZmxvYXQgcXcyID0gcXcgKiBxdzsKICAgICAgICAgICAgZmxvYXQgZGlmZmVyZW5jZSA9IHEyIC0gMS4wOyAvLyBQb3NpdGl2ZWx5IHZhbHVlZC4KICAgICAgICAgICAgZmxvYXQgdzIgPSBkb3Qodywgdyk7CiAgICAgICAgICAgIGZsb2F0IHByb2R1Y3QgPSB3MiAqIGRpZmZlcmVuY2U7CgogICAgICAgICAgICBpZiAocXcyIDwgcHJvZHVjdCkgLy8gSW1hZ2luYXJ5IHJvb3RzICgwIGludGVyc2VjdGlvbnMpLgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gY3ptX2VtcHR5UmF5U2VnbWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChxdzIgPiBwcm9kdWN0KSAvLyBEaXN0aW5jdCByb290cyAoMiBpbnRlcnNlY3Rpb25zKS4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxvYXQgZGlzY3JpbWluYW50ID0gcXcgKiBxdyAtIHByb2R1Y3Q7CiAgICAgICAgICAgICAgICBmbG9hdCB0ZW1wID0gLXF3ICsgc3FydChkaXNjcmltaW5hbnQpOyAvLyBBdm9pZCBjYW5jZWxsYXRpb24uCiAgICAgICAgICAgICAgICBmbG9hdCByb290MCA9IHRlbXAgLyB3MjsKICAgICAgICAgICAgICAgIGZsb2F0IHJvb3QxID0gZGlmZmVyZW5jZSAvIHRlbXA7CiAgICAgICAgICAgICAgICBpZiAocm9vdDAgPCByb290MSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQocm9vdDAsIHJvb3QxKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQocm9vdDEsIHJvb3QwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIC8vIHF3MiA9PSBwcm9kdWN0LiAgUmVwZWF0ZWQgcm9vdHMgKDIgaW50ZXJzZWN0aW9ucykuCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZsb2F0IHJvb3QgPSBzcXJ0KGRpZmZlcmVuY2UgLyB3Mik7CiAgICAgICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQocm9vdCwgcm9vdCk7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYgKHEyIDwgMS4wKSAvLyBJbnNpZGUgZWxsaXBzb2lkICgyIGludGVyc2VjdGlvbnMpLgogICAgewogICAgICAgIGZsb2F0IGRpZmZlcmVuY2UgPSBxMiAtIDEuMDsgLy8gTmVnYXRpdmVseSB2YWx1ZWQuCiAgICAgICAgZmxvYXQgdzIgPSBkb3Qodywgdyk7CiAgICAgICAgZmxvYXQgcHJvZHVjdCA9IHcyICogZGlmZmVyZW5jZTsgLy8gTmVnYXRpdmVseSB2YWx1ZWQuCiAgICAgICAgZmxvYXQgZGlzY3JpbWluYW50ID0gcXcgKiBxdyAtIHByb2R1Y3Q7CiAgICAgICAgZmxvYXQgdGVtcCA9IC1xdyArIHNxcnQoZGlzY3JpbWluYW50KTsgLy8gUG9zaXRpdmVseSB2YWx1ZWQuCiAgICAgICAgY3ptX3JheVNlZ21lbnQgaSA9IGN6bV9yYXlTZWdtZW50KDAuMCwgdGVtcCAvIHcyKTsKICAgICAgICByZXR1cm4gaTsKICAgIH0KICAgIGVsc2UgLy8gcTIgPT0gMS4wLiBPbiBlbGxpcHNvaWQuCiAgICB7CiAgICAgICAgaWYgKHF3IDwgMC4wKSAvLyBMb29raW5nIGlud2FyZC4KICAgICAgICB7CiAgICAgICAgICAgIGZsb2F0IHcyID0gZG90KHcsIHcpOwogICAgICAgICAgICBjem1fcmF5U2VnbWVudCBpID0gY3ptX3JheVNlZ21lbnQoMC4wLCAtcXcgLyB3Mik7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICBlbHNlIC8vIHF3ID49IDAuMC4gIExvb2tpbmcgb3V0d2FyZCBvciB0YW5nZW50LgogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIGN6bV9lbXB0eVJheVNlZ21lbnQ7CiAgICAgICAgfQogICAgfQp9CmB9KTt2YXIgQ2ssZ2s9UygoKT0+e0NrPWAvKioKICogQ29tcHV0ZSB0aGUgaW50ZXJzZWN0aW9uIGludGVydmFsIG9mIGEgcmF5IHdpdGggYSBzcGhlcmUuCiAqCiAqIEBuYW1lIGN6bV9yYXlTcGhlcmVJbnRlcnNlY3Rpb25JbnRlcnZhbAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7Y3ptX3JheX0gcmF5IFRoZSByYXkuCiAqIEBwYXJhbSB7dmVjM30gY2VudGVyIFRoZSBjZW50ZXIgb2YgdGhlIHNwaGVyZS4KICogQHBhcmFtIHtmbG9hdH0gcmFkaXVzIFRoZSByYWRpdXMgb2YgdGhlIHNwaGVyZS4KICogQHJldHVybiB7Y3ptX3JheVNlZ21lbnR9IFRoZSBpbnRlcnNlY3Rpb24gaW50ZXJ2YWwgb2YgdGhlIHJheSB3aXRoIHRoZSBzcGhlcmUuCiAqLwpjem1fcmF5U2VnbWVudCBjem1fcmF5U3BoZXJlSW50ZXJzZWN0aW9uSW50ZXJ2YWwoY3ptX3JheSByYXksIHZlYzMgY2VudGVyLCBmbG9hdCByYWRpdXMpCnsKICAgIHZlYzMgbyA9IHJheS5vcmlnaW47CiAgICB2ZWMzIGQgPSByYXkuZGlyZWN0aW9uOwoKICAgIHZlYzMgb2MgPSBvIC0gY2VudGVyOwoKICAgIGZsb2F0IGEgPSBkb3QoZCwgZCk7CiAgICBmbG9hdCBiID0gMi4wICogZG90KGQsIG9jKTsKICAgIGZsb2F0IGMgPSBkb3Qob2MsIG9jKSAtIChyYWRpdXMgKiByYWRpdXMpOwoKICAgIGZsb2F0IGRldCA9IChiICogYikgLSAoNC4wICogYSAqIGMpOwoKICAgIGlmIChkZXQgPCAwLjApIHsKICAgICAgICByZXR1cm4gY3ptX2VtcHR5UmF5U2VnbWVudDsKICAgIH0KCiAgICBmbG9hdCBzcXJ0RGV0ID0gc3FydChkZXQpOwoKICAgIGZsb2F0IHQwID0gKC1iIC0gc3FydERldCkgLyAoMi4wICogYSk7CiAgICBmbG9hdCB0MSA9ICgtYiArIHNxcnREZXQpIC8gKDIuMCAqIGEpOwoKICAgIGN6bV9yYXlTZWdtZW50IHJlc3VsdCA9IGN6bV9yYXlTZWdtZW50KHQwLCB0MSk7CiAgICByZXR1cm4gcmVzdWx0Owp9CmB9KTt2YXIgVGssTms9UygoKT0+e1RrPWBmbG9hdCBjem1fcmVhZERlcHRoKHNhbXBsZXIyRCBkZXB0aFRleHR1cmUsIHZlYzIgdGV4Q29vcmRzKQp7CiAgICByZXR1cm4gY3ptX3JldmVyc2VMb2dEZXB0aCh0ZXh0dXJlKGRlcHRoVGV4dHVyZSwgdGV4Q29vcmRzKS5yKTsKfQpgfSk7dmFyIEZrLGJrPVMoKCk9PntGaz1gLyoqCiAqIFJlYWRzIGEgdmFsdWUgcHJldmlvdXNseSB0cmFuc2Zvcm1lZCB3aXRoIHtAbGluayBjem1fd3JpdGVOb25QZXJzcGVjdGl2ZX0KICogYnkgZGl2aWRpbmcgaXQgYnkgXGB3XGAsIHRoZSB2YWx1ZSB1c2VkIGluIHRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUuCiAqIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGluIGEgZnJhZ21lbnQgc2hhZGVyIHRvIGFjY2VzcyBhCiAqIFxgdmFyeWluZ1xgIHRoYXQgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHBlcnNwZWN0aXZlIGludGVycG9sYXRpb24uCiAqIEZvciBleGFtcGxlLCBzY3JlZW4tc3BhY2UgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhlIHZhbHVlIHNob3VsZCBoYXZlIGJlZW4KICogcHJldmlvdXNseSB3cml0dGVuIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIHdpdGggYSBjYWxsIHRvCiAqIHtAbGluayBjem1fd3JpdGVOb25QZXJzcGVjdGl2ZX0uCiAqCiAqIEBuYW1lIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSB2YWx1ZSBUaGUgbm9uLXBlcnNwZWN0aXZlIHZhbHVlIHRvIGJlIHJlYWQuCiAqIEBwYXJhbSB7ZmxvYXR9IG9uZU92ZXJXIE9uZSBvdmVyIHRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUgdmFsdWUsIFxgd1xgLiBVc3VhbGx5IHRoaXMgaXMgc2ltcGx5IFxgZ2xfRnJhZ0Nvb3JkLndcYC4KICogQHJldHVybnMge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSBUaGUgdXNhYmxlIHZhbHVlLgogKi8KZmxvYXQgY3ptX3JlYWROb25QZXJzcGVjdGl2ZShmbG9hdCB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9Cgp2ZWMyIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUodmVjMiB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9Cgp2ZWMzIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUodmVjMyB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9Cgp2ZWM0IGN6bV9yZWFkTm9uUGVyc3BlY3RpdmUodmVjNCB2YWx1ZSwgZmxvYXQgb25lT3ZlclcpIHsKICAgIHJldHVybiB2YWx1ZSAqIG9uZU92ZXJXOwp9CmB9KTt2YXIgWWssVms9UygoKT0+e1lrPWBmbG9hdCBjem1fcmV2ZXJzZUxvZ0RlcHRoKGZsb2F0IGxvZ1opCnsKI2lmZGVmIExPR19ERVBUSAogICAgZmxvYXQgbmVhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS54OwogICAgZmxvYXQgZmFyID0gY3ptX2N1cnJlbnRGcnVzdHVtLnk7CiAgICBmbG9hdCBsb2cyRGVwdGggPSBsb2daICogY3ptX2xvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZTsKICAgIGZsb2F0IGRlcHRoRnJvbU5lYXIgPSBwb3coMi4wLCBsb2cyRGVwdGgpIC0gMS4wOwogICAgcmV0dXJuIGZhciAqICgxLjAgLSBuZWFyIC8gKGRlcHRoRnJvbU5lYXIgKyBuZWFyKSkgLyAoZmFyIC0gbmVhcik7CiNlbmRpZgogICAgcmV0dXJuIGxvZ1o7Cn0KYH0pO3ZhciBTayxPaz1TKCgpPT57U2s9YC8qKgogKiBSb3VuZCBhIGZsb2F0aW5nIHBvaW50IHZhbHVlLiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBiZWNhdXNlIHJvdW5kKCkgZG9lc24ndAogKiBleGlzdCBpbiBHTFNMIDEuMDAuIAogKgogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSB2YWx1ZSBUaGUgdmFsdWUgdG8gcm91bmQKICogQHBhcmFtIHtmbG9hdHx2ZWMyfHZlYzN8dmVjM30gVGhlIHJvdW5kZWQgdmFsdWUuIFRoZSB0eXBlIG1hdGNoZXMgdGhlIGlucHV0LgogKi8KZmxvYXQgY3ptX3JvdW5kKGZsb2F0IHZhbHVlKSB7CiAgcmV0dXJuIGZsb29yKHZhbHVlICsgMC41KTsKfQoKdmVjMiBjem1fcm91bmQodmVjMiB2YWx1ZSkgewogIHJldHVybiBmbG9vcih2YWx1ZSArIDAuNSk7Cn0KCnZlYzMgY3ptX3JvdW5kKHZlYzMgdmFsdWUpIHsKICByZXR1cm4gZmxvb3IodmFsdWUgKyAwLjUpOwp9Cgp2ZWM0IGN6bV9yb3VuZCh2ZWM0IHZhbHVlKSB7CiAgcmV0dXJuIGZsb29yKHZhbHVlICsgMC41KTsKfQpgfSk7dmFyIEJrLEdrPVMoKCk9PntCaz1gLyoqCiAqIFNhbXBsZXMgdGhlIDQgbmVpZ2hib3JpbmcgcGl4ZWxzIGFuZCByZXR1cm4gdGhlIHdlaWdodGVkIGF2ZXJhZ2UuCiAqCiAqIEBwcml2YXRlCiAqLwp2ZWMzIGN6bV9zYW1wbGVPY3RhaGVkcmFsUHJvamVjdGlvbldpdGhGaWx0ZXJpbmcoc2FtcGxlcjJEIHByb2plY3RlZE1hcCwgdmVjMiB0ZXh0dXJlU2l6ZSwgdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGxvZCkKewogICAgZGlyZWN0aW9uIC89IGRvdCh2ZWMzKDEuMCksIGFicyhkaXJlY3Rpb24pKTsKICAgIHZlYzIgcmV2ID0gYWJzKGRpcmVjdGlvbi56eCkgLSB2ZWMyKDEuMCk7CiAgICB2ZWMyIG5lZyA9IHZlYzIoZGlyZWN0aW9uLnggPCAwLjAgPyByZXYueCA6IC1yZXYueCwKICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24ueiA8IDAuMCA/IHJldi55IDogLXJldi55KTsKICAgIHZlYzIgdXYgPSBkaXJlY3Rpb24ueSA8IDAuMCA/IG5lZyA6IGRpcmVjdGlvbi54ejsKICAgIHZlYzIgY29vcmQgPSAwLjUgKiB1diArIHZlYzIoMC41KTsKICAgIHZlYzIgcGl4ZWwgPSAxLjAgLyB0ZXh0dXJlU2l6ZTsKCiAgICBpZiAobG9kID4gMC4wKQogICAgewogICAgICAgIC8vIEVhY2ggc3Vic2VxZXVlbnQgbWlwIGxldmVsIGlzIGhhbGYgdGhlIHNpemUKICAgICAgICBmbG9hdCBzY2FsZSA9IDEuMCAvIHBvdygyLjAsIGxvZCk7CiAgICAgICAgZmxvYXQgb2Zmc2V0ID0gKCh0ZXh0dXJlU2l6ZS55ICsgMS4wKSAvIHRleHR1cmVTaXplLngpOwoKICAgICAgICBjb29yZC54ICo9IG9mZnNldDsKICAgICAgICBjb29yZCAqPSBzY2FsZTsKCiAgICAgICAgY29vcmQueCArPSBvZmZzZXQgKyBwaXhlbC54OwogICAgICAgIGNvb3JkLnkgKz0gKDEuMCAtICgxLjAgLyBwb3coMi4wLCBsb2QgLSAxLjApKSkgKyBwaXhlbC55ICogKGxvZCAtIDEuMCkgKiAyLjA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgY29vcmQueCAqPSAodGV4dHVyZVNpemUueSAvIHRleHR1cmVTaXplLngpOwogICAgfQoKICAgIC8vIERvIGJpbGluZWFyIGZpbHRlcmluZwogICAgI2lmbmRlZiBPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKICAgICAgICB2ZWMzIGNvbG9yMSA9IHRleHR1cmUocHJvamVjdGVkTWFwLCBjb29yZCArIHZlYzIoMC4wLCBwaXhlbC55KSkucmdiOwogICAgICAgIHZlYzMgY29sb3IyID0gdGV4dHVyZShwcm9qZWN0ZWRNYXAsIGNvb3JkICsgdmVjMihwaXhlbC54LCAwLjApKS5yZ2I7CiAgICAgICAgdmVjMyBjb2xvcjMgPSB0ZXh0dXJlKHByb2plY3RlZE1hcCwgY29vcmQgKyBwaXhlbCkucmdiOwogICAgICAgIHZlYzMgY29sb3I0ID0gdGV4dHVyZShwcm9qZWN0ZWRNYXAsIGNvb3JkKS5yZ2I7CgogICAgICAgIHZlYzIgdGV4dHVyZVBvc2l0aW9uID0gY29vcmQgKiB0ZXh0dXJlU2l6ZTsKCiAgICAgICAgZmxvYXQgZnUgPSBmcmFjdCh0ZXh0dXJlUG9zaXRpb24ueCk7CiAgICAgICAgZmxvYXQgZnYgPSBmcmFjdCh0ZXh0dXJlUG9zaXRpb24ueSk7CgogICAgICAgIHZlYzMgYXZlcmFnZTEgPSBtaXgoY29sb3I0LCBjb2xvcjIsIGZ1KTsKICAgICAgICB2ZWMzIGF2ZXJhZ2UyID0gbWl4KGNvbG9yMSwgY29sb3IzLCBmdSk7CgogICAgICAgIHZlYzMgY29sb3IgPSBtaXgoYXZlcmFnZTEsIGF2ZXJhZ2UyLCBmdik7CiAgICAjZWxzZQogICAgICAgIHZlYzMgY29sb3IgPSB0ZXh0dXJlKHByb2plY3RlZE1hcCwgY29vcmQpLnJnYjsKICAgICNlbmRpZgoKICAgIHJldHVybiBjb2xvcjsKfQoKCi8qKgogKiBTYW1wbGVzIGZyb20gYSBjdWJlIG1hcCB0aGF0IGhhcyBiZWVuIHByb2plY3RlZCB1c2luZyBhbiBvY3RhaGVkcmFsIHByb2plY3Rpb24gZnJvbSB0aGUgZ2l2ZW4gZGlyZWN0aW9uLgogKgogKiBAbmFtZSBjem1fc2FtcGxlT2N0YWhlZHJhbFByb2plY3Rpb24KICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3NhbXBsZXIyRH0gcHJvamVjdGVkTWFwIFRoZSB0ZXh0dXJlIHdpdGggdGhlIG9jdGFoZWRyYWwgcHJvamVjdGVkIGN1YmUgbWFwLgogKiBAcGFyYW0ge3ZlYzJ9IHRleHR1cmVTaXplIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IGRpbWVuc2lvbnMgaW4gcGl4ZWxzIG9mIHRoZSBwcm9qZWN0ZWQgbWFwLgogKiBAcGFyYW0ge3ZlYzN9IGRpcmVjdGlvbiBUaGUgbm9ybWFsaXplZCBkaXJlY3Rpb24gdXNlZCB0byBzYW1wbGUgdGhlIGN1YmUgbWFwLgogKiBAcGFyYW0ge2Zsb2F0fSBsb2QgVGhlIGxldmVsIG9mIGRldGFpbCB0byBzYW1wbGUuCiAqIEBwYXJhbSB7ZmxvYXR9IG1heExvZCBUaGUgbWF4aW11bSBsZXZlbCBvZiBkZXRhaWwuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3Igb2YgdGhlIGN1YmUgbWFwIGF0IHRoZSBkaXJlY3Rpb24uCiAqLwp2ZWMzIGN6bV9zYW1wbGVPY3RhaGVkcmFsUHJvamVjdGlvbihzYW1wbGVyMkQgcHJvamVjdGVkTWFwLCB2ZWMyIHRleHR1cmVTaXplLCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgbG9kLCBmbG9hdCBtYXhMb2QpIHsKICAgIGZsb2F0IGN1cnJlbnRMb2QgPSBmbG9vcihsb2QgKyAwLjUpOwogICAgZmxvYXQgbmV4dExvZCA9IG1pbihjdXJyZW50TG9kICsgMS4wLCBtYXhMb2QpOwoKICAgIHZlYzMgY29sb3JDdXJyZW50TG9kID0gY3ptX3NhbXBsZU9jdGFoZWRyYWxQcm9qZWN0aW9uV2l0aEZpbHRlcmluZyhwcm9qZWN0ZWRNYXAsIHRleHR1cmVTaXplLCBkaXJlY3Rpb24sIGN1cnJlbnRMb2QpOwogICAgdmVjMyBjb2xvck5leHRMb2QgPSBjem1fc2FtcGxlT2N0YWhlZHJhbFByb2plY3Rpb25XaXRoRmlsdGVyaW5nKHByb2plY3RlZE1hcCwgdGV4dHVyZVNpemUsIGRpcmVjdGlvbiwgbmV4dExvZCk7CgogICAgcmV0dXJuIG1peChjb2xvck5leHRMb2QsIGNvbG9yQ3VycmVudExvZCwgbmV4dExvZCAtIGxvZCk7Cn0KYH0pO3ZhciBXayxEaz1TKCgpPT57V2s9YC8qKgogKiBBZGp1c3RzIHRoZSBzYXR1cmF0aW9uIG9mIGEgY29sb3IuCiAqIAogKiBAbmFtZSBjem1fc2F0dXJhdGlvbgogKiBAZ2xzbEZ1bmN0aW9uCiAqIAogKiBAcGFyYW0ge3ZlYzN9IHJnYiBUaGUgY29sb3IuCiAqIEBwYXJhbSB7ZmxvYXR9IGFkanVzdG1lbnQgVGhlIGFtb3VudCB0byBhZGp1c3QgdGhlIHNhdHVyYXRpb24gb2YgdGhlIGNvbG9yLgogKgogKiBAcmV0dXJucyB7ZmxvYXR9IFRoZSBjb2xvciB3aXRoIHRoZSBzYXR1cmF0aW9uIGFkanVzdGVkLgogKgogKiBAZXhhbXBsZQogKiB2ZWMzIGdyZXlTY2FsZSA9IGN6bV9zYXR1cmF0aW9uKGNvbG9yLCAwLjApOwogKiB2ZWMzIGRvdWJsZVNhdHVyYXRpb24gPSBjem1fc2F0dXJhdGlvbihjb2xvciwgMi4wKTsKICovCnZlYzMgY3ptX3NhdHVyYXRpb24odmVjMyByZ2IsIGZsb2F0IGFkanVzdG1lbnQpCnsKICAgIC8vIEFsZ29yaXRobSBmcm9tIENoYXB0ZXIgMTYgb2YgT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UKICAgIGNvbnN0IHZlYzMgVyA9IHZlYzMoMC4yMTI1LCAwLjcxNTQsIDAuMDcyMSk7CiAgICB2ZWMzIGludGVuc2l0eSA9IHZlYzMoZG90KHJnYiwgVykpOwogICAgcmV0dXJuIG1peChpbnRlbnNpdHksIHJnYiwgYWRqdXN0bWVudCk7Cn0KYH0pO3ZhciBVayxNaz1TKCgpPT57VWs9YApmbG9hdCBjem1fc2FtcGxlU2hhZG93TWFwKGhpZ2hwIHNhbXBsZXJDdWJlIHNoYWRvd01hcCwgdmVjMyBkKQp7CiAgICByZXR1cm4gY3ptX3VucGFja0RlcHRoKGN6bV90ZXh0dXJlQ3ViZShzaGFkb3dNYXAsIGQpKTsKfQoKZmxvYXQgY3ptX3NhbXBsZVNoYWRvd01hcChoaWdocCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHV2KQp7CiNpZmRlZiBVU0VfU0hBRE9XX0RFUFRIX1RFWFRVUkUKICAgIHJldHVybiB0ZXh0dXJlKHNoYWRvd01hcCwgdXYpLnI7CiNlbHNlCiAgICByZXR1cm4gY3ptX3VucGFja0RlcHRoKHRleHR1cmUoc2hhZG93TWFwLCB1dikpOwojZW5kaWYKfQoKZmxvYXQgY3ptX3NoYWRvd0RlcHRoQ29tcGFyZShzYW1wbGVyQ3ViZSBzaGFkb3dNYXAsIHZlYzMgdXYsIGZsb2F0IGRlcHRoKQp7CiAgICByZXR1cm4gc3RlcChkZXB0aCwgY3ptX3NhbXBsZVNoYWRvd01hcChzaGFkb3dNYXAsIHV2KSk7Cn0KCmZsb2F0IGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiB1diwgZmxvYXQgZGVwdGgpCnsKICAgIHJldHVybiBzdGVwKGRlcHRoLCBjem1fc2FtcGxlU2hhZG93TWFwKHNoYWRvd01hcCwgdXYpKTsKfQpgfSk7dmFyIFFrLGtrPVMoKCk9PntRaz1gCmZsb2F0IGN6bV9wcml2YXRlX3NoYWRvd1Zpc2liaWxpdHkoZmxvYXQgdmlzaWJpbGl0eSwgZmxvYXQgbkRvdEwsIGZsb2F0IG5vcm1hbFNoYWRpbmdTbW9vdGgsIGZsb2F0IGRhcmtuZXNzKQp7CiNpZmRlZiBVU0VfTk9STUFMX1NIQURJTkcKI2lmZGVmIFVTRV9OT1JNQUxfU0hBRElOR19TTU9PVEgKICAgIGZsb2F0IHN0cmVuZ3RoID0gY2xhbXAobkRvdEwgLyBub3JtYWxTaGFkaW5nU21vb3RoLCAwLjAsIDEuMCk7CiNlbHNlCiAgICBmbG9hdCBzdHJlbmd0aCA9IHN0ZXAoMC4wLCBuRG90TCk7CiNlbmRpZgogICAgdmlzaWJpbGl0eSAqPSBzdHJlbmd0aDsKI2VuZGlmCgogICAgdmlzaWJpbGl0eSA9IG1heCh2aXNpYmlsaXR5LCBkYXJrbmVzcyk7CiAgICByZXR1cm4gdmlzaWJpbGl0eTsKfQoKI2lmZGVmIFVTRV9DVUJFX01BUF9TSEFET1cKZmxvYXQgY3ptX3NoYWRvd1Zpc2liaWxpdHkoc2FtcGxlckN1YmUgc2hhZG93TWFwLCBjem1fc2hhZG93UGFyYW1ldGVycyBzaGFkb3dQYXJhbWV0ZXJzKQp7CiAgICBmbG9hdCBkZXB0aEJpYXMgPSBzaGFkb3dQYXJhbWV0ZXJzLmRlcHRoQmlhczsKICAgIGZsb2F0IGRlcHRoID0gc2hhZG93UGFyYW1ldGVycy5kZXB0aDsKICAgIGZsb2F0IG5Eb3RMID0gc2hhZG93UGFyYW1ldGVycy5uRG90TDsKICAgIGZsb2F0IG5vcm1hbFNoYWRpbmdTbW9vdGggPSBzaGFkb3dQYXJhbWV0ZXJzLm5vcm1hbFNoYWRpbmdTbW9vdGg7CiAgICBmbG9hdCBkYXJrbmVzcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGFya25lc3M7CiAgICB2ZWMzIHV2dyA9IHNoYWRvd1BhcmFtZXRlcnMudGV4Q29vcmRzOwoKICAgIGRlcHRoIC09IGRlcHRoQmlhczsKICAgIGZsb2F0IHZpc2liaWxpdHkgPSBjem1fc2hhZG93RGVwdGhDb21wYXJlKHNoYWRvd01hcCwgdXZ3LCBkZXB0aCk7CiAgICByZXR1cm4gY3ptX3ByaXZhdGVfc2hhZG93VmlzaWJpbGl0eSh2aXNpYmlsaXR5LCBuRG90TCwgbm9ybWFsU2hhZGluZ1Ntb290aCwgZGFya25lc3MpOwp9CiNlbHNlCmZsb2F0IGN6bV9zaGFkb3dWaXNpYmlsaXR5KHNhbXBsZXIyRCBzaGFkb3dNYXAsIGN6bV9zaGFkb3dQYXJhbWV0ZXJzIHNoYWRvd1BhcmFtZXRlcnMpCnsKICAgIGZsb2F0IGRlcHRoQmlhcyA9IHNoYWRvd1BhcmFtZXRlcnMuZGVwdGhCaWFzOwogICAgZmxvYXQgZGVwdGggPSBzaGFkb3dQYXJhbWV0ZXJzLmRlcHRoOwogICAgZmxvYXQgbkRvdEwgPSBzaGFkb3dQYXJhbWV0ZXJzLm5Eb3RMOwogICAgZmxvYXQgbm9ybWFsU2hhZGluZ1Ntb290aCA9IHNoYWRvd1BhcmFtZXRlcnMubm9ybWFsU2hhZGluZ1Ntb290aDsKICAgIGZsb2F0IGRhcmtuZXNzID0gc2hhZG93UGFyYW1ldGVycy5kYXJrbmVzczsKICAgIHZlYzIgdXYgPSBzaGFkb3dQYXJhbWV0ZXJzLnRleENvb3JkczsKCiAgICBkZXB0aCAtPSBkZXB0aEJpYXM7CiNpZmRlZiBVU0VfU09GVF9TSEFET1dTCiAgICB2ZWMyIHRleGVsU3RlcFNpemUgPSBzaGFkb3dQYXJhbWV0ZXJzLnRleGVsU3RlcFNpemU7CiAgICBmbG9hdCByYWRpdXMgPSAxLjA7CiAgICBmbG9hdCBkeDAgPSAtdGV4ZWxTdGVwU2l6ZS54ICogcmFkaXVzOwogICAgZmxvYXQgZHkwID0gLXRleGVsU3RlcFNpemUueSAqIHJhZGl1czsKICAgIGZsb2F0IGR4MSA9IHRleGVsU3RlcFNpemUueCAqIHJhZGl1czsKICAgIGZsb2F0IGR5MSA9IHRleGVsU3RlcFNpemUueSAqIHJhZGl1czsKICAgIGZsb2F0IHZpc2liaWxpdHkgPSAoCiAgICAgICAgY3ptX3NoYWRvd0RlcHRoQ29tcGFyZShzaGFkb3dNYXAsIHV2LCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgwLCBkeTApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoMC4wLCBkeTApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgxLCBkeTApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgwLCAwLjApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgxLCAwLjApLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgwLCBkeTEpLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoMC4wLCBkeTEpLCBkZXB0aCkgKwogICAgICAgIGN6bV9zaGFkb3dEZXB0aENvbXBhcmUoc2hhZG93TWFwLCB1diArIHZlYzIoZHgxLCBkeTEpLCBkZXB0aCkKICAgICkgKiAoMS4wIC8gOS4wKTsKI2Vsc2UKICAgIGZsb2F0IHZpc2liaWxpdHkgPSBjem1fc2hhZG93RGVwdGhDb21wYXJlKHNoYWRvd01hcCwgdXYsIGRlcHRoKTsKI2VuZGlmCgogICAgcmV0dXJuIGN6bV9wcml2YXRlX3NoYWRvd1Zpc2liaWxpdHkodmlzaWJpbGl0eSwgbkRvdEwsIG5vcm1hbFNoYWRpbmdTbW9vdGgsIGRhcmtuZXNzKTsKfQojZW5kaWYKYH0pO3ZhciBMayx5az1TKCgpPT57TGs9YC8qKgogKiBSZXR1cm5zIDEuMCBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgcG9zaXRpdmUgb3IgemVybywgYW5kIC0xLjAgaWYgaXQgaXMgbmVnYXRpdmUuICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIEdMU0wKICogYnVpbHQtaW4gZnVuY3Rpb24gPGNvZGU+c2lnbjwvY29kZT4gZXhjZXB0IHRoYXQgcmV0dXJucyAxLjAgaW5zdGVhZCBvZiAwLjAgd2hlbiB0aGUgaW5wdXQgdmFsdWUgaXMgMC4wLgogKiAKICogQG5hbWUgY3ptX3NpZ25Ob3RaZXJvCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt9IHZhbHVlIFRoZSB2YWx1ZSBmb3Igd2hpY2ggdG8gZGV0ZXJtaW5lIHRoZSBzaWduLgogKiBAcmV0dXJucyB7fSAxLjAgaWYgdGhlIHZhbHVlIGlzIHBvc2l0aXZlIG9yIHplcm8sIC0xLjAgaWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlLgogKi8KZmxvYXQgY3ptX3NpZ25Ob3RaZXJvKGZsb2F0IHZhbHVlKQp7CiAgICByZXR1cm4gdmFsdWUgPj0gMC4wID8gMS4wIDogLTEuMDsKfQoKdmVjMiBjem1fc2lnbk5vdFplcm8odmVjMiB2YWx1ZSkKewogICAgcmV0dXJuIHZlYzIoY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLngpLCBjem1fc2lnbk5vdFplcm8odmFsdWUueSkpOwp9Cgp2ZWMzIGN6bV9zaWduTm90WmVybyh2ZWMzIHZhbHVlKQp7CiAgICByZXR1cm4gdmVjMyhjem1fc2lnbk5vdFplcm8odmFsdWUueCksIGN6bV9zaWduTm90WmVybyh2YWx1ZS55KSwgY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLnopKTsKfQoKdmVjNCBjem1fc2lnbk5vdFplcm8odmVjNCB2YWx1ZSkKewogICAgcmV0dXJuIHZlYzQoY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLngpLCBjem1fc2lnbk5vdFplcm8odmFsdWUueSksIGN6bV9zaWduTm90WmVybyh2YWx1ZS56KSwgY3ptX3NpZ25Ob3RaZXJvKHZhbHVlLncpKTsKfQpgfSk7dmFyIHdrLHhrPVMoKCk9Pnt3az1gLyoqCiAqIENvbXB1dGVzIGEgY29sb3IgZnJvbSB0aGUgdGhpcmQgb3JkZXIgc3BoZXJpY2FsIGhhcm1vbmljIGNvZWZmaWNpZW50cyBhbmQgYSBub3JtYWxpemVkIGRpcmVjdGlvbiB2ZWN0b3IuCiAqIDxwPgogKiBUaGUgb3JkZXIgb2YgdGhlIGNvZWZmaWNpZW50cyBpcyBbTDAwLCBMMV8xLCBMMTAsIEwxMSwgTDJfMiwgTDJfMSwgTDIwLCBMMjEsIEwyMl0uCiAqIDwvcD4KICoKICogQG5hbWUgY3ptX3NwaGVyaWNhbEhhcm1vbmljcwogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gbm9ybWFsIFRoZSBub3JtYWxpemVkIGRpcmVjdGlvbi4KICogQHBhcmFtIHt2ZWMzWzldfSBjb2VmZmljaWVudHMgVGhlIHRoaXJkIG9yZGVyIHNwaGVyaWNhbCBoYXJtb25pYyBjb2VmZmljaWVudHMuCiAqIEByZXR1cm5zIHt2ZWMzfSBUaGUgY29sb3IgYXQgdGhlIGRpcmVjdGlvbi4KICoKICogQHNlZSBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9wYXBlcnMvZW52bWFwL2Vudm1hcC5wZGYKICovCnZlYzMgY3ptX3NwaGVyaWNhbEhhcm1vbmljcyh2ZWMzIG5vcm1hbCwgdmVjMyBjb2VmZmljaWVudHNbOV0pCnsKICAgIHZlYzMgTDAwID0gY29lZmZpY2llbnRzWzBdOwogICAgdmVjMyBMMV8xID0gY29lZmZpY2llbnRzWzFdOwogICAgdmVjMyBMMTAgPSBjb2VmZmljaWVudHNbMl07CiAgICB2ZWMzIEwxMSA9IGNvZWZmaWNpZW50c1szXTsKICAgIHZlYzMgTDJfMiA9IGNvZWZmaWNpZW50c1s0XTsKICAgIHZlYzMgTDJfMSA9IGNvZWZmaWNpZW50c1s1XTsKICAgIHZlYzMgTDIwID0gY29lZmZpY2llbnRzWzZdOwogICAgdmVjMyBMMjEgPSBjb2VmZmljaWVudHNbN107CiAgICB2ZWMzIEwyMiA9IGNvZWZmaWNpZW50c1s4XTsKCiAgICBmbG9hdCB4ID0gbm9ybWFsLng7CiAgICBmbG9hdCB5ID0gbm9ybWFsLnk7CiAgICBmbG9hdCB6ID0gbm9ybWFsLno7CgogICAgcmV0dXJuCiAgICAgICAgICBMMDAKICAgICAgICArIEwxXzEgKiB5CiAgICAgICAgKyBMMTAgKiB6CiAgICAgICAgKyBMMTEgKiB4CiAgICAgICAgKyBMMl8yICogKHkgKiB4KQogICAgICAgICsgTDJfMSAqICh5ICogeikKICAgICAgICArIEwyMCAqICgzLjAgKiB6ICogeiAtIDEuMCkKICAgICAgICArIEwyMSAqICh6ICogeCkKICAgICAgICArIEwyMiAqICh4ICogeCAtIHkgKiB5KTsKfQpgfSk7dmFyIFBrLEprPVMoKCk9PntQaz1gLyoqCiAqIENvbnZlcnRzIGFuIHNSR0IgY29sb3IgdG8gYSBsaW5lYXIgUkdCIGNvbG9yLgogKgogKiBAcGFyYW0ge3ZlYzN8dmVjNH0gc3JnYkluIFRoZSBjb2xvciBpbiBzUkdCIHNwYWNlCiAqIEByZXR1cm5zIHt2ZWMzfHZlYzR9IFRoZSBjb2xvciBpbiBsaW5lYXIgY29sb3Igc3BhY2UuIFRoZSB2ZWN0b3IgdHlwZSBtYXRjaGVzIHRoZSBpbnB1dC4KICovCnZlYzMgY3ptX3NyZ2JUb0xpbmVhcih2ZWMzIHNyZ2JJbikKewogICAgcmV0dXJuIHBvdyhzcmdiSW4sIHZlYzMoMi4yKSk7Cn0KCnZlYzQgY3ptX3NyZ2JUb0xpbmVhcih2ZWM0IHNyZ2JJbikgCnsKICAgIHZlYzMgbGluZWFyT3V0ID0gcG93KHNyZ2JJbi5yZ2IsIHZlYzMoMi4yKSk7CiAgICByZXR1cm4gdmVjNChsaW5lYXJPdXQsIHNyZ2JJbi5hKTsKfQpgfSk7dmFyIGprLEhrPVMoKCk9Pntqaz1gLyoqCiAqIENyZWF0ZXMgYSBtYXRyaXggdGhhdCB0cmFuc2Zvcm1zIHZlY3RvcnMgZnJvbSB0YW5nZW50IHNwYWNlIHRvIGV5ZSBzcGFjZS4KICoKICogQG5hbWUgY3ptX3RhbmdlbnRUb0V5ZVNwYWNlTWF0cml4CiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWMzfSBub3JtYWxFQyBUaGUgbm9ybWFsIHZlY3RvciBpbiBleWUgY29vcmRpbmF0ZXMuCiAqIEBwYXJhbSB7dmVjM30gdGFuZ2VudEVDIFRoZSB0YW5nZW50IHZlY3RvciBpbiBleWUgY29vcmRpbmF0ZXMuCiAqIEBwYXJhbSB7dmVjM30gYml0YW5nZW50RUMgVGhlIGJpdGFuZ2VudCB2ZWN0b3IgaW4gZXllIGNvb3JkaW5hdGVzLgogKgogKiBAcmV0dXJucyB7bWF0M30gVGhlIG1hdHJpeCB0aGF0IHRyYW5zZm9ybXMgZnJvbSB0YW5nZW50IHNwYWNlIHRvIGV5ZSBzcGFjZS4KICoKICogQGV4YW1wbGUKICogbWF0MyB0YW5nZW50VG9FeWUgPSBjem1fdGFuZ2VudFRvRXllU3BhY2VNYXRyaXgobm9ybWFsRUMsIHRhbmdlbnRFQywgYml0YW5nZW50RUMpOwogKiB2ZWMzIG5vcm1hbCA9IHRhbmdlbnRUb0V5ZSAqIHRleHR1cmUobm9ybWFsTWFwLCBzdCkueHl6OwogKi8KbWF0MyBjem1fdGFuZ2VudFRvRXllU3BhY2VNYXRyaXgodmVjMyBub3JtYWxFQywgdmVjMyB0YW5nZW50RUMsIHZlYzMgYml0YW5nZW50RUMpCnsKICAgIHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKG5vcm1hbEVDKTsKICAgIHZlYzMgdGFuZ2VudCA9IG5vcm1hbGl6ZSh0YW5nZW50RUMpOwogICAgdmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoYml0YW5nZW50RUMpOwogICAgcmV0dXJuIG1hdDModGFuZ2VudC54ICAsIHRhbmdlbnQueSAgLCB0YW5nZW50LnosCiAgICAgICAgICAgICAgICBiaXRhbmdlbnQueCwgYml0YW5nZW50LnksIGJpdGFuZ2VudC56LAogICAgICAgICAgICAgICAgbm9ybWFsLnggICAsIG5vcm1hbC55ICAgLCBub3JtYWwueik7Cn0KYH0pO3ZhciB2ayx6az1TKCgpPT57dms9YC8qKgogKiBBIHdyYXBwZXIgYXJvdW5kIHRoZSB0ZXh0dXJlIChXZWJHTDIpIC8gdGV4dHVyZUN1YmUgKFdlYkdMMSkKICogZnVuY3Rpb24gdG8gYWxsb3cgZm9yIFdlYkdMIDEgc3VwcG9ydC4KICogCiAqIEBuYW1lIGN6bV90ZXh0dXJlQ3ViZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7c2FtcGxlckN1YmV9IHNhbXBsZXIgVGhlIHNhbXBsZXIuCiAqIEBwYXJhbSB7dmVjM30gcCBUaGUgY29vcmRpbmF0ZXMgdG8gc2FtcGxlIHRoZSB0ZXh0dXJlIGF0LgogKi8KdmVjNCBjem1fdGV4dHVyZUN1YmUoc2FtcGxlckN1YmUgc2FtcGxlciwgdmVjMyBwKSB7CiNpZiBfX1ZFUlNJT05fXyA9PSAzMDAKICAgIHJldHVybiB0ZXh0dXJlKHNhbXBsZXIsIHApOwojZWxzZSAgCiAgICByZXR1cm4gdGV4dHVyZUN1YmUoc2FtcGxlciwgcCk7CiNlbmRpZgp9YH0pO3ZhciBLayxYaz1TKCgpPT57S2s9YC8qKgogKiBUcmFuc2Zvcm1zIGEgcGxhbmUuCiAqIAogKiBAbmFtZSBjem1fdHJhbnNmb3JtUGxhbmUKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzR9IHBsYW5lIFRoZSBwbGFuZSBpbiBIZXNzaWFuIE5vcm1hbCBGb3JtLgogKiBAcGFyYW0ge21hdDR9IHRyYW5zZm9ybSBUaGUgaW52ZXJzZS10cmFuc3Bvc2Ugb2YgYSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCiAqLwp2ZWM0IGN6bV90cmFuc2Zvcm1QbGFuZSh2ZWM0IHBsYW5lLCBtYXQ0IHRyYW5zZm9ybSkgewogICAgdmVjNCB0cmFuc2Zvcm1lZFBsYW5lID0gdHJhbnNmb3JtICogcGxhbmU7CiAgICAvLyBDb252ZXJ0IHRoZSB0cmFuc2Zvcm1lZCBwbGFuZSB0byBIZXNzaWFuIE5vcm1hbCBGb3JtCiAgICBmbG9hdCBub3JtYWxNYWduaXR1ZGUgPSBsZW5ndGgodHJhbnNmb3JtZWRQbGFuZS54eXopOwogICAgcmV0dXJuIHRyYW5zZm9ybWVkUGxhbmUgLyBub3JtYWxNYWduaXR1ZGU7Cn0KYH0pO3ZhciBxaywkaz1TKCgpPT57cWs9YC8qKgogKiBUcmFuc2xhdGVzIGEgcG9zaXRpb24gKG9yIGFueSA8Y29kZT52ZWMzPC9jb2RlPikgdGhhdCB3YXMgZW5jb2RlZCB3aXRoIHtAbGluayBFbmNvZGVkQ2FydGVzaWFuM30sCiAqIGFuZCB0aGVuIHByb3ZpZGVkIHRvIHRoZSBzaGFkZXIgYXMgc2VwYXJhdGUgPGNvZGU+aGlnaDwvY29kZT4gYW5kIDxjb2RlPmxvdzwvY29kZT4gYml0cyB0bwogKiBiZSByZWxhdGl2ZSB0byB0aGUgZXllLiAgQXMgc2hvd24gaW4gdGhlIGV4YW1wbGUsIHRoZSBwb3NpdGlvbiBjYW4gdGhlbiBiZSB0cmFuc2Zvcm1lZCBpbiBleWUKICogb3IgY2xpcCBjb29yZGluYXRlcyB1c2luZyB7QGxpbmsgY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWV9IG9yIHtAbGluayBjem1fbW9kZWxWaWV3UHJvamVjdGlvblJlbGF0aXZlVG9FeWV9LAogKiByZXNwZWN0aXZlbHkuCiAqIDxwPgogKiBUaGlzIHRlY2huaXF1ZSwgY2FsbGVkIEdQVSBSVEUsIGVsaW1pbmF0ZXMgaml0dGVyaW5nIGFydGlmYWN0cyB3aGVuIHVzaW5nIGxhcmdlIGNvb3JkaW5hdGVzIGFzCiAqIGRlc2NyaWJlZCBpbiB7QGxpbmsgaHR0cDovL2hlbHAuYWdpLmNvbS9BR0lDb21wb25lbnRzL2h0bWwvQmxvZ1ByZWNpc2lvbnNQcmVjaXNpb25zLmh0bXxQcmVjaXNpb25zLCBQcmVjaXNpb25zfS4KICogPC9wPgogKgogKiBAbmFtZSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjM30gaGlnaCBUaGUgcG9zaXRpb24ncyBoaWdoIGJpdHMuCiAqIEBwYXJhbSB7dmVjM30gbG93IFRoZSBwb3NpdGlvbidzIGxvdyBiaXRzLgogKiBAcmV0dXJucyB7dmVjM30gVGhlIHBvc2l0aW9uIHRyYW5zbGF0ZWQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGNhbWVyYSdzIHBvc2l0aW9uLgogKgogKiBAZXhhbXBsZQogKiBpbiB2ZWMzIHBvc2l0aW9uSGlnaDsKICogaW4gdmVjMyBwb3NpdGlvbkxvdzsKICoKICogdm9pZCBtYWluKCkKICogewogKiAgIHZlYzQgcCA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHBvc2l0aW9uSGlnaCwgcG9zaXRpb25Mb3cpOwogKiAgIGdsX1Bvc2l0aW9uID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcDsKICogfQogKgogKiBAc2VlIGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllCiAqIEBzZWUgY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllCiAqIEBzZWUgY3ptX2NvbXB1dGVQb3NpdGlvbgogKiBAc2VlIEVuY29kZWRDYXJ0ZXNpYW4zCiAqLwp2ZWM0IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHZlYzMgaGlnaCwgdmVjMyBsb3cpCnsKICAgIHZlYzMgaGlnaERpZmZlcmVuY2UgPSBoaWdoIC0gY3ptX2VuY29kZWRDYW1lcmFQb3NpdGlvbk1DSGlnaDsKICAgIC8vIFRoaXMgY2hlY2sgaGFuZGxlcyB0aGUgY2FzZSB3aGVuIE5hTiB2YWx1ZXMgaGF2ZSBnb3R0ZW4gaW50byBcYGhpZ2hEaWZmZXJlbmNlXGAuCiAgICAvLyBTdWNoIGEgdGhpbmcgY291bGQgaGFwcGVuIG9uIGRldmljZXMgcnVubmluZyBpT1MuCiAgICBpZiAobGVuZ3RoKGhpZ2hEaWZmZXJlbmNlKSA9PSAwLjApIHsgIAogICAgICAgIGhpZ2hEaWZmZXJlbmNlID0gdmVjMygwKTsgIAogICAgfQogICAgdmVjMyBsb3dEaWZmZXJlbmNlID0gbG93IC0gY3ptX2VuY29kZWRDYW1lcmFQb3NpdGlvbk1DTG93OwoKICAgIHJldHVybiB2ZWM0KGhpZ2hEaWZmZXJlbmNlICsgbG93RGlmZmVyZW5jZSwgMS4wKTsKfQpgfSk7dmFyIHRMLGVMPVMoKCk9Pnt0TD1gLyoqCiAqIEBwcml2YXRlCiAqLwp2ZWM0IGN6bV90cmFuc2x1Y2VudFBob25nKHZlYzMgdG9FeWUsIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCwgdmVjMyBsaWdodERpcmVjdGlvbkVDKQp7CiAgICAvLyBEaWZmdXNlIGZyb20gZGlyZWN0aW9uYWwgbGlnaHQgc291cmNlcyBhdCBleWUgKGZvciB0b3AtZG93biBhbmQgaG9yaXpvbiB2aWV3cykKICAgIGZsb2F0IGRpZmZ1c2UgPSBjem1fZ2V0TGFtYmVydERpZmZ1c2UodmVjMygwLjAsIDAuMCwgMS4wKSwgbWF0ZXJpYWwubm9ybWFsKTsKCiAgICBpZiAoY3ptX3NjZW5lTW9kZSA9PSBjem1fc2NlbmVNb2RlM0QpIHsKICAgICAgICAvLyAoYW5kIGhvcml6b24gdmlld3MgaW4gM0QpCiAgICAgICAgZGlmZnVzZSArPSBjem1fZ2V0TGFtYmVydERpZmZ1c2UodmVjMygwLjAsIDEuMCwgMC4wKSwgbWF0ZXJpYWwubm9ybWFsKTsKICAgIH0KCiAgICBkaWZmdXNlID0gY2xhbXAoZGlmZnVzZSwgMC4wLCAxLjApOwoKICAgIGZsb2F0IHNwZWN1bGFyID0gY3ptX2dldFNwZWN1bGFyKGxpZ2h0RGlyZWN0aW9uRUMsIHRvRXllLCBtYXRlcmlhbC5ub3JtYWwsIG1hdGVyaWFsLnNoaW5pbmVzcyk7CgogICAgLy8gVGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIGFkZGluZyBhbWJpZW50LgogICAgdmVjMyBtYXRlcmlhbERpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlICogMC41OwoKICAgIHZlYzMgYW1iaWVudCA9IG1hdGVyaWFsRGlmZnVzZTsKICAgIHZlYzMgY29sb3IgPSBhbWJpZW50ICsgbWF0ZXJpYWwuZW1pc3Npb247CiAgICBjb2xvciArPSBtYXRlcmlhbERpZmZ1c2UgKiBkaWZmdXNlICogY3ptX2xpZ2h0Q29sb3I7CiAgICBjb2xvciArPSBtYXRlcmlhbC5zcGVjdWxhciAqIHNwZWN1bGFyICogY3ptX2xpZ2h0Q29sb3I7CgogICAgcmV0dXJuIHZlYzQoY29sb3IsIG1hdGVyaWFsLmFscGhhKTsKfQpgfSk7dmFyIGlMLG5MPVMoKCk9PntpTD1gLyoqCiAqIFJldHVybnMgdGhlIHRyYW5zcG9zZSBvZiB0aGUgbWF0cml4LiAgVGhlIGlucHV0IDxjb2RlPm1hdHJpeDwvY29kZT4gY2FuIGJlCiAqIGEgPGNvZGU+bWF0MjwvY29kZT4sIDxjb2RlPm1hdDM8L2NvZGU+LCBvciA8Y29kZT5tYXQ0PC9jb2RlPi4KICoKICogQG5hbWUgY3ptX3RyYW5zcG9zZQogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7fSBtYXRyaXggVGhlIG1hdHJpeCB0byB0cmFuc3Bvc2UuCiAqCiAqIEByZXR1cm5zIHt9IFRoZSB0cmFuc3Bvc2VkIG1hdHJpeC4KICoKICogQGV4YW1wbGUKICogLy8gR0xTTCBkZWNsYXJhdGlvbnMKICogbWF0MiBjem1fdHJhbnNwb3NlKG1hdDIgbWF0cml4KTsKICogbWF0MyBjem1fdHJhbnNwb3NlKG1hdDMgbWF0cml4KTsKICogbWF0NCBjem1fdHJhbnNwb3NlKG1hdDQgbWF0cml4KTsKICoKICogLy8gVHJhbnNwb3NlIGEgM3gzIHJvdGF0aW9uIG1hdHJpeCB0byBmaW5kIGl0cyBpbnZlcnNlLgogKiBtYXQzIGVhc3ROb3J0aFVwVG9FeWUgPSBjem1fZWFzdE5vcnRoVXBUb0V5ZUNvb3JkaW5hdGVzKAogKiAgICAgcG9zaXRpb25NQywgbm9ybWFsRUMpOwogKiBtYXQzIGV5ZVRvRWFzdE5vcnRoVXAgPSBjem1fdHJhbnNwb3NlKGVhc3ROb3J0aFVwVG9FeWUpOwogKi8KbWF0MiBjem1fdHJhbnNwb3NlKG1hdDIgbWF0cml4KQp7CiAgICByZXR1cm4gbWF0MigKICAgICAgICBtYXRyaXhbMF1bMF0sIG1hdHJpeFsxXVswXSwKICAgICAgICBtYXRyaXhbMF1bMV0sIG1hdHJpeFsxXVsxXSk7Cn0KCm1hdDMgY3ptX3RyYW5zcG9zZShtYXQzIG1hdHJpeCkKewogICAgcmV0dXJuIG1hdDMoCiAgICAgICAgbWF0cml4WzBdWzBdLCBtYXRyaXhbMV1bMF0sIG1hdHJpeFsyXVswXSwKICAgICAgICBtYXRyaXhbMF1bMV0sIG1hdHJpeFsxXVsxXSwgbWF0cml4WzJdWzFdLAogICAgICAgIG1hdHJpeFswXVsyXSwgbWF0cml4WzFdWzJdLCBtYXRyaXhbMl1bMl0pOwp9CgptYXQ0IGN6bV90cmFuc3Bvc2UobWF0NCBtYXRyaXgpCnsKICAgIHJldHVybiBtYXQ0KAogICAgICAgIG1hdHJpeFswXVswXSwgbWF0cml4WzFdWzBdLCBtYXRyaXhbMl1bMF0sIG1hdHJpeFszXVswXSwKICAgICAgICBtYXRyaXhbMF1bMV0sIG1hdHJpeFsxXVsxXSwgbWF0cml4WzJdWzFdLCBtYXRyaXhbM11bMV0sCiAgICAgICAgbWF0cml4WzBdWzJdLCBtYXRyaXhbMV1bMl0sIG1hdHJpeFsyXVsyXSwgbWF0cml4WzNdWzJdLAogICAgICAgIG1hdHJpeFswXVszXSwgbWF0cml4WzFdWzNdLCBtYXRyaXhbMl1bM10sIG1hdHJpeFszXVszXSk7Cn0KYH0pO3ZhciBzTCxvTD1TKCgpPT57c0w9YHZlYzIgZ2V0TG9va3VwVXYodmVjMiBkaW1lbnNpb25zLCBpbnQgaSkgewogICAgaW50IHBpeFkgPSBpIC8gaW50KGRpbWVuc2lvbnMueCk7CiAgICBpbnQgcGl4WCA9IGkgLSAocGl4WSAqIGludChkaW1lbnNpb25zLngpKTsKICAgIGZsb2F0IHBpeGVsV2lkdGggPSAxLjAgLyBkaW1lbnNpb25zLng7CiAgICBmbG9hdCBwaXhlbEhlaWdodCA9IDEuMCAvIGRpbWVuc2lvbnMueTsKICAgIGZsb2F0IHUgPSAoZmxvYXQocGl4WCkgKyAwLjUpICogcGl4ZWxXaWR0aDsgLy8gc2FtcGxlIGZyb20gY2VudGVyIG9mIHBpeGVsCiAgICBmbG9hdCB2ID0gKGZsb2F0KHBpeFkpICsgMC41KSAqIHBpeGVsSGVpZ2h0OwogICAgcmV0dXJuIHZlYzIodSwgdik7Cn0KCnZlYzQgY3ptX3VucGFja0NsaXBwaW5nRXh0ZW50cyhoaWdocCBzYW1wbGVyMkQgZXh0ZW50c1RleHR1cmUsIGludCBpbmRleCkgewogICAgdmVjMiB0ZXh0dXJlRGltZW5zaW9ucyA9IHZlYzIodGV4dHVyZVNpemUoZXh0ZW50c1RleHR1cmUsIDApKTsKICAgIHJldHVybiB0ZXh0dXJlKGV4dGVudHNUZXh0dXJlLCBnZXRMb29rdXBVdih0ZXh0dXJlRGltZW5zaW9ucywgaW5kZXgpKTsKfWB9KTt2YXIgckwsYUw9UygoKT0+e3JMPWAvKioKICogVW5wYWNrcyBhIHZlYzQgZGVwdGggdmFsdWUgdG8gYSBmbG9hdCBpbiBbMCwgMSkgcmFuZ2UuCiAqCiAqIEBuYW1lIGN6bV91bnBhY2tEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcGFja2VkRGVwdGggVGhlIHBhY2tlZCBkZXB0aC4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgZmxvYXRpbmctcG9pbnQgZGVwdGggaW4gWzAsIDEpIHJhbmdlLgogKi8KIGZsb2F0IGN6bV91bnBhY2tEZXB0aCh2ZWM0IHBhY2tlZERlcHRoKQogewogICAgLy8gU2VlIEFyYXMgUHJhbmNrZXZpXHUwMTBEaXVzJyBwb3N0IEVuY29kaW5nIEZsb2F0cyB0byBSR0JBCiAgICAvLyBodHRwOi8vYXJhcy1wLmluZm8vYmxvZy8yMDA5LzA3LzMwL2VuY29kaW5nLWZsb2F0cy10by1yZ2JhLXRoZS1maW5hbC8KICAgIHJldHVybiBkb3QocGFja2VkRGVwdGgsIHZlYzQoMS4wLCAxLjAgLyAyNTUuMCwgMS4wIC8gNjUwMjUuMCwgMS4wIC8gMTY1ODEzNzUuMCkpOwogfQpgfSk7dmFyIEFMLGhMPVMoKCk9PntBTD1gLyoqCiAqIFVucGFjayBhbiBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0IHRoYXQgaXMgcGFja2VkIGFzIGEgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCBub3JtYWxpemVkIHZlYzQuCiAqCiAqIEBuYW1lIGN6bV91bnBhY2tGbG9hdAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7dmVjNH0gcGFja2VkRmxvYXQgVGhlIHBhY2tlZCBmbG9hdC4KICoKICogQHJldHVybnMge2Zsb2F0fSBUaGUgZmxvYXRpbmctcG9pbnQgZGVwdGggaW4gYXJiaXRyYXJ5IHJhbmdlLgogKi8KZmxvYXQgY3ptX3VucGFja0Zsb2F0KHZlYzQgcGFja2VkRmxvYXQpCnsKICAgIC8vIENvbnZlcnQgdG8gWzAuMCwgMjU1LjBdIGFuZCByb3VuZCB0byBpbnRlZ2VyCiAgICBwYWNrZWRGbG9hdCA9IGZsb29yKHBhY2tlZEZsb2F0ICogMjU1LjAgKyAwLjUpOwogICAgZmxvYXQgc2lnbiA9IDEuMCAtIHN0ZXAoMTI4LjAsIHBhY2tlZEZsb2F0WzNdKSAqIDIuMDsKICAgIGZsb2F0IGV4cG9uZW50ID0gMi4wICogbW9kKHBhY2tlZEZsb2F0WzNdLCAxMjguMCkgKyBzdGVwKDEyOC4wLCBwYWNrZWRGbG9hdFsyXSkgLSAxMjcuMDsgICAgCiAgICBpZiAoZXhwb25lbnQgPT0gLTEyNy4wKQogICAgewogICAgICAgIHJldHVybiAwLjA7CiAgICB9CiAgICBmbG9hdCBtYW50aXNzYSA9IG1vZChwYWNrZWRGbG9hdFsyXSwgMTI4LjApICogNjU1MzYuMCArIHBhY2tlZEZsb2F0WzFdICogMjU2LjAgKyBwYWNrZWRGbG9hdFswXSArIGZsb2F0KDB4ODAwMDAwKTsKICAgIGZsb2F0IHJlc3VsdCA9IHNpZ24gKiBleHAyKGV4cG9uZW50IC0gMjMuMCkgKiBtYW50aXNzYTsKICAgIHJldHVybiByZXN1bHQ7Cn0KYH0pO3ZhciBjTCxsTD1TKCgpPT57Y0w9YC8qKgogKiBVbnBhY2sgdW5zaWduZWQgaW50ZWdlcnMgb2YgMS00IGJ5dGVzLiBpbiBXZWJHTCAxLCB0aGVyZSBpcyBubyB1aW50IHR5cGUsCiAqIHNvIHRoZSByZXR1cm4gdmFsdWUgaXMgYW4gaW50LgogKiA8cD4KICogVGhlcmUgYXJlIGFsc28gcHJlY2lzaW9uIGxpbWl0YXRpb25zIGluIFdlYkdMIDEuIGhpZ2hwIGludCBpcyBzdGlsbCBsaW1pdGVkCiAqIHRvIDI0IGJpdHMuIEFib3ZlIHRoZSB2YWx1ZSBvZiAyXjI0ID0gMTY3NzcyMTYsIHByZWNpc2lvbiBsb3NzIG1heSBvY2N1ci4KICogPC9wPgogKgogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fSBwYWNrZWQgVGhlIHBhY2tlZCB2YWx1ZS4gRm9yIHZlY3RvcnMsIHRoZSBjb21wb25lbnRzIGFyZSBsaXN0ZWQgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KICoKICogQHJldHVybiB7aW50fSBUaGUgdW5wYWNrZWQgdmFsdWUuCiAqLwogaW50IGN6bV91bnBhY2tVaW50KGZsb2F0IHBhY2tlZFZhbHVlKSB7CiAgIGZsb2F0IHJvdW5kZWQgPSBjem1fcm91bmQocGFja2VkVmFsdWUgKiAyNTUuMCk7CiAgIHJldHVybiBpbnQocm91bmRlZCk7CiB9CgogaW50IGN6bV91bnBhY2tVaW50KHZlYzIgcGFja2VkVmFsdWUpIHsKICAgdmVjMiByb3VuZGVkID0gY3ptX3JvdW5kKHBhY2tlZFZhbHVlICogMjU1LjApOwogICByZXR1cm4gaW50KGRvdChyb3VuZGVkLCB2ZWMyKDEuMCwgMjU2LjApKSk7CiB9CgogaW50IGN6bV91bnBhY2tVaW50KHZlYzMgcGFja2VkVmFsdWUpIHsKICAgdmVjMyByb3VuZGVkID0gY3ptX3JvdW5kKHBhY2tlZFZhbHVlICogMjU1LjApOwogICByZXR1cm4gaW50KGRvdChyb3VuZGVkLCB2ZWMzKDEuMCwgMjU2LjAsIDY1NTM2LjApKSk7CiB9CgogaW50IGN6bV91bnBhY2tVaW50KHZlYzQgcGFja2VkVmFsdWUpIHsKICAgdmVjNCByb3VuZGVkID0gY3ptX3JvdW5kKHBhY2tlZFZhbHVlICogMjU1LjApOwogICByZXR1cm4gaW50KGRvdChyb3VuZGVkLCB2ZWM0KDEuMCwgMjU2LjAsIDY1NTM2LjAsIDE2Nzc3MjE2LjApKSk7CiB9CmB9KTt2YXIgZEwsbUw9UygoKT0+e2RMPWAvKioKICogVHJhbnNmb3JtIG1ldGFkYXRhIHZhbHVlcyBmb2xsb3dpbmcgdGhlIEVYVF9zdHJ1Y3R1cmFsX21ldGFkYXRhIHNwZWMKICogYnkgbXVsdGlwbHlpbmcgYnkgc2NhbGUgYW5kIGFkZGluZyB0aGUgb2Zmc2V0LiBPcGVyYXRpb25zIGFyZSBhbHdheXMKICogcGVyZm9ybWVkIGNvbXBvbmVudC13aXNlLCBldmVuIGZvciBtYXRyaWNlcy4KICogCiAqIEBwYXJhbSB7ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDR9IG9mZnNldCBUaGUgb2Zmc2V0IHRvIGFkZAogKiBAcGFyYW0ge2Zsb2F0fHZlYzJ8dmVjM3x2ZWM0fG1hdDJ8bWF0M3xtYXQ0fSBzY2FsZSBUaGUgc2NhbGUgZmFjdG9yIHRvIG11bHRpcGx5CiAqIEBwYXJhbSB7ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDR9IHZhbHVlIFRoZSBvcmlnaW5hbCB2YWx1ZS4KICoKICogQHJldHVybiB7ZmxvYXR8dmVjMnx2ZWMzfHZlYzR8bWF0MnxtYXQzfG1hdDR9IFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiB0aGUgc2FtZSBzY2FsYXIvdmVjdG9yL21hdHJpeCB0eXBlIGFzIHRoZSBpbnB1dC4KICovCmZsb2F0IGN6bV92YWx1ZVRyYW5zZm9ybShmbG9hdCBvZmZzZXQsIGZsb2F0IHNjYWxlLCBmbG9hdCB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9Cgp2ZWMyIGN6bV92YWx1ZVRyYW5zZm9ybSh2ZWMyIG9mZnNldCwgdmVjMiBzY2FsZSwgdmVjMiB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9Cgp2ZWMzIGN6bV92YWx1ZVRyYW5zZm9ybSh2ZWMzIG9mZnNldCwgdmVjMyBzY2FsZSwgdmVjMyB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9Cgp2ZWM0IGN6bV92YWx1ZVRyYW5zZm9ybSh2ZWM0IG9mZnNldCwgdmVjNCBzY2FsZSwgdmVjNCB2YWx1ZSkgewogIHJldHVybiBzY2FsZSAqIHZhbHVlICsgb2Zmc2V0Owp9CgptYXQyIGN6bV92YWx1ZVRyYW5zZm9ybShtYXQyIG9mZnNldCwgbWF0MiBzY2FsZSwgbWF0MiB2YWx1ZSkgewogIHJldHVybiBtYXRyaXhDb21wTXVsdChzY2FsZSwgdmFsdWUpICsgb2Zmc2V0Owp9CgptYXQzIGN6bV92YWx1ZVRyYW5zZm9ybShtYXQzIG9mZnNldCwgbWF0MyBzY2FsZSwgbWF0MyB2YWx1ZSkgewogIHJldHVybiBtYXRyaXhDb21wTXVsdChzY2FsZSwgdmFsdWUpICsgb2Zmc2V0Owp9CgptYXQ0IGN6bV92YWx1ZVRyYW5zZm9ybShtYXQ0IG9mZnNldCwgbWF0NCBzY2FsZSwgbWF0NCB2YWx1ZSkgewogIHJldHVybiBtYXRyaXhDb21wTXVsdChzY2FsZSwgdmFsdWUpICsgb2Zmc2V0Owp9CmB9KTt2YXIgZkwsRUw9UygoKT0+e2ZMPWAjaWZkZWYgTE9HX0RFUFRICi8vIDEuMCBhdCB0aGUgbmVhciBwbGFuZSwgaW5jcmVhc2luZyBsaW5lYXJseSBmcm9tIHRoZXJlLgpvdXQgZmxvYXQgdl9kZXB0aEZyb21OZWFyUGx1c09uZTsKI2lmZGVmIFNIQURPV19NQVAKb3V0IHZlYzMgdl9sb2dQb3NpdGlvbkVDOwojZW5kaWYKI2VuZGlmCgp2ZWM0IGN6bV91cGRhdGVQb3NpdGlvbkRlcHRoKHZlYzQgY29vcmRzKSB7CiNpZiBkZWZpbmVkKExPR19ERVBUSCkKCiNpZmRlZiBTSEFET1dfTUFQCiAgICB2ZWMzIGxvZ1Bvc2l0aW9uRUMgPSAoY3ptX2ludmVyc2VQcm9qZWN0aW9uICogY29vcmRzKS54eXo7CiAgICB2X2xvZ1Bvc2l0aW9uRUMgPSBsb2dQb3NpdGlvbkVDOwojZW5kaWYKCiAgICAvLyBXaXRoIHRoZSB2ZXJ5IGhpZ2ggZmFyL25lYXIgcmF0aW9zIHVzZWQgd2l0aCB0aGUgbG9nYXJpdGhtaWMgZGVwdGgKICAgIC8vIGJ1ZmZlciwgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgZXJyb3JzIGNhbiBjYXVzZSBsaW5lYXIgZGVwdGggdmFsdWVzCiAgICAvLyB0byBlbmQgdXAgb24gdGhlIHdyb25nIHNpZGUgb2YgdGhlIGZhciBwbGFuZSwgZXZlbiBmb3IgdmVydGljZXMgdGhhdAogICAgLy8gYXJlIHJlYWxseSBub3doZXJlIG5lYXIgaXQuIFNpbmNlIHdlIGFsd2F5cyB3cml0ZSBhIGNvcnJlY3QgbG9nYXJpdGhtaWMKICAgIC8vIGRlcHRoIHZhbHVlIGluIHRoZSBmcmFnbWVudCBzaGFkZXIgYW55d2F5LCB3ZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlCiAgICAvLyBzdWNoIGVycm9ycyBkb24ndCBjYXVzZSB0aGUgcHJpbWl0aXZlIHRvIGJlIGNsaXBwZWQgZW50aXJlbHkgYmVmb3JlCiAgICAvLyB3ZSBldmVuIGdldCB0byB0aGUgZnJhZ21lbnQgc2hhZGVyLgogICAgY29vcmRzLnogPSBjbGFtcChjb29yZHMueiAvIGNvb3Jkcy53LCAtMS4wLCAxLjApICogY29vcmRzLnc7CiNlbmRpZgoKICAgIHJldHVybiBjb29yZHM7Cn0KCi8qKgogKiBXcml0ZXMgdGhlIGxvZ2FyaXRobWljIGRlcHRoIHRvIGdsX1Bvc2l0aW9uIHVzaW5nIHRoZSBhbHJlYWR5IGNvbXB1dGVkIGdsX1Bvc2l0aW9uLgogKgogKiBAbmFtZSBjem1fdmVydGV4TG9nRGVwdGgKICogQGdsc2xGdW5jdGlvbgogKi8Kdm9pZCBjem1fdmVydGV4TG9nRGVwdGgoKQp7CiNpZmRlZiBMT0dfREVQVEgKICAgIHZfZGVwdGhGcm9tTmVhclBsdXNPbmUgPSAoZ2xfUG9zaXRpb24udyAtIGN6bV9jdXJyZW50RnJ1c3R1bS54KSArIDEuMDsKICAgIGdsX1Bvc2l0aW9uID0gY3ptX3VwZGF0ZVBvc2l0aW9uRGVwdGgoZ2xfUG9zaXRpb24pOwojZW5kaWYKfQoKLyoqCiAqIFdyaXRlcyB0aGUgbG9nYXJpdGhtaWMgZGVwdGggdG8gZ2xfUG9zaXRpb24gdXNpbmcgdGhlIHByb3ZpZGVkIGNsaXAgY29vcmRpbmF0ZXMuCiAqIDxwPgogKiBBbiBleGFtcGxlIHVzZSBjYXNlIGZvciB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIG1vdmluZyB0aGUgdmVydGV4IGluIHdpbmRvdyBjb29yZGluYXRlcwogKiBiZWZvcmUgY29udmVydGluZyBiYWNrIHRvIGNsaXAgY29vcmRpbmF0ZXMuIFVzZSB0aGUgb3JpZ2luYWwgdmVydGV4IGNsaXAgY29vcmRpbmF0ZXMuCiAqIDwvcD4KICogQG5hbWUgY3ptX3ZlcnRleExvZ0RlcHRoCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHt2ZWM0fSBjbGlwQ29vcmRzIFRoZSB2ZXJ0ZXggaW4gY2xpcCBjb29yZGluYXRlcy4KICoKICogQGV4YW1wbGUKICogY3ptX3ZlcnRleExvZ0RlcHRoKGN6bV9wcm9qZWN0aW9uICogdmVjNChwb3NpdGlvbkV5ZUNvb3JkaW5hdGVzLCAxLjApKTsKICovCnZvaWQgY3ptX3ZlcnRleExvZ0RlcHRoKHZlYzQgY2xpcENvb3JkcykKewojaWZkZWYgTE9HX0RFUFRICiAgICB2X2RlcHRoRnJvbU5lYXJQbHVzT25lID0gKGNsaXBDb29yZHMudyAtIGN6bV9jdXJyZW50RnJ1c3R1bS54KSArIDEuMDsKICAgIGN6bV91cGRhdGVQb3NpdGlvbkRlcHRoKGNsaXBDb29yZHMpOwojZW5kaWYKfQpgfSk7dmFyIF9MLFJMPVMoKCk9PntfTD1gdmVjNCBjem1fc2NyZWVuVG9FeWVDb29yZGluYXRlcyh2ZWM0IHNjcmVlbkNvb3JkaW5hdGUpCnsKICAgIC8vIFJlY29uc3RydWN0IE5EQyBjb29yZGluYXRlcwogICAgZmxvYXQgeCA9IDIuMCAqIHNjcmVlbkNvb3JkaW5hdGUueCAtIDEuMDsKICAgIGZsb2F0IHkgPSAyLjAgKiBzY3JlZW5Db29yZGluYXRlLnkgLSAxLjA7CiAgICBmbG9hdCB6ID0gKHNjcmVlbkNvb3JkaW5hdGUueiAtIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uWzNdWzJdKSAvIGN6bV92aWV3cG9ydFRyYW5zZm9ybWF0aW9uWzJdWzJdOwogICAgdmVjNCBxID0gdmVjNCh4LCB5LCB6LCAxLjApOwoKICAgIC8vIFJldmVyc2UgdGhlIHBlcnNwZWN0aXZlIGRpdmlzaW9uIHRvIG9idGFpbiBjbGlwIGNvb3JkaW5hdGVzLgogICAgcSAvPSBzY3JlZW5Db29yZGluYXRlLnc7CgogICAgLy8gUmV2ZXJzZSB0aGUgcHJvamVjdGlvbiB0cmFuc2Zvcm1hdGlvbiB0byBvYnRhaW4gZXllIGNvb3JkaW5hdGVzLgogICAgaWYgKCEoY3ptX2ludmVyc2VQcm9qZWN0aW9uID09IG1hdDQoMC4wKSkpIC8vIElFIGFuZCBFZGdlIHNvbWV0aW1lcyBkbyBzb21ldGhpbmcgd2VpcmQgd2l0aCAhPSBiZXR3ZWVuIG1hdDRzCiAgICB7CiAgICAgICAgcSA9IGN6bV9pbnZlcnNlUHJvamVjdGlvbiAqIHE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZmxvYXQgdG9wID0gY3ptX2ZydXN0dW1QbGFuZXMueDsKICAgICAgICBmbG9hdCBib3R0b20gPSBjem1fZnJ1c3R1bVBsYW5lcy55OwogICAgICAgIGZsb2F0IGxlZnQgPSBjem1fZnJ1c3R1bVBsYW5lcy56OwogICAgICAgIGZsb2F0IHJpZ2h0ID0gY3ptX2ZydXN0dW1QbGFuZXMudzsKCiAgICAgICAgZmxvYXQgbmVhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS54OwogICAgICAgIGZsb2F0IGZhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS55OwoKICAgICAgICBxLnggPSAocS54ICogKHJpZ2h0IC0gbGVmdCkgKyBsZWZ0ICsgcmlnaHQpICogMC41OwogICAgICAgIHEueSA9IChxLnkgKiAodG9wIC0gYm90dG9tKSArIGJvdHRvbSArIHRvcCkgKiAwLjU7CiAgICAgICAgcS56ID0gKHEueiAqIChuZWFyIC0gZmFyKSAtIG5lYXIgLSBmYXIpICogMC41OwogICAgICAgIHEudyA9IDEuMDsKICAgIH0KCiAgICByZXR1cm4gcTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYSBwb3NpdGlvbiBmcm9tIHdpbmRvdyB0byBleWUgY29vcmRpbmF0ZXMuCiAqIFRoZSB0cmFuc2Zvcm0gZnJvbSB3aW5kb3cgdG8gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMgaXMgZG9uZSB1c2luZyBjb21wb25lbnRzCiAqIG9mIChAbGluayBjem1fdmlld3BvcnR9IGFuZCB7QGxpbmsgY3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb259IGluc3RlYWQgb2YgY2FsY3VsYXRpbmcKICogdGhlIGludmVyc2Ugb2YgPGNvZGU+Y3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb248L2NvZGU+LiBUaGUgdHJhbnNmb3JtYXRpb24gZnJvbQogKiBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcyB0byBjbGlwIGNvb3JkaW5hdGVzIGlzIGRvbmUgdXNpbmcgPGNvZGU+ZnJhZ21lbnRDb29yZGluYXRlLnc8L2NvZGU+LAogKiB3aGljaCBpcyBleHBlY3RlZCB0byBiZSB0aGUgc2NhbGFyIHVzZWQgaW4gdGhlIHBlcnNwZWN0aXZlIGRpdmlkZS4gVGhlIHRyYW5zZm9ybWF0aW9uCiAqIGZyb20gY2xpcCB0byBleWUgY29vcmRpbmF0ZXMgaXMgZG9uZSB1c2luZyB7QGxpbmsgY3ptX2ludmVyc2VQcm9qZWN0aW9ufS4KICoKICogQG5hbWUgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzR9IGZyYWdtZW50Q29vcmRpbmF0ZSBUaGUgcG9zaXRpb24gaW4gd2luZG93IGNvb3JkaW5hdGVzIHRvIHRyYW5zZm9ybS4KICoKICogQHJldHVybnMge3ZlYzR9IFRoZSB0cmFuc2Zvcm1lZCBwb3NpdGlvbiBpbiBleWUgY29vcmRpbmF0ZXMuCiAqCiAqIEBzZWUgY3ptX21vZGVsVG9XaW5kb3dDb29yZGluYXRlcwogKiBAc2VlIGN6bV9leWVUb1dpbmRvd0Nvb3JkaW5hdGVzCiAqIEBzZWUgY3ptX2ludmVyc2VQcm9qZWN0aW9uCiAqIEBzZWUgY3ptX3ZpZXdwb3J0CiAqIEBzZWUgY3ptX3ZpZXdwb3J0VHJhbnNmb3JtYXRpb24KICoKICogQGV4YW1wbGUKICogdmVjNCBwb3NpdGlvbkVDID0gY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMoZ2xfRnJhZ0Nvb3JkKTsKICovCnZlYzQgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXModmVjNCBmcmFnbWVudENvb3JkaW5hdGUpCnsKICAgIHZlYzIgc2NyZWVuQ29vcmRYWSA9IChmcmFnbWVudENvb3JkaW5hdGUueHkgLSBjem1fdmlld3BvcnQueHkpIC8gY3ptX3ZpZXdwb3J0Lnp3OwogICAgcmV0dXJuIGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHZlYzQoc2NyZWVuQ29vcmRYWSwgZnJhZ21lbnRDb29yZGluYXRlLnp3KSk7Cn0KCnZlYzQgY3ptX3NjcmVlblRvRXllQ29vcmRpbmF0ZXModmVjMiBzY3JlZW5Db29yZGluYXRlWFksIGZsb2F0IGRlcHRoT3JMb2dEZXB0aCkKewogICAgLy8gU2VlIHJldmVyc2VMb2dEZXB0aC5nbHNsLiBUaGlzIGlzIHNlcGFyYXRlIHRvIHJlLXVzZSB0aGUgcG93LgojaWYgZGVmaW5lZChMT0dfREVQVEgpIHx8IGRlZmluZWQoTE9HX0RFUFRIX1JFQURfT05MWSkKICAgIGZsb2F0IG5lYXIgPSBjem1fY3VycmVudEZydXN0dW0ueDsKICAgIGZsb2F0IGZhciA9IGN6bV9jdXJyZW50RnJ1c3R1bS55OwogICAgZmxvYXQgbG9nMkRlcHRoID0gZGVwdGhPckxvZ0RlcHRoICogY3ptX2xvZzJGYXJEZXB0aEZyb21OZWFyUGx1c09uZTsKICAgIGZsb2F0IGRlcHRoRnJvbU5lYXIgPSBwb3coMi4wLCBsb2cyRGVwdGgpIC0gMS4wOwogICAgZmxvYXQgZGVwdGhGcm9tQ2FtZXJhID0gZGVwdGhGcm9tTmVhciArIG5lYXI7CiAgICB2ZWM0IHNjcmVlbkNvb3JkID0gdmVjNChzY3JlZW5Db29yZGluYXRlWFksIGZhciAqICgxLjAgLSBuZWFyIC8gZGVwdGhGcm9tQ2FtZXJhKSAvIChmYXIgLSBuZWFyKSwgMS4wKTsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHNjcmVlbkNvb3JkKTsKICAgIGV5ZUNvb3JkaW5hdGUudyA9IDEuMCAvIGRlcHRoRnJvbUNhbWVyYTsgLy8gQmV0dGVyIHByZWNpc2lvbgogICAgcmV0dXJuIGV5ZUNvb3JkaW5hdGU7CiNlbHNlCiAgICB2ZWM0IHNjcmVlbkNvb3JkID0gdmVjNChzY3JlZW5Db29yZGluYXRlWFksIGRlcHRoT3JMb2dEZXB0aCwgMS4wKTsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHNjcmVlbkNvb3JkKTsKI2VuZGlmCiAgICByZXR1cm4gZXllQ29vcmRpbmF0ZTsKfQoKLyoqCiAqIFRyYW5zZm9ybXMgYSBwb3NpdGlvbiBnaXZlbiBhcyB3aW5kb3cgeC95IGFuZCBhIGRlcHRoIG9yIGEgbG9nIGRlcHRoIGZyb20gd2luZG93IHRvIGV5ZSBjb29yZGluYXRlcy4KICogVGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBtb3JlIGFjY3VyYXRlIHJlc3VsdHMgZm9yIHdpbmRvdyBwb3NpdGlvbnMgd2l0aCBsb2cgZGVwdGggdGhhbgogKiBjb252ZW50aW9uYWxseSB1bnBhY2tpbmcgdGhlIGxvZyBkZXB0aCB1c2luZyBjem1fcmV2ZXJzZUxvZ0RlcHRoIGFuZCB1c2luZyB0aGUgc3RhbmRhcmQgdmVyc2lvbgogKiBvZiBjem1fd2luZG93VG9FeWVDb29yZGluYXRlcy4KICoKICogQG5hbWUgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMKICogQGdsc2xGdW5jdGlvbgogKgogKiBAcGFyYW0ge3ZlYzJ9IGZyYWdtZW50Q29vcmRpbmF0ZVhZIFRoZSBYWSBwb3NpdGlvbiBpbiB3aW5kb3cgY29vcmRpbmF0ZXMgdG8gdHJhbnNmb3JtLgogKiBAcGFyYW0ge2Zsb2F0fSBkZXB0aE9yTG9nRGVwdGggQSBkZXB0aCBvciBsb2cgZGVwdGggZm9yIHRoZSBmcmFnbWVudC4KICoKICogQHNlZSBjem1fbW9kZWxUb1dpbmRvd0Nvb3JkaW5hdGVzCiAqIEBzZWUgY3ptX2V5ZVRvV2luZG93Q29vcmRpbmF0ZXMKICogQHNlZSBjem1faW52ZXJzZVByb2plY3Rpb24KICogQHNlZSBjem1fdmlld3BvcnQKICogQHNlZSBjem1fdmlld3BvcnRUcmFuc2Zvcm1hdGlvbgogKgogKiBAcmV0dXJucyB7dmVjNH0gVGhlIHRyYW5zZm9ybWVkIHBvc2l0aW9uIGluIGV5ZSBjb29yZGluYXRlcy4KICovCnZlYzQgY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXModmVjMiBmcmFnbWVudENvb3JkaW5hdGVYWSwgZmxvYXQgZGVwdGhPckxvZ0RlcHRoKQp7CiAgICB2ZWMyIHNjcmVlbkNvb3JkWFkgPSAoZnJhZ21lbnRDb29yZGluYXRlWFkueHkgLSBjem1fdmlld3BvcnQueHkpIC8gY3ptX3ZpZXdwb3J0Lnp3OwogICAgcmV0dXJuIGN6bV9zY3JlZW5Ub0V5ZUNvb3JkaW5hdGVzKHNjcmVlbkNvb3JkWFksIGRlcHRoT3JMb2dEZXB0aCk7Cn0KYH0pO3ZhciBaTCxJTD1TKCgpPT57Wkw9YC8vIGVtdWxhdGVkIG5vcGVyc3BlY3RpdmUKI2lmICFkZWZpbmVkKExPR19ERVBUSCkKaW4gZmxvYXQgdl9XaW5kb3daOwojZW5kaWYKCi8qKgogKiBFbXVsYXRlcyBHTF9ERVBUSF9DTEFNUC4gQ2xhbXBzIGEgZnJhZ21lbnQgdG8gdGhlIG5lYXIgYW5kIGZhciBwbGFuZQogKiBieSB3cml0aW5nIHRoZSBmcmFnbWVudCdzIGRlcHRoLiBTZWUgY3ptX2RlcHRoQ2xhbXAgZm9yIG1vcmUgZGV0YWlscy4KICoKICogQG5hbWUgY3ptX3dyaXRlRGVwdGhDbGFtcAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBleGFtcGxlCiAqIG91dF9GcmFnQ29sb3IgPSBjb2xvcjsKICogY3ptX3dyaXRlRGVwdGhDbGFtcCgpOwogKgogKiBAc2VlIGN6bV9kZXB0aENsYW1wCiAqLwp2b2lkIGN6bV93cml0ZURlcHRoQ2xhbXAoKQp7CiNpZiAoIWRlZmluZWQoTE9HX0RFUFRIKSAmJiAoX19WRVJTSU9OX18gPT0gMzAwIHx8IGRlZmluZWQoR0xfRVhUX2ZyYWdfZGVwdGgpKSkKICAgIGdsX0ZyYWdEZXB0aCA9IGNsYW1wKHZfV2luZG93WiAqIGdsX0ZyYWdDb29yZC53LCAwLjAsIDEuMCk7CiNlbmRpZgp9CmB9KTt2YXIgcEwsdUw9UygoKT0+e3BMPWAjaWZkZWYgTE9HX0RFUFRICmluIGZsb2F0IHZfZGVwdGhGcm9tTmVhclBsdXNPbmU7CgojaWZkZWYgUE9MWUdPTl9PRkZTRVQKdW5pZm9ybSB2ZWMyIHVfcG9seWdvbk9mZnNldDsKI2VuZGlmCgojZW5kaWYKCi8qKgogKiBXcml0ZXMgdGhlIGZyYWdtZW50IGRlcHRoIHRvIHRoZSBsb2dhcml0aG1pYyBkZXB0aCBidWZmZXIuCiAqIDxwPgogKiBVc2UgdGhpcyB3aGVuIHRoZSB2ZXJ0ZXggc2hhZGVyIGRvZXMgbm90IGNhbGwge0BsaW5rIGN6bV92ZXJ0ZXhsb2dEZXB0aH0sIGZvciBleGFtcGxlLCB3aGVuCiAqIHJheS1jYXN0aW5nIGdlb21ldHJ5IHVzaW5nIGEgZnVsbCBzY3JlZW4gcXVhZC4KICogPC9wPgogKiBAbmFtZSBjem1fd3JpdGVMb2dEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqCiAqIEBwYXJhbSB7ZmxvYXR9IGRlcHRoIFRoZSBkZXB0aCBjb29yZGluYXRlLCB3aGVyZSAxLjAgaXMgb24gdGhlIG5lYXIgcGxhbmUgYW5kCiAqICAgICAgICAgICAgICAgICAgICAgIGRlcHRoIGluY3JlYXNlcyBpbiBleWUtc3BhY2UgdW5pdHMgZnJvbSB0aGVyZQogKgogKiBAZXhhbXBsZQogKiBjem1fd3JpdGVMb2dEZXB0aCgoY3ptX3Byb2plY3Rpb24gKiB2X3Bvc2l0aW9uRXllQ29vcmRpbmF0ZXMpLncgKyAxLjApOwogKi8Kdm9pZCBjem1fd3JpdGVMb2dEZXB0aChmbG9hdCBkZXB0aCkKewojaWYgKGRlZmluZWQoTE9HX0RFUFRIKSAmJiAoX19WRVJTSU9OX18gPT0gMzAwIHx8IGRlZmluZWQoR0xfRVhUX2ZyYWdfZGVwdGgpKSkKICAgIC8vIERpc2NhcmQgdGhlIHZlcnRleCBpZiBpdCdzIG5vdCBiZXR3ZWVuIHRoZSBuZWFyIGFuZCBmYXIgcGxhbmVzLgogICAgLy8gV2UgYWxsb3cgYSBiaXQgb2YgZXBzaWxvbiBvbiB0aGUgbmVhciBwbGFuZSBjb21wYXJpc29uIGJlY2F1c2UgYSAxLjAKICAgIC8vIGZyb20gdGhlIHZlcnRleCBzaGFkZXIgKGluZGljYXRpbmcgdGhlIHZlcnRleCBzaG91bGQgYmUgX29uXyB0aGUgbmVhcgogICAgLy8gcGxhbmUpIHdpbGwgbm90IG5lY2Vzc2FyaWx5IGNvbWUgaGVyZSBhcyBleGFjdGx5IDEuMC4KICAgIGlmIChkZXB0aCA8PSAwLjk5OTk5OTkgfHwgZGVwdGggPiBjem1fZmFyRGVwdGhGcm9tTmVhclBsdXNPbmUpIHsKICAgICAgICBkaXNjYXJkOwogICAgfQoKI2lmZGVmIFBPTFlHT05fT0ZGU0VUCiAgICAvLyBQb2x5Z29uIG9mZnNldDogbSAqIGZhY3RvciArIHIgKiB1bml0cwogICAgZmxvYXQgZmFjdG9yID0gdV9wb2x5Z29uT2Zmc2V0WzBdOwogICAgZmxvYXQgdW5pdHMgPSB1X3BvbHlnb25PZmZzZXRbMV07CgojaWYgKF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykpCiAgICAvLyBUaGlzIGZhY3RvciBkb2Vzbid0IHdvcmsgaW4gSUUgMTAKICAgIGlmIChmYWN0b3IgIT0gMC4wKSB7CiAgICAgICAgLy8gbSA9IHNxcnQoZFpkWF4yICsgZFpkWV4yKTsKICAgICAgICBmbG9hdCB4ID0gZEZkeChkZXB0aCk7CiAgICAgICAgZmxvYXQgeSA9IGRGZHkoZGVwdGgpOwogICAgICAgIGZsb2F0IG0gPSBzcXJ0KHggKiB4ICsgeSAqIHkpOwoKICAgICAgICAvLyBBcHBseSB0aGUgZmFjdG9yIGJlZm9yZSBjb21wdXRpbmcgdGhlIGxvZyBkZXB0aC4KICAgICAgICBkZXB0aCArPSBtICogZmFjdG9yOwogICAgfQojZW5kaWYKCiNlbmRpZgoKICAgIGdsX0ZyYWdEZXB0aCA9IGxvZzIoZGVwdGgpICogY3ptX29uZU92ZXJMb2cyRmFyRGVwdGhGcm9tTmVhclBsdXNPbmU7CgojaWZkZWYgUE9MWUdPTl9PRkZTRVQKICAgIC8vIEFwcGx5IHRoZSB1bml0cyBhZnRlciB0aGUgbG9nIGRlcHRoLgogICAgZ2xfRnJhZ0RlcHRoICs9IGN6bV9lcHNpbG9uNyAqIHVuaXRzOwojZW5kaWYKCiNlbmRpZgp9CgovKioKICogV3JpdGVzIHRoZSBmcmFnbWVudCBkZXB0aCB0byB0aGUgbG9nYXJpdGhtaWMgZGVwdGggYnVmZmVyLgogKiA8cD4KICogVXNlIHRoaXMgd2hlbiB0aGUgdmVydGV4IHNoYWRlciBjYWxscyB7QGxpbmsgY3ptX3ZlcnRleGxvZ0RlcHRofS4KICogPC9wPgogKgogKiBAbmFtZSBjem1fd3JpdGVMb2dEZXB0aAogKiBAZ2xzbEZ1bmN0aW9uCiAqLwp2b2lkIGN6bV93cml0ZUxvZ0RlcHRoKCkgewojaWZkZWYgTE9HX0RFUFRICiAgICBjem1fd3JpdGVMb2dEZXB0aCh2X2RlcHRoRnJvbU5lYXJQbHVzT25lKTsKI2VuZGlmCn0KYH0pO3ZhciBDTCxnTD1TKCgpPT57Q0w9YC8qKgogKiBUcmFuc2Zvcm1zIGEgdmFsdWUgZm9yIG5vbi1wZXJzcGVjdGl2ZSBpbnRlcnBvbGF0aW9uIGJ5IG11bHRpcGx5aW5nCiAqIGl0IGJ5IHcsIHRoZSB2YWx1ZSB1c2VkIGluIHRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUuIFRoaXMgZnVuY3Rpb24gaXMKICogaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGluIGEgdmVydGV4IHNoYWRlciB0byBjb21wdXRlIHRoZSB2YWx1ZSBvZiBhCiAqIFxgdmFyeWluZ1xgIHRoYXQgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIHBlcnNwZWN0aXZlIGludGVycG9sYXRpb24uCiAqIEZvciBleGFtcGxlLCBzY3JlZW4tc3BhY2UgdGV4dHVyZSBjb29yZGluYXRlcy4gVGhlIGZyYWdtZW50IHNoYWRlcgogKiBtdXN0IGNhbGwge0BsaW5rIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmV9IHRvIHJldHJpZXZlIHRoZSBmaW5hbAogKiBub24tcGVyc3BlY3RpdmUgdmFsdWUuCiAqCiAqIEBuYW1lIGN6bV93cml0ZU5vblBlcnNwZWN0aXZlCiAqIEBnbHNsRnVuY3Rpb24KICoKICogQHBhcmFtIHtmbG9hdHx2ZWMyfHZlYzN8dmVjNH0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGludGVycG9sYXRlZCB3aXRob3V0IGFjY291bnRpbmcgZm9yIHBlcnNwZWN0aXZlLgogKiBAcGFyYW0ge2Zsb2F0fSB3IFRoZSBwZXJzcGVjdGl2ZSBkaXZpZGUgdmFsdWUuIFVzdWFsbHkgdGhpcyBpcyB0aGUgY29tcHV0ZWQgXGBnbF9Qb3NpdGlvbi53XGAuCiAqIEByZXR1cm5zIHtmbG9hdHx2ZWMyfHZlYzN8dmVjNH0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlLCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gYSBcYHZhcnlpbmdcYCBhbmQgcmVhZCBpbiB0aGUKICogICAgICAgICAgZnJhZ21lbnQgc2hhZGVyIHdpdGgge0BsaW5rIGN6bV9yZWFkTm9uUGVyc3BlY3RpdmV9LgogKi8KZmxvYXQgY3ptX3dyaXRlTm9uUGVyc3BlY3RpdmUoZmxvYXQgdmFsdWUsIGZsb2F0IHcpIHsKICAgIHJldHVybiB2YWx1ZSAqIHc7Cn0KCnZlYzIgY3ptX3dyaXRlTm9uUGVyc3BlY3RpdmUodmVjMiB2YWx1ZSwgZmxvYXQgdykgewogICAgcmV0dXJuIHZhbHVlICogdzsKfQoKdmVjMyBjem1fd3JpdGVOb25QZXJzcGVjdGl2ZSh2ZWMzIHZhbHVlLCBmbG9hdCB3KSB7CiAgICByZXR1cm4gdmFsdWUgKiB3Owp9Cgp2ZWM0IGN6bV93cml0ZU5vblBlcnNwZWN0aXZlKHZlYzQgdmFsdWUsIGZsb2F0IHcpIHsKICAgIHJldHVybiB2YWx1ZSAqIHc7Cn0KYH0pO3ZhciBsSSxUTD1TKCgpPT57UlUoKTtJVSgpO3VVKCk7Z1UoKTtOVSgpO2JVKCk7VlUoKTtPVSgpO0dVKCk7RFUoKTtNVSgpO2tVKCk7eVUoKTt4VSgpO0pVKCk7SFUoKTt6VSgpO1hVKCk7JFUoKTtlTSgpO25NKCk7b00oKTthTSgpO2hNKCk7bE0oKTttTSgpO0VNKCk7Uk0oKTtJTSgpO3VNKCk7Z00oKTtOTSgpO2JNKCk7Vk0oKTtPTSgpO0dNKCk7RE0oKTtNTSgpO2tNKCk7eU0oKTt4TSgpO0pNKCk7SE0oKTt6TSgpO1hNKCk7JE0oKTtlUSgpO25RKCk7b1EoKTthUSgpO2hRKCk7bFEoKTttUSgpO0VRKCk7UlEoKTtJUSgpO3VRKCk7Z1EoKTtOUSgpO2JRKCk7VlEoKTtPUSgpO0dRKCk7RFEoKTtNUSgpO2tRKCk7eVEoKTt4USgpO0pRKCk7SFEoKTt6USgpO1hRKCk7JFEoKTtlMSgpO24xKCk7bzEoKTthMSgpO2gxKCk7bDEoKTttMSgpO0UxKCk7UjEoKTtJMSgpO3UxKCk7ZzEoKTtOMSgpO2IxKCk7VjEoKTtPMSgpO0cxKCk7RDEoKTtNMSgpO2sxKCk7eTEoKTt4MSgpO0oxKCk7SDEoKTt6MSgpO1gxKCk7JDEoKTtlaygpO25rKCk7b2soKTthaygpO2hrKCk7bGsoKTttaygpO0VrKCk7UmsoKTtJaygpO3VrKCk7Z2soKTtOaygpO2JrKCk7VmsoKTtPaygpO0drKCk7RGsoKTtNaygpO2trKCk7eWsoKTt4aygpO0prKCk7SGsoKTt6aygpO1hrKCk7JGsoKTtlTCgpO25MKCk7b0woKTthTCgpO2hMKCk7bEwoKTttTCgpO0VMKCk7UkwoKTtJTCgpO3VMKCk7Z0woKTtsST17Y3ptX2RlZ3JlZXNQZXJSYWRpYW46X1UsY3ptX2RlcHRoUmFuZ2U6WlUsY3ptX2Vwc2lsb24xOnBVLGN6bV9lcHNpbG9uMjpDVSxjem1fZXBzaWxvbjM6VFUsY3ptX2Vwc2lsb240OkZVLGN6bV9lcHNpbG9uNTpZVSxjem1fZXBzaWxvbjY6U1UsY3ptX2Vwc2lsb243OkJVLGN6bV9pbmZpbml0eTpXVSxjem1fb25lT3ZlclBpOlVVLGN6bV9vbmVPdmVyVHdvUGk6UVUsY3ptX3Bhc3NDZXNpdW0zRFRpbGU6TFUsY3ptX3Bhc3NDZXNpdW0zRFRpbGVDbGFzc2lmaWNhdGlvbjp3VSxjem1fcGFzc0Nlc2l1bTNEVGlsZUNsYXNzaWZpY2F0aW9uSWdub3JlU2hvdzpQVSxjem1fcGFzc0NsYXNzaWZpY2F0aW9uOmpVLGN6bV9wYXNzQ29tcHV0ZTp2VSxjem1fcGFzc0Vudmlyb25tZW50OktVLGN6bV9wYXNzR2xvYmU6cVUsY3ptX3Bhc3NPcGFxdWU6dE0sY3ptX3Bhc3NPdmVybGF5OmlNLGN6bV9wYXNzVGVycmFpbkNsYXNzaWZpY2F0aW9uOnNNLGN6bV9wYXNzVHJhbnNsdWNlbnQ6ck0sY3ptX3Bhc3NWb3hlbHM6QU0sY3ptX3BpOmNNLGN6bV9waU92ZXJGb3VyOmRNLGN6bV9waU92ZXJTaXg6Zk0sY3ptX3BpT3ZlclRocmVlOl9NLGN6bV9waU92ZXJUd286Wk0sY3ptX3JhZGlhbnNQZXJEZWdyZWU6cE0sY3ptX3NjZW5lTW9kZTJEOkNNLGN6bV9zY2VuZU1vZGUzRDpUTSxjem1fc2NlbmVNb2RlQ29sdW1idXNWaWV3OkZNLGN6bV9zY2VuZU1vZGVNb3JwaGluZzpZTSxjem1fc29sYXJSYWRpdXM6U00sY3ptX3RocmVlUGlPdmVyMjpCTSxjem1fdHdvUGk6V00sY3ptX3dlYk1lcmNhdG9yTWF4TGF0aXR1ZGU6VU0sY3ptX2RlcHRoUmFuZ2VTdHJ1Y3Q6UU0sY3ptX21hdGVyaWFsOkxNLGN6bV9tYXRlcmlhbElucHV0OndNLGN6bV9tb2RlbE1hdGVyaWFsOlBNLGN6bV9tb2RlbFZlcnRleE91dHB1dDpqTSxjem1fcGJyUGFyYW1ldGVyczp2TSxjem1fcmF5OktNLGN6bV9yYXlTZWdtZW50OnFNLGN6bV9zaGFkb3dQYXJhbWV0ZXJzOnRRLGN6bV9IU0JUb1JHQjppUSxjem1fSFNMVG9SR0I6c1EsY3ptX1JHQlRvSFNCOnJRLGN6bV9SR0JUb0hTTDpBUSxjem1fUkdCVG9YWVo6Y1EsY3ptX1hZWlRvUkdCOmRRLGN6bV9hY2VzVG9uZW1hcHBpbmc6ZlEsY3ptX2FscGhhV2VpZ2h0Ol9RLGN6bV9hbnRpYWxpYXM6WlEsY3ptX2FwcGx5SFNCU2hpZnQ6cFEsY3ptX2FwcHJveGltYXRlU3BoZXJpY2FsQ29vcmRpbmF0ZXM6Q1EsY3ptX2FwcHJveGltYXRlVGFuaDpUUSxjem1fYmFja0ZhY2luZzpGUSxjem1fYnJhbmNoRnJlZVRlcm5hcnk6WVEsY3ptX2Nhc2NhZGVDb2xvcjpTUSxjem1fY2FzY2FkZURpc3RhbmNlOkJRLGN6bV9jYXNjYWRlTWF0cml4OldRLGN6bV9jYXNjYWRlV2VpZ2h0czpVUSxjem1fY2xpcFBvbHlnb25zOlFRLGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaDpMUSxjem1fY29tcHV0ZUF0bW9zcGhlcmVDb2xvcjp3USxjem1fY29tcHV0ZUdyb3VuZEF0bW9zcGhlcmVTY2F0dGVyaW5nOlBRLGN6bV9jb21wdXRlUG9zaXRpb246alEsY3ptX2NvbXB1dGVTY2F0dGVyaW5nOnZRLGN6bV9jb3NpbmVBbmRTaW5lOktRLGN6bV9kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzOnFRLGN6bV9kZWZhdWx0UGJyTWF0ZXJpYWw6dDEsY3ptX2RlcHRoQ2xhbXA6aTEsY3ptX2Vhc3ROb3J0aFVwVG9FeWVDb29yZGluYXRlczpzMSxjem1fZWxsaXBzb2lkQ29udGFpbnNQb2ludDpyMSxjem1fZWxsaXBzb2lkV2dzODRUZXh0dXJlQ29vcmRpbmF0ZXM6QTEsY3ptX2VxdWFsc0Vwc2lsb246YzEsY3ptX2V5ZU9mZnNldDpkMSxjem1fZXllVG9XaW5kb3dDb29yZGluYXRlczpmMSxjem1fZmFzdEFwcHJveGltYXRlQXRhbjpfMSxjem1fZm9nOloxLGN6bV9nYW1tYUNvcnJlY3Q6cDEsY3ptX2dlb2RldGljU3VyZmFjZU5vcm1hbDpDMSxjem1fZ2V0RGVmYXVsdE1hdGVyaWFsOlQxLGN6bV9nZXREeW5hbWljQXRtb3NwaGVyZUxpZ2h0RGlyZWN0aW9uOkYxLGN6bV9nZXRMYW1iZXJ0RGlmZnVzZTpZMSxjem1fZ2V0U3BlY3VsYXI6UzEsY3ptX2dldFdhdGVyTm9pc2U6QjEsY3ptX2h1ZTpXMSxjem1faW52ZXJzZUdhbW1hOlUxLGN6bV9pc0VtcHR5OlExLGN6bV9pc0Z1bGw6TDEsY3ptX2xhdGl0dWRlVG9XZWJNZXJjYXRvckZyYWN0aW9uOncxLGN6bV9saW5lRGlzdGFuY2U6UDEsY3ptX2xpbmVhclRvU3JnYjpqMSxjem1fbHVtaW5hbmNlOnYxLGN6bV9tZXRlcnNQZXJQaXhlbDpLMSxjem1fbW9kZWxUb1dpbmRvd0Nvb3JkaW5hdGVzOnExLGN6bV9tdWx0aXBseVdpdGhDb2xvckJhbGFuY2U6dGssY3ptX25lYXJGYXJTY2FsYXI6aWssY3ptX29jdERlY29kZTpzayxjem1fcGFja0RlcHRoOnJrLGN6bV9wYnJMaWdodGluZzpBayxjem1fcGJyTWV0YWxsaWNSb3VnaG5lc3NNYXRlcmlhbDpjayxjem1fcGJyU3BlY3VsYXJHbG9zc2luZXNzTWF0ZXJpYWw6ZGssY3ptX3Bob25nOmZrLGN6bV9wbGFuZURpc3RhbmNlOl9rLGN6bV9wb2ludEFsb25nUmF5OlprLGN6bV9yYXlFbGxpcHNvaWRJbnRlcnNlY3Rpb25JbnRlcnZhbDpwayxjem1fcmF5U3BoZXJlSW50ZXJzZWN0aW9uSW50ZXJ2YWw6Q2ssY3ptX3JlYWREZXB0aDpUayxjem1fcmVhZE5vblBlcnNwZWN0aXZlOkZrLGN6bV9yZXZlcnNlTG9nRGVwdGg6WWssY3ptX3JvdW5kOlNrLGN6bV9zYW1wbGVPY3RhaGVkcmFsUHJvamVjdGlvbjpCayxjem1fc2F0dXJhdGlvbjpXayxjem1fc2hhZG93RGVwdGhDb21wYXJlOlVrLGN6bV9zaGFkb3dWaXNpYmlsaXR5OlFrLGN6bV9zaWduTm90WmVybzpMayxjem1fc3BoZXJpY2FsSGFybW9uaWNzOndrLGN6bV9zcmdiVG9MaW5lYXI6UGssY3ptX3RhbmdlbnRUb0V5ZVNwYWNlTWF0cml4OmprLGN6bV90ZXh0dXJlQ3ViZTp2ayxjem1fdHJhbnNmb3JtUGxhbmU6S2ssY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWU6cWssY3ptX3RyYW5zbHVjZW50UGhvbmc6dEwsY3ptX3RyYW5zcG9zZTppTCxjem1fdW5wYWNrQ2xpcHBpbmdFeHRlbnRzOnNMLGN6bV91bnBhY2tEZXB0aDpyTCxjem1fdW5wYWNrRmxvYXQ6QUwsY3ptX3VucGFja1VpbnQ6Y0wsY3ptX3ZhbHVlVHJhbnNmb3JtOmRMLGN6bV92ZXJ0ZXhMb2dEZXB0aDpmTCxjem1fd2luZG93VG9FeWVDb29yZGluYXRlczpfTCxjem1fd3JpdGVEZXB0aENsYW1wOlpMLGN6bV93cml0ZUxvZ0RlcHRoOnBMLGN6bV93cml0ZU5vblBlcnNwZWN0aXZlOkNMfX0pO2Z1bmN0aW9uIGh0dCh0LGUpe2xldCBpPXQ7cmV0dXJuIGk9aS5yZXBsYWNlQWxsKCJ2ZXJzaW9uIDMwMCBlcyIsIiIpLGk9aS5yZXBsYWNlQWxsKC8odGV4dHVyZVwoKS9nLCJ0ZXh0dXJlMkQoIiksZT8oaT1pLnJlcGxhY2VBbGwoL1xuXHMqKGluKVxzKyh2ZWNcZHxtYXRcZHxmbG9hdCkvZyxgCnZhcnlpbmcgJDJgKSwvb3V0X0ZyYWdEYXRhXyhcZCspLy50ZXN0KGkpJiYoaT1gI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogZW5hYmxlCiR7aX1gLGk9aS5yZXBsYWNlQWxsKC9sYXlvdXRccytcKGxvY2F0aW9uXHMqPVxzKlxkK1wpXHMqb3V0XHMrdmVjNFxzK291dF9GcmFnRGF0YV9cZCs7L2csIiIpLGk9aS5yZXBsYWNlQWxsKC9vdXRfRnJhZ0RhdGFfKFxkKykvZywiZ2xfRnJhZ0RhdGFbJDFdIikpLGk9aS5yZXBsYWNlQWxsKC9sYXlvdXRccytcKGxvY2F0aW9uXHMqPVxzKjBcKVxzKm91dFxzK3ZlYzRccytvdXRfRnJhZ0NvbG9yOy9nLCIiKSxpPWkucmVwbGFjZUFsbCgvb3V0X0ZyYWdDb2xvci9nLCJnbF9GcmFnQ29sb3IiKSxpPWkucmVwbGFjZUFsbCgvb3V0X0ZyYWdDb2xvclxbKFxkKylcXS9nLCJnbF9GcmFnQ29sb3JbJDFdIiksL2dsX0ZyYWdEZXB0aC8udGVzdChpKSYmKGk9YCNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUKJHtpfWAsaT1pLnJlcGxhY2VBbGwoL2dsX0ZyYWdEZXB0aC9nLCJnbF9GcmFnRGVwdGhFWFQiKSksaT1gI2lmZGVmIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwojZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZQojZW5kaWYKJHtpfWApOihpPWkucmVwbGFjZUFsbCgvKGluKVxzKyh2ZWNcZHxtYXRcZHxmbG9hdCkvZywiYXR0cmlidXRlICQyIiksaT1pLnJlcGxhY2VBbGwoLyhvdXQpXHMrKHZlY1xkfG1hdFxkfGZsb2F0KVxzKyhbXHddKyk7L2csInZhcnlpbmcgJDIgJDM7IikpLGk9YCN2ZXJzaW9uIDEwMAoke2l9YCxpfXZhciBOTCxGTD1TKCgpPT57Tkw9aHR0fSk7ZnVuY3Rpb24gYkwodCl7cmV0dXJuIHQ9dC5yZXBsYWNlKC9cL1wvLiovZywiIiksdC5yZXBsYWNlKC9cL1wqXCpbXHNcU10qP1wqXC8vZ20sZnVuY3Rpb24oZSl7bGV0IGk9ZS5tYXRjaCgvXG4vZ20pLmxlbmd0aCxuPSIiO2ZvcihsZXQgcz0wO3M8aTsrK3Mpbis9YApgO3JldHVybiBufSl9ZnVuY3Rpb24gWUwodCxlLGkpe2xldCBuO2ZvcihsZXQgcz0wO3M8aS5sZW5ndGg7KytzKWlbc10ubmFtZT09PXQmJihuPWlbc10pO3JldHVybiBtKG4pfHwoZT1iTChlKSxuPXtuYW1lOnQsZ2xzbFNvdXJjZTplLGRlcGVuZHNPbjpbXSxyZXF1aXJlZEJ5OltdLGV2YWx1YXRlZDohMX0saS5wdXNoKG4pKSxufWZ1bmN0aW9uIFZMKHQsZSl7aWYodC5ldmFsdWF0ZWQpcmV0dXJuO3QuZXZhbHVhdGVkPSEwO2xldCBpPXQuZ2xzbFNvdXJjZS5tYXRjaCgvXGJjem1fW2EtekEtWjAtOV9dKi9nKTttKGkpJiZpIT09bnVsbCYmKGk9aS5maWx0ZXIoZnVuY3Rpb24obixzKXtyZXR1cm4gaS5pbmRleE9mKG4pPT09c30pLGkuZm9yRWFjaChmdW5jdGlvbihuKXtpZihuIT09dC5uYW1lJiZNcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtcy5oYXNPd25Qcm9wZXJ0eShuKSl7bGV0IHM9WUwobixNcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtc1tuXSxlKTt0LmRlcGVuZHNPbi5wdXNoKHMpLHMucmVxdWlyZWRCeS5wdXNoKHQpLFZMKHMsZSl9fSkpfWZ1bmN0aW9uIGN0dCh0KXtsZXQgZT1bXSxpPVtdO2Zvcig7dC5sZW5ndGg+MDspe2xldCBzPXQucG9wKCk7aS5wdXNoKHMpLHMucmVxdWlyZWRCeS5sZW5ndGg9PT0wJiZlLnB1c2gocyl9Zm9yKDtlLmxlbmd0aD4wOyl7bGV0IHM9ZS5zaGlmdCgpO3QucHVzaChzKTtmb3IobGV0IG89MDtvPHMuZGVwZW5kc09uLmxlbmd0aDsrK28pe2xldCByPXMuZGVwZW5kc09uW29dLGE9ci5yZXF1aXJlZEJ5LmluZGV4T2Yocyk7ci5yZXF1aXJlZEJ5LnNwbGljZShhLDEpLHIucmVxdWlyZWRCeS5sZW5ndGg9PT0wJiZlLnB1c2gocil9fWxldCBuPVtdO2ZvcihsZXQgcz0wO3M8aS5sZW5ndGg7KytzKWlbc10ucmVxdWlyZWRCeS5sZW5ndGghPT0wJiZuLnB1c2goaVtzXSk7aWYobi5sZW5ndGghPT0wKXtsZXQgcz1gQSBjaXJjdWxhciBkZXBlbmRlbmN5IHdhcyBmb3VuZCBpbiB0aGUgZm9sbG93aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucy9zdHJ1Y3RzL2NvbnN0YW50czogCmA7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDsrK28pcz1gJHtzK25bb10ubmFtZX0KYDt0aHJvdyBuZXcgWShzKX19ZnVuY3Rpb24gbHR0KHQpe2xldCBlPVtdLGk9WUwoIm1haW4iLHQsZSk7VkwoaSxlKSxjdHQoZSk7bGV0IG49IiI7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MDstLXMpbj1gJHtuK2Vbc10uZ2xzbFNvdXJjZX0KYDtyZXR1cm4gbi5yZXBsYWNlKGkuZ2xzbFNvdXJjZSwiIil9ZnVuY3Rpb24gU0wodCxlLGkpe2xldCBuLHMsbz0iIixyPXQuc291cmNlcztpZihtKHIpKWZvcihuPTAscz1yLmxlbmd0aDtuPHM7KytuKW8rPWAKI2xpbmUgMAoke3Jbbl19YDtvPWJMKG8pO2xldCBhO289by5yZXBsYWNlKC8jdmVyc2lvblxzKyguKj8pXG4vZ20sZnVuY3Rpb24oSSxDKXtpZihtKGEpJiZhIT09Qyl0aHJvdyBuZXcgWShgaW5jb25zaXN0ZW50IHZlcnNpb25zIGZvdW5kOiAke2F9IGFuZCAke0N9YCk7cmV0dXJuIGE9QyxgCmB9KTtsZXQgaD1bXTtvPW8ucmVwbGFjZSgvI2V4dGVuc2lvbi4qXG4vZ20sZnVuY3Rpb24oSSl7cmV0dXJuIGgucHVzaChJKSxgCmB9KSxvPW8ucmVwbGFjZSgvcHJlY2lzaW9uXHMobG93cHxtZWRpdW1wfGhpZ2hwKVxzKGZsb2F0fGludCk7LywiIik7bGV0IEE9dC5waWNrQ29sb3JRdWFsaWZpZXI7bShBKSYmKG89TXMuY3JlYXRlUGlja0ZyYWdtZW50U2hhZGVyU291cmNlKG8sQSkpO2xldCBkPSIiLGY9aC5sZW5ndGg7Zm9yKG49MDtuPGY7bisrKWQrPWhbbl07ZSYmKGQrPWAjaWZkZWYgR0xfRlJBR01FTlRfUFJFQ0lTSU9OX0hJR0gKICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKICAgIHByZWNpc2lvbiBoaWdocCBpbnQ7CiNlbHNlCiAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKICAgIHByZWNpc2lvbiBtZWRpdW1wIGludDsKICAgICNkZWZpbmUgaGlnaHAgbWVkaXVtcAojZW5kaWYKCmApO2xldCBFPXQuZGVmaW5lcztpZihtKEUpKWZvcihuPTAscz1FLmxlbmd0aDtuPHM7KytuKXtsZXQgST1FW25dO0kubGVuZ3RoIT09MCYmKGQrPWAjZGVmaW5lICR7SX0KYCl9aS50ZXh0dXJlRmxvYXRMaW5lYXImJihkKz1gI2RlZmluZSBPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKCmApLGkuZmxvYXRpbmdQb2ludFRleHR1cmUmJihkKz1gI2RlZmluZSBPRVNfdGV4dHVyZV9mbG9hdAoKYCk7bGV0IF89IiI7dC5pbmNsdWRlQnVpbHRJbnMmJihfPWx0dChvKSksZCs9YAojbGluZSAwCmA7bGV0IFI9XytvO3JldHVybiBpLndlYmdsMiYmZSYmIS9sYXlvdXRccypcKGxvY2F0aW9uXHMqPVxzKjBcKVxzKm91dFxzK3ZlYzRccytvdXRfRnJhZ0NvbG9yOy9nLnRlc3QoUikmJiEvY3ptX291dF9GcmFnQ29sb3IvZy50ZXN0KFIpJiYvb3V0X0ZyYWdDb2xvci9nLnRlc3QoUikmJihkKz1gbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgb3V0X0ZyYWdDb2xvcjsKCmApLGQrPV8sZCs9byxpLndlYmdsMj9kPWAjdmVyc2lvbiAzMDAgZXMKJHtkfWA6ZD1OTChkLGUpLGR9ZnVuY3Rpb24gTXModCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucGlja0NvbG9yUXVhbGlmaWVyO2lmKG0oZSkmJmUhPT0idW5pZm9ybSImJmUhPT0iaW4iKXRocm93IG5ldyBZKCJvcHRpb25zLnBpY2tDb2xvclF1YWxpZmllciBtdXN0IGJlICd1bmlmb3JtJyBvciAnaW4nLiIpO3RoaXMuZGVmaW5lcz1tKHQuZGVmaW5lcyk/dC5kZWZpbmVzLnNsaWNlKDApOltdLHRoaXMuc291cmNlcz1tKHQuc291cmNlcyk/dC5zb3VyY2VzLnNsaWNlKDApOltdLHRoaXMucGlja0NvbG9yUXVhbGlmaWVyPWUsdGhpcy5pbmNsdWRlQnVpbHRJbnM9Wih0LmluY2x1ZGVCdWlsdElucywhMCl9ZnVuY3Rpb24gZHR0KHQsZSl7bGV0IGk9dC5kZWZpbmVzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuOysrcylpZihpW3NdPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBPTCh0LGUpe2xldCBpPXQuc291cmNlcyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3MpaWYoaVtzXS5pbmRleE9mKGUpIT09LTEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gQkwodCxlKXtsZXQgaT1lLmxlbmd0aDtmb3IobGV0IG49MDtuPGk7KytuKXtsZXQgcz1lW25dO2lmKE9MKHQscykpcmV0dXJuIHN9fXZhciBtdHQsZnR0LFVpLGJsPVMoKCk9PntGdCgpO210KCk7T3QoKTtUTCgpO2JUKCk7RkwoKTtNcy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1zKHtzb3VyY2VzOnRoaXMuc291cmNlcyxkZWZpbmVzOnRoaXMuZGVmaW5lcyxwaWNrQ29sb3JRdWFsaWZpZXI6dGhpcy5waWNrQ29sb3JRdWFsaWZpZXIsaW5jbHVkZUJ1aWx0SW5zOnRoaXMuaW5jbHVkZUJ1aWx0SW5zfSl9O01zLnJlcGxhY2VNYWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9YHZvaWQgJHtlfSgpYCx0LnJlcGxhY2UoL3ZvaWRccyttYWluXHMqXChccyooPzp2b2lkKT9ccypcKS9nLGUpfTtNcy5wcm90b3R5cGUuZ2V0Q2FjaGVLZXk9ZnVuY3Rpb24oKXtsZXQgZT10aGlzLmRlZmluZXMuc2xpY2UoKS5zb3J0KCkuam9pbigiLCIpLGk9dGhpcy5waWNrQ29sb3JRdWFsaWZpZXIsbj10aGlzLmluY2x1ZGVCdWlsdElucyxzPXRoaXMuc291cmNlcy5qb2luKGAKYCk7cmV0dXJuYCR7ZX06JHtpfToke259OiR7c31gfTtNcy5wcm90b3R5cGUuY3JlYXRlQ29tYmluZWRWZXJ0ZXhTaGFkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIFNMKHRoaXMsITEsdCl9O01zLnByb3RvdHlwZS5jcmVhdGVDb21iaW5lZEZyYWdtZW50U2hhZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBTTCh0aGlzLCEwLHQpfTtNcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtcz17fTtmb3IobGV0IHQgaW4gbEkpbEkuaGFzT3duUHJvcGVydHkodCkmJihNcy5fY3ptQnVpbHRpbnNBbmRVbmlmb3Jtc1t0XT1sSVt0XSk7Zm9yKGxldCB0IGluIE1tKWlmKE1tLmhhc093blByb3BlcnR5KHQpKXtsZXQgZT1NbVt0XTt0eXBlb2YgZS5nZXREZWNsYXJhdGlvbj09ImZ1bmN0aW9uIiYmKE1zLl9jem1CdWlsdGluc0FuZFVuaWZvcm1zW3RdPWUuZ2V0RGVjbGFyYXRpb24odCkpfU1zLmNyZWF0ZVBpY2tWZXJ0ZXhTaGFkZXJTb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuYCR7TXMucmVwbGFjZU1haW4odCwiY3ptX29sZF9tYWluIil9CmluIHZlYzQgcGlja0NvbG9yOyAKb3V0IHZlYzQgY3ptX3BpY2tDb2xvcjsgCnZvaWQgbWFpbigpIAp7IAogICAgY3ptX29sZF9tYWluKCk7IAogICAgY3ptX3BpY2tDb2xvciA9IHBpY2tDb2xvcjsgCn1gfTtNcy5jcmVhdGVQaWNrRnJhZ21lbnRTaGFkZXJTb3VyY2U9ZnVuY3Rpb24odCxlKXtsZXQgaT1Ncy5yZXBsYWNlTWFpbih0LCJjem1fb2xkX21haW4iKSxuPWAke2V9IHZlYzQgY3ptX3BpY2tDb2xvcjsgCnZvaWQgbWFpbigpIAp7IAogICAgY3ptX29sZF9tYWluKCk7IAogICAgaWYgKG91dF9GcmFnQ29sb3IuYSA9PSAwLjApIHsgCiAgICAgICBkaXNjYXJkOyAKICAgIH0gCiAgICBvdXRfRnJhZ0NvbG9yID0gY3ptX3BpY2tDb2xvcjsgCn1gO3JldHVybmAke2l9CiR7bn1gfTttdHQ9WyJ2X25vcm1hbEVDIiwidl9ub3JtYWwiXTtNcy5maW5kTm9ybWFsVmFyeWluZz1mdW5jdGlvbih0KXtyZXR1cm4gT0wodCwiI2lmZGVmIEhBU19OT1JNQUxTIik/ZHR0KHQsIkhBU19OT1JNQUxTIik/InZfbm9ybWFsRUMiOnZvaWQgMDpCTCh0LG10dCl9O2Z0dD1bInZfcG9zaXRpb25FQyJdO01zLmZpbmRQb3NpdGlvblZhcnlpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIEJMKHQsZnR0KX07VWk9TXN9KTt2YXIgRXR0LEFoLGRJPVMoKCk9PntFdHQ9e05PTkU6MCxUUklBTkdMRVM6MSxMSU5FUzoyLFBPTFlMSU5FUzozfSxBaD1PYmplY3QuZnJlZXplKEV0dCl9KTtmdW5jdGlvbiBTVCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC50eXBlT2Yub2JqZWN0KCJvcHRpb25zLmF0dHJpYnV0ZXMiLHQuYXR0cmlidXRlcyksdGhpcy5hdHRyaWJ1dGVzPXQuYXR0cmlidXRlcyx0aGlzLmluZGljZXM9dC5pbmRpY2VzLHRoaXMucHJpbWl0aXZlVHlwZT1aKHQucHJpbWl0aXZlVHlwZSxuZS5UUklBTkdMRVMpLHRoaXMuYm91bmRpbmdTcGhlcmU9dC5ib3VuZGluZ1NwaGVyZSx0aGlzLmdlb21ldHJ5VHlwZT1aKHQuZ2VvbWV0cnlUeXBlLEFoLk5PTkUpLHRoaXMuYm91bmRpbmdTcGhlcmVDVj10LmJvdW5kaW5nU3BoZXJlQ1YsdGhpcy5vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGV9dmFyIF90dCxSdHQsR0wsWnR0LEl0dCxwdHQsdXR0LEN0dCxndHQsVHR0LHNlLHlpPVMoKCk9PntYZSgpO0h0KCk7cmkoKTthZSgpO0Z0KCk7bXQoKTtkSSgpO2RjKCk7ZG4oKTtiaSgpO1hpKCk7JHMoKTtwbigpO2ZyKCk7U1QuY29tcHV0ZU51bWJlck9mVmVydGljZXM9ZnVuY3Rpb24odCl7cC50eXBlT2Yub2JqZWN0KCJnZW9tZXRyeSIsdCk7bGV0IGU9LTE7Zm9yKGxldCBpIGluIHQuYXR0cmlidXRlcylpZih0LmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoaSkmJm0odC5hdHRyaWJ1dGVzW2ldKSYmbSh0LmF0dHJpYnV0ZXNbaV0udmFsdWVzKSl7bGV0IG49dC5hdHRyaWJ1dGVzW2ldLHM9bi52YWx1ZXMubGVuZ3RoL24uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtlPXN9cmV0dXJuIGV9O190dD1uZXcgdXQsUnR0PW5ldyBsLEdMPW5ldyBhdCxadHQ9W25ldyB1dCxuZXcgdXQsbmV3IHV0XSxJdHQ9W25ldyBudCxuZXcgbnQsbmV3IG50XSxwdHQ9W25ldyBudCxuZXcgbnQsbmV3IG50XSx1dHQ9bmV3IGwsQ3R0PW5ldyBBZSxndHQ9bmV3IGF0LFR0dD1uZXcgSG47U1QuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9ZnVuY3Rpb24odCxlLGksbil7bGV0IHMsbz1YdC5jZW50ZXIobixfdHQpLHI9dXQudG9DYXJ0ZXNpYW4obyxpLFJ0dCksYT1Jbi5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShyLGksR0wpLGg9YXQuaW52ZXJzZShhLEdMKSxBPUl0dCxkPVp0dDtkWzBdLmxvbmdpdHVkZT1uLndlc3QsZFswXS5sYXRpdHVkZT1uLnNvdXRoLGRbMV0ubG9uZ2l0dWRlPW4ud2VzdCxkWzFdLmxhdGl0dWRlPW4ubm9ydGgsZFsyXS5sb25naXR1ZGU9bi5lYXN0LGRbMl0ubGF0aXR1ZGU9bi5zb3V0aDtsZXQgZj11dHQ7Zm9yKHM9MDtzPDM7cysrKXV0LnRvQ2FydGVzaWFuKGRbc10saSxmKSxmPWF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKGgsZixmKSxBW3NdLng9Zi54LEFbc10ueT1mLnk7bGV0IEU9QWUuZnJvbUF4aXNBbmdsZShsLlVOSVRfWiwtZSxDdHQpLF89bHQuZnJvbVF1YXRlcm5pb24oRSxndHQpLFI9dC5sZW5ndGgsST1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksVD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKHM9MDtzPFI7cysrKWY9YXQubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IoaCx0W3NdLGYpLGY9bHQubXVsdGlwbHlCeVZlY3RvcihfLGYsZiksST1NYXRoLm1pbihJLGYueCksQz1NYXRoLm1pbihDLGYueSksTj1NYXRoLm1heChOLGYueCksVD1NYXRoLm1heChULGYueSk7bGV0IGI9SG4uZnJvbVJvdGF0aW9uKGUsVHR0KSxGPXB0dDtGWzBdLng9SSxGWzBdLnk9QyxGWzFdLng9SSxGWzFdLnk9VCxGWzJdLng9TixGWzJdLnk9QztsZXQgQj1BWzBdLFU9QVsyXS54LUIueCxRPUFbMV0ueS1CLnk7Zm9yKHM9MDtzPDM7cysrKXtsZXQgZz1GW3NdO0huLm11bHRpcGx5QnlWZWN0b3IoYixnLGcpLGcueD0oZy54LUIueCkvVSxnLnk9KGcueS1CLnkpL1F9bGV0IE09RlswXSxrPUZbMV0seT1GWzJdLGM9bmV3IEFycmF5KDYpO3JldHVybiBudC5wYWNrKE0sYyksbnQucGFjayhrLGMsMiksbnQucGFjayh5LGMsNCksY307c2U9U1R9KTtmdW5jdGlvbiBOdHQodCxlLGksbil7bGV0IHM9bShlLnZlcnRleEJ1ZmZlciksbz1tKGUudmFsdWUpLHI9ZS52YWx1ZT9lLnZhbHVlLmxlbmd0aDplLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU7aWYoIXMmJiFvKXRocm93IG5ldyBZKCJhdHRyaWJ1dGUgbXVzdCBoYXZlIGEgdmVydGV4QnVmZmVyIG9yIGEgdmFsdWUuIik7aWYocyYmbyl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIGNhbm5vdCBoYXZlIGJvdGggYSB2ZXJ0ZXhCdWZmZXIgYW5kIGEgdmFsdWUuICBJdCBtdXN0IGhhdmUgZWl0aGVyIGEgdmVydGV4QnVmZmVyIHByb3BlcnR5IGRlZmluaW5nIHBlci12ZXJ0ZXggZGF0YSBvciBhIHZhbHVlIHByb3BlcnR5IGRlZmluaW5nIGRhdGEgZm9yIGFsbCB2ZXJ0aWNlcy4iKTtpZihyIT09MSYmciE9PTImJnIhPT0zJiZyIT09NCl0aHJvdyBvP25ldyBZKCJhdHRyaWJ1dGUudmFsdWUubGVuZ3RoIG11c3QgYmUgaW4gdGhlIHJhbmdlIFsxLCA0XS4iKTpuZXcgWSgiYXR0cmlidXRlLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWzEsIDRdLiIpO2lmKG0oZS5jb21wb25lbnREYXRhdHlwZSkmJiFBdC52YWxpZGF0ZShlLmNvbXBvbmVudERhdGF0eXBlKSl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIG11c3QgaGF2ZSBhIHZhbGlkIGNvbXBvbmVudERhdGF0eXBlIG9yIG5vdCBzcGVjaWZ5IGl0LiIpO2lmKG0oZS5zdHJpZGVJbkJ5dGVzKSYmZS5zdHJpZGVJbkJ5dGVzPjI1NSl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIG11c3QgaGF2ZSBhIHN0cmlkZUluQnl0ZXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDI1NSBvciBub3Qgc3BlY2lmeSBpdC4iKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmZS5pbnN0YW5jZURpdmlzb3I+MCYmIW4uaW5zdGFuY2VkQXJyYXlzKXRocm93IG5ldyBZKCJpbnN0YW5jZWQgYXJyYXlzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmZS5pbnN0YW5jZURpdmlzb3I8MCl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIG11c3QgaGF2ZSBhbiBpbnN0YW5jZURpdmlzb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8iKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmbyl0aHJvdyBuZXcgWSgiYXR0cmlidXRlIGNhbm5vdCBoYXZlIGhhdmUgYW4gaW5zdGFuY2VEaXZpc29yIGlmIGl0IGlzIG5vdCBiYWNrZWQgYnkgYSBidWZmZXIiKTtpZihtKGUuaW5zdGFuY2VEaXZpc29yKSYmZS5pbnN0YW5jZURpdmlzb3I+MCYmZS5pbmRleD09PTApdGhyb3cgbmV3IFkoImF0dHJpYnV0ZSB6ZXJvIGNhbm5vdCBoYXZlIGFuIGluc3RhbmNlRGl2aXNvciBncmVhdGVyIHRoYW4gMCIpO2xldCBhPXtpbmRleDpaKGUuaW5kZXgsaSksZW5hYmxlZDpaKGUuZW5hYmxlZCwhMCksdmVydGV4QnVmZmVyOmUudmVydGV4QnVmZmVyLHZhbHVlOm8/ZS52YWx1ZS5zbGljZSgwKTp2b2lkIDAsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpyLGNvbXBvbmVudERhdGF0eXBlOlooZS5jb21wb25lbnREYXRhdHlwZSxBdC5GTE9BVCksbm9ybWFsaXplOlooZS5ub3JtYWxpemUsITEpLG9mZnNldEluQnl0ZXM6WihlLm9mZnNldEluQnl0ZXMsMCksc3RyaWRlSW5CeXRlczpaKGUuc3RyaWRlSW5CeXRlcywwKSxpbnN0YW5jZURpdmlzb3I6WihlLmluc3RhbmNlRGl2aXNvciwwKX07aWYocylhLnZlcnRleEF0dHJpYj1mdW5jdGlvbihoKXtsZXQgQT10aGlzLmluZGV4O2guYmluZEJ1ZmZlcihoLkFSUkFZX0JVRkZFUix0aGlzLnZlcnRleEJ1ZmZlci5fZ2V0QnVmZmVyKCkpLGgudmVydGV4QXR0cmliUG9pbnRlcihBLHRoaXMuY29tcG9uZW50c1BlckF0dHJpYnV0ZSx0aGlzLmNvbXBvbmVudERhdGF0eXBlLHRoaXMubm9ybWFsaXplLHRoaXMuc3RyaWRlSW5CeXRlcyx0aGlzLm9mZnNldEluQnl0ZXMpLGguZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoQSksdGhpcy5pbnN0YW5jZURpdmlzb3I+MCYmKG4uZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yKEEsdGhpcy5pbnN0YW5jZURpdmlzb3IpLG4uX3ZlcnRleEF0dHJpYkRpdmlzb3JzW0FdPXRoaXMuaW5zdGFuY2VEaXZpc29yLG4uX3ByZXZpb3VzRHJhd0luc3RhbmNlZD0hMCl9LGEuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5PWZ1bmN0aW9uKGgpe2guZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMuaW5kZXgpLHRoaXMuaW5zdGFuY2VEaXZpc29yPjAmJm4uZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yKGksMCl9O2Vsc2V7c3dpdGNoKGEuY29tcG9uZW50c1BlckF0dHJpYnV0ZSl7Y2FzZSAxOmEudmVydGV4QXR0cmliPWZ1bmN0aW9uKGgpe2gudmVydGV4QXR0cmliMWZ2KHRoaXMuaW5kZXgsdGhpcy52YWx1ZSl9O2JyZWFrO2Nhc2UgMjphLnZlcnRleEF0dHJpYj1mdW5jdGlvbihoKXtoLnZlcnRleEF0dHJpYjJmdih0aGlzLmluZGV4LHRoaXMudmFsdWUpfTticmVhaztjYXNlIDM6YS52ZXJ0ZXhBdHRyaWI9ZnVuY3Rpb24oaCl7aC52ZXJ0ZXhBdHRyaWIzZnYodGhpcy5pbmRleCx0aGlzLnZhbHVlKX07YnJlYWs7Y2FzZSA0OmEudmVydGV4QXR0cmliPWZ1bmN0aW9uKGgpe2gudmVydGV4QXR0cmliNGZ2KHRoaXMuaW5kZXgsdGhpcy52YWx1ZSl9O2JyZWFrfWEuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5PWZ1bmN0aW9uKGgpe319dC5wdXNoKGEpfWZ1bmN0aW9uIERMKHQsZSxpKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoOysrbil7bGV0IHM9ZVtuXTtzLmVuYWJsZWQmJnMudmVydGV4QXR0cmliKHQpfW0oaSkmJnQuYmluZEJ1ZmZlcih0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLGkuX2dldEJ1ZmZlcigpKX1mdW5jdGlvbiBoaCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCkscC5kZWZpbmVkKCJvcHRpb25zLmF0dHJpYnV0ZXMiLHQuYXR0cmlidXRlcyk7bGV0IGU9dC5jb250ZXh0LGk9ZS5fZ2wsbj10LmF0dHJpYnV0ZXMscz10LmluZGV4QnVmZmVyLG8scj1bXSxhPTEsaD0hMSxBPSExLGQ9bi5sZW5ndGg7Zm9yKG89MDtvPGQ7KytvKU50dChyLG5bb10sbyxlKTtmb3IoZD1yLmxlbmd0aCxvPTA7bzxkOysrbyl7bGV0IF89cltvXTtpZihtKF8udmVydGV4QnVmZmVyKSYmXy5pbnN0YW5jZURpdmlzb3I9PT0wKXtsZXQgUj1fLnN0cmlkZUluQnl0ZXN8fF8uY29tcG9uZW50c1BlckF0dHJpYnV0ZSpBdC5nZXRTaXplSW5CeXRlcyhfLmNvbXBvbmVudERhdGF0eXBlKTthPV8udmVydGV4QnVmZmVyLnNpemVJbkJ5dGVzL1I7YnJlYWt9fWZvcihvPTA7bzxkOysrbylyW29dLmluc3RhbmNlRGl2aXNvcj4wJiYoaD0hMCksbShyW29dLnZhbHVlKSYmKEE9ITApO2xldCBmPXt9O2ZvcihvPTA7bzxkOysrbyl7bGV0IF89cltvXS5pbmRleDtpZihmW19dKXRocm93IG5ldyBZKGBJbmRleCAke199IGlzIHVzZWQgYnkgbW9yZSB0aGFuIG9uZSBhdHRyaWJ1dGUuYCk7ZltfXT0hMH1sZXQgRTtlLnZlcnRleEFycmF5T2JqZWN0JiYoRT1lLmdsQ3JlYXRlVmVydGV4QXJyYXkoKSxlLmdsQmluZFZlcnRleEFycmF5KEUpLERMKGkscixzKSxlLmdsQmluZFZlcnRleEFycmF5KG51bGwpKSx0aGlzLl9udW1iZXJPZlZlcnRpY2VzPWEsdGhpcy5faGFzSW5zdGFuY2VkQXR0cmlidXRlcz1oLHRoaXMuX2hhc0NvbnN0YW50QXR0cmlidXRlcz1BLHRoaXMuX2NvbnRleHQ9ZSx0aGlzLl9nbD1pLHRoaXMuX3Zhbz1FLHRoaXMuX2F0dHJpYnV0ZXM9cix0aGlzLl9pbmRleEJ1ZmZlcj1zfWZ1bmN0aW9uIFdMKHQpe3JldHVybiB0LnZhbHVlcy5sZW5ndGgvdC5jb21wb25lbnRzUGVyQXR0cmlidXRlfWZ1bmN0aW9uIEZ0dCh0KXtyZXR1cm4gQXQuZ2V0U2l6ZUluQnl0ZXModC5jb21wb25lbnREYXRhdHlwZSkqdC5jb21wb25lbnRzUGVyQXR0cmlidXRlfWZ1bmN0aW9uIGJ0dCh0KXtsZXQgZSxpLG4scz1bXTtmb3IoaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJm0odFtpXSkmJm0odFtpXS52YWx1ZXMpJiYocy5wdXNoKGkpLHRbaV0uY29tcG9uZW50RGF0YXR5cGU9PT1BdC5ET1VCTEUmJih0W2ldLmNvbXBvbmVudERhdGF0eXBlPUF0LkZMT0FULHRbaV0udmFsdWVzPUF0LmNyZWF0ZVR5cGVkQXJyYXkoQXQuRkxPQVQsdFtpXS52YWx1ZXMpKSk7bGV0IG8scj1zLmxlbmd0aDtpZihyPjApZm9yKG89V0wodFtzWzBdXSksZT0xO2U8cjsrK2Upe2xldCBBPVdMKHRbc1tlXV0pO2lmKEEhPT1vKXRocm93IG5ldyBrZShgRWFjaCBhdHRyaWJ1dGUgbGlzdCBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHZlcnRpY2VzLiAgQXR0cmlidXRlICR7c1tlXX0gaGFzIGEgZGlmZmVyZW50IG51bWJlciBvZiB2ZXJ0aWNlcyAoJHtBLnRvU3RyaW5nKCl9KSB0aGFuIGF0dHJpYnV0ZSAke3NbMF19ICgke28udG9TdHJpbmcoKX0pLmApfXMuc29ydChmdW5jdGlvbihBLGQpe3JldHVybiBBdC5nZXRTaXplSW5CeXRlcyh0W2RdLmNvbXBvbmVudERhdGF0eXBlKS1BdC5nZXRTaXplSW5CeXRlcyh0W0FdLmNvbXBvbmVudERhdGF0eXBlKX0pO2xldCBhPTAsaD17fTtmb3IoZT0wO2U8cjsrK2UpaT1zW2VdLG49dFtpXSxoW2ldPWEsYSs9RnR0KG4pO2lmKGE+MCl7bGV0IEE9QXQuZ2V0U2l6ZUluQnl0ZXModFtzWzBdXS5jb21wb25lbnREYXRhdHlwZSksZD1hJUE7ZCE9PTAmJihhKz1BLWQpO2xldCBmPW8qYSxFPW5ldyBBcnJheUJ1ZmZlcihmKSxfPXt9O2ZvcihlPTA7ZTxyOysrZSl7aT1zW2VdO2xldCBSPUF0LmdldFNpemVJbkJ5dGVzKHRbaV0uY29tcG9uZW50RGF0YXR5cGUpO19baV09e3BvaW50ZXI6QXQuY3JlYXRlVHlwZWRBcnJheSh0W2ldLmNvbXBvbmVudERhdGF0eXBlLEUpLGluZGV4OmhbaV0vUixzdHJpZGVJbkNvbXBvbmVudFR5cGU6YS9SfX1mb3IoZT0wO2U8bzsrK2UpZm9yKGxldCBSPTA7UjxyOysrUil7aT1zW1JdLG49dFtpXTtsZXQgST1uLnZhbHVlcyxDPV9baV0sTj1DLnBvaW50ZXIsVD1uLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU7Zm9yKGxldCBiPTA7YjxUOysrYilOW0MuaW5kZXgrYl09SVtlKlQrYl07Qy5pbmRleCs9Qy5zdHJpZGVJbkNvbXBvbmVudFR5cGV9cmV0dXJue2J1ZmZlcjpFLG9mZnNldHNJbkJ5dGVzOmgsdmVydGV4U2l6ZUluQnl0ZXM6YX19fWZ1bmN0aW9uIFl0dCh0KXtsZXQgZT10Ll9jb250ZXh0LGk9dC5faGFzSW5zdGFuY2VkQXR0cmlidXRlcztpZighaSYmIWUuX3ByZXZpb3VzRHJhd0luc3RhbmNlZClyZXR1cm47ZS5fcHJldmlvdXNEcmF3SW5zdGFuY2VkPWk7bGV0IG49ZS5fdmVydGV4QXR0cmliRGl2aXNvcnMscz10Ll9hdHRyaWJ1dGVzLG89ZW4ubWF4aW11bVZlcnRleEF0dHJpYnV0ZXMscjtpZihpKXtsZXQgYT1zLmxlbmd0aDtmb3Iocj0wO3I8YTsrK3Ipe2xldCBoPXNbcl07aWYoaC5lbmFibGVkKXtsZXQgQT1oLmluc3RhbmNlRGl2aXNvcixkPWguaW5kZXg7QSE9PW5bZF0mJihlLmdsVmVydGV4QXR0cmliRGl2aXNvcihkLEEpLG5bZF09QSl9fX1lbHNlIGZvcihyPTA7cjxvOysrciluW3JdPjAmJihlLmdsVmVydGV4QXR0cmliRGl2aXNvcihyLDApLG5bcl09MCl9ZnVuY3Rpb24gVnR0KHQsZSl7bGV0IGk9dC5fYXR0cmlidXRlcyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe2xldCBvPWlbc107by5lbmFibGVkJiZtKG8udmFsdWUpJiZvLnZlcnRleEF0dHJpYihlKX19dmFyIG1JLE9UPVMoKCk9PnthZSgpO29pKCk7RnQoKTttdCgpO1dzKCk7T3QoKTt5aSgpO0RpKCk7X2UoKTtQcygpO2FJKCk7TmwoKTtnYSgpO2hoLmZyb21HZW9tZXRyeT1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCk7bGV0IGU9dC5jb250ZXh0LGk9Wih0Lmdlb21ldHJ5LFouRU1QVFlfT0JKRUNUKSxuPVoodC5idWZmZXJVc2FnZSxhaS5EWU5BTUlDX0RSQVcpLHM9Wih0LmF0dHJpYnV0ZUxvY2F0aW9ucyxaLkVNUFRZX09CSkVDVCksbz1aKHQuaW50ZXJsZWF2ZSwhMSkscj10LnZlcnRleEFycmF5QXR0cmlidXRlcyxhLGgsQSxkPW0ocik/cjpbXSxmPWkuYXR0cmlidXRlcztpZihvKXtsZXQgUj1idHQoZik7aWYobShSKSl7QT1DYS5jcmVhdGVWZXJ0ZXhCdWZmZXIoe2NvbnRleHQ6ZSx0eXBlZEFycmF5OlIuYnVmZmVyLHVzYWdlOm59KTtsZXQgST1SLm9mZnNldHNJbkJ5dGVzLEM9Ui52ZXJ0ZXhTaXplSW5CeXRlcztmb3IoYSBpbiBmKWYuaGFzT3duUHJvcGVydHkoYSkmJm0oZlthXSkmJihoPWZbYV0sbShoLnZhbHVlcyk/ZC5wdXNoKHtpbmRleDpzW2FdLHZlcnRleEJ1ZmZlcjpBLGNvbXBvbmVudERhdGF0eXBlOmguY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpoLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOmgubm9ybWFsaXplLG9mZnNldEluQnl0ZXM6SVthXSxzdHJpZGVJbkJ5dGVzOkN9KTpkLnB1c2goe2luZGV4OnNbYV0sdmFsdWU6aC52YWx1ZSxjb21wb25lbnREYXRhdHlwZTpoLmNvbXBvbmVudERhdGF0eXBlLG5vcm1hbGl6ZTpoLm5vcm1hbGl6ZX0pKX19ZWxzZSBmb3IoYSBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoYSkmJm0oZlthXSkpe2g9ZlthXTtsZXQgUj1oLmNvbXBvbmVudERhdGF0eXBlO1I9PT1BdC5ET1VCTEUmJihSPUF0LkZMT0FUKSxBPXZvaWQgMCxtKGgudmFsdWVzKSYmKEE9Q2EuY3JlYXRlVmVydGV4QnVmZmVyKHtjb250ZXh0OmUsdHlwZWRBcnJheTpBdC5jcmVhdGVUeXBlZEFycmF5KFIsaC52YWx1ZXMpLHVzYWdlOm59KSksZC5wdXNoKHtpbmRleDpzW2FdLHZlcnRleEJ1ZmZlcjpBLHZhbHVlOmgudmFsdWUsY29tcG9uZW50RGF0YXR5cGU6Uixjb21wb25lbnRzUGVyQXR0cmlidXRlOmguY29tcG9uZW50c1BlckF0dHJpYnV0ZSxub3JtYWxpemU6aC5ub3JtYWxpemV9KX1sZXQgRSxfPWkuaW5kaWNlcztyZXR1cm4gbShfKSYmKHNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKGkpPj1MLlNJWFRZX0ZPVVJfS0lMT0JZVEVTJiZlLmVsZW1lbnRJbmRleFVpbnQ/RT1DYS5jcmVhdGVJbmRleEJ1ZmZlcih7Y29udGV4dDplLHR5cGVkQXJyYXk6bmV3IFVpbnQzMkFycmF5KF8pLHVzYWdlOm4saW5kZXhEYXRhdHlwZTp0ZS5VTlNJR05FRF9JTlR9KTpFPUNhLmNyZWF0ZUluZGV4QnVmZmVyKHtjb250ZXh0OmUsdHlwZWRBcnJheTpuZXcgVWludDE2QXJyYXkoXyksdXNhZ2U6bixpbmRleERhdGF0eXBlOnRlLlVOU0lHTkVEX1NIT1JUfSkpLG5ldyBoaCh7Y29udGV4dDplLGF0dHJpYnV0ZXM6ZCxpbmRleEJ1ZmZlcjpFfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGhoLnByb3RvdHlwZSx7bnVtYmVyT2ZBdHRyaWJ1dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXR0cmlidXRlcy5sZW5ndGh9fSxudW1iZXJPZlZlcnRpY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbnVtYmVyT2ZWZXJ0aWNlc319LGluZGV4QnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW5kZXhCdWZmZXJ9fX0pO2hoLnByb3RvdHlwZS5nZXRBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIHAuZGVmaW5lZCgiaW5kZXgiLHQpLHRoaXMuX2F0dHJpYnV0ZXNbdF19O2hoLnByb3RvdHlwZS5fYmluZD1mdW5jdGlvbigpe20odGhpcy5fdmFvKT8odGhpcy5fY29udGV4dC5nbEJpbmRWZXJ0ZXhBcnJheSh0aGlzLl92YW8pLHRoaXMuX2NvbnRleHQuaW5zdGFuY2VkQXJyYXlzJiZZdHQodGhpcyksdGhpcy5faGFzQ29uc3RhbnRBdHRyaWJ1dGVzJiZWdHQodGhpcyx0aGlzLl9nbCkpOkRMKHRoaXMuX2dsLHRoaXMuX2F0dHJpYnV0ZXMsdGhpcy5faW5kZXhCdWZmZXIpfTtoaC5wcm90b3R5cGUuX3VuQmluZD1mdW5jdGlvbigpe2lmKG0odGhpcy5fdmFvKSl0aGlzLl9jb250ZXh0LmdsQmluZFZlcnRleEFycmF5KG51bGwpO2Vsc2V7bGV0IHQ9dGhpcy5fYXR0cmlidXRlcyxlPXRoaXMuX2dsO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7KytpKXtsZXQgbj10W2ldO24uZW5hYmxlZCYmbi5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoZSl9dGhpcy5faW5kZXhCdWZmZXImJmUuYmluZEJ1ZmZlcihlLkVMRU1FTlRfQVJSQVlfQlVGRkVSLG51bGwpfX07aGgucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2hoLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fYXR0cmlidXRlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSl7bGV0IG49dFtpXS52ZXJ0ZXhCdWZmZXI7bShuKSYmIW4uaXNEZXN0cm95ZWQoKSYmbi52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlJiZuLmRlc3Ryb3koKX1sZXQgZT10aGlzLl9pbmRleEJ1ZmZlcjtyZXR1cm4gbShlKSYmIWUuaXNEZXN0cm95ZWQoKSYmZS52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlJiZlLmRlc3Ryb3koKSxtKHRoaXMuX3ZhbykmJnRoaXMuX2NvbnRleHQuZ2xEZWxldGVWZXJ0ZXhBcnJheSh0aGlzLl92YW8pLGxpKHRoaXMpfTttST1oaH0pO2Z1bmN0aW9uIFFzKHQsZSxpLG4pe2lmKHAuZGVmaW5lZCgiY29udGV4dCIsdCksIWV8fGUubGVuZ3RoPT09MCl0aHJvdyBuZXcgWSgiQXQgbGVhc3Qgb25lIGF0dHJpYnV0ZSBpcyByZXF1aXJlZC4iKTtsZXQgcz1Rcy5fdmVyaWZ5QXR0cmlidXRlcyhlKTtpPVooaSwwKTtsZXQgbz1bXSxyPXt9LGEsaCxBPXMubGVuZ3RoO2ZvcihsZXQgZj0wO2Y8QTsrK2Ype2xldCBFPXNbZl07aWYoRS52ZXJ0ZXhCdWZmZXIpe28ucHVzaChFKTtjb250aW51ZX1oPUUudXNhZ2UsYT1yW2hdLG0oYSl8fChhPXJbaF09W10pLGEucHVzaChFKX1mdW5jdGlvbiBkKGYsRSl7cmV0dXJuIEF0LmdldFNpemVJbkJ5dGVzKEUuY29tcG9uZW50RGF0YXR5cGUpLUF0LmdldFNpemVJbkJ5dGVzKGYuY29tcG9uZW50RGF0YXR5cGUpfXRoaXMuX2FsbEJ1ZmZlcnM9W107Zm9yKGggaW4gcilpZihyLmhhc093blByb3BlcnR5KGgpKXthPXJbaF0sYS5zb3J0KGQpO2xldCBmPVFzLl92ZXJ0ZXhTaXplSW5CeXRlcyhhKSxFPWFbMF0udXNhZ2UsXz17dmVydGV4U2l6ZUluQnl0ZXM6Zix2ZXJ0ZXhCdWZmZXI6dm9pZCAwLHVzYWdlOkUsbmVlZHNDb21taXQ6ITEsYXJyYXlCdWZmZXI6dm9pZCAwLGFycmF5Vmlld3M6UXMuX2NyZWF0ZUFycmF5Vmlld3MoYSxmKX07dGhpcy5fYWxsQnVmZmVycy5wdXNoKF8pfXRoaXMuX3NpemU9MCx0aGlzLl9pbnN0YW5jZWQ9WihuLCExKSx0aGlzLl9wcmVjcmVhdGVkPW8sdGhpcy5fY29udGV4dD10LHRoaXMud3JpdGVycz12b2lkIDAsdGhpcy52YT12b2lkIDAsdGhpcy5yZXNpemUoaSl9ZnVuY3Rpb24gT3R0KHQsZSl7aWYoZS5uZWVkc0NvbW1pdCYmZS52ZXJ0ZXhTaXplSW5CeXRlcz4wKXtlLm5lZWRzQ29tbWl0PSExO2xldCBpPWUudmVydGV4QnVmZmVyLG49dC5fc2l6ZSplLnZlcnRleFNpemVJbkJ5dGVzLHM9bShpKTtpZighc3x8aS5zaXplSW5CeXRlczxuKXJldHVybiBzJiZpLmRlc3Ryb3koKSxlLnZlcnRleEJ1ZmZlcj1DYS5jcmVhdGVWZXJ0ZXhCdWZmZXIoe2NvbnRleHQ6dC5fY29udGV4dCx0eXBlZEFycmF5OmUuYXJyYXlCdWZmZXIsdXNhZ2U6ZS51c2FnZX0pLGUudmVydGV4QnVmZmVyLnZlcnRleEFycmF5RGVzdHJveWFibGU9ITEsITA7ZS52ZXJ0ZXhCdWZmZXIuY29weUZyb21BcnJheVZpZXcoZS5hcnJheUJ1ZmZlcil9cmV0dXJuITF9ZnVuY3Rpb24gQnR0KHQsZSxpKXtpZih0Lm5lZWRzQ29tbWl0JiZ0LnZlcnRleFNpemVJbkJ5dGVzPjApe2xldCBuPXQudmVydGV4U2l6ZUluQnl0ZXMqZSxzPXQudmVydGV4U2l6ZUluQnl0ZXMqaTt0LnZlcnRleEJ1ZmZlci5jb3B5RnJvbUFycmF5VmlldyhuZXcgVWludDhBcnJheSh0LmFycmF5QnVmZmVyLG4scyksbil9fWZ1bmN0aW9uIEJUKHQpe2xldCBlPXQudmE7aWYoIW0oZSkpcmV0dXJuO2xldCBpPWUubGVuZ3RoO2ZvcihsZXQgbj0wO248aTsrK24pZVtuXS52YS5kZXN0cm95KCk7dC52YT12b2lkIDB9dmFyIFN0dCxmSSxHVD1TKCgpPT57YWUoKTtvaSgpO0Z0KCk7bXQoKTtXcygpO090KCk7X2UoKTthSSgpO05sKCk7T1QoKTtRcy5fdmVyaWZ5QXR0cmlidXRlcz1mdW5jdGlvbih0KXtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoOysrbil7bGV0IHM9dFtuXSxvPXtpbmRleDpaKHMuaW5kZXgsbiksZW5hYmxlZDpaKHMuZW5hYmxlZCwhMCksY29tcG9uZW50c1BlckF0dHJpYnV0ZTpzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsY29tcG9uZW50RGF0YXR5cGU6WihzLmNvbXBvbmVudERhdGF0eXBlLEF0LkZMT0FUKSxub3JtYWxpemU6WihzLm5vcm1hbGl6ZSwhMSksdmVydGV4QnVmZmVyOnMudmVydGV4QnVmZmVyLHVzYWdlOloocy51c2FnZSxhaS5TVEFUSUNfRFJBVyl9O2lmKGUucHVzaChvKSxvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT0xJiZvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT0yJiZvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT0zJiZvLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUhPT00KXRocm93IG5ldyBZKCJhdHRyaWJ1dGUuY29tcG9uZW50c1BlckF0dHJpYnV0ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMSwgNF0uIik7bGV0IHI9by5jb21wb25lbnREYXRhdHlwZTtpZighQXQudmFsaWRhdGUocikpdGhyb3cgbmV3IFkoIkF0dHJpYnV0ZSBtdXN0IGhhdmUgYSB2YWxpZCBjb21wb25lbnREYXRhdHlwZSBvciBub3Qgc3BlY2lmeSBpdC4iKTtpZighYWkudmFsaWRhdGUoby51c2FnZSkpdGhyb3cgbmV3IFkoIkF0dHJpYnV0ZSBtdXN0IGhhdmUgYSB2YWxpZCB1c2FnZSBvciBub3Qgc3BlY2lmeSBpdC4iKX1sZXQgaT1uZXcgQXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtsZXQgbz1lW25dLmluZGV4O2lmKGlbb10pdGhyb3cgbmV3IFkoYEluZGV4ICR7b30gaXMgdXNlZCBieSBtb3JlIHRoYW4gb25lIGF0dHJpYnV0ZS5gKTtpW29dPSEwfXJldHVybiBlfTtRcy5fdmVydGV4U2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCl7bGV0IGU9MCxpPXQubGVuZ3RoO2ZvcihsZXQgcj0wO3I8aTsrK3Ipe2xldCBhPXRbcl07ZSs9YS5jb21wb25lbnRzUGVyQXR0cmlidXRlKkF0LmdldFNpemVJbkJ5dGVzKGEuY29tcG9uZW50RGF0YXR5cGUpfWxldCBuPWk+MD9BdC5nZXRTaXplSW5CeXRlcyh0WzBdLmNvbXBvbmVudERhdGF0eXBlKTowLHM9bj4wP2UlbjowLG89cz09PTA/MDpuLXM7cmV0dXJuIGUrPW8sZX07UXMuX2NyZWF0ZUFycmF5Vmlld3M9ZnVuY3Rpb24odCxlKXtsZXQgaT1bXSxuPTAscz10Lmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKXtsZXQgcj10W29dLGE9ci5jb21wb25lbnREYXRhdHlwZTtpLnB1c2goe2luZGV4OnIuaW5kZXgsZW5hYmxlZDpyLmVuYWJsZWQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpyLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsY29tcG9uZW50RGF0YXR5cGU6YSxub3JtYWxpemU6ci5ub3JtYWxpemUsb2Zmc2V0SW5CeXRlczpuLHZlcnRleFNpemVJbkNvbXBvbmVudFR5cGU6ZS9BdC5nZXRTaXplSW5CeXRlcyhhKSx2aWV3OnZvaWQgMH0pLG4rPXIuY29tcG9uZW50c1BlckF0dHJpYnV0ZSpBdC5nZXRTaXplSW5CeXRlcyhhKX1yZXR1cm4gaX07UXMucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0KXt0aGlzLl9zaXplPXQ7bGV0IGU9dGhpcy5fYWxsQnVmZmVyczt0aGlzLndyaXRlcnM9W107Zm9yKGxldCBpPTAsbj1lLmxlbmd0aDtpPG47KytpKXtsZXQgcz1lW2ldO1FzLl9yZXNpemUocyx0aGlzLl9zaXplKSxRcy5fYXBwZW5kV3JpdGVycyh0aGlzLndyaXRlcnMscyl9QlQodGhpcyl9O1FzLl9yZXNpemU9ZnVuY3Rpb24odCxlKXtpZih0LnZlcnRleFNpemVJbkJ5dGVzPjApe2xldCBpPW5ldyBBcnJheUJ1ZmZlcihlKnQudmVydGV4U2l6ZUluQnl0ZXMpO2lmKG0odC5hcnJheUJ1ZmZlcikpe2xldCBvPW5ldyBVaW50OEFycmF5KGkpLHI9bmV3IFVpbnQ4QXJyYXkodC5hcnJheUJ1ZmZlciksYT1yLmxlbmd0aDtmb3IobGV0IGg9MDtoPGE7KytoKW9baF09cltoXX1sZXQgbj10LmFycmF5Vmlld3Mscz1uLmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKXtsZXQgcj1uW29dO3Iudmlldz1BdC5jcmVhdGVBcnJheUJ1ZmZlclZpZXcoci5jb21wb25lbnREYXRhdHlwZSxpLHIub2Zmc2V0SW5CeXRlcyl9dC5hcnJheUJ1ZmZlcj1pfX07U3R0PVtmdW5jdGlvbih0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uKG4scyl7ZVtuKmldPXMsdC5uZWVkc0NvbW1pdD0hMH19LGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24obixzLG8pe2xldCByPW4qaTtlW3JdPXMsZVtyKzFdPW8sdC5uZWVkc0NvbW1pdD0hMH19LGZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24obixzLG8scil7bGV0IGE9bippO2VbYV09cyxlW2ErMV09byxlW2ErMl09cix0Lm5lZWRzQ29tbWl0PSEwfX0sZnVuY3Rpb24odCxlLGkpe3JldHVybiBmdW5jdGlvbihuLHMsbyxyLGEpe2xldCBoPW4qaTtlW2hdPXMsZVtoKzFdPW8sZVtoKzJdPXIsZVtoKzNdPWEsdC5uZWVkc0NvbW1pdD0hMH19XTtRcy5fYXBwZW5kV3JpdGVycz1mdW5jdGlvbih0LGUpe2xldCBpPWUuYXJyYXlWaWV3cyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe2xldCBvPWlbc107dFtvLmluZGV4XT1TdHRbby5jb21wb25lbnRzUGVyQXR0cmlidXRlLTFdKGUsby52aWV3LG8udmVydGV4U2l6ZUluQ29tcG9uZW50VHlwZSl9fTtRcy5wcm90b3R5cGUuY29tbWl0PWZ1bmN0aW9uKHQpe2xldCBlPSExLGk9dGhpcy5fYWxsQnVmZmVycyxuLHMsbztmb3Iocz0wLG89aS5sZW5ndGg7czxvOysrcyluPWlbc10sZT1PdHQodGhpcyxuKXx8ZTtpZihlfHwhbSh0aGlzLnZhKSl7QlQodGhpcyk7bGV0IHI9dGhpcy52YT1bXSxhPUwuU0lYVFlfRk9VUl9LSUxPQllURVMtNCxoPW0odCkmJiF0aGlzLl9pbnN0YW5jZWQ/TWF0aC5jZWlsKHRoaXMuX3NpemUvYSk6MTtmb3IobGV0IEE9MDtBPGg7KytBKXtsZXQgZD1bXTtmb3Iocz0wLG89aS5sZW5ndGg7czxvOysrcyl7bj1pW3NdO2xldCBmPUEqKG4udmVydGV4U2l6ZUluQnl0ZXMqYSk7UXMuX2FwcGVuZEF0dHJpYnV0ZXMoZCxuLGYsdGhpcy5faW5zdGFuY2VkKX1kPWQuY29uY2F0KHRoaXMuX3ByZWNyZWF0ZWQpLHIucHVzaCh7dmE6bmV3IG1JKHtjb250ZXh0OnRoaXMuX2NvbnRleHQsYXR0cmlidXRlczpkLGluZGV4QnVmZmVyOnR9KSxpbmRpY2VzQ291bnQ6MS41KihBIT09aC0xP2E6dGhpcy5fc2l6ZSVhKX0pfX19O1FzLl9hcHBlbmRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzPWUuYXJyYXlWaWV3cyxvPXMubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bzsrK3Ipe2xldCBhPXNbcl07dC5wdXNoKHtpbmRleDphLmluZGV4LGVuYWJsZWQ6YS5lbmFibGVkLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6YS5jb21wb25lbnRzUGVyQXR0cmlidXRlLGNvbXBvbmVudERhdGF0eXBlOmEuY29tcG9uZW50RGF0YXR5cGUsbm9ybWFsaXplOmEubm9ybWFsaXplLHZlcnRleEJ1ZmZlcjplLnZlcnRleEJ1ZmZlcixvZmZzZXRJbkJ5dGVzOmkrYS5vZmZzZXRJbkJ5dGVzLHN0cmlkZUluQnl0ZXM6ZS52ZXJ0ZXhTaXplSW5CeXRlcyxpbnN0YW5jZURpdmlzb3I6bj8xOjB9KX19O1FzLnByb3RvdHlwZS5zdWJDb21taXQ9ZnVuY3Rpb24odCxlKXtpZih0PDB8fHQ+PXRoaXMuX3NpemUpdGhyb3cgbmV3IFkoIm9mZnNldEluVmVydGljZXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybyBhbmQgbGVzcyB0aGFuIHRoZSB2ZXJ0ZXggYXJyYXkgc2l6ZS4iKTtpZih0K2U+dGhpcy5fc2l6ZSl0aHJvdyBuZXcgWSgib2Zmc2V0SW5WZXJ0aWNlcyArIGxlbmd0aEluVmVydGljZXMgY2Fubm90IGV4Y2VlZCB0aGUgdmVydGV4IGFycmF5IHNpemUuIik7bGV0IGk9dGhpcy5fYWxsQnVmZmVycztmb3IobGV0IG49MCxzPWkubGVuZ3RoO248czsrK24pQnR0KGlbbl0sdCxlKX07UXMucHJvdG90eXBlLmVuZFN1YkNvbW1pdHM9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9hbGxCdWZmZXJzO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl0W2VdLm5lZWRzQ29tbWl0PSExfTtRcy5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07UXMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9hbGxCdWZmZXJzO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7bGV0IG49dFtlXTtuLnZlcnRleEJ1ZmZlcj1uLnZlcnRleEJ1ZmZlciYmbi52ZXJ0ZXhCdWZmZXIuZGVzdHJveSgpfXJldHVybiBCVCh0aGlzKSxsaSh0aGlzKX07Zkk9UXN9KTt2YXIgVUwsTUw9UygoKT0+e1VMPWB1bmlmb3JtIHNhbXBsZXIyRCB1X2F0bGFzOwoKI2lmZGVmIFZFQ1RPUl9USUxFCnVuaWZvcm0gdmVjNCB1X2hpZ2hsaWdodENvbG9yOwojZW5kaWYKCmluIHZlYzIgdl90ZXh0dXJlQ29vcmRpbmF0ZXM7CmluIHZlYzQgdl9waWNrQ29sb3I7CmluIHZlYzQgdl9jb2xvcjsKCiNpZmRlZiBTREYKaW4gdmVjNCB2X291dGxpbmVDb2xvcjsKaW4gZmxvYXQgdl9vdXRsaW5lV2lkdGg7CiNlbmRpZgoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCmluIHZlYzQgdl90ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kczsgICAgICAgICAgICAgICAgICAvLyB0aGUgbWluIGFuZCBtYXggeCBhbmQgeSB2YWx1ZXMgZm9yIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGVzCmluIHZlYzQgdl9vcmlnaW5UZXh0dXJlQ29vcmRpbmF0ZUFuZFRyYW5zbGF0ZTsgICAgICAvLyB0ZXh0dXJlIGNvb3JkaW5hdGUgYXQgdGhlIG9yaWdpbiwgYmlsbGJvYXJkIHRyYW5zbGF0ZSAodXNlZCBmb3IgbGFiZWwgZ2x5cGhzKQppbiB2ZWM0IHZfY29tcHJlc3NlZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geDogZXllRGVwdGgsIHk6IGFwcGx5VHJhbnNsYXRlICYgZW5hYmxlRGVwdGhDaGVjaywgejogZGltZW5zaW9ucywgdzogaW1hZ2VTaXplCmluIG1hdDIgdl9yb3RhdGlvbk1hdHJpeDsKCmNvbnN0IGZsb2F0IFNISUZUX0xFRlQxMiA9IDQwOTYuMDsKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDEgPSAyLjA7Cgpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEyID0gMS4wIC8gNDA5Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEgPSAxLjAgLyAyLjA7CgpmbG9hdCBnZXRHbG9iZURlcHRoKHZlYzIgYWRqdXN0ZWRTVCwgdmVjMiBkZXB0aExvb2t1cFNULCBib29sIGFwcGx5VHJhbnNsYXRlLCB2ZWMyIGRpbWVuc2lvbnMsIHZlYzIgaW1hZ2VTaXplKQp7CiAgICB2ZWMyIGxvb2t1cFZlY3RvciA9IGltYWdlU2l6ZSAqIChkZXB0aExvb2t1cFNUIC0gYWRqdXN0ZWRTVCk7CiAgICBsb29rdXBWZWN0b3IgPSB2X3JvdGF0aW9uTWF0cml4ICogbG9va3VwVmVjdG9yOwogICAgdmVjMiBsYWJlbE9mZnNldCA9IChkaW1lbnNpb25zIC0gaW1hZ2VTaXplKSAqIChkZXB0aExvb2t1cFNUIC0gdmVjMigwLjAsIHZfb3JpZ2luVGV4dHVyZUNvb3JkaW5hdGVBbmRUcmFuc2xhdGUueSkpOyAvLyBhbGlnbnMgbGFiZWwgZ2x5cGggd2l0aCBib3VuZGluZyByZWN0YW5nbGUuICBXaWxsIGJlIHplcm8gZm9yIGJpbGxib2FyZHMgYmVjYXVzZSBkaW1lbnNpb25zIGFuZCBpbWFnZVNpemUgd2lsbCBiZSBlcXVhbAoKICAgIHZlYzIgdHJhbnNsYXRpb24gPSB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnp3OwoKICAgIGlmIChhcHBseVRyYW5zbGF0ZSkKICAgIHsKICAgICAgICAvLyB0aGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsYWJlbHMgd2hlcmUgdGhlIGhvcml6b250YWwgb3JpZ2luIGlzIG5vdCBMRUZUCiAgICAgICAgLy8gaXQgbW92ZXMgdGhlIGxhYmVsIGJhY2sgdG8gd2hlcmUgdGhlICJvcmlnaW4iIHNob3VsZCBiZSBzaW5jZSBhbGwgbGFiZWwgZ2x5cGhzIGFyZSBzZXQgdG8gSG9yaXpvbnRhbE9yaWdpbi5MRUZUCiAgICAgICAgdHJhbnNsYXRpb24gKz0gKGRpbWVuc2lvbnMgKiB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnh5ICogdmVjMigxLjAsIDAuMCkpOwogICAgfQoKICAgIHZlYzIgc3QgPSAoKGxvb2t1cFZlY3RvciAtIHRyYW5zbGF0aW9uICsgbGFiZWxPZmZzZXQpICsgZ2xfRnJhZ0Nvb3JkLnh5KSAvIGN6bV92aWV3cG9ydC56dzsKICAgIGZsb2F0IGxvZ0RlcHRoT3JEZXB0aCA9IGN6bV91bnBhY2tEZXB0aCh0ZXh0dXJlKGN6bV9nbG9iZURlcHRoVGV4dHVyZSwgc3QpKTsKCiAgICBpZiAobG9nRGVwdGhPckRlcHRoID09IDAuMCkKICAgIHsKICAgICAgICByZXR1cm4gMC4wOyAvLyBub3Qgb24gdGhlIGdsb2JlCiAgICB9CgogICAgdmVjNCBleWVDb29yZGluYXRlID0gY3ptX3dpbmRvd1RvRXllQ29vcmRpbmF0ZXMoZ2xfRnJhZ0Nvb3JkLnh5LCBsb2dEZXB0aE9yRGVwdGgpOwogICAgcmV0dXJuIGV5ZUNvb3JkaW5hdGUueiAvIGV5ZUNvb3JkaW5hdGUudzsKfQojZW5kaWYKCgojaWZkZWYgU0RGCgovLyBHZXQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGVkZ2Ugb2YgYSBnbHlwaCBhdCBhIGdpdmVuIHBvc2l0aW9uIHNhbXBsaW5nIGFuIFNERiB0ZXh0dXJlLgpmbG9hdCBnZXREaXN0YW5jZSh2ZWMyIHBvc2l0aW9uKQp7CiAgICByZXR1cm4gdGV4dHVyZSh1X2F0bGFzLCBwb3NpdGlvbikucjsKfQoKLy8gU2FtcGxlcyB0aGUgc2RmIHRleHR1cmUgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGFuZCBwcm9kdWNlcyBhIGNvbG9yIGJhc2VkIG9uIHRoZSBmaWxsIGNvbG9yIGFuZCB0aGUgb3V0bGluZS4KdmVjNCBnZXRTREZDb2xvcih2ZWMyIHBvc2l0aW9uLCBmbG9hdCBvdXRsaW5lV2lkdGgsIHZlYzQgb3V0bGluZUNvbG9yLCBmbG9hdCBzbW9vdGhpbmcpCnsKICAgIGZsb2F0IGRpc3RhbmNlID0gZ2V0RGlzdGFuY2UocG9zaXRpb24pOwoKICAgIGlmIChvdXRsaW5lV2lkdGggPiAwLjApCiAgICB7CiAgICAgICAgLy8gRG9uJ3QgZ2V0IHRoZSBvdXRsaW5lIGVkZ2UgZXhjZWVkIHRoZSBTREZfRURHRQogICAgICAgIGZsb2F0IG91dGxpbmVFZGdlID0gY2xhbXAoU0RGX0VER0UgLSBvdXRsaW5lV2lkdGgsIDAuMCwgU0RGX0VER0UpOwogICAgICAgIGZsb2F0IG91dGxpbmVGYWN0b3IgPSBzbW9vdGhzdGVwKFNERl9FREdFIC0gc21vb3RoaW5nLCBTREZfRURHRSArIHNtb290aGluZywgZGlzdGFuY2UpOwogICAgICAgIHZlYzQgc2RmQ29sb3IgPSBtaXgob3V0bGluZUNvbG9yLCB2X2NvbG9yLCBvdXRsaW5lRmFjdG9yKTsKICAgICAgICBmbG9hdCBhbHBoYSA9IHNtb290aHN0ZXAob3V0bGluZUVkZ2UgLSBzbW9vdGhpbmcsIG91dGxpbmVFZGdlICsgc21vb3RoaW5nLCBkaXN0YW5jZSk7CiAgICAgICAgcmV0dXJuIHZlYzQoc2RmQ29sb3IucmdiLCBzZGZDb2xvci5hICogYWxwaGEpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZsb2F0IGFscGhhID0gc21vb3Roc3RlcChTREZfRURHRSAtIHNtb290aGluZywgU0RGX0VER0UgKyBzbW9vdGhpbmcsIGRpc3RhbmNlKTsKICAgICAgICByZXR1cm4gdmVjNCh2X2NvbG9yLnJnYiwgdl9jb2xvci5hICogYWxwaGEpOwogICAgfQp9CiNlbmRpZgoKdm9pZCBtYWluKCkKewogICAgdmVjNCBjb2xvciA9IHRleHR1cmUodV9hdGxhcywgdl90ZXh0dXJlQ29vcmRpbmF0ZXMpOwoKI2lmZGVmIFNERgogICAgZmxvYXQgb3V0bGluZVdpZHRoID0gdl9vdXRsaW5lV2lkdGg7CiAgICB2ZWM0IG91dGxpbmVDb2xvciA9IHZfb3V0bGluZUNvbG9yOwoKICAgIC8vIEdldCB0aGUgY3VycmVudCBkaXN0YW5jZQogICAgZmxvYXQgZGlzdGFuY2UgPSBnZXREaXN0YW5jZSh2X3RleHR1cmVDb29yZGluYXRlcyk7CgojaWYgKF9fVkVSU0lPTl9fID09IDMwMCB8fCBkZWZpbmVkKEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykpCiAgICBmbG9hdCBzbW9vdGhpbmcgPSBmd2lkdGgoZGlzdGFuY2UpOwogICAgLy8gR2V0IGFuIG9mZnNldCB0aGF0IGlzIGFwcHJveGltYXRlbHkgaGFsZiB0aGUgZGlzdGFuY2UgdG8gdGhlIG5laWdoYm9yIHBpeGVscwogICAgLy8gMC4zNTQgaXMgYXBwcm94aW1hdGVseSBoYWxmIG9mIDEvc3FydCgyKQogICAgdmVjMiBzYW1wbGVPZmZzZXQgPSAwLjM1NCAqIHZlYzIoZEZkeCh2X3RleHR1cmVDb29yZGluYXRlcykgKyBkRmR5KHZfdGV4dHVyZUNvb3JkaW5hdGVzKSk7CgogICAgLy8gU2FtcGxlIHRoZSBjZW50ZXIgcG9pbnQKICAgIHZlYzQgY2VudGVyID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMsIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwoKICAgIC8vIFNhbXBsZSB0aGUgNCBuZWlnaGJvcnMKICAgIHZlYzQgY29sb3IxID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMgKyB2ZWMyKHNhbXBsZU9mZnNldC54LCBzYW1wbGVPZmZzZXQueSksIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwogICAgdmVjNCBjb2xvcjIgPSBnZXRTREZDb2xvcih2X3RleHR1cmVDb29yZGluYXRlcyArIHZlYzIoLXNhbXBsZU9mZnNldC54LCBzYW1wbGVPZmZzZXQueSksIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwogICAgdmVjNCBjb2xvcjMgPSBnZXRTREZDb2xvcih2X3RleHR1cmVDb29yZGluYXRlcyArIHZlYzIoLXNhbXBsZU9mZnNldC54LCAtc2FtcGxlT2Zmc2V0LnkpLCBvdXRsaW5lV2lkdGgsIG91dGxpbmVDb2xvciwgc21vb3RoaW5nKTsKICAgIHZlYzQgY29sb3I0ID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMgKyB2ZWMyKHNhbXBsZU9mZnNldC54LCAtc2FtcGxlT2Zmc2V0LnkpLCBvdXRsaW5lV2lkdGgsIG91dGxpbmVDb2xvciwgc21vb3RoaW5nKTsKCiAgICAvLyBFcXVhbGx5IHdlaWdodCB0aGUgY2VudGVyIHNhbXBsZSBhbmQgdGhlIDQgbmVpZ2hib3Jpbmcgc2FtcGxlcwogICAgY29sb3IgPSAoY2VudGVyICsgY29sb3IxICsgY29sb3IyICsgY29sb3IzICsgY29sb3I0KS81LjA7CiNlbHNlCiAgICAvLyBJZiBubyBkZXJpdmF0aXZlcyBhdmFpbGFibGUgKElFIDEwPyksIGp1c3QgZG8gYSBzaW5nbGUgc2FtcGxlCiAgICBmbG9hdCBzbW9vdGhpbmcgPSAxLjAvMzIuMDsKICAgIGNvbG9yID0gZ2V0U0RGQ29sb3Iodl90ZXh0dXJlQ29vcmRpbmF0ZXMsIG91dGxpbmVXaWR0aCwgb3V0bGluZUNvbG9yLCBzbW9vdGhpbmcpOwojZW5kaWYKCiAgICBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwojZWxzZQogICAgY29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KGNvbG9yKTsKICAgIGNvbG9yICo9IGN6bV9nYW1tYUNvcnJlY3Qodl9jb2xvcik7CiNlbmRpZgoKLy8gRnVsbHkgdHJhbnNwYXJlbnQgcGFydHMgb2YgdGhlIGJpbGxib2FyZCBhcmUgbm90IHBpY2thYmxlLgojaWYgIWRlZmluZWQoT1BBUVVFKSAmJiAhZGVmaW5lZChUUkFOU0xVQ0VOVCkKICAgIGlmIChjb2xvci5hIDwgMC4wMDUpICAgLy8gbWF0Y2hlcyAwLzI1NSBhbmQgMS8yNTUKICAgIHsKICAgICAgICBkaXNjYXJkOwogICAgfQojZWxzZQovLyBUaGUgYmlsbGJvYXJkIGlzIHJlbmRlcmVkIHR3aWNlLiBUaGUgb3BhcXVlIHBhc3MgZGlzY2FyZHMgdHJhbnNsdWNlbnQgZnJhZ21lbnRzCi8vIGFuZCB0aGUgdHJhbnNsdWNlbnQgcGFzcyBkaXNjYXJkcyBvcGFxdWUgZnJhZ21lbnRzLgojaWZkZWYgT1BBUVVFCiAgICBpZiAoY29sb3IuYSA8IDAuOTk1KSAgIC8vIG1hdGNoZXMgPCAyNTQvMjU1CiAgICB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2Vsc2UKICAgIGlmIChjb2xvci5hID49IDAuOTk1KSAgLy8gbWF0Y2hlcyAyNTQvMjU1IGFuZCAyNTUvMjU1CiAgICB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2VuZGlmCiNlbmRpZgoKI2lmZGVmIFZFQ1RPUl9USUxFCiAgICBjb2xvciAqPSB1X2hpZ2hsaWdodENvbG9yOwojZW5kaWYKICAgIG91dF9GcmFnQ29sb3IgPSBjb2xvcjsKCiNpZmRlZiBMT0dfREVQVEgKICAgIGN6bV93cml0ZUxvZ0RlcHRoKCk7CiNlbmRpZgoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCiAgICBmbG9hdCB0ZW1wID0gdl9jb21wcmVzc2VkLnk7CgogICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDE7CgogICAgZmxvYXQgdGVtcDIgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQxOwogICAgYm9vbCBlbmFibGVEZXB0aFRlc3QgPSB0ZW1wMiAhPSAwLjA7CiAgICBib29sIGFwcGx5VHJhbnNsYXRlID0gZmxvb3IodGVtcCkgIT0gMC4wOwoKICAgIGlmIChlbmFibGVEZXB0aFRlc3QpIHsKICAgICAgICB0ZW1wID0gdl9jb21wcmVzc2VkLno7CiAgICAgICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDEyOwoKICAgICAgICB2ZWMyIGRpbWVuc2lvbnM7CiAgICAgICAgZGltZW5zaW9ucy55ID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUMTI7CiAgICAgICAgZGltZW5zaW9ucy54ID0gZmxvb3IodGVtcCk7CgogICAgICAgIHRlbXAgPSB2X2NvbXByZXNzZWQudzsKICAgICAgICB0ZW1wID0gdGVtcCAqIFNISUZUX1JJR0hUMTI7CgogICAgICAgIHZlYzIgaW1hZ2VTaXplOwogICAgICAgIGltYWdlU2l6ZS55ID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUMTI7CiAgICAgICAgaW1hZ2VTaXplLnggPSBmbG9vcih0ZW1wKTsKCiAgICAgICAgdmVjMiBhZGp1c3RlZFNUID0gdl90ZXh0dXJlQ29vcmRpbmF0ZXMgLSB2X3RleHR1cmVDb29yZGluYXRlQm91bmRzLnh5OwogICAgICAgIGFkanVzdGVkU1QgPSBhZGp1c3RlZFNUIC8gdmVjMih2X3RleHR1cmVDb29yZGluYXRlQm91bmRzLnogLSB2X3RleHR1cmVDb29yZGluYXRlQm91bmRzLngsIHZfdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHMudyAtIHZfdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHMueSk7CgogICAgICAgIGZsb2F0IGVwc2lsb25FeWVEZXB0aCA9IHZfY29tcHJlc3NlZC54ICsgY3ptX2Vwc2lsb24xOwogICAgICAgIGZsb2F0IGdsb2JlRGVwdGgxID0gZ2V0R2xvYmVEZXB0aChhZGp1c3RlZFNULCB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnh5LCBhcHBseVRyYW5zbGF0ZSwgZGltZW5zaW9ucywgaW1hZ2VTaXplKTsKCiAgICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzIGdvIGludG8gdGhlIHNjcmVlbgogICAgICAgIGlmIChnbG9iZURlcHRoMSAhPSAwLjAgJiYgZ2xvYmVEZXB0aDEgPiBlcHNpbG9uRXllRGVwdGgpCiAgICAgICAgewogICAgICAgICAgICBmbG9hdCBnbG9iZURlcHRoMiA9IGdldEdsb2JlRGVwdGgoYWRqdXN0ZWRTVCwgdmVjMigwLjAsIDEuMCksIGFwcGx5VHJhbnNsYXRlLCBkaW1lbnNpb25zLCBpbWFnZVNpemUpOyAvLyB0b3AgbGVmdCBjb3JuZXIKICAgICAgICAgICAgaWYgKGdsb2JlRGVwdGgyICE9IDAuMCAmJiBnbG9iZURlcHRoMiA+IGVwc2lsb25FeWVEZXB0aCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxvYXQgZ2xvYmVEZXB0aDMgPSBnZXRHbG9iZURlcHRoKGFkanVzdGVkU1QsIHZlYzIoMS4wLCAxLjApLCBhcHBseVRyYW5zbGF0ZSwgZGltZW5zaW9ucywgaW1hZ2VTaXplKTsgLy8gdG9wIHJpZ2h0IGNvcm5lcgogICAgICAgICAgICAgICAgaWYgKGdsb2JlRGVwdGgzICE9IDAuMCAmJiBnbG9iZURlcHRoMyA+IGVwc2lsb25FeWVEZXB0aCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkaXNjYXJkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQojZW5kaWYKCn0KYH0pO3ZhciBRTCxrTD1TKCgpPT57UUw9YCNpZmRlZiBJTlNUQU5DRUQKaW4gdmVjMiBkaXJlY3Rpb247CiNlbmRpZgppbiB2ZWM0IHBvc2l0aW9uSGlnaEFuZFNjYWxlOwppbiB2ZWM0IHBvc2l0aW9uTG93QW5kUm90YXRpb247CmluIHZlYzQgY29tcHJlc3NlZEF0dHJpYnV0ZTA7ICAgICAgICAgICAgICAgICAgICAgICAvLyBwaXhlbCBvZmZzZXQsIHRyYW5zbGF0ZSwgaG9yaXpvbnRhbCBvcmlnaW4sIHZlcnRpY2FsIG9yaWdpbiwgc2hvdywgZGlyZWN0aW9uLCB0ZXh0dXJlIGNvb3JkaW5hdGVzICh0ZXh0dXJlIG9mZnNldCkKaW4gdmVjNCBjb21wcmVzc2VkQXR0cmlidXRlMTsgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsaWduZWQgYXhpcywgdHJhbnNsdWNlbmN5IGJ5IGRpc3RhbmNlLCBpbWFnZSB3aWR0aAppbiB2ZWM0IGNvbXByZXNzZWRBdHRyaWJ1dGUyOyAgICAgICAgICAgICAgICAgICAgICAgLy8gbGFiZWwgaG9yaXpvbnRhbCBvcmlnaW4sIGltYWdlIGhlaWdodCwgY29sb3IsIHBpY2sgY29sb3IsIHNpemUgaW4gbWV0ZXJzLCB2YWxpZCBhbGlnbmVkIGF4aXMsIDEzIGJpdHMgZnJlZQppbiB2ZWM0IGV5ZU9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXllIG9mZnNldCBpbiBtZXRlcnMsIDQgYnl0ZXMgZnJlZSAodGV4dHVyZSByYW5nZSkKaW4gdmVjNCBzY2FsZUJ5RGlzdGFuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lYXIsIG5lYXJTY2FsZSwgZmFyLCBmYXJTY2FsZQppbiB2ZWM0IHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOyAgICAgICAgICAgICAgICAgLy8gbmVhciwgbmVhclNjYWxlLCBmYXIsIGZhclNjYWxlCmluIHZlYzQgY29tcHJlc3NlZEF0dHJpYnV0ZTM7ICAgICAgICAgICAgICAgICAgICAgICAvLyBkaXN0YW5jZSBkaXNwbGF5IGNvbmRpdGlvbiBuZWFyLCBmYXIsIGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSwgZGltZW5zaW9ucwppbiB2ZWMyIHNkZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2RmIG91dGxpbmUgY29sb3IgKHJnYikgYW5kIHdpZHRoICh3KQojaWYgZGVmaW5lZChWRVJURVhfREVQVEhfQ0hFQ0spIHx8IGRlZmluZWQoRlJBR01FTlRfREVQVEhfQ0hFQ0spCmluIHZlYzQgdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHNPckxhYmVsVHJhbnNsYXRlOyAgICAvLyB0aGUgbWluIGFuZCBtYXggeCBhbmQgeSB2YWx1ZXMgZm9yIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGVzCiNlbmRpZgojaWZkZWYgVkVDVE9SX1RJTEUKaW4gZmxvYXQgYV9iYXRjaElkOwojZW5kaWYKCm91dCB2ZWMyIHZfdGV4dHVyZUNvb3JkaW5hdGVzOwojaWZkZWYgRlJBR01FTlRfREVQVEhfQ0hFQ0sKb3V0IHZlYzQgdl90ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kczsKb3V0IHZlYzQgdl9vcmlnaW5UZXh0dXJlQ29vcmRpbmF0ZUFuZFRyYW5zbGF0ZTsKb3V0IHZlYzQgdl9jb21wcmVzc2VkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHg6IGV5ZURlcHRoLCB5OiBhcHBseVRyYW5zbGF0ZSAmIGVuYWJsZURlcHRoQ2hlY2ssIHo6IGRpbWVuc2lvbnMsIHc6IGltYWdlU2l6ZQpvdXQgbWF0MiB2X3JvdGF0aW9uTWF0cml4OwojZW5kaWYKCm91dCB2ZWM0IHZfcGlja0NvbG9yOwpvdXQgdmVjNCB2X2NvbG9yOwojaWZkZWYgU0RGCm91dCB2ZWM0IHZfb3V0bGluZUNvbG9yOwpvdXQgZmxvYXQgdl9vdXRsaW5lV2lkdGg7CiNlbmRpZgoKY29uc3QgZmxvYXQgVVBQRVJfQk9VTkQgPSAzMjc2OC4wOwoKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDE2ID0gNjU1MzYuMDsKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDEyID0gNDA5Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUOCA9IDI1Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUNyA9IDEyOC4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUNSA9IDMyLjA7CmNvbnN0IGZsb2F0IFNISUZUX0xFRlQzID0gOC4wOwpjb25zdCBmbG9hdCBTSElGVF9MRUZUMiA9IDQuMDsKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDEgPSAyLjA7Cgpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEyID0gMS4wIC8gNDA5Ni4wOwpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDggPSAxLjAgLyAyNTYuMDsKY29uc3QgZmxvYXQgU0hJRlRfUklHSFQ3ID0gMS4wIC8gMTI4LjA7CmNvbnN0IGZsb2F0IFNISUZUX1JJR0hUNSA9IDEuMCAvIDMyLjA7CmNvbnN0IGZsb2F0IFNISUZUX1JJR0hUMyA9IDEuMCAvIDguMDsKY29uc3QgZmxvYXQgU0hJRlRfUklHSFQyID0gMS4wIC8gNC4wOwpjb25zdCBmbG9hdCBTSElGVF9SSUdIVDEgPSAxLjAgLyAyLjA7Cgp2ZWM0IGFkZFNjcmVlblNwYWNlT2Zmc2V0KHZlYzQgcG9zaXRpb25FQywgdmVjMiBpbWFnZVNpemUsIGZsb2F0IHNjYWxlLCB2ZWMyIGRpcmVjdGlvbiwgdmVjMiBvcmlnaW4sIHZlYzIgdHJhbnNsYXRlLCB2ZWMyIHBpeGVsT2Zmc2V0LCB2ZWMzIGFsaWduZWRBeGlzLCBib29sIHZhbGlkQWxpZ25lZEF4aXMsIGZsb2F0IHJvdGF0aW9uLCBib29sIHNpemVJbk1ldGVycywgb3V0IG1hdDIgcm90YXRpb25NYXRyaXgsIG91dCBmbG9hdCBtcHApCnsKICAgIC8vIE5vdGUgdGhlIGhhbGZTaXplIGNhbm5vdCBiZSBjb21wdXRlZCBpbiBKYXZhU2NyaXB0IGJlY2F1c2UgaXQgaXMgc2VudCB2aWEKICAgIC8vIGNvbXByZXNzZWQgdmVydGV4IGF0dHJpYnV0ZXMgdGhhdCBjb2VyY2UgaXQgdG8gYW4gaW50ZWdlci4KICAgIHZlYzIgaGFsZlNpemUgPSBpbWFnZVNpemUgKiBzY2FsZSAqIDAuNTsKICAgIGhhbGZTaXplICo9ICgoZGlyZWN0aW9uICogMi4wKSAtIDEuMCk7CgogICAgdmVjMiBvcmlnaW5UcmFuc2xhdGUgPSBvcmlnaW4gKiBhYnMoaGFsZlNpemUpOwoKI2lmIGRlZmluZWQoUk9UQVRJT04pIHx8IGRlZmluZWQoQUxJR05FRF9BWElTKQogICAgaWYgKHZhbGlkQWxpZ25lZEF4aXMgfHwgcm90YXRpb24gIT0gMC4wKQogICAgewogICAgICAgIGZsb2F0IGFuZ2xlID0gcm90YXRpb247CiAgICAgICAgaWYgKHZhbGlkQWxpZ25lZEF4aXMpCiAgICAgICAgewogICAgICAgICAgICB2ZWM0IHByb2plY3RlZEFsaWduZWRBeGlzID0gY3ptX21vZGVsVmlldzNEICogdmVjNChhbGlnbmVkQXhpcywgMC4wKTsKICAgICAgICAgICAgYW5nbGUgKz0gc2lnbigtcHJvamVjdGVkQWxpZ25lZEF4aXMueCkgKiBhY29zKHNpZ24ocHJvamVjdGVkQWxpZ25lZEF4aXMueSkgKiAocHJvamVjdGVkQWxpZ25lZEF4aXMueSAqIHByb2plY3RlZEFsaWduZWRBeGlzLnkpIC8KICAgICAgICAgICAgICAgICAgICAocHJvamVjdGVkQWxpZ25lZEF4aXMueCAqIHByb2plY3RlZEFsaWduZWRBeGlzLnggKyBwcm9qZWN0ZWRBbGlnbmVkQXhpcy55ICogcHJvamVjdGVkQWxpZ25lZEF4aXMueSkpOwogICAgICAgIH0KCiAgICAgICAgZmxvYXQgY29zVGhldGEgPSBjb3MoYW5nbGUpOwogICAgICAgIGZsb2F0IHNpblRoZXRhID0gc2luKGFuZ2xlKTsKICAgICAgICByb3RhdGlvbk1hdHJpeCA9IG1hdDIoY29zVGhldGEsIHNpblRoZXRhLCAtc2luVGhldGEsIGNvc1RoZXRhKTsKICAgICAgICBoYWxmU2l6ZSA9IHJvdGF0aW9uTWF0cml4ICogaGFsZlNpemU7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcm90YXRpb25NYXRyaXggPSBtYXQyKDEuMCwgMC4wLCAwLjAsIDEuMCk7CiAgICB9CiNlbmRpZgoKICAgIG1wcCA9IGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVDKTsKICAgIHBvc2l0aW9uRUMueHkgKz0gKG9yaWdpblRyYW5zbGF0ZSArIGhhbGZTaXplKSAqIGN6bV9icmFuY2hGcmVlVGVybmFyeShzaXplSW5NZXRlcnMsIDEuMCwgbXBwKTsKICAgIHBvc2l0aW9uRUMueHkgKz0gKHRyYW5zbGF0ZSArIHBpeGVsT2Zmc2V0KSAqIG1wcDsKCiAgICByZXR1cm4gcG9zaXRpb25FQzsKfQoKI2lmZGVmIFZFUlRFWF9ERVBUSF9DSEVDSwpmbG9hdCBnZXRHbG9iZURlcHRoKHZlYzQgcG9zaXRpb25FQykKewogICAgdmVjNCBwb3NXQyA9IGN6bV9leWVUb1dpbmRvd0Nvb3JkaW5hdGVzKHBvc2l0aW9uRUMpOwoKICAgIGZsb2F0IGdsb2JlRGVwdGggPSBjem1fdW5wYWNrRGVwdGgodGV4dHVyZShjem1fZ2xvYmVEZXB0aFRleHR1cmUsIHBvc1dDLnh5IC8gY3ptX3ZpZXdwb3J0Lnp3KSk7CgogICAgaWYgKGdsb2JlRGVwdGggPT0gMC4wKQogICAgewogICAgICAgIHJldHVybiAwLjA7IC8vIG5vdCBvbiB0aGUgZ2xvYmUKICAgIH0KCiAgICB2ZWM0IGV5ZUNvb3JkaW5hdGUgPSBjem1fd2luZG93VG9FeWVDb29yZGluYXRlcyhwb3NXQy54eSwgZ2xvYmVEZXB0aCk7CiAgICByZXR1cm4gZXllQ29vcmRpbmF0ZS56IC8gZXllQ29vcmRpbmF0ZS53Owp9CiNlbmRpZgp2b2lkIG1haW4oKQp7CiAgICAvLyBNb2RpZnlpbmcgdGhpcyBzaGFkZXIgbWF5IGFsc28gcmVxdWlyZSBtb2RpZmljYXRpb25zIHRvIEJpbGxib2FyZC5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24KCiAgICAvLyB1bnBhY2sgYXR0cmlidXRlcwogICAgdmVjMyBwb3NpdGlvbkhpZ2ggPSBwb3NpdGlvbkhpZ2hBbmRTY2FsZS54eXo7CiAgICB2ZWMzIHBvc2l0aW9uTG93ID0gcG9zaXRpb25Mb3dBbmRSb3RhdGlvbi54eXo7CiAgICBmbG9hdCBzY2FsZSA9IHBvc2l0aW9uSGlnaEFuZFNjYWxlLnc7CgojaWYgZGVmaW5lZChST1RBVElPTikgfHwgZGVmaW5lZChBTElHTkVEX0FYSVMpCiAgICBmbG9hdCByb3RhdGlvbiA9IHBvc2l0aW9uTG93QW5kUm90YXRpb24udzsKI2Vsc2UKICAgIGZsb2F0IHJvdGF0aW9uID0gMC4wOwojZW5kaWYKCiAgICBmbG9hdCBjb21wcmVzc2VkID0gY29tcHJlc3NlZEF0dHJpYnV0ZTAueDsKCiAgICB2ZWMyIHBpeGVsT2Zmc2V0OwogICAgcGl4ZWxPZmZzZXQueCA9IGZsb29yKGNvbXByZXNzZWQgKiBTSElGVF9SSUdIVDcpOwogICAgY29tcHJlc3NlZCAtPSBwaXhlbE9mZnNldC54ICogU0hJRlRfTEVGVDc7CiAgICBwaXhlbE9mZnNldC54IC09IFVQUEVSX0JPVU5EOwoKICAgIHZlYzIgb3JpZ2luOwogICAgb3JpZ2luLnggPSBmbG9vcihjb21wcmVzc2VkICogU0hJRlRfUklHSFQ1KTsKICAgIGNvbXByZXNzZWQgLT0gb3JpZ2luLnggKiBTSElGVF9MRUZUNTsKCiAgICBvcmlnaW4ueSA9IGZsb29yKGNvbXByZXNzZWQgKiBTSElGVF9SSUdIVDMpOwogICAgY29tcHJlc3NlZCAtPSBvcmlnaW4ueSAqIFNISUZUX0xFRlQzOwoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCiAgICB2ZWMyIGRlcHRoT3JpZ2luID0gb3JpZ2luLnh5OwojZW5kaWYKICAgIG9yaWdpbiAtPSB2ZWMyKDEuMCk7CgogICAgZmxvYXQgc2hvdyA9IGZsb29yKGNvbXByZXNzZWQgKiBTSElGVF9SSUdIVDIpOwogICAgY29tcHJlc3NlZCAtPSBzaG93ICogU0hJRlRfTEVGVDI7CgojaWZkZWYgSU5TVEFOQ0VECiAgICB2ZWMyIHRleHR1cmVDb29yZGluYXRlc0JvdHRvbUxlZnQgPSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhjb21wcmVzc2VkQXR0cmlidXRlMC53KTsKICAgIHZlYzIgdGV4dHVyZUNvb3JkaW5hdGVzUmFuZ2UgPSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhleWVPZmZzZXQudyk7CiAgICB2ZWMyIHRleHR1cmVDb29yZGluYXRlcyA9IHRleHR1cmVDb29yZGluYXRlc0JvdHRvbUxlZnQgKyBkaXJlY3Rpb24gKiB0ZXh0dXJlQ29vcmRpbmF0ZXNSYW5nZTsKI2Vsc2UKICAgIHZlYzIgZGlyZWN0aW9uOwogICAgZGlyZWN0aW9uLnggPSBmbG9vcihjb21wcmVzc2VkICogU0hJRlRfUklHSFQxKTsKICAgIGRpcmVjdGlvbi55ID0gY29tcHJlc3NlZCAtIGRpcmVjdGlvbi54ICogU0hJRlRfTEVGVDE7CgogICAgdmVjMiB0ZXh0dXJlQ29vcmRpbmF0ZXMgPSBjem1fZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhjb21wcmVzc2VkQXR0cmlidXRlMC53KTsKI2VuZGlmCgogICAgZmxvYXQgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUwLnkgICogU0hJRlRfUklHSFQ4OwogICAgcGl4ZWxPZmZzZXQueSA9IC0oZmxvb3IodGVtcCkgLSBVUFBFUl9CT1VORCk7CgogICAgdmVjMiB0cmFuc2xhdGU7CiAgICB0cmFuc2xhdGUueSA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDE2OwoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMC56ICogU0hJRlRfUklHSFQ4OwogICAgdHJhbnNsYXRlLnggPSBmbG9vcih0ZW1wKSAtIFVQUEVSX0JPVU5EOwoKICAgIHRyYW5zbGF0ZS55ICs9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICB0cmFuc2xhdGUueSAtPSBVUFBFUl9CT1VORDsKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTEueCAqIFNISUZUX1JJR0hUODsKICAgIGZsb2F0IHRlbXAyID0gZmxvb3IoY29tcHJlc3NlZEF0dHJpYnV0ZTIudyAqIFNISUZUX1JJR0hUMik7CgogICAgdmVjMiBpbWFnZVNpemUgPSB2ZWMyKGZsb29yKHRlbXApLCB0ZW1wMik7CgojaWZkZWYgRlJBR01FTlRfREVQVEhfQ0hFQ0sKICAgIGZsb2F0IGxhYmVsSG9yaXpvbnRhbE9yaWdpbiA9IGZsb29yKGNvbXByZXNzZWRBdHRyaWJ1dGUyLncgLSAodGVtcDIgKiBTSElGVF9MRUZUMikpOwogICAgZmxvYXQgYXBwbHlUcmFuc2xhdGUgPSAwLjA7CiAgICBpZiAobGFiZWxIb3Jpem9udGFsT3JpZ2luICE9IDAuMCkgLy8gaXMgYSBiaWxsYm9hcmQsIHNvIHNldCBhcHBseSB0cmFuc2xhdGUgdG8gZmFsc2UKICAgIHsKICAgICAgICBhcHBseVRyYW5zbGF0ZSA9IDEuMDsKICAgICAgICBsYWJlbEhvcml6b250YWxPcmlnaW4gLT0gMi4wOwogICAgICAgIGRlcHRoT3JpZ2luLnggPSBsYWJlbEhvcml6b250YWxPcmlnaW4gKyAxLjA7CiAgICB9CgogICAgZGVwdGhPcmlnaW4gPSB2ZWMyKDEuMCkgLSAoZGVwdGhPcmlnaW4gKiAwLjUpOwojZW5kaWYKCiNpZmRlZiBFWUVfRElTVEFOQ0VfVFJBTlNMVUNFTkNZCiAgICB2ZWM0IHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U7CiAgICB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLnggPSBjb21wcmVzc2VkQXR0cmlidXRlMS56OwogICAgdHJhbnNsdWNlbmN5QnlEaXN0YW5jZS56ID0gY29tcHJlc3NlZEF0dHJpYnV0ZTEudzsKCiAgICB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLnkgPSAoKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUOCkgLyAyNTUuMDsKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTEueSAqIFNISUZUX1JJR0hUODsKICAgIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UudyA9ICgodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4KSAvIDI1NS4wOwojZW5kaWYKCiNpZiBkZWZpbmVkKFZFUlRFWF9ERVBUSF9DSEVDSykgfHwgZGVmaW5lZChGUkFHTUVOVF9ERVBUSF9DSEVDSykKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMy53OwogICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDEyOwoKICAgIHZlYzIgZGltZW5zaW9uczsKICAgIGRpbWVuc2lvbnMueSA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDEyOwogICAgZGltZW5zaW9ucy54ID0gZmxvb3IodGVtcCk7CiNlbmRpZgoKI2lmZGVmIEFMSUdORURfQVhJUwogICAgdmVjMyBhbGlnbmVkQXhpcyA9IGN6bV9vY3REZWNvZGUoZmxvb3IoY29tcHJlc3NlZEF0dHJpYnV0ZTEueSAqIFNISUZUX1JJR0hUOCkpOwogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLnogKiBTSElGVF9SSUdIVDU7CiAgICBib29sIHZhbGlkQWxpZ25lZEF4aXMgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQxID4gMC4wOwojZWxzZQogICAgdmVjMyBhbGlnbmVkQXhpcyA9IHZlYzMoMC4wKTsKICAgIGJvb2wgdmFsaWRBbGlnbmVkQXhpcyA9IGZhbHNlOwojZW5kaWYKCiAgICB2ZWM0IHBpY2tDb2xvcjsKICAgIHZlYzQgY29sb3I7CgogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLnk7CiAgICB0ZW1wID0gdGVtcCAqIFNISUZUX1JJR0hUODsKICAgIHBpY2tDb2xvci5iID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHRlbXAgPSBmbG9vcih0ZW1wKSAqIFNISUZUX1JJR0hUODsKICAgIHBpY2tDb2xvci5nID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHBpY2tDb2xvci5yID0gZmxvb3IodGVtcCk7CgogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLng7CiAgICB0ZW1wID0gdGVtcCAqIFNISUZUX1JJR0hUODsKICAgIGNvbG9yLmIgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwogICAgY29sb3IuZyA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICBjb2xvci5yID0gZmxvb3IodGVtcCk7CgogICAgdGVtcCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUyLnogKiBTSElGVF9SSUdIVDg7CiAgICBib29sIHNpemVJbk1ldGVycyA9IGZsb29yKCh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDcpID4gMC4wOwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwoKICAgIHBpY2tDb2xvci5hID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHBpY2tDb2xvciAvPSAyNTUuMDsKCiAgICBjb2xvci5hID0gZmxvb3IodGVtcCk7CiAgICBjb2xvciAvPSAyNTUuMDsKCiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCiAgICB2ZWM0IHAgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShwb3NpdGlvbkhpZ2gsIHBvc2l0aW9uTG93KTsKICAgIHZlYzQgcG9zaXRpb25FQyA9IGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogcDsKCiNpZiBkZWZpbmVkKEZSQUdNRU5UX0RFUFRIX0NIRUNLKSB8fCBkZWZpbmVkKFZFUlRFWF9ERVBUSF9DSEVDSykKICAgIGZsb2F0IGV5ZURlcHRoID0gcG9zaXRpb25FQy56OwojZW5kaWYKCiAgICBwb3NpdGlvbkVDID0gY3ptX2V5ZU9mZnNldChwb3NpdGlvbkVDLCBleWVPZmZzZXQueHl6KTsKICAgIHBvc2l0aW9uRUMueHl6ICo9IHNob3c7CgogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgojaWYgZGVmaW5lZChFWUVfRElTVEFOQ0VfU0NBTElORykgfHwgZGVmaW5lZChFWUVfRElTVEFOQ0VfVFJBTlNMVUNFTkNZKSB8fCBkZWZpbmVkKEVZRV9ESVNUQU5DRV9QSVhFTF9PRkZTRVQpIHx8IGRlZmluZWQoRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT04pIHx8IGRlZmluZWQoRElTQUJMRV9ERVBUSF9ESVNUQU5DRSkKICAgIGZsb2F0IGxlbmd0aFNxOwogICAgaWYgKGN6bV9zY2VuZU1vZGUgPT0gY3ptX3NjZW5lTW9kZTJEKQogICAgewogICAgICAgIC8vIDJEIGNhbWVyYSBkaXN0YW5jZSBpcyBhIHNwZWNpYWwgY2FzZQogICAgICAgIC8vIHRyZWF0IGFsbCBiaWxsYm9hcmRzIGFzIGZsYXR0ZW5lZCB0byB0aGUgej0wLjAgcGxhbmUKICAgICAgICBsZW5ndGhTcSA9IGN6bV9leWVIZWlnaHQyRC55OwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGxlbmd0aFNxID0gZG90KHBvc2l0aW9uRUMueHl6LCBwb3NpdGlvbkVDLnh5eik7CiAgICB9CiNlbmRpZgoKI2lmZGVmIEVZRV9ESVNUQU5DRV9TQ0FMSU5HCiAgICBmbG9hdCBkaXN0YW5jZVNjYWxlID0gY3ptX25lYXJGYXJTY2FsYXIoc2NhbGVCeURpc3RhbmNlLCBsZW5ndGhTcSk7CiAgICBzY2FsZSAqPSBkaXN0YW5jZVNjYWxlOwogICAgdHJhbnNsYXRlICo9IGRpc3RhbmNlU2NhbGU7CiAgICAvLyBwdXNoIHZlcnRleCBiZWhpbmQgbmVhciBwbGFuZSBmb3IgY2xpcHBpbmcKICAgIGlmIChzY2FsZSA9PSAwLjApCiAgICB7CiAgICAgICAgcG9zaXRpb25FQy54eXogPSB2ZWMzKDAuMCk7CiAgICB9CiNlbmRpZgoKICAgIGZsb2F0IHRyYW5zbHVjZW5jeSA9IDEuMDsKI2lmZGVmIEVZRV9ESVNUQU5DRV9UUkFOU0xVQ0VOQ1kKICAgIHRyYW5zbHVjZW5jeSA9IGN6bV9uZWFyRmFyU2NhbGFyKHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsIGxlbmd0aFNxKTsKICAgIC8vIHB1c2ggdmVydGV4IGJlaGluZCBuZWFyIHBsYW5lIGZvciBjbGlwcGluZwogICAgaWYgKHRyYW5zbHVjZW5jeSA9PSAwLjApCiAgICB7CiAgICAgICAgcG9zaXRpb25FQy54eXogPSB2ZWMzKDAuMCk7CiAgICB9CiNlbmRpZgoKI2lmZGVmIEVZRV9ESVNUQU5DRV9QSVhFTF9PRkZTRVQKICAgIGZsb2F0IHBpeGVsT2Zmc2V0U2NhbGUgPSBjem1fbmVhckZhclNjYWxhcihwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSwgbGVuZ3RoU3EpOwogICAgcGl4ZWxPZmZzZXQgKj0gcGl4ZWxPZmZzZXRTY2FsZTsKI2VuZGlmCgojaWZkZWYgRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT04KICAgIGZsb2F0IG5lYXJTcSA9IGNvbXByZXNzZWRBdHRyaWJ1dGUzLng7CiAgICBmbG9hdCBmYXJTcSA9IGNvbXByZXNzZWRBdHRyaWJ1dGUzLnk7CiAgICBpZiAobGVuZ3RoU3EgPCBuZWFyU3EgfHwgbGVuZ3RoU3EgPiBmYXJTcSkKICAgIHsKICAgICAgICBwb3NpdGlvbkVDLnh5eiA9IHZlYzMoMC4wKTsKICAgIH0KI2VuZGlmCgogICAgbWF0MiByb3RhdGlvbk1hdHJpeDsKICAgIGZsb2F0IG1wcDsKCiNpZmRlZiBESVNBQkxFX0RFUFRIX0RJU1RBTkNFCiAgICBmbG9hdCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBjb21wcmVzc2VkQXR0cmlidXRlMy56OwojZW5kaWYKCiNpZmRlZiBWRVJURVhfREVQVEhfQ0hFQ0sKaWYgKGxlbmd0aFNxIDwgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlKSB7CiAgICBmbG9hdCBkZXB0aHNpbG9uID0gMTAuMDsKCiAgICB2ZWMyIGxhYmVsVHJhbnNsYXRlID0gdGV4dHVyZUNvb3JkaW5hdGVCb3VuZHNPckxhYmVsVHJhbnNsYXRlLnh5OwogICAgdmVjNCBwRUMxID0gYWRkU2NyZWVuU3BhY2VPZmZzZXQocG9zaXRpb25FQywgZGltZW5zaW9ucywgc2NhbGUsIHZlYzIoMC4wKSwgb3JpZ2luLCBsYWJlbFRyYW5zbGF0ZSwgcGl4ZWxPZmZzZXQsIGFsaWduZWRBeGlzLCB2YWxpZEFsaWduZWRBeGlzLCByb3RhdGlvbiwgc2l6ZUluTWV0ZXJzLCByb3RhdGlvbk1hdHJpeCwgbXBwKTsKICAgIGZsb2F0IGdsb2JlRGVwdGgxID0gZ2V0R2xvYmVEZXB0aChwRUMxKTsKCiAgICBpZiAoZ2xvYmVEZXB0aDEgIT0gMC4wICYmIHBFQzEueiArIGRlcHRoc2lsb24gPCBnbG9iZURlcHRoMSkKICAgIHsKICAgICAgICB2ZWM0IHBFQzIgPSBhZGRTY3JlZW5TcGFjZU9mZnNldChwb3NpdGlvbkVDLCBkaW1lbnNpb25zLCBzY2FsZSwgdmVjMigwLjAsIDEuMCksIG9yaWdpbiwgbGFiZWxUcmFuc2xhdGUsIHBpeGVsT2Zmc2V0LCBhbGlnbmVkQXhpcywgdmFsaWRBbGlnbmVkQXhpcywgcm90YXRpb24sIHNpemVJbk1ldGVycywgcm90YXRpb25NYXRyaXgsIG1wcCk7CiAgICAgICAgZmxvYXQgZ2xvYmVEZXB0aDIgPSBnZXRHbG9iZURlcHRoKHBFQzIpOwoKICAgICAgICBpZiAoZ2xvYmVEZXB0aDIgIT0gMC4wICYmIHBFQzIueiArIGRlcHRoc2lsb24gPCBnbG9iZURlcHRoMikKICAgICAgICB7CiAgICAgICAgICAgIHZlYzQgcEVDMyA9IGFkZFNjcmVlblNwYWNlT2Zmc2V0KHBvc2l0aW9uRUMsIGRpbWVuc2lvbnMsIHNjYWxlLCB2ZWMyKDEuMCksIG9yaWdpbiwgbGFiZWxUcmFuc2xhdGUsIHBpeGVsT2Zmc2V0LCBhbGlnbmVkQXhpcywgdmFsaWRBbGlnbmVkQXhpcywgcm90YXRpb24sIHNpemVJbk1ldGVycywgcm90YXRpb25NYXRyaXgsIG1wcCk7CiAgICAgICAgICAgIGZsb2F0IGdsb2JlRGVwdGgzID0gZ2V0R2xvYmVEZXB0aChwRUMzKTsKICAgICAgICAgICAgaWYgKGdsb2JlRGVwdGgzICE9IDAuMCAmJiBwRUMzLnogKyBkZXB0aHNpbG9uIDwgZ2xvYmVEZXB0aDMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uRUMueHl6ID0gdmVjMygwLjApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CiNlbmRpZgoKICAgIHBvc2l0aW9uRUMgPSBhZGRTY3JlZW5TcGFjZU9mZnNldChwb3NpdGlvbkVDLCBpbWFnZVNpemUsIHNjYWxlLCBkaXJlY3Rpb24sIG9yaWdpbiwgdHJhbnNsYXRlLCBwaXhlbE9mZnNldCwgYWxpZ25lZEF4aXMsIHZhbGlkQWxpZ25lZEF4aXMsIHJvdGF0aW9uLCBzaXplSW5NZXRlcnMsIHJvdGF0aW9uTWF0cml4LCBtcHApOwogICAgZ2xfUG9zaXRpb24gPSBjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUM7CiAgICB2X3RleHR1cmVDb29yZGluYXRlcyA9IHRleHR1cmVDb29yZGluYXRlczsKCiNpZmRlZiBMT0dfREVQVEgKICAgIGN6bV92ZXJ0ZXhMb2dEZXB0aCgpOwojZW5kaWYKCiNpZmRlZiBESVNBQkxFX0RFUFRIX0RJU1RBTkNFCiAgICBpZiAoZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlID09IDAuMCAmJiBjem1fbWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZSAhPSAwLjApCiAgICB7CiAgICAgICAgZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlID0gY3ptX21pbmltdW1EaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U7CiAgICB9CgogICAgaWYgKGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSAhPSAwLjApCiAgICB7CiAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvICJtdWx0aXBseSBib3RoIHNpZGVzIiBieSB3LiAgR3JlYXRlci9sZXNzLXRoYW4gY29tcGFyaXNvbnMgd29uJ3Qgd29yayBmb3IgbmVnYXRpdmUgdmFsdWVzIG9mIHcuCiAgICAgICAgZmxvYXQgemNsaXAgPSBnbF9Qb3NpdGlvbi56IC8gZ2xfUG9zaXRpb24udzsKICAgICAgICBib29sIGNsaXBwZWQgPSAoemNsaXAgPCAtMS4wIHx8IHpjbGlwID4gMS4wKTsKICAgICAgICBpZiAoIWNsaXBwZWQgJiYgKGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSA8IDAuMCB8fCAobGVuZ3RoU3EgPiAwLjAgJiYgbGVuZ3RoU3EgPCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UpKSkKICAgICAgICB7CiAgICAgICAgICAgIC8vIFBvc2l0aW9uIHogb24gdGhlIG5lYXIgcGxhbmUuCiAgICAgICAgICAgIGdsX1Bvc2l0aW9uLnogPSAtZ2xfUG9zaXRpb24udzsKI2lmZGVmIExPR19ERVBUSAogICAgICAgICAgICB2X2RlcHRoRnJvbU5lYXJQbHVzT25lID0gMS4wOwojZW5kaWYKICAgICAgICB9CiAgICB9CiNlbmRpZgoKI2lmZGVmIEZSQUdNRU5UX0RFUFRIX0NIRUNLCiAgICBpZiAoc2l6ZUluTWV0ZXJzKSB7CiAgICAgICAgdHJhbnNsYXRlIC89IG1wcDsKICAgICAgICBkaW1lbnNpb25zIC89IG1wcDsKICAgICAgICBpbWFnZVNpemUgLz0gbXBwOwogICAgfQoKI2lmIGRlZmluZWQoUk9UQVRJT04pIHx8IGRlZmluZWQoQUxJR05FRF9BWElTKQogICAgdl9yb3RhdGlvbk1hdHJpeCA9IHJvdGF0aW9uTWF0cml4OwojZWxzZQogICAgdl9yb3RhdGlvbk1hdHJpeCA9IG1hdDIoMS4wLCAwLjAsIDAuMCwgMS4wKTsKI2VuZGlmCgogICAgZmxvYXQgZW5hYmxlRGVwdGhDaGVjayA9IDAuMDsKICAgIGlmIChsZW5ndGhTcSA8IGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkKICAgIHsKICAgICAgICBlbmFibGVEZXB0aENoZWNrID0gMS4wOwogICAgfQoKICAgIGZsb2F0IGR3ID0gZmxvb3IoY2xhbXAoZGltZW5zaW9ucy54LCAwLjAsIFNISUZUX0xFRlQxMikpOwogICAgZmxvYXQgZGggPSBmbG9vcihjbGFtcChkaW1lbnNpb25zLnksIDAuMCwgU0hJRlRfTEVGVDEyKSk7CgogICAgZmxvYXQgaXcgPSBmbG9vcihjbGFtcChpbWFnZVNpemUueCwgMC4wLCBTSElGVF9MRUZUMTIpKTsKICAgIGZsb2F0IGloID0gZmxvb3IoY2xhbXAoaW1hZ2VTaXplLnksIDAuMCwgU0hJRlRfTEVGVDEyKSk7CgogICAgdl9jb21wcmVzc2VkLnggPSBleWVEZXB0aDsKICAgIHZfY29tcHJlc3NlZC55ID0gYXBwbHlUcmFuc2xhdGUgKiBTSElGVF9MRUZUMSArIGVuYWJsZURlcHRoQ2hlY2s7CiAgICB2X2NvbXByZXNzZWQueiA9IGR3ICogU0hJRlRfTEVGVDEyICsgZGg7CiAgICB2X2NvbXByZXNzZWQudyA9IGl3ICogU0hJRlRfTEVGVDEyICsgaWg7CiAgICB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnh5ID0gZGVwdGhPcmlnaW47CiAgICB2X29yaWdpblRleHR1cmVDb29yZGluYXRlQW5kVHJhbnNsYXRlLnp3ID0gdHJhbnNsYXRlOwogICAgdl90ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kcyA9IHRleHR1cmVDb29yZGluYXRlQm91bmRzT3JMYWJlbFRyYW5zbGF0ZTsKCiNlbmRpZgoKI2lmZGVmIFNERgogICAgdmVjNCBvdXRsaW5lQ29sb3I7CiAgICBmbG9hdCBvdXRsaW5lV2lkdGg7CgogICAgdGVtcCA9IHNkZi54OwogICAgdGVtcCA9IHRlbXAgKiBTSElGVF9SSUdIVDg7CiAgICBvdXRsaW5lQ29sb3IuYiA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICB0ZW1wID0gZmxvb3IodGVtcCkgKiBTSElGVF9SSUdIVDg7CiAgICBvdXRsaW5lQ29sb3IuZyA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICBvdXRsaW5lQ29sb3IuciA9IGZsb29yKHRlbXApOwoKICAgIHRlbXAgPSBzZGYueTsKICAgIHRlbXAgPSB0ZW1wICogU0hJRlRfUklHSFQ4OwogICAgZmxvYXQgdGVtcDMgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwogICAgb3V0bGluZVdpZHRoID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIG91dGxpbmVDb2xvci5hID0gZmxvb3IodGVtcCk7CiAgICBvdXRsaW5lQ29sb3IgLz0gMjU1LjA7CgogICAgdl9vdXRsaW5lV2lkdGggPSBvdXRsaW5lV2lkdGggLyAyNTUuMDsKICAgIHZfb3V0bGluZUNvbG9yID0gb3V0bGluZUNvbG9yOwogICAgdl9vdXRsaW5lQ29sb3IuYSAqPSB0cmFuc2x1Y2VuY3k7CiNlbmRpZgoKICAgIHZfcGlja0NvbG9yID0gcGlja0NvbG9yOwoKICAgIHZfY29sb3IgPSBjb2xvcjsKICAgIHZfY29sb3IuYSAqPSB0cmFuc2x1Y2VuY3k7Cgp9CmB9KTt2YXIgR3R0LFlsLExMPVMoKCk9PntzcygpO0d0dD17QUREOml0LkZVTkNfQURELFNVQlRSQUNUOml0LkZVTkNfU1VCVFJBQ1QsUkVWRVJTRV9TVUJUUkFDVDppdC5GVU5DX1JFVkVSU0VfU1VCVFJBQ1QsTUlOOml0Lk1JTixNQVg6aXQuTUFYfSxZbD1PYmplY3QuZnJlZXplKEd0dCl9KTt2YXIgV3R0LFJyLHlMPVMoKCk9PntzcygpO1d0dD17WkVSTzppdC5aRVJPLE9ORTppdC5PTkUsU09VUkNFX0NPTE9SOml0LlNSQ19DT0xPUixPTkVfTUlOVVNfU09VUkNFX0NPTE9SOml0Lk9ORV9NSU5VU19TUkNfQ09MT1IsREVTVElOQVRJT05fQ09MT1I6aXQuRFNUX0NPTE9SLE9ORV9NSU5VU19ERVNUSU5BVElPTl9DT0xPUjppdC5PTkVfTUlOVVNfRFNUX0NPTE9SLFNPVVJDRV9BTFBIQTppdC5TUkNfQUxQSEEsT05FX01JTlVTX1NPVVJDRV9BTFBIQTppdC5PTkVfTUlOVVNfU1JDX0FMUEhBLERFU1RJTkFUSU9OX0FMUEhBOml0LkRTVF9BTFBIQSxPTkVfTUlOVVNfREVTVElOQVRJT05fQUxQSEE6aXQuT05FX01JTlVTX0RTVF9BTFBIQSxDT05TVEFOVF9DT0xPUjppdC5DT05TVEFOVF9DT0xPUixPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6aXQuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLENPTlNUQU5UX0FMUEhBOml0LkNPTlNUQU5UX0FMUEhBLE9ORV9NSU5VU19DT05TVEFOVF9BTFBIQTppdC5PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsU09VUkNFX0FMUEhBX1NBVFVSQVRFOml0LlNSQ19BTFBIQV9TQVRVUkFURX0sUnI9T2JqZWN0LmZyZWV6ZShXdHQpfSk7dmFyIER0dCxNcixrbT1TKCgpPT57TEwoKTt5TCgpO0R0dD17RElTQUJMRUQ6T2JqZWN0LmZyZWV6ZSh7ZW5hYmxlZDohMX0pLEFMUEhBX0JMRU5EOk9iamVjdC5mcmVlemUoe2VuYWJsZWQ6ITAsZXF1YXRpb25SZ2I6WWwuQURELGVxdWF0aW9uQWxwaGE6WWwuQURELGZ1bmN0aW9uU291cmNlUmdiOlJyLlNPVVJDRV9BTFBIQSxmdW5jdGlvblNvdXJjZUFscGhhOlJyLk9ORSxmdW5jdGlvbkRlc3RpbmF0aW9uUmdiOlJyLk9ORV9NSU5VU19TT1VSQ0VfQUxQSEEsZnVuY3Rpb25EZXN0aW5hdGlvbkFscGhhOlJyLk9ORV9NSU5VU19TT1VSQ0VfQUxQSEF9KSxQUkVfTVVMVElQTElFRF9BTFBIQV9CTEVORDpPYmplY3QuZnJlZXplKHtlbmFibGVkOiEwLGVxdWF0aW9uUmdiOllsLkFERCxlcXVhdGlvbkFscGhhOllsLkFERCxmdW5jdGlvblNvdXJjZVJnYjpSci5PTkUsZnVuY3Rpb25Tb3VyY2VBbHBoYTpSci5PTkUsZnVuY3Rpb25EZXN0aW5hdGlvblJnYjpSci5PTkVfTUlOVVNfU09VUkNFX0FMUEhBLGZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYTpSci5PTkVfTUlOVVNfU09VUkNFX0FMUEhBfSksQURESVRJVkVfQkxFTkQ6T2JqZWN0LmZyZWV6ZSh7ZW5hYmxlZDohMCxlcXVhdGlvblJnYjpZbC5BREQsZXF1YXRpb25BbHBoYTpZbC5BREQsZnVuY3Rpb25Tb3VyY2VSZ2I6UnIuU09VUkNFX0FMUEhBLGZ1bmN0aW9uU291cmNlQWxwaGE6UnIuT05FLGZ1bmN0aW9uRGVzdGluYXRpb25SZ2I6UnIuT05FLGZ1bmN0aW9uRGVzdGluYXRpb25BbHBoYTpSci5PTkV9KX0sTXI9T2JqZWN0LmZyZWV6ZShEdHQpfSk7dmFyIFV0dCxXbixFST1TKCgpPT57VXR0PXtPUEFRVUU6MCxUUkFOU0xVQ0VOVDoxLE9QQVFVRV9BTkRfVFJBTlNMVUNFTlQ6Mn0sV249T2JqZWN0LmZyZWV6ZShVdHQpfSk7dmFyIE10dCxwbyxfST1TKCgpPT57TXR0PXtGT05UX1NJWkU6NDgsUEFERElORzoxMCxSQURJVVM6OCxDVVRPRkY6LjI1fSxwbz1PYmplY3QuZnJlZXplKE10dCl9KTt2YXIgVmksZ2UsRWM9UygoKT0+e3NzKCk7Vmk9e1VOU0lHTkVEX0JZVEU6aXQuVU5TSUdORURfQllURSxVTlNJR05FRF9TSE9SVDppdC5VTlNJR05FRF9TSE9SVCxVTlNJR05FRF9JTlQ6aXQuVU5TSUdORURfSU5ULEZMT0FUOml0LkZMT0FULEhBTEZfRkxPQVQ6aXQuSEFMRl9GTE9BVF9PRVMsVU5TSUdORURfSU5UXzI0Xzg6aXQuVU5TSUdORURfSU5UXzI0XzgsVU5TSUdORURfU0hPUlRfNF80XzRfNDppdC5VTlNJR05FRF9TSE9SVF80XzRfNF80LFVOU0lHTkVEX1NIT1JUXzVfNV81XzE6aXQuVU5TSUdORURfU0hPUlRfNV81XzVfMSxVTlNJR05FRF9TSE9SVF81XzZfNTppdC5VTlNJR05FRF9TSE9SVF81XzZfNX07VmkudG9XZWJHTENvbnN0YW50PWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQpe2Nhc2UgVmkuVU5TSUdORURfQllURTpyZXR1cm4gaXQuVU5TSUdORURfQllURTtjYXNlIFZpLlVOU0lHTkVEX1NIT1JUOnJldHVybiBpdC5VTlNJR05FRF9TSE9SVDtjYXNlIFZpLlVOU0lHTkVEX0lOVDpyZXR1cm4gaXQuVU5TSUdORURfSU5UO2Nhc2UgVmkuRkxPQVQ6cmV0dXJuIGl0LkZMT0FUO2Nhc2UgVmkuSEFMRl9GTE9BVDpyZXR1cm4gZS53ZWJnbDI/aXQuSEFMRl9GTE9BVDppdC5IQUxGX0ZMT0FUX09FUztjYXNlIFZpLlVOU0lHTkVEX0lOVF8yNF84OnJldHVybiBpdC5VTlNJR05FRF9JTlRfMjRfODtjYXNlIFZpLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6cmV0dXJuIGl0LlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ7Y2FzZSBWaS5VTlNJR05FRF9TSE9SVF81XzVfNV8xOnJldHVybiBpdC5VTlNJR05FRF9TSE9SVF81XzVfNV8xO2Nhc2UgVmkuVU5TSUdORURfU0hPUlRfNV82XzU6cmV0dXJuIFZpLlVOU0lHTkVEX1NIT1JUXzVfNl81fX07VmkuaXNQYWNrZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1WaS5VTlNJR05FRF9JTlRfMjRfOHx8dD09PVZpLlVOU0lHTkVEX1NIT1JUXzRfNF80XzR8fHQ9PT1WaS5VTlNJR05FRF9TSE9SVF81XzVfNV8xfHx0PT09VmkuVU5TSUdORURfU0hPUlRfNV82XzV9O1ZpLnNpemVJbkJ5dGVzPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIFZpLlVOU0lHTkVEX0JZVEU6cmV0dXJuIDE7Y2FzZSBWaS5VTlNJR05FRF9TSE9SVDpjYXNlIFZpLlVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6Y2FzZSBWaS5VTlNJR05FRF9TSE9SVF81XzVfNV8xOmNhc2UgVmkuVU5TSUdORURfU0hPUlRfNV82XzU6Y2FzZSBWaS5IQUxGX0ZMT0FUOnJldHVybiAyO2Nhc2UgVmkuVU5TSUdORURfSU5UOmNhc2UgVmkuRkxPQVQ6Y2FzZSBWaS5VTlNJR05FRF9JTlRfMjRfODpyZXR1cm4gNH19O1ZpLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09VmkuVU5TSUdORURfQllURXx8dD09PVZpLlVOU0lHTkVEX1NIT1JUfHx0PT09VmkuVU5TSUdORURfSU5UfHx0PT09VmkuRkxPQVR8fHQ9PT1WaS5IQUxGX0ZMT0FUfHx0PT09VmkuVU5TSUdORURfSU5UXzI0Xzh8fHQ9PT1WaS5VTlNJR05FRF9TSE9SVF80XzRfNF80fHx0PT09VmkuVU5TSUdORURfU0hPUlRfNV81XzVfMXx8dD09PVZpLlVOU0lHTkVEX1NIT1JUXzVfNl81fTtnZT1PYmplY3QuZnJlZXplKFZpKX0pO3ZhciB2dCxJZSxfYz1TKCgpPT57RWMoKTtzcygpO3Z0PXtERVBUSF9DT01QT05FTlQ6aXQuREVQVEhfQ09NUE9ORU5ULERFUFRIX1NURU5DSUw6aXQuREVQVEhfU1RFTkNJTCxBTFBIQTppdC5BTFBIQSxSRUQ6aXQuUkVELFJHOml0LlJHLFJHQjppdC5SR0IsUkdCQTppdC5SR0JBLExVTUlOQU5DRTppdC5MVU1JTkFOQ0UsTFVNSU5BTkNFX0FMUEhBOml0LkxVTUlOQU5DRV9BTFBIQSxSR0JfRFhUMTppdC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULFJHQkFfRFhUMTppdC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCxSR0JBX0RYVDM6aXQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsUkdCQV9EWFQ1Oml0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhULFJHQl9QVlJUQ180QlBQVjE6aXQuQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyxSR0JfUFZSVENfMkJQUFYxOml0LkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9QVlJUQ180QlBQVjE6aXQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcsUkdCQV9QVlJUQ18yQlBQVjE6aXQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9BU1RDOml0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9XRUJHTCxSR0JfRVRDMTppdC5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMLFJHQjhfRVRDMjppdC5DT01QUkVTU0VEX1JHQjhfRVRDMixSR0JBOF9FVEMyX0VBQzppdC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLFJHQkFfQkM3Oml0LkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNfTt2dC5jb21wb25lbnRzTGVuZ3RoPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIHZ0LlJHQjpyZXR1cm4gMztjYXNlIHZ0LlJHQkE6cmV0dXJuIDQ7Y2FzZSB2dC5MVU1JTkFOQ0VfQUxQSEE6Y2FzZSB2dC5SRzpyZXR1cm4gMjtjYXNlIHZ0LkFMUEhBOmNhc2UgdnQuUkVEOmNhc2UgdnQuTFVNSU5BTkNFOnJldHVybiAxO2RlZmF1bHQ6cmV0dXJuIDF9fTt2dC52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LkRFUFRIX0NPTVBPTkVOVHx8dD09PXZ0LkRFUFRIX1NURU5DSUx8fHQ9PT12dC5BTFBIQXx8dD09PXZ0LlJFRHx8dD09PXZ0LlJHfHx0PT09dnQuUkdCfHx0PT09dnQuUkdCQXx8dD09PXZ0LkxVTUlOQU5DRXx8dD09PXZ0LkxVTUlOQU5DRV9BTFBIQXx8dD09PXZ0LlJHQl9EWFQxfHx0PT09dnQuUkdCQV9EWFQxfHx0PT09dnQuUkdCQV9EWFQzfHx0PT09dnQuUkdCQV9EWFQ1fHx0PT09dnQuUkdCX1BWUlRDXzRCUFBWMXx8dD09PXZ0LlJHQl9QVlJUQ18yQlBQVjF8fHQ9PT12dC5SR0JBX1BWUlRDXzRCUFBWMXx8dD09PXZ0LlJHQkFfUFZSVENfMkJQUFYxfHx0PT09dnQuUkdCQV9BU1RDfHx0PT09dnQuUkdCX0VUQzF8fHQ9PT12dC5SR0I4X0VUQzJ8fHQ9PT12dC5SR0JBOF9FVEMyX0VBQ3x8dD09PXZ0LlJHQkFfQkM3fTt2dC5pc0NvbG9yRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkVEfHx0PT09dnQuQUxQSEF8fHQ9PT12dC5SR0J8fHQ9PT12dC5SR0JBfHx0PT09dnQuTFVNSU5BTkNFfHx0PT09dnQuTFVNSU5BTkNFX0FMUEhBfTt2dC5pc0RlcHRoRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuREVQVEhfQ09NUE9ORU5UfHx0PT09dnQuREVQVEhfU1RFTkNJTH07dnQuaXNDb21wcmVzc2VkRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkdCX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDN8fHQ9PT12dC5SR0JBX0RYVDV8fHQ9PT12dC5SR0JfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCX1BWUlRDXzJCUFBWMXx8dD09PXZ0LlJHQkFfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCQV9QVlJUQ18yQlBQVjF8fHQ9PT12dC5SR0JBX0FTVEN8fHQ9PT12dC5SR0JfRVRDMXx8dD09PXZ0LlJHQjhfRVRDMnx8dD09PXZ0LlJHQkE4X0VUQzJfRUFDfHx0PT09dnQuUkdCQV9CQzd9O3Z0LmlzRFhURm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkdCX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDF8fHQ9PT12dC5SR0JBX0RYVDN8fHQ9PT12dC5SR0JBX0RYVDV9O3Z0LmlzUFZSVENGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT12dC5SR0JfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCX1BWUlRDXzJCUFBWMXx8dD09PXZ0LlJHQkFfUFZSVENfNEJQUFYxfHx0PT09dnQuUkdCQV9QVlJUQ18yQlBQVjF9O3Z0LmlzQVNUQ0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LlJHQkFfQVNUQ307dnQuaXNFVEMxRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dnQuUkdCX0VUQzF9O3Z0LmlzRVRDMkZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LlJHQjhfRVRDMnx8dD09PXZ0LlJHQkE4X0VUQzJfRUFDfTt2dC5pc0JDN0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZ0LlJHQkFfQkM3fTt2dC5jb21wcmVzc2VkVGV4dHVyZVNpemVJbkJ5dGVzPWZ1bmN0aW9uKHQsZSxpKXtzd2l0Y2godCl7Y2FzZSB2dC5SR0JfRFhUMTpjYXNlIHZ0LlJHQkFfRFhUMTpjYXNlIHZ0LlJHQl9FVEMxOmNhc2UgdnQuUkdCOF9FVEMyOnJldHVybiBNYXRoLmZsb29yKChlKzMpLzQpKk1hdGguZmxvb3IoKGkrMykvNCkqODtjYXNlIHZ0LlJHQkFfRFhUMzpjYXNlIHZ0LlJHQkFfRFhUNTpjYXNlIHZ0LlJHQkFfQVNUQzpjYXNlIHZ0LlJHQkE4X0VUQzJfRUFDOnJldHVybiBNYXRoLmZsb29yKChlKzMpLzQpKk1hdGguZmxvb3IoKGkrMykvNCkqMTY7Y2FzZSB2dC5SR0JfUFZSVENfNEJQUFYxOmNhc2UgdnQuUkdCQV9QVlJUQ180QlBQVjE6cmV0dXJuIE1hdGguZmxvb3IoKE1hdGgubWF4KGUsOCkqTWF0aC5tYXgoaSw4KSo0KzcpLzgpO2Nhc2UgdnQuUkdCX1BWUlRDXzJCUFBWMTpjYXNlIHZ0LlJHQkFfUFZSVENfMkJQUFYxOnJldHVybiBNYXRoLmZsb29yKChNYXRoLm1heChlLDE2KSpNYXRoLm1heChpLDgpKjIrNykvOCk7Y2FzZSB2dC5SR0JBX0JDNzpyZXR1cm4gTWF0aC5jZWlsKGUvNCkqTWF0aC5jZWlsKGkvNCkqMTY7ZGVmYXVsdDpyZXR1cm4gMH19O3Z0LnRleHR1cmVTaXplSW5CeXRlcz1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz12dC5jb21wb25lbnRzTGVuZ3RoKHQpO3JldHVybiBnZS5pc1BhY2tlZChlKSYmKHM9MSkscypnZS5zaXplSW5CeXRlcyhlKSppKm59O3Z0LmFsaWdubWVudEluQnl0ZXM9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXZ0LnRleHR1cmVTaXplSW5CeXRlcyh0LGUsaSwxKSU0O3JldHVybiBuPT09MD80Om49PT0yPzI6MX07dnQuY3JlYXRlVHlwZWRBcnJheT1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcyxvPWdlLnNpemVJbkJ5dGVzKGUpO289PT1VaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UP3M9VWludDhBcnJheTpvPT09VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ/cz1VaW50MTZBcnJheTpvPT09RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UJiZlPT09Z2UuRkxPQVQ/cz1GbG9hdDMyQXJyYXk6cz1VaW50MzJBcnJheTtsZXQgcj12dC5jb21wb25lbnRzTGVuZ3RoKHQpKmkqbjtyZXR1cm4gbmV3IHMocil9O3Z0LmZsaXBZPWZ1bmN0aW9uKHQsZSxpLG4scyl7aWYocz09PTEpcmV0dXJuIHQ7bGV0IG89dnQuY3JlYXRlVHlwZWRBcnJheShlLGksbixzKSxyPXZ0LmNvbXBvbmVudHNMZW5ndGgoZSksYT1uKnI7Zm9yKGxldCBoPTA7aDxzOysraCl7bGV0IEE9aCpuKnIsZD0ocy1oLTEpKm4qcjtmb3IobGV0IGY9MDtmPGE7KytmKW9bZCtmXT10W0ErZl19cmV0dXJuIG99O3Z0LnRvSW50ZXJuYWxGb3JtYXQ9ZnVuY3Rpb24odCxlLGkpe2lmKCFpLndlYmdsMilyZXR1cm4gdDtpZih0PT09dnQuREVQVEhfU1RFTkNJTClyZXR1cm4gaXQuREVQVEgyNF9TVEVOQ0lMODtpZih0PT09dnQuREVQVEhfQ09NUE9ORU5UKXtpZihlPT09Z2UuVU5TSUdORURfU0hPUlQpcmV0dXJuIGl0LkRFUFRIX0NPTVBPTkVOVDE2O2lmKGU9PT1nZS5VTlNJR05FRF9JTlQpcmV0dXJuIGl0LkRFUFRIX0NPTVBPTkVOVDI0fWlmKGU9PT1nZS5GTE9BVClzd2l0Y2godCl7Y2FzZSB2dC5SR0JBOnJldHVybiBpdC5SR0JBMzJGO2Nhc2UgdnQuUkdCOnJldHVybiBpdC5SR0IzMkY7Y2FzZSB2dC5SRzpyZXR1cm4gaXQuUkczMkY7Y2FzZSB2dC5SRUQ6cmV0dXJuIGl0LlIzMkZ9aWYoZT09PWdlLkhBTEZfRkxPQVQpc3dpdGNoKHQpe2Nhc2UgdnQuUkdCQTpyZXR1cm4gaXQuUkdCQTE2RjtjYXNlIHZ0LlJHQjpyZXR1cm4gaXQuUkdCMTZGO2Nhc2UgdnQuUkc6cmV0dXJuIGl0LlJHMTZGO2Nhc2UgdnQuUkVEOnJldHVybiBpdC5SMTZGfXJldHVybiB0fTtJZT1PYmplY3QuZnJlZXplKHZ0KX0pO2Z1bmN0aW9uIFdUKHQsZSxpKXtsZXQgbj10Ll9nbDtuLmZyYW1lYnVmZmVyVGV4dHVyZTJEKG4uRlJBTUVCVUZGRVIsZSxpLl90YXJnZXQsaS5fdGV4dHVyZSwwKX1mdW5jdGlvbiBSSSh0LGUsaSl7bGV0IG49dC5fZ2w7bi5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihuLkZSQU1FQlVGRkVSLGUsbi5SRU5ERVJCVUZGRVIsaS5fZ2V0UmVuZGVyYnVmZmVyKCkpfWZ1bmN0aW9uIFRhKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LmNvbnRleHQ7cC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLGUpO2xldCBpPWUuX2dsLG49ZW4ubWF4aW11bUNvbG9yQXR0YWNobWVudHM7aWYodGhpcy5fZ2w9aSx0aGlzLl9mcmFtZWJ1ZmZlcj1pLmNyZWF0ZUZyYW1lYnVmZmVyKCksdGhpcy5fY29sb3JUZXh0dXJlcz1bXSx0aGlzLl9jb2xvclJlbmRlcmJ1ZmZlcnM9W10sdGhpcy5fYWN0aXZlQ29sb3JBdHRhY2htZW50cz1bXSx0aGlzLl9kZXB0aFRleHR1cmU9dm9pZCAwLHRoaXMuX2RlcHRoUmVuZGVyYnVmZmVyPXZvaWQgMCx0aGlzLl9zdGVuY2lsUmVuZGVyYnVmZmVyPXZvaWQgMCx0aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlPXZvaWQgMCx0aGlzLl9kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXI9dm9pZCAwLHRoaXMuZGVzdHJveUF0dGFjaG1lbnRzPVoodC5kZXN0cm95QXR0YWNobWVudHMsITApLG0odC5jb2xvclRleHR1cmVzKSYmbSh0LmNvbG9yUmVuZGVyYnVmZmVycykpdGhyb3cgbmV3IFkoIkNhbm5vdCBoYXZlIGJvdGggY29sb3IgdGV4dHVyZSBhbmQgY29sb3IgcmVuZGVyYnVmZmVyIGF0dGFjaG1lbnRzLiIpO2lmKG0odC5kZXB0aFRleHR1cmUpJiZtKHQuZGVwdGhSZW5kZXJidWZmZXIpKXRocm93IG5ldyBZKCJDYW5ub3QgaGF2ZSBib3RoIGEgZGVwdGggdGV4dHVyZSBhbmQgZGVwdGggcmVuZGVyYnVmZmVyIGF0dGFjaG1lbnQuIik7aWYobSh0LmRlcHRoU3RlbmNpbFRleHR1cmUpJiZtKHQuZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKSl0aHJvdyBuZXcgWSgiQ2Fubm90IGhhdmUgYm90aCBhIGRlcHRoLXN0ZW5jaWwgdGV4dHVyZSBhbmQgZGVwdGgtc3RlbmNpbCByZW5kZXJidWZmZXIgYXR0YWNobWVudC4iKTtsZXQgcz1tKHQuZGVwdGhUZXh0dXJlKXx8bSh0LmRlcHRoUmVuZGVyYnVmZmVyKSxvPW0odC5kZXB0aFN0ZW5jaWxUZXh0dXJlKXx8bSh0LmRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcik7aWYocyYmbyl0aHJvdyBuZXcgWSgiQ2Fubm90IGhhdmUgYm90aCBhIGRlcHRoIGFuZCBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnQuIik7aWYobSh0LnN0ZW5jaWxSZW5kZXJidWZmZXIpJiZvKXRocm93IG5ldyBZKCJDYW5ub3QgaGF2ZSBib3RoIGEgc3RlbmNpbCBhbmQgZGVwdGgtc3RlbmNpbCBhdHRhY2htZW50LiIpO2lmKHMmJm0odC5zdGVuY2lsUmVuZGVyYnVmZmVyKSl0aHJvdyBuZXcgWSgiQ2Fubm90IGhhdmUgYm90aCBhIGRlcHRoIGFuZCBzdGVuY2lsIGF0dGFjaG1lbnQuIik7dGhpcy5fYmluZCgpO2xldCByLGEsaCxBLGQ7aWYobSh0LmNvbG9yVGV4dHVyZXMpKXtsZXQgZj10LmNvbG9yVGV4dHVyZXM7aWYoQT10aGlzLl9jb2xvclRleHR1cmVzLmxlbmd0aD10aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzLmxlbmd0aD1mLmxlbmd0aCxBPm4pdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgZXhjZWVkcyB0aGUgbnVtYmVyIHN1cHBvcnRlZC4iKTtmb3IoaD0wO2g8QTsrK2gpe2lmKHI9ZltoXSwhSWUuaXNDb2xvckZvcm1hdChyLnBpeGVsRm9ybWF0KSl0aHJvdyBuZXcgWSgiVGhlIGNvbG9yLXRleHR1cmUgcGl4ZWwtZm9ybWF0IG11c3QgYmUgYSBjb2xvciBmb3JtYXQuIik7aWYoci5waXhlbERhdGF0eXBlPT09Z2UuRkxPQVQmJiFlLmNvbG9yQnVmZmVyRmxvYXQpdGhyb3cgbmV3IFkoIlRoZSBjb2xvciB0ZXh0dXJlIHBpeGVsIGRhdGF0eXBlIGlzIEZMT0FUIGFuZCB0aGUgV2ViR0wgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCB0aGUgRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCBvciBXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQgZXh0ZW5zaW9ucy4gU2VlIENvbnRleHQuY29sb3JCdWZmZXJGbG9hdC4iKTtpZihyLnBpeGVsRGF0YXR5cGU9PT1nZS5IQUxGX0ZMT0FUJiYhZS5jb2xvckJ1ZmZlckhhbGZGbG9hdCl0aHJvdyBuZXcgWSgiVGhlIGNvbG9yIHRleHR1cmUgcGl4ZWwgZGF0YXR5cGUgaXMgSEFMRl9GTE9BVCBhbmQgdGhlIFdlYkdMIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIEVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCBleHRlbnNpb24uIFNlZSBDb250ZXh0LmNvbG9yQnVmZmVySGFsZkZsb2F0LiIpO2Q9dGhpcy5fZ2wuQ09MT1JfQVRUQUNITUVOVDAraCxXVCh0aGlzLGQsciksdGhpcy5fYWN0aXZlQ29sb3JBdHRhY2htZW50c1toXT1kLHRoaXMuX2NvbG9yVGV4dHVyZXNbaF09cn19aWYobSh0LmNvbG9yUmVuZGVyYnVmZmVycykpe2xldCBmPXQuY29sb3JSZW5kZXJidWZmZXJzO2lmKEE9dGhpcy5fY29sb3JSZW5kZXJidWZmZXJzLmxlbmd0aD10aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzLmxlbmd0aD1mLmxlbmd0aCxBPm4pdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgY29sb3IgYXR0YWNobWVudHMgZXhjZWVkcyB0aGUgbnVtYmVyIHN1cHBvcnRlZC4iKTtmb3IoaD0wO2g8QTsrK2gpYT1mW2hdLGQ9dGhpcy5fZ2wuQ09MT1JfQVRUQUNITUVOVDAraCxSSSh0aGlzLGQsYSksdGhpcy5fYWN0aXZlQ29sb3JBdHRhY2htZW50c1toXT1kLHRoaXMuX2NvbG9yUmVuZGVyYnVmZmVyc1toXT1hfWlmKG0odC5kZXB0aFRleHR1cmUpKXtpZihyPXQuZGVwdGhUZXh0dXJlLHIucGl4ZWxGb3JtYXQhPT1JZS5ERVBUSF9DT01QT05FTlQpdGhyb3cgbmV3IFkoIlRoZSBkZXB0aC10ZXh0dXJlIHBpeGVsLWZvcm1hdCBtdXN0IGJlIERFUFRIX0NPTVBPTkVOVC4iKTtXVCh0aGlzLHRoaXMuX2dsLkRFUFRIX0FUVEFDSE1FTlQsciksdGhpcy5fZGVwdGhUZXh0dXJlPXJ9aWYobSh0LmRlcHRoUmVuZGVyYnVmZmVyKSYmKGE9dC5kZXB0aFJlbmRlcmJ1ZmZlcixSSSh0aGlzLHRoaXMuX2dsLkRFUFRIX0FUVEFDSE1FTlQsYSksdGhpcy5fZGVwdGhSZW5kZXJidWZmZXI9YSksbSh0LnN0ZW5jaWxSZW5kZXJidWZmZXIpJiYoYT10LnN0ZW5jaWxSZW5kZXJidWZmZXIsUkkodGhpcyx0aGlzLl9nbC5TVEVOQ0lMX0FUVEFDSE1FTlQsYSksdGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlcj1hKSxtKHQuZGVwdGhTdGVuY2lsVGV4dHVyZSkpe2lmKHI9dC5kZXB0aFN0ZW5jaWxUZXh0dXJlLHIucGl4ZWxGb3JtYXQhPT1JZS5ERVBUSF9TVEVOQ0lMKXRocm93IG5ldyBZKCJUaGUgZGVwdGgtc3RlbmNpbCBwaXhlbC1mb3JtYXQgbXVzdCBiZSBERVBUSF9TVEVOQ0lMLiIpO1dUKHRoaXMsdGhpcy5fZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULHIpLHRoaXMuX2RlcHRoU3RlbmNpbFRleHR1cmU9cn1tKHQuZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKSYmKGE9dC5kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIsUkkodGhpcyx0aGlzLl9nbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsYSksdGhpcy5fZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyPWEpLHRoaXMuX3VuQmluZCgpfXZhciB3TCx4TD1TKCgpPT57YWUoKTtGdCgpO210KCk7V3MoKTtPdCgpO19jKCk7Z2EoKTtFYygpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRhLnByb3RvdHlwZSx7c3RhdHVzOntnZXQ6ZnVuY3Rpb24oKXt0aGlzLl9iaW5kKCk7bGV0IHQ9dGhpcy5fZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0aGlzLl9nbC5GUkFNRUJVRkZFUik7cmV0dXJuIHRoaXMuX3VuQmluZCgpLHR9fSxudW1iZXJPZkNvbG9yQXR0YWNobWVudHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzLmxlbmd0aH19LGRlcHRoVGV4dHVyZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlcHRoVGV4dHVyZX19LGRlcHRoUmVuZGVyYnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVwdGhSZW5kZXJidWZmZXJ9fSxzdGVuY2lsUmVuZGVyYnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlcn19LGRlcHRoU3RlbmNpbFRleHR1cmU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlfX0sZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyfX0saGFzRGVwdGhBdHRhY2htZW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLmRlcHRoVGV4dHVyZXx8dGhpcy5kZXB0aFJlbmRlcmJ1ZmZlcnx8dGhpcy5kZXB0aFN0ZW5jaWxUZXh0dXJlfHx0aGlzLmRlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcil9fX0pO1RhLnByb3RvdHlwZS5fYmluZD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuRlJBTUVCVUZGRVIsdGhpcy5fZnJhbWVidWZmZXIpfTtUYS5wcm90b3R5cGUuX3VuQmluZD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuRlJBTUVCVUZGRVIsbnVsbCl9O1RhLnByb3RvdHlwZS5iaW5kRHJhdz1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuRFJBV19GUkFNRUJVRkZFUix0aGlzLl9mcmFtZWJ1ZmZlcil9O1RhLnByb3RvdHlwZS5iaW5kUmVhZD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2dsO3QuYmluZEZyYW1lYnVmZmVyKHQuUkVBRF9GUkFNRUJVRkZFUix0aGlzLl9mcmFtZWJ1ZmZlcil9O1RhLnByb3RvdHlwZS5fZ2V0QWN0aXZlQ29sb3JBdHRhY2htZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmVDb2xvckF0dGFjaG1lbnRzfTtUYS5wcm90b3R5cGUuZ2V0Q29sb3JUZXh0dXJlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHx0PDB8fHQ+PXRoaXMuX2NvbG9yVGV4dHVyZXMubGVuZ3RoKXRocm93IG5ldyBZKCJpbmRleCBpcyByZXF1aXJlZCwgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVybyBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50cy4iKTtyZXR1cm4gdGhpcy5fY29sb3JUZXh0dXJlc1t0XX07VGEucHJvdG90eXBlLmdldENvbG9yUmVuZGVyYnVmZmVyPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHx0PDB8fHQ+PXRoaXMuX2NvbG9yUmVuZGVyYnVmZmVycy5sZW5ndGgpdGhyb3cgbmV3IFkoImluZGV4IGlzIHJlcXVpcmVkLCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvIGFuZCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGNvbG9yIGF0dGFjaG1lbnRzLiIpO3JldHVybiB0aGlzLl9jb2xvclJlbmRlcmJ1ZmZlcnNbdF19O1RhLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtUYS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2lmKHRoaXMuZGVzdHJveUF0dGFjaG1lbnRzKXtsZXQgdD0wLGU9dGhpcy5fY29sb3JUZXh0dXJlcyxpPWUubGVuZ3RoO2Zvcig7dDxpOysrdCl7bGV0IHM9ZVt0XTttKHMpJiZzLmRlc3Ryb3koKX1sZXQgbj10aGlzLl9jb2xvclJlbmRlcmJ1ZmZlcnM7Zm9yKGk9bi5sZW5ndGgsdD0wO3Q8aTsrK3Qpe2xldCBzPW5bdF07bShzKSYmcy5kZXN0cm95KCl9dGhpcy5fZGVwdGhUZXh0dXJlPXRoaXMuX2RlcHRoVGV4dHVyZSYmdGhpcy5fZGVwdGhUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLl9kZXB0aFJlbmRlcmJ1ZmZlcj10aGlzLl9kZXB0aFJlbmRlcmJ1ZmZlciYmdGhpcy5fZGVwdGhSZW5kZXJidWZmZXIuZGVzdHJveSgpLHRoaXMuX3N0ZW5jaWxSZW5kZXJidWZmZXI9dGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlciYmdGhpcy5fc3RlbmNpbFJlbmRlcmJ1ZmZlci5kZXN0cm95KCksdGhpcy5fZGVwdGhTdGVuY2lsVGV4dHVyZT10aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlJiZ0aGlzLl9kZXB0aFN0ZW5jaWxUZXh0dXJlLmRlc3Ryb3koKSx0aGlzLl9kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXI9dGhpcy5fZGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyJiZ0aGlzLl9kZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIuZGVzdHJveSgpfXJldHVybiB0aGlzLl9nbC5kZWxldGVGcmFtZWJ1ZmZlcih0aGlzLl9mcmFtZWJ1ZmZlciksbGkodGhpcyl9O3dMPVRhfSk7dmFyIFpJLExtLERUPVMoKCk9PntzcygpO1pJPXtET05UX0NBUkU6aXQuRE9OVF9DQVJFLEZBU1RFU1Q6aXQuRkFTVEVTVCxOSUNFU1Q6aXQuTklDRVNULHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0PT09WkkuRE9OVF9DQVJFfHx0PT09WkkuRkFTVEVTVHx8dD09PVpJLk5JQ0VTVH19LExtPU9iamVjdC5mcmVlemUoWkkpfSk7dmFyIElJLE5hLE5FPVMoKCk9PntzcygpO0lJPXtORUFSRVNUOml0Lk5FQVJFU1QsTElORUFSOml0LkxJTkVBUn07SUkudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1JSS5ORUFSRVNUfHx0PT09SUkuTElORUFSfTtOYT1PYmplY3QuZnJlZXplKElJKX0pO3ZhciBSYyxfcyxGRT1TKCgpPT57c3MoKTtSYz17TkVBUkVTVDppdC5ORUFSRVNULExJTkVBUjppdC5MSU5FQVIsTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDppdC5ORUFSRVNUX01JUE1BUF9ORUFSRVNULExJTkVBUl9NSVBNQVBfTkVBUkVTVDppdC5MSU5FQVJfTUlQTUFQX05FQVJFU1QsTkVBUkVTVF9NSVBNQVBfTElORUFSOml0Lk5FQVJFU1RfTUlQTUFQX0xJTkVBUixMSU5FQVJfTUlQTUFQX0xJTkVBUjppdC5MSU5FQVJfTUlQTUFQX0xJTkVBUn07UmMudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1SYy5ORUFSRVNUfHx0PT09UmMuTElORUFSfHx0PT09UmMuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVHx8dD09PVJjLkxJTkVBUl9NSVBNQVBfTkVBUkVTVHx8dD09PVJjLk5FQVJFU1RfTUlQTUFQX0xJTkVBUnx8dD09PVJjLkxJTkVBUl9NSVBNQVBfTElORUFSfTtfcz1PYmplY3QuZnJlZXplKFJjKX0pO3ZhciBwSSxWbCxQTD1TKCgpPT57c3MoKTtwST17Q0xBTVBfVE9fRURHRTppdC5DTEFNUF9UT19FREdFLFJFUEVBVDppdC5SRVBFQVQsTUlSUk9SRURfUkVQRUFUOml0Lk1JUlJPUkVEX1JFUEVBVCx2YWxpZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PXBJLkNMQU1QX1RPX0VER0V8fHQ9PT1wSS5SRVBFQVR8fHQ9PT1wSS5NSVJST1JFRF9SRVBFQVR9fSxWbD1PYmplY3QuZnJlZXplKHBJKX0pO2Z1bmN0aW9uIGJFKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQud3JhcFMsVmwuQ0xBTVBfVE9fRURHRSksaT1aKHQud3JhcFQsVmwuQ0xBTVBfVE9fRURHRSksbj1aKHQubWluaWZpY2F0aW9uRmlsdGVyLF9zLkxJTkVBUikscz1aKHQubWFnbmlmaWNhdGlvbkZpbHRlcixOYS5MSU5FQVIpLG89bSh0Lm1heGltdW1Bbmlzb3Ryb3B5KT90Lm1heGltdW1Bbmlzb3Ryb3B5OjE7aWYoIVZsLnZhbGlkYXRlKGUpKXRocm93IG5ldyBZKCJJbnZhbGlkIHNhbXBsZXIud3JhcFMuIik7aWYoIVZsLnZhbGlkYXRlKGkpKXRocm93IG5ldyBZKCJJbnZhbGlkIHNhbXBsZXIud3JhcFQuIik7aWYoIV9zLnZhbGlkYXRlKG4pKXRocm93IG5ldyBZKCJJbnZhbGlkIHNhbXBsZXIubWluaWZpY2F0aW9uRmlsdGVyLiIpO2lmKCFOYS52YWxpZGF0ZShzKSl0aHJvdyBuZXcgWSgiSW52YWxpZCBzYW1wbGVyLm1hZ25pZmljYXRpb25GaWx0ZXIuIik7cC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1heGltdW1Bbmlzb3Ryb3B5IixvLDEpLHRoaXMuX3dyYXBTPWUsdGhpcy5fd3JhcFQ9aSx0aGlzLl9taW5pZmljYXRpb25GaWx0ZXI9bix0aGlzLl9tYWduaWZpY2F0aW9uRmlsdGVyPXMsdGhpcy5fbWF4aW11bUFuaXNvdHJvcHk9b312YXIgWkEsWUU9UygoKT0+e2FlKCk7RnQoKTttdCgpO090KCk7TkUoKTtGRSgpO1BMKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYkUucHJvdG90eXBlLHt3cmFwUzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyYXBTfX0sd3JhcFQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cmFwVH19LG1pbmlmaWNhdGlvbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21pbmlmaWNhdGlvbkZpbHRlcn19LG1hZ25pZmljYXRpb25GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYWduaWZpY2F0aW9uRmlsdGVyfX0sbWF4aW11bUFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhpbXVtQW5pc290cm9weX19fSk7YkUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Ll93cmFwUz09PWUuX3dyYXBTJiZ0Ll93cmFwVD09PWUuX3dyYXBUJiZ0Ll9taW5pZmljYXRpb25GaWx0ZXI9PT1lLl9taW5pZmljYXRpb25GaWx0ZXImJnQuX21hZ25pZmljYXRpb25GaWx0ZXI9PT1lLl9tYWduaWZpY2F0aW9uRmlsdGVyJiZ0Ll9tYXhpbXVtQW5pc290cm9weT09PWUuX21heGltdW1Bbmlzb3Ryb3B5fTtiRS5ORUFSRVNUPU9iamVjdC5mcmVlemUobmV3IGJFKHt3cmFwUzpWbC5DTEFNUF9UT19FREdFLHdyYXBUOlZsLkNMQU1QX1RPX0VER0UsbWluaWZpY2F0aW9uRmlsdGVyOl9zLk5FQVJFU1QsbWFnbmlmaWNhdGlvbkZpbHRlcjpOYS5ORUFSRVNUfSkpO1pBPWJFfSk7ZnVuY3Rpb24gRmEodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHAuZGVmaW5lZCgib3B0aW9ucy5jb250ZXh0Iix0LmNvbnRleHQpO2xldCBlPXQuY29udGV4dCxpPXQud2lkdGgsbj10LmhlaWdodCxzPXQuc291cmNlO20ocykmJihtKGkpfHwoaT1aKHMudmlkZW9XaWR0aCxzLndpZHRoKSksbShuKXx8KG49WihzLnZpZGVvSGVpZ2h0LHMuaGVpZ2h0KSkpO2xldCBvPVoodC5waXhlbEZvcm1hdCxJZS5SR0JBKSxyPVoodC5waXhlbERhdGF0eXBlLGdlLlVOU0lHTkVEX0JZVEUpLGE9SWUudG9JbnRlcm5hbEZvcm1hdChvLHIsZSksaD1JZS5pc0NvbXByZXNzZWRGb3JtYXQoYSk7aWYoIW0oaSl8fCFtKG4pKXRocm93IG5ldyBZKCJvcHRpb25zIHJlcXVpcmVzIGEgc291cmNlIGZpZWxkIHRvIGNyZWF0ZSBhbiBpbml0aWFsaXplZCB0ZXh0dXJlIG9yIHdpZHRoIGFuZCBoZWlnaHQgZmllbGRzIHRvIGNyZWF0ZSBhIGJsYW5rIHRleHR1cmUuIik7aWYocC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJ3aWR0aCIsaSwwKSxpPmVuLm1heGltdW1UZXh0dXJlU2l6ZSl0aHJvdyBuZXcgWShgV2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gdGV4dHVyZSBzaXplICgke2VuLm1heGltdW1UZXh0dXJlU2l6ZX0pLiAgQ2hlY2sgbWF4aW11bVRleHR1cmVTaXplLmApO2lmKHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiaGVpZ2h0IixuLDApLG4+ZW4ubWF4aW11bVRleHR1cmVTaXplKXRocm93IG5ldyBZKGBIZWlnaHQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gdGV4dHVyZSBzaXplICgke2VuLm1heGltdW1UZXh0dXJlU2l6ZX0pLiAgQ2hlY2sgbWF4aW11bVRleHR1cmVTaXplLmApO2lmKCFJZS52YWxpZGF0ZShvKSl0aHJvdyBuZXcgWSgiSW52YWxpZCBvcHRpb25zLnBpeGVsRm9ybWF0LiIpO2lmKCFoJiYhZ2UudmFsaWRhdGUocikpdGhyb3cgbmV3IFkoIkludmFsaWQgb3B0aW9ucy5waXhlbERhdGF0eXBlLiIpO2lmKG89PT1JZS5ERVBUSF9DT01QT05FTlQmJnIhPT1nZS5VTlNJR05FRF9TSE9SVCYmciE9PWdlLlVOU0lHTkVEX0lOVCl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRm9ybWF0IGlzIERFUFRIX0NPTVBPTkVOVCwgb3B0aW9ucy5waXhlbERhdGF0eXBlIG11c3QgYmUgVU5TSUdORURfU0hPUlQgb3IgVU5TSUdORURfSU5ULiIpO2lmKG89PT1JZS5ERVBUSF9TVEVOQ0lMJiZyIT09Z2UuVU5TSUdORURfSU5UXzI0XzgpdGhyb3cgbmV3IFkoIldoZW4gb3B0aW9ucy5waXhlbEZvcm1hdCBpcyBERVBUSF9TVEVOQ0lMLCBvcHRpb25zLnBpeGVsRGF0YXR5cGUgbXVzdCBiZSBVTlNJR05FRF9JTlRfMjRfOC4iKTtpZihyPT09Z2UuRkxPQVQmJiFlLmZsb2F0aW5nUG9pbnRUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxEYXRhdHlwZSBpcyBGTE9BVCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbi4gIENoZWNrIGNvbnRleHQuZmxvYXRpbmdQb2ludFRleHR1cmUuIik7aWYocj09PWdlLkhBTEZfRkxPQVQmJiFlLmhhbGZGbG9hdGluZ1BvaW50VGV4dHVyZSl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRGF0YXR5cGUgaXMgSEFMRl9GTE9BVCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgZXh0ZW5zaW9uLiBDaGVjayBjb250ZXh0LmhhbGZGbG9hdGluZ1BvaW50VGV4dHVyZS4iKTtpZihJZS5pc0RlcHRoRm9ybWF0KG8pKXtpZihtKHMpKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwsIHNvdXJjZSBjYW5ub3QgYmUgcHJvdmlkZWQuIik7aWYoIWUuZGVwdGhUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwsIHRoaXMgV2ViR0wgaW1wbGVtZW50YXRpb24gbXVzdCBzdXBwb3J0IFdFQkdMX2RlcHRoX3RleHR1cmUuICBDaGVjayBjb250ZXh0LmRlcHRoVGV4dHVyZS4iKX1pZihoKXtpZighbShzKXx8IW0ocy5hcnJheUJ1ZmZlclZpZXcpKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgY29tcHJlc3NlZCwgb3B0aW9ucy5zb3VyY2UuYXJyYXlCdWZmZXJWaWV3IG11c3QgYmUgZGVmaW5lZC4iKTtpZihJZS5pc0RYVEZvcm1hdChhKSYmIWUuczN0Yyl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRm9ybWF0IGlzIFMzVEMgY29tcHJlc3NlZCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIGV4dGVuc2lvbi4gQ2hlY2sgY29udGV4dC5zM3RjLiIpO2lmKEllLmlzUFZSVENGb3JtYXQoYSkmJiFlLnB2cnRjKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgUFZSVEMgY29tcHJlc3NlZCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIFdFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyBleHRlbnNpb24uIENoZWNrIGNvbnRleHQucHZydGMuIik7aWYoSWUuaXNBU1RDRm9ybWF0KGEpJiYhZS5hc3RjKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgQVNUQyBjb21wcmVzc2VkLCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMgZXh0ZW5zaW9uLiBDaGVjayBjb250ZXh0LmFzdGMuIik7aWYoSWUuaXNFVEMyRm9ybWF0KGEpJiYhZS5ldGMpdGhyb3cgbmV3IFkoIldoZW4gb3B0aW9ucy5waXhlbEZvcm1hdCBpcyBFVEMyIGNvbXByZXNzZWQsIHRoaXMgV2ViR0wgaW1wbGVtZW50YXRpb24gbXVzdCBzdXBwb3J0IHRoZSBXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIGV4dGVuc2lvbi4gQ2hlY2sgY29udGV4dC5ldGMuIik7aWYoSWUuaXNFVEMxRm9ybWF0KGEpJiYhZS5ldGMxKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxGb3JtYXQgaXMgRVRDMSBjb21wcmVzc2VkLCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEgZXh0ZW5zaW9uLiBDaGVjayBjb250ZXh0LmV0YzEuIik7aWYoSWUuaXNCQzdGb3JtYXQoYSkmJiFlLmJjNyl0aHJvdyBuZXcgWSgiV2hlbiBvcHRpb25zLnBpeGVsRm9ybWF0IGlzIEJDNyBjb21wcmVzc2VkLCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyBleHRlbnNpb24uIENoZWNrIGNvbnRleHQuYmM3LiIpO2lmKEllLmNvbXByZXNzZWRUZXh0dXJlU2l6ZUluQnl0ZXMoYSxpLG4pIT09cy5hcnJheUJ1ZmZlclZpZXcuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgWSgiVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBidWZmZXIgaXMgaW52YWxpZCBmb3IgdGhlIGNvbXByZXNzZWQgdGV4dHVyZSB3aXRoIHRoZSBnaXZlbiB3aWR0aCBhbmQgaGVpZ2h0LiIpfWxldCBBPXQucHJlTXVsdGlwbHlBbHBoYXx8bz09PUllLlJHQnx8bz09PUllLkxVTUlOQU5DRSxkPVoodC5mbGlwWSwhMCksZj1aKHQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uLCExKSxFPSEwLF89ZS5fZ2wsUj1fLlRFWFRVUkVfMkQsST1fLmNyZWF0ZVRleHR1cmUoKTtfLmFjdGl2ZVRleHR1cmUoXy5URVhUVVJFMCksXy5iaW5kVGV4dHVyZShSLEkpO2xldCBDPTQ7aWYobShzKSYmbShzLmFycmF5QnVmZmVyVmlldykmJiFoJiYoQz1JZS5hbGlnbm1lbnRJbkJ5dGVzKG8scixpKSksXy5waXhlbFN0b3JlaShfLlVOUEFDS19BTElHTk1FTlQsQyksZj9fLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxfLk5PTkUpOl8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLF8uQlJPV1NFUl9ERUZBVUxUX1dFQkdMKSxtKHMpKWlmKG0ocy5hcnJheUJ1ZmZlclZpZXcpKXtfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSk7bGV0IFQ9cy5hcnJheUJ1ZmZlclZpZXcsYixGLEI7aWYoaCl7aWYoXy5jb21wcmVzc2VkVGV4SW1hZ2UyRChSLDAsYSxpLG4sMCxUKSxtKHMubWlwTGV2ZWxzKSlmb3IoRj1pLEI9bixiPTA7YjxzLm1pcExldmVscy5sZW5ndGg7KytiKUY9TWF0aC5mbG9vcihGLzIpfDAsRjwxJiYoRj0xKSxCPU1hdGguZmxvb3IoQi8yKXwwLEI8MSYmKEI9MSksXy5jb21wcmVzc2VkVGV4SW1hZ2UyRChSLGIrMSxhLEYsQiwwLHMubWlwTGV2ZWxzW2JdKX1lbHNlIGlmKGQmJihUPUllLmZsaXBZKFQsbyxyLGksbikpLF8udGV4SW1hZ2UyRChSLDAsYSxpLG4sMCxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLFQpLG0ocy5taXBMZXZlbHMpKWZvcihGPWksQj1uLGI9MDtiPHMubWlwTGV2ZWxzLmxlbmd0aDsrK2IpRj1NYXRoLmZsb29yKEYvMil8MCxGPDEmJihGPTEpLEI9TWF0aC5mbG9vcihCLzIpfDAsQjwxJiYoQj0xKSxfLnRleEltYWdlMkQoUixiKzEsYSxGLEIsMCxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLHMubWlwTGV2ZWxzW2JdKX1lbHNlIG0ocy5mcmFtZWJ1ZmZlcik/KF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsITEpLF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCExKSxzLmZyYW1lYnVmZmVyIT09ZS5kZWZhdWx0RnJhbWVidWZmZXImJnMuZnJhbWVidWZmZXIuX2JpbmQoKSxfLmNvcHlUZXhJbWFnZTJEKFIsMCxhLHMueE9mZnNldCxzLnlPZmZzZXQsaSxuLDApLHMuZnJhbWVidWZmZXIhPT1lLmRlZmF1bHRGcmFtZWJ1ZmZlciYmcy5mcmFtZWJ1ZmZlci5fdW5CaW5kKCkpOihfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLEEpLF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLGQpLF8udGV4SW1hZ2UyRChSLDAsYSxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLHMpKTtlbHNlIF8udGV4SW1hZ2UyRChSLDAsYSxpLG4sMCxvLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLG51bGwpLEU9ITE7Xy5iaW5kVGV4dHVyZShSLG51bGwpO2xldCBOO2g/Tj1JZS5jb21wcmVzc2VkVGV4dHVyZVNpemVJbkJ5dGVzKG8saSxuKTpOPUllLnRleHR1cmVTaXplSW5CeXRlcyhvLHIsaSxuKSx0aGlzLl9pZD1CcygpLHRoaXMuX2NvbnRleHQ9ZSx0aGlzLl90ZXh0dXJlRmlsdGVyQW5pc290cm9waWM9ZS5fdGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLHRoaXMuX3RleHR1cmVUYXJnZXQ9Uix0aGlzLl90ZXh0dXJlPUksdGhpcy5faW50ZXJuYWxGb3JtYXQ9YSx0aGlzLl9waXhlbEZvcm1hdD1vLHRoaXMuX3BpeGVsRGF0YXR5cGU9cix0aGlzLl93aWR0aD1pLHRoaXMuX2hlaWdodD1uLHRoaXMuX2RpbWVuc2lvbnM9bmV3IG50KGksbiksdGhpcy5faGFzTWlwbWFwPSExLHRoaXMuX3NpemVJbkJ5dGVzPU4sdGhpcy5fcHJlTXVsdGlwbHlBbHBoYT1BLHRoaXMuX2ZsaXBZPWQsdGhpcy5faW5pdGlhbGl6ZWQ9RSx0aGlzLl9zYW1wbGVyPXZvaWQgMCx0aGlzLnNhbXBsZXI9bSh0LnNhbXBsZXIpP3Quc2FtcGxlcjpuZXcgWkF9dmFyIGJhLHVJPVMoKCk9PntYZSgpO2FlKCk7aWgoKTtGdCgpO210KCk7V3MoKTtPdCgpO19lKCk7X2MoKTtnYSgpO0RUKCk7RWMoKTtZRSgpO05FKCk7RkUoKTtGYS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBGYSh0KX07RmEuZnJvbUZyYW1lYnVmZmVyPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSxwLmRlZmluZWQoIm9wdGlvbnMuY29udGV4dCIsdC5jb250ZXh0KTtsZXQgZT10LmNvbnRleHQsaT1lLl9nbCxuPVoodC5waXhlbEZvcm1hdCxJZS5SR0IpLHM9Wih0LmZyYW1lYnVmZmVyWE9mZnNldCwwKSxvPVoodC5mcmFtZWJ1ZmZlcllPZmZzZXQsMCkscj1aKHQud2lkdGgsaS5kcmF3aW5nQnVmZmVyV2lkdGgpLGE9Wih0LmhlaWdodCxpLmRyYXdpbmdCdWZmZXJIZWlnaHQpLGg9dC5mcmFtZWJ1ZmZlcjtpZighSWUudmFsaWRhdGUobikpdGhyb3cgbmV3IFkoIkludmFsaWQgcGl4ZWxGb3JtYXQuIik7aWYoSWUuaXNEZXB0aEZvcm1hdChuKXx8SWUuaXNDb21wcmVzc2VkRm9ybWF0KG4pKXRocm93IG5ldyBZKCJwaXhlbEZvcm1hdCBjYW5ub3QgYmUgREVQVEhfQ09NUE9ORU5ULCBERVBUSF9TVEVOQ0lMIG9yIGEgY29tcHJlc3NlZCBmb3JtYXQuIik7aWYocC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImZyYW1lYnVmZmVyWE9mZnNldCIscywwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZnJhbWVidWZmZXJZT2Zmc2V0IixvLDApLHMrcj5pLmRyYXdpbmdCdWZmZXJXaWR0aCl0aHJvdyBuZXcgWSgiZnJhbWVidWZmZXJYT2Zmc2V0ICsgd2lkdGggbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gZHJhd2luZ0J1ZmZlcldpZHRoIik7aWYobythPmkuZHJhd2luZ0J1ZmZlckhlaWdodCl0aHJvdyBuZXcgWSgiZnJhbWVidWZmZXJZT2Zmc2V0ICsgaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGRyYXdpbmdCdWZmZXJIZWlnaHQuIik7cmV0dXJuIG5ldyBGYSh7Y29udGV4dDplLHdpZHRoOnIsaGVpZ2h0OmEscGl4ZWxGb3JtYXQ6bixzb3VyY2U6e2ZyYW1lYnVmZmVyOm0oaCk/aDplLmRlZmF1bHRGcmFtZWJ1ZmZlcix4T2Zmc2V0OnMseU9mZnNldDpvLHdpZHRoOnIsaGVpZ2h0OmF9fSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZhLnByb3RvdHlwZSx7aWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pZH19LHNhbXBsZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zYW1wbGVyfSxzZXQ6ZnVuY3Rpb24odCl7bGV0IGU9dC5taW5pZmljYXRpb25GaWx0ZXIsaT10Lm1hZ25pZmljYXRpb25GaWx0ZXIsbj10aGlzLl9jb250ZXh0LHM9dGhpcy5fcGl4ZWxGb3JtYXQsbz10aGlzLl9waXhlbERhdGF0eXBlLHI9ZT09PV9zLk5FQVJFU1RfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5ORUFSRVNUX01JUE1BUF9MSU5FQVJ8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX0xJTkVBUjsobz09PWdlLkZMT0FUJiYhbi50ZXh0dXJlRmxvYXRMaW5lYXJ8fG89PT1nZS5IQUxGX0ZMT0FUJiYhbi50ZXh0dXJlSGFsZkZsb2F0TGluZWFyKSYmKGU9cj9fcy5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOl9zLk5FQVJFU1QsaT1OYS5ORUFSRVNUKSxuLndlYmdsMiYmSWUuaXNEZXB0aEZvcm1hdChzKSYmKGU9X3MuTkVBUkVTVCxpPU5hLk5FQVJFU1QpO2xldCBhPW4uX2dsLGg9dGhpcy5fdGV4dHVyZVRhcmdldDthLmFjdGl2ZVRleHR1cmUoYS5URVhUVVJFMCksYS5iaW5kVGV4dHVyZShoLHRoaXMuX3RleHR1cmUpLGEudGV4UGFyYW1ldGVyaShoLGEuVEVYVFVSRV9NSU5fRklMVEVSLGUpLGEudGV4UGFyYW1ldGVyaShoLGEuVEVYVFVSRV9NQUdfRklMVEVSLGkpLGEudGV4UGFyYW1ldGVyaShoLGEuVEVYVFVSRV9XUkFQX1MsdC53cmFwUyksYS50ZXhQYXJhbWV0ZXJpKGgsYS5URVhUVVJFX1dSQVBfVCx0LndyYXBUKSxtKHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykmJmEudGV4UGFyYW1ldGVyaShoLHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCx0Lm1heGltdW1Bbmlzb3Ryb3B5KSxhLmJpbmRUZXh0dXJlKGgsbnVsbCksdGhpcy5fc2FtcGxlcj10fX0scGl4ZWxGb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbEZvcm1hdH19LHBpeGVsRGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbERhdGF0eXBlfX0sZGltZW5zaW9uczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpbWVuc2lvbnN9fSxwcmVNdWx0aXBseUFscGhhOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJlTXVsdGlwbHlBbHBoYX19LGZsaXBZOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmxpcFl9fSx3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpZHRofX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0fX0sc2l6ZUluQnl0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oYXNNaXBtYXA/TWF0aC5mbG9vcih0aGlzLl9zaXplSW5CeXRlcyo0LzMpOnRoaXMuX3NpemVJbkJ5dGVzfX0sX3RhcmdldDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVUYXJnZXR9fX0pO0ZhLnByb3RvdHlwZS5jb3B5RnJvbT1mdW5jdGlvbih0KXtwLmRlZmluZWQoIm9wdGlvbnMiLHQpO2xldCBlPVoodC54T2Zmc2V0LDApLGk9Wih0LnlPZmZzZXQsMCk7aWYocC5kZWZpbmVkKCJvcHRpb25zLnNvdXJjZSIsdC5zb3VyY2UpLEllLmlzRGVwdGhGb3JtYXQodGhpcy5fcGl4ZWxGb3JtYXQpKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbSB3aGVuIHRoZSB0ZXh0dXJlIHBpeGVsIGZvcm1hdCBpcyBERVBUSF9DT01QT05FTlQgb3IgREVQVEhfU1RFTkNJTC4iKTtpZihJZS5pc0NvbXByZXNzZWRGb3JtYXQodGhpcy5fcGl4ZWxGb3JtYXQpKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbSB3aXRoIGEgY29tcHJlc3NlZCB0ZXh0dXJlIHBpeGVsIGZvcm1hdC4iKTtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieE9mZnNldCIsZSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieU9mZnNldCIsaSwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygieE9mZnNldCArIG9wdGlvbnMuc291cmNlLndpZHRoIixlK3Quc291cmNlLndpZHRoLHRoaXMuX3dpZHRoKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygieU9mZnNldCArIG9wdGlvbnMuc291cmNlLmhlaWdodCIsaSt0LnNvdXJjZS5oZWlnaHQsdGhpcy5faGVpZ2h0KTtsZXQgbj10LnNvdXJjZSxzPXRoaXMuX2NvbnRleHQsbz1zLl9nbCxyPXRoaXMuX3RleHR1cmVUYXJnZXQ7by5hY3RpdmVUZXh0dXJlKG8uVEVYVFVSRTApLG8uYmluZFRleHR1cmUocix0aGlzLl90ZXh0dXJlKTtsZXQgYT1uLndpZHRoLGg9bi5oZWlnaHQsQT1uLmFycmF5QnVmZmVyVmlldyxkPXRoaXMuX3dpZHRoLGY9dGhpcy5faGVpZ2h0LEU9dGhpcy5faW50ZXJuYWxGb3JtYXQsXz10aGlzLl9waXhlbEZvcm1hdCxSPXRoaXMuX3BpeGVsRGF0YXR5cGUsST10aGlzLl9wcmVNdWx0aXBseUFscGhhLEM9dGhpcy5fZmxpcFksTj1aKHQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uLCExKSxUPTQ7bShBKSYmKFQ9SWUuYWxpZ25tZW50SW5CeXRlcyhfLFIsYSkpLG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfQUxJR05NRU5ULFQpLE4/by5waXhlbFN0b3JlaShvLlVOUEFDS19DT0xPUlNQQUNFX0NPTlZFUlNJT05fV0VCR0wsby5OT05FKTpvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxvLkJST1dTRVJfREVGQVVMVF9XRUJHTCk7bGV0IGI9ITE7aWYoIXRoaXMuX2luaXRpYWxpemVkKXtpZihlPT09MCYmaT09PTAmJmE9PT1kJiZoPT09ZiltKEEpPyhvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSksQyYmKEE9SWUuZmxpcFkoQSxfLFIsZCxmKSksby50ZXhJbWFnZTJEKHIsMCxFLGQsZiwwLF8sZ2UudG9XZWJHTENvbnN0YW50KFIscyksQSkpOihvLnBpeGVsU3RvcmVpKG8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLEkpLG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfRkxJUF9ZX1dFQkdMLEMpLG8udGV4SW1hZ2UyRChyLDAsRSxfLGdlLnRvV2ViR0xDb25zdGFudChSLHMpLG4pKSxiPSEwO2Vsc2V7by5waXhlbFN0b3JlaShvLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwhMSksby5waXhlbFN0b3JlaShvLlVOUEFDS19GTElQX1lfV0VCR0wsITEpO2xldCBGPUllLmNyZWF0ZVR5cGVkQXJyYXkoXyxSLGQsZik7by50ZXhJbWFnZTJEKHIsMCxFLGQsZiwwLF8sZ2UudG9XZWJHTENvbnN0YW50KFIscyksRil9dGhpcy5faW5pdGlhbGl6ZWQ9ITB9Ynx8KG0oQSk/KG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsITEpLG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCExKSxDJiYoQT1JZS5mbGlwWShBLF8sUixhLGgpKSxvLnRleFN1YkltYWdlMkQociwwLGUsaSxhLGgsXyxnZS50b1dlYkdMQ29uc3RhbnQoUixzKSxBKSk6KG8ucGl4ZWxTdG9yZWkoby5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsSSksby5waXhlbFN0b3JlaShvLlVOUEFDS19GTElQX1lfV0VCR0wsQyksby50ZXhTdWJJbWFnZTJEKHIsMCxlLGksXyxnZS50b1dlYkdMQ29uc3RhbnQoUixzKSxuKSkpLG8uYmluZFRleHR1cmUocixudWxsKX07RmEucHJvdG90eXBlLmNvcHlGcm9tRnJhbWVidWZmZXI9ZnVuY3Rpb24odCxlLGksbixzLG8pe2lmKHQ9Wih0LDApLGU9WihlLDApLGk9WihpLDApLG49WihuLDApLHM9WihzLHRoaXMuX3dpZHRoKSxvPVoobyx0aGlzLl9oZWlnaHQpLEllLmlzRGVwdGhGb3JtYXQodGhpcy5fcGl4ZWxGb3JtYXQpKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbUZyYW1lYnVmZmVyIHdoZW4gdGhlIHRleHR1cmUgcGl4ZWwgZm9ybWF0IGlzIERFUFRIX0NPTVBPTkVOVCBvciBERVBUSF9TVEVOQ0lMLiIpO2lmKHRoaXMuX3BpeGVsRGF0YXR5cGU9PT1nZS5GTE9BVCl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgY29weUZyb21GcmFtZWJ1ZmZlciB3aGVuIHRoZSB0ZXh0dXJlIHBpeGVsIGRhdGEgdHlwZSBpcyBGTE9BVC4iKTtpZih0aGlzLl9waXhlbERhdGF0eXBlPT09Z2UuSEFMRl9GTE9BVCl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgY29weUZyb21GcmFtZWJ1ZmZlciB3aGVuIHRoZSB0ZXh0dXJlIHBpeGVsIGRhdGEgdHlwZSBpcyBIQUxGX0ZMT0FULiIpO2lmKEllLmlzQ29tcHJlc3NlZEZvcm1hdCh0aGlzLl9waXhlbEZvcm1hdCkpdGhyb3cgbmV3IFkoIkNhbm5vdCBjYWxsIGNvcHlGcm9tIHdpdGggYSBjb21wcmVzc2VkIHRleHR1cmUgcGl4ZWwgZm9ybWF0LiIpO3AudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ4T2Zmc2V0Iix0LDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ5T2Zmc2V0IixlLDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJmcmFtZWJ1ZmZlclhPZmZzZXQiLGksMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImZyYW1lYnVmZmVyWU9mZnNldCIsbiwwKSxwLnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygieE9mZnNldCArIHdpZHRoIix0K3MsdGhpcy5fd2lkdGgpLHAudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ5T2Zmc2V0ICsgaGVpZ2h0IixlK28sdGhpcy5faGVpZ2h0KTtsZXQgcj10aGlzLl9jb250ZXh0Ll9nbCxhPXRoaXMuX3RleHR1cmVUYXJnZXQ7ci5hY3RpdmVUZXh0dXJlKHIuVEVYVFVSRTApLHIuYmluZFRleHR1cmUoYSx0aGlzLl90ZXh0dXJlKSxyLmNvcHlUZXhTdWJJbWFnZTJEKGEsMCx0LGUsaSxuLHMsbyksci5iaW5kVGV4dHVyZShhLG51bGwpLHRoaXMuX2luaXRpYWxpemVkPSEwfTtGYS5wcm90b3R5cGUuZ2VuZXJhdGVNaXBtYXA9ZnVuY3Rpb24odCl7aWYodD1aKHQsTG0uRE9OVF9DQVJFKSxJZS5pc0RlcHRoRm9ybWF0KHRoaXMuX3BpeGVsRm9ybWF0KSl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgZ2VuZXJhdGVNaXBtYXAgd2hlbiB0aGUgdGV4dHVyZSBwaXhlbCBmb3JtYXQgaXMgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwuIik7aWYoSWUuaXNDb21wcmVzc2VkRm9ybWF0KHRoaXMuX3BpeGVsRm9ybWF0KSl0aHJvdyBuZXcgWSgiQ2Fubm90IGNhbGwgZ2VuZXJhdGVNaXBtYXAgd2l0aCBhIGNvbXByZXNzZWQgcGl4ZWwgZm9ybWF0LiIpO2lmKCF0aGlzLl9jb250ZXh0LndlYmdsMil7aWYodGhpcy5fd2lkdGg+MSYmIUwuaXNQb3dlck9mVHdvKHRoaXMuX3dpZHRoKSl0aHJvdyBuZXcgWSgid2lkdGggbXVzdCBiZSBhIHBvd2VyIG9mIHR3byB0byBjYWxsIGdlbmVyYXRlTWlwbWFwKCkgaW4gYSBXZWJHTDEgY29udGV4dC4iKTtpZih0aGlzLl9oZWlnaHQ+MSYmIUwuaXNQb3dlck9mVHdvKHRoaXMuX2hlaWdodCkpdGhyb3cgbmV3IFkoImhlaWdodCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIHRvIGNhbGwgZ2VuZXJhdGVNaXBtYXAoKSBpbiBhIFdlYkdMMSBjb250ZXh0LiIpfWlmKCFMbS52YWxpZGF0ZSh0KSl0aHJvdyBuZXcgWSgiaGludCBpcyBpbnZhbGlkLiIpO3RoaXMuX2hhc01pcG1hcD0hMDtsZXQgZT10aGlzLl9jb250ZXh0Ll9nbCxpPXRoaXMuX3RleHR1cmVUYXJnZXQ7ZS5oaW50KGUuR0VORVJBVEVfTUlQTUFQX0hJTlQsdCksZS5hY3RpdmVUZXh0dXJlKGUuVEVYVFVSRTApLGUuYmluZFRleHR1cmUoaSx0aGlzLl90ZXh0dXJlKSxlLmdlbmVyYXRlTWlwbWFwKGkpLGUuYmluZFRleHR1cmUoaSxudWxsKX07RmEucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O0ZhLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRleHQuX2dsLmRlbGV0ZVRleHR1cmUodGhpcy5fdGV4dHVyZSksbGkodGhpcyl9O2JhPUZhfSk7ZnVuY3Rpb24gY2godCxlLGksbixzKXt0aGlzLmJvdHRvbUxlZnQ9Wih0LG50LlpFUk8pLHRoaXMudG9wUmlnaHQ9WihlLG50LlpFUk8pLHRoaXMuY2hpbGROb2RlMT1pLHRoaXMuY2hpbGROb2RlMj1uLHRoaXMuaW1hZ2VJbmRleD1zfWZ1bmN0aW9uIFpjKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQuYm9yZGVyV2lkdGhJblBpeGVscywxKSxpPVoodC5pbml0aWFsU2l6ZSxRdHQpO2lmKCFtKHQuY29udGV4dCkpdGhyb3cgbmV3IFkoImNvbnRleHQgaXMgcmVxdWlyZWQuIik7aWYoZTwwKXRocm93IG5ldyBZKCJib3JkZXJXaWR0aEluUGl4ZWxzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8uIik7aWYoaS54PDF8fGkueTwxKXRocm93IG5ldyBZKCJpbml0aWFsU2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO3RoaXMuX2NvbnRleHQ9dC5jb250ZXh0LHRoaXMuX3BpeGVsRm9ybWF0PVoodC5waXhlbEZvcm1hdCxJZS5SR0JBKSx0aGlzLl9ib3JkZXJXaWR0aEluUGl4ZWxzPWUsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVzPVtdLHRoaXMuX2d1aWQ9QnMoKSx0aGlzLl9pZEhhc2g9e30sdGhpcy5faW5kZXhIYXNoPXt9LHRoaXMuX2luaXRpYWxTaXplPWksdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24ga3R0KHQsZSl7bGV0IGk9dC5fY29udGV4dCxuPXQubnVtYmVyT2ZJbWFnZXMscz0yLG89dC5fYm9yZGVyV2lkdGhJblBpeGVscztpZihuPjApe2xldCByPXQuX3RleHR1cmUud2lkdGgsYT10Ll90ZXh0dXJlLmhlaWdodCxoPXMqKHIrZS53aWR0aCtvKSxBPXMqKGErZS5oZWlnaHQrbyksZD1yL2gsZj1hL0EsRT1uZXcgY2gobmV3IG50KHIrbyxvKSxuZXcgbnQoaCxhKSksXz1uZXcgY2gobmV3IG50LG5ldyBudChoLGEpLHQuX3Jvb3QsRSksUj1uZXcgY2gobmV3IG50KG8sYStvKSxuZXcgbnQoaCxBKSksST1uZXcgY2gobmV3IG50LG5ldyBudChoLEEpLF8sUik7Zm9yKGxldCBUPTA7VDx0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMubGVuZ3RoO1QrKyl7bGV0IGI9dC5fdGV4dHVyZUNvb3JkaW5hdGVzW1RdO20oYikmJihiLngqPWQsYi55Kj1mLGIud2lkdGgqPWQsYi5oZWlnaHQqPWYpfWxldCBDPW5ldyBiYSh7Y29udGV4dDp0Ll9jb250ZXh0LHdpZHRoOmgsaGVpZ2h0OkEscGl4ZWxGb3JtYXQ6dC5fcGl4ZWxGb3JtYXR9KSxOPW5ldyB3TCh7Y29udGV4dDppLGNvbG9yVGV4dHVyZXM6W3QuX3RleHR1cmVdLGRlc3Ryb3lBdHRhY2htZW50czohMX0pO04uX2JpbmQoKSxDLmNvcHlGcm9tRnJhbWVidWZmZXIoMCwwLDAsMCxoLEEpLE4uX3VuQmluZCgpLE4uZGVzdHJveSgpLHQuX3RleHR1cmU9dC5fdGV4dHVyZSYmdC5fdGV4dHVyZS5kZXN0cm95KCksdC5fdGV4dHVyZT1DLHQuX3Jvb3Q9SX1lbHNle2xldCByPXMqKGUud2lkdGgrMipvKSxhPXMqKGUuaGVpZ2h0KzIqbyk7cjx0Ll9pbml0aWFsU2l6ZS54JiYocj10Ll9pbml0aWFsU2l6ZS54KSxhPHQuX2luaXRpYWxTaXplLnkmJihhPXQuX2luaXRpYWxTaXplLnkpLHQuX3RleHR1cmU9dC5fdGV4dHVyZSYmdC5fdGV4dHVyZS5kZXN0cm95KCksdC5fdGV4dHVyZT1uZXcgYmEoe2NvbnRleHQ6dC5fY29udGV4dCx3aWR0aDpyLGhlaWdodDphLHBpeGVsRm9ybWF0OnQuX3BpeGVsRm9ybWF0fSksdC5fcm9vdD1uZXcgY2gobmV3IG50KG8sbyksbmV3IG50KHIsYSkpfX1mdW5jdGlvbiBDSSh0LGUsaSl7aWYobShlKSl7aWYoIW0oZS5jaGlsZE5vZGUxKSYmIW0oZS5jaGlsZE5vZGUyKSl7aWYobShlLmltYWdlSW5kZXgpKXJldHVybjtsZXQgbj1lLnRvcFJpZ2h0LngtZS5ib3R0b21MZWZ0Lngscz1lLnRvcFJpZ2h0LnktZS5ib3R0b21MZWZ0Lnksbz1uLWkud2lkdGgscj1zLWkuaGVpZ2h0O2lmKG88MHx8cjwwKXJldHVybjtpZihvPT09MCYmcj09PTApcmV0dXJuIGU7aWYobz5yKXtlLmNoaWxkTm9kZTE9bmV3IGNoKG5ldyBudChlLmJvdHRvbUxlZnQueCxlLmJvdHRvbUxlZnQueSksbmV3IG50KGUuYm90dG9tTGVmdC54K2kud2lkdGgsZS50b3BSaWdodC55KSk7bGV0IGE9ZS5ib3R0b21MZWZ0LngraS53aWR0aCt0Ll9ib3JkZXJXaWR0aEluUGl4ZWxzO2E8ZS50b3BSaWdodC54JiYoZS5jaGlsZE5vZGUyPW5ldyBjaChuZXcgbnQoYSxlLmJvdHRvbUxlZnQueSksbmV3IG50KGUudG9wUmlnaHQueCxlLnRvcFJpZ2h0LnkpKSl9ZWxzZXtlLmNoaWxkTm9kZTE9bmV3IGNoKG5ldyBudChlLmJvdHRvbUxlZnQueCxlLmJvdHRvbUxlZnQueSksbmV3IG50KGUudG9wUmlnaHQueCxlLmJvdHRvbUxlZnQueStpLmhlaWdodCkpO2xldCBhPWUuYm90dG9tTGVmdC55K2kuaGVpZ2h0K3QuX2JvcmRlcldpZHRoSW5QaXhlbHM7YTxlLnRvcFJpZ2h0LnkmJihlLmNoaWxkTm9kZTI9bmV3IGNoKG5ldyBudChlLmJvdHRvbUxlZnQueCxhKSxuZXcgbnQoZS50b3BSaWdodC54LGUudG9wUmlnaHQueSkpKX1yZXR1cm4gQ0kodCxlLmNoaWxkTm9kZTEsaSl9cmV0dXJuIENJKHQsZS5jaGlsZE5vZGUxLGkpfHxDSSh0LGUuY2hpbGROb2RlMixpKX19ZnVuY3Rpb24gSkwodCxlLGkpe2xldCBuPUNJKHQsdC5fcm9vdCxlKTtpZihtKG4pKXtuLmltYWdlSW5kZXg9aTtsZXQgcz10Ll90ZXh0dXJlLndpZHRoLG89dC5fdGV4dHVyZS5oZWlnaHQscj1uLnRvcFJpZ2h0Lngtbi5ib3R0b21MZWZ0LngsYT1uLnRvcFJpZ2h0Lnktbi5ib3R0b21MZWZ0LnksaD1uLmJvdHRvbUxlZnQueC9zLEE9bi5ib3R0b21MZWZ0LnkvbyxkPXIvcyxmPWEvbzt0Ll90ZXh0dXJlQ29vcmRpbmF0ZXNbaV09bmV3IG1pKGgsQSxkLGYpLHQuX3RleHR1cmUuY29weUZyb20oe3NvdXJjZTplLHhPZmZzZXQ6bi5ib3R0b21MZWZ0LngseU9mZnNldDpuLmJvdHRvbUxlZnQueX0pfWVsc2Uga3R0KHQsZSksSkwodCxlLGkpO3QuX2d1aWQ9QnMoKX1mdW5jdGlvbiBqTCh0LGUpe2lmKCFtKHQpfHx0LmlzRGVzdHJveWVkKCkpcmV0dXJuLTE7bGV0IGk9dC5udW1iZXJPZkltYWdlcztyZXR1cm4gSkwodCxlLGkpLGl9dmFyIFF0dCxWRSxVVD1TKCgpPT57RXIoKTtYZSgpO2loKCk7RnQoKTttdCgpO1dzKCk7T3QoKTtfYygpO0lhKCk7UHMoKTt4TCgpO3VJKCk7UXR0PW5ldyBudCgxNiwxNik7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWmMucHJvdG90eXBlLHtib3JkZXJXaWR0aEluUGl4ZWxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYm9yZGVyV2lkdGhJblBpeGVsc319LHRleHR1cmVDb29yZGluYXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVDb29yZGluYXRlc319LHRleHR1cmU6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmUpfHwodGhpcy5fdGV4dHVyZT1uZXcgYmEoe2NvbnRleHQ6dGhpcy5fY29udGV4dCx3aWR0aDp0aGlzLl9pbml0aWFsU2l6ZS54LGhlaWdodDp0aGlzLl9pbml0aWFsU2l6ZS55LHBpeGVsRm9ybWF0OnRoaXMuX3BpeGVsRm9ybWF0fSkpLHRoaXMuX3RleHR1cmV9fSxudW1iZXJPZkltYWdlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVDb29yZGluYXRlcy5sZW5ndGh9fSxndWlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ3VpZH19fSk7WmMucHJvdG90eXBlLmdldEltYWdlSW5kZXg9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0aGlzLl9pbmRleEhhc2hbdF19O1pjLnByb3RvdHlwZS5hZGRJbWFnZVN5bmM9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImltYWdlIGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX2luZGV4SGFzaFt0XTtyZXR1cm4gbShpKXx8KGk9akwodGhpcyxlKSx0aGlzLl9pZEhhc2hbdF09UHJvbWlzZS5yZXNvbHZlKGkpLHRoaXMuX2luZGV4SGFzaFt0XT1pKSxpfTtaYy5wcm90b3R5cGUuYWRkSW1hZ2U9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImltYWdlIGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX2lkSGFzaFt0XTtpZihtKGkpKXJldHVybiBpO2lmKHR5cGVvZiBlPT0iZnVuY3Rpb24iKXtpZihlPWUodCksIW0oZSkpdGhyb3cgbmV3IFkoImltYWdlIGlzIHJlcXVpcmVkLiIpfWVsc2UodHlwZW9mIGU9PSJzdHJpbmcifHxlIGluc3RhbmNlb2YgdG4pJiYoZT10bi5jcmVhdGVJZk5lZWRlZChlKS5mZXRjaEltYWdlKCkpO2xldCBuPXRoaXM7cmV0dXJuIGk9UHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oZnVuY3Rpb24ocyl7bGV0IG89akwobixzKTtyZXR1cm4gbi5faW5kZXhIYXNoW3RdPW8sb30pLHRoaXMuX2lkSGFzaFt0XT1pLGl9O1pjLnByb3RvdHlwZS5hZGRTdWJSZWdpb249ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInN1YlJlZ2lvbiBpcyByZXF1aXJlZC4iKTtsZXQgaT10aGlzLl9pZEhhc2hbdF07aWYoIW0oaSkpdGhyb3cgbmV3IGtlKGBpbWFnZSB3aXRoIGlkICIke3R9IiBub3QgZm91bmQgaW4gdGhlIGF0bGFzLmApO2xldCBuPXRoaXM7cmV0dXJuIFByb21pc2UucmVzb2x2ZShpKS50aGVuKGZ1bmN0aW9uKHMpe2lmKHM9PT0tMSlyZXR1cm4tMTtsZXQgbz1uLl90ZXh0dXJlLndpZHRoLHI9bi5fdGV4dHVyZS5oZWlnaHQsYT1uLl90ZXh0dXJlQ29vcmRpbmF0ZXNbc10saD1hLngrZS54L28sQT1hLnkrZS55L3IsZD1lLndpZHRoL28sZj1lLmhlaWdodC9yLEU9bi5fdGV4dHVyZUNvb3JkaW5hdGVzLnB1c2gobmV3IG1pKGgsQSxkLGYpKS0xO3JldHVybiBuLl9pbmRleEhhc2hbdF09RSxuLl9ndWlkPUJzKCksRX0pfTtaYy5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07WmMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGV4dHVyZT10aGlzLl90ZXh0dXJlJiZ0aGlzLl90ZXh0dXJlLmRlc3Ryb3koKSxsaSh0aGlzKX07VkU9WmN9KTtmdW5jdGlvbiBMcih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fc2NlbmU9dC5zY2VuZSx0aGlzLl9iYXRjaFRhYmxlPXQuYmF0Y2hUYWJsZSx0aGlzLl90ZXh0dXJlQXRsYXM9dm9pZCAwLHRoaXMuX3RleHR1cmVBdGxhc0dVSUQ9dm9pZCAwLHRoaXMuX2Rlc3Ryb3lUZXh0dXJlQXRsYXM9ITAsdGhpcy5fc3A9dm9pZCAwLHRoaXMuX3NwVHJhbnNsdWNlbnQ9dm9pZCAwLHRoaXMuX3JzT3BhcXVlPXZvaWQgMCx0aGlzLl9yc1RyYW5zbHVjZW50PXZvaWQgMCx0aGlzLl92YWY9dm9pZCAwLHRoaXMuX2JpbGxib2FyZHM9W10sdGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlPVtdLHRoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZUluZGV4PTAsdGhpcy5fYmlsbGJvYXJkc1JlbW92ZWQ9ITEsdGhpcy5fY3JlYXRlVmVydGV4QXJyYXk9ITEsdGhpcy5fc2hhZGVyUm90YXRpb249ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJSb3RhdGlvbj0hMSx0aGlzLl9zaGFkZXJBbGlnbmVkQXhpcz0hMSx0aGlzLl9jb21waWxlZFNoYWRlckFsaWduZWRBeGlzPSExLHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPSExLHRoaXMuX2NvbXBpbGVkU2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlclBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPSExLHRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj0hMSx0aGlzLl9jb21waWxlZFNoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj0hMSx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlPSExLHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQ9ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJDbGFtcFRvR3JvdW5kPSExLHRoaXMuX3Byb3BlcnRpZXNDaGFuZ2VkPW5ldyBVaW50MzJBcnJheSh4VCksdGhpcy5fbWF4U2l6ZT0wLHRoaXMuX21heEV5ZU9mZnNldD0wLHRoaXMuX21heFNjYWxlPTEsdGhpcy5fbWF4UGl4ZWxPZmZzZXQ9MCx0aGlzLl9hbGxIb3Jpem9udGFsQ2VudGVyPSEwLHRoaXMuX2FsbFZlcnRpY2FsQ2VudGVyPSEwLHRoaXMuX2FsbFNpemVkSW5NZXRlcnM9ITAsdGhpcy5fYmFzZVZvbHVtZT1uZXcgTnQsdGhpcy5fYmFzZVZvbHVtZVdDPW5ldyBOdCx0aGlzLl9iYXNlVm9sdW1lMkQ9bmV3IE50LHRoaXMuX2JvdW5kaW5nVm9sdW1lPW5ldyBOdCx0aGlzLl9ib3VuZGluZ1ZvbHVtZURpcnR5PSExLHRoaXMuX2NvbG9yQ29tbWFuZHM9W10sdGhpcy5zaG93PVoodC5zaG93LCEwKSx0aGlzLm1vZGVsTWF0cml4PWF0LmNsb25lKFoodC5tb2RlbE1hdHJpeCxhdC5JREVOVElUWSkpLHRoaXMuX21vZGVsTWF0cml4PWF0LmNsb25lKGF0LklERU5USVRZKSx0aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPVoodC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSwhMSksdGhpcy5kZWJ1Z1Nob3dUZXh0dXJlQXRsYXM9Wih0LmRlYnVnU2hvd1RleHR1cmVBdGxhcywhMSksdGhpcy5ibGVuZE9wdGlvbj1aKHQuYmxlbmRPcHRpb24sV24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVCksdGhpcy5fYmxlbmRPcHRpb249dm9pZCAwLHRoaXMuX21vZGU9eWUuU0NFTkUzRCx0aGlzLl9idWZmZXJzVXNhZ2U9W2FpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXXSx0aGlzLl9oaWdobGlnaHRDb2xvcj1adC5jbG9uZShadC5XSElURSk7bGV0IGU9dGhpczt0aGlzLl91bmlmb3Jtcz17dV9hdGxhczpmdW5jdGlvbigpe3JldHVybiBlLl90ZXh0dXJlQXRsYXMudGV4dHVyZX0sdV9oaWdobGlnaHRDb2xvcjpmdW5jdGlvbigpe3JldHVybiBlLl9oaWdobGlnaHRDb2xvcn19O2xldCBpPXRoaXMuX3NjZW5lO20oaSkmJm0oaS50ZXJyYWluUHJvdmlkZXJDaGFuZ2VkKSYmKHRoaXMuX3JlbW92ZUNhbGxiYWNrRnVuYz1pLnRlcnJhaW5Qcm92aWRlckNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbigpe2xldCBuPXRoaXMuX2JpbGxib2FyZHMscz1uLmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKW0obltvXSkmJm5bb10uX3VwZGF0ZUNsYW1waW5nKCl9LHRoaXMpKX1mdW5jdGlvbiBleSh0KXtsZXQgZT10Lmxlbmd0aDtmb3IobGV0IGk9MDtpPGU7KytpKXRbaV0mJnRbaV0uX2Rlc3Ryb3koKX1mdW5jdGlvbiBQVCh0KXtpZih0Ll9iaWxsYm9hcmRzUmVtb3ZlZCl7dC5fYmlsbGJvYXJkc1JlbW92ZWQ9ITE7bGV0IGU9W10saT10Ll9iaWxsYm9hcmRzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTAsbz0wO3M8bjsrK3Mpe2xldCByPWlbc107bShyKSYmKHIuX2luZGV4PW8rKyxlLnB1c2gocikpfXQuX2JpbGxib2FyZHM9ZX19ZnVuY3Rpb24gS3R0KHQpe2xldCBpPXQuY2FjaGUuYmlsbGJvYXJkQ29sbGVjdGlvbl9pbmRleEJ1ZmZlckJhdGNoZWQ7aWYobShpKSlyZXR1cm4gaTtsZXQgbj0xNjM4NCo2LTYscz1uZXcgVWludDE2QXJyYXkobik7Zm9yKGxldCBvPTAscj0wO288bjtvKz02LHIrPTQpc1tvXT1yLHNbbysxXT1yKzEsc1tvKzJdPXIrMixzW28rM109ciswLHNbbys0XT1yKzIsc1tvKzVdPXIrMztyZXR1cm4gaT1DYS5jcmVhdGVJbmRleEJ1ZmZlcih7Y29udGV4dDp0LHR5cGVkQXJyYXk6cyx1c2FnZTphaS5TVEFUSUNfRFJBVyxpbmRleERhdGF0eXBlOnRlLlVOU0lHTkVEX1NIT1JUfSksaS52ZXJ0ZXhBcnJheURlc3Ryb3lhYmxlPSExLHQuY2FjaGUuYmlsbGJvYXJkQ29sbGVjdGlvbl9pbmRleEJ1ZmZlckJhdGNoZWQ9aSxpfWZ1bmN0aW9uIFh0dCh0KXtsZXQgZT10LmNhY2hlLmJpbGxib2FyZENvbGxlY3Rpb25faW5kZXhCdWZmZXJJbnN0YW5jZWQ7cmV0dXJuIG0oZSl8fChlPUNhLmNyZWF0ZUluZGV4QnVmZmVyKHtjb250ZXh0OnQsdHlwZWRBcnJheTpuZXcgVWludDE2QXJyYXkoWzAsMSwyLDAsMiwzXSksdXNhZ2U6YWkuU1RBVElDX0RSQVcsaW5kZXhEYXRhdHlwZTp0ZS5VTlNJR05FRF9TSE9SVH0pLGUudmVydGV4QXJyYXlEZXN0cm95YWJsZT0hMSx0LmNhY2hlLmJpbGxib2FyZENvbGxlY3Rpb25faW5kZXhCdWZmZXJJbnN0YW5jZWQ9ZSksZX1mdW5jdGlvbiBxdHQodCl7bGV0IGU9dC5jYWNoZS5iaWxsYm9hcmRDb2xsZWN0aW9uX3ZlcnRleEJ1ZmZlckluc3RhbmNlZDtyZXR1cm4gbShlKXx8KGU9Q2EuY3JlYXRlVmVydGV4QnVmZmVyKHtjb250ZXh0OnQsdHlwZWRBcnJheTpuZXcgRmxvYXQzMkFycmF5KFswLDAsMSwwLDEsMSwwLDFdKSx1c2FnZTphaS5TVEFUSUNfRFJBV30pLGUudmVydGV4QXJyYXlEZXN0cm95YWJsZT0hMSx0LmNhY2hlLmJpbGxib2FyZENvbGxlY3Rpb25fdmVydGV4QnVmZmVySW5zdGFuY2VkPWUpLGV9ZnVuY3Rpb24gJHR0KHQsZSxpLG4scyxvKXtsZXQgcj1be2luZGV4OmFuLnBvc2l0aW9uSGlnaEFuZFNjYWxlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW09FXX0se2luZGV4OmFuLnBvc2l0aW9uTG93QW5kUm90YXRpb24sY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbT0VdfSx7aW5kZXg6YW4uY29tcHJlc3NlZEF0dHJpYnV0ZTAsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbSExdfSx7aW5kZXg6YW4uY29tcHJlc3NlZEF0dHJpYnV0ZTEsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbWExdfSx7aW5kZXg6YW4uY29tcHJlc3NlZEF0dHJpYnV0ZTIsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbekxdfSx7aW5kZXg6YW4uZXllT2Zmc2V0LGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW3ZMXX0se2luZGV4OmFuLnNjYWxlQnlEaXN0YW5jZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVtLTF19LHtpbmRleDphbi5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVtxTF19LHtpbmRleDphbi5jb21wcmVzc2VkQXR0cmlidXRlMyxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVskTF19LHtpbmRleDphbi50ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kc09yTGFiZWxUcmFuc2xhdGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbSHR0XX1dO24mJnIucHVzaCh7aW5kZXg6YW4uZGlyZWN0aW9uLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mixjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx2ZXJ0ZXhCdWZmZXI6cXR0KHQpfSksbShzKSYmci5wdXNoKHtpbmRleDphbi5hX2JhdGNoSWQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGJ1ZmZlclVzYWdlOmFpLlNUQVRJQ19EUkFXfSksbyYmci5wdXNoKHtpbmRleDphbi5zZGYsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbdHldfSk7bGV0IGE9bj9lOjQqZTtyZXR1cm4gbmV3IGZJKHQscixhLG4pfWZ1bmN0aW9uIGl5KHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLnBvc2l0aW9uSGlnaEFuZFNjYWxlXSxhPW5bYW4ucG9zaXRpb25Mb3dBbmRSb3RhdGlvbl0saD1zLl9nZXRBY3R1YWxQb3NpdGlvbigpO3QuX21vZGU9PT15ZS5TQ0VORTNEJiYoTnQuZXhwYW5kKHQuX2Jhc2VWb2x1bWUsaCx0Ll9iYXNlVm9sdW1lKSx0Ll9ib3VuZGluZ1ZvbHVtZURpcnR5PSEwKSxHbi5mcm9tQ2FydGVzaWFuKGgsUVQpO2xldCBBPXMuc2NhbGUsZD1zLnJvdGF0aW9uO2QhPT0wJiYodC5fc2hhZGVyUm90YXRpb249ITApLHQuX21heFNjYWxlPU1hdGgubWF4KHQuX21heFNjYWxlLEEpO2xldCBmPVFULmhpZ2gsRT1RVC5sb3c7dC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxmLngsZi55LGYueixBKSxhKG8sRS54LEUueSxFLnosZCkpOihvPXMuX2luZGV4KjQscihvKzAsZi54LGYueSxmLnosQSkscihvKzEsZi54LGYueSxmLnosQSkscihvKzIsZi54LGYueSxmLnosQSkscihvKzMsZi54LGYueSxmLnosQSksYShvKzAsRS54LEUueSxFLnosZCksYShvKzEsRS54LEUueSxFLnosZCksYShvKzIsRS54LEUueSxFLnosZCksYShvKzMsRS54LEUueSxFLnosZCkpfWZ1bmN0aW9uIEF5KHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLmNvbXByZXNzZWRBdHRyaWJ1dGUwXSxhPXMucGl4ZWxPZmZzZXQsaD1hLngsQT1hLnksZD1zLl90cmFuc2xhdGUsZj1kLngsRT1kLnk7dC5fbWF4UGl4ZWxPZmZzZXQ9TWF0aC5tYXgodC5fbWF4UGl4ZWxPZmZzZXQsTWF0aC5hYnMoaCtmKSxNYXRoLmFicygtQStFKSk7bGV0IF89cy5ob3Jpem9udGFsT3JpZ2luLFI9cy5fdmVydGljYWxPcmlnaW4sST1zLnNob3cmJnMuY2x1c3RlclNob3c7cy5jb2xvci5hbHBoYT09PTAmJihJPSExKSxSPT09bW4uQkFTRUxJTkUmJihSPW1uLkJPVFRPTSksdC5fYWxsSG9yaXpvbnRhbENlbnRlcj10Ll9hbGxIb3Jpem9udGFsQ2VudGVyJiZfPT09dG8uQ0VOVEVSLHQuX2FsbFZlcnRpY2FsQ2VudGVyPXQuX2FsbFZlcnRpY2FsQ2VudGVyJiZSPT09bW4uQ0VOVEVSO2xldCBDPTAsTj0wLFQ9MCxiPTAsRj1zLl9pbWFnZUluZGV4O2lmKEYhPT0tMSl7bGV0IEg9aVtGXTtpZighbShIKSl0aHJvdyBuZXcgWShgSW52YWxpZCBiaWxsYm9hcmQgaW1hZ2UgaW5kZXg6ICR7Rn1gKTtDPUgueCxOPUgueSxUPUgud2lkdGgsYj1ILmhlaWdodH1sZXQgQj1DK1QsVT1OK2IsUT1NYXRoLmZsb29yKEwuY2xhbXAoaCwtUXIsUXIpK1FyKSp0ZXQ7USs9KF8rMSkqZWV0LFErPShSKzEpKmlldCxRKz0oST8xOjApKm55O2xldCBNPU1hdGguZmxvb3IoTC5jbGFtcChBLC1RcixRcikrUXIpKklBLGs9TWF0aC5mbG9vcihMLmNsYW1wKGYsLVFyLFFyKStRcikqSUEseT0oTC5jbGFtcChFLC1RcixRcikrUXIpKm5ldCxjPU1hdGguZmxvb3IoeSksZz1NYXRoLmZsb29yKCh5LWMpKklBKTtNKz1jLGsrPWcsa3IueD1DLGtyLnk9TjtsZXQgTz1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhrcik7a3IueD1CO2xldCBEPVlpLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKGtyKTtrci55PVU7bGV0IHc9WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoa3IpO2tyLng9QztsZXQgeD1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhrcik7dC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxRLE0sayxPKSk6KG89cy5faW5kZXgqNCxyKG8rMCxRK3N5LE0sayxPKSxyKG8rMSxRK295LE0sayxEKSxyKG8rMixRK3J5LE0sayx3KSxyKG8rMyxRK2F5LE0sayx4KSl9ZnVuY3Rpb24gaHkodCxlLGksbixzKXtsZXQgbyxyPW5bYW4uY29tcHJlc3NlZEF0dHJpYnV0ZTFdLGE9cy5hbGlnbmVkQXhpcztsLmVxdWFscyhhLGwuWkVSTyl8fCh0Ll9zaGFkZXJBbGlnbmVkQXhpcz0hMCk7bGV0IGg9MCxBPTEsZD0xLGY9MSxFPXMudHJhbnNsdWNlbmN5QnlEaXN0YW5jZTttKEUpJiYoaD1FLm5lYXIsQT1FLm5lYXJWYWx1ZSxkPUUuZmFyLGY9RS5mYXJWYWx1ZSwoQSE9PTF8fGYhPT0xKSYmKHQuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9ITApKTtsZXQgXz0wLFI9cy5faW1hZ2VJbmRleDtpZihSIT09LTEpe2xldCBiPWlbUl07aWYoIW0oYikpdGhyb3cgbmV3IFkoYEludmFsaWQgYmlsbGJvYXJkIGltYWdlIGluZGV4OiAke1J9YCk7Xz1iLndpZHRofWxldCBJPXQuX3RleHR1cmVBdGxhcy50ZXh0dXJlLndpZHRoLEM9TWF0aC5yb3VuZChaKHMud2lkdGgsSSpfKSk7dC5fbWF4U2l6ZT1NYXRoLm1heCh0Ll9tYXhTaXplLEMpO2xldCBOPUwuY2xhbXAoQywwLHltKSxUPTA7TWF0aC5hYnMobC5tYWduaXR1ZGVTcXVhcmVkKGEpLTEpPEwuRVBTSUxPTjYmJihUPVlpLm9jdEVuY29kZUZsb2F0KGEpKSxBPUwuY2xhbXAoQSwwLDEpLEE9QT09PTE/MjU1OkEqMjU1fDAsTj1OKklBK0EsZj1MLmNsYW1wKGYsMCwxKSxmPWY9PT0xPzI1NTpmKjI1NXwwLFQ9VCpJQStmLHQuX2luc3RhbmNlZD8obz1zLl9pbmRleCxyKG8sTixULGgsZCkpOihvPXMuX2luZGV4KjQscihvKzAsTixULGgsZCkscihvKzEsTixULGgsZCkscihvKzIsTixULGgsZCkscihvKzMsTixULGgsZCkpfWZ1bmN0aW9uIHlUKHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLmNvbXByZXNzZWRBdHRyaWJ1dGUyXSxhPXMuY29sb3IsaD1tKHQuX2JhdGNoVGFibGUpP1p0LldISVRFOnMuZ2V0UGlja0lkKGUuY29udGV4dCkuY29sb3IsQT1zLnNpemVJbk1ldGVycz8xOjAsZD1NYXRoLmFicyhsLm1hZ25pdHVkZVNxdWFyZWQocy5hbGlnbmVkQXhpcyktMSk8TC5FUFNJTE9ONj8xOjA7dC5fYWxsU2l6ZWRJbk1ldGVycz10Ll9hbGxTaXplZEluTWV0ZXJzJiZBPT09MTtsZXQgZj0wLEU9cy5faW1hZ2VJbmRleDtpZihFIT09LTEpe2xldCBRPWlbRV07aWYoIW0oUSkpdGhyb3cgbmV3IFkoYEludmFsaWQgYmlsbGJvYXJkIGltYWdlIGluZGV4OiAke0V9YCk7Zj1RLmhlaWdodH1sZXQgXz10Ll90ZXh0dXJlQXRsYXMudGV4dHVyZS5kaW1lbnNpb25zLFI9TWF0aC5yb3VuZChaKHMuaGVpZ2h0LF8ueSpmKSk7dC5fbWF4U2l6ZT1NYXRoLm1heCh0Ll9tYXhTaXplLFIpO2xldCBJPVoocy5fbGFiZWxIb3Jpem9udGFsT3JpZ2luLC0yKTtJKz0yO2xldCBDPVIqbnkrSSxOPVp0LmZsb2F0VG9CeXRlKGEucmVkKSxUPVp0LmZsb2F0VG9CeXRlKGEuZ3JlZW4pLGI9WnQuZmxvYXRUb0J5dGUoYS5ibHVlKSxGPU4qeW0rVCpJQStiO049WnQuZmxvYXRUb0J5dGUoaC5yZWQpLFQ9WnQuZmxvYXRUb0J5dGUoaC5ncmVlbiksYj1adC5mbG9hdFRvQnl0ZShoLmJsdWUpO2xldCBCPU4qeW0rVCpJQStiLFU9WnQuZmxvYXRUb0J5dGUoYS5hbHBoYSkqeW0rWnQuZmxvYXRUb0J5dGUoaC5hbHBoYSkqSUE7VSs9QSoyK2QsdC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxGLEIsVSxDKSk6KG89cy5faW5kZXgqNCxyKG8rMCxGLEIsVSxDKSxyKG8rMSxGLEIsVSxDKSxyKG8rMixGLEIsVSxDKSxyKG8rMyxGLEIsVSxDKSl9ZnVuY3Rpb24gd1QodCxlLGksbixzKXtsZXQgbyxyPW5bYW4uZXllT2Zmc2V0XSxhPXMuZXllT2Zmc2V0LGg9YS56O2lmKHMuX2hlaWdodFJlZmVyZW5jZSE9PVdyLk5PTkUmJihoKj0xLjAwNSksdC5fbWF4RXllT2Zmc2V0PU1hdGgubWF4KHQuX21heEV5ZU9mZnNldCxNYXRoLmFicyhhLngpLE1hdGguYWJzKGEueSksTWF0aC5hYnMoaCkpLHQuX2luc3RhbmNlZCl7bGV0IEE9MCxkPTAsZj1zLl9pbWFnZUluZGV4O2lmKGYhPT0tMSl7bGV0IF89aVtmXTtpZighbShfKSl0aHJvdyBuZXcgWShgSW52YWxpZCBiaWxsYm9hcmQgaW1hZ2UgaW5kZXg6ICR7Zn1gKTtBPV8ud2lkdGgsZD1fLmhlaWdodH1rci54PUEsa3IueT1kO2xldCBFPVlpLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKGtyKTtvPXMuX2luZGV4LHIobyxhLngsYS55LGgsRSl9ZWxzZSBvPXMuX2luZGV4KjQscihvKzAsYS54LGEueSxoLDApLHIobysxLGEueCxhLnksaCwwKSxyKG8rMixhLngsYS55LGgsMCkscihvKzMsYS54LGEueSxoLDApfWZ1bmN0aW9uIGN5KHQsZSxpLG4scyl7bGV0IG8scj1uW2FuLnNjYWxlQnlEaXN0YW5jZV0sYT0wLGg9MSxBPTEsZD0xLGY9cy5zY2FsZUJ5RGlzdGFuY2U7bShmKSYmKGE9Zi5uZWFyLGg9Zi5uZWFyVmFsdWUsQT1mLmZhcixkPWYuZmFyVmFsdWUsKGghPT0xfHxkIT09MSkmJih0Ll9zaGFkZXJTY2FsZUJ5RGlzdGFuY2U9ITApKSx0Ll9pbnN0YW5jZWQ/KG89cy5faW5kZXgscihvLGEsaCxBLGQpKToobz1zLl9pbmRleCo0LHIobyswLGEsaCxBLGQpLHIobysxLGEsaCxBLGQpLHIobysyLGEsaCxBLGQpLHIobyszLGEsaCxBLGQpKX1mdW5jdGlvbiBseSh0LGUsaSxuLHMpe2xldCBvLHI9blthbi5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZV0sYT0wLGg9MSxBPTEsZD0xLGY9cy5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZTttKGYpJiYoYT1mLm5lYXIsaD1mLm5lYXJWYWx1ZSxBPWYuZmFyLGQ9Zi5mYXJWYWx1ZSwoaCE9PTF8fGQhPT0xKSYmKHQuX3NoYWRlclBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPSEwKSksdC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxhLGgsQSxkKSk6KG89cy5faW5kZXgqNCxyKG8rMCxhLGgsQSxkKSxyKG8rMSxhLGgsQSxkKSxyKG8rMixhLGgsQSxkKSxyKG8rMyxhLGgsQSxkKSl9ZnVuY3Rpb24gZHkodCxlLGksbixzKXtsZXQgbyxyPW5bYW4uY29tcHJlc3NlZEF0dHJpYnV0ZTNdLGE9MCxoPU51bWJlci5NQVhfVkFMVUUsQT1zLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjttKEEpJiYoYT1BLm5lYXIsaD1BLmZhcixhKj1hLGgqPWgsdC5fc2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPSEwKTtsZXQgZD1zLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSxmPWdsKHMuaGVpZ2h0UmVmZXJlbmNlKSYmZS5jb250ZXh0LmRlcHRoVGV4dHVyZTttKGQpfHwoZD1mPzVlMzowKSxkKj1kLChmfHxkPjApJiYodC5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2U9ITAsZD09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmKGQ9LTEpKTtsZXQgRSxfO2lmKG0ocy5fbGFiZWxEaW1lbnNpb25zKSlfPXMuX2xhYmVsRGltZW5zaW9ucy54LEU9cy5fbGFiZWxEaW1lbnNpb25zLnk7ZWxzZXtsZXQgTj0wLFQ9MCxiPXMuX2ltYWdlSW5kZXg7aWYoYiE9PS0xKXtsZXQgQj1pW2JdO2lmKCFtKEIpKXRocm93IG5ldyBZKGBJbnZhbGlkIGJpbGxib2FyZCBpbWFnZSBpbmRleDogJHtifWApO049Qi5oZWlnaHQsVD1CLndpZHRofUU9TWF0aC5yb3VuZChaKHMuaGVpZ2h0LHQuX3RleHR1cmVBdGxhcy50ZXh0dXJlLmRpbWVuc2lvbnMueSpOKSk7bGV0IEY9dC5fdGV4dHVyZUF0bGFzLnRleHR1cmUud2lkdGg7Xz1NYXRoLnJvdW5kKFoocy53aWR0aCxGKlQpKX1sZXQgUj1NYXRoLmZsb29yKEwuY2xhbXAoXywwLGtUKSksST1NYXRoLmZsb29yKEwuY2xhbXAoRSwwLGtUKSksQz1SKmtUK0k7dC5faW5zdGFuY2VkPyhvPXMuX2luZGV4LHIobyxhLGgsZCxDKSk6KG89cy5faW5kZXgqNCxyKG8rMCxhLGgsZCxDKSxyKG8rMSxhLGgsZCxDKSxyKG8rMixhLGgsZCxDKSxyKG8rMyxhLGgsZCxDKSl9ZnVuY3Rpb24gbXkodCxlLGksbixzKXtpZihnbChzLmhlaWdodFJlZmVyZW5jZSkpe2xldCBSPXQuX3NjZW5lLEk9ZS5jb250ZXh0LEM9ZS5nbG9iZVRyYW5zbHVjZW5jeVN0YXRlLnRyYW5zbHVjZW50LE49bShSLmdsb2JlKSYmUi5nbG9iZS5kZXB0aFRlc3RBZ2FpbnN0VGVycmFpbjt0Ll9zaGFkZXJDbGFtcFRvR3JvdW5kPUkuZGVwdGhUZXh0dXJlJiYhQyYmTn1sZXQgbyxyPW5bYW4udGV4dHVyZUNvb3JkaW5hdGVCb3VuZHNPckxhYmVsVHJhbnNsYXRlXTtpZihlbi5tYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5pdHM+MCl7bGV0IFI9MCxJPTA7bShzLl9sYWJlbFRyYW5zbGF0ZSkmJihSPXMuX2xhYmVsVHJhbnNsYXRlLngsST1zLl9sYWJlbFRyYW5zbGF0ZS55KSx0Ll9pbnN0YW5jZWQ/KG89cy5faW5kZXgscihvLFIsSSwwLDApKToobz1zLl9pbmRleCo0LHIobyswLFIsSSwwLDApLHIobysxLFIsSSwwLDApLHIobysyLFIsSSwwLDApLHIobyszLFIsSSwwLDApKTtyZXR1cm59bGV0IGE9MCxoPTAsQT0wLGQ9MCxmPXMuX2ltYWdlSW5kZXg7aWYoZiE9PS0xKXtsZXQgUj1pW2ZdO2lmKCFtKFIpKXRocm93IG5ldyBZKGBJbnZhbGlkIGJpbGxib2FyZCBpbWFnZSBpbmRleDogJHtmfWApO2E9Ui54LGg9Ui55LEE9Ui53aWR0aCxkPVIuaGVpZ2h0fWxldCBFPWErQSxfPWgrZDt0Ll9pbnN0YW5jZWQ/KG89cy5faW5kZXgscihvLGEsaCxFLF8pKToobz1zLl9pbmRleCo0LHIobyswLGEsaCxFLF8pLHIobysxLGEsaCxFLF8pLHIobysyLGEsaCxFLF8pLHIobyszLGEsaCxFLF8pKX1mdW5jdGlvbiBzZXQodCxlLGksbixzKXtpZighbSh0Ll9iYXRjaFRhYmxlKSlyZXR1cm47bGV0IG89blthbi5hX2JhdGNoSWRdLHI9cy5fYmF0Y2hJbmRleCxhO3QuX2luc3RhbmNlZD8oYT1zLl9pbmRleCxvKGEscikpOihhPXMuX2luZGV4KjQsbyhhKzAsciksbyhhKzEsciksbyhhKzIsciksbyhhKzMscikpfWZ1bmN0aW9uIGZ5KHQsZSxpLG4scyl7aWYoIXQuX3NkZilyZXR1cm47bGV0IG8scj1uW2FuLnNkZl0sYT1zLm91dGxpbmVDb2xvcixoPXMub3V0bGluZVdpZHRoLEE9WnQuZmxvYXRUb0J5dGUoYS5yZWQpLGQ9WnQuZmxvYXRUb0J5dGUoYS5ncmVlbiksZj1adC5mbG9hdFRvQnl0ZShhLmJsdWUpLEU9QSp5bStkKklBK2YsXz1oL3BvLlJBRElVUyxSPVp0LmZsb2F0VG9CeXRlKGEuYWxwaGEpKnltK1p0LmZsb2F0VG9CeXRlKF8pKklBO3QuX2luc3RhbmNlZD8obz1zLl9pbmRleCxyKG8sRSxSKSk6KG89cy5faW5kZXgqNCxyKG8rMCxFK3N5LFIpLHIobysxLEUrb3ksUikscihvKzIsRStyeSxSKSxyKG8rMyxFK2F5LFIpKX1mdW5jdGlvbiBvZXQodCxlLGksbixzKXtpeSh0LGUsaSxuLHMpLEF5KHQsZSxpLG4scyksaHkodCxlLGksbixzKSx5VCh0LGUsaSxuLHMpLHdUKHQsZSxpLG4scyksY3kodCxlLGksbixzKSxseSh0LGUsaSxuLHMpLGR5KHQsZSxpLG4scyksbXkodCxlLGksbixzKSxzZXQodCxlLGksbixzKSxmeSh0LGUsaSxuLHMpfWZ1bmN0aW9uIExUKHQsZSxpLG4scyxvKXtsZXQgcjtuLm1vZGU9PT15ZS5TQ0VORTNEPyhyPXQuX2Jhc2VWb2x1bWUsdC5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMCk6cj10Ll9iYXNlVm9sdW1lMkQ7bGV0IGE9W107Zm9yKGxldCBoPTA7aDxpOysraCl7bGV0IEE9ZVtoXSxkPUEucG9zaXRpb24sZj11bi5fY29tcHV0ZUFjdHVhbFBvc2l0aW9uKEEsZCxuLHMpO20oZikmJihBLl9zZXRBY3R1YWxQb3NpdGlvbihmKSxvP2EucHVzaChmKTpOdC5leHBhbmQocixmLHIpKX1vJiZOdC5mcm9tUG9pbnRzKGEscil9ZnVuY3Rpb24gcmV0KHQsZSl7bGV0IGk9ZS5tb2RlLG49dC5fYmlsbGJvYXJkcyxzPXQuX2JpbGxib2FyZHNUb1VwZGF0ZSxvPXQuX21vZGVsTWF0cml4O3QuX2NyZWF0ZVZlcnRleEFycmF5fHx0Ll9tb2RlIT09aXx8aSE9PXllLlNDRU5FM0QmJiFhdC5lcXVhbHMobyx0Lm1vZGVsTWF0cml4KT8odC5fbW9kZT1pLGF0LmNsb25lKHQubW9kZWxNYXRyaXgsbyksdC5fY3JlYXRlVmVydGV4QXJyYXk9ITAsKGk9PT15ZS5TQ0VORTNEfHxpPT09eWUuU0NFTkUyRHx8aT09PXllLkNPTFVNQlVTX1ZJRVcpJiZMVCh0LG4sbi5sZW5ndGgsZSxvLCEwKSk6aT09PXllLk1PUlBISU5HP0xUKHQsbixuLmxlbmd0aCxlLG8sITApOihpPT09eWUuU0NFTkUyRHx8aT09PXllLkNPTFVNQlVTX1ZJRVcpJiZMVCh0LHMsdC5fYmlsbGJvYXJkc1RvVXBkYXRlSW5kZXgsZSxvLCExKX1mdW5jdGlvbiBhZXQodCxlLGkpe2xldCBuPTE7KCF0Ll9hbGxTaXplZEluTWV0ZXJzfHx0Ll9tYXhQaXhlbE9mZnNldCE9PTApJiYobj1lLmNhbWVyYS5nZXRQaXhlbFNpemUoaSxlLmNvbnRleHQuZHJhd2luZ0J1ZmZlcldpZHRoLGUuY29udGV4dC5kcmF3aW5nQnVmZmVySGVpZ2h0KSk7bGV0IHM9bip0Ll9tYXhTY2FsZSp0Ll9tYXhTaXplKjI7dC5fYWxsSG9yaXpvbnRhbENlbnRlciYmdC5fYWxsVmVydGljYWxDZW50ZXImJihzKj0uNSk7bGV0IG89bip0Ll9tYXhQaXhlbE9mZnNldCt0Ll9tYXhFeWVPZmZzZXQ7aS5yYWRpdXMrPXMrb31mdW5jdGlvbiBBZXQodCxlKXtsZXQgbj1lLmNyZWF0ZVZpZXdwb3J0UXVhZENvbW1hbmQoYHVuaWZvcm0gc2FtcGxlcjJEIGJpbGxib2FyZF90ZXh0dXJlOyAKaW4gdmVjMiB2X3RleHR1cmVDb29yZGluYXRlczsgCnZvaWQgbWFpbigpIAp7IAogICAgb3V0X0ZyYWdDb2xvciA9IHRleHR1cmUoYmlsbGJvYXJkX3RleHR1cmUsIHZfdGV4dHVyZUNvb3JkaW5hdGVzKTsgCn0gCmAse3VuaWZvcm1NYXA6e2JpbGxib2FyZF90ZXh0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVBdGxhcy50ZXh0dXJlfX19KTtyZXR1cm4gbi5wYXNzPW9zLk9WRVJMQVksbn12YXIgTHR0LE9FLEhMLHZMLHl0dCx3dHQseHR0LFNFLHpMLFB0dCxKdHQsS0wsWEwscUwsJEwsanR0LEh0dCx0eSx4VCxhbix2dHQsenR0LE1ULFFULGtyLFFyLHltLGtULElBLHRldCxlZXQsaWV0LG55LG5ldCxzeSxveSxyeSxheSxoZXQsd20sSlQ9UygoKT0+e29oKCk7X2koKTtYZSgpO0h0KCk7YWUoKTtRbigpO29pKCk7RnQoKTttdCgpO1dzKCk7T3QoKTtUbCgpO0RpKCk7X2UoKTtiaSgpO3NzKCk7YUkoKTtObCgpO2dhKCk7R20oKTtXbSgpO1VtKCk7UW0oKTtibCgpO0dUKCk7TUwoKTtrTCgpO3NJKCk7a20oKTtFSSgpO1NtKCk7T20oKTt1YSgpO19JKCk7VVQoKTtDRSgpO0x0dD11bi5TSE9XX0lOREVYLE9FPXVuLlBPU0lUSU9OX0lOREVYLEhMPXVuLlBJWEVMX09GRlNFVF9JTkRFWCx2TD11bi5FWUVfT0ZGU0VUX0lOREVYLHl0dD11bi5IT1JJWk9OVEFMX09SSUdJTl9JTkRFWCx3dHQ9dW4uVkVSVElDQUxfT1JJR0lOX0lOREVYLHh0dD11bi5TQ0FMRV9JTkRFWCxTRT11bi5JTUFHRV9JTkRFWF9JTkRFWCx6TD11bi5DT0xPUl9JTkRFWCxQdHQ9dW4uUk9UQVRJT05fSU5ERVgsSnR0PXVuLkFMSUdORURfQVhJU19JTkRFWCxLTD11bi5TQ0FMRV9CWV9ESVNUQU5DRV9JTkRFWCxYTD11bi5UUkFOU0xVQ0VOQ1lfQllfRElTVEFOQ0VfSU5ERVgscUw9dW4uUElYRUxfT0ZGU0VUX1NDQUxFX0JZX0RJU1RBTkNFX0lOREVYLCRMPXVuLkRJU1RBTkNFX0RJU1BMQVlfQ09ORElUSU9OLGp0dD11bi5ESVNBQkxFX0RFUFRIX0RJU1RBTkNFLEh0dD11bi5URVhUVVJFX0NPT1JESU5BVEVfQk9VTkRTLHR5PXVuLlNERl9JTkRFWCx4VD11bi5OVU1CRVJfT0ZfUFJPUEVSVElFUyx2dHQ9e3Bvc2l0aW9uSGlnaEFuZFNjYWxlOjAscG9zaXRpb25Mb3dBbmRSb3RhdGlvbjoxLGNvbXByZXNzZWRBdHRyaWJ1dGUwOjIsY29tcHJlc3NlZEF0dHJpYnV0ZTE6Myxjb21wcmVzc2VkQXR0cmlidXRlMjo0LGV5ZU9mZnNldDo1LHNjYWxlQnlEaXN0YW5jZTo2LHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOjcsY29tcHJlc3NlZEF0dHJpYnV0ZTM6OCx0ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kc09yTGFiZWxUcmFuc2xhdGU6OSxhX2JhdGNoSWQ6MTAsc2RmOjExfSx6dHQ9e2RpcmVjdGlvbjowLHBvc2l0aW9uSGlnaEFuZFNjYWxlOjEscG9zaXRpb25Mb3dBbmRSb3RhdGlvbjoyLGNvbXByZXNzZWRBdHRyaWJ1dGUwOjMsY29tcHJlc3NlZEF0dHJpYnV0ZTE6NCxjb21wcmVzc2VkQXR0cmlidXRlMjo1LGV5ZU9mZnNldDo2LHNjYWxlQnlEaXN0YW5jZTo3LHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOjgsY29tcHJlc3NlZEF0dHJpYnV0ZTM6OSx0ZXh0dXJlQ29vcmRpbmF0ZUJvdW5kc09yTGFiZWxUcmFuc2xhdGU6MTAsYV9iYXRjaElkOjExLHNkZjoxMn07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTHIucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBQVCh0aGlzKSx0aGlzLl9iaWxsYm9hcmRzLmxlbmd0aH19LHRleHR1cmVBdGxhczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmVBdGxhc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3RleHR1cmVBdGxhcyE9PXQmJih0aGlzLl90ZXh0dXJlQXRsYXM9dGhpcy5fZGVzdHJveVRleHR1cmVBdGxhcyYmdGhpcy5fdGV4dHVyZUF0bGFzJiZ0aGlzLl90ZXh0dXJlQXRsYXMuZGVzdHJveSgpLHRoaXMuX3RleHR1cmVBdGxhcz10LHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSEwKX19LGRlc3Ryb3lUZXh0dXJlQXRsYXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXN0cm95VGV4dHVyZUF0bGFzfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZGVzdHJveVRleHR1cmVBdGxhcz10fX19KTtMci5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe2xldCBlPW5ldyB1bih0LHRoaXMpO3JldHVybiBlLl9pbmRleD10aGlzLl9iaWxsYm9hcmRzLmxlbmd0aCx0aGlzLl9iaWxsYm9hcmRzLnB1c2goZSksdGhpcy5fY3JlYXRlVmVydGV4QXJyYXk9ITAsZX07THIucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb250YWlucyh0KT8odGhpcy5fYmlsbGJvYXJkc1t0Ll9pbmRleF09dm9pZCAwLHRoaXMuX2JpbGxib2FyZHNSZW1vdmVkPSEwLHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSEwLHQuX2Rlc3Ryb3koKSwhMCk6ITF9O0xyLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtleSh0aGlzLl9iaWxsYm9hcmRzKSx0aGlzLl9iaWxsYm9hcmRzPVtdLHRoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZT1bXSx0aGlzLl9iaWxsYm9hcmRzVG9VcGRhdGVJbmRleD0wLHRoaXMuX2JpbGxib2FyZHNSZW1vdmVkPSExLHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSEwfTtMci5wcm90b3R5cGUuX3VwZGF0ZUJpbGxib2FyZD1mdW5jdGlvbih0LGUpe3QuX2RpcnR5fHwodGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlW3RoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZUluZGV4KytdPXQpLCsrdGhpcy5fcHJvcGVydGllc0NoYW5nZWRbZV19O0xyLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdC5fYmlsbGJvYXJkQ29sbGVjdGlvbj09PXRoaXN9O0xyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm51bWJlcigiaW5kZXgiLHQpLFBUKHRoaXMpLHRoaXMuX2JpbGxib2FyZHNbdF19O0xyLnByb3RvdHlwZS5jb21wdXRlTmV3QnVmZmVyc1VzYWdlPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fYnVmZmVyc1VzYWdlLGU9ITEsaT10aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZDtmb3IobGV0IG49MDtuPHhUOysrbil7bGV0IHM9aVtuXT09PTA/YWkuU1RBVElDX0RSQVc6YWkuU1RSRUFNX0RSQVc7ZT1lfHx0W25dIT09cyx0W25dPXN9cmV0dXJuIGV9O1FUPW5ldyBHbjtrcj1uZXcgbnQsUXI9MzI3NjgseW09NjU1MzYsa1Q9NDA5NixJQT0yNTYsdGV0PTEyOCxlZXQ9MzIsaWV0PTgsbnk9NCxuZXQ9MS8yNTYsc3k9MCxveT0yLHJ5PTMsYXk9MTtoZXQ9W107THIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZihQVCh0aGlzKSwhdGhpcy5zaG93KXJldHVybjtsZXQgZT10aGlzLl9iaWxsYm9hcmRzLGk9ZS5sZW5ndGgsbj10LmNvbnRleHQ7dGhpcy5faW5zdGFuY2VkPW4uaW5zdGFuY2VkQXJyYXlzLGFuPXRoaXMuX2luc3RhbmNlZD96dHQ6dnR0LE1UPXRoaXMuX2luc3RhbmNlZD9YdHQ6S3R0O2xldCBzPXRoaXMuX3RleHR1cmVBdGxhcztpZighbShzKSl7cz10aGlzLl90ZXh0dXJlQXRsYXM9bmV3IFZFKHtjb250ZXh0Om59KTtmb3IobGV0IE09MDtNPGk7KytNKWVbTV0uX2xvYWRJbWFnZSgpfWxldCBvPXMudGV4dHVyZUNvb3JkaW5hdGVzO2lmKG8ubGVuZ3RoPT09MClyZXR1cm47cmV0KHRoaXMsdCksZT10aGlzLl9iaWxsYm9hcmRzLGk9ZS5sZW5ndGg7bGV0IHI9dGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlLGE9dGhpcy5fYmlsbGJvYXJkc1RvVXBkYXRlSW5kZXgsaD10aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCxBPXMuZ3VpZCxkPXRoaXMuX2NyZWF0ZVZlcnRleEFycmF5fHx0aGlzLl90ZXh0dXJlQXRsYXNHVUlEIT09QTt0aGlzLl90ZXh0dXJlQXRsYXNHVUlEPUE7bGV0IGYsRT10LnBhc3NlcyxfPUUucGljaztpZihkfHwhXyYmdGhpcy5jb21wdXRlTmV3QnVmZmVyc1VzYWdlKCkpe3RoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSExO2ZvcihsZXQgTT0wO008eFQ7KytNKWhbTV09MDtpZih0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLGk+MCl7dGhpcy5fdmFmPSR0dChuLGksdGhpcy5fYnVmZmVyc1VzYWdlLHRoaXMuX2luc3RhbmNlZCx0aGlzLl9iYXRjaFRhYmxlLHRoaXMuX3NkZiksZj10aGlzLl92YWYud3JpdGVycztmb3IobGV0IE09MDtNPGk7KytNKXtsZXQgaz10aGlzLl9iaWxsYm9hcmRzW01dO2suX2RpcnR5PSExLG9ldCh0aGlzLHQsbyxmLGspfXRoaXMuX3ZhZi5jb21taXQoTVQobikpfXRoaXMuX2JpbGxib2FyZHNUb1VwZGF0ZUluZGV4PTB9ZWxzZSBpZihhPjApe2xldCBNPWhldDtNLmxlbmd0aD0wLChoW09FXXx8aFtQdHRdfHxoW3h0dF0pJiZNLnB1c2goaXkpLChoW1NFXXx8aFtITF18fGhbeXR0XXx8aFt3dHRdfHxoW0x0dF0pJiYoTS5wdXNoKEF5KSx0aGlzLl9pbnN0YW5jZWQmJk0ucHVzaCh3VCkpLChoW1NFXXx8aFtKdHRdfHxoW1hMXSkmJihNLnB1c2goaHkpLE0ucHVzaCh5VCkpLChoW1NFXXx8aFt6TF0pJiZNLnB1c2goeVQpLGhbdkxdJiZNLnB1c2god1QpLGhbS0xdJiZNLnB1c2goY3kpLGhbcUxdJiZNLnB1c2gobHkpLChoWyRMXXx8aFtqdHRdfHxoW1NFXXx8aFtPRV0pJiZNLnB1c2goZHkpLChoW1NFXXx8aFtPRV0pJiZNLnB1c2gobXkpLGhbdHldJiZNLnB1c2goZnkpO2xldCBrPU0ubGVuZ3RoO2lmKGY9dGhpcy5fdmFmLndyaXRlcnMsYS9pPi4xKXtmb3IobGV0IHk9MDt5PGE7Kyt5KXtsZXQgYz1yW3ldO2MuX2RpcnR5PSExO2ZvcihsZXQgZz0wO2c8azsrK2cpTVtnXSh0aGlzLHQsbyxmLGMpfXRoaXMuX3ZhZi5jb21taXQoTVQobikpfWVsc2V7Zm9yKGxldCB5PTA7eTxhOysreSl7bGV0IGM9clt5XTtjLl9kaXJ0eT0hMTtmb3IobGV0IGc9MDtnPGs7KytnKU1bZ10odGhpcyx0LG8sZixjKTt0aGlzLl9pbnN0YW5jZWQ/dGhpcy5fdmFmLnN1YkNvbW1pdChjLl9pbmRleCwxKTp0aGlzLl92YWYuc3ViQ29tbWl0KGMuX2luZGV4KjQsNCl9dGhpcy5fdmFmLmVuZFN1YkNvbW1pdHMoKX10aGlzLl9iaWxsYm9hcmRzVG9VcGRhdGVJbmRleD0wfWlmKGE+aSoxLjUmJihyLmxlbmd0aD1pKSwhbSh0aGlzLl92YWYpfHwhbSh0aGlzLl92YWYudmEpKXJldHVybjt0aGlzLl9ib3VuZGluZ1ZvbHVtZURpcnR5JiYodGhpcy5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMSxOdC50cmFuc2Zvcm0odGhpcy5fYmFzZVZvbHVtZSx0aGlzLm1vZGVsTWF0cml4LHRoaXMuX2Jhc2VWb2x1bWVXQykpO2xldCBSLEk9YXQuSURFTlRJVFk7dC5tb2RlPT09eWUuU0NFTkUzRD8oST10aGlzLm1vZGVsTWF0cml4LFI9TnQuY2xvbmUodGhpcy5fYmFzZVZvbHVtZVdDLHRoaXMuX2JvdW5kaW5nVm9sdW1lKSk6Uj1OdC5jbG9uZSh0aGlzLl9iYXNlVm9sdW1lMkQsdGhpcy5fYm91bmRpbmdWb2x1bWUpLGFldCh0aGlzLHQsUik7bGV0IEM9dGhpcy5fYmxlbmRPcHRpb24hPT10aGlzLmJsZW5kT3B0aW9uO2lmKHRoaXMuX2JsZW5kT3B0aW9uPXRoaXMuYmxlbmRPcHRpb24sQyl7dGhpcy5fYmxlbmRPcHRpb249PT1Xbi5PUEFRVUV8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc09wYXF1ZT1Zbi5mcm9tQ2FjaGUoe2RlcHRoVGVzdDp7ZW5hYmxlZDohMCxmdW5jOml0LkxFU1N9LGRlcHRoTWFzazohMH0pOnRoaXMuX3JzT3BhcXVlPXZvaWQgMDtsZXQgTT10aGlzLl9ibGVuZE9wdGlvbj09PVduLlRSQU5TTFVDRU5UO3RoaXMuX2JsZW5kT3B0aW9uPT09V24uVFJBTlNMVUNFTlR8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc1RyYW5zbHVjZW50PVluLmZyb21DYWNoZSh7ZGVwdGhUZXN0OntlbmFibGVkOiEwLGZ1bmM6TT9pdC5MRVFVQUw6aXQuTEVTU30sZGVwdGhNYXNrOk0sYmxlbmRpbmc6TXIuQUxQSEFfQkxFTkR9KTp0aGlzLl9yc1RyYW5zbHVjZW50PXZvaWQgMH10aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT10aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZXx8dC5taW5pbXVtRGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIT09MDtsZXQgTixULGIsRixCLFU9ZW4ubWF4aW11bVZlcnRleFRleHR1cmVJbWFnZVVuaXRzPjA7aWYoQ3x8dGhpcy5fc2hhZGVyUm90YXRpb24hPT10aGlzLl9jb21waWxlZFNoYWRlclJvdGF0aW9ufHx0aGlzLl9zaGFkZXJBbGlnbmVkQXhpcyE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyQWxpZ25lZEF4aXN8fHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyU2NhbGVCeURpc3RhbmNlfHx0aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlIT09dGhpcy5fY29tcGlsZWRTaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlfHx0aGlzLl9zaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyUGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2V8fHRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9ufHx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2V8fHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQhPT10aGlzLl9jb21waWxlZFNoYWRlckNsYW1wVG9Hcm91bmR8fHRoaXMuX3NkZiE9PXRoaXMuX2NvbXBpbGVkU0RGKXtOPVFMLFQ9VUwsQj1bXSxtKHRoaXMuX2JhdGNoVGFibGUpJiYoQi5wdXNoKCJWRUNUT1JfVElMRSIpLE49dGhpcy5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjayghMSwiYV9iYXRjaElkIix2b2lkIDApKE4pLFQ9dGhpcy5fYmF0Y2hUYWJsZS5nZXRGcmFnbWVudFNoYWRlckNhbGxiYWNrKCExLHZvaWQgMCkoVCkpLGI9bmV3IFVpKHtkZWZpbmVzOkIsc291cmNlczpbTl19KSx0aGlzLl9pbnN0YW5jZWQmJmIuZGVmaW5lcy5wdXNoKCJJTlNUQU5DRUQiKSx0aGlzLl9zaGFkZXJSb3RhdGlvbiYmYi5kZWZpbmVzLnB1c2goIlJPVEFUSU9OIiksdGhpcy5fc2hhZGVyQWxpZ25lZEF4aXMmJmIuZGVmaW5lcy5wdXNoKCJBTElHTkVEX0FYSVMiKSx0aGlzLl9zaGFkZXJTY2FsZUJ5RGlzdGFuY2UmJmIuZGVmaW5lcy5wdXNoKCJFWUVfRElTVEFOQ0VfU0NBTElORyIpLHRoaXMuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UmJmIuZGVmaW5lcy5wdXNoKCJFWUVfRElTVEFOQ0VfVFJBTlNMVUNFTkNZIiksdGhpcy5fc2hhZGVyUGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UmJmIuZGVmaW5lcy5wdXNoKCJFWUVfRElTVEFOQ0VfUElYRUxfT0ZGU0VUIiksdGhpcy5fc2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uJiZiLmRlZmluZXMucHVzaCgiRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT04iKSx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSYmYi5kZWZpbmVzLnB1c2goIkRJU0FCTEVfREVQVEhfRElTVEFOQ0UiKSx0aGlzLl9zaGFkZXJDbGFtcFRvR3JvdW5kJiYoVT9iLmRlZmluZXMucHVzaCgiVkVSVEVYX0RFUFRIX0NIRUNLIik6Yi5kZWZpbmVzLnB1c2goIkZSQUdNRU5UX0RFUFRIX0NIRUNLIikpO2xldCBNPTEtcG8uQ1VUT0ZGO3RoaXMuX3NkZiYmYi5kZWZpbmVzLnB1c2goIlNERiIpO2xldCBrPW0odGhpcy5fYmF0Y2hUYWJsZSk/IlZFQ1RPUl9USUxFIjoiIjt0aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRV9BTkRfVFJBTlNMVUNFTlQmJihGPW5ldyBVaSh7ZGVmaW5lczpbIk9QQVFVRSIsa10sc291cmNlczpbVF19KSx0aGlzLl9zaGFkZXJDbGFtcFRvR3JvdW5kJiYoVT9GLmRlZmluZXMucHVzaCgiVkVSVEVYX0RFUFRIX0NIRUNLIik6Ri5kZWZpbmVzLnB1c2goIkZSQUdNRU5UX0RFUFRIX0NIRUNLIikpLHRoaXMuX3NkZiYmKEYuZGVmaW5lcy5wdXNoKCJTREYiKSxGLmRlZmluZXMucHVzaChgU0RGX0VER0UgJHtNfWApKSx0aGlzLl9zcD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6bixzaGFkZXJQcm9ncmFtOnRoaXMuX3NwLHZlcnRleFNoYWRlclNvdXJjZTpiLGZyYWdtZW50U2hhZGVyU291cmNlOkYsYXR0cmlidXRlTG9jYXRpb25zOmFufSksRj1uZXcgVWkoe2RlZmluZXM6WyJUUkFOU0xVQ0VOVCIsa10sc291cmNlczpbVF19KSx0aGlzLl9zaGFkZXJDbGFtcFRvR3JvdW5kJiYoVT9GLmRlZmluZXMucHVzaCgiVkVSVEVYX0RFUFRIX0NIRUNLIik6Ri5kZWZpbmVzLnB1c2goIkZSQUdNRU5UX0RFUFRIX0NIRUNLIikpLHRoaXMuX3NkZiYmKEYuZGVmaW5lcy5wdXNoKCJTREYiKSxGLmRlZmluZXMucHVzaChgU0RGX0VER0UgJHtNfWApKSx0aGlzLl9zcFRyYW5zbHVjZW50PUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dGhpcy5fc3BUcmFuc2x1Y2VudCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6YixmcmFnbWVudFNoYWRlclNvdXJjZTpGLGF0dHJpYnV0ZUxvY2F0aW9uczphbn0pKSx0aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRSYmKEY9bmV3IFVpKHtkZWZpbmVzOltrXSxzb3VyY2VzOltUXX0pLHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQmJihVP0YuZGVmaW5lcy5wdXNoKCJWRVJURVhfREVQVEhfQ0hFQ0siKTpGLmRlZmluZXMucHVzaCgiRlJBR01FTlRfREVQVEhfQ0hFQ0siKSksdGhpcy5fc2RmJiYoRi5kZWZpbmVzLnB1c2goIlNERiIpLEYuZGVmaW5lcy5wdXNoKGBTREZfRURHRSAke019YCkpLHRoaXMuX3NwPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dGhpcy5fc3AsdmVydGV4U2hhZGVyU291cmNlOmIsZnJhZ21lbnRTaGFkZXJTb3VyY2U6RixhdHRyaWJ1dGVMb2NhdGlvbnM6YW59KSksdGhpcy5fYmxlbmRPcHRpb249PT1Xbi5UUkFOU0xVQ0VOVCYmKEY9bmV3IFVpKHtkZWZpbmVzOltrXSxzb3VyY2VzOltUXX0pLHRoaXMuX3NoYWRlckNsYW1wVG9Hcm91bmQmJihVP0YuZGVmaW5lcy5wdXNoKCJWRVJURVhfREVQVEhfQ0hFQ0siKTpGLmRlZmluZXMucHVzaCgiRlJBR01FTlRfREVQVEhfQ0hFQ0siKSksdGhpcy5fc2RmJiYoRi5kZWZpbmVzLnB1c2goIlNERiIpLEYuZGVmaW5lcy5wdXNoKGBTREZfRURHRSAke019YCkpLHRoaXMuX3NwVHJhbnNsdWNlbnQ9RXMucmVwbGFjZUNhY2hlKHtjb250ZXh0Om4sc2hhZGVyUHJvZ3JhbTp0aGlzLl9zcFRyYW5zbHVjZW50LHZlcnRleFNoYWRlclNvdXJjZTpiLGZyYWdtZW50U2hhZGVyU291cmNlOkYsYXR0cmlidXRlTG9jYXRpb25zOmFufSkpLHRoaXMuX2NvbXBpbGVkU2hhZGVyUm90YXRpb249dGhpcy5fc2hhZGVyUm90YXRpb24sdGhpcy5fY29tcGlsZWRTaGFkZXJBbGlnbmVkQXhpcz10aGlzLl9zaGFkZXJBbGlnbmVkQXhpcyx0aGlzLl9jb21waWxlZFNoYWRlclNjYWxlQnlEaXN0YW5jZT10aGlzLl9zaGFkZXJTY2FsZUJ5RGlzdGFuY2UsdGhpcy5fY29tcGlsZWRTaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPXRoaXMuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdGhpcy5fY29tcGlsZWRTaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT10aGlzLl9zaGFkZXJQaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSx0aGlzLl9jb21waWxlZFNoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLl9zaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdGhpcy5fY29tcGlsZWRTaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT10aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSx0aGlzLl9jb21waWxlZFNoYWRlckNsYW1wVG9Hcm91bmQ9dGhpcy5fc2hhZGVyQ2xhbXBUb0dyb3VuZCx0aGlzLl9jb21waWxlZFNERj10aGlzLl9zZGZ9bGV0IFE9dC5jb21tYW5kTGlzdDtpZihFLnJlbmRlcnx8RS5waWNrKXtsZXQgTT10aGlzLl9jb2xvckNvbW1hbmRzLGs9dGhpcy5fYmxlbmRPcHRpb249PT1Xbi5PUEFRVUUseT10aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRV9BTkRfVFJBTlNMVUNFTlQsYz10aGlzLl92YWYudmEsZz1jLmxlbmd0aCxPPXRoaXMuX3VuaWZvcm1zLEQ7bSh0aGlzLl9iYXRjaFRhYmxlKT8oTz10aGlzLl9iYXRjaFRhYmxlLmdldFVuaWZvcm1NYXBDYWxsYmFjaygpKE8pLEQ9dGhpcy5fYmF0Y2hUYWJsZS5nZXRQaWNrSWQoKSk6RD0idl9waWNrQ29sb3IiLE0ubGVuZ3RoPWc7bGV0IHc9eT9nKjI6Zztmb3IobGV0IHg9MDt4PHc7Kyt4KXtsZXQgSD1NW3hdO20oSCl8fChIPU1beF09bmV3IGZuKTtsZXQgaj1rfHx5JiZ4JTI9PT0wO0gucGFzcz1qfHwheT9vcy5PUEFRVUU6b3MuVFJBTlNMVUNFTlQsSC5vd25lcj10aGlzO2xldCBYPXk/TWF0aC5mbG9vcih4LzIpOng7SC5ib3VuZGluZ1ZvbHVtZT1SLEgubW9kZWxNYXRyaXg9SSxILmNvdW50PWNbWF0uaW5kaWNlc0NvdW50LEguc2hhZGVyUHJvZ3JhbT1qP3RoaXMuX3NwOnRoaXMuX3NwVHJhbnNsdWNlbnQsSC51bmlmb3JtTWFwPU8sSC52ZXJ0ZXhBcnJheT1jW1hdLnZhLEgucmVuZGVyU3RhdGU9aj90aGlzLl9yc09wYXF1ZTp0aGlzLl9yc1RyYW5zbHVjZW50LEguZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9dGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSxILnBpY2tJZD1ELHRoaXMuX2luc3RhbmNlZCYmKEguY291bnQ9NixILmluc3RhbmNlQ291bnQ9aSksUS5wdXNoKEgpfXRoaXMuZGVidWdTaG93VGV4dHVyZUF0bGFzJiYobSh0aGlzLmRlYnVnQ29tbWFuZCl8fCh0aGlzLmRlYnVnQ29tbWFuZD1BZXQodGhpcyx0LmNvbnRleHQpKSxRLnB1c2godGhpcy5kZWJ1Z0NvbW1hbmQpKX19O0xyLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtMci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3JlbW92ZUNhbGxiYWNrRnVuYykmJih0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmMoKSx0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwKSx0aGlzLl90ZXh0dXJlQXRsYXM9dGhpcy5fZGVzdHJveVRleHR1cmVBdGxhcyYmdGhpcy5fdGV4dHVyZUF0bGFzJiZ0aGlzLl90ZXh0dXJlQXRsYXMuZGVzdHJveSgpLHRoaXMuX3NwPXRoaXMuX3NwJiZ0aGlzLl9zcC5kZXN0cm95KCksdGhpcy5fc3BUcmFuc2x1Y2VudD10aGlzLl9zcFRyYW5zbHVjZW50JiZ0aGlzLl9zcFRyYW5zbHVjZW50LmRlc3Ryb3koKSx0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLGV5KHRoaXMuX2JpbGxib2FyZHMpLGxpKHRoaXMpfTt3bT1Mcn0pO3ZhciBjZXQsWWEsalQ9UygoKT0+e2NldD17RklMTDowLE9VVExJTkU6MSxGSUxMX0FORF9PVVRMSU5FOjJ9LFlhPU9iamVjdC5mcmVlemUoY2V0KX0pO2Z1bmN0aW9uIFNsKHQpeyF0Ll9yZWJpbmRBbGxHbHlwaHMmJiF0Ll9yZXBvc2l0aW9uQWxsR2x5cGhzJiZ0Ll9sYWJlbENvbGxlY3Rpb24uX2xhYmVsc1RvVXBkYXRlLnB1c2godCksdC5fcmViaW5kQWxsR2x5cGhzPSEwfWZ1bmN0aW9uIEJFKHQpeyF0Ll9yZWJpbmRBbGxHbHlwaHMmJiF0Ll9yZXBvc2l0aW9uQWxsR2x5cGhzJiZ0Ll9sYWJlbENvbGxlY3Rpb24uX2xhYmVsc1RvVXBkYXRlLnB1c2godCksdC5fcmVwb3NpdGlvbkFsbEdseXBocz0hMH1mdW5jdGlvbiBHRSh0LGUpe3JldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBaeSh0KXtsZXQgZT1FeVt0Ll9mb250XTtpZighbShlKSl7bGV0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGkuc3R5bGUub3BhY2l0eT0wLGkuc3R5bGUuZm9udD10Ll9mb250LGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7bGV0IG49cGFyc2VGbG9hdChHRShpLCJsaW5lLWhlaWdodCIpKTtpc05hTihuKSYmKG49dm9pZCAwKSxlPXtmYW1pbHk6R0UoaSwiZm9udC1mYW1pbHkiKSxzaXplOkdFKGksImZvbnQtc2l6ZSIpLnJlcGxhY2UoInB4IiwiIiksc3R5bGU6R0UoaSwiZm9udC1zdHlsZSIpLHdlaWdodDpHRShpLCJmb250LXdlaWdodCIpLGxpbmVIZWlnaHQ6bn0sZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpKSxfeTxkZXQmJihFeVt0Ll9mb250XT1lLF95KyspfXQuX2ZvbnRGYW1pbHk9ZS5mYW1pbHksdC5fZm9udFNpemU9ZS5zaXplLHQuX2ZvbnRTdHlsZT1lLnN0eWxlLHQuX2ZvbnRXZWlnaHQ9ZS53ZWlnaHQsdC5fbGluZUhlaWdodD1lLmxpbmVIZWlnaHR9ZnVuY3Rpb24gbGgodCxlKXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksbSh0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkmJnQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPDApdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwLjAuIik7bGV0IGk9dC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlLG49dC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSxzPXQuc2NhbGVCeURpc3RhbmNlLG89dC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb247aWYobShpKSl7aWYoaS5mYXI8PWkubmVhcil0aHJvdyBuZXcgWSgidHJhbnNsdWNlbmN5QnlEaXN0YW5jZS5mYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHJhbnNsdWNlbmN5QnlEaXN0YW5jZS5uZWFyLiIpO2k9Z2kuY2xvbmUoaSl9aWYobShuKSl7aWYobi5mYXI8PW4ubmVhcil0aHJvdyBuZXcgWSgicGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLm5lYXIuIik7bj1naS5jbG9uZShuKX1pZihtKHMpKXtpZihzLmZhcjw9cy5uZWFyKXRocm93IG5ldyBZKCJzY2FsZUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlQnlEaXN0YW5jZS5uZWFyLiIpO3M9Z2kuY2xvbmUocyl9aWYobShvKSl7aWYoby5mYXI8PW8ubmVhcil0aHJvdyBuZXcgWSgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBkaXN0YW5jZURpc3BsYXlDb25kaXRpb24ubmVhci4iKTtvPVdvLmNsb25lKG8pfXRoaXMuX3JlbmRlcmVkVGV4dD12b2lkIDAsdGhpcy5fdGV4dD12b2lkIDAsdGhpcy5fc2hvdz1aKHQuc2hvdywhMCksdGhpcy5fZm9udD1aKHQuZm9udCwiMzBweCBzYW5zLXNlcmlmIiksdGhpcy5fZmlsbENvbG9yPVp0LmNsb25lKFoodC5maWxsQ29sb3IsWnQuV0hJVEUpKSx0aGlzLl9vdXRsaW5lQ29sb3I9WnQuY2xvbmUoWih0Lm91dGxpbmVDb2xvcixadC5CTEFDSykpLHRoaXMuX291dGxpbmVXaWR0aD1aKHQub3V0bGluZVdpZHRoLDEpLHRoaXMuX3Nob3dCYWNrZ3JvdW5kPVoodC5zaG93QmFja2dyb3VuZCwhMSksdGhpcy5fYmFja2dyb3VuZENvbG9yPVp0LmNsb25lKFoodC5iYWNrZ3JvdW5kQ29sb3IsbWV0KSksdGhpcy5fYmFja2dyb3VuZFBhZGRpbmc9bnQuY2xvbmUoWih0LmJhY2tncm91bmRQYWRkaW5nLGZldCkpLHRoaXMuX3N0eWxlPVoodC5zdHlsZSxZYS5GSUxMKSx0aGlzLl92ZXJ0aWNhbE9yaWdpbj1aKHQudmVydGljYWxPcmlnaW4sbW4uQkFTRUxJTkUpLHRoaXMuX2hvcml6b250YWxPcmlnaW49Wih0Lmhvcml6b250YWxPcmlnaW4sdG8uTEVGVCksdGhpcy5fcGl4ZWxPZmZzZXQ9bnQuY2xvbmUoWih0LnBpeGVsT2Zmc2V0LG50LlpFUk8pKSx0aGlzLl9leWVPZmZzZXQ9bC5jbG9uZShaKHQuZXllT2Zmc2V0LGwuWkVSTykpLHRoaXMuX3Bvc2l0aW9uPWwuY2xvbmUoWih0LnBvc2l0aW9uLGwuWkVSTykpLHRoaXMuX3NjYWxlPVoodC5zY2FsZSwxKSx0aGlzLl9pZD10LmlkLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9aSx0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1uLHRoaXMuX3NjYWxlQnlEaXN0YW5jZT1zLHRoaXMuX2hlaWdodFJlZmVyZW5jZT1aKHQuaGVpZ2h0UmVmZXJlbmNlLFdyLk5PTkUpLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1vLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZT10LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSx0aGlzLl9sYWJlbENvbGxlY3Rpb249ZSx0aGlzLl9nbHlwaHM9W10sdGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZD12b2lkIDAsdGhpcy5fYmF0Y2hJbmRleD12b2lkIDAsdGhpcy5fcmViaW5kQWxsR2x5cGhzPSEwLHRoaXMuX3JlcG9zaXRpb25BbGxHbHlwaHM9ITAsdGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uPXZvaWQgMCx0aGlzLl9yZW1vdmVDYWxsYmFja0Z1bmM9dm9pZCAwLHRoaXMuX21vZGU9dm9pZCAwLHRoaXMuX2NsdXN0ZXJTaG93PSEwLHRoaXMudGV4dD1aKHQudGV4dCwiIiksdGhpcy5fcmVsYXRpdmVTaXplPTEsWnkodGhpcyksdGhpcy5fdXBkYXRlQ2xhbXBpbmcoKX1mdW5jdGlvbiBFZXQodCxlKXtsZXQgaT0vW2EtekEtWjAtOV0vLG49L1soKVtcXXt9PD5dLyxzPVtdLG89IiIscj1Scy5MVFIsYT0iIixoPXQubGVuZ3RoO2ZvcihsZXQgQT0wO0E8aDsrK0Epe2xldCBkPXQuY2hhckF0KEEpO2UudGVzdChkKT9hPVJzLlJUTDppLnRlc3QoZCk/YT1Scy5MVFI6bi50ZXN0KGQpP2E9UnMuQlJBQ0tFVFM6YT1Scy5XRUFLLEE9PT0wJiYocj1hKSxyPT09YSYmYSE9PVJzLkJSQUNLRVRTP28rPWQ6KG8hPT0iIiYmcy5wdXNoKHtUeXBlOnIsV29yZDpvfSkscj1hLG89ZCl9cmV0dXJuIHMucHVzaCh7VHlwZTphLFdvcmQ6b30pLHN9ZnVuY3Rpb24gX2V0KHQpe3JldHVybiB0LnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIil9ZnVuY3Rpb24gV0UodCxlLGkpe3JldHVybiB0LnNsaWNlKDAsZSkraSt0LnNsaWNlKGUpfWZ1bmN0aW9uIFJldCh0KXtzd2l0Y2godCl7Y2FzZSIoIjpyZXR1cm4iKSI7Y2FzZSIpIjpyZXR1cm4iKCI7Y2FzZSJbIjpyZXR1cm4iXSI7Y2FzZSJdIjpyZXR1cm4iWyI7Y2FzZSJ7IjpyZXR1cm4ifSI7Y2FzZSJ9IjpyZXR1cm4ieyI7Y2FzZSI8IjpyZXR1cm4iPiI7Y2FzZSI+IjpyZXR1cm4iPCJ9fWZ1bmN0aW9uIHBldCh0KXtsZXQgZT10LnNwbGl0KGAKYCksaT0iIjtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHM9ZVtuXSxvPVJ5LnRlc3Qocy5jaGFyQXQoMCkpLHI9RWV0KHMsUnkpLGE9MCxoPSIiO2ZvcihsZXQgQT0wO0E8ci5sZW5ndGg7KytBKXtsZXQgZD1yW0FdLGY9ZC5UeXBlPT09UnMuQlJBQ0tFVFM/UmV0KGQuV29yZCk6X2V0KGQuV29yZCk7bz9kLlR5cGU9PT1Scy5SVEw/KGg9ZitoLGE9MCk6ZC5UeXBlPT09UnMuTFRSPyhoPVdFKGgsYSxkLldvcmQpLGErPWQuV29yZC5sZW5ndGgpOihkLlR5cGU9PT1Scy5XRUFLfHxkLlR5cGU9PT1Scy5CUkFDS0VUUykmJihkLlR5cGU9PT1Scy5XRUFLJiZyW0EtMV0uVHlwZT09PVJzLkJSQUNLRVRTP2g9ZitoOnJbQS0xXS5UeXBlPT09UnMuUlRMPyhoPWYraCxhPTApOnIubGVuZ3RoPkErMT9yW0ErMV0uVHlwZT09PVJzLlJUTD8oaD1mK2gsYT0wKTooaD1XRShoLGEsZC5Xb3JkKSxhKz1kLldvcmQubGVuZ3RoKTpoPVdFKGgsMCxmKSk6ZC5UeXBlPT09UnMuUlRMP2g9V0UoaCxhLGYpOmQuVHlwZT09PVJzLkxUUj8oaCs9ZC5Xb3JkLGE9aC5sZW5ndGgpOihkLlR5cGU9PT1Scy5XRUFLfHxkLlR5cGU9PT1Scy5CUkFDS0VUUykmJihBPjAmJnJbQS0xXS5UeXBlPT09UnMuUlRMP3IubGVuZ3RoPkErMT9yW0ErMV0uVHlwZT09PVJzLlJUTD9oPVdFKGgsYSxmKTooaCs9ZC5Xb3JkLGE9aC5sZW5ndGgpOmgrPWQuV29yZDooaCs9ZC5Xb3JkLGE9aC5sZW5ndGgpKX1pKz1oLG48ZS5sZW5ndGgtMSYmKGkrPWAKYCl9cmV0dXJuIGl9dmFyIEV5LF95LGRldCxtZXQsZmV0LFJzLFpldCxJZXQsUnksREUsSFQ9UygoKT0+e0VyKCk7WGUoKTtIdCgpO1FuKCk7RnQoKTttdCgpO090KCk7elooKTtJRSgpO3NJKCk7U20oKTtPbSgpO2pUKCk7X0koKTtDRSgpO0V5PXt9LF95PTAsZGV0PTI1NixtZXQ9bmV3IFp0KC4xNjUsLjE2NSwuMTY1LC44KSxmZXQ9bmV3IG50KDcsNSksUnM9T2JqZWN0LmZyZWV6ZSh7TFRSOjAsUlRMOjEsV0VBSzoyLEJSQUNLRVRTOjN9KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsaC5wcm90b3R5cGUse3Nob3c6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaG93fSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2lmKHRoaXMuX3Nob3chPT10KXt0aGlzLl9zaG93PXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXS5iaWxsYm9hcmQ7bShvKSYmKG8uc2hvdz10KX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLnNob3c9dCl9fX0scG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10aGlzLl9wb3NpdGlvbjtpZighbC5lcXVhbHMoZSx0KSl7bC5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc10uYmlsbGJvYXJkO20ocikmJihyLnBvc2l0aW9uPXQpfWxldCBuPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShuKSYmKG4ucG9zaXRpb249dCksdGhpcy5fdXBkYXRlQ2xhbXBpbmcoKX19fSxoZWlnaHRSZWZlcmVuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWlnaHRSZWZlcmVuY2V9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7aWYodCE9PXRoaXMuX2hlaWdodFJlZmVyZW5jZSl7dGhpcy5faGVpZ2h0UmVmZXJlbmNlPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXS5iaWxsYm9hcmQ7bShvKSYmKG8uaGVpZ2h0UmVmZXJlbmNlPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuaGVpZ2h0UmVmZXJlbmNlPXQpLEJFKHRoaXMpLHRoaXMuX3VwZGF0ZUNsYW1waW5nKCl9fX0sdGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7aWYodGhpcy5fdGV4dCE9PXQpe3RoaXMuX3RleHQ9dDtsZXQgZT10LnJlcGxhY2UoL1x1MDBhZC9nLCIiKTt0aGlzLl9yZW5kZXJlZFRleHQ9bGguZW5hYmxlUmlnaHRUb0xlZnREZXRlY3Rpb24/cGV0KGUpOmUsU2wodGhpcyl9fX0sZm9udDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvbnR9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7dGhpcy5fZm9udCE9PXQmJih0aGlzLl9mb250PXQsU2wodGhpcyksWnkodGhpcykpfX0sZmlsbENvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2ZpbGxDb2xvcjtadC5lcXVhbHMoZSx0KXx8KFp0LmNsb25lKHQsZSksU2wodGhpcykpfX0sb3V0bGluZUNvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0bGluZUNvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX291dGxpbmVDb2xvcjtadC5lcXVhbHMoZSx0KXx8KFp0LmNsb25lKHQsZSksU2wodGhpcykpfX0sb3V0bGluZVdpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0bGluZVdpZHRofSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuX291dGxpbmVXaWR0aCE9PXQmJih0aGlzLl9vdXRsaW5lV2lkdGg9dCxTbCh0aGlzKSl9fSxzaG93QmFja2dyb3VuZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nob3dCYWNrZ3JvdW5kfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3Nob3dCYWNrZ3JvdW5kIT09dCYmKHRoaXMuX3Nob3dCYWNrZ3JvdW5kPXQsU2wodGhpcykpfX0sYmFja2dyb3VuZENvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2JhY2tncm91bmRDb2xvcjtpZighWnQuZXF1YWxzKGUsdCkpe1p0LmNsb25lKHQsZSk7bGV0IGk9dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZDttKGkpJiYoaS5jb2xvcj1lKX19fSxiYWNrZ3JvdW5kUGFkZGluZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRQYWRkaW5nfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2JhY2tncm91bmRQYWRkaW5nO250LmVxdWFscyhlLHQpfHwobnQuY2xvbmUodCxlKSxCRSh0aGlzKSl9fSxzdHlsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0eWxlfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3N0eWxlIT09dCYmKHRoaXMuX3N0eWxlPXQsU2wodGhpcykpfX0scGl4ZWxPZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbE9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10aGlzLl9waXhlbE9mZnNldDtpZighbnQuZXF1YWxzKGUsdCkpe250LmNsb25lKHQsZSk7bGV0IGk9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgcz0wLG89aS5sZW5ndGg7czxvO3MrKyl7bGV0IHI9aVtzXTttKHIuYmlsbGJvYXJkKSYmKHIuYmlsbGJvYXJkLnBpeGVsT2Zmc2V0PXQpfWxldCBuPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShuKSYmKG4ucGl4ZWxPZmZzZXQ9dCl9fX0sdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiZ0LmZhcjw9dC5uZWFyKXRocm93IG5ldyBZKCJmYXIgZGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gbmVhciBkaXN0YW5jZS4iKTtsZXQgZT10aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlO2lmKCFnaS5lcXVhbHMoZSx0KSl7dGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlPXQpfWxldCBuPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShuKSYmKG4udHJhbnNsdWNlbmN5QnlEaXN0YW5jZT10KX19fSxwaXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlfSxzZXQ6ZnVuY3Rpb24odCl7aWYobSh0KSYmdC5mYXI8PXQubmVhcil0aHJvdyBuZXcgWSgiZmFyIGRpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIgZGlzdGFuY2UuIik7bGV0IGU9dGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U7aWYoIWdpLmVxdWFscyhlLHQpKXt0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZT10KX1sZXQgbj10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20obikmJihuLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPXQpfX19LHNjYWxlQnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NjYWxlQnlEaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJnQuZmFyPD10Lm5lYXIpdGhyb3cgbmV3IFkoImZhciBkaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIGRpc3RhbmNlLiIpO2xldCBlPXRoaXMuX3NjYWxlQnlEaXN0YW5jZTtpZighZ2kuZXF1YWxzKGUsdCkpe3RoaXMuX3NjYWxlQnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC5zY2FsZUJ5RGlzdGFuY2U9dCl9bGV0IG49dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZDttKG4pJiYobi5zY2FsZUJ5RGlzdGFuY2U9dCl9fX0sZXllT2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXllT2Zmc2V0fSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2V5ZU9mZnNldDtpZighbC5lcXVhbHMoZSx0KSl7bC5jbG9uZSh0LGUpO2xldCBpPXRoaXMuX2dseXBocztmb3IobGV0IHM9MCxvPWkubGVuZ3RoO3M8bztzKyspe2xldCByPWlbc107bShyLmJpbGxib2FyZCkmJihyLmJpbGxib2FyZC5leWVPZmZzZXQ9dCl9bGV0IG49dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZDttKG4pJiYobi5leWVPZmZzZXQ9dCl9fX0saG9yaXpvbnRhbE9yaWdpbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hvcml6b250YWxPcmlnaW59LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7dGhpcy5faG9yaXpvbnRhbE9yaWdpbiE9PXQmJih0aGlzLl9ob3Jpem9udGFsT3JpZ2luPXQsQkUodGhpcykpfX0sdmVydGljYWxPcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0aWNhbE9yaWdpbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtpZih0aGlzLl92ZXJ0aWNhbE9yaWdpbiE9PXQpe3RoaXMuX3ZlcnRpY2FsT3JpZ2luPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXTttKG8uYmlsbGJvYXJkKSYmKG8uYmlsbGJvYXJkLnZlcnRpY2FsT3JpZ2luPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkudmVydGljYWxPcmlnaW49dCksQkUodGhpcyl9fX0sc2NhbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtpZih0aGlzLl9zY2FsZSE9PXQpe3RoaXMuX3NjYWxlPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXTttKG8uYmlsbGJvYXJkKSYmKG8uYmlsbGJvYXJkLnNjYWxlPXQqdGhpcy5fcmVsYXRpdmVTaXplKX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLnNjYWxlPXQqdGhpcy5fcmVsYXRpdmVTaXplKSxCRSh0aGlzKX19fSx0b3RhbFNjYWxlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2NhbGUqdGhpcy5fcmVsYXRpdmVTaXplfX0sZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7aWYobSh0KSYmdC5mYXI8PXQubmVhcil0aHJvdyBuZXcgWSgiZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5lYXIiKTtpZighV28uZXF1YWxzKHQsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSl7dGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVdvLmNsb25lKHQsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKTtsZXQgZT10aGlzLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtsZXQgbz1lW25dO20oby5iaWxsYm9hcmQpJiYoby5iaWxsYm9hcmQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXQpfX19LGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSE9PXQpe2lmKG0odCkmJnQ8MCl0aHJvdyBuZXcgWSgiZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuMC4iKTt0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dDtsZXQgZT10aGlzLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtsZXQgbz1lW25dO20oby5iaWxsYm9hcmQpJiYoby5iaWxsYm9hcmQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXQpfX19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9LHNldDpmdW5jdGlvbih0KXtpZih0aGlzLl9pZCE9PXQpe3RoaXMuX2lkPXQ7bGV0IGU9dGhpcy5fZ2x5cGhzO2ZvcihsZXQgbj0wLHM9ZS5sZW5ndGg7bjxzO24rKyl7bGV0IG89ZVtuXTttKG8uYmlsbGJvYXJkKSYmKG8uYmlsbGJvYXJkLmlkPXQpfWxldCBpPXRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmQ7bShpKSYmKGkuaWQ9dCl9fX0scGlja0lkOntnZXQ6ZnVuY3Rpb24oKXtpZighKHRoaXMuX2dseXBocy5sZW5ndGg9PT0wfHwhbSh0aGlzLl9nbHlwaHNbMF0uYmlsbGJvYXJkKSkpcmV0dXJuIHRoaXMuX2dseXBoc1swXS5iaWxsYm9hcmQucGlja0lkfX0sX2NsYW1wZWRQb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdHVhbENsYW1wZWRQb3NpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2FjdHVhbENsYW1wZWRQb3NpdGlvbj1sLmNsb25lKHQsdGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uKTtsZXQgZT10aGlzLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtsZXQgbz1lW25dO20oby5iaWxsYm9hcmQpJiYoby5iaWxsYm9hcmQuX2NsYW1wZWRQb3NpdGlvbj10KX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLl9jbGFtcGVkUG9zaXRpb249dCl9fSxjbHVzdGVyU2hvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJTaG93fSxzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5fY2x1c3RlclNob3chPT10KXt0aGlzLl9jbHVzdGVyU2hvdz10O2xldCBlPXRoaXMuX2dseXBocztmb3IobGV0IG49MCxzPWUubGVuZ3RoO248cztuKyspe2xldCBvPWVbbl07bShvLmJpbGxib2FyZCkmJihvLmJpbGxib2FyZC5jbHVzdGVyU2hvdz10KX1sZXQgaT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkO20oaSkmJihpLmNsdXN0ZXJTaG93PXQpfX19fSk7bGgucHJvdG90eXBlLl91cGRhdGVDbGFtcGluZz1mdW5jdGlvbigpe3VuLl91cGRhdGVDbGFtcGluZyh0aGlzLl9sYWJlbENvbGxlY3Rpb24sdGhpcyl9O2xoLnByb3RvdHlwZS5jb21wdXRlU2NyZWVuU3BhY2VQb3NpdGlvbj1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzY2VuZSBpcyByZXF1aXJlZC4iKTttKGUpfHwoZT1uZXcgbnQpO2xldCBuPXRoaXMuX2xhYmVsQ29sbGVjdGlvbi5tb2RlbE1hdHJpeCxzPW0odGhpcy5fYWN0dWFsQ2xhbXBlZFBvc2l0aW9uKT90aGlzLl9hY3R1YWxDbGFtcGVkUG9zaXRpb246dGhpcy5fcG9zaXRpb247cmV0dXJuIHVuLl9jb21wdXRlU2NyZWVuU3BhY2VQb3NpdGlvbihuLHMsdGhpcy5fZXllT2Zmc2V0LHRoaXMuX3BpeGVsT2Zmc2V0LHQsZSl9O2xoLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3g9ZnVuY3Rpb24odCxlLGkpe2xldCBuPTAscz0wLG89MCxyPTAsYT10LnRvdGFsU2NhbGUsaD10Ll9iYWNrZ3JvdW5kQmlsbGJvYXJkO2lmKG0oaCkpbj1lLngraC5fdHJhbnNsYXRlLngscz1lLnktaC5fdHJhbnNsYXRlLnksbz1oLndpZHRoKmEscj1oLmhlaWdodCphLHQudmVydGljYWxPcmlnaW49PT1tbi5CT1RUT018fHQudmVydGljYWxPcmlnaW49PT1tbi5CQVNFTElORT9zLT1yOnQudmVydGljYWxPcmlnaW49PT1tbi5DRU5URVImJihzLT1yKi41KTtlbHNle249TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBBPTAsZD0wLGY9dC5fZ2x5cGhzLEU9Zi5sZW5ndGg7Zm9yKGxldCBfPTA7XzxFOysrXyl7bGV0IFI9ZltfXSxJPVIuYmlsbGJvYXJkO2lmKCFtKEkpKWNvbnRpbnVlO2xldCBDPWUueCtJLl90cmFuc2xhdGUueCxOPWUueS1JLl90cmFuc2xhdGUueSxUPVIuZGltZW5zaW9ucy53aWR0aCphLGI9Ui5kaW1lbnNpb25zLmhlaWdodCphO3QudmVydGljYWxPcmlnaW49PT1tbi5CT1RUT018fHQudmVydGljYWxPcmlnaW49PT1tbi5CQVNFTElORT9OLT1iOnQudmVydGljYWxPcmlnaW49PT1tbi5DRU5URVImJihOLT1iKi41KSx0Ll92ZXJ0aWNhbE9yaWdpbj09PW1uLlRPUD9OKz1wby5QQURESU5HKmE6KHQuX3ZlcnRpY2FsT3JpZ2luPT09bW4uQk9UVE9NfHx0Ll92ZXJ0aWNhbE9yaWdpbj09PW1uLkJBU0VMSU5FKSYmKE4tPXBvLlBBRERJTkcqYSksbj1NYXRoLm1pbihuLEMpLHM9TWF0aC5taW4ocyxOKSxBPU1hdGgubWF4KEEsQytUKSxkPU1hdGgubWF4KGQsTitiKX1vPUEtbixyPWQtc31yZXR1cm4gbShpKXx8KGk9bmV3IG1pKSxpLng9bixpLnk9cyxpLndpZHRoPW8saS5oZWlnaHQ9cixpfTtsaC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmdGhpcy5fc2hvdz09PXQuX3Nob3cmJnRoaXMuX3NjYWxlPT09dC5fc2NhbGUmJnRoaXMuX291dGxpbmVXaWR0aD09PXQuX291dGxpbmVXaWR0aCYmdGhpcy5fc2hvd0JhY2tncm91bmQ9PT10Ll9zaG93QmFja2dyb3VuZCYmdGhpcy5fc3R5bGU9PT10Ll9zdHlsZSYmdGhpcy5fdmVydGljYWxPcmlnaW49PT10Ll92ZXJ0aWNhbE9yaWdpbiYmdGhpcy5faG9yaXpvbnRhbE9yaWdpbj09PXQuX2hvcml6b250YWxPcmlnaW4mJnRoaXMuX2hlaWdodFJlZmVyZW5jZT09PXQuX2hlaWdodFJlZmVyZW5jZSYmdGhpcy5fcmVuZGVyZWRUZXh0PT09dC5fcmVuZGVyZWRUZXh0JiZ0aGlzLl9mb250PT09dC5fZm9udCYmbC5lcXVhbHModGhpcy5fcG9zaXRpb24sdC5fcG9zaXRpb24pJiZadC5lcXVhbHModGhpcy5fZmlsbENvbG9yLHQuX2ZpbGxDb2xvcikmJlp0LmVxdWFscyh0aGlzLl9vdXRsaW5lQ29sb3IsdC5fb3V0bGluZUNvbG9yKSYmWnQuZXF1YWxzKHRoaXMuX2JhY2tncm91bmRDb2xvcix0Ll9iYWNrZ3JvdW5kQ29sb3IpJiZudC5lcXVhbHModGhpcy5fYmFja2dyb3VuZFBhZGRpbmcsdC5fYmFja2dyb3VuZFBhZGRpbmcpJiZudC5lcXVhbHModGhpcy5fcGl4ZWxPZmZzZXQsdC5fcGl4ZWxPZmZzZXQpJiZsLmVxdWFscyh0aGlzLl9leWVPZmZzZXQsdC5fZXllT2Zmc2V0KSYmZ2kuZXF1YWxzKHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdC5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSkmJmdpLmVxdWFscyh0aGlzLl9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSx0Ll9waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSkmJmdpLmVxdWFscyh0aGlzLl9zY2FsZUJ5RGlzdGFuY2UsdC5fc2NhbGVCeURpc3RhbmNlKSYmV28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0Ll9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pJiZ0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9PT10Ll9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UmJnRoaXMuX2lkPT09dC5faWR9O2xoLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtsaC5lbmFibGVSaWdodFRvTGVmdERldGVjdGlvbj0hMTtaZXQ9Ilx1MDVEMC1cdTA1RUEiLElldD0iXHUwNjAwLVx1MDZGRlx1MDc1MC1cdTA3N0ZcdTA4QTAtXHUwOEZGIixSeT1uZXcgUmVnRXhwKGBbJHtaZXR9JHtJZXR9XWApO0RFPWxofSk7ZnVuY3Rpb24gdWV0KHQsZSxpLG4scyl7bGV0IG89dC5tZWFzdXJlVGV4dChlKTtpZighIS9cUy8udGVzdChlKSl7bGV0IGE9ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LmNhbnZhcykuZ2V0UHJvcGVydHlWYWx1ZSgiZm9udC1zaXplIikucmVwbGFjZSgicHgiLCIiKSxoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLEE9MTAwLGQ9by53aWR0aCtBfDAsZj0zKmEsRT1mLzI7aC53aWR0aD1kLGguaGVpZ2h0PWY7bGV0IF89aC5nZXRDb250ZXh0KCIyZCIpO18uZm9udD1pLF8uZmlsbFN0eWxlPSJ3aGl0ZSIsXy5maWxsUmVjdCgwLDAsaC53aWR0aCsxLGguaGVpZ2h0KzEpLG4mJihfLnN0cm9rZVN0eWxlPSJibGFjayIsXy5saW5lV2lkdGg9dC5saW5lV2lkdGgsXy5zdHJva2VUZXh0KGUsQS8yLEUpKSxzJiYoXy5maWxsU3R5bGU9ImJsYWNrIixfLmZpbGxUZXh0KGUsQS8yLEUpKTtsZXQgUj1fLmdldEltYWdlRGF0YSgwLDAsZCxmKS5kYXRhLEk9Ui5sZW5ndGgsQz1kKjQsTixULGIsRjtmb3IoTj0wO048STsrK04paWYoUltOXSE9PTI1NSl7Yj1OL0N8MDticmVha31mb3IoTj1JLTE7Tj49MDstLU4paWYoUltOXSE9PTI1NSl7Rj1OL0N8MDticmVha31sZXQgQj0tMTtmb3IoTj0wO048ZCYmQj09PS0xOysrTilmb3IoVD0wO1Q8ZjsrK1Qpe2xldCBVPU4qNCtUKkM7aWYoUltVXSE9PTI1NXx8UltVKzFdIT09MjU1fHxSW1UrMl0hPT0yNTV8fFJbVSszXSE9PTI1NSl7Qj1OO2JyZWFrfX1yZXR1cm57d2lkdGg6by53aWR0aCxoZWlnaHQ6Ri1iLGFzY2VudDpFLWIsZGVzY2VudDpGLUUsbWlueDpCLUEvMn19cmV0dXJue3dpZHRoOm8ud2lkdGgsaGVpZ2h0OjAsYXNjZW50OjAsZGVzY2VudDowLG1pbng6MH19ZnVuY3Rpb24gQ2V0KHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInRleHQgaXMgcmVxdWlyZWQuIik7aWYodD09PSIiKXJldHVybjtlPVooZSxaLkVNUFRZX09CSkVDVCk7bGV0IGk9WihlLmZvbnQsIjEwcHggc2Fucy1zZXJpZiIpLG49WihlLnN0cm9rZSwhMSkscz1aKGUuZmlsbCwhMCksbz1aKGUuc3Ryb2tlV2lkdGgsMSkscj1aKGUuYmFja2dyb3VuZENvbG9yLFp0LlRSQU5TUEFSRU5UKSxhPVooZS5wYWRkaW5nLDApLGg9YSoyLEE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7QS53aWR0aD0xLEEuaGVpZ2h0PTEsQS5zdHlsZS5mb250PWk7bGV0IGQ9QS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO20oT2wpfHwobShkLmltYWdlU21vb3RoaW5nRW5hYmxlZCk/T2w9ImltYWdlU21vb3RoaW5nRW5hYmxlZCI6bShkLm1vekltYWdlU21vb3RoaW5nRW5hYmxlZCk/T2w9Im1vekltYWdlU21vb3RoaW5nRW5hYmxlZCI6bShkLndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCk/T2w9IndlYmtpdEltYWdlU21vb3RoaW5nRW5hYmxlZCI6bShkLm1zSW1hZ2VTbW9vdGhpbmdFbmFibGVkKSYmKE9sPSJtc0ltYWdlU21vb3RoaW5nRW5hYmxlZCIpKSxkLmZvbnQ9aSxkLmxpbmVKb2luPSJyb3VuZCIsZC5saW5lV2lkdGg9byxkW09sXT0hMSxBLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChBKTtsZXQgZj11ZXQoZCx0LGksbixzKTtBLmRpbWVuc2lvbnM9Zixkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKEEpLEEuc3R5bGUudmlzaWJpbGl0eT0iIjtsZXQgRT0tZi5taW54LF89TWF0aC5jZWlsKGYud2lkdGgpK0UraCxSPWYuaGVpZ2h0K2gsST1SLWYuYXNjZW50K2EsQz1SLUkraDtpZihBLndpZHRoPV8sQS5oZWlnaHQ9UixkLmZvbnQ9aSxkLmxpbmVKb2luPSJyb3VuZCIsZC5saW5lV2lkdGg9byxkW09sXT0hMSxyIT09WnQuVFJBTlNQQVJFTlQmJihkLmZpbGxTdHlsZT1yLnRvQ3NzQ29sb3JTdHJpbmcoKSxkLmZpbGxSZWN0KDAsMCxBLndpZHRoLEEuaGVpZ2h0KSksbil7bGV0IE49WihlLnN0cm9rZUNvbG9yLFp0LkJMQUNLKTtkLnN0cm9rZVN0eWxlPU4udG9Dc3NDb2xvclN0cmluZygpLGQuc3Ryb2tlVGV4dCh0LEUrYSxDKX1pZihzKXtsZXQgTj1aKGUuZmlsbENvbG9yLFp0LldISVRFKTtkLmZpbGxTdHlsZT1OLnRvQ3NzQ29sb3JTdHJpbmcoKSxkLmZpbGxUZXh0KHQsRSthLEMpfXJldHVybiBBfXZhciBPbCxJeSxweT1TKCgpPT57UW4oKTtGdCgpO210KCk7T3QoKTtJeT1DZXR9KTt2YXIgVHk9dHMoKGVVdCxneSk9PnsidXNlIHN0cmljdCI7Z3kuZXhwb3J0cz1nZXQ7dmFyIFVFPTFlMjA7ZnVuY3Rpb24gZ2V0KHQsZSl7ZXx8KGU9e30pO3ZhciBpPWUuY3V0b2ZmPT1udWxsPy4yNTplLmN1dG9mZixuPWUucmFkaXVzPT1udWxsPzg6ZS5yYWRpdXMscz1lLmNoYW5uZWx8fDAsbyxyLGEsaCxBLGQsZixFLF8sUixJO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KXx8QXJyYXkuaXNBcnJheSh0KSl7aWYoIWUud2lkdGh8fCFlLmhlaWdodCl0aHJvdyBFcnJvcigiRm9yIHJhdyBkYXRhIHdpZHRoIGFuZCBoZWlnaHQgc2hvdWxkIGJlIHByb3ZpZGVkIGJ5IG9wdGlvbnMiKTtvPWUud2lkdGgscj1lLmhlaWdodCxoPXQsZS5zdHJpZGU/ZD1lLnN0cmlkZTpkPU1hdGguZmxvb3IodC5sZW5ndGgvby9yKX1lbHNlIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MQ2FudmFzRWxlbWVudD8oRT10LGY9RS5nZXRDb250ZXh0KCIyZCIpLG89RS53aWR0aCxyPUUuaGVpZ2h0LF89Zi5nZXRJbWFnZURhdGEoMCwwLG8sciksaD1fLmRhdGEsZD00KTp3aW5kb3cuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEJiZ0IGluc3RhbmNlb2Ygd2luZG93LkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD8oRT10LmNhbnZhcyxmPXQsbz1FLndpZHRoLHI9RS5oZWlnaHQsXz1mLmdldEltYWdlRGF0YSgwLDAsbyxyKSxoPV8uZGF0YSxkPTQpOndpbmRvdy5JbWFnZURhdGEmJnQgaW5zdGFuY2VvZiB3aW5kb3cuSW1hZ2VEYXRhJiYoXz10LG89dC53aWR0aCxyPXQuaGVpZ2h0LGg9Xy5kYXRhLGQ9NCk7aWYoYT1NYXRoLm1heChvLHIpLHdpbmRvdy5VaW50OENsYW1wZWRBcnJheSYmaCBpbnN0YW5jZW9mIHdpbmRvdy5VaW50OENsYW1wZWRBcnJheXx8d2luZG93LlVpbnQ4QXJyYXkmJmggaW5zdGFuY2VvZiB3aW5kb3cuVWludDhBcnJheSlmb3IoQT1oLGg9QXJyYXkobypyKSxSPTAsST1NYXRoLmZsb29yKEEubGVuZ3RoL2QpO1I8STtSKyspaFtSXT1BW1IqZCtzXS8yNTU7ZWxzZSBpZihkIT09MSl0aHJvdyBFcnJvcigiUmF3IGRhdGEgY2FuIGhhdmUgb25seSAxIHZhbHVlIHBlciBwaXhlbCIpO3ZhciBDPUFycmF5KG8qciksTj1BcnJheShvKnIpLFQ9QXJyYXkoYSksYj1BcnJheShhKSxGPUFycmF5KGErMSksQj1BcnJheShhKTtmb3IoUj0wLEk9bypyO1I8STtSKyspe3ZhciBVPWhbUl07Q1tSXT1VPT09MT8wOlU9PT0wP1VFOk1hdGgucG93KE1hdGgubWF4KDAsLjUtVSksMiksTltSXT1VPT09MT9VRTpVPT09MD8wOk1hdGgucG93KE1hdGgubWF4KDAsVS0uNSksMil9dXkoQyxvLHIsVCxiLEIsRiksdXkoTixvLHIsVCxiLEIsRik7dmFyIFE9d2luZG93LkZsb2F0MzJBcnJheT9uZXcgRmxvYXQzMkFycmF5KG8qcik6bmV3IEFycmF5KG8qcik7Zm9yKFI9MCxJPW8qcjtSPEk7UisrKVFbUl09TWF0aC5taW4oTWF0aC5tYXgoMS0oKENbUl0tTltSXSkvbitpKSwwKSwxKTtyZXR1cm4gUX1mdW5jdGlvbiB1eSh0LGUsaSxuLHMsbyxyKXtmb3IodmFyIGE9MDthPGU7YSsrKXtmb3IodmFyIGg9MDtoPGk7aCsrKW5baF09dFtoKmUrYV07Zm9yKEN5KG4scyxvLHIsaSksaD0wO2g8aTtoKyspdFtoKmUrYV09c1toXX1mb3IoaD0wO2g8aTtoKyspe2ZvcihhPTA7YTxlO2ErKyluW2FdPXRbaCplK2FdO2ZvcihDeShuLHMsbyxyLGUpLGE9MDthPGU7YSsrKXRbaCplK2FdPU1hdGguc3FydChzW2FdKX19ZnVuY3Rpb24gQ3kodCxlLGksbixzKXtpWzBdPTAsblswXT0tVUUsblsxXT0rVUU7Zm9yKHZhciBvPTEscj0wO288cztvKyspe2Zvcih2YXIgYT0odFtvXStvKm8tKHRbaVtyXV0raVtyXSppW3JdKSkvKDIqby0yKmlbcl0pO2E8PW5bcl07KXItLSxhPSh0W29dK28qby0odFtpW3JdXStpW3JdKmlbcl0pKS8oMipvLTIqaVtyXSk7cisrLGlbcl09byxuW3JdPWEsbltyKzFdPStVRX1mb3Iobz0wLHI9MDtvPHM7bysrKXtmb3IoO25bcisxXTxvOylyKys7ZVtvXT0oby1pW3JdKSooby1pW3JdKSt0W2lbcl1dfX19KTt2YXIgTnk9dHMoKGlVdCxnSSk9PntmdW5jdGlvbiBUZXQoKXt2YXIgdD0wLGU9MSxpPTIsbj0zLHM9NCxvPTUscj02LGE9NyxoPTgsQT05LGQ9MTAsZj0xMSxFPTEyLF89MTMsUj0xNCxJPTE1LEM9MTYsTj0xNyxUPTAsYj0xLEY9MixCPTMsVT00O2Z1bmN0aW9uIFEoYyxnKXtyZXR1cm4gNTUyOTY8PWMuY2hhckNvZGVBdChnKSYmYy5jaGFyQ29kZUF0KGcpPD01NjMxOSYmNTYzMjA8PWMuY2hhckNvZGVBdChnKzEpJiZjLmNoYXJDb2RlQXQoZysxKTw9NTczNDN9ZnVuY3Rpb24gTShjLGcpe2c9PT12b2lkIDAmJihnPTApO3ZhciBPPWMuY2hhckNvZGVBdChnKTtpZig1NTI5Njw9TyYmTzw9NTYzMTkmJmc8Yy5sZW5ndGgtMSl7dmFyIEQ9Tyx3PWMuY2hhckNvZGVBdChnKzEpO3JldHVybiA1NjMyMDw9dyYmdzw9NTczNDM/KEQtNTUyOTYpKjEwMjQrKHctNTYzMjApKzY1NTM2OkR9aWYoNTYzMjA8PU8mJk88PTU3MzQzJiZnPj0xKXt2YXIgRD1jLmNoYXJDb2RlQXQoZy0xKSx3PU87cmV0dXJuIDU1Mjk2PD1EJiZEPD01NjMxOT8oRC01NTI5NikqMTAyNCsody01NjMyMCkrNjU1MzY6d31yZXR1cm4gT31mdW5jdGlvbiBrKGMsZyxPKXt2YXIgRD1bY10uY29uY2F0KGcpLmNvbmNhdChbT10pLHc9RFtELmxlbmd0aC0yXSx4PU8sSD1ELmxhc3RJbmRleE9mKFIpO2lmKEg+MSYmRC5zbGljZSgxLEgpLmV2ZXJ5KGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PW59KSYmW24sXyxOXS5pbmRleE9mKGMpPT0tMSlyZXR1cm4gRjt2YXIgaj1ELmxhc3RJbmRleE9mKHMpO2lmKGo+MCYmRC5zbGljZSgxLGopLmV2ZXJ5KGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PXN9KSYmW0Usc10uaW5kZXhPZih3KT09LTEpcmV0dXJuIEQuZmlsdGVyKGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PXN9KS5sZW5ndGglMj09MT9COlU7aWYodz09dCYmeD09ZSlyZXR1cm4gVDtpZih3PT1pfHx3PT10fHx3PT1lKXJldHVybiB4PT1SJiZnLmV2ZXJ5KGZ1bmN0aW9uKHR0KXtyZXR1cm4gdHQ9PW59KT9GOmI7aWYoeD09aXx8eD09dHx8eD09ZSlyZXR1cm4gYjtpZih3PT1yJiYoeD09cnx8eD09YXx8eD09QXx8eD09ZCkpcmV0dXJuIFQ7aWYoKHc9PUF8fHc9PWEpJiYoeD09YXx8eD09aCkpcmV0dXJuIFQ7aWYoKHc9PWR8fHc9PWgpJiZ4PT1oKXJldHVybiBUO2lmKHg9PW58fHg9PUkpcmV0dXJuIFQ7aWYoeD09bylyZXR1cm4gVDtpZih3PT1FKXJldHVybiBUO3ZhciBYPUQuaW5kZXhPZihuKSE9LTE/RC5sYXN0SW5kZXhPZihuKS0xOkQubGVuZ3RoLTI7cmV0dXJuW18sTl0uaW5kZXhPZihEW1hdKSE9LTEmJkQuc2xpY2UoWCsxLC0xKS5ldmVyeShmdW5jdGlvbih0dCl7cmV0dXJuIHR0PT1ufSkmJng9PVJ8fHc9PUkmJltDLE5dLmluZGV4T2YoeCkhPS0xP1Q6Zy5pbmRleE9mKHMpIT0tMT9GOnc9PXMmJng9PXM/VDpifXRoaXMubmV4dEJyZWFrPWZ1bmN0aW9uKGMsZyl7aWYoZz09PXZvaWQgMCYmKGc9MCksZzwwKXJldHVybiAwO2lmKGc+PWMubGVuZ3RoLTEpcmV0dXJuIGMubGVuZ3RoO2Zvcih2YXIgTz15KE0oYyxnKSksRD1bXSx3PWcrMTt3PGMubGVuZ3RoO3crKylpZighUShjLHctMSkpe3ZhciB4PXkoTShjLHcpKTtpZihrKE8sRCx4KSlyZXR1cm4gdztELnB1c2goeCl9cmV0dXJuIGMubGVuZ3RofSx0aGlzLnNwbGl0R3JhcGhlbWVzPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZz1bXSxPPTAsRDsoRD10aGlzLm5leHRCcmVhayhjLE8pKTxjLmxlbmd0aDspZy5wdXNoKGMuc2xpY2UoTyxEKSksTz1EO3JldHVybiBPPGMubGVuZ3RoJiZnLnB1c2goYy5zbGljZShPKSksZ30sdGhpcy5pdGVyYXRlR3JhcGhlbWVzPWZ1bmN0aW9uKGMpe3ZhciBnPTAsTz17bmV4dDpmdW5jdGlvbigpe3ZhciBELHc7cmV0dXJuKHc9dGhpcy5uZXh0QnJlYWsoYyxnKSk8Yy5sZW5ndGg/KEQ9Yy5zbGljZShnLHcpLGc9dyx7dmFsdWU6RCxkb25lOiExfSk6ZzxjLmxlbmd0aD8oRD1jLnNsaWNlKGcpLGc9Yy5sZW5ndGgse3ZhbHVlOkQsZG9uZTohMX0pOnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19LmJpbmQodGhpcyl9O3JldHVybiB0eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLml0ZXJhdG9yJiYoT1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIE99KSxPfSx0aGlzLmNvdW50R3JhcGhlbWVzPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZz0wLE89MCxEOyhEPXRoaXMubmV4dEJyZWFrKGMsTykpPGMubGVuZ3RoOylPPUQsZysrO3JldHVybiBPPGMubGVuZ3RoJiZnKyssZ307ZnVuY3Rpb24geShjKXtyZXR1cm4gMTUzNjw9YyYmYzw9MTU0MXx8Yz09MTc1N3x8Yz09MTgwN3x8Yz09MjI3NHx8Yz09MzQwNnx8Yz09Njk4MjF8fDcwMDgyPD1jJiZjPD03MDA4M3x8Yz09NzIyNTB8fDcyMzI2PD1jJiZjPD03MjMyOXx8Yz09NzMwMzA/RTpjPT0xMz90OmM9PTEwP2U6MDw9YyYmYzw9OXx8MTE8PWMmJmM8PTEyfHwxNDw9YyYmYzw9MzF8fDEyNzw9YyYmYzw9MTU5fHxjPT0xNzN8fGM9PTE1NjR8fGM9PTYxNTh8fGM9PTgyMDN8fDgyMDY8PWMmJmM8PTgyMDd8fGM9PTgyMzJ8fGM9PTgyMzN8fDgyMzQ8PWMmJmM8PTgyMzh8fDgyODg8PWMmJmM8PTgyOTJ8fGM9PTgyOTN8fDgyOTQ8PWMmJmM8PTgzMDN8fDU1Mjk2PD1jJiZjPD01NzM0M3x8Yz09NjUyNzl8fDY1NTIwPD1jJiZjPD02NTUyOHx8NjU1Mjk8PWMmJmM8PTY1NTMxfHwxMTM4MjQ8PWMmJmM8PTExMzgyN3x8MTE5MTU1PD1jJiZjPD0xMTkxNjJ8fGM9PTkxNzUwNHx8Yz09OTE3NTA1fHw5MTc1MDY8PWMmJmM8PTkxNzUzNXx8OTE3NjMyPD1jJiZjPD05MTc3NTl8fDkxOGUzPD1jJiZjPD05MjE1OTk/aTo3Njg8PWMmJmM8PTg3OXx8MTE1NTw9YyYmYzw9MTE1OXx8MTE2MDw9YyYmYzw9MTE2MXx8MTQyNTw9YyYmYzw9MTQ2OXx8Yz09MTQ3MXx8MTQ3Mzw9YyYmYzw9MTQ3NHx8MTQ3Njw9YyYmYzw9MTQ3N3x8Yz09MTQ3OXx8MTU1Mjw9YyYmYzw9MTU2Mnx8MTYxMTw9YyYmYzw9MTYzMXx8Yz09MTY0OHx8MTc1MDw9YyYmYzw9MTc1Nnx8MTc1OTw9YyYmYzw9MTc2NHx8MTc2Nzw9YyYmYzw9MTc2OHx8MTc3MDw9YyYmYzw9MTc3M3x8Yz09MTgwOXx8MTg0MDw9YyYmYzw9MTg2Nnx8MTk1ODw9YyYmYzw9MTk2OHx8MjAyNzw9YyYmYzw9MjAzNXx8MjA3MDw9YyYmYzw9MjA3M3x8MjA3NTw9YyYmYzw9MjA4M3x8MjA4NTw9YyYmYzw9MjA4N3x8MjA4OTw9YyYmYzw9MjA5M3x8MjEzNzw9YyYmYzw9MjEzOXx8MjI2MDw9YyYmYzw9MjI3M3x8MjI3NTw9YyYmYzw9MjMwNnx8Yz09MjM2Mnx8Yz09MjM2NHx8MjM2OTw9YyYmYzw9MjM3Nnx8Yz09MjM4MXx8MjM4NTw9YyYmYzw9MjM5MXx8MjQwMjw9YyYmYzw9MjQwM3x8Yz09MjQzM3x8Yz09MjQ5Mnx8Yz09MjQ5NHx8MjQ5Nzw9YyYmYzw9MjUwMHx8Yz09MjUwOXx8Yz09MjUxOXx8MjUzMDw9YyYmYzw9MjUzMXx8MjU2MTw9YyYmYzw9MjU2Mnx8Yz09MjYyMHx8MjYyNTw9YyYmYzw9MjYyNnx8MjYzMTw9YyYmYzw9MjYzMnx8MjYzNTw9YyYmYzw9MjYzN3x8Yz09MjY0MXx8MjY3Mjw9YyYmYzw9MjY3M3x8Yz09MjY3N3x8MjY4OTw9YyYmYzw9MjY5MHx8Yz09Mjc0OHx8Mjc1Mzw9YyYmYzw9Mjc1N3x8Mjc1OTw9YyYmYzw9Mjc2MHx8Yz09Mjc2NXx8Mjc4Njw9YyYmYzw9Mjc4N3x8MjgxMDw9YyYmYzw9MjgxNXx8Yz09MjgxN3x8Yz09Mjg3Nnx8Yz09Mjg3OHx8Yz09Mjg3OXx8Mjg4MTw9YyYmYzw9Mjg4NHx8Yz09Mjg5M3x8Yz09MjkwMnx8Yz09MjkwM3x8MjkxNDw9YyYmYzw9MjkxNXx8Yz09Mjk0Nnx8Yz09MzAwNnx8Yz09MzAwOHx8Yz09MzAyMXx8Yz09MzAzMXx8Yz09MzA3Mnx8MzEzNDw9YyYmYzw9MzEzNnx8MzE0Mjw9YyYmYzw9MzE0NHx8MzE0Njw9YyYmYzw9MzE0OXx8MzE1Nzw9YyYmYzw9MzE1OHx8MzE3MDw9YyYmYzw9MzE3MXx8Yz09MzIwMXx8Yz09MzI2MHx8Yz09MzI2M3x8Yz09MzI2Nnx8Yz09MzI3MHx8MzI3Njw9YyYmYzw9MzI3N3x8MzI4NTw9YyYmYzw9MzI4Nnx8MzI5ODw9YyYmYzw9MzI5OXx8MzMyODw9YyYmYzw9MzMyOXx8MzM4Nzw9YyYmYzw9MzM4OHx8Yz09MzM5MHx8MzM5Mzw9YyYmYzw9MzM5Nnx8Yz09MzQwNXx8Yz09MzQxNXx8MzQyNjw9YyYmYzw9MzQyN3x8Yz09MzUzMHx8Yz09MzUzNXx8MzUzODw9YyYmYzw9MzU0MHx8Yz09MzU0Mnx8Yz09MzU1MXx8Yz09MzYzM3x8MzYzNjw9YyYmYzw9MzY0Mnx8MzY1NTw9YyYmYzw9MzY2Mnx8Yz09Mzc2MXx8Mzc2NDw9YyYmYzw9Mzc2OXx8Mzc3MTw9YyYmYzw9Mzc3Mnx8Mzc4NDw9YyYmYzw9Mzc4OXx8Mzg2NDw9YyYmYzw9Mzg2NXx8Yz09Mzg5M3x8Yz09Mzg5NXx8Yz09Mzg5N3x8Mzk1Mzw9YyYmYzw9Mzk2Nnx8Mzk2ODw9YyYmYzw9Mzk3Mnx8Mzk3NDw9YyYmYzw9Mzk3NXx8Mzk4MTw9YyYmYzw9Mzk5MXx8Mzk5Mzw9YyYmYzw9NDAyOHx8Yz09NDAzOHx8NDE0MTw9YyYmYzw9NDE0NHx8NDE0Njw9YyYmYzw9NDE1MXx8NDE1Mzw9YyYmYzw9NDE1NHx8NDE1Nzw9YyYmYzw9NDE1OHx8NDE4NDw9YyYmYzw9NDE4NXx8NDE5MDw9YyYmYzw9NDE5Mnx8NDIwOTw9YyYmYzw9NDIxMnx8Yz09NDIyNnx8NDIyOTw9YyYmYzw9NDIzMHx8Yz09NDIzN3x8Yz09NDI1M3x8NDk1Nzw9YyYmYzw9NDk1OXx8NTkwNjw9YyYmYzw9NTkwOHx8NTkzODw9YyYmYzw9NTk0MHx8NTk3MDw9YyYmYzw9NTk3MXx8NjAwMjw9YyYmYzw9NjAwM3x8NjA2ODw9YyYmYzw9NjA2OXx8NjA3MTw9YyYmYzw9NjA3N3x8Yz09NjA4Nnx8NjA4OTw9YyYmYzw9NjA5OXx8Yz09NjEwOXx8NjE1NTw9YyYmYzw9NjE1N3x8NjI3Nzw9YyYmYzw9NjI3OHx8Yz09NjMxM3x8NjQzMjw9YyYmYzw9NjQzNHx8NjQzOTw9YyYmYzw9NjQ0MHx8Yz09NjQ1MHx8NjQ1Nzw9YyYmYzw9NjQ1OXx8NjY3OTw9YyYmYzw9NjY4MHx8Yz09NjY4M3x8Yz09Njc0Mnx8Njc0NDw9YyYmYzw9Njc1MHx8Yz09Njc1Mnx8Yz09Njc1NHx8Njc1Nzw9YyYmYzw9Njc2NHx8Njc3MTw9YyYmYzw9Njc4MHx8Yz09Njc4M3x8NjgzMjw9YyYmYzw9Njg0NXx8Yz09Njg0Nnx8NjkxMjw9YyYmYzw9NjkxNXx8Yz09Njk2NHx8Njk2Njw9YyYmYzw9Njk3MHx8Yz09Njk3Mnx8Yz09Njk3OHx8NzAxOTw9YyYmYzw9NzAyN3x8NzA0MDw9YyYmYzw9NzA0MXx8NzA3NDw9YyYmYzw9NzA3N3x8NzA4MDw9YyYmYzw9NzA4MXx8NzA4Mzw9YyYmYzw9NzA4NXx8Yz09NzE0Mnx8NzE0NDw9YyYmYzw9NzE0NXx8Yz09NzE0OXx8NzE1MTw9YyYmYzw9NzE1M3x8NzIxMjw9YyYmYzw9NzIxOXx8NzIyMjw9YyYmYzw9NzIyM3x8NzM3Njw9YyYmYzw9NzM3OHx8NzM4MDw9YyYmYzw9NzM5Mnx8NzM5NDw9YyYmYzw9NzQwMHx8Yz09NzQwNXx8Yz09NzQxMnx8NzQxNjw9YyYmYzw9NzQxN3x8NzYxNjw9YyYmYzw9NzY3M3x8NzY3NTw9YyYmYzw9NzY3OXx8Yz09ODIwNHx8ODQwMDw9YyYmYzw9ODQxMnx8ODQxMzw9YyYmYzw9ODQxNnx8Yz09ODQxN3x8ODQxODw9YyYmYzw9ODQyMHx8ODQyMTw9YyYmYzw9ODQzMnx8MTE1MDM8PWMmJmM8PTExNTA1fHxjPT0xMTY0N3x8MTE3NDQ8PWMmJmM8PTExNzc1fHwxMjMzMDw9YyYmYzw9MTIzMzN8fDEyMzM0PD1jJiZjPD0xMjMzNXx8MTI0NDE8PWMmJmM8PTEyNDQyfHxjPT00MjYwN3x8NDI2MDg8PWMmJmM8PTQyNjEwfHw0MjYxMjw9YyYmYzw9NDI2MjF8fDQyNjU0PD1jJiZjPD00MjY1NXx8NDI3MzY8PWMmJmM8PTQyNzM3fHxjPT00MzAxMHx8Yz09NDMwMTR8fGM9PTQzMDE5fHw0MzA0NTw9YyYmYzw9NDMwNDZ8fDQzMjA0PD1jJiZjPD00MzIwNXx8NDMyMzI8PWMmJmM8PTQzMjQ5fHw0MzMwMjw9YyYmYzw9NDMzMDl8fDQzMzM1PD1jJiZjPD00MzM0NXx8NDMzOTI8PWMmJmM8PTQzMzk0fHxjPT00MzQ0M3x8NDM0NDY8PWMmJmM8PTQzNDQ5fHxjPT00MzQ1Mnx8Yz09NDM0OTN8fDQzNTYxPD1jJiZjPD00MzU2Nnx8NDM1Njk8PWMmJmM8PTQzNTcwfHw0MzU3Mzw9YyYmYzw9NDM1NzR8fGM9PTQzNTg3fHxjPT00MzU5Nnx8Yz09NDM2NDR8fGM9PTQzNjk2fHw0MzY5ODw9YyYmYzw9NDM3MDB8fDQzNzAzPD1jJiZjPD00MzcwNHx8NDM3MTA8PWMmJmM8PTQzNzExfHxjPT00MzcxM3x8NDM3NTY8PWMmJmM8PTQzNzU3fHxjPT00Mzc2Nnx8Yz09NDQwMDV8fGM9PTQ0MDA4fHxjPT00NDAxM3x8Yz09NjQyODZ8fDY1MDI0PD1jJiZjPD02NTAzOXx8NjUwNTY8PWMmJmM8PTY1MDcxfHw2NTQzODw9YyYmYzw9NjU0Mzl8fGM9PTY2MDQ1fHxjPT02NjI3Mnx8NjY0MjI8PWMmJmM8PTY2NDI2fHw2ODA5Nzw9YyYmYzw9NjgwOTl8fDY4MTAxPD1jJiZjPD02ODEwMnx8NjgxMDg8PWMmJmM8PTY4MTExfHw2ODE1Mjw9YyYmYzw9NjgxNTR8fGM9PTY4MTU5fHw2ODMyNTw9YyYmYzw9NjgzMjZ8fGM9PTY5NjMzfHw2OTY4ODw9YyYmYzw9Njk3MDJ8fDY5NzU5PD1jJiZjPD02OTc2MXx8Njk4MTE8PWMmJmM8PTY5ODE0fHw2OTgxNzw9YyYmYzw9Njk4MTh8fDY5ODg4PD1jJiZjPD02OTg5MHx8Njk5Mjc8PWMmJmM8PTY5OTMxfHw2OTkzMzw9YyYmYzw9Njk5NDB8fGM9PTcwMDAzfHw3MDAxNjw9YyYmYzw9NzAwMTd8fDcwMDcwPD1jJiZjPD03MDA3OHx8NzAwOTA8PWMmJmM8PTcwMDkyfHw3MDE5MTw9YyYmYzw9NzAxOTN8fGM9PTcwMTk2fHw3MDE5ODw9YyYmYzw9NzAxOTl8fGM9PTcwMjA2fHxjPT03MDM2N3x8NzAzNzE8PWMmJmM8PTcwMzc4fHw3MDQwMDw9YyYmYzw9NzA0MDF8fGM9PTcwNDYwfHxjPT03MDQ2Mnx8Yz09NzA0NjR8fGM9PTcwNDg3fHw3MDUwMjw9YyYmYzw9NzA1MDh8fDcwNTEyPD1jJiZjPD03MDUxNnx8NzA3MTI8PWMmJmM8PTcwNzE5fHw3MDcyMjw9YyYmYzw9NzA3MjR8fGM9PTcwNzI2fHxjPT03MDgzMnx8NzA4MzU8PWMmJmM8PTcwODQwfHxjPT03MDg0Mnx8Yz09NzA4NDV8fDcwODQ3PD1jJiZjPD03MDg0OHx8NzA4NTA8PWMmJmM8PTcwODUxfHxjPT03MTA4N3x8NzEwOTA8PWMmJmM8PTcxMDkzfHw3MTEwMDw9YyYmYzw9NzExMDF8fDcxMTAzPD1jJiZjPD03MTEwNHx8NzExMzI8PWMmJmM8PTcxMTMzfHw3MTIxOTw9YyYmYzw9NzEyMjZ8fGM9PTcxMjI5fHw3MTIzMTw9YyYmYzw9NzEyMzJ8fGM9PTcxMzM5fHxjPT03MTM0MXx8NzEzNDQ8PWMmJmM8PTcxMzQ5fHxjPT03MTM1MXx8NzE0NTM8PWMmJmM8PTcxNDU1fHw3MTQ1ODw9YyYmYzw9NzE0NjF8fDcxNDYzPD1jJiZjPD03MTQ2N3x8NzIxOTM8PWMmJmM8PTcyMTk4fHw3MjIwMTw9YyYmYzw9NzIyMDJ8fDcyMjQzPD1jJiZjPD03MjI0OHx8NzIyNTE8PWMmJmM8PTcyMjU0fHxjPT03MjI2M3x8NzIyNzM8PWMmJmM8PTcyMjc4fHw3MjI4MTw9YyYmYzw9NzIyODN8fDcyMzMwPD1jJiZjPD03MjM0Mnx8NzIzNDQ8PWMmJmM8PTcyMzQ1fHw3Mjc1Mjw9YyYmYzw9NzI3NTh8fDcyNzYwPD1jJiZjPD03Mjc2NXx8Yz09NzI3Njd8fDcyODUwPD1jJiZjPD03Mjg3MXx8NzI4NzQ8PWMmJmM8PTcyODgwfHw3Mjg4Mjw9YyYmYzw9NzI4ODN8fDcyODg1PD1jJiZjPD03Mjg4Nnx8NzMwMDk8PWMmJmM8PTczMDE0fHxjPT03MzAxOHx8NzMwMjA8PWMmJmM8PTczMDIxfHw3MzAyMzw9YyYmYzw9NzMwMjl8fGM9PTczMDMxfHw5MjkxMjw9YyYmYzw9OTI5MTZ8fDkyOTc2PD1jJiZjPD05Mjk4Mnx8OTQwOTU8PWMmJmM8PTk0MDk4fHwxMTM4MjE8PWMmJmM8PTExMzgyMnx8Yz09MTE5MTQxfHwxMTkxNDM8PWMmJmM8PTExOTE0NXx8MTE5MTUwPD1jJiZjPD0xMTkxNTR8fDExOTE2Mzw9YyYmYzw9MTE5MTcwfHwxMTkxNzM8PWMmJmM8PTExOTE3OXx8MTE5MjEwPD1jJiZjPD0xMTkyMTN8fDExOTM2Mjw9YyYmYzw9MTE5MzY0fHwxMjEzNDQ8PWMmJmM8PTEyMTM5OHx8MTIxNDAzPD1jJiZjPD0xMjE0NTJ8fGM9PTEyMTQ2MXx8Yz09MTIxNDc2fHwxMjE0OTk8PWMmJmM8PTEyMTUwM3x8MTIxNTA1PD1jJiZjPD0xMjE1MTl8fDEyMjg4MDw9YyYmYzw9MTIyODg2fHwxMjI4ODg8PWMmJmM8PTEyMjkwNHx8MTIyOTA3PD1jJiZjPD0xMjI5MTN8fDEyMjkxNTw9YyYmYzw9MTIyOTE2fHwxMjI5MTg8PWMmJmM8PTEyMjkyMnx8MTI1MTM2PD1jJiZjPD0xMjUxNDJ8fDEyNTI1Mjw9YyYmYzw9MTI1MjU4fHw5MTc1MzY8PWMmJmM8PTkxNzYzMXx8OTE3NzYwPD1jJiZjPD05MTc5OTk/bjoxMjc0NjI8PWMmJmM8PTEyNzQ4Nz9zOmM9PTIzMDd8fGM9PTIzNjN8fDIzNjY8PWMmJmM8PTIzNjh8fDIzNzc8PWMmJmM8PTIzODB8fDIzODI8PWMmJmM8PTIzODN8fDI0MzQ8PWMmJmM8PTI0MzV8fDI0OTU8PWMmJmM8PTI0OTZ8fDI1MDM8PWMmJmM8PTI1MDR8fDI1MDc8PWMmJmM8PTI1MDh8fGM9PTI1NjN8fDI2MjI8PWMmJmM8PTI2MjR8fGM9PTI2OTF8fDI3NTA8PWMmJmM8PTI3NTJ8fGM9PTI3NjF8fDI3NjM8PWMmJmM8PTI3NjR8fDI4MTg8PWMmJmM8PTI4MTl8fGM9PTI4ODB8fDI4ODc8PWMmJmM8PTI4ODh8fDI4OTE8PWMmJmM8PTI4OTJ8fGM9PTMwMDd8fDMwMDk8PWMmJmM8PTMwMTB8fDMwMTQ8PWMmJmM8PTMwMTZ8fDMwMTg8PWMmJmM8PTMwMjB8fDMwNzM8PWMmJmM8PTMwNzV8fDMxMzc8PWMmJmM8PTMxNDB8fDMyMDI8PWMmJmM8PTMyMDN8fGM9PTMyNjJ8fDMyNjQ8PWMmJmM8PTMyNjV8fDMyNjc8PWMmJmM8PTMyNjh8fDMyNzE8PWMmJmM8PTMyNzJ8fDMyNzQ8PWMmJmM8PTMyNzV8fDMzMzA8PWMmJmM8PTMzMzF8fDMzOTE8PWMmJmM8PTMzOTJ8fDMzOTg8PWMmJmM8PTM0MDB8fDM0MDI8PWMmJmM8PTM0MDR8fDM0NTg8PWMmJmM8PTM0NTl8fDM1MzY8PWMmJmM8PTM1Mzd8fDM1NDQ8PWMmJmM8PTM1NTB8fDM1NzA8PWMmJmM8PTM1NzF8fGM9PTM2MzV8fGM9PTM3NjN8fDM5MDI8PWMmJmM8PTM5MDN8fGM9PTM5Njd8fGM9PTQxNDV8fDQxNTU8PWMmJmM8PTQxNTZ8fDQxODI8PWMmJmM8PTQxODN8fGM9PTQyMjh8fGM9PTYwNzB8fDYwNzg8PWMmJmM8PTYwODV8fDYwODc8PWMmJmM8PTYwODh8fDY0MzU8PWMmJmM8PTY0Mzh8fDY0NDE8PWMmJmM8PTY0NDN8fDY0NDg8PWMmJmM8PTY0NDl8fDY0NTE8PWMmJmM8PTY0NTZ8fDY2ODE8PWMmJmM8PTY2ODJ8fGM9PTY3NDF8fGM9PTY3NDN8fDY3NjU8PWMmJmM8PTY3NzB8fGM9PTY5MTZ8fGM9PTY5NjV8fGM9PTY5NzF8fDY5NzM8PWMmJmM8PTY5Nzd8fDY5Nzk8PWMmJmM8PTY5ODB8fGM9PTcwNDJ8fGM9PTcwNzN8fDcwNzg8PWMmJmM8PTcwNzl8fGM9PTcwODJ8fGM9PTcxNDN8fDcxNDY8PWMmJmM8PTcxNDh8fGM9PTcxNTB8fDcxNTQ8PWMmJmM8PTcxNTV8fDcyMDQ8PWMmJmM8PTcyMTF8fDcyMjA8PWMmJmM8PTcyMjF8fGM9PTczOTN8fDc0MTA8PWMmJmM8PTc0MTF8fGM9PTc0MTV8fDQzMDQzPD1jJiZjPD00MzA0NHx8Yz09NDMwNDd8fDQzMTM2PD1jJiZjPD00MzEzN3x8NDMxODg8PWMmJmM8PTQzMjAzfHw0MzM0Njw9YyYmYzw9NDMzNDd8fGM9PTQzMzk1fHw0MzQ0NDw9YyYmYzw9NDM0NDV8fDQzNDUwPD1jJiZjPD00MzQ1MXx8NDM0NTM8PWMmJmM8PTQzNDU2fHw0MzU2Nzw9YyYmYzw9NDM1Njh8fDQzNTcxPD1jJiZjPD00MzU3Mnx8Yz09NDM1OTd8fGM9PTQzNzU1fHw0Mzc1ODw9YyYmYzw9NDM3NTl8fGM9PTQzNzY1fHw0NDAwMzw9YyYmYzw9NDQwMDR8fDQ0MDA2PD1jJiZjPD00NDAwN3x8NDQwMDk8PWMmJmM8PTQ0MDEwfHxjPT00NDAxMnx8Yz09Njk2MzJ8fGM9PTY5NjM0fHxjPT02OTc2Mnx8Njk4MDg8PWMmJmM8PTY5ODEwfHw2OTgxNTw9YyYmYzw9Njk4MTZ8fGM9PTY5OTMyfHxjPT03MDAxOHx8NzAwNjc8PWMmJmM8PTcwMDY5fHw3MDA3OTw9YyYmYzw9NzAwODB8fDcwMTg4PD1jJiZjPD03MDE5MHx8NzAxOTQ8PWMmJmM8PTcwMTk1fHxjPT03MDE5N3x8NzAzNjg8PWMmJmM8PTcwMzcwfHw3MDQwMjw9YyYmYzw9NzA0MDN8fGM9PTcwNDYzfHw3MDQ2NTw9YyYmYzw9NzA0Njh8fDcwNDcxPD1jJiZjPD03MDQ3Mnx8NzA0NzU8PWMmJmM8PTcwNDc3fHw3MDQ5ODw9YyYmYzw9NzA0OTl8fDcwNzA5PD1jJiZjPD03MDcxMXx8NzA3MjA8PWMmJmM8PTcwNzIxfHxjPT03MDcyNXx8NzA4MzM8PWMmJmM8PTcwODM0fHxjPT03MDg0MXx8NzA4NDM8PWMmJmM8PTcwODQ0fHxjPT03MDg0Nnx8Yz09NzA4NDl8fDcxMDg4PD1jJiZjPD03MTA4OXx8NzEwOTY8PWMmJmM8PTcxMDk5fHxjPT03MTEwMnx8NzEyMTY8PWMmJmM8PTcxMjE4fHw3MTIyNzw9YyYmYzw9NzEyMjh8fGM9PTcxMjMwfHxjPT03MTM0MHx8NzEzNDI8PWMmJmM8PTcxMzQzfHxjPT03MTM1MHx8NzE0NTY8PWMmJmM8PTcxNDU3fHxjPT03MTQ2Mnx8NzIxOTk8PWMmJmM8PTcyMjAwfHxjPT03MjI0OXx8NzIyNzk8PWMmJmM8PTcyMjgwfHxjPT03MjM0M3x8Yz09NzI3NTF8fGM9PTcyNzY2fHxjPT03Mjg3M3x8Yz09NzI4ODF8fGM9PTcyODg0fHw5NDAzMzw9YyYmYzw9OTQwNzh8fGM9PTExOTE0Mnx8Yz09MTE5MTQ5P286NDM1Mjw9YyYmYzw9NDQ0N3x8NDMzNjA8PWMmJmM8PTQzMzg4P3I6NDQ0ODw9YyYmYzw9NDUxOXx8NTUyMTY8PWMmJmM8PTU1MjM4P2E6NDUyMDw9YyYmYzw9NDYwN3x8NTUyNDM8PWMmJmM8PTU1MjkxP2g6Yz09NDQwMzJ8fGM9PTQ0MDYwfHxjPT00NDA4OHx8Yz09NDQxMTZ8fGM9PTQ0MTQ0fHxjPT00NDE3Mnx8Yz09NDQyMDB8fGM9PTQ0MjI4fHxjPT00NDI1Nnx8Yz09NDQyODR8fGM9PTQ0MzEyfHxjPT00NDM0MHx8Yz09NDQzNjh8fGM9PTQ0Mzk2fHxjPT00NDQyNHx8Yz09NDQ0NTJ8fGM9PTQ0NDgwfHxjPT00NDUwOHx8Yz09NDQ1MzZ8fGM9PTQ0NTY0fHxjPT00NDU5Mnx8Yz09NDQ2MjB8fGM9PTQ0NjQ4fHxjPT00NDY3Nnx8Yz09NDQ3MDR8fGM9PTQ0NzMyfHxjPT00NDc2MHx8Yz09NDQ3ODh8fGM9PTQ0ODE2fHxjPT00NDg0NHx8Yz09NDQ4NzJ8fGM9PTQ0OTAwfHxjPT00NDkyOHx8Yz09NDQ5NTZ8fGM9PTQ0OTg0fHxjPT00NTAxMnx8Yz09NDUwNDB8fGM9PTQ1MDY4fHxjPT00NTA5Nnx8Yz09NDUxMjR8fGM9PTQ1MTUyfHxjPT00NTE4MHx8Yz09NDUyMDh8fGM9PTQ1MjM2fHxjPT00NTI2NHx8Yz09NDUyOTJ8fGM9PTQ1MzIwfHxjPT00NTM0OHx8Yz09NDUzNzZ8fGM9PTQ1NDA0fHxjPT00NTQzMnx8Yz09NDU0NjB8fGM9PTQ1NDg4fHxjPT00NTUxNnx8Yz09NDU1NDR8fGM9PTQ1NTcyfHxjPT00NTYwMHx8Yz09NDU2Mjh8fGM9PTQ1NjU2fHxjPT00NTY4NHx8Yz09NDU3MTJ8fGM9PTQ1NzQwfHxjPT00NTc2OHx8Yz09NDU3OTZ8fGM9PTQ1ODI0fHxjPT00NTg1Mnx8Yz09NDU4ODB8fGM9PTQ1OTA4fHxjPT00NTkzNnx8Yz09NDU5NjR8fGM9PTQ1OTkyfHxjPT00NjAyMHx8Yz09NDYwNDh8fGM9PTQ2MDc2fHxjPT00NjEwNHx8Yz09NDYxMzJ8fGM9PTQ2MTYwfHxjPT00NjE4OHx8Yz09NDYyMTZ8fGM9PTQ2MjQ0fHxjPT00NjI3Mnx8Yz09NDYzMDB8fGM9PTQ2MzI4fHxjPT00NjM1Nnx8Yz09NDYzODR8fGM9PTQ2NDEyfHxjPT00NjQ0MHx8Yz09NDY0Njh8fGM9PTQ2NDk2fHxjPT00NjUyNHx8Yz09NDY1NTJ8fGM9PTQ2NTgwfHxjPT00NjYwOHx8Yz09NDY2MzZ8fGM9PTQ2NjY0fHxjPT00NjY5Mnx8Yz09NDY3MjB8fGM9PTQ2NzQ4fHxjPT00Njc3Nnx8Yz09NDY4MDR8fGM9PTQ2ODMyfHxjPT00Njg2MHx8Yz09NDY4ODh8fGM9PTQ2OTE2fHxjPT00Njk0NHx8Yz09NDY5NzJ8fGM9PTQ3ZTN8fGM9PTQ3MDI4fHxjPT00NzA1Nnx8Yz09NDcwODR8fGM9PTQ3MTEyfHxjPT00NzE0MHx8Yz09NDcxNjh8fGM9PTQ3MTk2fHxjPT00NzIyNHx8Yz09NDcyNTJ8fGM9PTQ3MjgwfHxjPT00NzMwOHx8Yz09NDczMzZ8fGM9PTQ3MzY0fHxjPT00NzM5Mnx8Yz09NDc0MjB8fGM9PTQ3NDQ4fHxjPT00NzQ3Nnx8Yz09NDc1MDR8fGM9PTQ3NTMyfHxjPT00NzU2MHx8Yz09NDc1ODh8fGM9PTQ3NjE2fHxjPT00NzY0NHx8Yz09NDc2NzJ8fGM9PTQ3NzAwfHxjPT00NzcyOHx8Yz09NDc3NTZ8fGM9PTQ3Nzg0fHxjPT00NzgxMnx8Yz09NDc4NDB8fGM9PTQ3ODY4fHxjPT00Nzg5Nnx8Yz09NDc5MjR8fGM9PTQ3OTUyfHxjPT00Nzk4MHx8Yz09NDgwMDh8fGM9PTQ4MDM2fHxjPT00ODA2NHx8Yz09NDgwOTJ8fGM9PTQ4MTIwfHxjPT00ODE0OHx8Yz09NDgxNzZ8fGM9PTQ4MjA0fHxjPT00ODIzMnx8Yz09NDgyNjB8fGM9PTQ4Mjg4fHxjPT00ODMxNnx8Yz09NDgzNDR8fGM9PTQ4MzcyfHxjPT00ODQwMHx8Yz09NDg0Mjh8fGM9PTQ4NDU2fHxjPT00ODQ4NHx8Yz09NDg1MTJ8fGM9PTQ4NTQwfHxjPT00ODU2OHx8Yz09NDg1OTZ8fGM9PTQ4NjI0fHxjPT00ODY1Mnx8Yz09NDg2ODB8fGM9PTQ4NzA4fHxjPT00ODczNnx8Yz09NDg3NjR8fGM9PTQ4NzkyfHxjPT00ODgyMHx8Yz09NDg4NDh8fGM9PTQ4ODc2fHxjPT00ODkwNHx8Yz09NDg5MzJ8fGM9PTQ4OTYwfHxjPT00ODk4OHx8Yz09NDkwMTZ8fGM9PTQ5MDQ0fHxjPT00OTA3Mnx8Yz09NDkxMDB8fGM9PTQ5MTI4fHxjPT00OTE1Nnx8Yz09NDkxODR8fGM9PTQ5MjEyfHxjPT00OTI0MHx8Yz09NDkyNjh8fGM9PTQ5Mjk2fHxjPT00OTMyNHx8Yz09NDkzNTJ8fGM9PTQ5MzgwfHxjPT00OTQwOHx8Yz09NDk0MzZ8fGM9PTQ5NDY0fHxjPT00OTQ5Mnx8Yz09NDk1MjB8fGM9PTQ5NTQ4fHxjPT00OTU3Nnx8Yz09NDk2MDR8fGM9PTQ5NjMyfHxjPT00OTY2MHx8Yz09NDk2ODh8fGM9PTQ5NzE2fHxjPT00OTc0NHx8Yz09NDk3NzJ8fGM9PTQ5ODAwfHxjPT00OTgyOHx8Yz09NDk4NTZ8fGM9PTQ5ODg0fHxjPT00OTkxMnx8Yz09NDk5NDB8fGM9PTQ5OTY4fHxjPT00OTk5Nnx8Yz09NTAwMjR8fGM9PTUwMDUyfHxjPT01MDA4MHx8Yz09NTAxMDh8fGM9PTUwMTM2fHxjPT01MDE2NHx8Yz09NTAxOTJ8fGM9PTUwMjIwfHxjPT01MDI0OHx8Yz09NTAyNzZ8fGM9PTUwMzA0fHxjPT01MDMzMnx8Yz09NTAzNjB8fGM9PTUwMzg4fHxjPT01MDQxNnx8Yz09NTA0NDR8fGM9PTUwNDcyfHxjPT01MDUwMHx8Yz09NTA1Mjh8fGM9PTUwNTU2fHxjPT01MDU4NHx8Yz09NTA2MTJ8fGM9PTUwNjQwfHxjPT01MDY2OHx8Yz09NTA2OTZ8fGM9PTUwNzI0fHxjPT01MDc1Mnx8Yz09NTA3ODB8fGM9PTUwODA4fHxjPT01MDgzNnx8Yz09NTA4NjR8fGM9PTUwODkyfHxjPT01MDkyMHx8Yz09NTA5NDh8fGM9PTUwOTc2fHxjPT01MTAwNHx8Yz09NTEwMzJ8fGM9PTUxMDYwfHxjPT01MTA4OHx8Yz09NTExMTZ8fGM9PTUxMTQ0fHxjPT01MTE3Mnx8Yz09NTEyMDB8fGM9PTUxMjI4fHxjPT01MTI1Nnx8Yz09NTEyODR8fGM9PTUxMzEyfHxjPT01MTM0MHx8Yz09NTEzNjh8fGM9PTUxMzk2fHxjPT01MTQyNHx8Yz09NTE0NTJ8fGM9PTUxNDgwfHxjPT01MTUwOHx8Yz09NTE1MzZ8fGM9PTUxNTY0fHxjPT01MTU5Mnx8Yz09NTE2MjB8fGM9PTUxNjQ4fHxjPT01MTY3Nnx8Yz09NTE3MDR8fGM9PTUxNzMyfHxjPT01MTc2MHx8Yz09NTE3ODh8fGM9PTUxODE2fHxjPT01MTg0NHx8Yz09NTE4NzJ8fGM9PTUxOTAwfHxjPT01MTkyOHx8Yz09NTE5NTZ8fGM9PTUxOTg0fHxjPT01MjAxMnx8Yz09NTIwNDB8fGM9PTUyMDY4fHxjPT01MjA5Nnx8Yz09NTIxMjR8fGM9PTUyMTUyfHxjPT01MjE4MHx8Yz09NTIyMDh8fGM9PTUyMjM2fHxjPT01MjI2NHx8Yz09NTIyOTJ8fGM9PTUyMzIwfHxjPT01MjM0OHx8Yz09NTIzNzZ8fGM9PTUyNDA0fHxjPT01MjQzMnx8Yz09NTI0NjB8fGM9PTUyNDg4fHxjPT01MjUxNnx8Yz09NTI1NDR8fGM9PTUyNTcyfHxjPT01MjYwMHx8Yz09NTI2Mjh8fGM9PTUyNjU2fHxjPT01MjY4NHx8Yz09NTI3MTJ8fGM9PTUyNzQwfHxjPT01Mjc2OHx8Yz09NTI3OTZ8fGM9PTUyODI0fHxjPT01Mjg1Mnx8Yz09NTI4ODB8fGM9PTUyOTA4fHxjPT01MjkzNnx8Yz09NTI5NjR8fGM9PTUyOTkyfHxjPT01MzAyMHx8Yz09NTMwNDh8fGM9PTUzMDc2fHxjPT01MzEwNHx8Yz09NTMxMzJ8fGM9PTUzMTYwfHxjPT01MzE4OHx8Yz09NTMyMTZ8fGM9PTUzMjQ0fHxjPT01MzI3Mnx8Yz09NTMzMDB8fGM9PTUzMzI4fHxjPT01MzM1Nnx8Yz09NTMzODR8fGM9PTUzNDEyfHxjPT01MzQ0MHx8Yz09NTM0Njh8fGM9PTUzNDk2fHxjPT01MzUyNHx8Yz09NTM1NTJ8fGM9PTUzNTgwfHxjPT01MzYwOHx8Yz09NTM2MzZ8fGM9PTUzNjY0fHxjPT01MzY5Mnx8Yz09NTM3MjB8fGM9PTUzNzQ4fHxjPT01Mzc3Nnx8Yz09NTM4MDR8fGM9PTUzODMyfHxjPT01Mzg2MHx8Yz09NTM4ODh8fGM9PTUzOTE2fHxjPT01Mzk0NHx8Yz09NTM5NzJ8fGM9PTU0ZTN8fGM9PTU0MDI4fHxjPT01NDA1Nnx8Yz09NTQwODR8fGM9PTU0MTEyfHxjPT01NDE0MHx8Yz09NTQxNjh8fGM9PTU0MTk2fHxjPT01NDIyNHx8Yz09NTQyNTJ8fGM9PTU0MjgwfHxjPT01NDMwOHx8Yz09NTQzMzZ8fGM9PTU0MzY0fHxjPT01NDM5Mnx8Yz09NTQ0MjB8fGM9PTU0NDQ4fHxjPT01NDQ3Nnx8Yz09NTQ1MDR8fGM9PTU0NTMyfHxjPT01NDU2MHx8Yz09NTQ1ODh8fGM9PTU0NjE2fHxjPT01NDY0NHx8Yz09NTQ2NzJ8fGM9PTU0NzAwfHxjPT01NDcyOHx8Yz09NTQ3NTZ8fGM9PTU0Nzg0fHxjPT01NDgxMnx8Yz09NTQ4NDB8fGM9PTU0ODY4fHxjPT01NDg5Nnx8Yz09NTQ5MjR8fGM9PTU0OTUyfHxjPT01NDk4MHx8Yz09NTUwMDh8fGM9PTU1MDM2fHxjPT01NTA2NHx8Yz09NTUwOTJ8fGM9PTU1MTIwfHxjPT01NTE0OHx8Yz09NTUxNzY/QTo0NDAzMzw9YyYmYzw9NDQwNTl8fDQ0MDYxPD1jJiZjPD00NDA4N3x8NDQwODk8PWMmJmM8PTQ0MTE1fHw0NDExNzw9YyYmYzw9NDQxNDN8fDQ0MTQ1PD1jJiZjPD00NDE3MXx8NDQxNzM8PWMmJmM8PTQ0MTk5fHw0NDIwMTw9YyYmYzw9NDQyMjd8fDQ0MjI5PD1jJiZjPD00NDI1NXx8NDQyNTc8PWMmJmM8PTQ0MjgzfHw0NDI4NTw9YyYmYzw9NDQzMTF8fDQ0MzEzPD1jJiZjPD00NDMzOXx8NDQzNDE8PWMmJmM8PTQ0MzY3fHw0NDM2OTw9YyYmYzw9NDQzOTV8fDQ0Mzk3PD1jJiZjPD00NDQyM3x8NDQ0MjU8PWMmJmM8PTQ0NDUxfHw0NDQ1Mzw9YyYmYzw9NDQ0Nzl8fDQ0NDgxPD1jJiZjPD00NDUwN3x8NDQ1MDk8PWMmJmM8PTQ0NTM1fHw0NDUzNzw9YyYmYzw9NDQ1NjN8fDQ0NTY1PD1jJiZjPD00NDU5MXx8NDQ1OTM8PWMmJmM8PTQ0NjE5fHw0NDYyMTw9YyYmYzw9NDQ2NDd8fDQ0NjQ5PD1jJiZjPD00NDY3NXx8NDQ2Nzc8PWMmJmM8PTQ0NzAzfHw0NDcwNTw9YyYmYzw9NDQ3MzF8fDQ0NzMzPD1jJiZjPD00NDc1OXx8NDQ3NjE8PWMmJmM8PTQ0Nzg3fHw0NDc4OTw9YyYmYzw9NDQ4MTV8fDQ0ODE3PD1jJiZjPD00NDg0M3x8NDQ4NDU8PWMmJmM8PTQ0ODcxfHw0NDg3Mzw9YyYmYzw9NDQ4OTl8fDQ0OTAxPD1jJiZjPD00NDkyN3x8NDQ5Mjk8PWMmJmM8PTQ0OTU1fHw0NDk1Nzw9YyYmYzw9NDQ5ODN8fDQ0OTg1PD1jJiZjPD00NTAxMXx8NDUwMTM8PWMmJmM8PTQ1MDM5fHw0NTA0MTw9YyYmYzw9NDUwNjd8fDQ1MDY5PD1jJiZjPD00NTA5NXx8NDUwOTc8PWMmJmM8PTQ1MTIzfHw0NTEyNTw9YyYmYzw9NDUxNTF8fDQ1MTUzPD1jJiZjPD00NTE3OXx8NDUxODE8PWMmJmM8PTQ1MjA3fHw0NTIwOTw9YyYmYzw9NDUyMzV8fDQ1MjM3PD1jJiZjPD00NTI2M3x8NDUyNjU8PWMmJmM8PTQ1MjkxfHw0NTI5Mzw9YyYmYzw9NDUzMTl8fDQ1MzIxPD1jJiZjPD00NTM0N3x8NDUzNDk8PWMmJmM8PTQ1Mzc1fHw0NTM3Nzw9YyYmYzw9NDU0MDN8fDQ1NDA1PD1jJiZjPD00NTQzMXx8NDU0MzM8PWMmJmM8PTQ1NDU5fHw0NTQ2MTw9YyYmYzw9NDU0ODd8fDQ1NDg5PD1jJiZjPD00NTUxNXx8NDU1MTc8PWMmJmM8PTQ1NTQzfHw0NTU0NTw9YyYmYzw9NDU1NzF8fDQ1NTczPD1jJiZjPD00NTU5OXx8NDU2MDE8PWMmJmM8PTQ1NjI3fHw0NTYyOTw9YyYmYzw9NDU2NTV8fDQ1NjU3PD1jJiZjPD00NTY4M3x8NDU2ODU8PWMmJmM8PTQ1NzExfHw0NTcxMzw9YyYmYzw9NDU3Mzl8fDQ1NzQxPD1jJiZjPD00NTc2N3x8NDU3Njk8PWMmJmM8PTQ1Nzk1fHw0NTc5Nzw9YyYmYzw9NDU4MjN8fDQ1ODI1PD1jJiZjPD00NTg1MXx8NDU4NTM8PWMmJmM8PTQ1ODc5fHw0NTg4MTw9YyYmYzw9NDU5MDd8fDQ1OTA5PD1jJiZjPD00NTkzNXx8NDU5Mzc8PWMmJmM8PTQ1OTYzfHw0NTk2NTw9YyYmYzw9NDU5OTF8fDQ1OTkzPD1jJiZjPD00NjAxOXx8NDYwMjE8PWMmJmM8PTQ2MDQ3fHw0NjA0OTw9YyYmYzw9NDYwNzV8fDQ2MDc3PD1jJiZjPD00NjEwM3x8NDYxMDU8PWMmJmM8PTQ2MTMxfHw0NjEzMzw9YyYmYzw9NDYxNTl8fDQ2MTYxPD1jJiZjPD00NjE4N3x8NDYxODk8PWMmJmM8PTQ2MjE1fHw0NjIxNzw9YyYmYzw9NDYyNDN8fDQ2MjQ1PD1jJiZjPD00NjI3MXx8NDYyNzM8PWMmJmM8PTQ2Mjk5fHw0NjMwMTw9YyYmYzw9NDYzMjd8fDQ2MzI5PD1jJiZjPD00NjM1NXx8NDYzNTc8PWMmJmM8PTQ2MzgzfHw0NjM4NTw9YyYmYzw9NDY0MTF8fDQ2NDEzPD1jJiZjPD00NjQzOXx8NDY0NDE8PWMmJmM8PTQ2NDY3fHw0NjQ2OTw9YyYmYzw9NDY0OTV8fDQ2NDk3PD1jJiZjPD00NjUyM3x8NDY1MjU8PWMmJmM8PTQ2NTUxfHw0NjU1Mzw9YyYmYzw9NDY1Nzl8fDQ2NTgxPD1jJiZjPD00NjYwN3x8NDY2MDk8PWMmJmM8PTQ2NjM1fHw0NjYzNzw9YyYmYzw9NDY2NjN8fDQ2NjY1PD1jJiZjPD00NjY5MXx8NDY2OTM8PWMmJmM8PTQ2NzE5fHw0NjcyMTw9YyYmYzw9NDY3NDd8fDQ2NzQ5PD1jJiZjPD00Njc3NXx8NDY3Nzc8PWMmJmM8PTQ2ODAzfHw0NjgwNTw9YyYmYzw9NDY4MzF8fDQ2ODMzPD1jJiZjPD00Njg1OXx8NDY4NjE8PWMmJmM8PTQ2ODg3fHw0Njg4OTw9YyYmYzw9NDY5MTV8fDQ2OTE3PD1jJiZjPD00Njk0M3x8NDY5NDU8PWMmJmM8PTQ2OTcxfHw0Njk3Mzw9YyYmYzw9NDY5OTl8fDQ3MDAxPD1jJiZjPD00NzAyN3x8NDcwMjk8PWMmJmM8PTQ3MDU1fHw0NzA1Nzw9YyYmYzw9NDcwODN8fDQ3MDg1PD1jJiZjPD00NzExMXx8NDcxMTM8PWMmJmM8PTQ3MTM5fHw0NzE0MTw9YyYmYzw9NDcxNjd8fDQ3MTY5PD1jJiZjPD00NzE5NXx8NDcxOTc8PWMmJmM8PTQ3MjIzfHw0NzIyNTw9YyYmYzw9NDcyNTF8fDQ3MjUzPD1jJiZjPD00NzI3OXx8NDcyODE8PWMmJmM8PTQ3MzA3fHw0NzMwOTw9YyYmYzw9NDczMzV8fDQ3MzM3PD1jJiZjPD00NzM2M3x8NDczNjU8PWMmJmM8PTQ3MzkxfHw0NzM5Mzw9YyYmYzw9NDc0MTl8fDQ3NDIxPD1jJiZjPD00NzQ0N3x8NDc0NDk8PWMmJmM8PTQ3NDc1fHw0NzQ3Nzw9YyYmYzw9NDc1MDN8fDQ3NTA1PD1jJiZjPD00NzUzMXx8NDc1MzM8PWMmJmM8PTQ3NTU5fHw0NzU2MTw9YyYmYzw9NDc1ODd8fDQ3NTg5PD1jJiZjPD00NzYxNXx8NDc2MTc8PWMmJmM8PTQ3NjQzfHw0NzY0NTw9YyYmYzw9NDc2NzF8fDQ3NjczPD1jJiZjPD00NzY5OXx8NDc3MDE8PWMmJmM8PTQ3NzI3fHw0NzcyOTw9YyYmYzw9NDc3NTV8fDQ3NzU3PD1jJiZjPD00Nzc4M3x8NDc3ODU8PWMmJmM8PTQ3ODExfHw0NzgxMzw9YyYmYzw9NDc4Mzl8fDQ3ODQxPD1jJiZjPD00Nzg2N3x8NDc4Njk8PWMmJmM8PTQ3ODk1fHw0Nzg5Nzw9YyYmYzw9NDc5MjN8fDQ3OTI1PD1jJiZjPD00Nzk1MXx8NDc5NTM8PWMmJmM8PTQ3OTc5fHw0Nzk4MTw9YyYmYzw9NDgwMDd8fDQ4MDA5PD1jJiZjPD00ODAzNXx8NDgwMzc8PWMmJmM8PTQ4MDYzfHw0ODA2NTw9YyYmYzw9NDgwOTF8fDQ4MDkzPD1jJiZjPD00ODExOXx8NDgxMjE8PWMmJmM8PTQ4MTQ3fHw0ODE0OTw9YyYmYzw9NDgxNzV8fDQ4MTc3PD1jJiZjPD00ODIwM3x8NDgyMDU8PWMmJmM8PTQ4MjMxfHw0ODIzMzw9YyYmYzw9NDgyNTl8fDQ4MjYxPD1jJiZjPD00ODI4N3x8NDgyODk8PWMmJmM8PTQ4MzE1fHw0ODMxNzw9YyYmYzw9NDgzNDN8fDQ4MzQ1PD1jJiZjPD00ODM3MXx8NDgzNzM8PWMmJmM8PTQ4Mzk5fHw0ODQwMTw9YyYmYzw9NDg0Mjd8fDQ4NDI5PD1jJiZjPD00ODQ1NXx8NDg0NTc8PWMmJmM8PTQ4NDgzfHw0ODQ4NTw9YyYmYzw9NDg1MTF8fDQ4NTEzPD1jJiZjPD00ODUzOXx8NDg1NDE8PWMmJmM8PTQ4NTY3fHw0ODU2OTw9YyYmYzw9NDg1OTV8fDQ4NTk3PD1jJiZjPD00ODYyM3x8NDg2MjU8PWMmJmM8PTQ4NjUxfHw0ODY1Mzw9YyYmYzw9NDg2Nzl8fDQ4NjgxPD1jJiZjPD00ODcwN3x8NDg3MDk8PWMmJmM8PTQ4NzM1fHw0ODczNzw9YyYmYzw9NDg3NjN8fDQ4NzY1PD1jJiZjPD00ODc5MXx8NDg3OTM8PWMmJmM8PTQ4ODE5fHw0ODgyMTw9YyYmYzw9NDg4NDd8fDQ4ODQ5PD1jJiZjPD00ODg3NXx8NDg4Nzc8PWMmJmM8PTQ4OTAzfHw0ODkwNTw9YyYmYzw9NDg5MzF8fDQ4OTMzPD1jJiZjPD00ODk1OXx8NDg5NjE8PWMmJmM8PTQ4OTg3fHw0ODk4OTw9YyYmYzw9NDkwMTV8fDQ5MDE3PD1jJiZjPD00OTA0M3x8NDkwNDU8PWMmJmM8PTQ5MDcxfHw0OTA3Mzw9YyYmYzw9NDkwOTl8fDQ5MTAxPD1jJiZjPD00OTEyN3x8NDkxMjk8PWMmJmM8PTQ5MTU1fHw0OTE1Nzw9YyYmYzw9NDkxODN8fDQ5MTg1PD1jJiZjPD00OTIxMXx8NDkyMTM8PWMmJmM8PTQ5MjM5fHw0OTI0MTw9YyYmYzw9NDkyNjd8fDQ5MjY5PD1jJiZjPD00OTI5NXx8NDkyOTc8PWMmJmM8PTQ5MzIzfHw0OTMyNTw9YyYmYzw9NDkzNTF8fDQ5MzUzPD1jJiZjPD00OTM3OXx8NDkzODE8PWMmJmM8PTQ5NDA3fHw0OTQwOTw9YyYmYzw9NDk0MzV8fDQ5NDM3PD1jJiZjPD00OTQ2M3x8NDk0NjU8PWMmJmM8PTQ5NDkxfHw0OTQ5Mzw9YyYmYzw9NDk1MTl8fDQ5NTIxPD1jJiZjPD00OTU0N3x8NDk1NDk8PWMmJmM8PTQ5NTc1fHw0OTU3Nzw9YyYmYzw9NDk2MDN8fDQ5NjA1PD1jJiZjPD00OTYzMXx8NDk2MzM8PWMmJmM8PTQ5NjU5fHw0OTY2MTw9YyYmYzw9NDk2ODd8fDQ5Njg5PD1jJiZjPD00OTcxNXx8NDk3MTc8PWMmJmM8PTQ5NzQzfHw0OTc0NTw9YyYmYzw9NDk3NzF8fDQ5NzczPD1jJiZjPD00OTc5OXx8NDk4MDE8PWMmJmM8PTQ5ODI3fHw0OTgyOTw9YyYmYzw9NDk4NTV8fDQ5ODU3PD1jJiZjPD00OTg4M3x8NDk4ODU8PWMmJmM8PTQ5OTExfHw0OTkxMzw9YyYmYzw9NDk5Mzl8fDQ5OTQxPD1jJiZjPD00OTk2N3x8NDk5Njk8PWMmJmM8PTQ5OTk1fHw0OTk5Nzw9YyYmYzw9NTAwMjN8fDUwMDI1PD1jJiZjPD01MDA1MXx8NTAwNTM8PWMmJmM8PTUwMDc5fHw1MDA4MTw9YyYmYzw9NTAxMDd8fDUwMTA5PD1jJiZjPD01MDEzNXx8NTAxMzc8PWMmJmM8PTUwMTYzfHw1MDE2NTw9YyYmYzw9NTAxOTF8fDUwMTkzPD1jJiZjPD01MDIxOXx8NTAyMjE8PWMmJmM8PTUwMjQ3fHw1MDI0OTw9YyYmYzw9NTAyNzV8fDUwMjc3PD1jJiZjPD01MDMwM3x8NTAzMDU8PWMmJmM8PTUwMzMxfHw1MDMzMzw9YyYmYzw9NTAzNTl8fDUwMzYxPD1jJiZjPD01MDM4N3x8NTAzODk8PWMmJmM8PTUwNDE1fHw1MDQxNzw9YyYmYzw9NTA0NDN8fDUwNDQ1PD1jJiZjPD01MDQ3MXx8NTA0NzM8PWMmJmM8PTUwNDk5fHw1MDUwMTw9YyYmYzw9NTA1Mjd8fDUwNTI5PD1jJiZjPD01MDU1NXx8NTA1NTc8PWMmJmM8PTUwNTgzfHw1MDU4NTw9YyYmYzw9NTA2MTF8fDUwNjEzPD1jJiZjPD01MDYzOXx8NTA2NDE8PWMmJmM8PTUwNjY3fHw1MDY2OTw9YyYmYzw9NTA2OTV8fDUwNjk3PD1jJiZjPD01MDcyM3x8NTA3MjU8PWMmJmM8PTUwNzUxfHw1MDc1Mzw9YyYmYzw9NTA3Nzl8fDUwNzgxPD1jJiZjPD01MDgwN3x8NTA4MDk8PWMmJmM8PTUwODM1fHw1MDgzNzw9YyYmYzw9NTA4NjN8fDUwODY1PD1jJiZjPD01MDg5MXx8NTA4OTM8PWMmJmM8PTUwOTE5fHw1MDkyMTw9YyYmYzw9NTA5NDd8fDUwOTQ5PD1jJiZjPD01MDk3NXx8NTA5Nzc8PWMmJmM8PTUxMDAzfHw1MTAwNTw9YyYmYzw9NTEwMzF8fDUxMDMzPD1jJiZjPD01MTA1OXx8NTEwNjE8PWMmJmM8PTUxMDg3fHw1MTA4OTw9YyYmYzw9NTExMTV8fDUxMTE3PD1jJiZjPD01MTE0M3x8NTExNDU8PWMmJmM8PTUxMTcxfHw1MTE3Mzw9YyYmYzw9NTExOTl8fDUxMjAxPD1jJiZjPD01MTIyN3x8NTEyMjk8PWMmJmM8PTUxMjU1fHw1MTI1Nzw9YyYmYzw9NTEyODN8fDUxMjg1PD1jJiZjPD01MTMxMXx8NTEzMTM8PWMmJmM8PTUxMzM5fHw1MTM0MTw9YyYmYzw9NTEzNjd8fDUxMzY5PD1jJiZjPD01MTM5NXx8NTEzOTc8PWMmJmM8PTUxNDIzfHw1MTQyNTw9YyYmYzw9NTE0NTF8fDUxNDUzPD1jJiZjPD01MTQ3OXx8NTE0ODE8PWMmJmM8PTUxNTA3fHw1MTUwOTw9YyYmYzw9NTE1MzV8fDUxNTM3PD1jJiZjPD01MTU2M3x8NTE1NjU8PWMmJmM8PTUxNTkxfHw1MTU5Mzw9YyYmYzw9NTE2MTl8fDUxNjIxPD1jJiZjPD01MTY0N3x8NTE2NDk8PWMmJmM8PTUxNjc1fHw1MTY3Nzw9YyYmYzw9NTE3MDN8fDUxNzA1PD1jJiZjPD01MTczMXx8NTE3MzM8PWMmJmM8PTUxNzU5fHw1MTc2MTw9YyYmYzw9NTE3ODd8fDUxNzg5PD1jJiZjPD01MTgxNXx8NTE4MTc8PWMmJmM8PTUxODQzfHw1MTg0NTw9YyYmYzw9NTE4NzF8fDUxODczPD1jJiZjPD01MTg5OXx8NTE5MDE8PWMmJmM8PTUxOTI3fHw1MTkyOTw9YyYmYzw9NTE5NTV8fDUxOTU3PD1jJiZjPD01MTk4M3x8NTE5ODU8PWMmJmM8PTUyMDExfHw1MjAxMzw9YyYmYzw9NTIwMzl8fDUyMDQxPD1jJiZjPD01MjA2N3x8NTIwNjk8PWMmJmM8PTUyMDk1fHw1MjA5Nzw9YyYmYzw9NTIxMjN8fDUyMTI1PD1jJiZjPD01MjE1MXx8NTIxNTM8PWMmJmM8PTUyMTc5fHw1MjE4MTw9YyYmYzw9NTIyMDd8fDUyMjA5PD1jJiZjPD01MjIzNXx8NTIyMzc8PWMmJmM8PTUyMjYzfHw1MjI2NTw9YyYmYzw9NTIyOTF8fDUyMjkzPD1jJiZjPD01MjMxOXx8NTIzMjE8PWMmJmM8PTUyMzQ3fHw1MjM0OTw9YyYmYzw9NTIzNzV8fDUyMzc3PD1jJiZjPD01MjQwM3x8NTI0MDU8PWMmJmM8PTUyNDMxfHw1MjQzMzw9YyYmYzw9NTI0NTl8fDUyNDYxPD1jJiZjPD01MjQ4N3x8NTI0ODk8PWMmJmM8PTUyNTE1fHw1MjUxNzw9YyYmYzw9NTI1NDN8fDUyNTQ1PD1jJiZjPD01MjU3MXx8NTI1NzM8PWMmJmM8PTUyNTk5fHw1MjYwMTw9YyYmYzw9NTI2Mjd8fDUyNjI5PD1jJiZjPD01MjY1NXx8NTI2NTc8PWMmJmM8PTUyNjgzfHw1MjY4NTw9YyYmYzw9NTI3MTF8fDUyNzEzPD1jJiZjPD01MjczOXx8NTI3NDE8PWMmJmM8PTUyNzY3fHw1Mjc2OTw9YyYmYzw9NTI3OTV8fDUyNzk3PD1jJiZjPD01MjgyM3x8NTI4MjU8PWMmJmM8PTUyODUxfHw1Mjg1Mzw9YyYmYzw9NTI4Nzl8fDUyODgxPD1jJiZjPD01MjkwN3x8NTI5MDk8PWMmJmM8PTUyOTM1fHw1MjkzNzw9YyYmYzw9NTI5NjN8fDUyOTY1PD1jJiZjPD01Mjk5MXx8NTI5OTM8PWMmJmM8PTUzMDE5fHw1MzAyMTw9YyYmYzw9NTMwNDd8fDUzMDQ5PD1jJiZjPD01MzA3NXx8NTMwNzc8PWMmJmM8PTUzMTAzfHw1MzEwNTw9YyYmYzw9NTMxMzF8fDUzMTMzPD1jJiZjPD01MzE1OXx8NTMxNjE8PWMmJmM8PTUzMTg3fHw1MzE4OTw9YyYmYzw9NTMyMTV8fDUzMjE3PD1jJiZjPD01MzI0M3x8NTMyNDU8PWMmJmM8PTUzMjcxfHw1MzI3Mzw9YyYmYzw9NTMyOTl8fDUzMzAxPD1jJiZjPD01MzMyN3x8NTMzMjk8PWMmJmM8PTUzMzU1fHw1MzM1Nzw9YyYmYzw9NTMzODN8fDUzMzg1PD1jJiZjPD01MzQxMXx8NTM0MTM8PWMmJmM8PTUzNDM5fHw1MzQ0MTw9YyYmYzw9NTM0Njd8fDUzNDY5PD1jJiZjPD01MzQ5NXx8NTM0OTc8PWMmJmM8PTUzNTIzfHw1MzUyNTw9YyYmYzw9NTM1NTF8fDUzNTUzPD1jJiZjPD01MzU3OXx8NTM1ODE8PWMmJmM8PTUzNjA3fHw1MzYwOTw9YyYmYzw9NTM2MzV8fDUzNjM3PD1jJiZjPD01MzY2M3x8NTM2NjU8PWMmJmM8PTUzNjkxfHw1MzY5Mzw9YyYmYzw9NTM3MTl8fDUzNzIxPD1jJiZjPD01Mzc0N3x8NTM3NDk8PWMmJmM8PTUzNzc1fHw1Mzc3Nzw9YyYmYzw9NTM4MDN8fDUzODA1PD1jJiZjPD01MzgzMXx8NTM4MzM8PWMmJmM8PTUzODU5fHw1Mzg2MTw9YyYmYzw9NTM4ODd8fDUzODg5PD1jJiZjPD01MzkxNXx8NTM5MTc8PWMmJmM8PTUzOTQzfHw1Mzk0NTw9YyYmYzw9NTM5NzF8fDUzOTczPD1jJiZjPD01Mzk5OXx8NTQwMDE8PWMmJmM8PTU0MDI3fHw1NDAyOTw9YyYmYzw9NTQwNTV8fDU0MDU3PD1jJiZjPD01NDA4M3x8NTQwODU8PWMmJmM8PTU0MTExfHw1NDExMzw9YyYmYzw9NTQxMzl8fDU0MTQxPD1jJiZjPD01NDE2N3x8NTQxNjk8PWMmJmM8PTU0MTk1fHw1NDE5Nzw9YyYmYzw9NTQyMjN8fDU0MjI1PD1jJiZjPD01NDI1MXx8NTQyNTM8PWMmJmM8PTU0Mjc5fHw1NDI4MTw9YyYmYzw9NTQzMDd8fDU0MzA5PD1jJiZjPD01NDMzNXx8NTQzMzc8PWMmJmM8PTU0MzYzfHw1NDM2NTw9YyYmYzw9NTQzOTF8fDU0MzkzPD1jJiZjPD01NDQxOXx8NTQ0MjE8PWMmJmM8PTU0NDQ3fHw1NDQ0OTw9YyYmYzw9NTQ0NzV8fDU0NDc3PD1jJiZjPD01NDUwM3x8NTQ1MDU8PWMmJmM8PTU0NTMxfHw1NDUzMzw9YyYmYzw9NTQ1NTl8fDU0NTYxPD1jJiZjPD01NDU4N3x8NTQ1ODk8PWMmJmM8PTU0NjE1fHw1NDYxNzw9YyYmYzw9NTQ2NDN8fDU0NjQ1PD1jJiZjPD01NDY3MXx8NTQ2NzM8PWMmJmM8PTU0Njk5fHw1NDcwMTw9YyYmYzw9NTQ3Mjd8fDU0NzI5PD1jJiZjPD01NDc1NXx8NTQ3NTc8PWMmJmM8PTU0NzgzfHw1NDc4NTw9YyYmYzw9NTQ4MTF8fDU0ODEzPD1jJiZjPD01NDgzOXx8NTQ4NDE8PWMmJmM8PTU0ODY3fHw1NDg2OTw9YyYmYzw9NTQ4OTV8fDU0ODk3PD1jJiZjPD01NDkyM3x8NTQ5MjU8PWMmJmM8PTU0OTUxfHw1NDk1Mzw9YyYmYzw9NTQ5Nzl8fDU0OTgxPD1jJiZjPD01NTAwN3x8NTUwMDk8PWMmJmM8PTU1MDM1fHw1NTAzNzw9YyYmYzw9NTUwNjN8fDU1MDY1PD1jJiZjPD01NTA5MXx8NTUwOTM8PWMmJmM8PTU1MTE5fHw1NTEyMTw9YyYmYzw9NTUxNDd8fDU1MTQ5PD1jJiZjPD01NTE3NXx8NTUxNzc8PWMmJmM8PTU1MjAzP2Q6Yz09OTc1N3x8Yz09OTk3N3x8OTk5NDw9YyYmYzw9OTk5N3x8Yz09MTI3ODc3fHwxMjc5Mzg8PWMmJmM8PTEyNzk0MHx8Yz09MTI3OTQzfHwxMjc5NDY8PWMmJmM8PTEyNzk0OHx8MTI4MDY2PD1jJiZjPD0xMjgwNjd8fDEyODA3MDw9YyYmYzw9MTI4MDgwfHxjPT0xMjgxMTB8fDEyODExMjw9YyYmYzw9MTI4MTIwfHxjPT0xMjgxMjR8fDEyODEyOTw9YyYmYzw9MTI4MTMxfHwxMjgxMzM8PWMmJmM8PTEyODEzNXx8Yz09MTI4MTcwfHwxMjgzNzI8PWMmJmM8PTEyODM3M3x8Yz09MTI4Mzc4fHxjPT0xMjg0MDB8fDEyODQwNTw9YyYmYzw9MTI4NDA2fHwxMjg1ODE8PWMmJmM8PTEyODU4M3x8MTI4NTg3PD1jJiZjPD0xMjg1OTF8fGM9PTEyODY3NXx8MTI4NjkyPD1jJiZjPD0xMjg2OTR8fGM9PTEyODcwNHx8Yz09MTI4NzE2fHwxMjkzMDQ8PWMmJmM8PTEyOTMwOHx8MTI5MzEwPD1jJiZjPD0xMjkzMTF8fGM9PTEyOTMxOHx8MTI5MzI4PD1jJiZjPD0xMjkzMzd8fDEyOTM0MTw9YyYmYzw9MTI5MzQyfHwxMjk0ODk8PWMmJmM8PTEyOTUwMT9fOjEyNzk5NTw9YyYmYzw9MTI3OTk5P1I6Yz09ODIwNT9JOmM9PTk3OTJ8fGM9PTk3OTR8fDk4Nzc8PWMmJmM8PTk4Nzh8fGM9PTk5OTJ8fGM9PTEwMDg0fHxjPT0xMjc3NTJ8fGM9PTEyNzgwNnx8Yz09MTI3ODU5fHxjPT0xMjc4OTF8fGM9PTEyNzkwOHx8Yz09MTI3OTEyfHxjPT0xMjc5Nzl8fGM9PTEyNzk4MXx8Yz09MTI4MTM5fHwxMjgxODc8PWMmJmM8PTEyODE4OHx8Yz09MTI4Mjk1fHxjPT0xMjgzMDB8fGM9PTEyODQ4OHx8Yz09MTI4NjQwfHxjPT0xMjg2NTg/QzoxMjgxMDI8PWMmJmM8PTEyODEwNT9OOmZ9cmV0dXJuIHRoaXN9dHlwZW9mIGdJPCJ1IiYmZ0kuZXhwb3J0cyYmKGdJLmV4cG9ydHM9VGV0KX0pO2Z1bmN0aW9uIE5ldCgpe3RoaXMudGV4dHVyZUluZm89dm9pZCAwLHRoaXMuZGltZW5zaW9ucz12b2lkIDAsdGhpcy5iaWxsYm9hcmQ9dm9pZCAwfWZ1bmN0aW9uIEZldCh0LGUsaSl7dGhpcy5sYWJlbENvbGxlY3Rpb249dCx0aGlzLmluZGV4PWUsdGhpcy5kaW1lbnNpb25zPWl9ZnVuY3Rpb24gVmV0KHQpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO2Uud2lkdGg9dlQueCxlLmhlaWdodD12VC55O2xldCBpPWUuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gaS5maWxsU3R5bGU9IiNmZmYiLGkuZmlsbFJlY3QoMCwwLGUud2lkdGgsZS5oZWlnaHQpLHQuYWRkSW1hZ2UoVnksZSl9ZnVuY3Rpb24gU2V0KHQsZSxpLG4scyxvLHIpe3JldHVybiB5ci5mb250PWUseXIuZmlsbENvbG9yPWkseXIuc3Ryb2tlQ29sb3I9bix5ci5zdHJva2VXaWR0aD1zLHlyLnBhZGRpbmc9cG8uUEFERElORyxyPT09bW4uQ0VOVEVSP3lyLnRleHRCYXNlbGluZT0ibWlkZGxlIjpyPT09bW4uVE9QP3lyLnRleHRCYXNlbGluZT0idG9wIjp5ci50ZXh0QmFzZWxpbmU9ImJvdHRvbSIseXIuZmlsbD1vPT09WWEuRklMTHx8bz09PVlhLkZJTExfQU5EX09VVExJTkUseXIuc3Ryb2tlPW89PT1ZYS5PVVRMSU5FfHxvPT09WWEuRklMTF9BTkRfT1VUTElORSx5ci5iYWNrZ3JvdW5kQ29sb3I9WnQuQkxBQ0ssSXkodCx5cil9ZnVuY3Rpb24gelQodCxlKXtlLnRleHR1cmVJbmZvPXZvaWQgMCxlLmRpbWVuc2lvbnM9dm9pZCAwO2xldCBpPWUuYmlsbGJvYXJkO20oaSkmJihpLnNob3c9ITEsaS5pbWFnZT12b2lkIDAsbShpLl9yZW1vdmVDYWxsYmFja0Z1bmMpJiYoaS5fcmVtb3ZlQ2FsbGJhY2tGdW5jKCksaS5fcmVtb3ZlQ2FsbGJhY2tGdW5jPXZvaWQgMCksdC5fc3BhcmVCaWxsYm9hcmRzLnB1c2goaSksZS5iaWxsYm9hcmQ9dm9pZCAwKX1mdW5jdGlvbiBPZXQodCxlLGksbil7bi5pbmRleD10LmFkZEltYWdlU3luYyhlLGkpfWZ1bmN0aW9uIEdldCh0LGUpe2xldCBpPWUuX3JlbmRlcmVkVGV4dCxuPUJldC5zcGxpdEdyYXBoZW1lcyhpKSxzPW4ubGVuZ3RoLG89ZS5fZ2x5cGhzLHI9by5sZW5ndGgsYSxoLEE7aWYoZS5fcmVsYXRpdmVTaXplPWUuX2ZvbnRTaXplL3BvLkZPTlRfU0laRSxzPHIpZm9yKGg9cztoPHI7KytoKXpUKHQsb1toXSk7by5sZW5ndGg9cztsZXQgZD1lLnNob3cmJmUuX3Nob3dCYWNrZ3JvdW5kJiZpLnNwbGl0KGAKYCkuam9pbigiIikubGVuZ3RoPjAsZj1lLl9iYWNrZ3JvdW5kQmlsbGJvYXJkLEU9dC5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb247ZD8obShmKXx8KGY9RS5hZGQoe2NvbGxlY3Rpb246dCxpbWFnZTpWeSxpbWFnZVN1YlJlZ2lvbjpZZXR9KSxlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkPWYpLGYuY29sb3I9ZS5fYmFja2dyb3VuZENvbG9yLGYuc2hvdz1lLl9zaG93LGYucG9zaXRpb249ZS5fcG9zaXRpb24sZi5leWVPZmZzZXQ9ZS5fZXllT2Zmc2V0LGYucGl4ZWxPZmZzZXQ9ZS5fcGl4ZWxPZmZzZXQsZi5ob3Jpem9udGFsT3JpZ2luPXRvLkxFRlQsZi52ZXJ0aWNhbE9yaWdpbj1lLl92ZXJ0aWNhbE9yaWdpbixmLmhlaWdodFJlZmVyZW5jZT1lLl9oZWlnaHRSZWZlcmVuY2UsZi5zY2FsZT1lLnRvdGFsU2NhbGUsZi5waWNrUHJpbWl0aXZlPWUsZi5pZD1lLl9pZCxmLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9ZS5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSxmLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPWUuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLGYuc2NhbGVCeURpc3RhbmNlPWUuX3NjYWxlQnlEaXN0YW5jZSxmLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1lLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sZi5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9ZS5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLGYuY2x1c3RlclNob3c9ZS5jbHVzdGVyU2hvdyk6bShmKSYmKEUucmVtb3ZlKGYpLGUuX2JhY2tncm91bmRCaWxsYm9hcmQ9Zj12b2lkIDApO2xldCBfPXQuX2dseXBoVGV4dHVyZUNhY2hlO2ZvcihBPTA7QTxzOysrQSl7bGV0IFI9bltBXSxJPWUuX3ZlcnRpY2FsT3JpZ2luLEM9SlNPTi5zdHJpbmdpZnkoW1IsZS5fZm9udEZhbWlseSxlLl9mb250U3R5bGUsZS5fZm9udFdlaWdodCwrSV0pLE49X1tDXTtpZighbShOKSl7bGV0IFQ9YCR7ZS5fZm9udFN0eWxlfSAke2UuX2ZvbnRXZWlnaHR9ICR7cG8uRk9OVF9TSVpFfXB4ICR7ZS5fZm9udEZhbWlseX1gLGI9U2V0KFIsVCxadC5XSElURSxadC5XSElURSwwLFlhLkZJTEwsSSk7aWYoTj1uZXcgRmV0KHQsLTEsYi5kaW1lbnNpb25zKSxfW0NdPU4sYi53aWR0aD4wJiZiLmhlaWdodD4wKXtsZXQgRj0oMCxieS5kZWZhdWx0KShiLHtjdXRvZmY6cG8uQ1VUT0ZGLHJhZGl1czpwby5SQURJVVN9KSxCPWIuZ2V0Q29udGV4dCgiMmQiKSxVPWIud2lkdGgsUT1iLmhlaWdodCxNPUIuZ2V0SW1hZ2VEYXRhKDAsMCxVLFEpO2ZvcihsZXQgaz0wO2s8VTtrKyspZm9yKGxldCB5PTA7eTxRO3krKyl7bGV0IGM9eSpVK2ssZz1GW2NdKjI1NSxPPWMqNDtNLmRhdGFbTyswXT1nLE0uZGF0YVtPKzFdPWcsTS5kYXRhW08rMl09ZyxNLmRhdGFbTyszXT1nfUIucHV0SW1hZ2VEYXRhKE0sMCwwKSxSIT09IiAiJiZPZXQodC5fdGV4dHVyZUF0bGFzLEMsYixOKX19aWYoYT1vW0FdLG0oYSk/Ti5pbmRleD09PS0xP3pUKHQsYSk6bShhLnRleHR1cmVJbmZvKSYmKGEudGV4dHVyZUluZm89dm9pZCAwKTooYT1uZXcgTmV0LG9bQV09YSksYS50ZXh0dXJlSW5mbz1OLGEuZGltZW5zaW9ucz1OLmRpbWVuc2lvbnMsTi5pbmRleCE9PS0xKXtsZXQgVD1hLmJpbGxib2FyZCxiPXQuX3NwYXJlQmlsbGJvYXJkczttKFQpfHwoYi5sZW5ndGg+MD9UPWIucG9wKCk6KFQ9dC5fYmlsbGJvYXJkQ29sbGVjdGlvbi5hZGQoe2NvbGxlY3Rpb246dH0pLFQuX2xhYmVsRGltZW5zaW9ucz1uZXcgbnQsVC5fbGFiZWxUcmFuc2xhdGU9bmV3IG50KSxhLmJpbGxib2FyZD1UKSxULnNob3c9ZS5fc2hvdyxULnBvc2l0aW9uPWUuX3Bvc2l0aW9uLFQuZXllT2Zmc2V0PWUuX2V5ZU9mZnNldCxULnBpeGVsT2Zmc2V0PWUuX3BpeGVsT2Zmc2V0LFQuaG9yaXpvbnRhbE9yaWdpbj10by5MRUZULFQudmVydGljYWxPcmlnaW49ZS5fdmVydGljYWxPcmlnaW4sVC5oZWlnaHRSZWZlcmVuY2U9ZS5faGVpZ2h0UmVmZXJlbmNlLFQuc2NhbGU9ZS50b3RhbFNjYWxlLFQucGlja1ByaW1pdGl2ZT1lLFQuaWQ9ZS5faWQsVC5pbWFnZT1DLFQudHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1lLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlLFQucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U9ZS5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UsVC5zY2FsZUJ5RGlzdGFuY2U9ZS5fc2NhbGVCeURpc3RhbmNlLFQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPWUuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbixULmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZT1lLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsVC5fYmF0Y2hJbmRleD1lLl9iYXRjaEluZGV4LFQub3V0bGluZUNvbG9yPWUub3V0bGluZUNvbG9yLGUuc3R5bGU9PT1ZYS5GSUxMX0FORF9PVVRMSU5FPyhULmNvbG9yPWUuX2ZpbGxDb2xvcixULm91dGxpbmVXaWR0aD1lLm91dGxpbmVXaWR0aCk6ZS5zdHlsZT09PVlhLkZJTEw/KFQuY29sb3I9ZS5fZmlsbENvbG9yLFQub3V0bGluZVdpZHRoPTApOmUuc3R5bGU9PT1ZYS5PVVRMSU5FJiYoVC5jb2xvcj1adC5UUkFOU1BBUkVOVCxULm91dGxpbmVXaWR0aD1lLm91dGxpbmVXaWR0aCl9fWUuX3JlcG9zaXRpb25BbGxHbHlwaHM9ITB9ZnVuY3Rpb24gRnkodCxlLGkpe3JldHVybiBlPT09dG8uQ0VOVEVSPy10LzI6ZT09PXRvLlJJR0hUPy0odCtpLngpOmkueH1mdW5jdGlvbiBEZXQodCl7bGV0IGU9dC5fZ2x5cGhzLGk9dC5fcmVuZGVyZWRUZXh0LG4scyxvPTAscj0wLGE9W10saD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT0wLGQ9MSxmLEU9ZS5sZW5ndGgsXz10Ll9iYWNrZ3JvdW5kQmlsbGJvYXJkLFI9bnQuY2xvbmUobShfKT90Ll9iYWNrZ3JvdW5kUGFkZGluZzpudC5aRVJPLFdldCk7Zm9yKFIueC89dC5fcmVsYXRpdmVTaXplLFIueS89dC5fcmVsYXRpdmVTaXplLGY9MDtmPEU7KytmKWkuY2hhckF0KGYpPT09YApgPyhhLnB1c2gobyksKytkLG89MCk6KG49ZVtmXSxzPW4uZGltZW5zaW9ucyxBPU1hdGgubWF4KEEscy5oZWlnaHQtcy5kZXNjZW50KSxoPU1hdGgubWF4KGgscy5kZXNjZW50KSxvKz1zLndpZHRoLXMubWlueCxmPEUtMSYmKG8rPWVbZisxXS5kaW1lbnNpb25zLm1pbngpLHI9TWF0aC5tYXgocixvKSk7YS5wdXNoKG8pO2xldCBJPUEraCxDPXQudG90YWxTY2FsZSxOPXQuX2hvcml6b250YWxPcmlnaW4sVD10Ll92ZXJ0aWNhbE9yaWdpbixiPTAsRj1hW2JdLEI9RnkoRixOLFIpLFU9KG0odC5fbGluZUhlaWdodCk/dC5fbGluZUhlaWdodDpiZXQqdC5fZm9udFNpemUpL3QuX3JlbGF0aXZlU2l6ZSxRPVUqKGQtMSksTT1yLGs9SStRO20oXykmJihNKz1SLngqMixrKz1SLnkqMixfLl9sYWJlbEhvcml6b250YWxPcmlnaW49Tiksa24ueD1CKkMsa24ueT0wO2xldCB5PSEwLGM9MDtmb3IoZj0wO2Y8RTsrK2YpaWYoaS5jaGFyQXQoZik9PT1gCmApKytiLGMrPVUsRj1hW2JdLEI9RnkoRixOLFIpLGtuLng9QipDLHk9ITA7ZWxzZSBpZihuPWVbZl0scz1uLmRpbWVuc2lvbnMsVD09PW1uLlRPUD8oa24ueT1zLmhlaWdodC1BLVIueSxrbi55Kz1wby5QQURESU5HKTpUPT09bW4uQ0VOVEVSP2tuLnk9KFErcy5oZWlnaHQtQSkvMjpUPT09bW4uQkFTRUxJTkU/KGtuLnk9USxrbi55LT1wby5QQURESU5HKTooa24ueT1RK2grUi55LGtuLnktPXBvLlBBRERJTkcpLGtuLnk9KGtuLnktcy5kZXNjZW50LWMpKkMseSYmKGtuLngtPXBvLlBBRERJTkcqQyx5PSExKSxtKG4uYmlsbGJvYXJkKSYmKG4uYmlsbGJvYXJkLl9zZXRUcmFuc2xhdGUoa24pLG4uYmlsbGJvYXJkLl9sYWJlbERpbWVuc2lvbnMueD1NLG4uYmlsbGJvYXJkLl9sYWJlbERpbWVuc2lvbnMueT1rLG4uYmlsbGJvYXJkLl9sYWJlbEhvcml6b250YWxPcmlnaW49TiksZjxFLTEpe2xldCBnPWVbZisxXTtrbi54Kz0ocy53aWR0aC1zLm1pbngrZy5kaW1lbnNpb25zLm1pbngpKkN9aWYobShfKSYmaS5zcGxpdChgCmApLmpvaW4oIiIpLmxlbmd0aD4wJiYoTj09PXRvLkNFTlRFUj9CPS1yLzItUi54Ok49PT10by5SSUdIVD9CPS0ocitSLngqMik6Qj0wLGtuLng9QipDLFQ9PT1tbi5UT1A/a24ueT1JLUEtaDpUPT09bW4uQ0VOVEVSP2tuLnk9KEktQSkvMi1oOlQ9PT1tbi5CQVNFTElORT9rbi55PS1SLnktaDprbi55PTAsa24ueT1rbi55KkMsXy53aWR0aD1NLF8uaGVpZ2h0PWssXy5fc2V0VHJhbnNsYXRlKGtuKSxfLl9sYWJlbFRyYW5zbGF0ZT1udC5jbG9uZShrbixfLl9sYWJlbFRyYW5zbGF0ZSkpLGdsKHQuaGVpZ2h0UmVmZXJlbmNlKSlmb3IoZj0wO2Y8RTsrK2Ype249ZVtmXTtsZXQgZz1uLmJpbGxib2FyZDttKGcpJiYoZy5fbGFiZWxUcmFuc2xhdGU9bnQuY2xvbmUoa24sZy5fbGFiZWxUcmFuc2xhdGUpKX19ZnVuY3Rpb24gU3kodCxlKXtsZXQgaT1lLl9nbHlwaHM7Zm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7KytuKXpUKHQsaVtuXSk7bShlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkKSYmKHQuX2JhY2tncm91bmRCaWxsYm9hcmRDb2xsZWN0aW9uLnJlbW92ZShlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkKSxlLl9iYWNrZ3JvdW5kQmlsbGJvYXJkPXZvaWQgMCksZS5fbGFiZWxDb2xsZWN0aW9uPXZvaWQgMCxtKGUuX3JlbW92ZUNhbGxiYWNrRnVuYykmJmUuX3JlbW92ZUNhbGxiYWNrRnVuYygpLGxpKGUpfWZ1bmN0aW9uIHBBKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9zY2VuZT10LnNjZW5lLHRoaXMuX2JhdGNoVGFibGU9dC5iYXRjaFRhYmxlLHRoaXMuX3RleHR1cmVBdGxhcz12b2lkIDAsdGhpcy5fYmFja2dyb3VuZFRleHR1cmVBdGxhcz12b2lkIDAsdGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb249bmV3IHdtKHtzY2VuZTp0aGlzLl9zY2VuZX0pLHRoaXMuX2JhY2tncm91bmRCaWxsYm9hcmRDb2xsZWN0aW9uLmRlc3Ryb3lUZXh0dXJlQXRsYXM9ITEsdGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbj1uZXcgd20oe3NjZW5lOnRoaXMuX3NjZW5lLGJhdGNoVGFibGU6dGhpcy5fYmF0Y2hUYWJsZX0pLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveVRleHR1cmVBdGxhcz0hMSx0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLl9zZGY9ITAsdGhpcy5fc3BhcmVCaWxsYm9hcmRzPVtdLHRoaXMuX2dseXBoVGV4dHVyZUNhY2hlPXt9LHRoaXMuX2xhYmVscz1bXSx0aGlzLl9sYWJlbHNUb1VwZGF0ZT1bXSx0aGlzLl90b3RhbEdseXBoQ291bnQ9MCx0aGlzLl9oaWdobGlnaHRDb2xvcj1adC5jbG9uZShadC5XSElURSksdGhpcy5zaG93PVoodC5zaG93LCEwKSx0aGlzLm1vZGVsTWF0cml4PWF0LmNsb25lKFoodC5tb2RlbE1hdHJpeCxhdC5JREVOVElUWSkpLHRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9Wih0LmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLCExKSx0aGlzLmJsZW5kT3B0aW9uPVoodC5ibGVuZE9wdGlvbixXbi5PUEFRVUVfQU5EX1RSQU5TTFVDRU5UKX12YXIgYnksWXksYmV0LFZ5LHZULFlldCx5cixCZXQsa24sV2V0LEtULE95PVMoKCk9PntFcigpO1hlKCk7UW4oKTtGdCgpO210KCk7V3MoKTtPdCgpO2JpKCk7cHkoKTtieT1jbyhUeSgpLDEpO0pUKCk7RUkoKTtTbSgpO09tKCk7SFQoKTtqVCgpO19JKCk7VVQoKTtDRSgpO1l5PWNvKE55KCksMSk7YmV0PTEuMixWeT0iSURfV0hJVEVfUElYRUwiLHZUPW5ldyBudCg0LDQpLFlldD1uZXcgbWkoMSwxLDEsMSk7eXI9e307QmV0PW5ldyBZeS5kZWZhdWx0O2tuPW5ldyBudCxXZXQ9bmV3IG50O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBBLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFiZWxzLmxlbmd0aH19fSk7cEEucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtsZXQgZT1uZXcgREUodCx0aGlzKTtyZXR1cm4gdGhpcy5fbGFiZWxzLnB1c2goZSksdGhpcy5fbGFiZWxzVG9VcGRhdGUucHVzaChlKSxlfTtwQS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKG0odCkmJnQuX2xhYmVsQ29sbGVjdGlvbj09PXRoaXMpe2xldCBlPXRoaXMuX2xhYmVscy5pbmRleE9mKHQpO2lmKGUhPT0tMSlyZXR1cm4gdGhpcy5fbGFiZWxzLnNwbGljZShlLDEpLFN5KHRoaXMsdCksITB9cmV0dXJuITF9O3BBLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9sYWJlbHM7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7KytlKVN5KHRoaXMsdFtlXSk7dC5sZW5ndGg9MH07cEEucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiZ0Ll9sYWJlbENvbGxlY3Rpb249PT10aGlzfTtwQS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpbmRleCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdGhpcy5fbGFiZWxzW3RdfTtwQS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLnNob3cpcmV0dXJuO2xldCBlPXRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24saT10aGlzLl9iYWNrZ3JvdW5kQmlsbGJvYXJkQ29sbGVjdGlvbjtlLm1vZGVsTWF0cml4PXRoaXMubW9kZWxNYXRyaXgsZS5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT10aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLGkubW9kZWxNYXRyaXg9dGhpcy5tb2RlbE1hdHJpeCxpLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU7bGV0IG49dC5jb250ZXh0O20odGhpcy5fdGV4dHVyZUF0bGFzKXx8KHRoaXMuX3RleHR1cmVBdGxhcz1uZXcgVkUoe2NvbnRleHQ6bn0pLGUudGV4dHVyZUF0bGFzPXRoaXMuX3RleHR1cmVBdGxhcyksbSh0aGlzLl9iYWNrZ3JvdW5kVGV4dHVyZUF0bGFzKXx8KHRoaXMuX2JhY2tncm91bmRUZXh0dXJlQXRsYXM9bmV3IFZFKHtjb250ZXh0Om4saW5pdGlhbFNpemU6dlR9KSxpLnRleHR1cmVBdGxhcz10aGlzLl9iYWNrZ3JvdW5kVGV4dHVyZUF0bGFzLFZldCh0aGlzLl9iYWNrZ3JvdW5kVGV4dHVyZUF0bGFzKSk7bGV0IHM9dGhpcy5fbGFiZWxzVG9VcGRhdGUubGVuZ3RoO2ZvcihsZXQgcj0wO3I8czsrK3Ipe2xldCBhPXRoaXMuX2xhYmVsc1RvVXBkYXRlW3JdO2lmKGEuaXNEZXN0cm95ZWQoKSljb250aW51ZTtsZXQgaD1hLl9nbHlwaHMubGVuZ3RoO2EuX3JlYmluZEFsbEdseXBocyYmKEdldCh0aGlzLGEpLGEuX3JlYmluZEFsbEdseXBocz0hMSksYS5fcmVwb3NpdGlvbkFsbEdseXBocyYmKERldChhKSxhLl9yZXBvc2l0aW9uQWxsR2x5cGhzPSExKTtsZXQgQT1hLl9nbHlwaHMubGVuZ3RoLWg7dGhpcy5fdG90YWxHbHlwaENvdW50Kz1BfWxldCBvPWkubGVuZ3RoPjA/V24uVFJBTlNMVUNFTlQ6dGhpcy5ibGVuZE9wdGlvbjtlLmJsZW5kT3B0aW9uPW8saS5ibGVuZE9wdGlvbj1vLGUuX2hpZ2hsaWdodENvbG9yPXRoaXMuX2hpZ2hsaWdodENvbG9yLGkuX2hpZ2hsaWdodENvbG9yPXRoaXMuX2hpZ2hsaWdodENvbG9yLHRoaXMuX2xhYmVsc1RvVXBkYXRlLmxlbmd0aD0wLGkudXBkYXRlKHQpLGUudXBkYXRlKHQpfTtwQS5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07cEEucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW1vdmVBbGwoKSx0aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uPXRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX3RleHR1cmVBdGxhcz10aGlzLl90ZXh0dXJlQXRsYXMmJnRoaXMuX3RleHR1cmVBdGxhcy5kZXN0cm95KCksdGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb249dGhpcy5fYmFja2dyb3VuZEJpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX2JhY2tncm91bmRUZXh0dXJlQXRsYXM9dGhpcy5fYmFja2dyb3VuZFRleHR1cmVBdGxhcyYmdGhpcy5fYmFja2dyb3VuZFRleHR1cmVBdGxhcy5kZXN0cm95KCksbGkodGhpcyl9O0tUPXBBfSk7ZnVuY3Rpb24gcnModCxlKXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksbSh0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkmJnQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPDApdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAuIik7bGV0IGk9dC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlLG49dC5zY2FsZUJ5RGlzdGFuY2Uscz10LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjtpZihtKGkpKXtpZihpLmZhcjw9aS5uZWFyKXRocm93IG5ldyBZKCJ0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLm5lYXIuIik7aT1naS5jbG9uZShpKX1pZihtKG4pKXtpZihuLmZhcjw9bi5uZWFyKXRocm93IG5ldyBZKCJzY2FsZUJ5RGlzdGFuY2UuZmFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHNjYWxlQnlEaXN0YW5jZS5uZWFyLiIpO249Z2kuY2xvbmUobil9aWYobShzKSl7aWYocy5mYXI8PXMubmVhcil0aHJvdyBuZXcgWSgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLmZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBkaXN0YW5jZURpc3BsYXlDb25kaXRpb24ubmVhci4iKTtzPVdvLmNsb25lKHMpfXRoaXMuX3Nob3c9Wih0LnNob3csITApLHRoaXMuX3Bvc2l0aW9uPWwuY2xvbmUoWih0LnBvc2l0aW9uLGwuWkVSTykpLHRoaXMuX2FjdHVhbFBvc2l0aW9uPWwuY2xvbmUodGhpcy5fcG9zaXRpb24pLHRoaXMuX2NvbG9yPVp0LmNsb25lKFoodC5jb2xvcixadC5XSElURSkpLHRoaXMuX291dGxpbmVDb2xvcj1adC5jbG9uZShaKHQub3V0bGluZUNvbG9yLFp0LlRSQU5TUEFSRU5UKSksdGhpcy5fb3V0bGluZVdpZHRoPVoodC5vdXRsaW5lV2lkdGgsMCksdGhpcy5fcGl4ZWxTaXplPVoodC5waXhlbFNpemUsMTApLHRoaXMuX3NjYWxlQnlEaXN0YW5jZT1uLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9aSx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249cyx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9Wih0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSwwKSx0aGlzLl9pZD10LmlkLHRoaXMuX2NvbGxlY3Rpb249Wih0LmNvbGxlY3Rpb24sZSksdGhpcy5fY2x1c3RlclNob3c9ITAsdGhpcy5fcGlja0lkPXZvaWQgMCx0aGlzLl9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb249ZSx0aGlzLl9kaXJ0eT0hMSx0aGlzLl9pbmRleD0tMX1mdW5jdGlvbiB3cih0LGUpe2xldCBpPXQuX3BvaW50UHJpbWl0aXZlQ29sbGVjdGlvbjttKGkpJiYoaS5fdXBkYXRlUG9pbnRQcmltaXRpdmUodCxlKSx0Ll9kaXJ0eT0hMCl9dmFyIEJ5LER5LFVldCxNZXQsUWV0LGtldCxMZXQseWV0LHdldCx4ZXQsR3ksV3ksdW8sWFQ9UygoKT0+e0VyKCk7WGUoKTtIdCgpO09zKCk7UW4oKTtGdCgpO210KCk7T3QoKTt6WigpO2JpKCk7SUUoKTt1YSgpO2dUKCk7Qnk9cnMuU0hPV19JTkRFWD0wLER5PXJzLlBPU0lUSU9OX0lOREVYPTEsVWV0PXJzLkNPTE9SX0lOREVYPTIsTWV0PXJzLk9VVExJTkVfQ09MT1JfSU5ERVg9MyxRZXQ9cnMuT1VUTElORV9XSURUSF9JTkRFWD00LGtldD1ycy5QSVhFTF9TSVpFX0lOREVYPTUsTGV0PXJzLlNDQUxFX0JZX0RJU1RBTkNFX0lOREVYPTYseWV0PXJzLlRSQU5TTFVDRU5DWV9CWV9ESVNUQU5DRV9JTkRFWD03LHdldD1ycy5ESVNUQU5DRV9ESVNQTEFZX0NPTkRJVElPTl9JTkRFWD04LHhldD1ycy5ESVNBQkxFX0RFUFRIX0RJU1RBTkNFX0lOREVYPTk7cnMuTlVNQkVSX09GX1BST1BFUlRJRVM9MTA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocnMucHJvdG90eXBlLHtzaG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd30sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTt0aGlzLl9zaG93IT09dCYmKHRoaXMuX3Nob3c9dCx3cih0aGlzLEJ5KSl9fSxwb3NpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX3Bvc2l0aW9uO2wuZXF1YWxzKGUsdCl8fChsLmNsb25lKHQsZSksbC5jbG9uZSh0LHRoaXMuX2FjdHVhbFBvc2l0aW9uKSx3cih0aGlzLER5KSl9fSxzY2FsZUJ5RGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiZ0LmZhcjw9dC5uZWFyKXRocm93IG5ldyBZKCJmYXIgZGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gbmVhciBkaXN0YW5jZS4iKTtsZXQgZT10aGlzLl9zY2FsZUJ5RGlzdGFuY2U7Z2kuZXF1YWxzKGUsdCl8fCh0aGlzLl9zY2FsZUJ5RGlzdGFuY2U9Z2kuY2xvbmUodCxlKSx3cih0aGlzLExldCkpfX0sdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2V9LHNldDpmdW5jdGlvbih0KXtpZihtKHQpJiZ0LmZhcjw9dC5uZWFyKXRocm93IG5ldyBZKCJmYXIgZGlzdGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gbmVhciBkaXN0YW5jZS4iKTtsZXQgZT10aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlO2dpLmVxdWFscyhlLHQpfHwodGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1naS5jbG9uZSh0LGUpLHdyKHRoaXMseWV0KSl9fSxwaXhlbFNpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbFNpemV9LHNldDpmdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQuIik7dGhpcy5fcGl4ZWxTaXplIT09dCYmKHRoaXMuX3BpeGVsU2l6ZT10LHdyKHRoaXMsa2V0KSl9fSxjb2xvcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2NvbG9yO1p0LmVxdWFscyhlLHQpfHwoWnQuY2xvbmUodCxlKSx3cih0aGlzLFVldCkpfX0sb3V0bGluZUNvbG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3V0bGluZUNvbG9yfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX291dGxpbmVDb2xvcjtadC5lcXVhbHMoZSx0KXx8KFp0LmNsb25lKHQsZSksd3IodGhpcyxNZXQpKX19LG91dGxpbmVXaWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX291dGxpbmVXaWR0aH0sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTt0aGlzLl9vdXRsaW5lV2lkdGghPT10JiYodGhpcy5fb3V0bGluZVdpZHRoPXQsd3IodGhpcyxRZXQpKX19LGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbn0sc2V0OmZ1bmN0aW9uKHQpe2lmKG0odCkmJnQuZmFyPD10Lm5lYXIpdGhyb3cgbmV3IFkoImZhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBuZWFyIik7V28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0KXx8KHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1Xby5jbG9uZSh0LHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksd3IodGhpcyx3ZXQpKX19LGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZX0sc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSE9PXQpe2lmKCFtKHQpfHx0PDApdGhyb3cgbmV3IFkoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLjAuIik7dGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXQsd3IodGhpcyx4ZXQpfX19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9pZD10LG0odGhpcy5fcGlja0lkKSYmKHRoaXMuX3BpY2tJZC5vYmplY3QuaWQ9dCl9fSxwaWNrSWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waWNrSWR9fSxjbHVzdGVyU2hvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJTaG93fSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlclNob3chPT10JiYodGhpcy5fY2x1c3RlclNob3c9dCx3cih0aGlzLEJ5KSl9fX0pO3JzLnByb3RvdHlwZS5nZXRQaWNrSWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG0odGhpcy5fcGlja0lkKXx8KHRoaXMuX3BpY2tJZD10LmNyZWF0ZVBpY2tJZCh7cHJpbWl0aXZlOnRoaXMsY29sbGVjdGlvbjp0aGlzLl9jb2xsZWN0aW9uLGlkOnRoaXMuX2lkfSkpLHRoaXMuX3BpY2tJZH07cnMucHJvdG90eXBlLl9nZXRBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3R1YWxQb3NpdGlvbn07cnMucHJvdG90eXBlLl9zZXRBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbih0KXtsLmNsb25lKHQsdGhpcy5fYWN0dWFsUG9zaXRpb24pLHdyKHRoaXMsRHkpfTtHeT1uZXcgaWU7cnMuX2NvbXB1dGVBY3R1YWxQb3NpdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGUubW9kZT09PXllLlNDRU5FM0Q/dDooYXQubXVsdGlwbHlCeVBvaW50KGksdCxHeSksQm0uY29tcHV0ZUFjdHVhbFdnczg0UG9zaXRpb24oZSxHeSkpfTtXeT1uZXcgaWU7cnMuX2NvbXB1dGVTY3JlZW5TcGFjZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzPWF0Lm11bHRpcGx5QnlWZWN0b3IodCxpZS5mcm9tRWxlbWVudHMoZS54LGUueSxlLnosMSxXeSksV3kpO3JldHVybiBCbS53Z3M4NFRvV2luZG93Q29vcmRpbmF0ZXMoaSxzLG4pfTtycy5wcm90b3R5cGUuY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb249ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLl9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb247aWYobShlKXx8KGU9bmV3IG50KSwhbShpKSl0aHJvdyBuZXcgWSgiUG9pbnRQcmltaXRpdmUgbXVzdCBiZSBpbiBhIGNvbGxlY3Rpb24uIik7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNjZW5lIGlzIHJlcXVpcmVkLiIpO2xldCBuPWkubW9kZWxNYXRyaXgscz1ycy5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24obix0aGlzLl9hY3R1YWxQb3NpdGlvbix0LGUpO2lmKG0ocykpcmV0dXJuIHMueT10LmNhbnZhcy5jbGllbnRIZWlnaHQtcy55LHN9O3JzLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3g9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQucGl4ZWxTaXplLHM9biouNSxvPWUueC1zLHI9ZS55LXMsYT1uLGg9bjtyZXR1cm4gbShpKXx8KGk9bmV3IG1pKSxpLng9byxpLnk9cixpLndpZHRoPWEsaS5oZWlnaHQ9aCxpfTtycy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmdGhpcy5faWQ9PT10Ll9pZCYmbC5lcXVhbHModGhpcy5fcG9zaXRpb24sdC5fcG9zaXRpb24pJiZadC5lcXVhbHModGhpcy5fY29sb3IsdC5fY29sb3IpJiZ0aGlzLl9waXhlbFNpemU9PT10Ll9waXhlbFNpemUmJnRoaXMuX291dGxpbmVXaWR0aD09PXQuX291dGxpbmVXaWR0aCYmdGhpcy5fc2hvdz09PXQuX3Nob3cmJlp0LmVxdWFscyh0aGlzLl9vdXRsaW5lQ29sb3IsdC5fb3V0bGluZUNvbG9yKSYmZ2kuZXF1YWxzKHRoaXMuX3NjYWxlQnlEaXN0YW5jZSx0Ll9zY2FsZUJ5RGlzdGFuY2UpJiZnaS5lcXVhbHModGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0Ll90cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSYmV28uZXF1YWxzKHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0Ll9kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pJiZ0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9PT10Ll9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2V9O3JzLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX3BpY2tJZD10aGlzLl9waWNrSWQmJnRoaXMuX3BpY2tJZC5kZXN0cm95KCksdGhpcy5fcG9pbnRQcmltaXRpdmVDb2xsZWN0aW9uPXZvaWQgMH07dW89cnN9KTt2YXIgTUUsVXk9UygoKT0+e01FPWBpbiB2ZWM0IHZfY29sb3I7CmluIHZlYzQgdl9vdXRsaW5lQ29sb3I7CmluIGZsb2F0IHZfaW5uZXJQZXJjZW50OwppbiBmbG9hdCB2X3BpeGVsRGlzdGFuY2U7CmluIHZlYzQgdl9waWNrQ29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICAvLyBUaGUgZGlzdGFuY2UgaW4gVVYgc3BhY2UgZnJvbSB0aGlzIGZyYWdtZW50IHRvIHRoZSBjZW50ZXIgb2YgdGhlIHBvaW50LCBhdCBtb3N0IDAuNS4KICAgIGZsb2F0IGRpc3RhbmNlVG9DZW50ZXIgPSBsZW5ndGgoZ2xfUG9pbnRDb29yZCAtIHZlYzIoMC41KSk7CiAgICAvLyBUaGUgbWF4IGRpc3RhbmNlIHN0b3BzIG9uZSBwaXhlbCBzaHkgb2YgdGhlIGVkZ2UgdG8gbGVhdmUgc3BhY2UgZm9yIGFudGktYWxpYXNpbmcuCiAgICBmbG9hdCBtYXhEaXN0YW5jZSA9IG1heCgwLjAsIDAuNSAtIHZfcGl4ZWxEaXN0YW5jZSk7CiAgICBmbG9hdCB3aG9sZUFscGhhID0gMS4wIC0gc21vb3Roc3RlcChtYXhEaXN0YW5jZSwgMC41LCBkaXN0YW5jZVRvQ2VudGVyKTsKICAgIGZsb2F0IGlubmVyQWxwaGEgPSAxLjAgLSBzbW9vdGhzdGVwKG1heERpc3RhbmNlICogdl9pbm5lclBlcmNlbnQsIDAuNSAqIHZfaW5uZXJQZXJjZW50LCBkaXN0YW5jZVRvQ2VudGVyKTsKCiAgICB2ZWM0IGNvbG9yID0gbWl4KHZfb3V0bGluZUNvbG9yLCB2X2NvbG9yLCBpbm5lckFscGhhKTsKICAgIGNvbG9yLmEgKj0gd2hvbGVBbHBoYTsKCi8vIEZ1bGx5IHRyYW5zcGFyZW50IHBhcnRzIG9mIHRoZSBiaWxsYm9hcmQgYXJlIG5vdCBwaWNrYWJsZS4KI2lmICFkZWZpbmVkKE9QQVFVRSkgJiYgIWRlZmluZWQoVFJBTlNMVUNFTlQpCiAgICBpZiAoY29sb3IuYSA8IDAuMDA1KSAgIC8vIG1hdGNoZXMgMC8yNTUgYW5kIDEvMjU1CiAgICB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2Vsc2UKLy8gVGhlIGJpbGxib2FyZCBpcyByZW5kZXJlZCB0d2ljZS4gVGhlIG9wYXF1ZSBwYXNzIGRpc2NhcmRzIHRyYW5zbHVjZW50IGZyYWdtZW50cwovLyBhbmQgdGhlIHRyYW5zbHVjZW50IHBhc3MgZGlzY2FyZHMgb3BhcXVlIGZyYWdtZW50cy4KI2lmZGVmIE9QQVFVRQogICAgaWYgKGNvbG9yLmEgPCAwLjk5NSkgICAvLyBtYXRjaGVzIDwgMjU0LzI1NQogICAgewogICAgICAgIGRpc2NhcmQ7CiAgICB9CiNlbHNlCiAgICBpZiAoY29sb3IuYSA+PSAwLjk5NSkgIC8vIG1hdGNoZXMgMjU0LzI1NSBhbmQgMjU1LzI1NQogICAgewogICAgICAgIGRpc2NhcmQ7CiAgICB9CiNlbmRpZgojZW5kaWYKCiAgICBvdXRfRnJhZ0NvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChjb2xvcik7CiAgICBjem1fd3JpdGVMb2dEZXB0aCgpOwp9CmB9KTt2YXIgTXksUXk9UygoKT0+e015PWB1bmlmb3JtIGZsb2F0IHVfbWF4VG90YWxQb2ludFNpemU7CgppbiB2ZWM0IHBvc2l0aW9uSGlnaEFuZFNpemU7CmluIHZlYzQgcG9zaXRpb25Mb3dBbmRPdXRsaW5lOwppbiB2ZWM0IGNvbXByZXNzZWRBdHRyaWJ1dGUwOyAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3IsIG91dGxpbmVDb2xvciwgcGljayBjb2xvcgppbiB2ZWM0IGNvbXByZXNzZWRBdHRyaWJ1dGUxOyAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvdywgdHJhbnNsdWNlbmN5IGJ5IGRpc3RhbmNlLCBzb21lIGZyZWUgc3BhY2UKaW4gdmVjNCBzY2FsZUJ5RGlzdGFuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lYXIsIG5lYXJTY2FsZSwgZmFyLCBmYXJTY2FsZQppbiB2ZWMzIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbkFuZERpc2FibGVEZXB0aDsgICAgLy8gbmVhciwgZmFyLCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UKCm91dCB2ZWM0IHZfY29sb3I7Cm91dCB2ZWM0IHZfb3V0bGluZUNvbG9yOwpvdXQgZmxvYXQgdl9pbm5lclBlcmNlbnQ7Cm91dCBmbG9hdCB2X3BpeGVsRGlzdGFuY2U7Cm91dCB2ZWM0IHZfcGlja0NvbG9yOwoKY29uc3QgZmxvYXQgU0hJRlRfTEVGVDggPSAyNTYuMDsKY29uc3QgZmxvYXQgU0hJRlRfUklHSFQ4ID0gMS4wIC8gMjU2LjA7Cgp2b2lkIG1haW4oKQp7CiAgICAvLyBNb2RpZnlpbmcgdGhpcyBzaGFkZXIgbWF5IGFsc28gcmVxdWlyZSBtb2RpZmljYXRpb25zIHRvIFBvaW50UHJpbWl0aXZlLl9jb21wdXRlU2NyZWVuU3BhY2VQb3NpdGlvbgoKICAgIC8vIHVucGFjayBhdHRyaWJ1dGVzCiAgICB2ZWMzIHBvc2l0aW9uSGlnaCA9IHBvc2l0aW9uSGlnaEFuZFNpemUueHl6OwogICAgdmVjMyBwb3NpdGlvbkxvdyA9IHBvc2l0aW9uTG93QW5kT3V0bGluZS54eXo7CiAgICBmbG9hdCBvdXRsaW5lV2lkdGhCb3RoU2lkZXMgPSAyLjAgKiBwb3NpdGlvbkxvd0FuZE91dGxpbmUudzsKICAgIGZsb2F0IHRvdGFsU2l6ZSA9IHBvc2l0aW9uSGlnaEFuZFNpemUudyArIG91dGxpbmVXaWR0aEJvdGhTaWRlczsKICAgIGZsb2F0IG91dGxpbmVQZXJjZW50ID0gb3V0bGluZVdpZHRoQm90aFNpZGVzIC8gdG90YWxTaXplOwogICAgLy8gU2NhbGUgaW4gcmVzcG9uc2UgdG8gYnJvd3Nlci16b29tLgogICAgdG90YWxTaXplICo9IGN6bV9waXhlbFJhdGlvOwoKICAgIGZsb2F0IHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMS54ICogU0hJRlRfUklHSFQ4OwogICAgZmxvYXQgc2hvdyA9IGZsb29yKHRlbXApOwoKI2lmZGVmIEVZRV9ESVNUQU5DRV9UUkFOU0xVQ0VOQ1kKICAgIHZlYzQgdHJhbnNsdWNlbmN5QnlEaXN0YW5jZTsKICAgIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UueCA9IGNvbXByZXNzZWRBdHRyaWJ1dGUxLno7CiAgICB0cmFuc2x1Y2VuY3lCeURpc3RhbmNlLnogPSBjb21wcmVzc2VkQXR0cmlidXRlMS53OwoKICAgIHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UueSA9ICgodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4KSAvIDI1NS4wOwoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMS55ICogU0hJRlRfUklHSFQ4OwogICAgdHJhbnNsdWNlbmN5QnlEaXN0YW5jZS53ID0gKCh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDgpIC8gMjU1LjA7CiNlbmRpZgoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHZlYzQgY29sb3I7CiAgICB2ZWM0IG91dGxpbmVDb2xvcjsKICAgIHZlYzQgcGlja0NvbG9yOwoKICAgIC8vIGNvbXByZXNzZWRBdHRyaWJ1dGUwLnogPT4gcGlja0NvbG9yLnJnYgoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMC56ICogU0hJRlRfUklHSFQ4OwogICAgcGlja0NvbG9yLmIgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgdGVtcCA9IGZsb29yKHRlbXApICogU0hJRlRfUklHSFQ4OwogICAgcGlja0NvbG9yLmcgPSAodGVtcCAtIGZsb29yKHRlbXApKSAqIFNISUZUX0xFRlQ4OwogICAgcGlja0NvbG9yLnIgPSBmbG9vcih0ZW1wKTsKCiAgICAvLyBjb21wcmVzc2VkQXR0cmlidXRlMC54ID0+IGNvbG9yLnJnYgoKICAgIHRlbXAgPSBjb21wcmVzc2VkQXR0cmlidXRlMC54ICogU0hJRlRfUklHSFQ4OwogICAgY29sb3IuYiA9ICh0ZW1wIC0gZmxvb3IodGVtcCkpICogU0hJRlRfTEVGVDg7CiAgICB0ZW1wID0gZmxvb3IodGVtcCkgKiBTSElGVF9SSUdIVDg7CiAgICBjb2xvci5nID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIGNvbG9yLnIgPSBmbG9vcih0ZW1wKTsKCiAgICAvLyBjb21wcmVzc2VkQXR0cmlidXRlMC55ID0+IG91dGxpbmVDb2xvci5yZ2IKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTAueSAqIFNISUZUX1JJR0hUODsKICAgIG91dGxpbmVDb2xvci5iID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHRlbXAgPSBmbG9vcih0ZW1wKSAqIFNISUZUX1JJR0hUODsKICAgIG91dGxpbmVDb2xvci5nID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIG91dGxpbmVDb2xvci5yID0gZmxvb3IodGVtcCk7CgogICAgLy8gY29tcHJlc3NlZEF0dHJpYnV0ZTAudyA9PiBjb2xvci5hLCBvdXRsaW5lQ29sb3IuYSwgcGlja0NvbG9yLmEKCiAgICB0ZW1wID0gY29tcHJlc3NlZEF0dHJpYnV0ZTAudyAqIFNISUZUX1JJR0hUODsKICAgIHBpY2tDb2xvci5hID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIHBpY2tDb2xvciA9IHBpY2tDb2xvciAvIDI1NS4wOwoKICAgIHRlbXAgPSBmbG9vcih0ZW1wKSAqIFNISUZUX1JJR0hUODsKICAgIG91dGxpbmVDb2xvci5hID0gKHRlbXAgLSBmbG9vcih0ZW1wKSkgKiBTSElGVF9MRUZUODsKICAgIG91dGxpbmVDb2xvciAvPSAyNTUuMDsKICAgIGNvbG9yLmEgPSBmbG9vcih0ZW1wKTsKICAgIGNvbG9yIC89IDI1NS4wOwoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKICAgIHZlYzQgcCA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHBvc2l0aW9uSGlnaCwgcG9zaXRpb25Mb3cpOwogICAgdmVjNCBwb3NpdGlvbkVDID0gY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwOwoKICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKI2lmIGRlZmluZWQoRVlFX0RJU1RBTkNFX1NDQUxJTkcpIHx8IGRlZmluZWQoRVlFX0RJU1RBTkNFX1RSQU5TTFVDRU5DWSkgfHwgZGVmaW5lZChESVNUQU5DRV9ESVNQTEFZX0NPTkRJVElPTikgfHwgZGVmaW5lZChESVNBQkxFX0RFUFRIX0RJU1RBTkNFKQogICAgZmxvYXQgbGVuZ3RoU3E7CiAgICBpZiAoY3ptX3NjZW5lTW9kZSA9PSBjem1fc2NlbmVNb2RlMkQpCiAgICB7CiAgICAgICAgLy8gMkQgY2FtZXJhIGRpc3RhbmNlIGlzIGEgc3BlY2lhbCBjYXNlCiAgICAgICAgLy8gdHJlYXQgYWxsIGJpbGxib2FyZHMgYXMgZmxhdHRlbmVkIHRvIHRoZSB6PTAuMCBwbGFuZQogICAgICAgIGxlbmd0aFNxID0gY3ptX2V5ZUhlaWdodDJELnk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbGVuZ3RoU3EgPSBkb3QocG9zaXRpb25FQy54eXosIHBvc2l0aW9uRUMueHl6KTsKICAgIH0KI2VuZGlmCgojaWZkZWYgRVlFX0RJU1RBTkNFX1NDQUxJTkcKICAgIHRvdGFsU2l6ZSAqPSBjem1fbmVhckZhclNjYWxhcihzY2FsZUJ5RGlzdGFuY2UsIGxlbmd0aFNxKTsKI2VuZGlmCiAgICBpZiAodG90YWxTaXplID4gMC4wKSB7CiAgICAgICAgLy8gQWRkIHBhZGRpbmcgZm9yIGFudGktYWxpYXNpbmcgb24gYm90aCBzaWRlcy4KICAgICAgICB0b3RhbFNpemUgKz0gMy4wOwogICAgfQoKICAgIC8vIENsYW1wIHRvIG1heCBwb2ludCBzaXplLgogICAgdG90YWxTaXplID0gbWluKHRvdGFsU2l6ZSwgdV9tYXhUb3RhbFBvaW50U2l6ZSk7CiAgICAvLyBJZiBzaXplIGlzIHRvbyBzbWFsbCwgcHVzaCB2ZXJ0ZXggYmVoaW5kIG5lYXIgcGxhbmUgZm9yIGNsaXBwaW5nLgogICAgLy8gTm90ZSB0aGF0IGNvbnRleHQubWluaW11bUFsaWFzZWRQb2ludFNpemUgIndpbGwgYmUgYXQgbW9zdCAxLjAiLgogICAgaWYgKHRvdGFsU2l6ZSA8IDEuMCkKICAgIHsKICAgICAgICBwb3NpdGlvbkVDLnh5eiA9IHZlYzMoMC4wKTsKICAgICAgICB0b3RhbFNpemUgPSAxLjA7CiAgICB9CgogICAgZmxvYXQgdHJhbnNsdWNlbmN5ID0gMS4wOwojaWZkZWYgRVlFX0RJU1RBTkNFX1RSQU5TTFVDRU5DWQogICAgdHJhbnNsdWNlbmN5ID0gY3ptX25lYXJGYXJTY2FsYXIodHJhbnNsdWNlbmN5QnlEaXN0YW5jZSwgbGVuZ3RoU3EpOwogICAgLy8gcHVzaCB2ZXJ0ZXggYmVoaW5kIG5lYXIgcGxhbmUgZm9yIGNsaXBwaW5nCiAgICBpZiAodHJhbnNsdWNlbmN5IDwgMC4wMDQpCiAgICB7CiAgICAgICAgcG9zaXRpb25FQy54eXogPSB2ZWMzKDAuMCk7CiAgICB9CiNlbmRpZgoKI2lmZGVmIERJU1RBTkNFX0RJU1BMQVlfQ09ORElUSU9OCiAgICBmbG9hdCBuZWFyU3EgPSBkaXN0YW5jZURpc3BsYXlDb25kaXRpb25BbmREaXNhYmxlRGVwdGgueDsKICAgIGZsb2F0IGZhclNxID0gZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uQW5kRGlzYWJsZURlcHRoLnk7CiAgICBpZiAobGVuZ3RoU3EgPCBuZWFyU3EgfHwgbGVuZ3RoU3EgPiBmYXJTcSkgewogICAgICAgIC8vIHB1c2ggdmVydGV4IGJlaGluZCBjYW1lcmEgdG8gZm9yY2UgaXQgdG8gYmUgY2xpcHBlZAogICAgICAgIHBvc2l0aW9uRUMueHl6ID0gdmVjMygwLjAsIDAuMCwgMS4wKTsKICAgIH0KI2VuZGlmCgogICAgZ2xfUG9zaXRpb24gPSBjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUM7CiAgICBjem1fdmVydGV4TG9nRGVwdGgoKTsKCiNpZmRlZiBESVNBQkxFX0RFUFRIX0RJU1RBTkNFCiAgICBmbG9hdCBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBkaXN0YW5jZURpc3BsYXlDb25kaXRpb25BbmREaXNhYmxlRGVwdGguejsKICAgIGlmIChkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPT0gMC4wICYmIGN6bV9taW5pbXVtRGlzYWJsZURlcHRoVGVzdERpc3RhbmNlICE9IDAuMCkKICAgIHsKICAgICAgICBkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UgPSBjem1fbWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZTsKICAgIH0KCiAgICBpZiAoZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlICE9IDAuMCkKICAgIHsKICAgICAgICAvLyBEb24ndCB0cnkgdG8gIm11bHRpcGx5IGJvdGggc2lkZXMiIGJ5IHcuICBHcmVhdGVyL2xlc3MtdGhhbiBjb21wYXJpc29ucyB3b24ndCB3b3JrIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb2Ygdy4KICAgICAgICBmbG9hdCB6Y2xpcCA9IGdsX1Bvc2l0aW9uLnogLyBnbF9Qb3NpdGlvbi53OwogICAgICAgIGJvb2wgY2xpcHBlZCA9ICh6Y2xpcCA8IC0xLjAgfHwgemNsaXAgPiAxLjApOwogICAgICAgIGlmICghY2xpcHBlZCAmJiAoZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIDwgMC4wIHx8IChsZW5ndGhTcSA+IDAuMCAmJiBsZW5ndGhTcSA8IGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSkpKQogICAgICAgIHsKICAgICAgICAgICAgLy8gUG9zaXRpb24geiBvbiB0aGUgbmVhciBwbGFuZS4KICAgICAgICAgICAgZ2xfUG9zaXRpb24ueiA9IC1nbF9Qb3NpdGlvbi53OwojaWZkZWYgTE9HX0RFUFRICiAgICAgICAgICAgIGN6bV92ZXJ0ZXhMb2dEZXB0aCh2ZWM0KGN6bV9jdXJyZW50RnJ1c3R1bS54KSk7CiNlbmRpZgogICAgICAgIH0KICAgIH0KI2VuZGlmCgogICAgdl9jb2xvciA9IGNvbG9yOwogICAgdl9jb2xvci5hICo9IHRyYW5zbHVjZW5jeSAqIHNob3c7CiAgICB2X291dGxpbmVDb2xvciA9IG91dGxpbmVDb2xvcjsKICAgIHZfb3V0bGluZUNvbG9yLmEgKj0gdHJhbnNsdWNlbmN5ICogc2hvdzsKCiAgICB2X2lubmVyUGVyY2VudCA9IDEuMCAtIG91dGxpbmVQZXJjZW50OwogICAgdl9waXhlbERpc3RhbmNlID0gMi4wIC8gdG90YWxTaXplOwogICAgZ2xfUG9pbnRTaXplID0gdG90YWxTaXplICogc2hvdzsKICAgIGdsX1Bvc2l0aW9uICo9IHNob3c7CgogICAgdl9waWNrQ29sb3IgPSBwaWNrQ29sb3I7Cn0KYH0pO2Z1bmN0aW9uIHhyKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9zcD12b2lkIDAsdGhpcy5fc3BUcmFuc2x1Y2VudD12b2lkIDAsdGhpcy5fcnNPcGFxdWU9dm9pZCAwLHRoaXMuX3JzVHJhbnNsdWNlbnQ9dm9pZCAwLHRoaXMuX3ZhZj12b2lkIDAsdGhpcy5fcG9pbnRQcmltaXRpdmVzPVtdLHRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlPVtdLHRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXg9MCx0aGlzLl9wb2ludFByaW1pdGl2ZXNSZW1vdmVkPSExLHRoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSExLHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9jb21waWxlZFNoYWRlclNjYWxlQnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPSExLHRoaXMuX2NvbXBpbGVkU2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZT0hMSx0aGlzLl9zaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb249ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb249ITEsdGhpcy5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2U9ITEsdGhpcy5fY29tcGlsZWRTaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZT0hMSx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZD1uZXcgVWludDMyQXJyYXkoZU4pLHRoaXMuX21heFBpeGVsU2l6ZT0xLHRoaXMuX2Jhc2VWb2x1bWU9bmV3IE50LHRoaXMuX2Jhc2VWb2x1bWVXQz1uZXcgTnQsdGhpcy5fYmFzZVZvbHVtZTJEPW5ldyBOdCx0aGlzLl9ib3VuZGluZ1ZvbHVtZT1uZXcgTnQsdGhpcy5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMSx0aGlzLl9jb2xvckNvbW1hbmRzPVtdLHRoaXMuc2hvdz1aKHQuc2hvdywhMCksdGhpcy5tb2RlbE1hdHJpeD1hdC5jbG9uZShaKHQubW9kZWxNYXRyaXgsYXQuSURFTlRJVFkpKSx0aGlzLl9tb2RlbE1hdHJpeD1hdC5jbG9uZShhdC5JREVOVElUWSksdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT1aKHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsITEpLHRoaXMuYmxlbmRPcHRpb249Wih0LmJsZW5kT3B0aW9uLFduLk9QQVFVRV9BTkRfVFJBTlNMVUNFTlQpLHRoaXMuX2JsZW5kT3B0aW9uPXZvaWQgMCx0aGlzLl9tb2RlPXllLlNDRU5FM0QsdGhpcy5fbWF4VG90YWxQb2ludFNpemU9MSx0aGlzLl9idWZmZXJzVXNhZ2U9W2FpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXLGFpLlNUQVRJQ19EUkFXXTtsZXQgZT10aGlzO3RoaXMuX3VuaWZvcm1zPXt1X21heFRvdGFsUG9pbnRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGUuX21heFRvdGFsUG9pbnRTaXplfX19ZnVuY3Rpb24geHkodCl7bGV0IGU9dC5sZW5ndGg7Zm9yKGxldCBpPTA7aTxlOysraSl0W2ldJiZ0W2ldLl9kZXN0cm95KCl9ZnVuY3Rpb24gaU4odCl7aWYodC5fcG9pbnRQcmltaXRpdmVzUmVtb3ZlZCl7dC5fcG9pbnRQcmltaXRpdmVzUmVtb3ZlZD0hMTtsZXQgZT1bXSxpPXQuX3BvaW50UHJpbWl0aXZlcyxuPWkubGVuZ3RoO2ZvcihsZXQgcz0wLG89MDtzPG47KytzKXtsZXQgcj1pW3NdO3ImJihyLl9pbmRleD1vKyssZS5wdXNoKHIpKX10Ll9wb2ludFByaW1pdGl2ZXM9ZX19ZnVuY3Rpb24gemV0KHQsZSxpKXtyZXR1cm4gbmV3IGZJKHQsW3tpbmRleDpDby5wb3NpdGlvbkhpZ2hBbmRTaXplLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW3ROXX0se2luZGV4OkNvLnBvc2l0aW9uTG93QW5kU2hvdyxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVt0Tl19LHtpbmRleDpDby5jb21wcmVzc2VkQXR0cmlidXRlMCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVtreV19LHtpbmRleDpDby5jb21wcmVzc2VkQXR0cmlidXRlMSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsdXNhZ2U6aVt5eV19LHtpbmRleDpDby5zY2FsZUJ5RGlzdGFuY2UsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULHVzYWdlOmlbTHldfSx7aW5kZXg6Q28uZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uQW5kRGlzYWJsZURlcHRoLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCx1c2FnZTppW3d5XX1dLGUpfWZ1bmN0aW9uIFB5KHQsZSxpLG4pe2xldCBzPW4uX2luZGV4LG89bi5fZ2V0QWN0dWFsUG9zaXRpb24oKTt0Ll9tb2RlPT09eWUuU0NFTkUzRCYmKE50LmV4cGFuZCh0Ll9iYXNlVm9sdW1lLG8sdC5fYmFzZVZvbHVtZSksdC5fYm91bmRpbmdWb2x1bWVEaXJ0eT0hMCksR24uZnJvbUNhcnRlc2lhbihvLHFUKTtsZXQgcj1uLnBpeGVsU2l6ZSxhPW4ub3V0bGluZVdpZHRoO3QuX21heFBpeGVsU2l6ZT1NYXRoLm1heCh0Ll9tYXhQaXhlbFNpemUscithKTtsZXQgaD1pW0NvLnBvc2l0aW9uSGlnaEFuZFNpemVdLEE9cVQuaGlnaDtoKHMsQS54LEEueSxBLnoscik7bGV0IGQ9aVtDby5wb3NpdGlvbkxvd0FuZE91dGxpbmVdLGY9cVQubG93O2QocyxmLngsZi55LGYueixhKX1mdW5jdGlvbiBKeSh0LGUsaSxuKXtsZXQgcz1uLl9pbmRleCxvPW4uY29sb3Iscj1uLmdldFBpY2tJZChlKS5jb2xvcixhPW4ub3V0bGluZUNvbG9yLGg9WnQuZmxvYXRUb0J5dGUoby5yZWQpLEE9WnQuZmxvYXRUb0J5dGUoby5ncmVlbiksZD1adC5mbG9hdFRvQnl0ZShvLmJsdWUpLGY9aCpUSStBKlFFK2Q7aD1adC5mbG9hdFRvQnl0ZShhLnJlZCksQT1adC5mbG9hdFRvQnl0ZShhLmdyZWVuKSxkPVp0LmZsb2F0VG9CeXRlKGEuYmx1ZSk7bGV0IEU9aCpUSStBKlFFK2Q7aD1adC5mbG9hdFRvQnl0ZShyLnJlZCksQT1adC5mbG9hdFRvQnl0ZShyLmdyZWVuKSxkPVp0LmZsb2F0VG9CeXRlKHIuYmx1ZSk7bGV0IF89aCpUSStBKlFFK2QsUj1adC5mbG9hdFRvQnl0ZShvLmFscGhhKSpUSStadC5mbG9hdFRvQnl0ZShhLmFscGhhKSpRRStadC5mbG9hdFRvQnl0ZShyLmFscGhhKSxJPWlbQ28uY29tcHJlc3NlZEF0dHJpYnV0ZTBdO0kocyxmLEUsXyxSKX1mdW5jdGlvbiBqeSh0LGUsaSxuKXtsZXQgcz1uLl9pbmRleCxvPTAscj0xLGE9MSxoPTEsQT1uLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U7bShBKSYmKG89QS5uZWFyLHI9QS5uZWFyVmFsdWUsYT1BLmZhcixoPUEuZmFyVmFsdWUsKHIhPT0xfHxoIT09MSkmJih0Ll9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlPSEwKSk7bGV0IGQ9bi5zaG93JiZuLmNsdXN0ZXJTaG93O24uY29sb3IuYWxwaGE9PT0wJiZuLm91dGxpbmVDb2xvci5hbHBoYT09PTAmJihkPSExKSxyPUwuY2xhbXAociwwLDEpLHI9cj09PTE/MjU1OnIqMjU1fDA7bGV0IGY9KGQ/MTowKSpRRStyO2g9TC5jbGFtcChoLDAsMSksaD1oPT09MT8yNTU6aCoyNTV8MDtsZXQgRT1oLF89aVtDby5jb21wcmVzc2VkQXR0cmlidXRlMV07XyhzLGYsRSxvLGEpfWZ1bmN0aW9uIEh5KHQsZSxpLG4pe2xldCBzPW4uX2luZGV4LG89aVtDby5zY2FsZUJ5RGlzdGFuY2VdLHI9MCxhPTEsaD0xLEE9MSxkPW4uc2NhbGVCeURpc3RhbmNlO20oZCkmJihyPWQubmVhcixhPWQubmVhclZhbHVlLGg9ZC5mYXIsQT1kLmZhclZhbHVlLChhIT09MXx8QSE9PTEpJiYodC5fc2hhZGVyU2NhbGVCeURpc3RhbmNlPSEwKSksbyhzLHIsYSxoLEEpfWZ1bmN0aW9uIHZ5KHQsZSxpLG4pe2xldCBzPW4uX2luZGV4LG89aVtDby5kaXN0YW5jZURpc3BsYXlDb25kaXRpb25BbmREaXNhYmxlRGVwdGhdLHI9MCxhPU51bWJlci5NQVhfVkFMVUUsaD1uLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjttKGgpJiYocj1oLm5lYXIsYT1oLmZhcixyKj1yLGEqPWEsdC5fc2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPSEwKTtsZXQgQT1uLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTtBKj1BLEE+MCYmKHQuX3NoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlPSEwLEE9PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkmJihBPS0xKSksbyhzLHIsYSxBKX1mdW5jdGlvbiBLZXQodCxlLGksbil7UHkodCxlLGksbiksSnkodCxlLGksbiksankodCxlLGksbiksSHkodCxlLGksbiksdnkodCxlLGksbil9ZnVuY3Rpb24gJFQodCxlLGksbixzLG8pe2xldCByO24ubW9kZT09PXllLlNDRU5FM0Q/KHI9dC5fYmFzZVZvbHVtZSx0Ll9ib3VuZGluZ1ZvbHVtZURpcnR5PSEwKTpyPXQuX2Jhc2VWb2x1bWUyRDtsZXQgYT1bXTtmb3IobGV0IGg9MDtoPGk7KytoKXtsZXQgQT1lW2hdLGQ9QS5wb3NpdGlvbixmPXVvLl9jb21wdXRlQWN0dWFsUG9zaXRpb24oZCxuLHMpO20oZikmJihBLl9zZXRBY3R1YWxQb3NpdGlvbihmKSxvP2EucHVzaChmKTpOdC5leHBhbmQocixmLHIpKX1vJiZOdC5mcm9tUG9pbnRzKGEscil9ZnVuY3Rpb24gWGV0KHQsZSl7bGV0IGk9ZS5tb2RlLG49dC5fcG9pbnRQcmltaXRpdmVzLHM9dC5fcG9pbnRQcmltaXRpdmVzVG9VcGRhdGUsbz10Ll9tb2RlbE1hdHJpeDt0Ll9jcmVhdGVWZXJ0ZXhBcnJheXx8dC5fbW9kZSE9PWl8fGkhPT15ZS5TQ0VORTNEJiYhYXQuZXF1YWxzKG8sdC5tb2RlbE1hdHJpeCk/KHQuX21vZGU9aSxhdC5jbG9uZSh0Lm1vZGVsTWF0cml4LG8pLHQuX2NyZWF0ZVZlcnRleEFycmF5PSEwLChpPT09eWUuU0NFTkUzRHx8aT09PXllLlNDRU5FMkR8fGk9PT15ZS5DT0xVTUJVU19WSUVXKSYmJFQodCxuLG4ubGVuZ3RoLGUsbywhMCkpOmk9PT15ZS5NT1JQSElORz8kVCh0LG4sbi5sZW5ndGgsZSxvLCEwKTooaT09PXllLlNDRU5FMkR8fGk9PT15ZS5DT0xVTUJVU19WSUVXKSYmJFQodCxzLHQuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXgsZSxvLCExKX1mdW5jdGlvbiBxZXQodCxlLGkpe2xldCBzPWUuY2FtZXJhLmdldFBpeGVsU2l6ZShpLGUuY29udGV4dC5kcmF3aW5nQnVmZmVyV2lkdGgsZS5jb250ZXh0LmRyYXdpbmdCdWZmZXJIZWlnaHQpKnQuX21heFBpeGVsU2l6ZTtpLnJhZGl1cys9c312YXIgUGV0LHROLGt5LEpldCxqZXQsSGV0LEx5LHl5LHd5LHZldCxlTixDbyxxVCxUSSxRRSwkZXQsbk4senk9UygoKT0+e19pKCk7UW4oKTtvaSgpO0Z0KCk7bXQoKTtXcygpO090KCk7VGwoKTtfZSgpO2JpKCk7WGkoKTtzcygpO05sKCk7Z2EoKTtHbSgpO1dtKCk7VW0oKTtRbSgpO2JsKCk7R1QoKTtVeSgpO1F5KCk7a20oKTtFSSgpO1hUKCk7dWEoKTtQZXQ9dW8uU0hPV19JTkRFWCx0Tj11by5QT1NJVElPTl9JTkRFWCxreT11by5DT0xPUl9JTkRFWCxKZXQ9dW8uT1VUTElORV9DT0xPUl9JTkRFWCxqZXQ9dW8uT1VUTElORV9XSURUSF9JTkRFWCxIZXQ9dW8uUElYRUxfU0laRV9JTkRFWCxMeT11by5TQ0FMRV9CWV9ESVNUQU5DRV9JTkRFWCx5eT11by5UUkFOU0xVQ0VOQ1lfQllfRElTVEFOQ0VfSU5ERVgsd3k9dW8uRElTVEFOQ0VfRElTUExBWV9DT05ESVRJT05fSU5ERVgsdmV0PXVvLkRJU0FCTEVfREVQVEhfRElTVEFOQ0VfSU5ERVgsZU49dW8uTlVNQkVSX09GX1BST1BFUlRJRVMsQ289e3Bvc2l0aW9uSGlnaEFuZFNpemU6MCxwb3NpdGlvbkxvd0FuZE91dGxpbmU6MSxjb21wcmVzc2VkQXR0cmlidXRlMDoyLGNvbXByZXNzZWRBdHRyaWJ1dGUxOjMsc2NhbGVCeURpc3RhbmNlOjQsZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uQW5kRGlzYWJsZURlcHRoOjV9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHhyLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaU4odGhpcyksdGhpcy5fcG9pbnRQcmltaXRpdmVzLmxlbmd0aH19fSk7eHIucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtsZXQgZT1uZXcgdW8odCx0aGlzKTtyZXR1cm4gZS5faW5kZXg9dGhpcy5fcG9pbnRQcmltaXRpdmVzLmxlbmd0aCx0aGlzLl9wb2ludFByaW1pdGl2ZXMucHVzaChlKSx0aGlzLl9jcmVhdGVWZXJ0ZXhBcnJheT0hMCxlfTt4ci5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbnRhaW5zKHQpPyh0aGlzLl9wb2ludFByaW1pdGl2ZXNbdC5faW5kZXhdPW51bGwsdGhpcy5fcG9pbnRQcmltaXRpdmVzUmVtb3ZlZD0hMCx0aGlzLl9jcmVhdGVWZXJ0ZXhBcnJheT0hMCx0Ll9kZXN0cm95KCksITApOiExfTt4ci5wcm90b3R5cGUucmVtb3ZlQWxsPWZ1bmN0aW9uKCl7eHkodGhpcy5fcG9pbnRQcmltaXRpdmVzKSx0aGlzLl9wb2ludFByaW1pdGl2ZXM9W10sdGhpcy5fcG9pbnRQcmltaXRpdmVzVG9VcGRhdGU9W10sdGhpcy5fcG9pbnRQcmltaXRpdmVzVG9VcGRhdGVJbmRleD0wLHRoaXMuX3BvaW50UHJpbWl0aXZlc1JlbW92ZWQ9ITEsdGhpcy5fY3JlYXRlVmVydGV4QXJyYXk9ITB9O3hyLnByb3RvdHlwZS5fdXBkYXRlUG9pbnRQcmltaXRpdmU9ZnVuY3Rpb24odCxlKXt0Ll9kaXJ0eXx8KHRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlW3RoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXgrK109dCksKyt0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZFtlXX07eHIucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiZ0Ll9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb249PT10aGlzfTt4ci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpbmRleCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gaU4odGhpcyksdGhpcy5fcG9pbnRQcmltaXRpdmVzW3RdfTt4ci5wcm90b3R5cGUuY29tcHV0ZU5ld0J1ZmZlcnNVc2FnZT1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2J1ZmZlcnNVc2FnZSxlPSExLGk9dGhpcy5fcHJvcGVydGllc0NoYW5nZWQ7Zm9yKGxldCBuPTA7bjxlTjsrK24pe2xldCBzPWlbbl09PT0wP2FpLlNUQVRJQ19EUkFXOmFpLlNUUkVBTV9EUkFXO2U9ZXx8dFtuXSE9PXMsdFtuXT1zfXJldHVybiBlfTtxVD1uZXcgR247VEk9NjU1MzYsUUU9MjU2OyRldD1bXTt4ci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKGlOKHRoaXMpLCF0aGlzLnNob3cpcmV0dXJuO3RoaXMuX21heFRvdGFsUG9pbnRTaXplPWVuLm1heGltdW1BbGlhc2VkUG9pbnRTaXplLFhldCh0aGlzLHQpO2xldCBpPXRoaXMuX3BvaW50UHJpbWl0aXZlcy5sZW5ndGgsbj10aGlzLl9wb2ludFByaW1pdGl2ZXNUb1VwZGF0ZSxzPXRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXgsbz10aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCxyPXRoaXMuX2NyZWF0ZVZlcnRleEFycmF5LGEsaD10LmNvbnRleHQsQT10LnBhc3NlcyxkPUEucGljaztpZihyfHwhZCYmdGhpcy5jb21wdXRlTmV3QnVmZmVyc1VzYWdlKCkpe3RoaXMuX2NyZWF0ZVZlcnRleEFycmF5PSExO2ZvcihsZXQgQj0wO0I8ZU47KytCKW9bQl09MDtpZih0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLGk+MCl7dGhpcy5fdmFmPXpldChoLGksdGhpcy5fYnVmZmVyc1VzYWdlKSxhPXRoaXMuX3ZhZi53cml0ZXJzO2ZvcihsZXQgQj0wO0I8aTsrK0Ipe2xldCBVPXRoaXMuX3BvaW50UHJpbWl0aXZlc1tCXTtVLl9kaXJ0eT0hMSxLZXQodGhpcyxoLGEsVSl9dGhpcy5fdmFmLmNvbW1pdCgpfXRoaXMuX3BvaW50UHJpbWl0aXZlc1RvVXBkYXRlSW5kZXg9MH1lbHNlIGlmKHM+MCl7bGV0IEI9JGV0O0IubGVuZ3RoPTAsKG9bdE5dfHxvW2pldF18fG9bSGV0XSkmJkIucHVzaChQeSksKG9ba3ldfHxvW0pldF0pJiZCLnB1c2goSnkpLChvW1BldF18fG9beXldKSYmQi5wdXNoKGp5KSxvW0x5XSYmQi5wdXNoKEh5KSwob1t3eV18fG9bdmV0XSkmJkIucHVzaCh2eSk7bGV0IFU9Qi5sZW5ndGg7aWYoYT10aGlzLl92YWYud3JpdGVycyxzL2k+LjEpe2ZvcihsZXQgUT0wO1E8czsrK1Epe2xldCBNPW5bUV07TS5fZGlydHk9ITE7Zm9yKGxldCBrPTA7azxVOysraylCW2tdKHRoaXMsaCxhLE0pfXRoaXMuX3ZhZi5jb21taXQoKX1lbHNle2ZvcihsZXQgUT0wO1E8czsrK1Epe2xldCBNPW5bUV07TS5fZGlydHk9ITE7Zm9yKGxldCBrPTA7azxVOysraylCW2tdKHRoaXMsaCxhLE0pO3RoaXMuX3ZhZi5zdWJDb21taXQoTS5faW5kZXgsMSl9dGhpcy5fdmFmLmVuZFN1YkNvbW1pdHMoKX10aGlzLl9wb2ludFByaW1pdGl2ZXNUb1VwZGF0ZUluZGV4PTB9aWYocz5pKjEuNSYmKG4ubGVuZ3RoPWkpLCFtKHRoaXMuX3ZhZil8fCFtKHRoaXMuX3ZhZi52YSkpcmV0dXJuO3RoaXMuX2JvdW5kaW5nVm9sdW1lRGlydHkmJih0aGlzLl9ib3VuZGluZ1ZvbHVtZURpcnR5PSExLE50LnRyYW5zZm9ybSh0aGlzLl9iYXNlVm9sdW1lLHRoaXMubW9kZWxNYXRyaXgsdGhpcy5fYmFzZVZvbHVtZVdDKSk7bGV0IGYsRT1hdC5JREVOVElUWTt0Lm1vZGU9PT15ZS5TQ0VORTNEPyhFPXRoaXMubW9kZWxNYXRyaXgsZj1OdC5jbG9uZSh0aGlzLl9iYXNlVm9sdW1lV0MsdGhpcy5fYm91bmRpbmdWb2x1bWUpKTpmPU50LmNsb25lKHRoaXMuX2Jhc2VWb2x1bWUyRCx0aGlzLl9ib3VuZGluZ1ZvbHVtZSkscWV0KHRoaXMsdCxmKTtsZXQgXz10aGlzLl9ibGVuZE9wdGlvbiE9PXRoaXMuYmxlbmRPcHRpb247dGhpcy5fYmxlbmRPcHRpb249dGhpcy5ibGVuZE9wdGlvbixfJiYodGhpcy5fYmxlbmRPcHRpb249PT1Xbi5PUEFRVUV8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc09wYXF1ZT1Zbi5mcm9tQ2FjaGUoe2RlcHRoVGVzdDp7ZW5hYmxlZDohMCxmdW5jOml0LkxFUVVBTH0sZGVwdGhNYXNrOiEwfSk6dGhpcy5fcnNPcGFxdWU9dm9pZCAwLHRoaXMuX2JsZW5kT3B0aW9uPT09V24uVFJBTlNMVUNFTlR8fHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVD90aGlzLl9yc1RyYW5zbHVjZW50PVluLmZyb21DYWNoZSh7ZGVwdGhUZXN0OntlbmFibGVkOiEwLGZ1bmM6aXQuTEVRVUFMfSxkZXB0aE1hc2s6ITEsYmxlbmRpbmc6TXIuQUxQSEFfQkxFTkR9KTp0aGlzLl9yc1RyYW5zbHVjZW50PXZvaWQgMCksdGhpcy5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2U9dGhpcy5fc2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2V8fHQubWluaW11bURpc2FibGVEZXB0aFRlc3REaXN0YW5jZSE9PTA7bGV0IFIsSTsoX3x8dGhpcy5fc2hhZGVyU2NhbGVCeURpc3RhbmNlJiYhdGhpcy5fY29tcGlsZWRTaGFkZXJTY2FsZUJ5RGlzdGFuY2V8fHRoaXMuX3NoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UmJiF0aGlzLl9jb21waWxlZFNoYWRlclRyYW5zbHVjZW5jeUJ5RGlzdGFuY2V8fHRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiYmIXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9ufHx0aGlzLl9zaGFkZXJEaXNhYmxlRGVwdGhEaXN0YW5jZSE9PXRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzYWJsZURlcHRoRGlzdGFuY2UpJiYoUj1uZXcgVWkoe3NvdXJjZXM6W015XX0pLHRoaXMuX3NoYWRlclNjYWxlQnlEaXN0YW5jZSYmUi5kZWZpbmVzLnB1c2goIkVZRV9ESVNUQU5DRV9TQ0FMSU5HIiksdGhpcy5fc2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZSYmUi5kZWZpbmVzLnB1c2goIkVZRV9ESVNUQU5DRV9UUkFOU0xVQ0VOQ1kiKSx0aGlzLl9zaGFkZXJEaXN0YW5jZURpc3BsYXlDb25kaXRpb24mJlIuZGVmaW5lcy5wdXNoKCJESVNUQU5DRV9ESVNQTEFZX0NPTkRJVElPTiIpLHRoaXMuX3NoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlJiZSLmRlZmluZXMucHVzaCgiRElTQUJMRV9ERVBUSF9ESVNUQU5DRSIpLHRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVCYmKEk9bmV3IFVpKHtkZWZpbmVzOlsiT1BBUVVFIl0sc291cmNlczpbTUVdfSksdGhpcy5fc3A9RXMucmVwbGFjZUNhY2hlKHtjb250ZXh0Omgsc2hhZGVyUHJvZ3JhbTp0aGlzLl9zcCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6UixmcmFnbWVudFNoYWRlclNvdXJjZTpJLGF0dHJpYnV0ZUxvY2F0aW9uczpDb30pLEk9bmV3IFVpKHtkZWZpbmVzOlsiVFJBTlNMVUNFTlQiXSxzb3VyY2VzOltNRV19KSx0aGlzLl9zcFRyYW5zbHVjZW50PUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpoLHNoYWRlclByb2dyYW06dGhpcy5fc3BUcmFuc2x1Y2VudCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6UixmcmFnbWVudFNoYWRlclNvdXJjZTpJLGF0dHJpYnV0ZUxvY2F0aW9uczpDb30pKSx0aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRSYmKEk9bmV3IFVpKHtzb3VyY2VzOltNRV19KSx0aGlzLl9zcD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6aCxzaGFkZXJQcm9ncmFtOnRoaXMuX3NwLHZlcnRleFNoYWRlclNvdXJjZTpSLGZyYWdtZW50U2hhZGVyU291cmNlOkksYXR0cmlidXRlTG9jYXRpb25zOkNvfSkpLHRoaXMuX2JsZW5kT3B0aW9uPT09V24uVFJBTlNMVUNFTlQmJihJPW5ldyBVaSh7c291cmNlczpbTUVdfSksdGhpcy5fc3BUcmFuc2x1Y2VudD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6aCxzaGFkZXJQcm9ncmFtOnRoaXMuX3NwVHJhbnNsdWNlbnQsdmVydGV4U2hhZGVyU291cmNlOlIsZnJhZ21lbnRTaGFkZXJTb3VyY2U6SSxhdHRyaWJ1dGVMb2NhdGlvbnM6Q299KSksdGhpcy5fY29tcGlsZWRTaGFkZXJTY2FsZUJ5RGlzdGFuY2U9dGhpcy5fc2hhZGVyU2NhbGVCeURpc3RhbmNlLHRoaXMuX2NvbXBpbGVkU2hhZGVyVHJhbnNsdWNlbmN5QnlEaXN0YW5jZT10aGlzLl9zaGFkZXJUcmFuc2x1Y2VuY3lCeURpc3RhbmNlLHRoaXMuX2NvbXBpbGVkU2hhZGVyRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuX3NoYWRlckRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0aGlzLl9jb21waWxlZFNoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlPXRoaXMuX3NoYWRlckRpc2FibGVEZXB0aERpc3RhbmNlKTtsZXQgQyxOLFQsYixGPXQuY29tbWFuZExpc3Q7aWYoQS5yZW5kZXJ8fGQpe2xldCBCPXRoaXMuX2NvbG9yQ29tbWFuZHMsVT10aGlzLl9ibGVuZE9wdGlvbj09PVduLk9QQVFVRSxRPXRoaXMuX2JsZW5kT3B0aW9uPT09V24uT1BBUVVFX0FORF9UUkFOU0xVQ0VOVDtDPXRoaXMuX3ZhZi52YSxOPUMubGVuZ3RoLEIubGVuZ3RoPU47bGV0IE09UT9OKjI6Tjtmb3IoYj0wO2I8TTsrK2Ipe2xldCBrPVV8fFEmJmIlMj09PTA7VD1CW2JdLG0oVCl8fChUPUJbYl09bmV3IGZuKSxULnByaW1pdGl2ZVR5cGU9bmUuUE9JTlRTLFQucGFzcz1rfHwhUT9vcy5PUEFRVUU6b3MuVFJBTlNMVUNFTlQsVC5vd25lcj10aGlzO2xldCB5PVE/TWF0aC5mbG9vcihiLzIpOmI7VC5ib3VuZGluZ1ZvbHVtZT1mLFQubW9kZWxNYXRyaXg9RSxULnNoYWRlclByb2dyYW09az90aGlzLl9zcDp0aGlzLl9zcFRyYW5zbHVjZW50LFQudW5pZm9ybU1hcD10aGlzLl91bmlmb3JtcyxULnZlcnRleEFycmF5PUNbeV0udmEsVC5yZW5kZXJTdGF0ZT1rP3RoaXMuX3JzT3BhcXVlOnRoaXMuX3JzVHJhbnNsdWNlbnQsVC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT10aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLFQucGlja0lkPSJ2X3BpY2tDb2xvciIsRi5wdXNoKFQpfX19O3hyLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTt4ci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zcD10aGlzLl9zcCYmdGhpcy5fc3AuZGVzdHJveSgpLHRoaXMuX3NwVHJhbnNsdWNlbnQ9dGhpcy5fc3BUcmFuc2x1Y2VudCYmdGhpcy5fc3BUcmFuc2x1Y2VudC5kZXN0cm95KCksdGhpcy5fc3BQaWNrPXRoaXMuX3NwUGljayYmdGhpcy5fc3BQaWNrLmRlc3Ryb3koKSx0aGlzLl92YWY9dGhpcy5fdmFmJiZ0aGlzLl92YWYuZGVzdHJveSgpLHh5KHRoaXMuX3BvaW50UHJpbWl0aXZlcyksbGkodGhpcyl9O25OPXhyfSk7ZnVuY3Rpb24gck4odCxlLGksbixzLG8pe2lmKHMtbjw9aSlyZXR1cm47bGV0IHI9bitzPj4xO3F5KHQsZSxyLG4scyxvKSxyTih0LGUsaSxuLHItMSwxLW8pLHJOKHQsZSxpLHIrMSxzLDEtbyl9ZnVuY3Rpb24gcXkodCxlLGksbixzLG8pe2Zvcig7cz5uOyl7aWYocy1uPjYwMCl7bGV0IEE9cy1uKzEsZD1pLW4rMSxmPU1hdGgubG9nKEEpLEU9LjUqTWF0aC5leHAoMipmLzMpLF89LjUqTWF0aC5zcXJ0KGYqRSooQS1FKS9BKSooZC1BLzI8MD8tMToxKSxSPU1hdGgubWF4KG4sTWF0aC5mbG9vcihpLWQqRS9BK18pKSxJPU1hdGgubWluKHMsTWF0aC5mbG9vcihpKyhBLWQpKkUvQStfKSk7cXkodCxlLGksUixJLG8pfWxldCByPWVbMippK29dLGE9bixoPXM7Zm9yKExFKHQsZSxuLGkpLGVbMipzK29dPnImJkxFKHQsZSxuLHMpO2E8aDspe2ZvcihMRSh0LGUsYSxoKSxhKyssaC0tO2VbMiphK29dPHI7KWErKztmb3IoO2VbMipoK29dPnI7KWgtLX1lWzIqbitvXT09PXI/TEUodCxlLG4saCk6KGgrKyxMRSh0LGUsaCxzKSksaDw9aSYmKG49aCsxKSxpPD1oJiYocz1oLTEpfX1mdW5jdGlvbiBMRSh0LGUsaSxuKXtvTih0LGksbiksb04oZSwyKmksMipuKSxvTihlLDIqaSsxLDIqbisxKX1mdW5jdGlvbiBvTih0LGUsaSl7bGV0IG49dFtlXTt0W2VdPXRbaV0sdFtpXT1ufWZ1bmN0aW9uIFh5KHQsZSxpLG4pe2xldCBzPXQtaSxvPWUtbjtyZXR1cm4gcypzK28qb312YXIgS3ksc04sa0UseUUsJHk9UygoKT0+e0t5PVtJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheV0sc049MSxrRT04LHlFPWNsYXNzIHR7c3RhdGljIGZyb20oZSl7aWYoIShlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiRGF0YSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEFycmF5QnVmZmVyLiIpO2xldFtpLG5dPW5ldyBVaW50OEFycmF5KGUsMCwyKTtpZihpIT09MjE5KXRocm93IG5ldyBFcnJvcigiRGF0YSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW4gYSBLREJ1c2ggZm9ybWF0LiIpO2xldCBzPW4+PjQ7aWYocyE9PXNOKXRocm93IG5ldyBFcnJvcihgR290IHYke3N9IGRhdGEgd2hlbiBleHBlY3RlZCB2JHtzTn0uYCk7bGV0IG89S3lbbiYxNV07aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgYXJyYXkgdHlwZS4iKTtsZXRbcl09bmV3IFVpbnQxNkFycmF5KGUsMiwxKSxbYV09bmV3IFVpbnQzMkFycmF5KGUsNCwxKTtyZXR1cm4gbmV3IHQoYSxyLG8sZSl9Y29uc3RydWN0b3IoZSxpPTY0LG49RmxvYXQ2NEFycmF5LHMpe2lmKGlzTmFOKGUpfHxlPDApdGhyb3cgbmV3IEVycm9yKGBVbnBleHBlY3RlZCBudW1JdGVtcyB2YWx1ZTogJHtlfS5gKTt0aGlzLm51bUl0ZW1zPStlLHRoaXMubm9kZVNpemU9TWF0aC5taW4oTWF0aC5tYXgoK2ksMiksNjU1MzUpLHRoaXMuQXJyYXlUeXBlPW4sdGhpcy5JbmRleEFycmF5VHlwZT1lPDY1NTM2P1VpbnQxNkFycmF5OlVpbnQzMkFycmF5O2xldCBvPUt5LmluZGV4T2YodGhpcy5BcnJheVR5cGUpLHI9ZSoyKnRoaXMuQXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5ULGE9ZSp0aGlzLkluZGV4QXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5ULGg9KDgtYSU4KSU4O2lmKG88MCl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZWQgYXJyYXkgY2xhc3M6ICR7bn0uYCk7cyYmcyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyPyh0aGlzLmRhdGE9cyx0aGlzLmlkcz1uZXcgdGhpcy5JbmRleEFycmF5VHlwZSh0aGlzLmRhdGEsa0UsZSksdGhpcy5jb29yZHM9bmV3IHRoaXMuQXJyYXlUeXBlKHRoaXMuZGF0YSxrRSthK2gsZSoyKSx0aGlzLl9wb3M9ZSoyLHRoaXMuX2ZpbmlzaGVkPSEwKToodGhpcy5kYXRhPW5ldyBBcnJheUJ1ZmZlcihrRStyK2EraCksdGhpcy5pZHM9bmV3IHRoaXMuSW5kZXhBcnJheVR5cGUodGhpcy5kYXRhLGtFLGUpLHRoaXMuY29vcmRzPW5ldyB0aGlzLkFycmF5VHlwZSh0aGlzLmRhdGEsa0UrYStoLGUqMiksdGhpcy5fcG9zPTAsdGhpcy5fZmluaXNoZWQ9ITEsbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLDAsMikuc2V0KFsyMTksKHNOPDw0KStvXSksbmV3IFVpbnQxNkFycmF5KHRoaXMuZGF0YSwyLDEpWzBdPWksbmV3IFVpbnQzMkFycmF5KHRoaXMuZGF0YSw0LDEpWzBdPWUpfWFkZChlLGkpe2xldCBuPXRoaXMuX3Bvcz4+MTtyZXR1cm4gdGhpcy5pZHNbbl09bix0aGlzLmNvb3Jkc1t0aGlzLl9wb3MrK109ZSx0aGlzLmNvb3Jkc1t0aGlzLl9wb3MrK109aSxufWZpbmlzaCgpe2xldCBlPXRoaXMuX3Bvcz4+MTtpZihlIT09dGhpcy5udW1JdGVtcyl0aHJvdyBuZXcgRXJyb3IoYEFkZGVkICR7ZX0gaXRlbXMgd2hlbiBleHBlY3RlZCAke3RoaXMubnVtSXRlbXN9LmApO3JldHVybiByTih0aGlzLmlkcyx0aGlzLmNvb3Jkcyx0aGlzLm5vZGVTaXplLDAsdGhpcy5udW1JdGVtcy0xLDApLHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXN9cmFuZ2UoZSxpLG4scyl7aWYoIXRoaXMuX2ZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiRGF0YSBub3QgeWV0IGluZGV4ZWQgLSBjYWxsIGluZGV4LmZpbmlzaCgpLiIpO2xldHtpZHM6byxjb29yZHM6cixub2RlU2l6ZTphfT10aGlzLGg9WzAsby5sZW5ndGgtMSwwXSxBPVtdO2Zvcig7aC5sZW5ndGg7KXtsZXQgZD1oLnBvcCgpfHwwLGY9aC5wb3AoKXx8MCxFPWgucG9wKCl8fDA7aWYoZi1FPD1hKXtmb3IobGV0IEM9RTtDPD1mO0MrKyl7bGV0IE49clsyKkNdLFQ9clsyKkMrMV07Tj49ZSYmTjw9biYmVD49aSYmVDw9cyYmQS5wdXNoKG9bQ10pfWNvbnRpbnVlfWxldCBfPUUrZj4+MSxSPXJbMipfXSxJPXJbMipfKzFdO1I+PWUmJlI8PW4mJkk+PWkmJkk8PXMmJkEucHVzaChvW19dKSwoZD09PTA/ZTw9UjppPD1JKSYmKGgucHVzaChFKSxoLnB1c2goXy0xKSxoLnB1c2goMS1kKSksKGQ9PT0wP24+PVI6cz49SSkmJihoLnB1c2goXysxKSxoLnB1c2goZiksaC5wdXNoKDEtZCkpfXJldHVybiBBfXdpdGhpbihlLGksbil7aWYoIXRoaXMuX2ZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiRGF0YSBub3QgeWV0IGluZGV4ZWQgLSBjYWxsIGluZGV4LmZpbmlzaCgpLiIpO2xldHtpZHM6cyxjb29yZHM6byxub2RlU2l6ZTpyfT10aGlzLGE9WzAscy5sZW5ndGgtMSwwXSxoPVtdLEE9bipuO2Zvcig7YS5sZW5ndGg7KXtsZXQgZD1hLnBvcCgpfHwwLGY9YS5wb3AoKXx8MCxFPWEucG9wKCl8fDA7aWYoZi1FPD1yKXtmb3IobGV0IEM9RTtDPD1mO0MrKylYeShvWzIqQ10sb1syKkMrMV0sZSxpKTw9QSYmaC5wdXNoKHNbQ10pO2NvbnRpbnVlfWxldCBfPUUrZj4+MSxSPW9bMipfXSxJPW9bMipfKzFdO1h5KFIsSSxlLGkpPD1BJiZoLnB1c2goc1tfXSksKGQ9PT0wP2Utbjw9UjppLW48PUkpJiYoYS5wdXNoKEUpLGEucHVzaChfLTEpLGEucHVzaCgxLWQpKSwoZD09PTA/ZStuPj1SOmkrbj49SSkmJihhLnB1c2goXysxKSxhLnB1c2goZiksYS5wdXNoKDEtZCkpfXJldHVybiBofX19KTtmdW5jdGlvbiBWYSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZW5hYmxlZD1aKHQuZW5hYmxlZCwhMSksdGhpcy5fcGl4ZWxSYW5nZT1aKHQucGl4ZWxSYW5nZSw4MCksdGhpcy5fbWluaW11bUNsdXN0ZXJTaXplPVoodC5taW5pbXVtQ2x1c3RlclNpemUsMiksdGhpcy5fY2x1c3RlckJpbGxib2FyZHM9Wih0LmNsdXN0ZXJCaWxsYm9hcmRzLCEwKSx0aGlzLl9jbHVzdGVyTGFiZWxzPVoodC5jbHVzdGVyTGFiZWxzLCEwKSx0aGlzLl9jbHVzdGVyUG9pbnRzPVoodC5jbHVzdGVyUG9pbnRzLCEwKSx0aGlzLl9sYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX3BvaW50Q29sbGVjdGlvbj12b2lkIDAsdGhpcy5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJQb2ludENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHk9e30sdGhpcy5fdW51c2VkTGFiZWxJbmRpY2VzPVtdLHRoaXMuX3VudXNlZEJpbGxib2FyZEluZGljZXM9W10sdGhpcy5fdW51c2VkUG9pbnRJbmRpY2VzPVtdLHRoaXMuX3ByZXZpb3VzQ2x1c3RlcnM9W10sdGhpcy5fcHJldmlvdXNIZWlnaHQ9dm9pZCAwLHRoaXMuX2VuYWJsZWREaXJ0eT0hMSx0aGlzLl9jbHVzdGVyRGlydHk9ITEsdGhpcy5fY2x1c3Rlcj12b2lkIDAsdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fY2x1c3RlckV2ZW50PW5ldyBXZSx0aGlzLnNob3c9Wih0LnNob3csITApfWZ1bmN0aW9uIHR3KHQsZSl7dC54LT1lLHQueS09ZSx0LndpZHRoKz1lKjIsdC5oZWlnaHQrPWUqMn1mdW5jdGlvbiBldyh0LGUsaSxuLHMpe2lmKG0odC5fbGFiZWxDb2xsZWN0aW9uKSYmbi5fY2x1c3RlckxhYmVscz9zPURFLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3godCxlLHMpOm0odC5fYmlsbGJvYXJkQ29sbGVjdGlvbikmJm4uX2NsdXN0ZXJCaWxsYm9hcmRzP3M9dW4uZ2V0U2NyZWVuU3BhY2VCb3VuZGluZ0JveCh0LGUscyk6bSh0Ll9wb2ludFByaW1pdGl2ZUNvbGxlY3Rpb24pJiZuLl9jbHVzdGVyUG9pbnRzJiYocz11by5nZXRTY3JlZW5TcGFjZUJvdW5kaW5nQm94KHQsZSxzKSksdHcocyxpKSxuLl9jbHVzdGVyTGFiZWxzJiYhbSh0Ll9sYWJlbENvbGxlY3Rpb24pJiZtKHQuaWQpJiZudyhuLHQuaWQuaWQpJiZtKHQuaWQuX2xhYmVsKSl7bGV0IG89bi5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eVt0LmlkLmlkXS5sYWJlbEluZGV4LHI9bi5fbGFiZWxDb2xsZWN0aW9uLmdldChvKSxhPURFLmdldFNjcmVlblNwYWNlQm91bmRpbmdCb3gocixlLHRpdCk7dHcoYSxpKSxzPW1pLnVuaW9uKHMsYSxzKX1yZXR1cm4gc31mdW5jdGlvbiBlaXQodCxlKXtpZih0LmNsdXN0ZXJTaG93PSEwLCFtKHQuX2xhYmVsQ29sbGVjdGlvbikmJm0odC5pZCkmJm53KGUsdC5pZC5pZCkmJm0odC5pZC5fbGFiZWwpKXtsZXQgaT1lLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W3QuaWQuaWRdLmxhYmVsSW5kZXgsbj1lLl9sYWJlbENvbGxlY3Rpb24uZ2V0KGkpO24uY2x1c3RlclNob3c9ITB9fWZ1bmN0aW9uIGl3KHQsZSxpLG4pe2xldCBzPXtiaWxsYm9hcmQ6bi5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24uYWRkKCksbGFiZWw6bi5fY2x1c3RlckxhYmVsQ29sbGVjdGlvbi5hZGQoKSxwb2ludDpuLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uLmFkZCgpfTtzLmJpbGxib2FyZC5zaG93PSExLHMucG9pbnQuc2hvdz0hMSxzLmxhYmVsLnNob3c9ITAscy5sYWJlbC50ZXh0PWUudG9Mb2NhbGVTdHJpbmcoKSxzLmxhYmVsLmlkPWkscy5iaWxsYm9hcmQucG9zaXRpb249cy5sYWJlbC5wb3NpdGlvbj1zLnBvaW50LnBvc2l0aW9uPXQsbi5fY2x1c3RlckV2ZW50LnJhaXNlRXZlbnQoaSxzKX1mdW5jdGlvbiBudyh0LGUpe3JldHVybiBtKHQpJiZtKHQuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbZV0pJiZtKHQuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbZV0ubGFiZWxJbmRleCl9ZnVuY3Rpb24gYU4odCxlLGksbixzKXtpZighbSh0KSlyZXR1cm47bGV0IG89dC5sZW5ndGg7Zm9yKGxldCByPTA7cjxvOysrcil7bGV0IGE9dC5nZXQocik7aWYoYS5jbHVzdGVyU2hvdz0hMSwhYS5zaG93fHxzLl9zY2VuZS5tb2RlPT09eWUuU0NFTkUzRCYmIW4uaXNQb2ludFZpc2libGUoYS5wb3NpdGlvbikpY29udGludWU7bGV0IGg9cy5fY2x1c3RlckxhYmVscyYmbShhLl9sYWJlbENvbGxlY3Rpb24pLEE9cy5fY2x1c3RlckJpbGxib2FyZHMmJm0oYS5pZC5fYmlsbGJvYXJkKSxkPXMuX2NsdXN0ZXJQb2ludHMmJm0oYS5pZC5fcG9pbnQpO2lmKGgmJihkfHxBKSljb250aW51ZTtsZXQgZj1hLmNvbXB1dGVTY3JlZW5TcGFjZVBvc2l0aW9uKGkpO20oZikmJmUucHVzaCh7aW5kZXg6cixjb2xsZWN0aW9uOnQsY2x1c3RlcmVkOiExLGNvb3JkOmZ9KX19ZnVuY3Rpb24gb2l0KHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihtKGUpJiZlPC4wNXx8IXQuZW5hYmxlZClyZXR1cm47bGV0IGk9dC5fc2NlbmUsbj10Ll9sYWJlbENvbGxlY3Rpb24scz10Ll9iaWxsYm9hcmRDb2xsZWN0aW9uLG89dC5fcG9pbnRDb2xsZWN0aW9uO2lmKCFtKG4pJiYhbShzKSYmIW0obyl8fCF0Ll9jbHVzdGVyQmlsbGJvYXJkcyYmIXQuX2NsdXN0ZXJMYWJlbHMmJiF0Ll9jbHVzdGVyUG9pbnRzKXJldHVybjtsZXQgcj10Ll9jbHVzdGVyTGFiZWxDb2xsZWN0aW9uLGE9dC5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24saD10Ll9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uO20ocik/ci5yZW1vdmVBbGwoKTpyPXQuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249bmV3IEtUKHtzY2VuZTppfSksbShhKT9hLnJlbW92ZUFsbCgpOmE9dC5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb249bmV3IHdtKHtzY2VuZTppfSksbShoKT9oLnJlbW92ZUFsbCgpOmg9dC5fY2x1c3RlclBvaW50Q29sbGVjdGlvbj1uZXcgbk47bGV0IEE9dC5fcGl4ZWxSYW5nZSxkPXQuX21pbmltdW1DbHVzdGVyU2l6ZSxmPXQuX3ByZXZpb3VzQ2x1c3RlcnMsRT1bXSxfPXQuX3ByZXZpb3VzSGVpZ2h0LFI9aS5jYW1lcmEucG9zaXRpb25DYXJ0b2dyYXBoaWMuaGVpZ2h0LEk9aS5tYXBQcm9qZWN0aW9uLmVsbGlwc29pZCxDPWkuY2FtZXJhLnBvc2l0aW9uV0MsTj1uZXcgZEEoSSxDKSxUPVtdO3QuX2NsdXN0ZXJMYWJlbHMmJmFOKG4sVCxpLE4sdCksdC5fY2x1c3RlckJpbGxib2FyZHMmJmFOKHMsVCxpLE4sdCksdC5fY2x1c3RlclBvaW50cyYmYU4obyxULGksTix0KTtsZXQgYixGLEIsVSxRLE0sayx5LGMsZyxPLEQ7aWYoVC5sZW5ndGg+MCl7bGV0IHc9bmV3IHlFKFQubGVuZ3RoLDY0LFVpbnQzMkFycmF5KTtmb3IobGV0IHg9MDt4PFQubGVuZ3RoOysreCl3LmFkZChUW3hdLmNvb3JkLngsVFt4XS5jb29yZC55KTtpZih3LmZpbmlzaCgpLFI8Xylmb3IoQj1mLmxlbmd0aCxiPTA7YjxCOysrYil7bGV0IHg9ZltiXTtpZighTi5pc1BvaW50VmlzaWJsZSh4LnBvc2l0aW9uKSljb250aW51ZTtsZXQgSD11bi5fY29tcHV0ZVNjcmVlblNwYWNlUG9zaXRpb24oYXQuSURFTlRJVFkseC5wb3NpdGlvbixsLlpFUk8sbnQuWkVSTyxpKTtpZighbShIKSljb250aW51ZTtsZXQgaj0xLVIvXyxYPXgud2lkdGg9eC53aWR0aCpqLHR0PXguaGVpZ2h0PXguaGVpZ2h0Kmo7WD1NYXRoLm1heChYLHgubWluaW11bVdpZHRoKSx0dD1NYXRoLm1heCh0dCx4Lm1pbmltdW1IZWlnaHQpO2xldCBHPUgueC1YKi41LEl0PUgueS10dCouNSxndD1ILngrWCxZdD1ILnkrdHQ7Zm9yKFE9dy5yYW5nZShHLEl0LGd0LFl0KSxNPVEubGVuZ3RoLGc9MCxjPVtdLEY9MDtGPE07KytGKWs9UVtGXSx5PVRba10seS5jbHVzdGVyZWR8fCgrK2csTz15LmNvbGxlY3Rpb24sRD15LmluZGV4LGMucHVzaChPLmdldChEKS5pZCkpO2lmKGc+PWQpZm9yKGl3KHgucG9zaXRpb24sZyxjLHQpLEUucHVzaCh4KSxGPTA7RjxNOysrRilUW1FbRl1dLmNsdXN0ZXJlZD0hMH1mb3IoQj1ULmxlbmd0aCxiPTA7YjxCOysrYil7bGV0IHg9VFtiXTtpZih4LmNsdXN0ZXJlZCljb250aW51ZTt4LmNsdXN0ZXJlZD0hMCxPPXguY29sbGVjdGlvbixEPXguaW5kZXg7bGV0IEg9Ty5nZXQoRCk7VT1ldyhILHguY29vcmQsQSx0LGlpdCk7bGV0IGo9bWkuY2xvbmUoVSxuaXQpO1E9dy5yYW5nZShVLngsVS55LFUueCtVLndpZHRoLFUueStVLmhlaWdodCksTT1RLmxlbmd0aDtsZXQgWD1sLmNsb25lKEgucG9zaXRpb24pO2ZvcihnPTEsYz1bSC5pZF0sRj0wO0Y8TTsrK0YpaWYoaz1RW0ZdLHk9VFtrXSwheS5jbHVzdGVyZWQpe2xldCB0dD15LmNvbGxlY3Rpb24uZ2V0KHkuaW5kZXgpLEc9ZXcodHQseS5jb29yZCxBLHQsc2l0KTtsLmFkZCh0dC5wb3NpdGlvbixYLFgpLG1pLnVuaW9uKGosRyxqKSwrK2csYy5wdXNoKHR0LmlkKX1pZihnPj1kKXtsZXQgdHQ9bC5tdWx0aXBseUJ5U2NhbGFyKFgsMS9nLFgpO2Zvcihpdyh0dCxnLGMsdCksRS5wdXNoKHtwb3NpdGlvbjp0dCx3aWR0aDpqLndpZHRoLGhlaWdodDpqLmhlaWdodCxtaW5pbXVtV2lkdGg6VS53aWR0aCxtaW5pbXVtSGVpZ2h0OlUuaGVpZ2h0fSksRj0wO0Y8TTsrK0YpVFtRW0ZdXS5jbHVzdGVyZWQ9ITB9ZWxzZSBlaXQoSCx0KX19ci5sZW5ndGg9PT0wJiYoci5kZXN0cm95KCksdC5fY2x1c3RlckxhYmVsQ29sbGVjdGlvbj12b2lkIDApLGEubGVuZ3RoPT09MCYmKGEuZGVzdHJveSgpLHQuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uPXZvaWQgMCksaC5sZW5ndGg9PT0wJiYoaC5kZXN0cm95KCksdC5fY2x1c3RlclBvaW50Q29sbGVjdGlvbj12b2lkIDApLHQuX3ByZXZpb3VzQ2x1c3RlcnM9RSx0Ll9wcmV2aW91c0hlaWdodD1SfX1mdW5jdGlvbiBoTih0LGUsaSxuKXtyZXR1cm4gZnVuY3Rpb24ocyl7bGV0IG89dGhpc1t0XTttKHRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHkpfHwodGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eT17fSk7bGV0IHI9dGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eVtzLmlkXTtpZihtKHIpfHwocj10aGlzLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W3MuaWRdPXtiaWxsYm9hcmRJbmRleDp2b2lkIDAsbGFiZWxJbmRleDp2b2lkIDAscG9pbnRJbmRleDp2b2lkIDB9KSxtKG8pJiZtKHJbbl0pKXJldHVybiBvLmdldChyW25dKTttKG8pfHwobz10aGlzW3RdPW5ldyBlKHtzY2VuZTp0aGlzLl9zY2VuZX0pKTtsZXQgYSxoLEE9dGhpc1tpXTtBLmxlbmd0aD4wPyhhPUEuc2hpZnQoKSxoPW8uZ2V0KGEpKTooaD1vLmFkZCgpLGE9by5sZW5ndGgtMSkscltuXT1hO2xldCBkPXRoaXM7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtkLl9jbHVzdGVyRGlydHk9ITB9KSxofX1mdW5jdGlvbiBjTih0LGUpe2xldCBpPXQuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbZV07IW0oaS5iaWxsYm9hcmRJbmRleCkmJiFtKGkubGFiZWxJbmRleCkmJiFtKGkucG9pbnRJbmRleCkmJmRlbGV0ZSB0Ll9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W2VdfWZ1bmN0aW9uIEFOKHQpe2lmKCFtKHQpKXJldHVybjtsZXQgZT10Lmxlbmd0aDtmb3IobGV0IGk9MDtpPGU7KytpKXQuZ2V0KGkpLmNsdXN0ZXJTaG93PSEwfWZ1bmN0aW9uIHJpdCh0KXt0LmVuYWJsZWR8fChtKHQuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24pJiZ0Ll9jbHVzdGVyTGFiZWxDb2xsZWN0aW9uLmRlc3Ryb3koKSxtKHQuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uKSYmdC5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24uZGVzdHJveSgpLG0odC5fY2x1c3RlclBvaW50Q29sbGVjdGlvbikmJnQuX2NsdXN0ZXJQb2ludENvbGxlY3Rpb24uZGVzdHJveSgpLHQuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249dm9pZCAwLHQuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uPXZvaWQgMCx0Ll9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uPXZvaWQgMCxBTih0Ll9sYWJlbENvbGxlY3Rpb24pLEFOKHQuX2JpbGxib2FyZENvbGxlY3Rpb24pLEFOKHQuX3BvaW50Q29sbGVjdGlvbikpfXZhciB0aXQsaWl0LG5pdCxzaXQsc3csb3c9UygoKT0+e0VyKCk7WGUoKTtIdCgpO0Z0KCk7bXQoKTtWbSgpO3hpKCk7YmkoKTtzSSgpO0pUKCk7SFQoKTtPeSgpO1hUKCk7enkoKTt1YSgpOyR5KCk7dGl0PW5ldyBtaTtpaXQ9bmV3IG1pLG5pdD1uZXcgbWksc2l0PW5ldyBtaTtWYS5wcm90b3R5cGUuX2luaXRpYWxpemU9ZnVuY3Rpb24odCl7dGhpcy5fc2NlbmU9dDtsZXQgZT1vaXQodGhpcyk7dGhpcy5fY2x1c3Rlcj1lLHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXI9dC5jYW1lcmEuY2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKGUpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWYS5wcm90b3R5cGUse2VuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZW5hYmxlZERpcnR5PXQhPT10aGlzLl9lbmFibGVkLHRoaXMuX2VuYWJsZWQ9dH19LHBpeGVsUmFuZ2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbFJhbmdlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlckRpcnR5PXRoaXMuX2NsdXN0ZXJEaXJ0eXx8dCE9PXRoaXMuX3BpeGVsUmFuZ2UsdGhpcy5fcGl4ZWxSYW5nZT10fX0sbWluaW11bUNsdXN0ZXJTaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWluaW11bUNsdXN0ZXJTaXplfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlckRpcnR5PXRoaXMuX2NsdXN0ZXJEaXJ0eXx8dCE9PXRoaXMuX21pbmltdW1DbHVzdGVyU2l6ZSx0aGlzLl9taW5pbXVtQ2x1c3RlclNpemU9dH19LGNsdXN0ZXJFdmVudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJFdmVudH19LGNsdXN0ZXJCaWxsYm9hcmRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2x1c3RlckJpbGxib2FyZHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jbHVzdGVyRGlydHk9dGhpcy5fY2x1c3RlckRpcnR5fHx0IT09dGhpcy5fY2x1c3RlckJpbGxib2FyZHMsdGhpcy5fY2x1c3RlckJpbGxib2FyZHM9dH19LGNsdXN0ZXJMYWJlbHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbHVzdGVyTGFiZWxzfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fY2x1c3RlckRpcnR5PXRoaXMuX2NsdXN0ZXJEaXJ0eXx8dCE9PXRoaXMuX2NsdXN0ZXJMYWJlbHMsdGhpcy5fY2x1c3RlckxhYmVscz10fX0sY2x1c3RlclBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsdXN0ZXJQb2ludHN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jbHVzdGVyRGlydHk9dGhpcy5fY2x1c3RlckRpcnR5fHx0IT09dGhpcy5fY2x1c3RlclBvaW50cyx0aGlzLl9jbHVzdGVyUG9pbnRzPXR9fX0pO1ZhLnByb3RvdHlwZS5nZXRMYWJlbD1oTigiX2xhYmVsQ29sbGVjdGlvbiIsS1QsIl91bnVzZWRMYWJlbEluZGljZXMiLCJsYWJlbEluZGV4Iik7VmEucHJvdG90eXBlLnJlbW92ZUxhYmVsPWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHkmJnRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHlbdC5pZF07aWYoIW0odGhpcy5fbGFiZWxDb2xsZWN0aW9uKXx8IW0oZSl8fCFtKGUubGFiZWxJbmRleCkpcmV0dXJuO2xldCBpPWUubGFiZWxJbmRleDtlLmxhYmVsSW5kZXg9dm9pZCAwLGNOKHRoaXMsdC5pZCk7bGV0IG49dGhpcy5fbGFiZWxDb2xsZWN0aW9uLmdldChpKTtuLnNob3c9ITEsbi50ZXh0PSIiLG4uaWQ9dm9pZCAwLHRoaXMuX3VudXNlZExhYmVsSW5kaWNlcy5wdXNoKGkpLHRoaXMuX2NsdXN0ZXJEaXJ0eT0hMH07VmEucHJvdG90eXBlLmdldEJpbGxib2FyZD1oTigiX2JpbGxib2FyZENvbGxlY3Rpb24iLHdtLCJfdW51c2VkQmlsbGJvYXJkSW5kaWNlcyIsImJpbGxib2FyZEluZGV4Iik7VmEucHJvdG90eXBlLnJlbW92ZUJpbGxib2FyZD1mdW5jdGlvbih0KXtsZXQgZT10aGlzLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5JiZ0aGlzLl9jb2xsZWN0aW9uSW5kaWNlc0J5RW50aXR5W3QuaWRdO2lmKCFtKHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24pfHwhbShlKXx8IW0oZS5iaWxsYm9hcmRJbmRleCkpcmV0dXJuO2xldCBpPWUuYmlsbGJvYXJkSW5kZXg7ZS5iaWxsYm9hcmRJbmRleD12b2lkIDAsY04odGhpcyx0LmlkKTtsZXQgbj10aGlzLl9iaWxsYm9hcmRDb2xsZWN0aW9uLmdldChpKTtuLmlkPXZvaWQgMCxuLnNob3c9ITEsbi5pbWFnZT12b2lkIDAsdGhpcy5fdW51c2VkQmlsbGJvYXJkSW5kaWNlcy5wdXNoKGkpLHRoaXMuX2NsdXN0ZXJEaXJ0eT0hMH07VmEucHJvdG90eXBlLmdldFBvaW50PWhOKCJfcG9pbnRDb2xsZWN0aW9uIixuTiwiX3VudXNlZFBvaW50SW5kaWNlcyIsInBvaW50SW5kZXgiKTtWYS5wcm90b3R5cGUucmVtb3ZlUG9pbnQ9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eSYmdGhpcy5fY29sbGVjdGlvbkluZGljZXNCeUVudGl0eVt0LmlkXTtpZighbSh0aGlzLl9wb2ludENvbGxlY3Rpb24pfHwhbShlKXx8IW0oZS5wb2ludEluZGV4KSlyZXR1cm47bGV0IGk9ZS5wb2ludEluZGV4O2UucG9pbnRJbmRleD12b2lkIDAsY04odGhpcyx0LmlkKTtsZXQgbj10aGlzLl9wb2ludENvbGxlY3Rpb24uZ2V0KGkpO24uc2hvdz0hMSxuLmlkPXZvaWQgMCx0aGlzLl91bnVzZWRQb2ludEluZGljZXMucHVzaChpKSx0aGlzLl9jbHVzdGVyRGlydHk9ITB9O1ZhLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuc2hvdylyZXR1cm47bGV0IGU7bSh0aGlzLl9sYWJlbENvbGxlY3Rpb24pJiZ0aGlzLl9sYWJlbENvbGxlY3Rpb24ubGVuZ3RoPjAmJnRoaXMuX2xhYmVsQ29sbGVjdGlvbi5nZXQoMCkuX2dseXBocy5sZW5ndGg9PT0wJiYoZT10LmNvbW1hbmRMaXN0LHQuY29tbWFuZExpc3Q9W10sdGhpcy5fbGFiZWxDb2xsZWN0aW9uLnVwZGF0ZSh0KSx0LmNvbW1hbmRMaXN0PWUpLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbikmJnRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24ubGVuZ3RoPjAmJiFtKHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24uZ2V0KDApLndpZHRoKSYmKGU9dC5jb21tYW5kTGlzdCx0LmNvbW1hbmRMaXN0PVtdLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24udXBkYXRlKHQpLHQuY29tbWFuZExpc3Q9ZSksdGhpcy5fZW5hYmxlZERpcnR5JiYodGhpcy5fZW5hYmxlZERpcnR5PSExLHJpdCh0aGlzKSx0aGlzLl9jbHVzdGVyRGlydHk9ITApLHRoaXMuX2NsdXN0ZXJEaXJ0eSYmKHRoaXMuX2NsdXN0ZXJEaXJ0eT0hMSx0aGlzLl9jbHVzdGVyKCkpLG0odGhpcy5fY2x1c3RlckxhYmVsQ29sbGVjdGlvbikmJnRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24udXBkYXRlKHQpLG0odGhpcy5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb24pJiZ0aGlzLl9jbHVzdGVyQmlsbGJvYXJkQ29sbGVjdGlvbi51cGRhdGUodCksbSh0aGlzLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uKSYmdGhpcy5fY2x1c3RlclBvaW50Q29sbGVjdGlvbi51cGRhdGUodCksbSh0aGlzLl9sYWJlbENvbGxlY3Rpb24pJiZ0aGlzLl9sYWJlbENvbGxlY3Rpb24udXBkYXRlKHQpLG0odGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbikmJnRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb24udXBkYXRlKHQpLG0odGhpcy5fcG9pbnRDb2xsZWN0aW9uKSYmdGhpcy5fcG9pbnRDb2xsZWN0aW9uLnVwZGF0ZSh0KX07VmEucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9sYWJlbENvbGxlY3Rpb249dGhpcy5fbGFiZWxDb2xsZWN0aW9uJiZ0aGlzLl9sYWJlbENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb249dGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbiYmdGhpcy5fYmlsbGJvYXJkQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5fcG9pbnRDb2xsZWN0aW9uPXRoaXMuX3BvaW50Q29sbGVjdGlvbiYmdGhpcy5fcG9pbnRDb2xsZWN0aW9uLmRlc3Ryb3koKSx0aGlzLl9jbHVzdGVyTGFiZWxDb2xsZWN0aW9uPXRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24mJnRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb24uZGVzdHJveSgpLHRoaXMuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uPXRoaXMuX2NsdXN0ZXJCaWxsYm9hcmRDb2xsZWN0aW9uJiZ0aGlzLl9jbHVzdGVyQmlsbGJvYXJkQ29sbGVjdGlvbi5kZXN0cm95KCksdGhpcy5fY2x1c3RlclBvaW50Q29sbGVjdGlvbj10aGlzLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uJiZ0aGlzLl9jbHVzdGVyUG9pbnRDb2xsZWN0aW9uLmRlc3Ryb3koKSxtKHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXIpJiYodGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lcigpLHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXI9dm9pZCAwKSx0aGlzLl9sYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2JpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX3BvaW50Q29sbGVjdGlvbj12b2lkIDAsdGhpcy5fY2x1c3RlckJpbGxib2FyZENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJMYWJlbENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NsdXN0ZXJQb2ludENvbGxlY3Rpb249dm9pZCAwLHRoaXMuX2NvbGxlY3Rpb25JbmRpY2VzQnlFbnRpdHk9dm9pZCAwLHRoaXMuX3VudXNlZExhYmVsSW5kaWNlcz1bXSx0aGlzLl91bnVzZWRCaWxsYm9hcmRJbmRpY2VzPVtdLHRoaXMuX3VudXNlZFBvaW50SW5kaWNlcz1bXSx0aGlzLl9wcmV2aW91c0NsdXN0ZXJzPVtdLHRoaXMuX3ByZXZpb3VzSGVpZ2h0PXZvaWQgMCx0aGlzLl9lbmFibGVkRGlydHk9ITEsdGhpcy5fcGl4ZWxSYW5nZURpcnR5PSExLHRoaXMuX21pbmltdW1DbHVzdGVyU2l6ZURpcnR5PSExfTtzdz1WYX0pO2Z1bmN0aW9uIEJsKCl7dGhpcy5fYXJyYXk9W10sdGhpcy5faGFzaD17fX12YXIgd0Uscnc9UygoKT0+e210KCk7T3QoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhCbC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5Lmxlbmd0aH19LHZhbHVlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FycmF5fX19KTtCbC5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7aWYodHlwZW9mIHQhPSJzdHJpbmciJiZ0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImtleSBpcyByZXF1aXJlZCB0byBiZSBhIHN0cmluZyBvciBudW1iZXIuIik7cmV0dXJuIG0odGhpcy5faGFzaFt0XSl9O0JsLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgdCE9InN0cmluZyImJnR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgia2V5IGlzIHJlcXVpcmVkIHRvIGJlIGEgc3RyaW5nIG9yIG51bWJlci4iKTtsZXQgaT10aGlzLl9oYXNoW3RdO2UhPT1pJiYodGhpcy5yZW1vdmUodCksdGhpcy5faGFzaFt0XT1lLHRoaXMuX2FycmF5LnB1c2goZSkpfTtCbC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIiYmdHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBZKCJrZXkgaXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcgb3IgbnVtYmVyLiIpO3JldHVybiB0aGlzLl9oYXNoW3RdfTtCbC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKG0odCkmJnR5cGVvZiB0IT0ic3RyaW5nIiYmdHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBZKCJrZXkgaXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcgb3IgbnVtYmVyLiIpO2xldCBlPXRoaXMuX2hhc2hbdF0saT1tKGUpO2lmKGkpe2xldCBuPXRoaXMuX2FycmF5O24uc3BsaWNlKG4uaW5kZXhPZihlKSwxKSxkZWxldGUgdGhpcy5faGFzaFt0XX1yZXR1cm4gaX07QmwucHJvdG90eXBlLnJlbW92ZUFsbD1mdW5jdGlvbigpe2xldCB0PXRoaXMuX2FycmF5O3QubGVuZ3RoPjAmJih0aGlzLl9oYXNoPXt9LHQubGVuZ3RoPTApfTt3RT1CbH0pO2Z1bmN0aW9uIERuKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLnN0YXJ0PW0odC5zdGFydCk/WmUuY2xvbmUodC5zdGFydCk6bmV3IFplLHRoaXMuc3RvcD1tKHQuc3RvcCk/WmUuY2xvbmUodC5zdG9wKTpuZXcgWmUsdGhpcy5kYXRhPXQuZGF0YSx0aGlzLmlzU3RhcnRJbmNsdWRlZD1aKHQuaXNTdGFydEluY2x1ZGVkLCEwKSx0aGlzLmlzU3RvcEluY2x1ZGVkPVoodC5pc1N0b3BJbmNsdWRlZCwhMCl9dmFyIHhtLE5JLGxOPVMoKCk9PnthZSgpO0Z0KCk7bXQoKTtPdCgpO09yKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRG4ucHJvdG90eXBlLHtpc0VtcHR5OntnZXQ6ZnVuY3Rpb24oKXtsZXQgdD1aZS5jb21wYXJlKHRoaXMuc3RvcCx0aGlzLnN0YXJ0KTtyZXR1cm4gdDwwfHx0PT09MCYmKCF0aGlzLmlzU3RhcnRJbmNsdWRlZHx8IXRoaXMuaXNTdG9wSW5jbHVkZWQpfX19KTt4bT17c3RhcnQ6dm9pZCAwLHN0b3A6dm9pZCAwLGlzU3RhcnRJbmNsdWRlZDp2b2lkIDAsaXNTdG9wSW5jbHVkZWQ6dm9pZCAwLGRhdGE6dm9pZCAwfTtEbi5mcm9tSXNvODYwMT1mdW5jdGlvbih0LGUpe3AudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkscC50eXBlT2Yuc3RyaW5nKCJvcHRpb25zLmlzbzg2MDEiLHQuaXNvODYwMSk7bGV0IGk9dC5pc284NjAxLnNwbGl0KCIvIik7aWYoaS5sZW5ndGghPT0yKXRocm93IG5ldyBZKCJvcHRpb25zLmlzbzg2MDEgaXMgYW4gaW52YWxpZCBJU08gODYwMSBpbnRlcnZhbC4iKTtsZXQgbj1aZS5mcm9tSXNvODYwMShpWzBdKSxzPVplLmZyb21Jc284NjAxKGlbMV0pLG89Wih0LmlzU3RhcnRJbmNsdWRlZCwhMCkscj1aKHQuaXNTdG9wSW5jbHVkZWQsITApLGE9dC5kYXRhO3JldHVybiBtKGUpPyhlLnN0YXJ0PW4sZS5zdG9wPXMsZS5pc1N0YXJ0SW5jbHVkZWQ9byxlLmlzU3RvcEluY2x1ZGVkPXIsZS5kYXRhPWEsZSk6KHhtLnN0YXJ0PW4seG0uc3RvcD1zLHhtLmlzU3RhcnRJbmNsdWRlZD1vLHhtLmlzU3RvcEluY2x1ZGVkPXIseG0uZGF0YT1hLG5ldyBEbih4bSkpfTtEbi50b0lzbzg2MDE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ0aW1lSW50ZXJ2YWwiLHQpLGAke1plLnRvSXNvODYwMSh0LnN0YXJ0LGUpfS8ke1plLnRvSXNvODYwMSh0LnN0b3AsZSl9YH07RG4uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLnN0YXJ0PXQuc3RhcnQsZS5zdG9wPXQuc3RvcCxlLmlzU3RhcnRJbmNsdWRlZD10LmlzU3RhcnRJbmNsdWRlZCxlLmlzU3RvcEluY2x1ZGVkPXQuaXNTdG9wSW5jbHVkZWQsZS5kYXRhPXQuZGF0YSxlKTpuZXcgRG4odCl9O0RuLmVxdWFscz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiYodC5pc0VtcHR5JiZlLmlzRW1wdHl8fHQuaXNTdGFydEluY2x1ZGVkPT09ZS5pc1N0YXJ0SW5jbHVkZWQmJnQuaXNTdG9wSW5jbHVkZWQ9PT1lLmlzU3RvcEluY2x1ZGVkJiZaZS5lcXVhbHModC5zdGFydCxlLnN0YXJ0KSYmWmUuZXF1YWxzKHQuc3RvcCxlLnN0b3ApJiYodC5kYXRhPT09ZS5kYXRhfHxtKGkpJiZpKHQuZGF0YSxlLmRhdGEpKSl9O0RuLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLGksbil7cmV0dXJuIGk9WihpLDApLHQ9PT1lfHxtKHQpJiZtKGUpJiYodC5pc0VtcHR5JiZlLmlzRW1wdHl8fHQuaXNTdGFydEluY2x1ZGVkPT09ZS5pc1N0YXJ0SW5jbHVkZWQmJnQuaXNTdG9wSW5jbHVkZWQ9PT1lLmlzU3RvcEluY2x1ZGVkJiZaZS5lcXVhbHNFcHNpbG9uKHQuc3RhcnQsZS5zdGFydCxpKSYmWmUuZXF1YWxzRXBzaWxvbih0LnN0b3AsZS5zdG9wLGkpJiYodC5kYXRhPT09ZS5kYXRhfHxtKG4pJiZuKHQuZGF0YSxlLmRhdGEpKSl9O0RuLmludGVyc2VjdD1mdW5jdGlvbih0LGUsaSxuKXtpZihwLnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLCFtKGUpKXJldHVybiBEbi5jbG9uZShEbi5FTVBUWSxpKTtsZXQgcz10LnN0YXJ0LG89dC5zdG9wLHI9ZS5zdGFydCxhPWUuc3RvcCxoPVplLmdyZWF0ZXJUaGFuT3JFcXVhbHMocixzKSYmWmUuZ3JlYXRlclRoYW5PckVxdWFscyhvLHIpLEE9IWgmJlplLmxlc3NUaGFuT3JFcXVhbHMocixzKSYmWmUubGVzc1RoYW5PckVxdWFscyhzLGEpO2lmKCFoJiYhQSlyZXR1cm4gRG4uY2xvbmUoRG4uRU1QVFksaSk7bGV0IGQ9dC5pc1N0YXJ0SW5jbHVkZWQsZj10LmlzU3RvcEluY2x1ZGVkLEU9ZS5pc1N0YXJ0SW5jbHVkZWQsXz1lLmlzU3RvcEluY2x1ZGVkLFI9WmUubGVzc1RoYW4obyxhKTtyZXR1cm4gbShpKXx8KGk9bmV3IERuKSxpLnN0YXJ0PWg/cjpzLGkuaXNTdGFydEluY2x1ZGVkPWQmJkV8fCFaZS5lcXVhbHMocixzKSYmKGgmJkV8fEEmJmQpLGkuc3RvcD1SP286YSxpLmlzU3RvcEluY2x1ZGVkPVI/ZjpmJiZffHwhWmUuZXF1YWxzKGEsbykmJl8saS5kYXRhPW0obik/bih0LmRhdGEsZS5kYXRhKTp0LmRhdGEsaX07RG4uY29udGFpbnM9ZnVuY3Rpb24odCxlKXtpZihwLnR5cGVPZi5vYmplY3QoInRpbWVJbnRlcnZhbCIsdCkscC50eXBlT2Yub2JqZWN0KCJqdWxpYW5EYXRlIixlKSx0LmlzRW1wdHkpcmV0dXJuITE7bGV0IGk9WmUuY29tcGFyZSh0LnN0YXJ0LGUpO2lmKGk9PT0wKXJldHVybiB0LmlzU3RhcnRJbmNsdWRlZDtsZXQgbj1aZS5jb21wYXJlKGUsdC5zdG9wKTtyZXR1cm4gbj09PTA/dC5pc1N0b3BJbmNsdWRlZDppPDAmJm48MH07RG4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBEbi5jbG9uZSh0aGlzLHQpfTtEbi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIERuLmVxdWFscyh0aGlzLHQsZSl9O0RuLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gRG4uZXF1YWxzRXBzaWxvbih0aGlzLHQsZSxpKX07RG4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIERuLnRvSXNvODYwMSh0aGlzKX07RG4uRU1QVFk9T2JqZWN0LmZyZWV6ZShuZXcgRG4oe3N0YXJ0Om5ldyBaZSxzdG9wOm5ldyBaZSxpc1N0YXJ0SW5jbHVkZWQ6ITEsaXNTdG9wSW5jbHVkZWQ6ITF9KSk7Tkk9RG59KTt2YXIgYXcsQXcsYWl0LEFpdCxkaCxodz1TKCgpPT57T3IoKTtsTigpO2F3PU9iamVjdC5mcmVlemUoWmUuZnJvbUlzbzg2MDEoIjAwMDAtMDEtMDFUMDA6MDA6MDBaIikpLEF3PU9iamVjdC5mcmVlemUoWmUuZnJvbUlzbzg2MDEoIjk5OTktMTItMzFUMjQ6MDA6MDBaIikpLGFpdD1PYmplY3QuZnJlZXplKG5ldyBOSSh7c3RhcnQ6YXcsc3RvcDpBd30pKSxBaXQ9e01JTklNVU1fVkFMVUU6YXcsTUFYSU1VTV9WQUxVRTpBdyxNQVhJTVVNX0lOVEVSVkFMOmFpdH0sZGg9QWl0fSk7ZnVuY3Rpb24gSWModCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuX2VsbGlwc29pZD1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSx0aGlzLl9yZWN0YW5nbGU9Wih0LnJlY3RhbmdsZSxYdC5NQVhfVkFMVUUpLHRoaXMuX3Byb2plY3Rpb249bmV3IFNzKHRoaXMuX2VsbGlwc29pZCksdGhpcy5fbnVtYmVyT2ZMZXZlbFplcm9UaWxlc1g9Wih0Lm51bWJlck9mTGV2ZWxaZXJvVGlsZXNYLDIpLHRoaXMuX251bWJlck9mTGV2ZWxaZXJvVGlsZXNZPVoodC5udW1iZXJPZkxldmVsWmVyb1RpbGVzWSwxKX12YXIgY3csbHc9UygoKT0+e1hlKCk7YWUoKTtGdCgpO210KCk7T2UoKTt6QSgpO19lKCk7cG4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhJYy5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LHJlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlY3RhbmdsZX19LHByb2plY3Rpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9qZWN0aW9ufX19KTtJYy5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZYVGlsZXNBdExldmVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9udW1iZXJPZkxldmVsWmVyb1RpbGVzWDw8dH07SWMucHJvdG90eXBlLmdldE51bWJlck9mWVRpbGVzQXRMZXZlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbnVtYmVyT2ZMZXZlbFplcm9UaWxlc1k8PHR9O0ljLnByb3RvdHlwZS5yZWN0YW5nbGVUb05hdGl2ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgicmVjdGFuZ2xlIix0KTtsZXQgaT1MLnRvRGVncmVlcyh0Lndlc3QpLG49TC50b0RlZ3JlZXModC5zb3V0aCkscz1MLnRvRGVncmVlcyh0LmVhc3QpLG89TC50b0RlZ3JlZXModC5ub3J0aCk7cmV0dXJuIG0oZSk/KGUud2VzdD1pLGUuc291dGg9bixlLmVhc3Q9cyxlLm5vcnRoPW8sZSk6bmV3IFh0KGksbixzLG8pfTtJYy5wcm90b3R5cGUudGlsZVhZVG9OYXRpdmVSZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9dGhpcy50aWxlWFlUb1JlY3RhbmdsZSh0LGUsaSxuKTtyZXR1cm4gcy53ZXN0PUwudG9EZWdyZWVzKHMud2VzdCkscy5zb3V0aD1MLnRvRGVncmVlcyhzLnNvdXRoKSxzLmVhc3Q9TC50b0RlZ3JlZXMocy5lYXN0KSxzLm5vcnRoPUwudG9EZWdyZWVzKHMubm9ydGgpLHN9O0ljLnByb3RvdHlwZS50aWxlWFlUb1JlY3RhbmdsZT1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz10aGlzLl9yZWN0YW5nbGUsbz10aGlzLmdldE51bWJlck9mWFRpbGVzQXRMZXZlbChpKSxyPXRoaXMuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsKGkpLGE9cy53aWR0aC9vLGg9dCphK3Mud2VzdCxBPSh0KzEpKmErcy53ZXN0LGQ9cy5oZWlnaHQvcixmPXMubm9ydGgtZSpkLEU9cy5ub3J0aC0oZSsxKSpkO3JldHVybiBtKG4pfHwobj1uZXcgWHQoaCxFLEEsZikpLG4ud2VzdD1oLG4uc291dGg9RSxuLmVhc3Q9QSxuLm5vcnRoPWYsbn07SWMucHJvdG90eXBlLnBvc2l0aW9uVG9UaWxlWFk9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXRoaXMuX3JlY3RhbmdsZTtpZighWHQuY29udGFpbnMobix0KSlyZXR1cm47bGV0IHM9dGhpcy5nZXROdW1iZXJPZlhUaWxlc0F0TGV2ZWwoZSksbz10aGlzLmdldE51bWJlck9mWVRpbGVzQXRMZXZlbChlKSxyPW4ud2lkdGgvcyxhPW4uaGVpZ2h0L28saD10LmxvbmdpdHVkZTtuLmVhc3Q8bi53ZXN0JiYoaCs9TC5UV09fUEkpO2xldCBBPShoLW4ud2VzdCkvcnwwO0E+PXMmJihBPXMtMSk7bGV0IGQ9KG4ubm9ydGgtdC5sYXRpdHVkZSkvYXwwO3JldHVybiBkPj1vJiYoZD1vLTEpLG0oaSk/KGkueD1BLGkueT1kLGkpOm5ldyBudChBLGQpfTtjdz1JY30pO2Z1bmN0aW9uIF93KHQpe3V0LmZyb21SYWRpYW5zKHQuZWFzdCx0Lm5vcnRoLDAseEVbMF0pLHV0LmZyb21SYWRpYW5zKHQud2VzdCx0Lm5vcnRoLDAseEVbMV0pLHV0LmZyb21SYWRpYW5zKHQuZWFzdCx0LnNvdXRoLDAseEVbMl0pLHV0LmZyb21SYWRpYW5zKHQud2VzdCx0LnNvdXRoLDAseEVbM10pO2xldCBlPTAsaT0wLG49MCxzPTAsbz1Lbi5fdGVycmFpbkhlaWdodHNNYXhMZXZlbCxyO2ZvcihyPTA7cjw9bzsrK3Ipe2xldCBhPSExO2ZvcihsZXQgaD0wO2g8NDsrK2gpe2xldCBBPXhFW2hdO2lmKGNpdC5wb3NpdGlvblRvVGlsZVhZKEEscixQRSksaD09PTApbj1QRS54LHM9UEUueTtlbHNlIGlmKG4hPT1QRS54fHxzIT09UEUueSl7YT0hMDticmVha319aWYoYSlicmVhaztlPW4saT1zfWlmKHIhPT0wKXJldHVybnt4OmUseTppLGxldmVsOnI+bz9vOnItMX19dmFyIGR3LG13LGZ3LGROLGhpdCxFdyxjaXQseEUsUEUsS24sRG8sSkU9UygoKT0+e19pKCk7UFooKTtYZSgpO0h0KCk7cmkoKTthZSgpO0Z0KCk7bXQoKTtPdCgpO09lKCk7bHcoKTtwbigpO0lhKCk7eVooKTtkdz1uZXcgbCxtdz1uZXcgbCxmdz1uZXcgdXQsZE49bmV3IGwsaGl0PW5ldyBsLEV3PW5ldyBOdCxjaXQ9bmV3IGN3LHhFPVtuZXcgdXQsbmV3IHV0LG5ldyB1dCxuZXcgdXRdLFBFPW5ldyBudCxLbj17fTtLbi5pbml0aWFsaXplPWZ1bmN0aW9uKCl7bGV0IHQ9S24uX2luaXRQcm9taXNlO3JldHVybiBtKHQpfHwodD10bi5mZXRjaEpzb24odGgoIkFzc2V0cy9hcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmpzb24iKSkudGhlbihmdW5jdGlvbihlKXtLbi5fdGVycmFpbkhlaWdodHM9ZX0pLEtuLl9pbml0UHJvbWlzZT10KSx0fTtLbi5nZXRNaW5pbXVtTWF4aW11bUhlaWdodHM9ZnVuY3Rpb24odCxlKXtpZihwLmRlZmluZWQoInJlY3RhbmdsZSIsdCksIW0oS24uX3RlcnJhaW5IZWlnaHRzKSl0aHJvdyBuZXcgWSgiWW91IG11c3QgY2FsbCBBcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24iKTtlPVooZSxvdC5XR1M4NCk7bGV0IGk9X3codCksbj1Lbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHQscz1Lbi5fZGVmYXVsdE1heFRlcnJhaW5IZWlnaHQ7aWYobShpKSl7bGV0IG89YCR7aS5sZXZlbH0tJHtpLnh9LSR7aS55fWAscj1Lbi5fdGVycmFpbkhlaWdodHNbb107bShyKSYmKG49clswXSxzPXJbMV0pLGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oWHQubm9ydGhlYXN0KHQsZncpLGR3KSxlLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFh0LnNvdXRod2VzdCh0LGZ3KSxtdyksbC5taWRwb2ludChtdyxkdyxkTik7bGV0IGE9ZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGROLGhpdCk7aWYobShhKSl7bGV0IGg9bC5kaXN0YW5jZShkTixhKTtuPU1hdGgubWluKG4sLWgpfWVsc2Ugbj1Lbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHR9cmV0dXJuIG49TWF0aC5tYXgoS24uX2RlZmF1bHRNaW5UZXJyYWluSGVpZ2h0LG4pLHttaW5pbXVtVGVycmFpbkhlaWdodDpuLG1heGltdW1UZXJyYWluSGVpZ2h0OnN9fTtLbi5nZXRCb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUpe2lmKHAuZGVmaW5lZCgicmVjdGFuZ2xlIix0KSwhbShLbi5fdGVycmFpbkhlaWdodHMpKXRocm93IG5ldyBZKCJZb3UgbXVzdCBjYWxsIEFwcHJveGltYXRlVGVycmFpbkhlaWdodHMuaW5pdGlhbGl6ZSBhbmQgd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgdXNpbmcgdGhpcyBmdW5jdGlvbiIpO2U9WihlLG90LldHUzg0KTtsZXQgaT1fdyh0KSxuPUtuLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodDtpZihtKGkpKXtsZXQgbz1gJHtpLmxldmVsfS0ke2kueH0tJHtpLnl9YCxyPUtuLl90ZXJyYWluSGVpZ2h0c1tvXTttKHIpJiYobj1yWzFdKX1sZXQgcz1OdC5mcm9tUmVjdGFuZ2xlM0QodCxlLDApO3JldHVybiBOdC5mcm9tUmVjdGFuZ2xlM0QodCxlLG4sRXcpLE50LnVuaW9uKHMsRXcscyl9O0tuLl90ZXJyYWluSGVpZ2h0c01heExldmVsPTY7S24uX2RlZmF1bHRNYXhUZXJyYWluSGVpZ2h0PTllMztLbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHQ9LTFlNTtLbi5fdGVycmFpbkhlaWdodHM9TFo/TFo6dm9pZCAwO0tuLl9pbml0UHJvbWlzZT1MWj9uZXcgUHJvbWlzZShmdW5jdGlvbih0KXt0KCl9KTp2b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoS24se2luaXRpYWxpemVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbShLbi5fdGVycmFpbkhlaWdodHMpfX19KTtEbz1Lbn0pO2Z1bmN0aW9uIGxpdCh0KXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksIW0odC5nZW9tZXRyeSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7dGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXMubW9kZWxNYXRyaXg9YXQuY2xvbmUoWih0Lm1vZGVsTWF0cml4LGF0LklERU5USVRZKSksdGhpcy5pZD10LmlkLHRoaXMucGlja1ByaW1pdGl2ZT10LnBpY2tQcmltaXRpdmUsdGhpcy5hdHRyaWJ1dGVzPVoodC5hdHRyaWJ1dGVzLHt9KSx0aGlzLndlc3RIZW1pc3BoZXJlR2VvbWV0cnk9dm9pZCAwLHRoaXMuZWFzdEhlbWlzcGhlcmVHZW9tZXRyeT12b2lkIDB9dmFyIExuLHVBPVMoKCk9PntGdCgpO210KCk7T3QoKTtiaSgpO0xuPWxpdH0pO2Z1bmN0aW9uIGRpdCh0KXtpZih0PVoodCxaLkVNUFRZX09CSkVDVCksIW0odC5jb21wb25lbnREYXRhdHlwZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuY29tcG9uZW50RGF0YXR5cGUgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5jb21wb25lbnRzUGVyQXR0cmlidXRlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIGlzIHJlcXVpcmVkLiIpO2lmKHQuY29tcG9uZW50c1BlckF0dHJpYnV0ZTwxfHx0LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU+NCl0aHJvdyBuZXcgWSgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0LiIpO2lmKCFtKHQudmFsdWUpKXRocm93IG5ldyBZKCJvcHRpb25zLnZhbHVlIGlzIHJlcXVpcmVkLiIpO3RoaXMuY29tcG9uZW50RGF0YXR5cGU9dC5jb21wb25lbnREYXRhdHlwZSx0aGlzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU9dC5jb21wb25lbnRzUGVyQXR0cmlidXRlLHRoaXMubm9ybWFsaXplPVoodC5ub3JtYWxpemUsITEpLHRoaXMudmFsdWU9dC52YWx1ZX12YXIgWnIsbU49UygoKT0+e0Z0KCk7bXQoKTtPdCgpO1pyPWRpdH0pO3ZhciBtaXQsdGksR2w9UygoKT0+e21pdD17Tk9ORTowLEdFT0RFU0lDOjEsUkhVTUI6Mn0sdGk9T2JqZWN0LmZyZWV6ZShtaXQpfSk7ZnVuY3Rpb24gZml0KHQsZSxpLG4pe2lmKHAuZGVmaW5lZCgiZXF1YWxzRXBzaWxvbiIsZSksIW0odCkpcmV0dXJuO2k9WihpLCExKTtsZXQgcz1tKG4pLG89dC5sZW5ndGg7aWYobzwyKXJldHVybiB0O2xldCByLGE9dFswXSxoLEEsZD0wLGY9LTE7Zm9yKHI9MTtyPG87KytyKWg9dFtyXSxlKGEsaCxSdyk/KG0oQSl8fChBPXQuc2xpY2UoMCxyKSxkPXItMSxmPTApLHMmJm4ucHVzaChyKSk6KG0oQSkmJihBLnB1c2goaCksZD1yLHMmJihmPW4ubGVuZ3RoKSksYT1oKTtyZXR1cm4gaSYmZSh0WzBdLHRbby0xXSxSdykmJihzJiYobShBKT9uLnNwbGljZShmLDAsZCk6bi5wdXNoKG8tMSkpLG0oQSk/QS5sZW5ndGgtPTE6QT10LnNsaWNlKDAsLTEpKSxtKEEpP0E6dH12YXIgUncsWG4sU2E9UygoKT0+e2FlKCk7RnQoKTttdCgpO19lKCk7Unc9TC5FUFNJTE9OMTA7WG49Zml0fSk7ZnVuY3Rpb24gRWl0KHQpe2xldCBlPXQuX3VTcXVhcmVkLGk9dC5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsbj10Ll9lbGxpcHNvaWQubWluaW11bVJhZGl1cyxzPShpLW4pL2ksbz1NYXRoLmNvcyh0Ll9zdGFydEhlYWRpbmcpLHI9TWF0aC5zaW4odC5fc3RhcnRIZWFkaW5nKSxhPSgxLXMpKk1hdGgudGFuKHQuX3N0YXJ0LmxhdGl0dWRlKSxoPTEvTWF0aC5zcXJ0KDErYSphKSxBPWgqYSxkPU1hdGguYXRhbjIoYSxvKSxmPWgqcixFPWYqZixfPTEtRSxSPU1hdGguc3FydChfKSxJPWUvNCxDPUkqSSxOPUMqSSxUPUMqQyxiPTErSS0zKkMvNCs1Kk4vNC0xNzUqVC82NCxGPTEtSSsxNSpDLzgtMzUqTi84LEI9MS0zKkkrMzUqQy80LFU9MS01KkksUT1iKmQtRipNYXRoLnNpbigyKmQpKkkvMi1CKk1hdGguc2luKDQqZCkqQy8xNi1VKk1hdGguc2luKDYqZCkqTi80OC1NYXRoLnNpbig4KmQpKjUqVC81MTIsTT10Ll9jb25zdGFudHM7TS5hPWksTS5iPW4sTS5mPXMsTS5jb3NpbmVIZWFkaW5nPW8sTS5zaW5lSGVhZGluZz1yLE0udGFuVT1hLE0uY29zaW5lVT1oLE0uc2luZVU9QSxNLnNpZ21hPWQsTS5zaW5lQWxwaGE9ZixNLnNpbmVTcXVhcmVkQWxwaGE9RSxNLmNvc2luZVNxdWFyZWRBbHBoYT1fLE0uY29zaW5lQWxwaGE9UixNLnUyT3ZlcjQ9SSxNLnU0T3ZlcjE2PUMsTS51Nk92ZXI2ND1OLE0udThPdmVyMjU2PVQsTS5hMD1iLE0uYTE9RixNLmEyPUIsTS5hMz1VLE0uZGlzdGFuY2VSYXRpbz1RfWZ1bmN0aW9uIF9pdCh0LGUpe3JldHVybiB0KmUqKDQrdCooNC0zKmUpKS8xNn1mdW5jdGlvbiBadyh0LGUsaSxuLHMsbyxyKXtsZXQgYT1faXQodCxpKTtyZXR1cm4oMS1hKSp0KmUqKG4rYSpzKihyK2EqbyooMipyKnItMSkpKX1mdW5jdGlvbiBSaXQodCxlLGksbixzLG8scil7bGV0IGE9KGUtaSkvZSxoPW8tbixBPU1hdGguYXRhbigoMS1hKSpNYXRoLnRhbihzKSksZD1NYXRoLmF0YW4oKDEtYSkqTWF0aC50YW4ocikpLGY9TWF0aC5jb3MoQSksRT1NYXRoLnNpbihBKSxfPU1hdGguY29zKGQpLFI9TWF0aC5zaW4oZCksST1mKl8sQz1mKlIsTj1FKlIsVD1FKl8sYj1oLEY9TC5UV09fUEksQj1NYXRoLmNvcyhiKSxVPU1hdGguc2luKGIpLFEsTSxrLHksYztkb3tCPU1hdGguY29zKGIpLFU9TWF0aC5zaW4oYik7bGV0IHR0PUMtVCpCO2s9TWF0aC5zcXJ0KF8qXypVKlUrdHQqdHQpLE09TitJKkIsUT1NYXRoLmF0YW4yKGssTSk7bGV0IEc7az09PTA/KEc9MCx5PTEpOihHPUkqVS9rLHk9MS1HKkcpLEY9YixjPU0tMipOL3ksaXNGaW5pdGUoYyl8fChjPTApLGI9aCtadyhhLEcseSxRLGssTSxjKX13aGlsZShNYXRoLmFicyhiLUYpPkwuRVBTSUxPTjEyKTtsZXQgZz15KihlKmUtaSppKS8oaSppKSxPPTErZyooNDA5NitnKihnKigzMjAtMTc1KmcpLTc2OCkpLzE2Mzg0LEQ9ZyooMjU2K2cqKGcqKDc0LTQ3KmcpLTEyOCkpLzEwMjQsdz1jKmMseD1EKmsqKGMrRCooTSooMip3LTEpLUQqYyooNCprKmstMykqKDQqdy0zKS82KS80KSxIPWkqTyooUS14KSxqPU1hdGguYXRhbjIoXypVLEMtVCpCKSxYPU1hdGguYXRhbjIoZipVLEMqQi1UKTt0Ll9kaXN0YW5jZT1ILHQuX3N0YXJ0SGVhZGluZz1qLHQuX2VuZEhlYWRpbmc9WCx0Ll91U3F1YXJlZD1nfWZ1bmN0aW9uIEl3KHQsZSxpLG4pe2xldCBzPWwubm9ybWFsaXplKG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZSxmTiksWml0KSxvPWwubm9ybWFsaXplKG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaSxmTiksZk4pO3AudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ2YWx1ZSIsTWF0aC5hYnMoTWF0aC5hYnMobC5hbmdsZUJldHdlZW4ocyxvKSktTWF0aC5QSSksLjAxMjUpLFJpdCh0LG4ubWF4aW11bVJhZGl1cyxuLm1pbmltdW1SYWRpdXMsZS5sb25naXR1ZGUsZS5sYXRpdHVkZSxpLmxvbmdpdHVkZSxpLmxhdGl0dWRlKSx0Ll9zdGFydD11dC5jbG9uZShlLHQuX3N0YXJ0KSx0Ll9lbmQ9dXQuY2xvbmUoaSx0Ll9lbmQpLHQuX3N0YXJ0LmhlaWdodD0wLHQuX2VuZC5oZWlnaHQ9MCxFaXQodCl9ZnVuY3Rpb24gakUodCxlLGkpe2xldCBuPVooaSxvdC5XR1M4NCk7dGhpcy5fZWxsaXBzb2lkPW4sdGhpcy5fc3RhcnQ9bmV3IHV0LHRoaXMuX2VuZD1uZXcgdXQsdGhpcy5fY29uc3RhbnRzPXt9LHRoaXMuX3N0YXJ0SGVhZGluZz12b2lkIDAsdGhpcy5fZW5kSGVhZGluZz12b2lkIDAsdGhpcy5fZGlzdGFuY2U9dm9pZCAwLHRoaXMuX3VTcXVhcmVkPXZvaWQgMCxtKHQpJiZtKGUpJiZJdyh0aGlzLHQsZSxuKX12YXIgWml0LGZOLEZJLEVOPVMoKCk9PntIdCgpO3JpKCk7YWUoKTtGdCgpO210KCk7T2UoKTtfZSgpO1ppdD1uZXcgbCxmTj1uZXcgbDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqRS5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LHN1cmZhY2VEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKSx0aGlzLl9kaXN0YW5jZX19LHN0YXJ0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhcnR9fSxlbmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmR9fSxzdGFydEhlYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiBwLmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5fc3RhcnRIZWFkaW5nfX0sZW5kSGVhZGluZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHAuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKSx0aGlzLl9lbmRIZWFkaW5nfX19KTtqRS5wcm90b3R5cGUuc2V0RW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJzdGFydCIsdCkscC5kZWZpbmVkKCJlbmQiLGUpLEl3KHRoaXMsdCxlLHRoaXMuX2VsbGlwc29pZCl9O2pFLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlKHRoaXMuX2Rpc3RhbmNlKnQsZSl9O2pFLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpO2xldCBpPXRoaXMuX2NvbnN0YW50cyxuPWkuZGlzdGFuY2VSYXRpbyt0L2kuYixzPU1hdGguY29zKDIqbiksbz1NYXRoLmNvcyg0Km4pLHI9TWF0aC5jb3MoNipuKSxhPU1hdGguc2luKDIqbiksaD1NYXRoLnNpbig0Km4pLEE9TWF0aC5zaW4oNipuKSxkPU1hdGguc2luKDgqbiksZj1uKm4sRT1uKmYsXz1pLnU4T3ZlcjI1NixSPWkudTJPdmVyNCxJPWkudTZPdmVyNjQsQz1pLnU0T3ZlcjE2LE49MipFKl8qcy8zK24qKDEtUis3KkMvNC0xNSpJLzQrNTc5Kl8vNjQtKEMtMTUqSS80KzE4NypfLzE2KSpzLSg1KkkvNC0xMTUqXy8xNikqby0yOSpfKnIvMTYpKyhSLzItQys3MSpJLzMyLTg1Kl8vMTYpKmErKDUqQy8xNi01KkkvNCszODMqXy85NikqaC1mKigoSS0xMSpfLzIpKmErNSpfKmgvMikrKDI5KkkvOTYtMjkqXy8xNikqQSs1MzkqXypkLzE1MzYsVD1NYXRoLmFzaW4oTWF0aC5zaW4oTikqaS5jb3NpbmVBbHBoYSksYj1NYXRoLmF0YW4oaS5hL2kuYipNYXRoLnRhbihUKSk7Tj1OLWkuc2lnbWE7bGV0IEY9TWF0aC5jb3MoMippLnNpZ21hK04pLEI9TWF0aC5zaW4oTiksVT1NYXRoLmNvcyhOKSxRPWkuY29zaW5lVSpVLE09aS5zaW5lVSpCLHk9TWF0aC5hdGFuMihCKmkuc2luZUhlYWRpbmcsUS1NKmkuY29zaW5lSGVhZGluZyktWncoaS5mLGkuc2luZUFscGhhLGkuY29zaW5lU3F1YXJlZEFscGhhLE4sQixVLEYpO3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT10aGlzLl9zdGFydC5sb25naXR1ZGUreSxlLmxhdGl0dWRlPWIsZS5oZWlnaHQ9MCxlKTpuZXcgdXQodGhpcy5fc3RhcnQubG9uZ2l0dWRlK3ksYiwwKX07Rkk9akV9KTtmdW5jdGlvbiBSTih0LGUsaSl7aWYodD09PTApcmV0dXJuIGUqaTtsZXQgbj10KnQscz1uKm4sbz1zKm4scj1vKm4sYT1yKm4saD1hKm4sQT1pLGQ9TWF0aC5zaW4oMipBKSxmPU1hdGguc2luKDQqQSksRT1NYXRoLnNpbig2KkEpLF89TWF0aC5zaW4oOCpBKSxSPU1hdGguc2luKDEwKkEpLEk9TWF0aC5zaW4oMTIqQSk7cmV0dXJuIGUqKCgxLW4vNC0zKnMvNjQtNSpvLzI1Ni0xNzUqci8xNjM4NC00NDEqYS82NTUzNi00ODUxKmgvMTA0ODU3NikqQS0oMypuLzgrMypzLzMyKzQ1Km8vMTAyNCsxMDUqci80MDk2KzIyMDUqYS8xMzEwNzIrNjIzNypoLzUyNDI4OCkqZCsoMTUqcy8yNTYrNDUqby8xMDI0KzUyNSpyLzE2Mzg0KzE1NzUqYS82NTUzNisxNTU5MjUqaC84Mzg4NjA4KSpmLSgzNSpvLzMwNzIrMTc1KnIvMTIyODgrMzY3NSphLzI2MjE0NCsxMzQ3NSpoLzEwNDg1NzYpKkUrKDMxNSpyLzEzMTA3MisyMjA1KmEvNTI0Mjg4KzQzNjU5KmgvODM4ODYwOCkqXy0oNjkzKmEvMTMxMDcyMCs2MjM3KmgvNTI0Mjg4MCkqUisxMDAxKmgvODM4ODYwOCpJKX1mdW5jdGlvbiBJaXQodCxlLGkpe2xldCBuPXQvaTtpZihlPT09MClyZXR1cm4gbjtsZXQgcz1uKm4sbz1zKm4scj1vKm4sYT1lLGg9YSphLEE9aCpoLGQ9QSpoLGY9ZCpoLEU9ZipoLF89RSpoLFI9TWF0aC5zaW4oMipuKSxJPU1hdGguY29zKDIqbiksQz1NYXRoLnNpbig0Km4pLE49TWF0aC5jb3MoNCpuKSxUPU1hdGguc2luKDYqbiksYj1NYXRoLmNvcyg2Km4pLEY9TWF0aC5zaW4oOCpuKSxCPU1hdGguY29zKDgqbiksVT1NYXRoLnNpbigxMCpuKSxRPU1hdGguY29zKDEwKm4pLE09TWF0aC5zaW4oMTIqbik7cmV0dXJuIG4rbipoLzQrNypuKkEvNjQrMTUqbipkLzI1Nis1NzkqbipmLzE2Mzg0KzE1MTUqbipFLzY1NTM2KzE2ODM3Km4qXy8xMDQ4NTc2KygzKm4qQS8xNis0NSpuKmQvMjU2LW4qKDMyKnMtNTYxKSpmLzQwOTYtbiooMjMyKnMtMTY3NykqRS8xNjM4NCtuKigzOTk5ODUtOTA1NjAqcys1MTIqcikqXy81MjQyODgwKSpJKygyMSpuKmQvMjU2KzQ4MypuKmYvNDA5Ni1uKigyMjQqcy0xOTY5KSpFLzE2Mzg0LW4qKDMzMTUyKnMtMTEyNTk5KSpfLzEwNDg1NzYpKk4rKDE1MSpuKmYvNDA5Nis0NjgxKm4qRS82NTUzNisxNDc5Km4qXy8xNjM4NC00NTMqbypfLzMyNzY4KSpiKygxMDk3Km4qRS82NTUzNis0Mjc4MypuKl8vMTA0ODU3NikqQis4MDExKm4qXy8xMDQ4NTc2KlErKDMqaC84KzMqQS8xNisyMTMqZC8yMDQ4LTMqcypkLzY0KzI1NSpmLzQwOTYtMzMqcypmLzUxMisyMDg2MSpFLzUyNDI4OC0zMypzKkUvNTEyK3IqRS8xMDI0KzI4MjczKl8vMTA0ODU3Ni00NzEqcypfLzgxOTIrOSpyKl8vNDA5NikqUisoMjEqQS8yNTYrMjEqZC8yNTYrNTMzKmYvODE5Mi0yMSpzKmYvNTEyKzE5NypFLzQwOTYtMzE1KnMqRS80MDk2KzU4NDAzOSpfLzE2Nzc3MjE2LTEyNTE3KnMqXy8xMzEwNzIrNypyKl8vMjA0OCkqQysoMTUxKmQvNjE0NCsxNTEqZi80MDk2KzUwMTkqRS8xMzEwNzItNDUzKnMqRS8xNjM4NCsyNjk2NSpfLzc4NjQzMi04NjA3KnMqXy8xMzEwNzIpKlQrKDEwOTcqZi8xMzEwNzIrMTA5NypFLzY1NTM2KzIyNTc5NypfLzEwNDg1NzYwLTEwOTcqcypfLzY1NTM2KSpGKyg4MDExKkUvMjYyMTQ0MCs4MDExKl8vMTA0ODU3NikqVSsyOTMzOTMqXy8yNTE2NTgyNDAqTX1mdW5jdGlvbiBQbSh0LGUpe2lmKHQ9PT0wKXJldHVybiBNYXRoLmxvZyhNYXRoLnRhbiguNSooTC5QSV9PVkVSX1RXTytlKSkpO2xldCBpPXQqTWF0aC5zaW4oZSk7cmV0dXJuIE1hdGgubG9nKE1hdGgudGFuKC41KihMLlBJX09WRVJfVFdPK2UpKSktdC8yKk1hdGgubG9nKCgxK2kpLygxLWkpKX1mdW5jdGlvbiBwaXQodCxlLGksbixzKXtsZXQgbz1QbSh0Ll9lbGxpcHRpY2l0eSxpKSxyPVBtKHQuX2VsbGlwdGljaXR5LHMpO3JldHVybiBNYXRoLmF0YW4yKEwubmVnYXRpdmVQaVRvUGkobi1lKSxyLW8pfWZ1bmN0aW9uIHVpdCh0LGUsaSxuLHMsbyxyKXtsZXQgYT10Ll9oZWFkaW5nLGg9by1uLEE9MDtpZihMLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoYSksTC5QSV9PVkVSX1RXTyxMLkVQU0lMT044KSlpZihlPT09aSlBPWUqTWF0aC5jb3MocykqTC5uZWdhdGl2ZVBpVG9QaShoKTtlbHNle2xldCBkPU1hdGguc2luKHMpO0E9ZSpNYXRoLmNvcyhzKSpMLm5lZ2F0aXZlUGlUb1BpKGgpL01hdGguc3FydCgxLXQuX2VsbGlwdGljaXR5U3F1YXJlZCpkKmQpfWVsc2V7bGV0IGQ9Uk4odC5fZWxsaXB0aWNpdHksZSxzKTtBPShSTih0Ll9lbGxpcHRpY2l0eSxlLHIpLWQpL01hdGguY29zKGEpfXJldHVybiBNYXRoLmFicyhBKX1mdW5jdGlvbiBwdyh0LGUsaSxuKXtsZXQgcz1sLm5vcm1hbGl6ZShuLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGUsX04pLENpdCksbz1sLm5vcm1hbGl6ZShuLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGksX04pLF9OKTtwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygidmFsdWUiLE1hdGguYWJzKE1hdGguYWJzKGwuYW5nbGVCZXR3ZWVuKHMsbykpLU1hdGguUEkpLC4wMTI1KTtsZXQgcj1uLm1heGltdW1SYWRpdXMsYT1uLm1pbmltdW1SYWRpdXMsaD1yKnIsQT1hKmE7dC5fZWxsaXB0aWNpdHlTcXVhcmVkPShoLUEpL2gsdC5fZWxsaXB0aWNpdHk9TWF0aC5zcXJ0KHQuX2VsbGlwdGljaXR5U3F1YXJlZCksdC5fc3RhcnQ9dXQuY2xvbmUoZSx0Ll9zdGFydCksdC5fc3RhcnQuaGVpZ2h0PTAsdC5fZW5kPXV0LmNsb25lKGksdC5fZW5kKSx0Ll9lbmQuaGVpZ2h0PTAsdC5faGVhZGluZz1waXQodCxlLmxvbmdpdHVkZSxlLmxhdGl0dWRlLGkubG9uZ2l0dWRlLGkubGF0aXR1ZGUpLHQuX2Rpc3RhbmNlPXVpdCh0LG4ubWF4aW11bVJhZGl1cyxuLm1pbmltdW1SYWRpdXMsZS5sb25naXR1ZGUsZS5sYXRpdHVkZSxpLmxvbmdpdHVkZSxpLmxhdGl0dWRlKX1mdW5jdGlvbiB1dyh0LGUsaSxuLHMsbyl7aWYoaT09PTApcmV0dXJuIHV0LmNsb25lKHQsbyk7bGV0IHI9cypzLGEsaCxBO2lmKE1hdGguYWJzKEwuUElfT1ZFUl9UV08tTWF0aC5hYnMoZSkpPkwuRVBTSUxPTjgpe2xldCBkPVJOKHMsbix0LmxhdGl0dWRlKSxmPWkqTWF0aC5jb3MoZSksRT1kK2Y7aWYoaD1JaXQoRSxzLG4pLE1hdGguYWJzKGUpPEwuRVBTSUxPTjEwKWE9TC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZSk7ZWxzZXtsZXQgXz1QbShzLHQubGF0aXR1ZGUpLFI9UG0ocyxoKTtBPU1hdGgudGFuKGUpKihSLV8pLGE9TC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZStBKX19ZWxzZXtoPXQubGF0aXR1ZGU7bGV0IGQ7aWYocz09PTApZD1uKk1hdGguY29zKHQubGF0aXR1ZGUpO2Vsc2V7bGV0IGY9TWF0aC5zaW4odC5sYXRpdHVkZSk7ZD1uKk1hdGguY29zKHQubGF0aXR1ZGUpL01hdGguc3FydCgxLXIqZipmKX1BPWkvZCxlPjA/YT1MLm5lZ2F0aXZlUGlUb1BpKHQubG9uZ2l0dWRlK0EpOmE9TC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZS1BKX1yZXR1cm4gbShvKT8oby5sb25naXR1ZGU9YSxvLmxhdGl0dWRlPWgsby5oZWlnaHQ9MCxvKTpuZXcgdXQoYSxoLDApfWZ1bmN0aW9uIG1oKHQsZSxpKXtsZXQgbj1aKGksb3QuV0dTODQpO3RoaXMuX2VsbGlwc29pZD1uLHRoaXMuX3N0YXJ0PW5ldyB1dCx0aGlzLl9lbmQ9bmV3IHV0LHRoaXMuX2hlYWRpbmc9dm9pZCAwLHRoaXMuX2Rpc3RhbmNlPXZvaWQgMCx0aGlzLl9lbGxpcHRpY2l0eT12b2lkIDAsdGhpcy5fZWxsaXB0aWNpdHlTcXVhcmVkPXZvaWQgMCxtKHQpJiZtKGUpJiZwdyh0aGlzLHQsZSxuKX12YXIgQ2l0LF9OLGVyLEhFPVMoKCk9PntIdCgpO3JpKCk7YWUoKTtGdCgpO210KCk7T3QoKTtPZSgpO19lKCk7Q2l0PW5ldyBsLF9OPW5ldyBsO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG1oLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzb2lkfX0sc3VyZmFjZURpc3RhbmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpLHRoaXMuX2Rpc3RhbmNlfX0sc3RhcnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGFydH19LGVuZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VuZH19LGhlYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiBwLmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5faGVhZGluZ319fSk7bWguZnJvbVN0YXJ0SGVhZGluZ0Rpc3RhbmNlPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC5kZWZpbmVkKCJzdGFydCIsdCkscC5kZWZpbmVkKCJoZWFkaW5nIixlKSxwLmRlZmluZWQoImRpc3RhbmNlIixpKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oImRpc3RhbmNlIixpLDApO2xldCBvPVoobixvdC5XR1M4NCkscj1vLm1heGltdW1SYWRpdXMsYT1vLm1pbmltdW1SYWRpdXMsaD1yKnIsQT1hKmEsZD1NYXRoLnNxcnQoKGgtQSkvaCk7ZT1MLm5lZ2F0aXZlUGlUb1BpKGUpO2xldCBmPXV3KHQsZSxpLG8ubWF4aW11bVJhZGl1cyxkKTtyZXR1cm4hbShzKXx8bShuKSYmIW4uZXF1YWxzKHMuZWxsaXBzb2lkKT9uZXcgbWgodCxmLG8pOihzLnNldEVuZFBvaW50cyh0LGYpLHMpfTttaC5wcm90b3R5cGUuc2V0RW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJzdGFydCIsdCkscC5kZWZpbmVkKCJlbmQiLGUpLHB3KHRoaXMsdCxlLHRoaXMuX2VsbGlwc29pZCl9O21oLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlKHQqdGhpcy5fZGlzdGFuY2UsZSl9O21oLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7aWYocC50eXBlT2YubnVtYmVyKCJkaXN0YW5jZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IFkoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7cmV0dXJuIHV3KHRoaXMuX3N0YXJ0LHRoaXMuX2hlYWRpbmcsdCx0aGlzLl9lbGxpcHNvaWQubWF4aW11bVJhZGl1cyx0aGlzLl9lbGxpcHRpY2l0eSxlKX07bWgucHJvdG90eXBlLmZpbmRJbnRlcnNlY3Rpb25XaXRoTG9uZ2l0dWRlPWZ1bmN0aW9uKHQsZSl7aWYocC50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25Mb25naXR1ZGUiLHQpLCFtKHRoaXMuX2Rpc3RhbmNlKXx8dGhpcy5fZGlzdGFuY2U9PT0wKXRocm93IG5ldyBZKCJFbGxpcHNvaWRSaHVtYkxpbmUgbXVzdCBoYXZlIGRpc3RpbmN0IHN0YXJ0IGFuZCBlbmQgc2V0LiIpO2xldCBpPXRoaXMuX2VsbGlwdGljaXR5LG49dGhpcy5faGVhZGluZyxzPU1hdGguYWJzKG4pLG89dGhpcy5fc3RhcnQ7aWYodD1MLm5lZ2F0aXZlUGlUb1BpKHQpLEwuZXF1YWxzRXBzaWxvbihNYXRoLmFicyh0KSxNYXRoLlBJLEwuRVBTSUxPTjE0KSYmKHQ9TC5zaWduKG8ubG9uZ2l0dWRlKSpNYXRoLlBJKSxtKGUpfHwoZT1uZXcgdXQpLE1hdGguYWJzKEwuUElfT1ZFUl9UV08tcyk8PUwuRVBTSUxPTjgpcmV0dXJuIGUubG9uZ2l0dWRlPXQsZS5sYXRpdHVkZT1vLmxhdGl0dWRlLGUuaGVpZ2h0PTAsZTtpZihMLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoTC5QSV9PVkVSX1RXTy1zKSxMLlBJX09WRVJfVFdPLEwuRVBTSUxPTjgpKXJldHVybiBMLmVxdWFsc0Vwc2lsb24odCxvLmxvbmdpdHVkZSxMLkVQU0lMT04xMik/dm9pZCAwOihlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9TC5QSV9PVkVSX1RXTypMLnNpZ24oTC5QSV9PVkVSX1RXTy1uKSxlLmhlaWdodD0wLGUpO2xldCByPW8ubGF0aXR1ZGUsYT1pKk1hdGguc2luKHIpLGg9TWF0aC50YW4oLjUqKEwuUElfT1ZFUl9UV08rcikpKk1hdGguZXhwKCh0LW8ubG9uZ2l0dWRlKS9NYXRoLnRhbihuKSksQT0oMSthKS8oMS1hKSxkPW8ubGF0aXR1ZGUsZjtkb3tmPWQ7bGV0IEU9aSpNYXRoLnNpbihmKSxfPSgxK0UpLygxLUUpO2Q9MipNYXRoLmF0YW4oaCpNYXRoLnBvdyhfL0EsaS8yKSktTC5QSV9PVkVSX1RXT313aGlsZSghTC5lcXVhbHNFcHNpbG9uKGQsZixMLkVQU0lMT04xMikpO3JldHVybiBlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9ZCxlLmhlaWdodD0wLGV9O21oLnByb3RvdHlwZS5maW5kSW50ZXJzZWN0aW9uV2l0aExhdGl0dWRlPWZ1bmN0aW9uKHQsZSl7aWYocC50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25MYXRpdHVkZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IFkoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7bGV0IGk9dGhpcy5fZWxsaXB0aWNpdHksbj10aGlzLl9oZWFkaW5nLHM9dGhpcy5fc3RhcnQ7aWYoTC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKG4pLEwuUElfT1ZFUl9UV08sTC5FUFNJTE9OOCkpcmV0dXJuO2xldCBvPVBtKGkscy5sYXRpdHVkZSkscj1QbShpLHQpLGE9TWF0aC50YW4obikqKHItbyksaD1MLm5lZ2F0aXZlUGlUb1BpKHMubG9uZ2l0dWRlK2EpO3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT1oLGUubGF0aXR1ZGU9dCxlLmhlaWdodD0wLGUpOm5ldyB1dChoLHQsMCl9O2VyPW1ofSk7ZnVuY3Rpb24gZ2l0KHQpe2lmKHQ9Wih0LFouRU1QVFlfT0JKRUNUKSwhbSh0LmNvbXBvbmVudERhdGF0eXBlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5jb21wb25lbnREYXRhdHlwZSBpcyByZXF1aXJlZC4iKTtpZighbSh0LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUpKXRocm93IG5ldyBZKCJvcHRpb25zLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUgaXMgcmVxdWlyZWQuIik7aWYodC5jb21wb25lbnRzUGVyQXR0cmlidXRlPDF8fHQuY29tcG9uZW50c1BlckF0dHJpYnV0ZT40KXRocm93IG5ldyBZKCJvcHRpb25zLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQuIik7aWYoIW0odC52YWx1ZXMpKXRocm93IG5ldyBZKCJvcHRpb25zLnZhbHVlcyBpcyByZXF1aXJlZC4iKTt0aGlzLmNvbXBvbmVudERhdGF0eXBlPXQuY29tcG9uZW50RGF0YXR5cGUsdGhpcy5jb21wb25lbnRzUGVyQXR0cmlidXRlPXQuY29tcG9uZW50c1BlckF0dHJpYnV0ZSx0aGlzLm5vcm1hbGl6ZT1aKHQubm9ybWFsaXplLCExKSx0aGlzLnZhbHVlcz10LnZhbHVlc312YXIgVHQsamk9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO1R0PWdpdH0pO2Z1bmN0aW9uIEN3KHQsZSxpKXtsZXQgbj10K2U7cmV0dXJuIEwuc2lnbih0KSE9PUwuc2lnbihlKSYmTWF0aC5hYnMobi9NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSkpPGk/MDpufXZhciBaTixQcixiST1TKCgpPT57T3QoKTtfZSgpO1pOPXt9O1pOLmNvbXB1dGVEaXNjcmltaW5hbnQ9ZnVuY3Rpb24odCxlLGkpe2lmKHR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IFkoImIgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBZKCJjIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO3JldHVybiBlKmUtNCp0Kml9O1pOLmNvbXB1dGVSZWFsUm9vdHM9ZnVuY3Rpb24odCxlLGkpe2lmKHR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IFkoImIgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBZKCJjIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2xldCBuO2lmKHQ9PT0wKXJldHVybiBlPT09MD9bXTpbLWkvZV07aWYoZT09PTApe2lmKGk9PT0wKXJldHVyblswLDBdO2xldCBoPU1hdGguYWJzKGkpLEE9TWF0aC5hYnModCk7aWYoaDxBJiZoL0E8TC5FUFNJTE9OMTQpcmV0dXJuWzAsMF07aWYoaD5BJiZBL2g8TC5FUFNJTE9OMTQpcmV0dXJuW107aWYobj0taS90LG48MClyZXR1cm5bXTtsZXQgZD1NYXRoLnNxcnQobik7cmV0dXJuWy1kLGRdfWVsc2UgaWYoaT09PTApcmV0dXJuIG49LWUvdCxuPDA/W24sMF06WzAsbl07bGV0IHM9ZSplLG89NCp0Kmkscj1DdyhzLC1vLEwuRVBTSUxPTjE0KTtpZihyPDApcmV0dXJuW107bGV0IGE9LS41KkN3KGUsTC5zaWduKGUpKk1hdGguc3FydChyKSxMLkVQU0lMT04xNCk7cmV0dXJuIGU+MD9bYS90LGkvYV06W2kvYSxhL3RdfTtQcj1aTn0pO2Z1bmN0aW9uIElOKHQsZSxpLG4pe2xldCBzPXQsbz1lLzMscj1pLzMsYT1uLGg9cypyLEE9byphLGQ9bypvLGY9cipyLEU9cypyLWQsXz1zKmEtbypyLFI9byphLWYsST00KkUqUi1fKl8sQyxOO2lmKEk8MCl7bGV0IEcsSXQsZ3Q7ZCpBPj1oKmY/KEc9cyxJdD1FLGd0PS0yKm8qRStzKl8pOihHPWEsSXQ9UixndD0tYSpfKzIqcipSKTtsZXQgVXQ9LShndDwwPy0xOjEpKk1hdGguYWJzKEcpKk1hdGguc3FydCgtSSk7Tj0tZ3QrVXQ7bGV0IEN0PU4vMix6dD1DdDwwPy1NYXRoLnBvdygtQ3QsMS8zKTpNYXRoLnBvdyhDdCwxLzMpLGt0PU49PT1VdD8tenQ6LUl0L3p0O3JldHVybiBDPUl0PD0wP3p0K2t0Oi1ndC8oenQqenQra3Qqa3QrSXQpLGQqQT49aCpmP1soQy1vKS9zXTpbLWEvKEMrcildfWxldCBUPUUsYj0tMipvKkUrcypfLEY9UixCPS1hKl8rMipyKlIsVT1NYXRoLnNxcnQoSSksUT1NYXRoLnNxcnQoMykvMixNPU1hdGguYWJzKE1hdGguYXRhbjIocypVLC1iKS8zKTtDPTIqTWF0aC5zcXJ0KC1UKTtsZXQgaz1NYXRoLmNvcyhNKTtOPUMqaztsZXQgeT1DKigtay8yLVEqTWF0aC5zaW4oTSkpLGM9Tit5PjIqbz9OLW86eS1vLGc9cyxPPWMvZztNPU1hdGguYWJzKE1hdGguYXRhbjIoYSpVLC1CKS8zKSxDPTIqTWF0aC5zcXJ0KC1GKSxrPU1hdGguY29zKE0pLE49QyprLHk9QyooLWsvMi1RKk1hdGguc2luKE0pKTtsZXQgRD0tYSx3PU4reTwyKnI/TityOnkrcix4PUQvdyxIPWcqdyxqPS1jKnctZypELFg9YypELHR0PShyKmotbypYKS8oLW8qaityKkgpO3JldHVybiBPPD10dD9PPD14P3R0PD14P1tPLHR0LHhdOltPLHgsdHRdOlt4LE8sdHRdOk88PXg/W3R0LE8seF06dHQ8PXg/W3R0LHgsT106W3gsdHQsT119dmFyIHBOLFlJLGd3PVMoKCk9PntPdCgpO2JJKCk7cE49e307cE4uY29tcHV0ZURpc2NyaW1pbmFudD1mdW5jdGlvbih0LGUsaSxuKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBZKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBpIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7bGV0IHM9dCp0LG89ZSplLHI9aSppLGE9bipuO3JldHVybiAxOCp0KmUqaSpuK28qci0yNypzKmEtNCoodCpyKmkrbyplKm4pfTtwTi5jb21wdXRlUmVhbFJvb3RzPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKHR5cGVvZiB0IT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgZSE9Im51bWJlciIpdGhyb3cgbmV3IFkoImIgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBZKCJjIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBuIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiZCBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtsZXQgcyxvO2lmKHQ9PT0wKXJldHVybiBQci5jb21wdXRlUmVhbFJvb3RzKGUsaSxuKTtpZihlPT09MCl7aWYoaT09PTApe2lmKG49PT0wKXJldHVyblswLDAsMF07bz0tbi90O2xldCByPW88MD8tTWF0aC5wb3coLW8sMS8zKTpNYXRoLnBvdyhvLDEvMyk7cmV0dXJuW3IscixyXX1lbHNlIGlmKG49PT0wKXJldHVybiBzPVByLmNvbXB1dGVSZWFsUm9vdHModCwwLGkpLHMuTGVuZ3RoPT09MD9bMF06W3NbMF0sMCxzWzFdXTtyZXR1cm4gSU4odCwwLGksbil9ZWxzZXtpZihpPT09MClyZXR1cm4gbj09PTA/KG89LWUvdCxvPDA/W28sMCwwXTpbMCwwLG9dKTpJTih0LGUsMCxuKTtpZihuPT09MClyZXR1cm4gcz1Qci5jb21wdXRlUmVhbFJvb3RzKHQsZSxpKSxzLmxlbmd0aD09PTA/WzBdOnNbMV08PTA/W3NbMF0sc1sxXSwwXTpzWzBdPj0wP1swLHNbMF0sc1sxXV06W3NbMF0sMCxzWzFdXX1yZXR1cm4gSU4odCxlLGksbil9O1lJPXBOfSk7ZnVuY3Rpb24gT2EodCxlLGksbil7bGV0IHM9dCp0LG89ZS0zKnMvOCxyPWktZSp0LzIrcyp0LzgsYT1uLWkqdC80K2Uqcy8xNi0zKnMqcy8yNTYsaD1ZSS5jb21wdXRlUmVhbFJvb3RzKDEsMipvLG8qby00KmEsLXIqcik7aWYoaC5sZW5ndGg+MCl7bGV0IEE9LXQvNCxkPWhbaC5sZW5ndGgtMV07aWYoTWF0aC5hYnMoZCk8TC5FUFNJTE9OMTQpe2xldCBmPVByLmNvbXB1dGVSZWFsUm9vdHMoMSxvLGEpO2lmKGYubGVuZ3RoPT09Mil7bGV0IEU9ZlswXSxfPWZbMV0sUjtpZihFPj0wJiZfPj0wKXtsZXQgST1NYXRoLnNxcnQoRSksQz1NYXRoLnNxcnQoXyk7cmV0dXJuW0EtQyxBLUksQStJLEErQ119ZWxzZXtpZihFPj0wJiZfPDApcmV0dXJuIFI9TWF0aC5zcXJ0KEUpLFtBLVIsQStSXTtpZihFPDAmJl8+PTApcmV0dXJuIFI9TWF0aC5zcXJ0KF8pLFtBLVIsQStSXX19cmV0dXJuW119ZWxzZSBpZihkPjApe2xldCBmPU1hdGguc3FydChkKSxFPShvK2Qtci9mKS8yLF89KG8rZCtyL2YpLzIsUj1Qci5jb21wdXRlUmVhbFJvb3RzKDEsZixFKSxJPVByLmNvbXB1dGVSZWFsUm9vdHMoMSwtZixfKTtyZXR1cm4gUi5sZW5ndGghPT0wPyhSWzBdKz1BLFJbMV0rPUEsSS5sZW5ndGghPT0wPyhJWzBdKz1BLElbMV0rPUEsUlsxXTw9SVswXT9bUlswXSxSWzFdLElbMF0sSVsxXV06SVsxXTw9UlswXT9bSVswXSxJWzFdLFJbMF0sUlsxXV06UlswXT49SVswXSYmUlsxXTw9SVsxXT9bSVswXSxSWzBdLFJbMV0sSVsxXV06SVswXT49UlswXSYmSVsxXTw9UlsxXT9bUlswXSxJWzBdLElbMV0sUlsxXV06UlswXT5JWzBdJiZSWzBdPElbMV0/W0lbMF0sUlswXSxJWzFdLFJbMV1dOltSWzBdLElbMF0sUlsxXSxJWzFdXSk6Uik6SS5sZW5ndGghPT0wPyhJWzBdKz1BLElbMV0rPUEsSSk6W119fXJldHVybltdfWZ1bmN0aW9uIHZFKHQsZSxpLG4pe2xldCBzPWkqaSxvPWUqZSxyPXQqdCxhPS0yKmUsaD1pKnQrby00Km4sQT1yKm4taSplKnQrcyxkPVlJLmNvbXB1dGVSZWFsUm9vdHMoMSxhLGgsQSk7aWYoZC5sZW5ndGg+MCl7bGV0IGY9ZFswXSxFPWUtZixfPUUqRSxSPXQvMixJPUUvMixDPV8tNCpuLE49Xys0Kk1hdGguYWJzKG4pLFQ9ci00KmYsYj1yKzQqTWF0aC5hYnMoZiksRixCO2lmKGY8MHx8QypiPFQqTil7bGV0IGc9TWF0aC5zcXJ0KFQpO0Y9Zy8yLEI9Zz09PTA/MDoodCpJLWkpL2d9ZWxzZXtsZXQgZz1NYXRoLnNxcnQoQyk7Rj1nPT09MD8wOih0KkktaSkvZyxCPWcvMn1sZXQgVSxRO1I9PT0wJiZGPT09MD8oVT0wLFE9MCk6TC5zaWduKFIpPT09TC5zaWduKEYpPyhVPVIrRixRPWYvVSk6KFE9Ui1GLFU9Zi9RKTtsZXQgTSxrO0k9PT0wJiZCPT09MD8oTT0wLGs9MCk6TC5zaWduKEkpPT09TC5zaWduKEIpPyhNPUkrQixrPW4vTSk6KGs9SS1CLE09bi9rKTtsZXQgeT1Qci5jb21wdXRlUmVhbFJvb3RzKDEsVSxNKSxjPVByLmNvbXB1dGVSZWFsUm9vdHMoMSxRLGspO2lmKHkubGVuZ3RoIT09MClyZXR1cm4gYy5sZW5ndGghPT0wP3lbMV08PWNbMF0/W3lbMF0seVsxXSxjWzBdLGNbMV1dOmNbMV08PXlbMF0/W2NbMF0sY1sxXSx5WzBdLHlbMV1dOnlbMF0+PWNbMF0mJnlbMV08PWNbMV0/W2NbMF0seVswXSx5WzFdLGNbMV1dOmNbMF0+PXlbMF0mJmNbMV08PXlbMV0/W3lbMF0sY1swXSxjWzFdLHlbMV1dOnlbMF0+Y1swXSYmeVswXTxjWzFdP1tjWzBdLHlbMF0sY1sxXSx5WzFdXTpbeVswXSxjWzBdLHlbMV0sY1sxXV06eTtpZihjLmxlbmd0aCE9PTApcmV0dXJuIGN9cmV0dXJuW119dmFyIHVOLFR3LE53PVMoKCk9PntndygpO090KCk7X2UoKTtiSSgpO3VOPXt9O3VOLmNvbXB1dGVEaXNjcmltaW5hbnQ9ZnVuY3Rpb24odCxlLGksbixzKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBZKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBpIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIHMhPSJudW1iZXIiKXRocm93IG5ldyBZKCJlIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2xldCBvPXQqdCxyPW8qdCxhPWUqZSxoPWEqZSxBPWkqaSxkPUEqaSxmPW4qbixFPWYqbixfPXMqcyxSPV8qcztyZXR1cm4gYSpBKmYtNCpoKkUtNCp0KmQqZisxOCp0KmUqaSpFLTI3Km8qZipmKzI1NipyKlIrcyooMTgqaCppKm4tNCphKmQrMTYqdCpBKkEtODAqdCplKkEqbi02KnQqYSpmKzE0NCpvKmkqZikrXyooMTQ0KnQqYSppLTI3KmEqYS0xMjgqbypBLTE5MipvKmUqbil9O3VOLmNvbXB1dGVSZWFsUm9vdHM9ZnVuY3Rpb24odCxlLGksbixzKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFkoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBZKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBpIT0ibnVtYmVyIil0aHJvdyBuZXcgWSgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIHMhPSJudW1iZXIiKXRocm93IG5ldyBZKCJlIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKE1hdGguYWJzKHQpPEwuRVBTSUxPTjE1KXJldHVybiBZSS5jb21wdXRlUmVhbFJvb3RzKGUsaSxuLHMpO2xldCBvPWUvdCxyPWkvdCxhPW4vdCxoPXMvdCxBPW88MD8xOjA7c3dpdGNoKEErPXI8MD9BKzE6QSxBKz1hPDA/QSsxOkEsQSs9aDwwP0ErMTpBLEEpe2Nhc2UgMDpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSAxOnJldHVybiB2RShvLHIsYSxoKTtjYXNlIDI6cmV0dXJuIHZFKG8scixhLGgpO2Nhc2UgMzpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSA0OnJldHVybiBPYShvLHIsYSxoKTtjYXNlIDU6cmV0dXJuIHZFKG8scixhLGgpO2Nhc2UgNjpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSA3OnJldHVybiBPYShvLHIsYSxoKTtjYXNlIDg6cmV0dXJuIHZFKG8scixhLGgpO2Nhc2UgOTpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSAxMDpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSAxMTpyZXR1cm4gdkUobyxyLGEsaCk7Y2FzZSAxMjpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSAxMzpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSAxNDpyZXR1cm4gT2EobyxyLGEsaCk7Y2FzZSAxNTpyZXR1cm4gT2EobyxyLGEsaCk7ZGVmYXVsdDpyZXR1cm59fTtUdz11Tn0pO2Z1bmN0aW9uIFZJKHQsZSl7ZT1sLmNsb25lKFooZSxsLlpFUk8pKSxsLmVxdWFscyhlLGwuWkVSTyl8fGwubm9ybWFsaXplKGUsZSksdGhpcy5vcmlnaW49bC5jbG9uZShaKHQsbC5aRVJPKSksdGhpcy5kaXJlY3Rpb249ZX12YXIgV2wsU0k9UygoKT0+e0h0KCk7YWUoKTtGdCgpO210KCk7VkkuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLm9yaWdpbj1sLmNsb25lKHQub3JpZ2luKSxlLmRpcmVjdGlvbj1sLmNsb25lKHQuZGlyZWN0aW9uKSxlKTpuZXcgVkkodC5vcmlnaW4sdC5kaXJlY3Rpb24pfTtWSS5nZXRQb2ludD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicmF5Iix0KSxwLnR5cGVPZi5udW1iZXIoInQiLGUpLG0oaSl8fChpPW5ldyBsKSxpPWwubXVsdGlwbHlCeVNjYWxhcih0LmRpcmVjdGlvbixlLGkpLGwuYWRkKHQub3JpZ2luLGksaSl9O1dsPVZJfSk7ZnVuY3Rpb24gYml0KHQsZSxpLG4pe2xldCBzPWUqZS00KnQqaTtpZihzPDApcmV0dXJuO2lmKHM+MCl7bGV0IHI9MS8oMip0KSxhPU1hdGguc3FydChzKSxoPSgtZSthKSpyLEE9KC1lLWEpKnI7cmV0dXJuIGg8QT8obi5yb290MD1oLG4ucm9vdDE9QSk6KG4ucm9vdDA9QSxuLnJvb3QxPWgpLG59bGV0IG89LWUvKDIqdCk7aWYobyE9PTApcmV0dXJuIG4ucm9vdDA9bi5yb290MT1vLG59ZnVuY3Rpb24gV3codCxlLGkpe20oaSl8fChpPW5ldyBjQSk7bGV0IG49dC5vcmlnaW4scz10LmRpcmVjdGlvbixvPWUuY2VudGVyLHI9ZS5yYWRpdXMqZS5yYWRpdXMsYT1sLnN1YnRyYWN0KG4sbyxHdyksaD1sLmRvdChzLHMpLEE9MipsLmRvdChzLGEpLGQ9bC5tYWduaXR1ZGVTcXVhcmVkKGEpLXIsZj1iaXQoaCxBLGQsWWl0KTtpZihtKGYpKXJldHVybiBpLnN0YXJ0PWYucm9vdDAsaS5zdG9wPWYucm9vdDEsaX1mdW5jdGlvbiBEbCh0LGUsaSl7bGV0IG49dCtlO3JldHVybiBMLnNpZ24odCkhPT1MLnNpZ24oZSkmJk1hdGguYWJzKG4vTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKTxpPzA6bn12YXIgVm4sVGl0LE5pdCxHdyxGdyxidyxGaXQsWWl0LFZpdCxTaXQsT2l0LENOLFl3LFZ3LE9JLEJpdCxHaXQsV2l0LERpdCxVaXQsTWl0LFN3LE93LEJ3LFFpdCxraXQsTGl0LG5vLFVsPVMoKCk9PntIdCgpO3JpKCk7RnQoKTttdCgpO090KCk7SFooKTtfZSgpO2RuKCk7YkkoKTtOdygpO1NJKCk7Vm49e307Vm4ucmF5UGxhbmU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInBsYW5lIGlzIHJlcXVpcmVkLiIpO20oaSl8fChpPW5ldyBsKTtsZXQgbj10Lm9yaWdpbixzPXQuZGlyZWN0aW9uLG89ZS5ub3JtYWwscj1sLmRvdChvLHMpO2lmKE1hdGguYWJzKHIpPEwuRVBTSUxPTjE1KXJldHVybjtsZXQgYT0oLWUuZGlzdGFuY2UtbC5kb3QobyxuKSkvcjtpZighKGE8MCkpcmV0dXJuIGk9bC5tdWx0aXBseUJ5U2NhbGFyKHMsYSxpKSxsLmFkZChuLGksaSl9O1RpdD1uZXcgbCxOaXQ9bmV3IGwsR3c9bmV3IGwsRnc9bmV3IGwsYnc9bmV3IGw7Vm4ucmF5VHJpYW5nbGVQYXJhbWV0cmljPWZ1bmN0aW9uKHQsZSxpLG4scyl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJheSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicDAgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInAxIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwMiBpcyByZXF1aXJlZC4iKTtzPVoocywhMSk7bGV0IG89dC5vcmlnaW4scj10LmRpcmVjdGlvbixhPWwuc3VidHJhY3QoaSxlLFRpdCksaD1sLnN1YnRyYWN0KG4sZSxOaXQpLEE9bC5jcm9zcyhyLGgsR3cpLGQ9bC5kb3QoYSxBKSxmLEUsXyxSLEk7aWYocyl7aWYoZDxMLkVQU0lMT042fHwoZj1sLnN1YnRyYWN0KG8sZSxGdyksXz1sLmRvdChmLEEpLF88MHx8Xz5kKXx8KEU9bC5jcm9zcyhmLGEsYncpLFI9bC5kb3QocixFKSxSPDB8fF8rUj5kKSlyZXR1cm47ST1sLmRvdChoLEUpL2R9ZWxzZXtpZihNYXRoLmFicyhkKTxMLkVQU0lMT042KXJldHVybjtsZXQgQz0xL2Q7aWYoZj1sLnN1YnRyYWN0KG8sZSxGdyksXz1sLmRvdChmLEEpKkMsXzwwfHxfPjF8fChFPWwuY3Jvc3MoZixhLGJ3KSxSPWwuZG90KHIsRSkqQyxSPDB8fF8rUj4xKSlyZXR1cm47ST1sLmRvdChoLEUpKkN9cmV0dXJuIEl9O1ZuLnJheVRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj1Wbi5yYXlUcmlhbmdsZVBhcmFtZXRyaWModCxlLGksbixzKTtpZighKCFtKHIpfHxyPDApKXJldHVybiBtKG8pfHwobz1uZXcgbCksbC5tdWx0aXBseUJ5U2NhbGFyKHQuZGlyZWN0aW9uLHIsbyksbC5hZGQodC5vcmlnaW4sbyxvKX07Rml0PW5ldyBXbDtWbi5saW5lU2VnbWVudFRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2MCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgidjEgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInAwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJwMSBpcyByZXF1aXJlZC4iKTtpZighbShzKSl0aHJvdyBuZXcgWSgicDIgaXMgcmVxdWlyZWQuIik7bGV0IGE9Rml0O2wuY2xvbmUodCxhLm9yaWdpbiksbC5zdWJ0cmFjdChlLHQsYS5kaXJlY3Rpb24pLGwubm9ybWFsaXplKGEuZGlyZWN0aW9uLGEuZGlyZWN0aW9uKTtsZXQgaD1Wbi5yYXlUcmlhbmdsZVBhcmFtZXRyaWMoYSxpLG4scyxvKTtpZighKCFtKGgpfHxoPDB8fGg+bC5kaXN0YW5jZSh0LGUpKSlyZXR1cm4gbShyKXx8KHI9bmV3IGwpLGwubXVsdGlwbHlCeVNjYWxhcihhLmRpcmVjdGlvbixoLHIpLGwuYWRkKGEub3JpZ2luLHIscil9O1lpdD17cm9vdDA6MCxyb290MTowfTtWbi5yYXlTcGhlcmU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoInNwaGVyZSBpcyByZXF1aXJlZC4iKTtpZihpPVd3KHQsZSxpKSwhKCFtKGkpfHxpLnN0b3A8MCkpcmV0dXJuIGkuc3RhcnQ9TWF0aC5tYXgoaS5zdGFydCwwKSxpfTtWaXQ9bmV3IFdsO1ZuLmxpbmVTZWdtZW50U3BoZXJlPWZ1bmN0aW9uKHQsZSxpLG4pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJwMCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicDEgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInNwaGVyZSBpcyByZXF1aXJlZC4iKTtsZXQgcz1WaXQ7bC5jbG9uZSh0LHMub3JpZ2luKTtsZXQgbz1sLnN1YnRyYWN0KGUsdCxzLmRpcmVjdGlvbikscj1sLm1hZ25pdHVkZShvKTtpZihsLm5vcm1hbGl6ZShvLG8pLG49V3cocyxpLG4pLCEoIW0obil8fG4uc3RvcDwwfHxuLnN0YXJ0PnIpKXJldHVybiBuLnN0YXJ0PU1hdGgubWF4KG4uc3RhcnQsMCksbi5zdG9wPU1hdGgubWluKG4uc3RvcCxyKSxufTtTaXQ9bmV3IGwsT2l0PW5ldyBsO1ZuLnJheUVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImVsbGlwc29pZCBpcyByZXF1aXJlZC4iKTtsZXQgaT1lLm9uZU92ZXJSYWRpaSxuPWwubXVsdGlwbHlDb21wb25lbnRzKGksdC5vcmlnaW4sU2l0KSxzPWwubXVsdGlwbHlDb21wb25lbnRzKGksdC5kaXJlY3Rpb24sT2l0KSxvPWwubWFnbml0dWRlU3F1YXJlZChuKSxyPWwuZG90KG4scyksYSxoLEEsZCxmO2lmKG8+MSl7aWYocj49MClyZXR1cm47bGV0IEU9cipyO2lmKGE9by0xLGg9bC5tYWduaXR1ZGVTcXVhcmVkKHMpLEE9aCphLEU8QSlyZXR1cm47aWYoRT5BKXtkPXIqci1BLGY9LXIrTWF0aC5zcXJ0KGQpO2xldCBSPWYvaCxJPWEvZjtyZXR1cm4gUjxJP25ldyBjQShSLEkpOntzdGFydDpJLHN0b3A6Un19bGV0IF89TWF0aC5zcXJ0KGEvaCk7cmV0dXJuIG5ldyBjQShfLF8pfWVsc2UgaWYobzwxKXJldHVybiBhPW8tMSxoPWwubWFnbml0dWRlU3F1YXJlZChzKSxBPWgqYSxkPXIqci1BLGY9LXIrTWF0aC5zcXJ0KGQpLG5ldyBjQSgwLGYvaCk7aWYocjwwKXJldHVybiBoPWwubWFnbml0dWRlU3F1YXJlZChzKSxuZXcgY0EoMCwtci9oKX07Vm4ucXVhZHJhdGljVmVjdG9yRXhwcmVzc2lvbj1mdW5jdGlvbih0LGUsaSxuLHMpe2xldCBvPW4qbixyPXMqcyxhPSh0W2x0LkNPTFVNTjFST1cxXS10W2x0LkNPTFVNTjJST1cyXSkqcixoPXMqKG4qRGwodFtsdC5DT0xVTU4xUk9XMF0sdFtsdC5DT0xVTU4wUk9XMV0sTC5FUFNJTE9OMTUpK2UueSksQT10W2x0LkNPTFVNTjBST1cwXSpvK3RbbHQuQ09MVU1OMlJPVzJdKnIrbiplLngraSxkPXIqRGwodFtsdC5DT0xVTU4yUk9XMV0sdFtsdC5DT0xVTU4xUk9XMl0sTC5FUFNJTE9OMTUpLGY9cyoobipEbCh0W2x0LkNPTFVNTjJST1cwXSx0W2x0LkNPTFVNTjBST1cyXSkrZS56KSxFLF89W107aWYoZj09PTAmJmQ9PT0wKXtpZihFPVByLmNvbXB1dGVSZWFsUm9vdHMoYSxoLEEpLEUubGVuZ3RoPT09MClyZXR1cm4gXztsZXQgTT1FWzBdLGs9TWF0aC5zcXJ0KE1hdGgubWF4KDEtTSpNLDApKTtpZihfLnB1c2gobmV3IGwobixzKk0scyotaykpLF8ucHVzaChuZXcgbChuLHMqTSxzKmspKSxFLmxlbmd0aD09PTIpe2xldCB5PUVbMV0sYz1NYXRoLnNxcnQoTWF0aC5tYXgoMS15KnksMCkpO18ucHVzaChuZXcgbChuLHMqeSxzKi1jKSksXy5wdXNoKG5ldyBsKG4scyp5LHMqYykpfXJldHVybiBffWxldCBSPWYqZixJPWQqZCxDPWEqYSxOPWYqZCxUPUMrSSxiPTIqKGgqYStOKSxGPTIqQSphK2gqaC1JK1IsQj0yKihBKmgtTiksVT1BKkEtUjtpZihUPT09MCYmYj09PTAmJkY9PT0wJiZCPT09MClyZXR1cm4gXztFPVR3LmNvbXB1dGVSZWFsUm9vdHMoVCxiLEYsQixVKTtsZXQgUT1FLmxlbmd0aDtpZihRPT09MClyZXR1cm4gXztmb3IobGV0IE09MDtNPFE7KytNKXtsZXQgaz1FW01dLHk9ayprLGM9TWF0aC5tYXgoMS15LDApLGc9TWF0aC5zcXJ0KGMpLE87TC5zaWduKGEpPT09TC5zaWduKEEpP089RGwoYSp5K0EsaCprLEwuRVBTSUxPTjEyKTpMLnNpZ24oQSk9PT1MLnNpZ24oaCprKT9PPURsKGEqeSxoKmsrQSxMLkVQU0lMT04xMik6Tz1EbChhKnkraCprLEEsTC5FUFNJTE9OMTIpO2xldCBEPURsKGQqayxmLEwuRVBTSUxPTjE1KSx3PU8qRDt3PDA/Xy5wdXNoKG5ldyBsKG4scyprLHMqZykpOnc+MD9fLnB1c2gobmV3IGwobixzKmsscyotZykpOmchPT0wPyhfLnB1c2gobmV3IGwobixzKmsscyotZykpLF8ucHVzaChuZXcgbChuLHMqayxzKmcpKSwrK00pOl8ucHVzaChuZXcgbChuLHMqayxzKmcpKX1yZXR1cm4gX307Q049bmV3IGwsWXc9bmV3IGwsVnc9bmV3IGwsT0k9bmV3IGwsQml0PW5ldyBsLEdpdD1uZXcgbHQsV2l0PW5ldyBsdCxEaXQ9bmV3IGx0LFVpdD1uZXcgbHQsTWl0PW5ldyBsdCxTdz1uZXcgbHQsT3c9bmV3IGx0LEJ3PW5ldyBsLFFpdD1uZXcgbCxraXQ9bmV3IHV0O1ZuLmdyYXppbmdBbHRpdHVkZUxvY2F0aW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInJheSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgiZWxsaXBzb2lkIGlzIHJlcXVpcmVkLiIpO2xldCBpPXQub3JpZ2luLG49dC5kaXJlY3Rpb247aWYoIWwuZXF1YWxzKGksbC5aRVJPKSl7bGV0IFU9ZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaSxDTik7aWYobC5kb3QobixVKT49MClyZXR1cm4gaX1sZXQgcz1tKHRoaXMucmF5RWxsaXBzb2lkKHQsZSkpLG89ZS50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UobixDTikscj1sLm5vcm1hbGl6ZShvLG8pLGE9bC5tb3N0T3J0aG9nb25hbEF4aXMobyxPSSksaD1sLm5vcm1hbGl6ZShsLmNyb3NzKGEscixZdyksWXcpLEE9bC5ub3JtYWxpemUobC5jcm9zcyhyLGgsVncpLFZ3KSxkPUdpdDtkWzBdPXIueCxkWzFdPXIueSxkWzJdPXIueixkWzNdPWgueCxkWzRdPWgueSxkWzVdPWgueixkWzZdPUEueCxkWzddPUEueSxkWzhdPUEuejtsZXQgZj1sdC50cmFuc3Bvc2UoZCxXaXQpLEU9bHQuZnJvbVNjYWxlKGUucmFkaWksRGl0KSxfPWx0LmZyb21TY2FsZShlLm9uZU92ZXJSYWRpaSxVaXQpLFI9TWl0O1JbMF09MCxSWzFdPS1uLnosUlsyXT1uLnksUlszXT1uLnosUls0XT0wLFJbNV09LW4ueCxSWzZdPS1uLnksUls3XT1uLngsUls4XT0wO2xldCBJPWx0Lm11bHRpcGx5KGx0Lm11bHRpcGx5KGYsXyxTdyksUixTdyksQz1sdC5tdWx0aXBseShsdC5tdWx0aXBseShJLEUsT3cpLGQsT3cpLE49bHQubXVsdGlwbHlCeVZlY3RvcihJLGksQml0KSxUPVZuLnF1YWRyYXRpY1ZlY3RvckV4cHJlc3Npb24oQyxsLm5lZ2F0ZShOLENOKSwwLDAsMSksYixGLEI9VC5sZW5ndGg7aWYoQj4wKXtsZXQgVT1sLmNsb25lKGwuWkVSTyxRaXQpLFE9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihsZXQgaz0wO2s8QjsrK2spe2I9bHQubXVsdGlwbHlCeVZlY3RvcihFLGx0Lm11bHRpcGx5QnlWZWN0b3IoZCxUW2tdLEJ3KSxCdyk7bGV0IHk9bC5ub3JtYWxpemUobC5zdWJ0cmFjdChiLGksT0kpLE9JKSxjPWwuZG90KHksbik7Yz5RJiYoUT1jLFU9bC5jbG9uZShiLFUpKX1sZXQgTT1lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFUsa2l0KTtyZXR1cm4gUT1MLmNsYW1wKFEsMCwxKSxGPWwubWFnbml0dWRlKGwuc3VidHJhY3QoVSxpLE9JKSkqTWF0aC5zcXJ0KDEtUSpRKSxGPXM/LUY6RixNLmhlaWdodD1GLGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTSxuZXcgbCl9fTtMaXQ9bmV3IGw7Vm4ubGluZVNlZ21lbnRQbGFuZT1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZW5kUG9pbnQwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJlbmRQb2ludDEgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoInBsYW5lIGlzIHJlcXVpcmVkLiIpO20obil8fChuPW5ldyBsKTtsZXQgcz1sLnN1YnRyYWN0KGUsdCxMaXQpLG89aS5ub3JtYWwscj1sLmRvdChvLHMpO2lmKE1hdGguYWJzKHIpPEwuRVBTSUxPTjYpcmV0dXJuO2xldCBhPWwuZG90KG8sdCksaD0tKGkuZGlzdGFuY2UrYSkvcjtpZighKGg8MHx8aD4xKSlyZXR1cm4gbC5tdWx0aXBseUJ5U2NhbGFyKHMsaCxuKSxsLmFkZCh0LG4sbiksbn07Vm4udHJpYW5nbGVQbGFuZUludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KXx8IW0oZSl8fCFtKGkpfHwhbShuKSl0aHJvdyBuZXcgWSgicDAsIHAxLCBwMiwgYW5kIHBsYW5lIGFyZSByZXF1aXJlZC4iKTtsZXQgcz1uLm5vcm1hbCxvPW4uZGlzdGFuY2Uscj1sLmRvdChzLHQpK288MCxhPWwuZG90KHMsZSkrbzwwLGg9bC5kb3QocyxpKStvPDAsQT0wO0ErPXI/MTowLEErPWE/MTowLEErPWg/MTowO2xldCBkLGY7aWYoKEE9PT0xfHxBPT09MikmJihkPW5ldyBsLGY9bmV3IGwpLEE9PT0xKXtpZihyKXJldHVybiBWbi5saW5lU2VnbWVudFBsYW5lKHQsZSxuLGQpLFZuLmxpbmVTZWdtZW50UGxhbmUodCxpLG4sZikse3Bvc2l0aW9uczpbdCxlLGksZCxmXSxpbmRpY2VzOlswLDMsNCwxLDIsNCwxLDQsM119O2lmKGEpcmV0dXJuIFZuLmxpbmVTZWdtZW50UGxhbmUoZSxpLG4sZCksVm4ubGluZVNlZ21lbnRQbGFuZShlLHQsbixmKSx7cG9zaXRpb25zOlt0LGUsaSxkLGZdLGluZGljZXM6WzEsMyw0LDIsMCw0LDIsNCwzXX07aWYoaClyZXR1cm4gVm4ubGluZVNlZ21lbnRQbGFuZShpLHQsbixkKSxWbi5saW5lU2VnbWVudFBsYW5lKGksZSxuLGYpLHtwb3NpdGlvbnM6W3QsZSxpLGQsZl0saW5kaWNlczpbMiwzLDQsMCwxLDQsMCw0LDNdfX1lbHNlIGlmKEE9PT0yKWlmKHIpaWYoYSl7aWYoIWgpcmV0dXJuIFZuLmxpbmVTZWdtZW50UGxhbmUodCxpLG4sZCksVm4ubGluZVNlZ21lbnRQbGFuZShlLGksbixmKSx7cG9zaXRpb25zOlt0LGUsaSxkLGZdLGluZGljZXM6WzAsMSw0LDAsNCwzLDIsMyw0XX19ZWxzZSByZXR1cm4gVm4ubGluZVNlZ21lbnRQbGFuZShpLGUsbixkKSxWbi5saW5lU2VnbWVudFBsYW5lKHQsZSxuLGYpLHtwb3NpdGlvbnM6W3QsZSxpLGQsZl0saW5kaWNlczpbMiwwLDQsMiw0LDMsMSwzLDRdfTtlbHNlIHJldHVybiBWbi5saW5lU2VnbWVudFBsYW5lKGUsdCxuLGQpLFZuLmxpbmVTZWdtZW50UGxhbmUoaSx0LG4sZikse3Bvc2l0aW9uczpbdCxlLGksZCxmXSxpbmRpY2VzOlsxLDIsNCwxLDQsMywwLDMsNF19fTtubz1Wbn0pO2Z1bmN0aW9uIGlyKHQpe3RoaXMuX2VsbGlwc29pZD1aKHQsb3QuV0dTODQpLHRoaXMuX3NlbWltYWpvckF4aXM9dGhpcy5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsdGhpcy5fb25lT3ZlclNlbWltYWpvckF4aXM9MS90aGlzLl9zZW1pbWFqb3JBeGlzfXZhciBrcyxNbD1TKCgpPT57SHQoKTtyaSgpO0Z0KCk7bXQoKTtPdCgpO09lKCk7X2UoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpci5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19fSk7aXIubWVyY2F0b3JBbmdsZVRvR2VvZGV0aWNMYXRpdHVkZT1mdW5jdGlvbih0KXtyZXR1cm4gTC5QSV9PVkVSX1RXTy0yKk1hdGguYXRhbihNYXRoLmV4cCgtdCkpfTtpci5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlPWZ1bmN0aW9uKHQpe3Q+aXIuTWF4aW11bUxhdGl0dWRlP3Q9aXIuTWF4aW11bUxhdGl0dWRlOnQ8LWlyLk1heGltdW1MYXRpdHVkZSYmKHQ9LWlyLk1heGltdW1MYXRpdHVkZSk7bGV0IGU9TWF0aC5zaW4odCk7cmV0dXJuIC41Kk1hdGgubG9nKCgxK2UpLygxLWUpKX07aXIuTWF4aW11bUxhdGl0dWRlPWlyLm1lcmNhdG9yQW5nbGVUb0dlb2RldGljTGF0aXR1ZGUoTWF0aC5QSSk7aXIucHJvdG90eXBlLnByb2plY3Q9ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLl9zZW1pbWFqb3JBeGlzLG49dC5sb25naXR1ZGUqaSxzPWlyLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUodC5sYXRpdHVkZSkqaSxvPXQuaGVpZ2h0O3JldHVybiBtKGUpPyhlLng9bixlLnk9cyxlLno9byxlKTpuZXcgbChuLHMsbyl9O2lyLnByb3RvdHlwZS51bnByb2plY3Q9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiY2FydGVzaWFuIGlzIHJlcXVpcmVkIik7bGV0IGk9dGhpcy5fb25lT3ZlclNlbWltYWpvckF4aXMsbj10LngqaSxzPWlyLm1lcmNhdG9yQW5nbGVUb0dlb2RldGljTGF0aXR1ZGUodC55KmkpLG89dC56O3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT1uLGUubGF0aXR1ZGU9cyxlLmhlaWdodD1vLGUpOm5ldyB1dChuLHMsbyl9O2tzPWlyfSk7ZnVuY3Rpb24gdWModCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBZKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKHQuYXJjVHlwZSkmJnQuYXJjVHlwZSE9PXRpLkdFT0RFU0lDJiZ0LmFyY1R5cGUhPT10aS5SSFVNQil0aHJvdyBuZXcgWSgiVmFsaWQgb3B0aW9ucyBmb3IgYXJjVHlwZSBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTt0aGlzLndpZHRoPVoodC53aWR0aCwxKSx0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLmdyYW51bGFyaXR5PVoodC5ncmFudWxhcml0eSw5OTk5KSx0aGlzLmxvb3A9Wih0Lmxvb3AsITEpLHRoaXMuYXJjVHlwZT1aKHQuYXJjVHlwZSx0aS5HRU9ERVNJQyksdGhpcy5fZWxsaXBzb2lkPW90LldHUzg0LHRoaXMuX3Byb2plY3Rpb25JbmRleD0wLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUdyb3VuZFBvbHlsaW5lR2VvbWV0cnkiLHRoaXMuX3NjZW5lM0RPbmx5PSExfWZ1bmN0aW9uIFZOKHQsZSxpLG4scyl7bGV0IG89VW8obix0LDAsd2l0KSxyPVVvKG4sdCxpLFV3KSxhPVVvKG4sZSwwLE13KSxoPWZoKHIsbyxVdyksQT1maChhLG8sTXcpO3JldHVybiBsLmNyb3NzKEEsaCxzKSxsLm5vcm1hbGl6ZShzLHMpfWZ1bmN0aW9uIGdOKHQsZSxpLG4scyxvLHIsYSxoLEEsZCl7aWYocz09PTApcmV0dXJuO2xldCBmO289PT10aS5HRU9ERVNJQz9mPW5ldyBGSSh0LGUscik6bz09PXRpLlJIVU1CJiYoZj1uZXcgZXIodCxlLHIpKTtsZXQgRT1mLnN1cmZhY2VEaXN0YW5jZTtpZihFPHMpcmV0dXJuO2xldCBfPVZOKHQsZSxuLHIsaml0KSxSPU1hdGguY2VpbChFL3MpLEk9RS9SLEM9SSxOPVItMSxUPWEubGVuZ3RoO2ZvcihsZXQgYj0wO2I8TjtiKyspe2xldCBGPWYuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShDLHhpdCksQj1VbyhyLEYsaSxQaXQpLFU9VW8ocixGLG4sSml0KTtsLnBhY2soXyxhLFQpLGwucGFjayhCLGgsVCksbC5wYWNrKFUsQSxUKSxkLnB1c2goRi5sYXRpdHVkZSksZC5wdXNoKEYubG9uZ2l0dWRlKSxUKz0zLEMrPUl9fWZ1bmN0aW9uIFVvKHQsZSxpLG4pe3JldHVybiB1dC5jbG9uZShlLFROKSxUTi5oZWlnaHQ9aSx1dC50b0NhcnRlc2lhbihUTix0LG4pfWZ1bmN0aW9uIGZoKHQsZSxpKXtyZXR1cm4gbC5zdWJ0cmFjdCh0LGUsaSksbC5ub3JtYWxpemUoaSxpKSxpfWZ1bmN0aW9uIFF3KHQsZSxpLG4pe3JldHVybiBuPWZoKHQsZSxuKSxuPWwuY3Jvc3MobixpLG4pLG49bC5ub3JtYWxpemUobixuKSxuPWwuY3Jvc3MoaSxuLG4pLG59ZnVuY3Rpb24gTk4odCxlLGksbixzKXtsZXQgbz1maChpLGUsbngpLHI9UXcodCxlLG8sSGl0KSxhPVF3KG4sZSxvLHZpdCk7aWYoTC5lcXVhbHNFcHNpbG9uKGwuZG90KHIsYSksWGl0LEwuRVBTSUxPTjUpKXJldHVybiBzPWwuY3Jvc3MobyxyLHMpLHM9bC5ub3JtYWxpemUocyxzKSxzO3M9bC5hZGQoYSxyLHMpLHM9bC5ub3JtYWxpemUocyxzKTtsZXQgaD1sLmNyb3NzKG8scyx6aXQpO3JldHVybiBsLmRvdChhLGgpPEtpdCYmKHM9bC5uZWdhdGUocyxzKSksc31mdW5jdGlvbiB5dyh0LGUsaSxuKXtsZXQgcz1maChpLGUsbm50KSxvPWwuZG90KHMsdCk7aWYobz50eHx8bzxEdyl7bGV0IHI9ZmgobixpLG54KSxhPW88RHc/TC5QSV9PVkVSX1RXTzotTC5QSV9PVkVSX1RXTyxoPUFlLmZyb21BeGlzQW5nbGUocixhLG9udCksQT1sdC5mcm9tUXVhdGVybmlvbihoLHNudCk7cmV0dXJuIGx0Lm11bHRpcGx5QnlWZWN0b3IoQSx0LHQpLCEwfXJldHVybiExfWZ1bmN0aW9uIHpFKHQsZSxpLG4scyl7bGV0IG89dXQudG9DYXJ0ZXNpYW4oZSx0Ll9lbGxpcHNvaWQscm50KSxyPWwuYWRkKG8saSx4dyksYT0hMSxoPXQuX2VsbGlwc29pZCxBPWguY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocix3dyk7TWF0aC5hYnMoZS5sb25naXR1ZGUtQS5sb25naXR1ZGUpPkwuUElfT1ZFUl9UV08mJihhPSEwLHI9bC5zdWJ0cmFjdChvLGkseHcpLEE9aC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhyLHd3KSksQS5oZWlnaHQ9MDtsZXQgZD10LnByb2plY3QoQSxzKTtyZXR1cm4gcz1sLnN1YnRyYWN0KGQsbixzKSxzLno9MCxzPWwubm9ybWFsaXplKHMscyksYSYmbC5uZWdhdGUocyxzKSxzfWZ1bmN0aW9uIEp3KHQsZSxpLG4scyxvKXtsZXQgcj1sLnN1YnRyYWN0KGUsdCxhbnQpO2wubm9ybWFsaXplKHIscik7bGV0IGE9aS1leCxoPWwubXVsdGlwbHlCeVNjYWxhcihyLGEsUHcpO2wuYWRkKHQsaCxzKTtsZXQgQT1uLWl4O2g9bC5tdWx0aXBseUJ5U2NhbGFyKHIsQSxQdyksbC5hZGQoZSxoLG8pfWZ1bmN0aW9uIFdJKHQsZSl7bGV0IGk9S2kuZ2V0UG9pbnREaXN0YW5jZShESSx0KSxuPUtpLmdldFBvaW50RGlzdGFuY2UoREksZSkscz1BbnQ7TC5lcXVhbHNFcHNpbG9uKGksMCxMLkVQU0lMT04yKT8ocz1maChlLHQscyksbC5tdWx0aXBseUJ5U2NhbGFyKHMsTC5FUFNJTE9OMixzKSxsLmFkZCh0LHMsdCkpOkwuZXF1YWxzRXBzaWxvbihuLDAsTC5FUFNJTE9OMikmJihzPWZoKHQsZSxzKSxsLm11bHRpcGx5QnlTY2FsYXIocyxMLkVQU0lMT04yLHMpLGwuYWRkKGUscyxlKSl9ZnVuY3Rpb24gaG50KHQsZSl7bGV0IGk9TWF0aC5hYnModC5sb25naXR1ZGUpLG49TWF0aC5hYnMoZS5sb25naXR1ZGUpO2lmKEwuZXF1YWxzRXBzaWxvbihpLEwuUEksTC5FUFNJTE9OMTEpKXtsZXQgcz1MLnNpZ24oZS5sb25naXR1ZGUpO3JldHVybiB0LmxvbmdpdHVkZT1zKihpLUwuRVBTSUxPTjExKSwxfWVsc2UgaWYoTC5lcXVhbHNFcHNpbG9uKG4sTC5QSSxMLkVQU0lMT04xMSkpe2xldCBzPUwuc2lnbih0LmxvbmdpdHVkZSk7cmV0dXJuIGUubG9uZ2l0dWRlPXMqKG4tTC5FUFNJTE9OMTEpLDJ9cmV0dXJuIDB9ZnVuY3Rpb24gWW50KHQsZSxpLG4scyxvLHIpe2xldCBhLGgsQT1lLl9lbGxpcHNvaWQsZD1pLmxlbmd0aC8zLTEsZj1kKjgsRT1mKjQsXz1kKjM2LFI9Zj42NTUzNT9uZXcgVWludDMyQXJyYXkoXyk6bmV3IFVpbnQxNkFycmF5KF8pLEk9bmV3IEZsb2F0NjRBcnJheShmKjMpLEM9bmV3IEZsb2F0MzJBcnJheShFKSxOPW5ldyBGbG9hdDMyQXJyYXkoRSksVD1uZXcgRmxvYXQzMkFycmF5KEUpLGI9bmV3IEZsb2F0MzJBcnJheShFKSxGPW5ldyBGbG9hdDMyQXJyYXkoRSksQixVLFEsTTtyJiYoQj1uZXcgRmxvYXQzMkFycmF5KEUpLFU9bmV3IEZsb2F0MzJBcnJheShFKSxRPW5ldyBGbG9hdDMyQXJyYXkoRSksTT1uZXcgRmxvYXQzMkFycmF5KGYqMikpO2xldCBrPW8ubGVuZ3RoLzIseT0wLGM9c3g7Yy5oZWlnaHQ9MDtsZXQgZz1veDtnLmhlaWdodD0wO2xldCBPPWp3LEQ9Rk47aWYocilmb3IoaD0wLGE9MTthPGs7YSsrKWMubGF0aXR1ZGU9b1toXSxjLmxvbmdpdHVkZT1vW2grMV0sZy5sYXRpdHVkZT1vW2grMl0sZy5sb25naXR1ZGU9b1toKzNdLE89ZS5wcm9qZWN0KGMsTyksRD1lLnByb2plY3QoZyxEKSx5Kz1sLmRpc3RhbmNlKE8sRCksaCs9MjtsZXQgdz1uLmxlbmd0aC8zO0Q9bC51bnBhY2sobiwwLEQpO2xldCB4PTA7Zm9yKGg9MyxhPTE7YTx3O2ErKylPPWwuY2xvbmUoRCxPKSxEPWwudW5wYWNrKG4saCxEKSx4Kz1sLmRpc3RhbmNlKE8sRCksaCs9MztsZXQgSDtoPTM7bGV0IGo9MCxYPTAsdHQ9MCxHPTAsSXQ9ITEsZ3Q9bC51bnBhY2soaSwwLHZ3KSxZdD1sLnVucGFjayhuLDAsRk4pLFV0PWwudW5wYWNrKHMsMCx6dyk7aWYodCl7bGV0IGNlPWwudW5wYWNrKGksaS5sZW5ndGgtNixIdyk7eXcoVXQsY2UsZ3QsWXQpJiYoVXQ9bC5uZWdhdGUoVXQsVXQpKX1sZXQgQ3Q9MCx6dD0wLGt0PTA7Zm9yKGE9MDthPGQ7YSsrKXtsZXQgY2U9bC5jbG9uZShndCxIdyksamU9bC5jbG9uZShZdCxqdyksU2U9bC5jbG9uZShVdCxjbnQpO0l0JiYoU2U9bC5uZWdhdGUoU2UsU2UpKSxndD1sLnVucGFjayhpLGgsdncpLFl0PWwudW5wYWNrKG4saCxGTiksVXQ9bC51bnBhY2socyxoLHp3KSxJdD15dyhVdCxjZSxndCxZdCksYy5sYXRpdHVkZT1vW2pdLGMubG9uZ2l0dWRlPW9baisxXSxnLmxhdGl0dWRlPW9baisyXSxnLmxvbmdpdHVkZT1vW2orM107bGV0IFVlLE1lLENlLEZlO2lmKHIpe2xldCBDaT1obnQoYyxnKTtVZT1lLnByb2plY3QoYyxSbnQpLE1lPWUucHJvamVjdChnLFpudCk7bGV0IEpuPWZoKE1lLFVlLFh3KTtKbi55PU1hdGguYWJzKEpuLnkpLENlPWJOLEZlPVlOLENpPT09MHx8bC5kb3QoSm4sbC5VTklUX1kpPnR4PyhDZT16RShlLGMsU2UsVWUsYk4pLEZlPXpFKGUsZyxVdCxNZSxZTikpOkNpPT09MT8oRmU9ekUoZSxnLFV0LE1lLFlOKSxDZS54PTAsQ2UueT1MLnNpZ24oYy5sb25naXR1ZGUtTWF0aC5hYnMoZy5sb25naXR1ZGUpKSxDZS56PTApOihDZT16RShlLGMsU2UsVWUsYk4pLEZlLng9MCxGZS55PUwuc2lnbihjLmxvbmdpdHVkZS1nLmxvbmdpdHVkZSksRmUuej0wKX1sZXQgbmk9bC5kaXN0YW5jZShqZSxZdCksemU9R24uZnJvbUNhcnRlc2lhbihjZSxUbnQpLEJlPWwuc3VidHJhY3QoZ3QsY2UsSW50KSxNaT1sLm5vcm1hbGl6ZShCZSxLdyksUmk9bC5zdWJ0cmFjdChqZSxjZSxwbnQpO1JpPWwubm9ybWFsaXplKFJpLFJpKTtsZXQgc2k9bC5jcm9zcyhNaSxSaSxLdyk7c2k9bC5ub3JtYWxpemUoc2ksc2kpO2xldCBxZT1sLmNyb3NzKFJpLFNlLENudCk7cWU9bC5ub3JtYWxpemUocWUscWUpO2xldCBPaT1sLnN1YnRyYWN0KFl0LGd0LHVudCk7T2k9bC5ub3JtYWxpemUoT2ksT2kpO2xldCBnbj1sLmNyb3NzKFV0LE9pLGdudCk7Z249bC5ub3JtYWxpemUoZ24sZ24pO2xldCBEZT1uaS94LFllPUN0L3gsR2k9MCxBbixOZSxlaSxfbj0wLGhzPTA7aWYocil7R2k9bC5kaXN0YW5jZShVZSxNZSksQW49R24uZnJvbUNhcnRlc2lhbihVZSxObnQpLE5lPWwuc3VidHJhY3QoTWUsVWUsWHcpLGVpPWwubm9ybWFsaXplKE5lLEZudCk7bGV0IENpPWVpLng7ZWkueD1laS55LGVpLnk9LUNpLF9uPUdpL3ksaHM9enQveX1mb3IoSD0wO0g8ODtIKyspe2xldCBDaT1HK0gqNCxKbj1YK0gqMixscz1DaSszLGFvPUg8ND8xOi0xLHFpPUg9PT0yfHxIPT09M3x8SD09PTZ8fEg9PT03PzE6LTE7bC5wYWNrKHplLmhpZ2gsQyxDaSksQ1tsc109QmUueCxsLnBhY2soemUubG93LE4sQ2kpLE5bbHNdPUJlLnksbC5wYWNrKHFlLFQsQ2kpLFRbbHNdPUJlLnosbC5wYWNrKGduLGIsQ2kpLGJbbHNdPURlKmFvLGwucGFjayhzaSxGLENpKTtsZXQgaG49WWUqcWk7aG49PT0wJiZxaTwwJiYoaG49OSksRltsc109aG4sciYmKEJbQ2ldPUFuLmhpZ2gueCxCW0NpKzFdPUFuLmhpZ2gueSxCW0NpKzJdPUFuLmxvdy54LEJbQ2krM109QW4ubG93LnksUVtDaV09LUNlLnksUVtDaSsxXT1DZS54LFFbQ2krMl09RmUueSxRW0NpKzNdPS1GZS54LFVbQ2ldPU5lLngsVVtDaSsxXT1OZS55LFVbQ2krMl09ZWkueCxVW0NpKzNdPWVpLnksTVtKbl09X24qYW8saG49aHMqcWksaG49PT0wJiZxaTwwJiYoaG49OSksTVtKbisxXT1obil9bGV0IFFpPUVudCxubj1fbnQsa2k9bW50LHNuPWZudCxDcz1YdC5mcm9tQ2FydG9ncmFwaGljQXJyYXkobG50LGRudCksY3M9RG8uZ2V0TWluaW11bU1heGltdW1IZWlnaHRzKENzLEEpLHhuPWNzLm1pbmltdW1UZXJyYWluSGVpZ2h0LFBuPWNzLm1heGltdW1UZXJyYWluSGVpZ2h0O2t0Kz1NYXRoLmFicyh4biksa3QrPU1hdGguYWJzKFBuKSxKdyhjZSxqZSx4bixQbixRaSxraSksSncoZ3QsWXQseG4sUG4sbm4sc24pO2xldCBBaT1sLm11bHRpcGx5QnlTY2FsYXIoc2ksTC5FUFNJTE9ONSxxdyk7bC5hZGQoUWksQWksUWkpLGwuYWRkKG5uLEFpLG5uKSxsLmFkZChraSxBaSxraSksbC5hZGQoc24sQWksc24pLFdJKFFpLG5uKSxXSShraSxzbiksbC5wYWNrKFFpLEksdHQpLGwucGFjayhubixJLHR0KzMpLGwucGFjayhzbixJLHR0KzYpLGwucGFjayhraSxJLHR0KzkpLEFpPWwubXVsdGlwbHlCeVNjYWxhcihzaSwtMipMLkVQU0lMT041LHF3KSxsLmFkZChRaSxBaSxRaSksbC5hZGQobm4sQWksbm4pLGwuYWRkKGtpLEFpLGtpKSxsLmFkZChzbixBaSxzbiksV0koUWksbm4pLFdJKGtpLHNuKSxsLnBhY2soUWksSSx0dCsxMiksbC5wYWNrKG5uLEksdHQrMTUpLGwucGFjayhzbixJLHR0KzE4KSxsLnBhY2soa2ksSSx0dCsyMSksais9MixoKz0zLFgrPTE2LHR0Kz0yNCxHKz0zMixDdCs9bmksenQrPUdpfWg9MDtsZXQgSnQ9MDtmb3IoYT0wO2E8ZDthKyspe2ZvcihIPTA7SDwkdztIKyspUltoK0hdPXJ4W0hdK0p0O0p0Kz04LGgrPSR3fWxldCBXdD1ibnQ7TnQuZnJvbVZlcnRpY2VzKGksbC5aRVJPLDMsV3RbMF0pLE50LmZyb21WZXJ0aWNlcyhuLGwuWkVSTywzLFd0WzFdKTtsZXQgYnQ9TnQuZnJvbUJvdW5kaW5nU3BoZXJlcyhXdCk7YnQucmFkaXVzKz1rdC8oZCoyKTtsZXQgZWU9e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWVzOkl9KSxzdGFydEhpQW5kRm9yd2FyZE9mZnNldFg6cGMoQyksc3RhcnRMb0FuZEZvcndhcmRPZmZzZXRZOnBjKE4pLHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFo6cGMoVCksZW5kTm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWDpwYyhiKSxyaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblk6cGMoRil9O3JldHVybiByJiYoZWUuc3RhcnRIaUxvMkQ9cGMoQiksZWUub2Zmc2V0QW5kUmlnaHQyRD1wYyhVKSxlZS5zdGFydEVuZE5vcm1hbHMyRD1wYyhRKSxlZS50ZXhjb29yZE5vcm1hbGl6YXRpb24yRD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mixub3JtYWxpemU6ITEsdmFsdWVzOk19KSksbmV3IHNlKHthdHRyaWJ1dGVzOmVlLGluZGljZXM6Uixib3VuZGluZ1NwaGVyZTpidH0pfWZ1bmN0aW9uIHBjKHQpe3JldHVybiBuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITEsdmFsdWVzOnR9KX12YXIgU04seWl0LHR4LER3LGV4LGl4LHdpdCxVdyxNdyx4aXQsUGl0LEppdCxqaXQsVE4sSGl0LHZpdCx6aXQsbngsS2l0LFhpdCxESSxxaXQsJGl0LHRudCxlbnQsaW50LEJJLEdJLGt3LEx3LG5udCxzbnQsb250LHd3LHJudCx4dyxhbnQsUHcsQW50LHN4LG94LGp3LEZOLEh3LHZ3LGNudCx6dyxsbnQsZG50LG1udCxmbnQsRW50LF9udCxSbnQsWm50LGJOLFlOLEludCxwbnQsdW50LEt3LENudCxnbnQsVG50LE5udCxYdyxGbnQscXcsYm50LHJ4LCR3LEtFLE9OPVMoKCk9PntKRSgpO0dsKCk7U2EoKTtfaSgpO0h0KCk7cmkoKTthZSgpO29pKCk7RnQoKTttdCgpO090KCk7T2UoKTtFTigpO0hFKCk7VGwoKTt6QSgpO3lpKCk7amkoKTtVbCgpO19lKCk7ZG4oKTtuaCgpOyRzKCk7cG4oKTtNbCgpO1NOPVtTcyxrc10seWl0PVNOLmxlbmd0aCx0eD1NYXRoLmNvcyhMLnRvUmFkaWFucygzMCkpLER3PU1hdGguY29zKEwudG9SYWRpYW5zKDE1MCkpLGV4PTAsaXg9MWUzO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHVjLnByb3RvdHlwZSx7cGFja2VkTGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMSt0aGlzLl9wb3NpdGlvbnMubGVuZ3RoKjMrMSsxKzErb3QucGFja2VkTGVuZ3RoKzErMX19fSk7dWMuc2V0UHJvamVjdGlvbkFuZEVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2xldCBpPTA7Zm9yKGxldCBuPTA7bjx5aXQ7bisrKWlmKGUgaW5zdGFuY2VvZiBTTltuXSl7aT1uO2JyZWFrfXQuX3Byb2plY3Rpb25JbmRleD1pLHQuX2VsbGlwc29pZD1lLmVsbGlwc29pZH07d2l0PW5ldyBsLFV3PW5ldyBsLE13PW5ldyBsO3hpdD1uZXcgdXQsUGl0PW5ldyBsLEppdD1uZXcgbCxqaXQ9bmV3IGw7VE49bmV3IHV0O3VjLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpO2xldCBuPVooaSwwKSxzPXQuX3Bvc2l0aW9ucyxvPXMubGVuZ3RoO2VbbisrXT1vO2ZvcihsZXQgcj0wO3I8bzsrK3Ipe2xldCBhPXNbcl07bC5wYWNrKGEsZSxuKSxuKz0zfXJldHVybiBlW24rK109dC5ncmFudWxhcml0eSxlW24rK109dC5sb29wPzE6MCxlW24rK109dC5hcmNUeXBlLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9b3QucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9wcm9qZWN0aW9uSW5kZXgsZVtuKytdPXQuX3NjZW5lM0RPbmx5PzE6MCxlfTt1Yy51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPVooZSwwKSxzPXRbbisrXSxvPW5ldyBBcnJheShzKTtmb3IobGV0IEU9MDtFPHM7RSsrKW9bRV09bC51bnBhY2sodCxuKSxuKz0zO2xldCByPXRbbisrXSxhPXRbbisrXT09PTEsaD10W24rK10sQT1vdC51bnBhY2sodCxuKTtuKz1vdC5wYWNrZWRMZW5ndGg7bGV0IGQ9dFtuKytdLGY9dFtuKytdPT09MTtyZXR1cm4gbShpKXx8KGk9bmV3IHVjKHtwb3NpdGlvbnM6b30pKSxpLl9wb3NpdGlvbnM9byxpLmdyYW51bGFyaXR5PXIsaS5sb29wPWEsaS5hcmNUeXBlPWgsaS5fZWxsaXBzb2lkPUEsaS5fcHJvamVjdGlvbkluZGV4PWQsaS5fc2NlbmUzRE9ubHk9ZixpfTtIaXQ9bmV3IGwsdml0PW5ldyBsLHppdD1uZXcgbCxueD1uZXcgbCxLaXQ9MCxYaXQ9LTE7REk9S2kuZnJvbVBvaW50Tm9ybWFsKGwuWkVSTyxsLlVOSVRfWSkscWl0PW5ldyBsLCRpdD1uZXcgbCx0bnQ9bmV3IGwsZW50PW5ldyBsLGludD1uZXcgbCxCST1uZXcgbCxHST1uZXcgdXQsa3c9bmV3IHV0LEx3PW5ldyB1dDt1Yy5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT0hdC5fc2NlbmUzRE9ubHksaT10Lmxvb3Asbj10Ll9lbGxpcHNvaWQscz10LmdyYW51bGFyaXR5LG89dC5hcmNUeXBlLHI9bmV3IFNOW3QuX3Byb2plY3Rpb25JbmRleF0obiksYT1leCxoPWl4LEEsZCxmPXQuX3Bvc2l0aW9ucyxFPWYubGVuZ3RoO0U9PT0yJiYoaT0hMSk7bGV0IF8sUixJLEMsTj1uZXcgZXIodm9pZCAwLHZvaWQgMCxuKSxULGIsRixCPVtmWzBdXTtmb3IoZD0wO2Q8RS0xO2QrKylfPWZbZF0sUj1mW2QrMV0sVD1uby5saW5lU2VnbWVudFBsYW5lKF8sUixESSxCSSksbShUKSYmIWwuZXF1YWxzRXBzaWxvbihULF8sTC5FUFNJTE9ONykmJiFsLmVxdWFsc0Vwc2lsb24oVCxSLEwuRVBTSUxPTjcpJiYodC5hcmNUeXBlPT09dGkuR0VPREVTSUM/Qi5wdXNoKGwuY2xvbmUoVCkpOnQuYXJjVHlwZT09PXRpLlJIVU1CJiYoRj1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFQsR0kpLmxvbmdpdHVkZSxJPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoXyxHSSksQz1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKFIsa3cpLE4uc2V0RW5kUG9pbnRzKEksQyksYj1OLmZpbmRJbnRlcnNlY3Rpb25XaXRoTG9uZ2l0dWRlKEYsTHcpLFQ9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihiLEJJKSxtKFQpJiYhbC5lcXVhbHNFcHNpbG9uKFQsXyxMLkVQU0lMT043KSYmIWwuZXF1YWxzRXBzaWxvbihULFIsTC5FUFNJTE9ONykmJkIucHVzaChsLmNsb25lKFQpKSkpLEIucHVzaChSKTtpJiYoXz1mW0UtMV0sUj1mWzBdLFQ9bm8ubGluZVNlZ21lbnRQbGFuZShfLFIsREksQkkpLG0oVCkmJiFsLmVxdWFsc0Vwc2lsb24oVCxfLEwuRVBTSUxPTjcpJiYhbC5lcXVhbHNFcHNpbG9uKFQsUixMLkVQU0lMT043KSYmKHQuYXJjVHlwZT09PXRpLkdFT0RFU0lDP0IucHVzaChsLmNsb25lKFQpKTp0LmFyY1R5cGU9PT10aS5SSFVNQiYmKEY9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhULEdJKS5sb25naXR1ZGUsST1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKF8sR0kpLEM9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhSLGt3KSxOLnNldEVuZFBvaW50cyhJLEMpLGI9Ti5maW5kSW50ZXJzZWN0aW9uV2l0aExvbmdpdHVkZShGLEx3KSxUPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oYixCSSksbShUKSYmIWwuZXF1YWxzRXBzaWxvbihULF8sTC5FUFNJTE9ONykmJiFsLmVxdWFsc0Vwc2lsb24oVCxSLEwuRVBTSUxPTjcpJiZCLnB1c2gobC5jbG9uZShUKSkpKSk7bGV0IFU9Qi5sZW5ndGgsUT1uZXcgQXJyYXkoVSk7Zm9yKGQ9MDtkPFU7ZCsrKXtsZXQgSXQ9dXQuZnJvbUNhcnRlc2lhbihCW2RdLG4pO0l0LmhlaWdodD0wLFFbZF09SXR9aWYoUT1YbihRLHV0LmVxdWFsc0Vwc2lsb24pLFU9US5sZW5ndGgsVTwyKXJldHVybjtsZXQgTT1bXSxrPVtdLHk9W10sYz1bXSxnPXFpdCxPPSRpdCxEPXRudCx3PWVudCx4PWludCxIPVFbMF0saj1RWzFdLFg9UVtVLTFdO2ZvcihnPVVvKG4sWCxhLGcpLHc9VW8obixqLGEsdyksTz1VbyhuLEgsYSxPKSxEPVVvKG4sSCxoLEQpLGk/eD1OTihnLE8sRCx3LHgpOng9Vk4oSCxqLGgsbix4KSxsLnBhY2soeCxrLDApLGwucGFjayhPLHksMCksbC5wYWNrKEQsYywwKSxNLnB1c2goSC5sYXRpdHVkZSksTS5wdXNoKEgubG9uZ2l0dWRlKSxnTihILGosYSxoLHMsbyxuLGsseSxjLE0pLGQ9MTtkPFUtMTsrK2Qpe2c9bC5jbG9uZShPLGcpLE89bC5jbG9uZSh3LE8pO2xldCBJdD1RW2RdO1VvKG4sSXQsaCxEKSxVbyhuLFFbZCsxXSxhLHcpLE5OKGcsTyxELHcseCksQT1rLmxlbmd0aCxsLnBhY2soeCxrLEEpLGwucGFjayhPLHksQSksbC5wYWNrKEQsYyxBKSxNLnB1c2goSXQubGF0aXR1ZGUpLE0ucHVzaChJdC5sb25naXR1ZGUpLGdOKFFbZF0sUVtkKzFdLGEsaCxzLG8sbixrLHksYyxNKX1sZXQgdHQ9UVtVLTFdLEc9UVtVLTJdO2lmKE89VW8obix0dCxhLE8pLEQ9VW8obix0dCxoLEQpLGkpe2xldCBJdD1RWzBdO2c9VW8obixHLGEsZyksdz1VbyhuLEl0LGEsdykseD1OTihnLE8sRCx3LHgpfWVsc2UgeD1WTihHLHR0LGgsbix4KTtpZihBPWsubGVuZ3RoLGwucGFjayh4LGssQSksbC5wYWNrKE8seSxBKSxsLnBhY2soRCxjLEEpLE0ucHVzaCh0dC5sYXRpdHVkZSksTS5wdXNoKHR0LmxvbmdpdHVkZSksaSl7Zm9yKGdOKHR0LEgsYSxoLHMsbyxuLGsseSxjLE0pLEE9ay5sZW5ndGgsZD0wO2Q8MzsrK2Qpa1tBK2RdPWtbZF0seVtBK2RdPXlbZF0sY1tBK2RdPWNbZF07TS5wdXNoKEgubGF0aXR1ZGUpLE0ucHVzaChILmxvbmdpdHVkZSl9cmV0dXJuIFludChpLHIseSxjLGssTSxlKX07bm50PW5ldyBsLHNudD1uZXcgbHQsb250PW5ldyBBZTt3dz1uZXcgdXQscm50PW5ldyBsLHh3PW5ldyBsO2FudD1uZXcgbCxQdz1uZXcgbDtBbnQ9bmV3IGw7c3g9bmV3IHV0LG94PW5ldyB1dCxqdz1uZXcgbCxGTj1uZXcgbCxIdz1uZXcgbCx2dz1uZXcgbCxjbnQ9bmV3IGwsenc9bmV3IGwsbG50PVtzeCxveF0sZG50PW5ldyBYdCxtbnQ9bmV3IGwsZm50PW5ldyBsLEVudD1uZXcgbCxfbnQ9bmV3IGwsUm50PW5ldyBsLFpudD1uZXcgbCxiTj1uZXcgbCxZTj1uZXcgbCxJbnQ9bmV3IGwscG50PW5ldyBsLHVudD1uZXcgbCxLdz1uZXcgbCxDbnQ9bmV3IGwsZ250PW5ldyBsLFRudD1uZXcgR24sTm50PW5ldyBHbixYdz1uZXcgbCxGbnQ9bmV3IGwscXc9bmV3IGwsYm50PVtuZXcgTnQsbmV3IE50XSxyeD1bMCwyLDEsMCwzLDIsMCw3LDMsMCw0LDcsMCw1LDQsMCwxLDUsNSw3LDQsNSw2LDcsNSwyLDYsNSwxLDIsMyw2LDIsMyw3LDZdLCR3PXJ4Lmxlbmd0aDt1Yy5fcHJvamVjdE5vcm1hbD16RTtLRT11Y30pO3ZhciBheCxBeD1TKCgpPT57YXg9YGluIHZlYzQgdl9zdGFydFBsYW5lTm9ybWFsRWNBbmRIYWxmV2lkdGg7CmluIHZlYzQgdl9lbmRQbGFuZU5vcm1hbEVjQW5kQmF0Y2hJZDsKaW4gdmVjNCB2X3JpZ2h0UGxhbmVFQzsgLy8gVGVjaG5pY2FsbHkgY2FuIGNvbXB1dGUgZGlzdGFuY2UgZm9yIHRoaXMgaGVyZQppbiB2ZWM0IHZfZW5kRWNBbmRTdGFydEVjWDsKaW4gdmVjNCB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWjsKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKaW4gdmVjNCB2X2NvbG9yOwojZW5kaWYKCnZvaWQgbWFpbih2b2lkKQp7CiAgICBmbG9hdCBsb2dEZXB0aE9yRGVwdGggPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoY3ptX3NjZW5lTW9kZSA9PSBjem1fc2NlbmVNb2RlMkQsIGdsX0ZyYWdDb29yZC56LCBjem1fdW5wYWNrRGVwdGgodGV4dHVyZShjem1fZ2xvYmVEZXB0aFRleHR1cmUsIGdsX0ZyYWdDb29yZC54eSAvIGN6bV92aWV3cG9ydC56dykpKTsKICAgIHZlYzMgZWNTdGFydCA9IHZlYzModl9lbmRFY0FuZFN0YXJ0RWNYLncsIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kU3RhcnRFY1laLnp3KTsKCiAgICAvLyBEaXNjYXJkIGZvciBza3kKICAgIGlmIChsb2dEZXB0aE9yRGVwdGggPT0gMC4wKSB7CiNpZmRlZiBERUJVR19TSE9XX1ZPTFVNRQogICAgICAgIG91dF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDAuNSk7CiAgICAgICAgcmV0dXJuOwojZWxzZSAvLyBERUJVR19TSE9XX1ZPTFVNRQogICAgICAgIGRpc2NhcmQ7CiNlbmRpZiAvLyBERUJVR19TSE9XX1ZPTFVNRQogICAgfQoKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV93aW5kb3dUb0V5ZUNvb3JkaW5hdGVzKGdsX0ZyYWdDb29yZC54eSwgbG9nRGVwdGhPckRlcHRoKTsKICAgIGV5ZUNvb3JkaW5hdGUgLz0gZXllQ29vcmRpbmF0ZS53OwoKICAgIGZsb2F0IGhhbGZNYXhXaWR0aCA9IHZfc3RhcnRQbGFuZU5vcm1hbEVjQW5kSGFsZldpZHRoLncgKiBjem1fbWV0ZXJzUGVyUGl4ZWwoZXllQ29vcmRpbmF0ZSk7CiAgICAvLyBDaGVjayBkaXN0YW5jZSBvZiB0aGUgZXllIGNvb3JkaW5hdGUgYWdhaW5zdCB0aGUgcmlnaHQtZmFjaW5nIHBsYW5lCiAgICBmbG9hdCB3aWR0aHdpc2VEaXN0YW5jZSA9IGN6bV9wbGFuZURpc3RhbmNlKHZfcmlnaHRQbGFuZUVDLCBleWVDb29yZGluYXRlLnh5eik7CgogICAgLy8gQ2hlY2sgZXllIGNvb3JkaW5hdGUgYWdhaW5zdCB0aGUgbWl0ZXJpbmcgcGxhbmVzCiAgICBmbG9hdCBkaXN0YW5jZUZyb21TdGFydCA9IGN6bV9wbGFuZURpc3RhbmNlKHZfc3RhcnRQbGFuZU5vcm1hbEVjQW5kSGFsZldpZHRoLnh5eiwgLWRvdChlY1N0YXJ0LCB2X3N0YXJ0UGxhbmVOb3JtYWxFY0FuZEhhbGZXaWR0aC54eXopLCBleWVDb29yZGluYXRlLnh5eik7CiAgICBmbG9hdCBkaXN0YW5jZUZyb21FbmQgPSBjem1fcGxhbmVEaXN0YW5jZSh2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLnh5eiwgLWRvdCh2X2VuZEVjQW5kU3RhcnRFY1gueHl6LCB2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLnh5eiksIGV5ZUNvb3JkaW5hdGUueHl6KTsKCiAgICBpZiAoYWJzKHdpZHRod2lzZURpc3RhbmNlKSA+IGhhbGZNYXhXaWR0aCB8fCBkaXN0YW5jZUZyb21TdGFydCA8IDAuMCB8fCBkaXN0YW5jZUZyb21FbmQgPCAwLjApIHsKI2lmZGVmIERFQlVHX1NIT1dfVk9MVU1FCiAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMC41KTsKICAgICAgICByZXR1cm47CiNlbHNlIC8vIERFQlVHX1NIT1dfVk9MVU1FCiAgICAgICAgZGlzY2FyZDsKI2VuZGlmIC8vIERFQlVHX1NIT1dfVk9MVU1FCiAgICB9CgogICAgLy8gQ2hlY2sgZGlzdGFuY2Ugb2YgdGhlIGV5ZSBjb29yZGluYXRlIGFnYWluc3Qgc3RhcnQgYW5kIGVuZCBwbGFuZXMgd2l0aCBub3JtYWxzIGluIHRoZSByaWdodCBwbGFuZS4KICAgIC8vIEZvciBjb21wdXRpbmcgdW5za2V3ZWQgbGVuZ3Rod2lzZSB0ZXh0dXJlIGNvb3JkaW5hdGUuCiAgICAvLyBDYW4gYWxzbyBiZSB1c2VkIGZvciBjbGlwcGluZyBleHRyZW1lbHkgcG9pbnR5IG1pdGVycywgYnV0IGluIHByYWN0aWNlIHVubmVjZXNzYXJ5IGJlY2F1c2Ugb2YgbWl0ZXIgYnJlYWtpbmcuCgogICAgLy8gYWxpZ25lZCBwbGFuZTogY3Jvc3MgdGhlIHJpZ2h0IHBsYW5lIG5vcm1hbCB3aXRoIG1pdGVyIHBsYW5lIG5vcm1hbCwgdGhlbiBjcm9zcyB0aGUgcmVzdWx0IHdpdGggcmlnaHQgYWdhaW4gdG8gcG9pbnQgaXQgbW9yZSAiZm9yd2FyZCIKICAgIHZlYzMgYWxpZ25lZFBsYW5lTm9ybWFsOwoKICAgIC8vIHN0YXJ0IGFsaWduZWQgcGxhbmUKICAgIGFsaWduZWRQbGFuZU5vcm1hbCA9IGNyb3NzKHZfcmlnaHRQbGFuZUVDLnh5eiwgdl9zdGFydFBsYW5lTm9ybWFsRWNBbmRIYWxmV2lkdGgueHl6KTsKICAgIGFsaWduZWRQbGFuZU5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhhbGlnbmVkUGxhbmVOb3JtYWwsIHZfcmlnaHRQbGFuZUVDLnh5eikpOwogICAgZGlzdGFuY2VGcm9tU3RhcnQgPSBjem1fcGxhbmVEaXN0YW5jZShhbGlnbmVkUGxhbmVOb3JtYWwsIC1kb3QoYWxpZ25lZFBsYW5lTm9ybWFsLCBlY1N0YXJ0KSwgZXllQ29vcmRpbmF0ZS54eXopOwoKICAgIC8vIGVuZCBhbGlnbmVkIHBsYW5lCiAgICBhbGlnbmVkUGxhbmVOb3JtYWwgPSBjcm9zcyh2X3JpZ2h0UGxhbmVFQy54eXosIHZfZW5kUGxhbmVOb3JtYWxFY0FuZEJhdGNoSWQueHl6KTsKICAgIGFsaWduZWRQbGFuZU5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhhbGlnbmVkUGxhbmVOb3JtYWwsIHZfcmlnaHRQbGFuZUVDLnh5eikpOwogICAgZGlzdGFuY2VGcm9tRW5kID0gY3ptX3BsYW5lRGlzdGFuY2UoYWxpZ25lZFBsYW5lTm9ybWFsLCAtZG90KGFsaWduZWRQbGFuZU5vcm1hbCwgdl9lbmRFY0FuZFN0YXJ0RWNYLnh5eiksIGV5ZUNvb3JkaW5hdGUueHl6KTsKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIG91dF9GcmFnQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZfY29sb3IpOwojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIC8vIENsYW1wIC0gZGlzdGFuY2UgdG8gYWxpZ25lZCBwbGFuZXMgbWF5IGJlIG5lZ2F0aXZlIGR1ZSB0byBtaXRlcmluZywKICAgIC8vIHNvIGZyYWdtZW50IHRleHR1cmUgY29vcmRpbmF0ZSBtaWdodCBiZSBvdXQtb2YtYm91bmRzLgogICAgZmxvYXQgcyA9IGNsYW1wKGRpc3RhbmNlRnJvbVN0YXJ0IC8gKGRpc3RhbmNlRnJvbVN0YXJ0ICsgZGlzdGFuY2VGcm9tRW5kKSwgMC4wLCAxLjApOwogICAgcyA9IChzICogdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueCkgKyB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi55OwogICAgZmxvYXQgdCA9ICh3aWR0aHdpc2VEaXN0YW5jZSArIGhhbGZNYXhXaWR0aCkgLyAoMi4wICogaGFsZk1heFdpZHRoKTsKCiAgICBjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0OwoKICAgIG1hdGVyaWFsSW5wdXQucyA9IHM7CiAgICBtYXRlcmlhbElucHV0LnN0ID0gdmVjMihzLCB0KTsKICAgIG1hdGVyaWFsSW5wdXQuc3RyID0gdmVjMyhzLCB0LCAwLjApOwoKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIG91dF9GcmFnQ29sb3IgPSB2ZWM0KG1hdGVyaWFsLmRpZmZ1c2UgKyBtYXRlcmlhbC5lbWlzc2lvbiwgbWF0ZXJpYWwuYWxwaGEpOwojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCgogICAgLy8gUHJlbXVsdGlwbHkgYWxwaGEuIFJlcXVpcmVkIGZvciBjbGFzc2lmaWNhdGlvbiBwcmltaXRpdmVzIG9uIHRyYW5zbHVjZW50IGdsb2JlLgogICAgb3V0X0ZyYWdDb2xvci5yZ2IgKj0gb3V0X0ZyYWdDb2xvci5hOwoKICAgIGN6bV93cml0ZURlcHRoQ2xhbXAoKTsKfQpgfSk7dmFyIGh4LGN4PVMoKCk9PntoeD1gaW4gdmVjMyB2X2ZvcndhcmREaXJlY3Rpb25FQzsKaW4gdmVjMyB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZEhhbGZXaWR0aDsKaW4gZmxvYXQgdl9iYXRjaElkOwoKI2lmZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgppbiB2ZWM0IHZfY29sb3I7CiNlbHNlCmluIHZlYzIgdl9hbGlnbmVkUGxhbmVEaXN0YW5jZXM7CmluIGZsb2F0IHZfdGV4Y29vcmRUOwojZW5kaWYKCmZsb2F0IHJheVBsYW5lRGlzdGFuY2VVbnNhZmUodmVjMyBvcmlnaW4sIHZlYzMgZGlyZWN0aW9uLCB2ZWMzIHBsYW5lTm9ybWFsLCBmbG9hdCBwbGFuZURpc3RhbmNlKSB7CiAgICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIHJheSB0byBldmVyIGJlIHBhcmFsbGVsIHRvIHRoZSBwbGFuZQogICAgcmV0dXJuICgtcGxhbmVEaXN0YW5jZSAtIGRvdChwbGFuZU5vcm1hbCwgb3JpZ2luKSkgLyBkb3QocGxhbmVOb3JtYWwsIGRpcmVjdGlvbik7Cn0KCnZvaWQgbWFpbih2b2lkKQp7CiAgICB2ZWM0IGV5ZUNvb3JkaW5hdGUgPSBnbF9GcmFnQ29vcmQ7CiAgICBleWVDb29yZGluYXRlIC89IGV5ZUNvb3JkaW5hdGUudzsKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIG91dF9GcmFnQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZfY29sb3IpOwojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIC8vIFVzZSBkaXN0YW5jZXMgZm9yIHBsYW5lcyBhbGlnbmVkIHdpdGggc2VnbWVudCB0byBwcmV2ZW50IHNrZXcgaW4gZGFzaGluZwogICAgZmxvYXQgZGlzdGFuY2VGcm9tU3RhcnQgPSByYXlQbGFuZURpc3RhbmNlVW5zYWZlKGV5ZUNvb3JkaW5hdGUueHl6LCAtdl9mb3J3YXJkRGlyZWN0aW9uRUMsIHZfZm9yd2FyZERpcmVjdGlvbkVDLnh5eiwgdl9hbGlnbmVkUGxhbmVEaXN0YW5jZXMueCk7CiAgICBmbG9hdCBkaXN0YW5jZUZyb21FbmQgPSByYXlQbGFuZURpc3RhbmNlVW5zYWZlKGV5ZUNvb3JkaW5hdGUueHl6LCB2X2ZvcndhcmREaXJlY3Rpb25FQywgLXZfZm9yd2FyZERpcmVjdGlvbkVDLnh5eiwgdl9hbGlnbmVkUGxhbmVEaXN0YW5jZXMueSk7CgogICAgLy8gQ2xhbXAgLSBkaXN0YW5jZSB0byBhbGlnbmVkIHBsYW5lcyBtYXkgYmUgbmVnYXRpdmUgZHVlIHRvIG1pdGVyaW5nCiAgICBkaXN0YW5jZUZyb21TdGFydCA9IG1heCgwLjAsIGRpc3RhbmNlRnJvbVN0YXJ0KTsKICAgIGRpc3RhbmNlRnJvbUVuZCA9IG1heCgwLjAsIGRpc3RhbmNlRnJvbUVuZCk7CgogICAgZmxvYXQgcyA9IGRpc3RhbmNlRnJvbVN0YXJ0IC8gKGRpc3RhbmNlRnJvbVN0YXJ0ICsgZGlzdGFuY2VGcm9tRW5kKTsKICAgIHMgPSAocyAqIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kSGFsZldpZHRoLngpICsgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGgueTsKCiAgICBjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0OwoKICAgIG1hdGVyaWFsSW5wdXQucyA9IHM7CiAgICBtYXRlcmlhbElucHV0LnN0ID0gdmVjMihzLCB2X3RleGNvb3JkVCk7CiAgICBtYXRlcmlhbElucHV0LnN0ciA9IHZlYzMocywgdl90ZXhjb29yZFQsIDAuMCk7CgogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgb3V0X0ZyYWdDb2xvciA9IHZlYzQobWF0ZXJpYWwuZGlmZnVzZSArIG1hdGVyaWFsLmVtaXNzaW9uLCBtYXRlcmlhbC5hbHBoYSk7CiNlbmRpZiAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKfQpgfSk7dmFyIGx4LGR4PVMoKCk9PntseD1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwoKaW4gdmVjNCBzdGFydEhpQW5kRm9yd2FyZE9mZnNldFg7CmluIHZlYzQgc3RhcnRMb0FuZEZvcndhcmRPZmZzZXRZOwppbiB2ZWM0IHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFo7CmluIHZlYzQgZW5kTm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWDsKaW4gdmVjNCByaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblk7CmluIHZlYzQgc3RhcnRIaUxvMkQ7CmluIHZlYzQgb2Zmc2V0QW5kUmlnaHQyRDsKaW4gdmVjNCBzdGFydEVuZE5vcm1hbHMyRDsKaW4gdmVjMiB0ZXhjb29yZE5vcm1hbGl6YXRpb24yRDsKCmluIGZsb2F0IGJhdGNoSWQ7CgpvdXQgdmVjMyB2X2ZvcndhcmREaXJlY3Rpb25FQzsKb3V0IHZlYzMgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGg7Cm91dCBmbG9hdCB2X2JhdGNoSWQ7CgovLyBGb3IgbWF0ZXJpYWxzCiNpZmRlZiBXSURUSF9WQVJZSU5HCm91dCBmbG9hdCB2X3dpZHRoOwojZW5kaWYKI2lmZGVmIEFOR0xFX1ZBUllJTkcKb3V0IGZsb2F0IHZfcG9seWxpbmVBbmdsZTsKI2VuZGlmCgojaWZkZWYgUEVSX0lOU1RBTkNFX0NPTE9SCm91dCB2ZWM0IHZfY29sb3I7CiNlbHNlCm91dCB2ZWMyIHZfYWxpZ25lZFBsYW5lRGlzdGFuY2VzOwpvdXQgZmxvYXQgdl90ZXhjb29yZFQ7CiNlbmRpZgoKLy8gTW9ycGhpbmcgcGxhbmVzIHVzaW5nIFNMRVJQIG9yIE5MRVJQIGRvZXNuJ3Qgc2VlbSB0byB3b3JrLCBzbyBpbnN0ZWFkIGRyYXcgdGhlIG1hdGVyaWFsIGRpcmVjdGx5IG9uIHRoZSBzaGFkb3cgdm9sdW1lLgovLyBNb3JwaCB2aWV3cyBhcmUgZnJvbSB2ZXJ5IGZhciBhd2F5IGFuZCBhcmVuJ3QgbWVhbnQgdG8gYmUgdXNlZCBwcmVjaXNlbHksIHNvIHRoaXMgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCnZvaWQgbWFpbigpCnsKICAgIHZfYmF0Y2hJZCA9IGJhdGNoSWQ7CgogICAgLy8gU3RhcnQgcG9zaXRpb24KICAgIHZlYzQgcG9zUmVsYXRpdmVUb0V5ZTJEID0gY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHN0YXJ0SGlMbzJELnh5KSwgdmVjMygwLjAsIHN0YXJ0SGlMbzJELnp3KSk7CiAgICB2ZWM0IHBvc1JlbGF0aXZlVG9FeWUzRCA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHN0YXJ0SGlBbmRGb3J3YXJkT2Zmc2V0WC54eXosIHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WS54eXopOwogICAgdmVjNCBwb3NSZWxhdGl2ZVRvRXllID0gY3ptX2NvbHVtYnVzVmlld01vcnBoKHBvc1JlbGF0aXZlVG9FeWUyRCwgcG9zUmVsYXRpdmVUb0V5ZTNELCBjem1fbW9ycGhUaW1lKTsKICAgIHZlYzMgcG9zRWMyRCA9IChjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHBvc1JlbGF0aXZlVG9FeWUyRCkueHl6OwogICAgdmVjMyBwb3NFYzNEID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogcG9zUmVsYXRpdmVUb0V5ZTNEKS54eXo7CiAgICB2ZWMzIHN0YXJ0RUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllKS54eXo7CgogICAgLy8gU3RhcnQgcGxhbmUKICAgIHZlYzQgc3RhcnRQbGFuZTJEOwogICAgdmVjNCBzdGFydFBsYW5lM0Q7CiAgICBzdGFydFBsYW5lMkQueHl6ID0gY3ptX25vcm1hbCAqIHZlYzMoMC4wLCBzdGFydEVuZE5vcm1hbHMyRC54eSk7CiAgICBzdGFydFBsYW5lM0QueHl6ID0gY3ptX25vcm1hbCAqIHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFoueHl6OwogICAgc3RhcnRQbGFuZTJELncgPSAtZG90KHN0YXJ0UGxhbmUyRC54eXosIHBvc0VjMkQpOwogICAgc3RhcnRQbGFuZTNELncgPSAtZG90KHN0YXJ0UGxhbmUzRC54eXosIHBvc0VjM0QpOwoKICAgIC8vIFJpZ2h0IHBsYW5lCiAgICB2ZWM0IHJpZ2h0UGxhbmUyRDsKICAgIHZlYzQgcmlnaHRQbGFuZTNEOwogICAgcmlnaHRQbGFuZTJELnh5eiA9IGN6bV9ub3JtYWwgKiB2ZWMzKDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC56dyk7CiAgICByaWdodFBsYW5lM0QueHl6ID0gY3ptX25vcm1hbCAqIHJpZ2h0Tm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWS54eXo7CiAgICByaWdodFBsYW5lMkQudyA9IC1kb3QocmlnaHRQbGFuZTJELnh5eiwgcG9zRWMyRCk7CiAgICByaWdodFBsYW5lM0QudyA9IC1kb3QocmlnaHRQbGFuZTNELnh5eiwgcG9zRWMzRCk7CgogICAgLy8gRW5kIHBvc2l0aW9uCiAgICBwb3NSZWxhdGl2ZVRvRXllMkQgPSBwb3NSZWxhdGl2ZVRvRXllMkQgKyB2ZWM0KDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC54eSwgMC4wKTsKICAgIHBvc1JlbGF0aXZlVG9FeWUzRCA9IHBvc1JlbGF0aXZlVG9FeWUzRCArIHZlYzQoc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYLncsIHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WS53LCBzdGFydE5vcm1hbEFuZEZvcndhcmRPZmZzZXRaLncsIDAuMCk7CiAgICBwb3NSZWxhdGl2ZVRvRXllID0gY3ptX2NvbHVtYnVzVmlld01vcnBoKHBvc1JlbGF0aXZlVG9FeWUyRCwgcG9zUmVsYXRpdmVUb0V5ZTNELCBjem1fbW9ycGhUaW1lKTsKICAgIHBvc0VjMkQgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllMkQpLnh5ejsKICAgIHBvc0VjM0QgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllM0QpLnh5ejsKICAgIHZlYzMgZW5kRUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwb3NSZWxhdGl2ZVRvRXllKS54eXo7CiAgICB2ZWMzIGZvcndhcmRFYzNEID0gY3ptX25vcm1hbCAqIG5vcm1hbGl6ZSh2ZWMzKHN0YXJ0SGlBbmRGb3J3YXJkT2Zmc2V0WC53LCBzdGFydExvQW5kRm9yd2FyZE9mZnNldFkudywgc3RhcnROb3JtYWxBbmRGb3J3YXJkT2Zmc2V0Wi53KSk7CiAgICB2ZWMzIGZvcndhcmRFYzJEID0gY3ptX25vcm1hbCAqIG5vcm1hbGl6ZSh2ZWMzKDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC54eSkpOwoKICAgIC8vIEVuZCBwbGFuZQogICAgdmVjNCBlbmRQbGFuZTJEOwogICAgdmVjNCBlbmRQbGFuZTNEOwogICAgZW5kUGxhbmUyRC54eXogPSBjem1fbm9ybWFsICogdmVjMygwLjAsIHN0YXJ0RW5kTm9ybWFsczJELnp3KTsKICAgIGVuZFBsYW5lM0QueHl6ID0gY3ptX25vcm1hbCAqIGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgueHl6OwogICAgZW5kUGxhbmUyRC53ID0gLWRvdChlbmRQbGFuZTJELnh5eiwgcG9zRWMyRCk7CiAgICBlbmRQbGFuZTNELncgPSAtZG90KGVuZFBsYW5lM0QueHl6LCBwb3NFYzNEKTsKCiAgICAvLyBGb3J3YXJkIGRpcmVjdGlvbgogICAgdl9mb3J3YXJkRGlyZWN0aW9uRUMgPSBub3JtYWxpemUoZW5kRUMgLSBzdGFydEVDKTsKCiAgICB2ZWMyIGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uMkQ7CiAgICBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjJELnggPSBhYnModGV4Y29vcmROb3JtYWxpemF0aW9uMkQueCk7CiAgICBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjJELnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkodGV4Y29vcmROb3JtYWxpemF0aW9uMkQueSA+IDEuMCwgMC4wLCBhYnModGV4Y29vcmROb3JtYWxpemF0aW9uMkQueSkpOwogICAgdmVjMiBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjNEOwogICAgY2xlYW5UZXhjb29yZE5vcm1hbGl6YXRpb24zRC54ID0gYWJzKGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgudyk7CiAgICBjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjNELnkgPSByaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblkudzsKICAgIGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uM0QueSA9IGN6bV9icmFuY2hGcmVlVGVybmFyeShjbGVhblRleGNvb3JkTm9ybWFsaXphdGlvbjNELnkgPiAxLjAsIDAuMCwgYWJzKGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uM0QueSkpOwoKICAgIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kSGFsZldpZHRoLnh5ID0gbWl4KGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uMkQsIGNsZWFuVGV4Y29vcmROb3JtYWxpemF0aW9uM0QsIGN6bV9tb3JwaFRpbWUpOwoKI2lmZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgogICAgdl9jb2xvciA9IGN6bV9iYXRjaFRhYmxlX2NvbG9yKGJhdGNoSWQpOwojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKICAgIC8vIEZvciBjb21wdXRpbmcgdGV4dHVyZSBjb29yZGluYXRlcwoKICAgIHZfYWxpZ25lZFBsYW5lRGlzdGFuY2VzLnggPSAtZG90KHZfZm9yd2FyZERpcmVjdGlvbkVDLCBzdGFydEVDKTsKICAgIHZfYWxpZ25lZFBsYW5lRGlzdGFuY2VzLnkgPSAtZG90KC12X2ZvcndhcmREaXJlY3Rpb25FQywgZW5kRUMpOwojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCgojaWZkZWYgV0lEVEhfVkFSWUlORwogICAgZmxvYXQgd2lkdGggPSBjem1fYmF0Y2hUYWJsZV93aWR0aChiYXRjaElkKTsKICAgIGZsb2F0IGhhbGZXaWR0aCA9IHdpZHRoICogMC41OwogICAgdl93aWR0aCA9IHdpZHRoOwogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGgueiA9IGhhbGZXaWR0aDsKI2Vsc2UKICAgIGZsb2F0IGhhbGZXaWR0aCA9IDAuNSAqIGN6bV9iYXRjaFRhYmxlX3dpZHRoKGJhdGNoSWQpOwogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRIYWxmV2lkdGgueiA9IGhhbGZXaWR0aDsKI2VuZGlmCgogICAgLy8gQ29tcHV0ZSBhIG5vcm1hbCBhbG9uZyB3aGljaCB0byAicHVzaCIgdGhlIHBvc2l0aW9uIG91dCwgZXh0ZW5kaW5nIHRoZSBtaXRlciBkZXBlbmRpbmcgb24gdmlldyBkaXN0YW5jZS4KICAgIC8vIFBvc2l0aW9uIGhhcyBhbHJlYWR5IGJlZW4gInB1c2hlZCIgYnkgdW5pdCBsZW5ndGggYWxvbmcgbWl0ZXIgbm9ybWFsLCBhbmQgbWl0ZXIgbm9ybWFscyBhcmUgZW5jb2RlZCBpbiB0aGUgcGxhbmVzLgogICAgLy8gRGVjb2RlIHRoZSBub3JtYWwgdG8gdXNlIGF0IHRoaXMgc3BlY2lmaWMgdmVydGV4LCBwdXNoIHRoZSBwb3NpdGlvbiBiYWNrLCBhbmQgdGhlbiBwdXNoIHRvIHdoZXJlIGl0IG5lZWRzIHRvIGJlLgogICAgLy8gU2luY2UgdGhpcyBpcyBtb3JwaGluZywgY29tcHV0ZSBib3RoIDNEIGFuZCAyRCBwb3NpdGlvbnMgYW5kIHRoZW4gYmxlbmQuCgogICAgLy8gKioqKioqIDNEICoqKioqKgogICAgLy8gQ2hlY2sgZGlzdGFuY2UgdG8gdGhlIGVuZCBwbGFuZSBhbmQgc3RhcnQgcGxhbmUsIHBpY2sgdGhlIHBsYW5lIHRoYXQgaXMgY2xvc2VyCiAgICB2ZWM0IHBvc2l0aW9uRWMzRCA9IGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUocG9zaXRpb24zREhpZ2gsIHBvc2l0aW9uM0RMb3cpOyAvLyB3ID0gMS4wLCBzZWUgY3ptX2NvbXB1dGVQb3NpdGlvbgogICAgZmxvYXQgYWJzU3RhcnRQbGFuZURpc3RhbmNlID0gYWJzKGN6bV9wbGFuZURpc3RhbmNlKHN0YXJ0UGxhbmUzRCwgcG9zaXRpb25FYzNELnh5eikpOwogICAgZmxvYXQgYWJzRW5kUGxhbmVEaXN0YW5jZSA9IGFicyhjem1fcGxhbmVEaXN0YW5jZShlbmRQbGFuZTNELCBwb3NpdGlvbkVjM0QueHl6KSk7CiAgICB2ZWMzIHBsYW5lRGlyZWN0aW9uID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA8IGFic0VuZFBsYW5lRGlzdGFuY2UsIHN0YXJ0UGxhbmUzRC54eXosIGVuZFBsYW5lM0QueHl6KTsKICAgIHZlYzMgdXBPckRvd24gPSBub3JtYWxpemUoY3Jvc3MocmlnaHRQbGFuZTNELnh5eiwgcGxhbmVEaXJlY3Rpb24pKTsgLy8gUG9pbnRzICJ1cCIgZm9yIHN0YXJ0IHBsYW5lLCAiZG93biIgYXQgZW5kIHBsYW5lLgogICAgdmVjMyBub3JtYWxFQyA9IG5vcm1hbGl6ZShjcm9zcyhwbGFuZURpcmVjdGlvbiwgdXBPckRvd24pKTsgICAgICAgICAvLyBJbiBwcmFjdGljZSwgdGhlIG9wcG9zaXRlIHNlZW1zIHRvIHdvcmsgdG9vLgoKICAgIC8vIE51ZGdlIHRoZSB0b3AgdmVydGV4IHVwd2FyZHMgdG8gcHJldmVudCBmbGlja2VyaW5nCiAgICB2ZWMzIGdlb2RldGljU3VyZmFjZU5vcm1hbCA9IG5vcm1hbGl6ZShjcm9zcyhub3JtYWxFQywgZm9yd2FyZEVjM0QpKTsKICAgIGdlb2RldGljU3VyZmFjZU5vcm1hbCAqPSBmbG9hdCgwLjAgPD0gcmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZLncgJiYgcmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZLncgPD0gMS4wKTsKICAgIGdlb2RldGljU3VyZmFjZU5vcm1hbCAqPSBNQVhfVEVSUkFJTl9IRUlHSFQ7CiAgICBwb3NpdGlvbkVjM0QueHl6ICs9IGdlb2RldGljU3VyZmFjZU5vcm1hbDsKCiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyB2ZXJ0ZXggaXMgb24gdGhlICJsZWZ0IiBvciAicmlnaHQiCiAgICBub3JtYWxFQyAqPSBzaWduKGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgudyk7CgogICAgLy8gQSAicGVyZmVjdCIgaW1wbGVtZW50YXRpb24gd291bGQgcHVzaCBhbG9uZyBub3JtYWxzIGFjY29yZGluZyB0byB0aGUgYW5nbGUgYWdhaW5zdCBmb3J3YXJkLgogICAgLy8gSW4gcHJhY3RpY2UsIGp1c3QgcHVzaGluZyB0aGUgbm9ybWFsIG91dCBieSBoYWxmV2lkdGggaXMgc3VmZmljaWVudCBmb3IgbW9ycGggdmlld3MuCiAgICBwb3NpdGlvbkVjM0QueHl6ICs9IGhhbGZXaWR0aCAqIG1heCgwLjAsIGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVjM0QpKSAqIG5vcm1hbEVDOyAvLyBwcmV2ZW50IGFydGlmYWN0cyB3aGVuIGN6bV9tZXRlcnNQZXJQaXhlbCBpcyBuZWdhdGl2ZSAoYmVoaW5kIGNhbWVyYSkKCiAgICAvLyAqKioqKiogMkQgKioqKioqCiAgICAvLyBDaGVjayBkaXN0YW5jZSB0byB0aGUgZW5kIHBsYW5lIGFuZCBzdGFydCBwbGFuZSwgcGljayB0aGUgcGxhbmUgdGhhdCBpcyBjbG9zZXIKICAgIHZlYzQgcG9zaXRpb25FYzJEID0gY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShwb3NpdGlvbjJESGlnaC56eHksIHBvc2l0aW9uMkRMb3cuenh5KTsgLy8gdyA9IDEuMCwgc2VlIGN6bV9jb21wdXRlUG9zaXRpb24KICAgIGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA9IGFicyhjem1fcGxhbmVEaXN0YW5jZShzdGFydFBsYW5lMkQsIHBvc2l0aW9uRWMyRC54eXopKTsKICAgIGFic0VuZFBsYW5lRGlzdGFuY2UgPSBhYnMoY3ptX3BsYW5lRGlzdGFuY2UoZW5kUGxhbmUyRCwgcG9zaXRpb25FYzJELnh5eikpOwogICAgcGxhbmVEaXJlY3Rpb24gPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYWJzU3RhcnRQbGFuZURpc3RhbmNlIDwgYWJzRW5kUGxhbmVEaXN0YW5jZSwgc3RhcnRQbGFuZTJELnh5eiwgZW5kUGxhbmUyRC54eXopOwogICAgdXBPckRvd24gPSBub3JtYWxpemUoY3Jvc3MocmlnaHRQbGFuZTJELnh5eiwgcGxhbmVEaXJlY3Rpb24pKTsgLy8gUG9pbnRzICJ1cCIgZm9yIHN0YXJ0IHBsYW5lLCAiZG93biIgYXQgZW5kIHBsYW5lLgogICAgbm9ybWFsRUMgPSBub3JtYWxpemUoY3Jvc3MocGxhbmVEaXJlY3Rpb24sIHVwT3JEb3duKSk7ICAgICAgICAgLy8gSW4gcHJhY3RpY2UsIHRoZSBvcHBvc2l0ZSBzZWVtcyB0byB3b3JrIHRvby4KCiAgICAvLyBOdWRnZSB0aGUgdG9wIHZlcnRleCB1cHdhcmRzIHRvIHByZXZlbnQgZmxpY2tlcmluZwogICAgZ2VvZGV0aWNTdXJmYWNlTm9ybWFsID0gbm9ybWFsaXplKGNyb3NzKG5vcm1hbEVDLCBmb3J3YXJkRWMyRCkpOwogICAgZ2VvZGV0aWNTdXJmYWNlTm9ybWFsICo9IGZsb2F0KDAuMCA8PSB0ZXhjb29yZE5vcm1hbGl6YXRpb24yRC55ICYmIHRleGNvb3JkTm9ybWFsaXphdGlvbjJELnkgPD0gMS4wKTsKICAgIGdlb2RldGljU3VyZmFjZU5vcm1hbCAqPSBNQVhfVEVSUkFJTl9IRUlHSFQ7CiAgICBwb3NpdGlvbkVjMkQueHl6ICs9IGdlb2RldGljU3VyZmFjZU5vcm1hbDsKCiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyB2ZXJ0ZXggaXMgb24gdGhlICJsZWZ0IiBvciAicmlnaHQiCiAgICBub3JtYWxFQyAqPSBzaWduKHRleGNvb3JkTm9ybWFsaXphdGlvbjJELngpOwojaWZuZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgogICAgLy8gVXNlIHZlcnRleCdzIHNpZGVkbmVzcyB0byBjb21wdXRlIGl0cyB0ZXh0dXJlIGNvb3JkaW5hdGUuCiAgICB2X3RleGNvb3JkVCA9IGNsYW1wKHNpZ24odGV4Y29vcmROb3JtYWxpemF0aW9uMkQueCksIDAuMCwgMS4wKTsKI2VuZGlmCgogICAgLy8gQSAicGVyZmVjdCIgaW1wbGVtZW50YXRpb24gd291bGQgcHVzaCBhbG9uZyBub3JtYWxzIGFjY29yZGluZyB0byB0aGUgYW5nbGUgYWdhaW5zdCBmb3J3YXJkLgogICAgLy8gSW4gcHJhY3RpY2UsIGp1c3QgcHVzaGluZyB0aGUgbm9ybWFsIG91dCBieSBoYWxmV2lkdGggaXMgc3VmZmljaWVudCBmb3IgbW9ycGggdmlld3MuCiAgICBwb3NpdGlvbkVjMkQueHl6ICs9IGhhbGZXaWR0aCAqIG1heCgwLjAsIGN6bV9tZXRlcnNQZXJQaXhlbChwb3NpdGlvbkVjMkQpKSAqIG5vcm1hbEVDOyAvLyBwcmV2ZW50IGFydGlmYWN0cyB3aGVuIGN6bV9tZXRlcnNQZXJQaXhlbCBpcyBuZWdhdGl2ZSAoYmVoaW5kIGNhbWVyYSkKCiAgICAvLyBCbGVuZCBmb3IgYWN0dWFsIHBvc2l0aW9uCiAgICBnbF9Qb3NpdGlvbiA9IGN6bV9wcm9qZWN0aW9uICogbWl4KHBvc2l0aW9uRWMyRCwgcG9zaXRpb25FYzNELCBjem1fbW9ycGhUaW1lKTsKCiNpZmRlZiBBTkdMRV9WQVJZSU5HCiAgICAvLyBBcHByb3hpbWF0ZSByZWxhdGl2ZSBzY3JlZW4gc3BhY2UgZGlyZWN0aW9uIG9mIHRoZSBsaW5lLgogICAgdmVjMiBhcHByb3hMaW5lRGlyZWN0aW9uID0gbm9ybWFsaXplKHZlYzIodl9mb3J3YXJkRGlyZWN0aW9uRUMueCwgLXZfZm9yd2FyZERpcmVjdGlvbkVDLnkpKTsKICAgIGFwcHJveExpbmVEaXJlY3Rpb24ueSA9IGN6bV9icmFuY2hGcmVlVGVybmFyeShhcHByb3hMaW5lRGlyZWN0aW9uLnggPT0gMC4wICYmIGFwcHJveExpbmVEaXJlY3Rpb24ueSA9PSAwLjAsIC0xLjAsIGFwcHJveExpbmVEaXJlY3Rpb24ueSk7CiAgICB2X3BvbHlsaW5lQW5nbGUgPSBjem1fZmFzdEFwcHJveGltYXRlQXRhbihhcHByb3hMaW5lRGlyZWN0aW9uLngsIGFwcHJveExpbmVEaXJlY3Rpb24ueSk7CiNlbmRpZgp9CmB9KTt2YXIgbXgsZng9UygoKT0+e214PWBpbiB2ZWMzIHBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHBvc2l0aW9uM0RMb3c7CgovLyBJbiAyRCBhbmQgaW4gM0QsIHRleHR1cmUgY29vcmRpbmF0ZSBub3JtYWxpemF0aW9uIGNvbXBvbmVudCBzaWducyBlbmNvZGVzOgovLyAqIFggc2lnbiAtIHNpZGVkbmVzcyByZWxhdGl2ZSB0byByaWdodCBwbGFuZQovLyAqIFkgc2lnbiAtIGlzIG5lZ2F0aXZlIE9SIG1hZ25pdHVkZSBpcyBncmVhdGVyIHRoYW4gMS4wIGlmIHZlcnRleCBpcyBvbiBib3R0b20gb2Ygdm9sdW1lCiNpZm5kZWYgQ09MVU1CVVNfVklFV18yRAppbiB2ZWM0IHN0YXJ0SGlBbmRGb3J3YXJkT2Zmc2V0WDsKaW4gdmVjNCBzdGFydExvQW5kRm9yd2FyZE9mZnNldFk7CmluIHZlYzQgc3RhcnROb3JtYWxBbmRGb3J3YXJkT2Zmc2V0WjsKaW4gdmVjNCBlbmROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25YOwppbiB2ZWM0IHJpZ2h0Tm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWTsKI2Vsc2UKaW4gdmVjNCBzdGFydEhpTG8yRDsKaW4gdmVjNCBvZmZzZXRBbmRSaWdodDJEOwppbiB2ZWM0IHN0YXJ0RW5kTm9ybWFsczJEOwppbiB2ZWMyIHRleGNvb3JkTm9ybWFsaXphdGlvbjJEOwojZW5kaWYKCmluIGZsb2F0IGJhdGNoSWQ7CgpvdXQgdmVjNCB2X3N0YXJ0UGxhbmVOb3JtYWxFY0FuZEhhbGZXaWR0aDsKb3V0IHZlYzQgdl9lbmRQbGFuZU5vcm1hbEVjQW5kQmF0Y2hJZDsKb3V0IHZlYzQgdl9yaWdodFBsYW5lRUM7Cm91dCB2ZWM0IHZfZW5kRWNBbmRTdGFydEVjWDsKb3V0IHZlYzQgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVo7CgovLyBGb3IgbWF0ZXJpYWxzCiNpZmRlZiBXSURUSF9WQVJZSU5HCm91dCBmbG9hdCB2X3dpZHRoOwojZW5kaWYKI2lmZGVmIEFOR0xFX1ZBUllJTkcKb3V0IGZsb2F0IHZfcG9seWxpbmVBbmdsZTsKI2VuZGlmCgojaWZkZWYgUEVSX0lOU1RBTkNFX0NPTE9SCm91dCB2ZWM0IHZfY29sb3I7CiNlbmRpZgoKdm9pZCBtYWluKCkKewojaWZkZWYgQ09MVU1CVVNfVklFV18yRAogICAgdmVjMyBlY1N0YXJ0ID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHN0YXJ0SGlMbzJELnh5KSwgdmVjMygwLjAsIHN0YXJ0SGlMbzJELnp3KSkpLnh5ejsKCiAgICB2ZWMzIGZvcndhcmREaXJlY3Rpb25FQyA9IGN6bV9ub3JtYWwgKiB2ZWMzKDAuMCwgb2Zmc2V0QW5kUmlnaHQyRC54eSk7CiAgICB2ZWMzIGVjRW5kID0gZm9yd2FyZERpcmVjdGlvbkVDICsgZWNTdGFydDsKICAgIGZvcndhcmREaXJlY3Rpb25FQyA9IG5vcm1hbGl6ZShmb3J3YXJkRGlyZWN0aW9uRUMpOwoKICAgIC8vIFJpZ2h0IHBsYW5lCiAgICB2X3JpZ2h0UGxhbmVFQy54eXogPSBjem1fbm9ybWFsICogdmVjMygwLjAsIG9mZnNldEFuZFJpZ2h0MkQuencpOwogICAgdl9yaWdodFBsYW5lRUMudyA9IC1kb3Qodl9yaWdodFBsYW5lRUMueHl6LCBlY1N0YXJ0KTsKCiAgICAvLyBzdGFydCBwbGFuZQogICAgdmVjNCBzdGFydFBsYW5lRUM7CiAgICBzdGFydFBsYW5lRUMueHl6ID0gIGN6bV9ub3JtYWwgKiB2ZWMzKDAuMCwgc3RhcnRFbmROb3JtYWxzMkQueHkpOwogICAgc3RhcnRQbGFuZUVDLncgPSAtZG90KHN0YXJ0UGxhbmVFQy54eXosIGVjU3RhcnQpOwoKICAgIC8vIGVuZCBwbGFuZQogICAgdmVjNCBlbmRQbGFuZUVDOwogICAgZW5kUGxhbmVFQy54eXogPSAgY3ptX25vcm1hbCAqIHZlYzMoMC4wLCBzdGFydEVuZE5vcm1hbHMyRC56dyk7CiAgICBlbmRQbGFuZUVDLncgPSAtZG90KGVuZFBsYW5lRUMueHl6LCBlY0VuZCk7CgogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueCA9IGFicyh0ZXhjb29yZE5vcm1hbGl6YXRpb24yRC54KTsKICAgIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kU3RhcnRFY1laLnkgPSB0ZXhjb29yZE5vcm1hbGl6YXRpb24yRC55OwoKI2Vsc2UgLy8gQ09MVU1CVVNfVklFV18yRAogICAgdmVjMyBlY1N0YXJ0ID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUoc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYLnh5eiwgc3RhcnRMb0FuZEZvcndhcmRPZmZzZXRZLnh5eikpLnh5ejsKICAgIHZlYzMgb2Zmc2V0ID0gY3ptX25vcm1hbCAqIHZlYzMoc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYLncsIHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WS53LCBzdGFydE5vcm1hbEFuZEZvcndhcmRPZmZzZXRaLncpOwogICAgdmVjMyBlY0VuZCA9IGVjU3RhcnQgKyBvZmZzZXQ7CgogICAgdmVjMyBmb3J3YXJkRGlyZWN0aW9uRUMgPSBub3JtYWxpemUob2Zmc2V0KTsKCiAgICAvLyBzdGFydCBwbGFuZQogICAgdmVjNCBzdGFydFBsYW5lRUM7CiAgICBzdGFydFBsYW5lRUMueHl6ID0gY3ptX25vcm1hbCAqIHN0YXJ0Tm9ybWFsQW5kRm9yd2FyZE9mZnNldFoueHl6OwogICAgc3RhcnRQbGFuZUVDLncgPSAtZG90KHN0YXJ0UGxhbmVFQy54eXosIGVjU3RhcnQpOwoKICAgIC8vIGVuZCBwbGFuZQogICAgdmVjNCBlbmRQbGFuZUVDOwogICAgZW5kUGxhbmVFQy54eXogPSBjem1fbm9ybWFsICogZW5kTm9ybWFsQW5kVGV4dHVyZUNvb3JkaW5hdGVOb3JtYWxpemF0aW9uWC54eXo7CiAgICBlbmRQbGFuZUVDLncgPSAtZG90KGVuZFBsYW5lRUMueHl6LCBlY0VuZCk7CgogICAgLy8gUmlnaHQgcGxhbmUKICAgIHZfcmlnaHRQbGFuZUVDLnh5eiA9IGN6bV9ub3JtYWwgKiByaWdodE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblkueHl6OwogICAgdl9yaWdodFBsYW5lRUMudyA9IC1kb3Qodl9yaWdodFBsYW5lRUMueHl6LCBlY1N0YXJ0KTsKCiAgICB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi54ID0gYWJzKGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblgudyk7CiAgICB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi55ID0gcmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZLnc7CgojZW5kaWYgLy8gQ09MVU1CVVNfVklFV18yRAoKICAgIHZfZW5kRWNBbmRTdGFydEVjWC54eXogPSBlY0VuZDsKICAgIHZfZW5kRWNBbmRTdGFydEVjWC53ID0gZWNTdGFydC54OwogICAgdl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVouencgPSBlY1N0YXJ0Lnl6OwoKI2lmZGVmIFBFUl9JTlNUQU5DRV9DT0xPUgogICAgdl9jb2xvciA9IGN6bV9iYXRjaFRhYmxlX2NvbG9yKGJhdGNoSWQpOwojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCgogICAgLy8gQ29tcHV0ZSBhIG5vcm1hbCBhbG9uZyB3aGljaCB0byAicHVzaCIgdGhlIHBvc2l0aW9uIG91dCwgZXh0ZW5kaW5nIHRoZSBtaXRlciBkZXBlbmRpbmcgb24gdmlldyBkaXN0YW5jZS4KICAgIC8vIFBvc2l0aW9uIGhhcyBhbHJlYWR5IGJlZW4gInB1c2hlZCIgYnkgdW5pdCBsZW5ndGggYWxvbmcgbWl0ZXIgbm9ybWFsLCBhbmQgbWl0ZXIgbm9ybWFscyBhcmUgZW5jb2RlZCBpbiB0aGUgcGxhbmVzLgogICAgLy8gRGVjb2RlIHRoZSBub3JtYWwgdG8gdXNlIGF0IHRoaXMgc3BlY2lmaWMgdmVydGV4LCBwdXNoIHRoZSBwb3NpdGlvbiBiYWNrLCBhbmQgdGhlbiBwdXNoIHRvIHdoZXJlIGl0IG5lZWRzIHRvIGJlLgogICAgdmVjNCBwb3NpdGlvblJlbGF0aXZlVG9FeWUgPSBjem1fY29tcHV0ZVBvc2l0aW9uKCk7CgogICAgLy8gQ2hlY2sgZGlzdGFuY2UgdG8gdGhlIGVuZCBwbGFuZSBhbmQgc3RhcnQgcGxhbmUsIHBpY2sgdGhlIHBsYW5lIHRoYXQgaXMgY2xvc2VyCiAgICB2ZWM0IHBvc2l0aW9uRUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHBvc2l0aW9uUmVsYXRpdmVUb0V5ZTsgLy8gdyA9IDEuMCwgc2VlIGN6bV9jb21wdXRlUG9zaXRpb24KICAgIGZsb2F0IGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA9IGFicyhjem1fcGxhbmVEaXN0YW5jZShzdGFydFBsYW5lRUMsIHBvc2l0aW9uRUMueHl6KSk7CiAgICBmbG9hdCBhYnNFbmRQbGFuZURpc3RhbmNlID0gYWJzKGN6bV9wbGFuZURpc3RhbmNlKGVuZFBsYW5lRUMsIHBvc2l0aW9uRUMueHl6KSk7CiAgICB2ZWMzIHBsYW5lRGlyZWN0aW9uID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGFic1N0YXJ0UGxhbmVEaXN0YW5jZSA8IGFic0VuZFBsYW5lRGlzdGFuY2UsIHN0YXJ0UGxhbmVFQy54eXosIGVuZFBsYW5lRUMueHl6KTsKICAgIHZlYzMgdXBPckRvd24gPSBub3JtYWxpemUoY3Jvc3Modl9yaWdodFBsYW5lRUMueHl6LCBwbGFuZURpcmVjdGlvbikpOyAvLyBQb2ludHMgInVwIiBmb3Igc3RhcnQgcGxhbmUsICJkb3duIiBhdCBlbmQgcGxhbmUuCiAgICB2ZWMzIG5vcm1hbEVDID0gbm9ybWFsaXplKGNyb3NzKHBsYW5lRGlyZWN0aW9uLCB1cE9yRG93bikpOyAgICAgICAgICAgLy8gSW4gcHJhY3RpY2UsIHRoZSBvcHBvc2l0ZSBzZWVtcyB0byB3b3JrIHRvby4KCiAgICAvLyBFeHRydWRlIGJvdHRvbSB2ZXJ0aWNlcyBkb3dud2FyZCBmb3IgZmFyIHZpZXcgZGlzdGFuY2VzLCBsaWtlIGZvciBHcm91bmRQcmltaXRpdmVzCiAgICB1cE9yRG93biA9IGNyb3NzKGZvcndhcmREaXJlY3Rpb25FQywgbm9ybWFsRUMpOwogICAgdXBPckRvd24gPSBmbG9hdChjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUzRCkgKiB1cE9yRG93bjsKICAgIHVwT3JEb3duID0gZmxvYXQodl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueSA+IDEuMCB8fCB2X3RleGNvb3JkTm9ybWFsaXphdGlvbkFuZFN0YXJ0RWNZWi55IDwgMC4wKSAqIHVwT3JEb3duOwogICAgdXBPckRvd24gPSBtaW4oR0xPQkVfTUlOSU1VTV9BTFRJVFVERSwgY3ptX2dlb21ldHJpY1RvbGVyYW5jZU92ZXJNZXRlciAqIGxlbmd0aChwb3NpdGlvblJlbGF0aXZlVG9FeWUueHl6KSkgKiB1cE9yRG93bjsKICAgIHBvc2l0aW9uRUMueHl6ICs9IHVwT3JEb3duOwoKICAgIHZfdGV4Y29vcmROb3JtYWxpemF0aW9uQW5kU3RhcnRFY1laLnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkodl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueSA+IDEuMCwgMC4wLCBhYnModl90ZXhjb29yZE5vcm1hbGl6YXRpb25BbmRTdGFydEVjWVoueSkpOwoKICAgIC8vIERldGVybWluZSBkaXN0YW5jZSBhbG9uZyBub3JtYWxFQyB0byBwdXNoIGZvciBhIHZvbHVtZSBvZiBhcHByb3ByaWF0ZSB3aWR0aC4KICAgIC8vIE1ha2Ugdm9sdW1lcyBhYm91dCBkb3VibGUgcGl4ZWwgd2lkdGggZm9yIGEgY29uc2VydmF0aXZlIGZpdCAtIGluIHByYWN0aWNlIHRoZQogICAgLy8gZXh0cmEgY29zdCBoZXJlIGlzIG1pbmltYWwgY29tcGFyZWQgdG8gdGhlIGxvb3NlIHZvbHVtZSBoZWlnaHRzLgogICAgLy8KICAgIC8vIE4gPSBub3JtYWxFQyAoZ3VhcmFudGVlZCAicmlnaHQtZmFjaW5nIikKICAgIC8vIFIgPSByaWdodEVDCiAgICAvLyBwID0gYW5nbGUgYmV0d2VlbiBOIGFuZCBSCiAgICAvLyB3ID0gZGlzdGFuY2UgdG8gcHVzaCBhbG9uZyBSIGlmIFIgPT0gTgogICAgLy8gZCA9IGRpc3RhbmNlIHRvIHB1c2ggYWxvbmcgTgogICAgLy8KICAgIC8vICAgTiAgIFIKICAgIC8vICB7ICBwfCB9ICAgICAgKiBjb3MocCkgPSBkb3QoTiwgUikgPSB3IC8gZAogICAgLy8gIGQgIHwgIHx3ICAgICogZCA9IHcgLyBkb3QoTiwgUikKICAgIC8vICAgIHsgfCB9CiAgICAvLyAgICAgICBvLS0tLS0tLS0tLSBwb2x5bGluZSBzZWdtZW50IC0tLS0+CiAgICAvLwogICAgZmxvYXQgd2lkdGggPSBjem1fYmF0Y2hUYWJsZV93aWR0aChiYXRjaElkKTsKI2lmZGVmIFdJRFRIX1ZBUllJTkcKICAgIHZfd2lkdGggPSB3aWR0aDsKI2VuZGlmCgogICAgdl9zdGFydFBsYW5lTm9ybWFsRWNBbmRIYWxmV2lkdGgueHl6ID0gc3RhcnRQbGFuZUVDLnh5ejsKICAgIHZfc3RhcnRQbGFuZU5vcm1hbEVjQW5kSGFsZldpZHRoLncgPSB3aWR0aCAqIDAuNTsKCiAgICB2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLnh5eiA9IGVuZFBsYW5lRUMueHl6OwogICAgdl9lbmRQbGFuZU5vcm1hbEVjQW5kQmF0Y2hJZC53ID0gYmF0Y2hJZDsKCiAgICB3aWR0aCA9IHdpZHRoICogbWF4KDAuMCwgY3ptX21ldGVyc1BlclBpeGVsKHBvc2l0aW9uRUMpKTsgLy8gd2lkdGggPSBkaXN0YW5jZSB0byBwdXNoIGFsb25nIFIKICAgIHdpZHRoID0gd2lkdGggLyBkb3Qobm9ybWFsRUMsIHZfcmlnaHRQbGFuZUVDLnh5eik7IC8vIHdpZHRoID0gZGlzdGFuY2UgdG8gcHVzaCBhbG9uZyBOCgogICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgdmVydGV4IGlzIG9uIHRoZSAibGVmdCIgb3IgInJpZ2h0IgojaWZkZWYgQ09MVU1CVVNfVklFV18yRAogICAgICAgIG5vcm1hbEVDICo9IHNpZ24odGV4Y29vcmROb3JtYWxpemF0aW9uMkQueCk7CiNlbHNlCiAgICAgICAgbm9ybWFsRUMgKj0gc2lnbihlbmROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25YLncpOwojZW5kaWYKCiAgICBwb3NpdGlvbkVDLnh5eiArPSB3aWR0aCAqIG5vcm1hbEVDOwogICAgZ2xfUG9zaXRpb24gPSBjem1fZGVwdGhDbGFtcChjem1fcHJvamVjdGlvbiAqIHBvc2l0aW9uRUMpOwoKI2lmZGVmIEFOR0xFX1ZBUllJTkcKICAgIC8vIEFwcHJveGltYXRlIHJlbGF0aXZlIHNjcmVlbiBzcGFjZSBkaXJlY3Rpb24gb2YgdGhlIGxpbmUuCiAgICB2ZWMyIGFwcHJveExpbmVEaXJlY3Rpb24gPSBub3JtYWxpemUodmVjMihmb3J3YXJkRGlyZWN0aW9uRUMueCwgLWZvcndhcmREaXJlY3Rpb25FQy55KSk7CiAgICBhcHByb3hMaW5lRGlyZWN0aW9uLnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoYXBwcm94TGluZURpcmVjdGlvbi54ID09IDAuMCAmJiBhcHByb3hMaW5lRGlyZWN0aW9uLnkgPT0gMC4wLCAtMS4wLCBhcHByb3hMaW5lRGlyZWN0aW9uLnkpOwogICAgdl9wb2x5bGluZUFuZ2xlID0gY3ptX2Zhc3RBcHByb3hpbWF0ZUF0YW4oYXBwcm94TGluZURpcmVjdGlvbi54LCBhcHByb3hMaW5lRGlyZWN0aW9uLnkpOwojZW5kaWYKfQpgfSk7dmFyIEV4LEpyLFVJPVMoKCk9PntFeD17VEVSUkFJTjowLENFU0lVTV8zRF9USUxFOjEsQk9USDoyfTtFeC5OVU1CRVJfT0ZfQ0xBU1NJRklDQVRJT05fVFlQRVM9MztKcj1PYmplY3QuZnJlZXplKEV4KX0pO3ZhciBWbnQsRWgsTUk9UygoKT0+e3NzKCk7Vm50PXtGUk9OVDppdC5GUk9OVCxCQUNLOml0LkJBQ0ssRlJPTlRfQU5EX0JBQ0s6aXQuRlJPTlRfQU5EX0JBQ0t9LEVoPU9iamVjdC5mcmVlemUoVm50KX0pO2Z1bmN0aW9uIFpzKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLnBvc2l0aW9uPVoodC5wb3NpdGlvbiwhMSksdGhpcy5ub3JtYWw9Wih0Lm5vcm1hbCwhMSksdGhpcy5zdD1aKHQuc3QsITEpLHRoaXMuYml0YW5nZW50PVoodC5iaXRhbmdlbnQsITEpLHRoaXMudGFuZ2VudD1aKHQudGFuZ2VudCwhMSksdGhpcy5jb2xvcj1aKHQuY29sb3IsITEpfXZhciBTdCxMcz1TKCgpPT57RnQoKTttdCgpO090KCk7WnMuUE9TSVRJT05fT05MWT1PYmplY3QuZnJlZXplKG5ldyBacyh7cG9zaXRpb246ITB9KSk7WnMuUE9TSVRJT05fQU5EX05PUk1BTD1PYmplY3QuZnJlZXplKG5ldyBacyh7cG9zaXRpb246ITAsbm9ybWFsOiEwfSkpO1pzLlBPU0lUSU9OX05PUk1BTF9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgWnMoe3Bvc2l0aW9uOiEwLG5vcm1hbDohMCxzdDohMH0pKTtacy5QT1NJVElPTl9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgWnMoe3Bvc2l0aW9uOiEwLHN0OiEwfSkpO1pzLlBPU0lUSU9OX0FORF9DT0xPUj1PYmplY3QuZnJlZXplKG5ldyBacyh7cG9zaXRpb246ITAsY29sb3I6ITB9KSk7WnMuQUxMPU9iamVjdC5mcmVlemUobmV3IFpzKHtwb3NpdGlvbjohMCxub3JtYWw6ITAsc3Q6ITAsdGFuZ2VudDohMCxiaXRhbmdlbnQ6ITB9KSk7WnMuREVGQVVMVD1acy5QT1NJVElPTl9OT1JNQUxfQU5EX1NUO1pzLnBhY2tlZExlbmd0aD02O1pzLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxlW2krK109dC5wb3NpdGlvbj8xOjAsZVtpKytdPXQubm9ybWFsPzE6MCxlW2krK109dC5zdD8xOjAsZVtpKytdPXQudGFuZ2VudD8xOjAsZVtpKytdPXQuYml0YW5nZW50PzE6MCxlW2ldPXQuY29sb3I/MTowLGV9O1pzLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIGU9WihlLDApLG0oaSl8fChpPW5ldyBacyksaS5wb3NpdGlvbj10W2UrK109PT0xLGkubm9ybWFsPXRbZSsrXT09PTEsaS5zdD10W2UrK109PT0xLGkudGFuZ2VudD10W2UrK109PT0xLGkuYml0YW5nZW50PXRbZSsrXT09PTEsaS5jb2xvcj10W2VdPT09MSxpfTtacy5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSl8fChlPW5ldyBacyksZS5wb3NpdGlvbj10LnBvc2l0aW9uLGUubm9ybWFsPXQubm9ybWFsLGUuc3Q9dC5zdCxlLnRhbmdlbnQ9dC50YW5nZW50LGUuYml0YW5nZW50PXQuYml0YW5nZW50LGUuY29sb3I9dC5jb2xvcixlfTtTdD1ac30pO3ZhciBRSSxCTj1TKCgpPT57UUk9YGluIHZlYzQgdl9jb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIG91dF9GcmFnQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHZfY29sb3IpOwp9CmB9KTt2YXIgX3gsUng9UygoKT0+e194PWBpbiB2ZWMzIHBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHBvc2l0aW9uM0RMb3c7CmluIHZlYzMgcHJldlBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHByZXZQb3NpdGlvbjNETG93OwppbiB2ZWMzIG5leHRQb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBuZXh0UG9zaXRpb24zRExvdzsKaW4gdmVjMiBleHBhbmRBbmRXaWR0aDsKaW4gdmVjNCBjb2xvcjsKaW4gZmxvYXQgYmF0Y2hJZDsKCm91dCB2ZWM0IHZfY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICBmbG9hdCBleHBhbmREaXIgPSBleHBhbmRBbmRXaWR0aC54OwogICAgZmxvYXQgd2lkdGggPSBhYnMoZXhwYW5kQW5kV2lkdGgueSkgKyAwLjU7CiAgICBib29sIHVzZVByZXYgPSBleHBhbmRBbmRXaWR0aC55IDwgMC4wOwoKICAgIHZlYzQgcCA9IGN6bV9jb21wdXRlUG9zaXRpb24oKTsKICAgIHZlYzQgcHJldiA9IGN6bV9jb21wdXRlUHJldlBvc2l0aW9uKCk7CiAgICB2ZWM0IG5leHQgPSBjem1fY29tcHV0ZU5leHRQb3NpdGlvbigpOwoKICAgIGZsb2F0IGFuZ2xlOwogICAgdmVjNCBwb3NpdGlvbldDID0gZ2V0UG9seWxpbmVXaW5kb3dDb29yZGluYXRlcyhwLCBwcmV2LCBuZXh0LCBleHBhbmREaXIsIHdpZHRoLCB1c2VQcmV2LCBhbmdsZSk7CiAgICBnbF9Qb3NpdGlvbiA9IGN6bV92aWV3cG9ydE9ydGhvZ3JhcGhpYyAqIHBvc2l0aW9uV0M7CgogICAgdl9jb2xvciA9IGNvbG9yOwp9CmB9KTt2YXIga0ksR049UygoKT0+e2tJPWB2b2lkIGNsaXBMaW5lU2VnbWVudFRvTmVhclBsYW5lKAogICAgdmVjMyBwMCwKICAgIHZlYzMgcDEsCiAgICBvdXQgdmVjNCBwb3NpdGlvbldDLAogICAgb3V0IGJvb2wgY2xpcHBlZCwKICAgIG91dCBib29sIGN1bGxlZEJ5TmVhclBsYW5lLAogICAgb3V0IHZlYzQgY2xpcHBlZFBvc2l0aW9uRUMpCnsKICAgIGN1bGxlZEJ5TmVhclBsYW5lID0gZmFsc2U7CiAgICBjbGlwcGVkID0gZmFsc2U7CgogICAgdmVjMyBwMFRvUDEgPSBwMSAtIHAwOwogICAgZmxvYXQgbWFnbml0dWRlID0gbGVuZ3RoKHAwVG9QMSk7CiAgICB2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZShwMFRvUDEpOwoKICAgIC8vIERpc3RhbmNlIHRoYXQgcDAgaXMgYmVoaW5kIHRoZSBuZWFyIHBsYW5lLiBOZWdhdGl2ZSBtZWFucyBwMCBpcwogICAgLy8gaW4gZnJvbnQgb2YgdGhlIG5lYXIgcGxhbmUuCiAgICBmbG9hdCBlbmRQb2ludDBEaXN0YW5jZSA9ICBjem1fY3VycmVudEZydXN0dW0ueCArIHAwLno7CgogICAgLy8gQ2FtZXJhIGxvb2tzIGRvd24gLVouCiAgICAvLyBXaGVuIG1vdmluZyBhIHBvaW50IGFsb25nICtaOiBMRVNTIFZJU0lCTEUKICAgIC8vICAgKiBQb2ludHMgaW4gZnJvbnQgb2YgdGhlIGNhbWVyYSBtb3ZlIGNsb3NlciB0byB0aGUgY2FtZXJhLgogICAgLy8gICAqIFBvaW50cyBiZWhpbmQgdGhlIGNhbXJlYSBtb3ZlIGZhcnRoZXIgYXdheSBmcm9tIHRoZSBjYW1lcmEuCiAgICAvLyBXaGVuIG1vdmluZyBhIHBvaW50IGFsb25nIC1aOiBNT1JFIFZJU0lCTEUKICAgIC8vICAgKiBQb2ludHMgaW4gZnJvbnQgb2YgdGhlIGNhbWVyYSBtb3ZlIGZhcnRoZXIgYXdheSBmcm9tIHRoZSBjYW1lcmEuCiAgICAvLyAgICogUG9pbnRzIGJlaGluZCB0aGUgY2FtZXJhIG1vdmUgY2xvc2VyIHRvIHRoZSBjYW1lcmEuCgogICAgLy8gUG9zaXRpdmUgZGVub21pbmF0b3I6IC1aLCBiZWNvbWluZyBtb3JlIHZpc2libGUKICAgIC8vIE5lZ2F0aXZlIGRlbm9taW5hdG9yOiArWiwgYmVjb21pbmcgbGVzcyB2aXNpYmxlCiAgICAvLyBOZWFybHkgemVybzogcGFyYWxsZWwgdG8gbmVhciBwbGFuZQogICAgZmxvYXQgZGVub21pbmF0b3IgPSAtZGlyZWN0aW9uLno7CgogICAgaWYgKGVuZFBvaW50MERpc3RhbmNlID4gMC4wICYmIGFicyhkZW5vbWluYXRvcikgPCBjem1fZXBzaWxvbjcpCiAgICB7CiAgICAgICAgLy8gcDAgaXMgYmVoaW5kIHRoZSBuZWFyIHBsYW5lIGFuZCB0aGUgbGluZSB0byBwMSBpcyBuZWFybHkgcGFyYWxsZWwgdG8KICAgICAgICAvLyB0aGUgbmVhciBwbGFuZSwgc28gY3VsbCB0aGUgc2VnbWVudCBjb21wbGV0ZWx5LgogICAgICAgIGN1bGxlZEJ5TmVhclBsYW5lID0gdHJ1ZTsKICAgIH0KICAgIGVsc2UgaWYgKGVuZFBvaW50MERpc3RhbmNlID4gMC4wKQogICAgewogICAgICAgIC8vIHAwIGlzIGJlaGluZCB0aGUgbmVhciBwbGFuZSwgYW5kIHRoZSBsaW5lIHRvIHAxIGlzIG1vdmluZyBkaXN0aW5jdGx5CiAgICAgICAgLy8gdG93YXJkIG9yIGF3YXkgZnJvbSBpdC4KCiAgICAgICAgLy8gdCA9ICgtcGxhbmUgZGlzdGFuY2UgLSBkb3QocGxhbmUgbm9ybWFsLCByYXkgb3JpZ2luKSkgLyBkb3QocGxhbmUgbm9ybWFsLCByYXkgZGlyZWN0aW9uKQogICAgICAgIGZsb2F0IHQgPSBlbmRQb2ludDBEaXN0YW5jZSAvIGRlbm9taW5hdG9yOwogICAgICAgIGlmICh0IDwgMC4wIHx8IHQgPiBtYWduaXR1ZGUpCiAgICAgICAgewogICAgICAgICAgICAvLyBOZWFyIHBsYW5lIGludGVyc2VjdGlvbiBpcyBub3QgYmV0d2VlbiB0aGUgdHdvIHBvaW50cy4KICAgICAgICAgICAgLy8gV2UgYWxyZWFkeSBjb25maXJtZWQgcDAgaXMgYmVoaW5kIHRoZSBuYWVyIHBsYW5lLCBzbyBub3cKICAgICAgICAgICAgLy8gd2Uga25vdyB0aGUgZW50aXJlIHNlZ21lbnQgaXMgYmVoaW5kIGl0LgogICAgICAgICAgICBjdWxsZWRCeU5lYXJQbGFuZSA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIC8vIFNlZ21lbnQgY3Jvc3NlcyB0aGUgbmVhciBwbGFuZSwgdXBkYXRlIHAwIHRvIGxpZSBleGFjdGx5IG9uIGl0LgogICAgICAgICAgICBwMCA9IHAwICsgdCAqIGRpcmVjdGlvbjsKCiAgICAgICAgICAgIC8vIE51bWVyaWNhbCBub2lzZSBtaWdodCBwdXQgdXMgYSBiaXQgb24gdGhlIHdyb25nIHNpZGUgb2YgdGhlIG5lYXIgcGxhbmUuCiAgICAgICAgICAgIC8vIERvbid0IGxldCB0aGF0IGhhcHBlbi4KICAgICAgICAgICAgcDAueiA9IG1pbihwMC56LCAtY3ptX2N1cnJlbnRGcnVzdHVtLngpOwoKICAgICAgICAgICAgY2xpcHBlZCA9IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIGNsaXBwZWRQb3NpdGlvbkVDID0gdmVjNChwMCwgMS4wKTsKICAgIHBvc2l0aW9uV0MgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhjbGlwcGVkUG9zaXRpb25FQyk7Cn0KCnZlYzQgZ2V0UG9seWxpbmVXaW5kb3dDb29yZGluYXRlc0VDKHZlYzQgcG9zaXRpb25FQywgdmVjNCBwcmV2RUMsIHZlYzQgbmV4dEVDLCBmbG9hdCBleHBhbmREaXJlY3Rpb24sIGZsb2F0IHdpZHRoLCBib29sIHVzZVByZXZpb3VzLCBvdXQgZmxvYXQgYW5nbGUpCnsKICAgIC8vIGV4cGFuZERpcmVjdGlvbiArMSBpcyB0byB0aGUgX2xlZnRfIHdoZW4gbG9va2luZyBmcm9tIHBvc2l0aW9uRUMgdG93YXJkIG5leHRFQy4KCiNpZmRlZiBQT0xZTElORV9EQVNICiAgICAvLyBDb21wdXRlIHRoZSB3aW5kb3cgY29vcmRpbmF0ZXMgb2YgdGhlIHBvaW50cy4KICAgIHZlYzQgcG9zaXRpb25XaW5kb3cgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhwb3NpdGlvbkVDKTsKICAgIHZlYzQgcHJldmlvdXNXaW5kb3cgPSBjem1fZXllVG9XaW5kb3dDb29yZGluYXRlcyhwcmV2RUMpOwogICAgdmVjNCBuZXh0V2luZG93ID0gY3ptX2V5ZVRvV2luZG93Q29vcmRpbmF0ZXMobmV4dEVDKTsKCiAgICAvLyBEZXRlcm1pbmUgdGhlIHJlbGF0aXZlIHNjcmVlbiBzcGFjZSBkaXJlY3Rpb24gb2YgdGhlIGxpbmUuCiAgICB2ZWMyIGxpbmVEaXI7CiAgICBpZiAodXNlUHJldmlvdXMpIHsKICAgICAgICBsaW5lRGlyID0gbm9ybWFsaXplKHBvc2l0aW9uV2luZG93Lnh5IC0gcHJldmlvdXNXaW5kb3cueHkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbGluZURpciA9IG5vcm1hbGl6ZShuZXh0V2luZG93Lnh5IC0gcG9zaXRpb25XaW5kb3cueHkpOwogICAgfQogICAgYW5nbGUgPSBhdGFuKGxpbmVEaXIueCwgbGluZURpci55KSAtIDEuNTcwNzk2MzI3OyAvLyBwcmVjb21wdXRlZCBhdGFuKDEsMCkKCiAgICAvLyBRdWFudGl6ZSB0aGUgYW5nbGUgc28gaXQgZG9lc24ndCBjaGFuZ2UgcmFwaWRseSBiZXR3ZWVuIHNlZ21lbnRzLgogICAgYW5nbGUgPSBmbG9vcihhbmdsZSAvIGN6bV9waU92ZXJGb3VyICsgMC41KSAqIGN6bV9waU92ZXJGb3VyOwojZW5kaWYKCiAgICB2ZWM0IGNsaXBwZWRQcmV2V0MsIGNsaXBwZWRQcmV2RUM7CiAgICBib29sIHByZXZTZWdtZW50Q2xpcHBlZCwgcHJldlNlZ21lbnRDdWxsZWQ7CiAgICBjbGlwTGluZVNlZ21lbnRUb05lYXJQbGFuZShwcmV2RUMueHl6LCBwb3NpdGlvbkVDLnh5eiwgY2xpcHBlZFByZXZXQywgcHJldlNlZ21lbnRDbGlwcGVkLCBwcmV2U2VnbWVudEN1bGxlZCwgY2xpcHBlZFByZXZFQyk7CgogICAgdmVjNCBjbGlwcGVkTmV4dFdDLCBjbGlwcGVkTmV4dEVDOwogICAgYm9vbCBuZXh0U2VnbWVudENsaXBwZWQsIG5leHRTZWdtZW50Q3VsbGVkOwogICAgY2xpcExpbmVTZWdtZW50VG9OZWFyUGxhbmUobmV4dEVDLnh5eiwgcG9zaXRpb25FQy54eXosIGNsaXBwZWROZXh0V0MsIG5leHRTZWdtZW50Q2xpcHBlZCwgbmV4dFNlZ21lbnRDdWxsZWQsIGNsaXBwZWROZXh0RUMpOwoKICAgIGJvb2wgc2VnbWVudENsaXBwZWQsIHNlZ21lbnRDdWxsZWQ7CiAgICB2ZWM0IGNsaXBwZWRQb3NpdGlvbldDLCBjbGlwcGVkUG9zaXRpb25FQzsKICAgIGNsaXBMaW5lU2VnbWVudFRvTmVhclBsYW5lKHBvc2l0aW9uRUMueHl6LCB1c2VQcmV2aW91cyA/IHByZXZFQy54eXogOiBuZXh0RUMueHl6LCBjbGlwcGVkUG9zaXRpb25XQywgc2VnbWVudENsaXBwZWQsIHNlZ21lbnRDdWxsZWQsIGNsaXBwZWRQb3NpdGlvbkVDKTsKCiAgICBpZiAoc2VnbWVudEN1bGxlZCkKICAgIHsKICAgICAgICByZXR1cm4gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOwogICAgfQoKICAgIHZlYzIgZGlyZWN0aW9uVG9QcmV2V0MgPSBub3JtYWxpemUoY2xpcHBlZFByZXZXQy54eSAtIGNsaXBwZWRQb3NpdGlvbldDLnh5KTsKICAgIHZlYzIgZGlyZWN0aW9uVG9OZXh0V0MgPSBub3JtYWxpemUoY2xpcHBlZE5leHRXQy54eSAtIGNsaXBwZWRQb3NpdGlvbldDLnh5KTsKCiAgICAvLyBJZiBhIHNlZ21lbnQgd2FzIGN1bGxlZCwgd2UgY2FuJ3QgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdGlvbgogICAgLy8gY29tcHV0ZWQgYWJvdmUuIFdlIHNob3VsZCBuZXZlciBzZWUgYm90aCBvZiB0aGVzZSBiZSB0cnVlIHdpdGhvdXQKICAgIC8vIFxgc2VnbWVudEN1bGxlZFxgIGFib3ZlIGFsc28gYmVpbmcgdHJ1ZS4KICAgIGlmIChwcmV2U2VnbWVudEN1bGxlZCkKICAgIHsKICAgICAgICBkaXJlY3Rpb25Ub1ByZXZXQyA9IC1kaXJlY3Rpb25Ub05leHRXQzsKICAgIH0KICAgIGVsc2UgaWYgKG5leHRTZWdtZW50Q3VsbGVkKQogICAgewogICAgICAgIGRpcmVjdGlvblRvTmV4dFdDID0gLWRpcmVjdGlvblRvUHJldldDOwogICAgfQoKICAgIHZlYzIgdGhpc1NlZ21lbnRGb3J3YXJkV0MsIG90aGVyU2VnbWVudEZvcndhcmRXQzsKICAgIGlmICh1c2VQcmV2aW91cykKICAgIHsKICAgICAgICB0aGlzU2VnbWVudEZvcndhcmRXQyA9IC1kaXJlY3Rpb25Ub1ByZXZXQzsKICAgICAgICBvdGhlclNlZ21lbnRGb3J3YXJkV0MgPSBkaXJlY3Rpb25Ub05leHRXQzsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0aGlzU2VnbWVudEZvcndhcmRXQyA9IGRpcmVjdGlvblRvTmV4dFdDOwogICAgICAgIG90aGVyU2VnbWVudEZvcndhcmRXQyA9ICAtZGlyZWN0aW9uVG9QcmV2V0M7CiAgICB9CgogICAgdmVjMiB0aGlzU2VnbWVudExlZnRXQyA9IHZlYzIoLXRoaXNTZWdtZW50Rm9yd2FyZFdDLnksIHRoaXNTZWdtZW50Rm9yd2FyZFdDLngpOwoKICAgIHZlYzIgbGVmdFdDID0gdGhpc1NlZ21lbnRMZWZ0V0M7CiAgICBmbG9hdCBleHBhbmRXaWR0aCA9IHdpZHRoICogMC41OwoKICAgIC8vIFdoZW4gbGluZXMgYXJlIHNwbGl0IGF0IHRoZSBhbnRpLW1lcmlkaWFuLCB0aGUgcG9zaXRpb24gbWF5IGJlIGF0IHRoZQogICAgLy8gc2FtZSBsb2NhdGlvbiBhcyB0aGUgbmV4dCBvciBwcmV2aW91cyBwb3NpdGlvbiwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlCiAgICAvLyB0aGF0IHRvIGF2b2lkIHByb2R1Y2luZyBOYU5zLgogICAgaWYgKCFjem1fZXF1YWxzRXBzaWxvbihwcmV2RUMueHl6IC0gcG9zaXRpb25FQy54eXosIHZlYzMoMC4wKSwgY3ptX2Vwc2lsb24xKSAmJiAhY3ptX2VxdWFsc0Vwc2lsb24obmV4dEVDLnh5eiAtIHBvc2l0aW9uRUMueHl6LCB2ZWMzKDAuMCksIGN6bV9lcHNpbG9uMSkpCiAgICB7CiAgICAgICAgdmVjMiBvdGhlclNlZ21lbnRMZWZ0V0MgPSB2ZWMyKC1vdGhlclNlZ21lbnRGb3J3YXJkV0MueSwgb3RoZXJTZWdtZW50Rm9yd2FyZFdDLngpOwoKICAgICAgICB2ZWMyIGxlZnRTdW1XQyA9IHRoaXNTZWdtZW50TGVmdFdDICsgb3RoZXJTZWdtZW50TGVmdFdDOwogICAgICAgIGZsb2F0IGxlZnRTdW1MZW5ndGggPSBsZW5ndGgobGVmdFN1bVdDKTsKICAgICAgICBsZWZ0V0MgPSBsZWZ0U3VtTGVuZ3RoIDwgY3ptX2Vwc2lsb242ID8gdGhpc1NlZ21lbnRMZWZ0V0MgOiAobGVmdFN1bVdDIC8gbGVmdFN1bUxlbmd0aCk7CgogICAgICAgIC8vIFRoZSBzaW5lIG9mIHRoZSBhbmdsZSBiZXR3ZWVuIHRoZSB0d28gdmVjdG9ycyBpcyBnaXZlbiBieSB0aGUgZm9ybXVsYQogICAgICAgIC8vICAgICAgICAgfGEgeCBifCA9IHxhfHxifHNpbih0aGV0YSkKICAgICAgICAvLyB3aGljaCBpcwogICAgICAgIC8vICAgICBmbG9hdCBzaW5BbmdsZSA9IGxlbmd0aChjcm9zcyh2ZWMzKGxlZnRXQywgMC4wKSwgdmVjMygtdGhpc1NlZ21lbnRGb3J3YXJkV0MsIDAuMCkpKTsKICAgICAgICAvLyBCZWNhdXNlIHRoZSB6IGNvbXBvbmVudHMgb2YgYm90aCB2ZWN0b3JzIGFyZSB6ZXJvLCB0aGUgeCBhbmQgeSBjb29yZGluYXRlIHdpbGwgYmUgemVyby4KICAgICAgICAvLyBUaGVyZWZvcmUsIHRoZSBzaW5lIG9mIHRoZSBhbmdsZSBpcyBqdXN0IHRoZSB6IGNvbXBvbmVudCBvZiB0aGUgY3Jvc3MgcHJvZHVjdC4KICAgICAgICB2ZWMyIHUgPSAtdGhpc1NlZ21lbnRGb3J3YXJkV0M7CiAgICAgICAgdmVjMiB2ID0gbGVmdFdDOwogICAgICAgIGZsb2F0IHNpbkFuZ2xlID0gYWJzKHUueCAqIHYueSAtIHUueSAqIHYueCk7CiAgICAgICAgZXhwYW5kV2lkdGggPSBjbGFtcChleHBhbmRXaWR0aCAvIHNpbkFuZ2xlLCAwLjAsIHdpZHRoICogMi4wKTsKICAgIH0KCiAgICB2ZWMyIG9mZnNldCA9IGxlZnRXQyAqIGV4cGFuZERpcmVjdGlvbiAqIGV4cGFuZFdpZHRoICogY3ptX3BpeGVsUmF0aW87CiAgICByZXR1cm4gdmVjNChjbGlwcGVkUG9zaXRpb25XQy54eSArIG9mZnNldCwgLWNsaXBwZWRQb3NpdGlvbldDLnosIDEuMCkgKiAoY3ptX3Byb2plY3Rpb24gKiBjbGlwcGVkUG9zaXRpb25FQykudzsKfQoKdmVjNCBnZXRQb2x5bGluZVdpbmRvd0Nvb3JkaW5hdGVzKHZlYzQgcG9zaXRpb24sIHZlYzQgcHJldmlvdXMsIHZlYzQgbmV4dCwgZmxvYXQgZXhwYW5kRGlyZWN0aW9uLCBmbG9hdCB3aWR0aCwgYm9vbCB1c2VQcmV2aW91cywgb3V0IGZsb2F0IGFuZ2xlKQp7CiAgICB2ZWM0IHBvc2l0aW9uRUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHBvc2l0aW9uOwogICAgdmVjNCBwcmV2RUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIHByZXZpb3VzOwogICAgdmVjNCBuZXh0RUMgPSBjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIG5leHQ7CiAgICByZXR1cm4gZ2V0UG9seWxpbmVXaW5kb3dDb29yZGluYXRlc0VDKHBvc2l0aW9uRUMsIHByZXZFQywgbmV4dEVDLCBleHBhbmREaXJlY3Rpb24sIHdpZHRoLCB1c2VQcmV2aW91cywgYW5nbGUpOwp9CmB9KTtmdW5jdGlvbiBKbSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMudHJhbnNsdWNlbnQ9Wih0LnRyYW5zbHVjZW50LCEwKSx0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2U9dC52ZXJ0ZXhTaGFkZXJTb3VyY2UsdGhpcy5fZnJhZ21lbnRTaGFkZXJTb3VyY2U9dC5mcmFnbWVudFNoYWRlclNvdXJjZSx0aGlzLl9yZW5kZXJTdGF0ZT10LnJlbmRlclN0YXRlLHRoaXMuX2Nsb3NlZD1aKHQuY2xvc2VkLCExKX12YXIgTW8sTEk9UygoKT0+e2FFKCk7S0EoKTtGdCgpO210KCk7a20oKTtNSSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEptLnByb3RvdHlwZSx7dmVydGV4U2hhZGVyU291cmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVydGV4U2hhZGVyU291cmNlfX0sZnJhZ21lbnRTaGFkZXJTb3VyY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZX19LHJlbmRlclN0YXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyU3RhdGV9fSxjbG9zZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbG9zZWR9fX0pO0ptLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZT1mdW5jdGlvbigpe2xldCB0PVtdO3JldHVybiB0aGlzLmZsYXQmJnQucHVzaCgiI2RlZmluZSBGTEFUIiksdGhpcy5mYWNlRm9yd2FyZCYmdC5wdXNoKCIjZGVmaW5lIEZBQ0VfRk9SV0FSRCIpLG0odGhpcy5tYXRlcmlhbCkmJnQucHVzaCh0aGlzLm1hdGVyaWFsLnNoYWRlclNvdXJjZSksdC5wdXNoKHRoaXMuZnJhZ21lbnRTaGFkZXJTb3VyY2UpLHQuam9pbihgCmApfTtKbS5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMubWF0ZXJpYWwpJiZ0aGlzLm1hdGVyaWFsLmlzVHJhbnNsdWNlbnQoKXx8IW0odGhpcy5tYXRlcmlhbCkmJnRoaXMudHJhbnNsdWNlbnR9O0ptLnByb3RvdHlwZS5nZXRSZW5kZXJTdGF0ZT1mdW5jdGlvbigpe2xldCB0PXRoaXMuaXNUcmFuc2x1Y2VudCgpLGU9cXModGhpcy5yZW5kZXJTdGF0ZSwhMSk7cmV0dXJuIHQ/KGUuZGVwdGhNYXNrPSExLGUuYmxlbmRpbmc9TXIuQUxQSEFfQkxFTkQpOmUuZGVwdGhNYXNrPSEwLGV9O0ptLmdldERlZmF1bHRSZW5kZXJTdGF0ZT1mdW5jdGlvbih0LGUsaSl7bGV0IG49e2RlcHRoVGVzdDp7ZW5hYmxlZDohMH19O3JldHVybiB0JiYobi5kZXB0aE1hc2s9ITEsbi5ibGVuZGluZz1Nci5BTFBIQV9CTEVORCksZSYmKG4uY3VsbD17ZW5hYmxlZDohMCxmYWNlOkVoLkJBQ0t9KSxtKGkpJiYobj1lcyhpLG4sITApKSxufTtNbz1KbX0pO2Z1bmN0aW9uIFFsKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQudHJhbnNsdWNlbnQsITApLGk9ITEsbj1RbC5WRVJURVhfRk9STUFUO3RoaXMubWF0ZXJpYWw9dm9pZCAwLHRoaXMudHJhbnNsdWNlbnQ9ZSx0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2U9Wih0LnZlcnRleFNoYWRlclNvdXJjZSxXTiksdGhpcy5fZnJhZ21lbnRTaGFkZXJTb3VyY2U9Wih0LmZyYWdtZW50U2hhZGVyU291cmNlLFNudCksdGhpcy5fcmVuZGVyU3RhdGU9TW8uZ2V0RGVmYXVsdFJlbmRlclN0YXRlKGUsaSx0LnJlbmRlclN0YXRlKSx0aGlzLl9jbG9zZWQ9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9bn12YXIgV04sU250LEROLFp4PVMoKCk9PntGdCgpO0lsKCk7THMoKTtCTigpO1J4KCk7R04oKTtMSSgpO1dOPWAke2tJfQoke194fWAsU250PVFJO19vLmlzSW50ZXJuZXRFeHBsb3JlcigpfHwoV049YCNkZWZpbmUgQ0xJUF9QT0xZTElORSAKJHtXTn1gKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhRbC5wcm90b3R5cGUse3ZlcnRleFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleFNoYWRlclNvdXJjZX19LGZyYWdtZW50U2hhZGVyU291cmNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnJhZ21lbnRTaGFkZXJTb3VyY2V9fSxyZW5kZXJTdGF0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlclN0YXRlfX0sY2xvc2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xvc2VkfX0sdmVydGV4Rm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmVydGV4Rm9ybWF0fX19KTtRbC5WRVJURVhfRk9STUFUPVN0LlBPU0lUSU9OX09OTFk7UWwucHJvdG90eXBlLmdldEZyYWdtZW50U2hhZGVyU291cmNlPU1vLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZTtRbC5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudD1Nby5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudDtRbC5wcm90b3R5cGUuZ2V0UmVuZGVyU3RhdGU9TW8ucHJvdG90eXBlLmdldFJlbmRlclN0YXRlO0ROPVFsfSk7dmFyIEl4LHB4PVMoKCk9PntJeD1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwppbiB2ZWMzIHByZXZQb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwcmV2UG9zaXRpb24zRExvdzsKaW4gdmVjMyBuZXh0UG9zaXRpb24zREhpZ2g7CmluIHZlYzMgbmV4dFBvc2l0aW9uM0RMb3c7CmluIHZlYzIgZXhwYW5kQW5kV2lkdGg7CmluIHZlYzIgc3Q7CmluIGZsb2F0IGJhdGNoSWQ7CgpvdXQgZmxvYXQgdl93aWR0aDsKb3V0IHZlYzIgdl9zdDsKb3V0IGZsb2F0IHZfcG9seWxpbmVBbmdsZTsKCnZvaWQgbWFpbigpCnsKICAgIGZsb2F0IGV4cGFuZERpciA9IGV4cGFuZEFuZFdpZHRoLng7CiAgICBmbG9hdCB3aWR0aCA9IGFicyhleHBhbmRBbmRXaWR0aC55KSArIDAuNTsKICAgIGJvb2wgdXNlUHJldiA9IGV4cGFuZEFuZFdpZHRoLnkgPCAwLjA7CgogICAgdmVjNCBwID0gY3ptX2NvbXB1dGVQb3NpdGlvbigpOwogICAgdmVjNCBwcmV2ID0gY3ptX2NvbXB1dGVQcmV2UG9zaXRpb24oKTsKICAgIHZlYzQgbmV4dCA9IGN6bV9jb21wdXRlTmV4dFBvc2l0aW9uKCk7CgogICAgZmxvYXQgYW5nbGU7CiAgICB2ZWM0IHBvc2l0aW9uV0MgPSBnZXRQb2x5bGluZVdpbmRvd0Nvb3JkaW5hdGVzKHAsIHByZXYsIG5leHQsIGV4cGFuZERpciwgd2lkdGgsIHVzZVByZXYsIGFuZ2xlKTsKICAgIGdsX1Bvc2l0aW9uID0gY3ptX3ZpZXdwb3J0T3J0aG9ncmFwaGljICogcG9zaXRpb25XQzsKCiAgICB2X3dpZHRoID0gd2lkdGg7CiAgICB2X3N0LnMgPSBzdC5zOwogICAgdl9zdC50ID0gY3ptX3dyaXRlTm9uUGVyc3BlY3RpdmUoc3QudCwgZ2xfUG9zaXRpb24udyk7CiAgICB2X3BvbHlsaW5lQW5nbGUgPSBhbmdsZTsKfQpgfSk7dmFyIHV4LEN4PVMoKCk9Pnt1eD1gI2lmZGVmIFZFQ1RPUl9USUxFCnVuaWZvcm0gdmVjNCB1X2hpZ2hsaWdodENvbG9yOwojZW5kaWYKCmluIHZlYzIgdl9zdDsKCnZvaWQgbWFpbigpCnsKICAgIGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQ7CgogICAgdmVjMiBzdCA9IHZfc3Q7CiAgICBzdC50ID0gY3ptX3JlYWROb25QZXJzcGVjdGl2ZShzdC50LCBnbF9GcmFnQ29vcmQudyk7CgogICAgbWF0ZXJpYWxJbnB1dC5zID0gc3QuczsKICAgIG1hdGVyaWFsSW5wdXQuc3QgPSBzdDsKICAgIG1hdGVyaWFsSW5wdXQuc3RyID0gdmVjMyhzdCwgMC4wKTsKCiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CiAgICBvdXRfRnJhZ0NvbG9yID0gdmVjNChtYXRlcmlhbC5kaWZmdXNlICsgbWF0ZXJpYWwuZW1pc3Npb24sIG1hdGVyaWFsLmFscGhhKTsKI2lmZGVmIFZFQ1RPUl9USUxFCiAgICBvdXRfRnJhZ0NvbG9yICo9IHVfaGlnaGxpZ2h0Q29sb3I7CiNlbmRpZgoKICAgIGN6bV93cml0ZUxvZ0RlcHRoKCk7Cn0KYH0pO2Z1bmN0aW9uIGptKHQsZSxpLG4scyl7dGhpcy5fZm9ybWF0PXQsdGhpcy5fZGF0YXR5cGU9ZSx0aGlzLl93aWR0aD1pLHRoaXMuX2hlaWdodD1uLHRoaXMuX2J1ZmZlcj1zfXZhciBneCxUeD1TKCgpPT57bXQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqbS5wcm90b3R5cGUse2ludGVybmFsRm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9ybWF0fX0scGl4ZWxEYXRhdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF0eXBlfX0sd2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93aWR0aH19LGhlaWdodDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hlaWdodH19LGJ1ZmZlclZpZXc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9idWZmZXJ9fX0pO2ptLmNsb25lPWZ1bmN0aW9uKHQpe2lmKG0odCkpcmV0dXJuIG5ldyBqbSh0Ll9mb3JtYXQsdC5fZGF0YXR5cGUsdC5fd2lkdGgsdC5faGVpZ2h0LHQuX2J1ZmZlcil9O2ptLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBqbS5jbG9uZSh0aGlzKX07Z3g9am19KTtmdW5jdGlvbiBGeCgpe2lmKCFtKHNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyKSl7bGV0IHQ9UU4oInRyYW5zZmVyVHlwZWRBcnJheVRlc3QiKTt0LnBvc3RNZXNzYWdlPVoodC53ZWJraXRQb3N0TWVzc2FnZSx0LnBvc3RNZXNzYWdlKTtsZXQgZT05OSxpPW5ldyBJbnQ4QXJyYXkoW2VdKTt0cnl7dC5wb3N0TWVzc2FnZSh7YXJyYXk6aX0sW2kuYnVmZmVyXSl9Y2F0Y2h7cmV0dXJuIHNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyPSExLHNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyfXNvLl9jYW5UcmFuc2ZlckFycmF5QnVmZmVyPW5ldyBQcm9taXNlKG49Pnt0Lm9ubWVzc2FnZT1mdW5jdGlvbihzKXtsZXQgbz1zLmRhdGEuYXJyYXkscj1tKG8pJiZvWzBdPT09ZTtuKHIpLHQudGVybWluYXRlKCksc28uX2NhblRyYW5zZmVyQXJyYXlCdWZmZXI9cn19KX1yZXR1cm4gc28uX2NhblRyYW5zZmVyQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gVU4odCl7bGV0IGU7dHJ5e2U9bmV3IEJsb2IoW3RdLHt0eXBlOiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0In0pfWNhdGNoe2xldCBzPXdpbmRvdy5CbG9iQnVpbGRlcnx8d2luZG93LldlYktpdEJsb2JCdWlsZGVyfHx3aW5kb3cuTW96QmxvYkJ1aWxkZXJ8fHdpbmRvdy5NU0Jsb2JCdWlsZGVyLG89bmV3IHM7by5hcHBlbmQodCksZT1vLmdldEJsb2IoImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKX1yZXR1cm4od2luZG93LlVSTHx8d2luZG93LndlYmtpdFVSTCkuY3JlYXRlT2JqZWN0VVJMKGUpfWZ1bmN0aW9uIFFOKHQpe2xldCBlPW5ldyBOeC5kZWZhdWx0KHQpLGk9ZS5zY2hlbWUoKS5sZW5ndGghPT0wJiZlLmZyYWdtZW50KCkubGVuZ3RoPT09MCxuPXt9LHM7aWYoWloodCkpe2xldCByPWBpbXBvcnRTY3JpcHRzKCIke3R9Iik7YDtyZXR1cm4gcz1VTihyKSxuZXcgV29ya2VyKHMsbil9bGV0IG89dC5yZXBsYWNlKC9cLmpzJC8sIiIpO2lmKCFpJiZ0eXBlb2YgQ0VTSVVNX1dPUktFUlM8InUiKXtsZXQgcj1gCiAgICAgIGltcG9ydFNjcmlwdHMoIiR7VU4oQ0VTSVVNX1dPUktFUlMpfSIpOwogICAgICBDZXNpdW1Xb3JrZXJzWyIke299Il0oKTsKICAgIGA7cmV0dXJuIHM9VU4ociksbmV3IFdvcmtlcihzLG4pfWlmKHM9dCxpfHwocz10aChgJHtzby5fd29ya2VyTW9kdWxlUHJlZml4K299LmpzYCkpLCFfby5zdXBwb3J0c0VzbVdlYldvcmtlcnMoKSl0aHJvdyBuZXcga2UoIlRoaXMgYnJvd3NlciBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXBkYXRlIHlvdXIgYnJvd3NlciB0byBjb250aW51ZS4iKTtyZXR1cm4gbi50eXBlPSJtb2R1bGUiLG5ldyBXb3JrZXIocyxuKX1hc3luYyBmdW5jdGlvbiBPbnQodCxlKXtsZXQgaT17bW9kdWxlUGF0aDp2b2lkIDAsd2FzbUJpbmFyeUZpbGU6dm9pZCAwLHdhc21CaW5hcnk6dm9pZCAwfTtpZighX28uc3VwcG9ydHNXZWJBc3NlbWJseSgpKXtpZighbShlLmZhbGxiYWNrTW9kdWxlUGF0aCkpdGhyb3cgbmV3IGtlKGBUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBXZWIgQXNzZW1ibHksIGFuZCBubyBiYWNrdXAgbW9kdWxlIHdhcyBwcm92aWRlZCBmb3IgJHt0Ll93b3JrZXJQYXRofWApO3JldHVybiBpLm1vZHVsZVBhdGg9dGgoZS5mYWxsYmFja01vZHVsZVBhdGgpLGl9aS53YXNtQmluYXJ5RmlsZT10aChlLndhc21CaW5hcnlGaWxlKTtsZXQgbj1hd2FpdCB0bi5mZXRjaEFycmF5QnVmZmVyKHt1cmw6aS53YXNtQmluYXJ5RmlsZX0pO3JldHVybiBpLndhc21CaW5hcnk9bixpfWZ1bmN0aW9uIHNvKHQsZSl7dGhpcy5fd29ya2VyUGF0aD10LHRoaXMuX21heGltdW1BY3RpdmVUYXNrcz1aKGUsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSx0aGlzLl9hY3RpdmVUYXNrcz0wLHRoaXMuX25leHRJRD0wLHRoaXMuX3dlYkFzc2VtYmx5UHJvbWlzZT12b2lkIDB9YXN5bmMgZnVuY3Rpb24gV250KHQsZSxpKXtsZXQgbj1hd2FpdCBQcm9taXNlLnJlc29sdmUoRngoKSk7bShpKT9ufHwoaS5sZW5ndGg9MCk6aT1HbnQ7bGV0IHM9dC5fbmV4dElEKyssbz1uZXcgUHJvbWlzZSgocixhKT0+e3QuX3dvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixCbnQodC5fd29ya2VyLHMscixhKSl9KTtyZXR1cm4gdC5fd29ya2VyLnBvc3RNZXNzYWdlKHtpZDpzLGJhc2VVcmw6dGguZ2V0Q2VzaXVtQmFzZVVybCgpLnVybCxwYXJhbWV0ZXJzOmUsY2FuVHJhbnNmZXJBcnJheUJ1ZmZlcjpufSxpKSxvfWFzeW5jIGZ1bmN0aW9uIERudCh0LGUsaSl7Kyt0Ll9hY3RpdmVUYXNrczt0cnl7bGV0IG49YXdhaXQgV250KHQsZSxpKTtyZXR1cm4tLXQuX2FjdGl2ZVRhc2tzLG59Y2F0Y2gobil7dGhyb3ctLXQuX2FjdGl2ZVRhc2tzLG59fXZhciBOeCxNTixCbnQsR250LFhFLGtOPVMoKCk9PntOeD1jbyhvYygpLDEpO1BaKCk7RnQoKTttdCgpO1dzKCk7T3QoKTt4aSgpO0lsKCk7WjAoKTtJYSgpO1BzKCk7TU49bmV3IFdlO0JudD0odCxlLGksbik9PntsZXQgcz0oe2RhdGE6b30pPT57aWYoby5pZD09PWUpe2lmKG0oby5lcnJvcikpe2xldCByPW8uZXJyb3I7ci5uYW1lPT09IlJ1bnRpbWVFcnJvciI/KHI9bmV3IGtlKG8uZXJyb3IubWVzc2FnZSksci5zdGFjaz1vLmVycm9yLnN0YWNrKTpyLm5hbWU9PT0iRGV2ZWxvcGVyRXJyb3IiPyhyPW5ldyBZKG8uZXJyb3IubWVzc2FnZSksci5zdGFjaz1vLmVycm9yLnN0YWNrKTpyLm5hbWU9PT0iRXJyb3IiJiYocj1uZXcgRXJyb3Ioby5lcnJvci5tZXNzYWdlKSxyLnN0YWNrPW8uZXJyb3Iuc3RhY2spLE1OLnJhaXNlRXZlbnQociksbihyKX1lbHNlIE1OLnJhaXNlRXZlbnQoKSxpKG8ucmVzdWx0KTt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHMpfX07cmV0dXJuIHN9LEdudD1bXTtzby5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQsZSl7aWYobSh0aGlzLl93b3JrZXIpfHwodGhpcy5fd29ya2VyPVFOKHRoaXMuX3dvcmtlclBhdGgpKSwhKHRoaXMuX2FjdGl2ZVRhc2tzPj10aGlzLl9tYXhpbXVtQWN0aXZlVGFza3MpKXJldHVybiBEbnQodGhpcyx0LGUpfTtzby5wcm90b3R5cGUuaW5pdFdlYkFzc2VtYmx5TW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHQpe2lmKG0odGhpcy5fd2ViQXNzZW1ibHlQcm9taXNlKSlyZXR1cm4gdGhpcy5fd2ViQXNzZW1ibHlQcm9taXNlO2xldCBlPWFzeW5jKCk9PntsZXQgaT10aGlzLl93b3JrZXI9UU4odGhpcy5fd29ya2VyUGF0aCksbj1hd2FpdCBPbnQodGhpcyx0KSxzPWF3YWl0IFByb21pc2UucmVzb2x2ZShGeCgpKSxvLHI9bi53YXNtQmluYXJ5O20ocikmJnMmJihvPVtyXSk7bGV0IGE9bmV3IFByb21pc2UoKGgsQSk9PntpLm9ubWVzc2FnZT1mdW5jdGlvbih7ZGF0YTpkfSl7bShkKT9oKGQucmVzdWx0KTpBKG5ldyBrZSgiQ291bGQgbm90IGNvbmZpZ3VyZSB3YXNtIG1vZHVsZSIpKX19KTtyZXR1cm4gaS5wb3N0TWVzc2FnZSh7Y2FuVHJhbnNmZXJBcnJheUJ1ZmZlcjpzLHBhcmFtZXRlcnM6e3dlYkFzc2VtYmx5Q29uZmlnOm59fSxvKSxhfTtyZXR1cm4gdGhpcy5fd2ViQXNzZW1ibHlQcm9taXNlPWUoKSx0aGlzLl93ZWJBc3NlbWJseVByb21pc2V9O3NvLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtzby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3dvcmtlcikmJnRoaXMuX3dvcmtlci50ZXJtaW5hdGUoKSxsaSh0aGlzKX07c28udGFza0NvbXBsZXRlZEV2ZW50PU1OO3NvLl9kZWZhdWx0V29ya2VyTW9kdWxlUHJlZml4PSJXb3JrZXJzLyI7c28uX3dvcmtlck1vZHVsZVByZWZpeD1zby5fZGVmYXVsdFdvcmtlck1vZHVsZVByZWZpeDtzby5fY2FuVHJhbnNmZXJBcnJheUJ1ZmZlcj12b2lkIDA7WEU9c299KTtmdW5jdGlvbiBfaCgpe31mdW5jdGlvbiBVbnQoKXtsZXQgdD1faC5fdHJhbnNjb2RlVGFza1Byb2Nlc3Nvci5pbml0V2ViQXNzZW1ibHlNb2R1bGUoe3dhc21CaW5hcnlGaWxlOiJUaGlyZFBhcnR5L2Jhc2lzX3RyYW5zY29kZXIud2FzbSJ9KS50aGVuKGZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuIF9oLl90cmFuc2NvZGVUYXNrUHJvY2Vzc29yO3Rocm93IG5ldyBrZSgiS1RYMiB0cmFuc2NvZGVyIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZC4iKX0pO19oLl9yZWFkeVByb21pc2U9dH12YXIgYngsWXg9UygoKT0+e2FlKCk7VHgoKTttdCgpO1BzKCk7a04oKTtfaC5fdHJhbnNjb2RlVGFza1Byb2Nlc3Nvcj1uZXcgWEUoInRyYW5zY29kZUtUWDIiLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7X2guX3JlYWR5UHJvbWlzZT12b2lkIDA7X2gudHJhbnNjb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgic3VwcG9ydGVkVGFyZ2V0Rm9ybWF0cyIsZSksbShfaC5fcmVhZHlQcm9taXNlKXx8VW50KCksX2guX3JlYWR5UHJvbWlzZS50aGVuKGZ1bmN0aW9uKGkpe2xldCBuO2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7bGV0IHM9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIG49e3N1cHBvcnRlZFRhcmdldEZvcm1hdHM6ZSxrdHgyQnVmZmVyOnN9LGkuc2NoZWR1bGVUYXNrKG4sW3RdKX1yZXR1cm4gbj17c3VwcG9ydGVkVGFyZ2V0Rm9ybWF0czplLGt0eDJCdWZmZXI6dH0saS5zY2hlZHVsZVRhc2sobixbdC5idWZmZXJdKX0pLnRoZW4oZnVuY3Rpb24oaSl7bGV0IG49aS5sZW5ndGgscz1PYmplY3Qua2V5cyhpWzBdKSxvPXMubGVuZ3RoLHI7Zm9yKHI9MDtyPG47cisrKXtsZXQgYT1pW3JdO2ZvcihsZXQgaD0wO2g8bztoKyspe2xldCBBPWFbc1toXV07YVtzW2hdXT1uZXcgZ3goQS5pbnRlcm5hbEZvcm1hdCxBLmRhdGF0eXBlLEEud2lkdGgsQS5oZWlnaHQsQS5sZXZlbEJ1ZmZlcil9fWlmKG89PT0xKXtmb3Iocj0wO3I8bjsrK3IpaVtyXT1pW3JdW3NbMF1dO249PT0xJiYoaT1pWzBdKX1yZXR1cm4gaX0pLmNhdGNoKGZ1bmN0aW9uKGkpe3Rocm93IGl9KX07Yng9X2h9KTtmdW5jdGlvbiBTeCh0KXtwLmRlZmluZWQoInJlc291cmNlT3JVcmxPckJ1ZmZlciIsdCk7bGV0IGU7cmV0dXJuIHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpP2U9UHJvbWlzZS5yZXNvbHZlKHQpOmU9dG4uY3JlYXRlSWZOZWVkZWQodCkuZmV0Y2hBcnJheUJ1ZmZlcigpLGUudGhlbihmdW5jdGlvbihpKXtyZXR1cm4gYngudHJhbnNjb2RlKGksVngpfSl9dmFyIFZ4LE94LEJ4PVMoKCk9PnthZSgpO0lhKCk7WXgoKTtTeC5zZXRLVFgyU3VwcG9ydGVkRm9ybWF0cz1mdW5jdGlvbih0LGUsaSxuLHMsbyl7Vng9e3MzdGM6dCxwdnJ0YzplLGFzdGM6aSxldGM6bixldGMxOnMsYmM3Om99fTtPeD1TeH0pO2Z1bmN0aW9uIHlJKHQsZSxpLG4scyxvLHIsYSxoLEEsZCl7dGhpcy5fY29udGV4dD10LHRoaXMuX3RleHR1cmU9ZSx0aGlzLl90ZXh0dXJlVGFyZ2V0PWksdGhpcy5fdGFyZ2V0RmFjZT1uLHRoaXMuX3BpeGVsRGF0YXR5cGU9cix0aGlzLl9pbnRlcm5hbEZvcm1hdD1zLHRoaXMuX3BpeGVsRm9ybWF0PW8sdGhpcy5fc2l6ZT1hLHRoaXMuX3ByZU11bHRpcGx5QWxwaGE9aCx0aGlzLl9mbGlwWT1BLHRoaXMuX2luaXRpYWxpemVkPWR9dmFyIGtsLEd4PVMoKCk9PnthZSgpO0Z0KCk7bXQoKTtPdCgpO19jKCk7RWMoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh5SS5wcm90b3R5cGUse3BpeGVsRm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGl4ZWxGb3JtYXR9fSxwaXhlbERhdGF0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGl4ZWxEYXRhdHlwZX19LF90YXJnZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90YXJnZXRGYWNlfX19KTt5SS5wcm90b3R5cGUuY29weUZyb209ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJvcHRpb25zIix0KTtsZXQgZT1aKHQueE9mZnNldCwwKSxpPVoodC55T2Zmc2V0LDApO2lmKHAuZGVmaW5lZCgib3B0aW9ucy5zb3VyY2UiLHQuc291cmNlKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieE9mZnNldCIsZSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygieU9mZnNldCIsaSwwKSxlK3Quc291cmNlLndpZHRoPnRoaXMuX3NpemUpdGhyb3cgbmV3IFkoInhPZmZzZXQgKyBvcHRpb25zLnNvdXJjZS53aWR0aCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB3aWR0aC4iKTtpZihpK3Quc291cmNlLmhlaWdodD50aGlzLl9zaXplKXRocm93IG5ldyBZKCJ5T2Zmc2V0ICsgb3B0aW9ucy5zb3VyY2UuaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGhlaWdodC4iKTtsZXQgbj10LnNvdXJjZSxzPXRoaXMuX2NvbnRleHQuX2dsLG89dGhpcy5fdGV4dHVyZVRhcmdldCxyPXRoaXMuX3RhcmdldEZhY2U7cy5hY3RpdmVUZXh0dXJlKHMuVEVYVFVSRTApLHMuYmluZFRleHR1cmUobyx0aGlzLl90ZXh0dXJlKTtsZXQgYT1uLndpZHRoLGg9bi5oZWlnaHQsQT1uLmFycmF5QnVmZmVyVmlldyxkPXRoaXMuX3NpemUsZj10aGlzLl9waXhlbEZvcm1hdCxFPXRoaXMuX2ludGVybmFsRm9ybWF0LF89dGhpcy5fcGl4ZWxEYXRhdHlwZSxSPXRoaXMuX3ByZU11bHRpcGx5QWxwaGEsST10aGlzLl9mbGlwWSxDPVoodC5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24sITEpLE49NDttKEEpJiYoTj1JZS5hbGlnbm1lbnRJbkJ5dGVzKGYsXyxhKSkscy5waXhlbFN0b3JlaShzLlVOUEFDS19BTElHTk1FTlQsTiksQz9zLnBpeGVsU3RvcmVpKHMuVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxzLk5PTkUpOnMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLHMuQlJPV1NFUl9ERUZBVUxUX1dFQkdMKTtsZXQgVD0hMTtpZighdGhpcy5faW5pdGlhbGl6ZWQpe2lmKGU9PT0wJiZpPT09MCYmYT09PWQmJmg9PT1kKW0oQSk/KHMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsITEpLHMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLCExKSxJJiYoQT1JZS5mbGlwWShBLGYsXyxkLGQpKSxzLnRleEltYWdlMkQociwwLEUsZCxkLDAsZixnZS50b1dlYkdMQ29uc3RhbnQoXyx0aGlzLl9jb250ZXh0KSxBKSk6KHMucGl4ZWxTdG9yZWkocy5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsUikscy5waXhlbFN0b3JlaShzLlVOUEFDS19GTElQX1lfV0VCR0wsSSkscy50ZXhJbWFnZTJEKHIsMCxFLGYsZ2UudG9XZWJHTENvbnN0YW50KF8sdGhpcy5fY29udGV4dCksbikpLFQ9ITA7ZWxzZXtzLnBpeGVsU3RvcmVpKHMuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxzLnBpeGVsU3RvcmVpKHMuVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSk7bGV0IGI9SWUuY3JlYXRlVHlwZWRBcnJheShmLF8sZCxkKTtzLnRleEltYWdlMkQociwwLEUsZCxkLDAsZixnZS50b1dlYkdMQ29uc3RhbnQoXyx0aGlzLl9jb250ZXh0KSxiKX10aGlzLl9pbml0aWFsaXplZD0hMH1UfHwobShBKT8ocy5waXhlbFN0b3JlaShzLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCwhMSkscy5waXhlbFN0b3JlaShzLlVOUEFDS19GTElQX1lfV0VCR0wsITEpLEkmJihBPUllLmZsaXBZKEEsZixfLGEsaCkpLHMudGV4U3ViSW1hZ2UyRChyLDAsZSxpLGEsaCxmLGdlLnRvV2ViR0xDb25zdGFudChfLHRoaXMuX2NvbnRleHQpLEEpKToocy5waXhlbFN0b3JlaShzLlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCxSKSxzLnBpeGVsU3RvcmVpKHMuVU5QQUNLX0ZMSVBfWV9XRUJHTCxJKSxzLnRleFN1YkltYWdlMkQociwwLGUsaSxmLGdlLnRvV2ViR0xDb25zdGFudChfLHRoaXMuX2NvbnRleHQpLG4pKSkscy5iaW5kVGV4dHVyZShvLG51bGwpfTt5SS5wcm90b3R5cGUuY29weUZyb21GcmFtZWJ1ZmZlcj1mdW5jdGlvbih0LGUsaSxuLHMsbyl7aWYodD1aKHQsMCksZT1aKGUsMCksaT1aKGksMCksbj1aKG4sMCkscz1aKHMsdGhpcy5fc2l6ZSksbz1aKG8sdGhpcy5fc2l6ZSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInhPZmZzZXQiLHQsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInlPZmZzZXQiLGUsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImZyYW1lYnVmZmVyWE9mZnNldCIsaSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZnJhbWVidWZmZXJZT2Zmc2V0IixuLDApLHQrcz50aGlzLl9zaXplKXRocm93IG5ldyBZKCJ4T2Zmc2V0ICsgc291cmNlLndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHdpZHRoLiIpO2lmKGUrbz50aGlzLl9zaXplKXRocm93IG5ldyBZKCJ5T2Zmc2V0ICsgc291cmNlLmhlaWdodCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBoZWlnaHQuIik7aWYodGhpcy5fcGl4ZWxEYXRhdHlwZT09PWdlLkZMT0FUKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbUZyYW1lYnVmZmVyIHdoZW4gdGhlIHRleHR1cmUgcGl4ZWwgZGF0YSB0eXBlIGlzIEZMT0FULiIpO2lmKHRoaXMuX3BpeGVsRGF0YXR5cGU9PT1nZS5IQUxGX0ZMT0FUKXRocm93IG5ldyBZKCJDYW5ub3QgY2FsbCBjb3B5RnJvbUZyYW1lYnVmZmVyIHdoZW4gdGhlIHRleHR1cmUgcGl4ZWwgZGF0YSB0eXBlIGlzIEhBTEZfRkxPQVQuIik7bGV0IHI9dGhpcy5fY29udGV4dC5fZ2wsYT10aGlzLl90ZXh0dXJlVGFyZ2V0O3IuYWN0aXZlVGV4dHVyZShyLlRFWFRVUkUwKSxyLmJpbmRUZXh0dXJlKGEsdGhpcy5fdGV4dHVyZSksci5jb3B5VGV4U3ViSW1hZ2UyRCh0aGlzLl90YXJnZXRGYWNlLDAsdCxlLGksbixzLG8pLHIuYmluZFRleHR1cmUoYSxudWxsKSx0aGlzLl9pbml0aWFsaXplZD0hMH07a2w9eUl9KTtmdW5jdGlvbiBxRSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLmNvbnRleHQiLHQuY29udGV4dCk7bGV0IGU9dC5jb250ZXh0LGk9dC5zb3VyY2UsbixzO2lmKG0oaSkpe2xldCBUPVtpLnBvc2l0aXZlWCxpLm5lZ2F0aXZlWCxpLnBvc2l0aXZlWSxpLm5lZ2F0aXZlWSxpLnBvc2l0aXZlWixpLm5lZ2F0aXZlWl07aWYoIVRbMF18fCFUWzFdfHwhVFsyXXx8IVRbM118fCFUWzRdfHwhVFs1XSl0aHJvdyBuZXcgWSgib3B0aW9ucy5zb3VyY2UgcmVxdWlyZXMgcG9zaXRpdmVYLCBuZWdhdGl2ZVgsIHBvc2l0aXZlWSwgbmVnYXRpdmVZLCBwb3NpdGl2ZVosIGFuZCBuZWdhdGl2ZVogZmFjZXMuIik7bj1UWzBdLndpZHRoLHM9VFswXS5oZWlnaHQ7Zm9yKGxldCBiPTE7Yjw2OysrYilpZihOdW1iZXIoVFtiXS53aWR0aCkhPT1ufHxOdW1iZXIoVFtiXS5oZWlnaHQpIT09cyl0aHJvdyBuZXcgWSgiRWFjaCBmYWNlIGluIG9wdGlvbnMuc291cmNlIG11c3QgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgaGVpZ2h0LiIpfWVsc2Ugbj10LndpZHRoLHM9dC5oZWlnaHQ7bGV0IG89bixyPVoodC5waXhlbERhdGF0eXBlLGdlLlVOU0lHTkVEX0JZVEUpLGE9Wih0LnBpeGVsRm9ybWF0LEllLlJHQkEpLGg9SWUudG9JbnRlcm5hbEZvcm1hdChhLHIsZSk7aWYoIW0obil8fCFtKHMpKXRocm93IG5ldyBZKCJvcHRpb25zIHJlcXVpcmVzIGEgc291cmNlIGZpZWxkIHRvIGNyZWF0ZSBhbiBpbml0aWFsaXplZCBjdWJlIG1hcCBvciB3aWR0aCBhbmQgaGVpZ2h0IGZpZWxkcyB0byBjcmVhdGUgYSBibGFuayBjdWJlIG1hcC4iKTtpZihuIT09cyl0aHJvdyBuZXcgWSgiV2lkdGggbXVzdCBlcXVhbCBoZWlnaHQuIik7aWYobzw9MCl0aHJvdyBuZXcgWSgiV2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKG8+ZW4ubWF4aW11bUN1YmVNYXBTaXplKXRocm93IG5ldyBZKGBXaWR0aCBhbmQgaGVpZ2h0IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtIGN1YmUgbWFwIHNpemUgKCR7ZW4ubWF4aW11bUN1YmVNYXBTaXplfSkuICBDaGVjayBtYXhpbXVtQ3ViZU1hcFNpemUuYCk7aWYoIUllLnZhbGlkYXRlKGEpKXRocm93IG5ldyBZKCJJbnZhbGlkIG9wdGlvbnMucGl4ZWxGb3JtYXQuIik7aWYoSWUuaXNEZXB0aEZvcm1hdChhKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5waXhlbEZvcm1hdCBjYW5ub3QgYmUgREVQVEhfQ09NUE9ORU5UIG9yIERFUFRIX1NURU5DSUwuIik7aWYoIWdlLnZhbGlkYXRlKHIpKXRocm93IG5ldyBZKCJJbnZhbGlkIG9wdGlvbnMucGl4ZWxEYXRhdHlwZS4iKTtpZihyPT09Z2UuRkxPQVQmJiFlLmZsb2F0aW5nUG9pbnRUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxEYXRhdHlwZSBpcyBGTE9BVCwgdGhpcyBXZWJHTCBpbXBsZW1lbnRhdGlvbiBtdXN0IHN1cHBvcnQgdGhlIE9FU190ZXh0dXJlX2Zsb2F0IGV4dGVuc2lvbi4iKTtpZihyPT09Z2UuSEFMRl9GTE9BVCYmIWUuaGFsZkZsb2F0aW5nUG9pbnRUZXh0dXJlKXRocm93IG5ldyBZKCJXaGVuIG9wdGlvbnMucGl4ZWxEYXRhdHlwZSBpcyBIQUxGX0ZMT0FULCB0aGlzIFdlYkdMIGltcGxlbWVudGF0aW9uIG11c3Qgc3VwcG9ydCB0aGUgT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBleHRlbnNpb24uIik7bGV0IEE9SWUudGV4dHVyZVNpemVJbkJ5dGVzKGEscixvLG8pKjYsZD10LnByZU11bHRpcGx5QWxwaGF8fGE9PT1JZS5SR0J8fGE9PT1JZS5MVU1JTkFOQ0UsZj1aKHQuZmxpcFksITApLEU9Wih0LnNraXBDb2xvclNwYWNlQ29udmVyc2lvbiwhMSksXz1lLl9nbCxSPV8uVEVYVFVSRV9DVUJFX01BUCxJPV8uY3JlYXRlVGV4dHVyZSgpO18uYWN0aXZlVGV4dHVyZShfLlRFWFRVUkUwKSxfLmJpbmRUZXh0dXJlKFIsSSk7ZnVuY3Rpb24gQyhULGIsRixCLFUpe2xldCBRPWIuYXJyYXlCdWZmZXJWaWV3O20oUSl8fChRPWIuYnVmZmVyVmlldyk7bGV0IE09NDttKFEpJiYoTT1JZS5hbGlnbm1lbnRJbkJ5dGVzKGEscixuKSksXy5waXhlbFN0b3JlaShfLlVOUEFDS19BTElHTk1FTlQsTSksVT9fLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTCxfLk5PTkUpOl8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMLF8uQlJPV1NFUl9ERUZBVUxUX1dFQkdMKSxtKFEpPyhfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCExKSxfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX0ZMSVBfWV9XRUJHTCwhMSksQiYmKFE9SWUuZmxpcFkoUSxhLHIsbyxvKSksXy50ZXhJbWFnZTJEKFQsMCxoLG8sbywwLGEsZ2UudG9XZWJHTENvbnN0YW50KHIsZSksUSkpOihfLnBpeGVsU3RvcmVpKF8uVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLEYpLF8ucGl4ZWxTdG9yZWkoXy5VTlBBQ0tfRkxJUF9ZX1dFQkdMLEIpLF8udGV4SW1hZ2UyRChULDAsaCxhLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLGIpKX1tKGkpPyhDKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLGkucG9zaXRpdmVYLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLGkubmVnYXRpdmVYLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLGkucG9zaXRpdmVZLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLGkubmVnYXRpdmVZLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLGkucG9zaXRpdmVaLGQsZixFKSxDKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLGkubmVnYXRpdmVaLGQsZixFKSk6KF8udGV4SW1hZ2UyRChfLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwwLGgsbyxvLDAsYSxnZS50b1dlYkdMQ29uc3RhbnQocixlKSxudWxsKSxfLnRleEltYWdlMkQoXy5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsMCxoLG8sbywwLGEsZ2UudG9XZWJHTENvbnN0YW50KHIsZSksbnVsbCksXy50ZXhJbWFnZTJEKF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLDAsaCxvLG8sMCxhLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLG51bGwpLF8udGV4SW1hZ2UyRChfLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwwLGgsbyxvLDAsYSxnZS50b1dlYkdMQ29uc3RhbnQocixlKSxudWxsKSxfLnRleEltYWdlMkQoXy5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osMCxoLG8sbywwLGEsZ2UudG9XZWJHTENvbnN0YW50KHIsZSksbnVsbCksXy50ZXhJbWFnZTJEKF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLDAsaCxvLG8sMCxhLGdlLnRvV2ViR0xDb25zdGFudChyLGUpLG51bGwpKSxfLmJpbmRUZXh0dXJlKFIsbnVsbCksdGhpcy5fY29udGV4dD1lLHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz1lLl90ZXh0dXJlRmlsdGVyQW5pc290cm9waWMsdGhpcy5fdGV4dHVyZVRhcmdldD1SLHRoaXMuX3RleHR1cmU9SSx0aGlzLl9waXhlbEZvcm1hdD1hLHRoaXMuX3BpeGVsRGF0YXR5cGU9cix0aGlzLl9zaXplPW8sdGhpcy5faGFzTWlwbWFwPSExLHRoaXMuX3NpemVJbkJ5dGVzPUEsdGhpcy5fcHJlTXVsdGlwbHlBbHBoYT1kLHRoaXMuX2ZsaXBZPWYsdGhpcy5fc2FtcGxlcj12b2lkIDA7bGV0IE49bShpKTt0aGlzLl9wb3NpdGl2ZVg9bmV3IGtsKGUsSSxSLF8uVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLGgsYSxyLG8sZCxmLE4pLHRoaXMuX25lZ2F0aXZlWD1uZXcga2woZSxJLFIsXy5URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsaCxhLHIsbyxkLGYsTiksdGhpcy5fcG9zaXRpdmVZPW5ldyBrbChlLEksUixfLlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSxoLGEscixvLGQsZixOKSx0aGlzLl9uZWdhdGl2ZVk9bmV3IGtsKGUsSSxSLF8uVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLGgsYSxyLG8sZCxmLE4pLHRoaXMuX3Bvc2l0aXZlWj1uZXcga2woZSxJLFIsXy5URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osaCxhLHIsbyxkLGYsTiksdGhpcy5fbmVnYXRpdmVaPW5ldyBrbChlLEksUixfLlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWixoLGEscixvLGQsZixOKSx0aGlzLnNhbXBsZXI9bSh0LnNhbXBsZXIpP3Quc2FtcGxlcjpuZXcgWkF9dmFyIExOLFd4PVMoKCk9PnthZSgpO0Z0KCk7bXQoKTtXcygpO090KCk7X2UoKTtfYygpO2dhKCk7R3goKTtEVCgpO0VjKCk7WUUoKTtORSgpO0ZFKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocUUucHJvdG90eXBlLHtwb3NpdGl2ZVg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGl2ZVh9fSxuZWdhdGl2ZVg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWdhdGl2ZVh9fSxwb3NpdGl2ZVk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGl2ZVl9fSxuZWdhdGl2ZVk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWdhdGl2ZVl9fSxwb3NpdGl2ZVo6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGl2ZVp9fSxuZWdhdGl2ZVo6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uZWdhdGl2ZVp9fSxzYW1wbGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2FtcGxlcn0sc2V0OmZ1bmN0aW9uKHQpe2xldCBlPXQubWluaWZpY2F0aW9uRmlsdGVyLGk9dC5tYWduaWZpY2F0aW9uRmlsdGVyLG49ZT09PV9zLk5FQVJFU1RfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5ORUFSRVNUX01JUE1BUF9MSU5FQVJ8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX05FQVJFU1R8fGU9PT1fcy5MSU5FQVJfTUlQTUFQX0xJTkVBUixzPXRoaXMuX2NvbnRleHQsbz10aGlzLl9waXhlbERhdGF0eXBlOyhvPT09Z2UuRkxPQVQmJiFzLnRleHR1cmVGbG9hdExpbmVhcnx8bz09PWdlLkhBTEZfRkxPQVQmJiFzLnRleHR1cmVIYWxmRmxvYXRMaW5lYXIpJiYoZT1uP19zLk5FQVJFU1RfTUlQTUFQX05FQVJFU1Q6X3MuTkVBUkVTVCxpPU5hLk5FQVJFU1QpO2xldCByPXMuX2dsLGE9dGhpcy5fdGV4dHVyZVRhcmdldDtyLmFjdGl2ZVRleHR1cmUoci5URVhUVVJFMCksci5iaW5kVGV4dHVyZShhLHRoaXMuX3RleHR1cmUpLHIudGV4UGFyYW1ldGVyaShhLHIuVEVYVFVSRV9NSU5fRklMVEVSLGUpLHIudGV4UGFyYW1ldGVyaShhLHIuVEVYVFVSRV9NQUdfRklMVEVSLGkpLHIudGV4UGFyYW1ldGVyaShhLHIuVEVYVFVSRV9XUkFQX1MsdC53cmFwUyksci50ZXhQYXJhbWV0ZXJpKGEsci5URVhUVVJFX1dSQVBfVCx0LndyYXBUKSxtKHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykmJnIudGV4UGFyYW1ldGVyaShhLHRoaXMuX3RleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCx0Lm1heGltdW1Bbmlzb3Ryb3B5KSxyLmJpbmRUZXh0dXJlKGEsbnVsbCksdGhpcy5fc2FtcGxlcj10fX0scGl4ZWxGb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbEZvcm1hdH19LHBpeGVsRGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9waXhlbERhdGF0eXBlfX0sd2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplfX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2l6ZX19LHNpemVJbkJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzTWlwbWFwP01hdGguZmxvb3IodGhpcy5fc2l6ZUluQnl0ZXMqNC8zKTp0aGlzLl9zaXplSW5CeXRlc319LHByZU11bHRpcGx5QWxwaGE6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmVNdWx0aXBseUFscGhhfX0sZmxpcFk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mbGlwWX19LF90YXJnZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZXh0dXJlVGFyZ2V0fX19KTtxRS5wcm90b3R5cGUuZ2VuZXJhdGVNaXBtYXA9ZnVuY3Rpb24odCl7aWYodD1aKHQsTG0uRE9OVF9DQVJFKSx0aGlzLl9zaXplPjEmJiFMLmlzUG93ZXJPZlR3byh0aGlzLl9zaXplKSl0aHJvdyBuZXcgWSgid2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIHRvIGNhbGwgZ2VuZXJhdGVNaXBtYXAoKS4iKTtpZighTG0udmFsaWRhdGUodCkpdGhyb3cgbmV3IFkoImhpbnQgaXMgaW52YWxpZC4iKTt0aGlzLl9oYXNNaXBtYXA9ITA7bGV0IGU9dGhpcy5fY29udGV4dC5fZ2wsaT10aGlzLl90ZXh0dXJlVGFyZ2V0O2UuaGludChlLkdFTkVSQVRFX01JUE1BUF9ISU5ULHQpLGUuYWN0aXZlVGV4dHVyZShlLlRFWFRVUkUwKSxlLmJpbmRUZXh0dXJlKGksdGhpcy5fdGV4dHVyZSksZS5nZW5lcmF0ZU1pcG1hcChpKSxlLmJpbmRUZXh0dXJlKGksbnVsbCl9O3FFLnByb3RvdHlwZS5pc0Rlc3Ryb3llZD1mdW5jdGlvbigpe3JldHVybiExfTtxRS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZXh0Ll9nbC5kZWxldGVUZXh0dXJlKHRoaXMuX3RleHR1cmUpLHRoaXMuX3Bvc2l0aXZlWD1saSh0aGlzLl9wb3NpdGl2ZVgpLHRoaXMuX25lZ2F0aXZlWD1saSh0aGlzLl9uZWdhdGl2ZVgpLHRoaXMuX3Bvc2l0aXZlWT1saSh0aGlzLl9wb3NpdGl2ZVkpLHRoaXMuX25lZ2F0aXZlWT1saSh0aGlzLl9uZWdhdGl2ZVkpLHRoaXMuX3Bvc2l0aXZlWj1saSh0aGlzLl9wb3NpdGl2ZVopLHRoaXMuX25lZ2F0aXZlWj1saSh0aGlzLl9uZWdhdGl2ZVopLGxpKHRoaXMpfTtMTj1xRX0pO3ZhciBEeCxVeD1TKCgpPT57RHg9YHVuaWZvcm0gc2FtcGxlcjJEIGltYWdlOwoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgdmVjNCByYW1wQ29sb3IgPSB0ZXh0dXJlKGltYWdlLCB2ZWMyKG1hdGVyaWFsSW5wdXQuYXNwZWN0IC8gKDIuMCAqIGN6bV9waSksIDAuNSkpOwogICAgcmFtcENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChyYW1wQ29sb3IpOwogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IHJhbXBDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IHJhbXBDb2xvci5hOwogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgTXgsUXg9UygoKT0+e014PWB1bmlmb3JtIHNhbXBsZXIyRCBpbWFnZTsKdW5pZm9ybSBmbG9hdCBzdHJlbmd0aDsKdW5pZm9ybSB2ZWMyIHJlcGVhdDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKCiAgICB2ZWMyIGNlbnRlclBpeGVsID0gZnJhY3QocmVwZWF0ICogc3QpOwogICAgZmxvYXQgY2VudGVyQnVtcCA9IHRleHR1cmUoaW1hZ2UsIGNlbnRlclBpeGVsKS5jaGFubmVsOwoKICAgIGZsb2F0IGltYWdlV2lkdGggPSBmbG9hdChpbWFnZURpbWVuc2lvbnMueCk7CiAgICB2ZWMyIHJpZ2h0UGl4ZWwgPSBmcmFjdChyZXBlYXQgKiAoc3QgKyB2ZWMyKDEuMCAvIGltYWdlV2lkdGgsIDAuMCkpKTsKICAgIGZsb2F0IHJpZ2h0QnVtcCA9IHRleHR1cmUoaW1hZ2UsIHJpZ2h0UGl4ZWwpLmNoYW5uZWw7CgogICAgZmxvYXQgaW1hZ2VIZWlnaHQgPSBmbG9hdChpbWFnZURpbWVuc2lvbnMueSk7CiAgICB2ZWMyIGxlZnRQaXhlbCA9IGZyYWN0KHJlcGVhdCAqIChzdCArIHZlYzIoMC4wLCAxLjAgLyBpbWFnZUhlaWdodCkpKTsKICAgIGZsb2F0IHRvcEJ1bXAgPSB0ZXh0dXJlKGltYWdlLCBsZWZ0UGl4ZWwpLmNoYW5uZWw7CgogICAgdmVjMyBub3JtYWxUYW5nZW50U3BhY2UgPSBub3JtYWxpemUodmVjMyhjZW50ZXJCdW1wIC0gcmlnaHRCdW1wLCBjZW50ZXJCdW1wIC0gdG9wQnVtcCwgY2xhbXAoMS4wIC0gc3RyZW5ndGgsIDAuMSwgMS4wKSkpOwogICAgdmVjMyBub3JtYWxFQyA9IG1hdGVyaWFsSW5wdXQudGFuZ2VudFRvRXllTWF0cml4ICogbm9ybWFsVGFuZ2VudFNwYWNlOwoKICAgIG1hdGVyaWFsLm5vcm1hbCA9IG5vcm1hbEVDOwogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IHZlYzMoMC4wMSk7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIga3gsTHg9UygoKT0+e2t4PWB1bmlmb3JtIHZlYzQgbGlnaHRDb2xvcjsKdW5pZm9ybSB2ZWM0IGRhcmtDb2xvcjsKdW5pZm9ybSB2ZWMyIHJlcGVhdDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKCiAgICAvLyBGcm9tIFN0ZWZhbiBHdXN0YXZzb24ncyBQcm9jZWR1cmFsIFRleHR1cmVzIGluIEdMU0wgaW4gT3BlbkdMIEluc2lnaHRzCiAgICBmbG9hdCBiID0gbW9kKGZsb29yKHJlcGVhdC5zICogc3QucykgKyBmbG9vcihyZXBlYXQudCAqIHN0LnQpLCAyLjApOyAgLy8gMC4wIG9yIDEuMAoKICAgIC8vIEZpbmQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNsb3Nlc3Qgc2VwYXJhdG9yIChyZWdpb24gYmV0d2VlbiB0d28gY29sb3JzKQogICAgZmxvYXQgc2NhbGVkV2lkdGggPSBmcmFjdChyZXBlYXQucyAqIHN0LnMpOwogICAgc2NhbGVkV2lkdGggPSBhYnMoc2NhbGVkV2lkdGggLSBmbG9vcihzY2FsZWRXaWR0aCArIDAuNSkpOwogICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gZnJhY3QocmVwZWF0LnQgKiBzdC50KTsKICAgIHNjYWxlZEhlaWdodCA9IGFicyhzY2FsZWRIZWlnaHQgLSBmbG9vcihzY2FsZWRIZWlnaHQgKyAwLjUpKTsKICAgIGZsb2F0IHZhbHVlID0gbWluKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwoKICAgIHZlYzQgY3VycmVudENvbG9yID0gbWl4KGxpZ2h0Q29sb3IsIGRhcmtDb2xvciwgYik7CiAgICB2ZWM0IGNvbG9yID0gY3ptX2FudGlhbGlhcyhsaWdodENvbG9yLCBkYXJrQ29sb3IsIGN1cnJlbnRDb2xvciwgdmFsdWUsIDAuMDMpOwoKICAgIGNvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChjb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gY29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBjb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIHl4LHd4PVMoKCk9Pnt5eD1gdW5pZm9ybSB2ZWM0IGxpZ2h0Q29sb3I7CnVuaWZvcm0gdmVjNCBkYXJrQ29sb3I7CnVuaWZvcm0gdmVjMiByZXBlYXQ7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgLy8gRnJvbSBTdGVmYW4gR3VzdGF2c29uJ3MgUHJvY2VkdXJhbCBUZXh0dXJlcyBpbiBHTFNMIGluIE9wZW5HTCBJbnNpZ2h0cwogICAgZmxvYXQgYiA9IHNtb290aHN0ZXAoMC4zLCAwLjMyLCBsZW5ndGgoZnJhY3QocmVwZWF0ICogbWF0ZXJpYWxJbnB1dC5zdCkgLSAwLjUpKTsgIC8vIDAuMCBvciAxLjAKCiAgICB2ZWM0IGNvbG9yID0gbWl4KGxpZ2h0Q29sb3IsIGRhcmtDb2xvciwgYik7CiAgICBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IGNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gY29sb3IuYTsKCiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciB4eCxQeD1TKCgpPT57eHg9YHVuaWZvcm0gc2FtcGxlcjJEIGhlaWdodHM7CnVuaWZvcm0gc2FtcGxlcjJEIGNvbG9yczsKCi8vIFRoaXMgbWF0ZXJpYWwgZXhwZWN0cyBoZWlnaHRzIHRvIGJlIHNvcnRlZCBmcm9tIGxvd2VzdCB0byBoaWdoZXN0LgoKZmxvYXQgZ2V0SGVpZ2h0KGludCBpZHgsIGZsb2F0IGludlRleFNpemUpCnsKICAgIHZlYzIgdXYgPSB2ZWMyKChmbG9hdChpZHgpICsgMC41KSAqIGludlRleFNpemUsIDAuNSk7CiNpZmRlZiBPRVNfdGV4dHVyZV9mbG9hdAogICAgcmV0dXJuIHRleHR1cmUoaGVpZ2h0cywgdXYpLng7CiNlbHNlCiAgICByZXR1cm4gY3ptX3VucGFja0Zsb2F0KHRleHR1cmUoaGVpZ2h0cywgdXYpKTsKI2VuZGlmCn0KCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICBmbG9hdCBoZWlnaHQgPSBtYXRlcmlhbElucHV0LmhlaWdodDsKICAgIGZsb2F0IGludlRleFNpemUgPSAxLjAgLyBmbG9hdChoZWlnaHRzRGltZW5zaW9ucy54KTsKCiAgICBmbG9hdCBtaW5IZWlnaHQgPSBnZXRIZWlnaHQoMCwgaW52VGV4U2l6ZSk7CiAgICBmbG9hdCBtYXhIZWlnaHQgPSBnZXRIZWlnaHQoaGVpZ2h0c0RpbWVuc2lvbnMueCAtIDEsIGludlRleFNpemUpOwoKICAgIC8vIGVhcmx5LW91dCB3aGVuIG91dHNpZGUgdGhlIGhlaWdodCByYW5nZQogICAgaWYgKGhlaWdodCA8IG1pbkhlaWdodCB8fCBoZWlnaHQgPiBtYXhIZWlnaHQpIHsKICAgICAgICBtYXRlcmlhbC5kaWZmdXNlID0gdmVjMygwLjApOwogICAgICAgIG1hdGVyaWFsLmFscGhhID0gMC4wOwogICAgICAgIHJldHVybiBtYXRlcmlhbDsKICAgIH0KCiAgICAvLyBCaW5hcnkgc2VhcmNoIHRvIGZpbmQgaGVpZ2h0cyBhYm92ZSBhbmQgYmVsb3cuCiAgICBpbnQgaWR4QmVsb3cgPSAwOwogICAgaW50IGlkeEFib3ZlID0gaGVpZ2h0c0RpbWVuc2lvbnMueDsKICAgIGZsb2F0IGhlaWdodEJlbG93ID0gbWluSGVpZ2h0OwogICAgZmxvYXQgaGVpZ2h0QWJvdmUgPSBtYXhIZWlnaHQ7CgogICAgLy8gd2hpbGUgbG9vcCBub3QgYWxsb3dlZCwgc28gdXNlIGZvciBsb29wIHdpdGggbWF4IGl0ZXJhdGlvbnMuCiAgICAvLyBtYXhJdGVyYXRpb25zIG9mIDE2IHN1cHBvcnRzIGEgdGV4dHVyZSBzaXplIHVwIHRvIDY1NTM2ICgyXjE2KS4KICAgIGNvbnN0IGludCBtYXhJdGVyYXRpb25zID0gMTY7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heEl0ZXJhdGlvbnM7IGkrKykgewogICAgICAgIGlmIChpZHhCZWxvdyA+PSBpZHhBYm92ZSAtIDEpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpbnQgaWR4TWlkID0gKGlkeEJlbG93ICsgaWR4QWJvdmUpIC8gMjsKICAgICAgICBmbG9hdCBoZWlnaHRUZXggPSBnZXRIZWlnaHQoaWR4TWlkLCBpbnZUZXhTaXplKTsKCiAgICAgICAgaWYgKGhlaWdodCA+IGhlaWdodFRleCkgewogICAgICAgICAgICBpZHhCZWxvdyA9IGlkeE1pZDsKICAgICAgICAgICAgaGVpZ2h0QmVsb3cgPSBoZWlnaHRUZXg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWR4QWJvdmUgPSBpZHhNaWQ7CiAgICAgICAgICAgIGhlaWdodEFib3ZlID0gaGVpZ2h0VGV4OwogICAgICAgIH0KICAgIH0KCiAgICBmbG9hdCBsZXJwZXIgPSBoZWlnaHRCZWxvdyA9PSBoZWlnaHRBYm92ZSA/IDEuMCA6IChoZWlnaHQgLSBoZWlnaHRCZWxvdykgLyAoaGVpZ2h0QWJvdmUgLSBoZWlnaHRCZWxvdyk7CiAgICB2ZWMyIGNvbG9yVXYgPSB2ZWMyKGludlRleFNpemUgKiAoZmxvYXQoaWR4QmVsb3cpICsgMC41ICsgbGVycGVyKSwgMC41KTsKICAgIHZlYzQgY29sb3IgPSB0ZXh0dXJlKGNvbG9ycywgY29sb3JVdik7CgogICAgLy8gdW5kbyBwcmV1bXVsdGlwbGllZCBhbHBoYQogICAgaWYgKGNvbG9yLmEgPiAwLjApIAogICAgewogICAgICAgIGNvbG9yLnJnYiAvPSBjb2xvci5hOwogICAgfQogICAgCiAgICBjb2xvci5yZ2IgPSBjem1fZ2FtbWFDb3JyZWN0KGNvbG9yLnJnYik7CgogICAgbWF0ZXJpYWwuZGlmZnVzZSA9IGNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gY29sb3IuYTsKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIEp4LGp4PVMoKCk9PntKeD1gdW5pZm9ybSB2ZWM0IGNvbG9yOwp1bmlmb3JtIGZsb2F0IHNwYWNpbmc7CnVuaWZvcm0gZmxvYXQgd2lkdGg7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgZmxvYXQgZGlzdGFuY2VUb0NvbnRvdXIgPSBtb2QobWF0ZXJpYWxJbnB1dC5oZWlnaHQsIHNwYWNpbmcpOwoKI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKQogICAgZmxvYXQgZHhjID0gYWJzKGRGZHgobWF0ZXJpYWxJbnB1dC5oZWlnaHQpKTsKICAgIGZsb2F0IGR5YyA9IGFicyhkRmR5KG1hdGVyaWFsSW5wdXQuaGVpZ2h0KSk7CiAgICBmbG9hdCBkRiA9IG1heChkeGMsIGR5YykgKiBjem1fcGl4ZWxSYXRpbyAqIHdpZHRoOwogICAgZmxvYXQgYWxwaGEgPSAoZGlzdGFuY2VUb0NvbnRvdXIgPCBkRikgPyAxLjAgOiAwLjA7CiNlbHNlCiAgICAvLyBJZiBubyBkZXJpdmF0aXZlcyBhdmFpbGFibGUgKElFIDEwPyksIHVzZSBwaXhlbCByYXRpbwogICAgZmxvYXQgYWxwaGEgPSAoZGlzdGFuY2VUb0NvbnRvdXIgPCAoY3ptX3BpeGVsUmF0aW8gKiB3aWR0aCkpID8gMS4wIDogMC4wOwojZW5kaWYKCiAgICB2ZWM0IG91dENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh2ZWM0KGNvbG9yLnJnYiwgYWxwaGEgKiBjb2xvci5hKSk7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gb3V0Q29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBvdXRDb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIEh4LHZ4PVMoKCk9PntIeD1gdW5pZm9ybSBzYW1wbGVyMkQgaW1hZ2U7CnVuaWZvcm0gZmxvYXQgbWluaW11bUhlaWdodDsKdW5pZm9ybSBmbG9hdCBtYXhpbXVtSGVpZ2h0OwoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gY2xhbXAoKG1hdGVyaWFsSW5wdXQuaGVpZ2h0IC0gbWluaW11bUhlaWdodCkgLyAobWF4aW11bUhlaWdodCAtIG1pbmltdW1IZWlnaHQpLCAwLjAsIDEuMCk7CiAgICB2ZWM0IHJhbXBDb2xvciA9IHRleHR1cmUoaW1hZ2UsIHZlYzIoc2NhbGVkSGVpZ2h0LCAwLjUpKTsKICAgIHJhbXBDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QocmFtcENvbG9yKTsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSByYW1wQ29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSByYW1wQ29sb3IuYTsKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIHp4LEt4PVMoKCk9Pnt6eD1gdW5pZm9ybSB2ZWM0IGZhZGVJbkNvbG9yOwp1bmlmb3JtIHZlYzQgZmFkZU91dENvbG9yOwp1bmlmb3JtIGZsb2F0IG1heGltdW1EaXN0YW5jZTsKdW5pZm9ybSBib29sIHJlcGVhdDsKdW5pZm9ybSB2ZWMyIGZhZGVEaXJlY3Rpb247CnVuaWZvcm0gdmVjMiB0aW1lOwoKZmxvYXQgZ2V0VGltZShmbG9hdCB0LCBmbG9hdCBjb29yZCkKewogICAgZmxvYXQgc2NhbGFyID0gMS4wIC8gbWF4aW11bURpc3RhbmNlOwogICAgZmxvYXQgcSAgPSBkaXN0YW5jZSh0LCBjb29yZCkgKiBzY2FsYXI7CiAgICBpZiAocmVwZWF0KQogICAgewogICAgICAgIGZsb2F0IHIgPSBkaXN0YW5jZSh0LCBjb29yZCArIDEuMCkgKiBzY2FsYXI7CiAgICAgICAgZmxvYXQgcyA9IGRpc3RhbmNlKHQsIGNvb3JkIC0gMS4wKSAqIHNjYWxhcjsKICAgICAgICBxID0gbWluKG1pbihyLCBzKSwgcSk7CiAgICB9CiAgICByZXR1cm4gY2xhbXAocSwgMC4wLCAxLjApOwp9Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgdmVjMiBzdCA9IG1hdGVyaWFsSW5wdXQuc3Q7CiAgICBmbG9hdCBzID0gZ2V0VGltZSh0aW1lLngsIHN0LnMpICogZmFkZURpcmVjdGlvbi5zOwogICAgZmxvYXQgdCA9IGdldFRpbWUodGltZS55LCBzdC50KSAqIGZhZGVEaXJlY3Rpb24udDsKCiAgICBmbG9hdCB1ID0gbGVuZ3RoKHZlYzIocywgdCkpOwogICAgdmVjNCBjb2xvciA9IG1peChmYWRlSW5Db2xvciwgZmFkZU91dENvbG9yLCB1KTsKCiAgICBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwogICAgbWF0ZXJpYWwuZW1pc3Npb24gPSBjb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGNvbG9yLmE7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgWHgscXg9UygoKT0+e1h4PWB1bmlmb3JtIHZlYzQgY29sb3I7CnVuaWZvcm0gZmxvYXQgY2VsbEFscGhhOwp1bmlmb3JtIHZlYzIgbGluZUNvdW50Owp1bmlmb3JtIHZlYzIgbGluZVRoaWNrbmVzczsKdW5pZm9ybSB2ZWMyIGxpbmVPZmZzZXQ7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgdmVjMiBzdCA9IG1hdGVyaWFsSW5wdXQuc3Q7CgogICAgZmxvYXQgc2NhbGVkV2lkdGggPSBmcmFjdChsaW5lQ291bnQucyAqIHN0LnMgLSBsaW5lT2Zmc2V0LnMpOwogICAgc2NhbGVkV2lkdGggPSBhYnMoc2NhbGVkV2lkdGggLSBmbG9vcihzY2FsZWRXaWR0aCArIDAuNSkpOwogICAgZmxvYXQgc2NhbGVkSGVpZ2h0ID0gZnJhY3QobGluZUNvdW50LnQgKiBzdC50IC0gbGluZU9mZnNldC50KTsKICAgIHNjYWxlZEhlaWdodCA9IGFicyhzY2FsZWRIZWlnaHQgLSBmbG9vcihzY2FsZWRIZWlnaHQgKyAwLjUpKTsKCiAgICBmbG9hdCB2YWx1ZTsKCiAgICAvLyBGdXp6IEZhY3RvciAtIENvbnRyb2xzIGJsdXJyaW5lc3Mgb2YgbGluZXMKI2lmIChfX1ZFUlNJT05fXyA9PSAzMDAgfHwgZGVmaW5lZChHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpKQogICAgY29uc3QgZmxvYXQgZnV6eiA9IDEuMjsKICAgIHZlYzIgdGhpY2tuZXNzID0gKGxpbmVUaGlja25lc3MgKiBjem1fcGl4ZWxSYXRpbykgLSAxLjA7CgogICAgLy8gRnJvbSAiM0QgRW5naW5lIERlc2lnbiBmb3IgVmlydHVhbCBHbG9iZXMiIGJ5IENvenppIGFuZCBSaW5nLCBMaXN0aW5nIDQuMTMuCiAgICB2ZWMyIGR4ID0gYWJzKGRGZHgoc3QpKTsKICAgIHZlYzIgZHkgPSBhYnMoZEZkeShzdCkpOwogICAgdmVjMiBkRiA9IHZlYzIobWF4KGR4LnMsIGR5LnMpLCBtYXgoZHgudCwgZHkudCkpICogbGluZUNvdW50OwogICAgdmFsdWUgPSBtaW4oCiAgICAgICAgc21vb3Roc3RlcChkRi5zICogdGhpY2tuZXNzLnMsIGRGLnMgKiAoZnV6eiArIHRoaWNrbmVzcy5zKSwgc2NhbGVkV2lkdGgpLAogICAgICAgIHNtb290aHN0ZXAoZEYudCAqIHRoaWNrbmVzcy50LCBkRi50ICogKGZ1enogKyB0aGlja25lc3MudCksIHNjYWxlZEhlaWdodCkpOwojZWxzZQogICAgLy8gSWYgbm8gZGVyaXZhdGl2ZXMgYXZhaWxhYmxlIChJRSAxMD8pLCByZXZlcnQgdG8gdmlldy1kZXBlbmRlbnQgZnV6egogICAgY29uc3QgZmxvYXQgZnV6eiA9IDAuMDU7CgogICAgdmVjMiByYW5nZSA9IDAuNSAtIChsaW5lVGhpY2tuZXNzICogMC4wNSk7CiAgICB2YWx1ZSA9IG1pbigKICAgICAgICAxLjAgLSBzbW9vdGhzdGVwKHJhbmdlLnMsIHJhbmdlLnMgKyBmdXp6LCBzY2FsZWRXaWR0aCksCiAgICAgICAgMS4wIC0gc21vb3Roc3RlcChyYW5nZS50LCByYW5nZS50ICsgZnV6eiwgc2NhbGVkSGVpZ2h0KSk7CiNlbmRpZgoKICAgIC8vIEVkZ2VzIHRha2VuIGZyb20gUmltTGlnaHRpbmdNYXRlcmlhbC5nbHNsCiAgICAvLyBTZWUgaHR0cDovL3d3dy5mdW5kemEuY29tL3JtYW5fc2hhZGVycy9zdXJmYWNlL2Zha2VfcmltL2Zha2VfcmltMS5odG1sCiAgICBmbG9hdCBkUmltID0gMS4wIC0gYWJzKGRvdChtYXRlcmlhbElucHV0Lm5vcm1hbEVDLCBub3JtYWxpemUobWF0ZXJpYWxJbnB1dC5wb3NpdGlvblRvRXllRUMpKSk7CiAgICBmbG9hdCBzUmltID0gc21vb3Roc3RlcCgwLjgsIDEuMCwgZFJpbSk7CiAgICB2YWx1ZSAqPSAoMS4wIC0gc1JpbSk7CgogICAgdmVjNCBoYWxmQ29sb3I7CiAgICBoYWxmQ29sb3IucmdiID0gY29sb3IucmdiICogMC41OwogICAgaGFsZkNvbG9yLmEgPSBjb2xvci5hICogKDEuMCAtICgoMS4wIC0gY2VsbEFscGhhKSAqIHZhbHVlKSk7CiAgICBoYWxmQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KGhhbGZDb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gaGFsZkNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmVtaXNzaW9uID0gaGFsZkNvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gaGFsZkNvbG9yLmE7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgJHgsdFA9UygoKT0+eyR4PWB1bmlmb3JtIHNhbXBsZXIyRCBpbWFnZTsKdW5pZm9ybSBmbG9hdCBzdHJlbmd0aDsKdW5pZm9ybSB2ZWMyIHJlcGVhdDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIAogICAgdmVjNCB0ZXh0dXJlVmFsdWUgPSB0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSk7CiAgICB2ZWMzIG5vcm1hbFRhbmdlbnRTcGFjZSA9IHRleHR1cmVWYWx1ZS5jaGFubmVsczsKICAgIG5vcm1hbFRhbmdlbnRTcGFjZS54eSA9IG5vcm1hbFRhbmdlbnRTcGFjZS54eSAqIDIuMCAtIDEuMDsKICAgIG5vcm1hbFRhbmdlbnRTcGFjZS56ID0gY2xhbXAoMS4wIC0gc3RyZW5ndGgsIDAuMSwgMS4wKTsKICAgIG5vcm1hbFRhbmdlbnRTcGFjZSA9IG5vcm1hbGl6ZShub3JtYWxUYW5nZW50U3BhY2UpOwogICAgdmVjMyBub3JtYWxFQyA9IG1hdGVyaWFsSW5wdXQudGFuZ2VudFRvRXllTWF0cml4ICogbm9ybWFsVGFuZ2VudFNwYWNlOwogICAgCiAgICBtYXRlcmlhbC5ub3JtYWwgPSBub3JtYWxFQzsKICAgIAogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgZVAsaVA9UygoKT0+e2VQPWB1bmlmb3JtIHZlYzQgY29sb3I7CgpmbG9hdCBnZXRQb2ludE9uTGluZSh2ZWMyIHAwLCB2ZWMyIHAxLCBmbG9hdCB4KQp7CiAgICBmbG9hdCBzbG9wZSA9IChwMC55IC0gcDEueSkgLyAocDAueCAtIHAxLngpOwogICAgcmV0dXJuIHNsb3BlICogKHggLSBwMC54KSArIHAwLnk7Cn0KCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKCiNpZiAoX19WRVJTSU9OX18gPT0gMzAwIHx8IGRlZmluZWQoR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzKSkKICAgIGZsb2F0IGJhc2UgPSAxLjAgLSBhYnMoZndpZHRoKHN0LnMpKSAqIDEwLjAgKiBjem1fcGl4ZWxSYXRpbzsKI2Vsc2UKICAgICAvLyBJZiBubyBkZXJpdmF0aXZlcyBhdmFpbGFibGUgKElFIDEwPyksIDIuNSUgb2YgdGhlIGxpbmUgd2lsbCBiZSB0aGUgYXJyb3cgaGVhZAogICAgZmxvYXQgYmFzZSA9IDAuOTc1OwojZW5kaWYKCiAgICB2ZWMyIGNlbnRlciA9IHZlYzIoMS4wLCAwLjUpOwogICAgZmxvYXQgcHRPblVwcGVyTGluZSA9IGdldFBvaW50T25MaW5lKHZlYzIoYmFzZSwgMS4wKSwgY2VudGVyLCBzdC5zKTsKICAgIGZsb2F0IHB0T25Mb3dlckxpbmUgPSBnZXRQb2ludE9uTGluZSh2ZWMyKGJhc2UsIDAuMCksIGNlbnRlciwgc3Qucyk7CgogICAgZmxvYXQgaGFsZldpZHRoID0gMC4xNTsKICAgIGZsb2F0IHMgPSBzdGVwKDAuNSAtIGhhbGZXaWR0aCwgc3QudCk7CiAgICBzICo9IDEuMCAtIHN0ZXAoMC41ICsgaGFsZldpZHRoLCBzdC50KTsKICAgIHMgKj0gMS4wIC0gc3RlcChiYXNlLCBzdC5zKTsKCiAgICBmbG9hdCB0ID0gc3RlcChiYXNlLCBtYXRlcmlhbElucHV0LnN0LnMpOwogICAgdCAqPSAxLjAgLSBzdGVwKHB0T25VcHBlckxpbmUsIHN0LnQpOwogICAgdCAqPSBzdGVwKHB0T25Mb3dlckxpbmUsIHN0LnQpOwoKICAgIC8vIEZpbmQgdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNsb3Nlc3Qgc2VwYXJhdG9yIChyZWdpb24gYmV0d2VlbiB0d28gY29sb3JzKQogICAgZmxvYXQgZGlzdDsKICAgIGlmIChzdC5zIDwgYmFzZSkKICAgIHsKICAgICAgICBmbG9hdCBkMSA9IGFicyhzdC50IC0gKDAuNSAtIGhhbGZXaWR0aCkpOwogICAgICAgIGZsb2F0IGQyID0gYWJzKHN0LnQgLSAoMC41ICsgaGFsZldpZHRoKSk7CiAgICAgICAgZGlzdCA9IG1pbihkMSwgZDIpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZsb2F0IGQxID0gY3ptX2luZmluaXR5OwogICAgICAgIGlmIChzdC50IDwgMC41IC0gaGFsZldpZHRoICYmIHN0LnQgPiAwLjUgKyBoYWxmV2lkdGgpCiAgICAgICAgewogICAgICAgICAgICBkMSA9IGFicyhzdC5zIC0gYmFzZSk7CiAgICAgICAgfQogICAgICAgIGZsb2F0IGQyID0gYWJzKHN0LnQgLSBwdE9uVXBwZXJMaW5lKTsKICAgICAgICBmbG9hdCBkMyA9IGFicyhzdC50IC0gcHRPbkxvd2VyTGluZSk7CiAgICAgICAgZGlzdCA9IG1pbihtaW4oZDEsIGQyKSwgZDMpOwogICAgfQoKICAgIHZlYzQgb3V0c2lkZUNvbG9yID0gdmVjNCgwLjApOwogICAgdmVjNCBjdXJyZW50Q29sb3IgPSBtaXgob3V0c2lkZUNvbG9yLCBjb2xvciwgY2xhbXAocyArIHQsIDAuMCwgMS4wKSk7CiAgICB2ZWM0IG91dENvbG9yID0gY3ptX2FudGlhbGlhcyhvdXRzaWRlQ29sb3IsIGNvbG9yLCBjdXJyZW50Q29sb3IsIGRpc3QpOwoKICAgIG91dENvbG9yID0gY3ptX2dhbW1hQ29ycmVjdChvdXRDb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gb3V0Q29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBvdXRDb2xvci5hOwogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgblAsc1A9UygoKT0+e25QPWB1bmlmb3JtIHZlYzQgY29sb3I7CnVuaWZvcm0gdmVjNCBnYXBDb2xvcjsKdW5pZm9ybSBmbG9hdCBkYXNoTGVuZ3RoOwp1bmlmb3JtIGZsb2F0IGRhc2hQYXR0ZXJuOwppbiBmbG9hdCB2X3BvbHlsaW5lQW5nbGU7Cgpjb25zdCBmbG9hdCBtYXNrTGVuZ3RoID0gMTYuMDsKCm1hdDIgcm90YXRlKGZsb2F0IHJhZCkgewogICAgZmxvYXQgYyA9IGNvcyhyYWQpOwogICAgZmxvYXQgcyA9IHNpbihyYWQpOwogICAgcmV0dXJuIG1hdDIoCiAgICAgICAgYywgcywKICAgICAgICAtcywgYwogICAgKTsKfQoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwoKICAgIHZlYzIgcG9zID0gcm90YXRlKHZfcG9seWxpbmVBbmdsZSkgKiBnbF9GcmFnQ29vcmQueHk7CgogICAgLy8gR2V0IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGRhc2ggZnJvbSAwIHRvIDEKICAgIGZsb2F0IGRhc2hQb3NpdGlvbiA9IGZyYWN0KHBvcy54IC8gKGRhc2hMZW5ndGggKiBjem1fcGl4ZWxSYXRpbykpOwogICAgLy8gRmlndXJlIG91dCB0aGUgbWFzayBpbmRleC4KICAgIGZsb2F0IG1hc2tJbmRleCA9IGZsb29yKGRhc2hQb3NpdGlvbiAqIG1hc2tMZW5ndGgpOwogICAgLy8gVGVzdCB0aGUgYml0IG1hc2suCiAgICBmbG9hdCBtYXNrVGVzdCA9IGZsb29yKGRhc2hQYXR0ZXJuIC8gcG93KDIuMCwgbWFza0luZGV4KSk7CiAgICB2ZWM0IGZyYWdDb2xvciA9IChtb2QobWFza1Rlc3QsIDIuMCkgPCAxLjApID8gZ2FwQ29sb3IgOiBjb2xvcjsKICAgIGlmIChmcmFnQ29sb3IuYSA8IDAuMDA1KSB7ICAgLy8gbWF0Y2hlcyAwLzI1NSBhbmQgMS8yNTUKICAgICAgICBkaXNjYXJkOwogICAgfQoKICAgIGZyYWdDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoZnJhZ0NvbG9yKTsKICAgIG1hdGVyaWFsLmVtaXNzaW9uID0gZnJhZ0NvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gZnJhZ0NvbG9yLmE7CiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciBvUCxyUD1TKCgpPT57b1A9YHVuaWZvcm0gdmVjNCBjb2xvcjsKdW5pZm9ybSBmbG9hdCBnbG93UG93ZXI7CnVuaWZvcm0gZmxvYXQgdGFwZXJQb3dlcjsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICB2ZWMyIHN0ID0gbWF0ZXJpYWxJbnB1dC5zdDsKICAgIGZsb2F0IGdsb3cgPSBnbG93UG93ZXIgLyBhYnMoc3QudCAtIDAuNSkgLSAoZ2xvd1Bvd2VyIC8gMC41KTsKCiAgICBpZiAodGFwZXJQb3dlciA8PSAwLjk5OTk5KSB7CiAgICAgICAgZ2xvdyAqPSBtaW4oMS4wLCB0YXBlclBvd2VyIC8gKDAuNSAtIHN0LnMgKiAwLjUpIC0gKHRhcGVyUG93ZXIgLyAwLjUpKTsKICAgIH0KCiAgICB2ZWM0IGZyYWdDb2xvcjsKICAgIGZyYWdDb2xvci5yZ2IgPSBtYXgodmVjMyhnbG93IC0gMS4wICsgY29sb3IucmdiKSwgY29sb3IucmdiKTsKICAgIGZyYWdDb2xvci5hID0gY2xhbXAoMC4wLCAxLjAsIGdsb3cpICogY29sb3IuYTsKICAgIGZyYWdDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoZnJhZ0NvbG9yKTsKCiAgICBtYXRlcmlhbC5lbWlzc2lvbiA9IGZyYWdDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGZyYWdDb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIGFQLEFQPVMoKCk9PnthUD1gdW5pZm9ybSB2ZWM0IGNvbG9yOwp1bmlmb3JtIHZlYzQgb3V0bGluZUNvbG9yOwp1bmlmb3JtIGZsb2F0IG91dGxpbmVXaWR0aDsKCmluIGZsb2F0IHZfd2lkdGg7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgdmVjMiBzdCA9IG1hdGVyaWFsSW5wdXQuc3Q7CiAgICBmbG9hdCBoYWxmSW50ZXJpb3JXaWR0aCA9ICAwLjUgKiAodl93aWR0aCAtIG91dGxpbmVXaWR0aCkgLyB2X3dpZHRoOwogICAgZmxvYXQgYiA9IHN0ZXAoMC41IC0gaGFsZkludGVyaW9yV2lkdGgsIHN0LnQpOwogICAgYiAqPSAxLjAgLSBzdGVwKDAuNSArIGhhbGZJbnRlcmlvcldpZHRoLCBzdC50KTsKCiAgICAvLyBGaW5kIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBjbG9zZXN0IHNlcGFyYXRvciAocmVnaW9uIGJldHdlZW4gdHdvIGNvbG9ycykKICAgIGZsb2F0IGQxID0gYWJzKHN0LnQgLSAoMC41IC0gaGFsZkludGVyaW9yV2lkdGgpKTsKICAgIGZsb2F0IGQyID0gYWJzKHN0LnQgLSAoMC41ICsgaGFsZkludGVyaW9yV2lkdGgpKTsKICAgIGZsb2F0IGRpc3QgPSBtaW4oZDEsIGQyKTsKCiAgICB2ZWM0IGN1cnJlbnRDb2xvciA9IG1peChvdXRsaW5lQ29sb3IsIGNvbG9yLCBiKTsKICAgIHZlYzQgb3V0Q29sb3IgPSBjem1fYW50aWFsaWFzKG91dGxpbmVDb2xvciwgY29sb3IsIGN1cnJlbnRDb2xvciwgZGlzdCk7CiAgICBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3Qob3V0Q29sb3IpOwoKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBvdXRDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IG91dENvbG9yLmE7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTt2YXIgaFAsY1A9UygoKT0+e2hQPWB1bmlmb3JtIHZlYzQgY29sb3I7CnVuaWZvcm0gdmVjNCByaW1Db2xvcjsKdW5pZm9ybSBmbG9hdCB3aWR0aDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICAvLyBTZWUgaHR0cDovL3d3dy5mdW5kemEuY29tL3JtYW5fc2hhZGVycy9zdXJmYWNlL2Zha2VfcmltL2Zha2VfcmltMS5odG1sCiAgICBmbG9hdCBkID0gMS4wIC0gZG90KG1hdGVyaWFsSW5wdXQubm9ybWFsRUMsIG5vcm1hbGl6ZShtYXRlcmlhbElucHV0LnBvc2l0aW9uVG9FeWVFQykpOwogICAgZmxvYXQgcyA9IHNtb290aHN0ZXAoMS4wIC0gd2lkdGgsIDEuMCwgZCk7CgogICAgdmVjNCBvdXRDb2xvciA9IGN6bV9nYW1tYUNvcnJlY3QoY29sb3IpOwogICAgdmVjNCBvdXRSaW1Db2xvciA9IGN6bV9nYW1tYUNvcnJlY3QocmltQ29sb3IpOwoKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBvdXRDb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5lbWlzc2lvbiA9IG91dFJpbUNvbG9yLnJnYiAqIHM7CiAgICBtYXRlcmlhbC5hbHBoYSA9IG1peChvdXRDb2xvci5hLCBvdXRSaW1Db2xvci5hLCBzKTsKCiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciBsUCxkUD1TKCgpPT57bFA9YHVuaWZvcm0gc2FtcGxlcjJEIGltYWdlOwoKY3ptX21hdGVyaWFsIGN6bV9nZXRNYXRlcmlhbChjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0KQp7CiAgICBjem1fbWF0ZXJpYWwgbWF0ZXJpYWwgPSBjem1fZ2V0RGVmYXVsdE1hdGVyaWFsKG1hdGVyaWFsSW5wdXQpOwogICAgdmVjNCByYW1wQ29sb3IgPSB0ZXh0dXJlKGltYWdlLCB2ZWMyKG1hdGVyaWFsSW5wdXQuc2xvcGUgLyAoY3ptX3BpIC8gMi4wKSwgMC41KSk7CiAgICByYW1wQ29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KHJhbXBDb2xvcik7CiAgICBtYXRlcmlhbC5kaWZmdXNlID0gcmFtcENvbG9yLnJnYjsKICAgIG1hdGVyaWFsLmFscGhhID0gcmFtcENvbG9yLmE7CiAgICByZXR1cm4gbWF0ZXJpYWw7Cn0KYH0pO3ZhciBtUCxmUD1TKCgpPT57bVA9YHVuaWZvcm0gdmVjNCBldmVuQ29sb3I7CnVuaWZvcm0gdmVjNCBvZGRDb2xvcjsKdW5pZm9ybSBmbG9hdCBvZmZzZXQ7CnVuaWZvcm0gZmxvYXQgcmVwZWF0Owp1bmlmb3JtIGJvb2wgaG9yaXpvbnRhbDsKCmN6bV9tYXRlcmlhbCBjem1fZ2V0TWF0ZXJpYWwoY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dCkKewogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiAgICAvLyBCYXNlZCBvbiB0aGUgU3RyaXBlcyBGcmFnbWVudCBTaGFkZXIgaW4gdGhlIE9yYW5nZSBCb29rICgxMS4xLjIpCiAgICBmbG9hdCBjb29yZCA9IG1peChtYXRlcmlhbElucHV0LnN0LnMsIG1hdGVyaWFsSW5wdXQuc3QudCwgZmxvYXQoaG9yaXpvbnRhbCkpOwogICAgZmxvYXQgdmFsdWUgPSBmcmFjdCgoY29vcmQgLSBvZmZzZXQpICogKHJlcGVhdCAqIDAuNSkpOwogICAgZmxvYXQgZGlzdCA9IG1pbih2YWx1ZSwgbWluKGFicyh2YWx1ZSAtIDAuNSksIDEuMCAtIHZhbHVlKSk7CgogICAgdmVjNCBjdXJyZW50Q29sb3IgPSBtaXgoZXZlbkNvbG9yLCBvZGRDb2xvciwgc3RlcCgwLjUsIHZhbHVlKSk7CiAgICB2ZWM0IGNvbG9yID0gY3ptX2FudGlhbGlhcyhldmVuQ29sb3IsIG9kZENvbG9yLCBjdXJyZW50Q29sb3IsIGRpc3QpOwogICAgY29sb3IgPSBjem1fZ2FtbWFDb3JyZWN0KGNvbG9yKTsKCiAgICBtYXRlcmlhbC5kaWZmdXNlID0gY29sb3IucmdiOwogICAgbWF0ZXJpYWwuYWxwaGEgPSBjb2xvci5hOwoKICAgIHJldHVybiBtYXRlcmlhbDsKfQpgfSk7dmFyIEVQLF9QPVMoKCk9PntFUD1gLy8gVGhhbmtzIGZvciB0aGUgY29udHJpYnV0aW9uIEpvbmFzCi8vIGh0dHA6Ly8yOWEuY2gvMjAxMi83LzE5L3dlYmdsLXRlcnJhaW4tcmVuZGVyaW5nLXdhdGVyLWZvZwoKdW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7CnVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDsKdW5pZm9ybSB2ZWM0IGJhc2VXYXRlckNvbG9yOwp1bmlmb3JtIHZlYzQgYmxlbmRDb2xvcjsKdW5pZm9ybSBmbG9hdCBmcmVxdWVuY3k7CnVuaWZvcm0gZmxvYXQgYW5pbWF0aW9uU3BlZWQ7CnVuaWZvcm0gZmxvYXQgYW1wbGl0dWRlOwp1bmlmb3JtIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5Owp1bmlmb3JtIGZsb2F0IGZhZGVGYWN0b3I7Cgpjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CgogICAgZmxvYXQgdGltZSA9IGN6bV9mcmFtZU51bWJlciAqIGFuaW1hdGlvblNwZWVkOwoKICAgIC8vIGZhZGUgaXMgYSBmdW5jdGlvbiBvZiB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgZnJhZ21lbnQgYW5kIHRoZSBmcmVxdWVuY3kgb2YgdGhlIHdhdmVzCiAgICBmbG9hdCBmYWRlID0gbWF4KDEuMCwgKGxlbmd0aChtYXRlcmlhbElucHV0LnBvc2l0aW9uVG9FeWVFQykgLyAxMDAwMDAwMDAwMC4wKSAqIGZyZXF1ZW5jeSAqIGZhZGVGYWN0b3IpOwoKICAgIGZsb2F0IHNwZWN1bGFyTWFwVmFsdWUgPSB0ZXh0dXJlKHNwZWN1bGFyTWFwLCBtYXRlcmlhbElucHV0LnN0KS5yOwoKICAgIC8vIG5vdGU6IG5vdCB1c2luZyBkaXJlY3Rpb25hbCBtb3Rpb24gYXQgdGhpcyB0aW1lLCBqdXN0IHNldCB0aGUgYW5nbGUgdG8gMC4wOwogICAgdmVjNCBub2lzZSA9IGN6bV9nZXRXYXRlck5vaXNlKG5vcm1hbE1hcCwgbWF0ZXJpYWxJbnB1dC5zdCAqIGZyZXF1ZW5jeSwgdGltZSwgMC4wKTsKICAgIHZlYzMgbm9ybWFsVGFuZ2VudFNwYWNlID0gbm9pc2UueHl6ICogdmVjMygxLjAsIDEuMCwgKDEuMCAvIGFtcGxpdHVkZSkpOwoKICAgIC8vIGZhZGUgb3V0IHRoZSBub3JtYWwgcGVydHVyYmF0aW9uIGFzIHdlIG1vdmUgZnVydGhlciBmcm9tIHRoZSB3YXRlciBzdXJmYWNlCiAgICBub3JtYWxUYW5nZW50U3BhY2UueHkgLz0gZmFkZTsKCiAgICAvLyBhdHRlbXB0IHRvIGZhZGUgb3V0IHRoZSBub3JtYWwgcGVydHVyYmF0aW9uIGFzIHdlIGFwcHJvYWNoIG5vbiB3YXRlciBhcmVhcyAobG93IHNwZWN1bGFyIG1hcCB2YWx1ZSkKICAgIG5vcm1hbFRhbmdlbnRTcGFjZSA9IG1peCh2ZWMzKDAuMCwgMC4wLCA1MC4wKSwgbm9ybWFsVGFuZ2VudFNwYWNlLCBzcGVjdWxhck1hcFZhbHVlKTsKCiAgICBub3JtYWxUYW5nZW50U3BhY2UgPSBub3JtYWxpemUobm9ybWFsVGFuZ2VudFNwYWNlKTsKCiAgICAvLyBnZXQgcmF0aW9zIGZvciBhbGlnbm1lbnQgb2YgdGhlIG5ldyBub3JtYWwgdmVjdG9yIHdpdGggYSB2ZWN0b3IgcGVycGVuZGljdWxhciB0byB0aGUgdGFuZ2VudCBwbGFuZQogICAgZmxvYXQgdHNQZXJ0dXJiYXRpb25SYXRpbyA9IGNsYW1wKGRvdChub3JtYWxUYW5nZW50U3BhY2UsIHZlYzMoMC4wLCAwLjAsIDEuMCkpLCAwLjAsIDEuMCk7CgogICAgLy8gZmFkZSBvdXQgd2F0ZXIgZWZmZWN0IGFzIHNwZWN1bGFyIG1hcCB2YWx1ZSBkZWNyZWFzZXMKICAgIG1hdGVyaWFsLmFscGhhID0gbWl4KGJsZW5kQ29sb3IuYSwgYmFzZVdhdGVyQ29sb3IuYSwgc3BlY3VsYXJNYXBWYWx1ZSkgKiBzcGVjdWxhck1hcFZhbHVlOwoKICAgIC8vIGJhc2UgY29sb3IgaXMgYSBibGVuZCBvZiB0aGUgd2F0ZXIgYW5kIG5vbi13YXRlciBjb2xvciBiYXNlZCBvbiB0aGUgdmFsdWUgZnJvbSB0aGUgc3BlY3VsYXIgbWFwCiAgICAvLyBtYXkgbmVlZCBhIHVuaWZvcm0gYmxlbmQgZmFjdG9yIHRvIGJldHRlciBjb250cm9sIHRoaXMKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBtaXgoYmxlbmRDb2xvci5yZ2IsIGJhc2VXYXRlckNvbG9yLnJnYiwgc3BlY3VsYXJNYXBWYWx1ZSk7CgogICAgLy8gZGlmZnVzZSBoaWdobGlnaHRzIGFyZSBiYXNlZCBvbiBob3cgcGVydHVyYmVkIHRoZSBub3JtYWwgaXMKICAgIG1hdGVyaWFsLmRpZmZ1c2UgKz0gKDAuMSAqIHRzUGVydHVyYmF0aW9uUmF0aW8pOwoKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlOwoKICAgIG1hdGVyaWFsLm5vcm1hbCA9IG5vcm1hbGl6ZShtYXRlcmlhbElucHV0LnRhbmdlbnRUb0V5ZU1hdHJpeCAqIG5vcm1hbFRhbmdlbnRTcGFjZSk7CgogICAgbWF0ZXJpYWwuc3BlY3VsYXIgPSBzcGVjdWxhckludGVuc2l0eTsKICAgIG1hdGVyaWFsLnNoaW5pbmVzcyA9IDEwLjA7CgogICAgcmV0dXJuIG1hdGVyaWFsOwp9CmB9KTtmdW5jdGlvbiBRdCh0KXt0aGlzLnR5cGU9dm9pZCAwLHRoaXMuc2hhZGVyU291cmNlPXZvaWQgMCx0aGlzLm1hdGVyaWFscz12b2lkIDAsdGhpcy51bmlmb3Jtcz12b2lkIDAsdGhpcy5fdW5pZm9ybXM9dm9pZCAwLHRoaXMudHJhbnNsdWNlbnQ9dm9pZCAwLHRoaXMuX21pbmlmaWNhdGlvbkZpbHRlcj1aKHQubWluaWZpY2F0aW9uRmlsdGVyLF9zLkxJTkVBUiksdGhpcy5fbWFnbmlmaWNhdGlvbkZpbHRlcj1aKHQubWFnbmlmaWNhdGlvbkZpbHRlcixOYS5MSU5FQVIpLHRoaXMuX3N0cmljdD12b2lkIDAsdGhpcy5fdGVtcGxhdGU9dm9pZCAwLHRoaXMuX2NvdW50PXZvaWQgMCx0aGlzLl90ZXh0dXJlUGF0aHM9e30sdGhpcy5fbG9hZGVkSW1hZ2VzPVtdLHRoaXMuX2xvYWRlZEN1YmVNYXBzPVtdLHRoaXMuX3RleHR1cmVzPXt9LHRoaXMuX3VwZGF0ZUZ1bmN0aW9ucz1bXSx0aGlzLl9kZWZhdWx0VGV4dHVyZT12b2lkIDAsTW50KHQsdGhpcyksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7dHlwZTp7dmFsdWU6dGhpcy50eXBlLHdyaXRhYmxlOiExfX0pLG0oUXQuX3VuaWZvcm1MaXN0W3RoaXMudHlwZV0pfHwoUXQuX3VuaWZvcm1MaXN0W3RoaXMudHlwZV09T2JqZWN0LmtleXModGhpcy5fdW5pZm9ybXMpKX1mdW5jdGlvbiBNbnQodCxlKXt0PVoodCxaLkVNUFRZX09CSkVDVCksZS5fc3RyaWN0PVoodC5zdHJpY3QsITEpLGUuX2NvdW50PVoodC5jb3VudCwwKSxlLl90ZW1wbGF0ZT1xcyhaKHQuZmFicmljLFouRU1QVFlfT0JKRUNUKSksZS5fdGVtcGxhdGUudW5pZm9ybXM9cXMoWihlLl90ZW1wbGF0ZS51bmlmb3JtcyxaLkVNUFRZX09CSkVDVCkpLGUuX3RlbXBsYXRlLm1hdGVyaWFscz1xcyhaKGUuX3RlbXBsYXRlLm1hdGVyaWFscyxaLkVNUFRZX09CSkVDVCkpLGUudHlwZT1tKGUuX3RlbXBsYXRlLnR5cGUpP2UuX3RlbXBsYXRlLnR5cGU6QnMoKSxlLnNoYWRlclNvdXJjZT0iIixlLm1hdGVyaWFscz17fSxlLnVuaWZvcm1zPXt9LGUuX3VuaWZvcm1zPXt9LGUuX3RyYW5zbHVjZW50RnVuY3Rpb25zPVtdO2xldCBpLG49UXQuX21hdGVyaWFsQ2FjaGUuZ2V0TWF0ZXJpYWwoZS50eXBlKTtpZihtKG4pKXtsZXQgbz1xcyhuLmZhYnJpYywhMCk7ZS5fdGVtcGxhdGU9ZXMoZS5fdGVtcGxhdGUsbywhMCksaT1uLnRyYW5zbHVjZW50fXludChlKSxtKG4pfHxRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChlLnR5cGUsZSkseG50KGUpLEhudChlKSx6bnQoZSk7bGV0IHM9ZS5fdHJhbnNsdWNlbnRGdW5jdGlvbnMubGVuZ3RoPT09MD8hMDp2b2lkIDA7aWYoaT1aKGkscyksaT1aKHQudHJhbnNsdWNlbnQsaSksbShpKSlpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7bGV0IG89ZnVuY3Rpb24oKXtyZXR1cm4gaShlKX07ZS5fdHJhbnNsdWNlbnRGdW5jdGlvbnMucHVzaChvKX1lbHNlIGUuX3RyYW5zbHVjZW50RnVuY3Rpb25zLnB1c2goaSl9ZnVuY3Rpb24geU4odCxlLGksbil7aWYobSh0KSl7Zm9yKGxldCBzIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShzKSl7bGV0IG89ZS5pbmRleE9mKHMpIT09LTE7KG4mJiFvfHwhbiYmbykmJmkocyxlKX19fWZ1bmN0aW9uIFJQKHQsZSl7bGV0IGk9YGZhYnJpYzogcHJvcGVydHkgbmFtZSAnJHt0fScgaXMgbm90IHZhbGlkLiBJdCBzaG91bGQgYmUgYDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHM9YCcke2Vbbl19J2A7aSs9bj09PWUubGVuZ3RoLTE/YG9yICR7c30uYDpgJHtzfSwgYH10aHJvdyBuZXcgWShpKX1mdW5jdGlvbiBRbnQodCxlKXtsZXQgaT1gZmFicmljOiB1bmlmb3JtcyBhbmQgbWF0ZXJpYWxzIGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBwcm9wZXJ0eSAnJHt0fSdgO3Rocm93IG5ldyBZKGkpfWZ1bmN0aW9uIHludCh0KXtsZXQgZT10Ll90ZW1wbGF0ZSxpPWUudW5pZm9ybXMsbj1lLm1hdGVyaWFscyxzPWUuY29tcG9uZW50cztpZihtKHMpJiZtKGUuc291cmNlKSl0aHJvdyBuZXcgWSgiZmFicmljOiBjYW5ub3QgaGF2ZSBzb3VyY2UgYW5kIGNvbXBvbmVudHMgaW4gdGhlIHNhbWUgdGVtcGxhdGUuIik7eU4oZSxrbnQsUlAsITApLHlOKHMsTG50LFJQLCEwKTtsZXQgbz1bXTtmb3IobGV0IHIgaW4gbiluLmhhc093blByb3BlcnR5KHIpJiZvLnB1c2gocik7eU4oaSxvLFFudCwhMSl9ZnVuY3Rpb24gd250KHQsZSl7bGV0IGk9ZS5fdGVtcGxhdGUubWF0ZXJpYWxzO2ZvcihsZXQgbiBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkobikmJnQuaW5kZXhPZihuKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB4bnQodCl7bGV0IGU9dC5fdGVtcGxhdGUuY29tcG9uZW50cyxpPXQuX3RlbXBsYXRlLnNvdXJjZTtpZihtKGkpKXQuc2hhZGVyU291cmNlKz1gJHtpfQpgO2Vsc2V7aWYodC5zaGFkZXJTb3VyY2UrPWBjem1fbWF0ZXJpYWwgY3ptX2dldE1hdGVyaWFsKGN6bV9tYXRlcmlhbElucHV0IG1hdGVyaWFsSW5wdXQpCnsKYCx0LnNoYWRlclNvdXJjZSs9YGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXREZWZhdWx0TWF0ZXJpYWwobWF0ZXJpYWxJbnB1dCk7CmAsbShlKSl7bGV0IG49T2JqZWN0LmtleXModC5fdGVtcGxhdGUubWF0ZXJpYWxzKS5sZW5ndGg+MDtmb3IobGV0IHMgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHMpKWlmKHM9PT0iZGlmZnVzZSJ8fHM9PT0iZW1pc3Npb24iKXtsZXQgcj1uJiZ3bnQoZVtzXSx0KT9lW3NdOmBjem1fZ2FtbWFDb3JyZWN0KCR7ZVtzXX0pYDt0LnNoYWRlclNvdXJjZSs9YG1hdGVyaWFsLiR7c30gPSAke3J9OyAKYH1lbHNlIHM9PT0iYWxwaGEiP3Quc2hhZGVyU291cmNlKz1gbWF0ZXJpYWwuYWxwaGEgPSAke2UuYWxwaGF9OyAKYDp0LnNoYWRlclNvdXJjZSs9YG1hdGVyaWFsLiR7c30gPSAke2Vbc119OwpgfXQuc2hhZGVyU291cmNlKz1gcmV0dXJuIG1hdGVyaWFsOwp9CmB9fWZ1bmN0aW9uIEpudCh0KXtsZXQgZTtyZXR1cm4gZnVuY3Rpb24oaSxuKXtsZXQgcz1pLnVuaWZvcm1zLG89c1t0XSxyPWUhPT1vLGE9IW0obyl8fG89PT1RdC5EZWZhdWx0SW1hZ2VJZDtlPW87bGV0IGg9aS5fdGV4dHVyZXNbdF0sQSxkO2lmKG8gaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KXtpZihvLnJlYWR5U3RhdGU+PTIpe2lmKHImJm0oaCkmJihoIT09bi5kZWZhdWx0VGV4dHVyZSYmaC5kZXN0cm95KCksaD12b2lkIDApLCFtKGgpfHxoPT09bi5kZWZhdWx0VGV4dHVyZSl7bGV0IEU9bmV3IFpBKHttaW5pZmljYXRpb25GaWx0ZXI6aS5fbWluaWZpY2F0aW9uRmlsdGVyLG1hZ25pZmljYXRpb25GaWx0ZXI6aS5fbWFnbmlmaWNhdGlvbkZpbHRlcn0pO2g9bmV3IGJhKHtjb250ZXh0Om4sc291cmNlOm8sc2FtcGxlcjpFfSksaS5fdGV4dHVyZXNbdF09aDtyZXR1cm59aC5jb3B5RnJvbSh7c291cmNlOm99KX1lbHNlIG0oaCl8fChpLl90ZXh0dXJlc1t0XT1uLmRlZmF1bHRUZXh0dXJlKTtyZXR1cm59aWYobyBpbnN0YW5jZW9mIGJhJiZvIT09aCl7aS5fdGV4dHVyZVBhdGhzW3RdPXZvaWQgMDtsZXQgRT1pLl90ZXh0dXJlc1t0XTttKEUpJiZFIT09aS5fZGVmYXVsdFRleHR1cmUmJkUuZGVzdHJveSgpLGkuX3RleHR1cmVzW3RdPW8sQT1gJHt0fURpbWVuc2lvbnNgLHMuaGFzT3duUHJvcGVydHkoQSkmJihkPXNbQV0sZC54PW8uX3dpZHRoLGQueT1vLl9oZWlnaHQpO3JldHVybn1pZihyJiZtKGgpJiZhJiYoaCE9PWkuX2RlZmF1bHRUZXh0dXJlJiZoLmRlc3Ryb3koKSxoPXZvaWQgMCksbShoKXx8KGkuX3RleHR1cmVQYXRoc1t0XT12b2lkIDAsaD1pLl90ZXh0dXJlc1t0XT1pLl9kZWZhdWx0VGV4dHVyZSxBPWAke3R9RGltZW5zaW9uc2Ascy5oYXNPd25Qcm9wZXJ0eShBKSYmKGQ9c1tBXSxkLng9aC5fd2lkdGgsZC55PWguX2hlaWdodCkpLGEpcmV0dXJuO2xldCBmPW8gaW5zdGFuY2VvZiB0bjtpZighbShpLl90ZXh0dXJlUGF0aHNbdF0pfHxmJiZvLnVybCE9PWkuX3RleHR1cmVQYXRoc1t0XS51cmx8fCFmJiZvIT09aS5fdGV4dHVyZVBhdGhzW3RdKXtpZih0eXBlb2Ygbz09InN0cmluZyJ8fGYpe2xldCBFPWY/bzp0bi5jcmVhdGVJZk5lZWRlZChvKSxfO1BudC50ZXN0KEUudXJsKT9fPU94KEUudXJsKTpfPUUuZmV0Y2hJbWFnZSgpLFByb21pc2UucmVzb2x2ZShfKS50aGVuKGZ1bmN0aW9uKFIpe2kuX2xvYWRlZEltYWdlcy5wdXNoKHtpZDp0LGltYWdlOlJ9KX0pLmNhdGNoKGZ1bmN0aW9uKCl7bShoKSYmaCE9PWkuX2RlZmF1bHRUZXh0dXJlJiZoLmRlc3Ryb3koKSxpLl90ZXh0dXJlc1t0XT1pLl9kZWZhdWx0VGV4dHVyZX0pfWVsc2UobyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHxvIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCkmJmkuX2xvYWRlZEltYWdlcy5wdXNoKHtpZDp0LGltYWdlOm99KTtpLl90ZXh0dXJlUGF0aHNbdF09b319fWZ1bmN0aW9uIGpudCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtsZXQgbj1lLnVuaWZvcm1zW3RdO2lmKG4gaW5zdGFuY2VvZiBMTil7bGV0IG89ZS5fdGV4dHVyZXNbdF07byE9PWUuX2RlZmF1bHRUZXh0dXJlJiZvLmRlc3Ryb3koKSxlLl90ZXh0dXJlUGF0aHNbdF09dm9pZCAwLGUuX3RleHR1cmVzW3RdPW47cmV0dXJufWlmKG0oZS5fdGV4dHVyZXNbdF0pfHwoZS5fdGV4dHVyZVBhdGhzW3RdPXZvaWQgMCxlLl90ZXh0dXJlc1t0XT1pLmRlZmF1bHRDdWJlTWFwKSxuPT09UXQuRGVmYXVsdEN1YmVNYXBJZClyZXR1cm47bGV0IHM9bi5wb3NpdGl2ZVgrbi5uZWdhdGl2ZVgrbi5wb3NpdGl2ZVkrbi5uZWdhdGl2ZVkrbi5wb3NpdGl2ZVorbi5uZWdhdGl2ZVo7aWYocyE9PWUuX3RleHR1cmVQYXRoc1t0XSl7bGV0IG89W3RuLmNyZWF0ZUlmTmVlZGVkKG4ucG9zaXRpdmVYKS5mZXRjaEltYWdlKCksdG4uY3JlYXRlSWZOZWVkZWQobi5uZWdhdGl2ZVgpLmZldGNoSW1hZ2UoKSx0bi5jcmVhdGVJZk5lZWRlZChuLnBvc2l0aXZlWSkuZmV0Y2hJbWFnZSgpLHRuLmNyZWF0ZUlmTmVlZGVkKG4ubmVnYXRpdmVZKS5mZXRjaEltYWdlKCksdG4uY3JlYXRlSWZOZWVkZWQobi5wb3NpdGl2ZVopLmZldGNoSW1hZ2UoKSx0bi5jcmVhdGVJZk5lZWRlZChuLm5lZ2F0aXZlWikuZmV0Y2hJbWFnZSgpXTtQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKHIpe2UuX2xvYWRlZEN1YmVNYXBzLnB1c2goe2lkOnQsaW1hZ2VzOnJ9KX0pLGUuX3RleHR1cmVQYXRoc1t0XT1zfX19ZnVuY3Rpb24gSG50KHQpe2xldCBlPXQuX3RlbXBsYXRlLnVuaWZvcm1zO2ZvcihsZXQgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJklQKHQsaSl9ZnVuY3Rpb24gSVAodCxlKXtsZXQgaT10Ll9zdHJpY3Qsbj10Ll90ZW1wbGF0ZS51bmlmb3JtcyxzPW5bZV0sbz12bnQocyk7aWYoIW0obykpdGhyb3cgbmV3IFkoYGZhYnJpYzogdW5pZm9ybSAnJHtlfScgaGFzIGludmFsaWQgdHlwZS5gKTtsZXQgcjtpZihvPT09ImNoYW5uZWxzIil7aWYocj0kRSh0LGUscywhMSkscj09PTAmJmkpdGhyb3cgbmV3IFkoYHN0cmljdDogc2hhZGVyIHNvdXJjZSBkb2VzIG5vdCB1c2UgY2hhbm5lbHMgJyR7ZX0nLmApfWVsc2V7aWYobz09PSJzYW1wbGVyMkQiKXtsZXQgQT1gJHtlfURpbWVuc2lvbnNgO0tudCh0LEEpPjAmJihuW0FdPXt0eXBlOiJpdmVjMyIseDoxLHk6MX0sSVAodCxBKSl9aWYoIW5ldyBSZWdFeHAoYHVuaWZvcm1cXHMrJHtvfVxccyske2V9XFxzKjtgKS50ZXN0KHQuc2hhZGVyU291cmNlKSl7bGV0IEE9YHVuaWZvcm0gJHtvfSAke2V9O2A7dC5zaGFkZXJTb3VyY2U9QSt0LnNoYWRlclNvdXJjZX1sZXQgaD1gJHtlfV8ke3QuX2NvdW50Kyt9YDtpZihyPSRFKHQsZSxoKSxyPT09MSYmaSl0aHJvdyBuZXcgWShgc3RyaWN0OiBzaGFkZXIgc291cmNlIGRvZXMgbm90IHVzZSB1bmlmb3JtICcke2V9Jy5gKTtpZih0LnVuaWZvcm1zW2VdPXMsbz09PSJzYW1wbGVyMkQiKXQuX3VuaWZvcm1zW2hdPWZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVzW2VdfSx0Ll91cGRhdGVGdW5jdGlvbnMucHVzaChKbnQoZSkpO2Vsc2UgaWYobz09PSJzYW1wbGVyQ3ViZSIpdC5fdW5pZm9ybXNbaF09ZnVuY3Rpb24oKXtyZXR1cm4gdC5fdGV4dHVyZXNbZV19LHQuX3VwZGF0ZUZ1bmN0aW9ucy5wdXNoKGpudChlKSk7ZWxzZSBpZihvLmluZGV4T2YoIm1hdCIpIT09LTEpe2xldCBBPW5ldyBaUFtvXTt0Ll91bmlmb3Jtc1toXT1mdW5jdGlvbigpe3JldHVybiBaUFtvXS5mcm9tQ29sdW1uTWFqb3JBcnJheSh0LnVuaWZvcm1zW2VdLEEpfX1lbHNlIHQuX3VuaWZvcm1zW2hdPWZ1bmN0aW9uKCl7cmV0dXJuIHQudW5pZm9ybXNbZV19fX1mdW5jdGlvbiB2bnQodCl7bGV0IGU9dC50eXBlO2lmKCFtKGUpKXtsZXQgaT10eXBlb2YgdDtpZihpPT09Im51bWJlciIpZT0iZmxvYXQiO2Vsc2UgaWYoaT09PSJib29sZWFuIillPSJib29sIjtlbHNlIGlmKGk9PT0ic3RyaW5nInx8dCBpbnN0YW5jZW9mIHRufHx0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50KS9eKFtyZ2JhXSl7MSw0fSQvaS50ZXN0KHQpP2U9ImNoYW5uZWxzIjp0PT09UXQuRGVmYXVsdEN1YmVNYXBJZD9lPSJzYW1wbGVyQ3ViZSI6ZT0ic2FtcGxlcjJEIjtlbHNlIGlmKGk9PT0ib2JqZWN0IilpZihBcnJheS5pc0FycmF5KHQpKSh0Lmxlbmd0aD09PTR8fHQubGVuZ3RoPT09OXx8dC5sZW5ndGg9PT0xNikmJihlPWBtYXQke01hdGguc3FydCh0Lmxlbmd0aCl9YCk7ZWxzZXtsZXQgbj0wO2ZvcihsZXQgcyBpbiB0KXQuaGFzT3duUHJvcGVydHkocykmJihuKz0xKTtuPj0yJiZuPD00P2U9YHZlYyR7bn1gOm49PT02JiYoZT0ic2FtcGxlckN1YmUiKX19cmV0dXJuIGV9ZnVuY3Rpb24gem50KHQpe2xldCBlPXQuX3N0cmljdCxpPXQuX3RlbXBsYXRlLm1hdGVyaWFscztmb3IobGV0IG4gaW4gaSlpZihpLmhhc093blByb3BlcnR5KG4pKXtsZXQgcz1uZXcgUXQoe3N0cmljdDplLGZhYnJpYzppW25dLGNvdW50OnQuX2NvdW50fSk7dC5fY291bnQ9cy5fY291bnQsdC5fdW5pZm9ybXM9ZXModC5fdW5pZm9ybXMscy5fdW5pZm9ybXMsITApLHQubWF0ZXJpYWxzW25dPXMsdC5fdHJhbnNsdWNlbnRGdW5jdGlvbnM9dC5fdHJhbnNsdWNlbnRGdW5jdGlvbnMuY29uY2F0KHMuX3RyYW5zbHVjZW50RnVuY3Rpb25zKTtsZXQgbz0iY3ptX2dldE1hdGVyaWFsIixyPWAke299XyR7dC5fY291bnQrK31gOyRFKHMsbyxyKSx0LnNoYWRlclNvdXJjZT1zLnNoYWRlclNvdXJjZSt0LnNoYWRlclNvdXJjZTtsZXQgYT1gJHtyfShtYXRlcmlhbElucHV0KWA7aWYoJEUodCxuLGEpPT09MCYmZSl0aHJvdyBuZXcgWShgc3RyaWN0OiBzaGFkZXIgc291cmNlIGRvZXMgbm90IHVzZSBtYXRlcmlhbCAnJHtufScuYCl9fWZ1bmN0aW9uICRFKHQsZSxpLG4pe249WihuLCEwKTtsZXQgcz0wLG89IihbXFx3XSk/IixyPWAoW1xcdyR7bj8iLiI6IiJ9XSk/YCxhPW5ldyBSZWdFeHAocitlK28sImciKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2U9dC5zaGFkZXJTb3VyY2UucmVwbGFjZShhLGZ1bmN0aW9uKGgsQSxkKXtyZXR1cm4gQXx8ZD9oOihzKz0xLGkpfSksc31mdW5jdGlvbiBLbnQodCxlLGkpe3JldHVybiAkRSh0LGUsZSxpKX12YXIga250LExudCxaUCxQbnQsd04scFA9UygoKT0+e1hlKCk7YUUoKTtRbigpO0tBKCk7aWgoKTtGdCgpO210KCk7V3MoKTtPdCgpO0J4KCk7ZGMoKTtkbigpO2JpKCk7SWEoKTtXeCgpO3VJKCk7VXgoKTtReCgpO0x4KCk7d3goKTtQeCgpO2p4KCk7dngoKTtLeCgpO3F4KCk7dFAoKTtpUCgpO3NQKCk7clAoKTtBUCgpO2NQKCk7WUUoKTtkUCgpO2ZQKCk7TkUoKTtGRSgpO19QKCk7UXQuX3VuaWZvcm1MaXN0PXt9O1F0LmZyb21UeXBlPWZ1bmN0aW9uKHQsZSl7aWYoIW0oUXQuX21hdGVyaWFsQ2FjaGUuZ2V0TWF0ZXJpYWwodCkpKXRocm93IG5ldyBZKGBtYXRlcmlhbCB3aXRoIHR5cGUgJyR7dH0nIGRvZXMgbm90IGV4aXN0LmApO2xldCBpPW5ldyBRdCh7ZmFicmljOnt0eXBlOnR9fSk7aWYobShlKSlmb3IobGV0IG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYoaS51bmlmb3Jtc1tuXT1lW25dKTtyZXR1cm4gaX07UXQucHJvdG90eXBlLmlzVHJhbnNsdWNlbnQ9ZnVuY3Rpb24oKXtpZihtKHRoaXMudHJhbnNsdWNlbnQpKXJldHVybiB0eXBlb2YgdGhpcy50cmFuc2x1Y2VudD09ImZ1bmN0aW9uIj90aGlzLnRyYW5zbHVjZW50KCk6dGhpcy50cmFuc2x1Y2VudDtsZXQgdD0hMCxlPXRoaXMuX3RyYW5zbHVjZW50RnVuY3Rpb25zLGk9ZS5sZW5ndGg7Zm9yKGxldCBuPTA7bjxpOysrbil7bGV0IHM9ZVtuXTtpZih0eXBlb2Ygcz09ImZ1bmN0aW9uIj90PXQmJnMoKTp0PXQmJnMsIXQpYnJlYWt9cmV0dXJuIHR9O1F0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdFRleHR1cmU9dC5kZWZhdWx0VGV4dHVyZTtsZXQgZSxpLG49dGhpcy5fbG9hZGVkSW1hZ2VzLHM9bi5sZW5ndGg7Zm9yKGU9MDtlPHM7KytlKXtsZXQgaD1uW2VdO2k9aC5pZDtsZXQgQT1oLmltYWdlLGQ7QXJyYXkuaXNBcnJheShBKSYmKGQ9QS5zbGljZSgxLEEubGVuZ3RoKS5tYXAoZnVuY3Rpb24oSSl7cmV0dXJuIEkuYnVmZmVyVmlld30pLEE9QVswXSk7bGV0IGY9bmV3IFpBKHttaW5pZmljYXRpb25GaWx0ZXI6dGhpcy5fbWluaWZpY2F0aW9uRmlsdGVyLG1hZ25pZmljYXRpb25GaWx0ZXI6dGhpcy5fbWFnbmlmaWNhdGlvbkZpbHRlcn0pLEU7bShBLmludGVybmFsRm9ybWF0KT9FPW5ldyBiYSh7Y29udGV4dDp0LHBpeGVsRm9ybWF0OkEuaW50ZXJuYWxGb3JtYXQsd2lkdGg6QS53aWR0aCxoZWlnaHQ6QS5oZWlnaHQsc291cmNlOnthcnJheUJ1ZmZlclZpZXc6QS5idWZmZXJWaWV3LG1pcExldmVsczpkfSxzYW1wbGVyOmZ9KTpFPW5ldyBiYSh7Y29udGV4dDp0LHNvdXJjZTpBLHNhbXBsZXI6Zn0pO2xldCBfPXRoaXMuX3RleHR1cmVzW2ldO20oXykmJl8hPT10aGlzLl9kZWZhdWx0VGV4dHVyZSYmXy5kZXN0cm95KCksdGhpcy5fdGV4dHVyZXNbaV09RTtsZXQgUj1gJHtpfURpbWVuc2lvbnNgO2lmKHRoaXMudW5pZm9ybXMuaGFzT3duUHJvcGVydHkoUikpe2xldCBJPXRoaXMudW5pZm9ybXNbUl07SS54PUUuX3dpZHRoLEkueT1FLl9oZWlnaHR9fW4ubGVuZ3RoPTA7bGV0IG89dGhpcy5fbG9hZGVkQ3ViZU1hcHM7Zm9yKHM9by5sZW5ndGgsZT0wO2U8czsrK2Upe2xldCBoPW9bZV07aT1oLmlkO2xldCBBPWguaW1hZ2VzLGQ9bmV3IExOKHtjb250ZXh0OnQsc291cmNlOntwb3NpdGl2ZVg6QVswXSxuZWdhdGl2ZVg6QVsxXSxwb3NpdGl2ZVk6QVsyXSxuZWdhdGl2ZVk6QVszXSxwb3NpdGl2ZVo6QVs0XSxuZWdhdGl2ZVo6QVs1XX0sc2FtcGxlcjpuZXcgWkEoe21pbmlmaWNhdGlvbkZpbHRlcjp0aGlzLl9taW5pZmljYXRpb25GaWx0ZXIsbWFnbmlmaWNhdGlvbkZpbHRlcjp0aGlzLl9tYWduaWZpY2F0aW9uRmlsdGVyfSl9KTt0aGlzLl90ZXh0dXJlc1tpXT1kfW8ubGVuZ3RoPTA7bGV0IHI9dGhpcy5fdXBkYXRlRnVuY3Rpb25zO2ZvcihzPXIubGVuZ3RoLGU9MDtlPHM7KytlKXJbZV0odGhpcyx0KTtsZXQgYT10aGlzLm1hdGVyaWFscztmb3IobGV0IGggaW4gYSlhLmhhc093blByb3BlcnR5KGgpJiZhW2hdLnVwZGF0ZSh0KX07UXQucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1F0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fdGV4dHVyZXM7Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IG49dFtpXTtuIT09dGhpcy5fZGVmYXVsdFRleHR1cmUmJm4uZGVzdHJveSgpfWxldCBlPXRoaXMubWF0ZXJpYWxzO2ZvcihsZXQgaSBpbiBlKWUuaGFzT3duUHJvcGVydHkoaSkmJmVbaV0uZGVzdHJveSgpO3JldHVybiBsaSh0aGlzKX07a250PVsidHlwZSIsIm1hdGVyaWFscyIsInVuaWZvcm1zIiwiY29tcG9uZW50cyIsInNvdXJjZSJdLExudD1bImRpZmZ1c2UiLCJzcGVjdWxhciIsInNoaW5pbmVzcyIsIm5vcm1hbCIsImVtaXNzaW9uIiwiYWxwaGEiXTtaUD17bWF0MjpIbixtYXQzOmx0LG1hdDQ6YXR9LFBudD0vXC5rdHgyJC9pO1F0Ll9tYXRlcmlhbENhY2hlPXtfbWF0ZXJpYWxzOnt9LGFkZE1hdGVyaWFsOmZ1bmN0aW9uKHQsZSl7dGhpcy5fbWF0ZXJpYWxzW3RdPWV9LGdldE1hdGVyaWFsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tYXRlcmlhbHNbdF19fTtRdC5EZWZhdWx0SW1hZ2VJZD0iY3ptX2RlZmF1bHRJbWFnZSI7UXQuRGVmYXVsdEN1YmVNYXBJZD0iY3ptX2RlZmF1bHRDdWJlTWFwIjtRdC5Db2xvclR5cGU9IkNvbG9yIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Db2xvclR5cGUse2ZhYnJpYzp7dHlwZTpRdC5Db2xvclR5cGUsdW5pZm9ybXM6e2NvbG9yOm5ldyBadCgxLDAsMCwuNSl9LGNvbXBvbmVudHM6e2RpZmZ1c2U6ImNvbG9yLnJnYiIsYWxwaGE6ImNvbG9yLmEifX0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQudW5pZm9ybXMuY29sb3IuYWxwaGE8MX19KTtRdC5JbWFnZVR5cGU9IkltYWdlIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5JbWFnZVR5cGUse2ZhYnJpYzp7dHlwZTpRdC5JbWFnZVR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLHJlcGVhdDpuZXcgbnQoMSwxKSxjb2xvcjpuZXcgWnQoMSwxLDEsMSl9LGNvbXBvbmVudHM6e2RpZmZ1c2U6InRleHR1cmUoaW1hZ2UsIGZyYWN0KHJlcGVhdCAqIG1hdGVyaWFsSW5wdXQuc3QpKS5yZ2IgKiBjb2xvci5yZ2IiLGFscGhhOiJ0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSkuYSAqIGNvbG9yLmEifX0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQudW5pZm9ybXMuY29sb3IuYWxwaGE8MX19KTtRdC5EaWZmdXNlTWFwVHlwZT0iRGlmZnVzZU1hcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRGlmZnVzZU1hcFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5EaWZmdXNlTWFwVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWQsY2hhbm5lbHM6InJnYiIscmVwZWF0Om5ldyBudCgxLDEpfSxjb21wb25lbnRzOntkaWZmdXNlOiJ0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSkuY2hhbm5lbHMifX0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5BbHBoYU1hcFR5cGU9IkFscGhhTWFwIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5BbHBoYU1hcFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5BbHBoYU1hcFR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLGNoYW5uZWw6ImEiLHJlcGVhdDpuZXcgbnQoMSwxKX0sY29tcG9uZW50czp7YWxwaGE6InRleHR1cmUoaW1hZ2UsIGZyYWN0KHJlcGVhdCAqIG1hdGVyaWFsSW5wdXQuc3QpKS5jaGFubmVsIn19LHRyYW5zbHVjZW50OiEwfSk7UXQuU3BlY3VsYXJNYXBUeXBlPSJTcGVjdWxhck1hcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuU3BlY3VsYXJNYXBUeXBlLHtmYWJyaWM6e3R5cGU6UXQuU3BlY3VsYXJNYXBUeXBlLHVuaWZvcm1zOntpbWFnZTpRdC5EZWZhdWx0SW1hZ2VJZCxjaGFubmVsOiJyIixyZXBlYXQ6bmV3IG50KDEsMSl9LGNvbXBvbmVudHM6e3NwZWN1bGFyOiJ0ZXh0dXJlKGltYWdlLCBmcmFjdChyZXBlYXQgKiBtYXRlcmlhbElucHV0LnN0KSkuY2hhbm5lbCJ9fSx0cmFuc2x1Y2VudDohMX0pO1F0LkVtaXNzaW9uTWFwVHlwZT0iRW1pc3Npb25NYXAiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkVtaXNzaW9uTWFwVHlwZSx7ZmFicmljOnt0eXBlOlF0LkVtaXNzaW9uTWFwVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWQsY2hhbm5lbHM6InJnYiIscmVwZWF0Om5ldyBudCgxLDEpfSxjb21wb25lbnRzOntlbWlzc2lvbjoidGV4dHVyZShpbWFnZSwgZnJhY3QocmVwZWF0ICogbWF0ZXJpYWxJbnB1dC5zdCkpLmNoYW5uZWxzIn19LHRyYW5zbHVjZW50OiExfSk7UXQuQnVtcE1hcFR5cGU9IkJ1bXBNYXAiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkJ1bXBNYXBUeXBlLHtmYWJyaWM6e3R5cGU6UXQuQnVtcE1hcFR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLGNoYW5uZWw6InIiLHN0cmVuZ3RoOi44LHJlcGVhdDpuZXcgbnQoMSwxKX0sc291cmNlOk14fSx0cmFuc2x1Y2VudDohMX0pO1F0Lk5vcm1hbE1hcFR5cGU9Ik5vcm1hbE1hcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuTm9ybWFsTWFwVHlwZSx7ZmFicmljOnt0eXBlOlF0Lk5vcm1hbE1hcFR5cGUsdW5pZm9ybXM6e2ltYWdlOlF0LkRlZmF1bHRJbWFnZUlkLGNoYW5uZWxzOiJyZ2IiLHN0cmVuZ3RoOi44LHJlcGVhdDpuZXcgbnQoMSwxKX0sc291cmNlOiR4fSx0cmFuc2x1Y2VudDohMX0pO1F0LkdyaWRUeXBlPSJHcmlkIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5HcmlkVHlwZSx7ZmFicmljOnt0eXBlOlF0LkdyaWRUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMCwxLDAsMSksY2VsbEFscGhhOi4xLGxpbmVDb3VudDpuZXcgbnQoOCw4KSxsaW5lVGhpY2tuZXNzOm5ldyBudCgxLDEpLGxpbmVPZmZzZXQ6bmV3IG50KDAsMCl9LHNvdXJjZTpYeH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5jb2xvci5hbHBoYTwxfHxlLmNlbGxBbHBoYTwxfX0pO1F0LlN0cmlwZVR5cGU9IlN0cmlwZSI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuU3RyaXBlVHlwZSx7ZmFicmljOnt0eXBlOlF0LlN0cmlwZVR5cGUsdW5pZm9ybXM6e2hvcml6b250YWw6ITAsZXZlbkNvbG9yOm5ldyBadCgxLDEsMSwuNSksb2RkQ29sb3I6bmV3IFp0KDAsMCwxLC41KSxvZmZzZXQ6MCxyZXBlYXQ6NX0sc291cmNlOm1QfSx0cmFuc2x1Y2VudDpmdW5jdGlvbih0KXtsZXQgZT10LnVuaWZvcm1zO3JldHVybiBlLmV2ZW5Db2xvci5hbHBoYTwxfHxlLm9kZENvbG9yLmFscGhhPDF9fSk7UXQuQ2hlY2tlcmJvYXJkVHlwZT0iQ2hlY2tlcmJvYXJkIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5DaGVja2VyYm9hcmRUeXBlLHtmYWJyaWM6e3R5cGU6UXQuQ2hlY2tlcmJvYXJkVHlwZSx1bmlmb3Jtczp7bGlnaHRDb2xvcjpuZXcgWnQoMSwxLDEsLjUpLGRhcmtDb2xvcjpuZXcgWnQoMCwwLDAsLjUpLHJlcGVhdDpuZXcgbnQoNSw1KX0sc291cmNlOmt4fSx0cmFuc2x1Y2VudDpmdW5jdGlvbih0KXtsZXQgZT10LnVuaWZvcm1zO3JldHVybiBlLmxpZ2h0Q29sb3IuYWxwaGE8MXx8ZS5kYXJrQ29sb3IuYWxwaGE8MX19KTtRdC5Eb3RUeXBlPSJEb3QiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkRvdFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5Eb3RUeXBlLHVuaWZvcm1zOntsaWdodENvbG9yOm5ldyBadCgxLDEsMCwuNzUpLGRhcmtDb2xvcjpuZXcgWnQoMCwxLDEsLjc1KSxyZXBlYXQ6bmV3IG50KDUsNSl9LHNvdXJjZTp5eH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5saWdodENvbG9yLmFscGhhPDF8fGUuZGFya0NvbG9yLmFscGhhPDF9fSk7UXQuV2F0ZXJUeXBlPSJXYXRlciI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuV2F0ZXJUeXBlLHtmYWJyaWM6e3R5cGU6UXQuV2F0ZXJUeXBlLHVuaWZvcm1zOntiYXNlV2F0ZXJDb2xvcjpuZXcgWnQoLjIsLjMsLjYsMSksYmxlbmRDb2xvcjpuZXcgWnQoMCwxLC42OTksMSksc3BlY3VsYXJNYXA6UXQuRGVmYXVsdEltYWdlSWQsbm9ybWFsTWFwOlF0LkRlZmF1bHRJbWFnZUlkLGZyZXF1ZW5jeToxMCxhbmltYXRpb25TcGVlZDouMDEsYW1wbGl0dWRlOjEsc3BlY3VsYXJJbnRlbnNpdHk6LjUsZmFkZUZhY3RvcjoxfSxzb3VyY2U6RVB9LHRyYW5zbHVjZW50OmZ1bmN0aW9uKHQpe2xldCBlPXQudW5pZm9ybXM7cmV0dXJuIGUuYmFzZVdhdGVyQ29sb3IuYWxwaGE8MXx8ZS5ibGVuZENvbG9yLmFscGhhPDF9fSk7UXQuUmltTGlnaHRpbmdUeXBlPSJSaW1MaWdodGluZyI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuUmltTGlnaHRpbmdUeXBlLHtmYWJyaWM6e3R5cGU6UXQuUmltTGlnaHRpbmdUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMSwwLDAsLjcpLHJpbUNvbG9yOm5ldyBadCgxLDEsMSwuNCksd2lkdGg6LjN9LHNvdXJjZTpoUH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5jb2xvci5hbHBoYTwxfHxlLnJpbUNvbG9yLmFscGhhPDF9fSk7UXQuRmFkZVR5cGU9IkZhZGUiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LkZhZGVUeXBlLHtmYWJyaWM6e3R5cGU6UXQuRmFkZVR5cGUsdW5pZm9ybXM6e2ZhZGVJbkNvbG9yOm5ldyBadCgxLDAsMCwxKSxmYWRlT3V0Q29sb3I6bmV3IFp0KDAsMCwwLDApLG1heGltdW1EaXN0YW5jZTouNSxyZXBlYXQ6ITAsZmFkZURpcmVjdGlvbjp7eDohMCx5OiEwfSx0aW1lOm5ldyBudCguNSwuNSl9LHNvdXJjZTp6eH0sdHJhbnNsdWNlbnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC51bmlmb3JtcztyZXR1cm4gZS5mYWRlSW5Db2xvci5hbHBoYTwxfHxlLmZhZGVPdXRDb2xvci5hbHBoYTwxfX0pO1F0LlBvbHlsaW5lQXJyb3dUeXBlPSJQb2x5bGluZUFycm93IjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Qb2x5bGluZUFycm93VHlwZSx7ZmFicmljOnt0eXBlOlF0LlBvbHlsaW5lQXJyb3dUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMSwxLDEsMSl9LHNvdXJjZTplUH0sdHJhbnNsdWNlbnQ6ITB9KTtRdC5Qb2x5bGluZURhc2hUeXBlPSJQb2x5bGluZURhc2giO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LlBvbHlsaW5lRGFzaFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5Qb2x5bGluZURhc2hUeXBlLHVuaWZvcm1zOntjb2xvcjpuZXcgWnQoMSwwLDEsMSksZ2FwQ29sb3I6bmV3IFp0KDAsMCwwLDApLGRhc2hMZW5ndGg6MTYsZGFzaFBhdHRlcm46MjU1fSxzb3VyY2U6blB9LHRyYW5zbHVjZW50OiEwfSk7UXQuUG9seWxpbmVHbG93VHlwZT0iUG9seWxpbmVHbG93IjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Qb2x5bGluZUdsb3dUeXBlLHtmYWJyaWM6e3R5cGU6UXQuUG9seWxpbmVHbG93VHlwZSx1bmlmb3Jtczp7Y29sb3I6bmV3IFp0KDAsLjUsMSwxKSxnbG93UG93ZXI6LjI1LHRhcGVyUG93ZXI6MX0sc291cmNlOm9QfSx0cmFuc2x1Y2VudDohMH0pO1F0LlBvbHlsaW5lT3V0bGluZVR5cGU9IlBvbHlsaW5lT3V0bGluZSI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuUG9seWxpbmVPdXRsaW5lVHlwZSx7ZmFicmljOnt0eXBlOlF0LlBvbHlsaW5lT3V0bGluZVR5cGUsdW5pZm9ybXM6e2NvbG9yOm5ldyBadCgxLDEsMSwxKSxvdXRsaW5lQ29sb3I6bmV3IFp0KDEsMCwwLDEpLG91dGxpbmVXaWR0aDoxfSxzb3VyY2U6YVB9LHRyYW5zbHVjZW50OmZ1bmN0aW9uKHQpe2xldCBlPXQudW5pZm9ybXM7cmV0dXJuIGUuY29sb3IuYWxwaGE8MXx8ZS5vdXRsaW5lQ29sb3IuYWxwaGE8MX19KTtRdC5FbGV2YXRpb25Db250b3VyVHlwZT0iRWxldmF0aW9uQ29udG91ciI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRWxldmF0aW9uQ29udG91clR5cGUse2ZhYnJpYzp7dHlwZTpRdC5FbGV2YXRpb25Db250b3VyVHlwZSx1bmlmb3Jtczp7c3BhY2luZzoxMDAsY29sb3I6bmV3IFp0KDEsMCwwLDEpLHdpZHRoOjF9LHNvdXJjZTpKeH0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5FbGV2YXRpb25SYW1wVHlwZT0iRWxldmF0aW9uUmFtcCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRWxldmF0aW9uUmFtcFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5FbGV2YXRpb25SYW1wVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWQsbWluaW11bUhlaWdodDowLG1heGltdW1IZWlnaHQ6MWU0fSxzb3VyY2U6SHh9LHRyYW5zbHVjZW50OiExfSk7UXQuU2xvcGVSYW1wTWF0ZXJpYWxUeXBlPSJTbG9wZVJhbXAiO1F0Ll9tYXRlcmlhbENhY2hlLmFkZE1hdGVyaWFsKFF0LlNsb3BlUmFtcE1hdGVyaWFsVHlwZSx7ZmFicmljOnt0eXBlOlF0LlNsb3BlUmFtcE1hdGVyaWFsVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWR9LHNvdXJjZTpsUH0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5Bc3BlY3RSYW1wTWF0ZXJpYWxUeXBlPSJBc3BlY3RSYW1wIjtRdC5fbWF0ZXJpYWxDYWNoZS5hZGRNYXRlcmlhbChRdC5Bc3BlY3RSYW1wTWF0ZXJpYWxUeXBlLHtmYWJyaWM6e3R5cGU6UXQuQXNwZWN0UmFtcE1hdGVyaWFsVHlwZSx1bmlmb3Jtczp7aW1hZ2U6UXQuRGVmYXVsdEltYWdlSWR9LHNvdXJjZTpEeH0sdHJhbnNsdWNlbnQ6ITF9KTtRdC5FbGV2YXRpb25CYW5kVHlwZT0iRWxldmF0aW9uQmFuZCI7UXQuX21hdGVyaWFsQ2FjaGUuYWRkTWF0ZXJpYWwoUXQuRWxldmF0aW9uQmFuZFR5cGUse2ZhYnJpYzp7dHlwZTpRdC5FbGV2YXRpb25CYW5kVHlwZSx1bmlmb3Jtczp7aGVpZ2h0czpRdC5EZWZhdWx0SW1hZ2VJZCxjb2xvcnM6UXQuRGVmYXVsdEltYWdlSWR9LHNvdXJjZTp4eH0sdHJhbnNsdWNlbnQ6ITB9KTt3Tj1RdH0pO2Z1bmN0aW9uIExsKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT1aKHQudHJhbnNsdWNlbnQsITApLGk9ITEsbj1MbC5WRVJURVhfRk9STUFUO3RoaXMubWF0ZXJpYWw9bSh0Lm1hdGVyaWFsKT90Lm1hdGVyaWFsOndOLmZyb21UeXBlKHdOLkNvbG9yVHlwZSksdGhpcy50cmFuc2x1Y2VudD1lLHRoaXMuX3ZlcnRleFNoYWRlclNvdXJjZT1aKHQudmVydGV4U2hhZGVyU291cmNlLHhOKSx0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZT1aKHQuZnJhZ21lbnRTaGFkZXJTb3VyY2UsWG50KSx0aGlzLl9yZW5kZXJTdGF0ZT1Nby5nZXREZWZhdWx0UmVuZGVyU3RhdGUoZSxpLHQucmVuZGVyU3RhdGUpLHRoaXMuX2Nsb3NlZD1pLHRoaXMuX3ZlcnRleEZvcm1hdD1ufXZhciB4TixYbnQsdVAsQ1A9UygoKT0+e0Z0KCk7bXQoKTtJbCgpO0xzKCk7cHgoKTtHTigpO0N4KCk7TEkoKTtwUCgpO3hOPWAke2tJfQoke0l4fWAsWG50PXV4O19vLmlzSW50ZXJuZXRFeHBsb3JlcigpfHwoeE49YCNkZWZpbmUgQ0xJUF9QT0xZTElORSAKJHt4Tn1gKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhMbC5wcm90b3R5cGUse3ZlcnRleFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fdmVydGV4U2hhZGVyU291cmNlO3JldHVybiB0aGlzLm1hdGVyaWFsLnNoYWRlclNvdXJjZS5zZWFyY2goL2luXHMrZmxvYXRccyt2X3BvbHlsaW5lQW5nbGU7L2cpIT09LTEmJih0PWAjZGVmaW5lIFBPTFlMSU5FX0RBU0gKJHt0fWApLHR9fSxmcmFnbWVudFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYWdtZW50U2hhZGVyU291cmNlfX0scmVuZGVyU3RhdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJTdGF0ZX19LGNsb3NlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nsb3NlZH19LHZlcnRleEZvcm1hdDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleEZvcm1hdH19fSk7TGwuVkVSVEVYX0ZPUk1BVD1TdC5QT1NJVElPTl9BTkRfU1Q7TGwucHJvdG90eXBlLmdldEZyYWdtZW50U2hhZGVyU291cmNlPU1vLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZTtMbC5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudD1Nby5wcm90b3R5cGUuaXNUcmFuc2x1Y2VudDtMbC5wcm90b3R5cGUuZ2V0UmVuZGVyU3RhdGU9TW8ucHJvdG90eXBlLmdldFJlbmRlclN0YXRlO3VQPUxsfSk7ZnVuY3Rpb24gcW50KHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24sdGhpcy5ub3JtYWw9dC5ub3JtYWwsdGhpcy5zdD10LnN0LHRoaXMuYml0YW5nZW50PXQuYml0YW5nZW50LHRoaXMudGFuZ2VudD10LnRhbmdlbnQsdGhpcy5jb2xvcj10LmNvbG9yfXZhciB3ZSxFbj1TKCgpPT57RnQoKTt3ZT1xbnR9KTt2YXIgJG50LFBlLGdvPVMoKCk9PnskbnQ9e05PTkU6MCxUT1A6MSxBTEw6Mn0sUGU9T2JqZWN0LmZyZWV6ZSgkbnQpfSk7ZnVuY3Rpb24gdHN0KHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPDEpdGhyb3cgbmV3IFkoIm51bWJlck9mQXJyYXlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAuIik7bGV0IGk9W10sbj10Lmxlbmd0aCxzPTA7Zm9yKDtzPG47KXtsZXQgbz1NYXRoLmNlaWwoKG4tcykvZS0tKTtpLnB1c2godC5zbGljZShzLHMrbykpLHMrPW99cmV0dXJuIGl9dmFyIGdQLFRQPVMoKCk9PnttdCgpO090KCk7Z1A9dHN0fSk7ZnVuY3Rpb24gUmgodCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJjb250ZXh0IGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZXMgaXMgcmVxdWlyZWQiKTtpZighbShpKSl0aHJvdyBuZXcgWSgibnVtYmVyT2ZJbnN0YW5jZXMgaXMgcmVxdWlyZWQiKTtpZih0aGlzLl9hdHRyaWJ1dGVzPWUsdGhpcy5fbnVtYmVyT2ZJbnN0YW5jZXM9aSxlLmxlbmd0aD09PTApcmV0dXJuO2xldCBuPWVzdChlKSxzPXQuZmxvYXRpbmdQb2ludFRleHR1cmUsbz1uPT09Z2UuRkxPQVQmJiFzLHI9aXN0KGUsbyksYT1uc3QocixlLG8pLGg9TWF0aC5mbG9vcihlbi5tYXhpbXVtVGV4dHVyZVNpemUvYSksQT1NYXRoLm1pbihpLGgpLGQ9YSpBLGY9TWF0aC5jZWlsKGkvQSksRT0xL2QsXz1FKi41LFI9MS9mLEk9UiouNTt0aGlzLl90ZXh0dXJlRGltZW5zaW9ucz1uZXcgbnQoZCxmKSx0aGlzLl90ZXh0dXJlU3RlcD1uZXcgaWUoRSxfLFIsSSksdGhpcy5fcGl4ZWxEYXRhdHlwZT1vP2dlLlVOU0lHTkVEX0JZVEU6bix0aGlzLl9wYWNrRmxvYXRzPW8sdGhpcy5fb2Zmc2V0cz1yLHRoaXMuX3N0cmlkZT1hLHRoaXMuX3RleHR1cmU9dm9pZCAwO2xldCBDPTQqZCpmO3RoaXMuX2JhdGNoVmFsdWVzPW49PT1nZS5GTE9BVCYmIW8/bmV3IEZsb2F0MzJBcnJheShDKTpuZXcgVWludDhBcnJheShDKSx0aGlzLl9iYXRjaFZhbHVlc0RpcnR5PSExfWZ1bmN0aW9uIGVzdCh0KXtsZXQgZT0hMSxpPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248aTsrK24paWYodFtuXS5jb21wb25lbnREYXRhdHlwZSE9PUF0LlVOU0lHTkVEX0JZVEUpe2U9ITA7YnJlYWt9cmV0dXJuIGU/Z2UuRkxPQVQ6Z2UuVU5TSUdORURfQllURX1mdW5jdGlvbiBGUCh0LGUpe2xldCBpPXRbZV0uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtyZXR1cm4gaT09PTI/bnQ6aT09PTM/bDppPT09ND9pZTpOdW1iZXJ9ZnVuY3Rpb24gaXN0KHQsZSl7bGV0IGk9bmV3IEFycmF5KHQubGVuZ3RoKSxuPTAscz10Lmxlbmd0aDtmb3IobGV0IG89MDtvPHM7KytvKXtsZXQgYT10W29dLmNvbXBvbmVudERhdGF0eXBlO2lbb109bixhIT09QXQuVU5TSUdORURfQllURSYmZT9uKz00Oisrbn1yZXR1cm4gaX1mdW5jdGlvbiBuc3QodCxlLGkpe2xldCBuPXQubGVuZ3RoLHM9dFtuLTFdO3JldHVybiBlW24tMV0uY29tcG9uZW50RGF0YXR5cGUhPT1BdC5VTlNJR05FRF9CWVRFJiZpP3MrNDpzKzF9ZnVuY3Rpb24gc3N0KHQsZSxpKXtsZXQgbj1pZS51bnBhY2sodCxlLHRfKSxzPWllLnVucGFja0Zsb2F0KG4pO249aWUudW5wYWNrKHQsZSs0LHRfKTtsZXQgbz1pZS51bnBhY2tGbG9hdChuKTtuPWllLnVucGFjayh0LGUrOCx0Xyk7bGV0IHI9aWUudW5wYWNrRmxvYXQobik7bj1pZS51bnBhY2sodCxlKzEyLHRfKTtsZXQgYT1pZS51bnBhY2tGbG9hdChuKTtyZXR1cm4gaWUuZnJvbUVsZW1lbnRzKHMsbyxyLGEsaSl9ZnVuY3Rpb24gb3N0KHQsZSxpKXtsZXQgbj1pZS5wYWNrRmxvYXQodC54LHRfKTtpZS5wYWNrKG4sZSxpKSxuPWllLnBhY2tGbG9hdCh0LnksbiksaWUucGFjayhuLGUsaSs0KSxuPWllLnBhY2tGbG9hdCh0LnosbiksaWUucGFjayhuLGUsaSs4KSxuPWllLnBhY2tGbG9hdCh0LncsbiksaWUucGFjayhuLGUsaSsxMil9ZnVuY3Rpb24gQXN0KHQsZSl7bGV0IGk9dC5fdGV4dHVyZURpbWVuc2lvbnM7dC5fdGV4dHVyZT1uZXcgYmEoe2NvbnRleHQ6ZSxwaXhlbEZvcm1hdDpJZS5SR0JBLHBpeGVsRGF0YXR5cGU6dC5fcGl4ZWxEYXRhdHlwZSx3aWR0aDppLngsaGVpZ2h0OmkueSxzYW1wbGVyOlpBLk5FQVJFU1QsZmxpcFk6ITF9KX1mdW5jdGlvbiBoc3QodCl7bGV0IGU9dC5fdGV4dHVyZURpbWVuc2lvbnM7dC5fdGV4dHVyZS5jb3B5RnJvbSh7c291cmNlOnt3aWR0aDplLngsaGVpZ2h0OmUueSxhcnJheUJ1ZmZlclZpZXc6dC5fYmF0Y2hWYWx1ZXN9fSl9ZnVuY3Rpb24gY3N0KHQpe2xldCBlPXQuX3N0cmlkZTtyZXR1cm4gdC5fdGV4dHVyZURpbWVuc2lvbnMueT09PTE/YHVuaWZvcm0gdmVjNCBiYXRjaFRleHR1cmVTdGVwOyAKdmVjMiBjb21wdXRlU3QoZmxvYXQgYmF0Y2hJZCkgCnsgCiAgICBmbG9hdCBzdGVwWCA9IGJhdGNoVGV4dHVyZVN0ZXAueDsgCiAgICBmbG9hdCBjZW50ZXJYID0gYmF0Y2hUZXh0dXJlU3RlcC55OyAKICAgIGZsb2F0IG51bWJlck9mQXR0cmlidXRlcyA9IGZsb2F0KCR7ZX0pOyAKICAgIHJldHVybiB2ZWMyKGNlbnRlclggKyAoYmF0Y2hJZCAqIG51bWJlck9mQXR0cmlidXRlcyAqIHN0ZXBYKSwgMC41KTsgCn0gCmA6YHVuaWZvcm0gdmVjNCBiYXRjaFRleHR1cmVTdGVwOyAKdW5pZm9ybSB2ZWMyIGJhdGNoVGV4dHVyZURpbWVuc2lvbnM7IAp2ZWMyIGNvbXB1dGVTdChmbG9hdCBiYXRjaElkKSAKeyAKICAgIGZsb2F0IHN0ZXBYID0gYmF0Y2hUZXh0dXJlU3RlcC54OyAKICAgIGZsb2F0IGNlbnRlclggPSBiYXRjaFRleHR1cmVTdGVwLnk7IAogICAgZmxvYXQgc3RlcFkgPSBiYXRjaFRleHR1cmVTdGVwLno7IAogICAgZmxvYXQgY2VudGVyWSA9IGJhdGNoVGV4dHVyZVN0ZXAudzsgCiAgICBmbG9hdCBudW1iZXJPZkF0dHJpYnV0ZXMgPSBmbG9hdCgke2V9KTsgCiAgICBmbG9hdCB4SWQgPSBtb2QoYmF0Y2hJZCAqIG51bWJlck9mQXR0cmlidXRlcywgYmF0Y2hUZXh0dXJlRGltZW5zaW9ucy54KTsgCiAgICBmbG9hdCB5SWQgPSBmbG9vcihiYXRjaElkICogbnVtYmVyT2ZBdHRyaWJ1dGVzIC8gYmF0Y2hUZXh0dXJlRGltZW5zaW9ucy54KTsgCiAgICByZXR1cm4gdmVjMihjZW50ZXJYICsgKHhJZCAqIHN0ZXBYKSwgY2VudGVyWSArICh5SWQgKiBzdGVwWSkpOyAKfSAKYH1mdW5jdGlvbiBsc3QodCl7cmV0dXJuIHQ9PT0xPyJmbG9hdCI6YHZlYyR7dH1gfWZ1bmN0aW9uIGRzdCh0KXtyZXR1cm4gdD09PTE/Ii54Ijp0PT09Mj8iLnh5Ijp0PT09Mz8iLnh5eiI6IiJ9ZnVuY3Rpb24gbXN0KHQsZSl7bGV0IG49dC5fYXR0cmlidXRlc1tlXSxzPW4uY29tcG9uZW50c1BlckF0dHJpYnV0ZSxvPW4uZnVuY3Rpb25OYW1lLHI9bHN0KHMpLGE9ZHN0KHMpLGg9dC5fb2Zmc2V0c1tlXSxBPWAke3J9ICR7b30oZmxvYXQgYmF0Y2hJZCkgCnsgCiAgICB2ZWMyIHN0ID0gY29tcHV0ZVN0KGJhdGNoSWQpOyAKICAgIHN0LnggKz0gYmF0Y2hUZXh0dXJlU3RlcC54ICogZmxvYXQoJHtofSk7IApgO3JldHVybiB0Ll9wYWNrRmxvYXRzJiZuLmNvbXBvbmVudERhdGF0eXBlIT09Z2UuVU5TSUdORURfQllURT9BKz1gdmVjNCB0ZXh0dXJlVmFsdWU7IAp0ZXh0dXJlVmFsdWUueCA9IGN6bV91bnBhY2tGbG9hdCh0ZXh0dXJlKGJhdGNoVGV4dHVyZSwgc3QpKTsgCnRleHR1cmVWYWx1ZS55ID0gY3ptX3VucGFja0Zsb2F0KHRleHR1cmUoYmF0Y2hUZXh0dXJlLCBzdCArIHZlYzIoYmF0Y2hUZXh0dXJlU3RlcC54LCAwLjApKSk7IAp0ZXh0dXJlVmFsdWUueiA9IGN6bV91bnBhY2tGbG9hdCh0ZXh0dXJlKGJhdGNoVGV4dHVyZSwgc3QgKyB2ZWMyKGJhdGNoVGV4dHVyZVN0ZXAueCAqIDIuMCwgMC4wKSkpOyAKdGV4dHVyZVZhbHVlLncgPSBjem1fdW5wYWNrRmxvYXQodGV4dHVyZShiYXRjaFRleHR1cmUsIHN0ICsgdmVjMihiYXRjaFRleHR1cmVTdGVwLnggKiAzLjAsIDAuMCkpKTsgCmA6QSs9YCAgICB2ZWM0IHRleHR1cmVWYWx1ZSA9IHRleHR1cmUoYmF0Y2hUZXh0dXJlLCBzdCk7IApgLEErPWAgICAgJHtyfSB2YWx1ZSA9IHRleHR1cmVWYWx1ZSR7YX07IApgLHQuX3BpeGVsRGF0YXR5cGU9PT1nZS5VTlNJR05FRF9CWVRFJiZuLmNvbXBvbmVudERhdGF0eXBlPT09QXQuVU5TSUdORURfQllURSYmIW4ubm9ybWFsaXplP0ErPWB2YWx1ZSAqPSAyNTUuMDsgCmA6dC5fcGl4ZWxEYXRhdHlwZT09PWdlLkZMT0FUJiZuLmNvbXBvbmVudERhdGF0eXBlPT09QXQuVU5TSUdORURfQllURSYmbi5ub3JtYWxpemUmJihBKz1gdmFsdWUgLz0gMjU1LjA7IApgKSxBKz1gICAgIHJldHVybiB2YWx1ZTsgCn0gCmAsQX12YXIgdF8sTlAscnN0LGFzdCxiUCxZUD1TKCgpPT57WGUoKTtIdCgpO09zKCk7S0EoKTtvaSgpO210KCk7V3MoKTtPdCgpO19jKCk7Z2EoKTtFYygpO1lFKCk7dUkoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhSaC5wcm90b3R5cGUse2F0dHJpYnV0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRyaWJ1dGVzfX0sbnVtYmVyT2ZJbnN0YW5jZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9udW1iZXJPZkluc3RhbmNlc319fSk7dF89bmV3IGllO05QPW5ldyBpZTtSaC5wcm90b3R5cGUuZ2V0QmF0Y2hlZEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsaSl7aWYodDwwfHx0Pj10aGlzLl9udW1iZXJPZkluc3RhbmNlcyl0aHJvdyBuZXcgWSgiaW5zdGFuY2VJbmRleCBpcyBvdXQgb2YgcmFuZ2UuIik7aWYoZTwwfHxlPj10aGlzLl9hdHRyaWJ1dGVzLmxlbmd0aCl0aHJvdyBuZXcgWSgiYXR0cmlidXRlSW5kZXggaXMgb3V0IG9mIHJhbmdlIik7bGV0IG49dGhpcy5fYXR0cmlidXRlcyxzPXRoaXMuX29mZnNldHNbZV0scj00KnRoaXMuX3N0cmlkZSp0KzQqcyxhO3RoaXMuX3BhY2tGbG9hdHMmJm5bZV0uY29tcG9uZW50RGF0YXR5cGUhPT1nZS5VTlNJR05FRF9CWVRFP2E9c3N0KHRoaXMuX2JhdGNoVmFsdWVzLHIsTlApOmE9aWUudW5wYWNrKHRoaXMuX2JhdGNoVmFsdWVzLHIsTlApO2xldCBoPUZQKG4sZSk7cmV0dXJuIG0oaC5mcm9tQ2FydGVzaWFuNCk/aC5mcm9tQ2FydGVzaWFuNChhLGkpOm0oaC5jbG9uZSk/aC5jbG9uZShhLGkpOmEueH07cnN0PVt2b2lkIDAsdm9pZCAwLG5ldyBudCxuZXcgbCxuZXcgaWVdLGFzdD1uZXcgaWU7UmgucHJvdG90eXBlLnNldEJhdGNoZWRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLGkpe2lmKHQ8MHx8dD49dGhpcy5fbnVtYmVyT2ZJbnN0YW5jZXMpdGhyb3cgbmV3IFkoImluc3RhbmNlSW5kZXggaXMgb3V0IG9mIHJhbmdlLiIpO2lmKGU8MHx8ZT49dGhpcy5fYXR0cmlidXRlcy5sZW5ndGgpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZUluZGV4IGlzIG91dCBvZiByYW5nZSIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtsZXQgbj10aGlzLl9hdHRyaWJ1dGVzLHM9cnN0W25bZV0uY29tcG9uZW50c1BlckF0dHJpYnV0ZV0sbz10aGlzLmdldEJhdGNoZWRBdHRyaWJ1dGUodCxlLHMpLHI9RlAodGhpcy5fYXR0cmlidXRlcyxlKTtpZihtKHIuZXF1YWxzKT9yLmVxdWFscyhvLGkpOm89PT1pKXJldHVybjtsZXQgaD1hc3Q7aC54PW0oaS54KT9pLng6aSxoLnk9bShpLnkpP2kueTowLGguej1tKGkueik/aS56OjAsaC53PW0oaS53KT9pLnc6MDtsZXQgQT10aGlzLl9vZmZzZXRzW2VdLGY9NCp0aGlzLl9zdHJpZGUqdCs0KkE7dGhpcy5fcGFja0Zsb2F0cyYmbltlXS5jb21wb25lbnREYXRhdHlwZSE9PWdlLlVOU0lHTkVEX0JZVEU/b3N0KGgsdGhpcy5fYmF0Y2hWYWx1ZXMsZik6aWUucGFjayhoLHRoaXMuX2JhdGNoVmFsdWVzLGYpLHRoaXMuX2JhdGNoVmFsdWVzRGlydHk9ITB9O1JoLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7bSh0aGlzLl90ZXh0dXJlKSYmIXRoaXMuX2JhdGNoVmFsdWVzRGlydHl8fHRoaXMuX2F0dHJpYnV0ZXMubGVuZ3RoPT09MHx8KHRoaXMuX2JhdGNoVmFsdWVzRGlydHk9ITEsbSh0aGlzLl90ZXh0dXJlKXx8QXN0KHRoaXMsdC5jb250ZXh0KSxoc3QodGhpcykpfTtSaC5wcm90b3R5cGUuZ2V0VW5pZm9ybU1hcENhbGxiYWNrPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcztyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2F0dHJpYnV0ZXMubGVuZ3RoPT09MD9lOmVzKGUse2JhdGNoVGV4dHVyZTpmdW5jdGlvbigpe3JldHVybiB0Ll90ZXh0dXJlfSxiYXRjaFRleHR1cmVEaW1lbnNpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVEaW1lbnNpb25zfSxiYXRjaFRleHR1cmVTdGVwOmZ1bmN0aW9uKCl7cmV0dXJuIHQuX3RleHR1cmVTdGVwfX0pfX07UmgucHJvdG90eXBlLmdldFZlcnRleFNoYWRlckNhbGxiYWNrPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fYXR0cmlidXRlcztpZih0Lmxlbmd0aD09PTApcmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBufTtsZXQgZT1gdW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgYmF0Y2hUZXh0dXJlOyAKYDtlKz1gJHtjc3QodGhpcyl9CmA7bGV0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTA7bjxpOysrbillKz1tc3QodGhpcyxuKTtyZXR1cm4gZnVuY3Rpb24obil7bGV0IHM9bi5pbmRleE9mKCJ2b2lkIG1haW4iKSxvPW4uc3Vic3RyaW5nKDAscykscj1uLnN1YnN0cmluZyhzKTtyZXR1cm5gJHtvfQoke2V9CiR7cn1gfX07UmgucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O1JoLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RleHR1cmU9dGhpcy5fdGV4dHVyZSYmdGhpcy5fdGV4dHVyZS5kZXN0cm95KCksbGkodGhpcyl9O2JQPVJofSk7dmFyIGZzdCx3SSxQTj1TKCgpPT57c3MoKTtmc3Q9e05FVkVSOml0Lk5FVkVSLExFU1M6aXQuTEVTUyxFUVVBTDppdC5FUVVBTCxMRVNTX09SX0VRVUFMOml0LkxFUVVBTCxHUkVBVEVSOml0LkdSRUFURVIsTk9UX0VRVUFMOml0Lk5PVEVRVUFMLEdSRUFURVJfT1JfRVFVQUw6aXQuR0VRVUFMLEFMV0FZUzppdC5BTFdBWVN9LHdJPU9iamVjdC5mcmVlemUoZnN0KX0pO2Z1bmN0aW9uIEVzdCh0LGUsaSxuLHMpe3AuZGVmaW5lZCgicG9pbnQiLHQpLHAuZGVmaW5lZCgicDAiLGUpLHAuZGVmaW5lZCgicDEiLGkpLHAuZGVmaW5lZCgicDIiLG4pLG0ocyl8fChzPW5ldyBsKTtsZXQgbyxyLGEsaCxBLGQsZixFO2lmKG0oZS56KSl7aWYobC5lcXVhbHNFcHNpbG9uKHQsZSxMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1gscyk7aWYobC5lcXVhbHNFcHNpbG9uKHQsaSxMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1kscyk7aWYobC5lcXVhbHNFcHNpbG9uKHQsbixMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1oscyk7bz1sLnN1YnRyYWN0KGksZSxWUCkscj1sLnN1YnRyYWN0KG4sZSxTUCksYT1sLnN1YnRyYWN0KHQsZSxPUCksaD1sLmRvdChvLG8pLEE9bC5kb3QobyxyKSxkPWwuZG90KG8sYSksZj1sLmRvdChyLHIpLEU9bC5kb3QocixhKX1lbHNle2lmKG50LmVxdWFsc0Vwc2lsb24odCxlLEwuRVBTSUxPTjE0KSlyZXR1cm4gbC5jbG9uZShsLlVOSVRfWCxzKTtpZihudC5lcXVhbHNFcHNpbG9uKHQsaSxMLkVQU0lMT04xNCkpcmV0dXJuIGwuY2xvbmUobC5VTklUX1kscyk7aWYobnQuZXF1YWxzRXBzaWxvbih0LG4sTC5FUFNJTE9OMTQpKXJldHVybiBsLmNsb25lKGwuVU5JVF9aLHMpO289bnQuc3VidHJhY3QoaSxlLFZQKSxyPW50LnN1YnRyYWN0KG4sZSxTUCksYT1udC5zdWJ0cmFjdCh0LGUsT1ApLGg9bnQuZG90KG8sbyksQT1udC5kb3QobyxyKSxkPW50LmRvdChvLGEpLGY9bnQuZG90KHIsciksRT1udC5kb3QocixhKX1zLnk9ZipkLUEqRSxzLno9aCpFLUEqZDtsZXQgXz1oKmYtQSpBO2lmKF8hPT0wKXJldHVybiBzLnkvPV8scy56Lz1fLHMueD0xLXMueS1zLnosc312YXIgVlAsU1AsT1AsQlAsR1A9UygoKT0+e1hlKCk7SHQoKTthZSgpO210KCk7X2UoKTtWUD1uZXcgbCxTUD1uZXcgbCxPUD1uZXcgbDtCUD1Fc3R9KTt2YXIgSk4sV1AsRFA9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO0pOPXt9O0pOLmNhbGN1bGF0ZUFDTVI9ZnVuY3Rpb24odCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuaW5kaWNlcyxpPXQubWF4aW11bUluZGV4LG49Wih0LmNhY2hlU2l6ZSwyNCk7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImluZGljZXMgaXMgcmVxdWlyZWQuIik7bGV0IHM9ZS5sZW5ndGg7aWYoczwzfHxzJTMhPT0wKXRocm93IG5ldyBZKCJpbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7aWYoaTw9MCl0aHJvdyBuZXcgWSgibWF4aW11bUluZGV4IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYobjwzKXRocm93IG5ldyBZKCJjYWNoZVNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHdvLiIpO2lmKCFtKGkpKXtpPTA7bGV0IGE9MCxoPWVbYV07Zm9yKDthPHM7KWg+aSYmKGk9aCksKythLGg9ZVthXX1sZXQgbz1bXTtmb3IobGV0IGE9MDthPGkrMTthKyspb1thXT0wO2xldCByPW4rMTtmb3IobGV0IGE9MDthPHM7KythKXItb1tlW2FdXT5uJiYob1tlW2FdXT1yLCsrcik7cmV0dXJuKHItbisxKS8ocy8zKX07Sk4udGlwc2lmeT1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5pbmRpY2VzLGk9dC5tYXhpbXVtSW5kZXgsbj1aKHQuY2FjaGVTaXplLDI0KSxzO2Z1bmN0aW9uIG8oYyxnLE8sRCl7Zm9yKDtnLmxlbmd0aD49MTspe2xldCB3PWdbZy5sZW5ndGgtMV07aWYoZy5zcGxpY2UoZy5sZW5ndGgtMSwxKSxjW3ddLm51bUxpdmVUcmlhbmdsZXM+MClyZXR1cm4gd31mb3IoO3M8RDspe2lmKGNbc10ubnVtTGl2ZVRyaWFuZ2xlcz4wKXJldHVybisrcyxzLTE7KytzfXJldHVybi0xfWZ1bmN0aW9uIHIoYyxnLE8sRCx3LHgsSCl7bGV0IGo9LTEsWCx0dD0tMSxHPTA7Zm9yKDtHPE8ubGVuZ3RoOyl7bGV0IEl0PU9bR107RFtJdF0ubnVtTGl2ZVRyaWFuZ2xlcyYmKFg9MCx3LURbSXRdLnRpbWVTdGFtcCsyKkRbSXRdLm51bUxpdmVUcmlhbmdsZXM8PWcmJihYPXctRFtJdF0udGltZVN0YW1wKSwoWD50dHx8dHQ9PT0tMSkmJih0dD1YLGo9SXQpKSwrK0d9cmV0dXJuIGo9PT0tMT9vKEQseCxjLEgpOmp9aWYoIW0oZSkpdGhyb3cgbmV3IFkoImluZGljZXMgaXMgcmVxdWlyZWQuIik7bGV0IGE9ZS5sZW5ndGg7aWYoYTwzfHxhJTMhPT0wKXRocm93IG5ldyBZKCJpbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7aWYoaTw9MCl0aHJvdyBuZXcgWSgibWF4aW11bUluZGV4IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYobjwzKXRocm93IG5ldyBZKCJjYWNoZVNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHdvLiIpO2xldCBoPTAsQT0wLGQ9ZVtBXSxmPWE7aWYobShpKSloPWkrMTtlbHNle2Zvcig7QTxmOylkPmgmJihoPWQpLCsrQSxkPWVbQV07aWYoaD09PS0xKXJldHVybiAwOysraH1sZXQgRT1bXSxfO2ZvcihfPTA7XzxoO18rKylFW19dPXtudW1MaXZlVHJpYW5nbGVzOjAsdGltZVN0YW1wOjAsdmVydGV4VHJpYW5nbGVzOltdfTtBPTA7bGV0IFI9MDtmb3IoO0E8ZjspRVtlW0FdXS52ZXJ0ZXhUcmlhbmdsZXMucHVzaChSKSwrK0VbZVtBXV0ubnVtTGl2ZVRyaWFuZ2xlcyxFW2VbQSsxXV0udmVydGV4VHJpYW5nbGVzLnB1c2goUiksKytFW2VbQSsxXV0ubnVtTGl2ZVRyaWFuZ2xlcyxFW2VbQSsyXV0udmVydGV4VHJpYW5nbGVzLnB1c2goUiksKytFW2VbQSsyXV0ubnVtTGl2ZVRyaWFuZ2xlcywrK1IsQSs9MztsZXQgST0wLEM9bisxO3M9MTtsZXQgTj1bXSxUPVtdLGIsRixCPTAsVT1bXSxRPWEvMyxNPVtdO2ZvcihfPTA7XzxRO18rKylNW19dPSExO2xldCBrLHk7Zm9yKDtJIT09LTE7KXtOPVtdLEY9RVtJXSx5PUYudmVydGV4VHJpYW5nbGVzLmxlbmd0aDtmb3IobGV0IGM9MDtjPHk7KytjKWlmKFI9Ri52ZXJ0ZXhUcmlhbmdsZXNbY10sIU1bUl0pe01bUl09ITAsQT1SK1IrUjtmb3IobGV0IGc9MDtnPDM7KytnKWs9ZVtBXSxOLnB1c2goayksVC5wdXNoKGspLFVbQl09aywrK0IsYj1FW2tdLC0tYi5udW1MaXZlVHJpYW5nbGVzLEMtYi50aW1lU3RhbXA+biYmKGIudGltZVN0YW1wPUMsKytDKSwrK0F9ST1yKGUsbixOLEUsQyxULGgpfXJldHVybiBVfTtXUD1KTn0pO2Z1bmN0aW9uIHpJKHQsZSxpLG4scyl7dFtlKytdPWksdFtlKytdPW4sdFtlKytdPW4sdFtlKytdPXMsdFtlKytdPXMsdFtlXT1pfWZ1bmN0aW9uIF9zdCh0KXtsZXQgZT10Lmxlbmd0aCxpPWUvMyo2LG49dGUuY3JlYXRlVHlwZWRBcnJheShlLGkpLHM9MDtmb3IobGV0IG89MDtvPGU7bys9MyxzKz02KXpJKG4scyx0W29dLHRbbysxXSx0W28rMl0pO3JldHVybiBufWZ1bmN0aW9uIFJzdCh0KXtsZXQgZT10Lmxlbmd0aDtpZihlPj0zKXtsZXQgaT0oZS0yKSo2LG49dGUuY3JlYXRlVHlwZWRBcnJheShlLGkpO3pJKG4sMCx0WzBdLHRbMV0sdFsyXSk7bGV0IHM9Njtmb3IobGV0IG89MztvPGU7KytvLHMrPTYpekkobixzLHRbby0xXSx0W29dLHRbby0yXSk7cmV0dXJuIG59cmV0dXJuIG5ldyBVaW50MTZBcnJheX1mdW5jdGlvbiBac3QodCl7aWYodC5sZW5ndGg+MCl7bGV0IGU9dC5sZW5ndGgtMSxpPShlLTEpKjYsbj10ZS5jcmVhdGVUeXBlZEFycmF5KGUsaSkscz10WzBdLG89MDtmb3IobGV0IHI9MTtyPGU7KytyLG8rPTYpekkobixvLHMsdFtyXSx0W3IrMV0pO3JldHVybiBufXJldHVybiBuZXcgVWludDE2QXJyYXl9ZnVuY3Rpb24gVVAodCl7bGV0IGU9e307Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSYmbSh0W2ldKSYmbSh0W2ldLnZhbHVlcykpe2xldCBuPXRbaV07ZVtpXT1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOm4uY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpuLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOm4ubm9ybWFsaXplLHZhbHVlczpbXX0pfXJldHVybiBlfWZ1bmN0aW9uIElzdCh0LGUsaSl7Zm9yKGxldCBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSYmbShlW25dKSYmbShlW25dLnZhbHVlcykpe2xldCBzPWVbbl07Zm9yKGxldCBvPTA7bzxzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU7KytvKXRbbl0udmFsdWVzLnB1c2gocy52YWx1ZXNbaSpzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUrb10pfX1mdW5jdGlvbiBITih0LGUpe2lmKG0oZSkpe2xldCBpPWUudmFsdWVzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuO3MrPTMpbC51bnBhY2soaSxzLEdhKSxhdC5tdWx0aXBseUJ5UG9pbnQodCxHYSxHYSksbC5wYWNrKEdhLGkscyl9fWZ1bmN0aW9uIHZOKHQsZSl7aWYobShlKSl7bGV0IGk9ZS52YWx1ZXMsbj1pLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cys9MylsLnVucGFjayhpLHMsR2EpLGx0Lm11bHRpcGx5QnlWZWN0b3IodCxHYSxHYSksR2E9bC5ub3JtYWxpemUoR2EsR2EpLGwucGFjayhHYSxpLHMpfX1mdW5jdGlvbiB1c3QodCxlKXtsZXQgaT10Lmxlbmd0aCxuPXt9LHM9dFswXVtlXS5hdHRyaWJ1dGVzLG87Zm9yKG8gaW4gcylpZihzLmhhc093blByb3BlcnR5KG8pJiZtKHNbb10pJiZtKHNbb10udmFsdWVzKSl7bGV0IHI9c1tvXSxhPXIudmFsdWVzLmxlbmd0aCxoPSEwO2ZvcihsZXQgQT0xO0E8aTsrK0Epe2xldCBkPXRbQV1bZV0uYXR0cmlidXRlc1tvXTtpZighbShkKXx8ci5jb21wb25lbnREYXRhdHlwZSE9PWQuY29tcG9uZW50RGF0YXR5cGV8fHIuY29tcG9uZW50c1BlckF0dHJpYnV0ZSE9PWQuY29tcG9uZW50c1BlckF0dHJpYnV0ZXx8ci5ub3JtYWxpemUhPT1kLm5vcm1hbGl6ZSl7aD0hMTticmVha31hKz1kLnZhbHVlcy5sZW5ndGh9aCYmKG5bb109bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpyLmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6ci5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTpyLm5vcm1hbGl6ZSx2YWx1ZXM6QXQuY3JlYXRlVHlwZWRBcnJheShyLmNvbXBvbmVudERhdGF0eXBlLGEpfSkpfXJldHVybiBufWZ1bmN0aW9uIHpOKHQsZSl7bGV0IGk9dC5sZW5ndGgsbixzLG8scixhPXRbMF0ubW9kZWxNYXRyaXgsaD1tKHRbMF1bZV0uaW5kaWNlcyksQT10WzBdW2VdLnByaW1pdGl2ZVR5cGU7Zm9yKHM9MTtzPGk7KytzKXtpZighYXQuZXF1YWxzKHRbc10ubW9kZWxNYXRyaXgsYSkpdGhyb3cgbmV3IFkoIkFsbCBpbnN0YW5jZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG1vZGVsTWF0cml4LiIpO2lmKG0odFtzXVtlXS5pbmRpY2VzKSE9PWgpdGhyb3cgbmV3IFkoIkFsbCBpbnN0YW5jZSBnZW9tZXRyaWVzIG11c3QgaGF2ZSBhbiBpbmRpY2VzIG9yIG5vdCBoYXZlIG9uZS4iKTtpZih0W3NdW2VdLnByaW1pdGl2ZVR5cGUhPT1BKXRocm93IG5ldyBZKCJBbGwgaW5zdGFuY2UgZ2VvbWV0cmllcyBtdXN0IGhhdmUgdGhlIHNhbWUgcHJpbWl0aXZlVHlwZS4iKX1sZXQgZD11c3QodCxlKSxmLEUsXztmb3IobiBpbiBkKWlmKGQuaGFzT3duUHJvcGVydHkobikpZm9yKGY9ZFtuXS52YWx1ZXMscj0wLHM9MDtzPGk7KytzKWZvcihFPXRbc11bZV0uYXR0cmlidXRlc1tuXS52YWx1ZXMsXz1FLmxlbmd0aCxvPTA7bzxfOysrbylmW3IrK109RVtvXTtsZXQgUjtpZihoKXtsZXQgVD0wO2ZvcihzPTA7czxpOysrcylUKz10W3NdW2VdLmluZGljZXMubGVuZ3RoO2xldCBiPXNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKG5ldyBzZSh7YXR0cmlidXRlczpkLHByaW1pdGl2ZVR5cGU6bmUuUE9JTlRTfSkpLEY9dGUuY3JlYXRlVHlwZWRBcnJheShiLFQpLEI9MCxVPTA7Zm9yKHM9MDtzPGk7KytzKXtsZXQgUT10W3NdW2VdLmluZGljZXMsTT1RLmxlbmd0aDtmb3Iocj0wO3I8TTsrK3IpRltCKytdPVUrUVtyXTtVKz1zZS5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0W3NdW2VdKX1SPUZ9bGV0IEk9bmV3IGwsQz0wLE47Zm9yKHM9MDtzPGk7KytzKXtpZihOPXRbc11bZV0uYm91bmRpbmdTcGhlcmUsIW0oTikpe0k9dm9pZCAwO2JyZWFrfWwuYWRkKE4uY2VudGVyLEksSSl9aWYobShJKSlmb3IobC5kaXZpZGVCeVNjYWxhcihJLGksSSkscz0wO3M8aTsrK3Mpe049dFtzXVtlXS5ib3VuZGluZ1NwaGVyZTtsZXQgVD1sLm1hZ25pdHVkZShsLnN1YnRyYWN0KE4uY2VudGVyLEksQ3N0KSkrTi5yYWRpdXM7VD5DJiYoQz1UKX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmQsaW5kaWNlczpSLHByaW1pdGl2ZVR5cGU6QSxib3VuZGluZ1NwaGVyZTptKEkpP25ldyBOdChJLEMpOnZvaWQgMH0pfWZ1bmN0aW9uIE5zdCh0KXtpZihtKHQuaW5kaWNlcykpcmV0dXJuIHQ7bGV0IGU9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBZKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgdGhyZWUuIik7aWYoZSUzIT09MCl0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7bGV0IGk9dGUuY3JlYXRlVHlwZWRBcnJheShlLGUpO2ZvcihsZXQgbj0wO248ZTsrK24paVtuXT1uO3JldHVybiB0LmluZGljZXM9aSx0fWZ1bmN0aW9uIEZzdCh0KXtsZXQgZT1zZS5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDMpdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0aHJlZS4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMikqMyk7aVswXT0xLGlbMV09MCxpWzJdPTI7bGV0IG49Mztmb3IobGV0IHM9MztzPGU7KytzKWlbbisrXT1zLTEsaVtuKytdPTAsaVtuKytdPXM7cmV0dXJuIHQuaW5kaWNlcz1pLHQucHJpbWl0aXZlVHlwZT1uZS5UUklBTkdMRVMsdH1mdW5jdGlvbiBic3QodCl7bGV0IGU9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBZKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgMy4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMikqMyk7aVswXT0wLGlbMV09MSxpWzJdPTIsZT4zJiYoaVszXT0wLGlbNF09MixpWzVdPTMpO2xldCBuPTY7Zm9yKGxldCBzPTM7czxlLTE7cys9MilpW24rK109cyxpW24rK109cy0xLGlbbisrXT1zKzEscysyPGUmJihpW24rK109cyxpW24rK109cysxLGlbbisrXT1zKzIpO3JldHVybiB0LmluZGljZXM9aSx0LnByaW1pdGl2ZVR5cGU9bmUuVFJJQU5HTEVTLHR9ZnVuY3Rpb24gWXN0KHQpe2lmKG0odC5pbmRpY2VzKSlyZXR1cm4gdDtsZXQgZT1zZS5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDIpdGhyb3cgbmV3IFkoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0d28uIik7aWYoZSUyIT09MCl0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMi4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsZSk7Zm9yKGxldCBuPTA7bjxlOysrbilpW25dPW47cmV0dXJuIHQuaW5kaWNlcz1pLHR9ZnVuY3Rpb24gVnN0KHQpe2xldCBlPXNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMSkqMik7aVswXT0wLGlbMV09MTtsZXQgbj0yO2ZvcihsZXQgcz0yO3M8ZTsrK3MpaVtuKytdPXMtMSxpW24rK109cztyZXR1cm4gdC5pbmRpY2VzPWksdC5wcmltaXRpdmVUeXBlPW5lLkxJTkVTLHR9ZnVuY3Rpb24gU3N0KHQpe2xldCBlPXNlLmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgWSgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtsZXQgaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsZSoyKTtpWzBdPTAsaVsxXT0xO2xldCBuPTI7Zm9yKGxldCBzPTI7czxlOysrcylpW24rK109cy0xLGlbbisrXT1zO3JldHVybiBpW24rK109ZS0xLGlbbl09MCx0LmluZGljZXM9aSx0LnByaW1pdGl2ZVR5cGU9bmUuTElORVMsdH1mdW5jdGlvbiBPc3QodCl7c3dpdGNoKHQucHJpbWl0aXZlVHlwZSl7Y2FzZSBuZS5UUklBTkdMRV9GQU46cmV0dXJuIEZzdCh0KTtjYXNlIG5lLlRSSUFOR0xFX1NUUklQOnJldHVybiBic3QodCk7Y2FzZSBuZS5UUklBTkdMRVM6cmV0dXJuIE5zdCh0KTtjYXNlIG5lLkxJTkVfU1RSSVA6cmV0dXJuIFZzdCh0KTtjYXNlIG5lLkxJTkVfTE9PUDpyZXR1cm4gU3N0KHQpO2Nhc2UgbmUuTElORVM6cmV0dXJuIFlzdCh0KX1yZXR1cm4gdH1mdW5jdGlvbiBDYyh0LGUpe01hdGguYWJzKHQueSk8TC5FUFNJTE9ONiYmKGU/dC55PS1MLkVQU0lMT042OnQueT1MLkVQU0lMT042KX1mdW5jdGlvbiBCc3QodCxlLGkpe2lmKHQueSE9PTAmJmUueSE9PTAmJmkueSE9PTApe0NjKHQsdC55PDApLENjKGUsZS55PDApLENjKGksaS55PDApO3JldHVybn1sZXQgbj1NYXRoLmFicyh0LnkpLHM9TWF0aC5hYnMoZS55KSxvPU1hdGguYWJzKGkueSkscjtuPnM/bj5vP3I9TC5zaWduKHQueSk6cj1MLnNpZ24oaS55KTpzPm8/cj1MLnNpZ24oZS55KTpyPUwuc2lnbihpLnkpO2xldCBhPXI8MDtDYyh0LGEpLENjKGUsYSksQ2MoaSxhKX1mdW5jdGlvbiBIcih0LGUsaSxuKXtsLmFkZCh0LGwubXVsdGlwbHlCeVNjYWxhcihsLnN1YnRyYWN0KGUsdCx5UCksdC55Lyh0LnktZS55KSx5UCksaSksbC5jbG9uZShpLG4pLENjKGksITApLENjKG4sITEpfWZ1bmN0aW9uIEdzdCh0LGUsaSl7aWYodC54Pj0wfHxlLng+PTB8fGkueD49MClyZXR1cm47QnN0KHQsZSxpKTtsZXQgbj10Lnk8MCxzPWUueTwwLG89aS55PDAscj0wO3IrPW4/MTowLHIrPXM/MTowLHIrPW8/MTowO2xldCBhPUtOLmluZGljZXM7cj09PTE/KGFbMV09MyxhWzJdPTQsYVs1XT02LGFbN109NixhWzhdPTUsbj8oSHIodCxlLHlsLHhsKSxIcih0LGksd2wsUGwpLGFbMF09MCxhWzNdPTEsYVs0XT0yLGFbNl09MSk6cz8oSHIoZSxpLHlsLHhsKSxIcihlLHQsd2wsUGwpLGFbMF09MSxhWzNdPTIsYVs0XT0wLGFbNl09Mik6byYmKEhyKGksdCx5bCx4bCksSHIoaSxlLHdsLFBsKSxhWzBdPTIsYVszXT0wLGFbNF09MSxhWzZdPTApKTpyPT09MiYmKGFbMl09NCxhWzRdPTQsYVs1XT0zLGFbN109NSxhWzhdPTYsbj9zP298fChIcihpLHQseWwseGwpLEhyKGksZSx3bCxQbCksYVswXT0wLGFbMV09MSxhWzNdPTAsYVs2XT0yKTooSHIoZSxpLHlsLHhsKSxIcihlLHQsd2wsUGwpLGFbMF09MixhWzFdPTAsYVszXT0yLGFbNl09MSk6KEhyKHQsZSx5bCx4bCksSHIodCxpLHdsLFBsKSxhWzBdPTEsYVsxXT0yLGFbM109MSxhWzZdPTApKTtsZXQgaD1LTi5wb3NpdGlvbnM7cmV0dXJuIGhbMF09dCxoWzFdPWUsaFsyXT1pLGgubGVuZ3RoPTMsKHI9PT0xfHxyPT09MikmJihoWzNdPXlsLGhbNF09d2wsaFs1XT14bCxoWzZdPVBsLGgubGVuZ3RoPTcpLEtOfWZ1bmN0aW9uIHdQKHQsZSl7bGV0IGk9dC5hdHRyaWJ1dGVzO2lmKGkucG9zaXRpb24udmFsdWVzLmxlbmd0aD09PTApcmV0dXJuO2ZvcihsZXQgcyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkocykmJm0oaVtzXSkmJm0oaVtzXS52YWx1ZXMpKXtsZXQgbz1pW3NdO28udmFsdWVzPUF0LmNyZWF0ZVR5cGVkQXJyYXkoby5jb21wb25lbnREYXRhdHlwZSxvLnZhbHVlcyl9bGV0IG49c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7cmV0dXJuIHQuaW5kaWNlcz10ZS5jcmVhdGVUeXBlZEFycmF5KG4sdC5pbmRpY2VzKSxlJiYodC5ib3VuZGluZ1NwaGVyZT1OdC5mcm9tVmVydGljZXMoaS5wb3NpdGlvbi52YWx1ZXMpKSx0fWZ1bmN0aW9uIEttKHQpe2xldCBlPXQuYXR0cmlidXRlcyxpPXt9O2ZvcihsZXQgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikmJm0oZVtuXSkmJm0oZVtuXS52YWx1ZXMpKXtsZXQgcz1lW25dO2lbbl09bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpzLmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6cy5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTpzLm5vcm1hbGl6ZSx2YWx1ZXM6W119KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmksaW5kaWNlczpbXSxwcmltaXRpdmVUeXBlOnQucHJpbWl0aXZlVHlwZX0pfWZ1bmN0aW9uIHRGKHQsZSxpKXtsZXQgbj1tKHQuZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmUpO2U9d1AoZSxuKSxpPXdQKGksbiksbShpKSYmIW0oZSk/dC5nZW9tZXRyeT1pOiFtKGkpJiZtKGUpP3QuZ2VvbWV0cnk9ZToodC53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5PWUsdC5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5PWksdC5nZW9tZXRyeT12b2lkIDApfWZ1bmN0aW9uIGVGKHQsZSl7bGV0IGk9bmV3IHQsbj1uZXcgdCxzPW5ldyB0O3JldHVybiBmdW5jdGlvbihvLHIsYSxoLEEsZCxmLEUpe2xldCBfPXQuZnJvbUFycmF5KEEsbyplLGkpLFI9dC5mcm9tQXJyYXkoQSxyKmUsbiksST10LmZyb21BcnJheShBLGEqZSxzKTt0Lm11bHRpcGx5QnlTY2FsYXIoXyxoLngsXyksdC5tdWx0aXBseUJ5U2NhbGFyKFIsaC55LFIpLHQubXVsdGlwbHlCeVNjYWxhcihJLGgueixJKTtsZXQgQz10LmFkZChfLFIsXyk7aWYodC5hZGQoQyxJLEMpLEUpdHJ5e3Qubm9ybWFsaXplKEMsQyl9Y2F0Y2goTil7dGhyb3cgbmV3IFkoTil9dC5wYWNrKEMsZCxmKmUpfX1mdW5jdGlvbiBqSSh0LGUsaSxuLHMsbyxyLGEsaCxBLGQsZixFLF8sUixJKXtpZighbShvKSYmIW0ocikmJiFtKGEpJiYhbShoKSYmIW0oQSkmJl89PT0wKXJldHVybjtsZXQgQz1sLmZyb21BcnJheShzLHQqMyxuXyksTj1sLmZyb21BcnJheShzLGUqMyxYTiksVD1sLmZyb21BcnJheShzLGkqMyxxTiksYj1CUChuLEMsTixULFVzdCk7aWYobShiKSl7aWYobShvKSYmdkkodCxlLGksYixvLGYubm9ybWFsLnZhbHVlcyxJLCEwKSxtKEEpKXtsZXQgRj1sLmZyb21BcnJheShBLHQqMyxuXyksQj1sLmZyb21BcnJheShBLGUqMyxYTiksVT1sLmZyb21BcnJheShBLGkqMyxxTik7bC5tdWx0aXBseUJ5U2NhbGFyKEYsYi54LEYpLGwubXVsdGlwbHlCeVNjYWxhcihCLGIueSxCKSxsLm11bHRpcGx5QnlTY2FsYXIoVSxiLnosVSk7bGV0IFE7IWwuZXF1YWxzKEYsbC5aRVJPKXx8IWwuZXF1YWxzKEIsbC5aRVJPKXx8IWwuZXF1YWxzKFUsbC5aRVJPKT8oUT1sLmFkZChGLEIsRiksbC5hZGQoUSxVLFEpLGwubm9ybWFsaXplKFEsUSkpOihRPW5fLFEueD0wLFEueT0wLFEuej0wKSxsLnBhY2soUSxmLmV4dHJ1ZGVEaXJlY3Rpb24udmFsdWVzLEkqMyl9aWYobShkKSYmRHN0KHQsZSxpLGIsZCxmLmFwcGx5T2Zmc2V0LnZhbHVlcyxJKSxtKHIpJiZ2SSh0LGUsaSxiLHIsZi50YW5nZW50LnZhbHVlcyxJLCEwKSxtKGEpJiZ2SSh0LGUsaSxiLGEsZi5iaXRhbmdlbnQudmFsdWVzLEksITApLG0oaCkmJnZQKHQsZSxpLGIsaCxmLnN0LnZhbHVlcyxJKSxfPjApZm9yKGxldCBGPTA7RjxfO0YrKyl7bGV0IEI9RVtGXTtNc3QodCxlLGksYixJLFJbQl0sZltCXSl9fX1mdW5jdGlvbiBNc3QodCxlLGksbixzLG8scil7bGV0IGE9by5jb21wb25lbnRzUGVyQXR0cmlidXRlLGg9by52YWx1ZXMsQT1yLnZhbHVlcztzd2l0Y2goYSl7Y2FzZSA0OldzdCh0LGUsaSxuLGgsQSxzLCExKTticmVhaztjYXNlIDM6dkkodCxlLGksbixoLEEscywhMSk7YnJlYWs7Y2FzZSAyOnZQKHQsZSxpLG4saCxBLHMsITEpO2JyZWFrO2RlZmF1bHQ6QVtzXT1oW3RdKm4ueCtoW2VdKm4ueStoW2ldKm4uen19ZnVuY3Rpb24gQ0EodCxlLGksbixzLG8pe2xldCByPXQucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zO2lmKHMhPT0tMSl7bGV0IGE9bltzXSxoPWlbYV07cmV0dXJuIGg9PT0tMT8oaVthXT1yLHQucG9zaXRpb24udmFsdWVzLnB1c2goby54LG8ueSxvLnopLGUucHVzaChyKSxyKTooZS5wdXNoKGgpLGgpfXJldHVybiB0LnBvc2l0aW9uLnZhbHVlcy5wdXNoKG8ueCxvLnksby56KSxlLnB1c2gocikscn1mdW5jdGlvbiB4UCh0KXtsZXQgZT10Lmdlb21ldHJ5LGk9ZS5hdHRyaWJ1dGVzLG49aS5wb3NpdGlvbi52YWx1ZXMscz1tKGkubm9ybWFsKT9pLm5vcm1hbC52YWx1ZXM6dm9pZCAwLG89bShpLmJpdGFuZ2VudCk/aS5iaXRhbmdlbnQudmFsdWVzOnZvaWQgMCxyPW0oaS50YW5nZW50KT9pLnRhbmdlbnQudmFsdWVzOnZvaWQgMCxhPW0oaS5zdCk/aS5zdC52YWx1ZXM6dm9pZCAwLGg9bShpLmV4dHJ1ZGVEaXJlY3Rpb24pP2kuZXh0cnVkZURpcmVjdGlvbi52YWx1ZXM6dm9pZCAwLEE9bShpLmFwcGx5T2Zmc2V0KT9pLmFwcGx5T2Zmc2V0LnZhbHVlczp2b2lkIDAsZD1lLmluZGljZXMsZj1bXTtmb3IobGV0IFEgaW4gaSlpLmhhc093blByb3BlcnR5KFEpJiYhUXN0W1FdJiZtKGlbUV0pJiZmLnB1c2goUSk7bGV0IEU9Zi5sZW5ndGgsXz1LbShlKSxSPUttKGUpLEksQyxOLFQsYixGPVtdO0YubGVuZ3RoPW4ubGVuZ3RoLzM7bGV0IEI9W107Zm9yKEIubGVuZ3RoPW4ubGVuZ3RoLzMsYj0wO2I8Ri5sZW5ndGg7KytiKUZbYl09LTEsQltiXT0tMTtsZXQgVT1kLmxlbmd0aDtmb3IoYj0wO2I8VTtiKz0zKXtsZXQgUT1kW2JdLE09ZFtiKzFdLGs9ZFtiKzJdLHk9bC5mcm9tQXJyYXkobixRKjMpLGM9bC5mcm9tQXJyYXkobixNKjMpLGc9bC5mcm9tQXJyYXkobixrKjMpLE89R3N0KHksYyxnKTtpZihtKE8pJiZPLnBvc2l0aW9ucy5sZW5ndGg+Myl7bGV0IEQ9Ty5wb3NpdGlvbnMsdz1PLmluZGljZXMseD13Lmxlbmd0aDtmb3IobGV0IEg9MDtIPHg7KytIKXtsZXQgaj13W0hdLFg9RFtqXTtYLnk8MD8oST1SLmF0dHJpYnV0ZXMsQz1SLmluZGljZXMsTj1GKTooST1fLmF0dHJpYnV0ZXMsQz1fLmluZGljZXMsTj1CKSxUPUNBKEksQyxOLGQsajwzP2IrajotMSxYKSxqSShRLE0sayxYLG4scyxyLG8sYSxoLEEsSSxmLEUsaSxUKX19ZWxzZSBtKE8pJiYoeT1PLnBvc2l0aW9uc1swXSxjPU8ucG9zaXRpb25zWzFdLGc9Ty5wb3NpdGlvbnNbMl0pLHkueTwwPyhJPVIuYXR0cmlidXRlcyxDPVIuaW5kaWNlcyxOPUYpOihJPV8uYXR0cmlidXRlcyxDPV8uaW5kaWNlcyxOPUIpLFQ9Q0EoSSxDLE4sZCxiLHkpLGpJKFEsTSxrLHksbixzLHIsbyxhLGgsQSxJLGYsRSxpLFQpLFQ9Q0EoSSxDLE4sZCxiKzEsYyksakkoUSxNLGssYyxuLHMscixvLGEsaCxBLEksZixFLGksVCksVD1DQShJLEMsTixkLGIrMixnKSxqSShRLE0sayxnLG4scyxyLG8sYSxoLEEsSSxmLEUsaSxUKX10Rih0LFIsXyl9ZnVuY3Rpb24gem0odCxlLGksbixzLG8scil7aWYoIW0ocikpcmV0dXJuO2xldCBhPWwuZnJvbUFycmF5KG4sdCozLG5fKTtsLmVxdWFsc0Vwc2lsb24oYSxpLEwuRVBTSUxPTjEwKT9vLmFwcGx5T2Zmc2V0LnZhbHVlc1tzXT1yW3RdOm8uYXBwbHlPZmZzZXQudmFsdWVzW3NdPXJbZV19ZnVuY3Rpb24gUFAodCl7bGV0IGU9dC5nZW9tZXRyeSxpPWUuYXR0cmlidXRlcyxuPWkucG9zaXRpb24udmFsdWVzLHM9bShpLmFwcGx5T2Zmc2V0KT9pLmFwcGx5T2Zmc2V0LnZhbHVlczp2b2lkIDAsbz1lLmluZGljZXMscj1LbShlKSxhPUttKGUpLGgsQT1vLmxlbmd0aCxkPVtdO2QubGVuZ3RoPW4ubGVuZ3RoLzM7bGV0IGY9W107Zm9yKGYubGVuZ3RoPW4ubGVuZ3RoLzMsaD0wO2g8ZC5sZW5ndGg7KytoKWRbaF09LTEsZltoXT0tMTtmb3IoaD0wO2g8QTtoKz0yKXtsZXQgRT1vW2hdLF89b1toKzFdLFI9bC5mcm9tQXJyYXkobixFKjMsbl8pLEk9bC5mcm9tQXJyYXkobixfKjMsWE4pLEM7TWF0aC5hYnMoUi55KTxMLkVQU0lMT042JiYoUi55PDA/Ui55PS1MLkVQU0lMT042OlIueT1MLkVQU0lMT042KSxNYXRoLmFicyhJLnkpPEwuRVBTSUxPTjYmJihJLnk8MD9JLnk9LUwuRVBTSUxPTjY6SS55PUwuRVBTSUxPTjYpO2xldCBOPXIuYXR0cmlidXRlcyxUPXIuaW5kaWNlcyxiPWYsRj1hLmF0dHJpYnV0ZXMsQj1hLmluZGljZXMsVT1kLFE9bm8ubGluZVNlZ21lbnRQbGFuZShSLEkselAscU4pO2lmKG0oUSkpe2xldCBNPWwubXVsdGlwbHlCeVNjYWxhcihsLlVOSVRfWSw1KkwuRVBTSUxPTjksa3N0KTtSLnk8MCYmKGwubmVnYXRlKE0sTSksTj1hLmF0dHJpYnV0ZXMsVD1hLmluZGljZXMsYj1kLEY9ci5hdHRyaWJ1dGVzLEI9ci5pbmRpY2VzLFU9Zik7bGV0IGs9bC5hZGQoUSxNLExzdCk7Qz1DQShOLFQsYixvLGgsUiksem0oRSxfLFIsbixDLE4scyksQz1DQShOLFQsYixvLC0xLGspLHptKEUsXyxrLG4sQyxOLHMpLGwubmVnYXRlKE0sTSksbC5hZGQoUSxNLGspLEM9Q0EoRixCLFUsbywtMSxrKSx6bShFLF8sayxuLEMsRixzKSxDPUNBKEYsQixVLG8saCsxLEkpLHptKEUsXyxJLG4sQyxGLHMpfWVsc2V7bGV0IE0sayx5O1IueTwwPyhNPWEuYXR0cmlidXRlcyxrPWEuaW5kaWNlcyx5PWQpOihNPXIuYXR0cmlidXRlcyxrPXIuaW5kaWNlcyx5PWYpLEM9Q0EoTSxrLHksbyxoLFIpLHptKEUsXyxSLG4sQyxNLHMpLEM9Q0EoTSxrLHksbyxoKzEsSSksem0oRSxfLEksbixDLE0scyl9fXRGKHQsYSxyKX1mdW5jdGlvbiBIUCh0KXtsZXQgZT10LmF0dHJpYnV0ZXMsaT1lLnBvc2l0aW9uLnZhbHVlcyxuPWUucHJldlBvc2l0aW9uLnZhbHVlcyxzPWUubmV4dFBvc2l0aW9uLnZhbHVlcyxvPWkubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bztyKz0zKXtsZXQgYT1sLnVucGFjayhpLHIsS1ApO2lmKGEueD4wKWNvbnRpbnVlO2xldCBoPWwudW5wYWNrKG4scixYUCk7KGEueTwwJiZoLnk+MHx8YS55PjAmJmgueTwwKSYmKHItMz4wPyhuW3JdPWlbci0zXSxuW3IrMV09aVtyLTJdLG5bcisyXT1pW3ItMV0pOmwucGFjayhhLG4scikpO2xldCBBPWwudW5wYWNrKHMsciwkTik7KGEueTwwJiZBLnk+MHx8YS55PjAmJkEueTwwKSYmKHIrMzxvPyhzW3JdPWlbciszXSxzW3IrMV09aVtyKzRdLHNbcisyXT1pW3IrNV0pOmwucGFjayhhLHMscikpfX1mdW5jdGlvbiBqc3QodCl7bGV0IGU9dC5nZW9tZXRyeSxpPWUuYXR0cmlidXRlcyxuPWkucG9zaXRpb24udmFsdWVzLHM9aS5wcmV2UG9zaXRpb24udmFsdWVzLG89aS5uZXh0UG9zaXRpb24udmFsdWVzLHI9aS5leHBhbmRBbmRXaWR0aC52YWx1ZXMsYT1tKGkuc3QpP2kuc3QudmFsdWVzOnZvaWQgMCxoPW0oaS5jb2xvcik/aS5jb2xvci52YWx1ZXM6dm9pZCAwLEE9S20oZSksZD1LbShlKSxmLEUsXyxSPSExLEk9bi5sZW5ndGgvMztmb3IoZj0wO2Y8STtmKz00KXtsZXQgQz1mLE49ZisyLFQ9bC5mcm9tQXJyYXkobixDKjMsS1ApLGI9bC5mcm9tQXJyYXkobixOKjMsWFApO2lmKE1hdGguYWJzKFQueSk8SEkpZm9yKFQueT1ISSooYi55PDA/LTE6MSksbltmKjMrMV09VC55LG5bKGYrMSkqMysxXT1ULnksRT1DKjM7RTxDKjMrNCozO0UrPTMpc1tFXT1uW2YqM10sc1tFKzFdPW5bZiozKzFdLHNbRSsyXT1uW2YqMysyXTtpZihNYXRoLmFicyhiLnkpPEhJKWZvcihiLnk9SEkqKFQueTwwPy0xOjEpLG5bKGYrMikqMysxXT1iLnksblsoZiszKSozKzFdPWIueSxFPUMqMztFPEMqMys0KjM7RSs9MylvW0VdPW5bKGYrMikqM10sb1tFKzFdPW5bKGYrMikqMysxXSxvW0UrMl09blsoZisyKSozKzJdO2xldCBGPUEuYXR0cmlidXRlcyxCPUEuaW5kaWNlcyxVPWQuYXR0cmlidXRlcyxRPWQuaW5kaWNlcyxNPW5vLmxpbmVTZWdtZW50UGxhbmUoVCxiLHpQLHdzdCk7aWYobShNKSl7Uj0hMDtsZXQgaz1sLm11bHRpcGx5QnlTY2FsYXIobC5VTklUX1ksSnN0LHhzdCk7VC55PDAmJihsLm5lZ2F0ZShrLGspLEY9ZC5hdHRyaWJ1dGVzLEI9ZC5pbmRpY2VzLFU9QS5hdHRyaWJ1dGVzLFE9QS5pbmRpY2VzKTtsZXQgeT1sLmFkZChNLGssUHN0KTtGLnBvc2l0aW9uLnZhbHVlcy5wdXNoKFQueCxULnksVC56LFQueCxULnksVC56KSxGLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxGLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxGLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaChzW0MqM10sc1tDKjMrMV0sc1tDKjMrMl0pLEYucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHNbQyozKzNdLHNbQyozKzRdLHNbQyozKzVdKSxGLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaChULngsVC55LFQueixULngsVC55LFQueiksRi5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLEYubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxGLm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaCh5LngseS55LHkueiksRi5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLGwubmVnYXRlKGssayksbC5hZGQoTSxrLHkpLFUucG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLFUucG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLFUucG9zaXRpb24udmFsdWVzLnB1c2goYi54LGIueSxiLnosYi54LGIueSxiLnopLFUucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxVLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaCh5LngseS55LHkueiksVS5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2goeS54LHkueSx5LnopLFUucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHkueCx5LnkseS56KSxVLm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaChiLngsYi55LGIueixiLngsYi55LGIueiksVS5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2gob1tOKjNdLG9bTiozKzFdLG9bTiozKzJdKSxVLm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaChvW04qMyszXSxvW04qMys0XSxvW04qMys1XSk7bGV0IGM9bnQuZnJvbUFycmF5KHIsQyoyLEpQKSxnPU1hdGguYWJzKGMueSk7Ri5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSxnLDEsZyksRi5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSwtZywxLC1nKSxVLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLGcsMSxnKSxVLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLC1nLDEsLWcpO2xldCBPPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KE0sVCwkTikpO2lmKE8vPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KGIsVCwkTikpLG0oaCkpe2xldCBEPWllLmZyb21BcnJheShoLEMqNCxqUCksdz1pZS5mcm9tQXJyYXkoaCxOKjQsalApLHg9TC5sZXJwKEQueCx3LngsTyksSD1MLmxlcnAoRC55LHcueSxPKSxqPUwubGVycChELnosdy56LE8pLFg9TC5sZXJwKEQudyx3LncsTyk7Zm9yKEU9Qyo0O0U8Qyo0KzIqNDsrK0UpRi5jb2xvci52YWx1ZXMucHVzaChoW0VdKTtmb3IoRi5jb2xvci52YWx1ZXMucHVzaCh4LEgsaixYKSxGLmNvbG9yLnZhbHVlcy5wdXNoKHgsSCxqLFgpLFUuY29sb3IudmFsdWVzLnB1c2goeCxILGosWCksVS5jb2xvci52YWx1ZXMucHVzaCh4LEgsaixYKSxFPU4qNDtFPE4qNCsyKjQ7KytFKVUuY29sb3IudmFsdWVzLnB1c2goaFtFXSl9aWYobShhKSl7bGV0IEQ9bnQuZnJvbUFycmF5KGEsQyoyLEpQKSx3PW50LmZyb21BcnJheShhLChmKzMpKjIseXN0KSx4PUwubGVycChELngsdy54LE8pO2ZvcihFPUMqMjtFPEMqMisyKjI7KytFKUYuc3QudmFsdWVzLnB1c2goYVtFXSk7Zm9yKEYuc3QudmFsdWVzLnB1c2goeCxELnkpLEYuc3QudmFsdWVzLnB1c2goeCx3LnkpLFUuc3QudmFsdWVzLnB1c2goeCxELnkpLFUuc3QudmFsdWVzLnB1c2goeCx3LnkpLEU9TioyO0U8TioyKzIqMjsrK0UpVS5zdC52YWx1ZXMucHVzaChhW0VdKX1fPUYucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLTQsQi5wdXNoKF8sXysyLF8rMSksQi5wdXNoKF8rMSxfKzIsXyszKSxfPVUucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLTQsUS5wdXNoKF8sXysyLF8rMSksUS5wdXNoKF8rMSxfKzIsXyszKX1lbHNle2xldCBrLHk7Zm9yKFQueTwwPyhrPWQuYXR0cmlidXRlcyx5PWQuaW5kaWNlcyk6KGs9QS5hdHRyaWJ1dGVzLHk9QS5pbmRpY2VzKSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKFQueCxULnksVC56KSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKFQueCxULnksVC56KSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKGIueCxiLnksYi56KSxrLnBvc2l0aW9uLnZhbHVlcy5wdXNoKGIueCxiLnksYi56KSxFPWYqMztFPGYqMys0KjM7KytFKWsucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHNbRV0pLGsubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKG9bRV0pO2ZvcihFPWYqMjtFPGYqMis0KjI7KytFKWsuZXhwYW5kQW5kV2lkdGgudmFsdWVzLnB1c2gocltFXSksbShhKSYmay5zdC52YWx1ZXMucHVzaChhW0VdKTtpZihtKGgpKWZvcihFPWYqNDtFPGYqNCs0KjQ7KytFKWsuY29sb3IudmFsdWVzLnB1c2goaFtFXSk7Xz1rLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LHkucHVzaChfLF8rMixfKzEpLHkucHVzaChfKzEsXysyLF8rMyl9fVImJihIUChkKSxIUChBKSksdEYodCxkLEEpfXZhciBRbyxNUCxwc3Qsak4sR2EseEksUEksQ3N0LGpyLGVfLEhtLHZtLGdzdCxRUCxUc3QsaV8sQmEsa1AsTFAsSkkseVAseWwsd2wseGwsUGwsS04sV3N0LHZJLHZQLERzdCxuXyxYTixxTixVc3QsUXN0LHpQLGtzdCxMc3QsSlAseXN0LEtQLFhQLCROLHdzdCx4c3QsUHN0LGpQLEpzdCxISSx3aSxnQT1TKCgpPT57b2goKTtHUCgpO19pKCk7WGUoKTtIdCgpO09zKCk7cmkoKTtvaSgpO0Z0KCk7bXQoKTtPdCgpO1RsKCk7ekEoKTt5aSgpO2ppKCk7ZEkoKTtEaSgpO25jKCk7VWwoKTtfZSgpO2RuKCk7YmkoKTtuaCgpO1hpKCk7RFAoKTtRbz17fTtRby50b1dpcmVmcmFtZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGU9dC5pbmRpY2VzO2lmKG0oZSkpe3N3aXRjaCh0LnByaW1pdGl2ZVR5cGUpe2Nhc2UgbmUuVFJJQU5HTEVTOnQuaW5kaWNlcz1fc3QoZSk7YnJlYWs7Y2FzZSBuZS5UUklBTkdMRV9TVFJJUDp0LmluZGljZXM9UnN0KGUpO2JyZWFrO2Nhc2UgbmUuVFJJQU5HTEVfRkFOOnQuaW5kaWNlcz1ac3QoZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgWSgiZ2VvbWV0cnkucHJpbWl0aXZlVHlwZSBtdXN0IGJlIFRSSUFOR0xFUywgVFJJQU5HTEVfU1RSSVAsIG9yIFRSSUFOR0xFX0ZBTi4iKX10LnByaW1pdGl2ZVR5cGU9bmUuTElORVN9cmV0dXJuIHR9O1FvLmNyZWF0ZUxpbmVTZWdtZW50c0ZvclZlY3RvcnM9ZnVuY3Rpb24odCxlLGkpe2lmKGU9WihlLCJub3JtYWwiKSwhbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXNbZV0pKXRocm93IG5ldyBZKGBnZW9tZXRyeS5hdHRyaWJ1dGVzIG11c3QgaGF2ZSBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdHRyaWJ1dGVOYW1lIHBhcmFtZXRlciwgJHtlfS5gKTtpPVooaSwxZTQpO2xldCBuPXQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscz10LmF0dHJpYnV0ZXNbZV0udmFsdWVzLG89bi5sZW5ndGgscj1uZXcgRmxvYXQ2NEFycmF5KDIqbyksYT0wO2ZvcihsZXQgZD0wO2Q8bztkKz0zKXJbYSsrXT1uW2RdLHJbYSsrXT1uW2QrMV0sclthKytdPW5bZCsyXSxyW2ErK109bltkXStzW2RdKmksclthKytdPW5bZCsxXStzW2QrMV0qaSxyW2ErK109bltkKzJdK3NbZCsyXSppO2xldCBoLEE9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbShBKSYmKGg9bmV3IE50KEEuY2VudGVyLEEucmFkaXVzK2kpKSxuZXcgc2Uoe2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cn0pfSxwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOmh9KX07UW8uY3JlYXRlQXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT1bInBvc2l0aW9uIiwicG9zaXRpb25IaWdoIiwicG9zaXRpb25Mb3ciLCJwb3NpdGlvbjNESGlnaCIsInBvc2l0aW9uM0RMb3ciLCJwb3NpdGlvbjJESGlnaCIsInBvc2l0aW9uMkRMb3ciLCJwaWNrQ29sb3IiLCJub3JtYWwiLCJzdCIsInRhbmdlbnQiLCJiaXRhbmdlbnQiLCJleHRydWRlRGlyZWN0aW9uIiwiY29tcHJlc3NlZEF0dHJpYnV0ZXMiXSxpPXQuYXR0cmlidXRlcyxuPXt9LHM9MCxvLHI9ZS5sZW5ndGg7Zm9yKG89MDtvPHI7KytvKXtsZXQgYT1lW29dO20oaVthXSkmJihuW2FdPXMrKyl9Zm9yKGxldCBhIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShhKSYmIW0oblthXSkmJihuW2FdPXMrKyk7cmV0dXJuIG59O1FvLnJlb3JkZXJGb3JQcmVWZXJ0ZXhDYWNoZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGU9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCksaT10LmluZGljZXM7aWYobShpKSl7bGV0IG49bmV3IEludDMyQXJyYXkoZSk7Zm9yKGxldCBFPTA7RTxlO0UrKyluW0VdPS0xO2xldCBzPWksbz1zLmxlbmd0aCxyPXRlLmNyZWF0ZVR5cGVkQXJyYXkoZSxvKSxhPTAsaD0wLEE9MCxkO2Zvcig7YTxvOylkPW5bc1thXV0sZCE9PS0xP3JbaF09ZDooZD1zW2FdLG5bZF09QSxyW2hdPUEsKytBKSwrK2EsKytoO3QuaW5kaWNlcz1yO2xldCBmPXQuYXR0cmlidXRlcztmb3IobGV0IEUgaW4gZilpZihmLmhhc093blByb3BlcnR5KEUpJiZtKGZbRV0pJiZtKGZbRV0udmFsdWVzKSl7bGV0IF89ZltFXSxSPV8udmFsdWVzLEk9MCxDPV8uY29tcG9uZW50c1BlckF0dHJpYnV0ZSxOPUF0LmNyZWF0ZVR5cGVkQXJyYXkoXy5jb21wb25lbnREYXRhdHlwZSxBKkMpO2Zvcig7STxlOyl7bGV0IFQ9bltJXTtpZihUIT09LTEpZm9yKGxldCBiPTA7YjxDO2IrKylOW0MqVCtiXT1SW0MqSStiXTsrK0l9Xy52YWx1ZXM9Tn19cmV0dXJuIHR9O1FvLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGk9dC5pbmRpY2VzO2lmKHQucHJpbWl0aXZlVHlwZT09PW5lLlRSSUFOR0xFUyYmbShpKSl7bGV0IG49aS5sZW5ndGgscz0wO2ZvcihsZXQgbz0wO288bjtvKyspaVtvXT5zJiYocz1pW29dKTt0LmluZGljZXM9V1AudGlwc2lmeSh7aW5kaWNlczppLG1heGltdW1JbmRleDpzLGNhY2hlU2l6ZTplfSl9cmV0dXJuIHR9O1FvLmZpdFRvVW5zaWduZWRTaG9ydEluZGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2lmKG0odC5pbmRpY2VzKSYmdC5wcmltaXRpdmVUeXBlIT09bmUuVFJJQU5HTEVTJiZ0LnByaW1pdGl2ZVR5cGUhPT1uZS5MSU5FUyYmdC5wcmltaXRpdmVUeXBlIT09bmUuUE9JTlRTKXRocm93IG5ldyBZKCJnZW9tZXRyeS5wcmltaXRpdmVUeXBlIG11c3QgZXF1YWwgdG8gUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIFByaW1pdGl2ZVR5cGUuTElORVMsIG9yIFByaW1pdGl2ZVR5cGUuUE9JTlRTLiIpO2xldCBlPVtdLGk9c2UuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYobSh0LmluZGljZXMpJiZpPj1MLlNJWFRZX0ZPVVJfS0lMT0JZVEVTKXtsZXQgbj1bXSxzPVtdLG89MCxyPVVQKHQuYXR0cmlidXRlcyksYT10LmluZGljZXMsaD1hLmxlbmd0aCxBO3QucHJpbWl0aXZlVHlwZT09PW5lLlRSSUFOR0xFUz9BPTM6dC5wcmltaXRpdmVUeXBlPT09bmUuTElORVM/QT0yOnQucHJpbWl0aXZlVHlwZT09PW5lLlBPSU5UUyYmKEE9MSk7Zm9yKGxldCBkPTA7ZDxoO2QrPUEpe2ZvcihsZXQgZj0wO2Y8QTsrK2Ype2xldCBFPWFbZCtmXSxfPW5bRV07bShfKXx8KF89bysrLG5bRV09XyxJc3Qocix0LmF0dHJpYnV0ZXMsRSkpLHMucHVzaChfKX1vK0E+PUwuU0lYVFlfRk9VUl9LSUxPQllURVMmJihlLnB1c2gobmV3IHNlKHthdHRyaWJ1dGVzOnIsaW5kaWNlczpzLHByaW1pdGl2ZVR5cGU6dC5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOnQuYm91bmRpbmdTcGhlcmUsYm91bmRpbmdTcGhlcmVDVjp0LmJvdW5kaW5nU3BoZXJlQ1Z9KSksbj1bXSxzPVtdLG89MCxyPVVQKHQuYXR0cmlidXRlcykpfXMubGVuZ3RoIT09MCYmZS5wdXNoKG5ldyBzZSh7YXR0cmlidXRlczpyLGluZGljZXM6cyxwcmltaXRpdmVUeXBlOnQucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTp0LmJvdW5kaW5nU3BoZXJlLGJvdW5kaW5nU3BoZXJlQ1Y6dC5ib3VuZGluZ1NwaGVyZUNWfSkpfWVsc2UgZS5wdXNoKHQpO3JldHVybiBlfTtNUD1uZXcgbCxwc3Q9bmV3IHV0O1FvLnByb2plY3RUbzJEPWZ1bmN0aW9uKHQsZSxpLG4scyl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhdHRyaWJ1dGVOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJhdHRyaWJ1dGVOYW1lM0QgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZU5hbWUyRCBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXNbZV0pKXRocm93IG5ldyBZKGBnZW9tZXRyeSBtdXN0IGhhdmUgYXR0cmlidXRlIG1hdGNoaW5nIHRoZSBhdHRyaWJ1dGVOYW1lIGFyZ3VtZW50OiAke2V9LmApO2lmKHQuYXR0cmlidXRlc1tlXS5jb21wb25lbnREYXRhdHlwZSE9PUF0LkRPVUJMRSl0aHJvdyBuZXcgWSgiVGhlIGF0dHJpYnV0ZSBjb21wb25lbnREYXRhdHlwZSBtdXN0IGJlIENvbXBvbmVudERhdGF0eXBlLkRPVUJMRS4iKTtsZXQgbz10LmF0dHJpYnV0ZXNbZV07cz1tKHMpP3M6bmV3IFNzO2xldCByPXMuZWxsaXBzb2lkLGE9by52YWx1ZXMsaD1uZXcgRmxvYXQ2NEFycmF5KGEubGVuZ3RoKSxBPTA7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKz0zKXtsZXQgZj1sLmZyb21BcnJheShhLGQsTVApLEU9ci5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhmLHBzdCk7aWYoIW0oRSkpe2lmKGYueCYmZi55JiZmLnopdGhyb3cgbmV3IFkoYENvdWxkIG5vdCBwcm9qZWN0IHBvaW50ICgke2YueH0sICR7Zi55fSwgJHtmLnp9KSB0byAyRC5gKTtjb250aW51ZX1sZXQgXz1zLnByb2plY3QoRSxNUCk7aFtBKytdPV8ueCxoW0ErK109Xy55LGhbQSsrXT1fLnp9cmV0dXJuIHQuYXR0cmlidXRlc1tpXT1vLHQuYXR0cmlidXRlc1tuXT1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmh9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O2pOPXtoaWdoOjAsbG93OjB9O1FvLmVuY29kZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZU5hbWUgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImF0dHJpYnV0ZUhpZ2hOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJhdHRyaWJ1dGVMb3dOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuYXR0cmlidXRlc1tlXSkpdGhyb3cgbmV3IFkoYGdlb21ldHJ5IG11c3QgaGF2ZSBhdHRyaWJ1dGUgbWF0Y2hpbmcgdGhlIGF0dHJpYnV0ZU5hbWUgYXJndW1lbnQ6ICR7ZX0uYCk7aWYodC5hdHRyaWJ1dGVzW2VdLmNvbXBvbmVudERhdGF0eXBlIT09QXQuRE9VQkxFKXRocm93IG5ldyBZKCJUaGUgYXR0cmlidXRlIGNvbXBvbmVudERhdGF0eXBlIG11c3QgYmUgQ29tcG9uZW50RGF0YXR5cGUuRE9VQkxFLiIpO2xldCBzPXQuYXR0cmlidXRlc1tlXSxvPXMudmFsdWVzLHI9by5sZW5ndGgsYT1uZXcgRmxvYXQzMkFycmF5KHIpLGg9bmV3IEZsb2F0MzJBcnJheShyKTtmb3IobGV0IGQ9MDtkPHI7KytkKUduLmVuY29kZShvW2RdLGpOKSxhW2RdPWpOLmhpZ2gsaFtkXT1qTi5sb3c7bGV0IEE9cy5jb21wb25lbnRzUGVyQXR0cmlidXRlO3JldHVybiB0LmF0dHJpYnV0ZXNbaV09bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOkEsdmFsdWVzOmF9KSx0LmF0dHJpYnV0ZXNbbl09bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOkEsdmFsdWVzOmh9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O0dhPW5ldyBsO3hJPW5ldyBhdCxQST1uZXcgbHQ7UW8udHJhbnNmb3JtVG9Xb3JsZENvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJpbnN0YW5jZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10Lm1vZGVsTWF0cml4O2lmKGF0LmVxdWFscyhlLGF0LklERU5USVRZKSlyZXR1cm4gdDtsZXQgaT10Lmdlb21ldHJ5LmF0dHJpYnV0ZXM7SE4oZSxpLnBvc2l0aW9uKSxITihlLGkucHJldlBvc2l0aW9uKSxITihlLGkubmV4dFBvc2l0aW9uKSwobShpLm5vcm1hbCl8fG0oaS50YW5nZW50KXx8bShpLmJpdGFuZ2VudCkpJiYoYXQuaW52ZXJzZShlLHhJKSxhdC50cmFuc3Bvc2UoeEkseEkpLGF0LmdldE1hdHJpeDMoeEksUEkpLHZOKFBJLGkubm9ybWFsKSx2TihQSSxpLnRhbmdlbnQpLHZOKFBJLGkuYml0YW5nZW50KSk7bGV0IG49dC5nZW9tZXRyeS5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbShuKSYmKHQuZ2VvbWV0cnkuYm91bmRpbmdTcGhlcmU9TnQudHJhbnNmb3JtKG4sZSxuKSksdC5tb2RlbE1hdHJpeD1hdC5jbG9uZShhdC5JREVOVElUWSksdH07Q3N0PW5ldyBsO1FvLmNvbWJpbmVJbnN0YW5jZXM9ZnVuY3Rpb24odCl7aWYoIW0odCl8fHQubGVuZ3RoPDEpdGhyb3cgbmV3IFkoImluc3RhbmNlcyBpcyByZXF1aXJlZCBhbmQgbXVzdCBoYXZlIGxlbmd0aCBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgZT1bXSxpPVtdLG49dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxuOysrbyl7bGV0IHI9dFtvXTttKHIuZ2VvbWV0cnkpP2UucHVzaChyKTptKHIud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm0oci5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmaS5wdXNoKHIpfWxldCBzPVtdO3JldHVybiBlLmxlbmd0aD4wJiZzLnB1c2goek4oZSwiZ2VvbWV0cnkiKSksaS5sZW5ndGg+MCYmKHMucHVzaCh6TihpLCJ3ZXN0SGVtaXNwaGVyZUdlb21ldHJ5IikpLHMucHVzaCh6TihpLCJlYXN0SGVtaXNwaGVyZUdlb21ldHJ5IikpKSxzfTtqcj1uZXcgbCxlXz1uZXcgbCxIbT1uZXcgbCx2bT1uZXcgbDtRby5jb21wdXRlTm9ybWFsPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24pfHwhbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5pbmRpY2VzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuaW5kaWNlcyBpcyByZXF1aXJlZC4iKTtpZih0LmluZGljZXMubGVuZ3RoPDJ8fHQuaW5kaWNlcy5sZW5ndGglMyE9PTApdGhyb3cgbmV3IFkoImdlb21ldHJ5LmluZGljZXMgbGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIGJlIGEgbXVsdGlwbGUgb2YgMy4iKTtpZih0LnByaW1pdGl2ZVR5cGUhPT1uZS5UUklBTkdMRVMpdGhyb3cgbmV3IFkoImdlb21ldHJ5LnByaW1pdGl2ZVR5cGUgbXVzdCBiZSBQcmltaXRpdmVUeXBlLlRSSUFOR0xFUy4iKTtsZXQgZT10LmluZGljZXMsaT10LmF0dHJpYnV0ZXMsbj1pLnBvc2l0aW9uLnZhbHVlcyxzPWkucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLG89ZS5sZW5ndGgscj1uZXcgQXJyYXkocyksYT1uZXcgQXJyYXkoby8zKSxoPW5ldyBBcnJheShvKSxBO2ZvcihBPTA7QTxzO0ErKylyW0FdPXtpbmRleE9mZnNldDowLGNvdW50OjAsY3VycmVudENvdW50OjB9O2xldCBkPTA7Zm9yKEE9MDtBPG87QSs9Myl7bGV0IFI9ZVtBXSxJPWVbQSsxXSxDPWVbQSsyXSxOPVIqMyxUPUkqMyxiPUMqMztlXy54PW5bTl0sZV8ueT1uW04rMV0sZV8uej1uW04rMl0sSG0ueD1uW1RdLEhtLnk9bltUKzFdLEhtLno9bltUKzJdLHZtLng9bltiXSx2bS55PW5bYisxXSx2bS56PW5bYisyXSxyW1JdLmNvdW50KysscltJXS5jb3VudCsrLHJbQ10uY291bnQrKyxsLnN1YnRyYWN0KEhtLGVfLEhtKSxsLnN1YnRyYWN0KHZtLGVfLHZtKSxhW2RdPWwuY3Jvc3MoSG0sdm0sbmV3IGwpLGQrK31sZXQgZj0wO2ZvcihBPTA7QTxzO0ErKylyW0FdLmluZGV4T2Zmc2V0Kz1mLGYrPXJbQV0uY291bnQ7ZD0wO2xldCBFO2ZvcihBPTA7QTxvO0ErPTMpe0U9cltlW0FdXTtsZXQgUj1FLmluZGV4T2Zmc2V0K0UuY3VycmVudENvdW50O2hbUl09ZCxFLmN1cnJlbnRDb3VudCsrLEU9cltlW0ErMV1dLFI9RS5pbmRleE9mZnNldCtFLmN1cnJlbnRDb3VudCxoW1JdPWQsRS5jdXJyZW50Q291bnQrKyxFPXJbZVtBKzJdXSxSPUUuaW5kZXhPZmZzZXQrRS5jdXJyZW50Q291bnQsaFtSXT1kLEUuY3VycmVudENvdW50KyssZCsrfWxldCBfPW5ldyBGbG9hdDMyQXJyYXkocyozKTtmb3IoQT0wO0E8cztBKyspe2xldCBSPUEqMztpZihFPXJbQV0sbC5jbG9uZShsLlpFUk8sanIpLEUuY291bnQ+MCl7Zm9yKGQ9MDtkPEUuY291bnQ7ZCsrKWwuYWRkKGpyLGFbaFtFLmluZGV4T2Zmc2V0K2RdXSxqcik7bC5lcXVhbHNFcHNpbG9uKGwuWkVSTyxqcixMLkVQU0lMT04xMCkmJmwuY2xvbmUoYVtoW0UuaW5kZXhPZmZzZXRdXSxqcil9bC5lcXVhbHNFcHNpbG9uKGwuWkVSTyxqcixMLkVQU0lMT04xMCkmJihqci56PTEpLGwubm9ybWFsaXplKGpyLGpyKSxfW1JdPWpyLngsX1tSKzFdPWpyLnksX1tSKzJdPWpyLnp9cmV0dXJuIHQuYXR0cmlidXRlcy5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSx0fTtnc3Q9bmV3IGwsUVA9bmV3IGwsVHN0PW5ldyBsO1FvLmNvbXB1dGVUYW5nZW50QW5kQml0YW5nZW50PWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT10LmF0dHJpYnV0ZXMsaT10LmluZGljZXM7aWYoIW0oZS5wb3NpdGlvbil8fCFtKGUucG9zaXRpb24udmFsdWVzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0oZS5ub3JtYWwpfHwhbShlLm5vcm1hbC52YWx1ZXMpKXRocm93IG5ldyBZKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0oZS5zdCl8fCFtKGUuc3QudmFsdWVzKSl0aHJvdyBuZXcgWSgiZ2VvbWV0cnkuYXR0cmlidXRlcy5zdC52YWx1ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoImdlb21ldHJ5LmluZGljZXMgaXMgcmVxdWlyZWQuIik7aWYoaS5sZW5ndGg8Mnx8aS5sZW5ndGglMyE9PTApdGhyb3cgbmV3IFkoImdlb21ldHJ5LmluZGljZXMgbGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIGJlIGEgbXVsdGlwbGUgb2YgMy4iKTtpZih0LnByaW1pdGl2ZVR5cGUhPT1uZS5UUklBTkdMRVMpdGhyb3cgbmV3IFkoImdlb21ldHJ5LnByaW1pdGl2ZVR5cGUgbXVzdCBiZSBQcmltaXRpdmVUeXBlLlRSSUFOR0xFUy4iKTtsZXQgbj10LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLHM9dC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMsbz10LmF0dHJpYnV0ZXMuc3QudmFsdWVzLHI9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxhPWkubGVuZ3RoLGg9bmV3IEFycmF5KHIqMyksQTtmb3IoQT0wO0E8aC5sZW5ndGg7QSsrKWhbQV09MDtsZXQgZCxmLEU7Zm9yKEE9MDtBPGE7QSs9Myl7bGV0IEk9aVtBXSxDPWlbQSsxXSxOPWlbQSsyXTtkPUkqMyxmPUMqMyxFPU4qMztsZXQgVD1JKjIsYj1DKjIsRj1OKjIsQj1uW2RdLFU9bltkKzFdLFE9bltkKzJdLE09b1tUXSxrPW9bVCsxXSx5PW9bYisxXS1rLGM9b1tGKzFdLWssZz0xLygob1tiXS1NKSpjLShvW0ZdLU0pKnkpLE89KGMqKG5bZl0tQikteSoobltFXS1CKSkqZyxEPShjKihuW2YrMV0tVSkteSoobltFKzFdLVUpKSpnLHc9KGMqKG5bZisyXS1RKS15KihuW0UrMl0tUSkpKmc7aFtkXSs9TyxoW2QrMV0rPUQsaFtkKzJdKz13LGhbZl0rPU8saFtmKzFdKz1ELGhbZisyXSs9dyxoW0VdKz1PLGhbRSsxXSs9RCxoW0UrMl0rPXd9bGV0IF89bmV3IEZsb2F0MzJBcnJheShyKjMpLFI9bmV3IEZsb2F0MzJBcnJheShyKjMpO2ZvcihBPTA7QTxyO0ErKyl7ZD1BKjMsZj1kKzEsRT1kKzI7bGV0IEk9bC5mcm9tQXJyYXkocyxkLGdzdCksQz1sLmZyb21BcnJheShoLGQsVHN0KSxOPWwuZG90KEksQyk7bC5tdWx0aXBseUJ5U2NhbGFyKEksTixRUCksbC5ub3JtYWxpemUobC5zdWJ0cmFjdChDLFFQLEMpLEMpLF9bZF09Qy54LF9bZl09Qy55LF9bRV09Qy56LGwubm9ybWFsaXplKGwuY3Jvc3MoSSxDLEMpLEMpLFJbZF09Qy54LFJbZl09Qy55LFJbRV09Qy56fXJldHVybiB0LmF0dHJpYnV0ZXMudGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pLHQuYXR0cmlidXRlcy5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlJ9KSx0fTtpXz1uZXcgbnQsQmE9bmV3IGwsa1A9bmV3IGwsTFA9bmV3IGwsSkk9bmV3IG50O1FvLmNvbXByZXNzVmVydGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2xldCBlPXQuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uLGksbjtpZihtKGUpKXtsZXQgVT1lLnZhbHVlcztuPVUubGVuZ3RoLzM7bGV0IFE9bmV3IEZsb2F0MzJBcnJheShuKjIpLE09MDtmb3IoaT0wO2k8bjsrK2kpe2lmKGwuZnJvbUFycmF5KFUsaSozLEJhKSxsLmVxdWFscyhCYSxsLlpFUk8pKXtNKz0yO2NvbnRpbnVlfUpJPVlpLm9jdEVuY29kZUluUmFuZ2UoQmEsNjU1MzUsSkkpLFFbTSsrXT1KSS54LFFbTSsrXT1KSS55fXJldHVybiB0LmF0dHJpYnV0ZXMuY29tcHJlc3NlZEF0dHJpYnV0ZXM9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOlF9KSxkZWxldGUgdC5hdHRyaWJ1dGVzLmV4dHJ1ZGVEaXJlY3Rpb24sdH1sZXQgcz10LmF0dHJpYnV0ZXMubm9ybWFsLG89dC5hdHRyaWJ1dGVzLnN0LHI9bShzKSxhPW0obyk7aWYoIXImJiFhKXJldHVybiB0O2xldCBoPXQuYXR0cmlidXRlcy50YW5nZW50LEE9dC5hdHRyaWJ1dGVzLmJpdGFuZ2VudCxkPW0oaCksZj1tKEEpLEUsXyxSLEk7ciYmKEU9cy52YWx1ZXMpLGEmJihfPW8udmFsdWVzKSxkJiYoUj1oLnZhbHVlcyksZiYmKEk9QS52YWx1ZXMpLG49KHI/RS5sZW5ndGg6Xy5sZW5ndGgpLyhyPzM6Mik7bGV0IFQ9bixiPWEmJnI/MjoxO2IrPWR8fGY/MTowLFQqPWI7bGV0IEY9bmV3IEZsb2F0MzJBcnJheShUKSxCPTA7Zm9yKGk9MDtpPG47KytpKXthJiYobnQuZnJvbUFycmF5KF8saSoyLGlfKSxGW0IrK109WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoaV8pKTtsZXQgVT1pKjM7ciYmbShSKSYmbShJKT8obC5mcm9tQXJyYXkoRSxVLEJhKSxsLmZyb21BcnJheShSLFUsa1ApLGwuZnJvbUFycmF5KEksVSxMUCksWWkub2N0UGFjayhCYSxrUCxMUCxpXyksRltCKytdPWlfLngsRltCKytdPWlfLnkpOihyJiYobC5mcm9tQXJyYXkoRSxVLEJhKSxGW0IrK109WWkub2N0RW5jb2RlRmxvYXQoQmEpKSxkJiYobC5mcm9tQXJyYXkoUixVLEJhKSxGW0IrK109WWkub2N0RW5jb2RlRmxvYXQoQmEpKSxmJiYobC5mcm9tQXJyYXkoSSxVLEJhKSxGW0IrK109WWkub2N0RW5jb2RlRmxvYXQoQmEpKSl9cmV0dXJuIHQuYXR0cmlidXRlcy5jb21wcmVzc2VkQXR0cmlidXRlcz1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Yix2YWx1ZXM6Rn0pLHImJmRlbGV0ZSB0LmF0dHJpYnV0ZXMubm9ybWFsLGEmJmRlbGV0ZSB0LmF0dHJpYnV0ZXMuc3QsZiYmZGVsZXRlIHQuYXR0cmlidXRlcy5iaXRhbmdlbnQsZCYmZGVsZXRlIHQuYXR0cmlidXRlcy50YW5nZW50LHR9O3lQPW5ldyBsO3lsPW5ldyBsLHdsPW5ldyBsLHhsPW5ldyBsLFBsPW5ldyBsLEtOPXtwb3NpdGlvbnM6bmV3IEFycmF5KDcpLGluZGljZXM6bmV3IEFycmF5KDMqMyl9O1dzdD1lRihpZSw0KSx2ST1lRihsLDMpLHZQPWVGKG50LDIpLERzdD1mdW5jdGlvbih0LGUsaSxuLHMsbyxyKXtsZXQgYT1zW3RdKm4ueCxoPXNbZV0qbi55LEE9c1tpXSpuLno7b1tyXT1hK2grQT5MLkVQU0lMT042PzE6MH0sbl89bmV3IGwsWE49bmV3IGwscU49bmV3IGwsVXN0PW5ldyBsO1FzdD17cG9zaXRpb246ITAsbm9ybWFsOiEwLGJpdGFuZ2VudDohMCx0YW5nZW50OiEwLHN0OiEwLGV4dHJ1ZGVEaXJlY3Rpb246ITAsYXBwbHlPZmZzZXQ6ITB9O3pQPUtpLmZyb21Qb2ludE5vcm1hbChsLlpFUk8sbC5VTklUX1kpLGtzdD1uZXcgbCxMc3Q9bmV3IGw7SlA9bmV3IG50LHlzdD1uZXcgbnQsS1A9bmV3IGwsWFA9bmV3IGwsJE49bmV3IGwsd3N0PW5ldyBsLHhzdD1uZXcgbCxQc3Q9bmV3IGwsalA9bmV3IGllO0pzdD01KkwuRVBTSUxPTjksSEk9TC5FUFNJTE9ONjtRby5zcGxpdExvbmdpdHVkZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaW5zdGFuY2UgaXMgcmVxdWlyZWQuIik7bGV0IGU9dC5nZW9tZXRyeSxpPWUuYm91bmRpbmdTcGhlcmU7aWYobShpKSYmKGkuY2VudGVyLngtaS5yYWRpdXM+MHx8TnQuaW50ZXJzZWN0UGxhbmUoaSxLaS5PUklHSU5fWlhfUExBTkUpIT09Tm4uSU5URVJTRUNUSU5HKSlyZXR1cm4gdDtpZihlLmdlb21ldHJ5VHlwZSE9PUFoLk5PTkUpc3dpdGNoKGUuZ2VvbWV0cnlUeXBlKXtjYXNlIEFoLlBPTFlMSU5FUzpqc3QodCk7YnJlYWs7Y2FzZSBBaC5UUklBTkdMRVM6eFAodCk7YnJlYWs7Y2FzZSBBaC5MSU5FUzpQUCh0KTticmVha31lbHNlIE9zdChlKSxlLnByaW1pdGl2ZVR5cGU9PT1uZS5UUklBTkdMRVM/eFAodCk6ZS5wcmltaXRpdmVUeXBlPT09bmUuTElORVMmJlBQKHQpO3JldHVybiB0fTt3aT1Rb30pO2Z1bmN0aW9uIHNfKHQsZSxpKXt0PVoodCwwKSxlPVooZSwwKSxpPVooaSwwKSx0aGlzLnZhbHVlPW5ldyBGbG9hdDMyQXJyYXkoW3QsZSxpXSl9dmFyIHFQLCRQPVMoKCk9PnthZSgpO29pKCk7RnQoKTttdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNfLnByb3RvdHlwZSx7Y29tcG9uZW50RGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBBdC5GTE9BVH19LGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAzfX0sbm9ybWFsaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX19fSk7c18uZnJvbUNhcnRlc2lhbjM9ZnVuY3Rpb24odCl7cmV0dXJuIHAuZGVmaW5lZCgib2Zmc2V0Iix0KSxuZXcgc18odC54LHQueSx0LnopfTtzXy50b1ZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgib2Zmc2V0Iix0KSxtKGUpfHwoZT1uZXcgRmxvYXQzMkFycmF5KFt0LngsdC55LHQuel0pKSxlWzBdPXQueCxlWzFdPXQueSxlWzJdPXQueixlfTtxUD1zX30pO2Z1bmN0aW9uIEhzdCh0LGUsaSl7bGV0IG49IWkscz10Lmxlbmd0aCxvO2lmKCFuJiZzPjEpe2xldCByPXRbMF0ubW9kZWxNYXRyaXg7Zm9yKG89MTtvPHM7KytvKWlmKCFhdC5lcXVhbHMocix0W29dLm1vZGVsTWF0cml4KSl7bj0hMDticmVha319aWYobilmb3Iobz0wO288czsrK28pbSh0W29dLmdlb21ldHJ5KSYmd2kudHJhbnNmb3JtVG9Xb3JsZENvb3JkaW5hdGVzKHRbb10pO2Vsc2UgYXQubXVsdGlwbHlUcmFuc2Zvcm1hdGlvbihlLHRbMF0ubW9kZWxNYXRyaXgsZSl9ZnVuY3Rpb24gaUYodCxlKXtsZXQgaT10LmF0dHJpYnV0ZXMsbj1pLnBvc2l0aW9uLHM9bi52YWx1ZXMubGVuZ3RoL24uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtpLmJhdGNoSWQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOm5ldyBGbG9hdDMyQXJyYXkocyl9KTtsZXQgbz1pLmJhdGNoSWQudmFsdWVzO2ZvcihsZXQgcj0wO3I8czsrK3Ipb1tyXT1lfWZ1bmN0aW9uIHZzdCh0KXtsZXQgZT10Lmxlbmd0aDtmb3IobGV0IGk9MDtpPGU7KytpKXtsZXQgbj10W2ldO20obi5nZW9tZXRyeSk/aUYobi5nZW9tZXRyeSxpKTptKG4ud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm0obi5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmKGlGKG4ud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSxpKSxpRihuLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnksaSkpfX1mdW5jdGlvbiB6c3QodCl7bGV0IGU9dC5pbnN0YW5jZXMsaT10LnByb2plY3Rpb24sbj10LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQscz10LnNjZW5lM0RPbmx5LG89dC52ZXJ0ZXhDYWNoZU9wdGltaXplLHI9dC5jb21wcmVzc1ZlcnRpY2VzLGE9dC5tb2RlbE1hdHJpeCxoLEEsZCxmPWUubGVuZ3RoO2ZvcihoPTA7aDxmOysraClpZihtKGVbaF0uZ2VvbWV0cnkpKXtkPWVbaF0uZ2VvbWV0cnkucHJpbWl0aXZlVHlwZTticmVha31mb3IoaD0xO2g8ZjsrK2gpaWYobShlW2hdLmdlb21ldHJ5KSYmZVtoXS5nZW9tZXRyeS5wcmltaXRpdmVUeXBlIT09ZCl0aHJvdyBuZXcgWSgiQWxsIGluc3RhbmNlIGdlb21ldHJpZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHByaW1pdGl2ZVR5cGUuIik7aWYoSHN0KGUsYSxzKSwhcylmb3IoaD0wO2g8ZjsrK2gpbShlW2hdLmdlb21ldHJ5KSYmd2kuc3BsaXRMb25naXR1ZGUoZVtoXSk7aWYodnN0KGUpLG8pZm9yKGg9MDtoPGY7KytoKXtsZXQgXz1lW2hdO20oXy5nZW9tZXRyeSk/KHdpLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGUoXy5nZW9tZXRyeSksd2kucmVvcmRlckZvclByZVZlcnRleENhY2hlKF8uZ2VvbWV0cnkpKTptKF8ud2VzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm0oXy5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmKHdpLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGUoXy53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSx3aS5yZW9yZGVyRm9yUHJlVmVydGV4Q2FjaGUoXy53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSx3aS5yZW9yZGVyRm9yUG9zdFZlcnRleENhY2hlKF8uZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSksd2kucmVvcmRlckZvclByZVZlcnRleENhY2hlKF8uZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSkpfWxldCBFPXdpLmNvbWJpbmVJbnN0YW5jZXMoZSk7Zm9yKGY9RS5sZW5ndGgsaD0wO2g8ZjsrK2gpe0E9RVtoXTtsZXQgXz1BLmF0dHJpYnV0ZXM7aWYocylmb3IobGV0IFIgaW4gXylfLmhhc093blByb3BlcnR5KFIpJiZfW1JdLmNvbXBvbmVudERhdGF0eXBlPT09QXQuRE9VQkxFJiZ3aS5lbmNvZGVBdHRyaWJ1dGUoQSxSLGAke1J9M0RIaWdoYCxgJHtSfTNETG93YCk7ZWxzZSBmb3IobGV0IFIgaW4gXylpZihfLmhhc093blByb3BlcnR5KFIpJiZfW1JdLmNvbXBvbmVudERhdGF0eXBlPT09QXQuRE9VQkxFKXtsZXQgST1gJHtSfTNEYCxDPWAke1J9MkRgO3dpLnByb2plY3RUbzJEKEEsUixJLEMsaSksbShBLmJvdW5kaW5nU3BoZXJlKSYmUj09PSJwb3NpdGlvbiImJihBLmJvdW5kaW5nU3BoZXJlQ1Y9TnQuZnJvbVZlcnRpY2VzKEEuYXR0cmlidXRlcy5wb3NpdGlvbjJELnZhbHVlcykpLHdpLmVuY29kZUF0dHJpYnV0ZShBLEksYCR7SX1IaWdoYCxgJHtJfUxvd2ApLHdpLmVuY29kZUF0dHJpYnV0ZShBLEMsYCR7Q31IaWdoYCxgJHtDfUxvd2ApfXImJndpLmNvbXByZXNzVmVydGljZXMoQSl9aWYoIW4pe2xldCBfPVtdO2ZvcihmPUUubGVuZ3RoLGg9MDtoPGY7KytoKUE9RVtoXSxfPV8uY29uY2F0KHdpLmZpdFRvVW5zaWduZWRTaG9ydEluZGljZXMoQSkpO0U9X31yZXR1cm4gRX1mdW5jdGlvbiBuRih0LGUsaSxuKXtsZXQgcyxvLHIsYT1uLmxlbmd0aC0xO2lmKGE+PTApe2xldCBBPW5bYV07cz1BLm9mZnNldCtBLmNvdW50LHI9QS5pbmRleCxvPWlbcl0uaW5kaWNlcy5sZW5ndGh9ZWxzZSBzPTAscj0wLG89aVtyXS5pbmRpY2VzLmxlbmd0aDtsZXQgaD10Lmxlbmd0aDtmb3IobGV0IEE9MDtBPGg7KytBKXtsZXQgZj10W0FdW2VdO2lmKCFtKGYpKWNvbnRpbnVlO2xldCBFPWYuaW5kaWNlcy5sZW5ndGg7cytFPm8mJihzPTAsbz1pWysrcl0uaW5kaWNlcy5sZW5ndGgpLG4ucHVzaCh7aW5kZXg6cixvZmZzZXQ6cyxjb3VudDpFfSkscys9RX19ZnVuY3Rpb24gS3N0KHQsZSl7bGV0IGk9W107cmV0dXJuIG5GKHQsImdlb21ldHJ5IixlLGkpLG5GKHQsIndlc3RIZW1pc3BoZXJlR2VvbWV0cnkiLGUsaSksbkYodCwiZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSIsZSxpKSxpfWZ1bmN0aW9uIFhzdCh0LGUpe2xldCBpPXQuYXR0cmlidXRlcztmb3IobGV0IG4gaW4gaSlpZihpLmhhc093blByb3BlcnR5KG4pKXtsZXQgcz1pW25dO20ocykmJm0ocy52YWx1ZXMpJiZlLnB1c2gocy52YWx1ZXMuYnVmZmVyKX1tKHQuaW5kaWNlcykmJmUucHVzaCh0LmluZGljZXMuYnVmZmVyKX1mdW5jdGlvbiBxc3QodCxlKXtsZXQgaT10Lmxlbmd0aDtmb3IobGV0IG49MDtuPGk7KytuKVhzdCh0W25dLGUpfWZ1bmN0aW9uICRzdCh0KXtsZXQgZT0xLGk9dC5sZW5ndGg7Zm9yKGxldCBuPTA7bjxpO24rKyl7bGV0IHM9dFtuXTtpZigrK2UsIW0ocykpY29udGludWU7bGV0IG89cy5hdHRyaWJ1dGVzO2UrPTcrMipOdC5wYWNrZWRMZW5ndGgrKG0ocy5pbmRpY2VzKT9zLmluZGljZXMubGVuZ3RoOjApO2ZvcihsZXQgciBpbiBvKWlmKG8uaGFzT3duUHJvcGVydHkocikmJm0ob1tyXSkpe2xldCBhPW9bcl07ZSs9NSthLnZhbHVlcy5sZW5ndGh9fXJldHVybiBlfWZ1bmN0aW9uIHRvdCh0LGUpe2xldCBpPXQubGVuZ3RoLG49bmV3IEZsb2F0NjRBcnJheSgxK2kqMTkpLHM9MDtuW3MrK109aTtmb3IobGV0IG89MDtvPGk7bysrKXtsZXQgcj10W29dO2lmKGF0LnBhY2soci5tb2RlbE1hdHJpeCxuLHMpLHMrPWF0LnBhY2tlZExlbmd0aCxtKHIuYXR0cmlidXRlcykmJm0oci5hdHRyaWJ1dGVzLm9mZnNldCkpe2xldCBhPXIuYXR0cmlidXRlcy5vZmZzZXQudmFsdWU7bltzXT1hWzBdLG5bcysxXT1hWzFdLG5bcysyXT1hWzJdfXMrPTN9cmV0dXJuIGUucHVzaChuLmJ1ZmZlciksbn1mdW5jdGlvbiBlb3QodCl7bGV0IGU9dCxpPW5ldyBBcnJheShlWzBdKSxuPTAscz0xO2Zvcig7czxlLmxlbmd0aDspe2xldCBvPWF0LnVucGFjayhlLHMpLHI7cys9YXQucGFja2VkTGVuZ3RoLG0oZVtzXSkmJihyPXtvZmZzZXQ6bmV3IHFQKGVbc10sZVtzKzFdLGVbcysyXSl9KSxzKz0zLGlbbisrXT17bW9kZWxNYXRyaXg6byxhdHRyaWJ1dGVzOnJ9fXJldHVybiBpfWZ1bmN0aW9uIHRKKHQpe2xldCBlPXQubGVuZ3RoLGk9MSsoTnQucGFja2VkTGVuZ3RoKzEpKmUsbj1uZXcgRmxvYXQzMkFycmF5KGkpLHM9MDtuW3MrK109ZTtmb3IobGV0IG89MDtvPGU7KytvKXtsZXQgcj10W29dO20ocik/KG5bcysrXT0xLE50LnBhY2sodFtvXSxuLHMpKTpuW3MrK109MCxzKz1OdC5wYWNrZWRMZW5ndGh9cmV0dXJuIG59ZnVuY3Rpb24gZUoodCl7bGV0IGU9bmV3IEFycmF5KHRbMF0pLGk9MCxuPTE7Zm9yKDtuPHQubGVuZ3RoOyl0W24rK109PT0xJiYoZVtpXT1OdC51bnBhY2sodCxuKSksKytpLG4rPU50LnBhY2tlZExlbmd0aDtyZXR1cm4gZX12YXIgWmgsVEEsS0k9UygoKT0+e19pKCk7b2koKTtGdCgpO210KCk7T3QoKTtPZSgpO3pBKCk7eWkoKTtqaSgpO0VuKCk7Z0EoKTtEaSgpO2JpKCk7JFAoKTtNbCgpO1poPXt9O1poLmNvbWJpbmVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZSxpLG49dC5pbnN0YW5jZXMscz1uLmxlbmd0aCxvLHIsYT0hMTtzPjAmJihlPXpzdCh0KSxlLmxlbmd0aD4wJiYoaT13aS5jcmVhdGVBdHRyaWJ1dGVMb2NhdGlvbnMoZVswXSksdC5jcmVhdGVQaWNrT2Zmc2V0cyYmKG89S3N0KG4sZSkpKSxtKG5bMF0uYXR0cmlidXRlcykmJm0oblswXS5hdHRyaWJ1dGVzLm9mZnNldCkmJihyPW5ldyBBcnJheShzKSxhPSEwKSk7bGV0IGg9bmV3IEFycmF5KHMpLEE9bmV3IEFycmF5KHMpO2ZvcihsZXQgZD0wO2Q8czsrK2Qpe2xldCBmPW5bZF0sRT1mLmdlb21ldHJ5O20oRSkmJihoW2RdPUUuYm91bmRpbmdTcGhlcmUsQVtkXT1FLmJvdW5kaW5nU3BoZXJlQ1YsYSYmKHJbZF09Zi5nZW9tZXRyeS5vZmZzZXRBdHRyaWJ1dGUpKTtsZXQgXz1mLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnksUj1mLndlc3RIZW1pc3BoZXJlR2VvbWV0cnk7bShfKSYmbShSKSYmKG0oXy5ib3VuZGluZ1NwaGVyZSkmJm0oUi5ib3VuZGluZ1NwaGVyZSkmJihoW2RdPU50LnVuaW9uKF8uYm91bmRpbmdTcGhlcmUsUi5ib3VuZGluZ1NwaGVyZSkpLG0oXy5ib3VuZGluZ1NwaGVyZUNWKSYmbShSLmJvdW5kaW5nU3BoZXJlQ1YpJiYoQVtkXT1OdC51bmlvbihfLmJvdW5kaW5nU3BoZXJlQ1YsUi5ib3VuZGluZ1NwaGVyZUNWKSkpfXJldHVybntnZW9tZXRyaWVzOmUsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxhdHRyaWJ1dGVMb2NhdGlvbnM6aSxwaWNrT2Zmc2V0czpvLG9mZnNldEluc3RhbmNlRXh0ZW5kOnIsYm91bmRpbmdTcGhlcmVzOmgsYm91bmRpbmdTcGhlcmVzQ1Y6QX19O1poLnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtsZXQgaT1uZXcgRmxvYXQ2NEFycmF5KCRzdCh0KSksbj1bXSxzPXt9LG89dC5sZW5ndGgscj0wO2lbcisrXT1vO2ZvcihsZXQgYT0wO2E8bzthKyspe2xldCBoPXRbYV0sQT1tKGgpO2lmKGlbcisrXT1BPzE6MCwhQSljb250aW51ZTtpW3IrK109aC5wcmltaXRpdmVUeXBlLGlbcisrXT1oLmdlb21ldHJ5VHlwZSxpW3IrK109WihoLm9mZnNldEF0dHJpYnV0ZSwtMSk7bGV0IGQ9bShoLmJvdW5kaW5nU3BoZXJlKT8xOjA7aVtyKytdPWQsZCYmTnQucGFjayhoLmJvdW5kaW5nU3BoZXJlLGkscikscis9TnQucGFja2VkTGVuZ3RoO2xldCBmPW0oaC5ib3VuZGluZ1NwaGVyZUNWKT8xOjA7aVtyKytdPWYsZiYmTnQucGFjayhoLmJvdW5kaW5nU3BoZXJlQ1YsaSxyKSxyKz1OdC5wYWNrZWRMZW5ndGg7bGV0IEU9aC5hdHRyaWJ1dGVzLF89W107Zm9yKGxldCBJIGluIEUpRS5oYXNPd25Qcm9wZXJ0eShJKSYmbShFW0ldKSYmKF8ucHVzaChJKSxtKHNbSV0pfHwoc1tJXT1uLmxlbmd0aCxuLnB1c2goSSkpKTtpW3IrK109Xy5sZW5ndGg7Zm9yKGxldCBJPTA7STxfLmxlbmd0aDtJKyspe2xldCBDPV9bSV0sTj1FW0NdO2lbcisrXT1zW0NdLGlbcisrXT1OLmNvbXBvbmVudERhdGF0eXBlLGlbcisrXT1OLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsaVtyKytdPU4ubm9ybWFsaXplPzE6MCxpW3IrK109Ti52YWx1ZXMubGVuZ3RoLGkuc2V0KE4udmFsdWVzLHIpLHIrPU4udmFsdWVzLmxlbmd0aH1sZXQgUj1tKGguaW5kaWNlcyk/aC5pbmRpY2VzLmxlbmd0aDowO2lbcisrXT1SLFI+MCYmKGkuc2V0KGguaW5kaWNlcyxyKSxyKz1SKX1yZXR1cm4gZS5wdXNoKGkuYnVmZmVyKSx7c3RyaW5nVGFibGU6bixwYWNrZWREYXRhOml9fTtaaC51bnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCl7bGV0IGU9dC5zdHJpbmdUYWJsZSxpPXQucGFja2VkRGF0YSxuLHM9bmV3IEFycmF5KGlbMF0pLG89MCxyPTE7Zm9yKDtyPGkubGVuZ3RoOyl7aWYoIShpW3IrK109PT0xKSl7c1tvKytdPXZvaWQgMDtjb250aW51ZX1sZXQgaD1pW3IrK10sQT1pW3IrK10sZD1pW3IrK107ZD09PS0xJiYoZD12b2lkIDApO2xldCBmLEU7aVtyKytdPT09MSYmKGY9TnQudW5wYWNrKGkscikpLHIrPU50LnBhY2tlZExlbmd0aCxpW3IrK109PT0xJiYoRT1OdC51bnBhY2soaSxyKSkscis9TnQucGFja2VkTGVuZ3RoO2xldCBJLEMsTixUPW5ldyB3ZSxiPWlbcisrXTtmb3Iobj0wO248YjtuKyspe2xldCBCPWVbaVtyKytdXSxVPWlbcisrXTtOPWlbcisrXTtsZXQgUT1pW3IrK10hPT0wO0k9aVtyKytdLEM9QXQuY3JlYXRlVHlwZWRBcnJheShVLEkpO2ZvcihsZXQgTT0wO008STtNKyspQ1tNXT1pW3IrK107VFtCXT1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOlUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpOLG5vcm1hbGl6ZTpRLHZhbHVlczpDfSl9bGV0IEY7aWYoST1pW3IrK10sST4wKXtsZXQgQj1DLmxlbmd0aC9OO2ZvcihGPXRlLmNyZWF0ZVR5cGVkQXJyYXkoQixJKSxuPTA7bjxJO24rKylGW25dPWlbcisrXX1zW28rK109bmV3IHNlKHtwcmltaXRpdmVUeXBlOmgsZ2VvbWV0cnlUeXBlOkEsYm91bmRpbmdTcGhlcmU6Zixib3VuZGluZ1NwaGVyZUNWOkUsaW5kaWNlczpGLGF0dHJpYnV0ZXM6VCxvZmZzZXRBdHRyaWJ1dGU6ZH0pfXJldHVybiBzfTtaaC5wYWNrQ29tYmluZUdlb21ldHJ5UGFyYW1ldGVycz1mdW5jdGlvbih0LGUpe2xldCBpPXQuY3JlYXRlR2VvbWV0cnlSZXN1bHRzLG49aS5sZW5ndGg7Zm9yKGxldCBzPTA7czxuO3MrKyllLnB1c2goaVtzXS5wYWNrZWREYXRhLmJ1ZmZlcik7cmV0dXJue2NyZWF0ZUdlb21ldHJ5UmVzdWx0czp0LmNyZWF0ZUdlb21ldHJ5UmVzdWx0cyxwYWNrZWRJbnN0YW5jZXM6dG90KHQuaW5zdGFuY2VzLGUpLGVsbGlwc29pZDp0LmVsbGlwc29pZCxpc0dlb2dyYXBoaWM6dC5wcm9qZWN0aW9uIGluc3RhbmNlb2YgU3MsZWxlbWVudEluZGV4VWludFN1cHBvcnRlZDp0LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQsc2NlbmUzRE9ubHk6dC5zY2VuZTNET25seSx2ZXJ0ZXhDYWNoZU9wdGltaXplOnQudmVydGV4Q2FjaGVPcHRpbWl6ZSxjb21wcmVzc1ZlcnRpY2VzOnQuY29tcHJlc3NWZXJ0aWNlcyxtb2RlbE1hdHJpeDp0Lm1vZGVsTWF0cml4LGNyZWF0ZVBpY2tPZmZzZXRzOnQuY3JlYXRlUGlja09mZnNldHN9fTtaaC51bnBhY2tDb21iaW5lR2VvbWV0cnlQYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe2xldCBlPWVvdCh0LnBhY2tlZEluc3RhbmNlcyksaT10LmNyZWF0ZUdlb21ldHJ5UmVzdWx0cyxuPWkubGVuZ3RoLHM9MDtmb3IobGV0IGE9MDthPG47YSsrKXtsZXQgaD1aaC51bnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHMoaVthXSksQT1oLmxlbmd0aDtmb3IobGV0IGQ9MDtkPEE7ZCsrKXtsZXQgZj1oW2RdLEU9ZVtzXTtFLmdlb21ldHJ5PWYsKytzfX1sZXQgbz1vdC5jbG9uZSh0LmVsbGlwc29pZCkscj10LmlzR2VvZ3JhcGhpYz9uZXcgU3Mobyk6bmV3IGtzKG8pO3JldHVybntpbnN0YW5jZXM6ZSxlbGxpcHNvaWQ6byxwcm9qZWN0aW9uOnIsZWxlbWVudEluZGV4VWludFN1cHBvcnRlZDp0LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQsc2NlbmUzRE9ubHk6dC5zY2VuZTNET25seSx2ZXJ0ZXhDYWNoZU9wdGltaXplOnQudmVydGV4Q2FjaGVPcHRpbWl6ZSxjb21wcmVzc1ZlcnRpY2VzOnQuY29tcHJlc3NWZXJ0aWNlcyxtb2RlbE1hdHJpeDphdC5jbG9uZSh0Lm1vZGVsTWF0cml4KSxjcmVhdGVQaWNrT2Zmc2V0czp0LmNyZWF0ZVBpY2tPZmZzZXRzfX07WmgucGFja0NvbWJpbmVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXttKHQuZ2VvbWV0cmllcykmJnFzdCh0Lmdlb21ldHJpZXMsZSk7bGV0IGk9dEoodC5ib3VuZGluZ1NwaGVyZXMpLG49dEoodC5ib3VuZGluZ1NwaGVyZXNDVik7cmV0dXJuIGUucHVzaChpLmJ1ZmZlcixuLmJ1ZmZlcikse2dlb21ldHJpZXM6dC5nZW9tZXRyaWVzLGF0dHJpYnV0ZUxvY2F0aW9uczp0LmF0dHJpYnV0ZUxvY2F0aW9ucyxtb2RlbE1hdHJpeDp0Lm1vZGVsTWF0cml4LHBpY2tPZmZzZXRzOnQucGlja09mZnNldHMsb2Zmc2V0SW5zdGFuY2VFeHRlbmQ6dC5vZmZzZXRJbnN0YW5jZUV4dGVuZCxib3VuZGluZ1NwaGVyZXM6aSxib3VuZGluZ1NwaGVyZXNDVjpufX07WmgudW5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cz1mdW5jdGlvbih0KXtyZXR1cm57Z2VvbWV0cmllczp0Lmdlb21ldHJpZXMsYXR0cmlidXRlTG9jYXRpb25zOnQuYXR0cmlidXRlTG9jYXRpb25zLG1vZGVsTWF0cml4OnQubW9kZWxNYXRyaXgscGlja09mZnNldHM6dC5waWNrT2Zmc2V0cyxvZmZzZXRJbnN0YW5jZUV4dGVuZDp0Lm9mZnNldEluc3RhbmNlRXh0ZW5kLGJvdW5kaW5nU3BoZXJlczplSih0LmJvdW5kaW5nU3BoZXJlcyksYm91bmRpbmdTcGhlcmVzQ1Y6ZUoodC5ib3VuZGluZ1NwaGVyZXNDVil9fTtUQT1aaH0pO3ZhciBpb3QsSXMsaUo9UygoKT0+e2lvdD17UkVBRFk6MCxDUkVBVElORzoxLENSRUFURUQ6MixDT01CSU5JTkc6MyxDT01CSU5FRDo0LENPTVBMRVRFOjUsRkFJTEVEOjZ9LElzPU9iamVjdC5mcmVlemUoaW90KX0pO3ZhciBJcixYSSxuSj1TKCgpPT57SXI9e0RJU0FCTEVEOjAsRU5BQkxFRDoxLENBU1RfT05MWToyLFJFQ0VJVkVfT05MWTozfTtJci5OVU1CRVJfT0ZfU0hBRE9XX01PREVTPTQ7SXIuY2FzdFNoYWRvd3M9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1Jci5FTkFCTEVEfHx0PT09SXIuQ0FTVF9PTkxZfTtJci5yZWNlaXZlU2hhZG93cz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PUlyLkVOQUJMRUR8fHQ9PT1Jci5SRUNFSVZFX09OTFl9O0lyLmZyb21DYXN0UmVjZWl2ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0JiZlP0lyLkVOQUJMRUQ6dD9Jci5DQVNUX09OTFk6ZT9Jci5SRUNFSVZFX09OTFk6SXIuRElTQUJMRUR9O1hJPU9iamVjdC5mcmVlemUoSXIpfSk7ZnVuY3Rpb24gcW4odCl7aWYodD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXM9dC5nZW9tZXRyeUluc3RhbmNlcyx0aGlzLmFwcGVhcmFuY2U9dC5hcHBlYXJhbmNlLHRoaXMuX2FwcGVhcmFuY2U9dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLmRlcHRoRmFpbEFwcGVhcmFuY2U9dC5kZXB0aEZhaWxBcHBlYXJhbmNlLHRoaXMuX2RlcHRoRmFpbEFwcGVhcmFuY2U9dm9pZCAwLHRoaXMuX2RlcHRoRmFpbE1hdGVyaWFsPXZvaWQgMCx0aGlzLm1vZGVsTWF0cml4PWF0LmNsb25lKFoodC5tb2RlbE1hdHJpeCxhdC5JREVOVElUWSkpLHRoaXMuX21vZGVsTWF0cml4PW5ldyBhdCx0aGlzLnNob3c9Wih0LnNob3csITApLHRoaXMuX3ZlcnRleENhY2hlT3B0aW1pemU9Wih0LnZlcnRleENhY2hlT3B0aW1pemUsITEpLHRoaXMuX2ludGVybGVhdmU9Wih0LmludGVybGVhdmUsITEpLHRoaXMuX3JlbGVhc2VHZW9tZXRyeUluc3RhbmNlcz1aKHQucmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzLCEwKSx0aGlzLl9hbGxvd1BpY2tpbmc9Wih0LmFsbG93UGlja2luZywhMCksdGhpcy5fYXN5bmNocm9ub3VzPVoodC5hc3luY2hyb25vdXMsITApLHRoaXMuX2NvbXByZXNzVmVydGljZXM9Wih0LmNvbXByZXNzVmVydGljZXMsITApLHRoaXMuY3VsbD1aKHQuY3VsbCwhMCksdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT1aKHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsITEpLHRoaXMucnRjQ2VudGVyPXQucnRjQ2VudGVyLG0odGhpcy5ydGNDZW50ZXIpJiYoIW0odGhpcy5nZW9tZXRyeUluc3RhbmNlcyl8fEFycmF5LmlzQXJyYXkodGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJnRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMubGVuZ3RoIT09MSkpdGhyb3cgbmV3IFkoIlJlbGF0aXZlLXRvLWNlbnRlciByZW5kZXJpbmcgb25seSBzdXBwb3J0cyBvbmUgZ2VvbWV0cnkgaW5zdGFuY2UuIik7dGhpcy5zaGFkb3dzPVoodC5zaGFkb3dzLFhJLkRJU0FCTEVEKSx0aGlzLl90cmFuc2x1Y2VudD12b2lkIDAsdGhpcy5fc3RhdGU9SXMuUkVBRFksdGhpcy5fZ2VvbWV0cmllcz1bXSx0aGlzLl9lcnJvcj12b2lkIDAsdGhpcy5fbnVtYmVyT2ZJbnN0YW5jZXM9MCx0aGlzLl9ib3VuZGluZ1NwaGVyZXM9W10sdGhpcy5fYm91bmRpbmdTcGhlcmVXQz1bXSx0aGlzLl9ib3VuZGluZ1NwaGVyZUNWPVtdLHRoaXMuX2JvdW5kaW5nU3BoZXJlMkQ9W10sdGhpcy5fYm91bmRpbmdTcGhlcmVNb3JwaD1bXSx0aGlzLl9wZXJJbnN0YW5jZUF0dHJpYnV0ZUNhY2hlPW5ldyBNYXAsdGhpcy5faW5zdGFuY2VJZHM9W10sdGhpcy5fbGFzdFBlckluc3RhbmNlQXR0cmlidXRlSW5kZXg9MCx0aGlzLl92YT1bXSx0aGlzLl9hdHRyaWJ1dGVMb2NhdGlvbnM9dm9pZCAwLHRoaXMuX3ByaW1pdGl2ZVR5cGU9dm9pZCAwLHRoaXMuX2Zyb250RmFjZVJTPXZvaWQgMCx0aGlzLl9iYWNrRmFjZVJTPXZvaWQgMCx0aGlzLl9zcD12b2lkIDAsdGhpcy5fZGVwdGhGYWlsQXBwZWFyYW5jZT12b2lkIDAsdGhpcy5fc3BEZXB0aEZhaWw9dm9pZCAwLHRoaXMuX2Zyb250RmFjZURlcHRoRmFpbFJTPXZvaWQgMCx0aGlzLl9iYWNrRmFjZURlcHRoRmFpbFJTPXZvaWQgMCx0aGlzLl9waWNrSWRzPVtdLHRoaXMuX2NvbG9yQ29tbWFuZHM9W10sdGhpcy5fcGlja0NvbW1hbmRzPVtdLHRoaXMuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb249dC5fY3JlYXRlQm91bmRpbmdWb2x1bWVGdW5jdGlvbix0aGlzLl9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbj10Ll9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbix0aGlzLl9jcmVhdGVTaGFkZXJQcm9ncmFtRnVuY3Rpb249dC5fY3JlYXRlU2hhZGVyUHJvZ3JhbUZ1bmN0aW9uLHRoaXMuX2NyZWF0ZUNvbW1hbmRzRnVuY3Rpb249dC5fY3JlYXRlQ29tbWFuZHNGdW5jdGlvbix0aGlzLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249dC5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uLHRoaXMuX2NyZWF0ZVBpY2tPZmZzZXRzPXQuX2NyZWF0ZVBpY2tPZmZzZXRzLHRoaXMuX3BpY2tPZmZzZXRzPXZvaWQgMCx0aGlzLl9jcmVhdGVHZW9tZXRyeVJlc3VsdHM9dm9pZCAwLHRoaXMuX3JlYWR5PSExLHRoaXMuX2JhdGNoVGFibGU9dm9pZCAwLHRoaXMuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzPXZvaWQgMCx0aGlzLl9vZmZzZXRJbnN0YW5jZUV4dGVuZD12b2lkIDAsdGhpcy5fYmF0Y2hUYWJsZU9mZnNldEF0dHJpYnV0ZTJESW5kZXg9dm9pZCAwLHRoaXMuX2JhdGNoVGFibGVPZmZzZXRzVXBkYXRlZD0hMSx0aGlzLl9pbnN0YW5jZUJvdW5kaW5nU3BoZXJlcz12b2lkIDAsdGhpcy5faW5zdGFuY2VCb3VuZGluZ1NwaGVyZXNDVj12b2lkIDAsdGhpcy5fdGVtcEJvdW5kaW5nU3BoZXJlcz12b2lkIDAsdGhpcy5fcmVjb21wdXRlQm91bmRpbmdTcGhlcmVzPSExLHRoaXMuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZXNVcGRhdGVkPSExLHRoaXMuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZUF0dHJpYnV0ZUluZGljZXM9dm9pZCAwfWZ1bmN0aW9uIG5vdCh0KXtsZXQgZT10Lmxlbmd0aCxpPVtdLG49dFswXS5hdHRyaWJ1dGVzLHM7Zm9yKHMgaW4gbilpZihuLmhhc093blByb3BlcnR5KHMpJiZtKG5bc10pKXtsZXQgbz1uW3NdLHI9ITA7Zm9yKGxldCBhPTE7YTxlOysrYSl7bGV0IGg9dFthXS5hdHRyaWJ1dGVzW3NdO2lmKCFtKGgpfHxvLmNvbXBvbmVudERhdGF0eXBlIT09aC5jb21wb25lbnREYXRhdHlwZXx8by5jb21wb25lbnRzUGVyQXR0cmlidXRlIT09aC5jb21wb25lbnRzUGVyQXR0cmlidXRlfHxvLm5vcm1hbGl6ZSE9PWgubm9ybWFsaXplKXtyPSExO2JyZWFrfX1yJiZpLnB1c2gocyl9cmV0dXJuIGl9ZnVuY3Rpb24gbUoodCl7bGV0IGU9dC5sZW5ndGg7aWYoZT09PTEpcmV0dXJuIHRbMF07aWYoZT09PTIpcmV0dXJuIG50LnVucGFjayh0LDAsc290KTtpZihlPT09MylyZXR1cm4gbC51bnBhY2sodCwwLG9vdCk7aWYoZT09PTQpcmV0dXJuIGllLnVucGFjayh0LDAsZEopfWZ1bmN0aW9uIHJvdCh0LGUpe2xldCBpPXQuZ2VvbWV0cnlJbnN0YW5jZXMsbj1BcnJheS5pc0FycmF5KGkpP2k6W2ldLHM9bi5sZW5ndGg7aWYocz09PTApcmV0dXJuO2xldCBvPW5vdChuKSxyPW8ubGVuZ3RoLGE9W10saD17fSxBPXt9LGQsRT1uWzBdLmF0dHJpYnV0ZXMsXyxSLEk7Zm9yKF89MDtfPHI7KytfKVI9b1tfXSxJPUVbUl0saFtSXT1fLGEucHVzaCh7ZnVuY3Rpb25OYW1lOmBjem1fYmF0Y2hUYWJsZV8ke1J9YCxjb21wb25lbnREYXRhdHlwZTpJLmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6SS5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTpJLm5vcm1hbGl6ZX0pO28uaW5kZXhPZigiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIikhPT0tMSYmKGEucHVzaCh7ZnVuY3Rpb25OYW1lOiJjem1fYmF0Y2hUYWJsZV9ib3VuZGluZ1NwaGVyZUNlbnRlcjNESGlnaCIsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozfSx7ZnVuY3Rpb25OYW1lOiJjem1fYmF0Y2hUYWJsZV9ib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93Iixjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjN9LHtmdW5jdGlvbk5hbWU6ImN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyMkRIaWdoIixjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjN9LHtmdW5jdGlvbk5hbWU6ImN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3ciLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6M30se2Z1bmN0aW9uTmFtZToiY3ptX2JhdGNoVGFibGVfYm91bmRpbmdTcGhlcmVSYWRpdXMiLGNvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MX0pLEEuY2VudGVyM0RIaWdoPWEubGVuZ3RoLTUsQS5jZW50ZXIzRExvdz1hLmxlbmd0aC00LEEuY2VudGVyMkRIaWdoPWEubGVuZ3RoLTMsQS5jZW50ZXIyRExvdz1hLmxlbmd0aC0yLEEucmFkaXVzPWEubGVuZ3RoLTEpLG8uaW5kZXhPZigib2Zmc2V0IikhPT0tMSYmKGEucHVzaCh7ZnVuY3Rpb25OYW1lOiJjem1fYmF0Y2hUYWJsZV9vZmZzZXQyRCIsY29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozfSksZD1hLmxlbmd0aC0xKSxhLnB1c2goe2Z1bmN0aW9uTmFtZToiY3ptX2JhdGNoVGFibGVfcGlja0NvbG9yIixjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITB9KTtsZXQgQz1hLmxlbmd0aCxOPW5ldyBiUChlLGEscyk7Zm9yKF89MDtfPHM7KytfKXtsZXQgVD1uW19dO0U9VC5hdHRyaWJ1dGVzO2ZvcihsZXQgUT0wO1E8cjsrK1Epe1I9b1tRXSxJPUVbUl07bGV0IE09bUooSS52YWx1ZSksaz1oW1JdO04uc2V0QmF0Y2hlZEF0dHJpYnV0ZShfLGssTSl9bGV0IGI9e3ByaW1pdGl2ZTpaKFQucGlja1ByaW1pdGl2ZSx0KX07bShULmlkKSYmKGIuaWQ9VC5pZCk7bGV0IEY9ZS5jcmVhdGVQaWNrSWQoYik7dC5fcGlja0lkcy5wdXNoKEYpO2xldCBCPUYuY29sb3IsVT1kSjtVLng9WnQuZmxvYXRUb0J5dGUoQi5yZWQpLFUueT1adC5mbG9hdFRvQnl0ZShCLmdyZWVuKSxVLno9WnQuZmxvYXRUb0J5dGUoQi5ibHVlKSxVLnc9WnQuZmxvYXRUb0J5dGUoQi5hbHBoYSksTi5zZXRCYXRjaGVkQXR0cmlidXRlKF8sQy0xLFUpfXQuX2JhdGNoVGFibGU9Tix0Ll9iYXRjaFRhYmxlQXR0cmlidXRlSW5kaWNlcz1oLHQuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZUF0dHJpYnV0ZUluZGljZXM9QSx0Ll9iYXRjaFRhYmxlT2Zmc2V0QXR0cmlidXRlMkRJbmRleD1kfWZ1bmN0aW9uIGFvdCh0KXtsZXQgZTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0LnZhbHVlcyk/ZT10LnZhbHVlcy5zbGljZSgwKTplPW5ldyB0LnZhbHVlcy5jb25zdHJ1Y3Rvcih0LnZhbHVlcyksbmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTp0LmNvbXBvbmVudERhdGF0eXBlLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6dC5jb21wb25lbnRzUGVyQXR0cmlidXRlLG5vcm1hbGl6ZTp0Lm5vcm1hbGl6ZSx2YWx1ZXM6ZX0pfWZ1bmN0aW9uIEFvdCh0KXtsZXQgZT10LmF0dHJpYnV0ZXMsaT1uZXcgd2U7Zm9yKGxldCBzIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShzKSYmbShlW3NdKSYmKGlbc109YW90KGVbc10pKTtsZXQgbjtpZihtKHQuaW5kaWNlcykpe2xldCBzPXQuaW5kaWNlcztBcnJheS5pc0FycmF5KHMpP249cy5zbGljZSgwKTpuPW5ldyBzLmNvbnN0cnVjdG9yKHMpfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6aSxpbmRpY2VzOm4scHJpbWl0aXZlVHlwZTp0LnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6TnQuY2xvbmUodC5ib3VuZGluZ1NwaGVyZSl9KX1mdW5jdGlvbiBob3QodCxlKXtyZXR1cm57Z2VvbWV0cnk6ZSxhdHRyaWJ1dGVzOnQuYXR0cmlidXRlcyxtb2RlbE1hdHJpeDphdC5jbG9uZSh0Lm1vZGVsTWF0cml4KSxwaWNrUHJpbWl0aXZlOnQucGlja1ByaW1pdGl2ZSxpZDp0LmlkfX1mdW5jdGlvbiBzSih0KXtyZXR1cm5gJHtVaS5yZXBsYWNlTWFpbih0LCJjem1fbm9uX3BpY2tfbWFpbiIpfQpvdXQgdmVjNCB2X3BpY2tDb2xvcjsgCnZvaWQgbWFpbigpIAp7IAogICAgY3ptX25vbl9waWNrX21haW4oKTsgCiAgICB2X3BpY2tDb2xvciA9IGN6bV9iYXRjaFRhYmxlX3BpY2tDb2xvcihiYXRjaElkKTsgCn1gfWZ1bmN0aW9uIG9KKHQpe3JldHVybmBpbiB2ZWM0IHZfcGlja0NvbG9yOwoke3R9YH1mdW5jdGlvbiBySih0LGUpe2lmKCF0LmNvbXByZXNzVmVydGljZXMpcmV0dXJuIGU7bGV0IGk9ZS5zZWFyY2goL2luXHMrdmVjM1xzK25vcm1hbDsvZykhPT0tMSxuPWUuc2VhcmNoKC9pblxzK3ZlYzJccytzdDsvZykhPT0tMTtpZighaSYmIW4pcmV0dXJuIGU7bGV0IHM9ZS5zZWFyY2goL2luXHMrdmVjM1xzK3RhbmdlbnQ7L2cpIT09LTEsbz1lLnNlYXJjaCgvaW5ccyt2ZWMzXHMrYml0YW5nZW50Oy9nKSE9PS0xLHI9biYmaT8yOjE7cis9c3x8bz8xOjA7bGV0IGE9cj4xP2B2ZWMke3J9YDoiZmxvYXQiLGg9ImNvbXByZXNzZWRBdHRyaWJ1dGVzIixBPWBpbiAke2F9ICR7aH07YCxkPSIiLGY9IiI7aWYobil7ZCs9YHZlYzIgc3Q7CmA7bGV0IFI9cj4xP2Ake2h9LnhgOmg7Zis9YCAgICBzdCA9IGN6bV9kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKCR7Un0pOwpgfWkmJnMmJm8/KGQrPWB2ZWMzIG5vcm1hbDsKdmVjMyB0YW5nZW50Owp2ZWMzIGJpdGFuZ2VudDsKYCxmKz1gICAgIGN6bV9vY3REZWNvZGUoJHtofS4ke24/Inl6IjoieHkifSwgbm9ybWFsLCB0YW5nZW50LCBiaXRhbmdlbnQpOwpgKTooaSYmKGQrPWB2ZWMzIG5vcm1hbDsKYCxmKz1gICAgIG5vcm1hbCA9IGN6bV9vY3REZWNvZGUoJHtofSR7cj4xP2AuJHtuPyJ5IjoieCJ9YDoiIn0pOwpgKSxzJiYoZCs9YHZlYzMgdGFuZ2VudDsKYCxmKz1gICAgIHRhbmdlbnQgPSBjem1fb2N0RGVjb2RlKCR7aH0uJHtuJiZpPyJ6IjoieSJ9KTsKYCksbyYmKGQrPWB2ZWMzIGJpdGFuZ2VudDsKYCxmKz1gICAgIGJpdGFuZ2VudCA9IGN6bV9vY3REZWNvZGUoJHtofS4ke24mJmk/InoiOiJ5In0pOwpgKSk7bGV0IEU9ZTtFPUUucmVwbGFjZSgvaW5ccyt2ZWMzXHMrbm9ybWFsOy9nLCIiKSxFPUUucmVwbGFjZSgvaW5ccyt2ZWMyXHMrc3Q7L2csIiIpLEU9RS5yZXBsYWNlKC9pblxzK3ZlYzNccyt0YW5nZW50Oy9nLCIiKSxFPUUucmVwbGFjZSgvaW5ccyt2ZWMzXHMrYml0YW5nZW50Oy9nLCIiKSxFPVVpLnJlcGxhY2VNYWluKEUsImN6bV9ub25fY29tcHJlc3NlZF9tYWluIik7bGV0IF89YHZvaWQgbWFpbigpIAp7IAoke2Z9ICAgIGN6bV9ub25fY29tcHJlc3NlZF9tYWluKCk7IAp9YDtyZXR1cm5bQSxkLEUsX10uam9pbihgCmApfWZ1bmN0aW9uIGxvdCh0KXtsZXQgZT1VaS5yZXBsYWNlTWFpbih0LCJjem1fbm9uX2RlcHRoX2NsYW1wX21haW4iKTtyZXR1cm4gZSs9YHZvaWQgbWFpbigpIHsKICAgIGN6bV9ub25fZGVwdGhfY2xhbXBfbWFpbigpOwogICAgZ2xfUG9zaXRpb24gPSBjem1fZGVwdGhDbGFtcChnbF9Qb3NpdGlvbik7fQpgLGV9ZnVuY3Rpb24gZG90KHQpe2xldCBlPVVpLnJlcGxhY2VNYWluKHQsImN6bV9ub25fZGVwdGhfY2xhbXBfbWFpbiIpO3JldHVybiBlKz1gdm9pZCBtYWluKCkgewogICAgY3ptX25vbl9kZXB0aF9jbGFtcF9tYWluKCk7CiAgICAjaWYgZGVmaW5lZChMT0dfREVQVEgpCiAgICAgICAgY3ptX3dyaXRlTG9nRGVwdGgoKTsKICAgICNlbHNlCiAgICAgICAgY3ptX3dyaXRlRGVwdGhDbGFtcCgpOwogICAgI2VuZGlmCn0KYCxlfWZ1bmN0aW9uIGFKKHQsZSl7bGV0IGk9dC52ZXJ0ZXhBdHRyaWJ1dGVzO2ZvcihsZXQgbiBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkobikmJiFtKGVbbl0pKXRocm93IG5ldyBZKGBBcHBlYXJhbmNlL0dlb21ldHJ5IG1pc21hdGNoLiAgVGhlIGFwcGVhcmFuY2UgcmVxdWlyZXMgdmVydGV4IHNoYWRlciBhdHRyaWJ1dGUgaW5wdXQgJyR7bn0nLCB3aGljaCB3YXMgbm90IGNvbXB1dGVkIGFzIHBhcnQgb2YgdGhlIEdlb21ldHJ5LiAgVXNlIHRoZSBhcHBlYXJhbmNlJ3MgdmVydGV4Rm9ybWF0IHByb3BlcnR5IHdoZW4gY29uc3RydWN0aW5nIHRoZSBnZW9tZXRyeS5gKX1mdW5jdGlvbiBtb3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdFtlXX19ZnVuY3Rpb24gRW90KHQsZSl7bGV0IGksbixzLG8scj10Ll9pbnN0YW5jZUlkcztpZih0Ll9zdGF0ZT09PUlzLlJFQURZKXtpPUFycmF5LmlzQXJyYXkodC5nZW9tZXRyeUluc3RhbmNlcyk/dC5nZW9tZXRyeUluc3RhbmNlczpbdC5nZW9tZXRyeUluc3RhbmNlc107bGV0IGE9dC5fbnVtYmVyT2ZJbnN0YW5jZXM9aS5sZW5ndGgsaD1bXSxBPVtdO2ZvcihzPTA7czxhOysrcyl7aWYobj1pW3NdLmdlb21ldHJ5LHIucHVzaChpW3NdLmlkKSxtKG4uX3dvcmtlck5hbWUpJiZtKG4uX3dvcmtlclBhdGgpfHwhbShuLl93b3JrZXJOYW1lKSYmIW0obi5fd29ya2VyUGF0aCkpdGhyb3cgbmV3IFkoIk11c3QgZGVmaW5lIGVpdGhlciBfd29ya2VyTmFtZSBvciBfd29ya2VyUGF0aCBmb3IgYXN5bmNocm9ub3VzIGdlb21ldHJ5LiIpO0EucHVzaCh7bW9kdWxlTmFtZTpuLl93b3JrZXJOYW1lLG1vZHVsZVBhdGg6bi5fd29ya2VyUGF0aCxnZW9tZXRyeTpufSl9aWYoIW0ocUkpKWZvcihxST1uZXcgQXJyYXkoc0YpLHM9MDtzPHNGO3MrKylxSVtzXT1uZXcgWEUoImNyZWF0ZUdlb21ldHJ5Iik7bGV0IGQ7Zm9yKEE9Z1AoQSxzRikscz0wO3M8QS5sZW5ndGg7cysrKXtsZXQgZj0wLEU9QVtzXSxfPUUubGVuZ3RoO2ZvcihvPTA7bzxfOysrbylkPUVbb10sbj1kLmdlb21ldHJ5LG0obi5jb25zdHJ1Y3Rvci5wYWNrKSYmKGQub2Zmc2V0PWYsZis9WihuLmNvbnN0cnVjdG9yLnBhY2tlZExlbmd0aCxuLnBhY2tlZExlbmd0aCkpO2xldCBSO2lmKGY+MCl7bGV0IEk9bmV3IEZsb2F0NjRBcnJheShmKTtmb3IoUj1bSS5idWZmZXJdLG89MDtvPF87KytvKWQ9RVtvXSxuPWQuZ2VvbWV0cnksbShuLmNvbnN0cnVjdG9yLnBhY2spJiYobi5jb25zdHJ1Y3Rvci5wYWNrKG4sSSxkLm9mZnNldCksZC5nZW9tZXRyeT1JKX1oLnB1c2gocUlbc10uc2NoZWR1bGVUYXNrKHtzdWJUYXNrczpBW3NdfSxSKSl9dC5fc3RhdGU9SXMuQ1JFQVRJTkcsUHJvbWlzZS5hbGwoaCkudGhlbihmdW5jdGlvbihmKXt0Ll9jcmVhdGVHZW9tZXRyeVJlc3VsdHM9Zix0Ll9zdGF0ZT1Jcy5DUkVBVEVEfSkuY2F0Y2goZnVuY3Rpb24oZil7cl8odCxlLElzLkZBSUxFRCxmKX0pfWVsc2UgaWYodC5fc3RhdGU9PT1Jcy5DUkVBVEVEKXtsZXQgYT1bXTtpPUFycmF5LmlzQXJyYXkodC5nZW9tZXRyeUluc3RhbmNlcyk/dC5nZW9tZXRyeUluc3RhbmNlczpbdC5nZW9tZXRyeUluc3RhbmNlc107bGV0IGg9ZS5zY2VuZTNET25seSxBPWUubWFwUHJvamVjdGlvbixkPWZvdC5zY2hlZHVsZVRhc2soVEEucGFja0NvbWJpbmVHZW9tZXRyeVBhcmFtZXRlcnMoe2NyZWF0ZUdlb21ldHJ5UmVzdWx0czp0Ll9jcmVhdGVHZW9tZXRyeVJlc3VsdHMsaW5zdGFuY2VzOmksZWxsaXBzb2lkOkEuZWxsaXBzb2lkLHByb2plY3Rpb246QSxlbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkOmUuY29udGV4dC5lbGVtZW50SW5kZXhVaW50LHNjZW5lM0RPbmx5OmgsdmVydGV4Q2FjaGVPcHRpbWl6ZTp0LnZlcnRleENhY2hlT3B0aW1pemUsY29tcHJlc3NWZXJ0aWNlczp0LmNvbXByZXNzVmVydGljZXMsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxjcmVhdGVQaWNrT2Zmc2V0czp0Ll9jcmVhdGVQaWNrT2Zmc2V0c30sYSksYSk7dC5fY3JlYXRlR2VvbWV0cnlSZXN1bHRzPXZvaWQgMCx0Ll9zdGF0ZT1Jcy5DT01CSU5JTkcsUHJvbWlzZS5yZXNvbHZlKGQpLnRoZW4oZnVuY3Rpb24oZil7bGV0IEU9VEEudW5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cyhmKTt0Ll9nZW9tZXRyaWVzPUUuZ2VvbWV0cmllcyx0Ll9hdHRyaWJ1dGVMb2NhdGlvbnM9RS5hdHRyaWJ1dGVMb2NhdGlvbnMsdC5tb2RlbE1hdHJpeD1hdC5jbG9uZShFLm1vZGVsTWF0cml4LHQubW9kZWxNYXRyaXgpLHQuX3BpY2tPZmZzZXRzPUUucGlja09mZnNldHMsdC5fb2Zmc2V0SW5zdGFuY2VFeHRlbmQ9RS5vZmZzZXRJbnN0YW5jZUV4dGVuZCx0Ll9pbnN0YW5jZUJvdW5kaW5nU3BoZXJlcz1FLmJvdW5kaW5nU3BoZXJlcyx0Ll9pbnN0YW5jZUJvdW5kaW5nU3BoZXJlc0NWPUUuYm91bmRpbmdTcGhlcmVzQ1YsbSh0Ll9nZW9tZXRyaWVzKSYmdC5fZ2VvbWV0cmllcy5sZW5ndGg+MD8odC5fcmVjb21wdXRlQm91bmRpbmdTcGhlcmVzPSEwLHQuX3N0YXRlPUlzLkNPTUJJTkVEKTpyXyh0LGUsSXMuRkFJTEVELHZvaWQgMCl9KS5jYXRjaChmdW5jdGlvbihmKXtyXyh0LGUsSXMuRkFJTEVELGYpfSl9fWZ1bmN0aW9uIF9vdCh0LGUpe2xldCBpPUFycmF5LmlzQXJyYXkodC5nZW9tZXRyeUluc3RhbmNlcyk/dC5nZW9tZXRyeUluc3RhbmNlczpbdC5nZW9tZXRyeUluc3RhbmNlc10sbj10Ll9udW1iZXJPZkluc3RhbmNlcz1pLmxlbmd0aCxzPW5ldyBBcnJheShuKSxvPXQuX2luc3RhbmNlSWRzLHIsYSxoPTA7Zm9yKGE9MDthPG47YSsrKXtyPWlbYV07bGV0IEU9ci5nZW9tZXRyeSxfO20oRS5hdHRyaWJ1dGVzKSYmbShFLnByaW1pdGl2ZVR5cGUpP189QW90KEUpOl89RS5jb25zdHJ1Y3Rvci5jcmVhdGVHZW9tZXRyeShFKSxzW2grK109aG90KHIsXyksby5wdXNoKHIuaWQpfXMubGVuZ3RoPWg7bGV0IEE9ZS5zY2VuZTNET25seSxkPWUubWFwUHJvamVjdGlvbixmPVRBLmNvbWJpbmVHZW9tZXRyeSh7aW5zdGFuY2VzOnMsZWxsaXBzb2lkOmQuZWxsaXBzb2lkLHByb2plY3Rpb246ZCxlbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkOmUuY29udGV4dC5lbGVtZW50SW5kZXhVaW50LHNjZW5lM0RPbmx5OkEsdmVydGV4Q2FjaGVPcHRpbWl6ZTp0LnZlcnRleENhY2hlT3B0aW1pemUsY29tcHJlc3NWZXJ0aWNlczp0LmNvbXByZXNzVmVydGljZXMsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxjcmVhdGVQaWNrT2Zmc2V0czp0Ll9jcmVhdGVQaWNrT2Zmc2V0c30pO3QuX2dlb21ldHJpZXM9Zi5nZW9tZXRyaWVzLHQuX2F0dHJpYnV0ZUxvY2F0aW9ucz1mLmF0dHJpYnV0ZUxvY2F0aW9ucyx0Lm1vZGVsTWF0cml4PWF0LmNsb25lKGYubW9kZWxNYXRyaXgsdC5tb2RlbE1hdHJpeCksdC5fcGlja09mZnNldHM9Zi5waWNrT2Zmc2V0cyx0Ll9vZmZzZXRJbnN0YW5jZUV4dGVuZD1mLm9mZnNldEluc3RhbmNlRXh0ZW5kLHQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzPWYuYm91bmRpbmdTcGhlcmVzLHQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzQ1Y9Zi5ib3VuZGluZ1NwaGVyZXNDVixtKHQuX2dlb21ldHJpZXMpJiZ0Ll9nZW9tZXRyaWVzLmxlbmd0aD4wPyh0Ll9yZWNvbXB1dGVCb3VuZGluZ1NwaGVyZXM9ITAsdC5fc3RhdGU9SXMuQ09NQklORUQpOnJfKHQsZSxJcy5GQUlMRUQsdm9pZCAwKX1mdW5jdGlvbiBSb3QodCxlKXtsZXQgaT10Ll9iYXRjaFRhYmxlQXR0cmlidXRlSW5kaWNlcy5vZmZzZXQ7aWYoIXQuX3JlY29tcHV0ZUJvdW5kaW5nU3BoZXJlc3x8IW0oaSkpe3QuX3JlY29tcHV0ZUJvdW5kaW5nU3BoZXJlcz0hMTtyZXR1cm59bGV0IG4scz10Ll9vZmZzZXRJbnN0YW5jZUV4dGVuZCxvPXQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzLHI9by5sZW5ndGgsYT10Ll90ZW1wQm91bmRpbmdTcGhlcmVzO2lmKCFtKGEpKXtmb3IoYT1uZXcgQXJyYXkociksbj0wO248cjtuKyspYVtuXT1uZXcgTnQ7dC5fdGVtcEJvdW5kaW5nU3BoZXJlcz1hfWZvcihuPTA7bjxyOysrbil7bGV0IEk9YVtuXSxDPXQuX2JhdGNoVGFibGUuZ2V0QmF0Y2hlZEF0dHJpYnV0ZShuLGksbmV3IGwpO0k9b1tuXS5jbG9uZShJKSxSSihJLEMsc1tuXSl9bGV0IGg9W10sQT1bXSxkPVtdO2ZvcihuPTA7bjxyOysrbil7bGV0IEk9YVtuXTtJLmNlbnRlci54LUkucmFkaXVzPjB8fE50LmludGVyc2VjdFBsYW5lKEksS2kuT1JJR0lOX1pYX1BMQU5FKSE9PU5uLklOVEVSU0VDVElORz9oLnB1c2goSSk6KEEucHVzaChJKSxkLnB1c2goSSkpfWxldCBmPWhbMF0sRT1kWzBdLF89QVswXTtmb3Iobj0xO248aC5sZW5ndGg7bisrKWY9TnQudW5pb24oZixoW25dKTtmb3Iobj0xO248ZC5sZW5ndGg7bisrKUU9TnQudW5pb24oRSxkW25dKTtmb3Iobj0xO248QS5sZW5ndGg7bisrKV89TnQudW5pb24oXyxBW25dKTtsZXQgUj1bXTtmb3IobShmKSYmUi5wdXNoKGYpLG0oRSkmJlIucHVzaChFKSxtKF8pJiZSLnB1c2goXyksbj0wO248Ui5sZW5ndGg7bisrKXtsZXQgST1SW25dLmNsb25lKHQuX2JvdW5kaW5nU3BoZXJlc1tuXSk7dC5fYm91bmRpbmdTcGhlcmVzW25dPUksdC5fYm91bmRpbmdTcGhlcmVDVltuXT1OdC5wcm9qZWN0VG8yRChJLGUubWFwUHJvamVjdGlvbix0Ll9ib3VuZGluZ1NwaGVyZUNWW25dKX1xbi5fdXBkYXRlQm91bmRpbmdWb2x1bWVzKHQsZSx0Lm1vZGVsTWF0cml4LCEwKSx0Ll9yZWNvbXB1dGVCb3VuZGluZ1NwaGVyZXM9ITF9ZnVuY3Rpb24gWm90KHQsZSl7aWYoIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKXx8dC5fYmF0Y2hUYWJsZUJvdW5kaW5nU3BoZXJlc1VwZGF0ZWQpcmV0dXJuO2xldCBuPXQuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZUF0dHJpYnV0ZUluZGljZXMscz1uLmNlbnRlcjNESGlnaCxvPW4uY2VudGVyM0RMb3cscj1uLmNlbnRlcjJESGlnaCxhPW4uY2VudGVyMkRMb3csaD1uLnJhZGl1cyxBPWUubWFwUHJvamVjdGlvbixkPUEuZWxsaXBzb2lkLGY9dC5fYmF0Y2hUYWJsZSxFPXQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzLF89RS5sZW5ndGg7Zm9yKGxldCBSPTA7UjxfOysrUil7bGV0IEk9RVtSXTtpZighbShJKSljb250aW51ZTtsZXQgQz10Lm1vZGVsTWF0cml4O20oQykmJihJPU50LnRyYW5zZm9ybShJLEMsX0opKTtsZXQgTj1JLmNlbnRlcixUPUkucmFkaXVzLGI9R24uZnJvbUNhcnRlc2lhbihOLEFKKTtpZihmLnNldEJhdGNoZWRBdHRyaWJ1dGUoUixzLGIuaGlnaCksZi5zZXRCYXRjaGVkQXR0cmlidXRlKFIsbyxiLmxvdyksIWUuc2NlbmUzRE9ubHkpe2xldCBGPWQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoTixmSiksQj1BLnByb2plY3QoRixFSik7Yj1Hbi5mcm9tQ2FydGVzaWFuKEIsQUopLGYuc2V0QmF0Y2hlZEF0dHJpYnV0ZShSLHIsYi5oaWdoKSxmLnNldEJhdGNoZWRBdHRyaWJ1dGUoUixhLGIubG93KX1mLnNldEJhdGNoZWRBdHRyaWJ1dGUoUixoLFQpfXQuX2JhdGNoVGFibGVCb3VuZGluZ1NwaGVyZXNVcGRhdGVkPSEwfWZ1bmN0aW9uIGhKKHQsZSl7aWYoIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMub2Zmc2V0KXx8dC5fYmF0Y2hUYWJsZU9mZnNldHNVcGRhdGVkfHxlLnNjZW5lM0RPbmx5KXJldHVybjtsZXQgbj10Ll9iYXRjaFRhYmxlT2Zmc2V0QXR0cmlidXRlMkRJbmRleCxzPWUubWFwUHJvamVjdGlvbixvPXMuZWxsaXBzb2lkLHI9dC5fYmF0Y2hUYWJsZSxhPXQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzLGg9YS5sZW5ndGg7Zm9yKGxldCBBPTA7QTxoOysrQSl7bGV0IGQ9YVtBXTtpZighbShkKSljb250aW51ZTtsZXQgZj1yLmdldEJhdGNoZWRBdHRyaWJ1dGUoQSx0Ll9iYXRjaFRhYmxlQXR0cmlidXRlSW5kaWNlcy5vZmZzZXQpO2lmKGwuZXF1YWxzKGYsbC5aRVJPKSl7ci5zZXRCYXRjaGVkQXR0cmlidXRlKEEsbixsLlpFUk8pO2NvbnRpbnVlfWxldCBFPXQubW9kZWxNYXRyaXg7bShFKSYmKGQ9TnQudHJhbnNmb3JtKGQsRSxfSikpO2xldCBfPWQuY2VudGVyO189by5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKF8sSW90KTtsZXQgUj1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKF8sZkopLEk9cy5wcm9qZWN0KFIsRUopLEM9bC5hZGQoZixfLG9GKTtSPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoQyxSKTtsZXQgTj1zLnByb2plY3QoUixvRiksVD1sLnN1YnRyYWN0KE4sSSxvRiksYj1ULng7VC54PVQueixULno9VC55LFQueT1iLHIuc2V0QmF0Y2hlZEF0dHJpYnV0ZShBLG4sVCl9dC5fYmF0Y2hUYWJsZU9mZnNldHNVcGRhdGVkPSEwfWZ1bmN0aW9uIHBvdCh0LGUpe2xldCBpPXQuX2F0dHJpYnV0ZUxvY2F0aW9ucyxuPXQuX2dlb21ldHJpZXMscz1lLnNjZW5lM0RPbmx5LG89ZS5jb250ZXh0LHI9W10sYT1uLmxlbmd0aDtmb3IobGV0IGg9MDtoPGE7KytoKXtsZXQgQT1uW2hdO2lmKHIucHVzaChtSS5mcm9tR2VvbWV0cnkoe2NvbnRleHQ6byxnZW9tZXRyeTpBLGF0dHJpYnV0ZUxvY2F0aW9uczppLGJ1ZmZlclVzYWdlOmFpLlNUQVRJQ19EUkFXLGludGVybGVhdmU6dC5faW50ZXJsZWF2ZX0pKSxtKHQuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb24pKXQuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb24oZSxBKTtlbHNlIGlmKHQuX2JvdW5kaW5nU3BoZXJlcy5wdXNoKE50LmNsb25lKEEuYm91bmRpbmdTcGhlcmUpKSx0Ll9ib3VuZGluZ1NwaGVyZVdDLnB1c2gobmV3IE50KSwhcyl7bGV0IGQ9QS5ib3VuZGluZ1NwaGVyZUNWLmNlbnRlcixmPWQueCxFPWQueSxfPWQuejtkLng9XyxkLnk9ZixkLno9RSx0Ll9ib3VuZGluZ1NwaGVyZUNWLnB1c2goTnQuY2xvbmUoQS5ib3VuZGluZ1NwaGVyZUNWKSksdC5fYm91bmRpbmdTcGhlcmUyRC5wdXNoKG5ldyBOdCksdC5fYm91bmRpbmdTcGhlcmVNb3JwaC5wdXNoKG5ldyBOdCl9fXQuX3ZhPXIsdC5fcHJpbWl0aXZlVHlwZT1uWzBdLnByaW1pdGl2ZVR5cGUsdC5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMmJih0Lmdlb21ldHJ5SW5zdGFuY2VzPXZvaWQgMCksdC5fZ2VvbWV0cmllcz12b2lkIDAscl8odCxlLElzLkNPTVBMRVRFLHZvaWQgMCl9ZnVuY3Rpb24gdW90KHQsZSxpLG4pe2xldCBzPWkuZ2V0UmVuZGVyU3RhdGUoKSxvO24/KG89cXMocywhMSksby5jdWxsPXtlbmFibGVkOiEwLGZhY2U6RWguQkFDS30sdC5fZnJvbnRGYWNlUlM9WW4uZnJvbUNhY2hlKG8pLG8uY3VsbC5mYWNlPUVoLkZST05ULHQuX2JhY2tGYWNlUlM9WW4uZnJvbUNhY2hlKG8pKToodC5fZnJvbnRGYWNlUlM9WW4uZnJvbUNhY2hlKHMpLHQuX2JhY2tGYWNlUlM9dC5fZnJvbnRGYWNlUlMpLG89cXMocywhMSksbSh0Ll9kZXB0aEZhaWxBcHBlYXJhbmNlKSYmKG8uZGVwdGhUZXN0LmVuYWJsZWQ9ITEpLG0odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSkmJihzPXQuX2RlcHRoRmFpbEFwcGVhcmFuY2UuZ2V0UmVuZGVyU3RhdGUoKSxvPXFzKHMsITEpLG8uZGVwdGhUZXN0LmZ1bmM9d0kuR1JFQVRFUixuPyhvLmN1bGw9e2VuYWJsZWQ6ITAsZmFjZTpFaC5CQUNLfSx0Ll9mcm9udEZhY2VEZXB0aEZhaWxSUz1Zbi5mcm9tQ2FjaGUobyksby5jdWxsLmZhY2U9RWguRlJPTlQsdC5fYmFja0ZhY2VEZXB0aEZhaWxSUz1Zbi5mcm9tQ2FjaGUobykpOih0Ll9mcm9udEZhY2VEZXB0aEZhaWxSUz1Zbi5mcm9tQ2FjaGUobyksdC5fYmFja0ZhY2VEZXB0aEZhaWxSUz10Ll9mcm9udEZhY2VSUykpfWZ1bmN0aW9uIENvdCh0LGUsaSl7bGV0IG49ZS5jb250ZXh0LHM9dC5fYXR0cmlidXRlTG9jYXRpb25zLG89dC5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKGkudmVydGV4U2hhZGVyU291cmNlKTtvPXFuLl9hcHBlbmRPZmZzZXRUb1NoYWRlcih0LG8pLG89cW4uX2FwcGVuZFNob3dUb1NoYWRlcih0LG8pLG89cW4uX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKHQsbyxlLnNjZW5lM0RPbmx5KSxvPXNKKG8pLG89cW4uX3VwZGF0ZUNvbG9yQXR0cmlidXRlKHQsbywhMSksbz1ySih0LG8pLG89cW4uX21vZGlmeVNoYWRlclBvc2l0aW9uKHQsbyxlLnNjZW5lM0RPbmx5KTtsZXQgcj1pLmdldEZyYWdtZW50U2hhZGVyU291cmNlKCk7cj1vSihyKSx0Ll9zcD1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6bixzaGFkZXJQcm9ncmFtOnQuX3NwLHZlcnRleFNoYWRlclNvdXJjZTpvLGZyYWdtZW50U2hhZGVyU291cmNlOnIsYXR0cmlidXRlTG9jYXRpb25zOnN9KSxhSih0Ll9zcCxzKSxtKHQuX2RlcHRoRmFpbEFwcGVhcmFuY2UpJiYobz10Ll9iYXRjaFRhYmxlLmdldFZlcnRleFNoYWRlckNhbGxiYWNrKCkodC5fZGVwdGhGYWlsQXBwZWFyYW5jZS52ZXJ0ZXhTaGFkZXJTb3VyY2UpLG89cW4uX2FwcGVuZFNob3dUb1NoYWRlcih0LG8pLG89cW4uX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKHQsbyxlLnNjZW5lM0RPbmx5KSxvPXNKKG8pLG89cW4uX3VwZGF0ZUNvbG9yQXR0cmlidXRlKHQsbywhMCksbz1ySih0LG8pLG89cW4uX21vZGlmeVNoYWRlclBvc2l0aW9uKHQsbyxlLnNjZW5lM0RPbmx5KSxvPWxvdChvKSxyPXQuX2RlcHRoRmFpbEFwcGVhcmFuY2UuZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSxyPW9KKHIpLHI9ZG90KHIpLHQuX3NwRGVwdGhGYWlsPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dC5fc3BEZXB0aEZhaWwsdmVydGV4U2hhZGVyU291cmNlOm8sZnJhZ21lbnRTaGFkZXJTb3VyY2U6cixhdHRyaWJ1dGVMb2NhdGlvbnM6c30pLGFKKHQuX3NwRGVwdGhGYWlsLHMpKX1mdW5jdGlvbiBsSih0LGUsaSxuKXtsZXQgcz1tKGkpP2kuX3VuaWZvcm1zOnZvaWQgMCxvPXt9LHI9ZS51bmlmb3JtcztpZihtKHIpKXtmb3IobGV0IGggaW4gcilpZihyLmhhc093blByb3BlcnR5KGgpKXtpZihtKHMpJiZtKHNbaF0pKXRocm93IG5ldyBZKGBBcHBlYXJhbmNlIGFuZCBtYXRlcmlhbCBoYXZlIGEgdW5pZm9ybSB3aXRoIHRoZSBzYW1lIG5hbWU6ICR7aH1gKTtvW2hdPW1vdChyLGgpfX1sZXQgYT1lcyhvLHMpO3JldHVybiBhPXQuX2JhdGNoVGFibGUuZ2V0VW5pZm9ybU1hcENhbGxiYWNrKCkoYSksbSh0LnJ0Y0NlbnRlcikmJihhLnVfbW9kaWZpZWRNb2RlbFZpZXc9ZnVuY3Rpb24oKXtsZXQgaD1uLmNvbnRleHQudW5pZm9ybVN0YXRlLnZpZXc7cmV0dXJuIGF0Lm11bHRpcGx5KGgsdC5fbW9kZWxNYXRyaXgsb18pLGF0Lm11bHRpcGx5QnlQb2ludChvXyx0LnJ0Y0NlbnRlcixjSiksYXQuc2V0VHJhbnNsYXRpb24ob18sY0osb18pLG9ffSksYX1mdW5jdGlvbiBnb3QodCxlLGksbixzLG8scixhKXtsZXQgaD1sSih0LGUsaSxhKSxBO20odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSkmJihBPWxKKHQsdC5fZGVwdGhGYWlsQXBwZWFyYW5jZSx0Ll9kZXB0aEZhaWxBcHBlYXJhbmNlLm1hdGVyaWFsLGEpKTtsZXQgZD1uP29zLlRSQU5TTFVDRU5UOm9zLk9QQVFVRSxmPXM/MjoxO2YqPW0odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSk/MjoxLG8ubGVuZ3RoPXQuX3ZhLmxlbmd0aCpmO2xldCBFPW8ubGVuZ3RoLF89MDtmb3IobGV0IFI9MDtSPEU7KytSKXtsZXQgSTtzJiYoST1vW1JdLG0oSSl8fChJPW9bUl09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6dC5fcHJpbWl0aXZlVHlwZX0pKSxJLnZlcnRleEFycmF5PXQuX3ZhW19dLEkucmVuZGVyU3RhdGU9dC5fYmFja0ZhY2VSUyxJLnNoYWRlclByb2dyYW09dC5fc3AsSS51bmlmb3JtTWFwPWgsSS5wYXNzPWQsKytSKSxJPW9bUl0sbShJKXx8KEk9b1tSXT1uZXcgZm4oe293bmVyOnQscHJpbWl0aXZlVHlwZTp0Ll9wcmltaXRpdmVUeXBlfSkpLEkudmVydGV4QXJyYXk9dC5fdmFbX10sSS5yZW5kZXJTdGF0ZT10Ll9mcm9udEZhY2VSUyxJLnNoYWRlclByb2dyYW09dC5fc3AsSS51bmlmb3JtTWFwPWgsSS5wYXNzPWQsbSh0Ll9kZXB0aEZhaWxBcHBlYXJhbmNlKSYmKHMmJigrK1IsST1vW1JdLG0oSSl8fChJPW9bUl09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6dC5fcHJpbWl0aXZlVHlwZX0pKSxJLnZlcnRleEFycmF5PXQuX3ZhW19dLEkucmVuZGVyU3RhdGU9dC5fYmFja0ZhY2VEZXB0aEZhaWxSUyxJLnNoYWRlclByb2dyYW09dC5fc3BEZXB0aEZhaWwsSS51bmlmb3JtTWFwPUEsSS5wYXNzPWQpLCsrUixJPW9bUl0sbShJKXx8KEk9b1tSXT1uZXcgZm4oe293bmVyOnQscHJpbWl0aXZlVHlwZTp0Ll9wcmltaXRpdmVUeXBlfSkpLEkudmVydGV4QXJyYXk9dC5fdmFbX10sSS5yZW5kZXJTdGF0ZT10Ll9mcm9udEZhY2VEZXB0aEZhaWxSUyxJLnNoYWRlclByb2dyYW09dC5fc3BEZXB0aEZhaWwsSS51bmlmb3JtTWFwPUEsSS5wYXNzPWQpLCsrX319ZnVuY3Rpb24gVG90KHQsZSxpLG4scyxvLHIsYSl7aWYoZS5tb2RlIT09eWUuU0NFTkUzRCYmIWF0LmVxdWFscyhzLGF0LklERU5USVRZKSl0aHJvdyBuZXcgWSgiUHJpbWl0aXZlLm1vZGVsTWF0cml4IGlzIG9ubHkgc3VwcG9ydGVkIGluIDNEIG1vZGUuIik7cW4uX3VwZGF0ZUJvdW5kaW5nVm9sdW1lcyh0LGUscyk7bGV0IGg7ZS5tb2RlPT09eWUuU0NFTkUzRD9oPXQuX2JvdW5kaW5nU3BoZXJlV0M6ZS5tb2RlPT09eWUuQ09MVU1CVVNfVklFVz9oPXQuX2JvdW5kaW5nU3BoZXJlQ1Y6ZS5tb2RlPT09eWUuU0NFTkUyRCYmbSh0Ll9ib3VuZGluZ1NwaGVyZTJEKT9oPXQuX2JvdW5kaW5nU3BoZXJlMkQ6bSh0Ll9ib3VuZGluZ1NwaGVyZU1vcnBoKSYmKGg9dC5fYm91bmRpbmdTcGhlcmVNb3JwaCk7bGV0IEE9ZS5jb21tYW5kTGlzdCxkPWUucGFzc2VzO2lmKGQucmVuZGVyfHxkLnBpY2spe2xldCBmPXQuYWxsb3dQaWNraW5nLEU9WEkuY2FzdFNoYWRvd3ModC5zaGFkb3dzKSxfPVhJLnJlY2VpdmVTaGFkb3dzKHQuc2hhZG93cyksUj1pLmxlbmd0aCxJPWE/MjoxO0kqPW0odC5fZGVwdGhGYWlsQXBwZWFyYW5jZSk/MjoxO2ZvcihsZXQgQz0wO0M8UjsrK0Mpe2xldCBOPU1hdGguZmxvb3IoQy9JKSxUPWlbQ107VC5tb2RlbE1hdHJpeD1zLFQuYm91bmRpbmdWb2x1bWU9aFtOXSxULmN1bGw9byxULmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXIsVC5jYXN0U2hhZG93cz1FLFQucmVjZWl2ZVNoYWRvd3M9XyxmP1QucGlja0lkPSJ2X3BpY2tDb2xvciI6VC5waWNrSWQ9dm9pZCAwLEEucHVzaChUKX19fWZ1bmN0aW9uIFJKKHQsZSxpKXtpZihpPT09UGUuVE9QKXtsZXQgbj1OdC5jbG9uZSh0LE5vdCkscz1OdC5jbG9uZSh0LEZvdCk7cy5jZW50ZXI9bC5hZGQocy5jZW50ZXIsZSxzLmNlbnRlciksdD1OdC51bmlvbihuLHMsdCl9ZWxzZSBpPT09UGUuQUxMJiYodC5jZW50ZXI9bC5hZGQodC5jZW50ZXIsZSx0LmNlbnRlcikpO3JldHVybiB0fWZ1bmN0aW9uIGJvdCh0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IG49dC5nZXRCYXRjaGVkQXR0cmlidXRlKGUsaSkscz10LmF0dHJpYnV0ZXNbaV0sbz1zLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUscj1BdC5jcmVhdGVUeXBlZEFycmF5KHMuY29tcG9uZW50RGF0YXR5cGUsbyk7cmV0dXJuIG0obi5jb25zdHJ1Y3Rvci5wYWNrKT9uLmNvbnN0cnVjdG9yLnBhY2sobixyLDApOnJbMF09bixyfX1mdW5jdGlvbiBZb3QodCxlLGksbixzKXtyZXR1cm4gZnVuY3Rpb24obyl7aWYoIW0obyl8fCFtKG8ubGVuZ3RoKXx8by5sZW5ndGg8MXx8by5sZW5ndGg+NCl0aHJvdyBuZXcgWSgidmFsdWUgbXVzdCBiZSBhbmQgYXJyYXkgd2l0aCBsZW5ndGggYmV0d2VlbiAxIGFuZCA0LiIpO2xldCByPW1KKG8pO3Quc2V0QmF0Y2hlZEF0dHJpYnV0ZShlLGkscikscz09PSJvZmZzZXQiJiYobi5fcmVjb21wdXRlQm91bmRpbmdTcGhlcmVzPSEwLG4uX2JhdGNoVGFibGVPZmZzZXRzVXBkYXRlZD0hMSl9fWZ1bmN0aW9uIFNvdCh0LGUsaSl7ZS5ib3VuZGluZ1NwaGVyZT17Z2V0OmZ1bmN0aW9uKCl7bGV0IG49dC5faW5zdGFuY2VCb3VuZGluZ1NwaGVyZXNbaV07aWYobShuKSl7bj1uLmNsb25lKCk7bGV0IHM9dC5tb2RlbE1hdHJpeCxvPWUub2Zmc2V0O20obykmJlJKKG4sbC5mcm9tQXJyYXkoby5nZXQoKSwwLFZvdCksdC5fb2Zmc2V0SW5zdGFuY2VFeHRlbmRbaV0pLG0ocykmJihuPU50LnRyYW5zZm9ybShuLHMpKX1yZXR1cm4gbn19LGUuYm91bmRpbmdTcGhlcmVDVj17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuX2luc3RhbmNlQm91bmRpbmdTcGhlcmVzQ1ZbaV19fX1mdW5jdGlvbiBPb3QodCxlLGkpe2UucGlja0lkPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5fcGlja0lkc1tpXX19fWZ1bmN0aW9uIHJfKHQsZSxpLG4pe3QuX2Vycm9yPW4sdC5fc3RhdGU9aSxlLmFmdGVyUmVuZGVyLnB1c2goZnVuY3Rpb24oKXt0Ll9yZWFkeT10Ll9zdGF0ZT09PUlzLkNPTVBMRVRFfHx0Ll9zdGF0ZT09PUlzLkZBSUxFRH0pfXZhciBzb3Qsb290LGRKLGNvdCxzRixxSSxmb3QsQUosZkosRUosX0osb0YsSW90LG9fLGNKLE5vdCxGb3QsVm90LHZzLHJGPVMoKCk9PntfaSgpO1hlKCk7SHQoKTtPcygpO3JpKCk7YUUoKTtRbigpO0tBKCk7b2koKTtGdCgpO210KCk7V3MoKTtPdCgpO1RsKCk7SWwoKTt5aSgpO2ppKCk7RW4oKTtnbygpO25jKCk7YmkoKTtuaCgpO1BzKCk7VFAoKTtrTigpO05sKCk7Z2EoKTtHbSgpO1dtKCk7VW0oKTtRbSgpO2JsKCk7T1QoKTtZUCgpO01JKCk7UE4oKTtLSSgpO2lKKCk7dWEoKTtuSigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHFuLnByb3RvdHlwZSx7dmVydGV4Q2FjaGVPcHRpbWl6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleENhY2hlT3B0aW1pemV9fSxpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW50ZXJsZWF2ZX19LHJlbGVhc2VHZW9tZXRyeUluc3RhbmNlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbGVhc2VHZW9tZXRyeUluc3RhbmNlc319LGFsbG93UGlja2luZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FzeW5jaHJvbm91c319LGNvbXByZXNzVmVydGljZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wcmVzc1ZlcnRpY2VzfX0scmVhZHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkeX19fSk7c290PW5ldyBudCxvb3Q9bmV3IGwsZEo9bmV3IGllO2NvdD0vaW5ccyt2ZWMoPzozfDQpXHMrKC4qKTNESGlnaDsvZztxbi5fbW9kaWZ5U2hhZGVyUG9zaXRpb249ZnVuY3Rpb24odCxlLGkpe2xldCBuLHM9IiIsbz0iIixyPSIiO2Zvcig7KG49Y290LmV4ZWMoZSkpIT09bnVsbDspe2xldCBhPW5bMV0saD1gdmVjNCBjem1fY29tcHV0ZSR7YVswXS50b1VwcGVyQ2FzZSgpfSR7YS5zdWJzdHIoMSl9KClgO2ghPT0idmVjNCBjem1fY29tcHV0ZVBvc2l0aW9uKCkiJiYocys9YCR7aH07CmApLG0odC5ydGNDZW50ZXIpPyhlPWUucmVwbGFjZSgvaW5ccyt2ZWMoPzozfDQpXHMrcG9zaXRpb24zREhpZ2g7L2csIiIpLGU9ZS5yZXBsYWNlKC9pblxzK3ZlYyg/OjN8NClccytwb3NpdGlvbjNETG93Oy9nLCIiKSxzKz1gdW5pZm9ybSBtYXQ0IHVfbW9kaWZpZWRNb2RlbFZpZXc7CmAsbys9YGluIHZlYzQgcG9zaXRpb247CmAscis9YCR7aH0KewogICAgcmV0dXJuIHVfbW9kaWZpZWRNb2RlbFZpZXcgKiBwb3NpdGlvbjsKfQoKYCxlPWUucmVwbGFjZSgvY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWVccytcKlxzKy9nLCIiKSxlPWUucmVwbGFjZSgvY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllL2csImN6bV9wcm9qZWN0aW9uIikpOmk/cis9YCR7aH0KewogICAgcmV0dXJuIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKCR7YX0zREhpZ2gsICR7YX0zRExvdyk7Cn0KCmA6KG8rPWBpbiB2ZWMzICR7YX0yREhpZ2g7CmluIHZlYzMgJHthfTJETG93OwpgLHIrPWAke2h9CnsKICAgIHZlYzQgcDsKICAgIGlmIChjem1fbW9ycGhUaW1lID09IDEuMCkKICAgIHsKICAgICAgICBwID0gY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUoJHthfTNESGlnaCwgJHthfTNETG93KTsKICAgIH0KICAgIGVsc2UgaWYgKGN6bV9tb3JwaFRpbWUgPT0gMC4wKQogICAgewogICAgICAgIHAgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZSgke2F9MkRIaWdoLnp4eSwgJHthfTJETG93Lnp4eSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcCA9IGN6bV9jb2x1bWJ1c1ZpZXdNb3JwaCgKICAgICAgICAgICAgICAgIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKCR7YX0yREhpZ2guenh5LCAke2F9MkRMb3cuenh5KSwKICAgICAgICAgICAgICAgIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKCR7YX0zREhpZ2gsICR7YX0zRExvdyksCiAgICAgICAgICAgICAgICBjem1fbW9ycGhUaW1lKTsKICAgIH0KICAgIHJldHVybiBwOwp9CgpgKX1yZXR1cm5bcyxvLGUscl0uam9pbihgCmApfTtxbi5fYXBwZW5kU2hvd1RvU2hhZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuc2hvdyk/YCR7VWkucmVwbGFjZU1haW4oZSwiY3ptX25vbl9zaG93X21haW4iKX0Kdm9pZCBtYWluKCkgCnsgCiAgICBjem1fbm9uX3Nob3dfbWFpbigpOyAKICAgIGdsX1Bvc2l0aW9uICo9IGN6bV9iYXRjaFRhYmxlX3Nob3coYmF0Y2hJZCk7IAp9YDplfTtxbi5fdXBkYXRlQ29sb3JBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzLmNvbG9yKSYmIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuZGVwdGhGYWlsQ29sb3IpfHxlLnNlYXJjaCgvaW5ccyt2ZWM0XHMrY29sb3I7L2cpPT09LTEpcmV0dXJuIGU7aWYoaSYmIW0odC5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXMuZGVwdGhGYWlsQ29sb3IpKXRocm93IG5ldyBZKCJBIGRlcHRoRmFpbENvbG9yIHBlci1pbnN0YW5jZSBhdHRyaWJ1dGUgaXMgcmVxdWlyZWQgd2hlbiB1c2luZyBhIGRlcHRoIGZhaWwgYXBwZWFyYW5jZSB0aGF0IHVzZXMgYSBjb2xvciBhdHRyaWJ1dGUuIik7bGV0IG49ZTtyZXR1cm4gbj1uLnJlcGxhY2UoL2luXHMrdmVjNFxzK2NvbG9yOy9nLCIiKSxpP249bi5yZXBsYWNlKC8oXGIpY29sb3IoXGIpL2csIiQxY3ptX2JhdGNoVGFibGVfZGVwdGhGYWlsQ29sb3IoYmF0Y2hJZCkkMiIpOm49bi5yZXBsYWNlKC8oXGIpY29sb3IoXGIpL2csIiQxY3ptX2JhdGNoVGFibGVfY29sb3IoYmF0Y2hJZCkkMiIpLG59O3FuLl91cGRhdGVQaWNrQ29sb3JBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7bGV0IGU9dC5yZXBsYWNlKC9pblxzK3ZlYzRccytwaWNrQ29sb3I7L2csIiIpO3JldHVybiBlPWUucmVwbGFjZSgvKFxiKXBpY2tDb2xvcihcYikvZywiJDFjem1fYmF0Y2hUYWJsZV9waWNrQ29sb3IoYmF0Y2hJZCkkMiIpLGV9O3FuLl9hcHBlbmRPZmZzZXRUb1NoYWRlcj1mdW5jdGlvbih0LGUpe2lmKCFtKHQuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzLm9mZnNldCkpcmV0dXJuIGU7bGV0IGk9YGluIGZsb2F0IGJhdGNoSWQ7CmA7aSs9ImluIGZsb2F0IGFwcGx5T2Zmc2V0OyI7bGV0IG49ZS5yZXBsYWNlKC9pblxzK2Zsb2F0XHMrYmF0Y2hJZDsvZyxpKSxzPWB2ZWM0ICQxID0gY3ptX2NvbXB1dGVQb3NpdGlvbigpOwpgO3JldHVybiBzKz1gICAgIGlmIChjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUzRCkKYCxzKz1gICAgIHsKYCxzKz0iICAgICAgICAkMSA9ICQxICsgdmVjNChjem1fYmF0Y2hUYWJsZV9vZmZzZXQoYmF0Y2hJZCkgKiBhcHBseU9mZnNldCwgMC4wKTsiLHMrPWAgICAgfQpgLHMrPWAgICAgZWxzZQpgLHMrPWAgICAgewpgLHMrPSIgICAgICAgICQxID0gJDEgKyB2ZWM0KGN6bV9iYXRjaFRhYmxlX29mZnNldDJEKGJhdGNoSWQpICogYXBwbHlPZmZzZXQsIDAuMCk7IixzKz1gICAgIH0KYCxuPW4ucmVwbGFjZSgvdmVjNFxzKyhbQS1aYS16MC05X10rKVxzKz1ccytjem1fY29tcHV0ZVBvc2l0aW9uXChcKTsvZyxzKSxufTtxbi5fYXBwZW5kRGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uVG9TaGFkZXI9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQuX2JhdGNoVGFibGVBdHRyaWJ1dGVJbmRpY2VzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbikpcmV0dXJuIGU7bGV0IG49VWkucmVwbGFjZU1haW4oZSwiY3ptX25vbl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25fbWFpbiIpLHM9YHZvaWQgbWFpbigpIAp7IAogICAgY3ptX25vbl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25fbWFpbigpOyAKICAgIHZlYzIgZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uID0gY3ptX2JhdGNoVGFibGVfZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKGJhdGNoSWQpOwogICAgdmVjMyBib3VuZGluZ1NwaGVyZUNlbnRlcjNESGlnaCA9IGN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyM0RIaWdoKGJhdGNoSWQpOwogICAgdmVjMyBib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93ID0gY3ptX2JhdGNoVGFibGVfYm91bmRpbmdTcGhlcmVDZW50ZXIzRExvdyhiYXRjaElkKTsKICAgIGZsb2F0IGJvdW5kaW5nU3BoZXJlUmFkaXVzID0gY3ptX2JhdGNoVGFibGVfYm91bmRpbmdTcGhlcmVSYWRpdXMoYmF0Y2hJZCk7CmA7cmV0dXJuIGk/cys9YCAgICB2ZWM0IGNlbnRlclJURSA9IGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKGJvdW5kaW5nU3BoZXJlQ2VudGVyM0RIaWdoLCBib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93KTsKYDpzKz1gICAgIHZlYzMgYm91bmRpbmdTcGhlcmVDZW50ZXIyREhpZ2ggPSBjem1fYmF0Y2hUYWJsZV9ib3VuZGluZ1NwaGVyZUNlbnRlcjJESGlnaChiYXRjaElkKTsKICAgIHZlYzMgYm91bmRpbmdTcGhlcmVDZW50ZXIyRExvdyA9IGN6bV9iYXRjaFRhYmxlX2JvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3coYmF0Y2hJZCk7CiAgICB2ZWM0IGNlbnRlclJURTsKICAgIGlmIChjem1fbW9ycGhUaW1lID09IDEuMCkKICAgIHsKICAgICAgICBjZW50ZXJSVEUgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShib3VuZGluZ1NwaGVyZUNlbnRlcjNESGlnaCwgYm91bmRpbmdTcGhlcmVDZW50ZXIzRExvdyk7CiAgICB9CiAgICBlbHNlIGlmIChjem1fbW9ycGhUaW1lID09IDAuMCkKICAgIHsKICAgICAgICBjZW50ZXJSVEUgPSBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShib3VuZGluZ1NwaGVyZUNlbnRlcjJESGlnaC56eHksIGJvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3cuenh5KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBjZW50ZXJSVEUgPSBjem1fY29sdW1idXNWaWV3TW9ycGgoCiAgICAgICAgICAgICAgICBjem1fdHJhbnNsYXRlUmVsYXRpdmVUb0V5ZShib3VuZGluZ1NwaGVyZUNlbnRlcjJESGlnaC56eHksIGJvdW5kaW5nU3BoZXJlQ2VudGVyMkRMb3cuenh5KSwKICAgICAgICAgICAgICAgIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKGJvdW5kaW5nU3BoZXJlQ2VudGVyM0RIaWdoLCBib3VuZGluZ1NwaGVyZUNlbnRlcjNETG93KSwKICAgICAgICAgICAgICAgIGN6bV9tb3JwaFRpbWUpOwogICAgfQpgLHMrPWAgICAgZmxvYXQgcmFkaXVzU3EgPSBib3VuZGluZ1NwaGVyZVJhZGl1cyAqIGJvdW5kaW5nU3BoZXJlUmFkaXVzOyAKICAgIGZsb2F0IGRpc3RhbmNlU3E7IAogICAgaWYgKGN6bV9zY2VuZU1vZGUgPT0gY3ptX3NjZW5lTW9kZTJEKSAKICAgIHsgCiAgICAgICAgZGlzdGFuY2VTcSA9IGN6bV9leWVIZWlnaHQyRC55IC0gcmFkaXVzU3E7IAogICAgfSAKICAgIGVsc2UgCiAgICB7IAogICAgICAgIGRpc3RhbmNlU3EgPSBkb3QoY2VudGVyUlRFLnh5eiwgY2VudGVyUlRFLnh5eikgLSByYWRpdXNTcTsgCiAgICB9IAogICAgZGlzdGFuY2VTcSA9IG1heChkaXN0YW5jZVNxLCAwLjApOyAKICAgIGZsb2F0IG5lYXJTcSA9IGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbi54ICogZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLng7IAogICAgZmxvYXQgZmFyU3EgPSBkaXN0YW5jZURpc3BsYXlDb25kaXRpb24ueSAqIGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbi55OyAKICAgIGZsb2F0IHNob3cgPSAoZGlzdGFuY2VTcSA+PSBuZWFyU3EgJiYgZGlzdGFuY2VTcSA8PSBmYXJTcSkgPyAxLjAgOiAwLjA7IAogICAgZ2xfUG9zaXRpb24gKj0gc2hvdzsgCn1gLGAke259CiR7c31gfTtzRj1NYXRoLm1heChfby5oYXJkd2FyZUNvbmN1cnJlbmN5LTEsMSksZm90PW5ldyBYRSgiY29tYmluZUdlb21ldHJ5Iik7QUo9bmV3IEduLGZKPW5ldyB1dCxFSj1uZXcgbCxfSj1uZXcgTnQ7b0Y9bmV3IGwsSW90PW5ldyBsO29fPW5ldyBhdCxjSj1uZXcgbDtxbi5fdXBkYXRlQm91bmRpbmdWb2x1bWVzPWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzLG8scjtpZihufHwhYXQuZXF1YWxzKGksdC5fbW9kZWxNYXRyaXgpKWZvcihhdC5jbG9uZShpLHQuX21vZGVsTWF0cml4KSxvPXQuX2JvdW5kaW5nU3BoZXJlcy5sZW5ndGgscz0wO3M8bzsrK3Mpcj10Ll9ib3VuZGluZ1NwaGVyZXNbc10sbShyKSYmKHQuX2JvdW5kaW5nU3BoZXJlV0Nbc109TnQudHJhbnNmb3JtKHIsaSx0Ll9ib3VuZGluZ1NwaGVyZVdDW3NdKSxlLnNjZW5lM0RPbmx5fHwodC5fYm91bmRpbmdTcGhlcmUyRFtzXT1OdC5jbG9uZSh0Ll9ib3VuZGluZ1NwaGVyZUNWW3NdLHQuX2JvdW5kaW5nU3BoZXJlMkRbc10pLHQuX2JvdW5kaW5nU3BoZXJlMkRbc10uY2VudGVyLng9MCx0Ll9ib3VuZGluZ1NwaGVyZU1vcnBoW3NdPU50LnVuaW9uKHQuX2JvdW5kaW5nU3BoZXJlV0Nbc10sdC5fYm91bmRpbmdTcGhlcmVDVltzXSkpKTtsZXQgYT10LmFwcGVhcmFuY2UucGl4ZWxTaXplO2lmKG0oYSkpZm9yKG89dC5fYm91bmRpbmdTcGhlcmVzLmxlbmd0aCxzPTA7czxvOysrcyl7cj10Ll9ib3VuZGluZ1NwaGVyZXNbc107bGV0IGg9dC5fYm91bmRpbmdTcGhlcmVXQ1tzXSxkPWUuY2FtZXJhLmdldFBpeGVsU2l6ZShyLGUuY29udGV4dC5kcmF3aW5nQnVmZmVyV2lkdGgsZS5jb250ZXh0LmRyYXdpbmdCdWZmZXJIZWlnaHQpKmE7aC5yYWRpdXM9ci5yYWRpdXMrZH19O3FuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7aWYoIW0odGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJnRoaXMuX3ZhLmxlbmd0aD09PTB8fG0odGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJkFycmF5LmlzQXJyYXkodGhpcy5nZW9tZXRyeUluc3RhbmNlcykmJnRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMubGVuZ3RoPT09MHx8IW0odGhpcy5hcHBlYXJhbmNlKXx8dC5tb2RlIT09eWUuU0NFTkUzRCYmdC5zY2VuZTNET25seXx8IXQucGFzc2VzLnJlbmRlciYmIXQucGFzc2VzLnBpY2spcmV0dXJuO2lmKG0odGhpcy5fZXJyb3IpKXRocm93IHRoaXMuX2Vycm9yO2lmKG0odGhpcy5ydGNDZW50ZXIpJiYhdC5zY2VuZTNET25seSl0aHJvdyBuZXcgWSgiUlRDIHJlbmRlcmluZyBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgM0Qgb25seSBzY2VuZXMuIik7aWYodGhpcy5fc3RhdGU9PT1Jcy5GQUlMRUQpcmV0dXJuO2xldCBlPXQuY29udGV4dDtpZihtKHRoaXMuX2JhdGNoVGFibGUpfHxyb3QodGhpcyxlKSx0aGlzLl9iYXRjaFRhYmxlLmF0dHJpYnV0ZXMubGVuZ3RoPjApe2lmKGVuLm1heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cz09PTApdGhyb3cgbmV3IGtlKCJWZXJ0ZXggdGV4dHVyZSBmZXRjaCBzdXBwb3J0IGlzIHJlcXVpcmVkIHRvIHJlbmRlciBwcmltaXRpdmVzIHdpdGggcGVyLWluc3RhbmNlIGF0dHJpYnV0ZXMuIFRoZSBtYXhpbXVtIG51bWJlciBvZiB2ZXJ0ZXggdGV4dHVyZSBpbWFnZSB1bml0cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO3RoaXMuX2JhdGNoVGFibGUudXBkYXRlKHQpfWlmKHRoaXMuX3N0YXRlIT09SXMuQ09NUExFVEUmJnRoaXMuX3N0YXRlIT09SXMuQ09NQklORUQmJih0aGlzLmFzeW5jaHJvbm91cz9Fb3QodGhpcyx0KTpfb3QodGhpcyx0KSksdGhpcy5fc3RhdGU9PT1Jcy5DT01CSU5FRCYmKFpvdCh0aGlzLHQpLGhKKHRoaXMsdCkscG90KHRoaXMsdCkpLCF0aGlzLnNob3d8fHRoaXMuX3N0YXRlIT09SXMuQ09NUExFVEUpcmV0dXJuO3RoaXMuX2JhdGNoVGFibGVPZmZzZXRzVXBkYXRlZHx8aEoodGhpcyx0KSx0aGlzLl9yZWNvbXB1dGVCb3VuZGluZ1NwaGVyZXMmJlJvdCh0aGlzLHQpO2xldCBpPXRoaXMuYXBwZWFyYW5jZSxuPWkubWF0ZXJpYWwscz0hMSxvPSExO3RoaXMuX2FwcGVhcmFuY2UhPT1pPyh0aGlzLl9hcHBlYXJhbmNlPWksdGhpcy5fbWF0ZXJpYWw9bixzPSEwLG89ITApOnRoaXMuX21hdGVyaWFsIT09biYmKHRoaXMuX21hdGVyaWFsPW4sbz0hMCk7bGV0IHI9dGhpcy5kZXB0aEZhaWxBcHBlYXJhbmNlLGE9bShyKT9yLm1hdGVyaWFsOnZvaWQgMDt0aGlzLl9kZXB0aEZhaWxBcHBlYXJhbmNlIT09cj8odGhpcy5fZGVwdGhGYWlsQXBwZWFyYW5jZT1yLHRoaXMuX2RlcHRoRmFpbE1hdGVyaWFsPWEscz0hMCxvPSEwKTp0aGlzLl9kZXB0aEZhaWxNYXRlcmlhbCE9PWEmJih0aGlzLl9kZXB0aEZhaWxNYXRlcmlhbD1hLG89ITApO2xldCBoPXRoaXMuX2FwcGVhcmFuY2UuaXNUcmFuc2x1Y2VudCgpO3RoaXMuX3RyYW5zbHVjZW50IT09aCYmKHRoaXMuX3RyYW5zbHVjZW50PWgscz0hMCksbSh0aGlzLl9tYXRlcmlhbCkmJnRoaXMuX21hdGVyaWFsLnVwZGF0ZShlKTtsZXQgQT1pLmNsb3NlZCYmaDtzJiZaKHRoaXMuX2NyZWF0ZVJlbmRlclN0YXRlc0Z1bmN0aW9uLHVvdCkodGhpcyxlLGksQSksbyYmWih0aGlzLl9jcmVhdGVTaGFkZXJQcm9ncmFtRnVuY3Rpb24sQ290KSh0aGlzLHQsaSksKHN8fG8pJiZaKHRoaXMuX2NyZWF0ZUNvbW1hbmRzRnVuY3Rpb24sZ290KSh0aGlzLGksbixoLEEsdGhpcy5fY29sb3JDb21tYW5kcyx0aGlzLl9waWNrQ29tbWFuZHMsdCksWih0aGlzLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb24sVG90KSh0aGlzLHQsdGhpcy5fY29sb3JDb21tYW5kcyx0aGlzLl9waWNrQ29tbWFuZHMsdGhpcy5tb2RlbE1hdHJpeCx0aGlzLmN1bGwsdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSxBKX07Tm90PW5ldyBOdCxGb3Q9bmV3IE50O1ZvdD1uZXcgbDtxbi5wcm90b3R5cGUuZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkIik7aWYoIW0odGhpcy5fYmF0Y2hUYWJsZSkpdGhyb3cgbmV3IFkoIm11c3QgY2FsbCB1cGRhdGUgYmVmb3JlIGNhbGxpbmcgZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXMiKTtsZXQgZT10aGlzLl9wZXJJbnN0YW5jZUF0dHJpYnV0ZUNhY2hlLmdldCh0KTtpZihtKGUpKXJldHVybiBlO2xldCBpPS0xLG49dGhpcy5fbGFzdFBlckluc3RhbmNlQXR0cmlidXRlSW5kZXgscz10aGlzLl9pbnN0YW5jZUlkcyxvPXMubGVuZ3RoO2ZvcihsZXQgQT0wO0E8bzsrK0Epe2xldCBkPShuK0EpJW87aWYodD09PXNbZF0pe2k9ZDticmVha319aWYoaT09PS0xKXJldHVybjtsZXQgcj10aGlzLl9iYXRjaFRhYmxlLGE9dGhpcy5fYmF0Y2hUYWJsZUF0dHJpYnV0ZUluZGljZXM7ZT17fTtsZXQgaD17fTtmb3IobGV0IEEgaW4gYSlpZihhLmhhc093blByb3BlcnR5KEEpKXtsZXQgZD1hW0FdO2hbQV09e2dldDpib3QocixpLGQpLHNldDpZb3QocixpLGQsdGhpcyxBKX19cmV0dXJuIFNvdCh0aGlzLGgsaSksT290KHRoaXMsaCxpKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLGgpLHRoaXMuX2xhc3RQZXJJbnN0YW5jZUF0dHJpYnV0ZUluZGV4PWksdGhpcy5fcGVySW5zdGFuY2VBdHRyaWJ1dGVDYWNoZS5zZXQodCxlKSxlfTtxbi5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07cW4ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtsZXQgdCxlO3RoaXMuX3NwPXRoaXMuX3NwJiZ0aGlzLl9zcC5kZXN0cm95KCksdGhpcy5fc3BEZXB0aEZhaWw9dGhpcy5fc3BEZXB0aEZhaWwmJnRoaXMuX3NwRGVwdGhGYWlsLmRlc3Ryb3koKTtsZXQgaT10aGlzLl92YTtmb3IodD1pLmxlbmd0aCxlPTA7ZTx0OysrZSlpW2VdLmRlc3Ryb3koKTt0aGlzLl92YT12b2lkIDA7bGV0IG49dGhpcy5fcGlja0lkcztmb3IodD1uLmxlbmd0aCxlPTA7ZTx0OysrZSluW2VdLmRlc3Ryb3koKTtyZXR1cm4gdGhpcy5fcGlja0lkcz12b2lkIDAsdGhpcy5fYmF0Y2hUYWJsZT10aGlzLl9iYXRjaFRhYmxlJiZ0aGlzLl9iYXRjaFRhYmxlLmRlc3Ryb3koKSx0aGlzLl9pbnN0YW5jZUlkcz12b2lkIDAsdGhpcy5fcGVySW5zdGFuY2VBdHRyaWJ1dGVDYWNoZT12b2lkIDAsdGhpcy5fYXR0cmlidXRlTG9jYXRpb25zPXZvaWQgMCxsaSh0aGlzKX07dnM9cW59KTt2YXIgQm90LHByLCRJPVMoKCk9PntzcygpO0JvdD17TkVWRVI6aXQuTkVWRVIsTEVTUzppdC5MRVNTLEVRVUFMOml0LkVRVUFMLExFU1NfT1JfRVFVQUw6aXQuTEVRVUFMLEdSRUFURVI6aXQuR1JFQVRFUixOT1RfRVFVQUw6aXQuTk9URVFVQUwsR1JFQVRFUl9PUl9FUVVBTDppdC5HRVFVQUwsQUxXQVlTOml0LkFMV0FZU30scHI9T2JqZWN0LmZyZWV6ZShCb3QpfSk7dmFyIEdvdCxIaSx0cD1TKCgpPT57c3MoKTtHb3Q9e1pFUk86aXQuWkVSTyxLRUVQOml0LktFRVAsUkVQTEFDRTppdC5SRVBMQUNFLElOQ1JFTUVOVDppdC5JTkNSLERFQ1JFTUVOVDppdC5ERUNSLElOVkVSVDppdC5JTlZFUlQsSU5DUkVNRU5UX1dSQVA6aXQuSU5DUl9XUkFQLERFQ1JFTUVOVF9XUkFQOml0LkRFQ1JfV1JBUH0sSGk9T2JqZWN0LmZyZWV6ZShHb3QpfSk7dmFyIGVwLFdhLGFGPVMoKCk9PnskSSgpO3RwKCk7ZXA9e0NFU0lVTV8zRF9USUxFX01BU0s6MTI4LFNLSVBfTE9EX01BU0s6MTEyLFNLSVBfTE9EX0JJVF9TSElGVDo0LENMQVNTSUZJQ0FUSU9OX01BU0s6MTV9O2VwLnNldENlc2l1bTNEVGlsZUJpdD1mdW5jdGlvbigpe3JldHVybntlbmFibGVkOiEwLGZyb250RnVuY3Rpb246cHIuQUxXQVlTLGZyb250T3BlcmF0aW9uOntmYWlsOkhpLktFRVAsekZhaWw6SGkuS0VFUCx6UGFzczpIaS5SRVBMQUNFfSxiYWNrRnVuY3Rpb246cHIuQUxXQVlTLGJhY2tPcGVyYXRpb246e2ZhaWw6SGkuS0VFUCx6RmFpbDpIaS5LRUVQLHpQYXNzOkhpLlJFUExBQ0V9LHJlZmVyZW5jZTplcC5DRVNJVU1fM0RfVElMRV9NQVNLLG1hc2s6ZXAuQ0VTSVVNXzNEX1RJTEVfTUFTS319O1dhPU9iamVjdC5mcmVlemUoZXApfSk7ZnVuY3Rpb24gSWgodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpLHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXM9dC5nZW9tZXRyeUluc3RhbmNlcyx0aGlzLl9oYXNQZXJJbnN0YW5jZUNvbG9ycz0hMDtsZXQgZT10LmFwcGVhcmFuY2U7bShlKXx8KGU9bmV3IHVQKSx0aGlzLmFwcGVhcmFuY2U9ZSx0aGlzLnNob3c9Wih0LnNob3csITApLHRoaXMuY2xhc3NpZmljYXRpb25UeXBlPVoodC5jbGFzc2lmaWNhdGlvblR5cGUsSnIuQk9USCksdGhpcy5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT1aKHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsITEpLHRoaXMuX2RlYnVnU2hvd1NoYWRvd1ZvbHVtZT1aKHQuZGVidWdTaG93U2hhZG93Vm9sdW1lLCExKSx0aGlzLl9wcmltaXRpdmVPcHRpb25zPXtnZW9tZXRyeUluc3RhbmNlczp2b2lkIDAsYXBwZWFyYW5jZTp2b2lkIDAsdmVydGV4Q2FjaGVPcHRpbWl6ZTohMSxpbnRlcmxlYXZlOloodC5pbnRlcmxlYXZlLCExKSxyZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXM6Wih0LnJlbGVhc2VHZW9tZXRyeUluc3RhbmNlcywhMCksYWxsb3dQaWNraW5nOloodC5hbGxvd1BpY2tpbmcsITApLGFzeW5jaHJvbm91czpaKHQuYXN5bmNocm9ub3VzLCEwKSxjb21wcmVzc1ZlcnRpY2VzOiExLF9jcmVhdGVTaGFkZXJQcm9ncmFtRnVuY3Rpb246dm9pZCAwLF9jcmVhdGVDb21tYW5kc0Z1bmN0aW9uOnZvaWQgMCxfdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uOnZvaWQgMH0sdGhpcy5fekluZGV4PXZvaWQgMCx0aGlzLl9yZWFkeT0hMSx0aGlzLl9wcmltaXRpdmU9dm9pZCAwLHRoaXMuX3NwPXZvaWQgMCx0aGlzLl9zcDJEPXZvaWQgMCx0aGlzLl9zcE1vcnBoPXZvaWQgMCx0aGlzLl9yZW5kZXJTdGF0ZT1aSighMSksdGhpcy5fcmVuZGVyU3RhdGUzRFRpbGVzPVpKKCEwKSx0aGlzLl9yZW5kZXJTdGF0ZU1vcnBoPVluLmZyb21DYWNoZSh7Y3VsbDp7ZW5hYmxlZDohMCxmYWNlOkVoLkZST05UfSxkZXB0aFRlc3Q6e2VuYWJsZWQ6ITB9LGJsZW5kaW5nOk1yLlBSRV9NVUxUSVBMSUVEX0FMUEhBX0JMRU5ELGRlcHRoTWFzazohMX0pfWZ1bmN0aW9uIFdvdCh0LGUsaSl7bGV0IG49ZS5jb250ZXh0LHM9dC5fcHJpbWl0aXZlLG89cy5fYXR0cmlidXRlTG9jYXRpb25zLHI9cy5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKG14KTtyPXZzLl9hcHBlbmRTaG93VG9TaGFkZXIocyxyKSxyPXZzLl9hcHBlbmREaXN0YW5jZURpc3BsYXlDb25kaXRpb25Ub1NoYWRlcihzLHIpLHI9dnMuX21vZGlmeVNoYWRlclBvc2l0aW9uKHQscixlLnNjZW5lM0RPbmx5KTtsZXQgYT1zLl9iYXRjaFRhYmxlLmdldFZlcnRleFNoYWRlckNhbGxiYWNrKCkobHgpO2E9dnMuX2FwcGVuZFNob3dUb1NoYWRlcihzLGEpLGE9dnMuX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKHMsYSksYT12cy5fbW9kaWZ5U2hhZGVyUG9zaXRpb24odCxhLGUuc2NlbmUzRE9ubHkpO2xldCBoPXMuX2JhdGNoVGFibGUuZ2V0VmVydGV4U2hhZGVyQ2FsbGJhY2soKShheCksQT1bYEdMT0JFX01JTklNVU1fQUxUSVRVREUgJHtlLm1hcFByb2plY3Rpb24uZWxsaXBzb2lkLm1pbmltdW1SYWRpdXMudG9GaXhlZCgxKX1gXSxkPSIiLGY9IiI7bShpLm1hdGVyaWFsKT8oZj1tKGkubWF0ZXJpYWwpP2kubWF0ZXJpYWwuc2hhZGVyU291cmNlOiIiLGYuc2VhcmNoKC9pblxzK2Zsb2F0XHMrdl9wb2x5bGluZUFuZ2xlOy9nKSE9PS0xJiZBLnB1c2goIkFOR0xFX1ZBUllJTkciKSxmLnNlYXJjaCgvaW5ccytmbG9hdFxzK3Zfd2lkdGg7L2cpIT09LTEmJkEucHVzaCgiV0lEVEhfVkFSWUlORyIpKTpkPSJQRVJfSU5TVEFOQ0VfQ09MT1IiLEEucHVzaChkKTtsZXQgRT10LmRlYnVnU2hvd1NoYWRvd1ZvbHVtZT9bIkRFQlVHX1NIT1dfVk9MVU1FIixkXTpbZF0sXz1uZXcgVWkoe2RlZmluZXM6QSxzb3VyY2VzOltyXX0pLFI9bmV3IFVpKHtkZWZpbmVzOkUsc291cmNlczpbZixoXX0pO3QuX3NwPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDpuLHNoYWRlclByb2dyYW06cy5fc3AsdmVydGV4U2hhZGVyU291cmNlOl8sZnJhZ21lbnRTaGFkZXJTb3VyY2U6UixhdHRyaWJ1dGVMb2NhdGlvbnM6b30pO2xldCBJPW4uc2hhZGVyQ2FjaGUuZ2V0RGVyaXZlZFNoYWRlclByb2dyYW0odC5fc3AsIjJkQ29sb3IiKTtpZighbShJKSl7bGV0IE49bmV3IFVpKHtkZWZpbmVzOkEuY29uY2F0KFsiQ09MVU1CVVNfVklFV18yRCJdKSxzb3VyY2VzOltyXX0pO0k9bi5zaGFkZXJDYWNoZS5jcmVhdGVEZXJpdmVkU2hhZGVyUHJvZ3JhbSh0Ll9zcCwiMmRDb2xvciIse2NvbnRleHQ6bixzaGFkZXJQcm9ncmFtOnQuX3NwMkQsdmVydGV4U2hhZGVyU291cmNlOk4sZnJhZ21lbnRTaGFkZXJTb3VyY2U6UixhdHRyaWJ1dGVMb2NhdGlvbnM6b30pfXQuX3NwMkQ9STtsZXQgQz1uLnNoYWRlckNhY2hlLmdldERlcml2ZWRTaGFkZXJQcm9ncmFtKHQuX3NwLCJNb3JwaENvbG9yIik7aWYoIW0oQykpe2xldCBOPW5ldyBVaSh7ZGVmaW5lczpBLmNvbmNhdChbYE1BWF9URVJSQUlOX0hFSUdIVCAke0RvLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodC50b0ZpeGVkKDEpfWBdKSxzb3VyY2VzOlthXX0pO2g9cy5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKGh4KTtsZXQgVD1uZXcgVWkoe2RlZmluZXM6RSxzb3VyY2VzOltmLGhdfSk7Qz1uLnNoYWRlckNhY2hlLmNyZWF0ZURlcml2ZWRTaGFkZXJQcm9ncmFtKHQuX3NwLCJNb3JwaENvbG9yIix7Y29udGV4dDpuLHNoYWRlclByb2dyYW06dC5fc3BNb3JwaCx2ZXJ0ZXhTaGFkZXJTb3VyY2U6TixmcmFnbWVudFNoYWRlclNvdXJjZTpULGF0dHJpYnV0ZUxvY2F0aW9uczpvfSl9dC5fc3BNb3JwaD1DfWZ1bmN0aW9uIFpKKHQpe3JldHVybiBZbi5mcm9tQ2FjaGUoe2N1bGw6e2VuYWJsZWQ6ITB9LGJsZW5kaW5nOk1yLlBSRV9NVUxUSVBMSUVEX0FMUEhBX0JMRU5ELGRlcHRoTWFzazohMSxzdGVuY2lsVGVzdDp7ZW5hYmxlZDp0LGZyb250RnVuY3Rpb246cHIuRVFVQUwsZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuS0VFUCx6RmFpbDpIaS5LRUVQLHpQYXNzOkhpLktFRVB9LGJhY2tGdW5jdGlvbjpwci5FUVVBTCxiYWNrT3BlcmF0aW9uOntmYWlsOkhpLktFRVAsekZhaWw6SGkuS0VFUCx6UGFzczpIaS5LRUVQfSxyZWZlcmVuY2U6V2EuQ0VTSVVNXzNEX1RJTEVfTUFTSyxtYXNrOldhLkNFU0lVTV8zRF9USUxFX01BU0t9fSl9ZnVuY3Rpb24gRG90KHQsZSxpLG4scyxvKXtsZXQgcj10Ll9wcmltaXRpdmUsYT1yLl92YS5sZW5ndGg7cy5sZW5ndGg9YSxvLmxlbmd0aD1hO2xldCBBPWUgaW5zdGFuY2VvZiBETj97fTppLl91bmlmb3JtcyxkPXIuX2JhdGNoVGFibGUuZ2V0VW5pZm9ybU1hcENhbGxiYWNrKCkoQSk7Zm9yKGxldCBmPTA7ZjxhO2YrKyl7bGV0IEU9ci5fdmFbZl0sXz1zW2ZdO20oXyl8fChfPXNbZl09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6ci5fcHJpbWl0aXZlVHlwZX0pKSxfLnZlcnRleEFycmF5PUUsXy5yZW5kZXJTdGF0ZT10Ll9yZW5kZXJTdGF0ZSxfLnNoYWRlclByb2dyYW09dC5fc3AsXy51bmlmb3JtTWFwPWQsXy5wYXNzPW9zLlRFUlJBSU5fQ0xBU1NJRklDQVRJT04sXy5waWNrSWQ9ImN6bV9iYXRjaFRhYmxlX3BpY2tDb2xvcih2X2VuZFBsYW5lTm9ybWFsRWNBbmRCYXRjaElkLncpIjtsZXQgUj1mbi5zaGFsbG93Q2xvbmUoXyxfLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0KTtSLnJlbmRlclN0YXRlPXQuX3JlbmRlclN0YXRlM0RUaWxlcyxSLnBhc3M9b3MuQ0VTSVVNXzNEX1RJTEVfQ0xBU1NJRklDQVRJT04sXy5kZXJpdmVkQ29tbWFuZHMudGlsZXNldD1SO2xldCBJPWZuLnNoYWxsb3dDbG9uZShfLF8uZGVyaXZlZENvbW1hbmRzLmNvbG9yMkQpO0kuc2hhZGVyUHJvZ3JhbT10Ll9zcDJELF8uZGVyaXZlZENvbW1hbmRzLmNvbG9yMkQ9STtsZXQgQz1mbi5zaGFsbG93Q2xvbmUoUixSLmRlcml2ZWRDb21tYW5kcy5jb2xvcjJEKTtDLnNoYWRlclByb2dyYW09dC5fc3AyRCxSLmRlcml2ZWRDb21tYW5kcy5jb2xvcjJEPUM7bGV0IE49Zm4uc2hhbGxvd0Nsb25lKF8sXy5kZXJpdmVkQ29tbWFuZHMuY29sb3JNb3JwaCk7Ti5yZW5kZXJTdGF0ZT10Ll9yZW5kZXJTdGF0ZU1vcnBoLE4uc2hhZGVyUHJvZ3JhbT10Ll9zcE1vcnBoLE4ucGlja0lkPSJjem1fYmF0Y2hUYWJsZV9waWNrQ29sb3Iodl9iYXRjaElkKSIsXy5kZXJpdmVkQ29tbWFuZHMuY29sb3JNb3JwaD1OfX1mdW5jdGlvbiBJSih0LGUsaSxuLHMsbyxyKXtpLm1vZGU9PT15ZS5NT1JQSElORz9lPWUuZGVyaXZlZENvbW1hbmRzLmNvbG9yTW9ycGg6aS5tb2RlIT09eWUuU0NFTkUzRCYmKGU9ZS5kZXJpdmVkQ29tbWFuZHMuY29sb3IyRCksZS5tb2RlbE1hdHJpeD1uLGUuYm91bmRpbmdWb2x1bWU9byxlLmN1bGw9cyxlLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXIsaS5jb21tYW5kTGlzdC5wdXNoKGUpfWZ1bmN0aW9uIFVvdCh0LGUsaSxuLHMsbyxyKXtsZXQgYT10Ll9wcmltaXRpdmU7dnMuX3VwZGF0ZUJvdW5kaW5nVm9sdW1lcyhhLGUscyk7bGV0IGg7ZS5tb2RlPT09eWUuU0NFTkUzRD9oPWEuX2JvdW5kaW5nU3BoZXJlV0M6ZS5tb2RlPT09eWUuQ09MVU1CVVNfVklFVz9oPWEuX2JvdW5kaW5nU3BoZXJlQ1Y6ZS5tb2RlPT09eWUuU0NFTkUyRCYmbShhLl9ib3VuZGluZ1NwaGVyZTJEKT9oPWEuX2JvdW5kaW5nU3BoZXJlMkQ6bShhLl9ib3VuZGluZ1NwaGVyZU1vcnBoKSYmKGg9YS5fYm91bmRpbmdTcGhlcmVNb3JwaCk7bGV0IEE9ZS5tb2RlPT09eWUuTU9SUEhJTkcsZD10LmNsYXNzaWZpY2F0aW9uVHlwZSxmPWQhPT1Kci5DRVNJVU1fM0RfVElMRSxFPWQhPT1Kci5URVJSQUlOJiYhQSxfLFI9ZS5wYXNzZXM7aWYoUi5yZW5kZXJ8fFIucGljayYmYS5hbGxvd1BpY2tpbmcpe2xldCBJPWkubGVuZ3RoO2ZvcihsZXQgQz0wO0M8STsrK0Mpe2xldCBOPWhbQ107ZiYmKF89aVtDXSxJSih0LF8sZSxzLG8sTixyKSksRSYmKF89aVtDXS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCxJSih0LF8sZSxzLG8sTixyKSl9fX12YXIgcEosdUo9UygoKT0+e0pFKCk7b2koKTtGdCgpO210KCk7V3MoKTtPdCgpO3VBKCk7bU4oKTtPTigpO0dtKCk7V20oKTtVbSgpO1FtKCk7YmwoKTtBeCgpO2N4KCk7ZHgoKTtmeCgpO2ttKCk7VUkoKTtNSSgpO1p4KCk7Q1AoKTtyRigpO3VhKCk7YUYoKTskSSgpO3RwKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSWgucHJvdG90eXBlLHtpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5pbnRlcmxlYXZlfX0scmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXN9fSxhbGxvd1BpY2tpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVPcHRpb25zLmFsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZU9wdGlvbnMuYXN5bmNocm9ub3VzfX0scmVhZHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkeX19LGRlYnVnU2hvd1NoYWRvd1ZvbHVtZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnU2hvd1NoYWRvd1ZvbHVtZX19fSk7SWguaW5pdGlhbGl6ZVRlcnJhaW5IZWlnaHRzPWZ1bmN0aW9uKCl7cmV0dXJuIERvLmluaXRpYWxpemUoKX07SWgucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpJiYhbSh0aGlzLmdlb21ldHJ5SW5zdGFuY2VzKSlyZXR1cm47aWYoIURvLmluaXRpYWxpemVkKXtpZighdGhpcy5hc3luY2hyb25vdXMpdGhyb3cgbmV3IFkoIkZvciBzeW5jaHJvbm91cyBHcm91bmRQb2x5bGluZVByaW1pdGl2ZXMsIHlvdSBtdXN0IGNhbGwgR3JvdW5kUG9seWxpbmVQcmltaXRpdmVzLmluaXRpYWxpemVUZXJyYWluSGVpZ2h0cygpIGFuZCB3YWl0IGZvciB0aGUgcmV0dXJuZWQgcHJvbWlzZSB0byByZXNvbHZlLiIpO0loLmluaXRpYWxpemVUZXJyYWluSGVpZ2h0cygpO3JldHVybn1sZXQgZSxpPXRoaXMsbj10aGlzLl9wcmltaXRpdmVPcHRpb25zO2lmKCFtKHRoaXMuX3ByaW1pdGl2ZSkpe2xldCBzPUFycmF5LmlzQXJyYXkodGhpcy5nZW9tZXRyeUluc3RhbmNlcyk/dGhpcy5nZW9tZXRyeUluc3RhbmNlczpbdGhpcy5nZW9tZXRyeUluc3RhbmNlc10sbz1zLmxlbmd0aCxyPW5ldyBBcnJheShvKSxhO2ZvcihlPTA7ZTxvOysrZSlpZihhPXNbZV0uYXR0cmlidXRlcywhbShhKXx8IW0oYS5jb2xvcikpe3RoaXMuX2hhc1Blckluc3RhbmNlQ29sb3JzPSExO2JyZWFrfWZvcihlPTA7ZTxvOysrZSl7bGV0IGg9c1tlXTthPXt9O2xldCBBPWguYXR0cmlidXRlcztmb3IobGV0IGQgaW4gQSlBLmhhc093blByb3BlcnR5KGQpJiYoYVtkXT1BW2RdKTttKGEud2lkdGgpfHwoYS53aWR0aD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlOltoLmdlb21ldHJ5LndpZHRoXX0pKSxoLmdlb21ldHJ5Ll9zY2VuZTNET25seT10LnNjZW5lM0RPbmx5LEtFLnNldFByb2plY3Rpb25BbmRFbGxpcHNvaWQoaC5nZW9tZXRyeSx0Lm1hcFByb2plY3Rpb24pLHJbZV09bmV3IExuKHtnZW9tZXRyeTpoLmdlb21ldHJ5LGF0dHJpYnV0ZXM6YSxpZDpoLmlkLHBpY2tQcmltaXRpdmU6aX0pfW4uZ2VvbWV0cnlJbnN0YW5jZXM9cixuLmFwcGVhcmFuY2U9dGhpcy5hcHBlYXJhbmNlLG4uX2NyZWF0ZVNoYWRlclByb2dyYW1GdW5jdGlvbj1mdW5jdGlvbihoLEEsZCl7V290KGksQSxkKX0sbi5fY3JlYXRlQ29tbWFuZHNGdW5jdGlvbj1mdW5jdGlvbihoLEEsZCxmLEUsXyxSKXtEb3QoaSxBLGQsZixfLFIpfSxuLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249ZnVuY3Rpb24oaCxBLGQsZixFLF8sUixJKXtVb3QoaSxBLGQsZixFLF8sUil9LHRoaXMuX3ByaW1pdGl2ZT1uZXcgdnMobil9aWYodGhpcy5hcHBlYXJhbmNlIGluc3RhbmNlb2YgRE4mJiF0aGlzLl9oYXNQZXJJbnN0YW5jZUNvbG9ycyl0aHJvdyBuZXcgWSgiQWxsIEdlb21ldHJ5SW5zdGFuY2VzIG11c3QgaGF2ZSBjb2xvciBhdHRyaWJ1dGVzIHRvIHVzZSBQb2x5bGluZUNvbG9yQXBwZWFyYW5jZSB3aXRoIEdyb3VuZFBvbHlsaW5lUHJpbWl0aXZlLiIpO3RoaXMuX3ByaW1pdGl2ZS5hcHBlYXJhbmNlPXRoaXMuYXBwZWFyYW5jZSx0aGlzLl9wcmltaXRpdmUuc2hvdz10aGlzLnNob3csdGhpcy5fcHJpbWl0aXZlLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsdGhpcy5fcHJpbWl0aXZlLnVwZGF0ZSh0KSx0LmFmdGVyUmVuZGVyLnB1c2goKCk9PnshdGhpcy5fcmVhZHkmJm0odGhpcy5fcHJpbWl0aXZlKSYmdGhpcy5fcHJpbWl0aXZlLnJlYWR5JiYodGhpcy5fcmVhZHk9ITAsdGhpcy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMmJih0aGlzLmdlb21ldHJ5SW5zdGFuY2VzPXZvaWQgMCkpfSl9O0loLnByb3RvdHlwZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcz1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpKXRocm93IG5ldyBZKCJtdXN0IGNhbGwgdXBkYXRlIGJlZm9yZSBjYWxsaW5nIGdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzIik7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcyh0KX07SWguaXNTdXBwb3J0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZnJhbWVTdGF0ZS5jb250ZXh0LmRlcHRoVGV4dHVyZX07SWgucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O0loLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZT10aGlzLl9wcmltaXRpdmUmJnRoaXMuX3ByaW1pdGl2ZS5kZXN0cm95KCksdGhpcy5fc3A9dGhpcy5fc3AmJnRoaXMuX3NwLmRlc3Ryb3koKSx0aGlzLl9zcDJEPXZvaWQgMCx0aGlzLl9zcE1vcnBoPXZvaWQgMCxsaSh0aGlzKX07cEo9SWh9KTtmdW5jdGlvbiBrbyh0LGUsaSl7dGhpcy5taW5pbXVtPWwuY2xvbmUoWih0LGwuWkVSTykpLHRoaXMubWF4aW11bT1sLmNsb25lKFooZSxsLlpFUk8pKSxtKGkpP2k9bC5jbG9uZShpKTppPWwubWlkcG9pbnQodGhpcy5taW5pbXVtLHRoaXMubWF4aW11bSxuZXcgbCksdGhpcy5jZW50ZXI9aX12YXIgaXAscGgsYV89UygoKT0+e0h0KCk7YWUoKTtGdCgpO210KCk7bmMoKTtrby5mcm9tQ29ybmVycz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgibWluaW11bSIsdCkscC5kZWZpbmVkKCJtYXhpbXVtIixlKSxtKGkpfHwoaT1uZXcga28pLGkubWluaW11bT1sLmNsb25lKHQsaS5taW5pbXVtKSxpLm1heGltdW09bC5jbG9uZShlLGkubWF4aW11bSksaS5jZW50ZXI9bC5taWRwb2ludCh0LGUsaS5jZW50ZXIpLGl9O2tvLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXtpZihtKGUpfHwoZT1uZXcga28pLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIGUubWluaW11bT1sLmNsb25lKGwuWkVSTyxlLm1pbmltdW0pLGUubWF4aW11bT1sLmNsb25lKGwuWkVSTyxlLm1heGltdW0pLGUuY2VudGVyPWwuY2xvbmUobC5aRVJPLGUuY2VudGVyKSxlO2xldCBpPXRbMF0ueCxuPXRbMF0ueSxzPXRbMF0ueixvPXRbMF0ueCxyPXRbMF0ueSxhPXRbMF0ueixoPXQubGVuZ3RoO2ZvcihsZXQgZj0xO2Y8aDtmKyspe2xldCBFPXRbZl0sXz1FLngsUj1FLnksST1FLno7aT1NYXRoLm1pbihfLGkpLG89TWF0aC5tYXgoXyxvKSxuPU1hdGgubWluKFIsbikscj1NYXRoLm1heChSLHIpLHM9TWF0aC5taW4oSSxzKSxhPU1hdGgubWF4KEksYSl9bGV0IEE9ZS5taW5pbXVtO0EueD1pLEEueT1uLEEuej1zO2xldCBkPWUubWF4aW11bTtyZXR1cm4gZC54PW8sZC55PXIsZC56PWEsZS5jZW50ZXI9bC5taWRwb2ludChBLGQsZS5jZW50ZXIpLGV9O2tvLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5taW5pbXVtPWwuY2xvbmUodC5taW5pbXVtLGUubWluaW11bSksZS5tYXhpbXVtPWwuY2xvbmUodC5tYXhpbXVtLGUubWF4aW11bSksZS5jZW50ZXI9bC5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksZSk6bmV3IGtvKHQubWluaW11bSx0Lm1heGltdW0sdC5jZW50ZXIpfTtrby5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJmwuZXF1YWxzKHQuY2VudGVyLGUuY2VudGVyKSYmbC5lcXVhbHModC5taW5pbXVtLGUubWluaW11bSkmJmwuZXF1YWxzKHQubWF4aW11bSxlLm1heGltdW0pfTtpcD1uZXcgbDtrby5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiYm94Iix0KSxwLmRlZmluZWQoInBsYW5lIixlKSxpcD1sLnN1YnRyYWN0KHQubWF4aW11bSx0Lm1pbmltdW0saXApO2xldCBpPWwubXVsdGlwbHlCeVNjYWxhcihpcCwuNSxpcCksbj1lLm5vcm1hbCxzPWkueCpNYXRoLmFicyhuLngpK2kueSpNYXRoLmFicyhuLnkpK2kueipNYXRoLmFicyhuLnopLG89bC5kb3QodC5jZW50ZXIsbikrZS5kaXN0YW5jZTtyZXR1cm4gby1zPjA/Tm4uSU5TSURFOm8rczwwP05uLk9VVFNJREU6Tm4uSU5URVJTRUNUSU5HfTtrby5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGtvLmNsb25lKHRoaXMsdCl9O2tvLnByb3RvdHlwZS5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4ga28uaW50ZXJzZWN0UGxhbmUodGhpcyx0KX07a28ucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4ga28uZXF1YWxzKHRoaXMsdCl9O3BoPWtvfSk7ZnVuY3Rpb24gTkEodCxlKXtpZihwLmRlZmluZWQoIm9yaWdpbiIsdCksZT1aKGUsb3QuV0dTODQpLHQ9ZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQpLCFtKHQpKXRocm93IG5ldyBZKCJvcmlnaW4gbXVzdCBub3QgYmUgYXQgdGhlIGNlbnRlciBvZiB0aGUgZWxsaXBzb2lkLiIpO2xldCBpPUluLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKHQsZSk7dGhpcy5fZWxsaXBzb2lkPWUsdGhpcy5fb3JpZ2luPXQsdGhpcy5feEF4aXM9bC5mcm9tQ2FydGVzaWFuNChhdC5nZXRDb2x1bW4oaSwwLEFGKSksdGhpcy5feUF4aXM9bC5mcm9tQ2FydGVzaWFuNChhdC5nZXRDb2x1bW4oaSwxLEFGKSk7bGV0IG49bC5mcm9tQ2FydGVzaWFuNChhdC5nZXRDb2x1bW4oaSwyLEFGKSk7dGhpcy5fcGxhbmU9S2kuZnJvbVBvaW50Tm9ybWFsKHQsbil9dmFyIEFGLE1vdCxDSixucCxRb3Qsb28sWG09UygoKT0+e2FfKCk7WGUoKTtIdCgpO09zKCk7YWUoKTtGdCgpO210KCk7T3QoKTtPZSgpO1VsKCk7YmkoKTtuaCgpO1NJKCk7ZnIoKTtBRj1uZXcgaWU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTkEucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxvcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW59fSxwbGFuZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lfX0seEF4aXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl94QXhpc319LHlBeGlzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feUF4aXN9fSx6QXhpczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lLm5vcm1hbH19fSk7TW90PW5ldyBwaDtOQS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjYXJ0ZXNpYW5zIix0KTtsZXQgaT1waC5mcm9tUG9pbnRzKHQsTW90KTtyZXR1cm4gbmV3IE5BKGkuY2VudGVyLGUpfTtDSj1uZXcgV2wsbnA9bmV3IGw7TkEucHJvdG90eXBlLnByb2plY3RQb2ludE9udG9QbGFuZT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFuIix0KTtsZXQgaT1DSjtpLm9yaWdpbj10LGwubm9ybWFsaXplKHQsaS5kaXJlY3Rpb24pO2xldCBuPW5vLnJheVBsYW5lKGksdGhpcy5fcGxhbmUsbnApO2lmKG0obil8fChsLm5lZ2F0ZShpLmRpcmVjdGlvbixpLmRpcmVjdGlvbiksbj1uby5yYXlQbGFuZShpLHRoaXMuX3BsYW5lLG5wKSksbShuKSl7bGV0IHM9bC5zdWJ0cmFjdChuLHRoaXMuX29yaWdpbixuKSxvPWwuZG90KHRoaXMuX3hBeGlzLHMpLHI9bC5kb3QodGhpcy5feUF4aXMscyk7cmV0dXJuIG0oZSk/KGUueD1vLGUueT1yLGUpOm5ldyBudChvLHIpfX07TkEucHJvdG90eXBlLnByb2plY3RQb2ludHNPbnRvUGxhbmU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbnMiLHQpLG0oZSl8fChlPVtdKTtsZXQgaT0wLG49dC5sZW5ndGg7Zm9yKGxldCBzPTA7czxuO3MrKyl7bGV0IG89dGhpcy5wcm9qZWN0UG9pbnRPbnRvUGxhbmUodFtzXSxlW2ldKTttKG8pJiYoZVtpXT1vLGkrKyl9cmV0dXJuIGUubGVuZ3RoPWksZX07TkEucHJvdG90eXBlLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbiIsdCksbShlKXx8KGU9bmV3IG50KTtsZXQgaT1DSjtpLm9yaWdpbj10LGwuY2xvbmUodGhpcy5fcGxhbmUubm9ybWFsLGkuZGlyZWN0aW9uKTtsZXQgbj1uby5yYXlQbGFuZShpLHRoaXMuX3BsYW5lLG5wKTttKG4pfHwobC5uZWdhdGUoaS5kaXJlY3Rpb24saS5kaXJlY3Rpb24pLG49bm8ucmF5UGxhbmUoaSx0aGlzLl9wbGFuZSxucCkpO2xldCBzPWwuc3VidHJhY3Qobix0aGlzLl9vcmlnaW4sbiksbz1sLmRvdCh0aGlzLl94QXhpcyxzKSxyPWwuZG90KHRoaXMuX3lBeGlzLHMpO3JldHVybiBlLng9byxlLnk9cixlfTtOQS5wcm90b3R5cGUucHJvamVjdFBvaW50c1RvTmVhcmVzdE9uUGxhbmU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoImNhcnRlc2lhbnMiLHQpLG0oZSl8fChlPVtdKTtsZXQgaT10Lmxlbmd0aDtlLmxlbmd0aD1pO2ZvcihsZXQgbj0wO248aTtuKyspZVtuXT10aGlzLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUodFtuXSxlW25dKTtyZXR1cm4gZX07UW90PW5ldyBsO05BLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRPbnRvRWxsaXBzb2lkPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBsKTtsZXQgaT10aGlzLl9lbGxpcHNvaWQsbj10aGlzLl9vcmlnaW4scz10aGlzLl94QXhpcyxvPXRoaXMuX3lBeGlzLHI9UW90O3JldHVybiBsLm11bHRpcGx5QnlTY2FsYXIocyx0LngsciksZT1sLmFkZChuLHIsZSksbC5tdWx0aXBseUJ5U2NhbGFyKG8sdC55LHIpLGwuYWRkKGUscixlKSxpLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZShlLGUpLGV9O05BLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRzT250b0VsbGlwc29pZD1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTsrK24pZVtuXT10aGlzLnByb2plY3RQb2ludE9udG9FbGxpcHNvaWQodFtuXSxlW25dKTtyZXR1cm4gZX07b289TkF9KTtmdW5jdGlvbiBCaSh0LGUpe3RoaXMuY2VudGVyPWwuY2xvbmUoWih0LGwuWkVSTykpLHRoaXMuaGFsZkF4ZXM9bHQuY2xvbmUoWihlLGx0LlpFUk8pKX1mdW5jdGlvbiBnSih0LGUsaSxuLHMsbyxyLGEsaCxBLGQpe2lmKCFtKHMpfHwhbShvKXx8IW0ocil8fCFtKGEpfHwhbShoKXx8IW0oQSkpdGhyb3cgbmV3IFkoImFsbCBleHRlbnRzIChtaW5pbXVtL21heGltdW0gWC9ZL1opIGFyZSByZXF1aXJlZC4iKTttKGQpfHwoZD1uZXcgQmkpO2xldCBmPWQuaGFsZkF4ZXM7bHQuc2V0Q29sdW1uKGYsMCxlLGYpLGx0LnNldENvbHVtbihmLDEsaSxmKSxsdC5zZXRDb2x1bW4oZiwyLG4sZik7bGV0IEU9WUo7RS54PShzK28pLzIsRS55PShyK2EpLzIsRS56PShoK0EpLzI7bGV0IF89SG90O18ueD0oby1zKS8yLF8ueT0oYS1yKS8yLF8uej0oQS1oKS8yO2xldCBSPWQuY2VudGVyO3JldHVybiBFPWx0Lm11bHRpcGx5QnlWZWN0b3IoZixFLEUpLGwuYWRkKHQsRSxSKSxsdC5tdWx0aXBseUJ5U2NhbGUoZixfLGYpLGR9dmFyIGtvdCxMb3QseW90LHdvdCx4b3QsUG90LEpvdCxqb3QsWUosSG90LFRKLHZvdCx6b3QsS290LFhvdCxxb3QsJG90LHRydCxOSixlcnQsRkosaXJ0LG5ydCxzcnQsb3J0LHJydCxhcnQsQXJ0LGhydCxjcnQsbHJ0LGRydCxtcnQsZnJ0LEVydCxfcnQsVkosU0osT0osUnJ0LGJKLFpydCxJcnQscHJ0LHVydCxDcnQsZ3J0LFRydCxOcnQsenMsSmw9UygoKT0+e19pKCk7WGUoKTtIdCgpO3JpKCk7YWUoKTtGdCgpO210KCk7T3QoKTtPZSgpO1htKCk7bmMoKTtIWigpO19lKCk7ZG4oKTtiaSgpO25oKCk7cG4oKTtCaS5wYWNrZWRMZW5ndGg9bC5wYWNrZWRMZW5ndGgrbHQucGFja2VkTGVuZ3RoO0JpLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxsLnBhY2sodC5jZW50ZXIsZSxpKSxsdC5wYWNrKHQuaGFsZkF4ZXMsZSxpK2wucGFja2VkTGVuZ3RoKSxlfTtCaS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKSxtKGkpfHwoaT1uZXcgQmkpLGwudW5wYWNrKHQsZSxpLmNlbnRlciksbHQudW5wYWNrKHQsZStsLnBhY2tlZExlbmd0aCxpLmhhbGZBeGVzKSxpfTtrb3Q9bmV3IGwsTG90PW5ldyBsLHlvdD1uZXcgbCx3b3Q9bmV3IGwseG90PW5ldyBsLFBvdD1uZXcgbCxKb3Q9bmV3IGx0LGpvdD17dW5pdGFyeTpuZXcgbHQsZGlhZ29uYWw6bmV3IGx0fTtCaS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IEJpKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLmhhbGZBeGVzPWx0LlpFUk8sZS5jZW50ZXI9bC5aRVJPLGU7bGV0IGksbj10Lmxlbmd0aCxzPWwuY2xvbmUodFswXSxrb3QpO2ZvcihpPTE7aTxuO2krKylsLmFkZChzLHRbaV0scyk7bGV0IG89MS9uO2wubXVsdGlwbHlCeVNjYWxhcihzLG8scyk7bGV0IHI9MCxhPTAsaD0wLEE9MCxkPTAsZj0wLEU7Zm9yKGk9MDtpPG47aSsrKUU9bC5zdWJ0cmFjdCh0W2ldLHMsTG90KSxyKz1FLngqRS54LGErPUUueCpFLnksaCs9RS54KkUueixBKz1FLnkqRS55LGQrPUUueSpFLnosZis9RS56KkUuejtyKj1vLGEqPW8saCo9byxBKj1vLGQqPW8sZio9bztsZXQgXz1Kb3Q7X1swXT1yLF9bMV09YSxfWzJdPWgsX1szXT1hLF9bNF09QSxfWzVdPWQsX1s2XT1oLF9bN109ZCxfWzhdPWY7bGV0IFI9bHQuY29tcHV0ZUVpZ2VuRGVjb21wb3NpdGlvbihfLGpvdCksST1sdC5jbG9uZShSLnVuaXRhcnksZS5oYWxmQXhlcyksQz1sdC5nZXRDb2x1bW4oSSwwLHdvdCksTj1sdC5nZXRDb2x1bW4oSSwxLHhvdCksVD1sdC5nZXRDb2x1bW4oSSwyLFBvdCksYj0tTnVtYmVyLk1BWF9WQUxVRSxGPS1OdW1iZXIuTUFYX1ZBTFVFLEI9LU51bWJlci5NQVhfVkFMVUUsVT1OdW1iZXIuTUFYX1ZBTFVFLFE9TnVtYmVyLk1BWF9WQUxVRSxNPU51bWJlci5NQVhfVkFMVUU7Zm9yKGk9MDtpPG47aSsrKUU9dFtpXSxiPU1hdGgubWF4KGwuZG90KEMsRSksYiksRj1NYXRoLm1heChsLmRvdChOLEUpLEYpLEI9TWF0aC5tYXgobC5kb3QoVCxFKSxCKSxVPU1hdGgubWluKGwuZG90KEMsRSksVSksUT1NYXRoLm1pbihsLmRvdChOLEUpLFEpLE09TWF0aC5taW4obC5kb3QoVCxFKSxNKTtDPWwubXVsdGlwbHlCeVNjYWxhcihDLC41KihVK2IpLEMpLE49bC5tdWx0aXBseUJ5U2NhbGFyKE4sLjUqKFErRiksTiksVD1sLm11bHRpcGx5QnlTY2FsYXIoVCwuNSooTStCKSxUKTtsZXQgaz1sLmFkZChDLE4sZS5jZW50ZXIpO2wuYWRkKGssVCxrKTtsZXQgeT15b3Q7cmV0dXJuIHkueD1iLVUseS55PUYtUSx5Lno9Qi1NLGwubXVsdGlwbHlCeVNjYWxhcih5LC41LHkpLGx0Lm11bHRpcGx5QnlTY2FsZShlLmhhbGZBeGVzLHksZS5oYWxmQXhlcyksZX07WUo9bmV3IGwsSG90PW5ldyBsO1RKPW5ldyB1dCx2b3Q9bmV3IGwsem90PW5ldyB1dCxLb3Q9bmV3IHV0LFhvdD1uZXcgdXQscW90PW5ldyB1dCwkb3Q9bmV3IHV0LHRydD1uZXcgbCxOSj1uZXcgbCxlcnQ9bmV3IGwsRko9bmV3IGwsaXJ0PW5ldyBsLG5ydD1uZXcgbnQsc3J0PW5ldyBudCxvcnQ9bmV3IG50LHJydD1uZXcgbnQsYXJ0PW5ldyBudCxBcnQ9bmV3IGwsaHJ0PW5ldyBsLGNydD1uZXcgbCxscnQ9bmV3IGwsZHJ0PW5ldyBudCxtcnQ9bmV3IGwsZnJ0PW5ldyBsLEVydD1uZXcgbCxfcnQ9bmV3IEtpKGwuVU5JVF9YLDApO0JpLmZyb21SZWN0YW5nbGU9ZnVuY3Rpb24odCxlLGksbixzKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicmVjdGFuZ2xlIGlzIHJlcXVpcmVkIik7aWYodC53aWR0aDwwfHx0LndpZHRoPkwuVFdPX1BJKXRocm93IG5ldyBZKCJSZWN0YW5nbGUgd2lkdGggbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIgKiBwaSIpO2lmKHQuaGVpZ2h0PDB8fHQuaGVpZ2h0PkwuUEkpdGhyb3cgbmV3IFkoIlJlY3RhbmdsZSBoZWlnaHQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIHBpIik7aWYobShuKSYmIUwuZXF1YWxzRXBzaWxvbihuLnJhZGlpLngsbi5yYWRpaS55LEwuRVBTSUxPTjE1KSl0aHJvdyBuZXcgWSgiRWxsaXBzb2lkIG11c3QgYmUgYW4gZWxsaXBzb2lkIG9mIHJldm9sdXRpb24gKHJhZGlpLnggPT0gcmFkaWkueSkiKTtlPVooZSwwKSxpPVooaSwwKSxuPVoobixvdC5XR1M4NCk7bGV0IG8scixhLGgsQSxkLGY7aWYodC53aWR0aDw9TC5QSSl7bGV0IFE9WHQuY2VudGVyKHQsVEopLE09bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihRLHZvdCksaz1uZXcgb28oTSxuKTtmPWsucGxhbmU7bGV0IHk9US5sb25naXR1ZGUsYz10LnNvdXRoPDAmJnQubm9ydGg+MD8wOlEubGF0aXR1ZGUsZz11dC5mcm9tUmFkaWFucyh5LHQubm9ydGgsaSx6b3QpLE89dXQuZnJvbVJhZGlhbnModC53ZXN0LHQubm9ydGgsaSxLb3QpLEQ9dXQuZnJvbVJhZGlhbnModC53ZXN0LGMsaSxYb3QpLHc9dXQuZnJvbVJhZGlhbnModC53ZXN0LHQuc291dGgsaSxxb3QpLHg9dXQuZnJvbVJhZGlhbnMoeSx0LnNvdXRoLGksJG90KSxIPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZyx0cnQpLGo9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihPLE5KKSxYPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRCxlcnQpLHR0PW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4odyxGSiksRz1uLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHgsaXJ0KSxJdD1rLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoSCxucnQpLGd0PWsucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZShqLHNydCksWXQ9ay5wcm9qZWN0UG9pbnRUb05lYXJlc3RPblBsYW5lKFgsb3J0KSxVdD1rLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUodHQscnJ0KSxDdD1rLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoRyxhcnQpO3JldHVybiBvPU1hdGgubWluKGd0LngsWXQueCxVdC54KSxyPS1vLGg9TWF0aC5tYXgoZ3QueSxJdC55KSxhPU1hdGgubWluKFV0LnksQ3QueSksTy5oZWlnaHQ9dy5oZWlnaHQ9ZSxqPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTyxOSiksdHQ9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih3LEZKKSxBPU1hdGgubWluKEtpLmdldFBvaW50RGlzdGFuY2UoZixqKSxLaS5nZXRQb2ludERpc3RhbmNlKGYsdHQpKSxkPWksZ0ooay5vcmlnaW4say54QXhpcyxrLnlBeGlzLGsuekF4aXMsbyxyLGEsaCxBLGQscyl9bGV0IEU9dC5zb3V0aD4wLF89dC5ub3J0aDwwLFI9RT90LnNvdXRoOl8/dC5ub3J0aDowLEk9WHQuY2VudGVyKHQsVEopLmxvbmdpdHVkZSxDPWwuZnJvbVJhZGlhbnMoSSxSLGksbixBcnQpO0Muej0wO2xldCBUPU1hdGguYWJzKEMueCk8TC5FUFNJTE9OMTAmJk1hdGguYWJzKEMueSk8TC5FUFNJTE9OMTA/bC5VTklUX1g6bC5ub3JtYWxpemUoQyxocnQpLGI9bC5VTklUX1osRj1sLmNyb3NzKFQsYixjcnQpO2Y9S2kuZnJvbVBvaW50Tm9ybWFsKEMsVCxfcnQpO2xldCBCPWwuZnJvbVJhZGlhbnMoSStMLlBJX09WRVJfVFdPLFIsaSxuLGxydCk7cj1sLmRvdChLaS5wcm9qZWN0UG9pbnRPbnRvUGxhbmUoZixCLGRydCksRiksbz0tcixoPWwuZnJvbVJhZGlhbnMoMCx0Lm5vcnRoLF8/ZTppLG4sbXJ0KS56LGE9bC5mcm9tUmFkaWFucygwLHQuc291dGgsRT9lOmksbixmcnQpLno7bGV0IFU9bC5mcm9tUmFkaWFucyh0LmVhc3QsUixpLG4sRXJ0KTtyZXR1cm4gQT1LaS5nZXRQb2ludERpc3RhbmNlKGYsVSksZD0wLGdKKEMsRixiLFQsbyxyLGEsaCxBLGQscyl9O0JpLmZyb21UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybWF0aW9uIix0KSxtKGUpfHwoZT1uZXcgQmkpLGUuY2VudGVyPWF0LmdldFRyYW5zbGF0aW9uKHQsZS5jZW50ZXIpLGUuaGFsZkF4ZXM9YXQuZ2V0TWF0cml4Myh0LGUuaGFsZkF4ZXMpLGUuaGFsZkF4ZXM9bHQubXVsdGlwbHlCeVNjYWxhcihlLmhhbGZBeGVzLC41LGUuaGFsZkF4ZXMpLGV9O0JpLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8obC5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksbHQuY2xvbmUodC5oYWxmQXhlcyxlLmhhbGZBeGVzKSxlKTpuZXcgQmkodC5jZW50ZXIsdC5oYWxmQXhlcyl9O0JpLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImJveCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgWSgicGxhbmUgaXMgcmVxdWlyZWQuIik7bGV0IGk9dC5jZW50ZXIsbj1lLm5vcm1hbCxzPXQuaGFsZkF4ZXMsbz1uLngscj1uLnksYT1uLnosaD1NYXRoLmFicyhvKnNbbHQuQ09MVU1OMFJPVzBdK3Iqc1tsdC5DT0xVTU4wUk9XMV0rYSpzW2x0LkNPTFVNTjBST1cyXSkrTWF0aC5hYnMobypzW2x0LkNPTFVNTjFST1cwXStyKnNbbHQuQ09MVU1OMVJPVzFdK2Eqc1tsdC5DT0xVTU4xUk9XMl0pK01hdGguYWJzKG8qc1tsdC5DT0xVTU4yUk9XMF0rcipzW2x0LkNPTFVNTjJST1cxXSthKnNbbHQuQ09MVU1OMlJPVzJdKSxBPWwuZG90KG4saSkrZS5kaXN0YW5jZTtyZXR1cm4gQTw9LWg/Tm4uT1VUU0lERTpBPj1oP05uLklOU0lERTpObi5JTlRFUlNFQ1RJTkd9O1ZKPW5ldyBsLFNKPW5ldyBsLE9KPW5ldyBsLFJydD1uZXcgbCxiSj1uZXcgbCxacnQ9bmV3IGw7QmkuZGlzdGFuY2VTcXVhcmVkVG89ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYm94IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJjYXJ0ZXNpYW4gaXMgcmVxdWlyZWQuIik7bGV0IGk9bC5zdWJ0cmFjdChlLHQuY2VudGVyLFlKKSxuPXQuaGFsZkF4ZXMscz1sdC5nZXRDb2x1bW4obiwwLFZKKSxvPWx0LmdldENvbHVtbihuLDEsU0opLHI9bHQuZ2V0Q29sdW1uKG4sMixPSiksYT1sLm1hZ25pdHVkZShzKSxoPWwubWFnbml0dWRlKG8pLEE9bC5tYWduaXR1ZGUociksZD0hMCxmPSEwLEU9ITA7YT4wP2wuZGl2aWRlQnlTY2FsYXIocyxhLHMpOmQ9ITEsaD4wP2wuZGl2aWRlQnlTY2FsYXIobyxoLG8pOmY9ITEsQT4wP2wuZGl2aWRlQnlTY2FsYXIocixBLHIpOkU9ITE7bGV0IF89IWQrIWYrIUUsUixJLEM7aWYoXz09PTEpe2xldCBGPXM7Uj1vLEk9cixmP0V8fChGPXIsST1zKTooRj1vLFI9cyksQz1sLmNyb3NzKFIsSSxiSiksRj09PXM/cz1DOkY9PT1vP289QzpGPT09ciYmKHI9Qyl9ZWxzZSBpZihfPT09Mil7Uj1zLGY/Uj1vOkUmJihSPXIpO2xldCBGPWwuVU5JVF9ZO0YuZXF1YWxzRXBzaWxvbihSLEwuRVBTSUxPTjMpJiYoRj1sLlVOSVRfWCksST1sLmNyb3NzKFIsRixScnQpLGwubm9ybWFsaXplKEksSSksQz1sLmNyb3NzKFIsSSxiSiksbC5ub3JtYWxpemUoQyxDKSxSPT09cz8obz1JLHI9Qyk6Uj09PW8/KHI9SSxzPUMpOlI9PT1yJiYocz1JLG89Qyl9ZWxzZSBfPT09MyYmKHM9bC5VTklUX1gsbz1sLlVOSVRfWSxyPWwuVU5JVF9aKTtsZXQgTj1acnQ7Ti54PWwuZG90KGkscyksTi55PWwuZG90KGksbyksTi56PWwuZG90KGkscik7bGV0IFQ9MCxiO3JldHVybiBOLng8LWE/KGI9Ti54K2EsVCs9YipiKTpOLng+YSYmKGI9Ti54LWEsVCs9YipiKSxOLnk8LWg/KGI9Ti55K2gsVCs9YipiKTpOLnk+aCYmKGI9Ti55LWgsVCs9YipiKSxOLno8LUE/KGI9Ti56K0EsVCs9YipiKTpOLno+QSYmKGI9Ti56LUEsVCs9YipiKSxUfTtJcnQ9bmV3IGwscHJ0PW5ldyBsO0JpLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsaSxuKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYm94IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO20obil8fChuPW5ldyBjQSk7bGV0IHM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG89TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHI9dC5jZW50ZXIsYT10LmhhbGZBeGVzLGg9bHQuZ2V0Q29sdW1uKGEsMCxWSiksQT1sdC5nZXRDb2x1bW4oYSwxLFNKKSxkPWx0LmdldENvbHVtbihhLDIsT0opLGY9bC5hZGQoaCxBLElydCk7bC5hZGQoZixkLGYpLGwuYWRkKGYscixmKTtsZXQgRT1sLnN1YnRyYWN0KGYsZSxwcnQpLF89bC5kb3QoaSxFKTtyZXR1cm4gcz1NYXRoLm1pbihfLHMpLG89TWF0aC5tYXgoXyxvKSxsLmFkZChyLGgsZiksbC5hZGQoZixBLGYpLGwuc3VidHJhY3QoZixkLGYpLGwuc3VidHJhY3QoZixlLEUpLF89bC5kb3QoaSxFKSxzPU1hdGgubWluKF8scyksbz1NYXRoLm1heChfLG8pLGwuYWRkKHIsaCxmKSxsLnN1YnRyYWN0KGYsQSxmKSxsLmFkZChmLGQsZiksbC5zdWJ0cmFjdChmLGUsRSksXz1sLmRvdChpLEUpLHM9TWF0aC5taW4oXyxzKSxvPU1hdGgubWF4KF8sbyksbC5hZGQocixoLGYpLGwuc3VidHJhY3QoZixBLGYpLGwuc3VidHJhY3QoZixkLGYpLGwuc3VidHJhY3QoZixlLEUpLF89bC5kb3QoaSxFKSxzPU1hdGgubWluKF8scyksbz1NYXRoLm1heChfLG8pLGwuc3VidHJhY3QocixoLGYpLGwuYWRkKGYsQSxmKSxsLmFkZChmLGQsZiksbC5zdWJ0cmFjdChmLGUsRSksXz1sLmRvdChpLEUpLHM9TWF0aC5taW4oXyxzKSxvPU1hdGgubWF4KF8sbyksbC5zdWJ0cmFjdChyLGgsZiksbC5hZGQoZixBLGYpLGwuc3VidHJhY3QoZixkLGYpLGwuc3VidHJhY3QoZixlLEUpLF89bC5kb3QoaSxFKSxzPU1hdGgubWluKF8scyksbz1NYXRoLm1heChfLG8pLGwuc3VidHJhY3QocixoLGYpLGwuc3VidHJhY3QoZixBLGYpLGwuYWRkKGYsZCxmKSxsLnN1YnRyYWN0KGYsZSxFKSxfPWwuZG90KGksRSkscz1NYXRoLm1pbihfLHMpLG89TWF0aC5tYXgoXyxvKSxsLnN1YnRyYWN0KHIsaCxmKSxsLnN1YnRyYWN0KGYsQSxmKSxsLnN1YnRyYWN0KGYsZCxmKSxsLnN1YnRyYWN0KGYsZSxFKSxfPWwuZG90KGksRSkscz1NYXRoLm1pbihfLHMpLG89TWF0aC5tYXgoXyxvKSxuLnN0YXJ0PXMsbi5zdG9wPW8sbn07dXJ0PW5ldyBsLENydD1uZXcgbCxncnQ9bmV3IGw7QmkuY29tcHV0ZUNvcm5lcnM9ZnVuY3Rpb24odCxlKXtwLnR5cGVPZi5vYmplY3QoImJveCIsdCksbShlKXx8KGU9W25ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsLG5ldyBsXSk7bGV0IGk9dC5jZW50ZXIsbj10LmhhbGZBeGVzLHM9bHQuZ2V0Q29sdW1uKG4sMCx1cnQpLG89bHQuZ2V0Q29sdW1uKG4sMSxDcnQpLHI9bHQuZ2V0Q29sdW1uKG4sMixncnQpO3JldHVybiBsLmNsb25lKGksZVswXSksbC5zdWJ0cmFjdChlWzBdLHMsZVswXSksbC5zdWJ0cmFjdChlWzBdLG8sZVswXSksbC5zdWJ0cmFjdChlWzBdLHIsZVswXSksbC5jbG9uZShpLGVbMV0pLGwuc3VidHJhY3QoZVsxXSxzLGVbMV0pLGwuc3VidHJhY3QoZVsxXSxvLGVbMV0pLGwuYWRkKGVbMV0scixlWzFdKSxsLmNsb25lKGksZVsyXSksbC5zdWJ0cmFjdChlWzJdLHMsZVsyXSksbC5hZGQoZVsyXSxvLGVbMl0pLGwuc3VidHJhY3QoZVsyXSxyLGVbMl0pLGwuY2xvbmUoaSxlWzNdKSxsLnN1YnRyYWN0KGVbM10scyxlWzNdKSxsLmFkZChlWzNdLG8sZVszXSksbC5hZGQoZVszXSxyLGVbM10pLGwuY2xvbmUoaSxlWzRdKSxsLmFkZChlWzRdLHMsZVs0XSksbC5zdWJ0cmFjdChlWzRdLG8sZVs0XSksbC5zdWJ0cmFjdChlWzRdLHIsZVs0XSksbC5jbG9uZShpLGVbNV0pLGwuYWRkKGVbNV0scyxlWzVdKSxsLnN1YnRyYWN0KGVbNV0sbyxlWzVdKSxsLmFkZChlWzVdLHIsZVs1XSksbC5jbG9uZShpLGVbNl0pLGwuYWRkKGVbNl0scyxlWzZdKSxsLmFkZChlWzZdLG8sZVs2XSksbC5zdWJ0cmFjdChlWzZdLHIsZVs2XSksbC5jbG9uZShpLGVbN10pLGwuYWRkKGVbN10scyxlWzddKSxsLmFkZChlWzddLG8sZVs3XSksbC5hZGQoZVs3XSxyLGVbN10pLGV9O1RydD1uZXcgbHQ7QmkuY29tcHV0ZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7cC50eXBlT2Yub2JqZWN0KCJib3giLHQpLG0oZSl8fChlPW5ldyBhdCk7bGV0IGk9dC5jZW50ZXIsbj1sdC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlKHQuaGFsZkF4ZXMsMixUcnQpO3JldHVybiBhdC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihuLGksZSl9O05ydD1uZXcgTnQ7QmkuaXNPY2NsdWRlZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9jY2x1ZGVyIGlzIHJlcXVpcmVkLiIpO2xldCBpPU50LmZyb21PcmllbnRlZEJvdW5kaW5nQm94KHQsTnJ0KTtyZXR1cm4hZS5pc0JvdW5kaW5nU3BoZXJlVmlzaWJsZShpKX07QmkucHJvdG90eXBlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBCaS5pbnRlcnNlY3RQbGFuZSh0aGlzLHQpfTtCaS5wcm90b3R5cGUuZGlzdGFuY2VTcXVhcmVkVG89ZnVuY3Rpb24odCl7cmV0dXJuIEJpLmRpc3RhbmNlU3F1YXJlZFRvKHRoaXMsdCl9O0JpLnByb3RvdHlwZS5jb21wdXRlUGxhbmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBCaS5jb21wdXRlUGxhbmVEaXN0YW5jZXModGhpcyx0LGUsaSl9O0JpLnByb3RvdHlwZS5jb21wdXRlQ29ybmVycz1mdW5jdGlvbih0KXtyZXR1cm4gQmkuY29tcHV0ZUNvcm5lcnModGhpcyx0KX07QmkucHJvdG90eXBlLmNvbXB1dGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gQmkuY29tcHV0ZVRyYW5zZm9ybWF0aW9uKHRoaXMsdCl9O0JpLnByb3RvdHlwZS5pc09jY2x1ZGVkPWZ1bmN0aW9uKHQpe3JldHVybiBCaS5pc09jY2x1ZGVkKHRoaXMsdCl9O0JpLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmbC5lcXVhbHModC5jZW50ZXIsZS5jZW50ZXIpJiZsdC5lcXVhbHModC5oYWxmQXhlcyxlLmhhbGZBeGVzKX07QmkucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBCaS5jbG9uZSh0aGlzLHQpfTtCaS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBCaS5lcXVhbHModGhpcyx0KX07enM9Qml9KTt2YXIgc3AsRnJ0LEFfLGhGPVMoKCk9PntIdCgpO3JpKCk7T3QoKTttdCgpO3NwPXt9O3NwLmdldEhlaWdodD1mdW5jdGlvbih0LGUsaSl7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgWSgic2NhbGUgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIuIik7aWYoIU51bWJlci5pc0Zpbml0ZShpKSl0aHJvdyBuZXcgWSgicmVsYXRpdmVIZWlnaHQgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIuIik7cmV0dXJuKHQtaSkqZStpfTtGcnQ9bmV3IHV0O3NwLmdldFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxpLG4scyl7bGV0IG89ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LEZydCk7aWYoIW0obykpcmV0dXJuIGwuY2xvbmUodCxzKTtsZXQgcj1zcC5nZXRIZWlnaHQoby5oZWlnaHQsaSxuKTtyZXR1cm4gbC5mcm9tUmFkaWFucyhvLmxvbmdpdHVkZSxvLmxhdGl0dWRlLHIsZSxzKX07QV89c3B9KTtmdW5jdGlvbiBxbSh0LGUsaSxuKXt0PVoodCwxKSxlPVooZSwxKSxpPVooaSwxKSxuPVoobiwxKSx0aGlzLnZhbHVlPW5ldyBVaW50OEFycmF5KFtadC5mbG9hdFRvQnl0ZSh0KSxadC5mbG9hdFRvQnl0ZShlKSxadC5mbG9hdFRvQnl0ZShpKSxadC5mbG9hdFRvQnl0ZShuKV0pfXZhciBCSixHSj1TKCgpPT57UW4oKTtvaSgpO0Z0KCk7bXQoKTtPdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHFtLnByb3RvdHlwZSx7Y29tcG9uZW50RGF0YXR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBBdC5VTlNJR05FRF9CWVRFfX0sY29tcG9uZW50c1BlckF0dHJpYnV0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDR9fSxub3JtYWxpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiEwfX19KTtxbS5mcm9tQ29sb3I9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImNvbG9yIGlzIHJlcXVpcmVkLiIpO3JldHVybiBuZXcgcW0odC5yZWQsdC5ncmVlbix0LmJsdWUsdC5hbHBoYSl9O3FtLnRvVmFsdWU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiY29sb3IgaXMgcmVxdWlyZWQuIik7cmV0dXJuIG0oZSk/dC50b0J5dGVzKGUpOm5ldyBVaW50OEFycmF5KHQudG9CeXRlcygpKX07cW0uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0LnZhbHVlWzBdPT09ZS52YWx1ZVswXSYmdC52YWx1ZVsxXT09PWUudmFsdWVbMV0mJnQudmFsdWVbMl09PT1lLnZhbHVlWzJdJiZ0LnZhbHVlWzNdPT09ZS52YWx1ZVszXX07Qko9cW19KTt2YXIgV0osREo9UygoKT0+e1dKPWBpbiB2ZWMzIHBvc2l0aW9uM0RIaWdoOwppbiB2ZWMzIHBvc2l0aW9uM0RMb3c7CmluIGZsb2F0IGJhdGNoSWQ7CgojaWZkZWYgRVhUUlVERURfR0VPTUVUUlkKaW4gdmVjMyBleHRydWRlRGlyZWN0aW9uOwoKdW5pZm9ybSBmbG9hdCB1X2dsb2JlTWluaW11bUFsdGl0dWRlOwojZW5kaWYgLy8gRVhUUlVERURfR0VPTUVUUlkKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKb3V0IHZlYzQgdl9jb2xvcjsKI2VuZGlmIC8vIFBFUl9JTlNUQU5DRV9DT0xPUgoKI2lmZGVmIFRFWFRVUkVfQ09PUkRJTkFURVMKI2lmZGVmIFNQSEVSSUNBTApvdXQgdmVjNCB2X3NwaGVyaWNhbEV4dGVudHM7CiNlbHNlIC8vIFNQSEVSSUNBTApvdXQgdmVjMiB2X2ludmVyc2VQbGFuZUV4dGVudHM7Cm91dCB2ZWM0IHZfd2VzdFBsYW5lOwpvdXQgdmVjNCB2X3NvdXRoUGxhbmU7CiNlbmRpZiAvLyBTUEhFUklDQUwKb3V0IHZlYzMgdl91dk1pbkFuZFNwaGVyaWNhbExvbmdpdHVkZVJvdGF0aW9uOwpvdXQgdmVjMyB2X3VNYXhBbmRJbnZlcnNlRGlzdGFuY2U7Cm91dCB2ZWMzIHZfdk1heEFuZEludmVyc2VEaXN0YW5jZTsKI2VuZGlmIC8vIFRFWFRVUkVfQ09PUkRJTkFURVMKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgcG9zaXRpb24gPSBjem1fY29tcHV0ZVBvc2l0aW9uKCk7CgojaWZkZWYgRVhUUlVERURfR0VPTUVUUlkKICAgIGZsb2F0IGRlbHRhID0gbWluKHVfZ2xvYmVNaW5pbXVtQWx0aXR1ZGUsIGN6bV9nZW9tZXRyaWNUb2xlcmFuY2VPdmVyTWV0ZXIgKiBsZW5ndGgocG9zaXRpb24ueHl6KSk7CiAgICBkZWx0YSAqPSBjem1fc2NlbmVNb2RlID09IGN6bV9zY2VuZU1vZGUzRCA/IDEuMCA6IDAuMDsKCiAgICAvL2V4dHJ1ZGVEaXJlY3Rpb24gaXMgemVybyBmb3IgdGhlIHRvcCBsYXllcgogICAgcG9zaXRpb24gPSBwb3NpdGlvbiArIHZlYzQoZXh0cnVkZURpcmVjdGlvbiAqIGRlbHRhLCAwLjApOwojZW5kaWYKCiNpZmRlZiBURVhUVVJFX0NPT1JESU5BVEVTCiNpZmRlZiBTUEhFUklDQUwKICAgIHZfc3BoZXJpY2FsRXh0ZW50cyA9IGN6bV9iYXRjaFRhYmxlX3NwaGVyaWNhbEV4dGVudHMoYmF0Y2hJZCk7CiAgICB2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb24ueiA9IGN6bV9iYXRjaFRhYmxlX2xvbmdpdHVkZVJvdGF0aW9uKGJhdGNoSWQpOwojZWxzZSAvLyBTUEhFUklDQUwKI2lmZGVmIENPTFVNQlVTX1ZJRVdfMkQKICAgIHZlYzQgcGxhbmVzMkRfaGlnaCA9IGN6bV9iYXRjaFRhYmxlX3BsYW5lczJEX0hJR0goYmF0Y2hJZCk7CiAgICB2ZWM0IHBsYW5lczJEX2xvdyA9IGN6bV9iYXRjaFRhYmxlX3BsYW5lczJEX0xPVyhiYXRjaElkKTsKCiAgICAvLyBJZiB0aGUgcHJpbWl0aXZlIGlzIHNwbGl0IGFjcm9zcyB0aGUgSURMIChwbGFuZXMyRF9oaWdoLnggPiBwbGFuZXMyRF9oaWdoLncpOgogICAgLy8gLSBJZiB0aGlzIHZlcnRleCBpcyBvbiB0aGUgZWFzdCBzaWRlIG9mIHRoZSBJREwgKHBvc2l0aW9uM0RMb3cueSA+IDAuMCwgY29tcGFyaXNvbiB3aXRoIHBvc2l0aW9uM0RIaWdoIG1heSBwcm9kdWNlIGFydGlmYWN0cykKICAgIC8vIC0gZXhpc3RpbmcgImVhc3QiIGlzIG9uIHRoZSB3cm9uZyBzaWRlIG9mIHRoZSB3b3JsZCwgZmFyIGF3YXkgKHBsYW5lczJEX2hpZ2gvbG93LncpCiAgICAvLyAtIHNvIHNldCAiZWFzdCIgYXMgYmV5b25kIHRoZSBlYXN0bW9zdCBleHRlbnQgb2YgdGhlIHByb2plY3Rpb24gKGlkbFNwbGl0TmV3UGxhbmVIaUxvdykKICAgIHZlYzIgaWRsU3BsaXROZXdQbGFuZUhpTG93ID0gdmVjMihFQVNUX01PU1RfWF9ISUdIIC0gKFdFU1RfTU9TVF9YX0hJR0ggLSBwbGFuZXMyRF9oaWdoLncpLCBFQVNUX01PU1RfWF9MT1cgLSAoV0VTVF9NT1NUX1hfTE9XIC0gcGxhbmVzMkRfbG93LncpKTsKICAgIGJvb2wgaWRsU3BsaXQgPSBwbGFuZXMyRF9oaWdoLnggPiBwbGFuZXMyRF9oaWdoLncgJiYgcG9zaXRpb24zRExvdy55ID4gMC4wOwogICAgcGxhbmVzMkRfaGlnaC53ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueCwgcGxhbmVzMkRfaGlnaC53KTsKICAgIHBsYW5lczJEX2xvdy53ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueSwgcGxhbmVzMkRfbG93LncpOwoKICAgIC8vIC0gZWxzZSwgaWYgdGhpcyB2ZXJ0ZXggaXMgb24gdGhlIHdlc3Qgc2lkZSBvZiB0aGUgSURMIChwb3NpdGlvbjNETG93LnkgPCAwLjApCiAgICAvLyAtIGV4aXN0aW5nICJ3ZXN0IiBpcyBvbiB0aGUgd3Jvbmcgc2lkZSBvZiB0aGUgd29ybGQsIGZhciBhd2F5IChwbGFuZXMyRF9oaWdoL2xvdy54KQogICAgLy8gLSBzbyBzZXQgIndlc3QiIGFzIGJleW9uZCB0aGUgd2VzdG1vc3QgZXh0ZW50IG9mIHRoZSBwcm9qZWN0aW9uIChpZGxTcGxpdE5ld1BsYW5lSGlMb3cpCiAgICBpZGxTcGxpdCA9IHBsYW5lczJEX2hpZ2gueCA+IHBsYW5lczJEX2hpZ2gudyAmJiBwb3NpdGlvbjNETG93LnkgPCAwLjA7CiAgICBpZGxTcGxpdE5ld1BsYW5lSGlMb3cgPSB2ZWMyKFdFU1RfTU9TVF9YX0hJR0ggLSAoRUFTVF9NT1NUX1hfSElHSCAtIHBsYW5lczJEX2hpZ2gueCksIFdFU1RfTU9TVF9YX0xPVyAtIChFQVNUX01PU1RfWF9MT1cgLSBwbGFuZXMyRF9sb3cueCkpOwogICAgcGxhbmVzMkRfaGlnaC54ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueCwgcGxhbmVzMkRfaGlnaC54KTsKICAgIHBsYW5lczJEX2xvdy54ID0gY3ptX2JyYW5jaEZyZWVUZXJuYXJ5KGlkbFNwbGl0LCBpZGxTcGxpdE5ld1BsYW5lSGlMb3cueSwgcGxhbmVzMkRfbG93LngpOwoKICAgIHZlYzMgc291dGhXZXN0Q29ybmVyID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHBsYW5lczJEX2hpZ2gueHkpLCB2ZWMzKDAuMCwgcGxhbmVzMkRfbG93Lnh5KSkpLnh5ejsKICAgIHZlYzMgbm9ydGhXZXN0Q29ybmVyID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUodmVjMygwLjAsIHBsYW5lczJEX2hpZ2gueCwgcGxhbmVzMkRfaGlnaC56KSwgdmVjMygwLjAsIHBsYW5lczJEX2xvdy54LCBwbGFuZXMyRF9sb3cueikpKS54eXo7CiAgICB2ZWMzIHNvdXRoRWFzdENvcm5lciA9IChjem1fbW9kZWxWaWV3UmVsYXRpdmVUb0V5ZSAqIGN6bV90cmFuc2xhdGVSZWxhdGl2ZVRvRXllKHZlYzMoMC4wLCBwbGFuZXMyRF9oaWdoLncsIHBsYW5lczJEX2hpZ2gueSksIHZlYzMoMC4wLCBwbGFuZXMyRF9sb3cudywgcGxhbmVzMkRfbG93LnkpKSkueHl6OwojZWxzZSAvLyBDT0xVTUJVU19WSUVXXzJECiAgICAvLyAzRCBjYXNlIGhhcyBzbWFsbGVyICJwbGFuZSBleHRlbnRzLCIgc28gcGxhbmVzIGVuY29kZWQgYXMgYSA2NCBiaXQgcG9zaXRpb24gYW5kIDIgdmVjM3MgZm9yIGRpc3RhbmNlcy9kaXJlY3Rpb24KICAgIHZlYzMgc291dGhXZXN0Q29ybmVyID0gKGN6bV9tb2RlbFZpZXdSZWxhdGl2ZVRvRXllICogY3ptX3RyYW5zbGF0ZVJlbGF0aXZlVG9FeWUoY3ptX2JhdGNoVGFibGVfc291dGhXZXN0X0hJR0goYmF0Y2hJZCksIGN6bV9iYXRjaFRhYmxlX3NvdXRoV2VzdF9MT1coYmF0Y2hJZCkpKS54eXo7CiAgICB2ZWMzIG5vcnRoV2VzdENvcm5lciA9IGN6bV9ub3JtYWwgKiBjem1fYmF0Y2hUYWJsZV9ub3J0aHdhcmQoYmF0Y2hJZCkgKyBzb3V0aFdlc3RDb3JuZXI7CiAgICB2ZWMzIHNvdXRoRWFzdENvcm5lciA9IGN6bV9ub3JtYWwgKiBjem1fYmF0Y2hUYWJsZV9lYXN0d2FyZChiYXRjaElkKSArIHNvdXRoV2VzdENvcm5lcjsKI2VuZGlmIC8vIENPTFVNQlVTX1ZJRVdfMkQKCiAgICB2ZWMzIGVhc3RXYXJkID0gc291dGhFYXN0Q29ybmVyIC0gc291dGhXZXN0Q29ybmVyOwogICAgZmxvYXQgZWFzdEV4dGVudCA9IGxlbmd0aChlYXN0V2FyZCk7CiAgICBlYXN0V2FyZCAvPSBlYXN0RXh0ZW50OwoKICAgIHZlYzMgbm9ydGhXYXJkID0gbm9ydGhXZXN0Q29ybmVyIC0gc291dGhXZXN0Q29ybmVyOwogICAgZmxvYXQgbm9ydGhFeHRlbnQgPSBsZW5ndGgobm9ydGhXYXJkKTsKICAgIG5vcnRoV2FyZCAvPSBub3J0aEV4dGVudDsKCiAgICB2X3dlc3RQbGFuZSA9IHZlYzQoZWFzdFdhcmQsIC1kb3QoZWFzdFdhcmQsIHNvdXRoV2VzdENvcm5lcikpOwogICAgdl9zb3V0aFBsYW5lID0gdmVjNChub3J0aFdhcmQsIC1kb3Qobm9ydGhXYXJkLCBzb3V0aFdlc3RDb3JuZXIpKTsKICAgIHZfaW52ZXJzZVBsYW5lRXh0ZW50cyA9IHZlYzIoMS4wIC8gZWFzdEV4dGVudCwgMS4wIC8gbm9ydGhFeHRlbnQpOwojZW5kaWYgLy8gU1BIRVJJQ0FMCiAgICB2ZWM0IHV2TWluQW5kRXh0ZW50cyA9IGN6bV9iYXRjaFRhYmxlX3V2TWluQW5kRXh0ZW50cyhiYXRjaElkKTsKICAgIHZlYzQgdU1heFZtYXggPSBjem1fYmF0Y2hUYWJsZV91TWF4Vm1heChiYXRjaElkKTsKCiAgICB2X3VNYXhBbmRJbnZlcnNlRGlzdGFuY2UgPSB2ZWMzKHVNYXhWbWF4Lnh5LCB1dk1pbkFuZEV4dGVudHMueik7CiAgICB2X3ZNYXhBbmRJbnZlcnNlRGlzdGFuY2UgPSB2ZWMzKHVNYXhWbWF4Lnp3LCB1dk1pbkFuZEV4dGVudHMudyk7CiAgICB2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb24ueHkgPSB1dk1pbkFuZEV4dGVudHMueHk7CiNlbmRpZiAvLyBURVhUVVJFX0NPT1JESU5BVEVTCgojaWZkZWYgUEVSX0lOU1RBTkNFX0NPTE9SCiAgICB2X2NvbG9yID0gY3ptX2JhdGNoVGFibGVfY29sb3IoYmF0Y2hJZCk7CiNlbmRpZgoKICAgIGdsX1Bvc2l0aW9uID0gY3ptX2RlcHRoQ2xhbXAoY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcG9zaXRpb24pOwp9CmB9KTt2YXIgVUosTUo9UygoKT0+e1VKPWAjaWZkZWYgVkVDVE9SX1RJTEUKdW5pZm9ybSB2ZWM0IHVfaGlnaGxpZ2h0Q29sb3I7CiNlbmRpZgoKdm9pZCBtYWluKHZvaWQpCnsKI2lmZGVmIFZFQ1RPUl9USUxFCiAgICBvdXRfRnJhZ0NvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh1X2hpZ2hsaWdodENvbG9yKTsKI2Vsc2UKICAgIG91dF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7CiNlbmRpZgogICAgY3ptX3dyaXRlRGVwdGhDbGFtcCgpOwp9CmB9KTt2YXIgUUosa0o9UygoKT0+e1FKPWBpbiB2ZWMzIHZfcG9zaXRpb25FQzsKaW4gdmVjMyB2X25vcm1hbEVDOwppbiB2ZWM0IHZfY29sb3I7Cgp2b2lkIG1haW4oKQp7CiAgICB2ZWMzIHBvc2l0aW9uVG9FeWVFQyA9IC12X3Bvc2l0aW9uRUM7CgogICAgdmVjMyBub3JtYWxFQyA9IG5vcm1hbGl6ZSh2X25vcm1hbEVDKTsKI2lmZGVmIEZBQ0VfRk9SV0FSRAogICAgbm9ybWFsRUMgPSBmYWNlZm9yd2FyZChub3JtYWxFQywgdmVjMygwLjAsIDAuMCwgMS4wKSwgLW5vcm1hbEVDKTsKI2VuZGlmCgogICAgdmVjNCBjb2xvciA9IGN6bV9nYW1tYUNvcnJlY3Qodl9jb2xvcik7CgogICAgY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dDsKICAgIG1hdGVyaWFsSW5wdXQubm9ybWFsRUMgPSBub3JtYWxFQzsKICAgIG1hdGVyaWFsSW5wdXQucG9zaXRpb25Ub0V5ZUVDID0gcG9zaXRpb25Ub0V5ZUVDOwogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBjb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGNvbG9yLmE7CgogICAgb3V0X0ZyYWdDb2xvciA9IGN6bV9waG9uZyhub3JtYWxpemUocG9zaXRpb25Ub0V5ZUVDKSwgbWF0ZXJpYWwsIGN6bV9saWdodERpcmVjdGlvbkVDKTsKfQpgfSk7dmFyIExKLHlKPVMoKCk9PntMSj1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwppbiB2ZWMzIG5vcm1hbDsKaW4gdmVjNCBjb2xvcjsKaW4gZmxvYXQgYmF0Y2hJZDsKCm91dCB2ZWMzIHZfcG9zaXRpb25FQzsKb3V0IHZlYzMgdl9ub3JtYWxFQzsKb3V0IHZlYzQgdl9jb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgcCA9IGN6bV9jb21wdXRlUG9zaXRpb24oKTsKCiAgICB2X3Bvc2l0aW9uRUMgPSAoY3ptX21vZGVsVmlld1JlbGF0aXZlVG9FeWUgKiBwKS54eXo7ICAgICAgLy8gcG9zaXRpb24gaW4gZXllIGNvb3JkaW5hdGVzCiAgICB2X25vcm1hbEVDID0gY3ptX25vcm1hbCAqIG5vcm1hbDsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsIGluIGV5ZSBjb29yZGluYXRlcwogICAgdl9jb2xvciA9IGNvbG9yOwoKICAgIGdsX1Bvc2l0aW9uID0gY3ptX21vZGVsVmlld1Byb2plY3Rpb25SZWxhdGl2ZVRvRXllICogcDsKfQpgfSk7dmFyIHdKLHhKPVMoKCk9Pnt3Sj1gaW4gdmVjMyBwb3NpdGlvbjNESGlnaDsKaW4gdmVjMyBwb3NpdGlvbjNETG93OwppbiB2ZWM0IGNvbG9yOwppbiBmbG9hdCBiYXRjaElkOwoKb3V0IHZlYzQgdl9jb2xvcjsKCnZvaWQgbWFpbigpCnsKICAgIHZlYzQgcCA9IGN6bV9jb21wdXRlUG9zaXRpb24oKTsKCiAgICB2X2NvbG9yID0gY29sb3I7CgogICAgZ2xfUG9zaXRpb24gPSBjem1fbW9kZWxWaWV3UHJvamVjdGlvblJlbGF0aXZlVG9FeWUgKiBwOwp9CmB9KTtmdW5jdGlvbiB1aCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9Wih0LnRyYW5zbHVjZW50LCEwKSxpPVoodC5jbG9zZWQsITEpLG49Wih0LmZsYXQsITEpLHM9bj93SjpMSixvPW4/UUk6UUoscj1uP3VoLkZMQVRfVkVSVEVYX0ZPUk1BVDp1aC5WRVJURVhfRk9STUFUO3RoaXMubWF0ZXJpYWw9dm9pZCAwLHRoaXMudHJhbnNsdWNlbnQ9ZSx0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2U9Wih0LnZlcnRleFNoYWRlclNvdXJjZSxzKSx0aGlzLl9mcmFnbWVudFNoYWRlclNvdXJjZT1aKHQuZnJhZ21lbnRTaGFkZXJTb3VyY2UsbyksdGhpcy5fcmVuZGVyU3RhdGU9TW8uZ2V0RGVmYXVsdFJlbmRlclN0YXRlKGUsaSx0LnJlbmRlclN0YXRlKSx0aGlzLl9jbG9zZWQ9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cix0aGlzLl9mbGF0PW4sdGhpcy5fZmFjZUZvcndhcmQ9Wih0LmZhY2VGb3J3YXJkLCFpKX12YXIgRGEsb3A9UygoKT0+e0Z0KCk7THMoKTtrSigpO3lKKCk7Qk4oKTt4SigpO0xJKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModWgucHJvdG90eXBlLHt2ZXJ0ZXhTaGFkZXJTb3VyY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92ZXJ0ZXhTaGFkZXJTb3VyY2V9fSxmcmFnbWVudFNoYWRlclNvdXJjZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYWdtZW50U2hhZGVyU291cmNlfX0scmVuZGVyU3RhdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZW5kZXJTdGF0ZX19LGNsb3NlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nsb3NlZH19LHZlcnRleEZvcm1hdDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnRleEZvcm1hdH19LGZsYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mbGF0fX0sZmFjZUZvcndhcmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mYWNlRm9yd2FyZH19fSk7dWguVkVSVEVYX0ZPUk1BVD1TdC5QT1NJVElPTl9BTkRfTk9STUFMO3VoLkZMQVRfVkVSVEVYX0ZPUk1BVD1TdC5QT1NJVElPTl9PTkxZO3VoLnByb3RvdHlwZS5nZXRGcmFnbWVudFNoYWRlclNvdXJjZT1Nby5wcm90b3R5cGUuZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2U7dWgucHJvdG90eXBlLmlzVHJhbnNsdWNlbnQ9TW8ucHJvdG90eXBlLmlzVHJhbnNsdWNlbnQ7dWgucHJvdG90eXBlLmdldFJlbmRlclN0YXRlPU1vLnByb3RvdHlwZS5nZXRSZW5kZXJTdGF0ZTtEYT11aH0pO3ZhciBjRixQSj1TKCgpPT57Y0Y9YCNpZmRlZiBURVhUVVJFX0NPT1JESU5BVEVTCiNpZmRlZiBTUEhFUklDQUwKaW4gdmVjNCB2X3NwaGVyaWNhbEV4dGVudHM7CiNlbHNlIC8vIFNQSEVSSUNBTAppbiB2ZWMyIHZfaW52ZXJzZVBsYW5lRXh0ZW50czsKaW4gdmVjNCB2X3dlc3RQbGFuZTsKaW4gdmVjNCB2X3NvdXRoUGxhbmU7CiNlbmRpZiAvLyBTUEhFUklDQUwKaW4gdmVjMyB2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb247CmluIHZlYzMgdl91TWF4QW5kSW52ZXJzZURpc3RhbmNlOwppbiB2ZWMzIHZfdk1heEFuZEludmVyc2VEaXN0YW5jZTsKI2VuZGlmIC8vIFRFWFRVUkVfQ09PUkRJTkFURVMKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKaW4gdmVjNCB2X2NvbG9yOwojZW5kaWYKCiNpZmRlZiBOT1JNQUxfRUMKdmVjMyBnZXRFeWVDb29yZGluYXRlM0Zyb21XaW5kb3dDb29yZGluYXRlKHZlYzIgZnJhZ0Nvb3JkLCBmbG9hdCBsb2dEZXB0aE9yRGVwdGgpIHsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV93aW5kb3dUb0V5ZUNvb3JkaW5hdGVzKGZyYWdDb29yZCwgbG9nRGVwdGhPckRlcHRoKTsKICAgIHJldHVybiBleWVDb29yZGluYXRlLnh5eiAvIGV5ZUNvb3JkaW5hdGUudzsKfQoKdmVjMyB2ZWN0b3JGcm9tT2Zmc2V0KHZlYzQgZXllQ29vcmRpbmF0ZSwgdmVjMiBwb3NpdGl2ZU9mZnNldCkgewogICAgdmVjMiBnbEZyYWdDb29yZFhZID0gZ2xfRnJhZ0Nvb3JkLnh5OwogICAgLy8gU2FtcGxlIGRlcHRocyBhdCBib3RoIG9mZnNldCBhbmQgbmVnYXRpdmUgb2Zmc2V0CiAgICBmbG9hdCB1cE9yUmlnaHRMb2dEZXB0aCA9IGN6bV91bnBhY2tEZXB0aCh0ZXh0dXJlKGN6bV9nbG9iZURlcHRoVGV4dHVyZSwgKGdsRnJhZ0Nvb3JkWFkgKyBwb3NpdGl2ZU9mZnNldCkgLyBjem1fdmlld3BvcnQuencpKTsKICAgIGZsb2F0IGRvd25PckxlZnRMb2dEZXB0aCA9IGN6bV91bnBhY2tEZXB0aCh0ZXh0dXJlKGN6bV9nbG9iZURlcHRoVGV4dHVyZSwgKGdsRnJhZ0Nvb3JkWFkgLSBwb3NpdGl2ZU9mZnNldCkgLyBjem1fdmlld3BvcnQuencpKTsKICAgIC8vIEV4cGxpY2l0bHkgZXZhbHVhdGUgYm90aCBwYXRocwogICAgLy8gTmVjZXNzYXJ5IGZvciBtdWx0aWZydXN0dW0gYW5kIGZvciBlZGdlcyBvZiB0aGUgc2NyZWVuCiAgICBidmVjMiB1cE9yUmlnaHRJbkJvdW5kcyA9IGxlc3NUaGFuKGdsRnJhZ0Nvb3JkWFkgKyBwb3NpdGl2ZU9mZnNldCwgY3ptX3ZpZXdwb3J0Lnp3KTsKICAgIGZsb2F0IHVzZVVwT3JSaWdodCA9IGZsb2F0KHVwT3JSaWdodExvZ0RlcHRoID4gMC4wICYmIHVwT3JSaWdodEluQm91bmRzLnggJiYgdXBPclJpZ2h0SW5Cb3VuZHMueSk7CiAgICBmbG9hdCB1c2VEb3duT3JMZWZ0ID0gZmxvYXQodXNlVXBPclJpZ2h0ID09IDAuMCk7CiAgICB2ZWMzIHVwT3JSaWdodEVDID0gZ2V0RXllQ29vcmRpbmF0ZTNGcm9tV2luZG93Q29vcmRpbmF0ZShnbEZyYWdDb29yZFhZICsgcG9zaXRpdmVPZmZzZXQsIHVwT3JSaWdodExvZ0RlcHRoKTsKICAgIHZlYzMgZG93bk9yTGVmdEVDID0gZ2V0RXllQ29vcmRpbmF0ZTNGcm9tV2luZG93Q29vcmRpbmF0ZShnbEZyYWdDb29yZFhZIC0gcG9zaXRpdmVPZmZzZXQsIGRvd25PckxlZnRMb2dEZXB0aCk7CiAgICByZXR1cm4gKHVwT3JSaWdodEVDIC0gKGV5ZUNvb3JkaW5hdGUueHl6IC8gZXllQ29vcmRpbmF0ZS53KSkgKiB1c2VVcE9yUmlnaHQgKyAoKGV5ZUNvb3JkaW5hdGUueHl6IC8gZXllQ29vcmRpbmF0ZS53KSAtIGRvd25PckxlZnRFQykgKiB1c2VEb3duT3JMZWZ0Owp9CiNlbmRpZiAvLyBOT1JNQUxfRUMKCnZvaWQgbWFpbih2b2lkKQp7CiNpZmRlZiBSRVFVSVJFU19FQwogICAgZmxvYXQgbG9nRGVwdGhPckRlcHRoID0gY3ptX3VucGFja0RlcHRoKHRleHR1cmUoY3ptX2dsb2JlRGVwdGhUZXh0dXJlLCBnbF9GcmFnQ29vcmQueHkgLyBjem1fdmlld3BvcnQuencpKTsKICAgIHZlYzQgZXllQ29vcmRpbmF0ZSA9IGN6bV93aW5kb3dUb0V5ZUNvb3JkaW5hdGVzKGdsX0ZyYWdDb29yZC54eSwgbG9nRGVwdGhPckRlcHRoKTsKI2VuZGlmCgojaWZkZWYgUkVRVUlSRVNfV0MKICAgIHZlYzQgd29ybGRDb29yZGluYXRlNCA9IGN6bV9pbnZlcnNlVmlldyAqIGV5ZUNvb3JkaW5hdGU7CiAgICB2ZWMzIHdvcmxkQ29vcmRpbmF0ZSA9IHdvcmxkQ29vcmRpbmF0ZTQueHl6IC8gd29ybGRDb29yZGluYXRlNC53OwojZW5kaWYKCiNpZmRlZiBURVhUVVJFX0NPT1JESU5BVEVTCiAgICB2ZWMyIHV2OwojaWZkZWYgU1BIRVJJQ0FMCiAgICAvLyBUcmVhdCB3b3JsZCBjb29yZHMgYXMgYSBzcGhlcmUgbm9ybWFsIGZvciBzcGhlcmljYWwgY29vcmRpbmF0ZXMKICAgIHZlYzIgc3BoZXJpY2FsTGF0TG9uZyA9IGN6bV9hcHByb3hpbWF0ZVNwaGVyaWNhbENvb3JkaW5hdGVzKHdvcmxkQ29vcmRpbmF0ZSk7CiAgICBzcGhlcmljYWxMYXRMb25nLnkgKz0gdl91dk1pbkFuZFNwaGVyaWNhbExvbmdpdHVkZVJvdGF0aW9uLno7CiAgICBzcGhlcmljYWxMYXRMb25nLnkgPSBjem1fYnJhbmNoRnJlZVRlcm5hcnkoc3BoZXJpY2FsTGF0TG9uZy55IDwgY3ptX3BpLCBzcGhlcmljYWxMYXRMb25nLnksIHNwaGVyaWNhbExhdExvbmcueSAtIGN6bV90d29QaSk7CiAgICB1di54ID0gKHNwaGVyaWNhbExhdExvbmcueSAtIHZfc3BoZXJpY2FsRXh0ZW50cy55KSAqIHZfc3BoZXJpY2FsRXh0ZW50cy53OwogICAgdXYueSA9IChzcGhlcmljYWxMYXRMb25nLnggLSB2X3NwaGVyaWNhbEV4dGVudHMueCkgKiB2X3NwaGVyaWNhbEV4dGVudHMuejsKI2Vsc2UgLy8gU1BIRVJJQ0FMCiAgICAvLyBVbnBhY2sgcGxhbmVzIGFuZCB0cmFuc2Zvcm0gdG8gZXllIHNwYWNlCiAgICB1di54ID0gY3ptX3BsYW5lRGlzdGFuY2Uodl93ZXN0UGxhbmUsIGV5ZUNvb3JkaW5hdGUueHl6IC8gZXllQ29vcmRpbmF0ZS53KSAqIHZfaW52ZXJzZVBsYW5lRXh0ZW50cy54OwogICAgdXYueSA9IGN6bV9wbGFuZURpc3RhbmNlKHZfc291dGhQbGFuZSwgZXllQ29vcmRpbmF0ZS54eXogLyBleWVDb29yZGluYXRlLncpICogdl9pbnZlcnNlUGxhbmVFeHRlbnRzLnk7CiNlbmRpZiAvLyBTUEhFUklDQUwKI2VuZGlmIC8vIFRFWFRVUkVfQ09PUkRJTkFURVMKCiNpZmRlZiBQSUNLCiNpZmRlZiBDVUxMX0ZSQUdNRU5UUwogICAgLy8gV2hlbiBjbGFzc2lmeWluZyB0cmFuc2x1Y2VudCBnZW9tZXRyeSwgbG9nRGVwdGhPckRlcHRoID09IDAuMAogICAgLy8gaW5kaWNhdGVzIGEgcmVnaW9uIHRoYXQgc2hvdWxkIG5vdCBiZSBjbGFzc2lmaWVkLCBwb3NzaWJseSBkdWUgdG8gdGhlcmUKICAgIC8vIGJlaW5nIG9wYXF1ZSBwaXhlbHMgdGhlcmUgaW4gYW5vdGhlciBidWZmZXIuCiAgICAvLyBDaGVjayBmb3IgbG9nRGVwdGhPckRlcHRoICE9IDAuMCB0byBtYWtlIHN1cmUgdGhpcyBzaG91bGQgYmUgY2xhc3NpZmllZC4KICAgIGlmICgwLjAgPD0gdXYueCAmJiB1di54IDw9IDEuMCAmJiAwLjAgPD0gdXYueSAmJiB1di55IDw9IDEuMCB8fCBsb2dEZXB0aE9yRGVwdGggIT0gMC4wKSB7CiAgICAgICAgb3V0X0ZyYWdDb2xvci5hID0gMS4wOyAvLyAwLjAgYWxwaGEgbGVhZHMgdG8gZGlzY2FyZCBmcm9tIFNoYWRlclNvdXJjZS5jcmVhdGVQaWNrRnJhZ21lbnRTaGFkZXJTb3VyY2UKICAgICAgICBjem1fd3JpdGVEZXB0aENsYW1wKCk7CiAgICB9CiNlbHNlIC8vIENVTExfRlJBR01FTlRTCiAgICAgICAgb3V0X0ZyYWdDb2xvci5hID0gMS4wOwojZW5kaWYgLy8gQ1VMTF9GUkFHTUVOVFMKI2Vsc2UgLy8gUElDSwoKI2lmZGVmIENVTExfRlJBR01FTlRTCiAgICAvLyBXaGVuIGNsYXNzaWZ5aW5nIHRyYW5zbHVjZW50IGdlb21ldHJ5LCBsb2dEZXB0aE9yRGVwdGggPT0gMC4wCiAgICAvLyBpbmRpY2F0ZXMgYSByZWdpb24gdGhhdCBzaG91bGQgbm90IGJlIGNsYXNzaWZpZWQsIHBvc3NpYmx5IGR1ZSB0byB0aGVyZQogICAgLy8gYmVpbmcgb3BhcXVlIHBpeGVscyB0aGVyZSBpbiBhbm90aGVyIGJ1ZmZlci4KICAgIGlmICh1di54IDw9IDAuMCB8fCAxLjAgPD0gdXYueCB8fCB1di55IDw9IDAuMCB8fCAxLjAgPD0gdXYueSB8fCBsb2dEZXB0aE9yRGVwdGggPT0gMC4wKSB7CiAgICAgICAgZGlzY2FyZDsKICAgIH0KI2VuZGlmCgojaWZkZWYgTk9STUFMX0VDCiAgICAvLyBDb21wdXRlIG5vcm1hbCBieSBzYW1wbGluZyBhZGphY2VudCBwaXhlbHMgaW4gMngyIGJsb2NrIGluIHNjcmVlbiBzcGFjZQogICAgdmVjMyBkb3duVXAgPSB2ZWN0b3JGcm9tT2Zmc2V0KGV5ZUNvb3JkaW5hdGUsIHZlYzIoMC4wLCAxLjApKTsKICAgIHZlYzMgbGVmdFJpZ2h0ID0gdmVjdG9yRnJvbU9mZnNldChleWVDb29yZGluYXRlLCB2ZWMyKDEuMCwgMC4wKSk7CiAgICB2ZWMzIG5vcm1hbEVDID0gbm9ybWFsaXplKGNyb3NzKGxlZnRSaWdodCwgZG93blVwKSk7CiNlbmRpZgoKCiNpZmRlZiBQRVJfSU5TVEFOQ0VfQ09MT1IKCiAgICB2ZWM0IGNvbG9yID0gY3ptX2dhbW1hQ29ycmVjdCh2X2NvbG9yKTsKI2lmZGVmIEZMQVQKICAgIG91dF9GcmFnQ29sb3IgPSBjb2xvcjsKI2Vsc2UgLy8gRkxBVAogICAgY3ptX21hdGVyaWFsSW5wdXQgbWF0ZXJpYWxJbnB1dDsKICAgIG1hdGVyaWFsSW5wdXQubm9ybWFsRUMgPSBub3JtYWxFQzsKICAgIG1hdGVyaWFsSW5wdXQucG9zaXRpb25Ub0V5ZUVDID0gLWV5ZUNvb3JkaW5hdGUueHl6OwogICAgY3ptX21hdGVyaWFsIG1hdGVyaWFsID0gY3ptX2dldERlZmF1bHRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKICAgIG1hdGVyaWFsLmRpZmZ1c2UgPSBjb2xvci5yZ2I7CiAgICBtYXRlcmlhbC5hbHBoYSA9IGNvbG9yLmE7CgogICAgb3V0X0ZyYWdDb2xvciA9IGN6bV9waG9uZyhub3JtYWxpemUoLWV5ZUNvb3JkaW5hdGUueHl6KSwgbWF0ZXJpYWwsIGN6bV9saWdodERpcmVjdGlvbkVDKTsKI2VuZGlmIC8vIEZMQVQKCiAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4gUmVxdWlyZWQgZm9yIGNsYXNzaWZpY2F0aW9uIHByaW1pdGl2ZXMgb24gdHJhbnNsdWNlbnQgZ2xvYmUuCiAgICBvdXRfRnJhZ0NvbG9yLnJnYiAqPSBvdXRfRnJhZ0NvbG9yLmE7CgojZWxzZSAvLyBQRVJfSU5TVEFOQ0VfQ09MT1IKCiAgICAvLyBNYXRlcmlhbCBzdXBwb3J0LgogICAgLy8gVVNFU18gaXMgZGlzdGluY3QgZnJvbSBSRVFVSVJFU18sIGJlY2F1c2Ugc29tZSB0aGluZ3MgYXJlIGRlcGVuZGVuY2llcyBvZiBlYWNoIG90aGVyIG9yCiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGN1bGxpbmcgYnV0IG1pZ2h0IG5vdCBhY3R1YWxseSBiZSB1c2VkIGJ5IHRoZSBtYXRlcmlhbC4KCiAgICBjem1fbWF0ZXJpYWxJbnB1dCBtYXRlcmlhbElucHV0OwoKI2lmZGVmIFVTRVNfTk9STUFMX0VDCiAgICBtYXRlcmlhbElucHV0Lm5vcm1hbEVDID0gbm9ybWFsRUM7CiNlbmRpZgoKI2lmZGVmIFVTRVNfUE9TSVRJT05fVE9fRVlFX0VDCiAgICBtYXRlcmlhbElucHV0LnBvc2l0aW9uVG9FeWVFQyA9IC1leWVDb29yZGluYXRlLnh5ejsKI2VuZGlmCgojaWZkZWYgVVNFU19UQU5HRU5UX1RPX0VZRQogICAgbWF0ZXJpYWxJbnB1dC50YW5nZW50VG9FeWVNYXRyaXggPSBjem1fZWFzdE5vcnRoVXBUb0V5ZUNvb3JkaW5hdGVzKHdvcmxkQ29vcmRpbmF0ZSwgbm9ybWFsRUMpOwojZW5kaWYKCiNpZmRlZiBVU0VTX1NUCiAgICAvLyBSZW1hcCB0ZXh0dXJlIGNvb3JkaW5hdGVzIGZyb20gY29tcHV0ZWQgKGFwcHJveGltYXRlbHkgYWxpZ25lZCB3aXRoIGNhcnRvZ3JhcGhpYyBzcGFjZSkgdG8gdGhlIGRlc2lyZWQKICAgIC8vIHRleHR1cmUgY29vcmRpbmF0ZSBzeXN0ZW0sIHdoaWNoIHR5cGljYWxseSBmb3JtcyBhIHRpZ2h0IG9yaWVudGVkIGJvdW5kaW5nIGJveCBhcm91bmQgdGhlIGdlb21ldHJ5LgogICAgLy8gU2hhZGVyIGlzIHByb3ZpZGVkIGEgc2V0IG9mIHJlZmVyZW5jZSBwb2ludHMgZm9yIHJlbWFwcGluZy4KICAgIG1hdGVyaWFsSW5wdXQuc3QueCA9IGN6bV9saW5lRGlzdGFuY2Uodl91dk1pbkFuZFNwaGVyaWNhbExvbmdpdHVkZVJvdGF0aW9uLnh5LCB2X3VNYXhBbmRJbnZlcnNlRGlzdGFuY2UueHksIHV2KSAqIHZfdU1heEFuZEludmVyc2VEaXN0YW5jZS56OwogICAgbWF0ZXJpYWxJbnB1dC5zdC55ID0gY3ptX2xpbmVEaXN0YW5jZSh2X3V2TWluQW5kU3BoZXJpY2FsTG9uZ2l0dWRlUm90YXRpb24ueHksIHZfdk1heEFuZEludmVyc2VEaXN0YW5jZS54eSwgdXYpICogdl92TWF4QW5kSW52ZXJzZURpc3RhbmNlLno7CiNlbmRpZgoKICAgIGN6bV9tYXRlcmlhbCBtYXRlcmlhbCA9IGN6bV9nZXRNYXRlcmlhbChtYXRlcmlhbElucHV0KTsKCiNpZmRlZiBGTEFUCiAgICBvdXRfRnJhZ0NvbG9yID0gdmVjNChtYXRlcmlhbC5kaWZmdXNlICsgbWF0ZXJpYWwuZW1pc3Npb24sIG1hdGVyaWFsLmFscGhhKTsKI2Vsc2UgLy8gRkxBVAogICAgb3V0X0ZyYWdDb2xvciA9IGN6bV9waG9uZyhub3JtYWxpemUoLWV5ZUNvb3JkaW5hdGUueHl6KSwgbWF0ZXJpYWwsIGN6bV9saWdodERpcmVjdGlvbkVDKTsKI2VuZGlmIC8vIEZMQVQKCiAgICAvLyBQcmVtdWx0aXBseSBhbHBoYS4gUmVxdWlyZWQgZm9yIGNsYXNzaWZpY2F0aW9uIHByaW1pdGl2ZXMgb24gdHJhbnNsdWNlbnQgZ2xvYmUuCiAgICBvdXRfRnJhZ0NvbG9yLnJnYiAqPSBvdXRfRnJhZ0NvbG9yLmE7CgojZW5kaWYgLy8gUEVSX0lOU1RBTkNFX0NPTE9SCiAgICBjem1fd3JpdGVEZXB0aENsYW1wKCk7CiNlbmRpZiAvLyBQSUNLCn0KYH0pO2Z1bmN0aW9uIHZyKHQsZSxpKXtwLnR5cGVPZi5ib29sKCJleHRlbnRzQ3VsbGluZyIsdCkscC50eXBlT2YuYm9vbCgicGxhbmFyRXh0ZW50cyIsZSkscC50eXBlT2Yub2JqZWN0KCJhcHBlYXJhbmNlIixpKSx0aGlzLl9wcm9qZWN0aW9uRXh0ZW50RGVmaW5lcz17ZWFzdE1vc3RZaGlnaERlZmluZToiIixlYXN0TW9zdFlsb3dEZWZpbmU6IiIsd2VzdE1vc3RZaGlnaERlZmluZToiIix3ZXN0TW9zdFlsb3dEZWZpbmU6IiJ9O2xldCBuPW5ldyBsRjtuLnJlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzPXQsbi5yZXF1aXJlc0VDPSFpLmZsYXQ7bGV0IHM9bmV3IGxGO2lmKHMucmVxdWlyZXNUZXh0dXJlQ29vcmRpbmF0ZXM9dCxpIGluc3RhbmNlb2YgRGEpbi5yZXF1aXJlc05vcm1hbEVDPSFpLmZsYXQ7ZWxzZXtsZXQgbz1gJHtpLm1hdGVyaWFsLnNoYWRlclNvdXJjZX0KJHtpLmZyYWdtZW50U2hhZGVyU291cmNlfWA7bi5ub3JtYWxFQz1vLmluZGV4T2YoIm1hdGVyaWFsSW5wdXQubm9ybWFsRUMiKSE9PS0xfHxvLmluZGV4T2YoImN6bV9nZXREZWZhdWx0TWF0ZXJpYWwiKSE9PS0xLG4ucG9zaXRpb25Ub0V5ZUVDPW8uaW5kZXhPZigibWF0ZXJpYWxJbnB1dC5wb3NpdGlvblRvRXllRUMiKSE9PS0xLG4udGFuZ2VudFRvRXllTWF0cml4PW8uaW5kZXhPZigibWF0ZXJpYWxJbnB1dC50YW5nZW50VG9FeWVNYXRyaXgiKSE9PS0xLG4uc3Q9by5pbmRleE9mKCJtYXRlcmlhbElucHV0LnN0IikhPT0tMX10aGlzLl9jb2xvclNoYWRlckRlcGVuZGVuY2llcz1uLHRoaXMuX3BpY2tTaGFkZXJEZXBlbmRlbmNpZXM9cyx0aGlzLl9hcHBlYXJhbmNlPWksdGhpcy5fZXh0ZW50c0N1bGxpbmc9dCx0aGlzLl9wbGFuYXJFeHRlbnRzPWV9ZnVuY3Rpb24gcUoodCxlLGksbixzLG8scixhKXtsZXQgaD1uLnNsaWNlKCk7aWYoYS5lYXN0TW9zdFloaWdoRGVmaW5lPT09IiIpe2xldCBBPWpKO0EubG9uZ2l0dWRlPUwuUEksQS5sYXRpdHVkZT0wLEEuaGVpZ2h0PTA7bGV0IGQ9ci5wcm9qZWN0KEEsSkopLGY9R24uZW5jb2RlKGQueCxISik7YS5lYXN0TW9zdFloaWdoRGVmaW5lPWBFQVNUX01PU1RfWF9ISUdIICR7Zi5oaWdoLnRvRml4ZWQoYCR7Zi5oaWdofWAubGVuZ3RoKzEpfWAsYS5lYXN0TW9zdFlsb3dEZWZpbmU9YEVBU1RfTU9TVF9YX0xPVyAke2YubG93LnRvRml4ZWQoYCR7Zi5sb3d9YC5sZW5ndGgrMSl9YDtsZXQgRT1qSjtFLmxvbmdpdHVkZT0tTC5QSSxFLmxhdGl0dWRlPTAsRS5oZWlnaHQ9MDtsZXQgXz1yLnByb2plY3QoRSxKSik7Zj1Hbi5lbmNvZGUoXy54LEhKKSxhLndlc3RNb3N0WWhpZ2hEZWZpbmU9YFdFU1RfTU9TVF9YX0hJR0ggJHtmLmhpZ2gudG9GaXhlZChgJHtmLmhpZ2h9YC5sZW5ndGgrMSl9YCxhLndlc3RNb3N0WWxvd0RlZmluZT1gV0VTVF9NT1NUX1hfTE9XICR7Zi5sb3cudG9GaXhlZChgJHtmLmxvd31gLmxlbmd0aCsxKX1gfXJldHVybiBpJiYoaC5wdXNoKGEuZWFzdE1vc3RZaGlnaERlZmluZSksaC5wdXNoKGEuZWFzdE1vc3RZbG93RGVmaW5lKSxoLnB1c2goYS53ZXN0TW9zdFloaWdoRGVmaW5lKSxoLnB1c2goYS53ZXN0TW9zdFlsb3dEZWZpbmUpKSxtKG8pJiZvIGluc3RhbmNlb2YgRGEmJmgucHVzaCgiUEVSX0lOU1RBTkNFX0NPTE9SIiksdC5yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcyYmKGgucHVzaCgiVEVYVFVSRV9DT09SRElOQVRFUyIpLGV8fGl8fGgucHVzaCgiU1BIRVJJQ0FMIiksaSYmaC5wdXNoKCJDT0xVTUJVU19WSUVXXzJEIikpLG5ldyBVaSh7ZGVmaW5lczpoLHNvdXJjZXM6W3NdfSl9ZnVuY3Rpb24gbEYoKXt0aGlzLl9yZXF1aXJlc0VDPSExLHRoaXMuX3JlcXVpcmVzV0M9ITEsdGhpcy5fcmVxdWlyZXNOb3JtYWxFQz0hMSx0aGlzLl9yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcz0hMSx0aGlzLl91c2VzTm9ybWFsRUM9ITEsdGhpcy5fdXNlc1Bvc2l0aW9uVG9FeWVFQz0hMSx0aGlzLl91c2VzVGFuZ2VudFRvRXllTWF0PSExLHRoaXMuX3VzZXNTdD0hMX1mdW5jdGlvbiB2Sih0LGUsaSl7cmV0dXJuIE1hdGguYWJzKChlLnktdC55KSppLngtKGUueC10LngpKmkueStlLngqdC55LWUueSp0LngpL250LmRpc3RhbmNlKGUsdCl9ZnVuY3Rpb24gJEoodCxlKXtsZXQgaT1icnQsbj1udC51bnBhY2soZSwwLGlbMF0pLHM9bnQudW5wYWNrKGUsMixpWzFdKSxvPW50LnVucGFjayhlLDQsaVsyXSk7dC51TWF4Vm1heD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITEsdmFsdWU6W3MueCxzLnksby54LG8ueV19KTtsZXQgcj0xL3ZKKG4scyxvKSxhPTEvdkoobixvLHMpO3QudXZNaW5BbmRFeHRlbnRzPW5ldyBacih7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LG5vcm1hbGl6ZTohMSx2YWx1ZTpbbi54LG4ueSxyLGFdfSl9ZnVuY3Rpb24gaWoodCxlLGkpe2xldCBuPXRqO24uaGVpZ2h0PTAsbi5sb25naXR1ZGU9dC53ZXN0LG4ubGF0aXR1ZGU9dC5zb3V0aDtsZXQgcz1lLnByb2plY3Qobixlaik7bi5sYXRpdHVkZT10Lm5vcnRoO2xldCBvPWUucHJvamVjdChuLFlydCk7bi5sb25naXR1ZGU9dC5lYXN0LG4ubGF0aXR1ZGU9dC5zb3V0aDtsZXQgcj1lLnByb2plY3QobixWcnQpLGE9WzAsMCwwLDBdLGg9WzAsMCwwLDBdLEE9R24uZW5jb2RlKHMueCxycCk7YVswXT1BLmhpZ2gsaFswXT1BLmxvdyxBPUduLmVuY29kZShzLnkscnApLGFbMV09QS5oaWdoLGhbMV09QS5sb3csQT1Hbi5lbmNvZGUoby55LHJwKSxhWzJdPUEuaGlnaCxoWzJdPUEubG93LEE9R24uZW5jb2RlKHIueCxycCksYVszXT1BLmhpZ2gsaFszXT1BLmxvdyxpLnBsYW5lczJEX0hJR0g9bmV3IFpyKHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsbm9ybWFsaXplOiExLHZhbHVlOmF9KSxpLnBsYW5lczJEX0xPVz1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6NCxub3JtYWxpemU6ITEsdmFsdWU6aH0pfWZ1bmN0aW9uIFdydCh0LGUsaSxuLHMsbyl7bGV0IHI9WHQuY2VudGVyKHQsQnJ0KTtyLmhlaWdodD1pO2xldCBhPXV0LnRvQ2FydGVzaWFuKHIsZSx6SiksaD1Jbi5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShhLGUsU3J0KSxBPWF0LmludmVyc2UoaCxPcnQpLGQ9dC53ZXN0LGY9dC5lYXN0LEU9dC5ub3J0aCxfPXQuc291dGgsUj1HcnQ7UlswXS5sYXRpdHVkZT1fLFJbMF0ubG9uZ2l0dWRlPWQsUlsxXS5sYXRpdHVkZT1FLFJbMV0ubG9uZ2l0dWRlPWQsUlsyXS5sYXRpdHVkZT1FLFJbMl0ubG9uZ2l0dWRlPWYsUlszXS5sYXRpdHVkZT1fLFJbM10ubG9uZ2l0dWRlPWY7bGV0IEk9KGQrZikqLjUsQz0oRStfKSouNTtSWzRdLmxhdGl0dWRlPV8sUls0XS5sb25naXR1ZGU9SSxSWzVdLmxhdGl0dWRlPUUsUls1XS5sb25naXR1ZGU9SSxSWzZdLmxhdGl0dWRlPUMsUls2XS5sb25naXR1ZGU9ZCxSWzddLmxhdGl0dWRlPUMsUls3XS5sb25naXR1ZGU9ZjtsZXQgTj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksVD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksYj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksRj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKGxldCBNPTA7TTw4O00rKyl7UltNXS5oZWlnaHQ9aTtsZXQgaz11dC50b0NhcnRlc2lhbihSW01dLGUsekopO2F0Lm11bHRpcGx5QnlQb2ludChBLGssayksay56PTAsTj1NYXRoLm1pbihOLGsueCksVD1NYXRoLm1heChULGsueCksYj1NYXRoLm1pbihiLGsueSksRj1NYXRoLm1heChGLGsueSl9bGV0IEI9bjtCLng9TixCLnk9YixCLno9MCxhdC5tdWx0aXBseUJ5UG9pbnQoaCxCLEIpO2xldCBVPXM7VS54PVQsVS55PWIsVS56PTAsYXQubXVsdGlwbHlCeVBvaW50KGgsVSxVKSxsLnN1YnRyYWN0KFUsQixzKTtsZXQgUT1vO1EueD1OLFEueT1GLFEuej0wLGF0Lm11bHRpcGx5QnlQb2ludChoLFEsUSksbC5zdWJ0cmFjdChRLEIsbyl9ZnVuY3Rpb24gS0oodCxlLGksbil7bGV0IHM9dGo7cy5sYXRpdHVkZT10LHMubG9uZ2l0dWRlPWUscy5oZWlnaHQ9MDtsZXQgbz11dC50b0NhcnRlc2lhbihzLGksUXJ0KSxyPU1hdGguc3FydChvLngqby54K28ueSpvLnkpLGE9TC5mYXN0QXBwcm94aW1hdGVBdGFuMihyLG8ueiksaD1MLmZhc3RBcHByb3hpbWF0ZUF0YW4yKG8ueCxvLnkpO3JldHVybiBuLng9YSxuLnk9aCxufWZ1bmN0aW9uIGtydCh0KXtyZXR1cm4gTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCk+dnIuTUFYX1dJRFRIX0ZPUl9QTEFOQVJfRVhURU5UU312YXIgSkosakosSEosYnJ0LHRqLGVqLFlydCxWcnQscnAsU3J0LE9ydCx6SixCcnQsR3J0LERydCxVcnQsTXJ0LFFydCxYSixnYyxkRj1TKCgpPT57WGUoKTtIdCgpO3JpKCk7YWUoKTtvaSgpO0Z0KCk7bXQoKTtUbCgpO21OKCk7X2UoKTtiaSgpO3BuKCk7ZnIoKTtibCgpO29wKCk7UEooKTt2ci5wcm90b3R5cGUuY3JlYXRlRnJhZ21lbnRTaGFkZXI9ZnVuY3Rpb24odCl7cC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLHQpO2xldCBlPXRoaXMuX2FwcGVhcmFuY2UsaT10aGlzLl9jb2xvclNoYWRlckRlcGVuZGVuY2llcyxuPVtdOyF0JiYhdGhpcy5fcGxhbmFyRXh0ZW50cyYmbi5wdXNoKCJTUEhFUklDQUwiKSxpLnJlcXVpcmVzRUMmJm4ucHVzaCgiUkVRVUlSRVNfRUMiKSxpLnJlcXVpcmVzV0MmJm4ucHVzaCgiUkVRVUlSRVNfV0MiKSxpLnJlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzJiZuLnB1c2goIlRFWFRVUkVfQ09PUkRJTkFURVMiKSx0aGlzLl9leHRlbnRzQ3VsbGluZyYmbi5wdXNoKCJDVUxMX0ZSQUdNRU5UUyIpLGkucmVxdWlyZXNOb3JtYWxFQyYmbi5wdXNoKCJOT1JNQUxfRUMiKSxlIGluc3RhbmNlb2YgRGEmJm4ucHVzaCgiUEVSX0lOU1RBTkNFX0NPTE9SIiksaS5ub3JtYWxFQyYmbi5wdXNoKCJVU0VTX05PUk1BTF9FQyIpLGkucG9zaXRpb25Ub0V5ZUVDJiZuLnB1c2goIlVTRVNfUE9TSVRJT05fVE9fRVlFX0VDIiksaS50YW5nZW50VG9FeWVNYXRyaXgmJm4ucHVzaCgiVVNFU19UQU5HRU5UX1RPX0VZRSIpLGkuc3QmJm4ucHVzaCgiVVNFU19TVCIpLGUuZmxhdCYmbi5wdXNoKCJGTEFUIik7bGV0IHM9IiI7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXx8KHM9ZS5tYXRlcmlhbC5zaGFkZXJTb3VyY2UpLG5ldyBVaSh7ZGVmaW5lczpuLHNvdXJjZXM6W3MsY0ZdfSl9O3ZyLnByb3RvdHlwZS5jcmVhdGVQaWNrRnJhZ21lbnRTaGFkZXI9ZnVuY3Rpb24odCl7cC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLHQpO2xldCBlPXRoaXMuX3BpY2tTaGFkZXJEZXBlbmRlbmNpZXMsaT1bIlBJQ0siXTtyZXR1cm4hdCYmIXRoaXMuX3BsYW5hckV4dGVudHMmJmkucHVzaCgiU1BIRVJJQ0FMIiksZS5yZXF1aXJlc0VDJiZpLnB1c2goIlJFUVVJUkVTX0VDIiksZS5yZXF1aXJlc1dDJiZpLnB1c2goIlJFUVVJUkVTX1dDIiksZS5yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcyYmaS5wdXNoKCJURVhUVVJFX0NPT1JESU5BVEVTIiksdGhpcy5fZXh0ZW50c0N1bGxpbmcmJmkucHVzaCgiQ1VMTF9GUkFHTUVOVFMiKSxuZXcgVWkoe2RlZmluZXM6aSxzb3VyY2VzOltjRl0scGlja0NvbG9yUXVhbGlmaWVyOiJpbiJ9KX07dnIucHJvdG90eXBlLmNyZWF0ZVZlcnRleFNoYWRlcj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC5kZWZpbmVkKCJkZWZpbmVzIix0KSxwLnR5cGVPZi5zdHJpbmcoInZlcnRleFNoYWRlclNvdXJjZSIsZSkscC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLGkpLHAuZGVmaW5lZCgibWFwUHJvamVjdGlvbiIsbikscUoodGhpcy5fY29sb3JTaGFkZXJEZXBlbmRlbmNpZXMsdGhpcy5fcGxhbmFyRXh0ZW50cyxpLHQsZSx0aGlzLl9hcHBlYXJhbmNlLG4sdGhpcy5fcHJvamVjdGlvbkV4dGVudERlZmluZXMpfTt2ci5wcm90b3R5cGUuY3JlYXRlUGlja1ZlcnRleFNoYWRlcj1mdW5jdGlvbih0LGUsaSxuKXtyZXR1cm4gcC5kZWZpbmVkKCJkZWZpbmVzIix0KSxwLnR5cGVPZi5zdHJpbmcoInZlcnRleFNoYWRlclNvdXJjZSIsZSkscC50eXBlT2YuYm9vbCgiY29sdW1idXNWaWV3MkQiLGkpLHAuZGVmaW5lZCgibWFwUHJvamVjdGlvbiIsbikscUoodGhpcy5fcGlja1NoYWRlckRlcGVuZGVuY2llcyx0aGlzLl9wbGFuYXJFeHRlbnRzLGksdCxlLHZvaWQgMCxuLHRoaXMuX3Byb2plY3Rpb25FeHRlbnREZWZpbmVzKX07Sko9bmV3IGwsako9bmV3IHV0LEhKPXtoaWdoOjAsbG93OjB9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxGLnByb3RvdHlwZSx7cmVxdWlyZXNFQzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVzRUN9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZXF1aXJlc0VDPXR8fHRoaXMuX3JlcXVpcmVzRUN9fSxyZXF1aXJlc1dDOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVxdWlyZXNXQ30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlcXVpcmVzV0M9dHx8dGhpcy5fcmVxdWlyZXNXQyx0aGlzLnJlcXVpcmVzRUM9dGhpcy5fcmVxdWlyZXNXQ319LHJlcXVpcmVzTm9ybWFsRUM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlc05vcm1hbEVDfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVxdWlyZXNOb3JtYWxFQz10fHx0aGlzLl9yZXF1aXJlc05vcm1hbEVDLHRoaXMucmVxdWlyZXNFQz10aGlzLl9yZXF1aXJlc05vcm1hbEVDfX0scmVxdWlyZXNUZXh0dXJlQ29vcmRpbmF0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzPXR8fHRoaXMuX3JlcXVpcmVzVGV4dHVyZUNvb3JkaW5hdGVzLHRoaXMucmVxdWlyZXNXQz10aGlzLl9yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlc319LG5vcm1hbEVDOntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXF1aXJlc05vcm1hbEVDPXQsdGhpcy5fdXNlc05vcm1hbEVDPXR9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91c2VzTm9ybWFsRUN9fSx0YW5nZW50VG9FeWVNYXRyaXg6e3NldDpmdW5jdGlvbih0KXt0aGlzLnJlcXVpcmVzV0M9dCx0aGlzLnJlcXVpcmVzTm9ybWFsRUM9dCx0aGlzLl91c2VzVGFuZ2VudFRvRXllTWF0PXR9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91c2VzVGFuZ2VudFRvRXllTWF0fX0scG9zaXRpb25Ub0V5ZUVDOntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXF1aXJlc0VDPXQsdGhpcy5fdXNlc1Bvc2l0aW9uVG9FeWVFQz10fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXNlc1Bvc2l0aW9uVG9FeWVFQ319LHN0OntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZXF1aXJlc1RleHR1cmVDb29yZGluYXRlcz10LHRoaXMuX3VzZXNTdD10fSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXNlc1N0fX19KTticnQ9W25ldyBudCxuZXcgbnQsbmV3IG50LG5ldyBudF07dGo9bmV3IHV0LGVqPW5ldyBsLFlydD1uZXcgbCxWcnQ9bmV3IGwscnA9e2hpZ2g6MCxsb3c6MH07U3J0PW5ldyBhdCxPcnQ9bmV3IGF0LHpKPW5ldyBsLEJydD1uZXcgdXQsR3J0PVtuZXcgdXQsbmV3IHV0LG5ldyB1dCxuZXcgdXQsbmV3IHV0LG5ldyB1dCxuZXcgdXQsbmV3IHV0XTtEcnQ9bmV3IGwsVXJ0PW5ldyBsLE1ydD1uZXcgR247dnIuZ2V0UGxhbmFyVGV4dHVyZUNvb3JkaW5hdGVBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQsZSxpLG4scyl7cC50eXBlT2Yub2JqZWN0KCJib3VuZGluZ1JlY3RhbmdsZSIsdCkscC5kZWZpbmVkKCJ0ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzIixlKSxwLnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsaSkscC50eXBlT2Yub2JqZWN0KCJwcm9qZWN0aW9uIixuKTtsZXQgbz1laixyPURydCxhPVVydDtXcnQodCxpLFoocywwKSxvLHIsYSk7bGV0IGg9e307JEooaCxlKTtsZXQgQT1Hbi5mcm9tQ2FydGVzaWFuKG8sTXJ0KTtyZXR1cm4gaC5zb3V0aFdlc3RfSElHSD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKEEuaGlnaCxbMCwwLDBdKX0pLGguc291dGhXZXN0X0xPVz1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKEEubG93LFswLDAsMF0pfSksaC5lYXN0d2FyZD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKHIsWzAsMCwwXSl9KSxoLm5vcnRod2FyZD1uZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myxub3JtYWxpemU6ITEsdmFsdWU6bC5wYWNrKGEsWzAsMCwwXSl9KSxpaih0LG4saCksaH07UXJ0PW5ldyBsO1hKPW5ldyBudDt2ci5nZXRTcGhlcmljYWxFeHRlbnRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcz1mdW5jdGlvbih0LGUsaSxuKXtwLnR5cGVPZi5vYmplY3QoImJvdW5kaW5nUmVjdGFuZ2xlIix0KSxwLmRlZmluZWQoInRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMiLGUpLHAudHlwZU9mLm9iamVjdCgiZWxsaXBzb2lkIixpKSxwLnR5cGVPZi5vYmplY3QoInByb2plY3Rpb24iLG4pO2xldCBzPUtKKHQuc291dGgsdC53ZXN0LGksWEopLG89cy54LHI9cy55LGE9S0oodC5ub3J0aCx0LmVhc3QsaSxYSiksaD1hLngsQT1hLnksZD0wO3I+QSYmKGQ9TC5QSS1yLHI9LUwuUEksQSs9ZCksby09TC5FUFNJTE9ONSxyLT1MLkVQU0lMT041LGgrPUwuRVBTSUxPTjUsQSs9TC5FUFNJTE9ONTtsZXQgZj0xLyhBLXIpLEU9MS8oaC1vKSxfPXtzcGhlcmljYWxFeHRlbnRzOm5ldyBacih7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LG5vcm1hbGl6ZTohMSx2YWx1ZTpbbyxyLEUsZl19KSxsb25naXR1ZGVSb3RhdGlvbjpuZXcgWnIoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSxub3JtYWxpemU6ITEsdmFsdWU6W2RdfSl9O3JldHVybiAkSihfLGUpLGlqKHQsbixfKSxffTt2ci5oYXNBdHRyaWJ1dGVzRm9yVGV4dHVyZUNvb3JkaW5hdGVQbGFuZXM9ZnVuY3Rpb24odCl7cmV0dXJuIG0odC5zb3V0aFdlc3RfSElHSCkmJm0odC5zb3V0aFdlc3RfTE9XKSYmbSh0Lm5vcnRod2FyZCkmJm0odC5lYXN0d2FyZCkmJm0odC5wbGFuZXMyRF9ISUdIKSYmbSh0LnBsYW5lczJEX0xPVykmJm0odC51TWF4Vm1heCkmJm0odC51dk1pbkFuZEV4dGVudHMpfTt2ci5oYXNBdHRyaWJ1dGVzRm9yU3BoZXJpY2FsRXh0ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0LnNwaGVyaWNhbEV4dGVudHMpJiZtKHQubG9uZ2l0dWRlUm90YXRpb24pJiZtKHQucGxhbmVzMkRfSElHSCkmJm0odC5wbGFuZXMyRF9MT1cpJiZtKHQudU1heFZtYXgpJiZtKHQudXZNaW5BbmRFeHRlbnRzKX07dnIuc2hvdWxkVXNlU3BoZXJpY2FsQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSxrcnQodCl9O3ZyLk1BWF9XSURUSF9GT1JfUExBTkFSX0VYVEVOVFM9TC50b1JhZGlhbnMoMSk7Z2M9dnJ9KTtmdW5jdGlvbiBqbCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5nZW9tZXRyeUluc3RhbmNlczt0aGlzLmdlb21ldHJ5SW5zdGFuY2VzPWUsdGhpcy5zaG93PVoodC5zaG93LCEwKSx0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZT1aKHQuY2xhc3NpZmljYXRpb25UeXBlLEpyLkJPVEgpLHRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9Wih0LmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLCExKSx0aGlzLmRlYnVnU2hvd1NoYWRvd1ZvbHVtZT1aKHQuZGVidWdTaG93U2hhZG93Vm9sdW1lLCExKSx0aGlzLl9kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9ITEsdGhpcy5fZXh0cnVkZWQ9Wih0Ll9leHRydWRlZCwhMSksdGhpcy5fdW5pZm9ybU1hcD10Ll91bmlmb3JtTWFwLHRoaXMuX3NwPXZvaWQgMCx0aGlzLl9zcFN0ZW5jaWw9dm9pZCAwLHRoaXMuX3NwUGljaz12b2lkIDAsdGhpcy5fc3BDb2xvcj12b2lkIDAsdGhpcy5fc3BQaWNrMkQ9dm9pZCAwLHRoaXMuX3NwQ29sb3IyRD12b2lkIDAsdGhpcy5fcnNTdGVuY2lsRGVwdGhQYXNzPXZvaWQgMCx0aGlzLl9yc1N0ZW5jaWxEZXB0aFBhc3MzRFRpbGVzPXZvaWQgMCx0aGlzLl9yc0NvbG9yUGFzcz12b2lkIDAsdGhpcy5fcnNQaWNrUGFzcz12b2lkIDAsdGhpcy5fY29tbWFuZHNJZ25vcmVTaG93PVtdLHRoaXMuX3JlYWR5PSExLHRoaXMuX3ByaW1pdGl2ZT12b2lkIDAsdGhpcy5fcGlja1ByaW1pdGl2ZT10Ll9waWNrUHJpbWl0aXZlLHRoaXMuX2hhc1NwaGVyaWNhbEV4dGVudHNBdHRyaWJ1dGU9ITEsdGhpcy5faGFzUGxhbmFyRXh0ZW50c0F0dHJpYnV0ZXM9ITEsdGhpcy5faGFzUGVyQ29sb3JBdHRyaWJ1dGU9ITEsdGhpcy5hcHBlYXJhbmNlPXQuYXBwZWFyYW5jZSx0aGlzLl9jcmVhdGVCb3VuZGluZ1ZvbHVtZUZ1bmN0aW9uPXQuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb24sdGhpcy5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uPXQuX3VwZGF0ZUFuZFF1ZXVlQ29tbWFuZHNGdW5jdGlvbix0aGlzLl91c2VQaWNrT2Zmc2V0cz0hMSx0aGlzLl9wcmltaXRpdmVPcHRpb25zPXtnZW9tZXRyeUluc3RhbmNlczp2b2lkIDAsYXBwZWFyYW5jZTp2b2lkIDAsdmVydGV4Q2FjaGVPcHRpbWl6ZTpaKHQudmVydGV4Q2FjaGVPcHRpbWl6ZSwhMSksaW50ZXJsZWF2ZTpaKHQuaW50ZXJsZWF2ZSwhMSkscmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOloodC5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMsITApLGFsbG93UGlja2luZzpaKHQuYWxsb3dQaWNraW5nLCEwKSxhc3luY2hyb25vdXM6Wih0LmFzeW5jaHJvbm91cywhMCksY29tcHJlc3NWZXJ0aWNlczpaKHQuY29tcHJlc3NWZXJ0aWNlcywhMCksX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb246dm9pZCAwLF9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbjp2b2lkIDAsX2NyZWF0ZVNoYWRlclByb2dyYW1GdW5jdGlvbjp2b2lkIDAsX2NyZWF0ZUNvbW1hbmRzRnVuY3Rpb246dm9pZCAwLF91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb246dm9pZCAwLF9jcmVhdGVQaWNrT2Zmc2V0czohMH19ZnVuY3Rpb24gJG0odCxlKXtsZXQgaT1lP3ByLkVRVUFMOnByLkFMV0FZUztyZXR1cm57Y29sb3JNYXNrOntyZWQ6ITEsZ3JlZW46ITEsYmx1ZTohMSxhbHBoYTohMX0sc3RlbmNpbFRlc3Q6e2VuYWJsZWQ6dCxmcm9udEZ1bmN0aW9uOmksZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuS0VFUCx6RmFpbDpIaS5ERUNSRU1FTlRfV1JBUCx6UGFzczpIaS5LRUVQfSxiYWNrRnVuY3Rpb246aSxiYWNrT3BlcmF0aW9uOntmYWlsOkhpLktFRVAsekZhaWw6SGkuSU5DUkVNRU5UX1dSQVAselBhc3M6SGkuS0VFUH0scmVmZXJlbmNlOldhLkNFU0lVTV8zRF9USUxFX01BU0ssbWFzazpXYS5DRVNJVU1fM0RfVElMRV9NQVNLfSxzdGVuY2lsTWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLLGRlcHRoVGVzdDp7ZW5hYmxlZDohMCxmdW5jOndJLkxFU1NfT1JfRVFVQUx9LGRlcHRoTWFzazohMX19ZnVuY3Rpb24gZkYodCl7cmV0dXJue3N0ZW5jaWxUZXN0OntlbmFibGVkOnQsZnJvbnRGdW5jdGlvbjpwci5OT1RfRVFVQUwsZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuWkVSTyx6RmFpbDpIaS5aRVJPLHpQYXNzOkhpLlpFUk99LGJhY2tGdW5jdGlvbjpwci5OT1RfRVFVQUwsYmFja09wZXJhdGlvbjp7ZmFpbDpIaS5aRVJPLHpGYWlsOkhpLlpFUk8selBhc3M6SGkuWkVST30scmVmZXJlbmNlOjAsbWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLfSxzdGVuY2lsTWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLLGRlcHRoVGVzdDp7ZW5hYmxlZDohMX0sZGVwdGhNYXNrOiExLGJsZW5kaW5nOk1yLlBSRV9NVUxUSVBMSUVEX0FMUEhBX0JMRU5EfX1mdW5jdGlvbiB5cnQodCxlLGksbil7aWYobSh0Ll9yc1N0ZW5jaWxEZXB0aFBhc3MpKXJldHVybjtsZXQgcz0hdC5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU7dC5fcnNTdGVuY2lsRGVwdGhQYXNzPVluLmZyb21DYWNoZSgkbShzLCExKSksdC5fcnNTdGVuY2lsRGVwdGhQYXNzM0RUaWxlcz1Zbi5mcm9tQ2FjaGUoJG0ocywhMCkpLHQuX3JzQ29sb3JQYXNzPVluLmZyb21DYWNoZShmRihzLCExKSksdC5fcnNQaWNrUGFzcz1Zbi5mcm9tQ2FjaGUoTHJ0KX1mdW5jdGlvbiB3cnQodCxlKXtpZighdC5jb21wcmVzc1ZlcnRpY2VzKXJldHVybiBlO2lmKGUuc2VhcmNoKC9pblxzK3ZlYzNccytleHRydWRlRGlyZWN0aW9uOy9nKSE9PS0xKXtsZXQgaT0iY29tcHJlc3NlZEF0dHJpYnV0ZXMiLG49YGluIHZlYzIgJHtpfTtgLHM9YHZlYzMgZXh0cnVkZURpcmVjdGlvbjsKYCxvPWAgICAgZXh0cnVkZURpcmVjdGlvbiA9IGN6bV9vY3REZWNvZGUoJHtpfSwgNjU1MzUuMCk7CmAscj1lO3I9ci5yZXBsYWNlKC9pblxzK3ZlYzNccytleHRydWRlRGlyZWN0aW9uOy9nLCIiKSxyPVVpLnJlcGxhY2VNYWluKHIsImN6bV9ub25fY29tcHJlc3NlZF9tYWluIik7bGV0IGE9YHZvaWQgbWFpbigpIAp7IAoke299ICAgIGN6bV9ub25fY29tcHJlc3NlZF9tYWluKCk7IAp9YDtyZXR1cm5bbixzLHIsYV0uam9pbihgCmApfX1mdW5jdGlvbiB4cnQodCxlKXtsZXQgaT1lLmNvbnRleHQsbj10Ll9wcmltaXRpdmUscz1XSjtzPXQuX3ByaW1pdGl2ZS5fYmF0Y2hUYWJsZS5nZXRWZXJ0ZXhTaGFkZXJDYWxsYmFjaygpKHMpLHM9dnMuX2FwcGVuZERpc3RhbmNlRGlzcGxheUNvbmRpdGlvblRvU2hhZGVyKG4scykscz12cy5fbW9kaWZ5U2hhZGVyUG9zaXRpb24odCxzLGUuc2NlbmUzRE9ubHkpLHM9dnMuX3VwZGF0ZUNvbG9yQXR0cmlidXRlKG4scyk7bGV0IG89dC5faGFzUGxhbmFyRXh0ZW50c0F0dHJpYnV0ZXMscj1vfHx0Ll9oYXNTcGhlcmljYWxFeHRlbnRzQXR0cmlidXRlO3QuX2V4dHJ1ZGVkJiYocz13cnQobixzKSk7bGV0IGE9dC5fZXh0cnVkZWQ/IkVYVFJVREVEX0dFT01FVFJZIjoiIixoPW5ldyBVaSh7ZGVmaW5lczpbYV0sc291cmNlczpbc119KSxBPW5ldyBVaSh7c291cmNlczpbVUpdfSksZD10Ll9wcmltaXRpdmUuX2F0dHJpYnV0ZUxvY2F0aW9ucyxmPW5ldyBnYyhyLG8sdC5hcHBlYXJhbmNlKTtpZih0Ll9zcFN0ZW5jaWw9RXMucmVwbGFjZUNhY2hlKHtjb250ZXh0Omksc2hhZGVyUHJvZ3JhbTp0Ll9zcFN0ZW5jaWwsdmVydGV4U2hhZGVyU291cmNlOmgsZnJhZ21lbnRTaGFkZXJTb3VyY2U6QSxhdHRyaWJ1dGVMb2NhdGlvbnM6ZH0pLHQuX3ByaW1pdGl2ZS5hbGxvd1BpY2tpbmcpe2xldCBSPVVpLmNyZWF0ZVBpY2tWZXJ0ZXhTaGFkZXJTb3VyY2Uocyk7Uj12cy5fYXBwZW5kU2hvd1RvU2hhZGVyKG4sUiksUj12cy5fdXBkYXRlUGlja0NvbG9yQXR0cmlidXRlKFIpO2xldCBJPWYuY3JlYXRlUGlja0ZyYWdtZW50U2hhZGVyKCExKSxDPWYuY3JlYXRlUGlja1ZlcnRleFNoYWRlcihbYV0sUiwhMSxlLm1hcFByb2plY3Rpb24pO2lmKHQuX3NwUGljaz1Fcy5yZXBsYWNlQ2FjaGUoe2NvbnRleHQ6aSxzaGFkZXJQcm9ncmFtOnQuX3NwUGljayx2ZXJ0ZXhTaGFkZXJTb3VyY2U6QyxmcmFnbWVudFNoYWRlclNvdXJjZTpJLGF0dHJpYnV0ZUxvY2F0aW9uczpkfSkscil7bGV0IE49aS5zaGFkZXJDYWNoZS5nZXREZXJpdmVkU2hhZGVyUHJvZ3JhbSh0Ll9zcFBpY2ssIjJkUGljayIpO2lmKCFtKE4pKXtsZXQgVD1mLmNyZWF0ZVBpY2tGcmFnbWVudFNoYWRlcighMCksYj1mLmNyZWF0ZVBpY2tWZXJ0ZXhTaGFkZXIoW2FdLFIsITAsZS5tYXBQcm9qZWN0aW9uKTtOPWkuc2hhZGVyQ2FjaGUuY3JlYXRlRGVyaXZlZFNoYWRlclByb2dyYW0odC5fc3BQaWNrLCIyZFBpY2siLHt2ZXJ0ZXhTaGFkZXJTb3VyY2U6YixmcmFnbWVudFNoYWRlclNvdXJjZTpULGF0dHJpYnV0ZUxvY2F0aW9uczpkfSl9dC5fc3BQaWNrMkQ9Tn19ZWxzZSB0Ll9zcFBpY2s9RXMuZnJvbUNhY2hlKHtjb250ZXh0OmksdmVydGV4U2hhZGVyU291cmNlOmgsZnJhZ21lbnRTaGFkZXJTb3VyY2U6QSxhdHRyaWJ1dGVMb2NhdGlvbnM6ZH0pO3M9dnMuX2FwcGVuZFNob3dUb1NoYWRlcihuLHMpLGg9bmV3IFVpKHtkZWZpbmVzOlthXSxzb3VyY2VzOltzXX0pLHQuX3NwPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDppLHNoYWRlclByb2dyYW06dC5fc3AsdmVydGV4U2hhZGVyU291cmNlOmgsZnJhZ21lbnRTaGFkZXJTb3VyY2U6QSxhdHRyaWJ1dGVMb2NhdGlvbnM6ZH0pO2xldCBFPWYuY3JlYXRlRnJhZ21lbnRTaGFkZXIoITEpLF89Zi5jcmVhdGVWZXJ0ZXhTaGFkZXIoW2FdLHMsITEsZS5tYXBQcm9qZWN0aW9uKTtpZih0Ll9zcENvbG9yPUVzLnJlcGxhY2VDYWNoZSh7Y29udGV4dDppLHNoYWRlclByb2dyYW06dC5fc3BDb2xvcix2ZXJ0ZXhTaGFkZXJTb3VyY2U6XyxmcmFnbWVudFNoYWRlclNvdXJjZTpFLGF0dHJpYnV0ZUxvY2F0aW9uczpkfSkscil7bGV0IFI9aS5zaGFkZXJDYWNoZS5nZXREZXJpdmVkU2hhZGVyUHJvZ3JhbSh0Ll9zcENvbG9yLCIyZENvbG9yIik7aWYoIW0oUikpe2xldCBJPWYuY3JlYXRlRnJhZ21lbnRTaGFkZXIoITApLEM9Zi5jcmVhdGVWZXJ0ZXhTaGFkZXIoW2FdLHMsITAsZS5tYXBQcm9qZWN0aW9uKTtSPWkuc2hhZGVyQ2FjaGUuY3JlYXRlRGVyaXZlZFNoYWRlclByb2dyYW0odC5fc3BDb2xvciwiMmRDb2xvciIse3ZlcnRleFNoYWRlclNvdXJjZTpDLGZyYWdtZW50U2hhZGVyU291cmNlOkksYXR0cmlidXRlTG9jYXRpb25zOmR9KX10Ll9zcENvbG9yMkQ9Un19ZnVuY3Rpb24gUHJ0KHQsZSl7bGV0IGk9dC5fcHJpbWl0aXZlLG49aS5fdmEubGVuZ3RoKjI7ZS5sZW5ndGg9bjtsZXQgcyxvLHIsYT0wLGg9aS5fYmF0Y2hUYWJsZS5nZXRVbmlmb3JtTWFwQ2FsbGJhY2soKSh0Ll91bmlmb3JtTWFwKSxBPXQuX25lZWRzMkRTaGFkZXI7Zm9yKHM9MDtzPG47cys9Mil7bGV0IF89aS5fdmFbYSsrXTtvPWVbc10sbShvKXx8KG89ZVtzXT1uZXcgZm4oe293bmVyOnQscHJpbWl0aXZlVHlwZTppLl9wcmltaXRpdmVUeXBlfSkpLG8udmVydGV4QXJyYXk9XyxvLnJlbmRlclN0YXRlPXQuX3JzU3RlbmNpbERlcHRoUGFzcyxvLnNoYWRlclByb2dyYW09dC5fc3Asby51bmlmb3JtTWFwPWgsby5wYXNzPW9zLlRFUlJBSU5fQ0xBU1NJRklDQVRJT04scj1mbi5zaGFsbG93Q2xvbmUobyxvLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0KSxyLnJlbmRlclN0YXRlPXQuX3JzU3RlbmNpbERlcHRoUGFzczNEVGlsZXMsci5wYXNzPW9zLkNFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OLG8uZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQ9cixvPWVbcysxXSxtKG8pfHwobz1lW3MrMV09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6aS5fcHJpbWl0aXZlVHlwZX0pKSxvLnZlcnRleEFycmF5PV8sby5yZW5kZXJTdGF0ZT10Ll9yc0NvbG9yUGFzcyxvLnNoYWRlclByb2dyYW09dC5fc3BDb2xvcixvLnBhc3M9b3MuVEVSUkFJTl9DTEFTU0lGSUNBVElPTjtsZXQgST10LmFwcGVhcmFuY2UubWF0ZXJpYWw7aWYobShJKSYmKGg9ZXMoaCxJLl91bmlmb3JtcykpLG8udW5pZm9ybU1hcD1oLHI9Zm4uc2hhbGxvd0Nsb25lKG8sby5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCksci5wYXNzPW9zLkNFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OLG8uZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQ9cixBKXtsZXQgQz1mbi5zaGFsbG93Q2xvbmUobyxvLmRlcml2ZWRDb21tYW5kcy5hcHBlYXJhbmNlMkQpO0Muc2hhZGVyUHJvZ3JhbT10Ll9zcENvbG9yMkQsby5kZXJpdmVkQ29tbWFuZHMuYXBwZWFyYW5jZTJEPUMsQz1mbi5zaGFsbG93Q2xvbmUocixyLmRlcml2ZWRDb21tYW5kcy5hcHBlYXJhbmNlMkQpLEMuc2hhZGVyUHJvZ3JhbT10Ll9zcENvbG9yMkQsci5kZXJpdmVkQ29tbWFuZHMuYXBwZWFyYW5jZTJEPUN9fWxldCBkPXQuX2NvbW1hbmRzSWdub3JlU2hvdyxmPXQuX3NwU3RlbmNpbCxFPTA7bj1kLmxlbmd0aD1uLzI7Zm9yKGxldCBfPTA7XzxuOysrXyl7bGV0IFI9ZFtfXT1mbi5zaGFsbG93Q2xvbmUoZVtFXSxkW19dKTtSLnNoYWRlclByb2dyYW09ZixSLnBhc3M9b3MuQ0VTSVVNXzNEX1RJTEVfQ0xBU1NJRklDQVRJT05fSUdOT1JFX1NIT1csRSs9Mn19ZnVuY3Rpb24gSnJ0KHQsZSl7bGV0IGk9dC5fdXNlUGlja09mZnNldHMsbj10Ll9wcmltaXRpdmUscz1uLl92YS5sZW5ndGgqMixvLHI9MCxhO2kmJihvPW4uX3BpY2tPZmZzZXRzLHM9by5sZW5ndGgqMiksZS5sZW5ndGg9cztsZXQgaCxBLGQsZj0wLEU9bi5fYmF0Y2hUYWJsZS5nZXRVbmlmb3JtTWFwQ2FsbGJhY2soKSh0Ll91bmlmb3JtTWFwKSxfPXQuX25lZWRzMkRTaGFkZXI7Zm9yKGg9MDtoPHM7aCs9Mil7bGV0IFI9bi5fdmFbZisrXTtpZihpJiYoYT1vW3IrK10sUj1uLl92YVthLmluZGV4XSksQT1lW2hdLG0oQSl8fChBPWVbaF09bmV3IGZuKHtvd25lcjp0LHByaW1pdGl2ZVR5cGU6bi5fcHJpbWl0aXZlVHlwZSxwaWNrT25seTohMH0pKSxBLnZlcnRleEFycmF5PVIsQS5yZW5kZXJTdGF0ZT10Ll9yc1N0ZW5jaWxEZXB0aFBhc3MsQS5zaGFkZXJQcm9ncmFtPXQuX3NwLEEudW5pZm9ybU1hcD1FLEEucGFzcz1vcy5URVJSQUlOX0NMQVNTSUZJQ0FUSU9OLGkmJihBLm9mZnNldD1hLm9mZnNldCxBLmNvdW50PWEuY291bnQpLGQ9Zm4uc2hhbGxvd0Nsb25lKEEsQS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCksZC5yZW5kZXJTdGF0ZT10Ll9yc1N0ZW5jaWxEZXB0aFBhc3MzRFRpbGVzLGQucGFzcz1vcy5DRVNJVU1fM0RfVElMRV9DTEFTU0lGSUNBVElPTixBLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0PWQsQT1lW2grMV0sbShBKXx8KEE9ZVtoKzFdPW5ldyBmbih7b3duZXI6dCxwcmltaXRpdmVUeXBlOm4uX3ByaW1pdGl2ZVR5cGUscGlja09ubHk6ITB9KSksQS52ZXJ0ZXhBcnJheT1SLEEucmVuZGVyU3RhdGU9dC5fcnNQaWNrUGFzcyxBLnNoYWRlclByb2dyYW09dC5fc3BQaWNrLEEudW5pZm9ybU1hcD1FLEEucGFzcz1vcy5URVJSQUlOX0NMQVNTSUZJQ0FUSU9OLGkmJihBLm9mZnNldD1hLm9mZnNldCxBLmNvdW50PWEuY291bnQpLGQ9Zm4uc2hhbGxvd0Nsb25lKEEsQS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCksZC5wYXNzPW9zLkNFU0lVTV8zRF9USUxFX0NMQVNTSUZJQ0FUSU9OLEEuZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQ9ZCxfKXtsZXQgST1mbi5zaGFsbG93Q2xvbmUoQSxBLmRlcml2ZWRDb21tYW5kcy5waWNrMkQpO0kuc2hhZGVyUHJvZ3JhbT10Ll9zcFBpY2syRCxBLmRlcml2ZWRDb21tYW5kcy5waWNrMkQ9SSxJPWZuLnNoYWxsb3dDbG9uZShkLGQuZGVyaXZlZENvbW1hbmRzLnBpY2syRCksSS5zaGFkZXJQcm9ncmFtPXQuX3NwUGljazJELGQuZGVyaXZlZENvbW1hbmRzLnBpY2syRD1JfX19ZnVuY3Rpb24ganJ0KHQsZSxpLG4scyxvLHIpe1BydCh0LG8pLEpydCh0LHIpfWZ1bmN0aW9uIG5qKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodCVlLzIpfWZ1bmN0aW9uIG1GKHQsZSxpLG4scyxvKXt0Lm1vZGVsTWF0cml4PWksdC5ib3VuZGluZ1ZvbHVtZT1zLHQuY3VsbD1uLHQuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9byxlLmNvbW1hbmRMaXN0LnB1c2godCl9ZnVuY3Rpb24gc2oodCxlLGksbixzKXt0Lm1vZGVsTWF0cml4PWksdC5ib3VuZGluZ1ZvbHVtZT1zLHQuY3VsbD1uLGUuY29tbWFuZExpc3QucHVzaCh0KX1mdW5jdGlvbiBIcnQodCxlLGksbixzLG8scixhKXtsZXQgaD10Ll9wcmltaXRpdmU7dnMuX3VwZGF0ZUJvdW5kaW5nVm9sdW1lcyhoLGUscyk7bGV0IEE7ZS5tb2RlPT09eWUuU0NFTkUzRD9BPWguX2JvdW5kaW5nU3BoZXJlV0M6ZS5tb2RlPT09eWUuQ09MVU1CVVNfVklFVz9BPWguX2JvdW5kaW5nU3BoZXJlQ1Y6ZS5tb2RlPT09eWUuU0NFTkUyRCYmbShoLl9ib3VuZGluZ1NwaGVyZTJEKT9BPWguX2JvdW5kaW5nU3BoZXJlMkQ6bShoLl9ib3VuZGluZ1NwaGVyZU1vcnBoKSYmKEE9aC5fYm91bmRpbmdTcGhlcmVNb3JwaCk7bGV0IGQ9dC5jbGFzc2lmaWNhdGlvblR5cGUsZj1kIT09SnIuQ0VTSVVNXzNEX1RJTEUsRT1kIT09SnIuVEVSUkFJTixfPWUucGFzc2VzLFIsSSxDO2lmKF8ucmVuZGVyKXtsZXQgTj1pLmxlbmd0aDtmb3IoUj0wO1I8TjsrK1IpST1BW25qKFIsTildLGYmJihDPWlbUl0sbUYoQyxlLHMsbyxJLHIpKSxFJiYoQz1pW1JdLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0LG1GKEMsZSxzLG8sSSxyKSk7aWYoZS5pbnZlcnRDbGFzc2lmaWNhdGlvbil7bGV0IFQ9dC5fY29tbWFuZHNJZ25vcmVTaG93LGI9VC5sZW5ndGg7Zm9yKFI9MDtSPGI7KytSKUk9QVtSXSxDPVRbUl0sbUYoQyxlLHMsbyxJLHIpfX1pZihfLnBpY2spe2xldCBOPW4ubGVuZ3RoLFQ9aC5fcGlja09mZnNldHM7Zm9yKFI9MDtSPE47KytSKXtsZXQgYj1UW25qKFIsTildO0k9QVtiLmluZGV4XSxmJiYoQz1uW1JdLHNqKEMsZSxzLG8sSSkpLEUmJihDPW5bUl0uZGVyaXZlZENvbW1hbmRzLnRpbGVzZXQsc2ooQyxlLHMsbyxJKSl9fX12YXIgTHJ0LEVGLG9qPVMoKCk9PntHSigpO0tBKCk7RnQoKTttdCgpO1dzKCk7T3QoKTt1QSgpO0dtKCk7V20oKTtVbSgpO1FtKCk7YmwoKTtESigpO01KKCk7a20oKTtVSSgpO1BOKCk7b3AoKTtyRigpO3VhKCk7ZEYoKTthRigpOyRJKCk7dHAoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqbC5wcm90b3R5cGUse3ZlcnRleENhY2hlT3B0aW1pemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVPcHRpb25zLnZlcnRleENhY2hlT3B0aW1pemV9fSxpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5pbnRlcmxlYXZlfX0scmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlT3B0aW9ucy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXN9fSxhbGxvd1BpY2tpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmltaXRpdmVPcHRpb25zLmFsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZU9wdGlvbnMuYXN5bmNocm9ub3VzfX0sY29tcHJlc3NWZXJ0aWNlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZU9wdGlvbnMuY29tcHJlc3NWZXJ0aWNlc319LHJlYWR5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZHl9fSxfbmVlZHMyRFNoYWRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc1BsYW5hckV4dGVudHNBdHRyaWJ1dGVzfHx0aGlzLl9oYXNTcGhlcmljYWxFeHRlbnRzQXR0cmlidXRlfX19KTtqbC5pc1N1cHBvcnRlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb250ZXh0LnN0ZW5jaWxCdWZmZXJ9O0xydD17c3RlbmNpbFRlc3Q6e2VuYWJsZWQ6ITAsZnJvbnRGdW5jdGlvbjpwci5OT1RfRVFVQUwsZnJvbnRPcGVyYXRpb246e2ZhaWw6SGkuWkVSTyx6RmFpbDpIaS5aRVJPLHpQYXNzOkhpLlpFUk99LGJhY2tGdW5jdGlvbjpwci5OT1RfRVFVQUwsYmFja09wZXJhdGlvbjp7ZmFpbDpIaS5aRVJPLHpGYWlsOkhpLlpFUk8selBhc3M6SGkuWkVST30scmVmZXJlbmNlOjAsbWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLfSxzdGVuY2lsTWFzazpXYS5DTEFTU0lGSUNBVElPTl9NQVNLLGRlcHRoVGVzdDp7ZW5hYmxlZDohMX0sZGVwdGhNYXNrOiExfTtqbC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHRoaXMuX3ByaW1pdGl2ZSkmJiFtKHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMpKXJldHVybjtsZXQgZT10aGlzLmFwcGVhcmFuY2U7bShlKSYmbShlLm1hdGVyaWFsKSYmZS5tYXRlcmlhbC51cGRhdGUodC5jb250ZXh0KTtsZXQgaT10aGlzLG49dGhpcy5fcHJpbWl0aXZlT3B0aW9ucztpZighbSh0aGlzLl9wcmltaXRpdmUpKXtsZXQgcz1BcnJheS5pc0FycmF5KHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXMpP3RoaXMuZ2VvbWV0cnlJbnN0YW5jZXM6W3RoaXMuZ2VvbWV0cnlJbnN0YW5jZXNdLG89cy5sZW5ndGgscixhLGgsQT0hMSxkPSEwLGYsRT0hMSxfPSExO2ZvcihvPjAmJihoPXNbMF0uYXR0cmlidXRlcyxFPWdjLmhhc0F0dHJpYnV0ZXNGb3JTcGhlcmljYWxFeHRlbnRzKGgpLF89Z2MuaGFzQXR0cmlidXRlc0ZvclRleHR1cmVDb29yZGluYXRlUGxhbmVzKGgpLGY9aC5jb2xvcikscj0wO3I8bztyKyspe2E9c1tyXTtsZXQgST1hLmF0dHJpYnV0ZXMuY29sb3I7aWYobShJKSlBPSEwO2Vsc2UgaWYoQSl0aHJvdyBuZXcgWSgiQWxsIEdlb21ldHJ5SW5zdGFuY2VzIG11c3QgaGF2ZSBjb2xvciBhdHRyaWJ1dGVzIHRvIHVzZSBwZXItaW5zdGFuY2UgY29sb3IuIik7ZD1kJiZtKEkpJiZCSi5lcXVhbHMoZixJKX1pZighZCYmIUUmJiFfKXRocm93IG5ldyBZKCJBbGwgR2VvbWV0cnlJbnN0YW5jZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbG9yIGF0dHJpYnV0ZSBleGNlcHQgdmlhIEdyb3VuZFByaW1pdGl2ZXMiKTtpZihBJiYhbShlKSYmKGU9bmV3IERhKHtmbGF0OiEwfSksdGhpcy5hcHBlYXJhbmNlPWUpLCFBJiZlIGluc3RhbmNlb2YgRGEpdGhyb3cgbmV3IFkoIlBlckluc3RhbmNlQ29sb3JBcHBlYXJhbmNlIHJlcXVpcmVzIGNvbG9yIEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzIG9uIGFsbCBHZW9tZXRyeUluc3RhbmNlcyIpO2lmKG0oZS5tYXRlcmlhbCkmJiFFJiYhXyl0aHJvdyBuZXcgWSgiTWF0ZXJpYWxzIG9uIENsYXNzaWZpY2F0aW9uUHJpbWl0aXZlcyBhcmUgbm90IHN1cHBvcnRlZCBleGNlcHQgdmlhIEdyb3VuZFByaW1pdGl2ZXMiKTt0aGlzLl91c2VQaWNrT2Zmc2V0cz0hRSYmIV8sdGhpcy5faGFzU3BoZXJpY2FsRXh0ZW50c0F0dHJpYnV0ZT1FLHRoaXMuX2hhc1BsYW5hckV4dGVudHNBdHRyaWJ1dGVzPV8sdGhpcy5faGFzUGVyQ29sb3JBdHRyaWJ1dGU9QTtsZXQgUj1uZXcgQXJyYXkobyk7Zm9yKHI9MDtyPG87KytyKWE9c1tyXSxSW3JdPW5ldyBMbih7Z2VvbWV0cnk6YS5nZW9tZXRyeSxhdHRyaWJ1dGVzOmEuYXR0cmlidXRlcyxtb2RlbE1hdHJpeDphLm1vZGVsTWF0cml4LGlkOmEuaWQscGlja1ByaW1pdGl2ZTpaKHRoaXMuX3BpY2tQcmltaXRpdmUsaSl9KTtuLmFwcGVhcmFuY2U9ZSxuLmdlb21ldHJ5SW5zdGFuY2VzPVIsbSh0aGlzLl9jcmVhdGVCb3VuZGluZ1ZvbHVtZUZ1bmN0aW9uKSYmKG4uX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb249ZnVuY3Rpb24oSSxDKXtpLl9jcmVhdGVCb3VuZGluZ1ZvbHVtZUZ1bmN0aW9uKEksQyl9KSxuLl9jcmVhdGVSZW5kZXJTdGF0ZXNGdW5jdGlvbj1mdW5jdGlvbihJLEMsTixUKXt5cnQoaSxDKX0sbi5fY3JlYXRlU2hhZGVyUHJvZ3JhbUZ1bmN0aW9uPWZ1bmN0aW9uKEksQyxOKXt4cnQoaSxDKX0sbi5fY3JlYXRlQ29tbWFuZHNGdW5jdGlvbj1mdW5jdGlvbihJLEMsTixULGIsRixCKXtqcnQoaSx2b2lkIDAsdm9pZCAwLCEwLCExLEYsQil9LG0odGhpcy5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uKT9uLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249ZnVuY3Rpb24oSSxDLE4sVCxiLEYsQixVKXtpLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb24oSSxDLE4sVCxiLEYsQixVKX06bi5fdXBkYXRlQW5kUXVldWVDb21tYW5kc0Z1bmN0aW9uPWZ1bmN0aW9uKEksQyxOLFQsYixGLEIsVSl7SHJ0KGksQyxOLFQsYixGLEIsVSl9LHRoaXMuX3ByaW1pdGl2ZT1uZXcgdnMobil9aWYodGhpcy5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWUmJiF0aGlzLl9kZWJ1Z1Nob3dTaGFkb3dWb2x1bWUmJnRoaXMuX3JlYWR5Pyh0aGlzLl9kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9ITAsdGhpcy5fcnNTdGVuY2lsRGVwdGhQYXNzPVluLmZyb21DYWNoZSgkbSghMSwhMSkpLHRoaXMuX3JzU3RlbmNpbERlcHRoUGFzczNEVGlsZXM9WW4uZnJvbUNhY2hlKCRtKCExLCEwKSksdGhpcy5fcnNDb2xvclBhc3M9WW4uZnJvbUNhY2hlKGZGKCExKSkpOiF0aGlzLmRlYnVnU2hvd1NoYWRvd1ZvbHVtZSYmdGhpcy5fZGVidWdTaG93U2hhZG93Vm9sdW1lJiYodGhpcy5fZGVidWdTaG93U2hhZG93Vm9sdW1lPSExLHRoaXMuX3JzU3RlbmNpbERlcHRoUGFzcz1Zbi5mcm9tQ2FjaGUoJG0oITAsITEpKSx0aGlzLl9yc1N0ZW5jaWxEZXB0aFBhc3MzRFRpbGVzPVluLmZyb21DYWNoZSgkbSghMCwhMCkpLHRoaXMuX3JzQ29sb3JQYXNzPVluLmZyb21DYWNoZShmRighMCkpKSx0aGlzLl9wcmltaXRpdmUuYXBwZWFyYW5jZSE9PWUpe2lmKCF0aGlzLl9oYXNTcGhlcmljYWxFeHRlbnRzQXR0cmlidXRlJiYhdGhpcy5faGFzUGxhbmFyRXh0ZW50c0F0dHJpYnV0ZXMmJm0oZS5tYXRlcmlhbCkpdGhyb3cgbmV3IFkoIk1hdGVyaWFscyBvbiBDbGFzc2lmaWNhdGlvblByaW1pdGl2ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZXhjZXB0IHZpYSBHcm91bmRQcmltaXRpdmUiKTtpZighdGhpcy5faGFzUGVyQ29sb3JBdHRyaWJ1dGUmJmUgaW5zdGFuY2VvZiBEYSl0aHJvdyBuZXcgWSgiUGVySW5zdGFuY2VDb2xvckFwcGVhcmFuY2UgcmVxdWlyZXMgY29sb3IgR2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZSIpO3RoaXMuX3ByaW1pdGl2ZS5hcHBlYXJhbmNlPWV9dGhpcy5fcHJpbWl0aXZlLnNob3c9dGhpcy5zaG93LHRoaXMuX3ByaW1pdGl2ZS5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZT10aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lLHRoaXMuX3ByaW1pdGl2ZS51cGRhdGUodCksdC5hZnRlclJlbmRlci5wdXNoKCgpPT57bSh0aGlzLl9wcmltaXRpdmUpJiZ0aGlzLl9wcmltaXRpdmUucmVhZHkmJih0aGlzLl9yZWFkeT0hMCx0aGlzLnJlbGVhc2VHZW9tZXRyeUluc3RhbmNlcyYmKHRoaXMuZ2VvbWV0cnlJbnN0YW5jZXM9dm9pZCAwKSl9KX07amwucHJvdG90eXBlLmdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe2lmKCFtKHRoaXMuX3ByaW1pdGl2ZSkpdGhyb3cgbmV3IFkoIm11c3QgY2FsbCB1cGRhdGUgYmVmb3JlIGNhbGxpbmcgZ2V0R2VvbWV0cnlJbnN0YW5jZUF0dHJpYnV0ZXMiKTtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlLmdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzKHQpfTtqbC5wcm90b3R5cGUuaXNEZXN0cm95ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX07amwucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJpbWl0aXZlPXRoaXMuX3ByaW1pdGl2ZSYmdGhpcy5fcHJpbWl0aXZlLmRlc3Ryb3koKSx0aGlzLl9zcD10aGlzLl9zcCYmdGhpcy5fc3AuZGVzdHJveSgpLHRoaXMuX3NwUGljaz10aGlzLl9zcFBpY2smJnRoaXMuX3NwUGljay5kZXN0cm95KCksdGhpcy5fc3BDb2xvcj10aGlzLl9zcENvbG9yJiZ0aGlzLl9zcENvbG9yLmRlc3Ryb3koKSx0aGlzLl9zcFBpY2syRD12b2lkIDAsdGhpcy5fc3BDb2xvcjJEPXZvaWQgMCxsaSh0aGlzKX07RUY9amx9KTtmdW5jdGlvbiBucih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5hcHBlYXJhbmNlLGk9dC5nZW9tZXRyeUluc3RhbmNlcztpZighbShlKSYmbShpKSl7bGV0IHM9QXJyYXkuaXNBcnJheShpKT9pOltpXSxvPXMubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bztyKyspe2xldCBhPXNbcl0uYXR0cmlidXRlcztpZihtKGEpJiZtKGEuY29sb3IpKXtlPW5ldyBEYSh7ZmxhdDohMH0pO2JyZWFrfX19dGhpcy5hcHBlYXJhbmNlPWUsdGhpcy5nZW9tZXRyeUluc3RhbmNlcz10Lmdlb21ldHJ5SW5zdGFuY2VzLHRoaXMuc2hvdz1aKHQuc2hvdywhMCksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0LmNsYXNzaWZpY2F0aW9uVHlwZSxKci5CT1RIKSx0aGlzLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPVoodC5kZWJ1Z1Nob3dCb3VuZGluZ1ZvbHVtZSwhMSksdGhpcy5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9Wih0LmRlYnVnU2hvd1NoYWRvd1ZvbHVtZSwhMSksdGhpcy5fYm91bmRpbmdWb2x1bWVzPVtdLHRoaXMuX2JvdW5kaW5nVm9sdW1lczJEPVtdLHRoaXMuX3JlYWR5PSExLHRoaXMuX3ByaW1pdGl2ZT12b2lkIDAsdGhpcy5fbWF4SGVpZ2h0PXZvaWQgMCx0aGlzLl9taW5IZWlnaHQ9dm9pZCAwLHRoaXMuX21heFRlcnJhaW5IZWlnaHQ9RG8uX2RlZmF1bHRNYXhUZXJyYWluSGVpZ2h0LHRoaXMuX21pblRlcnJhaW5IZWlnaHQ9RG8uX2RlZmF1bHRNaW5UZXJyYWluSGVpZ2h0LHRoaXMuX2JvdW5kaW5nU3BoZXJlc0tleXM9W10sdGhpcy5fYm91bmRpbmdTcGhlcmVzPVtdLHRoaXMuX3VzZUZyYWdtZW50Q3VsbGluZz0hMSx0aGlzLl96SW5kZXg9dm9pZCAwO2xldCBuPXRoaXM7dGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zPXtnZW9tZXRyeUluc3RhbmNlczp2b2lkIDAsYXBwZWFyYW5jZTp2b2lkIDAsdmVydGV4Q2FjaGVPcHRpbWl6ZTpaKHQudmVydGV4Q2FjaGVPcHRpbWl6ZSwhMSksaW50ZXJsZWF2ZTpaKHQuaW50ZXJsZWF2ZSwhMSkscmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzOloodC5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMsITApLGFsbG93UGlja2luZzpaKHQuYWxsb3dQaWNraW5nLCEwKSxhc3luY2hyb25vdXM6Wih0LmFzeW5jaHJvbm91cywhMCksY29tcHJlc3NWZXJ0aWNlczpaKHQuY29tcHJlc3NWZXJ0aWNlcywhMCksX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb246dm9pZCAwLF91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb246dm9pZCAwLF9waWNrUHJpbWl0aXZlOm4sX2V4dHJ1ZGVkOiEwLF91bmlmb3JtTWFwOnZydH19ZnVuY3Rpb24gcmoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7bGV0IG49aS5tYXhpbXVtUmFkaXVzLHM9bi9NYXRoLmNvcyhlKi41KS1uO3JldHVybiB0Ll9tYXhIZWlnaHQrc319ZnVuY3Rpb24gYWoodCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQuX21pbkhlaWdodH19ZnVuY3Rpb24gYXAodCxlKXtsZXQgaT10Lm1hcFByb2plY3Rpb24uZWxsaXBzb2lkO2lmKCFtKGUuYXR0cmlidXRlcyl8fCFtKGUuYXR0cmlidXRlcy5wb3NpdGlvbjNESGlnaCkpcmV0dXJuIG0oZS5yZWN0YW5nbGUpP2UucmVjdGFuZ2xlOnZvaWQgMDtsZXQgbj1lLmF0dHJpYnV0ZXMucG9zaXRpb24zREhpZ2gudmFsdWVzLHM9ZS5hdHRyaWJ1dGVzLnBvc2l0aW9uM0RMb3cudmFsdWVzLG89bi5sZW5ndGgscj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKGxldCBmPTA7ZjxvO2YrPTMpe2xldCBFPWwudW5wYWNrKG4sZix6cnQpLF89bC51bnBhY2socyxmLEtydCksUj1sLmFkZChFLF8sWHJ0KSxJPWkuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoUixxcnQpLEM9SS5sYXRpdHVkZSxOPUkubG9uZ2l0dWRlO3I9TWF0aC5taW4ocixDKSxhPU1hdGgubWluKGEsTiksaD1NYXRoLm1heChoLEMpLEE9TWF0aC5tYXgoQSxOKX1sZXQgZD0kcnQ7cmV0dXJuIGQubm9ydGg9aCxkLnNvdXRoPXIsZC5lYXN0PUEsZC53ZXN0PWEsZH1mdW5jdGlvbiB0YXQodCxlLGkpe2xldCBuPURvLmdldE1pbmltdW1NYXhpbXVtSGVpZ2h0cyhlLGkpO3QuX21pblRlcnJhaW5IZWlnaHQ9bi5taW5pbXVtVGVycmFpbkhlaWdodCx0Ll9tYXhUZXJyYWluSGVpZ2h0PW4ubWF4aW11bVRlcnJhaW5IZWlnaHR9ZnVuY3Rpb24gZWF0KHQsZSxpKXtsZXQgbj1lLm1hcFByb2plY3Rpb24uZWxsaXBzb2lkLHM9YXAoZSxpKSxvPXpzLmZyb21SZWN0YW5nbGUocyx0Ll9taW5IZWlnaHQsdC5fbWF4SGVpZ2h0LG4pO2lmKHQuX2JvdW5kaW5nVm9sdW1lcy5wdXNoKG8pLCFlLnNjZW5lM0RPbmx5KXtsZXQgcj1lLm1hcFByb2plY3Rpb24sYT1OdC5mcm9tUmVjdGFuZ2xlV2l0aEhlaWdodHMyRChzLHIsdC5fbWF4SGVpZ2h0LHQuX21pbkhlaWdodCk7bC5mcm9tRWxlbWVudHMoYS5jZW50ZXIueixhLmNlbnRlci54LGEuY2VudGVyLnksYS5jZW50ZXIpLHQuX2JvdW5kaW5nVm9sdW1lczJELnB1c2goYSl9fWZ1bmN0aW9uIF9GKHQsZSl7cmV0dXJuIE1hdGguZmxvb3IodCVlLzIpfWZ1bmN0aW9uIFJGKHQsZSxpLG4scyxvLHIpe2xldCBhPXQuX3ByaW1pdGl2ZTtpLm1vZGUhPT15ZS5TQ0VORTNEJiZlLnNoYWRlclByb2dyYW09PT1hLl9zcENvbG9yJiZhLl9uZWVkczJEU2hhZGVyJiYoZT1lLmRlcml2ZWRDb21tYW5kcy5hcHBlYXJhbmNlMkQpLGUub3duZXI9dCxlLm1vZGVsTWF0cml4PW4sZS5ib3VuZGluZ1ZvbHVtZT1vLGUuY3VsbD1zLGUuZGVidWdTaG93Qm91bmRpbmdWb2x1bWU9cixpLmNvbW1hbmRMaXN0LnB1c2goZSl9ZnVuY3Rpb24gQWoodCxlLGksbixzLG8pe2xldCByPXQuX3ByaW1pdGl2ZTtpLm1vZGUhPT15ZS5TQ0VORTNEJiZlLnNoYWRlclByb2dyYW09PT1yLl9zcFBpY2smJnIuX25lZWRzMkRTaGFkZXImJihlPWUuZGVyaXZlZENvbW1hbmRzLnBpY2syRCksZS5vd25lcj10LGUubW9kZWxNYXRyaXg9bixlLmJvdW5kaW5nVm9sdW1lPW8sZS5jdWxsPXMsaS5jb21tYW5kTGlzdC5wdXNoKGUpfWZ1bmN0aW9uIGlhdCh0LGUsaSxuLHMsbyxyLGEpe2xldCBoO2UubW9kZT09PXllLlNDRU5FM0Q/aD10Ll9ib3VuZGluZ1ZvbHVtZXM6aD10Ll9ib3VuZGluZ1ZvbHVtZXMyRDtsZXQgQT10LmNsYXNzaWZpY2F0aW9uVHlwZSxkPUEhPT1Kci5DRVNJVU1fM0RfVElMRSxmPUEhPT1Kci5URVJSQUlOLEU9ZS5wYXNzZXMsXz10Ll9wcmltaXRpdmUsUixJLEM7aWYoRS5yZW5kZXIpe2xldCBOPWkubGVuZ3RoO2ZvcihSPTA7UjxOOysrUilJPWhbX0YoUixOKV0sZCYmKEM9aVtSXSxSRih0LEMsZSxzLG8sSSxyKSksZiYmKEM9aVtSXS5kZXJpdmVkQ29tbWFuZHMudGlsZXNldCxSRih0LEMsZSxzLG8sSSxyKSk7aWYoZS5pbnZlcnRDbGFzc2lmaWNhdGlvbil7bGV0IFQ9Xy5fY29tbWFuZHNJZ25vcmVTaG93LGI9VC5sZW5ndGg7Zm9yKFI9MDtSPGI7KytSKUk9aFtSXSxDPVRbUl0sUkYodCxDLGUscyxvLEkscil9fWlmKEUucGljayl7bGV0IE49bi5sZW5ndGgsVDtmb3IodC5fdXNlRnJhZ21lbnRDdWxsaW5nfHwoVD1fLl9wcmltaXRpdmUuX3BpY2tPZmZzZXRzKSxSPTA7UjxOOysrUil7aWYoST1oW19GKFIsTildLCF0Ll91c2VGcmFnbWVudEN1bGxpbmcpe2xldCBiPVRbX0YoUixOKV07ST1oW2IuaW5kZXhdfWQmJihDPW5bUl0sQWoodCxDLGUscyxvLEkpKSxmJiYoQz1uW1JdLmRlcml2ZWRDb21tYW5kcy50aWxlc2V0LEFqKHQsQyxlLHMsbyxJKSl9fX12YXIgdnJ0LHpydCxLcnQsWHJ0LHFydCwkcnQsaGosY2o9UygoKT0+e0pFKCk7X2koKTtIdCgpO3JpKCk7YWUoKTtGdCgpO210KCk7V3MoKTtPdCgpO3VBKCk7SmwoKTtwbigpO2hGKCk7b2ooKTtVSSgpO29wKCk7dWEoKTtkRigpO3ZydD17dV9nbG9iZU1pbmltdW1BbHRpdHVkZTpmdW5jdGlvbigpe3JldHVybiA1NWUzfX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobnIucHJvdG90eXBlLHt2ZXJ0ZXhDYWNoZU9wdGltaXplOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLnZlcnRleENhY2hlT3B0aW1pemV9fSxpbnRlcmxlYXZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLmludGVybGVhdmV9fSxyZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jbGFzc2lmaWNhdGlvblByaW1pdGl2ZU9wdGlvbnMucmVsZWFzZUdlb21ldHJ5SW5zdGFuY2VzfX0sYWxsb3dQaWNraW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLmFsbG93UGlja2luZ319LGFzeW5jaHJvbm91czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NsYXNzaWZpY2F0aW9uUHJpbWl0aXZlT3B0aW9ucy5hc3luY2hyb25vdXN9fSxjb21wcmVzc1ZlcnRpY2VzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25QcmltaXRpdmVPcHRpb25zLmNvbXByZXNzVmVydGljZXN9fSxyZWFkeTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWR5fX19KTtuci5pc1N1cHBvcnRlZD1FRi5pc1N1cHBvcnRlZDt6cnQ9bmV3IGwsS3J0PW5ldyBsLFhydD1uZXcgbCxxcnQ9bmV3IHV0LCRydD1uZXcgWHQ7bnIuaW5pdGlhbGl6ZVRlcnJhaW5IZWlnaHRzPWZ1bmN0aW9uKCl7cmV0dXJuIERvLmluaXRpYWxpemUoKX07bnIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpJiYhbSh0aGlzLmdlb21ldHJ5SW5zdGFuY2VzKSlyZXR1cm47aWYoIURvLmluaXRpYWxpemVkKXtpZighdGhpcy5hc3luY2hyb25vdXMpdGhyb3cgbmV3IFkoIkZvciBzeW5jaHJvbm91cyBHcm91bmRQcmltaXRpdmVzLCB5b3UgbXVzdCBjYWxsIEdyb3VuZFByaW1pdGl2ZS5pbml0aWFsaXplVGVycmFpbkhlaWdodHMoKSBhbmQgd2FpdCBmb3IgdGhlIHJldHVybmVkIHByb21pc2UgdG8gcmVzb2x2ZS4iKTtuci5pbml0aWFsaXplVGVycmFpbkhlaWdodHMoKTtyZXR1cm59bGV0IGU9dGhpcyxpPXRoaXMuX2NsYXNzaWZpY2F0aW9uUHJpbWl0aXZlT3B0aW9ucztpZighbSh0aGlzLl9wcmltaXRpdmUpKXtsZXQgbj10Lm1hcFByb2plY3Rpb24uZWxsaXBzb2lkLHMsbyxyLGE9QXJyYXkuaXNBcnJheSh0aGlzLmdlb21ldHJ5SW5zdGFuY2VzKT90aGlzLmdlb21ldHJ5SW5zdGFuY2VzOlt0aGlzLmdlb21ldHJ5SW5zdGFuY2VzXSxoPWEubGVuZ3RoLEE9bmV3IEFycmF5KGgpLGQsZjtmb3IoZD0wO2Q8aDsrK2Qpe3M9YVtkXSxvPXMuZ2VvbWV0cnk7bGV0IEk9YXAodCxvKTttKGYpP20oSSkmJlh0LnVuaW9uKGYsSSxmKTpmPVh0LmNsb25lKEkpO2xldCBDPXMuaWQ7aWYobShDKSYmbShJKSl7bGV0IE49RG8uZ2V0Qm91bmRpbmdTcGhlcmUoSSxuKTt0aGlzLl9ib3VuZGluZ1NwaGVyZXNLZXlzLnB1c2goQyksdGhpcy5fYm91bmRpbmdTcGhlcmVzLnB1c2goTil9aWYocj1vLmNvbnN0cnVjdG9yLCFtKHIpfHwhbShyLmNyZWF0ZVNoYWRvd1ZvbHVtZSkpdGhyb3cgbmV3IFkoIk5vdCBhbGwgb2YgdGhlIGdlb21ldHJ5IGluc3RhbmNlcyBoYXZlIEdyb3VuZFByaW1pdGl2ZSBzdXBwb3J0LiIpfXRhdCh0aGlzLGYsbik7bGV0IEU9dC52ZXJ0aWNhbEV4YWdnZXJhdGlvbixfPXQudmVydGljYWxFeGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodDt0aGlzLl9taW5IZWlnaHQ9QV8uZ2V0SGVpZ2h0KHRoaXMuX21pblRlcnJhaW5IZWlnaHQsRSxfKSx0aGlzLl9tYXhIZWlnaHQ9QV8uZ2V0SGVpZ2h0KHRoaXMuX21heFRlcnJhaW5IZWlnaHQsRSxfKTtsZXQgUj1uci5fc3VwcG9ydHNNYXRlcmlhbHModC5jb250ZXh0KTtpZih0aGlzLl91c2VGcmFnbWVudEN1bGxpbmc9UixSKXtsZXQgSSxDPSEwO2ZvcihkPTA7ZDxoOysrZClpZihzPWFbZF0sbz1zLmdlb21ldHJ5LGY9YXAodCxvKSxnYy5zaG91bGRVc2VTcGhlcmljYWxDb29yZGluYXRlcyhmKSl7Qz0hMTticmVha31mb3IoZD0wO2Q8aDsrK2Qpe3M9YVtkXSxvPXMuZ2VvbWV0cnkscj1vLmNvbnN0cnVjdG9yO2xldCBOPWFwKHQsbyksVD1vLnRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM7Qz9JPWdjLmdldFBsYW5hclRleHR1cmVDb29yZGluYXRlQXR0cmlidXRlcyhOLFQsbix0Lm1hcFByb2plY3Rpb24sdGhpcy5fbWF4SGVpZ2h0KTpJPWdjLmdldFNwaGVyaWNhbEV4dGVudEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzKE4sVCxuLHQubWFwUHJvamVjdGlvbik7bGV0IGI9cy5hdHRyaWJ1dGVzO2ZvcihsZXQgRiBpbiBiKWIuaGFzT3duUHJvcGVydHkoRikmJihJW0ZdPWJbRl0pO0FbZF09bmV3IExuKHtnZW9tZXRyeTpyLmNyZWF0ZVNoYWRvd1ZvbHVtZShvLGFqKHRoaXMpLHJqKHRoaXMpKSxhdHRyaWJ1dGVzOkksaWQ6cy5pZH0pfX1lbHNlIGZvcihkPTA7ZDxoOysrZClzPWFbZF0sbz1zLmdlb21ldHJ5LHI9by5jb25zdHJ1Y3RvcixBW2RdPW5ldyBMbih7Z2VvbWV0cnk6ci5jcmVhdGVTaGFkb3dWb2x1bWUobyxhaih0aGlzKSxyaih0aGlzKSksYXR0cmlidXRlczpzLmF0dHJpYnV0ZXMsaWQ6cy5pZH0pO2kuZ2VvbWV0cnlJbnN0YW5jZXM9QSxpLmFwcGVhcmFuY2U9dGhpcy5hcHBlYXJhbmNlLGkuX2NyZWF0ZUJvdW5kaW5nVm9sdW1lRnVuY3Rpb249ZnVuY3Rpb24oSSxDKXtlYXQoZSxJLEMpfSxpLl91cGRhdGVBbmRRdWV1ZUNvbW1hbmRzRnVuY3Rpb249ZnVuY3Rpb24oSSxDLE4sVCxiLEYsQixVKXtpYXQoZSxDLE4sVCxiLEYsQixVKX0sdGhpcy5fcHJpbWl0aXZlPW5ldyBFRihpKX10aGlzLl9wcmltaXRpdmUuYXBwZWFyYW5jZT10aGlzLmFwcGVhcmFuY2UsdGhpcy5fcHJpbWl0aXZlLnNob3c9dGhpcy5zaG93LHRoaXMuX3ByaW1pdGl2ZS5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWU9dGhpcy5kZWJ1Z1Nob3dTaGFkb3dWb2x1bWUsdGhpcy5fcHJpbWl0aXZlLmRlYnVnU2hvd0JvdW5kaW5nVm9sdW1lPXRoaXMuZGVidWdTaG93Qm91bmRpbmdWb2x1bWUsdGhpcy5fcHJpbWl0aXZlLnVwZGF0ZSh0KSx0LmFmdGVyUmVuZGVyLnB1c2goKCk9PnshdGhpcy5fcmVhZHkmJm0odGhpcy5fcHJpbWl0aXZlKSYmdGhpcy5fcHJpbWl0aXZlLnJlYWR5JiYodGhpcy5fcmVhZHk9ITAsdGhpcy5yZWxlYXNlR2VvbWV0cnlJbnN0YW5jZXMmJih0aGlzLmdlb21ldHJ5SW5zdGFuY2VzPXZvaWQgMCkpfSl9O25yLnByb3RvdHlwZS5nZXRCb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0KXtsZXQgZT10aGlzLl9ib3VuZGluZ1NwaGVyZXNLZXlzLmluZGV4T2YodCk7aWYoZSE9PS0xKXJldHVybiB0aGlzLl9ib3VuZGluZ1NwaGVyZXNbZV19O25yLnByb3RvdHlwZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcz1mdW5jdGlvbih0KXtpZighbSh0aGlzLl9wcmltaXRpdmUpKXRocm93IG5ldyBZKCJtdXN0IGNhbGwgdXBkYXRlIGJlZm9yZSBjYWxsaW5nIGdldEdlb21ldHJ5SW5zdGFuY2VBdHRyaWJ1dGVzIik7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZS5nZXRHZW9tZXRyeUluc3RhbmNlQXR0cmlidXRlcyh0KX07bnIucHJvdG90eXBlLmlzRGVzdHJveWVkPWZ1bmN0aW9uKCl7cmV0dXJuITF9O25yLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaW1pdGl2ZT10aGlzLl9wcmltaXRpdmUmJnRoaXMuX3ByaW1pdGl2ZS5kZXN0cm95KCksbGkodGhpcyl9O25yLl9zdXBwb3J0c01hdGVyaWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdC5kZXB0aFRleHR1cmV9O25yLnN1cHBvcnRzTWF0ZXJpYWxzPWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInNjZW5lIix0KSxuci5fc3VwcG9ydHNNYXRlcmlhbHModC5mcmFtZVN0YXRlLmNvbnRleHQpfTtoaj1ucn0pO2Z1bmN0aW9uIFRjKHQpe3RoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9oYXNDbG9uZT0hMSx0aGlzLl9oYXNFcXVhbHM9ITEsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuc2V0VmFsdWUodCl9dmFyIENoLGhfPVMoKCk9PnttdCgpO3hpKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVGMucHJvdG90eXBlLHtpc0NvbnN0YW50Ont2YWx1ZTohMH0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19fSk7VGMucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2hhc0Nsb25lP3RoaXMuX3ZhbHVlLmNsb25lKGUpOnRoaXMuX3ZhbHVlfTtUYy5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcy5fdmFsdWU7aWYoZSE9PXQpe2xldCBpPW0odCksbj1pJiZ0eXBlb2YgdC5jbG9uZT09ImZ1bmN0aW9uIixzPWkmJnR5cGVvZiB0LmVxdWFscz09ImZ1bmN0aW9uIjsoIXN8fCF0LmVxdWFscyhlKSkmJih0aGlzLl9oYXNDbG9uZT1uLHRoaXMuX2hhc0VxdWFscz1zLHRoaXMuX3ZhbHVlPW4/dC5jbG9uZSh0aGlzLl92YWx1ZSk6dCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19O1RjLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHx0IGluc3RhbmNlb2YgVGMmJighdGhpcy5faGFzRXF1YWxzJiZ0aGlzLl92YWx1ZT09PXQuX3ZhbHVlfHx0aGlzLl9oYXNFcXVhbHMmJnRoaXMuX3ZhbHVlLmVxdWFscyh0Ll92YWx1ZSkpfTtUYy5wcm90b3R5cGUudmFsdWVPZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX07VGMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFN0cmluZyh0aGlzLl92YWx1ZSl9O0NoPVRjfSk7ZnVuY3Rpb24gbmF0KHQsZSxpLG4scyl7cmV0dXJue2NvbmZpZ3VyYWJsZTpuLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW2VdfSxzZXQ6ZnVuY3Rpb24obyl7bGV0IHI9dGhpc1tlXSxhPXRoaXNbaV07bShhKSYmKGEoKSx0aGlzW2ldPXZvaWQgMCksbyE9PXZvaWQgMCYmKCFtKG8pfHwhbShvLmdldFZhbHVlKSkmJm0ocykmJihvPXMobykpLHIhPT1vJiYodGhpc1tlXT1vLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyx0LG8scikpLG0obykmJm0oby5kZWZpbml0aW9uQ2hhbmdlZCkmJih0aGlzW2ldPW8uZGVmaW5pdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbigpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyx0LG8sbyl9LHRoaXMpKX19fWZ1bmN0aW9uIHNhdCh0KXtyZXR1cm4gbmV3IENoKHQpfWZ1bmN0aW9uIG9hdCh0LGUsaSl7cmV0dXJuIG5hdCh0LGBfJHt0LnRvU3RyaW5nKCl9YCxgXyR7dC50b1N0cmluZygpfVN1YnNjcmlwdGlvbmAsWihlLCExKSxaKGksc2F0KSl9dmFyIHJ0LHluPVMoKCk9PntGdCgpO210KCk7aF8oKTtydD1vYXR9KTtmdW5jdGlvbiBjXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW1hZ2U9dm9pZCAwLHRoaXMuX2ltYWdlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fc2NhbGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0PXZvaWQgMCx0aGlzLl9waXhlbE9mZnNldFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXllT2Zmc2V0PXZvaWQgMCx0aGlzLl9leWVPZmZzZXRTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hvcml6b250YWxPcmlnaW49dm9pZCAwLHRoaXMuX2hvcml6b250YWxPcmlnaW5TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3ZlcnRpY2FsT3JpZ2luPXZvaWQgMCx0aGlzLl92ZXJ0aWNhbE9yaWdpblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NvbG9yPXZvaWQgMCx0aGlzLl9jb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcm90YXRpb249dm9pZCAwLHRoaXMuX3JvdGF0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9hbGlnbmVkQXhpcz12b2lkIDAsdGhpcy5fYWxpZ25lZEF4aXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NpemVJbk1ldGVycz12b2lkIDAsdGhpcy5fc2l6ZUluTWV0ZXJzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5fd2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3NjYWxlQnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9pbWFnZVN1YlJlZ2lvbj12b2lkIDAsdGhpcy5faW1hZ2VTdWJSZWdpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dm9pZCAwLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgbGosZGo9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO3hpKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IiksaW1hZ2U6cnQoImltYWdlIiksc2NhbGU6cnQoInNjYWxlIikscGl4ZWxPZmZzZXQ6cnQoInBpeGVsT2Zmc2V0IiksZXllT2Zmc2V0OnJ0KCJleWVPZmZzZXQiKSxob3Jpem9udGFsT3JpZ2luOnJ0KCJob3Jpem9udGFsT3JpZ2luIiksdmVydGljYWxPcmlnaW46cnQoInZlcnRpY2FsT3JpZ2luIiksaGVpZ2h0UmVmZXJlbmNlOnJ0KCJoZWlnaHRSZWZlcmVuY2UiKSxjb2xvcjpydCgiY29sb3IiKSxyb3RhdGlvbjpydCgicm90YXRpb24iKSxhbGlnbmVkQXhpczpydCgiYWxpZ25lZEF4aXMiKSxzaXplSW5NZXRlcnM6cnQoInNpemVJbk1ldGVycyIpLHdpZHRoOnJ0KCJ3aWR0aCIpLGhlaWdodDpydCgiaGVpZ2h0Iiksc2NhbGVCeURpc3RhbmNlOnJ0KCJzY2FsZUJ5RGlzdGFuY2UiKSx0cmFuc2x1Y2VuY3lCeURpc3RhbmNlOnJ0KCJ0cmFuc2x1Y2VuY3lCeURpc3RhbmNlIikscGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U6cnQoInBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlIiksaW1hZ2VTdWJSZWdpb246cnQoImltYWdlU3ViUmVnaW9uIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKSxkaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U6cnQoImRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSIpfSk7Y18ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5fc2hvdyx0LmltYWdlPXRoaXMuX2ltYWdlLHQuc2NhbGU9dGhpcy5fc2NhbGUsdC5waXhlbE9mZnNldD10aGlzLl9waXhlbE9mZnNldCx0LmV5ZU9mZnNldD10aGlzLl9leWVPZmZzZXQsdC5ob3Jpem9udGFsT3JpZ2luPXRoaXMuX2hvcml6b250YWxPcmlnaW4sdC52ZXJ0aWNhbE9yaWdpbj10aGlzLl92ZXJ0aWNhbE9yaWdpbix0LmhlaWdodFJlZmVyZW5jZT10aGlzLl9oZWlnaHRSZWZlcmVuY2UsdC5jb2xvcj10aGlzLl9jb2xvcix0LnJvdGF0aW9uPXRoaXMuX3JvdGF0aW9uLHQuYWxpZ25lZEF4aXM9dGhpcy5fYWxpZ25lZEF4aXMsdC5zaXplSW5NZXRlcnM9dGhpcy5fc2l6ZUluTWV0ZXJzLHQud2lkdGg9dGhpcy5fd2lkdGgsdC5oZWlnaHQ9dGhpcy5faGVpZ2h0LHQuc2NhbGVCeURpc3RhbmNlPXRoaXMuX3NjYWxlQnlEaXN0YW5jZSx0LnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9dGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0LnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPXRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlLHQuaW1hZ2VTdWJSZWdpb249dGhpcy5faW1hZ2VTdWJSZWdpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSx0KTpuZXcgY18odGhpcyl9O2NfLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuX3Nob3csdC5zaG93KSx0aGlzLmltYWdlPVoodGhpcy5faW1hZ2UsdC5pbWFnZSksdGhpcy5zY2FsZT1aKHRoaXMuX3NjYWxlLHQuc2NhbGUpLHRoaXMucGl4ZWxPZmZzZXQ9Wih0aGlzLl9waXhlbE9mZnNldCx0LnBpeGVsT2Zmc2V0KSx0aGlzLmV5ZU9mZnNldD1aKHRoaXMuX2V5ZU9mZnNldCx0LmV5ZU9mZnNldCksdGhpcy5ob3Jpem9udGFsT3JpZ2luPVoodGhpcy5faG9yaXpvbnRhbE9yaWdpbix0Lmhvcml6b250YWxPcmlnaW4pLHRoaXMudmVydGljYWxPcmlnaW49Wih0aGlzLl92ZXJ0aWNhbE9yaWdpbix0LnZlcnRpY2FsT3JpZ2luKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuX2hlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5jb2xvcj1aKHRoaXMuX2NvbG9yLHQuY29sb3IpLHRoaXMucm90YXRpb249Wih0aGlzLl9yb3RhdGlvbix0LnJvdGF0aW9uKSx0aGlzLmFsaWduZWRBeGlzPVoodGhpcy5fYWxpZ25lZEF4aXMsdC5hbGlnbmVkQXhpcyksdGhpcy5zaXplSW5NZXRlcnM9Wih0aGlzLl9zaXplSW5NZXRlcnMsdC5zaXplSW5NZXRlcnMpLHRoaXMud2lkdGg9Wih0aGlzLl93aWR0aCx0LndpZHRoKSx0aGlzLmhlaWdodD1aKHRoaXMuX2hlaWdodCx0LmhlaWdodCksdGhpcy5zY2FsZUJ5RGlzdGFuY2U9Wih0aGlzLl9zY2FsZUJ5RGlzdGFuY2UsdC5zY2FsZUJ5RGlzdGFuY2UpLHRoaXMudHJhbnNsdWNlbmN5QnlEaXN0YW5jZT1aKHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSx0aGlzLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPVoodGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UsdC5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSksdGhpcy5pbWFnZVN1YlJlZ2lvbj1aKHRoaXMuX2ltYWdlU3ViUmVnaW9uLHQuaW1hZ2VTdWJSZWdpb24pLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZT1aKHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZSx0LmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZSl9O2xqPWNffSk7ZnVuY3Rpb24gVWEoKXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9dmFyIFNpLEhsPVMoKCk9PntGdCgpO210KCk7T3QoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVYS5wcm90b3R5cGUse2lzQ29uc3RhbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7VWEucHJvdG90eXBlLmdldFZhbHVlPVkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3I7VWEucHJvdG90eXBlLmVxdWFscz1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO1VhLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmdC5lcXVhbHMoZSl9O1VhLmFycmF5RXF1YWxzPWZ1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuITA7aWYoIW0odCl8fCFtKGUpfHx0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2xldCBpPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248aTtuKyspaWYoIVVhLmVxdWFscyh0W25dLGVbbl0pKXJldHVybiExO3JldHVybiEwfTtVYS5pc0NvbnN0YW50PWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHx0LmlzQ29uc3RhbnR9O1VhLmdldFZhbHVlT3JVbmRlZmluZWQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBtKHQpP3QuZ2V0VmFsdWUoZSxpKTp2b2lkIDB9O1VhLmdldFZhbHVlT3JEZWZhdWx0PWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybiBtKHQpP1oodC5nZXRWYWx1ZShlLG4pLGkpOml9O1VhLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0PWZ1bmN0aW9uKHQsZSxpLG4pe2xldCBzO3JldHVybiBtKHQpJiYocz10LmdldFZhbHVlKGUsbikpLG0ocyl8fChzPWkuY2xvbmUocykpLHN9O1NpPVVhfSk7ZnVuY3Rpb24gdGYodCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX2NvbG9yPXZvaWQgMCx0aGlzLl9jb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5jb2xvcj10fXZhciBtaixmaj1TKCgpPT57UW4oKTttdCgpO3hpKCk7eW4oKTtIbCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRmLnByb3RvdHlwZSx7aXNDb25zdGFudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFNpLmlzQ29uc3RhbnQodGhpcy5fY29sb3IpfX0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LGNvbG9yOnJ0KCJjb2xvciIpfSk7dGYucHJvdG90eXBlLmdldFR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIkNvbG9yIn07dGYucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPXt9KSxlLmNvbG9yPVNpLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0KHRoaXMuX2NvbG9yLHQsWnQuV0hJVEUsZS5jb2xvciksZX07dGYucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fHQgaW5zdGFuY2VvZiB0ZiYmU2kuZXF1YWxzKHRoaXMuX2NvbG9yLHQuX2NvbG9yKX07bWo9dGZ9KTtmdW5jdGlvbiBlZih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX2ltYWdlPXZvaWQgMCx0aGlzLl9pbWFnZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcmVwZWF0PXZvaWQgMCx0aGlzLl9yZXBlYXRTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NvbG9yPXZvaWQgMCx0aGlzLl9jb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdHJhbnNwYXJlbnQ9dm9pZCAwLHRoaXMuX3RyYW5zcGFyZW50U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5yZXBlYXQ9dC5yZXBlYXQsdGhpcy5jb2xvcj10LmNvbG9yLHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudH12YXIgcmF0LGFhdCxBYXQsRWosX2o9UygoKT0+e1hlKCk7UW4oKTtGdCgpO210KCk7eGkoKTt5bigpO0hsKCk7cmF0PW5ldyBudCgxLDEpLGFhdD0hMSxBYXQ9WnQuV0hJVEU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZWYucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gU2kuaXNDb25zdGFudCh0aGlzLl9pbWFnZSkmJlNpLmlzQ29uc3RhbnQodGhpcy5fcmVwZWF0KX19LGRlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxpbWFnZTpydCgiaW1hZ2UiKSxyZXBlYXQ6cnQoInJlcGVhdCIpLGNvbG9yOnJ0KCJjb2xvciIpLHRyYW5zcGFyZW50OnJ0KCJ0cmFuc3BhcmVudCIpfSk7ZWYucHJvdG90eXBlLmdldFR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIkltYWdlIn07ZWYucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPXt9KSxlLmltYWdlPVNpLmdldFZhbHVlT3JVbmRlZmluZWQodGhpcy5faW1hZ2UsdCksZS5yZXBlYXQ9U2kuZ2V0VmFsdWVPckNsb25lZERlZmF1bHQodGhpcy5fcmVwZWF0LHQscmF0LGUucmVwZWF0KSxlLmNvbG9yPVNpLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0KHRoaXMuX2NvbG9yLHQsQWF0LGUuY29sb3IpLFNpLmdldFZhbHVlT3JEZWZhdWx0KHRoaXMuX3RyYW5zcGFyZW50LHQsYWF0KSYmKGUuY29sb3IuYWxwaGE9TWF0aC5taW4oLjk5LGUuY29sb3IuYWxwaGEpKSxlfTtlZi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIGVmJiZTaS5lcXVhbHModGhpcy5faW1hZ2UsdC5faW1hZ2UpJiZTaS5lcXVhbHModGhpcy5fcmVwZWF0LHQuX3JlcGVhdCkmJlNpLmVxdWFscyh0aGlzLl9jb2xvcix0Ll9jb2xvcikmJlNpLmVxdWFscyh0aGlzLl90cmFuc3BhcmVudCx0Ll90cmFuc3BhcmVudCl9O0VqPWVmfSk7ZnVuY3Rpb24gaGF0KHQpe2lmKHQgaW5zdGFuY2VvZiBadClyZXR1cm4gbmV3IG1qKHQpO2lmKHR5cGVvZiB0PT0ic3RyaW5nInx8dCBpbnN0YW5jZW9mIHRufHx0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fHQgaW5zdGFuY2VvZiBIVE1MVmlkZW9FbGVtZW50KXtsZXQgZT1uZXcgRWo7cmV0dXJuIGUuaW1hZ2U9dCxlfXRocm93IG5ldyBZKGBVbmFibGUgdG8gaW5mZXIgbWF0ZXJpYWwgdHlwZTogJHt0fWApfWZ1bmN0aW9uIGNhdCh0LGUpe3JldHVybiBydCh0LGUsaGF0KX12YXIgd24sdXI9UygoKT0+e1FuKCk7T3QoKTtJYSgpO2ZqKCk7eW4oKTtfaigpO3duPWNhdH0pO2Z1bmN0aW9uIGxfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaW1lbnNpb25zPXZvaWQgMCx0aGlzLl9kaW1lbnNpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBSaixaaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobF8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLGRpbWVuc2lvbnM6cnQoImRpbWVuc2lvbnMiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGZpbGw6cnQoImZpbGwiKSxtYXRlcmlhbDp3bigibWF0ZXJpYWwiKSxvdXRsaW5lOnJ0KCJvdXRsaW5lIiksb3V0bGluZUNvbG9yOnJ0KCJvdXRsaW5lQ29sb3IiKSxvdXRsaW5lV2lkdGg6cnQoIm91dGxpbmVXaWR0aCIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpfSk7bF8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQuZGltZW5zaW9ucz10aGlzLmRpbWVuc2lvbnMsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5maWxsPXRoaXMuZmlsbCx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5vdXRsaW5lPXRoaXMub3V0bGluZSx0Lm91dGxpbmVDb2xvcj10aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVXaWR0aD10aGlzLm91dGxpbmVXaWR0aCx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQpOm5ldyBsXyh0aGlzKX07bF8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5kaW1lbnNpb25zPVoodGhpcy5kaW1lbnNpb25zLHQuZGltZW5zaW9ucyksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5maWxsPVoodGhpcy5maWxsLHQuZmlsbCksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5vdXRsaW5lPVoodGhpcy5vdXRsaW5lLHQub3V0bGluZSksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbil9O1JqPWxffSk7ZnVuY3Rpb24gbmYoKXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9dmFyIFpGLEFwLElGPVMoKCk9PntIdCgpO210KCk7T3QoKTtkbigpO2ljKCk7ZnIoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuZi5wcm90b3R5cGUse2lzQ29uc3RhbnQ6e2dldDpZLnRocm93SW5zdGFudGlhdGlvbkVycm9yfSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LHJlZmVyZW5jZUZyYW1lOntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn19KTtuZi5wcm90b3R5cGUuZ2V0VmFsdWU9WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcjtuZi5wcm90b3R5cGUuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lPVkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3I7bmYucHJvdG90eXBlLmVxdWFscz1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO1pGPW5ldyBsdDtuZi5jb252ZXJ0VG9SZWZlcmVuY2VGcmFtZT1mdW5jdGlvbih0LGUsaSxuLHMpe2lmKCFtKGUpKXJldHVybiBlO2lmKG0ocyl8fChzPW5ldyBsKSxpPT09bilyZXR1cm4gbC5jbG9uZShlLHMpO2xldCBvPUluLmNvbXB1dGVJY3JmVG9GaXhlZE1hdHJpeCh0LFpGKTtpZihtKG8pfHwobz1Jbi5jb21wdXRlVGVtZVRvUHNldWRvRml4ZWRNYXRyaXgodCxaRikpLGk9PT0kaS5JTkVSVElBTClyZXR1cm4gbHQubXVsdGlwbHlCeVZlY3RvcihvLGUscyk7aWYoaT09PSRpLkZJWEVEKXJldHVybiBsdC5tdWx0aXBseUJ5VmVjdG9yKGx0LnRyYW5zcG9zZShvLFpGKSxlLHMpfTtBcD1uZn0pO2Z1bmN0aW9uIHZsKHQsZSl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3ZhbHVlPWwuY2xvbmUodCksdGhpcy5fcmVmZXJlbmNlRnJhbWU9WihlLCRpLkZJWEVEKX12YXIgSWoscGo9UygoKT0+e0h0KCk7RnQoKTttdCgpO090KCk7eGkoKTtpYygpO0lGKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModmwucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hbSh0aGlzLl92YWx1ZSl8fHRoaXMuX3JlZmVyZW5jZUZyYW1lPT09JGkuRklYRUR9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0scmVmZXJlbmNlRnJhbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWZlcmVuY2VGcmFtZX19fSk7dmwucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lKHQsJGkuRklYRUQsZSl9O3ZsLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe2xldCBpPSExO2wuZXF1YWxzKHRoaXMuX3ZhbHVlLHQpfHwoaT0hMCx0aGlzLl92YWx1ZT1sLmNsb25lKHQpKSxtKGUpJiZ0aGlzLl9yZWZlcmVuY2VGcmFtZSE9PWUmJihpPSEwLHRoaXMuX3JlZmVyZW5jZUZyYW1lPWUpLGkmJnRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O3ZsLnByb3RvdHlwZS5nZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWU9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyZWZlcmVuY2VGcmFtZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gQXAuY29udmVydFRvUmVmZXJlbmNlRnJhbWUodCx0aGlzLl92YWx1ZSx0aGlzLl9yZWZlcmVuY2VGcmFtZSxlLGkpfTt2bC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIHZsJiZsLmVxdWFscyh0aGlzLl92YWx1ZSx0Ll92YWx1ZSkmJnRoaXMuX3JlZmVyZW5jZUZyYW1lPT09dC5fcmVmZXJlbmNlRnJhbWV9O0lqPXZsfSk7ZnVuY3Rpb24gZF8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9ucz12b2lkIDAsdGhpcy5fcG9zaXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5fd2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGU9dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGU9dm9pZCAwLHRoaXMuX2NsYXNzaWZpY2F0aW9uVHlwZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fekluZGV4PXZvaWQgMCx0aGlzLl96SW5kZXhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIHVqLENqPVMoKCk9PntGdCgpO210KCk7T3QoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscG9zaXRpb25zOnJ0KCJwb3NpdGlvbnMiKSx3aWR0aDpydCgid2lkdGgiKSxoZWlnaHQ6cnQoImhlaWdodCIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZXh0cnVkZWRIZWlnaHQ6cnQoImV4dHJ1ZGVkSGVpZ2h0IiksZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U6cnQoImV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIiksY29ybmVyVHlwZTpydCgiY29ybmVyVHlwZSIpLGdyYW51bGFyaXR5OnJ0KCJncmFudWxhcml0eSIpLGZpbGw6cnQoImZpbGwiKSxtYXRlcmlhbDp3bigibWF0ZXJpYWwiKSxvdXRsaW5lOnJ0KCJvdXRsaW5lIiksb3V0bGluZUNvbG9yOnJ0KCJvdXRsaW5lQ29sb3IiKSxvdXRsaW5lV2lkdGg6cnQoIm91dGxpbmVXaWR0aCIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGNsYXNzaWZpY2F0aW9uVHlwZTpydCgiY2xhc3NpZmljYXRpb25UeXBlIiksekluZGV4OnJ0KCJ6SW5kZXgiKX0pO2RfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnBvc2l0aW9ucz10aGlzLnBvc2l0aW9ucyx0LndpZHRoPXRoaXMud2lkdGgsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LmNvcm5lclR5cGU9dGhpcy5jb3JuZXJUeXBlLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5jbGFzc2lmaWNhdGlvblR5cGU9dGhpcy5jbGFzc2lmaWNhdGlvblR5cGUsdC56SW5kZXg9dGhpcy56SW5kZXgsdCk6bmV3IGRfKHRoaXMpfTtkXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnBvc2l0aW9ucz1aKHRoaXMucG9zaXRpb25zLHQucG9zaXRpb25zKSx0aGlzLndpZHRoPVoodGhpcy53aWR0aCx0LndpZHRoKSx0aGlzLmhlaWdodD1aKHRoaXMuaGVpZ2h0LHQuaGVpZ2h0KSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmV4dHJ1ZGVkSGVpZ2h0PVoodGhpcy5leHRydWRlZEhlaWdodCx0LmV4dHJ1ZGVkSGVpZ2h0KSx0aGlzLmV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlPVoodGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LmV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmNvcm5lclR5cGU9Wih0aGlzLmNvcm5lclR5cGUsdC5jb3JuZXJUeXBlKSx0aGlzLmdyYW51bGFyaXR5PVoodGhpcy5ncmFudWxhcml0eSx0LmdyYW51bGFyaXR5KSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZT1aKHRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuY2xhc3NpZmljYXRpb25UeXBlKSx0aGlzLnpJbmRleD1aKHRoaXMuekluZGV4LHQuekluZGV4KX07dWo9ZF99KTtmdW5jdGlvbiBsYXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gZGF0KHQsZSl7cmV0dXJuIHJ0KHQsZSxsYXQpfXZhciBocCxnaj1TKCgpPT57eW4oKTtocD1kYXR9KTtmdW5jdGlvbiBtXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbGVuZ3RoPXZvaWQgMCx0aGlzLl9sZW5ndGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RvcFJhZGl1cz12b2lkIDAsdGhpcy5fdG9wUmFkaXVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ib3R0b21SYWRpdXM9dm9pZCAwLHRoaXMuX2JvdHRvbVJhZGl1c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2ZpbGw9dm9pZCAwLHRoaXMuX2ZpbGxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZT12b2lkIDAsdGhpcy5fb3V0bGluZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aD12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9dm9pZCAwLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2xpY2VzPXZvaWQgMCx0aGlzLl9zbGljZXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBUaixOaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobV8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLGxlbmd0aDpydCgibGVuZ3RoIiksdG9wUmFkaXVzOnJ0KCJ0b3BSYWRpdXMiKSxib3R0b21SYWRpdXM6cnQoImJvdHRvbVJhZGl1cyIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZmlsbDpydCgiZmlsbCIpLG1hdGVyaWFsOnduKCJtYXRlcmlhbCIpLG91dGxpbmU6cnQoIm91dGxpbmUiKSxvdXRsaW5lQ29sb3I6cnQoIm91dGxpbmVDb2xvciIpLG91dGxpbmVXaWR0aDpydCgib3V0bGluZVdpZHRoIiksbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnJ0KCJudW1iZXJPZlZlcnRpY2FsTGluZXMiKSxzbGljZXM6cnQoInNsaWNlcyIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpfSk7bV8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQubGVuZ3RoPXRoaXMubGVuZ3RoLHQudG9wUmFkaXVzPXRoaXMudG9wUmFkaXVzLHQuYm90dG9tUmFkaXVzPXRoaXMuYm90dG9tUmFkaXVzLHQuaGVpZ2h0UmVmZXJlbmNlPXRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuZmlsbD10aGlzLmZpbGwsdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHQub3V0bGluZT10aGlzLm91dGxpbmUsdC5vdXRsaW5lQ29sb3I9dGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lV2lkdGg9dGhpcy5vdXRsaW5lV2lkdGgsdC5udW1iZXJPZlZlcnRpY2FsTGluZXM9dGhpcy5udW1iZXJPZlZlcnRpY2FsTGluZXMsdC5zbGljZXM9dGhpcy5zbGljZXMsdC5zaGFkb3dzPXRoaXMuc2hhZG93cyx0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0KTpuZXcgbV8odGhpcyl9O21fLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMubGVuZ3RoPVoodGhpcy5sZW5ndGgsdC5sZW5ndGgpLHRoaXMudG9wUmFkaXVzPVoodGhpcy50b3BSYWRpdXMsdC50b3BSYWRpdXMpLHRoaXMuYm90dG9tUmFkaXVzPVoodGhpcy5ib3R0b21SYWRpdXMsdC5ib3R0b21SYWRpdXMpLHRoaXMuaGVpZ2h0UmVmZXJlbmNlPVoodGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5oZWlnaHRSZWZlcmVuY2UpLHRoaXMuZmlsbD1aKHRoaXMuZmlsbCx0LmZpbGwpLHRoaXMubWF0ZXJpYWw9Wih0aGlzLm1hdGVyaWFsLHQubWF0ZXJpYWwpLHRoaXMub3V0bGluZT1aKHRoaXMub3V0bGluZSx0Lm91dGxpbmUpLHRoaXMub3V0bGluZUNvbG9yPVoodGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lQ29sb3IpLHRoaXMub3V0bGluZVdpZHRoPVoodGhpcy5vdXRsaW5lV2lkdGgsdC5vdXRsaW5lV2lkdGgpLHRoaXMubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPVoodGhpcy5udW1iZXJPZlZlcnRpY2FsTGluZXMsdC5udW1iZXJPZlZlcnRpY2FsTGluZXMpLHRoaXMuc2xpY2VzPVoodGhpcy5zbGljZXMsdC5zbGljZXMpLHRoaXMuc2hhZG93cz1aKHRoaXMuc2hhZG93cyx0LnNoYWRvd3MpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pfTtUaj1tX30pO2Z1bmN0aW9uIGZfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zZW1pTWFqb3JBeGlzPXZvaWQgMCx0aGlzLl9zZW1pTWFqb3JBeGlzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zZW1pTWlub3JBeGlzPXZvaWQgMCx0aGlzLl9zZW1pTWlub3JBeGlzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHQ9dm9pZCAwLHRoaXMuX2hlaWdodFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9yb3RhdGlvbj12b2lkIDAsdGhpcy5fcm90YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lcz12b2lkIDAsdGhpcy5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFkb3dzPXZvaWQgMCx0aGlzLl9zaGFkb3dzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xhc3NpZmljYXRpb25UeXBlPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3pJbmRleD12b2lkIDAsdGhpcy5fekluZGV4U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBGaixiaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZl8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLHNlbWlNYWpvckF4aXM6cnQoInNlbWlNYWpvckF4aXMiKSxzZW1pTWlub3JBeGlzOnJ0KCJzZW1pTWlub3JBeGlzIiksaGVpZ2h0OnJ0KCJoZWlnaHQiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGV4dHJ1ZGVkSGVpZ2h0OnJ0KCJleHRydWRlZEhlaWdodCIpLGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlOnJ0KCJleHRydWRlZEhlaWdodFJlZmVyZW5jZSIpLHJvdGF0aW9uOnJ0KCJyb3RhdGlvbiIpLHN0Um90YXRpb246cnQoInN0Um90YXRpb24iKSxncmFudWxhcml0eTpydCgiZ3JhbnVsYXJpdHkiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxudW1iZXJPZlZlcnRpY2FsTGluZXM6cnQoIm51bWJlck9mVmVydGljYWxMaW5lcyIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGNsYXNzaWZpY2F0aW9uVHlwZTpydCgiY2xhc3NpZmljYXRpb25UeXBlIiksekluZGV4OnJ0KCJ6SW5kZXgiKX0pO2ZfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnNlbWlNYWpvckF4aXM9dGhpcy5zZW1pTWFqb3JBeGlzLHQuc2VtaU1pbm9yQXhpcz10aGlzLnNlbWlNaW5vckF4aXMsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LnJvdGF0aW9uPXRoaXMucm90YXRpb24sdC5zdFJvdGF0aW9uPXRoaXMuc3RSb3RhdGlvbix0LmdyYW51bGFyaXR5PXRoaXMuZ3JhbnVsYXJpdHksdC5maWxsPXRoaXMuZmlsbCx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5vdXRsaW5lPXRoaXMub3V0bGluZSx0Lm91dGxpbmVDb2xvcj10aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVXaWR0aD10aGlzLm91dGxpbmVXaWR0aCx0Lm51bWJlck9mVmVydGljYWxMaW5lcz10aGlzLm51bWJlck9mVmVydGljYWxMaW5lcyx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuY2xhc3NpZmljYXRpb25UeXBlPXRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuekluZGV4PXRoaXMuekluZGV4LHQpOm5ldyBmXyh0aGlzKX07Zl8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5zZW1pTWFqb3JBeGlzPVoodGhpcy5zZW1pTWFqb3JBeGlzLHQuc2VtaU1ham9yQXhpcyksdGhpcy5zZW1pTWlub3JBeGlzPVoodGhpcy5zZW1pTWlub3JBeGlzLHQuc2VtaU1pbm9yQXhpcyksdGhpcy5oZWlnaHQ9Wih0aGlzLmhlaWdodCx0LmhlaWdodCksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5leHRydWRlZEhlaWdodD1aKHRoaXMuZXh0cnVkZWRIZWlnaHQsdC5leHRydWRlZEhlaWdodCksdGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZT1aKHRoaXMuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodFJlZmVyZW5jZSksdGhpcy5yb3RhdGlvbj1aKHRoaXMucm90YXRpb24sdC5yb3RhdGlvbiksdGhpcy5zdFJvdGF0aW9uPVoodGhpcy5zdFJvdGF0aW9uLHQuc3RSb3RhdGlvbiksdGhpcy5ncmFudWxhcml0eT1aKHRoaXMuZ3JhbnVsYXJpdHksdC5ncmFudWxhcml0eSksdGhpcy5maWxsPVoodGhpcy5maWxsLHQuZmlsbCksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5vdXRsaW5lPVoodGhpcy5vdXRsaW5lLHQub3V0bGluZSksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5udW1iZXJPZlZlcnRpY2FsTGluZXM9Wih0aGlzLm51bWJlck9mVmVydGljYWxMaW5lcyx0Lm51bWJlck9mVmVydGljYWxMaW5lcyksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LmNsYXNzaWZpY2F0aW9uVHlwZSksdGhpcy56SW5kZXg9Wih0aGlzLnpJbmRleCx0LnpJbmRleCl9O0ZqPWZffSk7ZnVuY3Rpb24gRV8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3JhZGlpPXZvaWQgMCx0aGlzLl9yYWRpaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW5uZXJSYWRpaT12b2lkIDAsdGhpcy5faW5uZXJSYWRpaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWluaW11bUNsb2NrPXZvaWQgMCx0aGlzLl9taW5pbXVtQ2xvY2tTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21heGltdW1DbG9jaz12b2lkIDAsdGhpcy5fbWF4aW11bUNsb2NrU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9taW5pbXVtQ29uZT12b2lkIDAsdGhpcy5fbWluaW11bUNvbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21heGltdW1Db25lPXZvaWQgMCx0aGlzLl9tYXhpbXVtQ29uZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2ZpbGw9dm9pZCAwLHRoaXMuX2ZpbGxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZT12b2lkIDAsdGhpcy5fb3V0bGluZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aD12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zdGFja1BhcnRpdGlvbnM9dm9pZCAwLHRoaXMuX3N0YWNrUGFydGl0aW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2xpY2VQYXJ0aXRpb25zPXZvaWQgMCx0aGlzLl9zbGljZVBhcnRpdGlvbnNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3N1YmRpdmlzaW9ucz12b2lkIDAsdGhpcy5fc3ViZGl2aXNpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFkb3dzPXZvaWQgMCx0aGlzLl9zaGFkb3dzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgWWosVmo9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO3hpKCk7dXIoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEVfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSxyYWRpaTpydCgicmFkaWkiKSxpbm5lclJhZGlpOnJ0KCJpbm5lclJhZGlpIiksbWluaW11bUNsb2NrOnJ0KCJtaW5pbXVtQ2xvY2siKSxtYXhpbXVtQ2xvY2s6cnQoIm1heGltdW1DbG9jayIpLG1pbmltdW1Db25lOnJ0KCJtaW5pbXVtQ29uZSIpLG1heGltdW1Db25lOnJ0KCJtYXhpbXVtQ29uZSIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZmlsbDpydCgiZmlsbCIpLG1hdGVyaWFsOnduKCJtYXRlcmlhbCIpLG91dGxpbmU6cnQoIm91dGxpbmUiKSxvdXRsaW5lQ29sb3I6cnQoIm91dGxpbmVDb2xvciIpLG91dGxpbmVXaWR0aDpydCgib3V0bGluZVdpZHRoIiksc3RhY2tQYXJ0aXRpb25zOnJ0KCJzdGFja1BhcnRpdGlvbnMiKSxzbGljZVBhcnRpdGlvbnM6cnQoInNsaWNlUGFydGl0aW9ucyIpLHN1YmRpdmlzaW9uczpydCgic3ViZGl2aXNpb25zIiksc2hhZG93czpydCgic2hhZG93cyIpLGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjpydCgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIil9KTtFXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5yYWRpaT10aGlzLnJhZGlpLHQuaW5uZXJSYWRpaT10aGlzLmlubmVyUmFkaWksdC5taW5pbXVtQ2xvY2s9dGhpcy5taW5pbXVtQ2xvY2ssdC5tYXhpbXVtQ2xvY2s9dGhpcy5tYXhpbXVtQ2xvY2ssdC5taW5pbXVtQ29uZT10aGlzLm1pbmltdW1Db25lLHQubWF4aW11bUNvbmU9dGhpcy5tYXhpbXVtQ29uZSx0LmhlaWdodFJlZmVyZW5jZT10aGlzLmhlaWdodFJlZmVyZW5jZSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc3RhY2tQYXJ0aXRpb25zPXRoaXMuc3RhY2tQYXJ0aXRpb25zLHQuc2xpY2VQYXJ0aXRpb25zPXRoaXMuc2xpY2VQYXJ0aXRpb25zLHQuc3ViZGl2aXNpb25zPXRoaXMuc3ViZGl2aXNpb25zLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdCk6bmV3IEVfKHRoaXMpfTtFXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnJhZGlpPVoodGhpcy5yYWRpaSx0LnJhZGlpKSx0aGlzLmlubmVyUmFkaWk9Wih0aGlzLmlubmVyUmFkaWksdC5pbm5lclJhZGlpKSx0aGlzLm1pbmltdW1DbG9jaz1aKHRoaXMubWluaW11bUNsb2NrLHQubWluaW11bUNsb2NrKSx0aGlzLm1heGltdW1DbG9jaz1aKHRoaXMubWF4aW11bUNsb2NrLHQubWF4aW11bUNsb2NrKSx0aGlzLm1pbmltdW1Db25lPVoodGhpcy5taW5pbXVtQ29uZSx0Lm1pbmltdW1Db25lKSx0aGlzLm1heGltdW1Db25lPVoodGhpcy5tYXhpbXVtQ29uZSx0Lm1heGltdW1Db25lKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnN0YWNrUGFydGl0aW9ucz1aKHRoaXMuc3RhY2tQYXJ0aXRpb25zLHQuc3RhY2tQYXJ0aXRpb25zKSx0aGlzLnNsaWNlUGFydGl0aW9ucz1aKHRoaXMuc2xpY2VQYXJ0aXRpb25zLHQuc2xpY2VQYXJ0aXRpb25zKSx0aGlzLnN1YmRpdmlzaW9ucz1aKHRoaXMuc3ViZGl2aXNpb25zLHQuc3ViZGl2aXNpb25zKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKX07WWo9RV99KTtmdW5jdGlvbiBfXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdGV4dD12b2lkIDAsdGhpcy5fdGV4dFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZm9udD12b2lkIDAsdGhpcy5fZm9udFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc3R5bGU9dm9pZCAwLHRoaXMuX3N0eWxlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fc2NhbGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Nob3dCYWNrZ3JvdW5kPXZvaWQgMCx0aGlzLl9zaG93QmFja2dyb3VuZFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fYmFja2dyb3VuZENvbG9yPXZvaWQgMCx0aGlzLl9iYWNrZ3JvdW5kQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2JhY2tncm91bmRQYWRkaW5nPXZvaWQgMCx0aGlzLl9iYWNrZ3JvdW5kUGFkZGluZ1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxPZmZzZXQ9dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leWVPZmZzZXQ9dm9pZCAwLHRoaXMuX2V5ZU9mZnNldFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faG9yaXpvbnRhbE9yaWdpbj12b2lkIDAsdGhpcy5faG9yaXpvbnRhbE9yaWdpblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdmVydGljYWxPcmlnaW49dm9pZCAwLHRoaXMuX3ZlcnRpY2FsT3JpZ2luU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbENvbG9yPXZvaWQgMCx0aGlzLl9maWxsQ29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZT12b2lkIDAsdGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3BpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3NjYWxlQnlEaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZT12b2lkIDAsdGhpcy5fZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBTaixPaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKF9fLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSx0ZXh0OnJ0KCJ0ZXh0IiksZm9udDpydCgiZm9udCIpLHN0eWxlOnJ0KCJzdHlsZSIpLHNjYWxlOnJ0KCJzY2FsZSIpLHNob3dCYWNrZ3JvdW5kOnJ0KCJzaG93QmFja2dyb3VuZCIpLGJhY2tncm91bmRDb2xvcjpydCgiYmFja2dyb3VuZENvbG9yIiksYmFja2dyb3VuZFBhZGRpbmc6cnQoImJhY2tncm91bmRQYWRkaW5nIikscGl4ZWxPZmZzZXQ6cnQoInBpeGVsT2Zmc2V0IiksZXllT2Zmc2V0OnJ0KCJleWVPZmZzZXQiKSxob3Jpem9udGFsT3JpZ2luOnJ0KCJob3Jpem9udGFsT3JpZ2luIiksdmVydGljYWxPcmlnaW46cnQoInZlcnRpY2FsT3JpZ2luIiksaGVpZ2h0UmVmZXJlbmNlOnJ0KCJoZWlnaHRSZWZlcmVuY2UiKSxmaWxsQ29sb3I6cnQoImZpbGxDb2xvciIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSx0cmFuc2x1Y2VuY3lCeURpc3RhbmNlOnJ0KCJ0cmFuc2x1Y2VuY3lCeURpc3RhbmNlIikscGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2U6cnQoInBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlIiksc2NhbGVCeURpc3RhbmNlOnJ0KCJzY2FsZUJ5RGlzdGFuY2UiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTpydCgiZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIil9KTtfXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC50ZXh0PXRoaXMudGV4dCx0LmZvbnQ9dGhpcy5mb250LHQuc3R5bGU9dGhpcy5zdHlsZSx0LnNjYWxlPXRoaXMuc2NhbGUsdC5zaG93QmFja2dyb3VuZD10aGlzLnNob3dCYWNrZ3JvdW5kLHQuYmFja2dyb3VuZENvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yLHQuYmFja2dyb3VuZFBhZGRpbmc9dGhpcy5iYWNrZ3JvdW5kUGFkZGluZyx0LnBpeGVsT2Zmc2V0PXRoaXMucGl4ZWxPZmZzZXQsdC5leWVPZmZzZXQ9dGhpcy5leWVPZmZzZXQsdC5ob3Jpem9udGFsT3JpZ2luPXRoaXMuaG9yaXpvbnRhbE9yaWdpbix0LnZlcnRpY2FsT3JpZ2luPXRoaXMudmVydGljYWxPcmlnaW4sdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5maWxsQ29sb3I9dGhpcy5maWxsQ29sb3IsdC5vdXRsaW5lQ29sb3I9dGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lV2lkdGg9dGhpcy5vdXRsaW5lV2lkdGgsdC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlPXRoaXMudHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0LnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPXRoaXMucGl4ZWxPZmZzZXRTY2FsZUJ5RGlzdGFuY2UsdC5zY2FsZUJ5RGlzdGFuY2U9dGhpcy5zY2FsZUJ5RGlzdGFuY2UsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dGhpcy5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsdCk6bmV3IF9fKHRoaXMpfTtfXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnRleHQ9Wih0aGlzLnRleHQsdC50ZXh0KSx0aGlzLmZvbnQ9Wih0aGlzLmZvbnQsdC5mb250KSx0aGlzLnN0eWxlPVoodGhpcy5zdHlsZSx0LnN0eWxlKSx0aGlzLnNjYWxlPVoodGhpcy5zY2FsZSx0LnNjYWxlKSx0aGlzLnNob3dCYWNrZ3JvdW5kPVoodGhpcy5zaG93QmFja2dyb3VuZCx0LnNob3dCYWNrZ3JvdW5kKSx0aGlzLmJhY2tncm91bmRDb2xvcj1aKHRoaXMuYmFja2dyb3VuZENvbG9yLHQuYmFja2dyb3VuZENvbG9yKSx0aGlzLmJhY2tncm91bmRQYWRkaW5nPVoodGhpcy5iYWNrZ3JvdW5kUGFkZGluZyx0LmJhY2tncm91bmRQYWRkaW5nKSx0aGlzLnBpeGVsT2Zmc2V0PVoodGhpcy5waXhlbE9mZnNldCx0LnBpeGVsT2Zmc2V0KSx0aGlzLmV5ZU9mZnNldD1aKHRoaXMuZXllT2Zmc2V0LHQuZXllT2Zmc2V0KSx0aGlzLmhvcml6b250YWxPcmlnaW49Wih0aGlzLmhvcml6b250YWxPcmlnaW4sdC5ob3Jpem9udGFsT3JpZ2luKSx0aGlzLnZlcnRpY2FsT3JpZ2luPVoodGhpcy52ZXJ0aWNhbE9yaWdpbix0LnZlcnRpY2FsT3JpZ2luKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLmZpbGxDb2xvcj1aKHRoaXMuZmlsbENvbG9yLHQuZmlsbENvbG9yKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9Wih0aGlzLnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UsdC50cmFuc2x1Y2VuY3lCeURpc3RhbmNlKSx0aGlzLnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlPVoodGhpcy5waXhlbE9mZnNldFNjYWxlQnlEaXN0YW5jZSx0LnBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlKSx0aGlzLnNjYWxlQnlEaXN0YW5jZT1aKHRoaXMuc2NhbGVCeURpc3RhbmNlLHQuc2NhbGVCeURpc3RhbmNlKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmRpc2FibGVEZXB0aFRlc3REaXN0YW5jZT1aKHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLHQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlKX07U2o9X199KTtmdW5jdGlvbiBCaih0LGUsaSl7dGhpcy50cmFuc2xhdGlvbj1sLmNsb25lKFoodCxmYXQpKSx0aGlzLnJvdGF0aW9uPUFlLmNsb25lKFooZSxFYXQpKSx0aGlzLnNjYWxlPWwuY2xvbmUoWihpLG1hdCkpfXZhciBtYXQsZmF0LEVhdCxwRixHaj1TKCgpPT57SHQoKTtGdCgpO210KCk7JHMoKTttYXQ9bmV3IGwoMSwxLDEpLGZhdD1sLlpFUk8sRWF0PUFlLklERU5USVRZO0JqLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHxtKHQpJiZsLmVxdWFscyh0aGlzLnRyYW5zbGF0aW9uLHQudHJhbnNsYXRpb24pJiZBZS5lcXVhbHModGhpcy5yb3RhdGlvbix0LnJvdGF0aW9uKSYmbC5lcXVhbHModGhpcy5zY2FsZSx0LnNjYWxlKX07cEY9Qmp9KTtmdW5jdGlvbiBSXyh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCksdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3RyYW5zbGF0aW9uPXZvaWQgMCx0aGlzLl90cmFuc2xhdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcm90YXRpb249dm9pZCAwLHRoaXMuX3JvdGF0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zY2FsZT12b2lkIDAsdGhpcy5fc2NhbGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMudHJhbnNsYXRpb249dC50cmFuc2xhdGlvbix0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zY2FsZT10LnNjYWxlfXZhciB1RixXaixEaj1TKCgpPT57RnQoKTttdCgpO3hpKCk7R2ooKTt5bigpO0hsKCk7dUY9bmV3IHBGO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJfLnByb3RvdHlwZSx7aXNDb25zdGFudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFNpLmlzQ29uc3RhbnQodGhpcy5fdHJhbnNsYXRpb24pJiZTaS5pc0NvbnN0YW50KHRoaXMuX3JvdGF0aW9uKSYmU2kuaXNDb25zdGFudCh0aGlzLl9zY2FsZSl9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sdHJhbnNsYXRpb246cnQoInRyYW5zbGF0aW9uIikscm90YXRpb246cnQoInJvdGF0aW9uIiksc2NhbGU6cnQoInNjYWxlIil9KTtSXy5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbShlKXx8KGU9bmV3IHBGKSxlLnRyYW5zbGF0aW9uPVNpLmdldFZhbHVlT3JDbG9uZWREZWZhdWx0KHRoaXMuX3RyYW5zbGF0aW9uLHQsdUYudHJhbnNsYXRpb24sZS50cmFuc2xhdGlvbiksZS5yb3RhdGlvbj1TaS5nZXRWYWx1ZU9yQ2xvbmVkRGVmYXVsdCh0aGlzLl9yb3RhdGlvbix0LHVGLnJvdGF0aW9uLGUucm90YXRpb24pLGUuc2NhbGU9U2kuZ2V0VmFsdWVPckNsb25lZERlZmF1bHQodGhpcy5fc2NhbGUsdCx1Ri5zY2FsZSxlLnNjYWxlKSxlfTtSXy5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIFJfJiZTaS5lcXVhbHModGhpcy5fdHJhbnNsYXRpb24sdC5fdHJhbnNsYXRpb24pJiZTaS5lcXVhbHModGhpcy5fcm90YXRpb24sdC5fcm90YXRpb24pJiZTaS5lcXVhbHModGhpcy5fc2NhbGUsdC5fc2NhbGUpfTtXaj1SX30pO2Z1bmN0aW9uIGdoKHQsZSl7dGhpcy5fcHJvcGVydHlOYW1lcz1bXSx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsbSh0KSYmdGhpcy5tZXJnZSh0LGUpfWZ1bmN0aW9uIF9hdCh0KXtyZXR1cm4gbmV3IENoKHQpfWZ1bmN0aW9uIFJhdCh0LGUpe2xldCBpPXQuX3Byb3BlcnR5TmFtZXMsbj1lLl9wcm9wZXJ0eU5hbWVzLHM9aS5sZW5ndGg7aWYocyE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbz0wO288czsrK28pe2xldCByPWlbb107aWYobi5pbmRleE9mKHIpPT09LTF8fCFTaS5lcXVhbHModFtyXSxlW3JdKSlyZXR1cm4hMX1yZXR1cm4hMH12YXIgemwsQ0Y9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO3hpKCk7aF8oKTt5bigpO0hsKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZ2gucHJvdG90eXBlLHtwcm9wZXJ0eU5hbWVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydHlOYW1lc319LGlzQ29uc3RhbnQ6e2dldDpmdW5jdGlvbigpe2xldCB0PXRoaXMuX3Byb3BlcnR5TmFtZXM7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKWlmKCFTaS5pc0NvbnN0YW50KHRoaXNbdFtlXV0pKXJldHVybiExO3JldHVybiEwfX0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19fSk7Z2gucHJvdG90eXBlLmhhc1Byb3BlcnR5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wcm9wZXJ0eU5hbWVzLmluZGV4T2YodCkhPT0tMX07Z2gucHJvdG90eXBlLmFkZFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10aGlzLl9wcm9wZXJ0eU5hbWVzO2lmKCFtKHQpKXRocm93IG5ldyBZKCJwcm9wZXJ0eU5hbWUgaXMgcmVxdWlyZWQuIik7aWYobi5pbmRleE9mKHQpIT09LTEpdGhyb3cgbmV3IFkoYCR7dH0gaXMgYWxyZWFkeSBhIHJlZ2lzdGVyZWQgcHJvcGVydHkuYCk7bi5wdXNoKHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQscnQodCwhMCxaKGksX2F0KSkpLG0oZSkmJih0aGlzW3RdPWUpLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O2doLnByb3RvdHlwZS5yZW1vdmVQcm9wZXJ0eT1mdW5jdGlvbih0KXtsZXQgaT10aGlzLl9wcm9wZXJ0eU5hbWVzLmluZGV4T2YodCk7aWYoIW0odCkpdGhyb3cgbmV3IFkoInByb3BlcnR5TmFtZSBpcyByZXF1aXJlZC4iKTtpZihpPT09LTEpdGhyb3cgbmV3IFkoYCR7dH0gaXMgbm90IGEgcmVnaXN0ZXJlZCBwcm9wZXJ0eS5gKTt0aGlzLl9wcm9wZXJ0eU5hbWVzLnNwbGljZShpLDEpLGRlbGV0ZSB0aGlzW3RdLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O2doLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aW1lIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPXt9KTtsZXQgaT10aGlzLl9wcm9wZXJ0eU5hbWVzO2ZvcihsZXQgbj0wLHM9aS5sZW5ndGg7bjxzO24rKyl7bGV0IG89aVtuXTtlW29dPVNpLmdldFZhbHVlT3JVbmRlZmluZWQodGhpc1tvXSx0LGVbb10pfXJldHVybiBlfTtnaC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMuX3Byb3BlcnR5TmFtZXMsbj1tKHQuX3Byb3BlcnR5TmFtZXMpP3QuX3Byb3BlcnR5TmFtZXM6T2JqZWN0LmtleXModCk7Zm9yKGxldCBzPTAsbz1uLmxlbmd0aDtzPG87cysrKXtsZXQgcj1uW3NdLGE9dGhpc1tyXSxoPXRbcl07YT09PXZvaWQgMCYmaS5pbmRleE9mKHIpPT09LTEmJnRoaXMuYWRkUHJvcGVydHkocix2b2lkIDAsZSksaCE9PXZvaWQgMCYmKGEhPT12b2lkIDA/bShhKSYmbShhLm1lcmdlKSYmYS5tZXJnZShoKTptKGgpJiZtKGgubWVyZ2UpJiZtKGguY2xvbmUpP3RoaXNbcl09aC5jbG9uZSgpOnRoaXNbcl09aCl9fTtnaC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIGdoJiZSYXQodGhpcyx0KX07emw9Z2h9KTtmdW5jdGlvbiBVaih0KXtyZXR1cm4gbmV3IFdqKHQpfWZ1bmN0aW9uIFphdCh0KXtyZXR1cm4gbmV3IHpsKHQsVWopfWZ1bmN0aW9uIElhdCh0KXtyZXR1cm4gbmV3IHpsKHQpfWZ1bmN0aW9uIFpfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl91cmk9dm9pZCAwLHRoaXMuX3VyaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2NhbGU9dm9pZCAwLHRoaXMuX3NjYWxlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9taW5pbXVtUGl4ZWxTaXplPXZvaWQgMCx0aGlzLl9taW5pbXVtUGl4ZWxTaXplU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9tYXhpbXVtU2NhbGU9dm9pZCAwLHRoaXMuX21heGltdW1TY2FsZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW5jcmVtZW50YWxseUxvYWRUZXh0dXJlcz12b2lkIDAsdGhpcy5faW5jcmVtZW50YWxseUxvYWRUZXh0dXJlc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcnVuQW5pbWF0aW9ucz12b2lkIDAsdGhpcy5fcnVuQW5pbWF0aW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xhbXBBbmltYXRpb25zPXZvaWQgMCx0aGlzLl9jbGFtcEFuaW1hdGlvbnNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaWxob3VldHRlQ29sb3I9dm9pZCAwLHRoaXMuX3NpbGhvdWV0dGVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2lsaG91ZXR0ZVNpemU9dm9pZCAwLHRoaXMuX3NpbGhvdWV0dGVTaXplU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jb2xvcj12b2lkIDAsdGhpcy5fY29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NvbG9yQmxlbmRNb2RlPXZvaWQgMCx0aGlzLl9jb2xvckJsZW5kTW9kZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY29sb3JCbGVuZEFtb3VudD12b2lkIDAsdGhpcy5fY29sb3JCbGVuZEFtb3VudFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yPXZvaWQgMCx0aGlzLl9pbWFnZUJhc2VkTGlnaHRpbmdGYWN0b3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2xpZ2h0Q29sb3I9dm9pZCAwLHRoaXMuX2xpZ2h0Q29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ub2RlVHJhbnNmb3JtYXRpb25zPXZvaWQgMCx0aGlzLl9ub2RlVHJhbnNmb3JtYXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9hcnRpY3VsYXRpb25zPXZvaWQgMCx0aGlzLl9hcnRpY3VsYXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGlwcGluZ1BsYW5lcz12b2lkIDAsdGhpcy5fY2xpcHBpbmdQbGFuZXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2N1c3RvbVNoYWRlcj12b2lkIDAsdGhpcy5fY3VzdG9tU2hhZGVyU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBNaixRaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt5bigpO0RqKCk7Q0YoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhaXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IiksdXJpOnJ0KCJ1cmkiKSxzY2FsZTpydCgic2NhbGUiKSxtaW5pbXVtUGl4ZWxTaXplOnJ0KCJtaW5pbXVtUGl4ZWxTaXplIiksbWF4aW11bVNjYWxlOnJ0KCJtYXhpbXVtU2NhbGUiKSxpbmNyZW1lbnRhbGx5TG9hZFRleHR1cmVzOnJ0KCJpbmNyZW1lbnRhbGx5TG9hZFRleHR1cmVzIikscnVuQW5pbWF0aW9uczpydCgicnVuQW5pbWF0aW9ucyIpLGNsYW1wQW5pbWF0aW9uczpydCgiY2xhbXBBbmltYXRpb25zIiksc2hhZG93czpydCgic2hhZG93cyIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksc2lsaG91ZXR0ZUNvbG9yOnJ0KCJzaWxob3VldHRlQ29sb3IiKSxzaWxob3VldHRlU2l6ZTpydCgic2lsaG91ZXR0ZVNpemUiKSxjb2xvcjpydCgiY29sb3IiKSxjb2xvckJsZW5kTW9kZTpydCgiY29sb3JCbGVuZE1vZGUiKSxjb2xvckJsZW5kQW1vdW50OnJ0KCJjb2xvckJsZW5kQW1vdW50IiksaW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yOnJ0KCJpbWFnZUJhc2VkTGlnaHRpbmdGYWN0b3IiKSxsaWdodENvbG9yOnJ0KCJsaWdodENvbG9yIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKSxub2RlVHJhbnNmb3JtYXRpb25zOnJ0KCJub2RlVHJhbnNmb3JtYXRpb25zIix2b2lkIDAsWmF0KSxhcnRpY3VsYXRpb25zOnJ0KCJhcnRpY3VsYXRpb25zIix2b2lkIDAsSWF0KSxjbGlwcGluZ1BsYW5lczpydCgiY2xpcHBpbmdQbGFuZXMiKSxjdXN0b21TaGFkZXI6cnQoImN1c3RvbVNoYWRlciIpfSk7Wl8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQudXJpPXRoaXMudXJpLHQuc2NhbGU9dGhpcy5zY2FsZSx0Lm1pbmltdW1QaXhlbFNpemU9dGhpcy5taW5pbXVtUGl4ZWxTaXplLHQubWF4aW11bVNjYWxlPXRoaXMubWF4aW11bVNjYWxlLHQuaW5jcmVtZW50YWxseUxvYWRUZXh0dXJlcz10aGlzLmluY3JlbWVudGFsbHlMb2FkVGV4dHVyZXMsdC5ydW5BbmltYXRpb25zPXRoaXMucnVuQW5pbWF0aW9ucyx0LmNsYW1wQW5pbWF0aW9ucz10aGlzLmNsYW1wQW5pbWF0aW9ucyx0LmhlaWdodFJlZmVyZW5jZT10aGlzLl9oZWlnaHRSZWZlcmVuY2UsdC5zaWxob3VldHRlQ29sb3I9dGhpcy5zaWxob3VldHRlQ29sb3IsdC5zaWxob3VldHRlU2l6ZT10aGlzLnNpbGhvdWV0dGVTaXplLHQuY29sb3I9dGhpcy5jb2xvcix0LmNvbG9yQmxlbmRNb2RlPXRoaXMuY29sb3JCbGVuZE1vZGUsdC5jb2xvckJsZW5kQW1vdW50PXRoaXMuY29sb3JCbGVuZEFtb3VudCx0LmltYWdlQmFzZWRMaWdodGluZ0ZhY3Rvcj10aGlzLmltYWdlQmFzZWRMaWdodGluZ0ZhY3Rvcix0LmxpZ2h0Q29sb3I9dGhpcy5saWdodENvbG9yLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQubm9kZVRyYW5zZm9ybWF0aW9ucz10aGlzLm5vZGVUcmFuc2Zvcm1hdGlvbnMsdC5hcnRpY3VsYXRpb25zPXRoaXMuYXJ0aWN1bGF0aW9ucyx0LmNsaXBwaW5nUGxhbmVzPXRoaXMuY2xpcHBpbmdQbGFuZXMsdC5jdXN0b21TaGFkZXI9dGhpcy5jdXN0b21TaGFkZXIsdCk6bmV3IFpfKHRoaXMpfTtaXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnVyaT1aKHRoaXMudXJpLHQudXJpKSx0aGlzLnNjYWxlPVoodGhpcy5zY2FsZSx0LnNjYWxlKSx0aGlzLm1pbmltdW1QaXhlbFNpemU9Wih0aGlzLm1pbmltdW1QaXhlbFNpemUsdC5taW5pbXVtUGl4ZWxTaXplKSx0aGlzLm1heGltdW1TY2FsZT1aKHRoaXMubWF4aW11bVNjYWxlLHQubWF4aW11bVNjYWxlKSx0aGlzLmluY3JlbWVudGFsbHlMb2FkVGV4dHVyZXM9Wih0aGlzLmluY3JlbWVudGFsbHlMb2FkVGV4dHVyZXMsdC5pbmNyZW1lbnRhbGx5TG9hZFRleHR1cmVzKSx0aGlzLnJ1bkFuaW1hdGlvbnM9Wih0aGlzLnJ1bkFuaW1hdGlvbnMsdC5ydW5BbmltYXRpb25zKSx0aGlzLmNsYW1wQW5pbWF0aW9ucz1aKHRoaXMuY2xhbXBBbmltYXRpb25zLHQuY2xhbXBBbmltYXRpb25zKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmhlaWdodFJlZmVyZW5jZT1aKHRoaXMuaGVpZ2h0UmVmZXJlbmNlLHQuaGVpZ2h0UmVmZXJlbmNlKSx0aGlzLnNpbGhvdWV0dGVDb2xvcj1aKHRoaXMuc2lsaG91ZXR0ZUNvbG9yLHQuc2lsaG91ZXR0ZUNvbG9yKSx0aGlzLnNpbGhvdWV0dGVTaXplPVoodGhpcy5zaWxob3VldHRlU2l6ZSx0LnNpbGhvdWV0dGVTaXplKSx0aGlzLmNvbG9yPVoodGhpcy5jb2xvcix0LmNvbG9yKSx0aGlzLmNvbG9yQmxlbmRNb2RlPVoodGhpcy5jb2xvckJsZW5kTW9kZSx0LmNvbG9yQmxlbmRNb2RlKSx0aGlzLmNvbG9yQmxlbmRBbW91bnQ9Wih0aGlzLmNvbG9yQmxlbmRBbW91bnQsdC5jb2xvckJsZW5kQW1vdW50KSx0aGlzLmltYWdlQmFzZWRMaWdodGluZ0ZhY3Rvcj1aKHRoaXMuaW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yLHQuaW1hZ2VCYXNlZExpZ2h0aW5nRmFjdG9yKSx0aGlzLmxpZ2h0Q29sb3I9Wih0aGlzLmxpZ2h0Q29sb3IsdC5saWdodENvbG9yKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKSx0aGlzLmNsaXBwaW5nUGxhbmVzPVoodGhpcy5jbGlwcGluZ1BsYW5lcyx0LmNsaXBwaW5nUGxhbmVzKSx0aGlzLmN1c3RvbVNoYWRlcj1aKHRoaXMuY3VzdG9tU2hhZGVyLHQuY3VzdG9tU2hhZGVyKTtsZXQgZT10Lm5vZGVUcmFuc2Zvcm1hdGlvbnM7aWYobShlKSl7bGV0IG49dGhpcy5ub2RlVHJhbnNmb3JtYXRpb25zO20obik/bi5tZXJnZShlKTp0aGlzLm5vZGVUcmFuc2Zvcm1hdGlvbnM9bmV3IHpsKGUsVWopfWxldCBpPXQuYXJ0aWN1bGF0aW9ucztpZihtKGkpKXtsZXQgbj10aGlzLmFydGljdWxhdGlvbnM7bShuKT9uLm1lcmdlKGkpOnRoaXMuYXJ0aWN1bGF0aW9ucz1uZXcgemwoaSl9fTtNaj1aX30pO2Z1bmN0aW9uIElfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl91cmk9dm9pZCAwLHRoaXMuX3VyaVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF4aW11bVNjcmVlblNwYWNlRXJyb3I9dm9pZCAwLHRoaXMuX21heGltdW1TY3JlZW5TcGFjZUVycm9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBraixMaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKElfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSx1cmk6cnQoInVyaSIpLG1heGltdW1TY3JlZW5TcGFjZUVycm9yOnJ0KCJtYXhpbXVtU2NyZWVuU3BhY2VFcnJvciIpfSk7SV8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnNob3c9dGhpcy5zaG93LHQudXJpPXRoaXMudXJpLHQubWF4aW11bVNjcmVlblNwYWNlRXJyb3I9dGhpcy5tYXhpbXVtU2NyZWVuU3BhY2VFcnJvcix0KTpuZXcgSV8odGhpcyl9O0lfLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMudXJpPVoodGhpcy51cmksdC51cmkpLHRoaXMubWF4aW11bVNjcmVlblNwYWNlRXJyb3I9Wih0aGlzLm1heGltdW1TY3JlZW5TcGFjZUVycm9yLHQubWF4aW11bVNjcmVlblNwYWNlRXJyb3IpfTtraj1JX30pO2Z1bmN0aW9uIHBfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9sZWFkVGltZT12b2lkIDAsdGhpcy5fbGVhZFRpbWVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RyYWlsVGltZT12b2lkIDAsdGhpcy5fdHJhaWxUaW1lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5fd2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Jlc29sdXRpb249dm9pZCAwLHRoaXMuX3Jlc29sdXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIHlqLHdqPVMoKCk9PntGdCgpO210KCk7T3QoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IiksbGVhZFRpbWU6cnQoImxlYWRUaW1lIiksdHJhaWxUaW1lOnJ0KCJ0cmFpbFRpbWUiKSx3aWR0aDpydCgid2lkdGgiKSxyZXNvbHV0aW9uOnJ0KCJyZXNvbHV0aW9uIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKX0pO3BfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LmxlYWRUaW1lPXRoaXMubGVhZFRpbWUsdC50cmFpbFRpbWU9dGhpcy50cmFpbFRpbWUsdC53aWR0aD10aGlzLndpZHRoLHQucmVzb2x1dGlvbj10aGlzLnJlc29sdXRpb24sdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQpOm5ldyBwXyh0aGlzKX07cF8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5sZWFkVGltZT1aKHRoaXMubGVhZFRpbWUsdC5sZWFkVGltZSksdGhpcy50cmFpbFRpbWU9Wih0aGlzLnRyYWlsVGltZSx0LnRyYWlsVGltZSksdGhpcy53aWR0aD1aKHRoaXMud2lkdGgsdC53aWR0aCksdGhpcy5yZXNvbHV0aW9uPVoodGhpcy5yZXNvbHV0aW9uLHQucmVzb2x1dGlvbiksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbil9O3lqPXBffSk7ZnVuY3Rpb24gdV8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BsYW5lPXZvaWQgMCx0aGlzLl9wbGFuZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGltZW5zaW9ucz12b2lkIDAsdGhpcy5fZGltZW5zaW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciB4aixQaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModV8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLHBsYW5lOnJ0KCJwbGFuZSIpLGRpbWVuc2lvbnM6cnQoImRpbWVuc2lvbnMiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxzaGFkb3dzOnJ0KCJzaGFkb3dzIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKX0pO3VfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnBsYW5lPXRoaXMucGxhbmUsdC5kaW1lbnNpb25zPXRoaXMuZGltZW5zaW9ucyx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdCk6bmV3IHVfKHRoaXMpfTt1Xy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnBsYW5lPVoodGhpcy5wbGFuZSx0LnBsYW5lKSx0aGlzLmRpbWVuc2lvbnM9Wih0aGlzLmRpbWVuc2lvbnMsdC5kaW1lbnNpb25zKSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKX07eGo9dV99KTtmdW5jdGlvbiBDXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcGl4ZWxTaXplPXZvaWQgMCx0aGlzLl9waXhlbFNpemVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5faGVpZ2h0UmVmZXJlbmNlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jb2xvcj12b2lkIDAsdGhpcy5fY29sb3JTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2NhbGVCeURpc3RhbmNlPXZvaWQgMCx0aGlzLl9zY2FsZUJ5RGlzdGFuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2U9dm9pZCAwLHRoaXMuX3RyYW5zbHVjZW5jeUJ5RGlzdGFuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2U9dm9pZCAwLHRoaXMuX2Rpc2FibGVEZXB0aFRlc3REaXN0YW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgSmosamo9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO3hpKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscGl4ZWxTaXplOnJ0KCJwaXhlbFNpemUiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGNvbG9yOnJ0KCJjb2xvciIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxzY2FsZUJ5RGlzdGFuY2U6cnQoInNjYWxlQnlEaXN0YW5jZSIpLHRyYW5zbHVjZW5jeUJ5RGlzdGFuY2U6cnQoInRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGRpc2FibGVEZXB0aFRlc3REaXN0YW5jZTpydCgiZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlIil9KTtDXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5waXhlbFNpemU9dGhpcy5waXhlbFNpemUsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5jb2xvcj10aGlzLmNvbG9yLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2NhbGVCeURpc3RhbmNlPXRoaXMuc2NhbGVCeURpc3RhbmNlLHQudHJhbnNsdWNlbmN5QnlEaXN0YW5jZT10aGlzLl90cmFuc2x1Y2VuY3lCeURpc3RhbmNlLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPXRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlLHQpOm5ldyBDXyh0aGlzKX07Q18ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5waXhlbFNpemU9Wih0aGlzLnBpeGVsU2l6ZSx0LnBpeGVsU2l6ZSksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5jb2xvcj1aKHRoaXMuY29sb3IsdC5jb2xvciksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5zY2FsZUJ5RGlzdGFuY2U9Wih0aGlzLnNjYWxlQnlEaXN0YW5jZSx0LnNjYWxlQnlEaXN0YW5jZSksdGhpcy50cmFuc2x1Y2VuY3lCeURpc3RhbmNlPVoodGhpcy5fdHJhbnNsdWNlbmN5QnlEaXN0YW5jZSx0LnRyYW5zbHVjZW5jeUJ5RGlzdGFuY2UpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pLHRoaXMuZGlzYWJsZURlcHRoVGVzdERpc3RhbmNlPVoodGhpcy5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UsdC5kaXNhYmxlRGVwdGhUZXN0RGlzdGFuY2UpfTtKaj1DX30pO2Z1bmN0aW9uIHBhdCh0LGUpe3RoaXMucG9zaXRpb25zPW0odCk/dDpbXSx0aGlzLmhvbGVzPW0oZSk/ZTpbXX12YXIgc2YsY3A9UygoKT0+e210KCk7c2Y9cGF0fSk7ZnVuY3Rpb24gdWF0KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYodD1uZXcgc2YodCkpLG5ldyBDaCh0KX1mdW5jdGlvbiBnXyh0KXt0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fc2hvdz12b2lkIDAsdGhpcy5fc2hvd1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5faGllcmFyY2h5PXZvaWQgMCx0aGlzLl9oaWVyYXJjaHlTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb249dm9pZCAwLHRoaXMuX3N0Um90YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BlclBvc2l0aW9uSGVpZ2h0PXZvaWQgMCx0aGlzLl9wZXJQb3NpdGlvbkhlaWdodFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xvc2VUb3A9dm9pZCAwLHRoaXMuX2Nsb3NlVG9wU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbG9zZUJvdHRvbT12b2lkIDAsdGhpcy5fY2xvc2VCb3R0b21TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2FyY1R5cGU9dm9pZCAwLHRoaXMuX2FyY1R5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGU9dm9pZCAwLHRoaXMuX2NsYXNzaWZpY2F0aW9uVHlwZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fekluZGV4PXZvaWQgMCx0aGlzLl96SW5kZXhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlcz12b2lkIDAsdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciBIaix2aj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTtjcCgpO2hfKCk7dXIoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGdfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSxoaWVyYXJjaHk6cnQoImhpZXJhcmNoeSIsdm9pZCAwLHVhdCksaGVpZ2h0OnJ0KCJoZWlnaHQiKSxoZWlnaHRSZWZlcmVuY2U6cnQoImhlaWdodFJlZmVyZW5jZSIpLGV4dHJ1ZGVkSGVpZ2h0OnJ0KCJleHRydWRlZEhlaWdodCIpLGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlOnJ0KCJleHRydWRlZEhlaWdodFJlZmVyZW5jZSIpLHN0Um90YXRpb246cnQoInN0Um90YXRpb24iKSxncmFudWxhcml0eTpydCgiZ3JhbnVsYXJpdHkiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxwZXJQb3NpdGlvbkhlaWdodDpydCgicGVyUG9zaXRpb25IZWlnaHQiKSxjbG9zZVRvcDpydCgiY2xvc2VUb3AiKSxjbG9zZUJvdHRvbTpydCgiY2xvc2VCb3R0b20iKSxhcmNUeXBlOnJ0KCJhcmNUeXBlIiksc2hhZG93czpydCgic2hhZG93cyIpLGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjpydCgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIiksY2xhc3NpZmljYXRpb25UeXBlOnJ0KCJjbGFzc2lmaWNhdGlvblR5cGUiKSx6SW5kZXg6cnQoInpJbmRleCIpLHRleHR1cmVDb29yZGluYXRlczpydCgidGV4dHVyZUNvb3JkaW5hdGVzIil9KTtnXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5oaWVyYXJjaHk9dGhpcy5oaWVyYXJjaHksdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LnN0Um90YXRpb249dGhpcy5zdFJvdGF0aW9uLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQucGVyUG9zaXRpb25IZWlnaHQ9dGhpcy5wZXJQb3NpdGlvbkhlaWdodCx0LmNsb3NlVG9wPXRoaXMuY2xvc2VUb3AsdC5jbG9zZUJvdHRvbT10aGlzLmNsb3NlQm90dG9tLHQuYXJjVHlwZT10aGlzLmFyY1R5cGUsdC5zaGFkb3dzPXRoaXMuc2hhZG93cyx0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmNsYXNzaWZpY2F0aW9uVHlwZT10aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LnpJbmRleD10aGlzLnpJbmRleCx0LnRleHR1cmVDb29yZGluYXRlcz10aGlzLnRleHR1cmVDb29yZGluYXRlcyx0KTpuZXcgZ18odGhpcyl9O2dfLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMuaGllcmFyY2h5PVoodGhpcy5oaWVyYXJjaHksdC5oaWVyYXJjaHkpLHRoaXMuaGVpZ2h0PVoodGhpcy5oZWlnaHQsdC5oZWlnaHQpLHRoaXMuaGVpZ2h0UmVmZXJlbmNlPVoodGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5oZWlnaHRSZWZlcmVuY2UpLHRoaXMuZXh0cnVkZWRIZWlnaHQ9Wih0aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHQpLHRoaXMuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlLHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UpLHRoaXMuc3RSb3RhdGlvbj1aKHRoaXMuc3RSb3RhdGlvbix0LnN0Um90YXRpb24pLHRoaXMuZ3JhbnVsYXJpdHk9Wih0aGlzLmdyYW51bGFyaXR5LHQuZ3JhbnVsYXJpdHkpLHRoaXMuZmlsbD1aKHRoaXMuZmlsbCx0LmZpbGwpLHRoaXMubWF0ZXJpYWw9Wih0aGlzLm1hdGVyaWFsLHQubWF0ZXJpYWwpLHRoaXMub3V0bGluZT1aKHRoaXMub3V0bGluZSx0Lm91dGxpbmUpLHRoaXMub3V0bGluZUNvbG9yPVoodGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lQ29sb3IpLHRoaXMub3V0bGluZVdpZHRoPVoodGhpcy5vdXRsaW5lV2lkdGgsdC5vdXRsaW5lV2lkdGgpLHRoaXMucGVyUG9zaXRpb25IZWlnaHQ9Wih0aGlzLnBlclBvc2l0aW9uSGVpZ2h0LHQucGVyUG9zaXRpb25IZWlnaHQpLHRoaXMuY2xvc2VUb3A9Wih0aGlzLmNsb3NlVG9wLHQuY2xvc2VUb3ApLHRoaXMuY2xvc2VCb3R0b209Wih0aGlzLmNsb3NlQm90dG9tLHQuY2xvc2VCb3R0b20pLHRoaXMuYXJjVHlwZT1aKHRoaXMuYXJjVHlwZSx0LmFyY1R5cGUpLHRoaXMuc2hhZG93cz1aKHRoaXMuc2hhZG93cyx0LnNoYWRvd3MpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pLHRoaXMuY2xhc3NpZmljYXRpb25UeXBlPVoodGhpcy5jbGFzc2lmaWNhdGlvblR5cGUsdC5jbGFzc2lmaWNhdGlvblR5cGUpLHRoaXMuekluZGV4PVoodGhpcy56SW5kZXgsdC56SW5kZXgpLHRoaXMudGV4dHVyZUNvb3JkaW5hdGVzPVoodGhpcy50ZXh0dXJlQ29vcmRpbmF0ZXMsdC50ZXh0dXJlQ29vcmRpbmF0ZXMpfTtIaj1nX30pO2Z1bmN0aW9uIFRfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wb3NpdGlvbnM9dm9pZCAwLHRoaXMuX3Bvc2l0aW9uc1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fd2lkdGg9dm9pZCAwLHRoaXMuX3dpZHRoU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eT12b2lkIDAsdGhpcy5fZ3JhbnVsYXJpdHlTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21hdGVyaWFsPXZvaWQgMCx0aGlzLl9tYXRlcmlhbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGVwdGhGYWlsTWF0ZXJpYWw9dm9pZCAwLHRoaXMuX2RlcHRoRmFpbE1hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9hcmNUeXBlPXZvaWQgMCx0aGlzLl9hcmNUeXBlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jbGFtcFRvR3JvdW5kPXZvaWQgMCx0aGlzLl9jbGFtcFRvR3JvdW5kU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFkb3dzPXZvaWQgMCx0aGlzLl9zaGFkb3dzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY2xhc3NpZmljYXRpb25UeXBlPXZvaWQgMCx0aGlzLl9jbGFzc2lmaWNhdGlvblR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3pJbmRleD12b2lkIDAsdGhpcy5fekluZGV4U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLm1lcmdlKFoodCxaLkVNUFRZX09CSkVDVCkpfXZhciB6aixLaj1TKCgpPT57RnQoKTttdCgpO090KCk7eGkoKTt1cigpO3luKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVF8ucHJvdG90eXBlLHtkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sc2hvdzpydCgic2hvdyIpLHBvc2l0aW9uczpydCgicG9zaXRpb25zIiksd2lkdGg6cnQoIndpZHRoIiksZ3JhbnVsYXJpdHk6cnQoImdyYW51bGFyaXR5IiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksZGVwdGhGYWlsTWF0ZXJpYWw6d24oImRlcHRoRmFpbE1hdGVyaWFsIiksYXJjVHlwZTpydCgiYXJjVHlwZSIpLGNsYW1wVG9Hcm91bmQ6cnQoImNsYW1wVG9Hcm91bmQiKSxzaGFkb3dzOnJ0KCJzaGFkb3dzIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKSxjbGFzc2lmaWNhdGlvblR5cGU6cnQoImNsYXNzaWZpY2F0aW9uVHlwZSIpLHpJbmRleDpydCgiekluZGV4Iil9KTtUXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5wb3NpdGlvbnM9dGhpcy5wb3NpdGlvbnMsdC53aWR0aD10aGlzLndpZHRoLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5kZXB0aEZhaWxNYXRlcmlhbD10aGlzLmRlcHRoRmFpbE1hdGVyaWFsLHQuYXJjVHlwZT10aGlzLmFyY1R5cGUsdC5jbGFtcFRvR3JvdW5kPXRoaXMuY2xhbXBUb0dyb3VuZCx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuY2xhc3NpZmljYXRpb25UeXBlPXRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuekluZGV4PXRoaXMuekluZGV4LHQpOm5ldyBUXyh0aGlzKX07VF8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5wb3NpdGlvbnM9Wih0aGlzLnBvc2l0aW9ucyx0LnBvc2l0aW9ucyksdGhpcy53aWR0aD1aKHRoaXMud2lkdGgsdC53aWR0aCksdGhpcy5ncmFudWxhcml0eT1aKHRoaXMuZ3JhbnVsYXJpdHksdC5ncmFudWxhcml0eSksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5kZXB0aEZhaWxNYXRlcmlhbD1aKHRoaXMuZGVwdGhGYWlsTWF0ZXJpYWwsdC5kZXB0aEZhaWxNYXRlcmlhbCksdGhpcy5hcmNUeXBlPVoodGhpcy5hcmNUeXBlLHQuYXJjVHlwZSksdGhpcy5jbGFtcFRvR3JvdW5kPVoodGhpcy5jbGFtcFRvR3JvdW5kLHQuY2xhbXBUb0dyb3VuZCksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LmNsYXNzaWZpY2F0aW9uVHlwZSksdGhpcy56SW5kZXg9Wih0aGlzLnpJbmRleCx0LnpJbmRleCl9O3pqPVRffSk7ZnVuY3Rpb24gTl8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9ucz12b2lkIDAsdGhpcy5fcG9zaXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9zaGFwZT12b2lkIDAsdGhpcy5fc2hhcGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGU9dm9pZCAwLHRoaXMuX2Nvcm5lclR5cGVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5PXZvaWQgMCx0aGlzLl9ncmFudWxhcml0eVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZmlsbD12b2lkIDAsdGhpcy5fZmlsbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbWF0ZXJpYWw9dm9pZCAwLHRoaXMuX21hdGVyaWFsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lPXZvaWQgMCx0aGlzLl9vdXRsaW5lU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lQ29sb3I9dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvclN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fb3V0bGluZVdpZHRoPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3NoYWRvd3M9dm9pZCAwLHRoaXMuX3NoYWRvd3NTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uU3Vic3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIFhqLHFqPVMoKCk9PntGdCgpO210KCk7T3QoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhOXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscG9zaXRpb25zOnJ0KCJwb3NpdGlvbnMiKSxzaGFwZTpydCgic2hhcGUiKSxjb3JuZXJUeXBlOnJ0KCJjb3JuZXJUeXBlIiksZ3JhbnVsYXJpdHk6cnQoImdyYW51bGFyaXR5IiksZmlsbDpydCgiZmlsbCIpLG1hdGVyaWFsOnduKCJtYXRlcmlhbCIpLG91dGxpbmU6cnQoIm91dGxpbmUiKSxvdXRsaW5lQ29sb3I6cnQoIm91dGxpbmVDb2xvciIpLG91dGxpbmVXaWR0aDpydCgib3V0bGluZVdpZHRoIiksc2hhZG93czpydCgic2hhZG93cyIpLGRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbjpydCgiZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uIil9KTtOXy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuc2hvdz10aGlzLnNob3csdC5wb3NpdGlvbnM9dGhpcy5wb3NpdGlvbnMsdC5zaGFwZT10aGlzLnNoYXBlLHQuY29ybmVyVHlwZT10aGlzLmNvcm5lclR5cGUsdC5ncmFudWxhcml0eT10aGlzLmdyYW51bGFyaXR5LHQuZmlsbD10aGlzLmZpbGwsdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHQub3V0bGluZT10aGlzLm91dGxpbmUsdC5vdXRsaW5lQ29sb3I9dGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lV2lkdGg9dGhpcy5vdXRsaW5lV2lkdGgsdC5zaGFkb3dzPXRoaXMuc2hhZG93cyx0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj10aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0KTpuZXcgTl8odGhpcyl9O05fLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMuc2hvdz1aKHRoaXMuc2hvdyx0LnNob3cpLHRoaXMucG9zaXRpb25zPVoodGhpcy5wb3NpdGlvbnMsdC5wb3NpdGlvbnMpLHRoaXMuc2hhcGU9Wih0aGlzLnNoYXBlLHQuc2hhcGUpLHRoaXMuY29ybmVyVHlwZT1aKHRoaXMuY29ybmVyVHlwZSx0LmNvcm5lclR5cGUpLHRoaXMuZ3JhbnVsYXJpdHk9Wih0aGlzLmdyYW51bGFyaXR5LHQuZ3JhbnVsYXJpdHkpLHRoaXMuZmlsbD1aKHRoaXMuZmlsbCx0LmZpbGwpLHRoaXMubWF0ZXJpYWw9Wih0aGlzLm1hdGVyaWFsLHQubWF0ZXJpYWwpLHRoaXMub3V0bGluZT1aKHRoaXMub3V0bGluZSx0Lm91dGxpbmUpLHRoaXMub3V0bGluZUNvbG9yPVoodGhpcy5vdXRsaW5lQ29sb3IsdC5vdXRsaW5lQ29sb3IpLHRoaXMub3V0bGluZVdpZHRoPVoodGhpcy5vdXRsaW5lV2lkdGgsdC5vdXRsaW5lV2lkdGgpLHRoaXMuc2hhZG93cz1aKHRoaXMuc2hhZG93cyx0LnNoYWRvd3MpLHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPVoodGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24pfTtYaj1OX30pO2Z1bmN0aW9uIEZfKHQpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9zaG93PXZvaWQgMCx0aGlzLl9zaG93U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jb29yZGluYXRlcz12b2lkIDAsdGhpcy5fY29vcmRpbmF0ZXNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2hlaWdodD12b2lkIDAsdGhpcy5faGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9oZWlnaHRSZWZlcmVuY2U9dm9pZCAwLHRoaXMuX2hlaWdodFJlZmVyZW5jZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9dm9pZCAwLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9leHRydWRlZEhlaWdodFJlZmVyZW5jZT12b2lkIDAsdGhpcy5fZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2VTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3JvdGF0aW9uPXZvaWQgMCx0aGlzLl9yb3RhdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc3RSb3RhdGlvbj12b2lkIDAsdGhpcy5fc3RSb3RhdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZ3JhbnVsYXJpdHk9dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9maWxsPXZvaWQgMCx0aGlzLl9maWxsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9tYXRlcmlhbD12b2lkIDAsdGhpcy5fbWF0ZXJpYWxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmU9dm9pZCAwLHRoaXMuX291dGxpbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2hhZG93cz12b2lkIDAsdGhpcy5fc2hhZG93c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZWRpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2NsYXNzaWZpY2F0aW9uVHlwZT12b2lkIDAsdGhpcy5fY2xhc3NpZmljYXRpb25UeXBlU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl96SW5kZXg9dm9pZCAwLHRoaXMuX3pJbmRleFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5tZXJnZShaKHQsWi5FTVBUWV9PQkpFQ1QpKX12YXIgJGosdDM9UygoKT0+e0Z0KCk7bXQoKTtPdCgpO3hpKCk7dXIoKTt5bigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZfLnByb3RvdHlwZSx7ZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHNob3c6cnQoInNob3ciKSxjb29yZGluYXRlczpydCgiY29vcmRpbmF0ZXMiKSxoZWlnaHQ6cnQoImhlaWdodCIpLGhlaWdodFJlZmVyZW5jZTpydCgiaGVpZ2h0UmVmZXJlbmNlIiksZXh0cnVkZWRIZWlnaHQ6cnQoImV4dHJ1ZGVkSGVpZ2h0IiksZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U6cnQoImV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIikscm90YXRpb246cnQoInJvdGF0aW9uIiksc3RSb3RhdGlvbjpydCgic3RSb3RhdGlvbiIpLGdyYW51bGFyaXR5OnJ0KCJncmFudWxhcml0eSIpLGZpbGw6cnQoImZpbGwiKSxtYXRlcmlhbDp3bigibWF0ZXJpYWwiKSxvdXRsaW5lOnJ0KCJvdXRsaW5lIiksb3V0bGluZUNvbG9yOnJ0KCJvdXRsaW5lQ29sb3IiKSxvdXRsaW5lV2lkdGg6cnQoIm91dGxpbmVXaWR0aCIpLHNoYWRvd3M6cnQoInNoYWRvd3MiKSxkaXN0YW5jZURpc3BsYXlDb25kaXRpb246cnQoImRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiIpLGNsYXNzaWZpY2F0aW9uVHlwZTpydCgiY2xhc3NpZmljYXRpb25UeXBlIiksekluZGV4OnJ0KCJ6SW5kZXgiKX0pO0ZfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LmNvb3JkaW5hdGVzPXRoaXMuY29vcmRpbmF0ZXMsdC5oZWlnaHQ9dGhpcy5oZWlnaHQsdC5oZWlnaHRSZWZlcmVuY2U9dGhpcy5oZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodD10aGlzLmV4dHJ1ZGVkSGVpZ2h0LHQuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9dGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZSx0LnJvdGF0aW9uPXRoaXMucm90YXRpb24sdC5zdFJvdGF0aW9uPXRoaXMuc3RSb3RhdGlvbix0LmdyYW51bGFyaXR5PXRoaXMuZ3JhbnVsYXJpdHksdC5maWxsPXRoaXMuZmlsbCx0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdC5vdXRsaW5lPXRoaXMub3V0bGluZSx0Lm91dGxpbmVDb2xvcj10aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVXaWR0aD10aGlzLm91dGxpbmVXaWR0aCx0LnNoYWRvd3M9dGhpcy5zaGFkb3dzLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuY2xhc3NpZmljYXRpb25UeXBlPXRoaXMuY2xhc3NpZmljYXRpb25UeXBlLHQuekluZGV4PXRoaXMuekluZGV4LHQpOm5ldyBGXyh0aGlzKX07Rl8ucHJvdG90eXBlLm1lcmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJzb3VyY2UgaXMgcmVxdWlyZWQuIik7dGhpcy5zaG93PVoodGhpcy5zaG93LHQuc2hvdyksdGhpcy5jb29yZGluYXRlcz1aKHRoaXMuY29vcmRpbmF0ZXMsdC5jb29yZGluYXRlcyksdGhpcy5oZWlnaHQ9Wih0aGlzLmhlaWdodCx0LmhlaWdodCksdGhpcy5oZWlnaHRSZWZlcmVuY2U9Wih0aGlzLmhlaWdodFJlZmVyZW5jZSx0LmhlaWdodFJlZmVyZW5jZSksdGhpcy5leHRydWRlZEhlaWdodD1aKHRoaXMuZXh0cnVkZWRIZWlnaHQsdC5leHRydWRlZEhlaWdodCksdGhpcy5leHRydWRlZEhlaWdodFJlZmVyZW5jZT1aKHRoaXMuZXh0cnVkZWRIZWlnaHRSZWZlcmVuY2UsdC5leHRydWRlZEhlaWdodFJlZmVyZW5jZSksdGhpcy5yb3RhdGlvbj1aKHRoaXMucm90YXRpb24sdC5yb3RhdGlvbiksdGhpcy5zdFJvdGF0aW9uPVoodGhpcy5zdFJvdGF0aW9uLHQuc3RSb3RhdGlvbiksdGhpcy5ncmFudWxhcml0eT1aKHRoaXMuZ3JhbnVsYXJpdHksdC5ncmFudWxhcml0eSksdGhpcy5maWxsPVoodGhpcy5maWxsLHQuZmlsbCksdGhpcy5tYXRlcmlhbD1aKHRoaXMubWF0ZXJpYWwsdC5tYXRlcmlhbCksdGhpcy5vdXRsaW5lPVoodGhpcy5vdXRsaW5lLHQub3V0bGluZSksdGhpcy5vdXRsaW5lQ29sb3I9Wih0aGlzLm91dGxpbmVDb2xvcix0Lm91dGxpbmVDb2xvciksdGhpcy5vdXRsaW5lV2lkdGg9Wih0aGlzLm91dGxpbmVXaWR0aCx0Lm91dGxpbmVXaWR0aCksdGhpcy5zaGFkb3dzPVoodGhpcy5zaGFkb3dzLHQuc2hhZG93cyksdGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249Wih0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbix0LmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbiksdGhpcy5jbGFzc2lmaWNhdGlvblR5cGU9Wih0aGlzLmNsYXNzaWZpY2F0aW9uVHlwZSx0LmNsYXNzaWZpY2F0aW9uVHlwZSksdGhpcy56SW5kZXg9Wih0aGlzLnpJbmRleCx0LnpJbmRleCl9OyRqPUZffSk7ZnVuY3Rpb24gYl8odCl7dGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQ9bmV3IFdlLHRoaXMuX3Nob3c9dm9pZCAwLHRoaXMuX3Nob3dTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9ucz12b2lkIDAsdGhpcy5fcG9zaXRpb25zU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9taW5pbXVtSGVpZ2h0cz12b2lkIDAsdGhpcy5fbWluaW11bUhlaWdodHNTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX21heGltdW1IZWlnaHRzPXZvaWQgMCx0aGlzLl9tYXhpbXVtSGVpZ2h0c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZ3JhbnVsYXJpdHk9dm9pZCAwLHRoaXMuX2dyYW51bGFyaXR5U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9maWxsPXZvaWQgMCx0aGlzLl9maWxsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9tYXRlcmlhbD12b2lkIDAsdGhpcy5fbWF0ZXJpYWxTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmU9dm9pZCAwLHRoaXMuX291dGxpbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX291dGxpbmVDb2xvcj12b2lkIDAsdGhpcy5fb3V0bGluZUNvbG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vdXRsaW5lV2lkdGg9dm9pZCAwLHRoaXMuX291dGxpbmVXaWR0aFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fc2hhZG93cz12b2lkIDAsdGhpcy5fc2hhZG93c1N1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uPXZvaWQgMCx0aGlzLl9kaXN0YW5jZURpc3BsYXlDb25kaXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMubWVyZ2UoWih0LFouRU1QVFlfT0JKRUNUKSl9dmFyIGUzLGkzPVMoKCk9PntGdCgpO210KCk7T3QoKTt4aSgpO3VyKCk7eW4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhiXy5wcm90b3R5cGUse2RlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fSxzaG93OnJ0KCJzaG93IikscG9zaXRpb25zOnJ0KCJwb3NpdGlvbnMiKSxtaW5pbXVtSGVpZ2h0czpydCgibWluaW11bUhlaWdodHMiKSxtYXhpbXVtSGVpZ2h0czpydCgibWF4aW11bUhlaWdodHMiKSxncmFudWxhcml0eTpydCgiZ3JhbnVsYXJpdHkiKSxmaWxsOnJ0KCJmaWxsIiksbWF0ZXJpYWw6d24oIm1hdGVyaWFsIiksb3V0bGluZTpydCgib3V0bGluZSIpLG91dGxpbmVDb2xvcjpydCgib3V0bGluZUNvbG9yIiksb3V0bGluZVdpZHRoOnJ0KCJvdXRsaW5lV2lkdGgiKSxzaGFkb3dzOnJ0KCJzaGFkb3dzIiksZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uOnJ0KCJkaXN0YW5jZURpc3BsYXlDb25kaXRpb24iKX0pO2JfLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT8odC5zaG93PXRoaXMuc2hvdyx0LnBvc2l0aW9ucz10aGlzLnBvc2l0aW9ucyx0Lm1pbmltdW1IZWlnaHRzPXRoaXMubWluaW11bUhlaWdodHMsdC5tYXhpbXVtSGVpZ2h0cz10aGlzLm1heGltdW1IZWlnaHRzLHQuZ3JhbnVsYXJpdHk9dGhpcy5ncmFudWxhcml0eSx0LmZpbGw9dGhpcy5maWxsLHQubWF0ZXJpYWw9dGhpcy5tYXRlcmlhbCx0Lm91dGxpbmU9dGhpcy5vdXRsaW5lLHQub3V0bGluZUNvbG9yPXRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZVdpZHRoPXRoaXMub3V0bGluZVdpZHRoLHQuc2hhZG93cz10aGlzLnNoYWRvd3MsdC5kaXN0YW5jZURpc3BsYXlDb25kaXRpb249dGhpcy5kaXN0YW5jZURpc3BsYXlDb25kaXRpb24sdCk6bmV3IGJfKHRoaXMpfTtiXy5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInNvdXJjZSBpcyByZXF1aXJlZC4iKTt0aGlzLnNob3c9Wih0aGlzLnNob3csdC5zaG93KSx0aGlzLnBvc2l0aW9ucz1aKHRoaXMucG9zaXRpb25zLHQucG9zaXRpb25zKSx0aGlzLm1pbmltdW1IZWlnaHRzPVoodGhpcy5taW5pbXVtSGVpZ2h0cyx0Lm1pbmltdW1IZWlnaHRzKSx0aGlzLm1heGltdW1IZWlnaHRzPVoodGhpcy5tYXhpbXVtSGVpZ2h0cyx0Lm1heGltdW1IZWlnaHRzKSx0aGlzLmdyYW51bGFyaXR5PVoodGhpcy5ncmFudWxhcml0eSx0LmdyYW51bGFyaXR5KSx0aGlzLmZpbGw9Wih0aGlzLmZpbGwsdC5maWxsKSx0aGlzLm1hdGVyaWFsPVoodGhpcy5tYXRlcmlhbCx0Lm1hdGVyaWFsKSx0aGlzLm91dGxpbmU9Wih0aGlzLm91dGxpbmUsdC5vdXRsaW5lKSx0aGlzLm91dGxpbmVDb2xvcj1aKHRoaXMub3V0bGluZUNvbG9yLHQub3V0bGluZUNvbG9yKSx0aGlzLm91dGxpbmVXaWR0aD1aKHRoaXMub3V0bGluZVdpZHRoLHQub3V0bGluZVdpZHRoKSx0aGlzLnNoYWRvd3M9Wih0aGlzLnNoYWRvd3MsdC5zaGFkb3dzKSx0aGlzLmRpc3RhbmNlRGlzcGxheUNvbmRpdGlvbj1aKHRoaXMuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uLHQuZGlzdGFuY2VEaXNwbGF5Q29uZGl0aW9uKX07ZTM9Yl99KTt2YXIgQ2F0LEtsLG4zPVMoKCk9PntDYXQ9e05PTkU6MCxIT0xEOjEsRVhUUkFQT0xBVEU6Mn0sS2w9T2JqZWN0LmZyZWV6ZShDYXQpfSk7dmFyIGdGLHMzLG8zPVMoKCk9PnttdCgpO090KCk7Z0Y9e3R5cGU6IkxpbmVhciJ9O2dGLmdldFJlcXVpcmVkRGF0YVBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gMn07Z0YuaW50ZXJwb2xhdGVPcmRlclplcm89ZnVuY3Rpb24odCxlLGksbixzKXtpZihlLmxlbmd0aCE9PTIpdGhyb3cgbmV3IFkoIlRoZSB4VGFibGUgcHJvdmlkZWQgdG8gdGhlIGxpbmVhciBpbnRlcnBvbGF0b3IgbXVzdCBoYXZlIGV4YWN0bHkgdHdvIGVsZW1lbnRzLiIpO2lmKG48PTApdGhyb3cgbmV3IFkoIlRoZXJlIG11c3QgYmUgYXQgbGVhc3QgMSBkZXBlbmRlbnQgdmFyaWFibGUgZm9yIGVhY2ggaW5kZXBlbmRlbnQgdmFyaWFibGUuIik7bShzKXx8KHM9bmV3IEFycmF5KG4pKTtsZXQgbyxyLGEsaD1lWzBdLEE9ZVsxXTtpZihoPT09QSl0aHJvdyBuZXcgWSgiRGl2aWRlIGJ5IHplcm8gZXJyb3I6IHhUYWJsZVswXSBhbmQgeFRhYmxlWzFdIGFyZSBlcXVhbCIpO2ZvcihvPTA7bzxuO28rKylyPWlbb10sYT1pW28rbl0sc1tvXT0oKGEtcikqdCtBKnItaCphKS8oQS1oKTtyZXR1cm4gc307czM9Z0Z9KTtmdW5jdGlvbiBhMyh0LGUsaSl7bGV0IG4scz10Lmxlbmd0aCxvPWkubGVuZ3RoLHI9cytvO2lmKHQubGVuZ3RoPXIscyE9PWUpe2xldCBhPXMtMTtmb3Iobj1yLTE7bj49ZTtuLS0pdFtuXT10W2EtLV19Zm9yKG49MDtuPG87bisrKXRbZSsrXT1pW25dfWZ1bmN0aW9uIEEzKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBaZT90OnR5cGVvZiB0PT0ic3RyaW5nIj9aZS5mcm9tSXNvODYwMSh0KTpaZS5hZGRTZWNvbmRzKGUsdCxuZXcgWmUpfWZ1bmN0aW9uIGxwKHQsZSxpLG4scyl7bGV0IG89MCxyLGEsaCxBLGQsZjtmb3IoO288bi5sZW5ndGg7KXtkPUEzKG5bb10sdCksaD1HbyhlLGQsWmUuY29tcGFyZSk7bGV0IEU9MCxfPTA7aWYoaDwwKXtmb3IoaD1+aCxBPWgqcyxhPXZvaWQgMCxmPWVbaF07bzxuLmxlbmd0aCYmKGQ9QTMobltvXSx0KSwhKG0oYSkmJlplLmNvbXBhcmUoYSxkKT49MHx8bShmKSYmWmUuY29tcGFyZShkLGYpPj0wKSk7KXtmb3IoVEZbRSsrXT1kLG89bysxLHI9MDtyPHM7cisrKU5GW18rK109bltvXSxvPW8rMTthPWR9RT4wJiYoTkYubGVuZ3RoPV8sYTMoaSxBLE5GKSxURi5sZW5ndGg9RSxhMyhlLGgsVEYpKX1lbHNle2ZvcihyPTA7cjxzO3IrKylvKyssaVtoKnMrcl09bltvXTtvKyt9fX1mdW5jdGlvbiBNYSh0LGUpe3AuZGVmaW5lZCgidHlwZSIsdCk7bGV0IGk9dDtpPT09TnVtYmVyJiYoaT1yMyk7bGV0IG49aS5wYWNrZWRMZW5ndGgscz1aKGkucGFja2VkSW50ZXJwb2xhdGlvbkxlbmd0aCxuKSxvPTAscjtpZihtKGUpKXtsZXQgYT1lLmxlbmd0aDtyPW5ldyBBcnJheShhKTtmb3IobGV0IGg9MDtoPGE7aCsrKXtsZXQgQT1lW2hdO0E9PT1OdW1iZXImJihBPXIzKTtsZXQgZD1BLnBhY2tlZExlbmd0aDtuKz1kLHMrPVooQS5wYWNrZWRJbnRlcnBvbGF0aW9uTGVuZ3RoLGQpLHJbaF09QX1vPWF9dGhpcy5fdHlwZT10LHRoaXMuX2lubmVyVHlwZT1pLHRoaXMuX2ludGVycG9sYXRpb25EZWdyZWU9MSx0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtPXMzLHRoaXMuX251bWJlck9mUG9pbnRzPTAsdGhpcy5fdGltZXM9W10sdGhpcy5fdmFsdWVzPVtdLHRoaXMuX3hUYWJsZT1bXSx0aGlzLl95VGFibGU9W10sdGhpcy5fcGFja2VkTGVuZ3RoPW4sdGhpcy5fcGFja2VkSW50ZXJwb2xhdGlvbkxlbmd0aD1zLHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHRoaXMuX2ludGVycG9sYXRpb25SZXN1bHQ9bmV3IEFycmF5KHMpLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9kZXJpdmF0aXZlVHlwZXM9ZSx0aGlzLl9pbm5lckRlcml2YXRpdmVUeXBlcz1yLHRoaXMuX2lucHV0T3JkZXI9byx0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9S2wuTk9ORSx0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9uPTAsdGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZT1LbC5OT05FLHRoaXMuX2JhY2t3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9uPTB9ZnVuY3Rpb24gaDModCxlLGkpe2xldCBuPXQuX3BhY2tlZExlbmd0aDt0Ll90aW1lcy5zcGxpY2UoZSxpKSx0Ll92YWx1ZXMuc3BsaWNlKGUqbixpKm4pLHQuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHQuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodCl9dmFyIHIzLFRGLE5GLGRwLEZGPVMoKCk9PntzRSgpO2FlKCk7RnQoKTttdCgpO090KCk7eGkoKTtuMygpO09yKCk7bzMoKTtyMz17cGFja2VkTGVuZ3RoOjEscGFjazpmdW5jdGlvbih0LGUsaSl7aT1aKGksMCksZVtpXT10fSx1bnBhY2s6ZnVuY3Rpb24odCxlLGkpe3JldHVybiBlPVooZSwwKSx0W2VdfX07VEY9W10sTkY9W107T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTWEucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWVzLmxlbmd0aD09PTB9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3R5cGV9fSxkZXJpdmF0aXZlVHlwZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZXJpdmF0aXZlVHlwZXN9fSxpbnRlcnBvbGF0aW9uRGVncmVlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW50ZXJwb2xhdGlvbkRlZ3JlZX19LGludGVycG9sYXRpb25BbGdvcml0aG06e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtfX0sZm9yd2FyZEV4dHJhcG9sYXRpb25UeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9yd2FyZEV4dHJhcG9sYXRpb25UeXBlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9yd2FyZEV4dHJhcG9sYXRpb25UeXBlIT09dCYmKHRoaXMuX2ZvcndhcmRFeHRyYXBvbGF0aW9uVHlwZT10LHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcykpfX0sZm9yd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvcndhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb259LHNldDpmdW5jdGlvbih0KXt0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9uIT09dCYmKHRoaXMuX2ZvcndhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb249dCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19LGJhY2t3YXJkRXh0cmFwb2xhdGlvblR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZSE9PXQmJih0aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlPXQsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzKSl9fSxiYWNrd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2t3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb24hPT10JiYodGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb249dCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19fSk7TWEucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cC5kZWZpbmVkKCJ0aW1lIix0KTtsZXQgaT10aGlzLl90aW1lcyxuPWkubGVuZ3RoO2lmKG49PT0wKXJldHVybjtsZXQgcyxvPXRoaXMuX2lubmVyVHlwZSxyPXRoaXMuX3ZhbHVlcyxhPUdvKGksdCxaZS5jb21wYXJlKTtpZihhPDApe2lmKGE9fmEsYT09PTApe2xldCBGPWlbYV07aWYocz10aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbix0aGlzLl9iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlPT09S2wuTk9ORXx8cyE9PTAmJlplLnNlY29uZHNEaWZmZXJlbmNlKEYsdCk+cylyZXR1cm47aWYodGhpcy5fYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZT09PUtsLkhPTEQpcmV0dXJuIG8udW5wYWNrKHIsMCxlKX1pZihhPj1uKXthPW4tMTtsZXQgRj1pW2FdO2lmKHM9dGhpcy5fZm9yd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbix0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9PT1LbC5OT05FfHxzIT09MCYmWmUuc2Vjb25kc0RpZmZlcmVuY2UodCxGKT5zKXJldHVybjtpZih0aGlzLl9mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9PT1LbC5IT0xEKXJldHVybiBhPW4tMSxvLnVucGFjayhyLGEqby5wYWNrZWRMZW5ndGgsZSl9bGV0IGg9dGhpcy5feFRhYmxlLEE9dGhpcy5feVRhYmxlLGQ9dGhpcy5faW50ZXJwb2xhdGlvbkFsZ29yaXRobSxmPXRoaXMuX3BhY2tlZEludGVycG9sYXRpb25MZW5ndGgsRT10aGlzLl9pbnB1dE9yZGVyO2lmKHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoKXt0aGlzLl91cGRhdGVUYWJsZUxlbmd0aD0hMTtsZXQgRj1NYXRoLm1pbihkLmdldFJlcXVpcmVkRGF0YVBvaW50cyh0aGlzLl9pbnRlcnBvbGF0aW9uRGVncmVlLEUpLG4pO0YhPT10aGlzLl9udW1iZXJPZlBvaW50cyYmKHRoaXMuX251bWJlck9mUG9pbnRzPUYsaC5sZW5ndGg9RixBLmxlbmd0aD1GKmYpfWxldCBfPXRoaXMuX251bWJlck9mUG9pbnRzLTE7aWYoXzwxKXJldHVybjtsZXQgUj0wLEk9bi0xO2lmKEktUisxPj1fKzEpe2xldCBGPWEtKF8vMnwwKS0xO0Y8UiYmKEY9Uik7bGV0IEI9RitfO0I+SSYmKEI9SSxGPUItXyxGPFImJihGPVIpKSxSPUYsST1CfWxldCBOPUktUisxO2ZvcihsZXQgRj0wO0Y8TjsrK0YpaFtGXT1aZS5zZWNvbmRzRGlmZmVyZW5jZShpW1IrRl0saVtJXSk7aWYobShvLmNvbnZlcnRQYWNrZWRBcnJheUZvckludGVycG9sYXRpb24pKW8uY29udmVydFBhY2tlZEFycmF5Rm9ySW50ZXJwb2xhdGlvbihyLFIsSSxBKTtlbHNle2xldCBGPTAsQj10aGlzLl9wYWNrZWRMZW5ndGgsVT1SKkIsUT0oSSsxKSpCO2Zvcig7VTxROylBW0ZdPXJbVV0sVSsrLEYrK31sZXQgVD1aZS5zZWNvbmRzRGlmZmVyZW5jZSh0LGlbSV0pLGI7aWYoRT09PTB8fCFtKGQuaW50ZXJwb2xhdGUpKWI9ZC5pbnRlcnBvbGF0ZU9yZGVyWmVybyhULGgsQSxmLHRoaXMuX2ludGVycG9sYXRpb25SZXN1bHQpO2Vsc2V7bGV0IEY9TWF0aC5mbG9vcihmLyhFKzEpKTtiPWQuaW50ZXJwb2xhdGUoVCxoLEEsRixFLEUsdGhpcy5faW50ZXJwb2xhdGlvblJlc3VsdCl9cmV0dXJuIG0oby51bnBhY2tJbnRlcnBvbGF0aW9uUmVzdWx0KT9vLnVucGFja0ludGVycG9sYXRpb25SZXN1bHQoYixyLFIsSSxlKTpvLnVucGFjayhiLDAsZSl9cmV0dXJuIG8udW5wYWNrKHIsYSp0aGlzLl9wYWNrZWRMZW5ndGgsZSl9O01hLnByb3RvdHlwZS5zZXRJbnRlcnBvbGF0aW9uT3B0aW9ucz1mdW5jdGlvbih0KXtpZighbSh0KSlyZXR1cm47bGV0IGU9ITEsaT10LmludGVycG9sYXRpb25BbGdvcml0aG0sbj10LmludGVycG9sYXRpb25EZWdyZWU7bShpKSYmdGhpcy5faW50ZXJwb2xhdGlvbkFsZ29yaXRobSE9PWkmJih0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtPWksZT0hMCksbShuKSYmdGhpcy5faW50ZXJwb2xhdGlvbkRlZ3JlZSE9PW4mJih0aGlzLl9pbnRlcnBvbGF0aW9uRGVncmVlPW4sZT0hMCksZSYmKHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcykpfTtNYS5wcm90b3R5cGUuYWRkU2FtcGxlPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10aGlzLl9pbm5lckRlcml2YXRpdmVUeXBlcyxzPW0obik7cC5kZWZpbmVkKCJ0aW1lIix0KSxwLmRlZmluZWQoInZhbHVlIixlKSxzJiZwLmRlZmluZWQoImRlcml2YXRpdmVzIixpKTtsZXQgbz10aGlzLl9pbm5lclR5cGUscj1bXTtpZihyLnB1c2godCksby5wYWNrKGUscixyLmxlbmd0aCkscyl7bGV0IGE9bi5sZW5ndGg7Zm9yKGxldCBoPTA7aDxhO2grKyluW2hdLnBhY2soaVtoXSxyLHIubGVuZ3RoKX1scCh2b2lkIDAsdGhpcy5fdGltZXMsdGhpcy5fdmFsdWVzLHIsdGhpcy5fcGFja2VkTGVuZ3RoKSx0aGlzLl91cGRhdGVUYWJsZUxlbmd0aD0hMCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpfTtNYS5wcm90b3R5cGUuYWRkU2FtcGxlcz1mdW5jdGlvbih0LGUsaSl7bGV0IG49dGhpcy5faW5uZXJEZXJpdmF0aXZlVHlwZXMscz1tKG4pO2lmKHAuZGVmaW5lZCgidGltZXMiLHQpLHAuZGVmaW5lZCgidmFsdWVzIixlKSx0Lmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBZKCJ0aW1lcyBhbmQgdmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2lmKHMmJighbShpKXx8aS5sZW5ndGghPT10Lmxlbmd0aCkpdGhyb3cgbmV3IFkoInRpbWVzIGFuZCBkZXJpdmF0aXZlVmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2xldCBvPXRoaXMuX2lubmVyVHlwZSxyPXQubGVuZ3RoLGE9W107Zm9yKGxldCBoPTA7aDxyO2grKylpZihhLnB1c2godFtoXSksby5wYWNrKGVbaF0sYSxhLmxlbmd0aCkscyl7bGV0IEE9aVtoXSxkPW4ubGVuZ3RoO2ZvcihsZXQgZj0wO2Y8ZDtmKyspbltmXS5wYWNrKEFbZl0sYSxhLmxlbmd0aCl9bHAodm9pZCAwLHRoaXMuX3RpbWVzLHRoaXMuX3ZhbHVlcyxhLHRoaXMuX3BhY2tlZExlbmd0aCksdGhpcy5fdXBkYXRlVGFibGVMZW5ndGg9ITAsdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzKX07TWEucHJvdG90eXBlLmFkZFNhbXBsZXNQYWNrZWRBcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgicGFja2VkU2FtcGxlcyIsdCksbHAoZSx0aGlzLl90aW1lcyx0aGlzLl92YWx1ZXMsdCx0aGlzLl9wYWNrZWRMZW5ndGgpLHRoaXMuX3VwZGF0ZVRhYmxlTGVuZ3RoPSEwLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9O01hLnByb3RvdHlwZS5yZW1vdmVTYW1wbGU9ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJ0aW1lIix0KTtsZXQgZT1Hbyh0aGlzLl90aW1lcyx0LFplLmNvbXBhcmUpO3JldHVybiBlPDA/ITE6KGgzKHRoaXMsZSwxKSwhMCl9O01hLnByb3RvdHlwZS5yZW1vdmVTYW1wbGVzPWZ1bmN0aW9uKHQpe3AuZGVmaW5lZCgidGltZUludGVydmFsIix0KTtsZXQgZT10aGlzLl90aW1lcyxpPUdvKGUsdC5zdGFydCxaZS5jb21wYXJlKTtpPDA/aT1+aTp0LmlzU3RhcnRJbmNsdWRlZHx8KytpO2xldCBuPUdvKGUsdC5zdG9wLFplLmNvbXBhcmUpO248MD9uPX5uOnQuaXNTdG9wSW5jbHVkZWQmJisrbixoMyh0aGlzLGksbi1pKX07TWEucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtpZih0aGlzPT09dClyZXR1cm4hMDtpZighbSh0KXx8dGhpcy5fdHlwZSE9PXQuX3R5cGV8fHRoaXMuX2ludGVycG9sYXRpb25EZWdyZWUhPT10Ll9pbnRlcnBvbGF0aW9uRGVncmVlfHx0aGlzLl9pbnRlcnBvbGF0aW9uQWxnb3JpdGhtIT09dC5faW50ZXJwb2xhdGlvbkFsZ29yaXRobSlyZXR1cm4hMTtsZXQgZT10aGlzLl9kZXJpdmF0aXZlVHlwZXMsaT1tKGUpLG49dC5fZGVyaXZhdGl2ZVR5cGVzLHM9bShuKTtpZihpIT09cylyZXR1cm4hMTtsZXQgbyxyO2lmKGkpe2lmKHI9ZS5sZW5ndGgsciE9PW4ubGVuZ3RoKXJldHVybiExO2ZvcihvPTA7bzxyO28rKylpZihlW29dIT09bltvXSlyZXR1cm4hMX1sZXQgYT10aGlzLl90aW1lcyxoPXQuX3RpbWVzO2lmKHI9YS5sZW5ndGgsciE9PWgubGVuZ3RoKXJldHVybiExO2ZvcihvPTA7bzxyO28rKylpZighWmUuZXF1YWxzKGFbb10saFtvXSkpcmV0dXJuITE7bGV0IEE9dGhpcy5fdmFsdWVzLGQ9dC5fdmFsdWVzO2ZvcihyPUEubGVuZ3RoLG89MDtvPHI7bysrKWlmKEFbb10hPT1kW29dKXJldHVybiExO3JldHVybiEwfTtNYS5fbWVyZ2VOZXdTYW1wbGVzPWxwO2RwPU1hfSk7ZnVuY3Rpb24gRmF0KHQpe3JldHVybiBuZXcgSWoodCl9ZnVuY3Rpb24gYmF0KHQpe3JldHVybiBydCh0LHZvaWQgMCxGYXQpfWZ1bmN0aW9uIHlzKHQsZSl7cmV0dXJuIHJ0KHQsdm9pZCAwLGZ1bmN0aW9uKGkpe3JldHVybiBpIGluc3RhbmNlb2YgZT9pOm5ldyBlKGkpfSl9ZnVuY3Rpb24gc3IodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuaWQ7bShlKXx8KGU9QnMoKSksdGhpcy5fYXZhaWxhYmlsaXR5PXZvaWQgMCx0aGlzLl9pZD1lLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9uYW1lPXQubmFtZSx0aGlzLl9zaG93PVoodC5zaG93LCEwKSx0aGlzLl9wYXJlbnQ9dm9pZCAwLHRoaXMuX3Byb3BlcnR5TmFtZXM9WyJiaWxsYm9hcmQiLCJib3giLCJjb3JyaWRvciIsImN5bGluZGVyIiwiZGVzY3JpcHRpb24iLCJlbGxpcHNlIiwiZWxsaXBzb2lkIiwibGFiZWwiLCJtb2RlbCIsInRpbGVzZXQiLCJvcmllbnRhdGlvbiIsInBhdGgiLCJwbGFuZSIsInBvaW50IiwicG9seWdvbiIsInBvbHlsaW5lIiwicG9seWxpbmVWb2x1bWUiLCJwb3NpdGlvbiIsInByb3BlcnRpZXMiLCJyZWN0YW5nbGUiLCJ2aWV3RnJvbSIsIndhbGwiLCJyZWZlcmVuY2VGcmFtZSIsImdsdGZaRm9yd2FyZFlVcCIsLi4uYkZdLHRoaXMuX2JpbGxib2FyZD12b2lkIDAsdGhpcy5fYmlsbGJvYXJkU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9ib3g9dm9pZCAwLHRoaXMuX2JveFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fY29ycmlkb3I9dm9pZCAwLHRoaXMuX2NvcnJpZG9yU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jeWxpbmRlcj12b2lkIDAsdGhpcy5fY3lsaW5kZXJTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2Rlc2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9kZXNjcmlwdGlvblN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZWxsaXBzZT12b2lkIDAsdGhpcy5fZWxsaXBzZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fZWxsaXBzb2lkPXZvaWQgMCx0aGlzLl9lbGxpcHNvaWRTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9sYWJlbFN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fbW9kZWw9dm9pZCAwLHRoaXMuX21vZGVsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl90aWxlc2V0PXZvaWQgMCx0aGlzLl90aWxlc2V0U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9vcmllbnRhdGlvbj12b2lkIDAsdGhpcy5fb3JpZW50YXRpb25TdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BhdGg9dm9pZCAwLHRoaXMuX3BhdGhTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BsYW5lPXZvaWQgMCx0aGlzLl9wbGFuZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcG9pbnQ9dm9pZCAwLHRoaXMuX3BvaW50U3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wb2x5Z29uPXZvaWQgMCx0aGlzLl9wb2x5Z29uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wb2x5bGluZT12b2lkIDAsdGhpcy5fcG9seWxpbmVTdWJzY3JpcHRpb249dm9pZCAwLHRoaXMuX3BvbHlsaW5lVm9sdW1lPXZvaWQgMCx0aGlzLl9wb2x5bGluZVZvbHVtZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fcG9zaXRpb249dm9pZCAwLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9wcm9wZXJ0aWVzPXZvaWQgMCx0aGlzLl9wcm9wZXJ0aWVzU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9yZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3JlY3RhbmdsZVN1YnNjcmlwdGlvbj12b2lkIDAsdGhpcy5fdmlld0Zyb209dm9pZCAwLHRoaXMuX3ZpZXdGcm9tU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl93YWxsPXZvaWQgMCx0aGlzLl93YWxsU3Vic2NyaXB0aW9uPXZvaWQgMCx0aGlzLl9jaGlsZHJlbj1bXSx0aGlzLmVudGl0eUNvbGxlY3Rpb249dm9pZCAwLHRoaXMuX3JlZmVyZW5jZUZyYW1lPVoodC5yZWZlcmVuY2VGcmFtZSx2b2lkIDApLHRoaXMuX2dsdGZaRm9yd2FyZFlVcD1aKHQuZ2x0ZlpGb3J3YXJkWVVwLCExKSx0aGlzLnBhcmVudD10LnBhcmVudCx0aGlzLm1lcmdlKHQpfWZ1bmN0aW9uIFlGKHQsZSxpKXtsZXQgbj1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cysrKXtsZXQgbz1lW3NdLHI9by5fc2hvdzsoIWkmJnIpIT09KGkmJnIpJiZZRihvLG8uX2NoaWxkcmVuLGkpfXQuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodCwiaXNTaG93aW5nIixpLCFpKX12YXIgZ2F0LFRhdCxOYXQsYkYsVkYsYzMsbDMsb2YscmYsU0Y9UygoKT0+e0h0KCk7cmkoKTthZSgpO2loKCk7RnQoKTttdCgpO090KCk7eGkoKTtfZSgpO2RuKCk7YmkoKTskcygpO2ZyKCk7dUooKTtjaigpO1NtKCk7ZGooKTtaaigpO3BqKCk7Q2ooKTt5bigpO2dqKCk7TmooKTtiaigpO1ZqKCk7T2ooKTtRaigpO0xqKCk7d2ooKTtQaigpO2pqKCk7dmooKTtLaigpO3FqKCk7SGwoKTtDRigpO3QzKCk7aTMoKTtpYygpO0ZGKCk7c0UoKTtPcigpO2hfKCk7KHtlYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZTpnYXQsZ2V0VHJhbnNmb3JtVG9GaXhlZEZyYW1lOlRhdH09SW4pLE5hdD1uZXcgdXQsYkY9W107T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoc3IucHJvdG90eXBlLHthdmFpbGFiaWxpdHk6aHAoImF2YWlsYWJpbGl0eSIpLGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9fSxkZWZpbml0aW9uQ2hhbmdlZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkfX0sbmFtZTpocCgibmFtZSIpLHNob3c6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaG93fSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkLiIpO2lmKHQ9PT10aGlzLl9zaG93KXJldHVybjtsZXQgZT10aGlzLmlzU2hvd2luZzt0aGlzLl9zaG93PXQ7bGV0IGk9dGhpcy5pc1Nob3dpbmc7ZSE9PWkmJllGKHRoaXMsdGhpcy5fY2hpbGRyZW4saSksdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWQucmFpc2VFdmVudCh0aGlzLCJzaG93Iix0LCF0KX19LGlzU2hvd2luZzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nob3cmJighbSh0aGlzLmVudGl0eUNvbGxlY3Rpb24pfHx0aGlzLmVudGl0eUNvbGxlY3Rpb24uc2hvdykmJighbSh0aGlzLl9wYXJlbnQpfHx0aGlzLl9wYXJlbnQuaXNTaG93aW5nKX19LHBhcmVudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sc2V0OmZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuX3BhcmVudDtpZihlPT09dClyZXR1cm47bGV0IGk9dGhpcy5pc1Nob3dpbmc7aWYobShlKSl7bGV0IHM9ZS5fY2hpbGRyZW4uaW5kZXhPZih0aGlzKTtlLl9jaGlsZHJlbi5zcGxpY2UocywxKX10aGlzLl9wYXJlbnQ9dCxtKHQpJiZ0Ll9jaGlsZHJlbi5wdXNoKHRoaXMpO2xldCBuPXRoaXMuaXNTaG93aW5nO2khPT1uJiZZRih0aGlzLHRoaXMuX2NoaWxkcmVuLG4pLHRoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcywicGFyZW50Iix0LGUpfX0scHJvcGVydHlOYW1lczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5TmFtZXN9fSxiaWxsYm9hcmQ6eXMoImJpbGxib2FyZCIsbGopLGJveDp5cygiYm94IixSaiksY29ycmlkb3I6eXMoImNvcnJpZG9yIix1aiksY3lsaW5kZXI6eXMoImN5bGluZGVyIixUaiksZGVzY3JpcHRpb246cnQoImRlc2NyaXB0aW9uIiksZWxsaXBzZTp5cygiZWxsaXBzZSIsRmopLGVsbGlwc29pZDp5cygiZWxsaXBzb2lkIixZaiksbGFiZWw6eXMoImxhYmVsIixTaiksbW9kZWw6eXMoIm1vZGVsIixNaiksdGlsZXNldDp5cygidGlsZXNldCIsa2opLG9yaWVudGF0aW9uOnJ0KCJvcmllbnRhdGlvbiIpLHBhdGg6eXMoInBhdGgiLHlqKSxwbGFuZTp5cygicGxhbmUiLHhqKSxwb2ludDp5cygicG9pbnQiLEpqKSxwb2x5Z29uOnlzKCJwb2x5Z29uIixIaikscG9seWxpbmU6eXMoInBvbHlsaW5lIix6aikscG9seWxpbmVWb2x1bWU6eXMoInBvbHlsaW5lVm9sdW1lIixYaikscHJvcGVydGllczp5cygicHJvcGVydGllcyIsemwpLHBvc2l0aW9uOmJhdCgicG9zaXRpb24iKSxyZWN0YW5nbGU6eXMoInJlY3RhbmdsZSIsJGopLHZpZXdGcm9tOnJ0KCJ2aWV3RnJvbSIpLHdhbGw6eXMoIndhbGwiLGUzKX0pO3NyLnJlZ2lzdGVyRW50aXR5VHlwZT1mdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNyLnByb3RvdHlwZSx7W3RdOnlzKHQsZSl9KSxiRi5pbmNsdWRlcyh0KXx8YkYucHVzaCh0KX07c3IucHJvdG90eXBlLmlzQXZhaWxhYmxlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aW1lIGlzIHJlcXVpcmVkLiIpO2xldCBlPXRoaXMuX2F2YWlsYWJpbGl0eTtyZXR1cm4hbShlKXx8ZS5jb250YWlucyh0KX07c3IucHJvdG90eXBlLmFkZFByb3BlcnR5PWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuX3Byb3BlcnR5TmFtZXM7aWYoIW0odCkpdGhyb3cgbmV3IFkoInByb3BlcnR5TmFtZSBpcyByZXF1aXJlZC4iKTtpZihlLmluZGV4T2YodCkhPT0tMSl0aHJvdyBuZXcgWShgJHt0fSBpcyBhbHJlYWR5IGEgcmVnaXN0ZXJlZCBwcm9wZXJ0eS5gKTtpZih0IGluIHRoaXMpdGhyb3cgbmV3IFkoYCR7dH0gaXMgYSByZXNlcnZlZCBwcm9wZXJ0eSBuYW1lLmApO2UucHVzaCh0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LGhwKHQsITApKX07c3IucHJvdG90eXBlLnJlbW92ZVByb3BlcnR5PWZ1bmN0aW9uKHQpe2xldCBpPXRoaXMuX3Byb3BlcnR5TmFtZXMuaW5kZXhPZih0KTtpZighbSh0KSl0aHJvdyBuZXcgWSgicHJvcGVydHlOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKGk9PT0tMSl0aHJvdyBuZXcgWShgJHt0fSBpcyBub3QgYSByZWdpc3RlcmVkIHByb3BlcnR5LmApO3RoaXMuX3Byb3BlcnR5TmFtZXMuc3BsaWNlKGksMSksZGVsZXRlIHRoaXNbdF19O3NyLnByb3RvdHlwZS5tZXJnZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgic291cmNlIGlzIHJlcXVpcmVkLiIpO3RoaXMubmFtZT1aKHRoaXMubmFtZSx0Lm5hbWUpLHRoaXMuYXZhaWxhYmlsaXR5PVoodGhpcy5hdmFpbGFiaWxpdHksdC5hdmFpbGFiaWxpdHkpO2xldCBlPXRoaXMuX3Byb3BlcnR5TmFtZXMsaT1tKHQuX3Byb3BlcnR5TmFtZXMpP3QuX3Byb3BlcnR5TmFtZXM6T2JqZWN0LmtleXModCksbj1pLmxlbmd0aDtmb3IobGV0IHM9MDtzPG47cysrKXtsZXQgbz1pW3NdO2lmKG89PT0icGFyZW50Inx8bz09PSJuYW1lInx8bz09PSJhdmFpbGFiaWxpdHkifHxvPT09ImNoaWxkcmVuIiljb250aW51ZTtsZXQgcj10aGlzW29dLGE9dFtvXTshbShyKSYmZS5pbmRleE9mKG8pPT09LTEmJnRoaXMuYWRkUHJvcGVydHkobyksbShhKSYmKG0ocik/bShyLm1lcmdlKSYmci5tZXJnZShhKTptKGEubWVyZ2UpJiZtKGEuY2xvbmUpP3RoaXNbb109YS5jbG9uZSgpOnRoaXNbb109YSl9fTtWRj1uZXcgbHQsYzM9bmV3IGwsbDM9bmV3IEFlO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNyLnByb3RvdHlwZSx7cmVmZXJlbmNlRnJhbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWZlcmVuY2VGcmFtZX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC52YWx1ZXMoJGkpLmluY2x1ZGVzKHQpJiYodGhpcy5fcmVmZXJlbmNlRnJhbWU9dCl9fSxnbHRmWkZvcndhcmRZVXA6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nbHRmWkZvcndhcmRZVXB9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9nbHRmWkZvcndhcmRZVXA9dH19fSk7c3IucHJvdG90eXBlLmNvbXB1dGVNb2RlbE1hdHJpeD1mdW5jdGlvbih0LGUsaT0hMCxuPXZvaWQgMCl7cC50eXBlT2Yub2JqZWN0KCJ0aW1lIix0KTtsZXQgcz1TaS5nZXRWYWx1ZU9yVW5kZWZpbmVkKHRoaXMuX3Bvc2l0aW9uLHQsYzMpO2lmKCFtKHMpKXJldHVybjtsZXQgbz1TaS5nZXRWYWx1ZU9yVW5kZWZpbmVkKHRoaXMuX29yaWVudGF0aW9uLHQsbDMpO28mJn5YRy5pbmRleE9mKHRoaXMucmVmZXJlbmNlRnJhbWUpJiYobz1Jbi5yZXZlcnNlSGVhZGluZ1F1YXRlcm5pb24obykpO2xldCByPVRhdChufHx0aGlzLnJlZmVyZW5jZUZyYW1lLHQsdGhpcy5fcG9zaXRpb24pO3JldHVybiFtKG8pfHwhaT9lPXIocyx2b2lkIDAsZSk6bSh0aGlzLnJlZmVyZW5jZUZyYW1lKT8oSW4ubG9jYWxUb0ZpeGVkRnJhbWVRdWF0ZXJuaW9uKHMsbyxudWxsLHIsbyksZT1hdC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihsdC5mcm9tUXVhdGVybmlvbihvLFZGKSxzLGUpKTplPWF0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKGx0LmZyb21RdWF0ZXJuaW9uKG8sVkYpLHMsZSksZX07c3IucHJvdG90eXBlLmNvbXB1dGVNb2RlbE1hdHJpeEZvckhlaWdodFJlZmVyZW5jZT1mdW5jdGlvbih0LGUsaSxuLHMpe3AudHlwZU9mLm9iamVjdCgidGltZSIsdCk7bGV0IG89U2kuZ2V0VmFsdWVPckRlZmF1bHQoZSx0LFdyLk5PTkUpLHI9U2kuZ2V0VmFsdWVPclVuZGVmaW5lZCh0aGlzLl9wb3NpdGlvbix0LGMzKTtpZihvPT09V3IuTk9ORXx8IW0ocil8fGwuZXF1YWxzRXBzaWxvbihyLGwuWkVSTyxMLkVQU0lMT044KSlyZXR1cm4gdGhpcy5jb21wdXRlTW9kZWxNYXRyaXgodCxzKTtsZXQgYT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsTmF0KTtnbChvKT9hLmhlaWdodD1pOmEuaGVpZ2h0Kz1pLHI9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihhLHIpO2xldCBoPVNpLmdldFZhbHVlT3JVbmRlZmluZWQodGhpcy5fb3JpZW50YXRpb24sdCxsMyk7cmV0dXJuIG0oaCk/cz1hdC5mcm9tUm90YXRpb25UcmFuc2xhdGlvbihsdC5mcm9tUXVhdGVybmlvbihoLFZGKSxyLHMpOnM9Z2F0KHIsdm9pZCAwLHMpLHN9O3NyLnN1cHBvcnRzTWF0ZXJpYWxzZm9yRW50aXRpZXNPblRlcnJhaW49ZnVuY3Rpb24odCl7cmV0dXJuIGhqLnN1cHBvcnRzTWF0ZXJpYWxzKHQpfTtzci5zdXBwb3J0c1BvbHlsaW5lc09uVGVycmFpbj1mdW5jdGlvbih0KXtyZXR1cm4gcEouaXNTdXBwb3J0ZWQodCl9O29mPW5ldyBBZTtzci5wcm90b3R5cGUudXBkYXRlQWRkaXRpdmVPcmllbnRhdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMub3JpZW50YXRpb258fCh0aGlzLm9yaWVudGF0aW9uPW5ldyBDaChBZS5jbG9uZShBZS5JREVOVElUWSkpKTtsZXQgaT10aGlzLm9yaWVudGF0aW9uLG49QWUuZnJvbUF4aXNBbmdsZShsLlVOSVRfWCx0LnJvbGwpLHM9QWUuZnJvbUF4aXNBbmdsZShsLlVOSVRfWSwtdC5waXRjaCksbz1BZS5mcm9tQXhpc0FuZ2xlKGwuVU5JVF9aLC10LmhlYWRpbmcpLHI9bmV3IEFlO2lmKEFlLm11bHRpcGx5KHMsbyxyKSxBZS5tdWx0aXBseShuLHIsciksaSBpbnN0YW5jZW9mIGRwKXtsZXQgYT1pLl90aW1lcyxoPWU/R28oYSxlLFplLmNvbXBhcmUpOjA7aDwwJiYoaD1+aCk7bGV0IEE9aS5fdmFsdWVzW2hdO0FlLm11bHRpcGx5KHIsQSxvZiksaS5fdmFsdWVzW2hdPUFlLmNsb25lKG9mKX1lbHNlIGlmKGkgaW5zdGFuY2VvZiBDaCl7bGV0IGE9aS5nZXRWYWx1ZSgpO0FlLm11bHRpcGx5KGEscixvZiksQWUubm9ybWFsaXplKG9mLG9mKSxpLnNldFZhbHVlKEFlLmNsb25lKG9mKSl9ZWxzZSB0aHJvdyBuZXcgWSgiVW5zdXBwb3J0ZWQgb3JpZW50YXRpb24gcHJvcGVydHkgdHlwZS4iKX07cmY9c3J9KTtmdW5jdGlvbiBZXyh0KXtpZih0Ll9maXJpbmcpe3QuX3JlZmlyZT0hMDtyZXR1cm59aWYodC5fc3VzcGVuZENvdW50PT09MCl7bGV0IGU9dC5fYWRkZWRFbnRpdGllcyxpPXQuX3JlbW92ZWRFbnRpdGllcyxuPXQuX2NoYW5nZWRFbnRpdGllcztpZihuLmxlbmd0aCE9PTB8fGUubGVuZ3RoIT09MHx8aS5sZW5ndGghPT0wKXt0Ll9maXJpbmc9ITA7ZG97dC5fcmVmaXJlPSExO2xldCBzPWUudmFsdWVzLnNsaWNlKDApLG89aS52YWx1ZXMuc2xpY2UoMCkscj1uLnZhbHVlcy5zbGljZSgwKTtlLnJlbW92ZUFsbCgpLGkucmVtb3ZlQWxsKCksbi5yZW1vdmVBbGwoKSx0Ll9jb2xsZWN0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHQscyxvLHIpfXdoaWxlKHQuX3JlZmlyZSk7dC5fZmlyaW5nPSExfX19ZnVuY3Rpb24gVG8odCl7dGhpcy5fb3duZXI9dCx0aGlzLl9lbnRpdGllcz1uZXcgd0UsdGhpcy5fYWRkZWRFbnRpdGllcz1uZXcgd0UsdGhpcy5fcmVtb3ZlZEVudGl0aWVzPW5ldyB3RSx0aGlzLl9jaGFuZ2VkRW50aXRpZXM9bmV3IHdFLHRoaXMuX3N1c3BlbmRDb3VudD0wLHRoaXMuX2NvbGxlY3Rpb25DaGFuZ2VkPW5ldyBXZSx0aGlzLl9pZD1CcygpLHRoaXMuX3Nob3c9ITAsdGhpcy5fZmlyaW5nPSExLHRoaXMuX3JlZmlyZT0hMX12YXIgZDMsbTMsZjM9UygoKT0+e3J3KCk7aWgoKTttdCgpO090KCk7eGkoKTtodygpO09yKCk7bE4oKTtTRigpO2QzPXtpZDp2b2lkIDB9O1RvLnByb3RvdHlwZS5zdXNwZW5kRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5fc3VzcGVuZENvdW50Kyt9O1RvLnByb3RvdHlwZS5yZXN1bWVFdmVudHM9ZnVuY3Rpb24oKXtpZih0aGlzLl9zdXNwZW5kQ291bnQ9PT0wKXRocm93IG5ldyBZKCJyZXN1bWVFdmVudHMgY2FuIG5vdCBiZSBjYWxsZWQgYmVmb3JlIHN1c3BlbmRFdmVudHMuIik7dGhpcy5fc3VzcGVuZENvdW50LS0sWV8odGhpcyl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFRvLnByb3RvdHlwZSx7Y29sbGVjdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xsZWN0aW9uQ2hhbmdlZH19LGlkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWR9fSx2YWx1ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdGllcy52YWx1ZXN9fSxzaG93OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd30sc2V0OmZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtpZih0PT09dGhpcy5fc2hvdylyZXR1cm47dGhpcy5zdXNwZW5kRXZlbnRzKCk7bGV0IGUsaT1bXSxuPXRoaXMuX2VudGl0aWVzLnZhbHVlcyxzPW4ubGVuZ3RoO2ZvcihlPTA7ZTxzO2UrKylpLnB1c2gobltlXS5pc1Nob3dpbmcpO2Zvcih0aGlzLl9zaG93PXQsZT0wO2U8cztlKyspe2xldCBvPWlbZV0scj1uW2VdO28hPT1yLmlzU2hvd2luZyYmci5kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHIsImlzU2hvd2luZyIsci5pc1Nob3dpbmcsbyl9dGhpcy5yZXN1bWVFdmVudHMoKX19LG93bmVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb3duZXJ9fX0pO1RvLnByb3RvdHlwZS5jb21wdXRlQXZhaWxhYmlsaXR5PWZ1bmN0aW9uKCl7bGV0IHQ9ZGguTUFYSU1VTV9WQUxVRSxlPWRoLk1JTklNVU1fVkFMVUUsaT10aGlzLl9lbnRpdGllcy52YWx1ZXM7Zm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7bisrKXtsZXQgcj1pW25dLmF2YWlsYWJpbGl0eTtpZihtKHIpKXtsZXQgYT1yLnN0YXJ0LGg9ci5zdG9wO1plLmxlc3NUaGFuKGEsdCkmJiFhLmVxdWFscyhkaC5NSU5JTVVNX1ZBTFVFKSYmKHQ9YSksWmUuZ3JlYXRlclRoYW4oaCxlKSYmIWguZXF1YWxzKGRoLk1BWElNVU1fVkFMVUUpJiYoZT1oKX19cmV0dXJuIGRoLk1BWElNVU1fVkFMVUUuZXF1YWxzKHQpJiYodD1kaC5NSU5JTVVNX1ZBTFVFKSxkaC5NSU5JTVVNX1ZBTFVFLmVxdWFscyhlKSYmKGU9ZGguTUFYSU1VTV9WQUxVRSksbmV3IE5JKHtzdGFydDp0LHN0b3A6ZX0pfTtUby5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJlbnRpdHkgaXMgcmVxdWlyZWQuIik7dCBpbnN0YW5jZW9mIHJmfHwodD1uZXcgcmYodCkpO2xldCBlPXQuaWQsaT10aGlzLl9lbnRpdGllcztpZihpLmNvbnRhaW5zKGUpKXRocm93IG5ldyBZKGBBbiBlbnRpdHkgd2l0aCBpZCAke2V9IGFscmVhZHkgZXhpc3RzIGluIHRoaXMgY29sbGVjdGlvbi5gKTtyZXR1cm4gdC5lbnRpdHlDb2xsZWN0aW9uPXRoaXMsaS5zZXQoZSx0KSx0aGlzLl9yZW1vdmVkRW50aXRpZXMucmVtb3ZlKGUpfHx0aGlzLl9hZGRlZEVudGl0aWVzLnNldChlLHQpLHQuZGVmaW5pdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihUby5wcm90b3R5cGUuX29uRW50aXR5RGVmaW5pdGlvbkNoYW5nZWQsdGhpcyksWV8odGhpcyksdH07VG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KT90aGlzLnJlbW92ZUJ5SWQodC5pZCk6ITF9O1RvLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiZW50aXR5IGlzIHJlcXVpcmVkIik7cmV0dXJuIHRoaXMuX2VudGl0aWVzLmdldCh0LmlkKT09PXR9O1RvLnByb3RvdHlwZS5yZW1vdmVCeUlkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXJldHVybiExO2xldCBpPXRoaXMuX2VudGl0aWVzLmdldCh0KTtyZXR1cm4gdGhpcy5fZW50aXRpZXMucmVtb3ZlKHQpPyh0aGlzLl9hZGRlZEVudGl0aWVzLnJlbW92ZSh0KXx8KHRoaXMuX3JlbW92ZWRFbnRpdGllcy5zZXQodCxpKSx0aGlzLl9jaGFuZ2VkRW50aXRpZXMucmVtb3ZlKHQpKSx0aGlzLl9lbnRpdGllcy5yZW1vdmUodCksaS5kZWZpbml0aW9uQ2hhbmdlZC5yZW1vdmVFdmVudExpc3RlbmVyKFRvLnByb3RvdHlwZS5fb25FbnRpdHlEZWZpbml0aW9uQ2hhbmdlZCx0aGlzKSxZXyh0aGlzKSwhMCk6ITF9O1RvLnByb3RvdHlwZS5yZW1vdmVBbGw9ZnVuY3Rpb24oKXtsZXQgdD10aGlzLl9lbnRpdGllcyxlPXQubGVuZ3RoLGk9dC52YWx1ZXMsbj10aGlzLl9hZGRlZEVudGl0aWVzLHM9dGhpcy5fcmVtb3ZlZEVudGl0aWVzO2ZvcihsZXQgbz0wO288ZTtvKyspe2xldCByPWlbb10sYT1yLmlkLGg9bi5nZXQoYSk7bShoKXx8KHIuZGVmaW5pdGlvbkNoYW5nZWQucmVtb3ZlRXZlbnRMaXN0ZW5lcihUby5wcm90b3R5cGUuX29uRW50aXR5RGVmaW5pdGlvbkNoYW5nZWQsdGhpcykscy5zZXQoYSxyKSl9dC5yZW1vdmVBbGwoKSxuLnJlbW92ZUFsbCgpLHRoaXMuX2NoYW5nZWRFbnRpdGllcy5yZW1vdmVBbGwoKSxZXyh0aGlzKX07VG8ucHJvdG90eXBlLmdldEJ5SWQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0aGlzLl9lbnRpdGllcy5nZXQodCl9O1RvLnByb3RvdHlwZS5nZXRPckNyZWF0ZUVudGl0eT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgWSgiaWQgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5fZW50aXRpZXMuZ2V0KHQpO3JldHVybiBtKGUpfHwoZDMuaWQ9dCxlPW5ldyByZihkMyksdGhpcy5hZGQoZSkpLGV9O1RvLnByb3RvdHlwZS5fb25FbnRpdHlEZWZpbml0aW9uQ2hhbmdlZD1mdW5jdGlvbih0KXtsZXQgZT10LmlkO3RoaXMuX2FkZGVkRW50aXRpZXMuY29udGFpbnMoZSl8fHRoaXMuX2NoYW5nZWRFbnRpdGllcy5zZXQoZSx0KSxZXyh0aGlzKX07bTM9VG99KTtmdW5jdGlvbiBPRih0KXt0aGlzLl9uYW1lPXQsdGhpcy5fY2xvY2s9dm9pZCAwLHRoaXMuX2NoYW5nZWQ9bmV3IFdlLHRoaXMuX2Vycm9yPW5ldyBXZSx0aGlzLl9pc0xvYWRpbmc9ITEsdGhpcy5fbG9hZGluZz1uZXcgV2UsdGhpcy5fZW50aXR5Q29sbGVjdGlvbj1uZXcgbTModGhpcyksdGhpcy5fZW50aXR5Q2x1c3Rlcj1uZXcgc3d9dmFyIFZfLEJGPVMoKCk9PnttdCgpO090KCk7eGkoKTskRygpO293KCk7ZjMoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPRi5wcm90b3R5cGUse25hbWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZSE9PXQmJih0aGlzLl9uYW1lPXQsdGhpcy5fY2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpKX19LGNsb2NrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xvY2t9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9jbG9jayE9PXQmJih0aGlzLl9jbG9jaz10LHRoaXMuX2NoYW5nZWQucmFpc2VFdmVudCh0aGlzKSl9fSxlbnRpdGllczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0eUNvbGxlY3Rpb259fSxpc0xvYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0xvYWRpbmd9LHNldDpmdW5jdGlvbih0KXtxRy5zZXRMb2FkaW5nKHRoaXMsdCl9fSxjaGFuZ2VkRXZlbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGFuZ2VkfX0sZXJyb3JFdmVudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Vycm9yfX0sbG9hZGluZ0V2ZW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbG9hZGluZ319LHNob3c6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLnNob3d9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLnNob3c9dH19LGNsdXN0ZXJpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdHlDbHVzdGVyfSxzZXQ6ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIG11c3QgYmUgZGVmaW5lZC4iKTt0aGlzLl9lbnRpdHlDbHVzdGVyPXR9fX0pO09GLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuITB9O1ZfPU9GfSk7ZnVuY3Rpb24genIodCxlKXtlPVooZSwwKTtsZXQgaTtpZihlPjApe2k9bmV3IEFycmF5KGUpO2ZvcihsZXQgbj0wO248ZTtuKyspaVtuXT1sfXRoaXMuX251bWJlck9mRGVyaXZhdGl2ZXM9ZSx0aGlzLl9wcm9wZXJ0eT1uZXcgZHAobCxpKSx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5fcmVmZXJlbmNlRnJhbWU9Wih0LCRpLkZJWEVEKSx0aGlzLl9wcm9wZXJ0eS5fZGVmaW5pdGlvbkNoYW5nZWQuYWRkRXZlbnRMaXN0ZW5lcihmdW5jdGlvbigpe3RoaXMuX2RlZmluaXRpb25DaGFuZ2VkLnJhaXNlRXZlbnQodGhpcyl9LHRoaXMpfXZhciBFMyxfMz1TKCgpPT57SHQoKTthZSgpO0Z0KCk7bXQoKTtPdCgpO3hpKCk7aWMoKTtJRigpO0hsKCk7RkYoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh6ci5wcm90b3R5cGUse2lzQ29uc3RhbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5pc0NvbnN0YW50fX0sZGVmaW5pdGlvbkNoYW5nZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZH19LHJlZmVyZW5jZUZyYW1lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVmZXJlbmNlRnJhbWV9fSxpbnRlcnBvbGF0aW9uRGVncmVlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydHkuaW50ZXJwb2xhdGlvbkRlZ3JlZX19LGludGVycG9sYXRpb25BbGdvcml0aG06e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5pbnRlcnBvbGF0aW9uQWxnb3JpdGhtfX0sbnVtYmVyT2ZEZXJpdmF0aXZlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX251bWJlck9mRGVyaXZhdGl2ZXN9fSxmb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGV9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9wcm9wZXJ0eS5mb3J3YXJkRXh0cmFwb2xhdGlvblR5cGU9dH19LGZvcndhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wZXJ0eS5mb3J3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkuZm9yd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbj10fX0sYmFja3dhcmRFeHRyYXBvbGF0aW9uVHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5LmJhY2t3YXJkRXh0cmFwb2xhdGlvblR5cGV9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9wcm9wZXJ0eS5iYWNrd2FyZEV4dHJhcG9sYXRpb25UeXBlPXR9fSxiYWNrd2FyZEV4dHJhcG9sYXRpb25EdXJhdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5LmJhY2t3YXJkRXh0cmFwb2xhdGlvbkR1cmF0aW9ufSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkuYmFja3dhcmRFeHRyYXBvbGF0aW9uRHVyYXRpb249dH19fSk7enIucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lKHQsJGkuRklYRUQsZSl9O3pyLnByb3RvdHlwZS5nZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWU9ZnVuY3Rpb24odCxlLGkpe2lmKHAuZGVmaW5lZCgidGltZSIsdCkscC5kZWZpbmVkKCJyZWZlcmVuY2VGcmFtZSIsZSksaT10aGlzLl9wcm9wZXJ0eS5nZXRWYWx1ZSh0LGkpLG0oaSkpcmV0dXJuIEFwLmNvbnZlcnRUb1JlZmVyZW5jZUZyYW1lKHQsaSx0aGlzLl9yZWZlcmVuY2VGcmFtZSxlLGkpfTt6ci5wcm90b3R5cGUuc2V0SW50ZXJwb2xhdGlvbk9wdGlvbnM9ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkuc2V0SW50ZXJwb2xhdGlvbk9wdGlvbnModCl9O3pyLnByb3RvdHlwZS5hZGRTYW1wbGU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXRoaXMuX251bWJlck9mRGVyaXZhdGl2ZXM7aWYobj4wJiYoIW0oaSl8fGkubGVuZ3RoIT09bikpdGhyb3cgbmV3IFkoImRlcml2YXRpdmVzIGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgZGVyaXZhdGl2ZXMuIik7dGhpcy5fcHJvcGVydHkuYWRkU2FtcGxlKHQsZSxpKX07enIucHJvdG90eXBlLmFkZFNhbXBsZXM9ZnVuY3Rpb24odCxlLGkpe3RoaXMuX3Byb3BlcnR5LmFkZFNhbXBsZXModCxlLGkpfTt6ci5wcm90b3R5cGUuYWRkU2FtcGxlc1BhY2tlZEFycmF5PWZ1bmN0aW9uKHQsZSl7dGhpcy5fcHJvcGVydHkuYWRkU2FtcGxlc1BhY2tlZEFycmF5KHQsZSl9O3pyLnByb3RvdHlwZS5yZW1vdmVTYW1wbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5LnJlbW92ZVNhbXBsZSh0KX07enIucHJvdG90eXBlLnJlbW92ZVNhbXBsZXM9ZnVuY3Rpb24odCl7dGhpcy5fcHJvcGVydHkucmVtb3ZlU2FtcGxlcyh0KX07enIucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fHQgaW5zdGFuY2VvZiB6ciYmU2kuZXF1YWxzKHRoaXMuX3Byb3BlcnR5LHQuX3Byb3BlcnR5KSYmdGhpcy5fcmVmZXJlbmNlRnJhbWU9PT10Ll9yZWZlcmVuY2VGcmFtZX07RTM9enJ9KTt2YXIgYWYsb3IsQ3IsY3QsWGw9UygoKT0+e2FmPTIsb3I9NCxDcj00LGN0PTR9KTt2YXIgUWEsU18sT18scWwsR0Y9UygoKT0+e1FhPW5ldyBJbnQzMkFycmF5KDIpLFNfPW5ldyBGbG9hdDMyQXJyYXkoUWEuYnVmZmVyKSxPXz1uZXcgRmxvYXQ2NEFycmF5KFFhLmJ1ZmZlcikscWw9bmV3IFVpbnQxNkFycmF5KG5ldyBVaW50OEFycmF5KFsxLDBdKS5idWZmZXIpWzBdPT09MX0pO3ZhciBBZixXRj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VVEY4X0JZVEVTPTFdPSJVVEY4X0JZVEVTIix0W3QuVVRGMTZfU1RSSU5HPTJdPSJVVEYxNl9TVFJJTkcifSkoQWZ8fChBZj17fSkpfSk7dmFyICRsLERGPVMoKCk9PntYbCgpO0dGKCk7V0YoKTskbD1jbGFzcyB0e2NvbnN0cnVjdG9yKGUpe3RoaXMuYnl0ZXNfPWUsdGhpcy5wb3NpdGlvbl89MCx0aGlzLnRleHRfZGVjb2Rlcl89bmV3IFRleHREZWNvZGVyfXN0YXRpYyBhbGxvY2F0ZShlKXtyZXR1cm4gbmV3IHQobmV3IFVpbnQ4QXJyYXkoZSkpfWNsZWFyKCl7dGhpcy5wb3NpdGlvbl89MH1ieXRlcygpe3JldHVybiB0aGlzLmJ5dGVzX31wb3NpdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uX31zZXRQb3NpdGlvbihlKXt0aGlzLnBvc2l0aW9uXz1lfWNhcGFjaXR5KCl7cmV0dXJuIHRoaXMuYnl0ZXNfLmxlbmd0aH1yZWFkSW50OChlKXtyZXR1cm4gdGhpcy5yZWFkVWludDgoZSk8PDI0Pj4yNH1yZWFkVWludDgoZSl7cmV0dXJuIHRoaXMuYnl0ZXNfW2VdfXJlYWRJbnQxNihlKXtyZXR1cm4gdGhpcy5yZWFkVWludDE2KGUpPDwxNj4+MTZ9cmVhZFVpbnQxNihlKXtyZXR1cm4gdGhpcy5ieXRlc19bZV18dGhpcy5ieXRlc19bZSsxXTw8OH1yZWFkSW50MzIoZSl7cmV0dXJuIHRoaXMuYnl0ZXNfW2VdfHRoaXMuYnl0ZXNfW2UrMV08PDh8dGhpcy5ieXRlc19bZSsyXTw8MTZ8dGhpcy5ieXRlc19bZSszXTw8MjR9cmVhZFVpbnQzMihlKXtyZXR1cm4gdGhpcy5yZWFkSW50MzIoZSk+Pj4wfXJlYWRJbnQ2NChlKXtyZXR1cm4gQmlnSW50LmFzSW50Tig2NCxCaWdJbnQodGhpcy5yZWFkVWludDMyKGUpKSsoQmlnSW50KHRoaXMucmVhZFVpbnQzMihlKzQpKTw8QmlnSW50KDMyKSkpfXJlYWRVaW50NjQoZSl7cmV0dXJuIEJpZ0ludC5hc1VpbnROKDY0LEJpZ0ludCh0aGlzLnJlYWRVaW50MzIoZSkpKyhCaWdJbnQodGhpcy5yZWFkVWludDMyKGUrNCkpPDxCaWdJbnQoMzIpKSl9cmVhZEZsb2F0MzIoZSl7cmV0dXJuIFFhWzBdPXRoaXMucmVhZEludDMyKGUpLFNfWzBdfXJlYWRGbG9hdDY0KGUpe3JldHVybiBRYVtxbD8wOjFdPXRoaXMucmVhZEludDMyKGUpLFFhW3FsPzE6MF09dGhpcy5yZWFkSW50MzIoZSs0KSxPX1swXX13cml0ZUludDgoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pfXdyaXRlVWludDgoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pfXdyaXRlSW50MTYoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pLHRoaXMuYnl0ZXNfW2UrMV09aT4+OH13cml0ZVVpbnQxNihlLGkpe3RoaXMuYnl0ZXNfW2VdPWksdGhpcy5ieXRlc19bZSsxXT1pPj44fXdyaXRlSW50MzIoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pLHRoaXMuYnl0ZXNfW2UrMV09aT4+OCx0aGlzLmJ5dGVzX1tlKzJdPWk+PjE2LHRoaXMuYnl0ZXNfW2UrM109aT4+MjR9d3JpdGVVaW50MzIoZSxpKXt0aGlzLmJ5dGVzX1tlXT1pLHRoaXMuYnl0ZXNfW2UrMV09aT4+OCx0aGlzLmJ5dGVzX1tlKzJdPWk+PjE2LHRoaXMuYnl0ZXNfW2UrM109aT4+MjR9d3JpdGVJbnQ2NChlLGkpe3RoaXMud3JpdGVJbnQzMihlLE51bWJlcihCaWdJbnQuYXNJbnROKDMyLGkpKSksdGhpcy53cml0ZUludDMyKGUrNCxOdW1iZXIoQmlnSW50LmFzSW50TigzMixpPj5CaWdJbnQoMzIpKSkpfXdyaXRlVWludDY0KGUsaSl7dGhpcy53cml0ZVVpbnQzMihlLE51bWJlcihCaWdJbnQuYXNVaW50TigzMixpKSkpLHRoaXMud3JpdGVVaW50MzIoZSs0LE51bWJlcihCaWdJbnQuYXNVaW50TigzMixpPj5CaWdJbnQoMzIpKSkpfXdyaXRlRmxvYXQzMihlLGkpe1NfWzBdPWksdGhpcy53cml0ZUludDMyKGUsUWFbMF0pfXdyaXRlRmxvYXQ2NChlLGkpe09fWzBdPWksdGhpcy53cml0ZUludDMyKGUsUWFbcWw/MDoxXSksdGhpcy53cml0ZUludDMyKGUrNCxRYVtxbD8xOjBdKX1nZXRCdWZmZXJJZGVudGlmaWVyKCl7aWYodGhpcy5ieXRlc18ubGVuZ3RoPHRoaXMucG9zaXRpb25fKzQrNCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBCeXRlQnVmZmVyIGlzIHRvbyBzaG9ydCB0byBjb250YWluIGFuIGlkZW50aWZpZXIuIik7bGV0IGU9IiI7Zm9yKGxldCBpPTA7aTw0O2krKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMucmVhZEludDgodGhpcy5wb3NpdGlvbl8rNCtpKSk7cmV0dXJuIGV9X19vZmZzZXQoZSxpKXtsZXQgbj1lLXRoaXMucmVhZEludDMyKGUpO3JldHVybiBpPHRoaXMucmVhZEludDE2KG4pP3RoaXMucmVhZEludDE2KG4raSk6MH1fX3VuaW9uKGUsaSl7cmV0dXJuIGUuYmJfcG9zPWkrdGhpcy5yZWFkSW50MzIoaSksZS5iYj10aGlzLGV9X19zdHJpbmcoZSxpKXtlKz10aGlzLnJlYWRJbnQzMihlKTtsZXQgbj10aGlzLnJlYWRJbnQzMihlKTtlKz00O2xldCBzPXRoaXMuYnl0ZXNfLnN1YmFycmF5KGUsZStuKTtyZXR1cm4gaT09PUFmLlVURjhfQllURVM/czp0aGlzLnRleHRfZGVjb2Rlcl8uZGVjb2RlKHMpfV9fdW5pb25fd2l0aF9zdHJpbmcoZSxpKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP3RoaXMuX19zdHJpbmcoaSk6dGhpcy5fX3VuaW9uKGUsaSl9X19pbmRpcmVjdChlKXtyZXR1cm4gZSt0aGlzLnJlYWRJbnQzMihlKX1fX3ZlY3RvcihlKXtyZXR1cm4gZSt0aGlzLnJlYWRJbnQzMihlKSs0fV9fdmVjdG9yX2xlbihlKXtyZXR1cm4gdGhpcy5yZWFkSW50MzIoZSt0aGlzLnJlYWRJbnQzMihlKSl9X19oYXNfaWRlbnRpZmllcihlKXtpZihlLmxlbmd0aCE9NCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBmaWxlIGlkZW50aWZpZXIgbXVzdCBiZSBsZW5ndGggIis0KTtmb3IobGV0IGk9MDtpPDQ7aSsrKWlmKGUuY2hhckNvZGVBdChpKSE9dGhpcy5yZWFkSW50OCh0aGlzLnBvc2l0aW9uKCkrNCtpKSlyZXR1cm4hMTtyZXR1cm4hMH1jcmVhdGVTY2FsYXJMaXN0KGUsaSl7bGV0IG49W107Zm9yKGxldCBzPTA7czxpOysrcyl7bGV0IG89ZShzKTtvIT09bnVsbCYmbi5wdXNoKG8pfXJldHVybiBufWNyZWF0ZU9iakxpc3QoZSxpKXtsZXQgbj1bXTtmb3IobGV0IHM9MDtzPGk7KytzKXtsZXQgbz1lKHMpO28hPT1udWxsJiZuLnB1c2goby51bnBhY2soKSl9cmV0dXJuIG59fX0pO3ZhciBtcCxSMz1TKCgpPT57REYoKTtYbCgpO21wPWNsYXNzIHR7Y29uc3RydWN0b3IoZSl7dGhpcy5taW5hbGlnbj0xLHRoaXMudnRhYmxlPW51bGwsdGhpcy52dGFibGVfaW5fdXNlPTAsdGhpcy5pc05lc3RlZD0hMSx0aGlzLm9iamVjdF9zdGFydD0wLHRoaXMudnRhYmxlcz1bXSx0aGlzLnZlY3Rvcl9udW1fZWxlbXM9MCx0aGlzLmZvcmNlX2RlZmF1bHRzPSExLHRoaXMuc3RyaW5nX21hcHM9bnVsbCx0aGlzLnRleHRfZW5jb2Rlcj1uZXcgVGV4dEVuY29kZXI7bGV0IGk7ZT9pPWU6aT0xMDI0LHRoaXMuYmI9JGwuYWxsb2NhdGUoaSksdGhpcy5zcGFjZT1pfWNsZWFyKCl7dGhpcy5iYi5jbGVhcigpLHRoaXMuc3BhY2U9dGhpcy5iYi5jYXBhY2l0eSgpLHRoaXMubWluYWxpZ249MSx0aGlzLnZ0YWJsZT1udWxsLHRoaXMudnRhYmxlX2luX3VzZT0wLHRoaXMuaXNOZXN0ZWQ9ITEsdGhpcy5vYmplY3Rfc3RhcnQ9MCx0aGlzLnZ0YWJsZXM9W10sdGhpcy52ZWN0b3JfbnVtX2VsZW1zPTAsdGhpcy5mb3JjZV9kZWZhdWx0cz0hMSx0aGlzLnN0cmluZ19tYXBzPW51bGx9Zm9yY2VEZWZhdWx0cyhlKXt0aGlzLmZvcmNlX2RlZmF1bHRzPWV9ZGF0YUJ1ZmZlcigpe3JldHVybiB0aGlzLmJifWFzVWludDhBcnJheSgpe3JldHVybiB0aGlzLmJiLmJ5dGVzKCkuc3ViYXJyYXkodGhpcy5iYi5wb3NpdGlvbigpLHRoaXMuYmIucG9zaXRpb24oKSt0aGlzLm9mZnNldCgpKX1wcmVwKGUsaSl7ZT50aGlzLm1pbmFsaWduJiYodGhpcy5taW5hbGlnbj1lKTtsZXQgbj1+KHRoaXMuYmIuY2FwYWNpdHkoKS10aGlzLnNwYWNlK2kpKzEmZS0xO2Zvcig7dGhpcy5zcGFjZTxuK2UraTspe2xldCBzPXRoaXMuYmIuY2FwYWNpdHkoKTt0aGlzLmJiPXQuZ3Jvd0J5dGVCdWZmZXIodGhpcy5iYiksdGhpcy5zcGFjZSs9dGhpcy5iYi5jYXBhY2l0eSgpLXN9dGhpcy5wYWQobil9cGFkKGUpe2ZvcihsZXQgaT0wO2k8ZTtpKyspdGhpcy5iYi53cml0ZUludDgoLS10aGlzLnNwYWNlLDApfXdyaXRlSW50OChlKXt0aGlzLmJiLndyaXRlSW50OCh0aGlzLnNwYWNlLT0xLGUpfXdyaXRlSW50MTYoZSl7dGhpcy5iYi53cml0ZUludDE2KHRoaXMuc3BhY2UtPTIsZSl9d3JpdGVJbnQzMihlKXt0aGlzLmJiLndyaXRlSW50MzIodGhpcy5zcGFjZS09NCxlKX13cml0ZUludDY0KGUpe3RoaXMuYmIud3JpdGVJbnQ2NCh0aGlzLnNwYWNlLT04LGUpfXdyaXRlRmxvYXQzMihlKXt0aGlzLmJiLndyaXRlRmxvYXQzMih0aGlzLnNwYWNlLT00LGUpfXdyaXRlRmxvYXQ2NChlKXt0aGlzLmJiLndyaXRlRmxvYXQ2NCh0aGlzLnNwYWNlLT04LGUpfWFkZEludDgoZSl7dGhpcy5wcmVwKDEsMCksdGhpcy53cml0ZUludDgoZSl9YWRkSW50MTYoZSl7dGhpcy5wcmVwKDIsMCksdGhpcy53cml0ZUludDE2KGUpfWFkZEludDMyKGUpe3RoaXMucHJlcCg0LDApLHRoaXMud3JpdGVJbnQzMihlKX1hZGRJbnQ2NChlKXt0aGlzLnByZXAoOCwwKSx0aGlzLndyaXRlSW50NjQoZSl9YWRkRmxvYXQzMihlKXt0aGlzLnByZXAoNCwwKSx0aGlzLndyaXRlRmxvYXQzMihlKX1hZGRGbG9hdDY0KGUpe3RoaXMucHJlcCg4LDApLHRoaXMud3JpdGVGbG9hdDY0KGUpfWFkZEZpZWxkSW50OChlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRJbnQ4KGkpLHRoaXMuc2xvdChlKSl9YWRkRmllbGRJbnQxNihlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRJbnQxNihpKSx0aGlzLnNsb3QoZSkpfWFkZEZpZWxkSW50MzIoZSxpLG4peyh0aGlzLmZvcmNlX2RlZmF1bHRzfHxpIT1uKSYmKHRoaXMuYWRkSW50MzIoaSksdGhpcy5zbG90KGUpKX1hZGRGaWVsZEludDY0KGUsaSxuKXsodGhpcy5mb3JjZV9kZWZhdWx0c3x8aSE9PW4pJiYodGhpcy5hZGRJbnQ2NChpKSx0aGlzLnNsb3QoZSkpfWFkZEZpZWxkRmxvYXQzMihlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRGbG9hdDMyKGkpLHRoaXMuc2xvdChlKSl9YWRkRmllbGRGbG9hdDY0KGUsaSxuKXsodGhpcy5mb3JjZV9kZWZhdWx0c3x8aSE9bikmJih0aGlzLmFkZEZsb2F0NjQoaSksdGhpcy5zbG90KGUpKX1hZGRGaWVsZE9mZnNldChlLGksbil7KHRoaXMuZm9yY2VfZGVmYXVsdHN8fGkhPW4pJiYodGhpcy5hZGRPZmZzZXQoaSksdGhpcy5zbG90KGUpKX1hZGRGaWVsZFN0cnVjdChlLGksbil7aSE9biYmKHRoaXMubmVzdGVkKGkpLHRoaXMuc2xvdChlKSl9bmVzdGVkKGUpe2lmKGUhPXRoaXMub2Zmc2V0KCkpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogc3RydWN0IG11c3QgYmUgc2VyaWFsaXplZCBpbmxpbmUuIil9bm90TmVzdGVkKCl7aWYodGhpcy5pc05lc3RlZCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBvYmplY3Qgc2VyaWFsaXphdGlvbiBtdXN0IG5vdCBiZSBuZXN0ZWQuIil9c2xvdChlKXt0aGlzLnZ0YWJsZSE9PW51bGwmJih0aGlzLnZ0YWJsZVtlXT10aGlzLm9mZnNldCgpKX1vZmZzZXQoKXtyZXR1cm4gdGhpcy5iYi5jYXBhY2l0eSgpLXRoaXMuc3BhY2V9c3RhdGljIGdyb3dCeXRlQnVmZmVyKGUpe2xldCBpPWUuY2FwYWNpdHkoKTtpZihpJjMyMjEyMjU0NzIpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogY2Fubm90IGdyb3cgYnVmZmVyIGJleW9uZCAyIGdpZ2FieXRlcy4iKTtsZXQgbj1pPDwxLHM9JGwuYWxsb2NhdGUobik7cmV0dXJuIHMuc2V0UG9zaXRpb24obi1pKSxzLmJ5dGVzKCkuc2V0KGUuYnl0ZXMoKSxuLWkpLHN9YWRkT2Zmc2V0KGUpe3RoaXMucHJlcCg0LDApLHRoaXMud3JpdGVJbnQzMih0aGlzLm9mZnNldCgpLWUrNCl9c3RhcnRPYmplY3QoZSl7dGhpcy5ub3ROZXN0ZWQoKSx0aGlzLnZ0YWJsZT09bnVsbCYmKHRoaXMudnRhYmxlPVtdKSx0aGlzLnZ0YWJsZV9pbl91c2U9ZTtmb3IobGV0IGk9MDtpPGU7aSsrKXRoaXMudnRhYmxlW2ldPTA7dGhpcy5pc05lc3RlZD0hMCx0aGlzLm9iamVjdF9zdGFydD10aGlzLm9mZnNldCgpfWVuZE9iamVjdCgpe2lmKHRoaXMudnRhYmxlPT1udWxsfHwhdGhpcy5pc05lc3RlZCl0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBlbmRPYmplY3QgY2FsbGVkIHdpdGhvdXQgc3RhcnRPYmplY3QiKTt0aGlzLmFkZEludDMyKDApO2xldCBlPXRoaXMub2Zmc2V0KCksaT10aGlzLnZ0YWJsZV9pbl91c2UtMTtmb3IoO2k+PTAmJnRoaXMudnRhYmxlW2ldPT0wO2ktLSk7bGV0IG49aSsxO2Zvcig7aT49MDtpLS0pdGhpcy5hZGRJbnQxNih0aGlzLnZ0YWJsZVtpXSE9MD9lLXRoaXMudnRhYmxlW2ldOjApO2xldCBzPTI7dGhpcy5hZGRJbnQxNihlLXRoaXMub2JqZWN0X3N0YXJ0KTtsZXQgbz0obitzKSoyO3RoaXMuYWRkSW50MTYobyk7bGV0IHI9MCxhPXRoaXMuc3BhY2U7dDpmb3IoaT0wO2k8dGhpcy52dGFibGVzLmxlbmd0aDtpKyspe2xldCBoPXRoaXMuYmIuY2FwYWNpdHkoKS10aGlzLnZ0YWJsZXNbaV07aWYobz09dGhpcy5iYi5yZWFkSW50MTYoaCkpe2ZvcihsZXQgQT0yO0E8bztBKz0yKWlmKHRoaXMuYmIucmVhZEludDE2KGErQSkhPXRoaXMuYmIucmVhZEludDE2KGgrQSkpY29udGludWUgdDtyPXRoaXMudnRhYmxlc1tpXTticmVha319cmV0dXJuIHI/KHRoaXMuc3BhY2U9dGhpcy5iYi5jYXBhY2l0eSgpLWUsdGhpcy5iYi53cml0ZUludDMyKHRoaXMuc3BhY2Usci1lKSk6KHRoaXMudnRhYmxlcy5wdXNoKHRoaXMub2Zmc2V0KCkpLHRoaXMuYmIud3JpdGVJbnQzMih0aGlzLmJiLmNhcGFjaXR5KCktZSx0aGlzLm9mZnNldCgpLWUpKSx0aGlzLmlzTmVzdGVkPSExLGV9ZmluaXNoKGUsaSxuKXtsZXQgcz1uPzQ6MDtpZihpKXtsZXQgbz1pO2lmKHRoaXMucHJlcCh0aGlzLm1pbmFsaWduLDgrcyksby5sZW5ndGghPTQpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogZmlsZSBpZGVudGlmaWVyIG11c3QgYmUgbGVuZ3RoICIrNCk7Zm9yKGxldCByPTM7cj49MDtyLS0pdGhpcy53cml0ZUludDgoby5jaGFyQ29kZUF0KHIpKX10aGlzLnByZXAodGhpcy5taW5hbGlnbiw0K3MpLHRoaXMuYWRkT2Zmc2V0KGUpLHMmJnRoaXMuYWRkSW50MzIodGhpcy5iYi5jYXBhY2l0eSgpLXRoaXMuc3BhY2UpLHRoaXMuYmIuc2V0UG9zaXRpb24odGhpcy5zcGFjZSl9ZmluaXNoU2l6ZVByZWZpeGVkKGUsaSl7dGhpcy5maW5pc2goZSxpLCEwKX1yZXF1aXJlZEZpZWxkKGUsaSl7bGV0IG49dGhpcy5iYi5jYXBhY2l0eSgpLWUscz1uLXRoaXMuYmIucmVhZEludDMyKG4pO2lmKCEoaTx0aGlzLmJiLnJlYWRJbnQxNihzKSYmdGhpcy5iYi5yZWFkSW50MTYocytpKSE9MCkpdGhyb3cgbmV3IEVycm9yKCJGbGF0QnVmZmVyczogZmllbGQgIitpKyIgbXVzdCBiZSBzZXQiKX1zdGFydFZlY3RvcihlLGksbil7dGhpcy5ub3ROZXN0ZWQoKSx0aGlzLnZlY3Rvcl9udW1fZWxlbXM9aSx0aGlzLnByZXAoNCxlKmkpLHRoaXMucHJlcChuLGUqaSl9ZW5kVmVjdG9yKCl7cmV0dXJuIHRoaXMud3JpdGVJbnQzMih0aGlzLnZlY3Rvcl9udW1fZWxlbXMpLHRoaXMub2Zmc2V0KCl9Y3JlYXRlU2hhcmVkU3RyaW5nKGUpe2lmKCFlKXJldHVybiAwO2lmKHRoaXMuc3RyaW5nX21hcHN8fCh0aGlzLnN0cmluZ19tYXBzPW5ldyBNYXApLHRoaXMuc3RyaW5nX21hcHMuaGFzKGUpKXJldHVybiB0aGlzLnN0cmluZ19tYXBzLmdldChlKTtsZXQgaT10aGlzLmNyZWF0ZVN0cmluZyhlKTtyZXR1cm4gdGhpcy5zdHJpbmdfbWFwcy5zZXQoZSxpKSxpfWNyZWF0ZVN0cmluZyhlKXtpZihlPT1udWxsKXJldHVybiAwO2xldCBpO2UgaW5zdGFuY2VvZiBVaW50OEFycmF5P2k9ZTppPXRoaXMudGV4dF9lbmNvZGVyLmVuY29kZShlKSx0aGlzLmFkZEludDgoMCksdGhpcy5zdGFydFZlY3RvcigxLGkubGVuZ3RoLDEpLHRoaXMuYmIuc2V0UG9zaXRpb24odGhpcy5zcGFjZS09aS5sZW5ndGgpO2ZvcihsZXQgbj0wLHM9dGhpcy5zcGFjZSxvPXRoaXMuYmIuYnl0ZXMoKTtuPGkubGVuZ3RoO24rKylvW3MrK109aVtuXTtyZXR1cm4gdGhpcy5lbmRWZWN0b3IoKX1jcmVhdGVPYmplY3RPZmZzZXQoZSl7cmV0dXJuIGU9PT1udWxsPzA6dHlwZW9mIGU9PSJzdHJpbmciP3RoaXMuY3JlYXRlU3RyaW5nKGUpOmUucGFjayh0aGlzKX1jcmVhdGVPYmplY3RPZmZzZXRMaXN0KGUpe2xldCBpPVtdO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtsZXQgcz1lW25dO2lmKHMhPT1udWxsKWkucHVzaCh0aGlzLmNyZWF0ZU9iamVjdE9mZnNldChzKSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkZsYXRCdWZmZXJzOiBBcmd1bWVudCBmb3IgY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCBjYW5ub3QgY29udGFpbiBudWxsLiIpfXJldHVybiBpfWNyZWF0ZVN0cnVjdE9mZnNldExpc3QoZSxpKXtyZXR1cm4gaSh0aGlzLGUubGVuZ3RoKSx0aGlzLmNyZWF0ZU9iamVjdE9mZnNldExpc3QoZS5zbGljZSgpLnJldmVyc2UoKSksdGhpcy5lbmRWZWN0b3IoKX19fSk7dmFyIEV0PXt9O0hlKEV0LHtCdWlsZGVyOigpPT5tcCxCeXRlQnVmZmVyOigpPT4kbCxFbmNvZGluZzooKT0+QWYsRklMRV9JREVOVElGSUVSX0xFTkdUSDooKT0+Q3IsU0laRU9GX0lOVDooKT0+b3IsU0laRU9GX1NIT1JUOigpPT5hZixTSVpFX1BSRUZJWF9MRU5HVEg6KCk9PmN0LGZsb2F0MzI6KCk9PlNfLGZsb2F0NjQ6KCk9Pk9fLGludDMyOigpPT5RYSxpc0xpdHRsZUVuZGlhbjooKT0+cWx9KTt2YXIgX3Q9UygoKT0+e1hsKCk7WGwoKTtYbCgpO1hsKCk7R0YoKTtXRigpO1IzKCk7REYoKX0pO3ZhciBZYXQsVUYsWjM9UygoKT0+e190KCk7KHtCeXRlQnVmZmVyOllhdH09RXQpLFVGPSh0LGUsaSk9Pnt0PW5ldyBVaW50OEFycmF5KHQpO2xldCBuPW5ldyBpW2Ake2V9Q09MTEVDVElPTlRgXTtyZXR1cm4gaVtgJHtlfUNPTExFQ1RJT05gXVtgZ2V0Um9vdEFzJHtlfUNPTExFQ1RJT05gXShuZXcgWWF0KHQpKS51bnBhY2tUbyhuKSxufX0pO3ZhciBNRj1TKCgpPT57X3QoKX0pO3ZhciBJMz1TKCgpPT57X3QoKTtNRigpfSk7dmFyIHAzPVMoKCk9PntNRigpO0kzKCl9KTt2YXIga2EsQl8sZnA9UygoKT0+e190KCk7a2E9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNGcmVxdWVuY3lSYW5nZShlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNGcmVxdWVuY3lSYW5nZShlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1MT1dFUigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVQUEVSKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9c3RhdGljIHN0YXJ0RnJlcXVlbmN5UmFuZ2UoZSl7ZS5zdGFydE9iamVjdCgyKX1zdGF0aWMgYWRkTG93ZXIoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgwLGksMCl9c3RhdGljIGFkZFVwcGVyKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMSxpLDApfXN0YXRpYyBlbmRGcmVxdWVuY3lSYW5nZShlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlRnJlcXVlbmN5UmFuZ2UoZSxpLG4pe3JldHVybiB0LnN0YXJ0RnJlcXVlbmN5UmFuZ2UoZSksdC5hZGRMb3dlcihlLGkpLHQuYWRkVXBwZXIoZSxuKSx0LmVuZEZyZXF1ZW5jeVJhbmdlKGUpfXVucGFjaygpe3JldHVybiBuZXcgQl8odGhpcy5MT1dFUigpLHRoaXMuVVBQRVIoKSl9dW5wYWNrVG8oZSl7ZS5MT1dFUj10aGlzLkxPV0VSKCksZS5VUFBFUj10aGlzLlVQUEVSKCl9fSxCXz1jbGFzc3tjb25zdHJ1Y3RvcihlPTAsaT0wKXt0aGlzLkxPV0VSPWUsdGhpcy5VUFBFUj1pfXBhY2soZSl7cmV0dXJuIGthLmNyZWF0ZUZyZXF1ZW5jeVJhbmdlKGUsdGhpcy5MT1dFUix0aGlzLlVQUEVSKX19fSk7dmFyIEZBLEdfLFFGPVMoKCk9PntfdCgpO2ZwKCk7RkE9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNCYW5kKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc0JhbmQoZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9TkFNRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUZSRVFVRU5DWV9SQU5HRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYpO3JldHVybiBpPyhlfHxuZXcga2EpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYl9wb3MraSksdGhpcy5iYik6bnVsbH1zdGF0aWMgc3RhcnRCYW5kKGUpe2Uuc3RhcnRPYmplY3QoMil9c3RhdGljIGFkZE5hbWUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDAsaSwwKX1zdGF0aWMgYWRkRnJlcXVlbmN5UmFuZ2UoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDEsaSwwKX1zdGF0aWMgZW5kQmFuZChlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX11bnBhY2soKXtyZXR1cm4gbmV3IEdfKHRoaXMuTkFNRSgpLHRoaXMuRlJFUVVFTkNZX1JBTkdFKCkhPT1udWxsP3RoaXMuRlJFUVVFTkNZX1JBTkdFKCkudW5wYWNrKCk6bnVsbCl9dW5wYWNrVG8oZSl7ZS5OQU1FPXRoaXMuTkFNRSgpLGUuRlJFUVVFTkNZX1JBTkdFPXRoaXMuRlJFUVVFTkNZX1JBTkdFKCkhPT1udWxsP3RoaXMuRlJFUVVFTkNZX1JBTkdFKCkudW5wYWNrKCk6bnVsbH19LEdfPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCxpPW51bGwpe3RoaXMuTkFNRT1lLHRoaXMuRlJFUVVFTkNZX1JBTkdFPWl9cGFjayhlKXtsZXQgaT10aGlzLk5BTUUhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuTkFNRSk6MCxuPXRoaXMuRlJFUVVFTkNZX1JBTkdFIT09bnVsbD90aGlzLkZSRVFVRU5DWV9SQU5HRS5wYWNrKGUpOjA7cmV0dXJuIEZBLnN0YXJ0QmFuZChlKSxGQS5hZGROYW1lKGUsaSksRkEuYWRkRnJlcXVlbmN5UmFuZ2UoZSxuKSxGQS5lbmRCYW5kKGUpfX19KTt2YXIgTmMsa0Y9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuUkVBTD0wXT0iUkVBTCIsdFt0LlNJTVVMQVRFRD0xXT0iU0lNVUxBVEVEIix0W3QuU1lOVEhFVElDPTJdPSJTWU5USEVUSUMifSkoTmN8fChOYz17fSkpfSk7dmFyIEZjLExGPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlVOS05PV049MF09IlVOS05PV04iLHRbdC5PUFRJQ0FMPTFdPSJPUFRJQ0FMIix0W3QuSU5GUkFSRURfU0VOU09SPTJdPSJJTkZSQVJFRF9TRU5TT1IiLHRbdC5VTFRSQVZJT0xFVF9TRU5TT1I9M109IlVMVFJBVklPTEVUX1NFTlNPUiIsdFt0LlhfUkFZX1NFTlNPUj00XT0iWF9SQVlfU0VOU09SIix0W3QuR0FNTUFfUkFZX1NFTlNPUj01XT0iR0FNTUFfUkFZX1NFTlNPUiIsdFt0LlJBREFSPTZdPSJSQURBUiIsdFt0LlBIQVNFRF9BUlJBWV9SQURBUj03XT0iUEhBU0VEX0FSUkFZX1JBREFSIix0W3QuU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSPThdPSJTWU5USEVUSUNfQVBFUlRVUkVfUkFEQVIiLHRbdC5CSVNUQVRJQ19SQURJT19URUxFU0NPUEU9OV09IkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRSIsdFt0LlJBRElPX1RFTEVTQ09QRT0xMF09IlJBRElPX1RFTEVTQ09QRSIsdFt0LkFUTU9TUEhFUklDX1NFTlNPUj0xMV09IkFUTU9TUEhFUklDX1NFTlNPUiIsdFt0LlNQQUNFX1dFQVRIRVJfU0VOU09SPTEyXT0iU1BBQ0VfV0VBVEhFUl9TRU5TT1IiLHRbdC5FTlZJUk9OTUVOVEFMX1NFTlNPUj0xM109IkVOVklST05NRU5UQUxfU0VOU09SIix0W3QuU0VJU01JQ19TRU5TT1I9MTRdPSJTRUlTTUlDX1NFTlNPUiIsdFt0LkdSQVZJTUVUUklDX1NFTlNPUj0xNV09IkdSQVZJTUVUUklDX1NFTlNPUiIsdFt0Lk1BR05FVElDX1NFTlNPUj0xNl09Ik1BR05FVElDX1NFTlNPUiIsdFt0LkVMRUNUUk9NQUdORVRJQ19TRU5TT1I9MTddPSJFTEVDVFJPTUFHTkVUSUNfU0VOU09SIix0W3QuVEhFUk1BTF9TRU5TT1I9MThdPSJUSEVSTUFMX1NFTlNPUiIsdFt0LkNIRU1JQ0FMX1NFTlNPUj0xOV09IkNIRU1JQ0FMX1NFTlNPUiIsdFt0LkJJT0xPR0lDQUxfU0VOU09SPTIwXT0iQklPTE9HSUNBTF9TRU5TT1IiLHRbdC5SQURJQVRJT05fU0VOU09SPTIxXT0iUkFESUFUSU9OX1NFTlNPUiIsdFt0LlBBUlRJQ0xFX0RFVEVDVE9SPTIyXT0iUEFSVElDTEVfREVURUNUT1IiLHRbdC5MSURBUj0yM109IkxJREFSIix0W3QuU09OQVI9MjRdPSJTT05BUiIsdFt0LlRFTEVTQ09QRT0yNV09IlRFTEVTQ09QRSIsdFt0LlNQRUNUUk9TQ09QSUNfU0VOU09SPTI2XT0iU1BFQ1RST1NDT1BJQ19TRU5TT1IiLHRbdC5QSE9UT01FVFJJQ19TRU5TT1I9MjddPSJQSE9UT01FVFJJQ19TRU5TT1IiLHRbdC5QT0xBUklNRVRSSUNfU0VOU09SPTI4XT0iUE9MQVJJTUVUUklDX1NFTlNPUiIsdFt0LklOVEVSRkVST01FVFJJQ19TRU5TT1I9MjldPSJJTlRFUkZFUk9NRVRSSUNfU0VOU09SIix0W3QuTVVMVElTUEVDVFJBTF9TRU5TT1I9MzBdPSJNVUxUSVNQRUNUUkFMX1NFTlNPUiIsdFt0LkhZUEVSU1BFQ1RSQUxfU0VOU09SPTMxXT0iSFlQRVJTUEVDVFJBTF9TRU5TT1IiLHRbdC5HUFNfUkVDRUlWRVI9MzJdPSJHUFNfUkVDRUlWRVIiLHRbdC5SQURJT19DT01NVU5JQ0FUSU9OUz0zM109IlJBRElPX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfQ09NTVVOSUNBVElPTlM9MzRdPSJMQVNFUl9DT01NVU5JQ0FUSU9OUyIsdFt0LlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUz0zNV09IlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0lOU1RSVU1FTlQ9MzZdPSJMQVNFUl9JTlNUUlVNRU5UIix0W3QuUkZfQU5BTFlaRVI9MzddPSJSRl9BTkFMWVpFUiIsdFt0LklPTk9TUEhFUklDX1NFTlNPUj0zOF09IklPTk9TUEhFUklDX1NFTlNPUiIsdFt0LkxBU0VSX0lNQUdJTkc9MzldPSJMQVNFUl9JTUFHSU5HIix0W3QuT1BUSUNBTF9URUxFU0NPUEU9NDBdPSJPUFRJQ0FMX1RFTEVTQ09QRSIsdFt0LkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMPTQxXT0iSElHSF9SRVNPTFVUSU9OX09QVElDQUwiLHRbdC5SQURJTz00Ml09IlJBRElPIix0W3QuTUlDUk9XQVZFX1RSQU5TTUlUVEVSPTQzXT0iTUlDUk9XQVZFX1RSQU5TTUlUVEVSIix0W3QuUkZfTU9OSVRPUj00NF09IlJGX01PTklUT1IiLHRbdC5IRl9SQURJT19DT01NVU5JQ0FUSU9OUz00NV09IkhGX1JBRElPX0NPTU1VTklDQVRJT05TIn0pKEZjfHwoRmM9e30pKX0pO3ZhciBiYyx5Rj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5saW5lYXI9MF09ImxpbmVhciIsdFt0LmNpcmN1bGFyPTFdPSJjaXJjdWxhciIsdFt0LmVsbGlwdGljYWw9Ml09ImVsbGlwdGljYWwiLHRbdC51bnBvbGFyaXplZD0zXT0idW5wb2xhcml6ZWQifSkoYmN8fChiYz17fSkpfSk7dmFyIFljLHdGPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LnZlcnRpY2FsPTBdPSJ2ZXJ0aWNhbCIsdFt0Lmhvcml6b250YWw9MV09Imhvcml6b250YWwiLHRbdC5sZWZ0SGFuZENpcmN1bGFyPTJdPSJsZWZ0SGFuZENpcmN1bGFyIix0W3QucmlnaHRIYW5kQ2lyY3VsYXI9M109InJpZ2h0SGFuZENpcmN1bGFyIn0pKFljfHwoWWM9e30pKX0pO3ZhciB0ZCxXXyx4Rj1TKCgpPT57X3QoKTt0ZD1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5iYj1udWxsLHRoaXMuYmJfcG9zPTB9X19pbml0KGUsaSl7cmV0dXJuIHRoaXMuYmJfcG9zPWUsdGhpcy5iYj1pLHRoaXN9c3RhdGljIGdldFJvb3RBc1N0b2tlc1BhcmFtZXRlcnMoZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzU3Rva2VzUGFyYW1ldGVycyhlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1JKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9USgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1WKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydFN0b2tlc1BhcmFtZXRlcnMoZSl7ZS5zdGFydE9iamVjdCg0KX1zdGF0aWMgYWRkSShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDAsaSwwKX1zdGF0aWMgYWRkUShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEsaSwwKX1zdGF0aWMgYWRkVShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIsaSwwKX1zdGF0aWMgYWRkVihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDMsaSwwKX1zdGF0aWMgZW5kU3Rva2VzUGFyYW1ldGVycyhlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlU3Rva2VzUGFyYW1ldGVycyhlLGksbixzLG8pe3JldHVybiB0LnN0YXJ0U3Rva2VzUGFyYW1ldGVycyhlKSx0LmFkZEkoZSxpKSx0LmFkZFEoZSxuKSx0LmFkZFUoZSxzKSx0LmFkZFYoZSxvKSx0LmVuZFN0b2tlc1BhcmFtZXRlcnMoZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBXXyh0aGlzLkkoKSx0aGlzLlEoKSx0aGlzLlUoKSx0aGlzLlYoKSl9dW5wYWNrVG8oZSl7ZS5JPXRoaXMuSSgpLGUuUT10aGlzLlEoKSxlLlU9dGhpcy5VKCksZS5WPXRoaXMuVigpfX0sV189Y2xhc3N7Y29uc3RydWN0b3IoZT0wLGk9MCxuPTAscz0wKXt0aGlzLkk9ZSx0aGlzLlE9aSx0aGlzLlU9bix0aGlzLlY9c31wYWNrKGUpe3JldHVybiB0ZC5jcmVhdGVTdG9rZXNQYXJhbWV0ZXJzKGUsdGhpcy5JLHRoaXMuUSx0aGlzLlUsdGhpcy5WKX19fSk7dmFyIFppLERfLEVwPVMoKCk9PntfdCgpO1FGKCk7a0YoKTtMRigpO2ZwKCk7eUYoKTt3RigpO3hGKCk7Wmk9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNJRE0oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzSURNKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRJRE0iKX1JRChlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU5BTUUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw2KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1EQVRBX01PREUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDgpO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6TmMuUkVBTH1VUExJTksoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMCk7cmV0dXJuIGk/KGV8fG5ldyBrYSkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiX3BvcytpKSx0aGlzLmJiKTpudWxsfURPV05MSU5LKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTIpO3JldHVybiBpPyhlfHxuZXcga2EpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYl9wb3MraSksdGhpcy5iYik6bnVsbH1CRUFDT04oZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxNCk7cmV0dXJuIGk/KGV8fG5ldyBrYSkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiX3BvcytpKSx0aGlzLmJiKTpudWxsfUJBTkQoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDE2KTtyZXR1cm4gbj8oaXx8bmV3IEZBKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MrbikrZSo0KSx0aGlzLmJiKTpudWxsfWJhbmRMZW5ndGgoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDE2KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfVBPTEFSSVpBVElPTl9UWVBFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpiYy5saW5lYXJ9U0lNUExFX1BPTEFSSVpBVElPTigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMjApO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6WWMudmVydGljYWx9U1RPS0VTX1BBUkFNRVRFUlMoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMik7cmV0dXJuIGk/KGV8fG5ldyB0ZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiX3BvcytpKSx0aGlzLmJiKTpudWxsfVBPV0VSX1JFUVVJUkVEKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVBPV0VSX1RZUEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNik7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9VFJBTlNNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDI4KTtyZXR1cm4gZT8hIXRoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6ITF9UkVDRUlWRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzApO3JldHVybiBlPyEhdGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTohMX1TRU5TT1JfVFlQRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzIpO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6RmMuVU5LTk9XTn1TT1VSQ0UoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9TEFTVF9PQl9USU1FKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzYpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUxPV0VSX0xFRlRfRUxFVkFUSU9OX0xJTUlUKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVQUEVSX0xFRlRfQVpJTVVUSF9MSU1JVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1MT1dFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TE9XRVJfTEVGVF9BWklNVVRIX0xJTUlUKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0NCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVQUEVSX1JJR0hUX0VMRVZBVElPTl9MSU1JVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1VUFBFUl9SSUdIVF9BWklNVVRIX0xJTUlUKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0OCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDUwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9VVBQRVJfTEVGVF9FTEVWQVRJT05fTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDUyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9UklHSFRfR0VPX0JFTFRfTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TEVGVF9HRU9fQkVMVF9MSU1JVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNTYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NQUdOSVRVREVfTElNSVQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9VEFTS0FCTEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYwKTtyZXR1cm4gZT8hIXRoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6ITF9c3RhdGljIHN0YXJ0SURNKGUpe2Uuc3RhcnRPYmplY3QoMjkpfXN0YXRpYyBhZGRJZChlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBhZGROYW1lKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxLGksMCl9c3RhdGljIGFkZERhdGFNb2RlKGUsaSl7ZS5hZGRGaWVsZEludDgoMixpLE5jLlJFQUwpfXN0YXRpYyBhZGRVcGxpbmsoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDMsaSwwKX1zdGF0aWMgYWRkRG93bmxpbmsoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDQsaSwwKX1zdGF0aWMgYWRkQmVhY29uKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg1LGksMCl9c3RhdGljIGFkZEJhbmQoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDYsaSwwKX1zdGF0aWMgY3JlYXRlQmFuZFZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRCYW5kVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGksNCl9c3RhdGljIGFkZFBvbGFyaXphdGlvblR5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCg3LGksYmMubGluZWFyKX1zdGF0aWMgYWRkU2ltcGxlUG9sYXJpemF0aW9uKGUsaSl7ZS5hZGRGaWVsZEludDgoOCxpLFljLnZlcnRpY2FsKX1zdGF0aWMgYWRkU3Rva2VzUGFyYW1ldGVycyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoOSxpLDApfXN0YXRpYyBhZGRQb3dlclJlcXVpcmVkKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTAsaSwwKX1zdGF0aWMgYWRkUG93ZXJUeXBlKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxMSxpLDApfXN0YXRpYyBhZGRUcmFuc21pdChlLGkpe2UuYWRkRmllbGRJbnQ4KDEyLCtpLDApfXN0YXRpYyBhZGRSZWNlaXZlKGUsaSl7ZS5hZGRGaWVsZEludDgoMTMsK2ksMCl9c3RhdGljIGFkZFNlbnNvclR5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCgxNCxpLEZjLlVOS05PV04pfXN0YXRpYyBhZGRTb3VyY2UoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDE1LGksMCl9c3RhdGljIGFkZExhc3RPYlRpbWUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDE2LGksMCl9c3RhdGljIGFkZExvd2VyTGVmdEVsZXZhdGlvbkxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTcsaSwwKX1zdGF0aWMgYWRkVXBwZXJMZWZ0QXppbXV0aExpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTgsaSwwKX1zdGF0aWMgYWRkTG93ZXJSaWdodEVsZXZhdGlvbkxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTksaSwwKX1zdGF0aWMgYWRkTG93ZXJMZWZ0QXppbXV0aExpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjAsaSwwKX1zdGF0aWMgYWRkVXBwZXJSaWdodEVsZXZhdGlvbkxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjEsaSwwKX1zdGF0aWMgYWRkVXBwZXJSaWdodEF6aW11dGhMaW1pdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIyLGksMCl9c3RhdGljIGFkZExvd2VyUmlnaHRBemltdXRoTGltaXQoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgyMyxpLDApfXN0YXRpYyBhZGRVcHBlckxlZnRFbGV2YXRpb25MaW1pdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDI0LGksMCl9c3RhdGljIGFkZFJpZ2h0R2VvQmVsdExpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjUsaSwwKX1zdGF0aWMgYWRkTGVmdEdlb0JlbHRMaW1pdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDI2LGksMCl9c3RhdGljIGFkZE1hZ25pdHVkZUxpbWl0KGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjcsaSwwKX1zdGF0aWMgYWRkVGFza2FibGUoZSxpKXtlLmFkZEZpZWxkSW50OCgyOCwraSwwKX1zdGF0aWMgZW5kSURNKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hJRE1CdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkSURNIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZElETUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRJRE0iLCEwKX11bnBhY2soKXtyZXR1cm4gbmV3IERfKHRoaXMuSUQoKSx0aGlzLk5BTUUoKSx0aGlzLkRBVEFfTU9ERSgpLHRoaXMuVVBMSU5LKCkhPT1udWxsP3RoaXMuVVBMSU5LKCkudW5wYWNrKCk6bnVsbCx0aGlzLkRPV05MSU5LKCkhPT1udWxsP3RoaXMuRE9XTkxJTksoKS51bnBhY2soKTpudWxsLHRoaXMuQkVBQ09OKCkhPT1udWxsP3RoaXMuQkVBQ09OKCkudW5wYWNrKCk6bnVsbCx0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5CQU5ELmJpbmQodGhpcyksdGhpcy5iYW5kTGVuZ3RoKCkpLHRoaXMuUE9MQVJJWkFUSU9OX1RZUEUoKSx0aGlzLlNJTVBMRV9QT0xBUklaQVRJT04oKSx0aGlzLlNUT0tFU19QQVJBTUVURVJTKCkhPT1udWxsP3RoaXMuU1RPS0VTX1BBUkFNRVRFUlMoKS51bnBhY2soKTpudWxsLHRoaXMuUE9XRVJfUkVRVUlSRUQoKSx0aGlzLlBPV0VSX1RZUEUoKSx0aGlzLlRSQU5TTUlUKCksdGhpcy5SRUNFSVZFKCksdGhpcy5TRU5TT1JfVFlQRSgpLHRoaXMuU09VUkNFKCksdGhpcy5MQVNUX09CX1RJTUUoKSx0aGlzLkxPV0VSX0xFRlRfRUxFVkFUSU9OX0xJTUlUKCksdGhpcy5VUFBFUl9MRUZUX0FaSU1VVEhfTElNSVQoKSx0aGlzLkxPV0VSX1JJR0hUX0VMRVZBVElPTl9MSU1JVCgpLHRoaXMuTE9XRVJfTEVGVF9BWklNVVRIX0xJTUlUKCksdGhpcy5VUFBFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQoKSx0aGlzLlVQUEVSX1JJR0hUX0FaSU1VVEhfTElNSVQoKSx0aGlzLkxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQoKSx0aGlzLlVQUEVSX0xFRlRfRUxFVkFUSU9OX0xJTUlUKCksdGhpcy5SSUdIVF9HRU9fQkVMVF9MSU1JVCgpLHRoaXMuTEVGVF9HRU9fQkVMVF9MSU1JVCgpLHRoaXMuTUFHTklUVURFX0xJTUlUKCksdGhpcy5UQVNLQUJMRSgpKX11bnBhY2tUbyhlKXtlLklEPXRoaXMuSUQoKSxlLk5BTUU9dGhpcy5OQU1FKCksZS5EQVRBX01PREU9dGhpcy5EQVRBX01PREUoKSxlLlVQTElOSz10aGlzLlVQTElOSygpIT09bnVsbD90aGlzLlVQTElOSygpLnVucGFjaygpOm51bGwsZS5ET1dOTElOSz10aGlzLkRPV05MSU5LKCkhPT1udWxsP3RoaXMuRE9XTkxJTksoKS51bnBhY2soKTpudWxsLGUuQkVBQ09OPXRoaXMuQkVBQ09OKCkhPT1udWxsP3RoaXMuQkVBQ09OKCkudW5wYWNrKCk6bnVsbCxlLkJBTkQ9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuQkFORC5iaW5kKHRoaXMpLHRoaXMuYmFuZExlbmd0aCgpKSxlLlBPTEFSSVpBVElPTl9UWVBFPXRoaXMuUE9MQVJJWkFUSU9OX1RZUEUoKSxlLlNJTVBMRV9QT0xBUklaQVRJT049dGhpcy5TSU1QTEVfUE9MQVJJWkFUSU9OKCksZS5TVE9LRVNfUEFSQU1FVEVSUz10aGlzLlNUT0tFU19QQVJBTUVURVJTKCkhPT1udWxsP3RoaXMuU1RPS0VTX1BBUkFNRVRFUlMoKS51bnBhY2soKTpudWxsLGUuUE9XRVJfUkVRVUlSRUQ9dGhpcy5QT1dFUl9SRVFVSVJFRCgpLGUuUE9XRVJfVFlQRT10aGlzLlBPV0VSX1RZUEUoKSxlLlRSQU5TTUlUPXRoaXMuVFJBTlNNSVQoKSxlLlJFQ0VJVkU9dGhpcy5SRUNFSVZFKCksZS5TRU5TT1JfVFlQRT10aGlzLlNFTlNPUl9UWVBFKCksZS5TT1VSQ0U9dGhpcy5TT1VSQ0UoKSxlLkxBU1RfT0JfVElNRT10aGlzLkxBU1RfT0JfVElNRSgpLGUuTE9XRVJfTEVGVF9FTEVWQVRJT05fTElNSVQ9dGhpcy5MT1dFUl9MRUZUX0VMRVZBVElPTl9MSU1JVCgpLGUuVVBQRVJfTEVGVF9BWklNVVRIX0xJTUlUPXRoaXMuVVBQRVJfTEVGVF9BWklNVVRIX0xJTUlUKCksZS5MT1dFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQ9dGhpcy5MT1dFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQoKSxlLkxPV0VSX0xFRlRfQVpJTVVUSF9MSU1JVD10aGlzLkxPV0VSX0xFRlRfQVpJTVVUSF9MSU1JVCgpLGUuVVBQRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUPXRoaXMuVVBQRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUKCksZS5VUFBFUl9SSUdIVF9BWklNVVRIX0xJTUlUPXRoaXMuVVBQRVJfUklHSFRfQVpJTVVUSF9MSU1JVCgpLGUuTE9XRVJfUklHSFRfQVpJTVVUSF9MSU1JVD10aGlzLkxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQoKSxlLlVQUEVSX0xFRlRfRUxFVkFUSU9OX0xJTUlUPXRoaXMuVVBQRVJfTEVGVF9FTEVWQVRJT05fTElNSVQoKSxlLlJJR0hUX0dFT19CRUxUX0xJTUlUPXRoaXMuUklHSFRfR0VPX0JFTFRfTElNSVQoKSxlLkxFRlRfR0VPX0JFTFRfTElNSVQ9dGhpcy5MRUZUX0dFT19CRUxUX0xJTUlUKCksZS5NQUdOSVRVREVfTElNSVQ9dGhpcy5NQUdOSVRVREVfTElNSVQoKSxlLlRBU0tBQkxFPXRoaXMuVEFTS0FCTEUoKX19LERfPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCxpPW51bGwsbj1OYy5SRUFMLHM9bnVsbCxvPW51bGwscj1udWxsLGE9W10saD1iYy5saW5lYXIsQT1ZYy52ZXJ0aWNhbCxkPW51bGwsZj0wLEU9bnVsbCxfPSExLFI9ITEsST1GYy5VTktOT1dOLEM9bnVsbCxOPW51bGwsVD0wLGI9MCxGPTAsQj0wLFU9MCxRPTAsTT0wLGs9MCx5PTAsYz0wLGc9MCxPPSExKXt0aGlzLklEPWUsdGhpcy5OQU1FPWksdGhpcy5EQVRBX01PREU9bix0aGlzLlVQTElOSz1zLHRoaXMuRE9XTkxJTks9byx0aGlzLkJFQUNPTj1yLHRoaXMuQkFORD1hLHRoaXMuUE9MQVJJWkFUSU9OX1RZUEU9aCx0aGlzLlNJTVBMRV9QT0xBUklaQVRJT049QSx0aGlzLlNUT0tFU19QQVJBTUVURVJTPWQsdGhpcy5QT1dFUl9SRVFVSVJFRD1mLHRoaXMuUE9XRVJfVFlQRT1FLHRoaXMuVFJBTlNNSVQ9Xyx0aGlzLlJFQ0VJVkU9Uix0aGlzLlNFTlNPUl9UWVBFPUksdGhpcy5TT1VSQ0U9Qyx0aGlzLkxBU1RfT0JfVElNRT1OLHRoaXMuTE9XRVJfTEVGVF9FTEVWQVRJT05fTElNSVQ9VCx0aGlzLlVQUEVSX0xFRlRfQVpJTVVUSF9MSU1JVD1iLHRoaXMuTE9XRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUPUYsdGhpcy5MT1dFUl9MRUZUX0FaSU1VVEhfTElNSVQ9Qix0aGlzLlVQUEVSX1JJR0hUX0VMRVZBVElPTl9MSU1JVD1VLHRoaXMuVVBQRVJfUklHSFRfQVpJTVVUSF9MSU1JVD1RLHRoaXMuTE9XRVJfUklHSFRfQVpJTVVUSF9MSU1JVD1NLHRoaXMuVVBQRVJfTEVGVF9FTEVWQVRJT05fTElNSVQ9ayx0aGlzLlJJR0hUX0dFT19CRUxUX0xJTUlUPXksdGhpcy5MRUZUX0dFT19CRUxUX0xJTUlUPWMsdGhpcy5NQUdOSVRVREVfTElNSVQ9Zyx0aGlzLlRBU0tBQkxFPU99cGFjayhlKXtsZXQgaT10aGlzLklEIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLklEKTowLG49dGhpcy5OQU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk5BTUUpOjAscz10aGlzLlVQTElOSyE9PW51bGw/dGhpcy5VUExJTksucGFjayhlKTowLG89dGhpcy5ET1dOTElOSyE9PW51bGw/dGhpcy5ET1dOTElOSy5wYWNrKGUpOjAscj10aGlzLkJFQUNPTiE9PW51bGw/dGhpcy5CRUFDT04ucGFjayhlKTowLGE9WmkuY3JlYXRlQmFuZFZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLkJBTkQpKSxoPXRoaXMuU1RPS0VTX1BBUkFNRVRFUlMhPT1udWxsP3RoaXMuU1RPS0VTX1BBUkFNRVRFUlMucGFjayhlKTowLEE9dGhpcy5QT1dFUl9UWVBFIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLlBPV0VSX1RZUEUpOjAsZD10aGlzLlNPVVJDRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5TT1VSQ0UpOjAsZj10aGlzLkxBU1RfT0JfVElNRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5MQVNUX09CX1RJTUUpOjA7cmV0dXJuIFppLnN0YXJ0SURNKGUpLFppLmFkZElkKGUsaSksWmkuYWRkTmFtZShlLG4pLFppLmFkZERhdGFNb2RlKGUsdGhpcy5EQVRBX01PREUpLFppLmFkZFVwbGluayhlLHMpLFppLmFkZERvd25saW5rKGUsbyksWmkuYWRkQmVhY29uKGUsciksWmkuYWRkQmFuZChlLGEpLFppLmFkZFBvbGFyaXphdGlvblR5cGUoZSx0aGlzLlBPTEFSSVpBVElPTl9UWVBFKSxaaS5hZGRTaW1wbGVQb2xhcml6YXRpb24oZSx0aGlzLlNJTVBMRV9QT0xBUklaQVRJT04pLFppLmFkZFN0b2tlc1BhcmFtZXRlcnMoZSxoKSxaaS5hZGRQb3dlclJlcXVpcmVkKGUsdGhpcy5QT1dFUl9SRVFVSVJFRCksWmkuYWRkUG93ZXJUeXBlKGUsQSksWmkuYWRkVHJhbnNtaXQoZSx0aGlzLlRSQU5TTUlUKSxaaS5hZGRSZWNlaXZlKGUsdGhpcy5SRUNFSVZFKSxaaS5hZGRTZW5zb3JUeXBlKGUsdGhpcy5TRU5TT1JfVFlQRSksWmkuYWRkU291cmNlKGUsZCksWmkuYWRkTGFzdE9iVGltZShlLGYpLFppLmFkZExvd2VyTGVmdEVsZXZhdGlvbkxpbWl0KGUsdGhpcy5MT1dFUl9MRUZUX0VMRVZBVElPTl9MSU1JVCksWmkuYWRkVXBwZXJMZWZ0QXppbXV0aExpbWl0KGUsdGhpcy5VUFBFUl9MRUZUX0FaSU1VVEhfTElNSVQpLFppLmFkZExvd2VyUmlnaHRFbGV2YXRpb25MaW1pdChlLHRoaXMuTE9XRVJfUklHSFRfRUxFVkFUSU9OX0xJTUlUKSxaaS5hZGRMb3dlckxlZnRBemltdXRoTGltaXQoZSx0aGlzLkxPV0VSX0xFRlRfQVpJTVVUSF9MSU1JVCksWmkuYWRkVXBwZXJSaWdodEVsZXZhdGlvbkxpbWl0KGUsdGhpcy5VUFBFUl9SSUdIVF9FTEVWQVRJT05fTElNSVQpLFppLmFkZFVwcGVyUmlnaHRBemltdXRoTGltaXQoZSx0aGlzLlVQUEVSX1JJR0hUX0FaSU1VVEhfTElNSVQpLFppLmFkZExvd2VyUmlnaHRBemltdXRoTGltaXQoZSx0aGlzLkxPV0VSX1JJR0hUX0FaSU1VVEhfTElNSVQpLFppLmFkZFVwcGVyTGVmdEVsZXZhdGlvbkxpbWl0KGUsdGhpcy5VUFBFUl9MRUZUX0VMRVZBVElPTl9MSU1JVCksWmkuYWRkUmlnaHRHZW9CZWx0TGltaXQoZSx0aGlzLlJJR0hUX0dFT19CRUxUX0xJTUlUKSxaaS5hZGRMZWZ0R2VvQmVsdExpbWl0KGUsdGhpcy5MRUZUX0dFT19CRUxUX0xJTUlUKSxaaS5hZGRNYWduaXR1ZGVMaW1pdChlLHRoaXMuTUFHTklUVURFX0xJTUlUKSxaaS5hZGRUYXNrYWJsZShlLHRoaXMuVEFTS0FCTEUpLFppLmVuZElETShlKX19fSk7dmFyIGJBLFVfLF9wPVMoKCk9PntfdCgpO0VwKCk7YkE9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNQTEQoZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzUExEKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRQTEQiKX1QQVlMT0FEX0RVUkFUSU9OKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9TUFTU19BVF9MQVVOQ0goKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0MzIodGhpcy5iYl9wb3MrZSk6MH1ESU1FTlNJT05TKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9U09MQVJfQVJSQVlfQVJFQSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0MzIodGhpcy5iYl9wb3MrZSk6MH1TT0xBUl9BUlJBWV9ESU1FTlNJT05TKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTIpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9SU5TVFJVTUVOVFMoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDE2KTtyZXR1cm4gbj8oaXx8bmV3IFppKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MrbikrZSo0KSx0aGlzLmJiKTpudWxsfWluc3RydW1lbnRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxNik7cmV0dXJuIGU/dGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRQTEQoZSl7ZS5zdGFydE9iamVjdCg3KX1zdGF0aWMgYWRkUGF5bG9hZER1cmF0aW9uKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgwLGksMCl9c3RhdGljIGFkZE1hc3NBdExhdW5jaChlLGkpe2UuYWRkRmllbGRGbG9hdDMyKDEsaSwwKX1zdGF0aWMgYWRkRGltZW5zaW9ucyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMixpLDApfXN0YXRpYyBhZGRTb2xhckFycmF5QXJlYShlLGkpe2UuYWRkRmllbGRGbG9hdDMyKDMsaSwwKX1zdGF0aWMgYWRkU29sYXJBcnJheURpbWVuc2lvbnMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDQsaSwwKX1zdGF0aWMgYWRkTm9taW5hbE9wZXJhdGlvbmFsTGlmZXRpbWUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDUsaSwwKX1zdGF0aWMgYWRkSW5zdHJ1bWVudHMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDYsaSwwKX1zdGF0aWMgY3JlYXRlSW5zdHJ1bWVudHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaS5sZW5ndGgsNCk7Zm9yKGxldCBuPWkubGVuZ3RoLTE7bj49MDtuLS0pZS5hZGRPZmZzZXQoaVtuXSk7cmV0dXJuIGUuZW5kVmVjdG9yKCl9c3RhdGljIHN0YXJ0SW5zdHJ1bWVudHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kUExEKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hQTERCdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkUExEIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZFBMREJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRQTEQiLCEwKX1zdGF0aWMgY3JlYXRlUExEKGUsaSxuLHMsbyxyLGEsaCl7cmV0dXJuIHQuc3RhcnRQTEQoZSksdC5hZGRQYXlsb2FkRHVyYXRpb24oZSxpKSx0LmFkZE1hc3NBdExhdW5jaChlLG4pLHQuYWRkRGltZW5zaW9ucyhlLHMpLHQuYWRkU29sYXJBcnJheUFyZWEoZSxvKSx0LmFkZFNvbGFyQXJyYXlEaW1lbnNpb25zKGUsciksdC5hZGROb21pbmFsT3BlcmF0aW9uYWxMaWZldGltZShlLGEpLHQuYWRkSW5zdHJ1bWVudHMoZSxoKSx0LmVuZFBMRChlKX11bnBhY2soKXtyZXR1cm4gbmV3IFVfKHRoaXMuUEFZTE9BRF9EVVJBVElPTigpLHRoaXMuTUFTU19BVF9MQVVOQ0goKSx0aGlzLkRJTUVOU0lPTlMoKSx0aGlzLlNPTEFSX0FSUkFZX0FSRUEoKSx0aGlzLlNPTEFSX0FSUkFZX0RJTUVOU0lPTlMoKSx0aGlzLk5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUUoKSx0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5JTlNUUlVNRU5UUy5iaW5kKHRoaXMpLHRoaXMuaW5zdHJ1bWVudHNMZW5ndGgoKSkpfXVucGFja1RvKGUpe2UuUEFZTE9BRF9EVVJBVElPTj10aGlzLlBBWUxPQURfRFVSQVRJT04oKSxlLk1BU1NfQVRfTEFVTkNIPXRoaXMuTUFTU19BVF9MQVVOQ0goKSxlLkRJTUVOU0lPTlM9dGhpcy5ESU1FTlNJT05TKCksZS5TT0xBUl9BUlJBWV9BUkVBPXRoaXMuU09MQVJfQVJSQVlfQVJFQSgpLGUuU09MQVJfQVJSQVlfRElNRU5TSU9OUz10aGlzLlNPTEFSX0FSUkFZX0RJTUVOU0lPTlMoKSxlLk5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUU9dGhpcy5OT01JTkFMX09QRVJBVElPTkFMX0xJRkVUSU1FKCksZS5JTlNUUlVNRU5UUz10aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5JTlNUUlVNRU5UUy5iaW5kKHRoaXMpLHRoaXMuaW5zdHJ1bWVudHNMZW5ndGgoKSl9fSxVXz1jbGFzc3tjb25zdHJ1Y3RvcihlPW51bGwsaT0wLG49bnVsbCxzPTAsbz1udWxsLHI9bnVsbCxhPVtdKXt0aGlzLlBBWUxPQURfRFVSQVRJT049ZSx0aGlzLk1BU1NfQVRfTEFVTkNIPWksdGhpcy5ESU1FTlNJT05TPW4sdGhpcy5TT0xBUl9BUlJBWV9BUkVBPXMsdGhpcy5TT0xBUl9BUlJBWV9ESU1FTlNJT05TPW8sdGhpcy5OT01JTkFMX09QRVJBVElPTkFMX0xJRkVUSU1FPXIsdGhpcy5JTlNUUlVNRU5UUz1hfXBhY2soZSl7bGV0IGk9dGhpcy5QQVlMT0FEX0RVUkFUSU9OIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLlBBWUxPQURfRFVSQVRJT04pOjAsbj10aGlzLkRJTUVOU0lPTlMhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuRElNRU5TSU9OUyk6MCxzPXRoaXMuU09MQVJfQVJSQVlfRElNRU5TSU9OUyE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5TT0xBUl9BUlJBWV9ESU1FTlNJT05TKTowLG89dGhpcy5OT01JTkFMX09QRVJBVElPTkFMX0xJRkVUSU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk5PTUlOQUxfT1BFUkFUSU9OQUxfTElGRVRJTUUpOjAscj1iQS5jcmVhdGVJbnN0cnVtZW50c1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLklOU1RSVU1FTlRTKSk7cmV0dXJuIGJBLmNyZWF0ZVBMRChlLGksdGhpcy5NQVNTX0FUX0xBVU5DSCxuLHRoaXMuU09MQVJfQVJSQVlfQVJFQSxzLG8scil9fX0pO3ZhciBWYyxQRj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5OT19DVVJSRU5UX0VMRU1FTlRTPTBdPSJOT19DVVJSRU5UX0VMRU1FTlRTIix0W3QuTk9fSU5JVElBTF9FTEVNRU5UUz0xXT0iTk9fSU5JVElBTF9FTEVNRU5UUyIsdFt0Lk5PX0VMRU1FTlRTX0FWQUlMQUJMRT0yXT0iTk9fRUxFTUVOVFNfQVZBSUxBQkxFIix0W3QuT0s9M109Ik9LIn0pKFZjfHwoVmM9e30pKX0pO3ZhciBTYyxKRj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5EUlk9MF09IkRSWSIsdFt0LldFVD0xXT0iV0VUIn0pKFNjfHwoU2M9e30pKX0pO3ZhciBPYyxqRj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5QQVlMT0FEPTBdPSJQQVlMT0FEIix0W3QuUk9DS0VUX0JPRFk9MV09IlJPQ0tFVF9CT0RZIix0W3QuREVCUklTPTJdPSJERUJSSVMiLHRbdC5VTktOT1dOPTNdPSJVTktOT1dOIn0pKE9jfHwoT2M9e30pKX0pO3ZhciBCYyxIRj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUEVSQVRJT05BTD0wXT0iT1BFUkFUSU9OQUwiLHRbdC5OT05PUEVSQVRJT05BTD0xXT0iTk9OT1BFUkFUSU9OQUwiLHRbdC5QQVJUSUFMTFlfT1BFUkFUSU9OQUw9Ml09IlBBUlRJQUxMWV9PUEVSQVRJT05BTCIsdFt0LkJBQ0tVUF9TVEFOREJZPTNdPSJCQUNLVVBfU1RBTkRCWSIsdFt0LlNQQVJFPTRdPSJTUEFSRSIsdFt0LkVYVEVOREVEX01JU1NJT049NV09IkVYVEVOREVEX01JU1NJT04iLHRbdC5ERUNBWUVEPTZdPSJERUNBWUVEIix0W3QuVU5LTk9XTj03XT0iVU5LTk9XTiJ9KShCY3x8KEJjPXt9KSl9KTt2YXIgR2MsdkY9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1JCSVQ9MF09Ik9SQklUIix0W3QuTEFORElORz0xXT0iTEFORElORyIsdFt0LklNUEFDVD0yXT0iSU1QQUNUIix0W3QuRE9DS0VEPTNdPSJET0NLRUQiLHRbdC5ST1VORFRSSVA9NF09IlJPVU5EVFJJUCJ9KShHY3x8KEdjPXt9KSl9KTt2YXIgV2MsTV8sekY9UygoKT0+e190KCk7X3AoKTtQRigpO0pGKCk7akYoKTtIRigpO3ZGKCk7V2M9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNDQVQoZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzQ0FUKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRDQVQiKX1PQkpFQ1RfTkFNRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU9CSkVDVF9JRChlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDYpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfU5PUkFEX0NBVF9JRCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkVWludDMyKHRoaXMuYmJfcG9zK2UpOjB9T0JKRUNUX1RZUEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDEwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOk9jLlVOS05PV059T1BTX1NUQVRVU19DT0RFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpCYy5VTktOT1dOfU9XTkVSKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUxBVU5DSF9EQVRFKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTYpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUxBVU5DSF9TSVRFKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTgpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfURFQ0FZX0RBVEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9UEVSSU9EKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUlOQ0xJTkFUSU9OKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUFQT0dFRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMjYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1QRVJJR0VFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVJDUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1EQVRBX1NUQVRVU19DT0RFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpWYy5OT19DVVJSRU5UX0VMRU1FTlRTfU9SQklUX0NFTlRFUihlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDM0KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1PUkJJVF9UWVBFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzNik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpHYy5PUkJJVH1ERVBMT1lNRU5UX0RBVEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9TUFORVVWRVJBQkxFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0MCk7cmV0dXJuIGU/ISF0aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOiExfVNJWkUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TUFTUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NQVNTX1RZUEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQ2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOlNjLkRSWX1QQVlMT0FEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDgpO3JldHVybiBuPyhpfHxuZXcgYkEpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcytuKStlKjQpLHRoaXMuYmIpOm51bGx9cGF5bG9hZHNMZW5ndGgoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQ4KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydENBVChlKXtlLnN0YXJ0T2JqZWN0KDIzKX1zdGF0aWMgYWRkT2JqZWN0TmFtZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBhZGRPYmplY3RJZChlLGkpe2UuYWRkRmllbGRPZmZzZXQoMSxpLDApfXN0YXRpYyBhZGROb3JhZENhdElkKGUsaSl7ZS5hZGRGaWVsZEludDMyKDIsaSwwKX1zdGF0aWMgYWRkT2JqZWN0VHlwZShlLGkpe2UuYWRkRmllbGRJbnQ4KDMsaSxPYy5VTktOT1dOKX1zdGF0aWMgYWRkT3BzU3RhdHVzQ29kZShlLGkpe2UuYWRkRmllbGRJbnQ4KDQsaSxCYy5VTktOT1dOKX1zdGF0aWMgYWRkT3duZXIoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDUsaSwwKX1zdGF0aWMgYWRkTGF1bmNoRGF0ZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoNixpLDApfXN0YXRpYyBhZGRMYXVuY2hTaXRlKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg3LGksMCl9c3RhdGljIGFkZERlY2F5RGF0ZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoOCxpLDApfXN0YXRpYyBhZGRQZXJpb2QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg5LGksMCl9c3RhdGljIGFkZEluY2xpbmF0aW9uKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTAsaSwwKX1zdGF0aWMgYWRkQXBvZ2VlKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTEsaSwwKX1zdGF0aWMgYWRkUGVyaWdlZShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEyLGksMCl9c3RhdGljIGFkZFJjcyhlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEzLGksMCl9c3RhdGljIGFkZERhdGFTdGF0dXNDb2RlKGUsaSl7ZS5hZGRGaWVsZEludDgoMTQsaSxWYy5OT19DVVJSRU5UX0VMRU1FTlRTKX1zdGF0aWMgYWRkT3JiaXRDZW50ZXIoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDE1LGksMCl9c3RhdGljIGFkZE9yYml0VHlwZShlLGkpe2UuYWRkRmllbGRJbnQ4KDE2LGksR2MuT1JCSVQpfXN0YXRpYyBhZGREZXBsb3ltZW50RGF0ZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoMTcsaSwwKX1zdGF0aWMgYWRkTWFuZXV2ZXJhYmxlKGUsaSl7ZS5hZGRGaWVsZEludDgoMTgsK2ksMCl9c3RhdGljIGFkZFNpemUoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgxOSxpLDApfXN0YXRpYyBhZGRNYXNzKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMjAsaSwwKX1zdGF0aWMgYWRkTWFzc1R5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCgyMSxpLFNjLkRSWSl9c3RhdGljIGFkZFBheWxvYWRzKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgyMixpLDApfXN0YXRpYyBjcmVhdGVQYXlsb2Fkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRQYXlsb2Fkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLDQpfXN0YXRpYyBlbmRDQVQoZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGZpbmlzaENBVEJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRDQVQiKX1zdGF0aWMgZmluaXNoU2l6ZVByZWZpeGVkQ0FUQnVmZmVyKGUsaSl7ZS5maW5pc2goaSwiJENBVCIsITApfXN0YXRpYyBjcmVhdGVDQVQoZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEksQyxOLFQsYixGLEIsVSxRLE0pe3JldHVybiB0LnN0YXJ0Q0FUKGUpLHQuYWRkT2JqZWN0TmFtZShlLGkpLHQuYWRkT2JqZWN0SWQoZSxuKSx0LmFkZE5vcmFkQ2F0SWQoZSxzKSx0LmFkZE9iamVjdFR5cGUoZSxvKSx0LmFkZE9wc1N0YXR1c0NvZGUoZSxyKSx0LmFkZE93bmVyKGUsYSksdC5hZGRMYXVuY2hEYXRlKGUsaCksdC5hZGRMYXVuY2hTaXRlKGUsQSksdC5hZGREZWNheURhdGUoZSxkKSx0LmFkZFBlcmlvZChlLGYpLHQuYWRkSW5jbGluYXRpb24oZSxFKSx0LmFkZEFwb2dlZShlLF8pLHQuYWRkUGVyaWdlZShlLFIpLHQuYWRkUmNzKGUsSSksdC5hZGREYXRhU3RhdHVzQ29kZShlLEMpLHQuYWRkT3JiaXRDZW50ZXIoZSxOKSx0LmFkZE9yYml0VHlwZShlLFQpLHQuYWRkRGVwbG95bWVudERhdGUoZSxiKSx0LmFkZE1hbmV1dmVyYWJsZShlLEYpLHQuYWRkU2l6ZShlLEIpLHQuYWRkTWFzcyhlLFUpLHQuYWRkTWFzc1R5cGUoZSxRKSx0LmFkZFBheWxvYWRzKGUsTSksdC5lbmRDQVQoZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBNXyh0aGlzLk9CSkVDVF9OQU1FKCksdGhpcy5PQkpFQ1RfSUQoKSx0aGlzLk5PUkFEX0NBVF9JRCgpLHRoaXMuT0JKRUNUX1RZUEUoKSx0aGlzLk9QU19TVEFUVVNfQ09ERSgpLHRoaXMuT1dORVIoKSx0aGlzLkxBVU5DSF9EQVRFKCksdGhpcy5MQVVOQ0hfU0lURSgpLHRoaXMuREVDQVlfREFURSgpLHRoaXMuUEVSSU9EKCksdGhpcy5JTkNMSU5BVElPTigpLHRoaXMuQVBPR0VFKCksdGhpcy5QRVJJR0VFKCksdGhpcy5SQ1MoKSx0aGlzLkRBVEFfU1RBVFVTX0NPREUoKSx0aGlzLk9SQklUX0NFTlRFUigpLHRoaXMuT1JCSVRfVFlQRSgpLHRoaXMuREVQTE9ZTUVOVF9EQVRFKCksdGhpcy5NQU5FVVZFUkFCTEUoKSx0aGlzLlNJWkUoKSx0aGlzLk1BU1MoKSx0aGlzLk1BU1NfVFlQRSgpLHRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlBBWUxPQURTLmJpbmQodGhpcyksdGhpcy5wYXlsb2Fkc0xlbmd0aCgpKSl9dW5wYWNrVG8oZSl7ZS5PQkpFQ1RfTkFNRT10aGlzLk9CSkVDVF9OQU1FKCksZS5PQkpFQ1RfSUQ9dGhpcy5PQkpFQ1RfSUQoKSxlLk5PUkFEX0NBVF9JRD10aGlzLk5PUkFEX0NBVF9JRCgpLGUuT0JKRUNUX1RZUEU9dGhpcy5PQkpFQ1RfVFlQRSgpLGUuT1BTX1NUQVRVU19DT0RFPXRoaXMuT1BTX1NUQVRVU19DT0RFKCksZS5PV05FUj10aGlzLk9XTkVSKCksZS5MQVVOQ0hfREFURT10aGlzLkxBVU5DSF9EQVRFKCksZS5MQVVOQ0hfU0lURT10aGlzLkxBVU5DSF9TSVRFKCksZS5ERUNBWV9EQVRFPXRoaXMuREVDQVlfREFURSgpLGUuUEVSSU9EPXRoaXMuUEVSSU9EKCksZS5JTkNMSU5BVElPTj10aGlzLklOQ0xJTkFUSU9OKCksZS5BUE9HRUU9dGhpcy5BUE9HRUUoKSxlLlBFUklHRUU9dGhpcy5QRVJJR0VFKCksZS5SQ1M9dGhpcy5SQ1MoKSxlLkRBVEFfU1RBVFVTX0NPREU9dGhpcy5EQVRBX1NUQVRVU19DT0RFKCksZS5PUkJJVF9DRU5URVI9dGhpcy5PUkJJVF9DRU5URVIoKSxlLk9SQklUX1RZUEU9dGhpcy5PUkJJVF9UWVBFKCksZS5ERVBMT1lNRU5UX0RBVEU9dGhpcy5ERVBMT1lNRU5UX0RBVEUoKSxlLk1BTkVVVkVSQUJMRT10aGlzLk1BTkVVVkVSQUJMRSgpLGUuU0laRT10aGlzLlNJWkUoKSxlLk1BU1M9dGhpcy5NQVNTKCksZS5NQVNTX1RZUEU9dGhpcy5NQVNTX1RZUEUoKSxlLlBBWUxPQURTPXRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlBBWUxPQURTLmJpbmQodGhpcyksdGhpcy5wYXlsb2Fkc0xlbmd0aCgpKX19LE1fPWNsYXNze2NvbnN0cnVjdG9yKGU9bnVsbCxpPW51bGwsbj0wLHM9T2MuVU5LTk9XTixvPUJjLlVOS05PV04scj1udWxsLGE9bnVsbCxoPW51bGwsQT1udWxsLGQ9MCxmPTAsRT0wLF89MCxSPTAsST1WYy5OT19DVVJSRU5UX0VMRU1FTlRTLEM9bnVsbCxOPUdjLk9SQklULFQ9bnVsbCxiPSExLEY9MCxCPTAsVT1TYy5EUlksUT1bXSl7dGhpcy5PQkpFQ1RfTkFNRT1lLHRoaXMuT0JKRUNUX0lEPWksdGhpcy5OT1JBRF9DQVRfSUQ9bix0aGlzLk9CSkVDVF9UWVBFPXMsdGhpcy5PUFNfU1RBVFVTX0NPREU9byx0aGlzLk9XTkVSPXIsdGhpcy5MQVVOQ0hfREFURT1hLHRoaXMuTEFVTkNIX1NJVEU9aCx0aGlzLkRFQ0FZX0RBVEU9QSx0aGlzLlBFUklPRD1kLHRoaXMuSU5DTElOQVRJT049Zix0aGlzLkFQT0dFRT1FLHRoaXMuUEVSSUdFRT1fLHRoaXMuUkNTPVIsdGhpcy5EQVRBX1NUQVRVU19DT0RFPUksdGhpcy5PUkJJVF9DRU5URVI9Qyx0aGlzLk9SQklUX1RZUEU9Tix0aGlzLkRFUExPWU1FTlRfREFURT1ULHRoaXMuTUFORVVWRVJBQkxFPWIsdGhpcy5TSVpFPUYsdGhpcy5NQVNTPUIsdGhpcy5NQVNTX1RZUEU9VSx0aGlzLlBBWUxPQURTPVF9cGFjayhlKXtsZXQgaT10aGlzLk9CSkVDVF9OQU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk9CSkVDVF9OQU1FKTowLG49dGhpcy5PQkpFQ1RfSUQhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuT0JKRUNUX0lEKTowLHM9dGhpcy5PV05FUiE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5PV05FUik6MCxvPXRoaXMuTEFVTkNIX0RBVEUhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuTEFVTkNIX0RBVEUpOjAscj10aGlzLkxBVU5DSF9TSVRFIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLkxBVU5DSF9TSVRFKTowLGE9dGhpcy5ERUNBWV9EQVRFIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLkRFQ0FZX0RBVEUpOjAsaD10aGlzLk9SQklUX0NFTlRFUiE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5PUkJJVF9DRU5URVIpOjAsQT10aGlzLkRFUExPWU1FTlRfREFURSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5ERVBMT1lNRU5UX0RBVEUpOjAsZD1XYy5jcmVhdGVQYXlsb2Fkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlBBWUxPQURTKSk7cmV0dXJuIFdjLmNyZWF0ZUNBVChlLGksbix0aGlzLk5PUkFEX0NBVF9JRCx0aGlzLk9CSkVDVF9UWVBFLHRoaXMuT1BTX1NUQVRVU19DT0RFLHMsbyxyLGEsdGhpcy5QRVJJT0QsdGhpcy5JTkNMSU5BVElPTix0aGlzLkFQT0dFRSx0aGlzLlBFUklHRUUsdGhpcy5SQ1MsdGhpcy5EQVRBX1NUQVRVU19DT0RFLGgsdGhpcy5PUkJJVF9UWVBFLEEsdGhpcy5NQU5FVVZFUkFCTEUsdGhpcy5TSVpFLHRoaXMuTUFTUyx0aGlzLk1BU1NfVFlQRSxkKX19fSk7dmFyIGhmLFFfLHUzPVMoKCk9PntfdCgpO3pGKCk7aGY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNDQVRDT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc0NBVENPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBXYykuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydENBVENPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kQ0FUQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlQ0FUQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0Q0FUQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZENBVENPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBRXyh0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LFFfPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9aGYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gaGYuY3JlYXRlQ0FUQ09MTEVDVElPTihlLGkpfX19KTt2YXIgY2Ysa18sQzM9UygoKT0+e190KCk7RXAoKTtjZj1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5iYj1udWxsLHRoaXMuYmJfcG9zPTB9X19pbml0KGUsaSl7cmV0dXJuIHRoaXMuYmJfcG9zPWUsdGhpcy5iYj1pLHRoaXN9c3RhdGljIGdldFJvb3RBc0lETUNPTExFQ1RJT04oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzSURNQ09MTEVDVElPTihlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1SRUNPUkRTKGUsaSl7bGV0IG49dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gbj8oaXx8bmV3IFppKS5fX2luaXQodGhpcy5iYi5fX2luZGlyZWN0KHRoaXMuYmIuX192ZWN0b3IodGhpcy5iYl9wb3MrbikrZSo0KSx0aGlzLmJiKTpudWxsfXJlY29yZHNMZW5ndGgoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBlP3RoaXMuYmIuX192ZWN0b3JfbGVuKHRoaXMuYmJfcG9zK2UpOjB9c3RhdGljIHN0YXJ0SURNQ09MTEVDVElPTihlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRSZWNvcmRzKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgwLGksMCl9c3RhdGljIGNyZWF0ZVJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaS5sZW5ndGgsNCk7Zm9yKGxldCBuPWkubGVuZ3RoLTE7bj49MDtuLS0pZS5hZGRPZmZzZXQoaVtuXSk7cmV0dXJuIGUuZW5kVmVjdG9yKCl9c3RhdGljIHN0YXJ0UmVjb3Jkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLDQpfXN0YXRpYyBlbmRJRE1DT0xMRUNUSU9OKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBjcmVhdGVJRE1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuIHQuc3RhcnRJRE1DT0xMRUNUSU9OKGUpLHQuYWRkUmVjb3JkcyhlLGkpLHQuZW5kSURNQ09MTEVDVElPTihlKX11bnBhY2soKXtyZXR1cm4gbmV3IGtfKHRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlJFQ09SRFMuYmluZCh0aGlzKSx0aGlzLnJlY29yZHNMZW5ndGgoKSkpfXVucGFja1RvKGUpe2UuUkVDT1JEUz10aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpfX0sa189Y2xhc3N7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5SRUNPUkRTPWV9cGFjayhlKXtsZXQgaT1jZi5jcmVhdGVSZWNvcmRzVmVjdG9yKGUsZS5jcmVhdGVPYmplY3RPZmZzZXRMaXN0KHRoaXMuUkVDT1JEUykpO3JldHVybiBjZi5jcmVhdGVJRE1DT0xMRUNUSU9OKGUsaSl9fX0pO3ZhciBsZixMXyxnMz1TKCgpPT57X3QoKTtfcCgpO2xmPWNsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmJiPW51bGwsdGhpcy5iYl9wb3M9MH1fX2luaXQoZSxpKXtyZXR1cm4gdGhpcy5iYl9wb3M9ZSx0aGlzLmJiPWksdGhpc31zdGF0aWMgZ2V0Um9vdEFzUExEQ09MTEVDVElPTihlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNQTERDT0xMRUNUSU9OKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfVJFQ09SRFMoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBuPyhpfHxuZXcgYkEpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcytuKStlKjQpLHRoaXMuYmIpOm51bGx9cmVjb3Jkc0xlbmd0aCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRQTERDT0xMRUNUSU9OKGUpe2Uuc3RhcnRPYmplY3QoMSl9c3RhdGljIGFkZFJlY29yZHMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDAsaSwwKX1zdGF0aWMgY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGksNCl9c3RhdGljIGVuZFBMRENPTExFQ1RJT04oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGNyZWF0ZVBMRENPTExFQ1RJT04oZSxpKXtyZXR1cm4gdC5zdGFydFBMRENPTExFQ1RJT04oZSksdC5hZGRSZWNvcmRzKGUsaSksdC5lbmRQTERDT0xMRUNUSU9OKGUpfXVucGFjaygpe3JldHVybiBuZXcgTF8odGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKSl9dW5wYWNrVG8oZSl7ZS5SRUNPUkRTPXRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlJFQ09SRFMuYmluZCh0aGlzKSx0aGlzLnJlY29yZHNMZW5ndGgoKSl9fSxMXz1jbGFzc3tjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLlJFQ09SRFM9ZX1wYWNrKGUpe2xldCBpPWxmLmNyZWF0ZVJlY29yZHNWZWN0b3IoZSxlLmNyZWF0ZU9iamVjdE9mZnNldExpc3QodGhpcy5SRUNPUkRTKSk7cmV0dXJuIGxmLmNyZWF0ZVBMRENPTExFQ1RJT04oZSxpKX19fSk7dmFyIGVkPXt9O0hlKGVkLHtCYW5kOigpPT5GQSxCYW5kVDooKT0+R18sQ0FUOigpPT5XYyxDQVRDT0xMRUNUSU9OOigpPT5oZixDQVRDT0xMRUNUSU9OVDooKT0+UV8sQ0FUVDooKT0+TV8sRGF0YU1vZGU6KCk9Pk5jLERldmljZVR5cGU6KCk9PkZjLEZyZXF1ZW5jeVJhbmdlOigpPT5rYSxGcmVxdWVuY3lSYW5nZVQ6KCk9PkJfLElETTooKT0+WmksSURNQ09MTEVDVElPTjooKT0+Y2YsSURNQ09MTEVDVElPTlQ6KCk9PmtfLElETVQ6KCk9PkRfLFBMRDooKT0+YkEsUExEQ09MTEVDVElPTjooKT0+bGYsUExEQ09MTEVDVElPTlQ6KCk9PkxfLFBMRFQ6KCk9PlVfLFBvbGFyaXphdGlvblR5cGU6KCk9PmJjLFNpbXBsZVBvbGFyaXphdGlvbjooKT0+WWMsU3Rva2VzUGFyYW1ldGVyczooKT0+dGQsU3Rva2VzUGFyYW1ldGVyc1Q6KCk9PldfLGRhdGFTdGF0dXNDb2RlOigpPT5WYyxtYXNzVHlwZTooKT0+U2Msb2JqZWN0VHlwZTooKT0+T2Msb3BzU3RhdHVzQ29kZTooKT0+QmMsb3JiaXRUeXBlOigpPT5HY30pO3ZhciBUMz1TKCgpPT57UUYoKTt6RigpO3UzKCk7a0YoKTtMRigpO2ZwKCk7RXAoKTtDMygpO19wKCk7ZzMoKTt5RigpO3dGKCk7eEYoKTtQRigpO0pGKCk7akYoKTtIRigpO3ZGKCl9KTt2YXIgS0Y9UygoKT0+e190KCl9KTt2YXIgUnA9UygoKT0+e190KCl9KTt2YXIgWEY9UygoKT0+e190KCk7UnAoKX0pO3ZhciBacCxxRj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5SRUFMPTBdPSJSRUFMIix0W3QuU0lNVUxBVEVEPTFdPSJTSU1VTEFURUQiLHRbdC5TWU5USEVUSUM9Ml09IlNZTlRIRVRJQyJ9KShacHx8KFpwPXt9KSl9KTt2YXIgSXAsJEY9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0Lk9QVElDQUw9MV09Ik9QVElDQUwiLHRbdC5JTkZSQVJFRF9TRU5TT1I9Ml09IklORlJBUkVEX1NFTlNPUiIsdFt0LlVMVFJBVklPTEVUX1NFTlNPUj0zXT0iVUxUUkFWSU9MRVRfU0VOU09SIix0W3QuWF9SQVlfU0VOU09SPTRdPSJYX1JBWV9TRU5TT1IiLHRbdC5HQU1NQV9SQVlfU0VOU09SPTVdPSJHQU1NQV9SQVlfU0VOU09SIix0W3QuUkFEQVI9Nl09IlJBREFSIix0W3QuUEhBU0VEX0FSUkFZX1JBREFSPTddPSJQSEFTRURfQVJSQVlfUkFEQVIiLHRbdC5TWU5USEVUSUNfQVBFUlRVUkVfUkFEQVI9OF09IlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUiIsdFt0LkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRT05XT0iQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFIix0W3QuUkFESU9fVEVMRVNDT1BFPTEwXT0iUkFESU9fVEVMRVNDT1BFIix0W3QuQVRNT1NQSEVSSUNfU0VOU09SPTExXT0iQVRNT1NQSEVSSUNfU0VOU09SIix0W3QuU1BBQ0VfV0VBVEhFUl9TRU5TT1I9MTJdPSJTUEFDRV9XRUFUSEVSX1NFTlNPUiIsdFt0LkVOVklST05NRU5UQUxfU0VOU09SPTEzXT0iRU5WSVJPTk1FTlRBTF9TRU5TT1IiLHRbdC5TRUlTTUlDX1NFTlNPUj0xNF09IlNFSVNNSUNfU0VOU09SIix0W3QuR1JBVklNRVRSSUNfU0VOU09SPTE1XT0iR1JBVklNRVRSSUNfU0VOU09SIix0W3QuTUFHTkVUSUNfU0VOU09SPTE2XT0iTUFHTkVUSUNfU0VOU09SIix0W3QuRUxFQ1RST01BR05FVElDX1NFTlNPUj0xN109IkVMRUNUUk9NQUdORVRJQ19TRU5TT1IiLHRbdC5USEVSTUFMX1NFTlNPUj0xOF09IlRIRVJNQUxfU0VOU09SIix0W3QuQ0hFTUlDQUxfU0VOU09SPTE5XT0iQ0hFTUlDQUxfU0VOU09SIix0W3QuQklPTE9HSUNBTF9TRU5TT1I9MjBdPSJCSU9MT0dJQ0FMX1NFTlNPUiIsdFt0LlJBRElBVElPTl9TRU5TT1I9MjFdPSJSQURJQVRJT05fU0VOU09SIix0W3QuUEFSVElDTEVfREVURUNUT1I9MjJdPSJQQVJUSUNMRV9ERVRFQ1RPUiIsdFt0LkxJREFSPTIzXT0iTElEQVIiLHRbdC5TT05BUj0yNF09IlNPTkFSIix0W3QuVEVMRVNDT1BFPTI1XT0iVEVMRVNDT1BFIix0W3QuU1BFQ1RST1NDT1BJQ19TRU5TT1I9MjZdPSJTUEVDVFJPU0NPUElDX1NFTlNPUiIsdFt0LlBIT1RPTUVUUklDX1NFTlNPUj0yN109IlBIT1RPTUVUUklDX1NFTlNPUiIsdFt0LlBPTEFSSU1FVFJJQ19TRU5TT1I9MjhdPSJQT0xBUklNRVRSSUNfU0VOU09SIix0W3QuSU5URVJGRVJPTUVUUklDX1NFTlNPUj0yOV09IklOVEVSRkVST01FVFJJQ19TRU5TT1IiLHRbdC5NVUxUSVNQRUNUUkFMX1NFTlNPUj0zMF09Ik1VTFRJU1BFQ1RSQUxfU0VOU09SIix0W3QuSFlQRVJTUEVDVFJBTF9TRU5TT1I9MzFdPSJIWVBFUlNQRUNUUkFMX1NFTlNPUiIsdFt0LkdQU19SRUNFSVZFUj0zMl09IkdQU19SRUNFSVZFUiIsdFt0LlJBRElPX0NPTU1VTklDQVRJT05TPTMzXT0iUkFESU9fQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9DT01NVU5JQ0FUSU9OUz0zNF09IkxBU0VSX0NPTU1VTklDQVRJT05TIix0W3QuU0FURUxMSVRFX0NPTU1VTklDQVRJT05TPTM1XT0iU0FURUxMSVRFX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfSU5TVFJVTUVOVD0zNl09IkxBU0VSX0lOU1RSVU1FTlQiLHRbdC5SRl9BTkFMWVpFUj0zN109IlJGX0FOQUxZWkVSIix0W3QuSU9OT1NQSEVSSUNfU0VOU09SPTM4XT0iSU9OT1NQSEVSSUNfU0VOU09SIix0W3QuTEFTRVJfSU1BR0lORz0zOV09IkxBU0VSX0lNQUdJTkciLHRbdC5PUFRJQ0FMX1RFTEVTQ09QRT00MF09Ik9QVElDQUxfVEVMRVNDT1BFIix0W3QuSElHSF9SRVNPTFVUSU9OX09QVElDQUw9NDFdPSJISUdIX1JFU09MVVRJT05fT1BUSUNBTCIsdFt0LlJBRElPPTQyXT0iUkFESU8iLHRbdC5NSUNST1dBVkVfVFJBTlNNSVRURVI9NDNdPSJNSUNST1dBVkVfVFJBTlNNSVRURVIiLHRbdC5SRl9NT05JVE9SPTQ0XT0iUkZfTU9OSVRPUiIsdFt0LkhGX1JBRElPX0NPTU1VTklDQVRJT05TPTQ1XT0iSEZfUkFESU9fQ09NTVVOSUNBVElPTlMifSkoSXB8fChJcD17fSkpfSk7dmFyIHBwLHRiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LmxpbmVhcj0wXT0ibGluZWFyIix0W3QuY2lyY3VsYXI9MV09ImNpcmN1bGFyIix0W3QuZWxsaXB0aWNhbD0yXT0iZWxsaXB0aWNhbCIsdFt0LnVucG9sYXJpemVkPTNdPSJ1bnBvbGFyaXplZCJ9KShwcHx8KHBwPXt9KSl9KTt2YXIgdXAsZWI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QudmVydGljYWw9MF09InZlcnRpY2FsIix0W3QuaG9yaXpvbnRhbD0xXT0iaG9yaXpvbnRhbCIsdFt0LmxlZnRIYW5kQ2lyY3VsYXI9Ml09ImxlZnRIYW5kQ2lyY3VsYXIiLHRbdC5yaWdodEhhbmRDaXJjdWxhcj0zXT0icmlnaHRIYW5kQ2lyY3VsYXIifSkodXB8fCh1cD17fSkpfSk7dmFyIGliPVMoKCk9PntfdCgpfSk7dmFyIENwPVMoKCk9PntfdCgpO1hGKCk7cUYoKTskRigpO1JwKCk7dGIoKTtlYigpO2liKCl9KTt2YXIgZ3A9UygoKT0+e190KCk7Q3AoKX0pO3ZhciBUcCxuYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5OT19DVVJSRU5UX0VMRU1FTlRTPTBdPSJOT19DVVJSRU5UX0VMRU1FTlRTIix0W3QuTk9fSU5JVElBTF9FTEVNRU5UUz0xXT0iTk9fSU5JVElBTF9FTEVNRU5UUyIsdFt0Lk5PX0VMRU1FTlRTX0FWQUlMQUJMRT0yXT0iTk9fRUxFTUVOVFNfQVZBSUxBQkxFIix0W3QuT0s9M109Ik9LIn0pKFRwfHwoVHA9e30pKX0pO3ZhciBOcCxzYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5EUlk9MF09IkRSWSIsdFt0LldFVD0xXT0iV0VUIn0pKE5wfHwoTnA9e30pKX0pO3ZhciBGcCxvYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5QQVlMT0FEPTBdPSJQQVlMT0FEIix0W3QuUk9DS0VUX0JPRFk9MV09IlJPQ0tFVF9CT0RZIix0W3QuREVCUklTPTJdPSJERUJSSVMiLHRbdC5VTktOT1dOPTNdPSJVTktOT1dOIn0pKEZwfHwoRnA9e30pKX0pO3ZhciBicCxyYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUEVSQVRJT05BTD0wXT0iT1BFUkFUSU9OQUwiLHRbdC5OT05PUEVSQVRJT05BTD0xXT0iTk9OT1BFUkFUSU9OQUwiLHRbdC5QQVJUSUFMTFlfT1BFUkFUSU9OQUw9Ml09IlBBUlRJQUxMWV9PUEVSQVRJT05BTCIsdFt0LkJBQ0tVUF9TVEFOREJZPTNdPSJCQUNLVVBfU1RBTkRCWSIsdFt0LlNQQVJFPTRdPSJTUEFSRSIsdFt0LkVYVEVOREVEX01JU1NJT049NV09IkVYVEVOREVEX01JU1NJT04iLHRbdC5ERUNBWUVEPTZdPSJERUNBWUVEIix0W3QuVU5LTk9XTj03XT0iVU5LTk9XTiJ9KShicHx8KGJwPXt9KSl9KTt2YXIgWXAsYWI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1JCSVQ9MF09Ik9SQklUIix0W3QuTEFORElORz0xXT0iTEFORElORyIsdFt0LklNUEFDVD0yXT0iSU1QQUNUIix0W3QuRE9DS0VEPTNdPSJET0NLRUQiLHRbdC5ST1VORFRSSVA9NF09IlJPVU5EVFJJUCJ9KShZcHx8KFlwPXt9KSl9KTt2YXIgVnA9UygoKT0+e190KCk7Z3AoKTtuYigpO3NiKCk7b2IoKTtyYigpO2FiKCl9KTt2YXIgVjM9UygoKT0+e190KCk7VnAoKX0pO3ZhciBTcCxBYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TaWduaW5nPTBdPSJTaWduaW5nIix0W3QuRW5jcnlwdGlvbj0xXT0iRW5jcnlwdGlvbiJ9KShTcHx8KFNwPXt9KSl9KTt2YXIgaGI9UygoKT0+e190KCk7QWIoKX0pO3ZhciBPcD1TKCgpPT57X3QoKTtLRigpO2hiKCl9KTt2YXIgQnAsY2I9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuQ0FMQ1VMQVRFRD0wXT0iQ0FMQ1VMQVRFRCIsdFt0LkRFRkFVTFQ9MV09IkRFRkFVTFQifSkoQnB8fChCcD17fSkpfSk7dmFyIGRmLHlfPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShkZnx8KGRmPXt9KSl9KTt2YXIgbGI9UygoKT0+e190KCk7VnAoKTtPcCgpO2NiKCk7eV8oKX0pO3ZhciBHcD1TKCgpPT57X3QoKX0pO3ZhciBXcCxkYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FTExJUFNPSUQ9MF09IkVMTElQU09JRCIsdFt0LkJPWD0xXT0iQk9YIn0pKFdwfHwoV3A9e30pKX0pO3ZhciBtYj1TKCgpPT57X3QoKTtsYigpO0dwKCk7eV8oKTtkYigpfSk7dmFyIEIzPVMoKCk9PntfdCgpO21iKCl9KTt2YXIgRzM9UygoKT0+e190KCk7T3AoKX0pO3ZhciBXMz1TKCgpPT57X3QoKTtDcCgpfSk7dmFyIEQzPVMoKCk9PntfdCgpO2dwKCl9KTt2YXIgVTM9UygoKT0+e190KCk7R3AoKX0pO3ZhciBmYj1TKCgpPT57X3QoKTt5XygpfSk7dmFyIE0zPVMoKCk9PntfdCgpO2ZiKCl9KTt2YXIgUTM9UygoKT0+e0tGKCk7WEYoKTtWcCgpO1YzKCk7bWIoKTtCMygpO2xiKCk7aGIoKTtxRigpOyRGKCk7T3AoKTtHMygpO1JwKCk7Q3AoKTtXMygpO0FiKCk7Z3AoKTtEMygpO0dwKCk7VTMoKTt0YigpO2ZiKCk7TTMoKTtlYigpO2liKCk7Y2IoKTtuYigpO3NiKCk7b2IoKTtyYigpO2FiKCk7eV8oKTtkYigpfSk7dmFyIEViPVMoKCk9PntfdCgpfSk7dmFyIGszPVMoKCk9PntfdCgpO0ViKCl9KTt2YXIgTDM9UygoKT0+e0ViKCk7azMoKX0pO3ZhciBEcD1TKCgpPT57X3QoKX0pO3ZhciBfYj1TKCgpPT57X3QoKTtEcCgpfSk7dmFyIFVwLFJiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlJFQUw9MF09IlJFQUwiLHRbdC5TSU1VTEFURUQ9MV09IlNJTVVMQVRFRCIsdFt0LlNZTlRIRVRJQz0yXT0iU1lOVEhFVElDIn0pKFVwfHwoVXA9e30pKX0pO3ZhciBNcCxaYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuT1BUSUNBTD0xXT0iT1BUSUNBTCIsdFt0LklORlJBUkVEX1NFTlNPUj0yXT0iSU5GUkFSRURfU0VOU09SIix0W3QuVUxUUkFWSU9MRVRfU0VOU09SPTNdPSJVTFRSQVZJT0xFVF9TRU5TT1IiLHRbdC5YX1JBWV9TRU5TT1I9NF09IlhfUkFZX1NFTlNPUiIsdFt0LkdBTU1BX1JBWV9TRU5TT1I9NV09IkdBTU1BX1JBWV9TRU5TT1IiLHRbdC5SQURBUj02XT0iUkFEQVIiLHRbdC5QSEFTRURfQVJSQVlfUkFEQVI9N109IlBIQVNFRF9BUlJBWV9SQURBUiIsdFt0LlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUj04XT0iU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSIix0W3QuQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFPTldPSJCSVNUQVRJQ19SQURJT19URUxFU0NPUEUiLHRbdC5SQURJT19URUxFU0NPUEU9MTBdPSJSQURJT19URUxFU0NPUEUiLHRbdC5BVE1PU1BIRVJJQ19TRU5TT1I9MTFdPSJBVE1PU1BIRVJJQ19TRU5TT1IiLHRbdC5TUEFDRV9XRUFUSEVSX1NFTlNPUj0xMl09IlNQQUNFX1dFQVRIRVJfU0VOU09SIix0W3QuRU5WSVJPTk1FTlRBTF9TRU5TT1I9MTNdPSJFTlZJUk9OTUVOVEFMX1NFTlNPUiIsdFt0LlNFSVNNSUNfU0VOU09SPTE0XT0iU0VJU01JQ19TRU5TT1IiLHRbdC5HUkFWSU1FVFJJQ19TRU5TT1I9MTVdPSJHUkFWSU1FVFJJQ19TRU5TT1IiLHRbdC5NQUdORVRJQ19TRU5TT1I9MTZdPSJNQUdORVRJQ19TRU5TT1IiLHRbdC5FTEVDVFJPTUFHTkVUSUNfU0VOU09SPTE3XT0iRUxFQ1RST01BR05FVElDX1NFTlNPUiIsdFt0LlRIRVJNQUxfU0VOU09SPTE4XT0iVEhFUk1BTF9TRU5TT1IiLHRbdC5DSEVNSUNBTF9TRU5TT1I9MTldPSJDSEVNSUNBTF9TRU5TT1IiLHRbdC5CSU9MT0dJQ0FMX1NFTlNPUj0yMF09IkJJT0xPR0lDQUxfU0VOU09SIix0W3QuUkFESUFUSU9OX1NFTlNPUj0yMV09IlJBRElBVElPTl9TRU5TT1IiLHRbdC5QQVJUSUNMRV9ERVRFQ1RPUj0yMl09IlBBUlRJQ0xFX0RFVEVDVE9SIix0W3QuTElEQVI9MjNdPSJMSURBUiIsdFt0LlNPTkFSPTI0XT0iU09OQVIiLHRbdC5URUxFU0NPUEU9MjVdPSJURUxFU0NPUEUiLHRbdC5TUEVDVFJPU0NPUElDX1NFTlNPUj0yNl09IlNQRUNUUk9TQ09QSUNfU0VOU09SIix0W3QuUEhPVE9NRVRSSUNfU0VOU09SPTI3XT0iUEhPVE9NRVRSSUNfU0VOU09SIix0W3QuUE9MQVJJTUVUUklDX1NFTlNPUj0yOF09IlBPTEFSSU1FVFJJQ19TRU5TT1IiLHRbdC5JTlRFUkZFUk9NRVRSSUNfU0VOU09SPTI5XT0iSU5URVJGRVJPTUVUUklDX1NFTlNPUiIsdFt0Lk1VTFRJU1BFQ1RSQUxfU0VOU09SPTMwXT0iTVVMVElTUEVDVFJBTF9TRU5TT1IiLHRbdC5IWVBFUlNQRUNUUkFMX1NFTlNPUj0zMV09IkhZUEVSU1BFQ1RSQUxfU0VOU09SIix0W3QuR1BTX1JFQ0VJVkVSPTMyXT0iR1BTX1JFQ0VJVkVSIix0W3QuUkFESU9fQ09NTVVOSUNBVElPTlM9MzNdPSJSQURJT19DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0NPTU1VTklDQVRJT05TPTM0XT0iTEFTRVJfQ09NTVVOSUNBVElPTlMiLHRbdC5TQVRFTExJVEVfQ09NTVVOSUNBVElPTlM9MzVdPSJTQVRFTExJVEVfQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9JTlNUUlVNRU5UPTM2XT0iTEFTRVJfSU5TVFJVTUVOVCIsdFt0LlJGX0FOQUxZWkVSPTM3XT0iUkZfQU5BTFlaRVIiLHRbdC5JT05PU1BIRVJJQ19TRU5TT1I9MzhdPSJJT05PU1BIRVJJQ19TRU5TT1IiLHRbdC5MQVNFUl9JTUFHSU5HPTM5XT0iTEFTRVJfSU1BR0lORyIsdFt0Lk9QVElDQUxfVEVMRVNDT1BFPTQwXT0iT1BUSUNBTF9URUxFU0NPUEUiLHRbdC5ISUdIX1JFU09MVVRJT05fT1BUSUNBTD00MV09IkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMIix0W3QuUkFESU89NDJdPSJSQURJTyIsdFt0Lk1JQ1JPV0FWRV9UUkFOU01JVFRFUj00M109Ik1JQ1JPV0FWRV9UUkFOU01JVFRFUiIsdFt0LlJGX01PTklUT1I9NDRdPSJSRl9NT05JVE9SIix0W3QuSEZfUkFESU9fQ09NTVVOSUNBVElPTlM9NDVdPSJIRl9SQURJT19DT01NVU5JQ0FUSU9OUyJ9KShNcHx8KE1wPXt9KSl9KTt2YXIgUXAsSWI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QubGluZWFyPTBdPSJsaW5lYXIiLHRbdC5jaXJjdWxhcj0xXT0iY2lyY3VsYXIiLHRbdC5lbGxpcHRpY2FsPTJdPSJlbGxpcHRpY2FsIix0W3QudW5wb2xhcml6ZWQ9M109InVucG9sYXJpemVkIn0pKFFwfHwoUXA9e30pKX0pO3ZhciBrcCxwYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC52ZXJ0aWNhbD0wXT0idmVydGljYWwiLHRbdC5ob3Jpem9udGFsPTFdPSJob3Jpem9udGFsIix0W3QubGVmdEhhbmRDaXJjdWxhcj0yXT0ibGVmdEhhbmRDaXJjdWxhciIsdFt0LnJpZ2h0SGFuZENpcmN1bGFyPTNdPSJyaWdodEhhbmRDaXJjdWxhciJ9KShrcHx8KGtwPXt9KSl9KTt2YXIgdWI9UygoKT0+e190KCl9KTt2YXIgTHA9UygoKT0+e190KCk7X2IoKTtSYigpO1piKCk7RHAoKTtJYigpO3BiKCk7dWIoKX0pO3ZhciB5cD1TKCgpPT57X3QoKTtMcCgpfSk7dmFyIHdwLENiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk5PX0NVUlJFTlRfRUxFTUVOVFM9MF09Ik5PX0NVUlJFTlRfRUxFTUVOVFMiLHRbdC5OT19JTklUSUFMX0VMRU1FTlRTPTFdPSJOT19JTklUSUFMX0VMRU1FTlRTIix0W3QuTk9fRUxFTUVOVFNfQVZBSUxBQkxFPTJdPSJOT19FTEVNRU5UU19BVkFJTEFCTEUiLHRbdC5PSz0zXT0iT0sifSkod3B8fCh3cD17fSkpfSk7dmFyIHhwLGdiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkRSWT0wXT0iRFJZIix0W3QuV0VUPTFdPSJXRVQifSkoeHB8fCh4cD17fSkpfSk7dmFyIFBwLFRiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlBBWUxPQUQ9MF09IlBBWUxPQUQiLHRbdC5ST0NLRVRfQk9EWT0xXT0iUk9DS0VUX0JPRFkiLHRbdC5ERUJSSVM9Ml09IkRFQlJJUyIsdFt0LlVOS05PV049M109IlVOS05PV04ifSkoUHB8fChQcD17fSkpfSk7dmFyIEpwLE5iPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk9QRVJBVElPTkFMPTBdPSJPUEVSQVRJT05BTCIsdFt0Lk5PTk9QRVJBVElPTkFMPTFdPSJOT05PUEVSQVRJT05BTCIsdFt0LlBBUlRJQUxMWV9PUEVSQVRJT05BTD0yXT0iUEFSVElBTExZX09QRVJBVElPTkFMIix0W3QuQkFDS1VQX1NUQU5EQlk9M109IkJBQ0tVUF9TVEFOREJZIix0W3QuU1BBUkU9NF09IlNQQVJFIix0W3QuRVhURU5ERURfTUlTU0lPTj01XT0iRVhURU5ERURfTUlTU0lPTiIsdFt0LkRFQ0FZRUQ9Nl09IkRFQ0FZRUQiLHRbdC5VTktOT1dOPTddPSJVTktOT1dOIn0pKEpwfHwoSnA9e30pKX0pO3ZhciBqcCxGYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUkJJVD0wXT0iT1JCSVQiLHRbdC5MQU5ESU5HPTFdPSJMQU5ESU5HIix0W3QuSU1QQUNUPTJdPSJJTVBBQ1QiLHRbdC5ET0NLRUQ9M109IkRPQ0tFRCIsdFt0LlJPVU5EVFJJUD00XT0iUk9VTkRUUklQIn0pKGpwfHwoanA9e30pKX0pO3ZhciBIcD1TKCgpPT57X3QoKTt5cCgpO0NiKCk7Z2IoKTtUYigpO05iKCk7RmIoKX0pO3ZhciBKMz1TKCgpPT57X3QoKTtIcCgpfSk7dmFyIGJiPVMoKCk9PntfdCgpO0hwKCl9KTt2YXIgajM9UygoKT0+e190KCk7YmIoKX0pO3ZhciBIMz1TKCgpPT57X3QoKTtMcCgpfSk7dmFyIHYzPVMoKCk9PntfdCgpO3lwKCl9KTt2YXIgejM9UygoKT0+e19iKCk7SHAoKTtKMygpO2JiKCk7ajMoKTtSYigpO1piKCk7RHAoKTtMcCgpO0gzKCk7eXAoKTt2MygpO0liKCk7cGIoKTt1YigpO0NiKCk7Z2IoKTtUYigpO05iKCk7RmIoKX0pO3ZhciBZYj1TKCgpPT57X3QoKX0pO3ZhciBLMz1TKCgpPT57X3QoKTtZYigpfSk7dmFyIFgzPVMoKCk9PntZYigpO0szKCl9KTt2YXIgVmI9UygoKT0+e190KCl9KTt2YXIgcTM9UygoKT0+e190KCk7VmIoKX0pO3ZhciAkMz1TKCgpPT57VmIoKTtxMygpfSk7dmFyIHdfLHZwPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KSh3X3x8KHdfPXt9KSl9KTt2YXIgU2I9UygoKT0+e190KCk7dnAoKX0pO3ZhciB0ND1TKCgpPT57X3QoKTtTYigpfSk7dmFyIE9iPVMoKCk9PntfdCgpO3ZwKCl9KTt2YXIgZTQ9UygoKT0+e190KCk7T2IoKX0pO3ZhciBpND1TKCgpPT57U2IoKTt0NCgpO09iKCk7ZTQoKTt2cCgpfSk7dmFyIHpwLEJiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk9CU0VSVkVEPTBdPSJPQlNFUlZFRCIsdFt0LlBSRURJQ1RFRD0xXT0iUFJFRElDVEVEIn0pKHpwfHwoenA9e30pKX0pO3ZhciBHYj1TKCgpPT57X3QoKTtCYigpfSk7dmFyIG40PVMoKCk9PntfdCgpO0diKCl9KTt2YXIgczQ9UygoKT0+e0JiKCk7R2IoKTtuNCgpfSk7dmFyIFdiPVMoKCk9PntfdCgpfSk7dmFyIEtwLERiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlNpZ25pbmc9MF09IlNpZ25pbmciLHRbdC5FbmNyeXB0aW9uPTFdPSJFbmNyeXB0aW9uIn0pKEtwfHwoS3A9e30pKX0pO3ZhciBVYj1TKCgpPT57X3QoKTtEYigpfSk7dmFyIE1iPVMoKCk9PntfdCgpO1diKCk7VWIoKX0pO3ZhciBvND1TKCgpPT57X3QoKTtNYigpfSk7dmFyIHI0PVMoKCk9PntXYigpO1ViKCk7TWIoKTtvNCgpO0RiKCl9KTt2YXIgWHAsUWI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1VUTElFUj0wXT0iT1VUTElFUiJ9KShYcHx8KFhwPXt9KSl9KTt2YXIga2I9UygoKT0+e190KCk7UWIoKX0pO3ZhciBMYj1TKCgpPT57X3QoKTtrYigpfSk7dmFyIGE0PVMoKCk9PntfdCgpO0xiKCl9KTt2YXIgQTQ9UygoKT0+e0xiKCk7YTQoKTtrYigpO1FiKCl9KTt2YXIgcXA9UygoKT0+e190KCl9KTt2YXIgeWI9UygoKT0+e190KCk7cXAoKX0pO3ZhciAkcCx3Yj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5SRUFMPTBdPSJSRUFMIix0W3QuU0lNVUxBVEVEPTFdPSJTSU1VTEFURUQiLHRbdC5TWU5USEVUSUM9Ml09IlNZTlRIRVRJQyJ9KSgkcHx8KCRwPXt9KSl9KTt2YXIgdHUseGI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0Lk9QVElDQUw9MV09Ik9QVElDQUwiLHRbdC5JTkZSQVJFRF9TRU5TT1I9Ml09IklORlJBUkVEX1NFTlNPUiIsdFt0LlVMVFJBVklPTEVUX1NFTlNPUj0zXT0iVUxUUkFWSU9MRVRfU0VOU09SIix0W3QuWF9SQVlfU0VOU09SPTRdPSJYX1JBWV9TRU5TT1IiLHRbdC5HQU1NQV9SQVlfU0VOU09SPTVdPSJHQU1NQV9SQVlfU0VOU09SIix0W3QuUkFEQVI9Nl09IlJBREFSIix0W3QuUEhBU0VEX0FSUkFZX1JBREFSPTddPSJQSEFTRURfQVJSQVlfUkFEQVIiLHRbdC5TWU5USEVUSUNfQVBFUlRVUkVfUkFEQVI9OF09IlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUiIsdFt0LkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRT05XT0iQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFIix0W3QuUkFESU9fVEVMRVNDT1BFPTEwXT0iUkFESU9fVEVMRVNDT1BFIix0W3QuQVRNT1NQSEVSSUNfU0VOU09SPTExXT0iQVRNT1NQSEVSSUNfU0VOU09SIix0W3QuU1BBQ0VfV0VBVEhFUl9TRU5TT1I9MTJdPSJTUEFDRV9XRUFUSEVSX1NFTlNPUiIsdFt0LkVOVklST05NRU5UQUxfU0VOU09SPTEzXT0iRU5WSVJPTk1FTlRBTF9TRU5TT1IiLHRbdC5TRUlTTUlDX1NFTlNPUj0xNF09IlNFSVNNSUNfU0VOU09SIix0W3QuR1JBVklNRVRSSUNfU0VOU09SPTE1XT0iR1JBVklNRVRSSUNfU0VOU09SIix0W3QuTUFHTkVUSUNfU0VOU09SPTE2XT0iTUFHTkVUSUNfU0VOU09SIix0W3QuRUxFQ1RST01BR05FVElDX1NFTlNPUj0xN109IkVMRUNUUk9NQUdORVRJQ19TRU5TT1IiLHRbdC5USEVSTUFMX1NFTlNPUj0xOF09IlRIRVJNQUxfU0VOU09SIix0W3QuQ0hFTUlDQUxfU0VOU09SPTE5XT0iQ0hFTUlDQUxfU0VOU09SIix0W3QuQklPTE9HSUNBTF9TRU5TT1I9MjBdPSJCSU9MT0dJQ0FMX1NFTlNPUiIsdFt0LlJBRElBVElPTl9TRU5TT1I9MjFdPSJSQURJQVRJT05fU0VOU09SIix0W3QuUEFSVElDTEVfREVURUNUT1I9MjJdPSJQQVJUSUNMRV9ERVRFQ1RPUiIsdFt0LkxJREFSPTIzXT0iTElEQVIiLHRbdC5TT05BUj0yNF09IlNPTkFSIix0W3QuVEVMRVNDT1BFPTI1XT0iVEVMRVNDT1BFIix0W3QuU1BFQ1RST1NDT1BJQ19TRU5TT1I9MjZdPSJTUEVDVFJPU0NPUElDX1NFTlNPUiIsdFt0LlBIT1RPTUVUUklDX1NFTlNPUj0yN109IlBIT1RPTUVUUklDX1NFTlNPUiIsdFt0LlBPTEFSSU1FVFJJQ19TRU5TT1I9MjhdPSJQT0xBUklNRVRSSUNfU0VOU09SIix0W3QuSU5URVJGRVJPTUVUUklDX1NFTlNPUj0yOV09IklOVEVSRkVST01FVFJJQ19TRU5TT1IiLHRbdC5NVUxUSVNQRUNUUkFMX1NFTlNPUj0zMF09Ik1VTFRJU1BFQ1RSQUxfU0VOU09SIix0W3QuSFlQRVJTUEVDVFJBTF9TRU5TT1I9MzFdPSJIWVBFUlNQRUNUUkFMX1NFTlNPUiIsdFt0LkdQU19SRUNFSVZFUj0zMl09IkdQU19SRUNFSVZFUiIsdFt0LlJBRElPX0NPTU1VTklDQVRJT05TPTMzXT0iUkFESU9fQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9DT01NVU5JQ0FUSU9OUz0zNF09IkxBU0VSX0NPTU1VTklDQVRJT05TIix0W3QuU0FURUxMSVRFX0NPTU1VTklDQVRJT05TPTM1XT0iU0FURUxMSVRFX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfSU5TVFJVTUVOVD0zNl09IkxBU0VSX0lOU1RSVU1FTlQiLHRbdC5SRl9BTkFMWVpFUj0zN109IlJGX0FOQUxZWkVSIix0W3QuSU9OT1NQSEVSSUNfU0VOU09SPTM4XT0iSU9OT1NQSEVSSUNfU0VOU09SIix0W3QuTEFTRVJfSU1BR0lORz0zOV09IkxBU0VSX0lNQUdJTkciLHRbdC5PUFRJQ0FMX1RFTEVTQ09QRT00MF09Ik9QVElDQUxfVEVMRVNDT1BFIix0W3QuSElHSF9SRVNPTFVUSU9OX09QVElDQUw9NDFdPSJISUdIX1JFU09MVVRJT05fT1BUSUNBTCIsdFt0LlJBRElPPTQyXT0iUkFESU8iLHRbdC5NSUNST1dBVkVfVFJBTlNNSVRURVI9NDNdPSJNSUNST1dBVkVfVFJBTlNNSVRURVIiLHRbdC5SRl9NT05JVE9SPTQ0XT0iUkZfTU9OSVRPUiIsdFt0LkhGX1JBRElPX0NPTU1VTklDQVRJT05TPTQ1XT0iSEZfUkFESU9fQ09NTVVOSUNBVElPTlMifSkodHV8fCh0dT17fSkpfSk7dmFyIGV1LFBiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LmxpbmVhcj0wXT0ibGluZWFyIix0W3QuY2lyY3VsYXI9MV09ImNpcmN1bGFyIix0W3QuZWxsaXB0aWNhbD0yXT0iZWxsaXB0aWNhbCIsdFt0LnVucG9sYXJpemVkPTNdPSJ1bnBvbGFyaXplZCJ9KShldXx8KGV1PXt9KSl9KTt2YXIgaXUsSmI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QudmVydGljYWw9MF09InZlcnRpY2FsIix0W3QuaG9yaXpvbnRhbD0xXT0iaG9yaXpvbnRhbCIsdFt0LmxlZnRIYW5kQ2lyY3VsYXI9Ml09ImxlZnRIYW5kQ2lyY3VsYXIiLHRbdC5yaWdodEhhbmRDaXJjdWxhcj0zXT0icmlnaHRIYW5kQ2lyY3VsYXIifSkoaXV8fChpdT17fSkpfSk7dmFyIGpiPVMoKCk9PntfdCgpfSk7dmFyIEhiPVMoKCk9PntfdCgpO3liKCk7d2IoKTt4YigpO3FwKCk7UGIoKTtKYigpO2piKCl9KTt2YXIgYzQ9UygoKT0+e190KCk7SGIoKX0pO3ZhciBsND1TKCgpPT57eWIoKTt3YigpO3hiKCk7cXAoKTtIYigpO2M0KCk7UGIoKTtKYigpO2piKCl9KTt2YXIgdmI9UygoKT0+e190KCl9KTt2YXIgbnU9UygoKT0+e190KCl9KTt2YXIgbTQ9UygoKT0+e190KCk7bnUoKX0pO3ZhciBzdT1TKCgpPT57X3QoKX0pO3ZhciB6Yj1TKCgpPT57X3QoKTtzdSgpfSk7dmFyIG91LEtiPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlJFQUw9MF09IlJFQUwiLHRbdC5TSU1VTEFURUQ9MV09IlNJTVVMQVRFRCIsdFt0LlNZTlRIRVRJQz0yXT0iU1lOVEhFVElDIn0pKG91fHwob3U9e30pKX0pO3ZhciBydSxYYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuT1BUSUNBTD0xXT0iT1BUSUNBTCIsdFt0LklORlJBUkVEX1NFTlNPUj0yXT0iSU5GUkFSRURfU0VOU09SIix0W3QuVUxUUkFWSU9MRVRfU0VOU09SPTNdPSJVTFRSQVZJT0xFVF9TRU5TT1IiLHRbdC5YX1JBWV9TRU5TT1I9NF09IlhfUkFZX1NFTlNPUiIsdFt0LkdBTU1BX1JBWV9TRU5TT1I9NV09IkdBTU1BX1JBWV9TRU5TT1IiLHRbdC5SQURBUj02XT0iUkFEQVIiLHRbdC5QSEFTRURfQVJSQVlfUkFEQVI9N109IlBIQVNFRF9BUlJBWV9SQURBUiIsdFt0LlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUj04XT0iU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSIix0W3QuQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFPTldPSJCSVNUQVRJQ19SQURJT19URUxFU0NPUEUiLHRbdC5SQURJT19URUxFU0NPUEU9MTBdPSJSQURJT19URUxFU0NPUEUiLHRbdC5BVE1PU1BIRVJJQ19TRU5TT1I9MTFdPSJBVE1PU1BIRVJJQ19TRU5TT1IiLHRbdC5TUEFDRV9XRUFUSEVSX1NFTlNPUj0xMl09IlNQQUNFX1dFQVRIRVJfU0VOU09SIix0W3QuRU5WSVJPTk1FTlRBTF9TRU5TT1I9MTNdPSJFTlZJUk9OTUVOVEFMX1NFTlNPUiIsdFt0LlNFSVNNSUNfU0VOU09SPTE0XT0iU0VJU01JQ19TRU5TT1IiLHRbdC5HUkFWSU1FVFJJQ19TRU5TT1I9MTVdPSJHUkFWSU1FVFJJQ19TRU5TT1IiLHRbdC5NQUdORVRJQ19TRU5TT1I9MTZdPSJNQUdORVRJQ19TRU5TT1IiLHRbdC5FTEVDVFJPTUFHTkVUSUNfU0VOU09SPTE3XT0iRUxFQ1RST01BR05FVElDX1NFTlNPUiIsdFt0LlRIRVJNQUxfU0VOU09SPTE4XT0iVEhFUk1BTF9TRU5TT1IiLHRbdC5DSEVNSUNBTF9TRU5TT1I9MTldPSJDSEVNSUNBTF9TRU5TT1IiLHRbdC5CSU9MT0dJQ0FMX1NFTlNPUj0yMF09IkJJT0xPR0lDQUxfU0VOU09SIix0W3QuUkFESUFUSU9OX1NFTlNPUj0yMV09IlJBRElBVElPTl9TRU5TT1IiLHRbdC5QQVJUSUNMRV9ERVRFQ1RPUj0yMl09IlBBUlRJQ0xFX0RFVEVDVE9SIix0W3QuTElEQVI9MjNdPSJMSURBUiIsdFt0LlNPTkFSPTI0XT0iU09OQVIiLHRbdC5URUxFU0NPUEU9MjVdPSJURUxFU0NPUEUiLHRbdC5TUEVDVFJPU0NPUElDX1NFTlNPUj0yNl09IlNQRUNUUk9TQ09QSUNfU0VOU09SIix0W3QuUEhPVE9NRVRSSUNfU0VOU09SPTI3XT0iUEhPVE9NRVRSSUNfU0VOU09SIix0W3QuUE9MQVJJTUVUUklDX1NFTlNPUj0yOF09IlBPTEFSSU1FVFJJQ19TRU5TT1IiLHRbdC5JTlRFUkZFUk9NRVRSSUNfU0VOU09SPTI5XT0iSU5URVJGRVJPTUVUUklDX1NFTlNPUiIsdFt0Lk1VTFRJU1BFQ1RSQUxfU0VOU09SPTMwXT0iTVVMVElTUEVDVFJBTF9TRU5TT1IiLHRbdC5IWVBFUlNQRUNUUkFMX1NFTlNPUj0zMV09IkhZUEVSU1BFQ1RSQUxfU0VOU09SIix0W3QuR1BTX1JFQ0VJVkVSPTMyXT0iR1BTX1JFQ0VJVkVSIix0W3QuUkFESU9fQ09NTVVOSUNBVElPTlM9MzNdPSJSQURJT19DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0NPTU1VTklDQVRJT05TPTM0XT0iTEFTRVJfQ09NTVVOSUNBVElPTlMiLHRbdC5TQVRFTExJVEVfQ09NTVVOSUNBVElPTlM9MzVdPSJTQVRFTExJVEVfQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9JTlNUUlVNRU5UPTM2XT0iTEFTRVJfSU5TVFJVTUVOVCIsdFt0LlJGX0FOQUxZWkVSPTM3XT0iUkZfQU5BTFlaRVIiLHRbdC5JT05PU1BIRVJJQ19TRU5TT1I9MzhdPSJJT05PU1BIRVJJQ19TRU5TT1IiLHRbdC5MQVNFUl9JTUFHSU5HPTM5XT0iTEFTRVJfSU1BR0lORyIsdFt0Lk9QVElDQUxfVEVMRVNDT1BFPTQwXT0iT1BUSUNBTF9URUxFU0NPUEUiLHRbdC5ISUdIX1JFU09MVVRJT05fT1BUSUNBTD00MV09IkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMIix0W3QuUkFESU89NDJdPSJSQURJTyIsdFt0Lk1JQ1JPV0FWRV9UUkFOU01JVFRFUj00M109Ik1JQ1JPV0FWRV9UUkFOU01JVFRFUiIsdFt0LlJGX01PTklUT1I9NDRdPSJSRl9NT05JVE9SIix0W3QuSEZfUkFESU9fQ09NTVVOSUNBVElPTlM9NDVdPSJIRl9SQURJT19DT01NVU5JQ0FUSU9OUyJ9KShydXx8KHJ1PXt9KSl9KTt2YXIgYXUscWI9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QubGluZWFyPTBdPSJsaW5lYXIiLHRbdC5jaXJjdWxhcj0xXT0iY2lyY3VsYXIiLHRbdC5lbGxpcHRpY2FsPTJdPSJlbGxpcHRpY2FsIix0W3QudW5wb2xhcml6ZWQ9M109InVucG9sYXJpemVkIn0pKGF1fHwoYXU9e30pKX0pO3ZhciBBdSwkYj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC52ZXJ0aWNhbD0wXT0idmVydGljYWwiLHRbdC5ob3Jpem9udGFsPTFdPSJob3Jpem9udGFsIix0W3QubGVmdEhhbmRDaXJjdWxhcj0yXT0ibGVmdEhhbmRDaXJjdWxhciIsdFt0LnJpZ2h0SGFuZENpcmN1bGFyPTNdPSJyaWdodEhhbmRDaXJjdWxhciJ9KShBdXx8KEF1PXt9KSl9KTt2YXIgdFk9UygoKT0+e190KCl9KTt2YXIgeF89UygoKT0+e190KCk7emIoKTtLYigpO1hiKCk7c3UoKTtxYigpOyRiKCk7dFkoKX0pO3ZhciBodT1TKCgpPT57X3QoKTt4XygpfSk7dmFyIGN1LGlZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk5PX0NVUlJFTlRfRUxFTUVOVFM9MF09Ik5PX0NVUlJFTlRfRUxFTUVOVFMiLHRbdC5OT19JTklUSUFMX0VMRU1FTlRTPTFdPSJOT19JTklUSUFMX0VMRU1FTlRTIix0W3QuTk9fRUxFTUVOVFNfQVZBSUxBQkxFPTJdPSJOT19FTEVNRU5UU19BVkFJTEFCTEUiLHRbdC5PSz0zXT0iT0sifSkoY3V8fChjdT17fSkpfSk7dmFyIGx1LG5ZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkRSWT0wXT0iRFJZIix0W3QuV0VUPTFdPSJXRVQifSkobHV8fChsdT17fSkpfSk7dmFyIGR1LHNZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlBBWUxPQUQ9MF09IlBBWUxPQUQiLHRbdC5ST0NLRVRfQk9EWT0xXT0iUk9DS0VUX0JPRFkiLHRbdC5ERUJSSVM9Ml09IkRFQlJJUyIsdFt0LlVOS05PV049M109IlVOS05PV04ifSkoZHV8fChkdT17fSkpfSk7dmFyIG11LG9ZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0Lk9QRVJBVElPTkFMPTBdPSJPUEVSQVRJT05BTCIsdFt0Lk5PTk9QRVJBVElPTkFMPTFdPSJOT05PUEVSQVRJT05BTCIsdFt0LlBBUlRJQUxMWV9PUEVSQVRJT05BTD0yXT0iUEFSVElBTExZX09QRVJBVElPTkFMIix0W3QuQkFDS1VQX1NUQU5EQlk9M109IkJBQ0tVUF9TVEFOREJZIix0W3QuU1BBUkU9NF09IlNQQVJFIix0W3QuRVhURU5ERURfTUlTU0lPTj01XT0iRVhURU5ERURfTUlTU0lPTiIsdFt0LkRFQ0FZRUQ9Nl09IkRFQ0FZRUQiLHRbdC5VTktOT1dOPTddPSJVTktOT1dOIn0pKG11fHwobXU9e30pKX0pO3ZhciBmdSxyWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUkJJVD0wXT0iT1JCSVQiLHRbdC5MQU5ESU5HPTFdPSJMQU5ESU5HIix0W3QuSU1QQUNUPTJdPSJJTVBBQ1QiLHRbdC5ET0NLRUQ9M109IkRPQ0tFRCIsdFt0LlJPVU5EVFJJUD00XT0iUk9VTkRUUklQIn0pKGZ1fHwoZnU9e30pKX0pO3ZhciBFdT1TKCgpPT57X3QoKTtodSgpO2lZKCk7blkoKTtzWSgpO29ZKCk7clkoKX0pO3ZhciBSND1TKCgpPT57X3QoKTtFdSgpfSk7dmFyIF91LGFZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlNpZ25pbmc9MF09IlNpZ25pbmciLHRbdC5FbmNyeXB0aW9uPTFdPSJFbmNyeXB0aW9uIn0pKF91fHwoX3U9e30pKX0pO3ZhciBBWT1TKCgpPT57X3QoKTthWSgpfSk7dmFyIFJ1LGhZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkxJUVVJRD0wXT0iTElRVUlEIix0W3QuU09MSUQ9MV09IlNPTElEIix0W3QuSFlCUklEPTJdPSJIWUJSSUQiLHRbdC5JT049M109IklPTiIsdFt0Lk5VQ0xFQVJfVEhFUk1BTD00XT0iTlVDTEVBUl9USEVSTUFMIix0W3QuT1RIRVI9NV09Ik9USEVSIn0pKFJ1fHwoUnU9e30pKX0pO3ZhciBjWT1TKCgpPT57X3QoKTtoWSgpfSk7dmFyIFp1PVMoKCk9PntfdCgpO3ZiKCk7QVkoKX0pO3ZhciBJND1TKCgpPT57X3QoKTtadSgpfSk7dmFyIGxZPVMoKCk9PntfdCgpfSk7dmFyIHA0PVMoKCk9PntfdCgpO3hfKCl9KTt2YXIgZFk9UygoKT0+e190KCk7Y1koKX0pO3ZhciBtWT1TKCgpPT57X3QoKX0pO3ZhciBJdT1TKCgpPT57X3QoKTtkWSgpO21ZKCl9KTt2YXIgcHUsZlk9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuTEFVTkNIX1NJVEU9MF09IkxBVU5DSF9TSVRFIix0W3QuT0JTRVJWQVRJT05fU1RBVElPTj0xXT0iT0JTRVJWQVRJT05fU1RBVElPTiIsdFt0LkhPQkJZSVNUX09CU0VSVkVSPTJdPSJIT0JCWUlTVF9PQlNFUlZFUiIsdFt0LlJFU0VBUkNIX0ZBQ0lMSVRZPTNdPSJSRVNFQVJDSF9GQUNJTElUWSIsdFt0LlNBVEVMTElURV9HUk9VTkRfU1RBVElPTj00XT0iU0FURUxMSVRFX0dST1VORF9TVEFUSU9OIix0W3QuU1BBQ0VQT1JUPTVdPSJTUEFDRVBPUlQiLHRbdC5NSUxJVEFSWV9CQVNFPTZdPSJNSUxJVEFSWV9CQVNFIix0W3QuV0VBVEhFUl9TVEFUSU9OPTddPSJXRUFUSEVSX1NUQVRJT04iLHRbdC5BU1RST05PTUlDQUxfT0JTRVJWQVRPUlk9OF09IkFTVFJPTk9NSUNBTF9PQlNFUlZBVE9SWSIsdFt0LkVEVUNBVElPTkFMX0lOU1RJVFVURT05XT0iRURVQ0FUSU9OQUxfSU5TVElUVVRFIix0W3QuQ09NTVVOSUNBVElPTl9IVUI9MTBdPSJDT01NVU5JQ0FUSU9OX0hVQiIsdFt0LlBPV0VSX1BMQU5UPTExXT0iUE9XRVJfUExBTlQiLHRbdC5JTkRVU1RSSUFMX0NPTVBMRVg9MTJdPSJJTkRVU1RSSUFMX0NPTVBMRVgiLHRbdC5UUkFOU1BPUlRBVElPTl9IVUI9MTNdPSJUUkFOU1BPUlRBVElPTl9IVUIiLHRbdC5VUkJBTl9BUkVBPTE0XT0iVVJCQU5fQVJFQSIsdFt0Lk5BVElPTkFMX1BBUks9MTVdPSJOQVRJT05BTF9QQVJLIix0W3QuSElTVE9SSUNBTF9TSVRFPTE2XT0iSElTVE9SSUNBTF9TSVRFIix0W3QuT1RIRVI9MTddPSJPVEhFUiJ9KShwdXx8KHB1PXt9KSl9KTt2YXIgdXU9UygoKT0+e190KCk7bFkoKTt4XygpO2ZZKCl9KTt2YXIgRVk9UygoKT0+e190KCk7bnUoKTtFdSgpO1p1KCk7SXUoKTt1dSgpfSk7dmFyIGc0PVMoKCk9PntfdCgpO0VZKCl9KTt2YXIgVDQ9UygoKT0+e190KCk7aHUoKX0pO3ZhciBOND1TKCgpPT57X3QoKTtJdSgpfSk7dmFyIEY0PVMoKCk9PntfdCgpO3V1KCl9KTt2YXIgYjQ9UygoKT0+e3ZiKCk7bnUoKTttNCgpO3piKCk7RXUoKTtSNCgpO0FZKCk7S2IoKTtYYigpO2NZKCk7aFkoKTtadSgpO0k0KCk7c3UoKTtsWSgpO3hfKCk7cDQoKTthWSgpO0VZKCk7ZzQoKTtodSgpO1Q0KCk7cWIoKTtJdSgpO040KCk7dXUoKTtGNCgpO2RZKCk7bVkoKTskYigpO2ZZKCk7dFkoKTtpWSgpO25ZKCk7c1koKTtvWSgpO3JZKCl9KTt2YXIgQ3UsX1k9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuU0dQND0wXT0iU0dQNCIsdFt0LlNHUDRYUD0xXT0iU0dQNFhQIix0W3QuRFNTVD0yXT0iRFNTVCIsdFt0LlVTTT0zXT0iVVNNIn0pKEN1fHwoQ3U9e30pKX0pO3ZhciBSWT1TKCgpPT57X3QoKTtfWSgpfSk7dmFyIFk0PVMoKCk9PntfdCgpO1JZKCl9KTt2YXIgVjQ9UygoKT0+e1JZKCk7WTQoKTtfWSgpfSk7dmFyIFBfLGd1PVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlNHUDQ9MF09IlNHUDQiLHRbdC5TR1A0WFA9MV09IlNHUDRYUCIsdFt0LkRTU1Q9Ml09IkRTU1QiLHRbdC5VU009M109IlVTTSJ9KShQX3x8KFBfPXt9KSl9KTt2YXIgWlk9UygoKT0+e190KCk7Z3UoKX0pO3ZhciBTND1TKCgpPT57X3QoKTtaWSgpfSk7dmFyIElZPVMoKCk9PntfdCgpO2d1KCl9KTt2YXIgTzQ9UygoKT0+e190KCk7SVkoKX0pO3ZhciBCND1TKCgpPT57WlkoKTtTNCgpO0lZKCk7TzQoKTtndSgpfSk7dmFyIG1mLEpfPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShtZnx8KG1mPXt9KSl9KTt2YXIgcFk9UygoKT0+e190KCk7Sl8oKX0pO3ZhciB1WT1TKCgpPT57X3QoKX0pO3ZhciBqXyxUdT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5HTVNUPTBdPSJHTVNUIix0W3QuR1BTPTFdPSJHUFMiLHRbdC5NRVQ9Ml09Ik1FVCIsdFt0Lk1SVD0zXT0iTVJUIix0W3QuU0NMSz00XT0iU0NMSyIsdFt0LlRBST01XT0iVEFJIix0W3QuVENCPTZdPSJUQ0IiLHRbdC5UREI9N109IlREQiIsdFt0LlRDRz04XT0iVENHIix0W3QuVFQ9OV09IlRUIix0W3QuVVQxPTEwXT0iVVQxIix0W3QuVVRDPTExXT0iVVRDIn0pKGpffHwoal89e30pKX0pO3ZhciBDWT1TKCgpPT57X3QoKTtwWSgpO3VZKCk7Sl8oKTtUdSgpfSk7dmFyIGdZPVMoKCk9PntfdCgpO0NZKCl9KTt2YXIgRzQ9UygoKT0+e190KCk7Z1koKX0pO3ZhciBUWT1TKCgpPT57X3QoKTtKXygpfSk7dmFyIFc0PVMoKCk9PntfdCgpO1RZKCl9KTt2YXIgTlk9UygoKT0+e190KCk7VHUoKX0pO3ZhciBEND1TKCgpPT57X3QoKTtOWSgpfSk7dmFyIFU0PVMoKCk9PntnWSgpO0c0KCk7VFkoKTtXNCgpO05ZKCk7RDQoKTtwWSgpO0NZKCk7dVkoKTtKXygpO1R1KCl9KTt2YXIgS3IsTnU9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuU0dQND0wXT0iU0dQNCIsdFt0LlNHUDRYUD0xXT0iU0dQNFhQIix0W3QuRFNTVD0yXT0iRFNTVCIsdFt0LlVTTT0zXT0iVVNNIn0pKEtyfHwoS3I9e30pKX0pO3ZhciBpZCxIXyxGWT1TKCgpPT57X3QoKTtOdSgpO2lkPWNsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmJiPW51bGwsdGhpcy5iYl9wb3M9MH1fX2luaXQoZSxpKXtyZXR1cm4gdGhpcy5iYl9wb3M9ZSx0aGlzLmJiPWksdGhpc31zdGF0aWMgZ2V0Um9vdEFzTUVUKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc01FVChlLGkpe3JldHVybiBlLnNldFBvc2l0aW9uKGUucG9zaXRpb24oKSs0KSwoaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgYnVmZmVySGFzSWRlbnRpZmllcihlKXtyZXR1cm4gZS5fX2hhc19pZGVudGlmaWVyKCIkTUVUIil9TUVBTl9FTEVNRU5UX1RIRU9SWSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpLci5TR1A0fXN0YXRpYyBzdGFydE1FVChlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRNZWFuRWxlbWVudFRoZW9yeShlLGkpe2UuYWRkRmllbGRJbnQ4KDAsaSxLci5TR1A0KX1zdGF0aWMgZW5kTUVUKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hNRVRCdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkTUVUIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZE1FVEJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRNRVQiLCEwKX1zdGF0aWMgY3JlYXRlTUVUKGUsaSl7cmV0dXJuIHQuc3RhcnRNRVQoZSksdC5hZGRNZWFuRWxlbWVudFRoZW9yeShlLGkpLHQuZW5kTUVUKGUpfXVucGFjaygpe3JldHVybiBuZXcgSF8odGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZKCkpfXVucGFja1RvKGUpe2UuTUVBTl9FTEVNRU5UX1RIRU9SWT10aGlzLk1FQU5fRUxFTUVOVF9USEVPUlkoKX19LEhfPWNsYXNze2NvbnN0cnVjdG9yKGU9S3IuU0dQNCl7dGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZPWV9cGFjayhlKXtyZXR1cm4gaWQuY3JlYXRlTUVUKGUsdGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZKX19fSk7dmFyIGZmLHZfLE00PVMoKCk9PntfdCgpO0ZZKCk7ZmY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNNRVRDT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc01FVENPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBpZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydE1FVENPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kTUVUQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlTUVUQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0TUVUQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZE1FVENPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyB2Xyh0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LHZfPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9ZmYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gZmYuY3JlYXRlTUVUQ09MTEVDVElPTihlLGkpfX19KTt2YXIgRGMsYlk9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuU0dQPTBdPSJTR1AiLHRbdC5TR1A0PTFdPSJTR1A0Iix0W3QuU0RQND0yXT0iU0RQNCIsdFt0LlNHUDg9M109IlNHUDgiLHRbdC5TRFA4PTRdPSJTRFA4In0pKERjfHwoRGM9e30pKX0pO3ZhciBMbyxGdT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FQ0VGPTBdPSJFQ0VGIix0W3QuSUNSRj0xXT0iSUNSRiIsdFt0LlRFTUU9Ml09IlRFTUUiLHRbdC5FTlU9M109IkVOVSIsdFt0Lk5FRD00XT0iTkVEIix0W3QuTkVVPTVdPSJORVUiLHRbdC5SSUM9Nl09IlJJQyIsdFt0LkoyMDAwPTddPSJKMjAwMCIsdFt0LkdDUkY9OF09IkdDUkYiLHRbdC5HUkM9OV09IkdSQyIsdFt0LklUUkYyMDAwPTEwXT0iSVRSRjIwMDAiLHRbdC5JVFJGOTM9MTFdPSJJVFJGOTMiLHRbdC5JVFJGOTc9MTJdPSJJVFJGOTciLHRbdC5URFI9MTNdPSJURFIiLHRbdC5UT0Q9MTRdPSJUT0QiLHRbdC5SVE49MTVdPSJSVE4iLHRbdC5UVk49MTZdPSJUVk4iLHRbdC5WVkxIPTE3XT0iVlZMSCIsdFt0LlZMVkg9MThdPSJWTFZIIix0W3QuTFRQPTE5XT0iTFRQIix0W3QuTFZMSD0yMF09IkxWTEgiLHRbdC5QTkU9MjFdPSJQTkUiLHRbdC5CUkY9MjJdPSJCUkYiLHRbdC5SU1c9MjNdPSJSU1ciLHRbdC5UTlc9MjRdPSJUTlcifSkoTG98fChMbz17fSkpfSk7dmFyIFhyLGJ1PVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkdNU1Q9MF09IkdNU1QiLHRbdC5HUFM9MV09IkdQUyIsdFt0Lk1FVD0yXT0iTUVUIix0W3QuTVJUPTNdPSJNUlQiLHRbdC5TQ0xLPTRdPSJTQ0xLIix0W3QuVEFJPTVdPSJUQUkiLHRbdC5UQ0I9Nl09IlRDQiIsdFt0LlREQj03XT0iVERCIix0W3QuVENHPThdPSJUQ0ciLHRbdC5UVD05XT0iVFQiLHRbdC5VVDE9MTBdPSJVVDEiLHRbdC5VVEM9MTFdPSJVVEMifSkoWHJ8fChYcj17fSkpfSk7dmFyIG5kLHpfLFlZPVMoKCk9PntfdCgpO2JZKCk7TnUoKTtGdSgpO2J1KCk7bmQ9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNPTU0oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzT01NKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRPTU0iKX1DQ1NEU19PTU1fVkVSUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNSRUFUSU9OX0RBVEUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw2KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1PUklHSU5BVE9SKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9T0JKRUNUX05BTUUoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9T0JKRUNUX0lEKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTIpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfUNFTlRFUl9OQU1FKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTQpO3JldHVybiBpP3RoaXMuYmIuX19zdHJpbmcodGhpcy5iYl9wb3MraSxlKTpudWxsfVJFRkVSRU5DRV9GUkFNRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTYpO3JldHVybiBlP3RoaXMuYmIucmVhZEludDgodGhpcy5iYl9wb3MrZSk6TG8uVEVNRX1SRUZFUkVOQ0VfRlJBTUVfRVBPQ0goZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxOCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9VElNRV9TWVNURU0oKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDIwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOlhyLlVUQ31NRUFOX0VMRU1FTlRfVEhFT1JZKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpLci5TR1A0fUNPTU1FTlQoZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNCk7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9RVBPQ0goZSl7bGV0IGk9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyNik7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9U0VNSV9NQUpPUl9BWElTKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywyOCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfU1FQU5fTU9USU9OKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywzMCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUVDQ0VOVFJJQ0lUWSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1JTkNMSU5BVElPTigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1SQV9PRl9BU0NfTk9ERSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1BUkdfT0ZfUEVSSUNFTlRFUigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMzgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NRUFOX0FOT01BTFkoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQwKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9R00oKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TUFTUygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1TT0xBUl9SQURfQVJFQSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNDYpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1TT0xBUl9SQURfQ09FRkYoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQ4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9RFJBR19BUkVBKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw1MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfURSQUdfQ09FRkYoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDUyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9RVBIRU1FUklTX1RZUEUoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRJbnQ4KHRoaXMuYmJfcG9zK2UpOkRjLlNHUDR9Q0xBU1NJRklDQVRJT05fVFlQRShlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU2KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1OT1JBRF9DQVRfSUQoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDU4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRVaW50MzIodGhpcy5iYl9wb3MrZSk6MH1FTEVNRU5UX1NFVF9OTygpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjApO3JldHVybiBlP3RoaXMuYmIucmVhZFVpbnQzMih0aGlzLmJiX3BvcytlKTowfVJFVl9BVF9FUE9DSCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1CU1RBUigpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjQpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1NRUFOX01PVElPTl9ET1QoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDY2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9TUVBTl9NT1RJT05fRERPVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNjgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DT1ZfUkVGRVJFTkNFX0ZSQU1FKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw3MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpMby5SU1d9Q1hfWCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNzIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWV9YKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw3NCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX1koKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDc2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1pfWCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNzgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWl9ZKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw4MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNaX1ooKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDgyKTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1goKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDg0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1koKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDg2KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1ooKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDg4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1hfRE9UX1hfRE9UKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5MCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9YKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5Mik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9ZKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5NCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9aKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw5Nik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNZX0RPVF9YX0RPVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsOTgpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWV9ET1RfWV9ET1QoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDEwMCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNaX0RPVF9YKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMDIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWl9ET1RfWSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTA0KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1pfRE9UX1ooKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDEwNik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfUNaX0RPVF9YX0RPVCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTA4KTtyZXR1cm4gZT90aGlzLmJiLnJlYWRGbG9hdDY0KHRoaXMuYmJfcG9zK2UpOjB9Q1pfRE9UX1lfRE9UKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMTApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1DWl9ET1RfWl9ET1QoKXtsZXQgZT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDExMik7cmV0dXJuIGU/dGhpcy5iYi5yZWFkRmxvYXQ2NCh0aGlzLmJiX3BvcytlKTowfVVTRVJfREVGSU5FRF9CSVBfMDA0NF9UWVBFKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMTQpO3JldHVybiBlP3RoaXMuYmIucmVhZFVpbnQzMih0aGlzLmJiX3BvcytlKTowfVVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUihlKXtsZXQgaT10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDExNik7cmV0dXJuIGk/dGhpcy5iYi5fX3N0cmluZyh0aGlzLmJiX3BvcytpLGUpOm51bGx9VVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKGUpe2xldCBpPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsMTE4KTtyZXR1cm4gaT90aGlzLmJiLl9fc3RyaW5nKHRoaXMuYmJfcG9zK2ksZSk6bnVsbH1VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMjApO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1VU0VSX0RFRklORURfTUlDUk9TRUNPTkRTKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3BvcywxMjIpO3JldHVybiBlP3RoaXMuYmIucmVhZEZsb2F0NjQodGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRPTU0oZSl7ZS5zdGFydE9iamVjdCg2MCl9c3RhdGljIGFkZENjc2RzT21tVmVycyhlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDAsaSwwKX1zdGF0aWMgYWRkQ3JlYXRpb25EYXRlKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxLGksMCl9c3RhdGljIGFkZE9yaWdpbmF0b3IoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDIsaSwwKX1zdGF0aWMgYWRkT2JqZWN0TmFtZShlLGkpe2UuYWRkRmllbGRPZmZzZXQoMyxpLDApfXN0YXRpYyBhZGRPYmplY3RJZChlLGkpe2UuYWRkRmllbGRPZmZzZXQoNCxpLDApfXN0YXRpYyBhZGRDZW50ZXJOYW1lKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg1LGksMCl9c3RhdGljIGFkZFJlZmVyZW5jZUZyYW1lKGUsaSl7ZS5hZGRGaWVsZEludDgoNixpLExvLlRFTUUpfXN0YXRpYyBhZGRSZWZlcmVuY2VGcmFtZUVwb2NoKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg3LGksMCl9c3RhdGljIGFkZFRpbWVTeXN0ZW0oZSxpKXtlLmFkZEZpZWxkSW50OCg4LGksWHIuVVRDKX1zdGF0aWMgYWRkTWVhbkVsZW1lbnRUaGVvcnkoZSxpKXtlLmFkZEZpZWxkSW50OCg5LGksS3IuU0dQNCl9c3RhdGljIGFkZENvbW1lbnQoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDEwLGksMCl9c3RhdGljIGFkZEVwb2NoKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCgxMSxpLDApfXN0YXRpYyBhZGRTZW1pTWFqb3JBeGlzKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTIsaSwwKX1zdGF0aWMgYWRkTWVhbk1vdGlvbihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDEzLGksMCl9c3RhdGljIGFkZEVjY2VudHJpY2l0eShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDE0LGksMCl9c3RhdGljIGFkZEluY2xpbmF0aW9uKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTUsaSwwKX1zdGF0aWMgYWRkUmFPZkFzY05vZGUoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgxNixpLDApfXN0YXRpYyBhZGRBcmdPZlBlcmljZW50ZXIoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgxNyxpLDApfXN0YXRpYyBhZGRNZWFuQW5vbWFseShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDE4LGksMCl9c3RhdGljIGFkZEdtKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoMTksaSwwKX1zdGF0aWMgYWRkTWFzcyhlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIwLGksMCl9c3RhdGljIGFkZFNvbGFyUmFkQXJlYShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIxLGksMCl9c3RhdGljIGFkZFNvbGFyUmFkQ29lZmYoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgyMixpLDApfXN0YXRpYyBhZGREcmFnQXJlYShlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDIzLGksMCl9c3RhdGljIGFkZERyYWdDb2VmZihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDI0LGksMCl9c3RhdGljIGFkZEVwaGVtZXJpc1R5cGUoZSxpKXtlLmFkZEZpZWxkSW50OCgyNSxpLERjLlNHUDQpfXN0YXRpYyBhZGRDbGFzc2lmaWNhdGlvblR5cGUoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDI2LGksMCl9c3RhdGljIGFkZE5vcmFkQ2F0SWQoZSxpKXtlLmFkZEZpZWxkSW50MzIoMjcsaSwwKX1zdGF0aWMgYWRkRWxlbWVudFNldE5vKGUsaSl7ZS5hZGRGaWVsZEludDMyKDI4LGksMCl9c3RhdGljIGFkZFJldkF0RXBvY2goZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgyOSxpLDApfXN0YXRpYyBhZGRCc3RhcihlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDMwLGksMCl9c3RhdGljIGFkZE1lYW5Nb3Rpb25Eb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzMSxpLDApfXN0YXRpYyBhZGRNZWFuTW90aW9uRGRvdChlLGkpe2UuYWRkRmllbGRGbG9hdDY0KDMyLGksMCl9c3RhdGljIGFkZENvdlJlZmVyZW5jZUZyYW1lKGUsaSl7ZS5hZGRGaWVsZEludDgoMzMsaSxMby5SU1cpfXN0YXRpYyBhZGRDeFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNCxpLDApfXN0YXRpYyBhZGRDeVgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNSxpLDApfXN0YXRpYyBhZGRDeVkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNixpLDApfXN0YXRpYyBhZGRDelgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzNyxpLDApfXN0YXRpYyBhZGRDelkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzOCxpLDApfXN0YXRpYyBhZGRDelooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCgzOSxpLDApfXN0YXRpYyBhZGRDeERvdFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MCxpLDApfXN0YXRpYyBhZGRDeERvdFkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MSxpLDApfXN0YXRpYyBhZGRDeERvdFooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MixpLDApfXN0YXRpYyBhZGRDeERvdFhEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0MyxpLDApfXN0YXRpYyBhZGRDeURvdFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NCxpLDApfXN0YXRpYyBhZGRDeURvdFkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NSxpLDApfXN0YXRpYyBhZGRDeURvdFooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NixpLDApfXN0YXRpYyBhZGRDeURvdFhEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0NyxpLDApfXN0YXRpYyBhZGRDeURvdFlEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0OCxpLDApfXN0YXRpYyBhZGRDekRvdFgoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg0OSxpLDApfXN0YXRpYyBhZGRDekRvdFkoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MCxpLDApfXN0YXRpYyBhZGRDekRvdFooZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MSxpLDApfXN0YXRpYyBhZGRDekRvdFhEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MixpLDApfXN0YXRpYyBhZGRDekRvdFlEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1MyxpLDApfXN0YXRpYyBhZGRDekRvdFpEb3QoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1NCxpLDApfXN0YXRpYyBhZGRVc2VyRGVmaW5lZEJpcDAwNDRUeXBlKGUsaSl7ZS5hZGRGaWVsZEludDMyKDU1LGksMCl9c3RhdGljIGFkZFVzZXJEZWZpbmVkT2JqZWN0RGVzaWduYXRvcihlLGkpe2UuYWRkRmllbGRPZmZzZXQoNTYsaSwwKX1zdGF0aWMgYWRkVXNlckRlZmluZWRFYXJ0aE1vZGVsKGUsaSl7ZS5hZGRGaWVsZE9mZnNldCg1NyxpLDApfXN0YXRpYyBhZGRVc2VyRGVmaW5lZEVwb2NoVGltZXN0YW1wKGUsaSl7ZS5hZGRGaWVsZEZsb2F0NjQoNTgsaSwwKX1zdGF0aWMgYWRkVXNlckRlZmluZWRNaWNyb3NlY29uZHMoZSxpKXtlLmFkZEZpZWxkRmxvYXQ2NCg1OSxpLDApfXN0YXRpYyBlbmRPTU0oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGZpbmlzaE9NTUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRPTU0iKX1zdGF0aWMgZmluaXNoU2l6ZVByZWZpeGVkT01NQnVmZmVyKGUsaSl7ZS5maW5pc2goaSwiJE9NTSIsITApfXN0YXRpYyBjcmVhdGVPTU0oZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEksQyxOLFQsYixGLEIsVSxRLE0sayx5LGMsZyxPLEQsdyx4LEgsaixYLHR0LEcsSXQsZ3QsWXQsVXQsQ3QsenQsa3QsSnQsV3QsYnQsZWUsY2UsamUsU2UsVWUsTWUsQ2UsRmUsbmksemUsQmUsTWksUmksc2kpe3JldHVybiB0LnN0YXJ0T01NKGUpLHQuYWRkQ2NzZHNPbW1WZXJzKGUsaSksdC5hZGRDcmVhdGlvbkRhdGUoZSxuKSx0LmFkZE9yaWdpbmF0b3IoZSxzKSx0LmFkZE9iamVjdE5hbWUoZSxvKSx0LmFkZE9iamVjdElkKGUsciksdC5hZGRDZW50ZXJOYW1lKGUsYSksdC5hZGRSZWZlcmVuY2VGcmFtZShlLGgpLHQuYWRkUmVmZXJlbmNlRnJhbWVFcG9jaChlLEEpLHQuYWRkVGltZVN5c3RlbShlLGQpLHQuYWRkTWVhbkVsZW1lbnRUaGVvcnkoZSxmKSx0LmFkZENvbW1lbnQoZSxFKSx0LmFkZEVwb2NoKGUsXyksdC5hZGRTZW1pTWFqb3JBeGlzKGUsUiksdC5hZGRNZWFuTW90aW9uKGUsSSksdC5hZGRFY2NlbnRyaWNpdHkoZSxDKSx0LmFkZEluY2xpbmF0aW9uKGUsTiksdC5hZGRSYU9mQXNjTm9kZShlLFQpLHQuYWRkQXJnT2ZQZXJpY2VudGVyKGUsYiksdC5hZGRNZWFuQW5vbWFseShlLEYpLHQuYWRkR20oZSxCKSx0LmFkZE1hc3MoZSxVKSx0LmFkZFNvbGFyUmFkQXJlYShlLFEpLHQuYWRkU29sYXJSYWRDb2VmZihlLE0pLHQuYWRkRHJhZ0FyZWEoZSxrKSx0LmFkZERyYWdDb2VmZihlLHkpLHQuYWRkRXBoZW1lcmlzVHlwZShlLGMpLHQuYWRkQ2xhc3NpZmljYXRpb25UeXBlKGUsZyksdC5hZGROb3JhZENhdElkKGUsTyksdC5hZGRFbGVtZW50U2V0Tm8oZSxEKSx0LmFkZFJldkF0RXBvY2goZSx3KSx0LmFkZEJzdGFyKGUseCksdC5hZGRNZWFuTW90aW9uRG90KGUsSCksdC5hZGRNZWFuTW90aW9uRGRvdChlLGopLHQuYWRkQ292UmVmZXJlbmNlRnJhbWUoZSxYKSx0LmFkZEN4WChlLHR0KSx0LmFkZEN5WChlLEcpLHQuYWRkQ3lZKGUsSXQpLHQuYWRkQ3pYKGUsZ3QpLHQuYWRkQ3pZKGUsWXQpLHQuYWRkQ3paKGUsVXQpLHQuYWRkQ3hEb3RYKGUsQ3QpLHQuYWRkQ3hEb3RZKGUsenQpLHQuYWRkQ3hEb3RaKGUsa3QpLHQuYWRkQ3hEb3RYRG90KGUsSnQpLHQuYWRkQ3lEb3RYKGUsV3QpLHQuYWRkQ3lEb3RZKGUsYnQpLHQuYWRkQ3lEb3RaKGUsZWUpLHQuYWRkQ3lEb3RYRG90KGUsY2UpLHQuYWRkQ3lEb3RZRG90KGUsamUpLHQuYWRkQ3pEb3RYKGUsU2UpLHQuYWRkQ3pEb3RZKGUsVWUpLHQuYWRkQ3pEb3RaKGUsTWUpLHQuYWRkQ3pEb3RYRG90KGUsQ2UpLHQuYWRkQ3pEb3RZRG90KGUsRmUpLHQuYWRkQ3pEb3RaRG90KGUsbmkpLHQuYWRkVXNlckRlZmluZWRCaXAwMDQ0VHlwZShlLHplKSx0LmFkZFVzZXJEZWZpbmVkT2JqZWN0RGVzaWduYXRvcihlLEJlKSx0LmFkZFVzZXJEZWZpbmVkRWFydGhNb2RlbChlLE1pKSx0LmFkZFVzZXJEZWZpbmVkRXBvY2hUaW1lc3RhbXAoZSxSaSksdC5hZGRVc2VyRGVmaW5lZE1pY3Jvc2Vjb25kcyhlLHNpKSx0LmVuZE9NTShlKX11bnBhY2soKXtyZXR1cm4gbmV3IHpfKHRoaXMuQ0NTRFNfT01NX1ZFUlMoKSx0aGlzLkNSRUFUSU9OX0RBVEUoKSx0aGlzLk9SSUdJTkFUT1IoKSx0aGlzLk9CSkVDVF9OQU1FKCksdGhpcy5PQkpFQ1RfSUQoKSx0aGlzLkNFTlRFUl9OQU1FKCksdGhpcy5SRUZFUkVOQ0VfRlJBTUUoKSx0aGlzLlJFRkVSRU5DRV9GUkFNRV9FUE9DSCgpLHRoaXMuVElNRV9TWVNURU0oKSx0aGlzLk1FQU5fRUxFTUVOVF9USEVPUlkoKSx0aGlzLkNPTU1FTlQoKSx0aGlzLkVQT0NIKCksdGhpcy5TRU1JX01BSk9SX0FYSVMoKSx0aGlzLk1FQU5fTU9USU9OKCksdGhpcy5FQ0NFTlRSSUNJVFkoKSx0aGlzLklOQ0xJTkFUSU9OKCksdGhpcy5SQV9PRl9BU0NfTk9ERSgpLHRoaXMuQVJHX09GX1BFUklDRU5URVIoKSx0aGlzLk1FQU5fQU5PTUFMWSgpLHRoaXMuR00oKSx0aGlzLk1BU1MoKSx0aGlzLlNPTEFSX1JBRF9BUkVBKCksdGhpcy5TT0xBUl9SQURfQ09FRkYoKSx0aGlzLkRSQUdfQVJFQSgpLHRoaXMuRFJBR19DT0VGRigpLHRoaXMuRVBIRU1FUklTX1RZUEUoKSx0aGlzLkNMQVNTSUZJQ0FUSU9OX1RZUEUoKSx0aGlzLk5PUkFEX0NBVF9JRCgpLHRoaXMuRUxFTUVOVF9TRVRfTk8oKSx0aGlzLlJFVl9BVF9FUE9DSCgpLHRoaXMuQlNUQVIoKSx0aGlzLk1FQU5fTU9USU9OX0RPVCgpLHRoaXMuTUVBTl9NT1RJT05fRERPVCgpLHRoaXMuQ09WX1JFRkVSRU5DRV9GUkFNRSgpLHRoaXMuQ1hfWCgpLHRoaXMuQ1lfWCgpLHRoaXMuQ1lfWSgpLHRoaXMuQ1pfWCgpLHRoaXMuQ1pfWSgpLHRoaXMuQ1pfWigpLHRoaXMuQ1hfRE9UX1goKSx0aGlzLkNYX0RPVF9ZKCksdGhpcy5DWF9ET1RfWigpLHRoaXMuQ1hfRE9UX1hfRE9UKCksdGhpcy5DWV9ET1RfWCgpLHRoaXMuQ1lfRE9UX1koKSx0aGlzLkNZX0RPVF9aKCksdGhpcy5DWV9ET1RfWF9ET1QoKSx0aGlzLkNZX0RPVF9ZX0RPVCgpLHRoaXMuQ1pfRE9UX1goKSx0aGlzLkNaX0RPVF9ZKCksdGhpcy5DWl9ET1RfWigpLHRoaXMuQ1pfRE9UX1hfRE9UKCksdGhpcy5DWl9ET1RfWV9ET1QoKSx0aGlzLkNaX0RPVF9aX0RPVCgpLHRoaXMuVVNFUl9ERUZJTkVEX0JJUF8wMDQ0X1RZUEUoKSx0aGlzLlVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUigpLHRoaXMuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKCksdGhpcy5VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QKCksdGhpcy5VU0VSX0RFRklORURfTUlDUk9TRUNPTkRTKCkpfXVucGFja1RvKGUpe2UuQ0NTRFNfT01NX1ZFUlM9dGhpcy5DQ1NEU19PTU1fVkVSUygpLGUuQ1JFQVRJT05fREFURT10aGlzLkNSRUFUSU9OX0RBVEUoKSxlLk9SSUdJTkFUT1I9dGhpcy5PUklHSU5BVE9SKCksZS5PQkpFQ1RfTkFNRT10aGlzLk9CSkVDVF9OQU1FKCksZS5PQkpFQ1RfSUQ9dGhpcy5PQkpFQ1RfSUQoKSxlLkNFTlRFUl9OQU1FPXRoaXMuQ0VOVEVSX05BTUUoKSxlLlJFRkVSRU5DRV9GUkFNRT10aGlzLlJFRkVSRU5DRV9GUkFNRSgpLGUuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIPXRoaXMuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIKCksZS5USU1FX1NZU1RFTT10aGlzLlRJTUVfU1lTVEVNKCksZS5NRUFOX0VMRU1FTlRfVEhFT1JZPXRoaXMuTUVBTl9FTEVNRU5UX1RIRU9SWSgpLGUuQ09NTUVOVD10aGlzLkNPTU1FTlQoKSxlLkVQT0NIPXRoaXMuRVBPQ0goKSxlLlNFTUlfTUFKT1JfQVhJUz10aGlzLlNFTUlfTUFKT1JfQVhJUygpLGUuTUVBTl9NT1RJT049dGhpcy5NRUFOX01PVElPTigpLGUuRUNDRU5UUklDSVRZPXRoaXMuRUNDRU5UUklDSVRZKCksZS5JTkNMSU5BVElPTj10aGlzLklOQ0xJTkFUSU9OKCksZS5SQV9PRl9BU0NfTk9ERT10aGlzLlJBX09GX0FTQ19OT0RFKCksZS5BUkdfT0ZfUEVSSUNFTlRFUj10aGlzLkFSR19PRl9QRVJJQ0VOVEVSKCksZS5NRUFOX0FOT01BTFk9dGhpcy5NRUFOX0FOT01BTFkoKSxlLkdNPXRoaXMuR00oKSxlLk1BU1M9dGhpcy5NQVNTKCksZS5TT0xBUl9SQURfQVJFQT10aGlzLlNPTEFSX1JBRF9BUkVBKCksZS5TT0xBUl9SQURfQ09FRkY9dGhpcy5TT0xBUl9SQURfQ09FRkYoKSxlLkRSQUdfQVJFQT10aGlzLkRSQUdfQVJFQSgpLGUuRFJBR19DT0VGRj10aGlzLkRSQUdfQ09FRkYoKSxlLkVQSEVNRVJJU19UWVBFPXRoaXMuRVBIRU1FUklTX1RZUEUoKSxlLkNMQVNTSUZJQ0FUSU9OX1RZUEU9dGhpcy5DTEFTU0lGSUNBVElPTl9UWVBFKCksZS5OT1JBRF9DQVRfSUQ9dGhpcy5OT1JBRF9DQVRfSUQoKSxlLkVMRU1FTlRfU0VUX05PPXRoaXMuRUxFTUVOVF9TRVRfTk8oKSxlLlJFVl9BVF9FUE9DSD10aGlzLlJFVl9BVF9FUE9DSCgpLGUuQlNUQVI9dGhpcy5CU1RBUigpLGUuTUVBTl9NT1RJT05fRE9UPXRoaXMuTUVBTl9NT1RJT05fRE9UKCksZS5NRUFOX01PVElPTl9ERE9UPXRoaXMuTUVBTl9NT1RJT05fRERPVCgpLGUuQ09WX1JFRkVSRU5DRV9GUkFNRT10aGlzLkNPVl9SRUZFUkVOQ0VfRlJBTUUoKSxlLkNYX1g9dGhpcy5DWF9YKCksZS5DWV9YPXRoaXMuQ1lfWCgpLGUuQ1lfWT10aGlzLkNZX1koKSxlLkNaX1g9dGhpcy5DWl9YKCksZS5DWl9ZPXRoaXMuQ1pfWSgpLGUuQ1pfWj10aGlzLkNaX1ooKSxlLkNYX0RPVF9YPXRoaXMuQ1hfRE9UX1goKSxlLkNYX0RPVF9ZPXRoaXMuQ1hfRE9UX1koKSxlLkNYX0RPVF9aPXRoaXMuQ1hfRE9UX1ooKSxlLkNYX0RPVF9YX0RPVD10aGlzLkNYX0RPVF9YX0RPVCgpLGUuQ1lfRE9UX1g9dGhpcy5DWV9ET1RfWCgpLGUuQ1lfRE9UX1k9dGhpcy5DWV9ET1RfWSgpLGUuQ1lfRE9UX1o9dGhpcy5DWV9ET1RfWigpLGUuQ1lfRE9UX1hfRE9UPXRoaXMuQ1lfRE9UX1hfRE9UKCksZS5DWV9ET1RfWV9ET1Q9dGhpcy5DWV9ET1RfWV9ET1QoKSxlLkNaX0RPVF9YPXRoaXMuQ1pfRE9UX1goKSxlLkNaX0RPVF9ZPXRoaXMuQ1pfRE9UX1koKSxlLkNaX0RPVF9aPXRoaXMuQ1pfRE9UX1ooKSxlLkNaX0RPVF9YX0RPVD10aGlzLkNaX0RPVF9YX0RPVCgpLGUuQ1pfRE9UX1lfRE9UPXRoaXMuQ1pfRE9UX1lfRE9UKCksZS5DWl9ET1RfWl9ET1Q9dGhpcy5DWl9ET1RfWl9ET1QoKSxlLlVTRVJfREVGSU5FRF9CSVBfMDA0NF9UWVBFPXRoaXMuVVNFUl9ERUZJTkVEX0JJUF8wMDQ0X1RZUEUoKSxlLlVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUj10aGlzLlVTRVJfREVGSU5FRF9PQkpFQ1RfREVTSUdOQVRPUigpLGUuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMPXRoaXMuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKCksZS5VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QPXRoaXMuVVNFUl9ERUZJTkVEX0VQT0NIX1RJTUVTVEFNUCgpLGUuVVNFUl9ERUZJTkVEX01JQ1JPU0VDT05EUz10aGlzLlVTRVJfREVGSU5FRF9NSUNST1NFQ09ORFMoKX19LHpfPWNsYXNze2NvbnN0cnVjdG9yKGU9MCxpPW51bGwsbj1udWxsLHM9bnVsbCxvPW51bGwscj1udWxsLGE9TG8uVEVNRSxoPW51bGwsQT1Yci5VVEMsZD1Lci5TR1A0LGY9bnVsbCxFPW51bGwsXz0wLFI9MCxJPTAsQz0wLE49MCxUPTAsYj0wLEY9MCxCPTAsVT0wLFE9MCxNPTAsaz0wLHk9RGMuU0dQNCxjPW51bGwsZz0wLE89MCxEPTAsdz0wLHg9MCxIPTAsaj1Mby5SU1csWD0wLHR0PTAsRz0wLEl0PTAsZ3Q9MCxZdD0wLFV0PTAsQ3Q9MCx6dD0wLGt0PTAsSnQ9MCxXdD0wLGJ0PTAsZWU9MCxjZT0wLGplPTAsU2U9MCxVZT0wLE1lPTAsQ2U9MCxGZT0wLG5pPTAsemU9bnVsbCxCZT1udWxsLE1pPTAsUmk9MCl7dGhpcy5DQ1NEU19PTU1fVkVSUz1lLHRoaXMuQ1JFQVRJT05fREFURT1pLHRoaXMuT1JJR0lOQVRPUj1uLHRoaXMuT0JKRUNUX05BTUU9cyx0aGlzLk9CSkVDVF9JRD1vLHRoaXMuQ0VOVEVSX05BTUU9cix0aGlzLlJFRkVSRU5DRV9GUkFNRT1hLHRoaXMuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIPWgsdGhpcy5USU1FX1NZU1RFTT1BLHRoaXMuTUVBTl9FTEVNRU5UX1RIRU9SWT1kLHRoaXMuQ09NTUVOVD1mLHRoaXMuRVBPQ0g9RSx0aGlzLlNFTUlfTUFKT1JfQVhJUz1fLHRoaXMuTUVBTl9NT1RJT049Uix0aGlzLkVDQ0VOVFJJQ0lUWT1JLHRoaXMuSU5DTElOQVRJT049Qyx0aGlzLlJBX09GX0FTQ19OT0RFPU4sdGhpcy5BUkdfT0ZfUEVSSUNFTlRFUj1ULHRoaXMuTUVBTl9BTk9NQUxZPWIsdGhpcy5HTT1GLHRoaXMuTUFTUz1CLHRoaXMuU09MQVJfUkFEX0FSRUE9VSx0aGlzLlNPTEFSX1JBRF9DT0VGRj1RLHRoaXMuRFJBR19BUkVBPU0sdGhpcy5EUkFHX0NPRUZGPWssdGhpcy5FUEhFTUVSSVNfVFlQRT15LHRoaXMuQ0xBU1NJRklDQVRJT05fVFlQRT1jLHRoaXMuTk9SQURfQ0FUX0lEPWcsdGhpcy5FTEVNRU5UX1NFVF9OTz1PLHRoaXMuUkVWX0FUX0VQT0NIPUQsdGhpcy5CU1RBUj13LHRoaXMuTUVBTl9NT1RJT05fRE9UPXgsdGhpcy5NRUFOX01PVElPTl9ERE9UPUgsdGhpcy5DT1ZfUkVGRVJFTkNFX0ZSQU1FPWosdGhpcy5DWF9YPVgsdGhpcy5DWV9YPXR0LHRoaXMuQ1lfWT1HLHRoaXMuQ1pfWD1JdCx0aGlzLkNaX1k9Z3QsdGhpcy5DWl9aPVl0LHRoaXMuQ1hfRE9UX1g9VXQsdGhpcy5DWF9ET1RfWT1DdCx0aGlzLkNYX0RPVF9aPXp0LHRoaXMuQ1hfRE9UX1hfRE9UPWt0LHRoaXMuQ1lfRE9UX1g9SnQsdGhpcy5DWV9ET1RfWT1XdCx0aGlzLkNZX0RPVF9aPWJ0LHRoaXMuQ1lfRE9UX1hfRE9UPWVlLHRoaXMuQ1lfRE9UX1lfRE9UPWNlLHRoaXMuQ1pfRE9UX1g9amUsdGhpcy5DWl9ET1RfWT1TZSx0aGlzLkNaX0RPVF9aPVVlLHRoaXMuQ1pfRE9UX1hfRE9UPU1lLHRoaXMuQ1pfRE9UX1lfRE9UPUNlLHRoaXMuQ1pfRE9UX1pfRE9UPUZlLHRoaXMuVVNFUl9ERUZJTkVEX0JJUF8wMDQ0X1RZUEU9bmksdGhpcy5VU0VSX0RFRklORURfT0JKRUNUX0RFU0lHTkFUT1I9emUsdGhpcy5VU0VSX0RFRklORURfRUFSVEhfTU9ERUw9QmUsdGhpcy5VU0VSX0RFRklORURfRVBPQ0hfVElNRVNUQU1QPU1pLHRoaXMuVVNFUl9ERUZJTkVEX01JQ1JPU0VDT05EUz1SaX1wYWNrKGUpe2xldCBpPXRoaXMuQ1JFQVRJT05fREFURSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DUkVBVElPTl9EQVRFKTowLG49dGhpcy5PUklHSU5BVE9SIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk9SSUdJTkFUT1IpOjAscz10aGlzLk9CSkVDVF9OQU1FIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLk9CSkVDVF9OQU1FKTowLG89dGhpcy5PQkpFQ1RfSUQhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuT0JKRUNUX0lEKTowLHI9dGhpcy5DRU5URVJfTkFNRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DRU5URVJfTkFNRSk6MCxhPXRoaXMuUkVGRVJFTkNFX0ZSQU1FX0VQT0NIIT09bnVsbD9lLmNyZWF0ZVN0cmluZyh0aGlzLlJFRkVSRU5DRV9GUkFNRV9FUE9DSCk6MCxoPXRoaXMuQ09NTUVOVCE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DT01NRU5UKTowLEE9dGhpcy5FUE9DSCE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5FUE9DSCk6MCxkPXRoaXMuQ0xBU1NJRklDQVRJT05fVFlQRSE9PW51bGw/ZS5jcmVhdGVTdHJpbmcodGhpcy5DTEFTU0lGSUNBVElPTl9UWVBFKTowLGY9dGhpcy5VU0VSX0RFRklORURfT0JKRUNUX0RFU0lHTkFUT1IhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuVVNFUl9ERUZJTkVEX09CSkVDVF9ERVNJR05BVE9SKTowLEU9dGhpcy5VU0VSX0RFRklORURfRUFSVEhfTU9ERUwhPT1udWxsP2UuY3JlYXRlU3RyaW5nKHRoaXMuVVNFUl9ERUZJTkVEX0VBUlRIX01PREVMKTowO3JldHVybiBuZC5jcmVhdGVPTU0oZSx0aGlzLkNDU0RTX09NTV9WRVJTLGksbixzLG8scix0aGlzLlJFRkVSRU5DRV9GUkFNRSxhLHRoaXMuVElNRV9TWVNURU0sdGhpcy5NRUFOX0VMRU1FTlRfVEhFT1JZLGgsQSx0aGlzLlNFTUlfTUFKT1JfQVhJUyx0aGlzLk1FQU5fTU9USU9OLHRoaXMuRUNDRU5UUklDSVRZLHRoaXMuSU5DTElOQVRJT04sdGhpcy5SQV9PRl9BU0NfTk9ERSx0aGlzLkFSR19PRl9QRVJJQ0VOVEVSLHRoaXMuTUVBTl9BTk9NQUxZLHRoaXMuR00sdGhpcy5NQVNTLHRoaXMuU09MQVJfUkFEX0FSRUEsdGhpcy5TT0xBUl9SQURfQ09FRkYsdGhpcy5EUkFHX0FSRUEsdGhpcy5EUkFHX0NPRUZGLHRoaXMuRVBIRU1FUklTX1RZUEUsZCx0aGlzLk5PUkFEX0NBVF9JRCx0aGlzLkVMRU1FTlRfU0VUX05PLHRoaXMuUkVWX0FUX0VQT0NILHRoaXMuQlNUQVIsdGhpcy5NRUFOX01PVElPTl9ET1QsdGhpcy5NRUFOX01PVElPTl9ERE9ULHRoaXMuQ09WX1JFRkVSRU5DRV9GUkFNRSx0aGlzLkNYX1gsdGhpcy5DWV9YLHRoaXMuQ1lfWSx0aGlzLkNaX1gsdGhpcy5DWl9ZLHRoaXMuQ1pfWix0aGlzLkNYX0RPVF9YLHRoaXMuQ1hfRE9UX1ksdGhpcy5DWF9ET1RfWix0aGlzLkNYX0RPVF9YX0RPVCx0aGlzLkNZX0RPVF9YLHRoaXMuQ1lfRE9UX1ksdGhpcy5DWV9ET1RfWix0aGlzLkNZX0RPVF9YX0RPVCx0aGlzLkNZX0RPVF9ZX0RPVCx0aGlzLkNaX0RPVF9YLHRoaXMuQ1pfRE9UX1ksdGhpcy5DWl9ET1RfWix0aGlzLkNaX0RPVF9YX0RPVCx0aGlzLkNaX0RPVF9ZX0RPVCx0aGlzLkNaX0RPVF9aX0RPVCx0aGlzLlVTRVJfREVGSU5FRF9CSVBfMDA0NF9UWVBFLGYsRSx0aGlzLlVTRVJfREVGSU5FRF9FUE9DSF9USU1FU1RBTVAsdGhpcy5VU0VSX0RFRklORURfTUlDUk9TRUNPTkRTKX19fSk7dmFyIEVmLEtfLFE0PVMoKCk9PntfdCgpO1lZKCk7RWY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNPTU1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc09NTUNPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBuZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydE9NTUNPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kT01NQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlT01NQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0T01NQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZE9NTUNPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyBLXyh0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LEtfPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9RWYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gRWYuY3JlYXRlT01NQ09MTEVDVElPTihlLGkpfX19KTt2YXIgc2QsWF8sVlk9UygoKT0+e190KCk7RnUoKTtzZD1jbGFzcyB0e2NvbnN0cnVjdG9yKCl7dGhpcy5iYj1udWxsLHRoaXMuYmJfcG9zPTB9X19pbml0KGUsaSl7cmV0dXJuIHRoaXMuYmJfcG9zPWUsdGhpcy5iYj1pLHRoaXN9c3RhdGljIGdldFJvb3RBc1JGTShlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNSRk0oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGJ1ZmZlckhhc0lkZW50aWZpZXIoZSl7cmV0dXJuIGUuX19oYXNfaWRlbnRpZmllcigiJFJGTSIpfVJFRkVSRU5DRV9GUkFNRSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpMby5FQ0VGfXN0YXRpYyBzdGFydFJGTShlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRSZWZlcmVuY2VGcmFtZShlLGkpe2UuYWRkRmllbGRJbnQ4KDAsaSxMby5FQ0VGKX1zdGF0aWMgZW5kUkZNKGUpe3JldHVybiBlLmVuZE9iamVjdCgpfXN0YXRpYyBmaW5pc2hSRk1CdWZmZXIoZSxpKXtlLmZpbmlzaChpLCIkUkZNIil9c3RhdGljIGZpbmlzaFNpemVQcmVmaXhlZFJGTUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRSRk0iLCEwKX1zdGF0aWMgY3JlYXRlUkZNKGUsaSl7cmV0dXJuIHQuc3RhcnRSRk0oZSksdC5hZGRSZWZlcmVuY2VGcmFtZShlLGkpLHQuZW5kUkZNKGUpfXVucGFjaygpe3JldHVybiBuZXcgWF8odGhpcy5SRUZFUkVOQ0VfRlJBTUUoKSl9dW5wYWNrVG8oZSl7ZS5SRUZFUkVOQ0VfRlJBTUU9dGhpcy5SRUZFUkVOQ0VfRlJBTUUoKX19LFhfPWNsYXNze2NvbnN0cnVjdG9yKGU9TG8uRUNFRil7dGhpcy5SRUZFUkVOQ0VfRlJBTUU9ZX1wYWNrKGUpe3JldHVybiBzZC5jcmVhdGVSRk0oZSx0aGlzLlJFRkVSRU5DRV9GUkFNRSl9fX0pO3ZhciBfZixxXyxrND1TKCgpPT57X3QoKTtWWSgpO19mPWNsYXNzIHR7Y29uc3RydWN0b3IoKXt0aGlzLmJiPW51bGwsdGhpcy5iYl9wb3M9MH1fX2luaXQoZSxpKXtyZXR1cm4gdGhpcy5iYl9wb3M9ZSx0aGlzLmJiPWksdGhpc31zdGF0aWMgZ2V0Um9vdEFzUkZNQ09MTEVDVElPTihlLGkpe3JldHVybihpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBnZXRTaXplUHJlZml4ZWRSb290QXNSRk1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfVJFQ09SRFMoZSxpKXtsZXQgbj10aGlzLmJiLl9fb2Zmc2V0KHRoaXMuYmJfcG9zLDQpO3JldHVybiBuPyhpfHxuZXcgc2QpLl9faW5pdCh0aGlzLmJiLl9faW5kaXJlY3QodGhpcy5iYi5fX3ZlY3Rvcih0aGlzLmJiX3BvcytuKStlKjQpLHRoaXMuYmIpOm51bGx9cmVjb3Jkc0xlbmd0aCgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5fX3ZlY3Rvcl9sZW4odGhpcy5iYl9wb3MrZSk6MH1zdGF0aWMgc3RhcnRSRk1DT0xMRUNUSU9OKGUpe2Uuc3RhcnRPYmplY3QoMSl9c3RhdGljIGFkZFJlY29yZHMoZSxpKXtlLmFkZEZpZWxkT2Zmc2V0KDAsaSwwKX1zdGF0aWMgY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGkpe2Uuc3RhcnRWZWN0b3IoNCxpLmxlbmd0aCw0KTtmb3IobGV0IG49aS5sZW5ndGgtMTtuPj0wO24tLSllLmFkZE9mZnNldChpW25dKTtyZXR1cm4gZS5lbmRWZWN0b3IoKX1zdGF0aWMgc3RhcnRSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGksNCl9c3RhdGljIGVuZFJGTUNPTExFQ1RJT04oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGNyZWF0ZVJGTUNPTExFQ1RJT04oZSxpKXtyZXR1cm4gdC5zdGFydFJGTUNPTExFQ1RJT04oZSksdC5hZGRSZWNvcmRzKGUsaSksdC5lbmRSRk1DT0xMRUNUSU9OKGUpfXVucGFjaygpe3JldHVybiBuZXcgcV8odGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKSl9dW5wYWNrVG8oZSl7ZS5SRUNPUkRTPXRoaXMuYmIuY3JlYXRlT2JqTGlzdCh0aGlzLlJFQ09SRFMuYmluZCh0aGlzKSx0aGlzLnJlY29yZHNMZW5ndGgoKSl9fSxxXz1jbGFzc3tjb25zdHJ1Y3RvcihlPVtdKXt0aGlzLlJFQ09SRFM9ZX1wYWNrKGUpe2xldCBpPV9mLmNyZWF0ZVJlY29yZHNWZWN0b3IoZSxlLmNyZWF0ZU9iamVjdE9mZnNldExpc3QodGhpcy5SRUNPUkRTKSk7cmV0dXJuIF9mLmNyZWF0ZVJGTUNPTExFQ1RJT04oZSxpKX19fSk7dmFyIG9kLCRfLFNZPVMoKCk9PntfdCgpO2J1KCk7b2Q9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNUSU0oZSxpKXtyZXR1cm4oaXx8bmV3IHQpLl9faW5pdChlLnJlYWRJbnQzMihlLnBvc2l0aW9uKCkpK2UucG9zaXRpb24oKSxlKX1zdGF0aWMgZ2V0U2l6ZVByZWZpeGVkUm9vdEFzVElNKGUsaSl7cmV0dXJuIGUuc2V0UG9zaXRpb24oZS5wb3NpdGlvbigpKzQpLChpfHxuZXcgdCkuX19pbml0KGUucmVhZEludDMyKGUucG9zaXRpb24oKSkrZS5wb3NpdGlvbigpLGUpfXN0YXRpYyBidWZmZXJIYXNJZGVudGlmaWVyKGUpe3JldHVybiBlLl9faGFzX2lkZW50aWZpZXIoIiRUSU0iKX1USU1FX1NZU1RFTSgpe2xldCBlPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIGU/dGhpcy5iYi5yZWFkSW50OCh0aGlzLmJiX3BvcytlKTpYci5HTVNUfXN0YXRpYyBzdGFydFRJTShlKXtlLnN0YXJ0T2JqZWN0KDEpfXN0YXRpYyBhZGRUaW1lU3lzdGVtKGUsaSl7ZS5hZGRGaWVsZEludDgoMCxpLFhyLkdNU1QpfXN0YXRpYyBlbmRUSU0oZSl7cmV0dXJuIGUuZW5kT2JqZWN0KCl9c3RhdGljIGZpbmlzaFRJTUJ1ZmZlcihlLGkpe2UuZmluaXNoKGksIiRUSU0iKX1zdGF0aWMgZmluaXNoU2l6ZVByZWZpeGVkVElNQnVmZmVyKGUsaSl7ZS5maW5pc2goaSwiJFRJTSIsITApfXN0YXRpYyBjcmVhdGVUSU0oZSxpKXtyZXR1cm4gdC5zdGFydFRJTShlKSx0LmFkZFRpbWVTeXN0ZW0oZSxpKSx0LmVuZFRJTShlKX11bnBhY2soKXtyZXR1cm4gbmV3ICRfKHRoaXMuVElNRV9TWVNURU0oKSl9dW5wYWNrVG8oZSl7ZS5USU1FX1NZU1RFTT10aGlzLlRJTUVfU1lTVEVNKCl9fSwkXz1jbGFzc3tjb25zdHJ1Y3RvcihlPVhyLkdNU1Qpe3RoaXMuVElNRV9TWVNURU09ZX1wYWNrKGUpe3JldHVybiBvZC5jcmVhdGVUSU0oZSx0aGlzLlRJTUVfU1lTVEVNKX19fSk7dmFyIFJmLHRSLEw0PVMoKCk9PntfdCgpO1NZKCk7UmY9Y2xhc3MgdHtjb25zdHJ1Y3Rvcigpe3RoaXMuYmI9bnVsbCx0aGlzLmJiX3Bvcz0wfV9faW5pdChlLGkpe3JldHVybiB0aGlzLmJiX3Bvcz1lLHRoaXMuYmI9aSx0aGlzfXN0YXRpYyBnZXRSb290QXNUSU1DT0xMRUNUSU9OKGUsaSl7cmV0dXJuKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9c3RhdGljIGdldFNpemVQcmVmaXhlZFJvb3RBc1RJTUNPTExFQ1RJT04oZSxpKXtyZXR1cm4gZS5zZXRQb3NpdGlvbihlLnBvc2l0aW9uKCkrNCksKGl8fG5ldyB0KS5fX2luaXQoZS5yZWFkSW50MzIoZS5wb3NpdGlvbigpKStlLnBvc2l0aW9uKCksZSl9UkVDT1JEUyhlLGkpe2xldCBuPXRoaXMuYmIuX19vZmZzZXQodGhpcy5iYl9wb3MsNCk7cmV0dXJuIG4/KGl8fG5ldyBvZCkuX19pbml0KHRoaXMuYmIuX19pbmRpcmVjdCh0aGlzLmJiLl9fdmVjdG9yKHRoaXMuYmJfcG9zK24pK2UqNCksdGhpcy5iYik6bnVsbH1yZWNvcmRzTGVuZ3RoKCl7bGV0IGU9dGhpcy5iYi5fX29mZnNldCh0aGlzLmJiX3Bvcyw0KTtyZXR1cm4gZT90aGlzLmJiLl9fdmVjdG9yX2xlbih0aGlzLmJiX3BvcytlKTowfXN0YXRpYyBzdGFydFRJTUNPTExFQ1RJT04oZSl7ZS5zdGFydE9iamVjdCgxKX1zdGF0aWMgYWRkUmVjb3JkcyhlLGkpe2UuYWRkRmllbGRPZmZzZXQoMCxpLDApfXN0YXRpYyBjcmVhdGVSZWNvcmRzVmVjdG9yKGUsaSl7ZS5zdGFydFZlY3Rvcig0LGkubGVuZ3RoLDQpO2ZvcihsZXQgbj1pLmxlbmd0aC0xO24+PTA7bi0tKWUuYWRkT2Zmc2V0KGlbbl0pO3JldHVybiBlLmVuZFZlY3RvcigpfXN0YXRpYyBzdGFydFJlY29yZHNWZWN0b3IoZSxpKXtlLnN0YXJ0VmVjdG9yKDQsaSw0KX1zdGF0aWMgZW5kVElNQ09MTEVDVElPTihlKXtyZXR1cm4gZS5lbmRPYmplY3QoKX1zdGF0aWMgY3JlYXRlVElNQ09MTEVDVElPTihlLGkpe3JldHVybiB0LnN0YXJ0VElNQ09MTEVDVElPTihlKSx0LmFkZFJlY29yZHMoZSxpKSx0LmVuZFRJTUNPTExFQ1RJT04oZSl9dW5wYWNrKCl7cmV0dXJuIG5ldyB0Uih0aGlzLmJiLmNyZWF0ZU9iakxpc3QodGhpcy5SRUNPUkRTLmJpbmQodGhpcyksdGhpcy5yZWNvcmRzTGVuZ3RoKCkpKX11bnBhY2tUbyhlKXtlLlJFQ09SRFM9dGhpcy5iYi5jcmVhdGVPYmpMaXN0KHRoaXMuUkVDT1JEUy5iaW5kKHRoaXMpLHRoaXMucmVjb3Jkc0xlbmd0aCgpKX19LHRSPWNsYXNze2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuUkVDT1JEUz1lfXBhY2soZSl7bGV0IGk9UmYuY3JlYXRlUmVjb3Jkc1ZlY3RvcihlLGUuY3JlYXRlT2JqZWN0T2Zmc2V0TGlzdCh0aGlzLlJFQ09SRFMpKTtyZXR1cm4gUmYuY3JlYXRlVElNQ09MTEVDVElPTihlLGkpfX19KTt2YXIgcmQ9e307SGUocmQse01FVDooKT0+aWQsTUVUQ09MTEVDVElPTjooKT0+ZmYsTUVUQ09MTEVDVElPTlQ6KCk9PnZfLE1FVFQ6KCk9PkhfLE9NTTooKT0+bmQsT01NQ09MTEVDVElPTjooKT0+RWYsT01NQ09MTEVDVElPTlQ6KCk9PktfLE9NTVQ6KCk9PnpfLFJGTTooKT0+c2QsUkZNQ09MTEVDVElPTjooKT0+X2YsUkZNQ09MTEVDVElPTlQ6KCk9PnFfLFJGTVQ6KCk9PlhfLFRJTTooKT0+b2QsVElNQ09MTEVDVElPTjooKT0+UmYsVElNQ09MTEVDVElPTlQ6KCk9PnRSLFRJTVQ6KCk9PiRfLGVwaGVtZXJpc1R5cGU6KCk9PkRjLG1lYW5FbGVtZW50VGhlb3J5OigpPT5LcixyZWZGcmFtZTooKT0+TG8sdGltZVN5c3RlbTooKT0+WHJ9KTt2YXIgeTQ9UygoKT0+e0ZZKCk7TTQoKTtZWSgpO1E0KCk7VlkoKTtrNCgpO1NZKCk7TDQoKTtiWSgpO051KCk7RnUoKTtidSgpfSk7dmFyIE9ZPVMoKCk9PntfdCgpfSk7dmFyIHc0PVMoKCk9PntfdCgpO09ZKCl9KTt2YXIgeDQ9UygoKT0+e09ZKCk7dzQoKX0pO3ZhciBZdT1TKCgpPT57X3QoKX0pO3ZhciBCWT1TKCgpPT57X3QoKTtZdSgpfSk7dmFyIFZ1LEdZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlJFQUw9MF09IlJFQUwiLHRbdC5TSU1VTEFURUQ9MV09IlNJTVVMQVRFRCIsdFt0LlNZTlRIRVRJQz0yXT0iU1lOVEhFVElDIn0pKFZ1fHwoVnU9e30pKX0pO3ZhciBTdSxXWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuT1BUSUNBTD0xXT0iT1BUSUNBTCIsdFt0LklORlJBUkVEX1NFTlNPUj0yXT0iSU5GUkFSRURfU0VOU09SIix0W3QuVUxUUkFWSU9MRVRfU0VOU09SPTNdPSJVTFRSQVZJT0xFVF9TRU5TT1IiLHRbdC5YX1JBWV9TRU5TT1I9NF09IlhfUkFZX1NFTlNPUiIsdFt0LkdBTU1BX1JBWV9TRU5TT1I9NV09IkdBTU1BX1JBWV9TRU5TT1IiLHRbdC5SQURBUj02XT0iUkFEQVIiLHRbdC5QSEFTRURfQVJSQVlfUkFEQVI9N109IlBIQVNFRF9BUlJBWV9SQURBUiIsdFt0LlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUj04XT0iU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSIix0W3QuQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFPTldPSJCSVNUQVRJQ19SQURJT19URUxFU0NPUEUiLHRbdC5SQURJT19URUxFU0NPUEU9MTBdPSJSQURJT19URUxFU0NPUEUiLHRbdC5BVE1PU1BIRVJJQ19TRU5TT1I9MTFdPSJBVE1PU1BIRVJJQ19TRU5TT1IiLHRbdC5TUEFDRV9XRUFUSEVSX1NFTlNPUj0xMl09IlNQQUNFX1dFQVRIRVJfU0VOU09SIix0W3QuRU5WSVJPTk1FTlRBTF9TRU5TT1I9MTNdPSJFTlZJUk9OTUVOVEFMX1NFTlNPUiIsdFt0LlNFSVNNSUNfU0VOU09SPTE0XT0iU0VJU01JQ19TRU5TT1IiLHRbdC5HUkFWSU1FVFJJQ19TRU5TT1I9MTVdPSJHUkFWSU1FVFJJQ19TRU5TT1IiLHRbdC5NQUdORVRJQ19TRU5TT1I9MTZdPSJNQUdORVRJQ19TRU5TT1IiLHRbdC5FTEVDVFJPTUFHTkVUSUNfU0VOU09SPTE3XT0iRUxFQ1RST01BR05FVElDX1NFTlNPUiIsdFt0LlRIRVJNQUxfU0VOU09SPTE4XT0iVEhFUk1BTF9TRU5TT1IiLHRbdC5DSEVNSUNBTF9TRU5TT1I9MTldPSJDSEVNSUNBTF9TRU5TT1IiLHRbdC5CSU9MT0dJQ0FMX1NFTlNPUj0yMF09IkJJT0xPR0lDQUxfU0VOU09SIix0W3QuUkFESUFUSU9OX1NFTlNPUj0yMV09IlJBRElBVElPTl9TRU5TT1IiLHRbdC5QQVJUSUNMRV9ERVRFQ1RPUj0yMl09IlBBUlRJQ0xFX0RFVEVDVE9SIix0W3QuTElEQVI9MjNdPSJMSURBUiIsdFt0LlNPTkFSPTI0XT0iU09OQVIiLHRbdC5URUxFU0NPUEU9MjVdPSJURUxFU0NPUEUiLHRbdC5TUEVDVFJPU0NPUElDX1NFTlNPUj0yNl09IlNQRUNUUk9TQ09QSUNfU0VOU09SIix0W3QuUEhPVE9NRVRSSUNfU0VOU09SPTI3XT0iUEhPVE9NRVRSSUNfU0VOU09SIix0W3QuUE9MQVJJTUVUUklDX1NFTlNPUj0yOF09IlBPTEFSSU1FVFJJQ19TRU5TT1IiLHRbdC5JTlRFUkZFUk9NRVRSSUNfU0VOU09SPTI5XT0iSU5URVJGRVJPTUVUUklDX1NFTlNPUiIsdFt0Lk1VTFRJU1BFQ1RSQUxfU0VOU09SPTMwXT0iTVVMVElTUEVDVFJBTF9TRU5TT1IiLHRbdC5IWVBFUlNQRUNUUkFMX1NFTlNPUj0zMV09IkhZUEVSU1BFQ1RSQUxfU0VOU09SIix0W3QuR1BTX1JFQ0VJVkVSPTMyXT0iR1BTX1JFQ0VJVkVSIix0W3QuUkFESU9fQ09NTVVOSUNBVElPTlM9MzNdPSJSQURJT19DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0NPTU1VTklDQVRJT05TPTM0XT0iTEFTRVJfQ09NTVVOSUNBVElPTlMiLHRbdC5TQVRFTExJVEVfQ09NTVVOSUNBVElPTlM9MzVdPSJTQVRFTExJVEVfQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9JTlNUUlVNRU5UPTM2XT0iTEFTRVJfSU5TVFJVTUVOVCIsdFt0LlJGX0FOQUxZWkVSPTM3XT0iUkZfQU5BTFlaRVIiLHRbdC5JT05PU1BIRVJJQ19TRU5TT1I9MzhdPSJJT05PU1BIRVJJQ19TRU5TT1IiLHRbdC5MQVNFUl9JTUFHSU5HPTM5XT0iTEFTRVJfSU1BR0lORyIsdFt0Lk9QVElDQUxfVEVMRVNDT1BFPTQwXT0iT1BUSUNBTF9URUxFU0NPUEUiLHRbdC5ISUdIX1JFU09MVVRJT05fT1BUSUNBTD00MV09IkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMIix0W3QuUkFESU89NDJdPSJSQURJTyIsdFt0Lk1JQ1JPV0FWRV9UUkFOU01JVFRFUj00M109Ik1JQ1JPV0FWRV9UUkFOU01JVFRFUiIsdFt0LlJGX01PTklUT1I9NDRdPSJSRl9NT05JVE9SIix0W3QuSEZfUkFESU9fQ09NTVVOSUNBVElPTlM9NDVdPSJIRl9SQURJT19DT01NVU5JQ0FUSU9OUyJ9KShTdXx8KFN1PXt9KSl9KTt2YXIgT3UsRFk9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QubGluZWFyPTBdPSJsaW5lYXIiLHRbdC5jaXJjdWxhcj0xXT0iY2lyY3VsYXIiLHRbdC5lbGxpcHRpY2FsPTJdPSJlbGxpcHRpY2FsIix0W3QudW5wb2xhcml6ZWQ9M109InVucG9sYXJpemVkIn0pKE91fHwoT3U9e30pKX0pO3ZhciBCdSxVWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC52ZXJ0aWNhbD0wXT0idmVydGljYWwiLHRbdC5ob3Jpem9udGFsPTFdPSJob3Jpem9udGFsIix0W3QubGVmdEhhbmRDaXJjdWxhcj0yXT0ibGVmdEhhbmRDaXJjdWxhciIsdFt0LnJpZ2h0SGFuZENpcmN1bGFyPTNdPSJyaWdodEhhbmRDaXJjdWxhciJ9KShCdXx8KEJ1PXt9KSl9KTt2YXIgTVk9UygoKT0+e190KCl9KTt2YXIgR3U9UygoKT0+e190KCk7QlkoKTtHWSgpO1dZKCk7WXUoKTtEWSgpO1VZKCk7TVkoKX0pO3ZhciBqND1TKCgpPT57X3QoKTtHdSgpfSk7dmFyIFFZPVMoKCk9PntfdCgpO0d1KCl9KTt2YXIgSDQ9UygoKT0+e190KCk7UVkoKX0pO3ZhciB2ND1TKCgpPT57QlkoKTtHWSgpO1dZKCk7WXUoKTtHdSgpO2o0KCk7UVkoKTtINCgpO0RZKCk7VVkoKTtNWSgpfSk7dmFyIGtZPVMoKCk9PntfdCgpfSk7dmFyIHo0PVMoKCk9PntfdCgpO2tZKCl9KTt2YXIgSzQ9UygoKT0+e2tZKCk7ejQoKX0pO3ZhciBMWT1TKCgpPT57X3QoKX0pO3ZhciB5WT1TKCgpPT57X3QoKTtMWSgpfSk7dmFyIFg0PVMoKCk9PntfdCgpO3lZKCl9KTt2YXIgcTQ9UygoKT0+e3lZKCk7WDQoKTtMWSgpfSk7dmFyIHdZPVMoKCk9PntfdCgpfSk7dmFyIGVSPVMoKCk9PntfdCgpfSk7dmFyICQ0PVMoKCk9PntfdCgpO2VSKCl9KTt2YXIgV3U9UygoKT0+e190KCl9KTt2YXIgUFk9UygoKT0+e190KCk7V3UoKX0pO3ZhciBEdSxKWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5SRUFMPTBdPSJSRUFMIix0W3QuU0lNVUxBVEVEPTFdPSJTSU1VTEFURUQiLHRbdC5TWU5USEVUSUM9Ml09IlNZTlRIRVRJQyJ9KShEdXx8KER1PXt9KSl9KTt2YXIgVXUsalk9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0Lk9QVElDQUw9MV09Ik9QVElDQUwiLHRbdC5JTkZSQVJFRF9TRU5TT1I9Ml09IklORlJBUkVEX1NFTlNPUiIsdFt0LlVMVFJBVklPTEVUX1NFTlNPUj0zXT0iVUxUUkFWSU9MRVRfU0VOU09SIix0W3QuWF9SQVlfU0VOU09SPTRdPSJYX1JBWV9TRU5TT1IiLHRbdC5HQU1NQV9SQVlfU0VOU09SPTVdPSJHQU1NQV9SQVlfU0VOU09SIix0W3QuUkFEQVI9Nl09IlJBREFSIix0W3QuUEhBU0VEX0FSUkFZX1JBREFSPTddPSJQSEFTRURfQVJSQVlfUkFEQVIiLHRbdC5TWU5USEVUSUNfQVBFUlRVUkVfUkFEQVI9OF09IlNZTlRIRVRJQ19BUEVSVFVSRV9SQURBUiIsdFt0LkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRT05XT0iQklTVEFUSUNfUkFESU9fVEVMRVNDT1BFIix0W3QuUkFESU9fVEVMRVNDT1BFPTEwXT0iUkFESU9fVEVMRVNDT1BFIix0W3QuQVRNT1NQSEVSSUNfU0VOU09SPTExXT0iQVRNT1NQSEVSSUNfU0VOU09SIix0W3QuU1BBQ0VfV0VBVEhFUl9TRU5TT1I9MTJdPSJTUEFDRV9XRUFUSEVSX1NFTlNPUiIsdFt0LkVOVklST05NRU5UQUxfU0VOU09SPTEzXT0iRU5WSVJPTk1FTlRBTF9TRU5TT1IiLHRbdC5TRUlTTUlDX1NFTlNPUj0xNF09IlNFSVNNSUNfU0VOU09SIix0W3QuR1JBVklNRVRSSUNfU0VOU09SPTE1XT0iR1JBVklNRVRSSUNfU0VOU09SIix0W3QuTUFHTkVUSUNfU0VOU09SPTE2XT0iTUFHTkVUSUNfU0VOU09SIix0W3QuRUxFQ1RST01BR05FVElDX1NFTlNPUj0xN109IkVMRUNUUk9NQUdORVRJQ19TRU5TT1IiLHRbdC5USEVSTUFMX1NFTlNPUj0xOF09IlRIRVJNQUxfU0VOU09SIix0W3QuQ0hFTUlDQUxfU0VOU09SPTE5XT0iQ0hFTUlDQUxfU0VOU09SIix0W3QuQklPTE9HSUNBTF9TRU5TT1I9MjBdPSJCSU9MT0dJQ0FMX1NFTlNPUiIsdFt0LlJBRElBVElPTl9TRU5TT1I9MjFdPSJSQURJQVRJT05fU0VOU09SIix0W3QuUEFSVElDTEVfREVURUNUT1I9MjJdPSJQQVJUSUNMRV9ERVRFQ1RPUiIsdFt0LkxJREFSPTIzXT0iTElEQVIiLHRbdC5TT05BUj0yNF09IlNPTkFSIix0W3QuVEVMRVNDT1BFPTI1XT0iVEVMRVNDT1BFIix0W3QuU1BFQ1RST1NDT1BJQ19TRU5TT1I9MjZdPSJTUEVDVFJPU0NPUElDX1NFTlNPUiIsdFt0LlBIT1RPTUVUUklDX1NFTlNPUj0yN109IlBIT1RPTUVUUklDX1NFTlNPUiIsdFt0LlBPTEFSSU1FVFJJQ19TRU5TT1I9MjhdPSJQT0xBUklNRVRSSUNfU0VOU09SIix0W3QuSU5URVJGRVJPTUVUUklDX1NFTlNPUj0yOV09IklOVEVSRkVST01FVFJJQ19TRU5TT1IiLHRbdC5NVUxUSVNQRUNUUkFMX1NFTlNPUj0zMF09Ik1VTFRJU1BFQ1RSQUxfU0VOU09SIix0W3QuSFlQRVJTUEVDVFJBTF9TRU5TT1I9MzFdPSJIWVBFUlNQRUNUUkFMX1NFTlNPUiIsdFt0LkdQU19SRUNFSVZFUj0zMl09IkdQU19SRUNFSVZFUiIsdFt0LlJBRElPX0NPTU1VTklDQVRJT05TPTMzXT0iUkFESU9fQ09NTVVOSUNBVElPTlMiLHRbdC5MQVNFUl9DT01NVU5JQ0FUSU9OUz0zNF09IkxBU0VSX0NPTU1VTklDQVRJT05TIix0W3QuU0FURUxMSVRFX0NPTU1VTklDQVRJT05TPTM1XT0iU0FURUxMSVRFX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfSU5TVFJVTUVOVD0zNl09IkxBU0VSX0lOU1RSVU1FTlQiLHRbdC5SRl9BTkFMWVpFUj0zN109IlJGX0FOQUxZWkVSIix0W3QuSU9OT1NQSEVSSUNfU0VOU09SPTM4XT0iSU9OT1NQSEVSSUNfU0VOU09SIix0W3QuTEFTRVJfSU1BR0lORz0zOV09IkxBU0VSX0lNQUdJTkciLHRbdC5PUFRJQ0FMX1RFTEVTQ09QRT00MF09Ik9QVElDQUxfVEVMRVNDT1BFIix0W3QuSElHSF9SRVNPTFVUSU9OX09QVElDQUw9NDFdPSJISUdIX1JFU09MVVRJT05fT1BUSUNBTCIsdFt0LlJBRElPPTQyXT0iUkFESU8iLHRbdC5NSUNST1dBVkVfVFJBTlNNSVRURVI9NDNdPSJNSUNST1dBVkVfVFJBTlNNSVRURVIiLHRbdC5SRl9NT05JVE9SPTQ0XT0iUkZfTU9OSVRPUiIsdFt0LkhGX1JBRElPX0NPTU1VTklDQVRJT05TPTQ1XT0iSEZfUkFESU9fQ09NTVVOSUNBVElPTlMifSkoVXV8fChVdT17fSkpfSk7dmFyIE11LEhZPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LmxpbmVhcj0wXT0ibGluZWFyIix0W3QuY2lyY3VsYXI9MV09ImNpcmN1bGFyIix0W3QuZWxsaXB0aWNhbD0yXT0iZWxsaXB0aWNhbCIsdFt0LnVucG9sYXJpemVkPTNdPSJ1bnBvbGFyaXplZCJ9KShNdXx8KE11PXt9KSl9KTt2YXIgUXUsdlk9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QudmVydGljYWw9MF09InZlcnRpY2FsIix0W3QuaG9yaXpvbnRhbD0xXT0iaG9yaXpvbnRhbCIsdFt0LmxlZnRIYW5kQ2lyY3VsYXI9Ml09ImxlZnRIYW5kQ2lyY3VsYXIiLHRbdC5yaWdodEhhbmRDaXJjdWxhcj0zXT0icmlnaHRIYW5kQ2lyY3VsYXIifSkoUXV8fChRdT17fSkpfSk7dmFyIHpZPVMoKCk9PntfdCgpfSk7dmFyIFpmPVMoKCk9PntfdCgpO1BZKCk7SlkoKTtqWSgpO1d1KCk7SFkoKTt2WSgpO3pZKCl9KTt2YXIgaVI9UygoKT0+e190KCk7WmYoKX0pO3ZhciBMdSxLWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5OT19DVVJSRU5UX0VMRU1FTlRTPTBdPSJOT19DVVJSRU5UX0VMRU1FTlRTIix0W3QuTk9fSU5JVElBTF9FTEVNRU5UUz0xXT0iTk9fSU5JVElBTF9FTEVNRU5UUyIsdFt0Lk5PX0VMRU1FTlRTX0FWQUlMQUJMRT0yXT0iTk9fRUxFTUVOVFNfQVZBSUxBQkxFIix0W3QuT0s9M109Ik9LIn0pKEx1fHwoTHU9e30pKX0pO3ZhciB5dSxYWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5EUlk9MF09IkRSWSIsdFt0LldFVD0xXT0iV0VUIn0pKHl1fHwoeXU9e30pKX0pO3ZhciB3dSxxWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5QQVlMT0FEPTBdPSJQQVlMT0FEIix0W3QuUk9DS0VUX0JPRFk9MV09IlJPQ0tFVF9CT0RZIix0W3QuREVCUklTPTJdPSJERUJSSVMiLHRbdC5VTktOT1dOPTNdPSJVTktOT1dOIn0pKHd1fHwod3U9e30pKX0pO3ZhciB4dSwkWT1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PUEVSQVRJT05BTD0wXT0iT1BFUkFUSU9OQUwiLHRbdC5OT05PUEVSQVRJT05BTD0xXT0iTk9OT1BFUkFUSU9OQUwiLHRbdC5QQVJUSUFMTFlfT1BFUkFUSU9OQUw9Ml09IlBBUlRJQUxMWV9PUEVSQVRJT05BTCIsdFt0LkJBQ0tVUF9TVEFOREJZPTNdPSJCQUNLVVBfU1RBTkRCWSIsdFt0LlNQQVJFPTRdPSJTUEFSRSIsdFt0LkVYVEVOREVEX01JU1NJT049NV09IkVYVEVOREVEX01JU1NJT04iLHRbdC5ERUNBWUVEPTZdPSJERUNBWUVEIix0W3QuVU5LTk9XTj03XT0iVU5LTk9XTiJ9KSh4dXx8KHh1PXt9KSl9KTt2YXIgUHUsdFY9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1JCSVQ9MF09Ik9SQklUIix0W3QuTEFORElORz0xXT0iTEFORElORyIsdFt0LklNUEFDVD0yXT0iSU1QQUNUIix0W3QuRE9DS0VEPTNdPSJET0NLRUQiLHRbdC5ST1VORFRSSVA9NF09IlJPVU5EVFJJUCJ9KShQdXx8KFB1PXt9KSl9KTt2YXIgYWQ9UygoKT0+e190KCk7aVIoKTtLWSgpO1hZKCk7cVkoKTskWSgpO3RWKCl9KTt2YXIgZUg9UygoKT0+e190KCk7YWQoKX0pO3ZhciBKdSxpVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TaWduaW5nPTBdPSJTaWduaW5nIix0W3QuRW5jcnlwdGlvbj0xXT0iRW5jcnlwdGlvbiJ9KShKdXx8KEp1PXt9KSl9KTt2YXIgblY9UygoKT0+e190KCk7aVYoKX0pO3ZhciBJZj1TKCgpPT57X3QoKTt3WSgpO25WKCl9KTt2YXIganUsc1Y9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuQ0FMQ1VMQVRFRD0wXT0iQ0FMQ1VMQVRFRCIsdFt0LkRFRkFVTFQ9MV09IkRFRkFVTFQifSkoanV8fChqdT17fSkpfSk7dmFyIExhLFlBPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShMYXx8KExhPXt9KSl9KTt2YXIgb1Y9UygoKT0+e190KCk7YWQoKTtJZigpO3NWKCk7WUEoKX0pO3ZhciBzUj1TKCgpPT57X3QoKX0pO3ZhciB2dSxyVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FTExJUFNPSUQ9MF09IkVMTElQU09JRCIsdFt0LkJPWD0xXT0iQk9YIn0pKHZ1fHwodnU9e30pKX0pO3ZhciB6dT1TKCgpPT57X3QoKTtvVigpO3NSKCk7WUEoKTtyVigpfSk7dmFyIG5IPVMoKCk9PntfdCgpO3p1KCl9KTt2YXIgS3U9UygoKT0+e190KCl9KTt2YXIgb0g9UygoKT0+e190KCk7S3UoKX0pO3ZhciBYdT1TKCgpPT57X3QoKTthZCgpfSk7dmFyIGFIPVMoKCk9PntfdCgpO1h1KCl9KTt2YXIgcXU9UygoKT0+e190KCl9KTt2YXIgaEg9UygoKT0+e190KCk7cXUoKX0pO3ZhciAkdSxBVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5PQlNFUlZFRD0wXT0iT0JTRVJWRUQiLHRbdC5QUkVESUNURUQ9MV09IlBSRURJQ1RFRCJ9KSgkdXx8KCR1PXt9KSl9KTt2YXIgdEM9UygoKT0+e190KCl9KTt2YXIgbEg9UygoKT0+e190KCk7dEMoKX0pO3ZhciBlQyxoVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5MSVFVSUQ9MF09IkxJUVVJRCIsdFt0LlNPTElEPTFdPSJTT0xJRCIsdFt0LkhZQlJJRD0yXT0iSFlCUklEIix0W3QuSU9OPTNdPSJJT04iLHRbdC5OVUNMRUFSX1RIRVJNQUw9NF09Ik5VQ0xFQVJfVEhFUk1BTCIsdFt0Lk9USEVSPTVdPSJPVEhFUiJ9KShlQ3x8KGVDPXt9KSl9KTt2YXIgY1Y9UygoKT0+e190KCk7aFYoKX0pO3ZhciBpQz1TKCgpPT57X3QoKTtZQSgpfSk7dmFyIG1IPVMoKCk9PntfdCgpO2lDKCl9KTt2YXIgbkM9UygoKT0+e190KCk7QVYoKX0pO3ZhciBFSD1TKCgpPT57X3QoKTtuQygpfSk7dmFyIF9IPVMoKCk9PntfdCgpO0lmKCl9KTt2YXIgbFY9UygoKT0+e190KCl9KTt2YXIgc0MsZFY9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuT1VUTElFUj0wXT0iT1VUTElFUiJ9KShzQ3x8KHNDPXt9KSl9KTt2YXIgbVY9UygoKT0+e190KCk7ZFYoKX0pO3ZhciBvQz1TKCgpPT57X3QoKTttVigpfSk7dmFyIFpIPVMoKCk9PntfdCgpO29DKCl9KTt2YXIgSUg9UygoKT0+e190KCk7WmYoKX0pO3ZhciBmVj1TKCgpPT57X3QoKTtjVigpfSk7dmFyIEVWPVMoKCk9PntfdCgpfSk7dmFyIG9SPVMoKCk9PntfdCgpO2ZWKCk7RVYoKX0pO3ZhciByQyxfVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5MQVVOQ0hfU0lURT0wXT0iTEFVTkNIX1NJVEUiLHRbdC5PQlNFUlZBVElPTl9TVEFUSU9OPTFdPSJPQlNFUlZBVElPTl9TVEFUSU9OIix0W3QuSE9CQllJU1RfT0JTRVJWRVI9Ml09IkhPQkJZSVNUX09CU0VSVkVSIix0W3QuUkVTRUFSQ0hfRkFDSUxJVFk9M109IlJFU0VBUkNIX0ZBQ0lMSVRZIix0W3QuU0FURUxMSVRFX0dST1VORF9TVEFUSU9OPTRdPSJTQVRFTExJVEVfR1JPVU5EX1NUQVRJT04iLHRbdC5TUEFDRVBPUlQ9NV09IlNQQUNFUE9SVCIsdFt0Lk1JTElUQVJZX0JBU0U9Nl09Ik1JTElUQVJZX0JBU0UiLHRbdC5XRUFUSEVSX1NUQVRJT049N109IldFQVRIRVJfU1RBVElPTiIsdFt0LkFTVFJPTk9NSUNBTF9PQlNFUlZBVE9SWT04XT0iQVNUUk9OT01JQ0FMX09CU0VSVkFUT1JZIix0W3QuRURVQ0FUSU9OQUxfSU5TVElUVVRFPTldPSJFRFVDQVRJT05BTF9JTlNUSVRVVEUiLHRbdC5DT01NVU5JQ0FUSU9OX0hVQj0xMF09IkNPTU1VTklDQVRJT05fSFVCIix0W3QuUE9XRVJfUExBTlQ9MTFdPSJQT1dFUl9QTEFOVCIsdFt0LklORFVTVFJJQUxfQ09NUExFWD0xMl09IklORFVTVFJJQUxfQ09NUExFWCIsdFt0LlRSQU5TUE9SVEFUSU9OX0hVQj0xM109IlRSQU5TUE9SVEFUSU9OX0hVQiIsdFt0LlVSQkFOX0FSRUE9MTRdPSJVUkJBTl9BUkVBIix0W3QuTkFUSU9OQUxfUEFSSz0xNV09Ik5BVElPTkFMX1BBUksiLHRbdC5ISVNUT1JJQ0FMX1NJVEU9MTZdPSJISVNUT1JJQ0FMX1NJVEUiLHRbdC5PVEhFUj0xN109Ik9USEVSIn0pKHJDfHwockM9e30pKX0pO3ZhciByUj1TKCgpPT57X3QoKTtsVigpO1pmKCk7X1YoKX0pO3ZhciBhQz1TKCgpPT57X3QoKTtlUigpO2FkKCk7SWYoKTtvUigpO3JSKCl9KTt2YXIgdUg9UygoKT0+e190KCk7YUMoKX0pO3ZhciBwZixhUj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TR1A0PTBdPSJTR1A0Iix0W3QuU0dQNFhQPTFdPSJTR1A0WFAiLHRbdC5EU1NUPTJdPSJEU1NUIix0W3QuVVNNPTNdPSJVU00ifSkocGZ8fChwZj17fSkpfSk7dmFyIEFDPVMoKCk9PntfdCgpO2FSKCl9KTt2YXIgZ0g9UygoKT0+e190KCk7QUMoKX0pO3ZhciBoQz1TKCgpPT57X3QoKTthUigpfSk7dmFyIE5IPVMoKCk9PntfdCgpO2hDKCl9KTt2YXIgSVY9UygoKT0+e190KCk7WUEoKX0pO3ZhciBwVj1TKCgpPT57X3QoKX0pO3ZhciB1ZixBUj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5HTVNUPTBdPSJHTVNUIix0W3QuR1BTPTFdPSJHUFMiLHRbdC5NRVQ9Ml09Ik1FVCIsdFt0Lk1SVD0zXT0iTVJUIix0W3QuU0NMSz00XT0iU0NMSyIsdFt0LlRBST01XT0iVEFJIix0W3QuVENCPTZdPSJUQ0IiLHRbdC5UREI9N109IlREQiIsdFt0LlRDRz04XT0iVENHIix0W3QuVFQ9OV09IlRUIix0W3QuVVQxPTEwXT0iVVQxIix0W3QuVVRDPTExXT0iVVRDIn0pKHVmfHwodWY9e30pKX0pO3ZhciB1Vj1TKCgpPT57X3QoKTtJVigpO3BWKCk7WUEoKTtBUigpfSk7dmFyIGNDPVMoKCk9PntfdCgpO3VWKCl9KTt2YXIgYkg9UygoKT0+e190KCk7Y0MoKX0pO3ZhciBsQyxDVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5TR1A9MF09IlNHUCIsdFt0LlNHUDQ9MV09IlNHUDQiLHRbdC5TRFA0PTJdPSJTRFA0Iix0W3QuU0dQOD0zXT0iU0dQOCIsdFt0LlNEUDg9NF09IlNEUDgifSkobEN8fChsQz17fSkpfSk7dmFyIGRDPVMoKCk9PntfdCgpO0NWKCk7YVIoKTtZQSgpO0FSKCl9KTt2YXIgVkg9UygoKT0+e190KCk7ZEMoKX0pO3ZhciBtQz1TKCgpPT57X3QoKX0pO3ZhciBPSD1TKCgpPT57X3QoKTttQygpfSk7dmFyIEJIPVMoKCk9PntfdCgpO2lSKCl9KTt2YXIgR0g9UygoKT0+e190KCk7c1IoKX0pO3ZhciBnVj1TKCgpPT57X3QoKX0pO3ZhciBmQz1TKCgpPT57X3QoKTtnVigpfSk7dmFyIERIPVMoKCk9PntfdCgpO2ZDKCl9KTt2YXIgRUM9UygoKT0+e190KCk7WUEoKX0pO3ZhciBUVj1TKCgpPT57X3QoKX0pO3ZhciBfQz1TKCgpPT57X3QoKTtUVigpfSk7dmFyIFJDPVMoKCk9PntfdCgpO1lBKCl9KTt2YXIgWkM9UygoKT0+e190KCk7QVIoKX0pO3ZhciBJQyxOVj1TKCgpPT57ZVIoKTthZCgpO3p1KCk7S3UoKTtYdSgpO3F1KCk7dEMoKTtpQygpO25DKCk7SWYoKTtvQygpO1pmKCk7YUMoKTtBQygpO2hDKCk7Y0MoKTtkQygpO21DKCk7aVIoKTtzUigpO2ZDKCk7RUMoKTtvUigpO19DKCk7clIoKTtSQygpO1pDKCk7KGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuTVBFPTFdPSJNUEUiLHRbdC5PTU09Ml09Ik9NTSIsdFt0LlBMRD0zXT0iUExEIix0W3QuUkZNPTRdPSJSRk0iLHRbdC5DU009NV09IkNTTSIsdFt0Lk9TTT02XT0iT1NNIix0W3QuQ0FUPTddPSJDQVQiLHRbdC5DUk09OF09IkNSTSIsdFt0LlNDTT05XT0iU0NNIix0W3QuVERNPTEwXT0iVERNIix0W3QuSURNPTExXT0iSURNIix0W3QuTUVUPTEyXT0iTUVUIix0W3QuUk9DPTEzXT0iUk9DIix0W3QuQk9WPTE0XT0iQk9WIix0W3QuRU9QPTE1XT0iRU9QIix0W3QuRU9PPTE2XT0iRU9PIix0W3QuRU1FPTE3XT0iRU1FIix0W3QuTERNPTE4XT0iTERNIix0W3QuUE5NPTE5XT0iUE5NIix0W3QuSFlQPTIwXT0iSFlQIix0W3QuQ1RSPTIxXT0iQ1RSIix0W3QuQ0RNPTIyXT0iQ0RNIix0W3QuU0lUPTIzXT0iU0lUIix0W3QuT0VNPTI0XT0iT0VNIix0W3QuVElNPTI1XT0iVElNIix0W3QuRVBNPTI2XT0iRVBNIix0W3QuUFJHPTI3XT0iUFJHIn0pKElDfHwoSUM9e30pKX0pO3ZhciBGVj1TKCgpPT57X3QoKTtOVigpfSk7dmFyIExIPVMoKCk9PntfdCgpO0ZWKCl9KTt2YXIgeUg9UygoKT0+e190KCk7RUMoKX0pO3ZhciB3SD1TKCgpPT57X3QoKTtvUigpfSk7dmFyIHhIPVMoKCk9PntfdCgpO19DKCl9KTt2YXIgUEg9UygoKT0+e190KCk7clIoKX0pO3ZhciBKSD1TKCgpPT57X3QoKTtSQygpfSk7dmFyIGpIPVMoKCk9PntfdCgpO1pDKCl9KTt2YXIgSEg9UygoKT0+e3dZKCk7ZVIoKTskNCgpO1BZKCk7YWQoKTtlSCgpO3p1KCk7bkgoKTtvVigpO0t1KCk7b0goKTtYdSgpO2FIKCk7cXUoKTtoSCgpO25WKCk7SlkoKTtBVigpO2pZKCk7dEMoKTtsSCgpO2NWKCk7aFYoKTtpQygpO21IKCk7bkMoKTtFSCgpO0lmKCk7X0goKTtXdSgpO2xWKCk7b0MoKTtaSCgpO1pmKCk7SUgoKTtpVigpO2FDKCk7dUgoKTtBQygpO2dIKCk7aEMoKTtOSCgpO2NDKCk7YkgoKTtkQygpO1ZIKCk7bUMoKTtPSCgpO2lSKCk7QkgoKTtzUigpO0dIKCk7ZkMoKTtESCgpO0hZKCk7TEgoKTtFQygpO3lIKCk7b1IoKTt3SCgpO0ZWKCk7TlYoKTtUVigpO19DKCk7eEgoKTtyUigpO1BIKCk7ZlYoKTtFVigpO21WKCk7ZFYoKTt2WSgpO19WKCk7elkoKTtSQygpO0pIKCk7WkMoKTtqSCgpO2dWKCk7SVYoKTtzVigpO0tZKCk7dVYoKTtwVigpO0NWKCk7WFkoKTthUigpO3FZKCk7JFkoKTt0VigpO1lBKCk7clYoKTtBUigpfSk7dmFyIHBDLGJWPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LkVDRUY9MF09IkVDRUYiLHRbdC5JQ1JGPTFdPSJJQ1JGIix0W3QuVEVNRT0yXT0iVEVNRSIsdFt0LkVOVT0zXT0iRU5VIix0W3QuTkVEPTRdPSJORUQiLHRbdC5ORVU9NV09Ik5FVSIsdFt0LlJJQz02XT0iUklDIix0W3QuSjIwMDA9N109IkoyMDAwIix0W3QuR0NSRj04XT0iR0NSRiIsdFt0LkdSQz05XT0iR1JDIix0W3QuSVRSRjIwMDA9MTBdPSJJVFJGMjAwMCIsdFt0LklUUkY5Mz0xMV09IklUUkY5MyIsdFt0LklUUkY5Nz0xMl09IklUUkY5NyIsdFt0LlREUj0xM109IlREUiIsdFt0LlRPRD0xNF09IlRPRCIsdFt0LlJUTj0xNV09IlJUTiIsdFt0LlRWTj0xNl09IlRWTiIsdFt0LlZWTEg9MTddPSJWVkxIIix0W3QuVkxWSD0xOF09IlZMVkgiLHRbdC5MVFA9MTldPSJMVFAiLHRbdC5MVkxIPTIwXT0iTFZMSCIsdFt0LlBORT0yMV09IlBORSIsdFt0LkJSRj0yMl09IkJSRiIsdFt0LlJTVz0yM109IlJTVyIsdFt0LlROVz0yNF09IlROVyJ9KShwQ3x8KHBDPXt9KSl9KTt2YXIgWVY9UygoKT0+e190KCk7YlYoKX0pO3ZhciB2SD1TKCgpPT57X3QoKTtZVigpfSk7dmFyIHpIPVMoKCk9PntZVigpO3ZIKCk7YlYoKX0pO3ZhciB1QyxWVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5MSVFVSUQ9MF09IkxJUVVJRCIsdFt0LlNPTElEPTFdPSJTT0xJRCIsdFt0LkhZQlJJRD0yXT0iSFlCUklEIix0W3QuSU9OPTNdPSJJT04iLHRbdC5OVUNMRUFSX1RIRVJNQUw9NF09Ik5VQ0xFQVJfVEhFUk1BTCIsdFt0Lk9USEVSPTVdPSJPVEhFUiJ9KSh1Q3x8KHVDPXt9KSl9KTt2YXIgU1Y9UygoKT0+e190KCk7VlYoKX0pO3ZhciBPVj1TKCgpPT57X3QoKTtTVigpfSk7dmFyIEJWPVMoKCk9PntfdCgpfSk7dmFyIEdWPVMoKCk9PntfdCgpO09WKCk7QlYoKX0pO3ZhciBLSD1TKCgpPT57X3QoKTtHVigpfSk7dmFyIFhIPVMoKCk9PntTVigpO1ZWKCk7R1YoKTtLSCgpO09WKCk7QlYoKX0pO3ZhciBXVj1TKCgpPT57X3QoKX0pO3ZhciBEVj1TKCgpPT57X3QoKTtXVigpfSk7dmFyIHFIPVMoKCk9PntfdCgpO0RWKCl9KTt2YXIgJEg9UygoKT0+e1dWKCk7RFYoKTtxSCgpfSk7dmFyIENDPVMoKCk9PntfdCgpfSk7dmFyIFVWPVMoKCk9PntfdCgpO0NDKCl9KTt2YXIgZ0MsTVY9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuUkVBTD0wXT0iUkVBTCIsdFt0LlNJTVVMQVRFRD0xXT0iU0lNVUxBVEVEIix0W3QuU1lOVEhFVElDPTJdPSJTWU5USEVUSUMifSkoZ0N8fChnQz17fSkpfSk7dmFyIFRDLFFWPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LlVOS05PV049MF09IlVOS05PV04iLHRbdC5PUFRJQ0FMPTFdPSJPUFRJQ0FMIix0W3QuSU5GUkFSRURfU0VOU09SPTJdPSJJTkZSQVJFRF9TRU5TT1IiLHRbdC5VTFRSQVZJT0xFVF9TRU5TT1I9M109IlVMVFJBVklPTEVUX1NFTlNPUiIsdFt0LlhfUkFZX1NFTlNPUj00XT0iWF9SQVlfU0VOU09SIix0W3QuR0FNTUFfUkFZX1NFTlNPUj01XT0iR0FNTUFfUkFZX1NFTlNPUiIsdFt0LlJBREFSPTZdPSJSQURBUiIsdFt0LlBIQVNFRF9BUlJBWV9SQURBUj03XT0iUEhBU0VEX0FSUkFZX1JBREFSIix0W3QuU1lOVEhFVElDX0FQRVJUVVJFX1JBREFSPThdPSJTWU5USEVUSUNfQVBFUlRVUkVfUkFEQVIiLHRbdC5CSVNUQVRJQ19SQURJT19URUxFU0NPUEU9OV09IkJJU1RBVElDX1JBRElPX1RFTEVTQ09QRSIsdFt0LlJBRElPX1RFTEVTQ09QRT0xMF09IlJBRElPX1RFTEVTQ09QRSIsdFt0LkFUTU9TUEhFUklDX1NFTlNPUj0xMV09IkFUTU9TUEhFUklDX1NFTlNPUiIsdFt0LlNQQUNFX1dFQVRIRVJfU0VOU09SPTEyXT0iU1BBQ0VfV0VBVEhFUl9TRU5TT1IiLHRbdC5FTlZJUk9OTUVOVEFMX1NFTlNPUj0xM109IkVOVklST05NRU5UQUxfU0VOU09SIix0W3QuU0VJU01JQ19TRU5TT1I9MTRdPSJTRUlTTUlDX1NFTlNPUiIsdFt0LkdSQVZJTUVUUklDX1NFTlNPUj0xNV09IkdSQVZJTUVUUklDX1NFTlNPUiIsdFt0Lk1BR05FVElDX1NFTlNPUj0xNl09Ik1BR05FVElDX1NFTlNPUiIsdFt0LkVMRUNUUk9NQUdORVRJQ19TRU5TT1I9MTddPSJFTEVDVFJPTUFHTkVUSUNfU0VOU09SIix0W3QuVEhFUk1BTF9TRU5TT1I9MThdPSJUSEVSTUFMX1NFTlNPUiIsdFt0LkNIRU1JQ0FMX1NFTlNPUj0xOV09IkNIRU1JQ0FMX1NFTlNPUiIsdFt0LkJJT0xPR0lDQUxfU0VOU09SPTIwXT0iQklPTE9HSUNBTF9TRU5TT1IiLHRbdC5SQURJQVRJT05fU0VOU09SPTIxXT0iUkFESUFUSU9OX1NFTlNPUiIsdFt0LlBBUlRJQ0xFX0RFVEVDVE9SPTIyXT0iUEFSVElDTEVfREVURUNUT1IiLHRbdC5MSURBUj0yM109IkxJREFSIix0W3QuU09OQVI9MjRdPSJTT05BUiIsdFt0LlRFTEVTQ09QRT0yNV09IlRFTEVTQ09QRSIsdFt0LlNQRUNUUk9TQ09QSUNfU0VOU09SPTI2XT0iU1BFQ1RST1NDT1BJQ19TRU5TT1IiLHRbdC5QSE9UT01FVFJJQ19TRU5TT1I9MjddPSJQSE9UT01FVFJJQ19TRU5TT1IiLHRbdC5QT0xBUklNRVRSSUNfU0VOU09SPTI4XT0iUE9MQVJJTUVUUklDX1NFTlNPUiIsdFt0LklOVEVSRkVST01FVFJJQ19TRU5TT1I9MjldPSJJTlRFUkZFUk9NRVRSSUNfU0VOU09SIix0W3QuTVVMVElTUEVDVFJBTF9TRU5TT1I9MzBdPSJNVUxUSVNQRUNUUkFMX1NFTlNPUiIsdFt0LkhZUEVSU1BFQ1RSQUxfU0VOU09SPTMxXT0iSFlQRVJTUEVDVFJBTF9TRU5TT1IiLHRbdC5HUFNfUkVDRUlWRVI9MzJdPSJHUFNfUkVDRUlWRVIiLHRbdC5SQURJT19DT01NVU5JQ0FUSU9OUz0zM109IlJBRElPX0NPTU1VTklDQVRJT05TIix0W3QuTEFTRVJfQ09NTVVOSUNBVElPTlM9MzRdPSJMQVNFUl9DT01NVU5JQ0FUSU9OUyIsdFt0LlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUz0zNV09IlNBVEVMTElURV9DT01NVU5JQ0FUSU9OUyIsdFt0LkxBU0VSX0lOU1RSVU1FTlQ9MzZdPSJMQVNFUl9JTlNUUlVNRU5UIix0W3QuUkZfQU5BTFlaRVI9MzddPSJSRl9BTkFMWVpFUiIsdFt0LklPTk9TUEhFUklDX1NFTlNPUj0zOF09IklPTk9TUEhFUklDX1NFTlNPUiIsdFt0LkxBU0VSX0lNQUdJTkc9MzldPSJMQVNFUl9JTUFHSU5HIix0W3QuT1BUSUNBTF9URUxFU0NPUEU9NDBdPSJPUFRJQ0FMX1RFTEVTQ09QRSIsdFt0LkhJR0hfUkVTT0xVVElPTl9PUFRJQ0FMPTQxXT0iSElHSF9SRVNPTFVUSU9OX09QVElDQUwiLHRbdC5SQURJTz00Ml09IlJBRElPIix0W3QuTUlDUk9XQVZFX1RSQU5TTUlUVEVSPTQzXT0iTUlDUk9XQVZFX1RSQU5TTUlUVEVSIix0W3QuUkZfTU9OSVRPUj00NF09IlJGX01PTklUT1IiLHRbdC5IRl9SQURJT19DT01NVU5JQ0FUSU9OUz00NV09IkhGX1JBRElPX0NPTU1VTklDQVRJT05TIn0pKFRDfHwoVEM9e30pKX0pO3ZhciBrVj1TKCgpPT57X3QoKX0pO3ZhciBOQyxMVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5saW5lYXI9MF09ImxpbmVhciIsdFt0LmNpcmN1bGFyPTFdPSJjaXJjdWxhciIsdFt0LmVsbGlwdGljYWw9Ml09ImVsbGlwdGljYWwiLHRbdC51bnBvbGFyaXplZD0zXT0idW5wb2xhcml6ZWQifSkoTkN8fChOQz17fSkpfSk7dmFyIEZDLHlWPVMoKCk9PnsoZnVuY3Rpb24odCl7dFt0LnZlcnRpY2FsPTBdPSJ2ZXJ0aWNhbCIsdFt0Lmhvcml6b250YWw9MV09Imhvcml6b250YWwiLHRbdC5sZWZ0SGFuZENpcmN1bGFyPTJdPSJsZWZ0SGFuZENpcmN1bGFyIix0W3QucmlnaHRIYW5kQ2lyY3VsYXI9M109InJpZ2h0SGFuZENpcmN1bGFyIn0pKEZDfHwoRkM9e30pKX0pO3ZhciB3Vj1TKCgpPT57X3QoKX0pO3ZhciBiQz1TKCgpPT57X3QoKTtVVigpO01WKCk7UVYoKTtDQygpO0xWKCk7eVYoKTt3VigpfSk7dmFyIGl2PVMoKCk9PntfdCgpO2JDKCl9KTt2YXIgWUMseFY9UygoKT0+eyhmdW5jdGlvbih0KXt0W3QuTEFVTkNIX1NJVEU9MF09IkxBVU5DSF9TSVRFIix0W3QuT0JTRVJWQVRJT05fU1RBVElPTj0xXT0iT0JTRVJWQVRJT05fU1RBVElPTiIsdFt0LkhPQkJZSVNUX09CU0VSVkVSPTJdPSJIT0JCWUlTVF9PQlNFUlZFUiIsdFt0LlJFU0VBUkNIX0ZBQ0lMSVRZPTNdPSJSRVNFQVJDSF9GQUNJTElUWSIsdFt0LlNBVEVMTElURV9HUk9VTkRfU1RBVElPTj00XT0iU0FURUxMSVRFX0dST1VORF9TVEFUSU9OIix0W3QuU1BBQ0VQT1JUPTVdPSJTUEFDRVBPUlQiLHRbdC5NSUxJVEFSWV9CQVNFPTZdPSJNSUxJVEFSWV9CQVNFIix0W3QuV0VBVEhFUl9TVEFUSU9OPTddPSJXRUFUSEVSX1NUQVRJT04iLHRbdC5BU1RST05PTUlDQUxfT0JTRVJWQVRPUlk9OF09IkFTVFJPTk9NSUNBTF9PQlNFUlZBVE9SWSIsdFt0LkVEVUNBVElPTkFMX0lOU1RJVFVURT05XT0iRURVQ0FUSU9OQUxfSU5TVElUVVRFIix0W3QuQ09NTVVOSUNBVElPTl9IVUI9MTBdPSJDT01NVU5JQ0FUSU9OX0hVQiIsdFt0LlBPV0VSX1BMQU5UPTExXT0iUE9XRVJfUExBTlQiLHRbdC5JTkRVU1RSSUFMX0NPTVBMRVg9MTJdPSJJTkRVU1RSSUFMX0NPTVBMRVgiLHRbdC5UUkFOU1BPUlRBVElPTl9IVUI9MTNdPSJUUkFOU1BPUlRBVElPTl9IVUIiLHRbdC5VUkJBTl9BUkVBPTE0XT0iVVJCQU5fQVJFQSIsdFt0Lk5BVElPTkFMX1BBUks9MTVdPSJOQVRJT05BTF9QQVJLIix0W3QuSElTVE9SSUNBTF9TSVRFPTE2XT0iSElTVE9SSUNBTF9TSVRFIix0W3QuT1RIRVI9MTddPSJPVEhFUiJ9KShZQ3x8KFlDPXt9KSl9KTt2YXIgUFY9UygoKT0+e190KCk7a1YoKTtiQygpO3hWKCl9KTt2YXIgbnY9UygoKT0+e190KCk7UFYoKX0pO3ZhciBzdj1TKCgpPT57VVYoKTtNVigpO1FWKCk7Q0MoKTtrVigpO2JDKCk7aXYoKTtMVigpO1BWKCk7bnYoKTt5VigpO3hWKCk7d1YoKX0pO3ZhciBoUixWQz1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5FQ0VGPTBdPSJFQ0VGIix0W3QuSUNSRj0xXT0iSUNSRiIsdFt0LlRFTUU9Ml09IlRFTUUiLHRbdC5FTlU9M109IkVOVSIsdFt0Lk5FRD00XT0iTkVEIix0W3QuTkVVPTVdPSJORVUiLHRbdC5SSUM9Nl09IlJJQyIsdFt0LkoyMDAwPTddPSJKMjAwMCIsdFt0LkdDUkY9OF09IkdDUkYiLHRbdC5HUkM9OV09IkdSQyIsdFt0LklUUkYyMDAwPTEwXT0iSVRSRjIwMDAiLHRbdC5JVFJGOTM9MTFdPSJJVFJGOTMiLHRbdC5JVFJGOTc9MTJdPSJJVFJGOTciLHRbdC5URFI9MTNdPSJURFIiLHRbdC5UT0Q9MTRdPSJUT0QiLHRbdC5SVE49MTVdPSJSVE4iLHRbdC5UVk49MTZdPSJUVk4iLHRbdC5WVkxIPTE3XT0iVlZMSCIsdFt0LlZMVkg9MThdPSJWTFZIIix0W3QuTFRQPTE5XT0iTFRQIix0W3QuTFZMSD0yMF09IkxWTEgiLHRbdC5QTkU9MjFdPSJQTkUiLHRbdC5CUkY9MjJdPSJCUkYiLHRbdC5SU1c9MjNdPSJSU1ciLHRbdC5UTlc9MjRdPSJUTlcifSkoaFJ8fChoUj17fSkpfSk7dmFyIEpWPVMoKCk9PntfdCgpO1ZDKCl9KTt2YXIgb3Y9UygoKT0+e190KCk7SlYoKX0pO3ZhciBqVj1TKCgpPT57X3QoKTtWQygpfSk7dmFyIHJ2PVMoKCk9PntfdCgpO2pWKCl9KTt2YXIgYXY9UygoKT0+e0pWKCk7b3YoKTtqVigpO3J2KCk7VkMoKX0pO3ZhciBTQyxIVj1TKCgpPT57KGZ1bmN0aW9uKHQpe3RbdC5HTVNUPTBdPSJHTVNUIix0W3QuR1BTPTFdPSJHUFMiLHRbdC5NRVQ9Ml09Ik1FVCIsdFt0Lk1SVD0zXT0iTVJUIix0W3QuU0NMSz00XT0iU0NMSyIsdFt0LlRBST01XT0iVEFJIix0W3QuVENCPTZdPSJUQ0IiLHRbdC5UREI9N109IlREQiIsdFt0LlRDRz04XT0iVENHIix0W3QuVFQ9OV09IlRUIix0W3QuVVQxPTEwXT0iVVQxIix0W3QuVVRDPTExXT0iVVRDIn0pKFNDfHwoU0M9e30pKX0pO3ZhciB2Vj1TKCgpPT57X3QoKTtIVigpfSk7dmFyIEF2PVMoKCk9PntfdCgpO3ZWKCl9KTt2YXIgaHY9UygoKT0+e3ZWKCk7QXYoKTtIVigpfSk7dmFyIHpWPVMoKCk9PntwMygpO1QzKCk7UTMoKTtMMygpO3ozKCk7WDMoKTskMygpO2k0KCk7czQoKTtyNCgpO0E0KCk7bDQoKTtiNCgpO1Y0KCk7QjQoKTtVNCgpO3k0KCk7eDQoKTt2NCgpO0s0KCk7cTQoKTtISCgpO3pIKCk7WEgoKTskSCgpO3N2KCk7YXYoKTtodigpfSk7dmFyIGJodCxZZmUsWWh0LFZmZSxPQyxjdj1TKCgpPT57U0YoKTtPcigpO210KCk7SHQoKTtfMygpO2ljKCk7ZnIoKTtkbigpO1FuKCk7elYoKTsoe09NTVQ6Ymh0LE9NTUNPTExFQ1RJT05UOllmZX09cmQpLHtDQVRUOllodCxDQVRDT0xMRUNUSU9OVDpWZmV9PWVkO051bWJlci5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQsZSxpLG4pe3JldHVybih0aGlzLXQpKihuLWkpLyhlLXQpK2l9O09DPWNsYXNzIGV4dGVuZHMgcmZ7Y29uc3RydWN0b3IoZSxpLG4scyl7c3VwZXIoZSksdGhpcy5jb25zdHJ1Y3Rvci5wcm90b3R5cGUud2FzbVNjaGVtYT17fSx0aGlzLl9wb3NpdGlvbj1uZXcgRTMsdGhpcy5fc3BhY2VDYXRhbG9nPW4sdGhpcy5fd2FzbU1vZHVsZT1pLHRoaXMuX3ZlbG9jaXR5PXtnZXRWYWx1ZToobyxyKT0+dGhpcy5fdmVsb2NpdHkuZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lKG8sMCxyKSxnZXRWYWx1ZUluUmVmZXJlbmNlRnJhbWU6KG8scixhKT0+e2xldCBoPW5ldyBGbG9hdDY0QXJyYXkoaS5IRUFQOC5idWZmZXIsbi5nZXRWZWxvY2l0eSh0aGlzLnByb3BlcnRpZXMud2FzbVNwYWNlRW50aXR5LFplLnRvRGF0ZShvKS5nZXRUaW1lKCksciE9PSRpLlRFTUUpLDMpO2lmKG0oYSl8fChhPW5ldyBsKSxhPWwuZnJvbUFycmF5KGgpLHI9PT0kaS5JTkVSVElBTCl7bGV0IEE9SW4uY29tcHV0ZUZpeGVkVG9JY3JmTWF0cml4KG8pO2lmKG0oQSkpe2xldCBkPW5ldyBsO2x0Lm11bHRpcGx5QnlWZWN0b3IoQSxhLGQpLGE9ZH19cmV0dXJuIGF9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmVsb2NpdHkiLHtnZXQ6KCk9PnRoaXMuX3ZlbG9jaXR5LHNldDooKT0+e319KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLl9wb3NpdGlvbix7aXNDb25zdGFudDp7Z2V0OigpPT4hMX0sX3JlZmVyZW5jZUZyYW1lOntnZXQ6KCk9PnRoaXMuZW50aXR5Q29sbGVjdGlvbi5yZWZlcmVuY2VGcmFtZX0scmVmZXJlbmNlRnJhbWU6e2dldDooKT0+dGhpcy5fcmVmZXJlbmNlRnJhbWV9fSksdGhpcy5fcG9zaXRpb24uZ2V0VmFsdWU9KG8scik9PnRoaXMuX3Bvc2l0aW9uLmdldFZhbHVlSW5SZWZlcmVuY2VGcmFtZShvLDAsciksdGhpcy5fcG9zaXRpb24uZ2V0VmFsdWVJblJlZmVyZW5jZUZyYW1lPShvLHIsYSk9PntsZXQgaD1uZXcgRmxvYXQ2NEFycmF5KGkuSEVBUDguYnVmZmVyLG4uZ2V0UG9zaXRpb25JblJlZmVyZW5jZUZyYW1lKHRoaXMucHJvcGVydGllcy53YXNtU3BhY2VFbnRpdHksWmUudG9EYXRlKG8pLmdldFRpbWUoKSxyIT09JGkuVEVNRSksMyk7aWYobShhKXx8KGE9bmV3IGwpLGE9bC5mcm9tQXJyYXkoaCkscj09PSRpLklORVJUSUFMKXtsZXQgQT1Jbi5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgobyk7aWYobShBKSl7bGV0IGQ9bmV3IGw7bHQubXVsdGlwbHlCeVZlY3RvcihBLGEsZCksYT1kfX1yZXR1cm4gYX0sdGhpcy5jaGlsZHJlbj17YWRkOm89PihvPXRoaXMuZW50aXR5Q29sbGVjdGlvbi5hZGQobyksdGhpcy5lbnRpdHlDb2xsZWN0aW9uLmFsbFZhbHVlc3x8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLmVudGl0eUNvbGxlY3Rpb24sImFsbFZhbHVlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdGllcy52YWx1ZXN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuZW50aXR5Q29sbGVjdGlvbiwidmFsdWVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0aWVzLnZhbHVlcy5maWx0ZXIocj0+IXIuX2lzQ2hpbGQpfX0pKSxvLl9pc0NoaWxkPSEwLG8ucGFyZW50PXRoaXMsby5wb3NpdGlvbj10aGlzLnBvc2l0aW9uLG8pLHJlbW92ZTpvPT57dGhpcy5lbnRpdHlDb2xsZWN0aW9uLnJlbW92ZShvKTtsZXQgcj10aGlzLl9jaGlsZHJlbi5pbmRleE9mKHRoaXMpO3RoaXMuX2NoaWxkcmVuLnNwbGljZShyLDEpfSx2YWx1ZXM6dGhpcy5fY2hpbGRyZW59LHRoaXMubG9hZE9NTShzKX1sb2FkT01NKGUpe2xldCBpPW5ldyB0aGlzLl93YXNtTW9kdWxlLlByb3BhZ2F0ZWRQb3NpdGlvblByb3BlcnR5O2kuYWRkT01NKGUpLHRoaXMucHJvcGVydGllcy53YXNtU3BhY2VFbnRpdHk9aSx0aGlzLnByb3BlcnRpZXMuQ0FUPXRoaXMucHJvcGVydGllcy5fQ0FUfHxuZXcgWWh0LHRoaXMucHJvcGVydGllcy5fQ0FULl92YWx1ZS5BUE9HRUU9aS5hcG9nZWUsdGhpcy5wcm9wZXJ0aWVzLl9DQVQuX3ZhbHVlLlBFUklHRUU9aS5wZXJpZ2VlLHRoaXMucHJvcGVydGllcy5fQ0FULl92YWx1ZS5QRVJJT0Q9aS5wZXJpb2Rfc2VjLHRoaXMucHJvcGVydGllcy5PTU09dGhpcy5wcm9wZXJ0aWVzLl9PTU18fG5ldyBiaHQsdGhpcy5wcm9wZXJ0aWVzLl9PTU0uX3ZhbHVlLkVDQ0VOVFJJQ0lUWT1pLmVjY28sdGhpcy5wcm9wZXJ0aWVzLl9PTU0uX3ZhbHVlLlNFTUlfTUFKT1JfQVhJUz1pLnNlbWlfbWFqb3JfYXhpcy8xZTMsdGhpcy5wcm9wZXJ0aWVzLl9PTU0uX3ZhbHVlLlNFTUlfTUlOT1JfQVhJUz1pLnNlbWlfbWlub3JfYXhpcy8xZTMsdGhpcy5hcnJheV9pbmRleD10aGlzLnByb3BlcnRpZXMud2FzbVNwYWNlRW50aXR5LmFycmF5X2luZGV4LHRoaXMuc2FtcGxlc1BlclBlcmlvZD0xODAsdGhpcy5leHRyYUVwb2NoU2FtcGxlcz02MCx0aGlzLnJlc29sdXRpb25BdEVwb2NoPTUsdGhpcy5hdXRvRXBvY2hSZXNvbHV0aW9uPSEwLHRoaXMuZXBvY2hCbG9ja1NpemU9LjUsdGhpcy5leHRyYVNhbXBsZXM9NSx0aGlzLmVjY2VudHJpY2l0eVRocmVzaG9sZD0uMix0aGlzLnRhcmdldEludGVydmFsQ291bnQ9MjAsdGhpcy5fb3JiaXRTaG93aW5nPSExLHRoaXMuX2NvdmVyYWdlU2hvd2luZz0hMSx0aGlzLnJlZmVyZW5jZUZyYW1lPSRpLlJJQyx0aGlzLl9wb3NpdGlvbi5fY2xlYXJDYWNoZT0hMH1nZXQgb3JiaXRTaG93aW5nKCl7cmV0dXJuIHRoaXMuX29yYml0U2hvd2luZ31nZXQgY292ZXJhZ2VTaG93aW5nKCl7cmV0dXJuIHRoaXMuX2NvdmVyYWdlU2hvd2luZ31zaG93Q292ZXJhZ2UoZT17c2hvdzohMX0pe3RoaXMuX2NvdmVyYWdlU2hvd2luZz1lLnNob3csZS5zaG93P3RoaXMuZW50aXR5Q29sbGVjdGlvbi5vd25lci5fY292ZXJhZ2VHcm91cC5wdXNoKHRoaXMpOnRoaXMuZW50aXR5Q29sbGVjdGlvbi5vd25lci5fY292ZXJhZ2VHcm91cC5yZW1vdmUoe2lkOnRoaXMuaWR9KX1zaG93T3JiaXQoZT17c2hvdzohMX0pe2lmKHRoaXMuX29yYml0U2hvd2luZz1lLnNob3csIWUuc2hvdyl7dGhpcy5wYXRoPW51bGw7cmV0dXJufWUmJihlLmNvbG9yPWUubWF0ZXJpYWwpLGU/LnJlZmVyZW5jZUVudGl0eT90aGlzLl9sb2NhbFJlZmVyZW5jZUVudGl0eT1lLnJlZmVyZW5jZUVudGl0eTp0aGlzLl9sb2NhbFJlZmVyZW5jZUVudGl0eT12b2lkIDAsdGhpcy5wYXRoPXRoaXMucGF0aHx8e307bGV0e21hdGVyaWFsOmksd2lkdGg6bixsZWFkVGltZTpzLHRyYWlsVGltZTpvLHJlc29sdXRpb246cn09dGhpcy5wYXRoO3RoaXMucGF0aD1PYmplY3QuYXNzaWduKHt9LHttYXRlcmlhbDppfHxadC5XSElURSx3aWR0aDpufHwxLjI1LGxlYWRUaW1lOnN8fDVlMyx0cmFpbFRpbWU6b3x8NWUzLHJlc29sdXRpb246cnx8MTIwLHNob3c6ITB9LGUpO2xldHtlY2NvOmEscGVyaW9kX3NlYzpofT10aGlzLnByb3BlcnRpZXMud2FzbVNwYWNlRW50aXR5LEE9YTx0aGlzLmVjY2VudHJpY2l0eVRocmVzaG9sZDtBfHwodGhpcy5leHRyYVNhbXBsZXM9YS5tYXAodGhpcy5lY2NlbnRyaWNpdHlUaHJlc2hvbGQsLjksMTAsNTApLHRoaXMuc2FtcGxlc1BlclBlcmlvZD1hLm1hcCh0aGlzLmVjY2VudHJpY2l0eVRocmVzaG9sZCwuOSwxODAsMTQ0MCkpO2xldHtzYW1wbGVzUGVyUGVyaW9kOmR9PXRoaXMsRT1oLyhBPzEuODoyKTt0aGlzLnBhdGgubGVhZFRpbWU9RSx0aGlzLnBhdGgudHJhaWxUaW1lPUU7bGV0IF89ey4uLnRoaXMscGVyaW9kOmgscmVzb2x1dGlvbjpoL2R9O3RoaXMucGF0aC5yZXNvbHV0aW9uPUE/ey4uLl8sbWV0aG9kOiJ0aW1lU3RlcCJ9OnsuLi5fLG1ldGhvZDoidHJ1ZUFub21hbHkiLHBlcmlvZDpoLHNhbXBsZXNQZXJQZXJpb2Q6ZH19fX0pO3ZhciBTaHQsVmh0LEJDLGx2PVMoKCk9PntTaHQ9e30sVmh0PSgoKT0+e3ZhciB0PVNodC51cmw7cmV0dXJuIGZ1bmN0aW9uKGU9e30pe3ZhciBpPWUsbixzO2kucmVhZHk9bmV3IFByb21pc2UoKHUsVik9PntuPXUscz1WfSksWyJfZ2V0Q292ZXJhZ2VQb3NpdGlvbnMiLCJfaW5mbGF0ZUVsbGlwc29pZCIsIl9tYWxsb2MiLCJfZnJlZSIsIl9tZW1vcnkiLCJfZmZsdXNoIiwiX19lbWJpbmRfaW5pdGlhbGl6ZV9iaW5kaW5ncyIsIl9fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlIiwiX19fc3RhcnRfZW1fYXNtIiwiX19fc3RvcF9lbV9hc20iLCJvblJ1bnRpbWVJbml0aWFsaXplZCJdLmZvckVhY2godT0+e09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaS5yZWFkeSx1KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGkucmVhZHksdSx7Z2V0OigpPT5CZSgiWW91IGFyZSBnZXR0aW5nICIrdSsiIG9uIHRoZSBQcm9taXNlIG9iamVjdCwgaW5zdGVhZCBvZiB0aGUgaW5zdGFuY2UuIFVzZSAudGhlbigpIHRvIGdldCBjYWxsZWQgYmFjayB3aXRoIHRoZSBpbnN0YW5jZSwgc2VlIHRoZSBNT0RVTEFSSVpFIGRvY3MgaW4gc3JjL3NldHRpbmdzLmpzIiksc2V0OigpPT5CZSgiWW91IGFyZSBzZXR0aW5nICIrdSsiIG9uIHRoZSBQcm9taXNlIG9iamVjdCwgaW5zdGVhZCBvZiB0aGUgaW5zdGFuY2UuIFVzZSAudGhlbigpIHRvIGdldCBjYWxsZWQgYmFjayB3aXRoIHRoZSBpbnN0YW5jZSwgc2VlIHRoZSBNT0RVTEFSSVpFIGRvY3MgaW4gc3JjL3NldHRpbmdzLmpzIil9KX0pLGdsb2JhbFRoaXMuX19kaXJuYW1lPWdsb2JhbFRoaXMuX19kaXJuYW1lfHwiIjt2YXIgbz1PYmplY3QuYXNzaWduKHt9LGkpLHI9W10sYT0iLi90aGlzLnByb2dyYW0iLGg9KHUsVik9Pnt0aHJvdyBWfSxBPSEwLGQ9ITEsZj0hMSxFPSExO2lmKGkuRU5WSVJPTk1FTlQpdGhyb3cgbmV3IEVycm9yKCJNb2R1bGUuRU5WSVJPTk1FTlQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVG8gZm9yY2UgdGhlIGVudmlyb25tZW50LCB1c2UgdGhlIEVOVklST05NRU5UIGNvbXBpbGUtdGltZSBvcHRpb24gKGZvciBleGFtcGxlLCAtc0VOVklST05NRU5UPXdlYiBvciAtc0VOVklST05NRU5UPW5vZGUpIik7dmFyIF89IiI7ZnVuY3Rpb24gUih1KXtyZXR1cm4gaS5sb2NhdGVGaWxlP2kubG9jYXRlRmlsZSh1LF8pOl8rdX12YXIgSSxDLE4sVDtpZihFKXtpZih0eXBlb2YgcHJvY2Vzcz09Im9iamVjdCImJnR5cGVvZiBYbz09ImZ1bmN0aW9uInx8dHlwZW9mIHdpbmRvdz09Im9iamVjdCJ8fHR5cGVvZiBpbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigibm90IGNvbXBpbGVkIGZvciB0aGlzIGVudmlyb25tZW50IChkaWQgeW91IGJ1aWxkIHRvIEhUTUwgYW5kIHRyeSB0byBydW4gaXQgbm90IG9uIHRoZSB3ZWIsIG9yIHNldCBFTlZJUk9OTUVOVCB0byBzb21ldGhpbmcgLSBsaWtlIG5vZGUgLSBhbmQgcnVuIGl0IHNvbWVwbGFjZSBlbHNlIC0gbGlrZSBvbiB0aGUgd2ViPykiKTt0eXBlb2YgcmVhZDwidSImJihJPXJlYWQpLE49dT0+e2lmKHR5cGVvZiByZWFkYnVmZmVyPT0iZnVuY3Rpb24iKXJldHVybiBuZXcgVWludDhBcnJheShyZWFkYnVmZmVyKHUpKTtsZXQgVj1yZWFkKHUsImJpbmFyeSIpO3JldHVybiBjKHR5cGVvZiBWPT0ib2JqZWN0IiksVn0sQz0odSxWLFcpPT57c2V0VGltZW91dCgoKT0+VihOKHUpKSl9LHR5cGVvZiBjbGVhclRpbWVvdXQ+InUiJiYoZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQ9dT0+e30pLHR5cGVvZiBzZXRUaW1lb3V0PiJ1IiYmKGdsb2JhbFRoaXMuc2V0VGltZW91dD11PT50eXBlb2YgdT09ImZ1bmN0aW9uIj91KCk6QmUoKSksdHlwZW9mIHNjcmlwdEFyZ3M8InUiP3I9c2NyaXB0QXJnczp0eXBlb2YgYXJndW1lbnRzPCJ1IiYmKHI9YXJndW1lbnRzKSx0eXBlb2YgcXVpdD09ImZ1bmN0aW9uIiYmKGg9KHUsVik9Pnt0aHJvdyBzZXRUaW1lb3V0KCgpPT57aWYoIShWIGluc3RhbmNlb2YgY3MpKXtsZXQgVz1WO1YmJnR5cGVvZiBWPT0ib2JqZWN0IiYmVi5zdGFjayYmKFc9W1YsVi5zdGFja10pLEYoYGV4aXRpbmcgZHVlIHRvIGV4Y2VwdGlvbjogJHtXfWApfXF1aXQodSl9KSxWfSksdHlwZW9mIHByaW50PCJ1IiYmKHR5cGVvZiBjb25zb2xlPiJ1IiYmKGNvbnNvbGU9e30pLGNvbnNvbGUubG9nPXByaW50LGNvbnNvbGUud2Fybj1jb25zb2xlLmVycm9yPXR5cGVvZiBwcmludEVycjwidSI/cHJpbnRFcnI6cHJpbnQpfWVsc2UgaWYoQXx8ZCl7aWYoZD9fPXNlbGYubG9jYXRpb24uaHJlZjp0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoXz1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksdCYmKF89dCksXy5pbmRleE9mKCJibG9iOiIpIT09MD9fPV8uc3Vic3RyKDAsXy5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOl89IiIsISh0eXBlb2Ygd2luZG93PT0ib2JqZWN0Inx8dHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiIpKXRocm93IG5ldyBFcnJvcigibm90IGNvbXBpbGVkIGZvciB0aGlzIGVudmlyb25tZW50IChkaWQgeW91IGJ1aWxkIHRvIEhUTUwgYW5kIHRyeSB0byBydW4gaXQgbm90IG9uIHRoZSB3ZWIsIG9yIHNldCBFTlZJUk9OTUVOVCB0byBzb21ldGhpbmcgLSBsaWtlIG5vZGUgLSBhbmQgcnVuIGl0IHNvbWVwbGFjZSBlbHNlIC0gbGlrZSBvbiB0aGUgd2ViPykiKTtJPXU9Pnt2YXIgVj1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIFYub3BlbigiR0VUIix1LCExKSxWLnNlbmQobnVsbCksVi5yZXNwb25zZVRleHR9LGQmJihOPXU9Pnt2YXIgVj1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIFYub3BlbigiR0VUIix1LCExKSxWLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLFYuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShWLnJlc3BvbnNlKX0pLEM9KHUsVixXKT0+e3ZhciBQPW5ldyBYTUxIdHRwUmVxdWVzdDtQLm9wZW4oIkdFVCIsdSwhMCksUC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixQLm9ubG9hZD0oKT0+e2lmKFAuc3RhdHVzPT0yMDB8fFAuc3RhdHVzPT0wJiZQLnJlc3BvbnNlKXtWKFAucmVzcG9uc2UpO3JldHVybn1XKCl9LFAub25lcnJvcj1XLFAuc2VuZChudWxsKX0sVD11PT5kb2N1bWVudC50aXRsZT11fWVsc2UgdGhyb3cgbmV3IEVycm9yKCJlbnZpcm9ubWVudCBkZXRlY3Rpb24gZXJyb3IiKTt2YXIgYj1pLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLEY9aS5wcmludEVycnx8Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oaSxvKSxvPW51bGwsbFgoKSxpLmFyZ3VtZW50cyYmKHI9aS5hcmd1bWVudHMpLF9uKCJhcmd1bWVudHMiLCJhcmd1bWVudHNfIiksaS50aGlzUHJvZ3JhbSYmKGE9aS50aGlzUHJvZ3JhbSksX24oInRoaXNQcm9ncmFtIiwidGhpc1Byb2dyYW0iKSxpLnF1aXQmJihoPWkucXVpdCksX24oInF1aXQiLCJxdWl0XyIpLGModHlwZW9mIGkubWVtb3J5SW5pdGlhbGl6ZXJQcmVmaXhVUkw+InUiLCJNb2R1bGUubWVtb3J5SW5pdGlhbGl6ZXJQcmVmaXhVUkwgb3B0aW9uIHdhcyByZW1vdmVkLCB1c2UgTW9kdWxlLmxvY2F0ZUZpbGUgaW5zdGVhZCIpLGModHlwZW9mIGkucHRocmVhZE1haW5QcmVmaXhVUkw+InUiLCJNb2R1bGUucHRocmVhZE1haW5QcmVmaXhVUkwgb3B0aW9uIHdhcyByZW1vdmVkLCB1c2UgTW9kdWxlLmxvY2F0ZUZpbGUgaW5zdGVhZCIpLGModHlwZW9mIGkuY2RJbml0aWFsaXplclByZWZpeFVSTD4idSIsIk1vZHVsZS5jZEluaXRpYWxpemVyUHJlZml4VVJMIG9wdGlvbiB3YXMgcmVtb3ZlZCwgdXNlIE1vZHVsZS5sb2NhdGVGaWxlIGluc3RlYWQiKSxjKHR5cGVvZiBpLmZpbGVQYWNrYWdlUHJlZml4VVJMPiJ1IiwiTW9kdWxlLmZpbGVQYWNrYWdlUHJlZml4VVJMIG9wdGlvbiB3YXMgcmVtb3ZlZCwgdXNlIE1vZHVsZS5sb2NhdGVGaWxlIGluc3RlYWQiKSxjKHR5cGVvZiBpLnJlYWQ+InUiLCJNb2R1bGUucmVhZCBvcHRpb24gd2FzIHJlbW92ZWQgKG1vZGlmeSByZWFkXyBpbiBKUykiKSxjKHR5cGVvZiBpLnJlYWRBc3luYz4idSIsIk1vZHVsZS5yZWFkQXN5bmMgb3B0aW9uIHdhcyByZW1vdmVkIChtb2RpZnkgcmVhZEFzeW5jIGluIEpTKSIpLGModHlwZW9mIGkucmVhZEJpbmFyeT4idSIsIk1vZHVsZS5yZWFkQmluYXJ5IG9wdGlvbiB3YXMgcmVtb3ZlZCAobW9kaWZ5IHJlYWRCaW5hcnkgaW4gSlMpIiksYyh0eXBlb2YgaS5zZXRXaW5kb3dUaXRsZT4idSIsIk1vZHVsZS5zZXRXaW5kb3dUaXRsZSBvcHRpb24gd2FzIHJlbW92ZWQgKG1vZGlmeSBzZXRXaW5kb3dUaXRsZSBpbiBKUykiKSxjKHR5cGVvZiBpLlRPVEFMX01FTU9SWT4idSIsIk1vZHVsZS5UT1RBTF9NRU1PUlkgaGFzIGJlZW4gcmVuYW1lZCBNb2R1bGUuSU5JVElBTF9NRU1PUlkiKSxfbigiYXNtIiwid2FzbUV4cG9ydHMiKSxfbigicmVhZCIsInJlYWRfIiksX24oInJlYWRBc3luYyIsInJlYWRBc3luYyIpLF9uKCJyZWFkQmluYXJ5IiwicmVhZEJpbmFyeSIpLF9uKCJzZXRXaW5kb3dUaXRsZSIsInNldFdpbmRvd1RpdGxlIiksYyghZCwid29ya2VyIGVudmlyb25tZW50IGRldGVjdGVkIGJ1dCBub3QgZW5hYmxlZCBhdCBidWlsZCB0aW1lLiAgQWRkICd3b3JrZXInIHRvIGAtc0VOVklST05NRU5UYCB0byBlbmFibGUuIiksYyghZiwibm9kZSBlbnZpcm9ubWVudCBkZXRlY3RlZCBidXQgbm90IGVuYWJsZWQgYXQgYnVpbGQgdGltZS4gIEFkZCAnbm9kZScgdG8gYC1zRU5WSVJPTk1FTlRgIHRvIGVuYWJsZS4iKSxjKCFFLCJzaGVsbCBlbnZpcm9ubWVudCBkZXRlY3RlZCBidXQgbm90IGVuYWJsZWQgYXQgYnVpbGQgdGltZS4gIEFkZCAnc2hlbGwnIHRvIGAtc0VOVklST05NRU5UYCB0byBlbmFibGUuIik7dmFyIEI7aS53YXNtQmluYXJ5JiYoQj1pLndhc21CaW5hcnkpLF9uKCJ3YXNtQmluYXJ5Iiwid2FzbUJpbmFyeSIpO3ZhciBVPWkubm9FeGl0UnVudGltZXx8ITA7X24oIm5vRXhpdFJ1bnRpbWUiLCJub0V4aXRSdW50aW1lIiksdHlwZW9mIFdlYkFzc2VtYmx5IT0ib2JqZWN0IiYmQmUoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgUSxNLGs9ITEseTtmdW5jdGlvbiBjKHUsVil7dXx8QmUoIkFzc2VydGlvbiBmYWlsZWQiKyhWPyI6ICIrVjoiIikpfXZhciBnLE8sRCx3LHgsSCxqLFg7ZnVuY3Rpb24gdHQoKXt2YXIgdT1RLmJ1ZmZlcjtpLkhFQVA4PWc9bmV3IEludDhBcnJheSh1KSxpLkhFQVAxNj1EPW5ldyBJbnQxNkFycmF5KHUpLGkuSEVBUDMyPXg9bmV3IEludDMyQXJyYXkodSksaS5IRUFQVTg9Tz1uZXcgVWludDhBcnJheSh1KSxpLkhFQVBVMTY9dz1uZXcgVWludDE2QXJyYXkodSksaS5IRUFQVTMyPUg9bmV3IFVpbnQzMkFycmF5KHUpLGkuSEVBUEYzMj1qPW5ldyBGbG9hdDMyQXJyYXkodSksaS5IRUFQRjY0PVg9bmV3IEZsb2F0NjRBcnJheSh1KX1jKCFpLlNUQUNLX1NJWkUsIlNUQUNLX1NJWkUgY2FuIG5vIGxvbmdlciBiZSBzZXQgYXQgcnVudGltZS4gIFVzZSAtc1NUQUNLX1NJWkUgYXQgbGluayB0aW1lIiksYyh0eXBlb2YgSW50MzJBcnJheTwidSImJnR5cGVvZiBGbG9hdDY0QXJyYXk8InUiJiZJbnQzMkFycmF5LnByb3RvdHlwZS5zdWJhcnJheSE9bnVsbCYmSW50MzJBcnJheS5wcm90b3R5cGUuc2V0IT1udWxsLCJKUyBlbmdpbmUgZG9lcyBub3QgcHJvdmlkZSBmdWxsIHR5cGVkIGFycmF5IHN1cHBvcnQiKSxjKCFpLndhc21NZW1vcnksIlVzZSBvZiBgd2FzbU1lbW9yeWAgZGV0ZWN0ZWQuICBVc2UgLXNJTVBPUlRFRF9NRU1PUlkgdG8gZGVmaW5lIHdhc21NZW1vcnkgZXh0ZXJuYWxseSIpLGMoIWkuSU5JVElBTF9NRU1PUlksIkRldGVjdGVkIHJ1bnRpbWUgSU5JVElBTF9NRU1PUlkgc2V0dGluZy4gIFVzZSAtc0lNUE9SVEVEX01FTU9SWSB0byBkZWZpbmUgd2FzbU1lbW9yeSBkeW5hbWljYWxseSIpO3ZhciBHO2Z1bmN0aW9uIEl0KCl7dmFyIHU9JGcoKTtjKCh1JjMpPT0wKSx1PT0wJiYodSs9NCksSFt1Pj4yXT0zNDgyMTIyMyxIW3UrND4+Ml09MjMxMDcyMTAyMixIWzBdPTE2Njg1MDkwMjl9ZnVuY3Rpb24gZ3QoKXtpZighayl7dmFyIHU9JGcoKTt1PT0wJiYodSs9NCk7dmFyIFY9SFt1Pj4yXSxXPUhbdSs0Pj4yXTsoViE9MzQ4MjEyMjN8fFchPTIzMTA3MjEwMjIpJiZCZShgU3RhY2sgb3ZlcmZsb3chIFN0YWNrIGNvb2tpZSBoYXMgYmVlbiBvdmVyd3JpdHRlbiBhdCAke1BuKHUpfSwgZXhwZWN0ZWQgaGV4IGR3b3JkcyAweDg5QkFDREZFIGFuZCAweDIxMzU0NjcsIGJ1dCByZWNlaXZlZCAke1BuKFcpfSAke1BuKFYpfWApLEhbMF0hPTE2Njg1MDkwMjkmJkJlKCJSdW50aW1lIGVycm9yOiBUaGUgYXBwbGljYXRpb24gaGFzIGNvcnJ1cHRlZCBpdHMgaGVhcCBtZW1vcnkgYXJlYSAoYWRkcmVzcyB6ZXJvKSEiKX19KGZ1bmN0aW9uKCl7dmFyIHU9bmV3IEludDE2QXJyYXkoMSksVj1uZXcgSW50OEFycmF5KHUuYnVmZmVyKTtpZih1WzBdPTI1NDU5LFZbMF0hPT0xMTV8fFZbMV0hPT05OSl0aHJvdyJSdW50aW1lIGVycm9yOiBleHBlY3RlZCB0aGUgc3lzdGVtIHRvIGJlIGxpdHRsZS1lbmRpYW4hIChSdW4gd2l0aCAtc1NVUFBPUlRfQklHX0VORElBTiB0byBieXBhc3MpIn0pKCk7dmFyIFl0PVtdLFV0PVtdLEN0PVtdLHp0PSExLGt0PTA7ZnVuY3Rpb24gSnQoKXtpZihpLnByZVJ1bilmb3IodHlwZW9mIGkucHJlUnVuPT0iZnVuY3Rpb24iJiYoaS5wcmVSdW49W2kucHJlUnVuXSk7aS5wcmVSdW4ubGVuZ3RoOyllZShpLnByZVJ1bi5zaGlmdCgpKTt4bihZdCl9ZnVuY3Rpb24gV3QoKXtjKCF6dCksenQ9ITAsZ3QoKSwhaS5ub0ZTSW5pdCYmIUsuaW5pdC5pbml0aWFsaXplZCYmSy5pbml0KCksSy5pZ25vcmVQZXJtaXNzaW9ucz0hMSxwaS5pbml0KCkseG4oVXQpfWZ1bmN0aW9uIGJ0KCl7aWYoZ3QoKSxpLnBvc3RSdW4pZm9yKHR5cGVvZiBpLnBvc3RSdW49PSJmdW5jdGlvbiImJihpLnBvc3RSdW49W2kucG9zdFJ1bl0pO2kucG9zdFJ1bi5sZW5ndGg7KWplKGkucG9zdFJ1bi5zaGlmdCgpKTt4bihDdCl9ZnVuY3Rpb24gZWUodSl7WXQudW5zaGlmdCh1KX1mdW5jdGlvbiBjZSh1KXtVdC51bnNoaWZ0KHUpfWZ1bmN0aW9uIGplKHUpe0N0LnVuc2hpZnQodSl9YyhNYXRoLmltdWwsIlRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1hdGguaW11bCgpLCBidWlsZCB3aXRoIExFR0FDWV9WTV9TVVBQT1JUIG9yIFBPTFlGSUxMX09MRF9NQVRIX0ZVTkNUSU9OUyB0byBhZGQgaW4gYSBwb2x5ZmlsbCIpLGMoTWF0aC5mcm91bmQsIlRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1hdGguZnJvdW5kKCksIGJ1aWxkIHdpdGggTEVHQUNZX1ZNX1NVUFBPUlQgb3IgUE9MWUZJTExfT0xEX01BVEhfRlVOQ1RJT05TIHRvIGFkZCBpbiBhIHBvbHlmaWxsIiksYyhNYXRoLmNsejMyLCJUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNYXRoLmNsejMyKCksIGJ1aWxkIHdpdGggTEVHQUNZX1ZNX1NVUFBPUlQgb3IgUE9MWUZJTExfT0xEX01BVEhfRlVOQ1RJT05TIHRvIGFkZCBpbiBhIHBvbHlmaWxsIiksYyhNYXRoLnRydW5jLCJUaGlzIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBNYXRoLnRydW5jKCksIGJ1aWxkIHdpdGggTEVHQUNZX1ZNX1NVUFBPUlQgb3IgUE9MWUZJTExfT0xEX01BVEhfRlVOQ1RJT05TIHRvIGFkZCBpbiBhIHBvbHlmaWxsIik7dmFyIFNlPTAsVWU9bnVsbCxNZT1udWxsLENlPXt9O2Z1bmN0aW9uIEZlKHUpe2Zvcih2YXIgVj11Ozspe2lmKCFDZVt1XSlyZXR1cm4gdTt1PVYrTWF0aC5yYW5kb20oKX19ZnVuY3Rpb24gbmkodSl7U2UrKyxpLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJmkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhTZSksdT8oYyghQ2VbdV0pLENlW3VdPTEsVWU9PT1udWxsJiZ0eXBlb2Ygc2V0SW50ZXJ2YWw8InUiJiYoVWU9c2V0SW50ZXJ2YWwoKCk9PntpZihrKXtjbGVhckludGVydmFsKFVlKSxVZT1udWxsO3JldHVybn12YXIgVj0hMTtmb3IodmFyIFcgaW4gQ2UpVnx8KFY9ITAsRigic3RpbGwgd2FpdGluZyBvbiBydW4gZGVwZW5kZW5jaWVzOiIpKSxGKCJkZXBlbmRlbmN5OiAiK1cpO1YmJkYoIihlbmQgb2YgbGlzdCkiKX0sMWU0KSkpOkYoIndhcm5pbmc6IHJ1biBkZXBlbmRlbmN5IGFkZGVkIHdpdGhvdXQgSUQiKX1mdW5jdGlvbiB6ZSh1KXtpZihTZS0tLGkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmaS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKFNlKSx1PyhjKENlW3VdKSxkZWxldGUgQ2VbdV0pOkYoIndhcm5pbmc6IHJ1biBkZXBlbmRlbmN5IHJlbW92ZWQgd2l0aG91dCBJRCIpLFNlPT0wJiYoVWUhPT1udWxsJiYoY2xlYXJJbnRlcnZhbChVZSksVWU9bnVsbCksTWUpKXt2YXIgVj1NZTtNZT1udWxsLFYoKX19ZnVuY3Rpb24gQmUodSl7aS5vbkFib3J0JiZpLm9uQWJvcnQodSksdT0iQWJvcnRlZCgiK3UrIikiLEYodSksaz0hMCx5PTE7dmFyIFY9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcih1KTt0aHJvdyBzKFYpLFZ9dmFyIE1pPSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIjtmdW5jdGlvbiBSaSh1KXtyZXR1cm4gdS5zdGFydHNXaXRoKE1pKX1mdW5jdGlvbiBzaSh1KXtyZXR1cm4gdS5zdGFydHNXaXRoKCJmaWxlOi8vIil9ZnVuY3Rpb24gcWUodSl7cmV0dXJuIGZ1bmN0aW9uKCl7Yyh6dCxgbmF0aXZlIGZ1bmN0aW9uIFxgJHt1fVxgIGNhbGxlZCBiZWZvcmUgcnVudGltZSBpbml0aWFsaXphdGlvbmApO3ZhciBWPU1bdV07cmV0dXJuIGMoVixgZXhwb3J0ZWQgbmF0aXZlIGZ1bmN0aW9uIFxgJHt1fVxgIG5vdCBmb3VuZGApLFYuYXBwbHkobnVsbCxhcmd1bWVudHMpfX12YXIgT2k7T2k9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBR0Z6YlFFQUFBQUJ0Z1JIWUFGL0FYOWdBWDhBWUFKL2Z3QmdBbjkvQVg5Z0EzOS9md0YvWUFaL2YzOS9mMzhCZjJBRWYzOS9md0YvWUFWL2YzOS9md0YvWUFOL2YzOEFZQUFBWUFSL2YzOS9BR0FJZjM5L2YzOS9mMzhCZjJBR2YzOS9mMzkvQUdBRmYzOS9mMzhBWUFBQmYyQUhmMzkvZjM5L2Z3Ri9ZQWQvZjM5L2YzOS9BR0FGZjM1K2ZuNEFZQUY4QVh4Z0JIOThmMzhCZjJBRmYzOS9mMzRCZjJBQ2ZId0JmR0FEZjM1L0FYNWdDMzkvZjM5L2YzOS9mMzkvQVg5Z0NuOS9mMzkvZjM5L2YzOEFZQVIvZm41L0FHQUZmMzkvZjN3QmYyQUNmM3dCZjJBRWYzOThmd0YvWUFaL2YzOS9mbjRCZjJBSGYzOS9mMzkrZmdGL1lBTi9mMzhCZkdBQ2ZIOEJmR0FCZkFCZ0JYOS9mSDkvQUdBRGZIeC9BWHhnQm45OGYzOS9md0YvWUFWL2YzNS9md0JnQTM5L2Z3RitZQVIvZjM5L0FYNWdESDkvZjM5L2YzOS9mMzkvZndGL1lBOS9mMzkvZjM5L2YzOS9mMzkvZjM4QVlBaC9mMzkvZjM5L2Z3QmdEWDkvZjM5L2YzOS9mMzkvZjM4QVlBbC9mMzkvZjM5L2YzOEFZQUFCZkdBRWZuNStmZ0YvWUFOK2ZuNEJmMkFCZmdGL1lBSitmZ0Y4WUFKL2ZBQmdBbjUrQVgxZ0FuOS9BWHhnQTM5L2ZBQmdCSDk4ZjM4QVlBUi9mM3g4QUdBRGYzOThBWDlnQVg0QmZtQUZmMzkvZkg4QmYyQUdmMzkvZkg5L0FHQUNmSDhCZjJBQ2ZuOEJmMkFDZjM0QVlBSi9md0YrWUFOL2YzNEFZQUovZmdGL1lBUi9mMzkrQVg1Z0EzOS9md0Y5WUFsL2YzOS9mMzkvZjM4QmYyQUtmMzkvZjM5L2YzOS9md0YvWUFSL2YzNStBQUt4Q0NVRFpXNTJIR1Z0YzJOeWFYQjBaVzVmY25WdVgzTmpjbWx3ZEY5emRISnBibWNBQUFObGJuWUxYMTlqZUdGZmRHaHliM2NBQ0FObGJuWU5YMlZ0ZG1Gc1gyUmxZM0psWmdBQkEyVnVkaFpmWlcxaWFXNWtYM0psWjJsemRHVnlYMk5zWVhOekFDc0RaVzUySWw5bGJXSnBibVJmY21WbmFYTjBaWEpmWTJ4aGMzTmZZMjl1YzNSeWRXTjBiM0lBREFObGJuWWZYMlZ0WW1sdVpGOXlaV2RwYzNSbGNsOWpiR0Z6YzE5bWRXNWpkR2x2YmdBc0EyVnVkaDlmWlcxaWFXNWtYM0psWjJsemRHVnlYMk5zWVhOelgzQnliM0JsY25SNUFCZ0RaVzUyRTE5bGJYWmhiRjluWlhSZmNISnZjR1Z5ZEhrQUF3TmxibllTWDJWdGRtRnNYMjVsZDE5amMzUnlhVzVuQUFBRFpXNTJDVjlsYlhaaGJGOWhjd0FmQTJWdWRoWmZaVzEyWVd4ZmNuVnVYMlJsYzNSeWRXTjBiM0p6QUFFRFpXNTJHVjlsYldKcGJtUmZjbVZuYVhOMFpYSmZablZ1WTNScGIyNEFFQU5sYm5ZWVpXMXpZM0pwY0hSbGJsOWhjMjFmWTI5dWMzUmZhVzUwQUFRRFpXNTJGVjlsYldKcGJtUmZjbVZuYVhOMFpYSmZkbTlwWkFBQ0EyVnVkaFZmWlcxaWFXNWtYM0psWjJsemRHVnlYMkp2YjJ3QURRTmxiblliWDJWdFltbHVaRjl5WldkcGMzUmxjbDl6ZEdSZmMzUnlhVzVuQUFJRFpXNTJIRjlsYldKcGJtUmZjbVZuYVhOMFpYSmZjM1JrWDNkemRISnBibWNBQ0FObGJuWVdYMlZ0WW1sdVpGOXlaV2RwYzNSbGNsOWxiWFpoYkFBQ0EyVnVkaGhmWlcxaWFXNWtYM0psWjJsemRHVnlYMmx1ZEdWblpYSUFEUU5sYm5ZV1gyVnRZbWx1WkY5eVpXZHBjM1JsY2w5bWJHOWhkQUFJQTJWdWRoeGZaVzFpYVc1a1gzSmxaMmx6ZEdWeVgyMWxiVzl5ZVY5MmFXVjNBQWdEWlc1MkUyVnRjMk55YVhCMFpXNWZaR0YwWlY5dWIzY0FMUU5sYm5ZZ1gyVnRjMk55YVhCMFpXNWZaMlYwWDI1dmQxOXBjMTl0YjI1dmRHOXVhV01BRGhaM1lYTnBYM051WVhCemFHOTBYM0J5WlhacFpYY3hCMlprWDNKbFlXUUFCaFozWVhOcFgzTnVZWEJ6YUc5MFgzQnlaWFpwWlhjeENHWmtYM2R5YVhSbEFBWVdkMkZ6YVY5emJtRndjMmh2ZEY5d2NtVjJhV1YzTVFobVpGOWpiRzl6WlFBQUEyVnVkaFZsYlhOamNtbHdkR1Z1WDIxbGJXTndlVjlpYVdjQUNBTmxibllKWDNSNmMyVjBYMnB6QUFnRFpXNTJGbVZ0YzJOeWFYQjBaVzVmY21WemFYcGxYMmhsWVhBQUFBTmxibllGWVdKdmNuUUFDUlozWVhOcFgzTnVZWEJ6YUc5MFgzQnlaWFpwWlhjeEVXVnVkbWx5YjI1ZmMybDZaWE5mWjJWMEFBTVdkMkZ6YVY5emJtRndjMmh2ZEY5d2NtVjJhV1YzTVF0bGJuWnBjbTl1WDJkbGRBQURBMlZ1ZGdwemRISm1kR2x0WlY5c0FBY0RaVzUyRjE5bGJXSnBibVJmY21WbmFYTjBaWEpmWW1sbmFXNTBBQkFXZDJGemFWOXpibUZ3YzJodmRGOXdjbVYyYVdWM01RZG1aRjl6WldWckFBY0RaVzUyQ2w5dGEzUnBiV1ZmYW5NQUFBTmxibllLWDJkdGRHbHRaVjlxY3dBSUE4NEV6QVFKRGdBQkJBQUVCQVlKQUNBUkFBQUJBd0l1THhrUkdSRVJBQUVKRGc0T0RnRUFFUkVWTUFRVk1RSXlBak1CQWdBSkFRa0JBQUFDQ1FBQUFRQU9Bd1EwTlFNSUFRUVNFaFUyQWhNQ0lRTUJBVGNEQlFJQkNRRURBQU1JQ0FBQkNRRU9Bd2diT0FBQ0F3Z1RPUUlFQkFFSkRnTURBQUlCQVFJQ0NRQUFBZ0VDR3h3NkhBQUJBQWs3SWdrU0VoSWhDUUFKRWdBRUJCWUFDUVFBRmdNalBDQUhEd2dBQ2owTkF3UWtBZ2dBQUQ0QUJoRVpDajlBQmdRRUF3bEJBQUFCQUFFQ0JDVUtCQVFBQUFNRUJBb0tBd0FCQUFFQUFRSUNBQU1BQUFBQUFRQUJBQUFEQUFFRUJBQUVBQUVCQUFNQUFBQUNBZ1FDQWdnRUFBTUJDQUlJQWdJQUFnQUVBd0lBQXdBREFnUURBZ0FEQUFNREFBTUJCa0lLQndvRUJ3b0VBZ0FFQlFBUEFBQUJCUUFJRndZS0JBNG1BZ1VuQlFZbUJRWUZKd1VOS0VNRkh3VUtCUVFEQlFBUEFBVURDQmNFQlFVRkJRVU5LQVVGQlFjQUFBY0tCd1FRQWhRSEZCb0VCaEFkQndjQUJ4QUZCQlFIRkJvUUhRY0xBQVVGQlF3RkRBVU5Cd3NMQlFVRkRBVU1CUTBIQ3c4TUR3QUNBZ0lBQWdJUEZ3SUlDQUFBQXdNUERROFhBZ0lBQWdBRER3MGVHQ2tFQlI0WUtRUUZCQXdNQWdFSUFnNElDQUVCQUFFQUFBQUFBZ0VBQVFBQkFBRUFBUUlCQVFBQUFBQUJBQUVBQVFBQkFRSUJBUUVBQUFBQ0FnSUJBQUFBQWdJQ0N3c0hCd0FMQ3djQkFBc0VDd2NIQUFBSEFBc0hCQVlHQmdNRUF3UUdCQWNCQUFNRUF3UUdCQWNCQUFFcUtnTURBd01EQVFrQkNRUUVCQU1NQ2cwS0NBb05DZ1FERFJBTURRd01BQUFBQUFFQUl4VUhFQTlFUlVZRUJ3RndBYzREemdNRkJ3RUJnQXlBZ0FJR0Z3Ui9BVUdBdVJnTGZ3RkJBQXQvQVVFQUMzOEJRUUFMQjUwRUd3WnRaVzF2Y25rQ0FCRmZYM2RoYzIxZlkyRnNiRjlqZEc5eWN3QWxCbTFoYkd4dll3QXpCR1p5WldVQU5CQnBibVpzWVhSbFJXeHNhWEJ6YjJsa0FMSUJGR2RsZEVOdmRtVnlZV2RsVUc5emFYUnBiMjV6QUswQkJtWm1iSFZ6YUFDM0FRMWZYMmRsZEZSNWNHVk9ZVzFsQUxRQkcxOWxiV0pwYm1SZmFXNXBkR2xoYkdsNlpWOWlhVzVrYVc1bmN3QzFBUkJmWDJWeWNtNXZYMnh2WTJGMGFXOXVBQ1laWDE5cGJtUnBjbVZqZEY5bWRXNWpkR2x2Ymw5MFlXSnNaUUVBQzNObGRGUmxiWEJTWlhRd0FEOFZaVzF6WTNKcGNIUmxibDl6ZEdGamExOXBibWwwQUVBWlpXMXpZM0pwY0hSbGJsOXpkR0ZqYTE5blpYUmZabkpsWlFCQkdXVnRjMk55YVhCMFpXNWZjM1JoWTJ0ZloyVjBYMkpoYzJVQVFoaGxiWE5qY21sd2RHVnVYM04wWVdOclgyZGxkRjlsYm1RQVF3bHpkR0ZqYTFOaGRtVUFSQXh6ZEdGamExSmxjM1J2Y21VQVJRcHpkR0ZqYTBGc2JHOWpBRVljWlcxelkzSnBjSFJsYmw5emRHRmphMTluWlhSZlkzVnljbVZ1ZEFCRUlsOWZZM2hoWDJsdVkzSmxiV1Z1ZEY5bGVHTmxjSFJwYjI1ZmNtVm1ZMjkxYm5RQXpRUVZYMTlqZUdGZmFYTmZjRzlwYm5SbGNsOTBlWEJsQU9NRURHUjVia05oYkd4ZmFtbHFhUURyQkE1a2VXNURZV3hzWDNacGFXcHBhUURzQkE1a2VXNURZV3hzWDJscGFXbHBhZ0R0QkE5a2VXNURZV3hzWDJscGFXbHBhbW9BN2dRUVpIbHVRMkZzYkY5cGFXbHBhV2xxYWdEdkJBbnJCZ0VBUVFFTHpRTlNXbHhkWGw1ZllHRmlZMlJsWm1kNlhYdDhmWDUvZ3dGZGhBRmdoUUdHQVljQmlBR0pBWW9CaXdHTUFZMEJWcE1CbEFGZGUyQ1ZBWllCWFY1ZWU1Y0JtQUdXQVprQm1nR2VBVjFlWG50OG53R2dBWXdCb1FHTkFhSUJvd0drQVlrQnBRR21BYVVCcHdHb0FZd0Jxd0dzQWEwQlhyTUIzQUhOQWM0QjJ3R2VBalRMQWlqNkEva0Q5d1B2QS9FRDh3UDFBNGtFaUFTR0JQOERnUVNEQklVRWI0NEJYcHNCblFHYkFad0JxZ0dwQVlFQmdnRzdBYmtCdWdHK0FiOEJ1QUhqQWVRQjVRSG1BZWNCNkFHK0FiNEI2UUhyQWV3QjdRSHVBZTBCaHdLSUF1VUI1Z0huQWVnQnZnRytBWWtDNndHTEF1MEJqQUx0QWVRQnNRS3lBclFDdFFMMUFmWUI5d0g0QWVBQjRnSGhBZUlCNUFHdUFxWUNyd0t3QW9BQ2dRS0NBb01DaUFLcEFxb0NyQUt0QXZVQjlnSDNBZmdCNEFIaUFZZ0NwUUttQXFjQ3FBS0FBb0VDZ2dLREFzSUV3UVRtQTdrRXVBUzZCTHNFdkFTOUJQSUJ2Z1MvQk1BRW9RU2dCS0lFcEFTbUJLY0V2Z0dwQktvRWtnU1JCSk1FbEFTVkJKWUVsd1NMQklvRWpBU05CSTRFandTUUJGNmJBWnNCclFTdUJLOEVzQVN4QkxJRXN3UzBCUElCdFFTMkJMY0Vtd0dyQktzRW1nUW5KNndFSjVzQm5RU2VCSm9FdmdHK0FaOEVuQVNiQVowRW5nU2FCTDRCdmdHZkJKd0Vtd0dZQkprRW1nUytBYjRCbXdTY0JKc0JtQVNaQkpvRXZnRytBWnNFbkFSZW13RzlBcjRDdndKZW13SEFBc0VDeFFLYkFjWUN6QUxXQXRnQzJ3TGJBdDBDM3dMakF1VUM1d0tiQWVvQzdnTHpBdlFDOVFMMUF2WUM5d0w2QXZzQy9BS2JBZjBDZ0FPR0E0Y0RpQU9KQTQwRGpnT2JBWThEa1FPVkE1WURsd09ZQTVvRG13TmVtd0dkQTU0RG53T2dBNklEcEFPbkEvc0QvQVA5QS80RGdBU0NCSVFFWHBzQm5RT3BBNm9EcXdPdEE2OERzZ1BxQStzRDdBUHRBL0FEOGdQMEErZ0Q2UU96QStnRDZRTzFBNXNCdGdPMkE3Y0R0d08zQTdnRHZnRzVBN2tEbXdHMkE3WUR0d08zQTdjRHVBTytBYmtEdVFPYkFib0R1Z08zQTdjRHR3TzdBNzRCdVFPNUE1c0J1Z082QTdjRHR3TzNBN3NEdmdHNUE3a0Rtd0c5QThZRG13SElBOUFEbXdIU0E5WURtd0hYQTlzRG13SGNBOTBENVFHYkFkd0QzZ1BsQVY3REJNNEV6QVJlbXdFb0tNOEVtd0hSQk9FRTNRVGFCSnNCMndTYkFlVUVtd0htQk9jRTZBVG5CSnNCNGdUZ0JOZ0Vtd0hUQk5VRTFnU2JBZVFFQ3BTckNzd0V3U0VERVg4RGZnSjhRWUM1R0NRRFFZQzVGQ1FDUWJ5b0ZDMEFBRVVFUUNNQVFSQnJJZ0lrQUVIY3BSUVE4d0VhUVl5bUZFRi9OZ0lBUVlTbUZFR1VwaFEyQWdCQi9LVVVRZmlFRkRZQ0FFSGNwUlJCeEo4VE5nSUFRWkNtRkVFQU9nQUFJQUpCREdvaUFFSGdwUlFvQWdBaUFUWUNBQ0FCSUFFb0FnUkJBV28yQWdSQjNLVVVJQUJCM0tVVUtBSUFLQUlJRVFJQUlBQW9BZ0FpQUNBQUtBSUVRUUZySWdFMkFnUWdBVUYvUmdSQUlBQWdBQ2dDQUNnQ0NCRUJBQXNnQWtFUWFpUUFRYnlnRkVHTW9STTJBZ0JCdktBVVFmQ2dFellDQUVHOG9CUkJ5S0FUTmdJQVFiU2dGRUcwb0JNMkFnQkJ1S0FVUVFBMkFnQkJ2S0FVUWR5bEZCQ2pBa0djcGhSQjRJTVVRY3ltRkJDZkFrSGtvUlJCbktZVUVLQUNRZFNtRkVISWdoUkJoS2NVRUo4Q1FZeWpGRUhVcGhRUW9BSkJ0S1FVUVl5akZDZ0NBRUVNYXlnQ0FFR2tveFJxS0FJQUVLQUNRYlNnRkNnQ0FFRU1heWdDQUVHMG9CUnFRZVNoRkRZQ1NFR01veFFvQWdCQkRHc29BZ0JCaktNVWFpSUJJQUVvQWdSQmdNQUFjallDQkVHTW94UW9BZ0JCREdzb0FnQkJqS01VYWtIa29SUTJBa2dqQUVFUWF5SUNKQUJCaktjVUVJMENHa0c4cHhSQmZ6WUNBRUcwcHhSQnhLY1VOZ0lBUWF5bkZFSDRoQlEyQWdCQmpLY1VRY3lpRXpZQ0FFSEFweFJCQURvQUFDQUNRUXhxSWdCQmtLY1VLQUlBSWdFMkFnQWdBU0FCS0FJRVFRRnFOZ0lFUVl5bkZDQUFRWXluRkNnQ0FDZ0NDQkVDQUNBQUtBSUFJZ0FnQUNnQ0JFRUJheUlCTmdJRUlBRkJmMFlFUUNBQUlBQW9BZ0FvQWdnUkFRQUxJQUpCRUdva0FFR1VvUlJCaktFVE5nSUFRWlNoRkVING94TTJBZ0JCbEtFVVFkQ2pFellDQUVHTW9SUkJ2S01UTmdJQVFaQ2hGRUVBTmdJQVFaU2hGRUdNcHhRUW93SkJ6S2NVUWVDREZFSDhweFFRb1FKQnVLSVVRY3luRkJDaUFrR0VxQlJCeUlJVVFiU29GQkNoQWtIZ294UkJoS2dVRUtJQ1FZaWxGRUhnb3hRb0FnQkJER3NvQWdCQitLTVVhaWdDQUJDaUFrR01vUlFvQWdCQkRHc29BZ0JCaktFVWFrRzRvaFEyQWtoQjRLTVVLQUlBUVF4cktBSUFRZUNqRkdvaUFTQUJLQUlFUVlEQUFISTJBZ1JCNEtNVUtBSUFRUXhyS0FJQVFlQ2pGR3BCdUtJVU5nSklRYnlvRkVFQk9nQUFDeU1BUVJCcklnSWtBQUpBSUFKQkRHb2dBa0VJYWhBZURRQkJ3S2dVSUFJb0FneEJBblJCQkdvUU15SUJOZ0lBSUFGRkRRQWdBaWdDQ0JBeklnQUVRRUhBcUJRb0FnQWlBU0FDS0FJTVFRSjBha0VBTmdJQUlBRWdBQkFmUlEwQkMwSEFxQlJCQURZQ0FBc2dBa0VRYWlRQVFiU0tGRUlBTndJQVFieUtGRUVBTmdJQUVCVWFRY1NLRkVFRE5nSUFRY2lLRkVFQU5nSUFFRnhCeUlvVVFiQ09GQ2dDQURZQ0FFR3dqaFJCeElvVU5nSUFRY3lLRkVFUU5nSUFRZENLRkVFQU5nSUFRZmp5RWtITTd4SkI5TzhTUVFCQjZQTVNRUkZCb1BFU1FRQkJvUEVTUVFCQit6MUI2L01TUVJJUUEwSDQ4aEpCQWtHRThCSkIrUE1TUVJOQkZCQUVRUVFRVkNJQVFRUTJBZ0JCQkJCVUlnRkJCRFlDQUVINDhoSkJoc0VBUWZEMUVrSDQ4eEpCRlNBQVFmRDFFa0dROUJKQkZpQUJFQVpCMElvVVFiQ09GQ2dDQURZQ0FFR3dqaFJCeklvVU5nSUFRZFNLRkVFWE5nSUFRZGlLRkVFQU5nSUFFSU1CUWRpS0ZFR3dqaFFvQWdBMkFnQkJzSTRVUWRTS0ZEWUNBQ01BUWRBQWF5SURKQUJDd09Lb3NBWVFqd0ZDZ0lEZjdhZmlBWHdoRWlNQVFSQnJJZ0VrQUNBQklCSkN3SVE5ZnpjRENDQUJLUU1JSVJJZ0FVRVFhaVFBSUFNZ0VqY0RTQkM4QVNBREtRTklJaEduSUJGQ0lJaW5RY0NPRkJBa1FlaU9GRUd5d2dBMkFnQkI0STRVUWdBM0FnQkJ3STRVUWdBM0FnQkJ5STRVUVFBMkFnQVF2QUZCd0k0VUVDT3RJd0d0UWlDR2hFTG9CMzRoRVNNQVFUQnJJZ2NrQUFKQUlBZEJFR29pQ0NJQklBZEJKR29pQlVZTkFDQVJRZ0JaRFFBZ0FVRXRPZ0FBSUFGQkFXb2hBVUlBSUJGOUlSRUxJQWNDZnlBRklBRnJJZ0pCRTB3RVFFRTlJQUpCd0FBZ0VVSUJoSG1uYTBIUkNXeEJESFlpQUNBQVFRTjBRYUQ0RTJvcEF3QWdFVmhxU0EwQkdnc0NmeUFSUXYvLy8vOFBXQVJBSUFFZ0VhY1F4Z1FNQVFzZ0VVS0F5SytnSlZvRWZ5QVJRb0RJcjZBbGdDSVRRb0M0ME45YWZpQVJmQ0VSSUFFZ0U2Y1F4Z1FGSUFFTElCRkNnTUxYTDRBaUU2Y1F4d1FnRTBLQXZxalFEMzRnRVh5bkVNb0VDeUVGUVFBTE5nSU1JQWNnQlRZQ0NDQURRVEJxSWdFZ0NDQUhLQUlJRUpjQ0dpQUhRVEJxSkFBZ0EwRThhaUFCRUZzZ0F5d0FPMEVBU0FSQUlBTW9BakFRTkFzQ1FBSkFBa0JCd0lvVUxRQUFSUVJBUWVDZ0VoQlVRWjNKQUVIWG9CSVFLeUlRUVFBNkFOZWdFaUFEUVFBMkFqZ2dBMElBTndNd0EwQWdCRUVCY1VVRVFDQURRVEJxSUFRZ0VHb3NBQUFRa0FFTElBUkJBV29pQkVIWG9CSkhEUUFMUVFBaEJFR3dpaFF0QUFCRkJFQkJwSW9VUWRBQUVGUWlBVFlDQUVHb2loUkN3SUNBZ0lDS2dJQ0FmemNDQUNBQlFacnRFaWtBQURjQU9DQUJRWkx0RWlrQUFEY0FNQ0FCUVlydEVpa0FBRGNBS0NBQlFZTHRFaWtBQURjQUlDQUJRZnJzRWlrQUFEY0FHQ0FCUWZMc0Vpa0FBRGNBRUNBQlFlcnNFaWtBQURjQUNDQUJRZUxzRWlrQUFEY0FBQ0FCUVFBNkFFQkJzSW9VUVFFNkFBQUxRWUFJRUZSQi93RkJnQWdRS1NFS1FhU0tGRUdraWhRb0FnQkJyNG9VTEFBQVFRQk9HeUVBQTBBZ0NpQUFJQVJxTEFBQVFRSjBhaUFFTmdJQUlBb2dBQ0FFUVFGeUlnRnFMQUFBUVFKMGFpQUJOZ0lBSUFvZ0FDQUVRUUp5SWdGcUxBQUFRUUowYWlBQk5nSUFJQW9nQUNBRVFRTnlJZ0ZxTEFBQVFRSjBhaUFCTmdJQUlBUkJCR29pQkVIQUFFY05BQXNDUUNBREtBSTBJQU10QURzaUFTQUJ3RUVBU0NJQUd5SUJSUVJBUVFBaEJFRUFJUUVNQVFzZ0F5Z0NNQ0FEUVRCcUlBQWJJZzRnQVdvaEIwRjRJUXRCQUNFRVFRQWhBUU5BSUFvZ0RpMEFBRUVDZEdvb0FnQWlBRUYvUmcwQklBQWdDVUVHZEdvaENRSi9JQXRCQm1vaUFDQUxRWHBJRFFBYUlBa2dBSFVoQ0NBRUlBWkpCRUFnQkNBSU9nQUFJQVJCQVdvaEJDQUxRUUpyREFFTElBUWdBV3NpREVFQmFpSUZRUUJJRFFSQi8vLy8vd2NnQmlBQmF5SUNRUUYwSWdBZ0JTQUFJQVZMR3lBQ1FmLy8vLzhEVHhzaURRUi9JQTBRVkFWQkFBc2lEeUFNYWlJQ0lBZzZBQUFDZnlBQ0lBRWdCRVlOQUJvZ0FVRi9jeUFFYWlFSVFRQWhCaUFDSVFVZ0RFRURjU0lBQkVBRFFDQUZRUUZySWdVZ0JFRUJheUlFTFFBQU9nQUFJQVpCQVdvaUJpQUFSdzBBQ3dzZ0R5QUlRUU5KRFFBYUEwQWdCVUVCYXlBRVFRRnJMUUFBT2dBQUlBVkJBbXNnQkVFQ2F5MEFBRG9BQUNBRlFRTnJJQVJCQTJzdEFBQTZBQUFnQlVFRWF5SUZJQVJCQkdzaUJDMEFBRG9BQUNBQklBUkhEUUFMSUE4TElRQWdBUVJBSUFFUU5Bc2dEU0FQYWlFR0lBSkJBV29oQkNBQUlRRWdDMEVDYXdzaEN5QU9RUUZxSWc0Z0IwY05BQXNMSUFvUU5DQURMQUE3UVFCSUJFQWdBeWdDTUJBMEN5QVFFRFFnQkNBQmF5SUNRZkQvLy84SFR3MENBa0FnQWtFS1RRUkFJQU1nQWpvQU95QURRVEJxSVFVTUFRc2dBa0VQY2tFQmFpSUFFRlFoQlNBRElBQkJnSUNBZ0hoeU5nSTRJQU1nQlRZQ01DQURJQUkyQWpRTEFrQWdBU0FFUmcwQUlBRkJmM01nQkdvaENBSkFJQUpCQjNFaUFrVUVRQ0FCSVFBTUFRdEJBQ0VHSUFFaEFBTkFJQVVnQUMwQUFEb0FBQ0FGUVFGcUlRVWdBRUVCYWlFQUlBWkJBV29pQmlBQ1J3MEFDd3NnQ0VFSFNRMEFBMEFnQlNBQUxRQUFPZ0FBSUFVZ0FDMEFBVG9BQVNBRklBQXRBQUk2QUFJZ0JTQUFMUUFET2dBRElBVWdBQzBBQkRvQUJDQUZJQUF0QUFVNkFBVWdCU0FBTFFBR09nQUdJQVVnQUMwQUJ6b0FCeUFGUVFocUlRVWdBRUVJYWlJQUlBUkhEUUFMQzBFQUlRUWdCVUVBT2dBQVFlQUFFRlJCOWVrU1FkZ0FFQ3NpREVFQU9nQllJQU5CQURZQ0tDQURRZ0EzQXlBZ0F5Z0NOQ0FETEFBN0lnMUIvd0Z4SUExQkFFZ2lBQnNpQWdSL0lBTW9BakFnQTBFd2FpQUFHeUVBQTBBZ0EwRWdhaUFNSUFSQjJBQndhaTBBQUNBQUlBUnFMUUFBYzhBUWtBRWdCRUVCYWlJRUlBSkhEUUFMSUFNb0FpQWdBMEVnYWlBRExRQXJ3RUVBU0JzRklBTkJJR29MRUFBaEFpQURMQUFyUVFCSUJFQWdBeWdDSUJBMEN5QUNFQzhpQlVIdy8vLy9CMDhOQWdKQUlBVkJDazBFUUNBRElBVTZBQ3NnQTBFZ2FpRUdEQUVMSUFWQkQzSkJBV29pQUJCVUlRWWdBeUFBUVlDQWdJQjRjallDS0NBRElBWTJBaUFnQXlBRk5nSWtDeUFHSUFJZ0JSQkxJQVZxUVFBNkFBQWpBRUVRYXlJSUpBQWdDRUVRTmdJTUlBTkJJR29pQWlnQ0JDQUNMUUFMSWdCQi93QnhJQUJCZ0FGeFFRZDJHeUlBUVFCSkJFQVEzZ0VBQ3lBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklRVWdDQ0FBTmdJSUlBTkJDR29pQmlFQUlBaEJDR29nQ0VFTWFpQUlLQUlJSUFnb0FneEpHeWdDQUNFSEl3QkJFR3NpQkNRQUFrQWdCMEh3Ly8vL0Iwa0VRQUpBSUFkQkMwa0VRQ0FBSUFjNkFBc01BUXNnQkVFSWFpQUhRUXRQQkg4Z0IwRVFha0Z3Y1NJQ0lBSkJBV3NpQWlBQ1FRdEdHd1ZCQ2d0QkFXb1FtQUlnQUNBRUtBSUlJZ0kyQWdBZ0FDQUVLQUlNUVlDQWdJQjRjallDQ0NBQUlBYzJBZ1FnQWlFQUN5QUFJQVVnQnhEcUFTQUhha0VBT2dBQUlBUkJFR29rQUF3QkN4QlZBQXNnQ0VFUWFpUUFJQU5CRkdvZ0JoQmJJQVlzQUF0QkFFZ0VRQ0FHS0FJQUVEUUxRWkFDRUZSQjRlb1NRWUFDRUNzaUFrRUFPZ0NBQWtIQWloUWdBeWdDR0NBRExRQWZJZ0FnQU1CQkFFZ2lCaHNpQ1FSL0lBSkJnQUpxSWdBaEJBSkFJQWxCZ0FKS0RRQWdBeWdDRkNBRFFSUnFJQVliSWdjc0FBQWhDRUdBQWlFRUlBSWhCZ05BQWtBZ0JDQUphMEVCYWlJRlJRMEFJQVlnQ0NBRkVKRUJJZ1JGRFFBZ0JDQUhJQWtRa2dGRkRRSWdBQ0FFUVFGcUlnWnJJZ1FnQ1U0TkFRc0xJQUFoQkFzZ0FDQUVSeUFFSUFKclFYOUhjUVZCQVFzNkFBQWdBaEEwSUFNc0FCOUJBRWdFUUNBREtBSVVFRFFMSUFNc0FDdEJBRWdFUUNBREtBSWdFRFFMSUF3UU5DQU5RUUJJQkVBZ0F5Z0NNQkEwQ3lBQkJFQWdBUkEwQ3lBREtRTklJUklMSXdCQk1Hc2lBaVFBUWJ5T0ZDMEFBRVVFUUVHOWpoUVFGam9BQUVHOGpoUkJBVG9BQUFzZ0FnSitFQlVpRlVRQUFBQUFBRUNQUUtNaUZKbEVBQUFBQUFBQTRFTmpCRUFnRkxBTUFRdENnSUNBZ0lDQWdJQ0Fmd3NpRVRjREdDQUNBbjhnRlNBUlF1Z0hmcm1oUkFBQUFBQUFRSTlBb2tRQUFBQUFBRUNQUUtJaUZKbEVBQUFBQUFBQTRFRmpCRUFnRktvTUFRdEJnSUNBZ0hnTE5nSWdJQUlnQWlrREdEY0RFQ0FDSUFJb0FpQkI2QWR0ckRjRENDQUNLUU1RSVJFakFFRVFheUlBSkFBZ0FDQVJFTjhCSVFFZ0FDQUNLUU1JSUFFcEF3QjhOd01JSUFBcEF3Z2hFU0FBUVJCcUpBQWdBaUFSTndNb0lBSXBBeWdoRVNBQ1FUQnFKQUJCd0lvVUxRQUFJUUVnQXl3QVIwRUFTQVJBSUFNb0Fqd1FOQXRCNklzVVFlU0xGRFlDQUVIa2l4UkI1SXNVTmdJQVFkaUxGQ0FCUlNBU0VJOEJJQkZUY2pvQUFFSHNpeFJCQURZQ0FDQURRZEFBYWlRQURBSUxFRmNBQ3hCVkFBdEIzSXNVUVNZMkFnQkI0SXNVUVFBMkFnQVFsQUZCNElzVVFiQ09GQ2dDQURZQ0FFR3dqaFJCM0lzVU5nSUFRZmlNRkVFMU5nSUFRZnlNRkVFQU5nSUFFSjRCUWZ5TUZFR3dqaFFvQWdBMkFnQkJzSTRVUWZpTUZEWUNBRUdnalJSQnlnQTJBZ0JCZ0kwVVFjQ0NGQ3NEQUVRZkRIdWxpT1R2UDZJNUF3QkJwSTBVUVFBMkFnQkJnanhCQmtHUTlSSkJxUFVTUWNzQVFjd0FRUUFRQzBHa2pSUkJzSTRVS0FJQU5nSUFRYkNPRkVHZ2pSUTJBZ0JCdEk0VVFjNEFOZ0lBUWJpT0ZFRUFOZ0lBRUxNQlFiaU9GRUd3amhRb0FnQTJBZ0JCc0k0VVFiU09GRFlDQUVIRW54UkJLallDQUVHTW9CUkJuS2tVTmdJQUN3WUFRYkNHRkFzRUFFRUJDd01BQVF2eUFnSUNmd0YrQWtBZ0FrVU5BQ0FBSUFFNkFBQWdBQ0FDYWlJRFFRRnJJQUU2QUFBZ0FrRURTUTBBSUFBZ0FUb0FBaUFBSUFFNkFBRWdBMEVEYXlBQk9nQUFJQU5CQW1zZ0FUb0FBQ0FDUVFkSkRRQWdBQ0FCT2dBRElBTkJCR3NnQVRvQUFDQUNRUWxKRFFBZ0FFRUFJQUJyUVFOeElnUnFJZ01nQVVIL0FYRkJnWUtFQ0d3aUFUWUNBQ0FESUFJZ0JHdEJmSEVpQkdvaUFrRUVheUFCTmdJQUlBUkJDVWtOQUNBRElBRTJBZ2dnQXlBQk5nSUVJQUpCQ0dzZ0FUWUNBQ0FDUVF4cklBRTJBZ0FnQkVFWlNRMEFJQU1nQVRZQ0dDQURJQUUyQWhRZ0F5QUJOZ0lRSUFNZ0FUWUNEQ0FDUVJCcklBRTJBZ0FnQWtFVWF5QUJOZ0lBSUFKQkdHc2dBVFlDQUNBQ1FSeHJJQUUyQWdBZ0JDQURRUVJ4UVJoeUlnUnJJZ0pCSUVrTkFDQUJyVUtCZ0lDQUVINGhCU0FESUFScUlRRURRQ0FCSUFVM0F4Z2dBU0FGTndNUUlBRWdCVGNEQ0NBQklBVTNBd0FnQVVFZ2FpRUJJQUpCSUdzaUFrRWZTdzBBQ3dzZ0FBdFpBUUYvSUFBZ0FDZ0NTQ0lCUVFGcklBRnlOZ0pJSUFBb0FnQWlBVUVJY1FSQUlBQWdBVUVnY2pZQ0FFRi9Ed3NnQUVJQU53SUVJQUFnQUNnQ0xDSUJOZ0ljSUFBZ0FUWUNGQ0FBSUFFZ0FDZ0NNR28yQWhCQkFBdUFCQUVEZnlBQ1FZQUVUd1JBSUFBZ0FTQUNFQm9nQUE4TElBQWdBbW9oQXdKQUlBQWdBWE5CQTNGRkJFQUNRQ0FBUVFOeFJRUkFJQUFoQWd3QkN5QUNSUVJBSUFBaEFnd0JDeUFBSVFJRFFDQUNJQUV0QUFBNkFBQWdBVUVCYWlFQklBSkJBV29pQWtFRGNVVU5BU0FDSUFOSkRRQUxDd0pBSUFOQmZIRWlCRUhBQUVrTkFDQUNJQVJCUUdvaUJVc05BQU5BSUFJZ0FTZ0NBRFlDQUNBQ0lBRW9BZ1EyQWdRZ0FpQUJLQUlJTmdJSUlBSWdBU2dDRERZQ0RDQUNJQUVvQWhBMkFoQWdBaUFCS0FJVU5nSVVJQUlnQVNnQ0dEWUNHQ0FDSUFFb0FodzJBaHdnQWlBQktBSWdOZ0lnSUFJZ0FTZ0NKRFlDSkNBQ0lBRW9BaWcyQWlnZ0FpQUJLQUlzTmdJc0lBSWdBU2dDTURZQ01DQUNJQUVvQWpRMkFqUWdBaUFCS0FJNE5nSTRJQUlnQVNnQ1BEWUNQQ0FCUVVCcklRRWdBa0ZBYXlJQ0lBVk5EUUFMQ3lBQ0lBUlBEUUVEUUNBQ0lBRW9BZ0EyQWdBZ0FVRUVhaUVCSUFKQkJHb2lBaUFFU1EwQUN3d0JDeUFEUVFSSkJFQWdBQ0VDREFFTElBQWdBMEVFYXlJRVN3UkFJQUFoQWd3QkN5QUFJUUlEUUNBQ0lBRXRBQUE2QUFBZ0FpQUJMUUFCT2dBQklBSWdBUzBBQWpvQUFpQUNJQUV0QUFNNkFBTWdBVUVFYWlFQklBSkJCR29pQWlBRVRRMEFDd3NnQWlBRFNRUkFBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSWdBMGNOQUFzTElBQUx3QUVCQTM4Q1FDQUJJQUlvQWhBaUF3Ui9JQU1GSUFJUUtnMEJJQUlvQWhBTElBSW9BaFFpQld0TEJFQWdBaUFBSUFFZ0FpZ0NKQkVFQUE4TEFrQWdBaWdDVUVFQVNBUkFRUUFoQXd3QkN5QUJJUVFEUUNBRUlnTkZCRUJCQUNFRERBSUxJQUFnQTBFQmF5SUVhaTBBQUVFS1J3MEFDeUFDSUFBZ0F5QUNLQUlrRVFRQUlnUWdBMGtOQVNBQUlBTnFJUUFnQVNBRGF5RUJJQUlvQWhRaEJRc2dCU0FBSUFFUUt4b2dBaUFDS0FJVUlBRnFOZ0lVSUFFZ0Eyb2hCQXNnQkF0QUFRRi9JQUVnQW13aEJDQUVBbjhnQXlnQ1RFRUFTQVJBSUFBZ0JDQURFQ3dNQVFzZ0FDQUVJQU1RTEFzaUFFWUVRQ0FDUVFBZ0FSc1BDeUFBSUFGdUM0d0JBUUovSXdCQkVHc2lBQ1FBSUFCQkNqb0FEd0pBQWtCQjJJSVVLQUlBSWdFRWZ5QUJCVUhJZ2hRUUtnMENRZGlDRkNnQ0FBdEIzSUlVS0FJQUlnRkdEUUJCbUlNVUtBSUFRUXBHRFFCQjNJSVVJQUZCQVdvMkFnQWdBVUVLT2dBQURBRUxRY2lDRkNBQVFROXFRUUZCN0lJVUtBSUFFUVFBUVFGSERRQWdBQzBBRHhvTElBQkJFR29rQUF0NkFRTi9Ba0FDUUNBQUlnRkJBM0ZGRFFBZ0FDMEFBRVVFUUVFQUR3c0RRQ0FCUVFGcUlnRkJBM0ZGRFFFZ0FTMEFBQTBBQ3d3QkN3TkFJQUVpQWtFRWFpRUJJQUlvQWdBaUEwRi9jeUFEUVlHQ2hBaHJjVUdBZ1lLRWVIRkZEUUFMQTBBZ0FpSUJRUUZxSVFJZ0FTMEFBQTBBQ3dzZ0FTQUFhd3VvQVFBQ1FDQUJRWUFJVGdSQUlBQkVBQUFBQUFBQTRIK2lJUUFnQVVIL0Qwa0VRQ0FCUWY4SGF5RUJEQUlMSUFCRUFBQUFBQUFBNEgraUlRQkIvUmNnQVNBQlFmMFhUaHRCL2c5cklRRU1BUXNnQVVHQmVFb05BQ0FBUkFBQUFBQUFBR0FEb2lFQUlBRkJ1SEJMQkVBZ0FVSEpCMm9oQVF3QkN5QUFSQUFBQUFBQUFHQURvaUVBUWZCb0lBRWdBVUh3YUV3YlFaSVBhaUVCQ3lBQUlBRkIvd2RxclVJMGhyK2lDOFlHQWdSL0EzNGpBRUdBQVdzaUJTUUFBa0FDUUFKQUlBTWdCRUlBUWdBUU4wVU5BQUovSUFSQy8vLy8vLy8vUDRNaENnSi9JQVJDTUlpblFmLy9BWEVpQmtILy93RkhCRUJCQkNBR0RRRWFRUUpCQXlBRElBcUVVQnNNQWdzZ0F5QUtoRkFMQ3lFR0lBSkNNSWluSWdoQi8vOEJjU0lIUWYvL0FVWU5BQ0FHRFFFTElBVkJFR29nQVNBQ0lBTWdCQkE4SUFVZ0JTa0RFQ0lDSUFVcEF4Z2lBU0FDSUFFUU9pQUZLUU1JSVFJZ0JTa0RBQ0VFREFFTElBRWdBa0wvLy8vLy8vLy8vLzhBZ3lJS0lBTWdCRUwvLy8vLy8vLy8vLzhBZ3lJSkVEZEJBRXdFUUNBQklBb2dBeUFKRURjRVFDQUJJUVFNQWdzZ0JVSHdBR29nQVNBQ1FnQkNBQkE4SUFVcEEzZ2hBaUFGS1FOd0lRUU1BUXNnQkVJd2lLZEIvLzhCY1NFR0lBY0VmaUFCQlNBRlFlQUFhaUFCSUFwQ0FFS0FnSUNBZ0lEQXU4QUFFRHdnQlNrRGFDSUtRakNJcDBINEFHc2hCeUFGS1FOZ0N5RUVJQVpGQkVBZ0JVSFFBR29nQXlBSlFnQkNnSUNBZ0lDQXdMdkFBQkE4SUFVcEExZ2lDVUl3aUtkQitBQnJJUVlnQlNrRFVDRURDeUFKUXYvLy8vLy8veitEUW9DQWdJQ0FnTUFBaENFTElBcEMvLy8vLy8vL1A0TkNnSUNBZ0lDQXdBQ0VJUW9nQmlBSFNBUkFBMEFDZmlBS0lBdDlJQU1nQkZhdGZTSUpRZ0JaQkVBZ0NTQUVJQU45SWdTRVVBUkFJQVZCSUdvZ0FTQUNRZ0JDQUJBOElBVXBBeWdoQWlBRktRTWdJUVFNQlFzZ0NVSUJoaUFFUWorSWhBd0JDeUFLUWdHR0lBUkNQNGlFQ3lFS0lBUkNBWVloQkNBSFFRRnJJZ2NnQmtvTkFBc2dCaUVIQ3dKQUlBb2dDMzBnQXlBRVZxMTlJZ2xDQUZNRVFDQUtJUWtNQVFzZ0NTQUVJQU45SWdTRVFnQlNEUUFnQlVFd2FpQUJJQUpDQUVJQUVEd2dCU2tET0NFQ0lBVXBBekFoQkF3QkN5QUpRdi8vLy8vLy96OVlCRUFEUUNBRVFqK0lJUUVnQjBFQmF5RUhJQVJDQVlZaEJDQUJJQWxDQVlhRUlnbENnSUNBZ0lDQXdBQlVEUUFMQ3lBSVFZQ0FBbkVoQmlBSFFRQk1CRUFnQlVGQWF5QUVJQWxDLy8vLy8vLy9QNE1nQjBINEFHb2dCbkt0UWpDR2hFSUFRb0NBZ0lDQWdNRERQeEE4SUFVcEEwZ2hBaUFGS1FOQUlRUU1BUXNnQ1VMLy8vLy8vLzgvZ3lBR0lBZHlyVUl3aG9RaEFnc2dBQ0FFTndNQUlBQWdBamNEQ0NBRlFZQUJhaVFBQzFJQkFuOUJ1SUlVS0FJQUlnRWdBRUVIYWtGNGNTSUNhaUVBQWtBZ0FrRUFJQUFnQVUwYkRRQWdBRDhBUVJCMFN3UkFJQUFRSEVVTkFRdEJ1SUlVSUFBMkFnQWdBUThMUWJDR0ZFRXdOZ0lBUVg4THlDZ0JDMzhqQUVFUWF5SUtKQUFDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBSUFCQjlBRk5CRUJCdElZVUtBSUFJZ1pCRUNBQVFRdHFRWGh4SUFCQkMwa2JJZ1ZCQTNZaUFIWWlBVUVEY1FSQUFrQWdBVUYvYzBFQmNTQUFhaUlDUVFOMElnRkIzSVlVYWlJQUlBRkI1SVlVYWlnQ0FDSUJLQUlJSWdSR0JFQkJ0SVlVSUFaQmZpQUNkM0UyQWdBTUFRc2dCQ0FBTmdJTUlBQWdCRFlDQ0FzZ0FVRUlhaUVBSUFFZ0FrRURkQ0lDUVFOeU5nSUVJQUVnQW1vaUFTQUJLQUlFUVFGeU5nSUVEQThMSUFWQnZJWVVLQUlBSWdkTkRRRWdBUVJBQWtCQkFpQUFkQ0lDUVFBZ0FtdHlJQUVnQUhSeGFDSUJRUU4wSWdCQjNJWVVhaUlDSUFCQjVJWVVhaWdDQUNJQUtBSUlJZ1JHQkVCQnRJWVVJQVpCZmlBQmQzRWlCallDQUF3QkN5QUVJQUkyQWd3Z0FpQUVOZ0lJQ3lBQUlBVkJBM0kyQWdRZ0FDQUZhaUlJSUFGQkEzUWlBU0FGYXlJRVFRRnlOZ0lFSUFBZ0FXb2dCRFlDQUNBSEJFQWdCMEY0Y1VIY2hoUnFJUUZCeUlZVUtBSUFJUUlDZnlBR1FRRWdCMEVEZG5RaUEzRkZCRUJCdElZVUlBTWdCbkkyQWdBZ0FRd0JDeUFCS0FJSUN5RURJQUVnQWpZQ0NDQURJQUkyQWd3Z0FpQUJOZ0lNSUFJZ0F6WUNDQXNnQUVFSWFpRUFRY2lHRkNBSU5nSUFRYnlHRkNBRU5nSUFEQThMUWJpR0ZDZ0NBQ0lMUlEwQklBdG9RUUowUWVTSUZHb29BZ0FpQWlnQ0JFRjRjU0FGYXlFRElBSWhBUU5BQWtBZ0FTZ0NFQ0lBUlFSQUlBRW9BaFFpQUVVTkFRc2dBQ2dDQkVGNGNTQUZheUlCSUFNZ0FTQURTU0lCR3lFRElBQWdBaUFCR3lFQ0lBQWhBUXdCQ3dzZ0FpZ0NHQ0VKSUFJZ0FpZ0NEQ0lFUndSQVFjU0dGQ2dDQUJvZ0FpZ0NDQ0lBSUFRMkFnd2dCQ0FBTmdJSURBNExJQUpCRkdvaUFTZ0NBQ0lBUlFSQUlBSW9BaEFpQUVVTkF5QUNRUkJxSVFFTEEwQWdBU0VJSUFBaUJFRVVhaUlCS0FJQUlnQU5BQ0FFUVJCcUlRRWdCQ2dDRUNJQURRQUxJQWhCQURZQ0FBd05DMEYvSVFVZ0FFRy9mMHNOQUNBQVFRdHFJZ0JCZUhFaEJVRzRoaFFvQWdBaUNFVU5BRUVBSUFWcklRTUNRQUpBQWtBQ2YwRUFJQVZCZ0FKSkRRQWFRUjhnQlVILy8vOEhTdzBBR2lBRlFTWWdBRUVJZG1jaUFHdDJRUUZ4SUFCQkFYUnJRVDVxQ3lJSFFRSjBRZVNJRkdvb0FnQWlBVVVFUUVFQUlRQU1BUXRCQUNFQUlBVkJHU0FIUVFGMmEwRUFJQWRCSDBjYmRDRUNBMEFDUUNBQktBSUVRWGh4SUFWcklnWWdBMDhOQUNBQklRUWdCaUlERFFCQkFDRURJQUVoQUF3REN5QUFJQUVvQWhRaUJpQUdJQUVnQWtFZGRrRUVjV29vQWhBaUFVWWJJQUFnQmhzaEFDQUNRUUYwSVFJZ0FRMEFDd3NnQUNBRWNrVUVRRUVBSVFSQkFpQUhkQ0lBUVFBZ0FHdHlJQWh4SWdCRkRRTWdBR2hCQW5SQjVJZ1VhaWdDQUNFQUN5QUFSUTBCQ3dOQUlBQW9BZ1JCZUhFZ0JXc2lBaUFEU1NFQklBSWdBeUFCR3lFRElBQWdCQ0FCR3lFRUlBQW9BaEFpQVFSL0lBRUZJQUFvQWhRTElnQU5BQXNMSUFSRkRRQWdBMEc4aGhRb0FnQWdCV3RQRFFBZ0JDZ0NHQ0VISUFRZ0JDZ0NEQ0lDUndSQVFjU0dGQ2dDQUJvZ0JDZ0NDQ0lBSUFJMkFnd2dBaUFBTmdJSURBd0xJQVJCRkdvaUFTZ0NBQ0lBUlFSQUlBUW9BaEFpQUVVTkF5QUVRUkJxSVFFTEEwQWdBU0VHSUFBaUFrRVVhaUlCS0FJQUlnQU5BQ0FDUVJCcUlRRWdBaWdDRUNJQURRQUxJQVpCQURZQ0FBd0xDeUFGUWJ5R0ZDZ0NBQ0lFVFFSQVFjaUdGQ2dDQUNFQUFrQWdCQ0FGYXlJQlFSQlBCRUFnQUNBRmFpSUNJQUZCQVhJMkFnUWdBQ0FFYWlBQk5nSUFJQUFnQlVFRGNqWUNCQXdCQ3lBQUlBUkJBM0kyQWdRZ0FDQUVhaUlCSUFFb0FnUkJBWEkyQWdSQkFDRUNRUUFoQVF0QnZJWVVJQUUyQWdCQnlJWVVJQUkyQWdBZ0FFRUlhaUVBREEwTElBVkJ3SVlVS0FJQUlnSkpCRUJCd0lZVUlBSWdCV3NpQVRZQ0FFSE1oaFJCeklZVUtBSUFJZ0FnQldvaUFqWUNBQ0FDSUFGQkFYSTJBZ1FnQUNBRlFRTnlOZ0lFSUFCQkNHb2hBQXdOQzBFQUlRQWdCVUV2YWlJREFuOUJqSW9VS0FJQUJFQkJsSW9VS0FJQURBRUxRWmlLRkVKL053SUFRWkNLRkVLQW9JQ0FnSUFFTndJQVFZeUtGQ0FLUVF4cVFYQnhRZGlxMWFvRmN6WUNBRUdnaWhSQkFEWUNBRUh3aVJSQkFEWUNBRUdBSUFzaUFXb2lCa0VBSUFGcklnaHhJZ0VnQlUwTkRFSHNpUlFvQWdBaUJBUkFRZVNKRkNnQ0FDSUhJQUZxSWdrZ0IwME5EU0FFSUFsSkRRMExBa0JCOElrVUxRQUFRUVJ4UlFSQUFrQUNRQUpBQWtCQnpJWVVLQUlBSWdRRVFFSDBpUlFoQUFOQUlBUWdBQ2dDQUNJSFR3UkFJQWNnQUNnQ0JHb2dCRXNOQXdzZ0FDZ0NDQ0lBRFFBTEMwRUFFRElpQWtGL1JnMERJQUVoQmtHUWloUW9BZ0FpQUVFQmF5SUVJQUp4QkVBZ0FTQUNheUFDSUFScVFRQWdBR3R4YWlFR0N5QUZJQVpQRFFOQjdJa1VLQUlBSWdBRVFFSGtpUlFvQWdBaUJDQUdhaUlJSUFSTkRRUWdBQ0FJU1EwRUN5QUdFRElpQUNBQ1J3MEJEQVVMSUFZZ0Ftc2dDSEVpQmhBeUlnSWdBQ2dDQUNBQUtBSUVha1lOQVNBQ0lRQUxJQUJCZjBZTkFTQUZRVEJxSUFaTkJFQWdBQ0VDREFRTFFaU0tGQ2dDQUNJQ0lBTWdCbXRxUVFBZ0FtdHhJZ0lRTWtGL1JnMEJJQUlnQm1vaEJpQUFJUUlNQXdzZ0FrRi9SdzBDQzBId2lSUkI4SWtVS0FJQVFRUnlOZ0lBQ3lBQkVESWhBa0VBRURJaEFDQUNRWDlHRFFVZ0FFRi9SZzBGSUFBZ0FrME5CU0FBSUFKcklnWWdCVUVvYWswTkJRdEI1SWtVUWVTSkZDZ0NBQ0FHYWlJQU5nSUFRZWlKRkNnQ0FDQUFTUVJBUWVpSkZDQUFOZ0lBQ3dKQVFjeUdGQ2dDQUNJREJFQkI5SWtVSVFBRFFDQUNJQUFvQWdBaUFTQUFLQUlFSWdScVJnMENJQUFvQWdnaUFBMEFDd3dFQzBIRWhoUW9BZ0FpQUVFQUlBQWdBazBiUlFSQVFjU0dGQ0FDTmdJQUMwRUFJUUJCK0lrVUlBWTJBZ0JCOUlrVUlBSTJBZ0JCMUlZVVFYODJBZ0JCMklZVVFZeUtGQ2dDQURZQ0FFR0FpaFJCQURZQ0FBTkFJQUJCQTNRaUFVSGtoaFJxSUFGQjNJWVVhaUlFTmdJQUlBRkI2SVlVYWlBRU5nSUFJQUJCQVdvaUFFRWdSdzBBQzBIQWhoUWdCa0VvYXlJQVFYZ2dBbXRCQjNFaUFXc2lCRFlDQUVITWhoUWdBU0FDYWlJQk5nSUFJQUVnQkVFQmNqWUNCQ0FBSUFKcVFTZzJBZ1JCMElZVVFaeUtGQ2dDQURZQ0FBd0VDeUFDSUFOTkRRSWdBU0FEU3cwQ0lBQW9BZ3hCQ0hFTkFpQUFJQVFnQm1vMkFnUkJ6SVlVSUFOQmVDQURhMEVIY1NJQWFpSUJOZ0lBUWNDR0ZFSEFoaFFvQWdBZ0Jtb2lBaUFBYXlJQU5nSUFJQUVnQUVFQmNqWUNCQ0FDSUFOcVFTZzJBZ1JCMElZVVFaeUtGQ2dDQURZQ0FBd0RDMEVBSVFRTUNndEJBQ0VDREFnTFFjU0dGQ2dDQUNBQ1N3UkFRY1NHRkNBQ05nSUFDeUFDSUFacUlRRkI5SWtVSVFBQ1FBSkFBa0FEUUNBQklBQW9BZ0JIQkVBZ0FDZ0NDQ0lBRFFFTUFnc0xJQUF0QUF4QkNIRkZEUUVMUWZTSkZDRUFBMEFnQXlBQUtBSUFJZ0ZQQkVBZ0FTQUFLQUlFYWlJRUlBTkxEUU1MSUFBb0FnZ2hBQXdBQ3dBTElBQWdBallDQUNBQUlBQW9BZ1FnQm1vMkFnUWdBa0Y0SUFKclFRZHhhaUlISUFWQkEzSTJBZ1FnQVVGNElBRnJRUWR4YWlJR0lBVWdCMm9pQldzaEFDQURJQVpHQkVCQnpJWVVJQVUyQWdCQndJWVVRY0NHRkNnQ0FDQUFhaUlBTmdJQUlBVWdBRUVCY2pZQ0JBd0lDMEhJaGhRb0FnQWdCa1lFUUVISWhoUWdCVFlDQUVHOGhoUkJ2SVlVS0FJQUlBQnFJZ0EyQWdBZ0JTQUFRUUZ5TmdJRUlBQWdCV29nQURZQ0FBd0lDeUFHS0FJRUlnTkJBM0ZCQVVjTkJpQURRWGh4SVFrZ0EwSC9BVTBFUUNBR0tBSU1JZ0VnQmlnQ0NDSUNSZ1JBUWJTR0ZFRzBoaFFvQWdCQmZpQURRUU4yZDNFMkFnQU1Cd3NnQWlBQk5nSU1JQUVnQWpZQ0NBd0dDeUFHS0FJWUlRZ2dCaUFHS0FJTUlnSkhCRUFnQmlnQ0NDSUJJQUkyQWd3Z0FpQUJOZ0lJREFVTElBWkJGR29pQVNnQ0FDSURSUVJBSUFZb0FoQWlBMFVOQkNBR1FSQnFJUUVMQTBBZ0FTRUVJQU1pQWtFVWFpSUJLQUlBSWdNTkFDQUNRUkJxSVFFZ0FpZ0NFQ0lERFFBTElBUkJBRFlDQUF3RUMwSEFoaFFnQmtFb2F5SUFRWGdnQW10QkIzRWlBV3NpQ0RZQ0FFSE1oaFFnQVNBQ2FpSUJOZ0lBSUFFZ0NFRUJjallDQkNBQUlBSnFRU2cyQWdSQjBJWVVRWnlLRkNnQ0FEWUNBQ0FESUFSQkp5QUVhMEVIY1dwQkwyc2lBQ0FBSUFOQkVHcEpHeUlCUVJzMkFnUWdBVUg4aVJRcEFnQTNBaEFnQVVIMGlSUXBBZ0EzQWdoQi9Ja1VJQUZCQ0dvMkFnQkIrSWtVSUFZMkFnQkI5SWtVSUFJMkFnQkJnSW9VUVFBMkFnQWdBVUVZYWlFQUEwQWdBRUVITmdJRUlBQkJDR29oQWlBQVFRUnFJUUFnQWlBRVNRMEFDeUFCSUFOR0RRQWdBU0FCS0FJRVFYNXhOZ0lFSUFNZ0FTQURheUlDUVFGeU5nSUVJQUVnQWpZQ0FDQUNRZjhCVFFSQUlBSkJlSEZCM0lZVWFpRUFBbjlCdElZVUtBSUFJZ0ZCQVNBQ1FRTjJkQ0lDY1VVRVFFRzBoaFFnQVNBQ2NqWUNBQ0FBREFFTElBQW9BZ2dMSVFFZ0FDQUROZ0lJSUFFZ0F6WUNEQ0FESUFBMkFnd2dBeUFCTmdJSURBRUxRUjhoQUNBQ1FmLy8vd2ROQkVBZ0FrRW1JQUpCQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWlFQUN5QURJQUEyQWh3Z0EwSUFOd0lRSUFCQkFuUkI1SWdVYWlFQkFrQUNRRUc0aGhRb0FnQWlCRUVCSUFCMElnWnhSUVJBUWJpR0ZDQUVJQVp5TmdJQUlBRWdBellDQUF3QkN5QUNRUmtnQUVFQmRtdEJBQ0FBUVI5SEczUWhBQ0FCS0FJQUlRUURRQ0FFSWdFb0FnUkJlSEVnQWtZTkFpQUFRUjEySVFRZ0FFRUJkQ0VBSUFFZ0JFRUVjV29pQmlnQ0VDSUVEUUFMSUFZZ0F6WUNFQXNnQXlBQk5nSVlJQU1nQXpZQ0RDQURJQU0yQWdnTUFRc2dBU2dDQ0NJQUlBTTJBZ3dnQVNBRE5nSUlJQU5CQURZQ0dDQURJQUUyQWd3Z0F5QUFOZ0lJQzBIQWhoUW9BZ0FpQUNBRlRRMEFRY0NHRkNBQUlBVnJJZ0UyQWdCQnpJWVVRY3lHRkNnQ0FDSUFJQVZxSWdJMkFnQWdBaUFCUVFGeU5nSUVJQUFnQlVFRGNqWUNCQ0FBUVFocUlRQU1DQXRCc0lZVVFUQTJBZ0JCQUNFQURBY0xRUUFoQWdzZ0NFVU5BQUpBSUFZb0Fod2lBVUVDZEVIa2lCUnFJZ1FvQWdBZ0JrWUVRQ0FFSUFJMkFnQWdBZzBCUWJpR0ZFRzRoaFFvQWdCQmZpQUJkM0UyQWdBTUFnc2dDRUVRUVJRZ0NDZ0NFQ0FHUmh0cUlBSTJBZ0FnQWtVTkFRc2dBaUFJTmdJWUlBWW9BaEFpQVFSQUlBSWdBVFlDRUNBQklBSTJBaGdMSUFZb0FoUWlBVVVOQUNBQ0lBRTJBaFFnQVNBQ05nSVlDeUFBSUFscUlRQWdCaUFKYWlJR0tBSUVJUU1MSUFZZ0EwRitjVFlDQkNBRklBQkJBWEkyQWdRZ0FDQUZhaUFBTmdJQUlBQkIvd0ZOQkVBZ0FFRjRjVUhjaGhScUlRRUNmMEcwaGhRb0FnQWlBa0VCSUFCQkEzWjBJZ0J4UlFSQVFiU0dGQ0FBSUFKeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBVTJBZ2dnQUNBRk5nSU1JQVVnQVRZQ0RDQUZJQUEyQWdnTUFRdEJIeUVESUFCQi8vLy9CMDBFUUNBQVFTWWdBRUVJZG1jaUFXdDJRUUZ4SUFGQkFYUnJRVDVxSVFNTElBVWdBellDSENBRlFnQTNBaEFnQTBFQ2RFSGtpQlJxSVFFQ1FBSkFRYmlHRkNnQ0FDSUNRUUVnQTNRaUJIRkZCRUJCdUlZVUlBSWdCSEkyQWdBZ0FTQUZOZ0lBREFFTElBQkJHU0FEUVFGMmEwRUFJQU5CSDBjYmRDRURJQUVvQWdBaEFnTkFJQUlpQVNnQ0JFRjRjU0FBUmcwQ0lBTkJIWFloQWlBRFFRRjBJUU1nQVNBQ1FRUnhhaUlFS0FJUUlnSU5BQXNnQkNBRk5nSVFDeUFGSUFFMkFoZ2dCU0FGTmdJTUlBVWdCVFlDQ0F3QkN5QUJLQUlJSWdBZ0JUWUNEQ0FCSUFVMkFnZ2dCVUVBTmdJWUlBVWdBVFlDRENBRklBQTJBZ2dMSUFkQkNHb2hBQXdDQ3dKQUlBZEZEUUFDUUNBRUtBSWNJZ0JCQW5SQjVJZ1VhaUlCS0FJQUlBUkdCRUFnQVNBQ05nSUFJQUlOQVVHNGhoUWdDRUYrSUFCM2NTSUlOZ0lBREFJTElBZEJFRUVVSUFjb0FoQWdCRVliYWlBQ05nSUFJQUpGRFFFTElBSWdCellDR0NBRUtBSVFJZ0FFUUNBQ0lBQTJBaEFnQUNBQ05nSVlDeUFFS0FJVUlnQkZEUUFnQWlBQU5nSVVJQUFnQWpZQ0dBc0NRQ0FEUVE5TkJFQWdCQ0FESUFWcUlnQkJBM0kyQWdRZ0FDQUVhaUlBSUFBb0FnUkJBWEkyQWdRTUFRc2dCQ0FGUVFOeU5nSUVJQVFnQldvaUFpQURRUUZ5TmdJRUlBSWdBMm9nQXpZQ0FDQURRZjhCVFFSQUlBTkJlSEZCM0lZVWFpRUFBbjlCdElZVUtBSUFJZ0ZCQVNBRFFRTjJkQ0lEY1VVRVFFRzBoaFFnQVNBRGNqWUNBQ0FBREFFTElBQW9BZ2dMSVFFZ0FDQUNOZ0lJSUFFZ0FqWUNEQ0FDSUFBMkFnd2dBaUFCTmdJSURBRUxRUjhoQUNBRFFmLy8vd2ROQkVBZ0EwRW1JQU5CQ0habklnQnJka0VCY1NBQVFRRjBhMEUrYWlFQUN5QUNJQUEyQWh3Z0FrSUFOd0lRSUFCQkFuUkI1SWdVYWlFQkFrQUNRQ0FJUVFFZ0FIUWlCbkZGQkVCQnVJWVVJQVlnQ0hJMkFnQWdBU0FDTmdJQURBRUxJQU5CR1NBQVFRRjJhMEVBSUFCQkgwY2JkQ0VBSUFFb0FnQWhCUU5BSUFVaUFTZ0NCRUY0Y1NBRFJnMENJQUJCSFhZaEJpQUFRUUYwSVFBZ0FTQUdRUVJ4YWlJR0tBSVFJZ1VOQUFzZ0JpQUNOZ0lRQ3lBQ0lBRTJBaGdnQWlBQ05nSU1JQUlnQWpZQ0NBd0JDeUFCS0FJSUlnQWdBallDRENBQklBSTJBZ2dnQWtFQU5nSVlJQUlnQVRZQ0RDQUNJQUEyQWdnTElBUkJDR29oQUF3QkN3SkFJQWxGRFFBQ1FDQUNLQUljSWdCQkFuUkI1SWdVYWlJQktBSUFJQUpHQkVBZ0FTQUVOZ0lBSUFRTkFVRzRoaFFnQzBGK0lBQjNjVFlDQUF3Q0N5QUpRUkJCRkNBSktBSVFJQUpHRzJvZ0JEWUNBQ0FFUlEwQkN5QUVJQWsyQWhnZ0FpZ0NFQ0lBQkVBZ0JDQUFOZ0lRSUFBZ0JEWUNHQXNnQWlnQ0ZDSUFSUTBBSUFRZ0FEWUNGQ0FBSUFRMkFoZ0xBa0FnQTBFUFRRUkFJQUlnQXlBRmFpSUFRUU55TmdJRUlBQWdBbW9pQUNBQUtBSUVRUUZ5TmdJRURBRUxJQUlnQlVFRGNqWUNCQ0FDSUFWcUlnUWdBMEVCY2pZQ0JDQURJQVJxSUFNMkFnQWdCd1JBSUFkQmVIRkIzSVlVYWlFQVFjaUdGQ2dDQUNFQkFuOUJBU0FIUVFOMmRDSUZJQVp4UlFSQVFiU0dGQ0FGSUFaeU5nSUFJQUFNQVFzZ0FDZ0NDQXNoQmlBQUlBRTJBZ2dnQmlBQk5nSU1JQUVnQURZQ0RDQUJJQVkyQWdnTFFjaUdGQ0FFTmdJQVFieUdGQ0FETmdJQUN5QUNRUWhxSVFBTElBcEJFR29rQUNBQUMvVUxBUWQvQWtBZ0FFVU5BQ0FBUVFocklnSWdBRUVFYXlnQ0FDSUJRWGh4SWdCcUlRVUNRQ0FCUVFGeERRQWdBVUVEY1VVTkFTQUNJQUlvQWdBaUFXc2lBa0hFaGhRb0FnQkpEUUVnQUNBQmFpRUFBa0FDUUVISWhoUW9BZ0FnQWtjRVFDQUJRZjhCVFFSQUlBRkJBM1loQkNBQ0tBSU1JZ0VnQWlnQ0NDSURSZ1JBUWJTR0ZFRzBoaFFvQWdCQmZpQUVkM0UyQWdBTUJRc2dBeUFCTmdJTUlBRWdBellDQ0F3RUN5QUNLQUlZSVFZZ0FpQUNLQUlNSWdGSEJFQWdBaWdDQ0NJRElBRTJBZ3dnQVNBRE5nSUlEQU1MSUFKQkZHb2lCQ2dDQUNJRFJRUkFJQUlvQWhBaUEwVU5BaUFDUVJCcUlRUUxBMEFnQkNFSElBTWlBVUVVYWlJRUtBSUFJZ01OQUNBQlFSQnFJUVFnQVNnQ0VDSUREUUFMSUFkQkFEWUNBQXdDQ3lBRktBSUVJZ0ZCQTNGQkEwY05Ba0c4aGhRZ0FEWUNBQ0FGSUFGQmZuRTJBZ1FnQWlBQVFRRnlOZ0lFSUFVZ0FEWUNBQThMUVFBaEFRc2dCa1VOQUFKQUlBSW9BaHdpQTBFQ2RFSGtpQlJxSWdRb0FnQWdBa1lFUUNBRUlBRTJBZ0FnQVEwQlFiaUdGRUc0aGhRb0FnQkJmaUFEZDNFMkFnQU1BZ3NnQmtFUVFSUWdCaWdDRUNBQ1JodHFJQUUyQWdBZ0FVVU5BUXNnQVNBR05nSVlJQUlvQWhBaUF3UkFJQUVnQXpZQ0VDQURJQUUyQWhnTElBSW9BaFFpQTBVTkFDQUJJQU0yQWhRZ0F5QUJOZ0lZQ3lBQ0lBVlBEUUFnQlNnQ0JDSUJRUUZ4UlEwQUFrQUNRQUpBQWtBZ0FVRUNjVVVFUUVITWhoUW9BZ0FnQlVZRVFFSE1oaFFnQWpZQ0FFSEFoaFJCd0lZVUtBSUFJQUJxSWdBMkFnQWdBaUFBUVFGeU5nSUVJQUpCeUlZVUtBSUFSdzBHUWJ5R0ZFRUFOZ0lBUWNpR0ZFRUFOZ0lBRHd0QnlJWVVLQUlBSUFWR0JFQkJ5SVlVSUFJMkFnQkJ2SVlVUWJ5R0ZDZ0NBQ0FBYWlJQU5nSUFJQUlnQUVFQmNqWUNCQ0FBSUFKcUlBQTJBZ0FQQ3lBQlFYaHhJQUJxSVFBZ0FVSC9BVTBFUUNBQlFRTjJJUVFnQlNnQ0RDSUJJQVVvQWdnaUEwWUVRRUcwaGhSQnRJWVVLQUlBUVg0Z0JIZHhOZ0lBREFVTElBTWdBVFlDRENBQklBTTJBZ2dNQkFzZ0JTZ0NHQ0VHSUFVZ0JTZ0NEQ0lCUndSQVFjU0dGQ2dDQUJvZ0JTZ0NDQ0lESUFFMkFnd2dBU0FETmdJSURBTUxJQVZCRkdvaUJDZ0NBQ0lEUlFSQUlBVW9BaEFpQTBVTkFpQUZRUkJxSVFRTEEwQWdCQ0VISUFNaUFVRVVhaUlFS0FJQUlnTU5BQ0FCUVJCcUlRUWdBU2dDRUNJRERRQUxJQWRCQURZQ0FBd0NDeUFGSUFGQmZuRTJBZ1FnQWlBQVFRRnlOZ0lFSUFBZ0Ftb2dBRFlDQUF3REMwRUFJUUVMSUFaRkRRQUNRQ0FGS0FJY0lnTkJBblJCNUlnVWFpSUVLQUlBSUFWR0JFQWdCQ0FCTmdJQUlBRU5BVUc0aGhSQnVJWVVLQUlBUVg0Z0EzZHhOZ0lBREFJTElBWkJFRUVVSUFZb0FoQWdCVVliYWlBQk5nSUFJQUZGRFFFTElBRWdCallDR0NBRktBSVFJZ01FUUNBQklBTTJBaEFnQXlBQk5nSVlDeUFGS0FJVUlnTkZEUUFnQVNBRE5nSVVJQU1nQVRZQ0dBc2dBaUFBUVFGeU5nSUVJQUFnQW1vZ0FEWUNBQ0FDUWNpR0ZDZ0NBRWNOQUVHOGhoUWdBRFlDQUE4TElBQkIvd0ZOQkVBZ0FFRjRjVUhjaGhScUlRRUNmMEcwaGhRb0FnQWlBMEVCSUFCQkEzWjBJZ0J4UlFSQVFiU0dGQ0FBSUFOeU5nSUFJQUVNQVFzZ0FTZ0NDQXNoQUNBQklBSTJBZ2dnQUNBQ05nSU1JQUlnQVRZQ0RDQUNJQUEyQWdnUEMwRWZJUU1nQUVILy8vOEhUUVJBSUFCQkppQUFRUWgyWnlJQmEzWkJBWEVnQVVFQmRHdEJQbW9oQXdzZ0FpQUROZ0ljSUFKQ0FEY0NFQ0FEUVFKMFFlU0lGR29oQVFKQUFrQUNRRUc0aGhRb0FnQWlCRUVCSUFOMElnZHhSUVJBUWJpR0ZDQUVJQWR5TmdJQUlBRWdBallDQUNBQ0lBRTJBaGdNQVFzZ0FFRVpJQU5CQVhaclFRQWdBMEVmUnh0MElRTWdBU2dDQUNFQkEwQWdBU0lFS0FJRVFYaHhJQUJHRFFJZ0EwRWRkaUVCSUFOQkFYUWhBeUFFSUFGQkJIRnFJZ2RCRUdvb0FnQWlBUTBBQ3lBSElBSTJBaEFnQWlBRU5nSVlDeUFDSUFJMkFnd2dBaUFDTmdJSURBRUxJQVFvQWdnaUFDQUNOZ0lNSUFRZ0FqWUNDQ0FDUVFBMkFoZ2dBaUFFTmdJTUlBSWdBRFlDQ0F0QjFJWVVRZFNHRkNnQ0FFRUJheUlBUVg4Z0FCczJBZ0FMQzRnSUFRdC9JQUJGQkVBZ0FSQXpEd3NnQVVGQVR3UkFRYkNHRkVFd05nSUFRUUFQQ3dKL1FSQWdBVUVMYWtGNGNTQUJRUXRKR3lFRklBQkJDR3NpQkNnQ0JDSUlRWGh4SVFNQ1FDQUlRUU54UlFSQVFRQWdCVUdBQWtrTkFob2dCVUVFYWlBRFRRUkFJQVFoQWlBRElBVnJRWlNLRkNnQ0FFRUJkRTBOQWd0QkFBd0NDeUFESUFScUlRWUNRQ0FESUFWUEJFQWdBeUFGYXlJQ1FSQkpEUUVnQkNBSVFRRnhJQVZ5UVFKeU5nSUVJQVFnQldvaUF5QUNRUU55TmdJRUlBWWdCaWdDQkVFQmNqWUNCQ0FESUFJUU5nd0JDMEhNaGhRb0FnQWdCa1lFUUVIQWhoUW9BZ0FnQTJvaUF5QUZUUTBDSUFRZ0NFRUJjU0FGY2tFQ2NqWUNCQ0FFSUFWcUlnSWdBeUFGYXlJRFFRRnlOZ0lFUWNDR0ZDQUROZ0lBUWN5R0ZDQUNOZ0lBREFFTFFjaUdGQ2dDQUNBR1JnUkFRYnlHRkNnQ0FDQURhaUlESUFWSkRRSUNRQ0FESUFWcklnSkJFRThFUUNBRUlBaEJBWEVnQlhKQkFuSTJBZ1FnQkNBRmFpSUhJQUpCQVhJMkFnUWdBeUFFYWlJRElBSTJBZ0FnQXlBREtBSUVRWDV4TmdJRURBRUxJQVFnQ0VFQmNTQURja0VDY2pZQ0JDQURJQVJxSWdJZ0FpZ0NCRUVCY2pZQ0JFRUFJUUlMUWNpR0ZDQUhOZ0lBUWJ5R0ZDQUNOZ0lBREFFTElBWW9BZ1FpQjBFQ2NRMEJJQWRCZUhFZ0Eyb2lDU0FGU1EwQklBa2dCV3NoQ3dKQUlBZEIvd0ZOQkVBZ0JpZ0NEQ0lDSUFZb0FnZ2lBMFlFUUVHMGhoUkJ0SVlVS0FJQVFYNGdCMEVEZG5keE5nSUFEQUlMSUFNZ0FqWUNEQ0FDSUFNMkFnZ01BUXNnQmlnQ0dDRUtBa0FnQmlBR0tBSU1JZ05IQkVCQnhJWVVLQUlBR2lBR0tBSUlJZ0lnQXpZQ0RDQURJQUkyQWdnTUFRc0NRQ0FHUVJScUlnSW9BZ0FpQjBVRVFDQUdLQUlRSWdkRkRRRWdCa0VRYWlFQ0N3TkFJQUloRENBSElnTkJGR29pQWlnQ0FDSUhEUUFnQTBFUWFpRUNJQU1vQWhBaUJ3MEFDeUFNUVFBMkFnQU1BUXRCQUNFREN5QUtSUTBBQWtBZ0JpZ0NIQ0lDUVFKMFFlU0lGR29pQnlnQ0FDQUdSZ1JBSUFjZ0F6WUNBQ0FERFFGQnVJWVVRYmlHRkNnQ0FFRitJQUozY1RZQ0FBd0NDeUFLUVJCQkZDQUtLQUlRSUFaR0cyb2dBellDQUNBRFJRMEJDeUFESUFvMkFoZ2dCaWdDRUNJQ0JFQWdBeUFDTmdJUUlBSWdBellDR0FzZ0JpZ0NGQ0lDUlEwQUlBTWdBallDRkNBQ0lBTTJBaGdMSUF0QkQwMEVRQ0FFSUFoQkFYRWdDWEpCQW5JMkFnUWdCQ0FKYWlJQ0lBSW9BZ1JCQVhJMkFnUU1BUXNnQkNBSVFRRnhJQVZ5UVFKeU5nSUVJQVFnQldvaUFpQUxRUU55TmdJRUlBUWdDV29pQXlBREtBSUVRUUZ5TmdJRUlBSWdDeEEyQ3lBRUlRSUxJQUlMSWdJRVFDQUNRUWhxRHdzZ0FSQXpJZ0pGQkVCQkFBOExJQUlnQUVGOFFYZ2dBRUVFYXlnQ0FDSUVRUU54R3lBRVFYaHhhaUlFSUFFZ0FTQUVTeHNRS3hvZ0FCQTBJQUlMdGdzQkJuOGdBQ0FCYWlFRkFrQUNRQ0FBS0FJRUlnSkJBWEVOQUNBQ1FRTnhSUTBCSUFBb0FnQWlBaUFCYWlFQkFrQUNRQUpBSUFBZ0Ftc2lBRUhJaGhRb0FnQkhCRUFnQWtIL0FVMEVRQ0FDUVFOMklRUWdBQ2dDQ0NJRElBQW9BZ3dpQWtjTkFrRzBoaFJCdElZVUtBSUFRWDRnQkhkeE5nSUFEQVVMSUFBb0FoZ2hCaUFBSUFBb0Fnd2lBa2NFUUVIRWhoUW9BZ0FhSUFBb0FnZ2lBeUFDTmdJTUlBSWdBellDQ0F3RUN5QUFRUlJxSWdRb0FnQWlBMFVFUUNBQUtBSVFJZ05GRFFNZ0FFRVFhaUVFQ3dOQUlBUWhCeUFESWdKQkZHb2lCQ2dDQUNJRERRQWdBa0VRYWlFRUlBSW9BaEFpQXcwQUN5QUhRUUEyQWdBTUF3c2dCU2dDQkNJQ1FRTnhRUU5IRFFOQnZJWVVJQUUyQWdBZ0JTQUNRWDV4TmdJRUlBQWdBVUVCY2pZQ0JDQUZJQUUyQWdBUEN5QURJQUkyQWd3Z0FpQUROZ0lJREFJTFFRQWhBZ3NnQmtVTkFBSkFJQUFvQWh3aUEwRUNkRUhraUJScUlnUW9BZ0FnQUVZRVFDQUVJQUkyQWdBZ0FnMEJRYmlHRkVHNGhoUW9BZ0JCZmlBRGQzRTJBZ0FNQWdzZ0JrRVFRUlFnQmlnQ0VDQUFSaHRxSUFJMkFnQWdBa1VOQVFzZ0FpQUdOZ0lZSUFBb0FoQWlBd1JBSUFJZ0F6WUNFQ0FESUFJMkFoZ0xJQUFvQWhRaUEwVU5BQ0FDSUFNMkFoUWdBeUFDTmdJWUN3SkFBa0FDUUFKQUlBVW9BZ1FpQWtFQ2NVVUVRRUhNaGhRb0FnQWdCVVlFUUVITWhoUWdBRFlDQUVIQWhoUkJ3SVlVS0FJQUlBRnFJZ0UyQWdBZ0FDQUJRUUZ5TmdJRUlBQkJ5SVlVS0FJQVJ3MEdRYnlHRkVFQU5nSUFRY2lHRkVFQU5nSUFEd3RCeUlZVUtBSUFJQVZHQkVCQnlJWVVJQUEyQWdCQnZJWVVRYnlHRkNnQ0FDQUJhaUlCTmdJQUlBQWdBVUVCY2pZQ0JDQUFJQUZxSUFFMkFnQVBDeUFDUVhoeElBRnFJUUVnQWtIL0FVMEVRQ0FDUVFOMklRUWdCU2dDRENJQ0lBVW9BZ2dpQTBZRVFFRzBoaFJCdElZVUtBSUFRWDRnQkhkeE5nSUFEQVVMSUFNZ0FqWUNEQ0FDSUFNMkFnZ01CQXNnQlNnQ0dDRUdJQVVnQlNnQ0RDSUNSd1JBUWNTR0ZDZ0NBQm9nQlNnQ0NDSURJQUkyQWd3Z0FpQUROZ0lJREFNTElBVkJGR29pQkNnQ0FDSURSUVJBSUFVb0FoQWlBMFVOQWlBRlFSQnFJUVFMQTBBZ0JDRUhJQU1pQWtFVWFpSUVLQUlBSWdNTkFDQUNRUkJxSVFRZ0FpZ0NFQ0lERFFBTElBZEJBRFlDQUF3Q0N5QUZJQUpCZm5FMkFnUWdBQ0FCUVFGeU5nSUVJQUFnQVdvZ0FUWUNBQXdEQzBFQUlRSUxJQVpGRFFBQ1FDQUZLQUljSWdOQkFuUkI1SWdVYWlJRUtBSUFJQVZHQkVBZ0JDQUNOZ0lBSUFJTkFVRzRoaFJCdUlZVUtBSUFRWDRnQTNkeE5nSUFEQUlMSUFaQkVFRVVJQVlvQWhBZ0JVWWJhaUFDTmdJQUlBSkZEUUVMSUFJZ0JqWUNHQ0FGS0FJUUlnTUVRQ0FDSUFNMkFoQWdBeUFDTmdJWUN5QUZLQUlVSWdORkRRQWdBaUFETmdJVUlBTWdBallDR0FzZ0FDQUJRUUZ5TmdJRUlBQWdBV29nQVRZQ0FDQUFRY2lHRkNnQ0FFY05BRUc4aGhRZ0FUWUNBQThMSUFGQi93Rk5CRUFnQVVGNGNVSGNoaFJxSVFJQ2YwRzBoaFFvQWdBaUEwRUJJQUZCQTNaMElnRnhSUVJBUWJTR0ZDQUJJQU55TmdJQUlBSU1BUXNnQWlnQ0NBc2hBU0FDSUFBMkFnZ2dBU0FBTmdJTUlBQWdBallDRENBQUlBRTJBZ2dQQzBFZklRTWdBVUgvLy84SFRRUkFJQUZCSmlBQlFRaDJaeUlDYTNaQkFYRWdBa0VCZEd0QlBtb2hBd3NnQUNBRE5nSWNJQUJDQURjQ0VDQURRUUowUWVTSUZHb2hBZ0pBQWtCQnVJWVVLQUlBSWdSQkFTQURkQ0lIY1VVRVFFRzRoaFFnQkNBSGNqWUNBQ0FDSUFBMkFnQWdBQ0FDTmdJWURBRUxJQUZCR1NBRFFRRjJhMEVBSUFOQkgwY2JkQ0VESUFJb0FnQWhBZ05BSUFJaUJDZ0NCRUY0Y1NBQlJnMENJQU5CSFhZaEFpQURRUUYwSVFNZ0JDQUNRUVJ4YWlJSFFSQnFLQUlBSWdJTkFBc2dCeUFBTmdJUUlBQWdCRFlDR0FzZ0FDQUFOZ0lNSUFBZ0FEWUNDQThMSUFRb0FnZ2lBU0FBTmdJTUlBUWdBRFlDQ0NBQVFRQTJBaGdnQUNBRU5nSU1JQUFnQVRZQ0NBc0wyd0VDQVg4Q2ZrRUJJUVFDUUNBQVFnQlNJQUZDLy8vLy8vLy8vLy8vQUlNaUJVS0FnSUNBZ0lEQS8vOEFWaUFGUW9DQWdJQ0FnTUQvL3dCUkd3MEFJQUpDQUZJZ0EwTC8vLy8vLy8vLy8vOEFneUlHUW9DQWdJQ0FnTUQvL3dCV0lBWkNnSUNBZ0lDQXdQLy9BRkViRFFBZ0FDQUNoQ0FGSUFhRWhGQUVRRUVBRHdzZ0FTQURnMElBV1FSQVFYOGhCQ0FBSUFKVUlBRWdBMU1nQVNBRFVSc05BU0FBSUFLRklBRWdBNFdFUWdCU0R3dEJmeUVFSUFBZ0FsWWdBU0FEVlNBQklBTlJHdzBBSUFBZ0FvVWdBU0FEaFlSQ0FGSWhCQXNnQkF2QUFRSUJmd0orUVg4aEF3SkFJQUJDQUZJZ0FVTC8vLy8vLy8vLy8vOEFneUlFUW9DQWdJQ0FnTUQvL3dCV0lBUkNnSUNBZ0lDQXdQLy9BRkViRFFBZ0FrTC8vLy8vLy8vLy8vOEFneUlGUW9DQWdJQ0FnTUQvL3dCV0lBVkNnSUNBZ0lDQXdQLy9BRkp4RFFBZ0FDQUVJQVdFaEZBRVFFRUFEd3NnQVNBQ2cwSUFXUVJBSUFFZ0FsSWdBU0FDVTNFTkFTQUFJQUVnQW9XRVFnQlNEd3NnQUVJQVVpQUJJQUpWSUFFZ0FsRWJEUUFnQUNBQklBS0ZoRUlBVWlFREN5QURDMUFCQVg0Q1FDQURRY0FBY1FSQUlBRWdBMEZBYXEyR0lRSkNBQ0VCREFFTElBTkZEUUFnQWlBRHJTSUVoaUFCUWNBQUlBTnJyWWlFSVFJZ0FTQUVoaUVCQ3lBQUlBRTNBd0FnQUNBQ053TUlDNmtQQWdWL0QzNGpBRUhRQW1zaUJTUUFJQVJDLy8vLy8vLy9QNE1oQ3lBQ1F2Ly8vLy8vL3orRElRb2dBaUFFaFVLQWdJQ0FnSUNBZ0lCL2d5RU5JQVJDTUlpblFmLy9BWEVoQ0FKQUFrQWdBa0l3aUtkQi8vOEJjU0lKUWYvL0FXdEJnb0IrVHdSQUlBaEIvLzhCYTBHQmdINUxEUUVMSUFGUUlBSkMvLy8vLy8vLy8vLy9BSU1pREVLQWdJQ0FnSURBLy84QVZDQU1Rb0NBZ0lDQWdNRC8vd0JSRzBVRVFDQUNRb0NBZ0lDQWdDQ0VJUTBNQWdzZ0ExQWdCRUwvLy8vLy8vLy8vLzhBZ3lJQ1FvQ0FnSUNBZ01ELy93QlVJQUpDZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQVJDZ0lDQWdJQ0FJSVFoRFNBRElRRU1BZ3NnQVNBTVFvQ0FnSUNBZ01ELy93Q0ZoRkFFUUNBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQVFnQWhBVUtBZ0lDQWdJRGcvLzhBSVEwTUF3c2dEVUtBZ0lDQWdJREEvLzhBaENFTlFnQWhBUXdDQ3lBRElBSkNnSUNBZ0lDQXdQLy9BSVdFVUFSQVFnQWhBUXdDQ3lBQklBeUVVQVJBUW9DQWdJQ0FnT0QvL3dBZ0RTQUNJQU9FVUJzaERVSUFJUUVNQWdzZ0FpQURoRkFFUUNBTlFvQ0FnSUNBZ01ELy93Q0VJUTFDQUNFQkRBSUxJQXhDLy8vLy8vLy9QMWdFUUNBRlFjQUNhaUFCSUFvZ0FTQUtJQXBRSWdZYmVTQUdRUVowclh5bklnWkJEMnNRT1VFUUlBWnJJUVlnQlNrRHlBSWhDaUFGS1FQQUFpRUJDeUFDUXYvLy8vLy8vejlXRFFBZ0JVR3dBbW9nQXlBTElBTWdDeUFMVUNJSEcza2dCMEVHZEsxOHB5SUhRUTlyRURrZ0JpQUhha0VRYXlFR0lBVXBBN2dDSVFzZ0JTa0RzQUloQXdzZ0JVR2dBbW9nQzBLQWdJQ0FnSURBQUlRaUVrSVBoaUFEUWpHSWhDSUNRZ0JDZ0lDQWdMRG12SUwxQUNBQ2ZTSUVRZ0FRUFNBRlFaQUNha0lBSUFVcEE2Z0NmVUlBSUFSQ0FCQTlJQVZCZ0FKcUlBVXBBNWdDUWdHR0lBVXBBNUFDUWorSWhDSUVRZ0FnQWtJQUVEMGdCVUh3QVdvZ0JFSUFRZ0FnQlNrRGlBSjlRZ0FRUFNBRlFlQUJhaUFGS1FQNEFVSUJoaUFGS1FQd0FVSS9pSVFpQkVJQUlBSkNBQkE5SUFWQjBBRnFJQVJDQUVJQUlBVXBBK2dCZlVJQUVEMGdCVUhBQVdvZ0JTa0QyQUZDQVlZZ0JTa0QwQUZDUDRpRUlnUkNBQ0FDUWdBUVBTQUZRYkFCYWlBRVFnQkNBQ0FGS1FQSUFYMUNBQkE5SUFWQm9BRnFJQUpDQUNBRktRTzRBVUlCaGlBRktRT3dBVUkvaUlSQ0FYMGlBa0lBRUQwZ0JVR1FBV29nQTBJUGhrSUFJQUpDQUJBOUlBVkI4QUJxSUFKQ0FFSUFJQVVwQTZnQklBVXBBNkFCSWd3Z0JTa0RtQUY4SWdRZ0RGU3RmQ0FFUWdGV3JYeDlRZ0FRUFNBRlFZQUJha0lCSUFSOVFnQWdBa0lBRUQwZ0JpQUpJQWhyYWlFR0FuOGdCU2tEY0NJVFFnR0dJZzRnQlNrRGlBRWlEMElCaGlBRktRT0FBVUkvaUlSOEloQkM1K3dBZlNJVVFpQ0lJZ0lnQ2tLQWdJQ0FnSURBQUlRaUZVSUJoaUlXUWlDSUlnUitJaEVnQVVJQmhpSU1RaUNJSWdzZ0VDQVVWcTBnRGlBUVZxMGdCU2tEZUVJQmhpQVRRaitJaENBUFFqK0lmSHg4UWdGOUloTkNJSWdpRUg1OElnNGdFVlN0SUE0Z0RpQVRRdi8vLy84UGd5SVRJQUZDUDRnaUZ5QUtRZ0dHaEVMLy8vLy9ENE1pQ241OElnNVdyWHdnQkNBUWZud2dCQ0FUZmlJUklBb2dFSDU4SWc4Z0VWU3RRaUNHSUE5Q0lJaUVmQ0FPSUE0Z0QwSWdobndpRGxhdGZDQU9JQTRnRkVMLy8vLy9ENE1pRkNBS2ZpSVJJQUlnQzM1OElnOGdFVlN0SUE4Z0R5QVRJQXhDL3YvLy93K0RJaEYrZkNJUFZxMThmQ0lPVnExOElBNGdCQ0FVZmlJWUlCQWdFWDU4SWdRZ0FpQUtmbndpQ2lBTElCTitmQ0lRUWlDSUlBb2dFRmF0SUFRZ0dGU3RJQVFnQ2xhdGZIeENJSWFFZkNJRUlBNVVyWHdnQkNBUElBSWdFWDRpQWlBTElCUitmQ0lMUWlDSUlBSWdDMWF0UWlDR2hId2lBaUFQVkswZ0FpQVFRaUNHZkNBQ1ZLMThmQ0lDSUFSVXJYd2lCRUwvLy8vLy8vLy9BRmdFUUNBV0lCZUVJUlVnQlVIUUFHb2dBaUFFSUFNZ0VoQTlJQUZDTVlZZ0JTa0RXSDBnQlNrRFVDSUJRZ0JTclgwaENrSUFJQUY5SVFzZ0JrSCsvd0JxREFFTElBVkI0QUJxSUFSQ1A0WWdBa0lCaUlRaUFpQUVRZ0dJSWdRZ0F5QVNFRDBnQVVJd2hpQUZLUU5vZlNBRktRTmdJZ3hDQUZLdGZTRUtRZ0FnREgwaEN5QUJJUXdnQmtILy93QnFDeUlHUWYvL0FVNEVRQ0FOUW9DQWdJQ0FnTUQvL3dDRUlRMUNBQ0VCREFFTEFuNGdCa0VBU2dSQUlBcENBWVlnQzBJL2lJUWhDaUFFUXYvLy8vLy8veitESUFhdFFqQ0doQ0VNSUF0Q0FZWU1BUXNnQmtHUGYwd0VRRUlBSVFFTUFnc2dCVUZBYXlBQ0lBUkJBU0FHYXhBN0lBVkJNR29nRENBVklBWkI4QUJxRURrZ0JVRWdhaUFESUJJZ0JTa0RRQ0lDSUFVcEEwZ2lEQkE5SUFVcEF6Z2dCU2tES0VJQmhpQUZLUU1nSWdGQ1A0aUVmU0FGS1FNd0lnUWdBVUlCaGlJQlZLMTlJUW9nQkNBQmZRc2hCQ0FGUVJCcUlBTWdFa0lEUWdBUVBTQUZJQU1nRWtJRlFnQVFQU0FNSUFJZ0FpQURJQUpDQVlNaUFTQUVmQ0lEVkNBS0lBRWdBMWF0ZkNJQklCSldJQUVnRWxFYnJYd2lBbGF0ZkNJRUlBSWdBaUFFUW9DQWdJQ0FnTUQvL3dCVUlBTWdCU2tERUZZZ0FTQUZLUU1ZSWdSV0lBRWdCRkViY2ExOElnSldyWHdpQkNBQ0lBUkNnSUNBZ0lDQXdQLy9BRlFnQXlBRktRTUFWaUFCSUFVcEF3Z2lBMVlnQVNBRFVSdHhyWHdpQVNBQ1ZLMThJQTJFSVEwTElBQWdBVGNEQUNBQUlBMDNBd2dnQlVIUUFtb2tBQXRRQVFGK0FrQWdBMEhBQUhFRVFDQUNJQU5CUUdxdGlDRUJRZ0FoQWd3QkN5QURSUTBBSUFKQndBQWdBMnV0aGlBQklBT3RJZ1NJaENFQklBSWdCSWdoQWdzZ0FDQUJOd01BSUFBZ0FqY0RDQXZEQ2dJRmZ3OStJd0JCNEFCcklnVWtBQ0FFUXYvLy8vLy8veitESVF3Z0FpQUVoVUtBZ0lDQWdJQ0FnSUIvZ3lFS0lBSkMvLy8vLy8vL1A0TWlEVUlnaUNFT0lBUkNNSWluUWYvL0FYRWhCd0pBQWtBZ0FrSXdpS2RCLy84QmNTSUpRZi8vQVd0QmdvQitUd1JBSUFkQi8vOEJhMEdCZ0g1TERRRUxJQUZRSUFKQy8vLy8vLy8vLy8vL0FJTWlDMEtBZ0lDQWdJREEvLzhBVkNBTFFvQ0FnSUNBZ01ELy93QlJHMFVFUUNBQ1FvQ0FnSUNBZ0NDRUlRb01BZ3NnQTFBZ0JFTC8vLy8vLy8vLy8vOEFneUlDUW9DQWdJQ0FnTUQvL3dCVUlBSkNnSUNBZ0lDQXdQLy9BRkViUlFSQUlBUkNnSUNBZ0lDQUlJUWhDaUFESVFFTUFnc2dBU0FMUW9DQWdJQ0FnTUQvL3dDRmhGQUVRQ0FDSUFPRVVBUkFRb0NBZ0lDQWdPRC8vd0FoQ2tJQUlRRU1Bd3NnQ2tLQWdJQ0FnSURBLy84QWhDRUtRZ0FoQVF3Q0N5QURJQUpDZ0lDQWdJQ0F3UC8vQUlXRVVBUkFJQUVnQzRRaEFrSUFJUUVnQWxBRVFFS0FnSUNBZ0lEZy8vOEFJUW9NQXdzZ0NrS0FnSUNBZ0lEQS8vOEFoQ0VLREFJTElBRWdDNFJRQkVCQ0FDRUJEQUlMSUFJZ0E0UlFCRUJDQUNFQkRBSUxJQXRDLy8vLy8vLy9QMWdFUUNBRlFkQUFhaUFCSUEwZ0FTQU5JQTFRSWdZYmVTQUdRUVowclh5bklnWkJEMnNRT1VFUUlBWnJJUVlnQlNrRFdDSU5RaUNJSVE0Z0JTa0RVQ0VCQ3lBQ1F2Ly8vLy8vL3o5V0RRQWdCVUZBYXlBRElBd2dBeUFNSUF4UUlnZ2JlU0FJUVFaMHJYeW5JZ2hCRDJzUU9TQUdJQWhyUVJCcUlRWWdCU2tEU0NFTUlBVXBBMEFoQXdzZ0EwSVBoaUlMUW9DQS92OFBneUlDSUFGQ0lJZ2lCSDRpRUNBTFFpQ0lJaE1nQVVMLy8vLy9ENE1pQVg1OElnOUNJSVlpRVNBQklBSitmQ0lMSUJGVXJTQUNJQTFDLy8vLy93K0RJZzErSWhVZ0JDQVRmbndpRVNBTVFnK0dJaElnQTBJeGlJUkMvLy8vL3crRElnTWdBWDU4SWhRZ0R5QVFWSzFDSUlZZ0QwSWdpSVI4SWc4Z0FpQU9Rb0NBQklRaURINGlGaUFOSUJOK2ZDSU9JQkpDSUloQ2dJQ0FnQWlFSWdJZ0FYNThJaEFnQXlBRWZud2lFa0lnaG53aUYzd2hBU0FISUFscUlBWnFRZi8vQUdzaEJnSkFJQUlnQkg0aUdDQU1JQk4rZkNJRUlCaFVyU0FFSUFRZ0F5QU5mbndpQkZhdGZDQUNJQXgrZkNBRUlBUWdFU0FWVkswZ0VTQVVWcTE4ZkNJRVZxMThJQU1nREg0aUF5QUNJQTErZkNJQ0lBTlVyVUlnaGlBQ1FpQ0loSHdnQkNBQ1FpQ0dmQ0lDSUFSVXJYd2dBaUFDSUJBZ0VsYXRJQTRnRmxTdElBNGdFRmF0Zkh4Q0lJWWdFa0lnaUlSOElnSldyWHdnQWlBQ0lBOGdGRlN0SUE4Z0YxYXRmSHdpQWxhdGZDSUVRb0NBZ0lDQWdNQUFnMElBVWdSQUlBWkJBV29oQmd3QkN5QUxRaitJSVFNZ0JFSUJoaUFDUWorSWhDRUVJQUpDQVlZZ0FVSS9pSVFoQWlBTFFnR0dJUXNnQXlBQlFnR0doQ0VCQ3lBR1FmLy9BVTRFUUNBS1FvQ0FnSUNBZ01ELy93Q0VJUXBDQUNFQkRBRUxBbjRnQmtFQVRBUkFRUUVnQm1zaUIwSC9BRTBFUUNBRlFUQnFJQXNnQVNBR1FmOEFhaUlHRURrZ0JVRWdhaUFDSUFRZ0JoQTVJQVZCRUdvZ0N5QUJJQWNRT3lBRklBSWdCQ0FIRURzZ0JTa0RNQ0FGS1FNNGhFSUFVcTBnQlNrRElDQUZLUU1RaElRaEN5QUZLUU1vSUFVcEF4aUVJUUVnQlNrREFDRUNJQVVwQXdnTUFndENBQ0VCREFJTElBUkMvLy8vLy8vL1A0TWdCcTFDTUlhRUN5QUtoQ0VLSUF0UUlBRkNBRmtnQVVLQWdJQ0FnSUNBZ0lCL1VSdEZCRUFnQ2lBQ1FnRjhJZ0ZRclh3aENnd0JDeUFMSUFGQ2dJQ0FnSUNBZ0lDQWY0V0VRZ0JTQkVBZ0FpRUJEQUVMSUFvZ0FpQUNRZ0dEZkNJQklBSlVyWHdoQ2dzZ0FDQUJOd01BSUFBZ0NqY0RDQ0FGUWVBQWFpUUFDM1VCQVg0Z0FDQUJJQVIrSUFJZ0EzNThJQU5DSUlnaUFpQUJRaUNJSWdSK2ZDQURRdi8vLy84UGd5SURJQUZDLy8vLy93K0RJZ0YrSWdWQ0lJZ2dBeUFFZm53aUEwSWdpSHdnQVNBQ2ZpQURRdi8vLy84UGczd2lBVUlnaUh3M0F3Z2dBQ0FGUXYvLy8vOFBneUFCUWlDR2hEY0RBQXVtQVFFQmZ3Si9Ba0FnQUNnQ1RDSUJRUUJPQkVBZ0FVVU5BVUhFbnhRb0FnQWdBVUgvLy8vL2UzRkhEUUVMSUFBb0FnUWlBU0FBS0FJSVJ3UkFJQUFnQVVFQmFqWUNCQ0FCTFFBQURBSUxJQUFRMFFFTUFRc2dBQ0FBS0FKTUlnRkIvLy8vL3dNZ0FSczJBa3dDZnlBQUtBSUVJZ0VnQUNnQ0NFY0VRQ0FBSUFGQkFXbzJBZ1FnQVMwQUFBd0JDeUFBRU5FQkN5RUJJQUFvQWt3YUlBQkJBRFlDVENBQkN3c0dBQ0FBSkFFTERnQkJnTGtZSkFOQmdMa1VKQUlMQndBakFDTUNhd3NFQUNNREN3UUFJd0lMQkFBakFBc0dBQ0FBSkFBTEVBQWpBQ0FBYTBGd2NTSUFKQUFnQUF2RkNRSUVmd1YrSXdCQjhBQnJJZ1lrQUNBRVF2Ly8vLy8vLy8vLy93Q0RJUWtDUUFKQUlBRlFJZ1VnQWtMLy8vLy8vLy8vLy84QWd5SUtRb0NBZ0lDQWdNRC8vd0I5UW9DQWdJQ0FnTUNBZ0g5VUlBcFFHMFVFUUNBRFFnQlNJQWxDZ0lDQWdJQ0F3UC8vQUgwaUMwS0FnSUNBZ0lEQWdJQi9WaUFMUW9DQWdJQ0FnTUNBZ0g5Ukd3MEJDeUFGSUFwQ2dJQ0FnSUNBd1AvL0FGUWdDa0tBZ0lDQWdJREEvLzhBVVJ0RkJFQWdBa0tBZ0lDQWdJQWdoQ0VFSUFFaEF3d0NDeUFEVUNBSlFvQ0FnSUNBZ01ELy93QlVJQWxDZ0lDQWdJQ0F3UC8vQUZFYlJRUkFJQVJDZ0lDQWdJQ0FJSVFoQkF3Q0N5QUJJQXBDZ0lDQWdJQ0F3UC8vQUlXRVVBUkFRb0NBZ0lDQWdPRC8vd0FnQWlBQklBT0ZJQUlnQklWQ2dJQ0FnSUNBZ0lDQWY0V0VVQ0lGR3lFRVFnQWdBU0FGR3lFRERBSUxJQU1nQ1VLQWdJQ0FnSURBLy84QWhZUlFEUUVnQVNBS2hGQUVRQ0FESUFtRVFnQlNEUUlnQVNBRGd5RURJQUlnQklNaEJBd0NDeUFESUFtRVFnQlNEUUFnQVNFRElBSWhCQXdCQ3lBRElBRWdBU0FEVkNBSklBcFdJQWtnQ2xFYklnZ2JJUW9nQkNBQ0lBZ2JJZ3RDLy8vLy8vLy9QNE1oQ1NBQ0lBUWdDQnNpQWtJd2lLZEIvLzhCY1NFSElBdENNSWluUWYvL0FYRWlCVVVFUUNBR1FlQUFhaUFLSUFrZ0NpQUpJQWxRSWdVYmVTQUZRUVowclh5bklnVkJEMnNRT1NBR0tRTm9JUWtnQmlrRFlDRUtRUkFnQldzaEJRc2dBU0FESUFnYklRTWdBa0wvLy8vLy8vOC9neUVFSUFkRkJFQWdCa0hRQUdvZ0F5QUVJQU1nQkNBRVVDSUhHM2tnQjBFR2RLMThweUlIUVE5ckVEbEJFQ0FIYXlFSElBWXBBMWdoQkNBR0tRTlFJUU1MSUFSQ0E0WWdBMEk5aUlSQ2dJQ0FnSUNBZ0FTRUlRRWdDVUlEaGlBS1FqMkloQ0VFSUFJZ0M0VWhEUUorSUFOQ0E0WWlBaUFGSUFkR0RRQWFJQVVnQjJzaUIwSC9BRXNFUUVJQUlRRkNBUXdCQ3lBR1FVQnJJQUlnQVVHQUFTQUhheEE1SUFaQk1Hb2dBaUFCSUFjUU95QUdLUU00SVFFZ0Jpa0RNQ0FHS1FOQUlBWXBBMGlFUWdCU3JZUUxJUWtnQkVLQWdJQ0FnSUNBQklRaERDQUtRZ09HSVFvQ1FDQU5RZ0JUQkVCQ0FDRURRZ0FoQkNBSklBcUZJQUVnRElXRVVBMENJQW9nQ1gwaEFpQU1JQUY5SUFrZ0NsYXRmU0lFUXYvLy8vLy8vLzhEVmcwQklBWkJJR29nQWlBRUlBSWdCQ0FFVUNJSEcza2dCMEVHZEsxOHAwRU1heUlIRURrZ0JTQUhheUVGSUFZcEF5Z2hCQ0FHS1FNZ0lRSU1BUXNnQ1NBS2ZDSUNJQWxVclNBQklBeDhmQ0lFUW9DQWdJQ0FnSUFJZzFBTkFDQUpRZ0dESUFSQ1A0WWdBa0lCaUlTRUlRSWdCVUVCYWlFRklBUkNBWWdoQkFzZ0MwS0FnSUNBZ0lDQWdJQi9neUVCSUFWQi8vOEJUZ1JBSUFGQ2dJQ0FnSUNBd1AvL0FJUWhCRUlBSVFNTUFRdEJBQ0VIQWtBZ0JVRUFTZ1JBSUFVaEJ3d0JDeUFHUVJCcUlBSWdCQ0FGUWY4QWFoQTVJQVlnQWlBRVFRRWdCV3NRT3lBR0tRTUFJQVlwQXhBZ0Jpa0RHSVJDQUZLdGhDRUNJQVlwQXdnaEJBc2dBcWRCQjNFaUJVRUVTNjBnQkVJOWhpQUNRZ09JaENJQ2ZDSURJQUpVclNBRVFnT0lRdi8vLy8vLy96K0RJQWV0UWpDR2hDQUJoSHdoQkFKQUlBVkJCRVlFUUNBRUlBTkNBWU1pQVNBRGZDSURJQUZVclh3aEJBd0JDeUFGUlEwQkN3c2dBQ0FETndNQUlBQWdCRGNEQ0NBR1FmQUFhaVFBQzBRQkFYOGpBRUVRYXlJRkpBQWdCU0FCSUFJZ0F5QUVRb0NBZ0lDQWdJQ0FnSCtGRUVjZ0JTa0RBQ0VCSUFBZ0JTa0RDRGNEQ0NBQUlBRTNBd0FnQlVFUWFpUUFDNEVNQXdWOEEzNEdmeU1BUVJCcklnMGtBQUpBQWtBZ0FiMGlDRUkwaUtjaURFSC9EM0VpRGtHK0NHc2lEMEgvZmtzZ0FMMGlCMEkwaUtjaUNrSC9EMnRCZ25CUGNRMEFJQWhDQVlaQ2dJQ0FnSUNBZ0JCOFFvR0FnSUNBZ0lBUVZBUkFSQUFBQUFBQUFQQS9JUUlnQjBLQWdJQ0FnSUNBK0Q5UkRRSWdDRUlCaGlJSlVBMENJQWxDZ1lDQWdJQ0FnSEJVSUFkQ0FZWWlCMEtBZ0lDQWdJQ0FjRmh4UlFSQUlBQWdBYUFoQWd3REN5QUhRb0NBZ0lDQWdJRHcvd0JSRFFKRUFBQUFBQUFBQUFBZ0FTQUJvaUFIUXYvLy8vLy8vLy92L3dCV0lBaENBRmx6R3lFQ0RBSUxJQWRDQVlaQ2dJQ0FnSUNBZ0JCOFFvR0FnSUNBZ0lBUVZBUkFJQUFnQUtJaEFpQUhRZ0JUQkVBZ0Fwb2dBaUFJRUVwQkFVWWJJUUlMSUFoQ0FGa05BaU1BUVJCcklncEVBQUFBQUFBQThEOGdBcU01QXdnZ0Npc0RDQ0VDREFJTElBZENBRk1FUUNBSUVFb2lDMFVFUUNBQUlBQ2hJZ0FnQUtNaEFnd0RDeUFLUWY4UGNTRUtJQXRCQVVaQkVuUWhDeUFIUXYvLy8vLy8vLy8vL3dDRElRY0xJQTlCLzM1TkJFQkVBQUFBQUFBQThEOGhBaUFIUW9DQWdJQ0FnSUQ0UDFFTkFpQU9RYjBIVFFSQUlBRWdBWm9nQjBLQWdJQ0FnSUNBK0Q5V0cwUUFBQUFBQUFEd1A2QWhBZ3dEQ3lBTVFZQVFTU0FIUW9HQWdJQ0FnSUQ0UDFSSEJFQWpBRUVRYXlJS1JBQUFBQUFBQUFCd09RTUlJQW9yQXdoRUFBQUFBQUFBQUhDaUlRSU1Bd3NqQUVFUWF5SUtSQUFBQUFBQUFBQVFPUU1JSUFvckF3aEVBQUFBQUFBQUFCQ2lJUUlNQWdzZ0NnMEFJQUJFQUFBQUFBQUFNRU9pdlVMLy8vLy8vLy8vLy84QWcwS0FnSUNBZ0lDQW9BTjlJUWNMQW53Z0NFS0FnSUJBZzc4aUJTQU5JQWRDZ0lDQWdOQ3FwZk0vZlNJSVFqU0hwN2NpQTBINEdDc0RBS0lnQ0VJdGlLZEIvd0J4UVFWMElncEIwQmxxS3dNQW9DQUhJQWhDZ0lDQWdJQ0FnSGlEZlNJSFFvQ0FnSUFJZkVLQWdJQ0FjSU8vSWdBZ0NrRzRHV29yQXdBaUJLSkVBQUFBQUFBQThMK2dJZ0lnQjc4Z0FLRWdCS0lpQktBaUFDQURRZkFZS3dNQW9pQUtRY2daYWlzREFLQWlBeUFBSUFPZ0lnT2hvS0FnQkNBQVFZQVpLd01BSWdTaUlnWWdBaUFFb2lJRW9LS2dJQUlnQktJaUFpQURJQU1nQXFBaUFxR2dvQ0FBSUFBZ0JxSWlBNklnQXlBRElBQkJzQmtyQXdDaVFhZ1pLd01Bb0tJZ0FFR2dHU3NEQUtKQm1Ca3JBd0Nnb0tJZ0FFR1FHU3NEQUtKQmlCa3JBd0Nnb0tLZ0lnQWdBaUFDSUFDZ0lnS2hvRGtEQ0NBQ3ZVS0FnSUJBZzc4aUE2SWhBQ0FCSUFXaElBT2lJQTByQXdnZ0FpQURvYUFnQWFLZ0lRRUNRQ0FBdlVJMGlLZEIvdzl4SWdwQnlRZHJRVDlKRFFBZ0NrSEpCMGtFUUNBQVJBQUFBQUFBQVBBL29DSUFtaUFBSUFzYkRBSUxJQXBCaVFoSklReEJBQ0VLSUF3TkFDQUF2VUlBVXdSQUl3QkJFR3NpQ2tRQUFBQUFBQUFBa0VRQUFBQUFBQUFBRUNBTEd6a0RDQ0FLS3dNSVJBQUFBQUFBQUFBUW9nd0NDeU1BUVJCcklncEVBQUFBQUFBQUFQQkVBQUFBQUFBQUFIQWdDeHM1QXdnZ0Npc0RDRVFBQUFBQUFBQUFjS0lNQVF0QmdBZ3JBd0FnQUtKQmlBZ3JBd0FpQXFBaUF5QUNvU0lDUVpnSUt3TUFvaUFDUVpBSUt3TUFvaUFBb0tBZ0FhQWlBQ0FBb2lJQklBR2lJQUJCdUFnckF3Q2lRYkFJS3dNQW9LSWdBU0FBUWFnSUt3TUFva0dnQ0NzREFLQ2lJQU85SWdpblFRUjBRZkFQY1NJTVFmQUlhaXNEQUNBQW9LQ2dJUUFnREVINENHb3BBd0FnQ0NBTHJYeENMWVo4SVFjZ0NrVUVRQUo4SUFoQ2dJQ0FnQWlEVUFSQUlBZENnSUNBZ0lDQWdJZy9mYjhpQVNBQW9pQUJvRVFBQUFBQUFBQUFmNklNQVFzZ0IwS0FnSUNBZ0lDQThEOThJZ2UvSWdFZ0FLSWlBeUFCb0NJQW1VUUFBQUFBQUFEd1AyTUVmQ01BUVJCcklnb2dDa1FBQUFBQUFBQVFBRGtEQ0NBS0t3TUlSQUFBQUFBQUFCQUFvamtEQ0NBSFFvQ0FnSUNBZ0lDQWdIK0R2eUFBUkFBQUFBQUFBUEMvUkFBQUFBQUFBUEEvSUFCRUFBQUFBQUFBQUFCakd5SUNvQ0lGSUFNZ0FTQUFvYUFnQUNBQ0lBV2hvS0NnSUFLaElnQWdBRVFBQUFBQUFBQUFBR0ViQlNBQUMwUUFBQUFBQUFBUUFLSUxEQUVMSUFlL0lnRWdBS0lnQWFBTElRSUxJQTFCRUdva0FDQUNDMDRDQVg4QmZnSi9RUUFnQUVJMGlLZEIvdzl4SWdGQi93ZEpEUUFhUVFJZ0FVR3pDRXNOQUJwQkFFSUJRYk1JSUFGcnJZWWlBa0lCZlNBQWcwSUFVZzBBR2tFQ1FRRWdBQ0FDZzFBYkN3dm9BZ0VDZndKQUlBQWdBVVlOQUNBQklBQWdBbW9pQkd0QkFDQUNRUUYwYTAwRVFDQUFJQUVnQWhBckR3c2dBQ0FCYzBFRGNTRURBa0FDUUNBQUlBRkpCRUFnQXdSQUlBQWhBd3dEQ3lBQVFRTnhSUVJBSUFBaEF3d0NDeUFBSVFNRFFDQUNSUTBFSUFNZ0FTMEFBRG9BQUNBQlFRRnFJUUVnQWtFQmF5RUNJQU5CQVdvaUEwRURjUTBBQ3d3QkN3SkFJQU1OQUNBRVFRTnhCRUFEUUNBQ1JRMEZJQUFnQWtFQmF5SUNhaUlESUFFZ0Ftb3RBQUE2QUFBZ0EwRURjUTBBQ3dzZ0FrRURUUTBBQTBBZ0FDQUNRUVJySWdKcUlBRWdBbW9vQWdBMkFnQWdBa0VEU3cwQUN3c2dBa1VOQWdOQUlBQWdBa0VCYXlJQ2FpQUJJQUpxTFFBQU9nQUFJQUlOQUFzTUFnc2dBa0VEVFEwQUEwQWdBeUFCS0FJQU5nSUFJQUZCQkdvaEFTQURRUVJxSVFNZ0FrRUVheUlDUVFOTERRQUxDeUFDUlEwQUEwQWdBeUFCTFFBQU9nQUFJQU5CQVdvaEF5QUJRUUZxSVFFZ0FrRUJheUlDRFFBTEN5QUFDNUFFQWdSK0FuOENRQUpBSUFHOUlnUkNBWVlpQTFBTkFDQUJ2U0VDSUFDOUlnVkNOSWluUWY4UGNTSUdRZjhQUmcwQUlBSkMvLy8vLy8vLy8vLy9BSU5DZ1lDQWdJQ0FnUGovQUZRTkFRc2dBQ0FCb2lJQUlBQ2pEd3NnQXlBRlFnR0dJZ0phQkVBZ0FFUUFBQUFBQUFBQUFLSWdBQ0FDSUFOUkd3OExJQVJDTklpblFmOFBjU0VIQW40Z0JrVUVRRUVBSVFZZ0JVSU1oaUlDUWdCWkJFQURRQ0FHUVFGcklRWWdBa0lCaGlJQ1FnQlpEUUFMQ3lBRlFRRWdCbXV0aGd3QkN5QUZRdi8vLy8vLy8vOEhnMEtBZ0lDQWdJQ0FDSVFMSVFJQ2ZpQUhSUVJBUVFBaEJ5QUVRZ3lHSWdOQ0FGa0VRQU5BSUFkQkFXc2hCeUFEUWdHR0lnTkNBRmtOQUFzTElBUkJBU0FIYTYyR0RBRUxJQVJDLy8vLy8vLy8vd2VEUW9DQWdJQ0FnSUFJaEFzaEJDQUdJQWRLQkVBRFFBSkFJQUlnQkgwaUEwSUFVdzBBSUFNaUFrSUFVZzBBSUFCRUFBQUFBQUFBQUFDaUR3c2dBa0lCaGlFQ0lBWkJBV3NpQmlBSFNnMEFDeUFISVFZTEFrQWdBaUFFZlNJRFFnQlREUUFnQXlJQ1FnQlNEUUFnQUVRQUFBQUFBQUFBQUtJUEN3SkFJQUpDLy8vLy8vLy8vd2RXQkVBZ0FpRUREQUVMQTBBZ0JrRUJheUVHSUFKQ2dJQ0FnSUNBZ0FSVUlRY2dBa0lCaGlJRElRSWdCdzBBQ3dzZ0JVS0FnSUNBZ0lDQWdJQi9neUVDSUFaQkFFb0VmaUFEUW9DQWdJQ0FnSUFJZlNBR3JVSTBob1FGSUFOQkFTQUdhNjJJQ3lBQ2hMOEwwUU1DQW40Q2Z5TUFRU0JySWdRa0FBSkFJQUZDLy8vLy8vLy8vLy8vQUlNaUEwS0FnSUNBZ0lEQWdEeDlJQU5DZ0lDQWdJQ0F3UC9EQUgxVUJFQWdBVUlFaGlBQVFqeUloQ0VESUFCQy8vLy8vLy8vLy84UGd5SUFRb0dBZ0lDQWdJQ0FDRm9FUUNBRFFvR0FnSUNBZ0lDQXdBQjhJUUlNQWdzZ0EwS0FnSUNBZ0lDQWdFQjlJUUlnQUVLQWdJQ0FnSUNBZ0FoU0RRRWdBaUFEUWdHRGZDRUNEQUVMSUFCUUlBTkNnSUNBZ0lDQXdQLy9BRlFnQTBLQWdJQ0FnSURBLy84QVVSdEZCRUFnQVVJRWhpQUFRanlJaEVMLy8vLy8vLy8vQTROQ2dJQ0FnSUNBZ1B6L0FJUWhBZ3dCQzBLQWdJQ0FnSUNBK1A4QUlRSWdBMEwvLy8vLy8vKy8vOE1BVmcwQVFnQWhBaUFEUWpDSXB5SUZRWkgzQUVrTkFDQUVRUkJxSUFBZ0FVTC8vLy8vLy84L2cwS0FnSUNBZ0lEQUFJUWlBaUFGUVlIM0FHc1FPU0FFSUFBZ0FrR0IrQUFnQldzUU95QUVLUU1JUWdTR0lBUXBBd0FpQUVJOGlJUWhBaUFFS1FNUUlBUXBBeGlFUWdCU3JTQUFRdi8vLy8vLy8vLy9ENE9FSWdCQ2dZQ0FnSUNBZ0lBSVdnUkFJQUpDQVh3aEFnd0JDeUFBUW9DQWdJQ0FnSUNBQ0ZJTkFDQUNRZ0dESUFKOElRSUxJQVJCSUdva0FDQUNJQUZDZ0lDQWdJQ0FnSUNBZjRPRXZ3dCtBZ0ovQVg0akFFRVFheUlESkFBZ0FBSitJQUZGQkVCQ0FBd0JDeUFESUFFZ0FVRWZkU0lDY3lBQ2F5SUNyVUlBSUFKbklnSkIwUUJxRURrZ0F5a0RDRUtBZ0lDQWdJREFBSVZCbm9BQklBSnJyVUl3aG53Z0FVR0FnSUNBZUhHdFFpQ0doQ0VFSUFNcEF3QUxOd01BSUFBZ0JEY0RDQ0FEUVJCcUpBQUwrUUVDQTM0Q2Z5TUFRUkJySWdVa0FBSitJQUc5SWdOQy8vLy8vLy8vLy8vL0FJTWlBa0tBZ0lDQWdJQ0FDSDFDLy8vLy8vLy8vKy8vQUZnRVFDQUNRanlHSVFRZ0FrSUVpRUtBZ0lDQWdJQ0FnRHg4REFFTElBSkNnSUNBZ0lDQWdQai9BRm9FUUNBRFFqeUdJUVFnQTBJRWlFS0FnSUNBZ0lEQS8vOEFoQXdCQ3lBQ1VBUkFRZ0FNQVFzZ0JTQUNRZ0FnQTZkblFTQnFJQUpDSUlpblp5QUNRb0NBZ0lBUVZCc2lCa0V4YWhBNUlBVXBBd0FoQkNBRktRTUlRb0NBZ0lDQWdNQUFoVUdNK0FBZ0JtdXRRakNHaEFzaEFpQUFJQVEzQXdBZ0FDQUNJQU5DZ0lDQWdJQ0FnSUNBZjRPRU53TUlJQVZCRUdva0FBdGpBZ0YvQVg0akFFRVFheUlDSkFBZ0FBSitJQUZGQkVCQ0FBd0JDeUFDSUFHdFFnQWdBV2NpQVVIUkFHb1FPU0FDS1FNSVFvQ0FnSUNBZ01BQWhVR2VnQUVnQVd1dFFqQ0dmQ0VESUFJcEF3QUxOd01BSUFBZ0F6Y0RDQ0FDUVJCcUpBQUx0QU1DQTM4QmZpTUFRU0JySWdNa0FBSkFJQUZDLy8vLy8vLy8vLy8vQUlNaUJVS0FnSUNBZ0lEQXdEOTlJQVZDZ0lDQWdJQ0F3TC9BQUgxVUJFQWdBVUlaaUtjaEJDQUFVQ0FCUXYvLy93K0RJZ1ZDZ0lDQUNGUWdCVUtBZ0lBSVVSdEZCRUFnQkVHQmdJQ0FCR29oQWd3Q0N5QUVRWUNBZ0lBRWFpRUNJQUFnQlVLQWdJQUloWVJDQUZJTkFTQUNJQVJCQVhGcUlRSU1BUXNnQUZBZ0JVS0FnSUNBZ0lEQS8vOEFWQ0FGUW9DQWdJQ0FnTUQvL3dCUkcwVUVRQ0FCUWhtSXAwSC8vLzhCY1VHQWdJRCtCM0loQWd3QkMwR0FnSUQ4QnlFQ0lBVkMvLy8vLy8vL3Y3L0FBRllOQUVFQUlRSWdCVUl3aUtjaUJFR1IvZ0JKRFFBZ0EwRVFhaUFBSUFGQy8vLy8vLy8vUDROQ2dJQ0FnSUNBd0FDRUlnVWdCRUdCL2dCckVEa2dBeUFBSUFWQmdmOEFJQVJyRURzZ0F5a0RDQ0lBUWhtSXB5RUNJQU1wQXdBZ0F5a0RFQ0FES1FNWWhFSUFVcTJFSWdWUUlBQkMvLy8vRDRNaUFFS0FnSUFJVkNBQVFvQ0FnQWhSRzBVRVFDQUNRUUZxSVFJTUFRc2dCU0FBUW9DQWdBaUZoRUlBVWcwQUlBSkJBWEVnQW1vaEFnc2dBMEVnYWlRQUlBSWdBVUlnaUtkQmdJQ0FnSGh4Y3I0TEdBQkJ2NG9VTEFBQVFRQklCRUJCdElvVUtBSUFFRFFMQzJvQkEzOGdBUkF2SWdKQjhQLy8vd2RKQkVBQ1FDQUNRUXBOQkVBZ0FDQUNPZ0FMSUFBaEF3d0JDeUFDUVE5eVFRRnFJZ1FRVkNFRElBQWdCRUdBZ0lDQWVISTJBZ2dnQUNBRE5nSUFJQUFnQWpZQ0JBc2dBeUFCSUFJUVN5QUNha0VBT2dBQUR3c1FWUUFMTmdFQmYwRUJJQUFnQUVFQlRSc2hBQUpBQTBBZ0FCQXpJZ0VOQVVId3VCUW9BZ0FpQVFSQUlBRVJDUUFNQVFzTEVCMEFDeUFCQ3dnQVFhZy9FRmdBQ3hnQVFhK0tGQ3dBQUVFQVNBUkFRYVNLRkNnQ0FCQTBDd3NJQUVHN1BCQllBQXRoQVFOL1FRZ1FXU0lCUWF5Q0ZEWUNBQ0FCUWRpQUZEWUNBQ0FBRUM4aUFrRU5haEJVSWdOQkFEWUNDQ0FESUFJMkFnUWdBeUFDTmdJQUlBRWdBMEVNYWlBQUlBSkJBV29RS3pZQ0JDQUJRWWlCRkRZQ0FDQUJRYWlCRkVFQ0VBRUFDdzRBSUFCQjBBQnFFRE5CMEFCcUN6SUJBbjhnQUVIWWdCUTJBZ0FnQUNnQ0JFRU1heUlCSUFFb0FnaEJBV3NpQWpZQ0NDQUNRUUJJQkVBZ0FSQTBDeUFBQy9RTEFnVi9CWDRqQUVFd2F5SUZKQUFDUUVIWUFCQXpJZ1JGRFFBZ0JFRUVheTBBQUVFRGNVVU5BQ0FFUVFCQjJBQVFLUm9MSUFSQzF1dUM3dXI5aWZYZ0FEY0RDQ0FFUXZucTBORG55YUhrNFFBM0F5QWdCRUxQMXRPKzBzZXIyVUkzQXhBQ2ZnSkFJQUVvQWdBZ0FTQUJMUUFMSWdQQVFRQklJZ1liSWdKRkRRQWdCQ0FCS0FJRUlBTWdCaHNpQWEwaUN6Y0RBQUpBSUFGQkgwMEVRQ0FFUVNocUlBSWdBUkFyR2lBRUlBUW9Ba2dnQVdvMkFraEMxdXVDN3VyOWlmWGdBQ0VJUXMvVzA3N1N4NnZaUWlFSlF2bnEwTkRueWFIazRRQWhDZ3dCQ3lBQklBSnFJUU1DUUNBQlFTQklCRUJDMXV1Qzd1cjlpZlhnQUNFSVFzL1cwNzdTeDZ2WlFpRUpRdm5xME5EbnlhSGs0UUFoQ2d3QkN5QURRU0JySVFGQzF1dUM3dXI5aWZYZ0FDRUlRdm5xME5EbnlhSGs0UUFoQ2tMUDF0Tyswc2VyMlVJaENRTkFJQUlwQUJoQ3o5YlR2dExIcTlsQ2ZpQUtmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZpRUtJQUlwQUJCQ3o5YlR2dExIcTlsQ2ZpQUhmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZpRUhJQUlwQUFoQ3o5YlR2dExIcTlsQ2ZpQUpmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZpRUpJQUlwQUFCQ3o5YlR2dExIcTlsQ2ZpQUlmRUlmaVVLSGxhK3ZtTGJlbTU1L2ZpRUlJQUpCSUdvaUFpQUJUUTBBQ3lBRUlBbzNBeUFnQkNBSE53TVlJQVFnQ1RjREVDQUVJQWczQXdnTElBSWdBMDhOQUNBRVFTaHFJQUlnQXlBQ2F5SUJFQ3NhSUFRZ0FUWUNTQXNnQzBJZ1ZBMEFJQWxDQjRrZ0NFSUJpWHdnQjBJTWlYd2dDa0lTaVh3Z0NFTFAxdE8rMHNlcjJVSitRaCtKUW9lVnI2K1l0dDZibm45K2hVS0hsYSt2bUxiZW01NS9ma0tkbzdYcWc3R05pdm9BZlNBSlFzL1cwNzdTeDZ2WlFuNUNINGxDaDVXdnI1aTIzcHVlZjM2RlFvZVZyNitZdHQ2Ym5uOStRcDJqdGVxRHNZMksrZ0I5SUFkQ3o5YlR2dExIcTlsQ2ZrSWZpVUtIbGErdm1MYmVtNTUvZm9WQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBnQ2tMUDF0Tyswc2VyMlVKK1FoK0pRb2VWcjYrWXR0NmJubjkraFVLSGxhK3ZtTGJlbTU1L2ZrS2RvN1hxZzdHTml2b0FmUXdCQ3lBSFFzWFAyYkx4NWJycUozd0xJUWNnQkVFb2FpRUNJQWNnQzN3aEJ3SkFJQXVuUVI5eElnRkJDRWtFUUNBQ0lRTU1BUXNEUUNBQ0tRQUFRcy9XMDc3U3g2dlpRbjVDSDRsQ2g1V3ZyNWkyM3B1ZWYzNGdCNFZDRzRsQ2g1V3ZyNWkyM3B1ZWYzNUNuYU8xNm9PeGpZcjZBSDBoQnlBQ1FRaHFJZ01oQWlBQlFRaHJJZ0ZCQjBzTkFBc0xJQUZCQkU4RVFDQUROUUFBUW9lVnI2K1l0dDZibm45K0lBZUZRaGVKUXMvVzA3N1N4NnZaUW41QytmUGQ4Wm4ybWFzV2ZDRUhJQU5CQkdvaEF5QUJRUVJySVFFTEFrQWdBVVVOQUFKL0lBRkJBWEZGQkVBZ0F5RUNJQUVNQVFzZ0EwRUJhaUVDSUFNeEFBQkN4Yy9ac3ZIbHV1b25maUFIaFVJTGlVS0hsYSt2bUxiZW01NS9maUVISUFGQkFXc0xJUU1nQVVFQlJnMEFBMEFnQWpFQUFVTEZ6OW15OGVXNjZpZCtJQUl4QUFCQ3hjL1pzdkhsdXVvbmZpQUhoVUlMaVVLSGxhK3ZtTGJlbTU1L2ZvVkNDNGxDaDVXdnI1aTIzcHVlZjM0aEJ5QUNRUUpxSVFJZ0EwRUNheUlERFFBTEN5QUVFRFFnQlNBSFFpR0lJQWVGUXMvVzA3N1N4NnZaUW40aUIwSWRpQ0FIaFVMNTg5M3htZmFacXhaK0lnZENJSWdnQjRVM0F3QWpBRUVRYXlJRUpBQWdCQ0FGTmdJTUlBVkJFR29oQWtFQUlRTWpBRUdRQVdzaUFTUUFBMEFnQVNBRGFpQURRYWlhRTJvdEFBQTZBQUFnQTBFQmFpSURRWkFCU1EwQUN5QUJJQUkyQWl3Z0FTQUNOZ0lVSUFGQi8vLy8vd2RCZmlBQ2F5SURJQU5CLy8vLy93ZFBHeUlETmdJd0lBRWdBaUFEYWlJR05nSWNJQUVnQmpZQ0VDQUJRZUk2SUFVUXp3RWdBd1JBSUFFb0FoUWlBeUFESUFFb0FoQkdhMEVBT2dBQUN5QUJRWkFCYWlRQUlBUkJFR29rQUNBQ0VDOGlBa0h3Ly8vL0Iwa0VRQUpBSUFKQkNrMEVRQ0FBSUFJNkFBc01BUXNnQWtFUGNrRUJhaUlERUZRaEFTQUFJQU5CZ0lDQWdIaHlOZ0lJSUFBZ0FUWUNBQ0FBSUFJMkFnUWdBU0VBQ3lBQUlBVkJFR29nQWhBcklBSnFRUUE2QUFBZ0JVRXdhaVFBRHdzUVZRQUx1Z2dCQW45QnJPNFNRZGp1RWtHSTd4SkI2UFFTUWVqekVrRUVRZWp6RWtFRlFlanpFa0VHUWJnNVFldnpFa0VIRUFOQnJPNFNRUUZCbU84U1FlanpFa0VJUVFrUUJFRUlFRlFpQUVFQU5nSUVJQUJCQ2pZQ0FFR3M3aEpCaGNNQVFRTkJuTzhTUWFqdkVrRUxJQUJCQUVFQUVBVkJCQkJVSWdCQklEWUNBRUVFRUZRaUFVRWdOZ0lBUWF6dUVrSHd3QUJCcFA0VFFhM3ZFa0VNSUFCQnBQNFRRYkh2RWtFTklBRVFCa0VFRUZRaUFFRW9OZ0lBUVFRUVZDSUJRU2cyQWdCQnJPNFNRY1RCQUVHay9oTkJyZThTUVF3Z0FFR2svaE5Cc2U4U1FRMGdBUkFHUVFRUVZDSUFRVEEyQWdCQkJCQlVJZ0ZCTURZQ0FFR3M3aEpCcHp4QnBQNFRRYTN2RWtFTUlBQkJwUDRUUWJIdkVrRU5JQUVRQmtFRUVGUWlBRUU0TmdJQVFRUVFWQ0lCUVRnMkFnQkJyTzRTUVpjOFFhVCtFMEd0N3hKQkRDQUFRYVQrRTBHeDd4SkJEU0FCRUFaQkJCQlVJZ0JCd0FBMkFnQkJCQkJVSWdGQndBQTJBZ0JCck80U1FaODlRYVQrRTBHdDd4SkJEQ0FBUWFUK0UwR3g3eEpCRFNBQkVBWkJCQkJVSWdCQnlBQTJBZ0JCQkJCVUlnRkJ5QUEyQWdCQnJPNFNRY1U3UWFUK0UwR3Q3eEpCRENBQVFhVCtFMEd4N3hKQkRTQUJFQVpCQkJCVUlnQkIwQUEyQWdCQkJCQlVJZ0ZCMEFBMkFnQkJyTzRTUVpBOVFhVCtFMEd0N3hKQkRDQUFRYVQrRTBHeDd4SkJEU0FCRUFaQkJCQlVJZ0JCMkFBMkFnQkJCQkJVSWdGQjJBQTJBZ0JCck80U1FhNDlRYVQrRTBHdDd4SkJEQ0FBUWFUK0UwR3g3eEpCRFNBQkVBWkJCQkJVSWdCQmtBRTJBZ0JCQkJCVUlnRkJrQUUyQWdCQnJPNFNRZUhBQUVHay9oTkJyZThTUVF3Z0FFR2svaE5Cc2U4U1FRMGdBUkFHUVFRUVZDSUFRWWdCTmdJQVFRUVFWQ0lCUVlnQk5nSUFRYXp1RWtIb3dBQkJwUDRUUWEzdkVrRU1JQUJCcFA0VFFiSHZFa0VOSUFFUUJrRUVFRlFpQUVIZ0FEWUNBRUVFRUZRaUFVSGdBRFlDQUVHczdoSkIxOEVBUWFUK0UwR3Q3eEpCRENBQVFhVCtFMEd4N3hKQkRTQUJFQVpCQkJCVUlnQkI2QUEyQWdCQkJCQlVJZ0ZCNkFBMkFnQkJyTzRTUVlzOVFhVCtFMEd0N3hKQkRDQUFRYVQrRTBHeDd4SkJEU0FCRUFaQkJCQlVJZ0JCOEFBMkFnQkJCQkJVSWdGQjhBQTJBZ0JCck80U1FkTTlRYVQrRTBHdDd4SkJEQ0FBUWFUK0UwR3g3eEpCRFNBQkVBWkJCQkJVSWdCQitBQTJBZ0JCQkJCVUlnRkIrQUEyQWdCQnJPNFNRYzA5UWFUK0UwR3Q3eEpCRENBQVFhVCtFMEd4N3hKQkRTQUJFQVpCQkJCVUlnQkJnQUUyQWdCQkJCQlVJZ0ZCZ0FFMkFnQkJyTzRTUWFjK1FhVCtFMEd0N3hKQkRDQUFRYVQrRTBHeDd4SkJEU0FCRUFaQkJCQlVJZ0JCbUFFMkFnQkJCQkJVSWdGQm1BRTJBZ0JCck80U1FmWTZRY0Q5RTBINDh4SkJEaUFBUWNEOUUwR1E5QkpCRHlBQkVBWkJCQkJVSWdCQm5BRTJBZ0JCQkJCVUlnRkJuQUUyQWdCQnJPNFNRZnpBQUVIQS9STkIrUE1TUVE0Z0FFSEEvUk5Ca1BRU1FROGdBUkFHQ3cwQUlBQW9BZ0JCQkdzb0FnQUxCQUFnQUF2UUFRRURmeUFBQkVBZ0FFR0k3aEkyQWdBZ0FDZ0NHQkJvSUFCQmxQQVNOZ0lBQWtCQjZJc1VLQUlBSWdKQjVJc1VSZzBBSUFJaEFRSkFBMEFDUUNBQktBSUVJUU1nQVNnQ0NDQUFSZzBBSUFNaUFVSGtpeFJIRFFFTUFnc0xJQUVvQWdBaUFpQUROZ0lFSUFFb0FnUWdBallDQUVIc2l4UkI3SXNVS0FJQVFRRnJOZ0lBSUFFUU5FSG9peFFvQWdBaEFnc2dBa0hraXhSR0RRQkJBQ0VCQTBBZ0FpZ0NDQ0FCTmdJUUlBRkJBV29oQVNBQ0tBSUVJZ0pCNUlzVVJ3MEFDd3RCOElzVVFRRTZBQUFnQUJBMEN3c0hBQ0FBRVE0QUM0TUJBUU4vUWZnSUVGUWlBVUVCT2dBRVFRd1FWQ0lBUWVTTEZEWUNCQ0FBSUFFMkFnZ2dBRUhraXhRb0FnQWlBallDQUNBQ0lBQTJBZ1JCNUlzVUlBQTJBZ0JCN0lzVVFleUxGQ2dDQUNJQVFRRnFOZ0lBSUFFZ0FEWUNFRUh3aXhSQkFUb0FBQ0FCUVJocUlnQkNBRGNEQUNBQlFZanVFallDQUNBQklBQTJBaFFnQVF2ZVRRSUlmMVY4SXdCQjhBaHJJZ0lrQUNBQktBSUFRZUhEQUJBSUlnTVFCeUVISUFNUUFnSkFBbjhnQjBIdzlSSWdBa0VZYWhBSklncEVBQUFBQUFBQThFRmpJQXBFQUFBQUFBQUFBQUJtY1FSQUlBcXJEQUVMUVFBTElna29BZ0FpQmtIdy8vLy9CMDhOQUNBQ0tBSVlJUVVDUUNBR1FRcE5CRUFnQWlBR09nQ1RDQ0FDUVlnSWFpRUREQUVMSUFaQkQzSkJBV29pQkJCVUlRTWdBaUFFUVlDQWdJQjRjallDa0FnZ0FpQUROZ0tJQ0NBQ0lBWTJBb3dJQ3lBRElBbEJCR29nQmhBcklBWnFRUUE2QUFBZ0JSQUtJQWNRQWlBQktBSUFRYUREQUJBSUlnTVFCeUVISUFNUUFnSi9JQWRCOFBVU0lBSkJHR29RQ1NJS1JBQUFBQUFBQVBCQll5QUtSQUFBQUFBQUFBQUFabkVFUUNBS3F3d0JDMEVBQ3lJSktBSUFJZ1pCOFAvLy93ZFBEUUFnQWlnQ0dDRUZBa0FnQmtFS1RRUkFJQUlnQmpvQWh3Z2dBa0g4QjJvaEF3d0JDeUFHUVE5eVFRRnFJZ1FRVkNFRElBSWdCRUdBZ0lDQWVISTJBb1FJSUFJZ0F6WUMvQWNnQWlBR05nS0FDQXNnQXlBSlFRUnFJQVlRS3lBR2FrRUFPZ0FBSUFVUUNpQUhFQUlnQVNnQ0FFSG13Z0FRQ0NJREVBY2hCQ0FERUFJZ0JFR2svaE1nQWtFWWFpSUZFQWtoR3lBQ0tBSVlFQW9nQkJBQ0lBRW9BZ0JCM01FQUVBZ2lBeEFISVFRZ0F4QUNJQVJCcFA0VElBVVFDU0VnSUFJb0FoZ1FDaUFFRUFJZ0FTZ0NBRUh5d2dBUUNDSURFQWNoQkNBREVBSWdCRUdrL2hNZ0JSQUpJU3NnQWlnQ0dCQUtJQVFRQWlBQktBSUFRZExEQUJBSUlnTVFCeUVFSUFNUUFpQUVRYVQrRXlBQ1FSaHFFQWtoRnlBQ0tBSVlFQW9nQkJBQ0lBRW9BZ0JCdjhJQUVBZ2lBeEFISVFRZ0F4QUNJQVJCcFA0VElBSkJHR29RQ1NFUUlBSW9BaGdRQ2lBRUVBSWdBU2dDQUVIcHdRQVFDQ0lERUFjaEJDQURFQUlnQkVHay9oTWdBa0VZYWhBSklTTWdBaWdDR0JBS0lBUVFBaUFCS0FJQVFZekRBQkFJSWdNUUJ5RUVJQU1RQWlBRVFhVCtFeUFDUVJocUVBa2hVU0FDS0FJWUVBb2dCQkFDSUFFb0FnQkJyOE1BRUFnaUF4QUhJUVFnQXhBQ0lBUkJ3UDBUSUFVUUNTRVJJQUlvQWhnUUNpQUVFQUlnQVNnQ0FFRyt3d0FRQ0NJREVBY2hCeUFERUFJQ2Z5QUhRZkQxRWlBRkVBa2lDa1FBQUFBQUFBRHdRV01nQ2tRQUFBQUFBQUFBQUdaeEJFQWdDcXNNQVF0QkFBc2lDU2dDQUNJSVFmRC8vLzhIU1NFREFuOGdFWmxFQUFBQUFBQUE0RUZqQkVBZ0Vhb01BUXRCZ0lDQWdIZ0xJUVlnQTBVTkFDQUNLQUlZSVFVQ1FDQUlRUXBOQkVBZ0FpQUlPZ0Q3QnlBQ1FmQUhhaUVEREFFTElBaEJEM0pCQVdvaUJCQlVJUU1nQWlBRVFZQ0FnSUI0Y2pZQytBY2dBaUFETmdMd0J5QUNJQWcyQXZRSEN5QURJQWxCQkdvZ0NCQXJJQWhxUVFBNkFBQWdCUkFLSUFjUUFpQUJLQUlBUWV2REFCQUlJZ01RQnlFRUlBTVFBaUFFUWN6OUV5QUNRUmhxSWdVUUNTRWtJQUlvQWhnUUNpQUVFQUlnQVNnQ0FFSFh3Z0FRQ0NJREVBY2hCQ0FERUFJZ0JFSE0vUk1nQlJBSklTd2dBaWdDR0JBS0lBUVFBaUFCS0FJQVFabkRBQkFJSWdNUUJ5RUVJQU1RQWlBRVFhVCtFeUFGRUFraERpQUNLQUlZRUFvZ0JCQUNJQUVvQWdCQjBjSUFFQWdpQXhBSElRUWdBeEFDSUFSQnBQNFRJQVVRQ1NFWUlBSW9BaGdRQ2lBRUVBSWdBU2dDQUVHUndnQVFDQ0lERUFjaEJDQURFQUlnQkVHay9oTWdCUkFKSVJFZ0FpZ0NHQkFLSUFRUUFpQUJLQUlBUWFIQ0FCQUlJZ0VRQnlFRElBRVFBaUFEUWFUK0V5QUZFQWtoQ2lBQ0tBSVlFQW9nQXhBQ0FuOGdKRVFBQUFBQUFBRHdRV01nSkVRQUFBQUFBQUFBQUdaeEJFQWdKS3NNQVF0QkFBc2hDRUhZaXhRdEFBQkZCRUFnQWlnQy9BY2hCeUFDTEFDSENDRUpJQUlvQW9nSUlRVWdBaXdBa3dnaEJDQUNLQUx3QnlFRElBSXNBUHNISVFFZ0FrRUFOZ0trQ0NBQ1FRQTJBaVFnQWlBSU5nSVlJQUlnQXlBQ1FmQUhhaUFCUVFCSUd5MEFBRG9BdUFZQ1FBSkFJQUpCdVFacUlnTWdCU0FDUVlnSWFpQUVRUUJJR3lJRWMwRURjUVJBSUFRdEFBQWhBUXdCQ3lBRVFRTnhCRUFEUUNBRElBUXRBQUFpQVRvQUFDQUJSUTBESUFOQkFXb2hBeUFFUVFGcUlnUkJBM0VOQUFzTElBUW9BZ0FpQVVGL2N5QUJRWUdDaEFocmNVR0FnWUtFZUhFTkFBTkFJQU1nQVRZQ0FDQUVLQUlFSVFFZ0EwRUVhaUVESUFSQkJHb2hCQ0FCUVlHQ2hBaHJJQUZCZjNOeFFZQ0Jnb1I0Y1VVTkFBc0xJQU1nQVRvQUFDQUJRZjhCY1VVTkFBTkFJQU1nQkMwQUFTSUJPZ0FCSUFOQkFXb2hBeUFFUVFGcUlRUWdBUTBBQ3dzZ0FnSi9JQ3hFQUFBQUFBQUE4RUZqSUN4RUFBQUFBQUFBQUFCbWNRUkFJQ3lyREFFTFFRQUxOZ0xJQmlBQ0lBYkFOZ0xFQmlBQ0lCZzVBL2dGSUFJZ0Nqa0Q2QVVnQWlBUk9RUHdCU0FDQW44Z0RwbEVBQUFBQUFBQTRFRmpCRUFnRHFvTUFRdEJnSUNBZ0hnTE5nTE1CaUFDSUJzNUE3QUdJQUlnSXprRHFBWWdBaUFRT1FPZ0JpQUNJQ0E1QTVnR0lBSWdGemtEa0FZZ0FpQXJPUU9JQmlBQ0lBSkJsQWhxTmdJUUlBSWdBa0dvQ0dvMkFoUWdBaUFDUWFRSWFqWUNBQ0FDSUFKQm9BaHFOZ0lFSUFJZ0FrR2NDR28yQWdnZ0FpQUNRWmdJYWpZQ0RDQUhJQUpCL0FkcUlBbEJBRWdiUWVNL0lBSVFhUm9nQWlBQ0tBS1lDTGRFQUFBQUFBQWdyRUNpSUFJb0FwUUl0MFFBQUFBQUFBQk9RS0lnQWlzRHFBaWdvRVFBQUFBQUFCajFRS01pR1RrRDRBVWdBaUFDS0FLZ0NDSUJRWk1DYkxkRUFBQUFBQUFBSWtDam5DQUNLQUtrQ0xjaUNrUUFBQUFBQVBCMlFLSWdBVUVKYXJkRUFBQUFBQUFBS0VDam5DQUtvRVFBQUFBQUFBQWNRS0pFQUFBQUFBQUEwRCtpbktHZ0lBSW9BcHdJdDZCRUFBQUFnTFZDT2tHZ0loczVBOWdGSUJtWlJBQUFBQUFBQVBBL1pBUkFJQUlnR1NBWm5DSUtvU0laT1FQZ0JTQUNJQW9nRzZBaUd6a0QyQVVMSUFKQkFEWUNMQ0FDS3dPd0JpRXJJQUlyQTVBR0lSY2dBaXNEaUFZaEVDQUNLd09vQmlFaklBSXJBK2dGSVJnZ0Fpc0RtQVloSFNBQ0t3T2dCaUVSSUFJckEvQUZJUW9nQWlnQ0dDRUJJQUlyQS9nRklUTWdBa0V3YWtFQVFjd0JFQ2thSUFKQmdBSnFRUUJCdUFNUUtSb2dBa0tCdVpDU3pMYkMyVDgzQTZnSElBSkNqYSs2azdIRXV0ekFBRGNEb0FjZ0FrS0FnSUNBb0lTVmpNRUFOd09ZQnlBQ1FyQ3J0L1drb01xeHYzODNBOGdISUFKQ2hJYUc0TG5rd2QyK2Z6Y0R3QWNnQWtMQjRLN3VuYmpQNHI1L053TzRCeUFDUXRHTmlzdVJuTytvUHpjRHNBY2dBa0w5d3Z6Um1wbTVsY0FBTndPUUJ5QUNRZWtBT2dBb0lBSWdNemtEK0FVZ0FpQUJOZ0lZSUFJZ0NrUmlKSTdDbmlRVVFhTTVBL0FGSUFJZ0VVUTVuVktpUnQrUlA2SWlKVGtEb0FZZ0FpQWRPUU9ZQmlBQ0lCaEVLdU9YUVg5VHZFR2pPUVBvQlNBQ0lDTkVPWjFTb2tiZmtUK2lJaXc1QTZnR0lBSWdFRVE1blZLaVJ0K1JQNklpUERrRGlBWWdBaUFYUkRtZFVxSkczNUUvb2lJbU9RT1FCaUFDSUN0RStNRmpHdHlsYkVDakloRTVBN0FHSUFKQ0FEY0Q4QVlnQWtJQU53UG9CaUFDUWdBM0ErQUdJQUpDQURjRGlBY2dBa0lBTndQWUJpQUNRZ0EzQTRBSElBSkIrZHdCT3dBcElBSkJBRFlDSkNBQ0lEd1FhaUlhSUJxaUloUkVBQUFBQUFBQUZNQ2lSQUFBQUFBQUFQQS9vQ0lRbWlBVW9TQVVvU0l0T1FNNElBSWdHeUFab0VRQUFBREFnSkJDd2FBaUkwUUFBQURBZ0pCQ1FhQkVBQUFBZ0N5MFFzR2dSQUFBQUFDZzFlRkFveUlLUkFBREdrZWRrK2RCb2lBS0lBcEV6c25tQlRNQjJyNmlvaUFLb2lBS0lBcEU2M1FnNjZuVnR6K2lvcUNnUkcyUVNjYm9idkJBb0VRNW5WS2lSdCtSUDZKRUFBQUFBQUFBYmtDalJCZ3RSRlQ3SVJsQUVFd2lDa1FZTFVSVSt5RVpRS0FnQ2lBS1JBQUFBQUFBQUFBQVl4czVBNmdFSUFJZ0VTQVVSQUFBQUFBQUFBaEFva1FBQUFBQUFBRHd2NkJFT3NvVHBsR2JTaitpUkFBQUFBQUFBUEEvSUIwZ0hhSWlEYUVpTGlBdW55SkpvcU1pQ2tTQkhFVEN0QW16UHlBUm8wUlZWVlZWVlZYbFB4QkpJaEZFQUFBQUFBQUE4RDhnQ2lBUklCR2lveUlLSUFxaW9TQUtJQW9nQ2tRQUFBQUFBTUJnUUtLaVJBQUFBQUFBUUZSQW8wUlZWVlZWVlZYVlA2Q2lvYUlpQ2lBS29xTkVBQUFBQUFBQThEK2dveUlUT1FQUUJpQUNJQk5FZlNFL3FzbmtLa0NpUkZWVlZWVlZWZVcvRUVraUNqa0R1QVVnQWlBS0lCMUVBQUFBQUFBQThEK2dva1FBQUFBQUFBRHd2NkE1QThnRklBSWdDa1FBQUFBQUFBRHdQeUFkb1NJWW9rUUFBQUFBQUFEd3Y2QTVBOEFGUklFY1JNSzBDYk0vSUJPalJGVlZWVlZWVmVVL0VFa2hIaUE4RUdzaEZRSkFJQzVFQUFBQUFBQUFBQUJtSUJORUFBQUFBQUFBQUFCbWNrVU5BQ0F1SUI2aUlnb2dDcUloRVNBQ0lCZ2dIcUlpQ2tTYjFyOWFTSTN3UDJNMkFpd0NmQ0FLUkFBQUFBQUFBUEMvb0VTTmwyNFNJK3E0UUtJaUNrUUFBQUFBQUlCalFHTkZCRUJFQUFBQUFBQ0FVMEFoSVVTTU5NRzh4U1lnUGd3QkMwUUFBQUFBQUFCZVFFUUFBQUFBQUFBMFFDQUtSQUFBQUFBQWdGUEFvQ0FLUkFBQUFBQUFnRmhBWXhzaUlhRkVqWmR1RWlQcXVFQ2pJZ29nQ2lBS0lBcWlvcUlMSVFvZ0FpQWVJQjJpUkFBQUFBQUFBUEEvSUI0Z0lVU05sMjRTSStxNFFLTkVBQUFBQUFBQThEK2dJbEtob3lJM29pSXZPUU40SUFJZ0V5QUtJRGRFQUFBQUFBQUFFRUFRU2FJaURrUUFBQUFBQUFEd1B5QXZJQytpSWh5aG1TSWJSQUFBQUFBQUFBeEFFRW1qSWpDaUlCNGdMeUFkb2lJaUlCeEVBQUFBQUFBQUVFQ2dvaUFjUkFBQUFBQUFBUGcvb2tRQUFBQUFBQUR3UDZDZ29pQWNSQUFBQUFBQUFBaEFvaUFjUkFBQUFBQUFBQ0JBb0tKRUFBQUFBQUFBSUVDZ0lDMGdOMFE2eWhPbVVaczZQNklnRzZPaW9xQ2lJRE9pSWlBNUEwQWdBaUFsRUdvaVBTQWRSQzFESE92aU5oby9aQ0lCQkh3Z0ZTQVRJRGNnRGtRQUFBQUFBQUFBd0tLaVJMRFZyVTRDS1dPL29xS2lJQjJqQlVRQUFBQUFBQUFBQUFzZ002S2lPUU9JQVNBQ0lDSWdIS0lnSENBaW9FUUFBQUFBQUFBR1FLSkVBQUFBQUFBQThEK2dvQ0F1SUI0Z01DQXdvS0tpb2prRFVDQUNJRWxFQUFBQUFBQUE4RDhnRWFNaUpDQVRJQ1JFT3NvVHBsR2JXaitpb2lJclJBQUFBQUFBQU9BL29pSUtSTkdHWWhuaHZGRS9vcUlpR0VRQUFBQUFBQUN3UDZJaUVhSWdGQ0FVb2lJWFJBQUFBQUFBSUdGQW9pQVVSQUFBQUFBQWdGUEFva1FBQUFBQUFBQXFRS0Nnb2lCSklBcWlJQzJpSUJPZ29Ea0QwQUVnQWtRQUFBQUFBQUR3UHlBVW9TSUtPUVBBQVNBQ0lDNGdIaUFUSUJPZ0lEQ2lvcUlnTjBUUmhtSVo0YnhSdjZJZ0hpQWJvcU1nTFVRQUFBQUFBQUFJd0tJZ0hDQWlSQUFBQUFBQUFPQy9va1FBQUFBQUFBRDRQNkNpUkFBQUFBQUFBUEEvSUNJZ0lxQ2hvS0lnSlNBbG9CQnFJQXBFQUFBQUFBQUE2RCtpSUJ3Z0hLQWlDaUFjUkFBQUFBQUFBUEEvb0NBaW9xR2lvcUNpSUM4Z0hFUUFBQUFBQUFEZ1A2SkVBQUFBQUFBQUFFQ2dvaUFLUkFBQUFBQUFBT0Evb0NBZG9xQ2dvamtEU0NBQ0lCTWdKQ0FrUk5ScVFXS3hWcWsrb3FLaUlnb2dGMFFBQUFBQUFJQklRS0lnRkVRQUFBQUFBQUJDd0tKRUFBQUFBQUFBQ0VDZ29LSWdLMFFBQUFBQUFBRGd2NklnRUtJZ0YwUUFBQUFBQUxCNFFLSWdGRVFBQUFBQUFJQmN3S0pFQUFBQUFBQUFIRUNnb0NBUm9xQ2dJbG81QTRBQklBSWdHRVFBQUFBQUFBRGdQNklnRkVRQUFBQUFBQUF6d0tKRUFBQUFBQUFBRUVDZ29pQVVSQUFBQUFBQUFCekFva1FBQUFBQUFBQUlRS0FnQ2lBS29LS2dJQnFpSUJvZ0s1cWlJZ3FnSWxzNUE5Z0JJQUlnRGtSVlZWVlZWVlhsdjZJZ002SWdJcU5FQUFBQUFBQUFBQUFnQVJzNUErZ0JJQUlnSUVRQUFBQUFBQUQ0UDZJNUE2QUJJQUlnTEJCck9RT1FBU0FDSUJWRXNOV3RUZ0lwVXoraU9RTXdJQUlnRkVRQUFBQUFBQUFjUUtKRUFBQUFBQUFBOEwrZ09RUElBU0FDSUM1RUFBQUFBQUFBREVDaUlBcWlJQ0NpT1FQd0FTQUNJQnBFQUFBQUFBQUFGRUNpUkFBQUFBQUFBQWhBb0NBVlJMRFZyVTRDS1VNL29xSWdHa1FBQUFBQUFBRHdQNkFpUGtRYTM4UkJabU42UFNBK21VUWEzOFJCWm1ONlBXUWJvemtENEFFZ0FpQXZJQ3dRYXFKRUFBQUFBQUFBOEQrZ0lnb2dDaUFLb3FJNUEzQUNRRVFZTFVSVSt5RVpRQ0FUbzBRQUFBQUFBQ0JzUUdaRkRRQWdBa0VCTmdJc0lBSkI1QUE2QUNwRUNoUXRVTDFiN1Q4aFRFUm53M0ZMY1hiWlB5RWNJQ05FQUFBQUFHRFYwVUNnSWsxRUJLSzk5ZXRJVHIraVJCUjdhQjhyR0JKQW9FUVlMVVJVK3lFWlFCQk1JaEFRYXlJWVJHZkRjVXR4ZHRrL29rUUFBQUFBQUFEd1B5QVFFR29pQ2tTeWE1Ull4a1NpdjZKRWQreE9GSFE5N1QrZ0lpUWdKS0tobnlJc28wUUFBQUFBQUFEd1B5QVlSTnhHdktKLzliWS9vaUFzb3lJWElCZWlvWjhpRVNBS29pQVlJQmRFQ2hRdFVMMWI3VCtpb3FBUWJDRUtJQUpDQURjRHdBTWdBa0lBTndPNEF5QUNRZ0EzQTdBRElBSkNBRGNEcUFNZ0FrSUFOd09nQXlBbUVHb2hKeUFtRUdzaUdTQVJvaUFYSUNlaW9TRWpJQkVnSjZJZ0Z5QVpvcUFoR0NBZFJBQUFBQUFBQUM3QW9pRmNSQUFBQUFBQUFQQS9JQk9qSVYwZ0Zab2hVMFN6QlFnUGFHUHZ2eUUwUkhSZnpteFg2TWcvSVNGRWNZNEFsR29OeVQ0aFZFRUFJUUVnSlJCcklUOGdDaUJOUkhjOEt6NUYyMTgvb2tTZjFianRNVmNYUUtBaVhxQWdFS0VpQ2hCcklSRWdDaEJxSVFwQkFTRURBMEFnTGlBWklDRWdUS0lpRUtJZ05DQW5vcUVpUUNBOW9pQS9JQm9nTkNBWm9pQW5JQkNpb0NJb29pQVZJQ0VnSEtJaUphS2dJa0dpb0NJMVJBQUFBQUFBQUNoQW9pQTFvaUE5SUVHaUlFQWdQNktoSWpnZ09FUUFBQUFBQUFBSXdLS2lvQ0pLb2lCQUlFQ2lJRUVnUWFLZ1JBQUFBQUFBQUFoQW9pQU5JRXFpb0NJUUlCQ2dvQ0VpSUM0Z0lTQW5vaUFaSUV3Z05LSWlFS0tnSWtJZ1BhSWdQeUFhSUNjZ0VLSWdJU0Fab3FFaUxhSWdGU0FjSURTaUlpYWlvQ0pEb3FBaU9VUUFBQUFBQUFBNFFLSWlNQ0Exb2lBNElEMGdRNklnUWlBL29xRWlSRVFBQUFBQUFBQVl3S0lpT3FLZ0lpK2lJRUlnUUtJZ1FTQkRvcUJFQUFBQUFBQUFHRUNpSUEwZ0w2S2dJaEFnRUtDZ0lRNGdMaUE1UkFBQUFBQUFBQ2hBb2lBNW9pQkVJRVJFQUFBQUFBQUFDTUNpb3FBaVM2SWdRaUJDb2lCRElFT2lvRVFBQUFBQUFBQUlRS0lnRFNCTG9xQWlFQ0FRb0tBaE15QTFJRGlpSWhjZ09TQkVvaUlRb1NFYklEVWdSS0lnT0NBNW9xQWhJQ0FRSUJlZ0lTc2dRU0JUSUMyaUlCb2dKcUtnSWtXaUlGTWdLS0lnR2lBbG9xQWlSaUJEb3FCRUFBQUFBQUFBR0VDaUlBMGdOU0EvSUVXaUlrNmlJRDhnUnFJaUtTQTVvcUJFQUFBQUFBQUFPRUNpSURnZ1BTQkZvaUl4b2lBOUlFYWlJaWdnUktLZ1JBQUFBQUFBQUJqQW9xQ2lvQ0VYSUVJZ1JxSWdRQ0JGb3FCRUFBQUFBQUFBR01DaUlBMGdOU0F4b2lBb0lEbWlvRVFBQUFBQUFBQTR3S0lnUkNBcG9pQk9JRGlpb0VRQUFBQUFBQUFZd0tLZ29xQWhFQ0JCUkFBQUFBQUFBQmhBb2lCR29pQU5JRFZFQUFBQUFBQUFPRUNpSUNtaUlDZ2dPRVFBQUFBQUFBQVl3S0lpSnFLZ29xQWhKU0JEUkFBQUFBQUFBQmhBb2lCRm9pQU5JREFnVHFJZ01TQTZvcUNpb0NFdElFQkVBQUFBQUFBQUdNQ2lJRWFpSUEwZ05VUUFBQUFBQUFBNHdLSWdLS0lnS1NBbW9xQ2lvQ0V3SUVKRUFBQUFBQUFBR01DaUlFV2lJQTBnT1VRQUFBQUFBQUE0d0tJZ01hSWdUaUE2b3FDaW9DRW1JRndnU1NCZElGU2lJanFpSWpHaUlTZ2dPa1FBQUFBQUFBRGd2NklnU2FNaEtTQURRUUZ4QkVCRVN4bVQ1MndZb0Q0aFZDQXhJVHNnS3lGUElDQWhLaUFiSVJJZ015RlZJQTRoRmlBaUlWWWdKaUZYSUJBaER5QXdJVElnTFNGWUlCY2hEQ0FsSVZrZ1N5RWZJRW9oTmlBNklVY2dLU0ZJSUNnaFVDQVJJVFFnSkNGTUlCZ2hKeUFzSVJ3Z0NpRWhJQ01oR1NBdklRc0xJQUZCQVhFaEJFRUFJUU5CQVNFQklBUkZEUUFMSUFJZ1ZpQlZvU0JIUkFBQUFBQUFBQURBb2lJS29qa0RtQVFnQWlBV0lBcWlPUU9RQkNBQ0lESWdWNkVnU0NCSW9DSVdvamtEaUFRZ0FpQVBJQmFpT1FPQUJDQUNJQklnVUNCUW9DSVBvamtEMEFNZ0FpQXFJQStpT1FQSUF5QUNJRmtnV0tFZ1NFUUFBQUFBQUFBQXdLSWlENkk1QS9nRElBSWdEQ0FQb2prRDhBTWdBaUE3UkFBQUFBQUFBRExBb2tUMC9kUjQ2U2FSUDZJNUErZ0RJQUlnT3lBN29DSU1JRFlnSDZHaU9RUGdBeUFDSUF3Z0M2STVBOWdESUFJZ0tDQW9vQ0lNSUNDaU9RT1lBeUFDSURwRUFBQUFBQUFBQU1DaUlnOGdJaUF6b2FJNUEvZ0VJQUlnRHlBT29qa0Q4QVFnQWlBcElDbWdJZ3NnTUNBbW9hSTVBK2dFSUFJZ0N5QVFvamtENEFRZ0FpQU1JQnVpT1FPUUF5QUNJRTFFOXZDUUltV2RrVCtpUkNpL29PQzlCaGxBb0VRWUxVUlUreUVaUUJCTU9RT1lCU0FDSUUxRVVJdkJ3N1J2elQraVJGSEY2QlEvNFJKQW9DQmVvVVFZTFVSVSt5RVpRQkJNT1FPUUJTQUNJQTFFQUFBQUFBQUFJc0NpUkFBQUFBQUFBRFhBb0NJTElBcWlSUFQ5MUhqcEpwRS9vamtEb0FRZ0FpQUxJQStpUkFmT0dWSGFHNncvb2prRGdBVWdBaUFwUkFBQUFBQUFBQURBb2lJTElDVWdMYUdpT1FQWUJDQUNJQXNnRjZJNUE5QUVJQUlnTVVRQUFBQUFBQUF5d0tKRUI4NFpVZG9ickQraU9RUElCQ0FDSURFZ01hQWlDeUJLSUV1aG9qa0R3QVFnQWlBTElDK2lPUU80QkNBQ0lCTkVnS3p3dmxSeWRUOWpJQk5FVHdzckEzR1liRDlrY1VFQ0lCMUVBQUFBQUFBQTREOW1SU0FUUkNadzYyNmU2b0EvWmtVZ0UwU3hNNFhPYSt5Q1AyVkZjbklpQXhzaUFUWUMrQUVnQWlzRG1BWWhEaUFDS3dQWUFTRVJJQUlyQTVBR0lTQWdBaXNEMEFZaEZ5QUNLd1BRQVNFUUlBSXJBNmdHSVNvZ0Fpc0RxQVFoRWlBQ0t3T2dCaUVXSUFJckE2Z0hJUThnQWlBcFJNZ3BZOTVxd1NRL29pQXdJQ2Fnb2lCWElES2dJRWhFM2pXSi9tY042VDZpb3FBNUEvQUNJQUlnS0VUSUtXUGVhc0VrUDZJZ0s2SWdUeUJRUk40MWlmNW5EZWsrb3FLZ09RUFFBaUFDSURwRXlDbGozbXJCSkwraUlBMUVBQUFBQUFBQUdNQ2lJZ3NnSWlBem9FUUFBQUFBQUFBc3dLQ2dvaUFMSUZVZ1ZxQkVBQUFBQUFBQUxNQ2dvQ0JIUk40MWlmNW5EZW0rb3FLZ0lrYzVBL2dDSURGRXlDbGozbXJCSkQraUlFb2dTNkJFQUFBQUFBQUFHTUNnb2lFTVJBQUFBQUFBQUFBQUlUSWdPMFRlTlluK1p3M3BQcUlnSHlBMm9FUUFBQUFBQUFBWXdLQ2lJQm9DZkFKQUlEeEVvTmVzN3VuT3FqOWpEUUFnUEVTNmVZbXN2N1lJUUdRTkFDQllJRm1nSUVoRTNqV0ovbWNONmI2aW9nd0JDMFFBQUFBQUFBQUFBQXNnRlVRQUFBQUFBQUR3UHlBVlJBQUFBQUFBQUFBQVlodWpJaHVpb1NFTEFrQWdQRVNnMTZ6dTZjNnFQMk1OQUNBOFJMcDVpYXkvdGdoQVpBMEFJQ2xFeUNsajNtckJKTCtpSUNVZ0xhQ2lJVElMSUFJZ0d6a0RnQU1nQWlBTUlBdWdJaGs1QTRnRElCVkVBQUFBQUFBQUFBQmlCRUFnQWlBYklESWdGYU9nSWhzNUE0QURJQUlnR3BvZ0ZhTWdNcUlnR2FBaUdUa0RpQU1MSUJKRUFBQUFBQUFBQUFDZ1JCZ3RSRlQ3SVJsQUVFd2hHQ0FCUlEwQUlGb2dXNkFoRENBVElBK2pSRlZWVlZWVlZlVS9FRWtoSHdKOElBTkZCRUFnRFNBT29pRU1JQTVFZXhTdVIrRjY1TCtnUkNsY2o4TDFLTnkvb2lFTEFud2dEa1ROek16TXpNemtQMlVFUUNBTlJBclhvM0E5U2pCQW9pQU9SRmc1dE1oMmZpckFva1Foc0hKb2tlME1RS0NnSVJJZ0RFUUsxNk53dmUyUVFLSWdEVVNUR0FSV0RuU1p3S0lnRGtUWG8zQTlDaytLUUtKRUd5L2RKQVpOWXNDZ29LQWhJeUFNUkdpUjdYdy9uM05Bb2lBTlJDL2RKQWFCY1gzQW9pQU9SSkh0ZkQ4MVZtNUFva1JXRGkyeW5ZOUV3S0Nnb0NFbklBeEVVV3VhZDV4U1lrQ2lJQTFFS3FrVDBFVFVhc0NpSUE1RWd1TEhtTHR5VzBDaVJFY0RlQXNrNkRMQW9LQ2dJUmtnREVUMC9kUjQ2WkpqUUtJZ0RVVEZJTEJ5YUkxc3dLSWdEa1FwWEkvQzlWaGRRS0pFV21RNzMwOU5NOENnb0tBaE5DQU1SR1E3MzArTitLeEFvaUFOUkhucEpqRUliTGJBb2lBT1JHSVFXRG4wazZkQW9rVDAvZFI0NmFDQXdLQ2dvQXdCQ3lBTVJQWW9YSTlDUThoQW9pQU5SSHNVcmtleDQ5ZkFvaUFPUkVqaGVoUU9tYzlBb2tSN0ZLNUhZZnVyd0tDZ29DRWpJQXhFaTJ6bisrbUhyRUNpSUExRW9rVzI4LzBadk1DaUlBNUVEaTJ5bmErV3NrQ2lSS2FieENBd2M1REFvS0NnSVNjZ0RFVFp6dmRUNC8rU1FLSWdEVVExWHJwSnpIMml3S0lnRGtRU2c4REtvVXVZUUtKRWo4TDFLRnhwZGNDZ29LQWhHU0FNUk11aFJiWnplSk5Bb2lBTlJKcVptWm5aMzZMQW9pQU9SSlpEaTJ4bnU1aEFva1F2M1NRR2dhMTF3S0Nnb0NFMElBeEUzU1FHZ1pXcmNFQ2lJQTFFSzRjVzJjN0xmOENpSUE1RXlYYStueHE5ZEVDaVJIV1RHQVJXQmxMQW9LQ2dJUklnREVSeFBRclhJNWZlUUtJZ0RVUlN1QjZGNjJqcXdLSWdEa1FVcmtmaE9qemRRS0pFWEkvQzlhZ2R0TUNnb0tBZ0RrVGhlaFN1UitIbVAyUU5BQm9nRFVUaGVoU3VSMmV0UUtJZ0RrUUFBQUFBd0RpeXdLSkVLVnlQd3ZYaWxrQ2dvQXNoQ2lBTFJDL2RKQWFCbGRPL29DRVdBbndnRGtSbVptWm1abWJtUDJNRVFDQU1SR1ptWm1abTNiUkFvaUFOUlBZb1hJOWkyTURBb2lBT1JBQUFBQUJBVXJKQW9rUVgyYzczVTYyS3dLQ2dvQ0VoSUF4RUd5L2RKSWJadEVDaUlBMUVkdUNjRWJXVndNQ2lJQTVFMG05ZkI1N1lzVUNpUk9pazk0MnZ0WW5Bb0tDZ0lUc2dERVFwWEkvQ05hYTFRS0lnRFVUMktGeVBZclRCd0tJZ0RrU1B3dlVvbkh5elFLSkVaYXBnVk5LNWpNQ2dvS0FNQVFzZ0RFVHNVYmdlWFRuOFFLSWdEVVJ4UFFyWFc2QU53YUlnRGtUc1ViZ2VOODhFUWFKRWo4TDFLUHlLNDhDZ29LQWhJU0FNUk1QMUtGeHIzUUZCb2lBTlJEMEsxNk53NHhMQm9pQU9SSnFabVprUHVRcEJva1RaenZkVEEwWHB3S0Nnb0NFN0lBeEVwSEE5Q2grMCtrQ2lJQTFFbXBtWm1YRU9ETUdpSUE1RWo4TDFLSVM2QTBHaVJGeVB3dlY0amVMQW9LQ2dDeUZQSUFJZ0lDQXFJQ0Nnb0NBWW9TQVlvVVFZTFVSVSt5RVpRQkJNSWpJNUE0Z0ZJQUlnRlNBVm9pSTJSQUFBQUFBQUFQZy9vaUFUSUJPaVJBQUFBQUFBQUFoQW9pQWZJQitpb2lJUFJGM2srK2hxQkw0K29pSU1vaUFTb2prRGlBSWdBaUFhSUJxZ0loSkVBQUFBQUFBQThEK2dJZ3NnRktCRUFBQUFBQUFBNkQraUlpb2dES0lnRnFJNUE0QUNJQUlnRlVRQUFBQUFBQUQrdjZJZ0ZFUUFBQUFBQUFBSXdLSWlEQ0FMb0NJV29pQWZJQStpSWc5RUcvMUtYVFFZbVQ2aUlndWlJQm1pT1FPWUFpQUNJQlZFQUFBQUFBQUEvaitpSUF4RUFBQUFBQUFBOEQ4Z0VxRWlES0NpSUF1aUlEU2lPUU9RQWlBQ0lCVWdOa1NWbFEwSUFMQVRRS0lnRkVRQUFBQUFBQUFrUUtJaUVpQWFSQUFBQUFBQUFCREFva1FBQUFBQUFBQUF3S0Nnb2lBV1JKV1ZEUWdBUUJwQW9xQ2lJQjhnSHlBUG9pSVBvaUlZUkluaWFtK3pyWDQrb2lJTG9pQWhvamtEdUFJZ0FpQVZSQUFBQUFBQXNDTkFvaUEySUJSRUFBQUFBQUFBRk1DaUlBeWdvaUFVUkFBQUFBQUFBQmhBb2lBYVJBQUFBQUFBQUJCQW9rUUFBQUFBQUFBQXdLQ2dSTm9Td1ZGVlZkVS9vcUNpSUF1aUlBcWlPUU93QWlBQ0lEWWdOa1FBQUFBQUFMQkRRS0tpSUE4Z0Q2QkV2ZUNMOW5lZ1B6NmlJZ3VpSUNPaU9RT29BaUFDSURaRUFBQUFBQUNBUVVDaUlDcWlJQXVpSUNlaU9RT2dBaUFDSUJWRUFBQUFBQUNJUFVDaUloWWdGQ0FVUkFBQUFBQUFBQ1RBb2lBYVJBQUFBQUFBQUNCQW9pSVBSQUFBQUFBQUFDaEFvS0NpSUJwRUFBQUFBQUFBSU1DaUlneEVBQUFBQUFBQUFNQ2dvS0lnR0NBWW9FUzM5RXZIV2JJaVBxSWlDNklnVDZJNUE4Z0NJQUlnRmlBVUlCSWdEMFFBQUFBQUFBQW93S0Nnb2lBTVJBQUFBQUFBQUFCQW9LQ2lJQXVpSUR1aU9RUEFBaUFSSUJ1Z1JGZXRUbHJONjNHL29DSUxJQXVnSUVjZ0VLQ2dEQUVMSUFJZ0ZpQXFJQ0Nnb0NBWW9VUVlMVVJVK3lFWlFCQk1Jakk1QTRnRklBSWdEU0FOUkFBQUFBQUFBT28vb2tRQUFBQUFBQUFFd0tDaVJBQUFBQUFBQVBBL29DQStJRDVFQUFBQUFBQUE2RCtpSWd1aUlCOGdFeUFUUkFBQUFBQUFBQWhBb3FJZ0g2S2lJZzhnRDZDaW9rUmQ1UHZvYWdTK1BxSTVBK0FDSUFJZ0h5QU5JQTJnUkFBQUFBQUFBUEEvb0NBVklCVkVBQUFBQUFBQTdqK2lvaUFhUkFBQUFBQUFBQWhBb2tRQUFBQUFBQUR3UDZDaUlBdWhJQStpb2tTMXRpd1pxUURDUHFLaU9RUFlBaUFDSUI4Z0RTQU5SSEtuZExEK2J4cEFva1FBQUFBQUFBQVl3S0NpUkFBQUFBQUFBUEEvb0NBK0lENGdQa1FBQUFBQUFBRCtQNktpb2lBUFJBQUFBQUFBQUFoQW9xS2lSQUF6amZwb3NZMCtvcUk1QStnQ0lFY2dEQ0FRb0VSWHJVNWF6ZXR4djZDZ0lCbWdJQnVnQ3lFTElBSWdNamtEcUFVZ0FrSUFOd09nQlNBQ0lCYzVBN0FGSUFJZ0N5QVhvVGtEc0FRTElBSW9BaXhCQVVZTkFDQUNJQjVFQUFBQUFBQUFFRUNpSURlaUlBSXJBMEFpRmlBV29pSVBvaUlTT1FOWUlBSWdEeUFQb0NBU29Ea0RxQUVnQWlBZVJBQUFBQUFBQURGQW9pQlNvQ0FXSURjZ0VxS2lSQUFBQUFBQUFBaEFveUlMb2lJTU9RTmdJQUlnREVRQUFBQUFBQUFJUUtJZ0ZpQVNSQUFBQUFBQUFDaEFvaUFQUkFBQUFBQUFBQ1JBb3FDaW9FUUFBQUFBQUFEUVA2STVBN0FCSUFJZ0ZpQWVSQUFBQUFBQW9HdEFvaUJTUkFBQUFBQUFBRDlBb3FBZ055QWVJQXRFQUFBQUFBQUE0RCtpb3FLaW9pSUxPUU5vSUFJZ0QwUUFBQUFBQUFBdVFLSWdFaUFTb0NBUG9LSWdFa1FBQUFBQUFBQVlRS0lnRXFJZ0MwUUFBQUFBQUFBSVFLSWdGa1FBQUFBQUFBQW9RS0lnREtLZ29LQkVtcG1abVptWnlUK2lPUU80QVFzZ0FrRVlha1FBQUFBQUFBQUFBQ0FDUWRBSWFpQUNRYkFJYWhCdElBSkI3Z0E2QUNrTElBQWdBaXNEMkFVZ0Fpc0Q0QVdnUkFBQUFNREZua0xCb0VRQUFBQUFjSm1VUWFJaUtqa0RRQ0FBUkJndFJGVDdJUmxBSUFJckE3QUdvMFFBQUFBQUFBQk9RS0pFQUFBQUFBQkFqMENpSWdzNUF5QWdBQ0FMUkFBQUFBQUFRSTlBb3lJTE9RTW9JQUlnQ3prRDJBY2dBQ0FDS3dQSUJTSVBPUU5nSUFBZ0Fpc0R3QVVpRERrRGFDQUFJQUlyQTVnR0loWTVBM0FnQUNBQ0t3T0lCamtEZUNBQ0t3T2dCeUVTSUFBZ0NEWUNuQUVnQUNBU09RT0FBU0FBUWdBM0EwZ2dBQ0JSUkFCVTJsdG1xUFpDSUZGRUFBQUFBQUFBQUFCa0d5QUxSQmd0UkZUN0lSbEFveUlMSUF1aW9rUlZWVlZWVlZYVlB4QkpJZ3RFQUFBQUFBQUE4RDhnRmlBV29xR2ZvamtET0NBQUlBczVBekFnQUVJQU53TlFJQUJDQURjRFdDQUFJQThnRXFKRUFBQUFBQUJBajBDaU9RT1FBU0FBSUF3Z0VxSkVBQUFBQUFCQWowQ2lPUU9JQVNBQVFSaHFJZ1FoQVFKQUFrQWdBQ2dDR0NJRFJRMEFBMEFnQXlJQkt3TVFJZ3NnS21RRVFDQUJJZ1FvQWdBaUF3MEJEQUlMSUFzZ0ttTkZEUUlnQVNnQ0JDSUREUUFMSUFGQkJHb2hCQXRCOEFjUVZDSURJQ281QXhBZ0EwRVlha0VBUWRnSEVDa2FJQU1nQVRZQ0NDQURRZ0EzQWdBZ0JDQUROZ0lBSUFNaEFTQUFLQUlVS0FJQUlnVUVRQ0FBSUFVMkFoUWdCQ2dDQUNFQkN5QUFLQUlZSUFFUWJpQUFJQUFvQWh4QkFXbzJBaHdMSUFOQkdHb2dBa0VZYWlJQlFkZ0hFQ3NhSUFCQm9BRnFJQUZCMkFjUUt4b2dBaXdBK3dkQkFFZ0VRQ0FDS0FMd0J4QTBDeUFDTEFDSENFRUFTQVJBSUFJb0F2d0hFRFFMSUFJc0FKTUlRUUJJQkVBZ0FpZ0NpQWdRTkFzZ0FrSHdDR29rQUVFQUR3c1FWUUFMWFFFQ2Z5TUFRUkJySWdNa0FDQUJJQUFvQWdRaUJFRUJkV29oQVNBQUtBSUFJUUFnQkVFQmNRUkFJQUVvQWdBZ0FHb29BZ0FoQUFzZ0F5QUNOZ0lNSUFFZ0EwRU1haUFBRVFNQUlRQWdBeWdDREJBQ0lBTkJFR29rQUNBQUN3MEFJQUVnQUNnQ0FHb3JBd0FMRHdBZ0FTQUFLQUlBYWlBQ09RTUFDdzBBSUFFZ0FDZ0NBR29vQWdBTER3QWdBU0FBS0FJQWFpQUNOZ0lBQ3hrQUlBQUVRQ0FBS0FJQUVHZ2dBQ2dDQkJCb0lBQVFOQXNMS0FFQmZ5TUFRUkJySWdNa0FDQURJQUkyQWd3Z0FDQUJJQUlRdlFFaEFDQURRUkJxSkFBZ0FBdkhBUUVDZnlNQVFSQnJJZ0VrQUFKOElBQzlRaUNJcDBILy8vLy9CM0VpQWtIN3c2VC9BMDBFUUVRQUFBQUFBQUR3UHlBQ1FaN0JtdklEU1EwQkdpQUFSQUFBQUFBQUFBQUFFT29FREFFTElBQWdBS0VnQWtHQWdNRC9CMDhOQUJvQ1FBSkFBa0FDUUNBQUlBRVF3Z0ZCQTNFT0F3QUJBZ01MSUFFckF3QWdBU3NEQ0JEcUJBd0RDeUFCS3dNQUlBRXJBd2hCQVJEcEJKb01BZ3NnQVNzREFDQUJLd01JRU9vRW1nd0JDeUFCS3dNQUlBRXJBd2hCQVJEcEJBc2hBQ0FCUVJCcUpBQWdBQXZMQVFFQ2Z5TUFRUkJySWdFa0FBSkFJQUM5UWlDSXAwSC8vLy8vQjNFaUFrSDd3NlQvQTAwRVFDQUNRWUNBd1BJRFNRMEJJQUJFQUFBQUFBQUFBQUJCQUJEcEJDRUFEQUVMSUFKQmdJREEvd2RQQkVBZ0FDQUFvU0VBREFFTEFrQUNRQUpBQWtBZ0FDQUJFTUlCUVFOeERnTUFBUUlEQ3lBQkt3TUFJQUVyQXdoQkFSRHBCQ0VBREFNTElBRXJBd0FnQVNzRENCRHFCQ0VBREFJTElBRXJBd0FnQVNzRENFRUJFT2tFbWlFQURBRUxJQUVyQXdBZ0FTc0RDQkRxQkpvaEFBc2dBVUVRYWlRQUlBQUxxQU1DQlg4QmZpQUF2VUwvLy8vLy8vLy8vLzhBZzBLQmdJQ0FnSUNBK1A4QVZDQUJ2VUwvLy8vLy8vLy8vLzhBZzBLQWdJQ0FnSUNBK1A4QVdIRkZCRUFnQUNBQm9BOExJQUc5SWdkQ0lJaW5JZ0pCZ0lEQS93TnJJQWVuSWdWeVJRUkFJQUFRc1FFUEN5QUNRUjUyUVFKeElnWWdBTDBpQjBJL2lLZHlJUU1DUUNBSFFpQ0lwMEgvLy8vL0IzRWlCQ0FIcDNKRkJFQUNRQUpBSUFOQkFtc09BZ0FCQXd0RUdDMUVWUHNoQ1VBUEMwUVlMVVJVK3lFSndBOExJQUpCLy8vLy93ZHhJZ0lnQlhKRkJFQkVHQzFFVlBzaCtUOGdBS1lQQ3dKQUlBSkJnSURBL3dkR0JFQWdCRUdBZ01EL0IwY05BU0FEUVFOMFFaRDlFbW9yQXdBUEN5QUVRWUNBd1A4SFJ5QUNRWUNBZ0NCcUlBUlBjVVVFUUVRWUxVUlUreUg1UHlBQXBnOExBbndnQmdSQVJBQUFBQUFBQUFBQUlBUkJnSUNBSUdvZ0Fra05BUm9MSUFBZ0FhT1pFTEVCQ3lFQUFrQUNRQUpBSUFNT0F3UUFBUUlMSUFDYUR3dEVHQzFFVlBzaENVQWdBRVFIWEJRekpxYWh2S0NoRHdzZ0FFUUhYQlF6SnFhaHZLQkVHQzFFVlBzaENjQ2dEd3NnQTBFRGRFR3cvUkpxS3dNQUlRQUxJQUFMcnlBQ01Yd0VmeU1BUVRCcklqVWtBQ0FBSUFFNUE0QUJJQUJCQURZQ0RDQUFLd1BZQVNBQklBR2lJZ1dpSVFnZ0FDc0R3QUVnQWFJZ0FDc0QrQVdnSVFvZ0JTQUFLd09JQWFJaEVpQUFLd1BnQlNJR0lBQXJBekNpSUFHaUlSaEVBQUFBQUFBQThEOGdBQ3NES0NBQm9xRWhEeUFBS3dOb0lpY2dBYUlnQUNzRGlBWWlLS0FoRENBQUt3TzRBU0FCb2lBQUt3T1FCcUFoQkNBQUt3T1FCeUVkSUFBckE0Z0hJUjhnQUNnQ0ZFRUJSd1JBSUFVZ0FhSWlDU0FCb2lJSElBRWdBQ3NEb0FHaUlBQXJBNWdCb0tJZ0FDc0RrQUVnQ2FJZ0VxQ2dJUklnRHlBQUt3TkFJQVdpb1NBQUt3TklJQW1pb1NBQUt3TlFJQWVpb1NFUElBQXJBMkFoQlNBRUVHb2hDU0FNSUFBckEzQWdBYUlnQUNzRDBBRWdCU0FKb2tRQUFBQUFBQUR3UDZBaUJTQUZvaUFGb2lBQUt3TllvYUtnSWdXaElRd2dBQ3NEZUNFSklBUWdCYUFpQkJCcklRVWdCaUFBS3dNNG9pQUZJQW1ob2lBWW9DRVlDeUFJSUFxZ0lRZ2dBQ3NEOEFVaENTQUFLd09BQmlFVFFRSWhOZ0pBQWtBQ2ZDQUFLd080QmlJUUlBQXRBQklpT0VIa0FFY05BQm9nQUNzRDRBSWhCU0FBS3dQb0FpQUJvaUFJb0NFSUlBQXJBL0FDSUFHaUlBeWdJUXdnQUNzRDJBSWdBYUlnQ2FBaENTQUFLd080QWlBQm9pQVRvQ0VUSUFBckEvQUVJUW9nQUNzRG1BUWhHU0FBS3dQUUFpRVZJQUFyQThnQ0lSRWdBQ3NEd0FJaEZpQUFLd093QWlFYUlBQXJBNmdDSVJzZ0FDc0RvQUloSENBQUt3T1lBaUVnSUFBckE1QUNJU0VnQUNzRGlBSWhJaUFBS3dPQUFpRWpJQUFyQS9nQklTUWdBQ3NEOEFFaEpTQUFLd1BvQVNFbUlBQW9BdUFCSVRjZ0FVUlhyVTVhemV0eFA2SWdBQ3NEa0FTZ1JCZ3RSRlQ3SVJsQUVFd2hGQ0EzUlFSQUlBVWdBYUlnQktBaEJDQVFEQUVMQWtBQ1FDQUFLd09JQlNJRlJBQUFBQUFBQUFBQVlRMEFJQVVnQWFKRUFBQUFBQUFBQUFCbERRQWdBWmtnQlpsalJRMEJDeUFBSUJBNUE1Z0ZJQUJDQURjRGlBVWdBQ0FLT1FPUUJVUUFBQUFBQUFBQUFDRUZDMFFBQUFBQUFJQ0dRRVFBQUFBQUFJQ0d3Q0FCUkFBQUFBQUFBQUFBWkJzaERTQUFLd09ZQlNFR0lBQXJBNUFGSVFRQ1FDQTNRUUpHQkVBRFFDQUVSR0NrWVVJV0V4ZkFvQ0lSRUdvaEN5QUVJQ2NnQmFJZ0tLQWlDaUFLb0NJT29FUmdwR0ZDRmhNWHdLQWlGUkJxSVJZZ0NpQUVvQ0lIUlBTSXNHVWlldTYvb0NJWEVHb2hLU0FFSUFxaEloNUU5SWl3WlNKNjdyK2dJaW9RYWlFcklBZEV6T3VJUXpiUThMK2dJaXdRYWlFdElCNUV6T3VJUXpiUThMK2dJaDRRYWlFdUlBUWdCS0FpQjBRM0FreDA4ZEw4djZBaUx4QnFJVEFnRGlBSG9FUTNBa3gwOGRMOHY2QWlNUkJxSVRJZ0NpQUhvRVE0Q3JWTHdLUVJ3S0FpTXhCcUlUUWdCaUFab0NJT0lCb2dCeUFLb1VRNENyVkx3S1FSd0tBaUNoQnFvaUFiSURTaUlDSWdNcUlnTUNBaG9xQ2dvQ0lISUFlZ0lCd2dMcUlnSUNBdG9pQWpJQ3VpSUNRZ0thSWdKaUFXb2lBTElDV2lvS0Nnb0tDZ29pRUxJQkVRYXlFSElCVVFheUVSSUJjUWF5RVZJQ29RYXlFV0lERVFheUVYSUM4UWF5RXBJQ3dRYXlFcUlCNFFheUVlSURNUWF5RXJJQm9nQ2hCcm9pQWJJQ3VpSUJ3Z0hxSWdJQ0Fxb2lBaElDbWlJQ0lnRjZJZ0l5QVdvaUFrSUJXaUlDWWdFYUlnQnlBbG9xQ2dvS0Nnb0tDZ29DRUtJQUVnQmFFaUI1bEVBQUFBQUFDQWhrQm1SUTBDSUFBZ0RTQUZvQ0lGT1FPSUJTQUFJQXRFQUFBQUFBQ2tEMEdpSUFvZ0RhSWdCcUNnSWdZNUE1Z0ZJQUFnQ2tRQUFBQUFBS1FQUWFJZ0RpQU5vaUFFb0tBaUJEa0RrQVVNQUFzQUN5QVZSQUFBQUFBQUFBaEFvaUVhSUJFZ0VhQWhHd05BSUFSRTFVZ2lacnpPd0wrZ0lnY1FheUVLSUFSRVlLUmhRaFlUQjhDZ0lnNGdEcUFpRGhCcklRc2dGU0FFUkEwcmFKeCs5OWUvb0VRQUFBQUFBQUFJUUtJaUhCQnJvaUFXSUFxaUlBc2dFYUtnb0NFS0lBY1FhaUVISUE0UWFpRUxJQVlnR2FBaURpQWFJQndRYXFJZ0ZpQUhvaUFiSUF1aW9LQ2lJUXNnQVNBRm9TSUhtVVFBQUFBQUFJQ0dRR1pGRFFFZ0FDQU5JQVdnSWdVNUE0Z0ZJQUFnQzBRQUFBQUFBS1FQUWFJZ0NpQU5vaUFHb0tBaUJqa0RtQVVnQUNBS1JBQUFBQUFBcEE5Qm9pQU9JQTJpSUFTZ29DSUVPUU9RQlF3QUN3QUxJQlFnRktBZ0J5QUtJQWVpSWdXaVJBQUFBQUFBQU9BL29pQU9JQWVpSUFTZ29DSUVJQWdnQ0tDaG9DQVVJQVFnQ0tFZ0RLR2dJRGRCQVVjYklRUWdCeUFMSUFlaW9rUUFBQUFBQUFEZ1A2SWdCU0FHb0tBZ0VLRWdFS0FMSWdWRUFBQUFBQUFBQUFCbERRQWdEeUFQSUIwZ0JhTkVWVlZWVlZWVjVUOFFTYUtpSWdwRUFBQUFBQUFBK0Q4UVNTRUdRUUVoTmlBVElCaWhJZ1ZFQUFBQUFBQUE4RDltRFFBZ0JVVDhxZkhTVFdKUXYyTU5BQ0FBSUIwZ0JxTWlHRGtEOEFZZ0FDQUpPUVBRQmlBQUlBbzVBOEFHSUFBZ0RFUVlMVVJVK3lFWlFCQk1JZ1k1QStBR0lBQWdDRVFZTFVSVSt5RVpRQkJNSWdjNUE5Z0dJQUJFamUyMW9QZkdzRDRnQlNBRlJJM3R0YUQzeHJBK1l4c2lCVGtEeUFZZ0FDQVFJQktpSUFTZ0lBeWdJQWlnUkJndFJGVDdJUmxBRUV3Z0JxRWdCNkZFR0MxRVZQc2hHVUFRVENJRU9RUG9CaUExSUFrNUF4Z2dOU0FGT1FNb0lEVWdCamtESUNBMUlBYzVBd2dnTlNBRU9RTVFBa0FnT0VIa0FFY0VRQ0FBS3dQSUFTRUdJQUFyQXhnaEFTQUpFR3NoQ0NBSkVHb2hEQXdCQ3lBQUt3UDRBaUVISUFBckE0QURJUTBnQUNzRGlBTWhFQ0FBS3dPUUF5RVBJQUFyQTVnRElRNGdBQ3NEb0FNaERDQUFLd09vQXlFTElBQXJBN0FESVJJZ0FDc0R1QU1oRXlBQUt3UEFBeUVSSUFBckE4Z0RJUlFnQUNzRDBBTWhHU0FBS3dQWUF5RVZJQUFyQStBRElSWWdBQ3NENkFNaENDQUFLd1B3QXlFYUlBQXJBL2dESVJzZ0FDc0RnQVFoSENBQUt3T0lCQ0VnSUFBckE2QUVJU0VnQUNzRHFBUWhJaUFBS3dPd0JDRWpJQUFyQTdnRUlTUWdBQ3NEd0FRaEpTQUFLd1BJQkNFRklBQXJBOUFFSVFZZ0FDc0QyQVFoSmlBQUt3UGdCQ0VuSUFBckErZ0VJU2dnQUNzRCtBUWhDU0FBTEFBUUlUWWdBVVRlTlluK1p3M3BQcUlnQUNzRGdBV2dJZ1FRYTBUMC9kUjQ2U2FoUDZJZ0JLQWlGeEJySVFRZ0Z4QnFJUmNnTlNBRklBRkV5Q2xqM21yQkpEK2lJQW1nSWdFUWEwUUh6aGxSMmh1OFA2SWdBYUFpQ1JCcklnRkVBQUFBQUFBQTREK2lJQUdpUkFBQUFBQUFBTkMvb0NJRm9pQUpFR29nQVVRQUFBQUFBQURndjZLaUlna2dCcUtnSUFnZ0JDQUVSQUFBQUFBQUFPQS9vcUpFQUFBQUFBQUEwTCtnSWdpaUlCY2dCRVFBQUFBQUFBRGd2NktpSWdZZ0dxS2dvQ0FNb1NJTUlEVXJBeGlnT1FNWUlEVWdEU0FGb2lBSklBZWlvQ0FTSUFpaUlBWWdFNktnb0NBUW9TQTFLd01vb0RrREtDQWtJQVdpSUFrZ0phS2dJQlVnQ0tJZ0JpQVdvcUNnSUE2aElRY2dJeUFCb2lBaElBV2lJQWtnSXFLZ29DQVpJQVNpSUJFZ0NLSWdCaUFVb3FDZ29DQVBvU0VOSUNnZ0FhSWdKaUFGb2lBSklDZWlvS0FnSUNBRW9pQWJJQWlpSUFZZ0hLS2dvS0FnQzZFaENTQTFLd01ZSWdVUWFpRUJJQVVRYXlFRUFrQWdCVVNhbVptWm1abkpQMllFUUNBMUlBMGdBU0FISUFTaklnR2lvU0ExS3dNZ29Ea0RJQ0ExSUFFZ05Tc0RDS0E1QXdnZ05TQUpJRFVyQXhDZ09RTVFEQUVMSURVZ05Tc0RDQ0lHUkJndFJGVDdJUmxBRUV3aUJVUVlMVVJVK3lFWlFLQWdCU0FGUkFBQUFBQUFBQUFBWXhzZ0JTQTJRZUVBUmlJMkd5SUZPUU1JSUFZUWF5RUlJQVlRYWlFR0lEVXJBeUFoRUNBMUt3TVFJUThnTlNBRUlBaWlJQWNnQnFJZ0NDQU1JQUdpSWc2aW9LQWdCQ0FHb2lBT0lBYWlJQWNnQ0tLaG9CQnNJZ2hFR0MxRVZQc2hHVUNnSUFnZ0NFUUFBQUFBQUFBQUFHTWJJQWdnTmhzaUNFUVlMVVJVK3lFWlFFUVlMVVJVK3lFWndDQUZJQWhrRzBRQUFBQUFBQUFBZ0NBRklBaWhtVVFZTFVSVSt5RUpRR1Fib0RrRENDQTFJQWtnTlNzREVLQWlDRGtERUNBMUlBRWdCYUlnRHlBUW9LQWdDU0FOb0NBRklBeWlJQVNpb2FBZ0NLRWdBU0ExS3dNSW9xRTVBeUFMSURVckF4Z2lDVVFBQUFBQUFBQUFBR01FUUNBMUlEVXJBd2hFR0MxRVZQc2hDVUNnT1FNSUlEVWdOU3NESUVRWUxVUlUreUVKd0tBNUF5QWdDWm9oQ1F0QkF5RTJJRFVyQXlnaUJVUUFBQUFBQUFBQUFHTU5BU0FGUkFBQUFBQUFBUEEvWkEwQklBQXJBN0FISVFRZ0FDQUpFR3NpQ0NBRVJBQUFBQUFBQU9DL29xSWlBVGtER0NBSkVHb2lERVFBQUFBQUFBQVVRS0pFQUFBQUFBQUFDRUNnSUFnZ0JFUUFBQUFBQUFEUXY2S2lvaUVFSUFBQ2ZDQU1SQUFBQUFBQUFQQS9vQ0lHbVVRYTM4UkJabU42UFdRRVFDQUVJQWFqREFFTElBUkVHdC9FUVdaamVqMmpDeUlHT1FQSUFRc2dCU0ExS3dNZ0lnUVFhNklnQVVRQUFBQUFBQUR3UHlBS1JBQUFBQUFBQVBBL0lBVWdCYUtob3FNaUFhS2dJZ2VhSVE1QkFTRTJJQUVnQnFJZ0JTQUVFR3FpSWdHaUlBUWdOU3NERUtBZ05Tc0RDQ0lQb0tBZ0Q2RkVHQzFFVlBzaEdVQVFUQ0lHSVFRRFFFUm1abVptWm1idVAwUm1abVptWm1idXZ5QUJJQVFRYXlJTm9pSUxJQTRnQkJCcUloQ2lJaElnQnFDZ0lBU2hSQUFBQUFBQUFQQS9JQkFnQWFJaUU2RWdEU0FIb2lJUm9hTWlCVVFBQUFBQUFBQUFBR1FiSUFVZ0JabEVabVptWm1abTdqOW1HeUlGbVVRUjZpMkJtWmR4UFdZRVFDQUVJQVdnSVFRZ05rRUtTU0UzSURaQkFXb2hOaUEzRFFFTEMwRUVJVFlnQ2tRQUFBQUFBQUR3UHlBQklBR2lJQWNnQjZLZ29TSUVvaUlPUkFBQUFBQUFBQUFBWXcwQUlCOGdIYUpFQUFBQUFBQUFUa0NqSVFVZ0NpQUtSQUFBQUFBQUFQQS9JQk1nRWFDaG9pSUdveUlUSUEwZ0I2RWdBU0FMSUJLZ0lnc2dCSjhpRWtRQUFBQUFBQUR3UDZDaklnMmlvYUlpQkNBVElBY2dEYUlnRUNBQm9hQ2lJZ0VnQWFDaUlRMGdCRVFBQUFBQUFBQUF3S0lnQktKRUFBQUFBQUFBOEQrZ0lSQWdDcDhnQzZJZ0JxTWhFeUFPbnlBR295RVJJQVFnQVJCc0lSUkVBQUFBQUFBQThEOGdEcU1pQVNBQklBQXJBNWdIUkFBQUFBQUFBT0Evb3FJaURxSWhDd0pBSURoQjVBQkhCRUFnQUNzRHNBRWhCQ0FBS3dPb0FTRUtJQUFyQXlBaEJ3d0JDeUFBUkFBQUFBQUFBUEEvSUF3Z0RLSWlBYUVpQ2prRHFBRWdBQ0FCUkFBQUFBQUFBQnhBb2tRQUFBQUFBQUR3djZBaUJEa0RzQUVnQUNBQlJBQUFBQUFBQUFoQW9rUUFBQUFBQUFEd3Y2QWlCemtESUFzZ0MwUUFBQUFBQUFEUXY2SWdCS0lnRGFJZ0ZLQWlCQkJxSVFFZ0RDQUxSQUFBQUFBQUFQZy9vaUlMb2lJVUlBMmlJQStnSWc4UWFpRU1JQThRYXlFUElBSWdIeUFHUkFBQUFBQUFBUEEvSUJJZ0M2SWdCNktob2lBUUlBNUVBQUFBQUFBQTREK2lJQXFpb3FBaUJpQUlJQlNpSUJDaUlBbWdJZ2tRYWlJSUlBK2FvaUlMSUFRUWF5SUVvaUFNSUFHaW9DSVNvcUk1QXdBZ0FpQUFLd09JQnlBR0lBUWdEQ0FJb2lJVW9pQVBJQUdpb0NJZm9xSTVBd2dnQWlBR0lBUWdDUkJySWhtaUlnaWlJQUFyQTRnSG9qa0RFQ0FESUFVZ0V5QU5JQmdnRHFJaURTQUtvcUlnSGFPaElna2dDS0lnRVNBTklBb2dFS0lnQjBRQUFBQUFBQUQ0UDZLZ29pQWRvNkFpQ0NBWklBR2lvcUNpT1FNUUlBTWdCU0FKSUIraUlBZ2dGQ0FCb2lBRUlBK2lvYUtnb2prRENDQURJQVVnQ1NBU29pQUlJQXNnQWFJZ0JDQU1vcUdpb0tJNUF3QkJCaUUySUFaRUFBQUFBQUFBOEQ5alJRMEJDeUFBSURZMkFnd0xJRFZCTUdva0FBdVVCQUVEZnlBQklBQWdBVVlpQWpvQURBSkFJQUlOQUFOQUlBRW9BZ2dpQWkwQURBMEJBa0FnQWlBQ0tBSUlJZ01vQWdBaUJFWUVRQUpBSUFNb0FnUWlCRVVOQUNBRUxRQU1EUUFNQWdzQ1FDQUJJQUlvQWdCR0JFQWdBaUVCREFFTElBSWdBaWdDQkNJQktBSUFJZ0EyQWdRZ0FTQUFCSDhnQUNBQ05nSUlJQUlvQWdnRklBTUxOZ0lJSUFJb0FnZ2lBQ0FBS0FJQUlBSkhRUUowYWlBQk5nSUFJQUVnQWpZQ0FDQUNJQUUyQWdnZ0FTZ0NDQ0lES0FJQUlRSUxJQUZCQVRvQURDQURRUUE2QUF3Z0F5QUNLQUlFSWdBMkFnQWdBQVJBSUFBZ0F6WUNDQXNnQWlBREtBSUlOZ0lJSUFNb0FnZ2lBQ0FBS0FJQUlBTkhRUUowYWlBQ05nSUFJQUlnQXpZQ0JDQURJQUkyQWdnUEN3SkFJQVJGRFFBZ0JDMEFEQTBBREFFTEFrQWdBU0FDS0FJQVJ3UkFJQUloQVF3QkN5QUNJQUVvQWdRaUFEWUNBQ0FCSUFBRWZ5QUFJQUkyQWdnZ0FpZ0NDQVVnQXdzMkFnZ2dBaWdDQ0NJQUlBQW9BZ0FnQWtkQkFuUnFJQUUyQWdBZ0FTQUNOZ0lFSUFJZ0FUWUNDQ0FCS0FJSUlRTUxJQUZCQVRvQURDQURRUUE2QUF3Z0F5QURLQUlFSWdBb0FnQWlBVFlDQkNBQkJFQWdBU0FETmdJSUN5QUFJQU1vQWdnMkFnZ2dBeWdDQ0NJQklBRW9BZ0FnQTBkQkFuUnFJQUEyQWdBZ0FDQUROZ0lBSUFNZ0FEWUNDQXdDQ3lBRVFReHFJUUVnQWtFQk9nQU1JQU1nQUNBRFJqb0FEQ0FCUVFFNkFBQWdBeUlCSUFCSERRQUxDd3VtREFJSWZ3TjhJd0JCRUdzaUNDUUFJQUVnQUNzRFFLRkVVbUxOaEFONjhUNmlJUTRnQUNnQ0hFRUNUd1JBQW53Q1FBSkFJQUJCR0dvaUJ5Z0NBQ0lHUlFSQUlBY2hCQU5BSUFRb0FnZ2lCU2dDQUNBRVJpRUdJQVVoQkNBR0RRQUxEQUVMSUFjaEJTQUdJUVFEUUNBRklBUWdCQ3NERUNBQll5SUpHeUVGSUFSQkJHb2dCQ0FKR3lnQ0FDSUVEUUFMSUFVZ0IwY05BUU5BSUFZaUJTZ0NCQ0lHRFFBTEN5QUZLd01RREFFTEFrQUNRQ0FBS0FJVUlBVkhCRUFnQlNnQ0FDSUdEUUVnQlNFR0EwQWdCaWdDQ0NJRUtBSUFJQVpHSVFrZ0JDRUdJQWtOQUFzTUFnc2dCU3NERUF3Q0N3TkFJQVlpQkNnQ0JDSUdEUUFMQ3lBRUt3TVFJZ3dnQlNzREVDSU5JQUVnREtFZ0RTQUJvV01iQ3lFTVFjcnRFa0VSRUhBZ0RCQnhRZHp0RWtFRkVIQWdBQ2dDbkFFaENTTUFRUkJySWdRa0FBSkFJQVJCQ0dwQjVLRVVFSFlpQ3kwQUFFVU5BQ0FFUWVTaEZDZ0NBRUVNYXlnQ0FFR0FvaFJxS0FJQUlnVTJBZ1FnQlNBRktBSUVRUUZxTmdJRUlBUW9BZ1FRaEFJaEJpQUVLQUlFSWdVZ0JTZ0NCRUVCYXlJS05nSUVJQXBCZjBZRVFDQUZJQVVvQWdBb0FnZ1JBUUFMSUFSQjVLRVVLQUlBUVF4cktBSUFRZnloRkdvb0FnQTJBZ0JCNUtFVUtBSUFRUXhyS0FJQVFlU2hGR29pQlJDRkFpRUtJQVlnQkNnQ0FDQUZJQW9nQ1NBR0tBSUFLQUlRRVFjQURRQkI1S0VVS0FJQVFReHJLQUlBUWVTaEZHcEJCUkQ1QVFzZ0N4QjVJQVJCRUdva0FDQUlRZVNoRkNnQ0FFRU1heWdDQUVHQW9oUnFLQUlBSWdRMkFnZ2dCQ0FFS0FJRVFRRnFOZ0lFSUFnb0FnaEJoS3NVRUhJaUJFRUtJQVFvQWdBb0Fod1JBd0FoQlNBSUtBSUlJZ1FnQkNnQ0JFRUJheUlHTmdJRUlBWkJmMFlFUUNBRUlBUW9BZ0FvQWdnUkFRQUxJQVVRYzBIa29SUVFkRUh1N1JKQkRoQndJQWNpQmlFRUFrQUNRQ0FBS0FJWUlnVkZEUUFEUUNBRklnUXJBeEFpRFNBTVpBUkFJQVFoQmlBRUtBSUFJZ1VOQVF3Q0N5QU1JQTFrUlEwQ0lBUW9BZ1FpQlEwQUN5QUVRUVJxSVFZTFFmQUhFRlFpQlNBTU9RTVFJQVZCR0dwQkFFSFlCeEFwR2lBRklBUTJBZ2dnQlVJQU53SUFJQVlnQlRZQ0FDQUZJUVFnQUNnQ0ZDZ0NBQ0lKQkVBZ0FDQUpOZ0lVSUFZb0FnQWhCQXNnQUNnQ0dDQUVFRzRnQUNBQUtBSWNRUUZxTmdJY0N5QUZLd1A0QlJCeElBaEI1S0VVS0FJQVFReHJLQUlBUVlDaUZHb29BZ0FpQkRZQ0RDQUVJQVFvQWdSQkFXbzJBZ1FnQ0NnQ0RFR0VxeFFRY2lJRVFRb2dCQ2dDQUNnQ0hCRURBQ0VGSUFnb0Fnd2lCQ0FFS0FJRVFRRnJJZ1kyQWdRZ0JrRi9SZ1JBSUFRZ0JDZ0NBQ2dDQ0JFQkFBc2dCUkJ6UWVTaEZCQjBBa0FnREVRQUFBQUFBQUR3djJFRVFDQUFLQUlVSVFVTUFRc0NRQ0FISWdRb0FnQWlCVVVOQUFOQUlBVWlCQ3NERUNJTklBeGtCRUFnQkNFSElBUW9BZ0FpQlEwQkRBSUxJQXdnRFdSRkRRSWdCQ2dDQkNJRkRRQUxJQVJCQkdvaEJ3dEI4QWNRVkNJRklBdzVBeEFnQlVFWWFrRUFRZGdIRUNrYUlBVWdCRFlDQ0NBRlFnQTNBZ0FnQnlBRk5nSUFJQVVoQkNBQUtBSVVLQUlBSWdZRVFDQUFJQVkyQWhRZ0J5Z0NBQ0VFQ3lBQUtBSVlJQVFRYmlBQUlBQW9BaHhCQVdvMkFod0xJQUJCb0FGcUlBVkJHR3BCMkFjUUt4b0xJQUJCb0FGcUlBNUJvSXNVUWNDTEZCQnRBa0FnQUNnQ3JBRWlCRUVBU2dSQUlBSkZEUUVnQWtJQU53TUFJQUpDQURjREVDQUNRZ0EzQXdnZ0FDZ0NyQUVoQkF3QkMwRUFJUVJCb0lzVVFlQ0tGQ0FCUkFBQUFBQndtWlJCbzBRQUFBREF4WjVDUWFCQmlJd1VLd01Bb0NJQlJBQUFBSUFzdEVMQm9FUUFBQUFBb05YaFFLTWlEQ0FCRUhWQndJc1VRWUNMRkNBTUlBRVFkVUh3aWhSQjhJb1VLd01BUkFBQUFBQUFRSTlBb2prREFFSGdpaFJCNElvVUt3TUFSQUFBQUFBQVFJOUFvamtEQUVHQWl4UkJnSXNVS3dNQVJBQUFBQUFBUUk5QW9qa0RBRUhvaWhSQjZJb1VLd01BUkFBQUFBQUFRSTlBb2prREFFR0lpeFJCaUlzVUt3TUFSQUFBQUFBQVFJOUFvamtEQUVHUWl4UkJrSXNVS3dNQVJBQUFBQUFBUUk5QW9qa0RBQ0FDUWZDS0ZDa0RBRGNERUNBQ1FlaUtGQ2tEQURjRENDQUNRZUNLRkNrREFEY0RBQ0FEUVlDTEZDa0RBRGNEQUNBRFFZaUxGQ2tEQURjRENDQURRWkNMRkNrREFEY0RFQXNnQ0VFUWFpUUFJQVFMbUFJQkNIOGpBRUVRYXlJQ0pBQUNRQ0FDUVFScVFlU2hGQkIySWdVdEFBQkZEUUFnQUNBQmFpSUdJQUJCNUtFVUtBSUFRUXhyS0FJQUlnRkI2S0VVYWlnQ0FFR3dBWEZCSUVZYklRY2dBVUhrb1JScUlRTWdBVUg4b1JScUtBSUFJUWdnQVVHd29oUnFLQUlBSWdGQmYwWUVRQ0FDSUFNb0Fod2lBVFlDRENBQklBRW9BZ1JCQVdvMkFnUWdBaWdDREVHRXF4UVFjaUlCUVNBZ0FTZ0NBQ2dDSEJFREFDRUJJQUlvQWd3aUJDQUVLQUlFUVFGcklnazJBZ1FnQ1VGL1JnUkFJQVFnQkNnQ0FDZ0NDQkVCQUFzZ0F5QUJOZ0pNQ3lBSUlBQWdCeUFHSUFNZ0FjQVFkdzBBUWVTaEZDZ0NBRUVNYXlnQ0FDSUFRZVNoRkdvZ0FFSDBvUlJxS0FJQVFRVnlFSGdMSUFVUWVTQUNRUkJxSkFBTDdnRUJCWDhqQUVFUWF5SUNKQUFDUUNBQ1FRaHFRZVNoRkJCMklnVXRBQUJGRFFBZ0FrSGtvUlFvQWdCQkRHc29BZ0JCZ0tJVWFpZ0NBQ0lCTmdJRUlBRWdBU2dDQkVFQmFqWUNCQ0FDS0FJRUVJUUNJUVFnQWlnQ0JDSUJJQUVvQWdSQkFXc2lBellDQkNBRFFYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUNRZVNoRkNnQ0FFRU1heWdDQUVIOG9SUnFLQUlBTmdJQVFlU2hGQ2dDQUVFTWF5Z0NBRUhrb1JScUlnRVFoUUloQXlBRUlBSW9BZ0FnQVNBRElBQWdCQ2dDQUNnQ0lCRWFBQTBBUWVTaEZDZ0NBRUVNYXlnQ0FFSGtvUlJxUVFVUStRRUxJQVVRZVNBQ1FSQnFKQUFMUXdBZ0FSREtBaUVCSUFFZ0FDZ0NEQ0FBS0FJSUlnQnJRUUoxU1FSL0lBQWdBVUVDZEdvb0FnQkJBRWNGUVFBTFJRUkFFTjRCQUFzZ0FDQUJRUUowYWlnQ0FBdHdBUU4vSXdCQkVHc2lBU1FBQWtBZ0FVRUlha0hrb1JRUWRpSUNMUUFBUlEwQUlBRkJCR29pQTBIa29SUW9BZ0JCREdzb0FnQkIvS0VVYWlnQ0FEWUNBQ0FESUFBUWhnSW9BZ0FOQUVIa29SUW9BZ0JCREdzb0FnQkI1S0VVYWtFQkVQa0JDeUFDRUhrZ0FVRVFhaVFBQzNZQkEzOGpBRUVRYXlJQkpBQWdBQ0FBS0FJQVFReHJLQUlBYWlnQ0dBUkFBa0FnQVVFSWFpQUFFSFlpQWkwQUFFVU5BQ0FBSUFBb0FnQkJER3NvQWdCcUtBSVlJZ01nQXlnQ0FDZ0NHQkVBQUVGL1J3MEFJQUFnQUNnQ0FFRU1heWdDQUdwQkFSRDVBUXNnQWhCNUN5QUJRUkJxSkFBTC93VUNBMzhCZkNNQVFhQUJheUlFSkFBZ0EwUUFBQUNBTExSQ3dhQkVBQUFBQUtEVjRVQ2pJZ2RFQUFNYVI1MlQ1MEdpSUFjZ0IwVE95ZVlGTXdIYXZxS2lJQWVpSUFjZ0IwVHJkQ0RycWRXM1A2S2lvS0JFYlpCSnh1aHU4RUNnUkRtZFVxSkczNUUvb2tRQUFBQUFBQUJ1UUtORUdDMUVWUHNoR1VBUVRDSUhSQmd0UkZUN0lSbEFvQ0FISUFkRUFBQUFBQUFBQUFCakd5RUhJQU5FQUFBQXdBaXlRa0ZrQkVBZ0FrVDhxZkhTVFdLQVA2SWdBcUlnQXFJZ0FrVGIrWDZpc285YXdhSWdBa1JTdUI2RjY5RWRRS0lnQXFLZ29FUUFBQUFBQUNDc1FLTkVHcmE1YzlsQ1gwQ2dSQUFBQUFBQWdIWkFFRXhFT1oxU29rYmZrVCtpSWdJUWF5RURJQUlnQXFBUWEwVHJnOFE2T3YzMFBhSWdBMFRsOWVpSlhueExQcUlnQjZDZ0lRY0xJQVJDQURjRGVDQUVRZ0EzQTRBQklBUkNBRGNEaUFFZ0JFS0FnSUNBZ0lDQStEODNBNUFCSUFRZ0IwUVlMVVJVK3lFWlFCQk1JZ0lRYWlJRE9RTndJQVJDQURjRFlDQUVJQUlRYXlJQ09RTm9JQVFnQXprRFVDQUVJQUthT1FOWUEwQWdCQ0FHUVJoc2FpQUVRZEFBYWlBR1FRTjBhaXNEQURrREFDQUdRUUZxSWdaQkEwY05BQXNEUUNBRUlBVkJHR3hxSUFWQkEzUWdCR29yQTJnNUF3Z2dCVUVCYWlJRlFRTkhEUUFMUVFBaEJRTkFJQVFnQlVFWWJHb2dCVUVEZENBRWFpc0RnQUU1QXhBZ0JVRUJhaUlGUVFOSERRQUxJQUZDQURjREFDQUJJQVFyQXdBZ0FDc0RBS0pFQUFBQUFBQUFBQUNnSWdJNUF3QWdBU0FFS3dNSUlBQXJBd2lpSUFLZ0lnSTVBd0FnQUNzREVDRURJQVFyQXhBaEJ5QUJRZ0EzQXdnZ0FTQUhJQU9pSUFLZ09RTUFJQUVnQkNzREdDQUFLd01Bb2tRQUFBQUFBQUFBQUtBaUFqa0RDQ0FCSUFRckF5QWdBQ3NEQ0tJZ0FxQWlBamtEQ0NBQUt3TVFJUU1nQkNzREtDRUhJQUZDQURjREVDQUJJQWNnQTZJZ0FxQTVBd2dnQVNBRUt3TXdJQUFyQXdDaVJBQUFBQUFBQUFBQW9DSUNPUU1RSUFFZ0JDc0RPQ0FBS3dNSW9pQUNvQ0lDT1FNUUlBRWdCRUZBYXlzREFDQUFLd01Rb2lBQ29Ea0RFQ0FFUWFBQmFpUUFDejRBSUFBZ0FUWUNCQ0FBUVFBNkFBQWdBU0FCS0FJQVFReHJLQUlBYWlJQktBSVFSUVJBSUFFb0FrZ2lBUVJBSUFFUWRBc2dBRUVCT2dBQUN5QUFDN2dDQVFSL0l3QkJFR3NpQmlRQUFrQUNRQ0FBUlEwQUlBUW9BZ3doQnlBQ0lBRnJJZ2xCQUVvRVFDQUFJQUVnQ1NBQUtBSUFLQUl3RVFRQUlBbEhEUUVMSUFjZ0F5QUJheUlCYTBFQUlBRWdCMGdiSWdGQkFFb0VRQ0FCUWZELy8vOEhUdzBDQWtBZ0FVRUxUd1JBSUFGQkQzSkJBV29pQ0JCVUlRY2dCaUFJUVlDQWdJQjRjallDRENBR0lBYzJBZ1FnQmlBQk5nSUlEQUVMSUFZZ0FUb0FEeUFHUVFScUlRY0xRUUFoQ0NBSElBVWdBUkFwSUFGcVFRQTZBQUFnQUNBR0tBSUVJQVpCQkdvZ0Jpd0FEMEVBU0JzZ0FTQUFLQUlBS0FJd0VRUUFJUVVnQml3QUQwRUFTQVJBSUFZb0FnUVFOQXNnQVNBRlJ3MEJDeUFESUFKcklnRkJBRW9FUUNBQUlBSWdBU0FBS0FJQUtBSXdFUVFBSUFGSERRRUxJQVJCQURZQ0RDQUFJUWdMSUFaQkVHb2tBQ0FJRHdzUVZRQUxJUUFnQUNBQUtBSVlSU0FCY2lJQk5nSVFJQUFvQWhRZ0FYRUVRQkRlQVFBTEMyQUJBbjhDUUNBQUtBSUVJZ0VnQVNnQ0FFRU1heWdDQUdvaUFTZ0NHQ0lDUlEwQUlBRW9BaEFOQUNBQkxRQUZRU0J4UlEwQUlBSWdBaWdDQUNnQ0dCRUFBRUYvUncwQUlBQW9BZ1FpQUNBQUtBSUFRUXhyS0FJQWFrRUJFUGtCQ3d0N0FRSi9RZmp5RWtITTd4SkI5TzhTUVFCQjZQTVNRUkZCb1BFU1FRQkJvUEVTUVFCQit6MUI2L01TUVJJUUEwSDQ4aEpCQWtHRThCSkIrUE1TUVJOQkZCQUVRUVFRVkNJQVFRUTJBZ0JCQkJCVUlnRkJCRFlDQUVINDhoSkJoc0VBUWZEMUVrSDQ4eEpCRlNBQVFmRDFFa0dROUJKQkZpQUJFQVlMRkFBZ0FBUkFJQUFnQUNnQ0FDZ0NCQkVCQUFzTG9RRUJCSDhqQUVFUWF5SUNKQUFnQVNnQ0FDSURRZkQvLy84SFNRUkFBa0FnQTBFS1RRUkFJQUlnQXpvQUR5QUNRUVJxSVFRTUFRc2dBMEVQY2tFQmFpSUZFRlFoQkNBQ0lBVkJnSUNBZ0hoeU5nSU1JQUlnQkRZQ0JDQUNJQU0yQWdnTElBUWdBVUVFYWlBREVDc2dBMnBCQURvQUFDQUNRUVJxSUFBUkFBQWhBQ0FDTEFBUFFRQklCRUFnQWlnQ0JCQTBDeUFDUVJCcUpBQWdBQThMRUZVQUM2SUJBUVYvSXdCQkVHc2lBaVFBUVJBUVZDRUJJQUFvQWdRaEJDQUFLQUlBSVFNZ0FpQUFMUUFLT2dBT0lBSWdBQzhCQ0RzQkRDQUFRZ0EzQWdBZ0FDd0FDeUVGSUFCQkFEWUNDQ0FCUVpUekVqWUNBQUpBSUFWQkFFNEVRQ0FCSUFNMkFnUWdBU0FFTmdJSUlBRWdBaThCRERzQkRDQUJJQUl0QUE0NkFBNGdBU0FGT2dBUERBRUxJQUZCQkdvZ0F5QUVFSUFCSUFNUU5Bc2dBa0VRYWlRQUlBRUxSUUVDZnlBQklBQW9BZ0JxSWdBb0FnUWdBQzBBQ3lJQklBSEFRUUJJSWdNYklnRkJCR29RTXlJQ0lBRTJBZ0FnQWtFRWFpQUFLQUlBSUFBZ0F4c2dBUkFyR2lBQ0M2OEJBUVIvSXdCQkVHc2lBeVFBSUFJb0FnQWlCRUh3Ly8vL0Iwa0VRQUpBSUFSQkNrMEVRQ0FESUFRNkFBOGdBMEVFYWlFRkRBRUxJQVJCRDNKQkFXb2lCaEJVSVFVZ0F5QUdRWUNBZ0lCNGNqWUNEQ0FESUFVMkFnUWdBeUFFTmdJSUN5QUZJQUpCQkdvZ0JCQXJJQVJxUVFBNkFBQWdBU0FBS0FJQWFpSUFMQUFMUVFCSUJFQWdBQ2dDQUJBMEN5QUFJQU1wQWdRM0FnQWdBQ0FES0FJTU5nSUlJQU5CRUdva0FBOExFRlVBQzV3QkFRSi9Jd0JCRUdzaUJDUUFBa0FDUUNBQ1FRdEpCRUFnQUNBQ09nQUxEQUVMSUFKQjhQLy8vd2RQRFFFZ0JFRUlhaUFDUVF0UEJIOGdBa0VRYWtGd2NTSURJQU5CQVdzaUF5QURRUXRHR3dWQkNndEJBV29RbUFJZ0FDQUVLQUlJSWdNMkFnQWdBQ0FFS0FJTVFZQ0FnSUI0Y2pZQ0NDQUFJQUkyQWdRZ0F5RUFDeUFBSUFFZ0FrRUJhaERxQVJvZ0JFRVFhaVFBRHdzUVZRQUxId0FnQUVHVTh4STJBZ0FnQUN3QUQwRUFTQVJBSUFBb0FnUVFOQXNnQUFzaEFDQUFRWlR6RWpZQ0FDQUFMQUFQUVFCSUJFQWdBQ2dDQkJBMEN5QUFFRFFMN1FFQkFuOUI2UFFTUWZEMEVrSEE4QkpCQUVIbzh4SkJHRUdnOFJKQkFFR2c4UkpCQUVIQ09VSHI4eEpCR1JBRFFlajBFa0VCUWREd0VrSG84eEpCR2tFYkVBUkJCQkJVSWdCQkJEWUNBRUVFRUZRaUFVRUVOZ0lBUWVqMEVrSFp3QUJCK1B3VFFmanpFa0VjSUFCQitQd1RRWkQwRWtFZElBRVFCa0VJRUZRaUFFRUFOZ0lFSUFCQkhqWUNBRUhvOUJKQjd6MUJBMEhVOEJKQnNQUVNRUjhnQUVFQVFRQVFCVUVJRUZRaUFFRUFOZ0lFSUFCQklEWUNBRUVJRUZRaUFVRUFOZ0lFSUFGQklUWUNBRUhvOUJKQjZqcEJ3UDBUUWZqekVrRWlJQUJCd1AwVFFaRDBFa0VqSUFFUUJndkFBUUVEZnlBQUJFQWdBRUdVOEJJMkFnQUNRRUhvaXhRb0FnQWlBa0hraXhSR0RRQWdBaUVCQWtBRFFBSkFJQUVvQWdRaEF5QUJLQUlJSUFCR0RRQWdBeUlCUWVTTEZFY05BUXdDQ3dzZ0FTZ0NBQ0lDSUFNMkFnUWdBU2dDQkNBQ05nSUFRZXlMRkVIc2l4UW9BZ0JCQVdzMkFnQWdBUkEwUWVpTEZDZ0NBQ0VDQ3lBQ1FlU0xGRVlOQUVFQUlRRURRQ0FDS0FJSUlBRTJBaEFnQVVFQmFpRUJJQUlvQWdRaUFrSGtpeFJIRFFBTEMwSHdpeFJCQVRvQUFDQUFFRFFMQzI4QkEzOUJGQkJVSWdGQkFUb0FCQ0FCUVpUd0VqWUNBRUVNRUZRaUFFSGtpeFEyQWdRZ0FDQUJOZ0lJSUFCQjVJc1VLQUlBSWdJMkFnQWdBaUFBTmdJRVFlU0xGQ0FBTmdJQVFleUxGRUhzaXhRb0FnQWlBRUVCYWpZQ0FDQUJJQUEyQWhCQjhJc1VRUUU2QUFBZ0FRc05BQ0FCSUFBb0FnQnFMUUFBQ3c4QUlBRWdBQ2dDQUdvZ0Fqb0FBQXNlQUNBQUlBRWdBQ2dDQ0VFQUlBQW9BZ0FvQWdBUkV3QWFJQUFvQWdnTE53RUJmeUFCSUFBb0FnUWlBMEVCZFdvaEFTQUFLQUlBSVFBZ0FTQUNJQU5CQVhFRWZ5QUJLQUlBSUFCcUtBSUFCU0FBQ3hFYkFBc0hBQ0FBS0FJUUN3a0FJQUFnQVRZQ0VBczFBUUYvSUFFZ0FDZ0NCQ0lDUVFGMWFpRUJJQUFvQWdBaEFDQUJJQUpCQVhFRWZ5QUJLQUlBSUFCcUtBSUFCU0FBQ3hFQUFBczNBUUYvSUFFZ0FDZ0NCQ0lEUVFGMWFpRUJJQUFvQWdBaEFDQUJJQUlnQTBFQmNRUi9JQUVvQWdBZ0FHb29BZ0FGSUFBTEVRSUFDd1FBUVFBTFF3RURmeU1BUVNCcklnRWtBQ0FCUVFocUlnTWdBRGNEQUNBQlFSaHFJZ0lnQVVFUWFpQURLUU1BRU44QktRTUFOd01BSUFJcEF3QWhBQ0FCUVNCcUpBQWdBQXVVQVFFQ2Z3SkFBa0FDUUFKQUlBQXRBQXNpQTBHQUFYRkJCM1lFUUNBQUtBSUVJZ01nQUNnQ0NFSC8vLy8vQjNGQkFXc2lBa1lOQVF3Q0MwRUtJUUlnQTBIL0FIRWlBMEVLUncwQ0N5QUFJQUpCQVNBQ0lBSVF4d01nQWlFREN5QUFLQUlBSVFJZ0FDQURRUUZxTmdJRURBRUxJQUFnQTBFQmFqb0FDeUFBSVFJTElBSWdBMm9pQUNBQk9nQUFJQUJCQURvQUFRdmpBUUVDZnlBQ1FRQkhJUU1DUUFKQUFrQWdBRUVEY1VVTkFDQUNSUTBBSUFGQi93RnhJUVFEUUNBQUxRQUFJQVJHRFFJZ0FrRUJheUlDUVFCSElRTWdBRUVCYWlJQVFRTnhSUTBCSUFJTkFBc0xJQU5GRFFFQ1FDQUFMUUFBSUFGQi93RnhSZzBBSUFKQkJFa05BQ0FCUWY4QmNVR0Jnb1FJYkNFREEwQWdBQ2dDQUNBRGN5SUVRWDl6SUFSQmdZS0VDR3R4UVlDQmdvUjRjUTBDSUFCQkJHb2hBQ0FDUVFScklnSkJBMHNOQUFzTElBSkZEUUVMSUFGQi93RnhJUUVEUUNBQklBQXRBQUJHQkVBZ0FBOExJQUJCQVdvaEFDQUNRUUZySWdJTkFBc0xRUUFMZ1FFQkFuOENRQUpBSUFKQkJFOEVRQ0FBSUFGeVFRTnhEUUVEUUNBQUtBSUFJQUVvQWdCSERRSWdBVUVFYWlFQklBQkJCR29oQUNBQ1FRUnJJZ0pCQTBzTkFBc0xJQUpGRFFFTEEwQWdBQzBBQUNJRElBRXRBQUFpQkVZRVFDQUJRUUZxSVFFZ0FFRUJhaUVBSUFKQkFXc2lBZzBCREFJTEN5QURJQVJyRHd0QkFBdGpBUUovQWtCQjdJc1VLQUlBUlEwQVFlaUxGQ2dDQUNJQUtBSUFJZ0ZCNUlzVUtBSUFJZ0lvQWdRMkFnUWdBaWdDQkNBQk5nSUFRZXlMRkVFQU5nSUFJQUJCNUlzVVJnMEFBMEFnQUNnQ0JDRUJJQUFRTkNBQklnQkI1SXNVUncwQUN3c0w4UUVCQVg5QjZQQVNRZmp3RWtHUThSSkJBRUhvOHhKQkowR2c4UkpCQUVHZzhSSkJBRUdrd0FCQjYvTVNRU2dRQTBIbzhCSkJBVUdrOFJKQjZQTVNRU2xCS2hBRVFRZ1FWQ0lBUW9pQWdJQVFOd01BUWVqd0VrSEt3QUJCQWtHODhSSkIrUE1TUVNzZ0FFRUFRUUFRQlVIUThSSkI2UEVTUVlUeUVrSG84QkpCNlBNU1FTeEI2UE1TUVMxQjZQTVNRUzVCK1R0QjYvTVNRUzhRQTBIUThSSkJBa0dVOGhKQitQTVNRVEJCTVJBRVFRZ1FWQ0lBUW9pQWdJQVFOd01BUWREeEVrSEt3QUJCQWtHdzhoSkIrUE1TUVRJZ0FFRUFRUUFRQlVHZ3dBQkJBa0c0OGhKQm9QUVNRVE5CTkVFQUVBc0xFd0VCZjBFRUVGUWlBRUd3OFJJMkFnQWdBQXVUQVFFRmZ5TUFRUkJySWdJa0FDQUFLQUlBSVFNZ0FrRUVhaUlFSUFFZ0FDZ0NCQ0lBUVFGMWFpSUJJQUJCQVhFRWZ5QUJLQUlBSUFOcUtBSUFCU0FEQ3hFQ0FDQUNLQUlJSUFJdEFBOGlBQ0FBd0NJRFFRQklJZ1ViSWdCQkJHb1FNeUlCSUFBMkFnQWdBVUVFYWlBQ0tBSUVJZ1lnQkNBRkd5QUFFQ3NhSUFOQkFFZ0VRQ0FHRURRTElBSkJFR29rQUNBQkN5a0JBWDhqQUVFUWF5SUNKQUFnQWlBQk5nSU1JQUpCREdvZ0FCRUFBQ0VBSUFKQkVHb2tBQ0FBQ3hFQVFRUVFWQ0lBUWFUeUVqWUNBQ0FBQ3drQUlBRWdBQkVCQUF0eUFRSi9Jd0JCRUdzaUFTUUFJQUZCQkdvaUFpQUFJQUFvQWdBb0FnZ1JBZ0FnQVNBQktBSUVJQUlnQVN3QUQwRUFTQnMyQWdBakFFRVFheUlBSkFBZ0FDQUJOZ0lNUWVDREZFR1lQaUFCRU04QklBQkJFR29rQUNBQkxBQVBRUUJJQkVBZ0FTZ0NCQkEwQ3lBQlFSQnFKQUFMQmdBZ0FCQTBDeUFBSUFCQkFEb0FDQ0FBUXRQcWladkdyZGk1OHdBM0FnQWdBRUVJT2dBTEN4c0FJQUJCQURvQUJDQUFRY0xDemFzR05nSUFJQUJCQkRvQUN3dThBd0VCZjBHQTh4SkJzUE1TUWRqekVrSDQ4aEpCNlBNU1FUWkI2UE1TUVRkQjZQTVNRVGhCOVRsQjYvTVNRVGtRQTBHQTh4SkJBa0h3OHhKQitQTVNRVHBCT3hBRVFRZ1FWQ0lBUVFBMkFnUWdBRUU4TmdJQVFZRHpFa0dGd0FCQkFrSDg4eEpCK1BNU1FUMGdBRUVBUVFBUUJVRUlFRlFpQUVFQU5nSUVJQUJCUGpZQ0FFR0E4eEpCMHpsQkEwR0U5QkpCa1BRU1FUOGdBRUVBUVFBUUJVRUlFRlFpQUVFQU5nSUVJQUJCd0FBMkFnQkJnUE1TUWI0K1FRSkJtUFFTUWFEMEVrSEJBQ0FBUVFCQkFCQUZRUWdRVkNJQVFRQTJBZ1FnQUVIQ0FEWUNBRUdBOHhKQms4QUFRUU5CcFBRU1FiRDBFa0hEQUNBQVFRQkJBQkFGUVFnUVZDSUFRUUEyQWdRZ0FFSEVBRFlDQUVHQTh4SkI3ejFCQlVIQTlCSkJnUFVTUWNVQUlBQkJBRUVBRUFWQkNCQlVJZ0JCQURZQ0JDQUFRY1lBTmdJQVFZRHpFa0d1d0FCQkJVSEE5QkpCZ1BVU1FjVUFJQUJCQUVFQUVBVkJDQkJVSWdCQkFEWUNCQ0FBUWNjQU5nSUFRWUR6RWtIcE9VRUZRY0QwRWtHQTlSSkJ4UUFnQUVFQVFRQVFCVUVJRUZRaUFFRUFOZ0lFSUFCQnlBQTJBZ0JCZ1BNU1FjSThRUUpCaVBVU1FmanpFa0hKQUNBQVFRQkJBQkFGQzlVQ0FRVi9Jd0JCRUdzaUFTUUFRU0FRVkNFQ0lBQW9BZ1FoQXlBQUtBSUFJUVFnQVNBQUxRQUtPZ0FDSUFFZ0FDOEJDRHNCQUNBQVFnQTNBZ0FnQUN3QUN5RUZJQUJCQURZQ0NBSkFBa0FDUUNBRlFRQk9CRUFnQVNBQkxRQUNPZ0FPSUFFZ0F6WUNDQ0FCSUFRMkFnUWdBU0FCTHdFQU93RU1JQUVnQlRvQUR5QUNRWlR6RWpZQ0FDQUNRUVJxSVFBTUFRc2dBVUVFYWlBRUlBTVFnQUVnQVN3QUR5RURJQUpCbFBNU05nSUFJQUpCQkdvaEFDQURRUUJJRFFFTElBQWdBU2tDQkRjQ0FDQUFJQUVvQWd3MkFnZ01BUXNnQUNBQktBSUVJQUVvQWdnUWdBRWdBU3dBRDBFQVRnMEFJQUVvQWdRUU5Bc2dBa0hJOGhJMkFnQWdBa0VZRUZRMkFoQkJHQkJVSVFBZ0FrSUFOd0lZSUFJZ0FEWUNGRUdRakJSQ0FEY0RBRUdJakJSQ0FEY0RBRUhRakJSQ0FEY0RBRUhZakJSQ0FEY0RBQ0FGUVFCSUJFQWdCQkEwQ3lBQlFSQnFKQUFnQWdzSkFFSHNpeFFvQWdBTG53VUJDSDhqQUVFUWF5SURKQUJCNklzVUtBSUFJUUlnQXlBRFFRUnFJZ0EyQWdnZ0F5QUFOZ0lFSUFKQjVJc1VSd1JBUWV5TEZDZ0NBQ0VISUFOQkJHb2hCUU5BQW44Z0FpZ0NCQ0lBSUFFZ0FpZ0NDRWNOQUJwQjVJc1VJUVFDUUNBQVFlU0xGRVlFUUVFQklRa01BUXNEUUNBQUtBSUlJZ1FnQVVZaENTQUJJQVJIQkVBZ0FDRUVEQUlMUWVTTEZDRUVJQUFvQWdRaUFFSGtpeFJIRFFBTEN5QUNJQVJIQkVCQkFDRUFJQUloQmtIc2l4UWdCeUFDSUFRb0FnQWlCVVlFZjBFQkJRTkFJQUFpQjBFQmFpRUFJQVlvQWdRaUJpQUZSdzBBQ3lBSFFRSnFDeUlBYXlJSE5nSUFJQUlvQWdBaUJpQUZLQUlFTmdJRUlBVW9BZ1FnQmpZQ0FDQURLQUlFSWdZZ0FqWUNCQ0FDSUFZMkFnQWdBeUFGTmdJRUlBVWdBMEVFYWpZQ0JDQUFJQWhxSVFnTElBUWdDUTBBR2lBRUtBSUVDeUlDUWVTTEZFY05BQXNDUUNBSVJRMEFJQU1vQWdnaUFDZ0NBQ0lDSUFVb0FnUTJBZ1FnQlNnQ0JDQUNOZ0lBSUFOQkFEWUNEQ0FBSUFOQkJHcEdEUUFEUUNBQUtBSUVJUUlnQUJBMElBSWlBQ0FEUVFScVJ3MEFDd3RCNklzVUtBSUFJUUlMSUFFRVFDQUJRWlR3RWpZQ0FBSkFJQUpCNUlzVVJnMEFJQUloQUFKQUEwQUNRQ0FBS0FJRUlRUWdBQ2dDQ0NBQlJnMEFJQVFpQUVIa2l4UkhEUUVNQWdzTElBQW9BZ0FpQWlBRU5nSUVJQUFvQWdRZ0FqWUNBRUhzaXhSQjdJc1VLQUlBUVFGck5nSUFJQUFRTkVIb2l4UW9BZ0FoQWdzZ0FrSGtpeFJHRFFCQkFDRUFBMEFnQWlnQ0NDQUFOZ0lRSUFCQkFXb2hBQ0FDS0FJRUlnSkI1SXNVUncwQUN3dEI4SXNVUVFFNkFBQWdBUkEwUWVpTEZDZ0NBQ0VDQ3lBQ1FlU0xGRWNFUUVFQUlRQURRQ0FDS0FJSUlBQkJBV29pQURZQ0VDQUNLQUlFSWdKQjVJc1VSdzBBQ3d0QjhJc1VRUUU2QUFBZ0EwRVFhaVFBQytzQ0FRVi9RZWlMRkNnQ0FDSUVRZVNMRkVjRVFBTkFJQVFvQWdnaUJRUkFJQVZCbFBBU05nSUFRZWlMRkNnQ0FDSUJJUUlDUUNBQlFlU0xGRVlOQUFKQUEwQUNRQ0FDS0FJRUlRTWdBaWdDQ0NBRlJnMEFJQU1pQWtIa2l4UkhEUUVNQWdzTElBSW9BZ0FpQVNBRE5nSUVJQUlvQWdRZ0FUWUNBRUhzaXhSQjdJc1VLQUlBUVFGck5nSUFJQUlRTkVIb2l4UW9BZ0FoQVF0QkFDRUNJQUZCNUlzVVJnMEFBMEFnQVNnQ0NDQUNOZ0lRSUFKQkFXb2hBaUFCS0FJRUlnRkI1SXNVUncwQUN3dEI4SXNVUVFFNkFBQWdCUkEwQ3lBRUtBSUVJZ1JCNUlzVVJ3MEFDd3NDUUVIc2l4UW9BZ0JGRFFCQjZJc1VLQUlBSWdFb0FnQWlBa0hraXhRb0FnQWlBeWdDQkRZQ0JDQURLQUlFSUFJMkFnQkI3SXNVUVFBMkFnQWdBVUhraXhSR0RRQURRQ0FCS0FJRUlRTWdBUkEwSUFNaUFVSGtpeFJIRFFBTEMwSHdpeFJCQVRvQUFDQUFLQUlZSWdNRVFDQURFRFFMSUFBb0Fod2lBQVJBSUFBUU5Bc0xOUUVCZnlBQklBQW9BZ1FpQWtFQmRXb2hBU0FBS0FJQUlRQWdBU0FDUVFGeEJIOGdBU2dDQUNBQWFpZ0NBQVVnQUFzUkFRQUwvd0VCQlg4akFFRVFheUlESkFBZ0FDZ0NHQ0VDQWtCQjhJc1VMUUFBQkVBZ0FDQUNRZXlMRkNnQ0FFRVliQkExTmdJWUlBQWdBQ2dDSEVIc2l4UW9BZ0JCR0d3UU5UWUNIRUh3aXhSQkFEb0FBQXdCQ3lBQ0RRQWdBRUhzaXhRb0FnQkJHR3dpQWhBek5nSVlJQUFnQWhBek5nSWNDMEVBSVFKQjZJc1VLQUlBSWdSQjVJc1VSd1JBQTBBQ1FDQUVLQUlJSWdVdEFBUkZCRUFnQTBIa0FEWUNBRUdNaGhSQjBQSVNJQU1RREJvTUFRc2dCU0FCSUFKQkdHd2lCaUFBS0FJWWFpQUFLQUljSUFacUlBVW9BZ0FvQWdBUkV3QWFDeUFDUVFGcUlRSWdCQ2dDQkNJRVFlU0xGRWNOQUFzTElBQW9BaGdoQUNBRFFSQnFKQUFnQUFzZUFDQUJJQUlnQUNnQ0VFRUFJQUVvQWdBb0FnQVJFd0FhSUFBb0FoQUxPd0VCZnlBQklBQW9BZ1FpQlVFQmRXb2hBU0FBS0FJQUlRQWdBU0FDSUFNZ0JDQUZRUUZ4Qkg4Z0FTZ0NBQ0FBYWlnQ0FBVWdBQXNSSEFBTEhnQWdBU0FDUVFBZ0FDZ0NGQ0FCS0FJQUtBSUFFUk1BR2lBQUtBSVVDd2NBSUFBb0Fod0xDUUFnQUJDcUFSQTBDMklCQVg4Z0FFSEk4aEkyQWdBZ0FDZ0NFQ0lCQkVBZ0FSQTBDeUFBS0FJVUlnRUVRQ0FCRURRTElBQW9BaGdpQVFSQUlBRVFOQXNnQUNnQ0hDSUJCRUFnQVJBMEN5QUFRWlR6RWpZQ0FDQUFMQUFQUVFCSUJFQWdBQ2dDQkJBMEN5QUFDeGtBUVlJOFFRWkJrUFVTUWFqMUVrSExBRUhNQUVFQUVBc0xFUUFnQVNBQ0lBTWdCQ0FGSUFBUklnQUw2aTRES253SGZ3RitSQUFBQUFBQUFQQS9JQUFyQXdCRS9LbngwazFpVUQraUlpVWdKYUlnQUNzRENFVDhxZkhTVFdKUVA2SWlKaUFtb3FBZ0FDc0RFRVQ4cWZIU1RXSlFQNklpSnlBbm9xQ2ZveUVGUVlpTkZDc0RBRVFBQUFBQUFBQUFBR0VFUUVHSWpSUkNyWWJ4Mks3Y2pZMC9Od01BQzBHQWpSUXJBd0FoRkVIQWdoUXJBd0FoRHlBRklDYWlJQVVnSmFJUWJDSUpFR29oQndKOElBVWdKNklpQ0wwaU5rSWdpS2RCLy8vLy93ZHhJZ0JCZ0lEQS93TlBCRUFnQ0VRWUxVUlUreUg1UDZKRUFBQUFBQUFBY0RpZ0lEYW5JQUJCZ0lEQS93TnJja1VOQVJwRUFBQUFBQUFBQUFBZ0NDQUlvYU1NQVFzQ1FDQUFRZi8vLy80RFRRUkFJQUJCZ0lCQWFrR0FnSUR5QTBrTkFTQUlJQWdnQ0tJUXRnR2lJQWlnREFJTFJBQUFBQUFBQVBBL0lBaVpvVVFBQUFBQUFBRGdQNklpRFo4aEJpQU5FTFlCSVFVQ2ZDQUFRYlBtdlA4RFR3UkFSQmd0UkZUN0lmay9JQVlnQmFJZ0JxQWlCU0FGb0VRSFhCUXpKcWFSdktDaERBRUxSQmd0UkZUN0llay9JQWE5UW9DQWdJQndnNzhpQ0NBSW9LRWdCaUFHb0NBRm9rUUhYQlF6SnFhUlBDQU5JQWdnQ0tLaElBWWdDS0NqSWdVZ0JhQ2hvYUZFR0MxRVZQc2g2VCtnQ3lJRm1pQUZJRFpDQUZNYklRZ0xJQWdMSVFWQjZJMFVJQWM1QXdCQjhJMFVJQWtRYXprREFFSGdqUlFnQlJCcU9RTUFRZmlORkNBRkVHdWFPUU1BQWtBQ1FBSkFBa0FnQXc0Q0F3QUJDMEVJRUZRaU1FSUFOd01BREFFTFJBQUFBQUFBQUFBQUlRWUNRQUpBQWtBQ1FBSkFJQU8zUkFBQUFBQUFBUEMvb0NJSlJBQUFBQUFBQUFBQVpFVU5BRVFZTFVSVSt5RUpRQ0FKb3lFRlFRQWhBQU5BSUFVZ0JxSkVBQUFBQUFBQUFBQ2dJUWNDUUNBQUlDOUpCRUFnQUNBSE9RTUFJQUJCQ0dvaEFBd0JDeUFBSURGclFRTjFJalZCQVdvaU5FR0FnSUNBQWs4TkEwSC8vLy8vQVNBdklERnJJakpCQW5VaU1DQTBJREFnTkVzYklESkIrUC8vL3dkUEd5SXZCSDhnTDBHQWdJQ0FBazhOQmlBdlFRTjBFRlFGUVFBTElqUWdOVUVEZEdvaU1pQUhPUU1BSURJaE1DQUFJREZIQkVBRFFDQXdRUWhySWpBZ0FFRUlheUlBS3dNQU9RTUFJQUFnTVVjTkFBc0xJQzlCQTNRZ05Hb2hMeUF5UVFocUlRQWdNUVJBSURFUU5Bc2dNQ0V4Q3lBSklETkJBV29pTTdjaUJtUU5BQXNnQUNBdlJnMEFJQUJDbU5xUW9yVy95SVRBQURjREFBd0VDeUF2SURGcklqTkJBM1VpTUVFQmFpSXlRWUNBZ0lBQ1NRMEJDeEJYQUF0Qi8vLy8vd0VnTTBFQ2RTSUFJRElnQUNBeVN4c2dNMEg0Ly8vL0IwOGJJZ0FFZnlBQVFZQ0FnSUFDVHcwQklBQkJBM1FRVkFWQkFBc2dNRUVEZEdvaU1FS1kycENpdGIvSWhNQUFOd01BSUM4Z01VY0VRQU5BSURCQkNHc2lNQ0F2UVFocklpOHJBd0E1QXdBZ0x5QXhSdzBBQ3dzZ01VVU5BU0F4RURRTUFRc1FyZ0VBQ3lBRFFRQk1EUUVMSUFKRUdDMUVWUHNoQ1VDaVJBQUFBQUFBZ0daQW95RW9SQUFBQUFBQUFQQS9JQlFnRktJZ0R5QVBvcU9obnlJRklBV2FvaUV1SUFGQkFVY2hNMEVBSVM4RFFFSDRqUlFyQXdBaERVSHdqUlFyQXdBaER5QXdJQzlCQTNScUt3TUFJZ1VRYWlFR1FlaU5GQ3NEQUNFSUlBOGdCUkJySWdtaUlBWWdDQ0FOb3FLZ0lBaEI0STBVS3dNQUlnZWlSQUFBQUFBQUFBQUFvaUFJSUFrZ0RhSWlCYUlnQmlBUG9xRkVBQUFBQUFBQUFBQ2lvS0FpSGlBbG9pQUdJQThnRGFLaUlBa2dDS0toSUFjZ0Q2SkVBQUFBQUFBQUFBQ2lJQVlnQ0tJZ0R5QUZvcUJFQUFBQUFBQUFBQUNpb0tBaUh5QW1vcUFnQmlBSG9pQUpJQWVpUkFBQUFBQUFBQUFBb2lBTlJBQUFBQUFBQUFBQW9xR2dJaDBnSjZLZ0lnWWdIVUdBalJRckF3QWlEU0FOb2tIQWdoUXJBd0FpQlNBRm9pSUpvNktpSUIwZ0xxSWdIYUlpQjBRQUFBQUFBQUR3UDZBaUNLTWhLeUFmSUFhaUlBaWpJU3dnSGlBR29pQUlveUV0SUFWRUFBQUFBQUFBOEQ4Z0JpQUdvaUlGSUFrZ0NLS2pvWitpSVJJZ0RTQUhSQUFBQUFBQUFQQS9JQVVnQ2FPaG9KK2lJQWlqSVJ3Q2ZBSkFJQjVFQUFBQUFBQUFBQUJoSUI5RUFBQUFBQUFBQUFCaGNTSUFSUTBBSUIxRUFBQUFBQUFBOEQ5aURRQkJpSTRVUWdBM0F3QkJnSTRVUW9DQWdJQ0FnSUQ0UHpjREFFR1FqaFJDQURjREFFUUFBQUFBQUFEd1B5RWlSQUFBQUFBQUFBQUFJU05FQUFBQUFBQUFBQUFoSkVRQUFBQUFBQUR3UHlFZ1JBQUFBQUFBQUFBQUlTRkVBQUFBQUFBQUFBQU1BUXNnQUVVZ0hVUUFBQUFBQUFEd3YySnlSUVJBUVlpT0ZFSUFOd01BUVlDT0ZFS0FnSUNBZ0lDQStEODNBd0JCa0k0VVFnQTNBd0JFQUFBQUFBQUE4TDhoSUVRQUFBQUFBQUR3UHlFaVJBQUFBQUFBQUFBQUlTTkVBQUFBQUFBQUFBQWhKRVFBQUFBQUFBQUFBQ0VoUkFBQUFBQUFBQUFBREFFTFFaQ09GRVFBQUFBQUFBRHdQeUFlSUI2aUlCOGdINktnSWdXZm95SUhSQUFBQUFBQUFBQUFvaUlqT1FNQVFZaU9GQ0FISUI2YW9pSWtPUU1BUVlDT0ZDQWZJQWVpSWlJNUF3QWdIU0Fmb2lBSG9pRWdJQVVnQjVxaUlTRWdIU0Flb2lBSG9nc2hLVUdvamhRZ0lUa0RBRUdnamhRZ0lEa0RBRUdZamhRZ0tUa0RBQ0FkSUNjZ0s2RWlDYUlnSGlBbElDMmhJZ2VpSUNZZ0xLRWlCU0Fmb3FDZ0lSb0NRQ0FTSUJJZ0l5QUpvaUFpSUFlaUlBVWdKS0tnb0NJS0lBcWdJQ0VnQ2FJZ0tTQUhvaUFGSUNDaW9LQWlDNklnRWlBU29pSU1JQW9nQ3FJaUZLRWlCYU1pQ1pvZ0NTQUpvaUFjSUJ5aUloWWdDeUFMb2lJUG9TQUZvMFFBQUFBQUFBQVF3S0tnbnlJRm9TSUhJQVVnQ2FFaUJTQUtJQXVpUkFBQUFBQUFBQUFBWmlJQUcwUUFBQUFBQUFEZ1A2SWlEU0FMSUEwZ0NxS2hJZ21hb3FLaUlCWWdEU0FNSUEyaW9xQ2pJZ1lnQlNBSElBQWJSQUFBQUFBQUFPQS9vaUlISUJJZ0VpQUhJQXNnQnlBS29xRWlCWnFpb3FJZ0ZpQUhJQXdnQjZLaW9LTWlCNklnQmFBaUJhSWdEU0FHb2lBSm9DSU5JQWVpb1VRQUFBQUFBQUFBQUdORkJFQWdCaUVKSUEwaENDQUhJUVlnQlNFTkRBRUxJQWNoQ1NBRklRZ0xJQm9nR3FJaUdpQUtJQW9nQnFFaUJxSWdDeUFMSUEyaElnZWlvS0FnRkNBUG9DQWFvSjhpQlNBYUlBWWdCcUlnQnlBSG9xQ2duNktqRUs4QklRMGdHaUFLSUFvZ0NhRWlFS0lnQ3lBTElBaWhJZ2Vpb0tBZ0JTQWFJQkFnRUtJZ0J5QUhvcUNnbjZLakVLOEJJUVlnQ3lBS0VHd2hFd0pBSURORkJFQWdCa1JTdW83T0lVaTl2cUFnS0NBR0lDaGpHeUVhSUExRVVycU96aUZJdmI2Z0lDZ2dEU0FvWXhzaEZBSkFJQk5FQUFBQUFBQUFBQUJtUlEwQUlCTkVHQzFFVlBzaCtUOWxSUTBBSUFzZ0V5QVVvUkN3QVNJT0lBcWlvU0lKSUJJZ0RpQU9vQ0FTb3FLaUlBNGdES0lnRHFJZ0ZxQWlCYU1pRHlBUG9pQVNJQkthb2lBY29pQWNvaUlISUFrZ0NTQU1vcUtnSUFXalJBQUFBQUFBQUJEQW9xQWhDQ0FMSUJNZ0dxQWlEUkN3QVNJUklBcWlvU0lKSUJJZ0VTQVJvQ0FTb3FLaUlCRWdES0lnRWFJZ0ZxQWlCYU1pQmlBR29pQUhJQWtnQ1NBTW9xS2dJQVdqUkFBQUFBQUFBQkRBb3FBaENTQU9taUVISUJHYUlRVWdEVVFZTFVSVSt5SDVQMlVFUUNBTElBNGdDSjhnRDZGRUFBQUFBQUFBNEQraUloZWlJQW9nQjZLZ29DRVpJQXNnRVNBSm55QUdvVVFBQUFBQUFBRGdQNklpR0tJZ0NpQUZvcUNnSVJVTElBMUVHQzFFVlBzaCtUOWtSUTBBSUFzZ0VTQUdtaUFKbjZGRUFBQUFBQUFBNEQraUloaWlJQW9nQmFLZ29DRVZJQXNnRGlBSW55QVBvVVFBQUFBQUFBRGdQNklpRjZJZ0NpQUhvcUNnSVJrTEFrQWdFMFFZTFVSVSt5SDVQMlJGRFFBZ0UwUVlMVVJVK3lFSlFHVkZEUUFnQ3lBVElCU2hJZ2dRc0FFaURpQUtvcUVpQ1NBU0lBNGdEcUFnRXFLaW9pQU9JQXlpSUE2aUlCYWdJZ1dqSWc4Z0Q2SWdFaUFTbXFJZ0hLSWdIS0lpQnlBSklBa2dES0tpb0NBRm8wUUFBQUFBQUFBUXdLS2dJUTBnQ3lBYUlCT2dFTEFCSWhFZ0NxS2hJZ2tnRWlBUklCR2dJQktpb3FJZ0VTQU1vaUFSb2lBV29DSUZveUlHSUFhaUlBY2dDU0FKSUF5aW9xQWdCYU5FQUFBQUFBQUFFTUNpb0NFSklBNmFJUWNnRVpvaEJTQUlSQmd0UkZUN0lmay9aUVJBSUFzZ0RpQU5ueUFQb1VRQUFBQUFBQURnUDZJaUY2SWdDaUFIb3FDZ0lSa2dDeUFSSUFhYUlBbWZvVVFBQUFBQUFBRGdQNklpR0tJZ0NpQUZvcUNnSVJVTElBaEVHQzFFVlBzaCtUOWtSUTBBSUFzZ0VTQUdtaUFKbjZGRUFBQUFBQUFBNEQraUloaWlJQW9nQmFLZ29DRVZJQXNnRGlBUG1pQU5uNkZFQUFBQUFBQUE0RCtpSWhlaUlBb2dCNktnb0NFWkN3SkFJQk5FR0MxRVZQc2hDY0JtUlEwQUlCTkVHQzFFVlBzaCtiOWxSUTBBSUFzZ0V5QVVvUkN3QVNJT0lBcWlvU0lKSUJJZ0RpQU9vQ0FTb3FLaUlBNGdES0lnRHFJZ0ZxQWlCYU1pRHlBUG9pQVNJQkthb2lBY29pQWNvaUlISUFrZ0NTQU1vcUtnSUFXalJBQUFBQUFBQUJEQW9xQWhDQ0FMSUJvZ0U2QWlEUkN3QVNJUklBcWlvU0lKSUJJZ0VTQVJvQ0FTb3FLaUlCRWdES0lnRWFJZ0ZxQWlCYU1pQmlBR29pQUhJQWtnQ1NBTW9xS2dJQVdqUkFBQUFBQUFBQkRBb3FBaENTQU9taUVISUJHYUlRVWdEVVFZTFVSVSt5SDV2MlVFUUNBTElBNGdENW9nQ0oraFJBQUFBQUFBQU9BL29pSVhvaUFLSUFlaW9LQWhHU0FMSUJFZ0Jwb2dDWitoUkFBQUFBQUFBT0Evb2lJWW9pQUtJQVdpb0tBaEZRc2dEVVFZTFVSVSt5SDV2MlJGRFFBZ0N5QVJJQW1mSUFhaFJBQUFBQUFBQU9BL29pSVlvaUFLSUFXaW9LQWhGU0FMSUE0Z0Q1b2dDSitoUkFBQUFBQUFBT0Evb2lJWG9pQUtJQWVpb0tBaEdRc2dFMFFZTFVSVSt5SDV2MlJGRFFFZ0UwUUFBQUFBQUFBQUFHTkZEUUVnQ3lBVElCU2hJZ2dRc0FFaUVTQUtvcUVpQ1NBU0lCRWdFYUFnRXFLaW9pQVJJQXlpSUJHaUlCYWdJZ1dqSWc4Z0Q2SWdFaUFTbXFJZ0hLSWdIS0lpQnlBSklBa2dES0tpb0NBRm8wUUFBQUFBQUFBUXdLS2dJUTBnQ3lBYUlCT2dFTEFCSWhRZ0NxS2hJZ2tnRWlBVUlCU2dJQktpb3FJZ0ZDQU1vaUFVb2lBV29DSUZveUlHSUFhaUlBY2dDU0FKSUF5aW9xQWdCYU5FQUFBQUFBQUFFTUNpb0NFSklCR2FJUWNnRkpvaEJTQUlSQmd0UkZUN0lmbS9aUVJBSUFzZ0VTQVBtaUFObjZGRUFBQUFBQUFBNEQraUloZWlJQW9nQjZLZ29DRVpJQXNnRkNBSm55QUdvVVFBQUFBQUFBRGdQNklpR0tJZ0NpQUZvcUNnSVJVTElBaEVHQzFFVlBzaCtiOWtSUTBCSUFzZ0ZDQUpueUFHb1VRQUFBQUFBQURnUDZJaUdLSWdDaUFGb3FDZ0lSVWdDeUFSSUEyZklBK2hSQUFBQUFBQUFPQS9vaUlYb2lBS0lBZWlvS0FoR1F3QkMwR3dqUlFnQmtUMVliY0RjWmhjdjZBaUNUa0RBRUdvalJRZ0RVVDFZYmNEY1poY3Y2QWlEVGtEQUVHSWpSUXJBd0FpRVVRQUFBQUFBQUR3UDJORkRRQWdFMFFBQUFBQUFBQUFBR01nRTBRWUxVUlUreUg1djJSeElURWdFMFFZTFVSVSt5RUp3R1pGSUJORUdDMUVWUHNoK2I5bFJYSWhNaUFUUkJndFJGVDdJZmsvWkVVZ0UwUVlMVVJVK3lFSlFHVkZjaUVCSUJORUFBQUFBQUFBQUFCbVJTQVRSQmd0UkZUN0lmay9aVVZ5SVFBZ0hKb2hHaUFNbWlFcUEwQUNRQ0FBRFFBZ0N5QVRJQTJoRUxBQklnWWdDcUtoSWdnZ0RDQUdJQWFnb3FJZ0RDQUdvaUFHb2lBV29DSUZveUliSUJ1aUlDb2dGcUlpQnlBSUlBd2dDS0tpb0NBRm8wUUFBQUFBQUFBUXdLS2dJUlFnQ3lBVElBbWdJZzhRc0FFaUVDQUtvcUVpQ0NBTUlCQWdFS0Npb2lBTUlCQ2lJQkNpSUJhZ0lnV2pJZzRnRHFJZ0J5QUlJQXdnQ0tLaW9DQUZvMFFBQUFBQUFBQVF3S0tnSVFnZ0Jwb2hCeUFRbWlFRklBOUVHQzFFVlBzaCtUOWxCRUFnQ3lBR0lCU2ZJQnVoUkFBQUFBQUFBT0Evb2lJWG9pQUtJQWVpb0tBaEdTQUxJQkFnQ0o4Z0RxRkVBQUFBQUFBQTREK2lJaGlpSUFvZ0JhS2dvQ0VWQ3lBUFJCZ3RSRlQ3SWZrL1pFVU5BQ0FMSUJBZ0Rwb2dDSitoUkFBQUFBQUFBT0Evb2lJWW9pQUtJQVdpb0tBaEZTQUxJQVlnRko4Z0c2RkVBQUFBQUFBQTREK2lJaGVpSUFvZ0I2S2dvQ0VaQ3dKQUlBRU5BQ0FMSUJNZ0RhRWlGQkN3QVNJR0lBcWlvU0lJSUF3Z0JpQUdvS0tpSUF3Z0JxSWdCcUlnRnFBaUJhTWlHeUFib2lBcUlCYWlJZ2NnQ0NBTUlBaWlvcUFnQmFORUFBQUFBQUFBRU1DaW9DRVBJQXNnRXlBSm9CQ3dBU0lRSUFxaW9TSUlJQXdnRUNBUW9LS2lJQXdnRUtJZ0VLSWdGcUFpQmFNaURpQU9vaUFISUFnZ0RDQUlvcUtnSUFXalJBQUFBQUFBQUJEQW9xQWhDQ0FHbWlFSElCQ2FJUVVnRkVRWUxVUlUreUg1UDJVRVFDQUxJQVlnRDU4Z0c2RkVBQUFBQUFBQTREK2lJaGVpSUFvZ0I2S2dvQ0VaSUFzZ0VDQU9taUFJbjZGRUFBQUFBQUFBNEQraUloaWlJQW9nQmFLZ29DRVZDeUFVUkJndFJGVDdJZmsvWkVVTkFDQUxJQkFnRHBvZ0NKK2hSQUFBQUFBQUFPQS9vaUlZb2lBS0lBV2lvS0FoRlNBTElBWWdHNW9nRDUraFJBQUFBQUFBQU9BL29pSVhvaUFLSUFlaW9LQWhHUXNDUUNBeURRQWdDeUFUSUEyaEVMQUJJZ1lnQ3FLaElnZ2dEQ0FHSUFhZ29xSWdEQ0FHb2lBR29pQVdvQ0lGb3lJYklCdWlJQ29nRnFJaUJ5QUlJQXdnQ0tLaW9DQUZvMFFBQUFBQUFBQVF3S0tnSVJRZ0N5QVRJQW1nSWc4UXNBRWlFQ0FLb3FFaUNDQU1JQkFnRUtDaW9pQU1JQkNpSUJDaUlCYWdJZ1dqSWc0Z0RxSWdCeUFJSUF3Z0NLS2lvQ0FGbzBRQUFBQUFBQUFRd0tLZ0lRZ2dCcG9oQnlBUW1pRUZJQTlFR0MxRVZQc2grYjlsQkVBZ0N5QUdJQnVhSUJTZm9VUUFBQUFBQUFEZ1A2SWlGNklnQ2lBSG9xQ2dJUmtnQ3lBUUlBNmFJQWlmb1VRQUFBQUFBQURnUDZJaUdLSWdDaUFGb3FDZ0lSVUxJQTlFR0MxRVZQc2grYjlrUlEwQUlBc2dFQ0FJbnlBT29VUUFBQUFBQUFEZ1A2SWlHS0lnQ2lBRm9xQ2dJUlVnQ3lBR0lCdWFJQlNmb1VRQUFBQUFBQURnUDZJaUY2SWdDaUFIb3FDZ0lSa0xBa0FnTVVVTkFDQUxJQk1nRGFFaUZCQ3dBU0lHSUFxaW9TSUlJQXdnQmlBR29LS2lJQXdnQnFJZ0JxSWdGcUFpQmFNaUd5QWJvaUFxSUJhaUlnY2dDQ0FNSUFpaW9xQWdCYU5FQUFBQUFBQUFFTUNpb0NFUElBc2dFeUFKb0JDd0FTSVFJQXFpb1NJSUlBd2dFQ0FRb0tLaUlBd2dFS0lnRUtJZ0ZxQWlCYU1pRGlBT29pQUhJQWdnRENBSW9xS2dJQVdqUkFBQUFBQUFBQkRBb3FBaENDQUdtaUVISUJDYUlRVWdGRVFZTFVSVSt5SDV2MlVFUUNBTElBWWdHNW9nRDUraFJBQUFBQUFBQU9BL29pSVhvaUFLSUFlaW9LQWhHU0FMSUJBZ0NKOGdEcUZFQUFBQUFBQUE0RCtpSWhpaUlBb2dCYUtnb0NFVkN5QVVSQmd0UkZUN0lmbS9aRVVOQUNBTElCQWdDSjhnRHFGRUFBQUFBQUFBNEQraUloaWlJQW9nQmFLZ29DRVZJQXNnQmlBUG55QWJvVVFBQUFBQUFBRGdQNklpRjZJZ0NpQUhvcUNnSVJrTElBWWdGeUFhSUJ3Z0dVUUFBQUFBQUFBQUFHWWJvaUFNUkFBQUFBQUFBUEEvSUJjZ0VxTWlCU0FGb3FHZm9xTWlCYUVnQlNBR29rUUFBQUFBQUFEd1A2Q2pFTEVCSVFjZ0dDQWFJQndnRlVRQUFBQUFBQUFBQUdZYm9pQU1SQUFBQUFBQUFQQS9JQmdnRXFNaUJTQUZvcUdmb3FNaUJTQVFvU0FGSUJDaVJBQUFBQUFBQVBBL29LTVFzUUZFK01Gakd0eWxURUNpSVFnZ0FpQUhSUGpCWXhyY3BVeEFvaUlGWkFSQVFhaU5GQ0FOUkpxWm1abVptYm0vb0NJTk9RTUFDeUFDSUFoa0JFQkJzSTBVSUFsRW1wbVptWm1adWIrZ0lnazVBd0FMSUFJZ0JhRWdFV1FOQUNBQ0lBaWhJQkZrRFFBTEMwSEFqUlFnSFVRQUFBQUFBQUFBQUtJaUNTQWpJQmVpSUJrZ0lhS2dvQ0Fyb0RrREFFRzRqUlFnSDBRQUFBQUFBQUFBQUtJaUJ5QWtJQmVpSUJrZ0lLS2dvQ0Fzb0RrREFFSElqUlFnSGtRQUFBQUFBQUFBQUtJaUJTQWlJQmlpSUNrZ0ZhS2dvQ0F0b0RrREFFSFFqUlFnTENBSElDUWdHS0lnSUNBVm9xQ2dvRGtEQUVIWWpSUWdLeUFKSUNNZ0dLSWdJU0FWb3FDZ29Ea0RBQ0FFSUM5QkdHeHFJZ0FnQlNBaUlCZWlJQ2tnR2FLZ29DQXRvRVFBQUFBQUFFQ1BRS0k1QXdBZ0FFRzRqUlFyQXdCRUFBQUFBQUJBajBDaU9RTUlJQUJCd0kwVUt3TUFSQUFBQUFBQVFJOUFvamtERUNBRUlBTWdMMnBCR0d4cUlnQkJ5STBVS3dNQVJBQUFBQUFBUUk5QW9qa0RBQ0FBUWRDTkZDc0RBRVFBQUFBQUFFQ1BRS0k1QXdnZ0FFSFlqUlFyQXdCRUFBQUFBQUJBajBDaU9RTVFJQzlCQVdvaUx5QURSdzBBQ3d0QmtJMFVRWkNORkNzREFFUUFBQUFBQUlCbVFLSkVHQzFFVlBzaENVQ2pPUU1BUVppTkZFR1lqUlFyQXdCRUFBQUFBQUNBWmtDaVJCZ3RSRlQ3SVFsQW96a0RBQ0F3QkVBZ01CQTBDd3N2QVFGL1FRUVFXU0lBUWF5Q0ZEWUNBQ0FBUWVEL0V6WUNBQ0FBUWZUL0V6WUNBQ0FBUWNTQUZFSE5BQkFCQUF1dUFnTUJmQUYrQVg4Z0FMMGlBa0lnaUtkQi8vLy8vd2R4SWdOQmdJREEvd05QQkVBZ0FxY2dBMEdBZ01EL0EydHlSUVJBUkFBQUFBQUFBQUFBUkJndFJGVDdJUWxBSUFKQ0FGa2JEd3RFQUFBQUFBQUFBQUFnQUNBQW9hTVBDd0o4SUFOQi8vLy8vZ05OQkVCRUdDMUVWUHNoK1Q4Z0EwR0JnSURqQTBrTkFScEVCMXdVTXlhbWtUd2dBQ0FBSUFDaUVMWUJvcUVnQUtGRUdDMUVWUHNoK1QrZ0R3c2dBa0lBVXdSQVJCZ3RSRlQ3SWZrL0lBQkVBQUFBQUFBQThEK2dSQUFBQUFBQUFPQS9vaUlBbnlJQklBRWdBQkMyQWFKRUIxd1VNeWFta2J5Z29LRWlBQ0FBb0E4TFJBQUFBQUFBQVBBL0lBQ2hSQUFBQUFBQUFPQS9vaUlBbnlJQklBQVF0Z0dpSUFBZ0FiMUNnSUNBZ0hDRHZ5SUFJQUNpb1NBQklBQ2dvNkFnQUtBaUFDQUFvQXNMaEFFQkFuOGpBRUVRYXlJQkpBQUNRQ0FBdlVJZ2lLZEIvLy8vL3dkeElnSkIrOE9rL3dOTkJFQWdBa0dBZ0lEeUEwa05BU0FBUkFBQUFBQUFBQUFBUVFBUXdRRWhBQXdCQ3lBQ1FZQ0F3UDhIVHdSQUlBQWdBS0VoQUF3QkN5QUFJQUVRd2dFaEFpQUJLd01BSUFFckF3Z2dBa0VCY1JEQkFTRUFDeUFCUVJCcUpBQWdBQXYrQXdNRGZBSi9BWDRnQUwwaUJrSWdpS2RCLy8vLy93ZHhJZ1JCZ0lEQW9BUlBCRUFnQUVRWUxVUlUreUg1UHlBQXBpQUF2VUwvLy8vLy8vLy8vLzhBZzBLQWdJQ0FnSUNBK1A4QVZoc1BDd0pBQW44Z0JFSC8vKy8rQTAwRVFFRi9JQVJCZ0lDQThnTlBEUUVhREFJTElBQ1pJUUFnQkVILy84di9BMDBFUUNBRVFmLy9sLzhEVFFSQUlBQWdBS0JFQUFBQUFBQUE4TCtnSUFCRUFBQUFBQUFBQUVDZ295RUFRUUFNQWdzZ0FFUUFBQUFBQUFEd3Y2QWdBRVFBQUFBQUFBRHdQNkNqSVFCQkFRd0JDeUFFUWYvL2pZQUVUUVJBSUFCRUFBQUFBQUFBK0wrZ0lBQkVBQUFBQUFBQStEK2lSQUFBQUFBQUFQQS9vS01oQUVFQ0RBRUxSQUFBQUFBQUFQQy9JQUNqSVFCQkF3c2hCU0FBSUFDaUlnSWdBcUlpQVNBQklBRWdBU0FCUkM5c2FpeEV0S0svb2tTYS9kNVNMZDZ0djZDaVJHMmFkSy95c0xPL29LSkVjUllqL3NaeHZMK2dva1RFNjVpWm1abkp2NkNpSVFNZ0FpQUJJQUVnQVNBQklBRkVFZG9pNHpxdGtEK2lST3NOZGlSTGU2ay9vS0pFVVQzUW9HWU5zVCtnb2tSdUlFekZ6VVczUDZDaVJQK0RBSklrU2NJL29LSkVEVlZWVlZWVjFUK2dvaUVCSUFSQi8vL3YvZ05OQkVBZ0FDQUFJQU1nQWFDaW9ROExJQVZCQTNRaUJFSFEvQkpxS3dNQUlBQWdBeUFCb0tJZ0JFSHcvQkpxS3dNQW9TQUFvYUVpQUpvZ0FDQUdRZ0JUR3lFQUN5QUFDeklBUWNDQ0ZDQUFSUHlwOGRKTllsQS9va0hBZ2hRckF3Q2dJZ0E1QXdCQmdJMFVJQUJFSHd4N3BZams3eitpT1FNQUM2TUVBRUhnL0JOQjk4QUFFQTFCK1B3VFFiaytRUUZCQVVFQUVBNUJoUDBUUVlJOVFRRkJnSDlCL3dBUUVrR2MvUk5CK3p4QkFVR0FmMEgvQUJBU1FaRDlFMEg1UEVFQlFRQkIvd0VRRWtHby9STkJ2enRCQWtHQWdINUIvLzhCRUJKQnRQMFRRYlk3UVFKQkFFSC8vd01RRWtIQS9STkIzanRCQkVHQWdJQ0FlRUgvLy8vL0J4QVNRY3o5RTBIVk8wRUVRUUJCZnhBU1FkVDlFMEdLUDBFRVFZQ0FnSUI0UWYvLy8vOEhFQkpCOVAwVFFZRS9RUVJCQUVGL0VCSkJnUDRUUWZFN1FvQ0FnSUNBZ0lDQWdIOUMvLy8vLy8vLy8vLy9BQkR3QkVHTS9oTkI4RHRDQUVKL0VQQUVRWmorRTBIbU8wRUVFQk5CcFA0VFFkTEFBRUVJRUJOQjhQVVNRYlUvRUE5QnVQWVNRZkxIQUJBUFFZRDNFa0VFUVpzL0VCQkJ6UGNTUVFKQndUOFFFRUdZK0JKQkJFSFFQeEFRUWJUNEVrSE9QaEFSUWR6NEVrRUFRYTNIQUJBVVFZVDVFa0VBUVpQSUFCQVVRYXo1RWtFQlFjdkhBQkFVUWRUNUVrRUNRZnJEQUJBVVFmejVFa0VEUVpuRUFCQVVRYVQ2RWtFRVFjSEVBQkFVUWN6NkVrRUZRZDdFQUJBVVFmVDZFa0VFUWJqSUFCQVVRWno3RWtFRlFkYklBQkFVUVlUNUVrRUFRY1RGQUJBVVFhejVFa0VCUWFQRkFCQVVRZFQ1RWtFQ1FZYkdBQkFVUWZ6NUVrRURRZVRGQUJBVVFhVDZFa0VFUVl6SEFCQVVRY3o2RWtFRlFlckdBQkFVUWNUN0VrRUlRY25HQUJBVVFlejdFa0VKUWFmR0FCQVVRWlQ4RWtFR1FZVEZBQkFVUWJ6OEVrRUhRZjNJQUJBVUN5UUJBbjhnQUNnQ0JDSUFFQzlCQVdvaUFSQXpJZ0lFZnlBQ0lBQWdBUkFyQlVFQUN3c2tBUUYvUWJDT0ZDZ0NBQ0lBQkVBRFFDQUFLQUlBRVFrQUlBQW9BZ1FpQUEwQUN3c0xqUUVBSUFBZ0FDQUFJQUFnQUVRSjkvME40VDBDUDZKRWlMSUJkZUR2U1QrZ29rUTdqMmkxS0lLa3Y2Q2lSRlZFaUE1Vndjay9vS0pFZlcvckF4TFcxTCtnb2tSVlZWVlZWVlhGUDZBZ0FLSWdBQ0FBSUFBZ0FFU0NraTZ4eGJpelA2SkVXUUdORzJ3RzVyK2dva1RJaWxtYzVTb0FRS0NpUkVzdGlod25PZ1BBb0tKRUFBQUFBQUFBOEQrZ293dkxBUUVFZndKQUEwQWdBRVVFUUVFQUlRRkI4SVFVS0FJQUJFQkI4SVFVS0FJQUVMY0JJUUVMUWRpREZDZ0NBRVVOQWlBQklBTnlJUU5CMklNVUtBSUFJUUFNQVFzTElBQW9Ba3hCQUU0aEFnSkFBa0FnQUNnQ0ZDQUFLQUljUmcwQUlBQkJBRUVBSUFBb0FpUVJCQUFhSUFBb0FoUU5BRUYvSVFFZ0FnMEJEQUlMSUFBb0FnUWlBU0FBS0FJSUlnUkhCRUFnQUNBQklBUnJyRUVCSUFBb0FpZ1JGZ0FhQzBFQUlRRWdBRUVBTmdJY0lBQkNBRGNERUNBQVFnQTNBZ1FnQWtVTkFRc0xJQUVnQTNJTDR3RUJCSDhqQUVFZ2F5SUVKQUFnQkNBQk5nSVFJQVFnQWlBQUtBSXdJZ05CQUVkck5nSVVJQUFvQWl3aEJTQUVJQU0yQWh3Z0JDQUZOZ0lZQWtBQ1FDQUFJQUFvQWp3Z0JFRVFha0VDSUFSQkRHb1FGeUlEQkg5QnNJWVVJQU0yQWdCQmZ3VkJBQXNFZjBFZ0JTQUVLQUlNSWdOQkFFb05BVUVnUVJBZ0F4c0xJQUFvQWdCeU5nSUFEQUVMSUFRb0FoUWlCU0FESWdaUERRQWdBQ0FBS0FJc0lnTTJBZ1FnQUNBRElBWWdCV3RxTmdJSUlBQW9BakFFUUNBQUlBTkJBV28yQWdRZ0FTQUNha0VCYXlBRExRQUFPZ0FBQ3lBQ0lRWUxJQVJCSUdva0FDQUdDODRDQVFkL0l3QkJJR3NpQXlRQUlBTWdBQ2dDSENJRU5nSVFJQUFvQWhRaEJTQURJQUkyQWh3Z0F5QUJOZ0lZSUFNZ0JTQUVheUlCTmdJVUlBRWdBbW9oQlVFQ0lRWWdBMEVRYWlFQkFuOERRQUpBQWtBQ1FDQUFLQUk4SUFFZ0JpQURRUXhxRUJnaUJBUi9RYkNHRkNBRU5nSUFRWDhGUVFBTFJRUkFJQVVnQXlnQ0RDSUhSZzBCSUFkQkFFNE5BZ3dEQ3lBRlFYOUhEUUlMSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQUlBRWdBQ2dDTUdvMkFoQWdBZ3dEQ3lBQklBY2dBU2dDQkNJSVN5SUpRUU4wYWlJRUlBY2dDRUVBSUFrYmF5SUlJQVFvQWdCcU5nSUFJQUZCREVFRUlBa2JhaUlCSUFFb0FnQWdDR3MyQWdBZ0JTQUhheUVGSUFZZ0NXc2hCaUFFSVFFTUFRc0xJQUJCQURZQ0hDQUFRZ0EzQXhBZ0FDQUFLQUlBUVNCeU5nSUFRUUFnQmtFQ1JnMEFHaUFDSUFFb0FnUnJDeUVBSUFOQklHb2tBQ0FBQzFZQkFYOGdBQ2dDUENFREl3QkJFR3NpQUNRQUlBTWdBYWNnQVVJZ2lLY2dBa0gvQVhFZ0FFRUlhaEFpSWdJRWYwR3doaFFnQWpZQ0FFRi9CVUVBQ3lFQ0lBQXBBd2doQVNBQVFSQnFKQUJDZnlBQklBSWJDd2tBSUFBb0Fqd1FHUXMwQUFKQVFaaWZGQzBBQUVFQmNRMEFRWmlmRkMwQUFFRUJjUTBBUVp5ZkZFR2dueFJCcEo4VUVCdEJtSjhVUVFFNkFBQUxDNWdmQWc5L0JYNGpBRUdRQVdzaUF5UUFBMEFnQXlBU3AycEJBRG9BQUNBU1FnRjhJaEpDa0FGVURRQUxJQU5CZnpZQ1RDQURJQUEyQWl3Z0EwSFBBRFlDSUNBRElBQTJBbFFnQWlFT1FRQWhBQ01BUWJBQ2F5SUdKQUFnQXlnQ1RCb0NRQUpBQWtBQ1FDQURLQUlFRFFBZ0F4RFFBUm9nQXlnQ0JBMEFEQUVMSUFFdEFBQWlCVVVOQWdKQUFrQUNRQUpBQTBBQ1FBSkFJQVZCL3dGeElnSkJJRVlnQWtFSmEwRUZTWElFUUFOQUlBRWlCVUVCYWlFQklBVXRBQUVpQWtFZ1JpQUNRUWxyUVFWSmNnMEFDeUFEUWdBUTBnRURRQUovSUFNb0FnUWlBU0FES0FKb1J3UkFJQU1nQVVFQmFqWUNCQ0FCTFFBQURBRUxJQU1RMHdFTElnRkJJRVlnQVVFSmEwRUZTWElOQUFzZ0F5Z0NCQ0VCSUFNcEEzQkNBRmtFUUNBRElBRkJBV3NpQVRZQ0JBc2dBU0FES0FJc2E2d2dBeWtEZUNBVWZId2hGQXdCQ3dKL0FrQUNRQ0FDUVNWR0JFQWdBUzBBQVNJQ1FTcEdEUUVnQWtFbFJ3MENDeUFEUWdBUTBnRUNRQ0FCTFFBQVFTVkdCRUFEUUFKL0lBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFNUTB3RUxJZ1VpQWtFZ1JpQUNRUWxyUVFWSmNnMEFDeUFCUVFGcUlRRU1BUXNnQXlnQ0JDSUNJQU1vQW1oSEJFQWdBeUFDUVFGcU5nSUVJQUl0QUFBaEJRd0JDeUFERU5NQklRVUxJQUV0QUFBZ0JVY0VRQ0FES1FOd1FnQlpCRUFnQXlBREtBSUVRUUZyTmdJRUN5QUZRUUJPRFExQkFDRUhJQThORFF3TEN5QURLQUlFSUFNb0FpeHJyQ0FES1FONElCUjhmQ0VVSUFFaEJRd0RDMEVBSVFnZ0FVRUNhZ3dCQ3dKQUlBSkJNR3RCQ2s4TkFDQUJMUUFDUVNSSERRQWpBRUVRYXlJRklBNDJBZ3dnQlNBT0lBSkJNR3NpQWtFQ2RFRUVhMEVBSUFKQkFVc2JhaUlDUVFScU5nSUlJQUlvQWdBaENDQUJRUU5xREFFTElBNG9BZ0FoQ0NBT1FRUnFJUTRnQVVFQmFnc2hBVUVBSVFJRFFDQUJMUUFBSWdSQk1HdEJDa2tFUUNBQlFRRnFJUUVnQWtFS2JDQUVha0V3YXlFQ0RBRUxDMEVBSVF3Z0JFSHRBRVlFUUVFQUlRb2dDRUVBUnlFTUlBRXRBQUVoQkNBQlFRRnFJUUZCQUNFQUN5QUJRUUZxSVFWQkF5RUpJQXdoQndKQUFrQUNRQUpBQWtBQ1FDQUVRZjhCY1VIQkFHc09PZ1FNQkF3RUJBUU1EQXdNQXd3TURBd01EQVFNREF3TUJBd01CQXdNREF3TUJBd0VCQVFFQkFBRUJRd0JEQVFFQkF3TUJBSUVEQXdFREFJTUN5QUJRUUpxSUFVZ0FTMEFBVUhvQUVZaUFSc2hCVUYrUVg4Z0FSc2hDUXdFQ3lBQlFRSnFJQVVnQVMwQUFVSHNBRVlpQVJzaEJVRURRUUVnQVJzaENRd0RDMEVCSVFrTUFndEJBaUVKREFFTFFRQWhDU0FCSVFVTFFRRWdDU0FGTFFBQUlnRkJMM0ZCQTBZaUJCc2hFQUpBSUFGQklISWdBU0FFR3lJTFFkc0FSZzBBQWtBZ0MwSHVBRWNFUUNBTFFlTUFSdzBCUVFFZ0FpQUNRUUZNR3lFQ0RBSUxJQWdnRUNBVUVOa0JEQUlMSUFOQ0FCRFNBUU5BQW44Z0F5Z0NCQ0lCSUFNb0FtaEhCRUFnQXlBQlFRRnFOZ0lFSUFFdEFBQU1BUXNnQXhEVEFRc2lBVUVnUmlBQlFRbHJRUVZKY2cwQUN5QURLQUlFSVFFZ0F5a0RjRUlBV1FSQUlBTWdBVUVCYXlJQk5nSUVDeUFCSUFNb0FpeHJyQ0FES1FONElCUjhmQ0VVQ3lBRElBS3NJaElRMGdFQ1FDQURLQUlFSWdFZ0F5Z0NhRWNFUUNBRElBRkJBV28yQWdRTUFRc2dBeERUQVVFQVNBMEdDeUFES1FOd1FnQlpCRUFnQXlBREtBSUVRUUZyTmdJRUMwRVFJUUVDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUNBTFFkZ0FhdzRoQmdrSkFna0pDUWtKQVFrQ0JBRUJBUWtGQ1FrSkNRa0RCZ2tKQWdrRUNRa0dBQXNnQzBIQkFHc2lBVUVHU3cwSVFRRWdBWFJCOFFCeFJRMElDeUFHUVFocUlBTWdFRUVBRU5jQklBTXBBM2hDQUNBREtBSUVJQU1vQWl4cnJIMVNEUVVNREFzZ0MwRVFja0h6QUVZRVFDQUdRU0JxUVg5QmdRSVFLUm9nQmtFQU9nQWdJQXRCOHdCSERRWWdCa0VBT2dCQklBWkJBRG9BTGlBR1FRQTJBU29NQmdzZ0JrRWdhaUFGTFFBQklnRkIzZ0JHSWdSQmdRSVFLUm9nQmtFQU9nQWdJQVZCQW1vZ0JVRUJhaUFFR3lFSEFuOENRQUpBSUFWQkFrRUJJQVFiYWkwQUFDSUZRUzFIQkVBZ0JVSGRBRVlOQVNBQlFkNEFSeUVKSUFjTUF3c2dCaUFCUWQ0QVJ5SUpPZ0JPREFFTElBWWdBVUhlQUVjaUNUb0FmZ3NnQjBFQmFnc2hCUU5BQWtBZ0JTMEFBQ0lFUVMxSEJFQWdCRVVORHlBRVFkMEFSZzBJREFFTFFTMGhCQ0FGTFFBQklnZEZEUUFnQjBIZEFFWU5BQ0FGUVFGcUlRMENRQ0FISUFWQkFXc3RBQUFpQVUwRVFDQUhJUVFNQVFzRFFDQUJRUUZxSWdFZ0JrRWdhbW9nQ1RvQUFDQUJJQTB0QUFBaUJFa05BQXNMSUEwaEJRc2dCQ0FHYWlBSk9nQWhJQVZCQVdvaEJRd0FDd0FMUVFnaEFRd0NDMEVLSVFFTUFRdEJBQ0VCQzBJQUlSSkJBQ0VFUVFBaEIwRUFJUTBqQUVFUWF5SUpKQUFDUUNBQlFRRkdCRUJCc0lZVVFSdzJBZ0FNQVFzRFFBSi9JQU1vQWdRaUFpQURLQUpvUndSQUlBTWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBTVEwd0VMSWdKQklFWWdBa0VKYTBFRlNYSU5BQXNDUUFKQUlBSkJLMnNPQXdBQkFBRUxRWDlCQUNBQ1FTMUdHeUVOSUFNb0FnUWlBaUFES0FKb1J3UkFJQU1nQWtFQmFqWUNCQ0FDTFFBQUlRSU1BUXNnQXhEVEFTRUNDd0pBQWtBQ1FBSkFBa0FnQVVFQVJ5QUJRUkJIY1EwQUlBSkJNRWNOQUFKL0lBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFNUTB3RUxJZ0pCWDNGQjJBQkdCRUJCRUNFQkFuOGdBeWdDQkNJQ0lBTW9BbWhIQkVBZ0F5QUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0F4RFRBUXNpQWtIUmx4TnFMUUFBUVJCSkRRTWdBeWtEY0VJQVdRUkFJQU1nQXlnQ0JFRUJhellDQkFzZ0EwSUFFTklCREFZTElBRU5BVUVJSVFFTUFnc2dBVUVLSUFFYklnRWdBa0hSbHhOcUxRQUFTdzBBSUFNcEEzQkNBRmtFUUNBRElBTW9BZ1JCQVdzMkFnUUxJQU5DQUJEU0FVR3doaFJCSERZQ0FBd0VDeUFCUVFwSERRQWdBa0V3YXlJRVFRbE5CRUJCQUNFQkEwQWdBVUVLYkNBRWFpSUJRWm16NXN3QlNRSi9JQU1vQWdRaUFpQURLQUpvUndSQUlBTWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBTVEwd0VMSWdKQk1Hc2lCRUVKVFhFTkFBc2dBYTBoRWdzQ1FDQUVRUWxMRFFBZ0VrSUtmaUVUSUFTdElSVURRQ0FUSUJWOElSSUNmeUFES0FJRUlnRWdBeWdDYUVjRVFDQURJQUZCQVdvMkFnUWdBUzBBQUF3QkN5QURFTk1CQ3lJQ1FUQnJJZ1JCQ1VzTkFTQVNRcHF6NXN5WnMrYk1HVm9OQVNBU1FncCtJaE1nQkswaUZVSi9oVmdOQUF0QkNpRUJEQUlMUVFvaEFTQUVRUWxORFFFTUFnc2dBU0FCUVFGcmNRUkFJQUpCMFpjVGFpMEFBQ0lISUFGSkJFQURRQ0FISUFFZ0JHeHFJZ1JCeCtQeE9Fa0NmeUFES0FJRUlnSWdBeWdDYUVjRVFDQURJQUpCQVdvMkFnUWdBaTBBQUF3QkN5QURFTk1CQ3lJQ1FkR1hFMm90QUFBaUJ5QUJTWEVOQUFzZ0JLMGhFZ3NnQVNBSFRRMEJJQUd0SVJNRFFDQVNJQk4rSWhVZ0I2MUMvd0dESWhaQ2Y0VldEUUlnRlNBV2ZDRVNJQUVDZnlBREtBSUVJZ0lnQXlnQ2FFY0VRQ0FESUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFERU5NQkN5SUNRZEdYRTJvdEFBQWlCMDBOQWlBSklCTkNBQ0FTUWdBUVBTQUpLUU1JVUEwQUN3d0JDeUFCUVJkc1FRVjJRUWR4UWRHWkUyb3NBQUFoRVNBQ1FkR1hFMm90QUFBaUJDQUJTUVJBQTBBZ0JDQUhJQkYwY2lJSFFZQ0FnTUFBU1FKL0lBTW9BZ1FpQWlBREtBSm9Sd1JBSUFNZ0FrRUJhallDQkNBQ0xRQUFEQUVMSUFNUTB3RUxJZ0pCMFpjVGFpMEFBQ0lFSUFGSmNRMEFDeUFIclNFU0N5QUJJQVJORFFCQ2Z5QVJyU0lUaUNJVklCSlVEUUFEUUNBRXJVTC9BWU1nRWlBVGhvUWhFaUFCQW44Z0F5Z0NCQ0lDSUFNb0FtaEhCRUFnQXlBQ1FRRnFOZ0lFSUFJdEFBQU1BUXNnQXhEVEFRc2lBa0hSbHhOcUxRQUFJZ1JORFFFZ0VpQVZXQTBBQ3dzZ0FTQUNRZEdYRTJvdEFBQk5EUUFEUUNBQkFuOGdBeWdDQkNJQ0lBTW9BbWhIQkVBZ0F5QUNRUUZxTmdJRUlBSXRBQUFNQVFzZ0F4RFRBUXRCMFpjVGFpMEFBRXNOQUF0QnNJWVVRY1FBTmdJQVFuOGhFa0VBSVEwTElBTXBBM0JDQUZrRVFDQURJQU1vQWdSQkFXczJBZ1FMSUJJZ0Rhd2lFNFVnRTMwaEVnc2dDVUVRYWlRQUlBTXBBM2hDQUNBREtBSUVJQU1vQWl4cnJIMVJEUWNDUUNBTFFmQUFSdzBBSUFoRkRRQWdDQ0FTUGdJQURBTUxJQWdnRUNBU0VOa0JEQUlMSUFoRkRRRWdCaWtERUNFU0lBWXBBd2doRXdKQUFrQUNRQ0FRRGdNQUFRSUVDeUFJSUJNZ0VoQlJPQUlBREFNTElBZ2dFeUFTRUUwNUF3QU1BZ3NnQ0NBVE53TUFJQWdnRWpjRENBd0JDMEVmSUFKQkFXb2dDMEhqQUVjaURSc2hBZ0pBSUJCQkFVWUVRQ0FJSVFRZ0RBUkFJQUpCQW5RUU15SUVSUTBIQ3lBR1FnQTNBcWdDUVFBaEFRTkFJQVFoQUFKQUEwQUNmeUFES0FJRUlnUWdBeWdDYUVjRVFDQURJQVJCQVdvMkFnUWdCQzBBQUF3QkN5QURFTk1CQ3lJRUlBWnFMUUFoUlEwQklBWWdCRG9BR3lBR1FSeHFJQVpCRzJwQkFTQUdRYWdDYWhEVUFTSUVRWDVHRFFCQkFDRUtJQVJCZjBZTkN5QUFCRUFnQUNBQlFRSjBhaUFHS0FJY05nSUFJQUZCQVdvaEFRc2dERVVOQUNBQklBSkhEUUFMUVFFaEJ5QUFJQUlpQVVFQmRFRUJjaUlDUVFKMEVEVWlCQTBCREFzTEMwRUFJUW9nQUNFQ0lBWkJxQUpxSWdRRWZ5QUVLQUlBUlFWQkFRdEZEUWdNQVFzZ0RBUkFRUUFoQVNBQ0VETWlCRVVOQmdOQUlBUWhBQU5BQW44Z0F5Z0NCQ0lFSUFNb0FtaEhCRUFnQXlBRVFRRnFOZ0lFSUFRdEFBQU1BUXNnQXhEVEFRc2lCQ0FHYWkwQUlVVUVRRUVBSVFJZ0FDRUtEQVFMSUFBZ0FXb2dCRG9BQUNBQlFRRnFJZ0VnQWtjTkFBdEJBU0VISUFBZ0FpSUJRUUYwUVFGeUlnSVFOU0lFRFFBTElBQWhDa0VBSVFBTUNRdEJBQ0VCSUFnRVFBTkFBbjhnQXlnQ0JDSUFJQU1vQW1oSEJFQWdBeUFBUVFGcU5nSUVJQUF0QUFBTUFRc2dBeERUQVFzaUFDQUdhaTBBSVFSQUlBRWdDR29nQURvQUFDQUJRUUZxSVFFTUFRVkJBQ0VDSUFnaUFDRUtEQU1MQUFzQUN3TkFBbjhnQXlnQ0JDSUFJQU1vQW1oSEJFQWdBeUFBUVFGcU5nSUVJQUF0QUFBTUFRc2dBeERUQVFzZ0Jtb3RBQ0VOQUF0QkFDRUFRUUFoQ2tFQUlRSUxJQU1vQWdRaEJDQURLUU53UWdCWkJFQWdBeUFFUVFGcklnUTJBZ1FMSUFNcEEzZ2dCQ0FES0FJc2E2eDhJaE5RRFFJZ0RTQVNJQk5SY2tVTkFpQU1CRUFnQ0NBQU5nSUFDd0pBSUF0QjR3QkdEUUFnQWdSQUlBSWdBVUVDZEdwQkFEWUNBQXNnQ2tVRVFFRUFJUW9NQVFzZ0FTQUtha0VBT2dBQUN5QUNJUUFMSUFNb0FnUWdBeWdDTEd1c0lBTXBBM2dnRkh4OElSUWdEeUFJUVFCSGFpRVBDeUFGUVFGcUlRRWdCUzBBQVNJRkRRRU1DQXNMSUFJaEFBd0JDMEVCSVFkQkFDRUtRUUFoQUF3Q0N5QU1JUWNNQXdzZ0RDRUhDeUFQRFFFTFFYOGhEd3NnQjBVTkFDQUtFRFFnQUJBMEN5QUdRYkFDYWlRQUlBTkJrQUZxSkFBZ0R3c0VBRUVBQ3dRQVFnQUxUUUVDZnlBQkxRQUFJUUlDUUNBQUxRQUFJZ05GRFFBZ0FpQURSdzBBQTBBZ0FTMEFBU0VDSUFBdEFBRWlBMFVOQVNBQlFRRnFJUUVnQUVFQmFpRUFJQUlnQTBZTkFBc0xJQU1nQW1zTHFBTURBbndEZndGK0lBQzlJZ2hDSUlpbklnVkIrUC8vL3dkeFFhaW9sdjhEU1NJR1JRUkFSQmd0UkZUN0llay9JQUFnQUpvZ0NFSUFXU0lIRzZGRUIxd1VNeWFtZ1R3Z0FTQUJtaUFIRzZHZ0lRQWdCVUVmZGlFRlJBQUFBQUFBQUFBQUlRRUxJQUFnQUNBQUlBQ2lJZ1NpSWdORVkxVlZWVlZWMVQraUlBUWdBeUFFSUFTaUlnTWdBeUFESUFNZ0EwUnpVMkRieTNYenZxSkVwcEkzb0loK0ZEK2dva1FCWmZMeTJFUkRQNkNpUkNnRFZza2liVzAvb0tKRU45WUdoUFJrbGorZ29rUjYvaEFSRVJIQlA2QWdCQ0FESUFNZ0F5QURJQU5FMUhxL2RIQXErejZpUk9tbjhESVB1Qkkvb0tKRWFCQ05HdmNtTUQrZ29rUVZnK0QreU50WFA2Q2lSSk9FYnVuakpvSS9vS0pFL2tHekc3cWhxeitnb3FDaUlBR2dvaUFCb0tBaUE2QWhBU0FHUlFSQVFRRWdBa0VCZEd1M0lnUWdBQ0FESUFFZ0FhSWdBU0FFb0tPaG9DSUFJQUNnb1NJQW1pQUFJQVViRHdzZ0FnUjhSQUFBQUFBQUFQQy9JQUdqSWdRZ0JMMUNnSUNBZ0hDRHZ5SUVJQU1nQWIxQ2dJQ0FnSENEdnlJQklBQ2hvYUlnQkNBQm9rUUFBQUFBQUFEd1A2Q2dvaUFFb0FVZ0FRc0x1eGdERkg4RWZBRitJd0JCTUdzaUNDUUFBa0FDUUFKQUlBQzlJaHBDSUlpbklnTkIvLy8vL3dkeElnVkIrdFM5Z0FSTkJFQWdBMEgvL3o5eFFmdkRKRVlOQVNBRlFmeXlpNEFFVFFSQUlCcENBRmtFUUNBQklBQkVBQUJBVlBzaCtiK2dJZ0JFTVdOaUdtRzAwTDJnSWhZNUF3QWdBU0FBSUJhaFJERmpZaHBodE5DOW9Ea0RDRUVCSVFNTUJRc2dBU0FBUkFBQVFGVDdJZmsvb0NJQVJERmpZaHBodE5BOW9DSVdPUU1BSUFFZ0FDQVdvVVF4WTJJYVliVFFQYUE1QXdoQmZ5RUREQVFMSUJwQ0FGa0VRQ0FCSUFCRUFBQkFWUHNoQ2NDZ0lnQkVNV05pR21HMDRMMmdJaFk1QXdBZ0FTQUFJQmFoUkRGallocGh0T0M5b0RrRENFRUNJUU1NQkFzZ0FTQUFSQUFBUUZUN0lRbEFvQ0lBUkRGallocGh0T0E5b0NJV09RTUFJQUVnQUNBV29VUXhZMklhWWJUZ1BhQTVBd2hCZmlFRERBTUxJQVZCdTR6eGdBUk5CRUFnQlVHOCs5ZUFCRTBFUUNBRlFmeXl5NEFFUmcwQ0lCcENBRmtFUUNBQklBQkVBQUF3ZjN6WkVzQ2dJZ0JFeXBTVHA1RU82YjJnSWhZNUF3QWdBU0FBSUJhaFJNcVVrNmVSRHVtOW9Ea0RDRUVESVFNTUJRc2dBU0FBUkFBQU1IOTgyUkpBb0NJQVJNcVVrNmVSRHVrOW9DSVdPUU1BSUFFZ0FDQVdvVVRLbEpPbmtRN3BQYUE1QXdoQmZTRUREQVFMSUFWQis4UGtnQVJHRFFFZ0drSUFXUVJBSUFFZ0FFUUFBRUJVK3lFWndLQWlBRVF4WTJJYVliVHd2YUFpRmprREFDQUJJQUFnRnFGRU1XTmlHbUcwOEwyZ09RTUlRUVFoQXd3RUN5QUJJQUJFQUFCQVZQc2hHVUNnSWdCRU1XTmlHbUcwOEQyZ0loWTVBd0FnQVNBQUlCYWhSREZqWWhwaHRQQTlvRGtEQ0VGOElRTU1Bd3NnQlVINncrU0pCRXNOQVFzZ0FDQUFSSVBJeVcwd1grUS9va1FBQUFBQUFBQTRRNkJFQUFBQUFBQUFPTU9nSWhkRUFBQkFWUHNoK2IraW9DSVdJQmRFTVdOaUdtRzAwRDJpSWhpaElobEVHQzFFVlBzaDZiOWpJUUlDZnlBWG1VUUFBQUFBQUFEZ1FXTUVRQ0FYcWd3QkMwR0FnSUNBZUFzaEF3SkFJQUlFUUNBRFFRRnJJUU1nRjBRQUFBQUFBQUR3djZBaUYwUXhZMklhWWJUUVBhSWhHQ0FBSUJkRUFBQkFWUHNoK2IraW9DRVdEQUVMSUJsRUdDMUVWUHNoNlQ5a1JRMEFJQU5CQVdvaEF5QVhSQUFBQUFBQUFQQS9vQ0lYUkRGallocGh0TkE5b2lFWUlBQWdGMFFBQUVCVSt5SDV2NktnSVJZTElBRWdGaUFZb1NJQU9RTUFBa0FnQlVFVWRpSUNJQUM5UWpTSXAwSC9EM0ZyUVJGSURRQWdBU0FXSUJkRUFBQmdHbUcwMEQyaUlnQ2hJaGtnRjBSemNBTXVpaG1qTzZJZ0ZpQVpvU0FBb2FFaUdLRWlBRGtEQUNBQ0lBQzlRalNJcDBIL0QzRnJRVEpJQkVBZ0dTRVdEQUVMSUFFZ0dTQVhSQUFBQUM2S0dhTTdvaUlBb1NJV0lCZEV3VWtnSlpxRGV6bWlJQmtnRnFFZ0FLR2hJaGloSWdBNUF3QUxJQUVnRmlBQW9TQVlvVGtEQ0F3QkN5QUZRWUNBd1A4SFR3UkFJQUVnQUNBQW9TSUFPUU1BSUFFZ0FEa0RDRUVBSVFNTUFRc2dHa0wvLy8vLy8vLy9CNE5DZ0lDQWdJQ0FnTERCQUlTL0lRQkJBQ0VEUVFFaEFnTkFJQWhCRUdvZ0EwRURkR29DZnlBQW1VUUFBQUFBQUFEZ1FXTUVRQ0FBcWd3QkMwR0FnSUNBZUF1M0loWTVBd0FnQUNBV29VUUFBQUFBQUFCd1FhSWhBRUVCSVFNZ0FpRUVRUUFoQWlBRURRQUxJQWdnQURrRElFRUNJUU1EUUNBRElnSkJBV3NoQXlBSVFSQnFJQUpCQTNScUt3TUFSQUFBQUFBQUFBQUFZUTBBQ3dKL0lBaEJFR29oRDBFQUlRUWpBRUd3QkdzaUJpUUFJQVZCRkhaQmxnaHJJZ05CQTJ0QkdHMGlCVUVBSUFWQkFFb2JJaEJCYUd3Z0Eyb2hCVUhVL1JJb0FnQWlDU0FDUVFGcUlncEJBV3NpQjJwQkFFNEVRQ0FKSUFwcUlRTWdFQ0FIYXlFQ0EwQWdCa0hBQW1vZ0JFRURkR29nQWtFQVNBUjhSQUFBQUFBQUFBQUFCU0FDUVFKMFFlRDlFbW9vQWdDM0N6a0RBQ0FDUVFGcUlRSWdCRUVCYWlJRUlBTkhEUUFMQ3lBRlFSaHJJUXhCQUNFRElBbEJBQ0FKUVFCS0d5RUVJQXBCQUV3aEN3TkFBa0FnQ3dSQVJBQUFBQUFBQUFBQUlRQU1BUXNnQXlBSGFpRU9RUUFoQWtRQUFBQUFBQUFBQUNFQUEwQWdEeUFDUVFOMGFpc0RBQ0FHUWNBQ2FpQU9JQUpyUVFOMGFpc0RBS0lnQUtBaEFDQUNRUUZxSWdJZ0NrY05BQXNMSUFZZ0EwRURkR29nQURrREFDQURJQVJHSVFJZ0EwRUJhaUVESUFKRkRRQUxRUzhnQldzaEUwRXdJQVZySVE0Z0JVRVpTQ0VSSUFWQkdXc2hGQ0FKSVFNRFFDQUdJQU5CQTNScUt3TUFJUUJCQUNFQ0lBTWhCQ0FEUVFCTUlnMUZCRUFEUUNBR1FlQURhaUFDUVFKMGFnSi9BbjhnQUVRQUFBQUFBQUJ3UHFJaUZwbEVBQUFBQUFBQTRFRmpCRUFnRnFvTUFRdEJnSUNBZ0hnTHR5SVdSQUFBQUFBQUFIREJvaUFBb0NJQW1VUUFBQUFBQUFEZ1FXTUVRQ0FBcWd3QkMwR0FnSUNBZUFzMkFnQWdCaUFFUVFGcklnUkJBM1JxS3dNQUlCYWdJUUFnQWtFQmFpSUNJQU5IRFFBTEN3Si9JQUFnREJBd0lnQWdBRVFBQUFBQUFBREFQNktjUkFBQUFBQUFBQ0RBb3FBaUFKbEVBQUFBQUFBQTRFRmpCRUFnQUtvTUFRdEJnSUNBZ0hnTElRY2dBQ0FIdDZFaEFBSkFBa0FDUUFKL0lCRkZCRUFnQTBFQ2RDQUdhaUlDSUFJb0F0d0RJZ0lnQWlBT2RTSUNJQTUwYXlJRU5nTGNBeUFDSUFkcUlRY2dCQ0FUZFF3QkN5QU1EUUVnQTBFQ2RDQUdhaWdDM0FOQkYzVUxJZ3RCQUV3TkFnd0JDMEVDSVFzZ0FFUUFBQUFBQUFEZ1AyWU5BRUVBSVFzTUFRdEJBQ0VDUVFBaEJDQU5SUVJBQTBBZ0JrSGdBMm9nQWtFQ2RHb2lGU2dDQUNFTlFmLy8vd2NoRWdKL0FrQWdCQTBBUVlDQWdBZ2hFaUFORFFCQkFBd0JDeUFWSUJJZ0RXczJBZ0JCQVFzaEJDQUNRUUZxSWdJZ0EwY05BQXNMQWtBZ0VRMEFRZi8vL3dNaEFnSkFBa0FnRkE0Q0FRQUNDMEgvLy84QklRSUxJQU5CQW5RZ0Jtb2lEU0FOS0FMY0F5QUNjVFlDM0FNTElBZEJBV29oQnlBTFFRSkhEUUJFQUFBQUFBQUE4RDhnQUtFaEFFRUNJUXNnQkVVTkFDQUFSQUFBQUFBQUFQQS9JQXdRTUtFaEFBc0NRQUpBSUFCRUFBQUFBQUFBQUFCaEJFQkJBQ0VFSUFNaEFpQURJQWxNRFFJRFFDQUdRZUFEYWlBQ1FRRnJJZ0pCQW5ScUtBSUFJQVJ5SVFRZ0FpQUpTZzBBQ3lBRVJRMENJQXdoQlFOQUlBVkJHR3NoQlNBR1FlQURhaUFEUVFGcklnTkJBblJxS0FJQVJRMEFDd3dCQ3dKQUlBQkJHQ0FGYXhBd0lnQkVBQUFBQUFBQWNFRm1CRUFnQmtIZ0Eyb2dBMEVDZEdvQ2Z3Si9JQUJFQUFBQUFBQUFjRDZpSWhhWlJBQUFBQUFBQU9CQll3UkFJQmFxREFFTFFZQ0FnSUI0Q3lJQ3QwUUFBQUFBQUFCd3dhSWdBS0FpQUpsRUFBQUFBQUFBNEVGakJFQWdBS29NQVF0QmdJQ0FnSGdMTmdJQUlBTkJBV29oQXd3QkN3Si9JQUNaUkFBQUFBQUFBT0JCWXdSQUlBQ3FEQUVMUVlDQWdJQjRDeUVDSUF3aEJRc2dCa0hnQTJvZ0EwRUNkR29nQWpZQ0FBdEVBQUFBQUFBQThEOGdCUkF3SVFBZ0EwRUFUZ1JBSUFNaEFnTkFJQVlnQWlJRVFRTjBhaUFBSUFaQjRBTnFJQUpCQW5ScUtBSUF0Nkk1QXdBZ0FrRUJheUVDSUFCRUFBQUFBQUFBY0Q2aUlRQWdCQTBBQ3lBRElRUURRRVFBQUFBQUFBQUFBQ0VBUVFBaEFpQUpJQU1nQkdzaUJTQUZJQWxLR3lJTVFRQk9CRUFEUUNBQ1FRTjBRYkNURTJvckF3QWdCaUFDSUFScVFRTjBhaXNEQUtJZ0FLQWhBQ0FDSUF4SElRb2dBa0VCYWlFQ0lBb05BQXNMSUFaQm9BRnFJQVZCQTNScUlBQTVBd0FnQkVFQVNpRUNJQVJCQVdzaEJDQUNEUUFMQzBRQUFBQUFBQUFBQUNFQUlBTkJBRTRFUUNBRElRSURRQ0FDSWdSQkFXc2hBaUFBSUFaQm9BRnFJQVJCQTNScUt3TUFvQ0VBSUFRTkFBc0xJQWdnQUpvZ0FDQUxHemtEQUNBR0t3T2dBU0FBb1NFQVFRRWhBaUFEUVFCS0JFQURRQ0FBSUFaQm9BRnFJQUpCQTNScUt3TUFvQ0VBSUFJZ0EwY2hCQ0FDUVFGcUlRSWdCQTBBQ3dzZ0NDQUFtaUFBSUFzYk9RTUlJQVpCc0FScUpBQWdCMEVIY1F3Q0MwRUJJUUlEUUNBQ0lnUkJBV29oQWlBR1FlQURhaUFKSUFSclFRSjBhaWdDQUVVTkFBc2dBeUFFYWlFRUEwQWdCa0hBQW1vZ0F5QUthaUlIUVFOMGFpQURRUUZxSWdNZ0VHcEJBblJCNFAwU2FpZ0NBTGM1QXdCQkFDRUNSQUFBQUFBQUFBQUFJUUFnQ2tFQVNnUkFBMEFnRHlBQ1FRTjBhaXNEQUNBR1FjQUNhaUFISUFKclFRTjBhaXNEQUtJZ0FLQWhBQ0FDUVFGcUlnSWdDa2NOQUFzTElBWWdBMEVEZEdvZ0FEa0RBQ0FESUFSSURRQUxJQVFoQXd3QUN3QUxJUU1nQ0NzREFDRUFJQnBDQUZNRVFDQUJJQUNhT1FNQUlBRWdDQ3NEQ0pvNUF3aEJBQ0FEYXlFRERBRUxJQUVnQURrREFDQUJJQWdyQXdnNUF3Z0xJQWhCTUdva0FDQURDMzhDQVg4QmZpQUF2U0lEUWpTSXAwSC9EM0VpQWtIL0QwY0VmQ0FDUlFSQUlBRWdBRVFBQUFBQUFBQUFBR0VFZjBFQUJTQUFSQUFBQUFBQUFQQkRvaUFCRU1NQklRQWdBU2dDQUVGQWFnczJBZ0FnQUE4TElBRWdBa0grQjJzMkFnQWdBMEwvLy8vLy8vLy9oNEIvZzBLQWdJQ0FnSUNBOEQrRXZ3VWdBQXNMeGdJQkJIOGpBRUhRQVdzaUJTUUFJQVVnQWpZQ3pBRWdCVUdnQVdvaUFrRUFRU2dRS1JvZ0JTQUZLQUxNQVRZQ3lBRUNRRUVBSUFFZ0JVSElBV29nQlVIUUFHb2dBaUFESUFRUXhRRkJBRWdFUUVGL0lRUU1BUXNnQUNnQ1RFRUFUaUVHSUFBZ0FDZ0NBQ0lJUVY5eE5nSUFBbjhDUUFKQUlBQW9BakJGQkVBZ0FFSFFBRFlDTUNBQVFRQTJBaHdnQUVJQU53TVFJQUFvQWl3aEJ5QUFJQVUyQWl3TUFRc2dBQ2dDRUEwQkMwRi9JQUFRS2cwQkdnc2dBQ0FCSUFWQnlBRnFJQVZCMEFCcUlBVkJvQUZxSUFNZ0JCREZBUXNoQWlBSEJFQWdBRUVBUVFBZ0FDZ0NKQkVFQUJvZ0FFRUFOZ0l3SUFBZ0J6WUNMQ0FBUVFBMkFod2dBQ2dDRkNFQklBQkNBRGNERUNBQ1FYOGdBUnNoQWdzZ0FDQUFLQUlBSWdBZ0NFRWdjWEkyQWdCQmZ5QUNJQUJCSUhFYklRUWdCa1VOQUFzZ0JVSFFBV29rQUNBRUM1MFRBaE4vQVg0akFFSFFBR3NpQ0NRQUlBZ2dBVFlDVENBSVFUZHFJUmdnQ0VFNGFpRVNBa0FDUUFKQUEwQkJBQ0VIQTBBZ0FTRU5JQWNnRVVILy8vLy9CM05LRFFJZ0J5QVJhaUVSQWtBQ1FBSkFJQTBpQnkwQUFDSUxCRUFEUUFKQUFrQWdDMEgvQVhFaUFVVUVRQ0FISVFFTUFRc2dBVUVsUncwQklBY2hDd05BSUFzdEFBRkJKVWNFUUNBTElRRU1BZ3NnQjBFQmFpRUhJQXN0QUFJaENTQUxRUUpxSWdFaEN5QUpRU1ZHRFFBTEN5QUhJQTFySWdjZ0VVSC8vLy8vQjNNaUdVb05DQ0FBQkVBZ0FDQU5JQWNReGdFTElBY05CaUFJSUFFMkFrd2dBVUVCYWlFSFFYOGhFQUpBSUFFc0FBRWlDVUV3YTBFS1R3MEFJQUV0QUFKQkpFY05BQ0FCUVFOcUlRY2dDVUV3YXlFUVFRRWhFd3NnQ0NBSE5nSk1RUUFoREFKQUlBY3NBQUFpQzBFZ2F5SUJRUjlMQkVBZ0J5RUpEQUVMSUFjaENVRUJJQUYwSWdGQmlkRUVjVVVOQUFOQUlBZ2dCMEVCYWlJSk5nSk1JQUVnREhJaERDQUhMQUFCSWd0QklHc2lBVUVnVHcwQklBa2hCMEVCSUFGMElnRkJpZEVFY1EwQUN3c0NRQ0FMUVNwR0JFQUNmd0pBSUFrc0FBRWlBVUV3YTBFS1R3MEFJQWt0QUFKQkpFY05BQ0FCUVRCcklRRUNmeUFBUlFSQUlBUWdBVUVDZEdwQkNqWUNBRUVBREFFTElBTWdBVUVEZEdvb0FnQUxJUThnQ1VFRGFpRUJRUUVNQVFzZ0V3MEdJQWxCQVdvaEFTQUFSUVJBSUFnZ0FUWUNURUVBSVJOQkFDRVBEQU1MSUFJZ0FpZ0NBQ0lIUVFScU5nSUFJQWNvQWdBaEQwRUFDeUVUSUFnZ0FUWUNUQ0FQUVFCT0RRRkJBQ0FQYXlFUElBeEJnTUFBY2lFTURBRUxJQWhCekFCcUVNY0JJZzlCQUVnTkNTQUlLQUpNSVFFTFFRQWhCMEYvSVFvQ2YwRUFJQUV0QUFCQkxrY05BQm9nQVMwQUFVRXFSZ1JBQW44Q1FDQUJMQUFDSWdsQk1HdEJDazhOQUNBQkxRQURRU1JIRFFBZ0NVRXdheUVKSUFGQkJHb2hBUUovSUFCRkJFQWdCQ0FKUVFKMGFrRUtOZ0lBUVFBTUFRc2dBeUFKUVFOMGFpZ0NBQXNNQVFzZ0V3MEdJQUZCQW1vaEFVRUFJQUJGRFFBYUlBSWdBaWdDQUNJSlFRUnFOZ0lBSUFrb0FnQUxJUW9nQ0NBQk5nSk1JQXBCZjNOQkgzWU1BUXNnQ0NBQlFRRnFOZ0pNSUFoQnpBQnFFTWNCSVFvZ0NDZ0NUQ0VCUVFFTElSUURRQ0FISVJWQkhDRU9JQUVpRnl3QUFDSUhRZnNBYTBGR1NRMEtJQmRCQVdvaEFTQUhJQlZCT214cVFhK1RFMm90QUFBaUIwRUJhMEVJU1EwQUN5QUlJQUUyQWt3Q1FDQUhRUnRIQkVBZ0IwVU5DeUFRUVFCT0JFQWdBRVVFUUNBRUlCQkJBblJxSUFjMkFnQU1Dd3NnQ0NBRElCQkJBM1JxS1FNQU53TkFEQUlMSUFCRkRRY2dDRUZBYXlBSElBSWdCaERJQVF3QkN5QVFRUUJPRFFwQkFDRUhJQUJGRFFjTFFYOGhEaUFBTFFBQVFTQnhEUW9nREVILy8zdHhJZ3NnRENBTVFZREFBSEViSVF4QkFDRVFRWW83SVJZZ0VpRUpBa0FDUUFKQUFuOENRQUpBQWtBQ1FBSi9Ba0FDUUFKQUFrQUNRQUpBQWtBZ0Z5d0FBQ0lIUVY5eElBY2dCMEVQY1VFRFJoc2dCeUFWR3lJSFFkZ0FhdzRoQkJRVUZCUVVGQlFVRGhRUEJnNE9EaFFHRkJRVUZBSUZBeFFVQ1JRQkZCUUVBQXNDUUNBSFFjRUFhdzRIRGhRTEZBNE9EZ0FMSUFkQjB3QkdEUWtNRXdzZ0NDa0RRQ0VhUVlvN0RBVUxRUUFoQndKQUFrQUNRQUpBQWtBQ1FBSkFJQlZCL3dGeERnZ0FBUUlEQkJvRkJob0xJQWdvQWtBZ0VUWUNBQXdaQ3lBSUtBSkFJQkUyQWdBTUdBc2dDQ2dDUUNBUnJEY0RBQXdYQ3lBSUtBSkFJQkU3QVFBTUZnc2dDQ2dDUUNBUk9nQUFEQlVMSUFnb0FrQWdFVFlDQUF3VUN5QUlLQUpBSUJHc053TUFEQk1MUVFnZ0NpQUtRUWhOR3lFS0lBeEJDSEloREVINEFDRUhDeUFTSVEwZ0IwRWdjU0VMSUFncEEwQWlHa0lBVWdSQUEwQWdEVUVCYXlJTklCcW5RUTl4UWNDWEUyb3RBQUFnQzNJNkFBQWdHa0lQVmlFT0lCcENCSWdoR2lBT0RRQUxDeUFJS1FOQVVBMERJQXhCQ0hGRkRRTWdCMEVFZGtHS08yb2hGa0VDSVJBTUF3c2dFaUVISUFncEEwQWlHa0lBVWdSQUEwQWdCMEVCYXlJSElCcW5RUWR4UVRCeU9nQUFJQnBDQjFZaERTQWFRZ09JSVJvZ0RRMEFDd3NnQnlFTklBeEJDSEZGRFFJZ0NpQVNJQTFySWdkQkFXb2dCeUFLU0JzaENnd0NDeUFJS1FOQUlocENBRk1FUUNBSVFnQWdHbjBpR2pjRFFFRUJJUkJCaWpzTUFRc2dERUdBRUhFRVFFRUJJUkJCaXpzTUFRdEJqRHRCaWpzZ0RFRUJjU0lRR3dzaEZpQWFJQklReVFFaERRc2dGRUVBSUFwQkFFZ2JEUThnREVILy8zdHhJQXdnRkJzaERBSkFJQWdwQTBBaUdrSUFVZzBBSUFvTkFDQVNJUTFCQUNFS0RBd0xJQW9nR2xBZ0VpQU5hMm9pQnlBSElBcElHeUVLREFzTElBZ29Ba0FpQjBHbDdSSWdCeHNpRFNJSFFRQkIvLy8vL3djZ0NpQUtRZi8vLy84SFR4c2lDUkNSQVNJTUlBZHJJQWtnREJzaUJ5QU5haUVKSUFwQkFFNEVRQ0FMSVF3Z0J5RUtEQXNMSUFzaERDQUhJUW9nQ1MwQUFBME9EQW9MSUFvRVFDQUlLQUpBREFJTFFRQWhCeUFBUVNBZ0QwRUFJQXdReWdFTUFnc2dDRUVBTmdJTUlBZ2dDQ2tEUUQ0Q0NDQUlJQWhCQ0dvaUJ6WUNRRUYvSVFvZ0J3c2hDMEVBSVFjQ1FBTkFJQXNvQWdBaUNVVU5BUUpBSUFoQkJHb2dDUkRMQVNJSlFRQklJZzBOQUNBSklBb2dCMnRMRFFBZ0MwRUVhaUVMSUFjZ0NXb2lCeUFLU1EwQkRBSUxDeUFORFE0TFFUMGhEaUFIUVFCSURRd2dBRUVnSUE4Z0J5QU1FTW9CSUFkRkJFQkJBQ0VIREFFTFFRQWhDU0FJS0FKQUlRc0RRQ0FMS0FJQUlnMUZEUUVnQ0VFRWFpQU5FTXNCSWcwZ0NXb2lDU0FIU3cwQklBQWdDRUVFYWlBTkVNWUJJQXRCQkdvaEN5QUhJQWxMRFFBTEN5QUFRU0FnRHlBSElBeEJnTUFBY3hES0FTQVBJQWNnQnlBUFNCc2hCd3dJQ3lBVVFRQWdDa0VBU0JzTkNVRTlJUTRnQUNBSUt3TkFJQThnQ2lBTUlBY2dCUkVrQUNJSFFRQk9EUWNNQ2dzZ0NDQUlLUU5BUEFBM1FRRWhDaUFZSVEwZ0N5RU1EQVFMSUFjdEFBRWhDeUFIUVFGcUlRY01BQXNBQ3lBUklRNGdBQTBISUJORkRRSkJBU0VIQTBBZ0JDQUhRUUowYWlnQ0FDSUFCRUFnQXlBSFFRTjBhaUFBSUFJZ0JoRElBVUVCSVE0Z0IwRUJhaUlIUVFwSERRRU1DUXNMUVFFaERpQUhRUXBQRFFjRFFDQUVJQWRCQW5ScUtBSUFEUUVnQjBFQmFpSUhRUXBIRFFBTERBY0xRUndoRGd3RkN5QUtJQWtnRFdzaUN5QUtJQXRLR3lJS0lCQkIvLy8vL3dkelNnMERRVDBoRGlBUElBb2dFR29pQ1NBSklBOUlHeUlISUJsS0RRUWdBRUVnSUFjZ0NTQU1FTW9CSUFBZ0ZpQVFFTVlCSUFCQk1DQUhJQWtnREVHQWdBUnpFTW9CSUFCQk1DQUtJQXRCQUJES0FTQUFJQTBnQ3hER0FTQUFRU0FnQnlBSklBeEJnTUFBY3hES0FRd0JDd3NMUVFBaERnd0NDMEU5SVE0TFFiQ0dGQ0FPTmdJQVFYOGhEZ3NnQ0VIUUFHb2tBQ0FPQ3hjQUlBQXRBQUJCSUhGRkJFQWdBU0FDSUFBUUxCb0xDMTBCQTM4Z0FDZ0NBQ0VDQTBBZ0Fpd0FBQ0lEUVRCclFRcEpCRUFnQUNBQ1FRRnFJZ0kyQWdBZ0FVSE1tYlBtQUUwRWYwRi9JQU5CTUdzaUF5QUJRUXBzSWdGcUlBTWdBVUgvLy8vL0IzTktHd1ZCZndzaEFRd0JDd3NnQVF2RUFnQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJRUWxyRGhJQUNnc01DZ3NDQXdRRkRBc01EQW9MQndnSkN5QUNJQUlvQWdBaUFVRUVhallDQUNBQUlBRW9BZ0EyQWdBUEN3QUxJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVElCQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVE1CQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEFBQURjREFBOExJQUlnQWlnQ0FDSUJRUVJxTmdJQUlBQWdBVEVBQURjREFBOExBQXNnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkFnQUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUM0VUJBZ04vQVg0Q1FDQUFRb0NBZ0lBUVZBUkFJQUFoQlF3QkN3TkFJQUZCQVdzaUFTQUFRZ3FBSWdWQzlnRitJQUI4cDBFd2Nqb0FBQ0FBUXYvLy8vK2ZBVlloQWlBRklRQWdBZzBBQ3dzZ0JhY2lBZ1JBQTBBZ0FVRUJheUlCSUFKQkNtNGlBMEgyQVd3Z0FtcEJNSEk2QUFBZ0FrRUpTeUVFSUFNaEFpQUVEUUFMQ3lBQkMzRUJBWDhqQUVHQUFtc2lCU1FBQWtBZ0FpQURUQTBBSUFSQmdNQUVjUTBBSUFVZ0FVSC9BWEVnQWlBRGF5SURRWUFDSUFOQmdBSkpJZ0ViRUNrYUlBRkZCRUFEUUNBQUlBVkJnQUlReGdFZ0EwR0FBbXNpQTBIL0FVc05BQXNMSUFBZ0JTQURFTVlCQ3lBRlFZQUNhaVFBQ3hJQUlBQkZCRUJCQUE4TElBQWdBUkRkQVFzUkFDQUFJQUVnQWtIUUFFSFJBQkRFQVF1ekdBTVNmd0Y4QTM0akFFR3dCR3NpRENRQUlBeEJBRFlDTEFKQUlBRzlJaGxDQUZNRVFFRUJJUkZCbERzaEV5QUJtaUlCdlNFWkRBRUxJQVJCZ0JCeEJFQkJBU0VSUVpjN0lSTU1BUXRCbWp0QmxUc2dCRUVCY1NJUkd5RVRJQkZGSVJVTEFrQWdHVUtBZ0lDQWdJQ0ErUDhBZzBLQWdJQ0FnSUNBK1A4QVVRUkFJQUJCSUNBQ0lCRkJBMm9pQXlBRVFmLy9lM0VReWdFZ0FDQVRJQkVReGdFZ0FFR1FQa0grd2dBZ0JVRWdjU0lGRzBIZlAwR3J3d0FnQlJzZ0FTQUJZaHRCQXhER0FTQUFRU0FnQWlBRElBUkJnTUFBY3hES0FTQURJQUlnQWlBRFNCc2hDUXdCQ3lBTVFSQnFJUklDUUFKL0FrQWdBU0FNUVN4cUVNTUJJZ0VnQWFBaUFVUUFBQUFBQUFBQUFHSUVRQ0FNSUF3b0Fpd2lCa0VCYXpZQ0xDQUZRU0J5SWc1QjRRQkhEUUVNQXdzZ0JVRWdjaUlPUWVFQVJnMENJQXdvQWl3aENrRUdJQU1nQTBFQVNCc01BUXNnRENBR1FSMXJJZ28yQWl3Z0FVUUFBQUFBQUFDd1FhSWhBVUVHSUFNZ0EwRUFTQnNMSVFzZ0RFRXdha0dnQWtFQUlBcEJBRTRiYWlJTklRY0RRQ0FIQW44Z0FVUUFBQUFBQUFEd1FXTWdBVVFBQUFBQUFBQUFBR1p4QkVBZ0Fhc01BUXRCQUFzaUF6WUNBQ0FIUVFScUlRY2dBU0FEdUtGRUFBQUFBR1hOelVHaUlnRkVBQUFBQUFBQUFBQmlEUUFMQWtBZ0NrRUFUQVJBSUFvaEF5QUhJUVlnRFNFSURBRUxJQTBoQ0NBS0lRTURRRUVkSUFNZ0EwRWRUaHNoQXdKQUlBZEJCR3NpQmlBSVNRMEFJQU90SVJwQ0FDRVpBMEFnQmlBWlF2Ly8vLzhQZ3lBR05RSUFJQnFHZkNJYlFvQ1U2OXdEZ0NJWlFvRHNsS01NZmlBYmZENENBQ0FHUVFScklnWWdDRThOQUFzZ0dhY2lCa1VOQUNBSVFRUnJJZ2dnQmpZQ0FBc0RRQ0FJSUFjaUJra0VRQ0FHUVFScklnY29BZ0JGRFFFTEN5QU1JQXdvQWl3Z0Eyc2lBellDTENBR0lRY2dBMEVBU2cwQUN3c2dBMEVBU0FSQUlBdEJHV3BCQ1c1QkFXb2hEeUFPUWVZQVJpRVFBMEJCQ1VFQUlBTnJJZ01nQTBFSlRoc2hDUUpBSUFZZ0NFMEVRQ0FJS0FJQUlRY01BUXRCZ0pUcjNBTWdDWFloRkVGL0lBbDBRWDl6SVJaQkFDRURJQWdoQndOQUlBY2dBeUFIS0FJQUloY2dDWFpxTmdJQUlCWWdGM0VnRkd3aEF5QUhRUVJxSWdjZ0Jra05BQXNnQ0NnQ0FDRUhJQU5GRFFBZ0JpQUROZ0lBSUFaQkJHb2hCZ3NnRENBTUtBSXNJQWxxSWdNMkFpd2dEU0FJSUFkRlFRSjBhaUlJSUJBYklnY2dEMEVDZEdvZ0JpQUdJQWRyUVFKMUlBOUtHeUVHSUFOQkFFZ05BQXNMUVFBaEF3SkFJQVlnQ0UwTkFDQU5JQWhyUVFKMVFRbHNJUU5CQ2lFSElBZ29BZ0FpQ1VFS1NRMEFBMEFnQTBFQmFpRURJQWtnQjBFS2JDSUhUdzBBQ3dzZ0N5QURRUUFnRGtIbUFFY2JheUFPUWVjQVJpQUxRUUJIY1dzaUJ5QUdJQTFyUVFKMVFRbHNRUWxyU0FSQVFRUkJwQUlnQ2tFQVNCc2dER29nQjBHQXlBQnFJZ2xCQ1cwaUQwRUNkR3BCMEI5cklRcEJDaUVISUE5QmQyd2dDV29pQ1VFSFRBUkFBMEFnQjBFS2JDRUhJQWxCQVdvaUNVRUlSdzBBQ3dzQ1FDQUtLQUlBSWhBZ0VDQUhiaUlQSUFkc0lnbEdJQXBCQkdvaUZDQUdSbkVOQUNBUUlBbHJJUkFDUUNBUFFRRnhSUVJBUkFBQUFBQUFBRUJESVFFZ0IwR0FsT3ZjQTBjTkFTQUlJQXBQRFFFZ0NrRUVheTBBQUVFQmNVVU5BUXRFQVFBQUFBQUFRRU1oQVF0RUFBQUFBQUFBNEQ5RUFBQUFBQUFBOEQ5RUFBQUFBQUFBK0Q4Z0JpQVVSaHRFQUFBQUFBQUErRDhnRUNBSFFRRjJJaFJHR3lBUUlCUkpHeUVZQWtBZ0ZRMEFJQk10QUFCQkxVY05BQ0FZbWlFWUlBR2FJUUVMSUFvZ0NUWUNBQ0FCSUJpZ0lBRmhEUUFnQ2lBSElBbHFJZ00yQWdBZ0EwR0FsT3ZjQTA4RVFBTkFJQXBCQURZQ0FDQUlJQXBCQkdzaUNrc0VRQ0FJUVFScklnaEJBRFlDQUFzZ0NpQUtLQUlBUVFGcUlnTTJBZ0FnQTBIL2srdmNBMHNOQUFzTElBMGdDR3RCQW5WQkNXd2hBMEVLSVFjZ0NDZ0NBQ0lKUVFwSkRRQURRQ0FEUVFGcUlRTWdDU0FIUVFwc0lnZFBEUUFMQ3lBS1FRUnFJZ2NnQmlBR0lBZExHeUVHQ3dOQUlBWWlCeUFJVFNJSlJRUkFJQWRCQkdzaUJpZ0NBRVVOQVFzTEFrQWdEa0huQUVjRVFDQUVRUWh4SVFvTUFRc2dBMEYvYzBGL0lBdEJBU0FMR3lJR0lBTktJQU5CZTBweElnb2JJQVpxSVF0QmYwRitJQW9iSUFWcUlRVWdCRUVJY1NJS0RRQkJkeUVHQWtBZ0NRMEFJQWRCQkdzb0FnQWlEa1VOQUVFS0lRbEJBQ0VHSUE1QkNuQU5BQU5BSUFZaUNrRUJhaUVHSUE0Z0NVRUtiQ0lKY0VVTkFBc2dDa0YvY3lFR0N5QUhJQTFyUVFKMVFRbHNJUWtnQlVGZmNVSEdBRVlFUUVFQUlRb2dDeUFHSUFscVFRbHJJZ1pCQUNBR1FRQktHeUlHSUFZZ0Mwb2JJUXNNQVF0QkFDRUtJQXNnQXlBSmFpQUdha0VKYXlJR1FRQWdCa0VBU2hzaUJpQUdJQXRLR3lFTEMwRi9JUWtnQzBIOS8vLy9CMEgrLy8vL0J5QUtJQXR5SWhBYlNnMEJJQXNnRUVFQVIycEJBV29oRGdKQUlBVkJYM0VpRlVIR0FFWUVRQ0FESUE1Qi8vLy8vd2R6U2cwRElBTkJBQ0FEUVFCS0d5RUdEQUVMSUJJZ0F5QURRUjkxSWdaeklBWnJyU0FTRU1rQklnWnJRUUZNQkVBRFFDQUdRUUZySWdaQk1Eb0FBQ0FTSUFaclFRSklEUUFMQ3lBR1FRSnJJZzhnQlRvQUFDQUdRUUZyUVMxQkt5QURRUUJJR3pvQUFDQVNJQTlySWdZZ0RrSC8vLy8vQjNOS0RRSUxJQVlnRG1vaUF5QVJRZi8vLy84SGMwb05BU0FBUVNBZ0FpQURJQkZxSWdVZ0JCREtBU0FBSUJNZ0VSREdBU0FBUVRBZ0FpQUZJQVJCZ0lBRWN4REtBUUpBQWtBQ1FDQVZRY1lBUmdSQUlBeEJFR29pQmtFSWNpRURJQVpCQ1hJaENpQU5JQWdnQ0NBTlN4c2lDU0VJQTBBZ0NEVUNBQ0FLRU1rQklRWUNRQ0FJSUFsSEJFQWdCaUFNUVJCcVRRMEJBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQU1RUkJxU3cwQUN3d0JDeUFHSUFwSERRQWdERUV3T2dBWUlBTWhCZ3NnQUNBR0lBb2dCbXNReGdFZ0NFRUVhaUlJSUExTkRRQUxJQkFFUUNBQVFhUHRFa0VCRU1ZQkN5QUhJQWhORFFFZ0MwRUFUQTBCQTBBZ0NEVUNBQ0FLRU1rQklnWWdERUVRYWtzRVFBTkFJQVpCQVdzaUJrRXdPZ0FBSUFZZ0RFRVFha3NOQUFzTElBQWdCa0VKSUFzZ0MwRUpUaHNReGdFZ0MwRUpheUVHSUFoQkJHb2lDQ0FIVHcwRElBdEJDVW9oQXlBR0lRc2dBdzBBQ3d3Q0N3SkFJQXRCQUVnTkFDQUhJQWhCQkdvZ0J5QUlTeHNoQ1NBTVFSQnFJZ1pCQ0hJaEF5QUdRUWx5SVEwZ0NDRUhBMEFnRFNBSE5RSUFJQTBReVFFaUJrWUVRQ0FNUVRBNkFCZ2dBeUVHQ3dKQUlBY2dDRWNFUUNBR0lBeEJFR3BORFFFRFFDQUdRUUZySWdaQk1Eb0FBQ0FHSUF4QkVHcExEUUFMREFFTElBQWdCa0VCRU1ZQklBWkJBV29oQmlBS0lBdHlSUTBBSUFCQm8rMFNRUUVReGdFTElBQWdCaUFOSUFacklnWWdDeUFHSUF0SUd4REdBU0FMSUFacklRc2dCMEVFYWlJSElBbFBEUUVnQzBFQVRnMEFDd3NnQUVFd0lBdEJFbXBCRWtFQUVNb0JJQUFnRHlBU0lBOXJFTVlCREFJTElBc2hCZ3NnQUVFd0lBWkJDV3BCQ1VFQUVNb0JDeUFBUVNBZ0FpQUZJQVJCZ01BQWN4REtBU0FGSUFJZ0FpQUZTQnNoQ1F3QkN5QVRJQVZCR25SQkgzVkJDWEZxSVFnQ1FDQURRUXRMRFFCQkRDQURheUVHUkFBQUFBQUFBREJBSVJnRFFDQVlSQUFBQUFBQUFEQkFvaUVZSUFaQkFXc2lCZzBBQ3lBSUxRQUFRUzFHQkVBZ0dDQUJtaUFZb2FDYUlRRU1BUXNnQVNBWW9DQVlvU0VCQ3lBUlFRSnlJUXNnQlVFZ2NTRU5JQklnRENnQ0xDSUhJQWRCSDNVaUJuTWdCbXV0SUJJUXlRRWlCa1lFUUNBTVFUQTZBQThnREVFUGFpRUdDeUFHUVFKcklnb2dCVUVQYWpvQUFDQUdRUUZyUVMxQkt5QUhRUUJJR3pvQUFDQUVRUWh4SVFZZ0RFRVFhaUVIQTBBZ0J5SUZBbjhnQVpsRUFBQUFBQUFBNEVGakJFQWdBYW9NQVF0QmdJQ0FnSGdMSWdkQndKY1RhaTBBQUNBTmNqb0FBQ0FCSUFlM29VUUFBQUFBQUFBd1FLSWhBUUpBSUFWQkFXb2lCeUFNUVJCcWEwRUJSdzBBQWtBZ0JnMEFJQU5CQUVvTkFDQUJSQUFBQUFBQUFBQUFZUTBCQ3lBRlFTNDZBQUVnQlVFQ2FpRUhDeUFCUkFBQUFBQUFBQUFBWWcwQUMwRi9JUWxCL2YvLy93Y2dDeUFTSUFwcklnWnFJZzFySUFOSURRQWdBRUVnSUFJZ0RTQURRUUpxSUFjZ0RFRVFhaUlIYXlJRklBVkJBbXNnQTBnYklBVWdBeHNpQ1dvaUF5QUVFTW9CSUFBZ0NDQUxFTVlCSUFCQk1DQUNJQU1nQkVHQWdBUnpFTW9CSUFBZ0J5QUZFTVlCSUFCQk1DQUpJQVZyUVFCQkFCREtBU0FBSUFvZ0JoREdBU0FBUVNBZ0FpQURJQVJCZ01BQWN4REtBU0FESUFJZ0FpQURTQnNoQ1FzZ0RFR3dCR29rQUNBSkN5Z0FJQUVnQVNnQ0FFRUhha0Y0Y1NJQlFSQnFOZ0lBSUFBZ0FTa0RBQ0FCS1FNSUVFMDVBd0FMRUFBZ0FDQUJJQUpCQUVFQUVNUUJHZ3Q4QVFKL0lBQWdBQ2dDU0NJQlFRRnJJQUZ5TmdKSUlBQW9BaFFnQUNnQ0hFY0VRQ0FBUVFCQkFDQUFLQUlrRVFRQUdnc2dBRUVBTmdJY0lBQkNBRGNERUNBQUtBSUFJZ0ZCQkhFRVFDQUFJQUZCSUhJMkFnQkJmdzhMSUFBZ0FDZ0NMQ0FBS0FJd2FpSUNOZ0lJSUFBZ0FqWUNCQ0FCUVJ0MFFSOTFDMEVCQW44akFFRVFheUlCSkFCQmZ5RUNBa0FnQUJEUUFRMEFJQUFnQVVFUGFrRUJJQUFvQWlBUkJBQkJBVWNOQUNBQkxRQVBJUUlMSUFGQkVHb2tBQ0FDQzBjQkFuOGdBQ0FCTndOd0lBQWdBQ2dDTENBQUtBSUVJZ05yckRjRGVDQUFLQUlJSVFJQ1FDQUJVQTBBSUFJZ0EydXNJQUZYRFFBZ0F5QUJwMm9oQWdzZ0FDQUNOZ0pvQzlRQkFnTi9BbjRDUUNBQUtRTndJZ1JDQUZJZ0JDQUFLUU40SUFBb0FnUWlBU0FBS0FJc0lnSnJySHdpQlZkeFJRUkFJQUFRMFFFaUEwRUFUZzBCSUFBb0Fpd2hBaUFBS0FJRUlRRUxJQUJDZnpjRGNDQUFJQUUyQW1nZ0FDQUZJQUlnQVd1c2ZEY0RlRUYvRHdzZ0JVSUJmQ0VGSUFBb0FnUWhBU0FBS0FJSUlRSUNRQ0FBS1FOd0lnUlFEUUFnQkNBRmZTSUVJQUlnQVd1c1dRMEFJQUVnQktkcUlRSUxJQUFnQWpZQ2FDQUFJQVVnQUNnQ0xDSUFJQUZyckh3M0EzZ2dBQ0FCVHdSQUlBRkJBV3NnQXpvQUFBc2dBd3UvQWdFRWZ5QURRYkNnRkNBREd5SUZLQUlBSVFNQ1FBSi9Ba0FnQVVVRVFDQUREUUZCQUE4TFFYNGdBa1VOQVJvQ1FDQURCRUFnQWlFRURBRUxJQUV0QUFBaUE4QWlCRUVBVGdSQUlBQUVRQ0FBSUFNMkFnQUxJQVJCQUVjUEMwR01vQlFvQWdBb0FnQkZCRUJCQVNBQVJRMERHaUFBSUFSQi83OERjVFlDQUVFQkR3c2dBMEhDQVdzaUEwRXlTdzBCSUFOQkFuUkIwTDRUYWlnQ0FDRURJQUpCQVdzaUJFVU5BeUFCUVFGcUlRRUxJQUV0QUFBaUJrRURkaUlIUVJCcklBTkJHblVnQjJweVFRZExEUUFEUUNBRVFRRnJJUVFnQmtHQUFXc2dBMEVHZEhJaUEwRUFUZ1JBSUFWQkFEWUNBQ0FBQkVBZ0FDQUROZ0lBQ3lBQ0lBUnJEd3NnQkVVTkF5QUJRUUZxSWdFdEFBQWlCa0hBQVhGQmdBRkdEUUFMQ3lBRlFRQTJBZ0JCc0lZVVFSazJBZ0JCZndzUEN5QUZJQU0yQWdCQmZnczFBQ0FBSUFFM0F3QWdBQ0FDUXYvLy8vLy8veitESUFSQ01JaW5RWUNBQW5FZ0FrSXdpS2RCLy84QmNYS3RRakNHaERjRENBdS9BZ0VCZnlNQVFkQUFheUlFSkFBQ1FDQURRWUNBQVU0RVFDQUVRU0JxSUFFZ0FrSUFRb0NBZ0lDQWdJRC8vd0FRUENBRUtRTW9JUUlnQkNrRElDRUJJQU5CLy84QlNRUkFJQU5CLy84QWF5RUREQUlMSUFSQkVHb2dBU0FDUWdCQ2dJQ0FnSUNBZ1AvL0FCQThRZjMvQWlBRElBTkIvZjhDVGh0Qi92OEJheUVESUFRcEF4Z2hBaUFFS1FNUUlRRU1BUXNnQTBHQmdIOUtEUUFnQkVGQWF5QUJJQUpDQUVLQWdJQ0FnSUNBT1JBOElBUXBBMGdoQWlBRUtRTkFJUUVnQTBIMGdINUxCRUFnQTBHTi93QnFJUU1NQVFzZ0JFRXdhaUFCSUFKQ0FFS0FnSUNBZ0lDQU9SQThRZWlCZlNBRElBTkI2SUY5VEJ0Qm12NEJhaUVESUFRcEF6Z2hBaUFFS1FNd0lRRUxJQVFnQVNBQ1FnQWdBMEgvL3dCcXJVSXdoaEE4SUFBZ0JDa0RDRGNEQ0NBQUlBUXBBd0EzQXdBZ0JFSFFBR29rQUF2VU1nTVBmd2QrQVh3akFFRXdheUlNSkFBQ1FDQUNRUUpOQkVBZ0FrRUNkQ0lDUVp5YUUyb29BZ0FoRHlBQ1FaQ2FFMm9vQWdBaERnTkFBbjhnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBTUFRc2dBUkRUQVFzaUFrRWdSaUFDUVFsclFRVkpjZzBBQzBFQklRb0NRQUpBSUFKQksyc09Bd0FCQUFFTFFYOUJBU0FDUVMxR0d5RUtJQUVvQWdRaUFpQUJLQUpvUndSQUlBRWdBa0VCYWpZQ0JDQUNMUUFBSVFJTUFRc2dBUkRUQVNFQ0N3SkFBa0FEUUNBRlFlQTVhaXdBQUNBQ1FTQnlSZ1JBQWtBZ0JVRUdTdzBBSUFFb0FnUWlBaUFCS0FKb1J3UkFJQUVnQWtFQmFqWUNCQ0FDTFFBQUlRSU1BUXNnQVJEVEFTRUNDeUFGUVFGcUlnVkJDRWNOQVF3Q0N3c2dCVUVEUndSQUlBVkJDRVlOQVNBRFJRMENJQVZCQkVrTkFpQUZRUWhHRFFFTElBRXBBM0FpRTBJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzZ0EwVU5BQ0FGUVFSSkRRQWdFMElBVXlFQ0EwQWdBa1VFUUNBQklBRW9BZ1JCQVdzMkFnUUxJQVZCQVdzaUJVRURTdzBBQ3d0Q0FDRVRJd0JCRUdzaUFpUUFBbjRnQ3JKREFBQ0FmNVM4SWdOQi8vLy8vd2R4SWdGQmdJQ0FCR3RCLy8vLzl3ZE5CRUFnQWExQ0dZWkNnSUNBZ0lDQWdNQS9mQXdCQ3lBRHJVSVpoa0tBZ0lDQWdJREEvLzhBaENBQlFZQ0FnUHdIVHcwQUdrSUFJQUZGRFFBYUlBSWdBYTFDQUNBQlp5SUJRZEVBYWhBNUlBSXBBd0FoRXlBQ0tRTUlRb0NBZ0lDQWdNQUFoVUdKL3dBZ0FXdXRRakNHaEFzaEZDQU1JQk0zQXdBZ0RDQVVJQU5CZ0lDQWdIaHhyVUlnaG9RM0F3Z2dBa0VRYWlRQUlBd3BBd2doRXlBTUtRTUFJUlFNQWdzQ1FBSkFBa0FnQlEwQVFRQWhCUU5BSUFWQmtENXFMQUFBSUFKQklISkhEUUVDUUNBRlFRRkxEUUFnQVNnQ0JDSUNJQUVvQW1oSEJFQWdBU0FDUVFGcU5nSUVJQUl0QUFBaEFnd0JDeUFCRU5NQklRSUxJQVZCQVdvaUJVRURSdzBBQ3d3QkN3SkFBa0FnQlE0RUFBRUJBZ0VMQWtBZ0FrRXdSdzBBQW44Z0FTZ0NCQ0lGSUFFb0FtaEhCRUFnQVNBRlFRRnFOZ0lFSUFVdEFBQU1BUXNnQVJEVEFRdEJYM0ZCMkFCR0JFQWpBRUd3QTJzaUFpUUFBbjhnQVNnQ0JDSUZJQUVvQW1oSEJFQWdBU0FGUVFGcU5nSUVJQVV0QUFBTUFRc2dBUkRUQVFzaEJRSkFBbjhEUUNBRlFUQkhCRUFDUUNBRlFTNUhEUVFnQVNnQ0JDSUZJQUVvQW1oR0RRQWdBU0FGUVFGcU5nSUVJQVV0QUFBTUF3c0ZJQUVvQWdRaUJTQUJLQUpvUndSL1FRRWhDU0FCSUFWQkFXbzJBZ1FnQlMwQUFBVkJBU0VKSUFFUTB3RUxJUVVNQVFzTElBRVEwd0VMSVFWQkFTRUlJQVZCTUVjTkFBTkFJQlpDQVgwaEZnSi9JQUVvQWdRaUJTQUJLQUpvUndSQUlBRWdCVUVCYWpZQ0JDQUZMUUFBREFFTElBRVEwd0VMSWdWQk1FWU5BQXRCQVNFSkMwS0FnSUNBZ0lEQS96OGhGQUpBQTBBQ1FDQUZRU0J5SVFRQ1FBSkFJQVZCTUdzaUIwRUtTUTBBSUFWQkxrY2dCRUhoQUd0QkJVdHhEUVFnQlVFdVJ3MEFJQWdOQWtFQklRZ2dFeUVXREFFTElBUkIxd0JySUFjZ0JVRTVTaHNoQlFKQUlCTkNCMWNFUUNBRklBWkJCSFJxSVFZTUFRc2dFMEljV0FSQUlBSkJNR29nQlJCT0lBSkJJR29nR0NBVVFnQkNnSUNBZ0lDQXdQMC9FRHdnQWtFUWFpQUNLUU13SUFJcEF6Z2dBaWtESUNJWUlBSXBBeWdpRkJBOElBSWdBaWtERUNBQ0tRTVlJQlVnRnhCSElBSXBBd2doRnlBQ0tRTUFJUlVNQVFzZ0JVVU5BQ0FMRFFBZ0FrSFFBR29nR0NBVVFnQkNnSUNBZ0lDQWdQOC9FRHdnQWtGQWF5QUNLUU5RSUFJcEExZ2dGU0FYRUVjZ0Fpa0RTQ0VYUVFFaEN5QUNLUU5BSVJVTElCTkNBWHdoRTBFQklRa0xJQUVvQWdRaUJTQUJLQUpvUndSL0lBRWdCVUVCYWpZQ0JDQUZMUUFBQlNBQkVOTUJDeUVGREFFTEMwRXVJUVVMQW40Z0NVVUVRQUpBQWtBZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkNJR1FRRnJOZ0lFSUFORkRRRWdBU0FHUVFKck5nSUVJQWhGRFFJZ0FTQUdRUU5yTmdJRURBSUxJQU1OQVFzZ0FVSUFFTklCQ3lBQ1FlQUFhaUFLdDBRQUFBQUFBQUFBQUtJUVR5QUNLUU5nSVJVZ0Fpa0RhQXdCQ3lBVFFnZFhCRUFnRXlFVUEwQWdCa0VFZENFR0lCUkNBWHdpRkVJSVVnMEFDd3NDUUFKQUFrQWdCVUZmY1VIUUFFWUVRQ0FCSUFNUTJBRWlGRUtBZ0lDQWdJQ0FnSUIvVWcwRElBTUVRQ0FCS1FOd1FnQlpEUUlNQXd0Q0FDRVZJQUZDQUJEU0FVSUFEQVFMUWdBaEZDQUJLUU53UWdCVERRSUxJQUVnQVNnQ0JFRUJhellDQkF0Q0FDRVVDeUFHUlFSQUlBSkI4QUJxSUFxM1JBQUFBQUFBQUFBQW9oQlBJQUlwQTNBaEZTQUNLUU40REFFTElCWWdFeUFJRzBJQ2hpQVVmRUlnZlNJVFFRQWdEMnV0VlFSQVFiQ0dGRUhFQURZQ0FDQUNRYUFCYWlBS0VFNGdBa0dRQVdvZ0Fpa0RvQUVnQWlrRHFBRkNmMEwvLy8vLy8vKy8vLzhBRUR3Z0FrR0FBV29nQWlrRGtBRWdBaWtEbUFGQ2YwTC8vLy8vLy8rLy8vOEFFRHdnQWlrRGdBRWhGU0FDS1FPSUFRd0JDeUFQUWVJQmE2d2dFMWNFUUNBR1FRQk9CRUFEUUNBQ1FhQURhaUFWSUJkQ0FFS0FnSUNBZ0lEQS83OS9FRWNnRlNBWFFvQ0FnSUNBZ0lEL1B4QTRJUUVnQWtHUUEyb2dGU0FYSUFJcEE2QURJQlVnQVVFQVRpSUJHeUFDS1FPb0F5QVhJQUViRUVjZ0UwSUJmU0VUSUFJcEE1Z0RJUmNnQWlrRGtBTWhGU0FHUVFGMElBRnlJZ1pCQUU0TkFBc0xBbjRnRXlBUHJIMUNJSHdpRktjaUFVRUFJQUZCQUVvYklBNGdGQ0FPclZNYklnRkI4UUJPQkVBZ0FrR0FBMm9nQ2hCT0lBSXBBNGdESVJZZ0Fpa0RnQU1oR0VJQURBRUxJQUpCNEFKcVJBQUFBQUFBQVBBL1FaQUJJQUZyRURBUVR5QUNRZEFDYWlBS0VFNGdBa0h3QW1vZ0Fpa0Q0QUlnQWlrRDZBSWdBaWtEMEFJaUdDQUNLUVBZQWlJV0VOVUJJQUlwQS9nQ0lSa2dBaWtEOEFJTElSUWdBa0hBQW1vZ0JpQUdRUUZ4UlNBVklCZENBRUlBRURkQkFFY2dBVUVnU0hGeElnRnFFRkFnQWtHd0Ftb2dHQ0FXSUFJcEE4QUNJQUlwQThnQ0VEd2dBa0dRQW1vZ0Fpa0RzQUlnQWlrRHVBSWdGQ0FaRUVjZ0FrR2dBbW9nR0NBV1FnQWdGU0FCRzBJQUlCY2dBUnNRUENBQ1FZQUNhaUFDS1FPZ0FpQUNLUU9vQWlBQ0tRT1FBaUFDS1FPWUFoQkhJQUpCOEFGcUlBSXBBNEFDSUFJcEE0Z0NJQlFnR1JCSUlBSXBBL0FCSWhRZ0Fpa0QrQUVpRmtJQVFnQVFOMFVFUUVHd2hoUkJ4QUEyQWdBTElBSkI0QUZxSUJRZ0ZpQVRweERXQVNBQ0tRUGdBU0VWSUFJcEErZ0JEQUVMUWJDR0ZFSEVBRFlDQUNBQ1FkQUJhaUFLRUU0Z0FrSEFBV29nQWlrRDBBRWdBaWtEMkFGQ0FFS0FnSUNBZ0lEQUFCQThJQUpCc0FGcUlBSXBBOEFCSUFJcEE4Z0JRZ0JDZ0lDQWdJQ0F3QUFRUENBQ0tRT3dBU0VWSUFJcEE3Z0JDeUVUSUF3Z0ZUY0RFQ0FNSUJNM0F4Z2dBa0d3QTJva0FDQU1LUU1ZSVJNZ0RDa0RFQ0VVREFZTElBRXBBM0JDQUZNTkFDQUJJQUVvQWdSQkFXczJBZ1FMSUFFaEJTQUNJUVlnQXlFSlFRQWhBeU1BUVpER0FHc2lCQ1FBUVFBZ0Qyc2lFQ0FPYXlFU0FrQUNmd05BQWtBZ0JrRXdSd1JBSUFaQkxrY05CQ0FGS0FJRUlnRWdCU2dDYUVZTkFTQUZJQUZCQVdvMkFnUWdBUzBBQUF3REN5QUZLQUlFSWdFZ0JTZ0NhRWNFUUNBRklBRkJBV28yQWdRZ0FTMEFBQ0VHQlNBRkVOTUJJUVlMUVFFaEF3d0JDd3NnQlJEVEFRc2hCa0VCSVEwZ0JrRXdSdzBBQTBBZ0UwSUJmU0VUQW44Z0JTZ0NCQ0lCSUFVb0FtaEhCRUFnQlNBQlFRRnFOZ0lFSUFFdEFBQU1BUXNnQlJEVEFRc2lCa0V3UmcwQUMwRUJJUU1MSUFSQkFEWUNrQVlnQmtFd2F5RUNJQXdDZmdKQUFrQUNRQUpBQWtBQ1FDQUdRUzVHSWdFTkFDQUNRUWxORFFBTUFRc0RRQUpBSUFGQkFYRUVRQ0FOUlFSQUlCUWhFMEVCSVEwTUFnc2dBMFVoQVF3RUN5QVVRZ0Y4SVJRZ0NFSDhEMHdFUUNBTElCU25JQVpCTUVZYklRc2dCRUdRQm1vZ0NFRUNkR29pQVNBSEJIOGdCaUFCS0FJQVFRcHNha0V3YXdVZ0FnczJBZ0JCQVNFRFFRQWdCMEVCYWlJQklBRkJDVVlpQVJzaEJ5QUJJQWhxSVFnTUFRc2dCa0V3UmcwQUlBUWdCQ2dDZ0VaQkFYSTJBb0JHUWR5UEFTRUxDd0ovSUFVb0FnUWlBU0FGS0FKb1J3UkFJQVVnQVVFQmFqWUNCQ0FCTFFBQURBRUxJQVVRMHdFTElnWkJNR3NoQWlBR1FTNUdJZ0VOQUNBQ1FRcEpEUUFMQ3lBVElCUWdEUnNoRXdKQUlBTkZEUUFnQmtGZmNVSEZBRWNOQUFKQUlBVWdDUkRZQVNJVlFvQ0FnSUNBZ0lDQWdIOVNEUUFnQ1VVTkJFSUFJUlVnQlNrRGNFSUFVdzBBSUFVZ0JTZ0NCRUVCYXpZQ0JBc2dFeUFWZkNFVERBUUxJQU5GSVFFZ0JrRUFTQTBCQ3lBRktRTndRZ0JURFFBZ0JTQUZLQUlFUVFGck5nSUVDeUFCUlEwQlFiQ0dGRUVjTmdJQUMwSUFJUlFnQlVJQUVOSUJRZ0FNQVFzZ0JDZ0NrQVlpQVVVRVFDQUVJQXEzUkFBQUFBQUFBQUFBb2hCUElBUXBBd0FoRkNBRUtRTUlEQUVMQWtBZ0ZFSUpWUTBBSUJNZ0ZGSU5BQ0FPUVI1TVFRQWdBU0FPZGhzTkFDQUVRVEJxSUFvUVRpQUVRU0JxSUFFUVVDQUVRUkJxSUFRcEF6QWdCQ2tET0NBRUtRTWdJQVFwQXlnUVBDQUVLUU1RSVJRZ0JDa0RHQXdCQ3lBUVFRRjJyU0FUVXdSQVFiQ0dGRUhFQURZQ0FDQUVRZUFBYWlBS0VFNGdCRUhRQUdvZ0JDa0RZQ0FFS1FOb1FuOUMvLy8vLy8vL3YvLy9BQkE4SUFSQlFHc2dCQ2tEVUNBRUtRTllRbjlDLy8vLy8vLy92Ly8vQUJBOElBUXBBMEFoRkNBRUtRTklEQUVMSUE5QjRnRnJyQ0FUVlFSQVFiQ0dGRUhFQURZQ0FDQUVRWkFCYWlBS0VFNGdCRUdBQVdvZ0JDa0RrQUVnQkNrRG1BRkNBRUtBZ0lDQWdJREFBQkE4SUFSQjhBQnFJQVFwQTRBQklBUXBBNGdCUWdCQ2dJQ0FnSUNBd0FBUVBDQUVLUU53SVJRZ0JDa0RlQXdCQ3lBSEJFQWdCMEVJVEFSQUlBUkJrQVpxSUFoQkFuUnFJZ0VvQWdBaEJRTkFJQVZCQ213aEJTQUhRUUZxSWdkQkNVY05BQXNnQVNBRk5nSUFDeUFJUVFGcUlRZ0xJQk9uSVFjQ1FDQUxRUWxPRFFBZ0J5QUxTQTBBSUFkQkVVb05BQ0FIUVFsR0JFQWdCRUhBQVdvZ0NoQk9JQVJCc0FGcUlBUW9BcEFHRUZBZ0JFR2dBV29nQkNrRHdBRWdCQ2tEeUFFZ0JDa0RzQUVnQkNrRHVBRVFQQ0FFS1FPZ0FTRVVJQVFwQTZnQkRBSUxJQWRCQ0V3RVFDQUVRWkFDYWlBS0VFNGdCRUdBQW1vZ0JDZ0NrQVlRVUNBRVFmQUJhaUFFS1FPUUFpQUVLUU9ZQWlBRUtRT0FBaUFFS1FPSUFoQThJQVJCNEFGcVFRQWdCMnRCQW5SQmtKb1RhaWdDQUJCT0lBUkIwQUZxSUFRcEEvQUJJQVFwQS9nQklBUXBBK0FCSUFRcEErZ0JFRG9nQkNrRDBBRWhGQ0FFS1FQWUFRd0NDeUFPSUFkQmZXeHFRUnRxSWdGQkhreEJBQ0FFS0FLUUJpSUNJQUYyR3cwQUlBUkI0QUpxSUFvUVRpQUVRZEFDYWlBQ0VGQWdCRUhBQW1vZ0JDa0Q0QUlnQkNrRDZBSWdCQ2tEMEFJZ0JDa0QyQUlRUENBRVFiQUNhaUFIUVFKMFFjaVpFMm9vQWdBUVRpQUVRYUFDYWlBRUtRUEFBaUFFS1FQSUFpQUVLUU93QWlBRUtRTzRBaEE4SUFRcEE2QUNJUlFnQkNrRHFBSU1BUXNEUUNBRVFaQUdhaUFJSWdGQkFXc2lDRUVDZEdvb0FnQkZEUUFMUVFBaEN3SkFJQWRCQ1c4aUEwVUVRRUVBSVFJTUFRdEJBQ0VDSUFOQkNXb2dBeUFIUVFCSUd5RURBa0FnQVVVRVFFRUFJUUVNQVF0QmdKVHIzQU5CQUNBRGEwRUNkRUdRbWhOcUtBSUFJZ2h0SVFsQkFDRUdRUUFoQlFOQUlBUkJrQVpxSUFWQkFuUnFJZzBnQmlBTktBSUFJZzBnQ0c0aUVHb2lCallDQUNBQ1FRRnFRZjhQY1NBQ0lBWkZJQUlnQlVaeElnWWJJUUlnQjBFSmF5QUhJQVliSVFjZ0NTQU5JQWdnRUd4cmJDRUdJQVZCQVdvaUJTQUJSdzBBQ3lBR1JRMEFJQVJCa0FacUlBRkJBblJxSUFZMkFnQWdBVUVCYWlFQkN5QUhJQU5yUVFscUlRY0xBMEFnQkVHUUJtb2dBa0VDZEdvaERRSkFBMEFDUUNBSFFTUklEUUFnQjBFa1J3MENJQTBvQWdCQjBPbjVCRTBOQUVFa0lRY01BZ3NnQVVIL0Qyb2hDRUVBSVFNRFFDQUJJUVlnQTYwZ0JFR1FCbW9nQ0VIL0QzRWlDVUVDZEdvaUFUVUNBRUlkaG53aUUwS0JsT3ZjQTFRRWYwRUFCU0FUUW9DVTY5d0RnQ0lVUW9Ec2xLTjhmaUFUZkNFVElCU25DeUVESUFFZ0U2Y2lBVFlDQUNBR0lBWWdCaUFKSUFFYklBSWdDVVliSUFrZ0JrRUJhMEgvRDNFaUJVY2JJUUVnQ1VFQmF5RUlJQUlnQ1VjTkFBc2dDMEVkYXlFTElBWWhBU0FEUlEwQUN5QUNRUUZyUWY4UGNTSUNJQUZHQkVBZ0JFR1FCbW9pQmlBQlFmNFBha0gvRDNGQkFuUnFJZ0VnQVNnQ0FDQUZRUUowSUFacUtBSUFjallDQUNBRklRRUxJQWRCQ1dvaEJ5QUVRWkFHYWlBQ1FRSjBhaUFETmdJQURBRUxDd0pBQTBBZ0FVRUJha0gvRDNFaEJpQUVRWkFHYWlBQlFRRnJRZjhQY1VFQ2RHb2hDUU5BUVFsQkFTQUhRUzFLR3lFSUFrQURRQ0FDSVFOQkFDRUZBa0FEUUFKQUlBTWdCV3BCL3c5eElnSWdBVVlOQUNBRVFaQUdhaUFDUVFKMGFpZ0NBQ0lDSUFWQkFuUkI0SmtUYWlnQ0FDSU5TUTBBSUFJZ0RVc05BaUFGUVFGcUlnVkJCRWNOQVFzTElBZEJKRWNOQUVFQUlRVkNBQ0VUUWdBaEZBTkFJQUVnQXlBRmFrSC9EM0VpQWtZRVFDQUJRUUZxUWY4UGNTSUJRUUowSUFScVFRQTJBb3dHQ3lBRVFZQUdhaUFFUVpBR2FpQUNRUUowYWlnQ0FCQlFJQVJCOEFWcUlCTWdGRUlBUW9DQWdJRGxtcmVPd0FBUVBDQUVRZUFGYWlBRUtRUHdCU0FFS1FQNEJTQUVLUU9BQmlBRUtRT0lCaEJISUFRcEErZ0ZJUlFnQkNrRDRBVWhFeUFGUVFGcUlnVkJCRWNOQUFzZ0JFSFFCV29nQ2hCT0lBUkJ3QVZxSUJNZ0ZDQUVLUVBRQlNBRUtRUFlCUkE4SUFRcEE4Z0ZJUlJDQUNFVElBUXBBOEFGSVJVZ0MwSHhBR29pQ0NBUGF5SUdRUUFnQmtFQVNoc2dEaUFHSUE1SUlna2JJZ0pCOEFCTURRSU1CUXNnQ0NBTGFpRUxJQUVoQWlBQklBTkdEUUFMUVlDVTY5d0RJQWgySVExQmZ5QUlkRUYvY3lFUVFRQWhCU0FESVFJRFFDQUVRWkFHYWlBRFFRSjBhaUlSSUFVZ0VTZ0NBQ0lSSUFoMmFpSUZOZ0lBSUFKQkFXcEIvdzl4SUFJZ0JVVWdBaUFEUm5FaUJSc2hBaUFIUVFscklBY2dCUnNoQnlBUUlCRnhJQTFzSVFVZ0EwRUJha0gvRDNFaUF5QUJSdzBBQ3lBRlJRMEJJQUlnQmtjRVFDQUVRWkFHYWlBQlFRSjBhaUFGTmdJQUlBWWhBUXdEQ3lBSklBa29BZ0JCQVhJMkFnQU1BUXNMQ3lBRVFaQUZha1FBQUFBQUFBRHdQMEhoQVNBQ2F4QXdFRThnQkVHd0JXb2dCQ2tEa0FVZ0JDa0RtQVVnRlNBVUVOVUJJQVFwQTdnRklSZ2dCQ2tEc0FVaEZ5QUVRWUFGYWtRQUFBQUFBQUR3UDBIeEFDQUNheEF3RUU4Z0JFR2dCV29nRlNBVUlBUXBBNEFGSUFRcEE0Z0ZFREVnQkVId0JHb2dGU0FVSUFRcEE2QUZJaE1nQkNrRHFBVWlGaEJJSUFSQjRBUnFJQmNnR0NBRUtRUHdCQ0FFS1FQNEJCQkhJQVFwQStnRUlSUWdCQ2tENEFRaEZRc0NRQ0FEUVFScVFmOFBjU0lGSUFGR0RRQUNRQ0FFUVpBR2FpQUZRUUowYWlnQ0FDSUZRZi9KdGU0QlRRUkFJQVZGSUFOQkJXcEIvdzl4SUFGR2NRMEJJQVJCOEFOcUlBcTNSQUFBQUFBQUFOQS9vaEJQSUFSQjRBTnFJQk1nRmlBRUtRUHdBeUFFS1FQNEF4QkhJQVFwQStnRElSWWdCQ2tENEFNaEV3d0JDeUFGUVlES3RlNEJSd1JBSUFSQjBBUnFJQXEzUkFBQUFBQUFBT2cvb2hCUElBUkJ3QVJxSUJNZ0ZpQUVLUVBRQkNBRUtRUFlCQkJISUFRcEE4Z0VJUllnQkNrRHdBUWhFd3dCQ3lBS3R5RWFJQUVnQTBFRmFrSC9EM0ZHQkVBZ0JFR1FCR29nR2tRQUFBQUFBQURnUDZJUVR5QUVRWUFFYWlBVElCWWdCQ2tEa0FRZ0JDa0RtQVFRUnlBRUtRT0lCQ0VXSUFRcEE0QUVJUk1NQVFzZ0JFR3dCR29nR2tRQUFBQUFBQURvUDZJUVR5QUVRYUFFYWlBVElCWWdCQ2tEc0FRZ0JDa0R1QVFRUnlBRUtRT29CQ0VXSUFRcEE2QUVJUk1MSUFKQjd3QktEUUFnQkVIUUEyb2dFeUFXUWdCQ2dJQ0FnSUNBd1A4L0VERWdCQ2tEMEFNZ0JDa0QyQU5DQUVJQUVEY05BQ0FFUWNBRGFpQVRJQlpDQUVLQWdJQ0FnSURBL3o4UVJ5QUVLUVBJQXlFV0lBUXBBOEFESVJNTElBUkJzQU5xSUJVZ0ZDQVRJQllRUnlBRVFhQURhaUFFS1FPd0F5QUVLUU80QXlBWElCZ1FTQ0FFS1FPb0F5RVVJQVFwQTZBRElSVUNRQ0FTUVFKcklBaEIvLy8vL3dkeFRnMEFJQVFnRkVMLy8vLy8vLy8vLy84QWd6Y0RtQU1nQkNBVk53T1FBeUFFUVlBRGFpQVZJQlJDQUVLQWdJQ0FnSUNBL3o4UVBDQUVLUU9RQXlBRUtRT1lBMEtBZ0lDQWdJQ0F1TUFBRURnaEFTQUVLUU9JQXlBVUlBRkJBRTRpQXhzaEZDQUVLUU9BQXlBVklBTWJJUlVnRXlBV1FnQkNBQkEzSVFVZ0VpQURJQXRxSWd0QjdnQnFUZ1JBSUFrZ0FpQUdSeUFCUVFCSWNuRWdCVUVBUjNGRkRRRUxRYkNHRkVIRUFEWUNBQXNnQkVId0Ftb2dGU0FVSUFzUTFnRWdCQ2tEOEFJaEZDQUVLUVA0QWdzM0F5Z2dEQ0FVTndNZ0lBUkJrTVlBYWlRQUlBd3BBeWdoRXlBTUtRTWdJUlFNQkFzZ0FTa0RjRUlBV1FSQUlBRWdBU2dDQkVFQmF6WUNCQXNNQVFzQ1FBSi9JQUVvQWdRaUFpQUJLQUpvUndSQUlBRWdBa0VCYWpZQ0JDQUNMUUFBREFFTElBRVEwd0VMUVNoR0JFQkJBU0VGREFFTFFvQ0FnSUNBZ09ELy93QWhFeUFCS1FOd1FnQlREUU1nQVNBQktBSUVRUUZyTmdJRURBTUxBMEFDZnlBQktBSUVJZ0lnQVNnQ2FFY0VRQ0FCSUFKQkFXbzJBZ1FnQWkwQUFBd0JDeUFCRU5NQkN5SUNRY0VBYXlFR0FrQUNRQ0FDUVRCclFRcEpEUUFnQmtFYVNRMEFJQUpCM3dCR0RRQWdBa0hoQUd0QkdrOE5BUXNnQlVFQmFpRUZEQUVMQzBLQWdJQ0FnSURnLy84QUlSTWdBa0VwUmcwQ0lBRXBBM0FpRmtJQVdRUkFJQUVnQVNnQ0JFRUJhellDQkFzQ1FDQURCRUFnQlEwQkRBUUxEQUVMQTBBZ0ZrSUFXUVJBSUFFZ0FTZ0NCRUVCYXpZQ0JBc2dCVUVCYXlJRkRRQUxEQUlMUWJDR0ZFRWNOZ0lBSUFGQ0FCRFNBUXRDQUNFVEN5QUFJQlEzQXdBZ0FDQVROd01JSUF4Qk1Hb2tBQXVHQkFJRWZ3RitBa0FDUUFKQUFrQUNRQUpBQWtBQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVOTUJDeUlDUVN0ckRnTUFBUUFCQ3lBQ1FTMUdJUVVDZnlBQUtBSUVJZ01nQUNnQ2FFY0VRQ0FBSUFOQkFXbzJBZ1FnQXkwQUFBd0JDeUFBRU5NQkN5SURRVHBySVFRZ0FVVU5BU0FFUVhWTERRRWdBQ2tEY0VJQVdRMENEQVVMSUFKQk9tc2hCQ0FDSVFNTElBUkJka2tOQVNBRFFUQnJJZ1JCQ2trRVFFRUFJUUlEUUNBRElBSkJDbXhxSVFFQ2Z5QUFLQUlFSWdJZ0FDZ0NhRWNFUUNBQUlBSkJBV28yQWdRZ0FpMEFBQXdCQ3lBQUVOTUJDeUlEUVRCcklnUkJDVTBnQVVFd2F5SUNRY3lacytZQVNIRU5BQXNnQXF3aEJnc0NRQ0FFUVFwUERRQURRQ0FEclNBR1FncCtmRUl3ZlNFR0FuOGdBQ2dDQkNJQklBQW9BbWhIQkVBZ0FDQUJRUUZxTmdJRUlBRXRBQUFNQVFzZ0FCRFRBUXNpQTBFd2F5SUVRUWxMRFFFZ0JrS3VqNFhYeDhMcm93RlREUUFMQ3lBRVFRcEpCRUFEUUFKL0lBQW9BZ1FpQVNBQUtBSm9Sd1JBSUFBZ0FVRUJhallDQkNBQkxRQUFEQUVMSUFBUTB3RUxRVEJyUVFwSkRRQUxDeUFBS1FOd1FnQlpCRUFnQUNBQUtBSUVRUUZyTmdJRUMwSUFJQVo5SUFZZ0JSc1BDeUFBSUFBb0FnUkJBV3MyQWdRTUFRc2dBQ2tEY0VJQVV3MEJDeUFBSUFBb0FnUkJBV3MyQWdRTFFvQ0FnSUNBZ0lDQWdIOExRd0FDUUNBQVJRMEFBa0FDUUFKQUFrQWdBVUVDYWc0R0FBRUNBZ1FEQkFzZ0FDQUNQQUFBRHdzZ0FDQUNQUUVBRHdzZ0FDQUNQZ0lBRHdzZ0FDQUNOd01BQ3d1MUFRSUNmd0YrSXdCQm9BRnJJZ1FrQUNBRUlBQWdCRUdlQVdvZ0FSc2lCVFlDbEFFZ0JDQUJRUUZySWdCQkFDQUFJQUZOR3pZQ21BRURRQ0FFSUFhbmFrRUFPZ0FBSUFaQ0FYd2lCa0tRQVZRTkFBdEJmeUVBSUFSQmZ6WUNUQ0FFUWRJQU5nSWtJQVJCZnpZQ1VDQUVJQVJCbndGcU5nSXNJQVFnQkVHVUFXbzJBbFFDUUNBQlFRQklCRUJCc0lZVVFUMDJBZ0FNQVFzZ0JVRUFPZ0FBSUFRZ0FpQURFTXdCSVFBTElBUkJvQUZxSkFBZ0FBdW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQ3NhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQ3NhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0MxUUJBbjhnQVNBQUtBSlVJZ0VnQVVFQUlBSkJnQUpxSWdNUWtRRWlCQ0FCYXlBRElBUWJJZ01nQWlBQ0lBTkxHeUlDRUNzYUlBQWdBU0FEYWlJRE5nSlVJQUFnQXpZQ0NDQUFJQUVnQW1vMkFnUWdBZ3VKQWdBQ1FDQUFCSDhnQVVIL0FFME5BUUpBUVl5Z0ZDZ0NBQ2dDQUVVRVFDQUJRWUIvY1VHQXZ3TkdEUU1NQVFzZ0FVSC9EMDBFUUNBQUlBRkJQM0ZCZ0FGeU9nQUJJQUFnQVVFR2RrSEFBWEk2QUFCQkFnOExJQUZCZ0VCeFFZREFBMGNnQVVHQXNBTlBjVVVFUUNBQUlBRkJQM0ZCZ0FGeU9nQUNJQUFnQVVFTWRrSGdBWEk2QUFBZ0FDQUJRUVoyUVQ5eFFZQUJjam9BQVVFRER3c2dBVUdBZ0FSclFmLy9QMDBFUUNBQUlBRkJQM0ZCZ0FGeU9nQURJQUFnQVVFU2RrSHdBWEk2QUFBZ0FDQUJRUVoyUVQ5eFFZQUJjam9BQWlBQUlBRkJESFpCUDNGQmdBRnlPZ0FCUVFRUEN3dEJzSVlVUVJrMkFnQkJmd1ZCQVFzUEN5QUFJQUU2QUFCQkFRc0ZBQkFkQUFzd0FRRi9Jd0JCRUdzaUFpUUFJQUlnQVVMQWhEMStOd01JSUFJcEF3Z2hBU0FDUVJCcUpBQWdBQ0FCTndNQUlBQUxCd0FnQUJEaEFRdU1BUUVDZnlBQVFZeWhFellDQUNBQUtBSW9JUUVEUUNBQkJFQkJBQ0FBSUFGQkFXc2lBVUVDZENJQ0lBQW9BaVJxS0FJQUlBQW9BaUFnQW1vb0FnQVJDQUFNQVFzTElBQW9BaHdpQVNBQktBSUVRUUZySWdJMkFnUWdBa0YvUmdSQUlBRWdBU2dDQUNnQ0NCRUJBQXNnQUNnQ0lCQTBJQUFvQWlRUU5DQUFLQUl3RURRZ0FDZ0NQQkEwSUFBTENRQWdBQkRoQVJBMEN6Z0JBbjhnQUVIQW14TTJBZ0FnQUNnQ0JDSUJJQUVvQWdSQkFXc2lBallDQkNBQ1FYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUFDd2tBSUFBUTR3RVFOQXNEQUFFTEJBQWdBQXNRQUNBQVFuODNBd2dnQUVJQU53TUFDeEFBSUFCQ2Z6Y0RDQ0FBUWdBM0F3QUwyQUVCQkg4akFFRVFheUlFSkFBRFFBSkFJQUlnQlV3TkFBSi9JQUFvQWd3aUF5QUFLQUlRSWdaSkJFQWdCRUgvLy8vL0J6WUNEQ0FFSUFZZ0EyczJBZ2dnQkNBQ0lBVnJOZ0lFSUFFZ0F5QUVRUVJxSWdFZ0JFRUlhaUlESUFFb0FnQWdBeWdDQUVnYklnRWdCRUVNYWlJRElBRW9BZ0FnQXlnQ0FFZ2JLQUlBSWdNUTZnRWhBU0FBSUFBb0Fnd2dBMm8yQWd3Z0FTQURhZ3dCQ3lBQUlBQW9BZ0FvQWlnUkFBQWlBMEYvUmcwQklBRWdBOEE2QUFCQkFTRURJQUZCQVdvTElRRWdBeUFGYWlFRkRBRUxDeUFFUVJCcUpBQWdCUXNSQUNBQklBRWdBbW9nQUJEdkFSb2dBQXNFQUVGL0N5d0FJQUFnQUNnQ0FDZ0NKQkVBQUVGL1J3Ui9JQUFnQUNnQ0RDSUFRUUZxTmdJTUlBQXRBQUFGUVg4TEN3UUFRWDhMc1FFQkJIOGpBRUVRYXlJRkpBQURRQUpBSUFJZ0JFd05BQ0FBS0FJWUlnTWdBQ2dDSENJR1R3Ui9JQUFnQVMwQUFDQUFLQUlBS0FJMEVRTUFRWDlHRFFFZ0JFRUJhaUVFSUFGQkFXb0ZJQVVnQmlBRGF6WUNEQ0FGSUFJZ0JHczJBZ2dnQXlBQklBVkJDR29pQXlBRlFReHFJZ1lnQXlnQ0FDQUdLQUlBU0Jzb0FnQWlBeERxQVJvZ0FDQURJQUFvQWhocU5nSVlJQU1nQkdvaEJDQUJJQU5xQ3lFQkRBRUxDeUFGUVJCcUpBQWdCQXNyQVFGL0l3QkJFR3NpQXlRQUlBTkJDR29nQUNBQklBSVE4QUVnQXlnQ0RDRUFJQU5CRUdva0FDQUFDM0lCQW44akFFRWdheUlFSkFBakFFRVFheUlGSkFBZ0JTQUNOZ0lNSUFRZ0FUWUNHQ0FFSUFVb0FndzJBaHdnQlVFUWFpUUFJQVJCRUdvZ0JDZ0NHQ0FFS0FJY0lBTVE4UUVnQkNnQ0VDRUJJQVFnQkNnQ0ZEWUNEQ0FBSUFFMkFnQWdBQ0FFS0FJTU5nSUVJQVJCSUdva0FBczZBUUYvSXdCQkVHc2lCQ1FBSUFRZ0F5QUJJQUlnQVdzaUFSQkxJQUZxTmdJTUlBQWdBallDQUNBQUlBUW9BZ3cyQWdRZ0JFRVFhaVFBQ3dRQUlBRUxLZ0FnQUVIQW14TTJBZ0FnQUVFRWFoRDBBU0FBUWdBM0FoZ2dBRUlBTndJUUlBQkNBRGNDQ0NBQUM0d1NBUUovSUFBQ2YwSDBxaFF0QUFBRVFFSHdxaFFvQWdBTUFRdEI3S29VQW45QjZLb1VMUUFBQkVCQjVLb1VLQUlBREFFTFFjeTNGRUVBTmdJQVFjaTNGRUhRK1JNMkFnQkJ5TGNVUWVETkV6WUNBRUhJdHhSQm1NSVROZ0lBSXdCQkVHc2lBU1FBUWRDM0ZFSUFOd01BUWRpM0ZFRUFOZ0lBUWRpNEZFRUFPZ0FBSUFGQjBMY1VOZ0lNSXdCQkVHc2lBQ1FBRU9NRFFSMU5CRUFRVndBTElBQkJDR3BCNExjVVFSNFE1QU5CMUxjVUlBQW9BZ2dpQWpZQ0FFSFF0eFFnQWpZQ0FFSFl0eFFnQWlBQUtBSU1RUUowYWpZQ0FDQUFRUkJxSkFCQjBMY1VRUjRRM3dNZ0FVRVFhaVFBUWVDNEZFSDR3d0FRVTBIUXR4UVE0QU5CaExVVVFRQTJBZ0JCZ0xVVVFkRDVFellDQUVHQXRSUkI0TTBUTmdJQVFZQzFGRUcwMWhNMkFnQkJ5TGNVUVlDMUZFRzRxUlFReWdJUTRRTkJqTFVVUVFBMkFnQkJpTFVVUWRENUV6WUNBRUdJdFJSQjRNMFROZ0lBUVlpMUZFSFUxaE0yQWdCQnlMY1VRWWkxRkVIQXFSUVF5Z0lRNFFOQmxMVVVRUUEyQWdCQmtMVVVRZEQ1RXpZQ0FFR1F0UlJCNE0wVE5nSUFRWnkxRkVFQU9nQUFRWmkxRkVFQU5nSUFRWkMxRkVHc3doTTJBZ0JCbUxVVVFlRENFellDQUVISXR4UkJrTFVVUVlTckZCREtBaERoQTBHa3RSUkJBRFlDQUVHZ3RSUkIwUGtUTmdJQVFhQzFGRUhnelJNMkFnQkJvTFVVUVpqT0V6WUNBRUhJdHhSQm9MVVVRZnlxRkJES0FoRGhBMEdzdFJSQkFEWUNBRUdvdFJSQjBQa1ROZ0lBUWFpMUZFSGd6Uk0yQWdCQnFMVVVRYXpQRXpZQ0FFSEl0eFJCcUxVVVFZeXJGQkRLQWhEaEEwRzB0UlJCQURZQ0FFR3d0UlJCMFBrVE5nSUFRYkMxRkVIZ3pSTTJBZ0JCc0xVVVFlaktFellDQUVHNHRSUVEwd0kyQWdCQnlMY1VRYkMxRkVHVXF4UVF5Z0lRNFFOQnhMVVVRUUEyQWdCQndMVVVRZEQ1RXpZQ0FFSEF0UlJCNE0wVE5nSUFRY0MxRkVIQTBCTTJBZ0JCeUxjVVFjQzFGRUdjcXhRUXlnSVE0UU5CekxVVVFRQTJBZ0JCeUxVVVFkRDVFellDQUVISXRSUkI0TTBUTmdJQVFjaTFGRUdvMGhNMkFnQkJ5TGNVUWNpMUZFR3NxeFFReWdJUTRRTkIxTFVVUVFBMkFnQkIwTFVVUWRENUV6WUNBRUhRdFJSQjRNMFROZ0lBUWRDMUZFRzAwUk0yQWdCQnlMY1VRZEMxRkVHa3F4UVF5Z0lRNFFOQjNMVVVRUUEyQWdCQjJMVVVRZEQ1RXpZQ0FFSFl0UlJCNE0wVE5nSUFRZGkxRkVHYzB4TTJBZ0JCeUxjVVFkaTFGRUcwcXhRUXlnSVE0UU5CNUxVVVFRQTJBZ0JCNExVVVFkRDVFellDQUVIZ3RSUkI0TTBUTmdJQVFlaTFGRUd1MkFBN0FRQkI0TFVVUVpqTEV6WUNBRUhzdFJSQ0FEY0NBRUgwdFJSQkFEWUNBRUhJdHhSQjRMVVVRYnlyRkJES0FoRGhBMEg4dFJSQkFEWUNBRUg0dFJSQjBQa1ROZ0lBUWZpMUZFSGd6Uk0yQWdCQmdMWVVRcTZBZ0lEQUJUY0NBRUg0dFJSQndNc1ROZ0lBUVlpMkZFSUFOd0lBUVpDMkZFRUFOZ0lBUWNpM0ZFSDR0UlJCeEtzVUVNb0NFT0VEUVp5MkZFRUFOZ0lBUVppMkZFSFErUk0yQWdCQm1MWVVRZURORXpZQ0FFR1l0aFJCOU5ZVE5nSUFRY2kzRkVHWXRoUkJ5S2tVRU1vQ0VPRURRYVMyRkVFQU5nSUFRYUMyRkVIUStSTTJBZ0JCb0xZVVFlRE5FellDQUVHZ3RoUkI2TmdUTmdJQVFjaTNGRUdndGhSQjBLa1VFTW9DRU9FRFFheTJGRUVBTmdJQVFhaTJGRUhRK1JNMkFnQkJxTFlVUWVETkV6WUNBRUdvdGhSQnZOb1ROZ0lBUWNpM0ZFR290aFJCMktrVUVNb0NFT0VEUWJTMkZFRUFOZ0lBUWJDMkZFSFErUk0yQWdCQnNMWVVRZURORXpZQ0FFR3d0aFJCcE53VE5nSUFRY2kzRkVHd3RoUkI0S2tVRU1vQ0VPRURRYnkyRkVFQU5nSUFRYmkyRkVIUStSTTJBZ0JCdUxZVVFlRE5FellDQUVHNHRoUkIvT01UTmdJQVFjaTNGRUc0dGhSQmlLb1VFTW9DRU9FRFFjUzJGRUVBTmdJQVFjQzJGRUhRK1JNMkFnQkJ3TFlVUWVETkV6WUNBRUhBdGhSQmtPVVROZ0lBUWNpM0ZFSEF0aFJCa0tvVUVNb0NFT0VEUWN5MkZFRUFOZ0lBUWNpMkZFSFErUk0yQWdCQnlMWVVRZURORXpZQ0FFSEl0aFJCaE9ZVE5nSUFRY2kzRkVISXRoUkJtS29VRU1vQ0VPRURRZFMyRkVFQU5nSUFRZEMyRkVIUStSTTJBZ0JCMExZVVFlRE5FellDQUVIUXRoUkIrT1lUTmdJQVFjaTNGRUhRdGhSQm9Lb1VFTW9DRU9FRFFkeTJGRUVBTmdJQVFkaTJGRUhRK1JNMkFnQkIyTFlVUWVETkV6WUNBRUhZdGhSQjdPY1ROZ0lBUWNpM0ZFSFl0aFJCcUtvVUVNb0NFT0VEUWVTMkZFRUFOZ0lBUWVDMkZFSFErUk0yQWdCQjRMWVVRZURORXpZQ0FFSGd0aFJCa09rVE5nSUFRY2kzRkVIZ3RoUkJzS29VRU1vQ0VPRURRZXkyRkVFQU5nSUFRZWkyRkVIUStSTTJBZ0JCNkxZVVFlRE5FellDQUVIb3RoUkJ0T29UTmdJQVFjaTNGRUhvdGhSQnVLb1VFTW9DRU9FRFFmUzJGRUVBTmdJQVFmQzJGRUhRK1JNMkFnQkI4TFlVUWVETkV6WUNBRUh3dGhSQjJPc1ROZ0lBUWNpM0ZFSHd0aFJCd0tvVUVNb0NFT0VEUWZ5MkZFRUFOZ0lBUWZpMkZFSFErUk0yQWdCQitMWVVRZURORXpZQ0FFR0F0eFJCd1BVVE5nSUFRWUMzRkVHYzNoTTJBZ0JCK0xZVVFlemRFellDQUVISXR4UkIrTFlVUWVpcEZCREtBaERoQTBHTXR4UkJBRFlDQUVHSXR4UkIwUGtUTmdJQVFZaTNGRUhnelJNMkFnQkJrTGNVUWVUMUV6WUNBRUdRdHhSQnBPQVROZ0lBUVlpM0ZFSDAzeE0yQWdCQnlMY1VRWWkzRkVId3FSUVF5Z0lRNFFOQm5MY1VRUUEyQWdCQm1MY1VRZEQ1RXpZQ0FFR1l0eFJCNE0wVE5nSUFRYUMzRkJEbkEwR1l0eFJCNE9FVE5nSUFRY2kzRkVHWXR4UkIrS2tVRU1vQ0VPRURRYXkzRkVFQU5nSUFRYWkzRkVIUStSTTJBZ0JCcUxjVVFlRE5FellDQUVHd3R4UVE1d05CcUxjVVFmemlFellDQUVISXR4UkJxTGNVUVlDcUZCREtBaERoQTBHOHR4UkJBRFlDQUVHNHR4UkIwUGtUTmdJQVFiaTNGRUhnelJNMkFnQkJ1TGNVUWZ6c0V6WUNBRUhJdHhSQnVMY1VRY2lxRkJES0FoRGhBMEhFdHhSQkFEWUNBRUhBdHhSQjBQa1ROZ0lBUWNDM0ZFSGd6Uk0yQWdCQndMY1VRZlR0RXpZQ0FFSEl0eFJCd0xjVVFkQ3FGQkRLQWhEaEEwSGdxaFJCeUxjVU5nSUFRZWlxRkVFQk9nQUFRZVNxRkVIZ3FoUTJBZ0JCNEtvVUN5Z0NBQ0lBTmdJQUlBQWdBQ2dDQkVFQmFqWUNCRUgwcWhSQkFUb0FBRUh3cWhSQjdLb1VOZ0lBUWV5cUZBc29BZ0FpQURZQ0FDQUFJQUFvQWdSQkFXbzJBZ1FMRFFBZ0FFRUlhaERoQVJvZ0FBc0pBQ0FBRVBVQkVEUUxFd0FnQUNBQUtBSUFRUXhyS0FJQWFoRDFBUXNUQUNBQUlBQW9BZ0JCREdzb0FnQnFFUFlCQ3drQUlBQWdBUkQ2QVFzT0FDQUFJQUFvQWhBZ0FYSVFlQXNLQUNBQVFZU3JGQkJ5Q3hBQUlBQVEvUUVnQVJEOUFYTkJBWE1MU3dFQ2Z5QUFLQUlBSWdFRVFBSi9JQUVvQWd3aUFpQUJLQUlRUmdSQUlBRWdBU2dDQUNnQ0pCRUFBQXdCQ3lBQ0xRQUFDMEYvUndSQUlBQW9BZ0JGRHdzZ0FFRUFOZ0lBQzBFQkN3MEFJQUFvQWdBUS93RWFJQUFMTVFFQmZ5QUFLQUlNSWdFZ0FDZ0NFRVlFUUNBQUlBQW9BZ0FvQWlnUkFBQVBDeUFBSUFGQkFXbzJBZ3dnQVMwQUFBc05BQ0FBUVFScUVPRUJHaUFBQ3drQUlBQVFnQUlRTkFzVEFDQUFJQUFvQWdCQkRHc29BZ0JxRUlBQ0N4TUFJQUFnQUNnQ0FFRU1heWdDQUdvUWdRSUxDZ0FnQUVIWXFSUVFjZ3VJQVFFRGZ5QUFLQUpNSWdKQmYwWUVRQ0FBSUFBb0Fod2hBQ01BUVJCcklnRWtBQ0FCSUFBMkFnd2dBQ0FBS0FJRVFRRnFOZ0lFSUFFb0Fnd1Erd0VpQUVFZ0lBQW9BZ0FvQWh3UkF3QWhBaUFCS0FJTUlnQWdBQ2dDQkVFQmF5SUROZ0lFSUFOQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBRkJFR29rQUNBQ05nSk1DeUFDd0F0ZUFRSi9Ba0FnQUNnQ0FDSUNSUTBBQW44Z0FpZ0NHQ0lESUFJb0FoeEdCRUFnQWlBQlFmOEJjU0FDS0FJQUtBSTBFUU1BREFFTElBSWdBMEVCYWpZQ0dDQURJQUU2QUFBZ0FVSC9BWEVMUVg5SERRQWdBRUVBTmdJQUN5QUFDemdCQW44Z0FFR0FuQk0yQWdBZ0FDZ0NCQ0lCSUFFb0FnUkJBV3NpQWpZQ0JDQUNRWDlHQkVBZ0FTQUJLQUlBS0FJSUVRRUFDeUFBQ3drQUlBQVFod0lRTkF2ZkFRRUVmeU1BUVJCcklnUWtBQU5BQWtBZ0FpQUZUQTBBQW44Z0FDZ0NEQ0lESUFBb0FoQWlCa2tFUUNBRVFmLy8vLzhITmdJTUlBUWdCaUFEYTBFQ2RUWUNDQ0FFSUFJZ0JXczJBZ1FnQVNBRElBUkJCR29pQVNBRVFRaHFJZ01nQVNnQ0FDQURLQUlBU0JzaUFTQUVRUXhxSWdNZ0FTZ0NBQ0FES0FJQVNCc29BZ0FpQXhDS0FpRUJJQUFnQTBFQ2RDSUdJQUFvQWd4cU5nSU1JQUVnQm1vTUFRc2dBQ0FBS0FJQUtBSW9FUUFBSWdOQmYwWU5BU0FCSUFNMkFnQkJBU0VESUFGQkJHb0xJUUVnQXlBRmFpRUZEQUVMQ3lBRVFSQnFKQUFnQlFzcUFRRi9Jd0JCRUdzaUF5UUFJQU5CQ0dvZ0FTQUJJQUpCQW5ScUlBQVE4QUVnQTBFUWFpUUFJQUFMTWdFQmYwRi9JUUVnQUNBQUtBSUFLQUlrRVFBQVFYOUhCSDhnQUNBQUtBSU1JZ0JCQkdvMkFnd2dBQ2dDQUFWQmZ3c0x1d0VCQkg4akFFRVFheUlGSkFBRFFBSkFJQUlnQkV3TkFDQUFLQUlZSWdNZ0FDZ0NIQ0lHVHdSQUlBQWdBU2dDQUNBQUtBSUFLQUkwRVFNQVFYOUdEUUVnQkVFQmFpRUVJQUZCQkdvaEFRVWdCU0FHSUFOclFRSjFOZ0lNSUFVZ0FpQUVhellDQ0NBRElBRWdCVUVJYWlJRElBVkJER29pQmlBREtBSUFJQVlvQWdCSUd5Z0NBQ0lERUlvQ0dpQUFJQU5CQW5RaUJpQUFLQUlZYWpZQ0dDQURJQVJxSVFRZ0FTQUdhaUVCQ3d3QkN3c2dCVUVRYWlRQUlBUUxLZ0FnQUVHQW5CTTJBZ0FnQUVFRWFoRDBBU0FBUWdBM0FoZ2dBRUlBTndJUUlBQkNBRGNDQ0NBQUMvd0JBUUovSXdCQkVHc2lBaVFBSUFBZ0FDZ0NBRUVNYXlnQ0FHb29BaGdFUUNBQ0lBQTJBZ3dnQWtFQU9nQUlJQUFnQUNnQ0FFRU1heWdDQUdvaUFTZ0NFRVVFUUNBQktBSklJZ0VFUUNBQkVJNENDeUFDUVFFNkFBZ0xBa0FnQWkwQUNFVU5BQ0FBSUFBb0FnQkJER3NvQWdCcUtBSVlJZ0VnQVNnQ0FDZ0NHQkVBQUVGL1J3MEFJQUFnQUNnQ0FFRU1heWdDQUdvUWp3SUxBa0FnQWlnQ0RDSUFJQUFvQWdCQkRHc29BZ0JxSWdBb0FoZ2lBVVVOQUNBQUtBSVFEUUFnQUMwQUJVRWdjVVVOQUNBQklBRW9BZ0FvQWhnUkFBQkJmMGNOQUNBQ0tBSU1JZ0FnQUNnQ0FFRU1heWdDQUdvUWp3SUxDeUFDUVJCcUpBQUxDUUFnQUVFQkVQb0JDd29BSUFCQi9Lb1VFSElMRUFBZ0FCQ1NBaUFCRUpJQ2MwRUJjd3RMQVFKL0lBQW9BZ0FpQVFSQUFuOGdBU2dDRENJQ0lBRW9BaEJHQkVBZ0FTQUJLQUlBS0FJa0VRQUFEQUVMSUFJb0FnQUxRWDlIQkVBZ0FDZ0NBRVVQQ3lBQVFRQTJBZ0FMUVFFTERRQWdBQ2dDQUJDVUFob2dBQXN4QVFGL0lBQW9BZ3dpQVNBQUtBSVFSZ1JBSUFBZ0FDZ0NBQ2dDS0JFQUFBOExJQUFnQVVFRWFqWUNEQ0FCS0FJQUMxUUJBbjhDUUNBQUtBSUFJZ0pGRFFBQ2Z5QUNLQUlZSWdNZ0FpZ0NIRVlFUUNBQ0lBRWdBaWdDQUNnQ05CRURBQXdCQ3lBQ0lBTkJCR28yQWhnZ0F5QUJOZ0lBSUFFTFFYOUhEUUFnQUVFQU5nSUFDd3M2QUNBQUxRQUxRWUFCY1VFSGRnUkFJQUFvQWdBUU5Bc2dBQ0FCS1FJQU53SUFJQUFnQVNnQ0NEWUNDQ0FCUVFBNkFBc2dBVUVBT2dBQUM4Z0JBUVIvSUFBaEF5TUFRUkJySWdZa0FBSkFJQUlnQVdzaUJFSHcvLy8vQjBrRVFBSkFJQVJCQzBrRVFDQURJQVE2QUFzTUFRc2dCa0VJYWlBRVFRdFBCSDhnQkVFUWFrRndjU0lGSUFWQkFXc2lCU0FGUVF0R0d3VkJDZ3RCQVdvUW1BSWdBeUFHS0FJSUlnVTJBZ0FnQXlBR0tBSU1RWUNBZ0lCNGNqWUNDQ0FESUFRMkFnUWdCU0VEQ3dOQUlBRWdBa2NFUUNBRElBRXRBQUE2QUFBZ0EwRUJhaUVESUFGQkFXb2hBUXdCQ3dzZ0EwRUFPZ0FBSUFaQkVHb2tBQXdCQ3hCVkFBc2dBQXNZQVFGL0lBRVFWQ0VDSUFBZ0FUWUNCQ0FBSUFJMkFnQUwvUUVCQW44Q1FDQUFLQUlFSUFBdEFBc2lBa0gvQUhFZ0FrR0FBWEZCQjNZYklnSWdBVWtFUUNBQklBSnJJZ0lFUUNBQ0lBQXRBQXRCZ0FGeFFRZDJCSDhnQUNnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MSWdNZ0FDZ0NCQ0FBTFFBTElnRkIvd0J4SUFGQmdBRnhRUWQyR3lJQmEwc0VRQ0FBSUFNZ0FpQURheUFCYWlBQklBRVF4d01MSUFBb0FnQWdBQ0FBTFFBTFFZQUJjVUVIZGhzaUF5QUJhaUFDUVFBUW13SWFJQUVnQW1vaEFRSkFJQUF0QUF0QmdBRnhRUWQyQkVBZ0FDQUJOZ0lFREFFTElBQWdBVG9BQ3dzZ0FTQURha0VBT2dBQUN3d0JDeUFBSUFBb0FnQWdBQ0FBTFFBTFFZQUJjVUVIZGhzZ0FSQ2FBZ3NMTGdBQ1FDQUFMUUFMUVlBQmNVRUhkZ1JBSUFBZ0FqWUNCQXdCQ3lBQUlBSTZBQXNMSUFFZ0FtcEJBRG9BQUF0REFRRi9Jd0JCRUdzaUF5UUFJQU1nQWpvQUR5QUFJUUlEUUNBQkJFQWdBaUFETFFBUE9nQUFJQUZCQVdzaEFTQUNRUUZxSVFJTUFRc0xJQU5CRUdva0FDQUFDd29BSUFCQmpLc1VFSElMZkFFRGYwRi9JUU1DUUNBQVFYOUdEUUFnQVNnQ1RFRUFUaUVFQWtBQ1FDQUJLQUlFSWdKRkJFQWdBUkRRQVJvZ0FTZ0NCQ0lDUlEwQkN5QUNJQUVvQWl4QkNHdExEUUVMSUFSRkRRRkJmdzhMSUFFZ0FrRUJheUlDTmdJRUlBSWdBRG9BQUNBQklBRW9BZ0JCYjNFMkFnQWdBRUgvQVhFaEF3c2dBd3NjQUVIa29SUVFkRUcwcEJRUWRFRzRvaFFRamdKQmlLVVVFSTRDQzVVQkFRTi9Jd0JCRUdzaUF5UUFJQUFROHdFaUFDQUJOZ0lnSUFCQnBLRVROZ0lBSUFNZ0FDZ0NCQ0lCTmdJTUlBRWdBU2dDQkVFQmFqWUNCQ0FES0FJTUVKd0NJUUVnQXlnQ0RDSUVJQVFvQWdSQkFXc2lCVFlDQkNBRlFYOUdCRUFnQkNBRUtBSUFLQUlJRVFFQUN5QUFJQUkyQWlnZ0FDQUJOZ0lrSUFBZ0FTQUJLQUlBS0FJY0VRQUFPZ0FzSUFOQkVHb2tBQXMwQVFGL0lBQkJCR29pQWtHTW9STTJBZ0FnQWtId29CTTJBZ0FnQUVHUW9oTTJBZ0FnQWtHa29oTTJBZ0FnQWlBQkVLTUNDNVVCQVFOL0l3QkJFR3NpQXlRQUlBQVFqUUlpQUNBQk5nSWdJQUJCbEtRVE5nSUFJQU1nQUNnQ0JDSUJOZ0lNSUFFZ0FTZ0NCRUVCYWpZQ0JDQURLQUlNRUtRQ0lRRWdBeWdDRENJRUlBUW9BZ1JCQVdzaUJUWUNCQ0FGUVg5R0JFQWdCQ0FFS0FJQUtBSUlFUUVBQ3lBQUlBSTJBaWdnQUNBQk5nSWtJQUFnQVNBQktBSUFLQUljRVFBQU9nQXNJQU5CRUdva0FBczBBUUYvSUFCQkJHb2lBa0dNb1JNMkFnQWdBa0g0b3hNMkFnQWdBRUdBcFJNMkFnQWdBa0dVcFJNMkFnQWdBaUFCRUtNQ0Mwb0FJQUJCQURZQ0ZDQUFJQUUyQWhnZ0FFRUFOZ0lNSUFCQ2dxQ0FnT0FBTndJRUlBQWdBVVUyQWhBZ0FFRWdha0VBUVNnUUtSb2dBRUVjYWhEMEFTQUFRb0NBZ0lCd053SklDd29BSUFCQmxLc1VFSElMTVFBZ0FDQUFLQUlBS0FJWUVRQUFHaUFBSUFFb0FnQVFwQUlpQVRZQ0pDQUFJQUVnQVNnQ0FDZ0NIQkVBQURvQUxBdUVBUUVGZnlNQVFSQnJJZ0VrQUNBQlFSQnFJUVFDUUFOQUlBQW9BaVFpQWlBQUtBSW9JQUZCQ0dvaUF5QUVJQUZCQkdvZ0FpZ0NBQ2dDRkJFSEFDRUZRWDhoQWlBRFFRRWdBU2dDQkNBRGF5SURJQUFvQWlBUUxTQURSdzBCQWtBZ0JVRUJhdzRDQVFJQUN3dEJmMEVBSUFBb0FpQVF0d0ViSVFJTElBRkJFR29rQUNBQ0MyVUJBWDhDUUNBQUxRQXNSUVJBSUFKQkFDQUNRUUJLR3lFQ0EwQWdBaUFEUmcwQ0lBQWdBU2dDQUNBQUtBSUFLQUkwRVFNQVFYOUdCRUFnQXc4RklBRkJCR29oQVNBRFFRRnFJUU1NQVFzQUN3QUxJQUZCQkNBQ0lBQW9BaUFRTFNFQ0N5QUNDNGNDQVFWL0l3QkJJR3NpQWlRQUFrQUNRQUpBSUFGQmYwWU5BQ0FDSUFFMkFoUWdBQzBBTEFSQVFYOGhBeUFDUVJScVFRUkJBU0FBS0FJZ0VDMUJBVVlOQVF3REN5QUNJQUpCR0dvaUJUWUNFQ0FDUVNCcUlRWWdBa0VVYWlFREEwQWdBQ2dDSkNJRUlBQW9BaWdnQXlBRklBSkJER29nQWtFWWFpQUdJQUpCRUdvZ0JDZ0NBQ2dDREJFTEFDRUVJQUlvQWd3Z0EwWU5BaUFFUVFOR0JFQWdBMEVCUVFFZ0FDZ0NJQkF0UVFGR0RRSU1Bd3NnQkVFQlN3MENJQUpCR0dvaUEwRUJJQUlvQWhBZ0Eyc2lBeUFBS0FJZ0VDMGdBMGNOQWlBQ0tBSU1JUU1nQkVFQlJnMEFDd3NnQVVFQUlBRkJmMGNiSVFNTUFRdEJmeUVEQ3lBQ1FTQnFKQUFnQXd0SkFDQUFJQUVvQWdBUXBBSWlBVFlDSkNBQUlBRWdBU2dDQUNnQ0dCRUFBRFlDTENBQUlBQW9BaVFpQVNBQktBSUFLQUljRVFBQU9nQTFJQUFvQWl4QkNVNEVRQkRlQVFBTEN3a0FJQUJCQUJDckFndWZBd0lHZndGK0l3QkJJR3NpQWlRQUFrQWdBQzBBTkFSQUlBQW9BakFoQXlBQlJRMEJJQUJCQURvQU5DQUFRWDgyQWpBTUFRc2dBa0VCTmdJWUlBQkJMR29pQkNBQ1FSaHFJZ01nQXlnQ0FDQUVLQUlBU0Jzb0FnQWlCRUVBSUFSQkFFb2JJUVlEUUNBRklBWkhCRUJCZnlFRElBQW9BaUFRUGlJSFFYOUdEUUlnQWtFWWFpQUZhaUFIT2dBQUlBVkJBV29oQlF3QkN3c0NRQUpBSUFBdEFEVUVRQ0FDSUFJc0FCZzJBaFFNQVFzZ0FrRVlhaUVEQTBBQ1FDQUFLQUlvSWdVcEFnQWhDQUpBSUFBb0FpUWlCaUFGSUFKQkdHb2lCU0FFSUFWcUlnVWdBa0VRYWlBQ1FSUnFJQU1nQWtFTWFpQUdLQUlBS0FJUUVRc0FRUUZyRGdNQUJBRURDeUFBS0FJb0lBZzNBZ0FnQkVFSVJnMERJQUFvQWlBUVBpSUdRWDlHRFFNZ0JTQUdPZ0FBSUFSQkFXb2hCQXdCQ3dzZ0FpQUNMQUFZTmdJVUN3SkFJQUZGQkVBRFFDQUVRUUJNRFFKQmZ5RURJQVJCQVdzaUJDQUNRUmhxYWl3QUFDQUFLQUlnRUowQ1FYOUhEUUFNQkFzQUN5QUFJQUlvQWhRaUF6WUNNQXdDQ3lBQ0tBSVVJUU1NQVF0QmZ5RURDeUFDUVNCcUpBQWdBd3NKQUNBQVFRRVFxd0lMOFFFQkEzOGpBRUVnYXlJQ0pBQWdBQzBBTkNFREFrQWdBVUYvUmdSQUlBTU5BU0FBSUFBb0FqQWlBVUYvUnpvQU5Bd0JDd0pBSUFORkRRQWdBaUFBS0FJd05nSVFBa0FDUUFKQUlBQW9BaVFpQXlBQUtBSW9JQUpCRUdvZ0FrRVVhaUlFSUFKQkRHb2dBa0VZYWlBQ1FTQnFJQVFnQXlnQ0FDZ0NEQkVMQUVFQmF3NERBZ0lBQVFzZ0FDZ0NNQ0VESUFJZ0FrRVphallDRkNBQ0lBTTZBQmdMQTBBZ0FpZ0NGQ0lESUFKQkdHcE5EUUlnQWlBRFFRRnJJZ00yQWhRZ0F5d0FBQ0FBS0FJZ0VKMENRWDlIRFFBTEMwRi9JUUVNQVFzZ0FFRUJPZ0EwSUFBZ0FUWUNNQXNnQWtFZ2FpUUFJQUVMTVFBZ0FDQUFLQUlBS0FJWUVRQUFHaUFBSUFFb0FnQVFuQUlpQVRZQ0pDQUFJQUVnQVNnQ0FDZ0NIQkVBQURvQUxBdGxBUUYvQWtBZ0FDMEFMRVVFUUNBQ1FRQWdBa0VBU2hzaEFnTkFJQUlnQTBZTkFpQUFJQUV0QUFBZ0FDZ0NBQ2dDTkJFREFFRi9SZ1JBSUFNUEJTQUJRUUZxSVFFZ0EwRUJhaUVEREFFTEFBc0FDeUFCUVFFZ0FpQUFLQUlnRUMwaEFnc2dBZ3VJQWdFRmZ5TUFRU0JySWdJa0FBSkFBa0FDUUNBQlFYOUdEUUFnQWlBQndEb0FGeUFBTFFBc0JFQkJmeUVESUFKQkYycEJBVUVCSUFBb0FpQVFMVUVCUmcwQkRBTUxJQUlnQWtFWWFpSUZOZ0lRSUFKQklHb2hCaUFDUVJkcUlRTURRQ0FBS0FJa0lnUWdBQ2dDS0NBRElBVWdBa0VNYWlBQ1FSaHFJQVlnQWtFUWFpQUVLQUlBS0FJTUVRc0FJUVFnQWlnQ0RDQURSZzBDSUFSQkEwWUVRQ0FEUVFGQkFTQUFLQUlnRUMxQkFVWU5BZ3dEQ3lBRVFRRkxEUUlnQWtFWWFpSURRUUVnQWlnQ0VDQURheUlESUFBb0FpQVFMU0FEUncwQ0lBSW9BZ3doQXlBRVFRRkdEUUFMQ3lBQlFRQWdBVUYvUnhzaEF3d0JDMEYvSVFNTElBSkJJR29rQUNBREMwa0FJQUFnQVNnQ0FCQ2NBaUlCTmdJa0lBQWdBU0FCS0FJQUtBSVlFUUFBTmdJc0lBQWdBQ2dDSkNJQklBRW9BZ0FvQWh3UkFBQTZBRFVnQUNnQ0xFRUpUZ1JBRU40QkFBc0xDUUFnQUVFQUVMTUNDNThEQWdaL0FYNGpBRUVnYXlJQ0pBQUNRQ0FBTFFBMEJFQWdBQ2dDTUNFRElBRkZEUUVnQUVFQU9nQTBJQUJCZnpZQ01Bd0JDeUFDUVFFMkFoZ2dBRUVzYWlJRUlBSkJHR29pQXlBREtBSUFJQVFvQWdCSUd5Z0NBQ0lFUVFBZ0JFRUFTaHNoQmdOQUlBVWdCa2NFUUVGL0lRTWdBQ2dDSUJBK0lnZEJmMFlOQWlBQ1FSaHFJQVZxSUFjNkFBQWdCVUVCYWlFRkRBRUxDd0pBQWtBZ0FDMEFOUVJBSUFJZ0FpMEFHRG9BRnd3QkN5QUNRUmhxSVFNRFFBSkFJQUFvQWlnaUJTa0NBQ0VJQWtBZ0FDZ0NKQ0lHSUFVZ0FrRVlhaUlGSUFRZ0JXb2lCU0FDUVJCcUlBSkJGMm9nQXlBQ1FReHFJQVlvQWdBb0FoQVJDd0JCQVdzT0F3QUVBUU1MSUFBb0FpZ2dDRGNDQUNBRVFRaEdEUU1nQUNnQ0lCQStJZ1pCZjBZTkF5QUZJQVk2QUFBZ0JFRUJhaUVFREFFTEN5QUNJQUl0QUJnNkFCY0xBa0FnQVVVRVFBTkFJQVJCQUV3TkFrRi9JUU1nQkVFQmF5SUVJQUpCR0dwcUxRQUFJQUFvQWlBUW5RSkJmMGNOQUF3RUN3QUxJQUFnQWkwQUZ5SUROZ0l3REFJTElBSXRBQmNoQXd3QkMwRi9JUU1MSUFKQklHb2tBQ0FEQ3drQUlBQkJBUkN6QWd2eUFRRURmeU1BUVNCcklnSWtBQ0FBTFFBMElRTUNRQ0FCUVg5R0JFQWdBdzBCSUFBZ0FDZ0NNQ0lCUVg5SE9nQTBEQUVMQWtBZ0EwVU5BQ0FDSUFBb0FqREFPZ0FUQWtBQ1FBSkFJQUFvQWlRaUF5QUFLQUlvSUFKQkUyb2dBa0VVYWlJRUlBSkJER29nQWtFWWFpQUNRU0JxSUFRZ0F5Z0NBQ2dDREJFTEFFRUJhdzREQWdJQUFRc2dBQ2dDTUNFRElBSWdBa0VaYWpZQ0ZDQUNJQU02QUJnTEEwQWdBaWdDRkNJRElBSkJHR3BORFFJZ0FpQURRUUZySWdNMkFoUWdBeXdBQUNBQUtBSWdFSjBDUVg5SERRQUxDMEYvSVFFTUFRc2dBRUVCT2dBMElBQWdBVFlDTUFzZ0FrRWdhaVFBSUFFTExBRUJmeU1BUVJCcklnSWtBQ0FDSUFFMkFnd2dBRUhrQUVIN1B5QUJFTm9CSVFBZ0FrRVFhaVFBSUFBTG1BTUJDbjhnQUFKL0FrQWdBQ0lCUVFOeEJFQURRQ0FCTFFBQUlnSkZEUUlnQWtFOVJnMENJQUZCQVdvaUFVRURjUTBBQ3dzQ1FDQUJLQUlBSWdKQmYzTWdBa0dCZ29RSWEzRkJnSUdDaEhoeERRQURRQ0FDUWIzNjlPa0RjMEdCZ29RSWF5QUNRWDl6Y1VHQWdZS0VlSEVOQVNBQktBSUVJUUlnQVVFRWFpRUJJQUpCZ1lLRUNHc2dBa0YvYzNGQmdJR0NoSGh4UlEwQUN3c0RRQ0FCSWdJdEFBQWlBMEU5UndSQUlBSkJBV29oQVNBRERRRUxDeUFDREFFTElBRUxJZ0ZHQkVCQkFBOExBa0FnQUNBQklBQnJJZ1pxTFFBQURRQkJ3S2dVS0FJQUlnUkZEUUFnQkNnQ0FDSUJSUTBBQTBBQ1FBSi9JQUFoQWlBQklRTkJBQ0VIUVFBZ0JpSUlSUTBBR2dKQUlBSXRBQUFpQlVVTkFBTkFBa0FnQlNBRExRQUFJZ2xIRFFBZ0NVVU5BQ0FJUVFGcklnaEZEUUFnQTBFQmFpRURJQUl0QUFFaEJTQUNRUUZxSVFJZ0JRMEJEQUlMQ3lBRklRY0xJQWRCL3dGeElBTXRBQUJyQzBVRVFDQUJJQVpxSWdFdEFBQkJQVVlOQVFzZ0JDZ0NCQ0VCSUFSQkJHb2hCQ0FCRFFFTUFnc0xJQUZCQVdvaENnc2dDZ3Z3QWdFRGZ3SkFJQUV0QUFBTkFFR1N3d0FRdHdJaUFRUkFJQUV0QUFBTkFRc2dBRUVNYkVIZ3BSTnFFTGNDSWdFRVFDQUJMUUFBRFFFTFFhYkRBQkMzQWlJQkJFQWdBUzBBQUEwQkMwSFo2aEloQVFzQ1FBTkFBa0FnQVNBQ2FpMEFBQ0lFUlEwQUlBUkJMMFlOQUVFWElRUWdBa0VCYWlJQ1FSZEhEUUVNQWdzTElBSWhCQXRCMmVvU0lRTUNRQUpBQWtBQ1FBSkFJQUV0QUFBaUFrRXVSZzBBSUFFZ0JHb3RBQUFOQUNBQklRTWdBa0hEQUVjTkFRc2dBeTBBQVVVTkFRc2dBMEhaNmhJUXdBRkZEUUFnQTBHTHdnQVF3QUVOQVFzZ0FFVUVRRUdvcGhNaEFpQURMUUFCUVM1R0RRSUxRUUFQQzBIRXFCUW9BZ0FpQWdSQUEwQWdBeUFDUVFocUVNQUJSUTBDSUFJb0FpQWlBZzBBQ3d0QkpCQXpJZ0lFUUNBQ1FSUTJBZ1FnQWtIQXBSTTJBZ0FnQWtFSWFpSUJJQU1nQkJBckdpQUJJQVJxUVFBNkFBQWdBa0hFcUJRb0FnQTJBaUJCeEtnVUlBSTJBZ0FMSUFKQnFLWVRJQUFnQW5JYklRSUxJQUlMTGdBZ0FFRUFSeUFBUVp6MkUwZHhJQUJCdFBZVFIzRWdBRUhJcUJSSGNTQUFRZUNvRkVkeEJFQWdBQkEwQ3d1eUNBRUZmeUFCS0FJQUlRUUNRQUpBQWtBQ1FBSkFBa0FDUUFKL0FrQUNRQUpBQWtBZ0EwVU5BQ0FES0FJQUlnWkZEUUFnQUVVRVFDQUNJUU1NQXdzZ0EwRUFOZ0lBSUFJaEF3d0JDd0pBUVl5Z0ZDZ0NBQ2dDQUVVRVFDQUFSUTBCSUFKRkRRd2dBaUVHQTBBZ0JDd0FBQ0lEQkVBZ0FDQURRZisvQTNFMkFnQWdBRUVFYWlFQUlBUkJBV29oQkNBR1FRRnJJZ1lOQVF3T0N3c2dBRUVBTmdJQUlBRkJBRFlDQUNBQ0lBWnJEd3NnQWlFRElBQkZEUU1NQlFzZ0JCQXZEd3RCQVNFRkRBTUxRUUFNQVF0QkFRc2hCUU5BSUFWRkJFQWdCQzBBQUVFRGRpSUZRUkJySUFaQkduVWdCV3B5UVFkTERRTUNmeUFFUVFGcUlnVWdCa0dBZ0lBUWNVVU5BQm9nQlMwQUFFSEFBWEZCZ0FGSEJFQWdCRUVCYXlFRURBY0xJQVJCQW1vaUJTQUdRWUNBSUhGRkRRQWFJQVV0QUFCQndBRnhRWUFCUndSQUlBUkJBV3NoQkF3SEN5QUVRUU5xQ3lFRUlBTkJBV3NoQTBFQklRVU1BUXNEUUNBRUxRQUFJUVlDUUNBRVFRTnhEUUFnQmtFQmEwSCtBRXNOQUNBRUtBSUFJZ1pCZ1lLRUNHc2dCbkpCZ0lHQ2hIaHhEUUFEUUNBRFFRUnJJUU1nQkNnQ0JDRUdJQVJCQkdvaEJDQUdJQVpCZ1lLRUNHdHlRWUNCZ29SNGNVVU5BQXNMSUFaQi93RnhJZ1ZCQVd0Qi9nQk5CRUFnQTBFQmF5RURJQVJCQVdvaEJBd0JDd3NnQlVIQ0FXc2lCVUV5U3cwRElBUkJBV29oQkNBRlFRSjBRZEMrRTJvb0FnQWhCa0VBSVFVTUFBc0FDd05BSUFWRkJFQWdBMFVOQndOQUFrQUNRQUpBSUFRdEFBQWlCVUVCYXlJSFFmNEFTd1JBSUFVaEJnd0JDeUFEUVFWSkRRRWdCRUVEY1EwQkFrQURRQ0FFS0FJQUlnWkJnWUtFQ0dzZ0JuSkJnSUdDaEhoeERRRWdBQ0FHUWY4QmNUWUNBQ0FBSUFRdEFBRTJBZ1FnQUNBRUxRQUNOZ0lJSUFBZ0JDMEFBellDRENBQVFSQnFJUUFnQkVFRWFpRUVJQU5CQkdzaUEwRUVTdzBBQ3lBRUxRQUFJUVlMSUFaQi93RnhJZ1ZCQVdzaEJ3c2dCMEgrQUVzTkFRc2dBQ0FGTmdJQUlBQkJCR29oQUNBRVFRRnFJUVFnQTBFQmF5SUREUUVNQ1FzTElBVkJ3Z0ZySWdWQk1rc05BeUFFUVFGcUlRUWdCVUVDZEVIUXZoTnFLQUlBSVFaQkFTRUZEQUVMSUFRdEFBQWlCVUVEZGlJSFFSQnJJQWNnQmtFYWRXcHlRUWRMRFFFQ1FBSkFBbjhnQkVFQmFpSUhJQVZCZ0FGcklBWkJCblJ5SWdWQkFFNE5BQm9nQnkwQUFFR0FBV3NpQjBFL1N3MEJJQVJCQW1vaUNDQUhJQVZCQm5SeUlnVkJBRTROQUJvZ0NDMEFBRUdBQVdzaUIwRS9TdzBCSUFjZ0JVRUdkSEloQlNBRVFRTnFDeUVFSUFBZ0JUWUNBQ0FEUVFGcklRTWdBRUVFYWlFQURBRUxRYkNHRkVFWk5nSUFJQVJCQVdzaEJBd0ZDMEVBSVFVTUFBc0FDeUFFUVFGcklRUWdCZzBCSUFRdEFBQWhCZ3NnQmtIL0FYRU5BQ0FBQkVBZ0FFRUFOZ0lBSUFGQkFEWUNBQXNnQWlBRGF3OExRYkNHRkVFWk5nSUFJQUJGRFFFTElBRWdCRFlDQUF0QmZ3OExJQUVnQkRZQ0FDQUNDNGNFQWdkL0JINGpBRUVRYXlJSUpBQUNRQ0FBTFFBQUlnVkZCRUFnQUNFRURBRUxJQUFoQkFKQUEwQWdCY0FpQmtFZ1JpQUdRUWxyUVFWSmNrVU5BU0FFTFFBQklRVWdCRUVCYWlFRUlBVU5BQXNNQVFzQ1FDQUZRZjhCY1NJRlFTdHJEZ01BQVFBQkMwRi9RUUFnQlVFdFJoc2hCeUFFUVFGcUlRUUxBbjhDUUNBQ1FSQnlRUkJIRFFBZ0JDMEFBRUV3UncwQVFRRWhDU0FFTFFBQlFkOEJjVUhZQUVZRVFDQUVRUUpxSVFSQkVBd0NDeUFFUVFGcUlRUWdBa0VJSUFJYkRBRUxJQUpCQ2lBQ0d3c2lDcTBoREVFQUlRSURRQUpBUVZBaEJRSkFJQVFzQUFBaUJrRXdhMEgvQVhGQkNra05BRUdwZnlFRklBWkI0UUJyUWY4QmNVRWFTUTBBUVVraEJTQUdRY0VBYTBIL0FYRkJHVXNOQVFzZ0JTQUdhaUlHSUFwT0RRQWdDQ0FNUWdBZ0MwSUFFRDFCQVNFRkFrQWdDQ2tEQ0VJQVVnMEFJQXNnREg0aURTQUdyU0lPUW4rRlZnMEFJQTBnRG53aEMwRUJJUWtnQWlFRkN5QUVRUUZxSVFRZ0JTRUNEQUVMQ3lBQkJFQWdBU0FFSUFBZ0NSczJBZ0FMQWtBQ1FBSkFJQUlFUUVHd2hoUkJ4QUEyQWdBZ0IwRUFJQU5DQVlNaURGQWJJUWNnQXlFTERBRUxJQU1nQzFZTkFTQURRZ0dESVF3TEFrQWdES2NOQUNBSERRQkJzSVlVUWNRQU5nSUFJQU5DQVgwaEF3d0NDeUFESUF0YURRQkJzSVlVUWNRQU5nSUFEQUVMSUFzZ0I2d2lBNFVnQTMwaEF3c2dDRUVRYWlRQUlBTUxmd0lDZndKK0l3QkJvQUZySWdRa0FDQUVJQUUyQWp3Z0JDQUJOZ0lVSUFSQmZ6WUNHQ0FFUVJCcUlnVkNBQkRTQVNBRUlBVWdBMEVCRU5jQklBUXBBd2doQmlBRUtRTUFJUWNnQWdSQUlBSWdBU0FFS0FJVUlBUW9Bb2dCYWlBRUtBSThhMm8yQWdBTElBQWdCamNEQ0NBQUlBYzNBd0FnQkVHZ0FXb2tBQXRlQVFOL0lBRWdCQ0FEYTJvaEJRSkFBMEFnQXlBRVJ3UkFRWDhoQUNBQklBSkdEUUlnQVN3QUFDSUdJQU1zQUFBaUIwZ05BaUFHSUFkS0JFQkJBUThGSUFOQkFXb2hBeUFCUVFGcUlRRU1BZ3NBQ3dzZ0FpQUZSeUVBQ3lBQUN3d0FJQUFnQWlBREVKY0NHZ3RBQVFGL1FRQWhBQU4vSUFFZ0FrWUVmeUFBQlNBQkxBQUFJQUJCQkhScUlnQkJnSUNBZ0g5eElnTkJHSFlnQTNJZ0FITWhBQ0FCUVFGcUlRRU1BUXNMQzFRQkFuOENRQU5BSUFNZ0JFY0VRRUYvSVFBZ0FTQUNSZzBDSUFFb0FnQWlCU0FES0FJQUlnWklEUUlnQlNBR1NnUkFRUUVQQlNBRFFRUnFJUU1nQVVFRWFpRUJEQUlMQUFzTElBRWdBa2NoQUFzZ0FBc01BQ0FBSUFJZ0F4RENBaG9MeXdFQkJIOGdBQ0VESXdCQkVHc2lCaVFBQWtBZ0FpQUJhMEVDZFNJRVFmRC8vLzhEU1FSQUFrQWdCRUVDU1FSQUlBTWdCRG9BQ3d3QkN5QUdRUWhxSUFSQkFrOEVmeUFFUVFScVFYeHhJZ1VnQlVFQmF5SUZJQVZCQWtZYkJVRUJDMEVCYWhEREFpQURJQVlvQWdnaUJUWUNBQ0FESUFZb0FneEJnSUNBZ0hoeU5nSUlJQU1nQkRZQ0JDQUZJUU1MQTBBZ0FTQUNSd1JBSUFNZ0FTZ0NBRFlDQUNBRFFRUnFJUU1nQVVFRWFpRUJEQUVMQ3lBRFFRQTJBZ0FnQmtFUWFpUUFEQUVMRUZVQUN5QUFDeGtCQVg4Z0FSREVBaUVDSUFBZ0FUWUNCQ0FBSUFJMkFnQUxHUUFnQUVHQWdJQ0FCRThFUUJDdUFRQUxJQUJCQW5RUVZBdEFBUUYvUVFBaEFBTi9JQUVnQWtZRWZ5QUFCU0FCS0FJQUlBQkJCSFJxSWdCQmdJQ0FnSDl4SWdOQkdIWWdBM0lnQUhNaEFDQUJRUVJxSVFFTUFRc0xDL1FDQVFKL0l3QkJJR3NpQmlRQUlBWWdBVFlDSEFKQUlBTXRBQVJCQVhGRkJFQWdCa0YvTmdJQUlBQWdBU0FDSUFNZ0JDQUdJQUFvQWdBb0FoQVJCUUFoQVFKQUFrQUNRQ0FHS0FJQURnSUFBUUlMSUFWQkFEb0FBQXdEQ3lBRlFRRTZBQUFNQWdzZ0JVRUJPZ0FBSUFSQkJEWUNBQXdCQ3lBR0lBTW9BaHdpQURZQ0FDQUFJQUFvQWdSQkFXbzJBZ1FnQmlnQ0FCRDdBU0VISUFZb0FnQWlBQ0FBS0FJRVFRRnJJZ0UyQWdRZ0FVRi9SZ1JBSUFBZ0FDZ0NBQ2dDQ0JFQkFBc2dCaUFES0FJY0lnQTJBZ0FnQUNBQUtBSUVRUUZxTmdJRUlBWW9BZ0FReHdJaEFDQUdLQUlBSWdFZ0FTZ0NCRUVCYXlJRE5nSUVJQU5CZjBZRVFDQUJJQUVvQWdBb0FnZ1JBUUFMSUFZZ0FDQUFLQUlBS0FJWUVRSUFJQVpCREhJZ0FDQUFLQUlBS0FJY0VRSUFJQVVnQmtFY2FpQUNJQVlnQmtFWWFpSURJQWNnQkVFQkVNZ0NJQVpHT2dBQUlBWW9BaHdoQVFOQUlBTkJER3NReVFJaUF5QUdSdzBBQ3dzZ0JrRWdhaVFBSUFFTENnQWdBRUc4cXhRUWNndjRCUUVMZnlNQVFZQUJheUlLSkFBZ0NpQUJOZ0o4SUFwQjFBQTJBaEFnQ2tFSWFpSUJRUUEyQWdBZ0FTQUtRUkJxSWdrb0FnQTJBZ1FnQVNFTkFrQUNRQ0FESUFKclFReHRJZ3RCNVFCUEJFQWdDeEF6SWdsRkRRRWdEU2dDQUNFQklBMGdDVFlDQUNBQkJFQWdBU0FOS0FJRUVRRUFDd3NnQ1NFSElBSWhBUU5BSUFFZ0EwWUVRQU5BSUFBZ0NrSDhBR29RL0FGQkFTQUxHd1JBSUFBZ0NrSDhBR29RL0FFRVFDQUZJQVVvQWdCQkFuSTJBZ0FMREFVTEFuOGdBQ2dDQUNJSEtBSU1JZ0VnQnlnQ0VFWUVRQ0FISUFjb0FnQW9BaVFSQUFBTUFRc2dBUzBBQUF2QUlRNGdCa1VFUUNBRUlBNGdCQ2dDQUNnQ0RCRURBQ0VPQ3lBUVFRRnFJUWhCQUNFUklBa2hCeUFDSVFFRFFDQUJJQU5HQkVBZ0NDRVFJQkZGRFFJZ0FCRCtBUm9nQ1NFSElBSWhBU0FMSUF4cVFRSkpEUUlEUUNBQklBTkdCRUFNQkFVQ1FDQUhMUUFBUVFKSERRQWdFQ0FCS0FJRUlBRXRBQXNpQ0VIL0FIRWdDRUdBQVhGQkIzWWJSZzBBSUFkQkFEb0FBQ0FNUVFGcklRd0xJQWRCQVdvaEJ5QUJRUXhxSVFFTUFRc0FDd0FGQWtBZ0J5MEFBRUVCUncwQUlCQWdBU2dDQUNBQklBRXRBQXRCZ0FGeFFRZDJHMm90QUFBaER3SkFJQTVCL3dGeElBWUVmeUFQQlNBRUlBL0FJQVFvQWdBb0Fnd1JBd0FMUWY4QmNVWUVRRUVCSVJFZ0NDQUJLQUlFSUFFdEFBc2lEMEgvQUhFZ0QwR0FBWEZCQjNZYlJ3MENJQWRCQWpvQUFDQU1RUUZxSVF3TUFRc2dCMEVBT2dBQUN5QUxRUUZySVFzTElBZEJBV29oQnlBQlFReHFJUUVNQVFzQUN3QUxBQVVnQjBFQ1FRRWdBU2dDQkNBQkxRQUxJZ2hCL3dCeElBaEJnQUZ4UVFkMkcwVWlDQnM2QUFBZ0NDQU1haUVNSUFzZ0NHc2hDeUFIUVFGcUlRY2dBVUVNYWlFQkRBRUxBQXNBQ3hEZUFRQUxBa0FDUUFOQUlBSWdBMFlOQVNBSkxRQUFRUUpIQkVBZ0NVRUJhaUVKSUFKQkRHb2hBZ3dCQ3dzZ0FpRUREQUVMSUFVZ0JTZ0NBRUVFY2pZQ0FBc2dEU0lBS0FJQUlRRWdBRUVBTmdJQUlBRUVRQ0FCSUFBb0FnUVJBUUFMSUFwQmdBRnFKQUFnQXdzYUFDQUFMUUFMUVlBQmNVRUhkZ1JBSUFBb0FnQVFOQXNnQUF2T0FRRUZmeU1BUVJCcklnVWtBQ0FGUVFScUlnRkIxUUEyQWdRZ0FTQUFOZ0lBSUFGQkFEWUNDQ01BUVJCcklnTWtBQ0FBS0FJQVFYOUhCRUFnQTBFTWFpSUVJQUUyQWdBZ0EwRUlhaUlDSUFRMkFnQURRQ0FBS0FJQVFRRkdEUUFMSUFBb0FnQkZCRUFnQUVFQk5nSUFJQUlvQWdBb0FnQWlBU2dDQUNBQktBSUlJZ1JCQVhWcUlRSWdBU2dDQkNFQklBSWdCRUVCY1FSL0lBSW9BZ0FnQVdvb0FnQUZJQUVMRVFFQUlBQkJmellDQUFzTElBTkJFR29rQUNBQUtBSUVJUUFnQlVFUWFpUUFJQUJCQVdzTEhBQWdBRUg0cWhSQitLb1VLQUlBUVFGcUlnQTJBZ0FnQURZQ0JBdmxCQUVDZnlBREtBSUVJUUFnQXlnQ0hDRUdJd0JCNEFGcklnTWtBQ0FESUFJMkF0Z0JJQU1nQVRZQzNBRWdBQkROQWlFSElBTkJ5QUZxSUFZZ0EwSFhBV29RemdJZ0EwRzhBV29pQWtJQU53SUFJQUpCQURZQ0NDQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR05nSzRBU0FESUFOQkVHbzJBZ3dnQTBFQU5nSUlBMEFDUUNBRFFkd0JhaUFEUWRnQmFoRDhBUTBBSUFNb0FyZ0JJQVlnQWlnQ0JDQUNMUUFMSWdCQi93QnhJQUJCZ0FGeFFRZDJHeUlBYWtZRVFDQUNJQUJCQVhRUW1RSWdBaUFDTFFBTFFZQUJjVUVIZGdSL0lBSW9BZ2hCLy8vLy93ZHhRUUZyQlVFS0N4Q1pBaUFESUFJb0FnQWdBaUFDTFFBTFFZQUJjVUVIZGhzaUJpQUFhallDdUFFTEFuOGdBeWdDM0FFaUFDZ0NEQ0lCSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlrRVFBQURBRUxJQUV0QUFBTHdDQUhJQVlnQTBHNEFXb2dBMEVJYWlBRExBRFhBU0FES0FMTUFTQURMUURUQVNBRFFSQnFJQU5CREdwQm9NQVRFTThDRFFBZ0EwSGNBV29RL2dFYURBRUxDeUFES0FJTUlRQUNRQUpBSUFNb0Fzd0JJQU10QU5NQklnRkIvd0J4SUFGQmdBRnhRUWQyRzBVTkFDQUFJQU5CRUdwclFaOEJTZzBBSUFNZ0FFRUVhaUlCTmdJTUlBQWdBeWdDQ0RZQ0FBd0JDeUFBSVFFTElBVWdCaUFES0FLNEFTQUVJQWNRMEFJMkFnQWdBMEhJQVdvZ0EwRVFhaUFCSUFRUTBRSWdBMEhjQVdvZ0EwSFlBV29RL0FFRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFNb0F0d0JJUUFnQWhESkFob2dBMEhJQVdvUXlRSWFJQU5CNEFGcUpBQWdBQXNyQUFKQUlBQkJ5Z0J4SWdBRVFDQUFRY0FBUmdSQVFRZ1BDeUFBUVFoSERRRkJFQThMUVFBUEMwRUtDM29CQVg4akFFRVFheUlESkFBZ0F5QUJOZ0lNSUFFZ0FTZ0NCRUVCYWpZQ0JDQUNJQU1vQWd3UXh3SWlBU0FCS0FJQUtBSVFFUUFBT2dBQUlBQWdBU0FCS0FJQUtBSVVFUUlBSUFNb0Fnd2lBQ0FBS0FJRVFRRnJJZ0UyQWdRZ0FVRi9SZ1JBSUFBZ0FDZ0NBQ2dDQ0JFQkFBc2dBMEVRYWlRQUM5Z0NBUU4vQWtBQ1FDQURLQUlBSWdzZ0FrY05BRUVySVF3Z0FFSC9BWEVpRFNBS0xRQVlSd1JBUVMwaERDQUtMUUFaSUExSERRRUxJQU1nQWtFQmFqWUNBQ0FDSUF3NkFBQU1BUXNDUUFKQUlBWWdCMEgvQUhFZ0IwR0FBWEZCQjNZYlJRMEFJQUFnQlVjTkFFRUFJUWNnQ1NnQ0FDSUFJQWhyUVo4QlNnMEJJQVFvQWdBaEFTQUpJQUJCQkdvMkFnQWdBQ0FCTmdJQURBSUxRWDhoQnlBS0lBcEJHbW9nQUJEU0FpQUtheUlBUVJkS0RRQUNRQUpBQWtBZ0FVRUlhdzREQUFJQUFRc2dBQ0FCU0EwQkRBSUxJQUZCRUVjTkFDQUFRUlpJRFFBZ0FpQUxSZzBCSUFzZ0FtdEJBa29OQVNBTFFRRnJMUUFBUVRCSERRRWdCRUVBTmdJQUlBTWdDMEVCYWpZQ0FDQUxJQUJCb01BVGFpMEFBRG9BQUVFQUR3c2dBeUFMUVFGcU5nSUFJQXNnQUVHZ3dCTnFMUUFBT2dBQUlBUWdCQ2dDQUVFQmFqWUNBRUVBSVFjTElBY1BDeUFFUVFBMkFnQkJBQXZpQVFJQ2Z3RitJd0JCRUdzaUJDUUFBbjhDUUNBQUlBRkhCRUFDUUVHd2hoUW9BZ0FoQlVHd2hoUkJBRFlDQUJEVEFob2dBQ0FFUVF4cUlBTVExQUloQmdKQVFiQ0dGQ2dDQUNJQUJFQWdCQ2dDRENBQlJ3MENJQUJCeEFCSERRRWdBa0VFTmdJQVFmLy8vLzhISUFaQ0FGVU5CUm9NQkF0QnNJWVVJQVUyQWdBZ0JDZ0NEQ0FCUmcwQURBRUxJQVpDLy8vLy8zZFhCRUFnQWtFRU5nSUFEQU1MSUFaQ2dJQ0FnQWhaQkVBZ0FrRUVOZ0lBUWYvLy8vOEhEQVFMSUFhbkRBTUxDeUFDUVFRMkFnQkJBQXdCQzBHQWdJQ0FlQXNoQUNBRVFSQnFKQUFnQUF2YUFRRURmeUFBS0FJRUlBQXRBQXNpQkVIL0FIRWdCRUdBQVhGQkIzWWJJUVFDUUNBQ0lBRnJRUVZJRFFBZ0JFVU5BQ0FCSUFJUTFRSWdBa0VFYXlFRUlBQW9BZ1FnQUMwQUN5SUNRZjhBY1NBQ1FZQUJjVUVIZGhzZ0FDZ0NBQ0FBSUFKQmdBRnhRUWQyR3lJQ2FpRUdBa0FEUUFKQUlBSXNBQUFpQUVIL0FHc2hCU0FCSUFSUERRQWdCVUgvQVhGQmdnRlBCRUFnQVNnQ0FDQUFSdzBEQ3lBQlFRUnFJUUVnQWlBR0lBSnJRUUZLYWlFQ0RBRUxDeUFGUWY4QmNVR0NBVWtOQVNBRUtBSUFRUUZySUFCSkRRRUxJQU5CQkRZQ0FBc0xNZ0FnQWtIL0FYRWhBZ05BQWtBZ0FDQUJSd1IvSUFBdEFBQWdBa2NOQVNBQUJTQUJDdzhMSUFCQkFXb2hBQXdBQ3dBTDFBSUJBMzlCM0tvVUxRQUFCRUJCMktvVUtBSUFEd3NqQUVFZ2F5SUJKQUFDUUFKQUEwQWdBVUVJYWlBQVFRSjBhaUFBUWZqREFFSDg3UkpCQVNBQWRFSC8vLy8vQjNFYkVMZ0NJZ0kyQWdBZ0FrRi9SZzBCSUFCQkFXb2lBRUVHUncwQUMwR2M5aE1oQUNBQlFRaHFRWnoyRTBFWUVKSUJSUTBCUWJUMkV5RUFJQUZCQ0dwQnRQWVRRUmdRa2dGRkRRRkJBQ0VBUWZpb0ZDMEFBRVVFUUFOQUlBQkJBblJCeUtnVWFpQUFRZnp0RWhDNEFqWUNBQ0FBUVFGcUlnQkJCa2NOQUF0QitLZ1VRUUU2QUFCQjRLZ1VRY2lvRkNnQ0FEWUNBQXRCeUtnVUlRQWdBVUVJYWtISXFCUkJHQkNTQVVVTkFVSGdxQlFoQUNBQlFRaHFRZUNvRkVFWUVKSUJSUTBCUVJnUU15SUFSUTBBSUFBZ0FTa0NDRGNDQUNBQUlBRXBBaGczQWhBZ0FDQUJLUUlRTndJSURBRUxRUUFoQUFzZ0FVRWdhaVFBUWR5cUZFRUJPZ0FBUWRpcUZDQUFOZ0lBSUFBTEZnQWdBQ0FCSUFKQ2dJQ0FnSUNBZ0lDQWZ4QzdBZ3MvQVFGL0FrQWdBQ0FCUmcwQUEwQWdBQ0FCUVFScklnRlBEUUVnQUNnQ0FDRUNJQUFnQVNnQ0FEWUNBQ0FCSUFJMkFnQWdBRUVFYWlFQURBQUxBQXNMNVFRQkFuOGdBeWdDQkNFQUlBTW9BaHdoQmlNQVFlQUJheUlESkFBZ0F5QUNOZ0xZQVNBRElBRTJBdHdCSUFBUXpRSWhCeUFEUWNnQmFpQUdJQU5CMXdGcUVNNENJQU5CdkFGcUlnSkNBRGNDQUNBQ1FRQTJBZ2dnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENaQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCallDdUFFZ0F5QURRUkJxTmdJTUlBTkJBRFlDQ0FOQUFrQWdBMEhjQVdvZ0EwSFlBV29RL0FFTkFDQURLQUs0QVNBR0lBSW9BZ1FnQWkwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGhzaUFHcEdCRUFnQWlBQVFRRjBFSmtDSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRbVFJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1lnQUdvMkFyZ0JDd0ovSUFNb0F0d0JJZ0FvQWd3aUFTQUFLQUlRUmdSQUlBQWdBQ2dDQUNnQ0pCRUFBQXdCQ3lBQkxRQUFDOEFnQnlBR0lBTkJ1QUZxSUFOQkNHb2dBeXdBMXdFZ0F5Z0N6QUVnQXkwQTB3RWdBMEVRYWlBRFFReHFRYURBRXhEUEFnMEFJQU5CM0FGcUVQNEJHZ3dCQ3dzZ0F5Z0NEQ0VBQWtBQ1FDQURLQUxNQVNBRExRRFRBU0lCUWY4QWNTQUJRWUFCY1VFSGRodEZEUUFnQUNBRFFSQnFhMEdmQVVvTkFDQURJQUJCQkdvaUFUWUNEQ0FBSUFNb0FnZzJBZ0FNQVFzZ0FDRUJDeUFGSUFZZ0F5Z0N1QUVnQkNBSEVOY0NOd01BSUFOQnlBRnFJQU5CRUdvZ0FTQUVFTkVDSUFOQjNBRnFJQU5CMkFGcUVQd0JCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QURLQUxjQVNFQUlBSVF5UUlhSUFOQnlBRnFFTWtDR2lBRFFlQUJhaVFBSUFBTHJRRUNBbjhCZmlNQVFSQnJJZ1FrQUFKQUlBQWdBVWNFUUVHd2hoUW9BZ0FoQlVHd2hoUkJBRFlDQUJEVEFob2dBQ0FFUVF4cUlBTVExQUloQmdKQVFiQ0dGQ2dDQUNJQUJFQWdCQ2dDRENBQlJ3MEJJQUJCeEFCSERRTWdBa0VFTmdJQVF2Ly8vLy8vLy8vLy93QkNnSUNBZ0lDQWdJQ0FmeUFHUWdCVkd5RUdEQU1MUWJDR0ZDQUZOZ0lBSUFRb0Fnd2dBVVlOQWdzTElBSkJCRFlDQUVJQUlRWUxJQVJCRUdva0FDQUdDK1VFQVFKL0lBTW9BZ1FoQUNBREtBSWNJUVlqQUVIZ0FXc2lBeVFBSUFNZ0FqWUMyQUVnQXlBQk5nTGNBU0FBRU0wQ0lRY2dBMEhJQVdvZ0JpQURRZGNCYWhET0FpQURRYndCYWlJQ1FnQTNBZ0FnQWtFQU5nSUlJQUlnQWkwQUMwR0FBWEZCQjNZRWZ5QUNLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1FtUUlnQXlBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklnWTJBcmdCSUFNZ0EwRVFhallDRENBRFFRQTJBZ2dEUUFKQUlBTkIzQUZxSUFOQjJBRnFFUHdCRFFBZ0F5Z0N1QUVnQmlBQ0tBSUVJQUl0QUFzaUFFSC9BSEVnQUVHQUFYRkJCM1liSWdCcVJnUkFJQUlnQUVFQmRCQ1pBaUFDSUFJdEFBdEJnQUZ4UVFkMkJIOGdBaWdDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSmtDSUFNZ0FpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5SUdJQUJxTmdLNEFRc0NmeUFES0FMY0FTSUFLQUlNSWdFZ0FDZ0NFRVlFUUNBQUlBQW9BZ0FvQWlRUkFBQU1BUXNnQVMwQUFBdkFJQWNnQmlBRFFiZ0JhaUFEUVFocUlBTXNBTmNCSUFNb0Fzd0JJQU10QU5NQklBTkJFR29nQTBFTWFrR2d3Qk1RendJTkFDQURRZHdCYWhEK0FSb01BUXNMSUFNb0Fnd2hBQUpBQWtBZ0F5Z0N6QUVnQXkwQTB3RWlBVUgvQUhFZ0FVR0FBWEZCQjNZYlJRMEFJQUFnQTBFUWFtdEJud0ZLRFFBZ0F5QUFRUVJxSWdFMkFnd2dBQ0FES0FJSU5nSUFEQUVMSUFBaEFRc2dCU0FHSUFNb0FyZ0JJQVFnQnhEWkFqc0JBQ0FEUWNnQmFpQURRUkJxSUFFZ0JCRFJBaUFEUWR3QmFpQURRZGdCYWhEOEFRUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0F5Z0MzQUVoQUNBQ0VNa0NHaUFEUWNnQmFoREpBaG9nQTBIZ0FXb2tBQ0FBQytFQkFnTi9BWDRqQUVFUWF5SUVKQUFDZndKQUlBQWdBVWNFUUFKQUFrQWdBQzBBQUNJRlFTMUhEUUFnQUVFQmFpSUFJQUZIRFFBTUFRdEJzSVlVS0FJQUlRWkJzSVlVUVFBMkFnQVEwd0lhSUFBZ0JFRU1haUFERU5vQ0lRY0NRRUd3aGhRb0FnQWlBQVJBSUFRb0Fnd2dBVWNOQWlBQVFjUUFSZzBCSUFkQy8vOERWZzBCREFRTFFiQ0dGQ0FHTmdJQUlBRWdCQ2dDREVjTkFTQUhRb0NBQkZRTkF3c2dBa0VFTmdJQVFmLy9Bd3dEQ3dzZ0FrRUVOZ0lBUVFBTUFRdEJBQ0FIcHlJQWF5QUFJQVZCTFVZYkN5RUFJQVJCRUdva0FDQUFRZi8vQTNFTERRQWdBQ0FCSUFKQ2Z4QzdBZ3ZsQkFFQ2Z5QURLQUlFSVFBZ0F5Z0NIQ0VHSXdCQjRBRnJJZ01rQUNBRElBSTJBdGdCSUFNZ0FUWUMzQUVnQUJETkFpRUhJQU5CeUFGcUlBWWdBMEhYQVdvUXpnSWdBMEc4QVdvaUFrSUFOd0lBSUFKQkFEWUNDQ0FDSUFJdEFBdEJnQUZ4UVFkMkJIOGdBaWdDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSmtDSUFNZ0FpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5SUdOZ0s0QVNBRElBTkJFR28yQWd3Z0EwRUFOZ0lJQTBBQ1FDQURRZHdCYWlBRFFkZ0JhaEQ4QVEwQUlBTW9BcmdCSUFZZ0FpZ0NCQ0FDTFFBTElnQkIvd0J4SUFCQmdBRnhRUWQyR3lJQWFrWUVRQ0FDSUFCQkFYUVFtUUlnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENaQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCaUFBYWpZQ3VBRUxBbjhnQXlnQzNBRWlBQ2dDRENJQklBQW9BaEJHQkVBZ0FDQUFLQUlBS0FJa0VRQUFEQUVMSUFFdEFBQUx3Q0FISUFZZ0EwRzRBV29nQTBFSWFpQURMQURYQVNBREtBTE1BU0FETFFEVEFTQURRUkJxSUFOQkRHcEJvTUFURU04Q0RRQWdBMEhjQVdvUS9nRWFEQUVMQ3lBREtBSU1JUUFDUUFKQUlBTW9Bc3dCSUFNdEFOTUJJZ0ZCL3dCeElBRkJnQUZ4UVFkMkcwVU5BQ0FBSUFOQkVHcHJRWjhCU2cwQUlBTWdBRUVFYWlJQk5nSU1JQUFnQXlnQ0NEWUNBQXdCQ3lBQUlRRUxJQVVnQmlBREtBSzRBU0FFSUFjUTNBSTJBZ0FnQTBISUFXb2dBMEVRYWlBQklBUVEwUUlnQTBIY0FXb2dBMEhZQVdvUS9BRUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBTW9BdHdCSVFBZ0FoREpBaG9nQTBISUFXb1F5UUlhSUFOQjRBRnFKQUFnQUF2ZUFRSURmd0YrSXdCQkVHc2lCQ1FBQW44Q1FDQUFJQUZIQkVBQ1FBSkFJQUF0QUFBaUJVRXRSdzBBSUFCQkFXb2lBQ0FCUncwQURBRUxRYkNHRkNnQ0FDRUdRYkNHRkVFQU5nSUFFTk1DR2lBQUlBUkJER29nQXhEYUFpRUhBa0JCc0lZVUtBSUFJZ0FFUUNBRUtBSU1JQUZIRFFJZ0FFSEVBRVlOQVNBSFF2Ly8vLzhQVmcwQkRBUUxRYkNHRkNBR05nSUFJQUVnQkNnQ0RFY05BU0FIUW9DQWdJQVFWQTBEQ3lBQ1FRUTJBZ0JCZnd3REN3c2dBa0VFTmdJQVFRQU1BUXRCQUNBSHB5SUFheUFBSUFWQkxVWWJDeUVBSUFSQkVHb2tBQ0FBQytVRUFRSi9JQU1vQWdRaEFDQURLQUljSVFZakFFSGdBV3NpQXlRQUlBTWdBallDMkFFZ0F5QUJOZ0xjQVNBQUVNMENJUWNnQTBISUFXb2dCaUFEUWRjQmFoRE9BaUFEUWJ3QmFpSUNRZ0EzQWdBZ0FrRUFOZ0lJSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRbVFJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1kyQXJnQklBTWdBMEVRYWpZQ0RDQURRUUEyQWdnRFFBSkFJQU5CM0FGcUlBTkIyQUZxRVB3QkRRQWdBeWdDdUFFZ0JpQUNLQUlFSUFJdEFBc2lBRUgvQUhFZ0FFR0FBWEZCQjNZYklnQnFSZ1JBSUFJZ0FFRUJkQkNaQWlBQ0lBSXRBQXRCZ0FGeFFRZDJCSDhnQWlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MRUprQ0lBTWdBaWdDQUNBQ0lBSXRBQXRCZ0FGeFFRZDJHeUlHSUFCcU5nSzRBUXNDZnlBREtBTGNBU0lBS0FJTUlnRWdBQ2dDRUVZRVFDQUFJQUFvQWdBb0FpUVJBQUFNQVFzZ0FTMEFBQXZBSUFjZ0JpQURRYmdCYWlBRFFRaHFJQU1zQU5jQklBTW9Bc3dCSUFNdEFOTUJJQU5CRUdvZ0EwRU1ha0dnd0JNUXp3SU5BQ0FEUWR3QmFoRCtBUm9NQVFzTElBTW9BZ3doQUFKQUFrQWdBeWdDekFFZ0F5MEEwd0VpQVVIL0FIRWdBVUdBQVhGQkIzWWJSUTBBSUFBZ0EwRVFhbXRCbndGS0RRQWdBeUFBUVFScUlnRTJBZ3dnQUNBREtBSUlOZ0lBREFFTElBQWhBUXNnQlNBR0lBTW9BcmdCSUFRZ0J4RGVBamNEQUNBRFFjZ0JhaUFEUVJCcUlBRWdCQkRSQWlBRFFkd0JhaUFEUWRnQmFoRDhBUVJBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dBeWdDM0FFaEFDQUNFTWtDR2lBRFFjZ0JhaERKQWhvZ0EwSGdBV29rQUNBQUM4SUJBZ04vQVg0akFFRVFheUlFSkFBQ2ZpQUFJQUZIQkVBQ1FBSkFJQUF0QUFBaUJVRXRSdzBBSUFCQkFXb2lBQ0FCUncwQURBRUxRYkNHRkNnQ0FDRUdRYkNHRkVFQU5nSUFFTk1DR2lBQUlBUkJER29nQXhEYUFpRUhBa0JCc0lZVUtBSUFJZ0FFUUNBRUtBSU1JQUZIRFFJZ0FFSEVBRWNOQVNBQ1FRUTJBZ0JDZnd3RUMwR3doaFFnQmpZQ0FDQUVLQUlNSUFGR0RRQU1BUXRDQUNBSGZTQUhJQVZCTFVZYkRBSUxDeUFDUVFRMkFnQkNBQXNoQnlBRVFSQnFKQUFnQnd1TUJRRURmeUFES0FJY0lRQWpBRUdBQW1zaUF5UUFJQU1nQWpZQytBRWdBeUFCTmdMOEFTQURRY0FCYWlBQUlBTkIwQUZxSUFOQnp3RnFJQU5CemdGcUVPQUNJQU5CdEFGcUlnSkNBRGNDQUNBQ1FRQTJBZ2dnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENaQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCallDc0FFZ0F5QURRUkJxTmdJTUlBTkJBRFlDQ0NBRFFRRTZBQWNnQTBIRkFEb0FCaUFETFFET0FjQWhBU0FETFFEUEFjQWhCd05BQWtBZ0EwSDhBV29nQTBINEFXb1EvQUVOQUNBREtBS3dBU0FHSUFJb0FnUWdBaTBBQ3lJQVFmOEFjU0FBUVlBQmNVRUhkaHNpQUdwR0JFQWdBaUFBUVFGMEVKa0NJQUlnQWkwQUMwR0FBWEZCQjNZRWZ5QUNLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1FtUUlnQXlBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklnWWdBR28yQXJBQkN3Si9JQU1vQXZ3QklnQW9BZ3dpQ0NBQUtBSVFSZ1JBSUFBZ0FDZ0NBQ2dDSkJFQUFBd0JDeUFJTFFBQUM4QWdBMEVIYWlBRFFRWnFJQVlnQTBHd0FXb2dCeUFCSUFOQndBRnFJQU5CRUdvZ0EwRU1haUFEUVFocUlBTkIwQUZxRU9FQ0RRQWdBMEg4QVdvUS9nRWFEQUVMQ3lBREtBSU1JUUFDUUFKQUlBTW9Bc1FCSUFNdEFNc0JJZ0ZCL3dCeElBRkJnQUZ4UVFkMkcwVU5BQ0FETFFBSFJRMEFJQUFnQTBFUWFtdEJud0ZLRFFBZ0F5QUFRUVJxSWdFMkFnd2dBQ0FES0FJSU5nSUFEQUVMSUFBaEFRc2dCU0FHSUFNb0FyQUJJQVFRNGdJNEFnQWdBMEhBQVdvZ0EwRVFhaUFCSUFRUTBRSWdBMEg4QVdvZ0EwSDRBV29RL0FFRVFDQUVJQVFvQWdCQkFuSTJBZ0FMSUFNb0F2d0JJUUFnQWhESkFob2dBMEhBQVdvUXlRSWFJQU5CZ0FKcUpBQWdBQXVzQVFFQmZ5TUFRUkJySWdVa0FDQUZJQUUyQWd3Z0FTQUJLQUlFUVFGcU5nSUVJQVVvQWd3USt3RWlBVUdnd0JOQndNQVRJQUlnQVNnQ0FDZ0NJQkVHQUJvZ0F5QUZLQUlNRU1jQ0lnRWdBU2dDQUNnQ0RCRUFBRG9BQUNBRUlBRWdBU2dDQUNnQ0VCRUFBRG9BQUNBQUlBRWdBU2dDQUNnQ0ZCRUNBQ0FGS0FJTUlnQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBVkJFR29rQUF1K0JBQUNRQUpBSUFBZ0JVWUVRQ0FCTFFBQVJRMENRUUFoQlNBQlFRQTZBQUFnQkNBRUtBSUFJZ0JCQVdvMkFnQWdBRUV1T2dBQUlBY29BZ1FnQnkwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGh0RkRRRWdDU2dDQUNJQUlBaHJRWjhCU2cwQklBb29BZ0FoQVNBSklBQkJCR28yQWdBZ0FDQUJOZ0lBUVFBUEN3SkFJQUFnQmtjTkFDQUhLQUlFSUFjdEFBc2lCVUgvQUhFZ0JVR0FBWEZCQjNZYlJRMEFJQUV0QUFCRkRRSkJBQ0VGSUFrb0FnQWlBQ0FJYTBHZkFVb05BU0FLS0FJQUlRRWdDU0FBUVFScU5nSUFJQUFnQVRZQ0FDQUtRUUEyQWdCQkFBOExRWDhoQlNBTElBdEJJR29nQUJEU0FpQUxheUlMUVI5S0RRQWdDMEdnd0JOcUxBQUFJUVlDUUFKQUFrQUNRQ0FMUVg1eFFSWnJEZ01CQWdBQ0N5QURJQVFvQWdBaUFFY0VRQ0FBUVFGckxBQUFJZ0ZCM3dCeElBRWdBVUhoQUd0Qkdra2JJQUlzQUFBaUFVSGZBSEVnQVNBQlFlRUFhMEVhU1J0SERRUUxJQVFnQUVFQmFqWUNBQ0FBSUFZNkFBQkJBQThMSUFKQjBBQTZBQUFNQVFzZ0JrSGZBSEVnQmlBR1FlRUFhMEVhU1JzaUFDQUNMQUFBUncwQUlBSWdBRUVnY2lBQUlBQkJ3UUJyUVJwSkd6b0FBQ0FCTFFBQVJRMEFJQUZCQURvQUFDQUhLQUlFSUFjdEFBc2lBRUgvQUhFZ0FFR0FBWEZCQjNZYlJRMEFJQWtvQWdBaUFDQUlhMEdmQVVvTkFDQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUFzZ0JDQUVLQUlBSWdCQkFXbzJBZ0FnQUNBR09nQUFRUUFoQlNBTFFSVktEUUFnQ2lBS0tBSUFRUUZxTmdJQUN5QUZEd3RCZnd1MkFRSURmd0o5SXdCQkVHc2lBeVFBQWtBQ1FBSkFJQUFnQVVjRVFFR3doaFFvQWdBaEJVR3doaFJCQURZQ0FCRFRBaG9qQUVFUWF5SUVKQUFnQkNBQUlBTkJER3BCQUJDOEFpQUVLUU1BSUFRcEF3Z1FVU0VHSUFSQkVHb2tBRUd3aGhRb0FnQWlBRVVOQVNBREtBSU1JQUZIRFFJZ0JpRUhJQUJCeEFCSERRTU1BZ3NnQWtFRU5nSUFEQUlMUWJDR0ZDQUZOZ0lBSUFNb0Fnd2dBVVlOQVFzZ0FrRUVOZ0lBSUFjaEJnc2dBMEVRYWlRQUlBWUxqQVVCQTM4Z0F5Z0NIQ0VBSXdCQmdBSnJJZ01rQUNBRElBSTJBdmdCSUFNZ0FUWUMvQUVnQTBIQUFXb2dBQ0FEUWRBQmFpQURRYzhCYWlBRFFjNEJhaERnQWlBRFFiUUJhaUlDUWdBM0FnQWdBa0VBTmdJSUlBSWdBaTBBQzBHQUFYRkJCM1lFZnlBQ0tBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUW1RSWdBeUFDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSWdZMkFyQUJJQU1nQTBFUWFqWUNEQ0FEUVFBMkFnZ2dBMEVCT2dBSElBTkJ4UUE2QUFZZ0F5MEF6Z0hBSVFFZ0F5MEF6d0hBSVFjRFFBSkFJQU5CL0FGcUlBTkIrQUZxRVB3QkRRQWdBeWdDc0FFZ0JpQUNLQUlFSUFJdEFBc2lBRUgvQUhFZ0FFR0FBWEZCQjNZYklnQnFSZ1JBSUFJZ0FFRUJkQkNaQWlBQ0lBSXRBQXRCZ0FGeFFRZDJCSDhnQWlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MRUprQ0lBTWdBaWdDQUNBQ0lBSXRBQXRCZ0FGeFFRZDJHeUlHSUFCcU5nS3dBUXNDZnlBREtBTDhBU0lBS0FJTUlnZ2dBQ2dDRUVZRVFDQUFJQUFvQWdBb0FpUVJBQUFNQVFzZ0NDMEFBQXZBSUFOQkIyb2dBMEVHYWlBR0lBTkJzQUZxSUFjZ0FTQURRY0FCYWlBRFFSQnFJQU5CREdvZ0EwRUlhaUFEUWRBQmFoRGhBZzBBSUFOQi9BRnFFUDRCR2d3QkN3c2dBeWdDRENFQUFrQUNRQ0FES0FMRUFTQURMUURMQVNJQlFmOEFjU0FCUVlBQmNVRUhkaHRGRFFBZ0F5MEFCMFVOQUNBQUlBTkJFR3ByUVo4QlNnMEFJQU1nQUVFRWFpSUJOZ0lNSUFBZ0F5Z0NDRFlDQUF3QkN5QUFJUUVMSUFVZ0JpQURLQUt3QVNBRUVPUUNPUU1BSUFOQndBRnFJQU5CRUdvZ0FTQUVFTkVDSUFOQi9BRnFJQU5CK0FGcUVQd0JCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QURLQUw4QVNFQUlBSVF5UUlhSUFOQndBRnFFTWtDR2lBRFFZQUNhaVFBSUFBTHRnRUNBMzhDZkNNQVFSQnJJZ01rQUFKQUFrQUNRQ0FBSUFGSEJFQkJzSVlVS0FJQUlRVkJzSVlVUVFBMkFnQVEwd0lhSXdCQkVHc2lCQ1FBSUFRZ0FDQURRUXhxUVFFUXZBSWdCQ2tEQUNBRUtRTUlFRTBoQmlBRVFSQnFKQUJCc0lZVUtBSUFJZ0JGRFFFZ0F5Z0NEQ0FCUncwQ0lBWWhCeUFBUWNRQVJ3MEREQUlMSUFKQkJEWUNBQXdDQzBHd2hoUWdCVFlDQUNBREtBSU1JQUZHRFFFTElBSkJCRFlDQUNBSElRWUxJQU5CRUdva0FDQUdDNk1GQWdOL0FYNGdBeWdDSENFQUl3QkJrQUpySWdNa0FDQURJQUkyQW9nQ0lBTWdBVFlDakFJZ0EwSFFBV29nQUNBRFFlQUJhaUFEUWQ4QmFpQURRZDRCYWhEZ0FpQURRY1FCYWlJQ1FnQTNBZ0FnQWtFQU5nSUlJQUlnQWkwQUMwR0FBWEZCQjNZRWZ5QUNLQUlJUWYvLy8vOEhjVUVCYXdWQkNnc1FtUUlnQXlBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklnWTJBc0FCSUFNZ0EwRWdhallDSENBRFFRQTJBaGdnQTBFQk9nQVhJQU5CeFFBNkFCWWdBeTBBM2dIQUlRRWdBeTBBM3dIQUlRY0RRQUpBSUFOQmpBSnFJQU5CaUFKcUVQd0JEUUFnQXlnQ3dBRWdCaUFDS0FJRUlBSXRBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJJZ0JxUmdSQUlBSWdBRUVCZEJDWkFpQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR0lBQnFOZ0xBQVFzQ2Z5QURLQUtNQWlJQUtBSU1JZ2dnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaVFSQUFBTUFRc2dDQzBBQUF2QUlBTkJGMm9nQTBFV2FpQUdJQU5Cd0FGcUlBY2dBU0FEUWRBQmFpQURRU0JxSUFOQkhHb2dBMEVZYWlBRFFlQUJhaERoQWcwQUlBTkJqQUpxRVA0Qkdnd0JDd3NnQXlnQ0hDRUFBa0FDUUNBREtBTFVBU0FETFFEYkFTSUJRZjhBY1NBQlFZQUJjVUVIZGh0RkRRQWdBeTBBRjBVTkFDQUFJQU5CSUdwclFaOEJTZzBBSUFNZ0FFRUVhaUlCTmdJY0lBQWdBeWdDR0RZQ0FBd0JDeUFBSVFFTElBTWdCaUFES0FMQUFTQUVFT1lDSUFNcEF3QWhDU0FGSUFNcEF3ZzNBd2dnQlNBSk53TUFJQU5CMEFGcUlBTkJJR29nQVNBRUVORUNJQU5CakFKcUlBTkJpQUpxRVB3QkJFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBREtBS01BaUVBSUFJUXlRSWFJQU5CMEFGcUVNa0NHaUFEUVpBQ2FpUUFJQUFMc2dJQ0JINEZmeU1BUVNCcklnZ2tBQUpBQWtBQ1FDQUJJQUpIQkVCQnNJWVVLQUlBSVF4QnNJWVVRUUEyQWdBakFFRVFheUlKSkFBUTB3SWFJd0JCRUdzaUNpUUFJd0JCRUdzaUN5UUFJQXNnQVNBSVFSeHFRUUlRdkFJZ0N5a0RBQ0VFSUFvZ0N5a0RDRGNEQ0NBS0lBUTNBd0FnQzBFUWFpUUFJQW9wQXdBaEJDQUpJQW9wQXdnM0F3Z2dDU0FFTndNQUlBcEJFR29rQUNBSktRTUFJUVFnQ0NBSktRTUlOd01RSUFnZ0JEY0RDQ0FKUVJCcUpBQWdDQ2tERUNFRUlBZ3BBd2doQlVHd2hoUW9BZ0FpQVVVTkFTQUlLQUljSUFKSERRSWdCU0VHSUFRaEJ5QUJRY1FBUncwRERBSUxJQU5CQkRZQ0FBd0NDMEd3aGhRZ0REWUNBQ0FJS0FJY0lBSkdEUUVMSUFOQkJEWUNBQ0FHSVFVZ0J5RUVDeUFBSUFVM0F3QWdBQ0FFTndNSUlBaEJJR29rQUF1TUJRRUNmeU1BUVlBQ2F5SUFKQUFnQUNBQ05nTDRBU0FBSUFFMkF2d0JJQUJCeEFGcUlnZENBRGNDQUNBSFFRQTJBZ2dnQUVFUWFpSUdJQU1vQWh3aUFUWUNBQ0FCSUFFb0FnUkJBV28yQWdRZ0FDZ0NFQkQ3QVNJQlFhREFFMEc2d0JNZ0FFSFFBV29nQVNnQ0FDZ0NJQkVHQUJvZ0FDZ0NFQ0lCSUFFb0FnUkJBV3NpQWpZQ0JDQUNRWDlHQkVBZ0FTQUJLQUlBS0FJSUVRRUFDeUFBUWJnQmFpSUNRZ0EzQWdBZ0FrRUFOZ0lJSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRbVFJZ0FDQUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ00yQXJRQklBQWdCallDRENBQVFRQTJBZ2dnQXlFQkEwQUNRQ0FDSUFCQi9BRnFJQUJCK0FGcUVQd0JCSDhnQXdVZ0F5QUJJQUlvQWdRZ0FpMEFDeUlHUWY4QWNTQUdRWUFCY1VFSGRoc2lCbXBHQkVBZ0FpQUdRUUYwRUprQ0lBSWdBaTBBQzBHQUFYRkJCM1lFZnlBQ0tBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUW1RSWdBQ0FDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSWdFZ0JtbzJBclFCQ3dKL0lBQW9BdndCSWdNb0Fnd2lCaUFES0FJUVJnUkFJQU1nQXlnQ0FDZ0NKQkVBQUF3QkN5QUdMUUFBQzhCQkVDQUJJQUJCdEFGcUlBQkJDR3BCQUNBSEtBSUVJQWN0QUFzZ0FFRVFhaUFBUVF4cUlBQkIwQUZxRU04Q1JRMEJJQUFvQXJRQkN5QUJheENaQWlBQ0tBSUFJQUlnQWkwQUMwR0FBWEZCQjNZYklRRVEwd0loQXlBQUlBVTJBZ0FnQVNBRElBQVE2QUpCQVVjRVFDQUVRUVEyQWdBTElBQkIvQUZxSUFCQitBRnFFUHdCQkVBZ0JDQUVLQUlBUVFKeU5nSUFDeUFBS0FMOEFTRUJJQUlReVFJYUlBY1F5UUlhSUFCQmdBSnFKQUFnQVE4TElBQkIvQUZxRVA0QkdpQUFLQUswQVNFRERBQUxBQXRpQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDRENBRFFRaHFJQUVRNlFJaEFTQUFRY285SUFNb0Fnd1F2UUVoQWlBQktBSUFJZ0FFUUVHTW9CUW9BZ0FhSUFBRVFFR01vQlJCbktrVUlBQWdBRUYvUmhzMkFnQUxDeUFEUVJCcUpBQWdBZ3M0QVFGL1FZeWdGQ2dDQUNFQ0lBRUVRRUdNb0JSQm5La1VJQUVnQVVGL1JoczJBZ0FMSUFCQmZ5QUNJQUpCbktrVVJoczJBZ0FnQUF2MEFnRUNmeU1BUVNCcklnWWtBQ0FHSUFFMkFod0NRQ0FETFFBRVFRRnhSUVJBSUFaQmZ6WUNBQ0FBSUFFZ0FpQURJQVFnQmlBQUtBSUFLQUlRRVFVQUlRRUNRQUpBQWtBZ0JpZ0NBQTRDQUFFQ0N5QUZRUUE2QUFBTUF3c2dCVUVCT2dBQURBSUxJQVZCQVRvQUFDQUVRUVEyQWdBTUFRc2dCaUFES0FJY0lnQTJBZ0FnQUNBQUtBSUVRUUZxTmdJRUlBWW9BZ0FRa0FJaEJ5QUdLQUlBSWdBZ0FDZ0NCRUVCYXlJQk5nSUVJQUZCZjBZRVFDQUFJQUFvQWdBb0FnZ1JBUUFMSUFZZ0F5Z0NIQ0lBTmdJQUlBQWdBQ2dDQkVFQmFqWUNCQ0FHS0FJQUVPc0NJUUFnQmlnQ0FDSUJJQUVvQWdSQkFXc2lBellDQkNBRFFYOUdCRUFnQVNBQktBSUFLQUlJRVFFQUN5QUdJQUFnQUNnQ0FDZ0NHQkVDQUNBR1FReHlJQUFnQUNnQ0FDZ0NIQkVDQUNBRklBWkJIR29nQWlBR0lBWkJHR29pQXlBSElBUkJBUkRzQWlBR1Jqb0FBQ0FHS0FJY0lRRURRQ0FEUVF4ckVPMENJZ01nQmtjTkFBc0xJQVpCSUdva0FDQUJDd29BSUFCQnhLc1VFSElMOFFVQkMzOGpBRUdBQVdzaUNpUUFJQW9nQVRZQ2ZDQUtRZFFBTmdJUUlBcEJDR29pQVVFQU5nSUFJQUVnQ2tFUWFpSUpLQUlBTmdJRUlBRWhEUUpBQWtBZ0F5QUNhMEVNYlNJTFFlVUFUd1JBSUFzUU15SUpSUTBCSUEwb0FnQWhBU0FOSUFrMkFnQWdBUVJBSUFFZ0RTZ0NCQkVCQUFzTElBa2hCeUFDSVFFRFFDQUJJQU5HQkVBRFFDQUFJQXBCL0FCcUVKRUNRUUVnQ3hzRVFDQUFJQXBCL0FCcUVKRUNCRUFnQlNBRktBSUFRUUp5TmdJQUN3d0ZDd0ovSUFBb0FnQWlCeWdDRENJQklBY29BaEJHQkVBZ0J5QUhLQUlBS0FJa0VRQUFEQUVMSUFFb0FnQUxJUTRnQmtVRVFDQUVJQTRnQkNnQ0FDZ0NIQkVEQUNFT0N5QVFRUUZxSVFoQkFDRVJJQWtoQnlBQ0lRRURRQ0FCSUFOR0JFQWdDQ0VRSUJGRkRRSWdBQkNUQWhvZ0NTRUhJQUloQVNBTElBeHFRUUpKRFFJRFFDQUJJQU5HQkVBTUJBVUNRQ0FITFFBQVFRSkhEUUFnRUNBQktBSUVJQUV0QUFzaUNFSC9BSEVnQ0VHQUFYRkJCM1liUmcwQUlBZEJBRG9BQUNBTVFRRnJJUXdMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBRkFrQWdCeTBBQUVFQlJ3MEFJQkJCQW5RZ0FTZ0NBQ0FCSUFFdEFBdEJnQUZ4UVFkMkcyb29BZ0FoRHdKQUlBWUVmeUFQQlNBRUlBOGdCQ2dDQUNnQ0hCRURBQXNnRGtZRVFFRUJJUkVnQ0NBQktBSUVJQUV0QUFzaUQwSC9BSEVnRDBHQUFYRkJCM1liUncwQ0lBZEJBam9BQUNBTVFRRnFJUXdNQVFzZ0IwRUFPZ0FBQ3lBTFFRRnJJUXNMSUFkQkFXb2hCeUFCUVF4cUlRRU1BUXNBQ3dBTEFBVWdCMEVDUVFFZ0FTZ0NCQ0FCTFFBTElnaEIvd0J4SUFoQmdBRnhRUWQyRzBVaUNCczZBQUFnQ0NBTWFpRU1JQXNnQ0dzaEN5QUhRUUZxSVFjZ0FVRU1haUVCREFFTEFBc0FDeERlQVFBTEFrQUNRQU5BSUFJZ0EwWU5BU0FKTFFBQVFRSkhCRUFnQ1VFQmFpRUpJQUpCREdvaEFnd0JDd3NnQWlFRERBRUxJQVVnQlNnQ0FFRUVjallDQUFzZ0RTSUFLQUlBSVFFZ0FFRUFOZ0lBSUFFRVFDQUJJQUFvQWdRUkFRQUxJQXBCZ0FGcUpBQWdBd3NnQUNBQUxRQUxRWUFCY1VFSGRnUkFJQUFvQWdnYUlBQW9BZ0FRTkFzZ0FBdnFCQUVEZnlNQVFkQUNheUlHSkFBZ0JpQUNOZ0xJQWlBR0lBRTJBc3dDSUFNb0FnUVF6UUloQnlBREtBSWNJQVpCMEFGcUVPOENJUUlnQmtIRUFXb2dBeWdDSENBR1FjUUNhaER3QWlBR1FiZ0JhaUlBUWdBM0FnQWdBRUVBTmdJSUlBQWdBQzBBQzBHQUFYRkJCM1lFZnlBQUtBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUW1RSWdCaUFBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSWdNMkFyUUJJQVlnQmtFUWFqWUNEQ0FHUVFBMkFnZ0RRQUpBSUFaQnpBSnFJQVpCeUFKcUVKRUNEUUFnQmlnQ3RBRWdBeUFBS0FJRUlBQXRBQXNpQVVIL0FIRWdBVUdBQVhGQkIzWWJJZ0ZxUmdSQUlBQWdBVUVCZEJDWkFpQUFJQUF0QUF0QmdBRnhRUWQyQkg4Z0FDZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQVlnQUNnQ0FDQUFJQUF0QUF0QmdBRnhRUWQyR3lJRElBRnFOZ0swQVFzQ2Z5QUdLQUxNQWlJQktBSU1JZ2dnQVNnQ0VFWUVRQ0FCSUFFb0FnQW9BaVFSQUFBTUFRc2dDQ2dDQUFzZ0J5QURJQVpCdEFGcUlBWkJDR29nQmlnQ3hBSWdCaWdDeUFFZ0JpMEF6d0VnQmtFUWFpQUdRUXhxSUFJUThRSU5BQ0FHUWN3Q2FoQ1RBaG9NQVFzTElBWW9BZ3doQWdKQUFrQWdCaWdDeUFFZ0JpMEF6d0VpQVVIL0FIRWdBVUdBQVhGQkIzWWJSUTBBSUFJZ0JrRVFhbXRCbndGS0RRQWdCaUFDUVFScUlnRTJBZ3dnQWlBR0tBSUlOZ0lBREFFTElBSWhBUXNnQlNBRElBWW9BclFCSUFRZ0J4RFFBallDQUNBR1FjUUJhaUFHUVJCcUlBRWdCQkRSQWlBR1Fjd0NhaUFHUWNnQ2FoQ1JBZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dCaWdDekFJaEFTQUFFTWtDR2lBR1FjUUJhaERKQWhvZ0JrSFFBbW9rQUNBQkMzTUJBbjhqQUVFUWF5SUNKQUFnQWlBQU5nSU1JQUFnQUNnQ0JFRUJhallDQkNBQ0tBSU1FSkFDSWdCQm9NQVRRYnJBRXlBQklBQW9BZ0FvQWpBUkJnQWFJQUlvQWd3aUFDQUFLQUlFUVFGcklnTTJBZ1FnQTBGL1JnUkFJQUFnQUNnQ0FDZ0NDQkVCQUFzZ0FrRVFhaVFBSUFFTGVnRUJmeU1BUVJCcklnTWtBQ0FESUFFMkFnd2dBU0FCS0FJRVFRRnFOZ0lFSUFJZ0F5Z0NEQkRyQWlJQklBRW9BZ0FvQWhBUkFBQTJBZ0FnQUNBQklBRW9BZ0FvQWhRUkFnQWdBeWdDRENJQUlBQW9BZ1JCQVdzaUFUWUNCQ0FCUVg5R0JFQWdBQ0FBS0FJQUtBSUlFUUVBQ3lBRFFSQnFKQUFMM0FJQkFuOENRQUpBSUFNb0FnQWlDeUFDUncwQVFTc2hEQ0FBSUFvb0FtQkhCRUJCTFNFTUlBb29BbVFnQUVjTkFRc2dBeUFDUVFGcU5nSUFJQUlnRERvQUFBd0JDd0pBQWtBZ0JpQUhRZjhBY1NBSFFZQUJjVUVIZGh0RkRRQWdBQ0FGUncwQVFRQWhCeUFKS0FJQUlnQWdDR3RCbndGS0RRRWdCQ2dDQUNFQklBa2dBRUVFYWpZQ0FDQUFJQUUyQWdBTUFndEJmeUVISUFvZ0NrSG9BR29nQUJEeUFpQUtheUlGUWR3QVNnMEFJQVZCQW5VaEFBSkFBa0FDUUNBQlFRaHJEZ01BQWdBQkN5QUFJQUZJRFFFTUFnc2dBVUVRUncwQUlBVkIyQUJJRFFBZ0FpQUxSZzBCSUFzZ0FtdEJBa29OQVNBTFFRRnJMUUFBUVRCSERRRWdCRUVBTmdJQUlBTWdDMEVCYWpZQ0FDQUxJQUJCb01BVGFpMEFBRG9BQUVFQUR3c2dBeUFMUVFGcU5nSUFJQXNnQUVHZ3dCTnFMUUFBT2dBQUlBUWdCQ2dDQUVFQmFqWUNBRUVBSVFjTElBY1BDeUFFUVFBMkFnQkJBQXNxQUFOQUFrQWdBQ0FCUndSL0lBQW9BZ0FnQWtjTkFTQUFCU0FCQ3c4TElBQkJCR29oQUF3QUN3QUw2Z1FCQTM4akFFSFFBbXNpQmlRQUlBWWdBallDeUFJZ0JpQUJOZ0xNQWlBREtBSUVFTTBDSVFjZ0F5Z0NIQ0FHUWRBQmFoRHZBaUVDSUFaQnhBRnFJQU1vQWh3Z0JrSEVBbW9ROEFJZ0JrRzRBV29pQUVJQU53SUFJQUJCQURZQ0NDQUFJQUF0QUF0QmdBRnhRUWQyQkg4Z0FDZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQVlnQUNnQ0FDQUFJQUF0QUF0QmdBRnhRUWQyR3lJRE5nSzBBU0FHSUFaQkVHbzJBZ3dnQmtFQU5nSUlBMEFDUUNBR1Fjd0NhaUFHUWNnQ2FoQ1JBZzBBSUFZb0FyUUJJQU1nQUNnQ0JDQUFMUUFMSWdGQi93QnhJQUZCZ0FGeFFRZDJHeUlCYWtZRVFDQUFJQUZCQVhRUW1RSWdBQ0FBTFFBTFFZQUJjVUVIZGdSL0lBQW9BZ2hCLy8vLy93ZHhRUUZyQlVFS0N4Q1pBaUFHSUFBb0FnQWdBQ0FBTFFBTFFZQUJjVUVIZGhzaUF5QUJhallDdEFFTEFuOGdCaWdDekFJaUFTZ0NEQ0lJSUFFb0FoQkdCRUFnQVNBQktBSUFLQUlrRVFBQURBRUxJQWdvQWdBTElBY2dBeUFHUWJRQmFpQUdRUWhxSUFZb0FzUUNJQVlvQXNnQklBWXRBTThCSUFaQkVHb2dCa0VNYWlBQ0VQRUNEUUFnQmtITUFtb1Frd0lhREFFTEN5QUdLQUlNSVFJQ1FBSkFJQVlvQXNnQklBWXRBTThCSWdGQi93QnhJQUZCZ0FGeFFRZDJHMFVOQUNBQ0lBWkJFR3ByUVo4QlNnMEFJQVlnQWtFRWFpSUJOZ0lNSUFJZ0JpZ0NDRFlDQUF3QkN5QUNJUUVMSUFVZ0F5QUdLQUswQVNBRUlBY1Exd0kzQXdBZ0JrSEVBV29nQmtFUWFpQUJJQVFRMFFJZ0JrSE1BbW9nQmtISUFtb1FrUUlFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQVlvQXN3Q0lRRWdBQkRKQWhvZ0JrSEVBV29ReVFJYUlBWkIwQUpxSkFBZ0FRdnFCQUVEZnlNQVFkQUNheUlHSkFBZ0JpQUNOZ0xJQWlBR0lBRTJBc3dDSUFNb0FnUVF6UUloQnlBREtBSWNJQVpCMEFGcUVPOENJUUlnQmtIRUFXb2dBeWdDSENBR1FjUUNhaER3QWlBR1FiZ0JhaUlBUWdBM0FnQWdBRUVBTmdJSUlBQWdBQzBBQzBHQUFYRkJCM1lFZnlBQUtBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUW1RSWdCaUFBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSWdNMkFyUUJJQVlnQmtFUWFqWUNEQ0FHUVFBMkFnZ0RRQUpBSUFaQnpBSnFJQVpCeUFKcUVKRUNEUUFnQmlnQ3RBRWdBeUFBS0FJRUlBQXRBQXNpQVVIL0FIRWdBVUdBQVhGQkIzWWJJZ0ZxUmdSQUlBQWdBVUVCZEJDWkFpQUFJQUF0QUF0QmdBRnhRUWQyQkg4Z0FDZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQVlnQUNnQ0FDQUFJQUF0QUF0QmdBRnhRUWQyR3lJRElBRnFOZ0swQVFzQ2Z5QUdLQUxNQWlJQktBSU1JZ2dnQVNnQ0VFWUVRQ0FCSUFFb0FnQW9BaVFSQUFBTUFRc2dDQ2dDQUFzZ0J5QURJQVpCdEFGcUlBWkJDR29nQmlnQ3hBSWdCaWdDeUFFZ0JpMEF6d0VnQmtFUWFpQUdRUXhxSUFJUThRSU5BQ0FHUWN3Q2FoQ1RBaG9NQVFzTElBWW9BZ3doQWdKQUFrQWdCaWdDeUFFZ0JpMEF6d0VpQVVIL0FIRWdBVUdBQVhGQkIzWWJSUTBBSUFJZ0JrRVFhbXRCbndGS0RRQWdCaUFDUVFScUlnRTJBZ3dnQWlBR0tBSUlOZ0lBREFFTElBSWhBUXNnQlNBRElBWW9BclFCSUFRZ0J4RFpBanNCQUNBR1FjUUJhaUFHUVJCcUlBRWdCQkRSQWlBR1Fjd0NhaUFHUWNnQ2FoQ1JBZ1JBSUFRZ0JDZ0NBRUVDY2pZQ0FBc2dCaWdDekFJaEFTQUFFTWtDR2lBR1FjUUJhaERKQWhvZ0JrSFFBbW9rQUNBQkMrb0VBUU4vSXdCQjBBSnJJZ1lrQUNBR0lBSTJBc2dDSUFZZ0FUWUN6QUlnQXlnQ0JCRE5BaUVISUFNb0Fod2dCa0hRQVdvUTd3SWhBaUFHUWNRQmFpQURLQUljSUFaQnhBSnFFUEFDSUFaQnVBRnFJZ0JDQURjQ0FDQUFRUUEyQWdnZ0FDQUFMUUFMUVlBQmNVRUhkZ1IvSUFBb0FnaEIvLy8vL3dkeFFRRnJCVUVLQ3hDWkFpQUdJQUFvQWdBZ0FDQUFMUUFMUVlBQmNVRUhkaHNpQXpZQ3RBRWdCaUFHUVJCcU5nSU1JQVpCQURZQ0NBTkFBa0FnQmtITUFtb2dCa0hJQW1vUWtRSU5BQ0FHS0FLMEFTQURJQUFvQWdRZ0FDMEFDeUlCUWY4QWNTQUJRWUFCY1VFSGRoc2lBV3BHQkVBZ0FDQUJRUUYwRUprQ0lBQWdBQzBBQzBHQUFYRkJCM1lFZnlBQUtBSUlRZi8vLy84SGNVRUJhd1ZCQ2dzUW1RSWdCaUFBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSWdNZ0FXbzJBclFCQ3dKL0lBWW9Bc3dDSWdFb0Fnd2lDQ0FCS0FJUVJnUkFJQUVnQVNnQ0FDZ0NKQkVBQUF3QkN5QUlLQUlBQ3lBSElBTWdCa0cwQVdvZ0JrRUlhaUFHS0FMRUFpQUdLQUxJQVNBR0xRRFBBU0FHUVJCcUlBWkJER29nQWhEeEFnMEFJQVpCekFKcUVKTUNHZ3dCQ3dzZ0JpZ0NEQ0VDQWtBQ1FDQUdLQUxJQVNBR0xRRFBBU0lCUWY4QWNTQUJRWUFCY1VFSGRodEZEUUFnQWlBR1FSQnFhMEdmQVVvTkFDQUdJQUpCQkdvaUFUWUNEQ0FDSUFZb0FnZzJBZ0FNQVFzZ0FpRUJDeUFGSUFNZ0JpZ0N0QUVnQkNBSEVOd0NOZ0lBSUFaQnhBRnFJQVpCRUdvZ0FTQUVFTkVDSUFaQnpBSnFJQVpCeUFKcUVKRUNCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUdLQUxNQWlFQklBQVF5UUlhSUFaQnhBRnFFTWtDR2lBR1FkQUNhaVFBSUFFTDZnUUJBMzhqQUVIUUFtc2lCaVFBSUFZZ0FqWUN5QUlnQmlBQk5nTE1BaUFES0FJRUVNMENJUWNnQXlnQ0hDQUdRZEFCYWhEdkFpRUNJQVpCeEFGcUlBTW9BaHdnQmtIRUFtb1E4QUlnQmtHNEFXb2lBRUlBTndJQUlBQkJBRFlDQ0NBQUlBQXRBQXRCZ0FGeFFRZDJCSDhnQUNnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MRUprQ0lBWWdBQ2dDQUNBQUlBQXRBQXRCZ0FGeFFRZDJHeUlETmdLMEFTQUdJQVpCRUdvMkFnd2dCa0VBTmdJSUEwQUNRQ0FHUWN3Q2FpQUdRY2dDYWhDUkFnMEFJQVlvQXJRQklBTWdBQ2dDQkNBQUxRQUxJZ0ZCL3dCeElBRkJnQUZ4UVFkMkd5SUJha1lFUUNBQUlBRkJBWFFRbVFJZ0FDQUFMUUFMUVlBQmNVRUhkZ1IvSUFBb0FnaEIvLy8vL3dkeFFRRnJCVUVLQ3hDWkFpQUdJQUFvQWdBZ0FDQUFMUUFMUVlBQmNVRUhkaHNpQXlBQmFqWUN0QUVMQW44Z0JpZ0N6QUlpQVNnQ0RDSUlJQUVvQWhCR0JFQWdBU0FCS0FJQUtBSWtFUUFBREFFTElBZ29BZ0FMSUFjZ0F5QUdRYlFCYWlBR1FRaHFJQVlvQXNRQ0lBWW9Bc2dCSUFZdEFNOEJJQVpCRUdvZ0JrRU1haUFDRVBFQ0RRQWdCa0hNQW1vUWt3SWFEQUVMQ3lBR0tBSU1JUUlDUUFKQUlBWW9Bc2dCSUFZdEFNOEJJZ0ZCL3dCeElBRkJnQUZ4UVFkMkcwVU5BQ0FDSUFaQkVHcHJRWjhCU2cwQUlBWWdBa0VFYWlJQk5nSU1JQUlnQmlnQ0NEWUNBQXdCQ3lBQ0lRRUxJQVVnQXlBR0tBSzBBU0FFSUFjUTNnSTNBd0FnQmtIRUFXb2dCa0VRYWlBQklBUVEwUUlnQmtITUFtb2dCa0hJQW1vUWtRSUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBWW9Bc3dDSVFFZ0FCREpBaG9nQmtIRUFXb1F5UUlhSUFaQjBBSnFKQUFnQVF1SkJRRURmeUFES0FJY0lRQWpBRUh3QW1zaUF5UUFJQU1nQWpZQzZBSWdBeUFCTmdMc0FpQURRY3dCYWlBQUlBTkI0QUZxSUFOQjNBRnFJQU5CMkFGcUVQZ0NJQU5Cd0FGcUlnSkNBRGNDQUNBQ1FRQTJBZ2dnQWlBQ0xRQUxRWUFCY1VFSGRnUi9JQUlvQWdoQi8vLy8vd2R4UVFGckJVRUtDeENaQWlBRElBSW9BZ0FnQWlBQ0xRQUxRWUFCY1VFSGRoc2lCallDdkFFZ0F5QURRUkJxTmdJTUlBTkJBRFlDQ0NBRFFRRTZBQWNnQTBIRkFEb0FCaUFES0FMWUFTRUJJQU1vQXR3QklRY0RRQUpBSUFOQjdBSnFJQU5CNkFKcUVKRUNEUUFnQXlnQ3ZBRWdCaUFDS0FJRUlBSXRBQXNpQUVIL0FIRWdBRUdBQVhGQkIzWWJJZ0JxUmdSQUlBSWdBRUVCZEJDWkFpQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR0lBQnFOZ0s4QVFzQ2Z5QURLQUxzQWlJQUtBSU1JZ2dnQUNnQ0VFWUVRQ0FBSUFBb0FnQW9BaVFSQUFBTUFRc2dDQ2dDQUFzZ0EwRUhhaUFEUVFacUlBWWdBMEc4QVdvZ0J5QUJJQU5CekFGcUlBTkJFR29nQTBFTWFpQURRUWhxSUFOQjRBRnFFUGtDRFFBZ0EwSHNBbW9Ra3dJYURBRUxDeUFES0FJTUlRQUNRQUpBSUFNb0F0QUJJQU10QU5jQklnRkIvd0J4SUFGQmdBRnhRUWQyRzBVTkFDQURMUUFIUlEwQUlBQWdBMEVRYW10Qm53RktEUUFnQXlBQVFRUnFJZ0UyQWd3Z0FDQURLQUlJTmdJQURBRUxJQUFoQVFzZ0JTQUdJQU1vQXJ3QklBUVE0Z0k0QWdBZ0EwSE1BV29nQTBFUWFpQUJJQVFRMFFJZ0EwSHNBbW9nQTBIb0Ftb1FrUUlFUUNBRUlBUW9BZ0JCQW5JMkFnQUxJQU1vQXV3Q0lRQWdBaERKQWhvZ0EwSE1BV29ReVFJYUlBTkI4QUpxSkFBZ0FBdXNBUUVCZnlNQVFSQnJJZ1VrQUNBRklBRTJBZ3dnQVNBQktBSUVRUUZxTmdJRUlBVW9BZ3dRa0FJaUFVR2d3Qk5Cd01BVElBSWdBU2dDQUNnQ01CRUdBQm9nQXlBRktBSU1FT3NDSWdFZ0FTZ0NBQ2dDREJFQUFEWUNBQ0FFSUFFZ0FTZ0NBQ2dDRUJFQUFEWUNBQ0FBSUFFZ0FTZ0NBQ2dDRkJFQ0FDQUZLQUlNSWdBZ0FDZ0NCRUVCYXlJQk5nSUVJQUZCZjBZRVFDQUFJQUFvQWdBb0FnZ1JBUUFMSUFWQkVHb2tBQXZHQkFBQ1FBSkFJQUFnQlVZRVFDQUJMUUFBUlEwQ1FRQWhCU0FCUVFBNkFBQWdCQ0FFS0FJQUlnQkJBV28yQWdBZ0FFRXVPZ0FBSUFjb0FnUWdCeTBBQ3lJQVFmOEFjU0FBUVlBQmNVRUhkaHRGRFFFZ0NTZ0NBQ0lBSUFoclFaOEJTZzBCSUFvb0FnQWhBU0FKSUFCQkJHbzJBZ0FnQUNBQk5nSUFRUUFQQ3dKQUlBQWdCa2NOQUNBSEtBSUVJQWN0QUFzaUJVSC9BSEVnQlVHQUFYRkJCM1liUlEwQUlBRXRBQUJGRFFKQkFDRUZJQWtvQWdBaUFDQUlhMEdmQVVvTkFTQUtLQUlBSVFFZ0NTQUFRUVJxTmdJQUlBQWdBVFlDQUNBS1FRQTJBZ0JCQUE4TFFYOGhCU0FMSUF0QmdBRnFJQUFROGdJZ0Myc2lDMEg4QUVvTkFDQUxRUUoxUWFEQUUyb3NBQUFoQmdKQUFrQWdDMEY3Y1NJQVFkZ0FSd1JBSUFCQjRBQkhEUUVnQXlBRUtBSUFJZ0JIQkVBZ0FFRUJheXdBQUNJQlFkOEFjU0FCSUFGQjRRQnJRUnBKR3lBQ0xBQUFJZ0ZCM3dCeElBRWdBVUhoQUd0Qkdra2JSdzBFQ3lBRUlBQkJBV28yQWdBZ0FDQUdPZ0FBUVFBUEN5QUNRZEFBT2dBQURBRUxJQVpCM3dCeElBWWdCa0hoQUd0Qkdra2JJZ0FnQWl3QUFFY05BQ0FDSUFCQklISWdBQ0FBUWNFQWEwRWFTUnM2QUFBZ0FTMEFBRVVOQUNBQlFRQTZBQUFnQnlnQ0JDQUhMUUFMSWdCQi93QnhJQUJCZ0FGeFFRZDJHMFVOQUNBSktBSUFJZ0FnQ0d0Qm53RktEUUFnQ2lnQ0FDRUJJQWtnQUVFRWFqWUNBQ0FBSUFFMkFnQUxJQVFnQkNnQ0FDSUFRUUZxTmdJQUlBQWdCam9BQUVFQUlRVWdDMEhVQUVvTkFDQUtJQW9vQWdCQkFXbzJBZ0FMSUFVUEMwRi9DNGtGQVFOL0lBTW9BaHdoQUNNQVFmQUNheUlESkFBZ0F5QUNOZ0xvQWlBRElBRTJBdXdDSUFOQnpBRnFJQUFnQTBIZ0FXb2dBMEhjQVdvZ0EwSFlBV29RK0FJZ0EwSEFBV29pQWtJQU53SUFJQUpCQURZQ0NDQUNJQUl0QUF0QmdBRnhRUWQyQkg4Z0FpZ0NDRUgvLy8vL0IzRkJBV3NGUVFvTEVKa0NJQU1nQWlnQ0FDQUNJQUl0QUF0QmdBRnhRUWQyR3lJR05nSzhBU0FESUFOQkVHbzJBZ3dnQTBFQU5nSUlJQU5CQVRvQUJ5QURRY1VBT2dBR0lBTW9BdGdCSVFFZ0F5Z0MzQUVoQndOQUFrQWdBMEhzQW1vZ0EwSG9BbW9Ra1FJTkFDQURLQUs4QVNBR0lBSW9BZ1FnQWkwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGhzaUFHcEdCRUFnQWlBQVFRRjBFSmtDSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRbVFJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1lnQUdvMkFyd0JDd0ovSUFNb0F1d0NJZ0FvQWd3aUNDQUFLQUlRUmdSQUlBQWdBQ2dDQUNnQ0pCRUFBQXdCQ3lBSUtBSUFDeUFEUVFkcUlBTkJCbW9nQmlBRFFid0JhaUFISUFFZ0EwSE1BV29nQTBFUWFpQURRUXhxSUFOQkNHb2dBMEhnQVdvUStRSU5BQ0FEUWV3Q2FoQ1RBaG9NQVFzTElBTW9BZ3doQUFKQUFrQWdBeWdDMEFFZ0F5MEExd0VpQVVIL0FIRWdBVUdBQVhGQkIzWWJSUTBBSUFNdEFBZEZEUUFnQUNBRFFSQnFhMEdmQVVvTkFDQURJQUJCQkdvaUFUWUNEQ0FBSUFNb0FnZzJBZ0FNQVFzZ0FDRUJDeUFGSUFZZ0F5Z0N2QUVnQkJEa0Fqa0RBQ0FEUWN3QmFpQURRUkJxSUFFZ0JCRFJBaUFEUWV3Q2FpQURRZWdDYWhDUkFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0F5Z0M3QUloQUNBQ0VNa0NHaUFEUWN3QmFoREpBaG9nQTBId0Ftb2tBQ0FBQzZBRkFnTi9BWDRnQXlnQ0hDRUFJd0JCZ0FOcklnTWtBQ0FESUFJMkF2Z0NJQU1nQVRZQy9BSWdBMEhjQVdvZ0FDQURRZkFCYWlBRFFld0JhaUFEUWVnQmFoRDRBaUFEUWRBQmFpSUNRZ0EzQWdBZ0FrRUFOZ0lJSUFJZ0FpMEFDMEdBQVhGQkIzWUVmeUFDS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NRbVFJZ0F5QUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJZ1kyQXN3QklBTWdBMEVnYWpZQ0hDQURRUUEyQWhnZ0EwRUJPZ0FYSUFOQnhRQTZBQllnQXlnQzZBRWhBU0FES0FMc0FTRUhBMEFDUUNBRFFmd0NhaUFEUWZnQ2FoQ1JBZzBBSUFNb0Fzd0JJQVlnQWlnQ0JDQUNMUUFMSWdCQi93QnhJQUJCZ0FGeFFRZDJHeUlBYWtZRVFDQUNJQUJCQVhRUW1RSWdBaUFDTFFBTFFZQUJjVUVIZGdSL0lBSW9BZ2hCLy8vLy93ZHhRUUZyQlVFS0N4Q1pBaUFESUFJb0FnQWdBaUFDTFFBTFFZQUJjVUVIZGhzaUJpQUFhallDekFFTEFuOGdBeWdDL0FJaUFDZ0NEQ0lJSUFBb0FoQkdCRUFnQUNBQUtBSUFLQUlrRVFBQURBRUxJQWdvQWdBTElBTkJGMm9nQTBFV2FpQUdJQU5CekFGcUlBY2dBU0FEUWR3QmFpQURRU0JxSUFOQkhHb2dBMEVZYWlBRFFmQUJhaEQ1QWcwQUlBTkIvQUpxRUpNQ0dnd0JDd3NnQXlnQ0hDRUFBa0FDUUNBREtBTGdBU0FETFFEbkFTSUJRZjhBY1NBQlFZQUJjVUVIZGh0RkRRQWdBeTBBRjBVTkFDQUFJQU5CSUdwclFaOEJTZzBBSUFNZ0FFRUVhaUlCTmdJY0lBQWdBeWdDR0RZQ0FBd0JDeUFBSVFFTElBTWdCaUFES0FMTUFTQUVFT1lDSUFNcEF3QWhDU0FGSUFNcEF3ZzNBd2dnQlNBSk53TUFJQU5CM0FGcUlBTkJJR29nQVNBRUVORUNJQU5CL0FKcUlBTkIrQUpxRUpFQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBREtBTDhBaUVBSUFJUXlRSWFJQU5CM0FGcUVNa0NHaUFEUVlBRGFpUUFJQUFMaXdVQkFuOGpBRUhBQW1zaUFDUUFJQUFnQWpZQ3VBSWdBQ0FCTmdLOEFpQUFRY1FCYWlJSFFnQTNBZ0FnQjBFQU5nSUlJQUJCRUdvaUJpQURLQUljSWdFMkFnQWdBU0FCS0FJRVFRRnFOZ0lFSUFBb0FoQVFrQUlpQVVHZ3dCTkJ1c0FUSUFCQjBBRnFJQUVvQWdBb0FqQVJCZ0FhSUFBb0FoQWlBU0FCS0FJRVFRRnJJZ0kyQWdRZ0FrRi9SZ1JBSUFFZ0FTZ0NBQ2dDQ0JFQkFBc2dBRUc0QVdvaUFrSUFOd0lBSUFKQkFEWUNDQ0FDSUFJdEFBdEJnQUZ4UVFkMkJIOGdBaWdDQ0VILy8vLy9CM0ZCQVdzRlFRb0xFSmtDSUFBZ0FpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5SUROZ0swQVNBQUlBWTJBZ3dnQUVFQU5nSUlJQU1oQVFOQUFrQWdBaUFBUWJ3Q2FpQUFRYmdDYWhDUkFnUi9JQU1GSUFNZ0FTQUNLQUlFSUFJdEFBc2lCa0gvQUhFZ0JrR0FBWEZCQjNZYklnWnFSZ1JBSUFJZ0JrRUJkQkNaQWlBQ0lBSXRBQXRCZ0FGeFFRZDJCSDhnQWlnQ0NFSC8vLy8vQjNGQkFXc0ZRUW9MRUprQ0lBQWdBaWdDQUNBQ0lBSXRBQXRCZ0FGeFFRZDJHeUlCSUFacU5nSzBBUXNDZnlBQUtBSzhBaUlES0FJTUlnWWdBeWdDRUVZRVFDQURJQU1vQWdBb0FpUVJBQUFNQVFzZ0JpZ0NBQXRCRUNBQklBQkJ0QUZxSUFCQkNHcEJBQ0FIS0FJRUlBY3RBQXNnQUVFUWFpQUFRUXhxSUFCQjBBRnFFUEVDUlEwQklBQW9BclFCQ3lBQmF4Q1pBaUFDS0FJQUlBSWdBaTBBQzBHQUFYRkJCM1liSVFFUTB3SWhBeUFBSUFVMkFnQWdBU0FESUFBUTZBSkJBVWNFUUNBRVFRUTJBZ0FMSUFCQnZBSnFJQUJCdUFKcUVKRUNCRUFnQkNBRUtBSUFRUUp5TmdJQUN5QUFLQUs4QWlFQklBSVF5UUlhSUFjUXlRSWFJQUJCd0FKcUpBQWdBUThMSUFCQnZBSnFFSk1DR2lBQUtBSzBBU0VEREFBTEFBdVVBZ0VCZnlNQVFTQnJJZ1VrQUNBRklBRTJBaHdDUUNBQ0xRQUVRUUZ4UlFSQUlBQWdBU0FDSUFNZ0JDQUFLQUlBS0FJWUVRY0FJUUlNQVFzZ0JTQUNLQUljSWdBMkFoQWdBQ0FBS0FJRVFRRnFOZ0lFSUFVb0FoQVF4d0loQUNBRktBSVFJZ0VnQVNnQ0JFRUJheUlDTmdJRUlBSkJmMFlFUUNBQklBRW9BZ0FvQWdnUkFRQUxBa0FnQkFSQUlBVkJFR29nQUNBQUtBSUFLQUlZRVFJQURBRUxJQVZCRUdvZ0FDQUFLQUlBS0FJY0VRSUFDeUFGSUFWQkVHb1EvZ0kyQWd3RFFDQUZRUkJxRVA4Q0lRQWdBQ0FGS0FJTUlnRkhCRUFnQlVFY2FpQUJMQUFBRUlZQ0dpQUZJQVVvQWd4QkFXbzJBZ3dNQVFVZ0JTZ0NIQ0VDSUFWQkVHb1F5UUlhQ3dzTElBVkJJR29rQUNBQ0N6b0JBWDhnQUNnQ0FDQUFJQUF0QUF0QmdBRnhRUWQyR3lFQkl3QkJFR3NpQUNRQUlBQWdBVFlDRENBQUtBSU1JUUVnQUVFUWFpUUFJQUVMVkFFQmZ5QUFLQUlBSUFBZ0FDMEFDeUlCUVlBQmNVRUhkaHNnQUNnQ0JDQUJJZ0JCL3dCeElBQkJnQUZ4UVFkMkcyb2hBU01BUVJCcklnQWtBQ0FBSUFFMkFnd2dBQ2dDRENFQklBQkJFR29rQUNBQkM5MEJBUVIvSXdCQlFHb2lBQ1FBSUFCQ0pUY0RPQ0FBUVRocUlnVkJBWEpCd2NBVFFRRWdBaWdDQkJDQkF4RFRBaUVHSUFBZ0JEWUNBQ0FBUVN0cUlnUWdCRUVOSUFZZ0JTQUFFSUlESUFScUlnY2dBaWdDQkJDREF5RUlJQUJCQkdvaUJTQUNLQUljSWdZMkFnQWdCaUFHS0FJRVFRRnFOZ0lFSUFRZ0NDQUhJQUJCRUdvaUJpQUFRUXhxSUFCQkNHb2dCUkNFQXlBRktBSUFJZ1FnQkNnQ0JFRUJheUlGTmdJRUlBVkJmMFlFUUNBRUlBUW9BZ0FvQWdnUkFRQUxJQUVnQmlBQUtBSU1JQUFvQWdnZ0FpQURFSGNoQVNBQVFVQnJKQUFnQVF1c0FRRUJmd0pBSUFOQmdCQnhSUTBBSUFOQnlnQnhJZ1JCQ0VZTkFDQUVRY0FBUmcwQUlBSkZEUUFnQUVFck9nQUFJQUJCQVdvaEFBc2dBMEdBQkhFRVFDQUFRU002QUFBZ0FFRUJhaUVBQ3dOQUlBRXRBQUFpQkFSQUlBQWdCRG9BQUNBQVFRRnFJUUFnQVVFQmFpRUJEQUVMQ3lBQUFuOUI3d0FnQTBIS0FIRWlBVUhBQUVZTkFCcEIyQUJCK0FBZ0EwR0FnQUZ4R3lBQlFRaEdEUUFhUWVRQVFmVUFJQUliQ3pvQUFBdGpBUUYvSXdCQkVHc2lCU1FBSUFVZ0JEWUNEQ0FGUVFocUlBSVE2UUloQWlBQUlBRWdBeUFGS0FJTUVOb0JJUUVnQWlnQ0FDSUFCRUJCaktBVUtBSUFHaUFBQkVCQmpLQVVRWnlwRkNBQUlBQkJmMFliTmdJQUN3c2dCVUVRYWlRQUlBRUxZUUFnQWtHd0FYRWlBa0VnUmdSQUlBRVBDd0pBSUFKQkVFY05BQUpBQWtBZ0FDMEFBQ0lDUVN0ckRnTUFBUUFCQ3lBQVFRRnFEd3NnQVNBQWEwRUNTQTBBSUFKQk1FY05BQ0FBTFFBQlFTQnlRZmdBUncwQUlBQkJBbW9oQUFzZ0FBdnVCQUVJZnlNQVFSQnJJZ3NrQUNBR0tBSUFFUHNCSVFvZ0MwRUVhaUFHS0FJQUVNY0NJZ1lnQmlnQ0FDZ0NGQkVDQUFKQUlBc29BZ2dnQ3kwQUR5SUhRZjhBY1NBSFFZQUJjVUVIZGh0RkJFQWdDaUFBSUFJZ0F5QUtLQUlBS0FJZ0VRWUFHaUFGSUFNZ0FpQUFhMm9pQmpZQ0FBd0JDeUFGSUFNMkFnQUNRQUpBSUFBaUJ5MEFBQ0lJUVN0ckRnTUFBUUFCQ3lBS0lBakFJQW9vQWdBb0Fod1JBd0FoQnlBRklBVW9BZ0FpQ0VFQmFqWUNBQ0FJSUFjNkFBQWdBRUVCYWlFSEN3SkFJQUlnQjJ0QkFrZ05BQ0FITFFBQVFUQkhEUUFnQnkwQUFVRWdja0g0QUVjTkFDQUtRVEFnQ2lnQ0FDZ0NIQkVEQUNFSUlBVWdCU2dDQUNJSlFRRnFOZ0lBSUFrZ0NEb0FBQ0FLSUFjc0FBRWdDaWdDQUNnQ0hCRURBQ0VJSUFVZ0JTZ0NBQ0lKUVFGcU5nSUFJQWtnQ0RvQUFDQUhRUUpxSVFjTElBY2dBaENGQTBFQUlRa2dCaUFHS0FJQUtBSVFFUUFBSVExQkFDRUlJQWNoQmdOL0lBSWdCazBFZnlBRElBY2dBR3RxSUFVb0FnQVFoUU1nQlNnQ0FBVUNRQ0FJSUF0QkJHb2lEQ2dDQUNBTUlBd3RBQXRCZ0FGeFFRZDJHMm90QUFCRkRRQWdDU0FJSUF0QkJHb2lEQ2dDQUNBTUlBd3RBQXRCZ0FGeFFRZDJHMm9zQUFCSERRQWdCU0FGS0FJQUlnbEJBV28yQWdBZ0NTQU5PZ0FBSUFnZ0NDQUxLQUlJSUFzdEFBOGlDVUgvQUhFZ0NVR0FBWEZCQjNZYlFRRnJTV29oQ0VFQUlRa0xJQW9nQml3QUFDQUtLQUlBS0FJY0VRTUFJUXdnQlNBRktBSUFJZzVCQVdvMkFnQWdEaUFNT2dBQUlBWkJBV29oQmlBSlFRRnFJUWtNQVFzTElRWUxJQVFnQmlBRElBRWdBR3RxSUFFZ0FrWWJOZ0lBSUF0QkJHb1F5UUlhSUF0QkVHb2tBQXMvQVFGL0FrQWdBQ0FCUmcwQUEwQWdBQ0FCUVFGcklnRlBEUUVnQUMwQUFDRUNJQUFnQVMwQUFEb0FBQ0FCSUFJNkFBQWdBRUVCYWlFQURBQUxBQXNMNEFFQkJYOGpBRUh3QUdzaUFDUUFJQUJDSlRjRGFDQUFRZWdBYWlJR1FRRnlRY1UrUVFFZ0FpZ0NCQkNCQXhEVEFpRUhJQUFnQkRjREFDQUFRZEFBYWlJRklBVkJHQ0FISUFZZ0FCQ0NBeUFGYWlJSUlBSW9BZ1FRZ3dNaENTQUFRUlJxSWdZZ0FpZ0NIQ0lITmdJQUlBY2dCeWdDQkVFQmFqWUNCQ0FGSUFrZ0NDQUFRU0JxSWdjZ0FFRWNhaUFBUVJocUlBWVFoQU1nQmlnQ0FDSUZJQVVvQWdSQkFXc2lCallDQkNBR1FYOUdCRUFnQlNBRktBSUFLQUlJRVFFQUN5QUJJQWNnQUNnQ0hDQUFLQUlZSUFJZ0F4QjNJUUVnQUVId0FHb2tBQ0FCQzkwQkFRUi9Jd0JCUUdvaUFDUUFJQUJDSlRjRE9DQUFRVGhxSWdWQkFYSkJ3Y0FUUVFBZ0FpZ0NCQkNCQXhEVEFpRUdJQUFnQkRZQ0FDQUFRU3RxSWdRZ0JFRU5JQVlnQlNBQUVJSURJQVJxSWdjZ0FpZ0NCQkNEQXlFSUlBQkJCR29pQlNBQ0tBSWNJZ1kyQWdBZ0JpQUdLQUlFUVFGcU5nSUVJQVFnQ0NBSElBQkJFR29pQmlBQVFReHFJQUJCQ0dvZ0JSQ0VBeUFGS0FJQUlnUWdCQ2dDQkVFQmF5SUZOZ0lFSUFWQmYwWUVRQ0FFSUFRb0FnQW9BZ2dSQVFBTElBRWdCaUFBS0FJTUlBQW9BZ2dnQWlBREVIY2hBU0FBUVVCckpBQWdBUXZnQVFFRmZ5TUFRZkFBYXlJQUpBQWdBRUlsTndOb0lBQkI2QUJxSWdaQkFYSkJ4VDVCQUNBQ0tBSUVFSUVERU5NQ0lRY2dBQ0FFTndNQUlBQkIwQUJxSWdVZ0JVRVlJQWNnQmlBQUVJSURJQVZxSWdnZ0FpZ0NCQkNEQXlFSklBQkJGR29pQmlBQ0tBSWNJZ2MyQWdBZ0J5QUhLQUlFUVFGcU5nSUVJQVVnQ1NBSUlBQkJJR29pQnlBQVFSeHFJQUJCR0dvZ0JoQ0VBeUFHS0FJQUlnVWdCU2dDQkVFQmF5SUdOZ0lFSUFaQmYwWUVRQ0FGSUFVb0FnQW9BZ2dSQVFBTElBRWdCeUFBS0FJY0lBQW9BaGdnQWlBREVIY2hBU0FBUWZBQWFpUUFJQUVMZ0FVQkIzOENmeUFCSVFrakFFSFFBV3NpQlNRQUlBVkNKVGNEeUFFZ0JVSElBV3BCQVhKQi9PMFNJQUlvQWdRUWlnTWhCeUFGSUFWQm9BRnFOZ0tjQVJEVEFpRUFBbjhnQndSQUlBSW9BZ2doQVNBRklBUTVBeWdnQlNBQk5nSWdJQVZCb0FGcVFSNGdBQ0FGUWNnQmFpQUZRU0JxRUlJRERBRUxJQVVnQkRrRE1DQUZRYUFCYWtFZUlBQWdCVUhJQVdvZ0JVRXdhaENDQXdzaEJpQUZRZFFBTmdKUUlBVkJsQUZxSWdoQkFEWUNBQ0FJSUFVb0FsQTJBZ1FnQlVHZ0FXb2lBU0VBQWtBZ0JrRWVUZ1JBRU5NQ0lRQUNmeUFIQkVBZ0FpZ0NDQ0VHSUFVZ0JEa0RDQ0FGSUFZMkFnQWdCVUdjQVdvZ0FDQUZRY2dCYWlBRkVJc0REQUVMSUFVZ0JEa0RFQ0FGUVp3QmFpQUFJQVZCeUFGcUlBVkJFR29RaXdNTElnWkJmMFlOQVNBSUtBSUFJUWNnQ0NBRktBS2NBU0lBTmdJQUlBY0VRQ0FISUFnb0FnUVJBUUFMQ3lBQUlBQWdCbW9pQ2lBQ0tBSUVFSU1ESVFzZ0JVSFVBRFlDVUNBRlFRQTJBa2dnQlNBRktBSlFOZ0pNQWtBZ0JVR2dBV29nQUVZRVFDQUZRZEFBYWlFR0RBRUxJQVpCQVhRUU15SUdSUTBCSUFVb0FrZ2hBU0FGSUFZMkFrZ2dBUVJBSUFFZ0JTZ0NUQkVCQUFzZ0FDRUJDeUFGUVR4cUlnQWdBaWdDSENJSE5nSUFJQWNnQnlnQ0JFRUJhallDQkNBQklBc2dDaUFHSUFWQnhBQnFJQVZCUUdzZ0FCQ01BeUFBS0FJQUlnQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBa2dCaUFGS0FKRUlBVW9Ba0FnQWlBREVIY2hBU0FGS0FKSUlRQWdCVUVBTmdKSUlBQUVRQ0FBSUFVb0Frd1JBUUFMSUFnb0FnQWhBQ0FJUVFBMkFnQWdBQVJBSUFBZ0NDZ0NCQkVCQUFzZ0JVSFFBV29rQUNBQkRBRUxFTjRCQUFzTDBBRUJBbjhnQWtHQUVIRUVRQ0FBUVNzNkFBQWdBRUVCYWlFQUN5QUNRWUFJY1FSQUlBQkJJem9BQUNBQVFRRnFJUUFMSUFKQmhBSnhJZ05CaEFKSEJFQWdBRUd1MUFBN0FBQWdBRUVDYWlFQUN5QUNRWUNBQVhFaEFnTkFJQUV0QUFBaUJBUkFJQUFnQkRvQUFDQUFRUUZxSVFBZ0FVRUJhaUVCREFFTEN5QUFBbjhDUUNBRFFZQUNSd1JBSUFOQkJFY05BVUhHQUVIbUFDQUNHd3dDQzBIRkFFSGxBQ0FDR3d3QkMwSEJBRUhoQUNBQ0d5QURRWVFDUmcwQUdrSEhBRUhuQUNBQ0d3czZBQUFnQTBHRUFrY0x0Z0VCQTM4akFFRVFheUlFSkFBZ0JDQUROZ0lNSUFSQkNHb2dBUkRwQWlFR0lBUW9BZ3doQXlNQVFSQnJJZ0VrQUNBQklBTTJBZ3dnQVNBRE5nSUlRWDhoQlFKQVFRQkJBQ0FDSUFNUTJnRWlBMEVBU0EwQUlBQWdBMEVCYWlJREVETWlBRFlDQUNBQVJRMEFJQUFnQXlBQ0lBRW9BZ3dRMmdFaEJRc2dBVUVRYWlRQUlBWW9BZ0FpQUFSQVFZeWdGQ2dDQUJvZ0FBUkFRWXlnRkVHY3FSUWdBQ0FBUVg5R0d6WUNBQXNMSUFSQkVHb2tBQ0FGQy9ZR0FRcC9Jd0JCRUdzaUNpUUFJQVlvQWdBUSt3RWhDU0FLUVFScUlBWW9BZ0FReHdJaURTSUdJQVlvQWdBb0FoUVJBZ0FnQlNBRE5nSUFBa0FDUUNBQUlnZ3RBQUFpQmtFcmF3NERBQUVBQVFzZ0NTQUd3Q0FKS0FJQUtBSWNFUU1BSVFZZ0JTQUZLQUlBSWdkQkFXbzJBZ0FnQnlBR09nQUFJQUJCQVdvaENBc0NRQUpBSUFJZ0NDSUdhMEVCVEEwQUlBZ3RBQUJCTUVjTkFDQUlMUUFCUVNCeVFmZ0FSdzBBSUFsQk1DQUpLQUlBS0FJY0VRTUFJUVlnQlNBRktBSUFJZ2RCQVdvMkFnQWdCeUFHT2dBQUlBa2dDQ3dBQVNBSktBSUFLQUljRVFNQUlRWWdCU0FGS0FJQUlnZEJBV28yQWdBZ0J5QUdPZ0FBSUFoQkFtb2lDQ0VHQTBBZ0FpQUdUUTBDSUFZc0FBQWhCeERUQWhvZ0IwRXdhMEVLU1NBSFFTQnlRZUVBYTBFR1NYSkZEUUlnQmtFQmFpRUdEQUFMQUFzRFFDQUNJQVpORFFFZ0Jpd0FBQ0VIRU5NQ0dpQUhRVEJyUVFwUERRRWdCa0VCYWlFR0RBQUxBQXNDUUNBS0tBSUlJQW90QUE4aUIwSC9BSEVnQjBHQUFYRkJCM1liUlFSQUlBa2dDQ0FHSUFVb0FnQWdDU2dDQUNnQ0lCRUdBQm9nQlNBRktBSUFJQVlnQ0d0cU5nSUFEQUVMSUFnZ0JoQ0ZBeUFOSUEwb0FnQW9BaEFSQUFBaER5QUlJUWNEUUNBR0lBZE5CRUFnQXlBSUlBQnJhaUFGS0FJQUVJVURCUUpBSUE0Z0NrRUVhaUlMS0FJQUlBc2dDeTBBQzBHQUFYRkJCM1liYWl3QUFFRUFUQTBBSUF3Z0RpQUtRUVJxSWdzb0FnQWdDeUFMTFFBTFFZQUJjVUVIZGh0cUxBQUFSdzBBSUFVZ0JTZ0NBQ0lNUVFGcU5nSUFJQXdnRHpvQUFDQU9JQTRnQ2lnQ0NDQUtMUUFQSWd4Qi93QnhJQXhCZ0FGeFFRZDJHMEVCYTBscUlRNUJBQ0VNQ3lBSklBY3NBQUFnQ1NnQ0FDZ0NIQkVEQUNFTElBVWdCU2dDQUNJUVFRRnFOZ0lBSUJBZ0N6b0FBQ0FIUVFGcUlRY2dERUVCYWlFTURBRUxDd3NEUUFKQUFrQWdBaUFHVFFSQUlBWWhCd3dCQ3lBR1FRRnFJUWNnQmkwQUFDSUdRUzVIRFFFZ0RTQU5LQUlBS0FJTUVRQUFJUVlnQlNBRktBSUFJZ2hCQVdvMkFnQWdDQ0FHT2dBQUN5QUpJQWNnQWlBRktBSUFJQWtvQWdBb0FpQVJCZ0FhSUFVZ0JTZ0NBQ0FDSUFkcmFpSUZOZ0lBSUFRZ0JTQURJQUVnQUd0cUlBRWdBa1liTmdJQUlBcEJCR29ReVFJYUlBcEJFR29rQUE4TElBa2dCc0FnQ1NnQ0FDZ0NIQkVEQUNFR0lBVWdCU2dDQUNJSVFRRnFOZ0lBSUFnZ0Jqb0FBQ0FISVFZTUFBc0FDNllGQVFkL0FuOGdBU0VLSXdCQmdBSnJJZ1lrQUNBR1FpVTNBL2dCSUFaQitBRnFRUUZ5UVpmREFDQUNLQUlFRUlvRElRZ2dCaUFHUWRBQmFqWUN6QUVRMHdJaEFBSi9JQWdFUUNBQ0tBSUlJUUVnQmtGQWF5QUZOd01BSUFZZ0JEY0RPQ0FHSUFFMkFqQWdCa0hRQVdwQkhpQUFJQVpCK0FGcUlBWkJNR29RZ2dNTUFRc2dCaUFFTndOUUlBWWdCVGNEV0NBR1FkQUJha0VlSUFBZ0JrSDRBV29nQmtIUUFHb1FnZ01MSVFjZ0JrSFVBRFlDZ0FFZ0JrSEVBV29pQ1VFQU5nSUFJQWtnQmlnQ2dBRTJBZ1FnQmtIUUFXb2lBU0VBQWtBZ0IwRWVUZ1JBRU5NQ0lRQUNmeUFJQkVBZ0FpZ0NDQ0VISUFZZ0JUY0RFQ0FHSUFRM0F3Z2dCaUFITmdJQUlBWkJ6QUZxSUFBZ0JrSDRBV29nQmhDTEF3d0JDeUFHSUFRM0F5QWdCaUFGTndNb0lBWkJ6QUZxSUFBZ0JrSDRBV29nQmtFZ2FoQ0xBd3NpQjBGL1JnMEJJQWtvQWdBaENDQUpJQVlvQXN3QklnQTJBZ0FnQ0FSQUlBZ2dDU2dDQkJFQkFBc0xJQUFnQUNBSGFpSUxJQUlvQWdRUWd3TWhEQ0FHUWRRQU5nS0FBU0FHUVFBMkFuZ2dCaUFHS0FLQUFUWUNmQUpBSUFaQjBBRnFJQUJHQkVBZ0JrR0FBV29oQnd3QkN5QUhRUUYwRURNaUIwVU5BU0FHS0FKNElRRWdCaUFITmdKNElBRUVRQ0FCSUFZb0Fud1JBUUFMSUFBaEFRc2dCa0hzQUdvaUFDQUNLQUljSWdnMkFnQWdDQ0FJS0FJRVFRRnFOZ0lFSUFFZ0RDQUxJQWNnQmtIMEFHb2dCa0h3QUdvZ0FCQ01BeUFBS0FJQUlnQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBb2dCeUFHS0FKMElBWW9BbkFnQWlBREVIY2hBU0FHS0FKNElRQWdCa0VBTmdKNElBQUVRQ0FBSUFZb0Fud1JBUUFMSUFrb0FnQWhBQ0FKUVFBMkFnQWdBQVJBSUFBZ0NTZ0NCQkVCQUFzZ0JrR0FBbW9rQUNBQkRBRUxFTjRCQUFzTDFRRUJCMzhqQUVIZ0FHc2lBQ1FBRU5NQ0lRVWdBQ0FFTmdJQUlBQkJRR3NpQmlBR0lBWkJGQ0FGUWNvOUlBQVFnZ01pQ21vaUJ5QUNLQUlFRUlNRElRZ2dBRUVRYWlJRUlBSW9BaHdpQlRZQ0FDQUZJQVVvQWdSQkFXbzJBZ1FnQUNnQ0VCRDdBU0VKSUFRb0FnQWlCU0FGS0FJRVFRRnJJZ3MyQWdRZ0MwRi9SZ1JBSUFVZ0JTZ0NBQ2dDQ0JFQkFBc2dDU0FHSUFjZ0JDQUpLQUlBS0FJZ0VRWUFHaUFCSUFRZ0JDQUthaUlCSUFnZ0FHc2dBR3BCTUdzZ0J5QUlSaHNnQVNBQ0lBTVFkeUVCSUFCQjRBQnFKQUFnQVF1VEFnRUJmeU1BUVNCcklnVWtBQ0FGSUFFMkFod0NRQ0FDTFFBRVFRRnhSUVJBSUFBZ0FTQUNJQU1nQkNBQUtBSUFLQUlZRVFjQUlRSU1BUXNnQlNBQ0tBSWNJZ0EyQWhBZ0FDQUFLQUlFUVFGcU5nSUVJQVVvQWhBUTZ3SWhBQ0FGS0FJUUlnRWdBU2dDQkVFQmF5SUNOZ0lFSUFKQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTEFrQWdCQVJBSUFWQkVHb2dBQ0FBS0FJQUtBSVlFUUlBREFFTElBVkJFR29nQUNBQUtBSUFLQUljRVFJQUN5QUZJQVZCRUdvUS9nSTJBZ3dEUUNBRlFSQnFFSkFESVFBZ0FDQUZLQUlNSWdGSEJFQWdCVUVjYWlBQktBSUFFSlVDSUFVZ0JTZ0NERUVFYWpZQ0RBd0JCU0FGS0FJY0lRSWdCVUVRYWhEdEFob0xDd3NnQlVFZ2FpUUFJQUlMVndFQmZ5QUFLQUlBSUFBZ0FDMEFDeUlCUVlBQmNVRUhkaHNnQUNnQ0JDQUJJZ0JCL3dCeElBQkJnQUZ4UVFkMkcwRUNkR29oQVNNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNnQ0RDRUJJQUJCRUdva0FDQUJDK01CQVFSL0l3QkJrQUZySWdBa0FDQUFRaVUzQTRnQklBQkJpQUZxSWdWQkFYSkJ3Y0FUUVFFZ0FpZ0NCQkNCQXhEVEFpRUdJQUFnQkRZQ0FDQUFRZnNBYWlJRUlBUkJEU0FHSUFVZ0FCQ0NBeUFFYWlJSElBSW9BZ1FRZ3dNaENDQUFRUVJxSWdVZ0FpZ0NIQ0lHTmdJQUlBWWdCaWdDQkVFQmFqWUNCQ0FFSUFnZ0J5QUFRUkJxSWdZZ0FFRU1haUFBUVFocUlBVVFrZ01nQlNnQ0FDSUVJQVFvQWdSQkFXc2lCVFlDQkNBRlFYOUdCRUFnQkNBRUtBSUFLQUlJRVFFQUN5QUJJQVlnQUNnQ0RDQUFLQUlJSUFJZ0F4Q1RBeUVCSUFCQmtBRnFKQUFnQVF2M0JBRUlmeU1BUVJCcklnc2tBQ0FHS0FJQUVKQUNJUW9nQzBFRWFpQUdLQUlBRU9zQ0lnWWdCaWdDQUNnQ0ZCRUNBQUpBSUFzb0FnZ2dDeTBBRHlJSFFmOEFjU0FIUVlBQmNVRUhkaHRGQkVBZ0NpQUFJQUlnQXlBS0tBSUFLQUl3RVFZQUdpQUZJQU1nQWlBQWEwRUNkR29pQmpZQ0FBd0JDeUFGSUFNMkFnQUNRQUpBSUFBaUJ5MEFBQ0lJUVN0ckRnTUFBUUFCQ3lBS0lBakFJQW9vQWdBb0Fpd1JBd0FoQnlBRklBVW9BZ0FpQ0VFRWFqWUNBQ0FJSUFjMkFnQWdBRUVCYWlFSEN3SkFJQUlnQjJ0QkFrZ05BQ0FITFFBQVFUQkhEUUFnQnkwQUFVRWdja0g0QUVjTkFDQUtRVEFnQ2lnQ0FDZ0NMQkVEQUNFSUlBVWdCU2dDQUNJSlFRUnFOZ0lBSUFrZ0NEWUNBQ0FLSUFjc0FBRWdDaWdDQUNnQ0xCRURBQ0VJSUFVZ0JTZ0NBQ0lKUVFScU5nSUFJQWtnQ0RZQ0FDQUhRUUpxSVFjTElBY2dBaENGQTBFQUlRa2dCaUFHS0FJQUtBSVFFUUFBSVExQkFDRUlJQWNoQmdOL0lBSWdCazBFZnlBRElBY2dBR3RCQW5ScUlBVW9BZ0FRMVFJZ0JTZ0NBQVVDUUNBSUlBdEJCR29pRENnQ0FDQU1JQXd0QUF0QmdBRnhRUWQyRzJvdEFBQkZEUUFnQ1NBSUlBdEJCR29pRENnQ0FDQU1JQXd0QUF0QmdBRnhRUWQyRzJvc0FBQkhEUUFnQlNBRktBSUFJZ2xCQkdvMkFnQWdDU0FOTmdJQUlBZ2dDQ0FMS0FJSUlBc3RBQThpQ1VIL0FIRWdDVUdBQVhGQkIzWWJRUUZyU1dvaENFRUFJUWtMSUFvZ0Jpd0FBQ0FLS0FJQUtBSXNFUU1BSVF3Z0JTQUZLQUlBSWc1QkJHbzJBZ0FnRGlBTU5nSUFJQVpCQVdvaEJpQUpRUUZxSVFrTUFRc0xJUVlMSUFRZ0JpQURJQUVnQUd0QkFuUnFJQUVnQWtZYk5nSUFJQXRCQkdvUXlRSWFJQXRCRUdva0FBdmJBUUVFZnlNQVFSQnJJZ2drQUFKQUlBQkZEUUFnQkNnQ0RDRUdJQUlnQVdzaUIwRUFTZ1JBSUFBZ0FTQUhRUUoySWdjZ0FDZ0NBQ2dDTUJFRUFDQUhSdzBCQ3lBR0lBTWdBV3RCQW5VaUFXdEJBQ0FCSUFaSUd5SUJRUUJLQkVBZ0FDQUlRUVJxSUFFZ0JSQ1VBeUlGS0FJQUlBVWdCUzBBQzBHQUFYRkJCM1liSUFFZ0FDZ0NBQ2dDTUJFRUFDRUdJQVVRN1FJYUlBRWdCa2NOQVFzZ0F5QUNheUlCUVFCS0JFQWdBQ0FDSUFGQkFuWWlBU0FBS0FJQUtBSXdFUVFBSUFGSERRRUxJQVJCQURZQ0RDQUFJUWtMSUFoQkVHb2tBQ0FKQytVQkFRUi9JQUFoQkNNQVFSQnJJZ1VrQUFKQUlBRkI4UC8vL3dOSkJFQUNRQ0FCUVFKSkJFQWdCQ0FCT2dBTERBRUxJQVZCQ0dvZ0FVRUNUd1IvSUFGQkJHcEJmSEVpQXlBRFFRRnJJZ01nQTBFQ1Joc0ZRUUVMUVFGcUVNTUNJQVFnQlNnQ0NDSUROZ0lBSUFRZ0JTZ0NERUdBZ0lDQWVISTJBZ2dnQkNBQk5nSUVJQU1oQkFzakFFRVFheUlHSkFBZ0JpQUNOZ0lNSUFRaEFpQUJJUU1EUUNBREJFQWdBaUFHS0FJTU5nSUFJQU5CQVdzaEF5QUNRUVJxSVFJTUFRc0xJQVpCRUdva0FDQUJRUUowSUFScVFRQTJBZ0FnQlVFUWFpUUFEQUVMRUZVQUN5QUFDK0lCQVFWL0l3QkJnQUpySWdBa0FDQUFRaVUzQS9nQklBQkIrQUZxSWdaQkFYSkJ4VDVCQVNBQ0tBSUVFSUVERU5NQ0lRY2dBQ0FFTndNQUlBQkI0QUZxSWdVZ0JVRVlJQWNnQmlBQUVJSURJQVZxSWdnZ0FpZ0NCQkNEQXlFSklBQkJGR29pQmlBQ0tBSWNJZ2MyQWdBZ0J5QUhLQUlFUVFGcU5nSUVJQVVnQ1NBSUlBQkJJR29pQnlBQVFSeHFJQUJCR0dvZ0JoQ1NBeUFHS0FJQUlnVWdCU2dDQkVFQmF5SUdOZ0lFSUFaQmYwWUVRQ0FGSUFVb0FnQW9BZ2dSQVFBTElBRWdCeUFBS0FJY0lBQW9BaGdnQWlBREVKTURJUUVnQUVHQUFtb2tBQ0FCQytNQkFRUi9Jd0JCa0FGcklnQWtBQ0FBUWlVM0E0Z0JJQUJCaUFGcUlnVkJBWEpCd2NBVFFRQWdBaWdDQkJDQkF4RFRBaUVHSUFBZ0JEWUNBQ0FBUWZzQWFpSUVJQVJCRFNBR0lBVWdBQkNDQXlBRWFpSUhJQUlvQWdRUWd3TWhDQ0FBUVFScUlnVWdBaWdDSENJR05nSUFJQVlnQmlnQ0JFRUJhallDQkNBRUlBZ2dCeUFBUVJCcUlnWWdBRUVNYWlBQVFRaHFJQVVRa2dNZ0JTZ0NBQ0lFSUFRb0FnUkJBV3NpQlRZQ0JDQUZRWDlHQkVBZ0JDQUVLQUlBS0FJSUVRRUFDeUFCSUFZZ0FDZ0NEQ0FBS0FJSUlBSWdBeENUQXlFQklBQkJrQUZxSkFBZ0FRdmlBUUVGZnlNQVFZQUNheUlBSkFBZ0FFSWxOd1A0QVNBQVFmZ0JhaUlHUVFGeVFjVStRUUFnQWlnQ0JCQ0JBeERUQWlFSElBQWdCRGNEQUNBQVFlQUJhaUlGSUFWQkdDQUhJQVlnQUJDQ0F5QUZhaUlJSUFJb0FnUVFnd01oQ1NBQVFSUnFJZ1lnQWlnQ0hDSUhOZ0lBSUFjZ0J5Z0NCRUVCYWpZQ0JDQUZJQWtnQ0NBQVFTQnFJZ2NnQUVFY2FpQUFRUmhxSUFZUWtnTWdCaWdDQUNJRklBVW9BZ1JCQVdzaUJqWUNCQ0FHUVg5R0JFQWdCU0FGS0FJQUtBSUlFUUVBQ3lBQklBY2dBQ2dDSENBQUtBSVlJQUlnQXhDVEF5RUJJQUJCZ0FKcUpBQWdBUXVCQlFFSGZ3Si9JQUVoQ1NNQVFmQUNheUlGSkFBZ0JVSWxOd1BvQWlBRlFlZ0Nha0VCY2tIODdSSWdBaWdDQkJDS0F5RUhJQVVnQlVIQUFtbzJBcndDRU5NQ0lRQUNmeUFIQkVBZ0FpZ0NDQ0VCSUFVZ0JEa0RLQ0FGSUFFMkFpQWdCVUhBQW1wQkhpQUFJQVZCNkFKcUlBVkJJR29RZ2dNTUFRc2dCU0FFT1FNd0lBVkJ3QUpxUVI0Z0FDQUZRZWdDYWlBRlFUQnFFSUlEQ3lFR0lBVkIxQUEyQWxBZ0JVRzBBbW9pQ0VFQU5nSUFJQWdnQlNnQ1VEWUNCQ0FGUWNBQ2FpSUJJUUFDUUNBR1FSNU9CRUFRMHdJaEFBSi9JQWNFUUNBQ0tBSUlJUVlnQlNBRU9RTUlJQVVnQmpZQ0FDQUZRYndDYWlBQUlBVkI2QUpxSUFVUWl3TU1BUXNnQlNBRU9RTVFJQVZCdkFKcUlBQWdCVUhvQW1vZ0JVRVFhaENMQXdzaUJrRi9SZzBCSUFnb0FnQWhCeUFJSUFVb0Fyd0NJZ0EyQWdBZ0J3UkFJQWNnQ0NnQ0JCRUJBQXNMSUFBZ0FDQUdhaUlLSUFJb0FnUVFnd01oQ3lBRlFkUUFOZ0pRSUFWQkFEWUNTQ0FGSUFVb0FsQTJBa3dDUUNBRlFjQUNhaUFBUmdSQUlBVkIwQUJxSVFZTUFRc2dCa0VEZEJBeklnWkZEUUVnQlNnQ1NDRUJJQVVnQmpZQ1NDQUJCRUFnQVNBRktBSk1FUUVBQ3lBQUlRRUxJQVZCUEdvaUFDQUNLQUljSWdjMkFnQWdCeUFIS0FJRVFRRnFOZ0lFSUFFZ0N5QUtJQVlnQlVIRUFHb2dCVUZBYXlBQUVKa0RJQUFvQWdBaUFDQUFLQUlFUVFGcklnRTJBZ1FnQVVGL1JnUkFJQUFnQUNnQ0FDZ0NDQkVCQUFzZ0NTQUdJQVVvQWtRZ0JTZ0NRQ0FDSUFNUWt3TWhBU0FGS0FKSUlRQWdCVUVBTmdKSUlBQUVRQ0FBSUFVb0Frd1JBUUFMSUFnb0FnQWhBQ0FJUVFBMkFnQWdBQVJBSUFBZ0NDZ0NCQkVCQUFzZ0JVSHdBbW9rQUNBQkRBRUxFTjRCQUFzTGhnY0JDbjhqQUVFUWF5SUxKQUFnQmlnQ0FCQ1FBaUVKSUF0QkJHb2dCaWdDQUJEckFpSU5JZ1lnQmlnQ0FDZ0NGQkVDQUNBRklBTTJBZ0FDUUFKQUlBQWlDQzBBQUNJR1FTdHJEZ01BQVFBQkN5QUpJQWJBSUFrb0FnQW9BaXdSQXdBaEJpQUZJQVVvQWdBaUIwRUVhallDQUNBSElBWTJBZ0FnQUVFQmFpRUlDd0pBQWtBZ0FpQUlJZ1pyUVFGTURRQWdDQzBBQUVFd1J3MEFJQWd0QUFGQklISkIrQUJIRFFBZ0NVRXdJQWtvQWdBb0Fpd1JBd0FoQmlBRklBVW9BZ0FpQjBFRWFqWUNBQ0FISUFZMkFnQWdDU0FJTEFBQklBa29BZ0FvQWl3UkF3QWhCaUFGSUFVb0FnQWlCMEVFYWpZQ0FDQUhJQVkyQWdBZ0NFRUNhaUlJSVFZRFFDQUNJQVpORFFJZ0Jpd0FBQ0VIRU5NQ0dpQUhRVEJyUVFwSklBZEJJSEpCNFFCclFRWkpja1VOQWlBR1FRRnFJUVlNQUFzQUN3TkFJQUlnQmswTkFTQUdMQUFBSVFjUTB3SWFJQWRCTUd0QkNrOE5BU0FHUVFGcUlRWU1BQXNBQ3dKQUlBc29BZ2dnQ3kwQUR5SUhRZjhBY1NBSFFZQUJjVUVIZGh0RkJFQWdDU0FJSUFZZ0JTZ0NBQ0FKS0FJQUtBSXdFUVlBR2lBRklBVW9BZ0FnQmlBSWEwRUNkR28yQWdBTUFRc2dDQ0FHRUlVRElBMGdEU2dDQUNnQ0VCRUFBQ0VQSUFnaEJ3TkFJQVlnQjAwRVFDQURJQWdnQUd0QkFuUnFJQVVvQWdBUTFRSUZBa0FnRGlBTFFRUnFJZ3dvQWdBZ0RDQU1MUUFMUVlBQmNVRUhkaHRxTEFBQVFRQk1EUUFnQ2lBT0lBdEJCR29pRENnQ0FDQU1JQXd0QUF0QmdBRnhRUWQyRzJvc0FBQkhEUUFnQlNBRktBSUFJZ3BCQkdvMkFnQWdDaUFQTmdJQUlBNGdEaUFMS0FJSUlBc3RBQThpQ2tIL0FIRWdDa0dBQVhGQkIzWWJRUUZyU1dvaERrRUFJUW9MSUFrZ0J5d0FBQ0FKS0FJQUtBSXNFUU1BSVF3Z0JTQUZLQUlBSWhCQkJHbzJBZ0FnRUNBTU5nSUFJQWRCQVdvaEJ5QUtRUUZxSVFvTUFRc0xDd0pBQWtBRFFDQUNJQVpORFFFZ0JrRUJhaUVISUFZdEFBQWlCa0V1UndSQUlBa2dCc0FnQ1NnQ0FDZ0NMQkVEQUNFR0lBVWdCU2dDQUNJSVFRUnFOZ0lBSUFnZ0JqWUNBQ0FISVFZTUFRc0xJQTBnRFNnQ0FDZ0NEQkVBQUNFR0lBVWdCU2dDQUNJSVFRUnFJZ28yQWdBZ0NDQUdOZ0lBREFFTElBVW9BZ0FoQ2lBR0lRY0xJQWtnQnlBQ0lBb2dDU2dDQUNnQ01CRUdBQm9nQlNBRktBSUFJQUlnQjJ0QkFuUnFJZ1UyQWdBZ0JDQUZJQU1nQVNBQWEwRUNkR29nQVNBQ1JoczJBZ0FnQzBFRWFoREpBaG9nQzBFUWFpUUFDNmNGQVFkL0FuOGdBU0VLSXdCQm9BTnJJZ1lrQUNBR1FpVTNBNWdESUFaQm1BTnFRUUZ5UVpmREFDQUNLQUlFRUlvRElRZ2dCaUFHUWZBQ2FqWUM3QUlRMHdJaEFBSi9JQWdFUUNBQ0tBSUlJUUVnQmtGQWF5QUZOd01BSUFZZ0JEY0RPQ0FHSUFFMkFqQWdCa0h3QW1wQkhpQUFJQVpCbUFOcUlBWkJNR29RZ2dNTUFRc2dCaUFFTndOUUlBWWdCVGNEV0NBR1FmQUNha0VlSUFBZ0JrR1lBMm9nQmtIUUFHb1FnZ01MSVFjZ0JrSFVBRFlDZ0FFZ0JrSGtBbW9pQ1VFQU5nSUFJQWtnQmlnQ2dBRTJBZ1FnQmtId0Ftb2lBU0VBQWtBZ0IwRWVUZ1JBRU5NQ0lRQUNmeUFJQkVBZ0FpZ0NDQ0VISUFZZ0JUY0RFQ0FHSUFRM0F3Z2dCaUFITmdJQUlBWkI3QUpxSUFBZ0JrR1lBMm9nQmhDTEF3d0JDeUFHSUFRM0F5QWdCaUFGTndNb0lBWkI3QUpxSUFBZ0JrR1lBMm9nQmtFZ2FoQ0xBd3NpQjBGL1JnMEJJQWtvQWdBaENDQUpJQVlvQXV3Q0lnQTJBZ0FnQ0FSQUlBZ2dDU2dDQkJFQkFBc0xJQUFnQUNBSGFpSUxJQUlvQWdRUWd3TWhEQ0FHUWRRQU5nS0FBU0FHUVFBMkFuZ2dCaUFHS0FLQUFUWUNmQUpBSUFaQjhBSnFJQUJHQkVBZ0JrR0FBV29oQnd3QkN5QUhRUU4wRURNaUIwVU5BU0FHS0FKNElRRWdCaUFITmdKNElBRUVRQ0FCSUFZb0Fud1JBUUFMSUFBaEFRc2dCa0hzQUdvaUFDQUNLQUljSWdnMkFnQWdDQ0FJS0FJRVFRRnFOZ0lFSUFFZ0RDQUxJQWNnQmtIMEFHb2dCa0h3QUdvZ0FCQ1pBeUFBS0FJQUlnQWdBQ2dDQkVFQmF5SUJOZ0lFSUFGQmYwWUVRQ0FBSUFBb0FnQW9BZ2dSQVFBTElBb2dCeUFHS0FKMElBWW9BbkFnQWlBREVKTURJUUVnQmlnQ2VDRUFJQVpCQURZQ2VDQUFCRUFnQUNBR0tBSjhFUUVBQ3lBSktBSUFJUUFnQ1VFQU5nSUFJQUFFUUNBQUlBa29BZ1FSQVFBTElBWkJvQU5xSkFBZ0FRd0JDeERlQVFBTEM5NEJBUWQvSXdCQjBBRnJJZ0FrQUJEVEFpRUZJQUFnQkRZQ0FDQUFRYkFCYWlJR0lBWWdCa0VVSUFWQnlqMGdBQkNDQXlJS2FpSUhJQUlvQWdRUWd3TWhDQ0FBUVJCcUlnUWdBaWdDSENJRk5nSUFJQVVnQlNnQ0JFRUJhallDQkNBQUtBSVFFSkFDSVFrZ0JDZ0NBQ0lGSUFVb0FnUkJBV3NpQ3pZQ0JDQUxRWDlHQkVBZ0JTQUZLQUlBS0FJSUVRRUFDeUFKSUFZZ0J5QUVJQWtvQWdBb0FqQVJCZ0FhSUFFZ0JDQUtRUUowSUFScUlnRWdDQ0FBYTBFQ2RDQUFha0d3QldzZ0J5QUlSaHNnQVNBQ0lBTVFrd01oQVNBQVFkQUJhaVFBSUFFTHpRVUJBMzhqQUVFUWF5SUlKQUFnQ0NBQ05nSUlJQWdnQVRZQ0RDQUlJQU1vQWh3aUFUWUNCQ0FCSUFFb0FnUkJBV28yQWdRZ0NDZ0NCQkQ3QVNFSklBZ29BZ1FpQVNBQktBSUVRUUZySWdJMkFnUWdBa0YvUmdSQUlBRWdBU2dDQUNnQ0NCRUJBQXRCQUNFQ0lBUkJBRFlDQUFKQUEwQWdCaUFIUmcwQklBSU5BUUpBSUFoQkRHb2dDRUVJYWhEOEFRMEFBa0FnQ1NBR0xBQUFRUUFnQ1NnQ0FDZ0NKQkVFQUVFbFJnUkFJQVpCQVdvaUFpQUhSZzBDQW44Q1FDQUpJQUlzQUFCQkFDQUpLQUlBS0FJa0VRUUFJZ0ZCeFFCR0RRQkJBQ0VLSUFGQi93RnhRVEJHRFFBZ0JpRUNJQUVNQVFzZ0JrRUNhaUFIUmcwRElBRWhDaUFKSUFZc0FBSkJBQ0FKS0FJQUtBSWtFUVFBQ3lFQklBZ2dBQ0FJS0FJTUlBZ29BZ2dnQXlBRUlBVWdBU0FLSUFBb0FnQW9BaVFSQ3dBMkFnd2dBa0VDYWlFR0RBRUxJQWtvQWdnaEFTQUdMQUFBSWdKQkFFNEVmeUFCSUFKQi93RnhRUUowYWlnQ0FFRUJjUVZCQUFzRVFBTkFBa0FnQnlBR1FRRnFJZ1pHQkVBZ0J5RUdEQUVMSUFZc0FBQWlBa0VBVGdSL0lBRWdBa0gvQVhGQkFuUnFLQUlBUVFGeEJVRUFDdzBCQ3dzRFFDQUlRUXhxSUFoQkNHb1EvQUVOQWdKL0lBZ29BZ3dpQVNnQ0RDSUNJQUVvQWhCR0JFQWdBU0FCS0FJQUtBSWtFUUFBREFFTElBSXRBQUFMd0NFQklBa29BZ2doQWlBQlFRQk9CSDhnQWlBQlFmOEJjVUVDZEdvb0FnQkJBWEVGUVFBTFJRMENJQWhCREdvUS9nRWFEQUFMQUFzZ0NRSi9JQWdvQWd3aUFTZ0NEQ0lDSUFFb0FoQkdCRUFnQVNBQktBSUFLQUlrRVFBQURBRUxJQUl0QUFBTHdDQUpLQUlBS0FJTUVRTUFJQWtnQml3QUFDQUpLQUlBS0FJTUVRTUFSZ1JBSUFaQkFXb2hCaUFJUVF4cUVQNEJHZ3dCQ3lBRVFRUTJBZ0FMSUFRb0FnQWhBZ3dCQ3dzZ0JFRUVOZ0lBQ3lBSVFReHFJQWhCQ0dvUS9BRUVRQ0FFSUFRb0FnQkJBbkkyQWdBTElBZ29BZ3doQUNBSVFSQnFKQUFnQUFzRUFFRUNDMEFCQVg4akFFRVFheUlHSkFBZ0JrS2xrT21wMHNuT2t0TUFOd01JSUFBZ0FTQUNJQU1nQkNBRklBWkJDR29nQmtFUWFpSUJFSndESVFBZ0FTUUFJQUFMVXdBZ0FDQUJJQUlnQXlBRUlBVWdBRUVJYWlBQUtBSUlLQUlVRVFBQUlnQW9BZ0FnQUNBQUxRQUxJZ0pCZ0FGeFFRZDJHeUlCSUFFZ0FDZ0NCQ0FDSWdCQi93QnhJQUJCZ0FGeFFRZDJHMm9RbkFNTGhRRUJBbjhqQUVFUWF5SUdKQUFnQmlBQk5nSU1JQVlnQXlnQ0hDSUJOZ0lJSUFFZ0FTZ0NCRUVCYWpZQ0JDQUdLQUlJRVBzQklRTWdCaWdDQ0NJQklBRW9BZ1JCQVdzaUJ6WUNCQ0FIUVg5R0JFQWdBU0FCS0FJQUtBSUlFUUVBQ3lBQUlBVkJHR29nQmtFTWFpQUNJQVFnQXhDaEF5QUdLQUlNSVFBZ0JrRVFhaVFBSUFBTFFBQWdBaUFESUFCQkNHb2dBQ2dDQ0NnQ0FCRUFBQ0lBSUFCQnFBRnFJQVVnQkVFQUVNZ0NJQUJySWdCQnB3Rk1CRUFnQVNBQVFReHRRUWR2TmdJQUN3dUZBUUVDZnlNQVFSQnJJZ1lrQUNBR0lBRTJBZ3dnQmlBREtBSWNJZ0UyQWdnZ0FTQUJLQUlFUVFGcU5nSUVJQVlvQWdnUSt3RWhBeUFHS0FJSUlnRWdBU2dDQkVFQmF5SUhOZ0lFSUFkQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTElBQWdCVUVRYWlBR1FReHFJQUlnQkNBREVLTURJQVlvQWd3aEFDQUdRUkJxSkFBZ0FBdEFBQ0FDSUFNZ0FFRUlhaUFBS0FJSUtBSUVFUUFBSWdBZ0FFR2dBbW9nQlNBRVFRQVF5QUlnQUdzaUFFR2ZBa3dFUUNBQklBQkJERzFCREc4MkFnQUxDNE1CQVFGL0l3QkJFR3NpQUNRQUlBQWdBVFlDRENBQUlBTW9BaHdpQVRZQ0NDQUJJQUVvQWdSQkFXbzJBZ1FnQUNnQ0NCRDdBU0VESUFBb0FnZ2lBU0FCS0FJRVFRRnJJZ1kyQWdRZ0JrRi9SZ1JBSUFFZ0FTZ0NBQ2dDQ0JFQkFBc2dCVUVVYWlBQVFReHFJQUlnQkNBREVLVURJQUFvQWd3aEFTQUFRUkJxSkFBZ0FRdENBQ0FCSUFJZ0F5QUVRUVFRcGdNaEFTQURMUUFBUVFSeFJRUkFJQUFnQVVIUUQyb2dBVUhzRG1vZ0FTQUJRZVFBU0JzZ0FVSEZBRWdiUWV3T2F6WUNBQXNMNXdJQkJIOGpBRUVRYXlJSEpBQWdCeUFCTmdJTVFRQWhBVUVHSVFVQ1FBSkFJQUFnQjBFTWFoRDhBUTBBQW44Z0FDZ0NBQ0lGS0FJTUlnWWdCU2dDRUVZRVFDQUZJQVVvQWdBb0FpUVJBQUFNQVFzZ0JpMEFBQXZBSVFaQkJDRUZJQU1vQWdnaENDQUdRUUJPQkg4Z0NDQUdRZjhCY1VFQ2RHb29BZ0JCd0FCeFFRQkhCVUVBQzBVTkFDQURJQVpCQUNBREtBSUFLQUlrRVFRQUlRRURRQUpBSUFGQk1Hc2hBU0FBRVA0QklnWWdCMEVNYWhEOEFRMEFJQVJCQWtnTkFBSi9JQVlvQWdBaUJTZ0NEQ0lHSUFVb0FoQkdCRUFnQlNBRktBSUFLQUlrRVFBQURBRUxJQVl0QUFBTHdDRUZJQU1vQWdnaEJpQUZRUUJPQkg4Z0JpQUZRZjhCY1VFQ2RHb29BZ0JCd0FCeFFRQkhCVUVBQzBVTkF5QUVRUUZySVFRZ0F5QUZRUUFnQXlnQ0FDZ0NKQkVFQUNBQlFRcHNhaUVCREFFTEMwRUNJUVVnQmlBSFFReHFFUHdCUlEwQkN5QUNJQUlvQWdBZ0JYSTJBZ0FMSUFkQkVHb2tBQ0FCQzkwT0FRTi9Jd0JCRUdzaUJ5UUFJQWNnQVRZQ0RDQUVRUUEyQWdBZ0J5QURLQUljSWdnMkFnQWdDQ0FJS0FJRVFRRnFOZ0lFSUFjb0FnQVErd0VoQ0NBSEtBSUFJZ2tnQ1NnQ0JFRUJheUlLTmdJRUlBcEJmMFlFUUNBSklBa29BZ0FvQWdnUkFRQUxBbjhDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFJQVpCd1FCckRqa0FBUmNFRndVWEJnY1hGeGNLRnhjWEZ3NFBFQmNYRnhNVkZ4Y1hGeGNYRndBQkFnTURGeGNCRndnWEZ3a0xGd3dYRFJjTEZ4Y1JFaFFXQ3lBQUlBVkJHR29nQjBFTWFpQUNJQVFnQ0JDaEF3d1lDeUFBSUFWQkVHb2dCMEVNYWlBQ0lBUWdDQkNqQXd3WEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0RCRUFBQ0lBS0FJQUlBQWdBQzBBQ3lJQlFZQUJjVUVIZGhzaUFpQUNJQUFvQWdRZ0FVSC9BSEVnQVVHQUFYRkJCM1liYWhDY0F6WUNEQXdXQ3lBSFFReHFJQUlnQkNBSVFRSVFwZ01oQUNBRUtBSUFJUUVDUUFKQUlBQkJBV3RCSGtzTkFDQUJRUVJ4RFFBZ0JTQUFOZ0lNREFFTElBUWdBVUVFY2pZQ0FBc01GUXNnQjBLbDJyMnB3dXpMa3ZrQU53TUFJQWNnQUNBQklBSWdBeUFFSUFVZ0J5QUhRUWhxRUp3RE5nSU1EQlFMSUFkQ3BiSzFxZEt0eTVMa0FEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVJYWhDY0F6WUNEQXdUQ3lBSFFReHFJQUlnQkNBSVFRSVFwZ01oQUNBRUtBSUFJUUVDUUFKQUlBQkJGMG9OQUNBQlFRUnhEUUFnQlNBQU5nSUlEQUVMSUFRZ0FVRUVjallDQUFzTUVnc2dCMEVNYWlBQ0lBUWdDRUVDRUtZRElRQWdCQ2dDQUNFQkFrQUNRQ0FBUVFGclFRdExEUUFnQVVFRWNRMEFJQVVnQURZQ0NBd0JDeUFFSUFGQkJISTJBZ0FMREJFTElBZEJER29nQWlBRUlBaEJBeENtQXlFQUlBUW9BZ0FoQVFKQUFrQWdBRUh0QWtvTkFDQUJRUVJ4RFFBZ0JTQUFOZ0ljREFFTElBUWdBVUVFY2pZQ0FBc01FQXNnQjBFTWFpQUNJQVFnQ0VFQ0VLWURJUUVnQkNnQ0FDRUFBa0FDUUNBQlFRRnJJZ0ZCQzBzTkFDQUFRUVJ4RFFBZ0JTQUJOZ0lRREFFTElBUWdBRUVFY2pZQ0FBc01Ed3NnQjBFTWFpQUNJQVFnQ0VFQ0VLWURJUUFnQkNnQ0FDRUJBa0FDUUNBQVFUdEtEUUFnQVVFRWNRMEFJQVVnQURZQ0JBd0JDeUFFSUFGQkJISTJBZ0FMREE0TElBZEJER29oQUNNQVFSQnJJZ0VrQUNBQklBSTJBZ3dEUUFKQUlBQWdBVUVNYWhEOEFRMEFBbjhnQUNnQ0FDSUNLQUlNSWdNZ0FpZ0NFRVlFUUNBQ0lBSW9BZ0FvQWlRUkFBQU1BUXNnQXkwQUFBdkFJUUlnQ0NnQ0NDRURJQUpCQUU0RWZ5QURJQUpCL3dGeFFRSjBhaWdDQUVFQmNRVkJBQXRGRFFBZ0FCRCtBUm9NQVFzTElBQWdBVUVNYWhEOEFRUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FVRVFhaVFBREEwTElBZEJER29oQVFKQUlBQkJDR29nQUNnQ0NDZ0NDQkVBQUNJQUtBSUVJQUF0QUFzaUEwSC9BSEVnQTBHQUFYRkJCM1liUVFBZ0FDZ0NFQ0FBTFFBWElnTkIvd0J4SUFOQmdBRnhRUWQyRzJ0R0JFQWdCQ0FFS0FJQVFRUnlOZ0lBREFFTElBRWdBaUFBSUFCQkdHb2dDQ0FFUVFBUXlBSWhBaUFGS0FJSUlRRUNRQ0FBSUFKSERRQWdBVUVNUncwQUlBVkJBRFlDQ0F3QkN3SkFJQUlnQUd0QkRFY05BQ0FCUVF0S0RRQWdCU0FCUVF4cU5nSUlDd3NNREFzZ0IwSEt3Qk1vQUFBMkFBY2dCMEhEd0JNcEFBQTNBd0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCQzJvUW5BTTJBZ3dNQ3dzZ0IwSFN3Qk10QUFBNkFBUWdCMEhPd0JNb0FBQTJBZ0FnQnlBQUlBRWdBaUFESUFRZ0JTQUhJQWRCQldvUW5BTTJBZ3dNQ2dzZ0IwRU1haUFDSUFRZ0NFRUNFS1lESVFBZ0JDZ0NBQ0VCQWtBQ1FDQUFRVHhLRFFBZ0FVRUVjUTBBSUFVZ0FEWUNBQXdCQ3lBRUlBRkJCSEkyQWdBTERBa0xJQWRDcFpEcHFkTEp6cExUQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRUlhaENjQXpZQ0RBd0lDeUFIUVF4cUlBSWdCQ0FJUVFFUXBnTWhBQ0FFS0FJQUlRRUNRQUpBSUFCQkJrb05BQ0FCUVFSeERRQWdCU0FBTmdJWURBRUxJQVFnQVVFRWNqWUNBQXNNQndzZ0FDQUJJQUlnQXlBRUlBVWdBQ2dDQUNnQ0ZCRUZBQXdIQ3lBSElBQWdBU0FDSUFNZ0JDQUZJQUJCQ0dvZ0FDZ0NDQ2dDR0JFQUFDSUFLQUlBSUFBZ0FDMEFDeUlCUVlBQmNVRUhkaHNpQWlBQ0lBQW9BZ1FnQVVIL0FIRWdBVUdBQVhGQkIzWWJhaENjQXpZQ0RBd0ZDeUFGUVJScUlBZEJER29nQWlBRUlBZ1FwUU1NQkFzZ0IwRU1haUFDSUFRZ0NFRUVFS1lESVFBZ0JDMEFBRUVFY1VVRVFDQUZJQUJCN0E1ck5nSVVDd3dEQ3lBR1FTVkdEUUVMSUFRZ0JDZ0NBRUVFY2pZQ0FBd0JDeU1BUVJCcklnQWtBQ0FBSUFJMkFneEJCaUVCQWtBQ1FDQUhRUXhxSWdNZ0FFRU1haEQ4QVEwQVFRUWhBU0FJQW44Z0F5Z0NBQ0lDS0FJTUlnVWdBaWdDRUVZRVFDQUNJQUlvQWdBb0FpUVJBQUFNQVFzZ0JTMEFBQXZBUVFBZ0NDZ0NBQ2dDSkJFRUFFRWxSdzBBUVFJaEFTQURFUDRCSUFCQkRHb1EvQUZGRFFFTElBUWdCQ2dDQUNBQmNqWUNBQXNnQUVFUWFpUUFDeUFIS0FJTUN5RUFJQWRCRUdva0FDQUFDNUVGQVFOL0l3QkJFR3NpQ0NRQUlBZ2dBallDQ0NBSUlBRTJBZ3dnQ0NBREtBSWNJZ0UyQWdRZ0FTQUJLQUlFUVFGcU5nSUVJQWdvQWdRUWtBSWhDU0FJS0FJRUlnRWdBU2dDQkVFQmF5SUNOZ0lFSUFKQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTFFRQWhBU0FFUVFBMkFnQUNRQU5BSUFZZ0IwWU5BU0FCRFFFQ1FDQUlRUXhxSUFoQkNHb1FrUUlOQUFKQUlBa2dCaWdDQUVFQUlBa29BZ0FvQWpRUkJBQkJKVVlFUUNBR1FRUnFJZ0VnQjBZTkFnSi9Ba0FnQ1NBQktBSUFRUUFnQ1NnQ0FDZ0NOQkVFQUNJQ1FjVUFSZzBBUVFBaENpQUNRZjhCY1VFd1JnMEFJQVloQVNBQ0RBRUxJQVpCQ0dvZ0IwWU5BeUFDSVFvZ0NTQUdLQUlJUVFBZ0NTZ0NBQ2dDTkJFRUFBc2hBaUFJSUFBZ0NDZ0NEQ0FJS0FJSUlBTWdCQ0FGSUFJZ0NpQUFLQUlBS0FJa0VRc0FOZ0lNSUFGQkNHb2hCZ3dCQ3lBSlFRRWdCaWdDQUNBSktBSUFLQUlNRVFRQUJFQURRQUpBSUFjZ0JrRUVhaUlHUmdSQUlBY2hCZ3dCQ3lBSlFRRWdCaWdDQUNBSktBSUFLQUlNRVFRQURRRUxDd05BSUFoQkRHb2dDRUVJYWhDUkFnMENJQWxCQVFKL0lBZ29BZ3dpQVNnQ0RDSUNJQUVvQWhCR0JFQWdBU0FCS0FJQUtBSWtFUUFBREFFTElBSW9BZ0FMSUFrb0FnQW9BZ3dSQkFCRkRRSWdDRUVNYWhDVEFob01BQXNBQ3lBSkFuOGdDQ2dDRENJQktBSU1JZ0lnQVNnQ0VFWUVRQ0FCSUFFb0FnQW9BaVFSQUFBTUFRc2dBaWdDQUFzZ0NTZ0NBQ2dDSEJFREFDQUpJQVlvQWdBZ0NTZ0NBQ2dDSEJFREFFWUVRQ0FHUVFScUlRWWdDRUVNYWhDVEFob01BUXNnQkVFRU5nSUFDeUFFS0FJQUlRRU1BUXNMSUFSQkJEWUNBQXNnQ0VFTWFpQUlRUWhxRUpFQ0JFQWdCQ0FFS0FJQVFRSnlOZ0lBQ3lBSUtBSU1JUUFnQ0VFUWFpUUFJQUFMWFFFQmZ5TUFRU0JySWdZa0FDQUdRWWpDRXlrREFEY0RHQ0FHUVlEQ0V5a0RBRGNERUNBR1FmakJFeWtEQURjRENDQUdRZkRCRXlrREFEY0RBQ0FBSUFFZ0FpQURJQVFnQlNBR0lBWkJJR29pQVJDb0F5RUFJQUVrQUNBQUMxWUFJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0ZCRUFBQ0lBS0FJQUlBQWdBQzBBQ3lJQ1FZQUJjVUVIZGhzaUFTQUJJQUFvQWdRZ0FpSUFRZjhBY1NBQVFZQUJjVUVIZGh0QkFuUnFFS2dEQzRVQkFRSi9Jd0JCRUdzaUJpUUFJQVlnQVRZQ0RDQUdJQU1vQWh3aUFUWUNDQ0FCSUFFb0FnUkJBV28yQWdRZ0JpZ0NDQkNRQWlFRElBWW9BZ2dpQVNBQktBSUVRUUZySWdjMkFnUWdCMEYvUmdSQUlBRWdBU2dDQUNnQ0NCRUJBQXNnQUNBRlFSaHFJQVpCREdvZ0FpQUVJQU1RckFNZ0JpZ0NEQ0VBSUFaQkVHb2tBQ0FBQzBBQUlBSWdBeUFBUVFocUlBQW9BZ2dvQWdBUkFBQWlBQ0FBUWFnQmFpQUZJQVJCQUJEc0FpQUFheUlBUWFjQlRBUkFJQUVnQUVFTWJVRUhiellDQUFzTGhRRUJBbjhqQUVFUWF5SUdKQUFnQmlBQk5nSU1JQVlnQXlnQ0hDSUJOZ0lJSUFFZ0FTZ0NCRUVCYWpZQ0JDQUdLQUlJRUpBQ0lRTWdCaWdDQ0NJQklBRW9BZ1JCQVdzaUJ6WUNCQ0FIUVg5R0JFQWdBU0FCS0FJQUtBSUlFUUVBQ3lBQUlBVkJFR29nQmtFTWFpQUNJQVFnQXhDdUF5QUdLQUlNSVFBZ0JrRVFhaVFBSUFBTFFBQWdBaUFESUFCQkNHb2dBQ2dDQ0NnQ0JCRUFBQ0lBSUFCQm9BSnFJQVVnQkVFQUVPd0NJQUJySWdCQm53Sk1CRUFnQVNBQVFReHRRUXh2TmdJQUN3dURBUUVCZnlNQVFSQnJJZ0FrQUNBQUlBRTJBZ3dnQUNBREtBSWNJZ0UyQWdnZ0FTQUJLQUlFUVFGcU5nSUVJQUFvQWdnUWtBSWhBeUFBS0FJSUlnRWdBU2dDQkVFQmF5SUdOZ0lFSUFaQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTElBVkJGR29nQUVFTWFpQUNJQVFnQXhDd0F5QUFLQUlNSVFFZ0FFRVFhaVFBSUFFTFFnQWdBU0FDSUFNZ0JFRUVFTEVESVFFZ0F5MEFBRUVFY1VVRVFDQUFJQUZCMEE5cUlBRkI3QTVxSUFFZ0FVSGtBRWdiSUFGQnhRQklHMEhzRG1zMkFnQUxDN1VDQVFSL0l3QkJFR3NpQnlRQUlBY2dBVFlDREVFQUlRRkJCaUVHQWtBQ1FDQUFJQWRCREdvUWtRSU5BRUVFSVFZZ0EwSEFBQUovSUFBb0FnQWlCU2dDRENJSUlBVW9BaEJHQkVBZ0JTQUZLQUlBS0FJa0VRQUFEQUVMSUFnb0FnQUxJZ1VnQXlnQ0FDZ0NEQkVFQUVVTkFDQURJQVZCQUNBREtBSUFLQUkwRVFRQUlRRURRQUpBSUFGQk1Hc2hBU0FBRUpNQ0lnVWdCMEVNYWhDUkFnMEFJQVJCQWtnTkFDQURRY0FBQW44Z0JTZ0NBQ0lHS0FJTUlnVWdCaWdDRUVZRVFDQUdJQVlvQWdBb0FpUVJBQUFNQVFzZ0JTZ0NBQXNpQmlBREtBSUFLQUlNRVFRQVJRMERJQVJCQVdzaEJDQURJQVpCQUNBREtBSUFLQUkwRVFRQUlBRkJDbXhxSVFFTUFRc0xRUUloQmlBRklBZEJER29Ra1FKRkRRRUxJQUlnQWlnQ0FDQUdjallDQUFzZ0IwRVFhaVFBSUFFTHFBOEJBMzhqQUVFd2F5SUhKQUFnQnlBQk5nSXNJQVJCQURZQ0FDQUhJQU1vQWh3aUNEWUNBQ0FJSUFnb0FnUkJBV28yQWdRZ0J5Z0NBQkNRQWlFSUlBY29BZ0FpQ1NBSktBSUVRUUZySWdvMkFnUWdDa0YvUmdSQUlBa2dDU2dDQUNnQ0NCRUJBQXNDZndKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQmtIQkFHc09PUUFCRndRWEJSY0dCeGNYRndvWEZ4Y1hEZzhRRnhjWEV4VVhGeGNYRnhjWEFBRUNBd01YRndFWENCY1hDUXNYREJjTkZ3c1hGeEVTRkJZTElBQWdCVUVZYWlBSFFTeHFJQUlnQkNBSUVLd0REQmdMSUFBZ0JVRVFhaUFIUVN4cUlBSWdCQ0FJRUs0RERCY0xJQWNnQUNBQklBSWdBeUFFSUFVZ0FFRUlhaUFBS0FJSUtBSU1FUUFBSWdBb0FnQWdBQ0FBTFFBTElnRkJnQUZ4UVFkMkd5SUNJQUlnQUNnQ0JDQUJRZjhBY1NBQlFZQUJjVUVIZGh0QkFuUnFFS2dETmdJc0RCWUxJQWRCTEdvZ0FpQUVJQWhCQWhDeEF5RUFJQVFvQWdBaEFRSkFBa0FnQUVFQmEwRWVTdzBBSUFGQkJIRU5BQ0FGSUFBMkFnd01BUXNnQkNBQlFRUnlOZ0lBQ3d3VkN5QUhRZmpBRXlrREFEY0RHQ0FIUWZEQUV5a0RBRGNERUNBSFFlakFFeWtEQURjRENDQUhRZURBRXlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhDb0F6WUNMQXdVQ3lBSFFaakJFeWtEQURjREdDQUhRWkRCRXlrREFEY0RFQ0FIUVlqQkV5a0RBRGNEQ0NBSFFZREJFeWtEQURjREFDQUhJQUFnQVNBQ0lBTWdCQ0FGSUFjZ0IwRWdhaENvQXpZQ0xBd1RDeUFIUVN4cUlBSWdCQ0FJUVFJUXNRTWhBQ0FFS0FJQUlRRUNRQUpBSUFCQkYwb05BQ0FCUVFSeERRQWdCU0FBTmdJSURBRUxJQVFnQVVFRWNqWUNBQXNNRWdzZ0IwRXNhaUFDSUFRZ0NFRUNFTEVESVFBZ0JDZ0NBQ0VCQWtBQ1FDQUFRUUZyUVF0TERRQWdBVUVFY1EwQUlBVWdBRFlDQ0F3QkN5QUVJQUZCQkhJMkFnQUxEQkVMSUFkQkxHb2dBaUFFSUFoQkF4Q3hBeUVBSUFRb0FnQWhBUUpBQWtBZ0FFSHRBa29OQUNBQlFRUnhEUUFnQlNBQU5nSWNEQUVMSUFRZ0FVRUVjallDQUFzTUVBc2dCMEVzYWlBQ0lBUWdDRUVDRUxFRElRRWdCQ2dDQUNFQUFrQUNRQ0FCUVFGcklnRkJDMHNOQUNBQVFRUnhEUUFnQlNBQk5nSVFEQUVMSUFRZ0FFRUVjallDQUFzTUR3c2dCMEVzYWlBQ0lBUWdDRUVDRUxFRElRQWdCQ2dDQUNFQkFrQUNRQ0FBUVR0S0RRQWdBVUVFY1EwQUlBVWdBRFlDQkF3QkN5QUVJQUZCQkhJMkFnQUxEQTRMSUFkQkxHb2hBQ01BUVJCcklnRWtBQ0FCSUFJMkFnd0RRQUpBSUFBZ0FVRU1haENSQWcwQUlBaEJBUUovSUFBb0FnQWlBaWdDRENJRElBSW9BaEJHQkVBZ0FpQUNLQUlBS0FJa0VRQUFEQUVMSUFNb0FnQUxJQWdvQWdBb0Fnd1JCQUJGRFFBZ0FCQ1RBaG9NQVFzTElBQWdBVUVNYWhDUkFnUkFJQVFnQkNnQ0FFRUNjallDQUFzZ0FVRVFhaVFBREEwTElBZEJMR29oQVFKQUlBQkJDR29nQUNnQ0NDZ0NDQkVBQUNJQUtBSUVJQUF0QUFzaUEwSC9BSEVnQTBHQUFYRkJCM1liUVFBZ0FDZ0NFQ0FBTFFBWElnTkIvd0J4SUFOQmdBRnhRUWQyRzJ0R0JFQWdCQ0FFS0FJQVFRUnlOZ0lBREFFTElBRWdBaUFBSUFCQkdHb2dDQ0FFUVFBUTdBSWhBaUFGS0FJSUlRRUNRQ0FBSUFKSERRQWdBVUVNUncwQUlBVkJBRFlDQ0F3QkN3SkFJQUlnQUd0QkRFY05BQ0FCUVF0S0RRQWdCU0FCUVF4cU5nSUlDd3NNREFzZ0IwR2d3Uk5CTEJBcklnWWdBQ0FCSUFJZ0F5QUVJQVVnQmlBR1FTeHFFS2dETmdJc0RBc0xJQWRCNE1FVEtBSUFOZ0lRSUFkQjJNRVRLUU1BTndNSUlBZEIwTUVUS1FNQU53TUFJQWNnQUNBQklBSWdBeUFFSUFVZ0J5QUhRUlJxRUtnRE5nSXNEQW9MSUFkQkxHb2dBaUFFSUFoQkFoQ3hBeUVBSUFRb0FnQWhBUUpBQWtBZ0FFRThTZzBBSUFGQkJIRU5BQ0FGSUFBMkFnQU1BUXNnQkNBQlFRUnlOZ0lBQ3d3SkN5QUhRWWpDRXlrREFEY0RHQ0FIUVlEQ0V5a0RBRGNERUNBSFFmakJFeWtEQURjRENDQUhRZkRCRXlrREFEY0RBQ0FISUFBZ0FTQUNJQU1nQkNBRklBY2dCMEVnYWhDb0F6WUNMQXdJQ3lBSFFTeHFJQUlnQkNBSVFRRVFzUU1oQUNBRUtBSUFJUUVDUUFKQUlBQkJCa29OQUNBQlFRUnhEUUFnQlNBQU5nSVlEQUVMSUFRZ0FVRUVjallDQUFzTUJ3c2dBQ0FCSUFJZ0F5QUVJQVVnQUNnQ0FDZ0NGQkVGQUF3SEN5QUhJQUFnQVNBQ0lBTWdCQ0FGSUFCQkNHb2dBQ2dDQ0NnQ0dCRUFBQ0lBS0FJQUlBQWdBQzBBQ3lJQlFZQUJjVUVIZGhzaUFpQUNJQUFvQWdRZ0FVSC9BSEVnQVVHQUFYRkJCM1liUVFKMGFoQ29BellDTEF3RkN5QUZRUlJxSUFkQkxHb2dBaUFFSUFnUXNBTU1CQXNnQjBFc2FpQUNJQVFnQ0VFRUVMRURJUUFnQkMwQUFFRUVjVVVFUUNBRklBQkI3QTVyTmdJVUN3d0RDeUFHUVNWR0RRRUxJQVFnQkNnQ0FFRUVjallDQUF3QkN5TUFRUkJySWdBa0FDQUFJQUkyQWd4QkJpRUJBa0FDUUNBSFFTeHFJZ01nQUVFTWFoQ1JBZzBBUVFRaEFTQUlBbjhnQXlnQ0FDSUNLQUlNSWdVZ0FpZ0NFRVlFUUNBQ0lBSW9BZ0FvQWlRUkFBQU1BUXNnQlNnQ0FBdEJBQ0FJS0FJQUtBSTBFUVFBUVNWSERRQkJBaUVCSUFNUWt3SWdBRUVNYWhDUkFrVU5BUXNnQkNBRUtBSUFJQUZ5TmdJQUN5QUFRUkJxSkFBTElBY29BaXdMSVFBZ0IwRXdhaVFBSUFBTGl3SUFJd0JCZ0FGcklnSWtBQ0FDSUFKQjlBQnFOZ0lNSUFBb0FnZ2dBa0VRYWlJRElBSkJER29nQkNBRklBWVF0QU1nQWlnQ0RDRUdJd0JCRUdzaUJDUUFJd0JCSUdzaUFDUUFJd0JCRUdzaUJTUUFJQVVnQmpZQ0RDQUFJQU0yQWhnZ0FDQUZLQUlNTmdJY0lBVkJFR29rQUNBQUtBSVlJUVVnQUNnQ0hDRUdJd0JCRUdzaUF5UUFJQU1nQVRZQ0RBTkFJQVVnQmtjRVFDQURRUXhxSUFVc0FBQVFoZ0lhSUFWQkFXb2hCUXdCQ3dzZ0FDQUdOZ0lRSUFBZ0F5Z0NERFlDRkNBRFFSQnFKQUFnQUNnQ0VDRUJJQUFnQUNnQ0ZEWUNEQ0FFSUFFMkFnZ2dCQ0FBS0FJTU5nSU1JQUJCSUdva0FDQUVLQUlNSVFBZ0JFRVFhaVFBSUFKQmdBRnFKQUFnQUF0cUFRRi9Jd0JCRUdzaUJpUUFJQVpCQURvQUR5QUdJQVU2QUE0Z0JpQUVPZ0FOSUFaQkpUb0FEQ0FGQkVBZ0JpMEFEU0VFSUFZZ0JpMEFEam9BRFNBR0lBUTZBQTRMSUFJZ0FTQUNLQUlBSUFGcklBWkJER29nQXlBQUVDQWdBV28yQWdBZ0JrRVFhaVFBQzhBREFRSi9Jd0JCb0FOcklnY2tBQ0FISUFkQm9BTnFJZ00yQWd3akFFR1FBV3NpQWlRQUlBSWdBa0dFQVdvMkFod2dBQ2dDQ0NBQ1FTQnFJZ2dnQWtFY2FpQUVJQVVnQmhDMEF5QUNRZ0EzQXhBZ0FpQUlOZ0lNSUFjb0Fnd2dCMEVRYWlJRWEwRUNkU0VHSUFBb0FnZ2hBQ01BUVJCcklnVWtBQ0FGUVF4cUlBQVE2UUloQUNBRUlBSkJER29nQmlBQ1FSQnFFTG9DSVFZZ0FDZ0NBQ0lBQkVCQmpLQVVLQUlBR2lBQUJFQkJqS0FVUVp5cEZDQUFJQUJCZjBZYk5nSUFDd3NnQlVFUWFpUUFJQVpCZjBZRVFCRGVBUUFMSUFjZ0JDQUdRUUowYWpZQ0RDQUNRWkFCYWlRQUlBY29BZ3doQmlNQVFSQnJJZ0lrQUNNQVFTQnJJZ0FrQUNNQVFSQnJJZ1VrQUNBRklBWTJBZ3dnQUNBRU5nSVlJQUFnQlNnQ0REWUNIQ0FGUVJCcUpBQWdBQ2dDR0NFRklBQW9BaHdoQmlNQVFSQnJJZ1FrQUNBRUlBRTJBZ3dEUUNBRklBWkhCRUFnQkVFTWFpQUZLQUlBRUpVQ0lBVkJCR29oQlF3QkN3c2dBQ0FHTmdJUUlBQWdCQ2dDRERZQ0ZDQUVRUkJxSkFBZ0FDZ0NFQ0VCSUFBZ0FDZ0NGRFlDRENBQ0lBRTJBZ2dnQWlBQUtBSU1OZ0lNSUFCQklHb2tBQ0FDS0FJTUlRQWdBa0VRYWlRQUlBTWtBQ0FBQ3dVQVFmOEFDeEFBSUFCQ0FEY0NBQ0FBUVFBMkFnZ0xKd0FqQUVFUWF5SUJKQUFnQUVFQk9nQUxJQUJCQVVFdEVKc0NRUUE2QUFFZ0FVRVFhaVFBQ3d3QUlBQkJnb2FBSURZQUFBc0lBRUgvLy8vL0J3c01BQ0FBUVFGQkxSQ1VBeG9MTmdBZ0FTMEFDMEdBQVhGQkIzWkZCRUFnQUNBQktRSUFOd0lBSUFBZ0FTZ0NDRFlDQ0E4TElBQWdBU2dDQUNBQktBSUVFSUFCQy9NRUFRSi9Jd0JCa0FKcklnQWtBQ0FBSUFJMkFvZ0NJQUFnQVRZQ2pBSWdBRUhXQURZQ0VDQUFRWmdCYWlJSElBQkJvQUZxTmdJQUlBY2dBQ2dDRURZQ0JDQUFRWkFCYWlJSUlBUW9BaHdpQVRZQ0FDQUJJQUVvQWdSQkFXbzJBZ1FnQUNnQ2tBRVErd0VoQVNBQVFRQTZBSThCQWtBZ0FFR01BbW9nQWlBRElBZ2dCQ2dDQkNBRklBQkJqd0ZxSUFFZ0J5QUFRWlFCYWlBQVFZUUNhaEMrQTBVTkFDQUFRZFhxRWlnQUFEWUFod0VnQUVITzZoSXBBQUEzQTRBQklBRWdBRUdBQVdvZ0FFR0tBV29nQUVIMkFHb2dBU2dDQUNnQ0lCRUdBQm9nQUVIVUFEWUNFQ0FBUVFocUlnTkJBRFlDQUNBRElBQkJFR29pQkNnQ0FEWUNCQUpBSUFBb0FwUUJJZ0VnQnlnQ0FHc2lBa0hqQUU0RVFDQUNRUUpxRURNaEJDQURLQUlBSVFJZ0F5QUVOZ0lBSUFJRVFDQUNJQU1vQWdRUkFRQUxJQU1vQWdBaUJFVU5BUXNnQUMwQWp3RUVRQ0FFUVMwNkFBQWdCRUVCYWlFRUN5QUhLQUlBSVFJRFFDQUJJQUpOQkVBQ1FDQUVRUUE2QUFBZ0FDQUdOZ0lBSUFCQkVHcEJnY0FBSUFBUWFVRUJSdzBBSUFNb0FnQWhBU0FEUVFBMkFnQWdBUVJBSUFFZ0F5Z0NCQkVCQUFzTUJBc0ZJQVFnQUVIMkFHb2lBU0FCUVFwcUlBSXRBQUFRMGdJZ0FHc2dBR290QUFvNkFBQWdCRUVCYWlFRUlBSkJBV29oQWlBQUtBS1VBU0VCREFFTEN4RGVBUUFMRU40QkFBc2dBRUdNQW1vZ0FFR0lBbW9RL0FFRVFDQUZJQVVvQWdCQkFuSTJBZ0FMSUFBb0Fvd0NJUUlnQUNnQ2tBRWlBU0FCS0FJRVFRRnJJZ00yQWdRZ0EwRi9SZ1JBSUFFZ0FTZ0NBQ2dDQ0JFQkFBc2dCeWdDQUNFQklBZEJBRFlDQUNBQkJFQWdBU0FIS0FJRUVRRUFDeUFBUVpBQ2FpUUFJQUlMaGhnQkQzOGpBRUdRQkdzaUN5UUFJQXNnQ2pZQ2lBUWdDeUFCTmdLTUJBSkFJQUFnQzBHTUJHb1EvQUVFUUNBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFFTElBdEIxZ0EyQWt3Z0MwSG9BR29pQVNBTFFmQUFhallDQUNBQklBdEJ6QUJxSWhFb0FnQTJBZ1FnQ3lBQkloTW9BZ0FpRGpZQ1pDQUxJQTVCa0FOcU5nSmdJQkZDQURjQ0FDQVJRUUEyQWdnZ0MwRkFheUlQUWdBM0FnQWdEMEVBTmdJSUlBdEJOR29pREVJQU53SUFJQXhCQURZQ0NDQUxRU2hxSWcxQ0FEY0NBQ0FOUVFBMkFnZ2dDMEVjYWlJU1FnQTNBZ0FnRWtFQU5nSUlJQU1vQWdBaEFTTUFRUkJySWdNa0FDQUxBbjhnQWdSQUlBTkJCR29pQWlBQkVNSURJZ0VnQVNnQ0FDZ0NMQkVDQUNBTElBTW9BZ1EyQUZ3Z0FpQUJJQUVvQWdBb0FpQVJBZ0FnRFNBQ0VKWUNJQUlReVFJYUlBSWdBU0FCS0FJQUtBSWNFUUlBSUF3Z0FoQ1dBaUFDRU1rQ0dpQUxJQUVnQVNnQ0FDZ0NEQkVBQURvQVd5QUxJQUVnQVNnQ0FDZ0NFQkVBQURvQVdpQUNJQUVnQVNnQ0FDZ0NGQkVDQUNBUklBSVFsZ0lnQWhESkFob2dBaUFCSUFFb0FnQW9BaGdSQWdBZ0R5QUNFSllDSUFJUXlRSWFJQUVnQVNnQ0FDZ0NKQkVBQUF3QkN5QURRUVJxSWdJZ0FSRERBeUlCSUFFb0FnQW9BaXdSQWdBZ0N5QURLQUlFTmdCY0lBSWdBU0FCS0FJQUtBSWdFUUlBSUEwZ0FoQ1dBaUFDRU1rQ0dpQUNJQUVnQVNnQ0FDZ0NIQkVDQUNBTUlBSVFsZ0lnQWhESkFob2dDeUFCSUFFb0FnQW9BZ3dSQUFBNkFGc2dDeUFCSUFFb0FnQW9BaEFSQUFBNkFGb2dBaUFCSUFFb0FnQW9BaFFSQWdBZ0VTQUNFSllDSUFJUXlRSWFJQUlnQVNBQktBSUFLQUlZRVFJQUlBOGdBaENXQWlBQ0VNa0NHaUFCSUFFb0FnQW9BaVFSQUFBTE5nSVlJQU5CRUdva0FDQUpJQWdvQWdBMkFnQWdCRUdBQkhFaEZpQUxLQUlZSVJRZ0N5MEFYeUVYSUFzdEFGc2hHQ0FMTFFCYUlSa2dEaUVFUVFBaEFnTkFBa0FDUUFKQUFrQWdBa0VFUmcwQUlBQWdDMEdNQkdvUS9BRU5BRUVBSVFFQ1FBSkFBa0FDUUFKQUFrQUNRQ0FMUWR3QWFpQUNhaXdBQUE0RkFRQUVBd1VKQ3lBQ1FRTkdEUWdDZnlBQUtBSUFJZ0VvQWd3aUF5QUJLQUlRUmdSQUlBRWdBU2dDQUNnQ0pCRUFBQXdCQ3lBRExRQUFDOEFoQVNBSEtBSUlJUU1nQVVFQVRnUi9JQU1nQVVIL0FYRkJBblJxS0FJQVFRRnhCVUVBQ3dSQUlBdEJFR29nQUJDL0F5QVNJQXNzQUJBUWtBRU1BZ3NnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdKQ3lBQ1FRTkdEUWNMQTBBZ0FDQUxRWXdFYWhEOEFRMEhBbjhnQUNnQ0FDSUJLQUlNSWdNZ0FTZ0NFRVlFUUNBQklBRW9BZ0FvQWlRUkFBQU1BUXNnQXkwQUFBdkFJUUVnQnlnQ0NDRURJQUZCQUU0RWZ5QURJQUZCL3dGeFFRSjBhaWdDQUVFQmNRVkJBQXRGRFFjZ0MwRVFhaUFBRUw4RElCSWdDeXdBRUJDUUFRd0FDd0FMQWtBZ0RDZ0NCQ0FNTFFBTElnRkIvd0J4SUFGQmdBRnhRUWQyRzBVTkFBSi9JQUFvQWdBaUFTZ0NEQ0lESUFFb0FoQkdCRUFnQVNBQktBSUFLQUlrRVFBQURBRUxJQU10QUFBTHdFSC9BWEVnRENnQ0FDQU1JQXd0QUF0QmdBRnhRUWQyR3kwQUFFY05BQ0FBRVA0QkdpQUdRUUE2QUFBZ0RDQVFJQXdvQWdRZ0RDMEFDeUlCUWY4QWNTQUJRWUFCY1VFSGRodEJBVXNiSVJBTUJnc2dEU2dDQkNJS0lBMHRBQXNpQVVIL0FIRWdBVUdBQVhGQkIzWWJCRUFDZnlBQUtBSUFJZ0VvQWd3aUF5QUJLQUlRUmdSQUlBRWdBU2dDQUNnQ0pCRUFBQXdCQ3lBRExRQUFDOEJCL3dGeElBMG9BZ0FnRFNBTkxRQUxRWUFCY1VFSGRoc3RBQUJHRFFNZ0RTZ0NCQ0VLSUEwdEFBc2hBUXNDUUNBTUtBSUVJQXd0QUFzaUEwSC9BSEVnQTBHQUFYRkJCM1liSWdORkRRQWdDaUFCUWY4QWNTQUJRWUFCY1VFSGRodEZEUUFnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdIQ3lBRElBb2dBVUgvQUhFZ0FVR0FBWEZCQjNZYklnRnlSUTBGSUFZZ0FVVTZBQUFNQlFzQ1FDQUNRUUpKRFFBZ0VBMEFJQllOQUNBQ1FRSkdJQmRCQUVkeERRQkJBQ0VRREFVTElBc2dEeEQrQWpZQ0VBSkFJQUpGRFFBZ0FpQUxhaTBBVzBFQlN3MEFBMEFDUUNBUEVQOENJQXNvQWhBaUFVWU5BQ0FIS0FJSUlRTWdBU3dBQUNJQlFRQk9CSDhnQXlBQlFmOEJjVUVDZEdvb0FnQkJBWEVGUVFBTFJRMEFJQXNnQ3lnQ0VFRUJhallDRUF3QkN3c2dEeEQrQWlFQklBc29BaEFnQVdzaUFTQVNLQUlFSUJJdEFBc2lBMEgvQUhFZ0EwR0FBWEZCQjNZYlRRUkFJQklRL3dKQkFDQUJheERFQXlFS0lCSVEvd0loQXlBUEVQNENJUlVqQUVFUWF5SUJKQUFnQVNBVk5nSUlJQUVnQ2pZQ0RBTkFBa0FnQXlBS1J5SVZSUTBBSUFvdEFBQWdBU2dDQ0MwQUFFY05BQ0FCSUFFb0FneEJBV28yQWd3Z0FTQUJLQUlJUVFGcU5nSUlJQUVvQWd3aENnd0JDd3NnQVVFUWFpUUFJQlZGRFFFTElBc2dEeEQrQWpZQ0RDQUxJQXNvQWd3MkFoQUxJQXNnQ3lnQ0VEWUNEQU5BQWtBZ0R4RC9BaUFMS0FJTVJnMEFJQUFnQzBHTUJHb1EvQUVOQUFKL0lBQW9BZ0FpQVNnQ0RDSURJQUVvQWhCR0JFQWdBU0FCS0FJQUtBSWtFUUFBREFFTElBTXRBQUFMd0VIL0FYRWdDeWdDREMwQUFFY05BQ0FBRVA0QkdpQUxJQXNvQWd4QkFXbzJBZ3dNQVFzTElCWkZEUVFnRHhEL0FpQUxLQUlNUmcwRUlBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUJRc0RRQUpBSUFBZ0MwR01CR29RL0FFTkFBSi9JQUFvQWdBaUF5Z0NEQ0lLSUFNb0FoQkdCRUFnQXlBREtBSUFLQUlrRVFBQURBRUxJQW90QUFBTHdDRUtBbjhnQnlnQ0NDRURJQXBCQUU0RWZ5QURJQXBCL3dGeFFRSjBhaWdDQUVIQUFIRUZRUUFMQkVBZ0NTZ0NBQ0lESUFzb0FvZ0VSZ1JBSUFnZ0NTQUxRWWdFYWhEQUF5QUpLQUlBSVFNTElBa2dBMEVCYWpZQ0FDQURJQW82QUFBZ0FVRUJhZ3dCQ3lBUktBSUVJQkV0QUFzaUEwSC9BSEVnQTBHQUFYRkJCM1liUlEwQklBRkZEUUVnQ2tIL0FYRWdHVWNOQVNBTEtBSmdJQVJHQkVBZ0V5QUxRZVFBYWlBTFFlQUFhaERCQXlBTEtBSmtJUVFMSUFzZ0JFRUVhaUlPTmdKa0lBUWdBVFlDQUNBT0lRUkJBQXNoQVNBQUVQNEJHZ3dCQ3dzQ1FDQVRLQUlBSUE1R0RRQWdBVVVOQUNBTEtBSmdJQTVHQkVBZ0V5QUxRZVFBYWlBTFFlQUFhaERCQXlBTEtBSmtJUTRMSUFzZ0RrRUVhaUlETmdKa0lBNGdBVFlDQUNBRElRNExJQlJCQUV3TkFnSkFJQUFnQzBHTUJHb1EvQUZGQkVBQ2Z5QUFLQUlBSWdFb0Fnd2lBeUFCS0FJUVJnUkFJQUVnQVNnQ0FDZ0NKQkVBQUF3QkN5QURMUUFBQzhCQi93RnhJQmhHRFFFTElBVWdCU2dDQUVFRWNqWUNBRUVBSVFBTUJRc0RRQ0FBRVA0QklRRWdGRUVBVEFSQVFRQWhGQXdFQ3dKQUlBRWdDMEdNQkdvUS9BRkZCRUFDZnlBQktBSUFJZ01vQWd3aUJDQURLQUlRUmdSQUlBTWdBeWdDQUNnQ0pCRUFBQXdCQ3lBRUxRQUFDOEFoQXlBSEtBSUlJUVFnQTBFQVRnUi9JQVFnQTBIL0FYRkJBblJxS0FJQVFjQUFjUVZCQUFzTkFRc2dCU0FGS0FJQVFRUnlOZ0lBUVFBaEFBd0dDeUFKS0FJQUlBc29Bb2dFUmdSQUlBZ2dDU0FMUVlnRWFoREFBd3NDZnlBQktBSUFJZ0VvQWd3aUF5QUJLQUlRUmdSQUlBRWdBU2dDQUNnQ0pCRUFBQXdCQ3lBRExRQUFDOEFoQVNBSklBa29BZ0FpQTBFQmFqWUNBQ0FESUFFNkFBQWdGRUVCYXlFVURBQUxBQXNnQUJEK0FSb2dCa0VCT2dBQUlBMGdFQ0FOS0FJRUlBMHRBQXNpQVVIL0FIRWdBVUdBQVhGQkIzWWJRUUZMR3lFUURBSUxJQXNnRkRZQ0dBSkFJQkJGRFFCQkFTRUtBMEFnQ2lBUUtBSUVJQkF0QUFzaUFVSC9BSEVnQVVHQUFYRkJCM1liVHcwQkFrQWdBQ0FMUVl3RWFoRDhBVVVFUUFKL0lBQW9BZ0FpQVNnQ0RDSUNJQUVvQWhCR0JFQWdBU0FCS0FJQUtBSWtFUUFBREFFTElBSXRBQUFMd0VIL0FYRWdDaUFRS0FJQUlCQWdFQzBBQzBHQUFYRkJCM1liYWkwQUFFWU5BUXNnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdGQ3lBQUVQNEJHaUFLUVFGcUlRb01BQXNBQzBFQklRQWdFeWdDQUNJQklBNUdEUUpCQUNFQUlBdEJBRFlDRUNBUklBRWdEaUFMUVJCcUVORUNJQXNvQWhBRVFDQUZJQVVvQWdCQkJISTJBZ0FNQXd0QkFTRUFEQUlMSUE0aEJDQUpLQUlBSUFnb0FnQkhEUUFnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdCQ3lBQ1FRRnFJUUlNQVFzTElCSVF5UUlhSUEwUXlRSWFJQXdReVFJYUlBOFF5UUlhSUJFUXlRSWFJQk1vQWdBaEFTQVRRUUEyQWdBZ0FRUkFJQUVnRXlnQ0JCRUJBQXNMSUF0QmtBUnFKQUFnQUFzZ0FRRi9JQUVvQWdBUS93SEFJUUlnQUNBQktBSUFOZ0lFSUFBZ0Fqb0FBQXZWQVFFR2Z5TUFRUkJySWdRa0FDQUJLQUlBSVFoQkFDQUFLQUlBSWdjZ0FDZ0NCRUhXQUVZaUJSdEJmMEVCSUFJb0FnQWdCMnNpQTBFQmRDSUdJQVpCQVUwYklBTkIvLy8vL3dkUEd5SUdFRFVpQXdSQUlBVkZCRUFnQUNnQ0FCb2dBRUVBTmdJQUN5QUVRZFFBTmdJRUlBQWdCRUVJYWlJQUlBTTJBZ0FnQUNBRUtBSUVOZ0lFSUFBUXhRTWhCU0FBS0FJQUlRTWdBRUVBTmdJQUlBTUVRQ0FESUFBb0FnUVJBUUFMSUFFZ0JTZ0NBQ0FJSUFkcmFqWUNBQ0FDSUFVb0FnQWdCbW8yQWdBZ0JFRVFhaVFBRHdzUTNnRUFDOWdCQVFaL0l3QkJFR3NpQkNRQUlBRW9BZ0FoQ0VFQUlBQW9BZ0FpQmlBQUtBSUVRZFlBUmlJRkcwRi9RUVFnQWlnQ0FDSURJQVpySWdkQkFYUWdBeUFHUmhzZ0IwSC8vLy8vQjA4YklnY1FOU0lEQkVBZ0JVVUVRQ0FBS0FJQUdpQUFRUUEyQWdBTElBUkIxQUEyQWdRZ0FDQUVRUWhxSWdBZ0F6WUNBQ0FBSUFRb0FnUTJBZ1FnQUJERkF5RUZJQUFvQWdBaEF5QUFRUUEyQWdBZ0F3UkFJQU1nQUNnQ0JCRUJBQXNnQVNBRktBSUFJQWdnQm10cU5nSUFJQUlnQlNnQ0FDQUhRWHh4YWpZQ0FDQUVRUkJxSkFBUEN4RGVBUUFMQ2dBZ0FFR1FxaFFRY2dzS0FDQUFRWWlxRkJCeUN6WUJBWDhqQUVFUWF5SUNKQUFnQWlBQU5nSU1JQUpCREdvaUFDQUFLQUlBSUFGcU5nSUFJQUFvQWdBaEFDQUNRUkJxSkFBZ0FBcytBUUovSUFFb0FnQWhBeUFCUVFBMkFnQWdBQ2dDQUNFQ0lBQWdBellDQUNBQ0JFQWdBaUFBS0FJRUVRRUFDeUFBSUFGQkJHb29BZ0EyQWdRZ0FBdmVCd0VGZnlNQVFaQUJheUlBSkFBZ0FDQUNOZ0tJQVNBQUlBRTJBb3dCSUFCQjFnQTJBaFFnQUVFWWFpSUJJQUJCSUdvMkFnQWdBU0FBUVJScUlnZ29BZ0EyQWdRZ0FFRVFhaUlKSUFRb0Fod2lCellDQUNBSElBY29BZ1JCQVdvMkFnUWdBQ2dDRUJEN0FTRUhJQUJCQURvQUR5QUFRWXdCYWlBQ0lBTWdDU0FFS0FJRUlBVWdBRUVQYWlBSElBRWdDQ0FBUVlRQmFoQytBd1JBQWtBZ0JpMEFDMEdBQVhGQkIzWUVRQ0FHS0FJQVFRQTZBQUFnQmtFQU5nSUVEQUVMSUFaQkFEb0FBQ0FHUVFBNkFBc0xJQUF0QUE4RVFDQUdJQWRCTFNBSEtBSUFLQUljRVFNQUVKQUJDeUFIUVRBZ0J5Z0NBQ2dDSEJFREFDRURJQUFvQWhRaUIwRUJheUVFSUFFb0FnQWhBaUFEUWY4QmNTRURBMEFDUUNBQ0lBUlBEUUFnQWkwQUFDQURSdzBBSUFKQkFXb2hBZ3dCQ3dzakFFRVFheUlKSkFBZ0JpZ0NCQ0FHTFFBTElnUWlBMEgvQUhFZ0EwR0FBWEZCQjNZYklRTWdCRUdBQVhGQkIzWUVmeUFHS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NoQkFKQUlBY2dBbXNpQ0VVTkFDQUNJQVlvQWdBZ0JpQUdMUUFMUVlBQmNVRUhkaHNpQ2s4RWZ5QUtJQVlvQWdRZ0JpMEFDeUlMUWY4QWNTQUxRWUFCY1VFSGRodHFJQUpQQlVFQUMwVUVRQ0FJSUFRZ0EydExCRUFnQmlBRUlBTWdCR3NnQ0dvZ0F5QURFTWNEQ3lBRElBWW9BZ0FnQmlBR0xRQUxRWUFCY1VFSGRodHFJUVFEUUNBQ0lBZEhCRUFnQkNBQ0xRQUFPZ0FBSUFKQkFXb2hBaUFFUVFGcUlRUU1BUXNMSUFSQkFEb0FBQ0FESUFocUlRSUNRQ0FHTFFBTFFZQUJjVUVIZGdSQUlBWWdBallDQkF3QkN5QUdJQUk2QUFzTERBRUxJQWxCQkdvZ0FpQUhFSmNDSWdRaUFpZ0NBQ0FDSUFJdEFBdEJnQUZ4UVFkMkd5RUhJQVFvQWdRZ0JDMEFDeUlDUWY4QWNTQUNRWUFCY1VFSGRoc2hBZ0pBSUFJZ0JpMEFDMEdBQVhGQkIzWUVmeUFHS0FJSVFmLy8vLzhIY1VFQmF3VkJDZ3NpQ0NBR0tBSUVJQVl0QUFzaUEwSC9BSEVnQTBHQUFYRkJCM1liSWdOclRRUkFJQUpGRFFFZ0JpZ0NBQ0FHSUFZdEFBdEJnQUZ4UVFkMkd5SUlJQU5xSUFjZ0FoRHFBUm9nQWlBRGFpRUNBa0FnQmkwQUMwR0FBWEZCQjNZRVFDQUdJQUkyQWdRTUFRc2dCaUFDT2dBTEN5QUNJQWhxUVFBNkFBQU1BUXNnQmlBSUlBSWdDR3NnQTJvZ0F5QURRUUFnQWlBSEVNUUVDeUFFRU1rQ0dnc2dDVUVRYWlRQUN5QUFRWXdCYWlBQVFZZ0JhaEQ4QVFSQUlBVWdCU2dDQUVFQ2NqWUNBQXNnQUNnQ2pBRWhBeUFBS0FJUUlnSWdBaWdDQkVFQmF5SUVOZ0lFSUFSQmYwWUVRQ0FDSUFJb0FnQW9BZ2dSQVFBTElBRW9BZ0FoQWlBQlFRQTJBZ0FnQWdSQUlBSWdBU2dDQkJFQkFBc2dBRUdRQVdva0FDQURDNE1DQVFOL0l3QkJFR3NpQlNRQUlBSkI3Ly8vL3djZ0FXdE5CRUFnQUNnQ0FDQUFJQUF0QUF0QmdBRnhRUWQyR3lFR0lBVkJCR29nQVVIbS8vLy9BMDBFZnlBRklBRkJBWFEyQWd3Z0JTQUJJQUpxTmdJRUlBVkJER29pQWlBRlFRUnFJZ2NnQnlnQ0FDQUNLQUlBU1Jzb0FnQWlBa0VMVHdSL0lBSkJFR3BCY0hFaUFpQUNRUUZySWdJZ0FrRUxSaHNGUVFvTFFRRnFCVUh2Ly8vL0J3c1FtQUlnQlNnQ0JDRUNJQVFFUUNBQ0lBWWdCQkRxQVJvTElBTWdCRWNFUUNBQ0lBUnFJQVFnQm1vZ0F5QUVheERxQVJvTElBRkJDa2NFUUNBR0VEUUxJQUFnQWpZQ0FDQUFJQVVvQWdoQmdJQ0FnSGh5TmdJSUlBVkJFR29rQUE4TEVGVUFDLzBFQVFKL0l3QkI4QVJySWdBa0FDQUFJQUkyQXVnRUlBQWdBVFlDN0FRZ0FFSFdBRFlDRUNBQVFjZ0JhaUlISUFCQjBBRnFOZ0lBSUFjZ0FDZ0NFRFlDQkNBQVFjQUJhaUlJSUFRb0Fod2lBVFlDQUNBQklBRW9BZ1JCQVdvMkFnUWdBQ2dDd0FFUWtBSWhBU0FBUVFBNkFMOEJBa0FnQUVIc0JHb2dBaUFESUFnZ0JDZ0NCQ0FGSUFCQnZ3RnFJQUVnQnlBQVFjUUJhaUFBUWVBRWFoREpBMFVOQUNBQVFkWHFFaWdBQURZQXR3RWdBRUhPNmhJcEFBQTNBN0FCSUFFZ0FFR3dBV29nQUVHNkFXb2dBRUdBQVdvZ0FTZ0NBQ2dDTUJFR0FCb2dBRUhVQURZQ0VDQUFRUWhxSWdOQkFEWUNBQ0FESUFCQkVHb2lCQ2dDQURZQ0JBSkFJQUFvQXNRQklnRWdCeWdDQUdzaUFrR0pBMDRFUUNBQ1FRSjFRUUpxRURNaEJDQURLQUlBSVFJZ0F5QUVOZ0lBSUFJRVFDQUNJQU1vQWdRUkFRQUxJQU1vQWdBaUJFVU5BUXNnQUMwQXZ3RUVRQ0FFUVMwNkFBQWdCRUVCYWlFRUN5QUhLQUlBSVFJRFFDQUJJQUpOQkVBQ1FDQUVRUUE2QUFBZ0FDQUdOZ0lBSUFCQkVHcEJnY0FBSUFBUWFVRUJSdzBBSUFNb0FnQWhBU0FEUVFBMkFnQWdBUVJBSUFFZ0F5Z0NCQkVCQUFzTUJBc0ZJQVFnQUVHd0FXb2dBRUdBQVdvaUFTQUJRU2hxSUFJb0FnQVE4Z0lnQVd0QkFuVnFMUUFBT2dBQUlBUkJBV29oQkNBQ1FRUnFJUUlnQUNnQ3hBRWhBUXdCQ3dzUTNnRUFDeERlQVFBTElBQkI3QVJxSUFCQjZBUnFFSkVDQkVBZ0JTQUZLQUlBUVFKeU5nSUFDeUFBS0FMc0JDRUNJQUFvQXNBQklnRWdBU2dDQkVFQmF5SUROZ0lFSUFOQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTElBY29BZ0FoQVNBSFFRQTJBZ0FnQVFSQUlBRWdCeWdDQkJFQkFBc2dBRUh3Qkdva0FDQUNDL1lXQVF4L0l3QkJrQVJySWdza0FDQUxJQW8yQW9nRUlBc2dBVFlDakFRQ1FDQUFJQXRCakFScUVKRUNCRUFnQlNBRktBSUFRUVJ5TmdJQVFRQWhBQXdCQ3lBTFFkWUFOZ0pJSUF0QjZBQnFJZ0VnQzBId0FHbzJBZ0FnQVNBTFFjZ0FhaUlSS0FJQU5nSUVJQXNnQVNJVUtBSUFJZ0UyQW1RZ0N5QUJRWkFEYWpZQ1lDQVJRZ0EzQWdBZ0VVRUFOZ0lJSUF0QlBHb2lEa0lBTndJQUlBNUJBRFlDQ0NBTFFUQnFJZ3hDQURjQ0FDQU1RUUEyQWdnZ0MwRWthaUlOUWdBM0FnQWdEVUVBTmdJSUlBdEJHR29pRWtJQU53SUFJQkpCQURZQ0NDQURLQUlBSVJBakFFRVFheUlLSkFBZ0N3Si9JQUlFUUNBS1FRUnFJZ01nRUJETUF5SUNJQUlvQWdBb0Fpd1JBZ0FnQ3lBS0tBSUVOZ0JjSUFNZ0FpQUNLQUlBS0FJZ0VRSUFJQTBnQXhETkF5QURFTzBDR2lBRElBSWdBaWdDQUNnQ0hCRUNBQ0FNSUFNUXpRTWdBeER0QWhvZ0N5QUNJQUlvQWdBb0Fnd1JBQUEyQWxnZ0N5QUNJQUlvQWdBb0FoQVJBQUEyQWxRZ0F5QUNJQUlvQWdBb0FoUVJBZ0FnRVNBREVKWUNJQU1ReVFJYUlBTWdBaUFDS0FJQUtBSVlFUUlBSUE0Z0F4RE5BeUFERU8wQ0dpQUNJQUlvQWdBb0FpUVJBQUFNQVFzZ0NrRUVhaUlESUJBUXpnTWlBaUFDS0FJQUtBSXNFUUlBSUFzZ0NpZ0NCRFlBWENBRElBSWdBaWdDQUNnQ0lCRUNBQ0FOSUFNUXpRTWdBeER0QWhvZ0F5QUNJQUlvQWdBb0Fod1JBZ0FnRENBREVNMERJQU1RN1FJYUlBc2dBaUFDS0FJQUtBSU1FUUFBTmdKWUlBc2dBaUFDS0FJQUtBSVFFUUFBTmdKVUlBTWdBaUFDS0FJQUtBSVVFUUlBSUJFZ0F4Q1dBaUFERU1rQ0dpQURJQUlnQWlnQ0FDZ0NHQkVDQUNBT0lBTVF6UU1nQXhEdEFob2dBaUFDS0FJQUtBSWtFUUFBQ3pZQ0ZDQUtRUkJxSkFBZ0NTQUlLQUlBTmdJQUlBUkJnQVJ4SVJVZ0N5Z0NGQ0VRUVFBaEFnTkFBa0FDUUFKQUFrQUNRQ0FDUVFSR0RRQWdBQ0FMUVl3RWFoQ1JBZzBBQWtBQ1FBSkFBa0FDUUFKQUFrQWdDMEhjQUdvZ0Ftb3NBQUFPQlFFQUJBTUZDZ3NnQWtFRFJnMEpJQWRCQVFKL0lBQW9BZ0FpQXlnQ0RDSUVJQU1vQWhCR0JFQWdBeUFES0FJQUtBSWtFUUFBREFFTElBUW9BZ0FMSUFjb0FnQW9BZ3dSQkFBRVFDQUxRUXhxSUFBUXlnTWdFaUFMS0FJTUVNc0REQUlMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQ2dzZ0FrRURSZzBJQ3dOQUlBQWdDMEdNQkdvUWtRSU5DQ0FIUVFFQ2Z5QUFLQUlBSWdNb0Fnd2lCQ0FES0FJUVJnUkFJQU1nQXlnQ0FDZ0NKQkVBQUF3QkN5QUVLQUlBQ3lBSEtBSUFLQUlNRVFRQVJRMElJQXRCREdvZ0FCREtBeUFTSUFzb0Fnd1F5d01NQUFzQUN3SkFJQXdvQWdRZ0RDMEFDeUlEUWY4QWNTQURRWUFCY1VFSGRodEZEUUFDZnlBQUtBSUFJZ01vQWd3aUJDQURLQUlRUmdSQUlBTWdBeWdDQUNnQ0pCRUFBQXdCQ3lBRUtBSUFDeUFNS0FJQUlBd2dEQzBBQzBHQUFYRkJCM1liS0FJQVJ3MEFJQUFRa3dJYUlBWkJBRG9BQUNBTUlBOGdEQ2dDQkNBTUxRQUxJZ05CL3dCeElBTkJnQUZ4UVFkMkcwRUJTeHNoRHd3SEN5QU5LQUlFSWdvZ0RTMEFDeUlFSWdOQi93QnhJQU5CZ0FGeFFRZDJHd1JBQW44Z0FDZ0NBQ0lES0FJTUlnUWdBeWdDRUVZRVFDQURJQU1vQWdBb0FpUVJBQUFNQVFzZ0JDZ0NBQXNnRFNnQ0FDQU5JQTB0QUF0QmdBRnhRUWQyR3lnQ0FFWU5BeUFOS0FJRUlRb2dEUzBBQ3lFRUN3SkFJQXdvQWdRZ0RDMEFDeUlEUWY4QWNTQURRWUFCY1VFSGRoc2lBMFVOQUNBS0lBUkIvd0J4SUFSQmdBRnhRUWQyRzBVTkFDQUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBZ0xJQU1nQ2lBRVFmOEFjU0FFUVlBQmNVRUhkaHNpQkhKRkRRWWdCaUFFUlRvQUFBd0dDd0pBSUFKQkFra05BQ0FQRFFBZ0ZRMEFJQUpCQWtZZ0N5MEFYMEVBUjNFTkFFRUFJUThNQmdzZ0N5QU9FUDRDTmdJTUFrQWdBa1VOQUNBQ0lBdHFMUUJiUVFGTERRQURRQUpBSUE0UWtBTWdDeWdDRENJRFJnMEFJQWRCQVNBREtBSUFJQWNvQWdBb0Fnd1JCQUJGRFFBZ0N5QUxLQUlNUVFScU5nSU1EQUVMQ3lBT0VQNENJUU1nQ3lnQ0RDQURhMEVDZFNJRElCSW9BZ1FnRWkwQUN5SUVRZjhBY1NBRVFZQUJjVUVIZGh0TkJFQWdFaENRQTBFQUlBTnJFTThESVFvZ0VoQ1FBeUVFSUE0US9nSWhFeU1BUVJCcklnTWtBQ0FESUJNMkFnZ2dBeUFLTmdJTUEwQUNRQ0FFSUFwSEloTkZEUUFnQ2lnQ0FDQURLQUlJS0FJQVJ3MEFJQU1nQXlnQ0RFRUVhallDRENBRElBTW9BZ2hCQkdvMkFnZ2dBeWdDRENFS0RBRUxDeUFEUVJCcUpBQWdFMFVOQVFzZ0N5QU9FUDRDTmdJSUlBc2dDeWdDQ0RZQ0RBc2dDeUFMS0FJTU5nSUlBMEFDUUNBT0VKQURJQXNvQWdoR0RRQWdBQ0FMUVl3RWFoQ1JBZzBBQW44Z0FDZ0NBQ0lES0FJTUlnUWdBeWdDRUVZRVFDQURJQU1vQWdBb0FpUVJBQUFNQVFzZ0JDZ0NBQXNnQ3lnQ0NDZ0NBRWNOQUNBQUVKTUNHaUFMSUFzb0FnaEJCR28yQWdnTUFRc0xJQlZGRFFVZ0RoQ1FBeUFMS0FJSVJnMEZJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1CZ3RCQUNFS0lBc29BbFFoRmlBQklRUURRQUpBSUFBZ0MwR01CR29Ra1FJTkFBSi9JQWRCd0FBQ2Z5QUFLQUlBSWdNb0Fnd2lFeUFES0FJUVJnUkFJQU1nQXlnQ0FDZ0NKQkVBQUF3QkN5QVRLQUlBQ3lJVElBY29BZ0FvQWd3UkJBQUVRQ0FKS0FJQUlnTWdDeWdDaUFSR0JFQWdDQ0FKSUF0QmlBUnFFTUVESUFrb0FnQWhBd3NnQ1NBRFFRUnFOZ0lBSUFNZ0V6WUNBQ0FLUVFGcURBRUxJQkVvQWdRZ0VTMEFDeUlEUWY4QWNTQURRWUFCY1VFSGRodEZEUUVnQ2tVTkFTQVRJQlpIRFFFZ0N5Z0NZQ0FCUmdSQUlCUWdDMEhrQUdvZ0MwSGdBR29Rd1FNZ0N5Z0NaQ0VCQ3lBTElBRkJCR29pQkRZQ1pDQUJJQW8yQWdBZ0JDRUJRUUFMSVFvZ0FCQ1RBaG9NQVFzTElCUW9BZ0FnQkVZTkFpQUtSUTBDSUFzb0FtQWdCRVlFUUNBVUlBdEI1QUJxSUF0QjRBQnFFTUVESUFzb0FtUWhCQXNnQ3lBRVFRUnFJZ0UyQW1RZ0JDQUtOZ0lBREFNTElBQVFrd0lhSUFaQkFUb0FBQ0FOSUE4Z0RTZ0NCQ0FOTFFBTElnTkIvd0J4SUFOQmdBRnhRUWQyRzBFQlN4c2hEd3dEQ3lBTElCQTJBaFFDUUNBUFJRMEFRUUVoQ2dOQUlBb2dEeWdDQkNBUExRQUxJZ0pCL3dCeElBSkJnQUZ4UVFkMkcwOE5BUUpBSUFBZ0MwR01CR29Ra1FKRkJFQUNmeUFBS0FJQUlnSW9BZ3dpQXlBQ0tBSVFSZ1JBSUFJZ0FpZ0NBQ2dDSkJFQUFBd0JDeUFES0FJQUN5QUtRUUowSUE4b0FnQWdEeUFQTFFBTFFZQUJjVUVIZGh0cUtBSUFSZzBCQ3lBRklBVW9BZ0JCQkhJMkFnQkJBQ0VBREFZTElBQVFrd0lhSUFwQkFXb2hDZ3dBQ3dBTFFRRWhBQ0FVS0FJQUlnSWdBVVlOQTBFQUlRQWdDMEVBTmdJTUlCRWdBaUFCSUF0QkRHb1EwUUlnQ3lnQ0RBUkFJQVVnQlNnQ0FFRUVjallDQUF3RUMwRUJJUUFNQXdzZ0JDRUJDd0pBSUJCQkFFd05BQUpBSUFBZ0MwR01CR29Ra1FKRkJFQUNmeUFBS0FJQUlnTW9BZ3dpQkNBREtBSVFSZ1JBSUFNZ0F5Z0NBQ2dDSkJFQUFBd0JDeUFFS0FJQUN5QUxLQUpZUmcwQkN5QUZJQVVvQWdCQkJISTJBZ0JCQUNFQURBTUxBMEFnQUJDVEFpRURJQkJCQUV3RVFFRUFJUkFNQWdzQ1FDQURJQXRCakFScUVKRUNSUVJBSUFkQndBQUNmeUFES0FJQUlnUW9BZ3dpQ2lBRUtBSVFSZ1JBSUFRZ0JDZ0NBQ2dDSkJFQUFBd0JDeUFLS0FJQUN5QUhLQUlBS0FJTUVRUUFEUUVMSUFVZ0JTZ0NBRUVFY2pZQ0FFRUFJUUFNQkFzZ0NTZ0NBQ0FMS0FLSUJFWUVRQ0FJSUFrZ0MwR0lCR29Rd1FNTEFuOGdBeWdDQUNJREtBSU1JZ1FnQXlnQ0VFWUVRQ0FESUFNb0FnQW9BaVFSQUFBTUFRc2dCQ2dDQUFzaEF5QUpJQWtvQWdBaUJFRUVhallDQUNBRUlBTTJBZ0FnRUVFQmF5RVFEQUFMQUFzZ0NTZ0NBQ0FJS0FJQVJ3MEFJQVVnQlNnQ0FFRUVjallDQUVFQUlRQU1BUXNnQWtFQmFpRUNEQUVMQ3lBU0VPMENHaUFORU8wQ0dpQU1FTzBDR2lBT0VPMENHaUFSRU1rQ0dpQVVLQUlBSVFFZ0ZFRUFOZ0lBSUFFRVFDQUJJQlFvQWdRUkFRQUxDeUFMUVpBRWFpUUFJQUFMSHdFQmZ5QUJLQUlBRUpRQ0lRSWdBQ0FCS0FJQU5nSUVJQUFnQWpZQ0FBdVhBUUVDZndKQUFrQUNRQUpBSUFBdEFBc2lBMEdBQVhGQkIzWUVRQ0FBS0FJRUlnTWdBQ2dDQ0VILy8vLy9CM0ZCQVdzaUFrWU5BUXdDQzBFQklRSWdBMEgvQUhFaUEwRUJSdzBDQ3lBQUlBSkJBU0FDSUFJUTBRTWdBaUVEQ3lBQUtBSUFJUUlnQUNBRFFRRnFOZ0lFREFFTElBQWdBMEVCYWpvQUN5QUFJUUlMSUFJZ0EwRUNkR29pQUNBQk5nSUFJQUJCQURZQ0JBc0tBQ0FBUWFDcUZCQnlDMEFBSUFBdEFBdEJnQUZ4UVFkMkJFQWdBQ2dDQ0JvZ0FDZ0NBQkEwQ3lBQUlBRXBBZ0EzQWdBZ0FDQUJLQUlJTmdJSUlBRkJBRG9BQ3lBQlFRQTJBZ0FMQ2dBZ0FFR1lxaFFRY2dzNUFRRi9Jd0JCRUdzaUFpUUFJQUlnQURZQ0RDQUNRUXhxSWdBZ0FDZ0NBQ0FCUVFKMGFqWUNBQ0FBS0FJQUlRQWdBa0VRYWlRQUlBQUw1UWNCQlg4akFFSEFBMnNpQUNRQUlBQWdBallDdUFNZ0FDQUJOZ0s4QXlBQVFkWUFOZ0lVSUFCQkdHb2lBU0FBUVNCcU5nSUFJQUVnQUVFVWFpSUlLQUlBTmdJRUlBQkJFR29pQ1NBRUtBSWNJZ2MyQWdBZ0J5QUhLQUlFUVFGcU5nSUVJQUFvQWhBUWtBSWhCeUFBUVFBNkFBOGdBRUc4QTJvZ0FpQURJQWtnQkNnQ0JDQUZJQUJCRDJvZ0J5QUJJQWdnQUVHd0Eyb1F5UU1FUUFKQUlBWXRBQXRCZ0FGeFFRZDJCRUFnQmlnQ0FFRUFOZ0lBSUFaQkFEWUNCQXdCQ3lBR1FRQTJBZ0FnQmtFQU9nQUxDeUFBTFFBUEJFQWdCaUFIUVMwZ0J5Z0NBQ2dDTEJFREFCRExBd3NnQjBFd0lBY29BZ0FvQWl3UkF3QWhBeUFBS0FJVUlnZEJCR3NoQkNBQktBSUFJUUlEUUFKQUlBSWdCRThOQUNBQ0tBSUFJQU5IRFFBZ0FrRUVhaUVDREFFTEN5TUFRUkJySWdra0FDQUdLQUlFSUFZdEFBc2lCQ0lEUWY4QWNTQURRWUFCY1VFSGRoc2hBeUFFUVlBQmNVRUhkZ1IvSUFZb0FnaEIvLy8vL3dkeFFRRnJCVUVCQ3lFRUFrQWdCeUFDYTBFQ2RTSUlSUTBBSUFJZ0JpZ0NBQ0FHSUFZdEFBdEJnQUZ4UVFkMkd5SUtUd1IvSUFvZ0JpZ0NCQ0FHTFFBTElndEIvd0J4SUF0QmdBRnhRUWQyRzBFQ2RHb2dBazhGUVFBTFJRUkFJQWdnQkNBRGEwc0VRQ0FHSUFRZ0F5QUVheUFJYWlBRElBTVEwUU1MSUFOQkFuUWdCaWdDQUNBR0lBWXRBQXRCZ0FGeFFRZDJHMm9oQkFOQUlBSWdCMGNFUUNBRUlBSW9BZ0EyQWdBZ0FrRUVhaUVDSUFSQkJHb2hCQXdCQ3dzZ0JFRUFOZ0lBSUFNZ0NHb2hBZ0pBSUFZdEFBdEJnQUZ4UVFkMkJFQWdCaUFDTmdJRURBRUxJQVlnQWpvQUN3c01BUXNnQ1VFRWFpQUNJQWNRd2dJaUJDSUNLQUlBSUFJZ0FpMEFDMEdBQVhGQkIzWWJJUWNnQkNnQ0JDQUVMUUFMSWdKQi93QnhJQUpCZ0FGeFFRZDJHeUVDQWtBZ0FpQUdMUUFMUVlBQmNVRUhkZ1IvSUFZb0FnaEIvLy8vL3dkeFFRRnJCVUVCQ3lJSUlBWW9BZ1FnQmkwQUN5SURRZjhBY1NBRFFZQUJjVUVIZGhzaUEydE5CRUFnQWtVTkFTQUdLQUlBSUFZZ0JpMEFDMEdBQVhGQkIzWWJJZ2dnQTBFQ2RHb2dCeUFDRUlvQ0dpQUNJQU5xSVFJQ1FDQUdMUUFMUVlBQmNVRUhkZ1JBSUFZZ0FqWUNCQXdCQ3lBR0lBSTZBQXNMSUFnZ0FrRUNkR3BCQURZQ0FBd0JDeUFHSUFnZ0FpQUlheUFEYWlBRElBTkJBQ0FDSUFjUXhRUUxJQVFRN1FJYUN5QUpRUkJxSkFBTElBQkJ2QU5xSUFCQnVBTnFFSkVDQkVBZ0JTQUZLQUlBUVFKeU5nSUFDeUFBS0FLOEF5RURJQUFvQWhBaUFpQUNLQUlFUVFGcklnUTJBZ1FnQkVGL1JnUkFJQUlnQWlnQ0FDZ0NDQkVCQUFzZ0FTZ0NBQ0VDSUFGQkFEWUNBQ0FDQkVBZ0FpQUJLQUlFRVFFQUN5QUFRY0FEYWlRQUlBTUxoQUlCQTM4akFFRVFheUlGSkFBZ0FrSHYvLy8vQXlBQmEwMEVRQ0FBS0FJQUlBQWdBQzBBQzBHQUFYRkJCM1liSVFZZ0JVRUVhaUFCUWViLy8vOEJUUVIvSUFVZ0FVRUJkRFlDRENBRklBRWdBbW8yQWdRZ0JVRU1haUFGUVFScUlBVW9BZ1FnQlNnQ0RFa2JLQUlBSWdKQkFrOEVmeUFDUVFScVFYeHhJZ0lnQWtFQmF5SUNJQUpCQWtZYkJVRUJDMEVCYWdWQjcvLy8vd01MRU1NQ0lBVW9BZ1FoQWlBRUJFQWdBaUFHSUFRUWlnSWFDeUFESUFSSEJFQWdBaUFFUVFKMElnZHFJQVlnQjJvZ0F5QUVheENLQWhvTElBRkJBVWNFUUNBR0VEUUxJQUFnQWpZQ0FDQUFJQVVvQWdoQmdJQ0FnSGh5TmdJSUlBVkJFR29rQUE4TEVGVUFDNThIQVFwL0l3QkJ3QU5ySWdBa0FDQUFJQVUzQXhBZ0FDQUdOd01ZSUFBZ0FFSFFBbW9pQ3pZQ3pBSWdDeUFBUVJCcUVMWUNJUW9nQUVIVUFEWUM0QUVnQUVIWUFXb2lDMEVBTmdJQUlBc2dBQ2dDNEFFMkFnUWdBRUhVQURZQzRBRWdBRUVBTmdMUUFTQUFJQUFvQXVBQk5nTFVBUUpBQWtBZ0NrSGtBRWtFUUNBQVFlQUJhaUVNSUFCQjBBSnFJUWdNQVFzUTB3SWhDaUFBSUFVM0F3QWdBQ0FHTndNSUlBQkJ6QUpxSUFwQit6OGdBQkNMQXlJS1FYOUdEUUVnQ3lnQ0FDRUhJQXNnQUNnQ3pBSWlDRFlDQUNBSEJFQWdCeUFMS0FJRUVRRUFDeUFLRURNaERDQUFLQUxRQVNFSElBQWdERFlDMEFFZ0J3UkFJQWNnQUNnQzFBRVJBUUFMSUFBb0F0QUJJZ3hGRFFFTElBQWdBeWdDSENJSE5nTE1BU0FISUFjb0FnUkJBV28yQWdRZ0FDZ0N6QUVRK3dFaUVDSUhJQWdnQ0NBS2FpQU1JQWNvQWdBb0FpQVJCZ0FhSUFwQkFFb0VRQ0FJTFFBQVFTMUdJUTRMSUFCQnVBRnFJZzFDQURjQ0FDQU5RUUEyQWdnZ0FFR3NBV29pQ0VJQU53SUFJQWhCQURZQ0NDQUFRYUFCYWlJSFFnQTNBZ0FnQjBFQU5nSUlJQUlnRGlBQUtBTE1BU0FBUWNnQmFpQUFRY2NCYWlBQVFjWUJhaUFOSUFnZ0J5QUFRWndCYWhEVEF5QUFRZFFBTmdJd0lBQkJBRFlDS0NBQUlBQkJNR29pQWlnQ0FEWUNMQUovSUFBb0Fwd0JJZzhnQ2tnRVFDQUtJQTlyUVFGMElBY29BZ1FnQnkwQUN5SUpRZjhBY1NBSlFZQUJjVUVIZGh0cUlBZ29BZ1FnQ0MwQUN5SUpRZjhBY1NBSlFZQUJjVUVIZGh0cVFRRnFEQUVMSUFjb0FnUWdCeTBBQ3lJSlFmOEFjU0FKUVlBQmNVRUhkaHNnQ0NnQ0JDQUlMUUFMSWdsQi93QnhJQWxCZ0FGeFFRZDJHMnBCQW1vTElBOXFJZ2xCNVFCUEJFQWdDUkF6SVFrZ0FDZ0NLQ0VDSUFBZ0NUWUNLQ0FDQkVBZ0FpQUFLQUlzRVFFQUN5QUFLQUlvSWdKRkRRRUxJQUlnQUVFa2FpQUFRU0JxSUFNb0FnUWdEQ0FLSUF4cUlCQWdEaUFBUWNnQmFpQUFMQURIQVNBQUxBREdBU0FOSUFnZ0J5QVBFTlFESUFFZ0FpQUFLQUlrSUFBb0FpQWdBeUFFRUhjaEFpQUFLQUlvSVFFZ0FFRUFOZ0lvSUFFRVFDQUJJQUFvQWl3UkFRQUxJQWNReVFJYUlBZ1F5UUlhSUEwUXlRSWFJQUFvQXN3QklnRWdBU2dDQkVFQmF5SUROZ0lFSUFOQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTElBQW9BdEFCSVFFZ0FFRUFOZ0xRQVNBQkJFQWdBU0FBS0FMVUFSRUJBQXNnQ3lnQ0FDRUJJQXRCQURZQ0FDQUJCRUFnQVNBTEtBSUVFUUVBQ3lBQVFjQURhaVFBSUFJUEN4RGVBUUFMN3dNQkFYOGpBRUVRYXlJS0pBQWdDUUovSUFBRVFDQUNFTUlESVFBQ1FDQUJCRUFnQ2tFRWFpSUJJQUFnQUNnQ0FDZ0NMQkVDQUNBRElBb29BZ1EyQUFBZ0FTQUFJQUFvQWdBb0FpQVJBZ0FNQVFzZ0NrRUVhaUlCSUFBZ0FDZ0NBQ2dDS0JFQ0FDQURJQW9vQWdRMkFBQWdBU0FBSUFBb0FnQW9BaHdSQWdBTElBZ2dBUkNXQWlBQkVNa0NHaUFFSUFBZ0FDZ0NBQ2dDREJFQUFEb0FBQ0FGSUFBZ0FDZ0NBQ2dDRUJFQUFEb0FBQ0FLUVFScUlnRWdBQ0FBS0FJQUtBSVVFUUlBSUFZZ0FSQ1dBaUFCRU1rQ0dpQUJJQUFnQUNnQ0FDZ0NHQkVDQUNBSElBRVFsZ0lnQVJESkFob2dBQ0FBS0FJQUtBSWtFUUFBREFFTElBSVF3d01oQUFKQUlBRUVRQ0FLUVFScUlnRWdBQ0FBS0FJQUtBSXNFUUlBSUFNZ0NpZ0NCRFlBQUNBQklBQWdBQ2dDQUNnQ0lCRUNBQXdCQ3lBS1FRUnFJZ0VnQUNBQUtBSUFLQUlvRVFJQUlBTWdDaWdDQkRZQUFDQUJJQUFnQUNnQ0FDZ0NIQkVDQUFzZ0NDQUJFSllDSUFFUXlRSWFJQVFnQUNBQUtBSUFLQUlNRVFBQU9nQUFJQVVnQUNBQUtBSUFLQUlRRVFBQU9nQUFJQXBCQkdvaUFTQUFJQUFvQWdBb0FoUVJBZ0FnQmlBQkVKWUNJQUVReVFJYUlBRWdBQ0FBS0FJQUtBSVlFUUlBSUFjZ0FSQ1dBaUFCRU1rQ0dpQUFJQUFvQWdBb0FpUVJBQUFMTmdJQUlBcEJFR29rQUF1b0J3RUpmeUFDSUFBMkFnQWdBMEdBQkhFaEZRTkFJQlJCQkVZRVFDQU5LQUlFSUEwdEFBc2lCRUgvQUhFZ0JFR0FBWEZCQjNZYlFRRkxCRUFnQWlBTkVQNENRUUVReEFNZ0RSRC9BaUFDS0FJQUVOVUROZ0lBQ3lBRFFiQUJjU0lEUVJCSEJFQWdBU0FEUVNCR0JIOGdBaWdDQUFVZ0FBczJBZ0FMQlFKQUFrQUNRQUpBQWtBQ1FDQUlJQlJxTEFBQURnVUFBUU1DQkFVTElBRWdBaWdDQURZQ0FBd0VDeUFCSUFJb0FnQTJBZ0FnQmtFZ0lBWW9BZ0FvQWh3UkF3QWhEeUFDSUFJb0FnQWlFRUVCYWpZQ0FDQVFJQTg2QUFBTUF3c2dEU2dDQkNBTkxRQUxJZzlCL3dCeElBOUJnQUZ4UVFkMkcwVU5BaUFOS0FJQUlBMGdEUzBBQzBHQUFYRkJCM1liTFFBQUlROGdBaUFDS0FJQUloQkJBV28yQWdBZ0VDQVBPZ0FBREFJTElBd29BZ1FnREMwQUN5SVBRZjhBY1NBUFFZQUJjVUVIZGh0RklROGdGVVVOQVNBUERRRWdBaUFNRVA0Q0lBd1Evd0lnQWlnQ0FCRFZBellDQUF3QkN5QUdLQUlJSVE4Z0FpZ0NBQ0VXSUFRZ0Iyb2lCQ0VSQTBBQ1FDQUZJQkZORFFBZ0VTd0FBQ0lRUVFCT0JIOGdEeUFRUWY4QmNVRUNkR29vQWdCQndBQnhRUUJIQlVFQUMwVU5BQ0FSUVFGcUlSRU1BUXNMSUE0aUQwRUFTZ1JBQTBBQ1FDQUVJQkZQRFFBZ0QwVU5BQ0FQUVFGcklROGdFVUVCYXlJUkxRQUFJUkFnQWlBQ0tBSUFJaEpCQVdvMkFnQWdFaUFRT2dBQURBRUxDeUFQQkg4Z0JrRXdJQVlvQWdBb0Fod1JBd0FGUVFBTElSSURRQ0FDSUFJb0FnQWlFRUVCYWpZQ0FDQVBRUUJLQkVBZ0VDQVNPZ0FBSUE5QkFXc2hEd3dCQ3dzZ0VDQUpPZ0FBQ3dKQUlBUWdFVVlFUUNBR1FUQWdCaWdDQUNnQ0hCRURBQ0VQSUFJZ0FpZ0NBQ0lRUVFGcU5nSUFJQkFnRHpvQUFBd0JDMEYvSVJBZ0N5Z0NCQ0FMTFFBTElnOUIvd0J4SUE5QmdBRnhRUWQyR3dSQUlBc29BZ0FnQ3lBTExRQUxRWUFCY1VFSGRoc3NBQUFoRUF0QkFDRVBRUUFoRXdOQUlBUWdFVVlOQVFKQUlBOGdFRWNFUUNBUElSSU1BUXNnQWlBQ0tBSUFJaEJCQVdvMkFnQWdFQ0FLT2dBQVFRQWhFaUFUUVFGcUloTWdDeWdDQkNBTExRQUxJaEJCL3dCeElCQkJnQUZ4UVFkMkcwOEVRQ0FQSVJBTUFRdEJmeUVRSUJNZ0N5Z0NBQ0FMSUFzdEFBdEJnQUZ4UVFkMkcyb3RBQUJCL3dCR0RRQWdFeUFMS0FJQUlBc2dDeTBBQzBHQUFYRkJCM1liYWl3QUFDRVFDeUFSUVFGckloRXRBQUFoRHlBQ0lBSW9BZ0FpRjBFQmFqWUNBQ0FYSUE4NkFBQWdFa0VCYWlFUERBQUxBQXNnRmlBQ0tBSUFFSVVEQ3lBVVFRRnFJUlFNQVFzTEM1TUJBUU4vSXdCQkVHc2lCQ1FBSXdCQklHc2lBeVFBSXdCQkVHc2lCU1FBSUFVZ0FUWUNEQ0FESUFBMkFoZ2dBeUFGS0FJTU5nSWNJQVZCRUdva0FDQURRUkJxSUFNb0FoZ2dBeWdDSENBQ0VQRUJJQUFnQXlnQ0VDQUFheERFQXlFQUlBTWdBeWdDRkRZQ0RDQUVJQUEyQWdnZ0JDQURLQUlNTmdJTUlBTkJJR29rQUNBRUtBSU1JUUFnQkVFUWFpUUFJQUFMeHdVQkNIOGpBRUd3QVdzaUFDUUFJQUFnQXlnQ0hDSUdOZ0tzQVNBR0lBWW9BZ1JCQVdvMkFnUWdBQ2dDckFFUSt3RWhDeUFGS0FJRUlBVXRBQXNpQmtIL0FIRWdCa0dBQVhGQkIzWWJCRUFnQlNnQ0FDQUZJQVV0QUF0QmdBRnhRUWQyR3kwQUFDQUxRUzBnQ3lnQ0FDZ0NIQkVEQUVIL0FYRkdJUXdMSUFCQm1BRnFJZ3BDQURjQ0FDQUtRUUEyQWdnZ0FFR01BV29pQmtJQU53SUFJQVpCQURZQ0NDQUFRWUFCYWlJSlFnQTNBZ0FnQ1VFQU5nSUlJQUlnRENBQUtBS3NBU0FBUWFnQmFpQUFRYWNCYWlBQVFhWUJhaUFLSUFZZ0NTQUFRZndBYWhEVEF5QUFRZFFBTmdJUUlBQkJBRFlDQ0NBQUlBQkJFR29pQWlnQ0FEWUNEQUpBQW44Z0JTZ0NCQ0FGTFFBTElnZEIvd0J4SUFkQmdBRnhRUWQyR3lJSElBQW9BbndpRFVvRVFDQUhJQTFyUVFGMElBa29BZ1FnQ1MwQUN5SUlRZjhBY1NBSVFZQUJjVUVIZGh0cUlBWW9BZ1FnQmkwQUN5SUlRZjhBY1NBSVFZQUJjVUVIZGh0cVFRRnFEQUVMSUFrb0FnUWdDUzBBQ3lJSVFmOEFjU0FJUVlBQmNVRUhkaHNnQmlnQ0JDQUdMUUFMSWdoQi93QnhJQWhCZ0FGeFFRZDJHMnBCQW1vTElBMXFJZ2hCNVFCUEJFQWdDQkF6SVFjZ0FDZ0NDQ0VDSUFBZ0J6WUNDQ0FDQkVBZ0FpQUFLQUlNRVFFQUN5QUFLQUlJSWdKRkRRRWdCU2dDQkNBRkxRQUxJZ2RCL3dCeElBZEJnQUZ4UVFkMkd5RUhDeUFDSUFCQkJHb2dBQ0FES0FJRUlBVW9BZ0FnQlNBRkxRQUxRWUFCY1VFSGRoc2lCU0FGSUFkcUlBc2dEQ0FBUWFnQmFpQUFMQUNuQVNBQUxBQ21BU0FLSUFZZ0NTQU5FTlFESUFFZ0FpQUFLQUlFSUFBb0FnQWdBeUFFRUhjaEFpQUFLQUlJSVFFZ0FFRUFOZ0lJSUFFRVFDQUJJQUFvQWd3UkFRQUxJQWtReVFJYUlBWVF5UUlhSUFvUXlRSWFJQUFvQXF3QklnRWdBU2dDQkVFQmF5SUROZ0lFSUFOQmYwWUVRQ0FCSUFFb0FnQW9BZ2dSQVFBTElBQkJzQUZxSkFBZ0FnOExFTjRCQUF1cEJ3RUtmeU1BUWFBSWF5SUFKQUFnQUNBRk53TVFJQUFnQmpjREdDQUFJQUJCc0FkcUlnczJBcXdISUFzZ0FFRVFhaEMyQWlFS0lBQkIxQUEyQXBBRUlBQkJpQVJxSWd0QkFEWUNBQ0FMSUFBb0FwQUVOZ0lFSUFCQjFBQTJBcEFFSUFCQkFEWUNnQVFnQUNBQUtBS1FCRFlDaEFRQ1FBSkFJQXBCNUFCSkJFQWdBRUdRQkdvaERDQUFRYkFIYWlFSURBRUxFTk1DSVFvZ0FDQUZOd01BSUFBZ0JqY0RDQ0FBUWF3SGFpQUtRZnMvSUFBUWl3TWlDa0YvUmcwQklBc29BZ0FoQnlBTElBQW9BcXdISWdnMkFnQWdCd1JBSUFjZ0N5Z0NCQkVCQUFzZ0NrRUNkQkF6SVF3Z0FDZ0NnQVFoQnlBQUlBdzJBb0FFSUFjRVFDQUhJQUFvQW9RRUVRRUFDeUFBS0FLQUJDSU1SUTBCQ3lBQUlBTW9BaHdpQnpZQy9BTWdCeUFIS0FJRVFRRnFOZ0lFSUFBb0F2d0RFSkFDSWhBaUJ5QUlJQWdnQ21vZ0RDQUhLQUlBS0FJd0VRWUFHaUFLUVFCS0JFQWdDQzBBQUVFdFJpRU9DeUFBUWVRRGFpSU5RZ0EzQWdBZ0RVRUFOZ0lJSUFCQjJBTnFJZ2hDQURjQ0FDQUlRUUEyQWdnZ0FFSE1BMm9pQjBJQU53SUFJQWRCQURZQ0NDQUNJQTRnQUNnQy9BTWdBRUg0QTJvZ0FFSDBBMm9nQUVId0Eyb2dEU0FJSUFjZ0FFSElBMm9RMkFNZ0FFSFVBRFlDTUNBQVFRQTJBaWdnQUNBQVFUQnFJZ0lvQWdBMkFpd0NmeUFBS0FMSUF5SVBJQXBJQkVBZ0NpQVBhMEVCZENBSEtBSUVJQWN0QUFzaUNVSC9BSEVnQ1VHQUFYRkJCM1liYWlBSUtBSUVJQWd0QUFzaUNVSC9BSEVnQ1VHQUFYRkJCM1liYWtFQmFnd0JDeUFIS0FJRUlBY3RBQXNpQ1VIL0FIRWdDVUdBQVhGQkIzWWJJQWdvQWdRZ0NDMEFDeUlKUWY4QWNTQUpRWUFCY1VFSGRodHFRUUpxQ3lBUGFpSUpRZVVBVHdSQUlBbEJBblFRTXlFSklBQW9BaWdoQWlBQUlBazJBaWdnQWdSQUlBSWdBQ2dDTEJFQkFBc2dBQ2dDS0NJQ1JRMEJDeUFDSUFCQkpHb2dBRUVnYWlBREtBSUVJQXdnRENBS1FRSjBhaUFRSUE0Z0FFSDRBMm9nQUNnQzlBTWdBQ2dDOEFNZ0RTQUlJQWNnRHhEWkF5QUJJQUlnQUNnQ0pDQUFLQUlnSUFNZ0JCQ1RBeUVDSUFBb0FpZ2hBU0FBUVFBMkFpZ2dBUVJBSUFFZ0FDZ0NMQkVCQUFzZ0J4RHRBaG9nQ0JEdEFob2dEUkRKQWhvZ0FDZ0MvQU1pQVNBQktBSUVRUUZySWdNMkFnUWdBMEYvUmdSQUlBRWdBU2dDQUNnQ0NCRUJBQXNnQUNnQ2dBUWhBU0FBUVFBMkFvQUVJQUVFUUNBQklBQW9Bb1FFRVFFQUN5QUxLQUlBSVFFZ0MwRUFOZ0lBSUFFRVFDQUJJQXNvQWdRUkFRQUxJQUJCb0FocUpBQWdBZzhMRU40QkFBdnZBd0VCZnlNQVFSQnJJZ29rQUNBSkFuOGdBQVJBSUFJUXpBTWhBQUpBSUFFRVFDQUtRUVJxSWdFZ0FDQUFLQUlBS0FJc0VRSUFJQU1nQ2lnQ0JEWUFBQ0FCSUFBZ0FDZ0NBQ2dDSUJFQ0FBd0JDeUFLUVFScUlnRWdBQ0FBS0FJQUtBSW9FUUlBSUFNZ0NpZ0NCRFlBQUNBQklBQWdBQ2dDQUNnQ0hCRUNBQXNnQ0NBQkVNMERJQUVRN1FJYUlBUWdBQ0FBS0FJQUtBSU1FUUFBTmdJQUlBVWdBQ0FBS0FJQUtBSVFFUUFBTmdJQUlBcEJCR29pQVNBQUlBQW9BZ0FvQWhRUkFnQWdCaUFCRUpZQ0lBRVF5UUlhSUFFZ0FDQUFLQUlBS0FJWUVRSUFJQWNnQVJETkF5QUJFTzBDR2lBQUlBQW9BZ0FvQWlRUkFBQU1BUXNnQWhET0F5RUFBa0FnQVFSQUlBcEJCR29pQVNBQUlBQW9BZ0FvQWl3UkFnQWdBeUFLS0FJRU5nQUFJQUVnQUNBQUtBSUFLQUlnRVFJQURBRUxJQXBCQkdvaUFTQUFJQUFvQWdBb0FpZ1JBZ0FnQXlBS0tBSUVOZ0FBSUFFZ0FDQUFLQUlBS0FJY0VRSUFDeUFJSUFFUXpRTWdBUkR0QWhvZ0JDQUFJQUFvQWdBb0Fnd1JBQUEyQWdBZ0JTQUFJQUFvQWdBb0FoQVJBQUEyQWdBZ0NrRUVhaUlCSUFBZ0FDZ0NBQ2dDRkJFQ0FDQUdJQUVRbGdJZ0FSREpBaG9nQVNBQUlBQW9BZ0FvQWhnUkFnQWdCeUFCRU0wRElBRVE3UUlhSUFBZ0FDZ0NBQ2dDSkJFQUFBczJBZ0FnQ2tFUWFpUUFDN3NIQVFsL0lBSWdBRFlDQUNBRFFZQUVjU0VWSUFkQkFuUWhGZ05BSUJSQkJFWUVRQ0FOS0FJRUlBMHRBQXNpQkVIL0FIRWdCRUdBQVhGQkIzWWJRUUZMQkVBZ0FpQU5FUDRDUVFFUXp3TWdEUkNRQXlBQ0tBSUFFTm9ETmdJQUN5QURRYkFCY1NJRFFSQkhCRUFnQVNBRFFTQkdCSDhnQWlnQ0FBVWdBQXMyQWdBTEJRSkFBa0FDUUFKQUFrQUNRQ0FJSUJScUxBQUFEZ1VBQVFNQ0JBVUxJQUVnQWlnQ0FEWUNBQXdFQ3lBQklBSW9BZ0EyQWdBZ0JrRWdJQVlvQWdBb0Fpd1JBd0FoQnlBQ0lBSW9BZ0FpRDBFRWFqWUNBQ0FQSUFjMkFnQU1Bd3NnRFNnQ0JDQU5MUUFMSWdkQi93QnhJQWRCZ0FGeFFRZDJHMFVOQWlBTktBSUFJQTBnRFMwQUMwR0FBWEZCQjNZYktBSUFJUWNnQWlBQ0tBSUFJZzlCQkdvMkFnQWdEeUFITmdJQURBSUxJQXdvQWdRZ0RDMEFDeUlIUWY4QWNTQUhRWUFCY1VFSGRodEZJUWNnRlVVTkFTQUhEUUVnQWlBTUVQNENJQXdRa0FNZ0FpZ0NBQkRhQXpZQ0FBd0JDeUFDS0FJQUlSY2dCQ0FXYWlJRUlRY0RRQUpBSUFVZ0IwME5BQ0FHUWNBQUlBY29BZ0FnQmlnQ0FDZ0NEQkVFQUVVTkFDQUhRUVJxSVFjTUFRc0xJQTVCQUVvRVFDQUNLQUlBSVE4Z0RpRVFBMEFDUUNBRUlBZFBEUUFnRUVVTkFDQVFRUUZySVJBZ0IwRUVheUlIS0FJQUlSRWdBaUFQUVFScUloSTJBZ0FnRHlBUk5nSUFJQkloRHd3QkN3c0NRQ0FRUlFSQVFRQWhFUXdCQ3lBR1FUQWdCaWdDQUNnQ0xCRURBQ0VSSUFJb0FnQWhEd3NEUUNBUFFRUnFJUklnRUVFQVNnUkFJQThnRVRZQ0FDQVFRUUZySVJBZ0VpRVBEQUVMQ3lBQ0lCSTJBZ0FnRHlBSk5nSUFDd0pBSUFRZ0IwWUVRQ0FHUVRBZ0JpZ0NBQ2dDTEJFREFDRVBJQUlnQWlnQ0FDSVFRUVJxSWdjMkFnQWdFQ0FQTmdJQURBRUxRWDhoRVNBTEtBSUVJQXN0QUFzaUQwSC9BSEVnRDBHQUFYRkJCM1liQkVBZ0N5Z0NBQ0FMSUFzdEFBdEJnQUZ4UVFkMkd5d0FBQ0VSQzBFQUlSQkJBQ0VUQTBBZ0JDQUhSd1JBSUFJb0FnQWhFZ0pBSUJBZ0VVY0VRQ0FTSVE4Z0VDRVNEQUVMSUFJZ0VrRUVhaUlQTmdJQUlCSWdDallDQUVFQUlSSWdFMEVCYWlJVElBc29BZ1FnQ3kwQUN5SVJRZjhBY1NBUlFZQUJjVUVIZGh0UEJFQWdFQ0VSREFFTFFYOGhFU0FUSUFzb0FnQWdDeUFMTFFBTFFZQUJjVUVIZGh0cUxRQUFRZjhBUmcwQUlCTWdDeWdDQUNBTElBc3RBQXRCZ0FGeFFRZDJHMm9zQUFBaEVRc2dCMEVFYXlJSEtBSUFJUkFnQWlBUFFRUnFOZ0lBSUE4Z0VEWUNBQ0FTUVFGcUlSQU1BUXNMSUFJb0FnQWhCd3NnRnlBSEVOVUNDeUFVUVFGcUlSUU1BUXNMQzVZQkFRTi9Jd0JCRUdzaUJDUUFJd0JCSUdzaUF5UUFJd0JCRUdzaUJTUUFJQVVnQVRZQ0RDQURJQUEyQWhnZ0F5QUZLQUlNTmdJY0lBVkJFR29rQUNBRFFSQnFJQU1vQWhnZ0F5Z0NIQ0FDRVBFQklBQWdBeWdDRUNBQWEwRUNkUkRQQXlFQUlBTWdBeWdDRkRZQ0RDQUVJQUEyQWdnZ0JDQURLQUlNTmdJTUlBTkJJR29rQUNBRUtBSU1JUUFnQkVFUWFpUUFJQUFMeXdVQkNIOGpBRUhnQTJzaUFDUUFJQUFnQXlnQ0hDSUdOZ0xjQXlBR0lBWW9BZ1JCQVdvMkFnUWdBQ2dDM0FNUWtBSWhDeUFGS0FJRUlBVXRBQXNpQmtIL0FIRWdCa0dBQVhGQkIzWWJCRUFnQlNnQ0FDQUZJQVV0QUF0QmdBRnhRUWQyR3lnQ0FDQUxRUzBnQ3lnQ0FDZ0NMQkVEQUVZaERBc2dBRUhFQTJvaUNrSUFOd0lBSUFwQkFEWUNDQ0FBUWJnRGFpSUdRZ0EzQWdBZ0JrRUFOZ0lJSUFCQnJBTnFJZ2xDQURjQ0FDQUpRUUEyQWdnZ0FpQU1JQUFvQXR3RElBQkIyQU5xSUFCQjFBTnFJQUJCMEFOcUlBb2dCaUFKSUFCQnFBTnFFTmdESUFCQjFBQTJBaEFnQUVFQU5nSUlJQUFnQUVFUWFpSUNLQUlBTmdJTUFrQUNmeUFGS0FJRUlBVXRBQXNpQjBIL0FIRWdCMEdBQVhGQkIzWWJJZ2NnQUNnQ3FBTWlEVW9FUUNBSElBMXJRUUYwSUFrb0FnUWdDUzBBQ3lJSVFmOEFjU0FJUVlBQmNVRUhkaHRxSUFZb0FnUWdCaTBBQ3lJSVFmOEFjU0FJUVlBQmNVRUhkaHRxUVFGcURBRUxJQWtvQWdRZ0NTMEFDeUlJUWY4QWNTQUlRWUFCY1VFSGRoc2dCaWdDQkNBR0xRQUxJZ2hCL3dCeElBaEJnQUZ4UVFkMkcycEJBbW9MSUExcUlnaEI1UUJQQkVBZ0NFRUNkQkF6SVFjZ0FDZ0NDQ0VDSUFBZ0J6WUNDQ0FDQkVBZ0FpQUFLQUlNRVFFQUN5QUFLQUlJSWdKRkRRRWdCU2dDQkNBRkxRQUxJZ2RCL3dCeElBZEJnQUZ4UVFkMkd5RUhDeUFDSUFCQkJHb2dBQ0FES0FJRUlBVW9BZ0FnQlNBRkxRQUxRWUFCY1VFSGRoc2lCU0FGSUFkQkFuUnFJQXNnRENBQVFkZ0RhaUFBS0FMVUF5QUFLQUxRQXlBS0lBWWdDU0FORU5rRElBRWdBaUFBS0FJRUlBQW9BZ0FnQXlBRUVKTURJUUlnQUNnQ0NDRUJJQUJCQURZQ0NDQUJCRUFnQVNBQUtBSU1FUUVBQ3lBSkVPMENHaUFHRU8wQ0dpQUtFTWtDR2lBQUtBTGNBeUlCSUFFb0FnUkJBV3NpQXpZQ0JDQURRWDlHQkVBZ0FTQUJLQUlBS0FJSUVRRUFDeUFBUWVBRGFpUUFJQUlQQ3hEZUFRQUxCQUJCZndzSkFDQUFJQVVRdkFNTDFRRUFBa0FnQlMwQUMwR0FBWEZCQjNaRkJFQWdBQ0FGS1FJQU53SUFJQUFnQlNnQ0NEWUNDQXdCQ3lBRktBSUFJUVFnQlNnQ0JDRUNJd0JCRUdzaUF5UUFBa0FDUUFKQUlBSkJBa2tFUUNBQUlBSTZBQXNNQVFzZ0FrSHcvLy8vQTA4TkFTQURRUWhxSUFKQkFrOEVmeUFDUVFScVFYeHhJZ0VnQVVFQmF5SUJJQUZCQWtZYkJVRUJDMEVCYWhEREFpQUFJQU1vQWdnaUFUWUNBQ0FBSUFNb0FneEJnSUNBZ0hoeU5nSUlJQUFnQWpZQ0JDQUJJUUFMSUFBZ0JDQUNRUUZxRUlvQ0dpQURRUkJxSkFBTUFRc1FWUUFMQ3d0MUFRSi9Jd0JCRUdzaUF5UUFJQU5CQkdvaUFpQUFOZ0lBSUFJZ0FDZ0NCQ0lBTmdJRUlBSWdBQ0FCUVFKMGFqWUNDQ0FDS0FJRUlRRWdBaWdDQ0NFQUEwQWdBQ0FCUmdSQUlBSW9BZ0FnQWlnQ0JEWUNCQ0FEUVJCcUpBQUZJQUZCQURZQ0FDQUNJQUZCQkdvaUFUWUNCQXdCQ3dzTERBQWdBQ0FBS0FJQUVPSURDNkFKQVFwL0l3QkJFR3NpQ2lRQUlBRWdBU2dDQkVFQmFqWUNCQ0FBUVFocUlRUWdDa0VNYWlJSklBRTJBZ0FnQWlBQUtBSU1JQUFvQWdnaUFHdEJBblZQQkg4Q1FDQUNRUUZxSWdBZ0JDZ0NCQ0FFS0FJQUlnTnJRUUoxSWdGTEJFQWpBRUVnYXlJTEpBQUNRQ0FBSUFGcklnWWdCQ2dDQ0NBRUtBSUVJZ0ZyUVFKMVRRUkFJQVFnQmhEZkF3d0JDeUFFUVJCcUlRY2dDMEVNYWlFQUFuOGdCaUFCSUFRb0FnQnJRUUoxYWlFRkl3QkJFR3NpQXlRQUlBTWdCVFlDRENBRkVPTURJZ0ZOQkVBZ0JDZ0NDQ0FFS0FJQWEwRUNkU0lGSUFGQkFYWkpCRUFnQXlBRlFRRjBOZ0lJSUFOQkRHb2dBMEVJYWlBREtBSUlJQU1vQWd4Skd5Z0NBQ0VCQ3lBRFFSQnFKQUFnQVF3QkN4QlhBQXNoQVNBRUtBSUVJQVFvQWdCclFRSjFJUWdqQUVFUWF5SURKQUFnQUVFQU5nSU1JQUFnQnpZQ0VDQUFBbjhnQVVVRVFFRUFJUUZCQUF3QkN5QURRUWhxSUFBb0FoQWdBUkRrQXlBREtBSU1JUUVnQXlnQ0NBc2lCVFlDQUNBQUlBVWdDRUVDZEdvaUJ6WUNDQ0FBSUFjMkFnUWdBQ0FGSUFGQkFuUnFOZ0lNSUFOQkVHb2tBQ01BUVJCcklnTWtBQ0FESUFBb0FnZzJBZ1FnQUNnQ0NDRUJJQU1nQUVFSWFqWUNEQ0FESUFFZ0JrRUNkR28yQWdnZ0F5Z0NCQ0VCQTBBZ0F5Z0NDQ0FCUndSQUlBRkJBRFlDQUNBRElBTW9BZ1JCQkdvaUFUWUNCQXdCQ3dzZ0F5Z0NEQ0FES0FJRU5nSUFJQU5CRUdva0FDTUFRUkJySWdZa0FDQUdJQVFvQWdRMkFnd2dCaUFFS0FJQU5nSUlJQVlnQUNnQ0JEWUNCQ0FHS0FJTUlRVWdCaWdDQ0NFSUlBWW9BZ1FoRENNQVFSQnJJZ2NrQUNNQVFTQnJJZ0VrQUNNQVFSQnJJZ01rQUNBRElBZzJBZ3dnQVNBRk5nSVlJQUVnQXlnQ0REWUNIQ0FEUVJCcUpBQWdBU2dDR0NFRklBRW9BaHdoQ0NNQVFSQnJJZ01rQUNBRElBdzJBZ2dnQXlBRk5nSU1BMEFnQlNBSVJ3UkFJQU1vQWdoQkJHc2dCVUVFYXlnQ0FEWUNBQ0FESUFNb0FneEJCR3MyQWd3Z0F5QURLQUlJUVFSck5nSUlJQU1vQWd3aEJRd0JDd3NnQVNBRk5nSVFJQUVnQXlnQ0NEWUNGQ0FEUVJCcUpBQWdBU2dDRUNFRElBRWdBU2dDRkRZQ0RDQUhJQU0yQWdnZ0J5QUJLQUlNTmdJTUlBRkJJR29rQUNBSEtBSU1JUUVnQjBFUWFpUUFJQUFnQVRZQ0JDQUVLQUlBSVFFZ0JDQUFLQUlFTmdJQUlBQWdBVFlDQkNBRUtBSUVJUUVnQkNBQUtBSUlOZ0lFSUFBZ0FUWUNDQ0FFS0FJSUlRRWdCQ0FBS0FJTU5nSUlJQUFnQVRZQ0RDQUFJQUFvQWdRMkFnQWdCa0VRYWlRQUlBQW9BZ1FoQXlBQUtBSUlJUUVEUUNBQklBTkhCRUFnQUNBQlFRUnJJZ0UyQWdnTUFRc0xJQUFvQWdBaUFRUkFJQUFvQWhBZ0FTQUFLQUlNSUFBb0FnQnJRUUoxRU9VREN3c2dDMEVnYWlRQURBRUxJQUFnQVVrRVFDQUVJQU1nQUVFQ2RHb1E0Z01MQ3lBRUtBSUFCU0FBQ3lBQ1FRSjBhaUlCS0FJQUlnQUVmeUFBSUFBb0FnUkJBV3NpQVRZQ0JDQUJRWDlHQkVBZ0FDQUFLQUlBS0FJSUVRRUFDeUFFS0FJQUlBSkJBblJxQlNBQkN5QUpLQUlBSVFBZ0NVRUFOZ0lBSUFBMkFnQWdDU2dDQUNFQUlBbEJBRFlDQUNBQUJFQWdBQ0FBS0FJRVFRRnJJZ0UyQWdRZ0FVRi9SZ1JBSUFBZ0FDZ0NBQ2dDQ0JFQkFBc0xJQXBCRUdva0FBc21BUUYvSUFBb0FnUWhBZ05BSUFFZ0FrY0VRQ0FDUVFScklRSU1BUXNMSUFBZ0FUWUNCQXRMQVFOL0l3QkJFR3NpQUNRQUlBQkIvLy8vL3dNMkFnd2dBRUgvLy8vL0J6WUNDQ0FBUVFocUlnRWdBRUVNYWlJQ0lBRW9BZ0FnQWlnQ0FFa2JLQUlBSVFFZ0FFRVFhaVFBSUFFTE5nQUNmd0pBSUFKQkhrc05BQ0FCTFFCNERRQWdBVUVCT2dCNElBRU1BUXNnQWhERUFnc2hBU0FBSUFJMkFnUWdBQ0FCTmdJQUN4b0FBa0FnQUNBQlJnUkFJQUZCQURvQWVBd0JDeUFCRURRTEN3OEFJQUFnQUNnQ0FDZ0NCQkVCQUFzS0FDQUFFTk1DTmdJQUN4Z0FJQUFvQWdnUTB3SkhCRUFnQUNnQ0NCQzVBZ3NnQUFzSkFDQUFFT2dERURRTDJnRUFRZGlyRkMwQUFBUkFRZFNyRkNnQ0FBOExRZGl2RkMwQUFFVUVRRUhZcnhSQkFUb0FBQXRCc0s0VVFjVHVFeEQ0QTBHOHJoUkI0TzRURVBnRFFjaXVGRUg4N2hNUStBTkIxSzRVUVp6dkV4RDRBMEhncmhSQnhPOFRFUGdEUWV5dUZFSG83eE1RK0FOQitLNFVRWVR3RXhENEEwR0VyeFJCcVBBVEVQZ0RRWkN2RkVHNDhCTVErQU5Cbks4VVFjandFeEQ0QTBHb3J4UkIyUEFURVBnRFFiU3ZGRUhvOEJNUStBTkJ3SzhVUWZqd0V4RDRBMEhNcnhSQmlQRVRFUGdEUWRpckZFRUJPZ0FBUWRTckZFR3dyaFEyQWdCQnNLNFVDOGdDQUVIb3F4UXRBQUFFUUVIa3F4UW9BZ0FQQzBHd3RCUXRBQUJGQkVCQnNMUVVRUUU2QUFBTFFaQ3lGRUdZOFJNUStBTkJuTElVUWJqeEV4RDRBMEdvc2hSQjNQRVRFUGdEUWJTeUZFSDA4Uk1RK0FOQndMSVVRWXp5RXhENEEwSE1zaFJCblBJVEVQZ0RRZGl5RkVHdzhoTVErQU5CNUxJVVFjVHlFeEQ0QTBId3NoUkI0UElURVBnRFFmeXlGRUdJOHhNUStBTkJpTE1VUWFqekV4RDRBMEdVc3hSQnpQTVRFUGdEUWFDekZFSHc4eE1RK0FOQnJMTVVRWUQwRXhENEEwRzRzeFJCa1BRVEVQZ0RRY1N6RkVHZzlCTVErQU5CMExNVVFZenlFeEQ0QTBIY3N4UkJzUFFURVBnRFFlaXpGRUhBOUJNUStBTkI5TE1VUWREMEV4RDRBMEdBdEJSQjRQUVRFUGdEUVl5MEZFSHc5Qk1RK0FOQm1MUVVRWUQxRXhENEEwR2t0QlJCa1BVVEVQZ0RRZWlyRkVFQk9nQUFRZVNyRkVHUXNoUTJBZ0JCa0xJVUMxWUFRZmlyRkMwQUFBUkFRZlNyRkNnQ0FBOExRZmkwRkMwQUFFVUVRRUg0dEJSQkFUb0FBQXRCNExRVVFhRDFFeEQ0QTBIc3RCUkJyUFVURVBnRFFmaXJGRUVCT2dBQVFmU3JGRUhndEJRMkFnQkI0TFFVQ3lVQVFkaXNGQzBBQUVVRVFFSE1yQlJCMU13VEVPNERRZGlzRkVFQk9nQUFDMEhNckJRTHJBRUJBMzhDUUNBQkVQWURJUUlqQUVFUWF5SUVKQUFnQWtIdy8vLy9BMGtFUUFKQUlBSkJBa2tFUUNBQUlBSTZBQXNNQVFzZ0JFRUlhaUFDUVFKUEJIOGdBa0VFYWtGOGNTSURJQU5CQVdzaUF5QURRUUpHR3dWQkFRdEJBV29Rd3dJZ0FDQUVLQUlJSWdNMkFnQWdBQ0FFS0FJTVFZQ0FnSUI0Y2pZQ0NDQUFJQUkyQWdRZ0F5RUFDeUFBSUFFZ0FoQ0tBaUFDUVFKMGFrRUFOZ0lBSUFSQkVHb2tBQXdCQ3hCVkFBc0xDZ0JCekt3VUVPMENHZ3NsQUVINHJCUXRBQUJGQkVCQjdLd1VRYWpORXhEdUEwSDRyQlJCQVRvQUFBdEI3S3dVQ3dvQVFleXNGQkR0QWhvTEpRQkJtS3dVTFFBQVJRUkFRWXlzRkVHTXpCTVE3Z05CbUt3VVFRRTZBQUFMUVl5c0ZBc0tBRUdNckJRUTdRSWFDeVVBUWJpc0ZDMEFBRVVFUUVHc3JCUkJzTXdURU80RFFiaXNGRUVCT2dBQUMwR3NyQlFMQ2dCQnJLd1VFTzBDR2dzakFRSi9JQUFoQVFOQUlBRWlBa0VFYWlFQklBSW9BZ0FOQUFzZ0FpQUFhMEVDZFFzY0FFSDR0QlFoQUFOQUlBQkJER3NRN1FJaUFFSGd0QlJIRFFBTEM3VUJBUUovQWtBZ0FSRDJBeUlDSUFBdEFBdEJnQUZ4UVFkMkJIOGdBQ2dDQ0VILy8vLy9CM0ZCQVdzRlFRRUxJZ05OQkVBZ0FDZ0NBQ0FBSUFBdEFBdEJnQUZ4UVFkMkd5QUJJQUpCQW5RUVN5RUJBa0FnQUMwQUMwR0FBWEZCQjNZRVFDQUFJQUkyQWdRTUFRc2dBQ0FDT2dBTEN5QUJJQUpCQW5ScVFRQTJBZ0FNQVFzZ0FDQURJQUlnQTJzZ0FDZ0NCQ0FBTFFBTElnQkIvd0J4SUFCQmdBRnhRUWQyR3lJQVFRQWdBQ0FDSUFFUXhRUUxDeHdBUWJDMEZDRUFBMEFnQUVFTWF4RHRBaUlBUVpDeUZFY05BQXNMSEFCQjJLOFVJUUFEUUNBQVFReHJFTzBDSWdCQnNLNFVSdzBBQ3d2T0FRQkIwS3NVTFFBQUJFQkJ6S3NVS0FJQUR3dEJxSzRVTFFBQVJRUkFRYWl1RkVFQk9nQUFDMEdBclJSQndEb1Fod1JCakswVVFjYzZFSWNFUVppdEZFR2xPaENIQkVHa3JSUkJyVG9RaHdSQnNLMFVRWnc2RUljRVFieXRGRUhPT2hDSEJFSElyUlJCdHpvUWh3UkIxSzBVUWRnOUVJY0VRZUN0RkVHTVBoQ0hCRUhzclJSQmo4QUFFSWNFUWZpdEZFR3h3UUFRaHdSQmhLNFVRYXM3RUljRVFaQ3VGRUhlUGhDSEJFR2NyaFJCN0RzUWh3UkIwS3NVUVFFNkFBQkJ6S3NVUVlDdEZEWUNBRUdBclJRTHN3SUFRZUNyRkMwQUFBUkFRZHlyRkNnQ0FBOExRWUN5RkMwQUFFVUVRRUdBc2hSQkFUb0FBQXRCNEs4VVFZODZFSWNFUWV5dkZFR0dPaENIQkVINHJ4UkI5ejRRaHdSQmhMQVVRY2crRUljRVFaQ3dGRUhWT2hDSEJFR2NzQlJCcWNBQUVJY0VRYWl3RkVHWE9oQ0hCRUcwc0JSQnJ6c1Fod1JCd0xBVVFlWThFSWNFUWN5d0ZFSFZQQkNIQkVIWXNCUkIzVHdRaHdSQjVMQVVRZkE4RUljRVFmQ3dGRUdVUGhDSEJFSDhzQlJCMDhFQUVJY0VRWWl4RkVHSFBSQ0hCRUdVc1JSQnR6d1Fod1JCb0xFVVFkVTZFSWNFUWF5eEZFSGNQUkNIQkVHNHNSUkJ0VDRRaHdSQnhMRVVRZjArRUljRVFkQ3hGRUc5UFJDSEJFSGNzUlJCNGpzUWh3UkI2TEVVUWFjN0VJY0VRZlN4RkVIUHdRQVFod1JCNEtzVVFRRTZBQUJCM0tzVVFlQ3ZGRFlDQUVIZ3J4UUxWZ0JCOEtzVUxRQUFCRUJCN0tzVUtBSUFEd3RCMkxRVUxRQUFSUVJBUWRpMEZFRUJPZ0FBQzBIQXRCUkJqOE1BRUljRVFjeTBGRUdDd3dBUWh3UkI4S3NVUVFFNkFBQkI3S3NVUWNDMEZEWUNBRUhBdEJRTEpBQkJ5S3dVTFFBQVJRUkFRYnlzRkVIMndRQVFVMEhJckJSQkFUb0FBQXRCdkt3VUN3b0FRYnlzRkJESkFob0xJd0JCNkt3VUxRQUFSUVJBUWR5c0ZFSEJQUkJUUWVpc0ZFRUJPZ0FBQzBIY3JCUUxDZ0JCM0t3VUVNa0NHZ3NqQUVHSXJCUXRBQUJGQkVCQi9Lc1VRZGs2RUZOQmlLd1VRUUU2QUFBTFFmeXJGQXNLQUVIOHF4UVF5UUlhQ3lRQVFhaXNGQzBBQUVVRVFFR2NyQlJCdHNJQUVGTkJxS3dVUVFFNkFBQUxRWnlzRkFzS0FFR2NyQlFReVFJYUN4d0FRZGkwRkNFQUEwQWdBRUVNYXhESkFpSUFRY0MwRkVjTkFBc0xod0VCQW44Q1FDQUJFQzhpQWlBQUxRQUxRWUFCY1VFSGRnUi9JQUFvQWdoQi8vLy8vd2R4UVFGckJVRUtDeUlEVFFSQUlBQWdBQ2dDQUNBQUlBQXRBQXRCZ0FGeFFRZDJHeUFCSUFJUVN5QUNFSm9DREFFTElBQWdBeUFDSUFOcklBQW9BZ1FnQUMwQUN5SUFRZjhBY1NBQVFZQUJjVUVIZGhzaUFFRUFJQUFnQWlBQkVNUUVDd3NjQUVHQXNoUWhBQU5BSUFCQkRHc1F5UUlpQUVIZ3J4UkhEUUFMQ3h3QVFhaXVGQ0VBQTBBZ0FFRU1heERKQWlJQVFZQ3RGRWNOQUFzTENRQWdBQkNMQkJBMEN4WUFJQUJCd01zVE5nSUFJQUJCRUdvUXlRSWFJQUFMQndBZ0FDZ0NDQXNIQUNBQUtBSU1Dd3dBSUFBZ0FVRVFhaEM4QXdzTEFDQUFRZURMRXhEdUF3c0xBQ0FBUWZUTEV4RHVBd3NKQUNBQUVKSUVFRFFMRmdBZ0FFR1l5eE0yQWdBZ0FFRU1haERKQWhvZ0FBc0hBQ0FBTEFBSUN3Y0FJQUFzQUFrTERBQWdBQ0FCUVF4cUVMd0RDd29BSUFCQmlzQUFFRk1MQ2dBZ0FFR2F3QUFRVXd1UEJBQWpBRUVRYXlJQUpBQWdBQ0FDTmdJTUlBQWdCVFlDQ0FKL0lBQWdBallDRENBQUlBVTJBZ2dnQUNnQ0RDRUJBa0FEUUNBQklBTlBCRUJCQUNFQ0RBSUxRUUloQWlBQktBSUFJZ0ZCLy8vREFFc05BU0FCUVlCd2NVR0FzQU5HRFFFQ1FBSkFJQUZCL3dCTkJFQkJBU0VDSUFZZ0FDZ0NDQ0lGYTBFQVRBMEVJQUFnQlVFQmFqWUNDQ0FGSUFFNkFBQU1BUXNnQVVIL0QwMEVRQ0FHSUFBb0FnZ2lBbXRCQWtnTkFpQUFJQUpCQVdvMkFnZ2dBaUFCUVFaMlFjQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQURBRUxJQVlnQUNnQ0NDSUNheUVGSUFGQi8vOERUUVJBSUFWQkEwZ05BaUFBSUFKQkFXbzJBZ2dnQWlBQlFReDJRZUFCY2pvQUFDQUFJQUFvQWdnaUFrRUJhallDQ0NBQ0lBRkJCblpCUDNGQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFL2NVR0FBWEk2QUFBTUFRc2dCVUVFU0EwQklBQWdBa0VCYWpZQ0NDQUNJQUZCRW5aQjhBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFTWRrRS9jVUdBQVhJNkFBQWdBQ0FBS0FJSUlnSkJBV28yQWdnZ0FpQUJRUVoyUVQ5eFFZQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQlAzRkJnQUZ5T2dBQUN5QUFJQUFvQWd4QkJHb2lBVFlDREF3QkN3dEJBUXdCQ3lBQ0N5RUJJQVFnQUNnQ0REWUNBQ0FISUFBb0FnZzJBZ0FnQUVFUWFpUUFJQUVMdlFRQkJYOGpBRUVRYXlJQUpBQWdBQ0FDTmdJTUlBQWdCVFlDQ0FKL0lBQWdBallDRENBQUlBVTJBZ2dDUUFKQUEwQUNRQ0FBS0FJTUlnRWdBMDhOQUNBRklBWlBEUUFnQVN3QUFDSUlRZjhCY1NFQ0FrQWdDRUVBVGdSQVFRRWhDQXdCQzBFQ0lRb2dDRUZDU1EwRElBaEJYMDBFUUNBRElBRnJRUUpJRFFVZ0FTMEFBU0lJUWNBQmNVR0FBVWNOQkNBSVFUOXhJQUpCQm5SQndBOXhjaUVDUVFJaENBd0JDeUFJUVc5TkJFQWdBeUFCYTBFRFNBMEZJQUV0QUFJaENTQUJMUUFCSVFnQ1FBSkFJQUpCN1FGSEJFQWdBa0hnQVVjTkFTQUlRZUFCY1VHZ0FVWU5BZ3dIQ3lBSVFlQUJjVUdBQVVZTkFRd0dDeUFJUWNBQmNVR0FBVWNOQlFzZ0NVSEFBWEZCZ0FGSERRUWdDVUUvY1NBQ1FReDBRWURnQTNFZ0NFRS9jVUVHZEhKeUlRSkJBeUVJREFFTElBaEJkRXNOQXlBRElBRnJRUVJJRFFRZ0FTMEFBeUVMSUFFdEFBSWhEQ0FCTFFBQklRa0NRQUpBQWtBQ1FDQUNRZkFCYXc0RkFBSUNBZ0VDQ3lBSlFmQUFha0gvQVhGQk1Fa05BZ3dHQ3lBSlFmQUJjVUdBQVVZTkFRd0ZDeUFKUWNBQmNVR0FBVWNOQkFzZ0RFSEFBWEZCZ0FGSERRTWdDMEhBQVhGQmdBRkhEUU5CQkNFSUlBdEJQM0VnREVFR2RFSEFIM0VnQWtFU2RFR0FnUEFBY1NBSlFUOXhRUXgwY25KeUlnSkIvLy9EQUVzTkF3c2dCU0FDTmdJQUlBQWdBU0FJYWpZQ0RDQUFJQUFvQWdoQkJHb2lCVFlDQ0F3QkN3c2dBU0FEU1NFS0N5QUtEQUVMUVFFTElRRWdCQ0FBS0FJTU5nSUFJQWNnQUNnQ0NEWUNBQ0FBUVJCcUpBQWdBUXNMQUNBRUlBSTJBZ0JCQXd1T0F3RUVmeUFDSVFBRFFBSkFJQUFnQTA4TkFDQUVJQWRORFFCQkFTRUZBa0FnQUN3QUFDSUJRUUJPRFFBZ0FVRkNTUTBCSUFGQlgwMEVRQ0FESUFCclFRSklEUUpCQWlFRklBQXRBQUZCd0FGeFFZQUJSdzBDREFFTElBRkIvd0Z4SVFZZ0FVRnZUUVJBSUFNZ0FHdEJBMGdOQWlBQUxRQUNJUWdnQUMwQUFTRUJBa0FDUUNBR1FlMEJSd1JBSUFaQjRBRkhEUUVnQVVIZ0FYRkJvQUZHRFFJTUJRc2dBVUhnQVhGQmdBRkhEUVFNQVFzZ0FVSEFBWEZCZ0FGSERRTUxRUU1oQlNBSVFjQUJjVUdBQVVjTkFnd0JDeUFCUVhSTERRRWdBeUFBYTBFRVNBMEJJQUF0QUFNaEJTQUFMUUFDSVFnZ0FDMEFBU0VCQWtBQ1FBSkFBa0FnQmtId0FXc09CUUFDQWdJQkFnc2dBVUh3QUdwQi93RnhRVEJQRFFRTUFnc2dBVUh3QVhGQmdBRkhEUU1NQVFzZ0FVSEFBWEZCZ0FGSERRSUxJQWhCd0FGeFFZQUJSdzBCSUFWQndBRnhRWUFCUncwQlFRUWhCU0FHUVJKMFFZQ0E4QUJ4SUFGQk1IRkJESFJ5UWYvL3d3QkxEUUVMSUFkQkFXb2hCeUFBSUFWcUlRQU1BUXNMSUFBZ0Ftc0xCQUJCQkF2SUJRRUJmeU1BUVJCcklnQWtBQ0FBSUFJMkFnd2dBQ0FGTmdJSUFuOGdBQ0FDTmdJTUlBQWdCVFlDQ0NBQUtBSU1JUUlDUUFOQUlBSWdBMDhFUUVFQUlRVU1BZ3NDUUFKQUlBSXZBUUFpQVVIL0FFMEVRRUVCSVFVZ0JpQUFLQUlJSWdKclFRQk1EUVFnQUNBQ1FRRnFOZ0lJSUFJZ0FUb0FBQXdCQ3lBQlFmOFBUUVJBSUFZZ0FDZ0NDQ0lDYTBFQ1NBMENJQUFnQWtFQmFqWUNDQ0FDSUFGQkJuWkJ3QUZ5T2dBQUlBQWdBQ2dDQ0NJQ1FRRnFOZ0lJSUFJZ0FVRS9jVUdBQVhJNkFBQU1BUXNnQVVIL3J3Tk5CRUFnQmlBQUtBSUlJZ0pyUVFOSURRSWdBQ0FDUVFGcU5nSUlJQUlnQVVFTWRrSGdBWEk2QUFBZ0FDQUFLQUlJSWdKQkFXbzJBZ2dnQWlBQlFRWjJRVDl4UVlBQmNqb0FBQ0FBSUFBb0FnZ2lBa0VCYWpZQ0NDQUNJQUZCUDNGQmdBRnlPZ0FBREFFTEFrQUNRQ0FCUWYrM0EwMEVRRUVCSVFVZ0F5QUNhMEVFU0EwR0lBSXZBUUlpQ0VHQStBTnhRWUM0QTBjTkFTQUdJQUFvQWdoclFRUklEUVlnQUNBQ1FRSnFOZ0lNSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQVVFR2RrRVBjVUVCYWlJQ1FRSjJRZkFCY2pvQUFDQUFJQUFvQWdnaUJVRUJhallDQ0NBRklBSkJCSFJCTUhFZ0FVRUNka0VQY1hKQmdBRnlPZ0FBSUFBZ0FDZ0NDQ0lDUVFGcU5nSUlJQUlnQ0VFR2RrRVBjU0FCUVFSMFFUQnhja0dBQVhJNkFBQWdBQ0FBS0FJSUlnRkJBV28yQWdnZ0FTQUlRVDl4UVlBQmNqb0FBQXdEQ3lBQlFZREFBMDhOQVF0QkFnd0ZDeUFHSUFBb0FnZ2lBbXRCQTBnTkFTQUFJQUpCQVdvMkFnZ2dBaUFCUVF4MlFlQUJjam9BQUNBQUlBQW9BZ2dpQWtFQmFqWUNDQ0FDSUFGQkJuWkJQM0ZCZ0FGeU9nQUFJQUFnQUNnQ0NDSUNRUUZxTmdJSUlBSWdBVUUvY1VHQUFYSTZBQUFMSUFBZ0FDZ0NERUVDYWlJQ05nSU1EQUVMQzBFQkRBRUxJQVVMSVFFZ0JDQUFLQUlNTmdJQUlBY2dBQ2dDQ0RZQ0FDQUFRUkJxSkFBZ0FRdWFCUUVEZnlNQVFSQnJJZ0FrQUNBQUlBSTJBZ3dnQUNBRk5nSUlBbjhnQUNBQ05nSU1JQUFnQlRZQ0NBSkFBa0FDUUFOQUFrQWdBQ2dDRENJQklBTlBEUUFnQlNBR1R3MEFJQUVzQUFBaUNFSC9BWEVoQWlBQUFuOGdDRUVBVGdSQUlBVWdBanNCQUNBQlFRRnFEQUVMUVFJaENpQUlRVUpKRFFVZ0NFRmZUUVJBSUFNZ0FXdEJBa2dOQlNBQkxRQUJJZ2hCd0FGeFFZQUJSdzBFSUFVZ0NFRS9jU0FDUVFaMFFjQVBjWEk3QVFBZ0FVRUNhZ3dCQ3lBSVFXOU5CRUFnQXlBQmEwRURTQTBGSUFFdEFBSWhDU0FCTFFBQklRZ0NRQUpBSUFKQjdRRkhCRUFnQWtIZ0FVY05BU0FJUWVBQmNVR2dBVVlOQWd3SEN5QUlRZUFCY1VHQUFVWU5BUXdHQ3lBSVFjQUJjVUdBQVVjTkJRc2dDVUhBQVhGQmdBRkhEUVFnQlNBSlFUOXhJQWhCUDNGQkJuUWdBa0VNZEhKeU93RUFJQUZCQTJvTUFRc2dDRUYwU3cwRlFRRWhDaUFESUFGclFRUklEUU1nQVMwQUF5RUpJQUV0QUFJaENDQUJMUUFCSVFFQ1FBSkFBa0FDUUNBQ1FmQUJhdzRGQUFJQ0FnRUNDeUFCUWZBQWFrSC9BWEZCTUU4TkNBd0NDeUFCUWZBQmNVR0FBVWNOQnd3QkN5QUJRY0FCY1VHQUFVY05CZ3NnQ0VIQUFYRkJnQUZIRFFVZ0NVSEFBWEZCZ0FGSERRVWdCaUFGYTBFRVNBMERRUUloQ2lBQlFReDBRWUNBREhFZ0FrRUhjU0lDUVJKMGNrSC8vOE1BU3cwRElBVWdDRUVFZGtFRGNTQUJRUUowSWdGQndBRnhJQUpCQ0hSeUlBRkJQSEZ5Y2tIQS93QnFRWUN3QTNJN0FRQWdBQ0FGUVFKcU5nSUlJQVVnQ0VFR2RFSEFCM0VnQ1VFL2NYSkJnTGdEY2pzQkFpQUFLQUlNUVFScUN6WUNEQ0FBSUFBb0FnaEJBbW9pQlRZQ0NBd0JDd3NnQVNBRFNTRUtDeUFLREFJTFFRRU1BUXRCQWdzaEFTQUVJQUFvQWd3MkFnQWdCeUFBS0FJSU5nSUFJQUJCRUdva0FDQUJDNk1EQVFSL1FRQWhBU0FDSVFBRFFBSkFJQUFnQTA4TkFDQUJJQVJQRFFCQkFTRUdBa0FnQUN3QUFDSUZRUUJPRFFBZ0JVRkNTUTBCSUFWQlgwMEVRQ0FESUFCclFRSklEUUpCQWlFR0lBQXRBQUZCd0FGeFFZQUJSdzBDREFFTElBVkIvd0Z4SVFZZ0JVRnZUUVJBSUFNZ0FHdEJBMGdOQWlBQUxRQUNJUWNnQUMwQUFTRUZBa0FDUUNBR1FlMEJSd1JBSUFaQjRBRkhEUUVnQlVIZ0FYRkJvQUZHRFFJTUJRc2dCVUhnQVhGQmdBRkhEUVFNQVFzZ0JVSEFBWEZCZ0FGSERRTUxRUU1oQmlBSFFjQUJjVUdBQVVjTkFnd0JDeUFGUVhSTERRRWdBeUFBYTBFRVNBMEJJQVFnQVd0QkFra05BU0FBTFFBRElRY2dBQzBBQWlFSUlBQXRBQUVoQlFKQUFrQUNRQUpBSUFaQjhBRnJEZ1VBQWdJQ0FRSUxJQVZCOEFCcVFmOEJjVUV3VHcwRURBSUxJQVZCOEFGeFFZQUJSdzBEREFFTElBVkJ3QUZ4UVlBQlJ3MENDeUFJUWNBQmNVR0FBVWNOQVNBSFFjQUJjVUdBQVVjTkFTQUdRUkowUVlDQThBQnhJQVZCTUhGQkRIUnlRZi8vd3dCTERRRWdBVUVCYWlFQlFRUWhCZ3NnQVVFQmFpRUJJQUFnQm1vaEFBd0JDd3NnQUNBQ2F3c0pBQ0FBRUtFRUVEUUxJUUFnQUVIb3loTTJBZ0FnQUNnQ0NCRFRBa2NFUUNBQUtBSUlFTGtDQ3lBQUM4MEZBUXQvSXdCQkVHc2lEU1FBSUFJaEFRTkFBa0FnQVNBRFJnUkFJQU1oQVF3QkN5QUJLQUlBUlEwQUlBRkJCR29oQVF3QkN3c2dCeUFGTmdJQUlBUWdBallDQUFOQUFrQUNRQUpBSUFJZ0EwWU5BQ0FGSUFaR0RRQkJBU0VPSUFBb0FnZ2hDQ01BUVJCckloRWtBQ0FSUVF4cUlBZ1E2UUloRWlBQklBSnJRUUoxSVE4Z0JpQUZJZ2hySVFwQkFDRU1Jd0JCRUdzaUVDUUFBa0FnQkNnQ0FDSUpSUTBBSUE5RkRRQWdDa0VBSUFnYklRb0RRQ0FRUVF4cUlBZ2dDa0VFU1JzZ0NTZ0NBQkRkQVNJTFFYOUdCRUJCZnlFTURBSUxJQWdFZnlBS1FRTk5CRUFnQ2lBTFNRMERJQWdnRUVFTWFpQUxFQ3NhQ3lBS0lBdHJJUW9nQ0NBTGFnVkJBQXNoQ0NBSktBSUFSUVJBUVFBaENRd0NDeUFMSUF4cUlRd2dDVUVFYWlFSklBOUJBV3NpRHcwQUN3c2dDQVJBSUFRZ0NUWUNBQXNnRUVFUWFpUUFJQXdoQ0NBU0tBSUFJZ2tFUUVHTW9CUW9BZ0FhSUFrRVFFR01vQlJCbktrVUlBa2dDVUYvUmhzMkFnQUxDeUFSUVJCcUpBQUNRQUpBQWtBQ1FBSkFJQWhCQVdvT0FnQUdBUXNnQnlBRk5nSUFBMEFDUUNBQ0lBUW9BZ0JHRFFBZ0JTQUNLQUlBSUFBb0FnZ1Fvd1FpQVVGL1JnMEFJQWNnQnlnQ0FDQUJhaUlGTmdJQUlBSkJCR29oQWd3QkN3c2dCQ0FDTmdJQURBRUxJQWNnQnlnQ0FDQUlhaUlGTmdJQUlBVWdCa1lOQWlBQklBTkdCRUFnQkNnQ0FDRUNJQU1oQVF3SEN5QU5RUXhxUVFBZ0FDZ0NDQkNqQkNJQlFYOUhEUUVMUVFJaERnd0RDeUFOUVF4cUlRSWdCaUFIS0FJQWF5QUJTUTBDQTBBZ0FRUkFJQUl0QUFBaEJTQUhJQWNvQWdBaUNFRUJhallDQUNBSUlBVTZBQUFnQVVFQmF5RUJJQUpCQVdvaEFnd0JDd3NnQkNBRUtBSUFRUVJxSWdJMkFnQWdBaUVCQTBBZ0FTQURSZ1JBSUFNaEFRd0ZDeUFCS0FJQVJRMEVJQUZCQkdvaEFRd0FDd0FMSUFRb0FnQWhBZ3NnQWlBRFJ5RU9DeUFOUVJCcUpBQWdEZzhMSUFjb0FnQWhCUXdBQ3dBTFZRRUJmeU1BUVJCcklnTWtBQ0FEUVF4cUlBSVE2UUloQWlBQUlBRVEzUUVoQVNBQ0tBSUFJZ0FFUUVHTW9CUW9BZ0FhSUFBRVFFR01vQlJCbktrVUlBQWdBRUYvUmhzMkFnQUxDeUFEUVJCcUpBQWdBUXVMQndFT2Z5TUFRUkJySWhFa0FDQUNJUWtEUUFKQUlBTWdDVVlFUUNBRElRa01BUXNnQ1MwQUFFVU5BQ0FKUVFGcUlRa01BUXNMSUFjZ0JUWUNBQ0FFSUFJMkFnQURRQUpBQW44Q1FDQUNJQU5HRFFBZ0JTQUdSZzBBSUJFZ0FTa0NBRGNEQ0NBQUtBSUlJUWdqQUVFUWF5SVRKQUFnRTBFTWFpQUlFT2tDSVJRZ0NTQUNheUVNUVFBaENrRUFJUTBqQUVHUUNHc2lEaVFBSUE0Z0JDZ0NBQ0lRTmdJTUlBWWdCV3RCQW5WQmdBSWdCUnNoQ3lBRklBNUJFR29nQlJzaER3SkFBa0FDUUFKQUlCQkZEUUFnQzBVTkFBTkFJQXhCQW5ZaENBSkFJQXhCZ3dGTERRQWdDQ0FMVHcwQUlCQWhDQXdFQ3lBUElBNUJER29nQ0NBTElBZ2dDMGtiSUFFUXVnSWhFaUFPS0FJTUlRZ2dFa0YvUmdSQVFRQWhDMEYvSVFvTUF3c2dDeUFTUVFBZ0R5QU9RUkJxUnhzaUZXc2hDeUFQSUJWQkFuUnFJUThnRENBUWFpQUlhMEVBSUFnYklRd2dDaUFTYWlFS0lBaEZEUUlnQ0NFUUlBc05BQXNNQVFzZ0VDRUlDeUFJUlEwQkN3SkFJQXRGRFFBZ0RFVU5BQ0FJSVEwZ0NpRUlBMEFDUUFKQUlBOGdEU0FNSUFFUTFBRWlDa0VDYWtFQ1RRUkFBa0FDUUNBS1FRRnFEZ0lIQUFFTFFRQWhEUXdDQ3lBQlFRQTJBZ0FNQVFzZ0RpQUtJQTFxSWcwMkFnd2dDRUVCYWlFSUlBdEJBV3NpQ3cwQkN5QUlJUW9NQXdzZ0QwRUVhaUVQSUF3Z0Ntc2hEQ0FJSVFvZ0RBMEFDd3dCQ3lBSUlRMExJQVVFUUNBRUlBMDJBZ0FMSUE1QmtBaHFKQUFnQ2lFSUlCUW9BZ0FpQ2dSQVFZeWdGQ2dDQUJvZ0NnUkFRWXlnRkVHY3FSUWdDaUFLUVg5R0d6WUNBQXNMSUJOQkVHb2tBQUpBQWtBQ1FBSkFJQWhCZjBZRVFBTkFBa0FnQnlBRk5nSUFJQUlnQkNnQ0FFWU5BRUVCSVFZQ1FBSkFBa0FnQlNBQ0lBa2dBbXNnRVVFSWFpQUFLQUlJRUtVRUlnRkJBbW9PQXdnQUFnRUxJQVFnQWpZQ0FBd0ZDeUFCSVFZTElBSWdCbW9oQWlBSEtBSUFRUVJxSVFVTUFRc0xJQVFnQWpZQ0FBd0ZDeUFISUFjb0FnQWdDRUVDZEdvaUJUWUNBQ0FGSUFaR0RRTWdCQ2dDQUNFQ0lBTWdDVVlFUUNBRElRa01DQXNnQlNBQ1FRRWdBU0FBS0FJSUVLVUVSUTBCQzBFQ0RBUUxJQWNnQnlnQ0FFRUVhallDQUNBRUlBUW9BZ0JCQVdvaUFqWUNBQ0FDSVFrRFFDQURJQWxHQkVBZ0F5RUpEQVlMSUFrdEFBQkZEUVVnQ1VFQmFpRUpEQUFMQUFzZ0JDQUNOZ0lBUVFFTUFnc2dCQ2dDQUNFQ0N5QUNJQU5IQ3lFQUlCRkJFR29rQUNBQUR3c2dCeWdDQUNFRkRBQUxBQXRaQVFGL0l3QkJFR3NpQlNRQUlBVkJER29nQkJEcEFpRUVJQUFnQVNBQ0lBTVExQUVoQVNBRUtBSUFJZ0FFUUVHTW9CUW9BZ0FhSUFBRVFFR01vQlJCbktrVUlBQWdBRUYvUmhzMkFnQUxDeUFGUVJCcUpBQWdBUXVTQVFFQmZ5TUFRUkJySWdVa0FDQUVJQUkyQWdBQ2YwRUNJQVZCREdwQkFDQUFLQUlJRUtNRUlnQkJBV3BCQWtrTkFCcEJBU0FBUVFGcklnSWdBeUFFS0FJQWEwc05BQm9nQlVFTWFpRUJBMzhnQWdSL0lBRXRBQUFoQUNBRUlBUW9BZ0FpQTBFQmFqWUNBQ0FESUFBNkFBQWdBa0VCYXlFQ0lBRkJBV29oQVF3QkJVRUFDd3NMSVFFZ0JVRVFhaVFBSUFFTFl3RUNmeUFBS0FJSUlRRWpBRUVRYXlJQ0pBQWdBa0VNYWlBQkVPa0NLQUlBSWdFRVFFR01vQlFvQWdBYUlBRUVRRUdNb0JSQm5La1VJQUVnQVVGL1JoczJBZ0FMQ3lBQ1FSQnFKQUFnQUNnQ0NDSUFSUVJBUVFFUEN5QUFFS2dFUVFGR0MxMEJBbjhqQUVFUWF5SUJKQUFnQVVFTWFpQUFFT2tDSVFCQkJFRUJRWXlnRkNnQ0FDZ0NBQnNoQWlBQUtBSUFJZ0FFUUVHTW9CUW9BZ0FhSUFBRVFFR01vQlJCbktrVUlBQWdBRUYvUmhzMkFnQUxDeUFCUVJCcUpBQWdBZ3V1QVFFR2Z3TkFBa0FnQkNBSVRRMEFJQUlnQTBZTkFFRUJJUWNnQUNnQ0NDRUdJd0JCRUdzaUNTUUFJQWxCREdvZ0JoRHBBaUVGUVFBZ0FpQURJQUpySUFGQnRLa1VJQUViRU5RQklRWWdCU2dDQUNJRkJFQkJqS0FVS0FJQUdpQUZCRUJCaktBVVFaeXBGQ0FGSUFWQmYwWWJOZ0lBQ3dzZ0NVRVFhaVFBQWtBQ1FDQUdRUUpxRGdNQ0FnRUFDeUFHSVFjTElBaEJBV29oQ0NBSElBcHFJUW9nQWlBSGFpRUNEQUVMQ3lBS0N4VUFJQUFvQWdnaUFFVUVRRUVCRHdzZ0FCQ29CQXNTQUNBRUlBSTJBZ0FnQnlBRk5nSUFRUU1MUkFBakFFRVFheUlBSkFBZ0FDQUVOZ0lNSUFBZ0F5QUNhellDQ0NBQVFRaHFJZ0VnQUVFTWFpSUNJQUVvQWdBZ0FpZ0NBRWtiS0FJQUlRRWdBRUVRYWlRQUlBRUxKUUJCQUNFQUlBSkIvd0JOQkg4Z0FrRUNkRUhnd2hOcUtBSUFJQUZ4UVFCSEJVRUFDd3RKQVFGL0EwQWdBU0FDUmtVRVFFRUFJUUFnQXlBQktBSUFJZ1JCL3dCTkJIOGdCRUVDZEVIZ3doTnFLQUlBQlVFQUN6WUNBQ0FEUVFScUlRTWdBVUVFYWlFQkRBRUxDeUFDQzBBQUEwQUNRQ0FDSUFOSEJIOGdBaWdDQUNJQVFmOEFTdzBCSUFCQkFuUkI0TUlUYWlnQ0FDQUJjVVVOQVNBQ0JTQURDdzhMSUFKQkJHb2hBZ3dBQ3dBTFFRQUNRQU5BSUFJZ0EwWU5BUUpBSUFJb0FnQWlBRUgvQUVzTkFDQUFRUUowUWVEQ0Uyb29BZ0FnQVhGRkRRQWdBa0VFYWlFQ0RBRUxDeUFDSVFNTElBTUxHd0FnQVVIL0FFMEVmeUFCUVFKMFFkQzJFMm9vQWdBRklBRUxDendBQTBBZ0FTQUNSa1VFUUNBQklBRW9BZ0FpQUVIL0FFMEVmeUFBUVFKMFFkQzJFMm9vQWdBRklBQUxOZ0lBSUFGQkJHb2hBUXdCQ3dzZ0Fnc2JBQ0FCUWY4QVRRUi9JQUZCQW5SQjBLb1RhaWdDQUFVZ0FRc0xQQUFEUUNBQklBSkdSUVJBSUFFZ0FTZ0NBQ0lBUWY4QVRRUi9JQUJCQW5SQjBLb1RhaWdDQUFVZ0FBczJBZ0FnQVVFRWFpRUJEQUVMQ3lBQ0N5b0FBMEFnQVNBQ1JrVUVRQ0FESUFFc0FBQTJBZ0FnQTBFRWFpRURJQUZCQVdvaEFRd0JDd3NnQWdzT0FDQUJJQUlnQVVHQUFVa2J3QXMxQUFOQUlBRWdBa1pGQkVBZ0JDQUJLQUlBSWdBZ0F5QUFRWUFCU1JzNkFBQWdCRUVCYWlFRUlBRkJCR29oQVF3QkN3c2dBZ3NKQUNBQUVMa0VFRFFMS0FFQmZ5QUFRYXpDRXpZQ0FBSkFJQUFvQWdnaUFVVU5BQ0FBTFFBTVJRMEFJQUVRTkFzZ0FBc2ZBQ0FCUVFCT0JIOGdBVUgvQVhGQkFuUkIwTFlUYWlnQ0FBVWdBUXZBQ3pzQUEwQWdBU0FDUmtVRVFDQUJJQUVzQUFBaUFFRUFUZ1IvSUFCQkFuUkIwTFlUYWlnQ0FBVWdBQXM2QUFBZ0FVRUJhaUVCREFFTEN5QUNDeDhBSUFGQkFFNEVmeUFCUWY4QmNVRUNkRUhRcWhOcUtBSUFCU0FCQzhBTE93QURRQ0FCSUFKR1JRUkFJQUVnQVN3QUFDSUFRUUJPQkg4Z0FFRUNkRUhRcWhOcUtBSUFCU0FBQ3pvQUFDQUJRUUZxSVFFTUFRc0xJQUlMS2dBRFFDQUJJQUpHUlFSQUlBTWdBUzBBQURvQUFDQURRUUZxSVFNZ0FVRUJhaUVCREFFTEN5QUNDd3dBSUFJZ0FTQUJRUUJJR3dzMEFBTkFJQUVnQWtaRkJFQWdCQ0FESUFFc0FBQWlBQ0FBUVFCSUd6b0FBQ0FFUVFGcUlRUWdBVUVCYWlFQkRBRUxDeUFDQ3drQUlBQVF3Z1FRTkF1K0FRRUVmeUFBUVpqQ0V6WUNBQ0FBUVFocUlRTURRQ0FDSUFBb0Fnd2dBQ2dDQ0NJQmEwRUNkVWtFUUNBQklBSkJBblJxS0FJQUlnRUVRQ0FCSUFFb0FnUkJBV3NpQkRZQ0JDQUVRWDlHQkVBZ0FTQUJLQUlBS0FJSUVRRUFDd3NnQWtFQmFpRUNEQUVMQ3lBQVFaZ0JhaERKQWhvakFFRVFheUlCSkFBZ0FTQUROZ0lNSUFFb0Fnd2lBaWdDQUFSQUlBSVE0QU1nQVNnQ0RDSUNRUkJxSUFJb0FnQWlBeUFDS0FJSUlBTnJRUUoxRU9VREN5QUJRUkJxSkFBZ0FBc0RBQUFMdlFJQkEzOGpBRUVRYXlJSUpBQWdBa0h1Ly8vL0J5QUJhMDBFUUNBQUtBSUFJQUFnQUMwQUMwR0FBWEZCQjNZYklRa2dDRUVFYWlBQlFlYi8vLzhEVFFSL0lBZ2dBVUVCZERZQ0RDQUlJQUVnQW1vMkFnUWdDRUVNYWlJQ0lBaEJCR29pQ2lBS0tBSUFJQUlvQWdCSkd5Z0NBQ0lDUVF0UEJIOGdBa0VRYWtGd2NTSUNJQUpCQVdzaUFpQUNRUXRHR3dWQkNndEJBV29GUWUvLy8vOEhDeENZQWlBSUtBSUVJUUlnQkFSQUlBSWdDU0FFRU9vQkdnc2dCZ1JBSUFJZ0JHb2dCeUFHRU9vQkdnc2dBeUFFSUFWcUlncHJJUWNnQXlBS1J3UkFJQUlnQkdvZ0Jtb2dCQ0FKYWlBRmFpQUhFT29CR2dzZ0FVRUtSd1JBSUFrUU5Bc2dBQ0FDTmdJQUlBQWdDQ2dDQ0VHQWdJQ0FlSEkyQWdnZ0FDQUVJQVpxSUFkcUlnQTJBZ1FnQUNBQ2FrRUFPZ0FBSUFoQkVHb2tBQThMRUZVQUM4b0NBUU4vSXdCQkVHc2lDQ1FBSUFKQjd2Ly8vd01nQVd0TkJFQWdBQ2dDQUNBQUlBQXRBQXRCZ0FGeFFRZDJHeUVKSUFoQkJHb2dBVUhtLy8vL0FVMEVmeUFJSUFGQkFYUTJBZ3dnQ0NBQklBSnFOZ0lFSUFoQkRHb2dDRUVFYWlBSUtBSUVJQWdvQWd4Skd5Z0NBQ0lDUVFKUEJIOGdBa0VFYWtGOGNTSUNJQUpCQVdzaUFpQUNRUUpHR3dWQkFRdEJBV29GUWUvLy8vOERDeEREQWlBSUtBSUVJUUlnQkFSQUlBSWdDU0FFRUlvQ0dnc2dCZ1JBSUFJZ0JFRUNkR29nQnlBR0VJb0NHZ3NnQXlBRUlBVnFJZ3BySVFjZ0F5QUtSd1JBSUFJZ0JFRUNkQ0lEYWlBR1FRSjBhaUFESUFscUlBVkJBblJxSUFjUWlnSWFDeUFCUVFGSEJFQWdDUkEwQ3lBQUlBSTJBZ0FnQUNBSUtBSUlRWUNBZ0lCNGNqWUNDQ0FBSUFRZ0Jtb2dCMm9pQURZQ0JDQUNJQUJCQW5ScVFRQTJBZ0FnQ0VFUWFpUUFEd3NRVlFBTHV3SUJBWDhnQVVHL2hEMU5CRUFnQVVHUHpnQk5CRUFnQVVIakFFMEVRQ0FCUVFsTkJFQWdBQ0FCUVRCcU9nQUFJQUJCQVdvUEN5QUFJQUVReHdRUEN5QUJRZWNIVFFSQUlBQWdBVUhrQUc0aUFrRXdham9BQUNBQVFRRnFJQUpCbkg5c0lBRnFFTWNFRHdzZ0FDQUJFTWdFRHdzZ0FVR2ZqUVpOQkVBZ0FDQUJRWkRPQUc0aUFrRXdham9BQUNBQVFRRnFJQUpCOExGL2JDQUJhaERJQkE4TElBQWdBUkRKQkE4TElBRkIvOEhYTDAwRVFDQUJRZitzNGdSTkJFQWdBQ0FCUWNDRVBXNGlBa0V3YWpvQUFDQUFRUUZxSUFKQndQdENiQ0FCYWhESkJBOExJQUFnQVJES0JBOExJQUZCLzVQcjNBTk5CRUFnQUNBQlFZREMxeTl1SWdKQk1HbzZBQUFnQUVFQmFpQUNRWUMrcUZCc0lBRnFFTW9FRHdzZ0FDQUJRWURDMXk5dUlnQVF4d1FnQUVHQXZxaFFiQ0FCYWhES0JBc1lBQ0FCUVFGMFFkRDJFMm9pQVNBQlFRSnFJQUFRN3dFTEd3QWdBQ0FCUWVRQWJpSUFFTWNFSUFCQm5IOXNJQUZxRU1jRUN4MEFJQUFnQVVHUXpnQnVJZ0FReHdRZ0FFSHdzWDlzSUFGcUVNZ0VDeDBBSUFBZ0FVSEFoRDF1SWdBUXh3UWdBRUhBKzBKc0lBRnFFTWtFQzRBQ0FRRi9Jd0JCRUdzaUFTUUFRZUx0RWtFTFFRRkJ5SUlVRUMwYUlBRkJBRFlDREVISWdoUWdBRUVBRU13QkdnSkFBa0JCbElNVUtBSUFJZ0JCQUU0RVFDQUFSUTBCUWNTZkZDZ0NBQ0FBUWYvLy8vOTdjVWNOQVFzQ1FFR1lneFFvQWdCQkNrWU5BRUhjZ2hRb0FnQWlBRUhZZ2hRb0FnQkdEUUJCM0lJVUlBQkJBV28yQWdBZ0FFRUtPZ0FBREFJTEVDNE1BUXRCbElNVVFaU0RGQ2dDQUNJQVFmLy8vLzhESUFBYk5nSUFBa0FDUUVHWWd4UW9BZ0JCQ2tZTkFFSGNnaFFvQWdBaUFFSFlnaFFvQWdCR0RRQkIzSUlVSUFCQkFXbzJBZ0FnQUVFS09nQUFEQUVMRUM0TFFaU0RGQ2dDQUJwQmxJTVVRUUEyQWdBTEVCMEFDd2tBUVk4L0VNc0VBQXNaQUNBQUJFQkJpSVlVS0FJQUVRa0FRWW5CQUJETEJBQUxDd29BUWF6dEVoRExCQUFMQ3dBZ0FDQUJRUUFRMEFRTExRQWdBa1VFUUNBQUtBSUVJQUVvQWdSR0R3c2dBQ0FCUmdSQVFRRVBDeUFBS0FJRUlBRW9BZ1FRd0FGRkM1OEJBUUYvSXdCQlFHb2lBeVFBQW45QkFTQUFJQUZCQUJEUUJBMEFHa0VBSUFGRkRRQWFRUUFnQVVHdytoTVEwZ1FpQVVVTkFCb2dBMEVNYWtFQVFUUVFLUm9nQTBFQk5nSTRJQU5CZnpZQ0ZDQURJQUEyQWhBZ0F5QUJOZ0lJSUFFZ0EwRUlhaUFDS0FJQVFRRWdBU2dDQUNnQ0hCRUtBQ0FES0FJZ0lnQkJBVVlFUUNBQ0lBTW9BaGcyQWdBTElBQkJBVVlMSVFBZ0EwRkFheVFBSUFBTHV3SUJCSDhqQUVGQWFpSUNKQUFnQUNnQ0FDSURRUVJyS0FJQUlRUWdBMEVJYXlnQ0FDRUZJQUpDQURjQ0hDQUNRZ0EzQWlRZ0FrSUFOd0lzSUFKQ0FEY0NORUVBSVFNZ0FrRUFOZ0E3SUFKQ0FEY0NGQ0FDUVlENkV6WUNFQ0FDSUFBMkFnd2dBaUFCTmdJSUlBQWdCV29oQUFKQUlBUWdBVUVBRU5BRUJFQWdBa0VCTmdJNElBUWdBa0VJYWlBQUlBQkJBVUVBSUFRb0FnQW9BaFFSREFBZ0FFRUFJQUlvQWlCQkFVWWJJUU1NQVFzZ0JDQUNRUWhxSUFCQkFVRUFJQVFvQWdBb0FoZ1JEUUFDUUFKQUlBSW9BaXdPQWdBQkFnc2dBaWdDSEVFQUlBSW9BaWhCQVVZYlFRQWdBaWdDSkVFQlJodEJBQ0FDS0FJd1FRRkdHeUVEREFFTElBSW9BaUJCQVVjRVFDQUNLQUl3RFFFZ0FpZ0NKRUVCUncwQklBSW9BaWhCQVVjTkFRc2dBaWdDR0NFREN5QUNRVUJySkFBZ0F3czVBQ0FBSUFFb0FnZ2dCUkRRQkFSQUlBRWdBaUFESUFRUTFBUVBDeUFBS0FJSUlnQWdBU0FDSUFNZ0JDQUZJQUFvQWdBb0FoUVJEQUFMbWdFQUlBQkJBVG9BTlFKQUlBQW9BZ1FnQWtjTkFDQUFRUUU2QURRQ1FDQUFLQUlRSWdKRkJFQWdBRUVCTmdJa0lBQWdBellDR0NBQUlBRTJBaEFnQTBFQlJ3MENJQUFvQWpCQkFVWU5BUXdDQ3lBQklBSkdCRUFnQUNnQ0dDSUNRUUpHQkVBZ0FDQUROZ0lZSUFNaEFnc2dBQ2dDTUVFQlJ3MENJQUpCQVVZTkFRd0NDeUFBSUFBb0FpUkJBV28yQWlRTElBQkJBVG9BTmdzTGlnSUFJQUFnQVNnQ0NDQUVFTkFFQkVBQ1FDQUJLQUlFSUFKSERRQWdBU2dDSEVFQlJnMEFJQUVnQXpZQ0hBc1BDd0pBSUFBZ0FTZ0NBQ0FFRU5BRUJFQUNRQ0FDSUFFb0FoQkhCRUFnQVNnQ0ZDQUNSdzBCQ3lBRFFRRkhEUUlnQVVFQk5nSWdEd3NnQVNBRE5nSWdBa0FnQVNnQ0xFRUVSZzBBSUFGQkFEc0JOQ0FBS0FJSUlnQWdBU0FDSUFKQkFTQUVJQUFvQWdBb0FoUVJEQUFnQVMwQU5RUkFJQUZCQXpZQ0xDQUJMUUEwUlEwQkRBTUxJQUZCQkRZQ0xBc2dBU0FDTmdJVUlBRWdBU2dDS0VFQmFqWUNLQ0FCS0FJa1FRRkhEUUVnQVNnQ0dFRUNSdzBCSUFGQkFUb0FOZzhMSUFBb0FnZ2lBQ0FCSUFJZ0F5QUVJQUFvQWdBb0FoZ1JEUUFMQ3pNQUlBQWdBU2dDQ0VFQUVOQUVCRUFnQVNBQ0lBTVExd1FQQ3lBQUtBSUlJZ0FnQVNBQ0lBTWdBQ2dDQUNnQ0hCRUtBQXRkQVFGL0lBQW9BaEFpQTBVRVFDQUFRUUUyQWlRZ0FDQUNOZ0lZSUFBZ0FUWUNFQThMQWtBZ0FTQURSZ1JBSUFBb0FoaEJBa2NOQVNBQUlBSTJBaGdQQ3lBQVFRRTZBRFlnQUVFQ05nSVlJQUFnQUNnQ0pFRUJhallDSkFzTEdnQWdBQ0FCS0FJSVFRQVEwQVFFUUNBQklBSWdBeERYQkFzTFJBQWdBQ0FDQW45QkFDQURSUTBBR2lBQlFRaDFJZ0lnQVVFQmNVVU5BQm9nQWlBREtBSUFhaWdDQUFzZ0Eyb2dCRUVDSUFGQkFuRWJJQUFvQWdBb0Fod1JDZ0FMZWdFQ2Z5QUFJQUVvQWdoQkFCRFFCQVJBSUFFZ0FpQURFTmNFRHdzZ0FDZ0NEQ0VGSUFBb0FoQWdBQ2dDRkNBQklBSWdBeERaQkFKQUlBQkJHR29pQkNBQVFSQnFJQVZCQTNScUlnQlBEUUFEUUNBRUtBSUFJQVFvQWdRZ0FTQUNJQU1RMlFRZ0FTMEFOZzBCSUFSQkNHb2lCQ0FBU1EwQUN3c0w0Z1FCQlg4akFFRkFhaUlGSkFBQ1FDQUJRZXo4RTBFQUVOQUVCRUFnQWtFQU5nSUFRUUVoQkF3QkN3Si9JQUF0QUFoQkdIRUVRQ0FBSUFGQkFSRFFCQXdCQ3dKQUlBRkZEUUFnQVVIZytoTVEwZ1FpQmtVTkFDQUFJQUVnQmlnQ0NFRVljVUVBUnhEUUJDRURDeUFEQ3dSQVFRRWhCQ0FDS0FJQUlnQkZEUUVnQWlBQUtBSUFOZ0lBREFFTElBRkZEUUFnQVVHUSt4TVEwZ1FpQVVVTkFDQUNLQUlBSWdNRVFDQUNJQU1vQWdBaUJ6WUNBQXNnQVNnQ0NDSURJQUFvQWdnaUJrRi9jM0ZCQjNFTkFDQURRWDl6SUFaeFFlQUFjUTBBUVFFaEJDQUFLQUlNSWdNZ0FTZ0NEQ0lBUVFBUTBBUU5BQ0FEUWVEOEUwRUFFTkFFQkVBZ0FFVU5BU0FBUWNUN0V4RFNCRVVoQkF3QkMwRUFJUVFnQTBVTkFDQURRWkQ3RXhEU0JDSUJCRUFnQmtFQmNVVU5BUUovQWtBRFFDQUFSUTBCSUFCQmtQc1RFTklFSWdCRkRRRWdBQ2dDQ0NBQktBSUlJZ05CZjNOeERRRkJBU0FCS0FJTUlnSWdBQ2dDRENJQVFRQVEwQVFOQWhvZ0EwRUJjVVVOQVNBQ1JRMEJJQUpCa1BzVEVOSUVJZ0VOQUFzZ0FrR0EvQk1RMGdRaUFVVU5BQ0FCSUFBUTNBUWhCQXNnQkFzaEJBd0JDeUFEUVlEOEV4RFNCQ0lCQkVBZ0JrRUJjVVVOQVNBQklBQVEzQVFoQkF3QkN5QURRYkQ2RXhEU0JDSUJSUTBBSUFCRkRRQWdBRUd3K2hNUTBnUWlBRVVOQUNBRlFReHFRUUJCTkJBcEdpQUZRUUUyQWpnZ0JVRi9OZ0lVSUFVZ0FUWUNFQ0FGSUFBMkFnZ2dBQ0FGUVFocUlBZEJBU0FBS0FJQUtBSWNFUW9BQWtBZ0JTZ0NJQ0lBUVFGSERRQWdBaWdDQUVVTkFDQUNJQVVvQWhnMkFnQUxJQUJCQVVZaEJBc2dCVUZBYXlRQUlBUUxUd0VCZndKQUlBRkZEUUFnQVVHQS9CTVEwZ1FpQVVVTkFDQUJLQUlJSUFBb0FnaEJmM054RFFBZ0FDZ0NEQ0FCS0FJTVFRQVEwQVJGRFFBZ0FDZ0NFQ0FCS0FJUVFRQVEwQVFoQWdzZ0FndldCQUVEZnlBQUlBRW9BZ2dnQkJEUUJBUkFBa0FnQVNnQ0JDQUNSdzBBSUFFb0FoeEJBVVlOQUNBQklBTTJBaHdMRHdzQ1FDQUFJQUVvQWdBZ0JCRFFCQVJBQWtBZ0FpQUJLQUlRUndSQUlBRW9BaFFnQWtjTkFRc2dBMEVCUncwQ0lBRkJBVFlDSUE4TElBRWdBellDSUNBQktBSXNRUVJIQkVBZ0FFRVFhaUlGSUFBb0FneEJBM1JxSVFkQkFDRURJQUVDZndKQUEwQUNRQ0FGSUFkUERRQWdBVUVBT3dFMElBVW9BZ0FnQlNnQ0JDQUJJQUlnQWtFQklBUVEzZ1FnQVMwQU5nMEFBa0FnQVMwQU5VVU5BQ0FCTFFBMEJFQkJBU0VESUFFb0FoaEJBVVlOQkVFQklRWWdBQzBBQ0VFQ2NRMEJEQVFMUVFFaEJpQUFMUUFJUVFGeFJRMERDeUFGUVFocUlRVU1BUXNMUVFRZ0JrVU5BUm9MUVFNTE5nSXNJQU5CQVhFTkFnc2dBU0FDTmdJVUlBRWdBU2dDS0VFQmFqWUNLQ0FCS0FJa1FRRkhEUUVnQVNnQ0dFRUNSdzBCSUFGQkFUb0FOZzhMSUFBb0Fnd2hCaUFBS0FJUUlBQW9BaFFnQVNBQ0lBTWdCQkRmQkNBQVFSaHFJZ1VnQUVFUWFpQUdRUU4wYWlJR1R3MEFBa0FnQUNnQ0NDSUFRUUp4UlFSQUlBRW9BaVJCQVVjTkFRc0RRQ0FCTFFBMkRRSWdCU2dDQUNBRktBSUVJQUVnQWlBRElBUVEzd1FnQlVFSWFpSUZJQVpKRFFBTERBRUxJQUJCQVhGRkJFQURRQ0FCTFFBMkRRSWdBU2dDSkVFQlJnMENJQVVvQWdBZ0JTZ0NCQ0FCSUFJZ0F5QUVFTjhFSUFWQkNHb2lCU0FHU1EwQURBSUxBQXNEUUNBQkxRQTJEUUVnQVNnQ0pFRUJSZ1JBSUFFb0FoaEJBVVlOQWdzZ0JTZ0NBQ0FGS0FJRUlBRWdBaUFESUFRUTN3UWdCVUVJYWlJRklBWkpEUUFMQ3d0QkFRRi9JQUZCQ0hVaEJ5QUFJQUlnQXlBQlFRRnhCSDhnQnlBRUtBSUFhaWdDQUFVZ0J3c2dCR29nQlVFQ0lBRkJBbkViSUFZZ0FDZ0NBQ2dDRkJFTUFBcy9BUUYvSUFGQkNIVWhCaUFBSUFJZ0FVRUJjUVIvSUFZZ0F5Z0NBR29vQWdBRklBWUxJQU5xSUFSQkFpQUJRUUp4R3lBRklBQW9BZ0FvQWhnUkRRQUxxUUVBSUFBZ0FTZ0NDQ0FFRU5BRUJFQUNRQ0FCS0FJRUlBSkhEUUFnQVNnQ0hFRUJSZzBBSUFFZ0F6WUNIQXNQQ3dKQUlBQWdBU2dDQUNBRUVOQUVSUTBBQWtBZ0FpQUJLQUlRUndSQUlBRW9BaFFnQWtjTkFRc2dBMEVCUncwQklBRkJBVFlDSUE4TElBRWdBallDRkNBQklBTTJBaUFnQVNBQktBSW9RUUZxTmdJb0FrQWdBU2dDSkVFQlJ3MEFJQUVvQWhoQkFrY05BQ0FCUVFFNkFEWUxJQUZCQkRZQ0xBc0xvUUlCQm44Z0FDQUJLQUlJSUFVUTBBUUVRQ0FCSUFJZ0F5QUVFTlFFRHdzZ0FTMEFOU0VHSUFBb0Fnd2hDQ0FCUVFBNkFEVWdBUzBBTkNFSElBRkJBRG9BTkNBQUtBSVFJQUFvQWhRZ0FTQUNJQU1nQkNBRkVONEVJQVlnQVMwQU5TSUtjaUVKSUFjZ0FTMEFOQ0lMY2lFSEFrQWdBRUVZYWlJR0lBQkJFR29nQ0VFRGRHb2lDRThOQUFOQUlBRXRBRFlOQVFKQUlBc0VRQ0FCS0FJWVFRRkdEUU1nQUMwQUNFRUNjUTBCREFNTElBcEZEUUFnQUMwQUNFRUJjVVVOQWdzZ0FVRUFPd0UwSUFZb0FnQWdCaWdDQkNBQklBSWdBeUFFSUFVUTNnUWdBUzBBTlNJS0lBbHlJUWtnQVMwQU5DSUxJQWR5SVFjZ0JrRUlhaUlHSUFoSkRRQUxDeUFCSUFsQi93RnhRUUJIT2dBMUlBRWdCMEgvQVhGQkFFYzZBRFFMSEFBZ0FDQUJLQUlJSUFVUTBBUUVRQ0FCSUFJZ0F5QUVFTlFFQ3dzWEFDQUFSUVJBUVFBUEN5QUFRWkQ3RXhEU0JFRUFSd3NGQUVIZ1BRc0dBRUcxd1FBTEJRQkI0ajRMQ0FBZ0FCQmFFRFFMQndBZ0FDZ0NCQXVaQVFFRGZDQUFJQUNpSWdNZ0F5QURvcUlnQTBSODFjOWFPdG5sUGFKRTY1d3JpdWJsV3I2Z29pQURJQU5FZmY2eFYrTWR4ejZpUk5WaHdSbWdBU3Evb0tKRXB2Z1FFUkVSZ1QrZ29DRUZJQU1nQUtJaEJDQUNSUVJBSUFRZ0F5QUZva1JKVlZWVlZWWEZ2NkNpSUFDZ0R3c2dBQ0FESUFGRUFBQUFBQUFBNEQraUlBVWdCS0tob2lBQm9TQUVSRWxWVlZWVlZjVS9vcUNoQzVJQkFRTjhSQUFBQUFBQUFQQS9JQUFnQUtJaUFrUUFBQUFBQUFEZ1A2SWlBNkVpQkVRQUFBQUFBQUR3UHlBRW9TQURvU0FDSUFJZ0FpQUNSSkFWeXhtZ0Fmbytva1IzVWNFV2JNRld2NkNpUkV4VlZWVlZWYVUvb0tJZ0FpQUNvaUlESUFPaUlBSWdBa1RVT0lpKzZmcW92YUpFeExHMHZaN3VJVDZnb2tTdFVweUFUMzZTdnFDaW9LSWdBQ0FCb3FHZ29Bc2lBUUYrSUFFZ0FxMGdBNjFDSUlhRUlBUWdBQkVXQUNJRlFpQ0lweVFCSUFXbkN4a0FJQUVnQWlBRHJTQUVyVUlnaG9RZ0JTQUdJQUFSSlFBTEdRQWdBU0FDSUFNZ0JDQUZyU0FHclVJZ2hvUWdBQkVVQUFzakFDQUJJQUlnQXlBRUlBV3RJQWF0UWlDR2hDQUhyU0FJclVJZ2hvUWdBQkVkQUFzbEFDQUJJQUlnQXlBRUlBVWdCcTBnQjYxQ0lJYUVJQWl0SUFtdFFpQ0doQ0FBRVI0QUN4d0FJQUFnQVVFSUlBS25JQUpDSUlpbklBT25JQU5DSUlpbkVDRUxDOC9oRTdvQkFFR0FDQXR3L29JclpVY1ZaMEFBQUFBQUFBQTRRd0FBK3Y1Q0xuYS9PanVldkpyM0RMMjkvZi8vLy8vZlB6eFVWVlZWVmNVL2tTc1h6MVZWcFQ4WDBLUm5FUkdCUHdBQUFBQUFBTWhDN3puNi9rSXU1ajhreElML3ZiL09QN1gwRE5jSWE2dy96RkJHMHF1eWd6K0VPazZiNE5kVlB3QkIvZ2dMd2hEd1AyNi9pQnBQTzVzOE5UUDdxVDMyN3o5ZDNOaWNFMkJ4dkdHQWR6NmE3TzgvMFdhSEVIcGVrTHlGZjI3b0ZlUHZQeFAyWnpWUzBvdzhkSVVWMDdEWjd6LzZqdmtqZ002THZONzIzU2xyME84L1ljam1ZVTczWUR6SW0zVVlSY2Z2UDVuVE0xdmtvNUE4Zy9QR3lqNis3ejl0ZTROZHBwcVhQQStKK1d4WXRlOC8vTy85a2hxMWpqejNSM0lya3F6dlA5R2NMM0E5dmo0OG90SFRNdXlqN3o4TGJwQ0pOQU5xdkJ2VC9xOW1tKzgvRHIwdktsSldsYnhSV3hMUUFaUHZQMVhxVG96dmdGQzh6REZzd0wySzd6OFc5Tlc1SThtUnZPQXRxYTZhZ3U4L3IxVmM2ZVBUZ0R4UmpxWEltSHJ2UDBpVHBlb1ZHNEM4ZTFGOVBMaHk3ejg5TXQ1VjhCK1B2T3FOakRqNWF1OC92MU1UUDR5Sml6eDF5Mi9yVzJQdlB5YnJFWGFjMlphODFGd0VoT0JiN3o5Z0x6bys5K3lhUEtxNWFER0hWTzgvblRpR3k0TG5qN3dkMmZ3aVVFM3ZQNDNEcGtSQmI0bzgxb3hpaUR0Rzd6OTlCT1N3QlhxQVBKYmNmWkZKUCs4L2xLaW80LzJPbGp3NFluVnVlamp2UDMxSWRQSVlYb2M4UDZheVQ4NHg3ei95NXgrWUswZUFQTjE4NG1WRksrOC9YZ2h4UDN1NGxyeUJZL1hoM3lUdlB6R3JDVzNoOTRJODRkNGY5WjBlN3ovNnYyOGFteUU5dkpEWjJ0Qi9HTzgvdEFvTWNvSTNpendMQStTbWhSTHZQNC9Mem9tU0ZHNDhWaTgrcWE4TTd6KzJxN0JOZFUyRFBCVzNNUXIrQnU4L1RIU3M0Z0ZDaGp3eDJFejhjQUh2UDByNDAxMDUzWTg4L3haa3Nnajg3ajhFVzQ0N2dLT0d2UEdma2wvRjl1NC9hRkJMek8xS2tyekxxVG8zcC9IdVA0NHRVUnY0QjVtOFp0Z0ZiYTdzN2ovU05wUSs2TkZ4dlBlZjVUVGI1KzQvRlJ2T3N4a1ptYnpscUJQRExlUHVQMjFNS3FkSW40VThJalFTVEtiZTdqK0thU2g2WUJLVHZCeUFyQVJGMnU0L1c0a1hTSStuV0x3cUx2Y2hDdGJ1UHh1YVNXZWJMSHk4bDZoUTJmWFI3ajhSck1KZzdXTkRQQzJKWVdBSXp1NC83MlFHT3dsbWxqeFhBQjN0UWNydVAza0RvZHJoekc0ODBEekJ0YUxHN2o4d0VnOC9qditUUE43VDEvQXF3KzQvc0s5NnU4NlFkanduS2piVjJyL3VQM2ZnVk91OUhaTThEZDM5bWJLODdqK09vM0VBTkpTUHZLY3NuWGF5dWU0L1NhT1QzTXplaDd4Q1pzK2kycmJ1UDE4NEQ3M0czbmk4Z2srZFZpdTA3ai8yWEh2c1JoS0d2QStTWGNxa3NlNC9qdGY5R0FVMWt6emFKN1UyUjYvdVB3V2JpaSszbUhzOC9jZVgxQkt0N2o4SlZCemk0V09RUENsVVNOMEhxKzQvNnNZWlVJWEhORHkzUmxtS0pxbnVQelhBWkN2bU1wUThTQ0d0RlcrbjdqK2ZkcGxoU3VTTXZBbmNkcm5ocGU0L3FFM3ZPOFV6akx5RlZUcXdmcVR1UDY3cEs0bDRVNFM4SU1QTU5FYWo3ajlZV0ZaNDNjNlR2Q1VpVllJNG91NC9aQmwrZ0tvUVZ6eHpxVXpVVmFIdVB5Z2lYci92czVPOHpUdC9acDZnN2orQ3VUU0hyUkpxdkwvYUMzVVNvTzQvN3FsdHVPOW5ZN3d2R21VOHNwL3VQMUdJNEZROTNJQzhoSlJSK1gyZjdqL1BQbHArWkI5NHZIUmY3T2gxbis0L3NIMkx3RXJ1aHJ4MGdhVkltcC91UDRybVZSNHlHWWE4eVdkQ1Z1dWY3ai9UMUFsZXk1eVFQRDlkM2s5cG9PNC9IYVZOdWR3eWU3eUhBZXR6RktIdVAydkFaMVQ5N0pROE1zRXdBZTJoN2o5VmJOYXI0ZXRsUEdKT3p6YnpvdTQvUXMrekw4V2hpTHdTR2o1VUo2VHVQelEzTy9HMmFaTzhFODVNbVltbDdqOGUveGs2aEY2QXZLM0hJMFlhcCs0L2JsZHkyRkRVbEx6dGtrU2IyYWp1UHdDS0RsdG5yWkE4bVdhSzJjZXE3aiswNnZEQkw3ZU5QTnVnS2tMbHJPNC8vK2ZGbkdDMlpieU1STFVXTXEvdVAwUmY4MW1EOW5zOE5uY1ZtYTZ4N2orRFBSNm5Id21Udk1iL2tRdGJ0TzQvS1I1c2k3aXBYYnpseGMyd043ZnVQMW01a0h6NUkyeThEMUxJeTBTNjdqK3ErZlFpUTBPU3ZGQk8zcCtDdmU0L1M0NW0xMnpLaGJ5NkI4cHc4Y0R1UHlmT2tTdjhyM0U4a1BDamdwSEU3ais3Y3dyaE5kSnRQQ01qNHhsanlPNC9ZeUppSWdURmg3eGw1VjE3WnN6dVA5VXg0dU9HSElzOE15MUs3SnZRN2o4VnU3elQwYnVSdkYwbFBySUQxZTQvMGpIdW5ESE1rRHhZc3pBVG50bnVQN05hYzI2RWFZUTh2LzE1Vld2ZTdqKzBuWTZYemQrQ3ZIcnowNzlyNCs0L2h6UExrbmNhakR5dDAxcVpuK2p1UC9yWjBVcVBlNUM4WnJhTktRZnU3ais2cnR4VzJjTlZ2UHNWVDdpaTgrNC9RUGFtUFE2a2tMdzZXZVdOY3ZudVB6U1RyVGowMW1pOFIxNzc4bmIvN2o4MWlsaHI0dTZSdkVvR29UQ3dCZTgvemQxZkN0Zi9kRHpTd1V1UUhnenZQNnlZa3ZyN3ZaRzhDUjdYVzhJUzd6K3pESzh3cm01elBKeFNoZDJiR2U4L2xQMmZYRExqamp4NjBQOWZxeUR2UDZ4WkNkR1A0SVE4UzlGWEx2RW43ejluR2s0NHI4MWpQTFhuQnBSdEwrOC9hQm1TYkN4clp6eHBrTy9jSURmdlA5SzF6SU1ZaW9DOCtzTmRWUXMvN3o5dit2OC9YYTJQdkh5SkIwb3RSKzgvU2FsMU9LNE5rTHp5aVEwSWgwL3ZQNmNIUGFhRm8zUThoNlQ3M0JoWTd6OFBJa0FnbnBHQ3ZKaUR5UmJqWU84L3JKTEIxVkJhamp5Rk10c0Q1bW52UDB0ckFheFpPb1E4WUxRQjh5Rno3ejhmUHJRSElkV0N2RitiZXpPWGZPOC95UTFITzdrcWlid3BvZlVVUm9idlA5T0lPbUFFdG5RODlqK0w1eTZRN3o5eGNwMVI3TVdEUElOTXgvdFJtdTgvOEpIVGp4TDNqN3pha0tTaXI2VHZQMzEwSStLWXJvMjg4V2VPTFVpdjd6OElJS3BCdk1PT1BDZGFZZTRidXU4L011dXB3NVFyaER5WHVtczNLOFh2UCs2RjBUR3BaSW84UUVWdVczYlE3ei90NHp2a3VqZU92QlMrbkszOTIrOC9uYzJSVFR1SmR6ellrSjZCd2VmdlA0bk1ZRUhCQlZNODhYR1BLOEx6N3o4QU9QcitRaTdtUHpCbng1Tlg4eTQ5QUFBQUFBQUE0TDlnVlZWVlZWWGx2d1lBQUFBQUFPQS9UbFZabVptWjZUOTZwQ2xWVlZYbHYrbEZTSnRiU2ZLL3d6OG1peXNBOEQ4QUFBQUFBS0QyUHdCQnlSa0xGOGk1OG9JczFyK0FWamNvSkxUNlBBQUFBQUFBZ1BZL0FFSHBHUXNYQ0ZpL3ZkSFZ2eUQzNE5nSXBSeTlBQUFBQUFCZzlqOEFRWWthQ3hkWVJSZDNkdFcvYlZDMjFhUmlJNzBBQUFBQUFFRDJQd0JCcVJvTEYvZ3RoNjBhMWIvVlo3Q2U1SVRtdkFBQUFBQUFJUFkvQUVISkdnc1hlSGVWWDc3VXYrQStLWk5wR3dTOUFBQUFBQUFBOWo4QVFla2FDeGRnSE1LTFlkUy96SVJNU0MvWUV6MEFBQUFBQU9EMVB3QkJpUnNMRjZpR2hqQUUxTDg2QzRMdDgwTGNQQUFBQUFBQXdQVS9BRUdwR3dzWFNHbFZUS2JUdjJDVVVZYkdzU0E5QUFBQUFBQ2c5VDhBUWNrYkN4ZUFtSnJkUjlPL2tvREYxRTFaSlQwQUFBQUFBSUQxUHdCQjZSc0xGeURodXVMbzByL1lLN2VaSG5zbVBRQUFBQUFBWVBVL0FFR0pIQXNYaU40VFdvblN2eit3ejdZVXloVTlBQUFBQUFCZzlUOEFRYWtjQ3hlSTNoTmFpZEsvUDdEUHRoVEtGVDBBQUFBQUFFRDFQd0JCeVJ3TEYzalArMEVwMHI5MjJsTW9KRm9XdlFBQUFBQUFJUFUvQUVIcEhBc1htR25CbU1qUnZ3UlU1Mmk4cngrOUFBQUFBQUFBOVQ4QVFZa2RDeGVvcTZ0Y1o5Ry84S2lDTThZZkh6MEFBQUFBQU9EMFB3QkJxUjBMRjBpdStZc0YwYjltV2dYOXhLZ212UUFBQUFBQXdQUS9BRUhKSFFzWGtIUGlKS1BRdnc0RDlIN3Vhd3k5QUFBQUFBQ2c5RDhBUWVrZEN4ZlF0SlFsUU5DL2Z5MzBucmcyOEx3QUFBQUFBS0QwUHdCQmlSNExGOUMwbENWQTBMOS9MZlNldURid3ZBQUFBQUFBZ1BRL0FFR3BIZ3NYUUY1dEdMblB2NGM4bWFzcVZ3MDlBQUFBQUFCZzlEOEFRY2tlQ3hkZzNNdXQ4TTYvSksrR25MY21LejBBQUFBQUFFRDBQd0JCNlI0TEYvQXFiZ2NuenI4US96OVVUeThYdlFBQUFBQUFJUFEvQUVHSkh3c1h3RTlySVZ6TnZ4dG95cnVSdWlFOUFBQUFBQUFBOUQ4QVFha2ZDeGVnbXNmM2o4eS9OSVNmYUU5NUp6MEFBQUFBQUFEMFB3QkJ5UjhMRjZDYXgvZVB6TDgwaEo5b1Qza25QUUFBQUFBQTRQTS9BRUhwSHdzWGtDMTBoc0xMdjQrM2l6R3dUaGs5QUFBQUFBREE4ejhBUVlrZ0N4ZkFnRTdKODhxL1pwRE5QMk5PdWp3QUFBQUFBS0R6UHdCQnFTQUxGN0RpSDd3anlyL3F3VWJjWkl3bHZRQUFBQUFBb1BNL0FFSEpJQXNYc09JZnZDUEt2K3JCUnR4a2pDVzlBQUFBQUFDQTh6OEFRZWtnQ3hkUTlKeGFVc20vNDlUQkJOblJLcjBBQUFBQUFHRHpQd0JCaVNFTEY5QWdaYUIveUw4Sit0dC92NzByUFFBQUFBQUFRUE0vQUVHcElRc1g0QkFDaWF2SHYxaEtVM0tRMnlzOUFBQUFBQUJBOHo4QVFja2hDeGZnRUFLSnE4ZS9XRXBUY3BEYkt6MEFBQUFBQUNEelB3QkI2U0VMRjlBWjV3L1d4cjltNHJLamF1UVF2UUFBQUFBQUFQTS9BRUdKSWdzWGtLZHdNUC9GdnpsUUVKOURuaDY5QUFBQUFBQUE4ejhBUWFraUN4ZVFwM0F3LzhXL09WQVFuME9lSHIwQUFBQUFBT0R5UHdCQnlTSUxGN0NoNCtVbXhiK1BXd2VRaTk0Z3ZRQUFBQUFBd1BJL0FFSHBJZ3NYZ010c0swM0V2eng0TldIQkRCYzlBQUFBQUFEQThqOEFRWWtqQ3hlQXkyd3JUY1MvUEhnMVljRU1GejBBQUFBQUFLRHlQd0JCcVNNTEY1QWVJUHh4dzc4NlZDZE5obmp4UEFBQUFBQUFnUEkvQUVISkl3c1g4Qi80VXBYQ3Z3akVjUmN3alNTOUFBQUFBQUJnOGo4QVFla2pDeGRnTDlVcXQ4Ry9scU1SR0tTQUxyMEFBQUFBQUdEeVB3QkJpU1FMRjJBdjFTcTN3YitXb3hFWXBJQXV2UUFBQUFBQVFQSS9BRUdwSkFzWGtOQjhmdGZBdi9SYjZJaVdhUW85QUFBQUFBQkE4ajhBUWNra0N4ZVEwSHgrMThDLzlGdm9pSlpwQ2owQUFBQUFBQ0R5UHdCQjZTUUxGK0RiTVpIc3Y3L3lNNk5jVkhVbHZRQUFBQUFBQVBJL0FFR0tKUXNXSzI0SEo3Ni9QQUR3S2l3MEtqMEFBQUFBQUFEeVB3QkJxaVVMRml0dUJ5ZSt2endBOENvc05DbzlBQUFBQUFEZzhUOEFRY2tsQ3hmQVc0OVVYcnkvQnI1ZldGY01IYjBBQUFBQUFNRHhQd0JCNlNVTEYrQktPbTJTdXIvSXFsdm9OVGtsUFFBQUFBQUF3UEUvQUVHSkpnc1g0RW82YlpLNnY4aXFXK2cxT1NVOUFBQUFBQUNnOFQ4QVFha21DeGVnTWRaRnc3aS9hRll2VFNsOEV6MEFBQUFBQUtEeFB3QkJ5U1lMRjZBeDFrWER1TDlvVmk5TktYd1RQUUFBQUFBQWdQRS9BRUhwSmdzWFlPV0swdkMydjlwek04azNseWE5QUFBQUFBQmc4VDhBUVlrbkN4Y2dCajhIRzdXL1YxN0dZVnNDSHowQUFBQUFBR0R4UHdCQnFTY0xGeUFHUHdjYnRiOVhYc1poV3dJZlBRQUFBQUFBUVBFL0FFSEpKd3NYNEJ1VzEwR3p2OThUK2N6YVhpdzlBQUFBQUFCQThUOEFRZWtuQ3hmZ0c1YlhRYk8vM3hQNXpOcGVMRDBBQUFBQUFDRHhQd0JCaVNnTEY0Q2o3alpsc2I4Sm80OTJYbndVUFFBQUFBQUFBUEUvQUVHcEtBc1hnQkhBTUFxdnY1R09Ob09lV1MwOUFBQUFBQUFBOFQ4QVFja29DeGVBRWNBd0NxKy9rWTQyZzU1WkxUMEFBQUFBQU9Ed1B3QkI2U2dMRjRBWmNkMUNxNzlNY05ibGVvSWNQUUFBQUFBQTRQQS9BRUdKS1FzWGdCbHgzVUtydjB4dzF1VjZnaHc5QUFBQUFBREE4RDhBUWFrcEN4ZkFNdlpZZEtlLzdxSHlORWI4TEwwQUFBQUFBTUR3UHdCQnlTa0xGOEF5OWxoMHA3L3VvZkkwUnZ3c3ZRQUFBQUFBb1BBL0FFSHBLUXNYd1A2NWg1Nmp2NnIrSnZXM0F2VThBQUFBQUFDZzhEOEFRWWtxQ3hmQS9ybUhucU8vcXY0bTliY0M5VHdBQUFBQUFJRHdQd0JCcWlvTEZuZ09tNEtmditRSmZud21nQ205QUFBQUFBQ0E4RDhBUWNvcUN4WjREcHVDbjcva0NYNThKb0FwdlFBQUFBQUFZUEEvQUVIcEtnc1hnTlVIRzdtWHZ6bW0rcE5ValNpOUFBQUFBQUJBOEQ4QVFZb3JDeGI4c0tqQWo3K2NwdFAyZkI3ZnZBQUFBQUFBUVBBL0FFR3FLd3NXL0xDb3dJKy9uS2JUOW53ZTM3d0FBQUFBQUNEd1B3QkJ5aXNMRmhCckt1Qi92K1JBMmcwLzRobTlBQUFBQUFBZzhEOEFRZW9yQ3hZUWF5cmdmNy9rUU5vTlArSVp2UUFBQUFBQUFQQS9BRUdlTEFzQzhEOEFRYjBzQ3dQQTd6OEFRY29zQ3hhSmRSVVFnRC9vSzUyWmE4Y1F2UUFBQUFBQWdPOC9BRUhwTEFzWGdKTllWaUNRUDlMMzRnWmIzQ085QUFBQUFBQkE3ejhBUVlvdEN4YkpLQ1ZKbUQ4MERGb3l1cUFxdlFBQUFBQUFBTzgvQUVHcExRc1hRT2VKWFVHZ1AxUFg4VnpBRVFFOUFBQUFBQURBN2o4QVFjb3RDeFl1MUs1bXBEOG8vYjExY3hZc3ZRQUFBQUFBZ080L0FFSHBMUXNYd0o4VXFwU29QMzBtV3RDVmVSbTlBQUFBQUFCQTdqOEFRWWt1Q3hmQTNjMXp5NncvQnlqWVIvSm9HcjBBQUFBQUFDRHVQd0JCcVM0TEY4QUd3REhxcmo5N084bFBQaEVPdlFBQUFBQUE0TzAvQUVISkxnc1hZRWJSTzVleFA1dWVEVlpkTWlXOUFBQUFBQUNnN1Q4QVFla3VDeGZnMGFmMXZiTS8xMDdicFY3SUxEMEFBQUFBQUdEdFB3QkJpUzhMRjZDWFRWcnB0VDhlSFYwOEJta3N2UUFBQUFBQVFPMC9BRUdwTHdzWHdPb0swd0MzUHpMdG5hbU5IdXc4QUFBQUFBQUE3VDhBUWNrdkN4ZEFXVjFlTTdrLzJrZTlPbHdSSXowQUFBQUFBTURzUHdCQjZTOExGMkN0amNocXV6L2xhUGNyZ0pBVHZRQUFBQUFBb093L0FFR0pNQXNYUUx3QldJaThQOU9zV3NiUlJpWTlBQUFBQUFCZzdEOEFRYWt3Q3hjZ0NvTTV4NzQvNEVYbXIyakFMYjBBQUFBQUFFRHNQd0JCeVRBTEYrRGJPWkhvdnovOUNxRlAxalFsdlFBQUFBQUFBT3cvQUVIcE1Bc1g0Q2VDamhmQlAvSUhMYzU0N3lFOUFBQUFBQURnNno4QVFZa3hDeGZ3STM0cnFzRS9OSms0Ukk2bkxEMEFBQUFBQUtEclB3QkJxVEVMRjRDR0RHSFJ3aitodElITGJKMERQUUFBQUFBQWdPcy9BRUhKTVFzWGtCV3cvR1hEUDRseVN5T29MOFk4QUFBQUFBQkE2ejhBUWVreEN4ZXdNNE05a2NRL2VMYjlWSG1ESlQwQUFBQUFBQ0RyUHdCQmlUSUxGN0NoNU9VbnhUL0hmV25sNkRNbVBRQUFBQUFBNE9vL0FFR3BNZ3NYRUl5K1RsZkdQM2d1UEN5THp4azlBQUFBQUFEQTZqOEFRY2t5Q3hkd2RZc1M4TVkvNFNHYzVZMFJKYjBBQUFBQUFLRHFQd0JCNlRJTEYxQkVoWTJKeHo4RlE1RndFR1ljdlFBQUFBQUFZT28vQUVHS013c1dPZXV2dnNnLzBTenBxbFE5QjcwQUFBQUFBRURxUHdCQnFqTUxGdmZjV2xySlAyLy9vRmdvOGdjOUFBQUFBQUFBNmo4QVFja3pDeGZnaWp6dGs4by9hU0ZXVUVOeUtMMEFBQUFBQU9EcFB3QkI2VE1MRjlCYlY5Z3h5eitxNGF4T2pUVU12UUFBQUFBQXdPay9BRUdKTkFzWDREczRoOURMUDdZU1ZGbkVTeTI5QUFBQUFBQ2c2VDhBUWFrMEN4Y1E4TWI3Yjh3LzBpdVd4WExzOGJ3QUFBQUFBR0RwUHdCQnlUUUxGNURVc0QyeHpUODFzQlgzS3Y4cXZRQUFBQUFBUU9rL0FFSHBOQXNYRU9mL0RsUE9QekQwUVdBbkVzSThBQUFBQUFBZzZUOEFRWW8xQ3hiZDVLMzF6ajhSanJ0bEZTSEt2QUFBQUFBQUFPay9BRUdwTlFzWHNMTnNISm5QUHpEZkRNcnN5eHM5QUFBQUFBREE2RDhBUWNrMUN4ZFlUV0E0Y2RBL2tVN3RGdHVjK0R3QUFBQUFBS0RvUHdCQjZUVUxGMkJoWnkzRTBEL3A2andXaXhnblBRQUFBQUFBZ09nL0FFR0pOZ3NYNkNlQ2poZlJQeHp3cFdNT0lTeTlBQUFBQUFCZzZEOEFRYWsyQ3hmNHJNdGNhOUUvZ1JhbDk4MmFLejBBQUFBQUFFRG9Qd0JCeVRZTEYyaGFZNW0vMFQrM3ZVZFI3YVlzUFFBQUFBQUFJT2cvQUVIcE5nc1h1QTV0UlJUU1ArcTZScnJlaHdvOUFBQUFBQURnNXo4QVFZazNDeGVRM0h6d3Z0SS85QVJRU3ZxY0tqMEFBQUFBQU1EblB3QkJxVGNMRjJEVDRmRVUweis0UENIVGV1SW92UUFBQUFBQW9PYy9BRUhKTndzWEVMNTJaMnZUUDhoMzhiRE5iaEU5QUFBQUFBQ0E1ejhBUWVrM0N4Y3dNM2RTd3RNL1hMMEd0bFE3R0QwQUFBQUFBR0RuUHdCQmlUZ0xGK2pWSTdRWjFEK2Q0SkRzTnVRSVBRQUFBQUFBUU9jL0FFR3BPQXNYeUhIQ2pYSFVQM1hXWnduT0p5KzlBQUFBQUFBZzV6OEFRY2s0Q3hjd0Y1N2d5ZFEvcE5nS0c0a2dMcjBBQUFBQUFBRG5Qd0JCNlRnTEY2QTRCNjRpMVQ5WngyU0JjTDR1UFFBQUFBQUE0T1kvQUVHSk9Rc1gwTWhUOTN2VlArOUFYZTd0clI4OUFBQUFBQURBNWo4QVFhazVDNHU3RW1CWjM3M1YxVC9jWmFRSUtnc0t2VkJ5YjNCaFoyRjBaV1JRYjNOcGRHbHZibEJ5YjNCbGNuUjVBSEpsYlc5MlpVVnVkR2wwZVFCcGJtWnBibWwwZVFCblpYUldaV3h2WTJsMGVRQlFiM05wZEdsdmJsSmxaMmx6ZEhKNUFFWmxZbkoxWVhKNUFFcGhiblZoY25rQVNuVnNlUUJVYUhWeWMyUmhlUUJVZFdWelpHRjVBRmRsWkc1bGMyUmhlUUJUWVhSMWNtUmhlUUJUZFc1a1lYa0FUVzl1WkdGNUFFWnlhV1JoZVFCTllYa0FKVzB2SldRdkpYa0FKVEF4Tm14c2VBQmhjbkpoZVY5cGJtUmxlQUJsY0dobGJXVnlhWE5mYzNSaGNuUmZhV1I0QUMwcklDQWdNRmd3ZUFBdE1GZ3JNRmdnTUZndE1IZ3JNSGdnTUhnQVRtOTJBRlJvZFFCQmRXZDFjM1FBZFc1emFXZHVaV1FnYzJodmNuUUFaWEJvWlcxbGNtbHpYM04wWVhKMEFIVnVjMmxuYm1Wa0lHbHVkQUJQWTNRQVpteHZZWFFBVTJGMEFIVnBiblEyTkY5MEFGTjFZbU5zWVhOekFHZGxkRU52ZG1WeVlXZGxVRzl6YVhScGIyNXpBSE5sYldsZmJXbHViM0pmWVhocGN3QnpaVzFwWDIxaGFtOXlYMkY0YVhNQVFYQnlBSFpsWTNSdmNnQm5aWFJXWld4dlkybDBlVkJ2YVc1MFpYSUFUMk4wYjJKbGNnQk9iM1psYldKbGNnQlRaWEIwWlcxaVpYSUFSR1ZqWlcxaVpYSUFkVzV6YVdkdVpXUWdZMmhoY2dCTllYSUFZV3gwY0FCbGNHaGxiV1Z5YVhOZmMzUnZjQUIxYm1sNFgzUnBiV1Z6ZEdGdGNBQmxjR2hsYldWeWFYTmZjM1JsY0FCVFpYQUFKVWs2SlUwNkpWTWdKWEFBYVc1amJHOEFaV05qYndCVGRXNEFTblZ1QUhOMFpEbzZaWGhqWlhCMGFXOXVBR2RsZEZCdmMybDBhVzl1QUVWdWRHbDBlVU52Ykd4bFkzUnBiMjRBVFc5dUFHNWhiZ0JLWVc0QVVtVmpaV2wyWldRNklDVnpYRzRBY21Ga2FYVnpaV0Z5ZEdocmJRQktkV3dBWW05dmJBQnlaVzF2ZG1WQmJHd0FRWEJ5YVd3QVpXMXpZM0pwY0hSbGJqbzZkbUZzQUVaeWFRQmlZV1JmWVhKeVlYbGZibVYzWDJ4bGJtZDBhQUJOWVhKamFBQkJkV2NBZFc1emFXZHVaV1FnYkc5dVp3QjBaWEp0YVc1aGRHbHVad0J6ZEdRNk9uZHpkSEpwYm1jQVltRnphV05mYzNSeWFXNW5BSE4wWkRvNmMzUnlhVzVuQUhOMFpEbzZkVEUyYzNSeWFXNW5BSE4wWkRvNmRUTXljM1J5YVc1bkFHbHVaZ0FsTkdRdEpUSmtMU1V5WkZRbE1tUTZKVEprT2lWc1pnQWxMakJNWmdBbFRHWUFjMmw2WlFCMGNuVmxBRlIxWlFCMWNHUmhkR1VBWm1Gc2MyVUFkR0ZyWlVKaGMyVUFTblZ1WlFCblpYUlFiM05wZEdsdmJrbHVVbVZtWlhKbGJtTmxSbkpoYldVQVoyVjBUbUZ0WlFCa2IzVmliR1VBZG1semFXSnNaUUJoY0c5blpXVUFjR1Z5YVdkbFpRQndaWEpwYjJRQWRtOXBaQUJ1YjNKaFpGOWpZWFJmYVdRQWRHVnliV2x1WVhSbFgyaGhibVJzWlhJZ2RXNWxlSEJsWTNSbFpHeDVJSEpsZEhWeWJtVmtBRmRsWkFCemRHUTZPbUpoWkY5aGJHeHZZd0J3WlhKcGIyUmZjMlZqQUVSbFl3QkdaV0lBWVd4MFlRQkZRME5GVGxSU1NVTkpWRmtBVFVWQlRsOUJUazlOUVV4WkFDVmhJQ1ZpSUNWa0lDVklPaVZOT2lWVElDVlpBRkJQVTBsWUFFMUZRVTVmVFU5VVNVOU9YMFJQVkFCTlJVRk9YMDFQVkVsUFRsOUVSRTlVQUVkTlZBQWxTRG9sVFRvbFV3QkJVa2RmVDBaZlVFVlNTVU5GVGxSRlVnQkNVMVJCVWdCRlRFVk5SVTVVWDFORlZGOU9Ud0JOUlVGT1gwMVBWRWxQVGdCSlRrTk1TVTVCVkVsUFRnQk9RVTRBVUUwQVlXUmtUMDFOQUVkTkFFRk5BRXhEWDBGTVRBQlNSVlpmUVZSZlJWQlBRMGdBVEVGT1J3QkpUa1lBUlZCSVJVMUZVa2xUWDFSWlVFVUFRMHhCVTFOSlJrbERRVlJKVDA1ZlZGbFFSUUJTUVY5UFJsOUJVME5mVGs5RVJRQlBRa3BGUTFSZlNVUUFUazlTUVVSZlEwRlVYMGxFQUVNQVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4YzJodmNuUStBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BIVnVjMmxuYm1Wa0lITm9iM0owUGdCbGJYTmpjbWx3ZEdWdU9qcHRaVzF2Y25sZmRtbGxkenhwYm5RK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEhWdWMybG5ibVZrSUdsdWRENEFaVzF6WTNKcGNIUmxiam82YldWdGIzSjVYM1pwWlhjOFpteHZZWFErQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQSFZwYm5RNFgzUStBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BHbHVkRGhmZEQ0QVpXMXpZM0pwY0hSbGJqbzZiV1Z0YjNKNVgzWnBaWGM4ZFdsdWRERTJYM1ErQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQR2x1ZERFMlgzUStBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BIVnBiblEyTkY5MFBnQmxiWE5qY21sd2RHVnVPanB0WlcxdmNubGZkbWxsZHp4cGJuUTJORjkwUGdCbGJYTmpjbWx3ZEdWdU9qcHRaVzF2Y25sZmRtbGxkengxYVc1ME16SmZkRDRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhhVzUwTXpKZmRENEFaVzF6WTNKcGNIUmxiam82YldWdGIzSjVYM1pwWlhjOFkyaGhjajRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhkVzV6YVdkdVpXUWdZMmhoY2o0QWMzUmtPanBpWVhOcFkxOXpkSEpwYm1jOGRXNXphV2R1WldRZ1kyaGhjajRBWlcxelkzSnBjSFJsYmpvNmJXVnRiM0o1WDNacFpYYzhjMmxuYm1Wa0lHTm9ZWEkrQUdWdGMyTnlhWEIwWlc0Nk9tMWxiVzl5ZVY5MmFXVjNQR3h2Ym1jK0FHVnRjMk55YVhCMFpXNDZPbTFsYlc5eWVWOTJhV1YzUEhWdWMybG5ibVZrSUd4dmJtYytBR1Z0YzJOeWFYQjBaVzQ2T20xbGJXOXllVjkyYVdWM1BHUnZkV0pzWlQ0QVJHVnNZMWxoV1dWS1ozcGxjR2N5WjA1aWFXSkZZMFppVG1WVlp6bG1RMk5IWTBSa2QyWkdZVmhuYW1KcllVSmxWV1p0WWpGaldXTkJhSGxuYTJacVkwbG5RMlpvWjFObVRXTjNhR2RqZVdGV1oyZGhNR1ZNWmtWbVFXZzVabFZtUTJWRGFHZG5lV0pYWmxSaFdXTkJZazFvYUdOQmFFMW1SR042Wms1aFVXTk9abEZvTUdkWWFFOWtWR2RaWmxoalRXaHJZVFJoZEdGRlpERmpTV1IzWjBGbFJtRkpZeXRuUldSblptdG1iR05NWTBKalNtWm1aVlZoYW1SYVowdGlTR0o0Wm1SaVZXSlBaWGRpUldWc2FFSmplV000WWsxaFNtaFVZVGhoUzJGVmFHcGhRbWRpWlZob1FXTjBZMWxqUldkRVlsVmliMkZPWm5wbFZXSjFhRUZqUTJOYVkxRmlWV2gzWkc5ak1HSkVaa1poUldSVlpVSmtWV1F3WjNoblNHRkJaRTFrY0dOSlpYbG1RV2h2WTFWaWFtSk5aRWxtVFdoc1lsbGhUbVJEWjNobFFXUlFZbFpvUVdabllXOW9UV1ZzYUd0b01tSkJhRVJuU1dKUmFFUmpRV2M0WjNwaFZXaEVhRlZrVG1oR1pIcGthMlF5WWtaaWVtRktZMDlrVEdaU2FFNWhVMk5OWTBGbVFtVlRabEJoYUdSSmFFcGhTbVJUWW5kbVUyRllaVEZsU1dneWFGTmlhR000WWxobVZtVkVZbk5uUW1aS1pGRmpZMmgyWTBSalEyWlZaUzlqUTJoc1lrbG1kMmRYWWpGaWQyRk1ZbGRrUW1OQlp6RmxTMlJFWldObU1XRk1hR2RuUVdWdFpGVmxSbU5OWlV0alRtWkJZbmhqVW1WR1pVRmpWbUpPWWsxb1VtVjNaMFJvUzJOVGFFMWxaMlZMWkVab1NXTjZaRU5sUkdoS1pGZG5SR1pSWm5ObFVXRkVZekZvVVdoSlprdG9SR2RLWkZwbFRtRm5Za0ZvZVdKRmFFRmlkMmRRWTAxbU1XRkJZVEZoUkdOU1lXTmlOV2hPYUdob1kyTjVZVlJtYVdRd1oxUmpWV2RxWTBGbFFXTlZhR3BrTkdKVFpVTmlVMk5WWm5OalJXaHNaamxoVTJGT1ptdGliMkptYUVab01XWlJhRGRoUVdSVFlsVmpTR0ZNWlhkamQyaHNaMUJsZDJWd1psTmlUV1JHYUhSblkyWkRaREZoWjJSUlprNWpVMmhuYUROalRtVlRaVFJsUVdSS2FHeG9RbVpVWVVOaWFtRlJZazFoVldkU1pWRmlSbWhVWkZSb1JXSmphRUZrZVdKcloycG5TV05EWW1oblUyWk5aSGRuWjJWNWFGWmtaMmN3WTB4b1JXRkJZemxoVldSRFpVTm9aMk41WmxkaFZHUlpZMEZsVFdab1pFRmxUV1JFWkhwalRtZFJaMDVqVVdRd1kxaGhUMmhVYUZsbldHWk5ZbXRtTkdSMFlVVm5NV2hKWVhkblFXSkdhRWxqSzJKRmFHZGhhMlpzWkV4b1FtVktaV1poVldOcVlscG5TMlZJWVhoblpHSlZhRTloZDJORlpXeG9RbVI1WWpoaFRXZEtZMVJuT0dOTFlWVm9hbVJDWm1KbldHRkJZWFJvV1dGRmFFUm9WV1Z2WlU1b2VtUlZhSFZrUVdKRFlWcGtVV0pWWTNkb2IyWXdZMFJrUm1GRlpsVmtRbWRWWnpCb2VHVklhRUZpVFdod1owbGtlV0ZCWm05alZXWnFZMDFsU1dKTlpteG9XV1pPWkVOa2VHaEJabEJqVm1kQlltZGhiMmROWm14b2EyVXlaMEZvUkdKSlpsRmpSR1ZCWkRobGVtVlZZMFJtVldkT1owWm1lbVJyWVRKalJtaDZaVXBoVDJGTVpWSm9UbUpUWjAxa1FXVkNaRk5qVUdab1pVbGxTbVpLYUZObWQyWlRZbGhrTVdaSlpqSmlVMlZvWVRoaldHaFdaMFJtYzJSQ1kwcG9VV1JqWlhaa1JHZERZMVZoTDJGRFlXeGtTV04zWWxkbk1XUjNZVXhpVjJOQ1lrRm1NV0ZMWVVSblkyY3hZVXhvWjJOQloyMW9WV0ZHWkUxaVMyaE9aa0ZoZUdGU1prWmxRV1pXWms1aVRXRlNZM2RuUkdoTFoxTmxUV2huWjB0alJtZEphSHBrUTJWRVpVcG9WMlpFYUZGa2MyRlJaRVJuTVdoUlkwbGtTMlpFWVVwaFdtWk9aV2RsUVdoNVlrVm9RV2QzWmxCaFRXSXhhRUZuTVdaRVpWSmtZMlExWTA1b2FHaGpZbmxoVkdocFlqQmtWR0ZWWm1wa1FXVkJZVlZtYW1RMFpsTmlRMk5UWWxWb2MyTkZabXhrT1dkVFlrNWlhMk52Wm1ablJtRXhabEZsTjJoQllWTmhWV1ZJWWt4bWQySjNZMnhsVUdWM1luQmpVMlJOWmtabGRHWmpaa05qTVdWbloxRmxUbUZUWkdkak0yaE9ZMU5pTkdoQmFFcGliR2RDWTFSaVEyZHFaVkZtVFdKVllWSmxVV1JHWWxSalZHRkZZV05pUVdWNVpHdG1hbUZKYUVObGFHTlRaVTFrZDJKblpYbG9WbWRuWXpCbFRHWkZaVUZuT1dGVlpFTmpRMlpuYUhsaVYyaFVaVmxvUVdKTlpXaGxRV0pOWWtSaGVtWk9aVkZvVG1KUmFEQmtXR0ZQWlZSbVdXRllZazFrYTJnMFlYUm9SV0V4WkVsa2QyTkJaMFpuU1dnclowVmhaMmhyWVd4aFRHSkNZa3BtWm1KVlltcGhXbWRMWTBob2VHRmtZbFZtVDJGM1pVVm5iR0ZDWW5saE9HVk5hRXBqVkdFNFlrdGpWV1ZxWmtKalltZFlaa0ZsZEdoWlprVmhSR0pWWlc5aVRtUjZaMVZpZFdKQmFFTmtXbVpSWVZWbGQyZHZaREJuUkdSR1lrVm5WV2RDWlZWaE1HSjRZa2hoUVdWTlpuQmtTV2Q1WjBGb2IyWlZZbXBuVFdaSlpFMW9iR1paWjA1a1EyRjRaVUZqVUdOV1prRmlaMlZ2WlUxbWJHRnJZekpvUVdaRVlVbGhVV0pFWWtGaU9HWjZhRlZrUkdoVlpVNWhSbWQ2Wld0b01tWkdZWHBqU21KUFlreG1VbVpPWlZOb1RXUkJaVUpsVTJGUVpXaGxTV05LWkVwalUyWjNaRk5tV0dNeFkwbGlNbWRUWW1obU9HZFlZVlpoUkdWelpVSmpTbWhSWm1ObmRtSkVZa05sVldNdmFFTmtiR1JKWTNkaVYyUXhZbmRuVEdSWFkwSmhRV2d4WWt0alJHUmpZekZuVEdobllVRm5iV05WWWtaaFRXSkxaazVpUVdONFpGSmtSbVpCYUZaalRtSk5hRkpvZDJKRVowdGxVMlJOWm1kaVMyUkdZVWxqZW1aRFpFUmlTbWRYYUVSbVVXZHphRkZsUkdReFpWRmlTV2hMWVVSbFNtZGFaazVuWjJKQlpubG1SV0pCWjNkb1VHVk5aakZuUVdZeFkwUm1VbUZqWmpWaVRtUm9aV05rZVdaVVltbG9NR0ZVWlZWaWFtUkJZa0ZoVldkcVp6UmlVMlpEWlZObFZXZHpZVVZtYkdFNVpsTm9UbVZyWjI5aFptVkdZVEZpVVdVM1pFRmtVMlpWYUVoaVRHUjNabmRsYkdaUVluZGpjR0pUWVUxaVJtSjBabU5tUTJVeFltZGtVV0ZPWjFObFoyY3paazVpVTJRMGFFRm9TbVZzWVVKaVZHUkRhR3BsVVdOTlpsVm5VbUZSWTBabFZHVlVaMFZuWTJSQmFIbG1hMkpxWlVsalEyTm9aMU5sVFdaM1lXZGllV0pXWW1kbU1HZE1hRVZsUVdnNVkxVmxRMlJEWldkamVXSlhZbFJuV1dOQmFFMWthR2hCYUUxalJHSjZhRTVrVVdoT1pWRmlNR05ZWms5aVZHUlphRmhuVFdKclpqUmpkR0ZGWXpGaVNXWjNhRUZoUm1kSlpDdGpSV1ZuWm10bmJHVk1aVUpuU21SbVlsVm1hbWhhWTB0bFNHRjRabVJuVldkUFpYZGlSV0pzYUVKbmVXZzRaMDFtU21KVVl6aG1TMkpWWVdwaFFtZGlhRmhpUVdGMFlWbGlSV2RFWkZWaGIyTk9hSHBpVldKMVlVRmpRMkphWTFGblZXUjNZMjlqTUdWRVlrWm1SV2RWWkVKblZXRXdaSGhvU0dKQmFFMW1jR1pKWlhsaVFXaHZaRlZuYW1STlkwbGxUV1pzYUZsbVRtWkRaWGhvUVdkUVkxWmpRV0ZuWlc5alRXaHNaR3RtTW1aQlpVUmxTV2hSWWtSbFFXRTRaM3BoVldkRVlWVmlUbVZHWW5waGEyRXlaa1psZW1GS1pVOWxUR2hTWjA1bVUyWk5aVUZsUW1oVFlWQmthR2RKWVVwa1NtaFRZM2RsVTJkWVp6RmtTV1l5WmxOamFHVTRaMWhvVm1SRVlYTmhRbUZLWmxGalkyZDJZMFJqUTJSVmFDOWpRMkZzWkVsbGQyWlhaVEZuZDJWTVoxZG9RbWhCWkRGa1MyVkVaV05oTVdKTVptZGxRV1Z0WmxWb1JtRk5hRXRqVG1kQlpIaG9VbUpHWVVGaVZtUk9aMDFqVW1WM1kwUmpTMlpUWkUxaVoyTkxaVVptU1dWNlpFTmtSR1JLWlZkaVJHTlJZWE5pVVdWRVpqRm5VV1ZKWWt0alJHWktZbHBtVG1ablpFRm9lV1pGWlVGbWQyaFFaazFsTVdOQllqRm5SR0ZTYUdOa05XSk9ZMmhqWTJONVpGUmthV0V3WTFSaVZXVnFaa0ZsUVdKVlpHcGpOR0ZUYUVOaFUyVlZhSE5pUldKc1pqbGpVMmRPWkd0aGIyZG1aa1poTVdGUlpqZGtRV2hUWTFWa1NHSk1ZbmRqZDJSc1pWQmhkMkZ3WVZObVRXUkdaWFJvWTJKRFp6Rm5aMlJSWlU1blUySm5Zak5rVG1aVFlqUmxRV1ZLWld4aVFtSlVaVU5pYW1GUlowMW1WV0ZTWWxGaFJtWlVaVlJpUldSalowRmplV0pyWjJwaVNXSkRaV2htVTJKTlpYZGpaMlo1WkZaaloySXdZa3hvUldGQlpEbG9WV0pEWlVObFoyaDVZVmRqVkdaWmFFRmpUV05vWkVGalRXVkVaM3BrVG1WUllVNW1VV0V3Wmxob1QyRlVaRmxuV0dKTlpXdG1OR1owWWtWbE1XWkpaWGRvUVdkR1prbG1LMmRGWm1kaGEySnNaVXhtUW1OS1kyWm1WV05xWWxwaVMyaElhSGhoWkdaVlpFOWxkMkpGYUd4bFFtRjVaemhpVFdKS1kxUmxPR1ZMWmxWaGFtaENaR0puV0dWQlpIUm1XV1ZGWTBSbFZXVnZZVTVqZW1WVlkzVmhRV0ZEWkZwa1VXRlZZM2RsYjJJd1owUm1SbVJGWmxWb1FtaFZaekJtZUdOSVlrRm1UV1p3WmtsaGVXSkJabTlsVldocVpFMWlTV1pOWW14bFdXaE9ZVU5vZUdWQlpGQmpWbWRCWjJka2IyaE5ZMnhvYTJjeVlrRm5SR05KWlZGa1JHWkJZamhpZW1aVllrUm1WV1JPWVVabGVtRnJaREptUm1WNmFFcGhUMlZNWkZKbVRtUlRaMDFuUVdOQ2FGTm9VR1ZvWmtsblNtSktZbE5rZDJOVFlWaG1NV2RKWVRKalUyWm9ZamhqV0dGV2FFUmxjMk5DWmtwb1VXVmpZWFpqUkdORFpGVmpMMkpEWm14bVNXUjNZMWRoTVdSM1pFeG9WMlpDWTBGaE1XZExZMFJoWTJJeFoweGpaMlpCWkcxblZXaEdaazFoUzJGT1lVRmllR1JTWWtabVFXVldZMDVsVFdSU2FIZGpSR1ZMWmxObFRXSm5hRXRoUm1GSlkzcGpRMmhFWjBwaVYyRkVaRkZrYzJGUlowUmtNV0pSWlVsblMyVkVaVXBrV21GT1lXZG5RV1Y1YUVWaFFXTjNaMUJvVFdneFpVRmxNV0pFYUZKalkyUTFhRTVtYUdoalkzbGpWR1pwWVRCaFZHSlZZV3BqUVdSQlpWVm1hbVUwWTFOa1EyaFRZVlZoYzJoRllXeGhPV1ZUWms1aGEyaHZaR1pqUm1FeFpsRm1OMlpCWmxOalZXZElZMHhrZDJaM1lteGlVR1IzWTNCbVUyRk5ZMFprZEdWalpVTm9NV1ZuWVZGaFRtVlRabWRtTTJGT1lWTm1OR0pCWTBwaGJHWkNaVlJtUTJocVkxRmtUV1JWWmxKa1VXUkdZVlJuVkdKRloyTm9RV2g1Wkd0aGFtWkphRU5rYUdoVFpVMWlkMlJuWTNsblZtVm5aVEJsVEdORllrRm5PV1ZWWjBOaVEyUm5ZWGxsVjJGVVlsbGtRV1ZOWW1oalFXZE5aVVJoZW1GT1pGRmtUbWhSWlRCaFdHaFBaMVJpV1dkWVpFMWphMlEwWjNSaVJXUXhZa2xvZDJWQlpVWm5TV1lyWWtWbloyRnJZMnhuVEdKQ1lVcG9abVJWWm1wbVdtZExZVWhoZUdWa1lsVmlUMlozWmtWbGJHWkNabmxuT0daTlowcG9WR1U0WkV0bFZXWnFZVUprWW1WWVpVRm9kR1JaWWtWblJHTlZhRzlqVG1aNlpsVm5kV1ZCWVVObFdtVlJaRlZsZDJadmFEQm9SR1ZHWWtWalZXTkNaMVZoTUdKNFpraGxRV1JOWkhCbVNXVjVaRUZpYjJKVlltcGxUV05KWkUxb2JHVlpaMDVpUTJaNFprRm9VR2RXWjBGaFoyWnZZMDFuYkdOclpESmpRV1ZFWTBsa1VXZEVZa0ZoT0dKNmFGVmpSR1pWYUU1alJtUjZaV3RtTW1KR1kzcG9TbVpQWVV4a1VtSk9hRk5sVFdOQlpVSm9VMkpRYUdoaVNXSktZa3BpVTJKM1lsTmlXR1l4WkVsbU1tWlRaMmhvT0dWWVlWWmpSR1p6WmtKbFNtWlJaR05rZG1SRVpFTm1WV012WTBOaGJHVkpaSGRoVjJJeFozZGtUR1ZYWkVKb1FXRXhZa3RrUkdaalpERmtUR0ZuWjBGbmJXTlZaRVpuVFdSTFpVNW5RV1I0WlZKa1JtWkJZbFpsVG1STlkxSm1kMmRFWkV0alUyZE5aR2RtUzJkR1pFbG1lbWhEWTBSa1NtWlhZMFJpVVdoelkxRmlSR0V4WmxGblNXWkxaVVJtU21aYVpFNWxaMkZCWW5salJXVkJaSGRtVUdkTll6RmpRV1V4WVVSalVtaGpaalZqVG1ab1oyTm9lV1ZVWldsbk1HTlVZMVZuYW1SQlpVRm1WV05xWWpSalUyWkRZMU5rVldKelowVm1iR001WVZOaFRtTnJaMjlvWm1KR1pqRmpVV00zYUVGb1UyTlZZa2hpVEdkM1puZG9iR1pRWjNkaWNHZFRaMDFsUm1KMFpXTm9RMkl4WTJkb1VXVk9abE5uWjJRelpFNWtVMlkwWVVGalNtaHNhRUpoVkdSRFpHcGxVV2ROWVZWbVVtTlJZa1pvVkdaVVpFVmtZMlZCWVhsa2EyaHFhRWxvUTJOb1lsTmtUV2gzWVdka2VXZFdaMmRuTUdOTVprVm1RV2M1WkZWaVEyWkRZbWRvZVdGWFlWUmpXV2hCWWsxaGFHTkJaVTFtUkdoNllrNWhVV05PWkZGaE1HZFlZazloVkdSWlkxaG1UV1JyWmpSaWRHZEZaVEZsU1doM1owRmtSbVJKWWl0a1JXSm5aV3RpYkdkTVlrSm9TbUptWlZWa2FtRmFhRXRqU0dGNFoyUmtWV2hQWjNkbFJXZHNZVUpoZVdFNGFFMW9TbUZVWmpob1MyVlZhR3BtUW1OaVlsaG1RV1IwWTFsblJXZEVaVlZpYjJGT1pYcGhWV1IxWmtGbVEyaGFaVkZuVldWM1lXOW1NR1JFWjBaa1JXTlZZa0ppVldRd1puaGxTR2RCWjAxbWNHTkpaM2xqUVdodlkxVm1hbVJOWjBsalRXaHNZVmxtVG1KRFlYaGhRV0pRWlZabFFXRm5aRzloVFdoc1lXdGtNbWRCWlVSblNXaFJaVVJtUVdjNFlYcG5WV2RFWmxWa1RtVkdaSHBrYTJNeWFFWmxlbVpLWlU5bFRHWlNaazVvVTJGTlowRmpRbWhUWWxCamFHSkpaMHBqU21GVFpuZGpVMkpZWkRGalNXVXlZVk5sYUdjNFlsaGtWbUpFWTNOblFtUktZMUZoWTJSMlowUm9RMkpWWXk5blEySnNaa2xpZDJaWFl6RmxkMlZNWWxka1FtSkJZekZqUzJGRVpXTmlNV0ZNWTJkbVFXTnRaVlZqUm1WTmFFdG1UbUZCWW5obFVtRkdZMEZrVm1OT1pVMW1VbUYzWmtSaFMyVlRaMDFrWjJGTFprWmhTV042YUVOa1JHTktZbGRtUkdGUlozTmlVV05FWWpGb1VXaEpZVXRtUkdGS1pGcGtUbVZuYUVGb2VXSkZZa0ZvZDJSUVlVMWhNV0ZCWWpGaVJHZFNaMk5rTldkT1pXaGhZMmg1WlZSb2FXY3daMVJrVldacVpVRm5RV2hWWm1wbE5HSlRaa05vVTJGVllYTmtSV1JzWnpsbFUyUk9ZMnRqYjJobVpFWmhNV1pSWVRkbVFXRlRZMVZoU0dGTVozZG9kMmRzWWxCbGQyRndZVk5uVFdWR1kzUm1ZMk5EWlRGbloyTlJZazVuVTJKbllUTmpUbU5UWkRSbVFXSktZbXhqUW1oVVlVTm9hbVpSYUUxbFZXUlNZMUZrUm1WVVkxUmhSV2RqWWtGaWVXVnJhR3BvU1dWRFptaGpVMmROWW5kbFoyUjVaMVpsWjJNd1kweG1SV0ZCWmpsaVZXZERhRU5sWjJaNVpGZGhWR2RaWVVGaVRXZG9aVUZpVFdGRWFIcGlUbVpSWlU1alVXZ3daVmhvVDJOVVkxbGhXR0pOWkd0aU5HWjBhRVZtTVdaSlpIZGtRV1pHWlVsa0syUkZabWRoYTJoc1pVeG1RbVZLWldaaVZXWnFhRnBuUzJaSVlYaGxaR0pWWjA5b2QyaEZZbXhpUW1aNVpEaG9UV1pLYUZSbU9HRkxaVlZtYW1OQ1oySm1XR0ZCWlhSaFdXSkZZa1JsVldWdlowNWplbU5WWTNWblFXWkRZMXBqVVdWVlluZG9iMmN3WVVSaVJtSkZaRlZtUW1oVll6QmxlR1JJWjBGb1RXZHdaRWxqZVdoQloyOWhWV1ZxYUUxbVNXSk5aR3hsV1dKT1pVTm9lR1ZCWWxCbVZtUkJaMmRpYjJWTloyeG5hMmd5WmtGb1JHZEpaRkZtUkdWQllUaGplbUpWYUVSbFZXUk9ZVVppZW1Wclp6Sm5SbUo2WjBwalQyUk1aMUpsVG1KVFlVMWtRV05DYUZObVVHaG9hRWxoU21aS1lsTmtkMmhUWWxoaE1XUkpZakpoVTJOb1lqaG9XR0pXWlVSaGMyWkNZMHBoVVdoalozWmhSR2hEWVZWbUwyWkRhR3hoU1dKM1oxZG9NV1IzWWt4aVYyTkNaMEZpTVdoTFkwUm5ZMlV4WjB4b1oyZEJZMjFvVldSR1lrMW5TMkpPWWtGbmVHSlNZVVpqUVdSV2FFNWpUV0pTWkhkbVJHRkxZMU5oVFdGblkwdGlSbVZKWVhwb1EyVkVaVXBpVjJaRVpWRmhjMlJSWWtSb01XaFJaMGxsUzJkRVowcGxXbWRPYUdkaVFXWjVhRVZqUVdKM1lsQmhUV1V4YUVGak1XTkVhRkppWTJJMWFFNW5hR1pqWW5sbVZHSnBZekJtVkdkVllXcGtRV1ZCWjFWamFtUTBaMU5uUTJOVFpWVmpjMmhGWm14ak9XZFRaRTVvYTJKdlpHWmhSbVV4WmxGaE4yUkJaVk5oVldOSVlVeGlkMmgzYUd4aFVHWjNaSEJsVTJGTlkwWm5kR1pqWWtObU1XUm5aMUZrVG1WVFptZGpNMkpPWVZOaE5HSkJZa3BrYkdSQ1psUmpRMlpxYUZGblRXSlZZbEptVVdGR1pWUm9WR05GWTJOblFXSjVaMnRoYW1OSllrTm9hR2RUWmsxbGQyaG5aSGxqVm1SbllqQm1UR05GYUVGa09XSlZaVU5sUTJobmFIbG1WMkpVWTFsbVFXWk5aR2hqUVdGTmFFUm1lbUZPWWxGaFRtVlJZVEJtV0dKUFpsUmxXV1pZWTAxbmEyYzBZblJqUldneFpVbGlkMkZCWkVabFNXZ3JZVVZuWjJkclkyeGhUR0ZDYUVwb1ptZFZabXBqV21GTFowaGhlR2RrWVZWaVQyRjNaMFZsYkdaQ1kzbGhPR1pOWkVwb1ZHYzRaRXRsVldocVpFSmxZbUZZWVVGamRHTlpaMFZoUkdkVlpHOWtUbUY2WjFWb2RXSkJaRU5oV21GUlpWVmhkMk52WWpCbFJHRkdaVVZtVldKQ1psVmhNR1o0WTBoa1FXTk5ZM0JvU1dkNVprRmpiMlZWWm1wa1RXWkphRTFqYkdWWllVNWxRMmQ0WWtGbFVHZFdaa0ZpWjJkdlpVMW9iR05yWlRKaFFXVkVaa2xoVVdoRVprRm1PR1I2WTFWaFJHSlZZMDVvUm1oNlptdGhNbVpHYUhwbVNtVlBaMHhpVW1aT2FGTmlUV0ZCWVVKaVUyVlFZV2hrU1dGS1lrcGlVMkYzWkZObldHRXhZMGxrTW1oVFltaGlPR1pZWlZabVJHaHpaa0psU21WUlptTmtkbUpFYUVOaFZXSXZZVU5sYkdGSmFIZG1WMlV4WTNkbFRHVlhhRUpvUVdReFpFdG1SR2RqWXpGb1RHaG5aa0ZpYldOVmFFWmpUV0ZMYUU1aVFXWjRhRkpuUm1GQllWWmtUbU5OWWxKaGQyVkVZa3RvVTJSTlptZG1TMlJHWkVsaGVtaERaVVJrU21OWGFFUm5VV1J6WmxGblJHZ3haMUZrU1doTFowUm1TbVJhYUU1b1oyZEJhSGxrUldKQlluZG5VR2hOYURGb1FXY3haMFJrVW1GallUVmlUbVZvWldObGVXVlVZbWxoTUdGVVoxVmlhbWhCWjBGaFZXTnFZalJtVTJWRFpGTm5WV1p6WWtWa2JHWTVhRk5qVG1KcllXOW9abWhHWlRGbFVXTTNZa0ZtVTJWVllVaGhUR0YzWjNkamJHVlFZM2RuY0dOVFpVMWlSbVowYUdOa1EyUXhaV2RrVVdaT1pWTm5aMmd6WlU1a1UyWTBZMEZtU21kc1lVSm5WR0ZEWldwalVXTk5hRlZrVW1OUlprWm1WR2RVWjBWbVkyaEJZM2xtYTJKcVprbGhRMlJvYUZOalRXSjNZMmRsZVdWV1pHZG1NR05NWjBWbVFXYzVaRlZsUTJSRGFHZGhlV0ZYYUZSbVdXZEJaVTFrYUdSQlowMWxSR1o2WjA1alVXRk9aVkZqTUdGWVlVOWtWR2haWWxoa1RXVnJZelJtZEdaRlpqRm1TV1YzWVVGblJtZEpZU3RvUldSbllXdG5iR1pNWWtKaVNtRm1aRlZsYW1OYWFFdGlTR1o0Wm1SaVZXZFBabmRqUldkc2FFSmhlV0U0WjAxalNtSlVhRGhqUzJWVllXcGtRbWhpWkZobVFXUjBZMWxoUldWRVlWVmpiMkpPYUhwalZXTjFZMEZtUTJWYVkxRm1WV0ozYUc5bE1HaEVaRVpuUldOVlowSmxWV2d3Wlhob1NHSkJaRTFrY0daSlkzbG9RV0Z2WlZWa2FtZE5ZMGxuVFdoc1pGbG9UbWREWkhoa1FXSlFZVlpvUVdWbllXOWtUV1ZzWjJ0aE1tUkJaMFJsU1doUlpFUm1RV0U0WjNwbVZXZEVZMVZuVG1KR1pIcGxhMlV5WlVaa2VtUkthRTlpVEdGU1prNWxVMkZOWVVGaFFtZFRZVkJtYUdKSlkwcGhTbVpUYUhkbVUyZFlZVEZtU1djeVpGTmlhR1k0WjFobVZtaEVZWE5qUW1oS1lWRm5ZMkoyWjBSalEyUlZZeTloUTJSc1lrbG5kMlJYYURGbWQyVk1aVmRqUW1SQllURm9TMk5FWldObE1XSk1aR2RsUVdKdFoxVmxSbVpOYUV0a1RtWkJZbmhtVW1KR1lrRmhWbWhPWWsxb1VtZDNZMFJsUzJoVGFFMWxaMlJMWmtab1NXZDZaa05pUkdGS1oxZG5SR1pSWTNOaFVXaEVaREZpVVdkSlprdGtSR0ZLWmxwalRtWm5aMEZvZVdGRlprRm9kMmRRWVUxbk1XSkJZakZpUkdGU1lXTmlOV0pPWldobFkyaDVZVlJoYVdRd1psUmpWV1pxWVVGaVFXUlZaMnBvTkdOVFpFTmxVMlJWWVhObVJXSnNaamxoVTJoT1pXdGliMlJtWVVabE1XZFJZemRqUVdaVFoxVm5TR1pNYUhkamQyUnNhRkJoZDJWd1lsTmpUV2hHWVhSalkyUkRaakZuWjJWUllVNWhVMmRuWVROalRtRlRZalJsUVdoS1lteGhRbVpVYUVOaWFtTlJZMDFtVldaU1pWRmlSbUZVWjFSaVJXSmpZVUZrZVdKcmFHcGlTV1JEYUdoalUySk5hSGRsWjJSNVoxWmhaMkV3WVV4b1JXWkJhRGxuVldaRFkwTmpaMlY1WmxkbVZHaFpZa0ZvVFdOb1lrRmlUV0pFWkhwb1RtTlJaVTVtVVdZd1lsaGhUMmRVWkZsbVdHRk5ZbXRrTkdoMFowVmxNV1JKWVhkalFXSkdaa2xqSzJoRlltZGphMkZzWmt4aVFtaEtaR1prVldocVkxcG5TMmRJWkhoblpHZFZZVTloZDJWRllteGtRbVI1WXpobFRXUktaRlJoT0dKTFpWVmphbVJDWVdKbVdHWkJaWFJsV1dGRmFFUmtWV2R2WkU1bmVtZFZaSFZvUVdKRFpscGlVV05WWW5kamIyUXdZMFJtUm1aRlkxVmxRbWRWWlRCb2VHWklZa0ZrVFdod1lrbGtlV2hCWTI5aFZXUnFaazFrU1dOTlpteGlXV1ZPWlVOaWVHTkJaMUJoVm1SQlpXZGpiMkZOWTJ4aWEySXlaMEZpUkdGSlkxRm9SR0pCWVRobGVtRlZaVVJsVldST1prWmllbWRyWlRKa1JtVjZaVXBrVDJoTVlWSm1UbUZUWTAxbVFXSkNZMU5sVUdKb1prbGhTbWRLWjFOb2QySlRaRmhoTVdkSll6SmpVMlpvWXpoaVdHUldhRVJrYzJGQ2FFcGxVV1ZqWW5aaVJHZERaMVZuTDJGRFpHeGtTV1IzWjFka01XVjNZVXhrVjJGQ1lrRm5NV0pMYUVSaVkyTXhaVXhsWjJSQloyMWpWV2hHWmsxblMyWk9ZVUZoZUdKU1lrWmtRV05XWkU1b1RXZFNaM2RqUkdGTFlsTm9UV2huWWt0b1JtaEphSHBtUTJkRVlVcGhWMlpFWWxGaWMyRlJZa1JtTVdSUlprbGpTMk5FWjBwbFdtRk9aV2RqUVdSNVowVmtRV0YzWjFCaFRXVXhZVUZsTVdWRVlWSm9ZMkkxWWs1aGFHRmphSGxpVkdGcFlqQmhWR1ZWWkdwb1FXZEJaRlZuYW1nMFkxTm9RMmRUYUZWbWMyRkZZV3hpT1dKVGFFNWthMmR2WTJaa1JtVXhZMUZqTjJaQlpsTm5WV1JJYUV4aWQyTjNZV3hoVUdGM1ozQmtVMkpOWlVabGRHaGpZME5tTVdWblpWRm5UbU5UWVdkbE0yVk9aMU5uTkdGQlowcGhiR0ZDWVZSalEyaHFaRkZpVFdaVllsSmxVV1pHWmxSb1ZHWkZaV05qUVdoNVlXdGhhbU5KWmtOaWFHRlRaVTFoZDJWblpubGhWbWRuWnpCbFRHSkZaa0ZrT1dGVllVTmpRMmRuWTNsa1YyZFVaRmxuUVdKTlpXaG9RV1JOWTBSbGVtSk9ZVkZrVG1GUllqQmpXR0ZQWVZSa1dXRllZMDFtYTJjMGFIUm9SV1V4WmtsbGQyaEJZMFppU1dNclowVm1aMlpyWld4b1RHZENZa3BqWm1WVlpXcG5XbVJMWjBobWVHVmtaVlZqVDJWM2FFVmxiR05DWW5sbU9HRk5aa3BpVkdNNFlVdG9WV2hxYUVKalltUllaVUZqZEdkWllrVm1SR0ZWWm05a1RtRjZZbFZuZFdGQlprTmlXbVJSWTFWaWQyWnZZekJoUkdoR2FFVm5WV2hDWjFWb01HVjRZVWhtUVdoTlpYQm9TV1I1YUVGa2IySlZZMnBoVFdOSlprMWpiR1JaWlU1aVEyTjRaa0ZrVUdOV1lrRmpaMkZ2WkUxa2JHSnJaREpsUVdWRWFFbG9VV2hFWWtGak9HSjZaRlZvUkdWVlprNW5SbWg2WjJ0ak1tUkdZbnBsU21WUFkweG1VbUZPWmxObFRXWkJaRUpqVTJWUWFHaGlTV0pLWmtwa1UyTjNZMU5rV0djeFlVbGpNbVJUYUdobE9HRllabFppUkdoelpVSm5TbU5SWVdOb2RtTkVaRU5uVldVdllrTm1iR05KWm5kblYySXhZWGRsVEdoWFprSmlRV0V4WWt0aVJHZGpZekZqVEdObllVRmliV1JWWVVaa1RXaExhRTVoUVdONFpsSmlSbWhCWlZaalRtWk5ZMUpsZDJKRVlrdGpVMlJOWjJkb1MySkdZMGxsZW1aRFlVUmhTbVpYWjBSbFVXUnpZMUZtUkdZeFpGRmtTV2hMWWtSaFNtZGFaMDVtWjJKQlkzbGhSV1JCWkhkblVHUk5aREZtUVdZeFpVUm1VbWRqYURWa1RtaG9aMk5qZVdSVVkybGpNR2hVWTFWbWFtaEJhRUZrVldOcVlqUm9VMk5EWmxOblZXZHpaMFZrYkdjNVoxTmlUbUpyWm05alptVkdaVEZuVVdnM2FFRm1VMlJWYUVoaVRHTjNaM2RsYkdSUVpYZG9jR1pUWTAxaVJtSjBaR05sUTJNeFpXZGpVV1pPWVZOb1oyUXpaMDVpVTJJMFprRm1TbU5zWjBKa1ZHTkRabXBrVVdSTlpWVmpVbVJSWVVabFZHWlVZMFZpWTJKQlpIbGphMkpxWkVsaVEyTm9aRk5uVFdGM1kyZGhlV05XWTJka01HaE1aa1ZoUVdNNVpsVm1RMlJEWjJkbGVXaFhaVlJtV1dOQllrMW1hR2hCWlUxalJHZDZZazVrVVdOT1pWRm9NR05ZWjA5blZHRlpZVmhrVFdSclp6UmpkR0ZGWXpGbFNXSjNaMEZsUm1KSlpDdG1SV2huWTJ0a2JHVk1aRUpoU21SbVpWVmhhbVZhWTB0b1NHTjRZMlJtVldKUFpIZGtSV0ZzWVVKaGVXZzRaMDFrU21SVVpqaG9TMmhWWm1wb1FtUmlaRmhuUVdOMFoxbGpSV1ZFWjFWamIySk9ZWHBuVldkMVowRmxRMlJhWlZGblZXWjNZMjlrTUdoRVprWmtSV2hWWjBKb1ZXY3dhSGhqU0dGQlpFMWxjR1pKWjNsblFXTnZaRlZpYW1aTlkwbG9UV1pzYUZsbFRtWkRaSGhqUVdOUVpWWmxRV2huWlc5alRXZHNabXRvTW1OQllrUmxTV2RSWlVSalFXZzRaM3BrVldWRVpWVmlUbWhHWm5waGEyY3laa1pqZW1oS1pFOW5UR05TWVU1b1UyWk5aa0ZvUW1oVFpWQm9hR05KWTBwa1NtRlRZWGRsVTJGWVp6Rm9TV0l5WWxObGFHYzRZVmhoVm1WRVpuTmpRbVJLWlZGaVkyWjJZVVJvUTJOVlppOW1RMmRzWmtsbGQyUlhaVEZvZDJoTWFGZG9RbVJCWmpGbFMyZEVhR05qTVdKTVlXZGpRV1J0WWxWb1JtTk5aa3RsVG1SQlozaGlVbVpHYUVGbVZtZE9hRTFqVW1GM1prUmxTMlJUWmsxa1oyaExZMFprU1dSNlprTm5SR0pLWlZkblJHRlJabk5sVVdaRVpERmlVV2RKWmt0aFJHUktZbHBrVG1WbmFFRm9lV2RGWVVGaGQyUlFaVTFvTVdGQllqRmlSR1pTWVdOaE5XTk9ZV2hoWTJoNVpGUmlhV1l3WjFSbVZXSnFhRUZvUVdSVlptcGlOR0ZUWjBObFUyRlZabk5oUldWc2FEbGlVMlpPWm10b2IyWm1ZVVppTVdWUllUZGlRV2hUWTFWa1NHUk1aSGRvZDJOc1oxQmtkMmR3WjFOa1RXTkdaM1JuWTJaRGFERmpaMlpSWkU1bFUyTm5Zak5uVG1OVFpqUmhRV0pLWm14alFtZFVZa05tYW1kUlowMWxWV0pTWmxGaVJtVlVZbFJuUldOalowRm5lV0ZyWVdwblNXZERZMmhrVTJWTlkzZGhaMlI1WTFaa1oyVXdaMHhuUldKQll6bGxWV0pEWTBObloyaDVaVmRtVkdWWlprRmtUV05vWkVGaVRXZEVabnBoVG1OUlpFNWlVV1l3WjFob1QyaFVaRmxoV0dWTlpHdG1OR0YwWjBWaE1XSkpaSGRtUVdoR1pVbGlLMk5GWjJkamEyTnNaRXhsUW1WS1kyWmxWV1pxWVZwa1MyUklabmhrWkdkVlpVOWlkMkZGYUd4b1FtVjVhRGhqVFdWS1lWUm5PR05MWWxWbmFtRkNabUpuV0dOQlpuUm1XV1ZGWkVSaFZXTnZaVTVsZW1kVlluVmpRV0pEWTFwb1VXaFZZM2RtYjJVd2FFUmlSbWRGYUZWbVFtRlZaREJoZUdaSVpVRmlUV053YUVsb2VXaEJaMjlvVldocVlrMW9TV2hOWW14bFdXZE9hRU5sZUdkQlpWQm1WbWhCWTJkbGIyZE5aR3hsYTJZeVkwRm1SR05KWVZGa1JHaEJaamhrZW1aVlkwUmhWV0pPWmtabWVtRnJaREpsUm1KNlpFcGlUMmhNWlZKa1RtWlRaVTFpUVdKQ1lsTmlVR1ZvYUVsblNtVktabE5rZDJOVFlWaGhNV0ZKWnpKblUyRm9aRGhuV0dWV1prUmtjMkpDWkVwa1VXSmpaM1ppUkdSRFpWVm5MMkpEWTJ4alNXVjNZbGRqTVdaM1lreG1WMk5DYUVGb01XWkxhRVJpWTJjeFlreGlaMk5CWlcxa1ZXVkdhRTFoUzJoT1prRm9lR2RTWWtaaVFXWldaazVoVFdGU1ozZGtSR0ZMWjFObVRXWm5aRXRtUm1kSlkzcGlRMmRFWWtwb1YyRkVZbEZoYzJoUllVUmtNV1pSWkVsa1MyUkVZMHBsV21OT1kyZGtRV2Q1WmtWaFFXZDNabEJqVFdNeFlrRmtNV2hFWWxKbFkyUTFZVTVrYUdWalozbG5WR0ZwWVRCbFZHWlZaR3BqUVdSQloxVmphbUkwWTFOb1EyVlRZMVZrYzJKRlpteG5PV05UWVU1aGEyaHZZV1pvUm1JeFpGRm9OMlZCWVZOb1ZXVklhRXhpZDJoM2FHeGxVR0ozWm5CaVUyTk5hRVpsZEdSallrTmxNV1puWVZGaVRtaFRaR2RqTTJkT1oxTmhOR2hCWlVwbmJHRkNZVlJtUTJKcVoxRmxUV05WWjFKb1VXaEdaMVJuVkdWRloyTmhRV2g1WjJ0bmFtUkpZVU5rYUdKVFowMW1kMmRuWjNsalZtUm5aREJpVEdkRlpFRm9PV0pWWlVOalEyWm5hSGxvVjJoVVpWbGxRV1JOWW1obFFXRk5ZVVJrZW1OT1pWRmtUbVZSWXpCbFdHZFBaRlJoV1dGWVpFMWhhMkkwWkhSblJXZ3hhRWxpZDJaQlpVWmtTV0VyWlVWaFoyUnJhR3htVEdoQ1pFcGxabVJWWVdwbFdtUkxZa2huZUdoa1lsVmhUMk4zWjBWbmJHaENaSGxtT0doTlkwcG5WR1k0WVV0blZXSnFaa0puWW1GWVlrRm9kR0paWlVWbFJHRlZhRzlqVG1aNlpWVmtkV05CWWtObFdtSlJhRlZpZDJKdllUQm9SR0pHWmtWblZXUkNaVlZsTUdSNGFFaGxRV2hOWW5Ca1NXZDVaVUZoYjJKVloycG5UV2hKWmsxaGJHUlphRTVsUTJoNGFFRmtVR2hXWlVGaFoyaHZaRTFpYkdScllUSmtRV2RFYUVsblVXaEVaRUZuT0dSNloxVmxSR05WWkU1bVJtUjZZbXRoTW1WR1pYcGtTbVZQWmt4aVVtTk9aMU5tVFdOQllVSmtVMmhRWTJoa1NXWktaMHBtVTJWM1kxTm9XR1F4WkVsbk1taFRhR2hqT0dGWVpWWmhSR056WVVKbVNtSlJhR05vZG1GRVkwTm9WV1l2WjBObGJHVkpaWGRtVjJjeFozZGxUR05YWlVKbVFXUXhaa3RsUkdoamFERmtUR0ZuWkVGb2JXaFZZa1pqVFdGTFpVNWlRV1o0YUZKbVJtSkJhRlpuVG1oTloxSmxkMlJFWVV0b1UyTk5ZbWRrUzJOR1prbGtlbUZEWkVSblNtTlhaVVJoVVdaelpWRm5SR1l4WkZGb1NXTkxaMFJrU21aYVpFNW9aMlZCYUhsbFJXRkJZWGRuVUdkTlpqRm5RV1F4WkVSbVVtVmphRFZuVG1ob1ptTm9lV1ZVWW1sak1HVlVabFZtYW1WQlpFRmtWV0ZxWWpSb1UyUkRZMU5pVldKelpFVmxiR001WVZOaFRtaHJZbTlpWm1GR2FERmlVV2MzWVVGaVUyaFZhRWhsVEdGM1ozZGxiR05RWkhkbGNHZFRaRTFqUm1KMFltTmlRMll4Wkdkb1VXUk9hRk5qWjJnellVNW5VMlkwWVVGa1NtVnNZVUprVkdaRFptcG9VV05OWkZWaVVtWlJaa1ptVkdWVVpFVmtZMkZCWm5samEyaHFaa2xqUTJab1kxTmpUV0YzYUdkbmVXZFdaMmRpTUdOTVpVVmlRV2c1WmxWbVEyWkRhR2RpZVdOWFpsUmpXV2hCWlUxaWFHSkJaazFvUkdSNlowNW5VV0pPWWxGa01HWllZazloVkdaWlpsaGhUV2RyWVRSamRHTkZaekZpU1daM1pVRm5SbWhKWnl0a1JXaG5ZV3RuYkdoTVpFSmlTbVJtWWxWaWFtSmFaVXRvU0dWNGFHUmhWV1pQWVhkblJXTnNaa0ppZVdZNFpVMWlTbU5VWWpoaVMyWlZabXBoUW1KaVpWaGxRV0owYUZsb1JXaEVZMVZoYjJST1pIcGpWV1IxWjBGaVEyRmFaVkZsVldWM1oyOW5NR0ZFWjBabFJXRlZaa0ppVldnd1pYaG1TR0ZCWWsxa2NHTkpZWGxpUVdSdloxVm9hbU5OWVVsbVRXRnNaMWxpVG1GRFlYaGhRV0pRWWxaaFFXaG5aVzluVFdoc2FHdG1NbUZCWVVSa1NXVlJaRVJvUVdRNFpucGtWV1JFWkZWb1RtSkdhSHBrYTJZeVlVWm1lbWRLWTA5blRHSlNaMDVoVTJKTlprRm9RbVJUWmxCb2FHSkpZMHBvU21GVFozZG1VMk5ZWVRGa1NXUXlaMU5oYUdVNFpGaG5WbVJFWlhOaVFtZEthRkZrWTJGMllrUm9RMkpWWmk5blEySnNZMGxpZDJaWFp6RmtkMlpNWkZkblFtRkJZekZoUzJKRVoyTm9NV1pNWm1ka1FXZHRaRlZtUm1aTlprdG1UbVJCWm5oaFVtVkdaa0ZuVm1ST1kwMW5VbVYzWTBSb1MyRlRZMDFsWjJkTFpFWmxTV2g2WWtOaVJHaEtaRmRpUkdaUlkzTmhVV1ZFWnpGbVVXaEpZVXRvUkdoS1pGcGpUbUZuWmtGbmVXRkZaMEZuZDJOUVowMWtNV2hCWlRGbFJHZFNhR05uTldKT1ptaGpZMlI1YUZSb2FXRXdaRlJsVldocVpVRm5RV05WYUdwaE5HWlRaa05vVTJSVlluTmpSV0ZzWVRsb1UyaE9aMnRoYjJKbWFFWm9NV05SWVRkaFFXVlRabFZvU0dWTVpIZGhkMk5zWjFCaGQySndZVk5sVFdKR1lYUmtZMkpEWXpGa1oyaFJaMDVpVTJSblpETmlUbWhUWVRSb1FXaEtaV3htUW1SVVowTmphbU5SWkUxaFZXRlNabEZvUm1GVVlWUm1SV2RqWlVGb2VXUnJaV3BtU1dSRFptaGpVMlZOWW5kaVoyRjVaVlpoWjJnd2FFeG1SV1ZCWWpsb1ZXSkRaa05tWjJaNWFGZGxWR1ZaWTBGblRXWm9hRUZvVFdSRVkzcG5UbU5SWWs1blVXZ3dabGhvVDJKVVpWbGpXR2hOWW10aE5HRjBZVVZuTVdoSmFIZGhRV1pHWjBsaUsyZEZabWRsYTJSc1pVeGxRbU5LWjJab1ZXZHFaVnBsUzJoSVpuaGhaR1pWWkU5bWQyZEZhR3huUW1aNVlUaGtUV2hLWWxSa09HTkxZVlZtYW1SQ1oySm1XR1pCWkhSaVdXWkZhRVJuVldkdlpVNWhlbVJWWlhWblFXUkRZbHBvVVdkVlpYZG1iMmN3WlVSb1JtTkZZbFZsUW1GVlpEQmhlR1JJWTBGaFRXVndZMGxoZVdWQmFHOWpWV2hxWTAxbFNXSk5aR3hoV1dKT1lrTm9lR0pCWWxCblZtWkJabWRpYjJGTloyeG5hMkV5WlVGblJHSkphRkZvUkdkQll6aGllbVJWWmtSblZXUk9hRVppZW1ocllqSmlSbUo2Wmtwb1QyWk1ZMUpoVG1kVFlrMW1RV2RDWmxObVVHVm9aVWxuU21SS1psTmpkMkpUWjFobE1XWkpaekptVTJWb1l6aGhXR2RXWVVSb2MySkNZVXBvVVdaalpIWmlSR05EWlZWbEwyUkRZbXhoU1dSM1psZGpNV1IzWkV4b1YyaENhRUZqTVdkTFlVUm1ZMkl4WlV4aloyRkJaRzFsVldkR1lrMW1TMkZPWVVGa2VHaFNZMFpoUVdOV1owNWtUV0ZTWTNkb1JHVkxhRk5uVFdObllrdGxSbU5KWVhwb1EyWkVaRXBqVjJaRVkxRm9jMmRSWkVSa01XVlJhRWxoUzJaRVpFcGxXbVpPYUdka1FXRjVZMFZvUVdSM1psQmhUV2d4WTBGbU1XWkVaMUptWTJFMVlVNWxhR2RqWVhsblZHSnBZekJsVkdaVmFHcGhRV0pCWkZWb2FtVTBaRk5sUTJOVFpWVmtjMkpGWld4a09XZFRhRTVtYTJOdlltWmtSbVF4WVZGbk4yaEJhRk5vVldKSWFFeGxkMlIzWW14alVHUjNaWEJsVTJSTlowWm1kR2RqWmtObk1XZG5abEZpVG1OVFpHZGlNMk5PWVZObk5HVkJaMHBuYkdoQ2FGUmtRMlZxWTFGbFRXUlZhRkpvVVdkR1oxUmlWR1pGWjJObVFXUjVaMnRsYW1aSlkwTm5hR2RUYUUxbmQyWm5aSGxtVm1Wbll6QmhUR2hGWmtGa09XVlZaRU5pUTJWbllubGlWMkZVWWxsaFFXWk5hR2hoUVdKTmFFUm1lbWRPWWxGalRtRlJhREJqV0dOUFpsUm5XV2RZWjAxb2EySTBZWFJsUldReFprbGhkMlJCWlVabFNXSXJaa1ZrWjJaclkyeG1UR05DWVVwalptUlZaV3BvV21KTFlVaGxlR1ZrWWxWaVQyRjNaRVZoYkdSQ2FIbG9PR05OWlVwaVZHVTRZa3RsVldGcVkwSmlZbUpZWlVGaGRHSlpaVVZoUkdoVmFHOWpUbWQ2WjFWbGRXTkJaa05sV21SUlkxVm9kMkp2WlRCaVJHSkdZVVZuVldOQ1kxVmtNR2Q0WlVoaVFXUk5ZM0JuU1dkNVowRmliMk5WWldwblRXUkpZVTFpYkdWWmFFNWhRMlo0WmtGbVVHTldZa0ZuWjJkdlowMWhiR1ZyWkRKalFXaEVaMGxsVVdKRVlrRm1PR1o2WlZWalJHRlZaRTVoUm1oNlptdGlNbWhHWkhwaFNtaFBZa3hvVW1kT1psTm1UV0ZCWWtKaVUyZFFaV2hvU1dkS1owcG9VMkozWmxOb1dHRXhZMGxvTW1kVFoyaG5PR1pZWlZaalJHRnpaRUppU21WUlpXTmhkbUZFWVVOaFZXSXZaME5pYkdaSlpIZG9WMlV4WVhkalRHRlhaMEpvUVdFeFlVdGpSR1ZqWXpGaVRHaG5aRUZqYldKVlpFWm5UV1ZMWVU1bFFXTjRabEpsUm1kQllsWmlUbUpOWlZKa2QyTkVaa3RtVTJOTlpHZG1TMlJHWTBsbGVtaERaa1JuU21KWFprUm5VV1Z6WmxGblJHSXhaVkZtU1dGTFlVUm9TbUZhWVU1a1oyTkJhSGxqUldoQlpYZGtVR1pOYURGa1FXTXhaa1JqVW1WamFEVm9UbVJvWldOb2VXRlVZV2xoTUdWVVoxVmphbU5CWjBGbFZXaHFZelJrVTJkRGFGTmlWV2R6WkVWamJHWTVhRk5oVG1WclltOWlabVJHYURGaVVXUTNZMEZpVTJSVlpraG1UR2QzWm5kbGJHVlFaWGRqY0dWVFpVMW9SbVowWldOa1EyRXhaR2RoVVdkT2FGTmtaMll6Wms1alUyZzBaa0ZqU21Sc2FFSm1WR1ZEWm1wbVVXRk5ZVlZtVW1KUlpFWm5WR0ZVWVVWblkyUkJabmxpYTJacWFFbGpRMmhvWkZObFRXWjNhR2RqZVdSV1kyZGtNR1pNWVVWbFFXWTVhRlZsUTJGRFpXZGtlV1ZYWTFSbFdXSkJhRTFtYUdGQlpFMWlSR1o2WWs1alVXRk9aMUZvTUdGWVowOWhWR05aWjFob1RXSnJZelJoZEdWRlpURm1TV1ozWlVGbVJtVkpZaXRsUldWbllXdGtiR2RNWkVKalNtaG1ZVlZrYW1kYWFFdGtTR1Y0Wm1SbVZXTlBaSGRqUldOc1pFSm9lV1U0WkUxaVNtWlVhRGhqUzJKVlptcG1RbUZpWVZoaVFXVjBaRmxvUldkRVpWVmliMmRPWVhwblZXUjFhRUZpUTJKYVpGRmlWV2gzWVc5bE1HSkVaVVppUldoVlprSmhWV013WlhoaVNHZEJaRTFoY0dOSlpYbGhRV0p2WWxWbWFtZE5aMGxtVFdWc2FGbGlUbVZEWkhob1FXTlFhRlpoUVdkbmFHOW9UV0pzYUd0bk1tRkJZVVJvU1dOUmFFUm5RV1k0YUhwalZXSkVaRlZrVG1SR1ozcGlhMll5WjBabWVtWkthRTlrVEdOU1pVNW9VMk5OWmtGa1FtSlRabEJpYUdaSlpFcGtTbWhUWVhkbVUyTllaVEZpU1dFeVkxTm5hR1E0WTFoblZtTkVaWE5oUW1kS1psRm1ZMk4yWTBSaFEyRlZZUzlrUTJOc1pVbGhkMlZYWlRGaWQyZE1ZVmRvUW1aQlp6RmtTMkpFWW1Oa01XaE1aV2RoUVdWdFoxVm5SbUpOWlV0bFRtTkJZbmhsVW1WR1pFRm9WbUZPWTAxbFVtWjNZVVJpUzJOVFkwMWhaMkpMWVVabVNXTjZhRU5rUkdaS1lsZG5SR2hSWkhOb1VXVkVZakZuVVdaSlpVdGxSR1JLWWxwbVRtaG5hRUZtZVdSRlprRmxkMmRRWmsxak1XUkJaakZtUkdaU1pHTmtOV1ZPYUdobFkyZDVabFJtYVdnd1pGUm9WV2hxWTBGaFFXRlZaMnBuTkdaVFowTmlVMmhWWW5ObFJXZHNaVGxrVTJGT1lXdG1iMkZtWmtabE1XWlJZamRtUVdoVGFGVm5TR2RNWkhkbWQyRnNabEJrZDJKd1psTm5UV1ZHYUhSbVkyTkRaVEZrWjJoUlprNWpVMlJuWVROaFRtVlRaRFJqUVdGS1kyeGtRbU5VWmtObWFtUlJaazFpVldWU2FGRm5SbUpVWVZSaVJXUmpZMEZqZVdocloycG1TV1ZEWTJoa1UyVk5ZWGRpWjJoNWFGWmlaMkl3Wmt4bFJXSkJaamxuVldSRFowTmtaMlI1WmxkaFZHUlpaMEZoVFdkb2FFRmpUV1pFWTNwbFRtZFJaMDVqVVdNd1pWaG1UMmhVWTFsaVdHUk5aV3RtTkdoMFpFVmlNV1JKWm5kbFFXRkdZMGxvSzJGRlkyZGhhMlZzWlV4bFFtRktZV1poVldOcVoxcGpTMlZJWjNoaFpHWlZaazlsZDJSRlkyeGhRbUY1WVRobFRXZEthRlJrT0doTFpsVmhhbWRDWjJKaFdHSkJhSFJqV1dGRlkwUm1WV1J2WTA1bGVtSlZZM1ZoUVdkRFpWcGtVV05WWkhkaGIyUXdhRVJoUm1WRmFGVmpRbUpWWWpCb2VHWklaMEZvVFdSd1pVbGplV1JCWm05aVZXSnFaMDFuU1doTllXeG9XV1ZPWWtObGVHTkJaRkJrVm1kQlkyZGliMlJOWW14bWEyUXlZMEZoUkdkSlpGRm9SR05CWkRobmVtZFZZVVJuVldGT1lrWm1lbUZyWXpKaFJtWjZaVXBsVDJkTWFGSmxUbWhUWVUxalFXaENhRk5pVUdob1pFbGtTbWRLWWxObGQyRlRaVmhrTVdSSllqSmlVMmRvWnpoaVdHVldZVVJsYzJWQ1lVcGpVV1ZqWjNabVJHUkRaVlZrTDJORFkyeGlTV0ozWlZkak1XZDNaMHhuVjJWQ1pFRm1NV0pMWWtSbFkyTXhZVXhqWjJGQllXMW9WV1ZHWlUxalMyZE9aMEZvZUdoU1pVWmlRV1pXWTA1aVRXVlNaM2RqUkdWTFpsTmtUV1ZuWVV0aFJtWkpaM3BtUTJWRVkwcGlWMmRFWmxGaWMyRlJZVVJpTVdKUlpFbGlTMlJFWmtwaFdtZE9aR2RpUVdaNVkwVmlRV2QzWjFCaVRXSXhaRUZtTVdGRVpGSmxZMmMxWms1amFHVmpaWGxvVkdWcFlUQmhWR1ZWYUdwbFFXaEJhRlZqYW1JMFlWTm5RMlpUYUZWbGMyTkZhR3hqT1dKVFpFNWlhMkp2WTJablJtVXhZVkZoTjJSQmFGTmpWV2RJWkV4aWQyaDNhR3hvVUdKM1pYQm1VMlpOWTBaa2RHZGpaME5uTVdKblkxRm9UbVpUYUdkb00yZE9hRk5pTkdKQlkwcG1iR0pDWWxSa1EyWnFhRkZrVFdWVlpGSmpVV2RHWmxSa1ZHZEZZMk5pUVdkNVoydG9hbUZKWWtOa2FHSlRaazFrZDJWblpYbG5WbUpuWmpCa1RHUkZhRUZtT1dkVlkwTm5RMlJuWW5sb1YyRlVaRmxqUVdWTllXaG5RV05OWjBSaWVtaE9abEZrVG1KUlpqQm5XR1JQWWxSaFdXZFlaMDFvYTJjMFpYUmlSV2d4YUVsbWQyUkJZVVpvU1dVcllrVm1aMlpyWm14bVRHTkNZVXBqWm1kVlpXcGlXbWhMWlVobmVHTmtZbFZuVDJSM1pVVmpiR05DYUhsbE9HTk5aMHBqVkdRNFpFdGxWV0ZxWWtKbFltWllZVUZqZEdOWmFFVmhSR0pWWTI5b1RtTjZaVlZoZFdoQlowTm1XbU5SWlZWbGQySnZZVEJuUkdSR1lVVm5WV1ZDYUZWbE1HSjRaa2hpUVdGTlpYQm9TV1o1YUVGbmIyUlZZV3BpVFdoSlpFMW1iR1paWWs1aFEyWjRaa0ZrVUdoV1pVRmxaMlZ2WkUxa2JHWnJZVEpoUVdSRVpFbG9VV2hFWWtGaU9HaDZZVlZqUkdWVllrNWpSbWQ2WTJ0bk1tWkdaSHBsU21WUFoweG1VbUZPWlZOblRXZEJaRUpvVTJOUVlXaGpTV1JLWkVwalUyWjNaRk5tV0dFeFlrbG5NbVpUWVdob09HVllaRlpvUkdoemFFSmlTbVpSWTJObmRtWkVaME5uVldZdlkwTmxiR05KWjNkbVYySXhZbmRpVEdoWFlrSmxRV0l4WVV0bVJHaGpaREZoVEdOblprRm1iV2hWWVVaaVRXaExZazVsUVdONFpGSm5SbUpCWmxaa1RtRk5ZVkpuZDJaRWFFdGtVMlJOWldkblMyaEdhRWxpZW1WRFlVUmlTbVJYWWtSa1VXTnpaVkZuUkdFeFkxRmtTV2hMWmtSa1NtZGFaRTVuWjJOQlpYbGtSV1ZCWlhkbFVHRk5ZekZuUVdneFpVUmtVbVZqWmpWbFRtaG9ZbU5tZVdWVVoybGtNR1pVWlZWamFtTkJaRUZvVldScVlUUm9VMlJEWjFOaFZXUnpaa1ZuYkdRNWFGTmpUbUZyWW05bFptZEdaekZrVVdFM1owRm5VMmRWWVVoa1RHVjNaM2RqYkdGUVozZGtjR1ZUWVUxaFJtaDBhR05oUTJJeFlXZGpVV2hPWTFObloyWXpaVTVvVTJJMFpFRmxTbUpzWTBKbVZHTkRaMnBpVVdGTlkxVmtVbVJSWTBablZHZFVhRVZuWTJOQllYbGphMlJxWkVsbFEyWm9aVk5qVFdoM1pXZGtlV1ZXWjJkbU1HVk1ZVVZoUVdjNVkxVm1RMmREWjJkbmVXTlhaMVJsV1dGQmFFMW9hR1JCWmsxa1JHWjZhRTVoVVdWT2FGRmxNR1pZWlU5blZHTlpZVmhqVFdWcllUUmpkR1JGWkRGaFNXTjNaMEZtUm1oSllTdGpSV1ZuWW10aGJHSk1hRUptU21KbWFGVm1hbVJhWlV0bVNHUjRaV1JrVldWUFlYZGtSV1pzWWtKbmVXYzRaVTFqU21KVVpqaG1TMmhWYUdwa1FtRmlaRmhsUVdaMFlWbG9SV05FWkZWaGIyWk9aSHBrVldKMVpVRmxRMlZhWWxGb1ZXRjNZbTloTUdKRVlVWm9SV1ZWWVVKbFZXUXdhSGhqU0dOQlowMW1jR2hKWkhsblFXZHZZVlZuYW1oTlkwbGhUV2RzWWxsaVRtVkRabmhtUVdGUVkxWmpRV05uWkc5aVRXTnNZMnRoTW1KQllVUmpTV0ZSWWtSbFFXVTRaM3BsVldORVlWVm1UbVpHWVhwbmEyTXlZVVptZW1SS1kwOWtUR1JTWjA1aFUySk5aa0ZqUW1oVGFGQmlhR0pKYUVwbVNtRlRabmRoVTJKWVpqRmhTV0l5YUZObGFHRTRZMWhuVm1GRVluTm9RbVJLWjFGalkyWjJaa1JqUTJWVllTOWpRMlJzWkVsaWQyWlhhREZrZDJoTVpsZGtRbUZCWmpGaFMyVkVaV05pTVdWTVkyZGxRV050WTFWbVJtZE5hRXRoVG1kQmFIaGhVbVZHWVVGa1ZtaE9aazFrVW1SM1kwUm9TMmRUWlUxbloyaExaMFpsU1dKNmFFTm1SR2RLWVZkalJHTlJaM05sVVdWRVpURmlVV05KWkV0bFJHSktaVnBvVG1GblpVRmllV2RGWkVGbmQyTlFaazFqTVdGQllURmlSR2RTWldOak5XZE9aMmhqWTJWNVlsUmxhV1F3WlZSaVZXWnFZa0ZrUVdGVlltcG1OR0pUWlVObFUyUlZabk5qUldkc1pEbG1VMmhPWjJ0aWIyVm1aVVpqTVdKUllUZGlRV05UYUZWb1NHTk1ZM2RrZDJkc1lWQm5kMkp3WkZObFRXZEdaWFJqWTJKRFp6RmxaMkpSWjA1bVUyRm5Zak5pVG1GVFp6Um9RV0pLWkd4alFtSlVaa05qYW1GUmFFMWxWV1ZTWkZGalJtRlVZbFJvUldoalprRmllV1ZyYUdwblNXZERaR2hpVTJoTlkzZG9aMmQ1WVZaaVoyUXdZMHhqUldaQll6bGpWV2hEWkVOaVoyaDVZbGRrVkdWWlowRmhUV0ZvYUVGblRXSkVabnBpVG1OUllVNW5VV1V3WmxoaFQyTlVabGxuV0dkTlltdG1OR2gwWTBWbE1XWkpZbmRtUVdKR1owbGlLMlJGWldkb2EyTnNZVXhvUW1aS1pHWmtWV2hxWkZwaFMyTklZbmhqWkdkVlprOW5kMmRGWld4aVFtUjVaRGhoVFdaS1kxUmhPR1JMWjFWbWFtSkNZV0ppV0dOQlpIUm1XV2RGWmtSaVZXTnZZVTVrZW1kVmFIVm9RV1JEWmxwblVXUlZaM2RrYjJnd1prUmtSbUpGYUZWb1FtWlZZVEJsZUdSSVpFRm1UV1Z3WlVsbmVXZEJabTlsVldkcVlrMW1TV2ROWm14a1dXWk9aa05sZUdoQllsQm5WbWhCYUdkbmIyVk5hR3hsYTJZeVlVRmtSR05KWVZGb1JHUkJZVGhtZW1SVllVUm1WV2hPWVVaa2VtUnJaekpvUm1SNlprcGhUMmRNYUZKa1RtUlRZVTFoUVdGQ1oxTmlVR0ZvWVVsb1NtVktaMU5sZDJoVFpWaG5NV2RKWmpKalUyUm9ZamhuV0dGV1prUmtjMlZDYUVwbFVXZGphSFpvUkdaRFpsVmhMMlZEYUd4b1NXTjNZMWRsTVdOM1pFeGxWMlJDWWtGaE1XTkxZa1JtWTJZeFlVeG9aMmRCWVcxalZXVkdZMDFvUzJkT1owRmplR05TWTBabFFXTldaVTVpVFdOU1puZGtSR1JMWmxOblRXTm5Za3RoUm1WSlpIcGhRMmhFWjBwbFYyRkVaMUZuYzJaUlkwUm9NV05SWVVsaVMyTkVZa3BrV21ST1pXZGhRV1I1WTBWbFFXTjNaRkJqVFdNeGFFRm1NV0ZFWVZKb1kySTFZVTVrYUdKalpubGhWR0pwWXpCaFZHUlZZbXBoUVdkQllsVmphbWcwWjFObFEyTlRZMVZoYzJaRlpteG5PV1JUWWs1b2EyRnZhR1ptUm1NeFpWRm1OMkpCWWxObVZXRklaa3hvZDJOM1oyeGxVR1YzWW5Cb1UyVk5ZMFpqZEdkallrTm9NV0puWmxGb1RtRlRaR2RpTTJoT1psTm5OR2RCWWtwamJHWkNhRlJoUTJacVlsRmlUV1JWWWxKaVVXZEdZMVJpVkdaRlkyTmhRV0Y1Wm10b2FtWkpZa05oYUdOVGFFMWtkMkZuWlhsbVZtUm5hREJuVEdkRlkwRmlPV0pWWjBOaFEyWm5aM2xuVjJKVVkxbG5RV0ZOWkdoaFFXTk5ZVVJvZW1oT1kxRmtUbWhSWlRCaVdHRlBaRlJuV1daWVpFMW1hMlUwWjNSbFJXVXhaa2xuZDJOQlowWmxTV0lyWjBWa1oyRnJaV3huVEdOQ1lrcGxabVZWWVdwb1dtTkxaa2huZUdWa2FGVm9UMkozWTBWbGJHSkNabmxsT0dGTlpVcG9WR000WVV0aFZXWnFhRUpsWW1KWWFFRmxkR1paWkVWa1JHWlZZbTlsVG1kNlpsVmxkV2RCWVVObldtVlJhRlZpZDJodlpUQm9SR1pHWjBWbVZXSkNZMVZvTUdaNFowaGxRV05OYUhCaFNXVjVaMEZoYjJoVlltcGpUV0ZKWkUxaWJHSlpZMDVuUTJoNFpVRm9VR1JXWWtGaVoyRnZaMDFtYkdoclpESmtRV0pFWVVsb1VXaEVaRUZuT0dkNlkxVmhSR0ZWWms1bFJtSjZhR3RrTW1WR1pYcGtTbUZQWjB4alVtTk9hRk5qVFdaQlpFSmhVMkZRWjJobFNXWktZMHBsVTJOM1kxTmhXR1F4WVVsak1tSlRabWhuT0dkWVpsWmhSR056YUVKblNtaFJaR05tZG1KRVprTmxWV1l2WTBOb2JHVkpaWGRqVjJJeFkzZGhUR0ZYWkVKbFFXTXhaRXRvUkdOalpERm1UR1JuWVVGb2JXZFZZVVprVFdkTFlVNW9RV1o0WlZKaVJtTkJhRlpvVG1WTllsSm9kMkZFWmt0bVUyWk5aR2RuUzJSR1owbG9lbVZEWmtSb1NtRlhhRVJqVVdKellWRmhSR1F4YUZGbFNXRkxaa1JuU21KYWFFNWtaMkpCWTNsblJXUkJaWGRvVUdOTlpERmpRV2N4WTBSblVtVmpaalZpVG1Gb1oyTm9lV2hVWm1sbk1HSlVaMVZoYW1oQllVRmpWV2hxWXpSblUyWkRaMU5rVldWemFFVmhiR1k1WjFOaFRtUnJZMjloWm1WR1p6RmtVV2MzWlVGaFUyTlZaMGhsVEdWM1pYZG9iR0pRWlhkaGNHaFRZMDFuUm1kMFpHTmxRMlF4WW1kaFVXZE9ZbE5sWjJVellrNWxVMk0wWVVGalNtVnNaa0puVkdKRFpXcG5VV0ZOWkZWaVVtVlJZMFppVkdWVWFFVm5ZMkZCWkhsaWEyVnFaVWxsUTJob1lsTmtUV1YzWldkbmVXSldaMmRtTUdaTVowVmtRV0k1YUZWbFEyaERZV2RoZVdSWGFGUm1XV1JCWTAxbWFHSkJZMDFpUkdKNlpFNWxVV05PWWxGa01HVllaazlrVkdGWlpsaG9UV1JyWVRSbmRHUkZhREZuU1dWM1pVRmhSbU5KWlN0aFJXaG5aMnRrYkdSTWFFSm1TbVptYUZWb2FtSmFaVXRuU0dkNFlXUm5WV1pQWW5kblJXaHNaVUptZVdRNFprMW5TbUZVWXpoa1MyTlZZbXBqUW1SaVpWaGxRV1YwWjFsb1JXUkVabFZuYjJKT1lucG5WV2QxYUVGalEyZGFaRkZuVldGM1ltOWhNR05FYUVaa1JXVlZZVUpsVldJd1pIaGlTR2hCWmsxb2NHWkphSGxsUVdGdllWVm9hbWROWTBsbVRXUnNaVmxtVG1kRFozaG9RV05RWmxab1FXWm5abTlrVFdGc1pHdGhNbWhCWWtSblNXRlJhRVJoUVdjNFpucGxWV1pFWlZWbVRtRkdaM3BtYTJReVpVWm1lbVZLWjA5a1RHTlNhRTVuVTJOTlpFRm5RbU5UWWxCaGFHWkpZMHBpU21WVFluZGxVMkpZWXpGalNXTXlZMU5vYUdNNFkxaGlWbU5FWjNOalFtaEtZMUZsWTJaMllVUmhRMlpWWkM5b1EyWnNZMGxqZDJKWFpERm1kMlpNYUZkbVFtUkJZVEZtUzJWRVltTm9NV1JNWkdkblFXVnRabFZsUm1OTlpFdG9UbUpCWm5oaFVtUkdaRUZpVm1WT1lVMWtVbWgzYUVSa1MyaFRaVTFpWjJkTFlVWm5TV042WlVOaFJHZEtaMWRpUkdOUlpuTm5VV2RFWnpGbVVXSkpZMHRrUkdkS1pGcG5UbVJuYUVGaGVXSkZaRUZoZDJoUVlVMWxNV1pCWmpGb1JHaFNabU5oTldOT1pHaGlZMmg1YUZSbmFXWXdabFJoVldOcVlrRm1RV05WYUdwaE5HTlRaa05oVTJWVlozTm5SV1ZzWmpsa1UyZE9aV3RqYjJobVpVWm5NV0pSWlRkbFFXZFRZbFZoU0dkTWFIZGpkMlJzYUZCaGQyUndhRk5vVFdkR1lYUm5ZMlJEWVRGbFoyWlJaazVqVTJGblpqTm5UbWhUWVRSbFFXZEtZMnhtUW1GVVkwTm5hbWhSWTAxblZXSlNZbEZpUm1OVWFGUmpSV1pqWmtGbmVXVnJaMnBuU1dWRFpXaG1VMmROWTNkbVoyZDVaMVpqWjJjd1kweG1SV0ZCWlRsblZXTkRZME5qWjJoNVoxZGlWR0ZaWlVGbVRXRm9hRUZvVFdSRVozcGxUbUpSWTA1alVXZ3dhRmhpVDJKVVpWbG1XR1JOWm10bk5HVjBaRVZpTVdKSllYZG5RV0pHWWtsbEsyTkZZV2RvYTJac1pFeGlRbVpLWjJablZXaHFhRnBpUzJOSVpuaGtaR2RWWjA5b2QyZEZabXhsUW1ONVlUaGxUV0ZLYUZSbU9HTkxhRlZrYW1aQ1kySm5XR05CWm5SbldXaEZZMFJsVldWdllrNWtlbWRWWjNWblFXUkRZMXBqVVdWVllYZGtiMmd3WTBSb1JtWkZhRlZpUW1oVmFEQmxlR2RJWmtGbFRXUndZa2xrZVdSQlpXOWlWV2RxWWsxaVNXZE5ZbXhoV1doT1pVTmhlR1ZCWWxCbFZtVkJZbWRsYjJSTllteG1hMll5WlVGalJHWkpaMUZuUkdkQlp6aGhlbWhWWlVSa1ZXTk9aa1prZW1Wclp6Sm5SbVY2WkVwblQyTk1ZbEpsVG1aVFlVMW9RV1JDWkZOb1VHUm9aVWxpU21OS1lsTmlkMlZUWWxobU1XUkpZakpoVTJGb1l6aGxXR0pXWkVSbWMyTkNaVXBpVVdWalkzWmhSR05EWTFWaEwyTkRZV3huU1dKM1pGZG5NV0ozWmt4b1YyTkNaMEZrTVdWTFlrUm9ZMmN4WkV4aVoyVkJZMjFuVldKR1prMW5TMlZPWlVGbmVHTlNhRVpuUVdkV1pVNWtUV2RTWlhkb1JHTkxhRk5qVFdWbllrdGlSbU5KWW5waFEyaEVZVXBqVjJaRVkxRmxjMlpSYUVSaU1XSlJaRWxsUzJkRVprcGhXbVJPWW1kblFXRjVaMFZrUVdaM1pGQmxUV2N4WjBGbE1XVkVaVkptWTJnMVkwNWxhR05qWTNsaVZHZHBaakJoVkdOVlpHcGpRV05CWWxWamFtZzBabE5vUTJOVFpsVm5jMlJGWm14aU9XRlRaRTVoYTJKdloyWm1SbVF4WkZGaE4yTkJZbE5pVldSSVlreGlkMmQzWVd4aVVHSjNaWEJtVTJoTllrWm5kR2RqWVVObE1XWm5hRkZoVG1SVFptZGlNMlJPWmxOb05HRkJaVXBtYkdGQ1lsUmhRMkZxWVZGalRXRlZZbEptVVdOR1lsUmhWR1JGWTJObFFXaDVZMnRtYW1SSllVTm9hR1ZUWVUxa2QyRm5ZWGxoVm1kblpqQm9UR2RGWlVGaE9XWlZZVU5pUTJGblkzbG1WMk5VWVZsalFXTk5hR2hsUVdGTlprUmxlbU5PWkZGb1RtVlJZakJsV0dSUFpWUmhXV0pZWjAxaWEyRTBaWFJvUldNeGFFbGtkMkZCWTBabVNXTXJaa1ZuWjJSclpteGlUR2hDWVVwblptZFZaR3BtV21oTFowaG9lR2RrWmxWaFQyUjNaRVZtYkdaQ1ozbGtPR05OWTBwb1ZHRTRaa3RpVldkcWFFSm9ZbWRZWkVGa2RHaFphRVZuUkdKVlltOWtUbVo2WjFWaWRXVkJZa05oV21kUllsVmtkMlp2WXpCaVJHUkdhRVZtVldoQ1lWVmlNR040WlVoaVFXaE5ZM0JvU1daNVlVRmhiMlJWWldwblRXTkpaazFvYkdkWmFFNW1RMkY0YUVGbFVHTldaa0ZtWjJadmFFMWhiR1JyWnpKbFFXZEVZMGxvVVdKRVowRmxPR0o2WmxWaVJHVlZZazVuUm1WNlptdG9NbVJHWTNwb1NtSlBZMHhrVW1ST1kxTmhUV2hCYUVKbVUyRlFaR2hvU1daS1kwcGhVMkozWkZOaFdHTXhZa2xvTW1kVFltaGpPR1JZWWxablJHRnphRUpsU21aUlkyTmpkbVpFWWtOaVZXVXZZME5pYkdoSlpYZGhWMmd4WVhkbFRHUlhaa0poUVdReFpVdG5SR1ZqWnpGbFRHWm5aa0ZoYldkVlowWm5UV1JMWjA1b1FXTjRZbEpqUm1OQmFGWm5UbUpOWVZKbWQyTkVZVXRtVTJSTmFHZGtTMkpHWmtsbGVtRkRaRVJsU21aWFpVUm1VV1Z6WlZGbFJHZ3haVkZrU1dkTGFFUmxTbVphWTA1a1oyWkJZbmxsUldaQllYZGtVR1JOWkRGa1FXWXhZMFJrVW1Kalp6VmxUbWRvWW1OaWVXRlVZV2xsTUdWVVpWVm1hbU5CWTBGb1ZXZHFZalJrVTJKRFlWTmpWV2h6WlVWbGJHRTVaVk5qVG1kclpHOWtabVJHWmpGblVXTTNaMEZoVTJOVmFFaGhUR1YzWkhkamJHVlFaM2RvY0dkVFlVMW1SbVIwWldOblEyY3habWRpVVdkT1lWTmpaMlF6WVU1blUyWTBaa0ZpU21Oc1lVSm9WR1JEWm1waFVXTk5hRlZoVW1kUmFFWm9WR2RVWTBWbVkyRkJZWGxvYTJkcVowbGpRMk5vWkZOa1RXRjNZV2RrZVdSV1pXZG5NR05NWkVWb1FXTTVZbFZuUTJoRFptZG9lV05YWlZSaVdXVkJaazFtYUdWQlpVMWxSR0o2WWs1alVXZE9abEZuTUdKWVpFOW1WR2haWkZoaVRXaHJaelJvZEdORmFERmpTV1IzWmtGbFJtWkpaQ3RsUldOblpHdGtiR1JNWVVKalNtWm1aRlZpYW1SYVprdGtTR1Y0WTJSaVZXUlBZWGRvUldGc2FFSmllV1U0WkUxbVNtVlVZamhqUzJWVmFHcGlRbVZpYUZobVFXWjBhRmxrUldkRVpsVm9iMlJPWW5wbFZXRjFaa0ZvUTJKYVoxRmpWV1ozWjI5aU1HSkVZa1psUldKVmFFSmlWV2N3WTNob1NHUkJaazFtY0dkSllYbG5RV052WjFWbWFtSk5aMGxpVFdGc1kxbGtUbVZEWjNoalFXUlFhRlppUVdkblpHOW9UV1JzWkd0ak1tZEJZMFJuU1dGUllVUm9RV2M0WW5wbFZXVkVaMVZoVG1OR1pucG9hMlV5WTBaa2VtRktaVTlrVEdSU1kwNW9VMmROWmtGblFtSlRZVkJuYUdGSlpVcGtTbWhUWkhkbVUySllaREZvU1dNeVlsTm1hR1k0WkZoaVZtRkVZM05sUW1kS2FGRm1ZMlIyYUVSaFEySlZaUzlvUTJGc1prbGhkMlJYWlRGaGQyRk1ZMWRsUW1kQlp6RmtTMmhFWVdObU1XaE1ZV2RuUVdWdFlWVm1SbVpOWWt0bVRtVkJZM2hvVW1SR2FFRmtWbUpPWWsxa1VtZDNaVVJrUzJKVGFFMWpaMk5MWWtab1NXaDZaVU5oUkdOS1pWZGpSR0pSWW5ObFVXUkVaREZtVVdkSllrdGxSR0ZLYUZwa1RtTm5ZVUZsZVdWRllrRmlkMlpRWlUxbE1XaEJZVEZuUkdKU1oyTmhOV05PWldobFkyUjVZbFJuYVdFd1oxUmhWV0ZxWTBGaVFXUlZZMnBvTkdoVFlVTmtVMlJWWVhObFJXaHNZemxoVTJGT1ptdGtiMmRtWjBabE1XaFJZemRvUVdOVFkxVm9TR1JNWW5kbmQySnNZVkJsZDJWd1pWTm1UV1pHWlhSalkyRkRZVEZuWjJSUlowNWhVMkpuWVROaVRtRlRhRFJuUVdoS2FHeGtRbVZVWWtOaGFtTlJaVTFuVldaU1lsRmlSbUZVWVZSaFJXZGpZVUZoZVdaclpHcGxTV1pEWVdoalUySk5ZWGRpWjJaNVkxWmtaMmd3WkV4aFJXUkJZemxqVldGRFowTmxaMkY1YUZkbFZHWlpaRUZqVFdSb1owRmpUV0ZFWVhwbVRtaFJhRTVpVVdNd1pGaGlUMlJVWjFsaVdHTk5hR3RtTkdoMFlVVmxNV0pKWVhkalFXTkdZMGxtSzJoRloyZGxhMlJzYUV4aFFtTktabVptVldGcVpGcGhTMmRJWjNob1pHVlZaMDlqZDJWRlpHeGxRbWg1WkRobVRXSktaRlJtT0dWTGFGVmhhbVpDWkdKaldHUkJZblJqV1doRlowUm5WV1p2WkU1bWVtSlZaSFZqUVdKRFoxcGpVV0pWWlhkaWIyVXdhRVJqUm1ORllsVmxRbVpWWWpCaGVHTklaa0ZoVFdkd1pFbGtlV1JCWkc5blZXUnFaazFsU1dOTmFHeGhXV2RPWTBOamVHZEJZMUJtVm1oQllXZGpiMlZOWld4aWEyUXlaRUZpUkdoSlpGRmpSR2hCWlRoaWVtZFZaVVJoVldGT1pVWm9lbU5yWXpKbVJtTjZZMHBqVDJSTVpsSmxUbVZUWTAxbFFXVkNZbE5tVUdab2FFbG5TbVZLWkZOamQyRlRZMWhtTVdGSll6SmlVMk5vWXpoaFdHZFdZa1JuYzJGQ1lrcGhVV05qWm5ab1JHRkRaVlZuTDJoRFoyeG5TV1ozWmxkbE1XZDNaa3hrVjJOQ1owRmhNV0pMWmtSb1kyRXhaa3huWjJoQlptMWlWV1pHWlUxa1MyUk9hRUZuZUdkU1pVWmpRV2RXWlU1aVRXZFNaSGRpUkdaTGFGTmlUV1ZuWWt0blJtTkpZM3BrUTJORVowcGtWMlZFWjFGa2MyRlJZMFJoTVdGUlprbGhTMmhFWWtwbVdtRk9abWRpUVdKNVlrVmhRV2gzWkZCalRXUXhaVUZsTVdoRVpGSm1ZMkUxWVU1aWFHTmpZM2xpVkdkcGFEQmtWR05WWldwb1FXVkJabFZrYW1RMFpGTm9RMkpUWTFWa2MyVkZabXhtT1dkVFowNWthMlZ2WkdaalJtZ3haMUZpTjJkQmFGTmxWV0ZJWVV4amQyTjNaR3hqVUdGM1ozQmlVMlZOWVVaa2RHRmphRU5qTVdoblpsRm9UbVpUYUdkaE0yaE9ZMU5uTkdSQlowcG1iR0ZDWVZSbVEyWnFaMUZvVFdkVlpGSmpVV2RHWjFSbVZHaEZZMk5rUVdoNVpHdGthbVpKWWtOa2FHUlRZMDFqZDJkblpYbG5WbUpuWXpCblRHTkZaa0ZsT1dWVlpFTm1RMmRuWW5sb1YyTlVZbGxsUVdKTloyaGtRV1pOWlVSbmVtUk9aMUZuVG1kUllqQmtXR0pQYUZSbldXUllZazFtYTJnMGFIUm5SV1V4WTBsamQyRkJZVVpqU1dFclpVVmlaMlZyWW14aVRHUkNhRXBqWm1oVlptcGtXbWhMWkVobWVHWmtZbFZtVDJSM1pFVmxiR1pDWjNsbU9HUk5Za3BvVkdZNFlrdGlWV2RxWmtKalltWllhRUZuZEdGWmFFVmpSR1JWWTI5blRtVjZaVlZoZFdoQllVTm5XbU5SYUZWbWQyUnZaVEJtUkdaR1pFVmhWV2RDYUZWaU1HRjRZa2hsUVdoTlozQmxTV0o1WlVGaWIyaFZabXBtVFdkSlprMWhiR2RaWlU1alEyTjRZVUZvVUdWV1prRmpaMk52Wmsxa2JHWnJaVEpsUVdWRWFFbGhVV1JFWVVGbU9HVjZabFZvUkdaVmFFNWlSbWQ2Wld0bE1tVkdhSHBoU21KUFoweGhVbVJPWTFObVRXWkJZVUprVTJGUWFHaG9TV0ZLWTBwaVUyRjNaRk5pV0dReFpVbGlNbWRUWW1oak9HSllZbFpuUkdSelowSm9TbVJSYUdObWRtTkVZVU5tVldFdlkwTmhiR1ZKYUhkblYyY3haM2RtVEdSWFprSmtRV2N4WlV0aVJHTmpaREZrVEdSbllrRm5iV1JWWkVablRXRkxZMDVsUVdoNFpGSmxSbVpCWmxaaVRtSk5aRkpvZDJoRVprdGlVMlZOWldkalMySkdZa2xvZW1kRFlVUmpTbUpYWmtSaFVXUnpaVkZvUkdJeFkxRmpTV1ZMWjBSblNtZGFaRTVtWjJOQlpIbGlSV1pCWkhkbVVHZE5aakZpUVdReFpVUmpVbVZqWmpWaFRtSm9hR05sZVdWVVoybGpNR1ZVWlZWbGFtWkJZa0ZoVldKcVpEUmtVMlZEWkZObVZXaHpZMFZvYkdJNVpGTmlUbWhyWVc5alptWkdZekZqVVdRM1kwRmxVMlZWWTBoaVRHVjNabmRtYkdGUVpYZGxjR2RUWWsxbFJtaDBZMk5rUTJReFkyZGxVV1ZPWTFOaVoyZ3pZMDVsVTJjMFprRmpTbVJzWmtKbVZHWkRZbXBpVVdWTmFGVmtVbWRSWlVaaFZHZFVhRVZvWTJSQlpYbGthMlpxWTBsbVEySm9aMU5tVFdWM2FHZGhlV0pXWkdkbE1HRk1aa1ZvUVdZNVlsVm5RMlpEWVdkbWVXZFhabFJrV1daQllVMWlhR0pCWVUxblJHRjZaMDVqVVdaT1lWRmxNR2hZWWs5b1ZHRlphRmhtVFdWcll6UmtkR0pGWlRGaVNXTjNhRUZoUm1GSlppdGxSV1JuYUd0b2JHVk1aVUpvU21abVpWVmlhbUZhYUV0blNHSjRhR1JtVldGUFozZGxSV0pzWkVKbGVXWTRaVTFrU21SVVpEaG5TMkpWWldwbVFtVmlhRmhrUVdaMFpGbG1SV05FWWxWb2IyZE9hSHBqVldoMVpFRmxRMkphWkZGbVZXRjNZbTlvTUdaRVprWmxSV1ZWWWtKaVZXWXdaSGhoU0dkQllrMW1jR1ZKWVhsalFXTnZabFZqYW1kTllVbGlUV2hzWTFsaFRtUkRaSGhsUVdoUVpGWm5RV05uYUc5bVRXaHNaMnRtTW1WQlprUmpTV1JSWlVSa1FXZzRaSHBsVldkRVlWVmlUbVJHWTNwbmEyVXlaMFpqZW1WS1owOW9UR1pTWkU1b1UyUk5aa0ZrUW1KVFpsQm1hR05KWTBwalNtRlRZWGRvVTJGWWFERm1TV2d5YUZOa2FHWTRaVmhpVm1WRVlYTmhRbUZLWWxGalkyWjJZMFJqUTJkVllTOWlRMlJzWTBsa2QyaFhZekZrZDJSTVlWZG5RbU5CWmpGbVMyZEVaMk5pTVdoTVlXZGpRV1J0WVZWaVJtTk5aRXRsVG1WQlpuaGhVbU5HWVVGalZtaE9aVTFpVW1SM1kwUm5TMmhUWVUxbFoyRkxaa1poU1dKNlpFTm9SR0pLYUZkblJHRlJZbk5vVVdORVp6Rm9VV2hKWlV0aFJHVktaRnBsVG1oblpFRmplV05GWkVGaWQyVlFaVTFrTVdWQmFERmxSR1pTWm1ObU5XaE9ZV2htWTJONVpWUm1hV1F3WlZSbFZXSnFZa0ZpUVdWVlpHcGxOR05UWlVOaFUyUlZhSE5oUldOc1lUbGtVMlJPWm10amIyVm1aa1ppTVdoUlpUZG5RV2hUWmxWbFNHUk1ZWGRrZDJGc1oxQmtkMlp3WVZObVRXaEdaSFJvWTJORFpERmpaMk5SWjA1bFUySm5Zek5sVG1OVFlUUmtRV1ZLWVd4aFFtTlVZME5sYW1kUlowMWlWV1pTWTFGalJtTlVaRlJqUldkalpVRm9lV1JyYUdwa1NXVkRaV2hpVTJWTlpIZG5aMlI1Wmxaa1oyZ3dZMHhuUldSQlpqbG1WV0pEYUVOb1oyRjVaVmRvVkdOWllVRmlUV0ZvWkVGaFRXaEVZbnBuVG1GUlpVNW1VV0V3WWxoblQyaFVhRmxvV0dSTlpXdG1OR2gwWlVWbk1XaEpaM2RuUVdOR1lrbGtLMlJGWjJkaGEyUnNaMHhtUW1aS1pHWm5WV1JxWlZwbFMySklaWGhtWkdkVlpFOW9kMkpGWVd4bVFtVjVhRGhvVFdoS1lsUmtPR2hMWjFWamFtVkNZbUpqV0dSQlozUmxXV1pGWTBSbFZXVnZaazVoZW1oVlpuVm1RV2hEWWxwb1VXTlZZWGRsYjJZd1pVUm9SbWRGWWxWbVFtWlZZakJuZUdkSVpVRmxUV053WlVsa2VXRkJZbTlvVldocVlVMW9TV2ROWjJ4aVdXWk9aVU5pZUdWQlpGQm9WbWhCWTJkbWIySk5abXhrYTJNeVpFRmlSR1ZKWVZGaFJHVkJZemhtZW1SVlowUmhWV0ZPWjBabWVtSnJZekprUm1kNllVcGpUMmhNWWxKa1RtaFRZVTFvUVdGQ1pWTmtVR2RvWkVsbVNtWktaVk5uZDJWVGFGaG5NV1pKWWpKblUyRm9aemhvV0dkV1pVUm5jMlJDYUVwaFVXRmphSFptUkdWRFpsVmpMMlZEWkd4aVNXSjNaVmRqTVdaM1kweGpWMlZDWTBGaU1XUkxhRVJsWTJJeFlreGpaMkpCWTIxaFZXVkdZazFqUzJoT2FFRmplR1pTWjBaa1FXWldaVTVsVFdOU1lYZGpSR0pMWWxObFRXSm5ZVXRqUm1OSmFIcG9RMmRFWjBwbFYyRkVaRkZuYzJoUllVUmxNV1ZSYUVsalMyaEVZVXBsV21ST1kyZG1RV041WVVWblFXZDNZbEJuVFdZeFprRm1NV05FWmxKa1kyZzFaRTVpYUdOalkzbGxWR05wWnpCbFZHTlZaMnBsUVdaQmFGVm5hbVUwWTFOa1EyTlRZMVZpYzJkRlpteGpPV2hUWTA1bmEyWnZabVptUm1NeFoxRm9OMkpCWkZOaVZXUklhRXhrZDJoM1lXeGxVR2gzWTNCaFUyRk5hRVptZEdGalowTmpNV2RuYUZGa1RtVlRhR2RvTTJoT1psTmpOR0ZCWjBwaWJHSkNZVlJqUTJOcVlWRmlUV2RWWVZKbVVXVkdZbFJvVkdSRlkyTmtRV041Wkd0aGFtRkpZa05pYUdWVFlVMW5kMmRuWm5salZtTm5hREJqVEdGRllrRmpPV0ZWWmtObFEySm5ZM2xoVjJoVVoxbG9RV0ZOWW1oa1FXaE5Za1JsZW1KT1psRmhUbUZSWnpCbFdHVlBaVlJpV1dOWVowMWphMmcwWm5SbVJXRXhZMGxuZDJSQlpFWmxTV1lyWVVWaFoyaHJabXhsVEdSQ2FFcGtabVZWWW1wbVdtTkxaVWhoZUdka1oxVmpUMkozWkVWbGJHTkNhSGxpT0dSTllrcGhWR0U0WkV0alZXWnFaMEpqWW1OWVpFRmxkR2RaWTBWbVJHUlZaRzlrVG1WNlkxVm5kV2RCWmtObFdtSlJaVlZpZDJOdll6QmpSR0pHWVVWb1ZXRkNhRlZrTUdONFkwaG5RV05OWm5CaVNXaDVZa0ZoYjJSVllXcGhUV05KWjAxaWJHaFpZMDVuUTJkNFpVRmxVR1ZXWWtGaFoyTnZaVTFoYkdaclpUSmxRV1ZFWlVsb1VXaEVhRUZvT0dKNlpsVmxSR2RWWlU1aVJtWjZaMnRsTW1kR1kzcG1TbVJQWlV4a1VtRk9aRk5tVFdKQlprSmhVMk5RWW1oblNXRkthRXBqVTJKM1lsTm5XR1F4WVVsb01tSlRabWhoT0dGWVpGWmpSR1p6WmtKbVNtWlJaV05tZG1aRVlrTmxWV012WjBOaGJHWkpabmRuVjJReFluZGlUR1pYWWtKaFFXRXhZa3RqUkdoalp6Rm5UR1JuWmtGamJXSlZZMFpqVFdSTFlVNWxRV2g0WkZKblJtTkJaVlpoVG1KTllsSmpkMlJFWWt0bVUyaE5aV2RqUzJaR1pVbGtlbUZEWmtSb1NtRlhaMFJpVVdKelpGRmlSR1F4WTFGaVNXTkxaa1JtU21kYVpFNWhaMlZCWkhsbFJXZEJhSGRrVUdaTmFERm9RV2N4WkVSb1VtWmpaVFZqVG1kb1kyTmhlV1JVWkdsaE1HZFVZVlZuYW1OQllrRmpWV0pxWmpSa1UyTkRaMU5rVldaellrVm9iR2M1WkZObVRtUnJZbTlrWm1OR2FERmpVV1UzWmtGblUyRlZZVWhsVEdoM1kzZGtiR0pRWVhkbmNHSlRaMDFsUm1kMFpHTm1RMkV4WTJkblVXSk9aRk5uWjJRelpVNWpVMkkwWWtGaVNtZHNaMEpvVkdGRFkycGhVV1pOWkZWb1VtTlJhRVprVkdoVVpVVmlZMmhCWkhsaGEyZHFaVWxqUTJGb1pWTm9UV1ozWm1kaWVXSldabWRuTUdaTVkwVm5RV2M1YUZWblEySkRaR2RoZVdaWFoxUm9XV1pCWlUxbmFHSkJZMDFqUkdKNllrNWtVV1ZPWjFGb01HUllZMDlsVkdkWlpGaGxUV2RyWWpSaGRHUkZZVEZpU1daM1pFRmlSbWhKWml0alJXWm5ZV3RoYkdKTVlVSmpTbVJtWVZWbGFtaGFZMHRvU0daNFoyUmtWV1pQYUhka1JXUnNZVUpoZVdRNFowMWtTbVJVWnpoaFMyaFZaR3BpUW1OaVpWaGxRV1owWlZsbFJXSkVaVlZsYjJST1ozcGhWV2gxWjBGb1EySmFaMUZoVldOM2FHOW1NR1pFWVVabVJXTlZaa0pqVldVd1puaGhTR05CWlUxbmNHRkpabmxtUVdWdllsVm9hbUpOWWtsblRXUnNhRmxrVG1aRFpuaGlRV0pRWmxaaVFXSm5abTltVFdSc1lXdG1NbVZCWTBSaFNXVlJaa1JsUVdFNFkzcGtWV1pFWWxWblRtZEdaSHBrYTJjeVlrWm1lbVpLWkU5aFRHTlNZMDVoVTJWTlowRmxRbVpUWlZCbWFHRkphRXBoU21kVFkzZG9VMlZZWmpGalNXWXlhRk5rYUdVNFpGaGxWbU5FYUhOblFtTktaVkZtWTJaMllrUmxRMmRWYUM5b1EyWnNZMGxoZDJkWFl6RmpkMmRNWWxkb1FtTkJaVEZoUzJORVoyTmpNV1pNWVdkbVFXVnRhRlZqUm1aTlprdG1UbVpCWW5oalVtWkdZVUZsVm1kT1lrMWlVbUozWmtSaVMyRlRaVTFtWjJGTFlrWmhTV1Y2WlVOaFJHaEtaRmRpUkdSUlkzTm9VV1JFWkRGbVVXVkpZa3RuUkdaS2FGcGhUbWRuWTBGbGVXVkZaMEZuZDJKUVpFMWxNV1pCWnpGblJHUlNabU5qTldoT1kyaGlZMlo1WmxSb2FXZ3daVlJuVldKcVowRm9RV0ZWWVdwaE5HaFRZME5pVTJaVllYTmtSV1pzWnpsaVUyUk9aMnRtYjJObVpVWmlNV1ZSWlRka1FXWlRaMVZtU0dOTVlYZG1kMmRzWlZCb2QyWndZbE5uVFdaR1kzUmpZMkpEWnpGb1oyZFJZMDVrVTJKbll6Tm9UbUpUWVRSblFXSktZMnhoUW1aVWFFTm5hbUpSWmsxaFZXSlNZVkZoUm1aVVpsUm5SV1JqYUVGa2VXWnJZbXBtU1dWRFltaG9VMlpOWm5kb1oyZDVaRlppWjJnd1pVeGxSV0ZCWWpsa1ZXaERZME5sWjJKNVoxZG5WR05aWVVGalRXaG9aRUZrVFdWRVpIcG1UbWRSYUU1b1VXWXdZMWhrVDJKVVlWbGhXR2ROWld0a05HVjBaRVZqTVdkSlluZGpRV1JHWVVsbksySkZabWRoYTJSc1pVeGhRbWhLWTJablZXVnFZMXBoUzJaSWFIaGlaR1JWWms5a2QyUkZhR3hrUW1WNVpEaGpUV05LWmxSb09HZExaMVZsYW1WQ1oySmlXR1pCWkhSaFdXaEZaa1JsVldWdmFFNW9lbVZWWlhWaFFXTkRZMXBqVVdOVllYZG9iMmd3WkVSalJtWkZZMVZqUW1WVlpqQmhlR0ZJWTBGbVRXVndaRWxsZVdGQlpHOWlWV0ZxWjAxbFNXaE5abXhvV1daT2FFTmllR2RCWlZCa1ZtTkJhR2RqYjJWTlpHeG1hMkV5WVVGaFJHTkpZMUZtUkdKQlpqaGllbU5WWmtSalZXZE9hRVpsZW1ocllUSm9SbUo2YUVwa1QyaE1ZMUptVG1KVFowMWpRV0pDWlZOblVHRm9Za2xuU21WS1pWTm5kMlpUWWxob01XZEpaakpsVTJob1pEaGlXR0ZXWjBSbWMyRkNaa3BtVVdWalpIWmpSR1pEWmxWa0wySkRaV3hqU1daM1lWZGtNV1IzWmt4alYySkNaa0ZrTVdoTFprUmpZMkl4YUV4a1oyRkJZVzFoVldkR1pFMWtTMlpPWVVGbmVHUlNZVVpqUVdoV1kwNWxUV0ZTWm5ka1JHTkxaVk5tVFdabllVdGhSbWhKYUhwaVEyaEVaMHBvVjJKRVoxRmtjMlZSYUVSbE1XWlJaa2xsUzJaRVlVcGhXbWRPWVdkbVFXZDVaMFZrUVdOM1pWQmpUV0l4WWtGak1XWkVaVkpoWTJZMVlVNW5hR1JqWVhsaVZHTnBaakJpVkdaVlpHcGtRV1pCYUZWbWFtYzBZMU5qUTJSVFoxVmhjMmhGWld4aE9XRlRaVTVqYTJGdlptWm5SbVF4WWxGbE4yTkJZbE5pVldWSVpVeG9kMlIzWW14aFVHZDNabkJrVTJoTlprWmpkR05qWWtOb01XTm5aMUZoVG1KVFlXZGtNMk5PWmxOa05HWkJZa3BsYkdoQ1psUmtRMk5xWjFGbFRXWlZaRkprVVdkR1pWUmlWR1JGWTJOb1FXZDVabXRqYW1oSmFFTmphR2hUWjAxbmQyWm5ZM2xtVm1obll6QmpUR1pGWTBGb09XWlZaa05sUTJObllYbG1WMlJVWkZsbFFXRk5aMmhtUVdSTlkwUmllbVZPWWxGb1RtTlJZekJqV0doUGFGUmhXV1ZZWlUxbmEyRTBhSFJsUldZeFowbG1kMk5CWlVabVNXZ3Jaa1ZsWjJkclpXeGlUR1ZDWWtwaFptSlZZV3BoV21STFkwaGxlR1ZrYUZWa1QyVjNZMFZrYkdSQ2FIbGxPR2hOWmtwbFZHWTRaRXRqVldGcVpVSmxZbVpZWmtGamRHaFpZVVZrUkdOVlpHOWlUbWg2WlZWbmRXZEJaa05qV21KUlpGVmxkMkp2WkRCblJHWkdaa1ZqVldaQ1pGVmhNR2g0YUVobVFXZE5ZbkJpU1dONVpVRmxiMmhWWm1waVRXRkphRTFpYkdKWllVNW5RMkY0WjBGaFVHSldZVUZuWjJGdlkwMWtiR2hyWWpKblFXSkVZa2xrVVdaRVowRm1PR1o2YUZWb1JHSlZZazVtUm1ONlpXdG9NbWhHWkhwbFNtTlBhRXhrVW1OT1oxTmtUV1pCWmtKbFUyZFFabWhqU1dSS1prcG5VMkozWkZObldHTXhaa2xrTW1KVFltaG1PR0ZZYUZab1JHUnphRUppU21kUlkyTmxkbWhFWVVObVZXRXZaRU5sYkdGSlpIZG9WMkl4YUhkaVRHRlhaVUppUVdJeFowdG5SR2RqWkRGaVRHUm5aVUZrYldoVlpVWmpUV1ZMYUU1b1FXZDRZbEpoUm1oQloxWmlUbVpOWmxKb2QyWkVZMHRsVTJkTlltZG5TMkpHWjBsaWVtVkRaa1JvU21aWFowUmpVV0p6WjFGblJHUXhaMUZsU1daTFkwUmhTbWRhWkU1bloySkJaWGxqUldoQlozZGtVR1pOWWpGa1FXSXhaa1JsVW1GamFEVmpUbVpvWTJOaWVXZFVZV2xqTUdaVVpGVm5hbVJCWVVGalZXUnFhRFJrVTJSRGFGTm1WV0Z6WVVWb2JHVTVaMU5uVG1oclpXOWhabUZHWkRGbFVXZzNaa0ZsVTJOVlowaGtUR04zWW5kbWJHWlFaWGRsY0dKVFlVMW5SbU4wWW1Ob1EyVXhZV2RoVVdWT1kxTmpaMk16WVU1a1UyTTBaMEZpU21ac1pVSmhWR2REWW1wblVXVk5aRlZvVW1oUmFFWmpWR1ZVWTBWaFkyWkJaWGxsYTJkcVpFbGhRMlZvWlZOaVRXaDNaR2RsZVdaV1pXZGpNR0pNWVVWb1FXVTVaMVZpUTJORFltZG9lV1JYWVZSaVdXVkJZMDFoYUdOQlowMWpSR2Q2WWs1aVVXVk9ZVkZqTUdoWVpFOWhWR2haWVZoaFRXVnJZelJuZEdGRll6RmlTV1IzWlVGalJtaEpaQ3RpUldGblltdGliR1pNWmtKaFNtZG1aMVZuYW1SYVkwdGxTR2Q0Wm1SaVZXZFBaSGRqUldac1prSm5lV2M0WWsxaVNtVlVaamhvUzJGVlltcG5RbVppWTFobVFXZDBZbGxuUldkRVlWVm5iMmRPWlhwa1ZXTjFaMEZvUTJSYVpWRmlWV2gzWTI5aE1HSkVaVVprUldoVmFFSmpWV2d3WjNobVNHUkJaVTFtY0dKSllubG1RV1Z2WlZWb2FtaE5ZMGxuVFdGc1oxbGhUbUZEWlhoaVFXVlFabFpvUVdoblpHOWpUV0ZzWVd0aU1tVkJaRVJtU1dOUmFFUmxRV2M0YUhwbVZXSkVZMVZvVG1KR1kzcGthMkV5WWtabmVtZEtZVTlsVEdGU1pFNWpVMmROWjBGa1FtTlRaRkJrYUdKSlpFcGlTbWRUWjNkaFUyRllaekZuU1dFeVkxTmhhR0U0WVZoalZtWkVZbk5oUW1WS1lWRm1ZMloyWTBSbFEyZFZaUzlqUTJoc1lVbG9kMmhYWWpGamQyUk1ZVmRrUW1aQlp6RmxTMkpFWjJOb01XVk1hR2RtUVdOdGFGVm1SbVZOWkV0alRtTkJaSGhsVW1GR1pVRmtWbVJPWlUxaFVtWjNaRVJsUzJkVFlrMWtaMmhMWVVaaVNXUjZaVU5qUkdSS1kxZGpSR1ZSWjNOb1VXTkVZakZqVVdOSlowdGhSR1pLWkZwblRtZG5ZVUZtZVdoRlpVRm5kMlZRWTAxa01XZEJaakZrUkdWU2FHTm9OV1JPWjJoaVkyUjVaMVJqYVdNd2FGUm9WV2hxWlVGa1FXSlZabXBpTkdWVFpFTmtVMlZWWW5Oa1JXZHNZVGxoVTJST1lXdG5iMlZtWWtabk1XVlJaRGRqUVdkVGFGVmlTR2hNWm5kbWQySnNhRkJpZDJkd2FGTmtUV2RHWkhSblkyZERaREZsWjJaUlprNWpVMkZuWmpOaFRtZFRZVFJtUVdkS1lXeG1RbWRVWWtObmFtaFJhRTFuVldOU1psRmlSbU5VWWxSalJXaGpaRUZoZVdWclptcG1TV2REWVdob1UyWk5ZbmRvWjJWNVoxWmpaMmd3WkV4bFJXUkJZamxpVldoRFlrTm1aMkY1WWxkbFZHSlpaa0ZsVFdWb1pVRmxUV05FWVhwaVRtSlJaRTVtVVdFd1lsaGhUMmhVYUZsa1dHSk5abXRpTkdoMFowVm9NV0pKWlhkaFFXSkdaRWxsSzJWRlltZG9hMkpzWlV4bVFtaEtZMlprVldScVpWcG9TMlpJWkhob1pHSlZaVTlqZDJSRllXeGpRbU41YURobFRXRktZVlJuT0dKTFoxVm5hbUpDWW1Kb1dHTkJZWFJqV1dORlpFUmpWV1p2WWs1aGVtRlZaWFZsUVdKRFlscGpVV0ZWWm5kaGIyTXdaVVJvUm1KRlpWVm5RbUpWWWpCb2VHaElhRUZoVFdKd1owbG1lV1pCWkc5aFZXVnFZVTFtU1dOTllteGlXV1ZPWTBOa2VHRkJZbEJuVm1WQmFHZGtiMk5OWTJ4amEyVXlZa0ZoUkdGSlkxRm5SR1pCWnpoa2VtUlZhRVJrVldkT1owWm5lbVJyWVRKblJtZDZaRXBtVDJkTVpGSm9UbVZUWlUxbVFXWkNhRk5tVUdGb1owbGtTbUZLWTFOaWQyRlRaVmhoTVdOSlp6Sm9VMlJvWkRoa1dHRldaMFJvYzJKQ1pFcGhVV1ZqWm5ab1JHZERZVlZuTDJKRFpXeGxTV04zWjFkb01XVjNZa3hqVjJaQ1owRm1NV2RMWjBSaFkyTXhZVXhqWjJOQlpHMWhWV2RHWVUxbVMyTk9hRUZpZUdOU1lrWmlRV1ZXWTA1aVRXSlNaSGRpUkdaTFoxTmpUV1puWmt0a1JtVkpabnBtUTJWRVlrcG1WMmhFYUZGbWMyZFJZVVJoTVdaUlkwbG1TMmhFWWtwbFdtWk9aMmRvUVdSNVkwVmtRV04zWkZCb1RXSXhZVUZvTVdkRVpWSmxZMkkxWms1aGFHRmpZbmxqVkdScFlUQmpWR1pWYUdwaVFXaEJhRlZtYW1FMFkxTm5RMmRUWmxWaWMyaEZaR3hsT1dOVFkwNW5hMmh2Wm1aaFJtY3hZbEZtTjJSQlpWTmxWV1JJWlV4bmQyaDNaMnhtVUdSM1luQm5VMmROWWtab2RHaGpZME5rTVdkbloxRmpUbVpUWVdkbk0yRk9aRk5pTkdSQlpFcGtiR1ZDWkZSb1EyRnFhRkZuVFdkVllWSm5VV05HWVZSbFZHTkZhR05oUVdKNWFHdG5hbVJKWWtOaGFHaFRZazFsZDJOblpubGlWbWhuWlRCbVRHUkZZa0ZsT1dGVlkwTmxRMlZuWW5salYyWlVabGxpUVdWTlpHaGhRV1pOWmtSb2VtSk9ZVkZoVG1oUmFEQm5XR2RQWlZSaVdXRllaMDFsYTJNMFkzUm9SV014WTBsbWQyUkJaa1ppU1dFclpFVm9aMlZyWVd4bFRHSkNaRXBsWm1WVlltcG5XbVZMWVVoaWVHSmthRlZqVDJaM1kwVmtiR1JDWlhsb09HaE5aMHBsVkdRNGFFdG1WV0ZxWVVKaFltZFlaMEZpZEdKWmFFVm1SR0ZWWTI5a1RtZDZaVlZuZFdKQlowTmhXbUZSWkZWbmQySnZaekJrUkdkR1pFVmhWV2RDWkZWak1HRjRaMGhsUVdkTlpYQm9TV1Y1WVVGaWIyUlZZbXBrVFdKSllVMW1iR2RaWlU1bVEyVjRaMEZsVUdSV1kwRm9aMkp2YUUxbmJHRnJaREpoUVdORVprbGxVV1JFWTBGbE9HSjZZMVZoUkdaVllVNWhSbWg2Wld0bU1taEdaM3BvU21aUFpreGlVbVJPWVZObFRXRkJZMEptVTJSUVltaG1TV1JLWmtwalUySjNZbE5oV0dZeFlVbG9NbWRUWjJobE9HWllabFpqUkdkellVSm1TbVZSWjJOa2RtaEVZVU5sVldndlprTmtiR05KWm5kaFYyY3hZWGRuVEdKWFprSm5RV2d4Wmt0a1JHaGpZekZoVEdKbllVRm1iV2RWYUVab1RXWkxaazVtUVdKNFkxSmlSbWhCWkZabFRtZE5ZMUpuZDJKRVlrdGxVMmROYUdkaFMySkdhRWxqZW1GRFpFUmlTbWRYWWtSaVVXSnphRkZqUkdNeFlsRmtTV1pMWTBSbVNtUmFaVTVuWjJKQllubG9SV2RCWVhkalVHaE5ZVEZsUVdVeGFFUm5VbVZqYURWaVRtVm9aV05sZVdKVVlXbG9NR0ZVWkZWbGFtWkJaMEZuVldGcVp6UmxVMk5EWTFOaVZXWnpaMFZuYkdRNWFGTmxUbWRyYUc5b1ptSkdZVEZuVVdNM1pVRmpVMk5WWlVoaFRHVjNaWGRoYkdaUVkzZGxjR2hUWWsxa1JtVjBZMk5tUTJjeFlXZGxVV2hPWlZObFoyZ3paMDVsVTJNMFlrRmhTbU5zWlVKaFZHSkRaMnBsVVdGTlpWVmlVbWhSWTBablZHZFVhRVZsWTJkQlpYbG1hMmhxWVVsaFEyTm9ZVk5sVFdaM2FHZGhlV2hXWVdka01HVk1Za1ZrUVdRNVlWVmlRMlJEWm1kaWVXRlhabFJpV1dSQlkwMWphR0pCYUUxbVJHVjZZazVpVVdaT1pGRmlNR1ZZWlU5aVZHTlpZMWhoVFdOcll6UmxkR0pGWXpGbVNXSjNZMEZrUm1SSll5dGhSV2RuWTJ0bGJHUk1hRUpvU21SbVlsVmxhbWRhWlV0a1NHTjRabVJsVldoUFpIZG9SV1pzWjBKbGVXRTRhRTFuU21kVVlqaGtTMlJWWjJwaVFtSmlaMWhtUVdoMFlWbGtSV2RFYUZWaWIyZE9aM3BvVldkMVlVRmxRMmhhWkZGbVZXaDNZMjltTUdWRWFFWm9SV2hWWWtKalZXTXdZWGhtU0dOQlpFMWhjR1pKWVhsaVFXaHZZMVZrYW1WTllrbGhUV1ZzWTFsblRtaERZbmhvUVdSUVkxWm5RV2huWTI5aVRXTnNZbXRpTW1oQmFFUmtTV1pSWjBSa1FXWTRaSHBoVldORVpsVm1UbVZHWTNwaGEyUXlaa1poZW1kS1pVOWxUR2RTWms1bVUyZE5ZMEZuUW1GVFoxQmphR1pKWVVwb1NtTlRZM2RpVTJGWVlqRm5TV1F5WkZOamFHRTRaRmhqVm1kRVlYTm5RbVZLWjFGb1kyTjJhRVJoUTJoVlpDOWpRMk5zWTBsamQyVlhaVEZpZDJSTVkxZGpRbUpCWXpGbVMyZEVZbU5rTVdaTVpHZGhRV1p0WWxWbFJtZE5aVXRqVG1KQlpYaG5VbUZHWkVGalZtVk9ZMDFpVW1WM1lrUm5TMlZUWVUxbVoyUkxZMFpoU1dWNlowTm1SR1JLWjFkaFJHWlJZWE5vVVdORVpqRm9VV2RKWlV0bVJHSktaMXBvVG1kbllVRmhlV0pGWlVGa2QyaFFaMDFvTVdGQlpURm5SR1JTWjJOa05XRk9abWhsWTJkNVoxUm5hV2d3WlZSa1ZXTnFaa0ZvUVdkVlpXcGtOR2hUWjBOb1UyZFZabk5uUldkc1l6bG1VMlJPWm10a2IySm1Za1psTVdWUlpUZGtRV2RUWlZWbVNHWk1abmRvZDJOc1lWQm9kMmh3WlZObVRXTkdZM1JuWTJKRFlURmhaMk5SWWs1bFUyZG5Zek5sVG1SVGFEUmhRV2hLWjJ4aVFtTlVaRU5pYW1oUllrMWhWV1JTWTFGaFJtUlVhRlJuUldKalkwRm5lV1pyWTJwaVNXZERaR2hqVTJkTllYZG1aMkY1WTFaa1oyTXdZa3hrUldoQlpqbG1WV1ZEWWtOb1oyVjVZVmRrVkdKWlpVRmhUV0pvWWtGb1RXRkVZWHBqVG1OUlpFNWpVV1l3WkZoblQyVlVabGxtV0dKTllXdG1OR2gwWlVWbE1XVkpaM2RoUVdKR1pVbGxLMlpGYUdkamEyVnNZVXhvUW1WS1lXWmpWV2RxWVZwblMyUklaSGhuWkdGVlpFOW5kMlZGWW14bFFtTjVZamhuVFdaS1kxUmpPR0ZMWjFWaWFtWkNabUpqV0dKQmFIUm5XV2RGWmtSa1ZXSnZaRTVoZW1kVlozVm9RV0pEWjFwaFVXUlZZbmRpYjJVd1pFUm1SbWRGWWxWbVFtRlZaekJoZUdkSVkwRmhUV053WTBsbmVXTkJhRzlrVldKcVkwMWxTV1JOYUd4b1dXUk9aME5vZUdOQlpGQm5WbUpCWm1kaGIyRk5ZV3hsYTJFeVowRm1SR2RKYUZGalJHRkJaemhqZW1aVlpFUm5WV1ZPWkVaaWVtRnJaVEppUm1SNmFFcG1UMmhNYUZKaFRtZFRaMDFuUVdoQ1lsTmxVR1pvWmtsbFNtSktZbE5rZDJKVFoxaGtNV0ZKWXpKb1UyaG9ZemhqV0daV1lrUm9jMk5DWjBwa1VXZGpaSFppUkdORFlWVm5MMlpEWVd4blNXZDNZVmRvTVdOM1pFeG9WMlJDWVVGa01XTkxZMFJqWTJReFlreG5aMlJCWTIxb1ZXSkdaRTFsUzJaT2FFRmxlR2RTWkVaaVFXSldhRTVtVFdoU1ozZG9SR1pMWVZOaVRXTm5hRXRtUm1KSllYcGpRMlZFWmtwblYyZEVaVkZrYzJWUlprUmhNV1pSWkVsblMyaEVaa3BvV21aT1oyZGhRV041WVVWb1FXVjNabEJsVFdJeFpFRmtNV05FWTFKaVkyRTFhRTVrYUdWallYbGtWR2hwWlRCaVZHUlZZV3BqUVdSQlpGVmhhbUUwWWxOa1EyaFRabFZvYzJaRlpteGhPV0pUWWs1bWEyaHZaR1ppUm1jeFpWRmhOMkZCWjFObVZXVklaRXhuZDJKM1oyeGtVR0ozWW5CbVUySk5aa1psZEdOalowTmpNV0ZuWTFGb1RtaFRZMmRoTTJoT1pWTmlOR1pCYUVwaGJHaENabFJvUTJScVoxRm5UV0ZWWlZKbVVXaEdhRlJvVkdORlptTmpRV0Y1WVd0bmFtUkphRU5tYUdKVGFFMW1kMlpuWW5sbVZtVm5aakJuVEdaRlpVRmpPV1JWYUVObFEyUm5aM2xpVjJkVVoxbG5RV1pOWm1oa1FXTk5aVVJrZW1WT1psRmpUbUZSYURCbldHWlBZbFJuV1dGWWFFMW9hMk0wWVhSblJXTXhaVWxoZDJkQlpVWm5TV2NyWVVWaVoyZHJZMnhqVEdSQ1lVcGxabVJWWTJwaFdtRkxZa2hqZUdaa1psVmtUMkYzWTBWbmJHZENZbmxtT0doTllrcGpWR000WjB0b1ZXVnFZa0ppWW1SWVprRmhkR0ZaWlVWbFJHTlZaRzlvVG1ONmFGVmpkV1pCWmtObFdtRlJabFZqZDJkdll6Qm9SR0pHWmtWaVZXUkNZMVZpTUdoNFpVaGhRV2ROWm5CaFNXZDVaRUZoYjJaVloycGpUV0pKWVUxa2JHVlpZVTVvUTJaNFpVRmhVR1JXWlVGb1oyaHZaazFqYkdOclpUSmpRV05FWVVsa1VXSkVaRUZpT0daNmFGVmpSR1ZWWkU1bVJtSjZaR3RpTW1aR1pIcG9TbVpQWVV4blVtWk9aMU5vVFdaQmFFSm5VMmhRWjJoa1NXZEtaRXBqVTJaM1pGTmxXR0V4WWtsbU1tZFRZbWhpT0dSWVlWWmxSR1Z6WWtKalNtRlJZMk5qZG1kRWFFTmlWV2d2WVVOb2JHRkpZbmRrVjJjeGFIZGpUR1ZYWjBKbFFXTXhaa3RuUkdoall6Rm1UR1ZuWlVGbWJXaFZZa1ptVFdKTFlrNW5RV1o0WkZKaFJtUkJZbFpvVG1kTllWSmpkMlJFWjB0alUyZE5aR2RtUzJoR1prbGxlbVpEWTBSalNtZFhZa1JoVVdkellsRmxSR1V4WkZGa1NXUkxhRVJvU21OYVlrNWpaMlZCWm5salJXaEJZM2RsVUdOTllqRm5RV0V4WVVSbFVtTmpZelZoVG1Kb1ptTmllV1ZVWTJsbU1HZFVabFZtYW1oQmFFRm9WV0ZxWkRSbVUyVkRZVk5uVldoellrVmhiR1k1WTFOb1RtTnJaMjlsWm1oR1lqRm9VV1kzWVVGblUyRlZaVWhpVEdkM2FIZGpiR05RWTNkbGNHTlRaMDFtUm1WMFlXTmxRMlV4WTJkaVVXZE9aRk5tWjJZelpFNW1VMk0wYUVGaVNtaHNaVUpuVkdWRFltcG9VV1JOWmxWaVVtRlJZa1prVkdkVVlrVmtZMlZCWW5sbmEyWnFaMGxuUTJab1oxTm9UV2gzYUdkaGVXUldabWRoTUdGTVowVmhRV1k1YUZWaFEyZERZV2RrZVdoWFpsUm9XV2RCWmsxbmFHTkJZMDFqUkdGNllrNW1VV1ZPWTFGbE1HZFlZVTlsVkdGWlpsaG9UV1JyWXpSaGRHZEZaVEZtU1dOM2FFRmpSbU5KYUN0aVJXWm5ZV3RoYkdoTVowSm9TbWhtWTFWaWFtTmFZVXRtU0dKNFlXUmtWV2RQWW5kblJXTnNaRUprZVdNNFlrMW1TbWhVWWpoalMySlZhR3BtUW1SaVpWaGlRV0owWTFsalJXZEVaMVZvYjJaT1ozcGhWV0oxWjBGaFEyUmFhRkZrVldoM1pHOW9NR1ZFWmtabFJXVlZZMEpvVldJd1pYaG1TR1JCYUUxa2NHRkpaM2xpUVdodllWVmthbUpOWWtsbFRXRnNZMWxvVG1WRFpYaG1RV2hRWkZaa1FXWm5hRzltVFdkc2FHdGtNbWhCWVVSbFNXRlJaMFJtUVdNNGFIcG9WV0pFWlZWbFRtTkdhSHBvYTJJeVprWm9lbUpLYUU5aFRHRlNZazVpVTJaTlowRm1RbUpUWkZCbWFHZEpaVXBqU21OVFpuZGpVMlpZWkRGaFNXTXlZbE5tYUdRNFkxaGxWbVZFWkhOalFtZEtZVkZtWTJSMlpVUmlRMkpWWXk5aFEySnNaRWxrZDJOWFpURmtkMlJNYUZkbVFtaEJZVEZuUzJaRVlXTmtNV0ZNWldkaVFXTnRabFZoUm1STllVdGtUbWRCWW5oblVtVkdaMEZrVm1OT1prMW1VbU4zWmtSblMyaFRZazFuWjJKTFprWmhTV2g2WmtOalJHZEtaRmRpUkdGUlkzTmhVV1ZFWXpGblVXVkpaMHRtUkdkS1pscG9UbVJuWTBGaWVXaEZZa0ZtZDJGUWFFMWtNV1ZCWmpGaFJHZFNZV05rTldKT1ltaG1ZMlo1WVZSbGFXRXdaVlJsVldKcVlrRmlRV2RWYUdwa05HaFRZME5tVTJKVmFITmxSV1pzWWpsbVUyUk9ZMnRsYjJobVprWm1NV0pSYURkblFXWlRaRlZoU0dKTVpIZGpkMmRzYUZCa2QyZHdaMU5oVFdoR1luUmlZMmREWlRGaVoyaFJaVTVqVTJobllUTmpUbVZUWXpSaFFXTktabXhqUW1aVVkwTmlhbVJSWmsxblZXWlNhRkZqUm1KVWFGUm5SV1JqWVVGamVXTnJaV3BsU1doRFptaGlVMkpOWkhkbFoyaDVZMVpoWjJnd1oweGhSV2hCWkRsaFZXVkRhRU5pWjJKNWFGZGhWR0paWTBGbFRXTm9Za0ZqVFdKRVlucGlUbVJSWjA1blVXTXdabGhpVDJaVVpWbG1XR0pOWjJ0ak5HZDBaa1ZuTVdOSlpIZGtRV05HWjBsb0syWkZhR2RsYTJkc1lVeGxRbWRLWldablZXRnFabHBtUzJkSWFIaGpaR1JWWWs5b2QyZEZabXhsUW1KNVp6aGlUV0ZLWkZSbk9HRkxZMVZoYW1WQ1ltSmpXR1JCWVhSbVdXWkZaMFJrVldKdlowNWxlbVZWWW5Wa1FXTkRabHBpVVdOVlluZGpiMkV3WjBSbFJtUkZaVlZrUW1aVmFEQm9lR05JWkVGb1RXZHdaa2xqZVdGQlkyOW5WV1ZxWkUxbFNXSk5ZbXhsV1dKT1pVTmhlR1JCWlZCa1ZtZEJabWRtYjJWTllteG5hMll5WkVGaVJHSkpaRkZvUkdaQmFEaGxlbWRWWlVSblZXUk9aRVpqZW1WcllUSmtSbVY2YUVwb1QyaE1aVkptVG1kVFpVMWxRV05DWlZObFVHaG9ZMGxrU21aS1lWTmpkMlJUYUZobE1XRkpZakptVTJOb1lUaGpXR05XWmtSbGMyZENZVXBqVVdKalpuWmpSR05EWmxWbEwyTkRaMnhqU1dWM1pGZGxNV04zWmt4aVYyaENZVUZvTVdkTFlrUm5ZMmN4Wmt4bVoyTkJabTFrVldWR1kwMWhTMlZPWmtGaGVHRlNZVVptUVdGV1lVNWlUV2RTWlhkb1JHSkxhRk5pVFdoblpVdGpSbWhKWkhwblEyaEVaVXBrVjJkRVpsRmxjMkpSWWtSbE1XaFJaVWxtUzJoRVprcG9XbU5PWTJka1FXSjVZVVZtUVdWM2FGQm9UV1V4WkVGbE1XTkVZVkptWTJNMVlVNW5hR1pqYUhsbFZHZHBaREJvVkdSVlptcG1RV0pCWjFWb2FtZzBhRk5qUTJoVFlsVmljMk5GWkd4ak9XZFRaVTVsYTJkdlpHWm9SbUl4WVZGa04yaEJhRk5qVldSSVpVeGhkMkozYUd4aFVHSjNhSEJqVTJOTmFFWmpkR1JqWTBOa01XZG5hRkZoVG1WVFoyZG1NMk5PWTFObk5HVkJhRXBuYkdGQ2FGUmxRMlpxYUZGaFRXRlZZMUprVVdSR1lsUm5WR0pGWTJOblFXZDVZV3RuYW1OSllrTmthR0pUYUUxb2QySm5ZbmxsVm1ObllqQm5UR0pGWkVGaE9XZFZZa05uUTJWbllYbGtWMlpVWmxsaVFXaE5hR2htUVdGTmFFUm1lbVZPWWxGblRtSlJZekJoV0dOUFoxUm9XV05ZWjAxbGEySTBablJoUldjeFlrbG9kMkpCYUVaaVNXTXJaVVZtWjJOcmFHeG9UR05DWTBwbFptUlZaMnBqV21oTFowaGxlR0prWjFWbVQyVjNaa1ZqYkdkQ1lYbGpPR2hOWlVwaFZHRTRZa3RvVldOcVpVSmlZbWhZWVVGa2RHVlphRVZvUkdaVmFHOW9UbVo2WmxWaGRXRkJaVU5pV21WUllsVm9kMkp2WVRCaFJHWkdhRVZpVldGQ1kxVm5NR2g0Wmtob1FXSk5aSEJpU1daNVkwRmpiMlZWWTJwaVRXVkphRTFpYkdaWlkwNWxRMmg0WmtGbFVHaFdaa0ZtWjJKdlpVMW1iR05yWXpKblFXVkVZVWxtVVdaRVpFRmhPR0Y2WVZWa1JHRlZaazVrUm1ONlltdGlNbU5HWW5wbFNtWlBaa3hpVW1WT1psTmpUV05CWkVKblUyaFFhR2huU1dGS1lrcGxVMkYzWWxOb1dHVXhZa2xpTW1OVFkyaGtPR1JZWjFaalJHUnpZMEpoU21kUlpHTmlkbWRFWWtOaVZXVXZaVU5tYkdaSlozZG1WMll4WjNkb1RHVlhZVUptUVdFeGFFdGxSR2RqWlRGa1RHSm5hRUZoYldOVmFFWm9UV2hMWTA1a1FXSjRZMUppUm1KQmFGWm9UbU5OWlZKamQyUkVaRXRqVTJOTllXZGxTMk5HWlVsaWVtRkRhRVJvU21SWGFFUmhVV2h6WlZGa1JHY3hZbEZvU1dkTFlrUmpTbU5hWjA1aFoyUkJabmxvUldoQlpIZGxVR1pOWWpGblFXY3hZMFJtVW1KalpUVmpUbWhvWjJObWVXSlVZMmxvTUdOVVkxVmphbVZCWVVGbFZXVnFZalJqVTJGRFkxTm1WV2h6WlVWbWJHSTVaMU5oVG1kclpHOW5abUZHWWpGbVVXYzNZMEZqVTJOVlowaG9UR2gzWkhka2JHZFFhSGRrY0doVGFFMWlSbWgwWjJOaFEyZ3hhR2RoVVdGT1psTm1aMkV6WWs1blUyWTBhRUZtU21Oc1owSmtWR1ZEWW1wa1VXRk5abFZuVW1kUllVWm1WR1JVWTBWa1kyWkJaSGxvYTJOcVprbG5RMmRvYUZOa1RXVjNZbWRvZVdOV1oyZG1NR2RNWmtWblFXRTVZbFZsUTJoRGFHZGplV2RYYUZSbFdXTkJZVTFuYUdKQmFFMW1SR042YUU1aFVXVk9ZMUZqTUdOWVlVOWpWR1JaWmxobFRXTnJZVFJtZEdORllqRmlTV2gzWmtGblJtaEpaeXRsUldSblpXdGpiR0ZNWTBKbFNtZG1ZbFZsYW1KYVpFdG9TR1Y0WkdSaVZXWlBZM2RtUldWc1pVSmhlV2c0WlUxbFNtUlVaemhvUzJoVlptcGtRbUZpWlZoaVFXWjBhRmxqUldkRVpWVmtiMk5PYUhwalZXVjFaMEZvUTJoYVpGRm1WV04zWTI5b01HUkVZVVpoUldKVlprSm1WV013YUhoaVNHZEJaMDFpY0dSSlozbGlRV1p2YUZWbmFtSk5aRWxoVFdOc1pWbGhUbU5EWjNobVFXVlFabFprUVdablltOWtUV2RzWld0b01tTkJZMFJsU1dKUlprUmlRV0U0WW5wblZXRkVaVlZsVG1GR1pucG9hMmd5WjBaamVtVktZazlsVEdOU1kwNW5VMlZOWkVGaVFtRlRZbEJpYUdKSllrcG1TbWhUYUhkbVUyWllaREZqU1dReVlWTmxhR1U0WVZoaFZtaEVhSE5uUW1WS1psRmtZMloyWVVSbFEyVlZaeTlqUTJSc1pVbG9kMlpYWXpGaWQyTk1hRmRvUW1KQllqRmhTMkpFWkdOak1XWk1ZbWRpUVdOdFpGVm9SbVZOYUV0bVRtUkJaSGhpVW1GR1lrRmxWbVpPWjAxalVtWjNaRVJrUzJOVFlrMW5aMlZMWTBaaVNXSjZaRU5pUkdGS1kxZGhSR0pSWjNOblVXTkVaakZvVVdaSllVdGtSR1JLWWxwbVRtSm5Za0ZsZVdSRlprRm5kMkpRWVUxaU1XRkJZakZqUkdOU1ltTmlOV1JPYUdoblkyVjVabFJuYVdZd1pWUmhWV2hxWVVGalFXUlZZbXBoTkdKVFowTmhVMmRWWTNOb1JXTnNZVGxoVTJaT1kydGliMlptWmtab01XTlJZVGRsUVdoVFpWVm9TR0pNWkhkaWQyZHNaRkJvZDJWd1kxTmxUV1ZHWlhSb1kyUkRhREZvWjJGUlpVNWlVMkZuYURObVRtTlRaVFJtUVdWS1lXeG1RbWRVWWtOa2FtWlJZMDFqVldkU2FGRm1SbUpVWmxSbVJXRmpZVUZrZVdOclkycGpTV0ZEWTJoaFUyaE5ZbmRqWjJGNVoxWmpaMlF3YUV4bVJXaEJaamxrVldKRGFFTm9aMlY1WmxkblZHSlpaVUZtVFdOb1kwRmpUV2hFWjNwb1RtTlJhRTVvVVdFd1pWaG9UMkZVWmxsaldHSk5aMnRuTkdOMFpFVmpNV2RKWkhkaFFXRkdhRWxoSzJSRmFHZGphMkpzWjB4b1FtWktZV1psVldWcVkxcG5TMkZJWkhobVpHWlZZMDltZDJKRlpHeG5RbWQ1Wmpoa1RXUktZbFJqT0doTFpWVmphbWhDYUdKbldHZEJaM1JoV1dWRlprUmlWV1J2WWs1amVtaFZaM1ZoUVdoRGFGcG9VV1JWWm5kaWIyZ3daa1JoUm1ORmFGVm5RbUpWWVRCb2VHaElhRUZrVFdod1kwbGhlV0pCWlc5aFZXaHFZazFuU1dGTllXeGhXV05PWkVOb2VHWkJZMUJuVm1aQlkyZGpiMmhOWW14aWEyZ3laVUZrUkdWSlpsRmpSR0ZCWmpoaWVtZFZaRVJuVldWT1lVWmxlbVZyWVRKalJtVjZhRXBpVDJaTWFGSm1UbWRUWmsxblFXSkNaVk5tVUdkb1pVbGxTbVZLWVZOb2QyWlRaMWhtTVdWSlpqSmxVMk5vWmpobldHTldaMFJrYzJOQ1pVcG5VV0pqWVhabFJHTkRabFZvTDJGRGFHeG9TV2gzWTFkb01XSjNaRXhpVjJkQ1owRm5NV1ZMWkVSbFkyZ3hZVXhoWjJoQlltMWhWV05HWVUxa1MyUk9aMEZtZUdoU1pFWm1RV1pXWjA1blRXUlNaSGRtUkdkTFpGTmlUV0puYUV0bFJtUkphSHBoUTJaRVlrcGxWMk5FWmxGamMyZFJZa1JsTVdOUlkwbG5TMlpFWWtwb1dtWk9aMmRpUVdKNWFFVm5RV04zWWxCbVRXRXhhRUZsTVdaRWFGSm1ZMlExWjA1bGFHZGphSGxvVkdacGFEQmhWR0ZWWjJwbVFXUkJaVlZoYW1FMFlWTmpRMlJUWkZWaGMyZEZZMnhqT1dKVFlrNW9hMkp2Wm1ab1JtTXhaRkZpTjJaQllsTmhWV1ZJWVV4b2QyUjNZbXhsVUdaM1ozQmlVMmROWmtaa2RHUmpZME5rTVdGbmFGRmtUbUpUWW1ka00ySk9hRk5vTkdoQlpVcG5iR0pDWWxSaVEyZHFZVkZqVFdKVllWSmtVV05HWTFSaVZHTkZaMk5qUVdGNWFHdG1hbUZKYUVOa2FHaFRaRTFoZDJSblpYbGpWbVJuWkRCb1RHaEZaMEZtT1dkVlpFTm5RMlJuWm5sblYySlVabGxpUVdkTlkyaG9RV0ZOWjBSamVtaE9aMUZuVG1aUlpEQm1XR2hQWlZSbFdXaFlZazFuYTJFMFpIUm5SV2N4WVVsa2QyZEJaMFpvU1dRclkwVmpaMkZyWld4aFRHZENaa3BsWm1OVlltcGlXbUpMYUVoaGVHZGtaMVZsVDJKM2FFVmhiR2RDWjNsaE9HUk5aVXBqVkdFNFpFdGpWV05xWWtKblltUllaa0ZtZEdaWlowVm1SR1ZWWTI5b1RtVjZaMVZtZFdSQllVTm9XbVJSWjFWaWQyRnZZakJpUkdOR1lrVm9WV1ZDWmxWa01HaDRaa2hqUVdGTlluQm1TV2Q1WTBGbmIyWlZaR3BrVFdOSllrMWliR05aWVU1alEyVjRaVUZsVUdGV1owRm5aMlJ2WkUxaGJHTnJZVEptUVdaRVlrbGhVV1ZFYUVGbk9HSjZaRlZtUkdkVlpVNWtSbUY2YUd0aU1taEdabnBsU21OUFpVeG9VbVpPWjFOa1RXUkJaRUpoVTJKUVpHaGlTV2RLWlVwa1UyZDNhRk5sV0dJeFkwbGxNbUZUWTJoak9HZFlZbFpuUkdOelprSm9TbVpSWkdOa2RtUkVaa05vVldJdlkwTmtiR1JKWkhkbFYyZ3haM2RuVEdGWFlrSmtRV014WjB0blJHWmpZakZrVEdablkwRm9iV1JWWjBaaVRXVkxaMDVoUVdONFoxSmtSbVJCWTFablRtRk5ZMUpoZDJGRVkwdGxVMlZOYUdka1MyWkdZMGxsZW1SRFpVUmpTbUZYWmtSblVXZHpZbEZuUkdjeFlsRm5TV2hMWlVSbVNtVmFZVTVoWjJaQlozbGhSV1JCYUhkblVHWk5ZekZoUVdVeGFFUm5VbWhqWkRWbFRtSm9ZbU5pZVdoVVoybG1NR2RVWjFWbWFtTkJhRUZpVldOcVl6Um1VMmREWmxOalZXUnpaa1ZuYkdnNVoxTmxUbUZyWW05b1ptaEdZekZrVVdNM1pVRmhVMlpWWjBoaVRHSjNaWGRtYkdOUVozZGxjR1JUWjAxa1JtWjBaMk5oUTJNeFptZG9VV0pPWWxObloyTXphRTVqVTJRMFlrRmxTbWhzWkVKalZHZERabXBvVVdGTllsVm5VbVpSYUVablZHaFVaRVZoWTJKQlpIbGxhMmRxYUVsblEySm9ZbE5pVFdoM1ptZGllV2hXWVdkb01HSk1aa1ZtUVdFNVpWVmxRMkZEWVdkb2VXVlhaVlJvV1dSQlowMW9hR0pCWlUxblJHSjZaazVsVVdST1psRmxNR0ZZWTA5bVZHRlphRmhsVFdScll6UmhkR2RGWlRGaVNXRjNhRUZtUm1SSmFDdGxSV1JuWTJ0bGJHSk1aRUpuU21ObVkxVmlhbUZhWjB0b1NHaDRZMlJsVldSUFlYZGxSV2hzWjBKbWVXUTRZazFoU21kVVl6aGpTMlZWWW1waFFtVmlZVmhoUVdkMFlWbGxSV05FWVZWbWIyUk9ZbnBsVldWMWFFRm9RMlphWmxGaVZXZDNabTlvTUdSRVlrWm1SV0pWWVVKbFZXRXdabmhqU0dWQlprMWhjR2hKWlhsaVFXaHZZMVZqYW1oTlpVbG5UV0ZzWjFsb1RtWkRabmhvUVdGUVlsWmxRV0puYUc5a1RXVnNaMnRtTW1oQlprUmxTV1ZSWlVSbFFXWTRhSHBvVldaRVkxVm5UbU5HYUhwbmEyVXlZVVptZW1SS1pFOWxUR0ZTWms1aFUySk5ZMEZuUW1SVFoxQmxhR2hKWTBwalNtTlRZWGRsVTJSWVlURm9TV015WVZOa2FHTTRabGhuVm1ORWFITmxRbVJLWlZGaVkyWjJaa1JvUTJaVlpTOW9RMmhzWkVsbWQySlhaVEZrZDJkTVkxZGlRbUZCWmpGaVMyUkVaV05tTVdoTWFHZGlRV1Z0WWxWalJtUk5aa3RuVG1GQllYaGhVbWRHYUVGaVZtUk9aMDFtVW1SM1lrUmpTMlpUWWsxa1oyVkxhRVpvU1dONllVTmlSR1JLWTFka1JHWlJaWE5qVVdkRVp6RmtVV2RKWlV0aVJHTktZMXBsVG1ablpFRmhlV1pGWTBGaGQySlFaazFrTVdaQmFERmlSR1JTWTJOb05XRk9ZMmhtWTJaNVlsUm9hV1l3WkZSa1ZXWnFZMEZrUVdGVlptcGhOR05UWTBOaVUyTlZZWE5rUldWc1pEbG9VMlJPWkd0bWIySm1aa1puTVdKUmFEZGhRV2RUYUZWbVNHSk1ZM2RrZDJKc1lsQm5kMlZ3WWxOa1RXUkdaWFJpWTJoRFpERm9aMkpSWVU1blUyVm5Zek5sVG1oVFpqUmlRV05LWm14bVFtSlVaRU5qYW1OUllVMWxWV1pTWjFGblJtRlVaVlJuUldkallrRmxlV1pyWVdwbVNXWkRZV2htVTJSTlpIZG5aMmQ1YUZab1oyRXdaa3hrUldKQlpUbGlWV2hEWVVOb1oyWjVaVmRuVkdOWlkwRmxUV1JvWjBGalRXRkVhSHBtVG1oUlpVNW1VV1F3WlZobFQyZFVZMWxrV0daTllXdG5OR1IwWTBWbU1XaEpabmRqUVdSR2FFbGtLMkZGYUdkamEyTnNaVXhqUW1GS2FHWm1WV2RxWjFwbFMyZElaWGhtWkdSVmFFOWtkMk5GWTJ4bFFtaDVZVGhqVFdkS1oxUmpPR2hMWjFWa2FtVkNaMkpuV0dOQlkzUmtXV2hGYUVSbVZXaHZaVTVrZW1GVlozVmhRV0ZEWlZwaFVXSlZZM2RvYjJRd1kwUm9SbUpGWTFWa1FtaFZaREJqZUdSSVkwRm5UV1J3WWtsaWVXZEJZVzltVldScVlrMW1TV0pOYUd4b1dXaE9aRU5pZUdKQlpWQmlWbVZCWm1kbGIyWk5ZV3hqYTJJeVprRmtSR1ZKYUZGb1JHWkJaVGhuZW1KVlpVUm9WV1JPWkVaaGVtTnJaakpvUm1SNmFFcGlUMlpNWVZKaFRtaFRZMDFrUVdaQ1lsTmxVR0pvWWtsa1NtaEtZMU5pZDJSVFpsaGhNV2hKWXpKbVUyTm9aVGhoV0dkV1lVUmhjMk5DYUVwbFVXSmpaWFpoUkdWRFlsVm5MMkZEWTJ4b1NXZDNZVmRuTVdSM1lreG1WMmhDYUVGa01XZExZMFJtWTJJeGFFeG9aMmhCWW0xaFZXWkdaVTFsUzJOT1pVRm9lR1pTWWtaalFXWldaMDVpVFdOU1puZGhSR2RMYUZOaFRXSm5aa3RoUm1SSlpucGtRMkpFWlVwblYySkVZVkZtYzJaUlpFUm9NV1JSWjBsb1MyWkVZa3BoV21GT1ptZGlRV041WWtWaVFXZDNZVkJsVFdJeFprRmlNV0ZFWkZKbVkyYzFhRTVsYUdGalpubGpWR2hwWlRCaVZHWlZaR3BqUVdGQllsVm9hbWMwWVZOa1EyRlRZMVZrYzJaRmFHeGtPV05UWWs1bGEyUnZZMlprUm1ZeFkxRmlOMkpCWlZOb1ZXVklaa3hpZDJOM1pteGhVR2gzWTNCaFUySk5aRVpuZEdoallVTm9NV1ZuWWxGb1RtRlRaV2RsTTJWT1kxTmpOR2hCWkVwb2JHUkNaVlJrUTJacVkxRmlUV1pWWVZKaFVXaEdaMVJoVkdORlkyTm1RV1I1WW10bGFtaEpaRU5pYUdSVFprMW9kMlJuYUhsalZtVm5aREJpVEdaRlpFRmhPV05WWjBOa1EyUm5aSGxuVjJSVVlWbGhRV2hOWkdoaFFXRk5aMFJoZW1kT1kxRmxUbVJSWWpCbVdHaFBZbFJqV1dWWVlVMW9hMk0wWm5SaFJXZ3haMGxoZDJKQlpFWmtTV01yWTBWb1oyaHJabXhrVEdkQ1pVcGhabVJWWVdwbVdtZExaMGhrZUdaa1kxVm9UMlozWjBWbmJHTkNaM2xuT0daTlowcG5WR0U0WkV0blZXWnFZa0prWW1OWWFFRmlkR0ZaWlVWbFJHUlZZbTluVG1KNmFGVmlkV2hCWWtObFdtWlJaRlZpZDJKdlpqQmxSR05HYUVWalZXRkNaMVZqTUdaNFowaG5RV2hOWjNCbFNXaDVaVUZpYjJGVlpXcGxUV1ZKWjAxa2JHTlphRTVtUTJaNGFFRm5VR2hXWjBGa1oyRnZZazFtYkdGcmFESm1RV05FWmtsblVXWkVaRUZsT0daNloxVmlSR1pWWWs1aFJtUjZabXRqTW1oR1lucGlTbWRQWVV4bVVtZE9aRk5rVFdOQllVSm9VMlpRWVdobVNXZEthRXBvVTJWM1kxTm5XR1F4WkVsbU1tUlRaMmhpT0doWWFGWm9SR2R6WTBKbVNtWlJabU5sZG1WRVlVTmxWV1F2WlVObmJHUkpaSGRrVjJjeFluZG1UR05YWmtKbVFXTXhZMHRrUkdGalp6RmxUR1ZuWmtGb2JXRlZaMFpqVFdWTFprNWxRV0o0WlZKblJtaEJaMVpuVG1OTllWSmhkMkpFWmt0aFUyRk5hR2RoUzJSR1lrbGhlbUZEWlVSblNtZFhaMFJtVVdGelpWRm1SR2d4WmxGbFNXSkxaMFJpU21kYVlVNW9aMk5CWm5salJXRkJabmRuVUdWTlpURmhRV2d4WVVSaVVtVmphRFZpVG1Ob1pHTm5lV0pVWkdsak1HWlVaVlZvYW1KQllVRmtWV2RxWlRSblUyVkRaRk5qVldkelpFVmpiR1k1WVZOaFRtUnJZMjlpWm1KR1p6Rm1VV1kzWTBGbFUyTlZaa2htVEdGM1kzZGliR05RWm5kaGNHSlRaazFuUm1oMFpHTm9RMlV4WldkaVVXWk9aRk5rWjJJelpVNWlVMmMwWVVGb1NtaHNZMEpvVkdKRFkycGpVV1ZOWjFWblVtVlJZVVpsVkdoVVpFVm5ZMkpCWkhsaGEyRnFZVWxtUTJKb2FGTmlUV0ozWldkbmVXSldaV2RvTUdSTVpVVmtRV1k1WWxWbVEySkRabWRrZVdOWFlWUm1XV2RCWkUxbWFHZEJhRTFoUkdONlprNWlVV05PYUZGbU1HTllZazltVkdOWmFGaGhUV0ZyWmpSaGRHZEZaVEZoU1dkM1owRm5SbWhKWml0a1JXWm5aMnRsYkdaTVprSmpTbVJtWlZWb2FtWmFaa3RuU0dWNGFHUmhWV2hQYUhkaFJXWnNaVUpuZVdRNFlrMW1TbVJVWmpoaVMyWlZaV3BrUW1GaVlWaGpRV2QwWVZsblJXZEVZMVZoYjJST1pucG1WV2QxWjBGaFEyRmFZVkZpVldKM2FHOWtNR05FWTBab1JXRlZhRUppVldRd1kzaGxTR2hCWkUxa2NHTkpaWGxrUVdWdlpsVmlhbUpOWVVsblRXVnNabGxtVG1GRGFIaG1RV2RRWmxabFFXTm5aRzlpVFdoc1pXdG9NbUZCWlVSa1NXaFJZa1JqUVdRNFlucGpWV0pFWTFWaVRtZEdhSHBtYTJNeVlVWm5lbWhLWTA5alRHWlNZMDVpVTJaTllVRmpRbU5UWjFCamFHZEpZa3BuU21oVFluZG5VMmRZYURGaVNXSXlaVk5oYUdFNFlsaGtWbUpFWW5OalFtUktZMUZoWTJOMllVUm1RMk5WWXk5bVEyaHNaMGxtZDJkWFl6RmhkMk5NWjFkbVFtaEJaREZvUzJaRVpHTmxNV2RNWjJkaFFXaHRZbFZuUm1kTmFFdGhUbWRCWW5oaFVtRkdZa0ZtVm1ST2FFMW5VbUYzWmtSbFMyWlRaazFpWjJaTFkwWm1TV1o2WVVObFJHRktZbGRtUkdOUlluTmlVV2hFYURGalVXaEpaa3RsUkdKS1pGcGhUbU5uWTBGamVXSkZZa0ZpZDJWUVlVMW5NV1ZCYURGb1JHZFNaV05qTldkT1oyaGxZMko1WjFSamFXWXdaMVJrVldacWFFRmlRV05WWldwaE5HVlRaME5sVTJSVlozTmxSV05zWkRsbVUyaE9aV3RqYjJkbVowWm5NV2hSWmpkbFFXTlRaRlZuU0dSTVozZG1kMkpzWmxCb2QySndabE5uVFdkR1ozUm1ZMmhEWVRGbFoyaFJZazVqVTJkbmFETm9UbUZUWlRSbFFXVktaR3huUW1aVVlVTmlhbVZSWkUxbVZXSlNaMUZtUm1aVVpGUmtSV2RqWmtGbmVXZHJaV3BrU1dGRGFHaG9VMkpOWW5ka1oyUjVhRlptWjJFd1kweGpSV1pCWWpsaVZXZERhRU5qWjJWNVpWZG1WR2haWWtGaFRXZG9Za0ZrVFdGRVkzcGtUbWRSWTA1bVVXUXdaVmhrVDJaVWFGbGtXR2ROWVd0bk5HZDBZVVZqTVdGSlkzZGlRV1ZHWlVsbUsyTkZaMmRpYTJSc2FFeGxRbWhLWVdablZXUnFZbHBuUzJkSVkzaG9aR0pWYUU5aWQyTkZZMnhqUW1aNVlqaG5UV0pLWTFSa09HaExhRlZtYW1oQ1ltSm1XR0pCWlhSa1dXRkZhRVJoVldSdlowNW9lbVZWWkhWblFXUkRaVnBuVVdaVlpuZGxiMlV3WVVSbFJtRkZhRlZvUW1OVllqQm9lR1ZJWVVGb1RXWndaRWxsZVdWQmFHOWhWV1ZxWmsxaFNXUk5ZV3hsV1dKT1pFTm1lR0pCWjFCa1ZtSkJZbWRrYjJOTlkyeGthMkV5WjBGaVJHTkpZMUZqUkdOQllUaGhlbWRWWlVSa1ZXVk9ZVVpqZW1WcmFESmxSbVo2WTBwbVQyWk1ZbEptVG1KVFlVMW9RV1ZDWWxOaVVHUm9Za2xoU21aS1lsTmxkMkpUWjFob01XRkpaREptVTJSb1pUaGtXR0pXWWtSbWMyWkNZa3BsVVdKalpIWmlSR1ZEWVZWaUwyVkRZV3hoU1daM1lWZGtNV2gzWlV4alYyaENaVUZpTVdGTFprUmhZMk14WTB4bFoyTkJhRzFuVldWR1lrMW1TMkZPWTBGamVHTlNhRVprUVdGV1pVNWhUV1ZTWW5kbFJHVkxZbE5qVFdWbllrdGhSbUpKWm5wb1EyTkVaMHBpVjJGRVlWRm9jMlJSWmtSaE1XUlJaRWxrUzJGRVprcG9XbVJPWTJkaFFXRjVaVVZuUVdOM1pGQmtUV1l4YUVGbE1XZEVaVkppWTJVMVpFNWthR1pqWW5sb1ZHZHBhREJsVkdKVlkycG9RV0pCWkZWaGFtVTBaVk5vUTJkVFoxVm5jMk5GWkd4bU9XSlRaVTVuYTJSdlpHWm9SbVV4WkZGbU4yVkJZVk5pVldKSVlVeG9kMlYzWm14blVHWjNaM0JqVTJKTmFFWmtkR0pqWjBOaE1XaG5hRkZoVG1OVFoyZG5NMk5PWmxObE5HRkJhRXBtYkdSQ2FGUm9RMmRxWmxGbVRXaFZZVkppVVdOR1psUm1WR05GYUdOaFFXSjVZMnRqYW1aSlpVTm1hR1ZUWWsxbWQyWm5abmxsVm1ablpUQmhUR1ZGWTBGak9XZFZZa05oUTJSblozbGhWMlZVWkZsblFXTk5ZV2hoUVdWTlowUm9lbU5PWWxGbFRtUlJZekJuV0dkUGFGUm1XV1JZWjAxbWEySTBablJqUldjeFpFbGhkMk5CWWtabFNXWXJaVVZvWjJkclpXeG5UR0pDWlVwblptUlZaR3BvV21oTFpraG1lR1JrYUZWalQyTjNaVVZrYkdaQ1kzbGpPR1ZOYUVwalZHYzRhRXRoVldOcVlrSmlZbUZZWjBGaWRHUlpaVVZrUkdoVlpXOWpUbWg2WVZWaGRXWkJaRU5tV21OUloxVm9kMk52WlRCaVJHUkdZVVZvVldkQ1oxVm5NR040WjBoaFFXVk5abkJvU1dONVpFRm1iMkZWWW1waVRXWkpZVTFuYkdaWlkwNWhRMkY0WlVGa1VHaFdaVUZtWjJGdlowMWpiR0pyWlRKa1FXSkVaVWxrVVdKRVkwRm5PR042YUZWb1JHWlZaRTVrUm1WNloydG9NbUpHWm5waFNtUlBhRXhtVW1WT1lsTm9UV1JCWTBKa1UyUlFZbWhqU1dKS1pVcG9VMk4zWWxObldHTXhZMGxpTW1kVFpHaGlPR1JZWWxabVJHVnphRUprU21OUlpHTm5kbVZFWWtOalZXSXZhRU5tYkdOSllYZGlWMll4YUhkb1RHTlhZa0pvUVdReGFFdGtSR2hqWWpGalRHZG5Za0ZrYldoVlprWmxUV0ZMWkU1bVFXUjRaVkppUm1WQlpsWmhUbWhOWVZKaWQyZEVZVXRqVTJSTllXZG1TMlpHWmtsa2VtRkRaVVJqU21GWFprUmlVV0p6WVZGaFJHRXhaVkZvU1dWTFprUmhTbWhhWms1bloySkJaM2xrUldKQlluZGlVR0ZOWmpGaFFXSXhaVVJuVW1kalpqVmlUbVJvWkdOb2VXTlVhR2xtTUdSVVkxVm1hbUpCWWtGaFZXUnFaRFJqVTJGRGFGTm1WV2R6WWtWa2JHZzVZMU5oVG1KclpHOWpabU5HWmpGbFVXZzNZVUZoVTJaVllraGlUR0ozWTNkbGJHZFFhSGRtY0dOVFpFMW5SbWgwWm1Ob1EyY3hZV2RoVVdaT1oxTmtaMkV6WTA1aVUyVTBZVUZsU21Sc1pVSmtWR1ZEWkdwb1VXUk5ZVlZpVW1SUlpFWmxWR2RVWVVWaFkyUkJZM2xtYTJGcVlVbGlRMmhvWVZObVRXUjNabWRoZVdWV1pXZG1NR0pNWVVWaFFXTTVaVlZvUTJSRFoyZGhlV1JYWlZSbVdXRkJZMDFsYUdkQlpVMWxSR1o2WkU1b1VXSk9ZbEZoTUdkWVpVOWhWR05aWVZoaFRXVnJaelJvZEdKRlpqRm1TV04zWVVGbVJtRkpaaXRqUldkbloydGpiR05NWmtKbFNtVm1ZbFZqYW1aYVlrdG1TR1Y0WTJSa1ZXVlBabmRoUldoc2FFSmllV0k0WVUxbFNtZFVaVGhoUzJSVlpXcG9RbVZpWWxoblFXVjBZVmxqUldkRVlWVmliMlpPWVhwaVZXSjFaRUZtUTJaYVoxRm9WV2QzWTI5aU1HTkVaVVpuUldWVllVSm1WV2N3Wm5oalNHWkJaVTFuY0dkSlpIbGxRV052WkZWamFtVk5ZVWxtVFdOc2FGbGtUbUpEYUhobVFXVlFaRlppUVdGblkyOWxUV2hzWTJ0bk1taEJZMFJvU1daUlowUmxRV0k0WW5wbFZXVkVaRlZoVG1aR1lucG1hMlV5YUVaaGVtZEtaMDlrVEdaU1kwNW5VMlJOYUVGbFFtTlRabEJuYUdGSlowcG1TbU5UWlhkaVUyTllaakZrU1dJeVlWTm1hR1E0WTFoaVZtaEVaWE5qUW1WS1lsRm5ZMlIyWjBSbVEyZFZaUzltUTJGc1prbGhkMkZYWVRGbWQyZE1aVmRvUW1WQlpERmhTMmhFWVdOb01XTk1ZMmRrUVdkdFkxVmtSbVJOWVV0aVRtTkJaM2hpVW1GR1kwRmtWbWRPWjAxa1VtZDNaRVJvUzJaVFkwMW5aMlpMYUVabFNXSjZaVU5rUkdKS1pWZG5SR1pSWkhOaVVXWkVZekZrVVdWSlkwdGtSR1ZLWlZwblRtRm5hRUZqZVdORllrRm9kMkpRWlUxak1XRkJZVEZsUkdkU1ltTmlOV1ZPWTJoblkyZDVZbFJuYVdRd1lWUmxWV1ZxWVVGbFFXUlZaV3BsTkdWVFlVTm1VMmhWWTNOblJXSnNZamxtVTJWT1ltdGliMlptWlVabE1XSlJaamRsUVdkVFpWVmpTR0ZNWTNkbmQyRnNZbEJtZDJGd2FGTm5UV1pHWjNSalkyTkRaREZvWjJKUllrNW1VMkpuWVROa1RtUlRhRFJpUVdaS1oyeGtRbWRVYUVObWFtRlJaRTFqVldSU1psRmpSbUZVYUZSbVJXSmpZMEZtZVdSclltcGhTV1JEWldoaFUyVk5aSGRrWjJKNVlsWmtaMll3WkV4aFJXTkJZamxsVldORFkwTmxaMlY1WTFkbVZHVlpZVUZuVFdGb1owRm9UV1JFWlhwaVRtTlJaazVuVVdRd1pGaG5UMkpVWTFsa1dHaE5ZbXRrTkdaMFlVVm1NV0pKWVhkbFFXSkdZa2xoSzJWRlltZGphMkpzWWt4blFtVktaR1puVldKcVlscG5TMmRJWW5oaFpHWlZaVTloZDJkRmFHeGlRbVI1WlRob1RXWktZbFJqT0daTFoxVmxhbUpDWVdKaldHSkJaM1JpV1dSRlpFUmtWV052WTA1bmVtUlZaSFZsUVdaRFlWcGlVV2hWWkhkb2IyVXdaa1JpUm1SRllsVmlRbVZWWVRCb2VHZElaa0ZoVFdkd1pVbG1lV1JCYUc5bFZXRnFZazFoU1dWTlkyeG5XV2RPYUVObmVHTkJaRkJpVm1kQlpHZG1iMkZOWVd4b2EyWXlaa0ZoUkdWSmFGRmhSR2hCWnpobGVtaFZhRVJqVldoT1pFWmllbU5yWmpKaFJtaDZZVXBuVDJGTVlWSm5UbU5UWWsxbFFXaENhRk5oVUdab1prbGhTbVpLWWxObmQySlRaMWhvTVdKSll6Sm9VMlZvWWpob1dHVldaa1JpYzJOQ1pFcGpVV1JqWW5aalJHaERaVlZqTDJaRFpXeG9TV2QzWWxka01XZDNaRXhpVjJkQ1pFRm5NV05MWWtSbFkyVXhaMHhtWjJSQlpHMW5WV0ZHWWsxalMyaE9ZVUZvZUdSU1pFWmpRV0pXWVU1blRXTlNaSGRsUkdOTGFGTmlUV1ZuWTB0a1JtZEphSHBpUTJoRVlVcGtWMlpFYUZGaWMyUlJZVVJoTVdKUlkwbG9TMlZFWTBwbVdtRk9hR2RvUVdWNWFFVmxRV2QzWmxCaFRXZ3haa0ZrTVdKRVpsSmxZMlExWVU1aGFHaGpZM2xpVkdGcFpqQmhWR05WWVdwb1FXRkJZVlZtYW1JMFpGTm1RMlJUWWxWbWMyUkZZMnhvT1dkVFowNWxhMlZ2YUdaa1JtWXhhRkZoTjJGQlpsTmhWV2hJWlV4bmQyZDNabXhsVUdaM1pIQmxVMmhOWlVaaGRHTmpaa05pTVdGblpGRm9UbVpUWkdkb00yWk9aRk5vTkdGQllVcGpiR0ZDWTFSblEyRnFaVkZpVFdSVlkxSmtVV1ZHWWxSbVZHZEZaMk5vUVdWNVpXdG9hbVpKWkVOaWFHWlRaMDFvZDJGblpYbGhWbUZuWVRCblRHVkZaMEZrT1dWVlpFTm5RMmRuWTNsaVYyVlVaRmxtUVdGTllXaGlRV1pOWTBSb2VtUk9ZVkZpVG1SUlpUQm5XR05QWWxSaVdXUllaRTFsYTJJMFozUmtSV0V4WVVsbGQyTkJZVVpsU1dJclkwVmhaMkpyWkd4aVRHVkNZVXBsWm1SVlltcG9XbVpMWTBobGVHSmtaVlZvVDJOM1pVVmpiR1ZDWW5saE9HUk5aVXBpVkdRNFlrdGlWV0pxWjBKaVltWllZa0ZvZEdKWmFFVmhSR2hWYUc5aFRtTjZaMVZqZFdKQlpVTmxXbVZSWkZWbGQyTnZaVEJuUkdSR1pVVmlWV0ZDWlZWak1HaDRaRWhuUVdoTllYQmpTV1I1WkVGbmIyTlZaR3BpVFdoSlpVMW9iR0paWjA1aFEyWjRaMEZqVUdSV1lVRmtaMk52WVUxamJHZHJaakprUVdORVpFbGhVV0ZFWVVGbU9HWjZaRlZoUkdkVlpVNW9SbWQ2Wm10ak1tSkdhSHBoU21WUGFFeGtVbVJPWmxObFRXVkJZa0poVTJOUWFHaG9TV2hLWlVwb1UyUjNhRk5tV0dReFpFbG1NbU5UWkdobk9HVllhRlpqUkdWelpVSmpTbVpSWVdOaWRtWkVZME5vVldNdlprTmhiR1ZKWm5kblYyY3hZWGRoVEdOWFkwSmlRV1l4Wmt0bVJHUmpZekZuVEdWblpFRm9iV05WYUVab1RXZExaMDVrUVdGNFpWSm9SbUpCYUZaaFRtZE5ZMUppZDJoRWFFdG1VMmROWkdkbVMyVkdaVWxoZW1WRFpVUm9TbWRYWlVSalVXWnpaVkZvUkdFeFlsRm9TV2RMWWtSaVNtUmFaVTVpWjJSQlozbG1SV0ZCWlhka1VHRk5aREZsUVdneFowUmpVbU5qWVRWalRtUm9hR05pZVdKVVpXbG5NR1JVWWxWa2FtRkJaMEZpVldWcVpEUmhVMmhEWVZOaVZXZHpaa1ZrYkdFNVpsTmtUbVZyWTI5aFptZEdZVEZpVVdZM1lrRmlVMmRWWjBob1RHTjNZbmRsYkdOUWFIZG5jR05UWlUxb1JtaDBaR05tUTJneFpHZG5VV05PWlZObloyUXpZazVpVTJNMGFFRmxTbVpzWTBKalZHUkRZV3BuVVdaTloxVm1VbUZSWlVabVZHVlVZVVZvWTJWQlozbG5hMlJxWmtsbVEyUm9aRk5oVFdGM1pXZGplV1ZXWm1ka01HVk1ZMFZsUVdRNWFGVmhRMlZEWkdka2VXUlhZVlJtV1daQlowMW9hR05CWmsxaFJHSjZaVTVoVVdOT1lWRmxNR0pZWVU5bFZHZFpabGhrVFdOclpEUm9kR0pGWWpGaVNXZDNaVUZoUm1GSllTdGtSV2RuYUd0aWJHRk1aVUprU21KbVlsVmthbWRhWkV0aVNHZDRaMlJuVldkUFpYZGpSV2hzWVVKbGVXZzRhRTFvU21OVVp6aG1TMkpWWm1wb1FtVmlZVmhoUVdKMGFGbGxSV05FWmxWbGIyaE9aWHBsVldkMVkwRmtRMlphYUZGaFZXWjNZVzlsTUdoRVpFWm1SV0ZWWjBKaFZXSXdZWGhpU0dKQlowMWtjR05KWVhsbFFXaHZabFZvYW1OTlkwbG9UV1pzWTFsblRtWkRabmhrUVdSUVpWWm9RV05uWVc5alRXRnNabXRvTW1kQlprUmlTV1JSWjBSa1FXUTRZWHBsVldkRVpGVmxUbVpHYUhwaWEyUXlaa1puZW1aS1owOWlUR0ZTWkU1aFUyaE5aMEZsUW1oVGFGQmphR0ZKWjBwbVNtRlRhSGRvVTJWWWFERm9TV1V5WlZOaGFHZzRaVmhuVm1ORWFITmpRbVpLWVZGaFkyaDJaMFJuUTJGVllpOWhRMlJzWjBsbmQyaFhZVEZvZDJoTVpGZGpRbWRCWnpGaVMyTkVabU5sTVdSTVptZG5RV2h0WWxWbFJtZE5aRXRvVG1aQllYaG9VbVJHWjBGbVZtWk9aazFoVW1KM1prUmxTMkZUYUUxaVoyVkxaRVpsU1daNmFFTmtSR1pLYUZkb1JHaFJhSE5sVVdaRVpqRm1VV0pKWWt0bFJHUktZMXBoVG1WblpFRm5lV2RGWWtGaGQyWlFZVTFuTVdoQmFERmtSR2RTWldObU5XRk9ZbWhsWTJKNVpGUm5hV013WjFSbVZXaHFhRUZqUVdoVloycGtOR2RUWTBOb1UyVlZaSE5vUldoc1lqbGxVMlJPWW10aGIyUm1Za1ptTVdWUllqZGpRV0ZUWmxWb1NHRk1ZM2RoZDJWc1psQm9kMmR3WkZOa1RXVkdaSFJtWTJaRFlqRmxaMk5SWlU1b1UyRm5aRE5sVG1kVFlUUmxRV1ZLWVd4bFFtUlVaME5tYW1GUlprMW9WV1JTWlZGbFJtaFVaMVJpUldKalkwRm5lV1pyWjJwaVNXaERhR2huVTJoTmFIZGtaMlY1WjFaaFoyWXdaRXhqUldKQlpEbG5WV1pEWmtOa1oyRjVaRmRuVkdaWlkwRmhUV2hvWmtGaFRXZEVabnBoVG1SUlpFNW9VV0V3WlZoblQyRlVZbGxuV0daTlpXdGtOR2gwWTBWbU1XaEpaM2RuUVdoR1prbG1LMkZGWm1kamEyaHNaRXhtUW1KS1oyWmpWV0pxWmxwa1MyRklZWGhqWkdOVlowOWpkMk5GWkd4alFtSjVZamhsVFdoS1oxUm5PR0ZMWTFWaGFtZENZbUptV0daQlpuUmpXV05GWkVSbFZXaHZZazVoZW1GVmFIVmhRV1ZEWmxwalVXWlZaM2RvYjJNd1pVUmtSbWhGYUZWalFtSlZaekJuZUdkSVlVRm5UV1p3WTBsamVXWkJZbTlsVldkcVlrMWtTV1pOWld4aVdXZE9aRU5rZUdKQlpWQmtWbWhCYUdkbWIyTk5ZMnhqYTJneVprRmhSR0pKYUZGb1JHRkJhRGhqZW1oVmFFUmpWV2hPWWtaaGVtaHJhREprUm1GNlkwcG9UMmRNWmxKaVRtTlRaRTFqUVdWQ2FGTmlVR0pvWkVsa1NtUktZbE5rZDJGVFoxaGpNV1pKWmpKalUyTm9hRGhsV0dSV1lVUmhjMlJDWTBwaVVXWmpZWFpuUkdaRGFGVm1MMlpEWTJ4bVNXaDNhRmRtTVdSM1pVeGlWMkZDYUVGbk1XSkxaRVJrWTJJeFlVeG5aMlZCYUcxb1ZXZEdZazFsUzJoT1prRmtlR0pTWkVaa1FXRldaRTVqVFdWU1kzZG9SR0ZMWmxOalRXTm5ZVXRsUm1SSlpYcGlRMmRFYUVwbVYyRkVZbEZtYzJKUlprUmhNV05SYUVsbFMyaEVaVXBvV21WT1kyZGhRV041WVVWbVFXZDNabEJrVFdFeFlrRmxNV0ZFWlZKblkyWTFaVTVuYUdWalpIbGpWR0pwWkRCa1ZHSlZaR3BvUVdaQlpWVm9hbVUwWlZOaVEyZFRZbFZsYzJoRlpHeGpPV1ZUWjA1amEyZHZZV1puUm1VeFpsRmtOMlJCWWxObFZXVklaVXhoZDJKM2FHeGxVR0ozYUhCblUyZE5aRVptZEdGalowTm1NV1ZuWkZGaVRtVlRhR2RoTTJGT1pWTmxOR0ZCWWtwb2JHZENZVlJpUTJKcVoxRm9UV2RWWVZKalVXVkdaMVJvVkdKRmFHTm9RV1Y1WW10bGFtZEpaVU5vYUdoVFkwMW9kMk5uWTNsalZtUm5hREJoVEdORllrRmhPV05WWWtOb1EyRm5ZbmxqVjJWVVpsbGxRV05OWm1ob1FXUk5hRVJoZW1kT1kxRm1UbVpSWlRCbVdHRlBaVlJuV1dWWVlVMWxhMmMwWlhSblJXZ3hZMGxuZDJoQlpVWmxTV0lyWkVWaloyZHJZbXhtVEdkQ1kwcGhabVZWWW1wa1dtaExZVWhoZUdaa1psVmpUMk4zWjBWb2JHTkNabmxtT0doTlowcGhWR2c0WkV0a1ZXWnFaa0poWW1aWVowRmhkR0ZaWWtWbVJHSlZaVzltVG1WNloxVm5kV0ZCWVVObFdtaFJZMVZpZDJKdllUQm9SR0ZHYUVWbFZXaENZMVZsTUdONGFFaGxRV0pOWm5CalNXTjVaMEZuYjJKVllXcGpUV2hKWVUxamJHSlpaVTVsUTJONFlrRmlVR1pXWTBGb1oyTnZaVTFqYkdaclpqSmpRV0pFWkVsb1VXSkVhRUZvT0dkNlpsVmtSR1pWWTA1bVJtTjZabXRsTW1kR2FIcG1TbUZQWVV4a1VtVk9aVk5vVFdkQlpVSmxVMkZRWldob1NXWkthRXBtVTJSM1kxTmtXR0V4WWtsak1tZFRZV2huT0dGWVpGWm1SR1Z6WjBKa1NtSlJhR05uZG1aRVpVTmtWV012WVVObGJHSkpaM2RtVjJNeGFIZG9UR0pYWjBKbVFXVXhaRXRvUkdGall6RmhUR05uWlVGamJXZFZaRVpqVFdOTFpFNWpRV0o0WjFKaVJtUkJZVlpvVG1KTlpGSm9kMlZFWjB0alUyWk5abWRrUzJaR1owbGtlbU5EWmtSalNtRlhaVVJpVVdWelpGRm5SR1V4WmxGaFNXUkxZa1JoU21aYVlrNW1aMkZCWlhsbVJXZEJhSGRpVUdoTmFERmtRV014YUVSa1VtRmpaelZtVG1Gb1lXTm1lV2RVWjJsak1HUlVhRlZoYW1kQlowRmlWV1JxWWpSbFUySkRaVk5tVldoelkwVmpiR0k1WkZOaVRtaHJaRzlvWm1SR2FERm1VV1kzYUVGbVUyUlZaMGhpVEdGM1lYZG1iR1ZRWVhkbWNHaFRhRTFtUm1oMFkyTmlRMlV4WjJkaVVXaE9aVk5qWjJVelprNWpVMlEwWWtGbFNtRnNZa0ppVkdWRFoycGpVV1JOYUZWa1VtWlJaVVpsVkdWVVprVmhZMk5CWjNsaWEyTnFaa2xsUTJWb1pGTmxUV1YzYUdkaWVXTldabWRsTUdaTVlrVmpRV2c1WmxWaVEyUkRaV2RsZVdKWFpGUmpXV1ZCWlUxbmFHTkJaRTFrUkdONllVNW9VV1ZPYUZGbE1HaFlaRTlrVkdKWllsaG9UV05yWlRSamRHZEZaakZpU1dKM1lrRm9SbVZKWnl0aFJXWm5ZV3RtYkdGTVowSmxTbWhtWlZWamFtSmFZVXRvU0dGNFpHUm9WV2hQWlhkaFJXSnNhRUppZVdZNFlrMWtTbVJVWmpoalMyUlZabXBoUW1GaVlWaGtRV0YwWlZsbVJXTkVaMVZoYjJGT2FIcGhWV2QxWjBGalEyUmFaRkZtVldWM1ltOW5NR1ZFWWtaaFJXSlZhRUprVldnd1lYaGhTR05CYUUxaGNHSkpaM2xpUVdodlpsVmhhbVpOWjBsaVRXSnNaRmxvVG1ORFlYaGpRV0ZRWlZablFXRm5abTlvVFdWc1pHdGpNbWhCYUVSa1NXaFJZa1JoUVdJNFozcG5WV2RFWjFWbVRtSkdZWHBoYTJjeVlVWmplbVpLWjA5aVRHRlNZazVoVTJKTllVRmxRbVJUYUZCbGFHSkpZa3BoU21oVFpYZGtVMlJZYURGblNXY3laMU5tYUdVNFkxaG9WbVJFWlhOalFtSktaVkZsWTJkMlkwUm5RMlpWWVM5bFEySnNhRWxsZDJOWFl6RmxkMmRNYUZkalFtaEJZVEZuUzJaRVpXTmhNV2RNWjJkaVFXSnRaVlZrUm1STmFFdGlUbVpCWW5oblVtTkdZMEZqVm1kT1kwMW1VbVYzWWtSbVMyTlRaazFvWjJSTFprWmhTV1I2WWtOa1JHVktZbGRqUkdOUmFITmpVV0pFWWpGaFVXSkpaMHRrUkdkS1lWcGtUbWRuWmtGbGVXVkZZMEZvZDJoUVpVMW9NV1pCWXpGblJHZFNaR05vTldOT1ptaG5ZMlo1YUZSaWFXTXdaVlJrVldScVprRm5RV05WWjJwbE5HWlRaa05tVTJSVlozTmhSV0pzWlRsblUySk9hR3RtYjJabWFFWmtNV2hSWWpkaVFXWlRaVlZvU0dOTVpIZGxkMk5zWVZCa2QyWndaVk5rVFdKR1pYUm1ZMlpEWlRGb1oyaFJaazVvVTJWblp6Tm5UbUZUYURSb1FXTktaV3huUW1KVVprTmlhbVJSYUUxaVZXRlNaRkZvUm1KVVoxUmtSV0ZqWlVGa2VXVnJZbXBtU1dKRFkyaG9VMlJOWlhkaloySjVaVlpuWjJNd1pFeGhSV0ZCWWpsa1ZXWkRhRU5rWjJGNVkxZGhWR1JaWjBGbFRXUm9ZMEZqVFdORVpIcG5UbWRSWlU1bFVXWXdhRmhqVDJOVVpGbGtXR0ZOWjJ0bk5HSjBZVVZsTVdkSmFIZGtRV0ZHWlVsaEsyZEZaMmRuYTJGc1kweG1RbUZLWW1aaVZXVnFaMXBuUzJaSVlYaGpaR2RWWTA5aWQyUkZZbXhrUW1KNVpEaG9UV2hLWjFSb09HaExZVlZuYW1kQ1pHSm5XR05CYUhSaldXRkZZVVJtVldSdlpFNWllbUZWWlhWbFFXZERZMXBqVVdGVlpIZGpiMkl3WkVSalJtTkZZbFZrUW1aVmFEQmplR0pJWlVGbVRXWndaRWxvZVdOQlpHOW5WV2RxWVUxaVNXUk5hR3hqV1dkT1lVTm1lR1ZCWTFCblZtSkJZV2RpYjJkTllXeG1hMk15WVVGbVJHVkpZMUZqUkdSQllUaG1lbVZWWmtSbFZXTk9aa1puZW1WclpESmlSbVo2WjBwaVQyRk1aVkpoVG1SVFlVMW1RV1ZDWWxOb1VHSm9aVWxpU21KS1lsTm5kMlJUWlZoaE1XaEphREppVTJSb1lqaGxXR05XWlVSbGMySkNaMHBoVVdkalozWmhSR1pEYUZWb0wyVkRZMnhsU1doM1oxZGtNV0ozWjB4alYySkNaa0ZrTVdkTFlVUmpZMkl4WkV4bloyUkJZbTFrVldkR2FFMWpTMlpPYUVGbmVHUlNZa1psUVdkV1pVNWtUV1ZTYUhkblJHSkxZbE5sVFdKbllrdGhSbWhKWW5walEyVkVZa3BrVjJORVlsRmxjMkZSYUVSak1XTlJZMGxuUzJaRVprcG9XbVJPWTJkaVFXTjVaVVZtUVdKM1oxQmxUV1F4WlVGb01XWkVaRkpuWTJJMVlrNWlhR1JqWW5saVZHUnBaekJuVkdaVlpXcGhRV2RCWTFWamFtUTBabE5sUTJKVGFGVmtjMlpGWTJ4bU9XVlRZMDVqYTJGdllXWm5SbWd4WjFGbk4yRkJhRk5tVldWSVlVeG9kMmgzYUd4b1VHTjNabkJoVTJoTllVWmpkR05qWkVOaE1XWm5hRkZtVG1OVFpHZGpNMmRPWmxObE5HSkJhRXBsYkdOQ2FGUmxRMlZxYUZGaFRXZFZabEpuVVdSR2FGUmtWR05GWW1OblFXRjVaMnRtYW1kSllVTmxhR1pUWTAxbmQyVm5ZWGxuVm1Wbll6QmpUR2hGWVVGbU9XRlZaa05qUTJOblozbGxWMmhVWlZsaFFXZE5aMmhpUVdKTllVUm1lbWRPWjFGaFRtZFJZekJoV0dkUFkxUmpXV0pZWWsxbmEyZzBaWFJoUldFeGFFbGtkMkpCWkVablNXZ3JaRVZqWjJGcllXeGhUR1JDWWtwbVptSlZaV3BqV21aTFkwaGtlR0ZrWjFWaVQyZDNhRVZuYkdSQ1pYbGtPR0pOYUVwbFZHZzRZa3RvVldScVkwSm1ZbWhZWVVGaGRHWlpZMFZvUkdoVlpHOW1UbWQ2WjFWaWRXWkJZME5rV21SUmFGVmhkMlZ2WVRCb1JHVkdZVVZsVldSQ1psVmxNR0o0WjBoaFFXVk5aWEJqU1dSNVpVRm9iMkZWWm1wa1RXRkpaazFtYkdkWlpVNWhRMlo0YUVGaFVHZFdZa0ZuWjJWdlpVMW1iR1ZyWmpKb1FXSkVZa2xpVVdSRVowRmxPR0o2WjFWa1JHRlZaVTVrUm1oNlkydG5NbVZHWTNwalNtWlBaVXhoVW1aT1lWTm5UV0ZCWmtKb1UyaFFZMmhsU1dGS1prcGxVMlYzWWxObFdHSXhaa2xrTW1SVFpXaGpPR1pZYUZabVJHSnpaRUpqU21WUlpHTmlkbWRFWVVOb1ZXTXZaa05tYkdaSlpIZGhWMmd4WkhkbVRHWlhaRUppUVdZeFpVdG5SR1pqWVRGbVRHRm5aVUZvYldGVlkwWm9UV1JMWVU1alFXTjRaMUpoUm1aQlpGWm9UbWROWTFKbmQyaEVaMHRvVTJoTlltZG9TMmRHWVVsbGVtZERZMFJtU21oWGFFUmpVV0p6WkZGa1JHSXhZbEZsU1dkTFpFUm1TbWhhWTA1bloyWkJabmxqUldWQlpYZGlVR2ROWnpGalFXY3hZVVJoVW1WalpEVmpUbVpvWjJOa2VXZFVZbWxsTUdoVVpGVmlhbWRCWTBGaFZXVnFaelJvVTJkRGFGTm1WV1Z6WWtWbWJHRTVaVk5vVG1ocloyOWhabUpHWkRGaFVXYzNZVUZsVTJkVlpFaGxUR1IzWjNkbWJHZFFZM2RrY0dkVFprMWpSbWgwWkdOb1EyVXhZMmRtVVdGT1psTmlaMlF6WTA1aVUyUTBaRUZoU21Oc2FFSmpWR1ZEWW1wa1VXRk5aMVZoVW1oUlpVWmpWR1JVWlVWblkySkJZWGxuYTJkcVowbG9RMlJvWjFObFRXTjNabWRsZVdOV1ltZG9NR0ZNWkVWbFFXSTVZbFZqUTJKRFpHZG5lV0ZYWTFSaFdXVkJZazFtYUdoQlpFMWlSR2Q2WTA1bFVXWk9ZVkZtTUdGWVowOWtWR05aWmxoblRXaHJZelJqZEdkRll6Rm5TV2gzWVVGbFJtRkpaQ3RoUldOblpHdGtiR2RNWTBKalNtVm1hRlZoYW1WYVlrdGxTR2g0WjJSblZXZFBaM2RtUldKc1lVSm1lV0k0WmsxaVNtSlVZVGhtUzJoVlpXcGpRbVppWlZoaFFXVjBabGxvUldWRVlWVm1iMkZPWW5wb1ZXSjFhRUZtUTJoYWFGRmpWV04zWTI5ak1HUkVZMFpuUldkVlpVSmhWV0V3WTNoa1NHRkJaMDFuY0doSlpubGtRV052WkZWaWFtRk5aRWxrVFdkc1oxbG1UbVpEWkhoaVFXRlFZMVprUVdkbllXOWxUV0pzYUd0ak1tUkJaVVJpU1dGUllVUm9RV1U0YUhwaVZXZEVhRlZvVG1aR1kzcGhhMll5WjBaamVtSktaMDloVEdOU1pVNW1VMlZOWjBGbFFtWlRabEJsYUdWSlpVcGhTbVZUWkhkbVUyRllaVEZqU1dneVlWTmlhR0k0WTFoaFZtZEVZbk5uUW1WS1oxRmlZMk4yYUVSbFEyUlZhQzlqUTJac1prbG1kMk5YWlRGaWQyTk1ZMWRoUW1WQlpURmhTMkpFWVdOak1XZE1ZV2RsUVdOdFpWVmhSbVJOWWt0bVRtRkJZbmhvVW1oR1prRm5WbVJPWVUxaFVtUjNaVVJrUzJkVFpVMW1aMmhMWmtaalNXZDZhRU5oUkdoS1kxZG5SR1pSYUhObFVXSkVhREZrVVdOSllrdG5SR0ZLWWxwaFRtUm5aVUZtZVdaRmFFRm9kMkpRYUUxbk1XTkJZVEZoUkdoU1ptTmtOV1pPWVdoa1kyWjVabFJrYVdRd2FGUmlWV1JxWTBGa1FXVlZZV3BuTkdSVFpFTmpVMlpWWjNObFJXVnNZVGxrVTJOT1oydG1iMlptWWtaaU1XTlJhRGRsUVdOVFpGVm1TR1ZNWTNkb2QyaHNZVkJrZDJkd1kxTm9UV0pHWkhSblkyRkRZVEZvWjJKUllVNWtVMkZuWXpOb1RtRlRZalJqUVdoS1pXeG9RbWRVWkVObmFtWlJaRTFoVldkU1pGRm1SbU5VWVZSbFJXRmpaMEZpZVdGcllXcGlTV1ZEWVdoblUyZE5aWGRuWjJSNVoxWmpaMmN3Wmt4bFJXaEJaRGxrVldGRFpFTm1aMmQ1WkZkaVZHRlpaRUZpVFdob1pVRmpUV1ZFYUhwblRtZFJaVTVqVVdJd1oxaGxUMlpVWWxsa1dHRk5aR3RrTkdoMGFFVm9NV2hKWVhkblFXRkdaa2xoSzJkRlltZG1hMlpzWmt4blFtRktabVpuVldkcVpGcGxTMlZJWm5ob1pHRlZaMDloZDJWRmFHeG1RbWg1WWpoblRXZEthRlJrT0doTFoxVm1hbVJDWm1KaldHTkJZWFJrV1dGRlpVUmxWV0p2YUU1amVtWlZZblZqUVdkRFpWcGtVV0pWWTNkaGIyRXdaa1JpUm1kRlpGVm9RbVpWWnpCa2VHUklaMEZuVFdWd1lrbGtlV2hCWkc5blZXaHFaazFrU1dkTllteGhXV1JPWmtOamVHUkJZVkJqVm1WQlpXZGxiMkZOWld4bmEyY3lZVUZuUkdGSmFGRm9SR1ZCWmpoaWVtUlZaRVJrVldkT1prWm9lbVZyWmpKbVJtWjZZMHBsVDJaTVoxSmhUbWRUWmsxalFXWkNaRk5oVUdOb1lVbGxTbU5LWmxOamQyTlRZMWhsTVdaSlpUSmhVMmRvWmpob1dHRldaa1JtYzJWQ1owcGhVV05qWm5ablJHWkRhRlZpTDJORGFHeGhTV0ozWWxkbU1XSjNaRXhrVjJSQ2FFRmhNV0pMWTBSaFkyZ3haRXhtWjJWQlpXMWhWV0pHWkUxblMyZE9hRUZvZUdoU1prWmtRV1JXWVU1aVRXTlNabmRqUkdaTFpGTm1UV1puWWt0alJtTkpaM3BtUTJkRVlrcG9WMlpFWWxGbWMySlJZa1JpTVdSUllrbGpTMmhFWlVwaVdtTk9hR2RqUVdSNVprVmtRV2QzWTFCaVRXY3haVUZqTVdSRVlsSmpZMkUxWWs1aGFHTmpZM2xvVkdWcFpUQm1WR1pWWW1waVFXUkJZbFZpYW1nMFkxTmxRMlJUWmxWa2MyRkZaV3htT1dKVFkwNWhhMlp2WVdaaFJtVXhZbEZpTjJWQlpsTmxWV0ZJWlV4bWQyaDNhR3hrVUdkM1pYQmlVMlpOWlVaaWRHWmpZME5qTVdGblkxRmtUbWhUWTJkaU0yaE9ZMU5vTkdGQllVcGpiR0pDWmxSb1EyRnFZMUZvVFdWVlpWSmtVV0pHWjFSblZHTkZZV05uUVdSNVlXdGhhbUpKYUVOb2FHZFRaRTFuZDJSblpYbGxWbWhuWWpCalRHVkZZVUZsT1doVlpFTmhRMmRuWVhsaVYyZFVabGxoUVdSTloyaG5RV0ZOWmtSbWVtTk9aVkZpVG1oUllUQm5XR2RQWlZSaFdXZFlZazFpYTJjMFpIUmtSV2N4WmtsaGQyaEJZMFpvU1dNclprVmhaMmhyWkd4a1RHWkNaVXBtWm1SVlpXcG9XbVJMWWtobmVHSmtaVlZoVDJoM1pVVmtiR2RDWlhsa09HWk5aMHBvVkdJNGFFdGlWV1ZxWjBKaFltVllaRUZuZEdOWmFFVmlSR2hWWVc5b1RtRjZaVlZoZFdGQlpVTm1XbVJSYUZWaWQyRnZaVEJpUkdkR2FFVmhWV2hDWVZWbk1HWjRZMGhpUVdGTlluQm1TV2Q1WmtGa2IyTlZaV3BtVFdoSlpVMWliR2RaWVU1alEyWjRaMEZvVUdWV1owRm1aMlZ2WjAxbWJHRnJZekpoUVdWRVowbGhVV05FWWtGbE9HTjZZbFZvUkdGVllVNW1SbU42WTJ0b01tTkdaWHBtU21aUFpreG5VbU5PWWxOb1RXZEJaRUpsVTJGUVlXaG5TV1JLYUVwa1UySjNhRk5rV0dReGFFbGpNbVJUWTJob09HTllaMVpqUkdGelkwSmhTbUZSWldOaGRtaEVZVU5oVldNdlowTmtiR0ZKWlhkaVYyRXhaSGRpVEdGWFprSmlRV2d4WlV0a1JHVmpZakZvVEdablpVRmxiV2hWWWtaaFRXVkxaMDVrUVdkNFpGSm9SbVJCWWxaaVRtRk5aRkpvZDJaRVprdGtVMk5OWkdkalMySkdZa2xsZW1WRFpVUm5TbVJYWjBSa1VXZHpZVkZrUkdjeFoxRm9TV1JMWWtSbFNtRmFaRTVsWjJWQllYbG9SV1ZCWkhkaVVHZE5aREZpUVdJeGFFUm5VbWRqWVRWb1RtTm9ZV05sZVdaVWFHbGlNR1JVWWxWaGFtUkJZa0ZtVldKcVpqUm5VMlpEWTFOb1ZXZHpZVVZrYkdZNVoxTm1UbUpyWlc5bFptWkdaakZpVVdVM1kwRmpVMlJWWTBoblRHUjNhSGRqYkdKUVkzZGhjR0ZUYUUxalJtWjBZbU5vUTJjeFptZGhVV1pPWjFOb1oySXpaVTVsVTJNMFpFRm9TbVpzWlVKb1ZHVkRhR3BuVVdWTlpWVm1VbVJSWjBaaFZHZFVZVVZsWTJOQllubGhhMk5xWjBsalEyaG9aMU5uVFdWM2FHZGplV1JXWkdka01HSk1aMFZsUVdVNVlWVmpRMmREWjJkb2VXVlhabFJpV1dWQlprMWxhR1ZCWmsxaFJHRjZaVTVuVVdKT1kxRmtNR1ZZWms5aFZHaFpaMWhvVFdaclpqUm9kR1JGYURGbFNXaDNaa0ZqUm1GSmFDdGtSV0ZuWkd0aGJHVk1aRUpvU21abVkxVmlhbVJhWlV0bVNHRjRaR1JtVldaUFozZGhSV0ZzWmtKbGVXYzRaRTFpU21OVVpqaGlTMlpWWldwaFFtTmlZMWhtUVdGMFoxbG5SV0ZFWWxWbGIySk9hSHBpVldWMWFFRmtRMmRhYUZGblZXWjNhRzlvTUdkRVpVWmpSV1ZWWlVKalZXZ3daWGhvU0dkQlprMWljR1ZKWjNsbFFXVnZhRlZuYW1OTlowbGxUV1ZzWlZsaVRtWkRaM2htUVdOUVpGWm5RV1JuWkc5aFRXaHNaV3RqTW1OQmFFUm5TV2RSWWtSalFXRTRhSHBrVldGRVpWVmpUbU5HWjNwaGEyTXlaMFprZW1GS1lVOW9UR1ZTWms1blUyZE5aa0ZuUW1oVFpWQm1hR0pKYUVwblNtTlRhSGRvVTJoWVpqRm1TV0V5WTFObGFHSTRZVmhvVm1SRVpuTm9RbU5LWmxGblkyWjJaVVJpUTJKVmFDOWpRMkpzWkVsa2QyaFhaVEZvZDJWTVoxZG1RbVpCWkRGbVMyVkVaMk5uTVdoTVlXZGxRV2R0WlZWaFJtRk5hRXRsVG1aQlozaG9VbWRHWWtGalZtSk9aRTFvVW1SM1kwUm9TMlJUWkUxaFoyTkxaa1pqU1dONlpFTmlSR05LWlZkaFJHUlJZM05pVVdoRVpERmxVV05KWjB0b1JHUktZVnBuVG1obllrRmhlV0pGWVVGa2QyaFFZazFsTVdaQlp6RmtSR1JTWTJOak5XTk9aMmhqWTJONWFGUmphV1l3WjFSa1ZXRnFaMEZsUVdGVlptcGhOR1pUWTBObFUySlZabk5sUldkc1p6bGxVMkpPWW10bWIyaG1hRVppTVdkUllUZG5RV2hUYUZWalNHZE1hSGRuZDJSc1pGQmlkMkZ3WmxOaVRXVkdaWFJrWTJoRGFERmtaMlZSWWs1aVUyRm5Zak5tVG1SVFpqUmtRV0pLWjJ4aVFtVlVZME5qYW1KUlprMWtWV05TWjFGaFJtaFVZMVJtUldaalpFRmplV2hyWkdwaVNXZERaMmhsVTJoTmFIZG5aMlo1WlZaaloyZ3dhRXhuUldkQlpEbGtWV0ZEWlVOaloyVjVZVmRqVkdaWmFFRm1UV2hvWWtGaVRXRkVZM3BuVG1kUlprNW1VV0l3WjFoalQyZFVabGxqV0dGTlpHdG1OR2QwWmtWbU1XRkpabmRrUVdWR1lrbGlLMlZGWldkbGEyZHNhRXhtUW1WS1oyWm5WV1JxYUZwblMyVklaWGhtWkdoVlpVOW5kMmhGWVd4bFFtWjVZVGhoVFdaS1lsUm9PR0ZMYUZWbGFtaENaMkppV0dGQlpIUmxXV0pGWmtSbFZXWnZhRTVpZW1kVlpYVm5RV1pEWjFwalVXRlZZWGRqYjJZd2FFUm5SbUZGWkZWblFtVlZaVEJoZUdWSVowRmxUV1p3WTBsaGVXUkJZbTlsVldWcVowMWxTV2ROWkd4bldXZE9aME5sZUdoQmFGQmpWbVpCWm1kamIyWk5abXhtYTJVeVkwRm5SR1JKWTFGa1JHTkJhRGhvZW1GVlpFUm1WV1ZPWkVaaGVtVnJaekpsUm1WNlkwcGtUMkZNWjFKa1RtRlRZVTFtUVdkQ1lWTmpVR2RvWkVsbFNtUktaVk5uZDJOVFpWaGpNV0pKYURKaFUySm9ZemhqV0daV1owUmpjMlpDWlVwa1VXVmpaM1puUkdSRFpWVmxMMmhEYUd4alNXRjNZbGRpTVdKM1pVeGpWMkpDWTBGbk1XVkxaa1JpWTJneFoweGtaMkZCWVcxblZXTkdZVTFuUzJKT1owRm5lR0ZTWmtab1FXVldZazVpVFdSU1luZG1SR2RMWlZOa1RXaG5Za3RpUm1KSllucGpRMk5FWjBwaFYyaEVaMUZvYzJSUlprUm9NV0pSWWtsaFMyaEVZa3BtV21KT1oyZGtRV041WlVWblFXSjNhRkJsVFdNeFlVRm9NV1JFWVZKbVkyWTFZazVrYUdoamFIbGlWR1pwWWpCblZHRlZaR3BsUVdGQllsVm1hbUUwWjFOb1EyUlRaVlZpYzJkRloyeG5PV05UWTA1b2EyWnZaR1psUm1VeFlWRm5OMk5CWWxObVZXWklZVXhqZDJWM1oyeGxVR1YzWjNCblUyWk5hRVpvZEdWalowTmhNV0puWWxGblRtVlRhR2RvTTJaT1oxTmlOR1pCWmtwa2JHZENZbFJqUTJGcVkxRmhUV05WYUZKb1VXVkdZVlJqVkdORlpXTm9RV1o1Wkd0bmFtaEpaa05qYUdkVFkwMW1kMlZuWVhsalZtUm5aVEJrVEdkRlpVRm5PV05WWkVOaFEySm5abmxqVjJSVVoxbGpRV1ZOWm1oaFFXVk5ZMFJrZW1kT1kxRmpUbUpSWXpCaFdHZFBaRlJvV1dGWVowMWphMlUwWTNSblJXZ3haVWxvZDJaQlkwWmtTV2dyWlVWbVoyUnJabXhuVEdKQ1kwcGtabVJWWkdwbldtRkxhRWhoZUdoa1psVm5UMkozWkVWbmJHUkNaM2xpT0doTllVcGlWR0k0WWt0bVZXZHFZMEpvWW1OWVkwRmpkR05aWjBWalJHaFZaMjlpVG1KNllWVmxkV2RCWVVOa1dtaFJZbFZoZDJadlpUQm9SR1ZHWmtWbVZXVkNaRlZtTUdSNFlVaG1RV0ZOWlhCbFNXWjVaa0ZvYjJOVllXcGlUV1JKWmsxb2JHSlpaVTVvUTJKNFlVRmlVR1pXWTBGbFoyVnZaRTFpYkdSclpESm9RV05FWjBsblVXWkVZMEZsT0dKNmFGVm5SR1JWWlU1bFJtRjZaMnRoTW1WR1pYcGpTbUZQWkV4bVVtaE9aVk5vVFdSQlowSmpVMkpRWldoalNXUktaRXBuVTJWM1lWTm9XR1l4YUVsak1tVlRabWhpT0dGWVpsWm1SR1p6WkVKalNtVlJhR05sZG1WRVkwTmpWV1l2WmtOaGJHUkpabmRrVjJZeGFIZGlUR1JYYUVKb1FXWXhZa3RoUkdOalpURm5UR0ZuWWtGaGJXRlZhRVpoVFdGTFowNWtRV0o0WkZKbVJtaEJZMVptVG1WTlpGSmhkMlZFYUV0alUyUk5ZbWRqUzJKR2FFbGplbWREWjBSbVNtaFhaa1JuVVdkelpGRmhSR1V4WVZGblNXTkxaRVJoU21oYVpVNWhaMkZCWVhsaFJXTkJaSGRpVUdKTllURmlRV0l4YUVSaFVtWmpaelZuVG1Kb1oyTm5lV1ZVWm1sbU1HaFVaVlZtYW1SQlpVRm9WV1pxWmpSaVUyTkRZVk5sVldSelkwVmhiR1k1WkZOa1RtRnJhRzlpWm1GR1lURm9VV1kzYUVGbVUySlZaMGhvVEdWM1lYZG9iR1ZRYUhkbWNHTlRZVTFpUm1OMFoyTmhRMkl4WTJkaVVXaE9ZVk5vWjJnelpFNWtVMkUwWVVGbVNtZHNaVUpvVkdkRFpHcG9VV1ZOWjFWbFVtUlJaVVpuVkdKVVpVVm1ZMlZCWkhsaGEyWnFaa2xrUTJGb1pGTmlUV1ozWW1kaWVXaFdZMmRpTUdKTWFFVm1RV0k1YUZWbVEyRkRaR2RoZVdWWFlsUmlXV2RCWTAxaGFHZEJhRTFuUkdaNllVNW1VV2hPWkZGb01HWllaVTloVkdWWlpsaGhUV2RyWmpSaWRHRkZhREZuU1dOM2FFRm1SbU5KWlN0b1JXRm5ZV3RvYkdSTVlVSmlTbUptWjFWaGFtUmFZVXRtU0dGNFoyUm9WV1pQYUhka1JXUnNaMEpqZVdVNFpFMWxTbUZVWVRoblMyaFZZV3BpUW1GaVoxaGxRV1owWWxsalJXVkVZVlZoYjJGT1pIcGxWV04xYUVGbVEySmFZbEZqVldKM1lXOW9NR05FWWtab1JXZFZZMEpvVldFd1pIaGhTR1JCWjAxamNHUkpZbmxtUVdkdlkxVmthbVpOWmtsa1RXWnNhRmxuVG1KRFpuaG1RV0pRWVZaaVFXVm5aMjltVFdKc1pHdG9NbUpCWjBSbFNXaFJaa1JqUVdJNFkzcGhWV2RFWWxWa1RtWkdZbnBqYTJFeVlrWmplbUZLWTA5aFRHaFNaRTVsVTJKTlpFRmhRbWRUWmxCbGFHWkpZa3BuU21KVFpYZG5VMk5ZWmpGb1NXRXlabE5qYUdVNFpsaGlWbVZFYUhOb1FtTktZbEZtWTJKMlowUmhRMk5WWkM5a1EyUnNZa2xuZDJOWFl6Rm9kMk5NWVZkaVFtVkJZVEZuUzJGRVltTmlNV1JNWTJkbVFXSnRabFZoUm1kTmFFdGtUbU5CWkhoaFVtVkdZMEZpVm1WT1kwMW5VbUozWWtSaVMyWlRZVTFtWjJOTFowWmlTV2Q2WTBOaFJHVktabGRvUkdaUlozTmtVV05FWkRGa1VXRkpaVXRuUkdkS1oxcGtUbU5uWmtGbWVXZEZZMEZpZDJKUWFFMWtNV1JCWXpGbFJHVlNabU5qTldGT1lXaG5ZMkY1WWxSaGFXUXdZVlJrVldOcVpFRm5RV1pWWldwbU5HaFRZa05tVTJWVllYTmlSV1pzWXpsblUyTk9abXRtYjJKbVlVWmpNV05SWWpkbVFXaFRZVlZpU0dSTWFIZGlkMmhzWkZCaWQyVndZVk5pVFdWR1pIUmtZMk5EWmpGa1oyZFJZVTVoVTJObllUTm1UbUpUWXpSa1FXRktaR3hoUW1aVVkwTmthbWRSWkUxbVZXWlNaRkZsUm1OVVoxUm9SV1pqYUVGb2VXWnJaR3BtU1dSRFpHaGxVMkZOWW5kb1oyRjVZMVppWjJZd2FFeG1SV0ZCWVRsblZXZERhRU5qWjJWNVpsZGxWR2haWTBGa1RXVm9ZVUZvVFdWRVpucGxUbVZSWms1b1VXVXdabGhqVDJKVVkxbGhXR2ROWTJ0bE5HSjBaMFZpTVdkSlkzZGxRV1pHYUVsbksyUkZZbWRqYTJGc1pVeG9RbU5LWldab1ZXRnFZMXBtUzJkSVpuaG9aR0ZWWjA5bmQySkZaR3htUW1SNWFEaG9UV1ZLWVZSbk9HaExabFZtYW1SQ1pHSm9XR1JCWTNSb1dXTkZaMFJtVldGdllrNWtlbWhWWkhWblFXVkRhRnBsVVdKVlpYZGxiMk13WTBSb1JtTkZaMVZrUW1oVllqQmllR05JWVVGaFRXRndaa2xuZVdkQmFHOWhWV0ZxWjAxb1NXUk5ZMnhuV1doT1kwTm1lR0ZCWkZCbFZtaEJaV2RtYjJOTlpteGphMkV5WVVGa1JHaEpZVkZrUkdkQlpEaG1lbVpWWTBSbFZXTk9hRVppZW1KclpUSm5SbWQ2WVVwaFQyRk1ZbEptVG1KVFlVMWhRV1JDYUZObFVHVm9aRWxsU21oS1pWTmlkMmRUWlZobU1XZEpZekpsVTJkb1l6aGlXR05XYUVSa2MyRkNZMHBqVVdKalkzWmtSR1pEWjFWbEwyRkRaMnhrU1dGM1pWZGxNV1YzWVV4aFYyaENZa0ZuTVdGTFpVUmlZMkl4WTB4a1oyaEJaVzFqVldSR2FFMW9TMkpPWmtGbGVHZFNaRVppUVdaV1lrNWhUV05TWkhkaVJHVkxabE5qVFdObllVdGtSbWRKWjNwaFEyWkVaMHBoVjJSRVoxRmhjMkpSWmtSaU1XUlJZa2xoUzJoRVlrcGtXbU5PWTJkbVFXTjVZVVZtUVdKM1lsQmlUV0l4WWtGbE1XSkVabEprWTJRMVowNW5hR2hqYUhsbVZHSnBZVEJpVkdSVlpXcG1RV05CYUZWaWFtYzBabE5tUTJKVGFGVm9jMlZGWTJ4b09XZFRaRTVvYTJOdmFHWm5SbUV4WlZGb04yaEJZbE5sVldkSVpFeG5kMlIzWW14bFVHZDNaSEJsVTJWTlpVWmtkR1JqWkVOaU1XVm5aRkZvVG1oVFpXZGpNMk5PWlZOaE5HVkJZa3BqYkdkQ2FGUmlRMkpxWVZGbFRXZFZZbEpoVVdKR2FGUm1WR0pGWjJObVFXRjVhR3RrYW1oSllVTmphR1ZUWjAxaWQyZG5ZM2xvVm1abll6Qm5UR05GWjBGak9XVlZaa05vUTJobllubG1WMlJVWVZsaVFXaE5ZbWhuUVdkTmFFUmllbWRPWWxGbFRtRlJZVEJuV0dKUFlsUm9XV0ZZWmsxb2EySTBablJpUldVeFlrbG1kMk5CWWtabFNXTXJaRVZqWjJocllXeGhUR0pDWVVwbFptUlZaR3BvV21GTGFFaGplR0ZrWTFWbVQyTjNZMFZsYkdOQ1lYbG9PR1ZOWWtwbVZHVTRaa3RoVldKcVlrSmxZbVZZWTBGamRHVlpaa1ZuUkdWVloyOWpUbUY2WWxWamRXUkJZa05tV21kUllWVm9kMmh2WWpCb1JHVkdZa1ZqVldSQ1lsVmhNR1Y0WWtoalFXUk5ZM0JpU1doNVowRm5iMmhWWm1wblRXRkphRTFsYkdWWlprNW5RMlY0WmtGaVVHVldaVUZrWjJkdllVMW1iR0ZyWXpKbFFXZEVZVWxpVVdORVowRm5PR042WjFWaVJHaFZaMDVrUm1KNlpXdG1NbWhHYUhwbFNtVlBZa3hrVW1ST1pGTmtUV0ZCWkVKbVUyRlFabWhoU1dWS2FFcGtVMlIzWVZOaFdHWXhaRWxrTW1KVFltaG9PR1ZZWjFabFJHTnpaa0poU21OUlltTm5kbUZFWjBObFZXRXZhRU5uYkdSSlkzZGpWMmd4WW5kaFRHTlhhRUppUVdneFowdGlSR05qWVRGbVRHSm5ZMEZuYldoVllVWmlUV0pMWjA1blFXWjRZMUpuUm1GQloxWm1UbWROWVZKamQyVkVaVXRrVTJOTloyZGtTMlZHWlVsbWVtVkRZVVJsU21OWFpFUmxVV056WjFGblJHSXhZMUZtU1dOTFkwUmxTbWRhWkU1a1oyVkJhSGxsUldaQlpYZGxVR1pOWXpGaVFXY3hZMFJtVW1oallqVm5UbWhvWm1Ob2VXVlVZbWxqTUdGVVlWVm9hbVJCWjBGalZXTnFaelJoVTJGRFpGTmhWV1Z6WTBWbWJHTTVaMU5vVG1WcmFHOWxabWhHYURGbFVXSTNaa0ZrVTJaVllraGxUR0YzWW5kamJHRlFZbmRoY0daVFlrMWxSbVIwWldOalEyZ3haV2RrVVdoT1lWTmhaMk16WTA1bFUyUTBZa0ZvU21oc1lVSm5WR1ZEWjJwbVVXTk5ZVlZuVW1GUlowWmxWR1JVWmtWblkyaEJaWGxrYTJWcVprbGtRMlJvWVZOa1RXVjNaV2RpZVdkV1lXZGxNR05NWjBWa1FXSTVZVlZrUTJoRGFHZGllV2hYYUZSaVdXRkJhRTFsYUdSQmFFMWlSR0Y2WkU1b1VXUk9abEZrTUdkWVlrOWhWR2RaWTFoblRXZHJaVFJvZEdSRllURm5TV04zWTBGblJtVkpaaXRvUldkblltdGxiR05NWTBKblNtWm1aRlZoYW1oYVowdGlTR1Y0WTJSb1ZXTlBZM2RpUldoc1kwSmtlV000WWsxb1NtVlVaemhvUzJOVmFHcGhRbVppWmxoaVFXWjBaRmxvUldkRWFGVmpiMkpPWjNwa1ZXSjFaRUZqUTJKYVpGRmxWV04zWm05bk1HZEVZa1ptUldGVlpFSmlWV2N3Wm5oalNHVkJZVTFqY0dSSllubGxRV0Z2WWxWbmFtUk5aVWxrVFdKc2FGbGpUbU5EWlhob1FXVlFaRlppUVdOblptOWhUV1JzWW10bE1tRkJZMFJtU1doUmFFUmtRV000Wlhwa1ZXVkVZVlZsVG1GR1pYcG9hMmd5WlVabGVtRktaRTltVEdSU1pFNW5VMlJOWmtGaVFtVlRZVkJuYUdGSlpVcG9TbVpUWTNkblUyVllZVEZsU1dVeVpsTmthR000WmxobVZtRkVabk5pUW1KS1kxRmtZMkYyWkVSaFEyZFZhQzlsUTJGc1kwbG1kMlJYWkRGbWQyZE1abGRsUW1WQmFERm9TMlpFYUdObk1XUk1aMmRuUVdOdFlsVm1SbUZOWWt0bFRtWkJZWGhsVW1OR1prRmlWbVJPWmsxaFVtRjNaMFJpUzJoVFpFMW9aMmRMWjBabVNXWjZhRU5oUkdoS1pGZG1SR1ZSWlhOaVVXZEVaakZrVVdkSlowdGxSR1pLWjFwbFRtRm5aMEZoZVdKRllVRmtkMmRRWjAxak1XZEJZakZpUkdoU2FHTmlOV2RPYUdobFkySjVZbFJuYVdRd2FGUmlWV2hxWTBGblFXWlZZbXBvTkdkVFpFTm9VMkpWWTNOb1JXZHNaRGxtVTJkT1pXdGhiMkZtYUVaak1XUlJhRGRvUVdGVFpWVm9TR05NWlhkaGQyTnNaMUJrZDJad1lsTm5UV0ZHWVhSbFkyUkRZekZrWjJOUmFFNWpVMmRuWVRObVRtWlRaelJtUVdGS1pteGxRbVZVWjBOa2FtaFJaVTFpVldWU2FGRmxSbWRVWTFSb1JXUmphRUZqZVdOcmFHcG5TV1pEWm1oa1UySk5ZM2RrWjJkNVpsWm9aMlF3WjB4aVJXUkJaVGxvVldaRFkwTmlaMko1WjFka1ZHTlpaMEZoVFdWb1pVRmtUV1pFWm5walRtVlJaMDVtVVdZd1pWaGtUMkZVWkZsbFdHWk5hR3RoTkdoMFpVVmtNV2hKYUhkaVFXVkdZMGxqSzJGRlptZG9hMmRzWjB4bVFtaEtaV1puVldGcVlWcG5TMmhJWm5ob1pHRlZhRTlsZDJORlpHeGxRbVo1WnpoaFRXWkthRlJtT0dWTFlsVm9hbVpDWjJKb1dHSkJZblJuV1dkRllVUmtWV0p2YUU1bmVtRlZablZoUVdGRFkxcGlVV05WYUhkaWIyZ3daVVJsUm1SRlkxVmpRbVZWWWpCa2VHWklZMEZvVFdod1owbG5lV1ZCWTI5aVZXUnFZazFpU1daTlpteGxXV0pPWlVOb2VHVkJaRkJrVm1kQloyZG9iMmhOWkd4aWEyVXlhRUZuUkdoSllWRm5SR2RCWmpoaWVtaFZaa1JvVldaT1prWmxlbVZyWVRKaFJtRjZaMHBqVDJGTVpGSmlUbWRUWkUxblFXZENaRk5tVUdkb1prbG5TbUpLWlZObWQyRlRabGhvTVdWSlpqSmlVMmRvWVRoaFdHSldZMFJrYzJKQ1kwcG1VV0pqWVhaaFJHTkRZbFZrTDJSRGFHeGxTV04zWlZkb01XZDNhRXhsVjJGQ1owRm5NV0pMWjBSb1kyUXhaRXhpWjJoQlkyMWlWV1JHWWsxaFMySk9Za0ZqZUdSU2FFWmhRV2RXWkU1bVRXZFNaM2RvUkdoTFlWTmlUV1ZuWmt0alJtZEpaM3BrUTJaRVpVcGpWMk5FYUZGamMyVlJhRVJpTVdaUlkwbGlTMk5FYUVwb1dtRk9aR2RoUVdkNVprVm9RV1IzWjFCalRXTXhaRUZrTVdKRVpsSmlZMlExWjA1b2FHTmpaSGxuVkdKcFlqQmlWR2hWWW1walFXSkJaMVZuYW1ZMFpsTmpRMkpUWlZWbmMyZEZaR3hsT1dSVFkwNW5hMkp2Wm1aaFJtUXhabEZvTjJkQlpsTm9WV1ZJWWt4amQyTjNaV3hqVUdKM1pYQmtVMk5OWkVabGRHWmpaVU5oTVdWblkxRm5UbVZUYUdkaU0yUk9ZVk5qTkdaQlpFcGxiR1JDWTFSaVEyWnFaVkZqVFdaVllsSm9VV2RHYUZSa1ZHSkZabU5qUVdoNVpXdGhhbVZKWWtOaWFHUlRaazFsZDJKblpYbGtWbUpuYURCaVRHTkZZa0ZtT1dOVmFFTmxRMlJuWm5sa1YyVlVaVmxtUVdOTlptaG1RV0ZOWjBSbGVtaE9aMUZqVG1oUllqQm9XR2RQYUZSbldXSllaMDFpYTJNMFpuUmxSV0V4WjBsa2QySkJZa1puU1dRcllrVm9aMkpyWVd4bVRHUkNZMHBrWm1KVlptcGpXbU5MWjBoamVHRmthRlZpVDJKM1lrVmliR1JDWlhsb09HZE5aRXBoVkdFNGFFdG5WV2hxWmtKbVltTllhRUZrZEdkWlpFVm5SR0pWWkc5aFRtVjZabFZtZFdoQmFFTmxXbUZSWmxWbGQySnZaVEJoUkdKR1pVVmxWV1JDWWxWbU1HZDRZVWhqUVdKTlpYQm1TV2g1WWtGaWIyZFZZMnBtVFdkSlpFMWliR1ZaWVU1a1EyaDRaRUZuVUdoV1lVRm9aMlZ2WmsxbmJHSnJaREppUVdKRVpVbGlVV0ZFWlVGbk9HZDZaVlZpUkdKVlkwNWpSbUo2WjJ0a01tSkdhSHBqU21WUFpFeGxVbVpPWjFOa1RXSkJZMEpvVTJKUVpXaGxTV05LWkVwaFUyUjNaMU5sV0dZeFowbGpNbWRUWkdob09HaFlaRlptUkdKelowSm9TbUpSWTJOamRtWkVaME5uVldjdlowTmtiR1pKWVhka1YyVXhaWGRsVEdWWFkwSmxRV0V4WTB0aFJHVmphREZrVEdGbllrRmpiV1pWWTBabFRXVkxaMDVoUVdGNGFGSmlSbVZCWVZabVRtZE5abEprZDJSRVowdGhVMlJOWm1kb1MyaEdZa2xoZW1KRGFFUmlTbWhYWmtSa1VXaHpZVkZoUkdJeGFGRm9TV0pMWkVSbFNtUmFaVTVuWjJGQlpubGlSV2hCWVhkblVHaE5ZakZuUVdJeGFFUm9VbWRqWXpWbFRtTm9ZbU5vZVdKVVoybGxNR0pVWlZWbGFtUkJaRUZpVldacVlUUm1VMkZEWVZOb1ZXWnpaVVZtYkdJNVoxTm9UbVZyWkc5a1ptWkdaekZqVVdFM1pFRmpVMlpWWmtoalRHZDNabmRsYkdGUVpYZGxjR1ZUYUUxb1JtWjBhR05sUTJneFoyZG1VV2RPYUZObloySXpaazVuVTJNMFpFRm5TbU5zWlVKb1ZHUkRZbXBuVVdGTloxVmpVbVJSWWtab1ZHSlVhRVZrWTJKQllubG5hMkZxWWtsbFEySm9hRk5sVFdOM1pXZG9lV05XYUdkb01HZE1aRVZuUVdRNVpWVmxRMmhEYUdkamVXRlhZbFJtV1daQllrMWthR2RCWmsxalJHUjZaazVuVVdoT1oxRm5NR1JZWTA5b1ZHZFpabGhoVFdocll6UmpkR0pGWWpGa1NXUjNaRUZtUm1kSmFDdG5SV0ZuWjJ0bWJHVk1hRUpuU21ObVpsVm5hbVZhYUV0blNHUjRZMlJsVldoUGFIZG1SV05zWlVKbWVXVTRZazFuU21GVVpUaGtTMkZWWTJwblFtTmlhRmhpUVdGMGFGbGlSV0pFWTFWbWIyaE9ZWHBvVldWMVprRmtRMmhhWmxGa1ZXRjNhRzlrTUdkRVowWm9SV1JWYUVKalZXZ3daWGhsU0doQlprMWpjR1pKWTNsaVFXTnZZbFZqYW1kTlowbG1UV1pzWlZsaVRtaERZWGhqUVdkUVpWWmpRV1ZuWkc5a1RXUnNhR3RvTW1kQlowUmpTV1JSWmtSa1FXYzRaM3BsVldKRVpGVmtUbVpHWm5waWEyZ3laVVprZW1aS1kwOWxUR2hTWkU1b1UySk5ZMEZtUW1oVFoxQm5hR1ZKWlVwaFNtRlRaWGRpVTJkWVpERm5TV2N5WVZOb2FHRTRZVmhsVm1oRVozTm5RbWhLWTFGaVkyVjJaa1JrUTJoVllTOW5RMmRzYUVsaGQyWlhZakZuZDJWTVpWZGtRbVJCWlRGb1MyWkVZV05vTVdkTVpHZGpRV1Z0WmxWbVJtUk5hRXRoVG1SQllYaG9VbVpHWlVGa1ZtSk9ZazFqVW1WM1owUmpTMkpUWlUxbVoyZExaVVpqU1dGNlowTmtSR0ZLWVZkb1JHWlJZWE5uVVdWRVpqRmtVV1ZKWkV0aFJHWktabHBoVG1ablkwRmllV0ZGWTBGaGQyRlFaRTFoTVdOQllqRmhSR2hTWldOak5XSk9aV2hvWTJGNVpWUmthV013YUZSalZXRnFaMEZsUVdkVlltcG1OR1pUWWtOb1UyRlZZbk5qUldWc2FEbG1VMmRPYUd0bGIyTm1ZVVppTVdkUmFEZGpRV0pUWkZWbVNHZE1ZbmRuZDJSc1kxQmlNR1JyWmxCaFRtTnNZa1pvVTJGRVpqRmhaMkZoWjBGa1EyaFpZaTlsU1dkSGFFVmhOV0ZMWlVWbFdtTllZMEZqYW1GQloxbG1SV2RGWWpsblJXaFVZa1JoZDJWV1lrRm1RMmMwWVhWbVJXUnBaRVpvWkdoSlpWVmxRV2M0WkZGaFFXZHJZVVJuUm1oQ1pYTmtUMmRhWlVOb05HVTBhRlpvZW1SSlpFRm1UMlJEWkZWaFEyaENZbmxoV1dobVlsQm5RbVozWkZWbVRtWnFZMVZqUldoa1lVSmhTbWR5WkVOaVZXSnNaSEZqWW1aRVpXdGtOMlZJWWtGaFJXTXpZbEJsYkdkT1lVNWtXR2RDYURGblUyRlFaM2hrWkdGalprdGtWV1ZrWlRWblVXWlRaRFZqUm1SaVlXNWpUbUZvYUVab1NHWnphR1JuWkdkQlozTm9XbUpFYUhwbGMySTNZV1JpYW1aelozVmhSV1JEWjBsb1YyZFdaVkZtVFdOb1pFaG9iR0pWWjJOaVVtWkdaRGhqTkdSRlozaGxSbUoyWkVwalEyTmphRGRsUjJoSVpVbGtSbWRRWkZaak9HTmlhRlJsVVdaVmFHVmtWMmRyYURSbk9XaFFaa1prUldNclpVSmxhV0prYUV4bVdXaEZaelZvTDJKUFpETmtUbVJIYUZWa1YyTnNaQ3RtVm1KdVpWSm9iV0ppYUVKbU9HZFZaMDlvUVdkMFpVUm1TMmRvWjFsblkyTk9ZM2xpT0dKWVkwWm9lbVZzWkhkbVFXZFdZV3hpUldSSVlVaGtjR1JJYUVWamQyTnJaSFppU0dOcGFFVmtkbU5FYUd0bldtaDRZMUppUm1GSmFGbGpVMk14WjFsamEyZEpZMnBqWTJNNVlWQmlSV0paWTIxaVVtaEdaMlJsUVdoa1pWRmhUbVZGWkZab1VtSmpZa3huVUdGb1lWVmtWMmRpWjNwalZXRndaRTlvTUdoQlpUWmhWR2hxWlhCaVJXVlJabTFvWkdoU1pGRmllbUU1WWs5bFdXSXpaSFJsV1dGaFpESm9kR2hsWmxobWEyWlZaa2RoU1dWVlpsVmxhbVZJWkRCa2RHZ3pZV1prZUdORmFEbGtWMko1WkUxalNHaFdZMjVvT0dSR1lWaG5SR0pXWTJObVNHaDVZVEJpZG1aQmFGVm5kR1pYWkUxbGQyUlJZVlJsUW1aU2FEaG9hV2RJWlhsb2QyUkJabEJtVVdaS1lrOWxaV1ZGWms1aVUyaEtZa1pvVG1WbFkwZGhWbWRCWmxwa1QySnRaelZpSzJKS1p6SmhUbWhIWkU1blVtUTRaMU5oUm1NeFpqbG1TMkZGWlVGaVdXTlhZVmhpYW1kV1kzZG5VV2R0YURsb2FXRmFaRzVuV1doVloyVmxaMmRyWkM5b1dHRjNZelJoVFdSSVpGUmhNV1ZrWTBKaGVtUndhRFpoVm1SNVlVRmhSV1pQWW1oaFVXRlphRkZrUVdod1pWUmtTbVpuWm05aldHaE5ZMGRuVG1kRlltUm1RbU5LWW5Kb1FXVkNhSGhpTkdoVFowWmtkR0YxWjFKbU1HRmFaRTlqWVdkc2FFMW9XbUpGWlRKamIyaE1ZVmRrZUdKQ2FFaGtUbU5CWTFGamQyWkRZa05pUldORloxcGtibVJzYUZka1EyRllaMFppU21SU1kwSm9NV0pqWlVkblZHZEtZM1ZsVFdGcVlsbGhjR2hFYUhsa2JHTlVaRVZvYTJkd1pucGtVMlJzYUZGa1dHVkJaR3RuU1dJclpVaG1NR1YzYUhWa1RHWjVaVXBpUkdkR1pVaG5TbVZQWm1OaGQyWTVhRTFtUTJSU1oxRmxVR2RZWWtGbFFXWnpZbVpsUjJaTllVNWlWR1JZWVZGa1JHZFJhREpvVW1neFpVVm1XR0ZPWTAxb1UyY3pZMmhsZVdSSFpsUm5XbUZHWVV4bWFHWkdZa0ZvWTJnd1kxbGpUMmhhWmxab1RXZGlZbEJqVkdSdlpsZG9WbWhzWmxaamQyZFVaMmRsUldkSGFGaGtVMlpuWmxSalRtTXlhSFJsZFdWVFptMW9VbWcxWlZaa1FtVlNhRFZrVjJWRlpsVmpaR1JXYUdkbFVXaG5aVkJtV0dSblkweGlSbUo1WWpWa2JtTkRhSGhsU1dObFpXWm5WV1ZOWkZwb1pXZEZZVkZoVEdaalpFWmtjR1JaWjJKbk1taHZaSGxrV21VeVozZGxTMmhLYUc1bVRXWk9aMVJsUW1jNVpscGlVV1JDWlhobFZtaFJaSGxpYTJoU1ptVm1RbU5WWlRoalIyZENZbXhrUTJGa1kxWm5ZMk50WmtGaGFHSkpaM05oVDJSU1lXdGhObVpFWnpKb1RtZGlaa1puUTJWd1puTm1SV2d6WW1kaVFtZERaV3BtUVdjdlpFRmlWbU5qWjFSalpXaEZhREJoVFdkSFkwWm1SV1oxWVVSamFXSnphRkJrWW1OclpVbG9kMkpqWTBWa2RHWlFaRmRrZUdJd1kyUmtWR0ZTWld0bFVXVkpabE5pUVdVeFlVcG5lV1paWmtwaFMyTlNaRnBsUVdaU1pFUmhRbUpFWmtWbVFXTnNhSFZqUTJVemFFSmxZV1JSYUcxaU9XZHBaa3hvZVdFNFkxVm9aV1JuWW1Oa1NXWldhRlJvUm1SRloxVmhVbVowYUZGalIyWnFhSGRoYldkV1pXNW9RV2hKWTBSb2VHaFJZak5vVVdWRVlrSm5TbWhKWW5kaFRXRkVhRXhqUTJGT1owNW1XR2huWVRsb2NtRlZaV2hoVW1aNFlWSmhhMkpWWlRWalFXaFZZamhoY21KaFkydG5OR05hWjBkaWVtSnNhSGRuU0dGRFluTmhVMk5hWVRCaVkySXZaVkZoVTJOa1lWRmtXbVZFWVhob1NHSkdZMFJpTUdoSVlraGtWV04zWkVsaFYyTnVaRkZtY21kTVkybG9UV0puWTBabFJHVk9aVVpsUTJWRlkzZGpkV1ZHWVhob1FXVlFhRlJvVW1oQ1lXRmtWMlpyWWtwaGRtRlpaMjFrV21Kd2FGSm9hbVJqWm1GbVNtTnJaRWxtUTJOVVoxRm1WV0o1WjFWbVJHZE9ZVzVqVG1jeFpXdG9PR1ZFWmxoamQyRmxaRkptUVdSelozUmpVV1ZVWjNkaVpXTkNZVk5rZEdJNFkxWm9hbU56WTBSbllXTjRaVEJoWVdaT2FFSmhOV05FWkU1bWQyVkZhR0ppVG1jeVpGcGtWR1pUWW5oa2NHWTRZME5pTVdSRmFGcG9TR2RFWTFwaVNHaGxhRlZpUm1oMlpWZG1iV1F4WXpGaVUyTXhhSFJvTDJaWFpFVmtWV2hrWTFabVoyTlJhR2RtVUdGWGFERmhXbUppWmpCaFdtRnVaVVppYTJRNVptMWtaR0pWWTI5blVXWlZaMmhtU21aTFprbG5iR2h2WkV4bFltWXpZamxtYldoTlpHdGtiR053WjFwaVNHUk5ZVkZvVkdGRllqQmhSR0pFYUVWbFJXSmlhRTltZW1WdlkxbG5aV0pIYUhSaU1HWlZZbFZvY0dOUFltUmhVbWRHWXpkb1NHaHNZVGhqTVdkalpVVmtkR1V3WmxkaE1tTktZbVZoVUdadVlVWmhSMmhGWWpOaGFHaFVZVlJsTW1KM1pUUmtXR2RXWlc5alZHWmlaRkZsYzJKUmFGaGtlR0kxWWxGaVVtTXlaMUpsUW1aaVptdGhjR2hyYUdOb1VtUnJaR0ZqVG1kU1lUQm1RV0ZVWmxabk9HWkVZazlvYVdjd1pXbGhUMmRwWkVGb1NXTmFaWGhvTldoSFlsRmhTR05WWkVSbVNHZEdaa2xtUW1aQllXNWxRV2RDWW1GbVIyYzVaR2xvV21KdGFHdGpWV1ZqWjJ0aU5XWjZhRkZqYTJGSmFFTmpWMlJTWXpCbFdtRlVaMmxoUW1NNVprZGtRMlYzWkdSa1dHTnNZa1poUzJGVVltNWlWV0ZTWW1Obk1HaDRaRkppWldoSVowRmpOV1ZPWTJ0aFZXZDFZMFZrVldGQ1lpOWxRV1ZzWkZsb0sySkhZV2RrUldob1owZGpaMlpHYUZka1VXTjZaMVprV21ORVoxRmpPR1JoWjB4aWEySjBabXRsUTJoSFlVcG9TMkZRYURGbVRtVk1ZMFpuU0dKRloyUmtTR05WWXpCa1dtUldZMjVrVW1aMVpHUmhibVZOWVhOaVEySlRZV3hvVVdSWFlYZGljMlJuWlVkaVJtRkZaVkZvUTJGRlpqVmxjV0pYWTJ0bVRtSXJZMkpqYTJONFozQm5SbWRJWWtwbVQyZGpaWGhsUW1STlpsUmpWbVpHYUVwbFJtZFZaelJoYzJSUFkydGhNR0k1WmtKbVEyWlpaVkZoUTJGQlkwbG5kMmREWlROa1RtaE9ZMUZqV0dGU2FHRmxWbVZ1WmxGalVHWmhZakZpU1doVlpXTmxWV1JaWmxSaVpXSkdaMDVpVUdoSmFIbGlPR1ZJWWtGaWVHUk5aVEZrUW1NelpFNW5WMk5GWW01a2NHVklaMXBpUldoR1luVmhVMlp0WmxKaU5XTkdhR2hvTVdGeFprNWllR0V4WVU1bVIyVldZMXBsTUdOaVlXbGpkR1EyWVZsbE1tTjRaRzVpUm1Kb1prcGtUV0prWlZWamIyZFpZa0ZsUldSd2FFWmxZMlpGWjJSalEyWkxZMVJvWTJWdmFFdG1hMlpCWkRkalFXaFVaakJoVVdSU1pVSmliR0paWWxObFZXTTFZV3RoWVdGWVlsRmxXV1ZqWWtWblJtZ3dZbFZtVldKdloxbG9UbVZGWVU1amVtaENaMVppUm1Sc1kxZG1iR1ZhWVRCaVJHRXlZWFJvVTJWR1praGtSbVZIWTBWbU0yaG5aMGhtVkdneVlrcGxjMlJWWXpCbU1HRmtaa1JpTTJaUlpXTmxRbVJZWmpoaU1XaEJZbnBtUldaT1lrdGtNbU5DWjJ0a1pXVlZaM05oVldSalpGSmhNR1ZrWmxSblVtTnNaRmRuWkdaSFp6VmxjR1pqWVhsamEyZFVZMHRpVm1GV1lVZGxRbU5VWTI5alJXTkZZa1pqY0dOT2FFTmtlV1owWm5kaVVXTnRaamxqYVdWYVkyMWthMlZWWTJOaWEyYzFaSHBrUldoRlluaGtUbVpWWjFWaGEyUldaRlJtYW1GelkzaGlWR2REWmxWblZHUlBZV3hvUldSbGFFNWlXR2RrWVZab1RtTm5ZVzltVVdOTVkxUmhkMlJEWldSa2JtZEtabmRsWldKQ2FGSmxlR0ZTYUdoblRtTTBZbFZqTUdnNVoydG5ZV0ZzWVUxb1dtWkZZak5vUVdWTVkwSm5TR2gzWmxOb1pXZHJaR1JoYTJGUllWZGtOV0ZMWmxwalNHSnNaa3hvUm1OSVpFVmxTR05JWVZGaGRHSk5Za2RtUkdKalpUWmxVR2Q2WkhkaWFHUlNhRzFoT0dKbVprVm9hR2hrWkdaalUyUm9ZVUprVTJkU1lrRmhkR1IzWTFkaWEySktZM1pqV1dWdFpscGljR2hHWVVoaFNtUlBZMk5pTUdkSllVcG5SMlpSWjFGb1ltaFhaVEJoTkdNNWFHSmhlbUpLWm5kb1VXVllZbEpoVW1WVFpHdGtOV014YUVWbldHaE9aRTFsVldGWVptaGtkMlJXWVdsa2EySlZZVkZpVm1oSloxVmpZMkZWWlZsaFZHRmxZMFptVG1aUVkwNWlhV2c0WWtoblZHUkZZVVZvSzJkRFluZGpkR0ZaWlZabmJtTkphRTlrWVdORlkwWm5jMmhEYURKbVdtSXhabE5oTVdZeFpUUm9SV1ZTWVRCbVJXTkJhRzVtZUdjd2FHSmxibUphWjNwbVltY3daRmxoTm1KSVluaGlOV0Z0WldSaVZXSnZaMUZtVldScllWRm5UR1ZsWjBGaWFHVk5aa2xvUjJoS1lUZGpZV2hXWkVsbGJtRkJaMFJoUW1aRlpFSmlVV1pKWVdaa1UyVlNaREJsWVdKYVpsaGxVbUpMWTJWbVZXVkZhSFpoWldZd1puQmhUMmhrYUZKalJtSjZaVlJtUm1OR1pUUmlTV0ZvWVUxbVoyVlhaMnBvYTJWalkwWm1RbVEwWTBWa1YyRlVaREJoVVdkSFlUSmliMk0yWWtGblZtaGFaRWhpVUdReFl6aG1RV1JDWm14bFpHVXdhRVJrZVdoVmFGTmhRV1pTWlRCbmNXUkRZMUpuYkdoaVpVbGtWbUZvWkZCaFIyaFZaVUppV1dST2FIbGlPR1UyWWxCaU1taGpabE5vWVdaNFlWcGxRV1JTWmxka05XWm5aVVZqUm1oS1pVVm1RMmd6YUVKa1lXaElaakpoV21GMVkxUm1SMlpyWlZWa1kyRnJhRFZqZW1aRlprVm9VV0ZtWmxobmVHRnJaRlpqVldVeVlteG5NbU5IWVc1aWJHUk9ZbGhpYkdOR1lVdGpWR1Z1WVZWbFVtSmpaSGhoTldaYVptTmtRMlZLWkZsb1NtUjNhRGxrTW1SVmFHZGtXbWMwWVZSaGVtSnNhRFJtVldjd2FEbG1hMkZaWkRCbFoyTjZaa1ZqTTJoQ1lWZGhWV05HWWpWamNHWlZaRVZpWkdKcloxRmpWMkUwWmsxa1RXaFVaV05rU1dkUllVUm5hR1JUWTFWaU1HSXdZMUprUVdkdVlXaG5kV2hLWmtoaU9XVjJaa1JrTW1VMFlWZGhVMmRYYUZwbU1XVlRZMmhpUW1GVFoxSm9RV2gwWVhsaFJHSjRaa1ZvY1dGWllXcGhWV001WWxKa2FtSnpZVTVtU21aNFlrcGhXR05hWXpGblJtVktaa1poVldFMVpIQmtaR2hDYUVGbU1tVkdaMFJvYjJKVFpFaGxaMkZqWXpabFdHSXpZVTVrUldkQ1pGaG5SbU4zWlVSbFZtZzBZVkJpWVdNeGFFbG5WV1ZqYUZWaFdXTlVZMlZsUW1kVllXRmpTMk5wWVd0alNHWlZhRVpuZDJJcllVTmplR1Y0WldWblIyVXpZVzlqWTJoVVpHdGhSbWgxWmxOaGJXWlNhRFZpVTJSNFpsSmtlR2RJWjFKbU1HUmFZbE5sZDJFNWFEQmpUbWRXWjNoaWVtaGlZekJoV21GdVpVWmxhR1JLYUUxblpHRlZhRzlsVVdGVlptdGtVbVZrWmsxb1VXaG9aRU5pVDJVeVpVcGhOMmRoWlZaaGIyUXpaa2RrV0dWT1pXeGxRbVJSWTAxaFJtTlZZVmhrVVdaallVOWxlbVpXWWtKa1pXSkdaa0ptT1dOVFkyMWpRbVJQWTJSa1VtTkdhSHBuVkdGR1owWmpOR1JqWTBaa1dtTXdaRVJqTW1OellrRmhWV1JUWjFWalZHSlJaMVJsV21GVVpsSmhNR1ExYUhGalZXaDRaV3RrVkdGallVRmlkR1JhWWxaaGFHRktaVFpsVW1ZeVoxSmlRbWhpWjJ0aFNXWjNaV1JoZW1WU1ozSmhTV1pWWnpsb1UyVkhhRlpsV1dWd1lVTmxNbWcxWlhKb1kyUjZaRkpqYzJSYVkzaGpXV2RUWTFSa1NHWldaVXRrUldKR1pVcG9SV1pEWnpOalFtTmhabEZuYldjNVpHbG5XbWhvWjFwa2NtRkpZbWhqZDJnNFlsSmlRV0pOWm5sblRHVnNhRTFsVm1KUFlubG9RV2cyWjFSaVIyRm5abWRpU21OblpVMWxUR1JHWWpOaWRHSkNaVWxsVVdOTmFFWmhUbU41WTFGaVVHZEtZMFZrY0dodVltVmpRbUZTWkhoaVVtRm9hRTVpTkdaVll6Qm9PV0ZyWW1GbmJHRk5aVnBrUldZelprRmxUR0ZYWTFabFdtaFZaRTVtVVdKb1p5dG9VV05UWm1kb1ptVkxhR3BvYjJGbVpGaG9WR00xWkZSa1NHRlZaMVZtVVdSV1kybGhPV0ZGWTJSaGJtWk9hSFptVW1OdFkyTm9WMkZGWTJ0b2VHSXhaMU5qYUdSQ1psTmlVbVZCWjNSaWQyRlhaMnRoU21WMllVMWpRMkZOWnpsblVXSlRaa0ZsUVdKallYZG5VbWRsWmxab2JtSjBZa3BqUm1GVlpEVmtjR2RrWmtKbWFHSjNaRkZoV0dWU1pWSm5VMlJyWnpWa01XRkZZMWhqVG1OTlkwUmtTR2hTWkdGbVZtTnVaRkZrVUdaaFl6RmhTV1pWWkdOblZXRlpZbFJsWldGR1lrNW1VR1ZhWTBkaGIyZFBaVVZuUW1jNVkyRmlRMmN4WW14bFYyZEZZMjVuY0dkSVpWcGxSV0ZHYUhWaVUyVnRaMUpsTldWVFozaGpVbVpzWmtSaGVHY3haVkZoUW1SRlozUmlNR0ZQWW01bVoyVXhZa2xuUVdOc1pIWmtTR2g0WlVwa1MyUmpaekpqUVdWUlpsVm9hMkZSWVV4blkyVkdhSEJvUTJSaWFESmxTbWh0WkdGaVVtRlNabmxoVkdWdVlVMWtVV2RVWTJkaGMyWkZZVUpvTVdGWlptRm1TV05FWTNSb1YySmpabXRoUm1Wd2FGUmlSV052YUdGalRHUkZZMFZpTW1KQllYaGlaR00wYUVwbVJtUm5abTVpVjJWcGFHdGlWR0pTWVdsa1RXRklaMU5oYm1Wb1oxWm9VMlJWYURWbmNXVlZaSGhsYTJGVVlXTmxRV1YwWVZwaFZtWm9aa3BvTm1GU1lUSmtVbUpDWm1KamEyWndZMnRuWVdKVlpuTmhTbVZpWVVGb1FXUmthRWRtVW1aalowWm5TV1pUWkhkbk0yWkpZbFJqTUdSSVkxQmphR1kwWmtSa1VXWklhRlpvWW1kSFpWWm1kMkZIWVZWaGFXZFJabVptVEdkcFptOWxjMmRKWkZSb01XSmphRmRoUldjMVozcGpSV0ZGWW5obVRtZFZabFZpYTJOV1lsUm9iV2RzWkRCbVIyWklZMnhqWVdSWVpXeGhSbWRMWVZSbmJtVlZZVkptWTJJd2FIaG1VbU5sWlVobFFXRk1ZbVJsUldoM1pIRmhRbWRzWTJObE5XRlNaR2hrYzJSeGFGZGhhMlE0Wnk5bFVXZEdZazFoV21GRmFETmtRV1ZNWVZkalZtWlpZbE5sWldOclpXUm5hMmRSWlZSamQyaFFaRTFrUTJGM1pWcG5WMlZ1WWtWaFkyVkVZa1psV1dSNlpsWmtibVZTWW5WblpHTnVhRTVpZG1WU1pXMW5ZMkpYWlVWbmFHVkdhR1prVTJab1prSmtVMmhTWlVGbmRHWjNabGRrYTJOSlpubGpVMlJIWWxwaGNHSkdZa2hpU21aUFptTmhlR0pDWmsxb1EyRjNaRkZsU0dSV1lXaG5iMmRuWkU5bE1XWmFZbmRqUkdKdVpIaGlXV0pUWW1oa1ZtUm1hRVZqV0dOT1lVMW9WV05ZWm1oaWQyTldabTVsVVdaUVltRmtkMlJDWkZKaVNtaFNhRTVpUW1kT1kyeGtUV0ZDWTJGbWFHWTBaWEZuWVdkWVlWbG1WV1ZrWTBSbVoyZHJaVmxsUW1KellpdGtSMlY2WlVsalltTlBZV2hvVVdKWGFFOW9WMmRDWm5obFFXVm9ZVEZrWm1ORFpVVmhTbU5xWTJWa2JXYzFhR2RrWldkV1owcGtkMmhHWW1kbmFHRk5aRnBoUm1adlpVaGhVV0pXWjAxa1ptZFphRlZsU21SUlptWm9TR0ZzWkUxallXSlNaVkppZVdWVVltNW5UV1pSYUZSbVJXRXdaMDFrV1doNFpGWm9UMkpoWWxoblVXSlpaMk5rUldkR1p6Qm9SbU40WlRoaFFXSk9aR3RqVldNMlkwRmplR1U1WkRSblQyTkdaVFJsWjJkQlp6Sm9jMk5CWjBobldHRkZabVJqVDJaWVpXaGtWR0pVWmpKbVVtRnhaRlZoZUdSclkxUm5ZMlJCWjNObVVXUkZaa0poU21kNWFFTmpSMmQ0WVVsb1ltTnNaRnBrYTJaTFpUQm9TV05WWVVwalZtZFdaRkJoUVdkcllUVmtWMlJQWkdsamMyVm9ZbU5oZUdRd1kwaGlTMlpXWkVaaldHTkxabE5pWTJSWlkxaGtkMlJDWVUxbFEyTlNaR3RoVldWR1lrTmpOR1YxWWt4bWVXUXdaRlZvU21Kb1lXTm1hbU5XWWxGb2FHWk9aRVZpUW1SMFpFaGpSR042WTBKbE1HSldZa1JqVldOUVkwMW5kMkpWWTBOa1ZHSklZbmRoUzJOWFpGVm5lR0pTWldWblNHSkNhRmRpWkdKQmFEbGxjbVpWYUdoblVXaHFhRUZtTUdKalpYUmhRV1JSWTBaaWEyRlpaRzVoYTJKYVpVVmtNMlJCWWt4a1YyZFdaMWxuVTJWbFlXdGhaR0pyWkZGbFYyYzBZVVZrWVdOblp6QmhlV2RhYUVKalVtZzFhRmxpYVdKNFlYSm9TbWRDWkZWaFdHZERZMUZoUVdOaFpVNWlhR2RrWmpWa1dXRkVaV2hsWm1WVGFHaG5RbWRUWmxKa1FXRjBaSGRoVjJoclpVcGpkbVJaWjIxb1dtWndZMFpqU0doS1kxSm9ZMlY0WkdobFJXVkhZbFpsUm1KVlpFWm5VV2RCWW5OalNXWjRabWRrUm1oRGFFUm5iMkZHWkZWb2FXUTRZbTVpVVdONlpVbG5WbVpYWmxOaGNHRTFaVmhtTTJobloxQmhXV04zWVZsa1lXWkVabXBpYkdGRVkwdGxhR1ozWVdKa1MyUjRabFZoYzJKSFpWRmhOV04zYUZKb1ZtTmpaRWRsVVdoRVlWVm5WR2hMWkhoaVZXSXpaMGRuYVdSR1pIZG5VV0ZxWmpWa2VHRklaVkpqTVdaT1pVZGxWbVZhWlRCaVltRnVaRnBpZW1SaVp6Qm9XbWR1WmtabFoyUm9hRTFqWm1KUlkxSmpSbUpJWkdkbVoyVk1abUppVldWa1ptWm9ZbVo2WVZwamJXaGlaWGhtU21kNVpWSmthV2hqWVZGalZXVlZaakJqWm1GRVlrVm5TbVZQWWtwaU0ySjRaMHRvWldSVlkyaG9OR1pWYUZWbFNXTmhZV1ZtTVdnd1lUSm9RV1ZvWlZsb2MyRlBZMFprV21Wd1lrUmxlbVZzWVdKaFNHSllaekZrYzJSRllqTmxhR2hVWVZSb01taFNZM0ZrVldoNFpXdGpWR0ZqWlVGaWRHUmFaRUZvYW1Ob1pqWm5VbWN5WkZKbFFtUmlZV3RoY0dkclptVm5WV2h6WmxWbFpXRkJZVmxtTTJaVVlWSm9iR2RYWkdSalIyRTFaREpsWTJneVpEaG5ZbVpVWVZKbFdXVlRaMVJpU0dOV1lrdG9SV1ZHWlVwblJXaFVabE5vVldaVmFFRm5WR1p6WjNKb1MyTlRZMk5uVldoUVprVm5XV2R1WjBoblJXVjNZV1psV0dKVloyeGxZMmRTYURKaWEyUjJZMDFpYm1WQ1owSmxaR1JHWmtaalMyaFVhRzVuVldOU1oyTm1NR0ozWkZsbVVHWnVZa0ppWldSa1lWRm5ZMmhzWmxob1IyUkJZVWxtVG1GdVkxbGxZMkpNWjBOak5HUlhaVWRuUkdOS1lXZGhZbWRCWVU1b0syWkxZVk5vV21JNWFFTmhSR2hPWW10bFNHWlVZMHBuUzJGTllrUmhSV0pEWlZKaU0yRkdhRlZqVldSNFl6Vm5UbVJHWlhwamIyVjBaMDFrZW1OM1pYQm1VbU5wWVd0aFptTkhaakprV21jeFlWTmhhR1JDWmxOaVVtWkJZWFJvZDJKWFpHdGpTbUoyWjFsaWJXZFpaamRuVldoVFlWbGpZbVJKWWxabk5XUk5ZMEZsZUdOUlptVmxSbVZSWjBKaGFHZEpZMEppVW1OM1lVVmtNMlZvWWxKbVFXY3daMlJqZFdSUGFETm1UbUpOYUZWbVdHaG9aWGRoVm1odVpsRm1VR2RoWVRGaFNtRmtZazVqTUdKWlptSmhaV1pvWkRCb1lXWkxabE5uWjJWWFpWTm9lR1ZHWjNkalJtRnJZVkpsVjJOU1ltbG1UV1ZZYUVsbFVXSTBZVzlrVTJKcVpFSmxkMlJUWXpCbk9XWmlZa2htVW1NeFprNWxSMk5XWTFwaE1HaGlaMjVvV21KNloySmxNR0phWW01aVdHSXhaVkppVFdobVkxVm1hR05FWTBKb2FHWmFZa05tVUdOb1pURmxRV1ppWXpObk9XUTNaMkZpVldWQlkzSm5TR1ZxWlZwaVptVkRZbXRuTUdKRVpWRmtSR1E1WVU5bllXRllhRkZuV1doamFFVmhSbVl3WWxWalZXSndaVTltWkdOU1lrWmplbVZVWTBGbVZXRjNaMGxuYUdKcloycGxSR1Y1WVZWa1dHTlJZVE5tUldKcVpWRm1VMkZ2WTJOalNHaFhhSGhrUVdOVmFIaGphMmhVWVdOblFXaDBZVnBvVm1ab2FFcGhObVJTYURKalVtVkNaV0pvYTJod1pXdG1aV0pWWm14b09XaE9ZbmhqTVdOWlkwRmpNV2h2WTFwa1RXUkRhR05uTkdOT1owZG1PR2hRWms1b1FtTmFhRUptU0dWRVowRmtTbWhYWkZKb1VXVk9aRlJqYW1SU1pXRmhSbWRwWjJOb2JtVkxaMGRqYkdaQlprOW5aMkowWkhwblZtVm5abFZvWm1WQlpXaGpNR1pXWWtSbWVtSnphSHBtVkdWVVpUQmlSV2RQWTJkbFZtUkxhRUZrZVdKQ1pVTm1TbVV3WTNkbVZHRlFZMWhsUVdWWVpXUmxSbU4zWVM5aFFXVkdhREJrTDJOQloxSmhSbVJUWmxWaU1HVTVhR3RqWVdGc1pVMW1XbUZGWlROalFXaE1ZMWRqVm1aWlpsTm5aV2hyYUdSbGRHVlhZMnRsVW1oTFlscGhTR1pzYUV4a1JtTklZVVZsWkdOSVlsVm9NR0ZhWWxab2JtZFJZamhvVFdONVoyTm9ObU5HWkVOaGEySlhhRlpuUldSUloyaGlRV1ZzWVd0bVFtZFRaMEZsYzJKcllWVmxNV2hzWmtaa1dXZHRZMXBtY0dKR1praGpTbUZQWjJOaGVHZENZazFvVkdkUlpYaGphbU5HWWxWaE5XWndhR1JvUW1ab1puZG5VV1JZWTFKb1VtaFRaV2hoZDJOM1oxSmxVMlJaWTJWalNHRXpaMmRtYW1WWVoybGpRbUpJYUVsbVoyUkZabGxuWTJKU1kwbGtabWhsWWtGblJtSkVabHBvUTJST2FHRmpRV1pxWVd4aGQyWkRZekZtYkdaWFlVVmtibUp3WkVoa1dtWkNZWGhoUldKVFptMW5VbWMxWmxOa2VHUlNhSGhvU0dWU1pEQm1UR0ZVWmtKbFoyRXphRTloYW1JNFpqaGlTV0ZWWWxsb01HSklZMnRtV21GQloyUmtVbVZuWldOaVZXSm5aekJuU0dSallVSmhPV1ZNYUdKaGVtWnNaRTFpWVdKU1pWSmxlV1pVWlc1bFRXRlJabFJoUldjeFpWSm9VMkZXWlhkblNXUmhaMWhpZDJWaFlsQmthR0pSWVRWaFJXTjNZamhqWTJka1pYaGlSbUoxWlZWb1ZtVkZabk5vUzJOUlkxbG1lR2hSWTBOaU1XWlRZVkpsYm1ob1pYTmxSV1V6WW1oa1ZHUlVaakpuVW1keFpsVmhlR1pyWjFSa1kyaEJaSFJrV21OQlpXeGxiMmR2WkVObVJHZE9aVUppU1dWQmFEaG1lbUpsWlZSa09XVk9ZVWxpVm1Ob1pEUmtTR1F3YUhOa1dtRktZbTFtV21KNFpHTmxWR0pyWkVoaVMyTXdaRTVuV0daVVpXNWlWV0ZNWkZGaWFHaFZZMUpqVW1OcVlWVm9WV1pHWW0xaE9HSjJZVTFvZW1ad1lrRmxZMkpuWjBGbE9HTlNhRVZtZDJSUVlrWmpSV05zWWxWalZHVnBaMk5uYUdkV2FGUm9TV05GWmtwb2JHUmFZa1JvVm1SV1pUaG9VbUpqWWpCamVHSlNaMlZqU0dWQ1pGZGtaR0ZCWkRsa2NtaEJaRVpsUldkc1prVm9NR2hGWWpKbVZXWXdZekJtZUdGS1lVSm9aR2RqWVZaa1ZHWnNZMFpuU0dKQ1prbG5VV0psWTJ0bldtZzFhRkZvVkdadllsUmlUbWRFWkhkblJXWlZZVzVvUm1FNFkxUmtlR1k1WVZsblJHRjRZMWxqTjJOTllVUmlWV1p4WmtaaFIyUmpZbEZqUm1WRlkzZG9ibVpUWTJ4bmEyVmpaRVpqTVdJNGFIaGxSbVJCWkVWaWNXSk1ZMU5vUW1Kd2FHUmxVMmRCWkdOa1RXaHJaV3RsZFdoSFlVSm9ZMlZRWmxWalFtRjRZVVJuWkdGQ1ptaG9kMkpSWmxoaVVtRlNaVk5uYTJRMVpURmhSV2hZWVU1aVRXVlVaRzVoWjJGbllsaG9hV1JCWjBSallXTjNhRUZpV1dkalkxRmhPR1JtWm1WbFFtZGFZVWRuVkdSdGFIQmtWR2RIWlZKa1RtSjNaRU5tTVdKc1pWZG1SV2R1WjNCblNHVmFhRVpvZEdkMVlWTm5SR0pqWm5SblIyZFdZekJpTDJSWFptaG1PV1ZPWTBKbFJXZDBZakJuVDJocGFEaG5hbWRMWjJkbWEyRm9aVVpoYTJOQ1kyMWtaR0ZWWjI5alVXZFZaR3RtVVdKTVltTmlSbVp3WkVOb1ltVXlaa3BtYldKa1lXaGpVV0lyWmxKa2FXVmpZMk5tVkdoQ1pUbGpaR2RUWlZabGVHZElhRkZoTTJaUmFGbG9ZMmRGWmtabE1HaFZZMVZsY0dWUFpHUm5VbVpHWkhwbFZHaEZhSFJsTkdKUVlsWmxOR2huWWtGak1tSnpaMEZsU0daWFpIQmtjMk5GWnpOamFHZFVaRlJuTW1WU1pYRm9WV0Y0Wkd4aVQyWlhhR2RpZEdkYVoxWmlhR2RLWVRablVtWXlaRkppUW1aTFpFSmtPR2R4WkU5aGFHTTVaMlJqVUdGc1pVMW9aR0ZFWVVKbVJXUkRZbVptVjJJMFpIUmxWMk5YWnpsalIyRmFZWGhqV1dSVFoxUm1TR2RXYUV0alJXTkdaMGxpVG1WVVpWaGlRbVZUWlZGb1EyTkZZek5pUzJkNWFIUmtVbVZKYUVWbWVHaDZZa1ZvVm1SR1pVNWpRbUpTWlVKalJtUkRaSGxvV1dKNVowZGtRMk5TWjBsaVdHZHNaVVpsUzJWVVpXNWxWV0ZTWldOaE1HVjRZVkpoWldSSVkwSmlWMkZrWlVabGMyaHFaVUZpUm1WemFHMWtVbUpzWnpCak9XVkNaa1ZvT0doUllVMWtkMlpPWldOaVpHZHBaa3BuV21WR1kyZG9VV0ZoWTJaaVZXVlZZVE5uUTJKRVkxRm5VR0ZhWW01aGEyUkxhRkpoYW1GYVpVbGhWV0ZCWW1oaldHaEJaRzVoVVdacVpFbGplV05CWVRka1VtUnBaRlpqVkdGRlkyZGhNV1l4WmtKa1JXZFZZMlptUW1WcmFEUmhhV05ZWkZWb2RHRXdZVk5vUjJaYVkzQmlSbUZJYUVwaFQySmpaM2huUW1WTlkxUmtWbU5GWkVGb1ZXVXdaalZtYUdWYVpVSm9hR1IxWlZGa1UyZENabGxuV1dGRll6Vm5NV1ZGWWxob1RtZE5aMVZqV0dkb1kzZGxWbUp1WVZGa1VHUmhZM2RoV21oallVbGpkMkZzWTBWbVpXZENZakJqUzJOTllqSmhiMk5vWmxkaFJtZ3dZak5vVkdScVpYZG5SV0pSWTBSb1ZXUldZV0ppUldaYVkzTm5SMk5UWXpCamFtZEVaMmhuV21GNFlsaGpSV1U0YUV0alZHSkNaSE5pZUdoSlpVTmxTbVI2WlVsb2FHSk5aVEJsVVdkb2FFbG9RMmRQWjJoaE5HSlJZVVZsUVdORlkweG1VR1ZvYURoa1JtVk1ZMnBoV1dGMllsQmtNV1JHWkRGbFVtRXlZbWRoTm1GVVowVmtNV0ZTWTFOb1VtaFdaRTlqWVdoWVkxSmtSbVJYWW10b1JtUXdaVlZrVldGd1lVOWxaR1JTWWtaaGVtRkRZbWRtVVdjeVpVMW5kMkZKWnpsb1VXWkRhRlpsVTJKUlkxaGphMlJUWVVobE0yRm5ZVUpqVVdZeVpsRm5hbWhZWW5ob2JHWlhZV1ZtVVdaelkwTm9abVJDWTBwbE5tTlNaakpuVW1GQ2FHSmxhMlZ3WTJ0bVpXaFZaWFJoUjJST1pVVmpiR2RKYUVoaU1XSmtZbGRpWm1ORloxSm9NbUZqWkRKak9XUkhaVnBsZUdkWlkxTm5WR2RJWmxaalMyZEZZa1puU1doR1prRm5lV05LWmxSbFZHUnJaRlptYVdOYVltMW1hMmhWYUdObWEyWTFabnBuUldkRlpIaGpUbVZWWTFWa2EyWkdZbFJrYm1Oa1puQmpSMkpEWmtwbGNtRmtZVVpoUm1OTFpsUm1ibVJWWkZKa1kyWXdaWGhpVW1ObFpFaGlRbWhYWVdSbFFXVTVZekJrVldOc1pYaGhOV2RGWW1oaE9XWTBZa0ZrVldGYVprOW5ZV1ZzWkUxaVdtVkZaek5oUVdGTVpWZG9WbVJaWjFOblpXVnJabVJvYTJaUlpWZGlOV1JSWjFwbFEyZzRaRVZrV0dKVVlsVmlaR2hFWjFWbU1HVlpaMU5qTW1ac1puVmtVR2d4WW14bWRtVlNhRzFtWTJkWFlrVmlhMmQ0WkRGa1UyTm9aRUptVTJaU1kwRmlkR2QzWkZkbWJHTXhZblpvV1dKRVoxVm9PV05TWW1waGMyVkJZVTVvUW1GS1lrMW9WV0pGWlhoa1NtUlJZVkprWTJJMVkwMW9WbUpqWlRKbFVXWlVaRVpsTjJWVFltdG5OV1V4WVVWaldHWk9aMDFqVldKWVpHaG1kMmhXWVc1bVVXTlFabUZvTVdKSlkxVm1ZMlJXWW10alZHRk5hRVpqYzJaaVkyRmlSMmR2WWtKb1JXZENaekJtTW1aUmFHaG1WV0poWjBkbmFtaE9aVXhuV21oQloxSmlibUpaWkVkb1VtWTFaRk5oZUdkU1ozaGtTR2RTWmpGbVRtSkhhRlpvV21Fd1oySmpibU5hWW5wb1ltVXdabHBoT1dWR1pXeG1jR0pGWjBsaVZXTlpabEZoUVdWRll6Qm5SbUpPWjJoblRXWlBaMGxuTW1adlluWmpXV1JFWVRWbGVXUlVaRzVoVFdOUlpWUmlSV1l4WmxKblUyWlNaMVpsVDJOaFpGaG5VV0paYUdObFJtTjBhREJoUjJkVlprbGpZV0ZsWlZKaFJXUm9ZMUpvV0dSMFlUUmhZMmhHWmxwbE1HRkVaVEprZEdGVFlVWm1TR0pHYUVkb1IyaHRaMDVrTldWVWFESmxVbUZ4WlZWamVHRnJZMVJqWTJOQlluTmlSV0ptWVVKalNtZzJhRkprTW1SU1kwSm1ZbU5yWVhCbmEyRlFaWGhsTldkaFprMWthMlJzWVZWb1FXTnNaR1JvVjJOTmFHMW1XV0ZwWkdaaE1tVTRZbFZrWW1Sb1lWcGtTbUphYUc1alZtZExaVVZpUm1oS1pFVm9RMkV6WTBKa1lXWlJhRzFqT0dSeWFFbGlSMkZyWW1OaVpXWm5aemxrTjJWUloydGxWbVJDWWxWaVZXUkdaMEprVkdKdVlWSm1NR05WWmtobVoyUldabVZvUm1OR1kyRmpWR1J0WlhOaFVtWkphRlZuZUdOUFkyVmlSMlpDWVZkb1ltWm5ZVGxpTjJoVmFHdGlhR1o0YUVobGVHSnpabkZsVjJGcmFGcGlkR05hWkd4alRXWlpZbGhvV0dVMVp5OWhTV0ZEWlZwbk0yaElhR3BqWjJoR1lVMWhlR0ozWW5KbFNHRlJabGxoTkdkWlpGRm1SbWQwWldOamFtYzVZblJvV0dnelp6Rm1SV1prWVc1a1RtTjJZMUpoYldaaloxZGxSV0pyWlhob01XUlRaR2hpUW1aVFpVRm5hMlJSWVdsalYyTnJaMjlqTldKSlpIcGxVbU53WWxobVdHUktZMVJtWTJWM1prSmpXR05VWjFGbFRtSkthRU5pTUdZMFoyZG1ZbVo0Wm1oa04yaFRabXBtTVdOWllWTm9hR2h2WjA5a1YySkJZelZuVFdWVVpraG5hR0puWmxSbVZtVTBabEJrWVdVeFlrbG1WV2RqWmxWb1dXWlVaMlZsUm1ST1lWQmpUbVpwWkRoblNHVlVaa1ZsUldNclkwTmlkMlF4WTA1aFQyWklaM0JpU0dOYVlVVmxSbU4xWTFOaWJXSlNZalZoUm1GcVl6Vm5lR05JWjFKbk1XaE9Za2RvVm1kYVp6QmtZbVpxWkVGa2JXZEpZbEZvVldKNloxaGtNV1l3WkVObVpHRlJaMWxpV1daQ1pXdGtaMkZNYUVsbGJHVmFhRU5qU21OdFluUm1iV05OWkdwb05XVjVabFJtYm1STllsRmlWR1JGWkRGbFVtRlRZVkpvVm1KUFprbGpSR1JKWkZsa1pXRkhaSFJoTUdoVmFGVmpjR0pQWjJSalVtUkdZWHBoVkdSR1lVWmhOR2RqWmtab1dtYzRZVUpuTW1KclpVSm5VV0pEWVUxaVVHSllZVlJtT1doU1kxUmlNbU5XWXpOblZXVXdhREZvUzJkSlkwVm5OR1JYWjBWaFFtVkpaWHBqVW1aNlptZG5aR1JpWW10amFHUnRaMlZsVm1SWmFFcGhZbVpDWXpGalZXZFNZVUprYkdaUlpXTmliV0UxWnl0a1QyWnRZamxoWW1kYVozaG9VbVJJWmtka1JHZE9aVk5pUldOc1pIUmhTV0ZKYUZobFFtaGhhRkZoYldjNVlXbGxXbVp0Wld0bVZXZGpZbXRoTldkNmFFVmhSV1l3WWtSb1dHSjNZMEppUjJWTFkzbG5ZMkl6WjFaamVtRlJaRWxuVDJob1pscG5RMmhDYUROamQyZFpaMWRrVldkNFkxSmhaV2hJWkVKbFYySmtZMEZoT1dkeVlWVmphR1pTYURSbFltVkNhRTVrTkdKVlp6Qm9PV2RyWW1GaGJHaE5ZMXBoUldNemFFRm1UR1ZYWVZGblNtRmhaRXRpUVdWblpYcGxVV05UYUVGblVHRk5aak5sYTJjdllWUm1VMmhHWVZsbFpXZENaVGxqVEdoSFpWTmxXbVp0WkdOaldHVkZZM0ZtUTJaRFlWSm9XbVZXWVdkbVZXRTNaMFJoVW1kS1psTm9RMlJXYURSamFtVkVaV3RuU1dkMFpFcGhNbWhaWm05blJtWkRaRkZsVUdaUVlqRmhhMmRKWjFSaVVXZEpZV1JtVW1OM1lXTm9ibUZOWjNobloyZ3hZMFJtZW1SallXVm9SR2RuYUdOaE4yTldaMjVqVW1KR1lWTm1iR1ZLWVhkaVZtaHVhRkZrVUdWaFl6Rm1TV0pWYUdObVZXWlpZMVJtVEdKb2FFbGlaR1phYUVObU9XWlVZMEpoUW1GT1pHZGlRMkozWVZaa1YyWldZbTVpU1dSV1pHRmxSV1JGYUc1aFVXUXpZamxvVkdkVFpIaG9VbVI0WWtoaVVtTXhaVTVoUjJOV1oxcGxNR1ppWW1sa1NtUjZZMk5tYTJWWllYWm9TR1ZyWmxwb1FXSmtZVkZvT0dkYVpWTmxWMk0wWkV4aVkyUkdaWEJrUTJaaVp6SmlTbUp0WjJGb1VtaFNaWGxpUjJORVpVcGxRMkZVWTBGalNtUlNaVlpoUW1kVlptRmxXbVo1WWs1aVMyZFBaMUpuVldKNFkxZG9VbUZvWjBOblpHaFdhR2huTm1WV1lUTmtkR1UwWm1Oa1JtRmFZakJqUkdNeVpYUmpVMmhHWlVoaVJtSkhabEZpVkdnd1owaGpSMlJxWmxsamEySlZaakZuV1doVWFHTmhVbVphWlVWbFZtZHNaMlJsTm1aUloxZG5TbVpDWTFwbmFHUTFZV3RrV21ORlozUm1RV1ZtWnpCaE5XWlNaVUpvUm1WdlpWUm9abUZJWkRWaE5tRmpaSGxrUW1GUVoySm1hR2R2YUZOaVIyUkhaRFZsWjJORlowWm1TbVpGWVVOb00yUkNZV0ZoVVdWdFp6aG1MMlZVYUVkaWEyVlZabU5tYTJFMVpYcGlSV1JGWlhoblRtUkdabmhqZUdGaVowUmhWR1l3WnpsalZtWjZZelZoUW1WT2FERm9hMkZsYUZGbmJtVldhRVJvWldoclluZG1TMkpWWlc1bFFtWlhhR1JoUVdVNVlYSm9WV2hvWmxKaWVHUlNZMmhrVFdkMVprVmhhR0l4Wm10b1NXVXhaVTFuUldWRlkzbGlTV1JHYUVaalVtUk9ZbU5qVUdkU1lrMWxjMmRSWWxobFNtSkxZMlJuU0dOc1psVmtSbWRIWmtWaFpHVkNhREJpTUdKS1psWmhhV05vWlhWa1RHVXpZWE5vT1doVFpFTmpkR2RVWmxobFFXWnpZbWhqUVdSb1pHeG1TbWRpWVdkb2RHaDNZbGRqYTJkS1lYWmpXV050WTFwbWNHVkdZMGhtU1daaGFHTm1kMll4WlUxaVFtaFdaMnRrWkdSSFlsVm9OR0puWTJablVXUk9aR0ZtVVdaWVpGSmhVbUZUWkd0bk5XSXhaVVZoV0dGT1prMW1WV2RVWWpSbEwyVkNZVWhsVVdKSVoxQmxVbUpPYUVka1kyRlJaMDFoVkdKYVpsWmlUbVJtYUdaaE1taHZaMkZvUjJkUlpqRmtkMmhVWld0a1NtUlhaRlpsTTJkd2FFMWtaV1JWYUVabEwyUlJaREprVVdkMFlVMW5SbWhGWjAxbFNHVlJhRUptVG1oRFlqQm5UbVJvWVdKaGJtZENZWHBqVUdKVVlqQm1hV1poWjNkbmJHUnRaMlJoVldGdlpsRm9WV0ZyWjFGbFRHSmpaRVpsY0daRFptSmtlbVpCWjJwaVVHWlZaMFZoWjJkQlowaGtUbUpGYUZaa01tRmtZbEpuVTJKU1kxWm1UMmRoWTFob1VXRlphR05qUW1kNFltVmtWV1pWWlhCaFQyWmtZbEptUm1GNllWUmtSbU5GWkN0b1NtZFNhR2RsTTJaWFpYbG1TV05rWkZkaGJtaEZaMWRtUjJoNVlYaG1abU5VWVhwa1dtRnRaMVZvTVdkQllXWm1ZMk5GWXpWa1VXUldaMnRtYkdSUlkxSm9NbVpTWkVKa1ltaHJZWEJoYTJKbFpsVm5jMk5WWm1ObVZtZFNhR0ppVkdSU1pFWm1aV0pLWVcxaFFXWXdaMHRoYW1kellVUmxRMkl4Wms1a1kySkRabmxvUldKRFowaG5SbWRLWmxWa1EyTXlZalZsWVdKRFpqSmhPR0lyWTA5b2JXSnNaRWRtWm1OQmFIZG9jV1JTWWtGbGEyTm9hRVpsUVdGa1oxTmhSMk5wWmtaa01HWkNhRWhsUVdSSlkyWm5WbVJvWVdka1ZHSnVaRlZqVW1oallUQmtlR2RTYUdWbFNHSkNZbGRqWkdSQlpqbGtjbVZDWjJ4amQyRnFaME5sVldWU1pUUmtTR1JSWW05b2VtVmhZV2xtUm1SWlpWaG1WR1prWTA5alVHVkJaMUpvUVdOT1oxSmlWbUp6YUZGbk1taHJaVVpoU1dacVlUaG1XV1JWWkZOb1ZXZGhaa2hqVVdWU1lVdG1WbWhxWjNObk4ySkphRzVoVFdObllrRmlSMkZrWjFWa1dHRlNaR3RoTjJkRVltdGxUbVpSWVZSaVVtZENZV0ZpVjJkcllrcGxkbUpaWTIxbVdtRndaa1puU0dGS1lrOWhZMkl4Wld0blMySlVhRlptYTJGaVpVZG9kMk4zWVhkbVNXaEdZakJrWTJOQ1pVUmxiMmRYWmtobloyTmFZekZuUkdaWVlVMWpSbWRWWmxob1RtVjNZMWhvYW1SRloxQm1UbUozWVRSbFZXaFpabFZoT0dSaFpWVmxiR0pPWVZCbldtZEhZM0JrVkdGSFoxSm9UbUozYUVObk1XZHNaRmRvUldGcFpqUm5VR2RPWkdkbU5HSTFhRk5sYVdOdllqaG1TR1pDWjFGb1JHVllaRVpuVFdaTFpWaGxSR2ROWm0xalVHUkVZMnRtYUdKYVpUQmxVbWhuWlZkbmJHWmpaVU5rVFdab1lqVmhXV1ZXWlZWblVtRkRZMGxtTVdkdlprNWlUMlJxWkZwb2JXVktabXhpU21oNVlrUmxSR2g0WWtaaVFXaG5aR3RpUTJKVGFIaGtlR0pXWjFGbk0yWlJaVmxuWTJGRllVWmlNR0pWYUZWa2NHSlBZbVJoVW1aRloyaG1RMmhSWjFWamRHWkpaMmhuYUdnd1prSmhNR0pHWjFOaFJtZElhRVpvUjJKRlpqTm9hR0pVWlZSa01tTlNaSEZtVldaNFoydG1ZbVpKWjJka2RHSkZZbVpsUW1WS1lUWm9VbWN5WjFKalFtRmlabXRvY0docloyVmlWV2R6WWxWa1kySlNaekJpWkdGSFlqRmtXV0ptWjAxb1IyUTFaMjFqWTJZelpVcGhZbVpsWm1obVdtVmlZbFJuU0daT1lrMW1SV1ZCWVZGa1RHSlJhR3BrVW1WaFkxVm9iV1U1Wnk5bVpXUXpaMUZpVldGT1l6Sm9VbVI2WTBWb1JXSjRaRTVvVldOVllXdGlWbUpVWTIxbGJHTXdaRWRrU0daQ1prSm1aR2RHWVVabFMySlZZVmhoVm1kbVpVNWthR0YwWTFKbVJHWlVabXRoV1dWSlpFSmtZMk5MYUVGbVJXUlpabmRuU0dSNFpuTm5jV1JYWW0xaVZtTnJaR0ZtYkdWTlpscG9SV2N6WVVGa1RHRlhZbFpqV1dOVFltVm1hMmhrYUd0a1VXUlhZVFZtUzJKbVoyNWhhMlZrWkZkamVtWm9hRnBqU0dOV1pqQm5XbVpUWmpKamJHRjZaV1JoYW1WYVlrWmxVbU50WldOblYyWkZZbXRrZUdReGFGTmxhR05DYUZOa1VtUkJablJoZDJOWFptdGhTbU4yWkZsaWJtaHNaSEJsVjJkcVlXTmlXbWRqWXpKbFZXRkdaMEZrZDJkV1pGSmlaR0pDWlhkb04ySk9abFZqUm1VMFowVmhNMkZvWmxKbFFXRXdZbVJsWm1KRlkxaG1UbUpOWVZWbFdHTm9ZWGRtVm1WdWFGRmxVR1ZoWlRGbVNXZFZaV05rVldOWllWUmtaV0ZGWld4bFVHSkxZbWxvT0daRlkwZGxWMlJaWkRWblVtZFJhREZoVDJKalpIbG9aMmRXWjBwaFVtaG9ZbTFvUjJSSFlXaGlOV1JCYUdobmFHTjRhRmRvUW1OU1lVVmtSbVpZWm5oa01HSmlaMjVvV21aNlltSmhNR05hWjI1bVJtWm9aMHBrVFdka1oxVmljR05sWVZoa1JHRkNZWGxuUVdaRWFEaGpiV1ZGWWtGbVRXTlZaVWRtTTJSVmFFeG9UV0pSWlVKaGJHSlFaRVJsTUdNclprOW9NbWRHWm10allXRllaVkZqV1doamFFVmtSbVl3WkZWbVZXSndZVTlrWkdoU1kwWm1lbWhVWlVaalJtWnVaR05rUm1NMVpqaGxWMmN5WkhSaVVHRkdaRU5sVG1kUWFFaGtNMmhvWldKaVIyRXlabTlpVm1GTVpFVmliR1ZDWmxCak1XZzRaVmRqUzJKWGFERm1ObVpYWlcxaFVXWlFZVmxpUW1KdmFESm9UbVpvWWpsbVltVktaMVZtVW1WT1kwTmxRbWRDYUdabVdHRnRaelZsTW1SalpqSmxPV05IWmxwaGVHRlpaMU5oVkdkSWFGWmxTMmhGWjBab1NtVkZaRVZtV0doQ1pWTmtSbVZ0YURsaUwySmFZV2xuYjJaamFFcGthMlZLWkhwbFVXUnJhRlpoUldKWVoxZGhUV0ZXWWxSb2JXWnNZekJuUjJoSVpVSmpRbVZrWVVaaVJtSkxaVlJqYm1GV1kwWmlWMmhWYUhoaFVtSmxaMGhuUW1SWFlXUmlRV2c1WlhKaFZXZG9ZbEprTkdkWVlsUmtiR0UwWlZWaU1HWTVaMnRuWVdoc1lVMW9XbWRGWkhsa01HTm9ZVmRsVm1WWlpGTm9aV1ZyWm1SbmEyZFJZVmRuTkdWTlpFMW9WR1pqWjBsbVVXVkVhR2hrVTJSVllqQmhNV2RWWlZobGFXaENZMmxtWkdOcFprWmpiV2hTWjJwbmQyUTRZVVZuYTJoNFpqRmpVMlpvWkVKaFUyRlNaVUZtZEdWM1oxZG5aMmR6WlhCbFdXTnRZVFJrYm1GSFoycG5jMlprWTBWalZXTlZZa3RqUTJONGFGRmxZbVpJWWxKbWVHaG5aMlpvVW1KblpuSmpZV2N6WmxKblVtUlRZV3RsTldReGFFVmxXR1ZPWlUxaVZXZFlaR2hqZDJOV1pXbG5TbWhQWVU5aFZtRktabVJvWTJSV1luTm9WR2RoWjBaaFRXWlVaVnBtUkdoT1ltSm5VMlI0WVRCaE9HaFVhR2htWTJOU1kxSm1hbVJLWjA5alptVXlablJuZFdaVFpHMW5VbVExWjFOb2VHWlNaWGhuU0dkU1p6RmxUbWRIWmxabFdXRnRaMHRoZVdoSlpXMWlVR1JSWW1oaGJtRklZV3RvV21aTllXRm1SV0p3YUZsaFYyZG9ZMEZqU0dkalprSm9UbWRNWjFwbmJXVTFaMjFuWldoU1lsSmpkbU5WYURKaU5HVlJZa2RuUldWTlpHUm5SR2hHWm5Oa1NtaFFaMVJsZDJWWlptSm5NR2RGWW1kalZXZFdZa0ppVDJKbVlWVmpUbVE1WWtSbWVHWTBaRzltUzJSV2FEUm1aMkpCWmpKaWRHaERZVWRrU0daR1psZG9TR016WTJkbFlXaFNZMjFqYUdkeFprSmtlR05CWTBsalYyWm5ZM1JoV21kV1ptaG5TbUkyYUZKaE1tTlNZVUpuWW1GclltOWtOV0ZWYURCa2MyaFZaMk5sVW1jd1lXUmhWR1ZTWkd4alYyWmtZMGRvTkdjdlpVNWpWMlE1WWs5aVRtUlNaVGhsVTJkR1l6RmlPV1ZMWlVWbVJtRktaVVZpUTJFelpFSmtZV2hSWlcxa09XSnBZVnBoYldoc1oyUmlUbUpGWVRWaE4yTlBhR3RsZUdoT2FGVm5WV1JyWmxab1ZHRnRaR3hqTUdKSFpraGtRbVJDWldSaVJtVkdZa3RpVW1WdWFHUmtSV2hRYUZGbFoyTlZabEJsYW1oclkxbGpUV05WWkhSbGNHaFZabWhpVm1aelpsSmxhMk5qWW1oa1FXWjNabTloY21kTVlVWm5UbVUwWVZGalUySktZVXRvUVdGRVpGSmtTR0ZRWmtGaVJXSm9aMFZvTW1JMVpVMW1XV1ZzWWs1aVRHSkdZa2hoUldGa1lraG9WV0l3WTFwa1ZtUnVhRkppZFdKa1lXNW1UbUYyWTFKaWJXVmpaVmRqVVdaRmFFbGxNMlJJYURGbFdXaFZZa0ZuVm1kc1pYZGxSV2QzWVhkbk9HWk9hR2xqWTJKdVpWWmplbWhqWTBKa1RtZFNhRUZuZEdoSVpuZG9UV2RKWkZSb1EyVjNZVGhvVFdkc1pEUm1NV05GWXpOb01XVlNZMFppYUdoS1pHWm5SV05ZWkU1aVRXWlZZbGhuYUdoM1lWWm9ibVJSWmxCbFlXY3haMGxuVldKalpWVmpXV1ZTWlU1a1FtTlpaRUptU1dSNlpUUm5ZbUZIWkhoa1RXUTFhRkpoVm1oclpVVmhUMkpJWkhCa1NHSmFhRVZoUm1KMVoxTmliV1JTWXpWaFUyVjRaVkpsZUdWSVoxSmtVbVZ1WWtkblZtSmFaVEJrWW1adWFGcG1lbUZpWWpCbldtVnVaRVpuYUdoS1lrMW9aR2hWWVhCblEyWkdabmhqUW1kbFpFbGxhR0ZTWVVObFltaFRaWGRrZW1OS1owWmtXV1l6YUVoaFNHWkZaVkZtVkdkV1owSm5VbVZJYUZWbmQyTmxaMHhvUkdWMFltVm1ZMmRDWWs1aU5tUklabEZoT0dWQlpFMWhhMlJWWmpkbFZHWkJZVEJvYTJkallrUmpNV1U0WjFobVYySlZabVZrVldKVVlUaG5RbU5TWVhwaVFtWmhaVnBoVjJoU1pYRm5WV1o0WW10bVZHWmpaRUZpZEdGYVpGWm1hR2hLWXpab1VtRXlaRkppUW1oaVltdGxjR0kzYUdWbVVXUk5abU5sU21oU1prVmhaR2RZWTFKb1FtYzRaMlJvUjJVMVlqSm9ZMmN5WWpsalIySmFaWGhqV1dKVFpGUmpTR1JXYUV0alJXRkdZa3BoUldORFpESm9jR1ZoWjBGaFYyaGpaVEprWVdWdFlXeG5SMk5sWXpGaFZtTmFaRVZoUldGNFprNWhWV2RWWW10aVZtZFVZbTFsYkdFd2FFZGhTR0ZDWTBKblVHVlNaV1JsUzJKU1pXNWpaR2g2WVVwbVoyaHZaMWhuVUdOVGFFcGxWV2RrYUVKbFNtRXlaMVJuZUdkUlkycGxVMlZGWW1OamFHWkJZbmRoY0dOclpHSmlSbU5WWTFwblJtTXpZVkZsUkdKRFpURmthR1pYWVU5aWVHTk5aR3hpVTJWSFkyUmxTMkpPWVdwbWQyWm1ZMUZsVTJOT1psUmhTR1pSWnpSbVVtZEJaMjVrYUdWMVlrcGxTR2d3WTNKb1FtZDZhRTVvV0dOSFpURm9aR2htWmxOaWFHSkNaRk5rVW1aQlozUm5kMlZYWld0b1NtSjJaVmxqYW1OMFpFUm1SbUZJWWtwa1QyTmpabmhqUW1KTlpGUm5WbVpHWlVwalJtSlNZVzlpYUdKS2FHeG5ZMmh1WjFGaFZHVnZaMVZtU0dOVlp6UmxRbWRUWkVOblRXUktZazVqUTJWdmFHbG5SMlZUWkZsaFNHaFJZMVpoU1dKVlkyTm9WV1ZaWTFSbFpXVkdZMDVpVUdGYVowZGhjR1ZVWlVkb1VtWkZZVmRuVVdablozTmpSbUpTWjI1a2IyWkhZVTVsWjJGWlpEZGtRbVY1WmtWak0yTklZM2hoVVdZNFpWTmpSV1kwWmxwa1IyaFNaRkZvZUdOaVlXcG9aR2g2WlZCblFtRkpaekZuV0dZeFpuZGhUR2hsWlZWa2NHaDVaa0ptZDJGS1pVNW5UbU5SWW1obFQyUmlZM2RsVFdJd1kwOWpNV05WWVhKaVRHaERaMXBpVjJGRFkyZGlaMlJFWWxKbVVtTlZaSFpsVDJWNVpWcGtXbUZMWlZWa01XSXdaMGhqYUdob1pVOWlUbUZGWWsxa2FHVkVZMUZvYUdjeFkxQmhRbVU0Wmk5alUyUnRaWE5vWkdoV1kycGhjMmhFWVZWaVEyaDRabVJuVkdKVlp6Vm1jV0pWWm5obWEyVlVhR05sUVdoMFlWcG5WbWRvWjBwb05tWlVZVzVuT1dkeVptSmlhMkZ3Wld0bFpXSlZaWE5sVldoalpsSmpNV2RCWkZwbWVHUnNZMWRvWkdaSFlqVm5NbUpqWWpKb09XRkhaa2xsVldWT1ltTmlSR1Y1WjBWalJHSllZM2htZUdORlpsVm9ibUZuWVU5alUyVXlaamhoTldSVVowZG5hMlZWWkdOaWEyTTFaWHBuUldkRlkzaGpUbU5WWkZWbGJHUmpZVU5oUjJkc1lqaGhWR05JWWtKblptRmhZVlpvUldGR1pWSmtibUozWVZsalYyWlZhSGhsVW1GbFlraGpRbVZYWldSb1FXUTVZWEptVldSb1lsSmtlR0pTYUd0bVkyWjNaRUZuVVdaQlpIcGtZV0pvWmpGa1kySlNhRWhoUW1ZMVlrZG5RbVZvYUZaalVHUjVaMGxrTW1WRllubGpSV1paWjJKalJtSk9hRXhsUm1SSVkwVmpaR0ZJWTFWbE1HRmFZbFpsYm1kU1pYVmtaR051WVU1bmRtaFNaRzFoVm1jelkxSm9hR05uWkhkblFtSXdaa0ZrUjJGU2FFWm9PR2d2WTFkbloyVk5ZV3BoVEdkcFpXdGhjV05XWjFOb1dXZE1aR05oTTJoSlpWcG1RMmg0WVdOa1RXTlNaakJuTkdOc1pFNW1WV0p2WnpOalFtSkRabHBpVW1KSWFHZGhXV013WjFoaE0yVk5Za0poUldGRFpVRm5OV1pIWlhsalJtSkRaMkZuZDJGR1oyUmhTMlYzWmsxaVNtWmxaRVZoVFdGWVlscGliV0p3YUZsblRXWjRZMDVtZDJGRFp6RmtiR1pYWkVWaWJtVndhRWhqV21aRlpFWmlkV2hUWVcxaVVtUTFZVk5vZUdSUlp5dG9SbWhTWTFKb1JHTlVZbEpvYTJGSVpFOW9hV0ZSWWpaaFNXTlJhRVpsZG1aQ1lYZGhVbWRHWjJSaFZXRkZaRFpsVldkclpWRm9UR1JqWWtab2NHRkRabUptTW1OS1pHMWlZV1ZTWTFKb2VXRlVZVzVsVFdKUmFGUmlSV2M1YUZKalEyZ3dZM2RrWVdWTVprTmhZMlJoWjFka2EyVkdaREJuVldaVlpYQmhUMmhrWlZKa1JtZDZaRlJpUm1oR1p6UmhZMk5HWlRsbGRtZEtZbGRsZEdGVFkwWm1TR1ZHWlVkaVJXSXpaR2htVkdkVVpqSmpVV0kwWVVabWEyTXhaVWRrU1dGclkxWmxXbU5TWTJob1NXaHRZbEptZW1oQ1oyRm1VbWRGWW5CbGEyTmxZbFZvYzJWVlptTm1VbU13WVdSalJXRkVZMDVqVjJoa1pFZGhOV2N5WTJOa01tSTVZa2RpV21VeFpVSm1TR0pCWVdwbFdXVmxaVmRoVW1jd1pFdGxRMlYzYURsblUySkdZbTFuV21ocFoxQm9WV0pOWTFWb1kyTnJZVFZpZW1KRlpVVmhlR0ZPWmxWblZXVnJaRlprU0dORFpIZG9aMmhVYUZOaFNXSlFZbVJqUm1OdlltVm9WR0Z1WWxGbFRXUmpaM2hsYUdkU1pXWm9ibVZhWmxkaFptWkdaWFJuY21GVVlYaGhVbUpvWlZSamVHSTVaalJvU0dSVlkwVm1iR1pLWm1oaE9XSlhhRlZqU0dKblkwRmlSR1JXWWpob1NtWlZZa1ZvWkdkcllsRmpWMmMxWWt0bFdtUklhR3hoVEdGVFlsWm5jMlZrWlVoblZXY3dhRnBrVm1odVlsSmpkV1prWm1wbFZXSTJhRU5vUTJKU2FFTmtWMk4zWjAxak4yUlRZMnhoVW1KaFpVVmlRV2RrWlhkb1EyUkZaM1JoZG1WUFpsVm9lR1J3YUVaaFNHWktZMDlqWTJGNFlrSm1UV1ZVYUZab1JtRktaMWhvUVdab1lYQmxabU5HWjFwbEsyRkRaRU5pWTJKNmFFaGpkMlJuWlhwb1ZtTkRZVVprUldkQ1lWaG5SbUkxWTFab2FXZGFaVXRpVUdWM1ptUm9SMlZRWXpCa1dtaElZbVJtYUdjNFpVdGhTMlpwWVRCaFNHZFZZVkZvYUdSaFpFTmpNV0ZzWmxkbFJXWnVhSEJrU0doYVpFVmpSbUYxWmxOaWFXY3daeTluVTJoNFpuaG1ZbVJJWVZKbU1XZE9aMGRrVm1SYVl6QmhZbWh1WlZwaWVtZGlZekJpV21SdVprWmtSV0ZqWWtOblRXUlJaamxrVjJWSGFIZGpjR2hQWVU1bVJtZG9aME5pWW1SdVl6bGtiV2RRWjFWb01HWnBZME5oZW1kNFkxZGhWR2hEYUhkbFJHSkhaREZpVVdGWVkwTm5lV05HWW1WbVRtWm5ZVkZqYldGVlpWVmtlR2hKWmxob2VHRkdZbnBpVkdkR1pFWmtOR1ZqWlVabldtWXdhRVJqTW1GMFpGTm1SbU5JWVUxblFXTlNaMnBoV1daUlowZGxlV2d3Wld4blNHUlNabk5vVkdaaVpWSm5XbWRhYUVGaWEyUnpaM0ZpUVdKcFkzTmpTR05pWm1sb2MyUXlaRXRpZDJWd1kwNWhSV2d3WldoalltaERaekZsZDJORloyVmphV0ZqYUd4bVFtSlRZVmxqUkdaTmFFSm5XV1ZWWVZOb2JHZzVhRXRsUldKR2FFcGlSV0ZEWlROblFtRmhZVkZoYldJNVkybG1XbWR0WTJ0b1kyTkZZM2hsZDJOb1lWVm1VbU5WWjNabFFtTkJaVGxoVkdoRFpucG1kR1EyWTFWaVUySk5aRE5sVUdGU1lWRm9aR0pTWW1sbFJXWlpaV05sZUdSQlowNW9aV0ZEYUZKaVYyWlFaRlZpUldjMGFFSm1iR0ZWWnk5blFtWldabGxpTTJGR1lWVm5PR0ZHWVU5blFXWkdaRmxtVTJGb1lVcGpaV1ZJWTNobFFtSllaMHRpUldFMVpVOWtVV2RYYURWaVMySmFZMGhpYkdGTVprWm1TR0ZGWVdSaVNHUlZaRkZtZW1OV1ptNWpVbVIxWTJSbWJtaE9ZWFpvVW1SdFoyTmpWMlJGWkd0b2VHVXhZMGRvUm1aVlprZGtSV2RXWW10aEsyZFhhR2hqV21Wb1prbGpSR1E0WlRsb1ZXTlNaVFJrVEdaUVlsWm9ZMkZaWjBKa1ZXZHdZMnBpUm1aVlpqVm9jR1JrWTBKaWFHWjNZVkZvV0daU1oxSmhVMkpyWkhkbGJXRlNaRk5qUldkR1kwaGplbVk1WVhsblZtTnVZbFZrVTJaaFpuZGhXbWRPWTBsbFVXWk9ZMk5vVUdGc1kwMWxZbVZhWlVka2VHaFdZVWRsVW1kelptdGtRMll3WjFKa1YyaEZhRWhsYUdaSVkySmxNR1JGWnpaaFVXSXpaamxsVkdOVFpIaG5VbWg0WkVob1VtRXhaRTVrUjJGV1pWcGpNR2RpWkdsa1FXaDVaMUJpVldGWmFIVmhSbVZuWnpsaFRXWkpZVlZtVW1kalowWmpkMlp3WlUxb1NtTkNZa3BvV21OU1pGZG5TbVZ0WW1GbFVtSlNaWGxuVkdGdVowMWxVV2hVYUVWaU1HZFpZVVJpZUdaV1pVZGlaV1JZWjFGblJtTmlhRlpsZUdjd1lrZGtSV0pPYUU5bVNtY3hZbEZuYm1OSFpsRmtUV0l5WldOaVJXVmFhSFpuU21KWFozUm5VMlJHWmtoblJtWkhZa1ZvTTJWb1pGUm1WR0l5WTFGb2MyZElaRVZtYzJoVVpHVmpSbUl3WmxsalFtTkNaa2xoTDJGU1pETm1iR2RDWW1Kb01XTjBaaTlpWldaV1pVRmpWV1JsWVVSbVkyVmtaMVJrVW1oc1lsZGlaR05IWXpWb01tRmpZVEppT1doSGFGcG9lR0phWmtKaVIyWjZaSGRrWldoVlpYaGxjR1JGYUVGbmVXZEtZVlJsVVdKcVpGSm5TV0phYUcxaWEyTlZabU5oYTJnMVpIcG5SV05GYUhobFRtTlZaRlZtYTJkV2FGUmtiV1ZyWWpOb1YyaFRaRTFoUldOa1kwWmlUV1pNWTBoaFZHRmFaRmxrVDJWcllqVmxUR0ZWWkc1b1FtaFhZV1JvUVdRNVozSmxWV1ZvWjFKbmVHUlNaR2hrVG1FMFpWVmlNR001WW10bVMyVlNZMHBpUzJkV2FHNWpRV2hLWmtaaVVtaGtZa2RqVFdGM1lXeG9NV05SYUROaVVtRm5aRnBpU0dGc1lVeGlSbU5JWlVWaFpHVklabFZuTUdkYVkxWmhibVpTWm5Wa1pHVnVZVTFoYzJkQ1kzcG1VbVZVWmtWb2EyUTBZak5sUVdneFpUUmxWR0pHYUd4aVNtaDVZbEZoUjJWb1puWmpXV0Z0WlZwaWNHWkdaa2htU21oUFltTmhlR1pDWlUxaFZHRldhRVptU21kR1pGVmxOV053Wmtwb2JHRXdZV3RtUm1aRFlWbGpabUZUWldkaFpHUjFaVTltTTJkT1lrMW9WV1pZWVdobGQyWldaMjVpVVdGUVlXRm9NV0ZKWlZWb1kyUlZhRmxtVkdKUFlYaGhTV1pqWTBsblYyVndZbEpoVkdoRlpXTm1NbVJGYURGbmRHSk5ZMDltU0dKd1kwaG5XbUZGWmtaa2RXaFRhRzFoVW1FMVlsTmxlR1JTWW5ob1NHVlNaVEZtVG1oWGFHaGpZMlp1WjB0aE0yRmFaWGhvVDJOb1lVbGphR2hIWlhkaWNHWlBZMkpsTW1SQmFGRmxWV1JyWlZGalRHVmphRVpuY0dSRFoySmlNbVpLWkcxaFlXSlNZMUpqZVdWVVlXcG5RbWhTWTBob2QyUm9hRkprU0dneGFHOWpTR2RNYUZobFVXTkpaR0ZrYldkMFlUQmhWV0ZWWkhCblQyRmthRkprUm1KNlpWUmlSbU5HWmpSa1kyaEdZVnBpTUdORVp6SmhkR2RUWlZKaWFtTlJZbE5oVW1WcFptOW9aR1ZVYUhkaWVHRnBZVUpsZUdGQlpXUmxVR2hGWkRSbVdHSkZhRlZtV1daNVlWaGxSV0UxWmtKaFltVnJaWEJpYTJObFpGVm9jMmhWWW1Oa1VtTXdabVJuVkdGU1lteG9WMkprWWtOa01HWXpaVWxsUTJad1owZGtXbVpWWkU1bFVtRklhREpvWkdaSllrTm5ibWRvYUVWaVEyVXpaVUppWVdGUloyMW5PV1pwWWxwbWJXSnJaRlZqWTJScllqVmplbVpGWjBGbk9HVk5aMEZqWjJWM1kxWmhWR2RFWkhkaU0yaFRZak5rTVdKVVpHUmthMlIwWldka1ZHRnVZbFZsVW1Sall6Qm5lR0pTWW1WaVNHaENaRmRrWkdGQlpEbGljbVJWWm1oaVVXWjVaMEpuTUdOQlp6bG5WV1l3WmpCamVHRlFhR2hrVldSSlprSmtWR040WlU5bVYyUXdaSGRuTkdWbFpXdG5aR2hyYUZGbFYyTTFaa3RqV21KSVpXeGpUR0pHWVVobFJXUmtZMGhrVldNeFlXRm9SbVo1YUdObmNtZGthRzVuUldFMllVVm1hV1JGWkdKb1FXVXhZMjluTldoRVpIaG9TbWRKWkdKaVoyTjBaSGRrVjJocmFFcG5kbUZaWjIxb1dtWndaRVpqU0dkS1prOW5ZMko0WmtKa1RXUlVZVlpsUldoaVkxVm5RbU52WWpobVNtVnNaRnBsZDJKVlp6TmpVbVppWlZOaFoySmtaWFZqVDJjelkwNW1UV2hWWVZoa2FHSjNhRlpsYm1WUlpsQmhZV1F4YUVsbVZXZGpZbFZrV1dGVVpVOWtlR1JKWldOblNXVlhaWEJrVW1aVlkxWmpXV1Z2WVVObFZXSk9ZVGhpUldOdVpYQmlTR05hWjBWbVJtZDFaVk5pYldoU2FEVmxVMmg0WWxKamVHaElabEprTVdST1kwZGtVV1pSWm5oaFQyWnBaazFrYUdWSllWVmpXV2gxWWtabFoyUjRaMU5sWVdRd2FHOW5RbU5UWTFkaU5HWk1ZbU5tUm1od1pFTmtZbWd5WmtwaGJXUmhaMUpvVW1GNVoxUmlibU5OWlZGaVZHVkJaVFJsVVdKSFlXeGhRbVZQWjJGb2VtSmFaRnBrU1dkM2FGSmhhV2hTWjFWamFHRlZaMWhpZUdKR2FIcGtWR05HWkVaaE5HaGpZVVpqV21jd2FFUmlNbWQwYUZOb1JtVklaVVpsUjJkRlpqTmpaMkZDWTBOaWFtaEJaQzlqUVdkV1pXTmlWR1ZEWW1kalRXVk9ZMWhvZUdGM1lUSmxRV2hwWjI5aVIyVlBhR2RpU21FdllsVmhNR2R6WVZWaFkyZFNhREJpWkdSVVoxSmliR0ZYWm1Sb1IyYzFaVEpuWTJjeVp6bGhSMkpKWmpGb1RtZFZaa1JvVTJKQllVZGpVbVpGWkdoa2RXRkRaVE5vUW1aaFlsRmxiV001Wm1saFdtSnRZMnRsVldSalltdGtOV042WVVWbVJXUjRaRTVrVldGUlpVSmlWR0pVWTIxaFJXSjRhRVZsV0dKQmFGUmhUV1ZSWlZWaVptZElZMFJvYzJSU1kwZG9NR0ZSWkVablkyRllhRFJrWVdSTlkxVmhSV1Z6WjBKbGJHaDRZbkZtWW1oQ1lrNWtOR1ZWYURCbU9XRnJaMkZoYkdKTmFGcGpSV1V6WkVGbFRHZFhabFpoV1dOVFltVmxhMmhrWkhOa1JXWXlaalZqV0doYVpFaG5SbU5LYUVaa2JtaEZZVmRtU0doU1pqaGlVV2RYWmtOa1FXUm9aa2RsYW1SM1l6Um9RV2g2YUZaak1XUlZZM2hoT0daM1lWRm1hR1pzWkdKalUyZEJZblJvTkdOSVl6Qm1TbVI1WkZsb2JXWmtaalZtU0doWFpXeGthMkpqWTNobFFtVk5aVlJuVm1oR2FFcG5SbWRWWmpWbWNHTmthRUpvYUdoM1pVaGhSbWMxWTFKb1UyUnJZVFZqTVdORlpsaGpUbWROWVZWbVUyVldabUZrVm1odVlsRmlVR2hoYURGaFNXTlZZMk5rVldKYVpGWmxUR05TWXpCa1RXVk5aa05qVFdOalkxWmllR2ROWWpOaVFXRjNZVEZrWVdORlltbGthR1ZNWVZwbVFXRm9aVzVuVTJKcVpUbG1WR2hUWTNoblVtZDRhRWhoVW1neFpVNWxSMkZXYUZwaU1HZGlZMmxoUVdkNVpsQm1WV1ZaWW1sblJtaG5aamxsVFdKa2FFWmxjMlZNWkdWblJXRlJhRXhuWTJaR1pYQmpRMlZpYURKb1NtUnRabUZpVW1WUlpUZGhRMlZJWVUxaldXRlNaRVZoVldaSVkwSm5iR1YzYUV0a1lXWlhaRkZpV1dGaVkxWmxlR1Z3WkZWblVtZG9ZVTluUzJoVll6RmhlbVpZYUVablJtWnRZV05tUVdSU1p6bG1SR2d5WWpGblZXVkdaRWhtYTJGVlpVVmlNbUZXWWxSaVdHTXlaakZsYldGVllqQm9jMkZVWTJKbFoyTnpZMDVtU0dkc1luTmljR2RUWTFObVoyVkZhRWxsUVdJd1ozZGxUV05WYUVsblpHUmpaVlZpT1dGWlprZGtWV0YzWmtWbFQySnRZelZoTUdWamFGaGhVbUZ6WjFwaWVHaFpZbE5pVkdoSVoxWmhTMmRGWVVab1NtWkZZME5sZW1GcllXTmxVV2h0Wm1Sb2NXWmlaR3BvT1doaVowOW9kMkZ3WlhwaFFXSkZZWGhvVVdSVVkwWmtVV2hXWlVKak1tRnJhRzlqVW1GSWFFRmxTV0prWWtWbE9XSkxaa2RtYW1ZeFoxbGpTV2RGWjBsbVpHSlFaRlJqTkdkU1lrbG5SV05rWkdsblZXRm9hRXBqTTJGU1ptaGljMkY0YUZWb01XZEtaR3RvVUdWb1pIUm5VV2hSWWtobk5XTklZVWhvUW1Ob1oxWmhUR1ZuWkRsamRHRlVZbGRpTldKaFoxcGtSMk5rWkZka1JtSkVZbWRqVldoR1prZG9ZMlZhWmxaa2JtVlNaWFZuWkdWdVlVNWxkbVJTWkcxbVkyRlhZa1ZqYTJaM1lXNWpSR2N3WjFGaFNHSkdabXRrVm1aM1oxZGhSV1pDWnpCbFUyUkhaMXBvY0dOR1lraG5TbWhQYUdOaWVHaENaVTFrVkdWV1kwVmxRV05WWWpCaU5XSm9aMlpvUW1SQll6VmpVV0pYYUhCaVVHaFdaa1puVG1ZeFkwRmxXR0Z3WlVGaFZXTllaVUZrYVdGV1ptMW9iMkpTWjJSaFZXWTRaRlZrV1dOVlp6aGxabVJsWTBGaVJtUlFaV1ZuYm1ka1lWUmxWV05DWVhCak5XVkRaSGRvYzJaVVoxSm1hV2c0WWxab1MyTnJZa1psYzJSVFpFaG9PV1JVWkZOamVHWlNaSGhsU0dKU1pqRmlUbVJIWWxabFdtTXdaV0psYW1oQlpqaG1VR0ZWWmxwaGRtaFJZMmhvU1daUlpFdG1WV2R2WTFsbVFtWnJaMUZoVjJOallrWmhaMlZZWVU5b2VXWlNZaXRqWVdkNFl6RmhjR0ZVWm0xbFoyUlJhRkpuVjJGa2FGSm1VMkpTWVZabVQyZGhhRmhoVVdWWmFHTmxSV1JHWmpCaFZXSlZaRzluWkdWSlpteGlaMlJ1WTBSbGVHSnNZelJpWldGQlpVcGhPV2RFWm5wb1FtRTBaMFpsU0dOR1pVZG1SV2N6Wkdoa1ZHaFVZekpsVW1WeFpsVmllR0pyWTFSaFkyZEJaSE5rWVdkR1p6Qm1SV2d2WmxKbU1tVlpaVXBsUzJWNFowcGxiV0ZaYURKbFJXSlZZV05vVW1Fd1lXUmhWR2RTWld4aVYyUmtaa2RqTldjeVltTmpNbVk1WTBkb1dtTjRaRmxtVTJaSVltcG9RV0ZsWmxKbVVXZEJaRXRoUTJWNVozQm5VMmRHWm1sbFkyWnlaazVuVjJkVmFGVmpTV2RGYUVwb2VtZFhaRlZoVm1GWFpHVm9NR0ZyWVZablZHSnRaV3hqTUdoSGFFaG5RbVZDWm1SbVJtWkdaa3RuVkdWdVkxVmlVbVpOYUVGb01HTkRZMUJoV0dGQ1pGVmpTV2RXWVhOaGRHRlRhR2hsV21WeVltSmhRbVJPWlRSbVZXY3daVGxtYTJoaFpXeG1UV1phYUVWaU0yTkJZVXhpVjJWV2FGbGtVMmRQYUZGbldXY3paMEppUjJjMVpVbG5UV05UYURCa1RtSkhZbGRuYTJabVkwSm5NbVpqWTFwb1ZtVnVZMUpvZFdSa2FHNW5UbVIyWjFKamJXSmpZbGRuUldKcmFIaGlNV2RUYUdob1FtWlRaVVpvYTJJMFptdGhSR0o0WjBGaGFHVlpZV2hvV21ob1pWRmpSR1Z2WVVoaFNXaENZbmhoVFdOSVpURm1NV0pLWWxoblJXTmtZbmxtV0dob1ltaGtkMkZSWVZoalVtUlNaRk5qYTJRMVlURmtSV1ZZYUU1blRXWlZZbGhtYUdkM2FFWm9WR1ZXWldObFRHSnNaVWxpVjJSTllVSmxWbVZSWVUxblVtVndaMDVqWm1SclpFSm1WR2RIWTFKalRtaDNaME5uTVdac1lsZGhSV0p1WjNCalNHTmFhRVZpUm1oMVoxTmtiV1ZTWlRWalIySldaVVZtYkdGVFlVVm9PR0pFYUVkalUyRldZemhqVDJOcVpEUmlObUpRWVVWamNHRnVabEppUW1VMVkwMWtVR1ZGWmsxbFRHRmxhRVZoVVdGTVlXTmhSbVJ3WkVOalltTXlZMHBsYldOaGFGSmlVbUY1WVZSaWJtTk5aVkZqUkdWM1luZG1RMmRFWlVKblZtWk5Za3BqVkdWV1owMWpUMmhSWVRsaGJHRlZhREZuUW1kclpXUmhVbWRHWW5wa1ZHUkdZa1pvTkdaalpFWm5XbUV3WWtSa01tUjBaRk5vUm1OSVlVVmhSbU5WWm1saGMyVlhaRlJrTW1kWlpXOW9SMk5zWW1Sb1UyWkpZbXhpU21oaVpWUmlSR2hvWVRabVVtUXlZVkptUW1SaVoydG1jR0pyWVdWalZXRnpZVlZsWTJOU2FEQm5aR2RVWWxKa2JHWlhaa3BpYVdWelkybG1TbWhxWXpCblNXaGFaek5tT0doaFpFZG5SR1V3WjBSb1VXTXhaelZoUldWWFpsaGplR1poWmtObE1tRmFZelZvVkdKSGFHdGtWV0ZqYUd0bE5XVjZaMFZrUldaNFkwNWtWV1ZWWVd0aFZtVlVaVzFpYkdNd1pGZGxlbUpGWmxOaVRXWldZMFpvU1doRVlrUmlVbUpEWlU1b2JHTndaa1prWldadFlYQmlPR05rYUVGaE9XWnlZMVZtYUdGU1luaGhVbUpvWkU1bE5HUlZaVEJuT1doclpXRmpiR0pOWlZwalJXSjVhRXBsVDJSRVkxRm1UbWhCWlU1b1JXRmpaVkZrVTJkVWFHOWhRMmRNWVZObWNHRklaVVpvUTJSTllsSm9TR1pSWVZGb1VXWlVaMVpqTldaMVltUm9ibVJPWlhablVtSnRaV05pVjJKRlptdGllR1F4WlZOamFHUkNZVk5pVW1KRlpXZG9lR2REYUZGblpHaDJabGxrUkdSTlpIRm1VbUl5WTBKblRXZGhZMVJuY0daTllWUmpWbVZHWWtwalJtaFZZalZuY0dOa1pVSmlhR2QzWkZGaFdHZFNaVkprVTJobllqQm1NR2hSWVdwbldtSk5abFZtZVdJd1kzcG9RbU5ZWTJ0aFpHRmhZVlZvWjJnclpXTmpWV0paWVZSaFpXVkdaMDVuVUdSYWFFZGljR2hVWjBkblVtTk9abmRvUTJVeGFHdG9WbU5WWW5sbmEySkRZbHBrUldOTlpEZGxTR05wWTBwa2IyUllaVlpqWjJjd1owaG9kMlZrWkc1b1IyUldaRnBrTUdkaWFHNWxXbVI2WldKa01HTmFaVzVrUm1Ob1owcG5UV1JrWlZWaGNHaFVZMFZtZUdGa1pFOWhZMkpHWVdkb1dHVlBabmxoVW1SeVoyVmlRV1JKWlN0alEyVXpaRVZpUzJSYVoydGpNV1JTWWxOb1VtTldaazltWVdWWVpGRmpXV2hqWjBWaVJtUXdaRlZoVldkd1prOWlaR1ZTWTBWbGFHSkRhRkZvVldoMFlrbGlhR1JvWWpCbFpHRnRZVTFuUjJkWVpVUm9aMmRXWVVob00yZG5hRUpuVVdFeVpsRm1hbWhYYUdka1NXZzFaMk5uUVdSMFpscGhWbUpvWlVwaU5tZFNZVEpqVW1KQ1kySm1hMkZ3YUd0aVpXUlZablJpVVdaT2FFWm1kR05qWmtka1JtaFZZa05uWW1aclkxSm1NbWhqWmpKbE9XVkhZVnBuZUdWWlkxTmxWR2RJYUZabFMyWkZaa1ppU21aRllrTmpNMmRDWTJGaVEySjVaV3huYVdSaVpHbG5kMlZrWVdOaGFHZHZZVGRsVVdOblowMWxZV2RWYUZGalpHaFJaRWRtVjJSclowRm5VV2RUWmtGaVJXTkZhRkZvVFdOWllVRmlVMlpqWlZwb1kyUlVZbXRsWm1OTlpucGtOR1phWVVsak1HTkdhSEpoUm1ReFpXOW9lV0pEWlZaa1kyWjRaRWhtVVdWb1lTdGpZV1pzWVVWaldtUkhZMGhqUW1kbVpWVmpSV0l3WnpSaFpXTnJZMlJoYTJOUlpWZGtOV2hMWVZwblNHZHNaRXhqUm1SSVkwVmxaR2hJWTFWaU1HVmFZMVppYm1oM1p6Wm9aR1p0WWpWaWRtRlVaR3BsVFdOWFkwZGpWV1o0WnpOalUyTkNaV3hqWTJoRlpVVmpVV1JqYUVabVVtWlZZbkZpVFdWQlpGVmhiMlJTWVhwaVpHRkhaR1ZtYUdac1lVRm5WR05XWVd0b1RXWkdaMVpvVG1kd2FHUmhVV2RvWXpWb1YyRnNZVFZpVW1KVFoydGpOV1l4WWtWaFdHUk9ZVTFuVldaWVoyaG9kMlZXWkc1b1VtaFRZMUZoVm1KSmFGVmhZMlJWWVZsbFZHUmxZVVpqVG1kUVprOWlWV2RDWlZSalIyRlNaRTVqZDJSRFpURmhiR0pYYUVWaGFtSjNaRk5oUzJObllrbGpObWRCYUhsbmMyUXpZVk5qTUdGT1pqVm1VMlJTWWtaalRtSlRhREZvY0dNd2FFcG1NMlE1Wm5walRtRkhaM2hqYm1oR1pHaGtTbUpOWjJSa1ZXZHZZVkZqVldOclpWRm1UR0ZLWldobWMyTlJhR0psZVdaa1lXMW9aR1ZDWTFGamJXaE9ZMU5uUm1SMGFGWm9NbUprWmxKbFUyRlNabFpoVDJkaFoxaGtVV2RaYUdOaFJXUkdaakJoVjJSU1lUUmtNV1JLWXpKaWVHSjZaVlZqVm1aRmFITmtRMkY0Wmpoa1NtRkNhRzFoWkdoVFkwaGxRMmRWWXpsa1YyTm5abFpuVkdKVlpHMWtVV0oyWmxkaloyWkpaVFZqWTJGQlluUm9XbUpXWm1oa1NtWTJZbEpuTW1GUllXTmlVbUpGWkhCamEyVmxaMVZvYzJOVmFHTmpVbWd3YUdSbVEyRXdaWGRoV1dST1lucGtiMk12WkZCaVEyZEdZMGRsVFdSU1pqVmtSMlZSWTBoblZXVlpaa2hqUm1kSllVNWhRbVV6WTBGaVptUlVaVzFqT0daMFpXSmhNbUZzYUZCbVYyWkZaelZvZW1SRlprVm1lR0pPWlZWbVZXRnJaVlpuVkdSdFpXdG9PV0ZZWm01blFtWktZMXBsUm1KR1pWaGxWV1l5WVdkbFVtRkthREJpU1daa2FGQm9WR1EwWjFKalNXUkZaR1JtYVdOVlpHdGpXV0V3WkVWamEyZFpaM0ZvU0dOVll6bGxjR1ZsYURCaVoySjZaa1ZpTTJaQllVeGxWMkpXWWxsb1UyUmxZV3RuWkdacmFGRm5VMmhqYUUxa1dtSklZMFpsYUdOR1praG5SV0ZrWjBoaFZXRXdabHBtVm1kdVpWSmhkV0prWVc1alRtZDJZbFJqYldkV1pFWm5VbWhvWVRSbk9HZENaa1psWkdKUlkxSmhRbVZhWlhSbFYyWm9hRmxsTW1OTmFHbGpUV2R0WlZWaGJtaEpaRWhvVjJWU2FFSm1UV05VYUZaaFJtRktaa1psVldVMVozQmtaR0pDWW1ob2QyUlJhRmhpVW1GU1pGWmxWV0UxWWpsbFIyTlVZMXBoVFdaVVpFaGxaMlUxYUZobU0yVm5hRkJpV1dWNFpITm1WV1ZpWWtWaFdXTkVaMk5rVm1Sd1pXeGxXbVJIWW5Cb1ZHWkhabEpvVG1WM1pVTmtNV1JzWTFkbVJXSnVabkJoU0dkYVowVm9SbWd3WjFObmFXTXhZelZoVm1WU1lsSm1hbU5FWmtGamJHSmhZMFJpVldjMVlXNWtaV1JIWmtwamEyWlNZMVZoV21odVkwWm9hR05LWWsxbVpHSlZZVzlvVVdGVlpXdG1VV1JNWTJOaVJtSndhRU5tWTJoSFpVcG1kV2RKWlVKaFVtRjJaRlJsYldoRlpVSm5WMk5HYUhCa1JtVlZaMUZuV21aWlltWmlWMlZOWkZKaFYyWnJaVVprTUdaVlkxVm5jR1pQWVdSblVtWkdhSHBpVkdaR1lrWm1OR1ZqWkVaaldtVXdaMFprVjJSMGFHWmlRbWR0WjBKb1UyTkNhRWRqZUdWTWFGaGlTR1JLWlN0blUyUjRZMnRvVG1OamFFVmpTbU5hYUZWalFtUlNaVFptVkdKNVlqRmlRbVJqWWpCaWNHRndhR0ZrTVdKdlpFRm5XbVpuWjJ0aVJtTllaR2RrT1doRFkySm5SMlprWmpablYyZFhaVGxuUjJOYVkzaGtXV1JUWkZSbFNHWldZVXRoUldOR1pVcGpSV1JEYUROaloyWlVhRkZpYm1aS1pHbGxZbWRUWlVGaVpHRm1aRzFpVW1GNmFFVmpSV0o0YUU1blZXRlZZbXRuVm1WVVpXMW5iR2N3WTBkbVNHVkJaRWxoU21KNlpqaGhUR0ZKWVVob01XRlpaMlZrYTJKNFpWaG1abWh1WVVKalpXUlFZVkZqT1dneVoxVm1iR0owWVhobVYyaFNaazVqYjJWVlpURm9WbVJyWkZCaGJHWXhZMVppVm1acVpqVmpUV0pFWTFKak5HaFRaV1JtTUdWa1lURm9VMmhIWTBwaFoyUmFaMGhvYkdWTVpFWmxTR05GWkdSalNHTlZaakJrV21oV1pXNWtVbVIxWVZwbWJtRk9aWGhqVW1OcFpqUmxWMlJHWkVWb2NHSXhZMUZuYkdGc1pWTmpWMk5SWlhOaWEyUldaRUZuTkdSeFlVeGlRMmhGWlRsbFdHVklZMHBrUm1SalpURmliR0pHWWxGaVdHVjBaMHBoUm1KVlpEVmhjR2RrWVVKbGFHZDNaMUZrV0dKU1psSmxVMmhyYURSbk9HUkZZVmRpTVdWU1kxVm5VMkY0WkN0aFIyUnFhRVpqUW1GTVowRmtXbUZqWkdWbVIyUjNaRlJuWldWR2FFNWlVR05hWTBkamNHRlVaVWRpVW1WT1lYZG9RV1JzWkd0blRtUlBaMGhtY0dWSVpWcGtSV2RHWkhWaVUyUnRaRkpqTldKVFlYaGpVbVY0WjBoa1ZtWlJaRXhqUjJoV1lUUmtOMlJhYURObFdXaG9Za3RqYUdOSllubG5VbVJHWlhob1RXUmxZMFpuYzJKTWFHVm5SV1ZSWWt4alkyRkdZM0JuUTJOaVpqSm9TbVp0Wm1GalVtTlNhSGxvVkdacWFHOWpVV1JWWlZWaU1HRkdaRkpsTVdWclpFeG5TbUo2WjA1bFRXaFBZVVZqUm1FMVoxVmxWbVIwWVZabFdHUjRaRVprZW1kVVprWmlSbVUwWldObVJtaGFZekJoUkdFeVkzTm9VR1pHWTBSalVXRkxabEZqUkdZeGFGUmhRbVJwWlVwa2NXUlhaM2RqYTJoVVptSmhaMkZ6WjFGbFdHRjRaVWxqYUdGaVkxZGlVbVpDYUdKa2EyaHdZMnRvWldGVlpYTmlWV2RqWjFKak1HSmthRlJrVm1kQlkxRmpaR0ZIWjFwb00yRlFaMGRuV21aSGFFNW9WbVZPWlVka1IySlRZV05oUldoRlowWm9PV05XWTBWbVJtTndaMkZsVVdKdFlqbGxhV1JhWTIxb2EyaFZaV05qYTJJMWFIcGpSV2hGWVhkblJXSlZaRlpqVVdoV1psaG1ibUZLWVdWb1IyUklZa0ptUW1Sa1lVWmhSbVZMWTFSa2JtTlZaMUpuWTJSNGFFWmtOMmRsWkVoaVFtaFhaMlJpUVdZNVozSmlWV05vWlZKaWVHRlNaR3hrYjJjcmFGVm1NR0prWm5ObFlXZEJaa0pvVG1GUlpWUm1iR2hHWTBoaWJHRlJZbE5pV21ZeFlYQmlhMmRHWkZSb1kyRmhZMGxoVkdKWlpVNWxSbVpEWkUxaVpHWkhaekJuYzJKYVpsaG5hV1JhWm5Wa1lXZ3paRTFsYUdOVFpVTmhSbWRGWjFoa1VXUkdaVGxoUjJGQ2FIaGxVMk5CWjFGbFNtZzFZMVprYTJGSloyaG9ZbUpEWmpoaU5tTmtaMmxuWTJOSllrNWxWbUZWYUdWbVVtRlJZMDVsUVdGSVowVm5aR2hFWjJSblFtSm9aSGRrVVdkWVlWSmpVbUpUWm10b05XZ3hZMFZoV0dST1lVMWxRV2g2WnpCbWEyUkJZWGxoV21kQ1pHRmpNR05KWkZWalltVkdZWE5sVDJGbFowRmpSbUpDWlV0aFEyYzRaV1JrV0dkclpHTm1OR1ZEWnpCbVdtTlhaa2hvTW1SMFlVaGhabUZyWmtWalVHaFJZV3BtUW1jeFlWTmhNR1ZhWVRsalNHSldZVkppUW1oSFpWSm5UbVEwYUdKbWFtZHNhRFpoWkdkSFpIaGhibWhHWVdoblNtZE5ZbVJrVldWdlkxRmlWV0pyWTFGb1RHaFBZbEptZUdGRFlscGlNbUZCWm05b1VHaEdZV3RtZDJaRFlubGpSV0ZUWTFSblJtVkNZazFqVTJOVlkwVmhXR0ZQWkZSblJtUllaVTVqYTJaRlltMW9WMk5IWVVKbVQyWmtZMUptUm1KNlkxUm9SbU5HYURSblkyTkdhRnBsTUdaRVpqSmxjMkpCWTFWblUyVlZabFJpVVdSVVpscGxWR1ZTWlRCa05XVnhaVlZqZUdWcllWUm5ZMkZCYUhSa1dtZFdabWhuU21VMlpWSmxNbVpTWTBKb1ltRnJaa2xpTW1GbFlWWm9XV2RWWjFsaGQySm5hRWxpVkdoU1p6bG5WMkpLWVcxalpHTTJZVmRtVjJJNWFFZGxXbUY0WjFsaVUyRlVZa2huVm1WTFpFVmhSbVZLWmtWalEySXpaMEpvWVdGRVlrZGxSV05YWWtobmVHaHNZM2hrUm1acVpVVmxVMlZaWldwak5HUnphRXRoUkdaYVptMWpUMlY0Wm10bVJXRmtZbmRsU1dVeFkyUm9SbWhrWVUxaFdtTklabFZtVW1GamFEQmllR0ZTWTJWbVNHTkNZMWRtWkdGQlpEbGljbVJWWW1oalVtaDRhRkprUm1oVlpYUmhTR2RSYUhka2QyRkpaSGhqZUdkWVowVmlXR1ZCWWxkblVtVkdZbHBpUjJoSlpuaG9ZMk5vWWtSbWFXZG9aMHRpUldkVVpFRm1SbVJSWjBkaWJHSTRaMVJpZUdJNVoxbGpSR016Wm05bEsyRktZa1JsZDJnM1pVTmpWR2hPWTFCaVVXSm5hR3hsTjJWQlpERm5OR2hYWmtGa1ZtTk5aR1pqU0dKSGFHaG5kbUZaWlcxbVdtTndaVVprU0dkS1pFOWhZMko0WmtKaVRXSlVaVlpoUm1KS1lrWmlWV2MxWkhCbFlXRjRZMmRtTDJkaFpETmtVbVpTWlZOamEyZzFZakZoUldSWVlVNWlUV1JWWjFoa2FHSjNZbFppYm1kUmFGQmxZV1V4YUVsalZXZGpaVlpoYTJOVVprUm1VbWR2WjBKbVRXRklhRWxpZVdWVFp6QmtSV1I0YUZWbGJHZGpaa2RsVVdaRVkxVm5WR05MWjNoa1ZXVXpaMGRuYVdkR1p6Tm1RV1JzWVc5b01XaFhZVVZqVldkcFpsaGpNV2huWnpOaVRHTjZaRzluTDJoYVpuaG9TbUZ5WWtab2EyVkNaa0ZpWkdWUllrMWtXbVpsWkVWaVVXaE1aR05sUm1Wd1pVTmpZbWd5WlVwa2JXZGhabEpvVW1oNWFGUm1ibUZOYUZGblZHWkZaakZvVW1kVFlsRmtPV1ZQWmtoblJHVXhabGRqU21GR1lXdG1WbVJCWjNoaloyZFFZa3hpUW1ZNFoycG9TR1pvWXpSamMyTlFZWGRoU1dWMFpsaGxlV2cxWm1ObFYyTkVZa0ZtVm1WU1pIaGpSV1prWVVObWVXTkZaM2xrVUdaR1lUaGtaR1JOWXpCbGIyWldaRWRtYUdkdmFIVmpVMmd5WjFGaFZHTlpaMnRoYjJGMFptTmlSMlZGWjFWaFkyVlNZekJoWkdSVVlWSmliR2hYWW1SbFIyWTFaREpuWTJJeVl6bGpSMmhhYUhobVdXUlRaRlpuYm1kVlpuSm9SMlpCYUZwbFNXWkRhSGRvYzJGSlpsQm5NbWRPWVdsalRHZ3lZVlZpVldaT1lqQmlTbU42WVZobU1HUldaVzVrVldGVlpXdGxWbVpVWW0xbGJHUXdZMGRsU0dWQ1lrSmhaR05HWlVaaVMyZFNaREpvTkdNM1lXTmtNR0o0WTFKa1pXZElaMEpvVjJOa1lVRm1PV0Z5WjFWaGEyZEJZalZvUm1WR1ozZG9kbUpWWm5kaVJXVm9ZbEJtVm1GT1kzUmtVMkpwWlVKb1QyaFFZMEZpVW1KQlpFNWpVbWhXWjNObFVXZDZabWRtVEdKTGFFaGlhMkZIWlZGbFUyaEthRXBtU0daUlpEbGhZMlJXWjJsaVkyUTJhRXBsUkdSdloyaGlRV05YYUhObVYyTllZMEpqYTJJMFprTmxSbUpWWkVGaFVtUkZabEZuYVdKWFlXbGtRV2cyWTBwaVEyWkJhSE5vVW1WdVpVSm5TR05oWTBSbmNHSk5aVlJoVm1kR1lrcGxSbVZWWnpWbmNHRmtaa1ZrVm1KaFpWRmhXR0ZTWWxKbFUyRnJaVFZtTVdSRlpGaG5UV1pMWkVKaVJHTlpZM3BqUVdWcVp6RmpRV1pLWlZablNtUXhaV1ZrVW1KSlpXWm5aV1JCWjBablJHRmFZME5vVG1WbVpVZGlWbUZhWnpob1EyUjRZbHBtWm1GRlpXbG5SbWQwWVZwalJXTkdZblZsVTJadFlWSmhOV0ZUWVhobFVtUjRhRWhvVm1oellsbGtWbVI0YUZWbFoyaEthSHBsYTJZNVptSmxkMmcxWkhabVVXSm9aVFZqVFdWS1pEQm5UV0pSWWtOaFYyTTBaa3hpWTJSR1ozQmtRMkZpYURKblNtRnRaMkZvVW1oU1pIbGhWR051YUU1b1EyTkRZMUprYTJkRlkwZGlNV04wWVU5blpXRklaVkZpUm1WaVlWWmplR2d3WkVoak1HSndZbEprWkdOVllsVm9TV0ZJWjJsa2VHZzBaR0ZoYkdWWlpXZG5RV0ZVWW10bFdHVldZbFJpVldkNlpHVm5hbUpaWTBoa1dHUnVhRWxuU1dGT2FHaG9SbVpDWTJOaFFXSkdaRnBpUjJSQ2FIUmthR1ZpWTFka1VtUkNZV0puYTJod1lXdG9aV05WWjNObVZXZGpZMUpsTVdaQllscGtlR2hzWjFkalpHVkhaalZrTW1GalpUSmlPV0ZIWjFwaWVHSmFhRVZpUkdWVFptUmlTMlZZWTJ4a1NtaGFaME5vTW1KR1psZGpZV1JIWkRsaWFXVmFabTFrYTJKVlpXTmxhMk0xWTNwbFJXVkZZWGhuVG1KVlpGSm9iMmhXWWxWbU1tTnJaMmRsUm1ScVpuZG1SV0pQWW1obVdXRmxhRUpsYm1acll6ZGxZMlV3YUhobFVtWmxZVWhuUW1OWFkyUmxRV2c1WlhKbFZXRm9ZMUpoZUdaQ1pYaGlUbWhzWVZWamVHY3hhSEZqU21ab1kxcG5XR1JXWlVObVVtaEVZMUZrYm1SM1kxTm1aV1ZyWkdSaGEySlJZbGRtTldWTGFGcGtTR1ZzWVV4aVdHWlVZV05pWkdoR1oxZG9ZMmhhYUZaamJtZFNZblZoWkdodVpFNWpkbWRTWm0xblkyRlhaVVZvYTJWM1pXcG1RbVJXWTJ0b1YyaFNZVUppZEdOM1lsZG5NV2c1WlhsbVdXaHBZazVoY0daRlpHNWhVbVJyWkdOa2VHRkNZVTFoVkdWV1lrWmhTbU5HWkZWa05XTndZMlJtUW1ob2FIZG1VMk5ZWW5kaVZXRlRZV3hqVG1jeFpGbG9hV0pqWW1Wb1IyVkVaMWxsTTJKWVlXcGtSV0pIYUZwb1VXRmFaV0pvU0dWUlpHeG5SV05RWVZGb1JXaHpaa3BsVkdOclpsZGhSV0pTWm5Ca05XVkNaek5uVG1oWFlVVmlibU53WVVoaldtWkZaMFpvZFdGVFptMW5VbVkxYUZOb2VHVlNaSHBsVTJaR1pqUmlaV05EYURGaFVtWXdabU5sTW1oMFozVmlZbVozWms1a2JtWlRZbXRuTldadFptUmxWV2R2WlZGblZXUnJhRkZuVEdSalpFWmtjR05EWkdKbk1tRktabTFsWVdkU1psSmtkMmhIWVhwa1FtUkVhRkZrVm1VNVpGUmpVMlZSYUdoaVZHSmtaVWhuVW1Oa1ptTmlRbUV3WW05bFpXVXdZbkJtVDJSa1pWSmlSbVo2WmxSaVJtVkdaalJsWTJkR1pGcGlNR1JFWnpKaGRHTlRaa1ptYVdaUmFGTmpWbVZYWjJ4aVJtZEJaM2xtUm1odllsVmxkMlpSWWs5aVltRlJaM05oWTJSV1lXdGhOR2h0WkdKbFYyRlNaVUpsWW1OclkzQmhhMkZsWlZWamMyWlZaMk5vVW1Vd1pHUm9WR0pTWTJ4aFYyZGthR3BvYzJScGFFNWxWMlpLYUZoaFkyTldaSEJpV0dOVWFHNWhWbVpZWkVSbVZXUTVaVVZoVkdSdVpXeG9kMlZSWkcxbk9XZHBaRnBuYldSclpGVmlZMkZyWXpWaGVtSkZaVVZuVm1KT1pVTm9iV0ZOWkZaaVZHZHRZV3hoTUdGSFlVaGpRbVZDWTJSbVJtZEdZMHRuVkdadVpsWmlXV1pPWmxWamVHSmFZa3hrU0dVMFpHRmhUV05WWjBWaWMyUkNaR3hoZUdaNFpsZGxhR1JPYUhGa1ZXUjRhRTFoTkdoaFltZG5SV1JZWjFoa2VtUldaRVppU0dWblowcGtZV2hsWkd4bGRHTnJaRlZqTW1Sa1lVdGpUbUZxWVhkbVptaFJaVk5rVG1aVVkwaGxWV0pCWTBsaVZHUldaalZoZFdSa1ltNWpUbUoyWVZKbGJXaGpZVmRqUldWclpIaGhNV05UWkdoaFFtWmhaME5tWjJKMFluUm5WMlJzWTBKaGJXVmlaMjFuV21ob2FGSmtNMmhLWVVKaVltTm9aVUptWldoU1pVWm9NV1JLWTBoa1VXSTVabkJrWldSM1kxWmxkMlpWWWpOaE1XTmtabE5sYTJkWlpqaGpSV2hZWTNoalVtSlZaRmRuY0dVMVkxUmhWbUkwWVZCb1lXY3hZa2xsVldWamFGVmxXV1JVWjJWaFJtaE9ZMUJtVDJKVlprSmlWR2RIWkZKalRtUjNhRU5rTVdWc1kxZGlSV0Z1WW5CbVNHWk5aR2RtUVdFNGFGTmthbVZHWW1sbFdXZFNZMUpoZUdSSVpWSmxNV1JPWVVkbFZtaGFZekJvWW1odWFGbG1ObUZMWTFWaldtWjJaMWRuVW1GMGFFMWpUR1J0WmtGaVVXaFZaR3RtVVdWTWFHTm1SbUZ3WlVOblltTXlaVXBoYldGaFoxSmxVV0ZyWWtSamVXVkZZVkZvUTJSclpqRm9UV0ZUWlZKaWFHaG1aMk5rYkdnMFpsbGhZMkpGWTBaak1HVlZhRlZsY0dWUGFHUmlVbUpHWTNwalZHRkdZVVZtSzJOUVozZGxVbUV3WlVKa2VtZzFhRk5vUTJKWVowVmlVR05EYUVoaloyZEJaRlJuTTJOd2FIRm1RbWhuWWtsbFZHSktaMUZpUW1oVFlWaGtlbVpvWVRaaFVtTXlhRkpsUW1oaWFHdG1jR1JyWm1WblZXRnphRlZuWTJOU1lUQmtaR0ZVWjFaa1FXUlJZV1JoUjJaWmFDdGxaV0Y2Wm5SbVMyVmFaekJpVFdKaVkxUmhSMkZvWmxoaFJHTldaa2xtVFdKQmFIbGtTbVJYWTFGa2JXTktZM3BtV21OdVoxRm5TbUppWVRCbU5HY3haVVZoUm1GT1pVNW5VV1pWWm10b1VHSlVaR3BrZUdJd1lVWmlXR1pCYUVoalptUldaMmhuUzJKR1kxWm1PR2RTYUdOaU1HUjRZVkpqWldSSVlrSmpWMk5rWjBGbk9XSnlaRlZqYUdOU1ozaG1VbUZvWkU1bk5HTkhZbWRuYkdKcllsbGliR2R6WWxWalFXaHVaVUZrVjJWU1kwVmljMkpUWTFCb1JXWmtZbWxpVW1ZeVpqVmtRMkZKWjI1a2JHRlhhRVpvUTJSUlpWVmxSV1ZWWlRGalRXTldZbTVtYkdWMWFFMWpTR1pPWm10a1VtaHVZbGxtVjJGRVlURmlSbWh2WWxObmJHSkdaMkpuVkdaUlluTmphV2hJWjNoaldXVTJhRTFqUTJkb2FIQmxWV1Z1WlVwalJXTmpaakZvTldaWVpscG9NV1ZHWkVwbVJtaFZZVFZoY0dka1prSm1hR04zWjFGaFdHaFNaMUprVTJGclpqVmhNV1ZVWTBobFRXUkthRWhpVTJOelpURm1WbWR1Wkd0aVpXaGhhREZoVFdKS2FHSmpSV2RhWmxaalpXVkdZMVpvU21aYVlrZGpTV1ZIWWtkalVtVTFablJsUTJoM1puaGlWMkZJYURObGIyTkNZbUpsVldNeFozVmtVV2RwWWtwbk5XRldhR2hrVW1ZNFpVUmxRbU5TWkZkb1RXY3hZbHBoTUdWaVkyNW1XbUY2WkdKbE1HRmFaRzVtUm1Wb2FFbGtVbVZrWTFGaU9XVmpZVUZoVVdkRlpXaGxZMkpHYUhCblEyWmlaVEpuU21KdFlXRm9VbVpTWVhsb1ZHWnVZMDFuVVdSRFlXZGhTV0pFWmxObVVtY3daMGhpWVdkWVpEaG5XV0pOWjFWaFJtSnhZVlZqVW1Gc1prOWtZMk40WVdSbWVtUlNZVUpuYUdJMGFHSmhWbVpaWkc1alJHUXlZbHBqVTJGV1oxaGphR05MWTBWb2VXRXhhRlJpVldadFlWRmlhbWRUWWtKb2JHVkhZMk5pUW1WV1lrVmlWbUpuWmtwaGFHRlNhSHBuUm1GTllsbG1NR1JPWVd0aVNXWnRaa1ZtVldkallWSmpNR1ZrWlZSbFVtSnNaMWRvWkdSSFpUVm5NbU5qWlRKaU9XZEhZMXBoTVdaQ1ptUmxTR2h1WTFabVEyRlNaR2hrVFdGWFpFTmtlbUo0WjJGb1dHY3lZemxoYW1ka1oyMW1WV05WYUUxaFZXVTFaM1ZvUldKR1luaGxWMmhWWTFGbVoyRldZVlZrUjJocllqTm9RV1V6WVVGblEyUm1ZVEZpY0daRVpGcG1TR0ZWWjFKaVkyZ3dhSGhuVW1obFowaG9RbUZYWW1Sb1FXRTVZbkpuVldab1lsSm9lR1pTWjJobFRXaDRaMFpuVldZNVkzTm9TV1ZzWm5Sa1RtTklaVE5vUW1kbFpWZG5WbVV3WlZObVQyUlZaVFZtYTJKUlpraG9UbU5ZWVZwbFJHUkdZMFJtVW1GdVl6QmpaR0ZZWjJ0a1VXaFJaRlpqYVdNNVkwVmlaR2h1WVU1a2RtWlNabTFrWTJOWGFFVmlhMmQ0WXpGaVUyaG9aMEprVTJKU1lrRm1kR04zWlZkaWEyZEtaSFpoVEdWdGFGcGlNR2hHWmtob1RtZG1aMkZvUkdkd1kwMWpWR05XWWtabFNtaEdZMVZvTldWd1ptUmlRbVJvWW5kalVXZFlhRkppVW1SVFkydGtOV014YUVWaldHaE5ZVTltUVdGNllUQmllR1pJWWxkb09HVnNZV0ZtTVdSSlpsVm9ZMlZWWkZsbVZHVmxZMFpuVG1kUVkxcG1SMlp3WjFSb1IyUlNaazVoZDJGRFluZG1VbVU0YUVWbGJtRndZa2htV21kRlowWmlkV05UWkcxblVtSTFaVk5tZUdOU1puaG5TR2hTWVRCalJXVllaekZuV21JNFowbGxibWM1Wm5wbFVHVlJaRTFoZW1SUlpUQm5RV0ZEWVdSalVtTTRhRXhqWldKRlpsRmpUR0ZqWlVaaWNHWkRaV0prTW1OS1pXMW5ZV1ZTWmxKbGVXZFVaMmxqTkdRMlpWUmlSV0l4WkZKaFUyWlNZbFpvVDJOaFkxaGtVV1JaYUdObVFtRk5hSGhtUW1GU2FEaGtZMk5QYUhobFJtRXJhRmhsVldod2FGTmlZMmRHWVZwaU1HTkVZakptZEdaVFkwWm1TR0pGWVdKblQyVllZMmhtVkdoVVpESmlVbVp4WTFWa2VHRnJZVlJpVG1kc1pEUmxXR1ZHWmxWbFdXaDZhRU5pUTJkd2FFSmxSR05WWjBsaGQySmtZbFZpZEdGSFlXWm1VbWN4WjFWaVVXRlNhR3RpVkdGbVlWZGpOR04wWjFkblYySTVaRWRvV21SNGFGbG1VMlpVWWtoalZtaExaMFZoUm1KSllrNWhRMkl5WXpGb1lXZE1aRVJuYjJSMllrcGtRMmQ0YUVkaFpXTm5ZMlJuTm1WRlowSmhRV2hTWlZWb1ZtTnJaRTluV21aSFoyeGhNR05IYUVoblFtUkNabVJoUm1KR1pVdG1WR0p1WVZab1NHRk5ZMmhvTldWU1lVNWtNMkpDWVV4aVpHaEdZblJpYkdGSVpHeGlSV0V2YUVGaVZXUmpabmRuVldZd1lVcGphMkZKWXpCa1oySjZaMFZqTTJaQlpVeG5WMlZXWmxsaVUySmxaR3RpWkdGcllWRmpVMlYwWlV0bVpXVXpZV3hqUkdSSVprUm1VV0ZrWVVGalJXWXhZek5uUVdaNlkydG5jMlpOWkhsalJtRnVaVUZvTW1JMFltWmxTR1pyWW5kamQySlRaMmRpTldoVGFFTmxkMlowWlRKaFdHRkZhRXBsYm1KS1pUSmtXbVV3WjBablJHWXhaa2hsWldOb1lrSmpWMmRVWVZabWEyZE5hRVprVm1WT1luQmpUMkY0YUVaa2NtRmhZVE5sVW1oU1lWTmlhMlUxWWpGaVJXSllaVTVvVFdGVlpGaG1aMk50WjBaaGVXRlpaMUJuU1dFeFpVbGtTbWhqYUZKbFVXaGtZazVuUW1OWlkwSmhTV1Y2YURSbFltTkJZV3BpYkdWM1lVTm5NV2hzWmxkbFJXaHVZbkJtU0dOYVpFVmlSbVIxYUVGbmVXVktZelZvVVdVeFpIaG9lR0pIWjBKa01XRm1aMGRsVm1Wa1ozQmlZMmd6WlZwbmFtSmFaMnRpV1dWNllsaG1hMk5CWVVSa1NXWnJaSEJpWldOR1ozaGtUV1JNWVVKalFXRk5ZVk5vUzJSbmFHTmxNR1pQWWpGbWMyTm5ZMUpqYm1oR1lqVm9RV0ZvWW5Ob1VXWkNhRlpvZDJSTGFHRm1WR1o0WjJSalMyTkZaa1ZtYm1GQ2FGSmxaMmRJWTA5bk1XSmFaM2hvVW1WVlluQm9VMkZqYUVabVdtY3daVVJvTW1aMFpsTmxSbU5JYUVaa1IyUkZaM3BuTVdaVVpGVmtWMlJSWjJsblZXRjRhRmxqVkdKWlpXZGtkR1JtWkZWaVFtUktabmxrUVdSdFpWSm1ZMlppWVdka1NtVnJhR1JpYTJaelpVZG5aV0ZCYUZsa00yRlVhRkptYkdaWFoyUm9SMmcxWnpKaVkyRXlaRGxvUjJkYVpqRm5RbUZrWWtoa2JtUldaVU5oVW1Ob2FFMWpWMk5EWlhwak5XVmhZMWhuTW1FNVpubGxabWRYWjJ4alVtWmpZbXhrUW1oNllWaG9iR2hrWms1a1YyUnJZVXBqWW1kU1pqSmhhMkYyWTAxbWJtUkNaMEpuWkdGR1lVWmlTMkpVWkc1alZXUlNaMk5oTUdKNFpWSmtaV05EWTFsaldHWktaV2RqT0dNMFlWVm1aMlZzWlhoaVJtSnNZMGxtY1dSQmFFRmtiMlpPWVVwbVFXaGpaRkpqVVdGWVpUVm1XV2RFWkVKa1VtTkNhRXhqYUdkV1luTmlWV0V5WlRWbFFXRmFaMFJvWkdGSVkwWm5SMmhOYUZWb1JXTlZaekJvU1daUlpFaGtNV2d4WWxoblNHSk9aWFpuVW1OdFptTmhWMk5GWVd0aWVHRXhZbE5rYUdaQ1lWTmxVbUpGWlVsb01tRlhaR3RpYjJadFkwMWxVV2RuWkc5bVpXaHVhRzluWkdkbFlXaGxiR0ZOYUVobWVHRlJaR1JvVVdSQ1luZGxibU5rWkVaa1dtVnlhR0ZpTTJOU1kxSm5VMkpyWkRWbE1XWkZZbGhrVG1KTloxVm5XR1JvYUhkb1ZtTnBhRUpuTUdKSlpXeGxTV1JtWm1ObFVXRm9ZblZrWldKRlp6Vm5VR0ZPWkROblJtRTFaVWRtVW1kT1luZG1RMll4Wm14aVYyRkZhRzVrY0doSVkxcGpRbU40WkVWaVUyZHRaVkppTldOVFozaG5VbWQ0WmtoblVtTXhhRTVuUjJaUlpWRmhlR1JQWm1sa1RXRm9aMGxoVldGWmFIQm9SR1ZVWjJob1RXSmtZMVZsYjJGUloxVm5hMlpSWjB4alkyRkJZMlJtYjJOaVpqSmpTbWh0WW1GbFVtaFNabmxqVkdadVkwNWhWMk5IWmxGblRXTlRaRWhqVm1SM1pVSmxTbVV6WmxKb1lXSmxaa0ptVm1FMFpGVmhVbVpvWWtOaFpHSldaV2hsTDJWVVlVSmxVbU40WTJOa1FXY3habVZtUkdZeVpIUm1VMk5HWVVoa1JtTkhZMFZoTTJGb1lsUmpWR0Y2WkZsaGRtRkNZVEJpZUdSQ1oxQm5aMlZ6YUN0b1dHSnVaM0JtZVdWR1psZG9hR1pDWms5a2EyWlJaRzluVUdSQllWWmpWR1ZLWTFablZXUmtZMUZuUW1oclkyWmpabUZYWlVwb01tVktaVEptVG1KSFoweGhhR1J2WVZOaFEyZFlZbmhpVW1kUFlteG1TbUZGWkVOak0yVkNZbUZoVVdSdFpEbGxhV05QWmpCb1RXZFZZMk5pYTJjMVpIcGhSV1ZGWm5ob1RtWlZabEZrT1daQllrRmlRMlp2WjJkb1ZXTlVhRGhsVUdOa1prUmxVbVpEWWtkaWJtSnJabEppU1doVlpVSm1VbVJOWTFobWVHTlhZVTFoVVdSYVlYSmtRMlZVWWpWbmVHWlNZV2hvVG1jMGFGVmpNR2M1Wld0bllXWnNZVTFuV21SUlkxUm1WbWhtWTBSbVFXSlNaR05tWldKcFpVSm9jMmhPWWpKbVdXTlpabUptV0doV1oweGtVV05JWXpCblpHTldhRVZuUldSYVowVmtNMlV4WlRGbVdHWklhRTVtZG1OU1kyMWhZMlZYYUVWbGEyUjRaakZoUm1oNmFIQm9VMkpTWVVGbmRHVjNhRmRvYTJSS1ozWmxXV2hwWkVGbU9HZFhhR3BtUldGaGFFOW5iR0U0WkVOblZHTlRZMDVvUW1oUlpWVmpTbUZ3WWtwbWFHaFNhSGRtUTJWSVltaG5VbWhFWXpCaFpHY3hhRk5vYkdkc2FFMWpWV1ZZWjJoaWQyVldZMjVpVVdkUVptRmxNV2RKWTFWalNXZDNhRTVvU0dGTVlWRm1SV2RDWWxwbFFXYzVZV0pqVkdSU1lUbGhkMlZYWTFabFZtSlhZMWRtTTJaYVpraGlTV0pWWjJoaU1XaFpaa2RvVW1nMVpWTmtlR2RTWVhoaFNHUlNZakZsVG1SU1owaGllR0l3WTJKaWJtTmFaSHBoWW1Jd1oxcGxibWRHWjJ4b1VXSmFZMDlvZDJkc1kwVmtSMk4zWTNSblJtSmpaMEZqU21KTFlVOWhNbWcxWVcxbFQyaDRabWhqZVdaQ1pETm9PR1pSWWtOaFZXVlNaRkpuUldGcVlUbGlUMkZoWTFoaFVXTlpZV05oUldaR1lqQm9WV2RWWlhCaVQyRktZekZuVVdOdWFFZGlVV0ZOWmpKbFkyVkVZVVpqT0dKa1pGZGxUV05CYUVoaFdHWXhhRWRrVW1VellsSmpWR1pDYUcxbWFHRnhaa1pvYUdWQlpVbGxWMlJuYUhSaVdtSldhR2hpU21nMlpsSmtNbVJTWVVKaVRXZ3laMEprYTJSbFkxVm1jMmhWWkdOalVtZ3dZV1JoVkdkV1lqaG9SR1ZQYUdsaU1HWnBaazltYVdaQmFFbG1XbUl6WjFGbFlXWkhZMGhqYkdoTFlWRmtiR1kxWVVWbFVXWnVabmhuWVdKQ1p6SmxXbU5wYUZCbFZXSk5abFZqWTJSclpUVmxlbVZGWlVWbmVHZE9ZMVZrVldOclpGWmlTR2hEWjNkaFoyWlVZVk5tU1dGUVoyUmlSR05hYUVOalNtSklaekZrUkdObVpqQmxkMk5HWkdSb2FtaDNaMVJuVDJSclptZGxMMkZIYUdoaVVtTTRaMUpuYkdkd1luaGtXR2N3WkRobWQyaGFZV3hsVG1KUllraGhNMkpDWlU5b1ZXUkZZakJrTkdGbFpHdGpaR0ZyWkZGbFYyWTFZa3RuV21WSVkydGxWMlJRWTI1bVJXaGtaa2hpVldFd2FGcGtWbVJ1WVZKbGRXaE5hRU5sV1dab1pVSm1WR0pPYUdaaldHRlJaa3BqTVdWUVpHaG1aMkZIWWxObVFXVnpZMmxuVm1ScmFFbGhiV2hoWVRKbldXTjVaMUJsYm1GS2FFOWhZMlI0WlVKbVRXRlVZMVpuUm1oS1lrWm5WV0UwWXpka1RXaFZZWGRvYkdaRlpucG1jR05TWms5b01HaEJZbnBtVVdWNlpuZGhRbUpOWW5sbFJXZHJhRVZpZUdWV1oyUm9UMkZTYUU1b1RtRmxZMVptV1dWVVoxcGlWV0UxWkZObldtRkVaMmhvVkdGSVpuaGpWbVIzWkZGbWJHWnNaRXhrUkdFeVpXUmpTR2ROWkVWa09HSnBaa1JsZVdSdmFDdG1TR2d4WjNoamVHZEJaV2hqTUdKYVlVZGlWV1o0WnpCb1QyaHVaMmRuWjJaSlozZGhPR1pyWTFWaGVHRnZaMlZrWldGVmFIQmtXbUZYWkRCak1HTlJabGRrYkdkd1kwTmhZbVF5WVVwaGJXUmhZbEpqVW1kNVprVm1NV0pyWjFGbVZHRkZaekZuVW1KVFpWSm5WbU5QWjJGbFZHRktaRTVtVUdGbllVbG5aMlZIWjBGbVZXZEJhR1JpVjJkR1lUZGtSMkZHWXpGb05HWkphR3hsY0dVd1oxSmtiV2RLWlZOblZHUXhaM1JrUjJWRlpqTmxhR2hVYUZSbE1tRlNabkZuVldONFptdG5WR0ZQWTFGaGRHWkZhRlppYm1jNFp6ZGhSV0o1WTNobFVHZEphSGRpVFdWeFoyTm1VbU00YUdGaVVHUldZbWhvVkdWRFlXdG5NR1ZsWldWbVIyYzBaQzlsWldOdVkxSmxjMkZhYUhobFdXZFRZVlJtU0dOV1prdGpSV1ZHWWtwbVJXVkRZbnBsV1dOV1lrVm1SMmc1Wm5GaVRXaERZMmhqUjJkamFHZGlkR1o2WWtSbVZXTjNhREprVEdKRllsVmlWbWhCWmxkaWJHTndZa2RqUTJoS2FHRmxaR1ZDWkdoblMyZFZZa2hrVm1SbFltRmhSV1I0WlZsb1pXTkRaWFJqT0dSa1kwRmhPV2h5WmxWa2FHTlNhSGhoVW1ob1lrNW5OR0ZWWWpCbE9XVnJZbEJsUW1oS1kweGpSV1I2Wm1kaFRHaFNZMFpsV21kSFlVRm5VV1puYUZwa1ZHZFZaVkpqUzJKYVlraGliR1JNYUVaalNHRkZaR1JsU0dWVlpEQmpXbWhXWTI1aVVtZDFabVJoYW1jeFpIWmtWMlF5WW1SaldXWlNZM2RoUVdFMVlWSmhhbU53WmxOalVtVkJaSFJvZDJGWFpXdGlTbWgyWlZsbWJXUmFaM0JvUm1KSVpVcG9UMlpqWWpCaFRtSk5abFZuUm1WRlpFSmpSbWhXWVVKamNHaGFZMmRpZEdOd1pWRm5WMmQwWmxKa1dHVnJZVFZoZG1kRloxUmpkR1ZOWWxSb00ySm9aMmxuVW1SSFltTmxVR2RrWTBaa1NXZElZV05uVm1oM1lsUmpUV0ZHWVU1aVVtZGFaMGhoZEdkTFowTmhRbWhPWm5abFEyVXdaWFJqVjJoRFowaG9jR1pYWVdab01tUjBhSFZsVTJadFlsSmtOV1pUWm5oaVVtUjRaa2hqVW1JeFpVNWhSMmRXWkZsaE9XVkxaMGhvV21nM1pVcGthMmRhWVRWbFEyUjRZa2xqUkdWa1lWVmxSV05SWWtGbVZXUXdZVXhpUzJjemFFSm9RMk5pWlRKa1NtTnRaV0ZtVW1KU1pYbGtWR2R1WkUxbVVXaFVaVVZvTVdOU1pGTmtWV1pOWWxCblQyTXpaRkpsV21GbVlrVmpSV1ZvWjFoblZXSnZZVWxvWldkU1owVmhMMlZXWWpOaWRHRTBhR05uUm1kYVl6Qm5SR1V5YUhSaFUyUkdaVWhtUm1WSFkwVm5NMlpvWlZSbFZHZDZZV05qT1daSFoydGhNV1pSWWs5aVFXWjBZbEpqUW1kU1puUmlObUZJWkVWb05XUkNaMkptYTJkd1ltdGxaV05WYUhOblZXSmpZVkptTUdaa1pWUmxVbVZzWTFkalpHRkhZelZvTW1OTlkwTmlOR2RXWTBsb2FHUlpZa1JpVm1Oc1lqbGhTMk5GWlVaaFNtZEZaRU5tTTJGQ1pHRmhVV0Z0WWpsaGFXWmFhRzFpYTJkVloyTm9hMk0xWTNwblJXUkZaSGhsWTJkUlp6Rm1SV1pXWlZWbFIyWnJaamhsUjJKSVlscG1TR0ZrWlVaaWEyWkZaRlJuYldkbllWSmpUMkV3WVZabFMyWlZZVzVqUW1OWFltUm9RV1k1YUhKalZXVm9abEpuZUdOU1pHaGtUbVkwWkZWbE1HZzVaV3RtWVdoc1kwMW1XbVZGWlhwalNtRmFhRWhuUW1Wa2FGcG5XV2RYWVRGbGEyaFJabGRqTldoTFpGcG9TR05zWkV4b1JtZElaVVZoWkdoSWFGVmxNR1JhYUZabWJtTlNZM1ZtVG1kVVlVbG9PR2hCWkRKbVkyRkZaVU5oUjJaYVl6RmlVMkZvWmtKaFUyRlNZa0ZsZEdaM1pWZG1hMkpLWm5abFdXSnRaRnBuY0dGR1pFaG9TbUpQWkdObWVHRkNhRVZpUkdkR1lVWm5WV0pHWjFKbWIyTlRaMDlpZUdWb1lqZG9VV0pYWlZWbGMyZFJaVEJoU21obVlrVmhXR2RPWTAxa1ZXTllZMmhvZDJWV2FHNW9VV0pRYUdGb01XTkpaRlZpWTJkVloxbGpWR1psWTBabFRtaFFhRnBuUjJWd1prTmxRMlIzWVhSaWQyRkdaV3RpVW1aTVkwVmtibU5LYUZkbFptWldaazVqZFdaVVlrZGhVV2cwWTFGbWFHRlNZak5tUjJoNlltUmtUbUpIWkZaaFdtRXdZbUpqYm1SYWFIcGtZbU13WVZwamJtTkdaMmhpU21OTlkyUm1WV2R2WWxGbFZXVnJabEZuVEdkamFFWm9jR0pEWlZwbE1taHZZbkZpWVdaUllXeGhlV0ZTWm01amMyTkVhRmhsVldjeFpWaGpVMlJXWkRGbFNHWmhhRmRtWjJORlpHTmxSbVprWWpsa1ZXaFNaRnBvVDJObVlWRmtaR1puWjFSalJtRmtaVFJsVFdOV1pUbGtPV2RCWmpKaWMyUmxhRVptUjJRNVowZGxRV1Z0WkhCa1JXRlVZVEptU21OellWVmhlR05HWldSa1kyZENaRnBpV21SSFoyaG1kR2Q2WjFobVJXUTFaMEptWW1KclpYQm5hMkZsWVZWamMyWlZaR05qVW1jd1kyUm9WR2hTWld4a1YyRmtaRWRoTldneVpHTmxNbUU0WjBWblRtaFdZMDVoVkdOQ1p6SmxOV0ZuWWtWalJtWkthRVZtUTJFelowSm5ZV0ZSWTIxbk9XTnBabHBpYldWcloxVmpZMmhyWXpWaWVtVkZaRUZuT0dKTlpFRm1aMmgzWWxabldHTllZVTVoWldOSFlVaGhRbUpDWldSalJtaEdaa3RpVkdKdVlsVm1VbUZqWWpCaWVHZFNabVZsU0daQ1kxZG9aR0pCWVRsbWNtRlhaMnhsVm1SNFoxZGxlR0ZOWVhOb1MyUkJhRUptYTJWWlkxWm9UV1pKWldKb2JtaHJaVWhoWTJjeFpGbGxVMlZsWjJ0alpHUnJaVkZuVjJNMVlVdGpXbUpJWVd4blRHZEdhRWhuUldWa1pVaGlWV2d3Wmxwb1ZtZHVaVkpsZFdWbVlXbGlXbUYyWWxkb01taGtZME5qWVdkUlpVNW5NV2hSWmxKbFFtRkJZVTlqVVdkS1lUaGlZMlJGWWtwbWRtaFpaRzFuV21Kd1lVWmpTR05LYUU5b1kySjRaRUppVFdGVVkxWmhSbWRLWmtaaVZXTTFZM0JoWkdoQ1kyaGhkMkpWWWtkaldtRktaRk5oYkdKT1lXOWhSR1JJYUU1b1JXZFJaRWRpUm1ScFlsWmpibWhKWlZCbVMyUnNZbk5pVldaa1p6Qm1RV00xWVdWb1JtUk9aRkJqV21GSFpYQmtWR2RIWjFKbFRtaDNZVU5uTVdSc1kxZGxSV0p1Wm5Ca1NHaGFZVVZrUm1GMVpWTmhiV2RTWkRWbFUyaDNZVlpvYW1oQ1pWSmxNV1ZSWmtKaFJXSjBhREJsV21kdFptUmtjV1ptWjFWaldtUm9aVVprYTJGa1pFWmpaR1JWWTNkaFYySmxaRVZqVVdSTVpHTmhSbUZ3WlVOalltRXlZa3BuYldGaGFGSm1VbU41WjFSamJtUk5ZbEZsVkdaRll6RmpVbVJUWVZKaFZtWlBabUZvV0dGUlpWRmlaV0pCWlRGak1HWlVZVVZtY0dKSFkyWm9VV1pDWkcxbVZHTkdZbVJvTkdWUFpFWm9PV1F3WkVWbk0ySmthRk5pUW1SWFkwNWhVR05GWkhsbVVtUlVZMUpsTW1oNFlUaG1VV2hDWjJ0alZtUmpaVVZuY0dSUlpsWmxaMmMxWjIxblVtUXpaa3BpU1dGaVpXaGhXbVJyYUdObVZtSXdZMGhsWTJOU1pYTmxaR2RIWmtKbVFtWm1hR1ZsUldSU1pUSm1ZMll5WXpsalIyZGFZbmhqV1dGVFpsUm1TR05XWWt0a1JXWkdaRXBuUldSRFl6Tm1RbUpoWjFGbGJXZzVaMmxuV21GdFkydGhWV1JRYUd0aE5XZDBZVVZuUm1VMWFHUm5VbUZXYURSaVZtVlRaMGRpT1dNd1pFVmlSMmhXWWxWbldtVnJaV2hqWTJoVVkyMWpjMkZTWjFCa01HSjNaRTVqU21SSVkwRm9ZV1prWjBKbVJtaHlaRkprZDJKT1ltbGhWV0ZuYUVKaWVHWlZaVEJrYkdWcFptRmpiR1YwYUZoblJXY3laakJvVEdWR1kxWmpPR1ppWkZsalYyZ3hZV3RpVVdKWFlUVmxTMlphYUVoamJHZE1Za1puU0dGRloyUmhTR2RWWWpCb1dtTldabTVvVW1GMVltUmlibVpOYUhSalJtaERZVXBvV0dKWFlWWm1aR2RtWTFOaGFHZENZbE5rVW1GQlpYUmpkMlpYWjJ0aVNtZDJaVmxpYldOYVluQmtSbVZJYUVwblQyTmpaekZuVFdaT1pFaG9hR1ZTWlVwaVFXZFdaVkptUkdka1pVSm5hR1IzWTFGb1dHRlNhRkpuVTJkclpqVmxNV0pGYUZoa1RtSk5aMVZqV0dKb1ozZGhWbU51WVZGbVVHRlpZWGhrVFdoVlpXSmpSV2hhYUVoaVFXaDRabmhtVUdaaVpqSmtjR0ZEWVZwa1FtTndaRGhpU1dGV1oyeG9WMkpGWW01b2NHRklaRnBqUldkR1pIVm5VMlZ0WkZKbU5XSlRZM2hoVW1GNFowaGlVbUV4WVU1b1IySldabHBrTUdKYVlXbGxUbVY2Wm1ObWEyRlpZM3BvWW1SV1p6RmpUV05tWld0b2IyRkRZa3hpTUdJd1lraGxWMlJzWVhCbFEyVmlZVEpoU21KdFkyRm1VbUpTYUhsaVZHUnVhRTFvVVdOVVowVm9NV2hTWTFObFVtZFdaVTloWVdaWVpWRmpXV05sWjBGbVpHVXdZMVJtUldodlptRmlSR2hzWXpWbGVtUlNaakZsUm1keVprUmtWbUk1WVRSb1NtaFhablJrVTJGR2FFaGlSbVpIWVVWak0ySm9aRlJsVkdjeVpWSmtjV1JWWjNobGEyaFVaR05tUVdGMFpWcGxWbUZvWTBwbE5tZFdaMjVtV21kYVpXSm9iR0ZrWnpWaFdtSkZZbk5sWTJSWlkwRm5VV1ZRWmxSbFVtRTVZMWRpVG1oWFlXUmtNbU5rYUZkaWJHZHpaVnBqZUdOWmFGTm5WR2RJWjFab1MyVkZaMFppU21SRlpFTm5NMkpDWVdGaFVXTnRZamxqYVdKYVoyMWlhMlZWWkdObmEyYzFaWHBuUldOR1pqRmxabVpUWlZWaGEyUkpaVlZpTTJWU1p6Qm5SV2RIWTBaaFdXUmFabXhrUm1WTllWUmxhV1ZCWjFsaVkyRXdhSEJpV0dWVllXNWxRbVpYWm1Sb1FXZzVaM0pqVldKb1psSm5lR1ZTWldobFRtSTBZbFZtTUdnNVkydG9ZV1JzWmsxb1dtaEZhRE5tUVdSTVpGZG9WbVZaWVVSaVlXWkdZamxoYTJOWVlVaG1UbVJZWjFwb1NHTkdZMkZuUkdOWFpFMWxaR1JIYURCaE1XUm1ZbGhpTTJOU2FHOWlZMlZHWkd4aGRtRlNZVzFuWTJKWFprVm5hMmQ0WXpGbVUyaG9aVUpvVTJOU1prRmtkR2gzWlZkb2EyRktZWFpvV1dWdFkxcGljR1JHWVVoa1NtWlBhR1ZtZUdablkwRmxWR05WWkhoa2FtaEdaRlZtTldGd1ltUmtRbVpvWW5kbVVXTllabEpsVW1kVFlXdG5OV2N4WWtWaVdHTk9aMDFsVldOWVlXaGxkMmhXWjI1b1VXWlFabUZqTVdOSlpGVm1aV2RWWWpSaFEyTmlZVlpvVG1WS1pscGpRMlpLWVdGa1IyUlJZamxvYzJKRFl6QmhhR05QWTBkbk0yRnZZV0ppVkdSclprWmtkV1ZUYUcxaFVtWTFZVk5qZUdWU1luaG5TR1pTWmpGaVRtWkhaMVpvV21Zd1oySmtibWhhWVhwbFltY3dhRnBsYm1SR2FHaG5TbVpOWkdSb1ZXUkpZMWxqVW1OR1pXTmtUR05rWW14aGIyaEVabHBuYldkS1p6WmhaR1JTWmxKbGFtTllaa2hoYjJOUlpVVm9SMlZrWkZKaFUySlNaMVprVDJOaFkxaGlVV2haWjJOaFJXTkdZekJsVldkVlpIQmlUMlprYUZKa1JtVjZaRlJoUm1aR2FEUmhZMkpHWlZwaU1HaEVhREptZEdWaFpraGlSMlJrWjFabVJXY3paRFZvVkdOSFoyMWxNV0Z4WjFSamQyTlZaVlJrV21GbllrcG9XbWhEWW1wa2FHTTJaMUpqTW1aU1prSmhZbUZyWm5CbmEyWmxZVlZsYzJaVloyTmlVbVl3WW1SalZHWlNZMnhtVjJGa2FFZG9OV2N5WjJObE1tWTVaa2RqV21SNFkxbG5ZV1ZYWTIxbldtUkxhRVpvYkdSSlowTmlRV0p1Wkd4b1YyTmhZa2RoT1dWcFpscG9iV0ZyWWxWbVkyRnJaalZpZW1SRmFFVmplR1pPWkZWa1ZXVnJhRlprVkdkdFoyeGpNR1ZIWmtob1FtUkNZV1JpUm1ORmFFZGxWR2R0Wm5OaFVtVmFaVlpuYkdORlltRmtNbWRXWkZkbFkyVm5aV3hqY21SUllYZG1WbUZuWmxWbFoyWktZWEJpVVdSVlpEbG9ObWhoWkdobE9HVmFhRVpuV0dkWllreGtWV1pTWkdkbVUyVmFZVEJoWTJodlpsTmtSMlZrWmxKb1ZHSnVabXhoVEdkR1kwaG5SV0ZrWmtobFZXRXdaRnBoVm1SdVlWSm1kV1ZrWm01aVRtSjJZa2RvTUdjd1pGZGhSV1JyWjNoak1XVlRaMmhvUW1SVFpsSmxRV0YwWW5kaFYyUnJaa2xsZVdWVFpVZGhXbWR3WVVaalNHTktaRTlsWTJoNFlrSmpUV1pVWmxabFJtUktaVVpoVVdSQll6aGhUMlJHWjFKaGQyUllaa2RpYkdGTlpGTmxaMlpDWW1abVJXUllaRTVtVFdkVllWaG9hR1ozWlZabWJtUlJabEJsWVdZeFlVbG1WV0pqWTFWbldXRk5aMlZuUm1aMFpraGlTMlp0WVhCbFQySkhaRkZqVm1ac1lraG1hMlJ3WWtaaVIyY3pZbHBvU0daaVpVSm5TbWQxYUZabk1tZFNaRzloVVdOb1pqRm9ZbWhJWlZKa01XaE9ZVWRpVm1KYVpqQm1ZbVJ1WkZwaGVtWmlZakJsV21WdVowWmlhR1ZLWVZkb1pHZFJZVkZvVVdkVVowVmxVV0ZrWVZwbVZXVTVaMUprWldOdFkwcGtaMlJpWm5wak5XUjVZbFJvYm1STlpWRmxWR2RGWVRGblVtSlRZVkprVm1KUFpHRm9XR05SWkZsaFkySkZhRVpoTUdKWFpWVmxTV2hCWm1SalVtRjRaWFZtVkdoRllXUm9kR05hWWxWaVZtZHBaa0pqYldka1p6UmxSbWhJWTBaaVIySkZhRE5pYUdGVVkxUmtNbVJTWjNGblZXTjRZbXRvVkdkalpFRmpkR1phWjFaamJHTmtZakJoUm1GNlowVmlVMkZLWTJ0bFNtRnpZbU5uVVdoVlpGVmhZbVozWVUxbVJHRlVabEZsYUdoSFpXWmhWMlExYUhkaFkyRXpaRFZoVjJGa1psRmxWV2hpWTFSaVEyWnNhRXRtUW1KVloyUmpWMlJGWW0xaVdtWlVaVlJsYTJoV1pHbGxXbWR0YUd0aVZXUmpZbXRoTldkNmFFVm9SV2g0Wms1a1ZXWlZhR3RtVm1oVVoyMW9iR1l3WVVWblJHSTFZMEpvWVdOV1kwWmhabWRYWWtkaldXSkVaVmxsTUdkM1prNWlaV2RJWW1oaVNHSmFaa0pqTVdRMGFGVm1hR2RLWjNoaFEyaENabkJvZUdKWFpXdG1UbWhQWm1GbWJHSk5abHBoUldnellVRm9UR2RYWTFaaFdXUlRZV1ZrYTJoa1kydGxVV0ZYWlRSbFVHZGhZV2xuYTJabFkxSm9lbUZyYUZaalZXTXdabEZpVm1GbVpraGtVbVIxWW1SamJtUk9ZWFptVW1odFkyTmlWMlJGWVd0aGVHSXhZbE5qYUdkQ1kxTmpWR1ZGWkZKbGQyaFZZbFptT1doMllVMW5WMmM1WlhsaVVHRnVaRXBtVDJWalluaGxRbU5OWkZSbVZtUkdZMHBuUm1KVll6UmtNR1ZZWm1obmFHUjNaRkZrV0dkU1lsSmtVMkZyWlRWaE1XSkZZVmhvVFdabFkwWmhRMkYzWW14aFFtWkVabTluVUdSSVlteG5jR1pTWjJWbFJtZ3daalZsWldoR1pFNWpVR1phWmtkbmNHZFVZa2RqVW1GTlluUmhTV2RXWW14b1YyWkZZbTVvY0dkSVlscGlSV0pHWkhWblJHUkVaMFZqTTJSRFlrVmtRV1UwWVZWbWJHZE9ZMDVsWW1GR2FEUmhaMkphWkROb1dXVnZZbEppVldWYWFHNWtSbVZvWmtwbFRXUmtaVlZrYjJoUlpsVmthMlJTWW1SbVRXaFJZbWhvUTJoUVlWZG1TbUkzWTJGblZXSkNZemhrUVdGcVpWcGxaV2REWm5obmEyTmFaRlZsYW1FNVlrOWhZV0ZZYUZGa1dXZGpaMFZpUm1Fd1kxVmhWV0Z3YUU5aVVHWkdZV1JtZW1GU1owRmtWV1J6WVdObFJXSm9aSEJoUkdoNlkyeGtZbWhHWTBOa1RXSkVZVkppZVdnd1owSm5RV1ZYYUZGaFdtWkNaekJpZEdKaFlsQmphMko0YUZoalJXTkZaMEZvTVdKRGFHZGhZMkZLWkV4bGVHWm5aVWhpVG1ablpUbGlVbVptWkRGbmVHSk9Za2hpVm1SVlpWQmpabU5DWkRCb2FXUkpaMU5sV1dOSmFFbGlRbWR2WmxOb1IyaElaSGhuVW1WUGFHeGtTbU5GWWtOaU0yTkNaMkZsVVdKdFpqbG1hV0ZhYUcxamJHWlRaVkJuVW1aNFkzcG5SMlpDWTI5alRXWkJhREJoYkdOalpGUmxibWRTWnpCaVIyRnVaRXBuVG1Ka1owSmtVbUpMWlZWaU0yWlZaa0ppWVdkRllYZG5SR05sWmtkbk5XaFhaVTFpVW1GU1lYSmpWMkY2WlRWbmVHRlNaV2hqVG1FMFoxVmpNR001WTJ0bFlXTnNhRTFuV21aRlp6Tm9RbWREWmxkaVZtRXdhRkJoWldkcVpGRmxkMk5GWm5saVkyTkZaa2xsTTJkalpFNWlVbVJxWnpWblVXUm1ZV2RtVm1GWlkwSm9RbUpqWkdoaFRXVnFZVnBqYUdaQ1kzcGpaR0ZIWWxoamFHWldhRGxvVDJGVlkxRmpRV2hFYUZWbFZXUXpaRlpqYTJSSlp6ZGlZbWhFWlZWbmJHTllZbFJuUldkTVptVm9NV1ZXWVVGbVZHWldZMnRqVFdkR1pWVmxWbVV3WjJSbFJXSjNZMnRpVTJSSVpERmhXV05WYUZkb1VtUXhaMFZrV0dWT1lrMWtWV0ZZWldoaWQyVldabTVpVVdkUVlrOWpVbUZrWTBGaFNtSkNZbEptWkdObFlrSm1jR2RWWkZSaGJXUndZVlJqUjJaU1pFNWlkMlJEWXpGbmJHTlhhRlJvTVdWQ1kwaG9XbUpGWkVabmRXTlRZbTFsVW1jMVpGTm1NV1ZKWm10aVZXRXhZVFJtV21oVlowSmphMlkyWm1KaVoyZFdZemRpVDJJd1puQmlibVJTYUVKaU5XUk5hRkJqUldOTlpGRmhRMlZYWVRSaVRHaGpaVVpuY0dGRFoySmpNbVZLWkcxaFlXaFNZbEpoZVdWSFlVUmpTbUZEWWxSa1FXUm9aVkpuVm1GQ1oxWm9UV2RoWmpKa09HWjVabU5pUldoR1l6Qm5WV1ZWWVhCblQyTmtaRkprUm1KNlpWUm9RbVJvWkRSaFltZFdZVmxuV21KVVltcG9PR2RoWjBkb2FtWjNaVkJrV0dWWVlVRmxTR2hSWTFOa1oyVjJZa2hrVm1nMVlVaGhUMlpCWkdSaFdtUklaM2htZEdOb1pHSmxWMk5TWVVKblltRnJZM0JsYTJabFlsVm1jMlJWWW1OalVtSXhaR0psUVdkcmFIUmxWMk5tWVVSaVoyVXpZVWxuVjJRNFkwcG9XbUYzWjNObFUyaElaMjFvTldkTFpWZGpWbUpLWkdGaFEyUjZZVGxrUW1aUloyMWtVbVZ3WVV0aFYyWkJhRlZvVG1nd1l6Vm9OR0ZFWmxWbGQyWXJZVUprVW1SMFpHTmpRV1ZEYURWb05tVllZV2xuU1dkUFpVOWtWR2RKWmtObVJHTjVZMlJpZVdGUVprRmxaMkpWYUdOaVIyVkdZMFZuV1doM1lUbG1kR0pWWkd0a1FXaExaME5vVjJZMVluaG5VMlJIWlZabmEyWmhabXhqVFdkYWFFVmtNMlJCWlV4aFYyVldaVmxpVTJSTFkwRmpTV1IzWWtaa1JHZDNaVVZsV21kRVkzaGpVV05RWTI1bVJXUmtaRWhuVldnd1pWcG5WbUp1WlZKamRXSkxhREZsYkdWMlpGSmxiV2RqWjFkbVJXWnJabmhtTVdWVFpHeG1XV1ZJWVVOa2EyWm5ZV3RsUldKM2FEQm9hR0ZaWVdkaE9XVm9aRkZoU0dFMVprOWhTV05TWVhob1RXZENaa1ppYUdKS1kxUmliV2hTWVhCbFpHRkNabWhsZDJOUloxaGxVbVJTWmxOb2EyVTFaREZqVW1ONlpFbGtaV1ZWWkZSbk1XRjNZbE5oTTJGUlpVNW5ZV05WYUd0aksyUmpaRlZpV1dkVWFHVm9SbVZPYUZCaVdtTkhhSEJrVkdOSFpWWmhjR0ozWlVabGJHSnJaamRvVldkNVlqUmpVR0ZoWldkaGQySnVaMEppUjJSM1pIUm5VbU5XWVdkbU1HWlZaVEZpYjJaYWFGVm9WbWR3WWpCalNtUXpaRGxqYjJOU2FGVmpXbUZ1WkVabWFHVktZazFrWkdSVlptOWxVV2hWWW10aVVtZE9ZMUJpZDJOb2FFTmhXbUo2WkZGamJtVlBabmhoVVdjNVlWUm1iV1EwYUZGaVNHUnNabHBvVW1KQllrSmtWbUpSWm1Gb1ZHVnpZMFJtWTJORlpYQmhMMk5JYUd0bFRtVlBZazFuUW1GR1p6UmxWV2RXWjBWaVRHaEtaVUZvVVdJNVpGRmtVMlo0WkdOa1ZXVnBaMDFrU21KWVlXaGhjMk5pYUVSbmFtaFpaMHBqU0dSR2FERmlWMmhsWlVab09HWnBZVWRtVjJVNVlucG5XR1ZGWkRWaFFtaGlaR3RsY0dacllXVmtWV1p6WmxWaVkyWlNZVEJoWkdKSVl6Rm5kMmREWlVsa1ZHaDNZelJvWTJKNVpuQmtaR1ZVWlZKa1dXRlRaMVJvU0dSV1pVdGhSV1ZHWkVwa1JXVldabXhrY0dWaFkxRm9iV2c1WTJsa1dtaHRaR3RpVldKallXZG5aMlZ0WTFoaFoyVTRZMXBrUjJGQmFGcG1ZbWhVWkdwaVRtWTRhRlJuU0dWNFlrSm5TbWRzWlRGb1MyaENhRE5vZDJOU1lrdGxSMk5hWlZKb1pXSklZVUpqVjJKa1pVRm9PV0p5WkZWb2FHWlNZM2huUldaR1lrbG9jV0ZWWkhkbmNHRnJabVJvTVdWT1kwNW9TR05VWVhoblQyZEdZWGhvUm1oSFlrMW1iR1Y0Wms5bFVXTlhZVFZuUzJGYVpVaGtiR0pNWTBaa1NHTkZabVJsU0dKVllsVmhXV05DWTBoaFVXZDVZVXRuYm1GT1lpOW9VbUZ1Wld0a1YyUlJZVVZuVm1VeFpWUm9RbVZhWmxOb1ZHWkdZV3hoZDJWU1pqQmpTbUV2WW1GaU1tUndabkJvU0daSVprMWxTR0ZqWkRCamQyUlJaRlJrVldSR1lVcGpRMk13WVRSbVoyTmtaMFZtVVdWemFGRm9WR2N4WVZKb1ZtUkZaelJsZDJGSFlVaGhUbVJMWmxaa00yaG9ZVFJsU0dZeloxRmxVMmRoWVhobFkyaGtaR0ZoYldGM1pWUmpaV1pHYUU1b1VHTmFaMGRpY0doVVowZG1VbVZPWTNkbVZHSlNZVmxqUldORlkyNWlTV1pTWjBwb1VtUk9aWFZoUW1oWFlWSmlhMlpUWW5obVdtVjZaRVZvVW1nd1lVWm5SMmhWWTNSaU1HWlFZVWRuTVdaNmFFcG1hMlZhWmpWb1JtSnNZM0JtV0dWa1lWVmxSV05pWTBkaWEyTXdZa3hsVUdneFozQm9TbUpqWTIxa1NXZGxZVmxuVldWQlowcGxRbU5uWmpSaldtTldZekpvWkdoU1psTmpVbVJXWTA5aFlXWllZbEZrV1dkalprVm9SbWd3WlVGbWQyZzRaR0ZtU1daRlkwMWtPV0ZVWlVKaU5XRnFZMWRqYkdoYVpUQmtSR2d5WTNSalUyWkdZMGhoUm1KSFpGUmtiR1JLWVZSbFZHY3lhRkprY1doVlpuaGlhMlZVWTJOb1JXWXdaMDFoUjJGR1prVm9kV1ZFWldsbWMyVlFZbUpvYW1GT1luTm9UR1pWWm1Oa1ZXTkpaSGhoUldoa1lVSmhRbVpDWjFkaVRHVXdZMUptTW1aalpESmpPV2hIWjFwaGVHUlpabE5qVkdSSVpsWmxTMlJXWTJob01HaFhaME5tTTJoblkwMW5RV042WmpGa2FXaEpZVEppYTJWS1lXTmxhR0p3WXpsalVXSjNaRUZqUldSRmFHZG5kMlJrWkVob1IyZFdZakJtVldoWVoyeG5UbVZrWWtKaU5XVkxaRlZvTTJOVllWUm5ZMlZWWmtKbVVtRk5aa2hoUW1GTVlXUmxRbUU1WlhkbFZXVnNZbmhqZUdkWFoyaGtUV1k1YUZoaVVXVk5aR2hrU21aQ1lsSmpUbUZYWmpKbmMyWk1aa1ZsVm1aWloxcGhXbU13YUdSaU1tWlRZMFZuVW1oTFpWcG9TR2hzWVV4bVJtRklhRVZuWkdSSVpGVmxNR2hhWjFaaWJtTlJaV2htWkdWdVpHaGxlV05TWW1oblVtUkRaMUZoUVdKVmFEZG9SR1pTYURSb1ZXUkdZV3RoVVdJNVlrOWtVV1J2YUhWb1RXZEJaVlZsYldkVllrUmtaR0ZIWjA1amJXWnpaMFZuVFdWR1prWm9RMk5HWVZabGVHWTRhRmxoYUdKb1lUWmpVV0pVWkVWamNXZEJaMnRrTldNcllVVmtWMk5KWVhoalYyRkhZMDVuWVdGV1pHNWlVV1ZRWjJGaE1XSkpabFZoWTJWVlpGbGhWR1JsWmtGblJXVkxZVTFoUkdFNFprSmhWbUY0WlUxaEwyZEZaa2hoVG1WWFpFVmtibVZ3YUVobFdtaEZZVVprZFdKVFoycGtiR0ZVWmxOamVHTlNhSGhrU0dkU1p6RmpUbWRIWmxabFdXaDVaVTltZW1GblozZGxUMk4zWVRobmIyTlhaMEpsU1dob2FHWmtVbU0wWW1OaFZXWm9aVmxpU0doallVSm1UbUZNWVdKaWVtUnNaMDFvWVdGU1psSmplV0pVWlc1aVRXZFJaMVJpUldNeFlsSmlVMlpXWVhkblNXRmhabGhsZUdWTlpHTmxSV1JTYURCbFVXTkZaM0JvVUdOaFowRmtlR1o2WlZoaFJtWkZaV3RpVEdaR2FGcGlhMlJFWVROaFZtaFRZMUZqU0dab2FFZGtVbWQ2WjBGblFtZEJaMFJrVG1GeFlVaGhWbVY0WlVWb1kyVklZMnRuV1dKSFlrWmhWV1V2WTBsb2FtRlpaVlJtU1dGU1ltaGljMmRsYUhkbVVtUlRaRTVqTUdFMVpsbGpSMkZTWm10blptRkthREprTkdnMFpGQmlSR1YwWTBkalRXUnNZemxoWTJoSFlraG5aR2RFWkVObU0yaG9aMFZqUTJRelpFSm1ZV0pSYUcxaU9XTnBZbHBsYldoclpsVm1UMmQzYUdoa2VtUkhaMEpqYUdKT1lWZG5hMkpzWlVoaFZHSnVhR1JsTUdWVllWaGliR0p5WW1Sb1JtSkdZMHRpVkdSdVkxVm1VbVpqWkRCbWVHSlNZMlZsU0dOQ1lWZGhTV2hGWm1Oak5XRklaRlZrVG1SNFowTmlSbUZaYUhaaVZXWjZhREJuYkdoS1lVSm5VbU5qWW1SaWFXZEtZMXBrUm1KblpsRm9ZV2RsYUVSblRXRXlaVWRtUTJaallVVm9TV0V6Wm10bVptUlhZVE5tUm1aamFGaGlaMmMxWm1OaFFtSlRaMlJuZFdKT1pVUmpXV2N5WmtOblUySnNZVk5sUldWbllqUm1aMmRFWWtaaFdXWllaVVpvWjJoellUaG5TR1YzYUhka2IyZE9aR2xrTldOeVpraGtWMkZzWkd0bVkyZDRZa0prVFdOVWFGWmpSbVpLWmtaa1ZXZzBaVEJqV0dob2FHaGpkMlpSWkZob1VtSlNZbE5qYTJRMVp6RmpWbVY1WjFsalEyZEZhR2xrZDJVMVkwZGlWR1J2YUZCalFtSXhaSEJqUVdKbWFGVm1XbVpDWkdSaFJtUk5aMGRoWVdWSFlXOW5WMkZHWkZKblRXTXZaa0pvTVdoclkyVmpSMkV6Wm05a1kyaFVhR3RqUm1OMVpWTmliV0ZTWmpWaFUySjRaVkprZUdKSVpGSm9NR2RGYUZob01XTmFZemhoWW1SNlpXaG9PV2RLWVdobVZXZEdaVkZtTVdaUlpFdG9UV1JDWTJkbldXZENhR3RtTUdkRFlsZG1iR1p3WWtOblltSXlhRXBrYldaaFkxSm5VbU41WmxSaWJtZE5abEZuVkdkQ1pHdG1XbVpIWXpGbWIyaGFZMkZsVkdad1oyUm9TbUl3WVVWbVFXUkRaVUpuYjJaTVkwVmlSV2ROWm1oaFFXSjNZVTVsZDJWa1pERm1VV1F5WlZkbGFXTXdaVlZrVldKVFlrNW9SV2hGYUhwaGEyWkNZVU5rUkdORlltNWxSbVJzWldSb1NHWmpaMFZoV1dkTmFFSmlWV2RhWXpabVFtaFRZMFpsUW1GTVpEQm1iMkZIWTB4aFFXY3hZMU5tVG1KRlpqaGlaR2RDWWtaaFkyZEdhRWxoUTJnNFlUUmxUV05EWkhCaFFtSmlZbWRpTUdRMFoxUmhTR1pXWmt0a1JXRkdZVXBqUldkRFl6TmpRbVJoWkZGaGFXZFpZV3RrV21WdFkwWmxSMlJqWTJ4b1FtZDZZMWhuTUdKM1pGSmpSR05WWTJ4bFpHWlVaVzVrWkdVd1kxTm9ibUZzWkhKa1pHTkdaa1psUzJKVVkyNWxWV0ZTWW1ObE1HZDRhRkpoWldoSVowSmlWMlpKYUVWa1kyRTFZa2hpVldGT1pIaGtRMlZHWkZsb2RtVlZaM3BvTUdac1lrcGtRbVZTWW1Oa1pHUnBaRXBqV21WR1ltZG1VV0ZoWjJabFZXRlZZWGxoUVdGRFprbGlabUZKWjFoa2RHZE1aRlpqVTJaT2FHRm5VMlZCWlVKblkyWkhaME5oUW1GMVlWQmhlV05DWTNaaFEyTlVaRXBpUTJaRllXZGxUV0Y2WjFOaGJHSkpZbVJrUldSVlpWVm1NR0pEWVZWbVZtWnRZMlZrVldaNFluQmpSbWhJWTBwaFQyTmpZbmhrUW1STlkxUm9WbUZHWkVwb1dHaEJaV2hoY0dObVpFWmxSbUozWjFObWJtaFJaVlZvVTJSc1pVSm9NV1JTWmxobE1HVkJhRVpsUkdSWlpETmlRV1ZxWkhkb1IyaGhZWGRtV21oalpFbGtkMk5zWjBWalpXSkNhREJvUzJkTllUSmxiMlJvWmxkaVJtZ3dZek5tVkdacVpIZG9SV0ZSWlVSb1ZXUldZbUpqUldkTllraG9RbVJEWVVGbE9HSkZaWGhsVVdjcllWTmhSV1ZzYUU1bVZtUm9Za0prTUdWUVkwUm5ZMlk1WVV0bFFXUk9ZV3hoU0doM1pHeGpiV1prWWxWbWIyUlJZVlZsYTJSUmFFeGtZMkpHWm05blptRlNabGRtU21OdFkyRm9VbVpTWW5sbFZHaHVZazFoVVdSRGFHaGxaMk5tWlVObWEyRkZaRWhtU21GcVpXOWhXV1JJWXpCamEySm5aMWhsVldadlptTmxaV0ZTWVVWb05tWlJaMFpsUldnNVptVm5WbVJaWVhaa1NtaFhaWFJuVTJKR1owaG1SbU5IWjBWaU0yRm9aRlJrVkdneWFGSm9ObVZWWjNkb1kyUlVaa2xrWjJGMFpXWmlWV2hDWkVwb2VXUkdaVmRqVW1oallXSmtiR1I0WVhoblltaEdaV2RrUW1kalpGSmxXV2hrWWtoaGVHVnNaR1JpWkdSSWFEbG9MMmhoWmtWa1ZtWkhZbHBrZUdOWlkxTm5WR2hJWjFaalMyWkZZa1pqU21KRlkxUm5WR000WmtsbVVXWnRaMk5sTUdSS1lYcGhjMkZWWTFCa1ZXZzFaSFZoUldWR1ozaGlRbU5WWkZGalJXVldaVlZtTW1OclkxcG9WMlJUWmxGblNtVmxZbWhoZDJkRWFFRmtTR1F4WjBab1ptTlJZVUZpVldkT1pHcG9ZMmREWmxCbFFXVTVZMjFsVldKc1pURmhPV0ZTWjJkaVJtSjRZVk5tUldnNFpITm5ZV1pyWWpCaVdtRllZa2RoYzJKTVlWVmtiR0V4WW1SaFkyUXlaakZoYTJSUllWZG1OV0pMWTFwblNHWnNhRXhtUm1aSVowVmpaR0ZJWWxWbk1XaE9aMHhoVkdFeGFIVmtabVZZWWsxbVoyaFBaakppWTJOTVlVOW9SV1o0WmpGblUyZG9aRUpuVTJoU1lVRmtkR0ozWVZkbGEyUktaM1psV1dadFpscG9jR1ZJWmtOa1FtaFBaV1JvVW1WQ1pVVmpXR1l3WVZKbVkyVkdaMVppU21ReFkyUmhRbVZDWkc5alVXWllZelZrVW1kUlpHZGhkR1l4WVVSaWJtTk5aa1JvVldoWFlVcG5kMmRTWkRObFVXWkRaMkZqZUdFd1pHUmlaV05GWkRoallXaGxaRVZsTVdKU1kyVmpiV0Z3WW1KalFXTlNaMDVvTm1KRFpqRmxSV1JVWTBWbmJXUldaa2hrUzJjd1lrWm5NR0pUWm01blZtWTFaRkptYUdWUlpTdG1SbU5DWWxKaVYyaE5hREZoV21nd1lXSmhibWRhWlhwbVltZ3daMXBoYm1KVFpucG9hR2ROWVdSbFZXUnZZVkZpVldSclpGRmpUR1ZqYUVKaWQyaFlaa2xoVTJORlpubGpTV2hHWVhObk9HSlVaV2hpTUdoWlowZG1SV1ZHWmxKblIyRjRZbXhqVDJOSlowaGxaMlpaYUU1bVZXWm9aekJrUTJadFprSmpUMkZrWTFKaVJtaDZhRlJuUm1oR1pUUmxZMkZHWlZwbU1HZElZekpoZEdSTlpFWmxRMmRPWkVkb1JtRllaRFZuVkdWU1lYcGtXbVp4WVZSa2FHVnJaa2hpV1dWb1lrcG9UbWRVYUhka1VtaDBhRlptV0dFeGFGVm1ZbUZyWTBabGEyVkxhREJoYzJWbVpHTmxVV2QzWTFWa1ZtUnFaazVpVjJSa2FFZGxOV015YUdObk1tWTVhRWRrV21kNGFGbG9VMlJEWW1wbWIySlpaRVZqUm1KdllsTm5VMkpwWjBwbVlXWkVZbGRoT1dJdlpGcG1ibVpyWlZsbFkyTm5abHBoZW1aRVpsVmhkMlZuWWtWb1FtY3haMlJtVVdORFlsRm9PV1pXYUc1a1oyVldaV1ZvYUdZd2FGQm1RV2RFWkVwbFJtaFBaakJsZUdoamFHVm5SR0pzYUdGaFpHaENaM1JoYVdGVFlWSm9VV2MxWjFKb1oyVXhhRFJsU0dSR2FGSm5hMlpaYUZaamFHZFhZVWRuYkdGdloweG1WMlZXWWxsbFUyaGxZMnRpWkdSclpGRmtWMkkxWVV0aVdtWklabXRoWm1aaVpYcG1aMkprWlVaa2EyY3hZMWRoUzJRelpsSmplbVJrWjI1aWMyYzVZbEpqYm1WclpFbGhSR2hGWkhoa09XRlZZMmhoUW1KWlkxSmxRV1JOWXpGa1YySnNaekZrZG1WTWFGZGtXbVY2WVVaalIyVkdaRTltWm1ob1lVRmxSR1pTWmtabGFHWkJZMFppVldob1ozQmlXbUpuWlRGaWJHRlhZbXhvTldoU1lWTmthMmcxWlRGb1JXSllaRTVrVFdGVlpGTm1WbWRoYUZab2JtWlJaMUJoWVdneFprbGpWV05qWjFWaVdtUldhRXhqVW1Fd1lrMW9UV05EYUUxalkyTldhSGhtVFdaVllrRmpkMlV4Wm1GbVJXWnBaMmhqVEdSYVpVRmlhR2RwYUZOamFXTkdaWGRuVTJFd1l6bGxZbVJJWVZKa01XaE9ZVWRpVm1WYVlqQmpZbUp1YUZwaWVtTmlZWGRuT0dOb1pVWm5hR1p2WWtabVpHaFZZa1ZvVVdKR1lUQm5VV1pXWldOa1FXYzFaVTFoU1dONVpHTm9iMlpNWTJ0aVFXRTJZbEppTTJWT1pVVmpRbUZDWmpobVpXVklZMmhsVldaQlpreGhRMkpOWlZsaVFXVm5aMEZqTm1oR1ptZGpPR2R5WlVwbU1HZE5aamhtU0dWc1pXeGlObUpIWjFKaloyRjNaMU5pYW1GT1lsTm5WMk41WlZGa1UySkZaSHBsWTJkV1kxUmplbVJaWTNKa1NHTldaelZtVjJOallXZGxTbWhEYUdablFtRktZalpuVW1ZeVkxSmhRbVZpWld0b2NHRnJhR1ZuVldWMGFHUm9UbVo0WmpCbFZtaFlaVkptYkdOSlptUmpRMlJrYUM5bVkyRjZhSE5qVDJST1pGWmhiR0pHWkZSaVJHWnpabEJqVW1NeFprbG1NbUZUWm1wb05HZGtaa0prZDJadlpYZG5UbVpEYUZwb1IyWmxaMnRsZDJWaFlsaGtaMlpuWWtsblEyZFZZV3hsWVdaSFpIcG9NV1l3WVZaamVtTmFZVUppU21Gb1owRmlSV1JEWTFSblFXVlVhR1ZrYkdWa1p6ZG5aV1pJWlVKaVYyRmtaRUZvT1dKeVkxVmphR05SWm5OalltUkNaMDVuTkdaVmFEQmlPV1pyWVdGbGJHTk5aRnBrVm1kVFkxWmlSbVpIWTJkalNtTmlhRTVrVVdSc1kydG1RMlZ0WWxsalpXaGhhRWhrYTJSYVpFZGhTR1pHWVZWalJXVlZaekZuWTJSWFoyNW9VV1pvWm1aaU0yZE5ZakJoWW1SSFoyTmlWMkpGWW10amVHSXhZMU5vYUdKQ1pWTmtVbU5CYUhOaGFXRklhSGhoV1dVMllrMW9RMk5vWm5CbVNHaEdZV2hvVDJSalozaG5RbVpOWVZSblZtSkdZMHBtUm1SVllUVmxjR2hrWjBKbVoyVXZZbEZvVTJWblpVNWhVMkpwWW5Cak9XaFNhRmhqT1dKTllVRm1NMlpTWW5kb1NHTXpaMmRoVUdGbVl6RmxOR2RWWVZsa2EyWm5hRWhsWVdkRlprWm9XR0prWVc1amJHSklaMFJqZDJkV2FHcGxSV1l3WlhobVJXRkRaRzFpU21kU1pVbGhWbWhLWmpKaFVtTnRaVkppTUdGWFpFSm1jR0pzWWtSa1VXZzVhRlpqUTJRd1oxWm1aMkZsWVVkaVFtUm5abVJuTVdWT1pqRm9SR1puWTNCallXVk5aMFpvYTJkSlpsZG1NR05uWjJoalkyVkdZbkJtUTJOaVlqSmpTbVJ0WTJGa1VtWlNZWGxpVkdKdVkwMWpVV1JQWVRCaVRXSkhaa2RoTVdWM1kyRm1UR1pJWkhoalRXZG1hRVZtUldWdFpWaG5WV1J2WVVoblpXUlNZMFZpTW1kUllVWmlSbWh4WlZsb01XWndaekJrUjJReWFFcG5aV2RRWVc1aFJtVkhZMFZqTTJWb1lWUmlWR0l5WmxKaGNXVlZZWGhqYTJaVWFHTmlSV2hLYUZwbVdHaFNaVXBpZFdkaVpWZGxVbWRDYUdKaWEyWndZMnRqWldkVlluTmxWV2RqWWxKak1HTlZhRlppYW1OT1oxZGxaR2hIWVRWbE1tVmpZakptT1dkSFlWcG1NR1p6WWpSb1ZHWklZMVpvUzJSRlprWmxTbUZGWVVOa00yTkJZbU5uUm1oNWFFVm9hR0pOWldsaFFtVmlabEJpUldRMGFEVm1SMk5DWW1oaFFtSlZZbEpvYzJSYVpGUm1hV1ZDWnpSalIyTkVaRlpvVG1Sa1lVSmtOV0ZFWWxSaWFXZzBaRGRvWTJJd2FIaG5VbWhsWVVoblFtaFhabVJvUVdjNVpISm9WV1ZyWkZsa01HWkZZMnRuV1dkeFpFaG9WV0k1WW5Ob1VXaEdaazFtV21ORllUTm9RV1pNWWxkbVZtSlpaVk5qWldaclpHUmthMlpSWWxOaVJtRkxhRTlpUTJOV1preGxZMkpJWW14aVNtVkZaMVZoTVdGTVpGZGhibUpSWkc1alpXRnVaVTVoTTJkVFltMWpZMk5JWkVoalJtTjBZWE5qV0dOUllscGhUR1ZXWTNoa2NHRnFZVlJoYkdSd1pEVmhZMlZJWWxabE5HVkJaRmRtVldSTVpGbGlRV0ZDWkZWalVXaFdZa1prUldOQ1pFVm9RbVlyWVdKblVXUTVaVzFvVjJkSFptUm9RV1pYWVZaamNHTjBZa0pqTW1kR1pHWm9VV1JIWkRGbGJtZEZZakptWTJabVltTmhNV1J6WmxsalYySXdaMWxpVkdKbFowWm9UbUpRWWxwaVIySndabFJvUjJaU1pVNW9kMkpEWkhsa05XUlpZVkpsVTJGbllrOW1UV2hCWlZKb2JXZElaMjFvYUdJMVprZG5VbUpvWVhob1ZtTkNZMFpvVG1OWVprWm1jR0l3WTJWbk1tRlNZeTluWW1ReFlUVmlkV05IWjJwa2FHTk5ZbVJtVldadllsRmpWV0pyWWxGb1RHVmphRVpsY0doRFltSm9NbVJKWjNabllXaFNZamxvZVdkV2FHeGlhMmhSWkZSbVJXTXhZMUpuVTJSU1psWmxUMkpoWVZoaVVXRlpabVZsVm1Wd1pXVmlWV0ZWWkhCaFQyRmtaVkptUm1kNllsUm9SbWhGYUd4aVYyaHNZVnBvTUdKRVp6Sm5kR1pUWjBabVNHVkdaMGRvVm1OVFpEQm1aR05FWjBSalFXUnFhRWhuUm1aallsUmhSbVJuYUUxbFRtVllaWGhpU1dkb2FHSmpWMkZTWkVKbVltVnJaM0JsYTJSbFpsVmljMk5WWW1Oa1VtY3hhRlZuUTJaNFkyeGlaV0ptWmtka1dXWnBabU5vTTJaS2FFZGtUbVpvWXpWa1IyZFNhRmhqYzJkWlpsWmtVV0pKWWtsbFUySnFaMDFvWm1WVGFHcGxNR2N5Wm1GaGJXRnJaMWRuWTJKRllXUmtObWhJWlVWaGQyZGFaVmhrZDJkV1lsRm1RV0pEWnpSbVoyVlZZa2hqUW1aa1ptUmhSV0ZPWVVSaVVtZ3pZMVpvUkdoT1oyaGxaMlJGWWt0a2FtZzFZVmRuWkdWbllqRm1kMlpsWmtKa1VtSjRZVkppYUdST1pEUmpWV1V3WkRsaGEyVmhabXhrVG1GbVoxaGhRMk5KWWt4bVZXSlZhREJvVTJSTVptdGphMlp2WmtKblEyUkJZazVpVFdORWFFWmhUR0ZGWWxob1JXaEtZMGhvVldkM1lrVm9VMll6WmxKbUsyTmlhRmhoVG1OdFlsSm1hbVJOWWxkb1IyVldaVVptTVdOVFkwRmpNV05SWTFoaGVXWkdhSGRvVjJGclpFcGlkbUZaWTIxbFdtZHdaMFppU0dWS1owOW1TV0pXWTFWaFdXWkhZMEZsVFdaSVkwWmlVbUZ3WTNsbVdHTm9ZbWhoZDJoUllsaG1VbUpTWlZOa2EyYzFZakZvVkdWR1kyeGhUV1pWWWxoaWFHRjNZVlprYm1GUloxQm5ZV040WmxKa1FtWlFZM2RtVm1kSVlrMW1VbVIzWWtKaFdtRkVZblJtWW1OVVpWSmxjR0ozWlZWa1NHWk9abGRpUldSdVpuQmtTR2RhWjBWa1JtaDFaVk5tYldaU1lUVmhSMmhXWjBWaWJHUlRaVVZvT0dWRVlrZG1VV1JLWmpaa1QySnBabEZsTm1GSlltdG5XbVkwYUVaamEyZGFaVU5rU1dKU1ptaG5XbVJJWXpCbmQyUkRaR05pUldSQ1prTm5UMk15YUhka01HaE1ZVVZpVVdRclpFUmhlbWhDWkZaa1VtUkZaRWxsZG1OT1kxVmtXbWRHWVU1blVXSm9Za3huWldNd1lsWmtkMmRZWm1kaU1XaERZMlJsVW1OT1pIaG9VbWhWWkhCaVUyUmpZVVptV21Zd1pVUm5NbUowWWxObVJtWklaRVZsWW1kUFpsaG9hR1pVWWxSbk1tVlNaM0ZqVldkNFoydG9WR05PWm14bk5HZFlZMFpoVldaWlpYcG5RMkpEWkhCbVFtZEdaV3RvU1dkM1ptTm1SV04wWWxCbVYyWjRaVEJtWkdOVVlsSm1iR2hYWVdSaVIyTTFaVEprWTJJeVlqaGpWV05KWTJ0aFNtVklhRWhpYW1kMFkwdG5RV2RWWVZKbVJXUkdhRmhvUVdGUFpGRmhibVJDWldsb1dtSklaR3RqVjJaamFHdGxWbWg2WjFKb1JXWkphRnBrU0dWcVlYQmpRbWRJWWtOalFXWTJaVmhuTTJWb1psRmxXV05zWVdoalMySldaRWhoVm1kR1pHWmhVbUpuWTJWbFEySjVaMUZuUldkUVoxVm5SV1J6WlZkbVoyWldZVzVoVkdSM1pXaG5VMmRWWkRCak9XZHJZV0ZtYkdOTllscG9SV016WmtKa1YyRmpaREZsV1dOVFpHVmxhMk5rWTJ0bVVXTlhaelZsUzJWSlltbG1kMlpHWTFab2VXSldaRlZvVldkblpVMW5XbVpRWlc1bWQyZzJaMlZsYm1STmFEbGlWR0V5YUdSaVRtVlBaMFZrZUdVeFlWTmhhR0ZDYUZOaVVtZEJZWFJpZDJOWFptdG5TV0U1WWxsb2JtaDBZbkJsVW1OdVowbGlVMmRNWjNobFFtaGtZVlJuVm1RMVlrcGhRbUZXWWxabVJHTmtZa0pqYUdaM1oxRm1XR2hTWjFKaFUyTnJaRFZqTVdGRmFGUm5WV05FWVVGak0yRm9aRFJqUVdWRVoxWmpaR0ZoWTNobWMyVlpaMk5oVVdOTllWUmpXbVpXWlUxa1ltWmhhR2xpV1dOWFlsWmpNV2hSWjJ0aFVXVXhZbFpsVjJkWVlWaGxjR0poWmxwaFFXRTRZVGRrUW1WcFkyaGtNV05UWlRGamVHRjRZVUZvUW1Rd1pqSmpXbVZHWjNCak1HWkpaVWhuV21kMVoySmpNV0ZhYURoa1JtTnNaR1JtVFdOaFlqQmxjR1psWlZOblZXZFJaMEZpWldkNFlWSmhUR2RpWVhwbGJHWk5hR0ZtVW1kU2FIbG5WR1p1WTAxbFVXTlVZa1ZrTVdGU1pGTmxVbUpXWjA5bFNXTkVhRWxsV1dWbFlrVmxiR0k0Wmtkb1JXUndabFJqWkdOVllsWm5PV1ZFWTNoamEySTFZVWxoYW1GVlp6ZGtVMlY1WmpSaGVtaFJhRWhqYTJkSlowZGlibU5HWTJabFZHTjVZVEZtY1dkVVpsSmphMlpIYUZwaVVtUnNaVUZtVVdoNFowcG5PR1ZSWWxkblVtRlZhR1ZpVm1kc1pIZGtZbWhWYUhOb1MyaGpaRlpqVVdaVlpWSm5RbVJyWlU1b1dHSnRZelZrTW1GallqSm9PV1JIWjFwa2VHTlpaRk5oVkdKSVoxWmhTMlpGYUVaaVNtUkZaRkZoYW1SYVptRm9VMkp0WkRSbmRHZGlaekpvYkdaUVkxZGhSV0UxWjNwalJXVkZaWGhpVG1GVlpGVm9hMkZXWVZSaGJXUnNZakJuUjJGSVprSm9RbWRrYUVaalJXZEVZa05sU0dGVlpGcG5UMmhyWkhobFVHaGxZMGRtVm1kQllWcGxlR00xWkhsbFYyVjRZMUZtY1dSaVpFSmxUbWMwYUZWb01HSTVaV3RtWVdkc1lVMWtXbVJGWnpOa1FXSk1abGRpVm1GWlpsTmlaV1JyWldSbWEySlJabGRpV1dSWlpWcGlTR1ZTWWxkalJtVkhZVWxrVldkSVoxWm9UV0ZhWmxka01tZFdaSFZtWTJWSVkxWmlkbUZFWlcxaGJHVkhaVkprZUdnNFlUbG1VV2huWWtwaVFtZFlaRkZtWkdkM1lsTm9NV04wWml0aFltRnRZMXBvTkdGRVowZGlkR1JJYUdGblJHUndZazFuVkdkV1pFWm5TbVZHYUZWbE5XWndZMlJrUW1Wb1lYZG9VV2RZWmxKbVVtZFRhR3RsTldjeFowVmtXR0pOWkZCbVNHWnFaVmxsYTJGSVlYcGhjR1ZoWjB4aGEyUnJaU3RsWTJaVllsbGtWR2RsWkVabFRtUlFhRnBrUjJKd2FGUmpSMlpTWkU1aGQySkRZekZpYkdaWGFFVmthV1JrWjNSa1dtUkZZVVpvZFdSVFpXMWxVbVkxWlZObWVHTlNZM2hvU0dWU1lqRmxUbUpIWWxabVdtY3daV0pvYW1VNFl6RmtZbWN3WXpSbGNHTkdZV2htYkdSTloxcG1SV1Z2WkU1alZHUXhZbXRuVEdkT1psWm1UbUZEWms1a1JXaG9aMjFqWVdoU1pWSmtlV0pVWlc1aVRXWlJZVlJpUldFeFpWSm9VMmhTWTFabFQyWmhaVmhrVVdkWlptTm1SV05HWXpoalFXWXdaSEJoUkdGaFlrSmhSbU5uWWxKbFZtVkdaVzFsWTJOR2FIUmpiR2hFWlRKb01XSlZaa1poUkdkc2FFbGlVV2g1WXpCbVFXSkNZakprZUdRMFpsRm1RV2RCWkdaaFkyaENaWEJvUVdWU1lYaGxOV2MyYUZabWJtZDRaMWxuV21ReFlVWm5UMlpsWVZWbmMyZFZhR05sVW1Vd2FHUmpWR1JTWld4bVYyWmtZVWRtTldjeWFHTmxNbUU1YUVkaVdtRjRhRmxqVTJORVlucG9iMlpGWmxKbFFtTnpaRXRpV0dOcVoxWmpRbVZoYUVkak9XSnBaRnBpYldacllWVmhZMlpyWkRWbWVtWkZZMFZtZUdkT1lsVmpWV2hyWlZaaVZHTnRaR3RoY0dkTlptNWhRbU5DWTJSa1JtaEdhRXRvVkdGdWFGVmtVbUZqWnpCbWVHTlNZV1ZvU0dWQ1pWZG5aR1JCWXpoa2EyZFZabWRrYkdWNFpFUmtkMlpvWWxObFZXZ3dZemxuYTJaaGFHeGxUV0ZhWVVWbU0yRkJaMHhpVjJOV1pWbG9VMmRsWld0a1pHUnJaMUZqVTJNd1pVWm9TMkpwWnpCaVEyTlhZbWxuVW1WWlpFSm9iV05qYUZwalZtTnVhRkppZFdOa1pXNW9UbVYyYUZKaGJXWmpaVmRsUldaclpuaG9NV1pUWTJ0aE1XWTBabEpqUVdKMFozZGlWMlJyWjBwamRtWlpZVzFvV21Kd1pFWmhTR1JLWWs5a1kySjRaMEZtUm1kRFpURmpSbWhDWTBGbFJtUm9aRFpsV21oblltaGlkMmhZWlRObVVXaFpabEZrTUdnMFlYVm5UMmN6Wms1b1RXTlZZbGhsYUdOM1lsWmxibUpSYUZCbVlXSXhaMGxpVldaallWVm5XV05VWjJWbFJtVk9hRWhqVG1OdFkzQm1aV0pDYUVKbVRtRnFaMEZsYkdkc1kwbGtSV2R1WTJSaVYyWmFaa1ZqWkdadmFGTmlhV0Y0WWpOaFIyWXdZMFZsYVdkV2FGSm9WbUptWTBObWEyRTVZelJtWW1SdFltUmljV0ptWld0aWNHVnVaVUpsZDJOd1kxWm1abU5GWmxsa1VXaFhaMmRsYzJSTVptSmxWbU52WWt4aVdtTnVaR3hqVFdWaFlsSmpVbU41WkZSbmJtVk5aRkZtVkdGRll6RmpVbWRUYUZKb1ZtSlBZMkZrV0daUlpWbGxZMmhCWjBsak4yTklaSGhrTkdoSVprOW5NR05SWlRKb1ZtTXpZM1JuTkdGalowWmhXbVl3WTBSak1tSjBaMU5pUm1kSVlrWmxSMlJGWlRObWFHRlVhRlJvZW1kc1lVRmlWV1Y0Wld0alZHWmpZMEZrZEdKYVpWWmlhR0pLWnpaalVtUXlaMUptUW1GaVpXdGxiMkYwYUdWaFZtTlpZVlZvWldWU1pGVmxWbUpCWW1obmJHSmlaV1JtU0dKMFpXcGxXV05ZWVZwaFVXVmlabWhoV1dSUGFGVmpTR2hXWm1KaVFXSkdablJqUldOV2FETmlRbVpUWWtOaU1tVTVaM1ptV21OdVlYZGtRMmRaWlZabmVHUnFaa2RsVldSV1pFNW1WMlZyWld0b1JHSlhZek5sZUdkdVkwUmpiV2QwYUhKb1pHWkdaRVpuUzJSVVpHNWtWV0ZTWm1ObE1HUjRZVkppWldOSVkwSmhWMlpMWVZGb09HZDFaVWhoYTJOalp6QmxVbUpzWTNoaE5HRldaVlZpYkdkclpGbGlaMlpGYUZwblNHaHRhREJqVEdkVFlteGhPR1JUWVZwbVJXTmthSEJtVldaSFp6Vm1UV1ZaWkc1a2EyaEVaMGRqYVdoR1lVbGlWR0ZuWWxWalVtWlNaVWRoWkdnelltVmtibVpPWVN0aldHSXpZbGxtWVdGRlkyeG5NV2QwWWxWaWVHaHNhRXBrWW1OblpIUmlkMmhYWTJ0blNtWjJaVmxrYldkYVlYQmpSbUpJWlVwb1QyTmpaREZqYTJWTFoxUmlWbU5zWmtKaFNHSlJaRVpuY0dKaFpWSm1aMk1yWmtaaVJHZG5ZV1JrVVdnd2FFcG1NV1ZCWjBkalJtRlZaMVZtVjJGYVpuZGhTR1F6WnpCaFIySmhhSGRqYTJVclptTmhWV2haWWxSbVpXRkdaRTVuVUdoYVpFZG9jR2hVWTBkaVVtRk9abmRpUTJZeFpXdGtabVpXWjBoaGNHZFFZV0ppUW1oT1lYVm1VbVV6WW14aU5XUlhabWhtTVdkNGFFRmxVbVF4Wm1SbVJXVkdaMWxoTW1aUVpFUmpUV041WlVwb1JtUXhhRTVuUm1Ob1owcGxUV05rWVZWaGIyZFJaMVZqYTJGUlpVeGpZMk5HWkhCb1EyTmlZVEpsU1doMVpscGtNR1ZSWVc1alNHTlVZM05qV1daQ1lWVmtVbVJMWTFsbmVHaFdZVTlrWVdaWVoxRmtXV1JqYUVWaFJtTXdabFZtVldod1prOW1aR2hWWlhobGVtVkRaVkpuTUdGeVlVNWxWbWhaWnpsaVUyVlhaSFJrWVdGQ1ltMWhSbWhUWVVOa00yZG9hRTVuVkdSNVpERm5hbVpWWnpCalNXZzFhR05qUVdaMFoxcG9WbVJvWjBwb05tTlNZekprVW1WQ1oySm9hMlZ3WTJ0bVpXZFZaM1JuWkdKT1lYaGhNR0ZXWmxKalZXTjBaVmRvWldKWVkwNWxNbWRaWTFkbVdtRkhhR1ZtZUdWWlkwTmlVbVpZWWxWbFNXWlJZV2htWTJKR1psRm5SMlowWlhkalVXVnRaRGxvYVdGYVoyMWxhMkpWWm1ObmEyVTFZM3BpUldORllYaGhUbVJWWWxWbWJHaGtZVkZpUkdaclkyaGlVMkY2WkdoaVNtVm1Za0ppYUdGTFlWVm5SMk56WmxKaldtSlZZVlpvVW1OS1pFaGxRbUZJWm1KaVVtTXhaMjVtVldGb1luaGtibU5XYUZKaVRtY3JaVlZtZDJWYVpYUmtZV0ZuWlRoaldtSkJZbTFtU1dKVVkxVmxSV1V3WmpSbVpXRnJabVJoYTJGUmFGZG9OV0ZMWmxwb1NHRnNZa3hoUm1WSVlVVm9aR1JSWjBWaE1XUmpaa2RoYVdoalluSm1aR05xWm05bmNHWlNZMjFoT0dSQlpVSmxNV0ZzWTIxbVdHSkNZMEpsVFdKU1pFVmtTbUkxWmxkamFHUnNZMFppV1dWdFpGcGtjR1JHWmtoalNtWlBaR05tZUdKQ1kwMW1WR1pXWVVaaVNtaEdZMVZuTkdoblpFMWphR1JvYURSbFUyaFRhRnBtVW1GU1lqRmhUbWN4YUVGamJtVndaRTFoVkdkWVpHaGlaMk5ZWlRObFVtVk9aRTlqVW1Ka1kxWm9UMmhzWmpCa05XUmxZa1pvVG1oUVpGcGtSMlJ3WlZSblIyZFNaMDVtZDJaRFlURmpiR1pYYUVWb2JtVnZZVkJpWVdSb1pFVmxOMkZIYUZObmVHVjRZVkZpTVdReFpuaGhRV2QzWVU1a1RtWkRaa1ZpVW1JNVpXSmphV1Z3WjNwaFptWldZbEptZW1kSFptaG5TbU5GWW1aaVVXVk5abEZvVkdoR1ptOWxUR0ZhWW14bVRtaERZMkZsVjJWS1pYZG5aV0ZvYURGaGVXaEZhRzVpVFdKQ1pWaG1iR05XYUdSb1UyaFNaekZvV1dSbGFHNWtVV2hsYUdOalFXaG9aVGxsVldoU1pGcG9UMk5hWmtGbFRtUnlZVkpuVldad1oxTm5ZMlZHYUZwbk1HUkVZakpoZEdGVFowWmpTR0ZHWlVkblJXZ3pZbWhuVkdGRlltMWtVV1IyWWtoak1HRndaVmRtWTJKR1owSmhlbVZXWkdoblNtVTJaVkpuTW1GU1pFSmpZbWRyWTNCbGEyaGxhRlZsYzJWVmFHTm5VbVV4YUZWalEyTjRhR3hqWldoa1lsZGxXbVp1WVZsa2JtSTFhRk5oWkdKblkyTm9RV1ZVWTBkaWRHSkxabGRuVm1aMFkwNW1RMko1WTFGa1UyRkZaVU5oUVdJeFkxcG1hV0prWmxKaVNtaFZZelJrVjJKUlptaGtOR1JEWVVGa01HTkZaMWhoU21oNVlXTm1hV1ZYWlZSa2QySkpaazFsUm1kRlprcGtRV0pVWTBabFZXUmpaM2hvZDJGbGFFMW5WR1UwYUVOblpHaG5ZbHBtZDJWbFkwSmpVbWQ0YUZKaGFHRk9aRFJvVldNd1pEbGxhMk5oYUd4bVRXSmFaMFZvTTJGQmFFeGxSV0ZDWTBGaFUyWmpaMnRuT0dReVlsRmlWMlZPWWxoaldtTkhZVEZtUTJkR1owZGtNR2RrWWtSa1ZXUlJaRnBvUm1aRFpsbGxjbVpPWjNwbGFHWXdZbUpsUjJGalpsZGhSV1pyYUhoak1XRlRZbWhsUW1WVFoxSmhRV0YwWW5kaFYyVnJZa3BvZG1GTFlXMWpaMlkxWTFGaFUyVkZZVWRuWldkNmFIQmxUV0ZVWkZaaVJtVktaMFprVldZMVkzQmxaR1pDWW1ob2QyRlJhRmhtVW1OU1kxTm9hMlUxWVRGalIyaFVZbkJtVFdoVWFESmlXbU4zWTFKak1tSjNaMGRsWVdSM1l6Um5WV1paWnpGa1NXWkVZMlJtU0dKc1kxQmhXbUpIWlhCaVZHSkhZVkpvVG1KM1lrTm1NV0ZzYUZkb1JXaHVhSEJtU0doYVprVmpSbVYxWTFGbGJXZDNabmRpVTJSM1pYQmxkbWRJYUZGaGVHVm1Za1ZpUm1WYVlubGlZbWh0WlVKb1oyTmFaR3RoV1dNM1lVWm5aMmhPWkdWaVltVlZaMWxtTm1oVlptdG1VV05NWTJOaFJtSndZME5oWW1neVprcG5iV2hoWjFKalVtaDVabFJuYm1WTlkxRmtWR0pGWVZaa1dtUkJaa0puVm1WUlltUm1NMkZSWjA5blpXVlZZa1psZVdWVllWWmhlR0prWkdaalFtRkZaWFpoVkdaRlpFSmljV0poWWtab2NHSmxZa1JuTW1oMFlWTm9SbWhJWTBabVIySkZZVE5sYUdWVWFGUm5NbU5TWm5GbFZXSjRZbXRoVkdaalowRmhUbWhRWWxKbFVtVktaVGhqVW1ONVpERmxTV1ZpWldobldtTnJaR0ZrUm1OclprMWtWMmQ0WXpCblpHWlVaMUprYkdOWFpHUm1SMkUxYURKblkyRXlaRGxvUjJGYVpuaGhXV1JUWTFKalYyYzFZMmRtUldWR1lrcGxSV1JEWVRObFFtZGhaRkZrYldVNVptbG5XbU50WjJ0blZXSk1ZakptVW1KNllVVmxSV0o0WjA1alZXaFZZV3RrVm1WVVoyMWliR2N3WkZKa1ZtSndZVUpvWkdkR1lVWmpTMkZVWm01alZXaFNabU5tTUdkNFpsSm5TMk5xWVZWaVEyWkpaVlpuTUdKc1oxVmxiR0o0WlhGaVltUkNhRTVrTkdKVlp6QmhPV2RyWVdGbWJHVk5abHBpVkdOc1oyOW5UR2RYWlZaaldXaFRabVZuYTJoa1lXdG1VV2hUWm1kb1ptZExhR3BvYjJGbVlsaGpWR1UxYUZSb1NHRlVabk5pVW1KQlptNW5NV1oxWmt4bVZtZHNhSFppVW1odGFHTmlWMk5GYUd0amVHWXhaMU5uYUdaQ2FGTm5RV2RyWjFGaGFXWlhZbXRtYjJJMVlrbGllbVJTWm5Cb1VtTnVZMHBvVkdSalpUSmtjMmg0YUZGaFZtTkZaVUZpUm1oV2FFNW5jR1JhWTBGblRtZDNZVU5qU0doU1prNW1VMmRvWm5CaE4yaFlZVlJrV1dWRGFFWmlhV2gzWlRSb1ZHVllZMUZuUldKWlpVSmxjMmRrWmxka01HWlphRlJrWldkR1pVNWpVR2RhWVVkaWNHTlVaRWRuVW1kT1luZG5RMmQzWm5SaFdXSlJaR2xpT0dWVlpreGxSV1ZzYURoaVdHRXpZMFptTldaVVpWSmpVV1JzWWtWbE1XWTBaMFpuVjJKQllsRm5XR0pKYUZSaVNXTXlZa1JqYUdKS1luWm9XR1I0Wm5Sa1JtTmlaRzFuUVdGUllsVm5hMkZSWmt4aFkyZEdaWEJqUTJWaVp6SmhTbUp0WlU5a01XSkZZMjFuUjJKNVprWm5aV1ZVWVVKbk9XUkxZMWxrZUdWV1kwOWtZV1pZWWxGbFdXSmpZMFZrUm1Rd1pVUm9SMkZDWWs5aVpHaFNaRVpvZW1oVVkwWm9SbUUwWVdObFFtSkJaMmhpVVdOVFkyZG1SMlpZWjFSa05HaEpZa1ZrZUdaS1ltSmxSMll5WVdoamNXZEJabEptUVdKVVlVdGplV05HYUZwaFZtVm9aRXBpTm1SU1lUSm9VbUZDWkdKaWEySndZbXRqVUdOM2FGSmtSMmhqWlZKaFZtaE1aVVJpUldWMFpsZGxVR1ZYWlVwak1tWk9hRzFrVG1OSFpFdGlRbU52WWxOblFtSklaRlprV0dGRllrTmlhMk0xWjBKaU0yRkJaMVZuVVdKdVlVcGthV1ZrWW01alNXSlZaMUJtUldnMWFIWmlSV1pDWldoblJHaElhRkZoZUdWaVkwTm5WR1F3WXpoa1IyWklaMXBsU0dKa1pVWmlRbUpEWkZKaGFXRmpabEpsWm1Wc1lVWmpVbVJoWTI1amJHWlhhR0ZsUVdnNVlUZGhWMkYzWWpsbGVHaFVZVkppWjJneVpGZGpiV0pXWld0allXSnNaVTFpV21SRlp6TmlRV1pNWmxkbFZtVlpabE5pWldGclkyUm9jMkpEWmtkbk5XTllZbHBrUTJNeFlVWm5WbWg2Wld4b1kyaFVZWGxsTldSWFkwVmphbUpGWjFCb1NXZHVaM05vYUdSVVpUSmlOR2RoYUU5aVJXZDRaakZsVTJSb1pVSm9VMlpTWTBGb2RHWjNaMWRqYTJSS1kzWmxXV0Z0Wmxwa2NHWklhRVJtWkdaUFltSm1hR1JCWTBaaFZHWlZZemxrV0daR1lsWmhXbWhuWjJWbFJHaEtZWGRtVVdoWVpsSmhVbVJUWVd0bE5XZ3haRVZoV0dWT1lVMW9WV2RZWkdob2QyRldaVzVsZUdWQlpXRmhNR0U0WVZWbVQyVkZZVmxtVjJkbFlVVmlSbVpoWldOa2JXZE9hR1poVFdKNFlVNWtkMlJEWkRGb2JHVlhaRVZsYm1Od1lVaGpXbWRGWWtaaWRXWlRZVzFoVW1ZMVprRmxlR1Z2Wldoa1UySkZaVFJtUm1GRlpWSmhiR1k1WmxsamJHRjRaWHBsWW1Fd2FGcG9ibUpHWVdoblNtVk5ZV1JsVldWdlpGRm5WV1JyWjFGaFRHRmpaVUpuU21kTllWQmplbU5qWlRGblNXVlNZM2RqTTJSU1pUSm5aMlEyWlZSbVJXZ3haRkprVTJSU1pGWmxUMmhoWmxoblVXaFpaV05oUW1WTllYaG9RbU5TWnpob1kyTlBaM2hrUldVM1lWWmlNMlowYURSbVkyZEdZbHBvTUdGRVlUSmlkR05UWVVab1EyWjRaM05qUldVelkyaG1WR1JVWnpKb1VtTnhaVlZqZUdSc1kxWm9TbWhWYUZWbVlXUkJZMnhqYzJFeFkwTmlWMlJSWXpkbldtTm9ZelZuZEdObFpGSm9RV2dyWm1OblVtVXdhR1JvVkdkU1lteGpWMlZrWjBkak5XSXlabU5tZW1Jd1owUm1UV1l3WWs1aVFXTkJabTVtVldZM1lraG1aMkZaYUV4bFlXUlRabXRrVDJGQ1puZGhOR1ozWTA1aFEyTm9aMDVvWldacFptaGtOMmhTWVVWbFZtaEZZVk5qYldSTllsWm9WR2h0WTJ4bU1HTkhaVWhvUW1kQ2FHUmlRV040Wkdka1ZHZHVZVlZrVW1kallUQm1lR0ZTWjJWa1NHSkJZMUZpU1dkVlprVmtiMk5DWjJ4bE1HTXJhRU5vUW1kTlpXWmtWMlI0WVhSaWIyRmhaV2RsUldoV1lVVmplbU5yWjBoaFYyRlNhRTFtWW1abFltaGxlR2hQWlZGa1YyZzFaa3RoV21WSWFHeG9UR1ZHWjBob1JXVmtZa2huVVdSMFpGZG5RbUpJWlZKaGJXUkphRVJoU1djNVoxSm5hV2RuWjFkblJHZ3dhSGhtYkdoVlpGSmpRV0pZYUZKblFtUldhSGRsUm1kVlpFcGhjR05hWjBkbVdtWnZaMGhqUkdneFprOWxaV2hDWkVGalJtUlVaVlZsT1dSVlprWmxVbU40WjI1bVQyVkdZVEJqSzJKQ1pHbGtRV05hWlZObGFHaEpZbkJsUldOVWFIaGpUV2hVWXpKblZtTjNaVUZrYm1Od1pVUmpUR2RvWVhoa1ZHWktaVkZqTkdGaFpGbGtNV0ZPYUVWblltUjVZbFppWVdWTlpYaGpUbUYzWTBOak1XVnNaRmRtUldkdVlYQmpTR0ZhWlVWa1JtUjFZbE5uYW1SWllrTmxRbUZDWWxKak5tZElaMVpuVVdKM2FFZGhWV1IwWWpCaFQyaG5hREJpT0dGRlpXeGpNV0pPWTBabmFHVktaazFtWkdkVlptOWtVV2RWWkd0alVXSk1aV05sUVdkbllraGtUMk42WldObE1HTktabmhoVVdVNVlsWm9WbVZyWVZGaFZHSkZaakZvVW1GVFpWSm1WbU5QWkdGalUyRnJabmxpWTJoRlpFWm5NR0ZWYUZWb2NHTlBaMlJpVW1oRllqRmpSMmhTWkRoa04yaEtZVUpvT0dRM1pGRmhWMmh6WXpWa1NHaERaRlpoVUdoRllYbGhUbVExWlZSak1tRlNabkZpVldKNFkydGtWR1JqWWtGaGRHUmFZVlpvYTJoQlppOW5SV1I2WmtWbFZHaEpZa1ZrYjJkM1oyVmpWV2h2WjBwaVltWkNaREZrU21WV1pHcGlUbVJYYUdSblIyRTFZakpqWTJJeWFEbGtSMmRhWlRCaGMyVTBaMVJoU0dGV1kwdG5SV05HWTBwaVJXUkRhRE5rUVdOTlkwRmllbU14WkdsalJtVXlaV3RvU21kalpHZGpaR2MzWlVKa1ZXWldaRUppWldZd1pHdGxWbU5VWW0xamJHZ3dhRWRoU0dWQ1lrSm9aR05HWkVWak9XTlVabTFqWjJOU1pFOW1hMmRTWkVoaFkyRllZM2hvT0daa1lVRm9PV0Z5WmxWaWFHUlNaWGhoVW1ob1pFNW9OR1pWWlRCb2RHTm5hR0ZpYTJjMFpGcG1WMlJ1WjJka1kyRlZZMFZqTUdZMFlXVmphMlZrWm10bFVXSlhaRFZvUzJkYVpVaGpiR0ZFWkZKa2JtUTVZaTlpVTJOQlluUm9abVJGYUhsaVdtWjFhR0ZpTTJSTllXaGlWR1l5WlhOaE9HSkZabXRtZUdFeFlsTm1hR2hDWTFOblVtRkJaWFJsZDJoWFoydGhiMmM1WldKalFtTlZaV3hvVjJGNVpsVm5jMmhLWW14bldXWkxaVU5tUVdOT1pVcGpRMkZGYURSbVYyaG1hRkppVW1kaFpsRmhXR0ZTWkZKaVUyVnJaalZqTVdaRlpGaGlUbVJOYUZWa1dHSkJaMmxtVjJGQ1lURmhhR0pIYUVOalNtUjRhRVZoYW1WS2FITm1SbUpVWjBsbU0ySkhaSGRoWjJOeFkySmpXR1JaWmtSbFEyUXdabEpvVjJSQ1pUSmpjR0pQWVdGbVIyRjBaSFZsVTJGdFoxSm1OV2hUWW5oalVtSjRaVWhsVW1ReFkwNWxSV1pTYUdobE5tUkhZV2RvT0dWRVprTmlhV1pKWTFsa1pHSXlhRUZpSzJGR1pVUmpUbU4yYUVsbFZHUkdaemRrUVdoRVlWVmtkMkZIWWpKbFNtSTNaVkZoZUdWU1ozbG1WR0p1WlUxbFVXaFVaRVZsTVdoU1oxTm5VbUZXWms5b1lXaFRaRXBtV0dOUFlWRm1WbWd3WjFGalZXRndZMUJpWVdOQlozaG5lbVZIWmtaaU9HVk5aRU5uVTJWWmFGSmxZV040WkZGbmVtaGFaMmRrVFdadVptRmtaMlZqWjJkbFQyUm9aMUZrWVdkUVowZG1kR2h1WW1OaVFtVlNabHBtUVdkb1puZGlUMmhRWVdob1VXZHJZVU5sYW1WVllVWm9RMmg2Wkd4ak1XaERZa2RtU21OMWFFOWhSMmRyWTIxblIyVjRZWGRpUTJWalpqTmlWbVJIWTBsaGFHVTBZV0prVW1aWVpXeG5aMmRGWmtabFNtaEZaa05sTTJSQ1ptRmxVV0Z0WVRsbGFXaGFZVzFuUm1oSFptWm5RV1pWWldWa1ZXaFNZMUZpYUdSR1lVRmpaR1JUWlVkbWFXVkdaVEJuUW1aWVprRm5UMlptWTBabmFHaEVaVkZrYkdRNFoxSm1ZMlV3Wm5oaVVtaGxaMGhrUW1GWFkyUmxRV0U1WVhKblYyRnNZWEJsTDJWR1pXeGlkMmN6YUVobGVtRjNaSFJtVFdaQ1psbG1XbVJFWW01bFFXTlVZMU5uUldZNGFFRm9ZMlV3Wm5SbFQySlJZMWRsTldSTFpGcGxTR1pzWlV4a1JtaElaa1ZvWkdWSVpsVmhWbVJZWlZkb1FXSnpZM1psU1dWNllsRmhhV1ZCWm5saWJHZERZVVZrYkdoR1lURmtSR1pGWVZWaFkyRkNaVEZvT0dNMVprWmhVV1Y0WW5aallXZHFZVXBvWjJWR1owTm9iR0ZyWldObGVHVkNZazFsVkdKV1pFWmtTbWhHWjFWak5XVndaR1JoUW1Wb1luZGhSV042WjBWalJtRklhSGhqZDJVM1prVm5XR2R6WjFsbVdHTjNabU5uVUdSQ1lXbGxXbUZCWVZCa2VHSXhabkptUkdWclkxbG1UMkZsWjBKak1XVkNaazVvUkdkblpHTm1WR05XWVhkamEyaFZaMmRvYTJWVVlVZGxNMmRhWjBoaFRXVkdZM0JvUldKVFltMW5VbUkxWkZOamVHUlNZWGhrU0dGU1lqRmxUbVJIWWxGaGRHSTVZbGxvYkdkNGFIcGlZbUV3WlZwb2JtUkdaV2hrU21KTmFHUmhWV0Z2WmxGblYyWm5ZMjlrUm1WT1pHZGhaMk5PWVVsa2JXSktZVGRuWVdKV1kwbGlibVZCWTBSbFFtUkZZa0ppVVdkSlkyWmxVMkpTWlRCb1lXTmFaMWhrVW1kTFoyWmtSV0ZGWlRsb1YyUkZaRzlqVm1WWVpYaGtSbVY2WkZSaVJtUkdaRFJvWTJGR1lWcG1NR1pFWWpKbGRHRlRZa1puUTJWTmFFUmlVbUY1WkRCblFtZEJhRmRtVVdZMVkxZGtNV1ZrWlVkbFVHSkZZMlJtVm1WV2FHdGlXbWN5YUZKbGVtaGFaazVrWW1KbllrNWhkR1ZaWlcxaVJXSlZaMk5pVW1Jd1pXUmxWR0ZTWjJ4bFYyRmtZa2RsTldjeVoweG1iV0phWmt0bVZHWlNabGxoVTJOVVpFaGhWbWhMWmtWaVJtRktaRVZvUTJJellVRmxWV0ZVYUVKb2MyZGlaRVpuWjJoNFluZGlSR1pUWkRoblFtUlpZMmxrTUdNd1oweGlhbVp3YUdkbFVHVm9ZV3RoWW1aaFpXZGpVbUpDWldOaGJHVmtZMmRtVkdOdWFGVmlVbWhqWWpCaGVHTlNZbVZoU0dOQ1pWZG9aR2RCWXpsamNtUlhabWhoZDJFdmFGTmlSV1JOWlhGaVNHaENZM05pY21SUVoyZGxjR05LWkZabWJtWTFZakJpU21obloxcGpRV2hPWmxKalRXaHlaVkJrYUdaR1pFdGlaV1ZZWm10aksyRllaRlJtT1dGS2FFSmhVMlo0WWt4aFFtUkVZMVZsTTJobFlrTm5UV1k1WkVObFZHZE9abHBpVW1Gb1kxVmpiR1JFWkhoamJHSmxaMkpuWjJGMFozZG1WMlpyWjBwbWRtSlpabTFuV21Kd1lrWm9TR1ZLWkU5b1kyWjRaMmRvUTJaUlkzbGhOR0V5WjFKaVVtUjNaMjFoU1dGR2FHTm9VR2hRWW01bVVtRk5ZbE5qYW1kelpUaGpXR0o1WjJSalZXSk5aME5qYjJKcFlVWm5lV1F3WVVkbVdtZ3pabWRvVldoalpGVm5XV1JVWkdWalJtTk9aMUJqV21WSGFIQm1WR1ZIWlZKb1RtZDVabGhvYUdaaloxTm9WbVI2WjNkb1QyaExhR2RoVVdkeFkxTmtSMmhTWWpSa1ZtRm9aRkZoYkdGU1lVVmtNR05KWmxabGFHSkNaREJrU0dGVFl6aGpLMmRNYUZGaWEyRnlhRVpsYUdWU1prdGtXR0l3Wlc5alVXRlZaMnRpVVdKTVkyTmtSbUp3WmtOb1ltVXlaMHBvYldGaGFGSmpVbUo1WVZCaFUyVndhR1JqUkdWblpVbG9aR1JTWWpCaVdXRmxaRXhvUkdWa1oxSmlUbUZTWVVwaE1HTldZVEJoZUdocloyUm1VbUZHWW5wblZHVkdZVVpoTkdoalpFWm5XbWd3WVVSbU1tVjBZMU5vUm1GSVowVm9TV1ZoWmtGaGMyZExaVUZrYVdaWlkyeG5TR2g0WkdSa1FXWkpaa1ZrTkdOaFpVaG5NV2RqWkhCbFQyUnRhRkpsWTJSalpqRm1aR1pyWWs1bU1HSnpZMU5uWkdONlpHTmtaR2hVWWxKbmJHZFhZbVJsUjJNMVl6Sm1ZMlF5Wnpsb1IyVmFabmhpV1dGVFoxUmhRbVp2WkVsb1YyTm9aV05rU0dOWVpETmtOR05sWWtKaWVXSnJhSEpqUzJGRFluaG5hMkZKWlVGblJXaHFaVlpsVW1JMFkxcG9RMlZGWTBab1ltZFJaMjFsYTJWSVpGRmhWR013WVVSaVQySjRZakZoUldWSVpGTmpWbVpWWVUxalFXZFZZbFZpUzJnelpYaG9WMmRNWW5sb1ZtRnlaRlZuYUdKU1puaGlVbUZvWms1bE5HRlZaREJqT1dkcloyRm5iR1JOYUZwa1JXZ3paVUZtVEdKRVlYaGpaR1psWjB4amQyTktZaXRqVVdKVFkwRmpabU5MWjBSbVZtRklZMUJqYm1kRmFHUmpTR1JWWXpCaldtaFdaMjVtVW1kMWFHUmlibVZPWkhaaFVtaHRaMk5uVjJkRlkydGlkMkl5WlVKbVZtZzBZMVZrUkdoVmFIZG1iR0ZEWjBGbVRXZDBaa3hvYVdST2FIcG9SbU5JWlU1bFpXaG1ZWHBoY0daTlpGUmlWbUZHWWtwaFJtRlZaRFZoY0daa2FFSm1hR1IzWmxGaVdHTlNhRkpuVTJGb1owNWpPR0ZIWWtob09XWnRabFZtV0dWb1ozZG5WbVJ1WjFGaFVHSmhaekZpU1dGVloyTmtWV1ExWTJSa1pHZG9ZMGxqUkdoTGFFTmtWV1JSWjBka1VXZzFaWGRsVkdSUlpuZGtXV2RWWlZObU5HZFBaRXRtZDJnNVkzVmxVV0ZxYUVKbE1XSlRaREJpV21NNVpVaG5WbVJTWjBWa1IyVlJaakZvWldGaVoyNW9XbUo2Wm1Kb01HUmFaMjVrUm1Wb1pFcG9UV1ZrWTFWbWIyTlJaVUZpUVdGR1oyWm1TbUZSWjJkaVRXZGlaSHBvWkdKMVowcGxNR0pGWVN0bFFXZHVaVGhvVVdWSFkwVmhSbWhTWjBkbWVHUnNaVTlpU1dOSWFEQm1SR05YWW10blJtY3dZVlZtVldKd2FFOWhaR1pTWVVabGVtZFVZMFpqUldWc1ltVm5WbWR3WkdWbVJHRXlZblJvVTJKR2FFaGxSbUpIWjBWaU0yWm9aVlJoVkdJeVpuZGxhMkpZWlZabGFHaG1ZVkJoUldGUllXRmhTV2N4WlhkaGNHVkNhR2xvU1dKRlkySm9iR1ZrWTJ0aFVHZDRaalZpWVdWTllXdGtiR2hWWmtGbmJHWmthRmRpWm1WRVpuQmlMMmhqWm5walVtWnpabHBtZUdkWllsTmhWR1ZJWVZabFMyZEZaVVpuU21oRlprTmpNMlpDWVdGb1JXTkRhRzlqTW1oTlkzcG9kR1ZoYUdObFoyTm9ZemRpV0dkb1pXdGpRbVZJWjFWblZXTldaa2RvYldGQ1pIWm1UV2R1WlVKbFFtTmthRVpuUm1aTFpGUm9ibVJWWVZKaVkyVXdaSGRqVFdOamFGaGplR1U0WjJSbFFXSTVZbkppVldGb1psSmllR0ZTWjJoa1RtTTBhRlZtTUdSalluRm5XbWhDWjBwblZtaFlZWHBsT1doSlkweGtRbWhvYUVKaFQyUjNaVVZqYUdOTlptbGtTV2RHWjAxaE0yTnNaRmRvUm1WRWFHUm5TV0pWWlhkb05XWk9Za2hpZW1aelpHZGlaR1p1WjNObU4ySlVaVEpsWkdkT2FFOWhSV1o0WmpGalUyRm9ZVUptVTJOU1pVRmhkR2gzWjFkamEyaEtaWFpoV1dGcVoxRmxjMlpSWWtObVkyVmpZMUJvVW1OQlowdG9VbVJTWkRoblkyZFhabEZoU21Wc1ltUmhSV0o0WlRWa1YySnNaRFZqVW1KVFltdGxOV2d4WVVWb1dHTk9aazFsVldoWVpHaGpkMlZEWlROak1HTkVaMUZrVm1SSllsVm5ZMlZWWWxsbFZHVmxZVVpvVG1KUVlscGtSMlZ3WjJKaVZtTjRZakJrTldWWFprUm5jMkpFYUZab1JHZDNZa05rVG1acllVWmllbWRUWm1saVNXTnpaa0pqVm1kaloyeGlWbWRHWmtsa1JHZEhaMVptTkdKbllWcG9NMkZaWTI5blVtaFZZVnBtYm1oR1oyaG9TbWROWm1SalZXUnZhRkZtVldkclpWRmxUR1pqYUVGbFoyRklaVTlrZW1aamFEQmpTbVo0WmxKamVtUlNZbXBtTVdOR2FFRm5RV1JHWlZKaVZtWkJhR2huVDJoUWFGaGpVbUpGWmt4alJXSkdaakZpUW1WVlpWRm5lR2hRWVVWbFNXWlNaa2RsVW1Salp5dGpUbVJSWWxKak9XUkdZVVZqUm1SVFpFWmpTR2RHWTBkalJXY3paR2hoVkdKVVlUSm5VbWR4WkVSbWFHVkJZbVpqVjJWbllYUmhXbVJXWkdoblNtUTJaVkpqTW1oU1lVSm5ZbWRyWm5Cb2MyaE9aREJvVm1WWVoxQmtiR1JDWjA1alJHSkZaWE5vVkdKa1lraG5UbVV5WWs1blZHRnZaMGxrU21kRlowcG9ZbUpCWjNwbWRHVkxaMGRuUVdOYVlVbG5RMlI1WmtwalZHRlJaMnBqVW1GSllWcGhiV1ZyWVZWalkySnJZVFZvZW1WRllVVmtlR2hPYUZWb1ZXUnJabFpuUW1aNVp6bG5NR2hGWVVoa1JXUlFabVZsYUdkblpWcG1UR2REWWtKbldHZE9aVkZrYTJSRVptTm1RMk5TWm1abVpHTkdaRTFrTTJWVlkyaGhWV1l2WWxOblJtRnZaSEprVFdaU1ptOW5hV1pNWkVKbFdtVk1hRWRoZVdaSlpFTm1WV1JJWm5kb1UyTmxZbXRoWkdGcllWRmlWMk0xWWt0aldtSklabXhuVEdWR1pFaGlSV0ZrWjBobFVtSnNhRkppUW1aRVozTmlOV1prWkdwaE1HUnhaVVZoVjJoa1oybGpVMmQ0Wlhkb2QySk1ZekJoU1dSQlpVTm5NV0pzWWpSbFYyTkRZMDFrT1dGS1psUmpUV2hyYUZWbFZHZDNaMkZtU1dOQ1lrRmpRbWhIWTBGaFNXTmtZMFptVVdkM1lYTmhaR1pJWVc5bmJHSkNZWHBuU1dOVllrZG5RbUl4WVROa1IyZEhaV2hsYldSVlpGaG5hR2QzWlZabWJtSlJZbEJsWVdneFowbGxWV05qWkZWaVdXSlVaMDFrVW1WV1pWQm5ZbWRFWmpWaVZHTkNZMEZrTldOMFpVTmlkMkowWVdaaFJXTnBabWRtUTJOTlowSm9VV1k0WlVKa1IyWlNabkJuVldGRVl6Vm9lR1JJYUZKbk1XaE9aa2RrVm1kYVlUQmxZbUZ1WWxwaGVtWmlaREJqV1dKb2FGZGlWV1JDYUUxa1ptWlhaVUZpVVdGVlkydGlVV05NWjJObVJtWndZVU5oWW1JeVlrcG5iV1ZoWVZKbVVtRjVabFJpYVdOV1oxSmlTR0ZyWXpCaFdXWlRaVkZoYUdGUFkxQm9XR1Z3WVZWblRtUlJhRGhoZW1KQ1lWRm1TbVpEYUdSbVZtWlNaSHBuVldkV1lrVm5jV2RtWjJoamIyTjRaRkZpVTJoM1kwZGlXR1pJWnpGaVIyaFlZMGhvYUdoUFlWUmxNMmRTYUcxa1ZXUXhaRVZtVkdaaVpWRmtjMk13WjBabU1HRlpaM2xoVTJkVGFHdGxTV1ZKWjBWaVNXTjBaMlJtVldSMFpWSm5aV2RCWTFsbU0yUlVhRkptYkdKWGFHUm9SMlUxWkRKaFkyY3lZVGxqUjJaYVlYaGhXV1ZUWmxSalNHRlZaVU5qUldORlkzaGxSV1ZTWTBkaWRHRjNZMUZoYldZNVpHbG9XbUZ0YUd0bFZXZGpabXRoTldoNllrVmtSV2g0WjA1bFZXTlZZbXRpWldSU1oxTmhXbUZsWVVkblNHSkNaa0ppWkdaR1pFWmxTMlZVYUc1aVZXWlNaMk5rTUdSNFpGSm1ZMlZXWm5Cb1YyZGtaMEZvT1dKeVpsVmxhR1JTWW5ob1VtRm9aRTVpTkdkVmFEQmlPV0ZyWTJGaWFHSndhR1puUldJeloyaG5abVZKWjJob2JHZDJhR1ZvYTJGYVp6VmtXR1ZIWkRSb1dXVklaSHBrV1dVeVkwaG5XR2RHWWtkaVRtVXdZakJsV21KV1pHNW1VbVoxWm1SbWJtSk9ZblpoVW1WdFlXTmtWMmhGWW10aWVHZ3habE5qYUdkQ1ltRmtSR0ZSYUhSamRHTlhZV2hoV1daVloweG1VbVYwWW1kalIyZElZMHBsUjJWT1lXaGlRbVZTWlZSbVVXTk5ZWGxrVjJKcVpVNWtaMmRpWjNwblNtZDNabEZtV0dOU1kxSm1VMlpyWXpWbU1XUkZaVmhvVG1STlpGVmpXR2hvWTNkbFZtWnVaVkZqVUdSTFlWRmpRbWRTWlUxb1FXTXdaa2xqVldWc1pVNWxVR05hWlVkbGNHaFVaa2RvVW1OT1lYZGlRMlV4WTJ4bVYyaEZaVzVpY0dKSWFFOWlWMlowWkhWbVUyWnRhRkpvTldKVGFIaG1VbUY0WVVobFVtWXhaVTVsUjJaV1lsbGliV1pMWTNsb1NXSnRhRkJvVVdWb1ptNW5WV2Q0WmtwaVUyTmtZVkZtVFdaUlkxUm9WV1pSWVVkbVdXaFdaSEJrV1doaVpIbGtkR2h0WW1SbmVHWlJaVE5qVkdSdFlYZG9VV1JZWjFWak1XWk1ZMU5qVVdaV1pWWmpVV0l6WkZGa1dXSmphRVZqUm1Jd1psVm1WV1p3WWs5aVpHUlNaa1ZoZFdaU1psWm9NV2hUWVdOa1JtUmFaekJqUkdFeVpYUm9VMlpHWkVoaFJtTkhhRVZvTTJoQllXUmhVV0pUWkRCbE5XSk9hR3hrWkdGUlpWQm9NR2M0WkZGbVIyTkdaRlpvTm1aWFkyMW9VV1ZJWjA5a2QySlJabTVvVEdWUmFFcG5ZbWhRWW5obE1HZFdhRWRuVW1OQ2FGZGtUR2d3WVZKbk1taGphREpoT1dGSFoxcGplR1ZaWjFOalZHUklaVlpuUzJoRllrWmtTV2hZWlZoa1JHTnJaVTlqUVdGVFptUm1hV1JpWkdoa2NHZEJaMGxoUVdGalpUbGtWbVF3WVZGaVdtUlhZMFZpWkdaQ1owRmxVV1ZWWmpkblZHaDZZbFZtVkdoR1kzaGpRV0ZhWmtOa00ySXdaRmxrWldGclpuZGlTMlpWWkc1aFFtWlhaMlJvUVdNNVluSmtWV0pvWVZKbGVHRlNaV2hsVG1nMGFGVmpNR1U1WVd0bVMyaFNaMHBuUzJoV1lXNWtRV1ZLWVVWbFVtSk9hRXRqWldoR1lURm5UMkpSWWxkbE5XWkxZVnBtU0dkc1preGlSbVpJWWtWaFpHSklZMVZoTUdoYVlsWm1ibU5SWTNSbVRtRjVZMEZqY1dGU1pXMWtWbU5FWWxKaVoyWndaM1JsVTJWQlpIQmlOR2hTYUVGaGRHRjNaMWRpYTJKS1pYWmlXV1p0WWxwaWNHVkdZa2htU21oUFpXTm1lR2RCWVZCbVJHTkJaMGxoVFdSR1lWVm1kMlU0WWtsb1JtRTFaamxsVjJKWVkxcG9UR1paWkVWb05XVXhaa1ZqV0dOT2FFMW9WV05ZWldoamQyUldabTVrVVdGUVlXRmpNV1JKWmxWblRXZG5aR1JqUVdkUVoxWmhUbVJPYUVwbVZHRnJaRkZvVldKR1kzQmtlV05GWTFoa1RtUlhaa1ZuYm1kd1owaG1XbWRGYUVaa2RXZFRZbTFrVW1VMVlWTm1lR1ZTYUhobVNHTldZalJqVFdkVFoyaGlUbUV3WjJKa1JHWnZaSGxrVDJSM1pqaG1jR2hDWVhoaFFtVlhaRmhrTUdOdllWRm1WV1ZyWTFGaVRHZGpZMFpqY0dORFlXSm5NbVpLWW0xallXVlNabEpqZVdKRVoxUmpTbVJFWWtOb1ZXRXhaVlJrUTJReFpIZG9RV0pMYUVOaFdtRkNhR05sYkdaMFoyVmpWV1JWWm5CalQyTmtabEprUm1GNlpsUm1SbVJHWnpSa1kyRkdZMXBrTUdSRVpESmpjMkpTWVZab1UyUkpZMFJrUldZeloyOWtVbUZFWjJwalkyaDJhRkpsVVdFd1lWSmxZV05wWlVabVdtVldaV2hoU21nMllsSm5NbVpTWTBKb1ltRnJZM0JsYTJGbGFGVmpjMkZWWkdOalZtYzFaV05tU0dOc1puaGhWMmRrWkdwbmMyUXhZVWxuU0dJeGFFVmtabVZVWm5kaVUyRlVaRWhsVm1STFkwVmtSbUpLWVVWa1EyZ3pZMEpvWVdaUlltMWxPV2hwWVZwbGFXZHdaRlptU1daUlpIUm9lbWRGWVdob2EyZFBZVUZsYTJOUlpraGlWR05JWVU1blpXVkhaRWhpUW1oQ1lXUmlSbU5HWjB0blZHaHVabFZvVW1OallqQm5lR05TWkdWb1NHVkJhRlptVG1GV1kzZGpkV1JWWldoaFdXaHJZa1ZuYkdkV1ozQmlVbVZSYUUxa2FHVmhaa1ZvYTJWNlpFVm9NMkZCWVV4bFYyUldaVmxsVTJabFlXdGxaR1ZyWWxGbFYyUTFaVXRqV21KSVltdG5TV05XWjFOblNtRlphRWhrVldVNVowMWpRV2RxWWtwamFtVmFaVEptVldWcVpFRmxNbUZWYUUxaVQyaEZhSGhvTVdkVFlXaGtRbWRUWjFKaFFXaDBaWGRuVjJSclowcGxkbU5aWm0xb1dtWndZMFpqU0dOSlptTm1UbVZyWlZGaVdtTklhSGhrT1dGS1kwWm1SbVUxWm5sbldHTm9ZbWhoZDJaUlkxaGhVbWhTWjFOa2EyYzFaekZqUldkWVpVNWxUV05WYUZoa2FHRjNZa1ZqYW1kR1pVcG5TMkZuWVdSb1dXZEtaMVpoZDJjMWFHVm1SbWRPWTFCaFdtRkhZWEJqVkdoSFpWSmtUbU4zWVVOak1XWnNabGRvUldOdVluQmxTR1ZhYUVKaVRXUnlaVWhuYW1WRlozSmlRbVZTWVZKaWQySkVaMEZrV21kdVprZG9WbWRhWlRCblltRnVaMXBsZW1SaWFEQmtXbVp1WjBaaGFHZEtaazFtUzJWSFpVRm9VV1JWWld0bVVXaE1ZMk5uUm1Od1kwTmxZbVF5WTBwaGJXZE9Za0prTVdncloxcG5TR05OWVZGaVZHSkZaREZqVW1SVFkxSmpWbVpQWW1GaVdHZFJaMUZpVUdGcll6aGxNMlpJWTJka1VXUk9ZMDVtUldaV1lYcG9WV0pXWkVWbUsyRktZMUppWjJRelpWZGxlV1pKWjJSaVYyRnVZa1psVDJkU1l6Tm1VbWRVWVVoa1YyUXhZM0ZoUTJWRVkwMWlWR1pqWTBGbGRHTmFaMVptYUdkS2FEWm1VbUV5WkZKa1FtTmlhR3RsYjJWMFlWQmxNR1J6WldOb1kySkNaR3RoV21SU1kxVmpNV1ptWjJabFZXVlNaVEpuWTJFeVpUbG5SMmRhWTNob1dXSlRZVlJoU0dkV1pVdGpSV05HWlVwaVJXUkRaM2xsVVdGVFowVm9RMmRCWVRGbFdtaHBhR1JqVW1GS2FGVmxOR2hJWlZOblVtUjNZa2xsVG1oQ1pIUmlTR1pCWTFSbGRHTTRhRTFpYm1KQ2FFSm9aR0ZHYUVaaVMyZFVaRzVpVldoU2FHTmtNR1Y0WTFKbFpXVklZMEpvVjJSa1owRmtPV2R6WmxWblJtVm5ZalJtUm1SVmFHUmlObUZWWkhkbE5HWXlhRXhuVVdoYVlsVmlWbVJxWXpWbFptSlhZbEppZEdkSVowdGhVbVJPYUd0blFXRjVZWFJpUzJKS1lsUmlaR0ZNWjJSbVUyUk9aVkJtV0dGQ1psRmlXbUZIWkZSaFNtTjFaa1prUTJKWlpIQm5RV0ZEWVVwb1JXZFJaMVZrZEdObVpWTmthR0pDWmxObVVtVkJaSFJsZDJoWFlXdGxTbVIyWjFsaWJXZGFaWEJvUm1GSVpVcGxTR05oWlVSaWNHSk5ZMVJpVm1aR1prcGtSbWhWWlRWbmNHUmthRUprYUdOM1lsRm5XR05SWWxsalJHRkZaRFZsT1dkQllWaGxUbVpTWWxSbFIySldaWGRtUVdadVlYQmxSR1JNWm1ob2VHZFVaRXBtVVdJMFlXRmpaV2hCWkVWbFMyTk5aRVJoT0dkQ2FGWm5lR0pOWnl0blFtVlNZV2RvWVdSWVlXcGtWV0ZGWjJKbVJtVkdhRzVrVldoVlpqVmlOV2hUWTNoalVtZDRhRWhuVW1JeFlVNW1SMlZXYUZwa01HZGlaRzVpV1dOc1lVeGthR2RTWTI1bVdHRjNZMnhrYldka1pWVm5iMlZSWWxWaWEyWlJZa3htWTJOR1luQmxRMkppWmpKaVNtSnRaVWxtUm1OS1ozbGtVbVJwWVZaa1ptVkNZVkZoYkdOU1lsZG9VbVpXWTFSaFpHUkhZV3RvV1dWSmFHdGhhR0ZsWTFWb1ZXWndaRTloWkdoU1pFWm9lbVZVWTBaaFJtZzBhR05uUm1WYVl6Qm1SR1l5WW5OblZXRlhhSGxqVG1oSGFFZG5lV0Z3WkZSalZXVnRZMUpuTm1kWVkzaGpiR2hoWW1OaVFtWmFZbHBsVW1SblkyeG9ObUpFYUcxalVtVmtZbUprYUdnMVkzRm9UbVJSWlRWaFlXZE9ZMnRvYkdGV1pWWm5hR1ZzWldSb1ptTjVZMlJrTDJkallucG5NV05IWW1KbVFXSnpZMU5qUjJoQmFEUmhSR0ZpYUZaa2QyTkpabFJtYW1ZMGFHUmpSbVZwWW1Sak5XVlVZVWRtYTJKVlltTm9hMlkxWkhwalJXUkZaSGhvVG1KVmFGVmhhMlZXWjFSbmFtUTRhREZpVTJKdWFFRm9SV1JrWWtWamVHTkxhRUZpU0dKMFoxRmxVR1YzWWtGalpXWlBaM2RuVldGWlprcGlNR1kwYUhSaFJtaDRZbmRpYW1SVVpuaGxPV2RUWmxWak1HRTVZV3RsWVdkc1pFMWtXbU5GWWpOblFXZE1abGRtVm1aWlpsTmpaV2RyWTJOamNtaFJaRmhsVG1oTFkyUmhSMk5LYUdob1JtVklaRVZsWkdkSVlsVmlNR2RhWkZaaWJtSlNaM1ZpWkdadVlrNW9kbUpCWkVObmFHVkZaa1ZuYTJGUll6aG5VMmhuWVRGalUyWldaMEptUW1SM1prVmlNR1JLWkhwaFdXSnFaMHBoYm1WWGFFUmtZMlZCWTA1a1JXRlJaVVZsVm1Kc1owWmxRMkZJWm1kaFpHRm5hR1JpUldKT1pHRmhVV05ZWlZKblVtVlRZbXRpTldjeFlVVmpXR1JPWWsxbVZXaFlaR2huZDJSV1oyNW9VbWhhWkV0bFoyTkJZVlZoVDJOVloxbGpUMk5sWjBGaFkyTXdaRXhoVW1Wa1lrbGpUV1o0WTA1a2QyUkRaREZsYkdKWFlrVmxibVZ3WkVoaFdtTkZZVVpqZFdGVFoyMW9VbVkxWkVGaWJHVktZM2hrUm1kU1kzZGlSR1pHYUhoa09HSnVaVVJpUTJKTllURmlTMkZSWkUxbU1XUklaMnhtY0dGR1oyWm5SMk5CWkZGaVZXSnJhRkZoVEdGallVWmljR05EWW1Ka01tTktZbTFsWVdGU1pWSmplV0pVWVc1bVRXTlJhRWRpUVdGVmFFUmhRbWhyWVVwa1QyWktZbnBsUm1KUVltTmlSR05WWjNSa1FXSlJaVGhqY21oS1l6QmtUV000WTBobGJHaHNZMU5qWTJkR2FGcG9NR1JFWnpKaGRHUlRhRVpvU0dkR1pFZGlSV2d6Wkdob1ZHUlVZakpsVW1keFpsVm1lR1pyWTFSb1pHWjNaMnRsVm1aSWFEQmlSV1YxWVZKbFYyWlJZa0ZtVUdSQll6Qm9lR0pPWVVGaU5XVmhaMHBsVW1jeFoxRm9SMmRGWjI5bVEyTmtZa05sZDJaNlpXTmtlV2MwWlVsb1dtWXphR1JuUVdKSVoycG5VV1ZVWTBWblFtUXdhRU5tUTJGNFlVbG1VR1ZDWmtObmEyVnVaVTVoUkdOdllWUmtWMk5GWkRWb2VtVkZhRVZrZUdoT1psVmpWV05yWmxaa1ZHUnRZMnhtTUdKSFlVaGtRbWhDWm1SaFJtUkdaa1JpVm1SV1l6aGlVbVZqWmpCaGVHVlNaMlZqU0daQ1pGZGpaR2RCWmpsamNtSlZabWhpVW1WNFpWSmpiR2gwYURKblJXWkJaRUZoTUdOTlp6RmtkR0ZqWkVoa00ySkNZa1ZvVldGR1oyOWhVMlZqWW1kbmFHRnJaVk5tYm1GT1owdG9UR05JWjJOaVNHaFZZMVJvT1dOaFlsTmxVV1JWWjFGbVZHVldaVFZvZFdOa1pHNWxUbWQyWlZKamJXSmpaMWRsUldSclpYaG1NV0ZUWldoalFXZFFZMkppWjJWMFluZG5WMkZyWWtwbGRtSlphRzFpV21od2FFWmhTR0ZLWVU5b1kyRXdaMGxuU21aSFpGRmlVV2hpWlZkbU1HYzBaWE5vWW1KNlpFcGlkMk5SWmxoalVtVlNZbE5oYTJZMVlURmlSV05ZWWs1bFRXaEVaMGhtUm1ZNGFHWmtTR2RSYUZCaVlXSXhaa2xvVldkalpsVm5XV05VWm1Wb1JtZE9ZMGhsUzJSdFpsRmpVbVZSWWtWbFkyRXhabHBtZUdKM1pGbG1WbUZUWlRSbVVHWmFZVVpvZUdSMVlVUmliV2d4WnpGbldXRlNZbEpsZUdWSVlWSm1NV2hPWkVkbFZtWmFaekJpWW1odVoxcG1OMlJKWVZWaFoyZ3pZMUprUm1Rd1kxbG5UMlpvYURWalNtWkJZV2RrUldKR2FFUmxlR2ROWmxKb1JHTlVaMk5pWjJOTVlURmxSV05uWlZSaGJXZzBabEZvVkdKV1l6RmpXV1pTWkZSaE9XUlBhR0ZpV0daUlpWbG5ZMkpGWjBaak1HSlZZbFZsY0dGUFoyWmpWbUk1Wmpsa1NHUkJaRTFtTTJoS1pVSm9hMmRuWkZaamFtWnpZMWhpUjJKcGFFbGhVbVJWWjJsa2FHaERhRmRqVjJOU2FETm5WV2N4WmpsaFIyRlFZV3RqWjJoT1praG5NV0l3WmpCaFVtVXlZWGhrU1dKaWFHaG9SbU5QWjJWbFZXZHpaVlZuWTJWU1p6Qm5aR0pVWjFKamJHVlhaR1JsUjJnMVlUSmtTbVJUYURSa1ZXSmFZekJvU1dKVFpsVmhXR1JWWm1WaFYyWkNZWE5pV0daQ1pWUmxkMkptYUVSa1EySm5ZakpqVEdodWFFbG9LMkZqWkd0bE5XZDZZVVZrUldGNFkwNWpWV0ZWWW10bVZtVlVZVzFtYkdnd1kxVm1WR2hhWkVKblptSkJabFptUzJOVFpETmtWV0pFWkdOaU1HY3haazFqV21OWVkwSmxSMkZtWmxObVZtZHlaRlZsYUdGU1puaGhVbWRvYUU1ak5HUlZZVEJvT1dkclptRmxiR1pOWVZwalJXTjVaRkpoUkdoRFpYaG5iR1pHWW1WaFoyRnJZbWhvUm1adFpEUmtOR0ZLWmxSblkyUk5aVlZtVW1oU2FGQm1WR0ozWjBwa1RHSllZVzVoV1dWTlpVbGtlbUZWWm5Ca1FXZDZaMVZtVjJaUllsRmlWV0oyWmtSaWVHSkJZMlpoUldSV1oyZGphMmRYYUdkaVFXUnhaRmxqYVdaa1pYQm1WMkpUYUdOb1EyUkthREZoYTJOalpFRmpVbVZTWjBwblYyTm5ZMmhoY0dSYVlsRmhOV1U1WVVGbGVtRXdaa1pqUjJKVlozaGhPR2hEWld4amJHTk5aVlZtV0dkb1lYZGtWbUZ1WTFGbFVHUmhaREZvU1dSVlpHTmlWV2hhWWxaaVRtUjNaRVptVUdaaVlVUmpkMkpUWjFObWVHaE5abWxvUTJjd1oxSm1WMmhCWW0xaFJtUklaVTFoUldkR1pIZGpVMlpxWWxwbWFXTlRZekJtV21ONFpVWm5aMlpDWms1alEyUXhaamxrTUdKUFlWaGhOR2R1WTBwaWQyTTRZVEJtUjJWb1kwbGxaV1ZsYUZWb2NHSkRZbFZoYTJVNFlVeGpXV1pXWVU1aFdtWlNaRmRvU21SdFptRmxVbU5TWkhsbFZHUnVZVTFpVVdaVVkwVmtNV1ZTWWxObFZXWmpaVXhoVUdaVFlVWmlTMlZRWW10b1JXWm5aa2RrVVdaTloyUm9ZbVZxWW5SbGVtSlVhRVprUm1FMFpXTmhSbWRhWWpCb1JHWXlaWFJsVTJOVFoxaG5hR0ZMWms5aldHWm9ZMVJrVkdjeVpsSmtjV1pWWm5obmEyZFVZMk5oUVdOMFpsSm5SMlJDYUhkbWNXaEdhRk5rYzJKV1lVbGhVbUUwWnpsbVMyVlJZalJrWVdaSlkydGtjR1JqWWtoa1VXZHdZa1ZoWkdOSVkwNWtNbUpPYUZSbGIyUkpZMHBuUldaS1pHSm5RV1Y2WlhSaFMyTkhaMFpvZEdORlpGVmpSbVJ3YUdGb1VXRnRaRGxpYVdWYVptMWlhMlZWWkdObGEyYzFhSHBuUldWRlpIZGtZbVJGYUVKb2MyWldhRWRrYldkc1lYQmtSMlJEWkZGaVNtTlFaMUZsU21KRlprRmhhbWhDYUdab1RtaENZMmRsV21aWlpURmljR1JYWkdSa1FXWTVaWEpsVldkb1lsSmtlR1pTWjJobFRtTTBZMVZsTUdnNFluUm5UR0pHWjAxbFVtUlNaek5sUVdaUFlsZG1WV0ZKWkZOaFpXSXhZM0JsTldSUllWaGxOV0pFWVZSbWJtRnNZMHhpUm1kSVpVVmpaR1ZJWTFWak1HaGFZVlpoYm1WU1kzVmlaR051WkU1bmRtZEZhR2xrT1dKRlpsaG1VbVIwWlRGa1FtVkdaVlZpUm1OU1lVaGhhMlI0WWtabVFXRlZhSEZpUW1ONlpWRm5OMlpYWm5salFtVkhaV05vV0daSllscG1RMk40Wm1ObFRXSlNaREJrTkdRMllsQmpWV2RKWXpGblVXUlVaV3RsUldGSFlWSmpjR2N4WjFWb2VtaGFaMDFpUldKSVkyZGpPV0pCWlhwbmFHSmlaRWxtWjJWS1kxbG9UbWhGWjFwb1kyWlFhR3hrVG1GalpXUm5iV0pqWmxKaFZXUkZZbU5tYW1kRFpsWm1RbUpPWlU5blNHUndaVWhsV21ORlkwWmpkV1pUWVcxblVtVTFaVk5tZUdoU1pYaGxTR0ZXWm5OaVEyaFRZVEZrV21NNFkwOW1SR0pqYUdoaVltUjRaMUpqYm1oRFpYaGtTbWhqWldKb2EyZHdaa1ZvVldGc1oyOW5UR0ZKWjJ0bFJtUkRhRkJoVjJOS1pYUm1aR0pDYUZKbGJXRlNhREZpYTJSUmFGUmxSV1l4WjFKa1UySlNabFpoVDJWaFoxaGhVV2RaWjJOaVJXWkdaekJoVldWU1lURmlSMkZKYUZaamEyUTJaRWhtTVdReFlqUmtTV05zWVhCbk1HSllaVmRsZEdSYVlrWmlSMlpLWkZCaVNHVXpabWRrUldSU1ozcG5RV0pwYUVkbWEyaHZZV1puWTJkR1pHeG9XbVZZYUZKalNtTnlhRk5vTW1oUllWUmxZbU5yWkVab2EyVmhZakJtU1doUVoxZGtlR0V3WTJSbFZHRlNabXhpVjJWa1kwZG9OV2N5WkdOaE1tYzVhRWRrV21Nd1psSm1XR0pIWlVObVFXTlpaMWhuYkdSSllWRm9VV2Q2WVd0aVNtTlhaRlZtVm1GcFoxcGxiV0pyYUZWa1kySnJhRFZvZW1kRllVVmtlR1ZPWlVSaFJXaEJhRnBqV21SSGFHeG5NR0pIWkVoblFtSkNhR1JuUm1WR1pFdG1WR2R1WTFWaFdtZFFZbFZpU1dKQ1pFdG5hbU00WlVOb1QySXhaM05rZVdOQlpteG9SbVV2WlVaalZXTlJZVFZuUVdFeFkyeGhkMkZoWjJ0bU5HVmFZMVpsVTJGV1pFWm5SMlpuWkVwalltRk9aVkZsYkdoclkxTmlWMkZrWmt0alVHVXhZazVoVEdGR2FFaGhSV2RrWVVobVZXZ3dZMXBoVm1WdVpsSm1kV05rWTI1blRXUTFaa0psZW1GVllsZGpVbUpyWjNoamIyVlRaMnRqVVdGaFkwUmhWbVJvWlN0aVJtTm5ZMk5rYUdoS1lWUmxTV05vYUVSbU1XZG9ZazlqWTJKNFpVSmlUV0ZVYUZaaFJtVkthRVpqVldVMWFIQmtaR1JDWjJkb05XZENZek5rVW1SYVlraG5hMlExWlhkaVJXZFhZWFJtVFdaVmFFZG5WbWgwWTFaaWJXUlJZMGRrVVdoV1kwbGxWV2hqWkZWa1dXZFVaV1ZoUm1WT1pGQm1XbU5IWlhCaFZHUkhZVkppVG1GM1psaG5lR05GWlVWbldHRlRZekZuU0doTFpXZGlVV1UxWlZOa2FHRlpaelJpUW1WV1lrMWhNR1psWVVWaE9HTm1hRlpuWjJGU1pEaGlZbUpDWWxGa2JXaExZMUZvUVdacGFGSmxRbVZKWm1abVVHSkNaMEprVm1WVlltZG5iR0ZsWkVsbWQyRTFaa05uVEdKVFpXUmtiV1ZMWjBKaFVXSXZZVWRtZW1JNVpFVmlRbVpTWXpCbVpHVkVaa0poVldOQ2FFeG9NMk5SYUU5bVdtZEZhSGRsTW1aSFkwSm5OR05rWW1SbWVHRm9ZbTlpV21Kc1kwWm5OR1ZqWmtabVdtUXdhRVJtTW1GMFoxTmtSbVJJYUVaaFIyUkZZM3BuTkdSamFFaGlWMkpTWW1sblFtTldaV2huUW1SalprWmxiR1JhWjFOaWVHUktZM0ZoV0dGSFlWRm9WbU5pWTJ4blVtRnJZVXRuTVdGQlkxVmtTV2g0YURCbVYySlZhRUprYkdSUFltWm5WV2hTWlRKa1kyTXlaVGxuUjJKYVpIaGhXV05UWVZSblNHWldaVXRrUldKR1pVcGpSV0pEWlhsa1pHTlRZa1pvYVdOalkzSm5UbVJYWjFWa1ZXSkpZMFZrU21aNloxRm9hMkY0WkVkb1ZXZFdaRFJoWTJGUlpHdGhUbWN3WkVkbVNHVkNaa0pvWkdkR1prWm5TMlZVYUc1a1ZXSlNZV05pTUdaNFpGSm5aV1pJWWtKbFYyVkpaSGRrWTJZdmFFZGxiR0l3WTJsbFUyTm9ZVTFtY1dSVll6Qm5VbVpyWkdWbU1XZzRaMXBuVVdSWVprRmhRV0pYWWxWblFXWmlaV1JqYldJeFlXdGtVV2hYWmpWa1MyTmFhRWhpYkdkTVpFWmpTR05GYUdSalNHWlZhREJuV21SV1lXNWhVbVYxWmtsbldHVnpZamRvUkdGcFpEVmlSbVJJWkd0a2QyVnVaVk5vYUdSMFlsTm9WbU5uWjJSamQyUkRZMFZuU21ocloxbGpibVZPWkdkbVIySkdaMmhsVDJkalpuaG9RbWhOWVZSbFZtRkdaVXBqUm1OVlpUVmpjR0ZrWlVKbmFHTjNabEZtV0daU1oxSmpTR1JWWlZsbWFHRlhaRlJrYjJObVlWaGtXR1JuWW1sbFZtSnVZVGhuVUdGbFlrWmhOR2hWWlVsaE1HRlpaRmxsWldkRlpHUm5SMmhtWmpCb1FtZFVaMGRrVW1WT1kzZG1RMk14YUd4alYyVkZaVzVvY0dKSVlscG9SV1pGYURoa1JHTjZZa0ZvYzJOSFlsWmtjR0Y0YUZOaFZtVlZaa1ZoVTJKclpERm5aV1JpYUc1bVdtZDZaV0poTUdKYVkyNWlSbVJvWkVwaFRXZGtZVkpuWTJSYVpWaGtiV1EwWmt4aVkyUkdaWEJtUTJaaVpqSmtTbVJ0WW1GaFVtSlNaWGxqVW1ocVlUQm5aV2hJWmtKb09HZGxaRWhqVm1OdlpXRmpUV05EWmxKaFpHZG1ZbWhpVldNM2FFbG5hR0kwWm1ObFVHRkdaRGhqTUdGVVlVVmxlR0kwWkU1aVoyUk5aelpuVkdGRWFEaG5ZbWhYWjNwa09XZEhaVWRqTTJKR1oxUmhSbUpGWkRWb2NXTlZhSGhtYTJKVVlXTm1RV2gwWlZwaFZtUm9ZVXBsTm1KU1pUSmpVV2RZWkV4aGVHZG9ZV3RpVEdKVlpYTm9TbUpqWlZGak1HTmtZVVZtVW1SclkwTmhVR05EYUdObGJHSm1aMU5qVFdORVkwdGlWbU5HWVVka1FtaEhZalZsWjJSRllVWm5TbVpGYUVOaU0ySkNZV0ZpVVdadGFEbGthV1ZhYUcxa2EySlZaVWxqUVdGeloyNW1VbVJTWlRSbVJHUlZZbFpsYTJoV1lsVm5NMlpTWlhCaVIyTkRabEpuY21oa1kwWmpSbWRMWTFSbmJtRlZaMUppWTJZd2FIaG5VbWRsWmtoa1FtWlhhR1JuUVdnNWFEQmtWV1ZvWjFwbWVtZGlaVUpqVG1RMGFGVmlNR1E1WTJ0b1lXRnNZazFuV21ORmFETm1RV2hNWjFka1ZtRlpaVk5rV1dkRloyUmxNR2hSWVZoa1RtaFlZbVZtV0dKclowdGhVbVpxYUZwb1NXTlZaVUZtYUdSWWFFRmhhV2RrWjJka1QySnFZMWxvYUdoQmFGUm5UbVZsWlU5alJXVjRaREZpVTJSb1prSmpVMlZTWjBGaWRHUjNaVmRuYTJSS1kzWmhXV0Z0WWxwa2NHRkRZak5oU1dVclpXVmxNR1ZSWkVWb1FtSkJaMHBvUm1GR1lsWm1OV2hzWldSalJXZDRZalZqWVdJeloxSm9VbUpUWW10bk5XY3haRVZtV0dGT2FFMWhWV1ZZWjJobWQyRldaVzVtVVdOUVkyTm9WbUpLWmxSb1ptSjNaMlJqUkdOTFpVSmxPR2RYWkdKalJHUTBZbUprVldKRmFFSm9PR0pEWkhobFoyRkZaMVpsVTJZNGFFdGpTV1pSWXpoaU5tUkhZbGRtTVdocFpsbG5VbWRTWlhoalNHZFNZakZuVG1aSFlWWmhXbVl3WkdKamJtTlpZblZtV21KclozQmhUbVJHWjJoaVNtRk5abVJvVldWdllsRmxWV1pyWmxGblRHRmpZVVpoU1dGTlpWbGpWR0ZKWmpCb1NtWnJZMEZqT1dGSFpXbGtjR2RCWjBOa1ZXVk5aMVZqUjJSRlpFRmlVR0ZLWmxOaFkyRlpZMkptVldGRllYbGhRbVpCWWxGaVRtaEpabFpsWjJVNFprRmxiR2hHWm5ka1NtRkdaRGxqTUdKV1lVVm5SbVZUWmtaaFNHZEdhRWRqUldRellXaG5WR05VWXpKaVVtaHhhRlZqZUdKc1ptRmlUbVJuWW5SalVtZFdaekZuZUdVd1pVUmthbVZqYUdwbVQyTjNaM2RuYVdSUVpVSmphMlpqWVVwaVVtUlJhRlZvV21SNFpXeGtWMmRrWWtkbU5XRXlhR05pTW1ZNVlVZG5XbVY0WTFsb1UyUlVaRWhvVm1oTFpGSmhRbVZ2YUZkaFVtVkRaR1JpWVdORWFFTm9iMlV4YUZwa2FHWXhZVTVrU1dKblluTmxWMlZSWVdobU5HaERZa0ZuTUdORloxaG5UR1I2WkhOa2VtZFVZVlJoTUdSRllrOW9aMmRXWlV0blFXSjVZa0ppUTJoS2FEQmtkMkZVWVZCaldHRkJaMWhpWkdSSFl6QmlLMlJHWmtabVNXTXdaa1pqUW1WR1ozaGpVMmRIWlZaamEyaGhaV3htVFdSYVlVVmpNMkZCWjB4aFYyTldabGxsVTJGbFkydG1ZMk15WVVKbFJHWnZaR1ppVG1OcVoyUm5UR1JSWlVSaGJHWlZZMVJqYTJVd1lrVm5VMkV5Wm14bmRXaEpZbTVoVG1WM1kxSm9iV05aWVVkb1JXVnNabHBpTVdKWFptaG9RbWRRYUZkbVVtTmFhSGRsUm1SRlluZGtjMlZNWjFOaWMyZzFaMVprVTJaQlpFeGpaV1l3WmxGbFJXRkNZa0ZoU21GR1lVWm5VbWh3Wm1kblltTjZaa3BtZDJOUllsaGpVbWhTWTFObGEyYzFZekZoUldKWVpFNWlUV2RFYUVob1JtRTRZV1pqU0dkUmFGQm5ZV1F4WTBsalZXUmpaRlZtV1dOVVoyVmpSbWRPWTBoaVMyZHRaMUZpUkdaVFpERmhkMmRyWTFKa1FXWXdaVkJuVVdWcVpqbG5TbVJNWlZGaE9HYzVaa2RuYVdWRlp6WmpTR2Q0WVZKb2MyRklZbFppYzJGWmFGWmtlR05WYUdkblNtRjZaR3RoT1daaVpEQmhOV2gxWVVabmEyTnNZbTFqWkdGVlpHOW5VV1ZWWTJ0bFVXRk1ZV05tUm1Od1prTmxZbVl5WTBwa2JXVlFhREZrVldGbllWUm9hV1ZqYUZGaFZXZFZZakZsVkdKVFluaG1iR05yWTJGbFdHVlJabGxoWTJKRllVWmtNR05WWWxWbWNHZFBhR1JsVW1GR1ozcGpWR1pHWVVWbWVHRmpaVVZuZEdRd1lsaGxWMk5WWVRkbFpXSm5aVWxpTW1Ga1pXaG5jMmR1WWsxaFFXZHJaa3htUzJjeVpGcG1lR1pEWkZobE9HTTRZMHBuVVdoc1oxRmxVbVl5WjFKblFtZGlaR3RrY0dKcloyVm1WV2h6WlZWalkySlNZVEJqWkdaSWFERmlkMmhEWmtsaVZHTjNaVFJrWTJneVltUmhjMlphWTNoaFdXSlRaMVJvU0dkV1owdGpSV1JHWVVwaVJXWkRaVE5rUW1OaFpWRmxiV1E0WVRKbFRHSnBaa0ppU0dSbVkwRm1TV015WmxobFoyVnpabHBpUjJKVlptdGtUR0pVWlc1aGJHSXdZVWhqYm1OYVpISmpaR2hHWkVaalMyRlVaVzVtVldaU2FHTm1NR0o0WjFKblpXVklhRUptVjJSa1lVRm5PV1p5WmxWb2FHWjRaVFZoUldGb1lVNW9iR2hWWTNoaWMySnpaMGxpZDJaQmFGaGpVbUo2WlRsbE5HUkVhRkZsVW1oaVprNWlRV0pDWW5OalVXTjVZVmxpVUdoUVlVaGpkR1JJWjBaaVIyZEZaVkpqU0dOUloxRmxVV1JYWlVSa2EyaDJhRWxtYW1oQlptNW9WR050WTJkb1dXSlRZMVppTkdkdlkxSmpWbWhrWldKaVUyZHJZMFZoTDJORlpIZGxlR0Z1WjFsblIyUmFaSEpoU0doWVlYUm1RMmRYWjFKalFtSk5ZMVJoVm1oR1owcGpSbWRWWlRWbWNHWmtaMEpsYUdaM1lsRm1XR1JTWTFKaVUyTnJZelJrYUdkWFkxUm1iMlptWlZoaWVtZFJaREZvUjJaRVprNW5ZbWRKWlRGb1NXTkxZbU5pVVdFNFlWUmhabVZzWTFaalVHaGlaRVJuTldGVVprVmlaMmcxWTNkaFEyaFdaV3hvV1daSVpVaGtVbVpJWTFwa2EyZG9aVzVpVW1SclpqVmhOV1pUYUhoalVtVjRaVWhuVW1FeFlrNWtSMkZXWVZwbE1HWmlhRzVoV21WNmFHSm1NR1ZTWVRkblpHaEZabU5rUzJKTlpYZGpPV1JEWjFWaWEyTlpZMHhuWldJeFoyOWhWMlJpWnpKbGJHWnRabUZqZDJSd1puZG5XbWRJWlUxblVXZFVaRVZrTVdoU1lWTmtVbUpXWms5bllXUllaMUZsV1daallrVmthR0YyWVdWbU1HTndZVTlrWkdKU1lrWmxlbUpVWjBab1JtVTBhR05rUm1aWlkzQmxRbUp0WVdSaE5HZEdhRWhqUm1aSFlrVm1NMk5vWjFSbVZHVXlabEpoY1daVlkzaG1SbVprWkdabmJHWnpZVXhsUjJkVlpGbG5NV0pGWW5wbk1HUlNZMHRrTUdkUlptNWpUbVZuWTFwaFJXSk5Za1ZtT1dOWlkxUm9VV2hTWmxkbFRXRnFaSE5vTkdSTllVUmxjMkpRWTB0a1JtZG5aRk5uVW1SRFlVWmxSMmhGYUVGaFFtRkpZME5qZW1oc2FGZGhVV0ZwWTNCaWRXVmFZV2xvV1dOa1pXTm5hR1JXWkZwb1JXWkZaWGhsVG1WVllWVmlhMlJXWjFSamJXUnNZekJpUjJSSVlrSmlRbVJRWVZKalpHRkxZbEprYm1KU1ltWmtabUZSWTFWa1EyUkhaR2xrVldSUlkwMW5hMmh2WWpWaVYyVnJZMEpvTkdaVVozcGxiR1UwWTFWb01HZzVabXRsWVdKc1prMWhXbVJGWWpOb1FXWk1abGRoVm1aWllsTmpaV0ZvWWsxaGMySkZaSGxqUldGa1pWcGxSR0pqWVU5bFVXRXphRVppY0daU1kwSmpNV2hqWkUxaGVXaFphRGhrVDJSVFpFWm1ibVpTYUVGbVdtWkZZMVpqVW1OcmFEUmpSR2N4WmpSblIyUlNaVVZqV1dKc2FFTmpVbWRhWjNablNXWkRZVTVsY0dGV1kxaG5TV1p6YUVwaWJHSlpZa3RtUTJkQlpVNWtUR2RJWjBaaVZtUkVaMlJvUW1Sb1luZG9VV05ZWTFKaFVtWlRabXRuTldJeFlrVmhXR2RPWTAxa1IyVkVZelZrZDJoWVpteG9OR2hRWkdGa01XZEpaRlZrWTJGVllsbGxWR05sYUVaa1RtUlFhRnBrUjJGd1pWUmtSMkpTWm5OaWJXUlNaMEpqUVdkVFprVmhiV1Z3WlVoalpXRldZM2hoZW1SVFkycGpXbVUxYUZSalVtTktZWGhtUm1SVllUbG5UbU5DWWtaaVdtUnJZVnBsTTJOd1kxcGlZbVF3WlZwbWJtRkdZMmhqU21STlltUmpWV2R2YUZGaVZXaHJZMUZsVEdSalprWm5iMkZWYUVsbFEyWnpZbWxpWVdOUlpsSmhlV1ZWWWpKa05HZE9hRlJvUVdOU1psSmpWR040WkU1alQySlpZVlJrTUdWWmFHSmtWV0pGWldkbFZXZFdZVlpuVDJkSlpGSm1PR0V2WlVOblVtTTRaeTlpU21aQ1pqVmhNR1ZHWkZkaWRHWkRaa2hpV0dneFpYTmhSV2N6YUdobVZHaFVaakpsVW1keFpWVm9lR0pyWlZSalkyVkJaM1JrV21OV1kyaGxTV0p6WlVObFEySXdaa1pqWW1Wc2FIQmthMmRhWjBabldXRktaR05tVm1ablltUm1VMmg0YURsalYyTm1hRU5pZEdNeVptSmhiV2M1Wmxkb1ltZG9aVzlrTkdkVVkwaG5WbUpMWkVWalJtVktaa1ZvUTJVemFFSmpZV2hSWkcxa09XWnBZMXBpYldGc1pFTmhVR05SWkdOak0ySkZhRVpoZUdST1pGUmhSbWRSWWtsb1ZHZHBaVnBoTUdWSWFHNW9XbUZDYUdablFtSTFZMHRuVldRelpWWmtSbUpQWkhkaFZXRkRZV1JrYW1GM1kxUmhUMlZyWldkb0wyVkhZMmhoTVdjNWFHSm9RbVpPWkRSbFZXY3dZVGxqYTJoaFlXeGtUV2RhWTBWb00yRkJaVXhuVjJaV1lsbGlVMmRoWld0bFpHRTJZbEZuVkdGNGFFdGpUMlJEWjFab1RHUllZVmhoUldSRVkwaG9VbWhyYUZoaFIyWnFaVVZsWjJWTlpWTmlZMk51WmxKaWFtVjBZa3RrUldSc1pIaGhNV1JXWVVKblFXWllZbEpsUm1GallYTmpWMlJuWkRGa2RtUm1aMGRrV1dJNVkxaGhSR1Z6WVdSblptWldaSGRoU21kQlpuaG1XV0prWmxoa1ZXTmtaRVJrWkdSQ1kyaGxkMmRSWlZoblVtRlNZMU5qYTJNMVpqRmpSV05ZWTA1bFRXTlhaMFpvU21WM2FGWmxibU5SWmxCallXWXhZa2xoVldoaloxVmpXV2hVWW1WaVJtaE9aRkJsV21ORVpqUmhZbWhUWkRGbmQyaHVaVU5sZUdGaloxUmlVbWhZWVc5ak1XVktZbEZrT0dGd1kwUmhkMkZGWkhKalIySldaM05tYW1SR1oxSmhPR0pEWTFSbVFXRktZekJtU1dWVVlrSm1lbUpRWjFGblkyWndaMVZsVm1oa1pFMWlVR1pCWmxKaVZXWkdaWGhuZDJoS1ptVm1WV1JHWjI5blltSXlZVXBuYldWaFoxSm9VbVo1WWxSaWJtWk5aVkZqVkdaRllqRm5VbUZCYUVabVRtRlBaVmxqVkdWRloxbGhZbVZzWjNobE1HUklaV3RtY0dKSmFHTmtlR1pGWW1oblZHZEZZVGxsYkdWallVSmhPV1U1WmtSbWVtSnJaVmhrVVdSRGFGRmxWV05ZWmxob2FHSkVaRlpsUldNMVpYRmpWV040WVd0bFZHVmpaVUZvZEdWYWFGWmxhR1JLWnpablVtZ3laRkZuU1dkTFpVVmpjR0Z6WmxCb1JXTnpZMHRoWW1WQ1lqRm5VMlpTWVVKbWEyUkZhRTFpVkdkdlpHcGpTV1pUWmtaa1IyaGhaMmRoWTJaS1pWcG1ibUZXWVV0alJXVkdaa3BvUldKRFlqTmpRbUpoWlZGamJXUTVaMmxvV21ocGFFSm9VMmhqWld0aldXSm9aMFZrUm1SS1psRmtWV1JSWmtGa1kyVlVaR3BrYzJkNFlsUm5RMlpWWkZSalQyTnNaRVpuWW1OV1pWWm1PR2hTWm1OaE1HTjRZVkprWldGSVpFSmlWMmRrWjBGbE9XRnlhRlZoYUdOUll6UmxRV1ZDWkU1a2QyTlhaakJuWTJNeVptRmxhMlF3WjBoblJHZFhaREJuVEdGVGFGWmtPR1ZsWVdWamEyZzRZblJoVVdkWVlVSm9WV1JsYUcxb1VtVk1aa0ptU0dKbloxSm1TR1pWWlZaaFkyVldZMjFrY0daM1lXRmlSMlUxWTNab1ZtTnRaalJsWVdORlltdGlVV1UyWTFObFoyRTFZVTFuVjJGb1kxcGxkMlJUWjJ0amRHUnFhRmxpYW1aSllXaGtXR2RUWVVablQyaGlaR2RtTVdGU1oxUmxVV1ZXYUVGbVNHZEhaVkpqY0dSa1owSm5hR0ozWjFGbldHUlNaVkprVTJKcll6VmhNV2RGWjFobVRtaE5ZbFZtVTJSdlpqRmhRV1pwWmtaaVpHTktZMVpvU1daRlltRmhiV0YzWmxSblpXTkdZazVsVUdOYVlVZGhjR0pVWmtkaFVtRk9hSGRqUTJneFkydGxVV1ZZWlZObGFHVklZV0psUjJGMFpYVm5VMmh0WjFKaU5XUlRaWGhqVW1SNFpFaGpVbWN4WlU1aVIyWldabHBvTUdkaVoybGpRV2g1WTFCbFZXZFphSFpoUm1WbmFEbG5UV1pQWVd0aGIyZGtZbFZtWjJkRllVaGhWMlJzWW5CaVEyUmlaakpsU21KdFpXRm5VbUZTYUhsb1ZHVnVaVTFpVVdoVVprVm9NV0ZTWmxOalVtTlZabVJuWVdSWFltdGhXV1ZQWVZWblJtVTFhRlZtVW1kb1prTmhXR1Y0WTBaaGVtVlVaMFpoUm1FMFpXTm5SbVphWWpCaFJHRXlZblJoVTJWR1pFaG9SbVJIYUVWbU0yWm5aVk5qVkdNelpXeG9jV2hRWld4bmFHTklaRTltUVdWVllsVmpTR1F4WkhoamVXVkVZVEpvYUdGQ1kxQmlWV0ZPWkc5bVZXRXdhSE5qVldOalpWSmlNR0ZrWmxSaVVtSnNhRmRoWkdOSFp6VmtNbUZqWWpKbE9XTkhaVnBtZUdkYWFFaGpWR1JIYUdoaVMyWlNaMEpsYjJWT1kxZGpTR1EwWVVwbVJHUnBaRmxvYUdWSlp6Sm1SbVZTYUdabWEyZzBZamhuUjJKVlkwSm1ibWhWWTFWamEyUldaVlJvYldGc1pEQmxSMlpJWlVKalFtZGtZa1psUm1WTFpsUmlibWhWWkZKaFkySjNZM0JuVW1KYVpsaGxRV1JEWTJWaWJHTjNhRzVvUjJneFkyTmhNR1ZVWjJ0bFJtZ3dZbFZuZDJKYWFIUm1XbWR1Wkd0bVdtWkZhRE5tUVdKTVpWZGlWbVJaWjFObVpXUnJZMlJtYTJKUloxZGtOV2RMWlZwa1NHZHNZMHhrVjJWSVlrVmhRV05JWVZaa01HUkRZbVppU0dGU1luVmpaR1Z1WlU1bGRtUlNZVzFuWTJKWFlVVmthMlI0WXpGalUyUm9aRUppVTJkQ1kxRmlkR0oxWkZka1oyUTFZakJsVTJaSFkxcG1jR2hHWkVobFNtZFBhR05pZUdKQ1lrMWtWR1ZXWmtabVNtUkdaVlZrTldWd1pXWmhlR2hOWmpobllXY3phRkpvVW1GVGFHdGhOV1V4WkVWbFdHVk9ZVTFrVldKWVlXaGpkMk5XWm01bE1HTnNaMkZqTVdWSlpsVmhZMk5WWVZsblZHUmxaMFptVG1OUWFGcGhSMlJ3WVZSbVIyTlNZVTFuTldaVVlWWm1iR1psWjFKbGQyTkZZVXhuUjJKVllVWm5kbWRXWnpOa2JHSTFaVVJvVjJnNFlUbGpXV05DWjFKb1RtSlJabTVsZUdnd1pXSmxibU5hWlhwaFltUXdZVnBtYm1kR1pXaGlTbUpOWjJSalZXUnZaMUZoVldSclpWRmtUR1JsWkVKbVNtTkRaV05tYldGSllYcGxSV1ZzWkdka1VHRlNZVE5qT0dkUlkxSmpRbVExWjFKaFZtUkNZVlZvU1doRmFHcG1hR0pzWm1Wa1ZtTndaR1ZoVldWVlpuQmhUMkZrYUZKbFJtaDZZMVJrUm1KR1p6Um9ZMlZHWmxwaE1HTkVaakppZEdGVFprWm9SR1pOWlZWa1ZtWnFaV3RuV1dOV1kwVm5OV2h4WWxWamVHUnJabFJpWTJaQlkzUmlXbWRXWTJoblNtVTJaRkpuTW1OU1lVSmtZbWRvWjJSblQyZGxaVlZtYzJkVlpXTmxVbUl3WTJSaFZHUlNabXhpVjJka2FFZGlOV2d5WVVsblUyaHZabE5vVFdWcllsSm9ZMk5VWTBOa1dtSkxhRVJuYkdSSlpVMW9RMlV5WkRsallXTlVZek5uTldWcFoyWm5SMkpzWjJOa1kyVnNaVUpqZW1kUllUQm9lR1pUWmxWa1ZtSm5aVlpoVm1GSFpteGthMlZCWmpGbmNHVkNZbVJrUm1KR2FFdG9WR2h1WWxWaFVtRmpZekJpZUdSU1prcGxXR1ZzWkdGb1dHTm5aamxsY21aVlltaGlVbU40WWxKb2FHWk9ZelJoVldVd1p6bG9jMkpLWkVab01XTkthRkZsVkdRNWFHWmtSbU5uWlVwalRHVkxaV2RqU21aeFprTm5RMlpCWVVwaFMySkRaWGRrVUdaVllsTm5TV1JrWTBGbVJXVXhaMlpvUVdkNlpHOW9kR2hKYUdwbGIyRm5Za05vUjJkaloyVm5VbVpyWjBKbU1XZEhaMEptZUdKVFpVUmtVV05LWkhkblFXTlhZMmhpZG1OWlpXMW5XbU53WkVaa1NHRktaMDltWTJWNGFFSm5UV2RVWmxablJXUmlaVlZrUW1KdlpUaG5TbWRzYUZwb2QyVlVaMGRpVm1WU1psTm9NV0pPWjI5aFJXUlRZV05uUldWSFkwTmlkR0lyWkVoa2VtWndZVXhqVEdWblpYQmhOMlJPWkRCak5XUklZMlJvUm1oTloyUmpZV1ZIWm05b1lXWkZaVUZqYUdKaFowTmtNV1pzYUZka1JXaHVZM0JsU0dkYWFFVmhSbUYxWVZObmFtUnNabmRtVW1GNll6VmhlR2hJWVZKbE1XaE9ZMGRoVm1OYVlUQm1ZbUZ1WTFwbmVtWmFZWGRvYUdWd1kxSmphMkpCYUVSa1NXaFJaMVpuUldORFkzaGtVbVZQWldaa2FHTk5ZazFrUzJSNVpHTm1LMk5DWld4aVNtUjVZbFZtTTJWT1lsZGhSMkZSWWsxalUySklZVlptZDJSQ1pVcG5NMlJSWlZGalNtaEZaVEZuTUdKQllUQm5XbVJQWkZCaVFtVm9aSHBtUm1RelpIUm9OR2RqWkVabldtVXdaMFJqTW1GMFpGTmxSbU5JYUVaalIySkZaak5vWjJSQ1pVTmhhbVZCYUM5alFXTldabU5sVkdWS1kyZGtUV0ZPWVVobGJHSnpaM0JuVTJZeVpsRm9WbUpaWm10bmIyY3laR1JqVldSMFptUm1abU5TWnpCb1kyRllaRkpvUW1KT1lsaGxiV1kxWmpKaFkyWXlZemxuUjJWYVkzaGlXV1pUYUZSalNHUlZZMWhsUjJSV1pEVm5kV0ZEWVROb1FtVmhhRkZqYldNNVpHbGpXbWh0Wkd0bFZXSmpaV3RoV1dFNVpVaG9hR0YzYUdaa1NHWm9hREZqWVdSSFpHcG5RV1JyWmxoa1dHZzBZazVqVG1WUlkwbGtaV1pLWjNwa2RHVldhRTVsYUdSUmFDdGtVR0p1YUVKbFRHZGtZVVZvYTJjcllVaG5SbUpqWkd4aVJHSXhaSGRoTW1SVlpqQmtZMmgzWlZwbWJHRk9ZVXhuU0dnellrSm9RMk5WWlVaa1dtZEtabFZtUldSa1ltdGhVV1pYWkRWblMyRmFZMGhvYkdSTVlrWmhTR05GWTJSalNHVlNZamxsWTJWQlptbGtSV000WkU5aFNHSk5ZVFZvVkdGcVpVNW9aV2hYWVhoaE9XTTFaVk5rYTJWU1pHVmxVbU5HWkd4bk9HUlhZbWRpZEdScVpWbGtiV2RrWVRSaVNHWlhZV3htYTJWalpIaG1RbUpOWlZSaVZtaEdhRXBuUm1OVll6Vm5jR0ZrWjBWb1ZtYzFaRlJsVm1NMWFGSmhVMmRyWnpWbk1XRkZZbGhtVG1GTllWVmlXR1JvWjNka1dHTnFZMjluUW1KUGFIZGxRbVZpWVVwaFVXVnNZVWhsU1dkUmFFMW5TMmRoWm1wak1HRkNaMVZpUldGallqRmlRMkV3WkZKalYyTldZVU5vT0dOS2FFcG1lR1JWWm01blFtUlRaWEJqTldKUlpqQm1RbUk1WWtoblZXTTVhRUpuUjJGU1pEbG9OR2hpWTJwbFRtUTJaR0psZUdReFlrNW1SbWhvWVVwa1RXTmtabFZsYjJKUlpsVmthMkZSWVV4a1kyWkdhSEJpUTJaS1ptbGtVbVZ0WVZsbVZXWkpZVGxuUW1ONlkyTmpVV1ZZWWtWa01XWk5hRlptUVdSb1kwOW9UMkl6WXpCb1dXWmxZa0ZpVW1Zd1psUmpSV2h3YUUxblNXSkZhRlZtTVdWV1lVWm5UbVo0WTJaaFJtUmFaemhoVW1OdFozUm5VR0pHYUVOaVZXTlBZbGRoYVdWMFpHUm9RV1I1WWtWbGEySkdaVVZpTVdGaVlXVmhVV0ZrWVZwa1dHSnJZVUpoTm1GWFoyMWhVbU5TWkZwbE1XRkdZMDlqWldWVlkzTmpWV2hqWkZKa01HaGtZVlJpVW1Wc1pGZGtaR2RIWkRWaE1tSk9ZV2xrVFdWV1pVbGxhR1JhWm1KblEyTnVhRlppUTJSU1lXaGpNR05PWkZSbk0yVkNaVXRuVVdOdVpVcG9MMk5sWXpKaGJHRmtZMk5sYTJob1pERmhSV2hGWkRSbVpXaENZVkptZEdOalprRmlRMmMxYURKbVIyaEhhREZuWTJka1pVRmtWV0pVWVVobmFtRkNhR1ZsVG1aVlluZGlSR05qWjFabGNHUlhaV1JtUVdJNVpISmlWV1pvWmxKaWVHUlNZMmhvVG1JMFpsVmlNR1k1YUd0aFlXaHNZM1JqWTJoRlpqSmhNR0ZNWVVObU1XVTRZV1ZsWldocll6aG1kR1ZSWlZoaFRtaExZazFuUkdoRlpFTm5VbUl6WVRsbFVtTlhZa0ZrVG1ObFprRmxhbVI0WW01b1pXaHVZazVsYm1WR1pVZG1ZMlJNWjBWbmJHZDRaRGhuVldWVVkzQm1VMk5TWmtGbWRHTjNaRmRuYTJOS1ozWmlXV1J0WTFwa2NHRkdaRWhvU1dSTVoxQmlNR1pOWkVwaFZHZFJaWEJsYW1KR1pGVmtOV1p3WTJSblFtaG9hSGRtVVdoWVpWSmxVbVZUWTJ0b05XTXhaa1ZsV0dGTlkwWm5SbWN6WVdoaU5HZFdhSHBuTVdSalprUm1VbUYwWm1GbFQyRkNaMHBoVjJSamFFRmlSbWRIWkdKbVZXWkNZVlJsUjJoU1owNW1kMmhEWWpGamJHUlhZa1ZvYm1kd1lVaG9XbUpGWjBabWRXZFRaRzFrVW1VMVpFaGhNV04zWW1wbFZXRnJabkJsVG1WV1pIaG9UV1pxWkdKbmFHaE5ZMmhuVUdSUlkydGlNV2RJYUdwa2FHTk5hR1JqVldkdmFGRmhWV0ZyWjFGaFRHTmpZa1poY0daRFltSmhNbVpLWVcxbVlXTlNaMUpqZVdSVVpXNW1UV0pUWWt4bGFHZG5ZMWhuUkdneFowRmxZMlphWW5sbFRtZExaVTlsVW1OVlozaG9WMmhTWm10bFlXTktZekZpWjJFNVlVTm9NV2d4WXpSblRtRlNaMmRvTTJaUmFFTmlPR1ZpWmxkb2FtVmFaRXRtUldkNloyTmtWbU5EWVZSb1kyVjJaRUptTW1kSlpHWm9ZMlZGWTJOblkyaEhaa1prVldSMVprUmllR1ZzWmtsaFltRm5ZVTFvTTJSbFlWRmtWbVppWm1OalZtUkdabE5oUVdJeFl6Um9WR2hLWW0xaU5HUnNhRXBqYW1JNFpWZGhTMk5GWkZKbVIySkRaVlJsUm1SSlpFOW9iR2RLWlVWa1EyRXpZMEptWVdOUlpHMW1PV0pwWlZwbWJXZHJaRlZoWTJaclpqVmtlbVJGWkVWaWVHUkZZMU5rYldKTlpGWm5WR1p0WW14bk1HZEhaVWhpUW1WQ1pXUm5SbVZHWVV0aVZHUnVhRlZuVW1OallUQmtVV1JFWW1WalIyVXhaRmRtV21KQlpUaG9NMkZWWkd0bFdtUTBZMU5tYW1kc1pqUmlWV0V3WWpsaWEyaGhZMnhoVFdaYVowVm5NMlZCWjB4aFYyUldaRmxtVTJGbFpXdGhaR1pyWlVOb1JHRXdaSE5rVEdGVVpXTmtRMkpSWkVSalVXUldaMVptUldKUlpucGlWbVZ1WlZKa2RXUmtabTVvVG1OMllsSm9iV1pqYUZkalJXUnJaM2hsTVdSVFpHaGlRbUpUWlZKb1FXaDBaM2RqVW1oVllrcGtibVJoWVdsa09XWndaVU5oV0dWS1ptVm9ZMlV3WjNoaFRXVkNZVVppYUdWR1owWm1VbUZuWW0xbVVHZFdZWGhpZDJkVlpGaGtVbWhOWVZab01XSk9aREZsVm1aSWFFNWhTMlZXWVROa2FHUTBaRVZoTTJaUllsTm5ZV2N4WkVKbFFtWktabEZsUVdSTVpHVmtiR1J3Wmtka1ZHVnRZM0JrVkdWSFlWSmhUbVozWjBOak1XRnNabGRsUldWdVluQmtTR2hhWVVWblJtWjFZbE5rYldKU1p6VmhVMlYzWmpWaGVHWkdhRkpoVldWSlprZG5WV2QwYURCalNtRXpZemxrTDJKaVpqQm9OR0oxWlVaaVoyVTVaazFsU1dkM1psWmlXbWRHWjJ0bVVXRmlZV1ZuVm1aT1pscG1VbU5YWVVwbGJXRmhaRkpqVW1aNVlWUmtibU5OWkZGb1ZHTkZZekZtVW1GVGFGVm9hR1JyWjJGb1dHWlJZVmxuWTJGRlkwWmpNR1pWWVZWaWNHTlBZV1JsVW1GR1lYcG5SMk5vWmtGbWNXUmpaRUpuYkdJd1pVVmhiV056YUVkbVdHVkVZbWRpVm1aSVpWUmtVV0ZYWmtGblUyTk5ZeXRrUjJSNFkydG1aV0ZqWlVaaGJHSkRhR1ppUW1WS1l6WmxVbVl5WkZKaFFtWmlZbXRoY0dWcloyVmlWV2R6WjFWbVkyZFdZMUpoWW1aVVkxSm1SbUU0WkdSa1IyWTFZVEpvWTJjeVp6bG1SMlJhWm5obldXZFRabFJuU0dSV1pVdG1SV0pHWlVwb1RXZEJaM2xuV1dSV1lrTm1lV2gwWTJsaFpHRnRaV3RqU21SaVlURm1UbWQ2YUZkaVZXVjNZbEprUkdGVlkyeG5ZMkpVWTI1bFpHWXdabFppTTJac1pVSm5ZMkZzWldSa1MyWlNZbXBsZDJKU2FHSmthMlYzWW1WbVkyVllZWGhqT0dKa1lrRm5PV0Z5YUZWb2FHWlNabmhoVW1ab1owNW5OR05WWmpCa09XVnJhR0ZoYkdaTllWSmtVbU16WlRWb1NHSklaVUpvYUdkV1preGlaMkU1Wm10b1dHRXlZalZuWVdGYVowaGlPV2RPWmtablNHWnJaVTVuU0dGV2FFMW9XbUpJWXpObVVXaDVaRXRqYm1GT1pTOWlVbVp1Wld0bVYyWlJaRVZqVm1FNFkxTm5hMlozWWs5bVVtUkdaR3hrZDJkU1lrVmpTV1UzWkV0b2FXTTRZVFpuUjJGcVlqUmlUR05RWTFaa1kyRlpaa0poVm1Ob1pHcGhSbUZWWlRWaWNHVmtaRUptYUdKM1pGRmpXR1ZTWVZKbFUyWnJaVFZvTVdWSFlrWm5iR2ROWVZWbVdHRm9hSGRtVm1KdVlWRmlVR1poWmpGa1NXSlZZMk5pVldOWllsUmhaV1ZCWW1OaFNHTk9ZbWxuVldWRlkwZG1WbUV3WXpGa1dHZEdhR3RvYTJGVlpucGhVV1JCWmtsbFUyaFJZemhtUjJSRFlYTm1jbWRSWW5obVdXSlJZVk5pVldacmFFbGxWbUpCWVZsa1oyUmlZV2xoU1dNNFltSmllR0ZGWlRGaVdHZ3daRmxoU21oa1pGRmlWbVJHWWtKaWFHTmtaRU5rVG1OQ1pUbGlRMkpNYUZSaFkyRm5aVXhoTVdoRmFHZG1WR1ZxWWtabVptVkhZbEZrVFdaV1kwZG5hR0prWmtoa1kyZHNaelJtV1dKallrVm9SbUV3YUZWalZXVndZMDloWkdKU1lrWm1lbU5VWVVabVJXWTVaR05oUVdWdlltOW5SR015WTAxaFdHSkdZa2RoZUdOSFlrVmpVMmN3WWtoa1EyRllaM2htYjJkWFkyZGlTV2cxWVdOblFXVjBhRnBqVm1Kb1kwcGpObWRTWXpKbFVtVkNZbUpuYTJad1ltdGpVR1IzWTFKbVIyZGphRkpsVm1OTWFFUm9SV0YwWWxkblVHTkhZelZpY21SalpESmtOV0ZZWVdaa1FtVlpaVXBuVkdKSVlYaGhaMk5GWkVabFNtVkZZa05oTTJkQ1kyRmxVV1J0WlRsbWFXVmFabTFsYTJSVmFHTm5hMkUwWjJkaVVtaDNabFZpV21KRlptZGpSV0pXWlZKbWFXZDRaVGxoUjJGRFpYUm5jbVJrWjBabVJtaExZbFJsYm1WVlpGSmpZMkV3WkhobFVtaGxZa2hqUW1oWFkyUmpRV001WVhKaFZXVnNZbU5oZDJGR1pWWmtXbVEwWVZWaFVXUmpZbWhoVFdSc1lVVm9SR05QWWxoaVFXRk1hRmRtVm1WWllWTm1aV1ZyWjJSb2EyUlJZbGRtTldoTFpGcG5TR2hzWVV4aVJtUklaRVZsWkdGSVpGSmpPV2RqWlVGbGFXaEZZamhvVDJkSVlrMWpUV0ZVWVdwaFRtaGxhRmRvZUdjNVlUVmxVMk5yWWxKbVpXSlNZVVpsYkdZNGFGZGhaMk4wYUcxb1pXWlZabmhrY0daR1lVaG5TbWRQWldObGVHWkNaVTFsVkdKV2FFWmtTbWRHWTFWb05XSndaR1JvUW1Gb1kzZGlRV0ZxWmxWa1EyRkVaakJvTldnelkxSm1RMlpqWTB0alUyUllaM0JvY1dkbVpraGhVV0pRWW1GaU1XVkphRlZqWTJGVlpWbGtWR1psWmtablRtSlFaRnBpUjJGd1pGUmlSMlJTWmsxamVtZFRhR2RrYjJkVVowVm9ibWhuWkZOa1RXVkJhR1JrYW1kVlkyMWpXbVJxWVZsalVtVlNZM2hqU0dOU1p6RmtUbUpIWlZab1dtTXdaMkpuYm1GYVkzcGlZbWd3WkZwaGJtUkdZMmhtU21aTlkyUm9VbVJvWWxabVFtSm9aRVpsV21OUVlXeG9iMkZCWVZwb2VtVlpablZpU1dKRmFHUmxLMmhVYUdsbFkyUmpabFJvUW1FNVoyUm1VMmRXWTNoaFNHTmpaR3hoTkdSWlpXTmxSV2RHYURCalZXWlZaWEJqVDJka1lsSm9SbWg2WmxSaFJtSkdZelJuWTJaR1lscG1NR1pVWmtOb2IyZENaMVZoV0dKR1prVmlWV0ZwWm5ObFVXaENhR2xsTVdOdloxTm9WR1JOYUZSa1kySkJZWFJrV21OV1oyaGtTbU0yWVZKak1tUlNZVUpqWW1OclluQmlhMlJsWVZWamMyaFZaR05uVW1FeFlWQmhRMlpGWmpCbFJHSktaMmxpUW1VeWFFWmpiV1JqWkZObFRHVXhZemxrUW1OUlpraG1WV0ZsWWtoaFJtWkphRmRoUW1RelowRmpWR1pUWVRObFVtaEpaRnBsYldaclpsVm5ZMmhyWlRWbGVtaEZZMFZpZUdGT1pGVm9WV0ZyYUZaaVZHZHRZMnhsTUdWSFkwUmhUV05CWlVwaWVHRlNaa3RrVkdKRWFHeG5VV1pLWTNkalZXSm1ZbUZrV0doS1owMWxXR0ZuWWpsaGNtaFZabWhuVW1oNFpsSm9hR2RPWlRSbFZXWXdZamxtYTJSaFpteG1UV2RhWjBWaE0yWkNaVWxtUjJoQlpsWmpXR05sWVd0blZXVnRaME5sUTJoQlpVeGlUbVpwWlVKb1NtVkVaR3hvYzJka1pVaG5WV2d3WmxwaFZtaHVaMUpoZFdSa1lXNWhUbUYyWlZKaGJXVmpabGRpUldaclpYaGhNV2RUWldobVFXVkJaVUZpVm1ZNFpHeGtRMlJCWTNobWRtRkZhRWRoTkdnNVpGaGxSR1p6YUdSaVptZDRZMEZtV1dkUlkxWm1SV1ZpYUVkalZXUTBaR2RrWm1GUlprNWxZV0ZSYUZoblVtWlNZVk5rYTJnMVlURm1SV2RZWTA1aFRXZFZaVmhuYUdKM1kxWm1ibUZSWWxCallXaDRZMFpsVm1WSlpXZG9UV0ZVWldWaGFHWkZaazltVG1KNVp6bGhSbUZFWVZKaVJtSnhaMGxtVm1Gc2FGZGpSV1Z1YUhCbFNHZGFaMFZrUm1WMVoxTmhiV1JTYURWblUyUjRhRkpsZUdkSWFGSmlNV0ZPWWtkbFVXVlJabmhrVDJacFlrMWlhR1ZKWVZWbldXWXZZVWhpYTJKWmFFVmpVR2RDYUd0aVkyUlZZMmhsUVdaSVltTm9RV05vWms5bVltVjVaM1JsZG1SallXcG9OV0o1WmxSamJtTk5ZbEZpVkdSRlpERm1VbUpUWWxKa1ZtWlBaV0ZpV0dSUllsbGlZMmhGWmtaaU1HTkZhR2RsYzJWa1prMWlRbU5HWm5oaVIyWlNZa2xtY21KWlpHeGxVbVoxWjBwaVYyWjBZVk5qUm1SSVowWm5SMmhGWnpOaWFHaFVZbFJvTW1kU1kzRmpWV2g0WVd0aVZHaGpZa0ZqYzJOaFpVWm5NR05GWmk5aFVtVXlZVmxuVldSTVlWSm5iR0p3WldGbk1HWnJaVTlqVjJkNFlqQmpaR0pVWmxKbWJHUlhabVJrUjJjMVp6SmpZMk15WlRsalIyUmFhSGhsV1dGVFoxUmlTR05WWjBwaFZXZFJaRVZuUW1kRFlUTmhTV0pRWjBabmFXaHNabnBvWTJGRFlsWm9VbVZqWjBaalVtaGFZMFZsUldkNFpVNW9WV0pWYUd0bFZtWlVZbTFoYkdnd2FFZG5TR1pDWlVKb1pHUkdaRVppUzJGVVptcGpXbWhSYUVsa1FXTnNabEppWldacGFGVm5RMmROYUdkbVNtTTJabEpqUm1Oblp6QmpVbWhCWVd4bVUyRlZhREJrT1dWclltRmpiR05OWlZwb1JXY3paa0ZoVEdKWFpGWm9XV1pUWldWbWEyRmtZMnRpVVdOWFpUVmlTMlpPWm1wa2QyZG1ZMUZuVTJGT1pWUmlTR2hUWlRobFVtVkJhR3BuZDJodVlVcGxXR001WW5abFJXZHRaWE5qVjJSUlkwVmhRbUl4WmtGb2VHTnNaVXBqWW1oblpIUmxkMkZYWkd0bVNtVjJaMWxuYldOYVkzQm9SbU5JYUVwa1QyUmpabmhrUW1GTlpGUmpWbVpGWWs1alZXZEJaV2RsYjJWSllsWm9VV0pyWjFkaU1XRTFaRkpqVTJkcll6Vm1NV1JGWTFoaVRtVk5abFZqV0dSb1lYZGhWbU51YUZGaVVHTmhaakZpU1dkVlptTm1WV1ZhWm1GbVVHUnNZVTVsU0dGTVowZGpUbUpVWWxSaFZtZHphR2xrVW1oQlpEVm9WMlZZYUVSaE9HSlJZbHBqUkdKVllUTmpSMkpwWVVWalkyVkhZVlZvV1dRcllWUmtlR2hXWVZCbFltSkNaV2RvTDJSSllVUm1hMk5yWVVsblZXUlpaV2xtVjJoR1pVVmxSR2hOWmxGaVRtZGxZMFppVm1NMFpreGlZMk5zWm5CbVNtTmlaWGxoWkdkMlpXTmxhbU0xWm5saFZHZHVaRTFoVVdaVVlrVmlNV0pTWWxOblVtaFdZMDltWVdGWVpWRmtXV2hqWkVWbVJtVXdaRlZtVldSd1lVZGxUV2RDWlVabmRXSlVaRVpqYkdFMlpHTm1iR2hhWWk5aVJHWjVaVFZvWW1SSFpXbGlWV1ZLWVdaa2VtSmpZVVZvUTJkcVpGbGxTbUpGWld0aWNHUlhaMlZpUVdWS1oxRmhWMlZvYUVwbGVXRkVhREpuVW1kalkySmhhMkowWWpCb1kyaEdaVUZtSzJSalkxSm5NR1prYUZSblVtZHNZMWRuWkdOSFp6Vm1NbVZqWmpKbU9XSkhhRnBrZUdaYVkxQmpXbU51WVZaaVMyTkZZa1pqU21GRmFFTmpNMkZDWVdGaFVXZHRZamhvTDJaaVp6SmxWV0VyWm1Ob2EyWTFaWHBrUldORllYaGlUbWhWWVZWbGEyWldhRlJuYldSRll6WmlSbVpwYUVGbFZHaFBZM2RqVldGR2FFZGthV1I0WWtKaFRtUnJZMGxoUm1oT1pYaGliMkZzWjBkaE1tTkdaM0ppVkdKNFlsRmpNMkpGWVRGak1HTTNaMEpvZDJoWlpYSmpTbVZHYUUxb1VtTkhaVzVtUW1GUlpXTmhNV2haWVZOa1pXaHJZMlJtYTJOUllWZGpOV2RMWTFwalNHTnNhRXhqUm1GRFpFNWlXV1JUWWxKamFHUk1hRWRtU0dWUlpqRm5XR0pJWkU1a2RtWlNZbTFtWTJoWFlVVmxhMlY0WlRGbVUyTm9aRUpoVTJOU1pFRmxkR0YzYUVSamFHVnpZaTlsU21jelpuaG1jR2RHWkdoa1FXZGlZVTVpVm1KWllVcG5TR1l4WkU1alJtTlFZekJoTldkd1lXUmtRbWhvYUhkblVXUllhRkpqVW1GVFlXdG1OV1V4WmtWaVdHSk9aVTFvUm1SVVkydG1hMkZHWWpKbE5HZFFZME5uWjJOQ2FFZGpUV1ZDWXpob1pHaExZVUZrUldGQlpFMWlRMk5WWWtoalVXSkZaazFoTVdKQ1kxRmtiMk5oWVZkbWVtSnJZME5uWVdkbllrbG5kbVpDWkdsamFHWjRZMGhtTVdkM1p6UmpWR1JvWVUxaWVXZFhhRUZoVVdadFltSm5hV1J2WW5aa1ltaDRaa2xqZG1OWVl6QmlSbVJCWTJSa1ZtUnZhRnBqV0dodFlqUm1UR1ZqWTBaamNHSkRaV0ppTW1aS1pHMWpZV2hTWmxKa2VXUlVaRzVtVG1WT1oxWm5NbU5rWmxKb1UyWlNaVlpqVDJoaFlWaG1VV05aWjJOb1JXZEdaVEJvUkdSRlpFNW5WbVpZWlhoaVJtTjZZbFJuUm1oR1pqUmtZMlJHWkZwbE1HaFhZbE5oYjJWQmFFWm1RMmhWWjFOb1JXUXlZMVpsVkdaWFp6TmlVbWQ2WWxKaFVXSkpaalZoWTJWQlkzUm1XbVZXWkdobVNtZzJaMUptTW1GU1lVcGpTV0ZGWmxGbU1HaExaWGRuVW1GQlpWQm1hMkpzWWtWaVNHaFdhSGhvV1dKS1kzbG1TV1l2YUUxaFEyTndZa2RoWldkb1lWcGxWV05IWkZSaWMyUktaRkprUW1GelpreGhVbUpZWkVKa1UyTkdhRzFqVG1GcFlVNWlSMkZCWkZWb1MyWlhaMUpsZW1SRlprVm9lR1JPWWxWbFZXZHJaMVpoVkdGdFlteG1NR2RVWjJwb1JXWlVaV1JsUW1ab1pFdG1WV1F6WTFab1JtUlBhSGRqVldGRFkyUmphbUozWjFSbFQyTnJaMmRoTDJaSFptZGtPV2RpYUZKbWFHSk9aelJvVldnd1lUbG9hMmRoWW14blRXaGFaVVZvTTJob1ptWm9WMmRWWm5ObVUySktaMEpuYTJGM1pWTmlSMkpLYUdkaldtRklhR3hsVEdoR1kwaGtSV1prWkVobVZXY3daVnBoVm1kdVoxSmlkV2htWW1sb1JtWjJZVmRtTW1oa1lVRm5XR0ZSWTFWb2VHRlRaMmRuUW1aVFlsZGpVbWRhWlhSaVYyWm9aVUpsZG1abVpGZGhXV0ZuYUVaaVIyaG9aMDltVEdOVllqUm1aV1ZTWVVab01XSnFaMFpuVldjMVluQmxaR1pDWldob2QyRlJZbGhvVW1SU1kxTmlhMk0xWXpGblFXaFlaazVoVTJoVllsTm1lR1IzYUZOb1dHaFJZa2huV1dSM1oxbGpWV2hsWTJ4b2MyWlVaRTFrVm1ad1prUmhXbWhJYUhCblZHZENZWGhoVFdOclowTmpNV1E1WmxGaFJXUnVZa2xsVkdOYVprWmtlR0oxWTFka2JXY3haM2RrVTJaM1lqVm5lR2hUWmxKbE1XaFVhRWRsVW1NNVpUQmxZV0pJWWtKaGVtZGFZbmhsU21adVkwTmplR2hKWjBaaFptWkZaMWxsTm1SVmFHdGpVV0ZNWVdOa1JtTndaRU5rWW1neVlVcGhiV2hoWlZKblVtSjVaMWhqYm1GTllrOW5WR05DWkRsbVVtSldZbWhuVm1GSFlsbGlVMmRaWlZsbVpXRXhabmhpTUdOSFlVVm5UbUpEWVdSblVXTkdabnBpVldkc1owVm1jV2hqWVVaa1FtaDVZVVJtTW1oTlowRm1SbVJIWkhoalIyVkJaek5oUm1SaFoxUm1NMmcxWjNGbVFXZFNaR3RrVG1SalpFVmhTbVZhWmxWbVFtSlNZelpvVkdGNlpscGlRbWhqWlRCb2IyWjBZbU5uUldaall5dG1ZMk5TWnpCalpHZFVaMUpoYkdOWFptUm9SMlUxWmpKblkyVXlaamxtUjJSTmFIaG5XV05OWVZSblEyUmtaMHRpUm1Kc1kxSmhSV1ZCWkhsb1NtUmhaRmhqTW1JNGFESm9ZbWd6WWtsaksyZGpaMnRtTldKNmFFVm5SV2g0Wms1b1ZXWlZZbXRuVm1WVVltcGxPR1F4WkZOamJtTkJZa1ZpWW1FelpIUmhTMmRVWW01aFZXVlNaV05uTUdWNFlWSm5aV0ZJWWtKaVYyZFFabFZrYkdGeVkxZG9iR0Z3WVM5aFRXVnRaRzlqU1dST1oybG5jMlppYUVObmVXTkdaWEpvWTJSblpHeGpNR1ZMYUdsbFRtSnBaa05tYVdablpGZG9UbVJYWkdSbFoyRmFaMGhpYkdWTVlVWmtTR1pGWkdSaVNHZFZaVEJoV21WV1oyNWxVbUYxWjJab2FtaGFZWFpoVjJZeVpHUmhRMkpYWVdkaVZXTnRZbEprUldkTlpFaG5RbVJyWjI5b2FXVkRZMEZvVFdNeVkyRmxhbUpLWVd4a1JtVkRZVUpuU0dSbFkyaGplR05OWWxKb1VtTlNaMGhuWVdGcVowVmhOV2hLWTJ4aVkyaHJZa1JsWjJaelpYVmhVMlJzWjA1bU1XVllaRE5qTUdKalkwRm5lbVZqWkd0bVIyRlRaMEpoVjJkUFkzaG1ZMlZrWjJGamJXZDNZMVJrWldoR1lVNW9VR1ZhWmtka2NHTlVaVWRoVW1OT1puZGlWR1ZvYUZWa1JtZFdaVE5sYjJKalkxUmthMlpHYUhWbVUyTnRaVkprTldkVFpuaGpVbWg0WjBob1VtZ3haRTVsUjJSUlpVRm1NV0pRWkVoaVdXZzRaMkpsTVdSMFltNWpVbUpDWjBwb1FtWmtZMUprTkdaTVpHVmhSV2RSWmt4aVkyUkdZWEJtUTJkaVl6SmtTbWh0WldGbFVtUlNaWGxuVkdacVpWbGpVV1pWWmxWa01HTm1aVVJsUldaS1kwOWlTbU16WW5obFdHZG1hRVZrUldKcFowaGpaMkpOWWt0b1pHWlJZa1poTm1GV1pETmpkR1UwWkdOalJtRmFaekJuUkdReVluUm9VMkZHWlVob1JtTkhaRVZqTTJSbllWWm5RV2hFWlZwaWNXUlhaVEJtT1dKVFlrbGlaMlp6WjFKaVZtWm5aamxuTm1KV1l6TmlPV2hDWVVsblZXRndZVFptWldOUllVMWxVR2hqWlZKbVdXTlhZa0poVW1KQ1oxZGtUV1ZTWjFWaUsyWkVaVzFuT1dGaVpGcGhNR2hLWjJGalFtVlRZVmxtZUdGWFpFWmpTbVZRYUVOamVXZFJZbTVpVjJKVloxWmphV1ZhWkcxbWEyRlZabU5uYTJJMVpYcG9SV2RGWkhoalRtZEVaMGRrVFdaV2FGUmliV2RzWmpCaVIyaElZMEptUW1aa1owWmpSbU5MWTBobFJHUkNZMFpoU21Wb2FEUmhabU5sWlVSbFZtTk9aRmhrWjJVNWFISm1WV2RvWkZKbWVHVlNaV2hqVG1jMFpVUmlhMmhhWlc5blVXUkdZVTFoV21oRmFETm1RV1pNWjFkaFZtRlpZMU5uWldaclkyUm5jMk5FYURKaVFXSmhaVTVtYW1aWloyWmpWMmg1WkZabVJXRlVhRkZoWjJWWVowSm5SR0pGWlhaa1RXSm5abGxvUjJaRFlVUmpUbUUyWldSaE1HRjRaVzltVTJKc1oxbGlTR2REWjJ0aFoyWnJaMFZvZDJVd1pXaG1XV1J0WkRSbU9XUkhaRWhvU1dOamFHWmxlR2RCWkVabFVtTkdaMFZoVTJKUVl6QmhOV1p3WkdSbFFtTm9hSGRsVVdGWVoxSm1VbUZUWkd0b05XSXhZMFZvV0dWemFGbGhWV1JYWWxaaGQyWlNabTVqVW1GVVpHRm5kMmhaWldSa1ptRlZhRmxpWW1kTFlXeGlUbWhUWWxwaVNHVndabFJrVW1OU1kwMWxhV0ZCWjJ4a1ZtSlhZMWRpTTJSdlltSm5UMlpGWVVWa1JHSlJZbXBoUW1ReFpWTm5NR05hWWpsb1NHSlZZMnRoUm1WVlowRmlWbUkyWlVsamFtVk5ZamxpUzJoQ1pVbGxkbU5JWTNkaWJHWnRabVJsVldadlpWRm1WV0pyWWxGblRHUmpZa1prY0dGRGFHSm5NbVZLWlcxb1RHVXhZbk5oWjJOVWFHNW5kR1pIWlVSalVtWTVabEptUkdkQ1oxWmlWR05oWjFObFFtaFJaRTloVW1kSllWQmxRbVpVWm1SaFEyTmtaMVprTldkNloxVmpWbVJHYUhCbVptUkdhRmxvT0daRVlqTmtXbVJUWlVKaFIyaHdaMGRtUjJOSVowMW1ZbVpVWXpOb2FHVnhZVUZoVW1SclpGWmlaR0ZuWTNSa1VtWkhZVkpoU21GM1psZG9iV2RTWmxSaVpXSXhaWGhoZEdGWllXdGtjMkZrWjFkamVHWXdabVJqVkdKU1lteGtWMmRrWkVkb05XRXlaR05qTW1RNVlrZG9XbUY0WkZsb1UyRkRZMWhsVm1SQ1lrUm5WbWRKWlZGbVVXVjZhR3RvU21GUFpWUmpkR1ZwWTJKb1YyTnNZbU5pUkdNd1pEVmxOV2RGWVVGblRtVlhhR1ZtTUdGclpsWmpWR0p0WW14ak1HaEhZa2huUW1oQ1ptUmxSbVpHWTB0a1ZHRnBaMlJsVldGS1kzaGthMkpFWlU1aGJtZEJZbFJpWW1ONVpsWmhjbWRWWjJoaFVtWjRZVkpsYUdGT1lqUmpWV1l3WlRsbGEyUk9aakZrYjJOV1owOW1XR1pCWTB4aVYyZFdaMWxpVTJSbFpHdGpaR0pyWWxGblYyYzFaVU5sUzJSdVpXTmhZbWhTWm1wbU5XVkthRlZvYUdOc1owRmpRbWRxWVVabVoySkthRVJpV1daMVprRmphR05LWnk5aVdHRkNaR2RrV0dSTWFIaG9RbVZRWWxKa1JXSXdaMnhrUm1oQllrVm9OMk5MWlhsbGEyUnVaMFptU0dWdlpXRmpabVY0WTBGa1pXTlJaMVppUldOQlkwaGpSV0kwWlhsaldHRm9abWhvZDJaUlpsaGlVbUpTWlZOa2EyYzFaakZsUldKWVlVNW1UV0pWWTFob1FXWnJhRlptYldacloxQmlaV2d4WVVwblNXRmpZbEprU1dOaFkyUmxSbWhPWjBoaVRtZHRZWEJoVDJaSFlsRmhUbVYzWTFab01XaHJaMFZpUjJZeloxcG1TR2hNWjFWalJXaDVaVVpqYldaUmFGVm1VV1F3WWtKbE9XSklabFZuT1dkQ2FFZG9VV2hKWkRoaVNtSjVabFpqT1daSlkzZGpUV1J3WmxWbVZXSlpaMFZvWm1SR1lVVmlObUZWWTJ0blVXWk1aMk5vUm1Wd1pFTmhZbVl5WVVwa2JXVmhaVkpsVW1KNWFFTm5SR1I0WkVOb1ZHaEZZVlZtU0dORFpFVm5aR2hQWWt4b1NHaFJhRVptWTJaQ1pGVmxPR1ZIYUVKbmEySXhaVWxpVW1oR1pEUmlWR0pHWm5obk1XTkphR2xqZEdFMGFFUmtlV0pTWWxObFEySllaRVpvV0dSRFpraGxaMlZDYUZSbk0yaHdaWEZvVVdGNFpXdG9WbU5rWjJkbWRHVlNaMGRoVW1SS1ozZGpWMkp0WlZKbFZHWmxaekZsZUdkMFpWbGthMlZ6WTJSbFYySjRaakJrWkdOVVlsSm5iR2hYWW1SbFIyVTFaREpqWTJZeVlUbG5SMmRhWm5oaFdXaFRaVU5tV0doV2FFSmpSR0ZXYUVsblVXUlJZM3BuYTJOS1lrOW5WR1YwWTJsalltaFhaR3RvV21obVluaGlkMlZQWkVWa1JXRmFZVTVoU0dSc1pVbG5MMkZVWm0xamJHVXdaVWRpU0dWQ2FFSmxaR1ZHWlVabVMySlVZVzVuVldkU2FFbGhVV05yWVVabFRHZFRhRWxpV1dKa2FFVmhjR2QzWldWblFtWlNZM2htVW1kb1lrNW9OR05WWkRCbE9XRnJaR0ZoYkdOT1pVVmpSMk51YUhka2FHTlhaRlpsV1dOVFoyVm1hMmhrWld0b1VXSlhaRFZvUzJWYVowaGpSV1ZHWWtkbmFXTkdabEJvVldOb1kyeGlWMkZCWTJsbE1HSXJhRTFoTTJnd1pqbG5RV0o1WjFwaVUyWmFZbmxqVldjM1praGpaMlpvWVZOblYyRlJaSE5uTW1GRVpuZGpkMmh6WVU1a2FXUTRabTFsVjJGdVpVcG1SMlZLWjNoaGVHaE5aVWhqTVdob1lrcGlWR050WVZKbmNHaGtaVUptYUdkM1oxRm9XR2hTWkZKbFUySnJaalZvTVdkRloxaG5UV0psWjBab1EyZDNZV3hvUW1GRVpHOWtVR0pQWTFabFNtSkpZVXhpVldaYVl5dG1ZMkZCWldSbVJHSmFZa2hoZEdWbVpVZG1WV2RqWkRSbVVXaG5ZbkJsV1daWVltcGtPR1ZLWVVsaGVHTlZZbTFtVVdNeWFHaG1OV0pJYURGbmQyVTBaVlJuYldKWllWcGtXbUpGWnpGb1pXVmlhRzVoV21oNllXSmlNR2hhWVc1a1JtUm9ZVXBqVFdOa1oxSm1ZMlZhWlZobmJXRTBZa3hvWTJoR1puQm5RMkppWnpKblNtRnRaMkZrVW1WU1pubGxVbVZxWlRCbVpXTklaVUptT0dWbFlVaGxWbVp2Wm1GalRXSkRaVkptWkdWbVptaGlUV0o0WWtWalFXUTBaemRtU0dKR1p6aGhibWhZWWxWblkyZFZaa1psVm1WYWFIQmtSR2Q1WkRCaFNHVlhabXBoU1dKVFpGZG9hbWhqWldSbVZHSXlaSGRqSzJOWVpIaG9iR1ZDWldWalVXWnpZa05uWm1aQ1prcGpObUpTWnpKbVVtZENabUpsYTJGd1oydGhaV1JWYUhObFZXSmpaMVZvT1dKWlpVZG1WV1YzWWtWb1QyaHRaVFJrYTJOalpYcGxUV05oWVZwak0yUnpZV0ZvUjJKSVpHeGpTMmRCWTJ4bE5XaEZaVmhqZW1kblpsUm9SV1pYWkVWbGRXWkpZM2xvWkdKVVlVcG9aMlphWXpaaVNHRkZZbmRpV21oSFlWRmxRbUpIWVU1aVZHY3dZa3BvUjJORFpuaGpRbVptWjBGa1ZXaERhRUppZVdWYVozRmhTbVF3WlhoallXVmxaRWRrUldKeVkyUmlRbVJPWVRObVZXVm5aSGhrTkdOWVlsUmpiR1UwWWxWaE1HWTVaV3RuWVdWc1pFMWhXbVJGWkROb1FXWk1aMEpqUm1JNFpHVm5WV1JGWm1SbmEyWlJZbGRoTldaTFlWcGlTR1ZzWkV4aFJtVklhRVZpVm1KVll6QmpUbWRLWjBKblJHaHpaelpqVDJoVFpHTmtNbUZHWldsbVNXSlpaMUZrUVdGcllqQm9SR2R0YUZWaU4yUkRaV3hqT1dKb1pGUmtRMkZCWVV0bVdXUnVaM1JqY0dkVlpXbG5ZMmhCWWsxb1JXUlJZa1ptUVdab1pUbGlTbU5JYUZKbGNHZHNZV1JvUldSd1pEVmlVV1pUWkRsb04yWlRaV3RpTldneFprVmhXR2RPYUUxalZXVllaV2hsZDJKV1pHNWlVV1JRWVU5b1VtZGtaa0ZvU21OQ1psSm9aR0psWlVGbVJtWlFaRTlrUkdOYVpWUmlaR1ZDWVhOb2EyWkNaVEZtYkdGRlkwaGpibVZ2YUZSaVRHWkJZV2RoT1dOU1lrTm5aMmM0WTBKbVZtTk5ZbXhtVm1oU1psSm1RbVpIWkZabU5HZG5Za3BrYW1nNFpHZG1SbU5DWjBsallXZEdhR2RqTldOUlpXUm5WbVpKWlZwaVZXZG9hR2RpVEdSS1pFSm9TV0ZNWlZCblFtUnJabmxtWVdKU1pqbGllV1JZWm5kbU5HRk1ZMXBpYTJFeFoxSm1VMmRTYUZaa1QyRmhabGhsVVdSWmFHTmtSV0pGWlhCblYyWkZZVnBoYTJWa2FGSmtSbU42YUZSaFJtaEdhRFJrWTJaR1oxcG1NR1JFYURKbFRXUmphRWRqYVdWRllWVm1XR05EYUhkblkyaEhaM3BqTUdJMlowWmhhR2RrWTBKbFRtVlZZVzltWkdKSllqTmljMlV3WjBWak0yZGtaVlJuUVdkcFpqbGlhMkphWlVWb2RHSlRhRXBoUm1GT1lXVmhSMlpXWmtGaVdtVlBhRzFpTldVcllVcG1NbU5PWVVkbVRtUlNZemhoVTJWR1pURmlPV1pMWkVWblJtSktZa1ZoUTJFelprSm1ZV1JSWTIxak9XTnBZVnBoYldKc1pFZGxUbWg0Wlc5bmJXWlJaV2RsU21kT1oxZGhWMlJOWTFaa1ZHZHRhR3hsTUdSSFpFaG9RbUZDWTJSbVJtWkdaa3RqVkdWdVlsVmlVbU5qWkhoak5XWlNZa3BvUTJGNGFGZGxSMlZSWjJOa0wyaFlhR2hvVW1oc1lWTmthR1JOYUhOa1IyUjNZMWxqTTJSYVlVSmlPV1pqWTFoaVZHTmtZV1pqUldKV1lUaG1aV1JWWkVWbFpHTnJaMUZsVjJVMVkwdGlXbU5JWkd4aVRHUkdaa2hsUldKa2FFaG9WV0l3WTFwa1dHVnBaMEZrYldKUVlYbG1RV2RWWjBWbGFHWnZZVmRpVkdGclkzaGtPV1pJWVd4b1oyZGlZa1pqTTJKQlptdGhWMkpyWTJ4bGRtUmpaM2hvZEdGd1owTmpSMkkxWms5aFlXRjRabXhtVFdaRlkxWmpSbVpDWTFGb1VXSlphR2RvU21jeVpVMWthMkZSWjFoa09XaFNZMWRvUkdST1lqRmpSR2hYWXpsbFRXSlJaRWRtTldRMVkxaGpNMkZSWVVWbVVXWldaRWxuVldWallWVmxXV2hVWjJWb1JtRk9hRkJvV21KSFlYQmxWR0pIWVZKbFRtZDNaME5qTVdGc1kwaG5RbUpIWXpGalVXWmpaakZoVG1NdloxaG5SMlpTWlhwalUyZ3daVUZuTldOV1lVVm5OR1l5WTFSaVZtWmFZaTltWW1adFlWVmxUMkpTWjFWaVdtRnVZa1psYUdaS1lrMWhaR1pWWTI5aFVXRlZZbXRqVVdSTVlXTm5SbUpPWkZwaFVtWlhaRXBrYldGaFlsSmxVbWQ1WVZSbWJtVk5ZVkZrVkdoRllUQmpUV2RSWWtKa2JHZHJZMkZuV0doUlpsbGhZMmhGWjBaaU1HTlZZVlZqY0dGUFltUmpVbVpyYURsblVXVm5ZVVZuY1daUVozZGlTV1EzWVZkbWVtSkpaVU5qVldOWVpEaGxWV0ZXWTJwaGEySllaRTlqWjJFd1ptdGpRbVozWm05b1FtaEZabTFoTldaYVlWTmtlR2hKWkRob1JXaHBaRzltUTJWUFpHZGtUV1J5Wms1a01HaHpZV05vU21SU1lrVmlaR1ZJWjNobFFtWlhaRXhqTUdWU1lqSmtZMmd5WVRsb1IyVmFaWGhrV1dkVFoxUm9TR0ZXWTB0b1JXUkdZMGxtVjJKVVkybGtVV2hRWjBWaFEyWkdhR2xuWW1kcmFFMWpWV1pqWW10bU5XVjZZVVZsUldkNFowNW1WV0ZWWjJ0alZtRlVZVzFtYkdjd2FFZG1RMlZLWVVKaVMyVkJaekZsUzJaSllqTmpNV1JHWjJabE1HZDRZa1poWkdoSVlVRmpRMk5RWmtWbldXVTBaVmhoUm1Sblp6Qm1RMmRHWVZGaGMyWkhaakJpV21OdlpWRm9SbUpOYUZwbFJXSXpaRUZuVEdaWGFGWm9XV1pUWjJWa2EySmtaV3RpVVdGWFpqVm5TMlZrWjFkaU9XTmpZMEZqTW1WWloxQmpSR1JHWTNOaVdtSllaVWhqVVdZMloxQm9hbWh2YURoalVHRlVaMDVrY21ORllXdGhaR1ZtWjFObWFHRkNhRk5qVW1GQlpuUmlkMk5YWld0a1NtaDJaVmxsYldGYVkzQmlSbVZJYUVwbFQyaGphSGhpYUdKRlpVZGpVbVpyWkVGbVVtUnFZbFZuT1dGa1kwSmxUbUYzWTFWa1FXVnNaRkpvVm1oc1lrcG1NV1pCWlVkb1ZtZEdZMVZpVTJoU1luZGtXR05wWVVKb1NHVkpaMmRvUm1aMlkwcG9WV2haWmxsbVpXUkZZa1ZtZVdKYWFFaG1XbU5RWTBkalVXWjBhRFZtUTJKM1lWWmpWMmhTWW1wbFNXVlBaazVqZW1KdmFEWm9VMlZ0YURsbU5XaFhaMGRsYkdRMGFFNW1lR0V4WlU1bVIyUldabHBtTUdkaVptNWpXbUo2Wm1KbE1HZGFZMjVsUm1ob1pYUmlXR0pZWVRCbGIyUlJZbFZpYTJOUllreG9ZMlpHYUhCbFEyWmlZakpsU1dnM1pGbGhRbU5vWjFsb1ZHVnVaazFoVVdaVVowVm1NV05TWWxOaVVtaFdZazloWVdOWVkzaGxWMk5tWm1oaVJXZHRZa2hqYUdFMFlVSmhTV05WWW1kamFtTkRaVlpsT0dGeFlrNWxVbUZqWjNkbldtTnBabFZrUjJObFowSm5VbVpIWTBSa2JtaG5hRlpsUjJKcFpXOW9jR2hDWlRGbVFtZGpaVkJsWjJSMFoxSm9RV1pvWXpWa05tZEdabGRsYUdSQ1pFcG1NR1JPWW10bVNXSnRhRVZsVldoalpsSmtNR05rWmxSa1VtVnNZVmRtWkdGSFpqVmxNbUpqWnpKa09XZFBaVTFpZUdSWllsQm5WR05IWWxabVMyUlVhRVpuU1doUlpVRmxibUY0Wm1GaVUySnFaVEZoYVdGbFl6SmxhMkZGWVdObWFHSktaM3BpVVdScmFGWmtRbUpWWVZGbVFXWldZVVZtYW1kV1lUQm5aR1JZWTJka1ZtVmxaMFppUldGWmFGRm1ibVZXWkVabFQyTjNaMVZpUTJaa1ptcGpkMmhVWWs5b2EyZG5aQzloUjJab1pqRmtjV1ppWmtKaFRtWTBZMVZqTUdJNVpHdGpZV0ZzWlUxaFdtTkZZak5rUVdKTVlsZGxVbUZDWVdSblMyWkZaMlJqYzJOR2FIbGxPR1ZaWTFwb1JHSjRZVXhtUTJSWVlVWmhTbWRXWmxGbFVtRkxaRXhoVTJSQllWUmxaV0p1WkUxbVoyRlNaVzVvYjJkWFpVRmtNR1JDWVRGaFFXRm9aMEpoVUdkU1pFSmhkR055WkZkbmEyUnNaV3RtUzJkdFlWcGtNV0ZHWlVOalFtaFBZMlJrVW1kYVpFMW5VbVpTWnpWbVNtVklaVEZoVG1Sd1pscGpaMk14WVcxb1UySkhZamxoVW1SUlp6Sm5VbWN4WlVWaVdHUk9aazFrVldSWVpXaGhkMkpXYUc1b1VXSlFaR0ZuTVdkSlpsVmhZMmRSYUUxaFZHZGpZekJpTldkUVlVMWpRMlZKWkdGblUyWnRaV2RuYTJWRFlURm9TbVJYWWxkaVoyaGtaRWhqWW1acmFFVmlhR2RWWmxWbk5XUTFaVk5oZUdGU1pYaG1TR1pTWVRGbFRtZEhZMVpsV21Nd1ptSmxibWhaWVdobVMyWm9hRWxuZVdOU1lVWmhlR2hOWjJaa1VXZFZaRkZqVjJoR1ptdGlUR2RaWmxWaWFHRmhaMXBvYldJMVlXMW1UR0pDWkZKbmMyRlZaVE5rVG1ObVlWUmpSV1IwWkZoaFUyVlNhREJvVEdWaFlsaG5hMkpHWVdObFEyTjNaREZtUW1GUlkwcG9RV0ZLWTFab05HSnJabEpsUldGT1pqQm1ZMlZGWXpWbk1HaENaMWRtYzJKQlpFaGtXR0ZvWmt0aVJXUjZZekZqU1dKYVpsZGxVbU54WVZWbWVHSnJZVlJsWTJaQlpYUm5XbWRXWkdoaVNXaHVhRlJqYldWb1puSm9ZbWhyWlhCbGEySmxaRlZsYzJGVmFHTmhVbU13WW1Sa1ZHZFNaVVZvV1dSbFpXcGhOR1JyYUZCa1JHTnpaRXBqVFdFd1lqbG9RMkpEWmxoaWMyZFpaRlpoVW1aTlpFRm9XV0pxWmpSblQyZEpaVUZpY0dkcFoyVmhNbUpzWVZOa1NtSjNaRUZsZDJGU1lVRmlWV1pEYUVobE1HRnJZV1JtUjJOdFlWWmxNR2hUWlc1a2VHVkNaRkJoVm1Ob1lrdGhSbUpXYURobFVtaGpZekJvZUdaU1oyVmpTR1JDWWxkb1pHVkJZamxtY21oVlptaGhVbVExWWtWa2FHWk9aV3hpVldFeFpqbG1hMkpPYUd4bVRtUk9aa2RrYm1GM1lreGhWV1pSYUZGbFUyWmFaREJqWkdjd2FGRm9WR05LWmt0aFRtZHVhRUpoU0dSR1kwUm9aMlZrWlZGaFVtZEZZMXBsVDJRelluZG5ObWRsWVc1aVRXTTVaMU5pYldWa1lrTmtWMlZuWmxWb2JXVlNZVVpqZDJKWVlrTmthMkYzWTJ0bVJXZHJaWFJtTUdWVFkwZG5XbU53WTBabVNHZEtZazlsWTJKNFlVSmpUV2RVWlZabFJtRktZMFpsVVdSbmFHMWhTbWhvWldoaU5HZEdZWHBoVldKRWFGTmlaMk4wWmpGblJHRklZMDFqWldOWVpGaG9aMk12WkZabWJXaHJabEJrWldGc1pqUm5WV1JQWVZWbFdXRlBZMlZrUVdkallVaG5UR2hVWkd0a2IyUlVaVkptVG1jM1pVTm9NV05TWm1Kb1ZtaDNaMlJtWTJSYVpFRmtVbWgxWkZaaVIySlNZWEJqVTJSNFkwcGlNMmhJWmxKaFZXWkRaa2RuVm1WNGFIQmtZbUZ0WVZKaWJXUmxabFZrT1djNFowWm5hR2QwWlcxbFpHVlZZbTlqVVdoVlpXdGlVV1ZNWVdOblJtUndZVU5tWW1VeVlrcGxiV2hoYUZKbVVXZzJZMVJsYm1ObllrNWpWR0ZDYUd0bVdtWkJhRVZsV1dZeFpsQmpXR05SWVZSbVkyTkZZWGhtTldkR1kwUmtaR1ZQWm1aaGVHVkZaamhvVm1jelpuUmlOR2hqWTBaaFdtSXdhRVJuTW1SMFpsTmlSbUZJWjBabVIySkZaak5oWjJSQ1lVTmlhbVJCWVM5blFXZFdaMk5pVkdkbFprVmhVbWRhWVZoalFXYzVZalpvVm1KdVoxcG9XbWRhWnpCbldtWnJZazFoVldOelowdG5ZbUpDWnpGalUyWlVaRkpqT1dkUllXUmpSMlJaWXl0aFkyTXlaa3BoWW1kYVpUTm9kR1pVWWtkaFJHUXhaMFZqVVdKQ1p6QmxWR2RCWlRKaVNtWlhabEZrYm1Wa1ptbG9ZbUZIWkd4aFIyWmxZakJqWkdNdlpVVmhRV1pTWkZkb1pXTXdaV3RvVm1GVVoyMWhiR1F3WlVkaFNHUkNaMEppWkdWR1lVVmtXR1pTWWpOaGEyRTNabU5qTUdkNFoxSmtaV05JWmtKaVYyUmtaVUZqT1doeVkxVm1hR2QzWWk5bFUyRkZaRTFoY1daSVpFSm9jMlZ5WVZCa1oyRndaVXBpVm1SdVp6VmtXbUZJWTBKaVpHTlhaMFZpZDJGclpuZGtWMlZYYURWaldHTmFaRVJpT0dkbFlsZGxhbU5LWVVwblZtVkJZMHBvV0daV1pHNWxkMk0yYUdWbWJtRk5aVGxuVkdReVoyUmlUbUZQWkVWamVHWXhabE5tYUdKQ1oxTm5VbVZCWTNSa2QyaFhhR3RoU21oMmFGbGlhbVJSWm5OblVXTkRaR05rWTJWUVlWSmpRbUpGWWxwbE1XUkdZVXBqUm1GVlpqVmxjR1JrYUVKbmFHRjNaRkZuV0dOU1psSmxVMlZyWVRWaE1XRlJaak5uVFdWUllrUmpXR2huWjJSbFdHZHBhRUZrUkdoaFpqQm9UV1ZaWjJOb1VtUktZMkpsVFdOUlkwSmpRbUpMWlVOak9HVmtabGhqYTJkallqUm1RV0pzWmxab09HUkZabTVuY0dSSVlWcG5SV05HWkhWa1UyTnRZbEpuTldaVFpuaGhVbVI0WWtoalVtWXhabU5vUTJZd1p6VmxNR1ZoWlVobVdXUnVZVXBqZDJFNFpUQmtZbUZWYUZsa2VHVmtabFprVldkUlpsaGpNV05WWjB4alpXWnNZbkJsUzJSbVlWaG1aR1o2WTJGbFVtTnNZWGxqUjJWcVlYUm9XbU5JWjNwbVdXTkdaMDVsUW1GV1kwWm1ZV0pYWWxWbVVtTmpZVVppZEdVd1prSmpVV2RKYUVoblNtTnRZVzlpYm1KTloxaGlkR1kwWkdOaFJtRmFaekJrUkdneVpIUmhVMmRHWWtoaFJtVkhhRVZqTTJkb1ltRm5WbU5GWmpWbWNXWlZZWGhuYTJKVVpHTm9RV2gwWWxwalZtSm9aa3BrTm1kSFptMWtNV2hPWWxKaVJXVndaMnRtWldkVlpYTm9WV1JqWjFKaE1HRmtaRlJsVW1Sc2FHVm1UMmh0WmtGbGJXRkpaMU5vUVdWVGFFdGxSV2RLWmt4aVNHRkVZMEpvUldOUmFHaG1ZMmRHWVZSbmVHVnJaMVZsUm1GdVl6VmxNR2REWm1kbGQyVlZabUpvTUdRMFlURm9VbVZSWmtsbFQyUkNZMUZsUW1KaFlrRmhSMlZzWVRoaFZHaElhSGhoUW1WS2FHeG9hR05MWmtaaFZtSTRaRkpsWTJjd1pYaGpVbVZsWkVoblFtRlhaV1JvUVdRNVluSmhWV0ZvWjFGbWFtSlNZbXRuT0dKcllsVmhlV2hLWkhOalVHaHNaamhpV21kQllWaGtkMmhNYUVSbFVtWTFaV0puUzJOVlpHdGhiMmRDWmtOaVFXVk9ZazFrUkdkR1lVTmtSR014WW5ObFpHZElabFZrTUdWYVlsWmlibWRTWlhWb1pHRnVaMDVuZG1GU1kyMWlaR2hCWWxWbmVHWTFaekZuUVdGNFlVSm5VR1pTYUVaa09HTTBZMFZvZUdKRlpWVm9UbU5vWkhSbGNHRlRZMGhrU21KSFkwcGtNV2huWkVaaFNHUnBhRzlrWkdoR1psVmtWbUp3WlZwblYyTldaWGRqV0daWGFHaGtVbWRWWjJ0b1pHTjFaMDltTTJST1pVMW1WV1JZWkdobmQyRldaVzVvVVdWUVlXRm9NV1ZKWlZWalkyTlNZVkppVjJSTVpFRm5XV1ZrWTB0aWJXTndZVUZvUTJaM1lsSm5iV05GWmpGamJHTlJaMFZtYW1oT1owaG1aV1V3WTBabk5tRlhaVWhtTVdoMFkxVm9aMlpTWVdkb1EyVm5ZM1JqWkdKSFpsRm9jR013WVVwaE0yUmFaM0JtWW1kM1l6bGpPR2hRWlVKaFNtaE5aV1JrVldSdlkxRmhWV2hyWkZGbVRHWmpZMFpqYjJkbVpscG1iV2MxYUUxbFlXSlNZVkpoZVdWVVltNW1UV2hSWmxSb1JXZ3hZVkpuVTJkU1p6QmlRV1JhWTNsalVtWkxaRkJpZUdGVll6ZG1RbWhTWkUxaVpXVk5Za0ptT0dSb1owTmpVbUpCWVRobVIyVlNaV2RvWjJKSVltNWtNR0ozWVdOaldHUkdhR0pvUldGNllqUmtSMlpCWkZObVkyTXJaMGRvYkdaYVltUmpZMmRCWTAxaVRtVlhaV2hvU1dadllsUm1iV0pSWjJGbFVtRkZZM0JvYTJSbFlsVm1jMk5WYUdOalVtY3daV1JpVkdoU1pHeG5WMmRrYUVSamVHUXlaRXhqZW1ST1owZG5RMk5vWnpWblIyaFJaa2htVm1GWllraGpSbUZKWWxGb1VXUjZaV3RrU21SVWFFTm1UV0Z1WWt0alEyVTFZMEZuVDJSclpXUm9iMkZQWVd0a2VHVk9aVlZvVldScllWWmlWR2R0Wld4bk1HWkhaRWhuUW1kQ1oyUmhRV0pqWTB4bFNHWklhRlptV1dGalpURm5SbVZTWlV4aVJHSm5ZbVpvU21jemFGRmpMMmRWWVdob09XSjRZbFpsTW1RMVpqUmpSR1V3WVRsbmMyWlFZMmhsZEdaUmFGRmhRV1YwWm1abVNtVkdZVmxoVDJaYVkydG1aR2M0WlZObFNHTldZbWRsV21kSVpHeGtUR1ZHWmtobVJXTmtZMGhoVldFd1pWcGhWbU51WWxKb2RXaEtZMFJsV1dVM1kwVm5lbWRXWVZsa1JXSnNaemxtYm1aWVkxRmxXbVpMWjFKbVFXTXhhSGRvUldZd1prcG1kMlJaWm01aVNtZzNZMFJqVjJGYVpGaGlXV1YzWTBaaVltZFhaVEJsUm1SS1pGTmtWV00wWldkb1pHWkJZa3BtZDJaRFkwZGlPV2MzWWxObGEyYzFZekZoUldaWVkwNWtUV2hWYUZoamFHaDNaMVppYVdWclowZGpXbUV6WjJka1ZXaGpaMVZuV1dGVVlXVm5SbVpPWmxCaldtUkhaM0JsVkdkRllWWmxNV2dyWlZkbmQySnpaRnBoVW1acVkxVmxWR0ZRWTFKb1JXWnlZbEpuUkdSWlp6aGhRMkZzWWtGbldXaFZaekJpYkdKbFlVTmhlbUp2WlZKaVltWnRZM1JqZW1WTFkxSmlUV2R3WWxaaVZXSlpZVVpvVDJOblpsRm5VV05YWVdoa1FXVklabU5qUVdab1lVeGtZbUY2YUd4a1RXUmhaMUpsVW1aNVpsUmxibUpOWTFGaVZHSkZaakZtVW1kVFoxSmlWbUZQWTA5bmVtVkdaRTFpU21OU1lVMWhObU5WWWxWaVNtWnJhR1JvVW1oR1pucGxWR1JHWVVabE5HRmphRVpvV21Vd1pFUmtNbVowWlZOb1JtTklZMFZrVldaRllYbGpVV2RRWTFSbmQySnNaV2xpUW1KNFlWVmlWR1JhWWtGalpHRmFaa0ZuYkdKdllYcGlSbWRIWVc5alRtaExabmRpVVdKcVlVeGpVV05OWTJSaVptaFVaMk5pWkdGVWFGSm9iR2RYWW1Sb1IyRTFZakpuWTJJeVl6bGtSMk5hWVhobFdXUlRhRlJpUTJaRlowTm9WMkpSWWtWaUwyUllaM2RvTVdOaFowaG1hMk5XWkdsa1dtUnRZV3RtVldGallXdGtOV2Q2WmtWalJXRjRZazVuVldoVlpXdGhWbWhVWjIxbGJHVXdaRVZoUTJOUllVcG5VR1JSWjBsaGVHTkhaRzVrVldKaFoyTmhNV0l3WTNOalpXVkhZbmhtUzJaa1owSm5aR1JwWkZWbWEyTm9hR0puVW1kb2FFNW9OR2hWYURCa09XSnJabUZqYkdoTlpWcG1SV0l6WlVGb1RHZFhZMVpsV1dSVGFHVm5hMkU0WW5kbVEySlRZbU5vV21SSVpYbG9NV0pNWmtoak0yaEZZbEJrV1dkRllqQmpSbU5UYUc1alVtVXZaRmxqU0dWd2FIWmtSMlpyWkRCblYyaEZZbXRtZUdFeFoxTmxhR0pDWTFOblVtUkJaSFJqZDJoWFpXdGpTbWQyWlZsbmJXZGFaWEJvU0dWRFoxbGtSMkZQWm10aVRXVXpaVWRtVm1SR1prTmhSbVpXWlRCblZXTmthRUZvVW1GemFGRm9WMlZhWTBab1VXY3lZMUpuTVdGRmFGaGhUbVpOWmxWb1dHUm9abmRsVm1SdVlsRmpVR05oWXpGbFNXRmtaR0ZqYldOM1pGUmpaV1pHYUU1alVHUmFhRWRoY0dGVVkwZG5VbU5PWTNkaVZtUnNaMEpoWVdOUFlVaGhjR1JJWWxwbVJXTkdaSFZoVTJGdFpGSmxOV1pUWW5oa1VtSTFZbFZoZUdSTlptUm9VMmg0Wm10a1oyaEpZVk5uU1dSeFoxQmhkMkZPWTNCbVVtWkdabU5pVG1WTlkxTmpUbWRsWWtKbmJHTmpaMXBvUldOcWFEbGlRMlZqWlcxa1NXSm5abEJuUm1WdlpYaG5SMmhxWjNCalptTkJaR3RrTVdOYVlraGtVbU5zYUU5blQyUXpaREJtV1dKTGFESmxkR2d3YUZWb1ZXaHdaMDltWkdKU1lrWm9lbUpVWVVab1JtZzBaMk5oUm1KWlltMWtVMkpxWVRoaFNHSlNZMnBoT1dGSFowZG9NV2RLWkZSb1ZHZ3laRkpsY1dGVmFIaGxhMk5VWjJOaVFXSjBhRnBtVm1kb1lVcGtObVpTWTNwa1dtUkNhRTFpYUdkYVkydGhSbWRGWTA1blFXSm1abEpvTUdkS1lWRmlVbWhyWlVOa1VHaERaV05pYkdobVpsTmtUV1ZFWWt0alZtUkdaa2RtUW1GSVpYaG1SMkpQYUd4bVNtSkZaa05uTTJaQ1ltRm1VV1J0WVRsaWFXSmFaMjFpYTJWVllXTmhhMk0xWjNwa1IyVkNhR2RvUm1KSFprSmhjR1YxWjBkaGFHaFNaekJvUW1SSFozaG5RbVZhWm10b1ZtTkVabFJqYVdacllqZG5ZMlV3WTNoalVtUmxZa2htUW1aWFptUmhRV001WkhKblZXRm9abEpvZUdWU1oyaGhUbVkwWWxWbk1HaGpZbmRuU1dSb2FIQm5TMlpoWjBOa1VXVk1abFZrYkdSWlpVUmtRbU13WjJSak5HRllaMWRvTldkaVoyTmpibU5DWmt4alUyVkdaWE5oWkdaSVpWVmpNR0phWTFabmJtVlNZM1ZuWkdkdVlrNWxkbUZTWlcxa1kyWlhaa1ZrYTJWNFp6Rm5VV2hyWVZGb1lXZEVaMVpoWjJoTWFFUmphMk5LWjJ0aldXaHVabEZpVldoR1lVZGtOV1ZUWW1OaWQyUm9aa1ptVkdWUmFERmhhbUZHWjFWbk5XaHdaMlJsUW1ab1luZGhVV0pZWlZKaFVtRlRZV3RuTldneFlrVmpXR1JPWmsxblZXTlRaM2RpTkdkSWFIbGtaR0l3WTFCaU1XUkpaMlpvWTJkV1pWWmtkV1pWWjJ4b1RtRlFaMXBpUjJad1kxUmpSMlJTWVU1a2QyZERZVEZvYkdGWFlrVmlibUpPWjJOaFZHWnJaVVpoZFdaVFkyMW9VbWMxWmxOamVHaFNZM2hoU0dSU1pqQmpVV2hGWWtaamNHTmxZbUppYm1WYVpIcGlZbUV3YUZwa2JtWkdaR2huU21oTllXUm1WV1ZLWjJWaVdHVkNhRkpuV21kUVkzZGpOR2RPWWs5bWVtSnpZVEpqVEdKQ1pXOWpaMlZEWjNwaVNtVlZZVXRtWjJkRllXVmhRMlZGWjBWamFXTkVZa2hvVVdWR1pXTmlRV2hqWldobFNHUjNaV3RsWVdGUVowWmhOR0k1WWxSbFJtaHJaM05sWm1aR2FGbG1iV0pDWkcxaGMyRktaRkJsYm1KR1owZG5SV2N6WVdobFZHVlVZekppVW1KeFlsVm9lR1JyWjFSaVkyWkdabXRrWTJKQlkydGhZMk52WWtOa1YyRlJZMVJoWW1Sb1lWbG9OR1JsWlZObVdXaGpaa3BrVW1aRlpXUmlWMlZTWjFabFYySkphRU5qV1dVdlkwbGxSMkZGWTB0blNXaHNhR2hvVm1kSFpVUmhNV1ZFWlVobVJtUkpabnBrUW1GVFowbG1abUpCWjNsbmRHUnhaVTFuYVdGR1ltUm1TV0ZWWjBwbGVtUlNZVVZrUW1oT1lsVmxSbVpyWkZwaVZHUnVZblJrYm1SR1lraGpRbUZXWjJaa1ZXaHdaV2RvVkdodVpsVmtVbUpqWlRCamVHTlNZbVZvU0dSQ1pWZGtaR1JHWjBwamFXRllZMnBuTldaNFlWSmhhR0pPWVRSbFZXZ3dZamxtYTJkaFpXeGlUV1JhWlVka2VtSTBaRVprUTJoUllWSm1aR2hNYUdkaVoyRjNZMGRrUkdNMFpWQmlZV1JwYUhObFQyZFdZVlJvVm1jM1lsVmhVV0pLWlZsb1FXZG9aMWxqVEdaa2FHMWpOV2QyWjBGalJHVktaRmxuVldOU1pXZGxPR1ZDYUZabk5XRlRaMVJvUm1ZNVlUaGhWMkZvWWtKb2JXZFpZbXBoTVdKRWFFWmpTR0ZLYUU5bVkyWjRaRUpvVFdaVVoxWmxSbVpLWVVab1ZXVTFZWEJqU21kc1p6QmhhMmRHWTBOb1dXZG1ZbE5vYUdKNFl6RmhWR2hUWlRsbVRXVlFZVWhoUVdaclpWZGhibWRSWjJKaldtZ3hZMHBvUVdOUFlsRmlPV1pCWkdSbmFHYzRaVXRqUzJScFpqQm9TR1JWWWxKa2NHYzRZME5oZVdFMVkxbGlVV1JFYURoaFIySkpaMFZoYTJnMllVRm5hV013WW5GaFVtVjRaRkZuYkdoRlkxSmxNV05OWVVOblJtUndhREJoWm1kSFlsWmlMMkppWnpGaFNtTjFZMFJtVkdGb1lrMW1aR2hWWVc5bFVXUlZZV3RpVVdKTVlXTmpSbUZ3WmtOblRXZHRaWFJrY1dGUlluaG1VbU41YUZSbGJtVk5aRkZrVkdaRlpURmpVbWhUWVZKaVZtZEhaMHBqTTJSd1pFbG9TV0puWlRSbFoyTklabWhuTkdGWVprcGlWbU5TWkRsalNHVm9hRkZqTldoT1lVUmxTV2czWWxkbWFXaHJZMlZuVldGU1p6QmphbVpGWnpKb1ZtUlVhRU5vVkdGRloydGpSV2hGYURGaVlXTlFZVEJuVm1GYVlWaG9hMkZhWnpKaVVtSjZZMXBqU1dSaWFHaGhSbVZQWm1WaFZXRnpaRlZrWTJOU2FEQm5aR2RVYUZKbmJHRlhZbVJtUjJnMVl6Sm1TV2RUWlc5b1UyaE5aR3RuVW1WalpGUm9RMlZrWTB0bVZHWkJZelZvUldOYVltNWxaMmRQWmxSamJXWTVZelpsWVdodFpteGlRV1ZQWTJkbFkyZG5aRWhtWjJWQlpVbGtTR0YzWVRWb1FtaENZVzFqUW1ZMFpVZGlRV05rWjFCblNtWm9aVkZsVEdoRFptNW1NV1JHWms5a2QyRlZaME5uWkdkSVlVRmlRMk5sWmtGb09XUnhabEZuYUdKb2FIaGtWV1ozWjBab01HSlZZVEZpWkdaMFpHTmlXR0pyWTFwa1JXZ3paVUZuVEdWWFpGWmpXV1pUWldWamEyWmtaV3RtU0dkSFptUmtSMlpVWm01bGJHTk1hRVpuU0dKRlltUm9TR2RWWkRCaldtUldZVzVuVW1kdFpFOWlTR2d3WVM5alJtVkRZbWhuUTJGWVpWSm1aMlJ6WWtkbWJHRldZbU5uUm1acllqUmxlR1pJWjJsaVdXaG5aMDVoZVdSUmFHeGpWV1JTWVVGb2NtTmpZbmRrTVdaTmFFTmlkMkZSWVVoaFZtTm9aVzltWjJkUFl6RmtXbU4zWlZOb1UyUkNaR1JrVTJGb1pIaGtPR1JGWjFOa2FHVnRZVlZsV0dOb1pYZGpWbWh1WWxGalVHSmhZakZsU1dSVloyTmpWV0ZaWjFSbFMyZG9hRmxtWW1kTlpGUm9aMkZrWVVkb1ZXSkdZM2RqVm1GM1pWWm1WMk5tWWpOblNXRlVZMkZoUldkR1pESmpVbU50WlZGbGRHRkJZekZrTUdScFlrVmlNV1JGWVVsaVZtUjRaa1ZpWjJGS1oyNWhPV012WjJKaGVtZEdaM0JoVW1oR1oyTm1UbU5OWTFWaFNtaEZaVWRoWjJneFlWbG1abWhHYUc5alYyVlpZekpoU21KdWFHVm1RbVZvWVhsblYyVXlhRVZoWTJOVVpFWmlWbWRaYUZWaWFtTTVhRTlrWVdoWVpWRmhXV2hqWWtWbVJtSXdZMVZsVldWd1kwOWxTMlpDWW1oaUwyZGFabXhqUm1NMFoyTm5SbUZhWkRCblJHTXlaWFJtVTJSR1lraGxSbWRQWlZoa1dHTlphRVJtU0dKVFkzTm1LMmhJWjBWbU1XVkxZa2xtUldZMVpsaG1RV1ZWWTBGaGVtUkZZbmxqUldnd2FFSmtkMkZSWTNkbFJtTlRZalJuVldWaVlVSm1NV05pWkVkbVJtUmpaVlpoU1dORFptTmtOV0ZRWkZkbU9XTlBhRTFtZUdOdllWTmlTR1J1Wm14aFMyUlhhRlprTldORmFGUm9ibUZzYUdGbVIyUlZaRlprYVdGYVkyMW1hMlpWWm1ObWEySTFaSHBqUldoRlpYaG5UbWRWWkZWaWJHRmpZVU5qUjJWc1l6aGtSV1JJYUdkalZtRmtaVVZqZUdWTFoxSmlVMk5GWWxsbFptVXdZbmhsV21STFptNW5RbVZNWW1SblFtUTVZbkpsUkdab1lsRmthbUpVWm5oak9XSTBaRmRuZDJoYVlXdGlaR1F4WkUxbVNtaEZabmxoZDJaTVlVVmtSbUk0WldWaFpXVnJaMWxrYUdGVFowZGlaR1pMYUZCb01XaE9aRXhpUm1oSVowVmxaR1ZJWlZWbU1HSmFaRlpqYm1WU1lYVmxaR1p1WjA1a2RtWlNabXBsUm1SWWFGRm9SV2gzWmpaaFUyRm5aekZsVTJkTFpWVm5iMmhyWVVWb2EyaDNhQzlsVEdSVVkwWm1hR2hDWkc1ak5XaFBZbUZsZUdOQ1prZG1WR1pTWm1obVFXaEdZbFZtVG1Od2FGcGpVV0pPWjJGbVVXVllaRkpvVW1KVFptdG5OV2d4WkVWa1dHWk9aVTFuVldKWVkyaGhkMlJXWlc1b1VtSnFhRmxqZDJaYVpXTmxUMkZDWjFWb1ptRmxaa0ZrWkdKRVoxcG9SR2hvWldaaFIyVldZbkJrT0doRFlYaGxXbUpoWkVWbWJXUndaMDlqWm1jeVpIUm9kV1ZUYUcxbVVtYzFhRk5pZUdWU1ozaGhTR05TWVRGalRtRkhabFpvV1dad1kxSm9TR2hhWjNwbVltSXdabHBuYm1SR1ltaGxTbUZOWldSbFZXSnZZVkZrVldKb1lrcGtTMkpKWjJ4aGIyUkxaV0pvTTJVNVkyMWhaV1ZDWm1oaFdXRlVZVzVvVFdoUllWUmxSV0l4WWxKb1UyUlNZMVpoVDJoaFpsaGpVV0ZaWm1ObFJXaEZaelpuVldaV1ltUmhUMlphWjFGaGNHWmFZVlJrUm1GR1pqUmtZMmRHWmxwbE1HWkVaekpuZEdOVFkwWmtTR0pHWTBkbFZtRlVhR05tUW1WVVlqSmxkMlFyWjBkbE1XVkNZa0ZtUTJFeFkydGlhMmRXWTJkbU9XSTJaVlpvV0dKR1kxVmlZbWhyYUhoamEyZE1ZMVpvUVdGVlltVmhhR2hhWWxSaFZHVlJaRlpuVjJKUVpGZGpOV2QzWjJSblYyVTVaMDlqVEdkNFkxbGhXV1pWYUZoalZtZFpaRUptVldOU1lrNWlSV0ZJWkVKalZHWmhaa2RrT1dkcGFGcGpiV1pyWWxWalkyUnJaalZtZW1oRmFFVmhlR0pPWjFWalZXaHJaVlpsUjJScFlVVm1PV1JUWm5kaWMyaFVZMlJpUm1Gd1pFdGpRV1JCWldkb1VtVmlZV3RrZUdOYVpFeGpTR2hDWkZwbFpHVkZZV1JrYVdGVllXaG9TbWg0WjFab1FXRmFablJqVTJkSFoxWm5hMk5oWVd4aVRXTmFhRVZpTTJSQllVeGhWMmhXWlZsblUyTmxaV3RsWTJneVpVSmlSR1p2Wm1aaVRtRnFZbVJrVEdkU1pHNWxSV0ZYWWtobVVXZFJaRU5oWm1SSVlsSmxkV2RrWW01alRtTjJZbEptYldKaloxZGhSV1JyWW5kbmIyRlJZbmhuZUdRMFpsSmxRV1owWVhkbFYyVnJaMHBtZG1GWlpXMWpXbVJ3WmtaaVNHVnZhRUZrWm1OVmFFRm1aV2hCWVdkaVZXRkhZbEZqVW1kalp6Vm1UV1pTWjFsaWJtVkZhSHBsTUdGR1pVUmplbUp6YUdOb1dHRjVZbU5pZFdOT1pVaGxhR0owWlZabWFtaEtabUZoU21kU1prWmpRV1JQYUVGbmJHaGthR1ZtUm1SelpXSmpZV1ZIWW05alFtTkdaVkpuVFdVMVpFSmhNV05yWTFSblIyZ3paMjloWTJGVVlXdG5SbU4xWkZOb2JXWlNaVFZsVTJKNGFGSm9lR0pJYUZKaU1XVk9ZVWRrVW1FNFkzbGxZbWR1YURWbk4yWmFZbmhuU21GdVpVTmllR2RLYUVobVNXWlZaRTFoWTJOVloydG5lR1JhWVdOaVJXSmtZME5tWm1JeWFFbG9ObU5oWjFWaldtVTNhRkZrYm1STlpGbG9RbU5WWVRGbFRXTlRabEZrVm1OUFkwNW5XR0pTWTFKaFpXTlZZekZqTUdkVlkwRmtPV05JWTJabFFtaEZaRzlvV21kc1owWmxOR1ZqWlVaaldtZ3dZMFJqTW1OMFpsTm1SbWhJYUVablIyWkZaVE5uYUdSVVpFZG1VMlZWWlRSalZXVXhZMWxpVkdWaVpsRmljMlF3YUVabk1HVlpZWGxqVTJOVVoxRm1UMmRQWmxWaFNtRXlaV1JrVldKellVMWlZMlZTYUdOb1pHTkNaRUppUW1GWFpXVmhWMlkxWTI1aFlXSkZZbFprUjJkYVpuaG1XV05UWlZSbVNHaFdZVXRuUldOR1pFcG5SV1pEYUROa1FtTmhZbEZuWjJGT2FIRmlUV05wWkVab1pHaEpaMVZtU21ONllsSmlSV2hDWWs1alFXUXdZMVZsVm1GQ1p6SmtWbVF3WjFab00yZDRZVUpoV21aR1ltaGtVbWRhWmtoa1ZXSlNaV05tTUdGNGFGSmlaV0ZJWlVKbVYyRmtZMEZuT1doeVpsVmthMmhzWkdKbVVtTm9aMDVoTkdaVll6QmhPV0pyWW1GbGJHaE5ZMXBtUldFelpVRmpUR0pFYUhoblpHaEJZbVZsWjJNNVpHdGhXR1pIWmpSbVJHVmFaVWhvVW1STWFFSmtXR0l3WVRObFNHZFZZVEJuV21WV1ltNWtVbWQxWjJSamJtSk9aSFpsVW1WdGFHTmtWMmRGWW10b2QySTNZMU5rWjJFeFlsTmpWbVJTYUVKaFlXRlhaMnRrU21GMllsbG1iV1phYUhCaVJtRklaVXBsVDJoalpuaGxRbVpOWkVOaGVHYzBhR0prUm1kVlpGbG1PV0pRWVVaalJXRnFZazlsYVdoYWFGSmlVV1pWWnpSa09XRmlaMGhqVG1GU1pGVmlWMmR3WVd4alVXVXpZVkZsU21kaFluZGpXV2hRWkdObVZXVnpaV1ZtVFdOR2FFNWxVbUZsWmxkamNHTkVZMGRtVW1GV1p6SmhRMkl4WTBWbldXRkZZMjVpUW1GaFlscG1SbUZPWmpkaVdHWkhaREZuYVdSVFpYaG9NV0ZpWjBoblVtY3haazVpUjJaV1pWcGlNR0ppWlc1bVdtRjZZbUppTUdGYVoyNW5SbWRvWkVsbVdXSlFabEZtVG1KRVowdG9VbWRaWjB4alpXWXhaVzlqUzJGRlpHMW5TbVEzWjJGalVtWjNZbTFrVkdWdWFIZG5VV2hCWm10aFVtUlNaMVJpZUdoV1oyTm1abVJIWmtWb1JHVlhabXRuUm1Zd1kxVm5WV1p3WVU5aFpHSlNaa1prZW1KVVlrWmpSbWcwWkdOa1FXaFJZbmhtVjJKNllqUmxRV0pYWVc1alJXRlZaa1ZsTTJOT1lsUm5RbUZ1YURsalFXaFZZbmhvYTJSVVpHTmtRV0owWlZwaVZtaG9hRXBvTm1WU2FIcGhiR05KWTFsbmJXZENaV3RqWldSVlpuTmpWV0ZqWmxKa01HTmtaMVJsVW1oc1oxZG1abWhEWjBKb05HRkpabnBpTUdoS1lVMW5NV1JzWTBkalJtZFRaRlZsVUdWSVltZG9WV0ZYWjFGb2FXaFJZMlpqVG1OM2FGbGpjMmhOWlc1blJXUlZZMkpoTUdFMFpURm5VbVZSWVVsblQyZENaRkZuUW1WaFpVRmtSMlpzWWpoa1ZHZElZWGhuUW1OS1lXeG5NV1pMWWtKbU0yaDNaVkpuUzJaSFpscGxVbVZsWkVoa1FtVlhZV1JqUVdFNWFISm1WV1ZvWWxKbmVHWlNZV2hqVFdaeFlVWmlhR0p6WW5ob1QySkNaakJrV21WSFl6Rm5iMmRNWWxkb1ZtWlpaVk5pWldaclkyUmhhMkpSWlZkbk5XVkxabHBqU0dac1lVeGxSbU5JWVd4bVNtVklhRlpqUVdaYVoxaG9VMk5DWkc1blpXaHNaMnhtZG1oU2FHMWtZMlZYWkVWaWEyWjRaVEZqVTJOb1lrSm1VMlpTWTBGamRHaDNZMWRuYTJGdllqbGhXV0Z1Wm5Sa2NHUkNZMGhsU1dWVFpHTm9NR1ZLWWtab1VXUllZWFJpU21oR1psVmtOV0p3YUdSbFFtSm9aM2RoVVdWWVlWSm1VbU5UWkd0bE5XRXhhRVZqVkdkd1prMW5SR0ZUWjFKa2QyUlBZbTVpZUdoaVlrbG9lR1owWVVoalptRlZZbHBvU0dGa1pVWmxUV1ZrWkdGblIyWndaa05tUm1KU1pFNWlhV2hJWkd0b2VHTmhZMFZoYldWd1prOWlZV0ZIWTNSbWRXUlRZMjFvVW1RMVkxTmplR0ZTWlhoblNHZFNZekZoVG1GSFoxWm9XbU13WW1Ka2FtRm9aVGxqUjJkNlpEaGxXR0ZqWWpObVdXVjZZa1poUkdGb1oybG1UV1Y2WXpGb01HaEJZWGxsT0dSNVlraGxkMlF3WVZWa1NHWlNZMUZsZFdGRllXNWhUV2RaWmtkaVJXSXhhRTFrVTJkWWFHZG5VR1pRYUZSaGQySlhZazVoWjJFd2FEZGlTR2RvWjJoalIyZEpZVkpuYUdZMlkxRmpTR1YwWnpSa1kySkdZVnBuTUdoRVpUSmxkR2RUWWtaalNHaEdaMGRuUldZelpHaG9WR2hVWkRKbWQySXJZa2RqTVdaQ1lrRmtRMlV4WVd0bWEySldabWRoT1djMllsWmlXR1pHYUZWbFltZHJaSGhqYTJGTVlsVmhTV2RaWVZkbWVHTXdaMlJtVkdOU2FHeGxWMlZrWWtkaU5XZ3laMk5pTW1nNVlrZGlXbU40YUZsalUyTklaVzVoVm1aQ1pVVmpSV0ZPWjNWbFEyWXpaMEprWVdGUlltMW5PV2RwWjFwbWJXaHJaVlZvWTJkcllUVm5lbUpIWmxaalpHTnVhRlZvVldkclpGWmhWR2h0WVd4a01HVkhZa2hvUW1OQ1pXUmlRV1o0WjBSalVXVnNaemhuVW1KamFEQmhlR2RTWkdWaVNHWkNaVmRvWkdkQll6bGxjbUpYWjJ4bGNHZ3ZZMFppYTJWRlpUTm5RbUYzWkVGbGQySk5aM2RoVG1GalpFaGhVMlJrWTFwblJXUkJaMHBuV0doRVkzbGxOR2R4YUVaa1dHZzVZbU5qUTJWQ1pYaG5UR05EWlZobVJtZGlhRk5tUVdST2FHRm9RV0ZxWkRCamFHRlBaVWhqVG1kdWFFVm5iV1Z6WWxkbVVXVkZaRUppTVdOQlpIaG5iR1pUWlVobmVXRkdZM2RuVjJOclkwcGtkbWhaWVcxaFdtWndaa1pvU0dOS2FFOWxZMkY0WWtGaVpXUkRaMEZpVldoaloxSmxkMlZDYUhCalptVkVZMHBvZDJkUllWaG1VbWRTWVZObmEyWTFZVEZtUldSWWFFNWhUV1ZWWjFobmFHTjNZVlpuYm1oNFpHSm1ZV1V3WXpoalZXUmxaV2hrU1dKaFpXUmhTR0pzWTFCbFdtZEhZbkJqVkdGSFoxSmtUbVYzWjBObU1XUnNZMWRvUldSdVozQmhTR2RhWmtWbWEyWTRaRk5qYm1kc1lUVmlWMlY0WlZGaGRHSklZbFZpT1dSRllVWmpXR2Q0WnpCb1ltVnVaVnBpZW1SaWFEQmhXbVJ1Wmtaa2FHTktZMDFrWkdkVmFHOWhVV1ZWWVdkaU1HVk1aRXhtUVdSYWFFTm1RV1F5Wm05bmVXTkpabFptTUdKb1oxRmtibUZPWlVWbFVXSkZaekJpUkdaU2FGSm5WbUpqWWxwa1dHRlJZVTloV21aV1kxSmxibUpTWlVWaFdtRlBZVnBpVW1Ob1ppOW5XbU5zYUVabk5HWmpaMFpoV21Vd1prUmtNbWgwWjFObVJtUklaa1pqUjJkRll6TmlhR1pVWTBGaFYyWnZaMlZpUzJGdFlteGxNbVZHWlVoaVVXZzBhRXBvUjJKQlltSm5VR2RvWkhObWVXZEhZWHBuYjJWVlowWm9hbUZzYUdkbVYyTjRZakJuWkdSVVpsSmhiR0ZYWkdSaVIyTTFhREppWTJjeVpUbGhSMkZhWVhob1dXaFRaVlJsU0dOV1oxWm1SV1pHWW5CalRXZFlZbnBpWjJKVVpVVm5VbVZSWlhkblIySXlZV3RpU21kaloyeG9lR2h0WVVKb1ZXVjRZa3hqVldOU1lUQm5ZMlpSWm0xbmJHSTRZbFJtUkdobllrbGlTbU41WW05b1dXWlVZbTVqTkdaU1lsbG5hbU5HWjFKaFdtWllZVUZtUTJWa1pVSm9SbUl4WVZSb1FtVlNZWEJuVkdoNFpIQmlVMlJWWmpCbE9XSnJZV0ZqYkdGTlpscG5SV0V6WVVGaVRHSlhaVlpoV1dSVFpHVm5hMlprYUd0bFVXTllaMUprUzJSRFpUTmtSV0ptWmxoblJHWm9ZMDlsUldOVllURm5UbUZYWTI1b1VXRTRhR1ZrYm1oT1kzVmxWbU50WnpSaVlXaFBaRVZpZUdVeFpsTm9hR2hDWTFObVVtWkJZblJvZDJkWFpHdGhTbWQyWjFsamJXWmFhSEJpVW1SdVlrcG1SbU5qWTNka1NtRnRaMVJuVm1aR2FFcGlSbU5WWXpWb2NHTmtaMEpvYUdoM1oxRmlXR2hTWVZKbVVXSXhaMVpuWm1SRllWaG5UbUZOWlZWbldHTm9ZbmRsVm1kdVkxRmpVR0poWjNkaU9HUmtabVpsVjJGM2FGUmtaV2RHWms1alVHaGFaRWRuY0doVVkwZG9VbVZPWm5ka1FXWjRaMlJvV1dKUlltbGpaMk5KYUUxaFFXUTBaelpvUldSNllWRmxPR2hTYUZWb1RXTnFaVlprUldWcllrbGpZbVJFWWpobk5tZFBZVzFsWkdOc1owUmtVMkZPWVc1bFEyUjRZVWxoUzJOSlkwRmxVbUZVWlVKbVoyVXhaVVZpVUdSc1luQm1TMmhQWVRKaU5XUnRaRTlqZUdob1ozbGpRbVV6WW05alVXUkdaREpqWkdoU1oxTmtVbUpXWlU5aVlXWllaRkZuV1dOalprVm9SbWd3WVZWaFZXSnZaMk5sVFdaRlpGVm1iV2RJWW1oaE9XSTBabVZuU0dONGFEQmtSR0V5WTNSaFUyaEdaVWhoUm1OSFpVVmhNMlpvWVZSb1ZHTXlabEpqY1doVlluaG9SbWhJWm1OblFtSmFaMXBqV0dKVlpGcGplbWRUWlRCbU5XZENaMkpoYTJSd2FHdGpaV1JWWVhOb1ZXZGpaMUprTUdSa1lWUm1VbUZzWlZkblpHWkhhRmxvYTJKall6TmxTbU5IWW1SbGVHaGFaRTlrVkdORFpHUmlSR0ZJYUVobmFHZEZhRU5vTTJoQ2FHRm9VV1Z0WnpsbWFXZGFaVzFtYTJoVmFHTm1hMlkxYUhwa1JXRkJaRlptVG1SRVlWSm5WV2RXWlVsbmJXVkZaV2RsVldORVkydG9VMkpsWlVabFJXWmxaRkZpYm1SV1owUmlabUV3YUhob1JHRmtZMGhtUW1KQllsbG9VbUZ3WnpSaVVtSjRZMmhrZUdkV1ltaGxjR1F3WTJWalZXZzVabXRtWVdWc1prMWtXbUZGWnpOblFXaE1aRmRqVm1oWlpWTmhaV2hyWldSaWEyZEVhREpoUVdJclowaG1VV1pyWlhWb1kySkJZelZoT0doaVpucG5PV0UwWWt4bWQyaHpZV1JuUVdWM1lrMW1abUpMWkZKa1ZtUnBaRTluUldKNFl6RmlVMmhvWjBKa1UyZFNZVUZuZEdWM1psZG1hMkpLWm5abFdXRnRabHBtY0dkR1pVaGlTbU5TWm1OaGVHVm9hRVZvUjJOU1kydG9RV0pTWkdwalZXTTNaVU5tVW1Kb1ozUmxVV1pUWTBKaVVtSldaMFpvUW1oeWFFVmhWMmgwWjBaaFdHRllhR2huTkdWQlkycG9lR05IWVU5aVEyUnNhRWRrWTJSVllqQmlWR2RoWmxOa05XSlFhR1ZoVjJad1lVSmxSR1ZCWkZwbGQyVkVaVlpuYTJaRFprZGpNMmhPWTNSaFdtUkZaVVpsZFdSVFpHMWlVbUUxWVZOamVHZFNZbmhsU0dGU1pURm1UbWRIWmxaaldtZ3dZV0poYldONFpucG9RV1JGWnpSa2VtRllaMnhsYzJSbVptVmtWV1p3WWtWbldHZHJZMUptV21KbVpVWmpjR0ZFWldabGJXWjBZWEZpVVdoNFpWSmplV1pVWVc1aFRXVlJZVlJvUldFeFpWSmxVMk5TWlZaaFQyVmhZMWhvVVdWWlkwbGthMmhHWVM5blZXVldZMmhuYTJSa1kxSm5SbUY2WlZSblJtSkdZelJqWTJKR1pWcGpNR0ZFWVRKaGRHSlRZa2hoVjJWd1ozTmpSV2d6Wm1obVZHZFVaVEpsVW1GeFpGVm9lR1pyWjFSb1kyVkdaVnBsVVdOWFpXcGphR0kyWmxKbU1tWlNZVUppWW1OclkzQm1hMmhsWlZWa2MySlZaV1ZsVm1WTllsUmpTR1pWWlhObldtTkpaME5uUldOcFkwdGthbUk0WWtSaVlXZFZaa1pqUVdOQ1lWTm1SV05RWWxwbFZHSnpZa3RuV0dNeVprNW5TV0ZNWW1kbWNHTnBaR1ZrTW1kc1oxTmhTbUozWlVGbGQyZFNaVUZtVldORFlVaGxNR0ZyWm1SalIyVnRabFpuTUdWVGFHNWxlR1pDWTFCblZtUm9ZVXRrUm1kV1l6aGlVbVZqWkRCa2VHRlNaMlZvU0daQ1psZGhaR1ZCWWpsbGNtRlZZV2huVVdGcVpVRm9NR1JqWlhSaVFXUlJaa1ppYTJkWmFHNW9hMkphWTBWaE0yRkJhRXhtVjJaV1lsbGxVMlZsWTJ0aFpHSnJZbEZoVjJNMVpFdG9XbVZJWkVWalptRkdZMGRpZDJWa1pVWmphR1ZyWlZGaFYyVnNaRFZqZFdka1oyNWhUbVoyWlZKbGJXTmphRmRqUldKclpYaG1NV2hUWldoaVFtWlRZbEpqUVdkTlptbGpWMkpzWnpsa2RtWmpZVzFrV1dFeFlrWmtRMkZDWWtoblptWjZabkJtVFdWVVpWWm1SbVZLWWtaalZXWTFabkJvWkdoQ1ltaGtkMmhSWmxoa1VtSlNZbE5pWjJaa1pERmhWR2hUWWpsblRXUlFZMWhrUVdKclowaG5hbU14Wm1Ob1dtTXhZVXBtUVdKbVpsVmhXbUZDWkdSb1JtSk9ZbUpoWVdaSFpYQmxTR1pEWTNkbmNHRnJaVVZqYTJRNVkwSm5RV1ZIWVU1aFUySmhaMFZpUm1jclpsRm5NbUZvWVZSblUyTjRZVkpoZUdoSVpsSm5NV0pPWjBkaFZtTmFZVEJqWW1KdVpscGllbWRpWWpCbldXVndaMGRvUjJGWmFERmxRbVZUWVRsak1HSk1hRk5pVm1VMWFFRmlhbU56WmpkbVJXUkNZMFZuVkdWSFpWZGpVV0prYUZCbFFXVmphRFppVkdWRll6Rm1VbVZUYUZKalZtWlBaMkZqV0dGUloxbGlZMkpGWTBabE1HZFZaRlZoY0dKUFltUmpVV1ExWjNwbVVtZEdhR3RvYzJkUFpVSm1PR0p1WkdSaFJHRnNZVk5tU0dRemFFWmpWbWhpWW01b2FHWlBZbFJvZW1aQ1luRmlWR0ZSWldOblRtUmpZMEpuYkdkT2FGaGllR1ExWlZGaVVtTXlaVkppUW1OaVpXdG9jR2RyWm1Wb1ZXSnphRlZtWTJGU1pUQmhaR05VWVZKa2JHVlhaR1JtUjJNMVl6SmxaV2Q2WkhObVQyUk1aR3RtVm1Sd1owaGlibVJXWVVKaVJXVkZaMEZtTldKRFpqSmlNV2RoYUVabmJXVTVaemhsWldKSVoyTmhWV2haWWpGaWFHWTJaa2hpUjJKYVlVNWhWV1ZWWW10bVZtUlVaRzFrYkdNd1owZGxTR2hDWTBKb1pHaEdaVVppUzJkVVptNWpWV05TWkdOaU1HUjRZVnBqVEdKRVpXZG9abWhLYUROb1VXWTFZbFZpYUdVNWFIaG1WbU15WkRWbk5HVlVaR3RqT0dWM1kyRmthMk13WWtoalJHRllZa0ZtVkdKVllrWmpiMlUwWjJWamEyTmtZV3RsVVdKWFpEVmhTMlJhWTBoamJHTk1Za1pqU0dGRlltUm9TR0ZWWkRCbFdtaFdaVzVrVW1WMVpHWmxhV1ZqWkc1aVJHaDZaVkpqZEdoUlprUmtSbVl4WVZaamVHRkNZMEZqVldWU1l6VmtkMkZZWmtWbVNXSTNZV0ZoTW1FNVpFUm1SbWhJWWtwblQyTmpaWGhrUW1STlpsUmpWbUpHWVVwbVJtWlZZelZqY0dka1lVSm5hR1YzWTFGblYySTFaMUptU21aRmFGbGhhR1pYWWxSbmIyWm1ZMWhrV0dOblptdG1WMmR1WjFKa1pHRmFaREZqU1dSV1oxbGhWV000WjJaaFZXSnNZMDVsVUdWYVkwZG9jR2RVYUVkbVVtaE9aM2RqUTJneFpHeG5WMlJGWVc1amNHZElZMDVrYTJWR1oyeGxVMkZ1WlVKa1ZHSlRhSGhpVW1WNGFFaG1VbUl4WjA1a1IyVldaVnBvTUdOaVptNWhXbUo2WTFwbmJHSXhaMDVoUm1ob1pVcGxUV05rWkZWb2IyTlJhRlZrYTJaUlkweGxZMlJCWW1SbVRHUlpaVEJoYUdSdFpHRm5VbWhTWjNsbVZHVnVZVTFoVVdoVWFFVm9NV2RTWkZGb1ZtRjBaRUZoVDJGVFoxcG5XR0pLWmtGaE5HaG5ZME5sUW1KdloweGxaV2N3WlZsa2FHaENaMUZrVldJNVprSmxWR000WnpaaFYyZ3pZMmhuUVdka1pHaG9VbUZIWlVSbWJtSm5ZMVpqUjJocFltOWxjR0ZDWmpGbFFtWmpabEJvWjJoMFlWSmlRV1JvWlRWb05tUkdabGRtYUdSQ1prcG1NR1pPWld0bFNXaHRhRVZqVldWallsSmxNR1prWTFSa1VtSnNhRmRtWkdOSFpEVmtNbUpqWWpKa09HWlZhRWxuYTJKS1lraG5TR0pxWlhSb1MyRkhZa2huYUdGRllVTmhNMkZDYUdGalVXZHRaemxuYVdkYWFHMW1hMk5WYUdOaGEyYzFaWHBpUldoRlkxRmlXbWhWWTFaa1VXZFdZbEpsVkdneFpEbGhSbUZHYUhCbVFtUmtZa1ptUm1OTFlsUmxibVZWWlZKbVkyVXdaSGhtVW1kbFowaG5RbVZYWVdSaVFXRmpZelZoVldablpHeG5lR1JXWjJoaVRXWnJZbFZvZUdNeFpYUmhXbU51Wkd0bFdtZEZaRE5sUVdSTVlsZGxWbWhaWVZObVpXRnJZbVJqYTJWUllWZG5OV2RMWjFwbVJHWkNZMHhsVTJORFp6Qm9aR0pqWWxWalZtVk9aVWhoYW1Vd1lUbGlaV1p1WkUxbE4yUlRZbTFrWkdORllraG1hMlo0WldobFVtTm9Za0pqUjJOV1lXaGpTbVJyWmxGbU1XaFNaVFJpWTJaSVl6bGxPR2RIWkVobVNtWmxabVZuYUdSNFlXMWlWR1pXWmtabFNtVkdaRlZsTldod1oyUmlRbVpvWW5ka1VXZFlabEprVW1SVFlXdGlOR2MzYUVob2QyWmpaVEZqU1dOU1pqQmxWV1pMYUZKbVZtTTVZa2RrVkdkT1pIUm1SR2hxWjFaaGJXRkRaME5tVFdSbmFFWmxhR0UxWVRWblIyaFNaMDVpZDJkRFp6RmtiR2RYWjBWbGJtaHdaRWhpV21oRllrWmpkV1pUWlcxaFVtUTFaVk5qZDJKMFluaGhSbWhTWlZWbVdtSlZaRkpoT0dKdWFFWmxVMmRSWkU5blltVXhaM1JtYm1KUmFHaGxTbUZUWjJGa01XVlJZbEZvVVdWR1kwRm5RMlJtWjBoaFFtaERZbUpoTW1kS1lXMW1ZV1ZTWjFKb2VXTlVZbTVoVFdoUlpWUmlSV2d4WjFKaVUyaFNZbFpvVDJaaGFGaGpVV1pSWkVwb1FXRnJZVGxtUVdocVowVmpZMmhrWTFKbGNHWjZZVmhrVTJoNFlqUmhZbUZXWkZsbloyUkVaak5vVm1kTlkwTm5ibU5HYUZoblFtTllhRVprWm1GYVoxZG9VbUp4WWxWbWVHaHJaVlJpWTJaQlpuUmpXbVJXWkdoa1NtRTJaRkpsTW1aU1lVSmhZbVpyWlhCamEyaGxZbFZuVG1GQllrOW9WbVZTWWs5aVRtSnJhSFJpVjJkbVp6Sm1OV2RyWTBSaWJXSTVhR0poV21Rd1owbGtVMlJWWkcxb2RHVlZaRVZqUldSd1pFNW1RbVl4YUhCbFlXTlJaMjFtT1dScFlWcGxiV1JyWjFWaVkyWnJaelZpZW1oRmFFVmtlR1pPWlZWaFZXUnJhRlpvVkdKdFoyeGhPR1JVWjBSbVoySkpZMHBqZVdadlpsbGhWR0p1WWpSaVVtSlpZa1JuUm1aU1kxcG9XR1pDYUVWaFdXZFNZbkJrY21oV1pFSm1VV1ZzWkZSbWVHZHdZVk5rVldZd1l6bGxhMlpoWW14aFRXZGFaRVZqTTJkQmFFeGlWMlJXWVZsaFUyUmxaMnRoWkdocloxRm9XR0ZTWmt0aFEyaHVZMFZrWm1OWVpVUm1hR1ZQWkVWaFZXZ3haVTVvVjJKdVpWRm9PR0ZsWjI1alRtZDFZVlpoTW1FMGFHRmhUMlpGWW5oa01XZFRZV2huUW1OVGFGSm1RV1owYUhkb1YyVnJaVXBvZG1SWlltMWhXbVJ3WVZKbmJtTktaa1poWTJWM1oxSmxiV1ZVYUZabVJtUktZVVptVldRMVlYQmlaR1pDWjJoamQyUlJaMWhtVW1SU2FGRmlNV2hXWW1aalJXTllaRTVqVFdOVlpWaG5hR1IzWTFaaWJtaFJhRkJtWVdKM1l6aG1aR2RtYUZkamQyTlVZMlZvUm1oT1pWQmtXbVZIWVhCbVZHaEhZVkpqVG1kM1lVRmllR0prWjFsa1VXVnBaV2RoU1dOTlpVRmlOR2MyWlVWamVtVlJaRGhvVW1GVlprMWlhbVpXWkVWbGEyaEpabU5sUW1KbmFHZG1RV1JvWlU1amVtSmpZbXRqV1dGb1lsRmhNV1IzWmxCalNXVlJaRTVrWm1GSVpVVmtVV1JFWVVwbFJtaGFaRU5oVUdWWFpqVmliV0pKYUVKaWFHRjVaRU5uTTJkdlpsRmpSbU15WTJSb1VtTlRZVkpsVm1KUFpXRmtXR1pSWkZsaFkyZEZaMFpvTUdkVmFGVmhiMk5JWjAxamVHaEdaamRrVW1OR1kydG9jMlpqWmtWaWRHUXdZa0puUkdVNVptSm1SMlpJWjBaaFQyZFJaMWhsYUdkUFlWUmpNMmhTWVhGaVJHUjRZV3hrUW1abFkxRmtaR2RhWlZaaU1XSmtaWHBsVkdGdFlWRmlZV2hTWTBWa2NHRnJaR1ZvVldKeloxVmlZMlpTYURCb1pHaFVabEpoYkdSWFpXUm5SMlUxWVRKaFNtSlRaelJtVldGYVpqRm5hMkpUWkZWaVdHRlZaRzVoVldaUlpsbG5UV05DWVZOaFFXTldhRVppVjJoa1ozZG9ZV1Z0YUd0aVRXaGpaV3RoVW1aNlpsZGhWV040WlVGaVZXaFdhR2RtWTJaV1lWVmhUbU13WlVkb1NHRkNhRUptWkdkR1prWmlTMkZVWm01bVZXZFNaMk5uTUdSNFlWSmhaV2RDYUhob1pXaEpaVVZoWTJOcFlrRmpVbU5vWTNoaVJXUm9aamxqTkdGQllsVmhUbU5yWkVsb01XRTRaVnBrV0daSVlrRmhSMlpYWmxWbVkySmxhR1ZvYTJodlpuSmhVMkpJWWxaaFoySmFZVWhoYkdkTWFFWmtTR05GYUdSblNHVlZZVEJoV21GV1pXNWtVbU4xWTB0bE1XRnNZblptVW1KdGFHTm1WMkZGWW10bmVHSXhZVk5oYUdGQ1kxTmhVbWRCWkhOaWJXaEhZM2hpUW1oMlpVdG1iV05hWkRCaVJtTkhaVXBvUTJGWFpWSm1RbU5OWjFSalZtWkdaRXBuUm1oVll6VmljR0prWjBKaGFHRjNaRkZqV0dOU2FGSmtRbVpGWVRWa2IyRkZZVmRuU21GQloyVmhNMlZvWW5kalZtVnVaRkZvVUdKaFlqRm5TV2hWWW1Oa1ZXZFpZVlJuWldoR1pVNWpVR1JPYURKbWNHVlBhRWRqVVdoT1lYSmlTV0ZXWkd4aVYyRkZZMjVqY0dGSVpGcGtSV0pHWW5Wb1UySnRaMUpqTldoVFl6Rm5TV2NyWmxSaWVHTXhZMFpuVkdkU1l6UmpPV1pRWjFGa01HTm9ZMFZrYTJkYWFEWmxSbVZuYUVKaldtVlpaa1ZpYjJWWFpsVmxhR05CWjFGaVkyVkdaRVpoU21GS1l6SmxTbVEyWjJGblZtSXhaM2xoVTJOSVkxVmpVV1ZTWmtGalRtRlNZbEZpZDJob1lVOW5aV2N5WmtWblQyVmxaMVprY0dVd1lsZGtSMkZDWms5aFpHSlNhRVpoZW1OVVowWm9SbUUwWW1OaFJtSmFaekJrUkdReVkzUmpVMlJHWlVkblJtSkhhRVJsV0dGblpVaG5WR1V5WkVwb2MyaFZZM2RrYTJaVVlXSm9VbWRhWVVWblZtSnJZVVppTm1oUlkxZGpTbVZDWW1aaWEyaHdZV3hsV21kR1psbGtWV05LWjFab1ZtSlZaVWhrYldWSlpVVmtaR0pIWVZabU1tSlBaVEprT1dGTVpscGlkMkZrWTNaalZHUklhRTVqVFdkRlpVWmtiMmRZWjBObU1tSXhhR0ZuVldjeVlscG1kV1ZVWTBkaWEyZFZhR05oYTJJMVlYcGxSV2hGWjNob1RtVlZZMVZqYTJSV1lsUm9iV05zWmpCalIySklaMEpqU21KSlpFSmthMlZFYUVob1VXSTFaMFJpWTJjd1ptUm1VbUZOWkVGb01XaFhZbUZsVVdFNVpHcGhWMmRvWkhkbWJHZFNaMmhrZUdjMFlraG5WV05hWm10bFpHTkZZVEJuV21OQlpUTm1hMk5NWVZaa1JtRmFaMEpsWTJVd1ltUmhhV2hSWkZobWVHTm1ZbU5uV0dSQ1lsRmxVR1p1WkVWblpHTklhRlZuTUdGYWFGWmtibVpTWjNWaFpHaHVZazVtZG1WU1oycG1WbVZVWWxKa2FHWnJabTVqUW1SQ1owRm5RV1pTWlVGa1FtaDNaVVZpTVdKc1lrWmtXV1p0YUZwb2NHZEdZMGhuU21OUFpXTmxlR0pDWTAxbVZHRlJZbmhoUVdaSFpsZGlVbWR3WldSaFFtRm9hSGRuVVdWWVoxSmtVbWhUWkd0aE5XTXhZa2RsVkdFeFowTmpRV2RUWlc5bUwyaEJZMnBvZEdGaVowMWhaMkpLWjFKa1ptZDRZMFpsUW1aTllWRm1ZMkZMWjBSbFUySlJaa2hoWldJelpGcGpkMkpHWm14aGEyaFJhRkpqZW1WUlpVVmlUV1ZCWW1kb2FHSkNaRWRsVW1ONFlVaGllR2hvYUhoblZHVjRaa1poVG1OVlprWmljR1V3WWt0b00yRTVZM3BsVG1oSFozaGhibVJHWm1obVNtWk5ZbVJoVldodmFGRm9WV0ZyWTFGalRHRmpZMFptYjJoTVpFdGxWMlJLYUhWbldXSlNZWGRrYldGVVkyMW5OR1JSWlZKamVHZHNaVmxvVW1KU2FGWm1SMmhQYURObFVXRkdZMk5rUm1KR1lUQmxSR2RWYUc5aFkyaG1ZVUprTVdoNlpsUmpVbUpTWkhoaVpXSldaRmxtZG1KS1lsZG1kR1ZUWkVab1NHVkdhRWRoUldZelpHaGpWR1JVWXpKaVVtWnhaRlZuZUdWclpGUm9TbWRyWjI5bFRHUldZV3hqTVdJMlpGZGtiV1pSWjNOaFRHTjRaRFJqYzJoa1puaGxkR2RpYUVwbmFHWlZabEJoVVdGU1lteGxUMmRrWjBkaFVtUXlaazlpYldnNVpFeGpXbVYzWkdOaVltVldaakZoT1dkTFlVVm5SbU5LWTBWaFEyZ3paa0psWVdKUllXMWxPV2RwWWxwbGJXZHJhRlZuWTJocFpVcGpOMmRTWkVGaFVXTkZaMEZsYTJWVlpWWm9SMmh0WWxabU1HUlRaRzVqZUdaQ1oxQm9WbUV4WlV0alFXWllabFZqWTJWalpURm5NV2RrYUdWa1NHRXdZbHBpWm1kU1lsSmhRbUZWWkdoa1VtVjRaRkptYUdWT1pEUm5WV0l3WWpsbGEySmhZbXhpVFdaYVpsUm5iR052WTB4a1YyWldabGxqVTJkbGFHdGlaR0pyWjFGalYyZzFZMHRqV21aSVlXdG9aR1JXWWxOaVRXZGtaRlprVldNd1pVVmpWbVJxWmpGbmRXTmxaak5uVG1RclpWTmhhMkl3WWxkaFJXaHJZbmhqTVdkVFptaG9RbUpUWWxKalFXWjBhSGRoVjJkclpFcG1kbU5aWjJsbWFHSndaa05uV0dWS1pXWm1abUY2WkhCblRXaFVaVlpsUm1oS1prWmxWV2MxWW5Cb1pHVkNabWhvZDJkUlpWaGtVbVZTWjFOaGFHTXhaREZtUkdGSVprNW5ZMmhUYUd4blNtWjNaMVprYm1SUloxQmlZV1F4WWtsalZXRmpaRlZsV1daVVltVm5SbU5OWTBwbFMyVjZabWhpVkdKRllsVmhZMmMwWkZGb1oyTnZaWFJsVVdkSWFIQmlUV1JhWkVGbmEyTlVaRk5sYm1Gc2FEVm9WMmRSYUVabWEyRklZbEpsZEdST1pWUmlWV1l4WXpCbVdXUXpaWE5sTjJGaVpURmlhR1UyWVVaa1oyWktZVTFsWTJZd2FIZGtVV05YWkdkbWIyWk1aMlZvYTJSa1pFTmhabWhZWjJSaWQyRlpZVUZvT1dSNVpWSm5NV05yWmxGaVZHVkZZekZsVW1SVFoxSmhWbUZQWkdGbFdHRlJaMWxrWTJaRlprWmhNR0pWWlZaaGNHSlBaV0ZpZUdWRmFHNWtWR2hHWldSbksyVmphRVZrV21Zd1lrVmxibWhhWkZCaFJtWkRhRXBuUjJaR2FGaG9OV1ZVWmxoaE1taFNZM0prVkdSblpWRmxWR0pLWWtWaVRXUlJaRUpvVjJocllXOWxVbUl5WlRsblFtaEtabXRoY0dkMloyVmxWbUZ3WW5CalkyTlNZM05vWW1oVVpsSm1SV05HWTJSbFNHWk9ZVEpuV1dodFoxcGtTMkZVYUZKa1dXRlRaRlJrU0dGV1prdG9SV1JHWkVwaVJXWkRZVE5rUW1OaFpWRm5iV1E1WW1saldtRnRaMnRpWTJGS2FHZGpXV2MyWlZGbmVtZGpZMlpuVldSVlpFbGlWbVZDWVdobFVtVXdZVUpuV0doQ1owcG5abUpHWld0blpXTlVZMjVrYjJKU1pGQmxWV1JXWWxKb1dtRnRaVFZpVjJSYVlrRmlXbVJ5YUZobWVHVlJabWxsVkdoNGFFNWtLMlpWYURGbU1XaDRZV1psTVdWdlprTmtUMk5ZWkVGaVRHVlhZMVpoV1daVGFHVmhhMk5rWjJ0bVVXWlhZelZoUzJoYVlVTm5jMlZQWTFGblEyRlNaVkJvVldNd1pURmtUR0pXWjI1bE9XVjFaVkJoTW1ob1owWm1VbU50YUdObFYyWkZaMnRvZUdFeFpsTm5hR0pDWTFObVVtRkdaMXBsTldKV2FHMW1hR1IyYUZsaGJXZGFaSEJtUm1oSVprcG5UMkZqWm5obVFtUk5aMUpuVW1VNVowaGpVbUpTYUhkbmJXZEpaa1ptWTJkclprZG9RMlpSWlZWa1VtSkNZMnRtYm1SWFlVTm5ZMkZLYUU5bVJHWlpZbXRsVkdadWFGRmtVMkpoWVhoa1VtVkNZVkJoZDJaV1kwaGtUV0pTWjNkbFFtWmFhRWRsU1dWSVowWmpVbUZOWjJsaFFtSXhaR3RrWm1aSFl6TmtiMlJqWWxSa2EyTkdhSFZvVTJGdFpWSm5OV0pUWm5oa1VtZDRZVWhoVW1NeFlrNWlSMlZSYUZGaWVHUlBZMmxrVFdkb2FFbGlWV05hWTNabVVHTkNZa3BoVFdoa1pGVmtiMlJSWTFWa2EyVlJZa3huWTJWR1pYQmpRMmhpWmpKblNtSnRZbGxsVldoQ1pYbG9WV016WkUxbFltRkhaVVZuVW1Wa2FGbGplR1pXWlU5a1lXWllZVkZvV1dWallVVmpSbWN3WVZWalZXWndaVTltWkdOU1prWm9lbUZTYUVGblRtZzBZMkprVm1WYVlXdGlSR1Y2WjJSalUyWlNaVzVuYUdSTFlrOW9XR0ZvWkZSaVZHZ3lhRkppY1doVlluaGlhMk5VWldOblFXZDBaMXBuVm1Gb1lrcG5ObVZFWkcxaVVXSmtaazFpYTJKdmFFbG1ZMmhTWVRsaFkyZFBaa1ZtTkdOU1lsUm1WV0l4Wm1GaFpHZEVaWGhsTm1KalpETmtOV2hMWkZwamQyVmpZa0ZvVjJjelpteG5TMmhJYUZWaFRtTlhaVVZuTTJKc1lsZGhZV0ZIWmpsaWFXZGFaMjFrYTJOVllXTmlhMlUxWW5walJXZEZaSGhtVG1SVlkxVmxhMlpXWjBGaFIyWmpZa0ZvV1dWUlkwRmthMkZGYUVObU5HVnlhRkJuUVdka1ozZGxRMmhxYUUxaGFXUkVZbEZvUVdKdFlVZG1NMmN3WjJaaVZXVnJZV2RsZEdOU1pXaGxjMmR6WlZWak1XWktZV3RtUW1KNGFFcG1UbVZYWlROa05XTk9Za1ppVW1Gc1pXUmhTMlpGWWpoaWQyUlRaMGRrWkdKSFpsUmxibUpzWTB4a1JtTklaRVZuWkdoSWFGVm9NR1phWlZabWJtVlNaM1ZpWkdkdVpFNWhkbWRXWVcxbFkyZEpaMFZtYUdkb1l6RmtWR2hDWTFwblUyaFVaa1pvT1dWM1kxSmxNR1ZLWmpsbVpHVXphRTVvY0dGSWFETmpTV1ZoWldOaWVHaDBaVTFpV0dOR1pHaGlSbVpRWkRCbE5XZHdabVJpUW1kb1ozZGlVV0pZWlZKaVVtZFRaV3RrTldneFowVmhXR1pPWjAxalYyUlRhSGRsTkdKSVlubGhaR2N3WVU5aFUyZzRZVlZvWW1WRloxbGxRbU5pWlZWbFdtZFFhRmxvYldodllVaGhSV0ZDWmpsa1lXaERaVEZsYkdWWFlVVm9ibVJ3WVVoaVdtVkZZa1ppZFdGVFptMWxVbVExWjFOaWVHZFJZMnBpU0dkU1lscGpUbVJEWjBoaWVHSXdaR0psYm1KYVkzcG5ZbWN3WTFwamJtTkdZMmhqU21oTlpHUm9WV0p2WWxwb1UyVlhZalJsVEdOalpFWmxjR0ZEWldKbU1tSktabTFqWVdSU1kxSm5lV1JGWXpOa2IyWmpZbHBpYTJNeGFGSm1VMkpTWmxaa1QySmhaVmhqVVdGWmFHTm5SV2hHWWpobFNHY3daVkZpWldkS1p6Rm5OR0Z1WlVGa2QyTlZZbWhuU1dWQ1lVNW9ObVJYWlVSb2EySmlhRkZuUkdSUlpYWmlXR1ZUWW5oaFEyRlhabEZrWjJOUVlWVmlkMlJSWkZSa1RtSnNaVFJtV0dKR1pWVmpXV1Y2WjBOaVEyVndaMEpqV21kb1pUVm5iMmRsWlZKbWEyTlpZbU5sVm1SUlpsVm9WR05WWWtwb09HUmtZVWRuTldNeVptTmtNbWc1WWtkbVdtRjRaMWxoVTJGVWFFaGpWbU5MWkZGbmFHZGpZMUZsV0dScFprbGxWV0ZSWkcxaVpHTkpaMXBqYldOcllWVm1ZMkpyWmpWaWVtVkZZVVZpZUdoT1lsVm1WV1pyWTFaa1ZHRnRZV3hrT0daVVlraG5RbWhqWldSalJtVnZabVZvVW1NelpHdGxOMlpqYURCaWVHRlNaR1ZoU0dOQ1lWZG1aR05CWnpsaWNtUlZabWhvVW1kNFkxSm1hR05PWTNkb1FXSlZaVGxqTldWaFltdGhUV2hhWTFSaE0yTkNabHBqVldoR1pHOW1OR2hsYUd0blpHTnJaMUZqVjJFMVowdGpXbU5JWW14bFRHaEdZMGhrUldKa1owaGpWV0V4WjFGbVZtWnBhR2RpZVdSa1ltaGhPV1J1WWtWbWFXVTVaV1ptVVdGVmFFSm1NV2RJWldoa2VHVlRZVVpoWjJoa1lYZGtVMmRGWkRWa2RtVmpabGhuVW1FclpVRm5iV05XWVVOb1kyWjRhREZvWm1aWVp6QmpXbVJtWmtSbVZXVmtaV3huV0dOb1pHaGpkMlpSWWxoa1VtUlNZVk5tYTJjMVpqRmhSV1ZZWWs1b1RXTlZaRmhqYUdKM1kwZGpTR0p3WVRkbVJXUnBZa3BrZUdKR1lWUmpiR2g1WTBOaGFXWkZaM1ZpU0dGU1pGVmpaMlZpWVVka1RXTkJaMXBtUTJSelptbGlUMlZJWTNCb1NHSmFZMFZtUm1SMVkxTm1iV2RTWlRWblUyZDRaRkprZUdGSWFGSmhNV05PWmtkaFZtaGFaWEpvWW1KdVp6VmlOMlJQWVhkak5HVjFZbEppVjJOclptVmpRMk5GWjI5a1RtWlZaMnhuV1dGbFlWcGtWbU53WWtWalltSjZZVnBoZG1WYWFGSmlVbVUyYUVkbmFtaDBabHBuU0doNllWbGxSR2hUYUZKbE5XRlBZV1ZpUVdOcllWbG5ZbU5WYUVWaVoySlZabFppVW1WUlkyRmllR05HWkhKaFVtWldaV2hrVTJoalkwWmtXbU13WVVSaE1tSjBaMU5oUm1WSWFFWm1SMlZGWXpObGFHWlVabFJvTW1oU1pIRmxWV1IzWTAxb1ZHWklZWGRrVFdaT1kwaGliR2R6WVhCb1UyUXlZVkZqVm1WWlltdGliMkl5WTJSbFZXRnpZMVpqV1doU1pWRmlVbWhhWVhoamJHVlhaR1JrUjJjMVl6SmxZMmN5WVRsbFIyUmFaM2hsV1dOVFpGUm9TR1ZXWTB0b1VXWnNZa3BvVUdkRFl6SmxTbUozWlZGbmJXWTVaR2xqV21WdFptdGtWV1JqWkd0a05XRjZaRVZpUldaNFprNWtWMkZHWlVsaEwyRlVaVzFsYkdRd1pVZGpTR1JDWlVKa1pHTkdaVVppUzJGVVpXbGhaMlJaYUdabE1tRmFaRkpoWldaSVlVSm1WMlZrWTBGaU9XZHlZMVZpYUdoU1kzaGhWR0ZzWWpGb01tUkJaWGhsTUdoeWFGQm9hR2g0WTA1bVUyaHBZa0prVDJaV2FIZGpSbUZCYUUxbmVHUk5ZbWhpUzJORFlrRm9aV0ZrYUZkb09HWndaV05oV0dGRlprRmtTR2hSWW5SblRXRkhhRVJuWTJRMllWQmtlbVYzWTJoalVtVnRhRGxrUTJaSVlXdG5kMlp1WlZKaWFHVkJaR0puVkdKUlpuTmtjbU5qWTBWbFNtUjJZbGxtYldWYVozQmxSbUZJWWtwaVQyVmpZWGhrUW1kTlpWUmtVV2ROWlUxbFVXSlNZM05oTjJOUFptaGlhR2MwWkdGbk0yRlNaMUppVTJOclpUVmpNV0ZGWTFobFRtVk5ZbFZsV0dWb1puZGtWbWR1WjFGb1VHUlphSGRvV1dSVllXSm1SV0ZaYUZsa1RHVkdaWEJtUkdkVVpXMWljR1pVWlVkalVtRk9hSGRtUTJReFoyeGlWMmhGWjI1aWNHZElZVnBsUldSR2FIVmtVV2hxWlZwbU5XUldaMmhvVW1kb1pVaGlWV2hHWms1b1UyVXhZamxqTkdGU1lVaGpXbWQ2YUdKbU1HWmFZbTVvUm1Kb1lrcG1UV1JrWjFWb2IySlJabFZrYTJoUllreG5UMmRXWm05b1pXSk5aekprU1dKTFoxbGhWV2hCWnpabFFtRjVZa0ZuWTJoVWFFSmpiR1ZrYUZOaFZXWmtaa05oWVdaWFlWbGhWV0ZqWlVaaVNtUnRaRkpsYkdONFkxcG5aV2hTYUVabEsyRllaakJtVG1SMlpscGthMk0xWlRsaVFXUXdaa1pqVTJGR1owaGlSbWRIWVVWbk0ySm9ZbFJpVkdReVpGSm5jV0ZWWjNobmEyZFVaV05uUldoV1psaGxTV1J0WjNOb1MyWkpaMmRtUVdZcmFFUm5lbWhuWTFkblIyWkVZMHBvY21WQloyMWxhR1YwWlZCaldHZFpabXRvUVdGRmFGSm1NbUZqWkRKaE9XWkhabHBpZUdWWmFGTmxWR0pJWVZaaFMyUkZZMFpoU21GRlkwTmtNMlZDWjJGaFdHRlhaemxtY1dSaVlXcG5NV2RqWTA5aWVHRXdhRWxpVVdkcVpFWm5UbUpVWjBWaGJHaENZMVJtYm1oa1puRm5RbVp1WTBKbFdtTm1aRlpoTVdaTFlsSm1hV05HWkZwaVQyWm9ZemhtY1dGTFpHNW5RbVprWm1SaFFtVTBaMWRvVldkblpXeGxlR1pXWWtGbldtRjBZMVZoTUdWc1ltdGlVR05zWTI5bFVXUlBaRmhuUVdoTVoxZGpWbWRaWjFOblpXaHJZV1JuYTJOUmFGZG9OV2hMWjFwblNHWnNaa3hrUm1GSVpFVmhTR0ZJYUZObVNXZFNaMEZqYW1aM1kyNW1TbVJZWXpsbWRtUkZaRzFqYzJkWFlsRm1SV1pDWmpGb1UyVjNZVVpsWW1WVFpVTmtSbUozWlZkamEyRkthSFpsV1dOdGFGcG9jR2RHWkVoblNtWlBaMk5tZUdSQ1pFMW9WR0ZSYUU1a1NtUklaR3RqTldjM1lsaGphR05vWm5ka1VXSllZbEpuVW1SVFkydGlOV2N4WmtWaFdHUk9ZMDFvVldKWVpFWmljbWhtWTBoaVVXTlFZbUZsTVdOSlkxVm5ZMmRWWkZsb1ZHVmxZVVpuVFdoVFltSmxWMmRhWnpWaVIyUlNZMDVsZDJORFlURmpiR1JYWTBWbmJtaHdaa2hpV21GRlpXdGxaMkpTWWtSblVXSnlZMEpoUldkQlp5dGtVMk5WWmxGaFpHSllZa1pqWjJacVpsQm1SR000YUc1b1MyRnBaVGhvY0dGUlptZG9SbUpsWmtkalUyRTRZVkZqVkdZd1lWSm1UbVJLWlZKaVVXSkNZazluZVdWelpuQmpTbVI0WjFKbk5tZEhZVzVoT0dGUlpraGthMmRHWWxKb1FXWkNZbmhoVDJaTlkyeGlOR2haWldObFJXaEdaekJoVldOVlpYQmtUMkZrWVZKalJtaDZZbFJtUm1ORlpIRm5UbUZSYUVsbGFHRllZbE5rVm1GVFlraGhSbU4wWVVkalJXVXpZV2hvVkdaVVlqSm5VbU54WWxWb2VHRnJaVlJqWTJOQllYUm5XbVpXWldoa2IyTjFhRkpqTTJac1lrSmxXbWRTWWpWa2RHZGtabGRsUldaVloyTm9VbVF3WldSalZHTlNhR3htVjJaa1lrZGxOV2N5WVdOaE1tSTVZMGRrV21WNFlUVmlRV1ZVWTBkamFHWkxaa0ZqUm1WSllWbG9RMmg1WTBwb1ZHUlVaR3RsVm1kcFlWcGliV2RyWWxWbVkyUnJhRFZrZW1ORlpFVmtlR2hPWlZWblZXaHJZbFpsVkdOcFkwSmpNR1JTWlVOa2VHTkNaVWRrUm1OclpXVm5RbWRxWjNoalEyWm1aREJvZDJKR2FHUmtTR2hCWkVWblpXaEJaamxvTDJSWWFHaGxVbVpxWTFaaGQyWmtaWFpvVW1NeFlXUmpNMk5tYUVWa1kyaFBZMGhoTTJOQlpVZG9VMkl3YUdOb1IyVmlZVlprVG1JNFpsVmhibVpvWW1WbVptWklaVUptU0dSUVpHNW5SV2RrWkVoaFZXWXdabHBqVm1OdVpWSmxkV2hrYUc1blRtRjJZVkprYldSalpWZG1XR2RGWlVsaVFtSk5ZVEpuUVdRemFFbG9TR1ZSYUZKbFMyUkVaa0ZpVDJaSFlYaG5hMlpoWWxsbFVXZEpaQ3RoU0dGSFlrbGlOR0phWVRGbFJtRkthRVpqVldRMVpIQm5aR1JDWjJobGQyRlJaVmhpVW1OU1oxTmlhMmMxWkRGbFJXUllaVTVsVkdOVlpGaGtRbVEwWjBGbGFtUjRZVWRrVDJORFoyeG5SMmhFWmtWa1dXVlBZV1ZsUldkR1kyRmpZMlJYWkhCb1ZtWkhaVlZoWkdjMVprSmhNMkpPWmxkbVJXSnVaSEJqU0dWYVprVmpSbWQxWWxOamJXTlNaelZsVTJkNFlsSm1lR05JWWxKbE1XTk9ZVWRoVm1oYVp6aG1UMmRxWXpSbE5tVlFhRVJtTUdNeFlrWm1hR0ZzWjAxbldtZEVhR05uVVdkVVlqQmtVbU5tYUdOa1JXZFNaR05sWTJOWFpVcGhLMlJaWTBKamFHZFpZMVJtYm1WTlpWRmxWR1pGYURGalVtRlRZMUpuVm1SUFpHRmtXR0ZSWWxsaVkyWkZaa1ptTUdkVllsVm1jR0ZQWldabVZXaFZZVGRqUW1aUlpFbGhSR0ZKWkd4b1dtUXZZVVJsTTJWclkzWm5SbUZIWkhoblIyTlNhRE5pYUdWT1lsVmtXR2h3WkhGaVVXaG5ZemhqWVdWbVkwTmlSbVZhWlZabmFHWktaelppVW1neVkxSm5RbWRpWkd0bGNHTnJhR1ZqVldSemFGVmhZMlZTWkRCa1pHSlVaMUpsYkdKbFlrbGlRMk5aWlM5bVNXTkNabEZvVldKYVlYaG9NR1JUWTFoamQySm9aRXRsUkdKV1prbGhVV05EWlRKb05XWkZabGhvUjJNNVpIZGtZMmh0WTBGaFpHaFhaVVZoTldoNlpFVm1SV2Q0WlU1alZXVlZhR3RtVm1oVVpHMW9iR1F3WTBkaVNHSkNaVUptWkdGR1kwWmhVV2hVWkdobWMyTmFhRXBtZDJWUlpsbGpTMll6WTNoaVYyVkpaa0ZvVG1keVpFRmxRbVpvWkhoalVtaDNaVTVvZUdKWVlUSm5WbVpyWTJGaGJHZE5aMXBrUldVemFFRm5UR2RYWWxaa1dXRlRaMlZsYTJaa1ptdGpVV1ZVWVhoaVMyUmlZVE5pYkdGbVkxQmpibVpGWkdSaVNHSlZaekJqV21KV1ltNWtVbWQxWW1SaGJtRk9ZM1ptVW1KdFl6Um5UbVJQWlVWa2VHVXhaRk5rYUdSQ1pGTm5VbUZCWm5SbmQySlhZMnRsU1dkNVptRm5NbVp3WlVSa1JtWklaRXBuVDJWalozaGhRbVZOYUZSblZtZEdaRXBtUm1OVlkxbGlibU5sWW10aFoySnBZVVJuYVdaQmFHVm5TR0ZvWkdObmJHWldZa2hoTUdGaVkwRmplbUpGWTJ0aVJXWjRhREZsUW1aUVl6QmhSV1JIYUVWaGVXRk5ZbFJpV21aV1pFMWtTbUZOWVZObVVXRlJZbFJuVm1WdllTOWpVbWRXWld4b1pXZFNaMjVrV21aSVowNWxhMll4WTNWalFXSXlZVEZrTldaRlowUmxOV1Y0WWtoaVVtTXhaazVqUjJOV1lWcG5NR05pWm01a1dtaDZabUpqTUdKWllqRmhWV1F3YUZsaldtRktabmRuVVdoUloxZGliV1UwWlV4aFkyUkdaSEJuUTJSaVlqSm5TbUZ0WldGbVVtWlNZM2xrVkdOdVprMW1VV05VWlVWblZXSkdaRk5oVVdGb1lrOWtXV1pwWkVGaFVtSm1hRWRsZEdJd1kxVm5WV1J3WVU5blpHRlNaMFpuZW1SVVpVWmlSbVkwWm1Ob1JtUmFaakJoUkdReVprMWtRV2hHWVVkb2VHUkhaa0ZvTTJWblpsQmtWR1I2WVZwamFtWllZbnBrVFdoVWFHTmtRV0YwWlZwbFZtZG9aa3BpTm1GU1lqSm5VbVZDWW1KbGEyZHdhR3RqWldGUlpVbGtWV1ZNWmxWa1JXZGtZa2xrVW1oRllVTm1VR05EWjJOa2JHVm1ZVEpvT0dkVFoyRmhlR2hhWVVGalVXZElaVlpoWldGSVowWm5TbUZYWWtka2JXUlNZazVvVm1odVlXUmtlR0ZqWjBobk1HaEVaR1pqYTJFMVl5dGxRV1JzYURGbldtRlNaR3huTUdoT1psaG9XR0U1WW1kaFFXUklhR3hvVG1kWVoyeGtSbVJMWlZSb2JtSlZaMUpuWTJJd1pIaGpVbVZsWVVob1FtUlhaV1JtUVdnNVluSmhVV0pvWWxKb2RtSlNaMnRsWkdZMFlsWm9WV0ZzYUd0a1dXZG5aMk5qV21KRVkyNW5RV0ptWVZOaU1HZzRZMGRqV1dReFlVWmtlbVJWWVRObVpHUm1abHBoU0dOS1lVeGlVV2hJWmtWblYyaElZbFppZDJkUlpWZGliR00xWTNWbFpHRnVaMDVtZG1WU1lXMWpZMkpYWTBWbmEySjRZakZoVTJWb2FFSm1VMmhTWVVWb1ZtUXJZMHhoYW1KelptWmxRbVYzWmtsaFYyaGtZMUZtUVdJNFprVmhiV1ZyYUhwaFVHSnBZVkZrTldGYVlWTm1SV0ppWmtGaVJHWktaM2RpVVdoWVlWSmpVbUpUWW10a05XZ3haRVZtV0dWT1prMWtWV1JZWldobWQyUldabTVsVVdSUVoyUmpSbUpKWVdOa1pXZFNaVXBtWW1WTlpGRmlRV2d3YUU1aWFHSmtaRlJtUW1oQ1lrMWthMkpEWmpCaVpHVkpZa1JpU0dOd1pGWm1ZMlpGWkdobWFXRlpaa2RoVW1RMVkxTm1lR2RTWjNoblNHSlNaVEZtVG1OSFlsWm9XbUV3WjJKaGJtWmFhSHBoWW1Vd2FGcG9ibWRHYUdobGIySlpaVkJuVVdKT1pFUmtTMk5TWWxsaVRHRmxaREZuY0dkVVkwVmliV0ZLWXpkb1lXRlZhRUprZVdkVllVZGxNR0pQWkZSbFJtVjRhRWhqVVdWQ1lXeG9hMmRoYUZobVVXVlpaV05qUldKR1lqQm9WV0ZWYUhCblQyaGthRkptUm1ONllsUmlSbUZHWlRSalkyTkdZVnBvTUdKQ2FIcG9PR05oWmxoa1UyWkpaamxtVVdoWWFHaGlXV2hVWlROa1dXUllZVlZvZDJaUlkxUmxTbVJCWkhSalNHaFRaVUZsZUdjMllWaGhNbUl4YUU1blVtSkZZWEJuYTJkbGFGVmtjMk5WWTJOalVtTXdZV1JuVkdOU1pXeGlWMlJrWlVkb05XVXlZV05qTW1jNVpFZGxXbVI0YURWaFIyTkNaRVJvZDJWYVpHRmxkMkZDWkVWbFFXTklZa0ptU21aUVp6SmlPV1V2WkZwamJtUnpaMEppV21nd1p6Vm5NV1pGWjBKbWFHUkZaVmRrUjJSTlpsWmhWR1Z0Wkd4b01HZEhZa2huUW1aQ1kyUm1SbVJHWjB0bFZHUnVaVlZsVW1Walp6QmhlR2hTWWxsaWJtaEJhRFJsWm1WR1pYTm1hbUZIWkRCaFpHYzVZMUpoYTJka1pEQm5WV0o0WWpGaWIyZGhhR3hrU1dkSllVZG5ibU4zWTJoaFYyRldhRmxoVTJObFkydGhaR1pyWkZGbFYyWTFZa3RtV21GSVpHeG9UR1JHWTBoaVJtTlFaMGhpVldaWlkxcGpVV1JzWkRWamRXRmtZVzVpVG1KMlpGSmpiV2RqWjFkalJXRnJaM2hrTVdGVGFHaGlRbUppWkZobmVXVkdaWGRpVjJGclowcGlkbU5aWVcxaVdtRndZa1poU0dGS1pFOW5UR1pvWVd4alFXVmFaekZtUm1oS1pFWm1WV0UxWVhCb1pHWkNZMmhvZDJGUmFGaGtVbU5hWWtKalJXSkJZV3hqVVdoNlkzZGlXV2hJYUdsaGQySndaa0puYW1KRlpVSmlVR2RCWTBKa1pHTktaMUZpVG1ZeFpVNW5RbWgzWTA5blRXVkJabGxrTW1GSFkxRm1OV1YzWjFSblVXWjNaRmxpVldoVFpEUm1UMkZMWTNkbU9XTjFaMUZuYW1WQ1l6Rm9VMk13YUZwak9XZElaVlpoVW1oRlpVZGtVV2N4WW1WalltWnVZMXBrZW1kaVlqQm9XbWh1WjBab2FHTktaVTFqWkdOVloyOW1VV05CYUVGb1JtTm1hRXBuVVdWblowMWpZbUo1WTJ4aWRXUlFZMVpoZDJFM1pVaGpXR0U0WjFGblIyTkZhRVpqVW1WSFpYaGxiR2RQYUdGblIyZFJabFZoWTJOQlltaGtPV1ZUYUcxaVFtSlBhR1JpVW1SR2FIcGxWR1pHWkVabk5HSmpaRVpuV21nd1psVm5iV1ZLWTJWbVVHRnVZVVpuUjJoRlpETmlhR0pVWlZSbk1tUlNaM0ZuVldONFpXdGpZbVpRWkdkbVZXSktaVUpoUm1jd1lYVmlRMk5FWmtGaFdXZFFhR2RpT1dSeFpreGthR1JzWm1SbVNtWldaV2hqTjJoQloxWmhXV0pZWVVsaFFXUjNZMVJuWTJJelpFcG5SMlZKWjFWaFRtVmpZa1JvZVdaRmFFUm1XR1I0WlhoblJXZEJaM2xoVW1KWFlsRm1hbVl4WTNWbVdtWnBaVUZpWkdaalltaGxWbUZhWTBWaFJXaDRZVTVpVldoVlltdGhWbUZVYUcxaGJHSXdhRWRpU0dSQ2FFSmtTbU5vWmxGbVpXTkhhSGxqWkdabVkyTm9kMkZrWWxwa1RHaEVhR2RrWm1WS2FIZG9UbWR5YUVKbmFHVm9abmhoUm1KQ1pqbG1OR0ZWWW14bk5XZHZZMkZqYUdWdllWRmtRMlpHWlc5bVRHUlhZbFpsV1doVFoyVmphMlZrWm10bVVXRlhZelZvUzJoUFpWaGpRbVpJWkZCbWJtVkZabVJoU0dWVlpUQm5XbU5XWkc1blVtVjFabVJpYm1oT1oyNWlRMmhIYUd4blIyVlJaa0ZvVFdkb1kwSmtWV2hSWTB4aVJtRkZZelZoSzJORVpGSmxRV1p0WWs1aGFXSk5aRTVoVjJaNVkyTmlUV1JRWnpGblZXZG5aRXRrUm1SR1psVmxSbVJSWTJka09HVlBZV3huYzJacllrTmpSR0p6Wm1ablUyVnJaMWxuYUdOSWFGaG1UV1ZsWVZoaVdHRm5ZelZrV0djellsSmhWV0pSWkZablNXaFZZV05rVldOWmFGUmhaV1JHWTA1blVHUmFZVWRtY0dkVVlrZG5WV0pGWmpGb1dHaDNhSGRtUldWWWFFaGtiMkpPWVdKb1FtaFZZVzFvUVdKNlptUm1NV2hUWVRCbVFtSTVZMGhqVldnNVpFSm5SMkpXWldSaWEyUlphRzVvV1dFMlpGcGliR2N4WlU1alJtSm9aa3BoVFdoa1pGVmliMkZSWmxWaGEyVlJaMHhtWTJWQlpXUm9UR2RaWmpCbGFHaHRZV0ZpVW1aU1ozbGtWR051WkUxb1VXTlVaVVZoTVdaU1pGRm5WbVYwWWtGbVQyWlRaRnBuV0dWS1owRm1OR1ZuYUVOa1FtRnZaVXhsWldjd1oxbG5hR2hDWkZGb1ZXSTVZMFprUW1OclltaGxWR1pUWm1ObVdHUmtZMmhsVW1aSFpFUmhibU5uWmxaaFIyUnBaMjluY0dWQ1l6Rm5RbVpqWmxCa1oyTjBhRkprUVdkb1pEVmlObUZHWVZkbmFHRkNaRXBrTUdST1pHdGlTV050WjBWaFZXTmpZVkpoTUdGa1oxUm9VbVpzWTFkaVpHUkhaalZvTW1SalpESm1PR1pWWlVsamEyZEtaa2hvU0dGcVozUm5TMkZYWkd4bWIyRlJZbEZtZW1kclpFcG5WR1J0WkRoaE1tSmhZMjFsYkdOSGFHWmhhMmcxYUhsa1FXaFZhRUpvVG1OSFlVVmpRV1pQWkZwb1IyZHNZekJpUjJOSWFFSmlRbU5rWWtablJtRkxZbFJuYm1GV1pFMW1aV0ZyYUVKak4yUmxhRWhuUW1GWFptUmhRV001WjNKalZXaG9aVkpoZUdoU1oyaGpjMk15WlZoblVtUTRhREpsU21aUloyUm1WMkpTWW5samJHWmlaRWhrUm1ob1kxSm5UbUpTWkdOb09XaFJZMWhuVG1oTFlrbG1hV1IzWkVaa1ZtRjVhRlptVldSVllXZG1UV2hhYUZobmFXWkNabWxoWkdKcFlVWmphbVJTWW1saU5HWmhZVVZvWjJWc1lqaG1VMmhyWm5Sb05HVlNaVUZsZEdGM1lWZGthMlJLWkhaa1dXTnRZbHBoY0dGR1pFaGxTbU5QWjA5aGJHVmFaMDFrVW1oWVluUm9TbUZHWVZWak5XSndaV1JpUW1kb1kzZG1VV05ZWWxKalVtWlRaV3RuTldNeGFFVm9XR056WVVaalZXUlRabEZqYzJKV1ptNWplR1pIWW1Gak1HRTRZbFZpV1dKVlpUaGpabVpWWkd4alRtRlFZbHBuUjJWd1kxUmtSMk5TWVU1b2QySkRaVEZqYkdkWFowVmhibVZ3WVVobFNXTlZZMFZsZVdGR2FHMWhVbU53WlZOaWQyRnNhSE5sUVdWQ1pqQm9TV1pIWTFGbmIyVnZaV0pqYm1VMFlqSmhZbVl4YUhSaGJtVlJaR3hoYjJGR1lrcG5hMmhTWVdObVJtWjNaWEJqVFdOS1prSmxTbWhNWWxsbk1HaG9ZVzFpWVdKU1psSm9lV1pVWTI1bVRXUlJaRlJqUldJeFpsSm1VMmRTWVZaaFQyRmhaRk5vV1dWWlpXSmhiR1o0YURCblFtaFZZbEZpUTJaTlpFWm1PR1l3WmtkalFtVnNaelJqWkdWc1pFSmtNR2hDWkhwb2JHWlRZME5uV0dSRllWTmpTR1JVYUZGalYyUkJaMU5sVFdFcllrZGtlR2hCWVdabFYyWm5aM1JuV21OV1kyaGtTbUkyWmxKbU1tTlNaRUpuWW1ocmFIQm1hMkZsWlZWaGMySlZZVWxpZUdJeFpFSmtSV2RTWkd4blpXVktZbTFoTldOeVlXTm9NMlk1WmxCbVlXUjZZM2RvVTJWVVkwaGtWbU5MWmtWalJtWkthRVZpUTJFemFFSmtZV2RSWm0xak9XTnBhRnBsYVdaM1kxVmtZbVJGYURWb2FtZEZaa1ZpY0dKTVoxVmpVV0pCYUZaalZXTkhaMnRvZUdSSFlVaGtXbWRJWW1SaVJtaHJaRkJuVkdodGFHZGpVbUpQWW10bVZtSmtabFZqYm1WQ1lsZGtaR2RCYURsb2NtUlZaR2hrVW1ONFlsSm5hR1ZPYURSa1ZXY3dZamxqYTJoTVl6RmtUV0pGWlVSa2JXTXdZa3hoUldGR1p6aGhOR0psWVd0aVpHRnJaRkZrVjJJMVpFdGhXbWhJYUd4bFRHZEdZa2hqUldoa1prWmxSMmRqWVZwalZtSnVZMUpvZFdKa1pHNWpUbVoyWlZKbmJXUmpaMWRuUldoclpIaGxNV1pUWld0bFNXVllZMFZuUm1jMFkybGpSbWRGWVVwaUwyTmxaMVZsZUdod1kwWm9TR05LYUU5alkySjRaa0poVFdaVVlsWmtSbVJLWTBab1ZXUTBZMmRrVFdWb2FHaG5OR2hWWVZoblVtRk5abFpvTVdWT1pERmpVbUpZWVRCalFXSkdZVVJtV1dFelpVRm9hbWgzYUZCbFRtUjNaVFJtVldaWllWVm9XV1ZQWmxwb1ZXSTFaRkJvVFdoRFkwbG5ZV2RUWTJoaE1HVTRaRlJpYUdKalpGSmxVbWhxWVVwa1QyaGFaVUpqVFdKeWFFaGthbWhGWm5KalFtRlNabEpsYUdSQ1lXcGxaR2RPWjBkbFZtaGFZekJoWW1SdVpscG1lbUZpWVRCbldtZHVaMFptYUdkSllrWmxUV0V3YUc5aldXRlJZbXRrVVdkV1oyTm5RV1JvWmt4alltZDZZbGxpZFdaUFpURm1jMk5zWmxSaWFtSXhaVlpvUjJNd1l6QmhhbUZEWTBabWMyUktZVXhvUW1OR1lVdGlTV1ZuWWpSb2JXUlhZVlZoWjJKaFpVNW1SV1pOWkRCa1EySlJabFZoVEdkS2FFSmlZMkZ0WjFkak1taHpZV1JtVVdOVFlWWm1SMmRZWTBSbU5XaFVZMFJuVTJKelpTOWxTR05XWVRGblFXVmpZbWRuU21SRFkyWmhRbUZLYURabFVtZ3laMUpsUW1kaVoydG9jR1pyWm1WaFZXRnpaMVZtWTJWV1lWSmpZbVJVWWxKaFJtaEhZbVJtU0daQ2FESmhUMlp0WkRobllXaFBZbmhqV21WaWFGUm5SMlowWlZoa1JXSkJaMWxpVFdWUlpXbG9UbU5WWWtSbmFXaHZaSE5uU1dWVVl6RmpZMlJsWVRKalVtTjZaMFZrUldGNFkwNWtWV1JWWTJ0b1ZtWlVZMjFrYkdnd1lVZGtTR1ZDWkVKblpHWkJhRlZoUTJkSVowUmpjR2RIWjJObWQyRkpaMVZuVEdFemFFRmthMkpPWkZWaVJXWnphRVpoTTJKRllXcG1SbUpHWlhkaGNXSlhZekJoTUdNelpFcGhVV0phWmt4aFZXTkVZbFpuTkdaRVpGSmhaR2RCWkV4a2EyZGpaSEpvUm1KRVozQm5TMkpMWlhwbk9XTk1ZVlpqYW1VMVprbG5WV0ozWW14aFMySldZVWhoTVdVeFpsaG9TR1JPWjNaaFVtZHRZbU5uVjJoRlpXdG5lR1F4WkZOaWFHSkNhRk5vVW1GRlowbGtNbUZYWkd0bmNHSXZZbGxsYm1Ob1kzQmxWV05ZWW5Sa1QyZEtaREZvWjJSbFpFRmpaMlJhYUVwa1YyVjNaSE5tSzJoa2FFZG1iMmQ0WkVSamVtWk5ZMVZvVEdWNFpIZGlibVJZWW1sb1JtUkZZVlZsZVdkelpTOWtRV041WlZwbVRXRk1aR3BtWkdaaFpFNW1WV2hhWVdOaFRHWlJaR1JvVUdGTFkzbGplR1JVWVZkb01XWjNZMnhsVW1oU1lUQmhSbWhGWkVob1RtVmpaMVJqYTJKR1lYVm1VMlJ0WWxKbk5XZFRaWGhoVW1GNFpraGtVbUV4WjA1aVIyWlNaRTVrTUdaalpraGhXV2h1WTBwbWQyYzRaekJtUjJKR1pEUmpTbVZQWm5kaE1XWkZaMGRpYTJOUlpVNWtaR1ZzWjNCaVMySkxZMjFtU21RM1ptRmxWV0pCWlRab1FtUjVZMEZqWldGQlpFRmtaMmRtWkVSb2EySkZaRWRvV1dWSVoyZGplV2RqYUVWbVJtZ3daVlZqVldkd1lrOW5aR2hTWkVabGVtRlVaRVpoUm1JMFkyTmpSbUpaYUdkaVFXWlRaR05sV0dWWFkycG9XV0pUWTFkaE0yVm9hR1ZtVkdWNlpGcG1jV1JVWTNobmJHaFhaV05tUVdGYVlWcGxTR2g0WjBwbU9HZFJaMWRrVW1OS1kwdG5NR2h3WXpWbFpXVlNZamhtWVdkUVlWWmlhR0pVWkVOa2EyUXdZbVZvWkdSSFlVNWhNbVJKWlZkbk9XVk9hRnBqTVdVNFptSm5WbWd4YURsbVMyTkZaVVpvU21aRllrTm1NMkZDYUdGalVXSnRaVGxrYVdWYVltMWhiR1ZEWTAxa2VHVjRZbnBrV0djd2FFSmhibUpWWTFWamEyVldaMVJoYldOc1l6QmxSMmhJWTBKa1FtWmtaMFprUm1oTGFGUm9ibWhXWVZwaVkyUXhhRVpvVW1SUVoxaG1RbWhpWVdSa1JXRmFZWGRpWldSQ1kxSmxlR1pTWTJobVRtSTBaVlZpTUdRNVltdGtZV2hzYUUxb1dtZEZaSHBpYkdaT1lsZGhWbVUxWWtkblRXZG5aRFJpTTJOUllsaGpUbWRZWW1Wb1dHRnJaV1puUm1oSVptTm9ZbVJJYUZKbE9HTmFhRk5oU0daUmFHNW5aR051WjFabmNHTlNhR2xsU1daWFlVUm5SV2gzWm01aFVXVjZaM0JpVTJoU1lrRmlkR0ozWkZkb2EyUktaSFpvV1dGdGFGcGxjR05HWkVoa1NtSlBZV05vTVdkWlkwUmhTR0l4WlVablFtSlhZMnRtTldRd1lXUm5SbWhDWTNkbFZHRklabEpsUVdKVloxVmtOR1EyWTBWbFYySXhabEptVldkWFoyaGljbU5XYUc1a2EyaERaVXBrUm1GelpsVmhTbVpVWkRGalkyTmxaRVppYUdkUWFFNW9hR05rWjFSaVFtUkNZMDFuYTJkUlpYaGxRV1JHWkdGa1ZHWldaRWhrWW1Nd1lVVmlibVJPWkROa09XRlVZVk5vZUdkU1kzaG1TR0pTWnpGb1RtZEhaMVpsV21jd2FHSmhibWhhWkhwb1MySm5ZMjltTUdOVlkzaGpTV1ZHYUUxbE1HTnZaMWxuVVdoM1kwVm9XV05qWmtWb1VtaERaMHBsTW1KSlp6WmtUbWhTWlZKamVtZEJhRWhpTVdWcmFFNWhWR2N3WkRCblRHVlhZVzltZG1GSFkzZGhXbU0xWVVOa1ZHYzBhRWhpU21WRVpXOWlLMmhIWkcxaVRXRklabEpsV0daMFpEUm1ZMk5HYUZwaE1HaEVaakptZEdoVFlrWm5TR05HWWtkaVJXVXpZV2huVkdSVVlubG9TV2RzWWtGa1VtTnJZbUptVUdWM1luUm5SV0ZXWVdkb1NtaG9ZMUpuZVdONFlrSmxZMlZGYUc5amNtUlpZMnRoYzJobVpHVmtiR1ZKWjFWbFZHSlZhREJqZEdGUFl6Sm9OV1k1YUdObGVtY3dZamRvV21WM1luTm1VMmhIWTBSak1HRkVabEZsZVdWcllreGxRMll6WTNSb1lXTkRaSGhvU21nMVpWUmtSMmhyWjFWaFkyWnJZVFZvZW1aRlprVmplR1JPWTFWb1ZXZHJZMVpsVkdacFluZG1OR1ZUWkhwaFZtTkNZMEZpVW1abmFFVmpSMmh0WkRGaGQyaEpZVkpqTkdWUlprbG5XR2cwWkVkaFNtSnJaMEZqTDJaSVlsVm9RV1p2YUVaa2JHaGFZekpoUVdGQloyOWlkMk5hWmtKbVFtRlpZMWhuZW1GM1prUmtSR05XWkc5aFUyUk1ZMmRrT0dGMFkwVmtiV1ZCWkZwblRXSlVabk5oUzJKU1pHbGlUbWRqWTFKaVJXWldabEZuVjJWdVlsRmxibWhrWlc1bGFHTjJZMFJtYldRMFptRmtSV1pvWkRWaU9HaFZhRlJpY0daVFlWSmhRV2QwWjNkaFYyZHJZVXBvZG1aWlltMW9XbUp3WkVablNHSkpZV05rVG1WcllWRm9XbVpJWVhobk9XZEtZVmhsVm1aV2FFUm1aR2hDWTJoamQyWlJabGhsVW1aU1oxTm9hMkUxWlRGbVJXTlRZVFZvUm1SWVoxWmtTbUozWTFaaWJtTlJaVkJpWVdNeFlrbG5WV0pqWWxWaFdXVlVZbU5pUW1jeFkwSmlUbUpFWjJkblkyRlVhRlprZDJKcmFGVm5aMlZyYUZSbVNHTkVaSGRvVDJoTFpFRmtNV0oxWjFaaU1tZFJaQzlqU0dkc1ltOWhlV2hUWmxabVVXWkRZbFptTVdkYVl6aGhUMkp1WjNCbWVtWlFaMVZtY0dKdWFGaGplR00xWkUxalRXSkZZazFvVVdWRFpsZGtOR0pNWW1OblJtWndaRU5sWW1ZeVowcGliV2hoWlZKbFVtaDVaMVJtYm1WT1pscGtRMlZyWkRGaldtUlRZakJpV1dWaFlVOWhlbUV4WlZkblRtVXdaRTVoTUdSVVpVWmlaR0pQWTBsblZXZG5aV3BtUTJGU1lUUmpLMkpqWTBGaVNtUTVaa1JoZW1SQ2FEUm5SbVZJWkVaaVIyUkZaRE5vYUdoVWFGUm1NbWRTWjNGbVZXaDRZMnRpVkdOallrRmljMlpSWjBWalFtVktZbmxqWW1kWGFGSmpRbU5pYUd0aGNHSnJaR1ZsVldaelpWVmpZMkZTWnpCblpHWlVaMUpoYkdoWFltUm9SMlExWkN0aVkyWlVZbmRoVTJaT1lWWm5PV0pqWkVOaE0ySmthRXRtUkdOVmFEbG5SV2hZWW5samEyZExaRUppZVdGQlpHdGtXbWRxWlhOa0syTmpZMnRoTldWNllVVmpSV1I0Wms1bVZXaFZhR3RrVm1WVVpXMWliR0V3WVVkblNHaENhRUpuWkdaR1prWmhTMlpWWlZob1ZXSmFaV1ZsZDJOc1pGSm1XbVZZWmtGalJXZG1ZbEZsVG1KeVkxZG1hMlJhWVhoblYyRjRZazVsYjJWWFpHdG9UbWhyWVZsbWFHVnZaVnBpUkdGdVkwSm5abVZGYUZKak9XVkNhR1JsUVdoellXaGpSR1o1WjJ0blpXTk1aVWhrUW1KRFpGQmlibVpGWW1SbFNHRlZZVEJrV21kV1kyNW5VbUYxWkdSa2JtaE9ZWFprVW1adFoyTmtWMkZGWld0bmVHRXhZMU5rWjJOd1kxTmxVbUZzWm1kbWEyaERaMEZrYzJGb1prcGtWMk5TWTNCalEyRlhZVGxrVDJOS1p6QmlhMmRqWVVOa1FtRTBZVkJpUm1KUlpXUmxjR1JqWldoak5XVjNZMU5uV0dOM1oxVm1VMkpzWms1aU1XWlhhRWhrY0dKQllsVmtXR0ZCWXpWb1ZtZHRZMnRpVUdSUVkzaG1jR2RrWVVsamEyUm9abVpqVUdoU1p6Qm1TV2hOWWtOaFNtZGhhRVZvUW1JNVpXRmhRMlF4Wm14a1YyWkZZbTVvY0doSVpWcGxSV1ZHWjNWa1UyVnRaMUppTldoVFozaGpVbU40WkVoa1VXZDRaMDVvUW1SRllYUmhjR2RpWjJsaFNtUTVaVWxtZDJkTlpuQmpWV1pWWmxsaVJXUm1aMGRoUVdKUlpWVm5hMkpSWVV4bFkyUkdaM0JtUTJGaVlUSmtTbU50WTJGa1VtRlNabmxsVkdadVpXOW5VV2hHWnpKa1pHRlNZVk5oVW1KV1lrOWhZV2RZWmxGbVdXUmpaRVZsUm1Fd1pWVmlWV053YUU5blpHaFNaRVprZW1KSFptaGlRV1J4YUdOblFtTnNaREJtUldKdFozTm5SMmRIWkdwbVNXZFBaRlZsYVdkdlpuZGhRV1JEWWtGaWRtVk5ZMnRoTUdOaVpGbGlRV0pLWlVOaFptUkNaMHBqTm1GU1pESmlVbU5DWVdKbmEyTndabXRtWldSVlpuTm5WV1pqWTFKa01HSmtaVlJpVW1Oc1lVVmtXV2hZWm1obE1tSmlaRmRoT0dOS2FGcG1lR0pCWlZWalZHWklZVEJpWldSRlpVVm9PV05GWjFKaVNHVnNaRUpsWVdaSFpqbG9hV2RhWlcxaGEyUlZZV05oYTJjMVpIcGtSV05GWVhoalRtZFZaMVZpYTJOV2FFVmtNR1ZPWmpCblIyWklZVUprUW1Ka1lrWm1SbWhMWkZSbWJtWlZabEpuWTJNd1puaGxVbVZsWmtSbmEyVlJZbVJoUVdoalpUbGhTR1pXWVRCbk1XSlNZV2RvVG1NMFpWVmliR0pLYURWa1lXVm9abGxsV21GR1lsaGhXV0ZNYUZka2QyUldZVWRvUzJkQlpEUmljV1pDWjIxbmVHUkxZbHBsVjJGU1oweGpVV2hEYUdoalRtaFhZa0ZqU21GbVpWWmphbWhHWm01aFdHRklaVTVrZG1SU1lXMWpZMmhYWTBWamEyZDRZVEZvVTJab1kwSmxVMlJTYUVGaGRHZDNhRmRrYTJGSlpqZG5TMmRxWWxGa2JXRlJZVE5sU1doQlpFNWphMmRrWlUxblQyTlJaV2RrV21KVllrTmljMmczWmtwaGJHSmpaMmxoVTJOWVkxbGtWV2RDWVVGbk1HUTJabFpvVkdkdllVTmtSbWh1WVdkbk9XaEJZM2xrWkdGaVpHRmxlR05DWkZKa1kyWlJaV05sVkdSTFluZGxZMk5rYUV4bVUyaFJabFZtUjJkNFozQmxjbWhKWlZaaWJHUlhZa1ZrYm1Wd1lVaGtXbVZGWjBaaWRXRlRaRzFuVW1VMVpWTmllR2hTWjNoaFZtRkdZM1JrVG1ORloxWmpVV2h1WlU5a2FXTlJZalpuU1dGUlprWmhiR2hHWjJkaU9XRlNZbVJqVW1JMVowcGhRV1JuWVVaaFJXSk9ZbXhsYjJSSVltSmxNbVpTWVdkbFlXSlNZVlZtT0dkUmFFUmhjR2RFWmt0alVXVk5abE5qUW1Kc1kwVm5TR2RLWTNwbVRXZFJhRTVoVldkb1p6bGpaV1V3WVhCb1QyTmtaMUpvUm1kNllsUmxSbVpHYURSa1kyZEdZVnBsTUdWRVpESmlkR0pUWkVaa1NHZEZaMU5tVjJkNVlXOWtZMmRIYUVka1VXTnJaMFpsYTJnMFlsUmpRbVZHWlVsalNtVkZaRE5rWTJadllrWmhVMlZ6YUZSaldtWnJaMmRsVW1KT1luZG5RbVpoWkZCa2EyRndaRlJoVkdWV1pIZGhXV2RPWm5salJXVjVaMDlpYVdoRllVSm1abU5TWkZsb1VXWlVaRWhtTldSTFpGWm1WbWgwYUdablNXVllZa0ptWVdKUmFHMWtPV2hwYUZwbmJXTnJabFZqWTJocllUVmllbWRGWmtKalJtWk9aMFpvUVdWV1lrZGxRMkl5Wkd4aE1tZFdaR2xvVldGTllrNW5hR0pSWkZsb1ZHZElZVlZtVFdSaVlXdG5kMlpHWVVsalUyRkJaRlJuVDJVd1oyeG9jbVJDWm1oaVVtZ3paRkZvUW1OT2FIZGxRbVV3WnpsaE5XaGhabXRoUldoTlprSm9ibUpCWWs1b1YyRlJZVWxpWW1WWlpGZGhNV1pyWWxGaFYyUTFaMHRuV21GSVoyeG5UR1ZHWVVob1JXUmtZVWhtVldjeFkxRmxSV1ZJWkZKb2JXSmFZVzVoVG1ONFlWSmhhbVJWWmxkalZHWm9hRUprTVdWSVlXeGpaMk5pWVVaaGQyZFZaVGhvU0dWM1kzZGliMlZPWkdsaU5XRndZME5vU0dSSllXTm9ZMk13Wm5kblVXZFVabEZoVldWQ1pWaG5RbVF4Wm01bFQyVkdZVEJtSzJaQ1lXbGlRV0phWTFOaGJHZEthREZsVjJoSVkzQmliV1pWWWxoa2FHZDNaMVpuYm1WUmFGQm5ZV0V4WWtsaVZXRmpaRlZoV1doVVpXVmxSbUZOWkdKb1RHZEVZMmRoWTJKVVkyaG9UV1FyYUZSbFoySTFZMWRtV1dKRVpITm1TbVpKWjNkb1VXWk1aa2RvUkdoWmFESmlSMmhTWm5obmVtSmpaMnRqWjJaYVlVZGlVbWhyWjNsbVltaHBhRkZsZVdoSmFGRm1SV2hwYUVab2JHTnpaVU5tVFdoUlpqbG9TV1pWWjBWak1HRlJaRmRsYkdad1kwTmlZbUV5YUVwbmJXWmhZVkptVW1aNWFGUm9ibWROWmxGb1ZHVkJabEZrV0dWVFoxSmlNR0pqWW1GaVYyWnZhRVprWTJGQlkyaGpPV1pWWlZKbloyUk1aVWxuVldKUllXaG1RV1ZzWjBWaWMyWlBhRUptT0dGdVpFWmxSV2RHWjFOaVJtVklaMFpqUjJkRmFETm9hR0ZVWWxSaU1tVlNZWEZoVldGNFpHdGtZbWhKWkdkbmRHVklhRk5rUVdkNFpXNWpVbVl6WWxKalNXWlphRzFuUW1oclpHVm5WV2R6WVZWbFkyaFNaekJtWkdOVWFGSmhiR0ZYWVdSaFIyZzFaREpvWTJneVpXTmlVR05hYUhkbWMyUlRaRWRuYW1GdlkwUmxWbWhHYUVwbVZXRkRZakpuTVdWSVpWaGxNbVk0WTNKbldtUnVZVmxuVldKS2FHZG5XV1EyWjFGb01HVkpaRUptUm1oQmFHUmtVMlJIWW1sb1JtSXdhRUZqYm1oQllrbG9aR0ZGWXpsalZXZFZaVWhpVldKQ1oyVmthMmhDWVRkb1pXRklhRUpvVjJSa2FFRmpPV2R5WkZWbGFHTlNaM2hvVW1Ob1lVNW5OR1pWWkRCaE9HVjNZMkZtWjJRNVowWmlSV2N6WTJoaFptRlhhRlZsYzJoVFptRmxhMlkxWWk5b1lXWXlaVFZpUzJOYVpraGxiR1pNWkVabFNHaEZZV1JtU0dSVll6QmhXbU5XWVdsaFNXWjJZVXBpU0dSTllXNWtXR2hWWVRCalYyZEZabXRvZUdJeFkxTmxhR2RDWWxOaFVtTkJaM1JvZDJKWFoydGtTV2R0WmtwalIyTmFZV2hpUm1acVluZGlZbU5RYUd4blNXTktaMGhtTVdKT1lrcG5RMkpHWWs1bGNHSkpaVVZpUldWblpFSmxSR056WVZobVUyUm9ZM0JsT0dORlkxUmtWV0ZFWTBGak0yZG9aVFJvU0dKdVkxRmtVMlpoWm5ka1FXTlFZbU5uVVdjNFlsUmlXbWRzWlUxaVNHSm1ZekpqY0dGWlpVVm1iR1YwWnpWalEyTjNZVEJuWldOWGFIbGphMlk0WkV4alJHSjRaSFZoVm1NeVkxRmlkR2RWWTBSa05XRjRZVWhtVW1jeFpVNWtSMkZXWTFwa01HSmlZMjVsV21GNlptSm9NR1ZaWW1sbFYyVnJZMFZpU21Sa1lsSmhSV00yYUZWbWEyZFJhRXhoWTJoR2FIQmhRMlJpYURKaFNtSnRZbUZtVW1WU1ozbG5WR1p1WjA1aVIyaEVZVkprT1doU1owZGxhR1JXWmxSbVlXaFVZbTlrVjJOUFpWSm9TV1pYWjBKaVFXWjNaRWxrVFdkRllrNWlOMlpIWTBaaGFHYzBaR0puTVdKWlpHZG9SR1l6WTBab1UyUm1ZMGhuYTJKSlpGWm9hV001WWxSb1FXaFhhSGRpSzJSWVpYaGliR0ZYWm1WbFVXVlZaMDVpUjJoWFlrVmpkV0pHYUZOb01HTlFaMHRtVldkS1kzUmpZMkpGWm1OaksyaGpZMUpqTUdSa1psUm1VbUpzWjFkaVpHWkhhRFZqTW1oalpUSmpPV0ZIWkZwbGVHZFpZVk5pVkdkRVkxSm5TMmhFWVZabVNXUllZVUprVkdOM1oyWm1SR2hEWW1kb01tSk1ZMjVrU1dZcmFHTm1hMlUxWkhwb1JXWkZaSGhqVG1OVlpsVmhhMkpXWmxSa2JXWnNaREJuUjJaSVlVRmlTR1ZQWW5kalRtRkxaVkptYW1Fd1psSm9ZbVJyWW5oalFtTlpaak5rUVdKbVoyUm5RV2RLWm5Kb1FXZENabEppZG1SU1pHeG5kR1ZxWVZWbU1HZFNaWFpqU1dWc1pHOW9XbVJTYUhwbWFHVkRaVU5uYVdNeFpHRmhaV1pyWm5oaWEyZEZaWGhoVG1KTFkyVmlXR2hyWjFsaVltWjZaR3RtWkdaSFlrVmtNV1ZaWlV0b01tUTVaMFZoWkdWdVpVNW1kbWhTWjIxblkyWlhZa1ZqYTJWNGFERmlVMlJvWkVKbVUyRkhaVk5sUm1SM1kxZGthMkpLWW5aaldXWnRhRnBsY0daR2FFaGlTbVpQWTJObmVHUkJhR1ZtUTJkQlpWVmpZMmhTWVhkb1FtWndZMGxvUm1aQlp6Vm5SV0Z0WlRsa04ySlRabXRrTldReFpVVmlXR0pPWTAxb1ZXVllaMmhsZDJkV1ptbGthMk5IWm1OalNHUm5abFZrWTJaVllsbGpWR0psWWtabVRtSlFZbHBsUkdKM1lWTmlVMlY0WjAxbmFXRllaekZsYkdOTVpVVmlibVpWWWpoaFIyZHJZMjlqVTJSU2FGaG9VbVl3WTFWaGJtTldZVGhoV21JeFpIaGpRV0ZSYURGbmMyaE1hRVZoTTJOclpqQm9aR0pIWW5oaWJtRkdZV2huU21WTloyUm5WV1p3WTA1bldHTkJZbVJtUzJkUVlrSmhXbWRMWlZCaVYyRTFZbTFrU1dWQ1pIaG9iV1JTWVRObWIyZGFZbFpqTW1Oa1pGSm1VMlpTWjFabVQyUk9Za2huWjJSNVltTmpSV1pHWlRCaVZXUlJaM2RvWW1SUGFERm1TV2R1WjBKalVtWTBaekpoWTJOR1lUUm1aMkZCWVRKbWMyaEJaMGRuU0dGRlkxQmlSMlp1WW1kbVNXWmFaMWRpVW1OeFlsVmplR05yWTFSaFkyUkJZMDFvVEdOWFprZGtZMmRVWTB0aFVtUkNZbE5uWm1oRlpuQmpOV1psWkZGb1NXWmpaV0ZvVW1SUlpWVmlVV1ZTYUd4bFpXWktZVzFpUVdoRVlVZGtaMk5GWm5sa1kyUlJaRWxvVTJOVlpWaGtWV1JFYUVka1JXSjBaVTVrUVdSdFpuUmtkMmhSWlcxaU9XTnBZVnBrYW1OUlpGbGxWMmhGWlRWaGVtRkZZVVZpZDJoTVlrSmpRV0prWjFkbVIyWnBaa0ZsTjJSV1ltNW1RbWhLWkVsblJtZ3haRXRrU0dOSVltdGlVbVpQWjJ0bFZtVlNhRWxpTVdkd1kxZGhaR1JCWWpsaGNtVlZaMmhsVVdoc1pGTmlSbVZaWkdkbFFXTjNZVUZoTW1GUWFHZGlRV1ZhWjBSamJtSkNZMUZuVjJaU2FEUm9RbU5oWVVaak1XZHJaa05vUjJkYVoxcGxZbUpZWTFaa1RHaFlZMGRqWTJGS1owSmlNR0l4WWxGaldHUnRZMVpsSzJSbVpUTm5UV1Y1Wmxoa1ZXSXdabGRvUldoclozaGxNV2RHWVhoamVHUTBaMUpoUVdkMFpYZG9WMmRuWWxGaE5tTk1Za05tVldJNVpWaGpWR1V3WVVGbVkyaDRhR2RsV1dSUlpsWmlSV0ZpWjBka1ZXZzBaMmRqWm1kU2FHZG1jbWhoWlROa1VtVlNhRk5oYTJjMVp6Rm5SV2hZWjNOaVMyTkNaa1JsV1dSNllVRmphbWN4WVVGaFNtRldZMGxoWTJOSllqQmhPR05VWVVsbk0ySnNaMUJuV21aSFpIQm9WR05IWjFKbVRtVjNZVU5qZUdZNFkwUm9XR0pFWW10aVZHSk1aMUZuTkdSblpWTmphV1pHYUhoalNHWjRZakZqZUdoU2FHcG1aR0pPWkVka1ZtUmFaakJtWW1OdVkxcGplbWhpYURCbVdtSnVaMVZoUm1Vd2FHVm9aR2RWWTBwbVIyaEZZWGhqV1dkTWFFbGhiR1p3WVdaaVltRjRZbXRsWW1GYVpWSmtVV00zWmxSb2JXSTBZVkZvV0daRllrWm5VbWRFWlVKbVZtRlVaV0ZpVTJoQllWZGhVR1JCWjFGa05tZEdaMmhoTkdKSFkySmlhR2RGWXpKbVZHTkZaRGxqTkdoUFpWVmlNV1l3YUZKa2JXSkNaMXBsU0doWVkwVmhaR05QWjFob2FHUlVZMVJqTW1WU1luRm5WV1I0WTJ0blZHSmpaVUZtZEdKYVkxWm5hMk5SWWpkbFJtWlhZVkZuVDJOaVlteGhaR2hyWkV4alZXVldaRmhsVDJSV1luaGlVR1JNWjJ4aVdXTlRZazFrVVdNNFpHbGhaV1Y1WjFwblVHVm1aa1JtZDJoVFpWUmtTR1ZXWlV0aVJXVkdZa3BpUldKRFpETm1RbVpoWVZGbGJXUTVZWHBuWkdOSWFFVm9WV05pWkVWaU5HWTRZazlqYTJGNGFFNWtWV2RWWm10b1ZtTlVZMjFrYkdJd1pVZGpTR1JDWVVKbFpHRkdZVVpsUzJkVlpsaGtWbUpFYUdaaVVtaDNZVVZoUzJaNloyaGhaV1ZQWjNkaFdtaENZMVZsYUdSU1ozaGlVbUpvYUU1aE5HRlZaakJrT1dKcllXRmxiR1JOWWxwblJXZ3pZMEZpVW1oWGFGVmlVV1pEWldKbmJHSTVabXRoV0dVeVpUUmlSbWRVWkc1aGJHVk1hRVpoU0dWRlpXUm1TR0ZWWnpCbFdtRldhRzVvVW1SMVpXUm1ibU5PWjNab1YySlhaV1JtUldOSVprSm5kMlJuYUVka1ZtTm9ZbUZuVm1KU2FFcG5hV0pYWm1oaE5XUjJabUZuYVdac1lYQmxRMkZ0WjNoaFQyZGFZbEpoYkdGQlpWUmpWV0ZDYUdKa1JHZFZhRFJoTVdSa2FFSmpRbU50YUZWaGJtZFNZbGhuVTJGblowWmhPR05IWlVabGJHZE5ZMVZqV0dkb1luZGtWbVZ1WTFGalVHVmhZakZrU1dWVlpXTm9WV1paWlZSblpXWkZZV3hqVUdoalpsaGhPV05DYUVGalFXTldZbmRtUm1OV1ptdGtXbWRGYUdsb1dXZGlZMXBvUVdZMVpYVmtWbVpJWld4b05XSllaR2RvVG1KcFlrTmpVV05zWTI1bVIyRldZMXBpTUdoaVpXNWlXbUY2YUdKbE1HVmFabTVoUm1Wb1lVcG1UV0prWTFWbmIyaFFaRlZpYUdoWlprWm5TV05CWnpob1VtTktZekprY0dVd1oyVmtkMkpDWlhsaVJXZHVaazFrV1dKQlpEQmxNV05RWVZabGVHaFdZV1psWldVellUQm9WV0pqWWtabVFtVnRZbE5sVldadllWTm5aR2hTWW14aU4yVkJaekZvUm1kdFpXSmliR1ZhWldsblFtVnRhSFJoVldOR1prZGtaR1pXWkVkamJtVlNZVlJuV0dKdVpGcG5lV1JWWmpCa1ZXRlVZMlZqUW1VeFkwdG9WbVZvWVZKb05tRkRZMGRvTVdKSlkxSmpSV1Z3WW10alpXZFZZM05qVldOallsSmhNR2hrWlZSaVVtSnNZMWRvWkdoSFl6VmpNbVpoWmxkbk9XTlBaVXhrYUdZd1pWcG9VV1ZHWnpsbFMyRkZZMFpuU21ORlowTmpNMlpDWkdGalVXVnRaamxuYVdSYVkyMWphMk5WWTJOa2EyUTFaWHBrUjJkQlprNWhUbVJVWlVWa2EyUkVabGRoTTJGNFpXNWlSR1J1WVVKalMyRmtaa1ppYkdWRFpsSm5iV2RSWlVKaldXWldaamxoVW1obVlXNW9RV05hWTJaalVXRTVhRE5uVkdOb1pWSmlaMlpXWTJob2NHUTBhRVJoTUdNNVkzTmxaV2N3Wmsxb1RHSkJZVWhsUVdKT1kxZG5VV0pKWkdOaVQyRlJZamhrYkdoRlpIZG9NR2hHYUVsa1JHRjNaM0ZsVVdaSVpteG9WV05HWTBWblVXRlJaVmhpTTJob1lVVm1aR0p1YUU1bWRtVlNZVzFqWTJSWFkwVmthMlY0WWpGbVUyRm9ZVUpuVTJSU1kwRm1kR1ozWlZkaGFHWkNhR2hsVFdWcVlVMW5ObVZZWjBobGNHSnJhR05uZUdKQ1lrMWxWR05XWWtabVNtRkdaRlZqTldOd1ptUmxRbWhvWTNkbVVXUllhRkpqVW1aVFpHdG5OV1F4WWtGa01tVmtaR05sVldKVFpWSm1kMkZZWldwaWMyWlFZMlJqVldWM2FGVmxXV1pHWWpSbllXWmtaMGhtYkdKUVkxcG5SMmh3WVZSbFIyTlNZMDVvZDJaRFlURmhiR1pYYUVWbWJtZHdaMGhsV21ORllVWmlkV2hUWW0xbVVtSnZhRmRrVVdONFpuaGpVV1pTWmpGaVJtTkZaRkpqYkdNd1pHTm9SMkpvYUhwb1ptUnNZMUpsZFdOR1kyaG5VbVpOWjFsb01XUnJZVnBrV0dGdFpUUmpUR0ZqWTBabWNHTkRhR0ptTW1OS2FHMWhZV2RTWWxKb2VXaFVZVzVoVFdGUlpGUmtSV0l4WmxKa1UyVlNZbFpqWm1ObFlqSmpkMkpaWVV4aVJXZEdZVGhvVjJOUloxWm9UMmhoWW5kbE9XZDZhRmRuYkdKb1pEUmlaR2RzWlZwbWFXZElZa2RqU21obFpsQmhibWRHWTBkaVJXWXpaR2huVkdoVVpESmlVbVJ4WWxWaWVHSnJaRlJvWTJkQlpuUmpXbVJXWm1oblNtYzJZVkpqTTJWV1pGUmlaR2hyWkc5bU5HVmxhRlZvVFdORFoxbG1hR013WTJKaFZHRldaRnBrWm1kWVpXMWpOV0V5WTJOak1tWTVZVWRoV21GNGFGbGxVMlJVWkVoa1ZtRkxZVVZpUm1aS1lrVm1RMkV6WTBKalZHZFRhRE5rVW1kSlkxcGtiV1ZyWTFWalkyVnJZVFZsZW1GRllrVm1lR2hPYUZWbVVtSlJaeTltVkdWdFoyeG9NR1JIWmtobFFtRkNaR1JrUm1aR1owdGxWR1ZwYUdSbFZXVktaSGhvYTJWRVkwNW5ibVJCWTFsbFRXRldaV2huY21OS1lURm1NR0l2WWtWbFoyaHpZMXBoUVdSU1p6Qm5iR1pOWkRGamRHTk1aVWRtYldOelpHaGlWMmhXYUZsblUyZGxZMnRrWkdGcllsRm1WMmcwWkZoaFZHaHVaR3hpVEdaR1lraG1SV05rWmtoaFZXZ3dZMXBsUldkRGFFVmpaMlJPWlZObFkyTnRaVU5vVTJOcloxZGtXR1JWWWxKaE9HZFRZbXRrZEdJMGFGSmlRV2QwWlhkaVYyZHJhRXBtZG1aWlltMWxXbVJ3WlVab1EyUkJaRXhsU21Vd1pWVmxaV1pCWnpGa1JtRmlaVVpuVm1OT1p6QmtaR1pHYUd0aGFXVkNZV2xsUldaallrUmpkMlpCWW1ob1VXZHVZekJpUVdOR1pVUm1XV2d6WWtGbGFtWjNhR3hoWVdNeFprbGhWV05qWTFWaVdXTlVaR1ZtUm1OT2FGQmxXbUZIWVhCaFZHTkNZMmhvVFdNclpsUmtaMmcxWmxkb1dHRllhRWxoUjJoT1ptZGhXV2czYUVKamVXSkZZek5pU0djd1kyTm5TMmhFWTBkaFFtVkZZVVptZDJGTlltdG5TMlJxYUdObGJtVkxZV3RqTkdGdFlWSmhSbWRWWmxwbFQyZEJZVGxqWldOQ1ltaGtaR2QzWlZsb1EyRmtZVXhvV1dkVFpWbG9kbVpNWTJ4bFJXaG9aRWRvYm1kellWcGlXbWRyWWpGalVtTlRZbEpoVm1WUFpXRmpXR05SWVZsa1kyaEZZa1pvTUdWVlpGWmlRbWRQWmtsalZtRnJhRFpsU0dFeFlVVm1lR05RWW1kalZXUm5ZMVJpYVdoVlpWSmhWV1pVWkRSa1FXUkZaM3BsWkdjMVkxUm5NbVpTWW5Ga1ZXTjRhR3RuVkdOallVRm1kR2RhWWxab2FHVktaVFprVjJKSFpWRmxXR0ZKWWxGaFRXVm5ZV1ZuVVdaTloyRmtUV05zWkhobVVtTkJaVkpvUldaRGFGQmxRMkpqWW14blptUXlaVGhvU0dkT1lsWmpSbUpJYUVGaVZHSkJZMFZvVW1kQlkwVmtMMk5IWm5kb01XVlVabUZrUjJZNVkybGtXbVJ0Wld0alZXRmpZV3RvTldWNlpFVm9SV1I0WlU1a1ZXRldaRTFuVm1SQlprTmtkMmRxWlVkb1JHZzVZVXBsVG1WUlpVMWlUbVZIWTNwb2FHWlZabEJvVW1WblkwTmtRV2N5WWtGb2NtVm1aVkpvVW1KQ1lWVmthR05TWjNoalVtWm9hRTVsTkdOVll6QmtPR0UxWmxGbFJtUk5abHBoUldjelpVRmhUR0ZYWmxabldXRlRZMUJsUW1kSlozRmpRV0pxWkc5aFJHaExhSHBtWkdkTVpsaGhTR0pzWlVwaVJtUkZZVEZvUTJkbVpraGpVbUYxWTJSaGJtSk9aSFpsVW1OdFpHTmpWMmRGWm10bWQyRnVaMFJqTUdaUllVaG9SbVJyWVZaaWQyaFZabTFuYUdoMmFGbG9iV2hhWVhCalJtRklZVXBoVDJKalpYaGtRbU5OWjFSbFZtTkdaVUpoVVdGUllsbGpaMmRLWm5oa1dXZHFaa0prUkdSRlpsWm9VMlJzWVU1a01XRlNhRmhvVFdKR1lraG1lV0Z6WTJ0blJtTjZZbkJsVFdSTVlXaGxNV1ZUWkdOb1VXTm5abFJvV21VeGFFMWxZbVJoWW1saGEyUm1ZVlpqYkdjd1pERm5RV2N4WmtKbFYyTkRZVWhtYjJoS1oySm1RbWhXWlc1blVXSXlZMmhqVkdWVFlYaGlVbWg0WmtoaFVtRXhZMDVuUjJSV1oxcGhNR2RpWW01bVdtVjZaMXBsZUdSSllYWmhXR013WlVabFEyZEpZVEZrYzJSUlpsUm1NR05TWkdaa1QyZENaMDFtVW1WWloxUmxSV1JxWWt4bVJtRkNZVGhsUkdkVVpqbGxabVpCYUdkaGFHZGFZMUZrUW1WelpGQmtUR05VYUVGbVVXUkpZakJpYUdFMmFFVmpRV0UwWkV0aVptVldaVUprTm1SU1kxWmlNV2RUWjJOblJtUmFZekJvUkdVeVluUm9VMmRHWkVobVJtRkhZVVZtTTJkb1pWUmxVbVY2WTBGbWFXSkhZbXRuYjJka1pVcGhhR1ZzWmxwa1UyaDRZa2xtZFdSRVlYbGlNR1ZUWkZsb1FtTnJaV2hoVUdKQllUaG1ZV05OWm14aFJtTlRaa0ZqTVdoNFpXVm1abUZYWjBGaU0yUk9ZM2xvZEdoUGFFcGhhR2M0WW1KblVXaEdZamxqUzJoRlpFWm1TbUpGWmtOaE0yUkNZMkZpVVdOdGFEbGhhV2hhWlcxbmEyZGpZVXBoWjJKWlpqWm9VV1l3WTBsalltZFJabXRvYTJOSlpWUmhhbUV3WnpoaFZXSlRZVTVsVUdGS1kzaGxVV05RWjBOb2JtSjBZVk5qVUdGM1pFMW9abUpRWmxoaWFHUm1abVppVVdkT1owSmlWV0pvWTFKamVHZFNZbWhqVG1VMFlsVmtNR0k1WTJ0bFlXUnNaVTFpV21WSFozbGxVbVZFWkVWblFXRlZZV05tVEdKR1owNWlhMlJZWkVkbk5HaGxZa3hrUkdaQlpsbGpSMkpwWlVwb1dXWlhaa0ZvYTJGWVprWmxWR1ZuWW1ob1QyUkVZVnBpYm1WVWFESm5iR05HYUZKa2QyVTBaMmhpUjJWR1owVmhVbVJGWmtGbVRXVnFaVlZqTUdSMFptcGlVMmhIWkZwaGNHSkdhRWhoU21WUFpXTmplR1ZDWmsxb1ZHUldaVVpuU21KR1lsVmtXV1k1WmxCa1JtaEZaMnBqVkdkNVprRmtaV1JJYUdka09HYzFaV0pqYW1RNFpFcGxTR1V6YUdobGRHaFdZMjFtVVdWSFpWcGxNMmhuWmxWalkySlZZbGxtVkdGbFowWmxUbWRRWVZwa1IySndaRlJrUjJaU1kwNWxOR1ZZWTNoa1JXZG1ZbEZqV0dkUlprdG5TV05SWjNka09XSkJhSHBuTkdNNFlWTm5kMk5zWjNoblJHUlNZMUpqUW1GTlpURmxXbUl3YUdKa2JtSmFZbnBuWW1Nd1oxcGpibWhHWkdob1NtWk5ZbVJtVldGS1lrVmpSMmhuWXpGaVdXWm1aV2htWTJWSVlVbGxhV013WlRCaFRXTkNabEpqZG1aVVltcG1NV1ZHWjBGaFFXUkdabGxvVW1OVVl6bGhUMkZoWlZobFVXVlpabU5oUldoR1pUQm9WV1ZWWTNCblQyVmtaMUprUldKdVkwSmtRbVpuWTNKbVYyTnNaMXBsTUdaRVpUSm5kR2RUYUVaa1NHRkdaRWRvUldZelptaGxZV1pXWjBWbU5XRnhaVlZrZUdWclkxUm9ZMmRCWTNSaFdtVldZbXRrT1daUllsSm5NbVpTWkVKa1ltWnJZWEJsYTJobFpGVmpkR1pEWkUxblJXUTRZbVJvUVdKNFpHeG9UR1JrWmtOb1pHTXJZMWxoYldaYVowbG5SV1Z1WVRsaU9HRlBaMGRuV21oWlprTmxNMk5vWjBWaVEySXpZVUpqWVdKUlltMW9PV1pwWjFwbGFXZGpZV0ZsU1dkb1ozZG9PR2hTWVVGaFRXTmFaVU5sUW1Sc1kxRm9VV0pFWjBWbmMyVlZZVUZrT0dOVlpVcGxRbUpWWWt4a1IyRnFaMEZsVW1GaVkydGlkMlJZWjB4aFZHRTBaVlpqU1dGRlpGbGlhMk5JWlVKaFVtRTFaVVZsYUdVNVl6UmhRV1pWWlZwa2EyZE5aMWhtYTJWYVkwVmxNMmRCYUV4bFYyRldZVmxrVTJSbFkydGhaR1pyWlVaa2VXSTRaVmxsV21ORVowSmtTR1pRWkc1alJXaGtaMGhrVldZd2FGcGhWbWh1YUZKaWRXVmtaMjVsVG1SMlkxSmxhV05KWW1GaVQyUkZZbmhtTVdKVFpHaGxRbWRUWTFKbVFXWjBZM2RtVjJkclowcGpkbU5aWkdsb2JHZHdaa05rV0dKSlpGQm1abUZYWlRobFFXZEJZV2RoV21GR1kxQmtNR1UxYUhCb1pHVkNZMmhtZDJGUmFGaGtVbVZTYUZObGEySTFaekZuUldkVVlYUmlUV0ZVYUVob1oyVjRabGRuUVdoMFpFaG5TV1ZvWVZaa1kyRmhZVzFqZDJKVVpXVm5SbVZPWkZCaVdtTkhhSEJoVkdGSFlsSmlUbWgzWmtGbmVHWjRaRmRoUkdZelltOWlWR05hWkVWaWRHZDFZMEppVjJNeGFERmlVMko0WTNkbk5HaElZbEZuUW1kT1pWaG9SbVphWVhGbVkyUkhaR2htZW1GbVoyeGpRbWgxWlVka2FHSktaVVZsVUdaRllXOW1ZbVJVWXpCaVVtRmFaV05tUm1OQ1lVTm1TV0pIWlhSbmNXWmhZVkptZDJnM1pWUmhibWhWWVU1alZHTkdZM1JvUldKWVprRmlXbWRpWmxsbVNHVm5aMWxqWldWQlkyaGpNR05YWW14bVpHSlBaVWxqVW1kR1pqVm1WR2hDWVd4aWVHUmhZak5uZUdVd1lrUm9NbUowWlZOa1JtVklZMFpqUjJKRmFETm1hR1pVWWtkblUyVlZaelJrVldneGFHTmhWR1ZpYUZGbGMySk9aMGhsYkdoelluQmlVMmRTWm5OblRtWkpZbEpvTVdkcmFHTm5hMmR6WTJOaldtRjNabWRtU1dGWVltZGllR2hYWTJOaWJXTTBabnBuWldOdFowNWxjMlZhWW5obldXSlRZMVJsU0doV1pFdG9SV1pHWlVwb1JXaERZak5tUW1GaFpFWmtNbUU1WVM5b1dtVnBabU5vVldSaVlrWmxRbVowWkVWaFJtSXhaR0pvVTJadFprMWhWbVpVWkcxaWJHUXdaMGRrU0dWQ1lrSmpaR2hHWmtab1MyVkhaak5oVldKaFoySmphMlozWVVaa1RXUkVZMnRrUm1WbFltNW5RV0pxWlVkaE1XVk5aRFZoVW1ab1lXaGlOR2RYWmpGaWJHWjRaMlprTUdOQlprMW1SV1F6WmxsbVRHZEZaMFpoT0dGS1oxVmpSV2hrWW10aVVXZFhaVFZuUzJaYVlraGxiR1pNWmtab1NHaEdaMHhrV0dKQ1p6aGxXbWhGWTBob1VtZDZabVJtYm1aelp6Wm5VbUZ1YUhObFMyRkZaV3hrTVdkcVpsRmxlR1JCWVU5bFVtVkJZMDVpYldWVVlqRmhaR2c0WkdSak1tVmFZM1poUm1oRVpuaG5TR0ZoWkVSa2NHRk5aVlJuVm1GR1kwcGxSbU5WWVRWamNHZGtZMEptYUdoM1psTmhWR05LWVZKaVZtVXdaRFZqT1dkV1lqTm9UbVpSWmxSbFdHaG9ZV2hrVW1aWWFEQm9VR1pPWWpGbFNXaGpZazVpTUdkWlprNW1XbUZyWmpGalVHSmtZVmhpVG1KaFkwVmlRbWc1WjJGa1EyZ3haMnhvVjJORlkyNWtjR05JWlZwbVJXWkdhSFZsVTJkdFkxSmxOV1pSWnpGamNHTjRaVUZsUW1neFptSm9SR2hGWWs1a2JtaGxaRE5tV21VeGFHSm9kMkZDWjNWalIyVnFaMmhoVFdaa1lWVmhiMmRSWkZWa2EyUlJaMHhpWTJSR1puQmlRMlppWlRKb1NtaDFZMUJpUW1OU1ozWmpWR2hxWkZWalVXRlZaMnhoVG1WUVpWTm9VV0ZTYUZsbldXZElZMmRuZVdaallVVmtSbVF3WkZWa1ZXRndZVTlrWkdSU1prWm1lbVZVWjBaalJtSTBZMlZsUW1kc1lqQm1SV0p0WkhOb1FtVkhhR2RqTkdKTFpsaGlRMmc1Wm1GalVXRXdhRFZvY1dSVlkzaGlhMlpVWTJOalFXZDBaRnBqVm1Kb1kwcGhObVJTWlRKb1VtaEtaVXBpYTJSd1pqVm5aV0pTWTJkaVlXRkVZV3hvVm1WVlpFTmpiR2hHWm1abFpXUkZaRkpqTW1OalpUSmhPV2RIWWxwbmVHWlpZMU5rVkdoSWFGWmpTMlJGWlVaalNtWk5aMVJpYm1KQ1lraGtVV1ZwYUVabWFXVmlZMGRrYkdkaVpXVmhNR0pLWVZwblJXaEZZM2hvVG1aVlpsVmthMlJXWjFSaGJXTnNaakJrUjJSSVprSmlRbUptWWtKaWFHUkxZMVZuTTJSV1pGVm9ZMll4WkVwb1VHSmFZMjVoUW1SSVkxbGxaMkphWW01bVpXUkNabEpqZUdWU1lXaGpUbWMwWWxWbU1HZzVabXRrWVdkc1lrMWhXbWRGWnpOaGFHWkRaVmRuVm1Fd1psQmpaV1pvWTBwaGEyUlRaVEpuTkdoR1pXSmtXR05XWjJoblJtZElZVVZuWkdKSVpWVmxNR1phYUZaamJtZFNZM1ZrWkdodVprNWlkbVpVWW1sbU5HWlhZMFpsUm1oR1pqRmpXR2hCWVZaaFNHSldZWGhpTldVMVkxWmxiV2RvWkhaaVdXZHRaVnBtY0daR1pVaG9TbUpQWjJOaWVHRkNaazFoVkdkV1pVWmlRbUpZWWtWbk5XUnBaV0ZvVW1WblpDdGpVV0ZZWVRWalVtRkJaMnRvWkdnMVowOW5NMlZPWVUxb1ZXUllZV2hrZDJSV1pHNWxVV1ZRWVdGak1XUkpaRlZoWTJWVlpUVm5TR0pOWlVKamIyaGpabUZrYUdoVmFHWmxWbUpyWWxKaWQyZEdaV3htYkdoQlpFSm1NbWM1WVZWb1kyWlZZa1ppYjJGVFltbG1SbUozWVZKaWVtUTFZbmhsU0dGU1lqRmhUbUpIWVZabldtRXdhR0prYm1aYVpucG9ZbVV3WVZwa2RtRlJaR3hrYjJaR1pFcGxhMmRTWm5aa1IyaG5aVEZuVFdkUFlVWmpjR0ptWkdKaE0ySlNhSHBrWm1OQllXUm5ibUpVWm01aFZXWlJaMEprVldkU1lVdG1XV040WkZablQyVmhaVmhrVVdOWlkyTmhSV1JHWkRCbVJHUkdZVVprYTJWa1kxSmhSbWg2WjFSbVJtTkdZelJuWTJOR1pGbG5hV1JVWjJwbWJHSlRaMUpoTTJWR1kySmpSV0o2WjFwblltRlVaRmhuV21FNFkxSmtaMkl3WWtobldXaDRaelZuVDJkUllVRmlUbUkwWkZSbWJXSm9abkpoWW1GclluQm9hMkpsWjFWaGMyZFZhR05pVW1Zd1oyUmxWR1ZXWTJob1YyWmhaVmRqTkdZMFpHVmhNbVl4WVZWalpHWlJaa2xoUldkV2FFZGtaR0ZaWTBKb1ZXUk9ZbVJsUTJoWVpteGlWMlZoWVVkbE9XUnBaVnBqYldkcloxVmxZMk5yWkRWaWVtVkZaMFZsZDJKWlpsVmhWbU5SWVZaaVFXUkhZa1ptTW1ORFpESmhTbUpZWTFsbmEyVldaRk5uVm1FeVozZGhRV1phWTBWaU5XaFpaV1JsUm1Kd1lsZGlaR1pCWVRsbWNtSlZaV2hqVW1aNFpsSm1hR1JPWXpSa1JtVlZZamxpTldoaFlXaGlNR2hTWTBWbVYyVlpZV1JvVVdOVlkxRmxSV0ZpYURGb1ZtWjVZbFZsYldGNGFFUm5ZV1pHWlU1b1RHSkdaMGhvUldKa1lVaGlWV1F3WVZwb1ZtVnVZMUpvZFdWUFptNWtUbVI1WVZKamFXRnJabVZrUldaR1p6bG5hV1JZYUdkblpHUkZaVlpsVW1Sb1kzQmhVMk5WYUVKa2JXRmxaVlZsZUdOd1kwWmpTR0ZLWWs5a1kyUjRhRUpvVFdWVVpWWm1hMmhIWjBka2VHZzBaVGRuVDJFd1pYZGhMMmhHWmxOaE1HaENaVVJqTUdoQmFEaGxXR1Y2Wlc5a1dXaFZhRmRuVm1kM1pVaGlibUl3YUVSb1VXZFdaVWxsVldGallsVmhXV1pVWW1WaFJtVk9aVkJqV21aSFpuQmlZbVpXWjJoaU1HVm5ZVmRvVW1KWlpFTmtXR0ZUWXpSa1pXUk9aMEZtVW1GblpraGxlbWhSWnpsaVEySnJaa0ZpTUdOSVpGRmpRbWhPWVZoa2QySk5ZalprVEdGVFlrbGlObU5KWkVGaWFHUnVZMGhqYTJaYVpVWmtaR0ZTWVVWa05tRlZaV3RqVVdaTVkyTmpSbVp3WTBOblltWXlaRXBvYldkaFpWSmtVbUo1WlVkb1JHZEtZa05tVkdOQllsSm1aR0paWlhoa1ZtTlBaR0ZuV0dKUloxbGxZMlZGWkVabk1HRlZZVlZsY0dSUFoyUmtVbU5HWVhwblFXSXhaa1pvYkdOalprWm1VV0Z1WVZkbmVtZHJhR0psVjJOcVlscGpSV2RGWkRKbFZtWlBhRlJsZW1OQlpYcG9RV1l4WVhoaFkyZE9aV2RpYzJKT1kxUmhWR1JvWmpaa1VtSXlaMUppUW1kaVpXdGtjR0pyWkdWbVZXaHpZVlZrWTJoU1pERm9VMkZVWjFKak9XUlJaMlJuUjJGYVl5dG1TbU15Wnpsb1ltUmFZekZoVFdSaFowZGlTR2g0WWtSa1NHaEdhRXBpVFdoU1praGxRbWRJWTFGbmJXWTFabnBsWW1ReWFGVm9WV1ZsWVdkb1pHTjZZMFJpVldoNFlVMWlVV1pWWkVGalkyaFJZV3RrVG1Nd1pVZGpTR0ZDYUVKa1pHVkdZMFptUzJGVVkyNWhWV0pTWldOa01HUjRZbEpsWldWSVowbGlSR2hQWVd0bGMyVjFZa1puUm1Rd1pTOWtRV2N4WldSaU5taFZaREJoTldRMVlXRmxaMmhrWTBGaFVXaDZZMVpuUldWSVp6RmtXbWQ2YUV0b1FtVlZhR3hqUjJGQmFIZGtabUpKYUdwaU9HUlBaRkpvYm1ORlkySm5SMk15WTJObVdtUldZbTVtVW1WMVpHUm9ibVpPWW5ab1VtZHRZV05tVjJkRlpHdG9lR0l4WkZObGFHTkNaMU5tUldOQlluTm5OV0pHWmtKaFJXWTNZVWxvZVdoblkzRmtWV0pVWlRCaFNXaGpZek5oUldKbFlVaG5lR0ZCWWxGa1pHTjRZM05pZG1KTllXeGhNR1ZwWVZGbVdHTktZbGhsV1daRlpUVm5NV1ZGWVZoblRtZE5ZMVZqV0dob2FIZGxWbWh1WmxGb1VHVmhaekZuU1dGVlpXTmhWV05aWTJKaFkyTkNZM0JqVUdKbFlWZGhjR0ZUWmtObVVtTndhRGhoUTJVeFlrVmxRMk5GWm0xbVpHVklaMHRpWjJOUlpqVmhVMlJvWlVWbmQyWkNZMVZsUW1ad1lXWmlSV000WTJabFYyZEJaRGxpT0dOUFpXNW5PV2MyWlZwamJHTXhZMDVoUm1ab1pFcGlUV2RrWVZWaWIyVlJaRlZoYTJoUlpFeGpZMkZHWW5CblEyVlBaMU5sVFdRd2FHRm1WbWQ0Wm5sblZXY3pZazFsUVdSUmFFZGxaR2hTWVZOaVVtRldaRTltWVdkWVlWRm5XV1ZqWVVWaVJtUXdaVlZtVldOd1prOWlaR0ZXWVRsaWVtWlZabFpsUldSemFHWmlhR1J2WjNob1VXRlRaSGRqUjJoWVpraG1NV1p6WjBWbE0yVm9hRlJvVkdneWFGSmxjV1JWYUhoaGEyTlVZV05sUVdOMFlscGxWbWhvWWtsbWNHaFNaRE5vYkdSQ1lVcGxhMkp3WjNablpXTlJZMVZqVUdkWFluaG5NR05rWVZSa1VtWnNhRmRrWkdGSFp6Vm9NbUZqWmpKbU9XWkhZMXBpTVdFNVlsVm1WR05JWkRGbFlXZEZaRVZpT1dOYWFFTm1lbVExWWxSbVVXSnFZekJoYm1oTlltcGxlR1pIWkZCbFJXYzBZMjVpVjJSQmFGVmpaV05UWjIxblRXZFdaMVJvYldSc1pUQmhSMmhJWmtKaFFtSmtZMFpuUm1oTFpsUmtibUZXWjFsaFRtaFZaSGhvV21OVlkyNW5RbWRYYUdSbFFXZzVZM0ppVldWb1psSm9lR2RTWldoblRtVTBZVlZvTUdRNVpHdGxXV0pzWjNSaVRtRlhabnBuYkdOWloxWmxkMlpLWW1Sa1RHWm5abGxtYjJGUVpXbGhTV05RWlV0aGJtUnNZa0ZoUTJGWVpFWmxWR2RHWjBWalJXWjZaVlpuYm1aU1lYVmlaR2R1WlU1aWRtaFNZVzFuWTJoWFowVmphMmQ0WlRGalUyWm9aVUpvUTJGU2FFSm9XbWgwWlZkamFHSlpabTVqUzJWNlkxWmxibVJYWVZSalkyRkVaVWxuUm1ocllsZGxRMkZHWWtaalVHSkZhREpvVW1Kd1kyUmlRbUpvYUhkblVXZFlaRkpqVW1KVGFHdGtOV1V4WWtWbVdHZE9aMDFrVldoWVltaG9kMkpZWW1salFtRklZa2xsWjJkRllXRmhVR0pCWms1alpXWk9aWGRpUldkWFlWcGhTR05rWjFSa1ZtWm9ZMDVuZG1kRFlqRm9kR2hWWmtWa2JXVkNaMGhqVEdSVlowWmhlR1JUWTJsbmIyUTRZa2hrUW1oUlpFVmlWbWRHWWsxaldtZEJaRlJqWTJOdFkxQm1SR05qWVhGaVdtSXhZMlJrZUdSSVpYaGxTbVJYWm1SbVVXaFNZbFpvUW1oVllsSmtXbUZsYUVWa2RHWlZaVnBtYldSMFozRm9VV1I0WlZKaWVXVlVZbTVvVFdOUloxUmhSV2N4WWxKaVUyRlNZMVpqVDJWaFoxaG5VV2haWjBwaFFXRnJhRGxpUVdoclpWRm9SR1ZOWmtabWQyaG5aa0psVVdaellUbG5ZMk5HWXpGaE1HUlJZVmRqZEdaUFpFWmxSMlZDWjFGalIyRnNaRXBqVkdoVWFESmxVbUZ4WkZWbmVHUnJabFJuWTJSQlozUmpXbVJXYUdoblNtTjZaV0ppVjJoU1pVSm5ZbU5yYUhCamEyVmxZVlZuYzJOVloyTmtVbWN3WldSa1ZHTlNaR3htVjJaS1pHbGtjMk5wWTBwbmFtY3dZa2xrV21ONFlqUmlOR2hVWkVoalZtZExZMFZtUm1kS1lVVmhRMlF6WTBKaFlXRlJaMjFuT1dScFlWcGxiV0ZyWjFWaFkySm5ZVVpqV21kRlkwVm9lR05PWmxWbFZXZHJabFpqVkdKdFpXeGlNR1ZIWmtoblFtTkNhR1JsUm1KR1lVdGtWR0Z1WWxWaFVtUmlaRVZqZUdSYVlVeGhSR1ZuWW1aa1NtaDNZVVZpYldoR1p6RmhhMlFyWmtab1JXUndaelJrVjJkR1kwcGxhMmRRYUd4a2IyVjZaa1ZqTTJOQlkweGpWMlJXWlZsa1UyaGxZMnRoWkdKclpsRmhWMlUxWjB0bldtWklhR3hvVEdSR1owaGlSV05rWjBKaU1HTXhaRkZpWm1OSVoxSmlkV2hrWW01aFRtUjJZVkppYldaalpGZG9SV1ZyYUhoak1XUlRZbWhqUW1KVGFGSmhRV2QwWkhkbVYyTnNZekZuZG1GT1pHbGhOR1JuWWxKak0yWjNZa1JtVG1Oc1l6QmhSR0pJWW5kb2FHSklhRkpuWjJKelp6bG1abUpGWjNobksyaEZZMmxsUldWVVkwTmplR0YzYUc1b1ZXVkRZWEJrUldaUloxaGlVbWQzWWtkbFNHY3dZa1JvWVdSM1lscGxZMlpQWkVKa1ZXaGtZMDVsVW1OWlprTmhUbUo1WlUxa1NtaFlZVUptY0dOaFpVTmpNV2RzYUZkbFJXSnVhSEJrU0dSYVlVVm5SbWQxWVZOa2JXRlNZelZuVTJkNFpWSmxlR0ZJWTFKak1XUk9Za0ZqTVdWWlltZG5XV05FWmxWa09HZFFZM2htT1daMllsRmhiR0p2WmtaaFNtaHJaMUpvWkdGR1ozZGliR1ZGWTBsbFoyWk9aazlpWW1aNlpWbGhkV2hKWkVWb1pHRTRaa0ZoZW1oYVptUm9TR2QzWjFGbVRHZEVZMEpqYkdoUFpHVm9XR1JuWkZsbFVHVnJhR2hoTkdKbGFEQmxjR0ZQWldSblVtRkdZM3BpVkdGR1prWmhOR2RqWkVabFdtWXdaRVJoTW1WMFpsTmxSbVZJWlVaa1QyWlNZbnBoUVdKaFpraG5SMmh2WW01blJtSnNZMUprUVdGUFkxWmhSV05qWmxabmFHWnNZVzVvVW1WNVluQmhTV2haWlcxa1FtVnJZbVZqVldWeloxVmxZMk5TWWpCbVpHaFVaMUpvYkdSWFpHUmxSMlkxWXpKbFkySXlZamxqUjJOTllURmlOV0ZpYUVoaE1XVTVaa3RvUldoR1pVcG1SV2REYURObFFtaGhaMUZuYldJNVpHbG5XbVJ0Wkd0aFZXUmpaV3RqWkdKdlowOWhhMko0WlU1a1ZXRlZZV3RvVm1WVVptMWpiR013Wmtka1NHZENaRUpvWkdoQ1ptZGpUV2RVYUc1bU1XRkdaMDlqZDJaVlpFTm9aR0ZxWXpCaVZHWlBaVlppZDJScFkwTmlSbUpHWlhoaFYyWkNaazVpYjJOWFlXdGpPR1l2WmxGbFJtRk5abHBrUldZelpFRmlUR0ZYWkZaa1dXZFRaMlZtYTJWa1oydGtVV1pYWVRWbFMyRkxaakZuVG1STVkwWmhTR1JGWm1Sb1NHSlZZVEJoV21oV1pXNWlVbVYxWm1SaWJtVk9aM1pvVW1kdFltTmxWMlZFWWxWaWVHYzVZMGhpYkdkbloySm5SbUYzYUZWbE9XUklaWGRuT0dGbllrMWpSR1U1WlhCa1NHTXlZemxtVDJaS1puaGxOR1JtWmtGblVtRm5aVXRsVldoRmFGcGxOV1JsYUVKaWFHTm9aVlptTTJSU1lXTmhVMk5vWVc5a09XTlhhRU5oUW1oRFpVaG1SR013WVRsblFtSlVaREZoVm1GTVlXeG5jMlZrWlZka01HSlpabFJtWldGR1lVNWtVR0ZhWkVkbWNHWlVaRWRvVW1KT1pYZGhRMk14Wkd4aVYyWkZZbTVpY0dGa1lscGxRV2RvWlVWa1UyZHRZMUpqTldkVFpuaGtVbUY0WWtobFVtSXhhRTVvUjJWV1lWcGpNR2hpWTI1bldtWjZaMkpqTVdGc1kyNWpVV2RzWlc5a1JtRktZbXRpVW1Ga2FFWmtkMkZzWjBWbVNXVm5ZMDVqVFdGUVpVTmpZMko1WWxsblZHUTFabmxtVkdGdVpFMWpVV2RVWVVWak1XaFNaVk5vVW1aV2FFOWpZV1ZZWlZGbldXaGphRVZuUm1Vd1lWVmhWV1J3WWs5aFpHaFZZMVprT1dkSVkzZG9VV1UyWVUxaVVXSlJaMjFvVkdGcVowcGhZV2hDWlVobk1XSkhZMEZrYldJMVkxUm5VV2h0WlZGbUsyaEhZekZsUW1SQmFHWmlhMlZaWTJOaFIyRXdaMFZoZW1WSWFGTm1SbWRKWVZsb2JXZENaV3RoWldoVllYTmtWV1ZqYUZKaU1HRmtaMVJsVW1Sc1pWZG5aR1JIWXpWaU1tZGpZakptT1dSSFlscG1lR2RaWkZOblZHaERaa1ZvUTJoWFlsRmtSbVZMWjFKaWFtSlZZMWhrUldGVFoxbGtOR0ZKYURCalRXaFZhR05pYTJVMVlucGtSV0ZGWm5oblRtUlZZVlZrYTJGV1lWUmtiV1JzWVRCbVIyTklaa0puUW1Wa1lVWmhSbWRFWTFwbFNHaFZaRkprWTJVd1kzaGtVbWhsWTBoaFFtSlhZbVJsUVdnNVpYSmhWV0pvWWxKaGVHaFNZV2htVG1GcFlsVm1lR2gwWTNGblMyVlNZWGhtU21GVGFHNWphR05tYUVWbVVtUTVaMEpoWkdKQlpXOWhhR2hFWkVObFJXTlpZMUJsV0dOV2FFeGpVV1ZFWVd4bFZXRlVaV3RoVG1aVllrVm5lbVJyWmpsa1VHTjVhR3RqY1dSVFpXMWhZMk5IWmtoaWEyTjRaR3RrV0dSQ1lVSm9abWRTWTBabU9HSTBZVVZoZUdSR1ltaG9UR1Y1WmsxbmEyRlNhSHBsYzJWVlpVNW9hR0ZzWlZobVdtRXhaMFprU21aR2FGVmlOV0p3Wm1Sb1FtRm9aM2RpVVdWWVkxSmtVbUpUWVd0b05XVXhZbEpqZW1oSllXVmpWV2RVWkd4bWQyRlRaak5qVVdobVptTm1TR2RuYUZWbVkyWlZabGxpVkdSbFlVWm1UbVpRWjFwb1IyTndZVlJuUjJaU1owNWtkMk5EWW5obldtYzRZa1ZuYm1ad1owaG5XbVpGYUVaaWRXTlRZbTFrVW1ZMVkxTmllR0pTWm5oa1NHTlNZakZrVG1WSFlWVmtiR1V3WmxwbWFXZEpaamRpU21Wb1lsWmxjR2hSWWtGaFRtSkRaRXhqVW1aS1oxbGlUR0pTWkVaaVltZE9ZVUppYzJaWFlVdG5iV053WTAxbFlXRlNabEpuZVdWVVlXNW1UV1JSWVZSblJXVXhaVkpqVTJoU1lsWmpUMmhoWWxobFVXSlpaR05pUldOR1lUQmxWV2RWWlhCalIyVkpZVlpsYTJJMllVaG9NV0U0YURGaVRtRlNhSE5sTjJKWVpsUm1TbUpqWlZaa2VtZHJhRWhsVVdSU1luTmtZMkpEYUhsaFJXTk1hRUptZUdSR1lsTmhZMlZCWmtKbVdtUlNaM2hsZEdnMlpGZG5NMkpvWVVKaFpHVnJaazVtYTJWS1pWZGhSV2hWWTJOaFVtZ3dZbVJtVkdKU1lteG1WMmhrWkVkaE5XZ3lhR05vTW1jNVprZGlXbVY0WjFsblUyWlVZa2htVm1OTFprVmtSbVJLWkVWaFdHSjZaV2RoVkdSRlpWZGtSV0oyYUVsa2VXZFNhR0pvU1dKQ1pXUmtPV2hWWlhkalVXTk5aRUZuZVdad1pHRmtRMmRwWlhkaVZtSlVaa2hrWjJOQllXWmxWbVV4WldkbVZHVnVZMVZsVW1OamFEQmtlR2hTWTJWblNHZENabGRpWkdaQlp6bG5jbUZWWjJoblVtaDRaVkpuYUdoT1lUUmtWV013WlRsbGMyWlFZbWhvZEdkUllsRm1TR0UxWmtkaVNHRkNZblJpWkdSTFpVSm9OV1J4WkVGaGFXWlpaVXhpVG1Sb1ltOWlSV1ZWWWtSbFVtSTRaMU5pVldaV1pWbGpWbVp1WkRsaWRXWmFhRmhpY0dOMmFGZGpibVJ6YUZka1EyVnJhRlpqTVdaR2FHcG5jR0pUWmxKaFFXaDBabmRrVjJSclprcGlkbVpaWVcxa1dtRndZVVpoU0dSS1pFOWxZMmQ0WmtKaVRXVlVhRlpqUm1aS1pVWmhWV0UxYUhCblNXTkdaa0ZsTldSRloyNWhiMlpqWlVSbmQyWk5aalpoVVdaNVozQm9RMlZGWTJwa1FXVjRZMEpuUW1oa1pVRmpUR040WldSaU1XaEthRlZuTldoVFptVmxSbVZvWTFCbFpHRnRaRTVtTldaSFlsSmtUbVozWWtOak1XUnNZMWRqUldadVlYQm9TR0phWTBWalJtUjFZMU5qYldSU1pqVm9VMlY0WWxKbGVHWkdaa0ppUm1WdWFFZG5WbVJhWVRCblltUnVZVnBqZW1OaVl6Qm1XbVp1WlVab2FHWktaMDFrWkdGVlltOW1VV0pWWjJ0blVXSk1aMlZqUW1kMFpVTmpXbWRJWWpsbmJXUm1hRkpoTVdFcllWcGtTR0ZOWVZGaVZHZEZaREZtVW1OVFpsSm9WbUpQWW1Gb1dHRlJZVmxsWTJGRlkwWm9NR1ZWWjFWamNHVlBhR1JsVldSVlpEZG1RbUZSWWtwbk1tZEtZMnRpVW1FMllWWmplbU5OWTJGa1lXSjVaVkZpVjJaV1lucGphMlJJWmtOaWJXUjRZMEZqVldoNFlXdGhWR1JqYUVGamRHSmFZVlpvYUdGS1lUWmxVbU15WWxKb1FtaGlaR3RrY0dkclpHVm9WV0Z6WkZWa1kyZFNaekJsVm1WSFpWWmxSV1ptYUVwak1tUkJaRGRqVG1OcFlVbGlTbVZPYUZWak9HWmpaMFJoZW1Jd1lVeGpVV0ZxWjBWblRHRlVaM3BqVldVM1lVWm1iV0ZqWTJwbVdtVnRaVWxrVldOWlpEQm9aR2Q2YUVSaVJtVkNaVTVtVTJkVllVRmxWbVZGWTJ0b1RtTXdaRWRpU0doQ1pVSmhaR1JHWlVabFMyVlVhRzVpVldOU1ptTmxNR1o0WVZKaFpXTklaa0ptVjJGa1owRm5PV055WVZWbGFHTlNaM2huUldOc1lYTmplR2hCYUVWblJXWndaMHhqZUdFMVlsZGhVV0pUWld0bVJtRkhabWhtTldSVVlrdGtRMlJSWm5KbVFtZFRZM05oY21oTmFFaGxSV1pMWmtob1dHUXdZVE5uU0dOVlp6Qm1XbWRXWW01aVVtSjFZbVJvYm1oT1pYWm1VbVp0WkdOa1YySkZZV3RvZUdReFpWTmhhR05DWjFOb1VtSkJaM1JqTkdaRVltZGpiMlJ0WWsxblYyUm5aR3RpVldKVVlUaGxRbVJKWjFWaWJHZERaVVJtYUdGclpVbGhVbUY1WnpCb2JXTk5hRVpsTUdoU1lrWmxXR04zWVZGa1UyVnJabFpqTVdOQlltNW5jR1JOWjFSbVYyUlNZM2RsVkdadVpUQmlVR0ZPYURObloyaFZZbU5vVldOWmFGUm5aV0pHWjA1aVVHUmFaRWRpY0daVVpVZG9VbWRPYUhkbVEyRXhZV3hsVjJWRlpHNWtjR2hJWVZwalJXWkdZWFZrU0dKcFlYZG9kMkZIWlVKamIyUTRaVmRvUm1oQmFFTm5VMlIzWVRsaE5tZE1ZMVJpTkdONWFGQm9VMmRWWW05aFZXVnNZV05pZEdoSlpWVm9TbUZTWWxWa2EyWTRaa3htV1dKc1owNWtiMmRpWnpKb1NtTnRZV0ZrVW1OU1lYbGxWR1J1WlUxbFVXZFVZVVZvTVdSU1lsTmxVbUpXWTA5aFlXSllZVkZvV1dSbFoxVmhNV2hsWmxWaFZXaHdZMDlqWkdSU1lVWmllbVpVYUVaaVJtYzBaV05pUm1kYVlqQmxSR1F5WjNSblUyaEdaMGhsUm1aSFpFZGtlbUZzWTFSbVVtUklabXhsY1doU1pYaG9RV1ptWjFkaVoyZDBaRnBtVm1Ob2FFcG1ObUZTWXpKa1VtTkNZV0puYTJKd1oydG9aV2RWWm5OaVZXVmpZbEpuTUdKa1kxUmhWV0V3WVdWb1VHaFVaekZpTkdaS1pWaGhlR1pKYUZCbk1HWTFaV0ZvVFdoNVprRmxZV0ZXYUVKbVRXTlJabFJvYm1ob1luZGxVV0Z0WnpsbGFXWmFaRzFuYTJWVloyTmxhMkkxWVhwaFJXaEZaM2hqVG1KVloxVmhhMmRXWVZSaWJXUnNaVEJsUjJKSVlVSm1TbVpKWTBKb2EyTkVZa2huV0dGMFpHTm9UbUpuWlVWbFpXVkxhR2xvYkdGWlkwNW5NR0ZqWW5Ga1FXTklZV05vSzJoQllteGpXV2hhWjBKa01HRmpZMnhpWVdWc1oyZGlXbWRCWTI1bWEyWk1abEpoVldOdloxTm5XV05yWlRWbGEyaElaRlZvVW1KTGFGcGxTR0ZzWkV4blJtUklZMFZqWkdKSWFGVmxNR0phWVZaa2JtTlNaSFZvWkdkdVpFNWpkbVJTWW0xbFkyVlhZa1ZpYTJaNFl6Rm5TR0ZzWkdkaVltaEdZWGRvVldVNVlVaG9kMlk0WjJkalRXWkVZamxuYm1OV1pIcGliMlJRWTBsa1dHZE5Za1JtUTJGU1lWRmhiMk5SWVZWb1dXVnZaR1ppVW1oU2FHRmxVV1JZWlZKaVVtRlRZMnRrTldJeFowVm1XR1ZPWmsxblZXSllZV2hsZDJGV1pXNWtVV1pRWVdGbE1XVkpZVlZqWTJaVllsbGtZbU5NYUVKbmMySkhZVTVtTW1GUlpHVmtXR1pHWkRSbkwyVlhZbEZsUW1oWlpWVm5WR2RKWTBkbVRtaHBZa2xrYUdkRVltbGtSV05aWmtobmVHTjNabmRtU0dkU1lscGxUbUZEWVd4ak9XTXdaV05qYldOd1pYcG9aR1l3WVRsbWJtZFRabXBqYUdSTllXUm5WV0Z2WjFGaFZXTnJZVkZvVEdSalpVWmpjR1pEWkdKbU1tTktaVzFrWVdOU2FGSmhlV1JVWkc1bFRXaFJZMVJoUldVeFpWSmxTR1JXWkRCaFNHZFBaRzVpY0dWV1pFNWlVV0YzWnpkbVFXWjRZMDVoUVdKT1lXeG1hMk41WmtobWFtVkpaek5sVG1KQ1pFMW9WbVJYWVRKbVRXSlVhRVppU0dad1lrZG5RV05ZWlVaa05XWlVaVEpqVW1KeFpsVmxlR0ZyWTFSblkySkJablJqV21WV1pXaGpTbWMyWjFKb01tWlNaMEprWW1kclpIQmhhMkZqWWtWaFkyZ3JhR05rVW1Zd1oyUmlWR1ZTWld4bFYyTmthRWRuTldVeVpHTmxNbWc1WjBkbldtUjRabGxpVTJSVVpFaG9WbWhMWlVkaFFtWk9aa1ZpUVdSSFp6RmlZV0pXWm0xbFdtaDFZbFJtUjJGclpGVmxZMk5yWWpWb2VtTkZaRVZoZUdoT1kxVmpWV05yWlZabVZHSnRaR3hsTUdSSFpFaG1RbUZDWm1SbVFXZFZhRU5qUW1kNVpGbGtabWhLWlZaamFHWm1aMGxrUTJSblkyVmpRMlF4WTI5b04ySkdaMnhtVldGc2FFRm5lR2QwWjFObFZXTXdhRGxqYTJaaFlXeG1UV1phWWtWbE0yaEJaRXhpVjJGV1kxbGxVMlpsWld0alpHUnJaRkZtVjJFMVprdG9XbUZJWTJ4alJHTlJaRVJoYkdOVloxUmlhMkZPWjFWaVJXTjZZV3RoYUdWS1lVTmxjR1JvWlVKaFUyVTVabGhpVVdaRGFEaGlObUpFWm14a1ZXWjZZVVZpUVdGTllYaGxWMkZyWjJ4amRtRmpaekpqT1dSd1pFTm1SMmcxWWs5bllXRjRaMnhuVFdORlpWaGxkR1JLWTBabFZXYzFZM0JuWkdOQ2FHaG5kMlZSWmxobFVtSlNaRk5tYTJZMVpqRmtSV1pZWWs1aVRXaFZZMWhvYUdSM1pGWmxibU5SWlZCbVVHaDRaWEJoWkdWSlkydGlhR1psWTFCaVVtYzBaMEZoVG1WcVlVNWhaR05YWTJ4b2MyTjRZVmRsVkdodlpGcGpWbU5xWXpobmJXRk5ZMFZoYTJWMllWRmhNbUZvWkZSblUyZDRaVkpuZUdKSVpWSmlNV1pPWTBkbVZtaGFaekJvWW1GdVpWcG1lbVppWXpCbFdtZHVaMFpoYUdWS1lrMWhaR1JWWjI5bldXTkNabWRrZUdORFlVbG5NV2hSWlZCaFMyRnBaamhoY0dSUFp6QmtNV0k0WmtSaFZHRjBZMUpqU0dOcFlqUmxaV1ZFWVZaaFFXaDJaMUJsV0dSNFlscGtZMk5GWTNCbE1HWlJZbXRrVG1GUFptRmlVV1V4WTNwbVZtSkdaR2hrTkdOTVlVaGxlR1l3WjBSbk1taDBZMU5rUm1aSVlVWmlSMlJGWVRObGFHWlVZMVJoTW1OU1pYRmtWV1Y0Wld0bFZHUmpaa0ZvZEdoYVpsWmhhR2hLWVRab1JXZDVaM2RvU1dSUVkxVm9VV1J3WTFCalFXVmFaV0pvU1dnd1lsRmxWR0ZFWkd4alJXUllaa3BrWjJZd1pqVm1UbWQ1WVc5amJtUk5aSGhqTldGVVpsUmlTR1ExWTB0aVFXSnNaWFJuZFdkRFl6Tm9RbVZoYUZGbWJXUTVabWxoV21WdFpXdGtWV1ZqWVd0aE5XVjZZMFZtUldWNFpVNWtWV1pWWTJ0bFZtaFNaREprUW1abFpVZG9TR0pDWkVKaFpHTkdaa1pvUzJaVVlXNWhWV0ZTWTJOaE1HaDRZMUppWldKSWFFSmpWMmhrYUVKaFZtWnlZbGRtYTJWQllqVmtSR1F3YUVKaU1tTkNabFptTldWeFpVMWtaMmgwWjFKaFltWkRaMVpoWW1WSWFGSm1aR0ZIWjFCbk1HVTVZazlpVVdGWFpqVmtTMlphWkVobGJHUk1ZVVpvU0doRloyUmpTR05WWlRCbVdtUldZVzVoVW1oMVpHUmtibWRPWkhab1VtRnRaMk5oWldWU1ltZG9VV1U0WmtkaFVtYzBZMlpoUVdOVllsbGtMMmhEYUVKbGMyWlZZVWxrTW1WYVptbG9SbVZIWmsxamVtSmpZWGRtZUdKUlpWUmpWV1ZzYUVGa1JtSlNZa3BsY0dWSllrWm1RV1ExWWtWa2JtZHZabU5rUkdOM1owMWpObWRSWlhsaWIyUXpaRVZvUVdKV1pqaGhabUpJWmxGalVHVmhaakZpU1dSVlptTmpWV2haWWxSa1pXaEdZMDVsVUdoYVkwZGxjR2RVYUVkb1VtZE9hSGRrUTJVeFlXeG1WMlpIWldsaE5HZFFaRXhtVW1oS1ptZG5RbUY1WlVWb01HVkNaRVZpV1dodlkxcG9iR0o0WTA1a1JXRnNhRnBtYm1oRllUTmlXbWQyWldOb01HWmFaQzlrU0doNFkwbG1VV2RrYUZKa05XWlpZMGRrZUdWamFFWmhVR2RTWnpoaVVHSkpaMFJtUVdjdlpVVmhiR1JXWjNsaFVtWllZMDFsUTJkTmFGZGxaR2RTWkZObFVtWldZazlsWVdkWVlWRmxXV1pqYUVWalJtSXdaRlZpVldad1kwOW9aR0pTYUVab2VtSlVaMFpvUm1KNFkyWmlTR1Y0YURCbFJHVXlhSFJsVTJOR1kwaG5SbUZIWmtWaE0yTm9ZMVJrVkdneVkxSmpjV2RWWW5oamEyZFVZbU5sUVdGMFlsSm9SbWg0WVVwb2VHTlhabTFqVW1oV1pGcG1NR05hWms5aFpXWlZZM05qVldaalpGSmxNR2hrWjFSalVtZHNaRmRsWkdWSFlqVmtNbUZqWWpKbk9XWkhaVnBpZUdOWllsTmpSMkZFWlRCb1JHWlJZVEZpZDJGVFkwZG1XR2cwWkVOaFIyVnBZMk5pWkdoTmFIcGxiR1JSWjAxaGVHRnZaVEprUjJkSFoxcGxUbUpWWVZWbWEyRldaRlJpYldWc1pUQmtSMlpJWVVKb1FtSmtaVVprUm1GTFoxUm1ibUpWWmxKaFkyWXdZM2hsVW1obFowaGhaMmhEWVZCb1JXZFpaalJpV0doR1ptdGtNR1JEWkRGaGQyUnhZME5vYW1kUlpteGpZV2hzWjJkb1dtaEJZbWRpTUdkTVoxSm1WV1Z2WVZObFdXZHJaelZvYTJOSVpWZG9OR2RsWjB4aFJHTkJaMWxtUjJocVkzaGpXV05WWkVGb1NtaE1ZMFJpZDJjNFkzWm5RMmN6WXpsa1JtaFNaVzFrWTJkWFpVVmphMmQ0WmpGblUyRm9aVUptVTJaU1prRmpkR2QzWjFkbWEyaEtZWFpvV1dadFkxcGtjR0pHWTBobVNtaEhZMHBvTVdOblpFWm1TR2RzWXpoaFJXSlZaa0ZpVFdKdFprcG1hMmRGWlV4blFXSklaMUptWVdaVFlXeGhNR1pKWVVWbVYyYzVZMUZpVldSWFpVSmlOV0pXWW1sa1oyVlFabEJuZUdad1pHUmpTV0pyYUdob1pXaFFabEpsTkdSQlkwNWhhbVJOWTI5alYyZENaVTVpTjJKRFpqQm5jMmR5WWs5bVNHSndaVWhpV21GRlpVWmpkV2hUYUcxbFVtYzFZbE5uZUdSU1ozaGlTR0pTWlRGbVRtVkhaRlpuV21Vd1kySmpibWM1Wmk5a1VtRlZaRnBuYm1GR1kyaG5TbWhOWTJSbFZXWnZaVkZpVldWcloxRmtUR1ZqWlVabGNHTkRabUppTW1OS1ptMW5ZV2hTWTNkaWVtTlVaMjVpWjJWT1kxUmxSbU5zWTFsa1VtTlVaamxsVDJaaFlWaGpVV2haWm1Oa1JXRkdaakJtVldkVlpuQmxUMkZrWkZKalJtSjZhRlJrUm1oR1pEUmhZMk5HWTFsbloySlNaSGxsU1dkQ1owZGxhV05rWmxaaVNHTlRaVUZrVEdoQ1puaG9jMkV2WkVGa01XY3habE5pU21GRllUVmtVbVZtWkVKblNtTTJhRkpvTW1KU1lVSmlZbWRyWW5Cb2EyaGxZMVZsYzJOVllXTmpVbVF3WldSa1ZHUlNZMnhpVjJGa1owZG1OV2d5WjJWamVtTnpaazlqVEdocllsVmhZMlJCWVZSbVFXVklaVmhvZDJSQlltUmpZMlpFWTBaallXRlRhRmRqT1doNllVZG9NbUZyWlVsa1ltUnJaVFZsY21WSFlWVmpkMkZTWkZWbFVtY3haV1JuUW1aNlozQm9ObWRXWjFSblZXTk5ZazluZDJoTlpWUmxUbU5VWkZKbGMyWm1ZVEppV21GU2FHVmlTR1ZDWlZkbVpHZEJZVGxsY21aVllXaGtVbVY0WmxKbGFHRk9ZelJuVldRd1l6bGphMmRoWld4alRXZGFZa1ZsTTJkb1pHWm9SV1JTWnpsaFFtVmtZa0ZpYjJab1owUm1RMlpGWVZsbVVHRlJaa2xoUzJOR1praGxiMk5rWkVSaWFtaEJZbHBoVTJWdFoyaG5kV1ppYUc1bGNHZDJZa2RuYldWa1kwTmtWMlJuWVZWamJXSlNZa1psTUdOWVprTm1WV1JSWW1sblFXWjZaR3RoZFdoWlkyMW1NV1p3WjBKa1oySTVhR3RsWTJoNFpFSmlUV2RVWlZaalJtTktZMFptVldZMVpuQmtaR1ZDWVdobmQyTlJZbGhqVW1OU1oxTmxhMmcxYURGbFIyaElhRGxpYldOVlpsaG9hR1IzYUZabmJtTlJZbEJpWVdReFkwbGhWV2RqWWxWbVdXTlVaR1ZoUm1OT2FGQm9XbU5IWjNCblZHZEZZMVpuU21GM1lVRm5SV1JTWWxkblFtWnVZVTVoVEdoVVptdG9SbU4xWTFOaWJXWlNaalZoVTJkNFoxSm5lR1ZJWkZKbk1XaE9aRWRsVm1kYVpUQm1ZbUp1WVZwaGVtVmlabmhrU1dkMmFGaGhNR1JHWkVObFNXWXhZelJsWldKRFpHaG9lR2hFYUVSb2QyWTRZMU5qUzJSNVpVMWtlV1ZNWTBKb2VHUlpaMVJvYm1kTloxRm9WR2RGWXpGaFVtTlRhRkptVm1KUFpXRmpXR2hSYUZsa1kyaEZhRVppTUdSVllsVm9jR2hQWW1SaVVtRkdaVGRtUjJSQ1oydG9lR0ZKWlRGaloyUTFaMU5qYVdaWlltUmlVbUZwWldkb09XUlZaVzVpYUdaWllsUmtNMkZWWkZob1ZXZDNaMVZpVUdSallVSmlUbVZSWlZab2EyVTFaalpoUldWNVluZG1TV1ZRWTFWa1VXSndabEJpUVdSYVpHSmpTV2d3WWxKbGJXRkVZa2RpVW1OaFoxaG5iV1UxWkRKaFkyZ3laVGxsUjJoYVpYaGlXV0pUWkZSbVNHWldaa3RrUldKR1owcGpSV2hEWVROaFFtaGhhRkZtYldZNVptbG5ZbUZxWnpGaFkyVlBaWGhqTVdZNVoxaGhVV2RyWlVGa1NHTm9aWFJoVFdWT1kxTmphR2N3WWtWbU0ySkNaRk5rUTJSV1lrWm5WMlJWWkc1aFZXUktaR1ZtYTJaM1pVNWhaV2hEWWxGa1pXaFFabFpqZUdoc1pVaGxNV0ZGWkRobFEyZFZZVVZrYUdWTFpFRmlOV2RyWTFsbFZtUk5hRXhoWW1kc1pXOW1UR05YWlZaaldXWlRZMlZvYTJSa1lXdGpVV1ZYWmpWalMyTmFhRWhuYkdoTVlrWm1TR0ZGWW1SblNHVlZaREJsVVdKWVpUTmlhR1JGWkdSaWJtVk9ZM1puVW1odFltTm1WMlpGWld0bGVHTXhabE5rYUdoQ1psTm5VbVZCWW5SaGQySlhabXRoYjJodVpWbGhiV1F4YURCbFJtSkhZazVoV1daalkzaGlNV1JOWlVkaVVtUnJaMEZtVW1aclpFRmlhMlJOWTFabFZXVnFZME5qUTJJMFpsVmlVV1l3WkVwa1ptZEZZVmhsVG1OTlpWVmpXR0pvWkhkalZtZHVaRkZoVUdKaFp6RmpTV2RWWm1ObFZXSlpaVlJoWldkR1puTmhZbVJNWkVOalRXUkJhRVpuTVdZMFpqRm1VbVpuWTI5b1ptaFRZMFJpT1dOSVkyVm5WV05HWWl0bFVXUXlabWhtVkdSVFkzaGlVbWQ0WmtoblVtTXhhRTVoUjJaV1pGcGtNR0ZpWm01aFdtZDZaV0pvTUdoYVlXNWxSbU5zWkRGaFRXSmpZVEJrZDJWUllsZGxhR1JDYUVSb1QyVlJaMnhrVFdOSlptbGxZMmR5WlVwaGEyVlphSEpuVkdodFpEUmlVV2RVWm10aU9XRlpZVlZqYW1jNVlrOWhZV1pZWlZGaldXZGpaVVZvUm1nd1lsVmtWV1p3Wms5blpHWlNaa1ZtZFdSYVpXeGlSbVkwWm1OalJtaGFaakJrUkdneVkzUm1VMmhHWVVobVJtTkhhRVZoZW1oRllWWmtWR2d5WVhka05XUlZaWGhuVVdKVVoxbG9VbVF4WmxwalUyRkJaRGxtTm1aRVl6Sm1NV2hDWVU1alYyZENaV3RoWldSVlpuTmpWV0pqWkZKbU1HZGthRlJuVW1Gc1pWZG5aR05IWmpWbE1tRmphSHBvYTJaSVlrNW9VbWhhWVVoblZHaEhZV2htUzJKUlpqRm9TbU5LWVVObU1tZEdaMDFpVjJWVlpsWmphV0phWjIxbGEyaFZabU5tYTJNMVpIcG1SV05GWW5oaFRtTlZaVlZvYTJWV1pWUmxhV2d3YURkalRXSnVZa0ppUW1Ga1owWmpSbVJMWWxSa2JtSlZZbEpqWTJVd1puaG9VbUpsYUVoaFFtSlhaR1JpUVdVNGFHdGhaV2RDYUZKbmVHZFNaV2htVG1NMGFGVmpNR0k1Wld0aVlXWnNZVTFsV21SRllUTmpRV1ZNWkZkalZtVlpaRk5pWldWc1oyaGphMlZUWmxSb2IyVkRaVXhoVTJKd1prWmlVV1Z0WkVGblZHaFNabEpsVm1OU1pVdGlVMlZGWXl0a1RXUnFZa2xuTjJKQmFESm9PR1U0WTBWbWEyWjRaekZqVTJSb1lVSmtVMkZTYUVGaGRHUjNZVmRrYTJWS1kzWmlXV2h0WmxwbGNHWkdZa2hrU21oUFptTm9lR1ZDYUUxbFZHTldaV3RpWkdaSFozZG5NR1JvWVU1alZXSnZabFJsUkdScVowRmhWV1JMWlhobmNHYzVhRmRsV0dGT1lVaGhWV0pYYUd4bE5XTldZbTFsWjJOVWFHRmtNR1J2WVdSbFkySlNaVzlqVkdKTVpFWmlNR2hOWWt4b1EyWnpZVUprWldSc1pIZGtNR0pVWVdwaFoyTkRZa2RtYW1SS1pVOWlZV1JIWTNSbGRXVlRZVzFuVW1NMVkxTmplR1pTWW5oalNHTlNaekZsVG1GSFpWWmxXbU13YUdKbWJtRmFaWHBqWW1nd1lWcG1ibWRHWTJoalNtWk5ZV1poVW1nMFpXVmxSV0ZSYUhobVMySkpaV3BqYTJST1pFdGllV1JqWWtob1VHSlNhSGRuTm1kVWFHNWhaMlZSWWxobk1HZFNZbEpvVm1SUllXeGpUMkZqYUZoaU1HRlpaMHhqUldSRllXZG1XR2QzWjJ0bFIyZE9ZMFZuVFdKUmFFRmxlR0ZWWWpsaFJXWlJaRXBtT0dOU1l6Sm9kR1ZhYUVabFIyaE9ZbEJrVDJkWVkyaG1WR1ZVWXpKalVtZHhZbFZtZUdkclpsUm1ZMlZCWlhSaVdtaFdabWhoU21jMlpWSmxNbUpTWkVKbFltTnJaSEJvYTJOallVVm5ZMmNyWVdOblVtWXdZMlJrVkdGU1pXeG5WMmRrWmtkaU5XRXlaR05qTW1JNVowZG1XbUY0WWxsaVUyaFVaa2hrVm1WTFlVVmxSbVZLWmsxb1VXTXpaa0prVW1SWVpUSmhPV1F5WVdKb01tTlZZeXRoWTJaclpUVmhlbVpGWVVWamVHWk9aRlZtVldOcllWWmxWR1p0YUd4aE1HRkhZa2hoUW1SQ1pHUmlSbWhHWTB0b1ZHTnVaVlpsUm1WUFpuZG5WV05EWldSbmFXWmFZa1ZsWldSc1oyTmplbWRIWm0xa2MyZHJZVVpvYkdaallqVmhRbVozWkhCamMyRlJZVVpvVFdaYVpVVmhNMmRCWjB4aFYySldhRmxvVTJSbFltdG9aR1ZyWWxGbVYyRTFZVXRqV21kSVlXeG5UR0ZHWmtob1JXTmtZVWhtVldnd1pWSmhRV051WW05bGRHZFFaV3BoU1dnNVowcG9VMkpvWkZObVZtRjVZakJuYUdGUlpXeG5hR2hUWVZSaWQyRjBZV2hpVldJd1prcG1lbVZtWlcxaVdtVjRZMGhqV0dGSlpsTmtZMmd3WTFKaFEyTkVaV2hvYTJWSlpGSmhlV1F3WTIxaVRXVkdZVEJuVW1GR1pGaGpkMlZhWkZGak1HWktZV1prUldaWVkwNWlUV0ZWWmxobGFHVjNZVlpoYm1KUllsQmtZV2d4WTBsb1ZXSmpZbFZsV1doVVltVmxSbWRPYUZCaFdtTkhhSEJvVkdWSFpGSm5jMmhyWTBKaFVtWnZaMlZpVldkNWFHZGhhMlJMWjNkbVZXaHlaa3RqZW1WQ1pIaGhRV1Y0WWxKbU5tVklaRkZuTldORlprZGhWV1Z3Wlc5bFltZHRaelZrTm1oaVozaG1jR0Z1WkZGaGFHTjNZMUJuVUdKUlkzUm9RMkZOWlZGbmRHRlFhRTVtVkdKeloxZGxXbVo1WW5Cb2JXTlpaR2hpVW1GblpWSmpNV2hyWWxGbFZHSkZhREZrVW1KVFpGSmhWbVpQWTJGaFdHVlJZVmxoWTJORlprWmlNR0ZWWTFWbmNHaFBabVJpVW1SR1ozcGxWR2RHWjJobE1HUlhZbXhvV21Vd1lrUmpNbUYwWTFOblJtUklaVVpqUjJWRlp6Tm5hR1pVWVZSak1tWlNaSEZvVldaNFkydGtWR05qWWtGaWRHZGFaMWhvYkdod1pqWm9WR0ZJWm14aVFtZGxhR3RtVG1odllsVm1NR2h6WjFWb1kySlNaekJtWkdaVVlsSmhiR1ZYWkdSblIyWTFhREppWTJJeVl6bGlSMlZhYUhobVdXaFRaMVJvU0dKV1owdGxVbUpDWjI5a1RtTlhaVWhvTkdKTlkxVmlWMkpGWlRabVVHVnBaMFppY21SS1pIaGtOR0V6WjFWb1VtWm5aVWxuVjJSWFpFMWpWbWhVWW0xa2JHY3daRWRrU0dOQ1lVSmhaR1pHWkVaaFMyUlVZMjVsVldKU1lXTmlNR040WVZKb1pXaElZMEpqVjJaa1lVRm9PV055WjFkamEyTkNZUzlqUW1kV1pYTm1OV05CWlZObGQySnlZVXhvYUdoYVpqUm1VbWd6WW1ob1JHTlhZVlppTUdkVFlXRmpNR00xWjJ0aVdHUllZMHBpUzJKbVpraGtRbVJNWlZOaVNHTkdaVXBsUldaM1lUVmlVbUpHWjNsbVdXSk9aazlrVkdOalpuRmtTbVI2WWsxaVpXUlhaV3RrVm1nMVkxbG1RbUZDWlZOa1VtVkJaWFJsZDJkWFkydGlTbWgyWTFsb2JXRmFZbkJuUm1GSVlrcG1UMk5qWjNoalFtVk5aMVJqVm1KR1kwcG1SbU5WWXpWbmFHZEpZMEpsV1dkNllrTmhWR0pWWmtSaVMyWlJZa1ZqZUdSV1pFSmxTV0paWjFka1ZHRkNZbmRtV0dkWVlsRmlZMkpaWjJ4aFNXSkpaR0ppVldSWlpFeGlZMlZXWjAxa1ZHVmFaRVJpTldoa1pGZG9iR2h6Wlhoa1YyWlVZbTlqV21oV1ptcG5PR050WTAxbFJXVnJZbTFuVTJkdGFEbGxOV2hYWmxKaU1XVmlaRWhqVW1jeFkwNWhSMlJXWVZwaU1HSmlZVzVvV21WNlpXSm5NR05hWm01a1JtTm9aa3BuVFdOa1pWVm5iMkZSWlZWaGEySlJaME5vWm1SSVlVSmhRMlppWmpKbFNtTnRZMkZsVW1aU1ozbGtWR1J1WTAxaVVXaFVhRVZuTVdaU1kxTmxVbUpXWjA5aFlXWllhRkZrV1daalkwVmhhMkU0WjFWaVZXRkdaMVJtWkdWUllsWm9ObWhSWWtoaWRHSTBZbU5rUm1aYVpEQmpSR0l5WjNSb1UyaEdaVWhtUm1kSFowVmlNMkZvWmxSbVZHVXlZbEpuY1dGVlozaGlhMlpVWm1OaVJtVTRZbEpvU0dZd1lrWmxNR05GWkZobFFtZFFhRTVvYUdSSlpuTmlRbVJvWlRWalJXRk9abFpsZUdoS1kwTm9RbU5HWkRoaVpHWkhhRFZoTW1OamFESmhPV0ZIWVZwamVHVlpZbE5sVkdWSVlWWm5TMlJGWWtabFNtUkZZVU5vTTJSQ1oyRm1VV1p0WlRsb2FXaGFabTFrUm1kQllXWm9RV013WXpkaVZXUlNZalJsZFdWSVltZGxNV05SWVV4bGVtSXhZamhqVldOSVowSmlTMk5rWlVWalFtTkVZbFJqYldSclpVNWtZMlF4WjFKb1dXWmxZME5tZUdkWFprbGhRV1JGWlc5bVIyTnNZMVZtYW1OS1oxWm1kMlU0WjBaaGFXVTBaM2RqV1dSb1ozTmtVV0pJWXpGamIyZE1ZMWRrVm1SWlpGTmxaV0pyYUdSaGEySlJhRmRqTldaTFpGcGhTR2RzWVV4aVJtUklZa1ZoWkdOSVpGVmpNR2hhWkZaaWJtUlNaSFZtWm1OcFltUmthR1JDWTFOak9XSllaVkZuUTJjNFlUWmtSR1JzYUZWa2VtRkZaVUZoVFdjMGFGZGthMk5zWVhab1kyTlhZamxqY0dORFpFZG1OV05QWVdGaWVHRnNZazFoUldOV1pFVmtaR1ZIYUhkb01HUm9ZMDVqVldGdlpGUmlSR2hxWkVGbFZXWkxZWGhtY0dNNVpGZGlXR0pPWWtoa1ZXWlhZM0JvTldobVlraGtVV1ZRWjJGbU1XSkpabFZoWTJaVlkxbGhWR2hsWWtaaVRtZFFZbHBrUjJkd1oxUmtSMmRTWjA1b2QyZERZakZoYkdoWFlVZGlNMmRPWlhSaVdtSkZZVVpqZFdOVFltMWxVbWMxWWxOaWVHSlNZM2hvU0doU1l6Rm5UbVZIYUZaaFdtWXdaR0poYm1OYVlYcG5aR1pWWWxwamRtRlJaR3hpYjJoR1lVcGxhMk5TWVVkbVVXUXdhSEJoVkdSTFlrSm1TV2c1WlU5bWFtaEpZbWxpUzJKRmFFRm9NMlZTWm14bWEySlJhRlJpUldFeGFGSmtVMlpTWVZab1QyUmhaMWhvVVdSWlltTmhSV0ZHWlRCblZXVlZZbkJrVDJWa1psSmhSbUo2WWxSblJtVkdZVFJtWldOQlprbG1VR05TWlRKamRHVmFhRVprUjJWQlp6ZGtSV2N5WjFKbFVHUlVhRE5sZUdKcVpGVmhNR0pWWmxSaVNtSklaVUZqVW1aTFpYaGpOV05SWTFKa01tRlNaVUpoWW1GclpYQmxhMk5sWjFWbmMyWlZaR05oVW1Rd1ltUm9WR2hTWld4aVYyRmtaVWRrTldReVpHTmhNbWM1WWtkaVdtRjRaalZpUjJaT1kzcG9NV1ZMWjBkbU1XUkthRmhuWkdGdVlVSmpSMlJZYUcxaU9XZzJabUpqTW1Gc1lVbGxZMkpvWVc5b1NXSlhaVVZsZUdkSFpGVm1WbVIwWVc5aldtaEhZV3hsTUdGSFkwaGxRbU5DWTJSbVJtWkdaMHRsVkdodVlWVmhVbUZqWnpCbmVHSlNabVZuU0dKQ1psZGhaR1JCWlRsaWNtSlhZbmhuYUdaaWFGSmhhR1JPWlRSblZXTXdZamxsYTJKaGFHeG9UV0ZhYUVWak0yUkJhRXhtVjJSV2FGbGtVMlZsWVd0bVpHVnJabEZqVjJVMVlrTmhUR0ZJWm14blFXZERZbGhuUldOS2FFWmhSV1JGWVhwblZtZHVabEpoZFdoa1pXNWtUbUYyWjFKbmJXTmpZbGRuUldkcllYaGpNV1JUWTJoalFtRlRhRkpoUVdoMFlYZGtWMkZyWlVsa04yWkxaV2xuT0dNMlprZG1hV2RTWm1OalptRlZZMmRuVldoQ1pGTm5OR2RqYUZKbFVXWnZZVzlsU1dSR1l6Rm9OR05oWVROblVtZFNZMU5pYTJnMVpURm5SV1pZWjA1bFRXSlZZVmhuYUdSM1kxWmxibU5SWlZCallXTXhaMGxoVldoalpWVmhXV1JVWkdWaFJtRk9aVWhqVFdGQ1pFVmxZbUpIWVZKamFHUjNZa2RqYVdkU1pWZGpSR1p0WTFwb1NHVm1aRVZqYUdOMVlVWmxiV2hSWm5Sa1RXWkdaM2RtVFdORlpsUmhaR0ZPWTBka1ZtZGFZakJrWW1GdVlscGxlbVppWXpCa1dtZHVaVVpoYUdWS1pVMWpaR2RWYUc5b1VXSlZaV3RsVVdSTVlXTm5SbVJ3WmtObVdtWjZabGxvWkdkSlpsSm5VbWcxWTFSaWJXWkNaWFJoVkdaR1pVWm1UbWhUWkZGak1XVklZMkZrVTJabloxbGhTbVZFWTI5ak9HWlZaMVZtUm1kUFkxcGlNbWg0WVZwb1ZHZEdaMFpsTkdkalowWm5XbUl3WWtSak1tTjBZVk5qUm1aSVprWmtSMkZGWnpOamFHVlVZbFJrTW1WU1lYRm5WV040YUd0aVlXUm1ZVU5vUm1aYVoxWmxhR0pLWVRabFVtUXlZVkpqUW1SaWFHdG1jR0ZyWVdWaVZXUnpaRlZrWTJaU1l6QmhaR1ZVWWxKbGJHTlhaMlJvUjJKWmFDdGlZMkV5YUZKbVltZGFZbmRvU1doaVpWRmxSbUU1WkV0blJXZEdaa3BrUldORGFETm9RbVpoWVZGaGJXVTVZV2xqV21OdFlXdG5WV1JqWjJ0ak5XVjZZVVZuUldKNFpFNW9WV2RTWlRGaFpHUkNaWHBpY0dVMlpWUm5iV0ZPWkZCaVRHSkJZV3RtUTJSTloxTmlRbWRDWkU1aWQyRXdhRVpuVUdWWVptaG1PR2RrWVVGaE9XVnlabFZrYUdGU1luaG5VbUpvYUU1a05HRlZaVEJvT1docloyRmpiR0pOWlZwaFJXY3pZMEZuVEdaWFlWWm1XV1ZUWTJWb2EyWTRZWGRqVDJocFkxcG1TMkZpWVRObGJHRmhhR0ZvV0dkRlkwSmlRV1pWWXpCb1FtVllaek5vVVdoNVpXUmthV0pqWVZWbFJHSm9abTlrWVdOUFpFVm5lR1l4WVZObGFHUkNZVk5vVW1oQllYUmtkMmhYWW10bFNtZDJaVmxvYldaYVpIQm9SbVZJWmtwaVQySmpZWGhrUW1oTlpWUmlWbWRHWlVKa1VXWlVabFZtYUdKa1pFSmtUbUYzWkZWbFoySnNZVkpvVm1Wc1prcGhNV2hEWlZoa2NHaE5aa1JpV0dabmFHdGlUR05VWTNkaVVHRlpaMFptU1dkSFlVUm1SMkYzWWxSalpXaEdZMDVtVUdOYWFFZG9jR1ZVWTBkb1VtSk9hSGRoUTJjeGFHeGhWMlZGWW01amNHRklZbHBpUldOR1ozVm9VMk50WlRGaE1XSlpaMUptVW1aNFlraGpVbVF4WWs1a1IyTldaVnBuTUdSaVpHNW5XbWQ2WldKbE1HTmFaMjVsUm1Kb1lrcGtUV0ZrWkZWamIyZFJZVmRuWjJSM1lVeG9aV1l3WldSblEyaGxZekpsZEdOeFkxRmxlR1JTWlhsalZHSnVaVTFrVVdkVVowVmxNV1pTWlZOblVtSldaazlvWVdoWVlWRmhXV2RqYUVWa1JtRXdaVlZoVldod1pFOWxTV05XWjJ0a05tUklaVEZtT0doMVoxcGxSbWRuYUhOblZtaDVZVTFsZEdoUlpGTmpSV0ZEYUZWbGFXWjNabGRvVW1Jd1pqVmxjV05WWlhoamEyVlVaV05tUVdaMFoxcGtWbVZvYUVwaU5tSlNZVEpsVW1aQ1ltSmhhMk53YUd0a1pXaFZabk5vVldSallWSmpNR05rWTFKb1ZXY3dZWFJtVUdOSFp6VmtPV0ZqWmpOak5HYzNaRnBrZDJKdlprOWtWR05IWnpGb1JHUkZZVUZsTldSRlpWaG1kMmR6WTFOaVVHVXlhRTVsU1dKYVptMWhhMmhWWkdOb2EySTFaM3BrUldKRlkzaG9UbU5WWWxWbmEyaFdaVlJrYldkc1pqQmpSMkpJWTBKbFFtRmtZMFpoUm1GTFlWUm1ibUV4YUVaa1EyaEJaVkpoVW1OallqTm1RbVpHWkVObFVXVTVaVE5rVkdSb1pWSmljR0pVWkhob1RXSnJaVlZqZUdOeloyWm1TV1JzWjAxaVUyWkZaVEpvU21NeVlXTmtNV2haWVZOa1pXZHJZV1JoYTJaUloxZGxOV1ZMWjFwa1NHRnNaRXhpUm1GSVlVVmlaR0ZJWTFWa01HUmFZbFpuYm1oU1pIVmpabVV6WW5CamFtSmlZa2RvWTJoWFowVmhhMmg0WlRGbVUyaG9aVUpsVTJWU1prRm5kR2QzWkZka2EyRktZM1ppV1dkdFpscGljR0ZHWWtobGIyUkhZMk5qZUdkMFlWSmlWR1pWWVZaa1FXUkVaRzFqVW1ad1ltUm5RbUZvWTNkalVXRllabEpvVW1WVGFHdGxOV2N4WVVWaldHaE9aMDFqVldWVFpqaGxOR1ZJWW5wamFHVkxaMkZrTVdod1pVSmtZMk5XYUdkb1QySmxaVUppZEdaSFoyWm9NR1pDWkZSalIySlNhRTVoZDJWRFpERmpiR0pYWlVWbWJtWndaRWhvV21kRllrVmplbVZaWWtkblVtZzFZbE5vZUdoU1ozaGlTR2hTWkRGblRtTkhaMVptV21Nd1pXSm5hV05SWXpKblQyaDRhRTFrTVdaWFlrSmhTbUZGYUZoa01HRnZZVkZpVldOcmFGRm5UR1ZqWkVaaWNHaERZMkpoTW1oS1lXMW1ZV0pTWWxKbGVXUklaRmhsVFdGUFlWUm5RV0pXYUZKaFZHaDRZVTVvYTJSaFlWaG9VV1ZaWm1ObVJXVkdaakJvVldoVlpIQm1UMmRrWkZKb1JtWjZZbFJpUm1WR1p6UmlZMkZHWWpSbE4yUktaMWRsZEdGVGFFWm9TR2hHWTBkbVJXRXpaMmhuVkdGVVl6SmpVbVZ4WTFWbGVHZHJaMVJpWTJaQlkzUmxXbWRXWVdkbU1XSTJaMVJsZW1KQlowcGhTbVY0Wkd4aWNXSk9aa0ZvTldKYVpWQmphMmM1WlVWa1ZHTlNhRXBvVEdka2FFUmtjR2cwWkVsaFEyRk5ZbEJpU21KR1kwMWtZV05DYUVobmVHVkVaRTlsYkdKS1owVmlRMk16WkVKaVlXVlJabTFuT1dGcFpWcGhiV1ZyWkZWbVkyRnJaVFZtZW1KRlpFVmxlR1ZPWkZWaVZtVk5abFpqUW1Vd1kwNWtNR05IWWtoaVFtVkNZbVJoUm1GR1pVdGlWR0Z1WmxWa1VtSmpZekJvZUdoU1kyVmxTR2RDWVZka1pHUkJaVGxrTUdoVlpXdG9RV2MxWjBSbU1HTkNaVEpuU0dablptOWljR0ZLWjFGb1JtWkJZMGhrVTJGT1kwOW1SR1ZXWXpWbFIyWmtZa0ptVVdGNFkwRm9lV1U0WWxsaVRtSnFaR2RsVTJaSVowUmhhMkpTWTBoalVtSTBaVkZoVjJkdVlWRmlObUZRWldwaGIyRTRaMU5pUTJSd1psUmxXR2g0Wnpobk9HUkZhRVpqVm1KaVkySm9aMlowWVhkblYySnJaRXBvZG1aWlkyMWhXbUp3WkVaaVNHZEtZMDluWTJKNFlVSmxUV1pVWmxab1JtWkthRVppVm1SU1pYQmtTV1JDYUZsa2VtWkVhR2xoVVdSSlpsRmthR1J2WmpsblYySkRaa0psUTJKSVowUmlNR2c1WlVkalUySmFhRmRoV21JeFkwcGxRV0pQWTFGaU9XWkJZMlJoYUdZMFpFdGtTMk5VWm10aVlXUlJZVEZoV21JNFpFTm1lR1JHWjJGbFJXVnBaV3hqVDJWaFpFZGhkR2QxWjFObmJXSlNZalZuVTJKNFpsSmplR1JJWWxKa01XTk9aVWRrVm1OYVlUQm5ZbU51WjFwbWVtaGFZWGhuU1dOMlpsaG9NR0pHWmtObVQyUkJaRGxpWkdWQlpsRmtNV1JTWlU1bVZtWndaMlprWW1KNlpVWm1iV1phWVVKaFVXZzJaVkpoTTJadlpHTmxXbUpyYURGa1VtZFRaMUpsVm1kUFptRm5XR0pSWlZsa1kyVkZZVVppTUdWVloxVmljR05QWkVsblZtSnJhRFpvU0dRelozUm5OR2hqWTBabVdtY3dhRVJsTW1GMFoxTmxSbUpJWlVab1IyWkZaak5rYUdoaFkxWmtSV0kxYUhGblZXWjRaV3RsVkdWalkwRm1kR1phWkZaa2FHRkthRFppUjJodFpERmxUbU5TWlVWb2NHWnJaV1ZvVldGelpGVmhZMkpTWkRCaVpHaFVhRkprYkdWbFlVOWxNbVZCWW0xb1NXTlRhRUZrVTJSTFowVmlTbVpNWTBobVJHUkNaRVZvVm1oQ1luTmhSR05VWkdsb1RXaFBaVkZuYm1OS1lXbG1TV1pFWm5oa1lXVk5abEppYjJJMllsaG9kMlpLWjA1b1YyRlZaMEZpVm1aR1lWVmhUbUl3WmtkaVNHRkNZa0poWkdoR1lrWmpTMlZVYUc1bFZXVlNZMk5sTUdOM1pVaG5UMmRUWWtwblYySkphRUZsVG1GQ1lWVmlhR05TYUhob1VtaG9hRTVtTkdGVlpEQm1PV0ZyWldGa2JHaE5aRnBvUldVelprSm5XbVZXWmxob2QyRlRZV1ZpYTJSa1ptdG9VV0pYWkRWb1MyTmFaRWhvYkdOTVlrWmhTR0pGWVdSa1NHZFJaVkZtV21aVFpUTmlVV1kyWjFCbGFtSnZaRGhsVTJGRFlYQm5WR2RZWW5kbFRXZHVaMFZqZUdoNFl6UmtVbU5CWjNSamQyZFhaV3RrU21KMmFGbGtiV05hWm5Cb1JtWklZMHBoVDJWalpuaG5RV05LWkZSblZXWjRZMHBpUm1GNFlqQmpPV1pLYUd4bFJXZ3JZa0prYm1OYVkxSmpWbVF4WVU1a01XWlNaRk5pYjJkalpVWm1SR0pqWmpKbFZtWnFaekJqUkdGUllsWmpTV2hWWm1OblZXZFpaVlJtWldkR1pFNWpVR1phWTBkbGNHTlVhRWRoVW1KT1luZGhVbWRHWTJ4b1RHVkZaVzFoY0dOTVlsUmhhMlJHWVhWalUyUnRaVkpuTldSVGFIaGlVbUY0WTBobFVtRXhZVTVrUjJGV2FGcGxNR2RLWTI1b1dtTjFZV0ppZUdoSlpYWmlXR2d3WTBab1EySlBaa0ZuT1dKa1pVRmtVV014WmxKb1RtSldabHBtYjJaaVpUSmxTbUp0WW1GbFVtUlNaSGxsVkdGdWFFMW5VV0pVWjBWak1XTlNZMU5oVW1SVllVNWtZV2hYWld0bFdXTlFZMmRqVVdWcVpGVmxVV0pTWmtkaVptZEJZM0JqV21SVVlVWm1SbVEwWjJOblJtUmFaREJqUkdZeWFIUm1VMmRHWmtoaVJtaEhZMVpqVkdWalowSmhWR1V5WW5obFFXZFZaM2htYTJOVVpXTmhRV04wWWxwblZtUm9ZVXBtTm1SU2FESmpVbWhDWm1Ka2EyaHZaM2RtWldKV1oxbGtLMkZqYUZKaU1HWmtZVlJqVW1Gc1pWZGlaR2hIWkRWb01tZGpZekpvT1dGSFpWcGllR05aWlZOalZHaERaa1ZtUTJaWGFGRmlSbVJMWlZoamVtZzRaazltUVdkNVowMW1aR2hMWW1sbWVHRmhZbU5tYkdKQ1pIVmhSV0ZHWkRGaVltRmxhREJsYTJSV1psUm9iV2RzWXpCaVIyaElaVUpqUW1Wa1pVWmlSbVJMWkZSaWJtSlZabEpuWTJVd2FIaG9VbUZsWmtkbE9XZFhZMGxpUldSalkybG1RV0ZTWm05amJtUldhSHBoYkdFMFpGVmpNR2M1Wkd0aVlXZHNaRTFsV21kRlpUTmtRV05NYUZkb1ZtVlpaMU5sWldaclkyUmphMkZSWjFkak5XVkxZVnBtU0dOc1preG9SMk5wWVU1aFUyaFRaVkZtUldGU1lsSmxNMlF4WlVWbFpHUnVhRTVpZG1oU1pHMWxZMlJYWTBWb2EyRjRaREZrVTJGb2FFSmxVMmhTWmtGaWRHWjNZbGRsYTJWS1pYWm5XV1p0WTFwb2NHZEdZMGhqZDJSUVprNW5NV1JTYUVWaVdtUXhZVVpuU21aR1lWVmhOV1J3WldSb1FtaG9aM2RqVVdWWVpWSmxVbU5UWm10a05XUXhZVVZoV0dWT1prMWlWV1JZWW1obmQySldhRzVuVVdSUVoyRmpkMlphWjJObFQyWkNZVlZvWkdoTVoydG9SbU5zWWxwbVIyaHdZVlJqUjJaU1pVNW9kMkZEWXpGa2JHRlhaRVZqYm1Sd1pFaG1XbWhGWTBabGRXaFRhRzFsVW1FMWFGTmhlR2RTWkhoblNHWlNhREZvVG1WSFpWWmtXbVEyWlZCa1JHWnJhRzVtU1dFd1pUVmhkMlZJWTNwbWFHRk5ZbVJsVldWdmFGRmlWV1pyWlZGblRHZGpaMFppY0dkRFpXSm9NbUZLWW0xbVlXRlNabEpuZVdKVVpHNW5UV2hSWkZSbVJXWXhaRkpsVTJOU1pWWm1UMlZoWWxobWNHRmFaRTVvUVdaV2FEaGlRbWhSWmtsalNHZEtaV2hvT0dkc1pGaGtNV000WTNGbVVHaDNaVWxrTkdaQ1lUTm9jR0ZCYUVoaldHZzRZa2huVm1aNlozaG1ZbWRIWlhsbGQyVnFaVUZpUW1Wa1lVWm9XbWRCWjFWa1RHVkhaVlZpV1dNeWFGUmtNMlpXWmxwbFdtWXdZazVsZEdKVmFEQmtjMmRWWm1OaVVtY3dhR1JrVkdOU1oyeGxWMmRrWlVkaE5XVXlhR05rTW1VNVkwZGhXbWg0WTFsbVUyTlVhRWhsVm1kTFkwVmtSbWRLYUU1alNXWllZMEpqWVdKUloyMWlPV1ZwWTFwbmJXWnJaRlZvWTJacllqVm9lbWhGWVVWa2VHRk9aVlZuVldSclpsWmpWR051WTA1ak1HZFVZVVJtWjJKSlpVcG5NV1k0YUZwblEyZDZhRUpuVm1obVpWRm9PR1ZrWkU1aGVtRTBhRlJvWm1KQlpscG1iR2RGWXpGbVFXWXhZVlJvYkdnNVpIaG5XR1F5WkZab2EyUmhhR3hoVFdGYWFFVm5NMmhCWWt4bFYyUldZVmxuVTJObFlXdGlaR05yWjFGalYyZzFaRXRvVFdKSWFHTmlTMkpWWVVSa1ZXRldaVmhtYTJOT1ptWm5RbUpFWlhOa2FtRkhZVU5sV1dOcGFFSmlRMmhLWlVWbFIyTm9ZV2RpT1dOQlp6QmhUbUZqWjBWb1JXSlJhR3RuUjJoM1pEUm5VV1pNWkdsaVRXVnVaa2hpV0dKMFlWWmtWMlZTWVVKaFRXZFVhRlpvUm1kS1pFWmpWV2cxWjNCa1pHRkNaR2hrZDJkUmFGaGtVbU5TWkVGa2EyRTFaRFJrUldkWFoyUm9UV2hVWkRKalZtaDNaa2RvVjJjNFpHeG9VV0pXWkVsaVZXUmpZMVZrV1dkVVptVm9SbU5PWVZCaldtaEhZWEJpVkdWSFpWSmpjR0poWjBObU1XTnNZbGRsUldkdVpYQm1TR0ZhWVVWalJtaDFZbE5uYldSU1pqVmxVMlI0YUZGa01HaE9ZWGhvTVdOT2FFZGxWbVJhWmpCaVltRnVZMXBoZW1GaVpEQmxXbU51WjBabWFHaEtZazFrWkdKVlkyOWtVR05WWkdka1kyWkdaVTVsWjJkblprNW5TV05uWVVGbGRtVlFabFZpWkdRMlkxcG1TR1pOWVZGaVZHWkZaREZtVW1aVFpGSmtWbVpQWm1GaldHWlJabGxpWTJaRlkwWmpNR2RWWTFWa2NHVlBaV1JpVW1oR2FIcGhVbWhDWkdoaU1taE5aSGhsTkdNeFoxaGxVV2RuWW1SbFZXSkVZbEZsYm1WU1p6TmpRV05qWVZSbk1tUTVabkZrVVdWb1prRm9WR2hpWmtKbFpHaGFZMVJsYUdKMFl6WmhSMll5WWxGb1NXSlpaa0ZsYTJKelprOW9RbUZzWmpObVVHTnNaR3hqV1dkTVpFVm9NV05sWkU5bk1tSmtZVFpoVjJaWFlqbGlSMlZhWjNobldXaFRaVlJvU0dkV1owdGpSV1pHWmtwb1JXWkRaak5uUW1GaFkxRmtiV1k1Wm1saVdtRnRZbXRtVldWbGFHZG5aR1U1YUZWbWQyVlJZMDFvUVdkNWFIQmhZV05EWTJsa2QyaFdhRlJoU0dSblpFOWpaR1JHWjNCb1MyZFlZbGhqZDJaU1ptSm9NV2hDWWxKbldXaElZV3hqVjJWTFpVRmpPR0pwWjFobVJtWmpZelZtUW1Zd1pFVmtZbWhJWVVGbGMyTm9Za05vZDJoallsSm1XR1pJWWtGbFFXTlhZVlZrVVdaaVpGVm9SV2RrWVd0bFVXTlhZalZpUzJSYWFFaG9iR0pNWlVabVNHVkZZV1JrU0dWVllUQmhXbWRXWlc1aFVtTjFaMlJrYm1ad1pFWmhVbVp0WTJOb1YyRkZZMnRvZUdneFpGTmthR2RDWjFOaFVtRkJZWFJrZDJSWFltdGxTbU4yWVZsbWJtaDRaM0JqVm1ZellYZGpTV05KWWxab09HSkNZa3huZUdoblkyUm5VbU5yWWxwaVJHRmtZa0pqYUdWM1kxRmxXR1ZTWTFKbFUyUnJZalZsTVdKRllsaGtUbVJOWVZWb1dHTm9aSGRsVm1GdVoxRm5VR0ZoWmpGblNXUmpaRTlqUkdneFltTmpaV2hHWkdoblVHTmtZMUprWkdkVVprSm1VV1k1YUhka1JXSXhhRUpsVjJWVVpXNWpiMlpQWmtobWQyTTBaRlJqVW1SclpEVmpOV1ZUWkhobVVtaDRaVWhtVW1ReFlrNWpSMlpXWkZwaE1HUmlabTVvV21SNlpXSmlNR1ZhWW01aFJtSm9aa3BvVFdWa1pWVm9TbUphWlV0blVXUnpaa3htWldFeFpYQmhVbVpGWlcxblNtRTJaV1JqVW1aU1lYRm1VbWd6Wms1bFRXUlVaRUZuVVdkeFprSmphR2hXWVVaaFlXRlhabHBrYkdKWFptdGxSbVl3WWxWaVZXUndaazlsWkdKU1kwWmtlbVJVWkVaaVJtYzBhR05uUm1oYVpUQm5SR1l5WW5SbVUyUkdZMGhuYUdaTFlrOW1XR05vWkZSb1ZHY3laRkpqY1doVllYaG9hMlJVWW1Oa1FXUjBabHBsVm1Kb1pFcGtObVpTWnpKbFVXTldhRmxuUVdaelpXZGxVR2hWWjA1aFdHWm1aREZvUW1oSmFFRm5WV0l3YUdabFNtVkRaRWxoZG1SbFlucG9jR2RRWm1Kb2FHTm9hRUZsUVdkNVlrVmxSMmRIWlVWaFRtaFVZMEZoYm1FMFoxaGxSbUo1WlUxaU1tTk1ZM3BsYkdoWlowdGxNR0ZaWlRGaFIyTlZaRUpvYm1WVloxVmphMlZXYUZSb2JXWnNZekJuUjJkSVpVSmpRbVprWWtabVJtZExZbFJvYm1OVllWSmxZMll3WTFGbVpXRmxaRWhuZEdSTVpXUm5RbVYwWTJsbFUyZFVaelZqZUdaU1pXaGhUbVUwYUZWb01HYzVaV3RtWVdSc1lrMWlXbUZGWVRObFFtWk9aRVpoWjJOUlpWTmlZMmRzWVhoamEyTkRaMWRtTldOVllscGlSR0phWjFGa1JtSklZMmRuTTJSSVoxVmhNR2hhWkZaaGJtUlNZM1ZrWkdGdWFFNW1kbVZTYUcxbVkyaFhaMFZsYTJkM1l6Sm5VbVpHWWxsb1FXaERaVEJuV1dKVFlrVmllR1JaWnpobllXWnBZVTVvY0dkRFlUTmhTV1JJYUdabVZtZE5aRVZoUkdkQlpFMW9jV1JYYUdkb2IyWnpZMFpoVldkNGFEUm9SR2h1WXpsbVlXSlJaVEJuTldWMlowVm1WR1J2WmpOa1NHWnVaVTVpTjJGTFpUTm5aMk5RWldWaU1XTnphRmxrVjJnd1lWbGxWR2RsWlVaa1RtTlFabHBqUjJkd1pGUmpSMlZTWTA1a2QyUkRhREZuYkdaWFpVVmtibVZ2WVZSaVlXUm5ZMEZvY1dkRVpXMWpkMlUyWmxKalZtaHJZV3RvVldKVmFHdG5SV0pUWWxKbWIyVjBaRnBrYW1Sd1l6Wm5XbUZyWW1kb01XSlhZbFZtV1dWQllXWmxWbWh6WWtKaFYyRXdhSEJoUjJOS1pGSm5XV0pYWkVwbGFtWkpabkZsVFdoQ1kzZGphR1JTWWpKb1oyZzJZVlJrUldVeFlsSmlVMk5TWmxabVQySmhabGhoVVdSWloyTm5SV2RHWlRCa1FXRjNhRGhoWVdoSllrVm5UV1k1WVZSbVJtaHNabE5vWTJSR1oxcG1NR0ZFYURKaWRHSlRZMFpoU0dGR1lVZGlSV1V6YUdoa1ZHVlVaakptVW1ocFprRmpVbVJyWlU5bFkySkdaamxqV0doR1oxWmpOR014WTBOalUyRkdZVXBuV21Vd1psRmlNMmROWmxGaVNtUlRaMHBrVjJVNVoxVm5RMlpzWTBWb1EySm1Za2hpT1dkcVoyVmhiV0phWkV0aVZHWlNaRmxtVTJkVVowaG9WbWhMWVVWaFJtUktZMFZvUTJnelpFSm1ZV0pSWm0xbk9XSnBZazFoYldka1owMWxVR1ZTWm5oaU4yRlJZbXRoVm1WRVpFaG5RbWg0WmxwbFIySnBZMEZpYTJWV1lrTmtiR0ZLWms1blZtSm9ZVWRuV21OSVpWVm1VbVpqWkRCbmVHZFNZV1ZvU0dSQ1pWZG1aR1JCYURsaWNtWlZabWhvVW1GNFlWUmxhMmhHWlRSalZHRnJaVGhsZDJOYVpVSm1RbVJXWmxoaFJHWTFZVTlrVldoV1pUaGhZMk5MWVZGbk9HSjBaVUpoZW1odll6UmtUR1JVWnpSa1JHSlJaMGhoYTJWTlprUmlhMk5SWTFGb1YyZHNZelZsZFdWa1pHNWlUbU4yWlZKaWJXZGphRmRuUldGclpuaGtNV1ZUWW1obVFtVlRaVkpuUm1VNWFDdGxRV1ZuWlRCbk9XUmhZMnBvVW1ObllrZGlhbVk0Wm1KblVHZ3daRkZpUm1WSVlWSmtNR0ZSYUVoa1VtZDBZbWRvWldWRVpFcGlkMlJSWlZobFVtZFNZVk5sYTJVMVpURmhSV1JZWWs1bFRXZFZZVmhqYUdkM1pWWmxibWQ0WTJSbllXRXdZVGhvVldSS1pWVm5hR1JSWms1blFtaDNaMEpqU1dSWFowcGtZV1JHWWpCb1FXVTBaVkZrYUdjNFprTmhXV1ZFYUUxaVFXWk1ZMEpsVm1KdFoxZGlNMlZLWm5kbFVXaG9ZV2hsWW1WSVpWSmtNV2hPWkVka1ZtaGFaekJsWW1odVpWcGtlbVZpWnpCaFdtVnVaMFpqYUdKSlpsbG1aV1o0WWtwaFptRkJaVVZoZUdWYVoyVmhWbVphWTI5b1ltZ3lZVXBsYldKaFlsSmtVbU41WkZSbGJtaE5abEZoVkdoRllqRm5VbUpUWjFKalZXVmhZMGxqVkdNeFoweG1abWRuWm1kb05tRkhZMEppTldoSFprbGlWbUpyWXpaalNHWXhZamhrY21KT1lWSmhUV1IzWVVKbWJXSmtaalJrUm1kSVpFWm5SMk5GWmpOa2FHTlVabFJuTW1SU2FIRmxWV1o0WTJ0bFZHUmpZVUZuYzJoT1ltWm1RbVZLWXpablVtTXlhRkpsUW1oaVkydGljR2hyWVdWb1ZXWnpaVlZoWTJKU2FGRmhSMkphWlhoa2JHZFhhR1JpUjJjMVl6SmxZMkV5WlRsblIyaGFaSGhqV21WUVpWSmhXR1pzWldka1JXaEdaa3BsUldGRFl6TmlRbVZoWmxGamJXWTVhR2xoV21WdFpFWmtRV2htWkVGamMyTnlZbEZuUVdkTlkyWmlRbVJTWkc5bVZtZFZZekprYTJNM1lrVmpWMmgwWVhKaVpHWkdaRVpvUzJWVVoyNW5WV1pTWTB4bGEyVkpZMU5uVDJGVVpYZG9ZV0ZtWVVaak1XSnVaVlZoYkdReFlqVm1WbU5vWm5Cb01tRk5ZVkpoYjJkcFlreGxRbWhhWlV4b1IyTnVZMnRpVVdWallqRmpXV2hUWm1WaGEyTmphRFZrVkdGVlpGSmpTMlphWWtobWJHUk1hRlZpYVdaU1pGUmtXR2RvWm14aFVXSkhaMVJuY0doMVkyWmhhV05rWjIxbVVtSnFZWGRrT0dORllXdGhlR1l4WlZOa2FHSkNaVk5oUldGcllXOW5hV2RYWTJob1FtZ3dabE5sUjJGYVpuQm9SbVpJWkVwaVQySmpZakJoU21GTlpsVmpSbUpHWjBKaFZXaDRZM05uYm1aT1l6Qm5kMlExWkVSaGFtSndaMUptVVdKclltUmpNV2RUWTJ4bWJHTk5hRlZrV0dOb1kzZGpWbUZ1WWxGb1VHRmhaM2RuUW1GU1prcGhVbUpPWlVKbVRtSnNZMDFuWW1aTVowTmpUV1ZCWVVGamFtaHNabmRuUTJVeFlXeGtWMk5GWjI1amIyUmhZbUppVldKc1oyNWtWV0pWWnpWaU5XTlRZM2hvVW1GNFpFaGpVbVV3WWxwaVUySjNaemxoTUdaT1pGWmxlR1Y2Wm1Kb01HTmFaMjVpUm1kb1pVcGlUV0prYUZKa1oyTlJaRlJrTUdGU1lscG9ZMmRCWlZsalpXUmlZbmRvVVdONlowcGhNV2hqWjIxb1FtVjZhSGhqWldOU1lVVm1PR2RFWjBSaFJXaEZaMkpqVDJGNlpHOWtXV1JLWVVGaWEyYzVaMEZpYTJKb1kwaG5abVJTWTJoa2VtRkZhRUZuTVdjMFptVm1SV0ZrWVRSb1JHaDVZelJqUldaV1oxUmhNV1pRWlVkbk0yUnZZVWhrUW1SNVpEQmhOV1JWWTFKalFXUkpZMWRrWjJGMFkxcGtWbVpvWjBwbk5tVlNhSHBpYkdoQ1preGhVV2R6WjNkb1QyaG5hRTFoVldabFlWWmhVV1pWWjFSa1ZXVktZVGhsWkdkSGFEVmxNbU5qWWpKbE9XRkhZbHBuZUdoWmFGRm9RV2Q2WldOa1FXRldabEpoUldSUlpVTmtXR1ZDWjBoaVdHRXlaVGhrTW1oUVlucGxiR1JTWkZCaFVXTm9ZWHBqVW1GM1lsVmhSR1JHWmxGb1dtWkRhRlJtYldRNVkzbG5SMlJJWkdkaVZHVmtaMFZtZUdWTFlrZGlWR2Q0WVdaa1RtWjNaRTFtUjJWalpsZG9kR2M0WjJSb1FXRTVaSEppVldWb1lWSm9lR0pIWVhwamJHZzBZbFZrTUdZNWFHdG1ZV0pzWWs1aFRtSklabFJtVm1oVVlVTm9VbVZzWkVGblRHaG9ZMUpuYTJKWVpFZGxOR1JaWW1aa01XTk9aMHhtUm1oSVlrVmpaR05SYUVWb1JXZDZabFppYm1aU2FIVmxaR2RxWjFWaU5tVkRZa05qVW1ORFpWZGtkMmhOWnpkb1UySm9aMmRrUjJOVFpVRm5jMlJwWWxWbk1HUkphREJrVTJGSFpWcGhjR0pHWTBoaVNtVlBZbU5vZUdOSloxcGtTR1pvWTFKaVNtVlNZMmhpYjJjM1oxQm9WbUZ6Wld0alVXUXlaVGxoTjJKVGFHdGhOV1V4WkVWbFdHZE9aMDFsUm1ONVp6QmxLMlJHWlZObVFtWkhaMHBuUW1KM1lsVmpUMlJGWVRWbVNHTmpabFpoVFdWVlpGUm5iV2h3WjFSaFIyWlNaRTVsZDJoRFp6Rm1iR2hYWlZKaVJHaHpaVlprV21WQ1kwNWlkV2RXWlRKblVXWjBZbEpqVm1WblpUQm1WV2N4Wlc5a1dtZFZaRlZtTVdkbFlXSmtibUZhWVhwaVltRXdabHBqYm1WR1oyaGlTV2hHWjAxak1HZHZZVmxrUVdGRlpsRm9UMkZqWmtWak5XUkRZV05pVjJGS2FESmtXV0pFWnpWbWVXUlVaVzVpVFdkUlkxUm5SV0l4WVZKaFUyWlNhRlpvVDJSUVkxUm5lR1pMWmxCbGVHVmFaakJrU0dGM2FEaGpXbVZrWlZobFVXSm9ZMGhsYUdnMGFIRmlaV05HYUZGbVpHaFJaRlJvTUdaVWFGZGhSR05uWmtObVJXSjVZbk5tU0dKSVpsTmlNR0ZyWVVablFtTmpZbFJvU0dSRlpUUmhXR2RGYUZWbldXaDVabEpoZVdWcllWVmtVR1JTWkRWa2EyWlBaM2RtTkdOVlpFMW5RbVF4WkZGb1IyRkdZMVZvUTJWUVlWUm1OR1kyWjA1bGJXSTRaa3BvU1dWU1kxbGhSMmRVWVc1amVHUlNZVTloYkdOS1pFVmxRMk16WVVKbllXUlJhRzFuT1dOcFpVNWlRMk40WWtGaFNtTjRhSGRoT1dWRllrVmtOV05SWWxWbE1HWnJhRWxvVldZellWSmtNR1JVWmtGbWMySlVZbVJqUm1WNFowdGlXR1JCWW1kaVVtZGlaMFZpZUdWRVltVmxSMlZ3WmxkaVpHWm9ZMHBvY0dWVloyZG9iR056WlZkbGVHRk5ZM05tUzJkQ1p6RmthMmhhWWpGaFRXTkpaMkpvYm1kQlpGVm5WMmRWWW1Ob1UySlpaMFZsWkdVd1lsZGlhMk5TWmt0bldtWklhR3hvVEdaR1pVaGlSbWRCWWs1a01HWXdabHBqVm1SdVpsSm9kV2RrWkdwbFZXZzJZVU5rUTJSU1owTm1WMk4zWkUxb04yUlRabXhuVm1SaFpVVmlRV1JLWkhkaVFXSlhZV2hrZG1WWlpXMW5XbVp3WmtaaFNHRktZVTlrWTJnd1lVbGlTbWRIWlZGaFVXZGlZMWRoTUdZMVpHaGtXbWQ0WW1obE5tWlJhRk5qUW1SbWFFSm9aMkZ6WXpkalZtaHBabU5qUldoWFpFaG1hR0l2YUZaa2JXTkJZMUJrV21ac1pFcG9aR2hsWTFKa1NXUmhhRmxrTTJoc1psQmpXbVJIWlhCb1ZHUkhaVkprVFdKMFowbGpWbUZzWmxka1JXUnVaM0JvU0daYVowRmlZMlEzWlVKalEyWmpZM1JpUVdWc2FITm1MMlpJWlZabVNtSkdaVlJpVm1ZNVpEQmtUbUpXYUhobWVtZGlhREJtV21GdWFFWmxhR2RLWkUxb1pHZFNaM2huVW1GQlpVVm5VbWRhWVdabFNHaENZVU5vWW1FeVprcG1iV1JoWTFKbVVtZDVhRlJrYm1STllsRmlRMlpWWjBaak4ySlRabEpuVm1OUGFHRm1XR1JSWVZsbVkyaEZZa1pqTUdaVllWRm5WbVJEWmxoamVHVkdZWHBvVkdOR1pFWm1OR2hqWkVabVdtY3dZa1JvTW1oeloyRm5SMlZHWTNSbFIySkZZVE5qYUdkVVpsUmtNbVJTWlhGbFZXRjRhR3RuVkdWUVptZGlaR1Y2WTFaaGFHVkthRFpqVW1neVkxSmtRbUppWjJ0a2NHUnJaV1ZrVW1GbllWVmpZbU5DWmpGaVNtSlJZVEZtVldOVVprOW9hV2RyWTJsblQyY3paRkpuYzJoYVluaG9XV2RUWkZSaVNHVldhRXRqUldkR1pFcG9UV1JSWWpOa1FtTklhRkZpYVdkYWFIRmpUV1p0WWtGaFpHTm1aV3RrTldnM1lWaGlhMlY0WlZGaVZXaFJaMlJtVVdkSFoxZGxhMlY1WkVWaFNHRm9aMU5oWkdKR1puUmxTMlZJWlZob2QySlNaR1prUldWNFlVWmhaV2hJYURGalYyRlFaRUZsV21OcFpsaG1hR05TWnpWblFXTjRaazVoYkdKVlpuZGpaR1JyWjJSaVJtaE5Za3BqUldFeWFEaGtUR2hEWTJ4aldXUm1aMlZsYkdKT1lXdGlWMkl5WmpSaVdtSmlabGRtU21Gb1owWm5TR1pGWW1SalNHSlZZekJtV21oV1ltNWxVV2MwWkU1bWVXRkdZWFpsUW1FeVltTmpUR1JGWm14aGVHWjFaRmxqUW1SQ1kxTmhVbWhCWTNSb2QySlhZMnRvU21oMllrcG5RMmhyWWpkb1JtVklaMjlrWTJaalkzZGxNV1JOWVZoalZXUndZVXBvVldaRllUVm5NMlZrWmtWb2NHTnlZVkZpVTJGYVoxSmtVV0ZXWWs1aE1XZENZVmhtY0dadFkxVm1XR1pvWlhkaFZtRnVZMUZtVUdkaFp6RmlTV1JWWW1OalZXYzFhR05sWldORll6Vm1iR05hWTBka2NHZFVhRWRtVW1oT2FIZGtRMll4WTJ4alYyTkZabTVqY0daSVkySmpRbUpSWTFaaFNHSnRZMjlvTm1GQlpURmpWV1pxWkdaamJHRkpaRXBvV0dSRVoyTmtaMkphWW1sbVVtUTJaa1ZqYTJoYVpEZG5RMkZvWVVwblpHVmlZbFZoVFdkUlkwUm9iV1kwWTB4alkyVkdabkJqUTJGaVpUSm5TbVp0WldGbVVtRlNZWGxrVkdadVpFMW9XV05IWWxSaFdXTkdaVkpuTVdSWlprZGtTMmhEWmxwb04yWlFZM2RpVldSNFpFMWhRbWcxWVVkb1NtUjRZa1prTkdGVVlVVm1RbUo0WkVSaFZtWmFaVzlqUldReVpIUm9SR2hDWW01amFHZEhZbFJsTVdaS1pGUmtWR0V5WlZKb2NXWlZZbmhvYTJkVVltTmpRV0YwWlZwaVZtSm9hRXBuZVdWRlptaGpPR1ZXWjFsblFXZHJhSE5qVDJoQ1lteGxNMlJRWVd4bWJHWlpaRXhoUldReFltVmtTbVp0WVRWaE9XUmpZek5tTVdkUVkwZGlhR0paWlU5a1ZXWklZbFpuWTJkSFlWWmtTV05aYUVsaFdHWkNhR0ZpVVdadFlqbGthV05hWW0xaWEyVlZabU5rYTJVMWFIcGlSV2hDWm10bU1taENZbFZrWkdkWFprSmlhV0ZuWlcxblpXSjZaamhoUm1STlpWUm1RV0psWlZKaGFXTmpZbEpsWldWRlpIaGlRMkZqWkZGaE1XTm1ZV1ZvUTJGV1luSmpWV2RvWTFKbWVHVlNaV2hqVG1RMFlWVm5NR1k1WW10aFlXRnNaazFvVW1GWVpsRmpkR0pMWTFWaWJHY3hZblptWldGc2FIQm5hMkpUWVZOaVJtWkxZV1ZoYldKa1preG1RbVZYYUdOaFZXaElaVlZsYzJkYVpGSmlSMkpHWXpkbVptTXpaRGxpUm1OU1pHMWtZMk5YWjBWamEySjRZVEZuVTJOb1pVSmtVMlpTWmtGaWRHTjNaVlZoWjJSM1psVmtTV1V5WkRGaGFXVmhZVmhrU21GVVptTmtlR1JuWjBSaVZHSlZZemxqV0dWR1pGWm1XbWRuWldSbVFtRTFaWGRoVldVeVpVWm9SV0ZSWmpCaVNtaG1aRVZrV0dKT1prMWtWV05ZWVdob2QySldZVzVoVVdaUVlXRmtNV1JKWjFWa1pXWlJaMmhuYjJGUGFGWmlhR1JGWjBkaFYyUndZMDlvUjJWUllVWmliR0pJYUd4aGJHUlJaMFZqYW1oV1pVOWhabU15YUhSbGRXWlRZMjFqVW1NMVoxTm1lR0pTWjNoalNHSlZZVGhvU1daVVpsRmlUV2h0WjBsbFNHWmFaVGRqVW1kVlpWcGhibVJHWW1obFNtUk5hR1JvVldadlpGRm5WV0pyWWxGaldtTmpZa1ZoWkdkbVlXTmhiV1pKWlhWalVXSjRaRkprZVdOVVpXNWtUV2RSWVZSbFJXZ3haMUptVTJGU1lsWmlUMlJoWlZkamMyaFpaR1ZtUldkcmFEZGhWV05XYUdSaFQyZG1hRlZpVVdOSmFFZG5SbUU0YURkbVQyRkNhR05qYldWaVlVTmpVV1pYWlZWaFVtWkJZVk5vUjJSNVpYQm9ZV1pOWW0xb1VtVXlabFJqZUdocmFFSmhaV1pSWlhOaFJtSldaV2hpYjJoMlkxQmxSR0pDWjFCblRHSlJZVWxpYkdGTGFIbG9hR0ZpYUU1bVZtUm9ZamhtUjJWU2FFVmpSV05rWVVkaVZtTXlZbGxrYldSWllqZG1XbU4zWldkaVRXSlVhRWRsUm1oRVpFZGtWbWcxWW5WbVEyVXphRUprWVdSUlptMWhPV1pwWkZwaWJXVnJhRlZpWTJoclp6VmplbU5GWkVWa2VHVkdhRWhrZW1GS1kxVm1VbWRYWWtsaVNtVkhaRWRpTVdaQ2FGcGxhMkZTWldaaFZHVnVZMDFrVW1kUVpFVmlWbUZaWlZWa2JtWkNhRmRsWkdGQllqbGxjbVZWWm1obFVtVjRaRkppYUdKT1pUUmtWV1l4Wmxaa2EyVmxZVEZvVFdkRlprUmliV0V3Wmt4aVJXSldhRmxqVldSbVowZGlNV0ZyWkZGbVYyWTFZMHRuV21aSVoyeG1UR1ZHYUVoa1JXaGtaVWhtVldJd1lWcGtWbVZ1YUhobmJXTlBZMWhrVG1SNWFHSm9SMk5qWkZkbVJXaHJZbmhtTVdKVFkyaGxRbVZUWkZKaVFXSjBZbmRvVjJGcmFFcGxkbWRaWVcxbVdtSm9ZMUZsVVdGcloyRmhabWhXWlUxa1JXWkVaMEZpVFdWeFpWZG9aMkZ2YUhOalJtVlZaM2hvTkdSRlp6Tm5NR1J6YUZOaWJHWktaWEJoUldaWFowcG5ZMlpYWlVoa1oyZHpZV1psU0dKUlkxQm5ZV0V4YUVsbVZXSmpZVlZuV1dWVWFHVmtSbUZPWkZCaFdtRkhaM0JqVkdkSFpGSmlUbWMwWmxobGFXaEpZa05tU0dSRVltdG1VR1pLWWxKb1RXaE9hRUpuVTJWQlpqaGlTMkpyWVVKa05XTlVaSGhsTVdSSFprZG9WV1prWXpsbFJXZ3paRnBpZG1Salp6Qm5XbU42WTBoaWVHZEphRkZpV0dVd1lXOWhVV2RWWkd0bVVXVk1aR05oUm1kd1pVTmxZbVl5WWtwa2JXUmhabEptVW1ONVoxUmhibVZOWVZsaFIyUlVabGxtUm1GU1pURm1XV1JIWTB0blEyaGFaemRtVUdGM1lsVm1lR1ZOWlVKb05XWkhaVXBrZUdSR1pUUm1WR1ZGWms1bmVHVkVZVlpuV21WeFpFVmtWMlIwWTBGa1NHSllZMmhtUzJKUFpGaGphR2RVYUZSbU1tVlNabkZrVldONFkydG1WR0ZqYUVGbGRHWmFZVlpvYUdWS1lUWmxWR2g1WTI5bU5taE1hREJoUm1WMlprSm5SV056YUVwblkyWlNZbFptVTJSVVpsRmpaR1pKWW1SalNHSmFaaTlpWTJVeVlteGhSMkprWVZGb1RXZElaRkpuV0dKc2FHZGhSV2hHWmtwaVJXZERaak5uUW1GaFpGRmpiV0U1YUdsa1dtRnRhR3RtVldKaloydG1OV1EzYUZobWFtVmpaMDFsVjJGcllVcG1iMmRVWjI1b1VtUXdZa05pYldKV1lsVm9aR2hHWkdSalMyTkJaMWhqZDJaWlpHWmlNbVZhWkZKa1pXUklaVUprVjJSa1pVRmxPV1p5WWxWbmFHaFNhSGhrUTJoRVpHeG9OR1JWWWpCa09XWnJZbUZoYkdoTllscG1SV2N6WTJ0alVXSmphREZvV1daVFoyVmhhMmRrWld0blVXSlVZazVvWjJKYVpVaG5iR0pNWlVablNHRkZaR1JpVjJGNFptaG9XR1ZHWVZOaVFXSnVZazlqVkdVeFpYWm1SR2h0WlRsblEyTkhaekJvZDJkMVlsbGhRbWhDWVZOaVVtUkJaM1JuZDJoWFpHdGtTbUoyWkUxalEyRk5hRGxrVVdGVFpVRm9RV0ZqYUhoaGFHUnRZbFJpVm1OR1owcGtSbWhWWmpWaWNHVmtZa0psYUdKM1kxRm9WR2hWWjNGa1VXSm9ZM0JrTVdGRVpUSmxNV2ROWTFGa1IyUkNZVFZvVm1SdVlrbGhVR0ptWWxWaFJtaHdhR05tVldNd1pGUm1UMlJUWjJoaVNHaE5ZVWRvY0doT2FFSmplR0ZPWjJob1IyZFdaRUpqVjJWR1lraGtjR05TWm1Sa2VtWjRaSFZtVVdaWFpWRmtOR2ROWTBKbGQyUnNaa2hqVVdWT1pWUmxSMkZWWWtKbk9XWmlaMjVvUW1ONloyVm5WbUpWWkdGblJtRm9aR3hpVFdOT1lVUmhSV05IWVZGa1ZXTlJZMDVpWTJGQlpEUm1MMlZTWkZkb1NtRnRaV0ZvVW1kU1lubGtWR1Z1WkUxa1VXSlNaMVpsV21JM1pWTmhVbU5XWWs5aVlXTllZbEZqV1dkTVpsZGxkR1l3WjFWalZXRndaVTlsWkdWU1lVVm1NV2RIWkZKbk9HZzNaRXBoUW1jNFpUZG5VV0ZYWW5OblkyRklaa05sVm1STFkwVm5lV0p3YUdabFZHVjVaakZuYW1GVlpqQmtTV1kxWW1ObVFXWjBabHBrVm1Sb1pFcG9ObU5TYURKb1VXUklZVWxpVW1Gb1ltdG5ZMmRTYURGaVZtVkpZM2hqTVdGWmFGRm5VbU5yWTFwalpHSklaazVoTW1aRFpVSm5TbU5MWkZwbU1XVm5abE5vVldkWVpsVm1XV0ZEWnpGa1NXTk9aVU5qTW1ZMVpHRm1SR1pJWWxKaGFXSkxaVWRoYTJkbVpHSm1NR00xWm1kbVIySlhZbHBvVG1KVmFGVmhhMmhXWmxSbmJXZHNaVEJqUjJSSWFFSmpRbVZtWlVKbVVtVkxZbFZvTTJWVlpscG5TbWQ2WW1OalptTkNZbGhuUW1WTFpXRm9RV1U1WlRaa1VtUkNaREZtZUdGVVpGSmpUbVIzWkVKbmVtUlJhSEZqWVdGc1pHZGxXbVJCYUdkbk1HaE1aMUpuVldodlpsTm5XV0pyYURWbGEyZFRZbTFtTkdGbFkwaG5lbUZrYUV4aVNHSXpaRVZrVUdoWlkwVmpVV1ZXWjFabmFtaDBaR2RoU21WcFlWbGhPR1pFWVcxa09XZGxZVWRtWjJoc1p6aG5VV2gzWkhSbk5HSlNZVUZpZEdkM1psZG5hMlpLWm5abldXZHRhRmxrTjJaVllWTmhXV05pWTBsaFZtZzFZMDFrUVdKc1pEaGpSR1pYWW1kb1kyaHVaR1prUW1Sd1pubGhVMmRIWnpsbE4yZFRaMnRrTldVeFprVm5XR1ZPYUUxalJHWkdZVXBoZDJaV1pXNWxVV05RWldGb01XVktaMU5vU21kQloyaGtVV2RNWlVKb2IyZEJZVXRvYldSdlkwRmxSV05WWTJSa05XSkRhSGRsU21ZNFowVm9ibWh3WWtoaVdtaEZaa1pvZFdoVFlXMWlVV1F2WlVKblJXaGFaSGhvUm1aVVptUmhUbU5IWkZabFdtSXdaR0psYm1kYVpucGxZbUV3WkZwaGJtaFJaRVpqVFdabFptUmlVbVJuWldOalpXaEZZVkZrVEdoallrWm9jR05EWm1KbU1tSktZVzFvWVdGU1lsSmplV0ZVWldwbGIyTlJaVlZqVldNd1owWmlVbWd4Wm10b1RHZEtabnBpVG1OTlprOWtSV0l4WjJWalZXZFZhSEJuVDJKa1kxSm1SbVY2WjFSblJtZEdaRFJuWTJGR1pWcGpNR2hUWlcxbmRHaFFZMFprUkdSb1owZG9SbVZ1WW1oblFXWlJhREJuTldGeGFGVmxlR2RyWVZSbVkySkJhSFJoV21OV1lXaGlTbVUyWVZKbE1tZFJaVTloWW1kc2FHUmxhMkpsWVRCbmEyUlphRmRoZUdRd1kyUmlWR2hTWTJ4aFYyUmthRWRsTldneVoyTmlNbVk1WjBkbVdtWXhZalJrVTJWVllsaGtWV1Y0YUdKaFZtTTFZWFZvUTJJelowSmtZV1pSWW0xbE9XVnBaRnBpYldkclpsVmxZMmRyWXpWaGVtSlJaakJuZUdSUlpWVmlWbVJuWmtSaFdHZFlaRVpqYm1OR1pVWmpjR1ZDWTJSbFJtaEdZa3RpVkdodVpWVmpVbUZqWWpCa2VHUlNaV1ZqU0dSQlkwUmtaR05DWTBwamNtTlJZbWhpYUdOaVlWSm1hR1pPWnpSa1ZXUXdaamxpYTJOaFlXeGhUV05hYUVWaU0yZEJaa3huU0dVeFpWbG1VR2hsWTJkbU5XVnJZbFJuUjJnMFoxQmxabVV4YUU1a1RHVkdZVWhoUldWa1pFaGpWV2N3WTFwaFZtUnVhRkppZFdaTlpFaG9UbUY0WWxKa2FtSkpZazVuVDJORlluaGtNV05UWldob1FtSlRZMUptUVdaMFozZGxWMlZyWkVsaE5tTlpZVzFvTVdNd2FFWm5RMkZHWVd0bFkySjRZa0psVFdaVVlWWmpSbVJLWVVaalZXUTFZbWRpV0dGb2FHaGtkMk5SWmxoaVVtaFNaVk5rYTJJMVpqRm5SV2hZYUUxalJXWllaSGxrWjJOc2FFSmpWR0YzYUVoa1NtZFdaWEJsUVdGbVpGVm9XbWhIWm1SbVJtWk5aMkZsV21aSFprWmpWR05UWldoaVRtTjFZVU5qZUdRNVpWZGtSR1pZWlc5bVFtTmFaVVpqZEdKMWFFaG1NbUpTWVhsaFUyVXdhR1JoTkdWR2FFRm9XbU51WVVkaFZtSmFZVEJqWW1OdVlscG1lbUZpWVRCbFdXWXhZMVZrTUdaWlkxcGtTbVYzWkZGb1VXWlhZVzFoTkdWTVptTmlSbWh3WlVObVltVXlhRXBtYldWaFpGSmtVbUY1WlZoa00yVk5aMDVoVldoV1pFSmhVbUZFWkVSbU9XWlBaMkZrV0dkUlpsbG9ZMkpGWjBab01HWlZabFZsY0doUFltUm1VbUZHWVhOblZHVkdZMnhqZDJGSloyeG5XbUZ3YUVSamVtTTRZM0JvV0dWWVpVWmxUR0ZGWnpKbWEyUjFZMUpuYldWb1lVRm9WV1Y0WVd0alZHVmpZMEZtZEdGYVlsWmthR2RLWXpablVtUXlZVkppUW1aaVoydG9jR0Z6WWs1bmEyTnpaMlppWW1OQ1lURm1ZMkpPWm10bmRHSlhaMkZuYm1oQ2FESmpXV1JTWjBwbFVHTmhaM3BpZDJGVFkxUmxTR1ZXWWt0blJXVkdaMHBsUldGRGFETmxRbWRoWVZGbmJXSTVabWxvV21odFprWmpZbU5qWjJ0blZtVjFZVVZvUVdjd1pESmlWMlJTWTNOblZtSlZaVzVtVm1Zd1pVUm9TR2RzWmtKa1kyZHNZVVpuWTJOWVkxRmpaMlpaWVdaak1taGFabEptWldSSVprSm5WMmRrWlVGb09XUnlZVlZtYUdGU1luaG1VbWhvWVU1a05HaFZaREJtWTJGeVltRmpiR1ZuWkVWb1JXVXpZMGxpVjJKU1pVWmpVV1ZpYUdOaE1tY3hZbXRsVVdWWFpEVmlTMkphWTBoaGJHTk1aa1poU0dkRmFHUm1TR1JWWmpCbFJHVldaRzFvV21aMVkyRmpNbVExWlhsblVtVnBaa2xsVjJWR1pVVmljR1ptWTFObGFHaENaRk5pVW1GQlkzUmhkMlpYWVd0aVNtSjJhRmxvYldKYVozQmtSbVZJWWtwalIyTmxZakJoU21WTllWVm9SbVZHWWtKbFVXVlVabFZqWjJWa1pVSmlWbVIzWlZWa2QyRnNZbEpsVm1Wc1prcG5NV1ZEWVZoa2NHRk5ZbGRoYm1WblkydGlUR0pVWkRCaVVHWmFZV3hsU1dGR2FFUmhSV0U0WVdabFZXSnNZVTVpVUdSYVpVZG1jR1JVWVVkblVtVk9abmRoUTJFeFoyeGpWMmRGWkc1bWNHTklhR0puUVdRMWFIVmhVV2RZWm14bU5XUkRaVzFtT0dGcVlraGtVV2RPWTFSaFIyWlZaMlJsYTJWRlpUTmhPV1V2WlZKaFZXSmFaVzVvUm1Ob1lrcG1UV2RrWWxWaGIyaFJhRlZpYTJkUllreGlZMmRHYUhCaVEyUmFZbmxqTVdkdFlWbG1aMlJzYUhsaFJHaDNaMmRtV1dkSVlXdGtNV2RRWWxaaWVHSldaV0ZoV1dGSVlWRm1aV2RqWmtaaVpHVnVhRXhvUldkT1pVTmpXR040WmtaaGVtUlVhRVprUm1nMFpHTm5SbVJhWnpCaFJHY3lZWFJpVTJaR1kwaGlSbUZIWVVka2VtUmtZMVJrVW1WSVkyeG1jV05GYUcxbFNXTmlhRWxvWjJaMFpFWmhVMkZvYUVwbGIyTlVZbTFtVW1GSVpXSmxiR040YUROaFFtaEZhRWxqV1dOWFpuaG5NR0prWTFSblVtaHNabGRvWkdkSGFEVmlNbVZqWkRKak9XTkhaRnBpZUdKWlpWTmxVbWhFWkhCbFMyTkhZekJoT1dkRlowTm5WMkV4WlZsbFUyZ3lZVnBpZFdWVVlVZGlhMmRWWkdObWEyRTFZM3BoUldWRlozaG5UbVZWWmxWaWJHSmtZbEZpUkdGclltaGxVMmQ2WTJoaVNtSlBaVEZvYUdKSFpscG9TR05WWlZKblkySXdZbmhpVW1SbFpraGpRbWhYWVdSalFXVTRaR3BuV0dOR1p6UmlLMmRFWWpGbU1XRjNZbFZqVldNeFpIUmhVV2hHWjAxa1dtUkZhRE5sUVdkTVoxZGtWbWRaWmxObVkyRXhaSGhuVDJWUlpGZGpOV2RMWlZwaFNHUnNaVXhuVTJSV1pITm9aR0pJWmxWaE1HSmFaVlppYm1KU1oyMWpTbVZJWXpCa2RHaElaWHBrVG1GVWFHWmtaMlpyWnpka1JHTlZabEZqWVdoU1pVSm9XbVozWjBoa01HaDBhR3BtV1dOdFlqUm1OMlJIWldsaVdXZENZa1ZoVldScllsbGxRMkpFWWtGaFltWlNabmRtT0dKM1ptUm9RV0ZXYUhkbVJHaHVZakZpWkdKVFkydGxXV0p1WTBobGVtRlZabVZtU0dOcVpWVmhVMlZFWlhsbFFtTkxaRU5sWjJOQ1lVZG5UV0ZDWkRoaFZHTmFaRlpsVFdkalptSmlXR05HYURWaFIyUlNZMDVvZDJaRFpURmtiR2hYWjFabFJHZFZZVlpoV21oRllteGtSV0pUWjIxb1VtYzFabE5vZUdSU1lYaG1TR05TWXpCaFltUlhZVUZoVW1nd1pFeGlNMlJhWjNWa1ltWjZaREJqWVdoSGFHcGphR1JOWVdSbVZXWnZZbEZuVldKclkxRmxUR1JqWWtaaGNHUkRZVTluYldOS1l6ZGhZV1pYWkRobFVHSlJZbXhoYTJGUllsUm5SV0V4WlZKbFUyZFNaRlppVDJSaFoxaG5VV05aWms1bmEyWkdZM0JrVldSVlkyZGxZbVpQWnpGa1ZXSXlZa05uYUdobll6Sm1UbUpTWWtwbE1tSkVZekpvY0dSUVowWmpRMmhWWm1aaVVXUjZaVEJrWTJKRFlWZGlVV1ZtWmtkbGJHUmtZa2hvWVdGSFpXOWxUR0ZDYUVaalRXaHFZbEptTTJkMFprSm5SMmQzWlUxbGNXWk1abFpuVG1ReGFFbGxNR001WTJObFJtZENaMnhqVFdaa1pVRmtPR2hyYUVsa1UySTBaMlppWVdONlkzZG9VMk5VWWtoa1ZtTkxZa1ZqUm1kS2FFVm9RMlF6WlVKb1lXUkVaMjFrT1dFdloxUmpSMmhyWkZWbVkySnJZalZtZW1oRllVVm9lR2RPWjFWaVZXWnJabFpoVkdGdFkzTmtWbVpsWTJoblRXaHNaVVZvVkdSalkzUm5TbWhvWlhobU4yTkhaa05oUVdNNFlVWmthR0k0YUcxb1FtaFlaakJuV1dKS2FHMWlSV1JJYUUxaVYyWnpaMEpsUzJGUlpqUmpiV0ZMWWxKb1pHWmpaRlpvVkdKa1prUmtSV1ZDWW5oaVdtaE9aV2RvYjJKeFlVUm9hbVUwWTJKaVRtSnBaMjluWm1WUloxTm5aR05MYUZKbFVtRlNZMFJpVW1odFkxWm9PR1phYUZkalpHZzJZbFZsU0doQlkwOWpRMmd3WW1SaE5tRlRZMEpuZUdFMFoxSmlRV2QwWTNkbFYyVnJZa3BvZG1KWloyMWhXbWh3WWtaalJHTkdaVTlpWW1Gb1pVSmlZMk5SWkZobmRHTktaRVpqVldjMVkzQmhaR1pDWVdobWQyZFJZbGhsVW1KU1lrZG5hMlkxWkc5a1JXVlVZVGxqUTJGSVoxUmtNR1VyWWtWalUyWkNaa2hqWTJGSVoyZG1WV0ZqWmxWaFdXaFVaMlZqUm1WT1psQmtXbVZFWkhCaVZHWkNaM2huVFdoNmFFVmpTR1ZPWjFkbVJXTnVabkJtU0dGYVprVm5SbWgxYUZOb2JXSTVZWGxoUTJaRVpUVmhlR05JWVZKaU1XaE9aMGRuVm1SYWFEbGxVbVJJWWxwbWVtaGlaREJsV21adVprWmxhR0pLWmsxaVptRlJZblJsY21aRmFGUmphMk5NWldKaFZtZHZaMDlvUm1SRFprVmtZbU5aWmtKamFHSjVhRkpuYVdaYVozSmhRV0pGWlUxalUyVkJZMVptVVdOalpFTmlhbWQwWjJOa1RtRlRZa0ZrWjJaWFpWRmxiR1pJWWtObVFtUkdaSFZvVkdWQ1lVcG1lR05oWlROamVHWXdZa1JtTW1aMFkxTmpSbWRJWVVabFQyaFNZbWRtVG1aU1psRm9iV2RhYUd0bFJXVkdZa1puVTJOSlkyMWpaMk5YWTBWbGJHZGpZV0psUldJeVlYaGtVbVZhWjNwaFpHWnJabHBoUldaelpFTmlXV1Y0WkZGbVVtaFVZMUpoUldoRWFFUmtNbWgzWVVwalkyUlhaMFZrUm1kTVp6Rm5aR2RCWkV4bWVtUnZaMDltVm1KVVkwMWtVV0ZCWnpKbFFtSlVaVkJrTW1FNVp5OWhXbUp1WVRoaVNHVmxaakZoVm1oYVlVVm9SV1o0WTA1bFZXZFNaVkZrV21GYVpFZGtiR1V3WVVkaFNHRkJZa2hpU1daU1lqaG1TbUpIYUdwb2VHaGxhRkJvVldWNFlscGpUR1pJWTNoblYySktZV2RqV21GeVpVTmtWR2cxWW5obVVtUm9aazVtTkdkVllUQmxPV0Z6WVU5a1JtRXhaRXhsVm1WcWFFWmtVR1pYWWxWbGMyUlRZVkJrUW1KSlozRmpRV1ZxYUc5bVJHWkxaM3BpWkdoTVpVaGhRMmhWWVZKb1NHRlNhRGhsVm1kV1ltcG1NV1JwYUdSaWFtTmFZV3BsVW1GcFlXZGhabVpGWldoaFpHaG1abE5rYUdoQ1pWTmpVbVZCWlhSamQyZFhZbXRsU1dFMWFFbGllbVpTWjNCa1dHUklZVFZrYTJWalluaGhRbVpOWWxSalZtUkdaMHBqUm1OVmFEVm1jR2RrWjBaaFdtYzRZbUZqTTJGU1kxSm9VMlJyWmpWak1XZEZaVmhpVG1STmFGVm9XR1JuWTJwalZtaHRhR3RpVUdaalp6RmxTV1psWm1OalVXUnJabFJpWkdKV1prMWxTMk5hWkVkb1pHWlVaRU5oUW1RNVkyRm1RMkl4WjJ4aVYyaEZZMjVvY0dKSVpGcG9SV1JHWm5WblUyUnBaRlprTldOV1pXaGhVbVUxYUVSblFtSXhhRkprUW1oV2FGbG9ibU5hWVROaFdtVXJhR0ppTVdGa1lYSmtVR1pDWWtwalRXTmtabFZrYjJOUlpWVm1hMmRSWTB4aFkyUkdhRzlsV0daaWFETmlPV0p0WkV0bVFtWlNZM05oVldWSVprMWhRbU5SWjBkalpHUlNZMU5oVW1SV1lrOWpZV0ZZWmxGa1dXUmphRVZvUm1Rd1lrWm5NR2R3WmxSbFpHSlNaSGhrYTJOUlkwaG9kR0UwWldObVJtaGFaakJrUkdZeVkzUmlVMmhHWkVob1JtZEhZVmhrTTJob2FFOW9WR1I1WnpGaGNXVlVZMEppYkdoalptTmlRV2RhWkZwbVVtSjRaMHBuWjJoU1p6TmhVbWRPWkZKblJXTndZbXRtWldKVlkzTm5WV2RqWTFKb01HUmtaMVJqVW1WclpGWmtaR1ZJWjA1a01tVlBaRzFpT1dOYVkxcGplR2R6WWtSalZHSkhaamxsUzJaQlpGWmpOV0YxWTBOaE0yZENaV0ZtVVdKdGFEbGlhV2RhWW0xa2EyaFZaMk5qYUdFMVlucGxSR0pWWkhkaFdtVkxaV2htYzJSV1lWSmxWMkZyWmpSbldtRlhaSFJvY21oa1kwWm1SbUpMWWxSbmJtWlZhRkpsWTJJd1ozZGxXR2hPWm5sbVNtVlhZV1pvUTJaV1kzSmlWV2hvWTFKamVHaFNZMmhvVG1ZMFkxVmlNR0k1WjJ0bFNtZHNaVTFvVTJWRVlXNW9RbUpKWmxabFZtZGFaMkZvWldoc1kzQmlhMk5GWjFka05XSk5abHBpU0dkR1owUmhRbWRZWlVWblFtWkJaVlZqTUdkVlkwVmtTR1l4WTNWalpXY3paRTVqSzJoVVlUSmpjMk5YYUZGbGEyaDRabkppVm1kQllURm5VMlJUWlZWbE1XWTRaVmRqWjJGU1pIWmxZV2RZWVhSbGNHWlNaakptYkdKclpXTmhlR0ZDYUUxa1ZHWldZa1ptU21oR1pWVmtOV2h3WVdSblJtVTFabmRtV0dNeloxSm1RbUZWWlZkaVVtSXhZVVZvV0dOT1lVMW5WV1JZYUdoaGQyaFdaRzVrVVdOUVkwbGxNV1pKWTBwbVkyaFdaRkZqUjJKaVpHeG5UbVpHWVZwaFEyWktaRlJtUldob1lrMWlhMkZqWkVGamRHZFhaMGRrV0dSdlkweGhSMmRWWXpGbGRXVkNaRzFsVW1ONVpWWm1hR2hSWTNsaVJXVlNaREJrVEdoSFpWWmpkR0p3YUdKaGJXVTFZVnBuWW1Zd1pscGhibVpHWm1ob1NtaE5ZMlJoVldKdllscG5VMlJYWnpSaVRHTmpZa1puY0dkRFltSmpNbWRLWjIxaVlXUldZMGxqT1dSSVkwaGpUV0ZaWlZwaGEySXhaRkpuVTJaU1lWWm9UMkpoWlZoa1VXaFpaV05tUldaRmFEWmhWV1JXWW1Sa1QyaFFZVkptUm1JeFlWUm9SbWhzWkhka1dXWldhRnBqYjJSRlpqSm1kR1ptWWxWaWJtRm9Za2RqU0dodVptaG5RMmhTWkcxbmFHTnhaVWRoZUdKcmFFNW9ZbUZvWmxwbFdtWlhZekZvVW1ReVpGSmllV1JLWWtKaVdtUldabVJpYTJkUVpFWm5RV2dyWkdOaFVtSXdaMlJqVkdSU1lXeGxWMmhrYUVkbE5XRXlaR05vZVdkc1owZG9aV1ZTWVZsaVEyUldZVEZqT1dGTFprVm1SbWRLWTBWbVEyRXpaMEpuWVdGUloyMWlPV1JwYUV0blIyVnJZa3BtWTJac2FIaGtiV05DWVd0bWVHaElaMVZvVVdSallsWmpVbU5YWld0aFoyTlphSGxsU21aQ1pXWmxNV2hGWWtkaFRXSXpaV3RtVW1KUWFEQmtlR2RoWWxwbldHaEJaVlpoWldKQlpqaGhkR1ZWWTJoaGJHVnpaVkpvWjJaMGFGTmpWV013YURsbGEyaGhhR3huVFdWYVlVVm1NMlZCWmtOblVXZHVZWGRqVTJabFlXdGpaR0ZyWTFGaFYyUTFZVXRsV21KRVlVRmxUbUpHWVVoamEyTk9ZMGhqVm1KQllVVm1VMkl6WjFGa2JXRm1ZVE5rVFdOdVpsSm5ibU52YUZkblFXWXdaM2hoTkdKVFptdGhWbU5LWm1KaVoySjBZWGRqVjJKclpFcG5kbUpaWkcxa1dtWndZMVZqVkdZMFptUm5UbUZvYUVGbVdHZGFaREZuUm1GS2FFWmxWV2cxWVhCaFpHUkNaMmhuZDJWUlpsaGpVV1paWmtSbVJXWTFhRGxpVjJSWVkwNWlVbVZVWjBkblZtVjNZVVpvTTJjd1oxQmxUMlpTWjJSbVFXUktaRUptVW1aa1pHVmtRbWd4WjFCblpXUXlZbkJoUkdSSFlsSm5lR1ozWVVkaE1XUnNaazFsUldodVprbGtXR0phWmtaa05XVjFaVkpqTTJKV1p6VmlWV1pTYUZKbFoyRkdZa0pqTVdKSVlVZGpWbVExWW14b1ltWnVabXhqZW1abWFEQmtPV0k0WjFCaVFtVktaMDFtWkdoVlpHOW1VV05WWm10b1VXaE1aV05sUm1Od1lrdGxTV0pYYUVwbGRHaGtZMEpoVVdobVpVUmllV1ZrWmxsblVXRm9aVEJtWldKSVltaG9NV1pqWTFwaVdHVlNZbVJpWldWVlpXaGlOR0ZWWTFWblNXTkhaR1JrVW1kNFpIVmpWR1ZCWmxKamVHVmhZak5vZUdNd1lrUmpNbU4wWVZOa1JtSklZa1pvUjJoRlozbGhWbVExWmxSbU1taFNaSEZtVldkNFpHdGxWR1ZqWTBGbGMySk1Za1ZtTUdKWllYWmpSbWRUWTNCblFtaGFhR2huY0dkclpWcGlhMlZ6WWxwbVdXaENZVEJrU0doVVpGRm5hR0ptWjJSalIySlNaekpoVUdKWFlqbGlUV05hWVROamRHTlVaa2RuUkdZeFowVmpVV1pDWWpCbFZHSkJhREptU21OWFlWRmxhV1JrWm1sa1lXVXlhR3hqVW1ObGFERmlWbVZhWTBWalJXWjRaRTVoVldGVlkydGxWbVZGWmpKblFtSTBZVTFpYm1SQ1kwSmhaR0ZHWTBaalMyRlVZbTVqVldWU1oyVmhlR0UxYUdabVRHTjVhRWxoWm1aSllrVm1jR1J5WVZSaWVHSlJaak5vUldNeFpEQmpOMkpDWm5kaFdXWnlaVXBqUm1aTlkxSm5VbUV6WTNkbVRHWkRZakZsYjJaVFpFMWtNR1YwWld0aVFtaEhaa3BpUzJOTFpUTmpWbUpNWTFoaVNHVm5aV1JoVW1kdFpHTmpXbWRXWVc1aFVtUjFZbVJtYm1KT1luWmlVbVZ0WldOalYySlNZMEZuTUdkdVpGTm9iR1ExYUdWb1ltVm5aM1JqZDJSWFkydGhTbWgyWkZsamJXaGFaSEJsUm1oSVpVcGxUMk5qWkRCaFRtZEJZbHBvTVdoR1pVcGlSbU5WWlRWaGNHSmtaRUpuYUdKM1kxRmtXR0ZTWVZKaVUyZG5ZemxvTldKUFpUTmpUbVZOWWxWa1dHZG9ZbmRrVm1GdWFGRmpVR05oWVRGaFNXTlZZbU5uVW1oTllsUmpXbUpXWms1bldHSmFaa2RrUW1kVVlWVm9VbUZPWlRsbFEyWjRhRnBqVjJGSVpqTmhjR2hYYUdGbFIyWjBZM1ZsVTJOdFpsSmpOV0ZUYUhoa1VtSjRaa2hpVW1jeFprNWxSMlJXWVZsa2VXUmlZMjFoZEdWNlpGcG9NV0prWm01b1EyaG5aelZqVFdkSlpVVmpUV1ZSYUZobU1HUlJZbUZqWm1oSVowSmlRMlJpWmpKaVNtSnRhR0ZpVW1aU1kzbG1WR2R1WjAxb1VXZFVaVVZuTUdSa1pGTmpVV0pvWlU5bVRHUXphRkZvUjJoaVpHdGxSbVZzWTFoalYyUkNZVTlrWkdWU1lrWmhlbVZVWlVabFJtWTBabU5vUm1SYVlUQmhSR2N5Wm5OaFVtSkdaVWRpZUdaSFlrRmtWMmQwWjFSblZXRnVaV3hqTTJGVlpERmlXV2hVWW1Kb2QyUnphREJuUm1Fd1psbGhlV2hUWVZSa1VXZFBaRTltVldGS1lqSmpaR1pWWW5Ob1dtUlpaSGRvYTJaVlpGUmlVbVZTYUZkbVIyTlRZamhrYVdSUFlUSmlSV1pYWTB0bFJXaEZaMkZsV0dSdVlXeGhTMlJJWlZWaFZtSlVaVUZuYm1aQ2FFRmtVV051WVRsaWRXWlVhRWRvYTJoVlpXTmhhMmMxYUhwbFJXaEZaM2hvVG1WVlpGVm1hMmhXWkZSa2FtZHNZekJuUW1SWVpFRmtSV0ZrWTBWbk5XSkxZbGhoYm1SVlkweG1ZMlYzWVZKbFVtSmtZVmhsUW1SSVkyVm9RMlpXWlhKa1ZXUm9ZMUpqZUdGU1kyaG5UbUkwWTFWa01HTTVZV3RsWVdkc1pFNWhWV0pGWWpKb01HTk1hRWhtUm1OWmFFNW1aV1pzWjFwbGEyWlhZakpoTldGSVlXUm9XR1pXWkdoaVJtUklaVVZtWkdOSVpGVmpNR2RhYUZabmJtVlNablZuWkdOdVpFNWpkbUpJYURKalkyTk1aRVZuYkdkNFlURm5WbWRDWjBGalFXaFNaMFpsWTJSelpWZGhhMlp3Wnk5b1dXZHVZWFJpTUdKRFpsaGlTV1JqWjJOa2VHWmFZMHRpVkdaVlpVWmlTbVJEWkRCbU5XZzBaR1JtUW1Ka2FIZG5SV1V6WWpGaFVtRldZbFZvTldWclowVmlWMkpzWVUxbFVXaFhaazVvWVdWV1kyNWtVV1pRWldGbU1XVkphRlZsWTJoVllWbGpWR1psWVVKa1ZXUkJZazVuYldkd1kySmhUV0Y0WjA1bWQyZERZekZsYkdOWFprVmlibU53WWtobldtRkZZa1pqZFdoVFkycGtXbU0xWVZaamFHVlJaR05oV0dGRlpHdGxSbUZHWW5obFkyUXlhRkJuV0dNMFoyaGlXbVpyWjNCaFRtaEdZMmhqU21kTlkyUmtWV1Z2WmxGbVZXRnJaVkZuVEdOalowWmtjR05EWldKb01tWkpZM1psVDJSdVlXOW9lbVpKWlVoaWRHVkRaMUpqVldZd1lrNWhSbUpTWmxWalkySmhZVmRvYTJGR1pHSm9WV1pHWjJ4b1ZXZFZaVlptVDJWYVpGUm1kR0Y2WWxSbVJtTkdZalJoWTJKR1kxcG9NR0ZFWXpKb2RHTlRZMFprU0dSR1lrZGhSV1V6WVdoalZHRlZhRWRtVW1ocFlWZG5NR0p2WmxSalltWlJhSE5sVVdKQ1psaGlkMlEzWkV0alYyRjNaRlJrV21Nd1kzQmxOMkZsWWxaa2IyaFZZbUZrZUdRd1prNWtVbVZDWkZab1YyRm1aRU5vUW1ZeVltSm5iV0k0WjBGalltaG9ZVGhrTkdKVVpFaGtWbUZMWmtWbVJtUktZMFZsUTJnelpFSmlZV2hSYUcxb09XSnBaRnBrYldKcloxVm1ZMk5zWVZKbWVtTkhaMFZvVVdWRVpsVm5WbVZSWkZaalNXZDVZMmRqWjJGVlkwaGtOR05JWTA5a1FtUTBaMFpuU0dkSVlqRmtPR2ROWVdoa1oyVmFZMlJpYW1KM1kxcG1UV0ozYUdObE5XVlhaM2hsVW1jclpWSm9ibWcwYURWa1FtVjNaR1JoY1dSQ1ltcGlNR0pNWlVka2JtRnJZMGhoWTJZeGFGbGtVMlpsWjJ0bFpHRnJZbEZqVjJZMWFFdGpXbUZJWW14b1RHVkdaMGhsUldoa1pVaGtWV2N3WVZwaFZtZHBabHBpZFdobWFFaG1UbVJ1WTBKbE1tZGpaVXhuUldkcFpVVmpNR1JJWTJ4aWFHSmpZVVpuUldaUlkyNWpWV2RzWlVKaGFtVlpZbTFrYzJkdWFFaGpXR2QwWjA5a1ltaDRaVUppWkdGVVlWWmpaR0ZRWlVabVZXTlpaMjVrWldOU1pWWm9PR1pSWlZoa2QyVlJZMU5tYTJKU1lXOWhSV2RYWkVaa1JtTlhaVWhsVW1kaGFGWmpibU5SWlZCb1lXZ3hZa2xqVldWalkxVmpXV1ZVWldWblJtRk9aVkJuV21aSFpuQm9WR2hIWVZKa1RtTjNaa0ZsZDJSMFpsZGpSMkpYWm1Sa1NHWkxaR3RvUm1ac1psTmphV1ZvWXpWaFZtVlJhR3hvZUdkRVlVSmlNV0pUWTBkbFVtUldaVEJpV1daWWFGbGhlV0ppWXpGa2VHaHVhRlprVW1SS2FFZGhaR05UYUdSb1VtTkNhR2RpZDJWR1pVbGhRbVZWWTFaa1dtWXpZMEpvY1dGaFlsRm9WbWg1YUZGb00yWk9hR05uVW1WVloxSmtaR1paWjNoblZtTlBhR0ZvV0doUloxbG5ZMk5GWkVabU1HaFZZbFZqY0dOUFpXUmpVbVZHWkhwaVZHZEdhRVpvTkdaalpFRmhVbWd3WVVKalYyUnpZVlJpUm1aSFpEbG9ZbVZGWmpKaGNHUlVhRk5uVjJWS1pIRmlWMk14Wm1OaFdXZGxabmRrWkdOYVkxaG5iR1ZPWkRablUyZElaR3hpUW1SbVkwVmtUbWQwWldSaVYyaEZabFZqWTJKU1p6Qm9aR2RVWkZKbGJHRlhZV1JvUjJVMVlUSmxZMk15WlRsalIyaGFZM2hvV1dkVFpsUmhTR1JWYUVWaFJXZEdhR3hvUldWU1pqTmhRbWRGWWxoak1tYzRaV3RoVkdKSFoydGxWV1pqYUd0b05XZDZaMFZuUldoNFowNW5WV2hWWTJ0bFZtSlVZMjFqYkdNd1pFZGlTR1JDWTBKalpHaEdaVVpoUzJOVlpGaG9WV2hhYUdWa2VHYzVaMUpsV21KWVprSm1SMlptWjFGa1RtaHlaVmRpYkdkd1ozaG9WMko0WVUxbUsyRlhZV3RoV21GUFoyRmxiR0ZOWmxwalJXVXpaVUZuVEdWWFpGWmtXV1JUWldWbWEyRmtaMnRvVVdGWFl6VmxTMlphWTBoa2JHRk1hRVprU0daRlpVaGtTR1pSWWsxaldtTllZbGhpVVdKcGFHUm5iV1F4WlhsbVVtRnVaVmxpT0dSRlptdGplR014WjFOamFHVkNhRk5uVW1GQlpYUm5kMlZYWVd0aFNtWjJaVmxqYldkYVlYQmtSbU5JWWtwalQyUmpaM2hqUW1WVWFGUmlWbUpzYUVKbFVtUnJaalZpTUdKa1owSmpRV2hwWjFGb1dHRTFaRkpuUTJNd1p6VmtOR1pGYUZkbFNtWkdZVlZpV0doS2FIZG9UMkY2WlZaalltRkpZakZpZUdSRllsQmthR2hGWjJKbllXRnNZemxrVUdSTFp6Sm1UbUpoWkVab1VtZE9ZalJqVW1KV1lXeGxaR1JFWlRObGIySk1ZV0psVldWb1owVm1VMlZ0WVZKak5XSlRhSGhsVW1ONFkwaG5VbU14Wms1bFIyTldaVnBsTUdaaVlXNWlXbU42WW1KbE1HWmFaRzVtUm1Sb1lrcGlWMkZrWVZWblNXSlpaa0ZvVldaUllWZGtZMmhCWkdoblEyUmFaVmRuU1dkTVpVdGxSV1JCWkRabFVXSkRZVTVvWm1GSFlqQmlWbVpFWlZKbFVtRlZZME5rWVdGWWFHdG5XV0ZaWlZWbWFHUXdaVmRvTUdGdmFHcGhUbWhGWmxWak4yWlJZV2RtUldFemFFcG1NV0kxWkcxb1FXZ3labk5oWkdGSVpsaGthR1JMWTBWbk0yTkJhR1JrVkdJelkyeGljV2hSWTNoalFXaGhZMlZoVW1KQ1ozcGpWbUZvWVVwa05taFNaREpvVW1kQ1pHSmxhMlp3WjJ0alpXSlZZWE5pVldGUVptaG5NR1pFWlZWa1FtTnNZMDlsWW1Fd1kxSmxNbU5qWmpKa09XSkhaVnBqZUdaWlkxTmpWR1pJWlZabVMyTkZZVVprU1dSUlptTm9SR1ZzWVdGalUyZFhZVGhsZVdKSFpESm5hMk5LYUdOamJHUjRZbTFvUW1aVlpuaG1UR0pWWlZKbWIyWmFZbFJrYW1Sc1lUQm1SV1l5WnpGaFFtVlBZMVpuTVdKTFlVaGpXR2hWWldWaFltaHJZWGhqUkdoaVpsZGlXbVJoWTJSalJXTkNZM0poV0dSM1lteGtlR0ZZWW1wbWJHWTBZMVZrTUdVNVptdGtZV2RzWkUxb1dtaEZaak5vUVdoTWFGVm9SV2d3WXpSb1pXaHJaV1JoYTJOUlpWZGlOV05MWWxwbFNHZHNaa3hsUm1oRWFHUmpVMmhVWWpCa01HSlNaV1ppU0dWU1pYVmlaR051Wms1aWRtZFNZbTFsWTJoWFowVmphMmQ0WmpGblUySnNZVFZvVTJOWFkxRmhkR2cwWjBaa1JXVktaM3BuWm1KdFpWbGpiV0ZJWmxobVNXaFRhR05rTUdoT1lVRmpWR0pSWTFKa1NtWklaMnhpVG1Sd1owOWtkMmRPYUdGbFVXSllabEptVW1GVGFHdG1OV1l4WTBWbFdHRk9aazFsVldaWVlXaGpkMkpCWVROb1VXZFNZMkZsTUdWSlpsQm1WMk13YUZsblZHTmxaRVptVG1GUVpWcG5SMlJ3WkZSaFIyUlNaRTVrZDJoRFkzZGxNR1IwWWxkaE0yUndaRTFsV21WQ1lrVmtWR2hUWjI1a2JHRTFabGRrVVdaR1oydGhTR1ZTWlhSalRtSldaVEZqY0dVd1lsQmpibVZhYURSaFkySnJZMWxvY1daSFltaGpTV1pEWTJSb1ZXRlZaRTVrVldac2FGbGxaV05hWm14a1dtUkRZazloYldWS1pISmxaR1ZDWVZKbGNXTmFaVWhtVFdaUlpGUm1SV2N4WjFKblUyWlNaRlpuVDJKaFlWaG1VV0pTWkdGaE1tZDBhREJuVldGVlpuQmtUMlJrYUZKbVJtUjZhRlJpUm1kR1lUUmtTbUZEYURCaE9XSkVZekpsUW1aVFlsSmxTR1ZHWTB4aVJXaDZhRlZtZFdoVVpucG5hR1F6WjFWb2QyWm5ZVUptWVdkQllYUmpWR1JXWTJ0bmRHZG9aV0pqVjJWU1kwSmhZbVpyWTNCa2EyTmxZMVZsYzJKVllreGlRbVZSWWtkaVdtUjRabXhuVjJWa2FFZG1OR055Wkdaak1HaFdaa2RsV21GNFpsbGhVMkZEWm1saFFXWkZZMVZrZDJWWlpFNW9VbUpFWkRWa1lXUlRhR3BrZEdGeVkxcG5hbWRKWVN0blkyUnJhRFZoZW1kRlowVmllR2RPYUVKbGQyWm9Za2hpVkdGcVlYUmxNR0ZDYUZobVFXRmhZVXRqVm1FNFpXVmhRV0ZSWkZwalJtSkpZMUZsVldKbVoxQmtNbWQwWmpob1pHRkJaamxsY21SVlpXaG9VbWg0WTBWb2FHTXdZVGxpUTJaNFlqaGhjbWhQWWtGbVpHTkxaMFZrTW1Zd1pHaGhWMlpXYUZsaFUyUmxaMnRoWkdaclpGRmlWMlUwWW5KbVRtTnBZWE5pUzJoVVpWaGpPV2hWWVZSamFXRjRaa3huUW1SRVlsVmhNMmhrYUdsak9HUjZaV0ptUjJOallWZG5SV2hyWjNoak1XUlRZV2hrUW1KVFpVRmliR0UwWkN0b1IyaFNhRmxqYldWTVpGTm5hR1p3WWtobFEyTmFaVWhtWTJZd1lYUmpiV1JVYUZab1JtSktaMFppVldRMWFIQmxaR0ZDWTJob2QyaFJaMU5rV1dKVlpraGphR1p6Wlc1b1dHRXpZVTVoVDJaTFkycGxZMlo1WWtobFJHaEdaVTFtVUdReFowcGtNV1ZKWVhoaVVtRlRZa2xtVTJFMVowNWxXbWRJWW1SaVQyTkhZVlZvUm1RcmFGTmhRbUZuWldGa1dHVnVhRWxoVkdaaVpGWmljR1pGWkZOb2JXSlNhRFZuVTJaNFoxSm9lR0ZJWlZKbU1HZFJaa0ZvYm1SNGFEQm9ZbWR1WVZwamVtWk5aR3RpY0dWT1owWm1hR2hLYUUxbFpHZFJaSGhsUm1GSWFFRm9aR2htWTA5bFVtUlZaVTFvWW1jeVpXOW1lV1JhYUZKb1VXVm5abEpqTTJST2FFeG1XbU5yWXpGblVtWlRaRkptVm1oUFltRmlVMkZLWkZwbFNXUnJZa1ZsT1dOWVlWVm5iMk5NWm1KaWFtTjBabnBrVkdkR1owWmtOR1JqWkVaaldtWXhaa0pqZVdJd1owaGhWMkpxYUVsbVUyUlhaV3BoWTJOa2FGUmpNbVozWkd4bVYyZG9aMnhoU1daWFlXZG9kR2hhWmxabWFHRktZVFpvVW1ZeVpWSm5RbVpMWWtKak9HTnhaMDltYUdnNVpXUm1VR1JzWkUxblpHUkNaRkpuUldORGFHVmlSMmMwWjJ0aVpXVnRaRGhqWkdoVVoxSm1XV2hUYUZSbVNHZFdaa3RqUldkR1kwcG1SV1JEWlROblFXZEpZVUpuZW1SelpqTmlUbVJEWW1OaFZXRktZbWRrV1dZMlpsRmhNR0ozWmtWa1NHTjRabkJuUW1oRVlubGlZMll6WWxoaFZHZzRZa2hoWkdoQ2FHeG9aMkZVWjI1bFZXRlNabU5pTUdONFoxSm1aV0ZJWTBKb1YyRmtaRUZtT1doeVpWUmhVbWRTWlRWaVZHaHJZMk5pZDJoSFptaG5lR0Z4WkVaalVtWTVabGRsVW1oSWFFRmlWMkpYWWxWbVdXVmlZMlJoYldNeFptdGhVV1ZYYURWaVMyZGFaMGhuYkdSTVlVWm1TR1pGWldSbFNHRlZaakJpV21kV2FHNW1kMlUyWjFCbmFtUnZhRGhtVTJkQ1lXaGpaV1pYWlhkaGMyVTVaMU5uWjJReFpWTmtWbU5CWWtwak9HTmpZa1ZqU21WMlpsbG9iV1JhWkhCb1JtaElhRXBtVDJoalpYaGxRbWROWlZSaFZtWkdZMHBvU0doU2FHOW5hR2hRWmxWbGRHSXJaa1ZuZW1ORlkyTmpRMlIzWkdObE4yVldaVlJtV1dObGFGVmlWMk5XWVhkbFIyZERZa1pvUkdaS1l6Rm9jMmRaWkZkaU1HSlpZbFJsWldOR1pFNWlVR2RhWjBkbGNHZFVZMGRqVW1KT2FIZGxRMkV4WTJ4a1YyZEZZa05oT0dGS2FFbG9RV0ZSWlc5b1FXWjVabTluT0dkRVlYaG1XbWg0WkVGalFXaENZVTVvVkdGUllUaGhhMk5MWVhwaGEyRXhaMkpoZUdWU1lVNWlSbU5vWkVwaVRXZGtZMVZsYjJGUlpGVmxhMmRSWmt4bVkyVkdaM0JpUTJoaVlUSmtTbUZ0WTJGb1VXSjBhSGxrU0dkWWFERm5WR0ZFWVZGbVJXRmtZMUZsVldWRlkwZGtTV0ZEWjJOalZXUmpaa0ptVm1NNVlXVm9NR1J3WVU5aFpHUlNaVVptZW1SVVprWmxSbVEwWkdOa1JtTmFZekJsUkdVeVlYUmlVMlpHWmtobFJtWmpaRVZrTTJodllrRmhSMk42WjFsaWFtVklaVlpsTkdkU1pHTm1RbVphWkVWaVZtTnJZbGxrYW1oR1pIbGlSV1JQWkV0a1JXaHZhSGRoVldjd2FITm9WV0pqYUZKbU1HUmthRlJpVW1kc1lWZG9aR0ZIWWpWb01tSmpZekpoT1dSSFoxcG9lR1JaWTA1a1ZHUkVZMUppUldoVllYaGtUV1pKWTFKbk0yWm5ZMDltUTJScFpWbG9lR0poWW0xbWJHVkJabVpqYTJnMFptaG9SMmhYWjFwalRtZFZaRlZpYTJKV1lsUmtiV1JzWWpCaFIyWklaRUprUW1Oa1lrWmxSbVJMYUZSa2JtTlZaVkpuWVdkVlpuZGtTR0pPWm5wb2EyRlRabVJoUldoR1oyeGpSV2RXWWxWaE9XaERZMmhuYzJkelkwZG9kMmRaWVRObldtVnNZazVsVG1kSVlUTm9RbUZhWTFWblJtWTRZalJpWldaclpHUmphMlZSYUZka05XRkxabHBrU0dWc1preGhSbVZJWTBWaFpHaENaekJrTVdOWVpFVmxlV1pPWlhWalVHVnVhSE5oTjJkVFptMWtaR05GWWtka01XVmtaV1ptVTJob1owSmxVMlZTWjBGa2RHTjNZbGRpYTJaSlozbG9VMlJIWVZwamNHTkdZMGhsU21KUFlXTmhlR0ZDWVUxaFEyUjNaVkZpU0dGV1ltaGpiMlpuWjA5bU1XVmFabmRvUkdjelluZGhSbU5TWTJ0ak5HRnVZVWRvU0dGTlpWaGlaV1l6Wm1oamQyWldaVzVrVVdWUVoyRm1NV1JKWmxWaVkySlZabHBtUW1oUVpGRmpZMmhoYUU1amFXZFNZbFJtUldWVlltTmpOR1JSWTJkbWNHTlpZV0puVkdGWllVbG9UV1V3WjBabGVtVlRhRzVrVW1RMVlrWmtlR1ZSWld4alJtaENaa1prVG1oRllsRm1TV1U0WjBwbmVXSldhRGxoUldoQlpqUm1kV1pWWTFab2NHaE5aMkZtUldadmFFRmhWV1pvWldka1RHaEpZV3hoVG1aUFpHSmhlbVZaYUhWaVNXTkZaMlJtY0doYVpFaGpUV2RSWTFSbVJXSXhaVkpvVTJGU1psWmpUMk5PWVVab05HZFphR05oUldOR1l6Qm1WV0ZWWVhCaFQyUmtZMVpsWTJWdFlrRm9hR1JKWVhOalQyWlNaMnRuTm1oRVpYcG5hR0ZoWjFGaFNHaG9hRWRvVTJGR2FFcGtWR1pVWkRKalVtVnhaMVZtZUdKclpsUm5ZMmRCWTNSaldtUkNZMFptWTJKMVlVVmlhbVZaWmxCb1ltTnJZMGxuZDJkTllWRm9TbVZJWW1abU1tZEtaMUpuUVdaclpqVm5WMmRoYUZkak5XVm5aMXBoYm1Wd1psWm1ZMk5vYUZsbVZXZFVaa05vUm1WRWFFaGtSbUZLWkUxbldHWjZabWRpVkdKRloxZGtSV1JrWkV4amFXaENZVlJoVDJGcllqVm9kV1JGWVVKbWFHZE9ZMVJrTVdSallreGhWR1J1WjJoaWFXZEZZbGhtZUdWQ1lVbG9RbVJyWlVSbVNHWlhaelJsTjJKamFEQm1lR0pTWVdWbFNHWkNZbGRoWkdaQmFEaGtNbVpsWjBKa1VtSjRZMUpuYUdaT1pqUmtWV1F3WkRsb2EyUk1aRUZvV21oWVoxVmlRMlJTWlVOaFJtVm9ZbWRpVTJOUFl6Qm9PR1YzWkZSaFYyTTBZVmxqWW1KWVlXdG1VV1JRYUc1a1JXWmtaVWhvVldNd1pGcGlWbWR1WVZKbGRXRmtZbTVrVFdVMVlrSmplbVJWWTFkalYyRXdZM2hoYjJSVFltdG5RV0pVWjBabGJHTm5aekZrVFdKM2FIZGpOMkZoWldwaFNtSnNZVVpvUTJOQ1pVOW5UR0V3WkhoaFRXUllZMFZoUm1aQlpFUm5iV2hTWm5CblpHRkNaR2hoZDJOUlpsaG9VbVZTWjFObWEyZzFhREZqVVdONlkxbGxXV1ZDWTBOaGIyY3JZVlpvYm1SNFoySmtTV0Y0YUhSaVNHVm1aWHBrYkdobVowNW5kMk5TWjFCblpXaFhZM0JsUm1SRVowRm9XbVpxWlVoaGJHRnNaVkZvUldacVlVNWhUMlZoWmtWalJtZHRaVWhpYVdKM1luZGlSMmhDWVc5alQyZFdZVlprVVdGTFlWVmpWbVphWkhCbVltVnFZamxvZW1aallsWm5hR0UxWlVaaVoyRk9aV0ZpWm1KRlpWbG5VV1JDWkdkaGVHUkRhRWxtTUdSR1ltOW1ZbVl5WWtwbWJXUmhZbEpvVW1kNVoxUmpibWhPWTA1a1dtRnJZekZtVW1kVFpWSm9WbVZQWW1GbVdHUlJZbGxvWldWQ1pYQm9aV05WWVZWaWNHTlBaR1JuVW1KR1pYcG9WR0ZHWVVaa05HTmpZa1ZsVm1kcFowWmpWMk56YUdGalNHWkNhSGRvU0daU2FIcG9RbVprWkVoa2VXTnpaVGxtVjJkM1lXOWxSbWRtWkVGaGRHZE5aRmhrZUdGMFpESm9ZbUZYYUZKb1FtVmlZV3RqY0dkcmFHVm9WV1J6YUZWa1kyZFNZakJtVFdGWFpYZGhUbUpYWjFCbFIyVlpaMkpoVFdGcVpITmhUMlpoYUZWaVdtaGtaa2RvTTJNeFkySm1RbWRzWkRWaFJXUklZVWhrYkdaVVpWUmhhMkZXYUdsaldtSnRZbXRuVldKalltdGpOV1I2WkVWa1JXWjRaMDVuVVdWR1ltdGhVR0ZVWldsbVJtUTRhR1JoVkdSRllWWmtVR1pHWmpoaVlXSkJaMU5qU1doYVoxbGliR1I0WldSalpXZEhaMnhtWm1SbVpGRmxUbVpDWkZWbmFHTlNaM2hqVW1ab1lVNWlOR0pWYURCaE9XZHJaMkZqYTJSRllVUm9SV0Y2WkdkbVJHSk9aa0pqWkdWSFprMWhhMlJyWWpCbVJHTnFhR3hpUTJaa1pXNW5WbVJNWjBKbE1tRkZabFZoUm1kRllVVmhlbU5XWjI1aVVtTjFZV1JrYm1oT1pYWmxVbUZ0WkdSbFRHSklhRzFrV21jeFpWTmphR0ZDWlZOaVVtSkJZM1JuZDJaWFltdGhTbWQyWTA5blYyUmFZVFpvUVdkdFltaG1UMmRQWkhobWFHTm1abGRvTVdWb1pVWmxSbU5XYURsb0wySmlZV2hsWjJNMFpWTmxWMlpXYUVoalVXUXdaa3BsTVdKQlpFZGlUbWRYWTFWbFZHUkNZelJpVW1NeVpWRm9SMlJhYURGalNXaEhaR0ZoTUdKYVpXSm5ZMkpGWjBabVIyZGFZVVJvWkdKaFkwRmlhbUpzWVhkaVEyUXhaMnhoVjJSRlpXNWxjR0pJWWxwaFJXSnJabTFpVW1WRVlWRm9jbVJDWlVWaVFXVXJZMU5vVldGUmFHUmtXR1pHWkdkbWVXTlFZVVJqYTJFcmFFUm9VV2M0WTNwa1VtaFNaVXBvVW1oa1pGRmxVV05hYUZobWJXVTBaRXhqWTJWR1pIQm5RMmRpWkRKaVNtWnRZbUZqVW1aU1pIbGpVbVJxWjNObFpXUklZVUpoT0dWbFowaGlWbUp2WW1GaFRXWkRaVkpvWkdabVlXZG1ZMlp0WkVobFoyVmpZbWRvU1dOR1ozZGhlR1JEWlZGbFRtZzBZV0pqVm1aWmFHNWpRbWh0Wm1Sa05HRkdZVWhuUm1GSFlVVmlNMlZvWkZSa1ZHY3laMUpoY1dSVlluaGtSbUZpWW1abWJHUnpaMHhoUjJGVlpsbGlNV1ZGWW5wak1HUlNaa3RqTUdOUlpXbGpTMlozWmxKbldtUkJaMnRpYkdWUVkwSm9SbVJqWVZKb1pHaElaMDVpTW1oTllXMWtXbWRMYUZSalVtSlpZVk5vVkdWSVlsWmxTMmhGWkVaaFNtaEZaRU5qTTJOQ1pGTmtRMkp0WkVWaWVXZE9aVU5uV21oQlkxQm5VbVp2Wm5Gb1VXWkJabXhsUkdKQ1kxRm1XbWMzWlVkaGVXaFJaREppV0dKVFlrcGxRbVpoWTFaaFJXaE5hRWRoZW1oMFpGTmpTbVIzYUZWaFpXRk9aMjVrUW1WbFkyWm1VV1U0WVhka1pXRkNhRkpsZUdKU1ltaGpUbWMwWmxWak1HWTVhR3RoWVdKc1lrMW5XbVJGWW5saFNtRlBaRVJtVVdOT1lVRmxUbUpGWjJSb2VXTldZVWhrZEdSYVpHTm5ibVJzWlVKblJtaERZVlprVm1WV1pVSmxOR1JZWWt0aFZHaDNZMjVuVFdoVVozUmtkbWhVWlZkalpHZERaMWRrWjJOVmFHMWlVbWhIWlRoaFpXWkRhREZtZUdoeVptTmtSV0pLWVhaaFdXZHRhRnBqY0dWR1praGhTbVZQWkdOamVHRkJaVkprVW1aR1pURmlhbUpHWkZWb05XSndZbVJsUW1Gb1lYZGxVV0ZZWkZKb1VtaFRaMnRuV1djNVpraGplV0ZOWVdWbVNHSnBaSGRvTDJGQllXbGlNV0ZtWkV4aWJHVjRZMEZoVUdWcVpWWmtTR0ZMWVdobWIySkNZVWxuTW1Od1kwOWtSMlJXWmxWbWJHSlNZMUptYjJoRFpsZGplbUZWYUVwaldtZEZaMnRrTm1OUllqSmxVV1ZwWjFsblVtWlNZWGhqU0doU1l6Rm1UbWhIWjFaaldtSXdaMkpoYm1KYWFIcGtZbU40WjFGb2FXTlJaMnRtWTJKbFpVOWhNR1p3WVVWbFIyaG5aakZpV1dKbVptZGtOR05PWTBGa1ZHWmphSEpoUzJZeFowVmxaMk5TWjI1bWIyWmxaRWRsUVdWSmFHbGpTR1JWWW1OaVNHSktaSHBuVFdSUlkwcG1SV1ZGWTI5bFJHVlZaWEJuWm1aYVpWSm5hR2R2YUZwbmJHWkdZelJpWTJkR1lscGlNR0ZFWmpKaWRHUlRaRVpsU0dkRlkySmhSMkZ1WVZKaE5XUlVZVEprVW1SeFkxVmtlR1ZyWWxSaVkyWkJaM1JoV21kV1pXaGliMlY1WjFOblZHaFJabFJrU1daU2FEUmpjbVJNWmxKbFNtaEZhRTVtUW1aT1oyTm9RMmRXWnpGalYyRmhabGRuTkdKM1pVcG1hV1JGWTBaalRXZ3haamxoWkdWQllXNWlWbU5EWlZKbFJtSjBZVVZtVldKR1ozQmxZV2RSWVcxbU9XZHBaVnBtYldKcmFGVmhZMkZyWmpWaGVtZEZaa1ZuZDJSaVowVm5RbVJ6YUZablNHZEhaMnhsY0daSFowTmpVV0ZLWVZCa1VXUktaMFZqVFdKVVpteGlaV0pLWVVWb2VHVmhabVZtUTJKU1pWbGpRMmd3WVUxaWEyZENabEppYUdoaWFGSmxhR05PWWpSbFZXRXdaRGxrYTJGaFlXeGlUV0phWWtWbE0yZEJZMHhqVjJOV1pscGhZbU5sWjJ4bmNHZHJZVVZtTW1RMVkxVmlaV1J0WVdSbVRHRkNZbGRpWTJoSFpVNW9NR2d3WVZwaFZtSnVaRkprZFdOa1oyNWhUbUoyWlZKb2JXUmpZMWRuUldOb1pUUmhkMlZJWTJ0bVZXVkJaa05vWjJOMFpEUmtZMlpGYUVwbWRtSlpaMjFpV21Gd1lrWmhTR0pLWlU5bFkyaDRZMEpsVFdKVVlWWmtSbVpLWTBobVVXSmtZbkJpWm1kM1lsWmtkMmhHWkZSaWQyaFpaa2RsVldoQlpFdG9WMkZVWlc5aVRHTkhZVmhuYUdJM1lWWm9hV1ZCWjBKaVJtWkNaM0JpWkdOT1lXZG1OR1ZoWVdSaVNHWnNZbEJoV21KSFpIQmpWR2RIWkZKaVRtUjNZME5tTVdac1psZG9SV1p1WTNCaVNHaGFaVVZuYTJFMlkwRm9hV2d3WW5Gb1VtWlhaSE5sT1dkVlltdGtjR0pPWkVKa1JtZGFaR2xuWldJeWFFNWxaMkpsWkd0bFdtUm9aVVpoYTJKQ1lrWmpaV0pYWkVGaVVXaFZaMnRpVVdkTVlXTmpSbVp3WTBOblltRXlaVXBqYldWaFpGSmlVbUY1WTFSbGJtRjBaRVZuUW1GQlpsRmtRMlpTWmpKamIyUkhaRWxsUkdKT2FGRmtZMlZHWVhoaE1HVlNaVEZvT1daaVpGcG9aMlJTYUhwalUyZHNZa1ZrZUdObFpsWmljR1ZsWjBSbE1tVjBZbE5qUm1WSVpFWmtSMlJGWlRObWFHWlVabFJpTW1aU1pIRmhWV040WVd4a1NHaFBaRVZtU1dWTFpHWmxRbUpLWXpabFVtZ3lZVkpvUW1WaVltdG1jR1JyWTJWaVZXVnpZMVZoWTJoU1pWRm1SMlZhWlhobmJHWlhabVJqUjJNMVpUSm5ZMkl5WXpsalIyaGFZWGhoV21SUVpWSm1XR0ZzWTJkbVJXUkdaRXBqUldSRFlqTm1RbVZoWWxGaGJXZzVZbWxrV21odFprWmlZMkZtWmtKaE5HVm9aRmhvZUdKblpFTm5RbVpTWjBKalJtUkRZakptWTJKdVoxUmpWR0ZKWmxablNtRm9aRUZsU21SSFpHNWhWV1JOWm1ObGQyZHZhRVZsVG1acVprMWtRMlpRWlZWblFXZHNhRlZvYUdoM1lXeGtWR2Q0WWsxaWFtZGxhRlZrT1dGcmFHRmtiR1pOWlZwaFJXUXpZa0ZvVEdaWFpWWmpXV0pUYUdWbGFHSlZZMmhpUm1kVVkzTm5XV1ZMWVc1amEyVm1ZMWhvUkdKb1lrOWxSV2QzWm5obFpHSkZabTVrZDJNMllXVmpSR05CWW1wb1EyWlRaR3hvVkdoSFpXdG9WbVUzWlVKb1JtUlZaRlppUW1oV1pEaG1NV1pWWW10aGRHVnRZbVZoVldWNFluQm1SbUZJWlVwaFQyRmpaWGhvUW1kTlkxUmxWbUpHYUVwblUyRkZaV1JsYkdOWVpHaGthR1YzWmxGa1dHSlNZbEppVTJkclpqVm5NV2RGWWxobVRtSkZhRWRuV0dKWlptZGpRbVJFWjNSblltaEtaRUZtV21GT1owbGpVV1ZOWjJSblRtSlJZMWxtUkdaTlowTm1UV0pFWjFab1ZXWndZM2RuUm1ac1ltdGpVV1pTWW5wblVXVkZaazFtUVdObloyaG9RbWhIWVZKaGVHRklZM2hoTVdGNFpsSmphbWhrWVU1a1IySldabHBqTUdOaVpHNWlXbVo2WldKbU1HZGFaMjVrUm1Sb1lrbG5ZV2hPWVVKa1oyVlJZa0ZtUldOblpXaGhZMmhHWm5CaFEySmlaekptU21KdFptRm9VbVJTWlhsaFZHZHVaMDFuVVdkVVpVVmxNR2RaWWxKalZHVTVhRTluWVdOWVoxRmlXV2RqYUVWblJtY3dZbFZqVldkd1owOW5aR05TWkVab2VtVlVaRUptVW1ZMGFHSm5WbUZaWVdkb1VtVjVaMGxqUW1aSFptZGhOR0ZQWVZkbWFtYzRZMkpsVVdJd1p6Vm5jV1pWWlhobGEyTlVhR05tUVdGMGFGcGxWbVJvWjBwaE5tWlNaREppVW1OQ1lXSmhaMlpXWkd0b1dtZEZaM1JtUVdoUFoxWmlVbVZQWlZGbk1tTlpZbUZvVDJONmFHeGxObVpYWmxkak9XWkhZVnBqZUdkWllsTm1WR0pJWTFaa1MyWkZaVVpqU21GRmFFTm5NMmRDWm1GbVEyVnRaRGxuTDJKYVltcGtNR2hoWlVSa1VXaFpZalpoVm1WM1pWSmxRbVJsWWpCaGEyWldaMVJrYldOc1pqQmhSMkZJWkVKb1FtTmtaVVptUm1OTFpsUm5ibU5WWmxKblVHSlZhSGhtVFdSbFpVTm9VbWRaWlVOa01HVk5ZMnRrUW1KUlpEbGlZbWhTWW1oalRtVTBZMVZuTUdFNWFHdGpZV2hzWmsxaldtRkZaRE5sUVdWTWFFTmtlR2RPWTBkbVRHTjRZVlZuY1dKUlkxZGtXbUpuWTFwblNHWnNZMHhvUm1oSWFFVmhaR1ZJWVZWa01HaGFaRlpqYm1kU1pYVm1aR1J1Wms1bGJtaEVaakptWTJKTVprVmpaMmRPYURGblVXSkNaVUZqWTJSVVkxRmpaR2hoWkZkb2EyUktZM1ppV1dGdFpWcGljR1pHYUVobFNtZFBZMk5qZUdOQ1owMWtWR05XYUVabFFtZFNZakJqTldJd1oyUmlSbWRHWkhkaFdHUXlZbkJvVUdkVFlteGhPV1pxWTBka1NHRTVZbTFtVldkWVpHaG9kMlpXWTI1bFVXZFFabUZpTVdoSlkxVm1ZMk5WWkZsb1ZHRmxaVVptVG1WSVlrNW1iV1J3WWxsb1FtRkNZazFpTVdkRFpERmxUbWRYWkZobVNHTk9ZVXhpVkdScmFFWmtkV2hUWlcxaVVtVTFZMU5pZUdoU1pYaG9TR0pTWmpGbVRtSkhaRlpuV21Jd1pGcGxhV1pTWW5wa1lXZFdaWFJpYm1KQllVRmxaR05hWmxwaGJHYzRZbHBpV0dWdFp6UmlUR2RqYUVaamNHaERaV0pqTW1kS1ltMWtZV1ZTWWxKamVXSlVaMjVoVFdGUlkxUm1SV1ZWWmtSbVUyRlNhRFZsVkdkaFpWUmpjMmhaWVdWbGEyRkZZamhtVjJGRllWcG1hMkprWmxKb1JtVjZaVlJqUm1oR1pUUmlZMkZHWTFwb01HRkVZakppZEdGVFlVWmlTR2RHWjA5a1VtZDZhRUZvWVdWSVkwZGliMkpXWVVobU1XUmFaRVZtWTJSQ1pGcGxXbWRSWmtGa1pHSjJaVlpuU0dWR1kwSmxZV1ZGWVc5bGRHVmpZMFZuWTJFclpXTmtVbVF3WkdSa1ZHRlNZbXhsVjJKa2FFZGpOV1V5WkdObk1tUTVaVWRqV21KNFpGbG5ZV2hIWmtSb01HRkVaRkZrTVdOM1p6ZGtVV2g2WjJ0aFpHUkRZbTFtT1djdllscG1ibVE0WVVKbVdtVXhaakZtYldGRlpFVmxjR1ZPWkVGaU1HSkJabHBsV21aSFlteGxNR1ZIYUVoblFtaENZMlJoUm1OR1lVdG5WR2h1WTFWbFVtRmpaekJqZUdKU1pFeGlSR1JuWVdaaFNtRjVaMVpoY21aVlpXaG1VbVY0WmxKa2FHRk9ZVFJvVldNd1l6bGxhMlZoWld4a1RXWlJZa05sUm1KdlpFeGxWMkpXWlZsa1UyWmxabXRoWkdGcllWRmlWMk0xWlV0bFQyRllaMEppU0doUVltNW5SV1ZrWkVob1ZXSXdaRnBvVm1OdWFGSm9kV2hrYUc1bVRtTnVhRVJpYldSc1kwZGlVV2hCWkUxbWFHSkNaRlZtVVdSTVowWmlSV00xWXl0bFNHZG5ZWE5tTldGWlltNWtkR0Z3WjFWamFXWmpaRUZqVFdKRloxRmxSbU5CWkdob09XSktZa2htVW1Kd1kyZGxaR05GWVU1aFlXaFJZbGhoVW1SU1pGTm1hMkUxYURGblJXRllhRTVqVFdkVlpGaG9hR2QzWTBoaWVtSkpZMUJqV1dZd1owbGtWV2RpWWtaaGMySlVZVXhrUm1nd1luZG5TMk5EWmxWaFJXSkhZVkpoVm1FeVlVTm9NR0pzYUZkalJHY3laMlJpU0dkTllVVmxPR0ZTYUVGbGFXSXdaeXRoUVdKNFp6Rm1lR0ZUWlZabVZXWm1aVlppWjJOR1pqQm9RMmg1WmxGa2FHaEpZa0puVW1KMmFFWm1SbWhaWTBaaFNXRjNaazVvUkdKSGFIZGhkR0pHWjJOaFFtVm5aR0pqWW1ONloyZGhhbWRQWmpGaWRHWjNZMUpsTW1ablpqWm5WR2RGWkRGalVtaFRhRkpsVm1oUGFHRm1XR0ZSWVZsaFkyRkZhRVpsTUdkSFowRm1lR0pQWm1aaFVXUkdZbnBpVldKVlpuaGlOR1ZLYUVaa1oyWk1aVkpoZVdkSllsWm5XR1ZJWVVabFFXaEdhRmhsYUdKRFlWUm1NMlZzWVRObVZXUXdaekJrWkdSRVpEQm1ZMmhYWkVGbFVtWjBZVkZqVW1neVlsSmxRbVJpWm10b2NHUnJZMlZuVldWelkxVm1ZMkpTYURCaFpHTlVZVkpqYTJKRllrMWpWR1J2Wkdwb1NXVlRhRVpoUjJoaVpUQmxTbU5oWjBKaVUySmFaVVZsVVdKb1kyTmpTbUZUWTJwamEyaFZZa0poYVdGdmFIZG5XbWh1WlZGb1ZXZFFaa0ZsYzJScllrVm5RV2RTWjBabFVXSlZaVUZsWTJKUlptMWphMlZuWTFWaFJHZHJZbE5tWW1NemFIUm9TMlZVWVc1a1ZXUlNhR05uTUdkNFlWSm5aV1ZJWWtKblYyZGtZVUZtT0docFprWmtRbVpTWXpWalJXaG9ZekJoTDJoQ1lUQmtZMkYzWVVsbWFHZHdZa3RqUjJadVoydGlhR2hYWlZab1dXUlRabVZpYTJWa1oydGtVV2RYWmpWbVMyaGFZa2htYkdKTVpVWmxTR1JHYUZCblYyWkNhR3hrVFdSQ1owUm5jR0oxWW1aa2JHVnNaSFprVW1OdFptTm5WMlJGWm10b2VHZ3habE5uYUdOQ1lWTmtVbUZCWkhSa2QyRlhhR3RrU21oMlkyRm9hbWhKWTJob1dHaFRZa1pqUVdWSlpsWm5WV1pDWWtSaFFtWm5aa2hpVldSUmFITmhOMmhrWkVGalZtVjNaVVprVkdSM1lsbGlSMkZWWWtGak1tVllaRlJpZDJaRFowWm1TR1JDWXpWaldHY3pZbWRuYkdWaFlqRmxTV1pWWkdOblZXZFphRlJsWldWR1kwNWhVR1ZhWWtkaGNHTlVaMGRqVW1KT1ozZGxRMlF4YUVWalEyWlhabXBrVFdaVmFHRmlhbUkwWVdsaFFtSlVaVTVpTldOV1lXaGpVbVJvWkVaaFFtUkdhRzVuUjJKV1lscGxNR0ppYUc1aFdtTjZZbUpuTUdkYVkyNW9SbVpvWWtwalRXaGtabFZtYjJkUlpWVmthMk40WTJablQyRkNaVTFtVW1KWlpsSmhNR1YxWVVsa1JtUk5aalpoVkdSdGFEUmhVV05ZWjBWaFVtTmtabGxrZUdWV1lVOWhZV1JZWVZGbVdXZGphRVZuUm1Nd2FGVmtWV1Z3WlU5bFpHSlNaRVpuZW1aVVlVWm9SV056WjA5bFFtTTRabTVpU21KWFozUm5VMmhHYUVobFJtSkhaRVZtTTJab1pWUmpWR2d5WTFKamNXUlZZbmhtYTJWVVoyVmxVbVpDWTNwaFZtRm9aVXBtTm1SU1l6Sm9VbUZDWkdKb2EyWndhR3RqWldGVlozTm9WV0pQWVVab2MyRmtaMUpuVldFd2FHVmlVR0pVWnpGbk5HTk9ZMnBtTldOUFlrMWllR2c0WVdKa1dtVnVabFpqUzJkRlprWm1TbU5GWTBOaE0yWkNaR0ZrVVdSdFpqbG9hV2hhWjIxbmEyZFZaRWxsUVdaelltNWxVbU5TWmpSbVJHSlZZVlZvUldNdlpWUm9iV1JzWnpCalIyWklaa0psUW1aa1pVWm1SbUZMWWxSaGJtSlZabEprWTJRd1puaG5VbVJsYUVob1oySkRabEJqUldaWmFEUm9XR1JGWTFsak1HTkRaVEZvU1dWNFkwaG9VV2R6WW1obFQySkdhRTFuUldGRlpucGxOV0pQYUVSaWJHVmFabUZrWTJac2FHUm1kR1pUWjBkbFNtWm5ZMXBoU0dKc1kweGtSbUZJWmtWaFpHSklaRlZqTUdWYVpWWm1ibVZTWjNWaVpHSnVZMDVsZG1WU1lXMWlPV1pEWVZkbFoyWlZZVzFpVW1kSFp6aGtaV2REWlRGbGVHZDNaVkpvTUdoS1ppdGpZV0V5YUhCbVJHRkdaa2hpU21kUFlXTmhlR2RDYUUxb1ZHaFdaVVprU21GR1kxVmtOV2h3WVdSb1FtRm9aM2RoVVdOWWFIZG9SbUZCWjJka1kyWnRZMGhvZDJaM1pVVmpSMk5FWlRoaU5HZFdhRzFtYTJSUVkyVmhNV2h6WkZsbFYyRXdaMWxsVkdObGFFWmhUbWRRWmxwbVIyTndaVlJqUjJSU2FFNWxkMk5EWVRGbmJHVlhaa1ZoYm1odlpsUmlUR2RCWldkaU9XUlpaVWRqVW1FMVlsTm5lR0ZTWlhoblNHSlNaVEZoVG1oSFpGWmxXbU13WldKbGJtWmFabnBrV21Gc1pURm5UbVZHWm1ob1NtWk5ZbVJoVldadloxRmpWV1ZyWlZGalRHWmpaa1poY0dkRGFFdGlVMmd3YURCbllXZFNZWGRuYTJKRVpubG5SV2hSWlVob2EyRXhaVTFoVTJSVlpVWmpRV1JMWjJwbmFHWllZMUJoWjJaU1p6aGtWMk5GWTFwa1QyRlFaa0pvUm1GMVpGUmlSbVo0WTNCbllXVXhabHBsTVdKWFpIbGpUV2hpWWxKaU0yRTRZa3RtVW1VelkwRm5RbUZTWW01a09XaHhaRmRvYW1STlpGUm5ZMlZCWkhSbFdtTldZbWhuU21nMmFGSmpNbWRTWkVKb1ltTnJaWEJpYTJObFpsSmphMkpoWkVsa2JHWldaMVZvUTJFd1pqQm9ObVJOWjFOaFoySnBhR1ZuTTJJMVlrdGlXbWg0WkdOa1EyTlNaMWhuYkdoTFlWZGhWbU5zWmxCaFJXVkdabkJvWVdGUlkyMWpPV2hwWTFwaGJXTnJZbFZrWTJScll6Vm9lbVJGWVVWbWQyVk1aMGhpYUdWellWWmhVbWhyWkU1a01HRkhaRWhqUW1aQ1lXUm9SbVZHWVV0bFZHWnVZbFZrVW1kalpUQm9lR1pTWkdWa1EyVlJhR1ZrVUdOV1puaG1iR0pCWmtabFJXTTRaRUpsTVdWdllUSm1SbWgzWlc5a01tVmhhR3RtTkdSYVpWSmhlbWhvWmtOa1EyTnNaV2huVW1kT2FHZGtaMkZ4WjBKblIyVmFaa1JrWVdWSVkydG9abVZZWWtSb2FHUlBaMFZtZW1SS1kxWmlSMkpUWjA1a2RXSmhZVE5rVG1NdllsTmhiV2RrWkVOaVYyRm5ZbFZpYldSU1pVZG1PR1JoYUVSb1ZXZDNaVFJsVjJoc1pUbGxkbVZqYUc1bE1XUkVZVVpqU0dGS1lVOW9ZMlY0WWtKalRXTlVabFppUm1OS1prWmhWV00xWlhCblpHWkNaMmRuTldWUllsZGxjR1ZOWkZObGJHWTFaSFZpVDJZelowNW5UV1ZWWkZobmFHSjNZbFpuYm1oUmFGQmxZV0l4WmtsaVZXTmpZMVZrV1doVVkwMWhWbU0xWTBOb1ZHWnRZWEJpVkdGSGFGSm9UbU4zWTBObk1XZHNaMWRuUldGdVpuQmxTR2hhWlVWamFHUkZZVk5sYldSU1pUVmtVMko0WVZKaWVHWklaMUpsTVdkT1kwZG9WbVJhWXpCaFltUnVabGxtYUdOWlpsSmxWV1YyWlZoa01XTlJaMWxrUW1oM1lrNWxXR2RIWldobVFXTkVaRmxtVm1KT1prOW9VbVpYWTBwa2JXWmhhRkpoVW1SNVlsUm5ibVpOWkZGbFZHRkZhREZsVW1SVFpGSm1WbVZQWjJGaldHRlNaMDFrVDJaQllXZGxibU5ZWW5obVoyRk1ZMDlrUm1WQllqWmlRV1ZvWmxWa09XWkpabXhuWjJJMFlWZGlNbWhOYUVGa1NHRllaa1ZrWVdaVWFERmpTbVZVWWxSb01tSlNaWEZsVldWNFptdGxWR2hqWTBGbmRHUmFZMVpvYUdGS1lqWm5VbVl5WmxKa1FtTmlabXRpY0dKellVeGlVV2hPWW1Sa1NXSm9aVTVoVUdKRFlrWmpVV2hZWlZCa1UyZEJhSGxpVG1ScVpqRmhTV2hPWlVWbFRtZFJaa2RuUTJSalpVeGlWV1YzWjFwaVRXVlhZbGhpYkdOWFpHRm9SMkk1Wldsa1dtWnRaMnRuVldKalpXdG1OV1I2WTBWaVJXUjRhRTVqVldGVlptdG1WbWRVWW0xbGJHSXdaVWRtUkdSc1pFSm9ZV0pyWVhoa1MyTllaREprVFdVM1kyTm1NR040WlZKalpXZElhRUpoVjJKa1pFRm9PV0p5WTFWa2FHZFNaM2hrVW1kb2FFNWlOR05WWmpCbU9XWnJabUZoYkdKTllVZG1SV1V6YUdoblptVkZaRkppT1dWQ2FHUmlSR0ZuWkhOa1EyZERaV3RrUTJaYVpVTmhWbWhYYUVabVIyRkJabVJvUVdaV1lrVm9XbU5ZYUdwaE1XUjFaV1ZpTTJaT2FDdGlWV0pIWVRSa1ptWlBZMFZrZUdZeFpGTmxhR05DWjFOblVtZEJZblJqZDJoWGFHdGxTbU4yWWxsamJXSmFaSEJvUm1KSVpFcGhUMlZqWm5oaVFtWk5aRlpuTVdWR2FFSmxVV1pSWlZsaloySktZbmhuV1dkUVlVUmpWR056WjBkaFUyaG9aRXBvYjJkRllsZGxTbUpOYUZSa1YyWlNabmRoU0dFellqQm1SMkpqWWtoaVoyWlZabU5qVldOWllsUm1aV05HWTA1bVVHWmFaVWRrY0doVWFFZG5VbU5OWW1sa1ZHUm5aREJuUkdaUmFFUmtVbWRJWmsxbFFXSnJZbTVoUjJWWVpEbGtWR0pUWjNoblVtVjRZMGhpVW1jeFpVNW1SMlJXWlZwaE1HaGlZV2xvZEdVMloxbGtNbUo0WjI1bFJtZG9aa3BrVFdoa1pGVmxiMlJSWlZWbWEyaFJaa3huWldoQ1pFcGxUV1JRWlhwalFXaHdZVkJsVm1OelkyMW1SbVY1WTA1bFZtTlJZbWRvVFdoVlprUm5iR2RSYUdGa1RHWklaVkZrUm1SalpFRmxZMkpvWmtobGQyUnJZMkZsVUdaR1lqUmxPV1JVWVVab2JHaDRabU5vUVdneFkyVm9SR0l5WkhSalUyZEdZMGhtUm1oSFlrVmlNMmhvWjFSb1ZHRXlZbEpoY1dOQ1lWWmlhR1JDWkdObFJtYzVZMXBpVTJKNGFFcG1lV0pWWkZoaFJtSlZZV1psVm1RNVpXdG9abVF3YUhSbVMyUktZVlpuVm1KVlpraGhhR1pqWm5CaVQyaERhRVZpYUdKbFkyMW1PV2hPWjFwa2QyVmpZVXBuV21WdWFGWmtTMkpGWWtaaVNtaEZaVU5qTTJoQ1lXRm5VV2h0WVRsb2FXRmFhR3BoZEdKU1prcGphR0Z6WjJoaldHVnJhSGhpUm1WbFpqQmxhMkZXWTFSaGJXVnNZekJuUjJaSVpFSmpRbUZrWlVab1JtVkxaVlJtYm1WVllsSmpaV0Y0WjJkaFdtZE5aMU5tVG1kWllrTmpNR0pOWW10bFFtVlNZbEpvYzJGU2FHZG1WbUowYUZKb2JHWjRhSGhsWVdOc1lWVm9XbVpTWnpOaGEySklZMk5rTVdOWllWTmpaV1ZyWVdSa2EyZFJZbGRqTldWTFoxcGtTR1pzYUV4bFJtUklaVVZrWkdWR1lWSm9iR0ZTYUVobGVXWmtaMmRtUTJOVVpITm5iV2hCWjFObk9HTlhhRVJqTUdONFpEbG5SbU5GWmxGb1lXRkVaVlpuYUdnclpFcGpVV2h2Wm0xbFNtTlRaelZpY0dGSVpUTmtTbVZIWWtwbmVHWkNhRk5uVldFd1l6bGxTbVpDWWtabGFHUm5aMlptVW1ab1pUSm5VV0pYWmtwaFJXRllZekZoTVdGbllrZGlTR1k1YUcxalZXaFlabWhuZDJaV1oyNWxVV1ZRWW1GaU1XSkphRlZvWTJoVlpWbGtWR2hsWTBab1RXWmlZa3hqUTJGTmFFRmtUV2g0WVU1bGQyVkRaREZpYkdSWGFFVmhibWR3WkVob1dtUkZaa1poZFdWVFpXMW5NV1JwWjFsaFVtaFNZbmhpU0dKU1lURm1UbVpIWlZaa1dtTXdZMkptYm1aWlpuVmxXbVJyWjNCbFRtUkdZV2hrU21OTlptUmxWV2R2WmxGa1ZXaHJabEZtVEdaamFFWmpTV2hMWjFsbFZHTkpaekJqU21kcllrRm9PV0ZIWVdsamNHTkJaa05oVldaTlpWVm1SMlJGWkVGb1VHVktZbE5vWTJoWllXSm5WV2hGYURobldHZDRZMjlvWTJkUFpXdGxWV1E0WkVkbFFXRm5aVzlqVG1oV1oyZG1lR1JZWjIxaWRHZFFaa1psUkdOallsUmpXR1ZVYUhOaFNHaENZMmxuYzJKclpGVmhlR1pHWmtoalpXUlJZM05sUTJSbVpVSm1TbUUyWTFKbU1tUlNZMEpsWW1KclpYQmthMk5sWWxWa2MySlZaR05qVldnNWFGbGhSMlpWWkhkb1JXSlBaVzFqTkdOcFowOW9lV0paYUZab1lXRlhaV3hrWldWQmFIbG1TbUpMWlVSaVZXWTVhRVZoV0dZelp6UmtiR2hFWldsalFXZ3habHBrYldFNFkxTmxZMk5vWW05b04yWlhabEpoT1dGRVpFeG9aMmhHWm1Ob1EySlRaa1pqTUdGQ2FGZGlNV1ZDYUVsa1JtYzRZVEZrUW1WcVluaGxWMlpQWkRGalpHSTNZV1ZuU0dkQ1pWZG1aR2RCWVRsamNtSlZaR2hrVW1oNFkxSmlhMkUxWlhobldHZ3laVlpuYTJWaFlteG5UV05hWjBWaE0yaEJaMHhrVjJWV1pGbGpVMlZqWjJkbE9XVnhaVVZqVkdSM1prWmpUV1ZFYUZsaVptaFVaRk5sUm1GWlpFVmhkMkZ3WjB4aVJXUjZZMVZrTm1kTmFIbG9SV1JpWTBSaWFXTmFaRmxpUldKc1lrWmlNV2hCWm1oa05HUkRZMFpuYTJkUlltdGxSbVJTWlZsbE1tRk5ZbWxoVG1KdVlsVm1lV0phWjA5bFltVm9ZVUZvUzJOSGFFSm5PR2RMWVZGbVVXSmpZMjFuVDJab1kyaGlOR2hHWlZob01XZFNaRVZvVjJWU1lqRm9SV2RZWWs1alRXZFZabGhsYUdKM1pWWmxibUZSYUZCa1lXTXhZa3BsUjJOT1pFSmtTbVJIWjB0amFHTXhabEJtVFdoRFkwbG1ZV1ZUWldobk1HSlFhRkZoZUdkQlpsSmhWMmR1WkhCa1dtSmFaRUppVm1GblpFNWtVMmQzWW5kaFJHSkdaM2hpWW1GSVkxSm5NV1pPYUVkblZtVmFaREJtWW1GdVkxcG5lbVJpWmpCaVdtTnVaMFpvYUdWS1pWUm1aR1pWWTNObVFXRmxZMFZqVVdWTVpHTmpSbVZ3YUVOaVltUXlaMHBuYldOaFlsSm1VbU41WjFSamJtZE5aVkZpVm1WcllqQmtSbVJCWVZaa2QyWmtaMXBtZDJaMFkxRmxUMlZSWkZsbU9HaFZabFpqV21aUFprbGpVbVk0YUUxa1FtVkNaV2RtTDJSUFpVaGplR013WmtSbk1tWjBabE5vUm1KSVkwWmhSMmhGYUROamFHSlVaVlJtTW1kU1lYRmpWV1ozWVZsaVZHSmpZVkpvY0dSNllWWmphR2hLWmpaa1VtUXlZMUptUW1WaVoydGtjR2RyWkdWaVZXaHpZMVZvWTJOU1lUQmxTR1ZVWkZWbE1HTmxaRkJuVkdReFpEUmhSR1pEWmsxalNtWk5ZMEpvV1doTlpWUm9RMkZHWkVWaFltTjRaalJrVEdOWVlVZGpkR0YzWVZGaWJXSTVabWxvV21SdFpXdG1WV1ZqWld0aU5XTjZZa1ZqUW1oR1kwVmxXR1JYWWsxblZtRlVhRzFrYkdZd1lrZG1TR2RDWTBKalpHaEdaRVpuUzJOU1lXcGhNR05tWWtsamVHUTBZV1ZrVEdkRVlUaGhRMlJNWkZabE9HVjFZbGhrUm1kbllqQmpSbWhWYUVGblRXSkhaSGRsTkdWeGFHRmxhMmcwWmxwaFYyVXpaelZoWW1kRFpYaGpiR2hIWkU1bFVtUk5aRGxoUldSVFpIUm1SV2RMWkVOaE1XUk1aa05qV0daR1ltSm9VMlZCWkU1aVlXaEJaMnBrTUdkb1prOWhTR1JPWlc1blJXRnRaRFJqVjJoVFpGZGxXbUV4WVZOaWFHUkNaMU5uVW1SQlpuUm5kMkZYWW10a1NtVjJabGxuYldWWllqZG1WV0ZUWTFsalltaEpaVlppTldSTlprZGtVbVJyWmtGalVtVnJaRUZtVjJGUVlVWm9SV2d6WWtOa1dHRlNZMDVqVTJWb1kzQmxOMmhpWVdwaWMySkdaa1ptYW1kQ1oyRmpWbU51WVZGaFVHaGhZekZuU1doVlpXTmtWV0paWTFSblpXTkdZVTVoVUdaYWFFZG9jR05OWTBkaVVtVktaMmRrU1dkV1pHeGhWMlJGWkc1amNHWklabHBuUldOR1puVm5VMk50WlZKaU5XUlRZbmhqVW1aNGFFSm1lR1l3WTFwblZXVlNaemhrYm1WWlpFRmphMmczWlVwbFoyaEZhSFpvUm1WblkzaGlUV2RKWVZWalVtTjJaa2RqWjJjeFlrMWtUMlZJWjBKaFEyRmlhREppU21adFlXRm9VbWRTWlhsblZHVnVaMDFoVVdSVVpFVmxNV0ZTWlZObFVXSndZMDlsWVdkSFlWVm1lV2RqWkVWaVJtTXdhRlZrVldKd2FFOW5aR05TWmtabmVtaFVZVVpoUm1JMFpXTmlSbVJhWW5WaVJHUjZZamhuWVdKWVkxTmtTbVZKWVdKb1JHTlJabU5uUjJOSFpGSm9NbVZWWVRCbk1HTmtaRVJtTUdkallsZGlRV0ZSWm14alVXVlNZekpoVW1OQ1lXSmxhMk53Wld0aFpXWlZaWE5sVldSalkxVmtRV2RWWVZGbVZHRk9aRmRpWkdoSFl6VmpNbU5qWmpKaE9XZEhZMXBoZUdKWlpGTmtVbUpFWnpGalJXWlJZa0ZvUVdOTVoxaGtlbUU0YUU5alIyZDZZemhqYm1GaFpVTmlXbVZIWldObWJHWk9aSHBtVm1ob1oydGpSR1ZGWjJobk1XWmpaa0ZuVTJKa1p6Qm1SV1JEWVZKa1NXVmtZa0ZrY0dkblpGUmtibU5WWjFKblkySXdZbmhsVW1kbFlVaG1RbVJYWVdSb1FXYzVZWEpuUVdKR2FFVmliR0ZGWXpCblJXSXlaMVZqTUdOalpYZGxTV2RvWTNCa1MyWklZVkZrT1dKSVprWmhaMk5GWVZOaFNtTnNZWEJuYTJoR1oxZG9RV2d4WlV0aFJHRlpZV05tU0dGWVlUQmtaR2hHWmxKa2JHUlNZMGhpZVdGa1ptZG5RMmRVWVhObGJXVkJaMU5qT0dWWFoxUmliR0pHWkRGblNHSm9hRFJrZEdoRVkwVmxTV0V6WWtWa2EyZDBZMnBoV1dScVowbGhhR0ZZWkZObVJtTldaRmRtVW1SQ1prMWtWR2RXWVVablNtaEdaMVZuTldod1pHUmpRbWhuYUhSaVUyZElaMmhoTjJoVFltdGlOV0l4WVVWbVdHWk9ZazFuVldOWVoyaGlkMkZXWjI1aWVHWklZMXBqVVdaS1pFZG5VR05vWkVwblkySk1aMEZvYjJGbVkwbGxWMkpSYUZOb1ZtUXhZbVJpZDJKR1lXeGxhMmhSWkZKbWVtWlJZMFZvVFdKQlltZGhhR0pDWkVkblVtTjRaRWhqZUdneFpuaG1VbUZxWTJSbVRtUkhaVlpvV21Zd1ptSm1ibVZhWkhwbVltZ3dhRnBuYm1OR1kyaG9TV0psYUUxbVFtWTFZa1puUVdaQloyOWhUR1JsWmtGak5HTkxaRXBuYW1oR2FHOW1SbVJzWjJkbk9XUkhaMWhoVFdaWFpWVm1WV1V3WlVaaVVtWXlaRzltUTJOS1pXbG5UV1pTWVdab1JXTkdaamhqUW1OUmFFbG1TR0ZLWldobE9HRk5aMEpvUW1kbllTOWhUMlZHWkZwbWVXRkZZMjFoYzJaSGFFZGhaMkkwWms5b1YySnFaRGhuWW1oU1pXMWhhR2h4WWtKbk1XVkdabUZvU1doNFpVSm5lbVZXWVdobVNtUTJhRkpqTW1GU1prSmhZbU5yWkhCa2EyaGxZVkpqV1dWa1kyWmtWR1ZqWldSalZHRlNhR3hrVjJOa1owZG1OV1V5WW1Obk1tTTVaVWRrWW1jeFlUUmhZMmhJWjBOaFkySkdZbEpqUW1jd1psRmxWV1ZwYUVGaVptUlVaME5oUldKMFpFMW5iV1JyWjBwaFkyVm5ZMmRuYldKWVltZGxPR0phWlVka1FXTmFaR0ptVkdSdGFFWm9PV1pIWjBOb2RHTnlZMlJrUm1WR1kwdGpWR2R1WkZWblVtWmpaREJqZUdGU1lXVm5TR2RDWjFkbVNtZHJhRzltTDJWQ1lqQm9XV0V2WTFKaGFHZDBaMU5qVldjd2FEbG9hMlpoWVd4b1RXZGFaVVZvTTJKQlpFeGtWMlJXWjFsblUySmxaR3RtWkdGelkwWm1VMmRaWlVSa1RtUXpaV05pTUdSWGFFUmhOV1pMWTBob1ZtUkJZMXBtVVdaSFlVWmhOMmRhWlZkaldtUjJabEZuUjJSa1prbGpVbU5uWjFGaU9HZEhaMUppTkdSMFpFTmpSV1JSWlc1alZXZ3daVFZvUm1OWloyMWhXbVJ3WTBaalNHVktaazluWTJWNFlVSmpUV1JVWkZaalJtRktZa1pvVldJMVptaGhTV2hHWVVGbE5XVkZaMjVoYjJaMVpVRmlaMlpqWlhsalYyZFlZazVqVW1KVlpsZGpOV1ZzYUZGaU1tVmpZMkZsWVdZeFpWRmxWV2hNWTNoalNtUmlZazFtVVdoQ1owSmhSMmg1WkVsbVlXUllhR3hvZEdNMVowSmxNMkpPWTFkblJXVnVaWEJoU0dkYVkwVm1SbVoxWlZOb2JXSlNZelZqVTJGNFpWSmllR1ZJWlZWamEyWkdabFZpUVdWV1ltVm9ZbUp1WjFwb2VtZGlhREJoV21odVpFWmphR2hLWjAxaFpHSlZZMjloVVdkWFpERm1PR2hvWTJObVJtSndaME5vWW1jeVlVcGliV1ZoWmxKblVtUjVhRlJuYVdVMGFGcGhVV2hIWTJSbVVtRlRZVkppVm1OUFkyRm9XR1pSWkZsbVkyVkZZVVpoTUdoWFlsRmpTbUpCYUVwblZXWk5hRGhvUjJOQ1pEUm5jMmhMYUZGb1dXUjRZVUZtVkdKTlpXUm5VbVZ1WjBaaVltaEZZWHBvTkdaSFprRmpVMlpqYUN0bVIyWnNhRnBoWkdOamFFRm1UV2RPWjFoa2VHWkpZbWhpWW1OWFlsSm9RbUppWTJ0bmNHSnJaR1ZrVldGeloxVm1ZMlJTWmpCbFpHRlVZVlZsYzJaVVprbG1SR1p6Wkd0aFVHVlhZemxsVDJWTlpURmtOV0ppWmtobE0yTnpaVEZuV0doQ1pUQmlWR0pEWlhkak5XRklZbEZoYW1kMFpuTm1SMlZUWVZaa1ltRktaVlZsWkdVdlpVVm9SV2hSWjFwb1IyZFJZMEpoUjJOUllVSmxXV2c0WWxWalZHSmpaa3BrWkdaRFp6bGlXR0ZVWVdsaFJXaG1hRVJvUVdOUllsbG9VR2Q2WjJoaFptWmxaVUZqT0dNdllVZGpiR2N3WjJsaldHZFVhR3hoTkdKVlpEQmhPV1ZyWjJGamJHRk5ZbHBuUldZellVRm1UR1pDWjBabE9HTmxaRlZtUldOa1ptdGhVV1ZYWkRWblMyVmFZVWhtYkdGTVlrWmhTR2hGWkZablZtUlZaazVqU21OQ1kwUmtjMkkyYUU5aFUyVmpaREppUm1kcGFFbGhXV1JSWkZGbFVXTTRZa1JtUldOUlkyZG1SR0pWWlhkaU5HVkVZMnRqU21KNVkxbGthV2cxWkc1blVtZERaMEZpUW1aS1pqRmhPR2RaWVVabFFXZEZaMDFuUjJoNFpUQmhhR0ZRWTFabk5HRnJaRVZtTTJaU1pVMW9VMkZuWVdkaVoyZFlhSHBvUVdWWllVZGtSR1ZqWVN0blZtRnVaWGhuWW1SWmFHeGxTbVpRWkZkb01HVlpaMVJtWldGR1kwNW1VR0phWWtka2NHTlVhRWRsVW1WT2FIZGlRMmQzWlhOaFZHUlNaR2xqT0daV2FFdG1hMmRHWm0xaFdXSkhaMUprTldSVFpIaGxVbVo0WmtoaFVtY3hZVTVvUjJWV1lWcGhNR0ppWTI1aldtRjZaRTlrTUdkYWFEVmxSbUZuWVU1allXZFlaVEJvYjJGUlpWVmhhMmRSWlV4alkyZEdZM0JrUTJKaVlqSmtTbVJ0WW1GalVtWlNaSGxtVkdGdVprMWtVR2hVWkVWblZtSmFaRWhqVm1Jd1owaG9UMlp1YUhCbmJtWlFaVUZvTkdkcVoxVm5WbVZrWkU5bFNXaFdaR3RoTm1KSVl6RmlPR1ZJWWs5bVFtUTRaWHBqVW1ZeVkzUmtUV1JEWW01b1JtRlBZVkpsTTJkb1lXVmtWR1l6Wmxabk9HTlhaV2hqUVdobVpHTmlRV2ROWTA1blNHWnNZWE5pY0daVFpsSmpjMmhLWmtwbWQyY3daSE5rWldOV1kxbGpWV1JaWVZKb1VXVlZhRnBpZUdOc1oxZG1aR1pIWXpWak1tTmpaekpoT1dGSFpGcGplR2RaWlZOb1ZHRklhRlptUzJKRlpVWm5TbUZsYUVOaU1tTkdZVTFuVVdWdVkwcGtMMkZhWkdwb01HUXJhR05pYTJNMVpucGlSV1pGWW5obVRtRlZZbFZtYTJKV1psUmxiV1JzWmpCbFIyaElZMEpuUW1Ka1prVmpOV1pMYUZKamJtVXhaa1ppVDJKM1kxVmlRMk5rYUdka09HRmhaazltTVdab1luSmhWR040WjFGb2JHaEVZbXhtYjJaeWFGaGtWR05CWm5OblNXRjRabEppVW1oSFkyNWtkMk5NWVZWa1VXSktaV0ZsVFdWNFoxSmtjV1JRWldsaVdXVkVZMGxsZW1aR1lreGhRMkZZWkVWbVRtaEdZa1ZvVVdSNlpGWmtibUpTWjNWa1pHVnVhRTVrZG1GU1kyMWxZMlJYYUVWbGEyRjRaVEZuVTJSb1prSm9VMmhTWkVKalJtRjNZMVZvYTJodlp6ZGlTMkpwYURoaU5tVkhaMmRsTUdoRGFGQmlSV05rWWsxb1ZXZElhSFJoU21SR1oxVm9OV0p3WkdSaVFtTm9ZWGRqVVdGWVkxSm1VbWhUYUd0aU5XTXhaa1ZqV0dOT1lVMW5WV0pZWW1obWQyZFdaVzVqZUdGaWFFbGllR0owWTBoaFptZDZZbXhqWm1KT1pYZGxVbWhRWldWbGJtTlNZbFJqVkdSU1kzQm9kMlpXWVRGaGJHWmxZa2RvYVdFMGFGQmtUR2hTWkVwbloyTk9aRk5uZDJKM1prUm9SbVo0WTNoaVFXVlJaRVpvVG1WRlkxVmtaR1pwWW1KaWJtZDBaM3BsVDJFd1p6bG1kV0ZHWm1oaFVtZE5aVmxtTVdFNFlrWmpVV1JXYUVWalEyZGxZbFpoV21SdlpXSmlNbWRLWTIxa1lXSlNZMUpqZVdSVWFHNWtUV1ZSWTFSaFJXRXhZMUprVTJKU1lWWmlUMk5oWkZoa1VXVlpZV1ZvUW1GVllqaGpSMlZDWVd4a1FXUkRaMnhsYTJNMllrTmxlR0pzWXpSblltUnJhR2hsY0dkRVpIcGhPV05pYUVob1dHWXhZWE5oUldnelkyaGpWR0ZVWlRKalVtUnhhRlZoZUdOclpWUmhZMkpCYUhSb1dtWldabWhtU1dkMWFFUm1lV0V3WlZOalVtZEZaM0JvYTJSbFlsVm5jMmhWWm1OalVtVXdabVJrVkdkU1lteGpWMkprWWtka1pHWjBaVmRpVjJnNVpVZG5XbUY0WjFsaFUyTlVZVWhsVm1GTFlrVmhSbVpKYUZwbVFXWnVZWGhvZDJSUloyMW5PV1pwWlZwbmJXaHJhRlZvWTJacllUVm9lbVpGWlVWa1VXRkdZbGhtZUdWc1lVaG9RV1pVWVRCbU4yaFVZME5sYTJSU1owMW1WbWM0WVZwa1FtRnFhSGhvV0dkS1pubGtRV1pWYUZCaWFXSlNZVmRtWVdWUlpqaG5hbU5ZWVVWblVXZHFZVU5tVldaallUTm5RbWg0WkZsbU1HTk1aekZtTVdGTFpsZGtlbUpzWkU1alJHZFNaMjlsVTJKYVpqQmhZMmhwWjBaaVEyWkJaMHBpVFdWRVpFRmhSV0pYWjI1b1JXUldZMU5oVldGRlpscGpRbVZJWlRGa2RXSk1ZMVpvYkdoMlpWSm9iV05qWlZkaFJXSnJaSGhvTVdoVFpHaGpRbVJUWmxKa1FXaHpaMmxqU0dKNFoxbGpObVpOWTBOaWFHTndaMGhtUm1ob1pVOW9ZMko0WjBKb1RXTlVaRlpsUm1GS1pFWmxWV0UxWjNCa1pHZENZV2hsZDJWUlkxTm1RbUZTWkZaaFJXYzFaR3RrUW1NeGFHeGlUV1pWWkZobmFHRjNaRlpuYm1aUllsQmhZV1l4WkVsb1ZXVmpaMVZuV1dkVVkyVmlSbVZPWjFCaFpXZ3laM0JvWW1SRllsVmpZMmcwWlZGbloyWndZMWxqWW1SVWFFbGpUMkZKWjNkbGJHUjFZVlpsTW1KUlpuUm9RV2N4WVRCaGFXUkZaVEpoU1dOQ1psWmtaMlpHWWpCbFkyaHRaWEJuZW1kYVluaG5TbWh1WjBkamVHWktaMlJqV1dVd1lVMWhXbUpZWVcxbU5HVk1ZMk5qUm1ad1lrTm1ZbVl5WkVwaGJXTmhaRkpvVW1WNVoxUm9ibUpOWlZGbVZHRkZZVEZqVW1kVFpGSmxWbVpIYUZCalZHRjRabEpqU1dJd1lUaGlUR2RJWVZGbFZXTmFZbVJpVVdONFpIcGxXR0pHWVdobE1HSlhZbXhvV21Nd1pVUmtNbUYwWWxOblJtRklaVVpsUjJSRllqTmhhR1ZVWTFSa01tUlNaWEZqVldkNFoydG9WR0ZqWjBaamJHTmFZME5qYTJjMWFEWmpWR1I2WmtGbFNtaEtaWGhvYkdkeFprSm9aMk5PWkdSalRtWnNZMVZrWkdGVFluZG5VbVZYWkZsb2JtUjBZV3BoV1dGSVkzQmxVR0ppWldwbGQyRlRZVlJvU0daV1owdGpSV1ZHWTBwbVJXWkRaVE5pUW1kaGFGRmxiV1U1Wm1sbVdtRnRZMnRrVldaaFowVmlOV2hwWVVKa2EyUjRabEZqVkdaRllXeG5RbVphWlVkbGJHTXdaVWRuU0dWQ1prSm5aR05HWVVaaVMyaFVaVzVrVldOU1ptTm5NR0Y0WkZKbFpXTklaVUpuU21Ga1pFRm1aR05xWmtKamJHWjNZelJsUm1kU1pUQmxTR1JIWjNkaFdXaHFZa2xoYkdWTmFFVmpSV0o1WjFKb1JHVkZaa0ZpVldkalprSm1VV1Z6Wm5KaFJtWnRabVJrUjJWYVowaGlSV05tWmxobFJHWm9ZazlvUldaNllrcGhWbWhIWmxOa1RtTjFaMkZvTTJWT1p5OWlWR0V5WnpSbE9HUkZhR3RrZUdNeFlWTm9hR0ZDYUZOaVVtTkJaWFJpZDJSWFltdGxTbVoyWTFsaGJXRmFZM0JsUm1WSFkyaGpUMkZsWkhobVoySlpaa0prVW1obllXRm1SMmg2WkVWb2FHSlFZMVpvT0dNMGFGRmpWMmhzWlZKaFVXTm9abTltT1dKWFkwTmlRbWREWlV4bmFtTkJaVFZpUldOVWFIZGpVR2hrWnpCbU5HaFZZVXBqVldNNGFGUmlTbVZHWWs1bVNHaE5aa05uU1dOaFlWTmlhR1l3WWxCbVVtRjRabGxqUW1SRlltMW5VbVJhWmxwb1JXRnNaQzlpV0dGSFoxSmtNR05UWWpCbVFtYzBZa1pqUW1oU1owSm1UV0l4WmxwaE1HRmlZMjVqV21WNlptSm9NR1phWTI1bVJtaG9aa3BtVFdKa1oxVm5iMlJSWVZWamEySlJaMHhtWTJGR1lVbGpWMk5LYUhsbmMyUXhaMXBsTW1kelppdGxRV0pUWVZGaFVXZFZaMVZpTVdKYVpraGpWbVl3YUVobFQyZHVaSEJtYm1KUVlrRm1OR1JxWVZWa1ZtRmFaRk5rWkdKVmFGWmhObVZVYUVab1pHTTBaMXBvYTJaT2FHaGxTR1ZJWWpWbVltWkhaa1ppZEdSSFkwVmpNMkpvWlZSa1ZHY3lhRkpoY1dGVlkzaG5hMlpVWm1Ob1FXUjBaRnBpVm1Wb1kwcG1ObVpTYURKbVVXVlVabUprYUdSWllqUmtaV1pWWWs1blFXTlBZbFpoVW1WUGFGRmtNbVJaWTJWaVVHUlRhR3RpSzJoamFESmtiR1JpYUZwb2QyUkJaa2huVjJaWFpWcGtabWhIWWxabWRHTkpZa2xtV0daQ1ptRmpVV1Z0WVRsbWFXZGFZVzFqYTJKVllXTmphMlExWTNwa1JXaEZhSGhoVG1OQ1kxRm1SbVpqWVVob1ZXVk9ZVEJvUjJGSVlrSmxRbUprWkVaaVJtZExabFJtYm1oVlpWSm9ZMmN3WW5oaFdXTlpaekZsY0doWFltUmtRV0k1YUhKaVZXRm9ZbEptZUdoU1pHaGpUbWcwWjBSamEyRmFZbTlrVVdkR1pVMWtXbUpGWkROaFFXRk1abGRpVm1aWlpsTm5aV2hyYUdSamMyZERZVmRsUVdSaFpVNW9hbVpaYUdabFYyZDVaRlpqUldWVVlWRmtaMk5ZWWtKa1JHTnphRFprVG1kNVpXTmpjV2RMWW1saVNtUlJZbEpoYTJKNFkyOWxVMk5zWm1obVkyWkdhRVpvYTJFdmFFUmtaMmN3YURkbFQyRjZZVmxuYzJOSFlXbGpRV1JDWWtwbk1XSjRZazFoVldkR1pFVmhVR1JSWlVGaVFXZHhaVWxqUm1aRlp5OW5SR2d6WWxKbVdtWklZMnRtWkdNeFlWTm5iR1JzWjAxbVZXTllZMmhvZDJGV1lXNW5VV2hRWW1GaE1XRkpZbFZuWTJKVlpscGxSbU5QWjFGaFJtZFFaazVpYldOd2FFOW1SMlZTYUhOb2EyUlJaM2hqUVdoR1owaG5RV05WWjFCalRHaFJaRmxoYldSVFoyNWthR1pzWmxOaGQySldabTVqUm1KQ1l6QmpVbVpIWTFGaVNXTTRaVXBpZVdSV1pEbG9SV0pCWm05bGIyRlJZVkZpYkdWdFlXUm5WV1p2WlZGaFZXVnJZMUZuVEdGalprWm5jR1pEYUdKbE1tVktaMjFvVDJjeFlrVm5iV05IWlhsa1JtSmxZMVJuUldGV1lUZG9VMkZTWWxabFQyZGhaRmhoVVdOWlltTmpSV05HWnpCb1ZXVlZhSEJsVDJOa1pWSm9SbU0zWjBobWJHZEdaR3hsWTJSR1p6UmpiV0ZFWWpObFpHRlBaa1poUTJOV1pGQmpSV1o1WmxKblZHaFNaWHBvV21GeFpsUmlVV2hqWTA1aVkyaEJZVTVqUzJGU1pFSmxTbVV6WVZKbmVtRkNhRWxqV21Nd1owNWliMlZWYURCbGMyTlZaR05tVW1Fd2FHUmpWR0pTWkd4a1YyaGtaVWRrTldNeVpHTm9NbWM1WmtkbFltTXdaMHBsWVdSQ1psTmpXbUpGWVdKb2VHTTBZMHhrV0dkSVlVSm1TR2hSWjI1bmJHRXphR05vTTJkdlprSm5ZMkpyWjJobmVtaFJZV3RrVm1kQ1lXVm5NR1pyWmxabFZHWnRZbXhsTUdKSFpraGpRbWRDWVdSaVJtWkdZMHRoVkdadVlWVm9VbWRsYUhobloyVmFaVTFuVTJST1lWbGtRMll3WVdOaGFXZEdZVlpsZUdWNGFGZG1lR0ZOYUhGbFZXTXhaa1ppTm1ka1owWmtUV05KWmtKbFdHSnJaRWhsWTJneFlsbGhVMmRsYUd0b1pHaHJhRkZuVjJjMVkwdGtXbVZJWVd4blRHVkdaa2huUldaa1lsTmhVV0ZXWlZGa1FtZFdZVFZuZFdaa1oyNW9UbUYyWWxKb2JXRmpZVmRuUldSclluaGhNV0ZUWVdoaFFtRmlaRmhqZVdKR2FIZG5WMmhyWkVwbmRtRlpaRzFrV21Gd1kwWm9TR0ZLWjA5bFRHTm9ZbXhtUVdKYVlqRm9SbU5LWkVab1ZXRTFZbkJpWkdWQ1lXaGtkMkZSWlZoblVtSmFZMEZpYTJaQllXeGhVV1Y2WTNkbFdXVklZMmxoZDJad1owSm1hbVJGWTBKbVQyUlNaekZvUVdaTlkwSm1TbWhYWVVObWFHaHZaRWxqVEdORVp6VmtWR1ZDWWtKbVRXSTBZMEppVVdKclpFVmxXR0ZUWVRSbVNXTk5aMEpoWjJjcmFFUmxNbUp2YUhKb1FtTkZZa0ZuYW1kSVpGRmtRbWRPWWxoaGQyTk5ZalpuVEdaVFkwbGhObWhKWjBGamFHUnVZVWhtYTJGYVlVWmxaR2RTWVVWaU5tZFZZV3RqVVdkTWFHTmpSbU53WTBOb1ltWXlZa3BrYldGaFpGSm9VbWg1WTBka1JHTktZa05vVkdSQ1pqbGlVbWhXWmtKalZtTkhhRkJsVkdONFpsSmpTV013Wnpoa1RHTkhZMUZpVFdWS1lsQmtVbVpHWjNablZXTkdaVVpsY0dSYVpXeG9PV1F3WmxWbU1tWnphRWRpV0dGRWFHZGxWbWRJWVZGblkyRm1ZMEZvUkdaT1pYaG1aV1pTYUd0a1ZHUmpZVUZrZEdWYVlsWmlhR2hLWnpabVVtRXlaRkpoUW1kaVpXaGpaMmRvWWt4bVVtTTFhRWRrVUdaNFp6QmlWbWRhYUhobGJHWlhaR1JtUjJJMVl6SmpZMmd5WWpsb1IyTmFZbmhuV1dkVFlsUm1TR2hXWWt0alIyWkJhRUpoUldWR1ptNWhRbU5UYUVWaVIyYzVhRGhoWldGSVpXTmlWV0pLYUd0b1pHTjZabFJvUldONFlVWm9RV2N3Wld0alNtSlZhRzFpYkdVNFpFTmhNbU5LWkVKaFpXSldZMFZsWldGU1pETmhkMkZaWTJabk1tZGFaMUptWldkSVprSmpWMlZrWkVGak9XWnlaVlZpYUdSU1puaGlVbWRvWms1ak5HWlZaVEJrWTJGM1owbGlhR2h3Wmt0b1NHTlJaRGxvU0daR1lXZG1SV2RUWTFwbk1HWmtZbmxsVm1OSVpuUmlXbWRqWmxoa2JHRk9hRVppUTJaTlkxVmxSV0pYWm1ObFdtTldZbTVrVW1OMVoyUmtibU5PWjNabVVtTnRhR05rVjJaRlpHdGhlR1V4WjFOb2FHTm5aRWRpUkdWRlowbGxhbWRXWTBSbE1HZHVZMHRtZVdORloyaGtSbU5IWVRsalQyZEpZMUppUW1KVFpGVm1NR0k1WTBwaVFtaEdaMmhsWjJobFlVUm5TbUozYUZGbFdHVlNaMUpoVTJOclpqVmhNV05GWWxoblRtRk5aVlZpV0dOb1lYZGlWbVZwYUVKbVNHUkphR2RsUldVcloyTmxWV1paWjFSalpXUkdZVTVsVUdGYVpVZG5jR1ZVWkVka1VtZE9ZWGRuUVdoclkwcGxPR0pGYUc1bWNHZElZbHBoUldOR1lYVmpVMlJ0WTFKaU5XaFRaekJpYkdRMFlVVm5WR2RrYUU1aFIyaFdaRnBtTUdSaVoyNWhXbVI2WjJKbk1HUmFaMjVuU0dGc2FIQmlRMkpLWlZKa2FHRm1Za0ptWjJoMFpHWmxTMmRSWjI5b1NHUlpaRk5pUldWeFprcG5iR2R2YUROa1ZHVnRZVFJpVVdORFptaGxaMmhtYUVObmEyRkZaa2hvU21OcVptOW1XV1psWlVWaWFHY3daME5oYldKQ1pVOWxaR1pTWTBaaGVtZFVZa1ppUm1jMFltTmhSbUZhWnpCalJHVXlZM05sUVdGVlpWTmpWV1pVWlZGaVZHRmFaRlJuUVdGVGFFVmhPV1ZWWnpGalJXSmlaVXBtUldGTmFGRm1RbUZTWVhkbFJtRkRabmxsYzJoWGFGbG5hMkp2WVhkbVRXRlJaa3BoU0dkbVlqSmxTbUpXWWtKbVJtVTBhR1ZsWm1kWVlWWm1ZMlpqWkRKaE9XZEhaMXBtZUdaWlpsTmxWR05JYUZaa1MySkZZa0ZoT1dkT1kwSm9NV1J3WkdGbVVXWnRaRGxoYVdoYVlXMW5hMk5WWldObGEyRTFZbnBqUjJoQlpWWmhUbUpVWmtWbmJHRjFaazFrTW1KQ1pEUmhUV1J1WWtKb1FtTmtaVVpvUm1OTFkxUmhibUZWYUZKbFkyTXdZM2hrV21SUVkxaGtRbU5NYUdSalJXUnJZU3RuU0daR1pXTm1iR2RFWlRGbmQyRXlaVlZoTUdKa1lYUm5ZV2huWTJkamVtaEZZak5tUVdGTVpGZGxWbWhaYUZOaFpXTnJZV1JqYTJoUmFGZGhOV1ZMWkU1bGFtVjNhR1poVVdKVFprNW1WR0pJWVZGaVZXaERZMlpqU0daU1luVm5aR2h1WTA1b2RtSlNZVzFpWTJKWFpVVm1hMkozWkc5b1VtVkdZMFZqUTJSR1pVVm5ZMlJ3WVZWbmFHUkNZbXBoV1dOcFp6bGpaMlZJWVZoak5XWnJaV05pZUdkQ1pFMW9WR1ZXWlVabVNtUkdZbFZqTldad1oyUm5RbUpzWVRSblJtaDZaWE5tV1dORVkydG5OV0ZzWjBWbVdHUktZVkppVkdOSVkyZGtNV05XWkc1aVNXUktaV0ZtTVdSd1lrRm5abWgzWWs1alRHWkxaVUprZDJaa1pFMWlSR1ZzWlZSa1FtTkNaMDFrTVdOQmFHeGtRbUpPYUU5b1NHZHdZMGhoV21oRlpVWmhkV0pUWm1wbGJHRjNaMUZoTUdGQlp6VmxWbUpGWWpWb1JXVkJZbTVuZUdJd2FHSm9ibVphWkhwalRXUnJabkJoVG1GR1lXaGpTbU5OWjJSalVXUjRhRVptU0dOQllXUm1abUpQWlZKaFZXRk5abUpqTW1WdllYbG9XbVpTWjFGaVoyaFNaek5oVG1STVoxcGxhMmN4WmxKbVUyZFNZVlpuVDJKaFlsTmtTbVJhYUVsaWEyTkZaamxpV0dkVlkyOWpUR1ZpWTJwbWRHVjZZVlJqUm1aR1pEUmtZMlpHWmxwaU1XZENabmxpTUdGSVoxZGthbVZKWkZOalYyTnFaMk5tWkdOVVl6SmhkMmRzWkZkaGFHaHNhRWxoVjJOblpIUmxXbVZXWjJoaVNtSTJZMUpqTW1WU1pVSmhTMmhDYURoaWNXZFBaR2hoT1daa1pGQm1iR0ZOWkdSa1FtZFNaa1ZpUTJobFowZGtOR1JyWjJabU1tRTRaMUJqWVdGNFpscGtXR0pTWVZoaFZXWlNaMDloYkdSS1owVmtRMmN6WTBKb1lXZFJabTFtT1dScFpWcGtiV1ZzWVVkaVRtVjRZVzluYldWUloyZG9TbWhPYUVKa1VXaEdaR05qU0dOWFlXdGxPV0ZXWVdsbVRXVldhRTVvVW1NNFkwcGpRMko2WTNCb1dHaGpaSGRrVW1ZM1lXVm5TR0ZDWkZkalpHSkJaRGxuY21WVloyaG1VbU40WWxKaGFHTk9aRFJoVkdKRll6bGhjMk5aWkdkbVpHTlNaRmRrYVdGTlowWmhRMkY0WVU1alptVlBhSGRuTkdWeFprSmxVMmh6YUZsaldtWkhZMUptVEdSWFptbGxVbWhTWVZWblZXRlJaRlptWm1kSVpWSm1kV2hrWTI1b1RtZDJZbEpqYldWaloxZGlSV0pyWW5oa01XaFRhR2huUW1KVFkxSm5iR0ZuWm10aFEySkJZWE5sYUdGS1lsZG9VbWh3WTBOblYySTVZazloU21jd1oydG5ZMlpEYUVKaE5HRlFaMFpvVW1Sd2FFUm1aR1JDYUdobWQySlJZMWhsVW1oU1pWTm9hMkkxWlRGb1JXaFlaMDVqVFdOVllWaGthR2gzWTFabGJXZHpaMUJoUzJac2FIaG5XR2hOWlVGbWNHTm1ZMk5oUVdKalpraGtUR0ZVWW14bVptaEhaVlZrWkdZNFowTmpkMlIwWm1aalQyaElZbkJsU0daYVowVm1SbUYxWTFOaGJXTlNZelZvVTJWNFlWSmplR05JWlZKb01XWk9Za2RsVm1oYVlYVm9ZbUZ1WlZGbGJXWkpaRkZtU1dkcFkxVmpSbU56WmtOaFRXSkJaRFJsVTJGVmFHeG1hMlZYWm1OaVFXSTBZbUpoVUdkNVlXTmhjR0ZNWW5obVVXSm5aMXBuU0doTlpGRmlWR05GWWpGaVVtSlRaVkpoVm1GUFlXRm5XR1pSWkZsbVkyRkZZMFpqTUdGVlkxVmljR1ZTYUdSaFZXVktZamxoUkdKNFpVRmlNR1ZRWTBabE5HSm5abEpuZVdSSllrSmtSMk5JWTBWblUySkhaR3htU21aVVlsUmtNbU5TWlhGb1ZXUjRabXRtVkdKalkwRmxkR2RhWjFaamFHSktaalpsVW1VeVoxSmhRbUZrWmtWaWIyUjVaRTVsWjJKS1lWRmtZMmRXWmsxblZHZEVaMFZuYTJoSFprOWlSR1prWnl0bVNtTjVZMk5oVUdGT2FFSmpiMkZUWjBSaFUyUmphRTVqVW1KU2FEaG9RbVJTWmxOalVXZEtaVk5uTW1kYVkwbG1XbWR0WTJ0blZXVmpaR3RtTldSNlkwVmhSV0Y0WVU1b1ZXRlZaMnRoVm1aV1owZGthMlUyYUZob1UySmtZa0pvVUdGR1ptdG5aV2hSWkc1aVZtRkVZMlpvTUdkM2FGbGlaR1ZJWVVGaVZHWm1abEpsVW1kQ1pGVmxhR2hTWkhob1VtSm9aMDVrTkdKVlpUQmxPR2cxWmxGbFJtTk5aMXBpUldRellrRmhUR2RYWlZabFdXSlRabEJrUW1aSllYRmhRV0ZxYUc5bFJHVkxZbnBvWkdSTVkxZG9ibUZzWjBwblJXVlZZakZtVEdoWFkyNWlVV051YUdWaWJtSk5abkZpVkdjeVoyUmlUbU5QYUVWamVHVXhZMU5uYUdGQ1pWTm5VbU5CWVhSaGQyRlhhR3RqU1dVNVprcG9lbWhKWkRoblVtUnFZbmhvVDJOamFGVmpWV05EWmtOaFVtTlJhRkJrV0dKQllrRmxjMlJOWWtKbGNHTjNabGhtUjJOc2FGSmhTR1ZvWVdOamJHRldaVVJqZDJGTGFGVm5WR05HWldGa1ZtZHVabEZtVUdKaFpURmhTV0ZWWW1Oa1ZXTlpZVlJqWldSR1kwNW5VR2RsWkRKb2NHRmlZVVZuVldoamFEUm9VV05uYUhCa1dXRmlZMVJuZEdWWVptUmtSV05HYUhwb1UySnVaMHBpYzJkWVkyZG9aR1JyWmtobVVtUjBZMDVqVkdOV1l6bG9OR1JTWVVobldtRjZZMkppTUdOYVlXNWlSbWRvYUVwaVRXUmtaMVZuYjJOUlpGVm1hMlJSWlV4b1pXVkJZVFJvUzJGS1ltcGtSbUZ2WlVab2JHaFdhR3BqVjJKSVpFMWxUbU5VWmtKa2JHTlNZVlpvZDJkMFkxRm5ZV2hYWTFWbFQyTmxabFZoTVdobFpWVm1WV2R3WTA5aFpHUlNaRVpuZW1SVVowWm5SbVUwWTJObVJtSmFZekJoUkdVeVluUmlZV1pSWjBSa2EyRlFZMUZpU0dWWlpYTmhSR1p1WW1SbE5HaFZZWGRrVVdSVVpWcGhhR2cxWWsxbFVtVlJZbVJpTm1OUmFGZGtVV1pVYUZwaU1HWmFaVTlvWldWVlozTmlWV0ZqWlZKa01HRmtaMVJpVW1Oc1kxZG5aR1JIWnpWbk1tWmpaREppT1doUFlVMWxNV1ExWW1Kb1NHUXpZWE5rTVdaVllWVmpXbUpqWWtOaE1tZ3hhR0ZoUldoSFpqbGhPR0psWkVobVkySlZZMWxvTVdOb1p6WmxTR2RIWlZwbFRtUlZaRlZsYTJKV1lWUmliV1pzWkRCb1IyVklaRUppUW1Ga1pVWmxSbVZMWmxSbGFXaEdaRnBvVDJab2FEbGhXV05WWW01bVFtRlhZMlJrUVdNNVpYSmlWV1ZvWTFKbmVHSlNZMmhoVG1jMFpWVmpNV1JXWm10aVdXUnNZWFJuVG1KWFlucGtiR0ZaWVZabmVXTnNhRlJtWVdGc1ltUmlhMkpZWmtkbE5XSmhaMXBsUTJGV1kweGpVV1JJWldkbVVtVk9ZakJoTUdKYVlWWmlibVJTYUhWalpHTnVaRTVuZG1WU1lXMWhZMk5YWlVWb2EyWjRaakZtVVdOcllWRmlZV2hFWjFabWFHWXJaRXBuVVdST1pDdG9aR2hIWmxwaE1HUkdaRWRtU21KUGFFeGhlR05CWW1WalVtUkdZVEZsYW1KR1psVmlOV0p3WTJSa1FtTm9ZbmRtVVdWWWFGSmxVbVZUWkd0b05XVXhhRVZsV0daT1owVmhRbWRVWTBGaE5XRkNZMWhsY0dOM1lrdGthMkpGWkVkaFkyWldaWE5qVkdGaFkwWmhUV0ZVWVZwb1EyaE9aR0ZqUm1GVVkyeG1kMlpEYURGbmJHVlhaRVZsYm1ad1lraG9XbWhGWWtaaGRXRlRaRzFsVW1RMVlsTmhlR04zWW14a1ZtUldZVkZsWldoR1ozbGthMk14WTJWbmJXRTFaSHBsWTJKcllscGxNMlJHYUd0bU5XVk5aMDFsUldoTllXTm1aV1pGYUZGalRHSmpaVVprY0dWRFkySmtNbUZLWkcxbFlXSlNZMUpuZVdGVVpXNWtUV1JSWlVkaFFXSlZaMWxqUjJob1luaGlWbUpSWWpOa1VXWlpabU5tUldSR1l6QmtWV0ZWWW5Ca1QyRkxaRVJoZEdWNlkxUmlSbVZHWnpSb1kyWkdZbHBpTUdKRVlubGlNR2hJWlZka2FtaEpaVk5qVjJocVlXTmxaR2RVWm5waVpHUnBaa0pqZUdaQllWUmlTMlo1WTBab1dtTldaR2hrU21FMlpsSm1NbU5TWlVKa1ltTnJaSEJuYTJWTFkzZGtOV1JCWmtwblJXUTVZVlJsVkdkU1owWmxPR05rWlVkaU5XWXlaR05oTW1jNVlrZGlXbU40WlZsblUyWlVaVWhsVm1STFowZGpRV05aWVUxbFVXUnBZazVqVldKUVkxTm9OV0Y1WVdSaGJXUnJaRXBoWTJkc1ptaG1iV1ZDWTFaaU9XZFpZbFZuVldJNFpWWmhSMmR0WlVKaE5HRk5abTVoUW1GQ2FHUmhSbVpHWlV0alZHTnVZbFZtVW1Oalp6Qm5lR1pTYUdWalNHUm5aME5rVUdKRlkxbG1OR1JZWkVkaWMySjNhRlptZDJOV1lqUm5WR1JyWlRoaGQyTmhZMnRuTUdaSVowUmtXR05CYUdGalZHRXhZamhvWldWVllVVm9aR1pyWTFGblYyRTFZVXRrV21GSVoyeGhUR2hHWmtoaVJXaGtaa2hoVldGV1kwNW1TR1JxYURCbU9XRmxaMEZpZDJGMVlsWm9XR05WWVZkaVJHSXdZWGhvYkdKUlpYaG1lR00wWkZKaFFXVjBaM2RuVjJaclpFcG9kbUpaYUcxb1dtaHdZMFptU0doS1kwOWhaV013WTFGalJXZENZMEZuU21KSWFHRm1aMkk1WXpsbFltVkNZV2huZEdKUlkxZG5VbWRaWVZKaGJXSlNZVEZoUldGWVpFNWhUV1ZWWWxoa2FHWjNZVlpoYm1aUlpsQm9ZV2d4WmtwalFXZFBaVkZsT1dSQllWVmhiR0ZPWmxCbldtTkhZWEJsVkdGSFlsSmlUbUozWkVObU1XZHNaMlptUTJoV1lrSm9TR1phWmtWalJtSjFZVk5sYldOU1p6VmxVMll3WTJ4aFltZElaVkptTVdKT1kwZG5WbWhhWVRCaVltaHVhRmxuTVdkUGFHZG9aMk5yWWxGa2JHVnpaa1JrVDJZd2FIQmhVbUpYWW1obFFXTklaR05tUVdGb2FFeGxZbVI2WTJ4aFRXVmhZVkprVW1KNVpGUm5ibWROWjFGaFZHaEZaREZrVW1aVFkxSm5NR0ZqWW1Gb1YySnJaMWxpU1dkclpVVm9iMlZFWTFWbGNHRm1ZVnBrVW1kb1p5OWlXbVZzWVVab05HVmpaVVptV21nd1lrUmpNbVIwYUZOaFJtVklZVVprUjJORllqTmlRV2RJWjBKaWVXUXdaelZpV0dkWFkxcGpVMk5aWkVKa2RHUmFaVk5rZUdWS1pYRm5WR2R0Wm1oamNtUmlabXRrY0dScloyVmxWV0p6WWxWblkyVlNhREJtWkdKVVpGSmhiR2hYWTJabVJHZHZZeXRqVDJacVkzaGhTV1ZIWmtabVkyRkVZVmRvYm1oV1lsaG5SV0pGWkVwbVRtVkNaREZqY0dKaFlWRmpiV1U1WjJsb1dtRnRaR3RtVldWalpHdG5OV1I2WlVWa1JXUjRZMFppUW1KUlkwWm9ZMmhJYUZkbVkyUk1aVmRqVjJkT1oxUmlaR1JGWjNoaVMyWllabTVrZDJWa1kxZGxWV0o0WTFKbFpXRklZMEpoVjJSa1lrRmlPV0p5WkZWbGFHVlNhSGhtVW1ab1pITm5jMmRIWW5kaVdXSXpaVnBtUTJWNFpWbG9RbU15WldkaFRHaFNZVVppV1dkRFltTm5NV1I0WWs5alVXVlhaalZvUzJOYVlraGhiR1pNWWtabFNHTkZaR1JpU0doUmFIUm9WMkpDWlVob1VtWnRhRmhtU0dWT1ozWmpVbVJ0WldOalYyTkZaMnRtZUdJeFpWTmxhR1pDWkZOalVtSkdaekJsZUdKRGFFVmhTV1Z0WlZsbmJtTjBaSEJvVVdOUloydG9ZMk5FWkdob1FXaFJaVVZtVm1kRlowaG1WV0pDWW14bGNHTlFaa0pqUVdKa1lrRm5RMlZCWWxwbFVtWkNaalJsTm1OU1ltNW9jMmRsWWxobVdHZG9aV3hsV0djelpEQm9SR2RoWkhoa1kySlZaMkppUldkWllrUmhaR1pHWVUxaFFXaGFaMGhuWkdGVWFGUmxVbVV3WmpoalZHSm9aMk5vVW1OU1ltcG9TbVpqWkZSb2EyVkdZM1ZsVTJodFlsSmpOV2hUWkhoa1VtVjRhRWhoVW1VeFpVNW9SMmhTWVd4aE1HaGpZa2hsV1dFeVpHUm1SMk40YUc1aFJtWm9aRXBtVFdOa1lsVm9iMlJSWjFWamEyaFJaa3hoWTJkR1lXOW9TR2hpWXpKbGJHRTNhR0ZoVVdKR1pWbGhWR051WWsxaVVXaFVaVVZrTVdWU1lWTm9VbUpXWWs5bVlXUllZVEJoV1dkTFpqSmtkR013WkZWaVZXVndhRTlrWkdoU1lVWmtlbVZVWlVablJtUTBZbU5sUm1OWlpHbG1WR0pxYUd4bFUyTlhaMjVtUm1GaVlrVmtlR0pWWjFObFIyaDVhSGhuYTJSSVlteG5RbVprYUdWaFFtWTFZMVpvVm1oc2FERmlObUpUWkcxalVXSkZZbHBuTUdaYVpFOWpaV0ZWWW5OaFZXVmpZVkpuTUdaa1oxUmhVbVJzWWxkaFpHVkhhRFZpTW1oalpqSmxPR2RXWkZwb2QyVnpaVk5pU0doRVlsRmlXV1pSWkhoaFkyVjBaVkpqVTJoU1lsTm5SbWh0WjBWbmVHUkxZbWxsUW1KWVlrNW5NR0ZaYURKbFNHZEZZM2RpU1doVmFGVmpTV1ZXWmtGblIyUkNZalJqUjJoRFpFcGpTV05pWlROa2RHWkxZbFJsYm1SVllWSmlZMmd3WlhoalVtSmxaa2huUW1aWFpXUmlRV1k0YUM5alIyWnNZekJvYVdKVFlrWmlOR1owWVVobGVHVnpZWFJtVDJWb1p6bGxRV2RIWnpKaVZXVk1ZMUptTVdkYVoyTm5aV1pzWTJob2EySkVZM2xpYzJWa1pWcGtSR0ZHWlVSbFpXZFVZVUpoU21kV1psVmhUbU5LWVVkbVUyaE9abTFuU21kSVlqbGpkbUpEWWtkbE5HRm1ZMFZpYkdOYVp6RmxRV0Y0Wkd4blkyRkNZVlZpT0djd1lsVm1aMlYzYUhGb1RtSlhaRmxqYUdoSVowTmxSbUpJWm1WaloyWjBZMjFoVkdkV1owWm5TbWhHWVZWaE5XWndZMlJvUW1Gb1kzZGtVV0pUWW14bE4yUlRZbXRrTldZeFprVmhXR0pPWWsxblZXaFlZMmhsZDJGV1kybG1XbUZMWkZCa2QyWmtZMGRsVUdnd1oxcGpTR0pOWkVKaWIyZGpaR1ppTUdoQ1oxUmlSMkZTWjA1aGQyZERaREZqYkdaWFowVm1hV0ZrWVhSbVdtSkZZVVppZFdSVFptMW9VbVExWjFOaWVHUlJaRzVvV0dGRmFEbGxUbU5VWmtaa1dtVndabUprYVdReFpGcGhZbWd3WWxwbWJtaEdaR2hqU21OTlpHUmtWV0p2WkZGbFZXWnJZbEZrVEdSWlpsVm5lR05aWW1Ka2VXWndhSFZpUW1KR1lsVmliV1pDYUc1aE1XZEJZa0ZpZUdWd1pGcG5WMmRCWjA1bVEyRmhaVmRrUldkU1lXVm5WV0l4WVdWaVZXVlZZWEJtVDJKa1lsSmhSbVI2WkZSbVJtTkdaRFJtWTJaR1oxcG1NR2RJWVc1amRHWkpaRVprUkdKc1pVOW9abVJxYUd0bFNHTkNaVEpoYjJFMlpraG1SV2MwWkdKaFdXVlNZblJuVm1OV1kyZGxaR1I2WWxSb2JXWm9ZWEpvWW1kclpIQmthMmhsWVZWbWMyUlZaMk5oVW1Fd1kyUm5WR1pTWld4aVYyTmFaVzVqVW1ZeWFFOWxNbVZqWm5KaVNtVnJaVXBvWVdkUlkybGxWV1pHWWxKbU1XSndZVmRqUW1RemFFSm1VR2hUWlRKbldtZDFZMVJrUjJkcllWVm5ZMlJyWVRWb2VtVkZZa1ZrZUdST1lWVm1WV05zYUVsbFVXTnJaVTVoTUdkSFowaG1RbWRDWjJSaVJtVkdaVXRuVkdodVkxVm9VbUpPWkZWaGVHaE5ZbVZqUTJoMFlWZGtXbUZTWTJ4aGVHaFZaMnhuZUdFMVlsWmpkMlpXWlhoaVdHY3dhRGxoTVdSbFpHdG1hMmRhWmxkaE0yRm5ZbUZtVTJGV1lUaG1aV2hsWld4bFZtVXJZVkZrVTJaYVowTmpaR1J1WTBKblRHaFRabGRoYjJnelpraGxWV1l3WkZwaVZtZHVZMUprZFdka1pHNWpUbWR1WkVSa2JXTnNhRWRtVVdKQlpVMW5hR0pDWWxWblVXVk1aVVpsUldjMWFDdGxTR05DWlVGbloyWk1aSGRtVVdSblpGRm1RMkZHWWs5a1ltZG9Za0ZsUTJaU1lrWm1NV0pxWkVabVZXVTFaWEJsWkdOQ1pXaG9kMk5SWjFobVVtaFNabE5rYTJaWll6bGhTR1Y1WVUxb1pXaElZV2xpZDJJdmFFRm9hV014WldabVRHaHNaSGhvVTJkSlluZGpiR05sWkVabFoyTlpZVU5vU21acFl6aGlRbVZIWkZGaE5XSjNZMWRuUm1GQ1kyRmlUMkpJWVhCblNHaGFZVVZuUm1SMVkxTmhiV0pTYURWb1UyTjRaVkpqTldoV2FGSmlUV0prWkZObGVHTnJaV2RuU1doVFlVbG9jV1pRWVhkbFRtSndaMVZpUldOQlowUm5UMlJFWm14aFJXUkJZMEZsTVdkR2FFNW1NV2h3Wm1ab1ltTjVZMDVqZG1WYVpsUm5OV2Q1WlZSb2JtaE5ZVkZuVkdGRmFERm9VbVZUWmxKbFZtRlBhRmxrVkdaM2FGZGlTV0pDWVUxaU4yWkNaMUZoVldOaFoweGtSV1JGWVRKaVVXZG5aMVZqTTJWSVlXZGxUV1ExYUZSblUyUTBaRUZrUm1oSFpYaG9SMk5XWVZOb01HUmtaMFJrUkdSQloycGpTR2hHWTJOb1ZHWmxaa0ZoU21OYVpFUmlWR1ZvYURab1VtSXlZMUpuUW1SaVoydGtjR0pyWldWbVZXaHpZMVZtWTJOU1p6RmpVR0pEWkVWbE1HTkVZVXBvYVdkQ1lUSmxXbVJZWm5CalZHaGtaVUZrUVdOVFpWSm5ibVpWYUdWb1YyTkNabk5rV0daQ1lsRm5PR1ZpYUZWbE0yVnNaMmxvWW1oWGFHeGxRV1JQWW1kaVkySm5ZVWhuYW1OTmFFMWxVV1JXWTJ0a1QyVmFaRWRvYkdJd1prZGhTR1JDWWtKa1pHRkdZMFpsUzJWVVoyNW1WbVZOWldWaGEyRkNZVGRoWldKSVpFSmxWMlZrWVVGa09XaHlhRlZsYUdkU1luaGtVbVZvWW5ObGQyWllZVkpsT0dJeVlVcGhVV05rWlZkalVtZDVaMnhvWW1OSVpVWmphR1pIWms1blZHSlJhSGRpUldONVpXTmtSV05KWnpObWJHTlhZMFptUkdoa1owbG5WV0YzWWpWbFRtSklaSHBoYzJabloyUm9ibUZ6WmpkalZHTXlaV1JvVG1GUFlVVmllR2N4WjFOb2FHTkNZVk5oVW1GQlpIUm1kMmhYWTJ0bVNtUjJabGxpYW1WS2FIQm1RMk5ZYUVsbFlXaGpZekJqZDJWUlkxUm5WV0pDWTFwa1JHSnRZbEppY0doa1kwSmlhR1ozWWxGaFdHZFNhRkprVTJGcllUVmpNV05GWlZoblRXWmhZVVZtUTJGd1pYZGpRbUZJWTFGbVUySmhabmhuVW1OMllVcGlWR1J6WVZSb1NtWkJaemxsVUdKTFpXbGtPR1JGWTBka1ZtTjBaVFJsV0djeFkwSmxUbVpQWlVobGNHUklaRnBuUldWR1luVmxVMkp0WkZKaE5XZFRZWGhrVW1SNFpVaGpWbUZSYUV4aVIyWldhRFZoTVdoUFkycGtOR1UyWTFCblJXVm5aMmRuVVdSb1pXOW9aV1JtYUVWb1RXTlJhRUZoUVdoR1pHWmhTbUpSWkdkbVRXSmlabnBoV1dkMVpVbG5SV05rWWpoa1IyTnFZWGhsSzJKSGFGRmlRV2RVWVVSb1JXTmtaRWRqV1dkSVkzQmhUV0ZRWm5walNXTm5aMEZvZDJSTllrRm5UV1ZvWld0bGJtUlNaMVZuY0dOVFptTmtSbVphWWpCb1JHY3lZblJpVTJKR1lVaGlSbU5IWkVWb00yZG9hRlJtUTJOVFpuTm5OR0ZWYUhobVJXUTFaMk5oUVdGMFpscGpWbWRvWWtwaE5taFNZekpsVW1OQ1pHSmthMkp3Wld0a1pXWlZZWFJvUTJaTlprVm9PR1prWkVKa1FtSnNZVXhtWkdoRWFHOWxLMlJQWjJwa2VHSkphRXBqUm1Wd1ltUm1RV2RxWlVKa1EyUkhZMVpoTldWRlkxUmtibU5DWTBoaFVXWnBaa1ZsYm1KTllsZGpiR0l4WlVsblFtZDNhSGxqVTJkVlkxSmpZbWhTWWxWbFFXUmFabFJsYVdOYVpqQm9RbUZZWkVKa1dHZGFZVEJqY0doblpWUmxibUZWWlZKblkyY3daM2hvVW1abFkwaGlRbWRYWjJSblFXYzVZM0ppVldKb1pWRm1LMkpTWVdkbk1XUnNaVlZvTVdFNVltdG5ZbUZHWTFWamVtSkZaak5vUVdGTVpsZGlWbVJaWVZOb1pXSnJhR1JrYTJSUlpsZGhOV1ZMWVZwaFNHWnNhRVJsV0dGWVlUbG9XbWRXWjBKbGMySlNZMEpqU0dReFlXbG9aR2h1WjNOaGNXTlFZbE5uYUdOeVkwVm5iR1JHWnpGbVFXUjRZalJqUVdaQlpsVmxXV1Y0WWtWa2QySjNZbkpsU21SNloxSmtibUpSYUVSa01HWm5aVXBqYkdJd1owOWxRMkZCWkU1alFtWklaa1ZuUVdNNVpVOWpNbWh6Wkd0bVJXWjZZekJsWm1aRVpWVmpXV2RvWmtkb1NHZHdaMEZtVldSVVprWmhLMlJGWVZOalFXTklhRTloVm1OellXUm1ZV1J0WjNka1ZHSmxZVVpuVG1SUVlWcGtSMlZ3WTFSblIyaFNaMDVqZDJGRFpERm5iR0ZYWWtWbmFtUldaRXRvWVdGWFlYUm1kV2hUWTIxb1VtZzFZVk5oZUdGU1kzaGhTR05TWlRGalRtUkhabFpuV21nNVkyUmhWbUY0Wm5wb1ltUXdabHBtYm1GR1oyaGlTbVJOWkdSaVZXaHZaVkZqVldWcllsSm1XbVZPWkZGbU5HTllaMUJpVTJONFlXMWtXV05XWmtWblNtTkJaRmhqVFdGa1kxUmtSbVIzWVhObFUyVlJZV2hrVDJKSllraGtjR2ROWVZCaGVXUTRaV2htU0dSQlkyZGpUR1pLWTNobmJHSTJaVkZsWjJSVlpqTm5RV2QzWlVsbGJXRlNZMmxtVldkV1praGtRMkpXWWxCaVIyRnVZbEpqVkdkRFptMW5iMlpuWWtob1JtTkNabVJtWldoQloyeGtZbU5ZWm5kaGJHSlJhRkpqTW1KU1lrSm5ZbVJyWlhCa2EySmxZVlZuYzJWVloyTm5WV2hCYUZWbVVXRlVZVTVsVjJoa1owZG5OV015WkdObE1tTTVaVWRtV21oNFlWbGxVMlJTWjBSbU1XWkZZMUZrUVdKQllreGtXR0Y2WnpoalQyVkhabnBpT0dodVoyRmxRMk5vWlZGb1RtTnJZVFZrZFdORlkwRm9iMkZaWVVoaGQyRndaMEpoUW1SNVlWbGlObWRIWTBobloyRldZbVptVm1KRlpGSmlXbVZJWTFWbVVtZGpZakJvZUdSU1ptVmtTR1JDWjFkaVpHRkJZamxsY21kVlptdGxTV1IzWTBaaFFtUk5aSEZsVldJeFowcG9hMk5RWjJoaGRHWlJaVkZvU0djMVpUQm5SMmRGWjFsb1EyaGxaMnRrZUdSclowWmtWMmhCYURGbVNtaFhabXhqWW1aSFprWmljMk5rWkVoaVZXY3daMXBsVm1GdVlsSmlkV1ZrYUc1a1RtVjJhRkprYldkalpWZGhSV1ZuWVZaak1XSldaWGhoUVdkQlpsSmtRbUZXYUhWalVtVkZZMHBuSzJWa1pVaG9NV1ZFWTBaalNHaEtaVTltWTJWNGFFSmxUV1pVWjFablJtTktaMFpvVldnMVpYQmtVR0ZTWW1oak4yVllaMGhqVVdGR1owRm9aMkpqWW0xalNHUjNabmRsVG1WUmFFZG9OV2gzWlZob1dHSlNaV0ptV21KVFpURmhWbWhaWmtaaVFXWkpaRlZtYkdGT1pWQm9XbU5IWkhCaFZHVkhaRkpsVG1kM1owTm5NV1pzWVZkbFJXSnBaSGRrUjJkT1pHdGpSV1J5WVZOaWJtWnNZelZrUVdSb1psSm9kbWhCWjNkaFRtaE9ZME5sUldOQ1pIWm1VbUZJWjFwbWVtUmlZekJqV21WdVpFWmlhR0pLWWsxbVpHVlZZbTlsVVdOVmFHZG5SV1pNWjJWaE1HRmtZa05qVDJWNVpXOWtkbVZQWW1ob2IyUk9hRVJrTW1WQlprTm9WR1ZGWlZwaVVtZElaMUprYzJkNFkwdG5SMkpqWWt0allXSXlhSFJrTUdoVlkxVmxjR05QWVdSb1VtWkdaSHBpVkdoR1prWm5OR05qYUVab1dXWnBaRlJtYW1Kc1lsTmtWMkV6WTBabVltUkZaSHBuTVdOVVkxVm1XR0p3WVRCbFZXWjNaMmRoUm1KaFlubGlSbVJhWjFaa2FHUktaVFpuVW1jeVpGSmtRbUppWW10aGNHSnJhR1ZtVldkMFlVZGlUbU5GWld4aVNXTklZekZtWkdGWFlXWmtSV1ZTWmpKb1kyRXlaRGxvUjJGYWFIaG9XV0ZUWmxSaVNHSldaRXRsUldKR1prcGtSV0ZEYURObFoyaFdaVkZrYldOU1ppOWlXbVJxWnpGbVkyRlBaSGhqTVdZNWFHSmpkMmd4WWxwbFUyWlZZMnRrWldSVVoycGxNV1UyWlZwa2VtTkdZVlptWW1SR1oyaG1SMkZhWVVoaVZXaFNZMk5tTUdWNFoxSmlaV1JJWVVKbFYyVmtaa0ZtT1dGeVlsVmthR2RTWjNobFZHRnJaMk5uZDJSSFpHaGplR2h4WVVaa1VtUkpaa3BqUVdNelkwRmtWMlJYWlZWalFXaElaMkpvTVdGU1pYaGhVV1ZYWVdoalMyZE9ZVzVsUW1aSWFGQmhibU5GWTJSa1NHUlZZVEJuV21SV1pHNWlVbVIxYUdSb2JtWk9ablprVW1KdFkyTmpWMkpIWVdobFoyWTVaVUZtTUdST2FHTmlUMmd3WVhCb2FHTlVaa1ZtU21oNVlsbGlibVJDWmpobVFXUlhZVVppWW1kamFIaGpXbWhOWTBKaVJtaG9aRVprVUdRd2FEVmxjR2hrWlVKbWFHSjNZVkZvV0dKU1psSm1VMkpyWmpWak1XRkZaVmhuVG1KTllsZG5VMlozWlRSbVNHaDVhR05sUW1WR2FFSmxUV05JWkZsak1HUlpaVTloWldGRllWWm5ZV05qWVZoaGJHSkhaRWRuVW1KV1luZGhWR0ZzYUVKallXWlBaa2hpY0dSSVlscG9SV2hHWlhWbVUyWnRZMUpvTldGVFpIaG1VbVI0WWtoaFVtSXhZVTVqUldKUllrbGtPR0pLWm5salZtSTVZMFZtUVdoa1lucG9SR0pvWjBwalVtVmtaRlptZDJWR1lWSmtNV2hqYUdWblkyUkdhSGhrUTJGSlprZG5kR0Z4WjFGbmVHRlNaM2xvVkdkdVpFMW1VV2hVWTBWbU1XaFNaMU5vVW1OV1lVOW1ZV0ZZWWxGaVdXWktaVUZsYTJVNVowRmliV0ZDYUU5bFpHTlNhRVprZW1OVVlVWmlSbUkwWldObFJtZGFZekJpUkdReVlYUmxZbU5FYURGa2RHUkhZa1ZrTTJGb1lWUmpWR1V5WVZKbWNXZFZabmhsYTJaVWFFeG5VV0ZLWTFabVptRkNhRXBoTm1SU1lqSm9VbUpDWjJKb2EyTndabXRuWldSVlkzTm5ZMkZQWlZKb1RtSk9ZVWhsTVdoWllVTm9UMlI2WTI5b2RtSkpabmxsY0dKSlprNWxSV1ZPWkZGbFIyWkRabU5rVEdOVlkzZGpXbVpGWjBaaGJtWkJZV05rUm1ONVlrVmhhR05OWTJsaVFtVmlaRkJvUldZMWFEZGxVbUpGWjFaa1RtUkRaRzFqVFdKV1oxUm1iV1pzYURCbVIyWklZMEpqUW1Wa1pVWm9SbUZMWVZSbWJtRldZMFJtVG1ab1kyZGxSV05MWjJwaE5XZFhZVWxpUldGalpXbGpRV0pTWm05b2QyWkJaR3hvWkdGM1lrSm1NR1pGWm01bFNtRm9ZWGhtV0dWV1ptNWlaMkpEWTFaa2VHaG9abGhpVUdkUllWbG1kMlJDWVVkaFdtTkVZMkptVjJkS1kyaGxSbUZJWlVWb1pHTklaRlZoTUdKYVlsWmlibVJTWlhWaVpHSnBaRFZvYldSVFpXdGtNR1JYWjBWamEyWjRZekZuVTJWb2FFSm1VMk5TWVVGbGRHUjNabFZqWjJSd2FHaGtUV2hxYUZGa2JXaFJaMFJuTUdaaFlVdGlhMk5CYUVwalVXRjRZbmRqWTJKWFkxSmxiMkZuWlVwa1JtWlJaWEJoVVdOWFpHeGxVbVJFWWtKa2MyVTNaMVZqYVdWalprWm9TR1JxWjFwb2QyRllaR2xuUVdWSFpXRm9kMk5yWml0aFkyZFZZVmxrVkdSbFkwWmtUbUZRWlZwblIyRndabFJoUjJGU1kwNWtkMk5ZWlZKa1oyaEZaa1ZuYVdWb1lVaG9aV2RWWkVWb05taEJaV2xpTUdGeGFGSmhWMlZ6WjNkaVJHSlJaVEZvUW1WTmFERmpXbWd3WldKbGJtWmFZbnBqWW1Zd2FGcGpibVZHWm1obVNtUk5aV1JoVldSdllWRmhSMmd3WjFGbVYyTmphRUZqTkdaTFprcG9hbVJHWTI5blJtVnNabFpvYW1WWFpFaG1PR1kyWTFSblJXTXhaMUpoVTJOU1lsWm1UMlJoWlZobFVXUlphR05qUldoR1pUQm9WV1pWWkc5bFRHSmtaVkZvZUdkNllVZGxRbVJyWm5obFNXRXhaV2RpVEdOVVlXNW9hR0ZCWmtkbVJtSjBZa2RtUldFellXaG9WR2RVWWpKblVtUnhZMVZoZUdkcllsUmhZMk5CWTNSaFdtVldZbXhoTVdnMloxZG5iV0pSWTFab1NtWm5ZazFpTTJKa1pYcGpVbVpXWTFwalVXWlZZVkpuV21KNFpXeGxWMlZrWTBkbk5XTXlaR05sTW1nNVowZG9XbVI0WjFsblUyTlVZa2htVm1STFpsZGpSbVpLWkZwb1EyUjVZbEpsVldKUVkxTmlOV2Q1WjJSamJXZFZhQ3RuWTJSclpEVmplbUZGYUVWbmVHZE9ZVlZtVldoclkxWmpWR0Z0WVd4ak1HVkhaa2hpUVdaUWFHUmlSV0o0WVV0bFIyVnVaSFJsZFdSTllXeG5NV0ZJYUdSaFJtVndaMWRvWkdoQlpUbGhjbVJWWldoa1VtUjRabEppYUdOT1pqUm1WV1V3YURsb2EyRmhZV2RvUVdKYWFFUmlibUpDWjJabFZtTjVaV3hsVkdkaGFGWm9WbVp2WldGbk1tUTFaVXRtV21OSVpteG9UR1ZHWmtoalJXUmtaa2hpVldNd1lWcGpWbVp1YUZKbmRXRk9aVE5qVG1SNVlsSmxhbU5OWVZsbVltVlJZekZqYUdWVllXaGhlR00wWWxKblFXZDBhSGRrVjJSclpFcG5kbUpaWjIxbldtWndZVVpuU0dkS1lVOWhZMk40WmtGaldtUlVZbFZrZUdWS1kxSm9NR2MxWW1walpHRkdhRUpvT0dWaFpqTm1VbUpTWVZOb2EyWTFZVEZoUldoWVowNWtUV2RWYUZob2FHRjNaRlpsYm1aUllWQm5UR2hXYUVsa1NtWmpaVkpqVFdKVWFGcG9hMk14WkZKaFdtRklaSFJoUm1oQllXcGtiR2gzWjBOak1XRnNaMWRpUldadVkzQm9TR05hYUVWbVJtRjFZMU5oYldkUllpOWpVMmQ0WlRsaWMyTklaVlZqT1dKT1owVmxNV0paWkRabFpHTldaM2huZW1OaVlqQmxXbUZ1WlVaaGFHUktaRTFoWkdWVlpXOWhVV0ZWWW10blVtWmtaMDFrVVdSb1lrTmhTV2d5YUVwbk4ySmhhRlpvU21aNWFGVmlSMmN3WTA5bVZHSkdabmhtU0dSVlkycGxPV0pQWVdGbFdHRlJhRmxvWTJoRllVWm9NR0ZWWlZWaGNHZFBhR1JrVW1aR1lUZG5RMmRzWVVabEsyUmlaRlprV21OcFprZGpibU0xWmtKbFFXWllZMmhvUzJORll6TmlRV1JXWVZSb01tZzVZak5sVldNeGFFRmlWR0ZsWTJkbWMyTlNZbGhuZUdNMVpEWmhWR041WjJoalFtZGFZVlprWkdacllsQm9NR0p6Wmt0bVltZDNZVTFvWkdOWWFFRmxPV1ptWW1WaFIyYzFaU3RuVUdReVp6bGlUbVpsWkdoaVdtZEJaRlJsU0dJNVlVdGxVV2d4WjNSbVptZEphRmhoUW1WaFpGRmpiV2M1YUdsaldtWnRZbXRvVldOaloydG5OV2g2WTBWa1FtTnZaVTFsUVdnd1pHeGhWMlZVWVc1blVtWXdaMVpsU0doQ1pXWm9ZV05yWmpsaVMyRllZVEptVFdSTFlsZG9WV1o0YUZKaFpXaElhRUpsVjJKa2FFRmlPV0Z5WlZWaGFHTlNabmhpVW1OcllrVmxPV0ZDWjNobGIyY3laMHBsUm1STmFGSmtUMmhZWWtGa1RHTlhaRlpoV1dOVFoyVmlhMkprWld0aFVXRlhaVFZvUzJSYVlraGhiR0pNWVVob1JHZ3daV1JpUjJVeFlrRmtXbUpSWlVkaVJtYzNaVnBpVjJoYVltMW9VMlJyWkRCb1YyaEZaMnRtZUdReFpWTm5hR0pDWVZOalVtZEJaSFJsZDJKWFoydG1TbUYyYUZsa2JXUTBZV3hqUm1kSVoyeG1WR1pqWmpGamJHRk5ZMUpuTVdoRllraGxTR2RGWWtwbVJHRmtaRUpoYUdoM2FGRmhXR2hTWWxKalUyTnJaelZrTVdaRlkxaG9UbVZOWjFWb1dHVm9ZalJqUm1kWVoxRm5SV1JrWTJ4alNtTlpZMk5uVm1obllVNWlXbWRzWjA1aVpXTmphRzFsVG1kbVlVMW5lR2hPWm5kbVEyUXhabXhpVjJaRlltNWljR2RJWWxwblJXUkdablZqVTJodFlsSmlOV0pSWWpGbmFHSjRaMGRpZDJaQ1lVNWxSR2d3WWs1aWFHSm1ZMWRoVG1jMlpWbGpNbUY0YUc1aVJtRm9aMHBuVFdWa1lWVmhiMk5SWWxWaWEyRlJaRXhuWTJKR1pIQmxRMmRpWkRKa2IyUnhZMkZtVW1nNWFIWmtWR0ZxWWxsbVVXSlNZbXRtTUdoYVpWRmpRbU5zWVd0aFlXZFlZVkZpV1dOalkwVmhSbVV3WmxWaFZXVndaRTlpWkdaU1kwWmllbUpVWjBab1JtSjNhRTFvTVdaYVp5OW5SV1p0WW5Oa1pXWkdZVWRrT1doWllVUmlXR2RvWVVOaFYySlhhREZpYldkbFlWSmhhMmRVWm1OblFXRjBaRnBrVm1ab2FFcGpObVJTWmpKbFVtUkNaV0ptYTJWd2FHdG9ZMmhSWTJka1ZXWmxaR2RpUVdka1lraG5lR1JzWkdOalpHUkRhRGxuTDJSbVl6QmtWbWhIWlZwamVHWlpaMU5uVkdGSVpsWmxTMlpGWmtablNtVkZaME5uTTJOQ1ltRmxVV0Z0WVdOamFHZGFaVzFtT0doS1kyTmpiR2hvWm0xaVFtVldhRGxsV1dkWFowVm1WV0V2WTFSamJXTnNaakJvUjJoSVkwSmhRbU5rWVVaa1JtWkxZMVJuYm1aVloxSm5ZMmN3Wkhob1dtSlBZak5qUW1aa1pHRmhVV0k0WjJsbFZXTm9aelZsZUdKR2FGSm5jR013Wm1WblZXVTVZbXRoWVdWc1owMW9XbU5GWnpObFFXRk1aVmRvVm1WWlpWTmhaV1JyWkdSbWEyaFRZMU5sTVdWTFlWbGtiV2RTWkV4blFXZHRZMUZuU1daRVkyeG5aMmhSWlZkbWJHSTFhSFZvWkdKdVlrNWtkbVJTWkcxalkyaFhaRVZuYTJWNFl6RmtVMmRvWTBKb1UySlNhRUZtVFdaNlpGZGlhMk5zWTNsaldXUnBZVTVvY0dKSVkyNWlTV1ZCWjJWamFHRjRabTFrVkdOV2FFWm5TbVJHWlZWb05XUndaR1JuUW1Wb1pIZG5VV1JZWlZKblVtSlRabXRuTldJNVpWVm9ibVJPWkV0aVZHZElaR2hqYldoUlpESm1SV2RqWVdabmJHRnphRmxrVjJJd1psbGpWR2RsWlVaaFRtaFFaVnBqUjJKd1pWUm5SMkpTWjA1bWQyUkRhREZqYkdKWFowZG9hbUZzWWtob1ltSXhZWGhqZFdKQ1kxZGpVbVY2YUZObE1XTjRaRFJuUldaVVkyUmlUbWhIWWxaaFdtRXdZMkpqYm1SYVpIcG5ZbUV3WkZwb2JtUkdZMmhvU21GTlpXUmpWV1JLWjBWbFIyRm5aVEZqV1dabVlXbG5WV2RFWkdaaE0yTktZbTFuWkdSQ1psSmxhMlJYWmpKbFdXZEVaRmRpVldNeFpGaGhVMkZWWlVKbVNHVmFZbFpqTkdoWllXTmpSV1ZHYURCaVZXVlZhSEJrVDJWa1pWSmlSbUY2WjFSbFJtZEdaVFJvWTJkR1lqUmtaMkpTWkhsa1NXVkNaa2RtWjJVMFpFaG1RV0p0WWpWa1ZHUlZabTFtVW1NNFlWSmpaMmgzWmtGaFdtTlJaWFJqWm1aV1oyeGpVbUY2WlZOak1HZzFaa0prWW1SclluQmphMmhsWmxWbGMyVlZabU5vVW1Vd1pXUmtWR0ZTWld4a1YyZGthRWRuV1dOcFpVOWllV1ZaWlZabllXaFhabXhvVkdkWVpqSmhaR2hMWVVSa1ZtRkthRk5qU0dOdFlWWm1TbWRXWmpKbE9XWnJabHBrYVdGVlpXUmlabWh0WWxKb2VtTkZaa1ZpZUdGT1pWVmlWV1ZyWkZaalZHWnRaMnhqTUdWSFpFaGtRbVJDWm1SaVJtRnJaR1ZtUW1GcVpIaG1RMkptWjFSa1RXWlJaMkpsUjJWb1pGZGhZV0pSWlRsa09XTlNaWGRsUm1kcFpGVmhlR0ZPWVN0aFZXaDNZbmhoZEdoYWFHNWhhMkZhWlVWaU0yZEJaa3hpVjJkV1oxbGtVMlpsWm10aVpHSnJabEZuVjJRMVpVdG5XbVJEWmpCbFJHSllhRk5uU1dNemFFaGhWV1l3WWxwaVZtSnVabEprZFdka2FHNWtUbVIyWWxKbGJXSmpaVmRoUjJReFoyUmlabVJUWjJoalFtVlRaMUppUVdSMFkzZGpWMmhyWlVwaGRtVlpZbXBpZEdSbllVZG1SbUpvYUU5aFkyWjRZVUprVFdWVVoxWmhSbU5LWVVaa1ZXSTFaWEJoWm1KR1owSmlLMmhGWmxOaVdXVmxhRWhuWjJGRmFHaGhVMmREWjAxaVNtVllZbnBuZDJFMVkwRmtTR1ZSYUZObllXaDRabEprUW1KUVpIZGtWbVZJWTAxbFVtTjNZa0ppV21oSFpVbG5TR05GWjBKaFRXTnlZMGxsVm1ac1kxZG9SV1Z1WkhCaFNHWmFaVVZoUm1KMVlsTmtiV0pTWVRWaVUyZ3hZakJsTTJkSVpGSmlWbVJrWVVkaFZXTjBZbkJvWW1GcFlrcGhPV1ZGWmtGaVpHSXlaMEZvUW1kS1prdGtZMmd3WVc5bVFXWlZaMnhoYTJoWFpXTmtRV0UxWlUxbFJXSkRaVTVsTVdWbFpIaGxVbUl3WkZOblNHaE5ZVUZrVkdWR1pVSmxUV1ZUWjFWbVJtTkJaRVpvYW1aVllrMWhZV1ZGYUdob01HaERaRzFrUW1oUFptUmlVbU5HWTNwb1ZHUkdZMFpqTkdOalpVWmxXbVl3WmtSak1tVjBaMU5rUm1aRVptZG9RV2hGYUROaVFtZEVZbFJsTTJKc1pUTmtWV013WVRCaFpHWkVZVEJsY0dGS1lsSmthR0owWVRab1JXWjVZbmRsVkdkSlkxSmpNV05yWkVoaVFtZHNZa2RuVUdkclpqaGxWbUZVWlRGbE1HVm1hRWxvYVdOalkyeG1UMlpwWVVGb1NXSmFaakZtVW1aTWFGUmhRMlU0WlZCa1VXWm9ZakZoUjJoQlpXMWxkR0YzWkZGaGJXUTVZbWxoV21SdFkydGtWV1pqWVd0aU5XRjZaMFZuUldGNFpFNWxWV0ZWWm14aFkyUkRZa2RqYkdJNFlrTm5XR1ZDYUdObVlXSldZVVZpWldaUlpFRmtjR1ZSWlZsbk1XRjRZVmxqWldoRFlVbGhWR0pKWVVabmIyRTFZMGhqUW1aU1pUVmlSV1ZzWjNObmVHWkJhRVZtUldZeVpFeGxlR2MxYUZsblYyWnFZelZuVUdKSVpVRmxVV1pUWTFwbk1HUmphSEZtUW1KRVpHeGlTMk5NWkVoa1JtTmlhRWhrV0dablkxSm1TR05TWkd4alVtTklaSGxtWkdNeFlWaG1TR1ZPWkhabFVtTnRZMk5rVjJORmFHdG9lR1F4WmxOamFHUkNZMU5tVW1oR1oxcGpZV2hYWjJ0aVNtWjJhRmxuYldOYVkzQm5SbUpJWVVwb1QySmpaSGhsUW1KTlpVSmtRbVprWTBwaVNHTlNZM0JuYm1OTlp6QmplR0UwWVVaa1ZHSjNZMWxoUjJGVlptUm1PR2RQWmpOalRtWk5ZMVZqV0dWb1luZGhWbU51WVZGbFVHRmhaakZrU1doVlpXTm1WV05aWWxSb1MyVm9aRmxpWW1oTloxUmpaMlZrWjBkbVVtSjBZMkZpUTJFeFpXeGxWMmhGWW01a2NHRklaRnBpUldaR1puVm5VMkZ0YUZKbk5XSlRaM2huVW1WNFlraG5VbWRWWTFwbFZXaFNaRGhpYm1oWmFFTm9VV0V5WTBsbloyaGpZWFZvVjJSR1oxbGpTbWhLWlRCb2IyUk9hRlZvYUdaQ1pVUmtUMlZSWjJ4aVRXUk1aME5uTkdSd1pFcG5NV1JHWnpaaFVtY3paVzluWTJaYVkydGhNV05TWlZOalVtVldhRTltWVdoWVpGRm9XV2hqWWtWaVJtRXdaVlZrVldGd1lrOWpaR1ZTWmtaaU4yWkhaa0ppYTJaNFkwbGpNV2RuWkV4aVZHUnVZWFJrUTJKR1kwZG5lR0ZIYUVGaE0yZEdhR1poV21kWFkxSm5jV2hWWjNoamEyWlVZV05vUVdKMFoxcGpWbU5vWkVwak5tVlNaekpvVW1GQ2FHSmhhMmR3YUhOaVRHZFJaRTVuWkdkSllXaGpUbVZwWTBSbFFXTm9aMEZtWkdaSVowNWpNbUpaYURKa1dtaExZVlJtVW1SWloxTmpWR0ZJWVZaalMyaEZaVVpqU21GRmFFTmlNMkZDWjJGa1VXTnRZemxuYVdKYVoyMWhhMlZqWTBwaloyWlpZelpuVVdRd1kwbG5lV1pGWWtabmIyTklaMVJrYm1OU1pqQmtRMlZJWld4aFRtTllZV3hoUm1OTFpGUm5ibUZWWkZKblkyWXdhSGhvVW1GbFlVaGlRbWRYWTJSbFFXUTVZM0pvVldGb1lWSmlOV1ZGWld4aWMySjRaVUZsUldKRloySmtTMll3WVdOaVFtWkZaekpuTUdkTVpsTmlWbWM0WW1WaFZXRkZZbVJpYTJSUloxZGtOV1pMWTFwb1NHRnNZMHhvUm1KSVprVm1aR0pJYUZWbE1HZGFabFpoYm1OUllqWmlVR1pxWlc5bE9HTmlaMGRoWTJOWFowVmlhMko0WWpGblUyUm9aRUpqVTJWU1pVRm1kR0ozWTFka2EySktaSFprWVdRell6RmxSR1pHWWtoa1NtUlBaMk5sZUdOQ1pFMW9WR2RXWWtabVNtTkdaRlZsTldWd1lWQmhWbWMxWlhkaFUyVlRZa0ZrV21OQlpuaG1NV0UzWkZaa1EyTktaa1ZuUW1OWVprWm9OV0ptWjBoalVXSlFaR0ZpTVdKSllsVmhZMmRWWjFsaVZHWmxaa1ppVG1KUVpscGtSMkZ3WlZSblUyTXhZVmxuYTJKWWFHZGtjMlJaWmtWaWJtVktZWFJoV21ORlowWmhkV0pUWTIxbVVtWTFabE5qZUdkU1kzaGpTR1ZTWmpGb1RtWkhZMVptV21Rd1ltSm9ibUkwWjI1b1NtZDNhRGhqTUdWSGFFVmhRV1pLWlU5blFXUjBaVnBuU0dKQllVSmlUMkZKYUd4bmNHSm1ZMkpuZVdSM2FHcG9VR1pvWVZGbE5taFNZbTFtVFdGYVpsSm5WV0ZHWXpka1UyTlNZbFpqVDJkaFlWaGtVV1ZaWm1ObFJXVkdZekJrVldaVlpIQm1UMkprWlZKbVJtZDZaVlJpUm1OclpITm5UMkpDWlRobmJtRkJaRkpuVVdKVVlVSmtSMmhHYUVkalJHZHVaR2hrUTJaU1oyMW5hR1JCWkZWamVHUnJaVlJrWTJkQlpYUmhXbVZXWldoblNtUTJZMUpsTW1oU1pFSmtZbVZyWTNCb2EyVmxZVlZqVG1oQmFFOW5WbU5TWVU5bFVXY3lZMWxuV0dSYVpWaGthR0l5WW1KaWJXZzVaVmRpWW1Kb1lXOWhOR0ZVWVVoaVZtUkxaVVZoUm1KS2FFVmhRMmd6WTBKaFlXZFJZMjFqT1docGFGcGxiV05yWWxWaFkyTnJhRmxvYm1WWGFFRmhWV0psWlZoamVtWmFabFZpV0dkWVluUm5NR05DWWxoblFtVlNaMlppVm1JeFlXZG1WR2R1WjFWbVVtTmpaVEJrZUdoU1pXVmtTR2hDWWxkaFpHaEJZamxqY21GVlltaG1VbWQ0WkZKa2FHTnpabk5qUjJaM1lWbG5NMlJhYUVOb2VHZFpZVUptTW1abmFFeG1VbWRHWTFsb1EyRmpZVEJtZEdoUFlsRm5WMkkxYUV0aVdtaElabXhtVEdSR1kwaG9SV2hrWlVobFZXSXdhRnBoVm1KdWFGSm5kV2hrWm1sa1kyVnVZVVJuZW1aUll6aGhSV1pyWkhob01XWlRZV2htUW1aVFpsSm9RV0YwWkhkaVYyWnJZa3BrZG1KWlpHMW9XbVpuWkVSbE1XVm9aMDlrWTJkNFlVSmpUV1JVWTFaa1JtUkthRVpuVldRMVpuQmlaR2hDWkdkaE1tRkVaV2xtV21OU1lsRm1hR05uWmpCbFVXUXpZMDFrWldOVlkxZGxWbU4zWTBGbWJtTndZVTFtU21GNFl6Rm9ZV1pPWlVWbE5HVmhhR1JpUm1GTllVZGhXbVpJWW1SaFZHVkdaRUZoU21OeVlrTmtNV0ZuWmtOalYySnFZMDFqVldOaFpHZGpNR0UyWkZGbWFtRmFZbmRqVldWQ1pGSmxOR1JPWjNobE1XaE9Za2RtVm1WYVpqQm5ZbWR1YUZwaGVtaGlZakJuV21KdVowWm5hR1JLWkUxa1NtZ3daRkpsUkdGSFpXZGxNV1pPWWtwaFJHTlpZa2hsUzJWVVoxcG5kV1ZsWkVKbGFHRjVZVlJoTW1KTlkxcGlVV1JGWkRCbldXWlJaV2hsTldOV1psRmlNMlJSWlZsbVkyTkZaMFptTUdWVllWVmhjR1JQWm1Sa1VtTkdZbnBuVkdOQ1kyTm9NMmhKWjJ4bVdtWTRZVXBtVjJkMGFGTmxSbVZJWTBaalIyVkZZek5sYUdaVVpGUmpNbUpTWkhGbVZXSjRaV3RrVkdaS1pFVm1UV0pSWTBKblVtaDNaMjlqUVdScFoydGxRV1ZLWkhkbVVXRm5aRkJtUW1oclkxVm5ZbU5DWVRGblNtVkNZbFpqUVdSR1pHVmhhV0V3WVRab1VHTkRhRVZpUkdKaVlYaG9PR0psWkZwbmJtRldaVXRrUldaR1kwcGlSV1ZEWkROaFFtSmhZVkZsYldnNWFHbGxXbWh0Wm10aFZXUmpZbXRoTkdSdVpWZG9RV05WWW1WaldHTjZZVnBpVldoWVlXNWtiR0V3WlVKbVdHWkNaVkpuWldaSWFIUm5TMmRVWVc1b1ZXaFNZMk5vTUdWNFoxSm1aV1ZJWWtKalYyRmtZMEZsT1dKeVpsVmxhR05TYUhoaVJXSnNZbk5sZUdWQllrVmlSV2hpWVV0b01HZEpabEJsUldjeVlqQmhUR05UWWxab2IyYzBaV1ZoYTJaa1pXdGhVV1pYYURWaFMyUmFaVWhsYkdkTVprWm5TR2RGWTJSaFNHSlZaREJqV21KV1pXbG5RV2R0WTFCa2VXaENZV2hqVDJGVFpWbGhSbUpCYUVWbWVHWnZaMU5uWjJSQ1pXVmxZbWRuWlhSamQyRlhZbXRrU21WMlpGbGxiV0ZhWjNCb1JtWklZa3BoVDJOallYaGlRbVJOWWxSbFZtWkZhR1JtV0dGUlptTm9ObVJsYUcxaVkyVjRZVlppVjJSNFoxSmxWbVV3WnpWa2JHZERZV3hqYkdGTloxVm1XR2hvWTNkalZtRnVaVkZoVUdGaFpURm1TV2RWWkdOaFZXZFpaVlJoWldaQ1ozQm1VR2RsWm01b1pHVlVaa05uVVdOb1kyRm1RMk14Wld4bVYyRkZaMjVtY0dWSWFGcGlSV1pHWlhWblUyVnRaVkpoTldKVFpIaG1VV0kwWWtWaFFtVkNZMjVpUjJSV1pscG9NR0ZpWm01b1dtZDZabUpoTUdKYWFHNWtSbWhvWlVwa1RXaG1hRWRvUVdGUlpsVmlhMkZSYUV4a1kyZEdaSEJqUTJaaVlqSmpTbUZ0Wm1GalVtRlNZM2xrVkdGcFprVmhaV1pJWjNkb1ZXUlpaa1JoTUdkRlp6aGhTV0pFWlU1bVVXVktaMFZpYkdkc1lWZG1SV1phWjJ0blpHUlNZa1pqZW1OVVkwWm9SbVkwWjJOb1JtTmFaVEJuUkdjeVpuUm5VMlJHWmtoaVJtZEhZMFZtZVdaM1pHSmpRbU5xWW1Sa2EyaEJhRlpvZUdabFpFMWxWV2hKWlZobFJXVnNZV05rYjJGVFkxTm1aMk5XWlZwbmFHZG9ZM1JoWldOU1ltUmtTV1pYWlhobU1HZGtZMVJvVW1Kc1lWZGhaR2RIYURWbE1tVmpaVEprT1dWSGFGcGhlR0ZaWWxOb1ZHZElaVlptUzJkRlkwWm5iMlpSWmxGbGVtTnJaMHBuVkdSRVl6QmhibU5MWjNsa2FHUmtZbEJuUVdGdmFESmhVV1JyYUVsblpXWkNZMEZpZEdoQ1lraG5RMlJuWkRObFZHTklaMmRuVkdkbVpsWm9NV1puWWxSbWJtSlZaVkpqWTJNd1luaG9VbVJsWkVoa1FtUlhZV1JrUVdNNWFISmtWV0pvYUZKa2VHZFNhR2hsVG1ZMFkwZGhhMmM1Wnpab1pHUXhZVTFsVG1WRGFERm9iMkpNWVZkaVZtZFpZVk5vWldkclltUm1hMmRSYUZkaE5XTkxZVnBqU0dGc1oweGxSbU5JWmtWalpHZElabFZsTUdkYVlsWmxiV0owWlhWbVptaHBhR05tYm1ORVozcGtVV1paWldKalVXY3hZV2hoVldob1lVRmlUMmRYYUZGbGRHRm9ZbGRqYkdNMWFIcGxXV0Z0WlRSbVoyaEdhRWhuT1doUGFGcGxkMkZvWlVabVVtWklaSFJqU21GR1oxVm9OV2R3WkdSbFFtaG9ZWGRrVVdWWVoxSmxVbVpUWTJ0bE5XY3hZMFZqV0dGT1owMWtWV1JZWTJoa2QyTldZMjFuTkdkUVkwbGxiR2hKWkV0aFltUkZhRmxvUVdoaGFHNW9iR2hRWkZwbVIySndZVlJvUjJSU1pFNWpkMlpEWmpGa2JHTlhaRVZuYm1od1lVaGhXbWhGWVVaamRXZFRZVzFoVW1ZMVpGTmhkMkYwWTNoa1JtaFZaV3RvUm1SVlowRm5WbWcyYUVWbFZHRmtaMmRqWm1aVlpWbGtOMlZEWkhoblNtZGtaV1JrVm1aWmFFMW1WV1pyWTNoalEyaGpZVVpsWkdKRFltWm9TR05DWTNabVdXVkVaelZtZVdGVVkyNWtUV0ZSWjFSb1JXZ3hZMUpoVTJoU1pGWm1UMk5oWWxobFVXWlpZbU5uUldWR1lqQm1WV05WWlhCa1QyWmtaRkZuZEdoNllrSmtWbVZHWm0xblltTldaRnBoYkdaSGFGVm1SbUpUWTBablNHRkdhRWRpUldJelpXaGhWR05VWlRKbVVtTnhZVlZsZUdKclpWUmtZMmRCWjNSaVdtTldZbWhrU21nMllWSmhNMmgwWkVKbldtRm9aelJtYzJoTlowSm9aMkZoWVVSbmJHTjNZMDFpVjJWNFpHdG5TMmRoWkZkb05XTnVhR05oTTJOT1oyRmlXbVI0WnpWbVltRlVaMGhpYUdKTFlVRm1WV1ZTWms1blFXaHNaWEJvWVdKUlltMWtPV2RwYUZwamJXWnJabFZuWTJoclpEVmtlbUZGYUVWb2VHUk9abFZqVldocllWWmtWR0p0Wm14ak1HZEhaVWRtY0dKQ1pXWmlRV1ZWWkVOalFtSjVaVmxoWm1kRVpVRmxNV1pDWldGblNHRkJhRXRtWVdSUllUbG9ObUZWWVdkaGFHSjBZVkpqYkdKd2FIaGpWMlZzWmxKaFQySmhZV3hoVFdaYWFFVmxNMkZCWWt4aFYyRldaMWxuVTJSbFkydGxaR2RyYUVWbGVXVnpaR1ZpVFdOVFpYTmpSbUpHWWtOb1ZtRldaVlpoUW1JMFkwTmhabU5JWkZKaWRXRmthRzVvVG1KMmFGSmpiV1pqYUZkbVJXTnJZM2RoYjJGUlkzaG1lR2MwWkZKbVFXZDBaM2RoVjJkclkwcGxkbVJaYUcxa1dtTndZVVppU0dKdlkwZGhabUpWWjBGbVpXWkJaR2RuVldaSFpWRmtVbVZqYURWbVRXWlNaRmxpSzJSQ1owUm9UV1JSWWtobloyZDBZekZvUkdOSWFFMWpTMlZDWTBSaldXRjZhRUZpYW1VeFlVRm5TbU5XWkVsbVkySmxaa1ZuV21aSloxVm1iR2RPWkZCa1dtTkhZbkJpVkdOSFpWSm1UbVozWWtOa01XaHNhRmRqUldocFlYZG5SMlJPWW10aVJXVTJaRk5qYm1Kc1p6VmtVV2QzWTBwaWEyZERaa0ZtTldGWlpVZGhWbWRDYURCa1RXWkRhRWxsTjJOS1lXaGtWbWR3WVdGblZtUk9abU5uV21SVlkwMW1VV1ZYWmxWblVXVmhabUZsTTJKQ1kwTmpZbVF5WlVwb2JXUmhhRkpsVW1SNWFGUmhibVJOWkZGb1ZHSkZaakJtUkdORVowVmlSV0ppWjA5aWVtWnZaRmxpWldGSFozUmhNR2hWWVZWbmNHRlBabVJpVW1WR1lucGhWR1ZHWmtabk5HSmpaMFptV21Rd1lrUmpNbWhOWlVkbFdHWkVZbWRoVm1aSVkxRm9ZMkpUWmxobU0yRlNaSEZqVkdSb2FHdGtSbUphWjFKb05XSkxaRkZrZUdkS1pEaG9VbUo2YUVKalNXWlpZbTFoUW1acloyVmtWV1Z6YUZWalkyTlNZVEJoWkdkVVkxSm1iR0pYWTJSb1IyUTFaekppWTJJeWFHTm9VMmRhWW5kbmMyWlRabEpsUjJGT1oyWm5RbUZWWTBaa1VtUkRZak5oV21KaFkwaGpSR1Z6WkhGbVRHUjZaVzlpWVdWRVlsRm9PV2hwWlVKaGEySldaazVqVjJGcmFHdG5aR1JIYUcxbWJHaHhZMEpqYldnMVpVSmtXbVZWWjJSaFJHUlNhRE5oYTJRM2FHTmxNR040WlZKalpXZElZa0ppVjJGa1owRmpPV1J5WWxWb2FHVlNaM2hvVW1Wb1lrNW5kMlZDWlhkbFkyVjBaRTlrVm1neFpHMWlWV050WmtWaFpHRlhaRlZuYzJoVFpHSmlSbVJLWjNoalZXTnVaWFJsUzJSWlpHNWlhMlJtWVVoa1dHTXdaak5pU0daVlp6Qm5XbVJXWkc1bFVtZDFZbVJtYm1oT1luWm9VbUZ0Wm1ObVYyWkZaR3RuZUdVNVowaG1hR2RDYUZCb1VtWkJaVTVqYldSVVpERm1aR0U0WW1Sbk1tTmFZM1ptUm1SRFkzZG1ZV1JQWWpGaGEyTm1hRkZrZVdNMFprbG5RbWRzWTNobVoySmthRUppVG1SM1kxTmhVMlZDWlZKaVZtZEdaMEpqY21aRllWZG5TbUZoWlZkb1NHTkdaemhpWm1SSVpGRmpVR2hoWVRGblNXWlZhR05rVldoWlpWUmpaV0ZHWkU1a1VHZGFaVWRtY0dOVVlrVmlWV1ZqYURSblVXRm5ZWEJrV1doaWFGUmxkR05WWldSbWEyaEdaSHBpVTJGdVprcG9jMkZZWVdkaVpHWnJhRWhoVW1oMFowNW9WR2hXYURsbE5HWlNZMGhsV21GNlptSmtNR2RhWjI1aVJtTm9aa3BvVFdSa1lWVmliMlpSWlZWamEyTlJZVXhqWldWQllqUmhTMmhLWVdwblJtVnZaMFprYkdoV1ltMW9WbVp1Wmsxb1RtZFVaRVZoVldOUVpVaG1WbVl3WlVob1QyUnVZWEJoYm1OTloxWm5WbUp6WVZWaFZXRkdaMDlpWm1KVllWWmplbUZWWjJ0bk9XSnRZbU5qUldSa1kybGpRbWh0WmtwblUyTkZaMjVpUm1WUlowSmhiV1F4WlVGa1YyWnRZVEZuYldKbFpWSm5hMlpVWW1OblFXUjBabHBtVm1Ob1pFcGlObWhTWVRKbFVtVkNhR0puYTJkd1ltdGhUR0pSYUU1bFpHRkphR3BoWTJka1psUm5VbWhzWmxkbVpHRkhZalZtTW1oamFESmtPV0ZIWjFwa2VHTlpZV0pvVm1jeGFEbG1TMmhGWmtaaVNtTkZaa05sTTJWQ1kyRmlVV050WnpsbmFXaFBZakprUVdOWlpWZG5SV1ExWkhwbFJXSkZZWGhuVG1oVllsVmhhMlZXWjFSamJXSnNaamhoVldOSVpUUm9VbWRLWkdob05HaGxZVUZvVTJOR2FFbGpTV0YzWTJ4a1ptRlFZVk5tUldSRVlVNW1WV2hOWVRSalZXVm5ZbXhtZUdaRVltaGhNR1p2YUVGa1VXaEJZWGRtU21KUlkyUmlRV0ZSWkhwbFZXSkdZVWhqUVdaamFGTmtXbVl3WkdObWFXTkdaVU5qUVdoS1prMWlSR2RCWWtWb1YySnVaVVZvVm1WVFoxVmxVV1ZhWTBSbVZtYzFhSFZsWkdWdVpFNWxkbUpTWm0xblkyUlhZMFZtYTJKNFp6RmlVMlJvWmtGa1FXaEJaRlpuT0dkc1lrTm9RV1Y0WkhaaVlXaHJaM2hrY0dWR1owaG1TbWhQWjJObWVHTkNaazFsVkdKV1lVWm1TbVJHYUZWak5XUndaMlJsUldaM1pEUm5RMkpEWkdSalptWk9ZVkZtT1dOb1owTmhXR2hPWWxKbFZHSklabWRpYTJSWFpVRmpkR1pQWW1aa01HVnZZMVZpWkdJd1pVRmlOV0ZsWjBaaVRtWlFaMXBvUjJad1oxUmlSMlJTWms1bGQyaERZakZqYkdOWFpVVmpibU52WkZSaFRHVkJaR2RsT1dKU1pFSm9jMmcwWlZkb2QyZFNZM2hoUVdKQlprSmpUbVZVWVZaaVoyaE1Za3hsTW1KYWFHcGhZbVF3WjBKaWFHVlFaMEprU21GTlptUmtWV1J2WTFGaVZXRnJaVkZuVEdSallrWmtjR2hEWkdKaU1tZEtaVzFrVUdKV1kzZGpOMlJJWTFobk1XVjJaa1JsVm1JMVlrUm9VMlpSWm1obVZHUmhaRk5qUVdGWFkwUm1kMkpDWTI1bFVXSXdaSEJrU1dSamFIcGlkR2Q2WlZSa1JtRkdaelJpWTJoR1pGcGxNR05FWlRKaWRHRlRaa1ptU0dkR1kwZGlSV1I1WkhkalltVkNabXBpWkdScllreG9SbU5uWkVObldtTm5hSFJqUldaVFozaG9TV1IxWTFOaFVtUnpZMEZsWm1neFpIaG5UMkZsWlZWaWMyVlZaMk5rVW1Nd1ptUmpWR1JTWm14bFYyRmtZa2RoTldneVpXVmxibUpTWlhOb1dtRjRaRmxqVTJaVVlVaGtWbUpMWkVWblJtRktZa1ZtUTJoNVlURm1WR0pVWkd0blZtWnBZbHBoYldSclpGVmhZMk5yYURWaGVtZEZaMFZsZUdkT1oxZGlVV1pGWkdKalNHZHFZWE5vTjJkVVowUmlPR1ZXWTB4aFVXWkZZMUJtVVdKRVpVcGhSR1pPWVdkb01HTkdaRkJuVTJoSlptbG9VR0ZGWXpSaWJHUlZZV2RsYkdWNFprUm1hR2N3WW05a1FXaFJaMEZvZDJGS1kxRm9aR1ZCWjFGbGVtZFZZMFptU0dSblpFbGhVMmhhWXpCaFkyVnBaRVprUTJOQllVcGxUV0ZFWkVGbVJXUlhaRzVtUldkV1pGTmlWV05SYUZwa1JHSldaRFZsZFdKa1oyNWlUbVoyWVZKb2JXaGphRmRsUldSclpuaGtNV2hUWjJobVFXSkJZMEZtVm1NNFkyeG9RMmhCWlhobWRtSk9aV2xvTkdoblkxSmlNMk4zYUhoaFRXTm5hRkpqVldaVVpGVmtPV0ZLWTFGa1ZXTkJaMWRuVG1KUlluaGpiMlJoWlROb1VtVlNaVk5oYTJnMVpERm5SV2hZYUU1aVRXaFZZbGhqYUdWM1lsWm5ibUpSWkZCaVpHUkdZa2xvVm1GWlpGZG9kMkZVWTJWaVJtTk9ZbEJsV21kSFpIQm5WR2hIWTFKalRtaDNaVU5qTVdac1psZG1SV2h0WTBKaVNHaE5ZMEZuYTJGdVprZGlWMmh2WjBkbVEyUm5ZMEpvY0dKSVpGRmhSbUpPWTFSb1ZtRm5aa3hoVEdVeWFFcGxjbWhTWkZWbVdtUnVZVVpoYUdKS1lVMWlaR1JWWm05blVXSlZaV3RsVVdOTVptTmlSbVp3WkVOaVkyVkhaVXBsYm1abFlrUmlOV1Y1WmxSbGJtaE5abEZtVkdkRll6RmtVbVpUWVZKb1ZtRlBZV0ZsV0dGUloxbG5ZMlZHWm5SaE1HTkNaMUZvU1dKSVprcGhhR000WkUxa1JHUlZaVXBsY1dKallrVmphR1V3WlZkbU1tRlZablJqVm1WWFlrcGtWV05QWWxoaGFHUlVaVlJtTW1WU1kzRm5WV2Q0WVd0bVZHTmpZVUZpZEdSYVpGWm1hR1pLWXpabFYyRkhZbEpoUVdGbVpXMW9RbWhyWm1Wb1ZXVnpZVlZtWTJWU1l6QmlaR1pVWTFKaGJHZFhaV1JsUjJFMVpESmhZMlF6WWxaa1IyUk5ZVEZrTldSaVpraGhNMkZ6YURGa1ZXUlZaVVppVjJWRFl6SmhlR2RoWjBaamJXaEZabVJqU21RelpHOW9SMmRYWlVWa05XVjZZMFZtUldSNFlrNWxWV1pWWjJ0aVZtVlVabTFqYkdJd2FFZGlTR0ZDWVVKallXVXhaa1ppVEdaWVpERmxPR1pTWTJObk1HUjRhRkprWldkSVprSm5WMmhrWlVGbE9XSnlaVlZoYUdSU1pIaGhVbUpuWld4a05HRkNhSGRqWTJOMFpFOWhWbUl4WkcxbFZXWnRhRVZrWkdaWFlsVmtaMk5UWTB4a2EyTnJabUpsUVdoSVl6bGxZMk5VYUc1bWJHWk1ZVVppU0dKRlptUmhTR05WWmpCa1dtWldabTVtVW1SMVptUm1ibUZPWW5aalYyVlhabU5vV0dkQmFHMWpXbUV4WkZOamFHUkNaVk5rVW1oQlpYUmlkMkpYWTJ0a1NtUjJaVmxuYldOYVlYQm5SbUpIWjJoaVQyRktaekZrWjJaR1pFaGhiR0U0WXpKaFZtRkdhRGxpTDJOa1pVRm9VbUozWWtaaFdHTnZaSFZrUTJJeFl6bGlhbVJQYUROblRtUk5aVlZoV0dob1lYZG1WbUZ1WTFGalVHVmhaVEZsU1dGVlltTm1WV1ZaWjFSaldtVXhhRTVvVDJOa2FGVm1RbUpVWjBkblVtSk9aWGRrUTJJeFpteGpWMlpGWm01bmNHUklZbHBqUldkR2FIVmlVMkp1WXpWa05XUklaVEZtZDJJMFoxUmxhR2ROWkhsbVYyUkZaVnBpYTJGaVkyMW1hR1I2WjA5aU1HSm5hRmxrVm1kM2FFcG9ZMmhpWm0xbVFXUlJZVlZoYTJGUlpVeGtZMkZHYUhCblEyRmlZVEpuU21kdFlrNWxRbUl4WkN0aFdtZElZVTFrVVdOVVowVmpNV1JTWVZOalVtZFdZVTlrWVdoWVpGRmpVV2hQWkVWbE9HVnJZMEZoZDJaVlpHRm1UMkZyWkZWa2NXZElaRUppVW1VeVkxQmtRbUZOYUc1bVdHaENZVGhsWVdGV1pWUm9PV2RIWlVSbWJtZG5aR0pvVVdSVVpGRmtOR0ZJWlVWaE1XaGpZMHBvUm1aSlkwcGpSV1I0WTNkb01tRkZZakpuVW1oallXSmhaMlIzWVhoaFRtWjNhR2hsUVdKUFlVWm1TbUZVWTFSbVVtWkZaRU5sWm1aWFl6Um5kR2hYWkZkb09XRkhaRnBoZUdWWlpsTmpWR0ZJWmxablMyaEZaa1pvU21oRlpFTmtlV05KWVdaaFJtSnFZMjlrZDJSTGFFZG5iR1JCWWs5bFoyZGpZbWRrU0dKcVkwMW9UV2hTWmxaaVJXVldhRlZrYldaclptZGhSbUZuWmpobFFXUlpZa1ZrYkdkbllsUm1ibWRWYUZKbVkyUXdaSGhoVW1SbFkwaG9RbUpYWldSbVFXUTVZM0pqVldKb1oxSm5kV1pTYUdoaFNtUnZaR1ZqVldJNVlXdGhZV0pzWlUxa1dtRkZhRE5rUVdGTVlWZGpWbVJaYUZObVpXZHJZbVJuYTJoWFpUSmpOR05sYUV4alJHSkJaMWxsUjJKblpUVmpZMmREWWxaa1ZXRmFaMU5rU0dKUllUWmlaV1ZCYUhkbmRXZFZZbTVoT0dFNFprVmhhMkY0YURGbVUyWm9aMEptVTJWU1pFRmxkR1ozWkZkbWEyRktZM1ppV1dKdFoxcG1NbU5HWTBob1RtVm1hRmRqVW1GQ1lVMW1WR2RXWWtaaVNtTkdhRlZrTldGd1pXUmlRbWRvYUhka1VXVllaMUpsVW1aVllrVmxOR05vWlZkbVZHVnZZbVpuV0dGM1ptTmplR1JTWkZkbVdXaFFZMlJsTVdWS1owRmpabWg2YUd4b1UyZGhhREJqUm1Gc1pWcGpSMlJ3WTFSa1IyVlNZazVsZDJKRFlURmliR1ZYWVVWaGJtTndaa2hqV21oRlpFWmplR2RUWjIxbVZtVndZMWxsVW1WU1kzaGlTR1ZTYURGblRtRkhaRlpqV21nd1pHSmpibWRhWjNwbVltRXdZVnBuYm1KRVlVSmhTV0ZaWmxCa1VXWk9hRVJrV0dKRVkzUmlTMk5aWmpCbWFHWkRhR05oVjJOSlpubGxXbVl5WkhOa2VtSllaVmRoUldjMlkxUmpSV0l4WVZKbFUyVlNhRlpvVDJGaFlWaG9VV0ZaWTJOblJXTkdhREJoVldoVlpIQmtVbUZrWmxKb1FtTnBhRnBoYkdKR2FEUm5ZMmhHWVZwaE1HRkVaekppZEdaVGFFWm5TR2hHWjBkaVJXZ3paV2hsVkdGV1pWZGlVV0lyWlVkbE1XTkNZVUZuWm1kdVpWRmxXV05TWTNkb1VtRTJhRmRrTW1oUlkxWmpXV0ZFWkZWaGJHWmhaMFptTUdNclltTm9VbUl3WW1SaVZHWlNaMnhoVjJKa1prZGpOV2N5WVdObE1tUTVZVWRuV21ONFkxbGtUbUpVYUVobVVtTmhaMDlqYkdaS1lVVmpRMkV6WVVKbllXWlJZVzFuT1dScGFGcGxiV1JyWVZWblkyVnJaalZtZW1KRFlXdGhkMk5hWTBkalVXaENaMGRuVVdGQ1lWbGlNV2hEWTFkaldtRkNaR0ZuYkdoRlpHVmxVV0ZCWm5CblVXSlpabXhsY0dZM1ltVmxTR2RDWlZkaVpHSkJaRGxpY21GVlkyaG5VbVo0WjFKbGFHSk9aRFJoVldVd1pEbGtOMkpoWkd4blNXVkpaVTloV0doQllVeGlWMkpXWkZsbFUyTmxabXRtWkdkcllsRmxWMlExWVV0aFdtUklaR3hvVEdkRVpHNWtSbUZLWVZaa1VXWlNaRXRuVjJSQlpYTmhkbVphWkcxbFRtUjJaMWRvYldGa1owTm5TR1JFWVUxak1HTlhhR2RqUW1OS2FHSmlaMlowWm5kaVYySnJZa3BoZG1SWlptMWlXbVZ3WkVaaVNHUkpZMVJoWldGb1kzaG9iV1JVWTFabFJtVktaRVpvVldnMVozQm1aR2RDWVdoa2QyUlJabGhuZDJkYVoxSm9RbWMwWkc1a1dHZHBaV05tUkdkQ1lWTmtSV0puYUVWaU0yUndaVUZrVDJOV2FFbG5TbUZqWlZGa1FtZEhhRTVoYUdWQlpXSm1UR05UWkZWalpHSkhaMUpvYzJocmFFRm9iR2hyWVU1bFQyRklaWEJvU0dSYVlVVmxSbVoxWmxOaWJXVlNhRFZsVTJoNFpGSmhlR1JJWmxWb09HUkphRlJvVVdSTllXMWxTV1pJWWxwa04yUlNZVlZtV21OdVlrWmhhR0ZLWVUxbVpHZFZabTlrVVdSVlltdGpVV2hNWkdOb1JtZHdaME5pV21oNllsbG5kV05KWmtWalpHUTRhRTFrVkdOSllrRmpXR1pGWVRCbVRtTldhRUpoVldaaGFGcG5kMmgwWTFwa1dXUkdZMFpqT1dOWVpGZGxRbWRQWjJSaVVtaEdaM3BqVkdOR1owWmxOR1JqWlVaaldtZ3daMFJtTW1kMFlWTmlSbVZJWVd0b1UyaFhaSHBtUldaQloxRmlVbVJ6WTNKalVXSm5aamhrVkdkTWFFSmpXbUphWWtGa2FHRjNZa1psUW1kdVpGWm5XR2hhWlRCa1dtTlBZbVZpVldaemFGVmlZMlpTWnpCaFpHRlVaMUptYkdGWFptUmpSMkUxWmpKblkyRXlaRGxtVDJGTllqRmpOV0ZpWTBoaU0yVnpaekZqVldSVllrWmpWMkpEWjNsamVHWklZbEZoYW1aMFpYTm5SMkpUWTJka1NHTlpaRVZtWkdNdlpFOWphMmg0WjA1a1ZXZFZZbXRoVm1OVVltMWhiR0V3WWtka1NHTkNaa0prWkdKR1pVWmtTMlpTYUdsaFJtSmFZazlvYUdRNVptWm1RbVY2WTBablEyWmlZVUZsT0dZelpsUm5lR1ZSWTJ4b1UyZEhaM2RsTldGU1pURmlaR1IwWTFwaWJtVnJZbHBqUldnelkwRmhUR1JYWVZaaVdXVlRabVZvYTJWa1ptdG5VV0pYWWpWbFMyTmFaVU5tTUdaRVlsaG1VMmhKWkROb1NHUlZaVEJrV21OV2FHNWpVbUoxWjJSbGJtUk9ZM1prVW1odFkyTm5WMlZIWkRGaFpHWm1ZVk5oYUdOQ2FGTm9VbU5CWTNSa2QyVlhhR3RpU21kMlpGbGphbVYwWW1kb1IyaEdaR2htVDJkalkzaG1RbVZOWWxSb1ZtTkdhRXBuUm1WVll6VmtjR1ZtWTBabVFtY3Jaa1ZpVTJaWlptVm1TR0ZuYUVWbGFHWlRaRU5oVFdaS2FGaGhlbVJyWXl0aFJXVnVaMUZsVTJKaFluaGpVbU5DWmxCaWQyZFdaVWhvVFdOU1puZGhRbVJhWkVka1NXaElZa1ZvUW1STlpISm5TV0ZXWTJ4b1YyRkZZVzVqY0dKSVpscGlSV2RHWlhWbFUyTnRabEpsTldSVFpqQmhXV2N3WkZObFZXSm5abVpuVm1JeFpscGlPR1pTWkVob1dtUjZhR0ptTUdoYVpHNWtSbWhvWmtwalRXaGtaVlZoYjJOUllWVmphMmhSWWt4bVpXWkJaelJvUzJaS1pXcG9SbUZ2WkVab2JHaFdZbWxqV0dSdVpFMWhWMmhWYUZWb01HSkdaMUpqTW1WdlkxQm9aV1JYWlZGblVtUm1hRWRtZEdRd1psVm5WV0p3WVU5aVpHaFNaa1ppZW1SVVkwWmxSbUkwWVdObFJtSmFZakJoUkdVeVprMW1SMmhZWTBSbVoySldhRWhtVVdWalpsTmlXR1p1WTBwaGNXaFdZVkZuVVdGVVowcGhRV1JWWW0xalJtSjNhRTVpYzJaVVlXMWlhR0Z5WkdKb2EyaHdaR3RrWldSVlozTmxWV1pqWmxKaU1HVmtaRlJtVW1kc1kxZGtaR1pIWkRWbEsyZEthSGxqWTJkUVlrNWpRbWhvWkhSa1JHUlhZVnBrV1dGRlpVWmpVbU5hWVVOa2VXUlNaVlZsVUdkVFpUVmllR05rWjBkb1FXVlpabGRqUldFMVlYcGtSV05GWVhoalRtRlZZMVZpYTJoV1lsUmpiV1ZzWWpCb1IyWklZVUpqUW1SbVowRm9WV1pEWWtKa2VXTlpaMlpvUkdGQlpURmlSbWhaYUVoa1FtZFJZbUZvVVdRNFpTOWtXR2hIWjNOamQyaFZZbWRtZEdoNFkxaG1NbWRXWm10aFlXWnNhRTFrV21ORlpETmxRV1ZNWlZkb1ZtTlpaRk5vWldoclkyUmphMlZSWkZSbmIyVkRZMHhqVTJGd1ptaG5SbWhJWVVWbFpHUklabFZtTUdGYVkxWmlibVZTWm5Wa1pHWnVhRTVrZG1OVVlUTm1kMlU0WWtWamEySjRZakZpVTJob2FFSmlVMlZTYUVGa2RHaDNZMWRsYUdNNVpXMWpZbVZyWVhobGNHWkdaVWhoU21SUFkyTm5lR1JDWmsxa1ZHSldaa1prU21KSVlsRmpXbVZ1WVVwb1JXWnZaUzlqUm1GVVpuTmlSbU5GWkhoaE5HTjNZa2huZVdaellrUmhRV1l6WW1ob2RHZFdZMnBoU21aaFpVcG5VbWhHWTBGblQySkJaR3htWkdWbGFFWmljMlJpWkdKb1YyWnZZa2xvVFdoNFlrNW9kMkZEWnpGamJHaFhZVVZtYm1Kd1lraG1XbU5GWTBaamRXZFRaR3BoV1dNNFlVaGpNR1ZGWjJwalZXSjRaVEZqUm1kTllqRmlXbVF3WldKamJtaGFaM3BsWW1jd1lscGhibUZHWm1oalNtRk5hR1JtVldSdlkxRmhWMlJvWTBKbFJHSlBZbEZsYkdOTlpFVmxRMlpPYURKaFpXVlNaVkZuVFdGVll6TmtUbVZGWVZGa2FtRkpaVkZoVjJOUlpGWmlTR1phWTFabk5HUlpaMk5pUldGR1l6QmpWV1pWWm5CaFQySmtZbEpoUm1ONllsUm9SbUpHWXpSblkyRkdaRFJtWjJoU1pIbG1TV05DWjBkbloyUTBZa2htUVdkdFpqVm1WR2ROWWxoaGJHTnhZa0pvZUdWa2FITm5UV1pTYUhCblVHSllZWGhuTldaUlpWSm5NbWhTWVVKblltaHJhSEJuYTJabFpGVm5jMkpWWW1Oa1VtUXdZbVJsVkdWU2FHeGhaV05KWjBObldXUXZaMGxrUjJSRlp6VmlTbWRuWlZWblFXWlVhRUZoZEdoWVlVVm5RV0ZhWWt0bFpHVkVaa1pvU21KVlprZGtXbUoxWlZSaFIyRnJZMVZoWTJOclpEVm1lbUZGWmtWb2VHRk9ZMVZqVldGclpGWm1WR2h0Wm14bE1HSkZZa05oVVdGS1lsQmlVV0pLYUVWaFRXZFVabEZoUm1SaFlqQmtkMloyYUZwb1dHZEJaME5uWldkdVprRmpjV0pTWTJkbGVHRTBaRk5uYW1Gc1l6UmpWV1F3WkRsamEyWmhaV3hoVFdOYVkwVm5NMk5CWWt4a1YyRldhRmxoVTJkbFpXaG5UV1Z6WkVOaVJHRXhZV2RuV21OSVpHeGlUR1ZHWWtobVJXSmtZMGhrVldJd1oxcGhWbVJ1WTFKaWRXVm1ZakpuYUdOR1oxSmliV1JqWjFkaFJXRnJZWGhsTVdOVFpHaGtRbUpUWlZKa1JtSmFZelZqVm1GdGFHaGpkbVpaWVcxaldtSndaa1pqU0dSS1owOW5ZMlY0WjBKbFRXWlNaMUpsYkdSSVpsSmxVbVYzWTIxalNXaEdaMk5qYTJkSFpFTmxVV2hWWjFKbVFXVkJaRFpoVW1GWWFFNWxVbVZWYUZSaE5HaHNaMGRvUkdka1oySm1TV05vWXpGa1lXTmphRlZsTkdoaFptVm9RV0ZvWkd4a1dtSkhhSEJsVkdOSFlsSmxUbWgzWWtOak1XWnNZbGRtUldodVpIQmhTR2RPYUdkalVXWTJaa2hvZW1OWlpUTmpVMk40Wm5obFltaElhRkprTVdWT2FFZGpWbVZhWWpCaVltRnVZMXBvZW1oaVlqQm1XbVJ1WmtaaGFHSktaVVZoU1dGUlowcGtXbVJCWWxWamNHVXdaRTFsVldGd1psTmhZbWN6WVRsb2JXUm1hSGRvUm1WdVoxaGxWMmhaWjFGaFUyUnJaekJoVUdWSVpsWm1NR1pJWkU5b2JtWndaMjVtVFdoV1prWmthMkZYWkVWaVdtVnJabVJrVW1OR1lYcGxWR0ZHWWtab05HSmpZa1psV21Zd1kwUmhNbVYwWkZOalJtSklZMFpuVDJaU1kzcGpRV05oWkVoa1IyZHZaMVpvUldobllXZG5SbUpqWWtKbFdtZGFaMUZvUVdOa1pYWm5WbVpJWVVaalFtVmhaMFZvYjJVMlpVeG1VV0ZPWTJSbVNXaG9ZazVrYVdSRVlrRmthR1ZCWW1abFYyUktabU5vWTJjeVp6bG5SMlJhYUhoaldXRlRZVlJoU0dGV2FFdGxSV2hHYUVwa1JXZERaak5oUW1KVFlVWm5hV2RqWW5KbVRtVlhaV1JpY21STlp6RmhNV2RvWkVWa1JtUkdZazVtVW1FeFpYZG1RV2RZWjFob2VHUXdZMGhtYm1WQlltWm1TV2hDWTJ0aVJHRklZVmhqZEdOMVlVMWliR0U1WWtSb1kyaFlaM2hrT0dKa1kwRmlPV0p5WlZWb2FHUlNabmhtVW1Ob1kwNW5OR0ZWWWpCaU9XVnJaMkZpYkdKTloxSm1VbVI2Wm1oa1EySkRaR3huYUdWMFlVOWlNV2RPWlRob1VXVllaRTVqUzJGalltMWhlR2hsWmtKbk1tRlJhR1JpUjJJd1lqRm9TR0pCYUdwaWQySnVZMHBoV0dFd1oxRmtRbWd6YUUxb1QyWkhZekJrUW1WbWFGTmlhR0ZDWjFObFVtUkJaM1JpZDJaWGFHdG9TbWQyWWxsb2JXTmFabkJtUm1KSVpFbGpZV0ZQWVRGbWEySm1aVnBqTVdGR1prcG9SbUpWWVRWb2NHaGtaMEpsYUdGM1lsRmxXR1JTWmxKblUySnJaV1JsZFdSUFpqTmxUbUpOWWxWbldHaG9ZbmRtVm1KdVkxRmlVR1poWmpGaFNtaEtZbVZvUldOdlpUVmpaV2RHWWs1bFVHaGFaRWRsY0dSVVlVZGtVbWhPWlhkaFEyVXhZa1ZrWldWSWFFTmxiMlZXWkV0bmVHaFZZV2hsU0dOcWFEQm9jR2RFYUdoamIyUnBZMVpqVm1KUloweG9WR0ZUWVZGa09XWkxZMVJvTkdKdVoySm9NV1owWlc1a1dHTm9aM2RqWTJkS1pYZGlWbU5GWWtoaVVtSkNaMU5uU1daQ1lUbG1UV1pRWlVOaWIyVjJZMHhpTUdkQlpXZG5WR1J0WVRSbVVXaERaMmhqWjJGbVkwTmhhMlJGYUVobFNtVnFhRzlrV1dobFlVSmhWbWc1WmxWa1VtTkdZbXRrWkdoU1lVWm1lbWhVWmtaaFJtWTBaV05tUm1SYVpqQmhSR0V5WkhSb1UyVlNaV3BrVVdSVFpsSmthV2R2YUdSb1ZHVXlabmhqUVdoVlpuaG1hMlJVWjJOaFFXWjBhRnBoVm1kb1pVcGhObU5TWmpKbVVtTkNhR0pvYTJod1pYTmlUR05WWTNOalVtRmlaVUpoTUdOTVoxZG5VbVJDWm1GaFdHSnRZalZuTW1OamFESmxPV1ZIWWxwaWVHZFpZMU5sVkdGSVpWWm1TMmhGWTBaa1NtaEZZMWhuTTJKQ2FFVm9XR2N5WlRsa01tVm1aV3RtVFdGVloyTm9hMmcxWTNwaVJXVkZZM2htVG1OVlpWVmphMkZXWkZSaWJXWnNaREJsUjJWSWFFSm9RbVpoWnpGa1JtSkRaRkpsYVdkR1lscGpUMmhvWkRsb1ptaENaWHBqUm1WSFkxcGxRV0U1WlRKaVZXRnJhRUZpTldSRVpEQm5RbU15WkV4blFXVTFZbmRtWTJKc1prMW9TR0ZFWTFoblFXWkVaa1JqVm1SWmFHWmxaV2hzWVU1a09HTlRaRWRpWkdoSFpGUmlibVJzWmt4bFJtZElZMFZuWkdOSVoxVm1NR2RhWjFaaGJtZFNaM1ZuWkdodVkwNW1kbVpTWVcxaVkyRlhaMFZuYTJkUlptaG5RV2RzWVd0aFFtWlRaMjVuVVdoNFpWTmtNV05TYUhaalptWXlZMXBvTldOSVoxaGxOV2hyWldOb2VHWkNaVTFuVkdGV1prWmhTbWRHWmxWbU5XWndZMlJvUW1Gb1pYZGpVV1ZZWlZKbFVtSlRaV3RpTldneFowZGhVMmhqWmtWalIySkRZWFJtSzJGTFlsUmlWV0ZqWW1Wa1ZtZEpZMHBrWTJkV1oxbGlZV0ZrWkVoamJHSlFaVnBvUjJOd1lWUmlSMlpTWTA1b2QyWkRaREZoYkdoWFowVmxibU53WjBobVdtRkZaRVptZFdSVFoyMWhVbVY0WlVoaE1XaDNaelJqVkdob1prMWhlV1pYWVVWaFNtVnpZV0pvYldGMFlYcGxabVF3WlRsaWRXZFFaRUpuU21oTllXUmxWV1p2YUZGa1ZXVnJaRkZvVEdkallVWm9jR0ZEWjJKaU1tZEtaVzFuWVdSU1pWSm5iMlJVWkdsblkySlJZMVZvYkdSQ1lWSmhWMk5uWldSaGEyRmhaRmhoVVdOWlkyTmhSV05HWkRCbFZXZFZaSEJuVDJGa1pWSm9SbWQ2WVZSbVJtSkdZelJsWTJORloyeG9NR1ZDWWpKa1RXVkhaRVpuU0dWNFkySmlSV0V5YUhSalFtZFNZMjFoYUdGQlkxVmllR2hyWWxSalkyVkJhSFJtV21KV1kyaGlTbVkyWkZKbU1tWlNZVUpuWW1kclpIQm5hMkpsWlZWbWMyRlZaR1ZrVldWc1lWWmlRbVJGYUhCaldXaERhSGxoT1dadFpGbGtNbWM1WjJKblZHSlNabGxoVTJSVVkwaG5WbWRMWVVWa1JtaEtZMFZpUTJNelprSmpZV1JSYUcxa09XaHBaRnBpYldoclpGVmxZMmhyWVRWa2VtUkNZV3hrYkdOWloxRm1iR1ozWlZaalUyUkhZbXhsT0daRlpFTmxVV0ZLWmxCa1VXUkthRVZrVFdkVVoxRm1RMlpaWTFWa2VHTlFaMXBpYm1WQllVTm5abUpSWlRobU0ySlZaV2hqZDJoc1prUm1iR0Z2Wm5KaFdHSlVhRUZqYkdGbVkydG5jMmRhYUVSb01tWjNZVXhtVldGVlpXTmpSV05sYUd0amNHTnJaMFppVjJaa1prUmpZbVpZYUVKb1NHUlFZMjVqUldKa1pFaGtWV2d3WlZwaFZtWnVaMUprZFdoa1ltNW1UbWgyWjFKa2JXSmphRmRoUldaclpYaG9NV2hUWkdoaVoyUkhaVVJpUldKSlpHcGxWbVpFWWpCa2RXWmpaak5qUW1Kd1pVTm9XR1ZLWmtkaFNtVXhhR2RpUm1WSWFHeG1PR015WlZabFJtWndZbmhqWkdaQlpWcG1kV2hSYUZOaVFtSlpaVk5vYTJSb2FERm9RbUl5WmxwbldtSlJaRzFoTVdjMVlsZGhiR0kwYUZCbVlXY3haa2xqVldSamFGVm5XV1JVWm1WblJtRk9ZMUJtV21OSFpYQm5WR2RIWTFKaFRtSjNaRU5vTVdGc1kyVmhVbWRxWkVsaVQyTk9aVEJuT0dKU1owTmpNMlJrWW5KbVUyUjNaV3hoZUdGRWFGSmpVbVpDWkUxak1XWmFaVEJrWW1GdVlWcGplbVppWnpCaFdtZHVhRVptYUdaS2FFMW1aR2hWWkc5bFVXTlZaMnRrVVdWTVpXTmlSbWhKWWxkblNtSjVaWE5oTVdSYVlqSm1jMlo2YUZkbmJXaHpZVkZsVldSVlpURm1RbVpSWkVKbmVHSnJZbUZvV0doUllsbG1ZMmhGWkVab01HUlZaMVZrY0daUFptUmpVbVpHWlhwa1ZHWkdaRVpsTkdGalpFVm9lR2d3YUZkbE1tVjBZMDFtUTJKWVlrWm9XR1ZDWVZab1NtVlVZMVJuTW1KU1pYRmhWV0Y0WjJ0aFZHUmpZa0ZrZEdSYVpWWm5hR05LWVRabVVtY3lhRkprUW1KallsVmljR1Z6WkdOb1VtYzRZMVZvWm1GQlkwRmhaR05ZWmtGbU9XTm1hR1ZtUldWU1lqSmxZMk15WXpsalIySmFZbmhoV1dWVFpGUm1TR05XWlV0bVJXUkdaRXBtUldGRFlUTmpRbWhoWkZGb2JXSTVabkZqVFdScFlrWmhaR0pKWlZWaFFXRk5aMVZuVm1kNFlXUm9WV0pXWlZGakwySlVabTFsYkdRd1lrZG1TR0ZDWVVKaFpHUkdZa1ptUzJOVVltNWhWV0ZTWW1OaU1HRjRhRkptWldkSVlVSmxWMmhrWlVGaU9XZzVZbEpuZDJGR1oybG9WV1Y0WWs1bEsyaFZZVEJoWkdWelpWQmlhR0owWkZGblVXRklaVFZvTUdGSFowVm1ZMmRGYUdWbGJHSnNZVFpuVVdGVVpYQmxSR05hWWtOblZtTk1aa2hrUTJGV1kxWm1WbUpDWlRSaFdHRkxZMVJtVm1ZNVlWcGhTR0pPWm5wb1YyaHRhR05tWldkQllqRm5jR0V4WWxKbmVHWkJaVWRuVkdKUmFFcGpOV2hWWkRCaE5XUkdabGxpYldSYVlYQm1SbU5JYUVwa1QyaGpaSGhtUW1oTmFGUmxWbUpHWlVwbVJtWlZhRFZqY0dSa1lrSmhhR1YzWmxObFUyaEJZbHBtUVdkNFp6RmpOMk5pWkdwaFNtSmtaMUprTTJOb2FIUmhabU5JYUZGb1VHRmhaakZvU1dSVmFHTm9WV2haWmxSa1pXVkdZVTVrVUdKYVprZG5jR05VWlVkb1VtTk9abmRqUTJJeFlteGtWMlZDWkVkaE9XSlRZbVJsTVdKU1luVmxWR0ZIWVZKaWVHUlJZakJsUVdFMVpGWmlSV00xWVVSaVdtaG9hR1JuYm1ObVpFaGhXbVIwWkdOb1ZXRlpaWHBuU0dONFpFbG9VV1JrWmxWblNtSkZaMGRrWjJZeFpWbGpabUZwWjFWa1JHZGxZak5oY0dadFpXUmtVV1JvYUhsalVtTnRZa2xoUjJaVVlVVm1RbVJTWVVob1VtTjRZMGhuV1doSVpqQmhWV05YWVd0aFJtSXdhRlZpVldad1lrOWpaR2hTWVVaamVtTlVhRVpoUm1jMFpXTmhSbU5hYURCblJHUXlaSFJqVTJGR1praGthMlJUWWxkb2VtTkZZVUZoVVdGU1kzTm9jbVpSWTBGaWMyZFVaV0psVVdaMFpWSmtRV0ZzWkc5b2VtVkdaa2RrYjJRcloweGpNV2MxWnpob1pXVldaRlZpUzJKallsVmlhMk5WWkZSbFVtTTVaRmRtV1dGdVluUmphbWhaWWtobGNHaFFabUZoZW1aM2FGTmpWR2RJWWxabFMyRkZaMFppU21KRlkwTm1NMlJDWldGalVXRnRaVGxtYVdoYVpXMW1hMmRWWTJOa2EyWTFZVGRrVW1OQlpGRmtSV2hCWW10bFpHRnhaVVJoTTJFeFlYTmlSMk5IWkRGb1FtaGFaRVprYUdWRVpscGlTR0ZWWVZKbVkyTXdZM2hpVW1kbFowaGpRbWRYWjJSblFXSTVZbkpoVldWb1pGSm9lR1ZTWm1oblRtSnBZVlZpTUdoa1kzTm9VR1pvWW5SaVVXTlJaVWhpTldJd1pVZG5SV2haWTBOblpXaHNabkJuVDJGUlpGZG1OV0pMWTFwaVNHaHNaRXhtUm1SSWFFVmxaR05JWVZWaU1HRmFhRlpuYm1KU1kzVmxaR1Z1WkU1a2RtUlNaMjFuWTJkQlowSmxNV05zWVcxbVdHZDRaVUpqVldWU1owRmpUbVEwWWtSaVoyTnZaMjFsVFdGWFkyZGlWMkpXWkZkb1NtRmxabU5pZDJJMWFGTmhWR0pSWmxabFFXZEdhRkpvU21od2FHWm9SV0YzYURSblEyVkRaV1JpWm1kT2FGRmlPV1JyWWtKaU0yVk9hRkZrVkdOWVpXaGlOR1JTYURKa1NXaFFaRnBoYkdGS2FFRmtaV2RGWVRoallXaGpZVlpoT1doc1lscG9SMlJ3WVZSb1IyZFNaVTVoZDJWRFl6RmtiR1pYWmtWbmJtRndZVWhpV21GRlkwWm9kV0pUYUcxaVVtTTFaRkZrTUdoQlpUVmxWbUZGWnpWaVJHaGFaR2hrWkdac1ptVmlTR2hhWkhWa1VtSlZZMXBsYm1GR1ltaGlTbVpOWjJSbVZXaHZZMUZrVldWcllWRmpUR0pqWTBaaWNHTkRZMkprTW1SS2FHMW1ZV0ZTWWxKbWVXSlhaRWRqV1dOR2FGaGtNV1JvWmxKb1ZHaDRhRlppUjJKWloxTmhRbVJSWTA5bVVtVktZVFpuVEdkbllYUmpabUpaWTNoa1JtaDBZMVZoYkdWRmFITm5aV1ZXWWxsa2IySkVaekpsVFdGSFlWaGlSR0ZuWVZablNHSlJabU5pVTJkWVowaGtXbUZ4WWxSb2QyaFZaRlJoWldWQ1puQm1VR0ZXWTJob09XWTJZVVZuTW1FeFlrbG9XbU13WjA1a2IyUlZaREJvYzJKVlkyTm5VbWN3WW1SbVZHRlNhR3htVjJka1lVZGpOV1l5WW1Oa01tWTVaRWRqV21KNFoxbGpVMkZVWkVobk1HRmxaMWRoUW1GelpGaGlRbVZSWVRoaFltaFZZMWhsTVdKcFpHVm9NR1pOWVZWbFkyTnJaalZoZW1SRlkwVmplR05PWmxWaFZXVnJZMVpoVkdSdFpXeG1NR2RIWjBob1FtVkNaR1JvUm1oR1lrdGxWR2R0WjAxb1JXaGFaR3hqT1dWRmFHVmxTR0ZhWVZkaVptZEJZV05pTDJWSFkyeGhNR1ZwWjFObFIyUjNaalZrVVdWR1pqRmxhMk5rWjBWbk1HTmFabEpqTTJKcllreGxRbVJXWkZsbVlXVk1ZMmRvT0daMFkwVmliV1pCWlRGbVNtZFhZVEZrVkdkR1lrZGxNR2RDYUVobVZXaFZaa2xqVVdaSWFGSm9hbWRrWW1sbVpHWnRZbFJoTW1JMFoyWm9TR0Z0WTFwaE1XaFRZMmhvUW1oVFpsSmpRV0owWm5kalYyVnJaa3BvZG1WWlpHMWpXbWh3WjBab1NHRktaVTlsWTJWNFowSm5SV0ZIWmxKamEyVkJaVkpvYTJaQlpWZG1UbWhSYUhoaWIyRlJZMWRoYkdWU2FGRmphR1p2WnpsalYyaERZa0ppUTJoTVpXcGpiR2hyWkZSaWJtTlJabEpqWkdKV1prcGlRV2hsWVVWbVdXUldaMlZpUldWV1pHRm1ZMmRZWm14a1IyZEZZVUpvY0dJNFkwbGtWbUZzWWxkalJXVnVabkJuU0dWYVowVmtSbWQxWVZObWJXZFNZelZuVTJoNFpGSmhlR2hUWVZabFZXUkZhRk5uYm1aNFl6Qm9ZbUp1WVZwamVtaGlaREJtV21OdVlVWmxhR05LWjAxbFpHaFZaMjloV21oVFpWZGlOR1ZNWldObFJtZHdZVU5pWW1NeVpVcGliV05oWVZKa1VtTjVaVVZoTTJkdlpXTmlXbUpyWWpGbFVtZFRZVkppVm1SUFkyRm5XR2hSYUZsalkyUkZaRVptT0dkSFoxVm9VV1JsWlVwaU1XRTBaRzVvUVdKM1pWVmhhR1ZKWVVKbVRtRTJZVmhvUTJaTmFHSmhWV2RwWVZWbWNXZFdaR3BpTkdaSVpGUmpNMlZzWTNGblIyVjRZMlJrUkdOSloydGlVV2RPWkVkblZXaFpZMnBqUm1aNVpVWm5VR0pRWVZGalNXSjBZVkJqZUdVNVlsbGxZMmRSWlVGbVpHUkRaREJvZDJaWllrNW5lbVJ2WXk5alVHTkRaMFpoUjJkaVlUQm1TV05sWWxSaFEyaGtaa1JsUldSQllteGhkV0ZEWlROb1FtaGhaVkZqYldjNWFHbGlXbWh0YUd0blZXSmphR3RrTldWNlpGRm1aMkpyWmxwbVFtTkNaSFJuWW1SVVptMWxSbVpsYUVkb1NHaENaa0psWkdGR1pVWmlTMlZVWm01aFZXZFNabU5oTUdGNFpsSmlaV2hJWTBKblpXaEpaVUZuT1daMVkxUm1lR0ZTWjI1b1ZXUm9aM0JuTUdWbFpWVm5PV2RyWkdGbGJHZE5aVnBrUldNelpFRm1UR05YWjFaaldXWlRZV1ZsYTJKa1kydG1SbU5YWVRWb1ZXSmxaMWhqYkdobVlVUmtSbVZ6WVdSbFNHRlZaakJoV21oV2FHNW5VbVYxYUdSbGJtWk9ablpqVW1SdFltTmxWMmRGYUd0amVHUXhZMVptVW1KQ1pHRm1WR0ZHWkRoak5HZEZhSGhrUm1Wb1kwaGhVMmRrWXpsaVJHSklhRXBsVkdoall6Qm9VV0pGWkVKbVFXSktaVWhvWVdGbllqbGlOV2RhWlVKbGFHaHpaRmhpV0dGU1pscGlTR0pyWmpWaE5HRkZZVmRpWkdWVllWZGtTR1ZHWlRoa1ptZElZVkZvVUdoaFp6Rm9TV0pWWm1OalZXSlpaRlJpWldOR1lVNWhVR0ZhWVVkbGNHVlVaRWRoVW1oT1kzZG5RMmd4WWtWalEyVlhhR3BtVFdoVlltRmxhbVkwWW5abFYyUllZVnBrTldkV1pHaG1VbUpvWmtaaFFtRkdaRzVoUjJkV1lWcGxNR0ppYUc1aldtRjZaR0prTUdSYVltNWxSbUZvWVVwbFRXaGtZbFZvYjJGUlkxVmxhMk5SWjB4bVpXTkJZalJsUzJoS1lXcGlSbU52WlVaamJHaFdZMnBrVjJoSVpVMWlUbU5VWmtaak1XaFpabEppVkdFNWFFOW1ZV1pZWmxGaldXSmpZa1ZtUm1jd1lWVm1WV1Z3WjA5bFpHSlNaMFprZW1GVVkwWmtSbVUwWVdOb1JtUmFaVGhrVjJONVowMWlZbVpTWkRObU9HSTFZbFZsYldKb1lrUmpWR1l6Wld4a2NXUlJaM2huUVdkaFoxZG5aMmgwWjFwa1ZtTm9aVXBrTm1kU1pESmxVbWhDWW1KamEyVndZMnRtWldKVlkzTmpWV1ZqWWxKbk1HTklabFJoVldneFkxZGhZV2h1WWs1aE1tVlpaMGhsTVdGellscG5lR2RaYUZOalZHTklaMVpuUzJWRllrWm1TbVZGWWtOak0yZENabUZpVVdGdFp6bG9hV1JhWkc1bVdXSlZZbVZuYTJSWmFHNW9SV1JGWWtaa1VXUlZaMVprYjJaSVpWSmtNbWRXWTJWb1IySklhRUpqUW1oa2FFWmxSbWRMWlZSaWJtVlZaRkptWTJjd1puaGpVbWhsWTBoalFtVlhZMlJuUVdJNVkzSmhWMmhyWkVGak5XRkVaREJsUW1FeWFFeGxRV2MxYUhkaVkyUnNZVTFqUldGRlpETm9hR1ZtWVVWaVVtUTVaa0ppWkdORVoyZGtiR2hWWWtoaGFHRkxZbVZtUjJSV1lVeGtVV1ZJWkdka1pHTlJZbFZrTUdoU1pVRmlhbUozYUc1bVNtZFlaekJqVVdaQ1lqTmpZMk5IWmtWamJHWktZM0psVTJKb1pHaG1SR0ZWWm1ka2RHYzVhRmRqYUdKYVpHMW9ZV015WVRsamJHTlFaMjVrU21oUFltTmxlR0ZDWlUxa1ZHRldaMFprU21OR1oxVm9OV1J3Wm1SbFFtTm9ZbmRtVVdkWVpWSm5VbWhUWjJ0bVdXaG9hRmRvVkdadlkyWm9XR1YzWm1ObGVHVlNaVmRtV1dGUVltUmxiR05KWVdOa1NtUlJZalZuWVdaTFpURm5NR1IzWkVwb1dHaHdZMFJvUjJoUmFEbGljMkpEWTNkb01XWm1aRVZvYm1GNGFFaG1ZMkZzWmxKbU4yaFhZMWhpUm1SM1lWSm5lbVkxWTNob1NHZFNaVEZpVG1WSFlsWmhXbU13WTJKaGJtaGFabnBrWW1Vd2FGcGpibWRHWjJoaFNtSk5abVJvVldKdloxbGxRbUZuWW5oblEySkpZekZoVVdFNVpVeGhibVJPWW5kaVlXVlJaV3hoZVdWWVptNWtiMmhqYUZwaGEySXhZVkppVTJSU1kxWmlUMk5oWkZoalVXVlpaMk5tUldKR1pEQmtWV1ZWWVhCbFQyZGthRkpqUm1kNlpsUmhSbWhyWlhOb1QyUkNZamhtYm1GQloxSmpVV0ZVWTBKblIySkdhRWRoUkdWdVkyaGpSR1ZTWW0xak1XZEJZVlZuZUdKcloxUmhZMlZCWkhSaVdtUldZMmhrU21RMlkxSmxNbVJTWjBKalltZHJaWEJoYTJobFlsWmpSV05WWjBwblVtTXdaRVJuVldKQ1oyeG9TR0paWm10b1VtTXlaV05vTW1nNVpFZGpXbVI0WkZsaFUyVlVaRWhtVm1aTFkwVm1SbUZLWTBWa1EyZ3pZVUpoWVdaWVkxZGpPV1J4WW1KbGFtWXdZbFZqWm1NeFlrNWtlbVZCYUZab2NHVkZaMWhsVjJWTllWWm9WR2R0WVd4bk1HaEhZa2hqUW1aQ1oyUm1SbUpHWTB0b1ZHVnVaRlZpVW1kall6Qm5lR1ZTWldWa1NHRkNaV1ZtU1dWRlptTm5hV1pCWmxKaWIyVlBaa0prZDJka1pXZG5WV0l4WWtwa2EyZFpaR2RpWkdoU1psZG5hV0pOWmtabFNtZG9hR05sUW1SaFlrVm1aR2MwWmxoblYyWTBaR1ZvWW1oWVltdGtXR2hHWTBoaGJHZEthRlptVVdGU1pFdGlWMlJCWjNOb2RtRmFaakpoVm1kMlkxZGlTR2RyWkZkaVIyVnNZakZoYW1GVFpHaGlNV0ZUWVVWa1FXTktaVFZtVldZd1pEVm1SbU5aWm0xa1dtWndhRVppU0doS1pFOW9ZMkY0WVVKbVRXVlVZVlpuUm1SS1kwWmlWV0UxWm5Ca1pHTkNaR2hsZDJKVFoxTmhRV0phWmtGbGVHUXhaVGRrWW1OcVowcGtabVJSWkROa2FHaDBhR1psU0dSUlkxQmlZV1F4WlVsbVZXRmpaRlZqV1dKVVptVm9SbVJPWWxCbVdtWkhZM0JqVkdaSFpGSmlUbWgzWmtOak1XSnNZbGRpUW1aSFp6bGlVMlZrWXpGa1VtZDFZMVJrUjJWU1ozaGpVV2N3WjBGbU5XaFdZMFZsTldWRVlscG1hR2hrYUd4aVpXWklaMXBpZG1WalpEQm9XV1o2WVVob2VHTkpZVkZoWkdGVlprcGxSV0ZIWTJka01XVlpZMlpvYVdaVllVUmxabVF6WTBwbWJXVmtZbmRoY0dGNVkxSm9iV0pKWmtkaVZHWkZaVUpuVW1KSVpsSmxlR1ZJYUZsaVNHVXdZMVZoVjJoclprWmlNR1JWYUZWbGNHVlBaR1JoVW1kR1pIcG5WR0pHWjBaaU5HUmpaMFprV21Jd2FFUmtNbWQwWTFObVJtUklaMnRsVTJKWFpucG9SV05CYUZGaVVtSnphSEpsVVdWbll6aGxWR0ppWlZGbWRHSlNaa0ZvYkdOdmFIcGhSbUZIWkc5bUsyUk1aREZtY0dFd1ltVmhWbVJqWVVsblkyZFZabXRoVldoVVlsSmhPV0ZYWlZsaGJtSjBZbXBsV1dKSVlYQmhVR0poWW5wamQyUlRZbFJuU0dWV1pVdG1SV1pHWkVwaFJXTkRZak5qUW1WaFoxRmliV0k1WTJsbFdtVnRaR3RoVldKalptdG1OV0UzWTFKblFXWlJaMFZsUVdGclptUm9jV2RFWXpOb2JHZHJhRWRvUjJZeFpVSmhXbUpHWm1oaFJHaGFZVWhtVldkU2FHTmlNR0Y0WVZKbVpXaElZMEprVjJKa1prRm9PV1p5WmxWb2FHZFNaWGhoVW1Wb1lVNWhhV0ZWWnpCa1pHRnpZMUJuYUdoMFkxRmtVV0ZJWVRWaU1HSkhZa1ZoU1dKTFptVmpiR0p3YUd0alUyWlVabTlsUTJaTVpsTmpjR2hHWVdGaGVtTkJaa3BsUW1oVlpUQmpSbUpUWTI1aVVXRTJhR1pvTTJoTlpIcGtVbU50WWpsbVEyRlhabWRpVldkdFpWSmtSMkU0WWxSalZtSjRaR3hvZDJOU2FFWmxlR0oyWTJGb2JtVmtZUzluUm1OSVl6bGpUMkpLWjNobmJHaEdabEpoUm1ZeFkycGlSbUpWWlRWaGNHRmtZa0puYUdGM1kxRmlXR2RTWVZKblUyRnJaelZqTVdORlpsaG5UbU5OWlZWa1dHUm9abmRtV0docFlrSm1TR0pKWldkalJXTmhaMFJsWjJoallrRm9ZV1JzWms1alUyWlVaRzFsY0dKVWFFZG9VbWhPYUhkbVEySXhhR3huVjJGRlkyNWpjR05JWlZwaFJXRkdaWFZtVTJSdFpsSmxOV1JUWm5ob1VtTjRaME5pZDJOb1pWbGxRMmRyWlU1a01HWmhaRWhpV21FM1oxcG9lR1JKWW5aa1dHWXdZMFpoUTJoRFpXZGljMkpFWlZGb1JXVlJhRmhuWW1WR2FHOWhWMk5hYUcxa1NXUTJaV0ZqVW1KM1kyMW5RbVpxYUhCbFJHTlJaMnBvU1dWUloxZGtRV0ZPWms5blpHSXlaRzlrV1dWbFpFWmhRbVpwYUZWa1ZXTmtZMDltU1dKU1kyaGlObWhTWjFabGFHTXdaMWRpYkdWYVp6QmlSR1l5WlhSaVUyZEdhRWhtUm1oSFpFVmhNMkZvWlZSb1ZHSXlZbEpvY1dKVmFIaGhhMmRVWVdObVFXSk5aazVsU0dkc1puTmpjR1pUWkZKaGMyZEJZbVpsTVdkNFltdGhXbU5IWVVWaFZXZGphRkppTUdOa1pWUm1VbUZzWVZkalpHTkhZVFZpTW1KallUSmpPV1pIYUZwbGVHSlpaVk5pVkdOSVlsWmlTMlJGWkVWbVVtSlNaRWhuYldkT1lWQmlVV0Z0Wm14aGFXRmlabTFtUm1KQllrOW9aMmhqWjJkb1NHSnFaMDFvVFdKUlpVWmlPR05XWlZWbmJtTldaREJoVkdOSVlXeGhRbWhMWVVabVJtVkRaMGRrYW1neFpGbGtTV2hGWmtsbWRXWlBabGRrUW1OSGFHUmxRbVZHWkRGbFZXWm9hSGhpWjJWVllrSmtUbVF4YUZWbWVHSjBhSFJvV1djeFoyOW5VV1pJWWpGa2IyTk1aVmRvVm1SWlpWTmhaV1JyWjJSaGEyVlJZVmRpTldGTFkxcGlTR05zYUV4bVJtUklaMFZoWkdSSVlsVm5NR1pTWmtGamFtTjNZVzVvU21aWWFEQmpVV2hDWXpOb1kyRkhaRVZvYkdWR1lqRm5VV0pyYUZGaVlXSkVhRlpvYUdRcmFFcG9VV2hPWVM5aVkyaHRhRnBsTVdSRFpVaGhTV1poWW1WbWFHaENaa3RuVkdOVloyUmtZMk5CWmtaa01XWTRabVpoVW1aR1pUaGpZV2d6WlZKb1VtVlRZbXRrTldNeFlrVm9XR05PWTAxbVZXUllZbWhqZDJSV2FHNW5VV05RWms5b1ZtZEthRWxsVEdGVllsbGtZbVpNYUVKaGMyRkhaazVuTW1WUlpITm9WMmRCYUdSb2IySkRZakZvT1dKTVlrVm5iV040YUZObFkyRldhRXBpTjJWUlpESmhhR0pVYUZOaGVHRlNhSGhpU0dGU2FERm1UbUZIWmxabVdtUXdZMkpuYm1OYVlYcG9ZbU13WWxsbWVtTllZV3hrYzJkbVkxaGtNR1Z2WWxGaFZXRnJZVkZuVEdoalpVWmljR1ZEYUdKak1tWkthRzFpWVdoU1pURmpjR2RhWWtoaFRXTlJhRlJpUldNeFpsSmhVMlZTWjFab1QyaGhZVmhrVW1oR2FHVmpWV2N4WkdWb1ZXTlZhSEJqVDJSa1pWSmxSbU42WWxSa1JtWkdhRFJqWTJkR1pEUmhPR0ZCWVZSa2MyUkJabGRsZVdkVlpFcGhVbWg1WkVWaVJHRkRZbTFpYjJNMFlVaGxSV1V4WWxOb1NtaEZaalJsTVdKRll6RmlVV04xWjFKb00yWnNZMEpqU21acloxRmlNR2RMWkhkalVtVkJabEJvYTJOc2FFVm5TR05XWTNob1dXRktaR2xqUldScFpGQm5NbWc1WjJKbldtY3haMEptU0dWQlptcGtXV1JsWTFkalVtTXdhRXRsUTJRelltZGhUMlZUWnpKa09HSTFZbFJpUjJGclpGVmhZMk5yWWpWa2VtaEZZMFZoZUdST1lsVmhWV1pyYUZaaFZHaHBZMEZpZVdKSFlVaGphR0pLWm1abVFXTldZa3RuVTJZeVkyZGhVbWhhWVZaamFHTlpZV1JtU0doQ1prZGxaR1pDWVVwaE1tWlZhR3RqUW1VMGFGUmplR1ZOWW5GbVJtVm9aSE5uZUdOUFkwSmxNR1JhWkZKbmVtRm9hRU5pUTJWcll6QmhOR2hsWW10blpHZHJZMUZsVjJFMVlVdG5XbUZJWTJ4blRHZEdZVWhoUldSa1lsWm5RV1Z6WTFwbFdHaHBaVUpuZFdKaFowZG1OV2QyWWxaa1dHSlZaV1pqUldOb1oyUm1abU5UWjJoblFtaFRaVkpuUVdWMFpYZG1WMkZyWlVwbmRtaFpabTFqV21kd1lrWm1TR0pKWkZsa1RXVnJZVXBrVFdkSVpqRmxSbVZWYUVab1VtVnZaV2hoVUdkVllYUm5LMk5RWTJwalZtRkNaRmRvYkdWV1pHWm1SV1pZYUU1alRXWlZZVmhrYUdOM1oxWm5ibWhSWjFCbFlXSXhZa2xpVldWallWVm5XbVZoYUZCbWJHVk9ZVWhsVkdWdGFIQmxWR2RIWWxKblRtTjNaa05qTVdKc1psZG5SV2R1WTNCbFNHaGFaVVZtUm1KMVkxTmtiV2RTWkhoblVXSXdaVUZpTldWV1kwVmhOV2RFWjFwaWFHVmtZV3RvWm1SdWFGcGpkV1ppWm5obFNXTjJZbGhuTUdGR1prTmlRMlpuWTNOaVJHTlJZa1ZrTUdSSVpWZGpiR1p3WkVOblltSXlZa3BsYldaaFkxSmxVbUY1WkZSamJtUk5aMUZtVkdSRlpERm9VbWhUWkZKbVZtZEhZbEJsVkdGNFlWSmlTV2d3YURobVRHRkZaRVpuYkdoalpXUm5VV1I0WVhwaVNHUnNZMmhrTUdkWGFHeGxXbUV3WVVSbU1tZDBZMU5uUm1GSVpFWm5SMmhGWWpOa2FHWlVaMVJoTW1KU1pIRmxWV040YUd0bFltWkpaR2RvZEdGRlkxWm5hMlpaWlhsb1JHVnFZMlJqVUdORlpWRm5kR2gzWjFsaFZXTkpZVmxqVjJWNFpUQm1aR0pVWmxKbmJHRlhabVJoUjJRMWFESmpZMkV5WkRsbFIyZGFZbmhoV1daVFkxUm1TR05XYUVOaVVtaENaMjlrVG1kWFkwaGpOR1ZzWmtGaE0yRjBaalpqV21adVpsRm5WV1pLWW1kaFdXRTJZVkZtTUdOSmFIbG1SV1pHWldkaVJHSlNZakpqVm1abFkwZG5TR1ZDWTBKb1pHaEdaVVpoUzJoVVlXNW1WV1pTWm1OaU1HVjRaRkpsWldaSVkwSmpWMlZrWkVGa1kyVXZaRWRtYkdVd2FHbGtVMlpIWW5kbU5XWlJaV3htYkdSclpXUmhNV1pPWkV4bVIyWnVabmRoYUdWWFlsWm1XV2hUWm1WbGEyZGtZV3RoVVdaWFlqVmtTMkZhWlVoaWJHaE1Za1psU0dWRlltUmtTR05XWWpSaFRHTldhRzFrYkdoNlltUmxhV05rWkcxaFltVkhaR05sVjJGRlptdG9lR2d4WjFObWFHTkNaMU5qVW1KQmFIUm9kMkZYWW10aFNtSjJZV0ZsTUdKNFkzQmxSbVJJWWtwaVQyRmpaSGhrUW1STmFGUmtWbUpHYUVwb1JtWlZaRFZoY0daa1pFSmphR0YzWTBWbWVtTkZaMFpvU0dKNFkzZGxOMlJGWWxOa1kyUkZaa2RoUTJaMFpYSm9abWRJWmxGalVHVmhZekZrU1dkVlkyTmhWV2haWTFSblpXWkdZazVtVUdaYVprZGxjR1pVYUZSblVtWk9ZemxsUm1Oc1oyeGtSbUZCWjBkbVJtTjBZMXBvUldaR1lYVmhVMmh0WlZKaE5XSlRZbmhoVW1oNFkwaG5VbWd4Wms1b1VtSklhSGhqTUdWaVlXNWpXbWQ2WVdKak1HZGFZMjVpUm1Gb1lVcGtUV0prWjFWaGNHaEhaa1ZtZUdoWlpFeG1UMkpXYUhCalptRmlaREpuYjJKNVlVbGpWbUl3YUdoaVVXaEJZM2huVW1oWFlVWmxWbWRTWjFaa1VXTnNZMDlqWldkSFpFbG1VbWhqWVVKbE1XSXdhRUpvVVdOSmFFaGhTbVZvWnpoalRXTkVaVlZrU21WeFlXWm9TR2g0WnpCaVJHVXlaSFJrVTJKR1praGtSbVpIWWtWa00yWm9aMVJqVkdjeVlsSmljV2hWYURGaGQyVlVabUpoVVdkMFpGSmhRV1ZzWVc5aGVtTkdaVWRtYjJZcloweG1NV0YwYUhsalpXRldZV05pU1dOalpWRmpkMlJNWTFKa1FtSnJZa3RpWkdGRVpXOWpLMmRQWldwamVHaEpaVWRqUm1kamFFTmlXR1pJWld4aVoyaEZhRVppU21oRlowTmlNMlJDWW1GalVXSnRZemxtYVdKYVltMWlhMmhWWVdObGEyYzBaRGhtUldGR2FFWm1UbU5YYUZGblFXUldZbFZqYm1KV1pqQmxWR1ZJWld4aFFtWkxZMFpvUm1GRFlrTmtNMlZWWmxCbVltRldaa3BvVW1SalprZG1UbUpGWVdSa1FXRkthSEptUW1Wb1pqRm9OR1JUWVdwa2JHWTBZMVZsTUdVNVpHdGlZV1pzWWsxaldtTkZaRE5rUVdKTVpsZG9WbWRaWVZOalpXRm5aVGxsYTJaWVlVZGlOV1ZEWVVsaVdHWnNZVmhqUTJGSVkwWmhTbWRHWjBWak1XaEdaVlpsYm1aM1ptNW5aR0p0WlRGb2VHTlhaVWRsWTJGbFprRmxWbVkxWmpGblVtUjRZMEZuUjJKVVlWRmtTbVJ5WkdOb1JXZEtZWFpvV1dOdGFGcG9jR0pHWkVoalNtZFBZbU5pZUdKQ1prMWpWR0pSWTAxaFRXUlJhRkpoYzJZM1prOWthR2hvWkRSaFlXVXphRkptVW1kVFpHdGlOV2d4WjBWb1dHSk9aRTFuVldSWWFHaGlkMmhXWTI1a1VXTlFabGxsZDJKYVlXTm9UMkpDWWxWalpHRkNaWGhoU21abWFHUmlSMlJ3WTA5alIyRlJhRlpuYkdaSVoydGhjR1pFWmtWamJtRjRaRWhsVEdWRlltaG5hV1ZaWkVka1VtVTFaVk5rZUdkU2FIaGlTR1ZTWVRGblRtRkhhRlprV21Vd1ltSm1ibU5hWlhwbldtWjRZVWxpZG1OWVl6Qm5SbU5EWWtObFoyTnphRUpvVW1ORlpWRmlWMmhqWlVKb1NtTkRaR05qV0dWNFl6Um5ZV0ZSWlZaa2EyZFNaRE5tT0dVMllsUmtSV0V4WTFKbVUyUlNhRlpvVDJWaFlWaGxVV1ZaWkdOaFJXZEdaekJtVldKVlluQm1SMkZKWkZaaGEyTTJhRWhuTVdRNFkwaG9UV0ZWWVZaaGJXaEVaRE5qV21kVFpFRm1iV1JTWlZSb1FXaEhaekZuVkdaVFpGZG5VV2RzWmxkbWFHSlZZalZqWTJGQlkzUmhXbUpXYUdoblNtVTJhRkpvTW1KU1owSmlZbVZyWm5Cb2EyaGxaVlZsYzJoalpVcG1WbWRXYUZWb1NHUm9ZMk5tY0dOT1pWaG1jR2gxWTJOaU0yRktZa2RsUzJoQ1pWbGlUV1JWWjIxaWRHWkxaVUZuVldoU2FFNW5RbWd4WVhCbVlXaFJaRzFrT1dKcFpWcGliV2hyWmxWbVkyWnJaRFZvZW1kRlpFVmllR0pPWkZWalVtVXhZbVJtUW1kNlpYQmhaV1JIWTBoa1FtWkNaV1JpUm1OR1kwdGlWR2R1WVZWa1VtVmpZekJoZUdSU1ltTm9WMmQwYURoaFpHTkJZemxrY21kVloyaGpVbUY0WjFKb2FHZE9ZelJrVldKNFlrcGpkR2hhWjI1bmEyRmFZa1ZqTTJaQllreGpWMmhXWTFsbFUyTmxhR3RqWkdSclpGTm5VMk5hWWtWa1RtUkRaM05pUldSUlpFUm9OV1ZLWmxKalFtSXhhR05sVjJORGFGbG5hR05KWVdwblNXZzNaVUZsZUdaV1lXWmlWbWhSWmxGbmFHTlRaV2RrTVdKVFkwUm5RV05WWjJkblEyUkJaekJvTjJOTVkxUm5TV2gzWlZKbVJHWmtaa0ZvU1dKV2FEaGlXV1ZJWVRGaFJtVlZaRVpsVVdSblpEaGlUMlZzWjNOaGEyRkRZVVJpYzJWbWFGTm5hMlpaWW1oa1IyZElZazFsV0dabFlUTmthR0YzWVZabGJtZFJhRkJtWVdNeFlVbG5WV0ZqWWxWbldXZFVaV1ZrUW1OdlprcGlXbVZIWTBwalltZEZhRlZqWkdSM1lVUm5hMmhTWWxkaFFtRkhaVFZqVDJKaFowVmhSbVlyWjFOa2JtaHNaMnRtVTJnd1owSmlOR1JHWmtKaU1HZG1aMWhtUVdOSloyaGtVR0ZFWW1oaGVtTlBaWGRoTkdKMVkxSmpVV1ZzWjIxbFpHUlZaMjloVVdaVloydGpVV2RNWm1ObVJtZHdZVU5sWW1ZeVpFcGpiV05KWTBablNtRjVaMUprYVdoalpGRmpWV1pzWWtKb1VtZFhZV2RtWkdWSWFHRmtVMlU0WTNsbFkyUkZaVVpqTUdaVllsVmhjR2hQWm1SbVVtZEdaM3BrVkdOR2FFWm5OR0pqYUVabVdXTnBaRlJvYW1Sc1lWTmpVbVJ1WlVabVltUkZabmxoZDJOaVlrSm9hbUZrWW10a1RHZEdaMmRtUkdGWlprSmxRbVI2WlZabmFHUktZalppVW1neWFGSm1RbVJpWVd0b2NHaHJabVZoVldOelkxVmpZMlZTWnpGaFZXWkRaSGhuYkdWbFlWaGliV1ExWVRKblkyWXlaRGxrUjJaYWFIaGhXV2RUWmxSaFNHRldZVXRrUldSR1kwcGpSV05EWmpOblFtUlRZVk5tYW1KemFIRmpUR2Q2WVc5b1lXRkVaVkZrT1dWcVpFRm9SV040WmxGblZXTlNaekZvWkdGQ1lucGtjR1EyWVZwamVtaEdaVk5vV21Gc1ltaGtSMk5hWVVobVZXRlNabU5vTUdkNFpGSmtaV2RJWTBKbVYySmtZVUZtT1dWeWFGVm5hR1pTWlhobVVtVm9aVTVvZDJSQ1lYZGpZMlIwWWs5aVZtVXhZVzFvVldGdFowMW9XbWhYWWxWamMyWlRhRXRqUldjMVltOW5ZV1l5WXpWblMyZGFaa2hoYkdGTWFFWm9TR0ZGWTJSbVNHUlZZVEJrV21SV1lXNW1VbVoxYUdSb2JtWk9ZVzVrUm1oSFptTmtUR0ZGWm1oaVoySTVaRUZuTUdoT1lXTmpUMk13WlhCbGEyWlJabXRoZEdkcVlsTmtSMkphWTNCblJtWklaMHBrVDJkamFIaG1RbVJOWWxSbVZtTkdaa3BuUm1oVllqVmpjR05rWjBKbmFHUTBZa1pvVkdGM1pGbGpSMmhWWlVGalMyRlZaRWRvWkdoVlpWVm9WMmhXYUhka1FXUnFZM2hrUjJSUFpVWmhlR0p5WlUxbFJtRmpaMFppWTJKV1l6bGxiR1phYUVkbGNHZFVaVWRoVW1KT1lYZG5RMkl4WjJ4bVYyTkZhRzVqY0dKSVpscG5SV05HWkhWblUyWnRZbmRoZEdOQllURm1NR2hwYUVWaU1tRkpZVTFoUTJKRlprSm1NR2RqWkROb1dXVm9hRnBuYTJKd1prNWtSbUpvYUVwalRXVmtZVlZvYjJOUlpWVm1hMkpSYUV4alkyaEdaM0JoUTJOaVlUSm5TbU50YUdGaVVXRmtZMmRsVkdWdFpUUm9UbWhVWjBKaGJHWlpaVmxpZUdOV1lrOW5ZV1pZWlZGbFdXSmpZMFZqUm1jd1lWVmtWV1J3WWs5b1pHRlNZVVpuZW1oU1oxaG9kR1EwWTJOaVJtaGFZakJpUkdVeVpIUm5VMk5HWjBob1JtWkhZMFZtTTJob1lsUmxWR1F5WWxKbWNXWkJhRlpuZUdSSVowcGlWbVpyWlZoblZtZHJZMWxqZVdKRVoycGpaR1ZoWjFKbFJXWndaMnRtWldOVlluTmpWV2hqWkZKak1HRmtaRlJoVW1Oc1psZG1aR2RIYURWak1taEtaekppT1doTVkyVmlhR0ZaWTBKaFdHaHRaRFZqWjJkRmFFWm5TbVZGWkVOb00yVkNhR0ZqVVdGdFlqbGhhV0ZhYUcxb2EyTlZZa3hrTW1aU2FIcGpSV1pGWm5ob1RtRlZabFZtYTJGV1pWUmxiV1pzWXpCbVIyWklaRUZvV0dWT1kxRmtUbUZMWVVKbU0yUlZZMDFoWTJZd2FGRmhSbWROYUVSb2EyRkdaV1ZvYm1SQmFIRmpVbWRuWjNobWVHRlhZMmRoT1dVMFkxRm1iR05zWkhSb1lXWm5aRGhpV21SU1ozcG1hR1pEWkVOaGJHaG9ZWFJoVDJReFpsSmxNbVpVWkZWa1VtSkxabHBtU0doc1kweGtSbU5JWjBWaVpHSklZVlZqTUdoYVlWWm5ibU5TWTNWblpHaHFabHBrZG1KWFlqSm5ZMmhsYUZKbFoyVlJhRGhqUjJGU1lUUm9kR2hDWkZKb2NHUnRZMWRrYkdJMVpYcGxXV1Z1WTJSakwyZElaVmhpU1dKVFlXTmlNR1JSWmtWalFtVkJZVXBpU0dGaFlXZGxPV1ExWTFwa1FtZFNabUZuVVdaWWFGSm9VbUZUWVd0bU5XRXhhRVZoV0daT1kwMWhWV0ZZWjJobWQySldaRzVvVW1GQlptRmhNR1E0WlZWalpXVlJaVGhvVkdoYVltdG9NV1ZTWlZwalJHVTFaR0ZqUjJSVllqbG5kMlJCWW5oaGVHSlhaRVJuYldkYVpFaGhZbVZHYUVwaU9HSlRhRzFqYkdVMVpVaGxlR1V4WmpSbFJXZFVZbVJqVG1KSFlsWm5XbVl3WjJKb2JtTmFaWHBtWW1jd1lWcGlibVZHWjJobVNtRk5ZbVJrVVdWSllWRm5WR1l3WkZGa1JHaE9hRlpqY0dSalltTmlXR2g0WkcxbFVHSlNZakZoZVdaRloyNWpUV1JaWWtKalZXUXhZMDVvVm1aU1kxWm1SMkZsWlcxbldXaFpaR1ppVldKRllXZGhWMlZGWTA1bVZtZFlaM2hsUm1GNllsUm1SbVpHWlRSbFkyaEdaRnBtTUdKRVlqSm9kR1pUWlVab1EyWk5aVVJsVW1ONVlUQmpRbVpCWmxkblVtaHBZbVZrVW1OclpGUm9ZMkZCWjNSbFdtTldaV2hsU21NMmFGSmtNbVZTYUVKaVltTnJaM0JrYTJKallWSm5PV0pqWWs5blJXUTBZMVJqVFdOc1pHaG5SMlZhWkVkb05XZHlabU5tTTJkc1pWUmpZMmhuYUZWb1NHZFVaa2hsVG1GTFkxZGlSbUowWlVsalNXTllaMEppWVdWUlpXMW1PV1pwWmxwbGJXTnJZVlZoWTJkcmFEVmllbU5GYUVWamVHSk9hRmRqVW1neFptUm9RbVo2WjNCbE5tRmFZbnBqUm1aUlpWbGliR0pHWlZobFZHaHFZekJqVW1KaVpGWm1TbWhRWTJWb1IyZEdaa0ZtWm1OUllVNW1RbVZWWldoaVVtUjRZVkptYUdST1l6UmpWV013WXpsa2EyWmhaMnhrVFdWYVprVmxNMkpCWTBSa1JHWlNaelZoWW1STFlWVmphMlZpWTBGbFNHUXhaRmxtV21KSGFGSm5UR2RCWjIxb1VXZEpaa1JpYkdGbmFGcG9WV0ZJYUZGa2FHUm1aak5pT1dkR1oxSm1iV1ZqYUZkblJXaHJaSGhuTVdKVFlXaGlRbVJUWTFKbFFXUjBabmRoVjJWclpFcGlibU5PWW1sak5HaG5aRkppTTJKM1puaG5UV0puWjFKaFZXaFVaVlZrZUdoS1lsZG1hMlUxWXpOaVlXRm5ZMXBpZDJKVmFFZGtTbVZaWVZKaGJXaFNaVEZpUldOWVlrNWlUV1pWWkZob2FHSjNabFptYm1GUllWQmxZV1l4WWtsbFZXVmpZVkppU21kaVpVMW9VV1ZDWkd4b1dtUkhaWEJoVkdaSFpsSm5UbVYzWTBOaU1XaHNhRmRuUldGdWFIQm5TR2hpYUZabmNHSkZhRk5pYldkU1p6VmtVMlo0WWxKa2VHWklaRkpuTVdGT2FFZG5VV1YwWWpsb1dXRnNZWGhsZW1oaVl6Qm1XbVZ1YUVabWFHSktaRTFuWkdKVlltOWtVV0ZYWTJkbWQyUkdhRWxtUVdGblpFNW5UMk41WmpCa2VXVk5ZVVZvVVdjelpGRm9SR0pDWTJObVFXTjNZMDFrVldGVFlsRmphR0ZQWWt4a2VXSkdaVmRrVFdaNGFGVm9PV2hJWldkblVtTlBaV1psVW1Kb1lucGlSbVF6WjNSaE5HUmphRVpoV21Vd1kwUmhNbWgwWmxObVJtUklhRVpuUjJORlpqTmhaMkpDWkVOb2FtVkJhQzlvUVdOV1pHTmhWR1ZRWTJ0aE5HTlBaMVpoYkdad1pYbGtSV2Q1WW5kb1NXaFFhRlZsVVdKaVpFOWhSbUp6WVVWa1ptWlNaekZoU21oQ1oxWmxRV0ZHWW1Wa2FHZEZaek5sV1dOdVkyeGtTMk5hWVRCa1NtTmhZVUpvVTJSYVprVmtZbWg0Wms1bldHSkhZVmhrZUdKaFprWm1hV0ZqYUhKaFRtZFhZMlJrY21OTmFERmljR055WWtkaVZtUmtZMjVsVldkVmFHdG5WbWRVYUcxamJHSXdaRWRtU0dGQ1pFSmhaR05CWW5obVJHRlJaR3hoT0dWU1pHTm1NR2g0WlZKb1pXVklaa0prVjJWa1prRmtPV1J5WmxkbWJHSXhaSGhuVjJKNFlrMWtSR1JNWjJ0bFdtaHZabEZvUm1aTlpWcG5SV016WkVGalRHaFhZVlppV1dWVFlXVmxhMkZrWlhOb1FtZEhaRFZrV0dKYVprUm9PR2RsYUZkbGFtaEtaVXBvVm1kQllVcG1XR2RXWlc1bmVHaHVaR1JtYVdSb1prWmlVbVZ0WldObFYySkZabXRqZUdneFpWTm1hR0pDWmxObVVtVkJablJrZDJORFpFRm5ZMmczWTA1bmVtaFJhRzVvUm1oRVluQmlWbVZYWlZKaFFtaE5ZVlJuVm1SR1pFcGhSbUpWWWpWaWNHaGtZa0poWjJOMGFGUm1lbVpWWlVKbFIyUm5aVWxuYzJSSFlsTmtSbUpCWjFWblZHZEdaelZsV0dnelltZGxiR0poWmpGalNXaFZabU5oVldkWlpWUmpaV1JHWms1alVHRmFZa2RuZEdoaVpWUmpNV1ozYURWbVZHZ3hhR3hpUjJSRlltNWhkR2RoWm1WaVZXZEZZbkptVTJadFpVcGtMMkpUWjNoaWQyRnNhRVZoTVdWbllWWm1VMkZTYUd0b2JXUlBZbWxoVm1SNmFHTmlhMk5aWW1sbVNHUjRhSFJtV0dOWWFEQmpiMlJSWWxWbmEyWlJaa3hvWTJoQlpXUmtUR2hhWTNwa1dXVjFaMGxsUldSa1lqZG9WbUZXWTJ0aVVXTlVhRVZpTVdkU1kwWmhRbUZzWm10aVlXaFlabEZsV1doalpVRmlZMkpvYUVoa2QyWnJZMkZpVUdWR2FEUmhPV1JVWmtaamEyZHpZV1puUm1KWmFHMWpRV2N5WjNOa1ltUklZVmhqUldWa1prOW1XR0ZvWVZSbFZHTXlZVkpsY1daVlpuaGlSbVZXYUVwaFZXVlZaR0ZuUVdOc1lYTmhNV1ZEWTFkbFVtRktaVkJuUldOT1pHdGtTV0Z0YUVWbVZXVmpZbEpqTUdSa1pWUmlVbUpzWWxkaVpHSkRaV2RoYW1aUVlsTmxkMkZUWkV4bmJHZHNZMk5rVkdaRVkwSmxRMmRTWVVabGRHWkZaVlZuUm1ad1oyRmpVV2R0WmpsbGFXVmFabTFsYTJGVlkyTmhhMk0xYUhwbVZtUm5aazFrWm1WVlkxVmlSbVJFWTBSaGVtRjBaREJrVTJOdWFFSmlZMkZrWlVOamIyUXpZMUZqYm1kV1lsbGhZMlF4WjBabFVtRmhhRWhsZUdWWFpVMWtVV0k1WXpKb1ZXUnJZa0pqTDJWRFpteGxXV0l5YUVaa1FtTnpaM05tWTJoV1prNW9ZMkZGWVRKbk5HVk1aa1ZuUldNd2FGTm1UV1F3WlhoamRtRlRaMGRsTkdSU1pGUmpibVpzWjB4b1JtaElaa1ZvWkdKSVpGVm9NR1phYUZabmJtTlNaSFZoWkdKcFkxVm5kV1pHWWtka1pHZGFZMFZpYkdWR2FERmtTR05vWlRSaFVtaEVZVVZrYjJGcFkwOWhVV0V3WjNKalNtUjNZV05tT1dKSVpFUmpkR2RJWVdGb1JHSndaMDFpVkdSV1kwWmtTbVpHWVZWak5XRndaV1JrUW1Sb2FIZG1VV0ZZWTFKa1FXUlhZMFpoV21JeFprUmpNMlJOWWtSaFpXSXpZMmhoZDJoV1ptNWxVV05RWjJGaU1XSkpZMVZuWTJWVlkxbGlWR05sWmtablRtRlFaV1ZqTW1odlpVSmxSbWN3WkUxa2JHaFhZa0pvUm1ObFpsaG1XR0ZPYUhSbVdtUkZZMFpoZFdOVFpXMWxVbVExYUZObmVHZFNabmhpU0dSU1pERm1UbUpIYUZaaFdtSjFaR0poYldOU1kycGxaV0V4WXpWaWJtRkRaRUptU1daRVpWaG1NR0Z2WTFGb1ZXWnJaMUZpVEdoamFFWm5jR0pEWVdKbU1tWkthRzFoWVdSU1pGSmllV1JWWTFoa1RtaERZVkZpYUdVd1pVVm5SMk5zWnpGbFIySmxhRWRrTUdWTGFHTmtRbVV4WVRCbVYyUlJabFpvVDJWaGFIZGpPV2Q2YUZkbGJHSm9aREJrWTJWRllXUmtiV2hHWVRKbWMyVlBaMFpvU0dKc1psRmlRV05JWkdoa1ZtTlVaWGxqZEdOcVpGZGxhbVpOWmxSb1kyUkJaWFJpV21KV1pHaG5TbWcyWmxKak1tUlNaa0ptWW1KclpYQmthMmhsYUZabVJXTlZhRnBpUVdWbmFGQm9WbUpCWWpsbFYyWmhhRzFtTkdnMVltTm9lbVZOWldGbFdtUXhZV3RoVTJKVlpXMWphR05MWVVKbFZXWldZbGhuU0dJeVkxSm1kMk5SWm0xaU9XTnBaRnBtYldkclpWVmxZMlJyWkRWa2VtRkZZMFZrZUdoT1lsVmhWV1pyWTB0aFZHaHFZM1JqTm1KVFlrTmlWV1ZUWTFCa1JtRnNZMWxuV0doSFlrVm1VbVpNWXpCb2VHaGFZVTVuTTJOQ1kwbGlZV2RuWlRsaU5tVlJZVUpuTVdRNVpGSmpaMlJLWkhGbFUyUXdaemhrTkdOaFoyeGtjMlpTWmxobFNHWkJZbFptVW1JeFpWbGtSV0ZqWkRCbVpHUnBZbEZuV0dOb1lWcG1ZbWRZWmxab1RHSkNhRmRvVFdOR2FFaGpVbVJGWVZwbVdHSnRZa3BoT1dKa1pHNWxWbVYyWjBObFYyZzBZMlpvVDJaRlozaGpNV1ZUWjJoalFtSlRaMUprUVdkMFlYZGpWMlZyWlVwbWRtTlpZMjFpV21kd1lrUm1ibU5LWjBkblQyVm9aSFJqU0dSUlkxaGlkR1ZLWkVabFZXWTFabkJuWkdSQ1ptaGpkMmhSWVZoaVVtRlNZMU5sYTJFMVl6Rm9SV05ZWVU1aVRXUlhhRlJsWkdKM1lWTmpNMlZSWlZwalptaHJhR05rU0doYVlqQm5XV1paWTJWaFJtSjBZMGhpWW1kSVpIUm1SR1ZEWTNkalFtSjNaRVJtVm1kcllWcGhSMmd6Wm5CblltZGxaRVZtUm1JdmFGZGhiV1V4WXpWa1JtVjRaMUpvTldORVlrRmlNV1JtWWtObWJHUmFZM2xpWW1KcFkwcGlPV1ZNWlVGbk5HZHRZVkpoU0dORlprUmlUV1ZSWkRsbGVHVkNaV3RoZUdWRFlXVmhWbVZPWlV4b1dtRnRhRFZtVFdWaFlsSmpVbVo1WTFSamJtTk5aRkZpVkdKRlpURm5VbUZUWlZKbVZtUlBZbUZqV0daUlpGbG5ZMlZDWWs1b05tTkJabEpsT0dWa2FGQmtVbUpzWlZwaFZHZEdZVVptTkdKalowWmpXbWN3WTBSbE1tVjBhRk5pUm1aSVowWmpSMmRGWVRObGFHZFVZbFJpTW1kU1luRmxVV2hSWlRCb1JHaGpZa1prWkdoYVoxaG1iR2d4WkRaalYyRllaM0JrUW1ObVl6RmlTbVYwWTJSaVYyTkZZbFZoWTJaU2FEQm9aR05VWmxKamJHZFhhR1JqUjJZMVlUSm9ZMll5WkRsaFIyZGFabmhrV1dGVFpGUmhTR1JXWldKbFFXZHJabkJqUldoV1lUTm9RbUpUWWxOaWFXVkNaV2xqWldKSVlXTm5WV2RaWkRGamVHUTJZVVZrUldWd1lrNWhVbWN4Wlc5aFkyVlJaV3RsVG1Vd1prZG9TR0ZDWWtKa1pHVkdZMFptUzJaVVoyNW9WV2hTWTJObE1HaDRaMUpoWldoSVowSmxWMlZrWlVGaU9XSTJZMUZqUVdaNFpuaGtSMlZvWkU1b2QyTlhZbmRoUW1GclpHUmlSV2d3WWxwb1FtTllhR3RpVEdKWVpqRmtXV0ZGWldGb1ZXYzFabTluWVdneWFEVm5TMmhhWVVob2JHWk1aRVpoU0dSRlptUmlTR2hWWnpCa1dtSldhRzVvVW1KMVoyUm5ibWRPYUhabFVtVnVZMWxqUldGRFpHdGlkMlp3WjFOaGFHSm9aMFZoVm1KM1pYUmhNbVZYWW1kbk1XWnRZbE5tUjJKYVkzQmlSbWhJWmtwalQyVmpZM2hvUW1KTllsUmpWbVpHWjBwblJtaFZaRFZqY0doa1pFSmxhR1kxWmxOblIyTTVaemRuVTJGcmFEVm5NV0pGWmxob1RtaE5aMVZtV0dGb2FIZG5WbUpwWVd0amJHWmhaREZvU1daVmFHTmxWV2RaWmxSalpXUkdaMDVuVUdaYVprUmpaMlpYWkZSaVZXZFpaR2xqVW1kV1ptdGpXV2hXWjNsaU1XVklaVVZsVVdKblpXZG9TR051WlhkaVdXVkhhRlZuV1daM1lWSm1RbU5WWkdab1JXaEZaekZvWldoaVoyNW1XbVI2WW1Ka01HTmFZVzVtUm1Gb1owbGtVbVZZWkRCa2IyUlJZVlZtYTJKUloweG9ZMmhHWm5CbFEyRkxhRlJuWTJkdllrdGlhMlpCWVRkbVFXTlVZVEJoVVdkQlpEQmxWbU5aWTFOa1ZXSTFabXRsWVdKWVlWRmlXV2RqWWtWaVJtY3daVlZtVldOd2FFOWxaR1pWWmsxaU1tWkhaVUZpVVdKeFpsQmtiR1JhWkcxbFJHRXpZMXBtVUdoR1pVUmxRV1JWWlZab1EyZ3dZbVZpUTJacFpXOW5LMmhCWlVKbFpHUm1aazVsVldGVlpXVm1RV1pzYUhCaFVXWlNZekptVW1GQ1pXSm9hMk53WVd0a1pXSlZhSE5sVldGalpWSmxNR0prWTFWaWFHaHJaRmxsVFdaVVlXeGtNbVJRYUVkbVkyUklZazVsVm1kR1pFaG1RV0pVWVVGblJXWlNhRUZoUldjdllVZGpaMmN4WWxSa1ZHTkVaVzltZVdoSlpXbGhhR1JCWkU1a01HVlpabmxtVVdKblpYTmhXV2hJWWtGa2VHVmlaVWRsYW1WdlpsQmxRMmhCWXpGbFNXUmxaV2hpVldSRVpVTmxWR1ZDWVVOa1NtVXdaMUpqV1daVlpXNWxRbUpYWjJSbVFXVTVhSEpvVldSb1lWSmxlR2hTYUdoa1RtUTBaRlZsTVdWV1oydGpVR2hvWTNSaVVXaFJaMGhqUW1GRFpFWmlkMlJXWlVka1QyRjNhR3RtYm1SQ1pVTmpSV1pOWlZwa1JHZGFaV2hvUm1KSVpFVmxaR1pJWWxWa01HaGFaRlpuYm1aU1puVmlaR1J1WjA1amRtSlhaVmRoWkdoQlpsaG9VV2RWWW5oaVUyUnNaMmhvWTJSQ1pEQm5iMlU0YUVaaGEyRnZZVGRuUzJocFlqaG1ObUZIWkVoblNXaFFhRWxsVm1oalkxcGxRV2hDWkZGa1NHZFJaVkpoTUdoVFpscG1SMkZXWnpWaFlXRXpaVkppVW1SVFkydG5OV2N4WkVWaVdHVk9ZMDFpVldKWVkyaGxkMmhXWlcxa05HaFFaa3BuVW1oa1lrUmxZMlZSWVd0bVltTlBhRkZtUldWSllrMWpVMlZqWTFkaVZtTXdhR05sYW1WallrVmhhMmR5WVVkb01tRkdaM1JpV21oRlpFWm1kV0pUWlcxbVVtSTFZVk5tZUdKUlpYTmxUbWQ0WXpGblRtRkhabFpvV21nd1oySmpibUphYUhwaVMyRlNhRTFrY0dGV1oxVmxXV2RHWkU5bFoyWlJhRkZqUjJkclpuaG9abVJsWWxabGIyTmFaRkptVjJkS2FHMWlZV1JTWjFKa2VXaFVaMjVuVFdGUloxUmxSV2N3WWtSa1JHRkZaVVZoWW1GUFozcGhiMlpaWW1WaFIyTjBaakJrVldKVlozQm1UMmhrWkZKblJtWjZaMVJuUm1WR1lUUmxZMkZHWWxwbk9HVlhZWGxvVFdSaVpGSmtNMlU0WWxab1ZtZHFhREJoV0doVVlUTmhiR054WmtKbWVHVnNaV0ZrVUdOc1pHZG1UbWhHWlRGa2QyZzFZVUZuYVdoellraGpZbUpuWlZKaWEyUmFabXRsZEdaQlkyWmpNV2cxWlZKalFXaHNaR05sVkdKbVlVZGtaR1F5WW1Gb1YyUTRaVWxtWW1Vd1pVbG1ZbVJTYUZobGJHRm5aMFZoUm1kS1lVVm1RMlF6WjBKallXVlJZMjFtT1dKcFoxcGpiV0pyWWxWaFpXRm9ZVzluTjJaWFoxSmpPV2hFWVVKbk1XZG5ZMVprVldVeVlXdG9aMmRWWkVSaGEyaFRZbVZtWjJoSllsQmxRMlY2YUVWa1ptUk5aVUZrUVdobFowNWlhbVZXYUdWaFptVlJaVVZqY1doR1pXeG9RbVkxWlVaa1VtUndZVEpqUldablozTm9aMkZaWldobVNXRlJZVWRpYm1OM1kyaGlWMkZXWkZsa1UyaGxaV3RqWkdacmFGRmhWMmcxWTB0aFdtWklhR3hqVEdSSVpFTmtWbU5XWlZaa1FtTTBaMWhqUVdoSFpWcGtkV1JoWnpObVRXVTNaVVJqYVdnMVlrWm5TR2hDWlRobGQyWkVZVEZpVW1aalprSmxNR0pqWmk5alJtRkJhR1JtYm1KaFpESmpaMmh2WkZWb1JHWmFZa2RpVFdGb1pXeG9SbVpSWWxobGRHSktaa1psVldFMVpIQmpaR2hDWVdobmQyWlJZbGhpVW1OU1psTmxhMmcxWWpsaVVtWlVZbk5oUm1kQllXNWlXV0p0WVZKbVdHWlJabE5sWVdKM1pWcG1ZMkZQWjBKbFZXWmtaa3RoZUdoWmFFdG9TV1ZIYUZGa1VXZFdZMVpuZDJFclpsUmxiR1pHWVdablIyTXpaRnBtZEdOYWFFVmpSbVoxWmxOaGJXTlNaVFZvVTJoNFpGSmxlR0ZJWlZKa01XTk9aa1ZuVVdOSlpEaGtTbU41WVZaaU9XUlBhRlprU21OdVpFTmhlR0pKWkZsaFVHRlJaazVvUkdOWVowSmxaR2RQWms1bVVtSTFZVTFpVEdoRFlUUmpjR0ZLWnpGaVJtZzJaMUpqTTJVeGFFUmtSMlJSWVRobVJtZEhaREZoVVdaT1lWQmxXR1o0WjB4aVpXVlZZbWhvTkdKbGFEQmtjR0ZQWm1SalVtZEdabnBrVkdWR2FFWmpOR2hqWTBaaVdtRXdaa1JqTW1KTllVZG1XR0pFWTJkaVZtUklZMU5vZDJkallVZGplV0ZWYUcxalRHZEdZVlpoVjJaUVoyZGxkR05GWTFabFoyaEtaWHBpVTJjd1p6Vm9RbUppWW10aGNHWnJZbVZsVldWellsVmpZMkpTWmpCaFpHSlVabEpuYkdobGFFbGxRMmhaWWk5b1NXZEhZMFZpVEdaSloyeGtkR1JDWWtKaVUyUTRaMUJrUldORllqbG1SV0pIWnpOb2JHSlhabUZoUjJRNVptbGhXbWR0YUd0bVZXRmpZV3RoTldGNlprVm5SV1Y0WkU1bVZXSlZaa1psUW1OQ1oybG9RV1J1WTBaamFtZ3daVVZuVDJkU1p6UmtXV1ZHWmpOa1ZXRk5aV05sZDJaSlprVm1UbVZFWjNobVptaGxaME5sVm1SeVpsVmphR1ZTWkhoaFVtUm9ZMDVqTkdGVlpqQmxPV2RyWkdGbGJHSk9ZazVqVjJWNlpHeGpXV1ZqYURGbFdXaFRabVZoYTJoa2FHdGlVV05YWlRWbVMyRmFaVWhsYkdkRFowUmpNV1p6WW1SaVNHVlZZekJuV21WV1kyNWhVbU4xWW1SbmFXSTFZMFpsVW1odFoyTmtWMkZGWm10amVHWXhaVk5qYUdOQlpVVmhRbVpXWW14bGQyUkdaa1ZvU21ONVpWbGthV001WldoblFtUllZblJqUVdWQ1kyNWthMk5wWms5aFZXaGthR1JqUjJSWFpGSm9jR1prWkVKa2FHRjNaVkZvV0dWU1oxSmxVMlJyWWpWbU1XUlJhRzVpVG1KU2FGVmxWR05hWmpSbFZtaEhaMVZqWldObVp6Qm5TV1pGYUZwaWJHTmphRWhoWW1jd1ozUmtZV2hrWVVobU1XaElaMFJqZDJGd1lXdG1TR0pGWmtKalNHUkZZVWhsVG1WTVpGUmthMkpHWTNWa1UyVnRZVkpoTldGVFkzaGhVbUY0WlVoaVVtWXdaazFvUjJOVlpYUm9NR2RKWkVoak5XTjRZbVpoYkdWS1pETm5RbVJCWW5SaldXTlpaakZrTUdoRWFGSm9SbUZKWlZSbVlXSlZaREZqVTJobVkyNWhkR0Y0Wm1Wb2QyVk9ZbmRsVW1nelp6aG9ObVJVWVVWb01XVlNaMU5vVW1OV1owOWpZV0pZYUZGb1dXTmpZa0pvVW1Nd1psUm1SV1Z2WVVGaVptUlNZMDVpYVdaWFltdGpSbWRvWWxwbFZXZzFhR3BvUm1SdVpHeGxUR05DWWpKbmFHZFZaME5qTW1OMFprdGhXR2h1WjBwa04yVlZaMUpvUVdSbVpsZGpaMmQwWTFwblZtRm9ZVXBsTm1oU1p6SmtVbUZDWVdKa2EyWnZZbWxpWldKV1oxbGxWV1pRWTNoblZXUm1ZbFpsUVdJNVlVUm9XbWRJWnpWaWEyUmhZbTVpTVdGVFpHUmpVV05SWjB0b1YyWXlaREZpV1dSRFlVVmxaR2hVWjBWaGJtZEtZVlJoVkdKcllsWmxhV1ZhWkcxaWEySlZZbU5qYTJZMVlucGxSV05GWlhoblRtVklabFZpYTJoSmFGUm5hV0ZrWnpob1IyUnRaVXBtV21aWmFEQmlSbU5pYUZkblYySkphRVpuV21Kc1puaGhRbWRoWmxkbFNtWkJaVnBpUW1NNVlUVm1VbU5CWlZabmVtSlVZWGRuYUdSVGFGVmhNR1E1WTJ0aVlXZHNaMDFqV21aRlpUTmhRV0pFWWtabGJHTm9aRU5uUzJGQmFHZGpkMmRFWVdwa2IyTlVZMDVpUkdGNFprWmtXR05VWmpsa1ZXZFRaMVZqTUdSRlpWWm1hbU40Wm01bVpXZHNZV3hqZG1GU1lXMW9ZMkpYWkVWbGEyRjRaVEZtVTJOb2FFSm5VMkpVWTBWaFVtWXJaRU5rYUdKQlkyZGlUbVpwWjJ0bE9XWlVaMU5tU1dkTWFHWm1WV2RWWjJOblEySlNaMEZrWkdKVmFFVm5OV0V3WkdSblJtZzBhR3hrUkdWNloyTmtSbUpCWm5kaVJXSTNaVVZvV0dKelkxbGxWMlpJYUdkb2NtUm1ZVWhvVVdaUVkyRmpNV05KWlZWbVkyZFZhRmxuVkdobFlVWmxUbUpRWWxwaVJHUjNZVk5vVTJSNGFFMWtOV05DWVRObFRtWlhZVVZtYm1Gd1owaGxXbVpGWkVabWRXSlRhRzFsVW1ZMVlWTmllR1pTWVhoblNHSldZVXBqVG1SQ1prWm5XbVF5YUZCalUyaEpZV2hsU21SblpXZGtaMlpHWTBKbFNtUlNZMkZqUldOd1owVmxRMmQ0WjFKaFQyZFFZbmhoZUdKRFprOWhNMlpzWWsxbFlXTlNaMUpoZVdaVVltNWtUV1ZSWTFSblJXZ3haMUpsVTJaU1lWWm5UMlpLWjI1alVXRmxaV1JuYTJSR1p6aGtWMlZTWXpWaVQyRmhhRUpvUldJeVoxSm5RV1ZXWjNob1pXaFdabkJpTUdSQ1ozbG5VbWRUWlVObVdHSkdZa2hoUVdGdVprWmpabUZVWVRKaGQyUnFabFZsZDJOUllsUmhZMlZTYUhSblVXZFlaWGhtTldSUlpsSmxNbUZTWlVKbVltVnJaM0JuYTJabFpWVmxjMkZWWW1OaVVtRXdhR1JtVkdWU1oyeG9WV05KWjFOalFXUjVaMDVqYVdKcllsQmxTMmRXWlU1aFYyZFVabTVvVm1KTWFFUm1WbVpKWWxGb1ZXTnBZMEZsWm1kRVkxTmtiR1ZwWkVKaWVtaDBZMGRsVFdGNGFHTmtVbUpTYUZGa2IyRk1aMFpoUW1aellWWmlVMlZIYURsalpXWkhaMGhtUW1kQ2FHUmlSbWRHWVV0alZHSnVZMVZpVW1OamFEQmtlR1ZTWW1WbFNHTkNaMWRuWkdaR1pYUmxjbVZIWlRGa2IyWnBZVVZtYkdOSllqSmlSV1ZCWW05bGNtSk1aMFpsVG1VMFkxRmtVMlJLWVV0aVFXZEVabEpqU0doUVkwRmpSV1JvWjBWbU1tVTFZVTFrV1dWc1pFNWpUR1JHWTBoa1JXZGtaa2hoVldZd1pGcGpWbVJ1WjFKaWRXaGthRzVtVG1KMlpGSmliV1ZqYUZkblIyUnJaRkZvT0dWVGFHZGlNV1pUWWxKa1VtZDBhRFZuVm1ocllVcGxibUZPWTIxbldtSXdZVVpqUkdoM1kweG1TbVpDWjBGa05XTkNZVUpqT0dOa1pFUm1VMlU0WkRkbVNtZHNabXRtY0dOVFpWTmhRbWhaWVZGak1HSmtablZsVDJVemFFNWhUV1JWWTFob2FHTjNZMVpoYm1SUloxQmxZV014WmtsblZXUmpZMUprUW1GVFpVdG5iR1JOWWtoaVdtRklabVJqVkdkRFpsSm5PV0poWkVObU1XTnNhRmRrUldodVpuQmhTR1JhWmtWaVJtZDFaRk5tYldOU1pEVmpVMlI0WWxGaGEyWklZVkZsUW1aT1pWUm9WbVJuWVRSb1MyVjZaV2RrTUdWUFluZGpOV055WVZCaVFtaEtaRTFoWkdSVllXOWpVV0ZWWTJ0bFVXRk1ZV05uUm1Od1prTmhZbWd5WWtwbmJXWk1abmhoVW1aMlpsUmthbUZ6WkZGbFVtY3dZakJrUldKVlpXcG1PV1ZQWjJGbFdHWlJhRmxvWTJkRlpFWmpNR1ZWYUZWbmNHZFBZV1JpVW1kRllUWm1RMlJzWWtabGQyTlpZMFpvV21Sd1kwVm9iV0p6WWtoaVNHWllaVVZvVldSV2FHbGxkMlpIWjBob1UyTndaSEZsUW1neFpFWmtZV2hKWm5oa1FtZDZaVlpoYUdkS1p6Wm1VbWd5WlZKalFtZGlabXRqY0dkcllXVm5WV1p6WlZWaVQyVkdZbk5vWkdoU1pGUmtUbUZYWVdSaFIySTFaREppWTJFeVlUbGhSMkZhWm5obFdXUlRZMVJtU0doV1lVdGlSV2hHWVhCbVRXTllhSHBrWjJkVVkwVmhWMkZGWXpKbFMyUlVaakZtVm1WUVpHcGxSV1V2WjFabFVXUktaMDVrVjJSc1pGRmpWbUpIWWpKblFtVTBZMDFqYm1WQ1lrSmpaR1JHWVVaa1MyaFVhRzVqVldaU1ltTm5NR1I0WWxKb1pXZElZMEpoVjJOYVlVRmxPV2N5WlZSb2VHSlJaV3hqUkdkc1ptOWljbVJZWVZGblNXTm9aVXBsZDJkQ2FGRm1VMlJVWjFWalRHWllaakZpUVdjMFpXVmhhMk5rYUd0a1VXWlhaRFZoUzJOYVpFaGliR1pNWTBaalNHUkZZV1JqU0dKVll6Qm5XbVJXWVc1bGQyUTJZVkJuYW1admFEaG1VMkpEWlhCb1ZHSllabmRoVFdkdVowVm9lR0ZDWlZCalVtWkZZbEpvZDJGU1pGVm1TbU4wWlZsbVIyWmFaM3BtUm1oRVpIUmtUMlZpYUVKa1FXVkRaRU5vUVdkYWFFcGhXV1JCYUdOamJtTkpaRUZrUVdWU1lVVm5lV05aWkZGaFJXZ3daMXBpYldOQllUTmtjR0pOYUZOb00yRm5ZeXRuUldSNVpVMW1VR05QWkZaamIyWklZMWxoTUdFNFoyRm1aR1JJWjJ4b1VHVmFaVWRsY0dWVVpFZGhVbWhPWjNkb1EySXhZbXhuVjJKRlkyNWpjR0pJWjFwa1FtSlZaMjFuUVdGNlpXUm9NMkpDYUd4bFJXYzRZMVJoYkdSUllsaGlXR1pHWkZwb0wyTmlZbWxpVG1ONllXTmxNR1ZhWkRCbVFtUkNaWFJvYldoa1oxVm1iMkZSWmxWaGEyUlJaVXhuWTJKR1ozQm1RMkZpWmpKa1NtZHRhRmxqUkdNMVlYbGpWR0p1YUUxalVXaFVZVVZpTVdaU1lsTm9VbUpXWTA5aVlXSllZbEZsV1doamFFSm9UV2Q0WjBKbVVtRTRaR05vVDJaNFlrWmhOMkZhWld4alJtYzBabU5qUm1oYVlUQmhSR1F5WjNSaVUyTkdaRWhsUm1KSFowVm5NMlpvWVZSa1ZHWXlZVkZrYkdabFlsSm5hMlpVWldOb1FXTjBhRnBuVm1Sb1owcG9ObU5TWXpKalVtSkNaR0pvYTJad1kydG1aV0pWWVhOb1ZXaGpaVkZuU1dWa1lWSm1WV1V3YUdWaVVHVlVaekZpTkdoUVltbGliMkpNWWt0bVJXSlNZa3hoVkdoSWFEVmxXR2hGWlVGbFdtaE9ZVWxtV0dKQ1kyRm9VV0p0WkRsa2FXTmFhRzFoYTJaVmFHTmlhMlkxWW5waFJXZEZaSGhqVG1kVllsVm5hMmhXWlZSbGJtZE9ZVEJuVldaV1pIQm1RbWhrWkVaalJtTkxaVlJpYm1WVllWSmlZMll3WjNoblVtaGxaa2hsUW1kWFlXUm5RV1U1WTNKaVZXaG9abEpuZFdkU1pHdGxZMkYzWlVka2FHZDRhSEZrU21aNFlscGlWV05ZWVVOa1NtSlRZVlpsZDJOV1psaG1UR0ZyWkRob2QyUlVZWHBoTUdWbVpFcGlhbVJuWlZwbVVtZHFZVUpuUldKR1pGWmtNR1pXWVZabGFXUkdZbTVoWldadVlVMW9OMkZFYUdsbE5XUkdZMGhsUVdkRlpuZG1RbVF3WmsxaVltZElaMnRtTldRMVpHTmlSV2RLWlhabVdXWnRaVnBqY0doR1pFaGhTbWRQWkdOa2VHRkNaMDFrVkdoV1pVWm5TbVpHWmxWbk5XZHdZbVJoUVdKS1lYZG9SbUZZWW05blUyZENaRkprTkdGelprZGhVMlZqYUVWbFIyRkRZblJuSzJaSFkzcGlSbUZEWTBwa1FXUkNZazVrWm1kVlpscGlTR1pOYUVKb2IyTmpabUZqYVdOalpsZGxWbUZGWlVGbk5XZFZZbEpvZUdWaFpFVm9iV053WWt4bldtaENaMUpqYm1GU1kydGtOV1ExWWxObWVHaFNZWGhvU0dGU2FERm1UbVJIWVZabldtWXdZMkpvYm1SYVpucGhZbUV3WkZwb2JtZElaV3RsV1daRmFGQm9RbUpyWm1WaVNHaDNaRVpsUjJaSmFIaG5UV1ZaWTB0a2JXWkthSFJrWkdaQ1lsRm1ibUpTWXpOaE9HZzJZbFJpUldjeFoxSmlVMlZTWWxabVQyWmhaRmhsVVdoWlpHTmlSV0ZHWmpCbFZXaFZZM0JqVDJWa1lsVmxWV0UzWVVKaFVXRktZVk5sWTJGR2FGcGlNR0pFWlRKbGRHTlRZVVppU0dOR2FFZGpSV2d6WTJobFZHTlVaREpsVW1WcWFGTm5SR1JOWmxSalkyWkJaWFJtV21GV1ltaGxTbUUyWkZKaE1tZFNhRUprWW1WclptOW5kR05RWnpCb2MyZGpaMHBvVm1aV1oxVm5TR2hvWTJOblltWk5ZbE5tVFdOc1kwOW9hbU5WWTBSa1dtSjNZV2RuVTJaWVlVaGhlR1JMWlZOb00yRm9Za1ZvUTJNelpFSmxZV0pSYUcxbU9XVnBaRnBvYldWclpGVmhZMkpyWnpWaWVtRkZaVUZpVG1GdVpsVmlWV1ZyYUZaaVZHRnRaV3hoTUdGSFlVaG1RbUZDWm1Sa1JtZEdZVXRsVkdWdVoxVm9VbU5qWlRGa1RtSlNZV05vUTJaUlltVmpVR1pXWVhobmJHTklZVEZoUldZNFlrTm9WV1ZGWTJoa1ZXWXdaMUpsTldoaFltZGpZMkpZWmxGaVJHUjRaa05sUjJKb2FFMW9ZV1poWld0b2RHZHJaMVZpYm1kNFpFdG9ZV0pZWVd0b1ptUllaa1JoYUdGUFlrVm9kMlpDWm1OalIyWjVZV05sYm1GTVlVUmtXbWh0WjFSaU1HRXdhRmRtUldOcllYaGlNV2RUWVdob1FtWlRaVkpoUVdoMFluZGlWMmRyWWtwaGRtVlpaMjFpV21Kd2FFUm5ibUZKWWtob1YyTlNaRUpoVFdOVVkxWmpSbVJLWmtabFZXUTFaWEJsWkdKQ1pXaGxkMlpSYUZob1VtZFNZbE5oYTJZMWFIRmtSV1ZUYUdOb1JXWkhZa05sZEdNclprZGxlbVZHWTBOaVNtRkJZa0prVG1ObWFIaGhWbVZYWjB4b1JtSjBaV3hoV21GSGFIQm1WR1ZIWTFKb1RtTjNZME5sTVdkc1pGZG9SV2h1WVhCaVNHZGFZVVZuUm1aMVpsTm1iV2RTWnpWbFUyRjRaVkZqYkdGRll6Qm5OR1JaWmxkbGVHUmpZbTFsVUdGRVpHTmhjV0phWmpGbldtSnlaa1ptWjJKR1pHVmhaR2RWWm1OalVXVkNaR2RsZUdkRFkwbGhNV1ZSWkZCaFMySnBhRGhsTVdkSlpFVmtOR2N6WlZKa00yRTRaRFppVkdkRll6RmtVbWhUWlZKa1ZtaFBhR0ZoV0dKUlkxbG1ZMmRGWWtaaE1HaFZZVlZpY0doUFlXUmpVbWRHWTNwalZHZEdaRVZsYzJWUFpVSmtPR0Z1WmtGa1UyRlpZMWhrVjJSVFkwbG1VR0ZUYUZSbE1XUTFaMVJtTW1WU1luRmtWV1o0YUd0blZHRmpaa0ZvZEdSYVpGWmxhR1JLWnpablVtUXlZMUppUW1KaWFHdGxjR1JyWVdOaVIyaEZaRlZuWTJkU1pqQmxaR0pVWWxKaWJHaFhZMlJoUjJVMVp6Sm9ZMkV5YURsaVIyTmFZWGhpV1dkVFkxWmlibWhWWjJWa1NHWm9aa1ZpVEdoWFpubGxiR0ZUWWtabGFXRmpaSEpvVG1aWGFHUm9XbVZPWTNkalRXZzRhRkZtYUdaV1kwSmhWV0ZTWnpGbVpHVkNabnBpY0dJMllWWmhWR1pWYUUxbFNtVjRaR2RrVVdGRGFETmthMlZTWmxsaU1HWkNaRkprWVdVeVpVcGtWMkZsWWxGb09HVXZZMGRqYkdJd1oybGxVMkpHWnpSb09XUklaV2hpZDJWMGFFMW9RbWRaWlZGa1EyRkdabTlsVEdoWFlWWmtXV0pUYUdWaGEyaGtZMnRvVVdOWFlUVmpTMmhhWkVobWJHaE1ZMFprUTJSa1lXTm9WR0V3WnpGbFZtSldhRzFqYkdWMVpGcGhiV0pvWjBablVtTnRZbU5qVjJORlptdG1lR2d4WjFOaGFHZENaRk5pVW1KQlozUmtkMlpYWm10blNXaHRaa3BsUjJWYVltaG5WMll6WTNSblQySkxZMFJtY0daTlpWUmtWbWhHWkVwa1JtSlZhRFZsY0dSa1lVSmhhR1YzWVZGaFdHWlNZVkppVTJScll6VmtNV2RTWlhwaFNXUmxabFZrVkdoMFpISmhabVpJYUZGa1VHZGhZVEZuU1dOVlpHTmtWV05aWTFSa1pXTkdhRTVrVUdSYVpFZG1jR1ZVWVVkbVVtRk9hRFJuVTJOR1oyeGlUR2RGWVdwaVVtZFFaMVJoYTJoR1puVm5VMlZ0WjFKaU5XaFRaWGhuVW1SNFpraGhVbU14WkU1bFIyUldhRnBvTUdKaVpHNWpXbVo2WkdKa01HYzBaM3BqV0doc1pYTm1abWhsWW5kbFpHVldZa2hsZDJWMGFGcGtTMk5XWlZGaFFtRktaWGxvVFdVd1pFTm5iR1p6WnpKaVEyZDRZa3BsUldaU2FFRmpSbVZTWkZGamFHRldhR1pvV1dKSVoxRmpSV0ZpWjBWbVJtVnpZMWRpUldWdlpsTm5XR2g0YUVaamVtaFVaMFppUm1jMFptTm5SbU5hWkRCaVJHRXlaWFJvVTJOR2FFaGhSbVJIWjBWbU0ySm9ZMVJvVkdVeVlWSm9jV0ZDWXpGalJtaGhZVWxqZDJWVlpWVmhSV1l4YURobU1XUkdaVlJrTVdoUVlVeGhVV2RKWjJ4aVMyTjVZbWhqWW1kT1pWWm1hR0k0Wmtka1VtaEZaMkZrWm1oWFpVcGtZMlJqWXpKbE9XZEhaVnBtZUdkWmFGTm1WR0ZJWWxabFMyZEZZVVprU21GRllrTm5NMkZDWTJGaVVXRnRZamxsYVdWaVptcG9NV2RqYUU5aWVHRXhZemxsV0daUlpHdGtRV05JYUdoa2RHVk5aMUZqUTJadll6aG5WMkZUWmtsaGFXaFBhSGhoVldoUVpVeG5lV1JGWjFwbVVHRXdaWGhvWVdkbFkwZGxUbUptWkdSaFFtZE9aek5pVldObmFIaGpOR05TWld0b09XUlRaVlZvTUdZNVoydGtZV05zWkUxaFdtaEZaak5qUVdOTVlWZG9WbVJaYUZObVpXaHJZbVJsYTJaUlkxZG5OV1JMWmxwb1NHWnJZV1ptV0dKRVptaG1UMk5GWTNkb1FtRmpaVWRuZW1SelpqaGhUR0l6WXpCaWMyaEVaV2xuV21GRlpXTmlVV2hOWTNoalJHSXphRVZtUjJkVVpFVmtaR2QzWTFWaFZXWktZVGxqWVdFeWFIQmpSR1JHWWtoaFNtUlBZMk5rZUdoQ1pFMWpWR2RXWVVabVNtUkdZbFZtTldod2FHUm5RbVZvWlhkaVVXRllaVkpsVW1aUlkyaGtiMkU1WlZkaFEyTkNZa05vU0dORVlUQmpPV0ZIWTFOaldtRlhhRnBoVW1oR2FHTmtUV1ZDWmxKb2QyWk9ZbmhqWTJkTFlVSmhWR0kxWldKbVZtWlNZVTVpTjJGRFpEQmtlR1ZtWjBWa2JXZGFaR0puV21SR1lXeGhibVpUWkdwbWFHVlVZbE5vZUdKU1puaGpTR2hTWmpGb1RtRkhZMVppV21Zd1oySm9ibU5hWkhwaFltZ3dhRnBsYm1GR1kyaG9TbWROWW1SbVZXWndZVVZuUjJOblpqRmxXV0ptWTJoaVkyTklaa2xrYVdnd1pEQmxUV1ZDWW05bGVHUkNaV3BvU21aRFoweG9kMlJKYUZabVJHRklZMUZrWVdSWlpsUm5aMkpaWTJWbk1HTkdZMmRpVjJaRllWcG9hMkprWlZKbFJtVjZaVlJsUm1SR1pUUm9ZMkZHYUZwbE1HaEVaakpqZEdWVFlrWmtTR0pHWTBkbVJXSXpaR2hqVkdWU2FIcGxRV1ZwYUVkaGEyUnZaMlJpVUdoVllUUm9WV2RIWlZWb1FXTnFaVk5pVTJaalpVcGpUR2Q0WldkbFNHVk9abWRqT1dGU1pFVmlSV1ZyWlZaalFXVlNaMnhoWkdWa1pVaGpiR1l2WW1Ob00yWk9aMkZvV21kM1p6Um9ZbU5VWjBOamJHWm5aMFZtUm1GS1pFVmtRMmN6WkVKaFlXZFJZVzFqT1docFlscGxiV1pyWTFWb1kyWnJaVFZtZW1kRlpFVmllR1JPWWxWblZXaHNZa0psUW1acFlVRm9ibUpHWldwbE1HRkZaVTlvVW1NMFpsbG9SbVF6YUhSb1UyaFBhSGRqTUdaRVowZG5lbUU0WWxOaFRXUlhaVFJsTDJoWFpteG5hR1o0WkZSaFVtUk9aSFZoVjJSdFpGWmlhMk5oWm14aVRXaGFZa1ZoTTJKQlkweGhWMmRXWmxsa1UyZGxZMnRpWkdScllsRm5WMmMxWmt0bFltVllZa0puU0doUVptNWtSV2hrWWtoaVZXTXdhRnBtVm1KdVpGSmlkV0ZrWm01aFRtRjJabEpvYldoalpGZG9SV2hyWkhoak1XVlRhR3RuVVdOaGFFUmpWbVJvWWl0alJHRkdhRTVoYUdaSlpYbGpTV1IwWTBoblJHZEdaRUZuVUdkcllsVmhRV0pIWWxKbloyRmFZbGRsVW1oa1kyaG9UbU5TWTBaaU5XWlVZbmxqV1dobFlraGhaMlZLWXpsb1FXRnRaa3BuUm1aWVkzcGtWV2RzWWtkbWFXTkNhRWRtVDJKNFlUVm9UbVZsWjFKb1ZXUmhaR1JvU0dac1lWQmtXbVJIWkhCa1ZHZEhaVkpqVG1OM1lrTm5NV1JzYUZkb1JXRnVabkJvU0dOYVkwVmpSbVoxWmxOaGJXTlNZbmhqUW1ONFkxSmhObUZCWkVKa01XVldZa1ZvUm1ad1pXVm5ZbVJ1WWxwa2VtUmlhREJtV21GdVlVWmlhR1ZLWmsxaFpHWlZabTltVVdSVmFHdGlVV2RNWVdObVJtUndaME5qV21WNVpFWmtiV05rWlVKblVXZzRZVkpvYkdOclkxRmpWR1JGWmpGa1VtaFRZVkprVm1OUFpXRmhXR1pSWjFsa1kyRkZaa1psTUdoVmFGVm9jR0pQWTJSbVVtTkdaSHBsVkdGR1kydGxjMk5QWjBKb09HRnVaRUZuVTJKWlpGaGpWMlpVWWpSaVZXZFRaMjVrV1daUlpVSm5lV0ZWWmpSalRXWkdaRnBvV0dWT1kxZG5iMlJPWmxoaWJHVTFaalpvVkdOSFlWSm9VV1JhWmpCb2NHYzBhRnBoVldGelpVMW9aV2hDWVRGaFFtSmFZM2hrYkdSWFoyUm9SMkUxYURKaVkyRXlZamxoUjJOYVpIaGxXV2hUWlZSalNHaFdaMHRsUldWR1owcGxSV2hEWkROa1FtaGhaVkZpYldJNFpUSm5UR05wWTBKaVNHVm1hRUZrVFdReVlWaG1VV1ZOWldablEyTkZaV1JqVjJkQ2FHbG9aMk50WldWaGVtRTRZMFpvVFdKVVpVRmhaV1pTWTJwbWEyRlpZV1prTW1GYVpGSm1aV0pJYUVKalYyUmtaVUZsT1dkeVoxVmxhR0pTWkhob1VtUm9aRTVqTkdGVllqQmpPV0pyWldGbWJHaE5ZbHBoUldReloyaG1abUZGWmxKbE9XVkNaR1JvUVdWdlkyaGhSR2REWmtWaldXVlFZVmhvWTJGSlkxaGxSR2RDWmxCbFptZG5aRXBoWkdWRlpuaGpWV1UyWldaa2FtSTVaWFpqVkdKWGFHTm9SbUpIYURCaGVHVndZVlpsYUdGQ1lVdG5WR05SWW5Oa2MyRmpaVVZqU21oMllWbGliV0ZhWW5Ca1JtaElhRXBrVDJWalkzaGhRbWhOWlZSaVZtWkdaVXBpUm1KVlpUVmpjR0prWmtKa2FHWjNabEZrV0dOUmFFWmpRV1JuWkdObGJXRklZM3BqTkdGS1pVaGpSR0ZqYUdsblJHTXpaM0JsVFdoSlpuaG1UbVZIWkVWb1oyRnNZMWhqVUdWVWFFbGhZbUZpWTBOaVdtTlVhRVZoYUdOT1pHbGxRV1ZzWVZabU9HRkZZbTVqY0daSVlWcG5SV0pHWkhWb1UyZHRZMUpvTldWVFozaGtVbWQ0WkVoa1VtY3haazVvUjJaV2FGcG5NR1ppWVc1b1dtVTNaMDlqZDJVMFluVmtVbU5TWVhkaVFtaE5aRUZuWkdGbWFFRmhRbUV3WjBaalRXWjRZMGxrUkdoUVpsRm5SV0Z3WlV4bFZtWkZhRlJuUjJSdVozUmpZMk5VWWtWaldtSlNaMWhsUW1kNFlVOWhaR2hYWjJkaVdXaGhZVVZuYUdNd1prUmtWMlpDWjA5bFpHZFNaRVppZW1KVVpFWmxSbWMwYUdOaVJtaGFaekJpUkdReWFIUm1VMlZHWkVoaFJtTkhaMFZqTTJKb1psUm5WR1l5WWxKaWNXZENaVEZtUm1aaFlVbG1kMkpWWjFWblJXSXhaamhoTVdKR1kxUm1NV0ZRWWt4b1VXSkpaR3hpUzJkNVpXaGpZbUZPWkZabmFHZzRaa2RqVW1oRmFHRm1aR0ZIYUZabE1tVmFaREpsV21kTFlsUmhVbVpaWWxOb1ZHUklaMVppUzJWRlowWmpTbWhGWVVOaE0yaENZMkZpVVdadFpUbGthV1phWkcxbmEySlZZbU5tYTJJMVpYcGtSMkZDWkdkaFJtRkhZa0poYjJoaVkwRmtlV2gzWkRWblZtSjVZMGxsV1dkbFltaGpTV05EWlVSbmVXRmtabmxsVUdOQlltZGxWV1JIYUZOaFVtWmxZVTlsUVdjNVpXZG1WV2huWkU1a05HRlNZMmRtT1dacllsVm9NV1prWlhSallXTm5aemhvZW1aRlp6TmpRV05NWkZkaFZtUlpaMU5oWldKcllXUmlhMlJSWjFkbE5XZExaRnBtU0dkc2FFeGtSbVZJWkVWb1pHRklhRlZsTUdaYVoxWmlhV0ZCWTIxaFVHaDVaRUptYUdaRFpYbG1TbVZpWjFoaVVtTTBhSE5sVW1WR1lVMWpZV0ZDWTFaa2EyWlVZa1ptVVdaWmFIRmtRV0o2YUVwbGFHTlhaRWhsU21KR1pXTm1kMkphYUVabldtZ3haa1prU21KR1oxVm9OV1p3WldSbFFtUm9aSGRuVVdGWVoxSmlVbUpUWjJ0bU5XY3haa1ZrV0dKT1pFMW9WV1ZZWmtaaE5XRlhaMnhpTkdkUVptRm5NV2RKWkZWaVkyZFZaMWxrVkdobFkwWmhUbVJRWmxwbVIyUndabFJpUjJkU1prNW9kMlZEWmpGb2EyRkRabGRqYW1KTllWVm5ZV1ZvWkdSaU9HUlNZVU5rVldFNWFFUm1lR04zWkhsblJXVXhZMEZrV1dGV1oxRm1TV1E1WmxCbGFtTnZZWEZsV21kM1pHUmxkV1JJWVhobWQyUmxaMDlpYUdnMVpHTm9WMlZzWjJOaVlXRmxZMVpoVVdKUVowOWxhV2MwWlhsbFNXRkZabEZqSzJKR1pUTm1kR0pFWVZKaVZXVkdaVGRvVTJOU1lsWmhUMmhoWkZoaFVXTlpaR05sUldWR1lqQm1WV0ZWYUhCb1QySmtaRkpoUm1KNlkxUm9SbWhHWXpSaVpXTkNaM0JpTUdaQ1kwaGhXbUpUWVVSa1NHUm9ZMHRuVDJOWWFHaGlWR1pVWXpKalVtZHhhRlZoZUdKclpGUm9ZMlpCWkhSaVdtaFdaV2hsU21nMmFGSmlNbVZTWmtKbVltZHJZVWxpYm1KbFkxWmlXV1ZWWmxCa2VHTlZaVE5pVkdaU1pteG5WMk5rWVVka05XSXlaR05uTW1nNVowZGxXbVI0WTFsblUyRlVZVWhqVm1oTFprVmlSbWRLWkVWb1EyUXpZVUpoVTJaR1ptbGxZMmR5Wms1aVYyTmtZMXBrVG1oM1kwMWxPR0ZSWTJob1ZtWkVZa1ZsWjJWR1oxVmhTR1JCWW05aU4yZFlaVVJpVldOblprbGxSbVpyWmtkaFZHRnVaelJvVW1oWloydG1WbVJTWTFwaFIyVjRaRmRvWW1oQlkxcG1jbVpFWldwaE5XZDRZMUpuYUdGT1pqUm9WV2d3WWpsamEyTmhaR3hrVFdKYWFFVmhNMkZCWTB4a1YySldZbGxvVTJGbFlXdGpaR0ZyYUZGbFYyWTFhRXRvVFdORVpVVmhRMkZTYURObk9XZFJaRmRoUVdKQ2FGZG5RbUZEWVRGbVoyZE9ZbFJsYzJKMVlrWm1RV1JTWlZwalZtWm5abXRtVldKSVoyaGhaMmRsYUZSaFVXVmtZbUZtVjJOclkwcG5kbVpaWjIxbVdtVndZVVpoU0dKS2FFOWtZMmQ0WkVKbVRXRlVZVlptUm1WS1pVWm9WV0UxWlhCaVpHRkNhR2huTkdoR1lWUm1kMmRaWmtkb1ZXSkJaelJoVm1aRVlqUm5SR0ZCWW5sbFJtY3JhRVppVkdkNGFFOWtUMkpVWlVablltSk9ZVkZsVG1GNVpreGlSbUp6WmtSb1dtTkhZVVppVkdSRFlXaG1jR0YzWkVab01HaFdaRmRuUTJWdWFFNW9TR1pQWlVkaGRHWjFaMU5sYldGU1p6VmlVMmQ0WWxKb2VHWklaVkpsTVdkT1lrZG9WbWRhWkRCaFltTnVaVnBvZW1aaVlqQmlXbVp1WkVaaGFHUktaazFqU1dSUmFFcGpXbUZCWTFWb2NHTkhaMDVuVW1WalowNW5VR1ZVWkhSamIyVkxaR3huZDJoNlkwaG1RbWRDWjJabVEyVkJaR2RoZDJWSVpWSm1NR1pEWW1GbVdHYzRaMWxoV1dGclpHaG5OR0psWWpCaWNHZFBaR1JpVW1SR2FIcGtWR0ZHWkVab05HSmphRVpvV21nd1pFUmxNbVowWWxOb1JtZElaVVpqUjJkRlpqTmthR05VWWxKbGVtUkJZMmxpUjJkcloyOW1aR05RYUZWbU5HVlZZVWRsVldKQlltcGtVMlJUWW1ObFNtaE1ZWGhpWjJaSVpFNWpaMmc1WjFKb1JXZEZaMnRsVm1OQmFGSm5iR1ZrWjJSblNHVjBaeTloWTJVellrNW9ZV05hWVhkaU5HVmlhRlJrUTJGc1lXZGpSV2hHWWtwbVJXSkRZak5vUW1GaFlsRmliV1U1WjJsbldtZHRZMnRvVldkallXdGlOV1Y2WjBWbFJXWjRaazVqVldOVlptdGlWbU5VWjJwb01HWTRZVlZsVTJOT1psQmxUMlpTWlZGbFNHWkJaRk5rWkdaSlpHWmtVV1E0WjFwa1QyWlRaMGxsTVdkUFpUQm1jMkoxWWsxa01HSkNZelZpUTJKb1kwNWxlbUZWWXpGbmRHaDBabHBvYm1oclkxcGtSV1l6WjBGblRHRlhaRlpoV1dkVFptVmxhMk5rWW10aVVXaFhaVFZuUzJKYVowaG1iR05NWkVabVNHVkZZMlJvU0dOVlpGWmpUbVZJWW1wbU1HTTVhR1ZtUkdRMFpuRm1RMlo1WW1oblJXVlRaakJqU1dVeVprRmtiR05GWlVGaFNtTXdZbEZrTUdOSVlubG9UV0kzYUdGbWFXRndZWEJsU0dZelkwcGtXbU5sWjJoalFtaFJhRlZvVm1kR1pWSmlTR2hGWmpSbU1XUllaR2hpYUdoM1oxRm1XR1pTWVZKalUyWnJaelZoTVdGRlpsaG9UbVZOWkZWaldHUm9ZbmRpVm1kdVlsRmpVR0poWXpGbFNXaFZZMk5tVldoYVpVaGhUV2RDWjI5bVkyaGhZV2xsWTJaWFoxWm9SbWgzYUdsbFZXSnNaMk5oVm1KWFlXcGhjMkZXWVVKaGQyTTBabkZuUkdSM1lWVm9kR1pSWnpGbWFHUjRaVVpvYUdReFlXSmhSV0pJWlhobE1HVmlabTVvV21oNlkySmhNR2RhWlc1b1JtZG9aRXBrVFdKa1kxVmpiMkpSWlZWaWEyaFJZMHhrWTJaR1ozQm5UR0ZhYUcxbk5XWk5aMkZrVW1WU1pYbGlWR0Z1WjAxblVXZFVaMFZqTVdGU1lWTm5VbUpXWlU5bllXZFlZbEZsV1dkalprVm1SbVV3WTBKb1VXUkpaa2hsU21ob1pEaGhiR2hZWXpGb09HVTFZVTVvUW1oS1pUaGhWR1pIWkZWaVptUlJZVlJuTUdoVFkxZGhhV2huWldabFJtRnRZM2RoY21KWFpXaG1RV1ZrWWtsbGEySlJaVTVqUjJkb1luQmljR2hXWkcxbU1XTlFZVWxpZUdVNFlXOWtUR2RSWWtwaVJXWlFZbFZpVVdGV2FFaG1hR1pDWm1GaVdHVnRaVFZvTW1oamFESm1PV2RIWWxwbGVHVlpaVk5uVkdSSWFGWm1TMmhGWkVaaVNtUkZaME5tTTJkQ2FHRmlVV0Z0WjJObmRXSmFZMjFtU1dOS1ptTm1iR1phWWpabVNHWkhZVnBqVG1WVlkxVmxhMlZXWlZSb2JXRnNaakJoUjJKSVkwSmpRbVJrYUVaaFJtWkxaVlJsYm1OVmFGSm1ZMmd3WW5obFdtWlBZVE5sUW1aTVptUmlSV2RHWkdwaVpXTkNaMUpsZUdoU1kyaGlUbVkwWTFWbE1HZzVabXRoWVdWc1lrMWtXbWRGWkROa1FXZE1abGRuVm1WWloxTmpaV05yWW1SaWEyTlRaRlJsYjJORFpVeGtVMlJ3WVVaa1YyRlVaMUpqVVdSVllXaGxPV0ZCWkZkblJHZGpaVzFoVG1oNVprVm5UV1ZEWTFOb1RtTlVhR05pZUdWb1lUbGtRbUZvWVVKaldtSlNhRUprY0dFMVkxZG9iR2cxWTNwbVdXSnVaVFZvWjJOR1pVTmpOV1ZyWkdObmVHWkNaRTFoVkdKV1prWmxTbUZHWlZWbk5XaHdaV1JvUW1ab1ozZG1VV1JZWWxKbVVtRlRabXRpTldJeFpVVmhXR1ZPWlUxalZXaFRaWGRvTkdSSVpubG1ZMkpDWlVwbGFHaGtZVnBoVUdOb1pWSmtTMmRrWjJoblFXZElaVXBpVkdWblkzZGxWbWRzYUdOa01XVmhhR2RoTVdabFkxaG9ibVZPWWt4blZHWnJaMFpqZFdkVFptMWlVbWMxWTFOa2VHZFNaM2hoU0dOU1lURm9UbUZIWmxaaVdtVXdaV0psYm1SYVpYcGlZbUV3WVZwaGJtSklZbXRuV1dKRlkxQmxRbWhyWTJWb1NHUjNaRVppUjJkUVpYZG9aMlZpWWxsblUyTkZaWFZuUzJkRmFGbG5VbVpCWWxSblpHUldaa3hoVW1Kc1lWcGtRbWRTWmxaaVJtVmhhRmRpWTJSU1kyTmlSbVV4WTI5b1ZXRldZa3BqU0dGa1pWVmlNV05hWmxSaFJtUkdhRFJoWTJWR1kxcG1NR1ZFWXpKb2RHVlRaRVpvU0dkR1pFZG9SV0V6YUdoaVZHSlVhREprVW1KeFkxVm9lR2hyWVZSb1kyRkdaamhqVW1aSVp6QmxSbVV3WkVObmFXZEZZMDFsU1dKU1pXZGpPV0prWjNkbmFHaGpZazFrUldFNVpTdG9RV2RzWkRCb1ZHWkdZMVJsY0dnclpGQmtNbWM1WWs1aVdtRjNabEZpWW1SUlkwWmpPV1JMWkVWa1JtUktaMFZsUTJjelkwSmpZV2hSWjIxbE9XTnBabHBqYldoclpGVmlZMmhyWVRWaGVtTkZZa1ZtZUdOT1psVm5WV0pHWlVKb1FtTnBZa0ZvYm1GR1pHcG1NR05GWWs5aFVtTTBhRmxsUm1RelluUmpVMkZQWjNkaE1HWkVZMGRvZW1RNFpGTm1UV1JYYURSbkwyWlhZV3hoYUdaNFlsUm5VbVJPWjNSb1YyTnJaVGxtTkdka1lXeG5UV0ZDWmtkb2JtTkNZbGhqWTJJeGFGbGxVMkZsWld0alpHTnJaRkZuVjJZMWFFdGlXbVZJWW14alRHRkdaRWhpUldWa1praG5WV1V3WlZwblZtaHVaVkprZFdoa1oyNWtUV2MzWlVSaGFXTTFZVVppU0doQmFFVmxkMlpDYURGbE9HRkJZMGhsVVdOVlkzcGpSV0puWkUxbk9XWkJaVk5vYTJKMFpGVmxVbWROWm1GalpXY3haSGhqVFdSU1pteGtSbVZrWTBobFJXUktaa1JoWkdWQ1pXaGxkMlJSYUZobFVtaFNabE5qYTJRMVp6RmhSV1pZWkU1aVRXRlZZMWhrYUdSM2FGWmlibVZSWlZCbllXVXhZa2xtWTJaS1lWRm9OV0poWmt0aU1XUXdZVU5sU1daVFpXTm5ZMk5UWWpCaWNHSXJaMU5qUW1kRmFGaGpVV1ZDWTJ0b1NXUkpZVUZsVVdkUWFFaGliV04zWXpGbFUyTjRhRGxvZUdKRFptaG5VbWRPWlVKalZXZHdaakJoWkdWdVp6bGtlbU5OYURKb2VHaHVaVVpvYUdOS1kwMWlaR1pWWW05bFVXaFZZV3RpVVdoTVptTmlSbUp3WjBOa1ltSXlZVXBqYldKaFpsSmxVbVY1YUZSbmJtVk5ZMUZoUjJGQllWVm9XV1ZIYUdoa2MyZEVaMHhsUkdGc1lsaGtTV1JvWTJobE5tWkZZbWRtU1dSUVlVcG9NMlpKWkRob1EyaENhRkZqV21SS1kwWmlOR0kwWTBSaU1tZENaRk5vUVdSdVltaGljMk5GYURObWFHVlVhRlJuTW1OU1luRm5WV1o0Wkd0aVZHaGpaa0ZqZEdSYVkxWmthR1JLWlRab1VtWXlZbEprUW1OYVpUQmxUbVJ2WjFWa01HRnpZbFZsWTJaU1lqQmxaR2RVWTFKbmJHVlhaMlJtUjJjMVpUSmxZMmN5WnpsbVIyWmFaSGhvV1dkVFlWUmxRMkZGWmtOaFYyZFJZMFpqUzJkWVpGZGhVbWRWWTBGaGVXTnpaRzFvWW1ocGFHOW1ZV0ZRWW5obWMySXZZbEpvUVdaVmFHUm5TR0ZTWWtGb1pHSkVZekpvUW1VNVpVWmthV2hKWjA5b1NXaENaREZtUTJSWVkxZGpVV1JaYUdablVXVkZaRVZtVG1GRFpsRm5abUZLWkVWaFRXSjVZMWRrYTJSa1l6UmpXR2RVWld4bE5HVlZaVEJoT1dKclkyRmhiR1pOWTFwblJXWXpaMEZuVEdGWFpWWm5XV1pUWW1WbWFHZHdZMnRvUW1oRFowbG5XbWRKWlZoaWEyVlJaMUJqYm1kRlltUmlTR1JWWkRCaFdtWldhRzVpVW1aMVoyUm1ibUZPWm5aalVtRnRZV05uVjJaRlpXdG1kMk5xWkVObU1HaEtZVk5rUW1ONFlVSmtZV1ZYWm10alNtWjJaVmxtYldOYVozQm5SbVJJWkVwbFQyRmpZWGhsUW1KTllsUm9WbUpHWlVwaFJtUlZabGxrY1dWa1prRmlWbWQzWTBSak0yZDRaamRsVTJSclpqVmpNV05GWVZoa1RtRk5hRlZqV0dSb1kzZGtWbVZ1WjFGb1VHTmhhREZvU1dkVlpXTmlWV0ZaWVZSaVkyVkJZV05oU0dWTVkxUm5iR2hrWlZaaFJtZFpZVGxpVW1kQlkzTm5VR2hoWlZSaFdtVklZV0puTUdkR1pDOW5UbWN5WkZKaWJHUldZbmhrVW1od1lrWmlRbUV3WlZKaVIyTlJaa2xuT0dkS1lubG9WbVE1WWtsaFoyTk5aM0ZrVjJoVmFFRm9WbUZFWTJkaFdtSjBaVmhoYldjMFkweG9ZMmhHWkhCaVEyZGlaREprU21SdFptRmhVbVJTWkhsalZHVnVaMDFpVVdWVVpFVm1NV0ZTWkZObVVtaFdaa2RoVUdWVVpIaG9VbVZKWkRCbk9HUTFZVVprUVdaalowSmlTbWd3WjJkbVNXSkJhRVpvUm1WNlpHTmxSV0ZWWTBwbVJHRXpabVJpVDJaR2FFZG1iR1JRWjBWaGVXaFNaRlJqUjJWNVlYZGthbVpCWjBKaFpHRmxaazVrVldWWlpGZGtRbWhGWjNObVFtZERaVEpvVW1STFpXSmtiR2RuWlZwa1pHVlhZMFZoVldGalpsSmpNR1JrWTFSaVVtZHNZbGRpWkdOSFlUVmhNbU5qWlRKa09XTkhabHBsZUdOWlpsTmtWR2hJWkZab1EyUlNZa0pvYjJkT1lWZG5TR1kwWlZoaFFtaDVhRWxtZEdkT2FFUmhRbWgyWmxCa2EyUTFaRFJqUldkR1ltdGxkMlZWYUZabFZXTktaMVJsYm1SR1pEbGlSMlpEYUhoaFFtWkpZVUpoYTJORVpVaGpXR0owWjJOalRtVm5ZMFZrWldGTGFHbGphMlYwWWs5bVFXSTVaMmRoVldoblowRm5UV1pUWldwbWJHVTBaVlZsTUdZNVptdGxZV2RzYUUxaldtRkZZak5qUVdkTVpsZG1WbUZaWWxOb1pXSnJabVJoYTJWUlpGZG5OV2hEWTAxalJHUkZaa05rVW1jelp6bGxVV1pYWlVGalFtVlhaVUpuUTJFd1kxWmlUMlp1WjA1a2EyTlNhRzVvUW1WeVkwVmpiR1pDWW5Cb1UySm5ZbWhtWW1GU1kwWmxaR2QzWTBSaFoyTnZaVzFqVFdOWFpXZGxhMkpWYUZSaE9HVkNZMGxoVldOclpUTmlRV1pXYUVaalEyTkdhRlprWjJKVmFGaGthR0pvYUhkalVXZFlZMUpvVW1KVFlXdGxOV014YUVWbFdHaE9aazFtVldaWVoyaGlkMkZXWkc1bFVXaEhZVmxsYkdjMFlpdG1ZMk5WYUZsalZHaGxZMFpvVG1KUVpGcGhSMlJ3YUZSb1IyVlNZazVrZDJkRFl6Rm9iR0pYWmtWaGJtWndZVWhrVFdWQlpXdGhibUpIYUZkaWIyRjJZVmRpYUdadlpuZG9WMmRXWVd4aVJtWlhhR3htWjJVMVprOW5lbVZ2WVc1b1NtUm9hRmxtY21KVVpuaG9iMmRPWVdab1JXRk5ZV1ZrUVdOQlkzUmtabWhRWTBaa1NtWlNZbVpsYldKMFlXOW5TbUZGWVVWbksyZEhZMnBsY0doQlpFRmpRbWhTWmxwbVIySm9aWGhsUTJWUllqTmtVV2haWldOa1JXUkdZVEJqVldkVlpIQmhUMlprYUZKa1JtRjZaVlJtUm1kR1pUUm5ZMlpHWmxwb01HWkVaVEprVFdabFowWmpTR2h3WVdKaVJXZ3lZVUptWVdSUlpUQmtOV2R4YUZWbmVHVnJZbFJrWTJaQlluUm5XbU5XWW1oa1NtSTJZbEpsTW1aU1prSmtZbVZyWW5Cb2EyaGxaVlZvYzJaalpVMWphR2d3WkVGblZHSldZMlJtWldoWVpHMWlOV015WW1Oak1tVTVZVWRqV21oNFkxbG9VMk5VWTBoaVZtSkxZa1ZuUm1GS2FFVmxRMlV6WkVKbllXTlJZbTFpT1dScFoySmlhbVl4Wm1ObVQySjRhREZrT1dKWVpGRm5hMk5CWVVobmFHVjBaRTFsVG1WVFkxWmxNR2RGWnpOa1FtVlJZME5rVm1kR1lsZGxWV1p1WkZWaFNtRmxabXRvZDJoT1kyVmlRMk5SWkdWaFVHaFdaWGhvYkdKSVlqRmxSV2M0WWtOa1ZXTkZaV2huUzJKQlowMW5XbVJhWTI1b2EySmFZMFZvTTJOQloweGhWMkpXYUZsbVUyTmxaR3RoWkdOcllWRmtWMkkxWWt0b1dtWklaMnhsVEdSR1owaG1SV0ZrWkVoaFZXWldZMDVuU0docVp6Qm9PV2hsWmtSbE5HZHhaRU5vZVdWb1prVmpVMkY2WW1Oak5XaFRhR2huZEdWVFkxWmtNMlphYUhkblVtVnNZalZpZG1kbFpHMW5PV2R3WjFObVNHUkpabUZvVDJneFltdG5abWhSWjNob2QySk5aVmRoUVdkRlpUZGtUR1JYWTAxb09HRlJhRmhqT1dOU1pGZGtSR05PWnpWaVQyZ3paMDVtVFdSVlpWaGthR1YzYUZaamJtSlJaMUJuWVdFeGFFbGlWV0ZqWmxWbFdXWlVaR1ZqUm1ST1oxQmxXbVpIWVhCalZHZEZaMVZsWTJJMFpGRm5aMmR3WTFsa1dHRjZaamhrUzJOTFluaGlUV1l6WmsxbVUySm9ZalZqVVdOQ1oxSmhhMmRaWmtKbk1XTlNZVUppVm1aYWFITmpXbVV6WjFsa2RtZGlZM2hrU1dkMlpsaGlNR0pHWTBOa1QyaEJaVGxrWkdSSWFGSm5XbVZUWmtOamVHRmFhRU5pV21GSFowcG5lV1JHWlVKbWFHTlpaVlJrYm1kTlpGRm5WR1pGWnpGbVVtVlRZMUpvVm1kUFltRmxXR0pSWlZsaVkyRkZaa1pqTUdkVllWVmxjR0ZQWVdSbVVtaEdaVGRuUjJGQ1pXdGllR1pKWXpGb1oyWTFaRk5oYVdWWlltUmxVbWhwWm1kb09XRllZek5oYUdkWlpGUmtNMlJOWlZoa1ZXTjNZbFZrVUdGalowSmtUbU5SWmxab2EyRTFaRFpqUldaNWFIZG1TV0pRYUZWalVXaHdhRkJrUVdoYVpHSm9TV2d3YUZKaWJXRkJaRkprYkdOa1ltUmlTR2RuWTB4a1YyVlhaamxoUjJoYVpIaGxXV2hUWmxSalNHUldZMHRrUldaR1kwcGhSV1JEWVROaFFtTmhabEZtYldFNVpXbGxXbVZ0WlVGalpHRm1ZbTFoVW1aNllrVm1SV0Y0WjA1a1ZXRlZaMnRrVm1kVWFHMW9iR0l3WWtkb1NHWkNaMEprWkdKR1pVWm1TMmRVWjI1bFZtZEdaRTloZDJWVlpFTm9aR1JwWjFwalJXWmxhR3RvTkdoMlpVWmphR04zWkhsaVUyaEdaelJqZEdKSVpIaGxjMmQwWVU5bWFHWTVaMEZvUjJGNllrVmtRMk5WWjBab2FHSkJaMDVtVW1aTlptOW5VMkZZWWpGblltRmlhRmhoWTJKSFpWRmpWR1V4WTBwaFZtSkNaekZvVm1aRVpETmtkMmM1YUdaa00yYzVZa1pvVW1KdFlXTmlWMmRGYUd0amVHZ3haMU5vYUdSQ1psTm1VbUpCWW5SamQyVlhhR3RrU21WMllsbGhiV1phWm5Ca1NHaEVaRFZqVDJKbFpVRm1NV0pOWkZablZtRm9aRVppVUdVd2FEVm5jR1ZrWkVKamFHZDNZVkZrV0dWU2FGSm1VMlJyWlRWbk1XRkZhRmhpVG1oTlkxVmlXR05vWjNkaFZtZHVhSGhoVFdGaFlUQm5PR2hWWjFCbU1HWTBZelZsWldOR1prNW1VR1JhWVVkaWNHaFVZa2RtVW1aT1ozZGtRMkl4Wm14alYyTkZaMjVqY0dkSVlscGtSV0ZHWTNWa1UyZHRhRkpoZUdSSVpqRmxkMlEwWmxSbWFHUk5ZVUZpV0dGQ1lYTmhOMk5RYUVOaE9HZEpaRWxsTUdKYVluTmlSbWhuWjAxaWVHaGtZMVpsV1dSTllWVmhiR1ozWWtOa1kySkJZbHBoUTJWUFpIbG1iMk4yWkU5bGFHRnZaaTlsUTJoNlp6VmtabVpJWW1ob1VXWnhZVUpoVjJKb1prTm9VV2N6WVZGb1dXaGpaRVZvUm1Rd1pWVm9WV0p3Wms5blpHZFNaVVptZW1GVVlrWm1SbUUwWTJObVJtWmFaVEJoUkdneVkzUmpVMmhJWTBObFZXZFBZVmRqYVdGMFoyUmhRV1ZwWkVWb2JtSklaa1ZoZEdKTFlrTm5NR05rWmxwbVdHUlNhRXBtY0dOUFkyMWhVbWhrWTJObWEyWndZemhuWTJkRlozUmhTV1pqWjFWa2JHaFdaVUppUldKd1psbG9UMlZUWm5OaU4ySlFZVVJuTUdkbVpraGxSbVZ2WmxObVVtUXpZbFpsV1dOaVoxWm1OV2QxWWtObU0yUkNaMkZpVVdkdFlUbGhhV2RhWjIxa2EyTlZaMk5vYTJRMVpYcGxSV1JGWkhoaVRtaFZhRlZuYTJKV1oxUmliV1ZzWmpoalZHZEVaR2RrU1dkS2FERmxPR0ZJWkVObGVtZG9ZMlZvU1dSU1psVmhjV1ZPWWtobVFtRmtZbVJtUW1KdlpGZGpWV2RuWldoa2RHWlNaMmRoZEdaNFpsVmhlR2hPWVd0blVHaG9ZblJvVVdOUllraGhOV2hIWVVobVFtaDBhR1JsUzJkQ1pEUm9abVpFWlZkbk5XaENaRnBsUjJJd1lqSmhSMkpHWTNObVpHSklZbFZqTUdoYVoxWmlibVpTWjNWb1pHWnVaVTVoZG1OU1ltMW5ZMlZYWTBWa2EyWjRZakZtVTJSb1pFSmxVMlpTWTBGb1RXZHJaa1ZpWjJoellUaG1ZbWREWlhOamMyWlhaMVJqTUdOalkwdGpiV2R6YUVGb1ZHZFdZbkJvU21kQlpHcGpUbVJ3WTJGaVFXTlNZM2RoVjJkWVpERmlVbVZHWVd0ak5HTm9ZMWRoVkdodllXWmhXR2g2YUZWa01XaEhaM3BqZEdOa1prMWthV0pzYUZsalkyRlZZekJvVkdkaVpHbG1OV2hzWWxwb1IyRndaVlJpUjJWU1pFNWpkMkpEWnpGbGJHZFhaMFZpYm1od1pFaGpXbVpGWTBaamRXZFRaVzFvVW1nMVpWRmxhR2d4WkRsaFRtaDRaakZqVG1WSFkxWm1XbVV3Wm1KaWJtSmFZbnBrWW1Zd1kxcGxibUZHYUdoaFNtVk5aMlJqVldOdlkxRm5WV0ZvWWtKb1JHTlBhRkZvYkdaTlprOW5XR1ZHWW05bVMySkdaRUZsTW1WU1ltcG5RV05sWWtGaFVtRm5hR1JvU0dKV1pIZG9aV0ZLWmxOak1HaFJaMDFuVldob1pqbGtXR040WVdkbFFtUkpaMVpuTVdjM1lsaG9NR1JDYUhoalptUm9ZM05uYUdSUlkzcG5PR2RpWmxKbVJHSXdaMlppUjJWNVluUmpZV2hSWXpCbk5XWnhaVlZrZUdGcllWUm5ZMkpCWW5SbldtVldabWhoU21FMllsSmtNbWhTWmtKaVltUnJZbkJsYTJKbFoxVm5jMk5qWVZCbVVtVXdaMWRvVldkQ1pXeGpUMkptWjFkaFNtVmpaV05pTW1VNVlVZGhXbU40WlZsa1UyUlVaVWhsVm1KTFpFVmxSbVZLWWtWa1EyVXpaa0pqWVdoUlpXMWhPV1JwWjJKbWFXSnZhRlZrWW1nd1pUUmtPV1JIWlVkaFdtTk9aMVZoVldWcllsWm1WR1Z0Wkd4bE1HRkhZMGhsUW1kQ1oyUm1SbVpHWkV0aVZHRnVabFZsVW1GalpUQmhlR1JTWldWa1NHZG5aVU5vVUdSRlpWbGhOR1ZZWVVaaWEyWXdaa05oTVdSM2FIRm9RMlZxWmxGa2IyZGhaR3htWjJWYVowRmpaMkV3WVV4bVVtZFZaRzlqVTJaWloydGpOV05yWjBoaFYyWTBZV1ZqVEdaRVpVRmxXV2RIWldwb2VHTlphRlZoUVdoS1lreGxSR0ozWWpoamFXaERaRE5rT1daR1kxSmliV2RqWmxkalJXTnJZM2htTVdaVFltaG1RbVpUWTFKbFFXZDBaWGRuVjJOcmFFcGhkbUpaWTIxaldtRndaRVptU0dKS1lVZGxTbWd4Wm1kb1JtaElabXhsT0dGRlpGVmlRV1ZOWTIxalNtZHJaVVZpVEdORVlWaGhVbWhoWmxObGJHZ3daa2xvUldOWFpUbGhVV2hWWmxka1FtRTFabFpuYVdablpWQmtVR1Y0YUhCaFpHSkphR3RvYUdobFpsQmhVbWMwWWtGbVRtRnFaMDFsYjJoV2FGSmlUbVkzWVVOak1HUnpaM0psU0dkc1lVSm9TR1phWWtWaVJtRjFabE5vYldOU1l6Vm1VMlI0WmxKaGVHUklZMUpsTVdaT1owZGtWbVphWVRCa1ltaHVaMXBqZW1WaVl6QmhOR2Q2WWxobmJHTnpZV1poWldGM1ltUm9WbWRJWVhkbWRHaGFhRXRsVTJWRlkwOWpZbVV5WTJ4aWJXSm1hRWRvYkdkNVkxVm5iV2M0WkZGblZtWkZhRkpvVW1GR1kxSmpWV1ZoWVVsaFZHVXhZMHhtWm1WblpYZG1lR0ZJWlVGbVZXUmpZMHhvUjJKdll5OWpWR0pHYUhCaE5HWmFhRU5oZEdVMFlVcGpWMmgwWTFOa1JtWklaVVpqUjJkRll6TmthR0ZVWTFSa01tUlNabkZuVldGNFltdG5WR2RqWjBGamRHSmFaRlptYUdoS1p6WmpWR1I2WjBGbFNtWktaWGhuYkdkeFpVNWhRV0kxWTFwa1VHTnJaamxsUldoT1pteG5WbWhYWTJaaE1tRTFabWhuUkdGdFp6bGtZV2hsYUhobFdXZExaMUpvV0dSVlpWZGlSV05CWjFsa1RXTlJhR2xvVG1aVlpFUmplV0Z2Wkhab1MyaFVZblJpVG1oRFpGRm1TbU42YUVkbE1HVjRabUpoVEdGSFowMWhWbVJVWTIxamJHVXdaVWRpU0dkQ1pVSm1aR1pHWWtaa1MyZFVabTVpVldoU1ltTmlNR0Y0WTFKaFpXUklaMEpsWm1abVoxRmhUbUZDWmxWaGFHTlNaSGhqVW1ob1lrNWlOR05WWmpCbU9XSnJZMkZuYkdSTloxcG5SV0V6WlVGbFRHVlhaRlppV1dWVFkweGtaMmM0WW5SalJXSnRZVUZoWTJSalowaGxZMlJMYUZWaFJHSlZaRlprV0dWclkwNWpWV0ZCWTNwaloySTJaRkJuZVdWTlkycG1TR2d5WkRsb1dHZEhaekJtVm1ZM1pFZGxSbU00WlVkaFEyaEJaRTVpYW1SVFl6QmlkR0pvWjB4aWVtWk5aMnhtVVdaRVluTm5aV0ZRWnpCbmJHaEZaRWhrYkdSb1kxTmpVR1V3WlRWamNHZGtaa0ptYUdaM1pWRmxXR0pTWWxKaVUyaHJaRFZsTVdSRlkxaG9UbWROWjBSblJtTktZWGRuVm1KdVoxRm9VR1JoWnpGa1NXUlZaV05pVldoWlpsUmxaV2RHWTA1aVVHSmFaRWRpU1dSaVpFZG1VbUZvWm5SalEyY3dZbkJsUldaRllXNW9aR05JYUUxalFXWnJaMjVvUjJKWFoyOW1NR0ZFYUd4bmEyWnBZbFpuUldkalprbGhSV1JHWm5CbVpXTmlaVzVvV21SNlpHSm1NR0ZhWTI1blJtTm9aVXBoVFdKa1kxVm9iMlpSWjFWaGEyUlJaRXhpWTJWR1lVbGhWMlZLWW5sbGMyWXhaRnBpTVdkcmFETmxRV0o1WTBKbldtRkdabWRsYUdKU1kxWmlRbVpXWVdWaVdXWklabWRvZVdWallVVmhSbUl3WWxWalZXUndaMDlqWkdKU1lrWmtlbUZVWWtaalJtRTBabU5vUm1oYVlqQmhSR1I1YUZKaFUyUkZaRzVqWkdoSFkwZG1lV0ozWjJKa1FtZHFaMlJoYTJSSVlXeGplR1ZsWmxCaU1XVnJaRUZvVm1Gblp6bGpObVJTWmxkaVdtUkpZbVJrVjJkQ1pHdGhaV2hWWW5Oa1ZXSmphRkpqTUdSa1pWUm5VbVpzWlZkbFpHSkhaalJoY21SWFlsZGxPV05IWmxwa2VHUlpaVk5vVkdGSVpWWmxTMmhGWjBabFNtWkZhRU5tZW1GcmFHTm1VV1Z0Wm1Oa2EyTmFhRzFoVVdWVmFGbGtWbUo0WW5wblJHVnNZa1pqVG1OSFpGVmlRV05XWkVaaVZXaE9aakJuUjJWSVowSmtRbWhrWjBaa1JtZExaVlJoYm1SVlkxSm5ZMk13WVhobFVtaGxaRU5oV1dWWWFFcGxaMmM0WnpkaFZXZG5aR3hrZUdkQlpFSmxUbUV4WVZWbU1XVjRZakppWTJGWVpXdG9XbWRGWXpOaVFXTk1abGRpVm1OWlkxTmtaV1ZyWVdSb2EyZFJhRmRuTldWTFkxcGhSR1l3WlVWbFJtUkRZVzlsTTJGSVpWVm1NR1phWWxabGJtaFNablZrWkdKdVpFNW9kbWhTWkcxaVkyVlhaVVZuYTJaNFpqRm9VMmhzWld0bVZXaFNaRUZoVFdZdmFGVm5NR0pKWkRCbVUyTkhabHBrY0dWR1pVaGhTbU5QYUdOa2VHSkNZazFoVkdOV1kwWmhTbWRHWkZWaE5XaHdabVJvUW1ab1lYZG1VV1pUWkVsalVXSkhhRVZqTkdneVowTmtiR0pzWTAxb1ZXVllZMmhtZDJoV2FHNWhVV1ZRWm1GaU1XWkpaMVZuWTJWVlpGbG1WR1psWkVabFRtTlFaMXBuUjJkd1pHSmtWMmhvWVU1bGRHZERaSGhvWkdWbGFFOWtTR0p3Wmtob1dtTkZZVVpqZFdoVFkyMWxVbWMxWVZOaGVHSlNZWGhvU0dWU1l6RmpUbVpIWWxaaVdtY3dZbUpoYm1OYVlYcG9XbU40WjBwbWNHZFdabFpoYjJaT1lrcGxlV1ZzWm1abVJtZG5ZMFpuY1dSS1lVWmhTV1JMWldKak1tZHNabTFtWldoQ1pERmxlV0pWWjIxak9HTlJZbFpoUldSU1psSm5SbUZTWlZWaVlXTmFaM3BqWkdoUlowMW9VbUZOWjFoaVNHVm5ZalJrVEdKR1lrVm5WbU0zWkVKaVJtSm9aREJvVjJKc1lscGhNR05FWlRKamRHTlRZVVpsU0doR2FFZGlSV2N6YUdoblZHSlVaREpoVW1SeGFGVmxlR2RyWjFSalkySkJaM1JpV21KWVptdGpXbWN3WmtKa1EySjNZVUZrVUdkRFpXdG5jbWRRWlZGak5XRXhZMHBoVW1GV1lWWm1WR0pTWVVwaFYyWmFaekpsWkdFeVpXSmlNMkZPWlVkalptTjRaVGhrVTJkRllraGxWV0ZsWVVobWFHaEZaRTFpVTJkcGFFbGxOV2hFWlZOamMyTnVaRUpuZW1jd1pXTmxUMkpyWVRWb05HZEZhRVpqTldWRlpGaG9WMmhOWmxab1ZHVnRZV3huTUdKSFlVaG9RbU5DWldSaVJtZEdaa3RpVkdodVoxVmtVbUpqYURCb2VHTlNaMlZqU0dWQ1lWZGtaR1ZCYUdOaEwyWllhRVpuWTJjMVowSmlNR0pGYUdKb1NHVkJaWE5oYUdkRFluZG5ZMlpTWVZka00yWkJZVUZtVjJaVlprMWxZbUpsWTJ4aGRHVTBabEZtV0dOYVlrUm5XbU5EWTFaaVRHVlJaRWhoT1dKbFlsWm1VV1I0WTB4bFRtZFVZWE5rY1dOTlpIaG1TV2MzWWxSa2FXVTRZMWRrUjJWVlpYaG1hR1JSWlhobGVHRTBZMUpoUVdaMFpYZGtWMlJyWVVwbGRtSlpabTFuV21Od1owWmtTR1pLWlU5bVkyRjRaa0psVFdoVVpGWmhSbWhLWVVabFZXUTFaV2huU1dkQ1lWbG9lbUpEWTFSblZXaEVaVXRrVVdKRllYaG1WbVZDWlVsaVdXRlhhRlJvUW1aM1pWaGhXR1ZSWTFsbVdXWnNaMGxrU1dGaWFGVm5XV2hNWTJOaFZtRk5hRlJoV21WRVpEVm9aR1ZYWTJ4aWMyVjRZVmRvVkdOdlpGcGtWbVJxWkRoaWJXVk5aa1ZrYTJkdFpsTmhiV1k1WnpWbVdHSlNaREZrWW1KSVoxSm9NV05PWTBkaFZtZGFZakJoWW1WdVpscGplbUZpWlRCb1dtaHVaRVpoYUdoS1kwMWhaR2RWWVc5blVXSlhaakJoTUdaSVkxZGhiR0Z3YUVOaVltRXlaMHBoYldkaFpsSmpVbUo1YUZSbGJtRk5abEZpVkdaRllqRmhVbUpUWTFKa1ZtVlBaV0ZtV0dSUlpWbGhTbVZCWW10bk9XUkJaMnRtVVdkWlpscG5RbUU0WVhsaFEyaENZMVptZDJWTlpqRm5aMkUxYUZkaWFXUmpaRWRvV0dKVFlrVm9TMlJUWW01b1FXRlRabEpvYldNeFltdGlRV1JXWVZwa1NHZFFaMEZrVG1GTFoxSmxlR1owWVRCblEyRnFZa1ZqVG1GUFoyZGlUV013WjA1blVtWkpaMk5uU1dWb1pWRm9VbVJhWTNobmJHSlhaV1JqUjJRMVpUSmtZMkl5WkRsbFIyRmFabmhvV1dSVFlsUm9TR2RXWkV0bVJXWkdZMHBqUldaRFp6Tm9RbWhoWlZObWFXTmtaMmxqWW1kWVpsRm9WV2hoWW10a1pHY3ZaMDlqYTJONFkwNWhWV2hWWm10b1ZtZFVZMjFpYkdJd1pVZGtTR1JDWVVKaVpHZEdZVVpsUzJWVVptNW5WV0ZTWldOb01HaDRabEpqWTJGRVkwNWlWMmhoYUZGak9HRnNZMWRoYW1JMVpuaG5VbWRvWVU1bU5HWlZaekJuT1dGclpHRm5iR05OWTFwa1JXZ3paRUZtVEdGWFpsWm5XV1pUWkdWb2EyWmthR3RvVVdKWFpEVmpTMlZpWTBObU1XWkdaRlpvZW1kc1pXTm1WR041WXpWbFYySkZZMnBrUldkUVlrbG1ibU56Wkc1bVVtaHRZbmRqVjJWQlpqQmxWbVl4WVZaaFoyUjRZVk5vV0dOQlpVcG1kMk5DWkd0a1NXZzNaV0psUTJWVlltaG5WbUZUWVVGaGRHTlFZVVpvVVdOS1pVeGhRV0ZXYUVKa1dHaFZhR1JpYkdSWVoyaG1hR2QzWWxGbVdHRlNZMUpvVTJocllqVmpNV0pGWmxobFRtaE5aRlZvV0dWb1lYZGtWbU51YUZGa1VHRmhZekZsU1dOVlkyTmtWV2RaWm1KbFRHaEdZakJtVFdoTVpVTmpjMk5DWVdWbGJHaDNhREJtVkdacWFHZG1RMlZIWldwalNtaElaMkpoTUdoR1pEbG5VV015WmxKaGJHUldaM2hsVW1Od1lVWmpRbWN3WkZKa1IyWlJZa3BqTm1kTVoxUmlOR1I1WlZCaFUyRlZabTltVldSc1kyTm1kR1JKWlZWaFNtTlpZbFZtYTJNNFpVeGtXV2hzWms1bVQyaFNaVmRtU21kdFkyRmlVbWhTWkhsaFZHRnVaVTFpVVdoVWFFVmhNV1pTWVZOaFVtUldaRTltWVdWWVpsRmlXV2RqWkVWaVJtY3daRlZoVldWd1kwZG5TV0pTYURobWQyWkNZVUppUVdkeFpFVmxlR05yWTNkbVUyRm5ZMjlpUjJaSVprUm1iR0pIWkVkaVNHUm9ZMGRpVW1SdFlsSm1NbWhVWjNoaGEyTk1ZMlZtVVdkemFFWm1WbVJyWjFwb01HUkNZVU5vZDJSQllWQmxRMmRyWW5KalVHZFJhRFZvTVdKS1pWSmxWbUpXWmxSb1VtRktaRmRqV1dSSFoyUm9ObWRYWmxkb09XWkhZbHBoZUdOWlpsTmxWR1pJWkZabFMyTkZZMFppU21SRlowTmpNMlpDWjJGbVVXRnRZemxvYVdGYVptMW5hMlZWWldOaWEyZzFZemRoVW1GRlprbGpUMlZIYUZGamFHZElZMHhqVTJKWlkzZGhXR2hTWTBWb1ZtSm1ZMEptYkdkTFpWSm9XR2hWWkVkbVpXSnJaWGhvVG1KYVpraGxRbWRQWTJab1VXZzRaVE5oVldOclprSmlMMlJDWlZaamMyRTFZMEZoVTJkM1lYSm1UR1ZvWTFwaU5HZFNhRE5pYUdKRVlsZG1WbU13WTFOaFltZEZaRFZqVDJSUlkxZG5OV1JMWjFwaVNHUnNaa3huUm1SSVowVm9aR0ZJWjFWbk1HUmFabFppYm1OU1pYVmtaR2R1WjA1aWRtWlNaRzFoWTJabVpVZGpNR2hDWW1aaVUyaG9ZVUpvVTJWU1lVRmtkR2gzWTFka2EyRktZblpuV1dodFpWcGxjR2RHWlVoaFNtRlBabU5oZUdGQ1kwMWxWR0ZXWmtWalpHSllaRkZpWTJnMlltVmhhMkkxWW1sbVZHaDZhRlZuVm1aRWFHdGxXV015WVVoaGVtUTBZbHBuU0dKVFpIZG5OV0ZDWW1wbmFHVlhaMWxuZUdoTlpXUmxaV0pGWW1ob1FtaE9aSGRuWTJWRVptSmlTR2RzWmtOb1JXUkNaREJqT1dSWVltaG1WV1ZEWmxkaWVXSnZaa3hsVUdOVlpXdGxPV2RSWmpKaWFHZFVhRk5oZUdGU1pIaGlTR2hTWXpGbVRtTkhhRlpoV21Fd1ltSmlibUZhWW5wbFltVXdabHBsYm1KR1ltaGxTbUpOWldSa1ZXWnZaVmxsUjJGcloxRmpRV0ZpWkZabGNHVmhZVnBpYldjMVpFMWhZV0ZTWVZKbGVXSlVZVzVsVFdaUlkxUmtSV2N4WmxKbFUyWlNZMVptVDJkaFpGaG5VV0paWVdOalJXTkdhREJoVldWVllYQm1SMlJPWkdobVJtZDFabFJpUW1NNVpYZGxWMlZzWlZwbE1HUkVaakpqZEdaVGFFWmpTR0pHYUVka1JXRXpabWhsVkdOVVp6SmhVbVp4WkZWamVHUnJaVlJpWTJKQlpIUm5XbWRXWjJoa1NtVjVZa1ZvTW1WdllVTmxTbVZuWm5Ob01tVkhZMmRpVW1WUlprNWpTR0Y0WmtwbFVtRldZa1ppVjJObVpUSmhOV0p1WkdWbGJXUTVZbUZvWldSNGFGbG9TMmRTYUZob1ZXUlhaRVZrUVdOYVpVdGxVMk5FWTJkaVltZEZaa0ZuZDJoMGFFbG9hV0Y0WXpGaVNtUnJabGxpTjJKSFoxVmtRbVZ1WlZWb1ZXTnJhRlpqVkdWdFpHeG9NR2RIWlVobFFtRkNaV1JrUm1OR1pVdGhWR1Z1WVZWaVVtUmpaekJrZUdSU1pXVm5TR2hDWVZkblpHZEJaR05pTDJkWVpVWm1ZMkUxWmtKaE1HTkZhR0poU0dGQlpYTm9hR0pEWVhkalkySlNabGRtTTJoQlkwRmtWMmRWWkZWbFltUmxaV3hvZEdnMFkxRm1XR1ZhWlVSa1dtSkRZMVpsVEdWUlowaGpPV2hsWWxabVVXVjRZVXhoVG1aVVlYTmxjV0ZOWVhobFNXWTNaVlJpYVdNNFlsZGpSMmRWWm5ob2JtUlJZbmhoZUdVMGFGSmtRV0YwWW5kbVYyTnJaa3BrZG1oWlptMW5XbVZ3Wmtab1NHRktZVTlsWTJGNFpVSmtUV1ZVWWxaaVJtWktZa1ppVldFMVluQmlaR2hDWVVGa2EyWlVZM3BvWTJGYWFFTmxlR2QzWjFkaVdHTnFaMk5oU21STmFFTmhlR0kwWmtobGJtRlJaVVZsWVdjd1ptTm9aR05qWTFaaWIyaFFZMlZrUldoMFlVZGhXbVJFWWxwaVZHUlVaVkpvTUdSNlpsRmtlR0ZuWmtWalkyUlVaRlZrUkdkSllsTmhRV00yWlZGaWFXZDRaRFZoVVdaQ1lsSmliR1ZHYUVKaVJtUnVZVWRtVm1oYVpqQm5ZbVZ1WkZwaWVtRmlaekJvV21GdVowWmphR0ZLYUUxalpHSlZZMjluVVdKVlpXdGhVV1JNWm1ObFJtaHdZME5pWW1ZeVkyOW1lV0ZhWkRGa1kyZzJaVVJtZVdoR1kzcG5RV0YzWjJ0b1ZXRkxhRVZvUm1OSGFFbGtXR05SWTFSbVkyTkdZbHBsT1dGVlpWWmlXbU5UWm1SblVXUnNZalpuVkdWQllURm1OR1ZLYUVaa1oyVXpabEppZVdKdlpVRm1aR1Y2WWpSaFEySldZbWhtYTJSSVoxSm5lV040YUhGa1YyTkNabXRvUm1GbFkxTmlSbVJhWVZabGFHaEtZelpqVW1ReVkxSmlRbUppWld0bWNHRnJabVZsVldaemFGVm5ZMkpTYURCb1pHaFVZMUptYkdKWGFHUmxSMlZrWnk5alptVXdZVlppUjJoYVpuaG1XV2hUWTFSbVNHZFdhRXRpUldSR1lVcGtSV05EWmpOalFtZGhZbEZoYldRNVlXbGtXbVJ0Wkd0alZXSmpZMmhpYjJJM1lWZG5VbUU1WmtSbVFtTXhZbTlrWW1aRVpIbG9NR0YzWTBWbVJHRk9ZMUJpVDJkUllsRmxSMmRIWm1wamVHTkNZbEJvZUdGV1oxcG1UMlZZWm14bFptRmxaMnhvTUdaclpFSmpiR2RvWVRWblZtTlJaRXBvZUdOWVpGRmhTV2Q0WlVwaFoyZGtaRkZpVVdONlpYaG1VMkZWWTFGalZXaGlabVJrYldVeFkydGxVV1pYWmpWalMySmFaRWhsYkdoTVpVWmxTR0ZGWldSaFNHaFZaREJvV21oV1lXNW9VbVIxWldSaWJtSk9ZblprVW1OdFpEbGhaV2RGWW10bFpHUnZaMU5oWjJWb1pXSm5VMlpEWkVab2QyRlhhR3RrU21aMlpGbG1iV1JhWTNCb1JtUklaVXBrVDJaallYaG5RbVJOWWxSblZtSkdaMHBqUm1aVmFEVmljR1JrWWtKalFXWjZabEZtVjJWc1lWSm5RbWhGWVZwbFptWkZhRmhqVG1OTlpWVm1XR1JvWVhkbVZtWnVaVkZtVUdkaFpERm5TV2RWWldOaFZXWlpaVlJuWldkR1owNWtVR05hWlVkbGNHRlVZVWRoVW1aemFHdGlRbVJTWm05blpXRlZZM2xvWjJacllrdGtkMk5WWjNKbVMyRjZaa0poZUdkQlozaG5VbVUyWTBoaVVXTjRaRVZuUjJSVlpIQmpiMkppWVcxaU5XTTJaR0ptZUdSd1ptNWxVV1ZvWlhkaFVHVlFaRkZqZEdKRFkwMWxVV2gwWVZCb1RtTlVZM05pVjJOYVpIbGtjR1IyWmxwbFZHTTFhSGxsVkdGdWFFMWhVV1ZVWWtWak1XRlNaVk5qVW1aV1pVOWxZV2RZWjFGaldXVmpZMFZsUm1jd2FGVmhWV053Wms5b1pHZFNhRVpvZW1WU2FFRmxWbUl5WmsxamVHVTBhREZtV0dKUmFHZGpaR0ZWWTBSbFVXUnVZVkptTTJGQlkySm5WR2N5WnpsaGNXZFJaRUptUVdKVVlXSm1RbUprYUZwa1ZHVm9ZWFJtTm1SSFlqSmhVV2hXWmxsaVFXaHJabk5rVDJSQ1lteGlNMlpRWW14a2JHTlpaRXhoUldJeFpHVm5VR0ZIWkRWb09XVmpaek5oTVdSUVpXRm9lbWQzWVZOa1ZHTklhRlpuUzJaRlowWmpTbUpGWmtOaE0yWkNZbUZrVVdadFpUbG9hV1JhWkcxbGEyWlZZV05uYTJJMVlucG1SV1pGWlhobVRtUlhZbEpvTUdKaVkwUm1VMkZGWXpGb1UyUm9ZMDFqVDJoTllrSmxVV1J5WWtkamJtZ3hZbHBoWTJVd1kyUm5VbWRpYUZoamJHTlhZV0ZpUW1WT1kzSm1VMk5vWmpGbWVHTkhZV2hrVFdaelpsaGxVV0YzYUhObFMyVjNZa1prTm1KWVlVUmtVbVpQWkU5bVFXaEpabUZqVFdaclptUmhkbVJSWVZobWNHZEVZbUZsUm1WT1lreG5SbUZJWlVWb1pHaElZVlZtTUdWYVkxWmlibUpTWlhWb1pHUnVZazVuZG1aU1ptMW1ZMk5YWmtWa2EyWjRaREZuVTJGb1owSmpVMkZVWlVaak9XSXJZVWRuVVdOdmFIVmtUV05CWWxWamJXWlZhRVJqWTJoMlpVcGtlR1ZuWWtWa1ZHaFdhSEJpU21aQloydGtaR1Z3WjJGa1FXSlNZbmRpVjJkWVpqRmpVbWhHWTJ0bk5HaG9aMGhsZW1aQmFFVm5SV1ZEWkc5a1ZHUkhZbFJrUW1aTFpVTmhaMkZaWm1OalQyaFZZbGxrV1dGbFkwVm9WbVZIWjFSa2JXUndZMVJoUjJkU1pFNWhkMkpEWkRGbmJHWlhZVVZtYm1ad1pFaG9XbWRGWlVaaGRXWlRhRzFsVW1JMVlsTm9lR2RTWTNobFJtTkNaMUprUW1STllURm1XbVF3WW1KbWJtZGFZbnBuWW1Zd1pscGtibUpHYUdoaFNtZE5ZV1JqVldOdloxRmlWV0pyWTFGaVRHWmpaRVpuY0daRGFFOWplV1p2WlhablQySm9aMjltYTJaWFptNW9NV0ZTWmtOaFFXSnNabHBrUTJkb1pYTmhSR2RRWmtSbGFHUk5aVTlpVW1KRll6Um9RMlpGWWtsb1VHRm1ZMEpuYUdFNVpraG9hR1EwWm5OaFVHaEdaelZrYm1SSVpXMW1TbVJqWkZka1UyVlJaRXRuVW1aNlpFVmpSR0ZCWkhwak1XUnBaMEZqUW1oQlpFbGtWMkZuWkhSaldtUldaV2hsU21JMlpWSmlNbVpTYUVKaVltTnJaM0JtYTJabFkxVmxjMmRWWTJOa1VtWXhZVUZrVkdoV1lYZGhZV2RLWkhsb2RHWXlZVXRuUldKV1prZGlXbVo0WjFsbVUyaFVaMGhpVm1aTGFFVmxSbWRLWkVWblEyVXpaRUppWVdWUlptMW9PV1pwWkZwbWJXUnNaVU5vVFdKNFkzaGllbVpWWXpGaVpHaHVZMVZrVldKclpsWmxWR1Z0YUd4a01HTkhaRWhoUW1aQ2FHUmxSbUpHWjB0bFZHRnVhRlZsVW1aalpEQmtlR1JTWldOaVJHaE9hRmRoWVdkUmFEaG9iR1JYWVdwaU5XZDRZMUptYUdaT1p6UmpWV1l3WmpsbmEyaGhaR3hrVFdoYVpFVmpNMlJCYUV4b1YyTldZbGxtVTJkbFpXdGpaR2RyWjFGblYySlpabVZoU0dKNlowWm5UR0ZJWVROb1JXZE5aMWxrUldJd1owWmpVMlp1WlZKbk1tZG1aRE5rVFdWNloxSmphbVJPYUhSalYyTnFZMFpvTldOWllrSmtRbVpUWlZKblFXaDBhSGRtVjJoclkwcGtkbWRaYUcxbVdtWndaa1pqU0dSS1prOW1ZMmQ0WkVKbVRXWlVabFpoUm1KS1lVaGtVbVp2WjFOblVHSkNhR2hvTjJGUlpsZGxZMlJ6WjFOamJHUktaSEJqUldSWFlYUmpSbUZWWTFOblVtRjNZa0ZuWjJjNVpFaG5ZV2d4WVd0a1ZXWlpZWHBvYzJobVoxVmtiR0ZPWkZCbFdtZEhhSEJvVkdGSFoxSmpUbU4zWTBObE1XSnNhRmRoUldGdVpIQmpTR1ZhWVVWbVJtUjFaVk5tYldOU2FEVmlVV1V3WWtGalMyWldaRkpuTVdkSFlrZGlWV05OWkVwblltVnRZM0JrZG1kaVpURm1OV1YxWVVaa2EyRTFaVTFtU1dWVVlVWmpXV1ZWWTJ0aU9HTk1aMXBoUTJoa1prOWxVbUpYWkVwaWJXSmhaMUpvVW1kNVpsUmxibWhOWVZGalZHWkZaekZoVW1SVFoxSmxWbUpQWW1GaldHTlJaRmxrWTJGRlprWmlNR0pYWmxKbE5HUXhhRkJoVW1aR1pEUmhWR0ZGYUZsblJtSmpaVVZtY0dWdlkwUmtNMmRPWldKaFJtaERZVEZqUjJGU1puZGxUV1ppWmxSbE1tVTVZWEZtVW1SWFoxRm5OV0pqWVVGbWRHaGFaMVppYUdOS1p6WmlVbVl5WjFKaVFtaGlZV3RsY0dkclptVmlWV2R6WlZWa1kySlNZakJqWkdkU2FFSm9RbVZoWlZobGJXTTFhREprWTJNeVpqbGpSMlZhWlhobFdXRlRZVlJvU0dOV1owdG1SV05HWjBwb1JXVkRaak5oUW1OaFlsRmhiV1E1WVdsblRXZHBZVVpqWkdoSloxVmhRV1pzWWtGaFZXWkpaVTFsUm1GUlpUQmhaR1ZFWlZkaFkyZzFaVlJqVkdWM1pWWm1VR0ZSWTBWbFIyWkdaek5oTVdWUlkyVmphMlJXWkdaaFMyWnFaemhsUTJaUFlrRmhaR00wYUZGamVHY3haQzlrUTJRd1lWbG1NR0ZDWlhkaldXZ3dZVXBuWjJkdlpsSmlVV2hJWkd0bFNHRmpaekZsV1dGVFltVm1hMkZrWVd0a1VXaFhaRFZoUzJWYVlVaGtiR05NWVVaaVNHZEZaV1JoU0dSVll6Qm9XbUpXWkc1aVVtaDFZV1poYW1oMFozWm1WR2RZWkc5alYyRkRabXRoVm1RMVlWbG9RbUZDWlZOa1VtVkJablJvZDJSWFkydGpTbVIyWWxsa2JXaGFaWEJuUm1SSVowcGxUMlZqWlhobFFtUk5ZVlJpVm1GR2FFcGlTR1ZSWkRGbmNHZGhZbEprWjJjclpWTmhWbUUxWTFKbFUyaHJaVFZuTVdGRmFGaG9UbU5OWVZWb1dHRm9hSGRsVm1adVlsRmlVR1poWnpGaVNXRlZaV05uVldGWlpWUm9aV2hHWWs1alVHRmlZMFJvTkdOdmFGVmxVbVpPWVRkbFEyWXdZV2RqY21SRmFHMWtXbVJpWVZwbFJtZHNZMjVpVTJkcVoyaG9OV1JJWWpKaE9HZzFZVmxrUW1KR1pHNW5SMlZXWTFwa01HTmlhRzVpV21GNloySm1NR1phWlc1bFJtWm9aVXBpVFdSa1kxVm5iMlJSWmxWbmEyWlJZa3hpWTJGR2FIQm5RMmhpWmpKbGIyRjVZMFZqYkdaNFozbGtVbUZZWmsxaVJHaE5hRlZoTVdkT1lsWmxVbUpXYUZkbFdXUklZVkprUldWalpFSmtWV1pRWkVka1ZXSndaa1poWkdKUlpVMWlUMk5SWlVobmRHUTBZbU5tUm1aYVpEQmhSR2N5YUhSalUyRkdaa2hvUm1KSFpVVmhNMkpvWlZSaVZHVXlaMUppY1dkVllYaGlhMlpVWkdOa1FXUjBaRnBsV0dWcllWbGhRbWRFWVRKblVtTkxZV0prYkdJNFkxcG1aV0ZXWTJObVNXTmpabEZuVldkVlpsUmhWV0ZXWTFkaVNXWkNaRlZsSzJaallqSm9VbUpIWW1ObE1tUnphR1ZvV21SdVlWWmtTMmhGWTBaalNtRkZZa05uTTJoQ2FHRm9VV1p0WkRsamFXTmFabTFqYTJGVlptTm5hMkkxYUhwbVJXVkZabmhpVG1GVmFGVm9hMlprWmtkaWFHWkpZemhqUjJSSVkzUmxRbWhaYUhsa2VHSkxZbFZsYldkclpGSm5ZV013WlZabVVtZEthRWhrUVdORFlVUmlNR05rWjNKa1YyWlNhRkpuYm1SUFpYcGhiR1UwWlZWaE1HZzVhR3RuWVdSc1lVMWlXbWRGWlROblFXWk1aRmRsVm1WWlpGTm5aV1pyWVdSa2EyRlJZVmRsTldOTFpGcGtTR0pDWlVOaVIyWkdZWE5sWkdoSVpGVmhNR1ZhWVZaaGJtUlNZM1ZqWkdadVkwNWpkbVJTYUcxbVkyTlhZa1ZvYTJaNFpqRm5VMlpvWkVKaFUyRlNZa1ppT0dNMFlVVm1lR1JHWkdobFRtUklaVkpqYm1kV1kxUm5XV0ZMWldWak1XRk9ZVU5pUVdKQmFGRm9SbWhSWTFGblkyUTFZMDltUldSR2FEUmxRV0ZJWmpGaldXWlNaa0prZDJZMloxSmxWR1E1WVVWblVXRnRZbXhqTldkWFlVUmpiR0ZoWjBwa2QyUmFhR1JrU1daUlpIQmlTMk5qWTBGaFFtZEhZbUZsUldaQ1psUmlSMk5TWlU1b2QySkRhREZsYkdSWFlVVm1ibWR3WTBoa1dtUkZZVVppZFdOVFlXMW5VbUkxWkZOamVHUlNaWGhuU0dGU1pWVmxSbVJIWTFaaU1XVndZV0pqYldNMVlUWmtXV1F5WjNoaGJtVkdZbWhvU21OTmFHUmpWV2R2WlZGa1ZXTnJZVkZuVEdSalprWmtjR1pEWjJKbE1tUkthRzFsWVdGU1lsSmllV0ZVWjI1bGRHVlVZbFJsUm1WQ1pWSmhRbVI0WmpGamEyVmhaRmhtVVdkWlkyTmtSV1ZHWWpCalZXUlZZM0JoVDJGa1oxSmhSbVY2WlZSblJtZEdaVFJsWTJGR2FGcGlNR05FWXpKamRHWlRZVVpsU0dScllWTm1ZV0ZFWTBKa1ZHVlNaa2RoVW1VM1oweGthR0pyWTFCa1ltSkJZWFJsUW1SWVluaG5TV0Z0WkZKbWVtUkJhRFppU21KcVpXUm5iMlZWYURCaWMyTlZZbU5vVW1nd1oyUm5WR0pTYUd4a1YyWmtaRWRrTldVeVoyTmtNbWc1WjBkbldtaDRZMWxpVTJoVVkwaG9WbWRMWjBWbVJtVktZVTFvV0dOM1pITmtVMk5SWm0xbVVtZHBZV1JsVW1GUlpsVm5ZbVpzWTBwa2VtaERZVVZrVm1OT1prUm9WV1JzWlVKbVRtTlRhRVpoTUdORlp6TmxRbVJVWTBObVZtUXhZV2RoVkdodWFGVmtVbWRqWXpCbGVHSlNaV1ZuU0dSQ1lWZG9aR1pCYURsbGNtRlZabWhtVW1WNFoxSm1hR1pPYURSalZXUXdZemxuYTJKaFpHeGlkR1ZPWTJGa1JHWm5hRXhvVldGc1kxbGpTR1pDWVRCalpHUTBabGhqVjJVMVkxTm9ZbVZZWTJ0bFdHSkdZa05uVm1SdFoxWmpWV1F3WmxOb1ZtTnRaMEZrVkdObFlteG9iR1oyWVZKa2JXTmpZVmRtUldKclpYaGtNV2hUWldobFFtaFRabEpvUVdKMFozZGxWMk5yYUVwaWRtZFpZVzFuV21Sd1lrWmxTR1ZLWVU5b1pXTXdaMUZvTTJWQ1pWWmhSbVpEWTBablZtUnJZbFZrWkdWQllWSmtjMmhSYUZka2VHRlphRk5pYUdGS1pERmpVbVpSWTJkbVJXZFZabGhqVG1aM1lWRmhRV2hyWkd4b1lXSXhZMGxtVldKaloxVmlXV2hVWW1WalJtZE9ZVkJoV21OSFpIQm9WR0pIWlZKbVRtVjNaVU5qTVdkc1psZGxSV1p1WTNCbFQyRmlaMVZvTVdKRloxTm1iV05TWVRWaVUyRjRZVkprZUdkSWFGSmpNV2RPWkVkalZtTmFaakJsWW1GdVoxcGxlbUZpWWpCbldtaHVZVVppYUdoSlpGbGhVR1ZSWlU1b1JHZFlaVUpvU1dkWlltWmxhR0p6WkVkaFMySXlaRzlqYkdKYVp6RmxhMlp1YUVGb2FXTmtZVnBvU0daQmFFVmhTV2RSWmxaaVVtUklaMWxuU0dKd1prdG9VR2g0WTFWaE5HZFhaVlpvYkdabVpHWm5RbWM0Wml0aVIyTlNZekJrYzJWUFkxRmpXV0UwWTFabmJXUk5ZVUpoU0dOWVlURm1jMlZGWnpObmFHZFVZbFJuTW1oU1ozRmhWV1Y0Wld0blZHTmpaRUZuZEdGYWFGWmthR1JLYURabFVtSXlhRkpqUW1SaVltdGhjR1J6WjAxaFZXVnpaMlpsWW1oQ1pEQmpSbVJTWlVKbVZtTTRhR1JvUjJNMVp6Sm1ZMkl5WmpsbFIyUmFaM2hoV1dKVFkxUmxTR05XWVV0b1JXTkdZa3BoUldaRFpqTmlRbU5oYUZGamJXUTVaSEZtU21GWGFHdGhTbUZqYUdkb1FtUTNhRTlvYTJGNFprNWhWV0pWWld0blZtUlVaRzFoYkdjd1pVZG9TR2RDWTBKb1pHVkdZa1ppUzJaVVoyNW1WV1pTWW1ObE1HSjRaVkprWldoSVkwSm1aV2hKWkVoaFVXSnFhRlZrYUdNNVlYaG5WbUl5WWpWak5HVlVaREZuVG1WclpHTm1iR1J2WmxwblZHTXpZVUpvWm1kSlptaG9OV2gyWm1Sb2JXY3hZbXRuVVdSWFpEVmlTMk5hWlVoaGJHSk1aMFpsU0dkRlptUmtTR1JWWmpCbFdtRldhRzVrVW1OMVkyUmtibVZPWkhaa1VtaHRZMk5qVjJSSFkyaG1aMmRQYUVGbGFHUkNabHBvVW1aQ2FHZG5UbU5YWjJ4a05XUjZZbGxuYm1nMVptZGhSbUpEYURWb1QyRktaVEpqYzJaRlkxUm9WbU53WWtwblFtZDZhRTVsYkdKWVkyaGthR2gzWTFGaVdHUlNZVkpsVTJGclp6VmhNV1JGWVZoaVRtZE5ZbFZqV0dWb1puZGhWbVp1WTFGaFVHRmhhREZtU1daVlpXTm9WV0paYUdKaVRHZERabWRoU0dGYVlVZGpSbWRVWTBSalIyYzFaSGRvUm1Jd1psWmxWMlJEWTI1bFRtWklZazloUldkRllqWmlUV1JUWVhobE5XRlJaRUptVW1Gc1pWbG9RbVZHWkc1bVIyWldZVnBtTUdSaVkyNW5XbVY2WldKak1HSmFaMjVtUm1ab1pVcG1UV0prWTFWb2IyaFJZVlZrYTJOUlkweGpZMlJHYUhCaFEyWmlZakpsYjJGNVpFVmpiR0Y0WkhsbFVtVllZMDFtU0dKTllsVm9NV0ZPWmxab1VtVldhRmRqV1dKSVkxSmhSV2hqWkVKaFZXZFFZa2RvVldOd1prWmlaR05SWm1OalQySmFaR3hqUm1RMFltTmlSbWRhWVRCalJHVXlaSFJrVTJGR1lraGlSbWRIYUVWbE0yRm9ZbFJtVkdNeVpGSm9jV2RWYUhobWEyUlVZbVZqVVdKS1kxWmlabU5DWVVwb05tZFNZekprVW1SQ1kySm9hMkp3Wkd0a1pXWlZZbk5pVldOaloxSmhNR0ZrWjFSbFVtRnNaVmRoWkdkSFlUVmxNbWhLWVhsb1kyTlFZazVuUW1kb1pFVm9WMkZJWm5OalRHTldZVUptV21WTmFGTm5TR00wYUZob1JtaDVZMDFtTW1oTVpucG9iR2haYUV0aU1HSlpaM2xpUjJKVlpsWm5SR1pCYUhkaFdtZENZa0ZvYldKR1lXNW1RMlZZWTJ4b1VHRlBaMUZuVVdOSFowZG9hbVY0WkVKaFVHaDRaVlprV21KTGFETmtiR05PWlZoaloyWTVZM0psVldOb1pWSmplR2hTWTJoblRtUTBaRlZqTUdJNVlXdG9ZV05zWWsxaldtUkZZek5vUW1GWFkyTmtNV2RaWWxObVpXWnJZV1JrYTJGUmFGZGxOV1JMYUZwalNHZHNZMHhrUm1GSVpFVmhaR05JWlZWbU1XUlNaMVpuYm1RNVkzcGtaR050WkhSbk1HZGlZa2RuWTJGWFlVVmxhMko0WXpGbVUyVm9aMEpqVTJoU1prRmtkR0YzWWxkbWEyVktZM1puVUdVeVoxbGlLMlpZWkVSa2MySkRZMDVvYUdGQ1lrVmpTR1pXWkVabFdHaERaVVZtTkdab1kyWmxVV0ZPWW1GaFVXSllZVkppVW1kVFpHdG5OV0V4YUVWbldHRk9aazFpVldSWVkyaGpkMlZEWWpGbk5HRlFhR0ZuTVdOSlpWVmxZMk5WWkZsaVZHTmxaRVpsVG1kUWFGcG5SMmR2WWtKbVdHZEZaV05sYkdSWFkxSmhaR0ZYWkVkbGJHZENaMGhuV21oRllVWmtkV1JUWjIxblVtYzFZbE5vZUdWU1pIaGlTR0ZTWWpGa1RtRkhaVkpsUW1Fd1pHTmlTR05aYURkaFltZ3dZMEpoYUdGUVowSmtTbWhOWTJSaVZXaHZZbEZsVldGclpGRmlUR2RqYUVabWNHTkRZV0puTW1KS1oyMWlZV0ZTWVZKak5tTkJaRlptYTJkUlkxUmxSV0l4WjFKb1UyRlNabFpuVDJGaFpsaGpVV1paWjJOaVJXWkdhREJsVldaVlpIQm1UMlJrWkZKblJtaHphRlJoUm1WclozTmxUMmRDWlRoa2JtZEJabE5vV1dGWVoxZGxWR1UwWmxWblUyVnVhR2hsV1doVlpXMW9VV1FyWlZob1ZXTndabVprVDJkVloyZGxZMlZZWjJ4bmNHWjZZVlJqYTJJMVpVSmxZbU5yWlhCbGEySmxhRlZpYzJSVlptTmxVbWN3Wm1Sa1ZHTlNaMnhpVjJKa1prZG9OV2N5WTJOb01tRTVabU5uV21JeGFEaGpOR1pVWWtoaVZtWkxZVVZtUm1aS1owVmtRMmd6WTBKbVlXTlJaVzFrT1dScFlscGpiV1ZyWWxWa1kyZHJZVFZpZW1kRVlUQmhkMkphWmtkbFVXaENaVWRvVVdKRFpsRm9lR0pXWmxSak9HaFVaMHhoVm1ZNFkxcG5RMkY1WlVWb1dtSkthREJpU1daRFkweGxWR1JKWWxoaVNtZHNZakJrY1dkRGFIaGtkMmcxYUZOamFHUk5aaXRsVjJWcmFFNWhhMlJRWTJob2RHSlJaRkZqU0dnMVowZG9TR1ZDWjNSaFFtUk5abmhvTUdGb1lsTmlSV1pTWlV0bldtSklZbXhoVEdaR1pVaG9SV2RrWkVobVZXVXdaRnBrVm1WdVkxSm5kV1JrWm01alRtZDJZVkpsYldoallrMW9SV1ZvWW1obU4yaERhRlprT0daRFkwaG9VV1pOWld0aFJXaG5ZWE5rT0dOaWFFTm1jMlJ6WWxka1ZHTXdZMk5tUzJkb1ozaGhUV1ZIWTFKamEyRkJZVkpuYTJkQlpXdGhUV05XWVZWbWFtaERZVU5vTkdWVlpWSmphMlEwWkRsaFNHWllaVTFoUzJSWFpraGhVbVJoWVZaaGJtRlJaVkJrWVdNeFkwbGhWV1JqWVZWaVdXRlVaV1ZpUm1KT1pGQm5XbVJIWm5Cb1ZHUkhaVkpoYzJkclpsRmllR2hCYUVaa1NHTkVabU5oUTJSTFpsSmtTV0p1WVVWb1EyZEdZVFZvVm1Kb1pWRm9NMlZJWkZKblFtUk9ZMVZuVm1FNVp6bG1XV2RzWTNoaGVtaGlZakJpV21kdVowWmthR2hLWWsxaVpHRlZZMjlsVVdSVllXdGlVV05NWjJObVFXWTBaa3RrU21ScVowWm9UV2hoWjFKa1VtZDVaMVJpYm1KTloxRmtWR2RGWnpGblVtZFRabEpqVm1OUFlWbGpSMkk0YUhsalkyTkZhRVpvTUdkVllWVmljR05QWkdSaFVtUkdZbnBqVkdoQllYaGxlR1ZtWlVoaWVHWXdhRVJpTW1SMFoxTm5SbVJJWVVabVIyVkZZak5tYUdGVVlWSmllV0YwWld0alFXRXdZWFJqWTJOS1pVVm5VV1pPWVVSaU1HaEpZUzlqVTJSVFpFRmpTV1JMWTFGa09HZ3pZa3hqVldSemFFcG5ZMkpXYUhSbVNXRkJZekZqYjJoRFpGQmxVMmhGWkRSbVkyTXlaR1JsVUdSYVp6QmxNR2MwWjFSaVNHSldhRXRvUldaR1pFcG9SV05EYUROaVFtZGhZVkZsYldJNVltbGpUV1JEWW1oaFIyRmpaMmhpY0dJdlpFOWlhMlY0YUU1bVZXRlZaMnRsVm1aVVpHMW9iR1V3WkVka1NHVkNaVUppWkdkR1pFWm1TMkpJWkVoaWEyUTNZbU5tTUdGNFlWSmlaV1ZJWWtKbFYyRmthRUZvT1dOeVlWVmthR05TWjNoaVVtaG9ZVTFoZUdGVlpqRmpTbWRyWlZCaWFHUjBZVkZsVVdaSVpEVmlSMkZJWkVKamRHSmthRXRoUW1JMVltOWlZV015YURWbFMyTmFZVWhqYkdSTVpVWmxTR0pGWjJSaFNHSlZaREJqV21KV1lXNW5VbVYxWVUxb00yaE9aM2xoVW1adFlsWmlSbVZTWW1oak5HVTRZMEptUm1Ka1oxRmtVbVJDWkZwb2RHWlhZMmhqV1dZeVpFMW9hV2ROWm0xa1ZXRnVaa2xvU0dWbWFIcGljR1pOWTFSaFZtTkdaa3BqUm1oVmFEVmtjR05rWjBKaWFHZDNabEZqV0dOU2FGSm9VMmhuYUVabE1XSkVZMGhqVG1KalpWaGhWbVpLWkhkaVZtZHVaMUZsVUdKaFp6RmlTV1JWWjJObVZXUlpabFJvWldkR1owNWhVR1ZhWTBOalNtWlVZVUpqUW1STmFHdG9VV040YUVGaVJtTklhRVJrWTJSRFprdG9VbVZKWW01alJXTkRaRVpuTVdKWlpWSmxVbWQ0WTBoaFVtVXhaMDVtUjJWV1pscGlNR0ppWVc1bVdtRjZZV0psTUdoYVpHNWtWbUZTWWtwaVVtUmtaMUZtVW1kV1kwSmpWV1pTWmtabFpXVkdaVTVvV21OU1lsZGlTbUp0WkdGb1VtSlNZM2xrVkdSdVpVMWhVV1ZVWjBWaU1XaFNZMU5pVm1kTllrSmpUMmN6WTFGbVVXTlhZV3RrUm1Rd1lsVm9WV0Z3YUU5bVpHUlNaRVpvZW1OVVowWmxSbU0wWjJOblJtSmFaVEJvVjJONWFFMW1ZbU5TWlRObU9HVlRZMWhuUTJSM1pGTmtRV040YUhObWJXWkdZbXhqWTJOVWFHSm1hR0phYUZwbVVtVlJZMEpqVVdkU1lqSm9VbWRDWm1Ka2EyZHdaMnRrWldSVlpYTmlWV2RqWjFKak1HaGtZbFJpVW1Wc1pGZG5aR0ZJWkVaaU1tRmxaREpsWTJoVGFGcGpkMk56WTFOaVIyaEVhREJuUkdSUll6Rm5kMmhUWkVkaGJtVTBaVnBuUkdkcFprRm5jMmhKWmpKaVJXSmtZbVptUW1kM1pUaGlVbVpCWjBKaVJtUlJZa1ZpUVdSallsRmlhMk5PWWpCaFIySklaMEptUW1Ga1pFWmhSbUZMWVZSaGJtVlZabEpoWTJJd1pYaGlVbU5sWVVobFFtWlhhR1JtUVdFNFl5OWpXR2hHWTFWa01XZEJaMmhrYzJOelkwZGhkMk5aWXpOaFdtaEJZbFZtVEdSSVlWUmlUbVZJWkVaaWFHVm9hRmhqWTJacmFEVm9jV0ZGYUhsbFJXaGxaVXRsU0dkR1kyTmpTR1ZZYUdkblVtSk9aREJrTUdSYVkxWmlibU5TWlhWb1pHWnVaVTVsZG1oU1pHMW1ZMk5YWkVWbGEyWjRaREZvVTJSb1lrSmtVMlJTWTBabU9XSXJhRWRvZDJOWlozSmhZV0ZxWVVsbGFHRllabE5qUm1GQlpVcGlVV0pPWmtOa1JHTm9ZVEJpUjJOWFluZGpkR0pvWldaalVtTlphR2xpUkdocFlrRmlaR1ZSWjJ4aU9XSnVZMGRrU0dod1owRmhaV2d6WldoaWQyaFdaRzVpVVdSUVoyRmtNV05KYUZWblkyWlZZVmxpVkdabFlrWmhUbUpRWmxwb1IyRndhRlJuUjJoVloyUm9LMmRUYUdob01HWlRZa2RsYVdnMGFGQmtUR0pTWjBwaFoyZElaRWhrUW1JelkwTm1SbUZuWVN0aFZXZ3hZV2hvUm1WRllrWmpaMmh0WTBsbFUyRkpZeTlrV21jeFpHUmxMMk5JYUhobWRHRkJZVmhsTUdodlpWRm5WV05yYUZGaFRHaGpaa1psY0doRFlXSmhNbVZLWlcxbVlXTlNZMUppZVdaVVkyNWlUV1ZSWVZSalFtTnNZMlpsUldGV1pHOW5ZMlZaWjFOa1FtZFJaRTlvVW1WS1p6WmxRbVl4WjNSbFFXWlBhRVZvVVdVdllVZGhRbWRuWW05a1VHWkJhRGxuT0dKVVptMWpTbUpqWTFKa2FtTTBabE5rV0dnelprSmpRV2RZWkcxbk1XVnJaRWhpYTJKNFlXWmpTbU5GWmtsaVNtaEhaR3RrZEdGNVprWmpSMmN4WVVsbVdXSnRZMEppYTJabGFGVm9jMlJWYUdObFVtTXdaV1JsVkdoU1pXeGhWMmhrWlVkb05XVXlhR05rTW1FNVkwZGlXbU40WVZwblIyZFJaV3BsWjJabWFGaG1RV1ZaWTA1blYyZDZaM2RuUkdaVFpXcGllR0p5Wm1GbVEyWm9ZVkZoVG1oclpWbGtNV1JIWjFWbFFtRnVabFZsVldSclpsWmlWR0p0Wkd4bk1HWkhaVWhvUW1OQ1ltUmxSbUZHWTB0blZHWnVabFZtVW1aamFEQm5lR1ZTWlV4blNHWTBaMDloVDJJeFl6Rm1hbVZDYUd4aWQyWTBaa1prVW1Fd2FIVmhVV05WWkVWaWNHaFFabmhqT1dkT1pGZGxhV1pDYUVoalFXSkdhRFZoVkdSalpqQm5hMmN5WkVSaWFtTnZaRWRtWW1OSFluQmtZV0pJWVZoaE9XUlJaMU5vUVdoR1prNW1TR0o1WmxGamFXVk1aRE5rYzJJNFlsUm5NbWMwWW1GaFQyZEZZbmhtTVdkVGFHaGtRbUZUWVZKa1FXVjBaM2RrVjJkclpFcGxkbWRaWm0xaldtWndaa1pqU0dSS1pVOWpZMlV3WkZKalEyaEJZa0ZuVVdWR1oxRm5VV2RqWkRWa1QyaEZZMFpsTkdSRlltNW1NV1ZtWjBObGQySnZZM2hvUjJOVVoxWmlSbWhZWmxabVNtUjNhRlpsYm1OUmFGQmxZV0V4WlVsalZXUmphRlZoV1dWVVlXVmtSbU5PWTFCaldtVkhhSEJvVkdOSFpsSmpUV1JyWTBKaFVXVkZZMXBtVVdKSVlVbG9WR2hNWWtGaFoyYzVZbEppUkdaS2FIRmtVbUpXYUd0bmEySlZaRlZuYTJKRllsTmxVbUp2WlhSbFdtVnFaMlJuTm1oWllWSm5VV0p2WWxGbWJHVTFaRVZrV21Kc1lYTmtXbWhZWkVGbmJHRmxaVkJoUVdnMFpFeG1VR2Q1YURSakwyVlpaMVZtWkdjM1oxSmhNMkk0WmpablZHZEZhREZqVW1kVFkxSmpWbVJQWTJGaldHUlJZVmxqWTJKRllrWmtNR1pWWlZWamNHVlBaV1JoVW1oR1pIcGxSMlJHWVRoaE1XWktaVkprYjJablpsSm5hbUp6WVdWb1ZHWllhR3RoVm1oSFltNW5XV1JUWkVOaWVXTkNaV2xvUm1GU1prRm5abWhYWW1kaGRHSmFhRlprYUdGS1p6WmlVbVV5WjFKalFtUmlZMnRsY0dKclpXVmpWV0p6WTFWblkyVlNaakJqWkdKVVoxVm9NV05aWmt4aVEyZEZabXRuWldaNlkzTm5UMmhNWTJ0aFZXRmpZVWRsYldKR1pFVmtXR2hSWjJOa1NXWllaM3BuYTJkTFprUmthbVZhYUhGbFNtZ3lZa0ZqWVdSSllrRmhSV0Z1WmxobVJXVlNaV1ZvVVdoRllVRmxZbWhCWVhwa2QyVTBhRlJtUkdKcloxSm5UMk5CYUdoblEyWklZMWhoZDJKWloyWmhNbVJhWjFKaVpXTklhRUpvVjJka1pFRmtPV055WWxWbWFHaFNZWGhoVW1kb1pVNWlOR2RWWXpCa09XVnJZV0ZtYkdoT2FFNW1TR0pVWnpGaFpXUkdZbEZoU21SaWFFdG9aMk56WVRsaVUySlVaREZoUkdWaFptcGhaMmRRYUZWaFNHRnNZMkpuUm1aRllsRm5lbWhXWTI1aVVtTjFZbVJrYm1GT1puWm5VbVJ0WVdOb1YyaEZhR3RrZUdneGFGTmthR1ZDWjFOalVtTkNZVVptZDJSVlptaG9XbWQyWkdaaE1tSlpaamxuV0daRVluTmtaR05tWkZWbVRXZEtZa05sUW1GV1pVaGpWbU5uWTBsamJXWlBaR3hrTVdNMFlsTmhTR1p2WlZGblJHZG5aM0JoT1dSWVlWaG9jR1pHWWxob1ZtUktaM2RsVm1adVlsRm5VR0poYURGbFNXaFZaR05sVldOWlpsUmpaV0ZHWjA1b1VHZGFaVWRuY0dkVVpsUmtVbUl3WVhoblZHaDRaVEZuWldoVlkxaG5VV1ZDWjA1aFoyYzBaR3BsU21ORVlVVmtNR05EWlZaalJXSnFaVVprVldaclowWmxWV1JCWVZabU5tZFBabXBpYTJadVpreG1aMlp2WVZsbFYyVnNZMk5rUTJobVlVVm9UV1ZNWW1WalJXaFJaMHhvWTJSR2FIQm9RMkppWWpKalNtSnRaMkZvVW1SU1kzbG9WR1J1WVUxbFVXTkNaa1ZvTVdkaloxTmpVV0V4WjA5aVpHUXlabXRpV1dWUVpURm9jR1psWW1Wb01HaHdaMDlvWkdWU1owWmplbU5VWmtaa1JtWTBZMk5vUm1oYVpqQmtSR2d5WTBwbU5HVkdZVWhtUm1GSGFFVm5NMkpvWkZSa1ZHVXlaRkppY1dKVlpIaGhhMlJVWjJOaFFXTnpaMk5uWm1GQ1prcG9ObU5TWkRKalVtRkNZbUpoYTJOd1pXdGtaV1pWWW5ObFZXWmpZMUpsTUdoa2FGUmlVbVpzWlVwb1pHZERaekZrTkdWT1kxUmhNR2hLWkV0amJtTlNhR0puUjJoRFlscGlRMlJQYUd4bVNtUkZaa05oTTJOQ1lXRmhVV1J0WnpsaWFXVmFaMjFtYTJKVlpHTmlhMkUxWVhwalJXWkZabmhvVG1aVloxVmlhMmhXWjFKaWFXTkNZVFprVjJONlltZGtRV2hLWkdwaFNXRkdZME5rYW1oQ1pYZG1TbVV3WkZGbVpXWmxaRWhrZEdGWFpWcG9VV1JhWkhKbVZHTm5ZV2hpZUdKWVpXaGpjR1kwWTBSbE1HZzRablJtV21WQ1pVSmtVbU5WWVdsbVNtUnZhRVprYUdWS1kxaG9SMk40Wms1bGMyWkVabTFsWkdaSFlsUm9ibVJzWTB4b1JtaElaMFZuWkdaSVpGVm5NR0phWlZaaGJtVlNaSFZvWkdGdWFFNWlkbVZTWW0xa1kySlhaMFZrYTJaNFpURm9VV0pzYUd4aFkyWkNZVEJrVFdoNFpFTmxRMlpGWTJka1NtVnBZazFoU1doUmFFaGliMmRDWVdOb2VHSjBhRTFtV0dWc1kyaGxTbVpEWlZaaFNtZHdaV0poUW1KR1kzZGhTR1JZYUZGa1dXRlNZa0ZpTUdVNVpGVmtRMmhGWW5abVNHRnFaWGRuTVdOT1pubGpRV0ZJWkVwbFJtTkpabVpoWTJaV1psRmlZV1ZrWWtob2JHUlFhRnBsUjJOd1pGUmlSMlpTWTA1bWQyaERaVEZrYkdSWFkwVmxibVJ3WVVob1dtSkZZa1prZFdWVGFHMWhVbUUxWWxOaWVHUjNaVFJsUldReFpUUmlSbVZYWmtGa1VXUllaRWxtVkdaSllUSm5SR1JvYUVwbWRtSlhZMUpqU21oSVptUm9WbU00WlZwaVZXZHNabWRqV0dGallVVm9TbVZNWW1KbWVtZzFaMjFtU1daQ1pXOWplR0ZDWVdwblNtRkRZa3htZDJaSlkxWmtSR2hJYUZGaFlXSlpZbFJvYzJaWlltVmlNR0ZHWW1kaVYyWkZabHBuYTJoa1pGSm1SbVo2WkZSalJtWkdaalJvWTJSR2FGcGhNR0pFWnpKbGRHSlRZa1pvU0dKR1pVZGhSV0l6WTJobFZHTlVZakpoVW1GcFpVZGlhR0ZrWmxGblQyaEZZMjlvVEdaT1kxWmhNR0VyWTBGbFoyZFZabFpvV21abllsWmthMkpqWld0b2MySkVZMlZrUW1Fd1lrSm9WV05TWTJ4blQyWm1hRmRuTkdoeFkyTmllV1ZhWmtsb1NtWkdZVFZvVkdKSVltaGpXV0pHWjFaalFtRmphR3hqV0dNelpXZGxWbWhSWjIxblVtVnBhR05sUjJSQll5dGpZMlJyWVRWaWVtRkZaMFZsZUdaT1pWVmxWV05yWTFab1ZHZHRabXhrTUdKSFlVaGpRbVpDWVdSaVJtRkdaRXRrVW1ReFlUaG5VbU5qWVRCaWVHTlNhR1ZvU0daQ2FGZGlaR2RCWlRsaWNtZFZZMmhuVW1KNFpWSmthR0ZPWXpSbFUyUlZaVGhtYm1aYVpFSmlWbU5NWVZoaVJHWXhaM0JpUldoQlpFcGlRbWRqYUcxaU1XVnJabEZvVjJVMVkwdG1XbVJJWld4alRHTkdaVWhoUldoa1owaGtWV1l3WVZwbFZtRnVhRkpuZFdOa1pXNWtUbUYyWkZKb2JXTTVaMlppWVdaUllVNWhNV0ZSWWxKb1FtZEVZVTlvVVdoMFozTmpVbU5yWmtwb00yaGhaVEpqV1dFeFlVWmhSR1J6YURGbVVHTkhZakZvUVdKYVpURm1SbU5LWlVabVZXZzFaM0JuWkdaQ1lXaGhkMkZSWmxoblVtVlNZVk5pYTJnMVl6RmxSV0pZWWs1blRXaFZaMWhpYUdOM1lWaG9hbUl4WXpCalNtaEdZa2xtWm1SaloxWmxWbUYxWkdWaFJXTTVZVlJuV21OSVpVcGlZV1pIWlZWbU9XZDNhRkZuYVdWSlkxcGtSV0Z1WWtablNHSmtaV3BrZUdkcFoxbGxSMlJTWWpWa1UyVjRZMUppZUdKSVpGSmtNV05PWkVkaVZtZGFZakJpWW1KdVpWcGplbUppWkRCbldtVnVhRVppYUdoS2FFMWpabUpSWVU1b2NtWklabFZpVVdaQlltTmlSV1E0YUM5blltVXpaelZoTm1kaFpWRmtlR0UzWVZSamFXVTRaMUZrUW1GVVoxbG9aV2RUWmxKa05XZFBZMlpoVVdkcllsVmlWMkpyWVVaak1HWlZabFZoY0daUFltUmxVbVpHWm5waVZHTkdZMFpsTkdOalprWm9XbWd3WTBSb01tTjBZbE5oUm1GSVowWmlSMmRIWjNwalJXUnZaVUZqUjJaU1kyaGxWV0YzYURWa2RXSmpZa0prWkdKR1kxWm9aMk53YUhwalVtRjZZbWhsUW1aS1kzcG5SV0p5YUdWalZXaEJZbFZrV21JeVkwRmlNMkZVWTFKbWJHTlhaV1JpUjJJMVlUSmhZMlF5WkRsblIyUmFZWGhsV1dWVFlWUm5TR1ZXWmt0aVJXaEdZVXBqUldoQmFHNWxlR1ozWjFGbGJXZzVhR2xsV21WdFpXdG5WV1pqYUd0bE5XTjZZVVZpUldGNFlrNWpWV05WWW10blZtUlVhR2xsY0dJMlpGWmxVMlJWWVU1blNXVkNaMmRpWVdSQmFHbGlkMlphWkUxaGEyWldaR1pvUzJWcVp6aGxRMk5QWjBGaVpHTTBabEZoZUdReGFDOW9RMlV3WWxsbk1HWkNZWGRpV1dJd1prcGtaMkZ2WVZKblVXWklhR3RvU0daamFERm9XV05UYUdWaWEyaGtaV3RpVVdWWFlqVm5TMlJhWWtob2JHaE1aVVpsU0doRlltUmxTR2RWWlRGaVRtaFhaRU5oZDJSb1lrcG5TR2h6WW5OaVZHUXlabXhsUldkWWFGSm1aMlExWkZGb1oyVktZa1ppVkdOUlkxVmxPV0ZFWjNkbE5HYzNZa3RrZW1SWlpXeG1WR1ZZWTI5aVpHTmxabWhoTkdOT1kwTm1VbVpXWWtKbVZXSXdZMlJrYkdOWVptaG1hR0ozWjFGb1dHRlNZbEpoVTJOclpEVm9NV0ZGWmxobFRtSk5ZMVZuV0dab2FIZG9WbVJ1WkZGaFNHSktZa1ptU1dGbVptSmtSV0paWjB4aVkySlZaMmhqYkdKYVpVZG1jR1ZVWjBka1VtVk9aWGRvUTJjeFkyeG5WMkZGWjI1bWNHZElhRWxvWjJjMFlUaG5VMkZ0Wm5obVZHTlRaWGhoVW1WNFlraG5VbU14WlU1aFIyVldaRnBoTUdoaVptNWxXbU42Wm1Ka01HZFpaM1poUm1KbllYaG5VbVprWkZGblZXTlJZMWRrVldkUlptWmpZMlZHWm5ob1JXRlNZbGRuU21kdGFHRmhVbUZTWVhsaFZHaHVaVTFoVVdoVVprVm1NV0ZTWjFOaVVtRldaRTlrV1dkVVpFVm9lV2RqWkVWaVJtTXdaVlZsVldKd2FFOW1aR2RTWkVaa2VtaFVZa1psUm1nMFpHTmxSbWhhWnpCa1JHUXphRkpuVTJWV1lqTm1PR1pCWVZGa1ZHUmpaV1ZuVEdKVFlqQmpLMk5CWmtKblJXRTFhR05pUVdkMFpGcG9WbWhvWTBwaE5tTlNaREprVW1WQ1kySmthMmh3YUd0a1pXWlZaM05tVldaalkxSmxNR1JrWlZSalVtVnNZbVZvVUdaWFpFRm1NV0pQWlhsbU5HRlZhRUpvUm1ac1oxZGtRMmRTWjFGalpXaEhhRUpsTVdaRmFFRmhTR05DWWt4a1UyUXlaemxoSzJObGFHMW9hMlpOYUdWbE1HVTBhSFptUldSQlpWWm9SR1pGYUdkaVJtVlZZMGhrUVdOdlpEZG9XR0pFWmxWbloyVkpZMFpoYTJWR1psSmpNMkZyYURkbVkyZ3daM2hoVW1abFowaGhRbVJYWVdSalFXUTVhSEpqVldob1pWSmhlR1JTWkdoa1RtVTBaRlZvTUdNNVkydG1ZV1JzYUUxbFVtaFhaMjVoTldGSlprVmpVbVprWWtGb1IyUlJZMmRpWjJWQ1owRmtPR1ZsWjJKa1JHaGFaa3hrU0dZelowVmxUMkZHWWtWaE1HVkdaVk5pYm1KU2FESmhabUl6WVUxa2VtSlNaMmxoTkdGWllsVm9VV1JSWmpCbFIyZElaazFtWkdSQlprVmtOR05TWkVSaWEyaHZabWRuV1dWdFlqRmljR1ZDWTI1bmRHaERaRmRvVW1OQ1pFMWtWR2hXWTBab1NtaEdhRlZrTldGd2FHUm1RbWRvWjNkalVXSllZbEpvVW1WVFptdGxOV1F4WkVWaVdHVk9ZVTFsVVdKWVoxSmpZV0pXWW01aVVXaFFZV0ZoTVdSSllsVmxZMkZWWlZsbVZHUmxZVVpvVG1KUVpscGlSMlZ3WkZSb1IyUlNZMDVvZDJWRFpqRmtiR1JIWWs5aFNHVndaRWhvV21oRlkwWmpkV2RUWlcxblVtRTFZVk5oZUdGU1pIaGtTR1pTWkRGb1RtUkhaRlppV21Nd1kySm9ibU01WjFwblltY3dZMXBsYm1OR1pXaG5TbWhOWldSbVZXZHZZbEZoVldWclpGRmhUR2RqWVVabGNHaERhR0pvTTJkb1kyMWtTMlZvWkc5aE1HaElhRVJvZUdka1oweGlaMlJSWWtaa1IyTm9ZakZpYTJkaFpsaG1VV0ZaWkdOaFJXVkdaREJqVldSVlpYQm1UMmhrWmxKbVJtVjZhRlJvUm1GR1lqUmhZMkZHWVZwbk1HRkVhREpsZEdOaGFGaG9VV0p2WVVwaFJXZ3phRTVqVkdKWVpHaGhiR2R4WkZSbWQyRlZZbFJpWVdkQllVcGpXbWREYUdoaVNXSjZabEJpUTJoell6aGxXV0p0WlVKamEyaGxabFZvYzJOVllXTmxVbVV3Wm1Sa1ZHSlNhR3hqVjJka1pVZGxOV0l5WW1Oak1tTTVZVWRvV21kNFpGbGlVMk5VWVVobE1HWkVaV0ZpZUdjeFpFVmlRV0pJWWtKbVNtVlFZekpsT1dZclpXVmxiV1pyWlUxblpXWXdZalJsZG1GRlkwRm1WV015WjBob2EyWnJhR1ZuVkdSdVkzTmxTbWhHWkVabGNHZENaMlJuUm1KR1kwdGhWR051WVZWaVVtZGpaekJrZUdGU1pXVm5TR2RDWjFkaFpHRkJZamxqY21SVlkyaGxVbVI0WkZKa1oyRk9aekJrWldWVlp6bGphMkZoWjJ4a1RXUmFaMFZtTTJOQmFFeG9WMmhXWmxsa1UyaGxaV3RuWkdWclpWRm5WMlkxWlV0aldtUklhR3hqVEdkQ1prWmljMmhrWjBob1ZXVXdaVnBvVm1odVlsSmpkV0ZrWkc1bFRtWjJhRkptYldSalpsZG9SV0pyWVhoa01XaFRZbWhoUW1oaVkxTm5RMk5HWkhkblYySnJhRXBuZG1kWllXMWhXbWR3WWtaa1NHSktZazlsWTJONFkwSm9UV2hVWjFGa1ZtUklaRlJqVVdORll6ZG1abVJHWjNSbksyUkVhRU5pUldSa1pFaGlaMkZqWm14b1dHZFRaWEJrUldOQlpHNWhSbVExWlZkaVEySmFaRUZpVUdkNGFEUmtZMmhaWVRGblZXVmhZMlJtYUdNMFptRmlTMk5FWWpSa1lXTlRhRlpoT0dad1kwRm1lR1JvWm1aaVNHaEVZM05tUkdaSllVVmhhMmMzWkZGak1tUm9aVlJoVTJoNFlsSm9lR2hJWWxKbk1XZE9ZVWRtVm1GYVpqQmlZbU51WTFwbWVtVmlaekJqV21KMmFGZGtVbVZLYUVobllXWkZaMjluUldSWFl6QmhNR1ZSWmxkbmJHWndaRU5qWW1FeVprcGliV2hoWlZKa1VtZDVZbFJsYm1GTllsRmlWR1pGWnpGa1VtRkJabEprVm1aUlpHRm9WR1Z6WWtSbFYyTnRaWFJuTUdkVlpsVm9jR0ZQWkdSblVtSkdaM3BuVkdGR1lVWm5OR1JqWmtabldtTTVaVXBpVjJGMFpWTm9SbVZJWWtabFIyWkZhRE5pYUdoVVlsUm9NbVZTWjNGb1ZXTjRhR3RuVkdKTlluZGxWV1ZtYUVKbFJtVXdZek5uU21OVGFEQm1WbVJRWkZWb1NXaG9aV1ZuVm1kUlpWVmlUMmhDWlU1aFpXZENaMVpsWjJKRllrWmplV1ZGWm5sbFRtUm5aRFJvVTJWaWFERm9hMmRhWlZKbk0yaDRaRXRsUTJac1prbGpUbVZqWjBSaE9XZFNabE5qVW1aS1ozVmhXbUp1Wld0a1dXVmpaMnhtTldVdmFFVmhSbUY0YUVWaFdHVlhaVTFtVm1WVVpHMW9iR0V3WWtkaVNHaENaVUpvWkdaR1pVWmpTMkZVWlc1bVZXVlNZMk5oTUdWNGFGSm1UR2hJWWpSaVQySlBZVEZuTVdOcVpVVm5VbVZ2YURoblJXZ3hZemhrYzJGSFkyaG1PR1p2YUUxa01XVjBZbFpqUjJGdVltdG5SbWREWkhoaWJHTkhZazVsYTJVNVlURm1WV1JIWkdSbVJXTkxhRk5uZDJOSVpWRmtSR2RvWWs1aVZXVlNZMUZrVW1oQ1psaGxNV0l4WmxoalNHSk9ZWFppVW1KdFltTmlWMmRGYUd0bWVHZ3haMU5uYUdOQ1psTmtVbUZHWkd0a01XZEVhR2hsWTJNNVlreGpSMmhhWTJoa1VHVnVZMHBtVDJGalkzaGlRbVJOWVZSaFZtTkdZMHBvUm1aVllUVm5jR1ZrWVVKbGFHSjNZbE5uVTJKYVlsSmpWbVF3WnpSbmFHUklabnBqUVdaQlkwaG5hbUZaWXpGaldHUnVZekJoUW1aUFpVSmhjR2hrWkU1bWVHUkthR2hsVFdGU1psRm9TR1JOWlVkalNtTkJaME5rYUdod1lUVmxRbVl6WjA1aFYyUkZZMjVqY0dSSVpWcG1SV05HWlhWblUyRnRaRkpsTldaVFlYaGhVbWg0WTBoalZXRnNaMFJtVVdaU1ptdGhiV1JhWm1sblVtUTJaMWxvVVdaelozbGlWMlZyWTFsaVJtUktZVkZpV21oS1lsZG1aMmhWWTBOblptZElZVUprUTJOaVpUSmxTbVZ0WW1GbFVtUlNZM2xoVkdSdVprMWhVV2hVWTBWa01XWlNaVk5qVW1Jd1ltTmhZV0ZYWVd0a1dXaEtaa1ZsT0dFellraG9VV2hWWlVGbFRXWkNZV3huTm1KUlptZG9TV2QzWVU5aVVtZEJhR2RvWm1SVGFFbG1WbVZZWVVOalZtUlBZa0ZsVjJGR1lXRm9VbU50WVdobFFXTlZZWGhuYTJkVVpHTm5RV04wWVZwbVZtRm9hRXBrTm1GU1lqSm9VbVJDWVdKbmEyZHZaWGRqWkdoNFpFNWtZbWRKYUhoaFZtWlFaRkptUW1OalptSm1TV0ZUWWtsbmFXUlBZV3BrT0dWTGFGQmphR2cxWkVoa1VtWllZV3hsWjJoRllVWm5TbWRGWTBOaE0yVkNhR0ZtVVdKdFp6bG9hV2RhWW0xaWEySlZaR05tYTJRMWFEZG1VV0pyWlhobFVXTlZhRkpoTUdSaVpFUmhVMk5WWnpkbFZtSnFZbFpsU21SbVlWWmpPR2RhWmtKb2FtWjRaVmhrU21GNlpEUm5XV1ZRWW5waFoyTkRaV1ppUW1SNFpUVmlWMk40YURGbU9XZGlaa0puVG1ZMFpsVm5NR001Wm10bllXRnNaazFuV21GRmFETm9RV1pNYUZkblZtRlpaMU5sVEdGclpXdGpPR2hFWjJwbGVHTkRZMDVpYm1OQ2FFaGxVR0p1WWtWb1pHZElaMVZoTUdaYVlsWmhibVZTWVhWblpHWnVhRTVvZG1OU1kyMWxZMk5YWWxKaFoyaFJhRGhvUjJkU1lqUm9ZbUZEWm10bFNXZHJabFZtYUdKWlptNWxTMlo2WmxabGJtRlNaWHBrWTJWTVowNWxlR0pzWVVGb1dtZ3hZa1poU21WR1lWVm5OV053WW1SaVFtSm9ZbmRsVVdSWVpsSmlVbU5UYUd0bk5XTXhhRkppVm1Wc1prMWxWV0ZZWVdoamQySldabTVrVVdoUVltRm1NV0ZKWTFWaFkyWlZhRmxrWVdWWllqTmliR1JRWWxwaFIyUndZMVJrUjJOU1owNWhkMmhEWnpGaGJHaFhhRlJsTTJoT2FFeGxWR05yYUVabmRXSlRZMjFoVW1NMVlWTm5lR2RTWVhoalNHWlNZekZpUm1KVVpsWmxaMk40Wms1aWFXaFpaRGhuVUdGU1lrbG5NR1JHWTJkaE9XTk5aMDlqYTJaTllreGtaV1pGWTFGbFRHWmpaMFppY0doRGFHSm1lbU01Wm05bVMyVnNhRlZoSzJWQmFHNWlkR2REWkZGalJXSXdabGxoVVdSUlpGWmxTR1ZhWm5obVdtVk9hRTVpWjJGalozaGhRV2d3WVU1aFNHVmlZMnBtZEdoNllWUm1SbUZHWXpSbVRHRldaM0JuWldaRVpUSmtjMmgyWkVoalYySndZM05sVkdOdVpVWmpTV1JhWlZWbU5HVnRZa1psYTJjd2FGUmlUMkpGWkZGa1MyZEJZMnhtZDJFM1pVTm5hV1JHWWtKb1kySXdZWEJqYW1obVpHeGxRV1FyWkU5aVJtSnpaR1JrVW1KVlp6QmxVR05LWTBOaGMyWTFaazVvVjJnNFoxSm1UR05zWW1ob1YyaEJaSGxsU21WTFlrUm9WV001WVZwalEySXpZbU5oVUdaRVkwTm1jMlJ1WjBsaVEyaENZbUZqVG1SM1ozQmxNR1ZGWlVKblFXRlNhRlZsVW1Sa1lscGhRV0ZUWjI5aU1XZFVZMFJpYTJSUGFFOWxiR1k0WmtOblNHaEVaMEptV0dkbVkxRmhWV0ptWTFCaFJHVlZaMDlpUjJjd1kyeG9hbVZWWmtaaVdXWTVaME5qVm1oR1ptbGhWV2RWWlZwaWRHRmhaMmRvWjJWNlprVm9NMlpDWkVSbFJtTm5aVlpoUjJKT1lrRmxXV1Z3WVVKbVIyTTFaRmhvV21GSVozTm5ZMlJYWVhsa1RtVlhaMWRrUW1jNFpHSm5WR05XWnpSbmVtTmtaV3BuV1dKcVlrWmtVMlpKYUZkblUySlhZVnBuTVdWVFltdG9VV05CWjBobVVXRnpZbkprWTJKRmFFcGtkbWRaYUcxb1dXRm9aRmRoZVdKRlkyRmxVR1ZXWkVWb1FtWkRhRVpqUm1kVlprWmpWV2RaYUc1aFRXWlZaRGxrZDJaT1lrRmhXV0k1WWxGb1oySkpaalptVldkcVprbGlXV0pIWlVSb1kyTXJabGRqUkdaNFoyUm1UR0pvWWxGa1pHZGxZa1ZrYUdSaVprNW5kMlJCWldKbFMyaHBZWE5pWldoWWFFSm5UV0Z6WkZabk1XZHNaRlZsVldoRVozTmxSR2RhWm14aWNHSkZZVk5tYldSUloydGxVMkl4YUdOamQyWlRhRlpuTkdoR2FFZGtWbVEwYUhobldtVXpZbGxqYjJkU1pWVmtXbWh1WlVaa2FHUkpZa1ZrVDJSb1lXeGxSV1pJWWtGaFZtRkhaRTVsVm1od1ltWmxZbVl5WTBGb2VHZEtZMnRtV1dNMVlrTmhlV1JGWlZOaFZtUXlZMlJtVW1aVFpGVm5hR0pyYUU1blJtVTBhSGxvVUdKQllWRmtaMkZWWlZGbU9HZExaa2xqU0dOVllqaGhRV1pTWWtGbWVHVlFhR3htV21od1lVUmtlV2hOWW1SaVVtUjVabFZpU1daVlkycGlWV05YWjFGaFUyRkZhR3RpUm1jd1lYQm1hMkpQWjFabk9HSlNaVmhqYUdSV2FEQm5RV1ZwWjBGa1ZXRmhZVlZuVG1RdmFGVmtNbU5HWjFsblRtZEZaR3RuWkdWSFlWVmlNV1pPWkZoa2EyZFNaRFZvWm1OSFp6aG9ibVpPWmtWa1ZtUmlZME5rZW1OMFpVdGtVbU5CWWxwb1JXRllaVVJpYTJSUFowTmtiV0U0WXpKblRHVnBZbmRsVldOSlpWSm9iMmRvWlZkblVXWkpZVXRoVldWVlpqUmlZbWREWTNsbk1HUm9Za2hpTTJGQlprbGpUV2RzWkVWaFpXZENhR3BuUVdkU1pVNW5kMlpOWW1Oa1QyUlVZbXRoV1dOa1pFVm5iMlJzWkVaaGEySmtabmhvUldGV1pHOWpjMmRIWnpCak9XaHFhRnBpUW1SYVpXUmhVbUp1WTJObFNHVlhaMUpoYkdkSFowMW1aMkZKYURKbFJtVnBZbU5sV21oSmFGaGhhMlpPWWxkbGVtSXhZVkppVldkb1ltOWxXbVZIWWxOa1dXWnVaazFvVkdkdlpHaG9RbUo1WVhOalYyUllZV2RpVFdWNVlVRmxNV0pPWVRSalJHSlZaakZsZDJaVllXZGpZMlp5WVU1bWQyTkpZMjFsVjJOVVlrMWpTR2hRWkZKbmJHZE5aMFpsYm1oMFprcGpSbUZTWVc5bE9XZGtaRUZrVm1oM1psSmpibVJ2YUZWblJHTm9ZWFJuZVdKRGFHeGphMmRTWWxWb1ZHRXdaamhpUW1aVVlrVmhVR2hOWWtobVoyWlZaV05vVW1oS1lVaG9aV1pGWnpWa1VHaGFZbGRvYzJOVloxWm1WbUozWTNsaVUyZG9abFZuYVdKWFkycGpUV1JWWVdGaVoyTlJaalJuUTJKNVpXZGpRMlJQWlVWb1FXVnFZVlppUm1KTllVdGtSbUo0WWtGamJXVkpZbFJsYzJGUlprbG9RV0ZKYUdsbldtTnNaekJtUm1GUFpuaG9OR1ZaWjFOaGJHSlZaRk5qV21WV1pVMW1MMmRpWlROb01XSnRaMHhtYkdablpUbGlSR1JFWjBwaVkyZFBaMEZtVldaWlowZGlhR0Z6WVdoa1IyZDRZVnBsYjJaQloybGpOR1ZNWVU5a2FXTTRaVE5tWkdOVmFEQmlkbWRVWWtKa2EyTXpZa2xuZDJWSlp6WmlWR05wWmxsbldHZEdaa2RtZEdGSGFFZG5lbUk0YUdaaVFXUkRaVmxpY21OSVpESmlNV2hpWkU5alZtTm9ZVmhpVDJSWFkwRmpXV0pPWkhoaFdXSjFaVVZvVTJGRllrSmpRV0ZGWjNSaFNXaE1aRkpqTVdKV1owRmhhMkp2WVVOalQyZHBZVGhqTjJoT1pHMW9XbU5IWTJKbFFtSlpZbEZrVkdWSVkyUmlVbVZQWTJkak9XRjFZVWxtVkdSTllsWmtSR1ZFWm5kbE1tUmFZV2xpT1dWVGFHTmtiR2RPWjNwblZtaDNZVUZpUTJWRlluZGthR1JhWms5bmFXZEZZVGxtVTJnellUUm1UMk5LWTBKbVVXZEZZVU5sZVdWalpHWmtSR2RCWXpSaFJXZFFhR3BsV1dWbFlWcG9lR1V4Wm1wb1VXTm9ZakZvTDJkRllUQm1UV0k0WVVWb2FHUnphR2htV1dWblltUmtUbWRIWW01b05XWlFZa1ZvUW1kR1lWaGlTMlZTYUU1aWMyRlRaa2RpUVdKbFlrdG5kMkp2WkdablVtSnFaV2hrVkdKWFlXdG5WV2RKWjFGa1NHVXhhR2RpU21ocVprbG5jbVpPWTFSblRtWllaMUZrUW1ab1pqbG9WMlYzWWxwaFpXWlNZMEpoZEdRMVlWWmlRbVZaWjJkalJHUnBabXRqSzJkVllWTm5RV0owWjAxb2EyWk5ZMHBuVW1kV1kyaGlVMmRRWVhkbWEySnNaRTlsTVdWdlpIaG1SR1ZSWVVGb1dtRkJZWGhtTVdRM1oxaG5hV0ZOWlVwblNHWjZaREJtYVdkV1lXMWhhMk5RWVV4blFtTTFZbUprVFdSM1oyUmpabUpFWWtKaWMyVkhZMDVuTW1KUlpuTmhWbU5yYUUxbU1XTlNaRkpuZDJGRlprTm5WbWhCWjBSbVNXaFJZakJvY21KSVkybGlSbVUxYUVSaFJtTm5aaXRrV0dReFlYZGtRbVZpWmxKa05HYzVZMUJqV0dKblpUSmxUMk5SWm1OamNtTmlZbGRqUldWWlpFcGpkMmRPWjJWaVJtTlZaWEJsVG1kSlpXaGtWV1JRWmtSblEyTXdZbWxqVEdoSFoxRmxPV0ZDWTNwaE1XWkZaMUppUm1OV1lVRmlWV1ZCWVVKalNHVkdaVWRvT0dONVpXVmpRV2hqWldoblNHWjNabXRtWVdSUWFFWmhOR2c1WVZKa1EySTFaVzluUzJSRlkxSm1hbWRJWWtObVoySlVhRUZtU0djeFlrZGhZbVpIYUdkblRHUllaVWhtTVdnclpGRmliR1IwWmxkbFpXZFJZWE5qUTJGV1pXdG1VV1EzYUVaaFYyWlJZU3RqWm1ab1kwcGtNbWRRWVhkbGEyaEJaV0ZvVm1ObmFHUm9WV1ZDYUd0amNHTmFhRVJsV21KdVkxbG5TR1F4WTJWaFlXRjRZVnBvZEdKWVpFTmpNV1JsWjFWaGFHTmpaVUZrVkdVeVpsWmlZV1JZYURKak9HVmtaV1JvYW1kRllVZGpXbVpXWnpCa2QyaFZZMVpsYUdGR1lWZGhSbWhKWkZaa1IyRlRZa1ZrT1dOV1pFUm9WbWhDWW1ablJtSkNZMHhpVG1SUloyZGxXV1ZqYUhoa1pHSlNaa3hpUTJSSloxQm9aR2hHWmxKb2NtZENZa1ppVldacVpWSmliV1I0YUc5bFEySXhaWEJuTW1ObVkydGxTV2hRWkVGbVNHVkJabGRsVjJWUllscG1WR2hMWmtKbVVXSm9aVXRrUTJaQlkyVm9ZbVZCWmxwaVltTlVhRWRtVG1OaVkxaGlNV0ZyWWtKblJXWXpaM2hvSzJWTVpHMWpTbWc0WmxaalIyTTBZMlpsUldSclprNW1NV1JYWm10bWFHVkVaMUpvUVdGR1pYZG1WV2RvWTBsbmRXUk5hRVJtVldkelptWm9WR0YzWm1GalpXY3lZamxsWTJSR1pGVmtUV0pRWjFabU1XSndZbmhvVFdaU1kwSm5aMlJIWWxkbFZtaEVaVU5pVldKa1l6aGhSV05ZWlhob1RXWlJhRk5pUW1kcFpsaG5NMkpSYUVWb1lXRjNaMHBsVm1OSlpYaGhWbVZYWmtWbVVtTXdhR0puWW1oQ1oxWmlSR0pSWWxGa1JXUXlZMU5rVldJeFpVOWtWbUV6YUVwa1dHSlFaVVpsUW1RNVlWaGhNbVV4WkhkblUySjRZblJsZUdSRVoxVmhWbWRsWTBkb1ZtZDRZekJpV21adVpITm9hbWRNWjJoalVXWXdabFZuTTJWelkwTmxTV0ZWWWtwbGRtZFJhR2hrZDJGYVkwNW5hR0ZvWkZkb1pHRjVabVJtZFdKbFkxVmllR1pxWWxoa1YyaGpZbHBtVW1GVll6RmhaV1JUWTFGaFZXSlhZMlpqV0dZd1kxbGhaV1F3YUVWbWEyUkZZVUprWjJKa1owMW9TR2RuWnpsa1IySkdZV3RuU0doWllrRm1OV1J0WmxOa1UyTnNZa2RrUkdkRVlsSm9UMmhCWjNsbFFtTkRZbGhrVTJGYVkycG1WMkpvWkd0alkyVmpZVUppYzJGQ2FGRm9lR2RLWVhkblVtY3lZM2RqVW1OTVpYaGlaMkl6WVZCb1EyRktabUZsU21WU1psWmxhV05ZWmxWalJtTkZaVTFtYVdKNFpXbG5ZV0Y1WTNCa1QyaGtaREJtTkdORVpGaG5NbVZLYUVSa1IyVldZVXBtVEdKRGFESmlRV1pEWmxablIyaGFaMmxoWW1WWFpHdGpXbU5KWTJkak9HUm9ZMUZuZDJScmFHdG9TR1o0WkRCaVpHRk5aRmhsYTJaelpVTmphbUZaWVVSb1dXZEZZMnRvVUdOU1lXMW1WbVJLWlZsbGJHZzBZbFZvWTJOWVkyeGtWMk5sWTNkbk9XTTNZVU5pWjJGT2FIaGpWR1JTWjA1a01XZEJhSGRtTkdReWFFOWlVbU5hWlhkaVdHVlRaVkZvUkdOS2FHdGlXbWRMWm1GblFXRkZhRzFqVm1aWVlWbG9VR2RpWlVkbGEyRlVaVUprVjJWSmFFOW1SbUpGWjFGbldtSlhaRmhoVW1NclkweG5iV0YwWVhabVZHTlhZV1JqUjJkVlpYaGpOR2R0WVVSa00yaHJZbU5sUldKQlpFMWpVR1ZUYUdoa2NHYzVaMHBoUTJGU1l6bG9SR2hFWVdSbVIyaFpZakJrYUdKa1lsaGplR1ZXWkVGbVNHSkZaRFZrYldOa1lVRmxaMkp2WWxka1NHRlNZV0pvVTJoclpWcGpOR05SWWxSalNXVmxaRUZuYW1Zd1pscGhSMlJEYUVGalNHaEdaRVZvU21GTlpGbG1kMlZDWWxKb1ltZEZZWE5pUzJKaWFFaG5iMkpNWWtObFFXVkZaakprUVdoc1owSm1WMk5JYUZobGNHSllaMUJoUVdaQ1ptNWlVMk50WnpsaE5XRkhhREZrVldWcVpWUm5iR2huWVd0bFZtUjNaa3BrT0dGRlpWZG9XV2h5WldaalVXUkJaMnhsUVdablptOWxTbU5tWlZab2NHaEpZVkZuTVdWallXRmtaV1JXWVU1aVEyVlpaa2RqU21neVpFMWpWbVZhWW5CalZHVnFZbkJtVjJGVWFFVm9WV0YxWTFkaVZXUXhaMkpqWldVeVpVRmlTbVphYUd4b1NtWXdaVlJoUm1Ka1kxUmxaR2hYWXpWamFtSkdZMFZqU21kb1kxcG5SV0pqWnpKblUyaHRaVXBoVTJkV1kybGhUV0pFYUZWbGFtUk9hRWxtVkdONWFFVmhiV1JCYUVabGQyVlVaVVJuZUdSelpVSmlVV05zWVVGb0wyZEJaM2xvUW1SVlprWm5WV0V3WlRCalRHZENaV2huWTJaa1pXMWxRV2RXWTAxa1oyUnJZVTlqV1dSRFozZGplbVpPWW5sa2RHaFVaRWhqUW1GR1pFSmpRbUpFWm5kbFRXZFNaMFprVldFMVprRmlNMmRzYUZSbFYyVlhaamhqTDJOYVkybG9jR0pXWlVwaVoyTXdZamRqUldWRllsRm1lV0pSWjFKb1JXUkhZMWRpV0doelluZG9WMkZVWTA1b1NXUmtaMEZqY0dKTFkwMWlWMk5XWVVwbVdtSjNhRFJsVldKUWFFUmtVbWRFWlVSaGQyUm5aamRuUW1Nd1lXTmlOV05SWTFkak5XSjNaa3hvUm1JNFpEaGxabWhvWjBablkyUldabnBuVVdWbFpFbGxiR2RHWmtKbVRXaG5aVFJrYVdoR1lWZGphMkV6WldKalNHVkNaa05tUkdnelpFWm9RV1JJWkZKaFFXWmFZME5vTTJSM1oxSmlXbU5wYUhSaE5tSkNhRWhtV1dGUVlraGhhMlI0WW14aFJXWm5aMGxrVkdKQllVSmplR0ZyWVZWbU1HTjBZakJvV1dOcGFFRmtPR1ZYYUdwaFJXVmhaMDlrYkdFNFpVTm5WR1JSWjJ0bVVtaFVabEprZDJGdlowcG1NV1ozWVRKb1JHUXlabVJtV21aUlpEQm9OR1YxWkVWbVUyZzFaRTFrUm1aNVp6QmpLMk5HYUZOaVFtUkhZMHBuUW1SM1lWVmpSR0ZzWmxwalRHZGlZMUppUm1SbFkyWm5WMlpLWkdGalIyRlZaMmhqZDJGWVlWSmxaMkZGWmtWaVoyWldZMWhoVUdKQllWWmtPR1JFWW01blNtSndabGRqVW1KU1pITmtTR0pYWmxwblMyUkRaVEJpU21OMFkyVm9WMkZrWW5KaVpXWjZaM2RqVm1GbVpGZGljMk12WmsxaFZXRXdZbU5sVldKclpFMWxXV1poWWxWa2VHZGhaa0ZpYVdRMFprNW5TMlJHWVVsaFRHRlRaMWhpT0doUllsTmpNV1k1Wmtka1YyaHNabmRrTUdoUFkzaGxUbUp2YUZCa2EyTmFaRFJsVldKVlp6QmliV1pOWjBabk1HZ3ZaRUZvZVdNd1ptZGpXV1ZyWWxsaVJHWlJhRVJoYTJobFoxVm5TR0ZDWkVKblNHUXpaR2hsVldGWWFFaGlWbU41WkUxbVJtaHdaVnBtVG1GWWFHZGljR0ZWWVZKaE5XSTJhRkZsU0dkYVlsVm5abVJzWjNoa01HTklabWhuTVdacllrVmtNR0kxWjJGb1UyaG9aRlpsVjJWamFETmxPV1JyWVZsblNHSnJaVVpvUldkdFpGWmxRMmRQWW5oa2JHVk9ZVWhvUm1SS1lVUm5TR015WkZKbVRXRlhhRE5uYzJaSVoweG1hbUp3WkcxbFRtSkRaSEJuTUdoSWFFVm9lR1pMWlZGb01XUnJZVWhoVm1GdVlrWmhiV1ZFWkVKaGIyZEpaRUprUW1NNFltUmtTR1pJWlVsb1pHUmphREJvZEdoRVpXSmxiV0pCWVhOb1VHWnVaSE5pT1dkTFlVaGhXbUV5WTFOaGFHSk9hQzltU0dOM1lrRmthbWhpWlZaaE9HUmFZVVpuUjJGaloxTmhWR2hGYUVsb1RHaGhhREZsVFdkeVlrOW9VV1paWVhWaVFtTjVZa0prVFdaSFowaG9SV0ZoWkVSblJtVTFZWEZtVUdkcVlVRmtUV1pJWTNoaU9XZHZaMDlsTTJaM1oxZG1ZbVpXWTNkbWRHTllZakZqU21ORVlsaGtVV2gwWkhSa1YyVm5hRkZpTm1kTVkwTmpWV1U1WlZoaVZHZ3dZMEZsWldoNFpteGxUV0ZHWTJ4aFJXaGlZVlZsUW1kdlpEaG5TbVZzWkZwbmQyTlFZVzFsVVdaS1lrUmliR1YzYUhobFFtY3laazVpWldaVFpHNWpaMlYwWkZSb1dHTlNZbVJrVEdkblpGcG1RbWhKYUhkbloyTlVaa0pqTUdKTloxaGlZMlpUWjJoa1EyZEJZVUpsZEdjMVpFVmhSbVZyYUV4bVJXUnFabmRrVTJOTGFHZGlTV00yWTBGamVXWnpaek5qVTJReVluUm9hR1pTWTFGbGVHZGxZME5pTUdZMVpEaG1SV05YWkZsaGNtRm1aVVpoVm1GM1pVUmhkMkZqWVZCa1pXZFZaM0JuZG1GUlltaG5kMlpsWTA1aFJXSXdZMGhsWm1odWFFcGtkbUZoWkZWbE9XaDVaRWRpUkdaS1pFTm9WR1ZFWlVwbVFtaEZabEZqUVdSTlptVm1SMmd4WW1ObFRtWnJaa1psY0dWVlkxUmtWbUZsYUV4aVVXaFJaWGhuV0dWVloyaGlkMkpsYUZWaU1XY3daMWhvVTJnMFlVZG9VV1ZUWWsxbVNXSkZabmRoWkdkRWFFWm9NMlZXYURWaFVXTlJZMFZsVkdoaVlWRm5jMmhtWmtGak1XZDNhRFZrUldONVpqQmlUMlJKWWtWbFNXZGlaMkZpVW1STllrWmhXV2huYURoa1JtWldZVkZrYkdSaGFHUmtRbWRHWW0xbFMyY3paM0JpV0dKall6RmhTbWhWWjFkaVNHaDRhRXRuVTJVeFowbGtOMk5IWlhsaGFHSk1ZMVZvV0dNeFp6WmhabWR1Wkd0blZXSmlhREJtTkdWTlowRmhRbU5TWkdObFVXWnNhSE5sVG1SV1oyNWliR2d3WlVaaVdHaENaMUpoVEdoRlpFSmhXV1pFYUVka05HUlNZVXBuVVdnd1lVUmhaV2hCWlRsa1IyaE1hRUpqTVdoNllVWmtRV05LWVd0aFZXVm9ZMDVtYkdGVlpYcG5RbUl3WjAxa2EyUmFabUpuUVdOdFoyeGlVR2hJWVhsaE1XTjBZbUZtYUdJNVpERmxWV1p1WjNoblUyVm1ZMGRvYTJZeVowUm9NMkpHWWxCaVYyaENaR3hsVFdSQ1kwUmtjR1YxWWtOa1YyRk5hRE5rVm1aSVlqbG1VV1ZDYUVaamJHVm9ZbFZuVW1KQlpWQmtVMlpCWW5ObFVHWlRZMmhoY0djclptTmhXR0ZTWW5oaVNHaEJZekZvWldGTFpuZGpUbU5tYUZkbmEyWm9hR05qVm1KclpVcGpjR1JEWlhkbloyZHZZbFpuUkdKQ1pVZGtSR1V4WkRsbGJHSkhaVWRsYUdOTlkwUmpTR2RuWlc5blJHRnBZWGhrWkdSTFltZGlSbWRSWWs1b2QyRm5ZMEZuWTJOR1puQmlWV0ZVWjJ0b1FXTmtaVmhqUldoU1kzZGhZV0ZuWVhOaFJXTlZabmxsVG1oUVoyTmliR2hXWlc1aFVtUkRZelJpTW1SQloyeG1jR2MxWmxkaE1XUjBZMFZuUVdkc1pWcGpNR0paWmxoa2JHUjZhRWRvZDJjMFluVmlVbUZTWkVsalltRlFZMEZqV21oaloxVm5aMlZhWkU5bVkyZEJhRFJpUzJGTFltMW1TV0YzWVV0b1JtUm5aRzVqUTJjelkwNW9RMkZEYUZKbGEyVkZZVWRrTVdKellreGtUR05ZWmxKaFlXWkxZMVZvUldGNGFFSmhkMk56YUVOaFdHTjNaRDFoUFFCdE9YWlVUbFpUVDJaSE5qSnNWV293Y21RclVIcGlUMEpHU1RSU2JsTXdiRzF4YVRWdVNWUTRVR0ZVY1dwdVZURlRiSEZZVUhaVUwwdHlORkZtTTFoemIwUktjemt6VUN0NWRqSmFaMFJoVG1wRVdXczBVVDA5QURBeE1qTTBOVFkzT0RrQVF5NVZWRVl0T0FCbU5tTmhaVEUyWkRZM01UUmhaVGczT1Rka1kyTTJPVFF5TkRVNE1HTXlaREUzTTJJek1qbGlabU5tTURRMk1tWTBOREV3TjJJNVpqTXdaRFF3T0dVMk1XTmhNakEyTVRJd1kyWTJOV015TldGaE5UaGtZalZpTXpWaVlUUmtOR0UxTnpNeE9XSmtaREk0TXpoak9EUTRaR0UyTkRCa01qRTNNbVJqTnprME5UUTROMkUwTjJGbVlqTTNNemhsTVROaU5URmpZemxqWXpjMU9UZzBaR014T0RZM1lqSm1PREExTnpVeU1UWXpPVFV4TXpnNFlUVTVNRFZoWWpZd1lUWTVPV1pqWm1Vek1UazBNV0V5Tm1ZM01EQTROakZtTXpVNU9XUmpZVFExTXpnMll6QTVOekl3WTJWaE1qWTFNV1UxWlRVM1pUQXdNMll3T0dZMVl6Y3pBRUZDUTBSRlJrZElTVXBMVEUxT1QxQlJVbE5VVlZaWFdGbGFZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYb3dNVEl6TkRVMk56ZzVLeThBTGdBb2JuVnNiQ2tBVUhWeVpTQjJhWEowZFdGc0lHWjFibU4wYVc5dUlHTmhiR3hsWkNFQVptbHVaRk5oZEhKbFkwbHVaR1Y0T2lBQVptOXlPaUFBYkdsaVl5c3JZV0pwT2lBQVUwRlVVa1ZESUVKVFZFRlNPaUFBQUFBQUFBQUFBQ3kzQkFCbEFBQUFNalpRY205d1lXZGhkR1ZrVUc5emFYUnBiMjVRY205d1pYSjBlUUFBQUFEOEFBVUFETGNFQUdpNkJBQlFNalpRY205d1lXZGhkR1ZrVUc5emFYUnBiMjVRY205d1pYSjBlUUFBQU1UL0JBQTR0d1FBQUFBQUFDeTNCQUJRU3pJMlVISnZjR0ZuWVhSbFpGQnZjMmwwYVc5dVVISnZjR1Z5ZEhrQUFNVC9CQUJvdHdRQUFRQUFBQ3kzQkFCWXR3UUF3UDRFQUZpM0JBQTB2QVFBYVdscGFRQmthV2tBZG1scFpBQlFNVFpGYm5ScGRIbERiMnhzWldOMGFXOXVBQUFBeFA4RUFMYTNCQUFBQUFBQWVMa0VBRkJMTVRaRmJuUnBkSGxEYjJ4c1pXTjBhVzl1QUFBQUFNVC9CQURjdHdRQUFRQUFBSGk1QkFETXR3UUE4TG9FQUFBQUFBQm91Z1FBWmdBQUFERTJVRzl6YVhScGIyNVFjbTl3WlhKMGVRQlFTekUyVUc5emFYUnBiMjVRY205d1pYSjBlUURFL3dRQUs3Z0VBQUVBQUFCb3VnUUFjTG9FQVBUK0JBQnd1Z1FBSlA4RUFEUkNZWE5sQUFBQXZBQUZBR0M0QkFCUU5FSmhjMlVBQU1UL0JBQnd1QVFBQUFBQUFHaTRCQUJRU3pSQ1lYTmxBTVQvQkFDSXVBUUFBUUFBQUdpNEJBQjJBQUFBZUxnRUFBQUFBQUJvdUFRQVp3QUFBR2dBQUFCcEFBQUE4TG9FQUpDNEJBQTRVM1ZpWTJ4aGMzTUFBQUQ4QUFVQXhMZ0VBR2k0QkFCUU9GTjFZbU5zWVhOekFBREUvd1FBM0xnRUFBQUFBQURRdUFRQVVFczRVM1ZpWTJ4aGMzTUF4UDhFQVBpNEJBQUJBQUFBMExnRUFPaTRCQURBL2dRQUFBQUFBTkM0QkFCbkFBQUFhZ0FBQUdzQUFBRHd1Z1FBQkxrRUFHRCtCQUJvdUFRQUFBQUFBSUM1QkFCc0FBQUFiUUFBQUdrQU1UWlFiM05wZEdsdmJsSmxaMmx6ZEhKNUFERTJSVzUwYVhSNVEyOXNiR1ZqZEdsdmJnQzhBQVVBWmJrRUFQd0FCUUJTdVFRQWVMa0VBQUFBQUFCNHVRUUFiZ0FBQUc4QUFBQlFNVFpRYjNOcGRHbHZibEpsWjJsemRISjVBTVQvQkFDY3VRUUFBQUFBQUlDNUJBQlFTekUyVUc5emFYUnBiMjVTWldkcGMzUnllUUFBQUFERS93UUF3TGtFQUFFQUFBQ0F1UVFBYVdrQWRta0FBQUN3dVFRQThMb0VBR2xwYVFEMC9nUUEyTGtFQUdEK0JBQ3d1UVFBNFA0RUFIWnBhV2tBQUFBQVlQNEVBTEM1QkFCMmFXa0E5UDRFQUxDNUJBQWsvd1FBYVdscFpBQkJ3UFFTQzRNSTlQNEVBTEM1QkFCd3VnUUFKUDhFQUhqK0JBQlFNVFpRYjNOcGRHbHZibEJ5YjNCbGNuUjVBTHdBQlFBWXVBUUF4UDhFQUZTNkJBQUFBQUFBYUxvRUFHbHBhV2xrYVFBQTlQNEVBTEM1QkFCZy9nUUF3UDRFQU1EK0JBQWsvd1FBd1A0RUFNRCtCQUIyYVdscFpHbHBBRTVUZEROZlh6SXhNbUpoYzJsalgzTjBjbWx1WjBsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVk9VMTg1WVd4c2IyTmhkRzl5U1dORlJVVkZBQUM4QUFVQXNMb0VBRTVUZEROZlh6SXhNbUpoYzJsalgzTjBjbWx1WjBsb1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsb1JVVk9VMTg1WVd4c2IyTmhkRzl5U1doRlJVVkZBQUM4QUFVQStMb0VBRTVUZEROZlh6SXhNbUpoYzJsalgzTjBjbWx1WjBsM1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsM1JVVk9VMTg1WVd4c2IyTmhkRzl5U1hkRlJVVkZBQUM4QUFVQVFMc0VBRTVUZEROZlh6SXhNbUpoYzJsalgzTjBjbWx1WjBsRWMwNVRYekV4WTJoaGNsOTBjbUZwZEhOSlJITkZSVTVUWHpsaGJHeHZZMkYwYjNKSlJITkZSVVZGQUFBQXZBQUZBSWk3QkFCT1UzUXpYMTh5TVRKaVlYTnBZMTl6ZEhKcGJtZEpSR2xPVTE4eE1XTm9ZWEpmZEhKaGFYUnpTVVJwUlVWT1UxODVZV3hzYjJOaGRHOXlTVVJwUlVWRlJRQUFBTHdBQlFEVXV3UUFUakV3WlcxelkzSnBjSFJsYmpOMllXeEZBQUM4QUFVQUlMd0VBRTR4TUdWdGMyTnlhWEIwWlc0eE1XMWxiVzl5ZVY5MmFXVjNTV05GUlFBQXZBQUZBRHk4QkFCT01UQmxiWE5qY21sd2RHVnVNVEZ0WlcxdmNubGZkbWxsZDBsaFJVVUFBTHdBQlFCa3ZBUUFUakV3WlcxelkzSnBjSFJsYmpFeGJXVnRiM0o1WDNacFpYZEphRVZGQUFDOEFBVUFqTHdFQUU0eE1HVnRjMk55YVhCMFpXNHhNVzFsYlc5eWVWOTJhV1YzU1hORlJRQUF2QUFGQUxTOEJBQk9NVEJsYlhOamNtbHdkR1Z1TVRGdFpXMXZjbmxmZG1sbGQwbDBSVVVBQUx3QUJRRGN2QVFBVGpFd1pXMXpZM0pwY0hSbGJqRXhiV1Z0YjNKNVgzWnBaWGRKYVVWRkFBQzhBQVVBQkwwRUFFNHhNR1Z0YzJOeWFYQjBaVzR4TVcxbGJXOXllVjkyYVdWM1NXcEZSUUFBdkFBRkFDeTlCQUJPTVRCbGJYTmpjbWx3ZEdWdU1URnRaVzF2Y25sZmRtbGxkMGxzUlVVQUFMd0FCUUJVdlFRQVRqRXdaVzF6WTNKcGNIUmxiakV4YldWdGIzSjVYM1pwWlhkSmJVVkZBQUM4QUFVQWZMMEVBRTR4TUdWdGMyTnlhWEIwWlc0eE1XMWxiVzl5ZVY5MmFXVjNTWGhGUlFBQXZBQUZBS1M5QkFCT01UQmxiWE5qY21sd2RHVnVNVEZ0WlcxdmNubGZkbWxsZDBsNVJVVUFBTHdBQlFETXZRUUFUakV3WlcxelkzSnBjSFJsYmpFeGJXVnRiM0o1WDNacFpYZEpaa1ZGQUFDOEFBVUE5TDBFQUU0eE1HVnRjMk55YVhCMFpXNHhNVzFsYlc5eWVWOTJhV1YzU1dSRlJRQUF2QUFGQUJ5K0JBQkIwUHdTQzJCUHUyRUZaNnpkUHhndFJGVDdJZWsvbS9hQjBndHo3ejhZTFVSVSt5SDVQK0psTHlKL0szbzhCMXdVTXlhbWdUeTl5L0I2aUFkd1BBZGNGRE1tcHBFOEdDMUVWUHNoNlQ4WUxVUlUreUhwdjlJaE0zOTgyUUpBMGlFemYzelpBc0FBUWIvOUVndm9GWUFZTFVSVSt5RUpRQmd0UkZUN0lRbkFBd0FBQUFRQUFBQUVBQUFBQmdBQUFJUDVvZ0JFVG00QS9Da1ZBTkZYSndEZE5QVUFZdHZBQUR5WmxRQkJrRU1BWTFIK0FMdmVxd0MzWWNVQU9tNGtBTkpOUWdCSkJ1QUFDZW91QUJ5UzBRRHJIZjRBS2JFY0FPZytwd0QxTllJQVJMc3VBSnpwaEFDMEpuQUFRWDVmQU5hUk9RQlRnemtBblBRNUFJdGZoQUFvK2IwQStCODdBTjcvbHdBUG1BVUFFUy92QUFwYWl3QnRIMjBBejM0MkFBbkxKd0JHVDdjQW5tWS9BQzNxWHdDNkozVUE1ZXZIQUQxNzhRRDNPUWNBa2xLS0FQdHI2Z0Fmc1Y4QUNGMk5BREFEVmdCNy9FWUE4S3RyQUNDOHp3QTI5Sm9BNDZrZEFGNWhrUUFJRytZQWhabGxBS0FVWHdDTlFHZ0FnTmovQUNkelRRQUdCakVBeWxZVkFNbW9jd0I3NG1BQWE0ekFBQm5FUndETlo4TUFDZWpjQUZtREtnQ0xkc1FBcGh5V0FFU3YzUUFaVjlFQXBUNEZBQVVIL3dBemZqOEF3akxvQUpoUDNnQzdmVElBSmozREFCNXI3d0NmK0Y0QU5SODZBSC95eWdEeGh4MEFmSkFoQUdva2ZBRFZidm9BTUMxM0FCVTdRd0MxRk1ZQXd4bWRBSzNFd2dBc1RVRUFEQUJkQUlaOVJnRGpjUzBBbThhYUFETmlBQUMwMG53QXRLZVhBRGRWMVFEWFB2WUFveEFZQUUxMi9BQmtuU29BY05lckFHTjgrQUI2c0ZjQUZ4WG5BTUJKVmdBNzF0a0FwNFE0QUNRanl3RFdpbmNBV2xRakFBQWZ1UUR4Q2hzQUdjN2ZBSjh4L3dCbUhtb0FtVmRoQUt6N1J3QitmOWdBSW1XM0FETG9pUURtdjJBQTc4VE5BR3cyQ1FCZFA5UUFGdDdYQUZnNzNnRGVtNUlBMGlJb0FDaUc2QURpV0UwQXhzb3lBQWpqRmdEZ2Zjc0FGOEJRQVBNZHB3QVk0RnNBTGhNMEFJTVNZZ0NEU0FFQTlZNWJBSzJ3ZndBZTZmSUFTRXBEQUJCbjB3Q3EzZGdBcmw5Q0FHcGh6Z0FLS0tRQTA1bTBBQWFtOGdCY2QzOEFvOEtEQUdFOGlBQ0tjM2dBcjR4YUFHL1h2UUF0cG1NQTlML0xBSTJCN3dBbXdXY0FWY3BGQU1yWk5nQW9xTklBd21HTkFCTEpkd0FFSmhRQUVrYWJBTVJaeEFESXhVUUFUYktSQUFBWDh3RFVRNjBBS1VubEFQM1ZFQUFBdnZ3QUhwVE1BSERPN2dBVFB2VUE3UEdBQUxQbnd3REgrQ2dBa3dXVUFNRnhQZ0F1Q2JNQUMwWHpBSWdTbkFDcklIc0FMcldmQUVlU3dnQjdNaThBREZWdEFIS25rQUJyNXg4QU1jdVdBSGtXU2dCQmVlSUE5TitKQU9pVWx3RGk1b1FBbVRHWEFJanRhd0JmWHpZQXUvME9BRWlhdEFCbnBHd0FjWEpDQUkxZE1nQ2ZGYmdBdk9VSkFJMHhKUUQzZERrQU1BVWNBQTBNQVFCTENHZ0FMTzVZQUVlcWtBQjA1d0lBdmRZa0FQZDlwZ0J1U0hJQW54YnZBSTZVcGdDMGtmWUEwVk5SQU04SzhnQWdtRE1BOVV0K0FMSmphQURkUGw4QVFGMERBSVdKZndCVlVpa0FOMlRBQUczWUVBQXlTRElBVzB4MUFFNXgxQUJGVkc0QUN3bkJBQ3IxYVFBVVp0VUFKd2VkQUYwRVVBQzBPOXNBNm5iRkFJZjVGd0JKYTMwQUhTZTZBSlpwS1FER3pLd0FyUlJVQUpEaWFnQ0kyWWtBTEhKUUFBU2t2Z0IzQjVRQTh6QndBQUQ4SndEcWNhZ0Fac0pKQUdUZ1BRQ1gzWU1Bb3orWEFFT1UvUUFOaG93QU1VSGVBSkk1blFEZGNJd0FGN2ZuQUFqZk93QVZOeXNBWElDZ0FGcUFrd0FRRVpJQUQrallBR3lBcndEYi8wc0FPSkFQQUZrWWRnQmlwUlVBWWN1N0FNZUp1UUFRUUwwQTB2SUVBRWwxSndEcnR2WUEyeUs3QUFvVXFnQ0pKaThBWklOMkFBazdNd0FPbEJvQVVUcXFBQjJqd2dDdjdhNEFYQ1lTQUczQ1RRQXRlcHdBd0ZhWEFBTS9nd0FKOFBZQUswQ01BRzB4bVFBNXRBY0FEQ0FWQU5qRFd3RDFrc1FBeHExTEFFN0twUUNuTjgwQTVxazJBS3VTbEFEZFFtZ0FHV1BlQUhhTTd3Qm9pMUlBL05zM0FLNmhxd0RmRlRFQUFLNmhBQXo3MmdCa1RXWUE3UVczQUNsbE1BQlhWcjhBUi84NkFHcjV1UUIxdnZNQUtKUGZBS3VBTUFCbWpQWUFCTXNWQVBvaUJnRFo1QjBBUGJPa0FGY2Jqd0EyelFrQVRrTHBBQk8rcEFBekk3VUE4S29hQUU5bHFBRFN3YVVBQ3o4UEFGdDR6UUFqK1hZQWU0c0VBSWtYY2dER3BsTUFiMjdpQU8vckFBQ2JTbGdBeE5xM0FLcG11Z0Iyejg4QTBRSWRBTEh4TFFDTW1jRUF3NjEzQUlaSTJnRDNYYUFBeG9EMEFLendMd0RkN0pvQVAxeThBTkRlYlFDUXh4OEFLdHUyQUtNbE9nQUFyNW9BclZPVEFMWlhCQUFwTGJRQVM0QitBTm9IcHdCMnFnNEFlMW1oQUJZU0tnRGN0eTBBK3VYOUFJbmIvZ0NKdnYwQTVIWnNBQWFwL0FBK2dIQUFoVzRWQVAySC93QW9QZ2NBWVdjekFDb1loZ0JOdmVvQXMrZXZBSTl0YmdDVlp6a0FNYjliQUlUWFNBQXczeFlBeHkxREFDVmhOUURKY000QU1NdTRBTDlzL1FDa0FLSUFCV3prQUZyZG9BQWhiMGNBWWhMU0FMbGNoQUJ3WVVrQWExYmdBSmxTQVFCUVZUY0FIdFczQURQeHhBQVRibDhBWFREa0FJVXVxUUFkc3NNQW9USTJBQWkzcEFEcXNkUUFGdmNoQUk5cDVBQW4vM2NBREFPQUFJMUFMUUJQemFBQUlLV1pBTE9pMHdBdlhRb0F0UGxDQUJIYXl3Qjl2dEFBbTl2QkFLc1h2UURLb29FQUNHcGNBQzVWRndBbkFGVUFmeFR3QU9FSGhnQVVDMlFBbGtHTkFJZSszZ0RhL1NvQWF5VzJBSHVKTkFBRjgvNEF1YitlQUdocVR3QktLcWdBVDhSYUFDMzR2QURYV3BnQTlNZVZBQTFOalFBZ09xWUFwRmRmQUJRL3NRQ0FPSlVBekNBQkFISGRoZ0RKM3JZQXYyRDFBRTFsRVFBQkIyc0FqTENzQUxMQTBBQlJWVWdBSHZzT0FKVnl3d0NqQmpzQXdFQTFBQWJjZXdEZ1Jjd0FUaW42QU5iS3lBRG84MEVBZkdUZUFKdGsyQURadmpFQXBKZkRBSGRZMUFCcDQ4VUE4Tm9UQUxvNlBBQkdHRVlBVlhWZkFOSzk5UUJ1a3NZQXJDNWRBQTVFN1FBY1BrSUFZY1NIQUNuOTZRRG4xdk1BSW56S0FHK1JOUUFJNE1VQS85ZU5BRzVxNGdDdy9jWUFrd2pCQUh4ZGRBQnJyYklBelc2ZEFENXlld0RHRVdvQTk4K3BBQ2x6M3dDMXlib0F0d0JSQU9LeURRQjB1aVFBNVgxZ0FIVFlpZ0FORlN3QWdSZ01BSDVtbEFBQktSWUFuM3AyQVAzOXZnQldSZThBMlg0MkFPelpFd0NMdXJrQXhKZjhBREdvSndEeGJzTUFsTVUyQU5pb1ZnQzBxTFVBejh3T0FCS0pMUUJ2VnpRQUxGYUpBSm5PNHdEV0lMa0FhMTZxQUQ0cW5BQVJYOHdBL1F0S0FPSDArd0NPTzIwQTRvWXNBT25VaEFEOHRLa0E3KzdSQUM0MXlRQXZPV0VBT0NGRUFCdlp5QUNCL0FvQSswcHFBQzhjMkFCVHRJUUFUcG1NQUZRaXpBQXFWZHdBd01iV0FBc1psZ0FhY0xnQWFaVmtBQ1phWUFBL1V1NEFmeEVQQVBTMUVRRDh5L1VBTkx3dEFEUzg3Z0RvWGN3QTNWNWdBR2VPbXdDU00rOEF5UmU0QUdGWW13RGhWN3dBVVlQR0FOZytFQURkY1VnQUxSemRBSzhZb1FBaExFWUFXZlBYQU5sNm1BQ2VWTUFBVDRiNkFGWUcvQURsZWE0QWlTSTJBRGl0SWdCbms5d0FWZWlxQUlJbU9BREs1NXNBVVEya0FKa3pzUUNwMXc0QWFRVklBR1d5OEFCL2lLY0FpRXlYQVBuUk5nQWhrck1BZTRKS0FKalBJUUJBbjl3QTNFZFZBT0YwT2dCbjYwSUEvcDNmQUY3VVh3QjdaNlFBdXF4NkFGWDJvZ0FyaUNNQVFicFZBRmx1Q0FBaEtvWUFPVWVEQUluajVnRGxudFFBU2Z0QUFQOVc2UUFjRDhvQXhWbUtBSlQ2S3dEVHdjVUFEOFhQQU50YXJnQkh4WVlBaFVOaUFDR0dPd0FzZVpRQUVHR0hBQ3BNZXdDQUxCb0FRNzhTQUlnbWtBQjRQSWtBcU1Ua0FPWGJld0RFT3NJQUp2VHFBUGRuaWdBTmtyOEFaYU1yQUQyVHNRQzlmQXNBcEZIY0FDZmRZd0JwNGQwQW1wUVpBS2dwbFFCb3ppZ0FDZTIwQUVTZklBQk9tTW9BY0lKakFINThJd0FQdVRJQXAvV09BQlJXNXdBaDhRZ0F0WjBxQUc5K1RRQ2xHVkVBdGZtckFJTGYxZ0NXM1dFQUZqWUNBTVE2bndDRG9xRUFjdTF0QURtTmVnQ0N1S2tBYXpKY0FFWW5Xd0FBTk8wQTBnQjNBUHowVlFBQldVMEE0SEdBQUVHemt4TUxma0Q3SWZrL0FBQUFBQzFFZEQ0QUFBQ0FtRWI0UEFBQUFHQlJ6SGc3QUFBQWdJTWI4RGtBQUFCQUlDVjZPQUFBQUlBaWd1TTJBQUFBQUIzemFUVVpBQW9BR1JrWkFBQUFBQVVBQUFBQUFBQUpBQUFBQUFzQUFBQUFBQUFBQUJrQUVRb1pHUmtEQ2djQUFRQUpDeGdBQUFrR0N3QUFDd0FHR1FBQUFCa1pHUUJCd1pRVEN5RU9BQUFBQUFBQUFBQVpBQW9OR1JrWkFBMEFBQUlBQ1E0QUFBQUpBQTRBQUE0QVFmdVVFd3NCREFCQmg1VVRDeFVUQUFBQUFCTUFBQUFBQ1F3QUFBQUFBQXdBQUF3QVFiV1ZFd3NCRUFCQndaVVRDeFVQQUFBQUJBOEFBQUFBQ1JBQUFBQUFBQkFBQUJBQVFlK1ZFd3NCRWdCQis1VVRDeDRSQUFBQUFCRUFBQUFBQ1JJQUFBQUFBQklBQUJJQUFCb0FBQUFhR2hvQVFiS1dFd3NPR2dBQUFCb2FHZ0FBQUFBQUFBa0FRZU9XRXdzQkZBQkI3NVlUQ3hVWEFBQUFBQmNBQUFBQUNSUUFBQUFBQUJRQUFCUUFRWjJYRXdzQkZnQkJxWmNUQy84Q0ZRQUFBQUFWQUFBQUFBa1dBQUFBQUFBV0FBQVdBQUF3TVRJek5EVTJOemc1UVVKRFJFVkcvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3dBQkFnTUVCUVlIQ0FuLy8vLy8vLy8vQ2dzTURRNFBFQkVTRXhRVkZoY1lHUm9iSEIwZUh5QWhJaVAvLy8vLy8vOEtDd3dORGc4UUVSSVRGQlVXRnhnWkdoc2NIUjRmSUNFaUkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy84QUFRSUVCd01HQlFBQUFBQUFBQURSZEo0QVY1MjlLb0J3VWcvLy96NG5DZ0FBQUdRQUFBRG9Bd0FBRUNjQUFLQ0dBUUJBUWc4QWdKYVlBQURoOVFVWUFBQUFOUUFBQUhFQUFBQnIvLy8venZ2Ly81Sy8vLzhBUWN5YUV3c0JVZ0JCOUpvVEN3ai8vLy8vLy8vLy93QkJ2SnNUQy9nSkZOQUVBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQjZBQUFBZXdBQUFId0FBQUI5QUFBQWZnQUFBSDhBQUFDQUFBQUFnUUFBQUlJQUFBQ0RBQUFBQUFBQUFKelJCQUNFQUFBQWhRQUFBSVlBQUFDSEFBQUFpQUFBQUlrQUFBQ0tBQUFBaXdBQUFJd0FBQUNOQUFBQWpnQUFBSThBQUFDUUFBQUFrUUFBQUU1VGRETmZYekk1WW1GemFXTmZhVzl6U1dOT1UxOHhNV05vWVhKZmRISmhhWFJ6U1dORlJVVkZBRTVUZEROZlh6SXhOV0poYzJsalgzTjBjbVZoYldKMVprbGpUbE5mTVRGamFHRnlYM1J5WVdsMGMwbGpSVVZGUlFCT1UzUXpYMTh5TVROaVlYTnBZMTlwYzNSeVpXRnRTV05PVTE4eE1XTm9ZWEpmZEhKaGFYUnpTV05GUlVWRkFFNVRkRE5mWHpJeE0ySmhjMmxqWDI5emRISmxZVzFKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVUFUbE4wTTE5Zk1qbGlZWE5wWTE5cGIzTkpkMDVUWHpFeFkyaGhjbDkwY21GcGRITkpkMFZGUlVVQVRsTjBNMTlmTWpFMVltRnphV05mYzNSeVpXRnRZblZtU1hkT1UxOHhNV05vWVhKZmRISmhhWFJ6U1hkRlJVVkZBRTVUZEROZlh6SXhNMkpoYzJsalgybHpkSEpsWVcxSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVVBVGxOME0xOWZNakV6WW1GemFXTmZiM04wY21WaGJVbDNUbE5mTVRGamFHRnlYM1J5WVdsMGMwbDNSVVZGUlFCT1UzUXpYMTh5T0dsdmMxOWlZWE5sUlFBQUFBQUFITkFFQUhZQUFBQ1NBQUFBa3dBQUFIa0FBQUI2QUFBQWV3QUFBSHdBQUFCOUFBQUFmZ0FBQUpRQUFBQ1ZBQUFBbGdBQUFJSUFBQUNEQUFBQVRsTjBNMTlmTWpFd1gxOXpkR1JwYm1KMVprbGpSVVVBdkFBRkFHTE9CQUQ4QUFVQS9NOEVBQlRRQkFBSUFBQUFBQUFBQUZEUUJBQ1hBQUFBbUFBQUFQai8vLy80Ly8vL1VOQUVBSmtBQUFDYUFBQUFhUDhFQUpQT0JBQUFBQUFBQVFBQUFIalFCQUFEOVAvL0FBQUFBSGpRQkFDYkFBQUFuQUFBQVB3QUJRQTR6Z1FBbE5BRUFBQUFBQUNVMEFRQW5RQUFBSjRBQUFDOEFBVUFxczhFQUFBQUFBRDQwQVFBZGdBQUFKOEFBQUNnQUFBQWVRQUFBSG9BQUFCN0FBQUFvUUFBQUgwQUFBQitBQUFBZndBQUFJQUFBQUNCQUFBQW9nQUFBS01BQUFCT1UzUXpYMTh5TVRGZlgzTjBaRzkxZEdKMVprbGpSVVVBQUFBQS9BQUZBTnpRQkFBVTBBUUFCQUFBQUFBQUFBQXMwUVFBcEFBQUFLVUFBQUQ4Ly8vLy9QLy8veXpSQkFDbUFBQUFwd0FBQUdqL0JBREN6Z1FBQUFBQUFBRUFBQUI0MEFRQUEvVC8vd0FBQUFDazBRUUFoQUFBQUtnQUFBQ3BBQUFBaHdBQUFJZ0FBQUNKQUFBQWlnQUFBSXNBQUFDTUFBQUFxZ0FBQUtzQUFBQ3NBQUFBa0FBQUFKRUFBQUJPVTNRelgxOHlNVEJmWDNOMFpHbHVZblZtU1hkRlJRQzhBQVVBRzg4RUFQd0FCUUNFMFFRQW5ORUVBQWdBQUFBQUFBQUEyTkVFQUswQUFBQ3VBQUFBK1AvLy8vai8vLy9ZMFFRQXJ3QUFBTEFBQUFCby93UUFUTThFQUFBQUFBQUJBQUFBQU5JRUFBUDAvLzhBQUFBQUFOSUVBTEVBQUFDeUFBQUEvQUFGQVBIT0JBQ1UwQVFBQUFBQUFHalNCQUNFQUFBQXN3QUFBTFFBQUFDSEFBQUFpQUFBQUlrQUFBQzFBQUFBaXdBQUFJd0FBQUNOQUFBQWpnQUFBSThBQUFDMkFBQUF0d0FBQUU1VGRETmZYekl4TVY5ZmMzUmtiM1YwWW5WbVNYZEZSUUFBQUFEOEFBVUFUTklFQUp6UkJBQUVBQUFBQUFBQUFKelNCQUM0QUFBQXVRQUFBUHovLy8vOC8vLy9uTklFQUxvQUFBQzdBQUFBYVA4RUFIdlBCQUFBQUFBQUFRQUFBQURTQkFBRDlQLy9BRUhBcFJNTEZONFNCSlVBQUFBQS8vLy8vLy8vLy8vLy8vLy9BRUhncFJNTFYweERYME5VV1ZCRkFBQUFBRXhEWDA1VlRVVlNTVU1BQUV4RFgxUkpUVVVBQUFBQUFFeERYME5QVEV4QlZFVUFBRXhEWDAxUFRrVlVRVkpaQUV4RFgwMUZVMU5CUjBWVEFNRFNCQUFVQUFBQVF5NVZWRVl0T0FCQjFLb1RDL2tEQVFBQUFBSUFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWtBQUFBSlFBQUFDWUFBQUFuQUFBQUtBQUFBQ2tBQUFBcUFBQUFLd0FBQUN3QUFBQXRBQUFBTGdBQUFDOEFBQUF3QUFBQU1RQUFBRElBQUFBekFBQUFOQUFBQURVQUFBQTJBQUFBTndBQUFEZ0FBQUE1QUFBQU9nQUFBRHNBQUFBOEFBQUFQUUFBQUQ0QUFBQS9BQUFBUUFBQUFHRUFBQUJpQUFBQVl3QUFBR1FBQUFCbEFBQUFaZ0FBQUdjQUFBQm9BQUFBYVFBQUFHb0FBQUJyQUFBQWJBQUFBRzBBQUFCdUFBQUFid0FBQUhBQUFBQnhBQUFBY2dBQUFITUFBQUIwQUFBQWRRQUFBSFlBQUFCM0FBQUFlQUFBQUhrQUFBQjZBQUFBV3dBQUFGd0FBQUJkQUFBQVhnQUFBRjhBQUFCZ0FBQUFZUUFBQUdJQUFBQmpBQUFBWkFBQUFHVUFBQUJtQUFBQVp3QUFBR2dBQUFCcEFBQUFhZ0FBQUdzQUFBQnNBQUFBYlFBQUFHNEFBQUJ2QUFBQWNBQUFBSEVBQUFCeUFBQUFjd0FBQUhRQUFBQjFBQUFBZGdBQUFIY0FBQUI0QUFBQWVRQUFBSG9BQUFCN0FBQUFmQUFBQUgwQUFBQitBQUFBZndCQjFMWVRDL2tEQVFBQUFBSUFBQUFEQUFBQUJBQUFBQVVBQUFBR0FBQUFCd0FBQUFnQUFBQUpBQUFBQ2dBQUFBc0FBQUFNQUFBQURRQUFBQTRBQUFBUEFBQUFFQUFBQUJFQUFBQVNBQUFBRXdBQUFCUUFBQUFWQUFBQUZnQUFBQmNBQUFBWUFBQUFHUUFBQUJvQUFBQWJBQUFBSEFBQUFCMEFBQUFlQUFBQUh3QUFBQ0FBQUFBaEFBQUFJZ0FBQUNNQUFBQWtBQUFBSlFBQUFDWUFBQUFuQUFBQUtBQUFBQ2tBQUFBcUFBQUFLd0FBQUN3QUFBQXRBQUFBTGdBQUFDOEFBQUF3QUFBQU1RQUFBRElBQUFBekFBQUFOQUFBQURVQUFBQTJBQUFBTndBQUFEZ0FBQUE1QUFBQU9nQUFBRHNBQUFBOEFBQUFQUUFBQUQ0QUFBQS9BQUFBUUFBQUFFRUFBQUJDQUFBQVF3QUFBRVFBQUFCRkFBQUFSZ0FBQUVjQUFBQklBQUFBU1FBQUFFb0FBQUJMQUFBQVRBQUFBRTBBQUFCT0FBQUFUd0FBQUZBQUFBQlJBQUFBVWdBQUFGTUFBQUJVQUFBQVZRQUFBRllBQUFCWEFBQUFXQUFBQUZrQUFBQmFBQUFBV3dBQUFGd0FBQUJkQUFBQVhnQUFBRjhBQUFCZ0FBQUFRUUFBQUVJQUFBQkRBQUFBUkFBQUFFVUFBQUJHQUFBQVJ3QUFBRWdBQUFCSkFBQUFTZ0FBQUVzQUFBQk1BQUFBVFFBQUFFNEFBQUJQQUFBQVVBQUFBRkVBQUFCU0FBQUFVd0FBQUZRQUFBQlZBQUFBVmdBQUFGY0FBQUJZQUFBQVdRQUFBRm9BQUFCN0FBQUFmQUFBQUgwQUFBQitBQUFBZndCQjBMNFRDNE1DQWdBQXdBTUFBTUFFQUFEQUJRQUF3QVlBQU1BSEFBREFDQUFBd0FrQUFNQUtBQURBQ3dBQXdBd0FBTUFOQUFEQURnQUF3QThBQU1BUUFBREFFUUFBd0JJQUFNQVRBQURBRkFBQXdCVUFBTUFXQUFEQUZ3QUF3QmdBQU1BWkFBREFHZ0FBd0JzQUFNQWNBQURBSFFBQXdCNEFBTUFmQUFEQUFBQUFzd0VBQU1NQ0FBRERBd0FBd3dRQUFNTUZBQUREQmdBQXd3Y0FBTU1JQUFERENRQUF3d29BQU1NTEFBREREQUFBd3cwQUFOTU9BQURERHdBQXd3QUFETHNCQUF6REFnQU13d01BRE1NRUFBemJBQUFBQURBeE1qTTBOVFkzT0RsaFltTmtaV1pCUWtORVJVWjRXQ3N0Y0ZCcFNXNU9BR3dBSlVrNkpVMDZKVk1nSlhBbFNEb2xUUUJCNE1BVEM0RUJKUUFBQUcwQUFBQXZBQUFBSlFBQUFHUUFBQUF2QUFBQUpRQUFBSGtBQUFBbEFBQUFXUUFBQUMwQUFBQWxBQUFBYlFBQUFDMEFBQUFsQUFBQVpBQUFBQ1VBQUFCSkFBQUFPZ0FBQUNVQUFBQk5BQUFBT2dBQUFDVUFBQUJUQUFBQUlBQUFBQ1VBQUFCd0FBQUFBQUFBQUNVQUFBQklBQUFBT2dBQUFDVUFBQUJOQUVId3dSTUxaU1VBQUFCSUFBQUFPZ0FBQUNVQUFBQk5BQUFBT2dBQUFDVUFBQUJUQUFBQUFBQUFBR1RxQkFDOEFBQUF2UUFBQUw0QUFBQUFBQUFBeE9vRUFMOEFBQURBQUFBQXZnQUFBTUVBQUFEQ0FBQUF3d0FBQU1RQUFBREZBQUFBeGdBQUFNY0FBQURJQUVIZ3doTUwvUU1FQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFGQWdBQUJRQUFBQVVBQUFBRkFBQUFCUUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUJBQUFBQVFBQUFBRUFBQUFCQUFBQUFNQ0FBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBSUlBQUFCQ0FRQUFRZ0VBQUVJQkFBQkNBUUFBUWdFQUFFSUJBQUJDQVFBQVFnRUFBRUlCQUFCQ0FRQUFnZ0FBQUlJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQWdnQUFBQ29CQUFBcUFRQUFLZ0VBQUNvQkFBQXFBUUFBS2dFQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQUtnQUFBQ29BQUFBcUFBQUFLZ0FBQUNvQUFBQXFBQUFBS2dBQUFDb0FBQUFxQUFBQWdnQUFBSUlBQUFDQ0FBQUFnZ0FBQUlJQUFBQ0NBQUFBTWdFQUFESUJBQUF5QVFBQU1nRUFBRElCQUFBeUFRQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQXlBQUFBTWdBQUFESUFBQUF5QUFBQU1nQUFBRElBQUFBeUFBQUFNZ0FBQURJQUFBQ0NBQUFBZ2dBQUFJSUFBQUNDQUFBQUJBQkI1TW9UQyswQ0xPb0VBTWtBQUFES0FBQUF2Z0FBQU1zQUFBRE1BQUFBelFBQUFNNEFBQURQQUFBQTBBQUFBTkVBQUFBQUFBQUEvT29FQU5JQUFBRFRBQUFBdmdBQUFOUUFBQURWQUFBQTFnQUFBTmNBQUFEWUFBQUFBQUFBQUNEckJBRFpBQUFBMmdBQUFMNEFBQURiQUFBQTNBQUFBTjBBQUFEZUFBQUEzd0FBQUhRQUFBQnlBQUFBZFFBQUFHVUFBQUFBQUFBQVpnQUFBR0VBQUFCc0FBQUFjd0FBQUdVQUFBQUFBQUFBSlFBQUFHMEFBQUF2QUFBQUpRQUFBR1FBQUFBdkFBQUFKUUFBQUhrQUFBQUFBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQUFBQUFBSlFBQUFHRUFBQUFnQUFBQUpRQUFBR0lBQUFBZ0FBQUFKUUFBQUdRQUFBQWdBQUFBSlFBQUFFZ0FBQUE2QUFBQUpRQUFBRTBBQUFBNkFBQUFKUUFBQUZNQUFBQWdBQUFBSlFBQUFGa0FBQUFBQUFBQUpRQUFBRWtBQUFBNkFBQUFKUUFBQUUwQUFBQTZBQUFBSlFBQUFGTUFBQUFnQUFBQUpRQUFBSEFBUWR6TkV3di9DZ1RuQkFEZ0FBQUE0UUFBQUw0QUFBQk9VM1F6WDE4eU5teHZZMkZzWlRWbVlXTmxkRVVBQUFEOEFBVUE3T1lFQU1EOEJBQUFBQUFBaE9jRUFPQUFBQURpQUFBQXZnQUFBT01BQUFEa0FBQUE1UUFBQU9ZQUFBRG5BQUFBNkFBQUFPa0FBQURxQUFBQTZ3QUFBT3dBQUFEdEFBQUE3Z0FBQUU1VGRETmZYekkxWTNSNWNHVkpkMFZGQUU1VGRETmZYekl4TUdOMGVYQmxYMkpoYzJWRkFBQzhBQVVBWnVjRUFHai9CQUJVNXdRQUFBQUFBQUlBQUFBRTV3UUFBZ0FBQUh6bkJBQUNBQUFBQUFBQUFCam9CQURnQUFBQTd3QUFBTDRBQUFEd0FBQUE4UUFBQVBJQUFBRHpBQUFBOUFBQUFQVUFBQUQyQUFBQVRsTjBNMTlmTWpkamIyUmxZM1owU1dOak1URmZYMjFpYzNSaGRHVmZkRVZGQUU1VGRETmZYekl4TW1OdlpHVmpkblJmWW1GelpVVUFBQUFBdkFBRkFQYm5CQUJvL3dRQTFPY0VBQUFBQUFBQ0FBQUFCT2NFQUFJQUFBQVE2QVFBQWdBQUFBQUFBQUNNNkFRQTRBQUFBUGNBQUFDK0FBQUErQUFBQVBrQUFBRDZBQUFBK3dBQUFQd0FBQUQ5QUFBQS9nQUFBRTVUZEROZlh6STNZMjlrWldOMmRFbEVjMk14TVY5ZmJXSnpkR0YwWlY5MFJVVUFBR2ovQkFCbzZBUUFBQUFBQUFJQUFBQUU1d1FBQWdBQUFCRG9CQUFDQUFBQUFBQUFBQURwQkFEZ0FBQUEvd0FBQUw0QUFBQUFBUUFBQVFFQUFBSUJBQUFEQVFBQUJBRUFBQVVCQUFBR0FRQUFUbE4wTTE5Zk1qZGpiMlJsWTNaMFNVUnpSSFV4TVY5ZmJXSnpkR0YwWlY5MFJVVUFhUDhFQU56b0JBQUFBQUFBQWdBQUFBVG5CQUFDQUFBQUVPZ0VBQUlBQUFBQUFBQUFkT2tFQU9BQUFBQUhBUUFBdmdBQUFBZ0JBQUFKQVFBQUNnRUFBQXNCQUFBTUFRQUFEUUVBQUE0QkFBQk9VM1F6WDE4eU4yTnZaR1ZqZG5SSlJHbGpNVEZmWDIxaWMzUmhkR1ZmZEVWRkFBQm8vd1FBVU9rRUFBQUFBQUFDQUFBQUJPY0VBQUlBQUFBUTZBUUFBZ0FBQUFBQUFBRG82UVFBNEFBQUFBOEJBQUMrQUFBQUVBRUFBQkVCQUFBU0FRQUFFd0VBQUJRQkFBQVZBUUFBRmdFQUFFNVRkRE5mWHpJM1kyOWtaV04yZEVsRWFVUjFNVEZmWDIxaWMzUmhkR1ZmZEVWRkFHai9CQURFNlFRQUFBQUFBQUlBQUFBRTV3UUFBZ0FBQUJEb0JBQUNBQUFBVGxOME0xOWZNamRqYjJSbFkzWjBTWGRqTVRGZlgyMWljM1JoZEdWZmRFVkZBQUFBYVA4RUFBanFCQUFBQUFBQUFnQUFBQVRuQkFBQ0FBQUFFT2dFQUFJQUFBQk9VM1F6WDE4eU5teHZZMkZzWlRWZlgybHRjRVVBQUFEOEFBVUFUT29FQUFUbkJBQk9VM1F6WDE4eU4yTnZiR3hoZEdWSlkwVkZBUHdBQlFCdzZnUUFCT2NFQUU1VGRETmZYekkzWTI5c2JHRjBaVWwzUlVVQS9BQUZBSkRxQkFBRTV3UUFUbE4wTTE5Zk1qVmpkSGx3WlVsalJVVUFBQUJvL3dRQXNPb0VBQUFBQUFBQ0FBQUFCT2NFQUFJQUFBQjg1d1FBQWdBQUFFNVRkRE5mWHpJNGJuVnRjSFZ1WTNSSlkwVkZBQUFBQVB3QUJRRGs2Z1FBQk9jRUFFNVRkRE5mWHpJNGJuVnRjSFZ1WTNSSmQwVkZBQUFBQVB3QUJRQUk2d1FBQk9jRUFBQUFBQUNFNmdRQUZ3RUFBQmdCQUFDK0FBQUFHUUVBQUJvQkFBQWJBUUFBQUFBQUFLVHFCQUFjQVFBQUhRRUFBTDRBQUFBZUFRQUFId0VBQUNBQkFBQUFBQUFBUU93RUFPQUFBQUFoQVFBQXZnQUFBQ0lCQUFBakFRQUFKQUVBQUNVQkFBQW1BUUFBSndFQUFDZ0JBQUFwQVFBQUtnRUFBQ3NCQUFBc0FRQUFUbE4wTTE5Zk1qZHVkVzFmWjJWMFNXTk9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSlkwNVRYekV4WTJoaGNsOTBjbUZwZEhOSlkwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYMmRsZEVsalJVVUFUbE4wTTE5Zk1qRTBYMTl1ZFcxZloyVjBYMkpoYzJWRkFBQzhBQVVBQnV3RUFHai9CQUR3NndRQUFBQUFBQUVBQUFBZzdBUUFBQUFBQUdqL0JBQ3M2d1FBQUFBQUFBSUFBQUFFNXdRQUFnQUFBQ2pzQkFCQjVOZ1RDOHNCRk8wRUFPQUFBQUF0QVFBQXZnQUFBQzRCQUFBdkFRQUFNQUVBQURFQkFBQXlBUUFBTXdFQUFEUUJBQUExQVFBQU5nRUFBRGNCQUFBNEFRQUFUbE4wTTE5Zk1qZHVkVzFmWjJWMFNYZE9VMTh4T1dsemRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5T1Y5ZmJuVnRYMmRsZEVsM1JVVUFBQUJvL3dRQTVPd0VBQUFBQUFBQkFBQUFJT3dFQUFBQUFBQm8vd1FBb093RUFBQUFBQUFDQUFBQUJPY0VBQUlBQUFEODdBUUFRYmphRXd2ZkFmenRCQURnQUFBQU9RRUFBTDRBQUFBNkFRQUFPd0VBQUR3QkFBQTlBUUFBUGdFQUFEOEJBQUJBQVFBQVFRRUFBRTVUZEROZlh6STNiblZ0WDNCMWRFbGpUbE5mTVRsdmMzUnlaV0Z0WW5WbVgybDBaWEpoZEc5eVNXTk9VMTh4TVdOb1lYSmZkSEpoYVhSelNXTkZSVVZGUlVVQVRsTjBNMTlmTWpsZlgyNTFiVjl3ZFhSSlkwVkZBRTVUZEROZlh6SXhORjlmYm5WdFgzQjFkRjlpWVhObFJRQUF2QUFGQU1MdEJBQm8vd1FBck8wRUFBQUFBQUFCQUFBQTNPMEVBQUFBQUFCby93UUFhTzBFQUFBQUFBQUNBQUFBQk9jRUFBSUFBQURrN1FRQVFhRGNFd3UvQWNUdUJBRGdBQUFBUWdFQUFMNEFBQUJEQVFBQVJBRUFBRVVCQUFCR0FRQUFSd0VBQUVnQkFBQkpBUUFBU2dFQUFFNVRkRE5mWHpJM2JuVnRYM0IxZEVsM1RsTmZNVGx2YzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1hkT1UxOHhNV05vWVhKZmRISmhhWFJ6U1hkRlJVVkZSVVVBVGxOME0xOWZNamxmWDI1MWJWOXdkWFJKZDBWRkFBQUFhUDhFQUpUdUJBQUFBQUFBQVFBQUFOenRCQUFBQUFBQWFQOEVBRkR1QkFBQUFBQUFBZ0FBQUFUbkJBQUNBQUFBck80RUFFSG8zUk1MbXd2RTd3UUFTd0VBQUV3QkFBQytBQUFBVFFFQUFFNEJBQUJQQVFBQVVBRUFBRkVCQUFCU0FRQUFVd0VBQVBqLy8vL0U3d1FBVkFFQUFGVUJBQUJXQVFBQVZ3RUFBRmdCQUFCWkFRQUFXZ0VBQUU1VGRETmZYekk0ZEdsdFpWOW5aWFJKWTA1VFh6RTVhWE4wY21WaGJXSjFabDlwZEdWeVlYUnZja2xqVGxOZk1URmphR0Z5WDNSeVlXbDBjMGxqUlVWRlJVVkZBRTVUZEROZlh6STVkR2x0WlY5aVlYTmxSUUM4QUFVQWZlOEVBRTVUZEROZlh6SXlNRjlmZEdsdFpWOW5aWFJmWTE5emRHOXlZV2RsU1dORlJRQUFBTHdBQlFDWTd3UUFhUDhFQURqdkJBQUFBQUFBQXdBQUFBVG5CQUFDQUFBQWtPOEVBQUlBQUFDODd3UUFBQWdBQUFBQUFBQ3c4QVFBV3dFQUFGd0JBQUMrQUFBQVhRRUFBRjRCQUFCZkFRQUFZQUVBQUdFQkFBQmlBUUFBWXdFQUFQai8vLyt3OEFRQVpBRUFBR1VCQUFCbUFRQUFad0VBQUdnQkFBQnBBUUFBYWdFQUFFNVRkRE5mWHpJNGRHbHRaVjluWlhSSmQwNVRYekU1YVhOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsM1RsTmZNVEZqYUdGeVgzUnlZV2wwYzBsM1JVVkZSVVZGQUU1VGRETmZYekl5TUY5ZmRHbHRaVjluWlhSZlkxOXpkRzl5WVdkbFNYZEZSUUFBdkFBRkFJWHdCQUJvL3dRQVFQQUVBQUFBQUFBREFBQUFCT2NFQUFJQUFBQ1E3d1FBQWdBQUFLandCQUFBQ0FBQUFBQUFBRlR4QkFCckFRQUFiQUVBQUw0QUFBQnRBUUFBVGxOME0xOWZNamgwYVcxbFgzQjFkRWxqVGxOZk1UbHZjM1J5WldGdFluVm1YMmwwWlhKaGRHOXlTV05PVTE4eE1XTm9ZWEpmZEhKaGFYUnpTV05GUlVWRlJVVUFUbE4wTTE5Zk1qRXdYMTkwYVcxbFgzQjFkRVVBQUFDOEFBVUFOZkVFQUdqL0JBRHc4QVFBQUFBQUFBSUFBQUFFNXdRQUFnQUFBRXp4QkFBQUNBQUFBQUFBQU5UeEJBQnVBUUFBYndFQUFMNEFBQUJ3QVFBQVRsTjBNMTlmTWpoMGFXMWxYM0IxZEVsM1RsTmZNVGx2YzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1hkT1UxOHhNV05vWVhKZmRISmhhWFJ6U1hkRlJVVkZSVVVBQUFBQWFQOEVBSXp4QkFBQUFBQUFBZ0FBQUFUbkJBQUNBQUFBVFBFRUFBQUlBQUFBQUFBQWFQSUVBT0FBQUFCeEFRQUF2Z0FBQUhJQkFBQnpBUUFBZEFFQUFIVUJBQUIyQVFBQWR3RUFBSGdCQUFCNUFRQUFlZ0VBQUU1VGRETmZYekl4TUcxdmJtVjVjSFZ1WTNSSlkweGlNRVZGUlFCT1UzUXpYMTh5TVRCdGIyNWxlVjlpWVhObFJRQUFBQUM4QUFVQVNQSUVBR2ovQkFBczhnUUFBQUFBQUFJQUFBQUU1d1FBQWdBQUFHRHlCQUFDQUFBQUFBQUFBTnp5QkFEZ0FBQUFld0VBQUw0QUFBQjhBUUFBZlFFQUFINEJBQUIvQVFBQWdBRUFBSUVCQUFDQ0FRQUFnd0VBQUlRQkFBQk9VM1F6WDE4eU1UQnRiMjVsZVhCMWJtTjBTV05NWWpGRlJVVUFhUDhFQU1EeUJBQUFBQUFBQWdBQUFBVG5CQUFDQUFBQVlQSUVBQUlBQUFBQUFBQUFVUE1FQU9BQUFBQ0ZBUUFBdmdBQUFJWUJBQUNIQVFBQWlBRUFBSWtCQUFDS0FRQUFpd0VBQUl3QkFBQ05BUUFBamdFQUFFNVRkRE5mWHpJeE1HMXZibVY1Y0hWdVkzUkpkMHhpTUVWRlJRQm8vd1FBTlBNRUFBQUFBQUFDQUFBQUJPY0VBQUlBQUFCZzhnUUFBZ0FBQUFBQUFBREU4d1FBNEFBQUFJOEJBQUMrQUFBQWtBRUFBSkVCQUFDU0FRQUFrd0VBQUpRQkFBQ1ZBUUFBbGdFQUFKY0JBQUNZQVFBQVRsTjBNMTlmTWpFd2JXOXVaWGx3ZFc1amRFbDNUR0l4UlVWRkFHai9CQUNvOHdRQUFBQUFBQUlBQUFBRTV3UUFBZ0FBQUdEeUJBQUNBQUFBQUFBQUFHajBCQURnQUFBQW1RRUFBTDRBQUFDYUFRQUFtd0VBQUU1VGRETmZYekk1Ylc5dVpYbGZaMlYwU1dOT1UxOHhPV2x6ZEhKbFlXMWlkV1pmYVhSbGNtRjBiM0pKWTA1VFh6RXhZMmhoY2w5MGNtRnBkSE5KWTBWRlJVVkZSUUJPVTNRelgxOHlNVEZmWDIxdmJtVjVYMmRsZEVsalJVVUFBTHdBQlFCRzlBUUFhUDhFQUFEMEJBQUFBQUFBQWdBQUFBVG5CQUFDQUFBQVlQUUVBRUdNNlJNTG13RU05UVFBNEFBQUFKd0JBQUMrQUFBQW5RRUFBSjRCQUFCT1UzUXpYMTh5T1cxdmJtVjVYMmRsZEVsM1RsTmZNVGxwYzNSeVpXRnRZblZtWDJsMFpYSmhkRzl5U1hkT1UxOHhNV05vWVhKZmRISmhhWFJ6U1hkRlJVVkZSVVVBVGxOME0xOWZNakV4WDE5dGIyNWxlVjluWlhSSmQwVkZBQUM4QUFVQTZ2UUVBR2ovQkFDazlBUUFBQUFBQUFJQUFBQUU1d1FBQWdBQUFBVDFCQUJCc09vVEM1c0JzUFVFQU9BQUFBQ2ZBUUFBdmdBQUFLQUJBQUNoQVFBQVRsTjBNMTlmTWpsdGIyNWxlVjl3ZFhSSlkwNVRYekU1YjNOMGNtVmhiV0oxWmw5cGRHVnlZWFJ2Y2tsalRsTmZNVEZqYUdGeVgzUnlZV2wwYzBsalJVVkZSVVZGQUU1VGRETmZYekl4TVY5ZmJXOXVaWGxmY0hWMFNXTkZSUUFBdkFBRkFJNzFCQUJvL3dRQVNQVUVBQUFBQUFBQ0FBQUFCT2NFQUFJQUFBQ285UVFBUWRUckV3dWJBVlQyQkFEZ0FBQUFvZ0VBQUw0QUFBQ2pBUUFBcEFFQUFFNVRkRE5mWHpJNWJXOXVaWGxmY0hWMFNYZE9VMTh4T1c5emRISmxZVzFpZFdaZmFYUmxjbUYwYjNKSmQwNVRYekV4WTJoaGNsOTBjbUZwZEhOSmQwVkZSVVZGUlFCT1UzUXpYMTh5TVRGZlgyMXZibVY1WDNCMWRFbDNSVVVBQUx3QUJRQXk5Z1FBYVA4RUFPejFCQUFBQUFBQUFnQUFBQVRuQkFBQ0FBQUFUUFlFQUVINDdCTUx1UWpNOWdRQTRBQUFBS1VCQUFDK0FBQUFwZ0VBQUtjQkFBQ29BUUFBVGxOME0xOWZNamh0WlhOellXZGxjMGxqUlVVQVRsTjBNMTlmTWpFemJXVnpjMkZuWlhOZlltRnpaVVVBQUFBQXZBQUZBS24yQkFCby93UUFsUFlFQUFBQUFBQUNBQUFBQk9jRUFBSUFBQURFOWdRQUFnQUFBQUFBQUFBazl3UUE0QUFBQUtrQkFBQytBQUFBcWdFQUFLc0JBQUNzQVFBQVRsTjBNMTlmTWpodFpYTnpZV2RsYzBsM1JVVUFBQUFBYVA4RUFBejNCQUFBQUFBQUFnQUFBQVRuQkFBQ0FBQUF4UFlFQUFJQUFBQlRBQUFBZFFBQUFHNEFBQUJrQUFBQVlRQUFBSGtBQUFBQUFBQUFUUUFBQUc4QUFBQnVBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRlFBQUFCMUFBQUFaUUFBQUhNQUFBQmtBQUFBWVFBQUFIa0FBQUFBQUFBQVZ3QUFBR1VBQUFCa0FBQUFiZ0FBQUdVQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRlFBQUFCb0FBQUFkUUFBQUhJQUFBQnpBQUFBWkFBQUFHRUFBQUI1QUFBQUFBQUFBRVlBQUFCeUFBQUFhUUFBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJUQUFBQVlRQUFBSFFBQUFCMUFBQUFjZ0FBQUdRQUFBQmhBQUFBZVFBQUFBQUFBQUJUQUFBQWRRQUFBRzRBQUFBQUFBQUFUUUFBQUc4QUFBQnVBQUFBQUFBQUFGUUFBQUIxQUFBQVpRQUFBQUFBQUFCWEFBQUFaUUFBQUdRQUFBQUFBQUFBVkFBQUFHZ0FBQUIxQUFBQUFBQUFBRVlBQUFCeUFBQUFhUUFBQUFBQUFBQlRBQUFBWVFBQUFIUUFBQUFBQUFBQVNnQUFBR0VBQUFCdUFBQUFkUUFBQUdFQUFBQnlBQUFBZVFBQUFBQUFBQUJHQUFBQVpRQUFBR0lBQUFCeUFBQUFkUUFBQUdFQUFBQnlBQUFBZVFBQUFBQUFBQUJOQUFBQVlRQUFBSElBQUFCakFBQUFhQUFBQUFBQUFBQkJBQUFBY0FBQUFISUFBQUJwQUFBQWJBQUFBQUFBQUFCTkFBQUFZUUFBQUhrQUFBQUFBQUFBU2dBQUFIVUFBQUJ1QUFBQVpRQUFBQUFBQUFCS0FBQUFkUUFBQUd3QUFBQjVBQUFBQUFBQUFFRUFBQUIxQUFBQVp3QUFBSFVBQUFCekFBQUFkQUFBQUFBQUFBQlRBQUFBWlFBQUFIQUFBQUIwQUFBQVpRQUFBRzBBQUFCaUFBQUFaUUFBQUhJQUFBQUFBQUFBVHdBQUFHTUFBQUIwQUFBQWJ3QUFBR0lBQUFCbEFBQUFjZ0FBQUFBQUFBQk9BQUFBYndBQUFIWUFBQUJsQUFBQWJRQUFBR0lBQUFCbEFBQUFjZ0FBQUFBQUFBQkVBQUFBWlFBQUFHTUFBQUJsQUFBQWJRQUFBR0lBQUFCbEFBQUFjZ0FBQUFBQUFBQktBQUFBWVFBQUFHNEFBQUFBQUFBQVJnQUFBR1VBQUFCaUFBQUFBQUFBQUUwQUFBQmhBQUFBY2dBQUFBQUFBQUJCQUFBQWNBQUFBSElBQUFBQUFBQUFTZ0FBQUhVQUFBQnVBQUFBQUFBQUFFb0FBQUIxQUFBQWJBQUFBQUFBQUFCQkFBQUFkUUFBQUdjQUFBQUFBQUFBVXdBQUFHVUFBQUJ3QUFBQUFBQUFBRThBQUFCakFBQUFkQUFBQUFBQUFBQk9BQUFBYndBQUFIWUFBQUFBQUFBQVJBQUFBR1VBQUFCakFBQUFBQUFBQUVFQUFBQk5BQUFBQUFBQUFGQUFBQUJOQUVHODlSTUxYTHp2QkFCVUFRQUFWUUVBQUZZQkFBQlhBUUFBV0FFQUFGa0JBQUJhQVFBQUFBQUFBS2p3QkFCa0FRQUFaUUVBQUdZQkFBQm5BUUFBYUFFQUFHa0JBQUJxQVFBQVRsTjBNMTlmTWpFMFgxOXphR0Z5WldSZlkyOTFiblJGQUVHMDloTUxBeWpUQkFCQjBQWVRDOGdCTURBd01UQXlNRE13TkRBMU1EWXdOekE0TURreE1ERXhNVEl4TXpFME1UVXhOakUzTVRneE9USXdNakV5TWpJek1qUXlOVEkyTWpjeU9ESTVNekF6TVRNeU16TXpORE0xTXpZek56TTRNemswTURReE5ESTBNelEwTkRVME5qUTNORGcwT1RVd05URTFNalV6TlRRMU5UVTJOVGMxT0RVNU5qQTJNVFl5TmpNMk5EWTFOalkyTnpZNE5qazNNRGN4TnpJM016YzBOelUzTmpjM056ZzNPVGd3T0RFNE1qZ3pPRFE0TlRnMk9EYzRPRGc1T1RBNU1Ua3lPVE01TkRrMU9UWTVOems0T1RrQVFhajRFd3VPQ2dvQUFBQUFBQUFBWkFBQUFBQUFBQURvQXdBQUFBQUFBQkFuQUFBQUFBQUFvSVlCQUFBQUFBQkFRZzhBQUFBQUFJQ1dtQUFBQUFBQUFPSDFCUUFBQUFBQXlwbzdBQUFBQUFEa0MxUUNBQUFBQU9oMlNCY0FBQUFBRUtYVTZBQUFBQUNnY2s0WUNRQUFBRUI2RVBOYUFBQUFnTWFrZm8wREFBQUF3Vy95aGlNQUFBQ0tYWGhGWXdFQUFHU25zN2JnRFFBQTZJa0VJOGVLdkFBRkFBRDdCQUFBQUFBQXdQd0VBSzBCQUFDdUFRQUFyd0VBQUU0eE1GOWZZM2g0WVdKcGRqRXhObDlmYzJocGJWOTBlWEJsWDJsdVptOUZBQUFBQVB3QUJRRGMvQVFBN0FBRkFFNHhNRjlmWTNoNFlXSnBkakV4TjE5ZlkyeGhjM05mZEhsd1pWOXBibVp2UlFBQUFQd0FCUUFNL1FRQUFQMEVBRTR4TUY5ZlkzaDRZV0pwZGpFeE4xOWZjR0poYzJWZmRIbHdaVjlwYm1adlJRQUFBUHdBQlFBOC9RUUFBUDBFQUU0eE1GOWZZM2g0WVdKcGRqRXhPVjlmY0c5cGJuUmxjbDkwZVhCbFgybHVabTlGQVB3QUJRQnMvUVFBWVAwRUFFNHhNRjlmWTNoNFlXSnBkakV5TUY5ZlpuVnVZM1JwYjI1ZmRIbHdaVjlwYm1adlJRQUFBQUQ4QUFVQW5QMEVBQUQ5QkFCT01UQmZYMk40ZUdGaWFYWXhNamxmWDNCdmFXNTBaWEpmZEc5ZmJXVnRZbVZ5WDNSNWNHVmZhVzVtYjBVQUFBRDhBQVVBMFAwRUFHRDlCQUFBQUFBQVVQNEVBTEVCQUFDeUFRQUFzd0VBQUxRQkFBQzFBUUFBVGpFd1gxOWplSGhoWW1sMk1USXpYMTltZFc1a1lXMWxiblJoYkY5MGVYQmxYMmx1Wm05RkFQd0FCUUFvL2dRQUFQMEVBSFlBQUFBVS9nUUFYUDRFQUVSdUFBQVUvZ1FBYVA0RUFHSUFBQUFVL2dRQWRQNEVBR01BQUFBVS9nUUFnUDRFQUdnQUFBQVUvZ1FBalA0RUFHRUFBQUFVL2dRQW1QNEVBSE1BQUFBVS9nUUFwUDRFQUhRQUFBQVUvZ1FBc1A0RUFHa0FBQUFVL2dRQXZQNEVBR29BQUFBVS9nUUF5UDRFQUJUK0JBQkI0QVFBVUd3QUFNVC9CQURjL2dRQUFBQUFBTlQrQkFCdEFBQUFGUDRFQVBEK0JBQjRBQUFBRlA0RUFQeitCQUI1QUFBQUZQNEVBQWovQkFCbUFBQUFGUDRFQUJUL0JBQmtBQUFBRlA0RUFDRC9CQUJPTVRCZlgyTjRlR0ZpYVhZeE1qQmZYM05wWDJOc1lYTnpYM1I1Y0dWZmFXNW1iMFVBQUFBQS9BQUZBQ3ovQkFBdy9RUUFBQUFBQUxEL0JBQ3hBUUFBdGdFQUFMTUJBQUMwQVFBQXR3RUFBTGdCQUFDNUFRQUF1Z0VBQUU0eE1GOWZZM2g0WVdKcGRqRXlNVjlmZG0xcFgyTnNZWE56WDNSNWNHVmZhVzVtYjBVQUFBRDhBQVVBaVA4RUFERDlCQUFBQUFBQWtQMEVBTEVCQUFDN0FRQUFzd0VBQUxRQkFBQzhBUUFBQUFBQUFCd0FCUUJOQUFBQXZRRUFBTDRCQUFBQUFBQUFSQUFGQUUwQUFBQy9BUUFBd0FFQUFGTjBPV1Y0WTJWd2RHbHZiZ0JUZERsaVlXUmZZV3hzYjJNQUFBRDhBQVVBRFFBRkFCd0JCUUJUZERJd1ltRmtYMkZ5Y21GNVgyNWxkMTlzWlc1bmRHZ0FBQUFBL0FBRkFDZ0FCUUFjQUFVQUFBQUFBSFFBQlFBQ0FBQUF3UUVBQU1JQkFBQlRkREV4Ykc5bmFXTmZaWEp5YjNJQS9BQUZBR1FBQlFBY0FRVUFBQUFBQUtnQUJRQUNBQUFBd3dFQUFNSUJBQUJUZERFeWJHVnVaM1JvWDJWeWNtOXlBQUFBQVB3QUJRQ1VBQVVBZEFBRkFBQUFBQUF3L1FRQXNRRUFBTVFCQUFDekFRQUF0QUVBQUxjQkFBREZBUUFBeGdFQUFNY0JBQUJUZERsMGVYQmxYMmx1Wm04QUFBQUF2QUFGQU53QUJRQUFBQUFBVlA4RUFMRUJBQURJQVFBQXN3RUFBTFFCQUFDM0FRQUF5UUVBQU1vQkFBRExBUUFBdkFBRkFBQUFCUUFBQUFBQUhBRUZBRTBBQUFETUFRQUF6UUVBUWJpQ0ZBc1JnQndHQUFBQUFBQ05sMjRTSStxNFFBVUFRZFNDRkFzQmNBQkI3SUlVQ3d0eEFBQUFjZ0FBQUhRSEJRQkJoSU1VQ3dFQ0FFR1VneFFMQ1AvLy8vLy8vLy8vQUVIWWd4UUxDVWdCQlFBQUFBQUFCUUJCN0lNVUN3RnpBRUdFaEJRTERuRUFBQUIwQUFBQW1Bc0ZBQUFFQUVHY2hCUUxBUUVBUWF5RUZBc0YvLy8vL3dvQVFmQ0VGQXNKNEFFRkFBQUFBQUFKQUVHRWhSUUxBWEFBUVppRkZBc1NkUUFBQUFBQUFBQnlBQUFBaUFjRkFBQUVBRUhFaFJRTEJQLy8vLzhBUVlpR0ZBc0NzQUU9IixSaShPaSl8fChPaT1SKE9pKSk7ZnVuY3Rpb24gZ24odSl7aWYodT09T2kmJkIpcmV0dXJuIG5ldyBVaW50OEFycmF5KEIpO3ZhciBWPUNYKHUpO2lmKFYpcmV0dXJuIFY7aWYoTilyZXR1cm4gTih1KTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCJ9ZnVuY3Rpb24gRGUodSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmduKHUpKX1mdW5jdGlvbiBZZSh1LFYsVyl7cmV0dXJuIERlKHUpLnRoZW4oUD0+V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoUCxWKSkudGhlbihQPT5QKS50aGVuKFcsUD0+e0YoImZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICIrUCksc2koT2kpJiZGKCJ3YXJuaW5nOiBMb2FkaW5nIGZyb20gYSBmaWxlIFVSSSAoIitPaSsiKSBpcyBub3Qgc3VwcG9ydGVkIGluIG1vc3QgYnJvd3NlcnMuIFNlZSBodHRwczovL2Vtc2NyaXB0ZW4ub3JnL2RvY3MvZ2V0dGluZ19zdGFydGVkL0ZBUS5odG1sI2hvdy1kby1pLXJ1bi1hLWxvY2FsLXdlYnNlcnZlci1mb3ItdGVzdGluZy13aHktZG9lcy1teS1wcm9ncmFtLXN0YWxsLWluLWRvd25sb2FkaW5nLW9yLXByZXBhcmluZyIpLEJlKFApfSl9ZnVuY3Rpb24gR2kodSxWLFcsUCl7cmV0dXJuIFllKFYsVyxQKX1mdW5jdGlvbiBBbigpe3ZhciB1PXtlbnY6d0csd2FzaV9zbmFwc2hvdF9wcmV2aWV3MTp3R307ZnVuY3Rpb24gVigkLGh0KXt2YXIgZHQ9JC5leHBvcnRzO3JldHVybiBNPWR0LFE9TS5tZW1vcnksYyhRLCJtZW1vcnkgbm90IGZvdW5kIGluIHdhc20gZXhwb3J0cyIpLHR0KCksRz1NLl9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUsYyhHLCJ0YWJsZSBub3QgZm91bmQgaW4gd2FzbSBleHBvcnRzIiksY2UoTS5fX3dhc21fY2FsbF9jdG9ycyksemUoIndhc20taW5zdGFudGlhdGUiKSxkdH1uaSgid2FzbS1pbnN0YW50aWF0ZSIpO3ZhciBXPWk7ZnVuY3Rpb24gUCgkKXtjKGk9PT1XLCJ0aGUgTW9kdWxlIG9iamVjdCBzaG91bGQgbm90IGJlIHJlcGxhY2VkIGR1cmluZyBhc3luYyBjb21waWxhdGlvbiAtIHBlcmhhcHMgdGhlIG9yZGVyIG9mIEhUTUwgZWxlbWVudHMgaXMgd3Jvbmc/IiksVz1udWxsLFYoJC5pbnN0YW5jZSl9aWYoaS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBpLmluc3RhbnRpYXRlV2FzbSh1LFYpfWNhdGNoKCQpe0YoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrJCkscygkKX1yZXR1cm4gR2koQixPaSx1LFApLmNhdGNoKHMpLHt9fXZhciBOZSxlaTtmdW5jdGlvbiBfbih1LFYsVz0hMCl7T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLHUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSx1LHtjb25maWd1cmFibGU6ITAsZ2V0KCl7bGV0IFA9Vz8iICh0aGUgaW5pdGlhbCB2YWx1ZSBjYW4gYmUgcHJvdmlkZWQgb24gTW9kdWxlLCBidXQgYWZ0ZXIgc3RhcnR1cCB0aGUgdmFsdWUgaXMgb25seSBsb29rZWQgZm9yIG9uIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBuYW1lKSI6IiI7QmUoYFxgTW9kdWxlLiR7dX1cYCBoYXMgYmVlbiByZXBsYWNlZCBieSBcYCR7Vn1cYGArUCl9fSl9ZnVuY3Rpb24gaHModSl7T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLHUpJiZCZShgXGBNb2R1bGUuJHt1fVxgIHdhcyBzdXBwbGllZCBidXQgXGAke3V9XGAgbm90IGluY2x1ZGVkIGluIElOQ09NSU5HX01PRFVMRV9KU19BUElgKX1mdW5jdGlvbiBRaSh1KXtyZXR1cm4gdT09PSJGU19jcmVhdGVQYXRoInx8dT09PSJGU19jcmVhdGVEYXRhRmlsZSJ8fHU9PT0iRlNfY3JlYXRlUHJlbG9hZGVkRmlsZSJ8fHU9PT0iRlNfdW5saW5rInx8dT09PSJhZGRSdW5EZXBlbmRlbmN5Inx8dT09PSJGU19jcmVhdGVMYXp5RmlsZSJ8fHU9PT0iRlNfY3JlYXRlRGV2aWNlInx8dT09PSJyZW1vdmVSdW5EZXBlbmRlbmN5In1mdW5jdGlvbiBubih1LFYpe3R5cGVvZiBnbG9iYWxUaGlzPCJ1IiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsdSx7Y29uZmlndXJhYmxlOiEwLGdldCgpe0FpKCJgIit1KyJgIGlzIG5vdCBsb25nZXIgZGVmaW5lZCBieSBlbXNjcmlwdGVuLiAiK1YpfX0pfW5uKCJidWZmZXIiLCJQbGVhc2UgdXNlIEhFQVA4LmJ1ZmZlciBvciB3YXNtTWVtb3J5LmJ1ZmZlciIpO2Z1bmN0aW9uIGtpKHUpe3R5cGVvZiBnbG9iYWxUaGlzPCJ1IiYmIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsVGhpcyx1KSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsdSx7Y29uZmlndXJhYmxlOiEwLGdldCgpe3ZhciBWPSJgIit1KyJgIGlzIGEgbGlicmFyeSBzeW1ib2wgYW5kIG5vdCBpbmNsdWRlZCBieSBkZWZhdWx0OyBhZGQgaXQgdG8geW91ciBsaWJyYXJ5LmpzIF9fZGVwcyBvciB0byBERUZBVUxUX0xJQlJBUllfRlVOQ1NfVE9fSU5DTFVERSBvbiB0aGUgY29tbWFuZCBsaW5lIixXPXU7Vy5zdGFydHNXaXRoKCJfIil8fChXPSIkIit1KSxWKz0iIChlLmcuIC1zREVGQVVMVF9MSUJSQVJZX0ZVTkNTX1RPX0lOQ0xVREU9JyIrVysiJykiLFFpKHUpJiYoVis9Ii4gQWx0ZXJuYXRpdmVseSwgZm9yY2luZyBmaWxlc3lzdGVtIHN1cHBvcnQgKC1zRk9SQ0VfRklMRVNZU1RFTSkgY2FuIGV4cG9ydCB0aGlzIGZvciB5b3UiKSxBaShWKX19KSxzbih1KX1mdW5jdGlvbiBzbih1KXtPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksdSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLHUse2NvbmZpZ3VyYWJsZTohMCxnZXQoKXt2YXIgVj0iJyIrdSsiJyB3YXMgbm90IGV4cG9ydGVkLiBhZGQgaXQgdG8gRVhQT1JURURfUlVOVElNRV9NRVRIT0RTIChzZWUgdGhlIEVtc2NyaXB0ZW4gRkFRKSI7UWkodSkmJihWKz0iLiBBbHRlcm5hdGl2ZWx5LCBmb3JjaW5nIGZpbGVzeXN0ZW0gc3VwcG9ydCAoLXNGT1JDRV9GSUxFU1lTVEVNKSBjYW4gZXhwb3J0IHRoaXMgZm9yIHlvdSIpLEJlKFYpfX0pfXZhciBDcz17MzI4NDYwOigpPT57Y29uc29sZS5sb2coIm5vIHNob3ciKX19O2Z1bmN0aW9uIGNzKHUpe3RoaXMubmFtZT0iRXhpdFN0YXR1cyIsdGhpcy5tZXNzYWdlPWBQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCR7dX0pYCx0aGlzLnN0YXR1cz11fXZhciB4bj11PT57Zm9yKDt1Lmxlbmd0aD4wOyl1LnNoaWZ0KCkoaSl9LFBuPXU9PihjKHR5cGVvZiB1PT0ibnVtYmVyIiksdT4+Pj0wLCIweCIrdS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpKSxBaT11PT57QWkuc2hvd258fChBaS5zaG93bj17fSksQWkuc2hvd25bdV18fChBaS5zaG93blt1XT0xLEYodSkpfTtmdW5jdGlvbiBDaSh1KXt0aGlzLmV4Y1B0cj11LHRoaXMucHRyPXUtMjQsdGhpcy5zZXRfdHlwZT1mdW5jdGlvbihWKXtIW3RoaXMucHRyKzQ+PjJdPVZ9LHRoaXMuZ2V0X3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gSFt0aGlzLnB0cis0Pj4yXX0sdGhpcy5zZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbihWKXtIW3RoaXMucHRyKzg+PjJdPVZ9LHRoaXMuZ2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gSFt0aGlzLnB0cis4Pj4yXX0sdGhpcy5zZXRfY2F1Z2h0PWZ1bmN0aW9uKFYpe1Y9Vj8xOjAsZ1t0aGlzLnB0cisxMj4+MF09Vn0sdGhpcy5nZXRfY2F1Z2h0PWZ1bmN0aW9uKCl7cmV0dXJuIGdbdGhpcy5wdHIrMTI+PjBdIT0wfSx0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihWKXtWPVY/MTowLGdbdGhpcy5wdHIrMTM+PjBdPVZ9LHRoaXMuZ2V0X3JldGhyb3duPWZ1bmN0aW9uKCl7cmV0dXJuIGdbdGhpcy5wdHIrMTM+PjBdIT0wfSx0aGlzLmluaXQ9ZnVuY3Rpb24oVixXKXt0aGlzLnNldF9hZGp1c3RlZF9wdHIoMCksdGhpcy5zZXRfdHlwZShWKSx0aGlzLnNldF9kZXN0cnVjdG9yKFcpfSx0aGlzLnNldF9hZGp1c3RlZF9wdHI9ZnVuY3Rpb24oVil7SFt0aGlzLnB0cisxNj4+Ml09Vn0sdGhpcy5nZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKCl7cmV0dXJuIEhbdGhpcy5wdHIrMTY+PjJdfSx0aGlzLmdldF9leGNlcHRpb25fcHRyPWZ1bmN0aW9uKCl7dmFyIFY9cFgodGhpcy5nZXRfdHlwZSgpKTtpZihWKXJldHVybiBIW3RoaXMuZXhjUHRyPj4yXTt2YXIgVz10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtyZXR1cm4gVyE9PTA/Vzp0aGlzLmV4Y1B0cn19dmFyIEpuPTAsbHM9MDtmdW5jdGlvbiBhbyh1LFYsVyl7dmFyIFA9bmV3IENpKHUpO1AuaW5pdChWLFcpLEpuPXUsbHMrKyxjKCExLCJFeGNlcHRpb24gdGhyb3duLCBidXQgZXhjZXB0aW9uIGNhdGNoaW5nIGlzIG5vdCBlbmFibGVkLiBDb21waWxlIHdpdGggLXNOT19ESVNBQkxFX0VYQ0VQVElPTl9DQVRDSElORyBvciAtc0VYQ0VQVElPTl9DQVRDSElOR19BTExPV0VEPVsuLl0gdG8gY2F0Y2guIil9ZnVuY3Rpb24gcWkodSxWLFcsUCwkKXt9ZnVuY3Rpb24gaG4odSl7c3dpdGNoKHUpe2Nhc2UgMTpyZXR1cm4gMDtjYXNlIDI6cmV0dXJuIDE7Y2FzZSA0OnJldHVybiAyO2Nhc2UgODpyZXR1cm4gMztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoYFVua25vd24gdHlwZSBzaXplOiAke3V9YCl9fWZ1bmN0aW9uIGpvKCl7Zm9yKHZhciB1PW5ldyBBcnJheSgyNTYpLFY9MDtWPDI1NjsrK1YpdVtWXT1TdHJpbmcuZnJvbUNoYXJDb2RlKFYpO2RzPXV9dmFyIGRzPXZvaWQgMDtmdW5jdGlvbiBvbih1KXtmb3IodmFyIFY9IiIsVz11O09bV107KVYrPWRzW09bVysrXV07cmV0dXJuIFZ9dmFyIHdzPXt9LFZvPXt9LGJyPXt9LFNvPXZvaWQgMDtmdW5jdGlvbiAkZSh1KXt0aHJvdyBuZXcgU28odSl9dmFyIGFhPXZvaWQgMDtmdW5jdGlvbiBZcih1KXt0aHJvdyBuZXcgYWEodSl9ZnVuY3Rpb24geHModSxWLFcpe3UuZm9yRWFjaChmdW5jdGlvbihmdCl7YnJbZnRdPVZ9KTtmdW5jdGlvbiBQKGZ0KXt2YXIgR3Q9VyhmdCk7R3QubGVuZ3RoIT09dS5sZW5ndGgmJllyKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7Zm9yKHZhciBMdD0wO0x0PHUubGVuZ3RoOysrTHQpVG4odVtMdF0sR3RbTHRdKX12YXIgJD1uZXcgQXJyYXkoVi5sZW5ndGgpLGh0PVtdLGR0PTA7Vi5mb3JFYWNoKChmdCxHdCk9PntWby5oYXNPd25Qcm9wZXJ0eShmdCk/JFtHdF09Vm9bZnRdOihodC5wdXNoKGZ0KSx3cy5oYXNPd25Qcm9wZXJ0eShmdCl8fCh3c1tmdF09W10pLHdzW2Z0XS5wdXNoKCgpPT57JFtHdF09Vm9bZnRdLCsrZHQsZHQ9PT1odC5sZW5ndGgmJlAoJCl9KSl9KSxodC5sZW5ndGg9PT0wJiZQKCQpfWZ1bmN0aW9uIGdzKHUsVixXPXt9KXt2YXIgUD1WLm5hbWU7aWYodXx8JGUoYHR5cGUgIiR7UH0iIG11c3QgaGF2ZSBhIHBvc2l0aXZlIGludGVnZXIgdHlwZWlkIHBvaW50ZXJgKSxWby5oYXNPd25Qcm9wZXJ0eSh1KSl7aWYoVy5pZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zKXJldHVybjskZShgQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyR7UH0nIHR3aWNlYCl9aWYoVm9bdV09VixkZWxldGUgYnJbdV0sd3MuaGFzT3duUHJvcGVydHkodSkpe3ZhciAkPXdzW3VdO2RlbGV0ZSB3c1t1XSwkLmZvckVhY2goaHQ9Pmh0KCkpfX1mdW5jdGlvbiBUbih1LFYsVz17fSl7aWYoISgiYXJnUGFja0FkdmFuY2UiaW4gVikpdGhyb3cgbmV3IFR5cGVFcnJvcigicmVnaXN0ZXJUeXBlIHJlZ2lzdGVyZWRJbnN0YW5jZSByZXF1aXJlcyBhcmdQYWNrQWR2YW5jZSIpO3JldHVybiBncyh1LFYsVyl9ZnVuY3Rpb24gaHIodSxWLFcsUCwkKXt2YXIgaHQ9aG4oVyk7Vj1vbihWKSxUbih1LHtuYW1lOlYsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKGR0KXtyZXR1cm4hIWR0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKGR0LGZ0KXtyZXR1cm4gZnQ/UDokfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZ1bmN0aW9uKGR0KXt2YXIgZnQ7aWYoVz09PTEpZnQ9ZztlbHNlIGlmKFc9PT0yKWZ0PUQ7ZWxzZSBpZihXPT09NClmdD14O2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBib29sZWFuIHR5cGUgc2l6ZTogIitWKTtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoZnRbZHQ+Pmh0XSl9LGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gVWgodSl7aWYoISh0aGlzIGluc3RhbmNlb2YgbXIpfHwhKHUgaW5zdGFuY2VvZiBtcikpcmV0dXJuITE7Zm9yKHZhciBWPXRoaXMuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsVz10aGlzLiQkLnB0cixQPXUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsJD11LiQkLnB0cjtWLmJhc2VDbGFzczspVz1WLnVwY2FzdChXKSxWPVYuYmFzZUNsYXNzO2Zvcig7UC5iYXNlQ2xhc3M7KSQ9UC51cGNhc3QoJCksUD1QLmJhc2VDbGFzcztyZXR1cm4gVj09PVAmJlc9PT0kfWZ1bmN0aW9uIE1oKHUpe3JldHVybntjb3VudDp1LmNvdW50LGRlbGV0ZVNjaGVkdWxlZDp1LmRlbGV0ZVNjaGVkdWxlZCxwcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZTp1LnByZXNlcnZlUG9pbnRlck9uRGVsZXRlLHB0cjp1LnB0cixwdHJUeXBlOnUucHRyVHlwZSxzbWFydFB0cjp1LnNtYXJ0UHRyLHNtYXJ0UHRyVHlwZTp1LnNtYXJ0UHRyVHlwZX19ZnVuY3Rpb24gT24odSl7ZnVuY3Rpb24gVihXKXtyZXR1cm4gVy4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfSRlKFYodSkrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX12YXIgY3I9ITE7ZnVuY3Rpb24gSWkodSl7fWZ1bmN0aW9uIE9vKHUpe3Uuc21hcnRQdHI/dS5zbWFydFB0clR5cGUucmF3RGVzdHJ1Y3Rvcih1LnNtYXJ0UHRyKTp1LnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IodS5wdHIpfWZ1bmN0aW9uIEtjKHUpe3UuY291bnQudmFsdWUtPTE7dmFyIFY9dS5jb3VudC52YWx1ZT09PTA7ViYmT28odSl9ZnVuY3Rpb24gWGModSxWLFcpe2lmKFY9PT1XKXJldHVybiB1O2lmKFcuYmFzZUNsYXNzPT09dm9pZCAwKXJldHVybiBudWxsO3ZhciBQPVhjKHUsVixXLmJhc2VDbGFzcyk7cmV0dXJuIFA9PT1udWxsP251bGw6Vy5kb3duY2FzdChQKX12YXIgcWM9e307ZnVuY3Rpb24gUWgoKXtyZXR1cm4gT2JqZWN0LmtleXMoWGEpLmxlbmd0aH1mdW5jdGlvbiBraCgpe3ZhciB1PVtdO2Zvcih2YXIgViBpbiBYYSlYYS5oYXNPd25Qcm9wZXJ0eShWKSYmdS5wdXNoKFhhW1ZdKTtyZXR1cm4gdX12YXIgQWE9W107ZnVuY3Rpb24gTGgoKXtmb3IoO0FhLmxlbmd0aDspe3ZhciB1PUFhLnBvcCgpO3UuJCQuZGVsZXRlU2NoZWR1bGVkPSExLHUuZGVsZXRlKCl9fXZhciBoYT12b2lkIDA7ZnVuY3Rpb24gS2EodSl7aGE9dSxBYS5sZW5ndGgmJmhhJiZoYShMaCl9ZnVuY3Rpb24gVmQoKXtpLmdldEluaGVyaXRlZEluc3RhbmNlQ291bnQ9UWgsaS5nZXRMaXZlSW5oZXJpdGVkSW5zdGFuY2VzPWtoLGkuZmx1c2hQZW5kaW5nRGVsZXRlcz1MaCxpLnNldERlbGF5RnVuY3Rpb249S2F9dmFyIFhhPXt9O2Z1bmN0aW9uIFNkKHUsVil7Zm9yKFY9PT12b2lkIDAmJiRlKCJwdHIgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKTt1LmJhc2VDbGFzczspVj11LnVwY2FzdChWKSx1PXUuYmFzZUNsYXNzO3JldHVybiBWfWZ1bmN0aW9uIHFhKHUsVil7cmV0dXJuIFY9U2QodSxWKSxYYVtWXX1mdW5jdGlvbiBscih1LFYpeyghVi5wdHJUeXBlfHwhVi5wdHIpJiZZcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpO3ZhciBXPSEhVi5zbWFydFB0clR5cGUsUD0hIVYuc21hcnRQdHI7cmV0dXJuIFchPT1QJiZZcigiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIiksVi5jb3VudD17dmFsdWU6MX0sJGEoT2JqZWN0LmNyZWF0ZSh1LHskJDp7dmFsdWU6Vn19KSl9ZnVuY3Rpb24ga0EodSl7dmFyIFY9dGhpcy5nZXRQb2ludGVlKHUpO2lmKCFWKXJldHVybiB0aGlzLmRlc3RydWN0b3IodSksbnVsbDt2YXIgVz1xYSh0aGlzLnJlZ2lzdGVyZWRDbGFzcyxWKTtpZihXIT09dm9pZCAwKXtpZihXLiQkLmNvdW50LnZhbHVlPT09MClyZXR1cm4gVy4kJC5wdHI9VixXLiQkLnNtYXJ0UHRyPXUsVy5jbG9uZSgpO3ZhciBQPVcuY2xvbmUoKTtyZXR1cm4gdGhpcy5kZXN0cnVjdG9yKHUpLFB9ZnVuY3Rpb24gJCgpe3JldHVybiB0aGlzLmlzU21hcnRQb2ludGVyP2xyKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOlYsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6dX0pOmxyKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOnV9KX12YXIgaHQ9dGhpcy5yZWdpc3RlcmVkQ2xhc3MuZ2V0QWN0dWFsVHlwZShWKSxkdD1xY1todF07aWYoIWR0KXJldHVybiAkLmNhbGwodGhpcyk7dmFyIGZ0O3RoaXMuaXNDb25zdD9mdD1kdC5jb25zdFBvaW50ZXJUeXBlOmZ0PWR0LnBvaW50ZXJUeXBlO3ZhciBHdD1YYyhWLHRoaXMucmVnaXN0ZXJlZENsYXNzLGZ0LnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIEd0PT09bnVsbD8kLmNhbGwodGhpcyk6dGhpcy5pc1NtYXJ0UG9pbnRlcj9scihmdC5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6ZnQscHRyOkd0LHNtYXJ0UHRyVHlwZTp0aGlzLHNtYXJ0UHRyOnV9KTpscihmdC5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6ZnQscHRyOkd0fSl9dmFyICRhPWZ1bmN0aW9uKHUpe3JldHVybiB0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnk+InUiPygkYT1WPT5WLHUpOihjcj1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoVj0+e2NvbnNvbGUud2FybihWLmxlYWtXYXJuaW5nLnN0YWNrLnJlcGxhY2UoL15FcnJvcjogLywiIikpLEtjKFYuJCQpfSksJGE9Vj0+e3ZhciBXPVYuJCQsUD0hIVcuc21hcnRQdHI7aWYoUCl7dmFyICQ9eyQkOld9LGh0PVcucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7JC5sZWFrV2FybmluZz1uZXcgRXJyb3IoYEVtYmluZCBmb3VuZCBhIGxlYWtlZCBDKysgaW5zdGFuY2UgJHtodC5uYW1lfSA8JHtQbihXLnB0cil9Pi4KV2UnbGwgZnJlZSBpdCBhdXRvbWF0aWNhbGx5IGluIHRoaXMgY2FzZSwgYnV0IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgcmVsaWFibGUgYWNyb3NzIHZhcmlvdXMgZW52aXJvbm1lbnRzLgpNYWtlIHN1cmUgdG8gaW52b2tlIC5kZWxldGUoKSBtYW51YWxseSBvbmNlIHlvdSdyZSBkb25lIHdpdGggdGhlIGluc3RhbmNlIGluc3RlYWQuCk9yaWdpbmFsbHkgYWxsb2NhdGVkYCksImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSgkLmxlYWtXYXJuaW5nLGtBKSxjci5yZWdpc3RlcihWLCQsVil9cmV0dXJuIFZ9LElpPVY9PmNyLnVucmVnaXN0ZXIoViksJGEodSkpfTtmdW5jdGlvbiBPZCgpe2lmKHRoaXMuJCQucHRyfHxPbih0aGlzKSx0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXJldHVybiB0aGlzLiQkLmNvdW50LnZhbHVlKz0xLHRoaXM7dmFyIHU9JGEoT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykseyQkOnt2YWx1ZTpNaCh0aGlzLiQkKX19KSk7cmV0dXJuIHUuJCQuY291bnQudmFsdWUrPTEsdS4kJC5kZWxldGVTY2hlZHVsZWQ9ITEsdX1mdW5jdGlvbiBkcigpe3RoaXMuJCQucHRyfHxPbih0aGlzKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUmJiRlKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksSWkodGhpcyksS2ModGhpcy4kJCksdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZXx8KHRoaXMuJCQuc21hcnRQdHI9dm9pZCAwLHRoaXMuJCQucHRyPXZvaWQgMCl9ZnVuY3Rpb24gJGMoKXtyZXR1cm4hdGhpcy4kJC5wdHJ9ZnVuY3Rpb24gdGwoKXtyZXR1cm4gdGhpcy4kJC5wdHJ8fE9uKHRoaXMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkJiYhdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSYmJGUoIk9iamVjdCBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24iKSxBYS5wdXNoKHRoaXMpLEFhLmxlbmd0aD09PTEmJmhhJiZoYShMaCksdGhpcy4kJC5kZWxldGVTY2hlZHVsZWQ9ITAsdGhpc31mdW5jdGlvbiB5aCgpe21yLnByb3RvdHlwZS5pc0FsaWFzT2Y9VWgsbXIucHJvdG90eXBlLmNsb25lPU9kLG1yLnByb3RvdHlwZS5kZWxldGU9ZHIsbXIucHJvdG90eXBlLmlzRGVsZXRlZD0kYyxtci5wcm90b3R5cGUuZGVsZXRlTGF0ZXI9dGx9ZnVuY3Rpb24gbXIoKXt9dmFyIHdoPTQ4LEJkPTU3O2Z1bmN0aW9uIHhoKHUpe2lmKHU9PT12b2lkIDApcmV0dXJuIl91bmtub3duIjt1PXUucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCIkIik7dmFyIFY9dS5jaGFyQ29kZUF0KDApO3JldHVybiBWPj13aCYmVjw9QmQ/YF8ke3V9YDp1fWZ1bmN0aW9uIFBoKHUsVil7cmV0dXJuIHU9eGgodSkse1t1XTpmdW5jdGlvbigpe3JldHVybiBWLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19W3VdfWZ1bmN0aW9uIGVsKHUsVixXKXtpZih1W1ZdLm92ZXJsb2FkVGFibGU9PT12b2lkIDApe3ZhciBQPXVbVl07dVtWXT1mdW5jdGlvbigpe3JldHVybiB1W1ZdLm92ZXJsb2FkVGFibGUuaGFzT3duUHJvcGVydHkoYXJndW1lbnRzLmxlbmd0aCl8fCRlKGBGdW5jdGlvbiAnJHtXfScgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzICgke2FyZ3VtZW50cy5sZW5ndGh9KSAtIGV4cGVjdHMgb25lIG9mICgke3VbVl0ub3ZlcmxvYWRUYWJsZX0pIWApLHVbVl0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHVbVl0ub3ZlcmxvYWRUYWJsZT1bXSx1W1ZdLm92ZXJsb2FkVGFibGVbUC5hcmdDb3VudF09UH19ZnVuY3Rpb24gaWwodSxWLFcpe2kuaGFzT3duUHJvcGVydHkodSk/KChXPT09dm9pZCAwfHxpW3VdLm92ZXJsb2FkVGFibGUhPT12b2lkIDAmJmlbdV0ub3ZlcmxvYWRUYWJsZVtXXSE9PXZvaWQgMCkmJiRlKGBDYW5ub3QgcmVnaXN0ZXIgcHVibGljIG5hbWUgJyR7dX0nIHR3aWNlYCksZWwoaSx1LHUpLGkuaGFzT3duUHJvcGVydHkoVykmJiRlKGBDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgb3ZlcmxvYWRzIG9mIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzICgke1d9KSFgKSxpW3VdLm92ZXJsb2FkVGFibGVbV109Vik6KGlbdV09VixXIT09dm9pZCAwJiYoaVt1XS5udW1Bcmd1bWVudHM9VykpfWZ1bmN0aW9uIEdkKHUsVixXLFAsJCxodCxkdCxmdCl7dGhpcy5uYW1lPXUsdGhpcy5jb25zdHJ1Y3Rvcj1WLHRoaXMuaW5zdGFuY2VQcm90b3R5cGU9Vyx0aGlzLnJhd0Rlc3RydWN0b3I9UCx0aGlzLmJhc2VDbGFzcz0kLHRoaXMuZ2V0QWN0dWFsVHlwZT1odCx0aGlzLnVwY2FzdD1kdCx0aGlzLmRvd25jYXN0PWZ0LHRoaXMucHVyZVZpcnR1YWxGdW5jdGlvbnM9W119ZnVuY3Rpb24gdEEodSxWLFcpe2Zvcig7ViE9PVc7KVYudXBjYXN0fHwkZShgRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAke1cubmFtZX0sIGdvdCBhbiBpbnN0YW5jZSBvZiAke1YubmFtZX1gKSx1PVYudXBjYXN0KHUpLFY9Vi5iYXNlQ2xhc3M7cmV0dXJuIHV9ZnVuY3Rpb24gV2QodSxWKXtpZihWPT09bnVsbClyZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSYmJGUoYG51bGwgaXMgbm90IGEgdmFsaWQgJHt0aGlzLm5hbWV9YCksMDtWLiQkfHwkZShgQ2Fubm90IHBhc3MgIiR7bGEoVil9IiBhcyBhICR7dGhpcy5uYW1lfWApLFYuJCQucHRyfHwkZShgQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCk7dmFyIFc9Vi4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcyxQPXRBKFYuJCQucHRyLFcsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBQfWZ1bmN0aW9uIERkKHUsVil7dmFyIFc7aWYoVj09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJiRlKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApLHRoaXMuaXNTbWFydFBvaW50ZXI/KFc9dGhpcy5yYXdDb25zdHJ1Y3RvcigpLHUhPT1udWxsJiZ1LnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLFcpLFcpOjA7Vi4kJHx8JGUoYENhbm5vdCBwYXNzICIke2xhKFYpfSIgYXMgYSAke3RoaXMubmFtZX1gKSxWLiQkLnB0cnx8JGUoYENhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICR7dGhpcy5uYW1lfWApLCF0aGlzLmlzQ29uc3QmJlYuJCQucHRyVHlwZS5pc0NvbnN0JiYkZShgQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAke1YuJCQuc21hcnRQdHJUeXBlP1YuJCQuc21hcnRQdHJUeXBlLm5hbWU6Vi4kJC5wdHJUeXBlLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApO3ZhciBQPVYuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7aWYoVz10QShWLiQkLnB0cixQLHRoaXMucmVnaXN0ZXJlZENsYXNzKSx0aGlzLmlzU21hcnRQb2ludGVyKXN3aXRjaChWLiQkLnNtYXJ0UHRyPT09dm9pZCAwJiYkZSgiUGFzc2luZyByYXcgcG9pbnRlciB0byBzbWFydCBwb2ludGVyIGlzIGlsbGVnYWwiKSx0aGlzLnNoYXJpbmdQb2xpY3kpe2Nhc2UgMDpWLiQkLnNtYXJ0UHRyVHlwZT09PXRoaXM/Vz1WLiQkLnNtYXJ0UHRyOiRlKGBDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICR7Vi4kJC5zbWFydFB0clR5cGU/Vi4kJC5zbWFydFB0clR5cGUubmFtZTpWLiQkLnB0clR5cGUubmFtZX0gdG8gcGFyYW1ldGVyIHR5cGUgJHt0aGlzLm5hbWV9YCk7YnJlYWs7Y2FzZSAxOlc9Vi4kJC5zbWFydFB0cjticmVhaztjYXNlIDI6aWYoVi4kJC5zbWFydFB0clR5cGU9PT10aGlzKVc9Vi4kJC5zbWFydFB0cjtlbHNle3ZhciAkPVYuY2xvbmUoKTtXPXRoaXMucmF3U2hhcmUoVyxCby50b0hhbmRsZShmdW5jdGlvbigpeyQuZGVsZXRlKCl9KSksdSE9PW51bGwmJnUucHVzaCh0aGlzLnJhd0Rlc3RydWN0b3IsVyl9YnJlYWs7ZGVmYXVsdDokZSgiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9cmV0dXJuIFd9ZnVuY3Rpb24gVWQodSxWKXtpZihWPT09bnVsbClyZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSYmJGUoYG51bGwgaXMgbm90IGEgdmFsaWQgJHt0aGlzLm5hbWV9YCksMDtWLiQkfHwkZShgQ2Fubm90IHBhc3MgIiR7bGEoVil9IiBhcyBhICR7dGhpcy5uYW1lfWApLFYuJCQucHRyfHwkZShgQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCksVi4kJC5wdHJUeXBlLmlzQ29uc3QmJiRlKGBDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICR7Vi4kJC5wdHJUeXBlLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApO3ZhciBXPVYuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsUD10QShWLiQkLnB0cixXLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gUH1mdW5jdGlvbiBMQSh1KXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoeFt1Pj4yXSl9ZnVuY3Rpb24gZUEodSl7cmV0dXJuIHRoaXMucmF3R2V0UG9pbnRlZSYmKHU9dGhpcy5yYXdHZXRQb2ludGVlKHUpKSx1fWZ1bmN0aW9uIE1kKHUpe3RoaXMucmF3RGVzdHJ1Y3RvciYmdGhpcy5yYXdEZXN0cnVjdG9yKHUpfWZ1bmN0aW9uIFFkKHUpe3UhPT1udWxsJiZ1LmRlbGV0ZSgpfWZ1bmN0aW9uIHlBKCl7SG8ucHJvdG90eXBlLmdldFBvaW50ZWU9ZUEsSG8ucHJvdG90eXBlLmRlc3RydWN0b3I9TWQsSG8ucHJvdG90eXBlLmFyZ1BhY2tBZHZhbmNlPTgsSG8ucHJvdG90eXBlLnJlYWRWYWx1ZUZyb21Qb2ludGVyPUxBLEhvLnByb3RvdHlwZS5kZWxldGVPYmplY3Q9UWQsSG8ucHJvdG90eXBlLmZyb21XaXJlVHlwZT1rQX1mdW5jdGlvbiBIbyh1LFYsVyxQLCQsaHQsZHQsZnQsR3QsTHQscmUpe3RoaXMubmFtZT11LHRoaXMucmVnaXN0ZXJlZENsYXNzPVYsdGhpcy5pc1JlZmVyZW5jZT1XLHRoaXMuaXNDb25zdD1QLHRoaXMuaXNTbWFydFBvaW50ZXI9JCx0aGlzLnBvaW50ZWVUeXBlPWh0LHRoaXMuc2hhcmluZ1BvbGljeT1kdCx0aGlzLnJhd0dldFBvaW50ZWU9ZnQsdGhpcy5yYXdDb25zdHJ1Y3Rvcj1HdCx0aGlzLnJhd1NoYXJlPUx0LHRoaXMucmF3RGVzdHJ1Y3Rvcj1yZSwhJCYmVi5iYXNlQ2xhc3M9PT12b2lkIDA/UD8odGhpcy50b1dpcmVUeXBlPVdkLHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGwpOih0aGlzLnRvV2lyZVR5cGU9VWQsdGhpcy5kZXN0cnVjdG9yRnVuY3Rpb249bnVsbCk6dGhpcy50b1dpcmVUeXBlPURkfWZ1bmN0aW9uIG5sKHUsVixXKXtpLmhhc093blByb3BlcnR5KHUpfHxZcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKSxpW3VdLm92ZXJsb2FkVGFibGUhPT12b2lkIDAmJlchPT12b2lkIDA/aVt1XS5vdmVybG9hZFRhYmxlW1ddPVY6KGlbdV09VixpW3VdLmFyZ0NvdW50PVcpfXZhciB2bz0odSxWLFcpPT57YygiZHluQ2FsbF8iK3UgaW4gaSxgYmFkIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSAtIGR5bkNhbGwgZnVuY3Rpb24gbm90IGZvdW5kIGZvciBzaWcgJyR7dX0nYCksVyYmVy5sZW5ndGg/YyhXLmxlbmd0aD09PXUuc3Vic3RyaW5nKDEpLnJlcGxhY2UoL2ovZywiLS0iKS5sZW5ndGgpOmModS5sZW5ndGg9PTEpO3ZhciBQPWlbImR5bkNhbGxfIit1XTtyZXR1cm4gVyYmVy5sZW5ndGg/UC5hcHBseShudWxsLFtWXS5jb25jYXQoVykpOlAuY2FsbChudWxsLFYpfSxpQT1bXSxKaD11PT57dmFyIFY9aUFbdV07cmV0dXJuIFZ8fCh1Pj1pQS5sZW5ndGgmJihpQS5sZW5ndGg9dSsxKSxpQVt1XT1WPUcuZ2V0KHUpKSxjKEcuZ2V0KHUpPT1WLCJKYXZhU2NyaXB0LXNpZGUgV2FzbSBmdW5jdGlvbiB0YWJsZSBtaXJyb3IgaXMgb3V0IG9mIGRhdGUhIiksVn0sa2Q9KHUsVixXKT0+e2lmKHUuaW5jbHVkZXMoImoiKSlyZXR1cm4gdm8odSxWLFcpO2MoSmgoViksYG1pc3NpbmcgdGFibGUgZW50cnkgaW4gZHluQ2FsbDogJHtWfWApO3ZhciBQPUpoKFYpLmFwcGx5KG51bGwsVyk7cmV0dXJuIFB9LExkPSh1LFYpPT57Yyh1LmluY2x1ZGVzKCJqIil8fHUuaW5jbHVkZXMoInAiKSwiZ2V0RHluQ2FsbGVyIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGk2NCBzaWdzIik7dmFyIFc9W107cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFcubGVuZ3RoPTAsT2JqZWN0LmFzc2lnbihXLGFyZ3VtZW50cyksa2QodSxWLFcpfX07ZnVuY3Rpb24gam4odSxWKXt1PW9uKHUpO2Z1bmN0aW9uIFcoKXtyZXR1cm4gdS5pbmNsdWRlcygiaiIpP0xkKHUsVik6SmgoVil9dmFyIFA9VygpO3JldHVybiB0eXBlb2YgUCE9ImZ1bmN0aW9uIiYmJGUoYHVua25vd24gZnVuY3Rpb24gcG9pbnRlciB3aXRoIHNpZ25hdHVyZSAke3V9OiAke1Z9YCksUH1mdW5jdGlvbiBzbCh1LFYpe3ZhciBXPVBoKFYsZnVuY3Rpb24oUCl7dGhpcy5uYW1lPVYsdGhpcy5tZXNzYWdlPVA7dmFyICQ9bmV3IEVycm9yKFApLnN0YWNrOyQhPT12b2lkIDAmJih0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKStgCmArJC5yZXBsYWNlKC9eRXJyb3IoOlteXG5dKik/XG4vLCIiKSl9KTtyZXR1cm4gVy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh1LnByb3RvdHlwZSksVy5wcm90b3R5cGUuY29uc3RydWN0b3I9VyxXLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1lc3NhZ2U9PT12b2lkIDA/dGhpcy5uYW1lOmAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWB9LFd9dmFyIGpoPXZvaWQgMDtmdW5jdGlvbiBuQSh1KXt2YXIgVj1tWCh1KSxXPW9uKFYpO3JldHVybiBIQShWKSxXfWZ1bmN0aW9uIGNhKHUsVil7dmFyIFc9W10sUD17fTtmdW5jdGlvbiAkKGh0KXtpZighUFtodF0mJiFWb1todF0pe2lmKGJyW2h0XSl7YnJbaHRdLmZvckVhY2goJCk7cmV0dXJufVcucHVzaChodCksUFtodF09ITB9fXRocm93IFYuZm9yRWFjaCgkKSxuZXcgamgoYCR7dX06IGArVy5tYXAobkEpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gSGgodSxWLFcsUCwkLGh0LGR0LGZ0LEd0LEx0LHJlLHVlLGZlKXtyZT1vbihyZSksaHQ9am4oJCxodCksZnQmJihmdD1qbihkdCxmdCkpLEx0JiYoTHQ9am4oR3QsTHQpKSxmZT1qbih1ZSxmZSk7dmFyIEVlPXhoKHJlKTtpbChFZSxmdW5jdGlvbigpe2NhKGBDYW5ub3QgY29uc3RydWN0ICR7cmV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCxbUF0pfSkseHMoW3UsVixXXSxQP1tQXTpbXSxmdW5jdGlvbihWZSl7VmU9VmVbMF07dmFyIGRpLGxuO1A/KGRpPVZlLnJlZ2lzdGVyZWRDbGFzcyxsbj1kaS5pbnN0YW5jZVByb3RvdHlwZSk6bG49bXIucHJvdG90eXBlO3ZhciBSbj1QaChFZSxmdW5jdGlvbigpe2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSE9PXF0KXRocm93IG5ldyBTbygiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiK3JlKTtpZihiZS5jb25zdHJ1Y3Rvcl9ib2R5PT09dm9pZCAwKXRocm93IG5ldyBTbyhyZSsiIGhhcyBubyBhY2Nlc3NpYmxlIGNvbnN0cnVjdG9yIik7dmFyIG1zPWJlLmNvbnN0cnVjdG9yX2JvZHlbYXJndW1lbnRzLmxlbmd0aF07aWYobXM9PT12b2lkIDApdGhyb3cgbmV3IFNvKGBUcmllZCB0byBpbnZva2UgY3RvciBvZiAke3JlfSB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCR7YXJndW1lbnRzLmxlbmd0aH0pIC0gZXhwZWN0ZWQgKCR7T2JqZWN0LmtleXMoYmUuY29uc3RydWN0b3JfYm9keSkudG9TdHJpbmcoKX0pIHBhcmFtZXRlcnMgaW5zdGVhZCFgKTtyZXR1cm4gbXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkscXQ9T2JqZWN0LmNyZWF0ZShsbix7Y29uc3RydWN0b3I6e3ZhbHVlOlJufX0pO1JuLnByb3RvdHlwZT1xdDt2YXIgYmU9bmV3IEdkKHJlLFJuLHF0LGZlLGRpLGh0LGZ0LEx0KTtiZS5iYXNlQ2xhc3MmJihiZS5iYXNlQ2xhc3MuX19kZXJpdmVkQ2xhc3Nlcz09PXZvaWQgMCYmKGJlLmJhc2VDbGFzcy5fX2Rlcml2ZWRDbGFzc2VzPVtdKSxiZS5iYXNlQ2xhc3MuX19kZXJpdmVkQ2xhc3Nlcy5wdXNoKGJlKSk7dmFyIFRzPW5ldyBIbyhyZSxiZSwhMCwhMSwhMSksWm49bmV3IEhvKHJlKyIqIixiZSwhMSwhMSwhMSksS289bmV3IEhvKHJlKyIgY29uc3QqIixiZSwhMSwhMCwhMSk7cmV0dXJuIHFjW3VdPXtwb2ludGVyVHlwZTpabixjb25zdFBvaW50ZXJUeXBlOktvfSxubChFZSxSbiksW1RzLFpuLEtvXX0pfWZ1bmN0aW9uIHZoKHUsVil7Zm9yKHZhciBXPVtdLFA9MDtQPHU7UCsrKVcucHVzaChIW1YrUCo0Pj4yXSk7cmV0dXJuIFd9ZnVuY3Rpb24gd0EodSl7Zm9yKDt1Lmxlbmd0aDspe3ZhciBWPXUucG9wKCksVz11LnBvcCgpO1coVil9fWZ1bmN0aW9uIG9sKHUsVil7aWYoISh1IGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBUeXBlRXJyb3IoYG5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAke3R5cGVvZiB1fSB3aGljaCBpcyBub3QgYSBmdW5jdGlvbmApO3ZhciBXPVBoKHUubmFtZXx8InVua25vd25GdW5jdGlvbk5hbWUiLGZ1bmN0aW9uKCl7fSk7Vy5wcm90b3R5cGU9dS5wcm90b3R5cGU7dmFyIFA9bmV3IFcsJD11LmFwcGx5KFAsVik7cmV0dXJuICQgaW5zdGFuY2VvZiBPYmplY3Q/JDpQfWZ1bmN0aW9uIHpoKHUsVixXLFAsJCxodCl7dmFyIGR0PVYubGVuZ3RoO2R0PDImJiRlKCJhcmdUeXBlcyBhcnJheSBzaXplIG1pc21hdGNoISBNdXN0IGF0IGxlYXN0IGdldCByZXR1cm4gdmFsdWUgYW5kICd0aGlzJyB0eXBlcyEiKSxjKCFodCwiQXN5bmMgYmluZGluZ3MgYXJlIG9ubHkgc3VwcG9ydGVkIHdpdGggSlNQSS4iKTtmb3IodmFyIGZ0PVZbMV0hPT1udWxsJiZXIT09bnVsbCxHdD0hMSxMdD0xO0x0PFYubGVuZ3RoOysrTHQpaWYoVltMdF0hPT1udWxsJiZWW0x0XS5kZXN0cnVjdG9yRnVuY3Rpb249PT12b2lkIDApe0d0PSEwO2JyZWFrfWZvcih2YXIgcmU9VlswXS5uYW1lIT09InZvaWQiLHVlPSIiLGZlPSIiLEx0PTA7THQ8ZHQtMjsrK0x0KXVlKz0oTHQhPT0wPyIsICI6IiIpKyJhcmciK0x0LGZlKz0oTHQhPT0wPyIsICI6IiIpKyJhcmciK0x0KyJXaXJlZCI7dmFyIEVlPWAKICAgICAgICByZXR1cm4gZnVuY3Rpb24gJHt4aCh1KX0oJHt1ZX0pIHsKICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPT0gJHtkdC0yfSkgewogICAgICAgICAgdGhyb3dCaW5kaW5nRXJyb3IoJ2Z1bmN0aW9uICR7dX0gY2FsbGVkIHdpdGggJHthcmd1bWVudHMubGVuZ3RofSBhcmd1bWVudHMsIGV4cGVjdGVkICR7ZHQtMn0gYXJncyEnKTsKICAgICAgICB9YDtHdCYmKEVlKz1gdmFyIGRlc3RydWN0b3JzID0gW107CmApO3ZhciBWZT1HdD8iZGVzdHJ1Y3RvcnMiOiJudWxsIixkaT1bInRocm93QmluZGluZ0Vycm9yIiwiaW52b2tlciIsImZuIiwicnVuRGVzdHJ1Y3RvcnMiLCJyZXRUeXBlIiwiY2xhc3NQYXJhbSJdLGxuPVskZSxQLCQsd0EsVlswXSxWWzFdXTtmdCYmKEVlKz0idmFyIHRoaXNXaXJlZCA9IGNsYXNzUGFyYW0udG9XaXJlVHlwZSgiK1ZlK2AsIHRoaXMpOwpgKTtmb3IodmFyIEx0PTA7THQ8ZHQtMjsrK0x0KUVlKz0idmFyIGFyZyIrTHQrIldpcmVkID0gYXJnVHlwZSIrTHQrIi50b1dpcmVUeXBlKCIrVmUrIiwgYXJnIitMdCsiKTsgLy8gIitWW0x0KzJdLm5hbWUrYApgLGRpLnB1c2goImFyZ1R5cGUiK0x0KSxsbi5wdXNoKFZbTHQrMl0pO2lmKGZ0JiYoZmU9InRoaXNXaXJlZCIrKGZlLmxlbmd0aD4wPyIsICI6IiIpK2ZlKSxFZSs9KHJlfHxodD8idmFyIHJ2ID0gIjoiIikrImludm9rZXIoZm4iKyhmZS5sZW5ndGg+MD8iLCAiOiIiKStmZStgKTsKYCxHdClFZSs9YHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKTsKYDtlbHNlIGZvcih2YXIgTHQ9ZnQ/MToyO0x0PFYubGVuZ3RoOysrTHQpe3ZhciBSbj1MdD09PTE/InRoaXNXaXJlZCI6ImFyZyIrKEx0LTIpKyJXaXJlZCI7VltMdF0uZGVzdHJ1Y3RvckZ1bmN0aW9uIT09bnVsbCYmKEVlKz1SbisiX2R0b3IoIitSbisiKTsgLy8gIitWW0x0XS5uYW1lK2AKYCxkaS5wdXNoKFJuKyJfZHRvciIpLGxuLnB1c2goVltMdF0uZGVzdHJ1Y3RvckZ1bmN0aW9uKSl9cmV0dXJuIHJlJiYoRWUrPWB2YXIgcmV0ID0gcmV0VHlwZS5mcm9tV2lyZVR5cGUocnYpOwpyZXR1cm4gcmV0OwpgKSxFZSs9YH0KYCxkaS5wdXNoKEVlKSxvbChGdW5jdGlvbixkaSkuYXBwbHkobnVsbCxsbil9ZnVuY3Rpb24geWQodSxWLFcsUCwkLGh0KXtjKFY+MCk7dmFyIGR0PXZoKFYsVyk7JD1qbihQLCQpLHhzKFtdLFt1XSxmdW5jdGlvbihmdCl7ZnQ9ZnRbMF07dmFyIEd0PWBjb25zdHJ1Y3RvciAke2Z0Lm5hbWV9YDtpZihmdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT09PXZvaWQgMCYmKGZ0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5PVtdKSxmdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVtWLTFdIT09dm9pZCAwKXRocm93IG5ldyBTbyhgQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIGNvbnN0cnVjdG9ycyB3aXRoIGlkZW50aWNhbCBudW1iZXIgb2YgcGFyYW1ldGVycyAoJHtWLTF9KSBmb3IgY2xhc3MgJyR7ZnQubmFtZX0nISBPdmVybG9hZCByZXNvbHV0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHBlcmZvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVyIGNvdW50LCBub3QgYWN0dWFsIHR5cGUgaW5mbyFgKTtyZXR1cm4gZnQucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHlbVi0xXT0oKT0+e2NhKGBDYW5ub3QgY29uc3RydWN0ICR7ZnQubmFtZX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLGR0KX0seHMoW10sZHQsZnVuY3Rpb24oTHQpe3JldHVybiBMdC5zcGxpY2UoMSwwLG51bGwpLGZ0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W1YtMV09emgoR3QsTHQsbnVsbCwkLGh0KSxbXX0pLFtdfSl9ZnVuY3Rpb24gS2godSxWLFcsUCwkLGh0LGR0LGZ0LEd0KXt2YXIgTHQ9dmgoVyxQKTtWPW9uKFYpLGh0PWpuKCQsaHQpLHhzKFtdLFt1XSxmdW5jdGlvbihyZSl7cmU9cmVbMF07dmFyIHVlPWAke3JlLm5hbWV9LiR7Vn1gO1Yuc3RhcnRzV2l0aCgiQEAiKSYmKFY9U3ltYm9sW1Yuc3Vic3RyaW5nKDIpXSksZnQmJnJlLnJlZ2lzdGVyZWRDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5wdXNoKFYpO2Z1bmN0aW9uIGZlKCl7Y2EoYENhbm5vdCBjYWxsICR7dWV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCxMdCl9dmFyIEVlPXJlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxWZT1FZVtWXTtyZXR1cm4gVmU9PT12b2lkIDB8fFZlLm92ZXJsb2FkVGFibGU9PT12b2lkIDAmJlZlLmNsYXNzTmFtZSE9PXJlLm5hbWUmJlZlLmFyZ0NvdW50PT09Vy0yPyhmZS5hcmdDb3VudD1XLTIsZmUuY2xhc3NOYW1lPXJlLm5hbWUsRWVbVl09ZmUpOihlbChFZSxWLHVlKSxFZVtWXS5vdmVybG9hZFRhYmxlW1ctMl09ZmUpLHhzKFtdLEx0LGZ1bmN0aW9uKGRpKXt2YXIgbG49emgodWUsZGkscmUsaHQsZHQsR3QpO3JldHVybiBFZVtWXS5vdmVybG9hZFRhYmxlPT09dm9pZCAwPyhsbi5hcmdDb3VudD1XLTIsRWVbVl09bG4pOkVlW1ZdLm92ZXJsb2FkVGFibGVbVy0yXT1sbixbXX0pLFtdfSl9ZnVuY3Rpb24gVnModSxWLFcpe3JldHVybiB1IGluc3RhbmNlb2YgT2JqZWN0fHwkZShgJHtXfSB3aXRoIGludmFsaWQgInRoaXMiOiAke3V9YCksdSBpbnN0YW5jZW9mIFYucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yfHwkZShgJHtXfSBpbmNvbXBhdGlibGUgd2l0aCAidGhpcyIgb2YgdHlwZSAke3UuY29uc3RydWN0b3IubmFtZX1gKSx1LiQkLnB0cnx8JGUoYGNhbm5vdCBjYWxsIGVtc2NyaXB0ZW4gYmluZGluZyBtZXRob2QgJHtXfSBvbiBkZWxldGVkIG9iamVjdGApLHRBKHUuJCQucHRyLHUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsVi5yZWdpc3RlcmVkQ2xhc3MpfWZ1bmN0aW9uIFhoKHUsVixXLFAsJCxodCxkdCxmdCxHdCxMdCl7Vj1vbihWKSwkPWpuKFAsJCkseHMoW10sW3VdLGZ1bmN0aW9uKHJlKXtyZT1yZVswXTt2YXIgdWU9YCR7cmUubmFtZX0uJHtWfWAsZmU9e2dldCgpe2NhKGBDYW5ub3QgYWNjZXNzICR7dWV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCxbVyxkdF0pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH07cmV0dXJuIEd0P2ZlLnNldD0oKT0+e2NhKGBDYW5ub3QgYWNjZXNzICR7dWV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCxbVyxkdF0pfTpmZS5zZXQ9RWU9PnskZSh1ZSsiIGlzIGEgcmVhZC1vbmx5IHByb3BlcnR5Iil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUsVixmZSkseHMoW10sR3Q/W1csZHRdOltXXSxmdW5jdGlvbihFZSl7dmFyIFZlPUVlWzBdLGRpPXtnZXQoKXt2YXIgUm49VnModGhpcyxyZSx1ZSsiIGdldHRlciIpO3JldHVybiBWZS5mcm9tV2lyZVR5cGUoJChodCxSbikpfSxlbnVtZXJhYmxlOiEwfTtpZihHdCl7R3Q9am4oZnQsR3QpO3ZhciBsbj1FZVsxXTtkaS5zZXQ9ZnVuY3Rpb24oUm4pe3ZhciBxdD1Wcyh0aGlzLHJlLHVlKyIgc2V0dGVyIiksYmU9W107R3QoTHQscXQsbG4udG9XaXJlVHlwZShiZSxSbikpLHdBKGJlKX19cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZS5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUsVixkaSksW119KSxbXX0pfWZ1bmN0aW9uIHdkKCl7T2JqZWN0LmFzc2lnbihybC5wcm90b3R5cGUse2dldCh1KXtyZXR1cm4gYyh0aGlzLmFsbG9jYXRlZFt1XSE9PXZvaWQgMCxgaW52YWxpZCBoYW5kbGU6ICR7dX1gKSx0aGlzLmFsbG9jYXRlZFt1XX0saGFzKHUpe3JldHVybiB0aGlzLmFsbG9jYXRlZFt1XSE9PXZvaWQgMH0sYWxsb2NhdGUodSl7dmFyIFY9dGhpcy5mcmVlbGlzdC5wb3AoKXx8dGhpcy5hbGxvY2F0ZWQubGVuZ3RoO3JldHVybiB0aGlzLmFsbG9jYXRlZFtWXT11LFZ9LGZyZWUodSl7Yyh0aGlzLmFsbG9jYXRlZFt1XSE9PXZvaWQgMCksdGhpcy5hbGxvY2F0ZWRbdV09dm9pZCAwLHRoaXMuZnJlZWxpc3QucHVzaCh1KX19KX1mdW5jdGlvbiBybCgpe3RoaXMuYWxsb2NhdGVkPVt2b2lkIDBdLHRoaXMuZnJlZWxpc3Q9W119dmFyIEFvPW5ldyBybDtmdW5jdGlvbiBobyh1KXt1Pj1Bby5yZXNlcnZlZCYmLS1Bby5nZXQodSkucmVmY291bnQ9PT0wJiZBby5mcmVlKHUpfWZ1bmN0aW9uIHhkKCl7Zm9yKHZhciB1PTAsVj1Bby5yZXNlcnZlZDtWPEFvLmFsbG9jYXRlZC5sZW5ndGg7KytWKUFvLmFsbG9jYXRlZFtWXSE9PXZvaWQgMCYmKyt1O3JldHVybiB1fWZ1bmN0aW9uIFBkKCl7QW8uYWxsb2NhdGVkLnB1c2goe3ZhbHVlOnZvaWQgMH0se3ZhbHVlOm51bGx9LHt2YWx1ZTohMH0se3ZhbHVlOiExfSksQW8ucmVzZXJ2ZWQ9QW8uYWxsb2NhdGVkLmxlbmd0aCxpLmNvdW50X2VtdmFsX2hhbmRsZXM9eGR9dmFyIEJvPXt0b1ZhbHVlOnU9Pih1fHwkZSgiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIit1KSxBby5nZXQodSkudmFsdWUpLHRvSGFuZGxlOnU9Pntzd2l0Y2godSl7Y2FzZSB2b2lkIDA6cmV0dXJuIDE7Y2FzZSBudWxsOnJldHVybiAyO2Nhc2UhMDpyZXR1cm4gMztjYXNlITE6cmV0dXJuIDQ7ZGVmYXVsdDpyZXR1cm4gQW8uYWxsb2NhdGUoe3JlZmNvdW50OjEsdmFsdWU6dX0pfX19O2Z1bmN0aW9uIHhBKHUsVil7Vj1vbihWKSxUbih1LHtuYW1lOlYsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKFcpe3ZhciBQPUJvLnRvVmFsdWUoVyk7cmV0dXJuIGhvKFcpLFB9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oVyxQKXtyZXR1cm4gQm8udG9IYW5kbGUoUCl9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6TEEsZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBsYSh1KXtpZih1PT09bnVsbClyZXR1cm4ibnVsbCI7dmFyIFY9dHlwZW9mIHU7cmV0dXJuIFY9PT0ib2JqZWN0Inx8Vj09PSJhcnJheSJ8fFY9PT0iZnVuY3Rpb24iP3UudG9TdHJpbmcoKToiIit1fWZ1bmN0aW9uIGRhKHUsVil7c3dpdGNoKFYpe2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oVyl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKGpbVz4+Ml0pfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKFcpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShYW1c+PjNdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGZsb2F0IHR5cGU6ICIrdSl9fWZ1bmN0aW9uIEpkKHUsVixXKXt2YXIgUD1obihXKTtWPW9uKFYpLFRuKHUse25hbWU6Vixmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oJCl7cmV0dXJuICR9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oJCxodCl7aWYodHlwZW9mIGh0IT0ibnVtYmVyIiYmdHlwZW9mIGh0IT0iYm9vbGVhbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgJHtsYShodCl9IHRvICR7dGhpcy5uYW1lfWApO3JldHVybiBodH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpkYShWLFApLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gamQodSxWLFcsUCwkLGh0LGR0KXt2YXIgZnQ9dmgoVixXKTt1PW9uKHUpLCQ9am4oUCwkKSxpbCh1LGZ1bmN0aW9uKCl7Y2EoYENhbm5vdCBjYWxsICR7dX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLGZ0KX0sVi0xKSx4cyhbXSxmdCxmdW5jdGlvbihHdCl7dmFyIEx0PVtHdFswXSxudWxsXS5jb25jYXQoR3Quc2xpY2UoMSkpO3JldHVybiBubCh1LHpoKHUsTHQsbnVsbCwkLGh0LGR0KSxWLTEpLFtdfSl9ZnVuY3Rpb24gSGQodSxWLFcpe3N3aXRjaChWKXtjYXNlIDA6cmV0dXJuIFc/ZnVuY3Rpb24oJCl7cmV0dXJuIGdbJF19OmZ1bmN0aW9uKCQpe3JldHVybiBPWyRdfTtjYXNlIDE6cmV0dXJuIFc/ZnVuY3Rpb24oJCl7cmV0dXJuIERbJD4+MV19OmZ1bmN0aW9uKCQpe3JldHVybiB3WyQ+PjFdfTtjYXNlIDI6cmV0dXJuIFc/ZnVuY3Rpb24oJCl7cmV0dXJuIHhbJD4+Ml19OmZ1bmN0aW9uKCQpe3JldHVybiBIWyQ+PjJdfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gaW50ZWdlciB0eXBlOiAiK3UpfX1mdW5jdGlvbiB2ZCh1LFYsVyxQLCQpe1Y9b24oViksJD09PS0xJiYoJD00Mjk0OTY3Mjk1KTt2YXIgaHQ9aG4oVyksZHQ9dWU9PnVlO2lmKFA9PT0wKXt2YXIgZnQ9MzItOCpXO2R0PXVlPT51ZTw8ZnQ+Pj5mdH12YXIgR3Q9Vi5pbmNsdWRlcygidW5zaWduZWQiKSxMdD0odWUsZmUpPT57aWYodHlwZW9mIHVlIT0ibnVtYmVyIiYmdHlwZW9mIHVlIT0iYm9vbGVhbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IGNvbnZlcnQgIiR7bGEodWUpfSIgdG8gJHtmZX1gKTtpZih1ZTxQfHx1ZT4kKXRocm93IG5ldyBUeXBlRXJyb3IoYFBhc3NpbmcgYSBudW1iZXIgIiR7bGEodWUpfSIgZnJvbSBKUyBzaWRlIHRvIEMvQysrIHNpZGUgdG8gYW4gYXJndW1lbnQgb2YgdHlwZSAiJHtWfSIsIHdoaWNoIGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFske1B9LCAkeyR9XSFgKX0scmU7R3Q/cmU9ZnVuY3Rpb24odWUsZmUpe3JldHVybiBMdChmZSx0aGlzLm5hbWUpLGZlPj4+MH06cmU9ZnVuY3Rpb24odWUsZmUpe3JldHVybiBMdChmZSx0aGlzLm5hbWUpLGZlfSxUbih1LHtuYW1lOlYsZnJvbVdpcmVUeXBlOmR0LHRvV2lyZVR5cGU6cmUsYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpIZChWLGh0LFAhPT0wKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIHpkKHUsVixXKXt2YXIgUD1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldLCQ9UFtWXTtmdW5jdGlvbiBodChkdCl7ZHQ9ZHQ+PjI7dmFyIGZ0PUgsR3Q9ZnRbZHRdLEx0PWZ0W2R0KzFdO3JldHVybiBuZXcgJChmdC5idWZmZXIsTHQsR3QpfVc9b24oVyksVG4odSx7bmFtZTpXLGZyb21XaXJlVHlwZTpodCxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmh0fSx7aWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9uczohMH0pfXZhciBxaD0odSxWLFcsUCk9PntpZihjKHR5cGVvZiB1PT0ic3RyaW5nIiksIShQPjApKXJldHVybiAwO2Zvcih2YXIgJD1XLGh0PVcrUC0xLGR0PTA7ZHQ8dS5sZW5ndGg7KytkdCl7dmFyIGZ0PXUuY2hhckNvZGVBdChkdCk7aWYoZnQ+PTU1Mjk2JiZmdDw9NTczNDMpe3ZhciBHdD11LmNoYXJDb2RlQXQoKytkdCk7ZnQ9NjU1MzYrKChmdCYxMDIzKTw8MTApfEd0JjEwMjN9aWYoZnQ8PTEyNyl7aWYoVz49aHQpYnJlYWs7VltXKytdPWZ0fWVsc2UgaWYoZnQ8PTIwNDcpe2lmKFcrMT49aHQpYnJlYWs7VltXKytdPTE5MnxmdD4+NixWW1crK109MTI4fGZ0JjYzfWVsc2UgaWYoZnQ8PTY1NTM1KXtpZihXKzI+PWh0KWJyZWFrO1ZbVysrXT0yMjR8ZnQ+PjEyLFZbVysrXT0xMjh8ZnQ+PjYmNjMsVltXKytdPTEyOHxmdCY2M31lbHNle2lmKFcrMz49aHQpYnJlYWs7ZnQ+MTExNDExMSYmQWkoIkludmFsaWQgVW5pY29kZSBjb2RlIHBvaW50ICIrUG4oZnQpKyIgZW5jb3VudGVyZWQgd2hlbiBzZXJpYWxpemluZyBhIEpTIHN0cmluZyB0byBhIFVURi04IHN0cmluZyBpbiB3YXNtIG1lbW9yeSEgKFZhbGlkIHVuaWNvZGUgY29kZSBwb2ludHMgc2hvdWxkIGJlIGluIHJhbmdlIDAtMHgxMEZGRkYpLiIpLFZbVysrXT0yNDB8ZnQ+PjE4LFZbVysrXT0xMjh8ZnQ+PjEyJjYzLFZbVysrXT0xMjh8ZnQ+PjYmNjMsVltXKytdPTEyOHxmdCY2M319cmV0dXJuIFZbV109MCxXLSR9LFBBPSh1LFYsVyk9PihjKHR5cGVvZiBXPT0ibnVtYmVyIiwic3RyaW5nVG9VVEY4KHN0ciwgb3V0UHRyLCBtYXhCeXRlc1RvV3JpdGUpIGlzIG1pc3NpbmcgdGhlIHRoaXJkIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQgYnVmZmVyISIpLHFoKHUsTyxWLFcpKSxtYT11PT57Zm9yKHZhciBWPTAsVz0wO1c8dS5sZW5ndGg7KytXKXt2YXIgUD11LmNoYXJDb2RlQXQoVyk7UDw9MTI3P1YrKzpQPD0yMDQ3P1YrPTI6UD49NTUyOTYmJlA8PTU3MzQzPyhWKz00LCsrVyk6Vis9M31yZXR1cm4gVn0sYWw9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDAsZmE9KHUsVixXKT0+e2Zvcih2YXIgUD1WK1csJD1WO3VbJF0mJiEoJD49UCk7KSsrJDtpZigkLVY+MTYmJnUuYnVmZmVyJiZhbClyZXR1cm4gYWwuZGVjb2RlKHUuc3ViYXJyYXkoViwkKSk7Zm9yKHZhciBodD0iIjtWPCQ7KXt2YXIgZHQ9dVtWKytdO2lmKCEoZHQmMTI4KSl7aHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZHQpO2NvbnRpbnVlfXZhciBmdD11W1YrK10mNjM7aWYoKGR0JjIyNCk9PTE5Mil7aHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGR0JjMxKTw8NnxmdCk7Y29udGludWV9dmFyIEd0PXVbVisrXSY2MztpZigoZHQmMjQwKT09MjI0P2R0PShkdCYxNSk8PDEyfGZ0PDw2fEd0OigoZHQmMjQ4KSE9MjQwJiZBaSgiSW52YWxpZCBVVEYtOCBsZWFkaW5nIGJ5dGUgIitQbihkdCkrIiBlbmNvdW50ZXJlZCB3aGVuIGRlc2VyaWFsaXppbmcgYSBVVEYtOCBzdHJpbmcgaW4gd2FzbSBtZW1vcnkgdG8gYSBKUyBzdHJpbmchIiksZHQ9KGR0JjcpPDwxOHxmdDw8MTJ8R3Q8PDZ8dVtWKytdJjYzKSxkdDw2NTUzNilodCs9U3RyaW5nLmZyb21DaGFyQ29kZShkdCk7ZWxzZXt2YXIgTHQ9ZHQtNjU1MzY7aHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8THQ+PjEwLDU2MzIwfEx0JjEwMjMpfX1yZXR1cm4gaHR9LEVhPSh1LFYpPT4oYyh0eXBlb2YgdT09Im51bWJlciIpLHU/ZmEoTyx1LFYpOiIiKTtmdW5jdGlvbiBzQSh1LFYpe1Y9b24oVik7dmFyIFc9Vj09PSJzdGQ6OnN0cmluZyI7VG4odSx7bmFtZTpWLGZyb21XaXJlVHlwZTpmdW5jdGlvbihQKXt2YXIgJD1IW1A+PjJdLGh0PVArNCxkdDtpZihXKWZvcih2YXIgZnQ9aHQsR3Q9MDtHdDw9JDsrK0d0KXt2YXIgTHQ9aHQrR3Q7aWYoR3Q9PSR8fE9bTHRdPT0wKXt2YXIgcmU9THQtZnQsdWU9RWEoZnQscmUpO2R0PT09dm9pZCAwP2R0PXVlOihkdCs9IlwwIixkdCs9dWUpLGZ0PUx0KzF9fWVsc2V7Zm9yKHZhciBmZT1uZXcgQXJyYXkoJCksR3Q9MDtHdDwkOysrR3QpZmVbR3RdPVN0cmluZy5mcm9tQ2hhckNvZGUoT1todCtHdF0pO2R0PWZlLmpvaW4oIiIpfXJldHVybiBIQShQKSxkdH0sdG9XaXJlVHlwZTpmdW5jdGlvbihQLCQpeyQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKCQ9bmV3IFVpbnQ4QXJyYXkoJCkpO3ZhciBodCxkdD10eXBlb2YgJD09InN0cmluZyI7ZHR8fCQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwkIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fCQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fCRlKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIHN0ZDo6c3RyaW5nIiksVyYmZHQ/aHQ9bWEoJCk6aHQ9JC5sZW5ndGg7dmFyIGZ0PUtSKDQraHQrMSksR3Q9ZnQrNDtpZihIW2Z0Pj4yXT1odCxXJiZkdClQQSgkLEd0LGh0KzEpO2Vsc2UgaWYoZHQpZm9yKHZhciBMdD0wO0x0PGh0OysrTHQpe3ZhciByZT0kLmNoYXJDb2RlQXQoTHQpO3JlPjI1NSYmKEhBKEd0KSwkZSgiU3RyaW5nIGhhcyBVVEYtMTYgY29kZSB1bml0cyB0aGF0IGRvIG5vdCBmaXQgaW4gOCBiaXRzIikpLE9bR3QrTHRdPXJlfWVsc2UgZm9yKHZhciBMdD0wO0x0PGh0OysrTHQpT1tHdCtMdF09JFtMdF07cmV0dXJuIFAhPT1udWxsJiZQLnB1c2goSEEsZnQpLGZ0fSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOkxBLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbihQKXtIQShQKX19KX12YXIgQWw9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi0xNmxlIik6dm9pZCAwLEtkPSh1LFYpPT57Yyh1JTI9PTAsIlBvaW50ZXIgcGFzc2VkIHRvIFVURjE2VG9TdHJpbmcgbXVzdCBiZSBhbGlnbmVkIHRvIHR3byBieXRlcyEiKTtmb3IodmFyIFc9dSxQPVc+PjEsJD1QK1YvMjshKFA+PSQpJiZ3W1BdOykrK1A7aWYoVz1QPDwxLFctdT4zMiYmQWwpcmV0dXJuIEFsLmRlY29kZShPLnN1YmFycmF5KHUsVykpO2Zvcih2YXIgaHQ9IiIsZHQ9MDshKGR0Pj1WLzIpOysrZHQpe3ZhciBmdD1EW3UrZHQqMj4+MV07aWYoZnQ9PTApYnJlYWs7aHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoZnQpfXJldHVybiBodH0sSkE9KHUsVixXKT0+e2lmKGMoViUyPT0wLCJQb2ludGVyIHBhc3NlZCB0byBzdHJpbmdUb1VURjE2IG11c3QgYmUgYWxpZ25lZCB0byB0d28gYnl0ZXMhIiksYyh0eXBlb2YgVz09Im51bWJlciIsInN0cmluZ1RvVVRGMTYoc3RyLCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSkgaXMgbWlzc2luZyB0aGUgdGhpcmQgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBidWZmZXIhIiksVz09PXZvaWQgMCYmKFc9MjE0NzQ4MzY0NyksVzwyKXJldHVybiAwO1ctPTI7Zm9yKHZhciBQPVYsJD1XPHUubGVuZ3RoKjI/Vy8yOnUubGVuZ3RoLGh0PTA7aHQ8JDsrK2h0KXt2YXIgZHQ9dS5jaGFyQ29kZUF0KGh0KTtEW1Y+PjFdPWR0LFYrPTJ9cmV0dXJuIERbVj4+MV09MCxWLVB9LCRoPXU9PnUubGVuZ3RoKjIsWGQ9KHUsVik9PntjKHUlND09MCwiUG9pbnRlciBwYXNzZWQgdG8gVVRGMzJUb1N0cmluZyBtdXN0IGJlIGFsaWduZWQgdG8gZm91ciBieXRlcyEiKTtmb3IodmFyIFc9MCxQPSIiOyEoVz49Vi80KTspe3ZhciAkPXhbdStXKjQ+PjJdO2lmKCQ9PTApYnJlYWs7aWYoKytXLCQ+PTY1NTM2KXt2YXIgaHQ9JC02NTUzNjtQKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGh0Pj4xMCw1NjMyMHxodCYxMDIzKX1lbHNlIFArPVN0cmluZy5mcm9tQ2hhckNvZGUoJCl9cmV0dXJuIFB9LGhsPSh1LFYsVyk9PntpZihjKFYlND09MCwiUG9pbnRlciBwYXNzZWQgdG8gc3RyaW5nVG9VVEYzMiBtdXN0IGJlIGFsaWduZWQgdG8gZm91ciBieXRlcyEiKSxjKHR5cGVvZiBXPT0ibnVtYmVyIiwic3RyaW5nVG9VVEYzMihzdHIsIG91dFB0ciwgbWF4Qnl0ZXNUb1dyaXRlKSBpcyBtaXNzaW5nIHRoZSB0aGlyZCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0IGJ1ZmZlciEiKSxXPT09dm9pZCAwJiYoVz0yMTQ3NDgzNjQ3KSxXPDQpcmV0dXJuIDA7Zm9yKHZhciBQPVYsJD1QK1ctNCxodD0wO2h0PHUubGVuZ3RoOysraHQpe3ZhciBkdD11LmNoYXJDb2RlQXQoaHQpO2lmKGR0Pj01NTI5NiYmZHQ8PTU3MzQzKXt2YXIgZnQ9dS5jaGFyQ29kZUF0KCsraHQpO2R0PTY1NTM2KygoZHQmMTAyMyk8PDEwKXxmdCYxMDIzfWlmKHhbVj4+Ml09ZHQsVis9NCxWKzQ+JClicmVha31yZXR1cm4geFtWPj4yXT0wLFYtUH0scWQ9dT0+e2Zvcih2YXIgVj0wLFc9MDtXPHUubGVuZ3RoOysrVyl7dmFyIFA9dS5jaGFyQ29kZUF0KFcpO1A+PTU1Mjk2JiZQPD01NzM0MyYmKytXLFYrPTR9cmV0dXJuIFZ9LCRkPWZ1bmN0aW9uKHUsVixXKXtXPW9uKFcpO3ZhciBQLCQsaHQsZHQsZnQ7Vj09PTI/KFA9S2QsJD1KQSxkdD0kaCxodD0oKT0+dyxmdD0xKTpWPT09NCYmKFA9WGQsJD1obCxkdD1xZCxodD0oKT0+SCxmdD0yKSxUbih1LHtuYW1lOlcsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKEd0KXtmb3IodmFyIEx0PUhbR3Q+PjJdLHJlPWh0KCksdWUsZmU9R3QrNCxFZT0wO0VlPD1MdDsrK0VlKXt2YXIgVmU9R3QrNCtFZSpWO2lmKEVlPT1MdHx8cmVbVmU+PmZ0XT09MCl7dmFyIGRpPVZlLWZlLGxuPVAoZmUsZGkpO3VlPT09dm9pZCAwP3VlPWxuOih1ZSs9IlwwIix1ZSs9bG4pLGZlPVZlK1Z9fXJldHVybiBIQShHdCksdWV9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oR3QsTHQpe3R5cGVvZiBMdCE9InN0cmluZyImJiRlKGBDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAke1d9YCk7dmFyIHJlPWR0KEx0KSx1ZT1LUig0K3JlK1YpO3JldHVybiBIW3VlPj4yXT1yZT4+ZnQsJChMdCx1ZSs0LHJlK1YpLEd0IT09bnVsbCYmR3QucHVzaChIQSx1ZSksdWV9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6TEEsZGVzdHJ1Y3RvckZ1bmN0aW9uOmZ1bmN0aW9uKEd0KXtIQShHdCl9fSl9O2Z1bmN0aW9uIHRtKHUsVil7Vj1vbihWKSxUbih1LHtpc1ZvaWQ6ITAsbmFtZTpWLGFyZ1BhY2tBZHZhbmNlOjAsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKCl7fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKFcsUCl7fX0pfXZhciBlbT0hMCxpbT0oKT0+ZW07ZnVuY3Rpb24gbm0odSxWKXt2YXIgVz1Wb1t1XTtyZXR1cm4gVz09PXZvaWQgMCYmJGUoVisiIGhhcyB1bmtub3duIHR5cGUgIituQSh1KSksV31mdW5jdGlvbiBzbSh1LFYsVyl7dT1Cby50b1ZhbHVlKHUpLFY9bm0oViwiZW12YWw6OmFzIik7dmFyIFA9W10sJD1Cby50b0hhbmRsZShQKTtyZXR1cm4gSFtXPj4yXT0kLFYudG9XaXJlVHlwZShQLHUpfWZ1bmN0aW9uIG9tKHUsVil7cmV0dXJuIHU9Qm8udG9WYWx1ZSh1KSxWPUJvLnRvVmFsdWUoViksQm8udG9IYW5kbGUodVtWXSl9dmFyIGNsPXt9O2Z1bmN0aW9uIHJtKHUpe3ZhciBWPWNsW3VdO3JldHVybiBWPT09dm9pZCAwP29uKHUpOlZ9ZnVuY3Rpb24gYW0odSl7cmV0dXJuIEJvLnRvSGFuZGxlKHJtKHUpKX1mdW5jdGlvbiBBbSh1KXt2YXIgVj1Cby50b1ZhbHVlKHUpO3dBKFYpLGhvKHUpfWZ1bmN0aW9uIGxsKHUsVil7cmV0dXJuIGModT09dT4+PjB8fHU9PSh1fDApKSxjKFY9PT0oVnwwKSksVisyMDk3MTUyPj4+MDw0MTk0MzA1LSEhdT8odT4+PjApK1YqNDI5NDk2NzI5NjpOYU59ZnVuY3Rpb24gaG0odSxWLFcpe3ZhciBQPWxsKHUsViksJD1uZXcgRGF0ZShQKjFlMyk7eFtXPj4yXT0kLmdldFVUQ1NlY29uZHMoKSx4W1crND4+Ml09JC5nZXRVVENNaW51dGVzKCkseFtXKzg+PjJdPSQuZ2V0VVRDSG91cnMoKSx4W1crMTI+PjJdPSQuZ2V0VVRDRGF0ZSgpLHhbVysxNj4+Ml09JC5nZXRVVENNb250aCgpLHhbVysyMD4+Ml09JC5nZXRVVENGdWxsWWVhcigpLTE5MDAseFtXKzI0Pj4yXT0kLmdldFVUQ0RheSgpO3ZhciBodD1EYXRlLlVUQygkLmdldFVUQ0Z1bGxZZWFyKCksMCwxLDAsMCwwLDApLGR0PSgkLmdldFRpbWUoKS1odCkvKDFlMyo2MCo2MCoyNCl8MDt4W1crMjg+PjJdPWR0fXZhciBvQT11PT51JTQ9PT0wJiYodSUxMDAhPT0wfHx1JTQwMD09PTApLGNtPVswLDMxLDYwLDkxLDEyMSwxNTIsMTgyLDIxMywyNDQsMjc0LDMwNSwzMzVdLGpBPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdLGxtPXU9Pnt2YXIgVj1vQSh1LmdldEZ1bGxZZWFyKCkpLFc9Vj9jbTpqQSxQPVdbdS5nZXRNb250aCgpXSt1LmdldERhdGUoKS0xO3JldHVybiBQfSxkbT1mdW5jdGlvbih1KXt2YXIgVj0oKCk9Pnt2YXIgVz1uZXcgRGF0ZSh4W3UrMjA+PjJdKzE5MDAseFt1KzE2Pj4yXSx4W3UrMTI+PjJdLHhbdSs4Pj4yXSx4W3UrND4+Ml0seFt1Pj4yXSwwKSxQPXhbdSszMj4+Ml0sJD1XLmdldFRpbWV6b25lT2Zmc2V0KCksaHQ9bmV3IERhdGUoVy5nZXRGdWxsWWVhcigpLDAsMSksZHQ9bmV3IERhdGUoVy5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxmdD1odC5nZXRUaW1lem9uZU9mZnNldCgpLEd0PU1hdGgubWluKGZ0LGR0KTtpZihQPDApeFt1KzMyPj4yXT0rKGR0IT1mdCYmR3Q9PSQpO2Vsc2UgaWYoUD4wIT0oR3Q9PSQpKXt2YXIgTHQ9TWF0aC5tYXgoZnQsZHQpLHJlPVA+MD9HdDpMdDtXLnNldFRpbWUoVy5nZXRUaW1lKCkrKHJlLSQpKjZlNCl9eFt1KzI0Pj4yXT1XLmdldERheSgpO3ZhciB1ZT1sbShXKXwwO3JldHVybiB4W3UrMjg+PjJdPXVlLHhbdT4+Ml09Vy5nZXRTZWNvbmRzKCkseFt1KzQ+PjJdPVcuZ2V0TWludXRlcygpLHhbdSs4Pj4yXT1XLmdldEhvdXJzKCkseFt1KzEyPj4yXT1XLmdldERhdGUoKSx4W3UrMTY+PjJdPVcuZ2V0TW9udGgoKSx4W3UrMjA+PjJdPVcuZ2V0WWVhcigpLFcuZ2V0VGltZSgpLzFlM30pKCk7cmV0dXJuIGZYKChOZT1WLCtNYXRoLmFicyhOZSk+PTE/TmU+MD8rTWF0aC5mbG9vcihOZS80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChOZS0rKH5+TmU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApKSxWPj4+MH0sZGw9dT0+e3ZhciBWPW1hKHUpKzEsVz1LUihWKTtyZXR1cm4gVyYmUEEodSxXLFYpLFd9LG1tPSh1LFYsVyk9Pnt2YXIgUD1uZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksJD1uZXcgRGF0ZShQLDAsMSksaHQ9bmV3IERhdGUoUCw2LDEpLGR0PSQuZ2V0VGltZXpvbmVPZmZzZXQoKSxmdD1odC5nZXRUaW1lem9uZU9mZnNldCgpLEd0PU1hdGgubWF4KGR0LGZ0KTtIW3U+PjJdPUd0KjYwLHhbVj4+Ml09KyhkdCE9ZnQpO2Z1bmN0aW9uIEx0KFZlKXt2YXIgZGk9VmUudG9UaW1lU3RyaW5nKCkubWF0Y2goL1woKFtBLVphLXogXSspXCkkLyk7cmV0dXJuIGRpP2RpWzFdOiJHTVQifXZhciByZT1MdCgkKSx1ZT1MdChodCksZmU9ZGwocmUpLEVlPWRsKHVlKTtmdDxkdD8oSFtXPj4yXT1mZSxIW1crND4+Ml09RWUpOihIW1c+PjJdPUVlLEhbVys0Pj4yXT1mZSl9LGZtPSgpPT57QmUoIm5hdGl2ZSBjb2RlIGNhbGxlZCBhYm9ydCgpIil9LHJBPVtdLGZpPSh1LFYpPT57YyhBcnJheS5pc0FycmF5KHJBKSksYyhWJTE2PT0wKSxyQS5sZW5ndGg9MDt2YXIgVztmb3IoVj4+PTI7Vz1PW3UrK107KXt2YXIgUD1TdHJpbmcuZnJvbUNoYXJDb2RlKFcpLCQ9WyJkIiwiZiIsImkiXTtjKCQuaW5jbHVkZXMoUCksYEludmFsaWQgY2hhcmFjdGVyICR7V30oIiR7UH0iKSBpbiByZWFkRW1Bc21BcmdzISBVc2Ugb25seSBbJHskfV0sIGFuZCBkbyBub3Qgc3BlY2lmeSAidiIgZm9yIHZvaWQgcmV0dXJuIGFyZ3VtZW50LmApLFYrPVchPTEwNSZWLHJBLnB1c2goVz09MTA1P3hbVl06WFtWKys+PjFdKSwrK1Z9cmV0dXJuIHJBfSx6PSh1LFYsVyk9Pnt2YXIgUD1maShWLFcpO3JldHVybiBDcy5oYXNPd25Qcm9wZXJ0eSh1KXx8QmUoYE5vIEVNX0FTTSBjb25zdGFudCBmb3VuZCBhdCBhZGRyZXNzICR7dX1gKSxDc1t1XS5hcHBseShudWxsLFApfSxldD0odSxWLFcpPT56KHUsVixXKTtmdW5jdGlvbiBwdCgpe3JldHVybiBEYXRlLm5vdygpfXZhciAkdDskdD0oKT0+cGVyZm9ybWFuY2Uubm93KCk7dmFyIHZlPSh1LFYsVyk9Pk8uY29weVdpdGhpbih1LFYsVitXKSxoaT0oKT0+MjE0NzQ4MzY0OCxfYT11PT57dmFyIFY9US5idWZmZXIsVz11LVYuYnl0ZUxlbmd0aCs2NTUzNT4+PjE2O3RyeXtyZXR1cm4gUS5ncm93KFcpLHR0KCksMX1jYXRjaChQKXtGKGBncm93TWVtb3J5OiBBdHRlbXB0ZWQgdG8gZ3JvdyBoZWFwIGZyb20gJHtWLmJ5dGVMZW5ndGh9IGJ5dGVzIHRvICR7dX0gYnl0ZXMsIGJ1dCBnb3QgZXJyb3I6ICR7UH1gKX19LHRjPXU9Pnt2YXIgVj1PLmxlbmd0aDt1Pj4+PTAsYyh1PlYpO3ZhciBXPWhpKCk7aWYodT5XKXJldHVybiBGKGBDYW5ub3QgZW5sYXJnZSBtZW1vcnksIGFza2VkIHRvIGdvIHVwIHRvICR7dX0gYnl0ZXMsIGJ1dCB0aGUgbGltaXQgaXMgJHtXfSBieXRlcyFgKSwhMTtmb3IodmFyIFA9KEd0LEx0KT0+R3QrKEx0LUd0JUx0KSVMdCwkPTE7JDw9NDskKj0yKXt2YXIgaHQ9ViooMSsuMi8kKTtodD1NYXRoLm1pbihodCx1KzEwMDY2MzI5Nik7dmFyIGR0PU1hdGgubWluKFcsUChNYXRoLm1heCh1LGh0KSw2NTUzNikpLGZ0PV9hKGR0KTtpZihmdClyZXR1cm4hMH1yZXR1cm4gRihgRmFpbGVkIHRvIGdyb3cgdGhlIGhlYXAgZnJvbSAke1Z9IGJ5dGVzIHRvICR7ZHR9IGJ5dGVzLCBub3QgZW5vdWdoIG1lbW9yeSFgKSwhMX0sSj11PT57dmFyIFY9KGdsb2JhbFRoaXMuZXZhbFsiXHUyMDAzIl09Z2xvYmFsVGhpcy5ldmFsKShFYSh1KSk7aWYoVj09bnVsbClyZXR1cm4gMDtWKz0iIjt2YXIgVz1KLFA9bWEoVik7cmV0dXJuKCFXLmJ1ZmZlclNpemV8fFcuYnVmZmVyU2l6ZTxQKzEpJiYoVy5idWZmZXJTaXplJiZIQShXLmJ1ZmZlciksVy5idWZmZXJTaXplPVArMSxXLmJ1ZmZlcj1LUihXLmJ1ZmZlclNpemUpKSxQQShWLFcuYnVmZmVyLFcuYnVmZmVyU2l6ZSksVy5idWZmZXJ9LHY9e30sc3Q9KCk9PmF8fCIuL3RoaXMucHJvZ3JhbSIsUnQ9KCk9PntpZighUnQuc3RyaW5ncyl7dmFyIHU9KHR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsVj17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOnUsXzpzdCgpfTtmb3IodmFyIFcgaW4gdil2W1ddPT09dm9pZCAwP2RlbGV0ZSBWW1ddOlZbV109dltXXTt2YXIgUD1bXTtmb3IodmFyIFcgaW4gVilQLnB1c2goYCR7V309JHtWW1ddfWApO1J0LnN0cmluZ3M9UH1yZXR1cm4gUnQuc3RyaW5nc30sVnQ9KHUsVik9Pntmb3IodmFyIFc9MDtXPHUubGVuZ3RoOysrVyljKHUuY2hhckNvZGVBdChXKT09PSh1LmNoYXJDb2RlQXQoVykmMjU1KSksZ1tWKys+PjBdPXUuY2hhckNvZGVBdChXKTtnW1Y+PjBdPTB9LEJ0PXtpc0Ficzp1PT51LmNoYXJBdCgwKT09PSIvIixzcGxpdFBhdGg6dT0+e3ZhciBWPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLztyZXR1cm4gVi5leGVjKHUpLnNsaWNlKDEpfSxub3JtYWxpemVBcnJheToodSxWKT0+e2Zvcih2YXIgVz0wLFA9dS5sZW5ndGgtMTtQPj0wO1AtLSl7dmFyICQ9dVtQXTskPT09Ii4iP3Uuc3BsaWNlKFAsMSk6JD09PSIuLiI/KHUuc3BsaWNlKFAsMSksVysrKTpXJiYodS5zcGxpY2UoUCwxKSxXLS0pfWlmKFYpZm9yKDtXO1ctLSl1LnVuc2hpZnQoIi4uIik7cmV0dXJuIHV9LG5vcm1hbGl6ZTp1PT57dmFyIFY9QnQuaXNBYnModSksVz11LnN1YnN0cigtMSk9PT0iLyI7cmV0dXJuIHU9QnQubm9ybWFsaXplQXJyYXkodS5zcGxpdCgiLyIpLmZpbHRlcihQPT4hIVApLCFWKS5qb2luKCIvIiksIXUmJiFWJiYodT0iLiIpLHUmJlcmJih1Kz0iLyIpLChWPyIvIjoiIikrdX0sZGlybmFtZTp1PT57dmFyIFY9QnQuc3BsaXRQYXRoKHUpLFc9VlswXSxQPVZbMV07cmV0dXJuIVcmJiFQPyIuIjooUCYmKFA9UC5zdWJzdHIoMCxQLmxlbmd0aC0xKSksVytQKX0sYmFzZW5hbWU6dT0+e2lmKHU9PT0iLyIpcmV0dXJuIi8iO3U9QnQubm9ybWFsaXplKHUpLHU9dS5yZXBsYWNlKC9cLyQvLCIiKTt2YXIgVj11Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIFY9PT0tMT91OnUuc3Vic3RyKFYrMSl9LGpvaW46ZnVuY3Rpb24oKXt2YXIgdT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBCdC5ub3JtYWxpemUodS5qb2luKCIvIikpfSxqb2luMjoodSxWKT0+QnQubm9ybWFsaXplKHUrIi8iK1YpfSxqdD0oKT0+e2lmKHR5cGVvZiBjcnlwdG89PSJvYmplY3QiJiZ0eXBlb2YgY3J5cHRvLmdldFJhbmRvbVZhbHVlcz09ImZ1bmN0aW9uIilyZXR1cm4gdT0+Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyh1KTtCZSgibm8gY3J5cHRvZ3JhcGhpYyBzdXBwb3J0IGZvdW5kIGZvciByYW5kb21EZXZpY2UuIGNvbnNpZGVyIHBvbHlmaWxsaW5nIGl0IGlmIHlvdSB3YW50IHRvIHVzZSBzb21ldGhpbmcgaW5zZWN1cmUgbGlrZSBNYXRoLnJhbmRvbSgpLCBlLmcuIHB1dCB0aGlzIGluIGEgLS1wcmUtanM6IHZhciBjcnlwdG8gPSB7IGdldFJhbmRvbVZhbHVlczogKGFycmF5KSA9PiB7IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIGFycmF5W2ldID0gKE1hdGgucmFuZG9tKCkqMjU2KXwwIH0gfTsiKX0sTXQ9dT0+KE10PWp0KCkpKHUpLER0PXtyZXNvbHZlOmZ1bmN0aW9uKCl7Zm9yKHZhciB1PSIiLFY9ITEsVz1hcmd1bWVudHMubGVuZ3RoLTE7Vz49LTEmJiFWO1ctLSl7dmFyIFA9Vz49MD9hcmd1bWVudHNbV106Sy5jd2QoKTtpZih0eXBlb2YgUCE9InN0cmluZyIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtpZighUClyZXR1cm4iIjt1PVArIi8iK3UsVj1CdC5pc0FicyhQKX1yZXR1cm4gdT1CdC5ub3JtYWxpemVBcnJheSh1LnNwbGl0KCIvIikuZmlsdGVyKCQ9PiEhJCksIVYpLmpvaW4oIi8iKSwoVj8iLyI6IiIpK3V8fCIuIn0scmVsYXRpdmU6KHUsVik9Pnt1PUR0LnJlc29sdmUodSkuc3Vic3RyKDEpLFY9RHQucmVzb2x2ZShWKS5zdWJzdHIoMSk7ZnVuY3Rpb24gVyhMdCl7Zm9yKHZhciByZT0wO3JlPEx0Lmxlbmd0aCYmTHRbcmVdPT09IiI7cmUrKyk7Zm9yKHZhciB1ZT1MdC5sZW5ndGgtMTt1ZT49MCYmTHRbdWVdPT09IiI7dWUtLSk7cmV0dXJuIHJlPnVlP1tdOkx0LnNsaWNlKHJlLHVlLXJlKzEpfWZvcih2YXIgUD1XKHUuc3BsaXQoIi8iKSksJD1XKFYuc3BsaXQoIi8iKSksaHQ9TWF0aC5taW4oUC5sZW5ndGgsJC5sZW5ndGgpLGR0PWh0LGZ0PTA7ZnQ8aHQ7ZnQrKylpZihQW2Z0XSE9PSRbZnRdKXtkdD1mdDticmVha31mb3IodmFyIEd0PVtdLGZ0PWR0O2Z0PFAubGVuZ3RoO2Z0KyspR3QucHVzaCgiLi4iKTtyZXR1cm4gR3Q9R3QuY29uY2F0KCQuc2xpY2UoZHQpKSxHdC5qb2luKCIvIil9fSxwZT1bXTtmdW5jdGlvbiBHZSh1LFYsVyl7dmFyIFA9Vz4wP1c6bWEodSkrMSwkPW5ldyBBcnJheShQKSxodD1xaCh1LCQsMCwkLmxlbmd0aCk7cmV0dXJuIFYmJigkLmxlbmd0aD1odCksJH12YXIgY2k9KCk9PntpZighcGUubGVuZ3RoKXt2YXIgdT1udWxsO2lmKHR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LnByb21wdD09ImZ1bmN0aW9uIj8odT13aW5kb3cucHJvbXB0KCJJbnB1dDogIiksdSE9PW51bGwmJih1Kz1gCmApKTp0eXBlb2YgcmVhZGxpbmU9PSJmdW5jdGlvbiImJih1PXJlYWRsaW5lKCksdSE9PW51bGwmJih1Kz1gCmApKSwhdSlyZXR1cm4gbnVsbDtwZT1HZSh1LCEwKX1yZXR1cm4gcGUuc2hpZnQoKX0scGk9e3R0eXM6W10saW5pdDpmdW5jdGlvbigpe30sc2h1dGRvd246ZnVuY3Rpb24oKXt9LHJlZ2lzdGVyOmZ1bmN0aW9uKHUsVil7cGkudHR5c1t1XT17aW5wdXQ6W10sb3V0cHV0OltdLG9wczpWfSxLLnJlZ2lzdGVyRGV2aWNlKHUscGkuc3RyZWFtX29wcyl9LHN0cmVhbV9vcHM6e29wZW46ZnVuY3Rpb24odSl7dmFyIFY9cGkudHR5c1t1Lm5vZGUucmRldl07aWYoIVYpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0Myk7dS50dHk9Vix1LnNlZWthYmxlPSExfSxjbG9zZTpmdW5jdGlvbih1KXt1LnR0eS5vcHMuZnN5bmModS50dHkpfSxmc3luYzpmdW5jdGlvbih1KXt1LnR0eS5vcHMuZnN5bmModS50dHkpfSxyZWFkOmZ1bmN0aW9uKHUsVixXLFAsJCl7aWYoIXUudHR5fHwhdS50dHkub3BzLmdldF9jaGFyKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjApO2Zvcih2YXIgaHQ9MCxkdD0wO2R0PFA7ZHQrKyl7dmFyIGZ0O3RyeXtmdD11LnR0eS5vcHMuZ2V0X2NoYXIodS50dHkpfWNhdGNoe3Rocm93IG5ldyBLLkVycm5vRXJyb3IoMjkpfWlmKGZ0PT09dm9pZCAwJiZodD09PTApdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2KTtpZihmdD09bnVsbClicmVhaztodCsrLFZbVytkdF09ZnR9cmV0dXJuIGh0JiYodS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxodH0sd3JpdGU6ZnVuY3Rpb24odSxWLFcsUCwkKXtpZighdS50dHl8fCF1LnR0eS5vcHMucHV0X2NoYXIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2MCk7dHJ5e2Zvcih2YXIgaHQ9MDtodDxQO2h0KyspdS50dHkub3BzLnB1dF9jaGFyKHUudHR5LFZbVytodF0pfWNhdGNoe3Rocm93IG5ldyBLLkVycm5vRXJyb3IoMjkpfXJldHVybiBQJiYodS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxodH19LGRlZmF1bHRfdHR5X29wczp7Z2V0X2NoYXI6ZnVuY3Rpb24odSl7cmV0dXJuIGNpKCl9LHB1dF9jaGFyOmZ1bmN0aW9uKHUsVil7Vj09PW51bGx8fFY9PT0xMD8oYihmYSh1Lm91dHB1dCwwKSksdS5vdXRwdXQ9W10pOlYhPTAmJnUub3V0cHV0LnB1c2goVil9LGZzeW5jOmZ1bmN0aW9uKHUpe3Uub3V0cHV0JiZ1Lm91dHB1dC5sZW5ndGg+MCYmKGIoZmEodS5vdXRwdXQsMCkpLHUub3V0cHV0PVtdKX0saW9jdGxfdGNnZXRzOmZ1bmN0aW9uKHUpe3JldHVybntjX2lmbGFnOjI1ODU2LGNfb2ZsYWc6NSxjX2NmbGFnOjE5MSxjX2xmbGFnOjM1Mzg3LGNfY2M6WzMsMjgsMTI3LDIxLDQsMCwxLDAsMTcsMTksMjYsMCwxOCwxNSwyMywyMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXX19LGlvY3RsX3Rjc2V0czpmdW5jdGlvbih1LFYsVyl7cmV0dXJuIDB9LGlvY3RsX3Rpb2Nnd2luc3o6ZnVuY3Rpb24odSl7cmV0dXJuWzI0LDgwXX19LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyOmZ1bmN0aW9uKHUsVil7Vj09PW51bGx8fFY9PT0xMD8oRihmYSh1Lm91dHB1dCwwKSksdS5vdXRwdXQ9W10pOlYhPTAmJnUub3V0cHV0LnB1c2goVil9LGZzeW5jOmZ1bmN0aW9uKHUpe3Uub3V0cHV0JiZ1Lm91dHB1dC5sZW5ndGg+MCYmKEYoZmEodS5vdXRwdXQsMCkpLHUub3V0cHV0PVtdKX19fSxjbj11PT57QmUoImludGVybmFsIGVycm9yOiBtbWFwQWxsb2MgY2FsbGVkIGJ1dCBgZW1zY3JpcHRlbl9idWlsdGluX21lbWFsaWduYCBuYXRpdmUgc3ltYm9sIG5vdCBleHBvcnRlZCIpfSxRZT17b3BzX3RhYmxlOm51bGwsbW91bnQodSl7cmV0dXJuIFFlLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCl9LGNyZWF0ZU5vZGUodSxWLFcsUCl7aWYoSy5pc0Jsa2RldihXKXx8Sy5pc0ZJRk8oVykpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7UWUub3BzX3RhYmxlfHwoUWUub3BzX3RhYmxlPXtkaXI6e25vZGU6e2dldGF0dHI6UWUubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOlFlLm5vZGVfb3BzLnNldGF0dHIsbG9va3VwOlFlLm5vZGVfb3BzLmxvb2t1cCxta25vZDpRZS5ub2RlX29wcy5ta25vZCxyZW5hbWU6UWUubm9kZV9vcHMucmVuYW1lLHVubGluazpRZS5ub2RlX29wcy51bmxpbmsscm1kaXI6UWUubm9kZV9vcHMucm1kaXIscmVhZGRpcjpRZS5ub2RlX29wcy5yZWFkZGlyLHN5bWxpbms6UWUubm9kZV9vcHMuc3ltbGlua30sc3RyZWFtOntsbHNlZWs6UWUuc3RyZWFtX29wcy5sbHNlZWt9fSxmaWxlOntub2RlOntnZXRhdHRyOlFlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpRZS5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06e2xsc2VlazpRZS5zdHJlYW1fb3BzLmxsc2VlayxyZWFkOlFlLnN0cmVhbV9vcHMucmVhZCx3cml0ZTpRZS5zdHJlYW1fb3BzLndyaXRlLGFsbG9jYXRlOlFlLnN0cmVhbV9vcHMuYWxsb2NhdGUsbW1hcDpRZS5zdHJlYW1fb3BzLm1tYXAsbXN5bmM6UWUuc3RyZWFtX29wcy5tc3luY319LGxpbms6e25vZGU6e2dldGF0dHI6UWUubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOlFlLm5vZGVfb3BzLnNldGF0dHIscmVhZGxpbms6UWUubm9kZV9vcHMucmVhZGxpbmt9LHN0cmVhbTp7fX0sY2hyZGV2Ontub2RlOntnZXRhdHRyOlFlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpRZS5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06Sy5jaHJkZXZfc3RyZWFtX29wc319KTt2YXIgJD1LLmNyZWF0ZU5vZGUodSxWLFcsUCk7cmV0dXJuIEsuaXNEaXIoJC5tb2RlKT8oJC5ub2RlX29wcz1RZS5vcHNfdGFibGUuZGlyLm5vZGUsJC5zdHJlYW1fb3BzPVFlLm9wc190YWJsZS5kaXIuc3RyZWFtLCQuY29udGVudHM9e30pOksuaXNGaWxlKCQubW9kZSk/KCQubm9kZV9vcHM9UWUub3BzX3RhYmxlLmZpbGUubm9kZSwkLnN0cmVhbV9vcHM9UWUub3BzX3RhYmxlLmZpbGUuc3RyZWFtLCQudXNlZEJ5dGVzPTAsJC5jb250ZW50cz1udWxsKTpLLmlzTGluaygkLm1vZGUpPygkLm5vZGVfb3BzPVFlLm9wc190YWJsZS5saW5rLm5vZGUsJC5zdHJlYW1fb3BzPVFlLm9wc190YWJsZS5saW5rLnN0cmVhbSk6Sy5pc0NocmRldigkLm1vZGUpJiYoJC5ub2RlX29wcz1RZS5vcHNfdGFibGUuY2hyZGV2Lm5vZGUsJC5zdHJlYW1fb3BzPVFlLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtKSwkLnRpbWVzdGFtcD1EYXRlLm5vdygpLHUmJih1LmNvbnRlbnRzW1ZdPSQsdS50aW1lc3RhbXA9JC50aW1lc3RhbXApLCR9LGdldEZpbGVEYXRhQXNUeXBlZEFycmF5KHUpe3JldHVybiB1LmNvbnRlbnRzP3UuY29udGVudHMuc3ViYXJyYXk/dS5jb250ZW50cy5zdWJhcnJheSgwLHUudXNlZEJ5dGVzKTpuZXcgVWludDhBcnJheSh1LmNvbnRlbnRzKTpuZXcgVWludDhBcnJheSgwKX0sZXhwYW5kRmlsZVN0b3JhZ2UodSxWKXt2YXIgVz11LmNvbnRlbnRzP3UuY29udGVudHMubGVuZ3RoOjA7aWYoIShXPj1WKSl7dmFyIFA9MTAyNCoxMDI0O1Y9TWF0aC5tYXgoVixXKihXPFA/MjoxLjEyNSk+Pj4wKSxXIT0wJiYoVj1NYXRoLm1heChWLDI1NikpO3ZhciAkPXUuY29udGVudHM7dS5jb250ZW50cz1uZXcgVWludDhBcnJheShWKSx1LnVzZWRCeXRlcz4wJiZ1LmNvbnRlbnRzLnNldCgkLnN1YmFycmF5KDAsdS51c2VkQnl0ZXMpLDApfX0scmVzaXplRmlsZVN0b3JhZ2UodSxWKXtpZih1LnVzZWRCeXRlcyE9VilpZihWPT0wKXUuY29udGVudHM9bnVsbCx1LnVzZWRCeXRlcz0wO2Vsc2V7dmFyIFc9dS5jb250ZW50czt1LmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KFYpLFcmJnUuY29udGVudHMuc2V0KFcuc3ViYXJyYXkoMCxNYXRoLm1pbihWLHUudXNlZEJ5dGVzKSkpLHUudXNlZEJ5dGVzPVZ9fSxub2RlX29wczp7Z2V0YXR0cih1KXt2YXIgVj17fTtyZXR1cm4gVi5kZXY9Sy5pc0NocmRldih1Lm1vZGUpP3UuaWQ6MSxWLmlubz11LmlkLFYubW9kZT11Lm1vZGUsVi5ubGluaz0xLFYudWlkPTAsVi5naWQ9MCxWLnJkZXY9dS5yZGV2LEsuaXNEaXIodS5tb2RlKT9WLnNpemU9NDA5NjpLLmlzRmlsZSh1Lm1vZGUpP1Yuc2l6ZT11LnVzZWRCeXRlczpLLmlzTGluayh1Lm1vZGUpP1Yuc2l6ZT11LmxpbmsubGVuZ3RoOlYuc2l6ZT0wLFYuYXRpbWU9bmV3IERhdGUodS50aW1lc3RhbXApLFYubXRpbWU9bmV3IERhdGUodS50aW1lc3RhbXApLFYuY3RpbWU9bmV3IERhdGUodS50aW1lc3RhbXApLFYuYmxrc2l6ZT00MDk2LFYuYmxvY2tzPU1hdGguY2VpbChWLnNpemUvVi5ibGtzaXplKSxWfSxzZXRhdHRyKHUsVil7Vi5tb2RlIT09dm9pZCAwJiYodS5tb2RlPVYubW9kZSksVi50aW1lc3RhbXAhPT12b2lkIDAmJih1LnRpbWVzdGFtcD1WLnRpbWVzdGFtcCksVi5zaXplIT09dm9pZCAwJiZRZS5yZXNpemVGaWxlU3RvcmFnZSh1LFYuc2l6ZSl9LGxvb2t1cCh1LFYpe3Rocm93IEsuZ2VuZXJpY0Vycm9yc1s0NF19LG1rbm9kKHUsVixXLFApe3JldHVybiBRZS5jcmVhdGVOb2RlKHUsVixXLFApfSxyZW5hbWUodSxWLFcpe2lmKEsuaXNEaXIodS5tb2RlKSl7dmFyIFA7dHJ5e1A9Sy5sb29rdXBOb2RlKFYsVyl9Y2F0Y2h7fWlmKFApZm9yKHZhciAkIGluIFAuY29udGVudHMpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig1NSl9ZGVsZXRlIHUucGFyZW50LmNvbnRlbnRzW3UubmFtZV0sdS5wYXJlbnQudGltZXN0YW1wPURhdGUubm93KCksdS5uYW1lPVcsVi5jb250ZW50c1tXXT11LFYudGltZXN0YW1wPXUucGFyZW50LnRpbWVzdGFtcCx1LnBhcmVudD1WfSx1bmxpbmsodSxWKXtkZWxldGUgdS5jb250ZW50c1tWXSx1LnRpbWVzdGFtcD1EYXRlLm5vdygpfSxybWRpcih1LFYpe3ZhciBXPUsubG9va3VwTm9kZSh1LFYpO2Zvcih2YXIgUCBpbiBXLmNvbnRlbnRzKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNTUpO2RlbGV0ZSB1LmNvbnRlbnRzW1ZdLHUudGltZXN0YW1wPURhdGUubm93KCl9LHJlYWRkaXIodSl7dmFyIFY9WyIuIiwiLi4iXTtmb3IodmFyIFcgaW4gdS5jb250ZW50cyl1LmNvbnRlbnRzLmhhc093blByb3BlcnR5KFcpJiZWLnB1c2goVyk7cmV0dXJuIFZ9LHN5bWxpbmsodSxWLFcpe3ZhciBQPVFlLmNyZWF0ZU5vZGUodSxWLDQxNDcxLDApO3JldHVybiBQLmxpbms9VyxQfSxyZWFkbGluayh1KXtpZighSy5pc0xpbmsodS5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtyZXR1cm4gdS5saW5rfX0sc3RyZWFtX29wczp7cmVhZCh1LFYsVyxQLCQpe3ZhciBodD11Lm5vZGUuY29udGVudHM7aWYoJD49dS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgZHQ9TWF0aC5taW4odS5ub2RlLnVzZWRCeXRlcy0kLFApO2lmKGMoZHQ+PTApLGR0PjgmJmh0LnN1YmFycmF5KVYuc2V0KGh0LnN1YmFycmF5KCQsJCtkdCksVyk7ZWxzZSBmb3IodmFyIGZ0PTA7ZnQ8ZHQ7ZnQrKylWW1crZnRdPWh0WyQrZnRdO3JldHVybiBkdH0sd3JpdGUodSxWLFcsUCwkLGh0KXtpZihjKCEoViBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSksVi5idWZmZXI9PT1nLmJ1ZmZlciYmKGh0PSExKSwhUClyZXR1cm4gMDt2YXIgZHQ9dS5ub2RlO2lmKGR0LnRpbWVzdGFtcD1EYXRlLm5vdygpLFYuc3ViYXJyYXkmJighZHQuY29udGVudHN8fGR0LmNvbnRlbnRzLnN1YmFycmF5KSl7aWYoaHQpcmV0dXJuIGMoJD09PTAsImNhbk93biBtdXN0IGltcGx5IG5vIHdlaXJkIHBvc2l0aW9uIGluc2lkZSB0aGUgZmlsZSIpLGR0LmNvbnRlbnRzPVYuc3ViYXJyYXkoVyxXK1ApLGR0LnVzZWRCeXRlcz1QLFA7aWYoZHQudXNlZEJ5dGVzPT09MCYmJD09PTApcmV0dXJuIGR0LmNvbnRlbnRzPVYuc2xpY2UoVyxXK1ApLGR0LnVzZWRCeXRlcz1QLFA7aWYoJCtQPD1kdC51c2VkQnl0ZXMpcmV0dXJuIGR0LmNvbnRlbnRzLnNldChWLnN1YmFycmF5KFcsVytQKSwkKSxQfWlmKFFlLmV4cGFuZEZpbGVTdG9yYWdlKGR0LCQrUCksZHQuY29udGVudHMuc3ViYXJyYXkmJlYuc3ViYXJyYXkpZHQuY29udGVudHMuc2V0KFYuc3ViYXJyYXkoVyxXK1ApLCQpO2Vsc2UgZm9yKHZhciBmdD0wO2Z0PFA7ZnQrKylkdC5jb250ZW50c1skK2Z0XT1WW1crZnRdO3JldHVybiBkdC51c2VkQnl0ZXM9TWF0aC5tYXgoZHQudXNlZEJ5dGVzLCQrUCksUH0sbGxzZWVrKHUsVixXKXt2YXIgUD1WO2lmKFc9PT0xP1ArPXUucG9zaXRpb246Vz09PTImJksuaXNGaWxlKHUubm9kZS5tb2RlKSYmKFArPXUubm9kZS51c2VkQnl0ZXMpLFA8MCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtyZXR1cm4gUH0sYWxsb2NhdGUodSxWLFcpe1FlLmV4cGFuZEZpbGVTdG9yYWdlKHUubm9kZSxWK1cpLHUubm9kZS51c2VkQnl0ZXM9TWF0aC5tYXgodS5ub2RlLnVzZWRCeXRlcyxWK1cpfSxtbWFwKHUsVixXLFAsJCl7aWYoIUsuaXNGaWxlKHUubm9kZS5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQzKTt2YXIgaHQsZHQsZnQ9dS5ub2RlLmNvbnRlbnRzO2lmKCEoJCYyKSYmZnQuYnVmZmVyPT09Zy5idWZmZXIpZHQ9ITEsaHQ9ZnQuYnl0ZU9mZnNldDtlbHNle2lmKChXPjB8fFcrVjxmdC5sZW5ndGgpJiYoZnQuc3ViYXJyYXk/ZnQ9ZnQuc3ViYXJyYXkoVyxXK1YpOmZ0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZ0LFcsVytWKSksZHQ9ITAsaHQ9Y24oViksIWh0KXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDgpO2cuc2V0KGZ0LGh0KX1yZXR1cm57cHRyOmh0LGFsbG9jYXRlZDpkdH19LG1zeW5jKHUsVixXLFAsJCl7cmV0dXJuIFFlLnN0cmVhbV9vcHMud3JpdGUodSxWLDAsUCxXLCExKSwwfX19LFhzPSh1LFYsVyxQKT0+e3ZhciAkPVA/IiI6RmUoYGFsICR7dX1gKTtDKHUsaHQ9PntjKGh0LGBMb2FkaW5nIGRhdGEgZmlsZSAiJHt1fSIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuYCksVihuZXcgVWludDhBcnJheShodCkpLCQmJnplKCQpfSxodD0+e2lmKFcpVygpO2Vsc2UgdGhyb3dgTG9hZGluZyBkYXRhIGZpbGUgIiR7dX0iIGZhaWxlZC5gfSksJCYmbmkoJCl9LHpvPWkucHJlbG9hZFBsdWdpbnN8fFtdO2Z1bmN0aW9uIFZyKHUsVixXLFApe3R5cGVvZiBCcm93c2VyPCJ1IiYmQnJvd3Nlci5pbml0KCk7dmFyICQ9ITE7cmV0dXJuIHpvLmZvckVhY2goZnVuY3Rpb24oaHQpeyR8fGh0LmNhbkhhbmRsZShWKSYmKGh0LmhhbmRsZSh1LFYsVyxQKSwkPSEwKX0pLCR9ZnVuY3Rpb24gbWwodSxWLFcsUCwkLGh0LGR0LGZ0LEd0LEx0KXt2YXIgcmU9Vj9EdC5yZXNvbHZlKEJ0LmpvaW4yKHUsVikpOnUsdWU9RmUoYGNwICR7cmV9YCk7ZnVuY3Rpb24gZmUoRWUpe2Z1bmN0aW9uIFZlKGRpKXtMdCYmTHQoKSxmdHx8Sy5jcmVhdGVEYXRhRmlsZSh1LFYsZGksUCwkLEd0KSxodCYmaHQoKSx6ZSh1ZSl9VnIoRWUscmUsVmUsKCk9PntkdCYmZHQoKSx6ZSh1ZSl9KXx8VmUoRWUpfW5pKHVlKSx0eXBlb2YgVz09InN0cmluZyI/WHMoVyxFZT0+ZmUoRWUpLGR0KTpmZShXKX1mdW5jdGlvbiBSYSh1KXt2YXIgVj17cjowLCJyKyI6Mix3OjU3NywidysiOjU3OCxhOjEwODksImErIjoxMDkwfSxXPVZbdV07aWYodHlwZW9mIFc+InUiKXRocm93IG5ldyBFcnJvcihgVW5rbm93biBmaWxlIG9wZW4gbW9kZTogJHt1fWApO3JldHVybiBXfWZ1bmN0aW9uIGlFKHUsVil7dmFyIFc9MDtyZXR1cm4gdSYmKFd8PTM2NSksViYmKFd8PTE0NiksV312YXIgalI9ezA6IlN1Y2Nlc3MiLDE6IkFyZyBsaXN0IHRvbyBsb25nIiwyOiJQZXJtaXNzaW9uIGRlbmllZCIsMzoiQWRkcmVzcyBhbHJlYWR5IGluIHVzZSIsNDoiQWRkcmVzcyBub3QgYXZhaWxhYmxlIiw1OiJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIGZhbWlseSIsNjoiTm8gbW9yZSBwcm9jZXNzZXMiLDc6IlNvY2tldCBhbHJlYWR5IGNvbm5lY3RlZCIsODoiQmFkIGZpbGUgbnVtYmVyIiw5OiJUcnlpbmcgdG8gcmVhZCB1bnJlYWRhYmxlIG1lc3NhZ2UiLDEwOiJNb3VudCBkZXZpY2UgYnVzeSIsMTE6Ik9wZXJhdGlvbiBjYW5jZWxlZCIsMTI6Ik5vIGNoaWxkcmVuIiwxMzoiQ29ubmVjdGlvbiBhYm9ydGVkIiwxNDoiQ29ubmVjdGlvbiByZWZ1c2VkIiwxNToiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyIiwxNjoiRmlsZSBsb2NraW5nIGRlYWRsb2NrIGVycm9yIiwxNzoiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZCIsMTg6Ik1hdGggYXJnIG91dCBvZiBkb21haW4gb2YgZnVuYyIsMTk6IlF1b3RhIGV4Y2VlZGVkIiwyMDoiRmlsZSBleGlzdHMiLDIxOiJCYWQgYWRkcmVzcyIsMjI6IkZpbGUgdG9vIGxhcmdlIiwyMzoiSG9zdCBpcyB1bnJlYWNoYWJsZSIsMjQ6IklkZW50aWZpZXIgcmVtb3ZlZCIsMjU6IklsbGVnYWwgYnl0ZSBzZXF1ZW5jZSIsMjY6IkNvbm5lY3Rpb24gYWxyZWFkeSBpbiBwcm9ncmVzcyIsMjc6IkludGVycnVwdGVkIHN5c3RlbSBjYWxsIiwyODoiSW52YWxpZCBhcmd1bWVudCIsMjk6IkkvTyBlcnJvciIsMzA6IlNvY2tldCBpcyBhbHJlYWR5IGNvbm5lY3RlZCIsMzE6IklzIGEgZGlyZWN0b3J5IiwzMjoiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MiLDMzOiJUb28gbWFueSBvcGVuIGZpbGVzIiwzNDoiVG9vIG1hbnkgbGlua3MiLDM1OiJNZXNzYWdlIHRvbyBsb25nIiwzNjoiTXVsdGlob3AgYXR0ZW1wdGVkIiwzNzoiRmlsZSBvciBwYXRoIG5hbWUgdG9vIGxvbmciLDM4OiJOZXR3b3JrIGludGVyZmFjZSBpcyBub3QgY29uZmlndXJlZCIsMzk6IkNvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yayIsNDA6Ik5ldHdvcmsgaXMgdW5yZWFjaGFibGUiLDQxOiJUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbSIsNDI6Ik5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUiLDQzOiJObyBzdWNoIGRldmljZSIsNDQ6Ik5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiLDQ1OiJFeGVjIGZvcm1hdCBlcnJvciIsNDY6Ik5vIHJlY29yZCBsb2NrcyBhdmFpbGFibGUiLDQ3OiJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkIiw0ODoiTm90IGVub3VnaCBjb3JlIiw0OToiTm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUiLDUwOiJQcm90b2NvbCBub3QgYXZhaWxhYmxlIiw1MToiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UiLDUyOiJGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLDUzOiJTb2NrZXQgaXMgbm90IGNvbm5lY3RlZCIsNTQ6Ik5vdCBhIGRpcmVjdG9yeSIsNTU6IkRpcmVjdG9yeSBub3QgZW1wdHkiLDU2OiJTdGF0ZSBub3QgcmVjb3ZlcmFibGUiLDU3OiJTb2NrZXQgb3BlcmF0aW9uIG9uIG5vbi1zb2NrZXQiLDU5OiJOb3QgYSB0eXBld3JpdGVyIiw2MDoiTm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcyIsNjE6IlZhbHVlIHRvbyBsYXJnZSBmb3IgZGVmaW5lZCBkYXRhIHR5cGUiLDYyOiJQcmV2aW91cyBvd25lciBkaWVkIiw2MzoiTm90IHN1cGVyLXVzZXIiLDY0OiJCcm9rZW4gcGlwZSIsNjU6IlByb3RvY29sIGVycm9yIiw2NjoiVW5rbm93biBwcm90b2NvbCIsNjc6IlByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldCIsNjg6Ik1hdGggcmVzdWx0IG5vdCByZXByZXNlbnRhYmxlIiw2OToiUmVhZCBvbmx5IGZpbGUgc3lzdGVtIiw3MDoiSWxsZWdhbCBzZWVrIiw3MToiTm8gc3VjaCBwcm9jZXNzIiw3MjoiU3RhbGUgZmlsZSBoYW5kbGUiLDczOiJDb25uZWN0aW9uIHRpbWVkIG91dCIsNzQ6IlRleHQgZmlsZSBidXN5Iiw3NToiQ3Jvc3MtZGV2aWNlIGxpbmsiLDEwMDoiRGV2aWNlIG5vdCBhIHN0cmVhbSIsMTAxOiJCYWQgZm9udCBmaWxlIGZtdCIsMTAyOiJJbnZhbGlkIHNsb3QiLDEwMzoiSW52YWxpZCByZXF1ZXN0IGNvZGUiLDEwNDoiTm8gYW5vZGUiLDEwNToiQmxvY2sgZGV2aWNlIHJlcXVpcmVkIiwxMDY6IkNoYW5uZWwgbnVtYmVyIG91dCBvZiByYW5nZSIsMTA3OiJMZXZlbCAzIGhhbHRlZCIsMTA4OiJMZXZlbCAzIHJlc2V0IiwxMDk6IkxpbmsgbnVtYmVyIG91dCBvZiByYW5nZSIsMTEwOiJQcm90b2NvbCBkcml2ZXIgbm90IGF0dGFjaGVkIiwxMTE6Ik5vIENTSSBzdHJ1Y3R1cmUgYXZhaWxhYmxlIiwxMTI6IkxldmVsIDIgaGFsdGVkIiwxMTM6IkludmFsaWQgZXhjaGFuZ2UiLDExNDoiSW52YWxpZCByZXF1ZXN0IGRlc2NyaXB0b3IiLDExNToiRXhjaGFuZ2UgZnVsbCIsMTE2OiJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pIiwxMTc6IlRpbWVyIGV4cGlyZWQiLDExODoiT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzIiwxMTk6Ik1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrIiwxMjA6IlBhY2thZ2Ugbm90IGluc3RhbGxlZCIsMTIxOiJUaGUgb2JqZWN0IGlzIHJlbW90ZSIsMTIyOiJBZHZlcnRpc2UgZXJyb3IiLDEyMzoiU3Jtb3VudCBlcnJvciIsMTI0OiJDb21tdW5pY2F0aW9uIGVycm9yIG9uIHNlbmQiLDEyNToiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpIiwxMjY6IkdpdmVuIGxvZy4gbmFtZSBub3QgdW5pcXVlIiwxMjc6ImYuZC4gaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb24iLDEyODoiUmVtb3RlIGFkZHJlc3MgY2hhbmdlZCIsMTI5OiJDYW4gICBhY2Nlc3MgYSBuZWVkZWQgc2hhcmVkIGxpYiIsMTMwOiJBY2Nlc3NpbmcgYSBjb3JydXB0ZWQgc2hhcmVkIGxpYiIsMTMxOiIubGliIHNlY3Rpb24gaW4gYS5vdXQgY29ycnVwdGVkIiwxMzI6IkF0dGVtcHRpbmcgdG8gbGluayBpbiB0b28gbWFueSBsaWJzIiwxMzM6IkF0dGVtcHRpbmcgdG8gZXhlYyBhIHNoYXJlZCBsaWJyYXJ5IiwxMzU6IlN0cmVhbXMgcGlwZSBlcnJvciIsMTM2OiJUb28gbWFueSB1c2VycyIsMTM3OiJTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkIiwxMzg6Ik5vdCBzdXBwb3J0ZWQiLDEzOToiUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQiLDE0MDoiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24iLDE0MToiVG9vIG1hbnkgcmVmZXJlbmNlcyIsMTQyOiJIb3N0IGlzIGRvd24iLDE0ODoiTm8gbWVkaXVtIChpbiB0YXBlIGRyaXZlKSIsMTU2OiJMZXZlbCAyIG5vdCBzeW5jaHJvbml6ZWQifSxFbT17fTtmdW5jdGlvbiBIUih1KXtyZXR1cm4gQWkoIndhcm5pbmc6IGJ1aWxkIHdpdGggLXNERU1BTkdMRV9TVVBQT1JUIHRvIGxpbmsgaW4gbGliY3h4YWJpIGRlbWFuZ2xpbmciKSx1fWZ1bmN0aW9uIHo4KHUpe3ZhciBWPS9cYl9aW1x3XGRfXSsvZztyZXR1cm4gdS5yZXBsYWNlKFYsZnVuY3Rpb24oVyl7dmFyIFA9SFIoVyk7cmV0dXJuIFc9PT1QP1c6UCsiIFsiK1crIl0ifSl9dmFyIEs9e3Jvb3Q6bnVsbCxtb3VudHM6W10sZGV2aWNlczp7fSxzdHJlYW1zOltdLG5leHRJbm9kZToxLG5hbWVUYWJsZTpudWxsLGN1cnJlbnRQYXRoOiIvIixpbml0aWFsaXplZDohMSxpZ25vcmVQZXJtaXNzaW9uczohMCxFcnJub0Vycm9yOm51bGwsZ2VuZXJpY0Vycm9yczp7fSxmaWxlc3lzdGVtczpudWxsLHN5bmNGU1JlcXVlc3RzOjAsbG9va3VwUGF0aDoodSxWPXt9KT0+e2lmKHU9RHQucmVzb2x2ZSh1KSwhdSlyZXR1cm57cGF0aDoiIixub2RlOm51bGx9O3ZhciBXPXtmb2xsb3dfbW91bnQ6ITAscmVjdXJzZV9jb3VudDowfTtpZihWPU9iamVjdC5hc3NpZ24oVyxWKSxWLnJlY3Vyc2VfY291bnQ+OCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDMyKTtmb3IodmFyIFA9dS5zcGxpdCgiLyIpLmZpbHRlcih1ZT0+ISF1ZSksJD1LLnJvb3QsaHQ9Ii8iLGR0PTA7ZHQ8UC5sZW5ndGg7ZHQrKyl7dmFyIGZ0PWR0PT09UC5sZW5ndGgtMTtpZihmdCYmVi5wYXJlbnQpYnJlYWs7aWYoJD1LLmxvb2t1cE5vZGUoJCxQW2R0XSksaHQ9QnQuam9pbjIoaHQsUFtkdF0pLEsuaXNNb3VudHBvaW50KCQpJiYoIWZ0fHxmdCYmVi5mb2xsb3dfbW91bnQpJiYoJD0kLm1vdW50ZWQucm9vdCksIWZ0fHxWLmZvbGxvdylmb3IodmFyIEd0PTA7Sy5pc0xpbmsoJC5tb2RlKTspe3ZhciBMdD1LLnJlYWRsaW5rKGh0KTtodD1EdC5yZXNvbHZlKEJ0LmRpcm5hbWUoaHQpLEx0KTt2YXIgcmU9Sy5sb29rdXBQYXRoKGh0LHtyZWN1cnNlX2NvdW50OlYucmVjdXJzZV9jb3VudCsxfSk7aWYoJD1yZS5ub2RlLEd0Kys+NDApdGhyb3cgbmV3IEsuRXJybm9FcnJvcigzMil9fXJldHVybntwYXRoOmh0LG5vZGU6JH19LGdldFBhdGg6dT0+e2Zvcih2YXIgVjs7KXtpZihLLmlzUm9vdCh1KSl7dmFyIFc9dS5tb3VudC5tb3VudHBvaW50O3JldHVybiBWP1dbVy5sZW5ndGgtMV0hPT0iLyI/YCR7V30vJHtWfWA6VytWOld9Vj1WP2Ake3UubmFtZX0vJHtWfWA6dS5uYW1lLHU9dS5wYXJlbnR9fSxoYXNoTmFtZToodSxWKT0+e2Zvcih2YXIgVz0wLFA9MDtQPFYubGVuZ3RoO1ArKylXPShXPDw1KS1XK1YuY2hhckNvZGVBdChQKXwwO3JldHVybih1K1c+Pj4wKSVLLm5hbWVUYWJsZS5sZW5ndGh9LGhhc2hBZGROb2RlOnU9Pnt2YXIgVj1LLmhhc2hOYW1lKHUucGFyZW50LmlkLHUubmFtZSk7dS5uYW1lX25leHQ9Sy5uYW1lVGFibGVbVl0sSy5uYW1lVGFibGVbVl09dX0saGFzaFJlbW92ZU5vZGU6dT0+e3ZhciBWPUsuaGFzaE5hbWUodS5wYXJlbnQuaWQsdS5uYW1lKTtpZihLLm5hbWVUYWJsZVtWXT09PXUpSy5uYW1lVGFibGVbVl09dS5uYW1lX25leHQ7ZWxzZSBmb3IodmFyIFc9Sy5uYW1lVGFibGVbVl07Vzspe2lmKFcubmFtZV9uZXh0PT09dSl7Vy5uYW1lX25leHQ9dS5uYW1lX25leHQ7YnJlYWt9Vz1XLm5hbWVfbmV4dH19LGxvb2t1cE5vZGU6KHUsVik9Pnt2YXIgVz1LLm1heUxvb2t1cCh1KTtpZihXKXRocm93IG5ldyBLLkVycm5vRXJyb3IoVyx1KTtmb3IodmFyIFA9Sy5oYXNoTmFtZSh1LmlkLFYpLCQ9Sy5uYW1lVGFibGVbUF07JDskPSQubmFtZV9uZXh0KXt2YXIgaHQ9JC5uYW1lO2lmKCQucGFyZW50LmlkPT09dS5pZCYmaHQ9PT1WKXJldHVybiAkfXJldHVybiBLLmxvb2t1cCh1LFYpfSxjcmVhdGVOb2RlOih1LFYsVyxQKT0+e2ModHlwZW9mIHU9PSJvYmplY3QiKTt2YXIgJD1uZXcgSy5GU05vZGUodSxWLFcsUCk7cmV0dXJuIEsuaGFzaEFkZE5vZGUoJCksJH0sZGVzdHJveU5vZGU6dT0+e0suaGFzaFJlbW92ZU5vZGUodSl9LGlzUm9vdDp1PT51PT09dS5wYXJlbnQsaXNNb3VudHBvaW50OnU9PiEhdS5tb3VudGVkLGlzRmlsZTp1PT4odSY2MTQ0MCk9PT0zMjc2OCxpc0Rpcjp1PT4odSY2MTQ0MCk9PT0xNjM4NCxpc0xpbms6dT0+KHUmNjE0NDApPT09NDA5NjAsaXNDaHJkZXY6dT0+KHUmNjE0NDApPT09ODE5Mixpc0Jsa2Rldjp1PT4odSY2MTQ0MCk9PT0yNDU3Nixpc0ZJRk86dT0+KHUmNjE0NDApPT09NDA5Nixpc1NvY2tldDp1PT4odSY0OTE1Mik9PT00OTE1MixmbGFnc1RvUGVybWlzc2lvblN0cmluZzp1PT57dmFyIFY9WyJyIiwidyIsInJ3Il1bdSYzXTtyZXR1cm4gdSY1MTImJihWKz0idyIpLFZ9LG5vZGVQZXJtaXNzaW9uczoodSxWKT0+Sy5pZ25vcmVQZXJtaXNzaW9ucz8wOlYuaW5jbHVkZXMoInIiKSYmISh1Lm1vZGUmMjkyKXx8Vi5pbmNsdWRlcygidyIpJiYhKHUubW9kZSYxNDYpfHxWLmluY2x1ZGVzKCJ4IikmJiEodS5tb2RlJjczKT8yOjAsbWF5TG9va3VwOnU9Pnt2YXIgVj1LLm5vZGVQZXJtaXNzaW9ucyh1LCJ4Iik7cmV0dXJuIFZ8fCh1Lm5vZGVfb3BzLmxvb2t1cD8wOjIpfSxtYXlDcmVhdGU6KHUsVik9Pnt0cnl7dmFyIFc9Sy5sb29rdXBOb2RlKHUsVik7cmV0dXJuIDIwfWNhdGNoe31yZXR1cm4gSy5ub2RlUGVybWlzc2lvbnModSwid3giKX0sbWF5RGVsZXRlOih1LFYsVyk9Pnt2YXIgUDt0cnl7UD1LLmxvb2t1cE5vZGUodSxWKX1jYXRjaChodCl7cmV0dXJuIGh0LmVycm5vfXZhciAkPUsubm9kZVBlcm1pc3Npb25zKHUsInd4Iik7aWYoJClyZXR1cm4gJDtpZihXKXtpZighSy5pc0RpcihQLm1vZGUpKXJldHVybiA1NDtpZihLLmlzUm9vdChQKXx8Sy5nZXRQYXRoKFApPT09Sy5jd2QoKSlyZXR1cm4gMTB9ZWxzZSBpZihLLmlzRGlyKFAubW9kZSkpcmV0dXJuIDMxO3JldHVybiAwfSxtYXlPcGVuOih1LFYpPT51P0suaXNMaW5rKHUubW9kZSk/MzI6Sy5pc0Rpcih1Lm1vZGUpJiYoSy5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhWKSE9PSJyInx8ViY1MTIpPzMxOksubm9kZVBlcm1pc3Npb25zKHUsSy5mbGFnc1RvUGVybWlzc2lvblN0cmluZyhWKSk6NDQsTUFYX09QRU5fRkRTOjQwOTYsbmV4dGZkOigpPT57Zm9yKHZhciB1PTA7dTw9Sy5NQVhfT1BFTl9GRFM7dSsrKWlmKCFLLnN0cmVhbXNbdV0pcmV0dXJuIHU7dGhyb3cgbmV3IEsuRXJybm9FcnJvcigzMyl9LGdldFN0cmVhbUNoZWNrZWQ6dT0+e3ZhciBWPUsuZ2V0U3RyZWFtKHUpO2lmKCFWKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7cmV0dXJuIFZ9LGdldFN0cmVhbTp1PT5LLnN0cmVhbXNbdV0sY3JlYXRlU3RyZWFtOih1LFY9LTEpPT4oSy5GU1N0cmVhbXx8KEsuRlNTdHJlYW09ZnVuY3Rpb24oKXt0aGlzLnNoYXJlZD17fX0sSy5GU1N0cmVhbS5wcm90b3R5cGU9e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSy5GU1N0cmVhbS5wcm90b3R5cGUse29iamVjdDp7Z2V0KCl7cmV0dXJuIHRoaXMubm9kZX0sc2V0KFcpe3RoaXMubm9kZT1XfX0saXNSZWFkOntnZXQoKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTF9fSxpc1dyaXRlOntnZXQoKXtyZXR1cm4odGhpcy5mbGFncyYyMDk3MTU1KSE9PTB9fSxpc0FwcGVuZDp7Z2V0KCl7cmV0dXJuIHRoaXMuZmxhZ3MmMTAyNH19LGZsYWdzOntnZXQoKXtyZXR1cm4gdGhpcy5zaGFyZWQuZmxhZ3N9LHNldChXKXt0aGlzLnNoYXJlZC5mbGFncz1XfX0scG9zaXRpb246e2dldCgpe3JldHVybiB0aGlzLnNoYXJlZC5wb3NpdGlvbn0sc2V0KFcpe3RoaXMuc2hhcmVkLnBvc2l0aW9uPVd9fX0pKSx1PU9iamVjdC5hc3NpZ24obmV3IEsuRlNTdHJlYW0sdSksVj09LTEmJihWPUsubmV4dGZkKCkpLHUuZmQ9VixLLnN0cmVhbXNbVl09dSx1KSxjbG9zZVN0cmVhbTp1PT57Sy5zdHJlYW1zW3VdPW51bGx9LGNocmRldl9zdHJlYW1fb3BzOntvcGVuOnU9Pnt2YXIgVj1LLmdldERldmljZSh1Lm5vZGUucmRldik7dS5zdHJlYW1fb3BzPVYuc3RyZWFtX29wcyx1LnN0cmVhbV9vcHMub3BlbiYmdS5zdHJlYW1fb3BzLm9wZW4odSl9LGxsc2VlazooKT0+e3Rocm93IG5ldyBLLkVycm5vRXJyb3IoNzApfX0sbWFqb3I6dT0+dT4+OCxtaW5vcjp1PT51JjI1NSxtYWtlZGV2Oih1LFYpPT51PDw4fFYscmVnaXN0ZXJEZXZpY2U6KHUsVik9PntLLmRldmljZXNbdV09e3N0cmVhbV9vcHM6Vn19LGdldERldmljZTp1PT5LLmRldmljZXNbdV0sZ2V0TW91bnRzOnU9Pntmb3IodmFyIFY9W10sVz1bdV07Vy5sZW5ndGg7KXt2YXIgUD1XLnBvcCgpO1YucHVzaChQKSxXLnB1c2guYXBwbHkoVyxQLm1vdW50cyl9cmV0dXJuIFZ9LHN5bmNmczoodSxWKT0+e3R5cGVvZiB1PT0iZnVuY3Rpb24iJiYoVj11LHU9ITEpLEsuc3luY0ZTUmVxdWVzdHMrKyxLLnN5bmNGU1JlcXVlc3RzPjEmJkYoYHdhcm5pbmc6ICR7Sy5zeW5jRlNSZXF1ZXN0c30gRlMuc3luY2ZzIG9wZXJhdGlvbnMgaW4gZmxpZ2h0IGF0IG9uY2UsIHByb2JhYmx5IGp1c3QgZG9pbmcgZXh0cmEgd29ya2ApO3ZhciBXPUsuZ2V0TW91bnRzKEsucm9vdC5tb3VudCksUD0wO2Z1bmN0aW9uICQoZHQpe3JldHVybiBjKEsuc3luY0ZTUmVxdWVzdHM+MCksSy5zeW5jRlNSZXF1ZXN0cy0tLFYoZHQpfWZ1bmN0aW9uIGh0KGR0KXtpZihkdClyZXR1cm4gaHQuZXJyb3JlZD92b2lkIDA6KGh0LmVycm9yZWQ9ITAsJChkdCkpOysrUD49Vy5sZW5ndGgmJiQobnVsbCl9Vy5mb3JFYWNoKGR0PT57aWYoIWR0LnR5cGUuc3luY2ZzKXJldHVybiBodChudWxsKTtkdC50eXBlLnN5bmNmcyhkdCx1LGh0KX0pfSxtb3VudDoodSxWLFcpPT57aWYodHlwZW9mIHU9PSJzdHJpbmciKXRocm93IHU7dmFyIFA9Vz09PSIvIiwkPSFXLGh0O2lmKFAmJksucm9vdCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDEwKTtpZighUCYmISQpe3ZhciBkdD1LLmxvb2t1cFBhdGgoVyx7Zm9sbG93X21vdW50OiExfSk7aWYoVz1kdC5wYXRoLGh0PWR0Lm5vZGUsSy5pc01vdW50cG9pbnQoaHQpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMTApO2lmKCFLLmlzRGlyKGh0Lm1vZGUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNTQpfXZhciBmdD17dHlwZTp1LG9wdHM6Vixtb3VudHBvaW50OlcsbW91bnRzOltdfSxHdD11Lm1vdW50KGZ0KTtyZXR1cm4gR3QubW91bnQ9ZnQsZnQucm9vdD1HdCxQP0sucm9vdD1HdDpodCYmKGh0Lm1vdW50ZWQ9ZnQsaHQubW91bnQmJmh0Lm1vdW50Lm1vdW50cy5wdXNoKGZ0KSksR3R9LHVubW91bnQ6dT0+e3ZhciBWPUsubG9va3VwUGF0aCh1LHtmb2xsb3dfbW91bnQ6ITF9KTtpZighSy5pc01vdW50cG9pbnQoVi5ub2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTt2YXIgVz1WLm5vZGUsUD1XLm1vdW50ZWQsJD1LLmdldE1vdW50cyhQKTtPYmplY3Qua2V5cyhLLm5hbWVUYWJsZSkuZm9yRWFjaChkdD0+e2Zvcih2YXIgZnQ9Sy5uYW1lVGFibGVbZHRdO2Z0Oyl7dmFyIEd0PWZ0Lm5hbWVfbmV4dDskLmluY2x1ZGVzKGZ0Lm1vdW50KSYmSy5kZXN0cm95Tm9kZShmdCksZnQ9R3R9fSksVy5tb3VudGVkPW51bGw7dmFyIGh0PVcubW91bnQubW91bnRzLmluZGV4T2YoUCk7YyhodCE9PS0xKSxXLm1vdW50Lm1vdW50cy5zcGxpY2UoaHQsMSl9LGxvb2t1cDoodSxWKT0+dS5ub2RlX29wcy5sb29rdXAodSxWKSxta25vZDoodSxWLFcpPT57dmFyIFA9Sy5sb29rdXBQYXRoKHUse3BhcmVudDohMH0pLCQ9UC5ub2RlLGh0PUJ0LmJhc2VuYW1lKHUpO2lmKCFodHx8aHQ9PT0iLiJ8fGh0PT09Ii4uIil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTt2YXIgZHQ9Sy5tYXlDcmVhdGUoJCxodCk7aWYoZHQpdGhyb3cgbmV3IEsuRXJybm9FcnJvcihkdCk7aWYoISQubm9kZV9vcHMubWtub2QpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7cmV0dXJuICQubm9kZV9vcHMubWtub2QoJCxodCxWLFcpfSxjcmVhdGU6KHUsVik9PihWPVYhPT12b2lkIDA/Vjo0MzgsViY9NDA5NSxWfD0zMjc2OCxLLm1rbm9kKHUsViwwKSksbWtkaXI6KHUsVik9PihWPVYhPT12b2lkIDA/Vjo1MTEsViY9MTAyMyxWfD0xNjM4NCxLLm1rbm9kKHUsViwwKSksbWtkaXJUcmVlOih1LFYpPT57Zm9yKHZhciBXPXUuc3BsaXQoIi8iKSxQPSIiLCQ9MDskPFcubGVuZ3RoOysrJClpZihXWyRdKXtQKz0iLyIrV1skXTt0cnl7Sy5ta2RpcihQLFYpfWNhdGNoKGh0KXtpZihodC5lcnJubyE9MjApdGhyb3cgaHR9fX0sbWtkZXY6KHUsVixXKT0+KHR5cGVvZiBXPiJ1IiYmKFc9VixWPTQzOCksVnw9ODE5MixLLm1rbm9kKHUsVixXKSksc3ltbGluazoodSxWKT0+e2lmKCFEdC5yZXNvbHZlKHUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO3ZhciBXPUsubG9va3VwUGF0aChWLHtwYXJlbnQ6ITB9KSxQPVcubm9kZTtpZighUCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ0KTt2YXIgJD1CdC5iYXNlbmFtZShWKSxodD1LLm1heUNyZWF0ZShQLCQpO2lmKGh0KXRocm93IG5ldyBLLkVycm5vRXJyb3IoaHQpO2lmKCFQLm5vZGVfb3BzLnN5bWxpbmspdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7cmV0dXJuIFAubm9kZV9vcHMuc3ltbGluayhQLCQsdSl9LHJlbmFtZToodSxWKT0+e3ZhciBXPUJ0LmRpcm5hbWUodSksUD1CdC5kaXJuYW1lKFYpLCQ9QnQuYmFzZW5hbWUodSksaHQ9QnQuYmFzZW5hbWUoViksZHQsZnQsR3Q7aWYoZHQ9Sy5sb29rdXBQYXRoKHUse3BhcmVudDohMH0pLGZ0PWR0Lm5vZGUsZHQ9Sy5sb29rdXBQYXRoKFYse3BhcmVudDohMH0pLEd0PWR0Lm5vZGUsIWZ0fHwhR3QpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7aWYoZnQubW91bnQhPT1HdC5tb3VudCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDc1KTt2YXIgTHQ9Sy5sb29rdXBOb2RlKGZ0LCQpLHJlPUR0LnJlbGF0aXZlKHUsUCk7aWYocmUuY2hhckF0KDApIT09Ii4iKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO2lmKHJlPUR0LnJlbGF0aXZlKFYsVykscmUuY2hhckF0KDApIT09Ii4iKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNTUpO3ZhciB1ZTt0cnl7dWU9Sy5sb29rdXBOb2RlKEd0LGh0KX1jYXRjaHt9aWYoTHQhPT11ZSl7dmFyIGZlPUsuaXNEaXIoTHQubW9kZSksRWU9Sy5tYXlEZWxldGUoZnQsJCxmZSk7aWYoRWUpdGhyb3cgbmV3IEsuRXJybm9FcnJvcihFZSk7aWYoRWU9dWU/Sy5tYXlEZWxldGUoR3QsaHQsZmUpOksubWF5Q3JlYXRlKEd0LGh0KSxFZSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKEVlKTtpZighZnQubm9kZV9vcHMucmVuYW1lKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpO2lmKEsuaXNNb3VudHBvaW50KEx0KXx8dWUmJksuaXNNb3VudHBvaW50KHVlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDEwKTtpZihHdCE9PWZ0JiYoRWU9Sy5ub2RlUGVybWlzc2lvbnMoZnQsInciKSxFZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcihFZSk7Sy5oYXNoUmVtb3ZlTm9kZShMdCk7dHJ5e2Z0Lm5vZGVfb3BzLnJlbmFtZShMdCxHdCxodCl9Y2F0Y2goVmUpe3Rocm93IFZlfWZpbmFsbHl7Sy5oYXNoQWRkTm9kZShMdCl9fX0scm1kaXI6dT0+e3ZhciBWPUsubG9va3VwUGF0aCh1LHtwYXJlbnQ6ITB9KSxXPVYubm9kZSxQPUJ0LmJhc2VuYW1lKHUpLCQ9Sy5sb29rdXBOb2RlKFcsUCksaHQ9Sy5tYXlEZWxldGUoVyxQLCEwKTtpZihodCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKGh0KTtpZighVy5ub2RlX29wcy5ybWRpcil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYzKTtpZihLLmlzTW91bnRwb2ludCgkKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDEwKTtXLm5vZGVfb3BzLnJtZGlyKFcsUCksSy5kZXN0cm95Tm9kZSgkKX0scmVhZGRpcjp1PT57dmFyIFY9Sy5sb29rdXBQYXRoKHUse2ZvbGxvdzohMH0pLFc9Vi5ub2RlO2lmKCFXLm5vZGVfb3BzLnJlYWRkaXIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig1NCk7cmV0dXJuIFcubm9kZV9vcHMucmVhZGRpcihXKX0sdW5saW5rOnU9Pnt2YXIgVj1LLmxvb2t1cFBhdGgodSx7cGFyZW50OiEwfSksVz1WLm5vZGU7aWYoIVcpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7dmFyIFA9QnQuYmFzZW5hbWUodSksJD1LLmxvb2t1cE5vZGUoVyxQKSxodD1LLm1heURlbGV0ZShXLFAsITEpO2lmKGh0KXRocm93IG5ldyBLLkVycm5vRXJyb3IoaHQpO2lmKCFXLm5vZGVfb3BzLnVubGluayl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYzKTtpZihLLmlzTW91bnRwb2ludCgkKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDEwKTtXLm5vZGVfb3BzLnVubGluayhXLFApLEsuZGVzdHJveU5vZGUoJCl9LHJlYWRsaW5rOnU9Pnt2YXIgVj1LLmxvb2t1cFBhdGgodSksVz1WLm5vZGU7aWYoIVcpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7aWYoIVcubm9kZV9vcHMucmVhZGxpbmspdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7cmV0dXJuIER0LnJlc29sdmUoSy5nZXRQYXRoKFcucGFyZW50KSxXLm5vZGVfb3BzLnJlYWRsaW5rKFcpKX0sc3RhdDoodSxWKT0+e3ZhciBXPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6IVZ9KSxQPVcubm9kZTtpZighUCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ0KTtpZighUC5ub2RlX29wcy5nZXRhdHRyKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNjMpO3JldHVybiBQLm5vZGVfb3BzLmdldGF0dHIoUCl9LGxzdGF0OnU9Pksuc3RhdCh1LCEwKSxjaG1vZDoodSxWLFcpPT57dmFyIFA7aWYodHlwZW9mIHU9PSJzdHJpbmciKXt2YXIgJD1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiFXfSk7UD0kLm5vZGV9ZWxzZSBQPXU7aWYoIVAubm9kZV9vcHMuc2V0YXR0cil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYzKTtQLm5vZGVfb3BzLnNldGF0dHIoUCx7bW9kZTpWJjQwOTV8UC5tb2RlJi00MDk2LHRpbWVzdGFtcDpEYXRlLm5vdygpfSl9LGxjaG1vZDoodSxWKT0+e0suY2htb2QodSxWLCEwKX0sZmNobW9kOih1LFYpPT57dmFyIFc9Sy5nZXRTdHJlYW1DaGVja2VkKHUpO0suY2htb2QoVy5ub2RlLFYpfSxjaG93bjoodSxWLFcsUCk9Pnt2YXIgJDtpZih0eXBlb2YgdT09InN0cmluZyIpe3ZhciBodD1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiFQfSk7JD1odC5ub2RlfWVsc2UgJD11O2lmKCEkLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7JC5ub2RlX29wcy5zZXRhdHRyKCQse3RpbWVzdGFtcDpEYXRlLm5vdygpfSl9LGxjaG93bjoodSxWLFcpPT57Sy5jaG93bih1LFYsVywhMCl9LGZjaG93bjoodSxWLFcpPT57dmFyIFA9Sy5nZXRTdHJlYW1DaGVja2VkKHUpO0suY2hvd24oUC5ub2RlLFYsVyl9LHRydW5jYXRlOih1LFYpPT57aWYoVjwwKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO3ZhciBXO2lmKHR5cGVvZiB1PT0ic3RyaW5nIil7dmFyIFA9Sy5sb29rdXBQYXRoKHUse2ZvbGxvdzohMH0pO1c9UC5ub2RlfWVsc2UgVz11O2lmKCFXLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig2Myk7aWYoSy5pc0RpcihXLm1vZGUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMzEpO2lmKCFLLmlzRmlsZShXLm1vZGUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO3ZhciAkPUsubm9kZVBlcm1pc3Npb25zKFcsInciKTtpZigkKXRocm93IG5ldyBLLkVycm5vRXJyb3IoJCk7Vy5ub2RlX29wcy5zZXRhdHRyKFcse3NpemU6Vix0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxmdHJ1bmNhdGU6KHUsVik9Pnt2YXIgVz1LLmdldFN0cmVhbUNoZWNrZWQodSk7aWYoIShXLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO0sudHJ1bmNhdGUoVy5ub2RlLFYpfSx1dGltZToodSxWLFcpPT57dmFyIFA9Sy5sb29rdXBQYXRoKHUse2ZvbGxvdzohMH0pLCQ9UC5ub2RlOyQubm9kZV9vcHMuc2V0YXR0cigkLHt0aW1lc3RhbXA6TWF0aC5tYXgoVixXKX0pfSxvcGVuOih1LFYsVyk9PntpZih1PT09IiIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7Vj10eXBlb2YgVj09InN0cmluZyI/UmEoVik6VixXPXR5cGVvZiBXPiJ1Ij80Mzg6VyxWJjY0P1c9VyY0MDk1fDMyNzY4Olc9MDt2YXIgUDtpZih0eXBlb2YgdT09Im9iamVjdCIpUD11O2Vsc2V7dT1CdC5ub3JtYWxpemUodSk7dHJ5e3ZhciAkPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6IShWJjEzMTA3Mil9KTtQPSQubm9kZX1jYXRjaHt9fXZhciBodD0hMTtpZihWJjY0KWlmKFApe2lmKFYmMTI4KXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjApfWVsc2UgUD1LLm1rbm9kKHUsVywwKSxodD0hMDtpZighUCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ0KTtpZihLLmlzQ2hyZGV2KFAubW9kZSkmJihWJj0tNTEzKSxWJjY1NTM2JiYhSy5pc0RpcihQLm1vZGUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNTQpO2lmKCFodCl7dmFyIGR0PUsubWF5T3BlbihQLFYpO2lmKGR0KXRocm93IG5ldyBLLkVycm5vRXJyb3IoZHQpfVYmNTEyJiYhaHQmJksudHJ1bmNhdGUoUCwwKSxWJj0tMTMxNzEzO3ZhciBmdD1LLmNyZWF0ZVN0cmVhbSh7bm9kZTpQLHBhdGg6Sy5nZXRQYXRoKFApLGZsYWdzOlYsc2Vla2FibGU6ITAscG9zaXRpb246MCxzdHJlYW1fb3BzOlAuc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjohMX0pO3JldHVybiBmdC5zdHJlYW1fb3BzLm9wZW4mJmZ0LnN0cmVhbV9vcHMub3BlbihmdCksaS5sb2dSZWFkRmlsZXMmJiEoViYxKSYmKEsucmVhZEZpbGVzfHwoSy5yZWFkRmlsZXM9e30pLHUgaW4gSy5yZWFkRmlsZXN8fChLLnJlYWRGaWxlc1t1XT0xKSksZnR9LGNsb3NlOnU9PntpZihLLmlzQ2xvc2VkKHUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7dS5nZXRkZW50cyYmKHUuZ2V0ZGVudHM9bnVsbCk7dHJ5e3Uuc3RyZWFtX29wcy5jbG9zZSYmdS5zdHJlYW1fb3BzLmNsb3NlKHUpfWNhdGNoKFYpe3Rocm93IFZ9ZmluYWxseXtLLmNsb3NlU3RyZWFtKHUuZmQpfXUuZmQ9bnVsbH0saXNDbG9zZWQ6dT0+dS5mZD09PW51bGwsbGxzZWVrOih1LFYsVyk9PntpZihLLmlzQ2xvc2VkKHUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7aWYoIXUuc2Vla2FibGV8fCF1LnN0cmVhbV9vcHMubGxzZWVrKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNzApO2lmKFchPTAmJlchPTEmJlchPTIpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOCk7cmV0dXJuIHUucG9zaXRpb249dS5zdHJlYW1fb3BzLmxsc2Vlayh1LFYsVyksdS51bmdvdHRlbj1bXSx1LnBvc2l0aW9ufSxyZWFkOih1LFYsVyxQLCQpPT57aWYoYyhXPj0wKSxQPDB8fCQ8MCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI4KTtpZihLLmlzQ2xvc2VkKHUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7aWYoKHUuZmxhZ3MmMjA5NzE1NSk9PT0xKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7aWYoSy5pc0Rpcih1Lm5vZGUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcigzMSk7aWYoIXUuc3RyZWFtX29wcy5yZWFkKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO3ZhciBodD10eXBlb2YgJDwidSI7aWYoIWh0KSQ9dS5wb3NpdGlvbjtlbHNlIGlmKCF1LnNlZWthYmxlKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNzApO3ZhciBkdD11LnN0cmVhbV9vcHMucmVhZCh1LFYsVyxQLCQpO3JldHVybiBodHx8KHUucG9zaXRpb24rPWR0KSxkdH0sd3JpdGU6KHUsVixXLFAsJCxodCk9PntpZihjKFc+PTApLFA8MHx8JDwwKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO2lmKEsuaXNDbG9zZWQodSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig4KTtpZighKHUuZmxhZ3MmMjA5NzE1NSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig4KTtpZihLLmlzRGlyKHUubm9kZS5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDMxKTtpZighdS5zdHJlYW1fb3BzLndyaXRlKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO3Uuc2Vla2FibGUmJnUuZmxhZ3MmMTAyNCYmSy5sbHNlZWsodSwwLDIpO3ZhciBkdD10eXBlb2YgJDwidSI7aWYoIWR0KSQ9dS5wb3NpdGlvbjtlbHNlIGlmKCF1LnNlZWthYmxlKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNzApO3ZhciBmdD11LnN0cmVhbV9vcHMud3JpdGUodSxWLFcsUCwkLGh0KTtyZXR1cm4gZHR8fCh1LnBvc2l0aW9uKz1mdCksZnR9LGFsbG9jYXRlOih1LFYsVyk9PntpZihLLmlzQ2xvc2VkKHUpKXRocm93IG5ldyBLLkVycm5vRXJyb3IoOCk7aWYoVjwwfHxXPD0wKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMjgpO2lmKCEodS5mbGFncyYyMDk3MTU1KSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDgpO2lmKCFLLmlzRmlsZSh1Lm5vZGUubW9kZSkmJiFLLmlzRGlyKHUubm9kZS5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQzKTtpZighdS5zdHJlYW1fb3BzLmFsbG9jYXRlKXRocm93IG5ldyBLLkVycm5vRXJyb3IoMTM4KTt1LnN0cmVhbV9vcHMuYWxsb2NhdGUodSxWLFcpfSxtbWFwOih1LFYsVyxQLCQpPT57aWYoUCYyJiYhKCQmMikmJih1LmZsYWdzJjIwOTcxNTUpIT09Mil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDIpO2lmKCh1LmZsYWdzJjIwOTcxNTUpPT09MSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDIpO2lmKCF1LnN0cmVhbV9vcHMubW1hcCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQzKTtyZXR1cm4gdS5zdHJlYW1fb3BzLm1tYXAodSxWLFcsUCwkKX0sbXN5bmM6KHUsVixXLFAsJCk9PihjKFc+PTApLHUuc3RyZWFtX29wcy5tc3luYz91LnN0cmVhbV9vcHMubXN5bmModSxWLFcsUCwkKTowKSxtdW5tYXA6dT0+MCxpb2N0bDoodSxWLFcpPT57aWYoIXUuc3RyZWFtX29wcy5pb2N0bCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDU5KTtyZXR1cm4gdS5zdHJlYW1fb3BzLmlvY3RsKHUsVixXKX0scmVhZEZpbGU6KHUsVj17fSk9PntpZihWLmZsYWdzPVYuZmxhZ3N8fDAsVi5lbmNvZGluZz1WLmVuY29kaW5nfHwiYmluYXJ5IixWLmVuY29kaW5nIT09InV0ZjgiJiZWLmVuY29kaW5nIT09ImJpbmFyeSIpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVuY29kaW5nIHR5cGUgIiR7Vi5lbmNvZGluZ30iYCk7dmFyIFcsUD1LLm9wZW4odSxWLmZsYWdzKSwkPUsuc3RhdCh1KSxodD0kLnNpemUsZHQ9bmV3IFVpbnQ4QXJyYXkoaHQpO3JldHVybiBLLnJlYWQoUCxkdCwwLGh0LDApLFYuZW5jb2Rpbmc9PT0idXRmOCI/Vz1mYShkdCwwKTpWLmVuY29kaW5nPT09ImJpbmFyeSImJihXPWR0KSxLLmNsb3NlKFApLFd9LHdyaXRlRmlsZToodSxWLFc9e30pPT57Vy5mbGFncz1XLmZsYWdzfHw1Nzc7dmFyIFA9Sy5vcGVuKHUsVy5mbGFncyxXLm1vZGUpO2lmKHR5cGVvZiBWPT0ic3RyaW5nIil7dmFyICQ9bmV3IFVpbnQ4QXJyYXkobWEoVikrMSksaHQ9cWgoViwkLDAsJC5sZW5ndGgpO0sud3JpdGUoUCwkLDAsaHQsdm9pZCAwLFcuY2FuT3duKX1lbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyhWKSlLLndyaXRlKFAsViwwLFYuYnl0ZUxlbmd0aCx2b2lkIDAsVy5jYW5Pd24pO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBkYXRhIHR5cGUiKTtLLmNsb3NlKFApfSxjd2Q6KCk9PksuY3VycmVudFBhdGgsY2hkaXI6dT0+e3ZhciBWPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6ITB9KTtpZihWLm5vZGU9PT1udWxsKXRocm93IG5ldyBLLkVycm5vRXJyb3IoNDQpO2lmKCFLLmlzRGlyKFYubm9kZS5tb2RlKSl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDU0KTt2YXIgVz1LLm5vZGVQZXJtaXNzaW9ucyhWLm5vZGUsIngiKTtpZihXKXRocm93IG5ldyBLLkVycm5vRXJyb3IoVyk7Sy5jdXJyZW50UGF0aD1WLnBhdGh9LGNyZWF0ZURlZmF1bHREaXJlY3RvcmllczooKT0+e0subWtkaXIoIi90bXAiKSxLLm1rZGlyKCIvaG9tZSIpLEsubWtkaXIoIi9ob21lL3dlYl91c2VyIil9LGNyZWF0ZURlZmF1bHREZXZpY2VzOigpPT57Sy5ta2RpcigiL2RldiIpLEsucmVnaXN0ZXJEZXZpY2UoSy5tYWtlZGV2KDEsMykse3JlYWQ6KCk9PjAsd3JpdGU6KFAsJCxodCxkdCxmdCk9PmR0fSksSy5ta2RldigiL2Rldi9udWxsIixLLm1ha2VkZXYoMSwzKSkscGkucmVnaXN0ZXIoSy5tYWtlZGV2KDUsMCkscGkuZGVmYXVsdF90dHlfb3BzKSxwaS5yZWdpc3RlcihLLm1ha2VkZXYoNiwwKSxwaS5kZWZhdWx0X3R0eTFfb3BzKSxLLm1rZGV2KCIvZGV2L3R0eSIsSy5tYWtlZGV2KDUsMCkpLEsubWtkZXYoIi9kZXYvdHR5MSIsSy5tYWtlZGV2KDYsMCkpO3ZhciB1PW5ldyBVaW50OEFycmF5KDEwMjQpLFY9MCxXPSgpPT4oVj09PTAmJihWPU10KHUpLmJ5dGVMZW5ndGgpLHVbLS1WXSk7Sy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJyYW5kb20iLFcpLEsuY3JlYXRlRGV2aWNlKCIvZGV2IiwidXJhbmRvbSIsVyksSy5ta2RpcigiL2Rldi9zaG0iKSxLLm1rZGlyKCIvZGV2L3NobS90bXAiKX0sY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzOigpPT57Sy5ta2RpcigiL3Byb2MiKTt2YXIgdT1LLm1rZGlyKCIvcHJvYy9zZWxmIik7Sy5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpLEsubW91bnQoe21vdW50OigpPT57dmFyIFY9Sy5jcmVhdGVOb2RlKHUsImZkIiwxNjg5NSw3Myk7cmV0dXJuIFYubm9kZV9vcHM9e2xvb2t1cDooVyxQKT0+e3ZhciAkPStQLGh0PUsuZ2V0U3RyZWFtQ2hlY2tlZCgkKSxkdD17cGFyZW50Om51bGwsbW91bnQ6e21vdW50cG9pbnQ6ImZha2UifSxub2RlX29wczp7cmVhZGxpbms6KCk9Pmh0LnBhdGh9fTtyZXR1cm4gZHQucGFyZW50PWR0LGR0fX0sVn19LHt9LCIvcHJvYy9zZWxmL2ZkIil9LGNyZWF0ZVN0YW5kYXJkU3RyZWFtczooKT0+e2kuc3RkaW4/Sy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRpbiIsaS5zdGRpbik6Sy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKSxpLnN0ZG91dD9LLmNyZWF0ZURldmljZSgiL2RldiIsInN0ZG91dCIsbnVsbCxpLnN0ZG91dCk6Sy5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0IiksaS5zdGRlcnI/Sy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsaS5zdGRlcnIpOksuc3ltbGluaygiL2Rldi90dHkxIiwiL2Rldi9zdGRlcnIiKTt2YXIgdT1LLm9wZW4oIi9kZXYvc3RkaW4iLDApLFY9Sy5vcGVuKCIvZGV2L3N0ZG91dCIsMSksVz1LLm9wZW4oIi9kZXYvc3RkZXJyIiwxKTtjKHUuZmQ9PT0wLGBpbnZhbGlkIGhhbmRsZSBmb3Igc3RkaW4gKCR7dS5mZH0pYCksYyhWLmZkPT09MSxgaW52YWxpZCBoYW5kbGUgZm9yIHN0ZG91dCAoJHtWLmZkfSlgKSxjKFcuZmQ9PT0yLGBpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyICgke1cuZmR9KWApfSxlbnN1cmVFcnJub0Vycm9yOigpPT57Sy5FcnJub0Vycm9yfHwoSy5FcnJub0Vycm9yPWZ1bmN0aW9uKFYsVyl7dGhpcy5uYW1lPSJFcnJub0Vycm9yIix0aGlzLm5vZGU9Vyx0aGlzLnNldEVycm5vPWZ1bmN0aW9uKFApe3RoaXMuZXJybm89UDtmb3IodmFyICQgaW4gRW0paWYoRW1bJF09PT1QKXt0aGlzLmNvZGU9JDticmVha319LHRoaXMuc2V0RXJybm8oViksdGhpcy5tZXNzYWdlPWpSW1ZdLHRoaXMuc3RhY2smJihPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywic3RhY2siLHt2YWx1ZTpuZXcgRXJyb3IoKS5zdGFjayx3cml0YWJsZTohMH0pLHRoaXMuc3RhY2s9ejgodGhpcy5zdGFjaykpfSxLLkVycm5vRXJyb3IucHJvdG90eXBlPW5ldyBFcnJvcixLLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPUsuRXJybm9FcnJvcixbNDRdLmZvckVhY2godT0+e0suZ2VuZXJpY0Vycm9yc1t1XT1uZXcgSy5FcnJub0Vycm9yKHUpLEsuZ2VuZXJpY0Vycm9yc1t1XS5zdGFjaz0iPGdlbmVyaWMgZXJyb3IsIG5vIHN0YWNrPiJ9KSl9LHN0YXRpY0luaXQ6KCk9PntLLmVuc3VyZUVycm5vRXJyb3IoKSxLLm5hbWVUYWJsZT1uZXcgQXJyYXkoNDA5NiksSy5tb3VudChRZSx7fSwiLyIpLEsuY3JlYXRlRGVmYXVsdERpcmVjdG9yaWVzKCksSy5jcmVhdGVEZWZhdWx0RGV2aWNlcygpLEsuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCksSy5maWxlc3lzdGVtcz17TUVNRlM6UWV9fSxpbml0Oih1LFYsVyk9PntjKCFLLmluaXQuaW5pdGlhbGl6ZWQsIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSkiKSxLLmluaXQuaW5pdGlhbGl6ZWQ9ITAsSy5lbnN1cmVFcnJub0Vycm9yKCksaS5zdGRpbj11fHxpLnN0ZGluLGkuc3Rkb3V0PVZ8fGkuc3Rkb3V0LGkuc3RkZXJyPVd8fGkuc3RkZXJyLEsuY3JlYXRlU3RhbmRhcmRTdHJlYW1zKCl9LHF1aXQ6KCk9PntLLmluaXQuaW5pdGlhbGl6ZWQ9ITEsZFgoMCk7Zm9yKHZhciB1PTA7dTxLLnN0cmVhbXMubGVuZ3RoO3UrKyl7dmFyIFY9Sy5zdHJlYW1zW3VdO1YmJksuY2xvc2UoVil9fSxmaW5kT2JqZWN0Oih1LFYpPT57dmFyIFc9Sy5hbmFseXplUGF0aCh1LFYpO3JldHVybiBXLmV4aXN0cz9XLm9iamVjdDpudWxsfSxhbmFseXplUGF0aDoodSxWKT0+e3RyeXt2YXIgVz1LLmxvb2t1cFBhdGgodSx7Zm9sbG93OiFWfSk7dT1XLnBhdGh9Y2F0Y2h7fXZhciBQPXtpc1Jvb3Q6ITEsZXhpc3RzOiExLGVycm9yOjAsbmFtZTpudWxsLHBhdGg6bnVsbCxvYmplY3Q6bnVsbCxwYXJlbnRFeGlzdHM6ITEscGFyZW50UGF0aDpudWxsLHBhcmVudE9iamVjdDpudWxsfTt0cnl7dmFyIFc9Sy5sb29rdXBQYXRoKHUse3BhcmVudDohMH0pO1AucGFyZW50RXhpc3RzPSEwLFAucGFyZW50UGF0aD1XLnBhdGgsUC5wYXJlbnRPYmplY3Q9Vy5ub2RlLFAubmFtZT1CdC5iYXNlbmFtZSh1KSxXPUsubG9va3VwUGF0aCh1LHtmb2xsb3c6IVZ9KSxQLmV4aXN0cz0hMCxQLnBhdGg9Vy5wYXRoLFAub2JqZWN0PVcubm9kZSxQLm5hbWU9Vy5ub2RlLm5hbWUsUC5pc1Jvb3Q9Vy5wYXRoPT09Ii8ifWNhdGNoKCQpe1AuZXJyb3I9JC5lcnJub31yZXR1cm4gUH0sY3JlYXRlUGF0aDoodSxWLFcsUCk9Pnt1PXR5cGVvZiB1PT0ic3RyaW5nIj91OksuZ2V0UGF0aCh1KTtmb3IodmFyICQ9Vi5zcGxpdCgiLyIpLnJldmVyc2UoKTskLmxlbmd0aDspe3ZhciBodD0kLnBvcCgpO2lmKGh0KXt2YXIgZHQ9QnQuam9pbjIodSxodCk7dHJ5e0subWtkaXIoZHQpfWNhdGNoe311PWR0fX1yZXR1cm4gZHR9LGNyZWF0ZUZpbGU6KHUsVixXLFAsJCk9Pnt2YXIgaHQ9QnQuam9pbjIodHlwZW9mIHU9PSJzdHJpbmciP3U6Sy5nZXRQYXRoKHUpLFYpLGR0PWlFKFAsJCk7cmV0dXJuIEsuY3JlYXRlKGh0LGR0KX0sY3JlYXRlRGF0YUZpbGU6KHUsVixXLFAsJCxodCk9Pnt2YXIgZHQ9Vjt1JiYodT10eXBlb2YgdT09InN0cmluZyI/dTpLLmdldFBhdGgodSksZHQ9Vj9CdC5qb2luMih1LFYpOnUpO3ZhciBmdD1pRShQLCQpLEd0PUsuY3JlYXRlKGR0LGZ0KTtpZihXKXtpZih0eXBlb2YgVz09InN0cmluZyIpe2Zvcih2YXIgTHQ9bmV3IEFycmF5KFcubGVuZ3RoKSxyZT0wLHVlPVcubGVuZ3RoO3JlPHVlOysrcmUpTHRbcmVdPVcuY2hhckNvZGVBdChyZSk7Vz1MdH1LLmNobW9kKEd0LGZ0fDE0Nik7dmFyIGZlPUsub3BlbihHdCw1NzcpO0sud3JpdGUoZmUsVywwLFcubGVuZ3RoLDAsaHQpLEsuY2xvc2UoZmUpLEsuY2htb2QoR3QsZnQpfXJldHVybiBHdH0sY3JlYXRlRGV2aWNlOih1LFYsVyxQKT0+e3ZhciAkPUJ0LmpvaW4yKHR5cGVvZiB1PT0ic3RyaW5nIj91OksuZ2V0UGF0aCh1KSxWKSxodD1pRSghIVcsISFQKTtLLmNyZWF0ZURldmljZS5tYWpvcnx8KEsuY3JlYXRlRGV2aWNlLm1ham9yPTY0KTt2YXIgZHQ9Sy5tYWtlZGV2KEsuY3JlYXRlRGV2aWNlLm1ham9yKyssMCk7cmV0dXJuIEsucmVnaXN0ZXJEZXZpY2UoZHQse29wZW46ZnQ9PntmdC5zZWVrYWJsZT0hMX0sY2xvc2U6ZnQ9PntQJiZQLmJ1ZmZlciYmUC5idWZmZXIubGVuZ3RoJiZQKDEwKX0scmVhZDooZnQsR3QsTHQscmUsdWUpPT57Zm9yKHZhciBmZT0wLEVlPTA7RWU8cmU7RWUrKyl7dmFyIFZlO3RyeXtWZT1XKCl9Y2F0Y2h7dGhyb3cgbmV3IEsuRXJybm9FcnJvcigyOSl9aWYoVmU9PT12b2lkIDAmJmZlPT09MCl0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDYpO2lmKFZlPT1udWxsKWJyZWFrO2ZlKyssR3RbTHQrRWVdPVZlfXJldHVybiBmZSYmKGZ0Lm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLGZlfSx3cml0ZTooZnQsR3QsTHQscmUsdWUpPT57Zm9yKHZhciBmZT0wO2ZlPHJlO2ZlKyspdHJ5e1AoR3RbTHQrZmVdKX1jYXRjaHt0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDI5KX1yZXR1cm4gcmUmJihmdC5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxmZX19KSxLLm1rZGV2KCQsaHQsZHQpfSxmb3JjZUxvYWRGaWxlOnU9PntpZih1LmlzRGV2aWNlfHx1LmlzRm9sZGVyfHx1Lmxpbmt8fHUuY29udGVudHMpcmV0dXJuITA7aWYodHlwZW9mIFhNTEh0dHBSZXF1ZXN0PCJ1Iil0aHJvdyBuZXcgRXJyb3IoIkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBpbiBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtzIGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2Mgb24gdGhlIG1haW4gdGhyZWFkLiIpO2lmKEkpdHJ5e3UuY29udGVudHM9R2UoSSh1LnVybCksITApLHUudXNlZEJ5dGVzPXUuY29udGVudHMubGVuZ3RofWNhdGNoe3Rocm93IG5ldyBLLkVycm5vRXJyb3IoMjkpfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC4iKX0sY3JlYXRlTGF6eUZpbGU6KHUsVixXLFAsJCk9PntmdW5jdGlvbiBodCgpe3RoaXMubGVuZ3RoS25vd249ITEsdGhpcy5jaHVua3M9W119aWYoaHQucHJvdG90eXBlLmdldD1mdW5jdGlvbihFZSl7aWYoIShFZT50aGlzLmxlbmd0aC0xfHxFZTwwKSl7dmFyIFZlPUVlJXRoaXMuY2h1bmtTaXplLGRpPUVlL3RoaXMuY2h1bmtTaXplfDA7cmV0dXJuIHRoaXMuZ2V0dGVyKGRpKVtWZV19fSxodC5wcm90b3R5cGUuc2V0RGF0YUdldHRlcj1mdW5jdGlvbihFZSl7dGhpcy5nZXR0ZXI9RWV9LGh0LnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbigpe3ZhciBFZT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoRWUub3BlbigiSEVBRCIsVywhMSksRWUuc2VuZChudWxsKSwhKEVlLnN0YXR1cz49MjAwJiZFZS5zdGF0dXM8MzAwfHxFZS5zdGF0dXM9PT0zMDQpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiK1crIi4gU3RhdHVzOiAiK0VlLnN0YXR1cyk7dmFyIFZlPU51bWJlcihFZS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1sZW5ndGgiKSksZGksbG49KGRpPUVlLmdldFJlc3BvbnNlSGVhZGVyKCJBY2NlcHQtUmFuZ2VzIikpJiZkaT09PSJieXRlcyIsUm49KGRpPUVlLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUVuY29kaW5nIikpJiZkaT09PSJnemlwIixxdD0xMDI0KjEwMjQ7bG58fChxdD1WZSk7dmFyIGJlPShabixLbyk9PntpZihabj5Lbyl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcmFuZ2UgKCIrWm4rIiwgIitLbysiKSBvciBubyBieXRlcyByZXF1ZXN0ZWQhIik7aWYoS28+VmUtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitWZSsiIGJ5dGVzIGF2YWlsYWJsZSEgcHJvZ3JhbW1lciBlcnJvciEiKTt2YXIgbXM9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKG1zLm9wZW4oIkdFVCIsVywhMSksVmUhPT1xdCYmbXMuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK1puKyItIitLbyksbXMucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsbXMub3ZlcnJpZGVNaW1lVHlwZSYmbXMub3ZlcnJpZGVNaW1lVHlwZSgidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCIpLG1zLnNlbmQobnVsbCksIShtcy5zdGF0dXM+PTIwMCYmbXMuc3RhdHVzPDMwMHx8bXMuc3RhdHVzPT09MzA0KSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIitXKyIuIFN0YXR1czogIittcy5zdGF0dXMpO3JldHVybiBtcy5yZXNwb25zZSE9PXZvaWQgMD9uZXcgVWludDhBcnJheShtcy5yZXNwb25zZXx8W10pOkdlKG1zLnJlc3BvbnNlVGV4dHx8IiIsITApfSxUcz10aGlzO1RzLnNldERhdGFHZXR0ZXIoWm49Pnt2YXIgS289Wm4qcXQsbXM9KFpuKzEpKnF0LTE7aWYobXM9TWF0aC5taW4obXMsVmUtMSksdHlwZW9mIFRzLmNodW5rc1tabl0+InUiJiYoVHMuY2h1bmtzW1puXT1iZShLbyxtcykpLHR5cGVvZiBUcy5jaHVua3NbWm5dPiJ1Iil0aHJvdyBuZXcgRXJyb3IoImRvWEhSIGZhaWxlZCEiKTtyZXR1cm4gVHMuY2h1bmtzW1puXX0pLChSbnx8IVZlKSYmKHF0PVZlPTEsVmU9dGhpcy5nZXR0ZXIoMCkubGVuZ3RoLHF0PVZlLGIoIkxhenlGaWxlcyBvbiBnemlwIGZvcmNlcyBkb3dubG9hZCBvZiB0aGUgd2hvbGUgZmlsZSB3aGVuIGxlbmd0aCBpcyBhY2Nlc3NlZCIpKSx0aGlzLl9sZW5ndGg9VmUsdGhpcy5fY2h1bmtTaXplPXF0LHRoaXMubGVuZ3RoS25vd249ITB9LHR5cGVvZiBYTUxIdHRwUmVxdWVzdDwidSIpe2lmKCFkKXRocm93IkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciBkdD1uZXcgaHQ7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZHQse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RoS25vd258fHRoaXMuY2FjaGVMZW5ndGgoKSx0aGlzLl9sZW5ndGh9fSxjaHVua1NpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aEtub3dufHx0aGlzLmNhY2hlTGVuZ3RoKCksdGhpcy5fY2h1bmtTaXplfX19KTt2YXIgZnQ9e2lzRGV2aWNlOiExLGNvbnRlbnRzOmR0fX1lbHNlIHZhciBmdD17aXNEZXZpY2U6ITEsdXJsOld9O3ZhciBHdD1LLmNyZWF0ZUZpbGUodSxWLGZ0LFAsJCk7ZnQuY29udGVudHM/R3QuY29udGVudHM9ZnQuY29udGVudHM6ZnQudXJsJiYoR3QuY29udGVudHM9bnVsbCxHdC51cmw9ZnQudXJsKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhHdCx7dXNlZEJ5dGVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50cy5sZW5ndGh9fX0pO3ZhciBMdD17fSxyZT1PYmplY3Qua2V5cyhHdC5zdHJlYW1fb3BzKTtyZS5mb3JFYWNoKGZlPT57dmFyIEVlPUd0LnN0cmVhbV9vcHNbZmVdO0x0W2ZlXT1mdW5jdGlvbigpe3JldHVybiBLLmZvcmNlTG9hZEZpbGUoR3QpLEVlLmFwcGx5KG51bGwsYXJndW1lbnRzKX19KTtmdW5jdGlvbiB1ZShmZSxFZSxWZSxkaSxsbil7dmFyIFJuPWZlLm5vZGUuY29udGVudHM7aWYobG4+PVJuLmxlbmd0aClyZXR1cm4gMDt2YXIgcXQ9TWF0aC5taW4oUm4ubGVuZ3RoLWxuLGRpKTtpZihjKHF0Pj0wKSxSbi5zbGljZSlmb3IodmFyIGJlPTA7YmU8cXQ7YmUrKylFZVtWZStiZV09Um5bbG4rYmVdO2Vsc2UgZm9yKHZhciBiZT0wO2JlPHF0O2JlKyspRWVbVmUrYmVdPVJuLmdldChsbitiZSk7cmV0dXJuIHF0fXJldHVybiBMdC5yZWFkPShmZSxFZSxWZSxkaSxsbik9PihLLmZvcmNlTG9hZEZpbGUoR3QpLHVlKGZlLEVlLFZlLGRpLGxuKSksTHQubW1hcD0oZmUsRWUsVmUsZGksbG4pPT57Sy5mb3JjZUxvYWRGaWxlKEd0KTt2YXIgUm49Y24oRWUpO2lmKCFSbil0aHJvdyBuZXcgSy5FcnJub0Vycm9yKDQ4KTtyZXR1cm4gdWUoZmUsZyxSbixFZSxWZSkse3B0cjpSbixhbGxvY2F0ZWQ6ITB9fSxHdC5zdHJlYW1fb3BzPUx0LEd0fSxhYnNvbHV0ZVBhdGg6KCk9PntCZSgiRlMuYWJzb2x1dGVQYXRoIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZSBQQVRIX0ZTLnJlc29sdmUgaW5zdGVhZCIpfSxjcmVhdGVGb2xkZXI6KCk9PntCZSgiRlMuY3JlYXRlRm9sZGVyIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZSBGUy5ta2RpciBpbnN0ZWFkIil9LGNyZWF0ZUxpbms6KCk9PntCZSgiRlMuY3JlYXRlTGluayBoYXMgYmVlbiByZW1vdmVkOyB1c2UgRlMuc3ltbGluayBpbnN0ZWFkIil9LGpvaW5QYXRoOigpPT57QmUoIkZTLmpvaW5QYXRoIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZSBQQVRILmpvaW4gaW5zdGVhZCIpfSxtbWFwQWxsb2M6KCk9PntCZSgiRlMubW1hcEFsbG9jIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSB0b3AgbGV2ZWwgZnVuY3Rpb24gbW1hcEFsbG9jIil9LHN0YW5kYXJkaXplUGF0aDooKT0+e0JlKCJGUy5zdGFuZGFyZGl6ZVBhdGggaGFzIGJlZW4gcmVtb3ZlZDsgdXNlIFBBVEgubm9ybWFsaXplIGluc3RlYWQiKX19LGVjPXtERUZBVUxUX1BPTExNQVNLOjUsY2FsY3VsYXRlQXQ6ZnVuY3Rpb24odSxWLFcpe2lmKEJ0LmlzQWJzKFYpKXJldHVybiBWO3ZhciBQO2lmKHU9PT0tMTAwKVA9Sy5jd2QoKTtlbHNle3ZhciAkPWVjLmdldFN0cmVhbUZyb21GRCh1KTtQPSQucGF0aH1pZihWLmxlbmd0aD09MCl7aWYoIVcpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0NCk7cmV0dXJuIFB9cmV0dXJuIEJ0LmpvaW4yKFAsVil9LGRvU3RhdDpmdW5jdGlvbih1LFYsVyl7dHJ5e3ZhciBQPXUoVil9Y2F0Y2goZnQpe2lmKGZ0JiZmdC5ub2RlJiZCdC5ub3JtYWxpemUoVikhPT1CdC5ub3JtYWxpemUoSy5nZXRQYXRoKGZ0Lm5vZGUpKSlyZXR1cm4tNTQ7dGhyb3cgZnR9eFtXPj4yXT1QLmRldix4W1crND4+Ml09UC5tb2RlLEhbVys4Pj4yXT1QLm5saW5rLHhbVysxMj4+Ml09UC51aWQseFtXKzE2Pj4yXT1QLmdpZCx4W1crMjA+PjJdPVAucmRldixlaT1bUC5zaXplPj4+MCwoTmU9UC5zaXplLCtNYXRoLmFicyhOZSk+PTE/TmU+MD8rTWF0aC5mbG9vcihOZS80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChOZS0rKH5+TmU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSx4W1crMjQ+PjJdPWVpWzBdLHhbVysyOD4+Ml09ZWlbMV0seFtXKzMyPj4yXT00MDk2LHhbVyszNj4+Ml09UC5ibG9ja3M7dmFyICQ9UC5hdGltZS5nZXRUaW1lKCksaHQ9UC5tdGltZS5nZXRUaW1lKCksZHQ9UC5jdGltZS5nZXRUaW1lKCk7cmV0dXJuIGVpPVtNYXRoLmZsb29yKCQvMWUzKT4+PjAsKE5lPU1hdGguZmxvb3IoJC8xZTMpLCtNYXRoLmFicyhOZSk+PTE/TmU+MD8rTWF0aC5mbG9vcihOZS80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChOZS0rKH5+TmU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSx4W1crNDA+PjJdPWVpWzBdLHhbVys0ND4+Ml09ZWlbMV0sSFtXKzQ4Pj4yXT0kJTFlMyoxZTMsZWk9W01hdGguZmxvb3IoaHQvMWUzKT4+PjAsKE5lPU1hdGguZmxvb3IoaHQvMWUzKSwrTWF0aC5hYnMoTmUpPj0xP05lPjA/K01hdGguZmxvb3IoTmUvNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoTmUtKyh+fk5lPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0seFtXKzU2Pj4yXT1laVswXSx4W1crNjA+PjJdPWVpWzFdLEhbVys2ND4+Ml09aHQlMWUzKjFlMyxlaT1bTWF0aC5mbG9vcihkdC8xZTMpPj4+MCwoTmU9TWF0aC5mbG9vcihkdC8xZTMpLCtNYXRoLmFicyhOZSk+PTE/TmU+MD8rTWF0aC5mbG9vcihOZS80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChOZS0rKH5+TmU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSx4W1crNzI+PjJdPWVpWzBdLHhbVys3Nj4+Ml09ZWlbMV0sSFtXKzgwPj4yXT1kdCUxZTMqMWUzLGVpPVtQLmlubz4+PjAsKE5lPVAuaW5vLCtNYXRoLmFicyhOZSk+PTE/TmU+MD8rTWF0aC5mbG9vcihOZS80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChOZS0rKH5+TmU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSx4W1crODg+PjJdPWVpWzBdLHhbVys5Mj4+Ml09ZWlbMV0sMH0sZG9Nc3luYzpmdW5jdGlvbih1LFYsVyxQLCQpe2lmKCFLLmlzRmlsZShWLm5vZGUubW9kZSkpdGhyb3cgbmV3IEsuRXJybm9FcnJvcig0Myk7aWYoUCYyKXJldHVybiAwO3ZhciBodD1PLnNsaWNlKHUsdStXKTtLLm1zeW5jKFYsaHQsJCxXLFApfSx2YXJhcmdzOnZvaWQgMCxnZXQoKXtjKGVjLnZhcmFyZ3MhPW51bGwpLGVjLnZhcmFyZ3MrPTQ7dmFyIHU9eFtlYy52YXJhcmdzLTQ+PjJdO3JldHVybiB1fSxnZXRTdHIodSl7dmFyIFY9RWEodSk7cmV0dXJuIFZ9LGdldFN0cmVhbUZyb21GRDpmdW5jdGlvbih1KXt2YXIgVj1LLmdldFN0cmVhbUNoZWNrZWQodSk7cmV0dXJuIFZ9fSxLOD0odSxWKT0+e3ZhciBXPTA7cmV0dXJuIFJ0KCkuZm9yRWFjaChmdW5jdGlvbihQLCQpe3ZhciBodD1WK1c7SFt1KyQqND4+Ml09aHQsVnQoUCxodCksVys9UC5sZW5ndGgrMX0pLDB9LFg4PSh1LFYpPT57dmFyIFc9UnQoKTtIW3U+PjJdPVcubGVuZ3RoO3ZhciBQPTA7cmV0dXJuIFcuZm9yRWFjaChmdW5jdGlvbigkKXtQKz0kLmxlbmd0aCsxfSksSFtWPj4yXT1QLDB9O2Z1bmN0aW9uIHE4KHUpe3RyeXt2YXIgVj1lYy5nZXRTdHJlYW1Gcm9tRkQodSk7cmV0dXJuIEsuY2xvc2UoViksMH1jYXRjaChXKXtpZih0eXBlb2YgSz4idSJ8fFcubmFtZSE9PSJFcnJub0Vycm9yIil0aHJvdyBXO3JldHVybiBXLmVycm5vfX12YXIgJDg9KHUsVixXLFApPT57Zm9yKHZhciAkPTAsaHQ9MDtodDxXO2h0Kyspe3ZhciBkdD1IW1Y+PjJdLGZ0PUhbVis0Pj4yXTtWKz04O3ZhciBHdD1LLnJlYWQodSxnLGR0LGZ0LFApO2lmKEd0PDApcmV0dXJuLTE7aWYoJCs9R3QsR3Q8ZnQpYnJlYWs7dHlwZW9mIFA8InUiJiYoUCs9R3QpfXJldHVybiAkfTtmdW5jdGlvbiB0WCh1LFYsVyxQKXt0cnl7dmFyICQ9ZWMuZ2V0U3RyZWFtRnJvbUZEKHUpLGh0PSQ4KCQsVixXKTtyZXR1cm4gSFtQPj4yXT1odCwwfWNhdGNoKGR0KXtpZih0eXBlb2YgSz4idSJ8fGR0Lm5hbWUhPT0iRXJybm9FcnJvciIpdGhyb3cgZHQ7cmV0dXJuIGR0LmVycm5vfX1mdW5jdGlvbiBlWCh1LFYsVyxQLCQpe3ZhciBodD1sbChWLFcpO3RyeXtpZihpc05hTihodCkpcmV0dXJuIDYxO3ZhciBkdD1lYy5nZXRTdHJlYW1Gcm9tRkQodSk7cmV0dXJuIEsubGxzZWVrKGR0LGh0LFApLGVpPVtkdC5wb3NpdGlvbj4+PjAsKE5lPWR0LnBvc2l0aW9uLCtNYXRoLmFicyhOZSk+PTE/TmU+MD8rTWF0aC5mbG9vcihOZS80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChOZS0rKH5+TmU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSx4WyQ+PjJdPWVpWzBdLHhbJCs0Pj4yXT1laVsxXSxkdC5nZXRkZW50cyYmaHQ9PT0wJiZQPT09MCYmKGR0LmdldGRlbnRzPW51bGwpLDB9Y2F0Y2goZnQpe2lmKHR5cGVvZiBLPiJ1Inx8ZnQubmFtZSE9PSJFcnJub0Vycm9yIil0aHJvdyBmdDtyZXR1cm4gZnQuZXJybm99fXZhciBpWD0odSxWLFcsUCk9Pntmb3IodmFyICQ9MCxodD0wO2h0PFc7aHQrKyl7dmFyIGR0PUhbVj4+Ml0sZnQ9SFtWKzQ+PjJdO1YrPTg7dmFyIEd0PUsud3JpdGUodSxnLGR0LGZ0LFApO2lmKEd0PDApcmV0dXJuLTE7JCs9R3QsdHlwZW9mIFA8InUiJiYoUCs9R3QpfXJldHVybiAkfTtmdW5jdGlvbiBuWCh1LFYsVyxQKXt0cnl7dmFyICQ9ZWMuZ2V0U3RyZWFtRnJvbUZEKHUpLGh0PWlYKCQsVixXKTtyZXR1cm4gSFtQPj4yXT1odCwwfWNhdGNoKGR0KXtpZih0eXBlb2YgSz4idSJ8fGR0Lm5hbWUhPT0iRXJybm9FcnJvciIpdGhyb3cgZHQ7cmV0dXJuIGR0LmVycm5vfX12YXIgc1g9KHUsVik9Pntmb3IodmFyIFc9MCxQPTA7UDw9VjtXKz11W1ArK10pO3JldHVybiBXfSxNRz1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLFFHPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sb1g9KHUsVik9Pntmb3IodmFyIFc9bmV3IERhdGUodS5nZXRUaW1lKCkpO1Y+MDspe3ZhciBQPW9BKFcuZ2V0RnVsbFllYXIoKSksJD1XLmdldE1vbnRoKCksaHQ9KFA/TUc6UUcpWyRdO2lmKFY+aHQtVy5nZXREYXRlKCkpVi09aHQtVy5nZXREYXRlKCkrMSxXLnNldERhdGUoMSksJDwxMT9XLnNldE1vbnRoKCQrMSk6KFcuc2V0TW9udGgoMCksVy5zZXRGdWxsWWVhcihXLmdldEZ1bGxZZWFyKCkrMSkpO2Vsc2UgcmV0dXJuIFcuc2V0RGF0ZShXLmdldERhdGUoKStWKSxXfXJldHVybiBXfSxrRz0odSxWKT0+e2ModS5sZW5ndGg+PTAsIndyaXRlQXJyYXlUb01lbW9yeSBhcnJheSBtdXN0IGhhdmUgYSBsZW5ndGggKHNob3VsZCBiZSBhbiBhcnJheSBvciB0eXBlZCBhcnJheSkiKSxnLnNldCh1LFYpfSxyWD0odSxWLFcsUCk9Pnt2YXIgJD14W1ArNDA+PjJdLGh0PXt0bV9zZWM6eFtQPj4yXSx0bV9taW46eFtQKzQ+PjJdLHRtX2hvdXI6eFtQKzg+PjJdLHRtX21kYXk6eFtQKzEyPj4yXSx0bV9tb246eFtQKzE2Pj4yXSx0bV95ZWFyOnhbUCsyMD4+Ml0sdG1fd2RheTp4W1ArMjQ+PjJdLHRtX3lkYXk6eFtQKzI4Pj4yXSx0bV9pc2RzdDp4W1ArMzI+PjJdLHRtX2dtdG9mZjp4W1ArMzY+PjJdLHRtX3pvbmU6JD9FYSgkKToiIn0sZHQ9RWEoVyksZnQ9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMiLCIlRWMiOiIlYyIsIiVFQyI6IiVDIiwiJUV4IjoiJW0vJWQvJXkiLCIlRVgiOiIlSDolTTolUyIsIiVFeSI6IiV5IiwiJUVZIjoiJVkiLCIlT2QiOiIlZCIsIiVPZSI6IiVlIiwiJU9IIjoiJUgiLCIlT0kiOiIlSSIsIiVPbSI6IiVtIiwiJU9NIjoiJU0iLCIlT1MiOiIlUyIsIiVPdSI6IiV1IiwiJU9VIjoiJVUiLCIlT1YiOiIlViIsIiVPdyI6IiV3IiwiJU9XIjoiJVciLCIlT3kiOiIleSJ9O2Zvcih2YXIgR3QgaW4gZnQpZHQ9ZHQucmVwbGFjZShuZXcgUmVnRXhwKEd0LCJnIiksZnRbR3RdKTt2YXIgTHQ9WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHJlPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXTtmdW5jdGlvbiB1ZShxdCxiZSxUcyl7Zm9yKHZhciBabj10eXBlb2YgcXQ9PSJudW1iZXIiP3F0LnRvU3RyaW5nKCk6cXR8fCIiO1puLmxlbmd0aDxiZTspWm49VHNbMF0rWm47cmV0dXJuIFpufWZ1bmN0aW9uIGZlKHF0LGJlKXtyZXR1cm4gdWUocXQsYmUsIjAiKX1mdW5jdGlvbiBFZShxdCxiZSl7ZnVuY3Rpb24gVHMoS28pe3JldHVybiBLbzwwPy0xOktvPjA/MTowfXZhciBabjtyZXR1cm4oWm49VHMocXQuZ2V0RnVsbFllYXIoKS1iZS5nZXRGdWxsWWVhcigpKSk9PT0wJiYoWm49VHMocXQuZ2V0TW9udGgoKS1iZS5nZXRNb250aCgpKSk9PT0wJiYoWm49VHMocXQuZ2V0RGF0ZSgpLWJlLmdldERhdGUoKSkpLFpufWZ1bmN0aW9uIFZlKHF0KXtzd2l0Y2gocXQuZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUocXQuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIHF0O2Nhc2UgMjpyZXR1cm4gbmV3IERhdGUocXQuZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUocXQuZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUocXQuZ2V0RnVsbFllYXIoKSwwLDEpO2Nhc2UgNTpyZXR1cm4gbmV3IERhdGUocXQuZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKHF0LmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIGRpKHF0KXt2YXIgYmU9b1gobmV3IERhdGUocXQudG1feWVhcisxOTAwLDAsMSkscXQudG1feWRheSksVHM9bmV3IERhdGUoYmUuZ2V0RnVsbFllYXIoKSwwLDQpLFpuPW5ldyBEYXRlKGJlLmdldEZ1bGxZZWFyKCkrMSwwLDQpLEtvPVZlKFRzKSxtcz1WZShabik7cmV0dXJuIEVlKEtvLGJlKTw9MD9FZShtcyxiZSk8PTA/YmUuZ2V0RnVsbFllYXIoKSsxOmJlLmdldEZ1bGxZZWFyKCk6YmUuZ2V0RnVsbFllYXIoKS0xfXZhciBsbj17IiVhIjpxdD0+THRbcXQudG1fd2RheV0uc3Vic3RyaW5nKDAsMyksIiVBIjpxdD0+THRbcXQudG1fd2RheV0sIiViIjpxdD0+cmVbcXQudG1fbW9uXS5zdWJzdHJpbmcoMCwzKSwiJUIiOnF0PT5yZVtxdC50bV9tb25dLCIlQyI6cXQ9Pnt2YXIgYmU9cXQudG1feWVhcisxOTAwO3JldHVybiBmZShiZS8xMDB8MCwyKX0sIiVkIjpxdD0+ZmUocXQudG1fbWRheSwyKSwiJWUiOnF0PT51ZShxdC50bV9tZGF5LDIsIiAiKSwiJWciOnF0PT5kaShxdCkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksIiVHIjpxdD0+ZGkocXQpLCIlSCI6cXQ9PmZlKHF0LnRtX2hvdXIsMiksIiVJIjpxdD0+e3ZhciBiZT1xdC50bV9ob3VyO3JldHVybiBiZT09MD9iZT0xMjpiZT4xMiYmKGJlLT0xMiksZmUoYmUsMil9LCIlaiI6cXQ9PmZlKHF0LnRtX21kYXkrc1gob0EocXQudG1feWVhcisxOTAwKT9NRzpRRyxxdC50bV9tb24tMSksMyksIiVtIjpxdD0+ZmUocXQudG1fbW9uKzEsMiksIiVNIjpxdD0+ZmUocXQudG1fbWluLDIpLCIlbiI6KCk9PmAKYCwiJXAiOnF0PT5xdC50bV9ob3VyPj0wJiZxdC50bV9ob3VyPDEyPyJBTSI6IlBNIiwiJVMiOnF0PT5mZShxdC50bV9zZWMsMiksIiV0IjooKT0+IgkiLCIldSI6cXQ9PnF0LnRtX3dkYXl8fDcsIiVVIjpxdD0+e3ZhciBiZT1xdC50bV95ZGF5KzctcXQudG1fd2RheTtyZXR1cm4gZmUoTWF0aC5mbG9vcihiZS83KSwyKX0sIiVWIjpxdD0+e3ZhciBiZT1NYXRoLmZsb29yKChxdC50bV95ZGF5KzctKHF0LnRtX3dkYXkrNiklNykvNyk7aWYoKHF0LnRtX3dkYXkrMzcxLXF0LnRtX3lkYXktMiklNzw9MiYmYmUrKyxiZSl7aWYoYmU9PTUzKXt2YXIgWm49KHF0LnRtX3dkYXkrMzcxLXF0LnRtX3lkYXkpJTc7Wm4hPTQmJihabiE9M3x8IW9BKHF0LnRtX3llYXIpKSYmKGJlPTEpfX1lbHNle2JlPTUyO3ZhciBUcz0ocXQudG1fd2RheSs3LXF0LnRtX3lkYXktMSklNzsoVHM9PTR8fFRzPT01JiZvQShxdC50bV95ZWFyJTQwMC0xKSkmJmJlKyt9cmV0dXJuIGZlKGJlLDIpfSwiJXciOnF0PT5xdC50bV93ZGF5LCIlVyI6cXQ9Pnt2YXIgYmU9cXQudG1feWRheSs3LShxdC50bV93ZGF5KzYpJTc7cmV0dXJuIGZlKE1hdGguZmxvb3IoYmUvNyksMil9LCIleSI6cXQ9PihxdC50bV95ZWFyKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLCIlWSI6cXQ9PnF0LnRtX3llYXIrMTkwMCwiJXoiOnF0PT57dmFyIGJlPXF0LnRtX2dtdG9mZixUcz1iZT49MDtyZXR1cm4gYmU9TWF0aC5hYnMoYmUpLzYwLGJlPWJlLzYwKjEwMCtiZSU2MCwoVHM/IisiOiItIikrKCIwMDAwIitiZSkuc2xpY2UoLTQpfSwiJVoiOnF0PT5xdC50bV96b25lLCIlJSI6KCk9PiIlIn07ZHQ9ZHQucmVwbGFjZSgvJSUvZywiXDBcMCIpO2Zvcih2YXIgR3QgaW4gbG4pZHQuaW5jbHVkZXMoR3QpJiYoZHQ9ZHQucmVwbGFjZShuZXcgUmVnRXhwKEd0LCJnIiksbG5bR3RdKGh0KSkpO2R0PWR0LnJlcGxhY2UoL1wwXDAvZywiJSIpO3ZhciBSbj1HZShkdCwhMSk7cmV0dXJuIFJuLmxlbmd0aD5WPzA6KGtHKFJuLHUpLFJuLmxlbmd0aC0xKX0sYVg9KHUsVixXLFAsJCk9PnJYKHUsVixXLFApO2Z1bmN0aW9uIEFYKHUpe3ZhciBWPWlbIl8iK3VdO3JldHVybiBjKFYsIkNhbm5vdCBjYWxsIHVua25vd24gZnVuY3Rpb24gIit1KyIsIG1ha2Ugc3VyZSBpdCBpcyBleHBvcnRlZCIpLFZ9dmFyIGhYPXU9Pnt2YXIgVj1tYSh1KSsxLFc9UEcoVik7cmV0dXJuIFBBKHUsVyxWKSxXfSxMRz1mdW5jdGlvbih1LFYsVyxQLCQpe3ZhciBodD17c3RyaW5nOlZlPT57dmFyIGRpPTA7cmV0dXJuIFZlIT1udWxsJiZWZSE9PTAmJihkaT1oWChWZSkpLGRpfSxhcnJheTpWZT0+e3ZhciBkaT1QRyhWZS5sZW5ndGgpO3JldHVybiBrRyhWZSxkaSksZGl9fTtmdW5jdGlvbiBkdChWZSl7cmV0dXJuIFY9PT0ic3RyaW5nIj9FYShWZSk6Vj09PSJib29sZWFuIj8hIVZlOlZlfXZhciBmdD1BWCh1KSxHdD1bXSxMdD0wO2lmKGMoViE9PSJhcnJheSIsJ1JldHVybiB0eXBlIHNob3VsZCBub3QgYmUgImFycmF5Ii4nKSxQKWZvcih2YXIgcmU9MDtyZTxQLmxlbmd0aDtyZSsrKXt2YXIgdWU9aHRbV1tyZV1dO3VlPyhMdD09PTAmJihMdD1SWCgpKSxHdFtyZV09dWUoUFtyZV0pKTpHdFtyZV09UFtyZV19dmFyIGZlPWZ0LmFwcGx5KG51bGwsR3QpO2Z1bmN0aW9uIEVlKFZlKXtyZXR1cm4gTHQhPT0wJiZaWChMdCksZHQoVmUpfXJldHVybiBmZT1FZShmZSksZmV9O2Z1bmN0aW9uIGNYKHUsVixXLFApe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBMRyh1LFYsVyxhcmd1bWVudHMsUCl9fWpvKCksU289aS5CaW5kaW5nRXJyb3I9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihWKXtzdXBlcihWKSx0aGlzLm5hbWU9IkJpbmRpbmdFcnJvciJ9fSxhYT1pLkludGVybmFsRXJyb3I9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihWKXtzdXBlcihWKSx0aGlzLm5hbWU9IkludGVybmFsRXJyb3IifX0seWgoKSxWZCgpLHlBKCksamg9aS5VbmJvdW5kVHlwZUVycm9yPXNsKEVycm9yLCJVbmJvdW5kVHlwZUVycm9yIiksd2QoKSxQZCgpO3ZhciB5Rz1mdW5jdGlvbih1LFYsVyxQKXt1fHwodT10aGlzKSx0aGlzLnBhcmVudD11LHRoaXMubW91bnQ9dS5tb3VudCx0aGlzLm1vdW50ZWQ9bnVsbCx0aGlzLmlkPUsubmV4dElub2RlKyssdGhpcy5uYW1lPVYsdGhpcy5tb2RlPVcsdGhpcy5ub2RlX29wcz17fSx0aGlzLnN0cmVhbV9vcHM9e30sdGhpcy5yZGV2PVB9LHZSPTM2NSx6Uj0xNDY7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeUcucHJvdG90eXBlLHtyZWFkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5tb2RlJnZSKT09PXZSfSxzZXQ6ZnVuY3Rpb24odSl7dT90aGlzLm1vZGV8PXZSOnRoaXMubW9kZSY9fnZSfX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybih0aGlzLm1vZGUmelIpPT09elJ9LHNldDpmdW5jdGlvbih1KXt1P3RoaXMubW9kZXw9elI6dGhpcy5tb2RlJj1+elJ9fSxpc0ZvbGRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEsuaXNEaXIodGhpcy5tb2RlKX19LGlzRGV2aWNlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSy5pc0NocmRldih0aGlzLm1vZGUpfX19KSxLLkZTTm9kZT15RyxLLmNyZWF0ZVByZWxvYWRlZEZpbGU9bWwsSy5zdGF0aWNJbml0KCksRW09e0VQRVJNOjYzLEVOT0VOVDo0NCxFU1JDSDo3MSxFSU5UUjoyNyxFSU86MjksRU5YSU86NjAsRTJCSUc6MSxFTk9FWEVDOjQ1LEVCQURGOjgsRUNISUxEOjEyLEVBR0FJTjo2LEVXT1VMREJMT0NLOjYsRU5PTUVNOjQ4LEVBQ0NFUzoyLEVGQVVMVDoyMSxFTk9UQkxLOjEwNSxFQlVTWToxMCxFRVhJU1Q6MjAsRVhERVY6NzUsRU5PREVWOjQzLEVOT1RESVI6NTQsRUlTRElSOjMxLEVJTlZBTDoyOCxFTkZJTEU6NDEsRU1GSUxFOjMzLEVOT1RUWTo1OSxFVFhUQlNZOjc0LEVGQklHOjIyLEVOT1NQQzo1MSxFU1BJUEU6NzAsRVJPRlM6NjksRU1MSU5LOjM0LEVQSVBFOjY0LEVET006MTgsRVJBTkdFOjY4LEVOT01TRzo0OSxFSURSTToyNCxFQ0hSTkc6MTA2LEVMMk5TWU5DOjE1NixFTDNITFQ6MTA3LEVMM1JTVDoxMDgsRUxOUk5HOjEwOSxFVU5BVENIOjExMCxFTk9DU0k6MTExLEVMMkhMVDoxMTIsRURFQURMSzoxNixFTk9MQ0s6NDYsRUJBREU6MTEzLEVCQURSOjExNCxFWEZVTEw6MTE1LEVOT0FOTzoxMDQsRUJBRFJRQzoxMDMsRUJBRFNMVDoxMDIsRURFQURMT0NLOjE2LEVCRk9OVDoxMDEsRU5PU1RSOjEwMCxFTk9EQVRBOjExNixFVElNRToxMTcsRU5PU1I6MTE4LEVOT05FVDoxMTksRU5PUEtHOjEyMCxFUkVNT1RFOjEyMSxFTk9MSU5LOjQ3LEVBRFY6MTIyLEVTUk1OVDoxMjMsRUNPTU06MTI0LEVQUk9UTzo2NSxFTVVMVElIT1A6MzYsRURPVERPVDoxMjUsRUJBRE1TRzo5LEVOT1RVTklROjEyNixFQkFERkQ6MTI3LEVSRU1DSEc6MTI4LEVMSUJBQ0M6MTI5LEVMSUJCQUQ6MTMwLEVMSUJTQ046MTMxLEVMSUJNQVg6MTMyLEVMSUJFWEVDOjEzMyxFTk9TWVM6NTIsRU5PVEVNUFRZOjU1LEVOQU1FVE9PTE9ORzozNyxFTE9PUDozMixFT1BOT1RTVVBQOjEzOCxFUEZOT1NVUFBPUlQ6MTM5LEVDT05OUkVTRVQ6MTUsRU5PQlVGUzo0MixFQUZOT1NVUFBPUlQ6NSxFUFJPVE9UWVBFOjY3LEVOT1RTT0NLOjU3LEVOT1BST1RPT1BUOjUwLEVTSFVURE9XTjoxNDAsRUNPTk5SRUZVU0VEOjE0LEVBRERSSU5VU0U6MyxFQ09OTkFCT1JURUQ6MTMsRU5FVFVOUkVBQ0g6NDAsRU5FVERPV046MzgsRVRJTUVET1VUOjczLEVIT1NURE9XTjoxNDIsRUhPU1RVTlJFQUNIOjIzLEVJTlBST0dSRVNTOjI2LEVBTFJFQURZOjcsRURFU1RBRERSUkVROjE3LEVNU0dTSVpFOjM1LEVQUk9UT05PU1VQUE9SVDo2NixFU09DS1ROT1NVUFBPUlQ6MTM3LEVBRERSTk9UQVZBSUw6NCxFTkVUUkVTRVQ6MzksRUlTQ09OTjozMCxFTk9UQ09OTjo1MyxFVE9PTUFOWVJFRlM6MTQxLEVVU0VSUzoxMzYsRURRVU9UOjE5LEVTVEFMRTo3MixFTk9UU1VQOjEzOCxFTk9NRURJVU06MTQ4LEVJTFNFUToyNSxFT1ZFUkZMT1c6NjEsRUNBTkNFTEVEOjExLEVOT1RSRUNPVkVSQUJMRTo1NixFT1dORVJERUFEOjYyLEVTVFJQSVBFOjEzNX07ZnVuY3Rpb24gbFgoKXtocygiZmV0Y2hTZXR0aW5ncyIpfXZhciB3Rz17X19jeGFfdGhyb3c6YW8sX2VtYmluZF9yZWdpc3Rlcl9iaWdpbnQ6cWksX2VtYmluZF9yZWdpc3Rlcl9ib29sOmhyLF9lbWJpbmRfcmVnaXN0ZXJfY2xhc3M6SGgsX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19jb25zdHJ1Y3Rvcjp5ZCxfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uOktoLF9lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfcHJvcGVydHk6WGgsX2VtYmluZF9yZWdpc3Rlcl9lbXZhbDp4QSxfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0OkpkLF9lbWJpbmRfcmVnaXN0ZXJfZnVuY3Rpb246amQsX2VtYmluZF9yZWdpc3Rlcl9pbnRlZ2VyOnZkLF9lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXc6emQsX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nOnNBLF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmc6JGQsX2VtYmluZF9yZWdpc3Rlcl92b2lkOnRtLF9lbXNjcmlwdGVuX2dldF9ub3dfaXNfbW9ub3RvbmljOmltLF9lbXZhbF9hczpzbSxfZW12YWxfZGVjcmVmOmhvLF9lbXZhbF9nZXRfcHJvcGVydHk6b20sX2VtdmFsX25ld19jc3RyaW5nOmFtLF9lbXZhbF9ydW5fZGVzdHJ1Y3RvcnM6QW0sX2dtdGltZV9qczpobSxfbWt0aW1lX2pzOmRtLF90enNldF9qczptbSxhYm9ydDpmbSxlbXNjcmlwdGVuX2FzbV9jb25zdF9pbnQ6ZXQsZW1zY3JpcHRlbl9kYXRlX25vdzpwdCxlbXNjcmlwdGVuX2dldF9ub3c6JHQsZW1zY3JpcHRlbl9tZW1jcHlfYmlnOnZlLGVtc2NyaXB0ZW5fcmVzaXplX2hlYXA6dGMsZW1zY3JpcHRlbl9ydW5fc2NyaXB0X3N0cmluZzpKLGVudmlyb25fZ2V0Oks4LGVudmlyb25fc2l6ZXNfZ2V0Olg4LGZkX2Nsb3NlOnE4LGZkX3JlYWQ6dFgsZmRfc2VlazplWCxmZF93cml0ZTpuWCxzdHJmdGltZV9sOmFYfSxMSXQ9QW4oKSx5SXQ9cWUoIl9fd2FzbV9jYWxsX2N0b3JzIiksS1I9aS5fbWFsbG9jPXFlKCJtYWxsb2MiKSxIQT1pLl9mcmVlPXFlKCJmcmVlIiksd0l0PWkuX2luZmxhdGVFbGxpcHNvaWQ9cWUoImluZmxhdGVFbGxpcHNvaWQiKSx4SXQ9aS5fZ2V0Q292ZXJhZ2VQb3NpdGlvbnM9cWUoImdldENvdmVyYWdlUG9zaXRpb25zIiksZFg9aS5fZmZsdXNoPXFlKCJmZmx1c2giKSxtWD1xZSgiX19nZXRUeXBlTmFtZSIpLFBJdD1pLl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3M9cWUoIl9lbWJpbmRfaW5pdGlhbGl6ZV9iaW5kaW5ncyIpLEpJdD1xZSgiX19lcnJub19sb2NhdGlvbiIpLGZYPXFlKCJzZXRUZW1wUmV0MCIpLHhHPSgpPT4oeEc9TS5lbXNjcmlwdGVuX3N0YWNrX2luaXQpKCksRVg9KCk9PihFWD1NLmVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2ZyZWUpKCksX1g9KCk9PihfWD1NLmVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2Jhc2UpKCksJGc9KCk9PigkZz1NLmVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2VuZCkoKSxSWD1xZSgic3RhY2tTYXZlIiksWlg9cWUoInN0YWNrUmVzdG9yZSIpLFBHPXFlKCJzdGFja0FsbG9jIiksSVg9KCk9PihJWD1NLmVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2N1cnJlbnQpKCksakl0PXFlKCJfX2N4YV9pbmNyZW1lbnRfZXhjZXB0aW9uX3JlZmNvdW50IikscFg9cWUoIl9fY3hhX2lzX3BvaW50ZXJfdHlwZSIpLEhJdD1pLmR5bkNhbGxfamlqaT1xZSgiZHluQ2FsbF9qaWppIiksdkl0PWkuZHluQ2FsbF92aWlqaWk9cWUoImR5bkNhbGxfdmlpamlpIiksekl0PWkuZHluQ2FsbF9paWlpaWo9cWUoImR5bkNhbGxfaWlpaWlqIiksS0l0PWkuZHluQ2FsbF9paWlpaWpqPXFlKCJkeW5DYWxsX2lpaWlpamoiKSxYSXQ9aS5keW5DYWxsX2lpaWlpaWpqPXFlKCJkeW5DYWxsX2lpaWlpaWpqIik7ZnVuY3Rpb24gdVgodSl7dHJ5e2Zvcih2YXIgVj1hdG9iKHUpLFc9bmV3IFVpbnQ4QXJyYXkoVi5sZW5ndGgpLFA9MDtQPFYubGVuZ3RoOysrUClXW1BdPVYuY2hhckNvZGVBdChQKTtyZXR1cm4gV31jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkNvbnZlcnRpbmcgYmFzZTY0IHN0cmluZyB0byBieXRlcyBmYWlsZWQuIil9fWZ1bmN0aW9uIENYKHUpe2lmKFJpKHUpKXJldHVybiB1WCh1LnNsaWNlKE1pLmxlbmd0aCkpfWkuY2NhbGw9TEcsaS5jd3JhcD1jWDt2YXIgZ1g9WyJ3cml0ZUk1M1RvSTY0Iiwid3JpdGVJNTNUb0k2NENsYW1wZWQiLCJ3cml0ZUk1M1RvSTY0U2lnbmFsaW5nIiwid3JpdGVJNTNUb1U2NENsYW1wZWQiLCJ3cml0ZUk1M1RvVTY0U2lnbmFsaW5nIiwicmVhZEk1M0Zyb21JNjQiLCJyZWFkSTUzRnJvbVU2NCIsImNvbnZlcnRJMzJQYWlyVG9JNTMiLCJjb252ZXJ0VTMyUGFpclRvSTUzIiwiZXhpdEpTIiwic2V0RXJyTm8iLCJpbmV0UHRvbjQiLCJpbmV0TnRvcDQiLCJpbmV0UHRvbjYiLCJpbmV0TnRvcDYiLCJyZWFkU29ja2FkZHIiLCJ3cml0ZVNvY2thZGRyIiwiZ2V0SG9zdEJ5TmFtZSIsImdldENhbGxzdGFjayIsImVtc2NyaXB0ZW5Mb2ciLCJjb252ZXJ0UEN0b1NvdXJjZUxvY2F0aW9uIiwicnVuTWFpblRocmVhZEVtQXNtIiwianN0b2lfcSIsImpzdG9pX3MiLCJsaXN0ZW5PbmNlIiwiYXV0b1Jlc3VtZUF1ZGlvQ29udGV4dCIsImhhbmRsZUV4Y2VwdGlvbiIsInJ1bnRpbWVLZWVwYWxpdmVQdXNoIiwicnVudGltZUtlZXBhbGl2ZVBvcCIsImNhbGxVc2VyQ2FsbGJhY2siLCJtYXliZUV4aXQiLCJzYWZlU2V0VGltZW91dCIsImFzbWpzTWFuZ2xlIiwiZ2V0TmF0aXZlVHlwZVNpemUiLCJTVEFDS19TSVpFIiwiU1RBQ0tfQUxJR04iLCJQT0lOVEVSX1NJWkUiLCJBU1NFUlRJT05TIiwidWxlYjEyOEVuY29kZSIsInNpZ1RvV2FzbVR5cGVzIiwiZ2VuZXJhdGVGdW5jVHlwZSIsImNvbnZlcnRKc0Z1bmN0aW9uVG9XYXNtIiwiZ2V0RW1wdHlUYWJsZVNsb3QiLCJ1cGRhdGVUYWJsZU1hcCIsImdldEZ1bmN0aW9uQWRkcmVzcyIsImFkZEZ1bmN0aW9uIiwicmVtb3ZlRnVuY3Rpb24iLCJyZWFsbHlOZWdhdGl2ZSIsInVuU2lnbiIsInN0ckxlbiIsInJlU2lnbiIsImZvcm1hdFN0cmluZyIsImludEFycmF5VG9TdHJpbmciLCJBc2NpaVRvU3RyaW5nIiwicmVnaXN0ZXJLZXlFdmVudENhbGxiYWNrIiwibWF5YmVDU3RyaW5nVG9Kc1N0cmluZyIsImZpbmRFdmVudFRhcmdldCIsImZpbmRDYW52YXNFdmVudFRhcmdldCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZpbGxNb3VzZUV2ZW50RGF0YSIsInJlZ2lzdGVyTW91c2VFdmVudENhbGxiYWNrIiwicmVnaXN0ZXJXaGVlbEV2ZW50Q2FsbGJhY2siLCJyZWdpc3RlclVpRXZlbnRDYWxsYmFjayIsInJlZ2lzdGVyRm9jdXNFdmVudENhbGxiYWNrIiwiZmlsbERldmljZU9yaWVudGF0aW9uRXZlbnREYXRhIiwicmVnaXN0ZXJEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q2FsbGJhY2siLCJmaWxsRGV2aWNlTW90aW9uRXZlbnREYXRhIiwicmVnaXN0ZXJEZXZpY2VNb3Rpb25FdmVudENhbGxiYWNrIiwic2NyZWVuT3JpZW50YXRpb24iLCJmaWxsT3JpZW50YXRpb25DaGFuZ2VFdmVudERhdGEiLCJyZWdpc3Rlck9yaWVudGF0aW9uQ2hhbmdlRXZlbnRDYWxsYmFjayIsImZpbGxGdWxsc2NyZWVuQ2hhbmdlRXZlbnREYXRhIiwicmVnaXN0ZXJGdWxsc2NyZWVuQ2hhbmdlRXZlbnRDYWxsYmFjayIsIkpTRXZlbnRzX3JlcXVlc3RGdWxsc2NyZWVuIiwiSlNFdmVudHNfcmVzaXplQ2FudmFzRm9yRnVsbHNjcmVlbiIsInJlZ2lzdGVyUmVzdG9yZU9sZFN0eWxlIiwiaGlkZUV2ZXJ5dGhpbmdFeGNlcHRHaXZlbkVsZW1lbnQiLCJyZXN0b3JlSGlkZGVuRWxlbWVudHMiLCJzZXRMZXR0ZXJib3giLCJzb2Z0RnVsbHNjcmVlblJlc2l6ZVdlYkdMUmVuZGVyVGFyZ2V0IiwiZG9SZXF1ZXN0RnVsbHNjcmVlbiIsImZpbGxQb2ludGVybG9ja0NoYW5nZUV2ZW50RGF0YSIsInJlZ2lzdGVyUG9pbnRlcmxvY2tDaGFuZ2VFdmVudENhbGxiYWNrIiwicmVnaXN0ZXJQb2ludGVybG9ja0Vycm9yRXZlbnRDYWxsYmFjayIsInJlcXVlc3RQb2ludGVyTG9jayIsImZpbGxWaXNpYmlsaXR5Q2hhbmdlRXZlbnREYXRhIiwicmVnaXN0ZXJWaXNpYmlsaXR5Q2hhbmdlRXZlbnRDYWxsYmFjayIsInJlZ2lzdGVyVG91Y2hFdmVudENhbGxiYWNrIiwiZmlsbEdhbWVwYWRFdmVudERhdGEiLCJyZWdpc3RlckdhbWVwYWRFdmVudENhbGxiYWNrIiwicmVnaXN0ZXJCZWZvcmVVbmxvYWRFdmVudENhbGxiYWNrIiwiZmlsbEJhdHRlcnlFdmVudERhdGEiLCJiYXR0ZXJ5IiwicmVnaXN0ZXJCYXR0ZXJ5RXZlbnRDYWxsYmFjayIsInNldENhbnZhc0VsZW1lbnRTaXplIiwiZ2V0Q2FudmFzRWxlbWVudFNpemUiLCJqc1N0YWNrVHJhY2UiLCJzdGFja1RyYWNlIiwiY2hlY2tXYXNpQ2xvY2siLCJ3YXNpUmlnaHRzVG9NdXNsT0ZsYWdzIiwid2FzaU9GbGFnc1RvTXVzbE9GbGFncyIsImNyZWF0ZUR5bmNhbGxXcmFwcGVyIiwic2V0SW1tZWRpYXRlV3JhcHBlZCIsImNsZWFySW1tZWRpYXRlV3JhcHBlZCIsInBvbHlmaWxsU2V0SW1tZWRpYXRlIiwiZ2V0UHJvbWlzZSIsIm1ha2VQcm9taXNlIiwiaWRzVG9Qcm9taXNlcyIsIm1ha2VQcm9taXNlQ2FsbGJhY2siLCJmaW5kTWF0Y2hpbmdDYXRjaCIsInNldE1haW5Mb29wIiwiZ2V0U29ja2V0RnJvbUZEIiwiZ2V0U29ja2V0QWRkcmVzcyIsIl9zZXROZXR3b3JrQ2FsbGJhY2siLCJoZWFwT2JqZWN0Rm9yV2ViR0xUeXBlIiwiaGVhcEFjY2Vzc1NoaWZ0Rm9yV2ViR0xIZWFwIiwid2ViZ2xfZW5hYmxlX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiLCJ3ZWJnbF9lbmFibGVfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCJ3ZWJnbF9lbmFibGVfV0VCR0xfZHJhd19idWZmZXJzIiwid2ViZ2xfZW5hYmxlX1dFQkdMX211bHRpX2RyYXciLCJlbXNjcmlwdGVuV2ViR0xHZXQiLCJjb21wdXRlVW5wYWNrQWxpZ25lZEltYWdlU2l6ZSIsImNvbG9yQ2hhbm5lbHNJbkdsVGV4dHVyZUZvcm1hdCIsImVtc2NyaXB0ZW5XZWJHTEdldFRleFBpeGVsRGF0YSIsIl9fZ2xHZW5PYmplY3QiLCJlbXNjcmlwdGVuV2ViR0xHZXRVbmlmb3JtIiwid2ViZ2xHZXRVbmlmb3JtTG9jYXRpb24iLCJ3ZWJnbFByZXBhcmVVbmlmb3JtTG9jYXRpb25zQmVmb3JlRmlyc3RVc2UiLCJ3ZWJnbEdldExlZnRCcmFjZVBvcyIsImVtc2NyaXB0ZW5XZWJHTEdldFZlcnRleEF0dHJpYiIsIl9fZ2xHZXRBY3RpdmVBdHRyaWJPclVuaWZvcm0iLCJ3cml0ZUdMQXJyYXkiLCJyZWdpc3RlcldlYkdsRXZlbnRDYWxsYmFjayIsInJ1bkFuZEFib3J0SWZFcnJvciIsIlNETF91bmljb2RlIiwiU0RMX3R0ZkNvbnRleHQiLCJTRExfYXVkaW8iLCJHTEZXX1dpbmRvdyIsIkFMTE9DX05PUk1BTCIsIkFMTE9DX1NUQUNLIiwiYWxsb2NhdGUiLCJ3cml0ZVN0cmluZ1RvTWVtb3J5Iiwid3JpdGVBc2NpaVRvTWVtb3J5IiwicmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZSIsInVucmVnaXN0ZXJJbmhlcml0ZWRJbnN0YW5jZSIsImVudW1SZWFkVmFsdWVGcm9tUG9pbnRlciIsImNyYWZ0RW12YWxBbGxvY2F0b3IiLCJlbXZhbF9nZXRfZ2xvYmFsIiwiZW12YWxfbG9va3VwVHlwZXMiLCJlbXZhbF9hbGxvY2F0ZURlc3RydWN0b3JzIiwiZW12YWxfYWRkTWV0aG9kQ2FsbGVyIl07Z1guZm9yRWFjaChraSk7dmFyIFRYPVsicnVuIiwiYWRkT25QcmVSdW4iLCJhZGRPbkluaXQiLCJhZGRPblByZU1haW4iLCJhZGRPbkV4aXQiLCJhZGRPblBvc3RSdW4iLCJhZGRSdW5EZXBlbmRlbmN5IiwicmVtb3ZlUnVuRGVwZW5kZW5jeSIsIkZTX2NyZWF0ZUZvbGRlciIsIkZTX2NyZWF0ZVBhdGgiLCJGU19jcmVhdGVEYXRhRmlsZSIsIkZTX2NyZWF0ZUxhenlGaWxlIiwiRlNfY3JlYXRlTGluayIsIkZTX2NyZWF0ZURldmljZSIsIkZTX3VubGluayIsIm91dCIsImVyciIsImNhbGxNYWluIiwiYWJvcnQiLCJrZWVwUnVudGltZUFsaXZlIiwid2FzbU1lbW9yeSIsIndhc21UYWJsZSIsIndhc21FeHBvcnRzIiwic3RhY2tBbGxvYyIsInN0YWNrU2F2ZSIsInN0YWNrUmVzdG9yZSIsImdldFRlbXBSZXQwIiwic2V0VGVtcFJldDAiLCJ3cml0ZVN0YWNrQ29va2llIiwiY2hlY2tTdGFja0Nvb2tpZSIsImludEFycmF5RnJvbUJhc2U2NCIsInRyeVBhcnNlQXNEYXRhVVJJIiwiY29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQiLCJwdHJUb1N0cmluZyIsInplcm9NZW1vcnkiLCJnZXRIZWFwTWF4IiwiZ3Jvd01lbW9yeSIsIkVOViIsIk1PTlRIX0RBWVNfUkVHVUxBUiIsIk1PTlRIX0RBWVNfTEVBUCIsIk1PTlRIX0RBWVNfUkVHVUxBUl9DVU1VTEFUSVZFIiwiTU9OVEhfREFZU19MRUFQX0NVTVVMQVRJVkUiLCJpc0xlYXBZZWFyIiwieWRheUZyb21EYXRlIiwiYXJyYXlTdW0iLCJhZGREYXlzIiwiRVJSTk9fQ09ERVMiLCJFUlJOT19NRVNTQUdFUyIsIkROUyIsIlByb3RvY29scyIsIlNvY2tldHMiLCJpbml0UmFuZG9tRmlsbCIsInJhbmRvbUZpbGwiLCJ0aW1lcnMiLCJ3YXJuT25jZSIsIlVOV0lORF9DQUNIRSIsInJlYWRFbUFzbUFyZ3NBcnJheSIsInJlYWRFbUFzbUFyZ3MiLCJydW5FbUFzbUZ1bmN0aW9uIiwiZ2V0RXhlY3V0YWJsZU5hbWUiLCJkeW5DYWxsTGVnYWN5IiwiZ2V0RHluQ2FsbGVyIiwiZHluQ2FsbCIsImFzeW5jTG9hZCIsImFsaWduTWVtb3J5IiwibW1hcEFsbG9jIiwiaGFuZGxlQWxsb2NhdG9ySW5pdCIsIkhhbmRsZUFsbG9jYXRvciIsImdldENGdW5jIiwiZnJlZVRhYmxlSW5kZXhlcyIsImZ1bmN0aW9uc0luVGFibGVNYXAiLCJzZXRWYWx1ZSIsImdldFZhbHVlIiwiUEFUSCIsIlBBVEhfRlMiLCJVVEY4RGVjb2RlciIsIlVURjhBcnJheVRvU3RyaW5nIiwiVVRGOFRvU3RyaW5nIiwic3RyaW5nVG9VVEY4QXJyYXkiLCJzdHJpbmdUb1VURjgiLCJsZW5ndGhCeXRlc1VURjgiLCJpbnRBcnJheUZyb21TdHJpbmciLCJzdHJpbmdUb0FzY2lpIiwiVVRGMTZEZWNvZGVyIiwiVVRGMTZUb1N0cmluZyIsInN0cmluZ1RvVVRGMTYiLCJsZW5ndGhCeXRlc1VURjE2IiwiVVRGMzJUb1N0cmluZyIsInN0cmluZ1RvVVRGMzIiLCJsZW5ndGhCeXRlc1VURjMyIiwic3RyaW5nVG9OZXdVVEY4Iiwic3RyaW5nVG9VVEY4T25TdGFjayIsIndyaXRlQXJyYXlUb01lbW9yeSIsIkpTRXZlbnRzIiwic3BlY2lhbEhUTUxUYXJnZXRzIiwiY3VycmVudEZ1bGxzY3JlZW5TdHJhdGVneSIsInJlc3RvcmVPbGRXaW5kb3dlZFN0eWxlIiwiZGVtYW5nbGUiLCJkZW1hbmdsZUFsbCIsIkV4aXRTdGF0dXMiLCJnZXRFbnZTdHJpbmdzIiwiZG9SZWFkdiIsImRvV3JpdGV2IiwicHJvbWlzZU1hcCIsInVuY2F1Z2h0RXhjZXB0aW9uQ291bnQiLCJleGNlcHRpb25MYXN0IiwiZXhjZXB0aW9uQ2F1Z2h0IiwiRXhjZXB0aW9uSW5mbyIsIkJyb3dzZXIiLCJ3Z2V0IiwiU1lTQ0FMTFMiLCJwcmVsb2FkUGx1Z2lucyIsIkZTX2NyZWF0ZVByZWxvYWRlZEZpbGUiLCJGU19tb2RlU3RyaW5nVG9GbGFncyIsIkZTX2dldE1vZGUiLCJGU19zdGRpbl9nZXRDaGFyX2J1ZmZlciIsIkZTX3N0ZGluX2dldENoYXIiLCJGUyIsIk1FTUZTIiwiVFRZIiwiUElQRUZTIiwiU09DS0ZTIiwidGVtcEZpeGVkTGVuZ3RoQXJyYXkiLCJtaW5pVGVtcFdlYkdMRmxvYXRCdWZmZXJzIiwibWluaVRlbXBXZWJHTEludEJ1ZmZlcnMiLCJHTCIsImVtc2NyaXB0ZW5fd2ViZ2xfcG93ZXJfcHJlZmVyZW5jZXMiLCJBTCIsIkdMVVQiLCJFR0wiLCJHTEVXIiwiSURCU3RvcmUiLCJTREwiLCJTRExfZ2Z4IiwiR0xGVyIsImFsbG9jYXRlVVRGOCIsImFsbG9jYXRlVVRGOE9uU3RhY2siLCJJbnRlcm5hbEVycm9yIiwiQmluZGluZ0Vycm9yIiwidGhyb3dJbnRlcm5hbEVycm9yIiwidGhyb3dCaW5kaW5nRXJyb3IiLCJyZWdpc3RlcmVkVHlwZXMiLCJhd2FpdGluZ0RlcGVuZGVuY2llcyIsInR5cGVEZXBlbmRlbmNpZXMiLCJ0dXBsZVJlZ2lzdHJhdGlvbnMiLCJzdHJ1Y3RSZWdpc3RyYXRpb25zIiwic2hhcmVkUmVnaXN0ZXJUeXBlIiwid2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQiLCJlbWJpbmRfY2hhckNvZGVzIiwiZW1iaW5kX2luaXRfY2hhckNvZGVzIiwicmVhZExhdGluMVN0cmluZyIsImdldFR5cGVOYW1lIiwiaGVhcDMyVmVjdG9yVG9BcnJheSIsInJlcXVpcmVSZWdpc3RlcmVkVHlwZSIsIlVuYm91bmRUeXBlRXJyb3IiLCJQdXJlVmlydHVhbEVycm9yIiwiaW5pdF9lbWJpbmQiLCJ0aHJvd1VuYm91bmRUeXBlRXJyb3IiLCJlbnN1cmVPdmVybG9hZFRhYmxlIiwiZXhwb3NlUHVibGljU3ltYm9sIiwicmVwbGFjZVB1YmxpY1N5bWJvbCIsImV4dGVuZEVycm9yIiwiY3JlYXRlTmFtZWRGdW5jdGlvbiIsImVtYmluZFJlcHIiLCJyZWdpc3RlcmVkSW5zdGFuY2VzIiwiZ2V0QmFzZXN0UG9pbnRlciIsImdldEluaGVyaXRlZEluc3RhbmNlIiwiZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCIsImdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXMiLCJyZWdpc3RlcmVkUG9pbnRlcnMiLCJyZWdpc3RlclR5cGUiLCJnZXRTaGlmdEZyb21TaXplIiwiaW50ZWdlclJlYWRWYWx1ZUZyb21Qb2ludGVyIiwiZmxvYXRSZWFkVmFsdWVGcm9tUG9pbnRlciIsInNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyIiwicnVuRGVzdHJ1Y3RvcnMiLCJuZXdGdW5jIiwiY3JhZnRJbnZva2VyRnVuY3Rpb24iLCJlbWJpbmRfX3JlcXVpcmVGdW5jdGlvbiIsImdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZSIsImNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlIiwibm9uQ29uc3ROb1NtYXJ0UHRyUmF3UG9pbnRlclRvV2lyZVR5cGUiLCJpbml0X1JlZ2lzdGVyZWRQb2ludGVyIiwiUmVnaXN0ZXJlZFBvaW50ZXIiLCJSZWdpc3RlcmVkUG9pbnRlcl9nZXRQb2ludGVlIiwiUmVnaXN0ZXJlZFBvaW50ZXJfZGVzdHJ1Y3RvciIsIlJlZ2lzdGVyZWRQb2ludGVyX2RlbGV0ZU9iamVjdCIsIlJlZ2lzdGVyZWRQb2ludGVyX2Zyb21XaXJlVHlwZSIsInJ1bkRlc3RydWN0b3IiLCJyZWxlYXNlQ2xhc3NIYW5kbGUiLCJmaW5hbGl6YXRpb25SZWdpc3RyeSIsImRldGFjaEZpbmFsaXplcl9kZXBzIiwiZGV0YWNoRmluYWxpemVyIiwiYXR0YWNoRmluYWxpemVyIiwibWFrZUNsYXNzSGFuZGxlIiwiaW5pdF9DbGFzc0hhbmRsZSIsIkNsYXNzSGFuZGxlIiwiQ2xhc3NIYW5kbGVfaXNBbGlhc09mIiwidGhyb3dJbnN0YW5jZUFscmVhZHlEZWxldGVkIiwiQ2xhc3NIYW5kbGVfY2xvbmUiLCJDbGFzc0hhbmRsZV9kZWxldGUiLCJkZWxldGlvblF1ZXVlIiwiQ2xhc3NIYW5kbGVfaXNEZWxldGVkIiwiQ2xhc3NIYW5kbGVfZGVsZXRlTGF0ZXIiLCJmbHVzaFBlbmRpbmdEZWxldGVzIiwiZGVsYXlGdW5jdGlvbiIsInNldERlbGF5RnVuY3Rpb24iLCJSZWdpc3RlcmVkQ2xhc3MiLCJzaGFsbG93Q29weUludGVybmFsUG9pbnRlciIsImRvd25jYXN0UG9pbnRlciIsInVwY2FzdFBvaW50ZXIiLCJ2YWxpZGF0ZVRoaXMiLCJjaGFyXzAiLCJjaGFyXzkiLCJtYWtlTGVnYWxGdW5jdGlvbk5hbWUiLCJlbXZhbF9oYW5kbGVzIiwiZW12YWxfc3ltYm9scyIsImluaXRfZW12YWwiLCJjb3VudF9lbXZhbF9oYW5kbGVzIiwiZ2V0U3RyaW5nT3JTeW1ib2wiLCJFbXZhbCIsImVtdmFsX25ld2VycyIsImVtdmFsX21ldGhvZENhbGxlcnMiLCJlbXZhbF9yZWdpc3RlcmVkTWV0aG9kcyJdO1RYLmZvckVhY2goc24pO3ZhciBYUjtNZT1mdW5jdGlvbiB1KCl7WFJ8fEpHKCksWFJ8fChNZT11KX07ZnVuY3Rpb24gTlgoKXt4RygpLEl0KCl9ZnVuY3Rpb24gSkcoKXtpZihTZT4wfHwoTlgoKSxKdCgpLFNlPjApKXJldHVybjtmdW5jdGlvbiB1KCl7WFJ8fChYUj0hMCxpLmNhbGxlZFJ1bj0hMCwhayYmKFd0KCksbihpKSxpLm9uUnVudGltZUluaXRpYWxpemVkJiZpLm9uUnVudGltZUluaXRpYWxpemVkKCksYyghaS5fbWFpbiwnY29tcGlsZWQgd2l0aG91dCBhIG1haW4sIGJ1dCBvbmUgaXMgcHJlc2VudC4gaWYgeW91IGFkZGVkIGl0IGZyb20gSlMsIHVzZSBNb2R1bGVbIm9uUnVudGltZUluaXRpYWxpemVkIl0nKSxidCgpKSl9aS5zZXRTdGF0dXM/KGkuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpLnNldFN0YXR1cygiIil9LDEpLHUoKX0sMSkpOnUoKSxndCgpfWlmKGkucHJlSW5pdClmb3IodHlwZW9mIGkucHJlSW5pdD09ImZ1bmN0aW9uIiYmKGkucHJlSW5pdD1baS5wcmVJbml0XSk7aS5wcmVJbml0Lmxlbmd0aD4wOylpLnByZUluaXQucG9wKCkoKTtyZXR1cm4gSkcoKSxlLnJlYWR5fX0pKCksQkM9Vmh0fSk7dmFyIGR2LG12PVMoKCk9PntsdigpO2dsb2JhbFRoaXMuQnVmZmVyPWdsb2JhbFRoaXMuQnVmZmVyfHx7fTtkdj0oQkMuaGFzT3duUHJvcGVydHkoInRoZW4iKT9CQzpQcm9taXNlLnJlc29sdmUoQkMoKSkpLnRoZW4odD0+e2xldCBlPXtmaW5kX25lYXJieV9pbmRpY2VzOntydmFsOiJib29sZWFuIixwYXJhbXM6WyJudW1iZXIiLCJudW1iZXIiXX0sZ2V0Q292ZXJhZ2VQb3NpdGlvbnM6e3J2YWw6bnVsbCxwYXJhbXM6WyJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiLCJudW1iZXIiXX0saW5mbGF0ZUVsbGlwc29pZDp7cnZhbDpudWxsLHBhcmFtczpbIm51bWJlciJdfX0saT17d2FzbTp0fTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChuPT57aVtuXT1lW25dLnBhcmFtcz90LmN3cmFwKG4sZVtuXS5ydmFsLGVbbl0ucGFyYW1zKTp0LmN3cmFwKG4sZVtuXS5ydmFsKX0pLGl9KX0pO3ZhciBPaHQsS1YsZnYsTGZlLEV2PVMoKCk9PnttdigpO090KCk7T3IoKTsoe0ZpbmFsaXphdGlvblJlZ2lzdHJ5Ok9odH09Z2xvYmFsVGhpcyksS1Y9e19wcmV2aW91c0xvYWQ6ITEsX2luc3RhbmNlOnZvaWQgMCxfd2FzbU1vZHVsZTp2b2lkIDAsX3Bvc2l0aW9uUG9pbnRlcjotMSxfcHJlY2lzaW9uTW9kZTo3NSxhc3luYyBpbml0SW5zdGFuY2UoKXtsZXQgdD0iZGVmYXVsdCI7aWYoIXRoaXMuX3ByZXZpb3VzTG9hZCl0cnl7dGhpcy5fd2FzbU1vZHVsZT0oYXdhaXQgZHYpLndhc20sdGhpcy5fcHJldmlvdXNMb2FkPSEwfWNhdGNoKGUpe3Rocm93IG5ldyBZKGBGYWlsZWQgdG8gbG9hZCB0aGUgV0FTTSBtb2R1bGU6ICR7ZS5tZXNzYWdlfWApfWlmKCF0aGlzLl9pbnN0YW5jZSl7bGV0e1Bvc2l0aW9uUmVnaXN0cnk6ZX09dGhpcy5fd2FzbU1vZHVsZTt0aGlzLl9pbnN0YW5jZT1uZXcgZSh0KX1yZXR1cm57aW5zdGFuY2U6dGhpcy5faW5zdGFuY2Usd2FzbU1vZHVsZTp0aGlzLl93YXNtTW9kdWxlfX0sZ2V0IGluc3RhbmNlKCl7cmV0dXJuIHRoaXMuX2luc3RhbmNlfSxnZXQgd2FzbU1vZHVsZSgpe3JldHVybiB0aGlzLl93YXNtTW9kdWxlfSxnZXQgcG9zaXRpb25Qb2ludGVyKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uUG9pbnRlcn0sdXBkYXRlKHQpe2lmKCF0aGlzLl9pbnN0YW5jZSlyZXR1cm4gMDtsZXQgZT1NYXRoLnJvdW5kKHQvdGhpcy5fcHJlY2lzaW9uTW9kZSkqdGhpcy5fcHJlY2lzaW9uTW9kZTtyZXR1cm4gdGhpcy5fbGFzdFVwZGF0ZSE9PWUmJih0aGlzLl9sYXN0VXBkYXRlPWUsdGhpcy5fcG9zaXRpb25Qb2ludGVyPXRoaXMuX2luc3RhbmNlLnVwZGF0ZShlKSksdGhpcy5fcG9zaXRpb25Qb2ludGVyfHwwfSx1cGRhdGVKdWxpYW5EYXRlKHQpe2lmKCF0aGlzLl9pbnN0YW5jZSlyZXR1cm4gMDtpZighKHQgaW5zdGFuY2VvZiBaZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQganVsaWFuRGF0ZSB0byBiZSBhbiBpbnN0YW5jZSBvZiBKdWxpYW5EYXRlIik7bGV0IGU9WmUudG9EYXRlKHQpLmdldFRpbWUoKTtyZXR1cm4gdGhpcy51cGRhdGUoZSl9LGdldCBwcmVjaXNpb25Nb2RlKCl7cmV0dXJuIHRoaXMuX3ByZWNpc2lvbk1vZGV9LHNldCBwcmVjaXNpb25Nb2RlKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDw9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcmVjaXNpb24gbW9kZSBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLiIpO3RoaXMuX3ByZWNpc2lvbk1vZGU9dH19LGZ2PXt9LExmZT1uZXcgT2h0KHQ9PntsZXQgZT1mdlt0XTtlJiYoS1YuX3dhc21Nb2R1bGUud2FzbS5yZW1vdmVQb3NpdGlvbihlKSxkZWxldGUgZnZbdF0sY29uc29sZS5sb2coYEVudGl0eSB3aXRoIElEICR7dH0gaGFzIGJlZW4gZ2FyYmFnZSBjb2xsZWN0ZWQsIHBvaW50ZXIgJHtlfWApKX0pfSk7ZnVuY3Rpb24gX3YodCl7bGV0IGU9W10saT10LnByb3BlcnRpZXMuQ0FULmdldFZhbHVlKCksbj10LnByb3BlcnRpZXMuT01NLmdldFZhbHVlKCkscz1uLlNFTUlfTUFKT1JfQVhJUztpZihpLlBFUklPRDwxMjgqNjAmJm4uRUNDRU5UUklDSVRZPC4yNSYmZS5wdXNoKE5pLkxFTykscz4zNmUzKXtsZXQgbz1aZS5ub3coKSxyPVplLmFkZE1pbnV0ZXMobywxNDQwLG5ldyBaZSksYT0xMCxoPTEvMCxBPS0xLzA7Zm9yKGxldCBkPW87WmUubGVzc1RoYW4oZCxyKTtkPVplLmFkZE1pbnV0ZXMoZCxhLG5ldyBaZSkpe2xldCBmPXQucG9zaXRpb24uZ2V0VmFsdWUoZCkse2xhdGl0dWRlOkV9PXV0LmZyb21DYXJ0ZXNpYW4oZixvdC5XR1M4NCl8fHtsYXRpdHVkZTowfSxfPUwudG9EZWdyZWVzKEUpO2g9TWF0aC5taW4oaCxfKSxBPU1hdGgubWF4KEEsXyl9aS5QRVJJT0Q+WFYtNjAmJmkuUEVSSU9EPFhWKzYwJiYobi5JTkNMSU5BVElPTjwxP2UucHVzaChOaS5HRU8pOmUucHVzaChOaS5HRU9TWU5DKSksbi5JTkNMSU5BVElPTj49MjUmJm4uSU5DTElOQVRJT048PTE4MCYmcz49Mzc5NDgmJnM8PTQ2MzgwJiZuLkVDQ0VOVFJJQ0lUWTw9LjI1JiZlLnB1c2goTmkuSUdPKSxuLklOQ0xJTkFUSU9OPj0wJiZuLklOQ0xJTkFUSU9OPD0yNSYmcz49Mzc5NDgmJnM8PTQ2MzgwJiZuLkVDQ0VOVFJJQ0lUWTw9LjI1JiZlLnB1c2goTmkuRUdPKSxoPj0tMTUmJkE8PTE1JiZpLlBFUklHRUU+PTM1NTg2JiZpLlBFUklHRUU8PTM1OTg2JiZlLnB1c2goTmkuR0VPSUFEQyl9cmV0dXJuIGkuUEVSSUdFRT49MmUzJiZpLlBFUklHRUU8MzU3MDA/ZS5wdXNoKE5pLk1FTyk6aS5QRVJJR0VFPjM1Nzg2JiZlLnB1c2goTmkuSEVPKSxuLklOQ0xJTkFUSU9OPjk3JiZuLklOQ0xJTkFUSU9OPDk5JiZlLnB1c2goTmkuU1VOU1lOQyksTWF0aC5hYnMoaS5QRVJJT0QtLjUqWFYpPDEmJmUucHVzaChOaS5TRU1JU1lOQyksbi5JTkNMSU5BVElPTj49ODAmJm4uSU5DTElOQVRJT048PTEwMCYmZS5wdXNoKE5pLlBPTEFSKSxlLmxlbmd0aD09PTAmJmUucHVzaChOaS5VTktOT1dOKSxlfXZhciBOaSxYVixSdj1TKCgpPT57T3IoKTtfZSgpO3JpKCk7T2UoKTtOaT17TEVPOiJMb3cgRWFydGggT3JiaXQiLE1FTzoiTWVkaXVtIEVhcnRoIE9yYml0IixIRU86IkhpZ2hseSBFbGxpcHRpY2FsIE9yYml0IixHRU86Ikdlb3N0YXRpb25hcnkgT3JiaXQiLElHTzoiSW5jbGluZWQgR2Vvc3luY2hyb25vdXMgT3JiaXQiLEVHTzoiRXh0ZW5kZWQgR2Vvc3RhdGlvbmFyeSBPcmJpdCIsR0VPSUFEQzoiSUFEQyBHRU8gUHJvdGVjdGVkIFJlZ2lvbiIsR0VPU1lOQzoiR2Vvc3luY2hyb25vdXMgT3JiaXQiLFNVTlNZTkM6IlN1biBTeW5jaHJvbm91cyBPcmJpdCIsU0VNSVNZTkM6IlNlbWkgU3luY2hyb25vdXMgT3JiaXQiLFBPTEFSOiJQT0xBUiBPcmJpdCIsVU5LTk9XTjoiVU5LTk9XTiJ9LFhWPTg2MTY0LjA5MDV9KTtmdW5jdGlvbiBDZih0LGUpe3RoaXMuX2NhbGxiYWNrPXZvaWQgMCx0aGlzLl9pc0NvbnN0YW50PXZvaWQgMCx0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZD1uZXcgV2UsdGhpcy5zZXRDYWxsYmFjayh0LGUpfXZhciBadixJdj1TKCgpPT57bXQoKTtPdCgpO3hpKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ2YucHJvdG90eXBlLHtpc0NvbnN0YW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDb25zdGFudH19LGRlZmluaXRpb25DaGFuZ2VkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmaW5pdGlvbkNoYW5nZWR9fX0pO0NmLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jYWxsYmFjayh0LGUpfTtDZi5wcm90b3R5cGUuc2V0Q2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiY2FsbGJhY2sgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImlzQ29uc3RhbnQgaXMgcmVxdWlyZWQuIik7bGV0IGk9dGhpcy5fY2FsbGJhY2shPT10fHx0aGlzLl9pc0NvbnN0YW50IT09ZTt0aGlzLl9jYWxsYmFjaz10LHRoaXMuX2lzQ29uc3RhbnQ9ZSxpJiZ0aGlzLl9kZWZpbml0aW9uQ2hhbmdlZC5yYWlzZUV2ZW50KHRoaXMpfTtDZi5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8dCBpbnN0YW5jZW9mIENmJiZ0aGlzLl9jYWxsYmFjaz09PXQuX2NhbGxiYWNrJiZ0aGlzLl9pc0NvbnN0YW50PT09dC5faXNDb25zdGFudH07WnY9Q2Z9KTt2YXIgcVYscHYsdXY9UygoKT0+e1FuKCk7Y3AoKTtIdCgpO090KCk7QkYoKTtJdigpO3FWPWNsYXNzIGV4dGVuZHMgVl97Y29uc3RydWN0b3IoZSl7aWYoIShlLnNkYyBpbnN0YW5jZW9mIFZfKXx8IWUuc2RjLl93YXNtTW9kdWxlKXRocm93IG5ldyBZKCJJbnZhbGlkIFNwYWNlQ2F0YWxvZ0RhdGFTb3VyY2UiKTtzdXBlcihgJHtlLnNkYy5uYW1lfV9jb3ZlcmFnZUdyb3VwYCksdGhpcy5vYmplY3RMaXN0PVtdLHRoaXMuc2RjPWUuc2RjLHRoaXMuc2RjLmVudGl0aWVzLmNvbGxlY3Rpb25DaGFuZ2VkLmFkZEV2ZW50TGlzdGVuZXIoKGksbixzLG8pPT57Zm9yKGxldCByPTA7cjxzLmxlbmd0aDtyKyspfnRoaXMub2JqZWN0TGlzdC5pbmRleE9mKHNbcl0pJiZ0aGlzLnJlbW92ZShzW3JdKTtmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKykhfnRoaXMub2JqZWN0TGlzdC5pbmRleE9mKG5bcl0pJiZuW3JdLl9jb3ZlcmFnZVNob3dpbmcmJnRoaXMucHVzaChuW3JdKX0pLHRoaXMuY292ZXJhZ2VUeXBlPWUuY292ZXJhZ2VUeXBlfHwwLHRoaXMuY29sb3I9ZS5jb2xvcnx8WnQuZnJvbVJhbmRvbSh7YWxwaGE6LjN9KSx0aGlzLmdyb3VuZENvdmVyYWdlT25seT1lLmdyb3VuZENvdmVyYWdlT25seXx8ITEsdGhpcy5hbmdsZT1lLmFuZ2xlLHRoaXMubGFzdEludGVyc2VjdGlvblRpbWU9bnVsbCx0aGlzLmNhY2hlZFBvc2l0aW9ucz1bXSx0aGlzLndhc21Nb2R1bGU9dGhpcy5zZGMuX3dhc21Nb2R1bGUsdGhpcy5zYW1wbGVzPWUuc2FtcGxlc3x8MTAsdGhpcy5lY2VmUG9pbnRlcj10aGlzLndhc21Nb2R1bGUuX21hbGxvYygyNCksdGhpcy5lY2VmUG9pbnRzPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtTW9kdWxlLkhFQVA4LmJ1ZmZlcix0aGlzLmVjZWZQb2ludGVyLDMpLHRoaXMucG9zaXRpb25zPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtTW9kdWxlLkhFQVA4LmJ1ZmZlcix0aGlzLnBvc0FycmF5UG9pbnRlcix0aGlzLl9zaXplKSx0aGlzLnJlc3VsdD1uZXcgbCx0aGlzLnBoPW5ldyBzZix0aGlzLmMzYXJyYXk9W119Z2V0IHZpZXdlcigpe3JldHVybiB0aGlzLl92aWV3ZXJ9Z2V0IHNhbXBsZXMoKXtyZXR1cm4gdGhpcy5fc2FtcGxlc31zZXQgc2FtcGxlcyhlKXt0aGlzLl9zYW1wbGVzPWUsdGhpcy5fc2l6ZT02KnRoaXMuX3NhbXBsZXMsdGhpcy5fYnl0ZXNTaXplPXRoaXMuX3NpemUqOCx0aGlzLnBvc0FycmF5UG9pbnRlciYmdGhpcy53YXNtTW9kdWxlLl9mcmVlKHRoaXMucG9zQXJyYXlQb2ludGVyKSx0aGlzLnBvc0FycmF5UG9pbnRlcj10aGlzLndhc21Nb2R1bGUuX21hbGxvYyh0aGlzLl9ieXRlc1NpemUpLHRoaXMucG9zaXRpb25zPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtTW9kdWxlLkhFQVA4LmJ1ZmZlcix0aGlzLnBvc0FycmF5UG9pbnRlcix0aGlzLl9zaXplKX1jcmVhdGVHZW9tZXRyeSgpe2xldCBlPSJub2NsaWNrOkNvdmVyYWdlRW50aXR5IjtpZih0aGlzLnBoLnNhdHBvcz1bXSwhdGhpcy5lbnRpdGllcy5nZXRCeUlkKGUpKXtsZXQgaT10aGlzLmVudGl0aWVzLmFkZCh7aWQ6ZSxwb2x5Z29uOntoaWVyYXJjaHk6bmV3IFp2KG49Pnt0aGlzLnBoLnBvc2l0aW9uc0FycmF5PVtdLHRoaXMucGgucG9zaXRpb25zPVtdO2ZvcihsZXQgcz0wO3M8dGhpcy5vYmplY3RMaXN0Lmxlbmd0aDsrK3MpaWYodGhpcy5vYmplY3RMaXN0W3NdLnNob3cpe2lmKHRoaXMuYzNhcnJheT1bXSx0aGlzLnJlc3VsdD10aGlzLm9iamVjdExpc3Rbc10ucG9zaXRpb24uZ2V0VmFsdWUobix0aGlzLnJlc3VsdCwhMSksdGhpcy5tb2RlbE1hdHJpeD10aGlzLm9iamVjdExpc3Rbc10uY29tcHV0ZU1vZGVsTWF0cml4KG4pLGwucGFjayh0aGlzLnJlc3VsdCx0aGlzLmVjZWZQb2ludHMpLHRoaXMud2FzbU1vZHVsZS5nZXRDb3ZlcmFnZVBvc2l0aW9ucyh0aGlzLmVjZWZQb2ludGVyLHRoaXMuY292ZXJhZ2VUeXBlLHRoaXMuYW5nbGUsdGhpcy5zYW1wbGVzLHRoaXMucG9zQXJyYXlQb2ludGVyKSx0aGlzLnBvc2l0aW9ucy5sZW5ndGglMz09PTApe2xldCBvPWwudW5wYWNrQXJyYXkodGhpcy5wb3NpdGlvbnMsdGhpcy5jM2FycmF5KTt0aGlzLnBoLnBvc2l0aW9uc0FycmF5W3NdPW99ZWxzZSBjb250aW51ZTt0aGlzLmdyb3VuZENvdmVyYWdlT25seXx8KHRoaXMucGguc2F0cG9zW3NdPWwuY2xvbmUodGhpcy5yZXN1bHQpKX1yZXR1cm4gdGhpcy5waH0sITEpLHBlclBvc2l0aW9uSGVpZ2h0OiEwLG1hdGVyaWFsOnRoaXMuY29sb3J9LHByb3BlcnRpZXM6e3Vuc2VsZWN0YWJsZTohMH19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpLHtzaG93OntnZXQ6KCk9PiEwLHNldDooKT0+e319fSl9fWdldEJ5SWQoZSl7cmV0dXJuIHRoaXMub2JqZWN0TGlzdC5maWx0ZXIoaT0+aS5pZD09PWUpfXB1c2goZSl7dGhpcy5vYmplY3RMaXN0LmZpbHRlcihpPT5pLmlkPT09ZS5pZCkubGVuZ3RofHwodGhpcy5vYmplY3RMaXN0LnB1c2goZSksdGhpcy5jcmVhdGVHZW9tZXRyeSgpKX1yZW1vdmUoZSl7dGhpcy5vYmplY3RMaXN0PXRoaXMub2JqZWN0TGlzdC5maWx0ZXIoaT0+aS5pZCE9PWUuaWQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Nob3c6e2NvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmUuX3Nob3csc2V0Omk9PntlLl9zaG93PWl9fX0pLHRoaXMuY3JlYXRlR2VvbWV0cnkoKX19LHB2PXFWfSk7dmFyIFpFZSxJRWUscEVlLEJodCxHQyxDdj1TKCgpPT57aWMoKTtCRigpO2N2KCk7UW4oKTtIdCgpO0lFKCk7T20oKTtFdigpO1J2KCk7dXYoKTtpaCgpO090KCk7WjMoKTt6VigpOyh7T01NVDpaRWUsT01NQ09MTEVDVElPTlQ6SUVlfT1yZCkse0NBVFQ6cEVlLENBVENPTExFQ1RJT05UOkJodH09ZWQsR0M9Y2xhc3MgZXh0ZW5kcyBWX3tjb25zdHJ1Y3RvcihlPXtuYW1lPUJzKCkscmVmZXJlbmNlRnJhbWU9JGkuRklYRUQsY2FsY1ZlbG9jaXR5PSExLGVudGl0eURlZmF1bHQ9e319PXt9KXtzdXBlcihlLm5hbWUpLHRoaXMuX3ZpZXdlcj12b2lkIDAsdGhpcy5PTU09bnVsbCx0aGlzLkNBVFJBVz1udWxsLHRoaXMuQ0FUPW51bGwsdGhpcy5DT01CSU5FRE9NTUNBVD1bXSx0aGlzLmxhc3RMb2FkZWQ9bnVsbCx0aGlzLm9wdGlvbnM9ZSx0aGlzLl93YXNtTW9kdWxlPW51bGwsdGhpcy5fcmVnaXN0ZXJlZD0hMSx0aGlzLl9lbnRpdHlDb2xsZWN0aW9uLnJlZmVyZW5jZUZyYW1lPSRpLkZJWEVELHRoaXMuX2VudGl0eUNvbGxlY3Rpb24uY2FsY1ZlbG9jaXR5PWUuY2FsY1ZlbG9jaXR5fHwhMTtsZXQgaT0obixzLG8scik9PntvLmZpbHRlcihhPT5hLnByb3BlcnRpZXM/LnBvaW50ZXIpLmZvckVhY2goYT0+e3RoaXMuX3dhc21Nb2R1bGUucmVtb3ZlRW50aXR5KGEucHJvcGVydGllcy5wb2ludGVyKX0pLHRoaXMuX2VudGl0eUNvbGxlY3Rpb24ucmVmZXJlbmNlRnJhbWU9dGhpcy5fdmlld2VyPy5zY2VuZS5yZWZlcmVuY2VGcmFtZXx8dGhpcy5fZW50aXR5Q29sbGVjdGlvbi5yZWZlcmVuY2VGcmFtZX07dGhpcy5fZW50aXR5Q29sbGVjdGlvbi5jb2xsZWN0aW9uQ2hhbmdlZC5hZGRFdmVudExpc3RlbmVyKGksdGhpcyksdGhpcy5fb3JiaXRzPXtbTmkuTEVPXTpbXSxbTmkuTUVPXTpbXSxbTmkuSEVPXTpbXSxbTmkuR0VPXTpbXSxbTmkuSUdPXTpbXSxbTmkuRUdPXTpbXSxbTmkuR0VPSUFEQ106W10sW05pLkdFT1NZTkNdOltdLFtOaS5TVU5TWU5DXTpbXSxbTmkuU0VNSVNZTkNdOltdLFtOaS5QT0xBUl06W10sW05pLlVOS05PV05dOltdfX1vbkFkZChlKXt+ZS5nZXRCeU5hbWUodGhpcy5fY292ZXJhZ2VHcm91cC5uYW1lKS5sZW5ndGgmJmUuYWRkKHRoaXMuX2NvdmVyYWdlR3JvdXApfW9uUmVtb3ZlKGUpe2UuZ2V0QnlOYW1lKHRoaXMuX2NvdmVyYWdlR3JvdXAubmFtZSkubGVuZ3RoJiZlLnJlbW92ZSh0aGlzLl9jb3ZlcmFnZUdyb3VwKX1hc3luYyBsb2FkKGUpe3JldHVybiBhd2FpdCB0aGlzLmxvYWRPTU0oZSwidGxlIil9bG9hZE9NTShlLGksbj0hMSl7aWYoIWUpdGhyb3cgbmV3IFkoJ1RoZSBwYXJhbWV0ZXIgIm9tbSIgaXMgcmVxdWlyZWQuJyk7aWYoIWkpdGhyb3cgbmV3IFkoJ1RoZSBwYXJhbWV0ZXIgInNhdGNhdCIgaXMgcmVxdWlyZWQuJyk7cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHM9PntsZXQgbz1hd2FpdCBLVi5pbml0SW5zdGFuY2UoKTtpZih0aGlzLl93YXNtTW9kdWxlPW8ud2FzbU1vZHVsZSx0aGlzLl9jb3ZlcmFnZUdyb3VwPXRoaXMuX2NvdmVyYWdlR3JvdXB8fG5ldyBwdih7c2FtcGxlczo3MixzZGM6dGhpcyxjb3ZlcmFnZVR5cGU6MSxhbmdsZTo5MCxncm91bmRDb3ZlcmFnZU9ubHk6ITEsY29sb3I6WnQuTElNRUdSRUVOLndpdGhBbHBoYSguNSl9KSx0aGlzLmVudGl0aWVzLnN1c3BlbmRFdmVudHMoKSx0aGlzLl93YXNtU2F0ZWxsaXRlQ2F0YWxvZz10aGlzLl93YXNtU2F0ZWxsaXRlQ2F0YWxvZ3x8by5pbnN0YW5jZSwoZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSkmJihlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihlPW5ldyBVaW50OEFycmF5KGUpKSx0aGlzLk9NTT1VRihlLCJPTU0iLHJkKSksKGUuUkVDT1JEU3x8QXJyYXkuaXNBcnJheShlKSkmJih0aGlzLk9NTT17UkVDT1JEUzplPy5SRUNPUkRTfHxlfSksIXRoaXMuT01NKXRocm93IEVycm9yKCJPTU1DT0xMRUNUSU9OVCBpbnZhbGlkIik7bGV0IHI9W107dGhpcy5DQVQ9bmV3IEJodCwoaSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHxlIGluc3RhbmNlb2YgVWludDhBcnJheSkmJihpIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihpPW5ldyBVaW50OEFycmF5KGkpKSx0aGlzLkNBVFJBVz1VRihpLCJDQVQiLGVkKSksKGkuUkVDT1JEU3x8QXJyYXkuaXNBcnJheShpKSkmJih0aGlzLkNBVFJBVz17UkVDT1JEUzppPy5SRUNPUkRTfHxpfSk7Zm9yKGxldCBhPTA7YTx0aGlzLkNBVFJBVy5SRUNPUkRTLmxlbmd0aDthKyspclt0aGlzLkNBVFJBVy5SRUNPUkRTW2FdLk5PUkFEX0NBVF9JRF09YTtmb3IobGV0IGE9MDthPHRoaXMuT01NLlJFQ09SRFMubGVuZ3RoO2ErKyl7bGV0IGg9dGhpcy5PTU0uUkVDT1JEU1thXTt0aGlzLkNBVC5SRUNPUkRTW2FdPXRoaXMuQ0FUUkFXLlJFQ09SRFNbcltoLk5PUkFEX0NBVF9JRF1dLHRoaXMuQ09NQklORURPTU1DQVRbYV09e307Zm9yKGxldCBmIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShmKSYmKHRoaXMuQ09NQklORURPTU1DQVRbYV1bZl09aFtmXSk7Zm9yKGxldCBmIGluIHRoaXMuQ0FULlJFQ09SRFNbYV0pdGhpcy5DQVQuUkVDT1JEU1thXS5oYXNPd25Qcm9wZXJ0eShmKSYmKHRoaXMuQ09NQklORURPTU1DQVRbYV1bZl09dGhpcy5DQVQuUkVDT1JEU1thXVtmXSk7bGV0IEEsZD1oLk5PUkFEX0NBVF9JRDtpZihBPXRoaXMuZW50aXRpZXMuZ2V0QnlJZChkKSlBLmxvYWRPTU0oaCk7ZWxzZXtsZXQgZj17aWQ6ZCxuYW1lOnRoaXMuQ0FULlJFQ09SRFNbYV0/Lk9CSkVDVF9OQU1FfHxkLHByb3BlcnRpZXM6e0lOREVYOmEsQ0FUOnRoaXMuQ0FULlJFQ09SRFNbYV0sT01NOmh9LHBvaW50OntwaXhlbFNpemU6MSxzY2FsZUJ5RGlzdGFuY2U6bnVsbH0sbGFiZWw6e3Nob3c6ITEsdGV4dDpgJHtoLk9CSkVDVF9JRC50b1N0cmluZygpLnBhZFN0YXJ0KDUsMCl9YCxmb250OiIxcmVtIEhlbHZldGljYSIsc2hvd0JhY2tncm91bmQ6ITAsaG9yaXpvbnRhbE9yaWdpbjp0by5MRUZULGJhY2tncm91bmRDb2xvcjpuZXcgWnQoLjEsLjEsLjEsLjkpLHBpeGVsT2Zmc2V0Om5ldyBsKDEwLDApLHNjYWxlQnlEaXN0YW5jZTpuZXcgZ2koMTUwLDEuNSwxM2U3LDApLHBpeGVsT2Zmc2V0U2NhbGVCeURpc3RhbmNlOm5ldyBnaSgxNTAsMywxNWU2LC41KX19O2ZvcihsZXQgRSBpbiB0aGlzLm9wdGlvbnMuZW50aXR5RGVmYXVsdCl0aGlzLm9wdGlvbnMuZW50aXR5RGVmYXVsdFtFXSYmKGZbRV09T2JqZWN0LmFzc2lnbih7fSxmW0VdfHx7fSx0aGlzLm9wdGlvbnMuZW50aXR5RGVmYXVsdFtFXSkpO2lmKGYmJnRoaXMuX3dhc21Nb2R1bGUmJmgpdHJ5e2xldCBFPW5ldyBPQyhmLHRoaXMuX3dhc21Nb2R1bGUsdGhpcy5fd2FzbVNhdGVsbGl0ZUNhdGFsb2csaCk7QT10aGlzLmVudGl0aWVzLmFkZChFLGEpO2xldHtBUE9HRUU6XyxQRVJJR0VFOlJ9PUUucHJvcGVydGllcy5DQVQuZ2V0VmFsdWUoKSx7U0VNSV9NQUpPUl9BWElTOkksU0VNSV9NSU5PUl9BWElTOkN9PUUucHJvcGVydGllcy5PTU0uZ2V0VmFsdWUoKSx7RUNDRU5UUklDSVRZOk59PUUucHJvcGVydGllcy5PTU0uZ2V0VmFsdWUoKTtfLz0xZTMsUi89MWUzLHRoaXMuQ0FULlJFQ09SRFNbYV0mJih0aGlzLkNBVC5SRUNPUkRTW2FdLkFQT0dFRT1fLHRoaXMuQ0FULlJFQ09SRFNbYV0uUEVSSUdFRT1SKSx0aGlzLk9NTS5SRUNPUkRTW2FdJiYodGhpcy5PTU0uUkVDT1JEU1thXS5TRU1JX01BSk9SX0FYSVM9SSx0aGlzLk9NTS5SRUNPUkRTW2FdLlNFTUlfTUlOT1JfQVhJUz1DLHRoaXMuT01NLlJFQ09SRFNbYV0uRUNDRU5UUklDSVRZPU4pLHRoaXMuQ09NQklORURPTU1DQVRbYV09ey4uLnRoaXMuQ09NQklORURPTU1DQVRbYV0sQVBPR0VFOl8sUEVSSUdFRTpSLFNFTUlfTUFKT1JfQVhJUzpJLFNFTUlfTUlOT1JfQVhJUzpDLEVDQ0VOVFJJQ0lUWTpOfX1jYXRjaChFKXtnbG9iYWxUaGlzLmVycm9yfHwoY29uc29sZS5sb2coRSksZ2xvYmFsVGhpcy5lcnJvcj1FKX19fXRoaXMuZW50aXRpZXMuX3N1c3BlbmRDb3VudCYmdGhpcy5lbnRpdGllcy5yZXN1bWVFdmVudHMoKSx0aGlzLmVudGl0aWVzLnJlZmVyZW5jZUZyYW1lPXRoaXMuX3ZpZXdlcj8uc2NlbmUucmVmZXJlbmNlRnJhbWUscyh0aGlzKX0pfWdldEVudGl0aWVzQnlPcmJpdFR5cGUoZSl7cmV0dXJuIHRoaXMuX29yYml0c1tlXX1jYXRlZ29yaXplU2F0ZWxsaXRlcygpe2ZvcihsZXQgZSBpbiBOaSl0aGlzLl9vcmJpdHNbZV0mJih0aGlzLl9vcmJpdHNbZV09W10pO2ZvcihsZXQgZT0wO2U8dGhpcy5lbnRpdGllcy52YWx1ZXMubGVuZ3RoO2UrKyl7bGV0IGk9dGhpcy5lbnRpdGllcy52YWx1ZXNbZV0sbj1fdihpKTtmb3IobGV0IHMgaW4gbilpZihuW3NdKXtsZXQgbz1uW3NdO289PT1OaS5MRU8/dGhpcy5MRU8ucHVzaChpKTpvPT09TmkuTUVPP3RoaXMuTUVPLnB1c2goaSk6bz09PU5pLkhFTz90aGlzLkhFTy5wdXNoKGkpOm89PT1OaS5HRU8/dGhpcy5HRU8ucHVzaChpKTpvPT09TmkuSUdPP3RoaXMuSUdPLnB1c2goaSk6bz09PU5pLkVHTz90aGlzLkVHTy5wdXNoKGkpOm89PT1OaS5HRU9JQURDP3RoaXMuR0VPSUFEQy5wdXNoKGkpOm89PT1OaS5HRU9TWU5DP3RoaXMuR0VPU1lOQy5wdXNoKGkpOm89PT1OaS5TVU5TWU5DP3RoaXMuU1VOU1lOQy5wdXNoKGkpOm89PT1OaS5TRU1JU1lOQz90aGlzLlNFTUlTWU5DLnB1c2goaSk6bz09PU5pLlBPTEFSP3RoaXMuUE9MQVIucHVzaChpKTpvPT09TmkuVU5LTk9XTiYmdGhpcy5VTktOT1dOLnB1c2goaSl9fX19fSk7dmFyICRWPXt9O0hlKCRWLHtkZWZhdWx0OigpPT5XaHR9KTthc3luYyBmdW5jdGlvbiBHaHQodCl7bGV0e3RyYW5zZmVyRW50aXRpZXM6ZSxzY3JlZW5pbmdPYmplY3RJZHM6aX09dCxuPVtdLHtPTU06cyxDQVQ6b309ZSxyPW5ldyBHQyh7bmFtZToid29ya2VyQ2F0YWxvZyJ9KTthd2FpdCByLmxvYWRPTU0ocyxvKTtsZXQgYT1yLl93YXNtU2F0ZWxsaXRlQ2F0YWxvZy5jb25qdW5jdGlvbkFzc2Vzc21lbnQodC5zdGFydCx0LnN0b3AsdC5zdGVwLHQucmFkaXVzLGkpO2ZvcihsZXQgaD0wO2g8YS5zaXplKCk7aCsrKXtsZXQgQT1hLmdldChoKTtuLnB1c2goe3ByaW1hcnk6QS5wcmltYXJ5LmNhdGFsb2dOdW1iZXIsc2Vjb25kYXJ5OkEuc2Vjb25kYXJ5LmNhdGFsb2dOdW1iZXIsVENBOkEuVENBLGRpc3RhbmNlOkEuZGlzdGFuY2V9KX1yZXR1cm4gbn12YXIgV2h0LHRTPVMoKCk9PntOcygpO0N2KCk7V2h0PVdpKEdodCl9KTt2YXIgZVM9e307SGUoZVMse2RlZmF1bHQ6KCk9PlVodH0pO2Z1bmN0aW9uIERodCh0LGUpe2xldCBpPVRBLnVucGFja0NvbWJpbmVHZW9tZXRyeVBhcmFtZXRlcnModCksbj1UQS5jb21iaW5lR2VvbWV0cnkoaSk7cmV0dXJuIFRBLnBhY2tDb21iaW5lR2VvbWV0cnlSZXN1bHRzKG4sZSl9dmFyIFVodCxpUz1TKCgpPT57S0koKTtOcygpO1VodD1XaShEaHQpfSk7ZnVuY3Rpb24gZ3IodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQubWluaW11bSxpPXQubWF4aW11bTtpZihwLnR5cGVPZi5vYmplY3QoIm1pbiIsZSkscC50eXBlT2Yub2JqZWN0KCJtYXgiLGkpLG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUCl0aHJvdyBuZXcgWSgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTtsZXQgbj1aKHQudmVydGV4Rm9ybWF0LFN0LkRFRkFVTFQpO3RoaXMuX21pbmltdW09bC5jbG9uZShlKSx0aGlzLl9tYXhpbXVtPWwuY2xvbmUoaSksdGhpcy5fdmVydGV4Rm9ybWF0PW4sdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUJveEdlb21ldHJ5In12YXIgTWh0LFR2LE52LEZ2LGd2LG5TLGNSLHNTPVMoKCk9PntfaSgpO0h0KCk7YWUoKTtvaSgpO0Z0KCk7bXQoKTtPdCgpO3lpKCk7amkoKTtFbigpO2dvKCk7WGkoKTtMcygpO01odD1uZXcgbDtnci5mcm9tRGltZW5zaW9ucz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5kaW1lbnNpb25zO3AudHlwZU9mLm9iamVjdCgiZGltZW5zaW9ucyIsZSkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueCIsZS54LDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnkiLGUueSwwKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy56IixlLnosMCk7bGV0IGk9bC5tdWx0aXBseUJ5U2NhbGFyKGUsLjUsbmV3IGwpO3JldHVybiBuZXcgZ3Ioe21pbmltdW06bC5uZWdhdGUoaSxuZXcgbCksbWF4aW11bTppLHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGV9KX07Z3IuZnJvbUF4aXNBbGlnbmVkQm91bmRpbmdCb3g9ZnVuY3Rpb24odCl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgiYm91bmRpbmdCb3giLHQpLG5ldyBncih7bWluaW11bTp0Lm1pbmltdW0sbWF4aW11bTp0Lm1heGltdW19KX07Z3IucGFja2VkTGVuZ3RoPTIqbC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoKzE7Z3IucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGwucGFjayh0Ll9taW5pbXVtLGUsaSksbC5wYWNrKHQuX21heGltdW0sZSxpK2wucGFja2VkTGVuZ3RoKSxTdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkrMipsLnBhY2tlZExlbmd0aCksZVtpKzIqbC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07VHY9bmV3IGwsTnY9bmV3IGwsRnY9bmV3IFN0LGd2PXttaW5pbXVtOlR2LG1heGltdW06TnYsdmVydGV4Rm9ybWF0OkZ2LG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O2dyLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49bC51bnBhY2sodCxlLFR2KSxzPWwudW5wYWNrKHQsZStsLnBhY2tlZExlbmd0aCxOdiksbz1TdC51bnBhY2sodCxlKzIqbC5wYWNrZWRMZW5ndGgsRnYpLHI9dFtlKzIqbC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoXTtyZXR1cm4gbShpKT8oaS5fbWluaW11bT1sLmNsb25lKG4saS5fbWluaW11bSksaS5fbWF4aW11bT1sLmNsb25lKHMsaS5fbWF4aW11bSksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKG8saS5fdmVydGV4Rm9ybWF0KSxpLl9vZmZzZXRBdHRyaWJ1dGU9cj09PS0xP3ZvaWQgMDpyLGkpOihndi5vZmZzZXRBdHRyaWJ1dGU9cj09PS0xP3ZvaWQgMDpyLG5ldyBncihndikpfTtnci5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9taW5pbXVtLGk9dC5fbWF4aW11bSxuPXQuX3ZlcnRleEZvcm1hdDtpZihsLmVxdWFscyhlLGkpKXJldHVybjtsZXQgcz1uZXcgd2UsbyxyO2lmKG4ucG9zaXRpb24mJihuLnN0fHxuLm5vcm1hbHx8bi50YW5nZW50fHxuLmJpdGFuZ2VudCkpe2lmKG4ucG9zaXRpb24mJihyPW5ldyBGbG9hdDY0QXJyYXkoNio0KjMpLHJbMF09ZS54LHJbMV09ZS55LHJbMl09aS56LHJbM109aS54LHJbNF09ZS55LHJbNV09aS56LHJbNl09aS54LHJbN109aS55LHJbOF09aS56LHJbOV09ZS54LHJbMTBdPWkueSxyWzExXT1pLnosclsxMl09ZS54LHJbMTNdPWUueSxyWzE0XT1lLnosclsxNV09aS54LHJbMTZdPWUueSxyWzE3XT1lLnosclsxOF09aS54LHJbMTldPWkueSxyWzIwXT1lLnosclsyMV09ZS54LHJbMjJdPWkueSxyWzIzXT1lLnosclsyNF09aS54LHJbMjVdPWUueSxyWzI2XT1lLnosclsyN109aS54LHJbMjhdPWkueSxyWzI5XT1lLnosclszMF09aS54LHJbMzFdPWkueSxyWzMyXT1pLnosclszM109aS54LHJbMzRdPWUueSxyWzM1XT1pLnosclszNl09ZS54LHJbMzddPWUueSxyWzM4XT1lLnosclszOV09ZS54LHJbNDBdPWkueSxyWzQxXT1lLnoscls0Ml09ZS54LHJbNDNdPWkueSxyWzQ0XT1pLnoscls0NV09ZS54LHJbNDZdPWUueSxyWzQ3XT1pLnoscls0OF09ZS54LHJbNDldPWkueSxyWzUwXT1lLnoscls1MV09aS54LHJbNTJdPWkueSxyWzUzXT1lLnoscls1NF09aS54LHJbNTVdPWkueSxyWzU2XT1pLnoscls1N109ZS54LHJbNThdPWkueSxyWzU5XT1pLnoscls2MF09ZS54LHJbNjFdPWUueSxyWzYyXT1lLnoscls2M109aS54LHJbNjRdPWUueSxyWzY1XT1lLnoscls2Nl09aS54LHJbNjddPWUueSxyWzY4XT1pLnoscls2OV09ZS54LHJbNzBdPWUueSxyWzcxXT1pLnoscy5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnJ9KSksbi5ub3JtYWwpe2xldCBBPW5ldyBGbG9hdDMyQXJyYXkoNzIpO0FbMF09MCxBWzFdPTAsQVsyXT0xLEFbM109MCxBWzRdPTAsQVs1XT0xLEFbNl09MCxBWzddPTAsQVs4XT0xLEFbOV09MCxBWzEwXT0wLEFbMTFdPTEsQVsxMl09MCxBWzEzXT0wLEFbMTRdPS0xLEFbMTVdPTAsQVsxNl09MCxBWzE3XT0tMSxBWzE4XT0wLEFbMTldPTAsQVsyMF09LTEsQVsyMV09MCxBWzIyXT0wLEFbMjNdPS0xLEFbMjRdPTEsQVsyNV09MCxBWzI2XT0wLEFbMjddPTEsQVsyOF09MCxBWzI5XT0wLEFbMzBdPTEsQVszMV09MCxBWzMyXT0wLEFbMzNdPTEsQVszNF09MCxBWzM1XT0wLEFbMzZdPS0xLEFbMzddPTAsQVszOF09MCxBWzM5XT0tMSxBWzQwXT0wLEFbNDFdPTAsQVs0Ml09LTEsQVs0M109MCxBWzQ0XT0wLEFbNDVdPS0xLEFbNDZdPTAsQVs0N109MCxBWzQ4XT0wLEFbNDldPTEsQVs1MF09MCxBWzUxXT0wLEFbNTJdPTEsQVs1M109MCxBWzU0XT0wLEFbNTVdPTEsQVs1Nl09MCxBWzU3XT0wLEFbNThdPTEsQVs1OV09MCxBWzYwXT0wLEFbNjFdPS0xLEFbNjJdPTAsQVs2M109MCxBWzY0XT0tMSxBWzY1XT0wLEFbNjZdPTAsQVs2N109LTEsQVs2OF09MCxBWzY5XT0wLEFbNzBdPS0xLEFbNzFdPTAscy5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkF9KX1pZihuLnN0KXtsZXQgQT1uZXcgRmxvYXQzMkFycmF5KDQ4KTtBWzBdPTAsQVsxXT0wLEFbMl09MSxBWzNdPTAsQVs0XT0xLEFbNV09MSxBWzZdPTAsQVs3XT0xLEFbOF09MSxBWzldPTAsQVsxMF09MCxBWzExXT0wLEFbMTJdPTAsQVsxM109MSxBWzE0XT0xLEFbMTVdPTEsQVsxNl09MCxBWzE3XT0wLEFbMThdPTEsQVsxOV09MCxBWzIwXT0xLEFbMjFdPTEsQVsyMl09MCxBWzIzXT0xLEFbMjRdPTEsQVsyNV09MCxBWzI2XT0wLEFbMjddPTAsQVsyOF09MCxBWzI5XT0xLEFbMzBdPTEsQVszMV09MSxBWzMyXT0xLEFbMzNdPTAsQVszNF09MCxBWzM1XT0wLEFbMzZdPTAsQVszN109MSxBWzM4XT0xLEFbMzldPTEsQVs0MF09MCxBWzQxXT0wLEFbNDJdPTEsQVs0M109MCxBWzQ0XT0xLEFbNDVdPTEsQVs0Nl09MCxBWzQ3XT0xLHMuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkF9KX1pZihuLnRhbmdlbnQpe2xldCBBPW5ldyBGbG9hdDMyQXJyYXkoNzIpO0FbMF09MSxBWzFdPTAsQVsyXT0wLEFbM109MSxBWzRdPTAsQVs1XT0wLEFbNl09MSxBWzddPTAsQVs4XT0wLEFbOV09MSxBWzEwXT0wLEFbMTFdPTAsQVsxMl09LTEsQVsxM109MCxBWzE0XT0wLEFbMTVdPS0xLEFbMTZdPTAsQVsxN109MCxBWzE4XT0tMSxBWzE5XT0wLEFbMjBdPTAsQVsyMV09LTEsQVsyMl09MCxBWzIzXT0wLEFbMjRdPTAsQVsyNV09MSxBWzI2XT0wLEFbMjddPTAsQVsyOF09MSxBWzI5XT0wLEFbMzBdPTAsQVszMV09MSxBWzMyXT0wLEFbMzNdPTAsQVszNF09MSxBWzM1XT0wLEFbMzZdPTAsQVszN109LTEsQVszOF09MCxBWzM5XT0wLEFbNDBdPS0xLEFbNDFdPTAsQVs0Ml09MCxBWzQzXT0tMSxBWzQ0XT0wLEFbNDVdPTAsQVs0Nl09LTEsQVs0N109MCxBWzQ4XT0tMSxBWzQ5XT0wLEFbNTBdPTAsQVs1MV09LTEsQVs1Ml09MCxBWzUzXT0wLEFbNTRdPS0xLEFbNTVdPTAsQVs1Nl09MCxBWzU3XT0tMSxBWzU4XT0wLEFbNTldPTAsQVs2MF09MSxBWzYxXT0wLEFbNjJdPTAsQVs2M109MSxBWzY0XT0wLEFbNjVdPTAsQVs2Nl09MSxBWzY3XT0wLEFbNjhdPTAsQVs2OV09MSxBWzcwXT0wLEFbNzFdPTAscy50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpBfSl9aWYobi5iaXRhbmdlbnQpe2xldCBBPW5ldyBGbG9hdDMyQXJyYXkoNzIpO0FbMF09MCxBWzFdPTEsQVsyXT0wLEFbM109MCxBWzRdPTEsQVs1XT0wLEFbNl09MCxBWzddPTEsQVs4XT0wLEFbOV09MCxBWzEwXT0xLEFbMTFdPTAsQVsxMl09MCxBWzEzXT0xLEFbMTRdPTAsQVsxNV09MCxBWzE2XT0xLEFbMTddPTAsQVsxOF09MCxBWzE5XT0xLEFbMjBdPTAsQVsyMV09MCxBWzIyXT0xLEFbMjNdPTAsQVsyNF09MCxBWzI1XT0wLEFbMjZdPTEsQVsyN109MCxBWzI4XT0wLEFbMjldPTEsQVszMF09MCxBWzMxXT0wLEFbMzJdPTEsQVszM109MCxBWzM0XT0wLEFbMzVdPTEsQVszNl09MCxBWzM3XT0wLEFbMzhdPTEsQVszOV09MCxBWzQwXT0wLEFbNDFdPTEsQVs0Ml09MCxBWzQzXT0wLEFbNDRdPTEsQVs0NV09MCxBWzQ2XT0wLEFbNDddPTEsQVs0OF09MCxBWzQ5XT0wLEFbNTBdPTEsQVs1MV09MCxBWzUyXT0wLEFbNTNdPTEsQVs1NF09MCxBWzU1XT0wLEFbNTZdPTEsQVs1N109MCxBWzU4XT0wLEFbNTldPTEsQVs2MF09MCxBWzYxXT0wLEFbNjJdPTEsQVs2M109MCxBWzY0XT0wLEFbNjVdPTEsQVs2Nl09MCxBWzY3XT0wLEFbNjhdPTEsQVs2OV09MCxBWzcwXT0wLEFbNzFdPTEscy5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkF9KX1vPW5ldyBVaW50MTZBcnJheSg2KjIqMyksb1swXT0wLG9bMV09MSxvWzJdPTIsb1szXT0wLG9bNF09MixvWzVdPTMsb1s2XT02LG9bN109NSxvWzhdPTQsb1s5XT03LG9bMTBdPTYsb1sxMV09NCxvWzEyXT04LG9bMTNdPTksb1sxNF09MTAsb1sxNV09OCxvWzE2XT0xMCxvWzE3XT0xMSxvWzE4XT0xNCxvWzE5XT0xMyxvWzIwXT0xMixvWzIxXT0xNSxvWzIyXT0xNCxvWzIzXT0xMixvWzI0XT0xOCxvWzI1XT0xNyxvWzI2XT0xNixvWzI3XT0xOSxvWzI4XT0xOCxvWzI5XT0xNixvWzMwXT0yMCxvWzMxXT0yMSxvWzMyXT0yMixvWzMzXT0yMCxvWzM0XT0yMixvWzM1XT0yM31lbHNlIHI9bmV3IEZsb2F0NjRBcnJheSg4KjMpLHJbMF09ZS54LHJbMV09ZS55LHJbMl09ZS56LHJbM109aS54LHJbNF09ZS55LHJbNV09ZS56LHJbNl09aS54LHJbN109aS55LHJbOF09ZS56LHJbOV09ZS54LHJbMTBdPWkueSxyWzExXT1lLnosclsxMl09ZS54LHJbMTNdPWUueSxyWzE0XT1pLnosclsxNV09aS54LHJbMTZdPWUueSxyWzE3XT1pLnosclsxOF09aS54LHJbMTldPWkueSxyWzIwXT1pLnosclsyMV09ZS54LHJbMjJdPWkueSxyWzIzXT1pLnoscy5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnJ9KSxvPW5ldyBVaW50MTZBcnJheSg2KjIqMyksb1swXT00LG9bMV09NSxvWzJdPTYsb1szXT00LG9bNF09NixvWzVdPTcsb1s2XT0xLG9bN109MCxvWzhdPTMsb1s5XT0xLG9bMTBdPTMsb1sxMV09MixvWzEyXT0xLG9bMTNdPTYsb1sxNF09NSxvWzE1XT0xLG9bMTZdPTIsb1sxN109NixvWzE4XT0yLG9bMTldPTMsb1syMF09NyxvWzIxXT0yLG9bMjJdPTcsb1syM109NixvWzI0XT0zLG9bMjVdPTAsb1syNl09NCxvWzI3XT0zLG9bMjhdPTQsb1syOV09NyxvWzMwXT0wLG9bMzFdPTEsb1szMl09NSxvWzMzXT0wLG9bMzRdPTUsb1szNV09NDtsZXQgYT1sLnN1YnRyYWN0KGksZSxNaHQpLGg9bC5tYWduaXR1ZGUoYSkqLjU7aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgQT1yLmxlbmd0aCxkPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLGY9bmV3IFVpbnQ4QXJyYXkoQS8zKS5maWxsKGQpO3MuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Zn0pfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6cyxpbmRpY2VzOm8scHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6bmV3IE50KGwuWkVSTyxoKSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O2dyLmdldFVuaXRCb3g9ZnVuY3Rpb24oKXtyZXR1cm4gbShuUyl8fChuUz1nci5jcmVhdGVHZW9tZXRyeShnci5mcm9tRGltZW5zaW9ucyh7ZGltZW5zaW9uczpuZXcgbCgxLDEsMSksdmVydGV4Rm9ybWF0OlN0LlBPU0lUSU9OX09OTFl9KSkpLG5TfTtjUj1ncn0pO3ZhciBvUz17fTtIZShvUyx7ZGVmYXVsdDooKT0+a2h0fSk7ZnVuY3Rpb24gUWh0KHQsZSl7cmV0dXJuIG0oZSkmJih0PWNSLnVucGFjayh0LGUpKSxjUi5jcmVhdGVHZW9tZXRyeSh0KX12YXIga2h0LHJTPVMoKCk9PntzUygpO210KCk7a2h0PVFodH0pO2Z1bmN0aW9uIFZBKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10Lm1pbmltdW0saT10Lm1heGltdW07aWYocC50eXBlT2Yub2JqZWN0KCJtaW4iLGUpLHAudHlwZU9mLm9iamVjdCgibWF4IixpKSxtKHQub2Zmc2V0QXR0cmlidXRlKSYmdC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApdGhyb3cgbmV3IFkoIkdlb21ldHJ5T2Zmc2V0QXR0cmlidXRlLlRPUCBpcyBub3QgYSBzdXBwb3J0ZWQgb3B0aW9ucy5vZmZzZXRBdHRyaWJ1dGUgZm9yIHRoaXMgZ2VvbWV0cnkuIik7dGhpcy5fbWluPWwuY2xvbmUoZSksdGhpcy5fbWF4PWwuY2xvbmUoaSksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUJveE91dGxpbmVHZW9tZXRyeSJ9dmFyIExodCxZdixWdixidixhUyxTdj1TKCgpPT57X2koKTtIdCgpO2FlKCk7b2koKTtGdCgpO210KCk7T3QoKTt5aSgpO2ppKCk7RW4oKTtnbygpO1hpKCk7TGh0PW5ldyBsO1ZBLmZyb21EaW1lbnNpb25zPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LmRpbWVuc2lvbnM7cC50eXBlT2Yub2JqZWN0KCJkaW1lbnNpb25zIixlKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy54IixlLngsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueSIsZS55LDApLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnoiLGUueiwwKTtsZXQgaT1sLm11bHRpcGx5QnlTY2FsYXIoZSwuNSxuZXcgbCk7cmV0dXJuIG5ldyBWQSh7bWluaW11bTpsLm5lZ2F0ZShpLG5ldyBsKSxtYXhpbXVtOmksb2Zmc2V0QXR0cmlidXRlOnQub2Zmc2V0QXR0cmlidXRlfSl9O1ZBLmZyb21BeGlzQWxpZ25lZEJvdW5kaW5nQm94PWZ1bmN0aW9uKHQpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoImJvdW5kaW5kQm94Iix0KSxuZXcgVkEoe21pbmltdW06dC5taW5pbXVtLG1heGltdW06dC5tYXhpbXVtfSl9O1ZBLnBhY2tlZExlbmd0aD0yKmwucGFja2VkTGVuZ3RoKzE7VkEucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGwucGFjayh0Ll9taW4sZSxpKSxsLnBhY2sodC5fbWF4LGUsaStsLnBhY2tlZExlbmd0aCksZVtpK2wucGFja2VkTGVuZ3RoKjJdPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtZdj1uZXcgbCxWdj1uZXcgbCxidj17bWluaW11bTpZdixtYXhpbXVtOlZ2LG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O1ZBLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49bC51bnBhY2sodCxlLFl2KSxzPWwudW5wYWNrKHQsZStsLnBhY2tlZExlbmd0aCxWdiksbz10W2UrbC5wYWNrZWRMZW5ndGgqMl07cmV0dXJuIG0oaSk/KGkuX21pbj1sLmNsb25lKG4saS5fbWluKSxpLl9tYXg9bC5jbG9uZShzLGkuX21heCksaS5fb2Zmc2V0QXR0cmlidXRlPW89PT0tMT92b2lkIDA6byxpKTooYnYub2Zmc2V0QXR0cmlidXRlPW89PT0tMT92b2lkIDA6byxuZXcgVkEoYnYpKX07VkEuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fbWluLGk9dC5fbWF4O2lmKGwuZXF1YWxzKGUsaSkpcmV0dXJuO2xldCBuPW5ldyB3ZSxzPW5ldyBVaW50MTZBcnJheSgxMioyKSxvPW5ldyBGbG9hdDY0QXJyYXkoOCozKTtvWzBdPWUueCxvWzFdPWUueSxvWzJdPWUueixvWzNdPWkueCxvWzRdPWUueSxvWzVdPWUueixvWzZdPWkueCxvWzddPWkueSxvWzhdPWUueixvWzldPWUueCxvWzEwXT1pLnksb1sxMV09ZS56LG9bMTJdPWUueCxvWzEzXT1lLnksb1sxNF09aS56LG9bMTVdPWkueCxvWzE2XT1lLnksb1sxN109aS56LG9bMThdPWkueCxvWzE5XT1pLnksb1syMF09aS56LG9bMjFdPWUueCxvWzIyXT1pLnksb1syM109aS56LG4ucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpvfSksc1swXT00LHNbMV09NSxzWzJdPTUsc1szXT02LHNbNF09NixzWzVdPTcsc1s2XT03LHNbN109NCxzWzhdPTAsc1s5XT0xLHNbMTBdPTEsc1sxMV09MixzWzEyXT0yLHNbMTNdPTMsc1sxNF09MyxzWzE1XT0wLHNbMTZdPTAsc1sxN109NCxzWzE4XT0xLHNbMTldPTUsc1syMF09MixzWzIxXT02LHNbMjJdPTMsc1syM109NztsZXQgcj1sLnN1YnRyYWN0KGksZSxMaHQpLGE9bC5tYWduaXR1ZGUocikqLjU7aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgaD1vLmxlbmd0aCxBPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLGQ9bmV3IFVpbnQ4QXJyYXkoaC8zKS5maWxsKEEpO24uYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6ZH0pfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6bixpbmRpY2VzOnMscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpuZXcgTnQobC5aRVJPLGEpLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07YVM9VkF9KTt2YXIgQVM9e307SGUoQVMse2RlZmF1bHQ6KCk9PndodH0pO2Z1bmN0aW9uIHlodCh0LGUpe3JldHVybiBtKGUpJiYodD1hUy51bnBhY2sodCxlKSksYVMuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHdodCxoUz1TKCgpPT57U3YoKTttdCgpO3dodD15aHR9KTtmdW5jdGlvbiBnZih0LGUsaSxuLHMsbyxyLGEsaCxBKXtsZXQgZD10K2U7bC5tdWx0aXBseUJ5U2NhbGFyKG4sTWF0aC5jb3MoZCksV0MpLGwubXVsdGlwbHlCeVNjYWxhcihpLE1hdGguc2luKGQpLE92KSxsLmFkZChXQyxPdixXQyk7bGV0IGY9TWF0aC5jb3ModCk7Zj1mKmY7bGV0IEU9TWF0aC5zaW4odCk7RT1FKkU7bGV0IFI9by9NYXRoLnNxcnQocipmK3MqRSkvYTtyZXR1cm4gQWUuZnJvbUF4aXNBbmdsZShXQyxSLEJ2KSxsdC5mcm9tUXVhdGVybmlvbihCdixHdiksbHQubXVsdGlwbHlCeVZlY3RvcihHdixoLEEpLGwubm9ybWFsaXplKEEsQSksbC5tdWx0aXBseUJ5U2NhbGFyKEEsYSxBKSxBfXZhciBsUyxXQyxPdixCdixHdixXdixEdixjUyx4aHQsUGh0LEpodCxqaHQseWEsZFM9UygoKT0+e0h0KCk7X2UoKTtkbigpOyRzKCk7bFM9e30sV0M9bmV3IGwsT3Y9bmV3IGwsQnY9bmV3IEFlLEd2PW5ldyBsdDtXdj1uZXcgbCxEdj1uZXcgbCxjUz1uZXcgbCx4aHQ9bmV3IGw7bFMucmFpc2VQb3NpdGlvbnNUb0hlaWdodD1mdW5jdGlvbih0LGUsaSl7bGV0IG49ZS5lbGxpcHNvaWQscz1lLmhlaWdodCxvPWUuZXh0cnVkZWRIZWlnaHQscj1pP3QubGVuZ3RoLzMqMjp0Lmxlbmd0aC8zLGE9bmV3IEZsb2F0NjRBcnJheShyKjMpLGg9dC5sZW5ndGgsQT1pP2g6MDtmb3IobGV0IGQ9MDtkPGg7ZCs9Myl7bGV0IGY9ZCsxLEU9ZCsyLF89bC5mcm9tQXJyYXkodCxkLFd2KTtuLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoXyxfKTtsZXQgUj1sLmNsb25lKF8sRHYpLEk9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoXyx4aHQpLEM9bC5tdWx0aXBseUJ5U2NhbGFyKEkscyxjUyk7bC5hZGQoXyxDLF8pLGkmJihsLm11bHRpcGx5QnlTY2FsYXIoSSxvLEMpLGwuYWRkKFIsQyxSKSxhW2QrQV09Ui54LGFbZitBXT1SLnksYVtFK0FdPVIueiksYVtkXT1fLngsYVtmXT1fLnksYVtFXT1fLnp9cmV0dXJuIGF9O1BodD1uZXcgbCxKaHQ9bmV3IGwsamh0PW5ldyBsO2xTLmNvbXB1dGVFbGxpcHNlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LnNlbWlNaW5vckF4aXMscz10LnNlbWlNYWpvckF4aXMsbz10LnJvdGF0aW9uLHI9dC5jZW50ZXIsYT10LmdyYW51bGFyaXR5KjgsaD1uKm4sQT1zKnMsZD1zKm4sZj1sLm1hZ25pdHVkZShyKSxFPWwubm9ybWFsaXplKHIsUGh0KSxfPWwuY3Jvc3MobC5VTklUX1oscixKaHQpO189bC5ub3JtYWxpemUoXyxfKTtsZXQgUj1sLmNyb3NzKEUsXyxqaHQpLEk9MStNYXRoLmNlaWwoTC5QSV9PVkVSX1RXTy9hKSxDPUwuUElfT1ZFUl9UV08vKEktMSksTj1MLlBJX09WRVJfVFdPLUkqQztOPDAmJihJLT1NYXRoLmNlaWwoTWF0aC5hYnMoTikvQykpO2xldCBUPTIqKEkqKEkrMikpLGI9ZT9uZXcgQXJyYXkoVCozKTp2b2lkIDAsRj0wLEI9V3YsVT1EdixRPUkqNCozLE09US0xLGs9MCx5PWk/bmV3IEFycmF5KFEpOnZvaWQgMCxjLGcsTyxELHc7Zm9yKE49TC5QSV9PVkVSX1RXTyxCPWdmKE4sbyxSLF8saCxkLEEsZixFLEIpLGUmJihiW0YrK109Qi54LGJbRisrXT1CLnksYltGKytdPUIueiksaSYmKHlbTS0tXT1CLnoseVtNLS1dPUIueSx5W00tLV09Qi54KSxOPUwuUElfT1ZFUl9UV08tQyxjPTE7YzxJKzE7KytjKXtpZihCPWdmKE4sbyxSLF8saCxkLEEsZixFLEIpLFU9Z2YoTWF0aC5QSS1OLG8sUixfLGgsZCxBLGYsRSxVKSxlKXtmb3IoYltGKytdPUIueCxiW0YrK109Qi55LGJbRisrXT1CLnosTz0yKmMrMixnPTE7ZzxPLTE7KytnKUQ9Zy8oTy0xKSx3PWwubGVycChCLFUsRCxjUyksYltGKytdPXcueCxiW0YrK109dy55LGJbRisrXT13Lno7YltGKytdPVUueCxiW0YrK109VS55LGJbRisrXT1VLnp9aSYmKHlbTS0tXT1CLnoseVtNLS1dPUIueSx5W00tLV09Qi54LHlbaysrXT1VLngseVtrKytdPVUueSx5W2srK109VS56KSxOPUwuUElfT1ZFUl9UV08tKGMrMSkqQ31mb3IoYz1JO2M+MTstLWMpe2lmKE49TC5QSV9PVkVSX1RXTy0oYy0xKSpDLEI9Z2YoLU4sbyxSLF8saCxkLEEsZixFLEIpLFU9Z2YoTitNYXRoLlBJLG8sUixfLGgsZCxBLGYsRSxVKSxlKXtmb3IoYltGKytdPUIueCxiW0YrK109Qi55LGJbRisrXT1CLnosTz0yKihjLTEpKzIsZz0xO2c8Ty0xOysrZylEPWcvKE8tMSksdz1sLmxlcnAoQixVLEQsY1MpLGJbRisrXT13LngsYltGKytdPXcueSxiW0YrK109dy56O2JbRisrXT1VLngsYltGKytdPVUueSxiW0YrK109VS56fWkmJih5W00tLV09Qi56LHlbTS0tXT1CLnkseVtNLS1dPUIueCx5W2srK109VS54LHlbaysrXT1VLnkseVtrKytdPVUueil9Tj1MLlBJX09WRVJfVFdPLEI9Z2YoLU4sbyxSLF8saCxkLEEsZixFLEIpO2xldCB4PXt9O3JldHVybiBlJiYoYltGKytdPUIueCxiW0YrK109Qi55LGJbRisrXT1CLnoseC5wb3NpdGlvbnM9Yix4Lm51bVB0cz1JKSxpJiYoeVtNLS1dPUIueix5W00tLV09Qi55LHlbTS0tXT1CLngseC5vdXRlclBvc2l0aW9ucz15KSx4fTt5YT1sU30pO2Z1bmN0aW9uIFB2KHQsZSxpKXtsZXQgbj1lLnZlcnRleEZvcm1hdCxzPWUuY2VudGVyLG89ZS5zZW1pTWFqb3JBeGlzLHI9ZS5zZW1pTWlub3JBeGlzLGE9ZS5lbGxpcHNvaWQsaD1lLnN0Um90YXRpb24sQT1pP3QubGVuZ3RoLzMqMjp0Lmxlbmd0aC8zLGQ9ZS5zaGFkb3dWb2x1bWUsZj1uLnN0P25ldyBGbG9hdDMyQXJyYXkoQSoyKTp2b2lkIDAsRT1uLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KEEqMyk6dm9pZCAwLF89bi50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoQSozKTp2b2lkIDAsUj1uLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KEEqMyk6dm9pZCAwLEk9ZD9uZXcgRmxvYXQzMkFycmF5KEEqMyk6dm9pZCAwLEM9MCxOPVF2LFQ9a3YsYj1MdixGPW5ldyBTcyhhKSxCPUYucHJvamVjdChhLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHMsTUMpLHl2KSxVPWEuc2NhbGVUb0dlb2RldGljU3VyZmFjZShzLFRmKTthLmdlb2RldGljU3VyZmFjZU5vcm1hbChVLFUpO2xldCBRPU12LE09SGh0O2lmKGghPT0wKXtsZXQgdz1BZS5mcm9tQXhpc0FuZ2xlKFUsaCxFUyk7UT1sdC5mcm9tUXVhdGVybmlvbih3LFEpLHc9QWUuZnJvbUF4aXNBbmdsZShVLC1oLEVTKSxNPWx0LmZyb21RdWF0ZXJuaW9uKHcsTSl9ZWxzZSBRPWx0LmNsb25lKGx0LklERU5USVRZLFEpLE09bHQuY2xvbmUobHQuSURFTlRJVFksTSk7bGV0IGs9bnQuZnJvbUVsZW1lbnRzKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksd3YpLHk9bnQuZnJvbUVsZW1lbnRzKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkseHYpLGM9dC5sZW5ndGgsZz1pP2M6MCxPPWcvMyoyO2ZvcihsZXQgdz0wO3c8Yzt3Kz0zKXtsZXQgeD13KzEsSD13KzIsaj1sLmZyb21BcnJheSh0LHcsVGYpO2lmKG4uc3Qpe2xldCBYPWx0Lm11bHRpcGx5QnlWZWN0b3IoUSxqLG1TKSx0dD1GLnByb2plY3QoYS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhYLE1DKSxmUyk7bC5zdWJ0cmFjdCh0dCxCLHR0KSxicy54PSh0dC54K28pLygyKm8pLGJzLnk9KHR0LnkrcikvKDIqciksay54PU1hdGgubWluKGJzLngsay54KSxrLnk9TWF0aC5taW4oYnMueSxrLnkpLHkueD1NYXRoLm1heChicy54LHkueCkseS55PU1hdGgubWF4KGJzLnkseS55KSxpJiYoZltDK09dPWJzLngsZltDKzErT109YnMueSksZltDKytdPWJzLngsZltDKytdPWJzLnl9KG4ubm9ybWFsfHxuLnRhbmdlbnR8fG4uYml0YW5nZW50fHxkKSYmKE49YS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaixOKSxkJiYoSVt3K2ddPS1OLngsSVt4K2ddPS1OLnksSVtIK2ddPS1OLnopLChuLm5vcm1hbHx8bi50YW5nZW50fHxuLmJpdGFuZ2VudCkmJigobi50YW5nZW50fHxuLmJpdGFuZ2VudCkmJihUPWwubm9ybWFsaXplKGwuY3Jvc3MobC5VTklUX1osTixUKSxUKSxsdC5tdWx0aXBseUJ5VmVjdG9yKE0sVCxUKSksbi5ub3JtYWwmJihFW3ddPU4ueCxFW3hdPU4ueSxFW0hdPU4ueixpJiYoRVt3K2ddPS1OLngsRVt4K2ddPS1OLnksRVtIK2ddPS1OLnopKSxuLnRhbmdlbnQmJihfW3ddPVQueCxfW3hdPVQueSxfW0hdPVQueixpJiYoX1t3K2ddPS1ULngsX1t4K2ddPS1ULnksX1tIK2ddPS1ULnopKSxuLmJpdGFuZ2VudCYmKGI9bC5ub3JtYWxpemUobC5jcm9zcyhOLFQsYiksYiksUlt3XT1iLngsUlt4XT1iLnksUltIXT1iLnosaSYmKFJbdytnXT1iLngsUlt4K2ddPWIueSxSW0grZ109Yi56KSkpKX1pZihuLnN0KXtjPWYubGVuZ3RoO2ZvcihsZXQgdz0wO3c8Yzt3Kz0yKWZbd109KGZbd10tay54KS8oeS54LWsueCksZlt3KzFdPShmW3crMV0tay55KS8oeS55LWsueSl9bGV0IEQ9bmV3IHdlO2lmKG4ucG9zaXRpb24pe2xldCB3PXlhLnJhaXNlUG9zaXRpb25zVG9IZWlnaHQodCxlLGkpO0QucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp3fSl9aWYobi5zdCYmKEQuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmZ9KSksbi5ub3JtYWwmJihELm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RX0pKSxuLnRhbmdlbnQmJihELnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSksbi5iaXRhbmdlbnQmJihELmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Un0pKSxkJiYoRC5leHRydWRlRGlyZWN0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpJfSkpLGkmJm0oZS5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1uZXcgVWludDhBcnJheShBKTtpZihlLm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUCl3PXcuZmlsbCgxLDAsQS8yKTtlbHNle2xldCB4PWUub2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjE7dz13LmZpbGwoeCl9RC5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczp3fSl9cmV0dXJuIER9ZnVuY3Rpb24gSnYodCl7bGV0IGU9bmV3IEFycmF5KDEyKih0Kih0KzEpKS02KSxpPTAsbixzLG8scixhO2ZvcihuPTAsbz0xLHI9MDtyPDM7cisrKWVbaSsrXT1vKyssZVtpKytdPW4sZVtpKytdPW87Zm9yKHI9MjtyPHQrMTsrK3Ipe2ZvcihvPXIqKHIrMSktMSxuPShyLTEpKnItMSxlW2krK109bysrLGVbaSsrXT1uLGVbaSsrXT1vLHM9MipyLGE9MDthPHMtMTsrK2EpZVtpKytdPW8sZVtpKytdPW4rKyxlW2krK109bixlW2krK109bysrLGVbaSsrXT1uLGVbaSsrXT1vO2VbaSsrXT1vKyssZVtpKytdPW4sZVtpKytdPW99Zm9yKHM9dCoyLCsrbywrK24scj0wO3I8cy0xOysrcillW2krK109byxlW2krK109bisrLGVbaSsrXT1uLGVbaSsrXT1vKyssZVtpKytdPW4sZVtpKytdPW87Zm9yKGVbaSsrXT1vLGVbaSsrXT1uKyssZVtpKytdPW4sZVtpKytdPW8rKyxlW2krK109bisrLGVbaSsrXT1uLCsrbixyPXQtMTtyPjE7LS1yKXtmb3IoZVtpKytdPW4rKyxlW2krK109bixlW2krK109byxzPTIqcixhPTA7YTxzLTE7KythKWVbaSsrXT1vLGVbaSsrXT1uKyssZVtpKytdPW4sZVtpKytdPW8rKyxlW2krK109bixlW2krK109bztlW2krK109bisrLGVbaSsrXT1uKyssZVtpKytdPW8rK31mb3Iocj0wO3I8MztyKyspZVtpKytdPW4rKyxlW2krK109bixlW2krK109bztyZXR1cm4gZX1mdW5jdGlvbiB2aHQodCl7bGV0IGU9dC5jZW50ZXI7QWQ9bC5tdWx0aXBseUJ5U2NhbGFyKHQuZWxsaXBzb2lkLmdlb2RldGljU3VyZmFjZU5vcm1hbChlLEFkKSx0LmhlaWdodCxBZCksQWQ9bC5hZGQoZSxBZCxBZCk7bGV0IGk9bmV3IE50KEFkLHQuc2VtaU1ham9yQXhpcyksbj15YS5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucyh0LCEwLCExKSxzPW4ucG9zaXRpb25zLG89bi5udW1QdHMscj1QdihzLHQsITEpLGE9SnYobyk7cmV0dXJuIGE9dGUuY3JlYXRlVHlwZWRBcnJheShzLmxlbmd0aC8zLGEpLHtib3VuZGluZ1NwaGVyZTppLGF0dHJpYnV0ZXM6cixpbmRpY2VzOmF9fWZ1bmN0aW9uIHpodCh0LGUpe2xldCBpPWUudmVydGV4Rm9ybWF0LG49ZS5jZW50ZXIscz1lLnNlbWlNYWpvckF4aXMsbz1lLnNlbWlNaW5vckF4aXMscj1lLmVsbGlwc29pZCxhPWUuaGVpZ2h0LGg9ZS5leHRydWRlZEhlaWdodCxBPWUuc3RSb3RhdGlvbixkPXQubGVuZ3RoLzMqMixmPW5ldyBGbG9hdDY0QXJyYXkoZCozKSxFPWkuc3Q/bmV3IEZsb2F0MzJBcnJheShkKjIpOnZvaWQgMCxfPWkubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoZCozKTp2b2lkIDAsUj1pLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShkKjMpOnZvaWQgMCxJPWkuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoZCozKTp2b2lkIDAsQz1lLnNoYWRvd1ZvbHVtZSxOPUM/bmV3IEZsb2F0MzJBcnJheShkKjMpOnZvaWQgMCxUPTAsYj1RdixGPWt2LEI9THYsVT1uZXcgU3MociksUT1VLnByb2plY3Qoci5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhuLE1DKSx5diksTT1yLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UobixUZik7ci5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoTSxNKTtsZXQgaz1BZS5mcm9tQXhpc0FuZ2xlKE0sQSxFUykseT1sdC5mcm9tUXVhdGVybmlvbihrLE12KSxjPW50LmZyb21FbGVtZW50cyhOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHd2KSxnPW50LmZyb21FbGVtZW50cyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHh2KSxPPXQubGVuZ3RoLEQ9Ty8zKjI7Zm9yKGxldCB4PTA7eDxPO3grPTMpe2xldCBIPXgrMSxqPXgrMixYPWwuZnJvbUFycmF5KHQseCxUZiksdHQ7aWYoaS5zdCl7bGV0IEl0PWx0Lm11bHRpcGx5QnlWZWN0b3IoeSxYLG1TKSxndD1VLnByb2plY3Qoci5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhJdCxNQyksZlMpO2wuc3VidHJhY3QoZ3QsUSxndCksYnMueD0oZ3QueCtzKS8oMipzKSxicy55PShndC55K28pLygyKm8pLGMueD1NYXRoLm1pbihicy54LGMueCksYy55PU1hdGgubWluKGJzLnksYy55KSxnLng9TWF0aC5tYXgoYnMueCxnLngpLGcueT1NYXRoLm1heChicy55LGcueSksRVtUK0RdPWJzLngsRVtUKzErRF09YnMueSxFW1QrK109YnMueCxFW1QrK109YnMueX1YPXIuc2NhbGVUb0dlb2RldGljU3VyZmFjZShYLFgpLHR0PWwuY2xvbmUoWCxtUyksYj1yLmdlb2RldGljU3VyZmFjZU5vcm1hbChYLGIpLEMmJihOW3grT109LWIueCxOW0grT109LWIueSxOW2orT109LWIueik7bGV0IEc9bC5tdWx0aXBseUJ5U2NhbGFyKGIsYSxVdik7aWYoWD1sLmFkZChYLEcsWCksRz1sLm11bHRpcGx5QnlTY2FsYXIoYixoLEcpLHR0PWwuYWRkKHR0LEcsdHQpLGkucG9zaXRpb24mJihmW3grT109dHQueCxmW0grT109dHQueSxmW2orT109dHQueixmW3hdPVgueCxmW0hdPVgueSxmW2pdPVgueiksaS5ub3JtYWx8fGkudGFuZ2VudHx8aS5iaXRhbmdlbnQpe0I9bC5jbG9uZShiLEIpO2xldCBJdD1sLmZyb21BcnJheSh0LCh4KzMpJU8sVXYpO2wuc3VidHJhY3QoSXQsWCxJdCk7bGV0IGd0PWwuc3VidHJhY3QodHQsWCxmUyk7Yj1sLm5vcm1hbGl6ZShsLmNyb3NzKGd0LEl0LGIpLGIpLGkubm9ybWFsJiYoX1t4XT1iLngsX1tIXT1iLnksX1tqXT1iLnosX1t4K09dPWIueCxfW0grT109Yi55LF9baitPXT1iLnopLGkudGFuZ2VudCYmKEY9bC5ub3JtYWxpemUobC5jcm9zcyhCLGIsRiksRiksUlt4XT1GLngsUltIXT1GLnksUltqXT1GLnosUlt4K09dPUYueCxSW3grMStPXT1GLnksUlt4KzIrT109Ri56KSxpLmJpdGFuZ2VudCYmKElbeF09Qi54LElbSF09Qi55LElbal09Qi56LElbeCtPXT1CLngsSVtIK09dPUIueSxJW2orT109Qi56KX19aWYoaS5zdCl7Tz1FLmxlbmd0aDtmb3IobGV0IHg9MDt4PE87eCs9MilFW3hdPShFW3hdLWMueCkvKGcueC1jLngpLEVbeCsxXT0oRVt4KzFdLWMueSkvKGcueS1jLnkpfWxldCB3PW5ldyB3ZTtpZihpLnBvc2l0aW9uJiYody5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmZ9KSksaS5zdCYmKHcuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkV9KSksaS5ub3JtYWwmJih3Lm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pKSxpLnRhbmdlbnQmJih3LnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlJ9KSksaS5iaXRhbmdlbnQmJih3LmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6SX0pKSxDJiYody5leHRydWRlRGlyZWN0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpOfSkpLG0oZS5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgeD1uZXcgVWludDhBcnJheShkKTtpZihlLm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUCl4PXguZmlsbCgxLDAsZC8yKTtlbHNle2xldCBIPWUub2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjE7eD14LmZpbGwoSCl9dy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczp4fSl9cmV0dXJuIHd9ZnVuY3Rpb24gS2h0KHQpe2xldCBlPXQubGVuZ3RoLzMsaT10ZS5jcmVhdGVUeXBlZEFycmF5KGUsZSo2KSxuPTA7Zm9yKGxldCBzPTA7czxlO3MrKyl7bGV0IG89cyxyPXMrZSxhPShvKzEpJWUsaD1hK2U7aVtuKytdPW8saVtuKytdPXIsaVtuKytdPWEsaVtuKytdPWEsaVtuKytdPXIsaVtuKytdPWh9cmV0dXJuIGl9ZnVuY3Rpb24gWGh0KHQpe2xldCBlPXQuY2VudGVyLGk9dC5lbGxpcHNvaWQsbj10LnNlbWlNYWpvckF4aXMscz1sLm11bHRpcGx5QnlTY2FsYXIoaS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxUZiksdC5oZWlnaHQsVGYpO0RDLmNlbnRlcj1sLmFkZChlLHMsREMuY2VudGVyKSxEQy5yYWRpdXM9bixzPWwubXVsdGlwbHlCeVNjYWxhcihpLmdlb2RldGljU3VyZmFjZU5vcm1hbChlLHMpLHQuZXh0cnVkZWRIZWlnaHQscyksVUMuY2VudGVyPWwuYWRkKGUscyxVQy5jZW50ZXIpLFVDLnJhZGl1cz1uO2xldCBvPXlhLmNvbXB1dGVFbGxpcHNlUG9zaXRpb25zKHQsITAsITApLHI9by5wb3NpdGlvbnMsYT1vLm51bVB0cyxoPW8ub3V0ZXJQb3NpdGlvbnMsQT1OdC51bmlvbihEQyxVQyksZD1QdihyLHQsITApLGY9SnYoYSksRT1mLmxlbmd0aDtmLmxlbmd0aD1FKjI7bGV0IF89ci5sZW5ndGgvMztmb3IobGV0IEY9MDtGPEU7Ris9MylmW0YrRV09ZltGKzJdK18sZltGKzErRV09ZltGKzFdK18sZltGKzIrRV09ZltGXStfO2xldCBSPXRlLmNyZWF0ZVR5cGVkQXJyYXkoXyoyLzMsZiksST1uZXcgc2Uoe2F0dHJpYnV0ZXM6ZCxpbmRpY2VzOlIscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVN9KSxDPXpodChoLHQpO2Y9S2h0KGgpO2xldCBOPXRlLmNyZWF0ZVR5cGVkQXJyYXkoaC5sZW5ndGgqMi8zLGYpLFQ9bmV3IHNlKHthdHRyaWJ1dGVzOkMsaW5kaWNlczpOLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfSksYj13aS5jb21iaW5lSW5zdGFuY2VzKFtuZXcgTG4oe2dlb21ldHJ5Okl9KSxuZXcgTG4oe2dlb21ldHJ5OlR9KV0pO3JldHVybntib3VuZGluZ1NwaGVyZTpBLGF0dHJpYnV0ZXM6YlswXS5hdHRyaWJ1dGVzLGluZGljZXM6YlswXS5pbmRpY2VzfX1mdW5jdGlvbiBqdih0LGUsaSxuLHMsbyxyKXtsZXQgaD15YS5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucyh7Y2VudGVyOnQsc2VtaU1ham9yQXhpczplLHNlbWlNaW5vckF4aXM6aSxyb3RhdGlvbjpuLGdyYW51bGFyaXR5OnN9LCExLCEwKS5vdXRlclBvc2l0aW9ucyxBPWgubGVuZ3RoLzMsZD1uZXcgQXJyYXkoQSk7Zm9yKGxldCBFPTA7RTxBOysrRSlkW0VdPWwuZnJvbUFycmF5KGgsRSozKTtsZXQgZj1YdC5mcm9tQ2FydGVzaWFuQXJyYXkoZCxvLHIpO3JldHVybiBmLndpZHRoPkwuUEkmJihmLm5vcnRoPWYubm9ydGg+MD9MLlBJX09WRVJfVFdPLUwuRVBTSUxPTjc6Zi5ub3J0aCxmLnNvdXRoPWYuc291dGg8MD9MLkVQU0lMT043LUwuUElfT1ZFUl9UV086Zi5zb3V0aCxmLmVhc3Q9TC5QSSxmLndlc3Q9LUwuUEkpLGZ9ZnVuY3Rpb24gT0EodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuY2VudGVyLGk9Wih0LmVsbGlwc29pZCxvdC5XR1M4NCksbj10LnNlbWlNYWpvckF4aXMscz10LnNlbWlNaW5vckF4aXMsbz1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHI9Wih0LnZlcnRleEZvcm1hdCxTdC5ERUZBVUxUKTtpZihwLmRlZmluZWQoIm9wdGlvbnMuY2VudGVyIixlKSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMuc2VtaU1ham9yQXhpcyIsbikscC50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNaW5vckF4aXMiLHMpLG48cyl0aHJvdyBuZXcgWSgic2VtaU1ham9yQXhpcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc2VtaU1pbm9yQXhpcy4iKTtpZihvPD0wKXRocm93IG5ldyBZKCJncmFudWxhcml0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2xldCBhPVoodC5oZWlnaHQsMCksaD1aKHQuZXh0cnVkZWRIZWlnaHQsYSk7dGhpcy5fY2VudGVyPWwuY2xvbmUoZSksdGhpcy5fc2VtaU1ham9yQXhpcz1uLHRoaXMuX3NlbWlNaW5vckF4aXM9cyx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoaSksdGhpcy5fcm90YXRpb249Wih0LnJvdGF0aW9uLDApLHRoaXMuX3N0Um90YXRpb249Wih0LnN0Um90YXRpb24sMCksdGhpcy5faGVpZ2h0PU1hdGgubWF4KGgsYSksdGhpcy5fZ3JhbnVsYXJpdHk9byx0aGlzLl92ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUociksdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oaCxhKSx0aGlzLl9zaGFkb3dWb2x1bWU9Wih0LnNoYWRvd1ZvbHVtZSwhMSksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlRWxsaXBzZUdlb21ldHJ5Iix0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXZvaWQgMH1mdW5jdGlvbiBxaHQodCl7bGV0IGU9LXQuX3N0Um90YXRpb247aWYoZT09PTApcmV0dXJuWzAsMCwwLDEsMSwwXTtsZXQgbj15YS5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucyh7Y2VudGVyOnQuX2NlbnRlcixzZW1pTWFqb3JBeGlzOnQuX3NlbWlNYWpvckF4aXMsc2VtaU1pbm9yQXhpczp0Ll9zZW1pTWlub3JBeGlzLHJvdGF0aW9uOnQuX3JvdGF0aW9uLGdyYW51bGFyaXR5OnQuX2dyYW51bGFyaXR5fSwhMSwhMCkub3V0ZXJQb3NpdGlvbnMscz1uLmxlbmd0aC8zLG89bmV3IEFycmF5KHMpO2ZvcihsZXQgaD0wO2g8czsrK2gpb1toXT1sLmZyb21BcnJheShuLGgqMyk7bGV0IHI9dC5fZWxsaXBzb2lkLGE9dC5yZWN0YW5nbGU7cmV0dXJuIHNlLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzKG8sZSxyLGEpfXZhciBUZixtUyxmUyxVdixicyxNdixIaHQsRVMsUXYsa3YsTHYsTUMseXYsd3YseHYsQWQsREMsVUMsSHYsdnYsenYsU0Esd2EsX1M9UygoKT0+e19pKCk7WGUoKTtIdCgpO3JpKCk7YWUoKTtvaSgpO0Z0KCk7bXQoKTtPdCgpO2RTKCk7T2UoKTt6QSgpO3lpKCk7amkoKTtFbigpO3VBKCk7Z28oKTtnQSgpO0RpKCk7X2UoKTtkbigpO1hpKCk7JHMoKTtwbigpO0xzKCk7VGY9bmV3IGwsbVM9bmV3IGwsZlM9bmV3IGwsVXY9bmV3IGwsYnM9bmV3IG50LE12PW5ldyBsdCxIaHQ9bmV3IGx0LEVTPW5ldyBBZSxRdj1uZXcgbCxrdj1uZXcgbCxMdj1uZXcgbCxNQz1uZXcgdXQseXY9bmV3IGwsd3Y9bmV3IG50LHh2PW5ldyBudDtBZD1uZXcgbDtEQz1uZXcgTnQsVUM9bmV3IE50O09BLnBhY2tlZExlbmd0aD1sLnBhY2tlZExlbmd0aCtvdC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoKzk7T0EucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGwucGFjayh0Ll9jZW50ZXIsZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxTdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPVN0LnBhY2tlZExlbmd0aCxlW2krK109dC5fc2VtaU1ham9yQXhpcyxlW2krK109dC5fc2VtaU1pbm9yQXhpcyxlW2krK109dC5fcm90YXRpb24sZVtpKytdPXQuX3N0Um90YXRpb24sZVtpKytdPXQuX2hlaWdodCxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbaSsrXT10Ll9zaGFkb3dWb2x1bWU/MTowLGVbaV09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O0h2PW5ldyBsLHZ2PW5ldyBvdCx6dj1uZXcgU3QsU0E9e2NlbnRlcjpIdixlbGxpcHNvaWQ6dnYsdmVydGV4Rm9ybWF0Onp2LHNlbWlNYWpvckF4aXM6dm9pZCAwLHNlbWlNaW5vckF4aXM6dm9pZCAwLHJvdGF0aW9uOnZvaWQgMCxzdFJvdGF0aW9uOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsc2hhZG93Vm9sdW1lOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtPQS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPWwudW5wYWNrKHQsZSxIdik7ZSs9bC5wYWNrZWRMZW5ndGg7bGV0IHM9b3QudW5wYWNrKHQsZSx2dik7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPVN0LnVucGFjayh0LGUsenYpO2UrPVN0LnBhY2tlZExlbmd0aDtsZXQgcj10W2UrK10sYT10W2UrK10saD10W2UrK10sQT10W2UrK10sZD10W2UrK10sZj10W2UrK10sRT10W2UrK10sXz10W2UrK109PT0xLFI9dFtlXTtyZXR1cm4gbShpKT8oaS5fY2VudGVyPWwuY2xvbmUobixpLl9jZW50ZXIpLGkuX2VsbGlwc29pZD1vdC5jbG9uZShzLGkuX2VsbGlwc29pZCksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKG8saS5fdmVydGV4Rm9ybWF0KSxpLl9zZW1pTWFqb3JBeGlzPXIsaS5fc2VtaU1pbm9yQXhpcz1hLGkuX3JvdGF0aW9uPWgsaS5fc3RSb3RhdGlvbj1BLGkuX2hlaWdodD1kLGkuX2dyYW51bGFyaXR5PWYsaS5fZXh0cnVkZWRIZWlnaHQ9RSxpLl9zaGFkb3dWb2x1bWU9XyxpLl9vZmZzZXRBdHRyaWJ1dGU9Uj09PS0xP3ZvaWQgMDpSLGkpOihTQS5oZWlnaHQ9ZCxTQS5leHRydWRlZEhlaWdodD1FLFNBLmdyYW51bGFyaXR5PWYsU0Euc3RSb3RhdGlvbj1BLFNBLnJvdGF0aW9uPWgsU0Euc2VtaU1ham9yQXhpcz1yLFNBLnNlbWlNaW5vckF4aXM9YSxTQS5zaGFkb3dWb2x1bWU9XyxTQS5vZmZzZXRBdHRyaWJ1dGU9Uj09PS0xP3ZvaWQgMDpSLG5ldyBPQShTQSkpfTtPQS5jb21wdXRlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBpPXQuY2VudGVyLG49Wih0LmVsbGlwc29pZCxvdC5XR1M4NCkscz10LnNlbWlNYWpvckF4aXMsbz10LnNlbWlNaW5vckF4aXMscj1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLGE9Wih0LnJvdGF0aW9uLDApO2lmKHAuZGVmaW5lZCgib3B0aW9ucy5jZW50ZXIiLGkpLHAudHlwZU9mLm51bWJlcigib3B0aW9ucy5zZW1pTWFqb3JBeGlzIixzKSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMuc2VtaU1pbm9yQXhpcyIsbyksczxvKXRocm93IG5ldyBZKCJzZW1pTWFqb3JBeGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZW1pTWlub3JBeGlzLiIpO2lmKHI8PTApdGhyb3cgbmV3IFkoImdyYW51bGFyaXR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7cmV0dXJuIGp2KGkscyxvLGEscixuLGUpfTtPQS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtpZih0Ll9zZW1pTWFqb3JBeGlzPD0wfHx0Ll9zZW1pTWlub3JBeGlzPD0wKXJldHVybjtsZXQgZT10Ll9oZWlnaHQsaT10Ll9leHRydWRlZEhlaWdodCxuPSFMLmVxdWFsc0Vwc2lsb24oZSxpLDAsTC5FUFNJTE9OMik7dC5fY2VudGVyPXQuX2VsbGlwc29pZC5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQuX2NlbnRlcix0Ll9jZW50ZXIpO2xldCBzPXtjZW50ZXI6dC5fY2VudGVyLHNlbWlNYWpvckF4aXM6dC5fc2VtaU1ham9yQXhpcyxzZW1pTWlub3JBeGlzOnQuX3NlbWlNaW5vckF4aXMsZWxsaXBzb2lkOnQuX2VsbGlwc29pZCxyb3RhdGlvbjp0Ll9yb3RhdGlvbixoZWlnaHQ6ZSxncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eSx2ZXJ0ZXhGb3JtYXQ6dC5fdmVydGV4Rm9ybWF0LHN0Um90YXRpb246dC5fc3RSb3RhdGlvbn0sbztpZihuKXMuZXh0cnVkZWRIZWlnaHQ9aSxzLnNoYWRvd1ZvbHVtZT10Ll9zaGFkb3dWb2x1bWUscy5vZmZzZXRBdHRyaWJ1dGU9dC5fb2Zmc2V0QXR0cmlidXRlLG89WGh0KHMpO2Vsc2UgaWYobz12aHQocyksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgcj1vLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxhPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLGg9bmV3IFVpbnQ4QXJyYXkoci8zKS5maWxsKGEpO28uYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpofSl9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpvLmF0dHJpYnV0ZXMsaW5kaWNlczpvLmluZGljZXMscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6by5ib3VuZGluZ1NwaGVyZSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O09BLmNyZWF0ZVNoYWRvd1ZvbHVtZT1mdW5jdGlvbih0LGUsaSl7bGV0IG49dC5fZ3JhbnVsYXJpdHkscz10Ll9lbGxpcHNvaWQsbz1lKG4scykscj1pKG4scyk7cmV0dXJuIG5ldyBPQSh7Y2VudGVyOnQuX2NlbnRlcixzZW1pTWFqb3JBeGlzOnQuX3NlbWlNYWpvckF4aXMsc2VtaU1pbm9yQXhpczp0Ll9zZW1pTWlub3JBeGlzLGVsbGlwc29pZDpzLHJvdGF0aW9uOnQuX3JvdGF0aW9uLHN0Um90YXRpb246dC5fc3RSb3RhdGlvbixncmFudWxhcml0eTpuLGV4dHJ1ZGVkSGVpZ2h0Om8saGVpZ2h0OnIsdmVydGV4Rm9ybWF0OlN0LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE9BLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9yZWN0YW5nbGUpfHwodGhpcy5fcmVjdGFuZ2xlPWp2KHRoaXMuX2NlbnRlcix0aGlzLl9zZW1pTWFqb3JBeGlzLHRoaXMuX3NlbWlNaW5vckF4aXMsdGhpcy5fcm90YXRpb24sdGhpcy5fZ3JhbnVsYXJpdHksdGhpcy5fZWxsaXBzb2lkKSksdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXFodCh0aGlzKSksdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7d2E9T0F9KTtmdW5jdGlvbiBUaCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5yYWRpdXM7cC50eXBlT2YubnVtYmVyKCJyYWRpdXMiLGUpO2xldCBpPXtjZW50ZXI6dC5jZW50ZXIsc2VtaU1ham9yQXhpczplLHNlbWlNaW5vckF4aXM6ZSxlbGxpcHNvaWQ6dC5lbGxpcHNvaWQsaGVpZ2h0OnQuaGVpZ2h0LGV4dHJ1ZGVkSGVpZ2h0OnQuZXh0cnVkZWRIZWlnaHQsZ3JhbnVsYXJpdHk6dC5ncmFudWxhcml0eSx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXQsc3RSb3RhdGlvbjp0LnN0Um90YXRpb24sc2hhZG93Vm9sdW1lOnQuc2hhZG93Vm9sdW1lfTt0aGlzLl9lbGxpcHNlR2VvbWV0cnk9bmV3IHdhKGkpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNpcmNsZUdlb21ldHJ5In12YXIgJGh0LE5vLFJTLEt2PVMoKCk9PntIdCgpO2FlKCk7RnQoKTttdCgpO19TKCk7T2UoKTtMcygpO1RoLnBhY2tlZExlbmd0aD13YS5wYWNrZWRMZW5ndGg7VGgucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHdhLnBhY2sodC5fZWxsaXBzZUdlb21ldHJ5LGUsaSl9OyRodD1uZXcgd2Eoe2NlbnRlcjpuZXcgbCxzZW1pTWFqb3JBeGlzOjEsc2VtaU1pbm9yQXhpczoxfSksTm89e2NlbnRlcjpuZXcgbCxyYWRpdXM6dm9pZCAwLGVsbGlwc29pZDpvdC5jbG9uZShvdC5VTklUX1NQSEVSRSksaGVpZ2h0OnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwLHZlcnRleEZvcm1hdDpuZXcgU3Qsc3RSb3RhdGlvbjp2b2lkIDAsc2VtaU1ham9yQXhpczp2b2lkIDAsc2VtaU1pbm9yQXhpczp2b2lkIDAsc2hhZG93Vm9sdW1lOnZvaWQgMH07VGgudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj13YS51bnBhY2sodCxlLCRodCk7cmV0dXJuIE5vLmNlbnRlcj1sLmNsb25lKG4uX2NlbnRlcixOby5jZW50ZXIpLE5vLmVsbGlwc29pZD1vdC5jbG9uZShuLl9lbGxpcHNvaWQsTm8uZWxsaXBzb2lkKSxOby5oZWlnaHQ9bi5faGVpZ2h0LE5vLmV4dHJ1ZGVkSGVpZ2h0PW4uX2V4dHJ1ZGVkSGVpZ2h0LE5vLmdyYW51bGFyaXR5PW4uX2dyYW51bGFyaXR5LE5vLnZlcnRleEZvcm1hdD1TdC5jbG9uZShuLl92ZXJ0ZXhGb3JtYXQsTm8udmVydGV4Rm9ybWF0KSxOby5zdFJvdGF0aW9uPW4uX3N0Um90YXRpb24sTm8uc2hhZG93Vm9sdW1lPW4uX3NoYWRvd1ZvbHVtZSxtKGkpPyhOby5zZW1pTWFqb3JBeGlzPW4uX3NlbWlNYWpvckF4aXMsTm8uc2VtaU1pbm9yQXhpcz1uLl9zZW1pTWlub3JBeGlzLGkuX2VsbGlwc2VHZW9tZXRyeT1uZXcgd2EoTm8pLGkpOihOby5yYWRpdXM9bi5fc2VtaU1ham9yQXhpcyxuZXcgVGgoTm8pKX07VGguY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIHdhLmNyZWF0ZUdlb21ldHJ5KHQuX2VsbGlwc2VHZW9tZXRyeSl9O1RoLmNyZWF0ZVNoYWRvd1ZvbHVtZT1mdW5jdGlvbih0LGUsaSl7bGV0IG49dC5fZWxsaXBzZUdlb21ldHJ5Ll9ncmFudWxhcml0eSxzPXQuX2VsbGlwc2VHZW9tZXRyeS5fZWxsaXBzb2lkLG89ZShuLHMpLHI9aShuLHMpO3JldHVybiBuZXcgVGgoe2NlbnRlcjp0Ll9lbGxpcHNlR2VvbWV0cnkuX2NlbnRlcixyYWRpdXM6dC5fZWxsaXBzZUdlb21ldHJ5Ll9zZW1pTWFqb3JBeGlzLGVsbGlwc29pZDpzLHN0Um90YXRpb246dC5fZWxsaXBzZUdlb21ldHJ5Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om4sZXh0cnVkZWRIZWlnaHQ6byxoZWlnaHQ6cix2ZXJ0ZXhGb3JtYXQ6U3QuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVGgucHJvdG90eXBlLHtyZWN0YW5nbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNlR2VvbWV0cnkucmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc2VHZW9tZXRyeS50ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzfX19KTtSUz1UaH0pO3ZhciBaUz17fTtIZShaUyx7ZGVmYXVsdDooKT0+ZWN0fSk7ZnVuY3Rpb24gdGN0KHQsZSl7cmV0dXJuIG0oZSkmJih0PVJTLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNlR2VvbWV0cnkuX2NlbnRlcj1sLmNsb25lKHQuX2VsbGlwc2VHZW9tZXRyeS5fY2VudGVyKSx0Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCksUlMuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGVjdCxJUz1TKCgpPT57SHQoKTtLdigpO210KCk7T2UoKTtlY3Q9dGN0fSk7ZnVuY3Rpb24gaWN0KHQpe2xldCBlPXQuY2VudGVyO2hkPWwubXVsdGlwbHlCeVNjYWxhcih0LmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxoZCksdC5oZWlnaHQsaGQpLGhkPWwuYWRkKGUsaGQsaGQpO2xldCBpPW5ldyBOdChoZCx0LnNlbWlNYWpvckF4aXMpLG49eWEuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMSwhMCkub3V0ZXJQb3NpdGlvbnMscz1uZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6eWEucmFpc2VQb3NpdGlvbnNUb0hlaWdodChuLHQsITEpfSl9KSxvPW4ubGVuZ3RoLzMscj10ZS5jcmVhdGVUeXBlZEFycmF5KG8sbyoyKSxhPTA7Zm9yKGxldCBoPTA7aDxvOysraClyW2ErK109aCxyW2ErK109KGgrMSklbztyZXR1cm57Ym91bmRpbmdTcGhlcmU6aSxhdHRyaWJ1dGVzOnMsaW5kaWNlczpyfX1mdW5jdGlvbiBuY3QodCl7bGV0IGU9dC5jZW50ZXIsaT10LmVsbGlwc29pZCxuPXQuc2VtaU1ham9yQXhpcyxzPWwubXVsdGlwbHlCeVNjYWxhcihpLmdlb2RldGljU3VyZmFjZU5vcm1hbChlLFh2KSx0LmhlaWdodCxYdik7UUMuY2VudGVyPWwuYWRkKGUscyxRQy5jZW50ZXIpLFFDLnJhZGl1cz1uLHM9bC5tdWx0aXBseUJ5U2NhbGFyKGkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGUscyksdC5leHRydWRlZEhlaWdodCxzKSxrQy5jZW50ZXI9bC5hZGQoZSxzLGtDLmNlbnRlciksa0MucmFkaXVzPW47bGV0IG89eWEuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMSwhMCkub3V0ZXJQb3NpdGlvbnMscj1uZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6eWEucmFpc2VQb3NpdGlvbnNUb0hlaWdodChvLHQsITApfSl9KTtvPXIucG9zaXRpb24udmFsdWVzO2xldCBhPU50LnVuaW9uKFFDLGtDKSxoPW8ubGVuZ3RoLzM7aWYobSh0Lm9mZnNldEF0dHJpYnV0ZSkpe2xldCBSPW5ldyBVaW50OEFycmF5KGgpO2lmKHQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKVI9Ui5maWxsKDEsMCxoLzIpO2Vsc2V7bGV0IEk9dC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MTtSPVIuZmlsbChJKX1yLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOlJ9KX1sZXQgQT1aKHQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzLDE2KTtBPUwuY2xhbXAoQSwwLGgvMik7bGV0IGQ9dGUuY3JlYXRlVHlwZWRBcnJheShoLGgqMitBKjIpO2gvPTI7bGV0IGY9MCxFO2ZvcihFPTA7RTxoOysrRSlkW2YrK109RSxkW2YrK109KEUrMSklaCxkW2YrK109RStoLGRbZisrXT0oRSsxKSVoK2g7bGV0IF87aWYoQT4wKXtsZXQgUj1NYXRoLm1pbihBLGgpO189TWF0aC5yb3VuZChoL1IpO2xldCBJPU1hdGgubWluKF8qQSxoKTtmb3IoRT0wO0U8STtFKz1fKWRbZisrXT1FLGRbZisrXT1FK2h9cmV0dXJue2JvdW5kaW5nU3BoZXJlOmEsYXR0cmlidXRlczpyLGluZGljZXM6ZH19ZnVuY3Rpb24gTmYodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQuY2VudGVyLGk9Wih0LmVsbGlwc29pZCxvdC5XR1M4NCksbj10LnNlbWlNYWpvckF4aXMscz10LnNlbWlNaW5vckF4aXMsbz1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJjZW50ZXIgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IFkoInNlbWlNYWpvckF4aXMgaXMgcmVxdWlyZWQuIik7aWYoIW0ocykpdGhyb3cgbmV3IFkoInNlbWlNaW5vckF4aXMgaXMgcmVxdWlyZWQuIik7aWYobjxzKXRocm93IG5ldyBZKCJzZW1pTWFqb3JBeGlzIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZW1pTWlub3JBeGlzLiIpO2lmKG88PTApdGhyb3cgbmV3IFkoImdyYW51bGFyaXR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7bGV0IHI9Wih0LmhlaWdodCwwKSxhPVoodC5leHRydWRlZEhlaWdodCxyKTt0aGlzLl9jZW50ZXI9bC5jbG9uZShlKSx0aGlzLl9zZW1pTWFqb3JBeGlzPW4sdGhpcy5fc2VtaU1pbm9yQXhpcz1zLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShpKSx0aGlzLl9yb3RhdGlvbj1aKHQucm90YXRpb24sMCksdGhpcy5faGVpZ2h0PU1hdGgubWF4KGEsciksdGhpcy5fZ3JhbnVsYXJpdHk9byx0aGlzLl9leHRydWRlZEhlaWdodD1NYXRoLm1pbihhLHIpLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lcz1NYXRoLm1heChaKHQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzLDE2KSwwKSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlRWxsaXBzZU91dGxpbmVHZW9tZXRyeSJ9dmFyIFh2LGhkLFFDLGtDLHF2LCR2LE5oLHhhLHBTPVMoKCk9PntfaSgpO0h0KCk7b2koKTtGdCgpO210KCk7T3QoKTtkUygpO09lKCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO19lKCk7WGkoKTtYdj1uZXcgbCxoZD1uZXcgbDtRQz1uZXcgTnQsa0M9bmV3IE50O05mLnBhY2tlZExlbmd0aD1sLnBhY2tlZExlbmd0aCtvdC5wYWNrZWRMZW5ndGgrODtOZi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gaT1aKGksMCksbC5wYWNrKHQuX2NlbnRlcixlLGkpLGkrPWwucGFja2VkTGVuZ3RoLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9zZW1pTWFqb3JBeGlzLGVbaSsrXT10Ll9zZW1pTWlub3JBeGlzLGVbaSsrXT10Ll9yb3RhdGlvbixlW2krK109dC5faGVpZ2h0LGVbaSsrXT10Ll9ncmFudWxhcml0eSxlW2krK109dC5fZXh0cnVkZWRIZWlnaHQsZVtpKytdPXQuX251bWJlck9mVmVydGljYWxMaW5lcyxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtxdj1uZXcgbCwkdj1uZXcgb3QsTmg9e2NlbnRlcjpxdixlbGxpcHNvaWQ6JHYsc2VtaU1ham9yQXhpczp2b2lkIDAsc2VtaU1pbm9yQXhpczp2b2lkIDAscm90YXRpb246dm9pZCAwLGhlaWdodDp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O05mLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1aKGUsMCk7bGV0IG49bC51bnBhY2sodCxlLHF2KTtlKz1sLnBhY2tlZExlbmd0aDtsZXQgcz1vdC51bnBhY2sodCxlLCR2KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IG89dFtlKytdLHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdLEE9dFtlKytdLGQ9dFtlKytdLGY9dFtlKytdLEU9dFtlXTtyZXR1cm4gbShpKT8oaS5fY2VudGVyPWwuY2xvbmUobixpLl9jZW50ZXIpLGkuX2VsbGlwc29pZD1vdC5jbG9uZShzLGkuX2VsbGlwc29pZCksaS5fc2VtaU1ham9yQXhpcz1vLGkuX3NlbWlNaW5vckF4aXM9cixpLl9yb3RhdGlvbj1hLGkuX2hlaWdodD1oLGkuX2dyYW51bGFyaXR5PUEsaS5fZXh0cnVkZWRIZWlnaHQ9ZCxpLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9ZixpLl9vZmZzZXRBdHRyaWJ1dGU9RT09PS0xP3ZvaWQgMDpFLGkpOihOaC5oZWlnaHQ9aCxOaC5leHRydWRlZEhlaWdodD1kLE5oLmdyYW51bGFyaXR5PUEsTmgucm90YXRpb249YSxOaC5zZW1pTWFqb3JBeGlzPW8sTmguc2VtaU1pbm9yQXhpcz1yLE5oLm51bWJlck9mVmVydGljYWxMaW5lcz1mLE5oLm9mZnNldEF0dHJpYnV0ZT1FPT09LTE/dm9pZCAwOkUsbmV3IE5mKE5oKSl9O05mLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2lmKHQuX3NlbWlNYWpvckF4aXM8PTB8fHQuX3NlbWlNaW5vckF4aXM8PTApcmV0dXJuO2xldCBlPXQuX2hlaWdodCxpPXQuX2V4dHJ1ZGVkSGVpZ2h0LG49IUwuZXF1YWxzRXBzaWxvbihlLGksMCxMLkVQU0lMT04yKTt0Ll9jZW50ZXI9dC5fZWxsaXBzb2lkLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodC5fY2VudGVyLHQuX2NlbnRlcik7bGV0IHM9e2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxlbGxpcHNvaWQ6dC5fZWxsaXBzb2lkLHJvdGF0aW9uOnQuX3JvdGF0aW9uLGhlaWdodDplLGdyYW51bGFyaXR5OnQuX2dyYW51bGFyaXR5LG51bWJlck9mVmVydGljYWxMaW5lczp0Ll9udW1iZXJPZlZlcnRpY2FsTGluZXN9LG87aWYobilzLmV4dHJ1ZGVkSGVpZ2h0PWkscy5vZmZzZXRBdHRyaWJ1dGU9dC5fb2Zmc2V0QXR0cmlidXRlLG89bmN0KHMpO2Vsc2UgaWYobz1pY3QocyksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgcj1vLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxhPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLGg9bmV3IFVpbnQ4QXJyYXkoci8zKS5maWxsKGEpO28uYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpofSl9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpvLmF0dHJpYnV0ZXMsaW5kaWNlczpvLmluZGljZXMscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpvLmJvdW5kaW5nU3BoZXJlLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07eGE9TmZ9KTtmdW5jdGlvbiBGZih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5yYWRpdXM7cC50eXBlT2YubnVtYmVyKCJyYWRpdXMiLGUpO2xldCBpPXtjZW50ZXI6dC5jZW50ZXIsc2VtaU1ham9yQXhpczplLHNlbWlNaW5vckF4aXM6ZSxlbGxpcHNvaWQ6dC5lbGxpcHNvaWQsaGVpZ2h0OnQuaGVpZ2h0LGV4dHJ1ZGVkSGVpZ2h0OnQuZXh0cnVkZWRIZWlnaHQsZ3JhbnVsYXJpdHk6dC5ncmFudWxhcml0eSxudW1iZXJPZlZlcnRpY2FsTGluZXM6dC5udW1iZXJPZlZlcnRpY2FsTGluZXN9O3RoaXMuX2VsbGlwc2VHZW9tZXRyeT1uZXcgeGEoaSksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlQ2lyY2xlT3V0bGluZUdlb21ldHJ5In12YXIgc2N0LFRyLHVTLHR6PVMoKCk9PntIdCgpO2FlKCk7RnQoKTttdCgpO3BTKCk7T2UoKTtGZi5wYWNrZWRMZW5ndGg9eGEucGFja2VkTGVuZ3RoO0ZmLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx4YS5wYWNrKHQuX2VsbGlwc2VHZW9tZXRyeSxlLGkpfTtzY3Q9bmV3IHhhKHtjZW50ZXI6bmV3IGwsc2VtaU1ham9yQXhpczoxLHNlbWlNaW5vckF4aXM6MX0pLFRyPXtjZW50ZXI6bmV3IGwscmFkaXVzOnZvaWQgMCxlbGxpcHNvaWQ6b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLGhlaWdodDp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLHNlbWlNYWpvckF4aXM6dm9pZCAwLHNlbWlNaW5vckF4aXM6dm9pZCAwfTtGZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXhhLnVucGFjayh0LGUsc2N0KTtyZXR1cm4gVHIuY2VudGVyPWwuY2xvbmUobi5fY2VudGVyLFRyLmNlbnRlciksVHIuZWxsaXBzb2lkPW90LmNsb25lKG4uX2VsbGlwc29pZCxUci5lbGxpcHNvaWQpLFRyLmhlaWdodD1uLl9oZWlnaHQsVHIuZXh0cnVkZWRIZWlnaHQ9bi5fZXh0cnVkZWRIZWlnaHQsVHIuZ3JhbnVsYXJpdHk9bi5fZ3JhbnVsYXJpdHksVHIubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPW4uX251bWJlck9mVmVydGljYWxMaW5lcyxtKGkpPyhUci5zZW1pTWFqb3JBeGlzPW4uX3NlbWlNYWpvckF4aXMsVHIuc2VtaU1pbm9yQXhpcz1uLl9zZW1pTWlub3JBeGlzLGkuX2VsbGlwc2VHZW9tZXRyeT1uZXcgeGEoVHIpLGkpOihUci5yYWRpdXM9bi5fc2VtaU1ham9yQXhpcyxuZXcgRmYoVHIpKX07RmYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIHhhLmNyZWF0ZUdlb21ldHJ5KHQuX2VsbGlwc2VHZW9tZXRyeSl9O3VTPUZmfSk7dmFyIENTPXt9O0hlKENTLHtkZWZhdWx0OigpPT5yY3R9KTtmdW5jdGlvbiBvY3QodCxlKXtyZXR1cm4gbShlKSYmKHQ9dVMudW5wYWNrKHQsZSkpLHQuX2VsbGlwc2VHZW9tZXRyeS5fY2VudGVyPWwuY2xvbmUodC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXIpLHQuX2VsbGlwc2VHZW9tZXRyeS5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc2VHZW9tZXRyeS5fZWxsaXBzb2lkKSx1Uy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgcmN0LGdTPVMoKCk9PntIdCgpO3R6KCk7bXQoKTtPZSgpO3JjdD1vY3R9KTtmdW5jdGlvbiBveih0LGUsaSxuLHMpe2xldCBvPWwuc3VidHJhY3QodCxlLGFjdCkscj1sLmRvdChpLG8pLGE9bC5kb3QobixvKTtyZXR1cm4gbnQuZnJvbUVsZW1lbnRzKHIsYSxzKX12YXIgbFIsYWN0LGV6LGl6LG56LHN6LGJmLFRTPVMoKCk9PntYZSgpO0h0KCk7YWUoKTtkbigpO0psKCk7bFI9e30sYWN0PW5ldyBsLGV6PW5ldyBsLGl6PW5ldyBsLG56PW5ldyBsLHN6PW5ldyB6cztsUi52YWxpZE91dGxpbmU9ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpO2xldCBpPXpzLmZyb21Qb2ludHModCxzeikuaGFsZkF4ZXMsbj1sdC5nZXRDb2x1bW4oaSwwLGV6KSxzPWx0LmdldENvbHVtbihpLDEsaXopLG89bHQuZ2V0Q29sdW1uKGksMixueikscj1sLm1hZ25pdHVkZShuKSxhPWwubWFnbml0dWRlKHMpLGg9bC5tYWduaXR1ZGUobyk7cmV0dXJuIShyPT09MCYmKGE9PT0wfHxoPT09MCl8fGE9PT0wJiZoPT09MCl9O2xSLmNvbXB1dGVQcm9qZWN0VG8yREFyZ3VtZW50cz1mdW5jdGlvbih0LGUsaSxuKXtwLmRlZmluZWQoInBvc2l0aW9ucyIsdCkscC5kZWZpbmVkKCJjZW50ZXJSZXN1bHQiLGUpLHAuZGVmaW5lZCgicGxhbmVBeGlzMVJlc3VsdCIsaSkscC5kZWZpbmVkKCJwbGFuZUF4aXMyUmVzdWx0IixuKTtsZXQgcz16cy5mcm9tUG9pbnRzKHQsc3opLG89cy5oYWxmQXhlcyxyPWx0LmdldENvbHVtbihvLDAsZXopLGE9bHQuZ2V0Q29sdW1uKG8sMSxpeiksaD1sdC5nZXRDb2x1bW4obywyLG56KSxBPWwubWFnbml0dWRlKHIpLGQ9bC5tYWduaXR1ZGUoYSksZj1sLm1hZ25pdHVkZShoKSxFPU1hdGgubWluKEEsZCxmKTtpZihBPT09MCYmKGQ9PT0wfHxmPT09MCl8fGQ9PT0wJiZmPT09MClyZXR1cm4hMTtsZXQgXyxSO3JldHVybihFPT09ZHx8RT09PWYpJiYoXz1yKSxFPT09QT9fPWE6RT09PWYmJihSPWEpLChFPT09QXx8RT09PWQpJiYoUj1oKSxsLm5vcm1hbGl6ZShfLGkpLGwubm9ybWFsaXplKFIsbiksbC5jbG9uZShzLmNlbnRlcixlKSwhMH07bFIuY3JlYXRlUHJvamVjdFBvaW50c1RvMkRGdW5jdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2xldCBzPW5ldyBBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspc1tvXT1veihuW29dLHQsZSxpKTtyZXR1cm4gc319O2xSLmNyZWF0ZVByb2plY3RQb2ludFRvMkRGdW5jdGlvbj1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGZ1bmN0aW9uKG4scyl7cmV0dXJuIG96KG4sdCxlLGkscyl9fTtiZj1sUn0pO3ZhciBjej10cygoTlJlLFlTKT0+eyJ1c2Ugc3RyaWN0IjtZUy5leHBvcnRzPXdDO1lTLmV4cG9ydHMuZGVmYXVsdD13QztmdW5jdGlvbiB3Qyh0LGUsaSl7aT1pfHwyO3ZhciBuPWUmJmUubGVuZ3RoLHM9bj9lWzBdKmk6dC5sZW5ndGgsbz1heih0LDAscyxpLCEwKSxyPVtdO2lmKCFvfHxvLm5leHQ9PT1vLnByZXYpcmV0dXJuIHI7dmFyIGEsaCxBLGQsZixFLF87aWYobiYmKG89ZGN0KHQsZSxvLGkpKSx0Lmxlbmd0aD44MCppKXthPUE9dFswXSxoPWQ9dFsxXTtmb3IodmFyIFI9aTtSPHM7Uis9aSlmPXRbUl0sRT10W1IrMV0sZjxhJiYoYT1mKSxFPGgmJihoPUUpLGY+QSYmKEE9ZiksRT5kJiYoZD1FKTtfPU1hdGgubWF4KEEtYSxkLWgpLF89XyE9PTA/MzI3NjcvXzowfXJldHVybiBkUihvLHIsaSxhLGgsXywwKSxyfWZ1bmN0aW9uIGF6KHQsZSxpLG4scyl7dmFyIG8scjtpZihzPT09YlModCxlLGksbik+MClmb3Iobz1lO288aTtvKz1uKXI9cnoobyx0W29dLHRbbysxXSxyKTtlbHNlIGZvcihvPWktbjtvPj1lO28tPW4pcj1yeihvLHRbb10sdFtvKzFdLHIpO3JldHVybiByJiZ4QyhyLHIubmV4dCkmJihmUihyKSxyPXIubmV4dCkscn1mdW5jdGlvbiBjZCh0LGUpe2lmKCF0KXJldHVybiB0O2V8fChlPXQpO3ZhciBpPXQsbjtkbyBpZihuPSExLCFpLnN0ZWluZXImJih4QyhpLGkubmV4dCl8fGFzKGkucHJldixpLGkubmV4dCk9PT0wKSl7aWYoZlIoaSksaT1lPWkucHJldixpPT09aS5uZXh0KWJyZWFrO249ITB9ZWxzZSBpPWkubmV4dDt3aGlsZShufHxpIT09ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gZFIodCxlLGksbixzLG8scil7aWYodCl7IXImJm8mJlJjdCh0LG4scyxvKTtmb3IodmFyIGE9dCxoLEE7dC5wcmV2IT09dC5uZXh0Oyl7aWYoaD10LnByZXYsQT10Lm5leHQsbz9oY3QodCxuLHMsbyk6QWN0KHQpKXtlLnB1c2goaC5pL2l8MCksZS5wdXNoKHQuaS9pfDApLGUucHVzaChBLmkvaXwwKSxmUih0KSx0PUEubmV4dCxhPUEubmV4dDtjb250aW51ZX1pZih0PUEsdD09PWEpe3I/cj09PTE/KHQ9Y2N0KGNkKHQpLGUsaSksZFIodCxlLGksbixzLG8sMikpOnI9PT0yJiZsY3QodCxlLGksbixzLG8pOmRSKGNkKHQpLGUsaSxuLHMsbywxKTticmVha319fX1mdW5jdGlvbiBBY3QodCl7dmFyIGU9dC5wcmV2LGk9dCxuPXQubmV4dDtpZihhcyhlLGksbik+PTApcmV0dXJuITE7Zm9yKHZhciBzPWUueCxvPWkueCxyPW4ueCxhPWUueSxoPWkueSxBPW4ueSxkPXM8bz9zPHI/czpyOm88cj9vOnIsZj1hPGg/YTxBP2E6QTpoPEE/aDpBLEU9cz5vP3M+cj9zOnI6bz5yP286cixfPWE+aD9hPkE/YTpBOmg+QT9oOkEsUj1uLm5leHQ7UiE9PWU7KXtpZihSLng+PWQmJlIueDw9RSYmUi55Pj1mJiZSLnk8PV8mJllmKHMsYSxvLGgscixBLFIueCxSLnkpJiZhcyhSLnByZXYsUixSLm5leHQpPj0wKXJldHVybiExO1I9Ui5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGhjdCh0LGUsaSxuKXt2YXIgcz10LnByZXYsbz10LHI9dC5uZXh0O2lmKGFzKHMsbyxyKT49MClyZXR1cm4hMTtmb3IodmFyIGE9cy54LGg9by54LEE9ci54LGQ9cy55LGY9by55LEU9ci55LF89YTxoP2E8QT9hOkE6aDxBP2g6QSxSPWQ8Zj9kPEU/ZDpFOmY8RT9mOkUsST1hPmg/YT5BP2E6QTpoPkE/aDpBLEM9ZD5mP2Q+RT9kOkU6Zj5FP2Y6RSxOPU5TKF8sUixlLGksbiksVD1OUyhJLEMsZSxpLG4pLGI9dC5wcmV2WixGPXQubmV4dFo7YiYmYi56Pj1OJiZGJiZGLno8PVQ7KXtpZihiLng+PV8mJmIueDw9SSYmYi55Pj1SJiZiLnk8PUMmJmIhPT1zJiZiIT09ciYmWWYoYSxkLGgsZixBLEUsYi54LGIueSkmJmFzKGIucHJldixiLGIubmV4dCk+PTB8fChiPWIucHJldlosRi54Pj1fJiZGLng8PUkmJkYueT49UiYmRi55PD1DJiZGIT09cyYmRiE9PXImJllmKGEsZCxoLGYsQSxFLEYueCxGLnkpJiZhcyhGLnByZXYsRixGLm5leHQpPj0wKSlyZXR1cm4hMTtGPUYubmV4dFp9Zm9yKDtiJiZiLno+PU47KXtpZihiLng+PV8mJmIueDw9SSYmYi55Pj1SJiZiLnk8PUMmJmIhPT1zJiZiIT09ciYmWWYoYSxkLGgsZixBLEUsYi54LGIueSkmJmFzKGIucHJldixiLGIubmV4dCk+PTApcmV0dXJuITE7Yj1iLnByZXZafWZvcig7RiYmRi56PD1UOyl7aWYoRi54Pj1fJiZGLng8PUkmJkYueT49UiYmRi55PD1DJiZGIT09cyYmRiE9PXImJllmKGEsZCxoLGYsQSxFLEYueCxGLnkpJiZhcyhGLnByZXYsRixGLm5leHQpPj0wKXJldHVybiExO0Y9Ri5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBjY3QodCxlLGkpe3ZhciBuPXQ7ZG97dmFyIHM9bi5wcmV2LG89bi5uZXh0Lm5leHQ7IXhDKHMsbykmJkF6KHMsbixuLm5leHQsbykmJm1SKHMsbykmJm1SKG8scykmJihlLnB1c2gocy5pL2l8MCksZS5wdXNoKG4uaS9pfDApLGUucHVzaChvLmkvaXwwKSxmUihuKSxmUihuLm5leHQpLG49dD1vKSxuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuIGNkKG4pfWZ1bmN0aW9uIGxjdCh0LGUsaSxuLHMsbyl7dmFyIHI9dDtkb3tmb3IodmFyIGE9ci5uZXh0Lm5leHQ7YSE9PXIucHJldjspe2lmKHIuaSE9PWEuaSYmcGN0KHIsYSkpe3ZhciBoPWh6KHIsYSk7cj1jZChyLHIubmV4dCksaD1jZChoLGgubmV4dCksZFIocixlLGksbixzLG8sMCksZFIoaCxlLGksbixzLG8sMCk7cmV0dXJufWE9YS5uZXh0fXI9ci5uZXh0fXdoaWxlKHIhPT10KX1mdW5jdGlvbiBkY3QodCxlLGksbil7dmFyIHM9W10sbyxyLGEsaCxBO2ZvcihvPTAscj1lLmxlbmd0aDtvPHI7bysrKWE9ZVtvXSpuLGg9bzxyLTE/ZVtvKzFdKm46dC5sZW5ndGgsQT1heih0LGEsaCxuLCExKSxBPT09QS5uZXh0JiYoQS5zdGVpbmVyPSEwKSxzLnB1c2goSWN0KEEpKTtmb3Iocy5zb3J0KG1jdCksbz0wO288cy5sZW5ndGg7bysrKWk9ZmN0KHNbb10saSk7cmV0dXJuIGl9ZnVuY3Rpb24gbWN0KHQsZSl7cmV0dXJuIHQueC1lLnh9ZnVuY3Rpb24gZmN0KHQsZSl7dmFyIGk9RWN0KHQsZSk7aWYoIWkpcmV0dXJuIGU7dmFyIG49aHooaSx0KTtyZXR1cm4gY2QobixuLm5leHQpLGNkKGksaS5uZXh0KX1mdW5jdGlvbiBFY3QodCxlKXt2YXIgaT1lLG49dC54LHM9dC55LG89LTEvMCxyO2Rve2lmKHM8PWkueSYmcz49aS5uZXh0LnkmJmkubmV4dC55IT09aS55KXt2YXIgYT1pLngrKHMtaS55KSooaS5uZXh0LngtaS54KS8oaS5uZXh0LnktaS55KTtpZihhPD1uJiZhPm8mJihvPWEscj1pLng8aS5uZXh0Lng/aTppLm5leHQsYT09PW4pKXJldHVybiByfWk9aS5uZXh0fXdoaWxlKGkhPT1lKTtpZighcilyZXR1cm4gbnVsbDt2YXIgaD1yLEE9ci54LGQ9ci55LGY9MS8wLEU7aT1yO2RvIG4+PWkueCYmaS54Pj1BJiZuIT09aS54JiZZZihzPGQ/bjpvLHMsQSxkLHM8ZD9vOm4scyxpLngsaS55KSYmKEU9TWF0aC5hYnMocy1pLnkpLyhuLWkueCksbVIoaSx0KSYmKEU8Znx8RT09PWYmJihpLng+ci54fHxpLng9PT1yLngmJl9jdChyLGkpKSkmJihyPWksZj1FKSksaT1pLm5leHQ7d2hpbGUoaSE9PWgpO3JldHVybiByfWZ1bmN0aW9uIF9jdCh0LGUpe3JldHVybiBhcyh0LnByZXYsdCxlLnByZXYpPDAmJmFzKGUubmV4dCx0LHQubmV4dCk8MH1mdW5jdGlvbiBSY3QodCxlLGksbil7dmFyIHM9dDtkbyBzLno9PT0wJiYocy56PU5TKHMueCxzLnksZSxpLG4pKSxzLnByZXZaPXMucHJldixzLm5leHRaPXMubmV4dCxzPXMubmV4dDt3aGlsZShzIT09dCk7cy5wcmV2Wi5uZXh0Wj1udWxsLHMucHJldlo9bnVsbCxaY3Qocyl9ZnVuY3Rpb24gWmN0KHQpe3ZhciBlLGksbixzLG8scixhLGgsQT0xO2Rve2ZvcihpPXQsdD1udWxsLG89bnVsbCxyPTA7aTspe2ZvcihyKyssbj1pLGE9MCxlPTA7ZTxBJiYoYSsrLG49bi5uZXh0WiwhIW4pO2UrKyk7Zm9yKGg9QTthPjB8fGg+MCYmbjspYSE9PTAmJihoPT09MHx8IW58fGkuejw9bi56KT8ocz1pLGk9aS5uZXh0WixhLS0pOihzPW4sbj1uLm5leHRaLGgtLSksbz9vLm5leHRaPXM6dD1zLHMucHJldlo9byxvPXM7aT1ufW8ubmV4dFo9bnVsbCxBKj0yfXdoaWxlKHI+MSk7cmV0dXJuIHR9ZnVuY3Rpb24gTlModCxlLGksbixzKXtyZXR1cm4gdD0odC1pKSpzfDAsZT0oZS1uKSpzfDAsdD0odHx0PDw4KSYxNjcxMTkzNSx0PSh0fHQ8PDQpJjI1MjY0NTEzNSx0PSh0fHQ8PDIpJjg1ODk5MzQ1OSx0PSh0fHQ8PDEpJjE0MzE2NTU3NjUsZT0oZXxlPDw4KSYxNjcxMTkzNSxlPShlfGU8PDQpJjI1MjY0NTEzNSxlPShlfGU8PDIpJjg1ODk5MzQ1OSxlPShlfGU8PDEpJjE0MzE2NTU3NjUsdHxlPDwxfWZ1bmN0aW9uIEljdCh0KXt2YXIgZT10LGk9dDtkbyhlLng8aS54fHxlLng9PT1pLngmJmUueTxpLnkpJiYoaT1lKSxlPWUubmV4dDt3aGlsZShlIT09dCk7cmV0dXJuIGl9ZnVuY3Rpb24gWWYodCxlLGksbixzLG8scixhKXtyZXR1cm4ocy1yKSooZS1hKT49KHQtcikqKG8tYSkmJih0LXIpKihuLWEpPj0oaS1yKSooZS1hKSYmKGktcikqKG8tYSk+PShzLXIpKihuLWEpfWZ1bmN0aW9uIHBjdCh0LGUpe3JldHVybiB0Lm5leHQuaSE9PWUuaSYmdC5wcmV2LmkhPT1lLmkmJiF1Y3QodCxlKSYmKG1SKHQsZSkmJm1SKGUsdCkmJkNjdCh0LGUpJiYoYXModC5wcmV2LHQsZS5wcmV2KXx8YXModCxlLnByZXYsZSkpfHx4Qyh0LGUpJiZhcyh0LnByZXYsdCx0Lm5leHQpPjAmJmFzKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gYXModCxlLGkpe3JldHVybihlLnktdC55KSooaS54LWUueCktKGUueC10LngpKihpLnktZS55KX1mdW5jdGlvbiB4Qyh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiBBeih0LGUsaSxuKXt2YXIgcz15Qyhhcyh0LGUsaSkpLG89eUMoYXModCxlLG4pKSxyPXlDKGFzKGksbix0KSksYT15QyhhcyhpLG4sZSkpO3JldHVybiEhKHMhPT1vJiZyIT09YXx8cz09PTAmJkxDKHQsaSxlKXx8bz09PTAmJkxDKHQsbixlKXx8cj09PTAmJkxDKGksdCxuKXx8YT09PTAmJkxDKGksZSxuKSl9ZnVuY3Rpb24gTEModCxlLGkpe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxpLngpJiZlLng+PU1hdGgubWluKHQueCxpLngpJiZlLnk8PU1hdGgubWF4KHQueSxpLnkpJiZlLnk+PU1hdGgubWluKHQueSxpLnkpfWZ1bmN0aW9uIHlDKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiB1Y3QodCxlKXt2YXIgaT10O2Rve2lmKGkuaSE9PXQuaSYmaS5uZXh0LmkhPT10LmkmJmkuaSE9PWUuaSYmaS5uZXh0LmkhPT1lLmkmJkF6KGksaS5uZXh0LHQsZSkpcmV0dXJuITA7aT1pLm5leHR9d2hpbGUoaSE9PXQpO3JldHVybiExfWZ1bmN0aW9uIG1SKHQsZSl7cmV0dXJuIGFzKHQucHJldix0LHQubmV4dCk8MD9hcyh0LGUsdC5uZXh0KT49MCYmYXModCx0LnByZXYsZSk+PTA6YXModCxlLHQucHJldik8MHx8YXModCx0Lm5leHQsZSk8MH1mdW5jdGlvbiBDY3QodCxlKXt2YXIgaT10LG49ITEscz0odC54K2UueCkvMixvPSh0LnkrZS55KS8yO2RvIGkueT5vIT1pLm5leHQueT5vJiZpLm5leHQueSE9PWkueSYmczwoaS5uZXh0LngtaS54KSooby1pLnkpLyhpLm5leHQueS1pLnkpK2kueCYmKG49IW4pLGk9aS5uZXh0O3doaWxlKGkhPT10KTtyZXR1cm4gbn1mdW5jdGlvbiBoeih0LGUpe3ZhciBpPW5ldyBGUyh0LmksdC54LHQueSksbj1uZXcgRlMoZS5pLGUueCxlLnkpLHM9dC5uZXh0LG89ZS5wcmV2O3JldHVybiB0Lm5leHQ9ZSxlLnByZXY9dCxpLm5leHQ9cyxzLnByZXY9aSxuLm5leHQ9aSxpLnByZXY9bixvLm5leHQ9bixuLnByZXY9byxufWZ1bmN0aW9uIHJ6KHQsZSxpLG4pe3ZhciBzPW5ldyBGUyh0LGUsaSk7cmV0dXJuIG4/KHMubmV4dD1uLm5leHQscy5wcmV2PW4sbi5uZXh0LnByZXY9cyxuLm5leHQ9cyk6KHMucHJldj1zLHMubmV4dD1zKSxzfWZ1bmN0aW9uIGZSKHQpe3QubmV4dC5wcmV2PXQucHJldix0LnByZXYubmV4dD10Lm5leHQsdC5wcmV2WiYmKHQucHJldloubmV4dFo9dC5uZXh0WiksdC5uZXh0WiYmKHQubmV4dFoucHJldlo9dC5wcmV2Wil9ZnVuY3Rpb24gRlModCxlLGkpe3RoaXMuaT10LHRoaXMueD1lLHRoaXMueT1pLHRoaXMucHJldj1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMuej0wLHRoaXMucHJldlo9bnVsbCx0aGlzLm5leHRaPW51bGwsdGhpcy5zdGVpbmVyPSExfXdDLmRldmlhdGlvbj1mdW5jdGlvbih0LGUsaSxuKXt2YXIgcz1lJiZlLmxlbmd0aCxvPXM/ZVswXSppOnQubGVuZ3RoLHI9TWF0aC5hYnMoYlModCwwLG8saSkpO2lmKHMpZm9yKHZhciBhPTAsaD1lLmxlbmd0aDthPGg7YSsrKXt2YXIgQT1lW2FdKmksZD1hPGgtMT9lW2ErMV0qaTp0Lmxlbmd0aDtyLT1NYXRoLmFicyhiUyh0LEEsZCxpKSl9dmFyIGY9MDtmb3IoYT0wO2E8bi5sZW5ndGg7YSs9Myl7dmFyIEU9blthXSppLF89blthKzFdKmksUj1uW2ErMl0qaTtmKz1NYXRoLmFicygodFtFXS10W1JdKSoodFtfKzFdLXRbRSsxXSktKHRbRV0tdFtfXSkqKHRbUisxXS10W0UrMV0pKX1yZXR1cm4gcj09PTAmJmY9PT0wPzA6TWF0aC5hYnMoKGYtcikvcil9O2Z1bmN0aW9uIGJTKHQsZSxpLG4pe2Zvcih2YXIgcz0wLG89ZSxyPWktbjtvPGk7bys9bilzKz0odFtyXS10W29dKSoodFtvKzFdK3RbcisxXSkscj1vO3JldHVybiBzfXdDLmZsYXR0ZW49ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRbMF1bMF0ubGVuZ3RoLGk9e3ZlcnRpY2VzOltdLGhvbGVzOltdLGRpbWVuc2lvbnM6ZX0sbj0wLHM9MDtzPHQubGVuZ3RoO3MrKyl7Zm9yKHZhciBvPTA7bzx0W3NdLmxlbmd0aDtvKyspZm9yKHZhciByPTA7cjxlO3IrKylpLnZlcnRpY2VzLnB1c2godFtzXVtvXVtyXSk7cz4wJiYobis9dFtzLTFdLmxlbmd0aCxpLmhvbGVzLnB1c2gobikpfXJldHVybiBpfX0pO3ZhciBmeixnY3QsVGN0LFVjLEV6LF96LFJ6LGx6LGR6LG16LEZoLFp6LEl6LHB6LFZmLE5jdCxGY3QsYmN0LFZTLHVpLFBhPVMoKCk9Pntmej1jbyhjeigpLDEpO1hlKCk7SHQoKTtyaSgpO2FlKCk7b2koKTtGdCgpO210KCk7T2UoKTtIRSgpO3lpKCk7amkoKTtfZSgpO1hpKCk7ZmMoKTtnY3Q9bmV3IGwsVGN0PW5ldyBsLFVjPXt9O1VjLmNvbXB1dGVBcmVhMkQ9ZnVuY3Rpb24odCl7cC5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpLHAudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJwb3NpdGlvbnMubGVuZ3RoIix0Lmxlbmd0aCwzKTtsZXQgZT10Lmxlbmd0aCxpPTA7Zm9yKGxldCBuPWUtMSxzPTA7czxlO249cysrKXtsZXQgbz10W25dLHI9dFtzXTtpKz1vLngqci55LXIueCpvLnl9cmV0dXJuIGkqLjV9O1VjLmNvbXB1dGVXaW5kaW5nT3JkZXIyRD1mdW5jdGlvbih0KXtyZXR1cm4gVWMuY29tcHV0ZUFyZWEyRCh0KT4wP1VzLkNPVU5URVJfQ0xPQ0tXSVNFOlVzLkNMT0NLV0lTRX07VWMudHJpYW5ndWxhdGU9ZnVuY3Rpb24odCxlKXtwLmRlZmluZWQoInBvc2l0aW9ucyIsdCk7bGV0IGk9bnQucGFja0FycmF5KHQpO3JldHVybigwLGZ6LmRlZmF1bHQpKGksZSwyKX07RXo9bmV3IGwsX3o9bmV3IGwsUno9bmV3IGwsbHo9bmV3IGwsZHo9bmV3IGwsbXo9bmV3IGwsRmg9bmV3IGwsWno9bmV3IG50LEl6PW5ldyBudCxwej1uZXcgbnQsVmY9bmV3IG50O1VjLmNvbXB1dGVTdWJkaXZpc2lvbj1mdW5jdGlvbih0LGUsaSxuLHMpe3M9WihzLEwuUkFESUFOU19QRVJfREVHUkVFKTtsZXQgbz1tKG4pO3AudHlwZU9mLm9iamVjdCgiZWxsaXBzb2lkIix0KSxwLmRlZmluZWQoInBvc2l0aW9ucyIsZSkscC5kZWZpbmVkKCJpbmRpY2VzIixpKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kaWNlcy5sZW5ndGgiLGkubGVuZ3RoLDMpLHAudHlwZU9mLm51bWJlci5lcXVhbHMoImluZGljZXMubGVuZ3RoICUgMyIsIjAiLGkubGVuZ3RoJTMsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJncmFudWxhcml0eSIscywwKTtsZXQgcj1pLnNsaWNlKDApLGEsaD1lLmxlbmd0aCxBPW5ldyBBcnJheShoKjMpLGQ9bmV3IEFycmF5KGgqMiksZj0wLEU9MDtmb3IoYT0wO2E8aDthKyspe2xldCBiPWVbYV07aWYoQVtmKytdPWIueCxBW2YrK109Yi55LEFbZisrXT1iLnosbyl7bGV0IEY9blthXTtkW0UrK109Ri54LGRbRSsrXT1GLnl9fWxldCBfPVtdLFI9e30sST10Lm1heGltdW1SYWRpdXMsQz1MLmNob3JkTGVuZ3RoKHMsSSksTj1DKkM7Zm9yKDtyLmxlbmd0aD4wOyl7bGV0IGI9ci5wb3AoKSxGPXIucG9wKCksQj1yLnBvcCgpLFU9bC5mcm9tQXJyYXkoQSxCKjMsRXopLFE9bC5mcm9tQXJyYXkoQSxGKjMsX3opLE09bC5mcm9tQXJyYXkoQSxiKjMsUnopLGsseSxjO28mJihrPW50LmZyb21BcnJheShkLEIqMixaeikseT1udC5mcm9tQXJyYXkoZCxGKjIsSXopLGM9bnQuZnJvbUFycmF5KGQsYioyLHB6KSk7bGV0IGc9bC5tdWx0aXBseUJ5U2NhbGFyKGwubm9ybWFsaXplKFUsbHopLEksbHopLE89bC5tdWx0aXBseUJ5U2NhbGFyKGwubm9ybWFsaXplKFEsZHopLEksZHopLEQ9bC5tdWx0aXBseUJ5U2NhbGFyKGwubm9ybWFsaXplKE0sbXopLEksbXopLHc9bC5tYWduaXR1ZGVTcXVhcmVkKGwuc3VidHJhY3QoZyxPLEZoKSkseD1sLm1hZ25pdHVkZVNxdWFyZWQobC5zdWJ0cmFjdChPLEQsRmgpKSxIPWwubWFnbml0dWRlU3F1YXJlZChsLnN1YnRyYWN0KEQsZyxGaCkpLGo9TWF0aC5tYXgodyx4LEgpLFgsdHQsRztqPk4/dz09PWo/KFg9YCR7TWF0aC5taW4oQixGKX0gJHtNYXRoLm1heChCLEYpfWAsYT1SW1hdLG0oYSl8fCh0dD1sLmFkZChVLFEsRmgpLGwubXVsdGlwbHlCeVNjYWxhcih0dCwuNSx0dCksQS5wdXNoKHR0LngsdHQueSx0dC56KSxhPUEubGVuZ3RoLzMtMSxSW1hdPWEsbyYmKEc9bnQuYWRkKGsseSxWZiksbnQubXVsdGlwbHlCeVNjYWxhcihHLC41LEcpLGQucHVzaChHLngsRy55KSkpLHIucHVzaChCLGEsYiksci5wdXNoKGEsRixiKSk6eD09PWo/KFg9YCR7TWF0aC5taW4oRixiKX0gJHtNYXRoLm1heChGLGIpfWAsYT1SW1hdLG0oYSl8fCh0dD1sLmFkZChRLE0sRmgpLGwubXVsdGlwbHlCeVNjYWxhcih0dCwuNSx0dCksQS5wdXNoKHR0LngsdHQueSx0dC56KSxhPUEubGVuZ3RoLzMtMSxSW1hdPWEsbyYmKEc9bnQuYWRkKHksYyxWZiksbnQubXVsdGlwbHlCeVNjYWxhcihHLC41LEcpLGQucHVzaChHLngsRy55KSkpLHIucHVzaChGLGEsQiksci5wdXNoKGEsYixCKSk6SD09PWomJihYPWAke01hdGgubWluKGIsQil9ICR7TWF0aC5tYXgoYixCKX1gLGE9UltYXSxtKGEpfHwodHQ9bC5hZGQoTSxVLEZoKSxsLm11bHRpcGx5QnlTY2FsYXIodHQsLjUsdHQpLEEucHVzaCh0dC54LHR0LnksdHQueiksYT1BLmxlbmd0aC8zLTEsUltYXT1hLG8mJihHPW50LmFkZChjLGssVmYpLG50Lm11bHRpcGx5QnlTY2FsYXIoRywuNSxHKSxkLnB1c2goRy54LEcueSkpKSxyLnB1c2goYixhLEYpLHIucHVzaChhLEIsRikpOihfLnB1c2goQiksXy5wdXNoKEYpLF8ucHVzaChiKSl9bGV0IFQ9e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6QX0pfSxpbmRpY2VzOl8scHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVN9O3JldHVybiBvJiYoVC5hdHRyaWJ1dGVzLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpkfSkpLG5ldyBzZShUKX07TmN0PW5ldyB1dCxGY3Q9bmV3IHV0LGJjdD1uZXcgdXQsVlM9bmV3IHV0O1VjLmNvbXB1dGVSaHVtYkxpbmVTdWJkaXZpc2lvbj1mdW5jdGlvbih0LGUsaSxuLHMpe3M9WihzLEwuUkFESUFOU19QRVJfREVHUkVFKTtsZXQgbz1tKG4pO3AudHlwZU9mLm9iamVjdCgiZWxsaXBzb2lkIix0KSxwLmRlZmluZWQoInBvc2l0aW9ucyIsZSkscC5kZWZpbmVkKCJpbmRpY2VzIixpKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kaWNlcy5sZW5ndGgiLGkubGVuZ3RoLDMpLHAudHlwZU9mLm51bWJlci5lcXVhbHMoImluZGljZXMubGVuZ3RoICUgMyIsIjAiLGkubGVuZ3RoJTMsMCkscC50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJncmFudWxhcml0eSIscywwKTtsZXQgcj1pLnNsaWNlKDApLGEsaD1lLmxlbmd0aCxBPW5ldyBBcnJheShoKjMpLGQ9bmV3IEFycmF5KGgqMiksZj0wLEU9MDtmb3IoYT0wO2E8aDthKyspe2xldCBCPWVbYV07aWYoQVtmKytdPUIueCxBW2YrK109Qi55LEFbZisrXT1CLnosbyl7bGV0IFU9blthXTtkW0UrK109VS54LGRbRSsrXT1VLnl9fWxldCBfPVtdLFI9e30sST10Lm1heGltdW1SYWRpdXMsQz1MLmNob3JkTGVuZ3RoKHMsSSksTj1uZXcgZXIodm9pZCAwLHZvaWQgMCx0KSxUPW5ldyBlcih2b2lkIDAsdm9pZCAwLHQpLGI9bmV3IGVyKHZvaWQgMCx2b2lkIDAsdCk7Zm9yKDtyLmxlbmd0aD4wOyl7bGV0IEI9ci5wb3AoKSxVPXIucG9wKCksUT1yLnBvcCgpLE09bC5mcm9tQXJyYXkoQSxRKjMsRXopLGs9bC5mcm9tQXJyYXkoQSxVKjMsX3opLHk9bC5mcm9tQXJyYXkoQSxCKjMsUnopLGMsZyxPO28mJihjPW50LmZyb21BcnJheShkLFEqMixaeiksZz1udC5mcm9tQXJyYXkoZCxVKjIsSXopLE89bnQuZnJvbUFycmF5KGQsQioyLHB6KSk7bGV0IEQ9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhNLE5jdCksdz10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGssRmN0KSx4PXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoeSxiY3QpO04uc2V0RW5kUG9pbnRzKEQsdyk7bGV0IEg9Ti5zdXJmYWNlRGlzdGFuY2U7VC5zZXRFbmRQb2ludHModyx4KTtsZXQgaj1ULnN1cmZhY2VEaXN0YW5jZTtiLnNldEVuZFBvaW50cyh4LEQpO2xldCBYPWIuc3VyZmFjZURpc3RhbmNlLHR0PU1hdGgubWF4KEgsaixYKSxHLEl0LGd0LFl0LFV0O3R0PkM/SD09PXR0PyhHPWAke01hdGgubWluKFEsVSl9ICR7TWF0aC5tYXgoUSxVKX1gLGE9UltHXSxtKGEpfHwoSXQ9Ti5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsVlMpLGd0PShELmhlaWdodCt3LmhlaWdodCkqLjUsWXQ9bC5mcm9tUmFkaWFucyhJdC5sb25naXR1ZGUsSXQubGF0aXR1ZGUsZ3QsdCxGaCksQS5wdXNoKFl0LngsWXQueSxZdC56KSxhPUEubGVuZ3RoLzMtMSxSW0ddPWEsbyYmKFV0PW50LmFkZChjLGcsVmYpLG50Lm11bHRpcGx5QnlTY2FsYXIoVXQsLjUsVXQpLGQucHVzaChVdC54LFV0LnkpKSksci5wdXNoKFEsYSxCKSxyLnB1c2goYSxVLEIpKTpqPT09dHQ/KEc9YCR7TWF0aC5taW4oVSxCKX0gJHtNYXRoLm1heChVLEIpfWAsYT1SW0ddLG0oYSl8fChJdD1ULmludGVycG9sYXRlVXNpbmdGcmFjdGlvbiguNSxWUyksZ3Q9KHcuaGVpZ2h0K3guaGVpZ2h0KSouNSxZdD1sLmZyb21SYWRpYW5zKEl0LmxvbmdpdHVkZSxJdC5sYXRpdHVkZSxndCx0LEZoKSxBLnB1c2goWXQueCxZdC55LFl0LnopLGE9QS5sZW5ndGgvMy0xLFJbR109YSxvJiYoVXQ9bnQuYWRkKGcsTyxWZiksbnQubXVsdGlwbHlCeVNjYWxhcihVdCwuNSxVdCksZC5wdXNoKFV0LngsVXQueSkpKSxyLnB1c2goVSxhLFEpLHIucHVzaChhLEIsUSkpOlg9PT10dCYmKEc9YCR7TWF0aC5taW4oQixRKX0gJHtNYXRoLm1heChCLFEpfWAsYT1SW0ddLG0oYSl8fChJdD1iLmludGVycG9sYXRlVXNpbmdGcmFjdGlvbiguNSxWUyksZ3Q9KHguaGVpZ2h0K0QuaGVpZ2h0KSouNSxZdD1sLmZyb21SYWRpYW5zKEl0LmxvbmdpdHVkZSxJdC5sYXRpdHVkZSxndCx0LEZoKSxBLnB1c2goWXQueCxZdC55LFl0LnopLGE9QS5sZW5ndGgvMy0xLFJbR109YSxvJiYoVXQ9bnQuYWRkKE8sYyxWZiksbnQubXVsdGlwbHlCeVNjYWxhcihVdCwuNSxVdCksZC5wdXNoKFV0LngsVXQueSkpKSxyLnB1c2goQixhLFUpLHIucHVzaChhLFEsVSkpOihfLnB1c2goUSksXy5wdXNoKFUpLF8ucHVzaChCKSl9bGV0IEY9e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6QX0pfSxpbmRpY2VzOl8scHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVN9O3JldHVybiBvJiYoRi5hdHRyaWJ1dGVzLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpkfSkpLG5ldyBzZShGKX07VWMuc2NhbGVUb0dlb2RldGljSGVpZ2h0PWZ1bmN0aW9uKHQsZSxpLG4pe2k9WihpLG90LldHUzg0KTtsZXQgcz1nY3Qsbz1UY3Q7aWYoZT1aKGUsMCksbj1aKG4sITApLG0odCkpe2xldCByPXQubGVuZ3RoO2ZvcihsZXQgYT0wO2E8cjthKz0zKWwuZnJvbUFycmF5KHQsYSxvKSxuJiYobz1pLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UobyxvKSksZSE9PTAmJihzPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKG8scyksbC5tdWx0aXBseUJ5U2NhbGFyKHMsZSxzKSxsLmFkZChvLHMsbykpLHRbYV09by54LHRbYSsxXT1vLnksdFthKzJdPW8uen1yZXR1cm4gdH07dWk9VWN9KTtmdW5jdGlvbiBNYygpe3RoaXMuX2FycmF5PVtdLHRoaXMuX29mZnNldD0wLHRoaXMuX2xlbmd0aD0wfXZhciBTUyx1ej1TKCgpPT57T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTWMucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5ndGh9fX0pO01jLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKHQpe3RoaXMuX2FycmF5LnB1c2godCksdGhpcy5fbGVuZ3RoKyt9O01jLnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7aWYodGhpcy5fbGVuZ3RoPT09MClyZXR1cm47bGV0IHQ9dGhpcy5fYXJyYXksZT10aGlzLl9vZmZzZXQsaT10W2VdO3JldHVybiB0W2VdPXZvaWQgMCxlKyssZT4xMCYmZSoyPnQubGVuZ3RoJiYodGhpcy5fYXJyYXk9dC5zbGljZShlKSxlPTApLHRoaXMuX29mZnNldD1lLHRoaXMuX2xlbmd0aC0tLGl9O01jLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKCl7aWYodGhpcy5fbGVuZ3RoIT09MClyZXR1cm4gdGhpcy5fYXJyYXlbdGhpcy5fb2Zmc2V0XX07TWMucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcnJheS5pbmRleE9mKHQpIT09LTF9O01jLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX2FycmF5Lmxlbmd0aD10aGlzLl9vZmZzZXQ9dGhpcy5fbGVuZ3RoPTB9O01jLnByb3RvdHlwZS5zb3J0PWZ1bmN0aW9uKHQpe3RoaXMuX29mZnNldD4wJiYodGhpcy5fYXJyYXk9dGhpcy5fYXJyYXkuc2xpY2UodGhpcy5fb2Zmc2V0KSx0aGlzLl9vZmZzZXQ9MCksdGhpcy5fYXJyYXkuc29ydCh0KX07U1M9TWN9KTtmdW5jdGlvbiBUeih0LGUsaSxuKXtyZXR1cm4gbnQuc3VidHJhY3QoZSx0LGxkKSxudC5tdWx0aXBseUJ5U2NhbGFyKGxkLGkvbixsZCksbnQuYWRkKHQsbGQsbGQpLFtsZC54LGxkLnldfWZ1bmN0aW9uIFljdCh0LGUsaSxuKXtyZXR1cm4gbC5zdWJ0cmFjdChlLHQsUWMpLGwubXVsdGlwbHlCeVNjYWxhcihRYyxpL24sUWMpLGwuYWRkKHQsUWMsUWMpLFtRYy54LFFjLnksUWMuel19ZnVuY3Rpb24gVWN0KHQsZSxpKXtsZXQgbj1pLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHQsSkMpLHM9aS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLGpDKTtpZihNYXRoLnNpZ24obi5sYXRpdHVkZSk9PT1NYXRoLnNpZ24ocy5sYXRpdHVkZSkpcmV0dXJuO1BDLnNldEVuZFBvaW50cyhuLHMpO2xldCBvPVBDLmZpbmRJbnRlcnNlY3Rpb25XaXRoTGF0aXR1ZGUoMCxEY3QpO2lmKCFtKG8pKXJldHVybjtsZXQgcj1NYXRoLm1pbihuLmxvbmdpdHVkZSxzLmxvbmdpdHVkZSksYT1NYXRoLm1heChuLmxvbmdpdHVkZSxzLmxvbmdpdHVkZSk7aWYoTWF0aC5hYnMoYS1yKT5MLlBJKXtsZXQgaD1yO3I9YSxhPWh9aWYoIShvLmxvbmdpdHVkZTxyfHxvLmxvbmdpdHVkZT5hKSlyZXR1cm4gaS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihvKX1mdW5jdGlvbiBNY3QodCxlLGksbil7aWYobj09PXRpLlJIVU1CKXJldHVybiBVY3QodCxlLGkpO2xldCBzPW5vLmxpbmVTZWdtZW50UGxhbmUodCxlLEtpLk9SSUdJTl9YWV9QTEFORSk7aWYobShzKSlyZXR1cm4gaS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHMscyl9ZnVuY3Rpb24ga2N0KHQsZSxpKXtsZXQgbj1bXSxzLG8scixhLGgsQT0wO2Zvcig7QTx0Lmxlbmd0aDspe3M9dFtBXSxvPXRbKEErMSkldC5sZW5ndGhdLHI9TC5zaWduKHMueiksYT1MLnNpZ24oby56KTtsZXQgZD1mPT5lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGYsUWN0KS5sb25naXR1ZGU7aWYocj09PTApbi5wdXNoKHtwb3NpdGlvbjpBLHR5cGU6cix2aXNpdGVkOiExLG5leHQ6YSx0aGV0YTpkKHMpfSk7ZWxzZSBpZihhIT09MCl7aWYoaD1NY3QocyxvLGUsaSksKytBLCFtKGgpKWNvbnRpbnVlO3Quc3BsaWNlKEEsMCxoKSxuLnB1c2goe3Bvc2l0aW9uOkEsdHlwZTpyLHZpc2l0ZWQ6ITEsbmV4dDphLHRoZXRhOmQoaCl9KX0rK0F9cmV0dXJuIG59ZnVuY3Rpb24gTnoodCxlLGksbixzLG8scil7bGV0IGE9W10saD1vLEE9Zj0+RT0+RS5wb3NpdGlvbj09PWYsZD1bXTtkb3tsZXQgZj1pW2hdO2EucHVzaChmKTtsZXQgRT1uLmZpbmRJbmRleChBKGgpKSxfPW5bRV07aWYoIW0oXykpeysraDtjb250aW51ZX1sZXR7dmlzaXRlZDpSLHR5cGU6SSxuZXh0OkN9PV87aWYoXy52aXNpdGVkPSEwLEk9PT0wKXtpZihDPT09MCl7bGV0IEY9bltFLShyPzE6LTEpXTtpZihGPy5wb3NpdGlvbj09PWgrMSlGLnZpc2l0ZWQ9ITA7ZWxzZXsrK2g7Y29udGludWV9fWlmKCFSJiZyJiZDPjB8fG89PT1oJiYhciYmQzwwKXsrK2g7Y29udGludWV9fWlmKCEocj9JPj0wOkk8PTApKXsrK2g7Y29udGludWV9Unx8ZC5wdXNoKGgpO2xldCBUPUUrKHI/MTotMSksYj1uW1RdO2lmKCFtKGIpKXsrK2g7Y29udGludWV9aD1iLnBvc2l0aW9ufXdoaWxlKGg8aS5sZW5ndGgmJmg+PTAmJmghPT1vJiZhLmxlbmd0aDxpLmxlbmd0aCk7dC5zcGxpY2UoZSxzLGEpO2ZvcihsZXQgZiBvZiBkKWU9TnoodCwrK2UsaSxuLDAsZiwhcik7cmV0dXJuIGV9dmFyIFVuLGxkLFFjLEpDLGpDLFZjdCxTY3QsUEMsT2N0LEJjdCxHY3QsV2N0LERjdCxRY3QsTGN0LHljdCx3Y3QseGN0LEN6LGd6LFBjdCxKY3QsaWksRVI9UygoKT0+e0dsKCk7U2EoKTtYZSgpO0h0KCk7cmkoKTtvaSgpO0Z0KCk7bXQoKTtPZSgpO0hFKCk7eWkoKTtqaSgpO0VuKCk7Z0EoKTtEaSgpO1VsKCk7X2UoKTtkbigpO25oKCk7Y3AoKTtQYSgpO1hpKCk7JHMoKTt1eigpO2ZjKCk7VW49e307VW4uY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aD1mdW5jdGlvbih0LGUpe2xldCBpPTAsbj1bdF07Zm9yKDtuLmxlbmd0aD4wOyl7bGV0IHM9bi5wb3AoKTtpZighbShzKSljb250aW51ZTtpKz0yO2xldCBvPXMucG9zaXRpb25zLHI9cy5ob2xlcztpZihtKG8pJiZvLmxlbmd0aD4wJiYoaSs9by5sZW5ndGgqZS5wYWNrZWRMZW5ndGgpLG0ocikpe2xldCBhPXIubGVuZ3RoO2ZvcihsZXQgaD0wO2g8YTsrK2gpbi5wdXNoKHJbaF0pfX1yZXR1cm4gaX07VW4ucGFja1BvbHlnb25IaWVyYXJjaHk9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9W3RdO2Zvcig7cy5sZW5ndGg+MDspe2xldCBvPXMucG9wKCk7aWYoIW0obykpY29udGludWU7bGV0IHI9by5wb3NpdGlvbnMsYT1vLmhvbGVzO2lmKGVbaSsrXT1tKHIpP3IubGVuZ3RoOjAsZVtpKytdPW0oYSk/YS5sZW5ndGg6MCxtKHIpKXtsZXQgaD1yLmxlbmd0aDtmb3IobGV0IEE9MDtBPGg7KytBLGkrPW4ucGFja2VkTGVuZ3RoKW4ucGFjayhyW0FdLGUsaSl9aWYobShhKSl7bGV0IGg9YS5sZW5ndGg7Zm9yKGxldCBBPTA7QTxoOysrQSlzLnB1c2goYVtBXSl9fXJldHVybiBpfTtVbi51bnBhY2tQb2x5Z29uSGllcmFyY2h5PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10W2UrK10scz10W2UrK10sbz1uZXcgQXJyYXkobikscj1zPjA/bmV3IEFycmF5KHMpOnZvaWQgMDtmb3IobGV0IGE9MDthPG47KythLGUrPWkucGFja2VkTGVuZ3RoKW9bYV09aS51bnBhY2sodCxlKTtmb3IobGV0IGE9MDthPHM7KythKXJbYV09VW4udW5wYWNrUG9seWdvbkhpZXJhcmNoeSh0LGUsaSksZT1yW2FdLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIHJbYV0uc3RhcnRpbmdJbmRleDtyZXR1cm57cG9zaXRpb25zOm8saG9sZXM6cixzdGFydGluZ0luZGV4OmV9fTtsZD1uZXcgbnQ7UWM9bmV3IGw7VW4uc3ViZGl2aWRlTGluZUNvdW50PWZ1bmN0aW9uKHQsZSxpKXtsZXQgcz1sLmRpc3RhbmNlKHQsZSkvaSxvPU1hdGgubWF4KDAsTWF0aC5jZWlsKEwubG9nMihzKSkpO3JldHVybiBNYXRoLnBvdygyLG8pfTtKQz1uZXcgdXQsakM9bmV3IHV0LFZjdD1uZXcgdXQsU2N0PW5ldyBsLFBDPW5ldyBlcjtVbi5zdWJkaXZpZGVSaHVtYkxpbmVDb3VudD1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsSkMpLG89dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhpLGpDKSxhPW5ldyBlcihzLG8sdCkuc3VyZmFjZURpc3RhbmNlL24saD1NYXRoLm1heCgwLE1hdGguY2VpbChMLmxvZzIoYSkpKTtyZXR1cm4gTWF0aC5wb3coMixoKX07VW4uc3ViZGl2aWRlVGV4Y29vcmRMaW5lPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj1Vbi5zdWJkaXZpZGVMaW5lQ291bnQoaSxuLHMpLGE9bnQuZGlzdGFuY2UodCxlKSxoPWEvcixBPW87QS5sZW5ndGg9cioyO2xldCBkPTA7Zm9yKGxldCBmPTA7ZjxyO2YrKyl7bGV0IEU9VHoodCxlLGYqaCxhKTtBW2QrK109RVswXSxBW2QrK109RVsxXX1yZXR1cm4gQX07VW4uc3ViZGl2aWRlTGluZT1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz1Vbi5zdWJkaXZpZGVMaW5lQ291bnQodCxlLGkpLG89bC5kaXN0YW5jZSh0LGUpLHI9by9zO20obil8fChuPVtdKTtsZXQgYT1uO2EubGVuZ3RoPXMqMztsZXQgaD0wO2ZvcihsZXQgQT0wO0E8cztBKyspe2xldCBkPVljdCh0LGUsQSpyLG8pO2FbaCsrXT1kWzBdLGFbaCsrXT1kWzFdLGFbaCsrXT1kWzJdfXJldHVybiBhfTtVbi5zdWJkaXZpZGVUZXhjb29yZFJodW1iTGluZT1mdW5jdGlvbih0LGUsaSxuLHMsbyxyKXtsZXQgYT1pLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG4sSkMpLGg9aS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhzLGpDKTtQQy5zZXRFbmRQb2ludHMoYSxoKTtsZXQgQT1QQy5zdXJmYWNlRGlzdGFuY2UvbyxkPU1hdGgubWF4KDAsTWF0aC5jZWlsKEwubG9nMihBKSkpLGY9TWF0aC5wb3coMixkKSxFPW50LmRpc3RhbmNlKHQsZSksXz1FL2YsUj1yO1IubGVuZ3RoPWYqMjtsZXQgST0wO2ZvcihsZXQgQz0wO0M8ZjtDKyspe2xldCBOPVR6KHQsZSxDKl8sRSk7UltJKytdPU5bMF0sUltJKytdPU5bMV19cmV0dXJuIFJ9O1VuLnN1YmRpdmlkZVJodW1iTGluZT1mdW5jdGlvbih0LGUsaSxuLHMpe2xldCBvPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZSxKQykscj10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGksakMpLGE9bmV3IGVyKG8scix0KSxoPWEuc3VyZmFjZURpc3RhbmNlL24sQT1NYXRoLm1heCgwLE1hdGguY2VpbChMLmxvZzIoaCkpKSxkPU1hdGgucG93KDIsQSksZj1hLnN1cmZhY2VEaXN0YW5jZS9kO20ocyl8fChzPVtdKTtsZXQgRT1zO0UubGVuZ3RoPWQqMztsZXQgXz0wO2ZvcihsZXQgUj0wO1I8ZDtSKyspe2xldCBJPWEuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShSKmYsVmN0KSxDPXQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oSSxTY3QpO0VbXysrXT1DLngsRVtfKytdPUMueSxFW18rK109Qy56fXJldHVybiBFfTtPY3Q9bmV3IGwsQmN0PW5ldyBsLEdjdD1uZXcgbCxXY3Q9bmV3IGw7VW4uc2NhbGVUb0dlb2RldGljSGVpZ2h0RXh0cnVkZWQ9ZnVuY3Rpb24odCxlLGksbixzKXtuPVoobixvdC5XR1M4NCk7bGV0IG89T2N0LHI9QmN0LGE9R2N0LGg9V2N0O2lmKG0odCkmJm0odC5hdHRyaWJ1dGVzKSYmbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24pKXtsZXQgQT10LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGQ9QS5sZW5ndGgvMjtmb3IobGV0IGY9MDtmPGQ7Zis9MylsLmZyb21BcnJheShBLGYsYSksbi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoYSxvKSxoPW4uc2NhbGVUb0dlb2RldGljU3VyZmFjZShhLGgpLHI9bC5tdWx0aXBseUJ5U2NhbGFyKG8saSxyKSxyPWwuYWRkKGgscixyKSxBW2YrZF09ci54LEFbZisxK2RdPXIueSxBW2YrMitkXT1yLnoscyYmKGg9bC5jbG9uZShhLGgpKSxyPWwubXVsdGlwbHlCeVNjYWxhcihvLGUscikscj1sLmFkZChoLHIsciksQVtmXT1yLngsQVtmKzFdPXIueSxBW2YrMl09ci56fXJldHVybiB0fTtVbi5wb2x5Z29uT3V0bGluZXNGcm9tSGllcmFyY2h5PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1bXSxzPW5ldyBTUztzLmVucXVldWUodCk7bGV0IG8scixhO2Zvcig7cy5sZW5ndGghPT0wOyl7bGV0IGg9cy5kZXF1ZXVlKCksQT1oLnBvc2l0aW9ucztpZihlKWZvcihhPUEubGVuZ3RoLG89MDtvPGE7bysrKWkuc2NhbGVUb0dlb2RldGljU3VyZmFjZShBW29dLEFbb10pO2lmKEE9WG4oQSxsLmVxdWFsc0Vwc2lsb24sITApLEEubGVuZ3RoPDMpY29udGludWU7bGV0IGQ9aC5ob2xlcz9oLmhvbGVzLmxlbmd0aDowO2ZvcihvPTA7bzxkO28rKyl7bGV0IGY9aC5ob2xlc1tvXSxFPWYucG9zaXRpb25zO2lmKGUpZm9yKGE9RS5sZW5ndGgscj0wO3I8YTsrK3IpaS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKEVbcl0sRVtyXSk7aWYoRT1YbihFLGwuZXF1YWxzRXBzaWxvbiwhMCksRS5sZW5ndGg8Myljb250aW51ZTtuLnB1c2goRSk7bGV0IF89MDtmb3IobShmLmhvbGVzKSYmKF89Zi5ob2xlcy5sZW5ndGgpLHI9MDtyPF87cisrKXMuZW5xdWV1ZShmLmhvbGVzW3JdKX1uLnB1c2goQSl9cmV0dXJuIG59O0RjdD1uZXcgdXQ7UWN0PW5ldyB1dDtVbi5zcGxpdFBvbHlnb25zT25FcXVhdG9yPWZ1bmN0aW9uKHQsZSxpLG4pe20obil8fChuPVtdKSxuLnNwbGljZSgwLDAsLi4udCksbi5sZW5ndGg9dC5sZW5ndGg7bGV0IHM9MDtmb3IoO3M8bi5sZW5ndGg7KXtsZXQgbz1uW3NdLHI9by5zbGljZSgpO2lmKG8ubGVuZ3RoPDMpe25bc109ciwrK3M7Y29udGludWV9bGV0IGE9a2N0KHIsZSxpKTtpZihyLmxlbmd0aD09PW8ubGVuZ3RofHxhLmxlbmd0aDw9MSl7bltzXT1yLCsrcztjb250aW51ZX1hLnNvcnQoKEEsZCk9PkEudGhldGEtZC50aGV0YSk7bGV0IGg9clswXS56Pj0wO3M9TnoobixzLHIsYSwxLDAsaCl9cmV0dXJuIG59O1VuLnBvbHlnb25zRnJvbUhpZXJhcmNoeT1mdW5jdGlvbih0LGUsaSxuLHMsbyl7bGV0IHI9W10sYT1bXSxoPW5ldyBTUztoLmVucXVldWUodCk7bGV0IEE9bShvKTtmb3IoO2gubGVuZ3RoIT09MDspe2xldCBkPWguZGVxdWV1ZSgpLGY9ZC5wb3NpdGlvbnMsRT1kLmhvbGVzLF8sUjtpZihuKWZvcihSPWYubGVuZ3RoLF89MDtfPFI7XysrKXMuc2NhbGVUb0dlb2RldGljU3VyZmFjZShmW19dLGZbX10pO2lmKGV8fChmPVhuKGYsbC5lcXVhbHNFcHNpbG9uLCEwKSksZi5sZW5ndGg8Myljb250aW51ZTtsZXQgST1pKGYpO2lmKCFtKEkpKWNvbnRpbnVlO2xldCBDPVtdLE49dWkuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKEkpO2lmKE49PT1Vcy5DTE9DS1dJU0UmJihJLnJldmVyc2UoKSxmPWYuc2xpY2UoKS5yZXZlcnNlKCkpLEEpe0E9ITE7bGV0IFU9W2ZdO2lmKFU9byhVLFUpLFUubGVuZ3RoPjEpe2ZvcihsZXQgUSBvZiBVKWguZW5xdWV1ZShuZXcgc2YoUSxFKSk7Y29udGludWV9fWxldCBUPWYuc2xpY2UoKSxiPW0oRSk/RS5sZW5ndGg6MCxGPVtdLEI7Zm9yKF89MDtfPGI7XysrKXtsZXQgVT1FW19dLFE9VS5wb3NpdGlvbnM7aWYobilmb3IoUj1RLmxlbmd0aCxCPTA7QjxSOysrQilzLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoUVtCXSxRW0JdKTtpZihlfHwoUT1YbihRLGwuZXF1YWxzRXBzaWxvbiwhMCkpLFEubGVuZ3RoPDMpY29udGludWU7bGV0IE09aShRKTtpZighbShNKSljb250aW51ZTtOPXVpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChNKSxOPT09VXMuQ0xPQ0tXSVNFJiYoTS5yZXZlcnNlKCksUT1RLnNsaWNlKCkucmV2ZXJzZSgpKSxGLnB1c2goUSksQy5wdXNoKFQubGVuZ3RoKSxUPVQuY29uY2F0KFEpLEk9SS5jb25jYXQoTSk7bGV0IGs9MDtmb3IobShVLmhvbGVzKSYmKGs9VS5ob2xlcy5sZW5ndGgpLEI9MDtCPGs7QisrKWguZW5xdWV1ZShVLmhvbGVzW0JdKX1yLnB1c2goe291dGVyUmluZzpmLGhvbGVzOkZ9KSxhLnB1c2goe3Bvc2l0aW9uczpULHBvc2l0aW9uczJEOkksaG9sZXM6Q30pfXJldHVybntoaWVyYXJjaHk6cixwb2x5Z29uczphfX07TGN0PW5ldyBudCx5Y3Q9bmV3IGwsd2N0PW5ldyBBZSx4Y3Q9bmV3IGx0O1VuLmNvbXB1dGVCb3VuZGluZ1JlY3RhbmdsZT1mdW5jdGlvbih0LGUsaSxuLHMpe2xldCBvPUFlLmZyb21BeGlzQW5nbGUodCxuLHdjdCkscj1sdC5mcm9tUXVhdGVybmlvbihvLHhjdCksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksZD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksZj1pLmxlbmd0aDtmb3IobGV0IEU9MDtFPGY7KytFKXtsZXQgXz1sLmNsb25lKGlbRV0seWN0KTtsdC5tdWx0aXBseUJ5VmVjdG9yKHIsXyxfKTtsZXQgUj1lKF8sTGN0KTttKFIpJiYoYT1NYXRoLm1pbihhLFIueCksaD1NYXRoLm1heChoLFIueCksQT1NYXRoLm1pbihBLFIueSksZD1NYXRoLm1heChkLFIueSkpfXJldHVybiBzLng9YSxzLnk9QSxzLndpZHRoPWgtYSxzLmhlaWdodD1kLUEsc307VW4uY3JlYXRlR2VvbWV0cnlGcm9tUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2xldCBhPXVpLnRyaWFuZ3VsYXRlKGUucG9zaXRpb25zMkQsZS5ob2xlcyk7YS5sZW5ndGg8MyYmKGE9WzAsMSwyXSk7bGV0IGg9ZS5wb3NpdGlvbnMsQT1tKGkpLGQ9QT9pLnBvc2l0aW9uczp2b2lkIDA7aWYocyl7bGV0IGY9aC5sZW5ndGgsRT1uZXcgQXJyYXkoZiozKSxfPTA7Zm9yKGxldCBDPTA7QzxmO0MrKyl7bGV0IE49aFtDXTtFW18rK109Ti54LEVbXysrXT1OLnksRVtfKytdPU4uen1sZXQgUj17YXR0cmlidXRlczp7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpFfSl9LGluZGljZXM6YSxwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFU307QSYmKFIuYXR0cmlidXRlcy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6bnQucGFja0FycmF5KGQpfSkpO2xldCBJPW5ldyBzZShSKTtyZXR1cm4gby5ub3JtYWw/d2kuY29tcHV0ZU5vcm1hbChJKTpJfWlmKHI9PT10aS5HRU9ERVNJQylyZXR1cm4gdWkuY29tcHV0ZVN1YmRpdmlzaW9uKHQsaCxhLGQsbik7aWYocj09PXRpLlJIVU1CKXJldHVybiB1aS5jb21wdXRlUmh1bWJMaW5lU3ViZGl2aXNpb24odCxoLGEsZCxuKX07Q3o9W10sZ3o9W10sUGN0PW5ldyBsLEpjdD1uZXcgbDtVbi5jb21wdXRlV2FsbEdlb21ldHJ5PWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcixhLGgsQSxkLGYsRSxfLFIsST10Lmxlbmd0aCxDPTAsTj0wLFQ9bShlKSxiPVQ/ZS5wb3NpdGlvbnM6dm9pZCAwO2lmKHMpZm9yKGE9SSozKjIscj1uZXcgQXJyYXkoYSoyKSxUJiYoUj1JKjIqMixfPW5ldyBBcnJheShSKjIpKSxoPTA7aDxJO2grKylBPXRbaF0sZD10WyhoKzEpJUldLHJbQ109cltDK2FdPUEueCwrK0MscltDXT1yW0MrYV09QS55LCsrQyxyW0NdPXJbQythXT1BLnosKytDLHJbQ109cltDK2FdPWQueCwrK0MscltDXT1yW0MrYV09ZC55LCsrQyxyW0NdPXJbQythXT1kLnosKytDLFQmJihmPWJbaF0sRT1iWyhoKzEpJUldLF9bTl09X1tOK1JdPWYueCwrK04sX1tOXT1fW04rUl09Zi55LCsrTixfW05dPV9bTitSXT1FLngsKytOLF9bTl09X1tOK1JdPUUueSwrK04pO2Vsc2V7bGV0IE09TC5jaG9yZExlbmd0aChuLGkubWF4aW11bVJhZGl1cyksaz0wO2lmKG89PT10aS5HRU9ERVNJQylmb3IoaD0wO2g8STtoKyspays9VW4uc3ViZGl2aWRlTGluZUNvdW50KHRbaF0sdFsoaCsxKSVJXSxNKTtlbHNlIGlmKG89PT10aS5SSFVNQilmb3IoaD0wO2g8STtoKyspays9VW4uc3ViZGl2aWRlUmh1bWJMaW5lQ291bnQoaSx0W2hdLHRbKGgrMSklSV0sTSk7Zm9yKGE9KGsrSSkqMyxyPW5ldyBBcnJheShhKjIpLFQmJihSPShrK0kpKjIsXz1uZXcgQXJyYXkoUioyKSksaD0wO2g8STtoKyspe0E9dFtoXSxkPXRbKGgrMSklSV07bGV0IHksYztUJiYoZj1iW2hdLEU9YlsoaCsxKSVJXSksbz09PXRpLkdFT0RFU0lDPyh5PVVuLnN1YmRpdmlkZUxpbmUoQSxkLE0sZ3opLFQmJihjPVVuLnN1YmRpdmlkZVRleGNvb3JkTGluZShmLEUsQSxkLE0sQ3opKSk6bz09PXRpLlJIVU1CJiYoeT1Vbi5zdWJkaXZpZGVSaHVtYkxpbmUoaSxBLGQsTSxneiksVCYmKGM9VW4uc3ViZGl2aWRlVGV4Y29vcmRSaHVtYkxpbmUoZixFLGksQSxkLE0sQ3opKSk7bGV0IGc9eS5sZW5ndGg7Zm9yKGxldCBPPTA7TzxnOysrTywrK0MpcltDXT15W09dLHJbQythXT15W09dO2lmKHJbQ109ZC54LHJbQythXT1kLngsKytDLHJbQ109ZC55LHJbQythXT1kLnksKytDLHJbQ109ZC56LHJbQythXT1kLnosKytDLFQpe2xldCBPPWMubGVuZ3RoO2ZvcihsZXQgRD0wO0Q8TzsrK0QsKytOKV9bTl09Y1tEXSxfW04rUl09Y1tEXTtfW05dPUUueCxfW04rUl09RS54LCsrTixfW05dPUUueSxfW04rUl09RS55LCsrTn19fUk9ci5sZW5ndGg7bGV0IEY9dGUuY3JlYXRlVHlwZWRBcnJheShJLzMsSS10Lmxlbmd0aCo2KSxCPTA7Zm9yKEkvPTYsaD0wO2g8STtoKyspe2xldCBNPWgsaz1NKzEseT1NK0ksYz15KzE7QT1sLmZyb21BcnJheShyLE0qMyxQY3QpLGQ9bC5mcm9tQXJyYXkocixrKjMsSmN0KSwhbC5lcXVhbHNFcHNpbG9uKEEsZCxMLkVQU0lMT04xMCxMLkVQU0lMT04xMCkmJihGW0IrK109TSxGW0IrK109eSxGW0IrK109ayxGW0IrK109ayxGW0IrK109eSxGW0IrK109Yyl9bGV0IFU9e2F0dHJpYnV0ZXM6bmV3IHdlKHtwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnJ9KX0pLGluZGljZXM6RixwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFU307cmV0dXJuIFQmJihVLmF0dHJpYnV0ZXMuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOl99KSksbmV3IHNlKFUpfTtpaT1Vbn0pO2Z1bmN0aW9uIHNsdCh0LGUsaSxuLHMsbyxyLGEsaCl7bGV0IEE9dC5wb3NpdGlvbnMsZD11aS50cmlhbmd1bGF0ZSh0LnBvc2l0aW9uczJELHQuaG9sZXMpO2QubGVuZ3RoPDMmJihkPVswLDEsMl0pO2xldCBmPXRlLmNyZWF0ZVR5cGVkQXJyYXkoQS5sZW5ndGgsZC5sZW5ndGgpO2Yuc2V0KGQpO2xldCBFPWVsdDtpZihuIT09MCl7bGV0IGM9QWUuZnJvbUF4aXNBbmdsZShyLG4sRnopO2lmKEU9bHQuZnJvbVF1YXRlcm5pb24oYyxFKSxlLnRhbmdlbnR8fGUuYml0YW5nZW50KXtjPUFlLmZyb21BeGlzQW5nbGUociwtbixGeik7bGV0IGc9bHQuZnJvbVF1YXRlcm5pb24oYyxpbHQpO2E9bC5ub3JtYWxpemUobHQubXVsdGlwbHlCeVZlY3RvcihnLGEsYSksYSksZS5iaXRhbmdlbnQmJihoPWwubm9ybWFsaXplKGwuY3Jvc3MocixhLGgpLGgpKX19ZWxzZSBFPWx0LmNsb25lKGx0LklERU5USVRZLEUpO2xldCBfPXpjdDtlLnN0JiYoXy54PWkueCxfLnk9aS55KTtsZXQgUj1BLmxlbmd0aCxJPVIqMyxDPW5ldyBGbG9hdDY0QXJyYXkoSSksTj1lLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KEkpOnZvaWQgMCxUPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KEkpOnZvaWQgMCxiPWUuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoSSk6dm9pZCAwLEY9ZS5zdD9uZXcgRmxvYXQzMkFycmF5KFIqMik6dm9pZCAwLEI9MCxVPTAsUT0wLE09MCxrPTA7Zm9yKGxldCBjPTA7YzxSO2MrKyl7bGV0IGc9QVtjXTtpZihDW0IrK109Zy54LENbQisrXT1nLnksQ1tCKytdPWcueixlLnN0KWlmKG0ocykmJnMucG9zaXRpb25zLmxlbmd0aD09PVIpRltrKytdPXMucG9zaXRpb25zW2NdLngsRltrKytdPXMucG9zaXRpb25zW2NdLnk7ZWxzZXtsZXQgTz1sdC5tdWx0aXBseUJ5VmVjdG9yKEUsZyxqY3QpLEQ9byhPLHZjdCk7bnQuc3VidHJhY3QoRCxfLEQpO2xldCB3PUwuY2xhbXAoRC54L2kud2lkdGgsMCwxKSx4PUwuY2xhbXAoRC55L2kuaGVpZ2h0LDAsMSk7RltrKytdPXcsRltrKytdPXh9ZS5ub3JtYWwmJihOW1UrK109ci54LE5bVSsrXT1yLnksTltVKytdPXIueiksZS50YW5nZW50JiYoVFtNKytdPWEueCxUW00rK109YS55LFRbTSsrXT1hLnopLGUuYml0YW5nZW50JiYoYltRKytdPWgueCxiW1ErK109aC55LGJbUSsrXT1oLnopfWxldCB5PW5ldyB3ZTtyZXR1cm4gZS5wb3NpdGlvbiYmKHkucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpDfSkpLGUubm9ybWFsJiYoeS5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOk59KSksZS50YW5nZW50JiYoeS50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpUfSkpLGUuYml0YW5nZW50JiYoeS5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmJ9KSksZS5zdCYmKHkuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkZ9KSksbmV3IHNlKHthdHRyaWJ1dGVzOnksaW5kaWNlczpmLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfSl9ZnVuY3Rpb24gZGQodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9seWdvbkhpZXJhcmNoeSxpPXQudGV4dHVyZUNvb3JkaW5hdGVzO3AuZGVmaW5lZCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5IixlKTtsZXQgbj1aKHQudmVydGV4Rm9ybWF0LFN0LkRFRkFVTFQpO3RoaXMuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShuKSx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fc3RSb3RhdGlvbj1aKHQuc3RSb3RhdGlvbiwwKSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNvcGxhbmFyUG9seWdvbkdlb21ldHJ5Iix0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZXM9aSx0aGlzLnBhY2tlZExlbmd0aD1paS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsbCkrU3QucGFja2VkTGVuZ3RoK290LnBhY2tlZExlbmd0aCsobShpKT9paS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGksbnQpOjEpKzJ9dmFyIGpjdCxIY3QsdmN0LHpjdCxLY3QsWGN0LHFjdCxfUiwkY3QsdGx0LEZ6LGVsdCxpbHQsbmx0LG9sdCxybHQsYWx0LE9TLGJ6PVMoKCk9PntTYSgpO0VyKCk7X2koKTtYZSgpO0h0KCk7YWUoKTtvaSgpO1RTKCk7RnQoKTttdCgpO09lKCk7eWkoKTtqaSgpO0VuKCk7dUEoKTtnQSgpO0RpKCk7X2UoKTtkbigpO0VSKCk7UGEoKTtYaSgpOyRzKCk7THMoKTtqY3Q9bmV3IGwsSGN0PW5ldyBtaSx2Y3Q9bmV3IG50LHpjdD1uZXcgbnQsS2N0PW5ldyBsLFhjdD1uZXcgbCxxY3Q9bmV3IGwsX1I9bmV3IGwsJGN0PW5ldyBsLHRsdD1uZXcgbCxGej1uZXcgQWUsZWx0PW5ldyBsdCxpbHQ9bmV3IGx0LG5sdD1uZXcgbDtkZC5mcm9tUG9zaXRpb25zPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSxwLmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIix0LnBvc2l0aW9ucyk7bGV0IGU9e3BvbHlnb25IaWVyYXJjaHk6e3Bvc2l0aW9uczp0LnBvc2l0aW9uc30sdmVydGV4Rm9ybWF0OnQudmVydGV4Rm9ybWF0LHN0Um90YXRpb246dC5zdFJvdGF0aW9uLGVsbGlwc29pZDp0LmVsbGlwc29pZCx0ZXh0dXJlQ29vcmRpbmF0ZXM6dC50ZXh0dXJlQ29vcmRpbmF0ZXN9O3JldHVybiBuZXcgZGQoZSl9O2RkLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxpPWlpLnBhY2tQb2x5Z29uSGllcmFyY2h5KHQuX3BvbHlnb25IaWVyYXJjaHksZSxpLGwpLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9zdFJvdGF0aW9uLG0odC5fdGV4dHVyZUNvb3JkaW5hdGVzKT9pPWlpLnBhY2tQb2x5Z29uSGllcmFyY2h5KHQuX3RleHR1cmVDb29yZGluYXRlcyxlLGksbnQpOmVbaSsrXT0tMSxlW2krK109dC5wYWNrZWRMZW5ndGgsZX07b2x0PW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxybHQ9bmV3IFN0LGFsdD17cG9seWdvbkhpZXJhcmNoeTp7fX07ZGQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj1paS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxsKTtlPW4uc3RhcnRpbmdJbmRleCxkZWxldGUgbi5zdGFydGluZ0luZGV4O2xldCBzPW90LnVucGFjayh0LGUsb2x0KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IG89U3QudW5wYWNrKHQsZSxybHQpO2UrPVN0LnBhY2tlZExlbmd0aDtsZXQgcj10W2UrK10sYT10W2VdPT09LTE/dm9pZCAwOmlpLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLG50KTttKGEpPyhlPWEuc3RhcnRpbmdJbmRleCxkZWxldGUgYS5zdGFydGluZ0luZGV4KTplKys7bGV0IGg9dFtlKytdO3JldHVybiBtKGkpfHwoaT1uZXcgZGQoYWx0KSksaS5fcG9seWdvbkhpZXJhcmNoeT1uLGkuX2VsbGlwc29pZD1vdC5jbG9uZShzLGkuX2VsbGlwc29pZCksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKG8saS5fdmVydGV4Rm9ybWF0KSxpLl9zdFJvdGF0aW9uPXIsaS5fdGV4dHVyZUNvb3JkaW5hdGVzPWEsaS5wYWNrZWRMZW5ndGg9aCxpfTtkZC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll92ZXJ0ZXhGb3JtYXQsaT10Ll9wb2x5Z29uSGllcmFyY2h5LG49dC5fc3RSb3RhdGlvbixzPXQuX3RleHR1cmVDb29yZGluYXRlcyxvPW0ocykscj1pLnBvc2l0aW9ucztpZihyPVhuKHIsbC5lcXVhbHNFcHNpbG9uLCEwKSxyLmxlbmd0aDwzKXJldHVybjtsZXQgYT1LY3QsaD1YY3QsQT1xY3QsZD0kY3QsZj10bHQ7aWYoIWJmLmNvbXB1dGVQcm9qZWN0VG8yREFyZ3VtZW50cyhyLF9SLGQsZikpcmV0dXJuO2lmKGE9bC5jcm9zcyhkLGYsYSksYT1sLm5vcm1hbGl6ZShhLGEpLCFsLmVxdWFsc0Vwc2lsb24oX1IsbC5aRVJPLEwuRVBTSUxPTjYpKXtsZXQgaz10Ll9lbGxpcHNvaWQuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKF9SLG5sdCk7bC5kb3QoYSxrKTwwJiYoYT1sLm5lZ2F0ZShhLGEpLGQ9bC5uZWdhdGUoZCxkKSl9bGV0IF89YmYuY3JlYXRlUHJvamVjdFBvaW50c1RvMkRGdW5jdGlvbihfUixkLGYpLFI9YmYuY3JlYXRlUHJvamVjdFBvaW50VG8yREZ1bmN0aW9uKF9SLGQsZik7ZS50YW5nZW50JiYoaD1sLmNsb25lKGQsaCkpLGUuYml0YW5nZW50JiYoQT1sLmNsb25lKGYsQSkpO2xldCBJPWlpLnBvbHlnb25zRnJvbUhpZXJhcmNoeShpLG8sXywhMSksQz1JLmhpZXJhcmNoeSxOPUkucG9seWdvbnMsVD1mdW5jdGlvbihrKXtyZXR1cm4ga30sYj1vP2lpLnBvbHlnb25zRnJvbUhpZXJhcmNoeShzLCEwLFQsITEpLnBvbHlnb25zOnZvaWQgMDtpZihDLmxlbmd0aD09PTApcmV0dXJuO3I9Q1swXS5vdXRlclJpbmc7bGV0IEY9TnQuZnJvbVBvaW50cyhyKSxCPWlpLmNvbXB1dGVCb3VuZGluZ1JlY3RhbmdsZShhLFIscixuLEhjdCksVT1bXTtmb3IobGV0IGs9MDtrPE4ubGVuZ3RoO2srKyl7bGV0IHk9bmV3IExuKHtnZW9tZXRyeTpzbHQoTltrXSxlLEIsbixvP2Jba106dm9pZCAwLFIsYSxoLEEpfSk7VS5wdXNoKHkpfWxldCBRPXdpLmNvbWJpbmVJbnN0YW5jZXMoVSlbMF07US5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1uZXcgRmxvYXQ2NEFycmF5KFEuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpLFEuaW5kaWNlcz10ZS5jcmVhdGVUeXBlZEFycmF5KFEuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMsUS5pbmRpY2VzKTtsZXQgTT1RLmF0dHJpYnV0ZXM7cmV0dXJuIGUucG9zaXRpb258fGRlbGV0ZSBNLnBvc2l0aW9uLG5ldyBzZSh7YXR0cmlidXRlczpNLGluZGljZXM6US5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6US5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOkZ9KX07T1M9ZGR9KTt2YXIgQlM9e307SGUoQlMse2RlZmF1bHQ6KCk9PmhsdH0pO2Z1bmN0aW9uIEFsdCh0LGUpe3JldHVybiBtKGUpJiYodD1PUy51bnBhY2sodCxlKSksT1MuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGhsdCxHUz1TKCgpPT57YnooKTttdCgpO2hsdD1BbHR9KTtmdW5jdGlvbiBjbHQodCl7bGV0IGU9dC5sZW5ndGgsaT1uZXcgRmxvYXQ2NEFycmF5KGUqMyksbj10ZS5jcmVhdGVUeXBlZEFycmF5KGUsZSoyKSxzPTAsbz0wO2ZvcihsZXQgYT0wO2E8ZTthKyspe2xldCBoPXRbYV07aVtzKytdPWgueCxpW3MrK109aC55LGlbcysrXT1oLnosbltvKytdPWEsbltvKytdPShhKzEpJWV9bGV0IHI9bmV3IHdlKHtwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOml9KX0pO3JldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6cixpbmRpY2VzOm4scHJpbWl0aXZlVHlwZTpuZS5MSU5FU30pfWZ1bmN0aW9uIG1kKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHk7cC5kZWZpbmVkKCJvcHRpb25zLnBvbHlnb25IaWVyYXJjaHkiLGUpLHRoaXMuX3BvbHlnb25IaWVyYXJjaHk9ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3BsYW5hclBvbHlnb25PdXRsaW5lR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPWlpLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGgoZSxsKSsxfXZhciBsbHQsV1MsWXo9UygoKT0+e1NhKCk7X2koKTtIdCgpO2FlKCk7b2koKTtUUygpO0Z0KCk7bXQoKTt5aSgpO2ppKCk7RW4oKTt1QSgpO2dBKCk7RGkoKTtFUigpO1hpKCk7bWQuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsdC5wb3NpdGlvbnMpO2xldCBlPXtwb2x5Z29uSGllcmFyY2h5Ontwb3NpdGlvbnM6dC5wb3NpdGlvbnN9fTtyZXR1cm4gbmV3IG1kKGUpfTttZC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksaT1paS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsaSxsKSxlW2ldPXQucGFja2VkTGVuZ3RoLGV9O2xsdD17cG9seWdvbkhpZXJhcmNoeTp7fX07bWQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj1paS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxsKTtlPW4uc3RhcnRpbmdJbmRleCxkZWxldGUgbi5zdGFydGluZ0luZGV4O2xldCBzPXRbZV07cmV0dXJuIG0oaSl8fChpPW5ldyBtZChsbHQpKSxpLl9wb2x5Z29uSGllcmFyY2h5PW4saS5wYWNrZWRMZW5ndGg9cyxpfTttZC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb2x5Z29uSGllcmFyY2h5LGk9ZS5wb3NpdGlvbnM7aWYoaT1YbihpLGwuZXF1YWxzRXBzaWxvbiwhMCksaS5sZW5ndGg8M3x8IWJmLnZhbGlkT3V0bGluZShpKSlyZXR1cm47bGV0IHM9aWkucG9seWdvbk91dGxpbmVzRnJvbUhpZXJhcmNoeShlLCExKTtpZihzLmxlbmd0aD09PTApcmV0dXJuO2xldCBvPVtdO2ZvcihsZXQgaD0wO2g8cy5sZW5ndGg7aCsrKXtsZXQgQT1uZXcgTG4oe2dlb21ldHJ5OmNsdChzW2hdKX0pO28ucHVzaChBKX1sZXQgcj13aS5jb21iaW5lSW5zdGFuY2VzKG8pWzBdLGE9TnQuZnJvbVBvaW50cyhlLnBvc2l0aW9ucyk7cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpyLmF0dHJpYnV0ZXMsaW5kaWNlczpyLmluZGljZXMscHJpbWl0aXZlVHlwZTpyLnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6YX0pfTtXUz1tZH0pO3ZhciBEUz17fTtIZShEUyx7ZGVmYXVsdDooKT0+bWx0fSk7ZnVuY3Rpb24gZGx0KHQsZSl7cmV0dXJuIG0oZSkmJih0PVdTLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSxXUy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgbWx0LFVTPVMoKCk9PntZeigpO210KCk7T2UoKTttbHQ9ZGx0fSk7dmFyIGZsdCxDbixmZD1TKCgpPT57Zmx0PXtST1VOREVEOjAsTUlURVJFRDoxLEJFVkVMRUQ6Mn0sQ249T2JqZWN0LmZyZWV6ZShmbHQpfSk7ZnVuY3Rpb24gQnoodCxlLGkpe2xldCBuPVFTO24ubGVuZ3RoPXQ7bGV0IHM7aWYoZT09PWkpe2ZvcihzPTA7czx0O3MrKyluW3NdPWU7cmV0dXJuIG59bGV0IHI9KGktZSkvdDtmb3Iocz0wO3M8dDtzKyspe2xldCBhPWUrcypyO25bc109YX1yZXR1cm4gbn1mdW5jdGlvbiBnbHQodCxlLGksbixzLG8scixhKXtsZXQgaD1uLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodCxrUyksQT1uLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZSxDbHQpLGQ9eW8ubnVtYmVyT2ZQb2ludHModCxlLGkpLGY9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhoLHZDKSxFPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoQSxIQyksXz1CeihkLHMsbyk7TVMuc2V0RW5kUG9pbnRzKGYsRSk7bGV0IFI9TVMuc3VyZmFjZURpc3RhbmNlL2QsST1hO2YuaGVpZ2h0PXM7bGV0IEM9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihmLGtjKTtsLnBhY2soQyxyLEkpLEkrPTM7Zm9yKGxldCBOPTE7TjxkO04rKyl7bGV0IFQ9TVMuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShOKlIsSEMpO1QuaGVpZ2h0PV9bTl0sQz1uLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFQsa2MpLGwucGFjayhDLHIsSSksSSs9M31yZXR1cm4gSX1mdW5jdGlvbiBUbHQodCxlLGksbixzLG8scixhKXtsZXQgaD1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHQsdkMpLEE9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLEhDKSxkPXlvLm51bWJlck9mUG9pbnRzUmh1bWJMaW5lKGgsQSxpKTtoLmhlaWdodD0wLEEuaGVpZ2h0PTA7bGV0IGY9QnooZCxzLG8pO1JSLmVsbGlwc29pZC5lcXVhbHMobil8fChSUj1uZXcgZXIodm9pZCAwLHZvaWQgMCxuKSksUlIuc2V0RW5kUG9pbnRzKGgsQSk7bGV0IEU9UlIuc3VyZmFjZURpc3RhbmNlL2QsXz1hO2guaGVpZ2h0PXM7bGV0IFI9bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihoLGtjKTtsLnBhY2soUixyLF8pLF8rPTM7Zm9yKGxldCBJPTE7STxkO0krKyl7bGV0IEM9UlIuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShJKkUsSEMpO0MuaGVpZ2h0PWZbSV0sUj1uLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEMsa2MpLGwucGFjayhSLHIsXyksXys9M31yZXR1cm4gX312YXIgeW8sRWx0LF9sdCxSbHQsVnosWmx0LFN6LElsdCxwbHQsdWx0LFFTLHZDLEhDLGtjLGtTLENsdCxNUyxSUixPeixObHQsU24sU2Y9UygoKT0+e0h0KCk7cmkoKTtGdCgpO210KCk7T3QoKTtPZSgpO0VOKCk7SEUoKTtVbCgpO19lKCk7YmkoKTtuaCgpO3lvPXt9O3lvLm51bWJlck9mUG9pbnRzPWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1sLmRpc3RhbmNlKHQsZSk7cmV0dXJuIE1hdGguY2VpbChuL2kpfTt5by5udW1iZXJPZlBvaW50c1JodW1iTGluZT1mdW5jdGlvbih0LGUsaSl7bGV0IG49TWF0aC5wb3codC5sb25naXR1ZGUtZS5sb25naXR1ZGUsMikrTWF0aC5wb3codC5sYXRpdHVkZS1lLmxhdGl0dWRlLDIpO3JldHVybiBNYXRoLm1heCgxLE1hdGguY2VpbChNYXRoLnNxcnQobi8oaSppKSkpKX07RWx0PW5ldyB1dDt5by5leHRyYWN0SGVpZ2h0cz1mdW5jdGlvbih0LGUpe2xldCBpPXQubGVuZ3RoLG49bmV3IEFycmF5KGkpO2ZvcihsZXQgcz0wO3M8aTtzKyspe2xldCBvPXRbc107bltzXT1lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG8sRWx0KS5oZWlnaHR9cmV0dXJuIG59O19sdD1uZXcgYXQsUmx0PW5ldyBsLFZ6PW5ldyBsLFpsdD1uZXcgS2kobC5VTklUX1gsMCksU3o9bmV3IGwsSWx0PW5ldyBLaShsLlVOSVRfWCwwKSxwbHQ9bmV3IGwsdWx0PW5ldyBsLFFTPVtdO3ZDPW5ldyB1dCxIQz1uZXcgdXQsa2M9bmV3IGwsa1M9bmV3IGwsQ2x0PW5ldyBsLE1TPW5ldyBGSSxSUj1uZXcgZXI7eW8ud3JhcExvbmdpdHVkZT1mdW5jdGlvbih0LGUpe2xldCBpPVtdLG49W107aWYobSh0KSYmdC5sZW5ndGg+MCl7ZT1aKGUsYXQuSURFTlRJVFkpO2xldCBzPWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihlLF9sdCksbz1hdC5tdWx0aXBseUJ5UG9pbnQocyxsLlpFUk8sUmx0KSxyPWwubm9ybWFsaXplKGF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHMsbC5VTklUX1ksVnopLFZ6KSxhPUtpLmZyb21Qb2ludE5vcm1hbChvLHIsWmx0KSxoPWwubm9ybWFsaXplKGF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHMsbC5VTklUX1gsU3opLFN6KSxBPUtpLmZyb21Qb2ludE5vcm1hbChvLGgsSWx0KSxkPTE7aS5wdXNoKGwuY2xvbmUodFswXSkpO2xldCBmPWlbMF0sRT10Lmxlbmd0aDtmb3IobGV0IF89MTtfPEU7KytfKXtsZXQgUj10W19dO2lmKEtpLmdldFBvaW50RGlzdGFuY2UoQSxmKTwwfHxLaS5nZXRQb2ludERpc3RhbmNlKEEsUik8MCl7bGV0IEk9bm8ubGluZVNlZ21lbnRQbGFuZShmLFIsYSxwbHQpO2lmKG0oSSkpe2xldCBDPWwubXVsdGlwbHlCeVNjYWxhcihyLDVlLTksdWx0KTtLaS5nZXRQb2ludERpc3RhbmNlKGEsZik8MCYmbC5uZWdhdGUoQyxDKSxpLnB1c2gobC5hZGQoSSxDLG5ldyBsKSksbi5wdXNoKGQrMSksbC5uZWdhdGUoQyxDKSxpLnB1c2gobC5hZGQoSSxDLG5ldyBsKSksZD0xfX1pLnB1c2gobC5jbG9uZSh0W19dKSksZCsrLGY9Un1uLnB1c2goZCl9cmV0dXJue3Bvc2l0aW9uczppLGxlbmd0aHM6bn19O3lvLmdlbmVyYXRlQXJjPWZ1bmN0aW9uKHQpe20odCl8fCh0PXt9KTtsZXQgZT10LnBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7bGV0IGk9ZS5sZW5ndGgsbj1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxzPVoodC5oZWlnaHQsMCksbz1BcnJheS5pc0FycmF5KHMpO2lmKGk8MSlyZXR1cm5bXTtpZihpPT09MSl7bGV0IEk9bi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGVbMF0sa1MpO2lmKHM9bz9zWzBdOnMscyE9PTApe2xldCBDPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEksa2MpO2wubXVsdGlwbHlCeVNjYWxhcihDLHMsQyksbC5hZGQoSSxDLEkpfXJldHVybltJLngsSS55LEkuel19bGV0IHI9dC5taW5EaXN0YW5jZTtpZighbShyKSl7bGV0IEk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKTtyPUwuY2hvcmRMZW5ndGgoSSxuLm1heGltdW1SYWRpdXMpfWxldCBhPTAsaDtmb3IoaD0wO2g8aS0xO2grKylhKz15by5udW1iZXJPZlBvaW50cyhlW2hdLGVbaCsxXSxyKTtsZXQgQT0oYSsxKSozLGQ9bmV3IEFycmF5KEEpLGY9MDtmb3IoaD0wO2g8aS0xO2grKyl7bGV0IEk9ZVtoXSxDPWVbaCsxXSxOPW8/c1toXTpzLFQ9bz9zW2grMV06cztmPWdsdChJLEMscixuLE4sVCxkLGYpfVFTLmxlbmd0aD0wO2xldCBFPWVbaS0xXSxfPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoRSx2Qyk7Xy5oZWlnaHQ9bz9zW2ktMV06cztsZXQgUj1uLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKF8sa2MpO3JldHVybiBsLnBhY2soUixkLEEtMyksZH07T3o9bmV3IHV0LE5sdD1uZXcgdXQ7eW8uZ2VuZXJhdGVSaHVtYkFyYz1mdW5jdGlvbih0KXttKHQpfHwodD17fSk7bGV0IGU9dC5wb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2xldCBpPWUubGVuZ3RoLG49Wih0LmVsbGlwc29pZCxvdC5XR1M4NCkscz1aKHQuaGVpZ2h0LDApLG89QXJyYXkuaXNBcnJheShzKTtpZihpPDEpcmV0dXJuW107aWYoaT09PTEpe2xldCBOPW4uc2NhbGVUb0dlb2RldGljU3VyZmFjZShlWzBdLGtTKTtpZihzPW8/c1swXTpzLHMhPT0wKXtsZXQgVD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChOLGtjKTtsLm11bHRpcGx5QnlTY2FsYXIoVCxzLFQpLGwuYWRkKE4sVCxOKX1yZXR1cm5bTi54LE4ueSxOLnpdfWxldCByPVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSksYT0wLGgsQT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGVbMF0sT3opLGQ7Zm9yKGg9MDtoPGktMTtoKyspZD1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGVbaCsxXSxObHQpLGErPXlvLm51bWJlck9mUG9pbnRzUmh1bWJMaW5lKEEsZCxyKSxBPXV0LmNsb25lKGQsT3opO2xldCBmPShhKzEpKjMsRT1uZXcgQXJyYXkoZiksXz0wO2ZvcihoPTA7aDxpLTE7aCsrKXtsZXQgTj1lW2hdLFQ9ZVtoKzFdLGI9bz9zW2hdOnMsRj1vP3NbaCsxXTpzO189VGx0KE4sVCxyLG4sYixGLEUsXyl9UVMubGVuZ3RoPTA7bGV0IFI9ZVtpLTFdLEk9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhSLHZDKTtJLmhlaWdodD1vP3NbaS0xXTpzO2xldCBDPW4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oSSxrYyk7cmV0dXJuIGwucGFjayhDLEUsZi0zKSxFfTt5by5nZW5lcmF0ZUNhcnRlc2lhbkFyYz1mdW5jdGlvbih0KXtsZXQgZT15by5nZW5lcmF0ZUFyYyh0KSxpPWUubGVuZ3RoLzMsbj1uZXcgQXJyYXkoaSk7Zm9yKGxldCBzPTA7czxpO3MrKyluW3NdPWwudW5wYWNrKGUscyozKTtyZXR1cm4gbn07eW8uZ2VuZXJhdGVDYXJ0ZXNpYW5SaHVtYkFyYz1mdW5jdGlvbih0KXtsZXQgZT15by5nZW5lcmF0ZVJodW1iQXJjKHQpLGk9ZS5sZW5ndGgvMyxuPW5ldyBBcnJheShpKTtmb3IobGV0IHM9MDtzPGk7cysrKW5bc109bC51bnBhY2soZSxzKjMpO3JldHVybiBufTtTbj15b30pO2Z1bmN0aW9uIFpSKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImlkZW50aWZpZXIgaXMgcmVxdWlyZWQuIik7bShHelt0XSl8fChHelt0XT0hMCxjb25zb2xlLndhcm4oWihlLHQpKSl9dmFyIEd6LHpDLExTPVMoKCk9PntGdCgpO210KCk7T3QoKTtHej17fTtaUi5nZW9tZXRyeU91dGxpbmVzPSJFbnRpdHkgZ2VvbWV0cnkgb3V0bGluZXMgYXJlIHVuc3VwcG9ydGVkIG9uIHRlcnJhaW4uIE91dGxpbmVzIHdpbGwgYmUgZGlzYWJsZWQuIFRvIGVuYWJsZSBvdXRsaW5lcywgZGlzYWJsZSBnZW9tZXRyeSB0ZXJyYWluIGNsYW1waW5nIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyBoZWlnaHQgdG8gMC4iO1pSLmdlb21ldHJ5WkluZGV4PSJFbnRpdHkgZ2VvbWV0cnkgd2l0aCB6SW5kZXggYXJlIHVuc3VwcG9ydGVkIHdoZW4gaGVpZ2h0IG9yIGV4dHJ1ZGVkSGVpZ2h0IGFyZSBkZWZpbmVkLiAgekluZGV4IHdpbGwgYmUgaWdub3JlZCI7WlIuZ2VvbWV0cnlIZWlnaHRSZWZlcmVuY2U9IkVudGl0eSBjb3JyaWRvciwgZWxsaXBzZSwgcG9seWdvbiBvciByZWN0YW5nbGUgd2l0aCBoZWlnaHRSZWZlcmVuY2UgbXVzdCBhbHNvIGhhdmUgYSBkZWZpbmVkIGhlaWdodC4gIGhlaWdodFJlZmVyZW5jZSB3aWxsIGJlIGlnbm9yZWQiO1pSLmdlb21ldHJ5RXh0cnVkZWRIZWlnaHRSZWZlcmVuY2U9IkVudGl0eSBjb3JyaWRvciwgZWxsaXBzZSwgcG9seWdvbiBvciByZWN0YW5nbGUgd2l0aCBleHRydWRlZEhlaWdodFJlZmVyZW5jZSBtdXN0IGFsc28gaGF2ZSBhIGRlZmluZWQgZXh0cnVkZWRIZWlnaHQuICBleHRydWRlZEhlaWdodFJlZmVyZW5jZSB3aWxsIGJlIGlnbm9yZWQiO3pDPVpSfSk7ZnVuY3Rpb24gRGx0KHQsZSl7bGV0IGk9bmV3IEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IHM9dFtuXTt5Uz1lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHMseVMpLGlbbl09eVMuaGVpZ2h0LHRbbl09ZS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHMscyl9cmV0dXJuIGl9ZnVuY3Rpb24gd1ModCxlLGksbil7bGV0IHM9dFswXSxvPXRbMV0scj1sLmFuZ2xlQmV0d2VlbihzLG8pLGE9TWF0aC5jZWlsKHIvbiksaD1uZXcgQXJyYXkoYSksQTtpZihlPT09aSl7Zm9yKEE9MDtBPGE7QSsrKWhbQV09ZTtyZXR1cm4gaC5wdXNoKGkpLGh9bGV0IGY9KGktZSkvYTtmb3IoQT0xO0E8YTtBKyspe2xldCBFPWUrQSpmO2hbQV09RX1yZXR1cm4gaFswXT1lLGgucHVzaChpKSxofWZ1bmN0aW9uIFVsdCh0LGUsaSxuKXtsZXQgcz1uZXcgb28oaSxuKSxvPXMucHJvamVjdFBvaW50T250b1BsYW5lKGwuYWRkKGksdCxYQyksWEMpLHI9cy5wcm9qZWN0UG9pbnRPbnRvUGxhbmUobC5hZGQoaSxlLHFDKSxxQyksYT1udC5hbmdsZUJldHdlZW4obyxyKTtyZXR1cm4gci54Km8ueS1yLnkqby54Pj0wPy1hOmF9ZnVuY3Rpb24gYmgodCxlLGksbixzLG8scixhKXtsZXQgaD1MbHQsQT15bHQ7RWQ9SW4uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUodCxzLEVkKSxoPWF0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKEVkLE1sdCxoKSxoPWwubm9ybWFsaXplKGgsaCk7bGV0IGQ9VWx0KGgsZSx0LHMpO3hTPWx0LmZyb21Sb3RhdGlvblooZCx4UyksV3ouej1vLEVkPWF0Lm11bHRpcGx5VHJhbnNmb3JtYXRpb24oRWQsYXQuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24oeFMsV3osUWx0KSxFZCk7bGV0IGY9a2x0O2ZbMF09cjtmb3IobGV0IEU9MDtFPGE7RSsrKWZvcihsZXQgXz0wO188aS5sZW5ndGg7Xys9MylBPWwuZnJvbUFycmF5KGksXyxBKSxBPWx0Lm11bHRpcGx5QnlWZWN0b3IoZixBLEEpLEE9YXQubXVsdGlwbHlCeVBvaW50KEVkLEEsQSksbi5wdXNoKEEueCxBLnksQS56KTtyZXR1cm4gbn1mdW5jdGlvbiBQUyh0LGUsaSxuLHMsbyxyKXtmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErPTMpe2xldCBoPWwuZnJvbUFycmF5KHQsYSx3bHQpO249YmgoaCxlLGksbixzLG9bYS8zXSxyLDEpfXJldHVybiBufWZ1bmN0aW9uIHhsdCh0LGUpe2xldCBpPXQubGVuZ3RoLG49bmV3IEFycmF5KGkqNikscz0wLG89ZS54K2Uud2lkdGgvMixyPWUueStlLmhlaWdodC8yLGE9dFswXTtuW3MrK109YS54LW8sbltzKytdPTAsbltzKytdPWEueS1yO2ZvcihsZXQgaD0xO2g8aTtoKyspe2E9dFtoXTtsZXQgQT1hLngtbyxkPWEueS1yO25bcysrXT1BLG5bcysrXT0wLG5bcysrXT1kLG5bcysrXT1BLG5bcysrXT0wLG5bcysrXT1kfXJldHVybiBhPXRbMF0sbltzKytdPWEueC1vLG5bcysrXT0wLG5bcysrXT1hLnktcixufWZ1bmN0aW9uIER6KHQsZSl7bGV0IGk9dC5sZW5ndGgsbj1uZXcgQXJyYXkoaSozKSxzPTAsbz1lLngrZS53aWR0aC8yLHI9ZS55K2UuaGVpZ2h0LzI7Zm9yKGxldCBhPTA7YTxpO2ErKyluW3MrK109dFthXS54LW8sbltzKytdPTAsbltzKytdPXRbYV0ueS1yO3JldHVybiBufWZ1bmN0aW9uIGt6KHQsZSxpLG4scyxvLHIsYSxoLEEpe2xldCBkPWwuYW5nbGVCZXR3ZWVuKGwuc3VidHJhY3QoZSx0LE9mKSxsLnN1YnRyYWN0KGksdCxLQykpLGY9bj09PUNuLkJFVkVMRUQ/MDpNYXRoLmNlaWwoZC9MLnRvUmFkaWFucyg1KSksRTtzP0U9bHQuZnJvbVF1YXRlcm5pb24oQWUuZnJvbUF4aXNBbmdsZShsLm5lZ2F0ZSh0LE9mKSxkLyhmKzEpLFV6KSxReik6RT1sdC5mcm9tUXVhdGVybmlvbihBZS5mcm9tQXhpc0FuZ2xlKHQsZC8oZisxKSxVeiksUXopO2xldCBfLFI7aWYoZT1sLmNsb25lKGUsTXopLGY+MCl7bGV0IEk9QT8yOjE7Zm9yKGxldCBDPTA7QzxmO0MrKyllPWx0Lm11bHRpcGx5QnlWZWN0b3IoRSxlLGUpLF89bC5zdWJ0cmFjdChlLHQsT2YpLF89bC5ub3JtYWxpemUoXyxfKSxzfHwoXz1sLm5lZ2F0ZShfLF8pKSxSPW8uc2NhbGVUb0dlb2RldGljU3VyZmFjZShlLEtDKSxyPWJoKFIsXyxhLHIsbyxoLDEsSSl9ZWxzZSBfPWwuc3VidHJhY3QoZSx0LE9mKSxfPWwubm9ybWFsaXplKF8sXyksc3x8KF89bC5uZWdhdGUoXyxfKSksUj1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZSxLQykscj1iaChSLF8sYSxyLG8saCwxLDEpLGk9bC5jbG9uZShpLE16KSxfPWwuc3VidHJhY3QoaSx0LE9mKSxfPWwubm9ybWFsaXplKF8sXyksc3x8KF89bC5uZWdhdGUoXyxfKSksUj1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoaSxLQykscj1iaChSLF8sYSxyLG8saCwxLDEpO3JldHVybiByfXZhciBLcyxGbHQsYmx0LFlsdCxWbHQsU2x0LE9sdCxCbHQsR2x0LFdsdCxPZixLQyxJUix5UyxYQyxxQyxNbHQsRWQsUWx0LHhTLGtsdCxMbHQseWx0LFd6LHdsdCxVeixNeixReixQbHQsSmx0LExjLCRDPVMoKCk9PntYZSgpO0h0KCk7T3MoKTtyaSgpO2ZkKCk7WG0oKTtfZSgpO2RuKCk7YmkoKTtTZigpOyRzKCk7ZnIoKTtMUygpO0tzPVtuZXcgbCxuZXcgbF0sRmx0PW5ldyBsLGJsdD1uZXcgbCxZbHQ9bmV3IGwsVmx0PW5ldyBsLFNsdD1uZXcgbCxPbHQ9bmV3IGwsQmx0PW5ldyBsLEdsdD1uZXcgbCxXbHQ9bmV3IGwsT2Y9bmV3IGwsS0M9bmV3IGwsSVI9e30seVM9bmV3IHV0O1hDPW5ldyBsLHFDPW5ldyBsO01sdD1uZXcgbCgtMSwwLDApLEVkPW5ldyBhdCxRbHQ9bmV3IGF0LHhTPW5ldyBsdCxrbHQ9bHQuSURFTlRJVFkuY2xvbmUoKSxMbHQ9bmV3IGwseWx0PW5ldyBpZSxXej1uZXcgbDt3bHQ9bmV3IGw7VXo9bmV3IEFlLE16PW5ldyBsLFF6PW5ldyBsdDtJUi5yZW1vdmVEdXBsaWNhdGVzRnJvbVNoYXBlPWZ1bmN0aW9uKHQpe2xldCBlPXQubGVuZ3RoLGk9W107Zm9yKGxldCBuPWUtMSxzPTA7czxlO249cysrKXtsZXQgbz10W25dLHI9dFtzXTtudC5lcXVhbHMobyxyKXx8aS5wdXNoKHIpfXJldHVybiBpfTtJUi5hbmdsZUlzR3JlYXRlclRoYW5QaT1mdW5jdGlvbih0LGUsaSxuKXtsZXQgcz1uZXcgb28oaSxuKSxvPXMucHJvamVjdFBvaW50T250b1BsYW5lKGwuYWRkKGksdCxYQyksWEMpLHI9cy5wcm9qZWN0UG9pbnRPbnRvUGxhbmUobC5hZGQoaSxlLHFDKSxxQyk7cmV0dXJuIHIueCpvLnktci55Km8ueD49MH07UGx0PW5ldyBsLEpsdD1uZXcgbDtJUi5jb21wdXRlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxpLG4scyl7bGV0IG89bi5fZWxsaXBzb2lkLHI9RGx0KHQsbyksYT1uLl9ncmFudWxhcml0eSxoPW4uX2Nvcm5lclR5cGUsQT1zP3hsdChlLGkpOkR6KGUsaSksZD1zP0R6KGUsaSk6dm9pZCAwLGY9aS5oZWlnaHQvMixFPWkud2lkdGgvMixfPXQubGVuZ3RoLFI9W10sST1zP1tdOnZvaWQgMCxDPUZsdCxOPWJsdCxUPVlsdCxiPVZsdCxGPVNsdCxCPU9sdCxVPUJsdCxRPUdsdCxNPVdsdCxrPXRbMF0seT10WzFdO2I9by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoayxiKSxDPWwuc3VidHJhY3QoeSxrLEMpLEM9bC5ub3JtYWxpemUoQyxDKSxRPWwuY3Jvc3MoYixDLFEpLFE9bC5ub3JtYWxpemUoUSxRKTtsZXQgYz1yWzBdLGc9clsxXTtzJiYoST1iaChrLFEsZCxJLG8sYytmLDEsMSkpLE09bC5jbG9uZShrLE0pLGs9eSxOPWwubmVnYXRlKEMsTik7bGV0IE8sRDtmb3IobGV0IEg9MTtIPF8tMTtIKyspe2xldCBqPXM/MjoxO2lmKHk9dFtIKzFdLGsuZXF1YWxzKHkpKXt6QygiUG9zaXRpb25zIGFyZSB0b28gY2xvc2UgYW5kIGFyZSBjb25zaWRlcmVkIGVxdWl2YWxlbnQgd2l0aCByb3VuZGluZyBlcnJvci4iKTtjb250aW51ZX1DPWwuc3VidHJhY3QoeSxrLEMpLEM9bC5ub3JtYWxpemUoQyxDKSxUPWwuYWRkKEMsTixUKSxUPWwubm9ybWFsaXplKFQsVCksYj1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChrLGIpO2xldCBYPWwubXVsdGlwbHlCeVNjYWxhcihiLGwuZG90KEMsYiksUGx0KTtsLnN1YnRyYWN0KEMsWCxYKSxsLm5vcm1hbGl6ZShYLFgpO2xldCB0dD1sLm11bHRpcGx5QnlTY2FsYXIoYixsLmRvdChOLGIpLEpsdCk7aWYobC5zdWJ0cmFjdChOLHR0LHR0KSxsLm5vcm1hbGl6ZSh0dCx0dCksIUwuZXF1YWxzRXBzaWxvbihNYXRoLmFicyhsLmRvdChYLHR0KSksMSxMLkVQU0lMT043KSl7VD1sLmNyb3NzKFQsYixUKSxUPWwuY3Jvc3MoYixULFQpLFQ9bC5ub3JtYWxpemUoVCxUKTtsZXQgSXQ9MS9NYXRoLm1heCguMjUsbC5tYWduaXR1ZGUobC5jcm9zcyhULE4sT2YpKSksZ3Q9SVIuYW5nbGVJc0dyZWF0ZXJUaGFuUGkoQyxOLGssbyk7Z3Q/KEY9bC5hZGQoayxsLm11bHRpcGx5QnlTY2FsYXIoVCxJdCpFLFQpLEYpLEI9bC5hZGQoRixsLm11bHRpcGx5QnlTY2FsYXIoUSxFLEIpLEIpLEtzWzBdPWwuY2xvbmUoTSxLc1swXSksS3NbMV09bC5jbG9uZShCLEtzWzFdKSxPPXdTKEtzLGMrZixnK2YsYSksRD1Tbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOktzLGdyYW51bGFyaXR5OmEsZWxsaXBzb2lkOm99KSxSPVBTKEQsUSxBLFIsbyxPLDEpLFE9bC5jcm9zcyhiLEMsUSksUT1sLm5vcm1hbGl6ZShRLFEpLFU9bC5hZGQoRixsLm11bHRpcGx5QnlTY2FsYXIoUSxFLFUpLFUpLGg9PT1Dbi5ST1VOREVEfHxoPT09Q24uQkVWRUxFRD9reihGLEIsVSxoLGd0LG8sUixBLGcrZixzKTooVD1sLm5lZ2F0ZShULFQpLFI9YmgoayxULEEsUixvLGcrZixJdCxqKSksTT1sLmNsb25lKFUsTSkpOihGPWwuYWRkKGssbC5tdWx0aXBseUJ5U2NhbGFyKFQsSXQqRSxUKSxGKSxCPWwuYWRkKEYsbC5tdWx0aXBseUJ5U2NhbGFyKFEsLUUsQiksQiksS3NbMF09bC5jbG9uZShNLEtzWzBdKSxLc1sxXT1sLmNsb25lKEIsS3NbMV0pLE89d1MoS3MsYytmLGcrZixhKSxEPVNuLmdlbmVyYXRlQXJjKHtwb3NpdGlvbnM6S3MsZ3JhbnVsYXJpdHk6YSxlbGxpcHNvaWQ6b30pLFI9UFMoRCxRLEEsUixvLE8sMSksUT1sLmNyb3NzKGIsQyxRKSxRPWwubm9ybWFsaXplKFEsUSksVT1sLmFkZChGLGwubXVsdGlwbHlCeVNjYWxhcihRLC1FLFUpLFUpLGg9PT1Dbi5ST1VOREVEfHxoPT09Q24uQkVWRUxFRD9reihGLEIsVSxoLGd0LG8sUixBLGcrZixzKTpSPWJoKGssVCxBLFIsbyxnK2YsSXQsaiksTT1sLmNsb25lKFUsTSkpLE49bC5uZWdhdGUoQyxOKX1lbHNlIFI9YmgoTSxRLEEsUixvLGMrZiwxLDEpLE09aztjPWcsZz1yW0grMV0saz15fUtzWzBdPWwuY2xvbmUoTSxLc1swXSksS3NbMV09bC5jbG9uZShrLEtzWzFdKSxPPXdTKEtzLGMrZixnK2YsYSksRD1Tbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOktzLGdyYW51bGFyaXR5OmEsZWxsaXBzb2lkOm99KSxSPVBTKEQsUSxBLFIsbyxPLDEpLHMmJihJPWJoKGssUSxkLEksbyxnK2YsMSwxKSksXz1SLmxlbmd0aDtsZXQgdz1zP18rSS5sZW5ndGg6Xyx4PW5ldyBGbG9hdDY0QXJyYXkodyk7cmV0dXJuIHguc2V0KFIpLHMmJnguc2V0KEksXykseH07TGM9SVJ9KTtmdW5jdGlvbiB0Zyh0LGUsaSxuLHMpe2xldCBvPWwuYW5nbGVCZXR3ZWVuKGwuc3VidHJhY3QoZSx0LEJmKSxsLnN1YnRyYWN0KGksdCxQeikpLHI9bj09PUNuLkJFVkVMRUQ/MTpNYXRoLmNlaWwoby9MLnRvUmFkaWFucyg1KSkrMSxhPXIqMyxoPW5ldyBBcnJheShhKTtoW2EtM109aS54LGhbYS0yXT1pLnksaFthLTFdPWkuejtsZXQgQTtzP0E9bHQuZnJvbVF1YXRlcm5pb24oQWUuZnJvbUF4aXNBbmdsZShsLm5lZ2F0ZSh0LEJmKSxvL3IseXopLHd6KTpBPWx0LmZyb21RdWF0ZXJuaW9uKEFlLmZyb21BeGlzQW5nbGUodCxvL3IseXopLHd6KTtsZXQgZD0wO2U9bC5jbG9uZShlLEJmKTtmb3IobGV0IGY9MDtmPHI7ZisrKWU9bHQubXVsdGlwbHlCeVZlY3RvcihBLGUsZSksaFtkKytdPWUueCxoW2QrK109ZS55LGhbZCsrXT1lLno7cmV0dXJuIGh9ZnVuY3Rpb24gdGR0KHQpe2xldCBlPUp6LGk9anosbj1IeixzPXRbMV07aT1sLmZyb21BcnJheSh0WzFdLHMubGVuZ3RoLTMsaSksbj1sLmZyb21BcnJheSh0WzBdLDAsbiksZT1sLm1pZHBvaW50KGksbixlKTtsZXQgbz10ZyhlLGksbixDbi5ST1VOREVELCExKSxyPXQubGVuZ3RoLTEsYT10W3ItMV07cz10W3JdLGk9bC5mcm9tQXJyYXkoYSxhLmxlbmd0aC0zLGkpLG49bC5mcm9tQXJyYXkocywwLG4pLGU9bC5taWRwb2ludChpLG4sZSk7bGV0IGg9dGcoZSxpLG4sQ24uUk9VTkRFRCwhMSk7cmV0dXJuW28saF19ZnVuY3Rpb24geHoodCxlLGksbil7bGV0IHM9QmY7cmV0dXJuIG4/cz1sLmFkZCh0LGUscyk6KGU9bC5uZWdhdGUoZSxlKSxzPWwuYWRkKHQsZSxzKSksW3MueCxzLnkscy56LGkueCxpLnksaS56XX1mdW5jdGlvbiBKUyh0LGUsaSxuKXtsZXQgcz1uZXcgQXJyYXkodC5sZW5ndGgpLG89bmV3IEFycmF5KHQubGVuZ3RoKSxyPWwubXVsdGlwbHlCeVNjYWxhcihlLGksQmYpLGE9bC5uZWdhdGUocixQeiksaD0wLEE9dC5sZW5ndGgtMTtmb3IobGV0IGQ9MDtkPHQubGVuZ3RoO2QrPTMpe2xldCBmPWwuZnJvbUFycmF5KHQsZCxqbHQpLEU9bC5hZGQoZixhLEx6KTtzW2grK109RS54LHNbaCsrXT1FLnksc1toKytdPUUuejtsZXQgXz1sLmFkZChmLHIsTHopO29bQS0tXT1fLnosb1tBLS1dPV8ueSxvW0EtLV09Xy54fXJldHVybiBuLnB1c2gocyxvKSxufXZhciBqUyxCZixQeixqbHQsTHosd28sSnosanosSHosSGx0LHZsdCx6bHQsS2x0LFhsdCxxbHQsJGx0LHl6LHd6LGVkdCxpZHQsdmksSFM9UygoKT0+e0h0KCk7ZmQoKTttdCgpO19lKCk7ZG4oKTtTZigpOyRDKCk7JHMoKTtqUz17fSxCZj1uZXcgbCxQej1uZXcgbCxqbHQ9bmV3IGwsTHo9bmV3IGwsd289W25ldyBsLG5ldyBsXSxKej1uZXcgbCxqej1uZXcgbCxIej1uZXcgbCxIbHQ9bmV3IGwsdmx0PW5ldyBsLHpsdD1uZXcgbCxLbHQ9bmV3IGwsWGx0PW5ldyBsLHFsdD1uZXcgbCwkbHQ9bmV3IGwseXo9bmV3IEFlLHd6PW5ldyBsdDtqUy5hZGRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLGksbil7bGV0IHM9ZS54LG89ZS55LHI9ZS56O20oaSkmJih0W2ldPXMsdFtpKzFdPW8sdFtpKzJdPXIpLG0obikmJih0W25dPXIsdFtuLTFdPW8sdFtuLTJdPXMpfTtlZHQ9bmV3IGwsaWR0PW5ldyBsO2pTLmNvbXB1dGVQb3NpdGlvbnM9ZnVuY3Rpb24odCl7bGV0IGU9dC5ncmFudWxhcml0eSxpPXQucG9zaXRpb25zLG49dC5lbGxpcHNvaWQscz10LndpZHRoLzIsbz10LmNvcm5lclR5cGUscj10LnNhdmVBdHRyaWJ1dGVzLGE9SnosaD1qeixBPUh6LGQ9SGx0LGY9dmx0LEU9emx0LF89S2x0LFI9WGx0LEk9cWx0LEM9JGx0LE49W10sVD1yP1tdOnZvaWQgMCxiPXI/W106dm9pZCAwLEY9aVswXSxCPWlbMV07aD1sLm5vcm1hbGl6ZShsLnN1YnRyYWN0KEIsRixoKSxoKSxhPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEYsYSksZD1sLm5vcm1hbGl6ZShsLmNyb3NzKGEsaCxkKSxkKSxyJiYoVC5wdXNoKGQueCxkLnksZC56KSxiLnB1c2goYS54LGEueSxhLnopKSxfPWwuY2xvbmUoRixfKSxGPUIsQT1sLm5lZ2F0ZShoLEEpO2xldCBVLFE9W10sTSxrPWkubGVuZ3RoO2ZvcihNPTE7TTxrLTE7TSsrKXthPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEYsYSksQj1pW00rMV0saD1sLm5vcm1hbGl6ZShsLnN1YnRyYWN0KEIsRixoKSxoKSxmPWwubm9ybWFsaXplKGwuYWRkKGgsQSxmKSxmKTtsZXQgYz1sLm11bHRpcGx5QnlTY2FsYXIoYSxsLmRvdChoLGEpLGVkdCk7bC5zdWJ0cmFjdChoLGMsYyksbC5ub3JtYWxpemUoYyxjKTtsZXQgZz1sLm11bHRpcGx5QnlTY2FsYXIoYSxsLmRvdChBLGEpLGlkdCk7aWYobC5zdWJ0cmFjdChBLGcsZyksbC5ub3JtYWxpemUoZyxnKSwhTC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKGwuZG90KGMsZykpLDEsTC5FUFNJTE9ONykpe2Y9bC5jcm9zcyhmLGEsZiksZj1sLmNyb3NzKGEsZixmKSxmPWwubm9ybWFsaXplKGYsZik7bGV0IEQ9cy9NYXRoLm1heCguMjUsbC5tYWduaXR1ZGUobC5jcm9zcyhmLEEsQmYpKSksdz1MYy5hbmdsZUlzR3JlYXRlclRoYW5QaShoLEEsRixuKTtmPWwubXVsdGlwbHlCeVNjYWxhcihmLEQsZiksdz8oUj1sLmFkZChGLGYsUiksQz1sLmFkZChSLGwubXVsdGlwbHlCeVNjYWxhcihkLHMsQyksQyksST1sLmFkZChSLGwubXVsdGlwbHlCeVNjYWxhcihkLHMqMixJKSxJKSx3b1swXT1sLmNsb25lKF8sd29bMF0pLHdvWzFdPWwuY2xvbmUoQyx3b1sxXSksVT1Tbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOndvLGdyYW51bGFyaXR5OmUsZWxsaXBzb2lkOm59KSxOPUpTKFUsZCxzLE4pLHImJihULnB1c2goZC54LGQueSxkLnopLGIucHVzaChhLngsYS55LGEueikpLEU9bC5jbG9uZShJLEUpLGQ9bC5ub3JtYWxpemUobC5jcm9zcyhhLGgsZCksZCksST1sLmFkZChSLGwubXVsdGlwbHlCeVNjYWxhcihkLHMqMixJKSxJKSxfPWwuYWRkKFIsbC5tdWx0aXBseUJ5U2NhbGFyKGQscyxfKSxfKSxvPT09Q24uUk9VTkRFRHx8bz09PUNuLkJFVkVMRUQ/US5wdXNoKHtsZWZ0UG9zaXRpb25zOnRnKFIsRSxJLG8sdyl9KTpRLnB1c2goe2xlZnRQb3NpdGlvbnM6eHooRixsLm5lZ2F0ZShmLGYpLEksdyl9KSk6KEk9bC5hZGQoRixmLEkpLEM9bC5hZGQoSSxsLm5lZ2F0ZShsLm11bHRpcGx5QnlTY2FsYXIoZCxzLEMpLEMpLEMpLFI9bC5hZGQoSSxsLm5lZ2F0ZShsLm11bHRpcGx5QnlTY2FsYXIoZCxzKjIsUiksUiksUiksd29bMF09bC5jbG9uZShfLHdvWzBdKSx3b1sxXT1sLmNsb25lKEMsd29bMV0pLFU9U24uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp3byxncmFudWxhcml0eTplLGVsbGlwc29pZDpufSksTj1KUyhVLGQscyxOKSxyJiYoVC5wdXNoKGQueCxkLnksZC56KSxiLnB1c2goYS54LGEueSxhLnopKSxFPWwuY2xvbmUoUixFKSxkPWwubm9ybWFsaXplKGwuY3Jvc3MoYSxoLGQpLGQpLFI9bC5hZGQoSSxsLm5lZ2F0ZShsLm11bHRpcGx5QnlTY2FsYXIoZCxzKjIsUiksUiksUiksXz1sLmFkZChJLGwubmVnYXRlKGwubXVsdGlwbHlCeVNjYWxhcihkLHMsXyksXyksXyksbz09PUNuLlJPVU5ERUR8fG89PT1Dbi5CRVZFTEVEP1EucHVzaCh7cmlnaHRQb3NpdGlvbnM6dGcoSSxFLFIsbyx3KX0pOlEucHVzaCh7cmlnaHRQb3NpdGlvbnM6eHooRixmLFIsdyl9KSksQT1sLm5lZ2F0ZShoLEEpfUY9Qn1hPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEYsYSksd29bMF09bC5jbG9uZShfLHdvWzBdKSx3b1sxXT1sLmNsb25lKEYsd29bMV0pLFU9U24uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp3byxncmFudWxhcml0eTplLGVsbGlwc29pZDpufSksTj1KUyhVLGQscyxOKSxyJiYoVC5wdXNoKGQueCxkLnksZC56KSxiLnB1c2goYS54LGEueSxhLnopKTtsZXQgeTtyZXR1cm4gbz09PUNuLlJPVU5ERUQmJih5PXRkdChOKSkse3Bvc2l0aW9uczpOLGNvcm5lcnM6USxsZWZ0czpULG5vcm1hbHM6YixlbmRQb3NpdGlvbnM6eX19O3ZpPWpTfSk7ZnVuY3Rpb24gJHoodCxlKXtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl0W2ldPWUuc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0W2ldLHRbaV0pO3JldHVybiB0fWZ1bmN0aW9uIEphKHQsZSxpLG4scyxvKXtsZXQgcj10Lm5vcm1hbHMsYT10LnRhbmdlbnRzLGg9dC5iaXRhbmdlbnRzLEE9bC5ub3JtYWxpemUobC5jcm9zcyhpLGUseWMpLHljKTtvLm5vcm1hbCYmdmkuYWRkQXR0cmlidXRlKHIsZSxuLHMpLG8udGFuZ2VudCYmdmkuYWRkQXR0cmlidXRlKGEsQSxuLHMpLG8uYml0YW5nZW50JiZ2aS5hZGRBdHRyaWJ1dGUoaCxpLG4scyl9ZnVuY3Rpb24gdDUodCxlLGkpe2xldCBuPXQucG9zaXRpb25zLHM9dC5jb3JuZXJzLG89dC5lbmRQb3NpdGlvbnMscj10LmxlZnRzLGE9dC5ub3JtYWxzLGg9bmV3IHdlLEEsZD0wLGY9MCxFLF89MCxSO2ZvcihFPTA7RTxuLmxlbmd0aDtFKz0yKVI9bltFXS5sZW5ndGgtMyxkKz1SLF8rPVIqMixmKz1uW0UrMV0ubGVuZ3RoLTM7Zm9yKGQrPTMsZis9MyxFPTA7RTxzLmxlbmd0aDtFKyspe0E9c1tFXTtsZXQgQ3Q9c1tFXS5sZWZ0UG9zaXRpb25zO20oQ3QpPyhSPUN0Lmxlbmd0aCxkKz1SLF8rPVIpOihSPXNbRV0ucmlnaHRQb3NpdGlvbnMubGVuZ3RoLGYrPVIsXys9Uil9bGV0IEk9bShvKSxDO0kmJihDPW9bMF0ubGVuZ3RoLTMsZCs9QyxmKz1DLEMvPTMsXys9Qyo2KTtsZXQgTj1kK2YsVD1uZXcgRmxvYXQ2NEFycmF5KE4pLGI9ZS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShOKTp2b2lkIDAsRj1lLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShOKTp2b2lkIDAsQj1lLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KE4pOnZvaWQgMCxVPXtub3JtYWxzOmIsdGFuZ2VudHM6RixiaXRhbmdlbnRzOkJ9LFE9MCxNPU4tMSxrLHksYyxnLE89S3osRD1Yeix3LHgsSD1DLzIsaj10ZS5jcmVhdGVUeXBlZEFycmF5KE4vMyxfKSxYPTA7aWYoSSl7eD1lZyx3PWlnO2xldCBDdD1vWzBdO2ZvcihPPWwuZnJvbUFycmF5KGEsMCxPKSxEPWwuZnJvbUFycmF5KHIsMCxEKSxFPTA7RTxIO0UrKyl4PWwuZnJvbUFycmF5KEN0LChILTEtRSkqMyx4KSx3PWwuZnJvbUFycmF5KEN0LChIK0UpKjMsdyksdmkuYWRkQXR0cmlidXRlKFQsdyxRKSx2aS5hZGRBdHRyaWJ1dGUoVCx4LHZvaWQgMCxNKSxKYShVLE8sRCxRLE0sZSkseT1RLzMsZz15KzEsaz0oTS0yKS8zLGM9ay0xLGpbWCsrXT1rLGpbWCsrXT15LGpbWCsrXT1jLGpbWCsrXT1jLGpbWCsrXT15LGpbWCsrXT1nLFErPTMsTS09M31sZXQgdHQ9MCxHPTAsSXQ9blt0dCsrXSxndD1uW3R0KytdO1Quc2V0KEl0LFEpLFQuc2V0KGd0LE0tZ3QubGVuZ3RoKzEpLEQ9bC5mcm9tQXJyYXkocixHLEQpO2xldCBZdCxVdDtmb3IoUj1ndC5sZW5ndGgtMyxFPTA7RTxSO0UrPTMpWXQ9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobC5mcm9tQXJyYXkoSXQsRSx5YykseWMpLFV0PWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGwuZnJvbUFycmF5KGd0LFItRSxHZiksR2YpLE89bC5ub3JtYWxpemUobC5hZGQoWXQsVXQsTyksTyksSmEoVSxPLEQsUSxNLGUpLHk9US8zLGc9eSsxLGs9KE0tMikvMyxjPWstMSxqW1grK109ayxqW1grK109eSxqW1grK109YyxqW1grK109YyxqW1grK109eSxqW1grK109ZyxRKz0zLE0tPTM7Zm9yKFl0PWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGwuZnJvbUFycmF5KEl0LFIseWMpLHljKSxVdD1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChsLmZyb21BcnJheShndCxSLEdmKSxHZiksTz1sLm5vcm1hbGl6ZShsLmFkZChZdCxVdCxPKSxPKSxHKz0zLEU9MDtFPHMubGVuZ3RoO0UrKyl7bGV0IEN0O0E9c1tFXTtsZXQgenQ9QS5sZWZ0UG9zaXRpb25zLGt0PUEucmlnaHRQb3NpdGlvbnMsSnQsV3QsYnQ9cXosZWU9ZWcsY2U9aWc7aWYoTz1sLmZyb21BcnJheShhLEcsTyksbSh6dCkpe2ZvcihKYShVLE8sRCx2b2lkIDAsTSxlKSxNLT0zLEp0PWcsV3Q9YyxDdD0wO0N0PHp0Lmxlbmd0aC8zO0N0KyspYnQ9bC5mcm9tQXJyYXkoenQsQ3QqMyxidCksaltYKytdPUp0LGpbWCsrXT1XdC1DdC0xLGpbWCsrXT1XdC1DdCx2aS5hZGRBdHRyaWJ1dGUoVCxidCx2b2lkIDAsTSksZWU9bC5mcm9tQXJyYXkoVCwoV3QtQ3QtMSkqMyxlZSksY2U9bC5mcm9tQXJyYXkoVCxKdCozLGNlKSxEPWwubm9ybWFsaXplKGwuc3VidHJhY3QoZWUsY2UsRCksRCksSmEoVSxPLEQsdm9pZCAwLE0sZSksTS09MztidD1sLmZyb21BcnJheShULEp0KjMsYnQpLGVlPWwuc3VidHJhY3QobC5mcm9tQXJyYXkoVCxXdCozLGVlKSxidCxlZSksY2U9bC5zdWJ0cmFjdChsLmZyb21BcnJheShULChXdC1DdCkqMyxjZSksYnQsY2UpLEQ9bC5ub3JtYWxpemUobC5hZGQoZWUsY2UsRCksRCksSmEoVSxPLEQsUSx2b2lkIDAsZSksUSs9M31lbHNle2ZvcihKYShVLE8sRCxRLHZvaWQgMCxlKSxRKz0zLEp0PWMsV3Q9ZyxDdD0wO0N0PGt0Lmxlbmd0aC8zO0N0KyspYnQ9bC5mcm9tQXJyYXkoa3QsQ3QqMyxidCksaltYKytdPUp0LGpbWCsrXT1XdCtDdCxqW1grK109V3QrQ3QrMSx2aS5hZGRBdHRyaWJ1dGUoVCxidCxRKSxlZT1sLmZyb21BcnJheShULEp0KjMsZWUpLGNlPWwuZnJvbUFycmF5KFQsKFd0K0N0KSozLGNlKSxEPWwubm9ybWFsaXplKGwuc3VidHJhY3QoZWUsY2UsRCksRCksSmEoVSxPLEQsUSx2b2lkIDAsZSksUSs9MztidD1sLmZyb21BcnJheShULEp0KjMsYnQpLGVlPWwuc3VidHJhY3QobC5mcm9tQXJyYXkoVCwoV3QrQ3QpKjMsZWUpLGJ0LGVlKSxjZT1sLnN1YnRyYWN0KGwuZnJvbUFycmF5KFQsV3QqMyxjZSksYnQsY2UpLEQ9bC5ub3JtYWxpemUobC5uZWdhdGUobC5hZGQoY2UsZWUsRCksRCksRCksSmEoVSxPLEQsdm9pZCAwLE0sZSksTS09M31mb3IoSXQ9blt0dCsrXSxndD1uW3R0KytdLEl0LnNwbGljZSgwLDMpLGd0LnNwbGljZShndC5sZW5ndGgtMywzKSxULnNldChJdCxRKSxULnNldChndCxNLWd0Lmxlbmd0aCsxKSxSPWd0Lmxlbmd0aC0zLEcrPTMsRD1sLmZyb21BcnJheShyLEcsRCksQ3Q9MDtDdDxndC5sZW5ndGg7Q3QrPTMpWXQ9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobC5mcm9tQXJyYXkoSXQsQ3QseWMpLHljKSxVdD1pLmdlb2RldGljU3VyZmFjZU5vcm1hbChsLmZyb21BcnJheShndCxSLUN0LEdmKSxHZiksTz1sLm5vcm1hbGl6ZShsLmFkZChZdCxVdCxPKSxPKSxKYShVLE8sRCxRLE0sZSksZz1RLzMseT1nLTEsYz0oTS0yKS8zLGs9YysxLGpbWCsrXT1rLGpbWCsrXT15LGpbWCsrXT1jLGpbWCsrXT1jLGpbWCsrXT15LGpbWCsrXT1nLFErPTMsTS09MztRLT0zLE0rPTN9aWYoTz1sLmZyb21BcnJheShhLGEubGVuZ3RoLTMsTyksSmEoVSxPLEQsUSxNLGUpLEkpe1ErPTMsTS09Myx4PWVnLHc9aWc7bGV0IEN0PW9bMV07Zm9yKEU9MDtFPEg7RSsrKXg9bC5mcm9tQXJyYXkoQ3QsKEMtRS0xKSozLHgpLHc9bC5mcm9tQXJyYXkoQ3QsRSozLHcpLHZpLmFkZEF0dHJpYnV0ZShULHgsdm9pZCAwLE0pLHZpLmFkZEF0dHJpYnV0ZShULHcsUSksSmEoVSxPLEQsUSxNLGUpLGc9US8zLHk9Zy0xLGM9KE0tMikvMyxrPWMrMSxqW1grK109ayxqW1grK109eSxqW1grK109YyxqW1grK109YyxqW1grK109eSxqW1grK109ZyxRKz0zLE0tPTN9aWYoaC5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlR9KSxlLnN0KXtsZXQgQ3Q9bmV3IEZsb2F0MzJBcnJheShOLzMqMiksenQsa3QsSnQ9MDtpZihJKXtkLz0zLGYvPTM7bGV0IFd0PU1hdGguUEkvKEMrMSk7a3Q9MS8oZC1DKzEpLHp0PTEvKGYtQysxKTtsZXQgYnQsZWU9Qy8yO2ZvcihFPWVlKzE7RTxDKzE7RSsrKWJ0PUwuUElfT1ZFUl9UV08rV3QqRSxDdFtKdCsrXT16dCooMStNYXRoLmNvcyhidCkpLEN0W0p0KytdPS41KigxK01hdGguc2luKGJ0KSk7Zm9yKEU9MTtFPGYtQysxO0UrKylDdFtKdCsrXT1FKnp0LEN0W0p0KytdPTA7Zm9yKEU9QztFPmVlO0UtLSlidD1MLlBJX09WRVJfVFdPLUUqV3QsQ3RbSnQrK109MS16dCooMStNYXRoLmNvcyhidCkpLEN0W0p0KytdPS41KigxK01hdGguc2luKGJ0KSk7Zm9yKEU9ZWU7RT4wO0UtLSlidD1MLlBJX09WRVJfVFdPLVd0KkUsQ3RbSnQrK109MS1rdCooMStNYXRoLmNvcyhidCkpLEN0W0p0KytdPS41KigxK01hdGguc2luKGJ0KSk7Zm9yKEU9ZC1DO0U+MDtFLS0pQ3RbSnQrK109RSprdCxDdFtKdCsrXT0xO2ZvcihFPTE7RTxlZSsxO0UrKylidD1MLlBJX09WRVJfVFdPK1d0KkUsQ3RbSnQrK109a3QqKDErTWF0aC5jb3MoYnQpKSxDdFtKdCsrXT0uNSooMStNYXRoLnNpbihidCkpfWVsc2V7Zm9yKGQvPTMsZi89MyxrdD0xLyhkLTEpLHp0PTEvKGYtMSksRT0wO0U8ZjtFKyspQ3RbSnQrK109RSp6dCxDdFtKdCsrXT0wO2ZvcihFPWQ7RT4wO0UtLSlDdFtKdCsrXT0oRS0xKSprdCxDdFtKdCsrXT0xfWguc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkN0fSl9cmV0dXJuIGUubm9ybWFsJiYoaC5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlUubm9ybWFsc30pKSxlLnRhbmdlbnQmJihoLnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlUudGFuZ2VudHN9KSksZS5iaXRhbmdlbnQmJihoLmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6VS5iaXRhbmdlbnRzfSkpLHthdHRyaWJ1dGVzOmgsaW5kaWNlczpqfX1mdW5jdGlvbiBzZHQodCxlKXtpZighZS5ub3JtYWwmJiFlLnRhbmdlbnQmJiFlLmJpdGFuZ2VudCYmIWUuc3QpcmV0dXJuIHQ7bGV0IGk9dC5wb3NpdGlvbi52YWx1ZXMsbixzOyhlLm5vcm1hbHx8ZS5iaXRhbmdlbnQpJiYobj10Lm5vcm1hbC52YWx1ZXMscz10LmJpdGFuZ2VudC52YWx1ZXMpO2xldCBvPXQucG9zaXRpb24udmFsdWVzLmxlbmd0aC8xOCxyPW8qMyxhPW8qMixoPXIqMixBO2lmKGUubm9ybWFsfHxlLmJpdGFuZ2VudHx8ZS50YW5nZW50KXtsZXQgZD1lLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KHIqNik6dm9pZCAwLGY9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocio2KTp2b2lkIDAsRT1lLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHIqNik6dm9pZCAwLF89S3osUj1YeixJPWVnLEM9aWcsTj1uZHQsVD1xeixiPWg7Zm9yKEE9MDtBPHI7QSs9Myl7bGV0IEY9YitoO189bC5mcm9tQXJyYXkoaSxBLF8pLFI9bC5mcm9tQXJyYXkoaSxBK3IsUiksST1sLmZyb21BcnJheShpLChBKzMpJXIsSSksUj1sLnN1YnRyYWN0KFIsXyxSKSxJPWwuc3VidHJhY3QoSSxfLEkpLEM9bC5ub3JtYWxpemUobC5jcm9zcyhSLEksQyksQyksZS5ub3JtYWwmJih2aS5hZGRBdHRyaWJ1dGUoZCxDLEYpLHZpLmFkZEF0dHJpYnV0ZShkLEMsRiszKSx2aS5hZGRBdHRyaWJ1dGUoZCxDLGIpLHZpLmFkZEF0dHJpYnV0ZShkLEMsYiszKSksKGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYoVD1sLmZyb21BcnJheShuLEEsVCksZS5iaXRhbmdlbnQmJih2aS5hZGRBdHRyaWJ1dGUoRSxULEYpLHZpLmFkZEF0dHJpYnV0ZShFLFQsRiszKSx2aS5hZGRBdHRyaWJ1dGUoRSxULGIpLHZpLmFkZEF0dHJpYnV0ZShFLFQsYiszKSksZS50YW5nZW50JiYoTj1sLm5vcm1hbGl6ZShsLmNyb3NzKFQsQyxOKSxOKSx2aS5hZGRBdHRyaWJ1dGUoZixOLEYpLHZpLmFkZEF0dHJpYnV0ZShmLE4sRiszKSx2aS5hZGRBdHRyaWJ1dGUoZixOLGIpLHZpLmFkZEF0dHJpYnV0ZShmLE4sYiszKSkpLGIrPTZ9aWYoZS5ub3JtYWwpe2ZvcihkLnNldChuKSxBPTA7QTxyO0ErPTMpZFtBK3JdPS1uW0FdLGRbQStyKzFdPS1uW0ErMV0sZFtBK3IrMl09LW5bQSsyXTt0Lm5vcm1hbC52YWx1ZXM9ZH1lbHNlIHQubm9ybWFsPXZvaWQgMDtpZihlLmJpdGFuZ2VudD8oRS5zZXQocyksRS5zZXQocyxyKSx0LmJpdGFuZ2VudC52YWx1ZXM9RSk6dC5iaXRhbmdlbnQ9dm9pZCAwLGUudGFuZ2VudCl7bGV0IEY9dC50YW5nZW50LnZhbHVlcztmLnNldChGKSxmLnNldChGLHIpLHQudGFuZ2VudC52YWx1ZXM9Zn19aWYoZS5zdCl7bGV0IGQ9dC5zdC52YWx1ZXMsZj1uZXcgRmxvYXQzMkFycmF5KGEqNik7Zi5zZXQoZCksZi5zZXQoZCxhKTtsZXQgRT1hKjI7Zm9yKGxldCBfPTA7XzwyO18rKyl7Zm9yKGZbRSsrXT1kWzBdLGZbRSsrXT1kWzFdLEE9MjtBPGE7QSs9Mil7bGV0IFI9ZFtBXSxJPWRbQSsxXTtmW0UrK109UixmW0UrK109SSxmW0UrK109UixmW0UrK109SX1mW0UrK109ZFswXSxmW0UrK109ZFsxXX10LnN0LnZhbHVlcz1mfXJldHVybiB0fWZ1bmN0aW9uIHZTKHQsZSxpKXtpW2UrK109dFswXSxpW2UrK109dFsxXSxpW2UrK109dFsyXTtmb3IobGV0IG49MztuPHQubGVuZ3RoO24rPTMpe2xldCBzPXRbbl0sbz10W24rMV0scj10W24rMl07aVtlKytdPXMsaVtlKytdPW8saVtlKytdPXIsaVtlKytdPXMsaVtlKytdPW8saVtlKytdPXJ9cmV0dXJuIGlbZSsrXT10WzBdLGlbZSsrXT10WzFdLGlbZSsrXT10WzJdLGl9ZnVuY3Rpb24gb2R0KHQsZSl7bGV0IGk9bmV3IFN0KHtwb3NpdGlvbjplLnBvc2l0aW9uLG5vcm1hbDplLm5vcm1hbHx8ZS5iaXRhbmdlbnR8fHQuc2hhZG93Vm9sdW1lLHRhbmdlbnQ6ZS50YW5nZW50LGJpdGFuZ2VudDplLm5vcm1hbHx8ZS5iaXRhbmdlbnQsc3Q6ZS5zdH0pLG49dC5lbGxpcHNvaWQscz12aS5jb21wdXRlUG9zaXRpb25zKHQpLG89dDUocyxpLG4pLHI9dC5oZWlnaHQsYT10LmV4dHJ1ZGVkSGVpZ2h0LGg9by5hdHRyaWJ1dGVzLEE9by5pbmRpY2VzLGQ9aC5wb3NpdGlvbi52YWx1ZXMsZj1kLmxlbmd0aCxFPW5ldyBGbG9hdDY0QXJyYXkoZio2KSxfPW5ldyBGbG9hdDY0QXJyYXkoZik7Xy5zZXQoZCk7bGV0IFI9bmV3IEZsb2F0NjRBcnJheShmKjQpO2Q9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KGQscixuKSxSPXZTKGQsMCxSKSxfPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChfLGEsbiksUj12UyhfLGYqMixSKSxFLnNldChkKSxFLnNldChfLGYpLEUuc2V0KFIsZioyKSxoLnBvc2l0aW9uLnZhbHVlcz1FLGg9c2R0KGgsZSk7bGV0IEksQz1mLzM7aWYodC5zaGFkb3dWb2x1bWUpe2xldCBrPWgubm9ybWFsLnZhbHVlcztmPWsubGVuZ3RoO2xldCB5PW5ldyBGbG9hdDMyQXJyYXkoZio2KTtmb3IoST0wO0k8ZjtJKyspa1tJXT0ta1tJXTt5LnNldChrLGYpLHk9dlMoayxmKjQseSksaC5leHRydWRlRGlyZWN0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp5fSksZS5ub3JtYWx8fChoLm5vcm1hbD12b2lkIDApfWlmKG0odC5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgaz1uZXcgVWludDhBcnJheShDKjYpO2lmKHQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKWs9ay5maWxsKDEsMCxDKS5maWxsKDEsQyoyLEMqNCk7ZWxzZXtsZXQgeT10Lm9mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxO2s9ay5maWxsKHkpfWguYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6a30pfWxldCBOPUEubGVuZ3RoLFQ9QytDLGI9dGUuY3JlYXRlVHlwZWRBcnJheShFLmxlbmd0aC8zLE4qMitUKjMpO2Iuc2V0KEEpO2xldCBGPU47Zm9yKEk9MDtJPE47SSs9Myl7bGV0IGs9QVtJXSx5PUFbSSsxXSxjPUFbSSsyXTtiW0YrK109YytDLGJbRisrXT15K0MsYltGKytdPWsrQ31sZXQgQixVLFEsTTtmb3IoST0wO0k8VDtJKz0yKUI9SStULFU9QitULFE9QisxLE09VSsxLGJbRisrXT1CLGJbRisrXT1VLGJbRisrXT1RLGJbRisrXT1RLGJbRisrXT1VLGJbRisrXT1NO3JldHVybnthdHRyaWJ1dGVzOmgsaW5kaWNlczpifX1mdW5jdGlvbiB6eih0LGUsaSxuLHMsbyl7bGV0IHI9bC5zdWJ0cmFjdChlLHQsdnopO2wubm9ybWFsaXplKHIscik7bGV0IGE9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwodCxwUiksaD1sLmNyb3NzKHIsYSx2eik7bC5tdWx0aXBseUJ5U2NhbGFyKGgsbixoKTtsZXQgQT1zLmxhdGl0dWRlLGQ9cy5sb25naXR1ZGUsZj1vLmxhdGl0dWRlLEU9by5sb25naXR1ZGU7bC5hZGQodCxoLHBSKSxpLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHBSLCRyKTtsZXQgXz0kci5sYXRpdHVkZSxSPSRyLmxvbmdpdHVkZTtBPU1hdGgubWluKEEsXyksZD1NYXRoLm1pbihkLFIpLGY9TWF0aC5tYXgoZixfKSxFPU1hdGgubWF4KEUsUiksbC5zdWJ0cmFjdCh0LGgscFIpLGkuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocFIsJHIpLF89JHIubGF0aXR1ZGUsUj0kci5sb25naXR1ZGUsQT1NYXRoLm1pbihBLF8pLGQ9TWF0aC5taW4oZCxSKSxmPU1hdGgubWF4KGYsXyksRT1NYXRoLm1heChFLFIpLHMubGF0aXR1ZGU9QSxzLmxvbmdpdHVkZT1kLG8ubGF0aXR1ZGU9ZixvLmxvbmdpdHVkZT1FfWZ1bmN0aW9uIGU1KHQsZSxpLG4scyl7dD0keih0LGUpO2xldCBvPVhuKHQsbC5lcXVhbHNFcHNpbG9uKSxyPW8ubGVuZ3RoO2lmKHI8Mnx8aTw9MClyZXR1cm4gbmV3IFh0O2xldCBhPWkqLjU7cnIubGF0aXR1ZGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHJyLmxvbmdpdHVkZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYXIubGF0aXR1ZGU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGFyLmxvbmdpdHVkZT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IGgsQTtpZihuPT09Q24uUk9VTkRFRCl7bGV0IEU9b1swXTtsLnN1YnRyYWN0KEUsb1sxXSxxciksbC5ub3JtYWxpemUocXIscXIpLGwubXVsdGlwbHlCeVNjYWxhcihxcixhLHFyKSxsLmFkZChFLHFyLHVSKSxlLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHVSLCRyKSxoPSRyLmxhdGl0dWRlLEE9JHIubG9uZ2l0dWRlLHJyLmxhdGl0dWRlPU1hdGgubWluKHJyLmxhdGl0dWRlLGgpLHJyLmxvbmdpdHVkZT1NYXRoLm1pbihyci5sb25naXR1ZGUsQSksYXIubGF0aXR1ZGU9TWF0aC5tYXgoYXIubGF0aXR1ZGUsaCksYXIubG9uZ2l0dWRlPU1hdGgubWF4KGFyLmxvbmdpdHVkZSxBKX1mb3IobGV0IEU9MDtFPHItMTsrK0Upenoob1tFXSxvW0UrMV0sZSxhLHJyLGFyKTtsZXQgZD1vW3ItMV07bC5zdWJ0cmFjdChkLG9bci0yXSxxciksbC5ub3JtYWxpemUocXIscXIpLGwubXVsdGlwbHlCeVNjYWxhcihxcixhLHFyKSxsLmFkZChkLHFyLHVSKSx6eihkLHVSLGUsYSxycixhciksbj09PUNuLlJPVU5ERUQmJihlLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHVSLCRyKSxoPSRyLmxhdGl0dWRlLEE9JHIubG9uZ2l0dWRlLHJyLmxhdGl0dWRlPU1hdGgubWluKHJyLmxhdGl0dWRlLGgpLHJyLmxvbmdpdHVkZT1NYXRoLm1pbihyci5sb25naXR1ZGUsQSksYXIubGF0aXR1ZGU9TWF0aC5tYXgoYXIubGF0aXR1ZGUsaCksYXIubG9uZ2l0dWRlPU1hdGgubWF4KGFyLmxvbmdpdHVkZSxBKSk7bGV0IGY9bShzKT9zOm5ldyBYdDtyZXR1cm4gZi5ub3J0aD1hci5sYXRpdHVkZSxmLnNvdXRoPXJyLmxhdGl0dWRlLGYuZWFzdD1hci5sb25naXR1ZGUsZi53ZXN0PXJyLmxvbmdpdHVkZSxmfWZ1bmN0aW9uIFZoKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvc2l0aW9ucyxpPXQud2lkdGg7cC5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsZSkscC5kZWZpbmVkKCJvcHRpb25zLndpZHRoIixpKTtsZXQgbj1aKHQuaGVpZ2h0LDApLHM9Wih0LmV4dHJ1ZGVkSGVpZ2h0LG4pO3RoaXMuX3Bvc2l0aW9ucz1lLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShaKHQuZWxsaXBzb2lkLG90LldHUzg0KSksdGhpcy5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKFoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCkpLHRoaXMuX3dpZHRoPWksdGhpcy5faGVpZ2h0PU1hdGgubWF4KG4scyksdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4obixzKSx0aGlzLl9jb3JuZXJUeXBlPVoodC5jb3JuZXJUeXBlLENuLlJPVU5ERUQpLHRoaXMuX2dyYW51bGFyaXR5PVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSksdGhpcy5fc2hhZG93Vm9sdW1lPVoodC5zaGFkb3dWb2x1bWUsITEpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNvcnJpZG9yR2VvbWV0cnkiLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl9yZWN0YW5nbGU9dm9pZCAwLHRoaXMucGFja2VkTGVuZ3RoPTErZS5sZW5ndGgqbC5wYWNrZWRMZW5ndGgrb3QucGFja2VkTGVuZ3RoK1N0LnBhY2tlZExlbmd0aCs3fXZhciBLeixYeixlZyxpZyxuZHQscXoseWMsR2YsdnoscFIsJHIscXIsdVIscnIsYXIsaTUsbjUsWWgselMsczU9UygoKT0+e1NhKCk7X2koKTtIdCgpO3JpKCk7YWUoKTtvaSgpO2ZkKCk7SFMoKTtGdCgpO210KCk7T2UoKTt5aSgpO2ppKCk7RW4oKTtnbygpO0RpKCk7X2UoKTtQYSgpO1hpKCk7cG4oKTtMcygpO0t6PW5ldyBsLFh6PW5ldyBsLGVnPW5ldyBsLGlnPW5ldyBsLG5kdD1uZXcgbCxxej1uZXcgbCx5Yz1uZXcgbCxHZj1uZXcgbDt2ej1uZXcgbCxwUj1uZXcgbCwkcj1uZXcgdXQ7cXI9bmV3IGwsdVI9bmV3IGwscnI9bmV3IHV0LGFyPW5ldyB1dDtWaC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKTtsZXQgbj10Ll9wb3NpdGlvbnMscz1uLmxlbmd0aDtlW2krK109cztmb3IobGV0IG89MDtvPHM7KytvLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhuW29dLGUsaSk7cmV0dXJuIG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll93aWR0aCxlW2krK109dC5faGVpZ2h0LGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2krK109dC5fY29ybmVyVHlwZSxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX3NoYWRvd1ZvbHVtZT8xOjAsZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07aTU9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLG41PW5ldyBTdCxZaD17cG9zaXRpb25zOnZvaWQgMCxlbGxpcHNvaWQ6aTUsdmVydGV4Rm9ybWF0Om41LHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsc2hhZG93Vm9sdW1lOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtWaC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPXRbZSsrXSxzPW5ldyBBcnJheShuKTtmb3IobGV0IFI9MDtSPG47KytSLGUrPWwucGFja2VkTGVuZ3RoKXNbUl09bC51bnBhY2sodCxlKTtsZXQgbz1vdC51bnBhY2sodCxlLGk1KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IHI9U3QudW5wYWNrKHQsZSxuNSk7ZSs9U3QucGFja2VkTGVuZ3RoO2xldCBhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXSxmPXRbZSsrXSxFPXRbZSsrXT09PTEsXz10W2VdO3JldHVybiBtKGkpPyhpLl9wb3NpdGlvbnM9cyxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUobyxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShyLGkuX3ZlcnRleEZvcm1hdCksaS5fd2lkdGg9YSxpLl9oZWlnaHQ9aCxpLl9leHRydWRlZEhlaWdodD1BLGkuX2Nvcm5lclR5cGU9ZCxpLl9ncmFudWxhcml0eT1mLGkuX3NoYWRvd1ZvbHVtZT1FLGkuX29mZnNldEF0dHJpYnV0ZT1fPT09LTE/dm9pZCAwOl8saSk6KFloLnBvc2l0aW9ucz1zLFloLndpZHRoPWEsWWguaGVpZ2h0PWgsWWguZXh0cnVkZWRIZWlnaHQ9QSxZaC5jb3JuZXJUeXBlPWQsWWguZ3JhbnVsYXJpdHk9ZixZaC5zaGFkb3dWb2x1bWU9RSxZaC5vZmZzZXRBdHRyaWJ1dGU9Xz09PS0xP3ZvaWQgMDpfLG5ldyBWaChZaCkpfTtWaC5jb21wdXRlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBpPXQucG9zaXRpb25zLG49dC53aWR0aDtwLmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIixpKSxwLmRlZmluZWQoIm9wdGlvbnMud2lkdGgiLG4pO2xldCBzPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLG89Wih0LmNvcm5lclR5cGUsQ24uUk9VTkRFRCk7cmV0dXJuIGU1KGkscyxuLG8sZSl9O1ZoLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxpPXQuX3dpZHRoLG49dC5fZWxsaXBzb2lkO2U9JHooZSxuKTtsZXQgcz1YbihlLGwuZXF1YWxzRXBzaWxvbik7aWYocy5sZW5ndGg8Mnx8aTw9MClyZXR1cm47bGV0IG89dC5faGVpZ2h0LHI9dC5fZXh0cnVkZWRIZWlnaHQsYT0hTC5lcXVhbHNFcHNpbG9uKG8sciwwLEwuRVBTSUxPTjIpLGg9dC5fdmVydGV4Rm9ybWF0LEE9e2VsbGlwc29pZDpuLHBvc2l0aW9uczpzLHdpZHRoOmksY29ybmVyVHlwZTp0Ll9jb3JuZXJUeXBlLGdyYW51bGFyaXR5OnQuX2dyYW51bGFyaXR5LHNhdmVBdHRyaWJ1dGVzOiEwfSxkO2lmKGEpQS5oZWlnaHQ9byxBLmV4dHJ1ZGVkSGVpZ2h0PXIsQS5zaGFkb3dWb2x1bWU9dC5fc2hhZG93Vm9sdW1lLEEub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSxkPW9kdChBLGgpO2Vsc2V7bGV0IF89dmkuY29tcHV0ZVBvc2l0aW9ucyhBKTtpZihkPXQ1KF8saCxuKSxkLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChkLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLG8sbiksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgUj10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxJPWQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLEM9bmV3IFVpbnQ4QXJyYXkoSS8zKS5maWxsKFIpO2QuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpDfSl9fWxldCBmPWQuYXR0cmlidXRlcyxFPU50LmZyb21WZXJ0aWNlcyhmLnBvc2l0aW9uLnZhbHVlcyx2b2lkIDAsMyk7cmV0dXJuIGgucG9zaXRpb258fChkLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXZvaWQgMCksbmV3IHNlKHthdHRyaWJ1dGVzOmYsaW5kaWNlczpkLmluZGljZXMscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6RSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O1ZoLmNyZWF0ZVNoYWRvd1ZvbHVtZT1mdW5jdGlvbih0LGUsaSl7bGV0IG49dC5fZ3JhbnVsYXJpdHkscz10Ll9lbGxpcHNvaWQsbz1lKG4scykscj1pKG4scyk7cmV0dXJuIG5ldyBWaCh7cG9zaXRpb25zOnQuX3Bvc2l0aW9ucyx3aWR0aDp0Ll93aWR0aCxjb3JuZXJUeXBlOnQuX2Nvcm5lclR5cGUsZWxsaXBzb2lkOnMsZ3JhbnVsYXJpdHk6bixleHRydWRlZEhlaWdodDpvLGhlaWdodDpyLHZlcnRleEZvcm1hdDpTdC5QT1NJVElPTl9PTkxZLHNoYWRvd1ZvbHVtZTohMH0pfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWaC5wcm90b3R5cGUse3JlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fcmVjdGFuZ2xlKXx8KHRoaXMuX3JlY3RhbmdsZT1lNSh0aGlzLl9wb3NpdGlvbnMsdGhpcy5fZWxsaXBzb2lkLHRoaXMuX3dpZHRoLHRoaXMuX2Nvcm5lclR5cGUpKSx0aGlzLl9yZWN0YW5nbGV9fSx0ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5bMCwwLDAsMSwxLDBdfX19KTt6Uz1WaH0pO3ZhciBLUz17fTtIZShLUyx7ZGVmYXVsdDooKT0+YWR0fSk7ZnVuY3Rpb24gcmR0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXpTLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSx6Uy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgYWR0LFhTPVMoKCk9PntzNSgpO210KCk7T2UoKTthZHQ9cmR0fSk7ZnVuY3Rpb24gaGR0KHQsZSl7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXT1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodFtpXSx0W2ldKTtyZXR1cm4gdH1mdW5jdGlvbiBhNSh0LGUpe2xldCBpPVtdLG49dC5wb3NpdGlvbnMscz10LmNvcm5lcnMsbz10LmVuZFBvc2l0aW9ucyxyPW5ldyB3ZSxhLGg9MCxBPTAsZCxmPTAsRTtmb3IoZD0wO2Q8bi5sZW5ndGg7ZCs9MilFPW5bZF0ubGVuZ3RoLTMsaCs9RSxmKz1FLzMqNCxBKz1uW2QrMV0ubGVuZ3RoLTM7Zm9yKGgrPTMsQSs9MyxkPTA7ZDxzLmxlbmd0aDtkKyspe2E9c1tkXTtsZXQgdz1zW2RdLmxlZnRQb3NpdGlvbnM7bSh3KT8oRT13Lmxlbmd0aCxoKz1FLGYrPUUvMyoyKTooRT1zW2RdLnJpZ2h0UG9zaXRpb25zLmxlbmd0aCxBKz1FLGYrPUUvMyoyKX1sZXQgXz1tKG8pLFI7XyYmKFI9b1swXS5sZW5ndGgtMyxoKz1SLEErPVIsUi89MyxmKz1SKjQpO2xldCBJPWgrQSxDPW5ldyBGbG9hdDY0QXJyYXkoSSksTj0wLFQ9SS0xLGIsRixCLFUsUSxNLGs9Ui8yLHk9dGUuY3JlYXRlVHlwZWRBcnJheShJLzMsZis0KSxjPTA7aWYoeVtjKytdPU4vMyx5W2MrK109KFQtMikvMyxfKXtpLnB1c2goTi8zKSxNPW81LFE9cjU7bGV0IHc9b1swXTtmb3IoZD0wO2Q8aztkKyspTT1sLmZyb21BcnJheSh3LChrLTEtZCkqMyxNKSxRPWwuZnJvbUFycmF5KHcsKGsrZCkqMyxRKSx2aS5hZGRBdHRyaWJ1dGUoQyxRLE4pLHZpLmFkZEF0dHJpYnV0ZShDLE0sdm9pZCAwLFQpLEY9Ti8zLFU9RisxLGI9KFQtMikvMyxCPWItMSx5W2MrK109Yix5W2MrK109Qix5W2MrK109Rix5W2MrK109VSxOKz0zLFQtPTN9bGV0IGc9MCxPPW5bZysrXSxEPW5bZysrXTtmb3IoQy5zZXQoTyxOKSxDLnNldChELFQtRC5sZW5ndGgrMSksRT1ELmxlbmd0aC0zLGkucHVzaChOLzMsKFQtMikvMyksZD0wO2Q8RTtkKz0zKUY9Ti8zLFU9RisxLGI9KFQtMikvMyxCPWItMSx5W2MrK109Yix5W2MrK109Qix5W2MrK109Rix5W2MrK109VSxOKz0zLFQtPTM7Zm9yKGQ9MDtkPHMubGVuZ3RoO2QrKyl7bGV0IHc7YT1zW2RdO2xldCB4PWEubGVmdFBvc2l0aW9ucyxIPWEucmlnaHRQb3NpdGlvbnMsaixYPUFkdDtpZihtKHgpKXtmb3IoVC09MyxqPUIsaS5wdXNoKFUpLHc9MDt3PHgubGVuZ3RoLzM7dysrKVg9bC5mcm9tQXJyYXkoeCx3KjMsWCkseVtjKytdPWotdy0xLHlbYysrXT1qLXcsdmkuYWRkQXR0cmlidXRlKEMsWCx2b2lkIDAsVCksVC09MztpLnB1c2goai1NYXRoLmZsb29yKHgubGVuZ3RoLzYpKSxlPT09Q24uQkVWRUxFRCYmaS5wdXNoKChULTIpLzMrMSksTis9M31lbHNle2ZvcihOKz0zLGo9VSxpLnB1c2goQiksdz0wO3c8SC5sZW5ndGgvMzt3KyspWD1sLmZyb21BcnJheShILHcqMyxYKSx5W2MrK109ait3LHlbYysrXT1qK3crMSx2aS5hZGRBdHRyaWJ1dGUoQyxYLE4pLE4rPTM7aS5wdXNoKGorTWF0aC5mbG9vcihILmxlbmd0aC82KSksZT09PUNuLkJFVkVMRUQmJmkucHVzaChOLzMtMSksVC09M31mb3IoTz1uW2crK10sRD1uW2crK10sTy5zcGxpY2UoMCwzKSxELnNwbGljZShELmxlbmd0aC0zLDMpLEMuc2V0KE8sTiksQy5zZXQoRCxULUQubGVuZ3RoKzEpLEU9RC5sZW5ndGgtMyx3PTA7dzxELmxlbmd0aDt3Kz0zKVU9Ti8zLEY9VS0xLEI9KFQtMikvMyxiPUIrMSx5W2MrK109Yix5W2MrK109Qix5W2MrK109Rix5W2MrK109VSxOKz0zLFQtPTM7Ti09MyxUKz0zLGkucHVzaChOLzMsKFQtMikvMyl9aWYoXyl7Tis9MyxULT0zLE09bzUsUT1yNTtsZXQgdz1vWzFdO2ZvcihkPTA7ZDxrO2QrKylNPWwuZnJvbUFycmF5KHcsKFItZC0xKSozLE0pLFE9bC5mcm9tQXJyYXkodyxkKjMsUSksdmkuYWRkQXR0cmlidXRlKEMsTSx2b2lkIDAsVCksdmkuYWRkQXR0cmlidXRlKEMsUSxOKSxVPU4vMyxGPVUtMSxCPShULTIpLzMsYj1CKzEseVtjKytdPWIseVtjKytdPUIseVtjKytdPUYseVtjKytdPVUsTis9MyxULT0zO2kucHVzaChOLzMpfWVsc2UgaS5wdXNoKE4vMywoVC0yKS8zKTtyZXR1cm4geVtjKytdPU4vMyx5W2MrK109KFQtMikvMyxyLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Q30pLHthdHRyaWJ1dGVzOnIsaW5kaWNlczp5LHdhbGxJbmRpY2VzOml9fWZ1bmN0aW9uIGNkdCh0KXtsZXQgZT10LmVsbGlwc29pZCxpPXZpLmNvbXB1dGVQb3NpdGlvbnModCksbj1hNShpLHQuY29ybmVyVHlwZSkscz1uLndhbGxJbmRpY2VzLG89dC5oZWlnaHQscj10LmV4dHJ1ZGVkSGVpZ2h0LGE9bi5hdHRyaWJ1dGVzLGg9bi5pbmRpY2VzLEE9YS5wb3NpdGlvbi52YWx1ZXMsZD1BLmxlbmd0aCxmPW5ldyBGbG9hdDY0QXJyYXkoZCk7Zi5zZXQoQSk7bGV0IEU9bmV3IEZsb2F0NjRBcnJheShkKjIpO2lmKEE9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KEEsbyxlKSxmPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChmLHIsZSksRS5zZXQoQSksRS5zZXQoZixkKSxhLnBvc2l0aW9uLnZhbHVlcz1FLGQvPTMsbSh0Lm9mZnNldEF0dHJpYnV0ZSkpe2xldCBiPW5ldyBVaW50OEFycmF5KGQqMik7aWYodC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApYj1iLmZpbGwoMSwwLGQpO2Vsc2V7bGV0IEY9dC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MTtiPWIuZmlsbChGKX1hLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmJ9KX1sZXQgXyxSPWgubGVuZ3RoLEk9dGUuY3JlYXRlVHlwZWRBcnJheShFLmxlbmd0aC8zLChSK3MubGVuZ3RoKSoyKTtJLnNldChoKTtsZXQgQz1SO2ZvcihfPTA7XzxSO18rPTIpe2xldCBiPWhbX10sRj1oW18rMV07SVtDKytdPWIrZCxJW0MrK109RitkfWxldCBOLFQ7Zm9yKF89MDtfPHMubGVuZ3RoO18rKylOPXNbX10sVD1OK2QsSVtDKytdPU4sSVtDKytdPVQ7cmV0dXJue2F0dHJpYnV0ZXM6YSxpbmRpY2VzOkl9fWZ1bmN0aW9uIENSKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvc2l0aW9ucyxpPXQud2lkdGg7cC50eXBlT2Yub2JqZWN0KCJvcHRpb25zLnBvc2l0aW9ucyIsZSkscC50eXBlT2YubnVtYmVyKCJvcHRpb25zLndpZHRoIixpKTtsZXQgbj1aKHQuaGVpZ2h0LDApLHM9Wih0LmV4dHJ1ZGVkSGVpZ2h0LG4pO3RoaXMuX3Bvc2l0aW9ucz1lLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShaKHQuZWxsaXBzb2lkLG90LldHUzg0KSksdGhpcy5fd2lkdGg9aSx0aGlzLl9oZWlnaHQ9TWF0aC5tYXgobixzKSx0aGlzLl9leHRydWRlZEhlaWdodD1NYXRoLm1pbihuLHMpLHRoaXMuX2Nvcm5lclR5cGU9Wih0LmNvcm5lclR5cGUsQ24uUk9VTkRFRCksdGhpcy5fZ3JhbnVsYXJpdHk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlQ29ycmlkb3JPdXRsaW5lR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTErZS5sZW5ndGgqbC5wYWNrZWRMZW5ndGgrb3QucGFja2VkTGVuZ3RoKzZ9dmFyIG81LHI1LEFkdCxBNSx3YyxxUyxoNT1TKCgpPT57U2EoKTtfaSgpO0h0KCk7YWUoKTtvaSgpO2ZkKCk7SFMoKTtGdCgpO210KCk7T2UoKTt5aSgpO2ppKCk7RW4oKTtnbygpO0RpKCk7X2UoKTtQYSgpO1hpKCk7bzU9bmV3IGwscjU9bmV3IGwsQWR0PW5ldyBsO0NSLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAudHlwZU9mLm9iamVjdCgiYXJyYXkiLGUpLGk9WihpLDApO2xldCBuPXQuX3Bvc2l0aW9ucyxzPW4ubGVuZ3RoO2VbaSsrXT1zO2ZvcihsZXQgbz0wO288czsrK28saSs9bC5wYWNrZWRMZW5ndGgpbC5wYWNrKG5bb10sZSxpKTtyZXR1cm4gb3QucGFjayh0Ll9lbGxpcHNvaWQsZSxpKSxpKz1vdC5wYWNrZWRMZW5ndGgsZVtpKytdPXQuX3dpZHRoLGVbaSsrXT10Ll9oZWlnaHQsZVtpKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbaSsrXT10Ll9jb3JuZXJUeXBlLGVbaSsrXT10Ll9ncmFudWxhcml0eSxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtBNT1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksd2M9e3Bvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOkE1LHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07Q1IudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLnR5cGVPZi5vYmplY3QoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj10W2UrK10scz1uZXcgQXJyYXkobik7Zm9yKGxldCBFPTA7RTxuOysrRSxlKz1sLnBhY2tlZExlbmd0aClzW0VdPWwudW5wYWNrKHQsZSk7bGV0IG89b3QudW5wYWNrKHQsZSxBNSk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCByPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXSxmPXRbZV07cmV0dXJuIG0oaSk/KGkuX3Bvc2l0aW9ucz1zLGkuX2VsbGlwc29pZD1vdC5jbG9uZShvLGkuX2VsbGlwc29pZCksaS5fd2lkdGg9cixpLl9oZWlnaHQ9YSxpLl9leHRydWRlZEhlaWdodD1oLGkuX2Nvcm5lclR5cGU9QSxpLl9ncmFudWxhcml0eT1kLGkuX29mZnNldEF0dHJpYnV0ZT1mPT09LTE/dm9pZCAwOmYsaSk6KHdjLnBvc2l0aW9ucz1zLHdjLndpZHRoPXIsd2MuaGVpZ2h0PWEsd2MuZXh0cnVkZWRIZWlnaHQ9aCx3Yy5jb3JuZXJUeXBlPUEsd2MuZ3JhbnVsYXJpdHk9ZCx3Yy5vZmZzZXRBdHRyaWJ1dGU9Zj09PS0xP3ZvaWQgMDpmLG5ldyBDUih3YykpfTtDUi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsaT10Ll93aWR0aCxuPXQuX2VsbGlwc29pZDtlPWhkdChlLG4pO2xldCBzPVhuKGUsbC5lcXVhbHNFcHNpbG9uKTtpZihzLmxlbmd0aDwyfHxpPD0wKXJldHVybjtsZXQgbz10Ll9oZWlnaHQscj10Ll9leHRydWRlZEhlaWdodCxhPSFMLmVxdWFsc0Vwc2lsb24obyxyLDAsTC5FUFNJTE9OMiksaD17ZWxsaXBzb2lkOm4scG9zaXRpb25zOnMsd2lkdGg6aSxjb3JuZXJUeXBlOnQuX2Nvcm5lclR5cGUsZ3JhbnVsYXJpdHk6dC5fZ3JhbnVsYXJpdHksc2F2ZUF0dHJpYnV0ZXM6ITF9LEE7aWYoYSloLmhlaWdodD1vLGguZXh0cnVkZWRIZWlnaHQ9cixoLm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUsQT1jZHQoaCk7ZWxzZXtsZXQgRT12aS5jb21wdXRlUG9zaXRpb25zKGgpO2lmKEE9YTUoRSxoLmNvcm5lclR5cGUpLEEuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KEEuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsbyxuKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBfPUEuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLFI9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsST1uZXcgVWludDhBcnJheShfLzMpLmZpbGwoUik7QS5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkl9KX19bGV0IGQ9QS5hdHRyaWJ1dGVzLGY9TnQuZnJvbVZlcnRpY2VzKGQucG9zaXRpb24udmFsdWVzLHZvaWQgMCwzKTtyZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOmQsaW5kaWNlczpBLmluZGljZXMscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpmLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07cVM9Q1J9KTt2YXIgJFM9e307SGUoJFMse2RlZmF1bHQ6KCk9PmRkdH0pO2Z1bmN0aW9uIGxkdCh0LGUpe3JldHVybiBtKGUpJiYodD1xUy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCkscVMuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGRkdCx0Tz1TKCgpPT57aDUoKTttdCgpO09lKCk7ZGR0PWxkdH0pO3ZhciBjNSxuZyxlTz1TKCgpPT57X2UoKTtjNT17fTtjNS5jb21wdXRlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxpLG4scyl7bGV0IG89dCouNSxyPS1vLGE9bituLGg9cz8yKmE6YSxBPW5ldyBGbG9hdDY0QXJyYXkoaCozKSxkLGY9MCxFPTAsXz1zP2EqMzowLFI9cz8oYStuKSozOm4qMztmb3IoZD0wO2Q8bjtkKyspe2xldCBJPWQvbipMLlRXT19QSSxDPU1hdGguY29zKEkpLE49TWF0aC5zaW4oSSksVD1DKmksYj1OKmksRj1DKmUsQj1OKmU7QVtFK19dPVQsQVtFK18rMV09YixBW0UrXysyXT1yLEFbRStSXT1GLEFbRStSKzFdPUIsQVtFK1IrMl09byxFKz0zLHMmJihBW2YrK109VCxBW2YrK109YixBW2YrK109cixBW2YrK109RixBW2YrK109QixBW2YrK109byl9cmV0dXJuIEF9O25nPWM1fSk7ZnVuY3Rpb24gU2godCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQubGVuZ3RoLGk9dC50b3BSYWRpdXMsbj10LmJvdHRvbVJhZGl1cyxzPVoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCksbz1aKHQuc2xpY2VzLDEyOCk7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMubGVuZ3RoIG11c3QgYmUgZGVmaW5lZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgib3B0aW9ucy50b3BSYWRpdXMgbXVzdCBiZSBkZWZpbmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBZKCJvcHRpb25zLmJvdHRvbVJhZGl1cyBtdXN0IGJlIGRlZmluZWQuIik7aWYobzwzKXRocm93IG5ldyBZKCJvcHRpb25zLnNsaWNlcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAzLiIpO2lmKG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PVBlLlRPUCl0aHJvdyBuZXcgWSgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTt0aGlzLl9sZW5ndGg9ZSx0aGlzLl90b3BSYWRpdXM9aSx0aGlzLl9ib3R0b21SYWRpdXM9bix0aGlzLl92ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUocyksdGhpcy5fc2xpY2VzPW8sdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUN5bGluZGVyR2VvbWV0cnkifXZhciBpTyxtZHQsZmR0LEVkdCxfZHQsbDUsV2Ysbk8sZ1Isc089UygoKT0+e19pKCk7WGUoKTtIdCgpO29pKCk7ZU8oKTtGdCgpO210KCk7T3QoKTt5aSgpO2ppKCk7RW4oKTtnbygpO0RpKCk7X2UoKTtYaSgpO0xzKCk7aU89bmV3IG50LG1kdD1uZXcgbCxmZHQ9bmV3IGwsRWR0PW5ldyBsLF9kdD1uZXcgbDtTaC5wYWNrZWRMZW5ndGg9U3QucGFja2VkTGVuZ3RoKzU7U2gucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIGk9WihpLDApLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9sZW5ndGgsZVtpKytdPXQuX3RvcFJhZGl1cyxlW2krK109dC5fYm90dG9tUmFkaXVzLGVbaSsrXT10Ll9zbGljZXMsZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07bDU9bmV3IFN0LFdmPXt2ZXJ0ZXhGb3JtYXQ6bDUsbGVuZ3RoOnZvaWQgMCx0b3BSYWRpdXM6dm9pZCAwLGJvdHRvbVJhZGl1czp2b2lkIDAsc2xpY2VzOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtTaC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuPVN0LnVucGFjayh0LGUsbDUpO2UrPVN0LnBhY2tlZExlbmd0aDtsZXQgcz10W2UrK10sbz10W2UrK10scj10W2UrK10sYT10W2UrK10saD10W2VdO3JldHVybiBtKGkpPyhpLl92ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUobixpLl92ZXJ0ZXhGb3JtYXQpLGkuX2xlbmd0aD1zLGkuX3RvcFJhZGl1cz1vLGkuX2JvdHRvbVJhZGl1cz1yLGkuX3NsaWNlcz1hLGkuX29mZnNldEF0dHJpYnV0ZT1oPT09LTE/dm9pZCAwOmgsaSk6KFdmLmxlbmd0aD1zLFdmLnRvcFJhZGl1cz1vLFdmLmJvdHRvbVJhZGl1cz1yLFdmLnNsaWNlcz1hLFdmLm9mZnNldEF0dHJpYnV0ZT1oPT09LTE/dm9pZCAwOmgsbmV3IFNoKFdmKSl9O1NoLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2xlbmd0aCxpPXQuX3RvcFJhZGl1cyxuPXQuX2JvdHRvbVJhZGl1cyxzPXQuX3ZlcnRleEZvcm1hdCxvPXQuX3NsaWNlcztpZihlPD0wfHxpPDB8fG48MHx8aT09PTAmJm49PT0wKXJldHVybjtsZXQgcj1vK28sYT1vK3IsaD1yK3IsQT1uZy5jb21wdXRlUG9zaXRpb25zKGUsaSxuLG8sITApLGQ9cy5zdD9uZXcgRmxvYXQzMkFycmF5KGgqMik6dm9pZCAwLGY9cy5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShoKjMpOnZvaWQgMCxFPXMudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KGgqMyk6dm9pZCAwLF89cy5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShoKjMpOnZvaWQgMCxSLEk9cy5ub3JtYWx8fHMudGFuZ2VudHx8cy5iaXRhbmdlbnQ7aWYoSSl7bGV0IFE9cy50YW5nZW50fHxzLmJpdGFuZ2VudCxNPTAsaz0wLHk9MCxjPU1hdGguYXRhbjIobi1pLGUpLGc9bWR0O2cuej1NYXRoLnNpbihjKTtsZXQgTz1NYXRoLmNvcyhjKSxEPUVkdCx3PWZkdDtmb3IoUj0wO1I8bztSKyspe2xldCB4PVIvbypMLlRXT19QSSxIPU8qTWF0aC5jb3MoeCksaj1PKk1hdGguc2luKHgpO0kmJihnLng9SCxnLnk9aixRJiYoRD1sLm5vcm1hbGl6ZShsLmNyb3NzKGwuVU5JVF9aLGcsRCksRCkpLHMubm9ybWFsJiYoZltNKytdPWcueCxmW00rK109Zy55LGZbTSsrXT1nLnosZltNKytdPWcueCxmW00rK109Zy55LGZbTSsrXT1nLnopLHMudGFuZ2VudCYmKEVbaysrXT1ELngsRVtrKytdPUQueSxFW2srK109RC56LEVbaysrXT1ELngsRVtrKytdPUQueSxFW2srK109RC56KSxzLmJpdGFuZ2VudCYmKHc9bC5ub3JtYWxpemUobC5jcm9zcyhnLEQsdyksdyksX1t5KytdPXcueCxfW3krK109dy55LF9beSsrXT13LnosX1t5KytdPXcueCxfW3krK109dy55LF9beSsrXT13LnopKX1mb3IoUj0wO1I8bztSKyspcy5ub3JtYWwmJihmW00rK109MCxmW00rK109MCxmW00rK109LTEpLHMudGFuZ2VudCYmKEVbaysrXT0xLEVbaysrXT0wLEVbaysrXT0wKSxzLmJpdGFuZ2VudCYmKF9beSsrXT0wLF9beSsrXT0tMSxfW3krK109MCk7Zm9yKFI9MDtSPG87UisrKXMubm9ybWFsJiYoZltNKytdPTAsZltNKytdPTAsZltNKytdPTEpLHMudGFuZ2VudCYmKEVbaysrXT0xLEVbaysrXT0wLEVbaysrXT0wKSxzLmJpdGFuZ2VudCYmKF9beSsrXT0wLF9beSsrXT0xLF9beSsrXT0wKX1sZXQgQz0xMipvLTEyLE49dGUuY3JlYXRlVHlwZWRBcnJheShoLEMpLFQ9MCxiPTA7Zm9yKFI9MDtSPG8tMTtSKyspTltUKytdPWIsTltUKytdPWIrMixOW1QrK109YiszLE5bVCsrXT1iLE5bVCsrXT1iKzMsTltUKytdPWIrMSxiKz0yO2ZvcihOW1QrK109ci0yLE5bVCsrXT0wLE5bVCsrXT0xLE5bVCsrXT1yLTIsTltUKytdPTEsTltUKytdPXItMSxSPTE7UjxvLTE7UisrKU5bVCsrXT1yK1IrMSxOW1QrK109citSLE5bVCsrXT1yO2ZvcihSPTE7UjxvLTE7UisrKU5bVCsrXT1hLE5bVCsrXT1hK1IsTltUKytdPWErUisxO2xldCBGPTA7aWYocy5zdCl7bGV0IFE9TWF0aC5tYXgoaSxuKTtmb3IoUj0wO1I8aDtSKyspe2xldCBNPWwuZnJvbUFycmF5KEEsUiozLF9kdCk7ZFtGKytdPShNLngrUSkvKDIqUSksZFtGKytdPShNLnkrUSkvKDIqUSl9fWxldCBCPW5ldyB3ZTtzLnBvc2l0aW9uJiYoQi5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkF9KSkscy5ub3JtYWwmJihCLm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Zn0pKSxzLnRhbmdlbnQmJihCLnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkV9KSkscy5iaXRhbmdlbnQmJihCLmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pKSxzLnN0JiYoQi5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6ZH0pKSxpTy54PWUqLjUsaU8ueT1NYXRoLm1heChuLGkpO2xldCBVPW5ldyBOdChsLlpFUk8sbnQubWFnbml0dWRlKGlPKSk7aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtlPUEubGVuZ3RoO2xldCBRPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxLE09bmV3IFVpbnQ4QXJyYXkoZS8zKS5maWxsKFEpO0IuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6TX0pfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6QixpbmRpY2VzOk4scHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6VSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O1NoLmdldFVuaXRDeWxpbmRlcj1mdW5jdGlvbigpe3JldHVybiBtKG5PKXx8KG5PPVNoLmNyZWF0ZUdlb21ldHJ5KG5ldyBTaCh7dG9wUmFkaXVzOjEsYm90dG9tUmFkaXVzOjEsbGVuZ3RoOjEsdmVydGV4Rm9ybWF0OlN0LlBPU0lUSU9OX09OTFl9KSkpLG5PfTtnUj1TaH0pO3ZhciBvTz17fTtIZShvTyx7ZGVmYXVsdDooKT0+WmR0fSk7ZnVuY3Rpb24gUmR0KHQsZSl7cmV0dXJuIG0oZSkmJih0PWdSLnVucGFjayh0LGUpKSxnUi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgWmR0LHJPPVMoKCk9PntzTygpO210KCk7WmR0PVJkdH0pO2Z1bmN0aW9uIERmKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10Lmxlbmd0aCxpPXQudG9wUmFkaXVzLG49dC5ib3R0b21SYWRpdXMscz1aKHQuc2xpY2VzLDEyOCksbz1NYXRoLm1heChaKHQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzLDE2KSwwKTtpZihwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMucG9zaXRpb25zIixlKSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMudG9wUmFkaXVzIixpKSxwLnR5cGVPZi5udW1iZXIoIm9wdGlvbnMuYm90dG9tUmFkaXVzIixuKSxwLnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygib3B0aW9ucy5zbGljZXMiLHMsMyksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09UGUuVE9QKXRocm93IG5ldyBZKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX2xlbmd0aD1lLHRoaXMuX3RvcFJhZGl1cz1pLHRoaXMuX2JvdHRvbVJhZGl1cz1uLHRoaXMuX3NsaWNlcz1zLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lcz1vLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeSJ9dmFyIGFPLF9kLEFPLGQ1PVMoKCk9PntfaSgpO1hlKCk7SHQoKTthZSgpO29pKCk7ZU8oKTtGdCgpO210KCk7T3QoKTt5aSgpO2ppKCk7RW4oKTtnbygpO0RpKCk7WGkoKTthTz1uZXcgbnQ7RGYucGFja2VkTGVuZ3RoPTY7RGYucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGVbaSsrXT10Ll9sZW5ndGgsZVtpKytdPXQuX3RvcFJhZGl1cyxlW2krK109dC5fYm90dG9tUmFkaXVzLGVbaSsrXT10Ll9zbGljZXMsZVtpKytdPXQuX251bWJlck9mVmVydGljYWxMaW5lcyxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtfZD17bGVuZ3RoOnZvaWQgMCx0b3BSYWRpdXM6dm9pZCAwLGJvdHRvbVJhZGl1czp2b2lkIDAsc2xpY2VzOnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O0RmLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49dFtlKytdLHM9dFtlKytdLG89dFtlKytdLHI9dFtlKytdLGE9dFtlKytdLGg9dFtlXTtyZXR1cm4gbShpKT8oaS5fbGVuZ3RoPW4saS5fdG9wUmFkaXVzPXMsaS5fYm90dG9tUmFkaXVzPW8saS5fc2xpY2VzPXIsaS5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzPWEsaS5fb2Zmc2V0QXR0cmlidXRlPWg9PT0tMT92b2lkIDA6aCxpKTooX2QubGVuZ3RoPW4sX2QudG9wUmFkaXVzPXMsX2QuYm90dG9tUmFkaXVzPW8sX2Quc2xpY2VzPXIsX2QubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPWEsX2Qub2Zmc2V0QXR0cmlidXRlPWg9PT0tMT92b2lkIDA6aCxuZXcgRGYoX2QpKX07RGYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fbGVuZ3RoLGk9dC5fdG9wUmFkaXVzLG49dC5fYm90dG9tUmFkaXVzLHM9dC5fc2xpY2VzLG89dC5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzO2lmKGU8PTB8fGk8MHx8bjwwfHxpPT09MCYmbj09PTApcmV0dXJuO2xldCByPXMqMixhPW5nLmNvbXB1dGVQb3NpdGlvbnMoZSxpLG4scywhMSksaD1zKjIsQTtpZihvPjApe2xldCBJPU1hdGgubWluKG8scyk7QT1NYXRoLnJvdW5kKHMvSSksaCs9SX1sZXQgZD10ZS5jcmVhdGVUeXBlZEFycmF5KHIsaCoyKSxmPTAsRTtmb3IoRT0wO0U8cy0xO0UrKylkW2YrK109RSxkW2YrK109RSsxLGRbZisrXT1FK3MsZFtmKytdPUUrMStzO2lmKGRbZisrXT1zLTEsZFtmKytdPTAsZFtmKytdPXMrcy0xLGRbZisrXT1zLG8+MClmb3IoRT0wO0U8cztFKz1BKWRbZisrXT1FLGRbZisrXT1FK3M7bGV0IF89bmV3IHdlO18ucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczphfSksYU8ueD1lKi41LGFPLnk9TWF0aC5tYXgobixpKTtsZXQgUj1uZXcgTnQobC5aRVJPLG50Lm1hZ25pdHVkZShhTykpO2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7ZT1hLmxlbmd0aDtsZXQgST10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxDPW5ldyBVaW50OEFycmF5KGUvMykuZmlsbChJKTtfLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkN9KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOl8saW5kaWNlczpkLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6UixvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O0FPPURmfSk7dmFyIGhPPXt9O0hlKGhPLHtkZWZhdWx0OigpPT5wZHR9KTtmdW5jdGlvbiBJZHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9QU8udW5wYWNrKHQsZSkpLEFPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBwZHQsY089UygoKT0+e2Q1KCk7bXQoKTtwZHQ9SWR0fSk7dmFyIGxPPXt9O0hlKGxPLHtkZWZhdWx0OigpPT5DZHR9KTtmdW5jdGlvbiB1ZHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9d2EudW5wYWNrKHQsZSkpLHQuX2NlbnRlcj1sLmNsb25lKHQuX2NlbnRlciksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksd2EuY3JlYXRlR2VvbWV0cnkodCl9dmFyIENkdCxkTz1TKCgpPT57SHQoKTttdCgpO19TKCk7T2UoKTtDZHQ9dWR0fSk7dmFyIG1PPXt9O0hlKG1PLHtkZWZhdWx0OigpPT5UZHR9KTtmdW5jdGlvbiBnZHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9eGEudW5wYWNrKHQsZSkpLHQuX2NlbnRlcj1sLmNsb25lKHQuX2NlbnRlciksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCkseGEuY3JlYXRlR2VvbWV0cnkodCl9dmFyIFRkdCxmTz1TKCgpPT57SHQoKTttdCgpO3BTKCk7T2UoKTtUZHQ9Z2R0fSk7ZnVuY3Rpb24gT2godCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPVoodC5yYWRpaSxTZHQpLGk9Wih0LmlubmVyUmFkaWksZSksbj1aKHQubWluaW11bUNsb2NrLDApLHM9Wih0Lm1heGltdW1DbG9jayxMLlRXT19QSSksbz1aKHQubWluaW11bUNvbmUsMCkscj1aKHQubWF4aW11bUNvbmUsTC5QSSksYT1NYXRoLnJvdW5kKFoodC5zdGFja1BhcnRpdGlvbnMsNjQpKSxoPU1hdGgucm91bmQoWih0LnNsaWNlUGFydGl0aW9ucyw2NCkpLEE9Wih0LnZlcnRleEZvcm1hdCxTdC5ERUZBVUxUKTtpZihoPDMpdGhyb3cgbmV3IFkoIm9wdGlvbnMuc2xpY2VQYXJ0aXRpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gdGhyZWUuIik7aWYoYTwzKXRocm93IG5ldyBZKCJvcHRpb25zLnN0YWNrUGFydGl0aW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIHRocmVlLiIpO3RoaXMuX3JhZGlpPWwuY2xvbmUoZSksdGhpcy5faW5uZXJSYWRpaT1sLmNsb25lKGkpLHRoaXMuX21pbmltdW1DbG9jaz1uLHRoaXMuX21heGltdW1DbG9jaz1zLHRoaXMuX21pbmltdW1Db25lPW8sdGhpcy5fbWF4aW11bUNvbmU9cix0aGlzLl9zdGFja1BhcnRpdGlvbnM9YSx0aGlzLl9zbGljZVBhcnRpdGlvbnM9aCx0aGlzLl92ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUoQSksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc29pZEdlb21ldHJ5In12YXIgTmR0LEZkdCxiZHQsWWR0LFZkdCxTZHQsbTUsZjUsRTUsXzUsUjUseGMsRU8sTnIsc2c9UygoKT0+e19pKCk7WGUoKTtIdCgpO29pKCk7RnQoKTttdCgpO090KCk7T2UoKTt5aSgpO2ppKCk7RW4oKTtnbygpO0RpKCk7X2UoKTtYaSgpO0xzKCk7TmR0PW5ldyBsLEZkdD1uZXcgbCxiZHQ9bmV3IGwsWWR0PW5ldyBsLFZkdD1uZXcgbCxTZHQ9bmV3IGwoMSwxLDEpLG01PU1hdGguY29zLGY1PU1hdGguc2luO09oLnBhY2tlZExlbmd0aD0yKmwucGFja2VkTGVuZ3RoK1N0LnBhY2tlZExlbmd0aCs3O09oLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBpPVooaSwwKSxsLnBhY2sodC5fcmFkaWksZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxsLnBhY2sodC5faW5uZXJSYWRpaSxlLGkpLGkrPWwucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9taW5pbXVtQ2xvY2ssZVtpKytdPXQuX21heGltdW1DbG9jayxlW2krK109dC5fbWluaW11bUNvbmUsZVtpKytdPXQuX21heGltdW1Db25lLGVbaSsrXT10Ll9zdGFja1BhcnRpdGlvbnMsZVtpKytdPXQuX3NsaWNlUGFydGl0aW9ucyxlW2ldPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlfTtFNT1uZXcgbCxfNT1uZXcgbCxSNT1uZXcgU3QseGM9e3JhZGlpOkU1LGlubmVyUmFkaWk6XzUsdmVydGV4Rm9ybWF0OlI1LG1pbmltdW1DbG9jazp2b2lkIDAsbWF4aW11bUNsb2NrOnZvaWQgMCxtaW5pbXVtQ29uZTp2b2lkIDAsbWF4aW11bUNvbmU6dm9pZCAwLHN0YWNrUGFydGl0aW9uczp2b2lkIDAsc2xpY2VQYXJ0aXRpb25zOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtPaC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuPWwudW5wYWNrKHQsZSxFNSk7ZSs9bC5wYWNrZWRMZW5ndGg7bGV0IHM9bC51bnBhY2sodCxlLF81KTtlKz1sLnBhY2tlZExlbmd0aDtsZXQgbz1TdC51bnBhY2sodCxlLFI1KTtlKz1TdC5wYWNrZWRMZW5ndGg7bGV0IHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdLEE9dFtlKytdLGQ9dFtlKytdLGY9dFtlKytdLEU9dFtlXTtyZXR1cm4gbShpKT8oaS5fcmFkaWk9bC5jbG9uZShuLGkuX3JhZGlpKSxpLl9pbm5lclJhZGlpPWwuY2xvbmUocyxpLl9pbm5lclJhZGlpKSxpLl92ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUobyxpLl92ZXJ0ZXhGb3JtYXQpLGkuX21pbmltdW1DbG9jaz1yLGkuX21heGltdW1DbG9jaz1hLGkuX21pbmltdW1Db25lPWgsaS5fbWF4aW11bUNvbmU9QSxpLl9zdGFja1BhcnRpdGlvbnM9ZCxpLl9zbGljZVBhcnRpdGlvbnM9ZixpLl9vZmZzZXRBdHRyaWJ1dGU9RT09PS0xP3ZvaWQgMDpFLGkpOih4Yy5taW5pbXVtQ2xvY2s9cix4Yy5tYXhpbXVtQ2xvY2s9YSx4Yy5taW5pbXVtQ29uZT1oLHhjLm1heGltdW1Db25lPUEseGMuc3RhY2tQYXJ0aXRpb25zPWQseGMuc2xpY2VQYXJ0aXRpb25zPWYseGMub2Zmc2V0QXR0cmlidXRlPUU9PT0tMT92b2lkIDA6RSxuZXcgT2goeGMpKX07T2guY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcmFkaWk7aWYoZS54PD0wfHxlLnk8PTB8fGUuejw9MClyZXR1cm47bGV0IGk9dC5faW5uZXJSYWRpaTtpZihpLng8PTB8fGkueTw9MHx8aS56PD0wKXJldHVybjtsZXQgbj10Ll9taW5pbXVtQ2xvY2sscz10Ll9tYXhpbXVtQ2xvY2ssbz10Ll9taW5pbXVtQ29uZSxyPXQuX21heGltdW1Db25lLGE9dC5fdmVydGV4Rm9ybWF0LGg9dC5fc2xpY2VQYXJ0aXRpb25zKzEsQT10Ll9zdGFja1BhcnRpdGlvbnMrMTtoPU1hdGgucm91bmQoaCpNYXRoLmFicyhzLW4pL0wuVFdPX1BJKSxBPU1hdGgucm91bmQoQSpNYXRoLmFicyhyLW8pL0wuUEkpLGg8MiYmKGg9MiksQTwyJiYoQT0yKTtsZXQgZCxmLEU9MCxfPVtvXSxSPVtuXTtmb3IoZD0wO2Q8QTtkKyspXy5wdXNoKG8rZCooci1vKS8oQS0xKSk7Zm9yKF8ucHVzaChyKSxmPTA7ZjxoO2YrKylSLnB1c2gobitmKihzLW4pLyhoLTEpKTtSLnB1c2gocyk7bGV0IEk9Xy5sZW5ndGgsQz1SLmxlbmd0aCxOPTAsVD0xLGI9aS54IT09ZS54fHxpLnkhPT1lLnl8fGkueiE9PWUueixGPSExLEI9ITEsVT0hMTtiJiYoVD0yLG8+MCYmKEY9ITAsTis9aC0xKSxyPE1hdGguUEkmJihCPSEwLE4rPWgtMSksKHMtbiklTC5UV09fUEk/KFU9ITAsTis9KEEtMSkqMisxKTpOKz0xKTtsZXQgUT1DKkkqVCxNPW5ldyBGbG9hdDY0QXJyYXkoUSozKSxrPW5ldyBBcnJheShRKS5maWxsKCExKSx5PW5ldyBBcnJheShRKS5maWxsKCExKSxjPWgqQSpULGc9NiooYytOKzEtKGgrQSkqVCksTz10ZS5jcmVhdGVUeXBlZEFycmF5KGMsZyksRD1hLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KFEqMyk6dm9pZCAwLHc9YS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoUSozKTp2b2lkIDAseD1hLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KFEqMyk6dm9pZCAwLEg9YS5zdD9uZXcgRmxvYXQzMkFycmF5KFEqMik6dm9pZCAwLGo9bmV3IEFycmF5KEkpLFg9bmV3IEFycmF5KEkpO2ZvcihkPTA7ZDxJO2QrKylqW2RdPWY1KF9bZF0pLFhbZF09bTUoX1tkXSk7bGV0IHR0PW5ldyBBcnJheShDKSxHPW5ldyBBcnJheShDKTtmb3IoZj0wO2Y8QztmKyspR1tmXT1tNShSW2ZdKSx0dFtmXT1mNShSW2ZdKTtmb3IoZD0wO2Q8STtkKyspZm9yKGY9MDtmPEM7ZisrKU1bRSsrXT1lLngqaltkXSpHW2ZdLE1bRSsrXT1lLnkqaltkXSp0dFtmXSxNW0UrK109ZS56KlhbZF07bGV0IEl0PVEvMjtpZihiKWZvcihkPTA7ZDxJO2QrKylmb3IoZj0wO2Y8QztmKyspTVtFKytdPWkueCpqW2RdKkdbZl0sTVtFKytdPWkueSpqW2RdKnR0W2ZdLE1bRSsrXT1pLnoqWFtkXSxrW0l0XT0hMCxkPjAmJmQhPT1JLTEmJmYhPT0wJiZmIT09Qy0xJiYoeVtJdF09ITApLEl0Kys7RT0wO2xldCBndCxZdDtmb3IoZD0xO2Q8SS0yO2QrKylmb3IoZ3Q9ZCpDLFl0PShkKzEpKkMsZj0xO2Y8Qy0yO2YrKylPW0UrK109WXQrZixPW0UrK109WXQrZisxLE9bRSsrXT1ndCtmKzEsT1tFKytdPVl0K2YsT1tFKytdPWd0K2YrMSxPW0UrK109Z3QrZjtpZihiKXtsZXQgVWU9SSpDO2ZvcihkPTE7ZDxJLTI7ZCsrKWZvcihndD1VZStkKkMsWXQ9VWUrKGQrMSkqQyxmPTE7ZjxDLTI7ZisrKU9bRSsrXT1ZdCtmLE9bRSsrXT1ndCtmLE9bRSsrXT1ndCtmKzEsT1tFKytdPVl0K2YsT1tFKytdPWd0K2YrMSxPW0UrK109WXQrZisxfWxldCBVdCxDdDtpZihiKXtpZihGKWZvcihDdD1JKkMsZD0xO2Q8Qy0yO2QrKylPW0UrK109ZCxPW0UrK109ZCsxLE9bRSsrXT1DdCtkKzEsT1tFKytdPWQsT1tFKytdPUN0K2QrMSxPW0UrK109Q3QrZDtpZihCKWZvcihVdD1JKkMtQyxDdD1JKkMqVC1DLGQ9MTtkPEMtMjtkKyspT1tFKytdPVV0K2QrMSxPW0UrK109VXQrZCxPW0UrK109Q3QrZCxPW0UrK109VXQrZCsxLE9bRSsrXT1DdCtkLE9bRSsrXT1DdCtkKzF9aWYoVSl7Zm9yKGQ9MTtkPEktMjtkKyspQ3Q9QypJK0MqZCxVdD1DKmQsT1tFKytdPUN0LE9bRSsrXT1VdCtDLE9bRSsrXT1VdCxPW0UrK109Q3QsT1tFKytdPUN0K0MsT1tFKytdPVV0K0M7Zm9yKGQ9MTtkPEktMjtkKyspQ3Q9QypJK0MqKGQrMSktMSxVdD1DKihkKzEpLTEsT1tFKytdPVV0K0MsT1tFKytdPUN0LE9bRSsrXT1VdCxPW0UrK109VXQrQyxPW0UrK109Q3QrQyxPW0UrK109Q3R9bGV0IHp0PW5ldyB3ZTthLnBvc2l0aW9uJiYoenQucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpNfSkpO2xldCBrdD0wLEp0PTAsV3Q9MCxidD0wLGVlPVEvMixjZSxqZT1vdC5mcm9tQ2FydGVzaWFuMyhlKSxTZT1vdC5mcm9tQ2FydGVzaWFuMyhpKTtpZihhLnN0fHxhLm5vcm1hbHx8YS50YW5nZW50fHxhLmJpdGFuZ2VudCl7Zm9yKGQ9MDtkPFE7ZCsrKXtjZT1rW2RdP1NlOmplO2xldCBVZT1sLmZyb21BcnJheShNLGQqMyxOZHQpLE1lPWNlLmdlb2RldGljU3VyZmFjZU5vcm1hbChVZSxGZHQpO2lmKHlbZF0mJmwubmVnYXRlKE1lLE1lKSxhLnN0KXtsZXQgQ2U9bnQubmVnYXRlKE1lLFZkdCk7SFtrdCsrXT1NYXRoLmF0YW4yKENlLnksQ2UueCkvTC5UV09fUEkrLjUsSFtrdCsrXT1NYXRoLmFzaW4oTWUueikvTWF0aC5QSSsuNX1pZihhLm5vcm1hbCYmKERbSnQrK109TWUueCxEW0p0KytdPU1lLnksRFtKdCsrXT1NZS56KSxhLnRhbmdlbnR8fGEuYml0YW5nZW50KXtsZXQgQ2U9YmR0LEZlPTAsbmk7aWYoa1tkXSYmKEZlPWVlKSwhRiYmZD49RmUmJmQ8RmUrQyoyP25pPWwuVU5JVF9YOm5pPWwuVU5JVF9aLGwuY3Jvc3MobmksTWUsQ2UpLGwubm9ybWFsaXplKENlLENlKSxhLnRhbmdlbnQmJih3W1d0KytdPUNlLngsd1tXdCsrXT1DZS55LHdbV3QrK109Q2UueiksYS5iaXRhbmdlbnQpe2xldCB6ZT1sLmNyb3NzKE1lLENlLFlkdCk7bC5ub3JtYWxpemUoemUsemUpLHhbYnQrK109emUueCx4W2J0KytdPXplLnkseFtidCsrXT16ZS56fX19YS5zdCYmKHp0LnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpIfSkpLGEubm9ybWFsJiYoenQubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpEfSkpLGEudGFuZ2VudCYmKHp0LnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnd9KSksYS5iaXRhbmdlbnQmJih6dC5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnh9KSl9aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgVWU9TS5sZW5ndGgsTWU9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsQ2U9bmV3IFVpbnQ4QXJyYXkoVWUvMykuZmlsbChNZSk7enQuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Q2V9KX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOnp0LGluZGljZXM6TyxwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFUyxib3VuZGluZ1NwaGVyZTpOdC5mcm9tRWxsaXBzb2lkKGplKSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O09oLmdldFVuaXRFbGxpcHNvaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbShFTyl8fChFTz1PaC5jcmVhdGVHZW9tZXRyeShuZXcgT2goe3JhZGlpOm5ldyBsKDEsMSwxKSx2ZXJ0ZXhGb3JtYXQ6U3QuUE9TSVRJT05fT05MWX0pKSksRU99O05yPU9ofSk7dmFyIF9PPXt9O0hlKF9PLHtkZWZhdWx0OigpPT5CZHR9KTtmdW5jdGlvbiBPZHQodCxlKXtyZXR1cm4gbShlKSYmKHQ9TnIudW5wYWNrKHQsZSkpLE5yLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBCZHQsUk89UygoKT0+e210KCk7c2coKTtCZHQ9T2R0fSk7ZnVuY3Rpb24gVWYodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPVoodC5yYWRpaSxHZHQpLGk9Wih0LmlubmVyUmFkaWksZSksbj1aKHQubWluaW11bUNsb2NrLDApLHM9Wih0Lm1heGltdW1DbG9jayxMLlRXT19QSSksbz1aKHQubWluaW11bUNvbmUsMCkscj1aKHQubWF4aW11bUNvbmUsTC5QSSksYT1NYXRoLnJvdW5kKFoodC5zdGFja1BhcnRpdGlvbnMsMTApKSxoPU1hdGgucm91bmQoWih0LnNsaWNlUGFydGl0aW9ucyw4KSksQT1NYXRoLnJvdW5kKFoodC5zdWJkaXZpc2lvbnMsMTI4KSk7aWYoYTwxKXRocm93IG5ldyBZKCJvcHRpb25zLnN0YWNrUGFydGl0aW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIDEiKTtpZihoPDApdGhyb3cgbmV3IFkoIm9wdGlvbnMuc2xpY2VQYXJ0aXRpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gMCIpO2lmKEE8MCl0aHJvdyBuZXcgWSgib3B0aW9ucy5zdWJkaXZpc2lvbnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVyby4iKTtpZihtKHQub2Zmc2V0QXR0cmlidXRlKSYmdC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApdGhyb3cgbmV3IFkoIkdlb21ldHJ5T2Zmc2V0QXR0cmlidXRlLlRPUCBpcyBub3QgYSBzdXBwb3J0ZWQgb3B0aW9ucy5vZmZzZXRBdHRyaWJ1dGUgZm9yIHRoaXMgZ2VvbWV0cnkuIik7dGhpcy5fcmFkaWk9bC5jbG9uZShlKSx0aGlzLl9pbm5lclJhZGlpPWwuY2xvbmUoaSksdGhpcy5fbWluaW11bUNsb2NrPW4sdGhpcy5fbWF4aW11bUNsb2NrPXMsdGhpcy5fbWluaW11bUNvbmU9byx0aGlzLl9tYXhpbXVtQ29uZT1yLHRoaXMuX3N0YWNrUGFydGl0aW9ucz1hLHRoaXMuX3NsaWNlUGFydGl0aW9ucz1oLHRoaXMuX3N1YmRpdmlzaW9ucz1BLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVFbGxpcHNvaWRPdXRsaW5lR2VvbWV0cnkifXZhciBHZHQsb2cscmcsWjUsSTUsQmgsamEsWk89UygoKT0+e19pKCk7SHQoKTtvaSgpO0Z0KCk7bXQoKTtPdCgpO09lKCk7eWkoKTtqaSgpO0VuKCk7Z28oKTtEaSgpO19lKCk7WGkoKTtHZHQ9bmV3IGwoMSwxLDEpLG9nPU1hdGguY29zLHJnPU1hdGguc2luO1VmLnBhY2tlZExlbmd0aD0yKmwucGFja2VkTGVuZ3RoKzg7VWYucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIGk9WihpLDApLGwucGFjayh0Ll9yYWRpaSxlLGkpLGkrPWwucGFja2VkTGVuZ3RoLGwucGFjayh0Ll9pbm5lclJhZGlpLGUsaSksaSs9bC5wYWNrZWRMZW5ndGgsZVtpKytdPXQuX21pbmltdW1DbG9jayxlW2krK109dC5fbWF4aW11bUNsb2NrLGVbaSsrXT10Ll9taW5pbXVtQ29uZSxlW2krK109dC5fbWF4aW11bUNvbmUsZVtpKytdPXQuX3N0YWNrUGFydGl0aW9ucyxlW2krK109dC5fc2xpY2VQYXJ0aXRpb25zLGVbaSsrXT10Ll9zdWJkaXZpc2lvbnMsZVtpXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZX07WjU9bmV3IGwsSTU9bmV3IGwsQmg9e3JhZGlpOlo1LGlubmVyUmFkaWk6STUsbWluaW11bUNsb2NrOnZvaWQgMCxtYXhpbXVtQ2xvY2s6dm9pZCAwLG1pbmltdW1Db25lOnZvaWQgMCxtYXhpbXVtQ29uZTp2b2lkIDAsc3RhY2tQYXJ0aXRpb25zOnZvaWQgMCxzbGljZVBhcnRpdGlvbnM6dm9pZCAwLHN1YmRpdmlzaW9uczp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07VWYudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbj1sLnVucGFjayh0LGUsWjUpO2UrPWwucGFja2VkTGVuZ3RoO2xldCBzPWwudW5wYWNrKHQsZSxJNSk7ZSs9bC5wYWNrZWRMZW5ndGg7bGV0IG89dFtlKytdLHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdLEE9dFtlKytdLGQ9dFtlKytdLGY9dFtlKytdLEU9dFtlXTtyZXR1cm4gbShpKT8oaS5fcmFkaWk9bC5jbG9uZShuLGkuX3JhZGlpKSxpLl9pbm5lclJhZGlpPWwuY2xvbmUocyxpLl9pbm5lclJhZGlpKSxpLl9taW5pbXVtQ2xvY2s9byxpLl9tYXhpbXVtQ2xvY2s9cixpLl9taW5pbXVtQ29uZT1hLGkuX21heGltdW1Db25lPWgsaS5fc3RhY2tQYXJ0aXRpb25zPUEsaS5fc2xpY2VQYXJ0aXRpb25zPWQsaS5fc3ViZGl2aXNpb25zPWYsaS5fb2Zmc2V0QXR0cmlidXRlPUU9PT0tMT92b2lkIDA6RSxpKTooQmgubWluaW11bUNsb2NrPW8sQmgubWF4aW11bUNsb2NrPXIsQmgubWluaW11bUNvbmU9YSxCaC5tYXhpbXVtQ29uZT1oLEJoLnN0YWNrUGFydGl0aW9ucz1BLEJoLnNsaWNlUGFydGl0aW9ucz1kLEJoLnN1YmRpdmlzaW9ucz1mLEJoLm9mZnNldEF0dHJpYnV0ZT1FPT09LTE/dm9pZCAwOkUsbmV3IFVmKEJoKSl9O1VmLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3JhZGlpO2lmKGUueDw9MHx8ZS55PD0wfHxlLno8PTApcmV0dXJuO2xldCBpPXQuX2lubmVyUmFkaWk7aWYoaS54PD0wfHxpLnk8PTB8fGkuejw9MClyZXR1cm47bGV0IG49dC5fbWluaW11bUNsb2NrLHM9dC5fbWF4aW11bUNsb2NrLG89dC5fbWluaW11bUNvbmUscj10Ll9tYXhpbXVtQ29uZSxhPXQuX3N1YmRpdmlzaW9ucyxoPW90LmZyb21DYXJ0ZXNpYW4zKGUpLEE9dC5fc2xpY2VQYXJ0aXRpb25zKzEsZD10Ll9zdGFja1BhcnRpdGlvbnMrMTtBPU1hdGgucm91bmQoQSpNYXRoLmFicyhzLW4pL0wuVFdPX1BJKSxkPU1hdGgucm91bmQoZCpNYXRoLmFicyhyLW8pL0wuUEkpLEE8MiYmKEE9MiksZDwyJiYoZD0yKTtsZXQgZj0wLEU9MSxfPWkueCE9PWUueHx8aS55IT09ZS55fHxpLnohPT1lLnosUj0hMSxJPSExO18mJihFPTIsbz4wJiYoUj0hMCxmKz1BKSxyPE1hdGguUEkmJihJPSEwLGYrPUEpKTtsZXQgQz1hKkUqKGQrQSksTj1uZXcgRmxvYXQ2NEFycmF5KEMqMyksVD0yKihDK2YtKEErZCkqRSksYj10ZS5jcmVhdGVUeXBlZEFycmF5KEMsVCksRixCLFUsUSxNPTAsaz1uZXcgQXJyYXkoZCkseT1uZXcgQXJyYXkoZCk7Zm9yKEY9MDtGPGQ7RisrKVE9bytGKihyLW8pLyhkLTEpLGtbRl09cmcoUSkseVtGXT1vZyhRKTtsZXQgYz1uZXcgQXJyYXkoYSksZz1uZXcgQXJyYXkoYSk7Zm9yKEY9MDtGPGE7RisrKVU9bitGKihzLW4pLyhhLTEpLGNbRl09cmcoVSksZ1tGXT1vZyhVKTtmb3IoRj0wO0Y8ZDtGKyspZm9yKEI9MDtCPGE7QisrKU5bTSsrXT1lLngqa1tGXSpnW0JdLE5bTSsrXT1lLnkqa1tGXSpjW0JdLE5bTSsrXT1lLnoqeVtGXTtpZihfKWZvcihGPTA7RjxkO0YrKylmb3IoQj0wO0I8YTtCKyspTltNKytdPWkueCprW0ZdKmdbQl0sTltNKytdPWkueSprW0ZdKmNbQl0sTltNKytdPWkueip5W0ZdO2ZvcihrLmxlbmd0aD1hLHkubGVuZ3RoPWEsRj0wO0Y8YTtGKyspUT1vK0YqKHItbykvKGEtMSksa1tGXT1yZyhRKSx5W0ZdPW9nKFEpO2ZvcihjLmxlbmd0aD1BLGcubGVuZ3RoPUEsRj0wO0Y8QTtGKyspVT1uK0YqKHMtbikvKEEtMSksY1tGXT1yZyhVKSxnW0ZdPW9nKFUpO2ZvcihGPTA7RjxhO0YrKylmb3IoQj0wO0I8QTtCKyspTltNKytdPWUueCprW0ZdKmdbQl0sTltNKytdPWUueSprW0ZdKmNbQl0sTltNKytdPWUueip5W0ZdO2lmKF8pZm9yKEY9MDtGPGE7RisrKWZvcihCPTA7QjxBO0IrKylOW00rK109aS54KmtbRl0qZ1tCXSxOW00rK109aS55KmtbRl0qY1tCXSxOW00rK109aS56KnlbRl07Zm9yKE09MCxGPTA7RjxkKkU7RisrKXtsZXQgdz1GKmE7Zm9yKEI9MDtCPGEtMTtCKyspYltNKytdPXcrQixiW00rK109dytCKzF9bGV0IE89ZCphKkU7Zm9yKEY9MDtGPEE7RisrKWZvcihCPTA7QjxhLTE7QisrKWJbTSsrXT1PK0YrQipBLGJbTSsrXT1PK0YrKEIrMSkqQTtpZihfKWZvcihPPWQqYSpFK0EqYSxGPTA7RjxBO0YrKylmb3IoQj0wO0I8YS0xO0IrKyliW00rK109TytGK0IqQSxiW00rK109TytGKyhCKzEpKkE7aWYoXyl7bGV0IHc9ZCphKkUseD13K2EqQTtpZihSKWZvcihGPTA7RjxBO0YrKyliW00rK109dytGLGJbTSsrXT14K0Y7aWYoSSlmb3Iodys9YSpBLUEseCs9YSpBLUEsRj0wO0Y8QTtGKyspYltNKytdPXcrRixiW00rK109eCtGfWxldCBEPW5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpOfSl9KTtpZihtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCB3PU4ubGVuZ3RoLHg9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsSD1uZXcgVWludDhBcnJheSh3LzMpLmZpbGwoeCk7RC5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpIfSl9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpELGluZGljZXM6YixwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOk50LmZyb21FbGxpcHNvaWQoaCksb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtqYT1VZn0pO3ZhciBJTz17fTtIZShJTyx7ZGVmYXVsdDooKT0+RGR0fSk7ZnVuY3Rpb24gV2R0KHQsZSl7cmV0dXJuIG0odC5idWZmZXIsZSkmJih0PWphLnVucGFjayh0LGUpKSxqYS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgRGR0LHBPPVMoKCk9PnttdCgpO1pPKCk7RGR0PVdkdH0pO2Z1bmN0aW9uIEJBKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMuX2xlZnQ9dm9pZCAwLHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLl9yaWdodD12b2lkIDAsdGhpcy50b3A9dC50b3AsdGhpcy5fdG9wPXZvaWQgMCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLl9ib3R0b209dm9pZCAwLHRoaXMubmVhcj1aKHQubmVhciwxKSx0aGlzLl9uZWFyPXRoaXMubmVhcix0aGlzLmZhcj1aKHQuZmFyLDVlOCksdGhpcy5fZmFyPXRoaXMuZmFyLHRoaXMuX2N1bGxpbmdWb2x1bWU9bmV3IFhaLHRoaXMuX3BlcnNwZWN0aXZlTWF0cml4PW5ldyBhdCx0aGlzLl9pbmZpbml0ZVBlcnNwZWN0aXZlPW5ldyBhdH1mdW5jdGlvbiB1Tyh0KXtpZighbSh0LnJpZ2h0KXx8IW0odC5sZWZ0KXx8IW0odC50b3ApfHwhbSh0LmJvdHRvbSl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgWSgicmlnaHQsIGxlZnQsIHRvcCwgYm90dG9tLCBuZWFyLCBvciBmYXIgcGFyYW1ldGVycyBhcmUgbm90IHNldC4iKTtsZXQgZT10LnRvcCxpPXQuYm90dG9tLG49dC5yaWdodCxzPXQubGVmdCxvPXQubmVhcixyPXQuZmFyO2lmKGUhPT10Ll90b3B8fGkhPT10Ll9ib3R0b218fHMhPT10Ll9sZWZ0fHxuIT09dC5fcmlnaHR8fG8hPT10Ll9uZWFyfHxyIT09dC5fZmFyKXtpZih0Lm5lYXI8PTB8fHQubmVhcj50LmZhcil0aHJvdyBuZXcgWSgibmVhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gZmFyLiIpO3QuX2xlZnQ9cyx0Ll9yaWdodD1uLHQuX3RvcD1lLHQuX2JvdHRvbT1pLHQuX25lYXI9byx0Ll9mYXI9cix0Ll9wZXJzcGVjdGl2ZU1hdHJpeD1hdC5jb21wdXRlUGVyc3BlY3RpdmVPZmZDZW50ZXIocyxuLGksZSxvLHIsdC5fcGVyc3BlY3RpdmVNYXRyaXgpLHQuX2luZmluaXRlUGVyc3BlY3RpdmU9YXQuY29tcHV0ZUluZmluaXRlUGVyc3BlY3RpdmVPZmZDZW50ZXIocyxuLGksZSxvLHQuX2luZmluaXRlUGVyc3BlY3RpdmUpfX12YXIgVWR0LE1kdCxRZHQsa2R0LHA1LHU1PVMoKCk9PntIdCgpO09zKCk7WlQoKTtGdCgpO210KCk7T3QoKTtfZSgpO2JpKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQkEucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdU8odGhpcyksdGhpcy5fcGVyc3BlY3RpdmVNYXRyaXh9fSxpbmZpbml0ZVByb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiB1Tyh0aGlzKSx0aGlzLl9pbmZpbml0ZVBlcnNwZWN0aXZlfX19KTtVZHQ9bmV3IGwsTWR0PW5ldyBsLFFkdD1uZXcgbCxrZHQ9bmV3IGw7QkEucHJvdG90eXBlLmNvbXB1dGVDdWxsaW5nVm9sdW1lPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgicG9zaXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImRpcmVjdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgidXAgaXMgcmVxdWlyZWQuIik7bGV0IG49dGhpcy5fY3VsbGluZ1ZvbHVtZS5wbGFuZXMscz10aGlzLnRvcCxvPXRoaXMuYm90dG9tLHI9dGhpcy5yaWdodCxhPXRoaXMubGVmdCxoPXRoaXMubmVhcixBPXRoaXMuZmFyLGQ9bC5jcm9zcyhlLGksVWR0KSxmPU1kdDtsLm11bHRpcGx5QnlTY2FsYXIoZSxoLGYpLGwuYWRkKHQsZixmKTtsZXQgRT1RZHQ7bC5tdWx0aXBseUJ5U2NhbGFyKGUsQSxFKSxsLmFkZCh0LEUsRSk7bGV0IF89a2R0O2wubXVsdGlwbHlCeVNjYWxhcihkLGEsXyksbC5hZGQoZixfLF8pLGwuc3VidHJhY3QoXyx0LF8pLGwubm9ybWFsaXplKF8sXyksbC5jcm9zcyhfLGksXyksbC5ub3JtYWxpemUoXyxfKTtsZXQgUj1uWzBdO3JldHVybiBtKFIpfHwoUj1uWzBdPW5ldyBpZSksUi54PV8ueCxSLnk9Xy55LFIuej1fLnosUi53PS1sLmRvdChfLHQpLGwubXVsdGlwbHlCeVNjYWxhcihkLHIsXyksbC5hZGQoZixfLF8pLGwuc3VidHJhY3QoXyx0LF8pLGwuY3Jvc3MoaSxfLF8pLGwubm9ybWFsaXplKF8sXyksUj1uWzFdLG0oUil8fChSPW5bMV09bmV3IGllKSxSLng9Xy54LFIueT1fLnksUi56PV8ueixSLnc9LWwuZG90KF8sdCksbC5tdWx0aXBseUJ5U2NhbGFyKGksbyxfKSxsLmFkZChmLF8sXyksbC5zdWJ0cmFjdChfLHQsXyksbC5jcm9zcyhkLF8sXyksbC5ub3JtYWxpemUoXyxfKSxSPW5bMl0sbShSKXx8KFI9blsyXT1uZXcgaWUpLFIueD1fLngsUi55PV8ueSxSLno9Xy56LFIudz0tbC5kb3QoXyx0KSxsLm11bHRpcGx5QnlTY2FsYXIoaSxzLF8pLGwuYWRkKGYsXyxfKSxsLnN1YnRyYWN0KF8sdCxfKSxsLmNyb3NzKF8sZCxfKSxsLm5vcm1hbGl6ZShfLF8pLFI9blszXSxtKFIpfHwoUj1uWzNdPW5ldyBpZSksUi54PV8ueCxSLnk9Xy55LFIuej1fLnosUi53PS1sLmRvdChfLHQpLFI9bls0XSxtKFIpfHwoUj1uWzRdPW5ldyBpZSksUi54PWUueCxSLnk9ZS55LFIuej1lLnosUi53PS1sLmRvdChlLGYpLGwubmVnYXRlKGUsXyksUj1uWzVdLG0oUil8fChSPW5bNV09bmV3IGllKSxSLng9Xy54LFIueT1fLnksUi56PV8ueixSLnc9LWwuZG90KF8sRSksdGhpcy5fY3VsbGluZ1ZvbHVtZX07QkEucHJvdG90eXBlLmdldFBpeGVsRGltZW5zaW9ucz1mdW5jdGlvbih0LGUsaSxuLHMpe2lmKHVPKHRoaXMpLCFtKHQpfHwhbShlKSl0aHJvdyBuZXcgWSgiQm90aCBkcmF3aW5nQnVmZmVyV2lkdGggYW5kIGRyYXdpbmdCdWZmZXJIZWlnaHQgYXJlIHJlcXVpcmVkLiIpO2lmKHQ8PTApdGhyb3cgbmV3IFkoImRyYXdpbmdCdWZmZXJXaWR0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKGU8PTApdGhyb3cgbmV3IFkoImRyYXdpbmdCdWZmZXJIZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgiZGlzdGFuY2UgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IFkoInBpeGVsUmF0aW8gaXMgcmVxdWlyZWQiKTtpZihuPD0wKXRocm93IG5ldyBZKCJwaXhlbFJhdGlvIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0ocykpdGhyb3cgbmV3IFkoIkEgcmVzdWx0IG9iamVjdCBpcyByZXF1aXJlZC4iKTtsZXQgbz0xL3RoaXMubmVhcixyPXRoaXMudG9wKm8sYT0yKm4qaSpyL2U7cj10aGlzLnJpZ2h0Km87bGV0IGg9MipuKmkqci90O3JldHVybiBzLng9aCxzLnk9YSxzfTtCQS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBCQSksdC5yaWdodD10aGlzLnJpZ2h0LHQubGVmdD10aGlzLmxlZnQsdC50b3A9dGhpcy50b3AsdC5ib3R0b209dGhpcy5ib3R0b20sdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9sZWZ0PXZvaWQgMCx0Ll9yaWdodD12b2lkIDAsdC5fdG9wPXZvaWQgMCx0Ll9ib3R0b209dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdH07QkEucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdCBpbnN0YW5jZW9mIEJBJiZ0aGlzLnJpZ2h0PT09dC5yaWdodCYmdGhpcy5sZWZ0PT09dC5sZWZ0JiZ0aGlzLnRvcD09PXQudG9wJiZ0aGlzLmJvdHRvbT09PXQuYm90dG9tJiZ0aGlzLm5lYXI9PT10Lm5lYXImJnRoaXMuZmFyPT09dC5mYXJ9O0JBLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09PXRoaXN8fG0odCkmJnQgaW5zdGFuY2VvZiBCQSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMucmlnaHQsdC5yaWdodCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy5sZWZ0LHQubGVmdCxlLGkpJiZMLmVxdWFsc0Vwc2lsb24odGhpcy50b3AsdC50b3AsZSxpKSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMuYm90dG9tLHQuYm90dG9tLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLm5lYXIsdC5uZWFyLGUsaSkmJkwuZXF1YWxzRXBzaWxvbih0aGlzLmZhcix0LmZhcixlLGkpfTtwNT1CQX0pO2Z1bmN0aW9uIEFyKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtPW5ldyBwNSx0aGlzLmZvdj10LmZvdix0aGlzLl9mb3Y9dm9pZCAwLHRoaXMuX2Zvdnk9dm9pZCAwLHRoaXMuX3NzZURlbm9taW5hdG9yPXZvaWQgMCx0aGlzLmFzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdGhpcy5fYXNwZWN0UmF0aW89dm9pZCAwLHRoaXMubmVhcj1aKHQubmVhciwxKSx0aGlzLl9uZWFyPXRoaXMubmVhcix0aGlzLmZhcj1aKHQuZmFyLDVlOCksdGhpcy5fZmFyPXRoaXMuZmFyLHRoaXMueE9mZnNldD1aKHQueE9mZnNldCwwKSx0aGlzLl94T2Zmc2V0PXRoaXMueE9mZnNldCx0aGlzLnlPZmZzZXQ9Wih0LnlPZmZzZXQsMCksdGhpcy5feU9mZnNldD10aGlzLnlPZmZzZXR9ZnVuY3Rpb24gSGEodCl7aWYoIW0odC5mb3YpfHwhbSh0LmFzcGVjdFJhdGlvKXx8IW0odC5uZWFyKXx8IW0odC5mYXIpKXRocm93IG5ldyBZKCJmb3YsIGFzcGVjdFJhdGlvLCBuZWFyLCBvciBmYXIgcGFyYW1ldGVycyBhcmUgbm90IHNldC4iKTtsZXQgZT10Ll9vZmZDZW50ZXJGcnVzdHVtO2lmKHQuZm92IT09dC5fZm92fHx0LmFzcGVjdFJhdGlvIT09dC5fYXNwZWN0UmF0aW98fHQubmVhciE9PXQuX25lYXJ8fHQuZmFyIT09dC5fZmFyfHx0LnhPZmZzZXQhPT10Ll94T2Zmc2V0fHx0LnlPZmZzZXQhPT10Ll95T2Zmc2V0KXtpZih0LmZvdjwwfHx0LmZvdj49TWF0aC5QSSl0aHJvdyBuZXcgWSgiZm92IG11c3QgYmUgaW4gdGhlIHJhbmdlIFswLCBQSSkuIik7aWYodC5hc3BlY3RSYXRpbzwwKXRocm93IG5ldyBZKCJhc3BlY3RSYXRpbyBtdXN0IGJlIHBvc2l0aXZlLiIpO2lmKHQubmVhcjwwfHx0Lm5lYXI+dC5mYXIpdGhyb3cgbmV3IFkoIm5lYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIGZhci4iKTt0Ll9hc3BlY3RSYXRpbz10LmFzcGVjdFJhdGlvLHQuX2Zvdj10LmZvdix0Ll9mb3Z5PXQuYXNwZWN0UmF0aW88PTE/dC5mb3Y6TWF0aC5hdGFuKE1hdGgudGFuKHQuZm92Ki41KS90LmFzcGVjdFJhdGlvKSoyLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcix0Ll9zc2VEZW5vbWluYXRvcj0yKk1hdGgudGFuKC41KnQuX2ZvdnkpLHQuX3hPZmZzZXQ9dC54T2Zmc2V0LHQuX3lPZmZzZXQ9dC55T2Zmc2V0LGUudG9wPXQubmVhcipNYXRoLnRhbiguNSp0Ll9mb3Z5KSxlLmJvdHRvbT0tZS50b3AsZS5yaWdodD10LmFzcGVjdFJhdGlvKmUudG9wLGUubGVmdD0tZS5yaWdodCxlLm5lYXI9dC5uZWFyLGUuZmFyPXQuZmFyLGUucmlnaHQrPXQueE9mZnNldCxlLmxlZnQrPXQueE9mZnNldCxlLnRvcCs9dC55T2Zmc2V0LGUuYm90dG9tKz10LnlPZmZzZXR9fXZhciBGbyxDTz1TKCgpPT57YWUoKTtGdCgpO210KCk7T3QoKTtfZSgpO3U1KCk7QXIucGFja2VkTGVuZ3RoPTY7QXIucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLGVbaSsrXT10LmZvdixlW2krK109dC5hc3BlY3RSYXRpbyxlW2krK109dC5uZWFyLGVbaSsrXT10LmZhcixlW2krK109dC54T2Zmc2V0LGVbaV09dC55T2Zmc2V0LGV9O0FyLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApLG0oaSl8fChpPW5ldyBBciksaS5mb3Y9dFtlKytdLGkuYXNwZWN0UmF0aW89dFtlKytdLGkubmVhcj10W2UrK10saS5mYXI9dFtlKytdLGkueE9mZnNldD10W2UrK10saS55T2Zmc2V0PXRbZV0saX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQXIucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5wcm9qZWN0aW9uTWF0cml4fX0saW5maW5pdGVQcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5pbmZpbml0ZVByb2plY3Rpb25NYXRyaXh9fSxmb3Z5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fZm92eX19LHNzZURlbm9taW5hdG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fc3NlRGVub21pbmF0b3J9fSxvZmZDZW50ZXJGcnVzdHVtOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bX19fSk7QXIucHJvdG90eXBlLmNvbXB1dGVDdWxsaW5nVm9sdW1lPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jb21wdXRlQ3VsbGluZ1ZvbHVtZSh0LGUsaSl9O0FyLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLGksbixzKXtyZXR1cm4gSGEodGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5nZXRQaXhlbERpbWVuc2lvbnModCxlLGksbixzKX07QXIucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgQXIpLHQuYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx0LmZvdj10aGlzLmZvdix0Lm5lYXI9dGhpcy5uZWFyLHQuZmFyPXRoaXMuZmFyLHQuX2FzcGVjdFJhdGlvPXZvaWQgMCx0Ll9mb3Y9dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jbG9uZSh0Ll9vZmZDZW50ZXJGcnVzdHVtKSx0fTtBci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiBBcik/ITE6KEhhKHRoaXMpLEhhKHQpLHRoaXMuZm92PT09dC5mb3YmJnRoaXMuYXNwZWN0UmF0aW89PT10LmFzcGVjdFJhdGlvJiZ0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmVxdWFscyh0Ll9vZmZDZW50ZXJGcnVzdHVtKSl9O0FyLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4hbSh0KXx8ISh0IGluc3RhbmNlb2YgQXIpPyExOihIYSh0aGlzKSxIYSh0KSxMLmVxdWFsc0Vwc2lsb24odGhpcy5mb3YsdC5mb3YsZSxpKSYmTC5lcXVhbHNFcHNpbG9uKHRoaXMuYXNwZWN0UmF0aW8sdC5hc3BlY3RSYXRpbyxlLGkpJiZ0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmVxdWFsc0Vwc2lsb24odC5fb2ZmQ2VudGVyRnJ1c3R1bSxlLGkpKX07Rm89QXJ9KTtmdW5jdGlvbiBSZCh0KXtwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMiLHQpLHAudHlwZU9mLm9iamVjdCgib3B0aW9ucy5mcnVzdHVtIix0LmZydXN0dW0pLHAudHlwZU9mLm9iamVjdCgib3B0aW9ucy5vcmlnaW4iLHQub3JpZ2luKSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMub3JpZW50YXRpb24iLHQub3JpZW50YXRpb24pO2xldCBlPXQuZnJ1c3R1bSxpPXQub3JpZW50YXRpb24sbj10Lm9yaWdpbixzPVoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCksbz1aKHQuX2RyYXdOZWFyUGxhbmUsITApLHIsYTtlIGluc3RhbmNlb2YgRm8/KHI9YWcsYT1Gby5wYWNrZWRMZW5ndGgpOmUgaW5zdGFuY2VvZiBqcyYmKHI9TGR0LGE9anMucGFja2VkTGVuZ3RoKSx0aGlzLl9mcnVzdHVtVHlwZT1yLHRoaXMuX2ZydXN0dW09ZS5jbG9uZSgpLHRoaXMuX29yaWdpbj1sLmNsb25lKG4pLHRoaXMuX29yaWVudGF0aW9uPUFlLmNsb25lKGkpLHRoaXMuX2RyYXdOZWFyUGxhbmU9byx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cyx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVGcnVzdHVtR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTIrYStsLnBhY2tlZExlbmd0aCtBZS5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RofWZ1bmN0aW9uIE1mKHQsZSxpLG4scyxvLHIsYSl7bGV0IGg9dC8zKjI7Zm9yKGxldCBBPTA7QTw0OysrQSltKGUpJiYoZVt0XT1vLngsZVt0KzFdPW8ueSxlW3QrMl09by56KSxtKGkpJiYoaVt0XT1yLngsaVt0KzFdPXIueSxpW3QrMl09ci56KSxtKG4pJiYoblt0XT1hLngsblt0KzFdPWEueSxuW3QrMl09YS56KSx0Kz0zO3NbaF09MCxzW2grMV09MCxzW2grMl09MSxzW2grM109MCxzW2grNF09MSxzW2grNV09MSxzW2grNl09MCxzW2grN109MX12YXIgYWcsTGR0LHlkdCx3ZHQseGR0LFBkdCxKZHQsamR0LEhkdCxnTyxDNSxnNSxUNSx2ZHQsemR0LEtkdCxQYyxUUixONSxOUixUTz1TKCgpPT57X2koKTtIdCgpO09zKCk7YWUoKTtvaSgpO0Z0KCk7bXQoKTt5aSgpO2ppKCk7RW4oKTtkbigpO2JpKCk7JFooKTtDTygpO1hpKCk7JHMoKTtMcygpO2FnPTAsTGR0PTE7UmQucGFjaz1mdW5jdGlvbih0LGUsaSl7cC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCk7bGV0IG49dC5fZnJ1c3R1bVR5cGUscz10Ll9mcnVzdHVtO3JldHVybiBlW2krK109bixuPT09YWc/KEZvLnBhY2socyxlLGkpLGkrPUZvLnBhY2tlZExlbmd0aCk6KGpzLnBhY2socyxlLGkpLGkrPWpzLnBhY2tlZExlbmd0aCksbC5wYWNrKHQuX29yaWdpbixlLGkpLGkrPWwucGFja2VkTGVuZ3RoLEFlLnBhY2sodC5fb3JpZW50YXRpb24sZSxpKSxpKz1BZS5wYWNrZWRMZW5ndGgsU3QucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxpKSxpKz1TdC5wYWNrZWRMZW5ndGgsZVtpXT10Ll9kcmF3TmVhclBsYW5lPzE6MCxlfTt5ZHQ9bmV3IEZvLHdkdD1uZXcganMseGR0PW5ldyBBZSxQZHQ9bmV3IGwsSmR0PW5ldyBTdDtSZC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPXRbZSsrXSxzO249PT1hZz8ocz1Gby51bnBhY2sodCxlLHlkdCksZSs9Rm8ucGFja2VkTGVuZ3RoKToocz1qcy51bnBhY2sodCxlLHdkdCksZSs9anMucGFja2VkTGVuZ3RoKTtsZXQgbz1sLnVucGFjayh0LGUsUGR0KTtlKz1sLnBhY2tlZExlbmd0aDtsZXQgcj1BZS51bnBhY2sodCxlLHhkdCk7ZSs9QWUucGFja2VkTGVuZ3RoO2xldCBhPVN0LnVucGFjayh0LGUsSmR0KTtlKz1TdC5wYWNrZWRMZW5ndGg7bGV0IGg9dFtlXT09PTE7aWYoIW0oaSkpcmV0dXJuIG5ldyBSZCh7ZnJ1c3R1bTpzLG9yaWdpbjpvLG9yaWVudGF0aW9uOnIsdmVydGV4Rm9ybWF0OmEsX2RyYXdOZWFyUGxhbmU6aH0pO2xldCBBPW49PT1pLl9mcnVzdHVtVHlwZT9pLl9mcnVzdHVtOnZvaWQgMDtyZXR1cm4gaS5fZnJ1c3R1bT1zLmNsb25lKEEpLGkuX2ZydXN0dW1UeXBlPW4saS5fb3JpZ2luPWwuY2xvbmUobyxpLl9vcmlnaW4pLGkuX29yaWVudGF0aW9uPUFlLmNsb25lKHIsaS5fb3JpZW50YXRpb24pLGkuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShhLGkuX3ZlcnRleEZvcm1hdCksaS5fZHJhd05lYXJQbGFuZT1oLGl9O2pkdD1uZXcgbHQsSGR0PW5ldyBhdCxnTz1uZXcgYXQsQzU9bmV3IGwsZzU9bmV3IGwsVDU9bmV3IGwsdmR0PW5ldyBsLHpkdD1uZXcgbCxLZHQ9bmV3IGwsUGM9bmV3IEFycmF5KDMpLFRSPW5ldyBBcnJheSg0KTtUUlswXT1uZXcgaWUoLTEsLTEsMSwxKTtUUlsxXT1uZXcgaWUoMSwtMSwxLDEpO1RSWzJdPW5ldyBpZSgxLDEsMSwxKTtUUlszXT1uZXcgaWUoLTEsMSwxLDEpO041PW5ldyBBcnJheSg0KTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KU41W3RdPW5ldyBpZTtSZC5fY29tcHV0ZU5lYXJGYXJQbGFuZXM9ZnVuY3Rpb24odCxlLGksbixzLG8scixhKXtsZXQgaD1sdC5mcm9tUXVhdGVybmlvbihlLGpkdCksQT1aKG8sQzUpLGQ9WihyLGc1KSxmPVooYSxUNSk7QT1sdC5nZXRDb2x1bW4oaCwwLEEpLGQ9bHQuZ2V0Q29sdW1uKGgsMSxkKSxmPWx0LmdldENvbHVtbihoLDIsZiksbC5ub3JtYWxpemUoQSxBKSxsLm5vcm1hbGl6ZShkLGQpLGwubm9ybWFsaXplKGYsZiksbC5uZWdhdGUoQSxBKTtsZXQgRT1hdC5jb21wdXRlVmlldyh0LGYsZCxBLEhkdCksXyxSLEk9bi5wcm9qZWN0aW9uTWF0cml4O2lmKGk9PT1hZyl7bGV0IEM9YXQubXVsdGlwbHkoSSxFLGdPKTtSPWF0LmludmVyc2UoQyxnTyl9ZWxzZSBfPWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihFLGdPKTttKFIpPyhQY1swXT1uLm5lYXIsUGNbMV09bi5mYXIpOihQY1swXT0wLFBjWzFdPW4ubmVhcixQY1syXT1uLmZhcik7Zm9yKGxldCBDPTA7QzwyOysrQylmb3IobGV0IE49MDtOPDQ7KytOKXtsZXQgVD1pZS5jbG9uZShUUltOXSxONVtOXSk7aWYobShSKSl7VD1hdC5tdWx0aXBseUJ5VmVjdG9yKFIsVCxUKTtsZXQgYj0xL1QudztsLm11bHRpcGx5QnlTY2FsYXIoVCxiLFQpLGwuc3VidHJhY3QoVCx0LFQpLGwubm9ybWFsaXplKFQsVCk7bGV0IEY9bC5kb3QoZixUKTtsLm11bHRpcGx5QnlTY2FsYXIoVCxQY1tDXS9GLFQpLGwuYWRkKFQsdCxUKX1lbHNle2xldCBiPW4ub2ZmQ2VudGVyRnJ1c3R1bTttKGIpJiYobj1iKTtsZXQgRj1QY1tDXSxCPVBjW0MrMV07VC54PShULngqKG4ucmlnaHQtbi5sZWZ0KStuLmxlZnQrbi5yaWdodCkqLjUsVC55PShULnkqKG4udG9wLW4uYm90dG9tKStuLmJvdHRvbStuLnRvcCkqLjUsVC56PShULnoqKEYtQiktRi1CKSouNSxULnc9MSxhdC5tdWx0aXBseUJ5VmVjdG9yKF8sVCxUKX1zWzEyKkMrTiozXT1ULngsc1sxMipDK04qMysxXT1ULnksc1sxMipDK04qMysyXT1ULnp9fTtSZC5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9mcnVzdHVtVHlwZSxpPXQuX2ZydXN0dW0sbj10Ll9vcmlnaW4scz10Ll9vcmllbnRhdGlvbixvPXQuX2RyYXdOZWFyUGxhbmUscj10Ll92ZXJ0ZXhGb3JtYXQsYT1vPzY6NSxoPW5ldyBGbG9hdDY0QXJyYXkoMyo0KjYpO1JkLl9jb21wdXRlTmVhckZhclBsYW5lcyhuLHMsZSxpLGgpO2xldCBBPTMqNCoyO2hbQV09aFszKjRdLGhbQSsxXT1oWzMqNCsxXSxoW0ErMl09aFszKjQrMl0saFtBKzNdPWhbMF0saFtBKzRdPWhbMV0saFtBKzVdPWhbMl0saFtBKzZdPWhbMyozXSxoW0ErN109aFszKjMrMV0saFtBKzhdPWhbMyozKzJdLGhbQSs5XT1oWzMqN10saFtBKzEwXT1oWzMqNysxXSxoW0ErMTFdPWhbMyo3KzJdLEErPTMqNCxoW0FdPWhbMyo1XSxoW0ErMV09aFszKjUrMV0saFtBKzJdPWhbMyo1KzJdLGhbQSszXT1oWzNdLGhbQSs0XT1oWzRdLGhbQSs1XT1oWzVdLGhbQSs2XT1oWzBdLGhbQSs3XT1oWzFdLGhbQSs4XT1oWzJdLGhbQSs5XT1oWzMqNF0saFtBKzEwXT1oWzMqNCsxXSxoW0ErMTFdPWhbMyo0KzJdLEErPTMqNCxoW0FdPWhbM10saFtBKzFdPWhbNF0saFtBKzJdPWhbNV0saFtBKzNdPWhbMyo1XSxoW0ErNF09aFszKjUrMV0saFtBKzVdPWhbMyo1KzJdLGhbQSs2XT1oWzMqNl0saFtBKzddPWhbMyo2KzFdLGhbQSs4XT1oWzMqNisyXSxoW0ErOV09aFszKjJdLGhbQSsxMF09aFszKjIrMV0saFtBKzExXT1oWzMqMisyXSxBKz0zKjQsaFtBXT1oWzMqMl0saFtBKzFdPWhbMyoyKzFdLGhbQSsyXT1oWzMqMisyXSxoW0ErM109aFszKjZdLGhbQSs0XT1oWzMqNisxXSxoW0ErNV09aFszKjYrMl0saFtBKzZdPWhbMyo3XSxoW0ErN109aFszKjcrMV0saFtBKzhdPWhbMyo3KzJdLGhbQSs5XT1oWzMqM10saFtBKzEwXT1oWzMqMysxXSxoW0ErMTFdPWhbMyozKzJdLG98fChoPWguc3ViYXJyYXkoMyo0KSk7bGV0IGQ9bmV3IHdlKHtwb3NpdGlvbjpuZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmh9KX0pO2lmKG0oci5ub3JtYWwpfHxtKHIudGFuZ2VudCl8fG0oci5iaXRhbmdlbnQpfHxtKHIuc3QpKXtsZXQgRT1tKHIubm9ybWFsKT9uZXcgRmxvYXQzMkFycmF5KDEyKmEpOnZvaWQgMCxfPW0oci50YW5nZW50KT9uZXcgRmxvYXQzMkFycmF5KDMqNCphKTp2b2lkIDAsUj1tKHIuYml0YW5nZW50KT9uZXcgRmxvYXQzMkFycmF5KDMqNCphKTp2b2lkIDAsST1tKHIuc3QpP25ldyBGbG9hdDMyQXJyYXkoMio0KmEpOnZvaWQgMCxDPUM1LE49ZzUsVD1UNSxiPWwubmVnYXRlKEMsdmR0KSxGPWwubmVnYXRlKE4semR0KSxCPWwubmVnYXRlKFQsS2R0KTtBPTAsbyYmKE1mKEEsRSxfLFIsSSxCLEMsTiksQSs9Myo0KSxNZihBLEUsXyxSLEksVCxiLE4pLEErPTMqNCxNZihBLEUsXyxSLEksYixCLE4pLEErPTMqNCxNZihBLEUsXyxSLEksRixCLGIpLEErPTMqNCxNZihBLEUsXyxSLEksQyxULE4pLEErPTMqNCxNZihBLEUsXyxSLEksTixULGIpLG0oRSkmJihkLm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RX0pKSxtKF8pJiYoZC50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLG0oUikmJihkLmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Un0pKSxtKEkpJiYoZC5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6SX0pKX1sZXQgZj1uZXcgVWludDE2QXJyYXkoNiphKTtmb3IobGV0IEU9MDtFPGE7KytFKXtsZXQgXz1FKjYsUj1FKjQ7ZltfXT1SLGZbXysxXT1SKzEsZltfKzJdPVIrMixmW18rM109UixmW18rNF09UisyLGZbXys1XT1SKzN9cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpkLGluZGljZXM6ZixwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFUyxib3VuZGluZ1NwaGVyZTpOdC5mcm9tVmVydGljZXMoaCl9KX07TlI9UmR9KTt2YXIgTk89e307SGUoTk8se2RlZmF1bHQ6KCk9PnFkdH0pO2Z1bmN0aW9uIFhkdCh0LGUpe3JldHVybiBtKGUpJiYodD1OUi51bnBhY2sodCxlKSksTlIuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHFkdCxGTz1TKCgpPT57bXQoKTtUTygpO3FkdD1YZHR9KTtmdW5jdGlvbiBGUih0KXtwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMiLHQpLHAudHlwZU9mLm9iamVjdCgib3B0aW9ucy5mcnVzdHVtIix0LmZydXN0dW0pLHAudHlwZU9mLm9iamVjdCgib3B0aW9ucy5vcmlnaW4iLHQub3JpZ2luKSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMub3JpZW50YXRpb24iLHQub3JpZW50YXRpb24pO2xldCBlPXQuZnJ1c3R1bSxpPXQub3JpZW50YXRpb24sbj10Lm9yaWdpbixzPVoodC5fZHJhd05lYXJQbGFuZSwhMCksbyxyO2UgaW5zdGFuY2VvZiBGbz8obz1iTyxyPUZvLnBhY2tlZExlbmd0aCk6ZSBpbnN0YW5jZW9mIGpzJiYobz0kZHQscj1qcy5wYWNrZWRMZW5ndGgpLHRoaXMuX2ZydXN0dW1UeXBlPW8sdGhpcy5fZnJ1c3R1bT1lLmNsb25lKCksdGhpcy5fb3JpZ2luPWwuY2xvbmUobiksdGhpcy5fb3JpZW50YXRpb249QWUuY2xvbmUoaSksdGhpcy5fZHJhd05lYXJQbGFuZT1zLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTIrcitsLnBhY2tlZExlbmd0aCtBZS5wYWNrZWRMZW5ndGh9dmFyIGJPLCRkdCx0bXQsZW10LGltdCxubXQsWU8sRjU9UygoKT0+e19pKCk7SHQoKTthZSgpO29pKCk7RnQoKTttdCgpO1RPKCk7eWkoKTtqaSgpO0VuKCk7JFooKTtDTygpO1hpKCk7JHMoKTtiTz0wLCRkdD0xO0ZSLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApO2xldCBuPXQuX2ZydXN0dW1UeXBlLHM9dC5fZnJ1c3R1bTtyZXR1cm4gZVtpKytdPW4sbj09PWJPPyhGby5wYWNrKHMsZSxpKSxpKz1Gby5wYWNrZWRMZW5ndGgpOihqcy5wYWNrKHMsZSxpKSxpKz1qcy5wYWNrZWRMZW5ndGgpLGwucGFjayh0Ll9vcmlnaW4sZSxpKSxpKz1sLnBhY2tlZExlbmd0aCxBZS5wYWNrKHQuX29yaWVudGF0aW9uLGUsaSksaSs9QWUucGFja2VkTGVuZ3RoLGVbaV09dC5fZHJhd05lYXJQbGFuZT8xOjAsZX07dG10PW5ldyBGbyxlbXQ9bmV3IGpzLGltdD1uZXcgQWUsbm10PW5ldyBsO0ZSLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49dFtlKytdLHM7bj09PWJPPyhzPUZvLnVucGFjayh0LGUsdG10KSxlKz1Gby5wYWNrZWRMZW5ndGgpOihzPWpzLnVucGFjayh0LGUsZW10KSxlKz1qcy5wYWNrZWRMZW5ndGgpO2xldCBvPWwudW5wYWNrKHQsZSxubXQpO2UrPWwucGFja2VkTGVuZ3RoO2xldCByPUFlLnVucGFjayh0LGUsaW10KTtlKz1BZS5wYWNrZWRMZW5ndGg7bGV0IGE9dFtlXT09PTE7aWYoIW0oaSkpcmV0dXJuIG5ldyBGUih7ZnJ1c3R1bTpzLG9yaWdpbjpvLG9yaWVudGF0aW9uOnIsX2RyYXdOZWFyUGxhbmU6YX0pO2xldCBoPW49PT1pLl9mcnVzdHVtVHlwZT9pLl9mcnVzdHVtOnZvaWQgMDtyZXR1cm4gaS5fZnJ1c3R1bT1zLmNsb25lKGgpLGkuX2ZydXN0dW1UeXBlPW4saS5fb3JpZ2luPWwuY2xvbmUobyxpLl9vcmlnaW4pLGkuX29yaWVudGF0aW9uPUFlLmNsb25lKHIsaS5fb3JpZW50YXRpb24pLGkuX2RyYXdOZWFyUGxhbmU9YSxpfTtGUi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9mcnVzdHVtVHlwZSxpPXQuX2ZydXN0dW0sbj10Ll9vcmlnaW4scz10Ll9vcmllbnRhdGlvbixvPXQuX2RyYXdOZWFyUGxhbmUscj1uZXcgRmxvYXQ2NEFycmF5KDMqNCoyKTtOUi5fY29tcHV0ZU5lYXJGYXJQbGFuZXMobixzLGUsaSxyKTtsZXQgYT1uZXcgd2Uoe3Bvc2l0aW9uOm5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cn0pfSksaCxBLGQ9bz8yOjEsZj1uZXcgVWludDE2QXJyYXkoOCooZCsxKSksRT1vPzA6MTtmb3IoO0U8MjsrK0UpaD1vP0UqODowLEE9RSo0LGZbaF09QSxmW2grMV09QSsxLGZbaCsyXT1BKzEsZltoKzNdPUErMixmW2grNF09QSsyLGZbaCs1XT1BKzMsZltoKzZdPUErMyxmW2grN109QTtmb3IoRT0wO0U8MjsrK0UpaD0oZCtFKSo4LEE9RSo0LGZbaF09QSxmW2grMV09QSs0LGZbaCsyXT1BKzEsZltoKzNdPUErNSxmW2grNF09QSsyLGZbaCs1XT1BKzYsZltoKzZdPUErMyxmW2grN109QSs3O3JldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6YSxpbmRpY2VzOmYscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpOdC5mcm9tVmVydGljZXMocil9KX07WU89RlJ9KTt2YXIgVk89e307SGUoVk8se2RlZmF1bHQ6KCk9Pm9tdH0pO2Z1bmN0aW9uIHNtdCh0LGUpe3JldHVybiBtKGUpJiYodD1ZTy51bnBhY2sodCxlKSksWU8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIG9tdCxTTz1TKCgpPT57bXQoKTtGNSgpO29tdD1zbXR9KTt2YXIgT089e307SGUoT08se2RlZmF1bHQ6KCk9PmFtdH0pO2Z1bmN0aW9uIHJtdCh0LGUpe3JldHVybiBEby5pbml0aWFsaXplKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBtKGUpJiYodD1LRS51bnBhY2sodCxlKSksS0UuY3JlYXRlR2VvbWV0cnkodCl9KX12YXIgYW10LEJPPVMoKCk9PntKRSgpO210KCk7T04oKTthbXQ9cm10fSk7ZnVuY3Rpb24gUWYodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPVoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCk7dGhpcy5fdmVydGV4Rm9ybWF0PWUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUGxhbmVHZW9tZXRyeSJ9dmFyIGI1LEFtdCxBZyxoZyxHTyxZNT1TKCgpPT57X2koKTtIdCgpO2FlKCk7b2koKTtGdCgpO210KCk7eWkoKTtqaSgpO0VuKCk7WGkoKTtMcygpO1FmLnBhY2tlZExlbmd0aD1TdC5wYWNrZWRMZW5ndGg7UWYucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksZX07YjU9bmV3IFN0LEFtdD17dmVydGV4Rm9ybWF0OmI1fTtRZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPVN0LnVucGFjayh0LGUsYjUpO3JldHVybiBtKGkpPyhpLl92ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUobixpLl92ZXJ0ZXhGb3JtYXQpLGkpOm5ldyBRZihBbXQpfTtBZz1uZXcgbCgtLjUsLS41LDApLGhnPW5ldyBsKC41LC41LDApO1FmLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3ZlcnRleEZvcm1hdCxpPW5ldyB3ZSxuLHM7aWYoZS5wb3NpdGlvbil7aWYocz1uZXcgRmxvYXQ2NEFycmF5KDQqMyksc1swXT1BZy54LHNbMV09QWcueSxzWzJdPTAsc1szXT1oZy54LHNbNF09QWcueSxzWzVdPTAsc1s2XT1oZy54LHNbN109aGcueSxzWzhdPTAsc1s5XT1BZy54LHNbMTBdPWhnLnksc1sxMV09MCxpLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pLGUubm9ybWFsKXtsZXQgbz1uZXcgRmxvYXQzMkFycmF5KDEyKTtvWzBdPTAsb1sxXT0wLG9bMl09MSxvWzNdPTAsb1s0XT0wLG9bNV09MSxvWzZdPTAsb1s3XT0wLG9bOF09MSxvWzldPTAsb1sxMF09MCxvWzExXT0xLGkubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpvfSl9aWYoZS5zdCl7bGV0IG89bmV3IEZsb2F0MzJBcnJheSg4KTtvWzBdPTAsb1sxXT0wLG9bMl09MSxvWzNdPTAsb1s0XT0xLG9bNV09MSxvWzZdPTAsb1s3XT0xLGkuc3Q9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOm99KX1pZihlLnRhbmdlbnQpe2xldCBvPW5ldyBGbG9hdDMyQXJyYXkoMTIpO29bMF09MSxvWzFdPTAsb1syXT0wLG9bM109MSxvWzRdPTAsb1s1XT0wLG9bNl09MSxvWzddPTAsb1s4XT0wLG9bOV09MSxvWzEwXT0wLG9bMTFdPTAsaS50YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpvfSl9aWYoZS5iaXRhbmdlbnQpe2xldCBvPW5ldyBGbG9hdDMyQXJyYXkoMTIpO29bMF09MCxvWzFdPTEsb1syXT0wLG9bM109MCxvWzRdPTEsb1s1XT0wLG9bNl09MCxvWzddPTEsb1s4XT0wLG9bOV09MCxvWzEwXT0xLG9bMTFdPTAsaS5iaXRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOm99KX1uPW5ldyBVaW50MTZBcnJheSgyKjMpLG5bMF09MCxuWzFdPTEsblsyXT0yLG5bM109MCxuWzRdPTIsbls1XT0zfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6aSxpbmRpY2VzOm4scHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6bmV3IE50KGwuWkVSTyxNYXRoLnNxcnQoMikpfSl9O0dPPVFmfSk7dmFyIFdPPXt9O0hlKFdPLHtkZWZhdWx0OigpPT5jbXR9KTtmdW5jdGlvbiBobXQodCxlKXtyZXR1cm4gbShlKSYmKHQ9R08udW5wYWNrKHQsZSkpLEdPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBjbXQsRE89UygoKT0+e210KCk7WTUoKTtjbXQ9aG10fSk7ZnVuY3Rpb24ga2YoKXt0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQbGFuZU91dGxpbmVHZW9tZXRyeSJ9dmFyIEpjLGNnLFVPLFY1PVMoKCk9PntfaSgpO0h0KCk7YWUoKTtvaSgpO210KCk7eWkoKTtqaSgpO0VuKCk7WGkoKTtrZi5wYWNrZWRMZW5ndGg9MDtrZi5wYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHAuZGVmaW5lZCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGV9O2tmLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAuZGVmaW5lZCgiYXJyYXkiLHQpLG0oaSk/aTpuZXcga2Z9O0pjPW5ldyBsKC0uNSwtLjUsMCksY2c9bmV3IGwoLjUsLjUsMCk7a2YuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24oKXtsZXQgdD1uZXcgd2UsZT1uZXcgVWludDE2QXJyYXkoNCoyKSxpPW5ldyBGbG9hdDY0QXJyYXkoNCozKTtyZXR1cm4gaVswXT1KYy54LGlbMV09SmMueSxpWzJdPUpjLnosaVszXT1jZy54LGlbNF09SmMueSxpWzVdPUpjLnosaVs2XT1jZy54LGlbN109Y2cueSxpWzhdPUpjLnosaVs5XT1KYy54LGlbMTBdPWNnLnksaVsxMV09SmMueix0LnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aX0pLGVbMF09MCxlWzFdPTEsZVsyXT0xLGVbM109MixlWzRdPTIsZVs1XT0zLGVbNl09MyxlWzddPTAsbmV3IHNlKHthdHRyaWJ1dGVzOnQsaW5kaWNlczplLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6bmV3IE50KGwuWkVSTyxNYXRoLnNxcnQoMikpfSl9O1VPPWtmfSk7dmFyIE1PPXt9O0hlKE1PLHtkZWZhdWx0OigpPT5kbXR9KTtmdW5jdGlvbiBsbXQodCxlKXtyZXR1cm4gbShlKSYmKHQ9VU8udW5wYWNrKHQsZSkpLFVPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBkbXQsUU89UygoKT0+e210KCk7VjUoKTtkbXQ9bG10fSk7ZnVuY3Rpb24gQXModCxlKXt0aGlzLnBvc2l0aW9uPXQsbSh0aGlzLnBvc2l0aW9uKXx8KHRoaXMucG9zaXRpb249bmV3IG50KSx0aGlzLnRhbmdlbnRQbGFuZT1lLG0odGhpcy50YW5nZW50UGxhbmUpfHwodGhpcy50YW5nZW50UGxhbmU9QXMuTk9SVEhfUE9MRV9UQU5HRU5UX1BMQU5FKX12YXIgTGYsbW10LGZtdCxFbXQsX210LEZyLFM1PVMoKCk9PntYZSgpO0h0KCk7cmkoKTthZSgpO210KCk7T2UoKTtYbSgpO1VsKCk7X2UoKTtTSSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEFzLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YW5nZW50UGxhbmUuZWxsaXBzb2lkfX0seDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zaXRpb24ueH19LHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uLnl9fSxjb25mb3JtYWxMYXRpdHVkZTp7Z2V0OmZ1bmN0aW9uKCl7bGV0IHQ9bnQubWFnbml0dWRlKHRoaXMucG9zaXRpb24pLGU9Mip0aGlzLmVsbGlwc29pZC5tYXhpbXVtUmFkaXVzO3JldHVybiB0aGlzLnRhbmdlbnRQbGFuZS5wbGFuZS5ub3JtYWwueiooTC5QSV9PVkVSX1RXTy0yKk1hdGguYXRhbjIodCxlKSl9fSxsb25naXR1ZGU6e2dldDpmdW5jdGlvbigpe2xldCB0PUwuUElfT1ZFUl9UV08rTWF0aC5hdGFuMih0aGlzLnksdGhpcy54KTtyZXR1cm4gdD5NYXRoLlBJJiYodC09TC5UV09fUEkpLHR9fX0pO0xmPW5ldyB1dCxtbXQ9bmV3IGw7QXMucHJvdG90eXBlLmdldExhdGl0dWRlPWZ1bmN0aW9uKHQpe20odCl8fCh0PW90LldHUzg0KSxMZi5sYXRpdHVkZT10aGlzLmNvbmZvcm1hbExhdGl0dWRlLExmLmxvbmdpdHVkZT10aGlzLmxvbmdpdHVkZSxMZi5oZWlnaHQ9MDtsZXQgZT10aGlzLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihMZixtbXQpO3JldHVybiB0LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsTGYpLExmLmxhdGl0dWRlfTtmbXQ9bmV3IFdsLEVtdD1uZXcgbCxfbXQ9bmV3IGw7QXMuZnJvbUNhcnRlc2lhbj1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFuIix0KTtsZXQgaT1MLnNpZ25Ob3RaZXJvKHQueiksbj1Bcy5OT1JUSF9QT0xFX1RBTkdFTlRfUExBTkUscz1Bcy5TT1VUSF9QT0xFO2k8MCYmKG49QXMuU09VVEhfUE9MRV9UQU5HRU5UX1BMQU5FLHM9QXMuTk9SVEhfUE9MRSk7bGV0IG89Zm10O28ub3JpZ2luPW4uZWxsaXBzb2lkLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZSh0LG8ub3JpZ2luKSxvLmRpcmVjdGlvbj1sLnN1YnRyYWN0KG8ub3JpZ2luLHMsRW10KSxsLm5vcm1hbGl6ZShvLmRpcmVjdGlvbixvLmRpcmVjdGlvbik7bGV0IHI9bm8ucmF5UGxhbmUobyxuLnBsYW5lLF9tdCksYT1sLnN1YnRyYWN0KHIscyxyKSxoPWwuZG90KG4ueEF4aXMsYSksQT1pKmwuZG90KG4ueUF4aXMsYSk7cmV0dXJuIG0oZSk/KGUucG9zaXRpb249bmV3IG50KGgsQSksZS50YW5nZW50UGxhbmU9bixlKTpuZXcgQXMobmV3IG50KGgsQSksbil9O0FzLmZyb21DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUpe3AuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IGk9dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1pOmU9bmV3IEFycmF5KGkpO2ZvcihsZXQgbj0wO248aTtuKyspZVtuXT1Bcy5mcm9tQ2FydGVzaWFuKHRbbl0sZVtuXSk7cmV0dXJuIGV9O0FzLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5wb3NpdGlvbj10LnBvc2l0aW9uLGUudGFuZ2VudFBsYW5lPXQudGFuZ2VudFBsYW5lLGUpOm5ldyBBcyh0LnBvc2l0aW9uLHQudGFuZ2VudFBsYW5lKX07QXMuSEFMRl9VTklUX1NQSEVSRT1PYmplY3QuZnJlZXplKG5ldyBvdCguNSwuNSwuNSkpO0FzLk5PUlRIX1BPTEU9T2JqZWN0LmZyZWV6ZShuZXcgbCgwLDAsLjUpKTtBcy5TT1VUSF9QT0xFPU9iamVjdC5mcmVlemUobmV3IGwoMCwwLC0uNSkpO0FzLk5PUlRIX1BPTEVfVEFOR0VOVF9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBvbyhBcy5OT1JUSF9QT0xFLEFzLkhBTEZfVU5JVF9TUEhFUkUpKTtBcy5TT1VUSF9QT0xFX1RBTkdFTlRfUExBTkU9T2JqZWN0LmZyZWV6ZShuZXcgb28oQXMuU09VVEhfUE9MRSxBcy5IQUxGX1VOSVRfU1BIRVJFKSk7RnI9QXN9KTtmdW5jdGlvbiBabXQodCxlLGksbil7bGV0IG89bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LFJtdCkuaGVpZ2h0LHI9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLE81KTtyLmhlaWdodD1vLG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4ocixlKTtsZXQgYT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGksTzUpO2EuaGVpZ2h0PW8tMTAwLG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oYSxpKX1mdW5jdGlvbiBrTyh0KXtsZXQgZT10LnZlcnRleEZvcm1hdCxpPXQuZ2VvbWV0cnksbj10LnNoYWRvd1ZvbHVtZSxzPWkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsbz1tKGkuYXR0cmlidXRlcy5zdCk/aS5hdHRyaWJ1dGVzLnN0LnZhbHVlczp2b2lkIDAscj1zLmxlbmd0aCxhPXQud2FsbCxoPXQudG9wfHxhLEE9dC5ib3R0b218fGE7aWYoZS5zdHx8ZS5ub3JtYWx8fGUudGFuZ2VudHx8ZS5iaXRhbmdlbnR8fG4pe2xldCBkPXQuYm91bmRpbmdSZWN0YW5nbGUsZj10LnJvdGF0aW9uQXhpcyxFPXQucHJvamVjdFRvMmQsXz10LmVsbGlwc29pZCxSPXQuc3RSb3RhdGlvbixJPXQucGVyUG9zaXRpb25IZWlnaHQsQz1ObXQ7Qy54PWQueCxDLnk9ZC55O2xldCBOPWUuc3Q/bmV3IEZsb2F0MzJBcnJheSgyKihyLzMpKTp2b2lkIDAsVDtlLm5vcm1hbCYmKEkmJmgmJiFhP1Q9aS5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXM6VD1uZXcgRmxvYXQzMkFycmF5KHIpKTtsZXQgYj1lLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShyKTp2b2lkIDAsRj1lLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHIpOnZvaWQgMCxCPW4/bmV3IEZsb2F0MzJBcnJheShyKTp2b2lkIDAsVT0wLFE9MCxNPXBtdCxrPXVtdCx5PUNtdCxjPSEwLGc9WW10LE89Vm10O2lmKFIhPT0wKXtsZXQgeD1BZS5mcm9tQXhpc0FuZ2xlKGYsUixHNSk7Zz1sdC5mcm9tUXVhdGVybmlvbih4LGcpLHg9QWUuZnJvbUF4aXNBbmdsZShmLC1SLEc1KSxPPWx0LmZyb21RdWF0ZXJuaW9uKHgsTyl9ZWxzZSBnPWx0LmNsb25lKGx0LklERU5USVRZLGcpLE89bHQuY2xvbmUobHQuSURFTlRJVFksTyk7bGV0IEQ9MCx3PTA7aCYmQSYmKEQ9ci8yLHc9ci8zLHIvPTIpO2ZvcihsZXQgeD0wO3g8cjt4Kz0zKXtsZXQgSD1sLmZyb21BcnJheShzLHgsYm10KTtpZihlLnN0JiYhbShvKSl7bGV0IGo9bHQubXVsdGlwbHlCeVZlY3RvcihnLEgsSW10KTtqPV8uc2NhbGVUb0dlb2RldGljU3VyZmFjZShqLGopO2xldCBYPUUoW2pdLEZtdClbMF07bnQuc3VidHJhY3QoWCxDLFgpO2xldCB0dD1MLmNsYW1wKFgueC9kLndpZHRoLDAsMSksRz1MLmNsYW1wKFgueS9kLmhlaWdodCwwLDEpO0EmJihOW1Urd109dHQsTltVKzErd109RyksaCYmKE5bVV09dHQsTltVKzFdPUcpLFUrPTJ9aWYoZS5ub3JtYWx8fGUudGFuZ2VudHx8ZS5iaXRhbmdlbnR8fG4pe2xldCBqPVErMSxYPVErMjtpZihhKXtpZih4KzM8cil7bGV0IHR0PWwuZnJvbUFycmF5KHMseCszLGdtdCk7aWYoYyl7bGV0IEc9bC5mcm9tQXJyYXkocyx4K3IsVG10KTtJJiZabXQoSCx0dCxHLF8pLGwuc3VidHJhY3QodHQsSCx0dCksbC5zdWJ0cmFjdChHLEgsRyksTT1sLm5vcm1hbGl6ZShsLmNyb3NzKEcsdHQsTSksTSksYz0hMX1sLmVxdWFsc0Vwc2lsb24odHQsSCxMLkVQU0lMT04xMCkmJihjPSEwKX0oZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJih5PV8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEgseSksZS50YW5nZW50JiYoaz1sLm5vcm1hbGl6ZShsLmNyb3NzKHksTSxrKSxrKSkpfWVsc2UgTT1fLmdlb2RldGljU3VyZmFjZU5vcm1hbChILE0pLChlLnRhbmdlbnR8fGUuYml0YW5nZW50KSYmKEkmJihsZz1sLmZyb21BcnJheShULFEsbGcpLEdBPWwuY3Jvc3MobC5VTklUX1osbGcsR0EpLEdBPWwubm9ybWFsaXplKGx0Lm11bHRpcGx5QnlWZWN0b3IoTyxHQSxHQSksR0EpLGUuYml0YW5nZW50JiYoeWY9bC5ub3JtYWxpemUobC5jcm9zcyhsZyxHQSx5ZikseWYpKSksaz1sLmNyb3NzKGwuVU5JVF9aLE0sayksaz1sLm5vcm1hbGl6ZShsdC5tdWx0aXBseUJ5VmVjdG9yKE8sayxrKSxrKSxlLmJpdGFuZ2VudCYmKHk9bC5ub3JtYWxpemUobC5jcm9zcyhNLGsseSkseSkpKTtlLm5vcm1hbCYmKHQud2FsbD8oVFtRK0RdPU0ueCxUW2orRF09TS55LFRbWCtEXT1NLnopOkEmJihUW1ErRF09LU0ueCxUW2orRF09LU0ueSxUW1grRF09LU0ueiksKGgmJiFJfHxhKSYmKFRbUV09TS54LFRbal09TS55LFRbWF09TS56KSksbiYmKGEmJihNPV8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEgsTSkpLEJbUStEXT0tTS54LEJbaitEXT0tTS55LEJbWCtEXT0tTS56KSxlLnRhbmdlbnQmJih0LndhbGw/KGJbUStEXT1rLngsYltqK0RdPWsueSxiW1grRF09ay56KTpBJiYoYltRK0RdPS1rLngsYltqK0RdPS1rLnksYltYK0RdPS1rLnopLGgmJihJPyhiW1FdPUdBLngsYltqXT1HQS55LGJbWF09R0Eueik6KGJbUV09ay54LGJbal09ay55LGJbWF09ay56KSkpLGUuYml0YW5nZW50JiYoQSYmKEZbUStEXT15LngsRltqK0RdPXkueSxGW1grRF09eS56KSxoJiYoST8oRltRXT15Zi54LEZbal09eWYueSxGW1hdPXlmLnopOihGW1FdPXkueCxGW2pdPXkueSxGW1hdPXkueikpKSxRKz0zfX1lLnN0JiYhbShvKSYmKGkuYXR0cmlidXRlcy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6Tn0pKSxlLm5vcm1hbCYmKGkuYXR0cmlidXRlcy5ub3JtYWw9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlR9KSksZS50YW5nZW50JiYoaS5hdHRyaWJ1dGVzLnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmJ9KSksZS5iaXRhbmdlbnQmJihpLmF0dHJpYnV0ZXMuYml0YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpGfSkpLG4mJihpLmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Qn0pKX1pZih0LmV4dHJ1ZGUmJm0odC5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgZD1zLmxlbmd0aC8zLGY9bmV3IFVpbnQ4QXJyYXkoZCk7aWYodC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5UT1ApaCYmQXx8YT9mPWYuZmlsbCgxLDAsZC8yKTpoJiYoZj1mLmZpbGwoMSkpO2Vsc2V7bGV0IEU9dC5vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MTtmPWYuZmlsbChFKX1pLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Zn0pfXJldHVybiBpfWZ1bmN0aW9uIFNtdCh0LGUsaSxuLHMsbyxyLGEsaCxBKXtsZXQgZD17d2FsbHM6W119LGY7aWYocnx8YSl7bGV0IFQ9aWkuY3JlYXRlR2VvbWV0cnlGcm9tUG9zaXRpb25zKHQsZSxpLG4sbyxoLEEpLGI9VC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxGPVQuaW5kaWNlcyxCLFU7aWYociYmYSl7bGV0IFE9Yi5jb25jYXQoYik7Qj1RLmxlbmd0aC8zLFU9dGUuY3JlYXRlVHlwZWRBcnJheShCLEYubGVuZ3RoKjIpLFUuc2V0KEYpO2xldCBNPUYubGVuZ3RoLGs9Qi8yO2ZvcihmPTA7ZjxNO2YrPTMpe2xldCB5PVVbZl0rayxjPVVbZisxXStrLGc9VVtmKzJdK2s7VVtmK01dPWcsVVtmKzErTV09YyxVW2YrMitNXT15fWlmKFQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9USxvJiZoLm5vcm1hbCl7bGV0IHk9VC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXM7VC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXM9bmV3IEZsb2F0MzJBcnJheShRLmxlbmd0aCksVC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMuc2V0KHkpfWlmKGguc3QmJm0oaSkpe2xldCB5PVQuYXR0cmlidXRlcy5zdC52YWx1ZXM7VC5hdHRyaWJ1dGVzLnN0LnZhbHVlcz1uZXcgRmxvYXQzMkFycmF5KEIqMiksVC5hdHRyaWJ1dGVzLnN0LnZhbHVlcz15LmNvbmNhdCh5KX1ULmluZGljZXM9VX1lbHNlIGlmKGEpe2ZvcihCPWIubGVuZ3RoLzMsVT10ZS5jcmVhdGVUeXBlZEFycmF5KEIsRi5sZW5ndGgpLGY9MDtmPEYubGVuZ3RoO2YrPTMpVVtmXT1GW2YrMl0sVVtmKzFdPUZbZisxXSxVW2YrMl09RltmXTtULmluZGljZXM9VX1kLnRvcEFuZEJvdHRvbT1uZXcgTG4oe2dlb21ldHJ5OlR9KX1sZXQgRT1zLm91dGVyUmluZyxfPW9vLmZyb21Qb2ludHMoRSx0KSxSPV8ucHJvamVjdFBvaW50c09udG9QbGFuZShFLFc1KSxJPXVpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChSKTtJPT09VXMuQ0xPQ0tXSVNFJiYoRT1FLnNsaWNlKCkucmV2ZXJzZSgpKTtsZXQgQz1paS5jb21wdXRlV2FsbEdlb21ldHJ5KEUsaSx0LG4sbyxBKTtkLndhbGxzLnB1c2gobmV3IExuKHtnZW9tZXRyeTpDfSkpO2xldCBOPXMuaG9sZXM7Zm9yKGY9MDtmPE4ubGVuZ3RoO2YrKyl7bGV0IFQ9TltmXTtSPV8ucHJvamVjdFBvaW50c09udG9QbGFuZShULFc1KSxJPXVpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChSKSxJPT09VXMuQ09VTlRFUl9DTE9DS1dJU0UmJihUPVQuc2xpY2UoKS5yZXZlcnNlKCkpLEM9aWkuY29tcHV0ZVdhbGxHZW9tZXRyeShULGksdCxuLG8sQSksZC53YWxscy5wdXNoKG5ldyBMbih7Z2VvbWV0cnk6Q30pKX1yZXR1cm4gZH1mdW5jdGlvbiBlYSh0KXtpZihwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMiLHQpLHAudHlwZU9mLm9iamVjdCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5Iix0LnBvbHlnb25IaWVyYXJjaHkpLG0odC5wZXJQb3NpdGlvbkhlaWdodCkmJnQucGVyUG9zaXRpb25IZWlnaHQmJm0odC5oZWlnaHQpKXRocm93IG5ldyBZKCJDYW5ub3QgdXNlIGJvdGggb3B0aW9ucy5wZXJQb3NpdGlvbkhlaWdodCBhbmQgb3B0aW9ucy5oZWlnaHQiKTtpZihtKHQuYXJjVHlwZSkmJnQuYXJjVHlwZSE9PXRpLkdFT0RFU0lDJiZ0LmFyY1R5cGUhPT10aS5SSFVNQil0aHJvdyBuZXcgWSgiSW52YWxpZCBhcmNUeXBlLiBWYWxpZCBvcHRpb25zIGFyZSBBcmNUeXBlLkdFT0RFU0lDIGFuZCBBcmNUeXBlLlJIVU1CLiIpO2xldCBlPXQucG9seWdvbkhpZXJhcmNoeSxpPVoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCksbj1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxzPVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSksbz1aKHQuc3RSb3RhdGlvbiwwKSxyPXQudGV4dHVyZUNvb3JkaW5hdGVzLGE9Wih0LnBlclBvc2l0aW9uSGVpZ2h0LCExKSxoPWEmJm0odC5leHRydWRlZEhlaWdodCksQT1aKHQuaGVpZ2h0LDApLGQ9Wih0LmV4dHJ1ZGVkSGVpZ2h0LEEpO2lmKCFoKXtsZXQgZj1NYXRoLm1heChBLGQpO2Q9TWF0aC5taW4oQSxkKSxBPWZ9dGhpcy5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKGkpLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShuKSx0aGlzLl9ncmFudWxhcml0eT1zLHRoaXMuX3N0Um90YXRpb249byx0aGlzLl9oZWlnaHQ9QSx0aGlzLl9leHRydWRlZEhlaWdodD1kLHRoaXMuX2Nsb3NlVG9wPVoodC5jbG9zZVRvcCwhMCksdGhpcy5fY2xvc2VCb3R0b209Wih0LmNsb3NlQm90dG9tLCEwKSx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHQ9YSx0aGlzLl9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU9aCx0aGlzLl9zaGFkb3dWb2x1bWU9Wih0LnNoYWRvd1ZvbHVtZSwhMSksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWdvbkdlb21ldHJ5Iix0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fYXJjVHlwZT1aKHQuYXJjVHlwZSx0aS5HRU9ERVNJQyksdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZXM9cix0aGlzLnBhY2tlZExlbmd0aD1paS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsbCkrb3QucGFja2VkTGVuZ3RoK1N0LnBhY2tlZExlbmd0aCsocj9paS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKHIsbnQpOjEpKzEyfWZ1bmN0aW9uIEQ1KHQsZSxpLG4scyxvKXtsZXQgcj10LmxvbmdpdHVkZSxhPXI+PTA/cjpyK0wuVFdPX1BJO3Mud2VzdE92ZXJJZGw9TWF0aC5taW4ocy53ZXN0T3ZlcklkbCxhKSxzLmVhc3RPdmVySWRsPU1hdGgubWF4KHMuZWFzdE92ZXJJZGwsYSksby53ZXN0PU1hdGgubWluKG8ud2VzdCxyKSxvLmVhc3Q9TWF0aC5tYXgoby5lYXN0LHIpO2xldCBoPXQuZ2V0TGF0aXR1ZGUoaSksQT1oO2lmKG8uc291dGg9TWF0aC5taW4oby5zb3V0aCxoKSxvLm5vcnRoPU1hdGgubWF4KG8ubm9ydGgsaCksbiE9PXRpLlJIVU1CKXtsZXQgRT1udC5zdWJ0cmFjdChlLnBvc2l0aW9uLHQucG9zaXRpb24sV210KSxfPW50LmRvdChlLnBvc2l0aW9uLEUpL250LmRvdChFLEUpO2lmKF8+MCYmXzwxKXtsZXQgUj1udC5hZGQoZS5wb3NpdGlvbixudC5tdWx0aXBseUJ5U2NhbGFyKEUsLV8sRSksRG10KSxJPUZyLmNsb25lKGUsVW10KTtJLnBvc2l0aW9uPVI7bGV0IEM9SS5nZXRMYXRpdHVkZShpKTtvLnNvdXRoPU1hdGgubWluKG8uc291dGgsQyksby5ub3J0aD1NYXRoLm1heChvLm5vcnRoLEMpLE1hdGguYWJzKGgpPk1hdGguYWJzKEMpJiYoQT1DKX19bGV0IGQ9ZS54KnQueS10LngqZS55LGY9TWF0aC5zaWduKGQpO2YhPT0wJiYoZio9bnQuYW5nbGVCZXR3ZWVuKGUucG9zaXRpb24sdC5wb3NpdGlvbikpLEE+PTAmJihzLm5vcnRoQW5nbGUrPWYpLEE8PTAmJihzLnNvdXRoQW5nbGUrPWYpfWZ1bmN0aW9uIGttdCh0LGUsaSl7cmV0dXJuIHQuaGVpZ2h0Pj1MLlBJfHx0LndpZHRoPj1MLlBJP0ZyLmZyb21DYXJ0ZXNpYW4oZVswXSxRbXQpLnRhbmdlbnRQbGFuZTpvby5mcm9tUG9pbnRzKGUsaSl9ZnVuY3Rpb24gTG10KHQsZSxpKXtyZXR1cm4obixzKT0+e2lmKHQuaGVpZ2h0Pj1MLlBJfHx0LndpZHRoPj1MLlBJKXtpZih0LnNvdXRoPDAmJnQubm9ydGg+MCl7bShzKXx8KHM9W10pO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7KytyKXtsZXQgYT1pLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG5bcl0sTTUpO3Nbcl09bmV3IG50KGEubG9uZ2l0dWRlL0wuUEksYS5sYXRpdHVkZS9MLlBJX09WRVJfVFdPKX1yZXR1cm4gcy5sZW5ndGg9bi5sZW5ndGgsc31yZXR1cm4gRnIuZnJvbUNhcnRlc2lhbkFycmF5KG4scyl9cmV0dXJuIG9vLmZyb21Qb2ludHMoZSxpKS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKG4scyl9fWZ1bmN0aW9uIHltdCh0LGUsaSl7aWYodC5oZWlnaHQ+PUwuUEl8fHQud2lkdGg+PUwuUEkpcmV0dXJuKHMsbyk9PntpZih0LnNvdXRoPDAmJnQubm9ydGg+MCl7bGV0IHI9aS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhzLE01KTtyZXR1cm4gbShvKXx8KG89bmV3IG50KSxvLng9ci5sb25naXR1ZGUvTC5QSSxvLnk9ci5sYXRpdHVkZS9MLlBJX09WRVJfVFdPLG99cmV0dXJuIEZyLmZyb21DYXJ0ZXNpYW4ocyxvKX07bGV0IG49b28uZnJvbVBvaW50cyhlLGkpO3JldHVybihzLG8pPT5uLnByb2plY3RQb2ludHNPbnRvUGxhbmUocyxvKX1mdW5jdGlvbiB3bXQodCxlLGksbil7cmV0dXJuKHMsbyk9PiFuJiYodC5oZWlnaHQ+PUwuUElfT1ZFUl9UV098fHQud2lkdGg+PTIqTC5QSV9PVkVSX1RIUkVFKT9paS5zcGxpdFBvbHlnb25zT25FcXVhdG9yKHMsZSxpLG8pOnN9ZnVuY3Rpb24geG10KHQsZSxpLG4pe2lmKGUuaGVpZ2h0Pj1MLlBJfHxlLndpZHRoPj1MLlBJKXJldHVybiBtaS5mcm9tUmVjdGFuZ2xlKGUsdm9pZCAwLEI1KTtsZXQgcz10LG89b28uZnJvbVBvaW50cyhzLGkpO3JldHVybiBpaS5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGUoby5wbGFuZS5ub3JtYWwsby5wcm9qZWN0UG9pbnRPbnRvUGxhbmUuYmluZChvKSxzLG4sQjUpfWZ1bmN0aW9uIFBtdCh0KXtsZXQgZT0tdC5fc3RSb3RhdGlvbjtpZihlPT09MClyZXR1cm5bMCwwLDAsMSwxLDBdO2xldCBpPXQuX2VsbGlwc29pZCxuPXQuX3BvbHlnb25IaWVyYXJjaHkucG9zaXRpb25zLHM9dC5yZWN0YW5nbGU7cmV0dXJuIHNlLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzKG4sZSxpLHMpfXZhciBSbXQsTzUsQjUsSW10LHBtdCx1bXQsQ210LGdtdCxUbXQsbGcsR0EseWYsTm10LEZtdCxibXQsRzUsWW10LFZtdCxXNSxPbXQsQm10LEdtdCxXbXQsRG10LFVtdCxVNSxNbXQsdGEsUW10LE01LExPLFE1PVMoKCk9PntHbCgpO0VyKCk7X2koKTtYZSgpO0h0KCk7cmkoKTthZSgpO29pKCk7RnQoKTttdCgpO090KCk7T2UoKTtYbSgpO3lpKCk7amkoKTt1QSgpO2dvKCk7Z0EoKTtEaSgpO19lKCk7ZG4oKTtFUigpO1BhKCk7JHMoKTtwbigpO1M1KCk7THMoKTtmYygpO1JtdD1uZXcgdXQsTzU9bmV3IHV0O0I1PW5ldyBtaSxJbXQ9bmV3IGwscG10PW5ldyBsLHVtdD1uZXcgbCxDbXQ9bmV3IGwsZ210PW5ldyBsLFRtdD1uZXcgbCxsZz1uZXcgbCxHQT1uZXcgbCx5Zj1uZXcgbCxObXQ9bmV3IG50LEZtdD1uZXcgbnQsYm10PW5ldyBsLEc1PW5ldyBBZSxZbXQ9bmV3IGx0LFZtdD1uZXcgbHQ7VzU9W107ZWEuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCkscC5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsdC5wb3NpdGlvbnMpO2xldCBlPXtwb2x5Z29uSGllcmFyY2h5Ontwb3NpdGlvbnM6dC5wb3NpdGlvbnN9LGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxzdFJvdGF0aW9uOnQuc3RSb3RhdGlvbixlbGxpcHNvaWQ6dC5lbGxpcHNvaWQsZ3JhbnVsYXJpdHk6dC5ncmFudWxhcml0eSxwZXJQb3NpdGlvbkhlaWdodDp0LnBlclBvc2l0aW9uSGVpZ2h0LGNsb3NlVG9wOnQuY2xvc2VUb3AsY2xvc2VCb3R0b206dC5jbG9zZUJvdHRvbSxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGUsYXJjVHlwZTp0LmFyY1R5cGUsdGV4dHVyZUNvb3JkaW5hdGVzOnQudGV4dHVyZUNvb3JkaW5hdGVzfTtyZXR1cm4gbmV3IGVhKGUpfTtlYS5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkscC5kZWZpbmVkKCJhcnJheSIsZSksaT1aKGksMCksaT1paS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsaSxsKSxvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxTdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLGkpLGkrPVN0LnBhY2tlZExlbmd0aCxlW2krK109dC5faGVpZ2h0LGVbaSsrXT10Ll9leHRydWRlZEhlaWdodCxlW2krK109dC5fZ3JhbnVsYXJpdHksZVtpKytdPXQuX3N0Um90YXRpb24sZVtpKytdPXQuX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT8xOjAsZVtpKytdPXQuX3BlclBvc2l0aW9uSGVpZ2h0PzE6MCxlW2krK109dC5fY2xvc2VUb3A/MTowLGVbaSsrXT10Ll9jbG9zZUJvdHRvbT8xOjAsZVtpKytdPXQuX3NoYWRvd1ZvbHVtZT8xOjAsZVtpKytdPVoodC5fb2Zmc2V0QXR0cmlidXRlLC0xKSxlW2krK109dC5fYXJjVHlwZSxtKHQuX3RleHR1cmVDb29yZGluYXRlcyk/aT1paS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZSxpLG50KTplW2krK109LTEsZVtpKytdPXQucGFja2VkTGVuZ3RoLGV9O09tdD1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksQm10PW5ldyBTdCxHbXQ9e3BvbHlnb25IaWVyYXJjaHk6e319O2VhLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7cC5kZWZpbmVkKCJhcnJheSIsdCksZT1aKGUsMCk7bGV0IG49aWkudW5wYWNrUG9seWdvbkhpZXJhcmNoeSh0LGUsbCk7ZT1uLnN0YXJ0aW5nSW5kZXgsZGVsZXRlIG4uc3RhcnRpbmdJbmRleDtsZXQgcz1vdC51bnBhY2sodCxlLE9tdCk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBvPVN0LnVucGFjayh0LGUsQm10KTtlKz1TdC5wYWNrZWRMZW5ndGg7bGV0IHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdLEE9dFtlKytdLGQ9dFtlKytdPT09MSxmPXRbZSsrXT09PTEsRT10W2UrK109PT0xLF89dFtlKytdPT09MSxSPXRbZSsrXT09PTEsST10W2UrK10sQz10W2UrK10sTj10W2VdPT09LTE/dm9pZCAwOmlpLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLG50KTttKE4pPyhlPU4uc3RhcnRpbmdJbmRleCxkZWxldGUgTi5zdGFydGluZ0luZGV4KTplKys7bGV0IFQ9dFtlKytdO3JldHVybiBtKGkpfHwoaT1uZXcgZWEoR210KSksaS5fcG9seWdvbkhpZXJhcmNoeT1uLGkuX2VsbGlwc29pZD1vdC5jbG9uZShzLGkuX2VsbGlwc29pZCksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKG8saS5fdmVydGV4Rm9ybWF0KSxpLl9oZWlnaHQ9cixpLl9leHRydWRlZEhlaWdodD1hLGkuX2dyYW51bGFyaXR5PWgsaS5fc3RSb3RhdGlvbj1BLGkuX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT1kLGkuX3BlclBvc2l0aW9uSGVpZ2h0PWYsaS5fY2xvc2VUb3A9RSxpLl9jbG9zZUJvdHRvbT1fLGkuX3NoYWRvd1ZvbHVtZT1SLGkuX29mZnNldEF0dHJpYnV0ZT1JPT09LTE/dm9pZCAwOkksaS5fYXJjVHlwZT1DLGkuX3RleHR1cmVDb29yZGluYXRlcz1OLGkucGFja2VkTGVuZ3RoPVQsaX07V210PW5ldyBudCxEbXQ9bmV3IG50LFVtdD1uZXcgRnI7VTU9bmV3IEZyLE1tdD1uZXcgRnIsdGE9e25vcnRoQW5nbGU6MCxzb3V0aEFuZ2xlOjAsd2VzdE92ZXJJZGw6MCxlYXN0T3ZlcklkbDowfTtlYS5jb21wdXRlUmVjdGFuZ2xlRnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsaSxuKXtpZihwLmRlZmluZWQoInBvc2l0aW9ucyIsdCksbShuKXx8KG49bmV3IFh0KSx0Lmxlbmd0aDwzKXJldHVybiBuO24ud2VzdD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbi5lYXN0PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxuLnNvdXRoPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxuLm5vcnRoPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSx0YS5ub3J0aEFuZ2xlPTAsdGEuc291dGhBbmdsZT0wLHRhLndlc3RPdmVySWRsPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx0YS5lYXN0T3ZlcklkbD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IHM9dC5sZW5ndGgsbz1Gci5mcm9tQ2FydGVzaWFuKHRbMF0sTW10KTtmb3IobGV0IHI9MTtyPHM7cisrKXtsZXQgYT1Gci5mcm9tQ2FydGVzaWFuKHRbcl0sVTUpO0Q1KGEsbyxlLGksdGEsbiksbz1Gci5jbG9uZShhLG8pfXJldHVybiBENShGci5mcm9tQ2FydGVzaWFuKHRbMF0sVTUpLG8sZSxpLHRhLG4pLG4uZWFzdC1uLndlc3Q+dGEuZWFzdE92ZXJJZGwtdGEud2VzdE92ZXJJZGwmJihuLndlc3Q9dGEud2VzdE92ZXJJZGwsbi5lYXN0PXRhLmVhc3RPdmVySWRsLG4uZWFzdD5MLlBJJiYobi5lYXN0PW4uZWFzdC1MLlRXT19QSSksbi53ZXN0PkwuUEkmJihuLndlc3Q9bi53ZXN0LUwuVFdPX1BJKSksTC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKHRhLm5vcnRoQW5nbGUpLEwuVFdPX1BJLEwuRVBTSUxPTjEwKSYmKG4ubm9ydGg9TC5QSV9PVkVSX1RXTyxuLmVhc3Q9TC5QSSxuLndlc3Q9LUwuUEkpLEwuZXF1YWxzRXBzaWxvbihNYXRoLmFicyh0YS5zb3V0aEFuZ2xlKSxMLlRXT19QSSxMLkVQU0lMT04xMCkmJihuLnNvdXRoPS1MLlBJX09WRVJfVFdPLG4uZWFzdD1MLlBJLG4ud2VzdD0tTC5QSSksbn07UW10PW5ldyBGcjtNNT1uZXcgdXQ7ZWEuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fdmVydGV4Rm9ybWF0LGk9dC5fZWxsaXBzb2lkLG49dC5fZ3JhbnVsYXJpdHkscz10Ll9zdFJvdGF0aW9uLG89dC5fcG9seWdvbkhpZXJhcmNoeSxyPXQuX3BlclBvc2l0aW9uSGVpZ2h0LGE9dC5fY2xvc2VUb3AsaD10Ll9jbG9zZUJvdHRvbSxBPXQuX2FyY1R5cGUsZD10Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZj1tKGQpLEU9by5wb3NpdGlvbnM7aWYoRS5sZW5ndGg8MylyZXR1cm47bGV0IF89dC5yZWN0YW5nbGUsUj1paS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkobyxmLExtdChfLEUsaSksIXIsaSx3bXQoXyxpLEEscikpLEk9Ui5oaWVyYXJjaHksQz1SLnBvbHlnb25zLE49ZnVuY3Rpb24oRCl7cmV0dXJuIER9LFQ9Zj9paS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkoZCwhMCxOLCExLGkpLnBvbHlnb25zOnZvaWQgMDtpZihJLmxlbmd0aD09PTApcmV0dXJuO2xldCBiPUlbMF0ub3V0ZXJSaW5nLEY9eG10KGIsXyxpLHMpLEI9W10sVT10Ll9oZWlnaHQsUT10Ll9leHRydWRlZEhlaWdodCxNPXQuX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZXx8IUwuZXF1YWxzRXBzaWxvbihVLFEsMCxMLkVQU0lMT04yKSxrPXtwZXJQb3NpdGlvbkhlaWdodDpyLHZlcnRleEZvcm1hdDplLGdlb21ldHJ5OnZvaWQgMCxyb3RhdGlvbkF4aXM6a210KF8sYixpKS5wbGFuZS5ub3JtYWwscHJvamVjdFRvMmQ6eW10KF8sYixpKSxib3VuZGluZ1JlY3RhbmdsZTpGLGVsbGlwc29pZDppLHN0Um90YXRpb246cyx0ZXh0dXJlQ29vcmRpbmF0ZXM6dm9pZCAwLGJvdHRvbTohMSx0b3A6ITAsd2FsbDohMSxleHRydWRlOiExLGFyY1R5cGU6QX0seTtpZihNKWZvcihrLmV4dHJ1ZGU9ITAsay50b3A9YSxrLmJvdHRvbT1oLGsuc2hhZG93Vm9sdW1lPXQuX3NoYWRvd1ZvbHVtZSxrLm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUseT0wO3k8Qy5sZW5ndGg7eSsrKXtsZXQgRD1TbXQoaSxDW3ldLGY/VFt5XTp2b2lkIDAsbixJW3ldLHIsYSxoLGUsQSksdzthJiZoPyh3PUQudG9wQW5kQm90dG9tLGsuZ2VvbWV0cnk9aWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0RXh0cnVkZWQody5nZW9tZXRyeSxVLFEsaSxyKSk6YT8odz1ELnRvcEFuZEJvdHRvbSx3Lmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodCh3Lmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLFUsaSwhciksay5nZW9tZXRyeT13Lmdlb21ldHJ5KTpoJiYodz1ELnRvcEFuZEJvdHRvbSx3Lmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodCh3Lmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLFEsaSwhMCksay5nZW9tZXRyeT13Lmdlb21ldHJ5KSwoYXx8aCkmJihrLndhbGw9ITEsdy5nZW9tZXRyeT1rTyhrKSxCLnB1c2godykpO2xldCB4PUQud2FsbHM7ay53YWxsPSEwO2ZvcihsZXQgSD0wO0g8eC5sZW5ndGg7SCsrKXtsZXQgaj14W0hdO2suZ2VvbWV0cnk9aWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0RXh0cnVkZWQoai5nZW9tZXRyeSxVLFEsaSxyKSxqLmdlb21ldHJ5PWtPKGspLEIucHVzaChqKX19ZWxzZSBmb3IoeT0wO3k8Qy5sZW5ndGg7eSsrKXtsZXQgRD1uZXcgTG4oe2dlb21ldHJ5OmlpLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucyhpLENbeV0sZj9UW3ldOnZvaWQgMCxuLHIsZSxBKX0pO2lmKEQuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KEQuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsVSxpLCFyKSxrLmdlb21ldHJ5PUQuZ2VvbWV0cnksRC5nZW9tZXRyeT1rTyhrKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCB3PUQuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLHg9dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjEsSD1uZXcgVWludDhBcnJheSh3LzMpLmZpbGwoeCk7RC5nZW9tZXRyeS5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkh9KX1CLnB1c2goRCl9bGV0IGM9d2kuY29tYmluZUluc3RhbmNlcyhCKVswXTtjLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPW5ldyBGbG9hdDY0QXJyYXkoYy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyksYy5pbmRpY2VzPXRlLmNyZWF0ZVR5cGVkQXJyYXkoYy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxjLmluZGljZXMpO2xldCBnPWMuYXR0cmlidXRlcyxPPU50LmZyb21WZXJ0aWNlcyhnLnBvc2l0aW9uLnZhbHVlcyk7cmV0dXJuIGUucG9zaXRpb258fGRlbGV0ZSBnLnBvc2l0aW9uLG5ldyBzZSh7YXR0cmlidXRlczpnLGluZGljZXM6Yy5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6Yy5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOk8sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtlYS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuX2dyYW51bGFyaXR5LHM9dC5fZWxsaXBzb2lkLG89ZShuLHMpLHI9aShuLHMpO3JldHVybiBuZXcgZWEoe3BvbHlnb25IaWVyYXJjaHk6dC5fcG9seWdvbkhpZXJhcmNoeSxlbGxpcHNvaWQ6cyxzdFJvdGF0aW9uOnQuX3N0Um90YXRpb24sZ3JhbnVsYXJpdHk6bixwZXJQb3NpdGlvbkhlaWdodDohMSxleHRydWRlZEhlaWdodDpvLGhlaWdodDpyLHZlcnRleEZvcm1hdDpTdC5QT1NJVElPTl9PTkxZLHNoYWRvd1ZvbHVtZTohMCxhcmNUeXBlOnQuX2FyY1R5cGV9KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZWEucHJvdG90eXBlLHtyZWN0YW5nbGU6e2dldDpmdW5jdGlvbigpe2lmKCFtKHRoaXMuX3JlY3RhbmdsZSkpe2xldCB0PXRoaXMuX3BvbHlnb25IaWVyYXJjaHkucG9zaXRpb25zO3RoaXMuX3JlY3RhbmdsZT1lYS5jb21wdXRlUmVjdGFuZ2xlRnJvbVBvc2l0aW9ucyh0LHRoaXMuX2VsbGlwc29pZCx0aGlzLl9hcmNUeXBlKX1yZXR1cm4gdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPVBtdCh0aGlzKSksdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7TE89ZWF9KTt2YXIgeU89e307SGUoeU8se2RlZmF1bHQ6KCk9PmptdH0pO2Z1bmN0aW9uIEptdCh0LGUpe3JldHVybiBtKGUpJiYodD1MTy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksTE8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIGptdCx3Tz1TKCgpPT57bXQoKTtPZSgpO1E1KCk7am10PUptdH0pO2Z1bmN0aW9uIEhtdCh0LGUsaSxuLHMpe2xldCByPW9vLmZyb21Qb2ludHMoZSx0KS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKGUsazUpO3VpLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChyKT09PVVzLkNMT0NLV0lTRSYmKHIucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7bGV0IGgsQSxkPWUubGVuZ3RoLGY9MDtpZihuKWZvcihoPW5ldyBGbG9hdDY0QXJyYXkoZCoyKjMpLEE9MDtBPGQ7QSsrKXtsZXQgUj1lW0FdLEk9ZVsoQSsxKSVkXTtoW2YrK109Ui54LGhbZisrXT1SLnksaFtmKytdPVIueixoW2YrK109SS54LGhbZisrXT1JLnksaFtmKytdPUkuen1lbHNle2xldCBSPTA7aWYocz09PXRpLkdFT0RFU0lDKWZvcihBPTA7QTxkO0ErKylSKz1paS5zdWJkaXZpZGVMaW5lQ291bnQoZVtBXSxlWyhBKzEpJWRdLGkpO2Vsc2UgaWYocz09PXRpLlJIVU1CKWZvcihBPTA7QTxkO0ErKylSKz1paS5zdWJkaXZpZGVSaHVtYkxpbmVDb3VudCh0LGVbQV0sZVsoQSsxKSVkXSxpKTtmb3IoaD1uZXcgRmxvYXQ2NEFycmF5KFIqMyksQT0wO0E8ZDtBKyspe2xldCBJO3M9PT10aS5HRU9ERVNJQz9JPWlpLnN1YmRpdmlkZUxpbmUoZVtBXSxlWyhBKzEpJWRdLGksZGcpOnM9PT10aS5SSFVNQiYmKEk9aWkuc3ViZGl2aWRlUmh1bWJMaW5lKHQsZVtBXSxlWyhBKzEpJWRdLGksZGcpKTtsZXQgQz1JLmxlbmd0aDtmb3IobGV0IE49MDtOPEM7KytOKWhbZisrXT1JW05dfX1kPWgubGVuZ3RoLzM7bGV0IEU9ZCoyLF89dGUuY3JlYXRlVHlwZWRBcnJheShkLEUpO2ZvcihmPTAsQT0wO0E8ZC0xO0ErKylfW2YrK109QSxfW2YrK109QSsxO3JldHVybiBfW2YrK109ZC0xLF9bZisrXT0wLG5ldyBMbih7Z2VvbWV0cnk6bmV3IHNlKHthdHRyaWJ1dGVzOm5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSl9KSxpbmRpY2VzOl8scHJpbWl0aXZlVHlwZTpuZS5MSU5FU30pfSl9ZnVuY3Rpb24gdm10KHQsZSxpLG4scyl7bGV0IHI9b28uZnJvbVBvaW50cyhlLHQpLnByb2plY3RQb2ludHNPbnRvUGxhbmUoZSxrNSk7dWkuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKHIpPT09VXMuQ0xPQ0tXSVNFJiYoci5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTtsZXQgaCxBLGQ9ZS5sZW5ndGgsZj1uZXcgQXJyYXkoZCksRT0wO2lmKG4pZm9yKGg9bmV3IEZsb2F0NjRBcnJheShkKjIqMyoyKSxBPTA7QTxkOysrQSl7ZltBXT1FLzM7bGV0IEM9ZVtBXSxOPWVbKEErMSklZF07aFtFKytdPUMueCxoW0UrK109Qy55LGhbRSsrXT1DLnosaFtFKytdPU4ueCxoW0UrK109Ti55LGhbRSsrXT1OLnp9ZWxzZXtsZXQgQz0wO2lmKHM9PT10aS5HRU9ERVNJQylmb3IoQT0wO0E8ZDtBKyspQys9aWkuc3ViZGl2aWRlTGluZUNvdW50KGVbQV0sZVsoQSsxKSVkXSxpKTtlbHNlIGlmKHM9PT10aS5SSFVNQilmb3IoQT0wO0E8ZDtBKyspQys9aWkuc3ViZGl2aWRlUmh1bWJMaW5lQ291bnQodCxlW0FdLGVbKEErMSklZF0saSk7Zm9yKGg9bmV3IEZsb2F0NjRBcnJheShDKjMqMiksQT0wO0E8ZDsrK0Epe2ZbQV09RS8zO2xldCBOO3M9PT10aS5HRU9ERVNJQz9OPWlpLnN1YmRpdmlkZUxpbmUoZVtBXSxlWyhBKzEpJWRdLGksZGcpOnM9PT10aS5SSFVNQiYmKE49aWkuc3ViZGl2aWRlUmh1bWJMaW5lKHQsZVtBXSxlWyhBKzEpJWRdLGksZGcpKTtsZXQgVD1OLmxlbmd0aDtmb3IobGV0IGI9MDtiPFQ7KytiKWhbRSsrXT1OW2JdfX1kPWgubGVuZ3RoLygzKjIpO2xldCBfPWYubGVuZ3RoLFI9KGQqMitfKSoyLEk9dGUuY3JlYXRlVHlwZWRBcnJheShkK18sUik7Zm9yKEU9MCxBPTA7QTxkOysrQSlJW0UrK109QSxJW0UrK109KEErMSklZCxJW0UrK109QStkLElbRSsrXT0oQSsxKSVkK2Q7Zm9yKEE9MDtBPF87QSsrKXtsZXQgQz1mW0FdO0lbRSsrXT1DLElbRSsrXT1DK2R9cmV0dXJuIG5ldyBMbih7Z2VvbWV0cnk6bmV3IHNlKHthdHRyaWJ1dGVzOm5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSl9KSxpbmRpY2VzOkkscHJpbWl0aXZlVHlwZTpuZS5MSU5FU30pfSl9ZnVuY3Rpb24gWmQodCl7aWYocC50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSxwLnR5cGVPZi5vYmplY3QoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsdC5wb2x5Z29uSGllcmFyY2h5KSx0LnBlclBvc2l0aW9uSGVpZ2h0JiZtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgWSgiQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMucGVyUG9zaXRpb25IZWlnaHQgYW5kIG9wdGlvbnMuaGVpZ2h0Iik7aWYobSh0LmFyY1R5cGUpJiZ0LmFyY1R5cGUhPT10aS5HRU9ERVNJQyYmdC5hcmNUeXBlIT09dGkuUkhVTUIpdGhyb3cgbmV3IFkoIkludmFsaWQgYXJjVHlwZS4gVmFsaWQgb3B0aW9ucyBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksaT1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSxuPVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSkscz1aKHQucGVyUG9zaXRpb25IZWlnaHQsITEpLG89cyYmbSh0LmV4dHJ1ZGVkSGVpZ2h0KSxyPVoodC5hcmNUeXBlLHRpLkdFT0RFU0lDKSxhPVoodC5oZWlnaHQsMCksaD1aKHQuZXh0cnVkZWRIZWlnaHQsYSk7aWYoIW8pe2xldCBBPU1hdGgubWF4KGEsaCk7aD1NYXRoLm1pbihhLGgpLGE9QX10aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoaSksdGhpcy5fZ3JhbnVsYXJpdHk9bix0aGlzLl9oZWlnaHQ9YSx0aGlzLl9leHRydWRlZEhlaWdodD1oLHRoaXMuX2FyY1R5cGU9cix0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHQ9cyx0aGlzLl9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU9byx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeSIsdGhpcy5wYWNrZWRMZW5ndGg9aWkuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChlLGwpK290LnBhY2tlZExlbmd0aCs4fXZhciBrNSxkZyx6bXQsS210LHhPLEw1PVMoKCk9PntHbCgpO19pKCk7SHQoKTthZSgpO29pKCk7RnQoKTttdCgpO090KCk7T2UoKTtYbSgpO3lpKCk7amkoKTtFbigpO3VBKCk7Z28oKTtnQSgpO0RpKCk7X2UoKTtFUigpO1BhKCk7WGkoKTtmYygpO2s1PVtdLGRnPVtdO1pkLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxwLmRlZmluZWQoImFycmF5IixlKSxpPVooaSwwKSxpPWlpLnBhY2tQb2x5Z29uSGllcmFyY2h5KHQuX3BvbHlnb25IaWVyYXJjaHksZSxpLGwpLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9oZWlnaHQsZVtpKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbaSsrXT10Ll9ncmFudWxhcml0eSxlW2krK109dC5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPzE6MCxlW2krK109dC5fcGVyUG9zaXRpb25IZWlnaHQ/MTowLGVbaSsrXT10Ll9hcmNUeXBlLGVbaSsrXT1aKHQuX29mZnNldEF0dHJpYnV0ZSwtMSksZVtpXT10LnBhY2tlZExlbmd0aCxlfTt6bXQ9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLEttdD17cG9seWdvbkhpZXJhcmNoeTp7fX07WmQudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtwLmRlZmluZWQoImFycmF5Iix0KSxlPVooZSwwKTtsZXQgbj1paS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxsKTtlPW4uc3RhcnRpbmdJbmRleCxkZWxldGUgbi5zdGFydGluZ0luZGV4O2xldCBzPW90LnVucGFjayh0LGUsem10KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IG89dFtlKytdLHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdPT09MSxBPXRbZSsrXT09PTEsZD10W2UrK10sZj10W2UrK10sRT10W2VdO3JldHVybiBtKGkpfHwoaT1uZXcgWmQoS210KSksaS5fcG9seWdvbkhpZXJhcmNoeT1uLGkuX2VsbGlwc29pZD1vdC5jbG9uZShzLGkuX2VsbGlwc29pZCksaS5faGVpZ2h0PW8saS5fZXh0cnVkZWRIZWlnaHQ9cixpLl9ncmFudWxhcml0eT1hLGkuX3BlclBvc2l0aW9uSGVpZ2h0PUEsaS5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPWgsaS5fYXJjVHlwZT1kLGkuX29mZnNldEF0dHJpYnV0ZT1mPT09LTE/dm9pZCAwOmYsaS5wYWNrZWRMZW5ndGg9RSxpfTtaZC5mcm9tUG9zaXRpb25zPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKSxwLmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIix0LnBvc2l0aW9ucyk7bGV0IGU9e3BvbHlnb25IaWVyYXJjaHk6e3Bvc2l0aW9uczp0LnBvc2l0aW9uc30saGVpZ2h0OnQuaGVpZ2h0LGV4dHJ1ZGVkSGVpZ2h0OnQuZXh0cnVkZWRIZWlnaHQsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHkscGVyUG9zaXRpb25IZWlnaHQ6dC5wZXJQb3NpdGlvbkhlaWdodCxhcmNUeXBlOnQuYXJjVHlwZSxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGV9O3JldHVybiBuZXcgWmQoZSl9O1pkLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2VsbGlwc29pZCxpPXQuX2dyYW51bGFyaXR5LG49dC5fcG9seWdvbkhpZXJhcmNoeSxzPXQuX3BlclBvc2l0aW9uSGVpZ2h0LG89dC5fYXJjVHlwZSxyPWlpLnBvbHlnb25PdXRsaW5lc0Zyb21IaWVyYXJjaHkobiwhcyxlKTtpZihyLmxlbmd0aD09PTApcmV0dXJuO2xldCBhLGg9W10sQT1MLmNob3JkTGVuZ3RoKGksZS5tYXhpbXVtUmFkaXVzKSxkPXQuX2hlaWdodCxmPXQuX2V4dHJ1ZGVkSGVpZ2h0LEU9dC5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlfHwhTC5lcXVhbHNFcHNpbG9uKGQsZiwwLEwuRVBTSUxPTjIpLF8sUjtpZihFKWZvcihSPTA7UjxyLmxlbmd0aDtSKyspe2lmKGE9dm10KGUscltSXSxBLHMsbyksYS5nZW9tZXRyeT1paS5zY2FsZVRvR2VvZGV0aWNIZWlnaHRFeHRydWRlZChhLmdlb21ldHJ5LGQsZixlLHMpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IE49YS5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxUPW5ldyBVaW50OEFycmF5KE4pO3QuX29mZnNldEF0dHJpYnV0ZT09PVBlLlRPUD9UPVQuZmlsbCgxLDAsTi8yKTooXz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxUPVQuZmlsbChfKSksYS5nZW9tZXRyeS5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOlR9KX1oLnB1c2goYSl9ZWxzZSBmb3IoUj0wO1I8ci5sZW5ndGg7UisrKXtpZihhPUhtdChlLHJbUl0sQSxzLG8pLGEuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXM9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KGEuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsZCxlLCFzKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBOPWEuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoO189dC5fb2Zmc2V0QXR0cmlidXRlPT09UGUuTk9ORT8wOjE7bGV0IFQ9bmV3IFVpbnQ4QXJyYXkoTi8zKS5maWxsKF8pO2EuZ2VvbWV0cnkuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpUfSl9aC5wdXNoKGEpfWxldCBJPXdpLmNvbWJpbmVJbnN0YW5jZXMoaClbMF0sQz1OdC5mcm9tVmVydGljZXMoSS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyk7cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczpJLmF0dHJpYnV0ZXMsaW5kaWNlczpJLmluZGljZXMscHJpbWl0aXZlVHlwZTpJLnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6QyxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O3hPPVpkfSk7dmFyIFBPPXt9O0hlKFBPLHtkZWZhdWx0OigpPT5xbXR9KTtmdW5jdGlvbiBYbXQodCxlKXtyZXR1cm4gbShlKSYmKHQ9eE8udW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLHhPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBxbXQsSk89UygoKT0+e210KCk7T2UoKTtMNSgpO3FtdD1YbXR9KTtmdW5jdGlvbiAkbXQodCxlLGksbixzKXtsZXQgbz1KNTtvLmxlbmd0aD1zO2xldCByLGE9aS5yZWQsaD1pLmdyZWVuLEE9aS5ibHVlLGQ9aS5hbHBoYSxmPW4ucmVkLEU9bi5ncmVlbixfPW4uYmx1ZSxSPW4uYWxwaGE7aWYoWnQuZXF1YWxzKGksbikpe2ZvcihyPTA7cjxzO3IrKylvW3JdPVp0LmNsb25lKGkpO3JldHVybiBvfWxldCBJPShmLWEpL3MsQz0oRS1oKS9zLE49KF8tQSkvcyxUPShSLWQpL3M7Zm9yKHI9MDtyPHM7cisrKW9bcl09bmV3IFp0KGErcipJLGgrcipDLEErcipOLGQrcipUKTtyZXR1cm4gb31mdW5jdGlvbiBiUih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnMsaT10LmNvbG9ycyxuPVoodC53aWR0aCwxKSxzPVoodC5jb2xvcnNQZXJWZXJ0ZXgsITEpO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBZKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IFkoIndpZHRoIG11c3QgYmUgYSBudW1iZXIiKTtpZihtKGkpJiYocyYmaS5sZW5ndGg8ZS5sZW5ndGh8fCFzJiZpLmxlbmd0aDxlLmxlbmd0aC0xKSl0aHJvdyBuZXcgWSgiY29sb3JzIGhhcyBhbiBpbnZhbGlkIGxlbmd0aC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9jb2xvcnM9aSx0aGlzLl93aWR0aD1uLHRoaXMuX2NvbG9yc1BlclZlcnRleD1zLHRoaXMuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShaKHQudmVydGV4Rm9ybWF0LFN0LkRFRkFVTFQpKSx0aGlzLl9hcmNUeXBlPVoodC5hcmNUeXBlLHRpLkdFT0RFU0lDKSx0aGlzLl9ncmFudWxhcml0eT1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShaKHQuZWxsaXBzb2lkLG90LldHUzg0KSksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWxpbmVHZW9tZXRyeSI7bGV0IG89MStlLmxlbmd0aCpsLnBhY2tlZExlbmd0aDtvKz1tKGkpPzEraS5sZW5ndGgqWnQucGFja2VkTGVuZ3RoOjEsdGhpcy5wYWNrZWRMZW5ndGg9bytvdC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoKzR9dmFyIEo1LGo1LEg1LElkLHk1LHc1LHg1LFA1LGpPLHY1PVMoKCk9PntHbCgpO1NhKCk7X2koKTtIdCgpO1FuKCk7b2koKTtGdCgpO210KCk7T3QoKTtPZSgpO3lpKCk7amkoKTtFbigpO2RJKCk7RGkoKTtfZSgpO1NmKCk7WGkoKTtMcygpO0o1PVtdO2JSLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2k9WihpLDApO2xldCBuLHM9dC5fcG9zaXRpb25zLG89cy5sZW5ndGg7Zm9yKGVbaSsrXT1vLG49MDtuPG87KytuLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhzW25dLGUsaSk7bGV0IHI9dC5fY29sb3JzO2ZvcihvPW0ocik/ci5sZW5ndGg6MCxlW2krK109byxuPTA7bjxvOysrbixpKz1adC5wYWNrZWRMZW5ndGgpWnQucGFjayhyW25dLGUsaSk7cmV0dXJuIG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll93aWR0aCxlW2krK109dC5fY29sb3JzUGVyVmVydGV4PzE6MCxlW2krK109dC5fYXJjVHlwZSxlW2ldPXQuX2dyYW51bGFyaXR5LGV9O2o1PW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxINT1uZXcgU3QsSWQ9e3Bvc2l0aW9uczp2b2lkIDAsY29sb3JzOnZvaWQgMCxlbGxpcHNvaWQ6ajUsdmVydGV4Rm9ybWF0Okg1LHdpZHRoOnZvaWQgMCxjb2xvcnNQZXJWZXJ0ZXg6dm9pZCAwLGFyY1R5cGU6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMH07YlIudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbixzPXRbZSsrXSxvPW5ldyBBcnJheShzKTtmb3Iobj0wO248czsrK24sZSs9bC5wYWNrZWRMZW5ndGgpb1tuXT1sLnVucGFjayh0LGUpO3M9dFtlKytdO2xldCByPXM+MD9uZXcgQXJyYXkocyk6dm9pZCAwO2ZvcihuPTA7bjxzOysrbixlKz1adC5wYWNrZWRMZW5ndGgpcltuXT1adC51bnBhY2sodCxlKTtsZXQgYT1vdC51bnBhY2sodCxlLGo1KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IGg9U3QudW5wYWNrKHQsZSxINSk7ZSs9U3QucGFja2VkTGVuZ3RoO2xldCBBPXRbZSsrXSxkPXRbZSsrXT09PTEsZj10W2UrK10sRT10W2VdO3JldHVybiBtKGkpPyhpLl9wb3NpdGlvbnM9byxpLl9jb2xvcnM9cixpLl9lbGxpcHNvaWQ9b3QuY2xvbmUoYSxpLl9lbGxpcHNvaWQpLGkuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShoLGkuX3ZlcnRleEZvcm1hdCksaS5fd2lkdGg9QSxpLl9jb2xvcnNQZXJWZXJ0ZXg9ZCxpLl9hcmNUeXBlPWYsaS5fZ3JhbnVsYXJpdHk9RSxpKTooSWQucG9zaXRpb25zPW8sSWQuY29sb3JzPXIsSWQud2lkdGg9QSxJZC5jb2xvcnNQZXJWZXJ0ZXg9ZCxJZC5hcmNUeXBlPWYsSWQuZ3JhbnVsYXJpdHk9RSxuZXcgYlIoSWQpKX07eTU9bmV3IGwsdzU9bmV3IGwseDU9bmV3IGwsUDU9bmV3IGw7YlIuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fd2lkdGgsaT10Ll92ZXJ0ZXhGb3JtYXQsbj10Ll9jb2xvcnMscz10Ll9jb2xvcnNQZXJWZXJ0ZXgsbz10Ll9hcmNUeXBlLHI9dC5fZ3JhbnVsYXJpdHksYT10Ll9lbGxpcHNvaWQsaCxBLGQsZj1bXSxFPVhuKHQuX3Bvc2l0aW9ucyxsLmVxdWFsc0Vwc2lsb24sITEsZik7aWYobShuKSYmZi5sZW5ndGg+MCl7bGV0IHc9MCx4PWZbMF07bj1uLmZpbHRlcihmdW5jdGlvbihILGope2xldCBYPSExO3JldHVybiBzP1g9aj09PXh8fGo9PT0wJiZ4PT09MTpYPWorMT09PXgsWD8odysrLHg9Zlt3XSwhMSk6ITB9KX1sZXQgXz1FLmxlbmd0aDtpZihfPDJ8fGU8PTApcmV0dXJuO2lmKG89PT10aS5HRU9ERVNJQ3x8bz09PXRpLlJIVU1CKXtsZXQgdyx4O289PT10aS5HRU9ERVNJQz8odz1MLmNob3JkTGVuZ3RoKHIsYS5tYXhpbXVtUmFkaXVzKSx4PVNuLm51bWJlck9mUG9pbnRzKToodz1yLHg9U24ubnVtYmVyT2ZQb2ludHNSaHVtYkxpbmUpO2xldCBIPVNuLmV4dHJhY3RIZWlnaHRzKEUsYSk7aWYobShuKSl7bGV0IGo9MTtmb3IoaD0wO2g8Xy0xOysraClqKz14KEVbaF0sRVtoKzFdLHcpO2xldCBYPW5ldyBBcnJheShqKSx0dD0wO2ZvcihoPTA7aDxfLTE7KytoKXtsZXQgRz1FW2hdLEl0PUVbaCsxXSxndD1uW2hdLFl0PXgoRyxJdCx3KTtpZihzJiZoPGope2xldCBVdD1uW2grMV0sQ3Q9JG10KEcsSXQsZ3QsVXQsWXQpLHp0PUN0Lmxlbmd0aDtmb3IoQT0wO0E8enQ7KytBKVhbdHQrK109Q3RbQV19ZWxzZSBmb3IoQT0wO0E8WXQ7KytBKVhbdHQrK109WnQuY2xvbmUoZ3QpfVhbdHRdPVp0LmNsb25lKG5bbi5sZW5ndGgtMV0pLG49WCxKNS5sZW5ndGg9MH1vPT09dGkuR0VPREVTSUM/RT1Tbi5nZW5lcmF0ZUNhcnRlc2lhbkFyYyh7cG9zaXRpb25zOkUsbWluRGlzdGFuY2U6dyxlbGxpcHNvaWQ6YSxoZWlnaHQ6SH0pOkU9U24uZ2VuZXJhdGVDYXJ0ZXNpYW5SaHVtYkFyYyh7cG9zaXRpb25zOkUsZ3JhbnVsYXJpdHk6dyxlbGxpcHNvaWQ6YSxoZWlnaHQ6SH0pfV89RS5sZW5ndGg7bGV0IFI9Xyo0LTQsST1uZXcgRmxvYXQ2NEFycmF5KFIqMyksQz1uZXcgRmxvYXQ2NEFycmF5KFIqMyksTj1uZXcgRmxvYXQ2NEFycmF5KFIqMyksVD1uZXcgRmxvYXQzMkFycmF5KFIqMiksYj1pLnN0P25ldyBGbG9hdDMyQXJyYXkoUioyKTp2b2lkIDAsRj1tKG4pP25ldyBVaW50OEFycmF5KFIqNCk6dm9pZCAwLEI9MCxVPTAsUT0wLE09MCxrO2ZvcihBPTA7QTxfOysrQSl7QT09PTA/KGs9eTUsbC5zdWJ0cmFjdChFWzBdLEVbMV0sayksbC5hZGQoRVswXSxrLGspKTprPUVbQS0xXSxsLmNsb25lKGsseDUpLGwuY2xvbmUoRVtBXSx3NSksQT09PV8tMT8oaz15NSxsLnN1YnRyYWN0KEVbXy0xXSxFW18tMl0sayksbC5hZGQoRVtfLTFdLGssaykpOms9RVtBKzFdLGwuY2xvbmUoayxQNSk7bGV0IHcseDttKEYpJiYoQSE9PTAmJiFzP3c9bltBLTFdOnc9bltBXSxBIT09Xy0xJiYoeD1uW0FdKSk7bGV0IEg9QT09PTA/MjowLGo9QT09PV8tMT8yOjQ7Zm9yKGQ9SDtkPGo7KytkKXtsLnBhY2sodzUsSSxCKSxsLnBhY2soeDUsQyxCKSxsLnBhY2soUDUsTixCKSxCKz0zO2xldCBYPWQtMjwwPy0xOjE7aWYoVFtVKytdPTIqKGQlMiktMSxUW1UrK109WCplLGkuc3QmJihiW1ErK109QS8oXy0xKSxiW1ErK109TWF0aC5tYXgoVFtVLTJdLDApKSxtKEYpKXtsZXQgdHQ9ZDwyP3c6eDtGW00rK109WnQuZmxvYXRUb0J5dGUodHQucmVkKSxGW00rK109WnQuZmxvYXRUb0J5dGUodHQuZ3JlZW4pLEZbTSsrXT1adC5mbG9hdFRvQnl0ZSh0dC5ibHVlKSxGW00rK109WnQuZmxvYXRUb0J5dGUodHQuYWxwaGEpfX19bGV0IHk9bmV3IHdlO3kucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpJfSkseS5wcmV2UG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpDfSkseS5uZXh0UG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpOfSkseS5leHBhbmRBbmRXaWR0aD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6VH0pLGkuc3QmJih5LnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpifSkpLG0oRikmJih5LmNvbG9yPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsdmFsdWVzOkYsbm9ybWFsaXplOiEwfSkpO2xldCBjPXRlLmNyZWF0ZVR5cGVkQXJyYXkoUixfKjYtNiksZz0wLE89MCxEPV8tMTtmb3IoQT0wO0E8RDsrK0EpY1tPKytdPWcsY1tPKytdPWcrMixjW08rK109ZysxLGNbTysrXT1nKzEsY1tPKytdPWcrMixjW08rK109ZyszLGcrPTQ7cmV0dXJuIG5ldyBzZSh7YXR0cmlidXRlczp5LGluZGljZXM6YyxwcmltaXRpdmVUeXBlOm5lLlRSSUFOR0xFUyxib3VuZGluZ1NwaGVyZTpOdC5mcm9tUG9pbnRzKEUpLGdlb21ldHJ5VHlwZTpBaC5QT0xZTElORVN9KX07ak89YlJ9KTt2YXIgSE89e307SGUoSE8se2RlZmF1bHQ6KCk9PmVmdH0pO2Z1bmN0aW9uIHRmdCh0LGUpe3JldHVybiBtKGUpJiYodD1qTy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksak8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIGVmdCx2Tz1TKCgpPT57bXQoKTtPZSgpO3Y1KCk7ZWZ0PXRmdH0pO2Z1bmN0aW9uIGlmdCh0LGUsaSxuKXtsZXQgcz1uZXcgd2U7bi5wb3NpdGlvbiYmKHMucG9zaXRpb249bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp0fSkpO2xldCBvPWUubGVuZ3RoLHI9dC5sZW5ndGgvMyxhPShyLW8qMikvKG8qMiksaD11aS50cmlhbmd1bGF0ZShlKSxBPShhLTEpKm8qNitoLmxlbmd0aCoyLGQ9dGUuY3JlYXRlVHlwZWRBcnJheShyLEEpLGYsRSxfLFIsSSxDLE49byoyLFQ9MDtmb3IoZj0wO2Y8YS0xO2YrKyl7Zm9yKEU9MDtFPG8tMTtFKyspXz1FKjIrZipvKjIsQz1fK04sUj1fKzEsST1SK04sZFtUKytdPVIsZFtUKytdPV8sZFtUKytdPUksZFtUKytdPUksZFtUKytdPV8sZFtUKytdPUM7Xz1vKjItMitmKm8qMixSPV8rMSxJPVIrTixDPV8rTixkW1QrK109UixkW1QrK109XyxkW1QrK109SSxkW1QrK109SSxkW1QrK109XyxkW1QrK109Q31pZihuLnN0fHxuLnRhbmdlbnR8fG4uYml0YW5nZW50KXtsZXQgQj1uZXcgRmxvYXQzMkFycmF5KHIqMiksVT0xLyhhLTEpLFE9MS9pLmhlaWdodCxNPWkuaGVpZ2h0LzIsayx5LGM9MDtmb3IoZj0wO2Y8YTtmKyspe2ZvcihrPWYqVSx5PVEqKGVbMF0ueStNKSxCW2MrK109ayxCW2MrK109eSxFPTE7RTxvO0UrKyl5PVEqKGVbRV0ueStNKSxCW2MrK109ayxCW2MrK109eSxCW2MrK109ayxCW2MrK109eTt5PVEqKGVbMF0ueStNKSxCW2MrK109ayxCW2MrK109eX1mb3IoRT0wO0U8bztFKyspaz0wLHk9USooZVtFXS55K00pLEJbYysrXT1rLEJbYysrXT15O2ZvcihFPTA7RTxvO0UrKylrPShhLTEpKlUseT1RKihlW0VdLnkrTSksQltjKytdPWssQltjKytdPXk7cy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6bmV3IEZsb2F0MzJBcnJheShCKX0pfWxldCBiPXItbyoyO2ZvcihmPTA7ZjxoLmxlbmd0aDtmKz0zKXtsZXQgQj1oW2ZdK2IsVT1oW2YrMV0rYixRPWhbZisyXStiO2RbVCsrXT1CLGRbVCsrXT1VLGRbVCsrXT1RLGRbVCsrXT1RK28sZFtUKytdPVUrbyxkW1QrK109QitvfWxldCBGPW5ldyBzZSh7YXR0cmlidXRlczpzLGluZGljZXM6ZCxib3VuZGluZ1NwaGVyZTpOdC5mcm9tVmVydGljZXModCkscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVN9KTtpZihuLm5vcm1hbCYmKEY9d2kuY29tcHV0ZU5vcm1hbChGKSksbi50YW5nZW50fHxuLmJpdGFuZ2VudCl7dHJ5e0Y9d2kuY29tcHV0ZVRhbmdlbnRBbmRCaXRhbmdlbnQoRil9Y2F0Y2h7ekMoInBvbHlsaW5lLXZvbHVtZS10YW5nZW50LWJpdGFuZ2VudCIsIlVuYWJsZSB0byBjb21wdXRlIHRhbmdlbnRzIGFuZCBiaXRhbmdlbnRzIGZvciBwb2x5bGluZSB2b2x1bWUgZ2VvbWV0cnkiKX1uLnRhbmdlbnR8fChGLmF0dHJpYnV0ZXMudGFuZ2VudD12b2lkIDApLG4uYml0YW5nZW50fHwoRi5hdHRyaWJ1dGVzLmJpdGFuZ2VudD12b2lkIDApLG4uc3R8fChGLmF0dHJpYnV0ZXMuc3Q9dm9pZCAwKX1yZXR1cm4gRn1mdW5jdGlvbiBWUih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb2x5bGluZVBvc2l0aW9ucyxpPXQuc2hhcGVQb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9seWxpbmVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMuc2hhcGVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fc2hhcGU9aSx0aGlzLl9lbGxpcHNvaWQ9b3QuY2xvbmUoWih0LmVsbGlwc29pZCxvdC5XR1M4NCkpLHRoaXMuX2Nvcm5lclR5cGU9Wih0LmNvcm5lclR5cGUsQ24uUk9VTkRFRCksdGhpcy5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKFoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCkpLHRoaXMuX2dyYW51bGFyaXR5PVoodC5ncmFudWxhcml0eSxMLlJBRElBTlNfUEVSX0RFR1JFRSksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWxpbmVWb2x1bWVHZW9tZXRyeSI7bGV0IG49MStlLmxlbmd0aCpsLnBhY2tlZExlbmd0aDtuKz0xK2kubGVuZ3RoKm50LnBhY2tlZExlbmd0aCx0aGlzLnBhY2tlZExlbmd0aD1uK290LnBhY2tlZExlbmd0aCtTdC5wYWNrZWRMZW5ndGgrMn12YXIgejUsSzUsWVIsbmZ0LHpPLFg1PVMoKCk9PntTYSgpO0VyKCk7X2koKTtYZSgpO0h0KCk7b2koKTtmZCgpO0Z0KCk7bXQoKTtPdCgpO09lKCk7eWkoKTtqaSgpO0VuKCk7Z0EoKTtEaSgpO19lKCk7TFMoKTtQYSgpOyRDKCk7WGkoKTtMcygpO2ZjKCk7VlIucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7aT1aKGksMCk7bGV0IG4scz10Ll9wb3NpdGlvbnMsbz1zLmxlbmd0aDtmb3IoZVtpKytdPW8sbj0wO248bzsrK24saSs9bC5wYWNrZWRMZW5ndGgpbC5wYWNrKHNbbl0sZSxpKTtsZXQgcj10Ll9zaGFwZTtmb3Iobz1yLmxlbmd0aCxlW2krK109byxuPTA7bjxvOysrbixpKz1udC5wYWNrZWRMZW5ndGgpbnQucGFjayhyW25dLGUsaSk7cmV0dXJuIG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9jb3JuZXJUeXBlLGVbaV09dC5fZ3JhbnVsYXJpdHksZX07ejU9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLEs1PW5ldyBTdCxZUj17cG9seWxpbmVQb3NpdGlvbnM6dm9pZCAwLHNoYXBlUG9zaXRpb25zOnZvaWQgMCxlbGxpcHNvaWQ6ejUsdmVydGV4Rm9ybWF0Oks1LGNvcm5lclR5cGU6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMH07VlIudW5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPVooZSwwKTtsZXQgbixzPXRbZSsrXSxvPW5ldyBBcnJheShzKTtmb3Iobj0wO248czsrK24sZSs9bC5wYWNrZWRMZW5ndGgpb1tuXT1sLnVucGFjayh0LGUpO3M9dFtlKytdO2xldCByPW5ldyBBcnJheShzKTtmb3Iobj0wO248czsrK24sZSs9bnQucGFja2VkTGVuZ3RoKXJbbl09bnQudW5wYWNrKHQsZSk7bGV0IGE9b3QudW5wYWNrKHQsZSx6NSk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBoPVN0LnVucGFjayh0LGUsSzUpO2UrPVN0LnBhY2tlZExlbmd0aDtsZXQgQT10W2UrK10sZD10W2VdO3JldHVybiBtKGkpPyhpLl9wb3NpdGlvbnM9byxpLl9zaGFwZT1yLGkuX2VsbGlwc29pZD1vdC5jbG9uZShhLGkuX2VsbGlwc29pZCksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKGgsaS5fdmVydGV4Rm9ybWF0KSxpLl9jb3JuZXJUeXBlPUEsaS5fZ3JhbnVsYXJpdHk9ZCxpKTooWVIucG9seWxpbmVQb3NpdGlvbnM9byxZUi5zaGFwZVBvc2l0aW9ucz1yLFlSLmNvcm5lclR5cGU9QSxZUi5ncmFudWxhcml0eT1kLG5ldyBWUihZUikpfTtuZnQ9bmV3IG1pO1ZSLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxpPVhuKGUsbC5lcXVhbHNFcHNpbG9uKSxuPXQuX3NoYXBlO2lmKG49TGMucmVtb3ZlRHVwbGljYXRlc0Zyb21TaGFwZShuKSxpLmxlbmd0aDwyfHxuLmxlbmd0aDwzKXJldHVybjt1aS5jb21wdXRlV2luZGluZ09yZGVyMkQobik9PT1Vcy5DTE9DS1dJU0UmJm4ucmV2ZXJzZSgpO2xldCBzPW1pLmZyb21Qb2ludHMobixuZnQpLG89TGMuY29tcHV0ZVBvc2l0aW9ucyhpLG4scyx0LCEwKTtyZXR1cm4gaWZ0KG8sbixzLHQuX3ZlcnRleEZvcm1hdCl9O3pPPVZSfSk7dmFyIEtPPXt9O0hlKEtPLHtkZWZhdWx0OigpPT5vZnR9KTtmdW5jdGlvbiBzZnQodCxlKXtyZXR1cm4gbShlKSYmKHQ9ek8udW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLHpPLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBvZnQsWE89UygoKT0+e210KCk7T2UoKTtYNSgpO29mdD1zZnR9KTtmdW5jdGlvbiByZnQodCxlKXtsZXQgaT1uZXcgd2U7aS5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnR9KTtsZXQgbj1lLmxlbmd0aCxzPWkucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLHI9dC5sZW5ndGgvMy9uLGE9dGUuY3JlYXRlVHlwZWRBcnJheShzLDIqbioocisxKSksaCxBLGQ9MDtoPTA7bGV0IGY9aCpuO2ZvcihBPTA7QTxuLTE7QSsrKWFbZCsrXT1BK2YsYVtkKytdPUErZisxO2ZvcihhW2QrK109bi0xK2YsYVtkKytdPWYsaD1yLTEsZj1oKm4sQT0wO0E8bi0xO0ErKylhW2QrK109QStmLGFbZCsrXT1BK2YrMTtmb3IoYVtkKytdPW4tMStmLGFbZCsrXT1mLGg9MDtoPHItMTtoKyspe2xldCBfPW4qaCxSPV8rbjtmb3IoQT0wO0E8bjtBKyspYVtkKytdPUErXyxhW2QrK109QStSfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6aSxpbmRpY2VzOnRlLmNyZWF0ZVR5cGVkQXJyYXkocyxhKSxib3VuZGluZ1NwaGVyZTpOdC5mcm9tVmVydGljZXModCkscHJpbWl0aXZlVHlwZTpuZS5MSU5FU30pfWZ1bmN0aW9uIE9SKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvbHlsaW5lUG9zaXRpb25zLGk9dC5zaGFwZVBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb2x5bGluZVBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5zaGFwZVBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9zaGFwZT1pLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShaKHQuZWxsaXBzb2lkLG90LldHUzg0KSksdGhpcy5fY29ybmVyVHlwZT1aKHQuY29ybmVyVHlwZSxDbi5ST1VOREVEKSx0aGlzLl9ncmFudWxhcml0eT1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBvbHlsaW5lVm9sdW1lT3V0bGluZUdlb21ldHJ5IjtsZXQgbj0xK2UubGVuZ3RoKmwucGFja2VkTGVuZ3RoO24rPTEraS5sZW5ndGgqbnQucGFja2VkTGVuZ3RoLHRoaXMucGFja2VkTGVuZ3RoPW4rb3QucGFja2VkTGVuZ3RoKzJ9dmFyIHE1LFNSLGFmdCxxTywkNT1TKCgpPT57U2EoKTtFcigpO19pKCk7WGUoKTtIdCgpO29pKCk7ZmQoKTtGdCgpO210KCk7T3QoKTtPZSgpO3lpKCk7amkoKTtFbigpO0RpKCk7X2UoKTtQYSgpOyRDKCk7WGkoKTtmYygpO09SLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2k9WihpLDApO2xldCBuLHM9dC5fcG9zaXRpb25zLG89cy5sZW5ndGg7Zm9yKGVbaSsrXT1vLG49MDtuPG87KytuLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhzW25dLGUsaSk7bGV0IHI9dC5fc2hhcGU7Zm9yKG89ci5sZW5ndGgsZVtpKytdPW8sbj0wO248bzsrK24saSs9bnQucGFja2VkTGVuZ3RoKW50LnBhY2socltuXSxlLGkpO3JldHVybiBvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxlW2krK109dC5fY29ybmVyVHlwZSxlW2ldPXQuX2dyYW51bGFyaXR5LGV9O3E1PW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxTUj17cG9seWxpbmVQb3NpdGlvbnM6dm9pZCAwLHNoYXBlUG9zaXRpb25zOnZvaWQgMCxlbGxpcHNvaWQ6cTUsaGVpZ2h0OnZvaWQgMCxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O09SLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1aKGUsMCk7bGV0IG4scz10W2UrK10sbz1uZXcgQXJyYXkocyk7Zm9yKG49MDtuPHM7KytuLGUrPWwucGFja2VkTGVuZ3RoKW9bbl09bC51bnBhY2sodCxlKTtzPXRbZSsrXTtsZXQgcj1uZXcgQXJyYXkocyk7Zm9yKG49MDtuPHM7KytuLGUrPW50LnBhY2tlZExlbmd0aClyW25dPW50LnVucGFjayh0LGUpO2xldCBhPW90LnVucGFjayh0LGUscTUpO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgaD10W2UrK10sQT10W2VdO3JldHVybiBtKGkpPyhpLl9wb3NpdGlvbnM9byxpLl9zaGFwZT1yLGkuX2VsbGlwc29pZD1vdC5jbG9uZShhLGkuX2VsbGlwc29pZCksaS5fY29ybmVyVHlwZT1oLGkuX2dyYW51bGFyaXR5PUEsaSk6KFNSLnBvbHlsaW5lUG9zaXRpb25zPW8sU1Iuc2hhcGVQb3NpdGlvbnM9cixTUi5jb3JuZXJUeXBlPWgsU1IuZ3JhbnVsYXJpdHk9QSxuZXcgT1IoU1IpKX07YWZ0PW5ldyBtaTtPUi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsaT1YbihlLGwuZXF1YWxzRXBzaWxvbiksbj10Ll9zaGFwZTtpZihuPUxjLnJlbW92ZUR1cGxpY2F0ZXNGcm9tU2hhcGUobiksaS5sZW5ndGg8Mnx8bi5sZW5ndGg8MylyZXR1cm47dWkuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKG4pPT09VXMuQ0xPQ0tXSVNFJiZuLnJldmVyc2UoKTtsZXQgcz1taS5mcm9tUG9pbnRzKG4sYWZ0KSxvPUxjLmNvbXB1dGVQb3NpdGlvbnMoaSxuLHMsdCwhMSk7cmV0dXJuIHJmdChvLG4pfTtxTz1PUn0pO3ZhciAkTz17fTtIZSgkTyx7ZGVmYXVsdDooKT0+aGZ0fSk7ZnVuY3Rpb24gQWZ0KHQsZSl7cmV0dXJuIG0oZSkmJih0PXFPLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSxxTy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgaGZ0LHRCPVMoKCk9PnttdCgpO09lKCk7JDUoKTtoZnQ9QWZ0fSk7ZnVuY3Rpb24gaTYodCxlLGksbixzLG8scil7bGV0IGE9TWF0aC5jb3MoZSksaD1uKmEsQT1pKmEsZD1NYXRoLnNpbihlKSxmPW4qZCxFPWkqZDtpYT1lQi5wcm9qZWN0KHQsaWEpLGlhPWwuc3VidHJhY3QoaWEsbWcsaWEpO2xldCBfPUhuLmZyb21Sb3RhdGlvbihlLGxmdCk7aWE9SG4ubXVsdGlwbHlCeVZlY3RvcihfLGlhLGlhKSxpYT1sLmFkZChpYSxtZyxpYSksdD1lQi51bnByb2plY3QoaWEsdCksby09MSxyLT0xO2xldCBSPXQubGF0aXR1ZGUsST1SK28qRSxDPVItaCpyLE49Ui1oKnIrbypFLFQ9TWF0aC5tYXgoUixJLEMsTiksYj1NYXRoLm1pbihSLEksQyxOKSxGPXQubG9uZ2l0dWRlLEI9RitvKkEsVT1GK3IqZixRPUYrcipmK28qQSxNPU1hdGgubWF4KEYsQixVLFEpLGs9TWF0aC5taW4oRixCLFUsUSk7cmV0dXJue25vcnRoOlQsc291dGg6YixlYXN0Ok0sd2VzdDprLGdyYW5ZQ29zOmgsZ3JhbllTaW46ZixncmFuWENvczpBLGdyYW5YU2luOkUsbndDb3JuZXI6dH19dmFyIHQ2LGU2LGNmdCxpQixsZnQsaWEsZGZ0LG1nLGVCLHJvLG5CPVMoKCk9PntIdCgpO3JpKCk7bXQoKTtPdCgpO3pBKCk7X2UoKTtkYygpO3BuKCk7dDY9TWF0aC5jb3MsZTY9TWF0aC5zaW4sY2Z0PU1hdGguc3FydCxpQj17fTtpQi5jb21wdXRlUG9zaXRpb249ZnVuY3Rpb24odCxlLGksbixzLG8scil7bGV0IGE9ZS5yYWRpaVNxdWFyZWQsaD10Lm53Q29ybmVyLEE9dC5ib3VuZGluZ1JlY3RhbmdsZSxkPWgubGF0aXR1ZGUtdC5ncmFuWUNvcypuK3MqdC5ncmFuWFNpbixmPXQ2KGQpLEU9ZTYoZCksXz1hLnoqRSxSPWgubG9uZ2l0dWRlK24qdC5ncmFuWVNpbitzKnQuZ3JhblhDb3MsST1mKnQ2KFIpLEM9ZiplNihSKSxOPWEueCpJLFQ9YS55KkMsYj1jZnQoTipJK1QqQytfKkUpO2lmKG8ueD1OL2Isby55PVQvYixvLno9Xy9iLGkpe2xldCBGPXQuc3ROd0Nvcm5lcjttKEYpPyhkPUYubGF0aXR1ZGUtdC5zdEdyYW5ZQ29zKm4rcyp0LnN0R3JhblhTaW4sUj1GLmxvbmdpdHVkZStuKnQuc3RHcmFuWVNpbitzKnQuc3RHcmFuWENvcyxyLng9KFItdC5zdFdlc3QpKnQubG9uU2NhbGFyLHIueT0oZC10LnN0U291dGgpKnQubGF0U2NhbGFyKTooci54PShSLUEud2VzdCkqdC5sb25TY2FsYXIsci55PShkLUEuc291dGgpKnQubGF0U2NhbGFyKX19O2xmdD1uZXcgSG4saWE9bmV3IGwsZGZ0PW5ldyB1dCxtZz1uZXcgbCxlQj1uZXcgU3M7aUIuY29tcHV0ZU9wdGlvbnM9ZnVuY3Rpb24odCxlLGksbixzLG8scil7bGV0IGE9dC5lYXN0LGg9dC53ZXN0LEE9dC5ub3J0aCxkPXQuc291dGgsZj0hMSxFPSExO0E9PT1MLlBJX09WRVJfVFdPJiYoZj0hMCksZD09PS1MLlBJX09WRVJfVFdPJiYoRT0hMCk7bGV0IF8sUj1BLWQ7aD5hP189TC5UV09fUEktaCthOl89YS1oO2xldCBJPU1hdGguY2VpbChfL2UpKzEsQz1NYXRoLmNlaWwoUi9lKSsxLE49Xy8oSS0xKSxUPVIvKEMtMSksYj1YdC5ub3J0aHdlc3QodCxvKSxGPVh0LmNlbnRlcih0LGRmdCk7KGkhPT0wfHxuIT09MCkmJihGLmxvbmdpdHVkZTxiLmxvbmdpdHVkZSYmKEYubG9uZ2l0dWRlKz1MLlRXT19QSSksbWc9ZUIucHJvamVjdChGLG1nKSk7bGV0IEI9VCxVPU4sUT0wLE09MCxrPVh0LmNsb25lKHQscykseT17Z3JhbllDb3M6QixncmFuWVNpbjpRLGdyYW5YQ29zOlUsZ3JhblhTaW46TSxud0Nvcm5lcjpiLGJvdW5kaW5nUmVjdGFuZ2xlOmssd2lkdGg6SSxoZWlnaHQ6Qyxub3J0aENhcDpmLHNvdXRoQ2FwOkV9O2lmKGkhPT0wKXtsZXQgYz1pNihiLGksTixULEYsSSxDKTtpZihBPWMubm9ydGgsZD1jLnNvdXRoLGE9Yy5lYXN0LGg9Yy53ZXN0LEE8LUwuUElfT1ZFUl9UV098fEE+TC5QSV9PVkVSX1RXT3x8ZDwtTC5QSV9PVkVSX1RXT3x8ZD5MLlBJX09WRVJfVFdPKXRocm93IG5ldyBZKCJSb3RhdGVkIHJlY3RhbmdsZSBpcyBpbnZhbGlkLiAgSXQgY3Jvc3NlcyBvdmVyIGVpdGhlciB0aGUgbm9ydGggb3Igc291dGggcG9sZS4iKTt5LmdyYW5ZQ29zPWMuZ3JhbllDb3MseS5ncmFuWVNpbj1jLmdyYW5ZU2luLHkuZ3JhblhDb3M9Yy5ncmFuWENvcyx5LmdyYW5YU2luPWMuZ3JhblhTaW4say5ub3J0aD1BLGsuc291dGg9ZCxrLmVhc3Q9YSxrLndlc3Q9aH1pZihuIT09MCl7aT1pLW47bGV0IGM9WHQubm9ydGh3ZXN0KGssciksZz1pNihjLGksTixULEYsSSxDKTt5LnN0R3JhbllDb3M9Zy5ncmFuWUNvcyx5LnN0R3JhblhDb3M9Zy5ncmFuWENvcyx5LnN0R3JhbllTaW49Zy5ncmFuWVNpbix5LnN0R3JhblhTaW49Zy5ncmFuWFNpbix5LnN0TndDb3JuZXI9Yyx5LnN0V2VzdD1nLndlc3QseS5zdFNvdXRoPWcuc291dGh9cmV0dXJuIHl9O3JvPWlCfSk7ZnVuY3Rpb24gaDYodCxlKXtsZXQgaT1uZXcgc2Uoe2F0dHJpYnV0ZXM6bmV3IHdlLHByaW1pdGl2ZVR5cGU6bmUuVFJJQU5HTEVTfSk7cmV0dXJuIGkuYXR0cmlidXRlcy5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmUucG9zaXRpb25zfSksdC5ub3JtYWwmJihpLmF0dHJpYnV0ZXMubm9ybWFsPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLm5vcm1hbHN9KSksdC50YW5nZW50JiYoaS5hdHRyaWJ1dGVzLnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmUudGFuZ2VudHN9KSksdC5iaXRhbmdlbnQmJihpLmF0dHJpYnV0ZXMuYml0YW5nZW50PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLmJpdGFuZ2VudHN9KSksaX1mdW5jdGlvbiBfZnQodCxlLGksbil7bGV0IHM9dC5sZW5ndGgsbz1lLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxyPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxhPWUuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocyk6dm9pZCAwLGg9MCxBPWE2LGQ9cjYsZj1vNjtpZihlLm5vcm1hbHx8ZS50YW5nZW50fHxlLmJpdGFuZ2VudClmb3IobGV0IEU9MDtFPHM7RSs9Myl7bGV0IF89bC5mcm9tQXJyYXkodCxFLHNCKSxSPWgrMSxJPWgrMjtmPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKF8sZiksKGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYobC5jcm9zcyhsLlVOSVRfWixmLGQpLGx0Lm11bHRpcGx5QnlWZWN0b3IobixkLGQpLGwubm9ybWFsaXplKGQsZCksZS5iaXRhbmdlbnQmJmwubm9ybWFsaXplKGwuY3Jvc3MoZixkLEEpLEEpKSxlLm5vcm1hbCYmKG9baF09Zi54LG9bUl09Zi55LG9bSV09Zi56KSxlLnRhbmdlbnQmJihyW2hdPWQueCxyW1JdPWQueSxyW0ldPWQueiksZS5iaXRhbmdlbnQmJihhW2hdPUEueCxhW1JdPUEueSxhW0ldPUEueiksaCs9M31yZXR1cm4gaDYoZSx7cG9zaXRpb25zOnQsbm9ybWFsczpvLHRhbmdlbnRzOnIsYml0YW5nZW50czphfSl9ZnVuY3Rpb24gUmZ0KHQsZSxpKXtsZXQgbj10Lmxlbmd0aCxzPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkobik6dm9pZCAwLG89ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkobik6dm9pZCAwLHI9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShuKTp2b2lkIDAsYT0wLGg9MCxBPTAsZD0hMCxmPWE2LEU9cjYsXz1vNjtpZihlLm5vcm1hbHx8ZS50YW5nZW50fHxlLmJpdGFuZ2VudClmb3IobGV0IFI9MDtSPG47Uis9Nil7bGV0IEk9bC5mcm9tQXJyYXkodCxSLHNCKSxDPWwuZnJvbUFycmF5KHQsKFIrNiklbixvQik7aWYoZCl7bGV0IE49bC5mcm9tQXJyYXkodCwoUiszKSVuLGM2KTtsLnN1YnRyYWN0KEMsSSxDKSxsLnN1YnRyYWN0KE4sSSxOKSxfPWwubm9ybWFsaXplKGwuY3Jvc3MoTixDLF8pLF8pLGQ9ITF9bC5lcXVhbHNFcHNpbG9uKEMsSSxMLkVQU0lMT04xMCkmJihkPSEwKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihmPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEksZiksZS50YW5nZW50JiYoRT1sLm5vcm1hbGl6ZShsLmNyb3NzKGYsXyxFKSxFKSkpLGUubm9ybWFsJiYoc1thKytdPV8ueCxzW2ErK109Xy55LHNbYSsrXT1fLnosc1thKytdPV8ueCxzW2ErK109Xy55LHNbYSsrXT1fLnopLGUudGFuZ2VudCYmKG9baCsrXT1FLngsb1toKytdPUUueSxvW2grK109RS56LG9baCsrXT1FLngsb1toKytdPUUueSxvW2grK109RS56KSxlLmJpdGFuZ2VudCYmKHJbQSsrXT1mLngscltBKytdPWYueSxyW0ErK109Zi56LHJbQSsrXT1mLngscltBKytdPWYueSxyW0ErK109Zi56KX1yZXR1cm4gaDYoZSx7cG9zaXRpb25zOnQsbm9ybWFsczpzLHRhbmdlbnRzOm8sYml0YW5nZW50czpyfSl9ZnVuY3Rpb24gbDYodCxlKXtsZXQgaT10Ll92ZXJ0ZXhGb3JtYXQsbj10Ll9lbGxpcHNvaWQscz1lLmhlaWdodCxvPWUud2lkdGgscj1lLm5vcnRoQ2FwLGE9ZS5zb3V0aENhcCxoPTAsQT1zLGQ9cyxmPTA7ciYmKGg9MSxkLT0xLGYrPTEpLGEmJihBLT0xLGQtPTEsZis9MSksZis9bypkO2xldCBFPWkucG9zaXRpb24/bmV3IEZsb2F0NjRBcnJheShmKjMpOnZvaWQgMCxfPWkuc3Q/bmV3IEZsb2F0MzJBcnJheShmKjIpOnZvaWQgMCxSPTAsST0wLEM9c0IsTj1tZnQsVD1OdW1iZXIuTUFYX1ZBTFVFLGI9TnVtYmVyLk1BWF9WQUxVRSxGPS1OdW1iZXIuTUFYX1ZBTFVFLEI9LU51bWJlci5NQVhfVkFMVUU7Zm9yKGxldCBnPWg7ZzxBOysrZylmb3IobGV0IE89MDtPPG87KytPKXJvLmNvbXB1dGVQb3NpdGlvbihlLG4saS5zdCxnLE8sQyxOKSxFW1IrK109Qy54LEVbUisrXT1DLnksRVtSKytdPUMueixpLnN0JiYoX1tJKytdPU4ueCxfW0krK109Ti55LFQ9TWF0aC5taW4oVCxOLngpLGI9TWF0aC5taW4oYixOLnkpLEY9TWF0aC5tYXgoRixOLngpLEI9TWF0aC5tYXgoQixOLnkpKTtpZihyJiYocm8uY29tcHV0ZVBvc2l0aW9uKGUsbixpLnN0LDAsMCxDLE4pLEVbUisrXT1DLngsRVtSKytdPUMueSxFW1IrK109Qy56LGkuc3QmJihfW0krK109Ti54LF9bSSsrXT1OLnksVD1OLngsYj1OLnksRj1OLngsQj1OLnkpKSxhJiYocm8uY29tcHV0ZVBvc2l0aW9uKGUsbixpLnN0LHMtMSwwLEMsTiksRVtSKytdPUMueCxFW1IrK109Qy55LEVbUl09Qy56LGkuc3QmJihfW0krK109Ti54LF9bSV09Ti55LFQ9TWF0aC5taW4oVCxOLngpLGI9TWF0aC5taW4oYixOLnkpLEY9TWF0aC5tYXgoRixOLngpLEI9TWF0aC5tYXgoQixOLnkpKSksaS5zdCYmKFQ8MHx8YjwwfHxGPjF8fEI+MSkpZm9yKGxldCBnPTA7ZzxfLmxlbmd0aDtnKz0yKV9bZ109KF9bZ10tVCkvKEYtVCksX1tnKzFdPShfW2crMV0tYikvKEItYik7bGV0IFU9X2Z0KEUsaSxuLGUudGFuZ2VudFJvdGF0aW9uTWF0cml4KSxRPTYqKG8tMSkqKGQtMSk7ciYmKFErPTMqKG8tMSkpLGEmJihRKz0zKihvLTEpKTtsZXQgTT10ZS5jcmVhdGVUeXBlZEFycmF5KGYsUSksaz0wLHk9MCxjO2ZvcihjPTA7YzxkLTE7KytjKXtmb3IobGV0IGc9MDtnPG8tMTsrK2cpe2xldCBPPWssRD1PK28sdz1EKzEseD1PKzE7TVt5KytdPU8sTVt5KytdPUQsTVt5KytdPXgsTVt5KytdPXgsTVt5KytdPUQsTVt5KytdPXcsKytrfSsra31pZihyfHxhKXtsZXQgZz1mLTEsTz1mLTE7ciYmYSYmKGc9Zi0yKTtsZXQgRCx3O2lmKGs9MCxyKWZvcihjPTA7YzxvLTE7YysrKUQ9ayx3PUQrMSxNW3krK109ZyxNW3krK109RCxNW3krK109dywrK2s7aWYoYSlmb3Ioaz0oZC0xKSpvLGM9MDtjPG8tMTtjKyspRD1rLHc9RCsxLE1beSsrXT1ELE1beSsrXT1PLE1beSsrXT13LCsra31yZXR1cm4gVS5pbmRpY2VzPU0saS5zdCYmKFUuYXR0cmlidXRlcy5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6X30pKSxVfWZ1bmN0aW9uIHdmKHQsZSxpLG4scyl7cmV0dXJuIHRbZSsrXT1uW2ldLHRbZSsrXT1uW2krMV0sdFtlKytdPW5baSsyXSx0W2UrK109c1tpXSx0W2UrK109c1tpKzFdLHRbZV09c1tpKzJdLHR9ZnVuY3Rpb24geGYodCxlLGksbil7cmV0dXJuIHRbZSsrXT1uW2ldLHRbZSsrXT1uW2krMV0sdFtlKytdPW5baV0sdFtlXT1uW2krMV0sdH1mdW5jdGlvbiBaZnQodCxlKXtsZXQgaT10Ll9zaGFkb3dWb2x1bWUsbj10Ll9vZmZzZXRBdHRyaWJ1dGUscz10Ll92ZXJ0ZXhGb3JtYXQsbz10Ll9leHRydWRlZEhlaWdodCxyPXQuX3N1cmZhY2VIZWlnaHQsYT10Ll9lbGxpcHNvaWQsaD1lLmhlaWdodCxBPWUud2lkdGgsZDtpZihpKXtsZXQgRmU9U3QuY2xvbmUocyxyQik7RmUubm9ybWFsPSEwLHQuX3ZlcnRleEZvcm1hdD1GZX1sZXQgZj1sNih0LGUpO2kmJih0Ll92ZXJ0ZXhGb3JtYXQ9cyk7bGV0IEU9dWkuc2NhbGVUb0dlb2RldGljSGVpZ2h0KGYuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscixhLCExKTtFPW5ldyBGbG9hdDY0QXJyYXkoRSk7bGV0IF89RS5sZW5ndGgsUj1fKjIsST1uZXcgRmxvYXQ2NEFycmF5KFIpO0kuc2V0KEUpO2xldCBDPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChmLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLG8sYSk7SS5zZXQoQyxfKSxmLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPUk7bGV0IE49cy5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShSKTp2b2lkIDAsVD1zLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShSKTp2b2lkIDAsYj1zLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KFIpOnZvaWQgMCxGPXMuc3Q/bmV3IEZsb2F0MzJBcnJheShSLzMqMik6dm9pZCAwLEIsVTtpZihzLm5vcm1hbCl7Zm9yKFU9Zi5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMsTi5zZXQoVSksZD0wO2Q8XztkKyspVVtkXT0tVVtkXTtOLnNldChVLF8pLGYuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzPU59aWYoaSl7VT1mLmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyxzLm5vcm1hbHx8KGYuYXR0cmlidXRlcy5ub3JtYWw9dm9pZCAwKTtsZXQgRmU9bmV3IEZsb2F0MzJBcnJheShSKTtmb3IoZD0wO2Q8XztkKyspVVtkXT0tVVtkXTtGZS5zZXQoVSxfKSxmLmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RmV9KX1sZXQgUSxNPW0obik7aWYoTSl7bGV0IEZlPV8vMyoyLG5pPW5ldyBVaW50OEFycmF5KEZlKTtuPT09UGUuVE9QP25pPW5pLmZpbGwoMSwwLEZlLzIpOihRPW49PT1QZS5OT05FPzA6MSxuaT1uaS5maWxsKFEpKSxmLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6bml9KX1pZihzLnRhbmdlbnQpe2xldCBGZT1mLmF0dHJpYnV0ZXMudGFuZ2VudC52YWx1ZXM7Zm9yKFQuc2V0KEZlKSxkPTA7ZDxfO2QrKylGZVtkXT0tRmVbZF07VC5zZXQoRmUsXyksZi5hdHRyaWJ1dGVzLnRhbmdlbnQudmFsdWVzPVR9aWYocy5iaXRhbmdlbnQpe2xldCBGZT1mLmF0dHJpYnV0ZXMuYml0YW5nZW50LnZhbHVlcztiLnNldChGZSksYi5zZXQoRmUsXyksZi5hdHRyaWJ1dGVzLmJpdGFuZ2VudC52YWx1ZXM9Yn1zLnN0JiYoQj1mLmF0dHJpYnV0ZXMuc3QudmFsdWVzLEYuc2V0KEIpLEYuc2V0KEIsXy8zKjIpLGYuYXR0cmlidXRlcy5zdC52YWx1ZXM9Rik7bGV0IGs9Zi5pbmRpY2VzLHk9ay5sZW5ndGgsYz1fLzMsZz10ZS5jcmVhdGVUeXBlZEFycmF5KFIvMyx5KjIpO2ZvcihnLnNldChrKSxkPTA7ZDx5O2QrPTMpZ1tkK3ldPWtbZCsyXStjLGdbZCsxK3ldPWtbZCsxXStjLGdbZCsyK3ldPWtbZF0rYztmLmluZGljZXM9ZztsZXQgTz1lLm5vcnRoQ2FwLEQ9ZS5zb3V0aENhcCx3PWgseD0yLEg9MCxqPTQsWD00O08mJih4LT0xLHctPTEsSCs9MSxqLT0yLFgtPTEpLEQmJih4LT0xLHctPTEsSCs9MSxqLT0yLFgtPTEpLEgrPXgqQSsyKnctajtsZXQgdHQ9KEgrWCkqMixHPW5ldyBGbG9hdDY0QXJyYXkodHQqMyksSXQ9aT9uZXcgRmxvYXQzMkFycmF5KHR0KjMpOnZvaWQgMCxndD1NP25ldyBVaW50OEFycmF5KHR0KTp2b2lkIDAsWXQ9cy5zdD9uZXcgRmxvYXQzMkFycmF5KHR0KjIpOnZvaWQgMCxVdD1uPT09UGUuVE9QO00mJiFVdCYmKFE9bj09PVBlLkFMTD8xOjAsZ3Q9Z3QuZmlsbChRKSk7bGV0IEN0PTAsenQ9MCxrdD0wLEp0PTAsV3Q9QSp3LGJ0O2ZvcihkPTA7ZDxXdDtkKz1BKWJ0PWQqMyxHPXdmKEcsQ3QsYnQsRSxDKSxDdCs9NixzLnN0JiYoWXQ9eGYoWXQsenQsZCoyLEIpLHp0Kz00KSxpJiYoa3QrPTMsSXRba3QrK109VVtidF0sSXRba3QrK109VVtidCsxXSxJdFtrdCsrXT1VW2J0KzJdKSxVdCYmKGd0W0p0KytdPTEsSnQrPTEpO2lmKEQpe2xldCBGZT1PP1d0KzE6V3Q7Zm9yKGJ0PUZlKjMsZD0wO2Q8MjtkKyspRz13ZihHLEN0LGJ0LEUsQyksQ3QrPTYscy5zdCYmKFl0PXhmKFl0LHp0LEZlKjIsQiksenQrPTQpLGkmJihrdCs9MyxJdFtrdCsrXT1VW2J0XSxJdFtrdCsrXT1VW2J0KzFdLEl0W2t0KytdPVVbYnQrMl0pLFV0JiYoZ3RbSnQrK109MSxKdCs9MSl9ZWxzZSBmb3IoZD1XdC1BO2Q8V3Q7ZCsrKWJ0PWQqMyxHPXdmKEcsQ3QsYnQsRSxDKSxDdCs9NixzLnN0JiYoWXQ9eGYoWXQsenQsZCoyLEIpLHp0Kz00KSxpJiYoa3QrPTMsSXRba3QrK109VVtidF0sSXRba3QrK109VVtidCsxXSxJdFtrdCsrXT1VW2J0KzJdKSxVdCYmKGd0W0p0KytdPTEsSnQrPTEpO2ZvcihkPVd0LTE7ZD4wO2QtPUEpYnQ9ZCozLEc9d2YoRyxDdCxidCxFLEMpLEN0Kz02LHMuc3QmJihZdD14ZihZdCx6dCxkKjIsQiksenQrPTQpLGkmJihrdCs9MyxJdFtrdCsrXT1VW2J0XSxJdFtrdCsrXT1VW2J0KzFdLEl0W2t0KytdPVVbYnQrMl0pLFV0JiYoZ3RbSnQrK109MSxKdCs9MSk7aWYoTyl7bGV0IEZlPVd0O2ZvcihidD1GZSozLGQ9MDtkPDI7ZCsrKUc9d2YoRyxDdCxidCxFLEMpLEN0Kz02LHMuc3QmJihZdD14ZihZdCx6dCxGZSoyLEIpLHp0Kz00KSxpJiYoa3QrPTMsSXRba3QrK109VVtidF0sSXRba3QrK109VVtidCsxXSxJdFtrdCsrXT1VW2J0KzJdKSxVdCYmKGd0W0p0KytdPTEsSnQrPTEpfWVsc2UgZm9yKGQ9QS0xO2Q+PTA7ZC0tKWJ0PWQqMyxHPXdmKEcsQ3QsYnQsRSxDKSxDdCs9NixzLnN0JiYoWXQ9eGYoWXQsenQsZCoyLEIpLHp0Kz00KSxpJiYoa3QrPTMsSXRba3QrK109VVtidF0sSXRba3QrK109VVtidCsxXSxJdFtrdCsrXT1VW2J0KzJdKSxVdCYmKGd0W0p0KytdPTEsSnQrPTEpO2xldCBlZT1SZnQoRyxzLGEpO3Muc3QmJihlZS5hdHRyaWJ1dGVzLnN0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpZdH0pKSxpJiYoZWUuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpJdH0pKSxNJiYoZWUuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpndH0pKTtsZXQgY2U9dGUuY3JlYXRlVHlwZWRBcnJheSh0dCxIKjYpLGplLFNlLFVlLE1lO189Ry5sZW5ndGgvMztsZXQgQ2U9MDtmb3IoZD0wO2Q8Xy0xO2QrPTIpe2plPWQsTWU9KGplKzIpJV87bGV0IEZlPWwuZnJvbUFycmF5KEcsamUqMyxvQiksbmk9bC5mcm9tQXJyYXkoRyxNZSozLGM2KTtsLmVxdWFsc0Vwc2lsb24oRmUsbmksTC5FUFNJTE9OMTApfHwoU2U9KGplKzEpJV8sVWU9KFNlKzIpJV8sY2VbQ2UrK109amUsY2VbQ2UrK109U2UsY2VbQ2UrK109TWUsY2VbQ2UrK109TWUsY2VbQ2UrK109U2UsY2VbQ2UrK109VWUpfXJldHVybiBlZS5pbmRpY2VzPWNlLGVlPXdpLmNvbWJpbmVJbnN0YW5jZXMoW25ldyBMbih7Z2VvbWV0cnk6Zn0pLG5ldyBMbih7Z2VvbWV0cnk6ZWV9KV0pLGVlWzBdfWZ1bmN0aW9uIGFCKHQsZSxpLG4scyl7aWYoaT09PTApcmV0dXJuIFh0LmNsb25lKHQscyk7bGV0IG89cm8uY29tcHV0ZU9wdGlvbnModCxlLGksMCxBNixkNikscj1vLmhlaWdodCxhPW8ud2lkdGgsaD1JZnQ7cmV0dXJuIHJvLmNvbXB1dGVQb3NpdGlvbihvLG4sITEsMCwwLGhbMF0pLHJvLmNvbXB1dGVQb3NpdGlvbihvLG4sITEsMCxhLTEsaFsxXSkscm8uY29tcHV0ZVBvc2l0aW9uKG8sbiwhMSxyLTEsMCxoWzJdKSxyby5jb21wdXRlUG9zaXRpb24obyxuLCExLHItMSxhLTEsaFszXSksWHQuZnJvbUNhcnRlc2lhbkFycmF5KGgsbixzKX1mdW5jdGlvbiBXQSh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5yZWN0YW5nbGU7aWYocC50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLGUpLFh0LnZhbGlkYXRlKGUpLGUubm9ydGg8ZS5zb3V0aCl0aHJvdyBuZXcgWSgib3B0aW9ucy5yZWN0YW5nbGUubm9ydGggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gb3B0aW9ucy5yZWN0YW5nbGUuc291dGgiKTtsZXQgaT1aKHQuaGVpZ2h0LDApLG49Wih0LmV4dHJ1ZGVkSGVpZ2h0LGkpO3RoaXMuX3JlY3RhbmdsZT1YdC5jbG9uZShlKSx0aGlzLl9ncmFudWxhcml0eT1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShaKHQuZWxsaXBzb2lkLG90LldHUzg0KSksdGhpcy5fc3VyZmFjZUhlaWdodD1NYXRoLm1heChpLG4pLHRoaXMuX3JvdGF0aW9uPVoodC5yb3RhdGlvbiwwKSx0aGlzLl9zdFJvdGF0aW9uPVoodC5zdFJvdGF0aW9uLDApLHRoaXMuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShaKHQudmVydGV4Rm9ybWF0LFN0LkRFRkFVTFQpKSx0aGlzLl9leHRydWRlZEhlaWdodD1NYXRoLm1pbihpLG4pLHRoaXMuX3NoYWRvd1ZvbHVtZT1aKHQuc2hhZG93Vm9sdW1lLCExKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVSZWN0YW5nbGVHZW9tZXRyeSIsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3JvdGF0ZWRSZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9dm9pZCAwfWZ1bmN0aW9uIEZmdCh0KXtpZih0Ll9zdFJvdGF0aW9uPT09MClyZXR1cm5bMCwwLDAsMSwxLDBdO2xldCBlPVh0LmNsb25lKHQuX3JlY3RhbmdsZSxzNiksaT10Ll9ncmFudWxhcml0eSxuPXQuX2VsbGlwc29pZCxzPXQuX3JvdGF0aW9uLXQuX3N0Um90YXRpb24sbz1hQihlLGkscyxuLHM2KSxyPWdmdDtyWzBdLng9by53ZXN0LHJbMF0ueT1vLnNvdXRoLHJbMV0ueD1vLndlc3QsclsxXS55PW8ubm9ydGgsclsyXS54PW8uZWFzdCxyWzJdLnk9by5zb3V0aDtsZXQgYT10LnJlY3RhbmdsZSxoPUhuLmZyb21Sb3RhdGlvbih0Ll9zdFJvdGF0aW9uLFRmdCksQT1YdC5jZW50ZXIoYSxOZnQpO2ZvcihsZXQgUj0wO1I8MzsrK1Ipe2xldCBJPXJbUl07SS54LT1BLmxvbmdpdHVkZSxJLnktPUEubGF0aXR1ZGUsSG4ubXVsdGlwbHlCeVZlY3RvcihoLEksSSksSS54Kz1BLmxvbmdpdHVkZSxJLnkrPUEubGF0aXR1ZGUsSS54PShJLngtYS53ZXN0KS9hLndpZHRoLEkueT0oSS55LWEuc291dGgpL2EuaGVpZ2h0fWxldCBkPXJbMF0sZj1yWzFdLEU9clsyXSxfPW5ldyBBcnJheSg2KTtyZXR1cm4gbnQucGFjayhkLF8pLG50LnBhY2soZixfLDIpLG50LnBhY2soRSxfLDQpLF99dmFyIHNCLG82LHI2LGE2LEE2LG1mdCxmZnQsRWZ0LG9CLGM2LHJCLElmdCxkNixwZnQsbTYsZjYsamMsdWZ0LG42LENmdCxzNixnZnQsVGZ0LE5mdCxBQixFNj1TKCgpPT57X2koKTtYZSgpO0h0KCk7cmkoKTthZSgpO29pKCk7RnQoKTttdCgpO090KCk7T2UoKTt5aSgpO2ppKCk7RW4oKTt1QSgpO2dvKCk7Z0EoKTtEaSgpO19lKCk7ZGMoKTtkbigpO1BhKCk7WGkoKTskcygpO3BuKCk7bkIoKTtMcygpO3NCPW5ldyBsLG82PW5ldyBsLHI2PW5ldyBsLGE2PW5ldyBsLEE2PW5ldyBYdCxtZnQ9bmV3IG50LGZmdD1uZXcgTnQsRWZ0PW5ldyBOdDtvQj1uZXcgbCxjNj1uZXcgbDtyQj1uZXcgU3Q7SWZ0PVtuZXcgbCxuZXcgbCxuZXcgbCxuZXcgbF0sZDY9bmV3IHV0LHBmdD1uZXcgdXQ7V0EucGFja2VkTGVuZ3RoPVh0LnBhY2tlZExlbmd0aCtvdC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoKzc7V0EucGFjaz1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHAudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHAuZGVmaW5lZCgiYXJyYXkiLGUpLGk9WihpLDApLFh0LnBhY2sodC5fcmVjdGFuZ2xlLGUsaSksaSs9WHQucGFja2VkTGVuZ3RoLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9ncmFudWxhcml0eSxlW2krK109dC5fc3VyZmFjZUhlaWdodCxlW2krK109dC5fcm90YXRpb24sZVtpKytdPXQuX3N0Um90YXRpb24sZVtpKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbaSsrXT10Ll9zaGFkb3dWb2x1bWU/MTowLGVbaV09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O202PW5ldyBYdCxmNj1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksamM9e3JlY3RhbmdsZTptNixlbGxpcHNvaWQ6ZjYsdmVydGV4Rm9ybWF0OnJCLGdyYW51bGFyaXR5OnZvaWQgMCxoZWlnaHQ6dm9pZCAwLHJvdGF0aW9uOnZvaWQgMCxzdFJvdGF0aW9uOnZvaWQgMCxleHRydWRlZEhlaWdodDp2b2lkIDAsc2hhZG93Vm9sdW1lOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtXQS51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe3AuZGVmaW5lZCgiYXJyYXkiLHQpLGU9WihlLDApO2xldCBuPVh0LnVucGFjayh0LGUsbTYpO2UrPVh0LnBhY2tlZExlbmd0aDtsZXQgcz1vdC51bnBhY2sodCxlLGY2KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IG89U3QudW5wYWNrKHQsZSxyQik7ZSs9U3QucGFja2VkTGVuZ3RoO2xldCByPXRbZSsrXSxhPXRbZSsrXSxoPXRbZSsrXSxBPXRbZSsrXSxkPXRbZSsrXSxmPXRbZSsrXT09PTEsRT10W2VdO3JldHVybiBtKGkpPyhpLl9yZWN0YW5nbGU9WHQuY2xvbmUobixpLl9yZWN0YW5nbGUpLGkuX2VsbGlwc29pZD1vdC5jbG9uZShzLGkuX2VsbGlwc29pZCksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKG8saS5fdmVydGV4Rm9ybWF0KSxpLl9ncmFudWxhcml0eT1yLGkuX3N1cmZhY2VIZWlnaHQ9YSxpLl9yb3RhdGlvbj1oLGkuX3N0Um90YXRpb249QSxpLl9leHRydWRlZEhlaWdodD1kLGkuX3NoYWRvd1ZvbHVtZT1mLGkuX29mZnNldEF0dHJpYnV0ZT1FPT09LTE/dm9pZCAwOkUsaSk6KGpjLmdyYW51bGFyaXR5PXIsamMuaGVpZ2h0PWEsamMucm90YXRpb249aCxqYy5zdFJvdGF0aW9uPUEsamMuZXh0cnVkZWRIZWlnaHQ9ZCxqYy5zaGFkb3dWb2x1bWU9ZixqYy5vZmZzZXRBdHRyaWJ1dGU9RT09PS0xP3ZvaWQgMDpFLG5ldyBXQShqYykpfTtXQS5jb21wdXRlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBpPXQucmVjdGFuZ2xlO2lmKHAudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIixpKSxYdC52YWxpZGF0ZShpKSxpLm5vcnRoPGkuc291dGgpdGhyb3cgbmV3IFkoIm9wdGlvbnMucmVjdGFuZ2xlLm5vcnRoIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG9wdGlvbnMucmVjdGFuZ2xlLnNvdXRoIik7bGV0IG49Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSxzPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLG89Wih0LnJvdGF0aW9uLDApO3JldHVybiBhQihpLG4sbyxzLGUpfTt1ZnQ9bmV3IGx0LG42PW5ldyBBZSxDZnQ9bmV3IHV0O1dBLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2lmKEwuZXF1YWxzRXBzaWxvbih0Ll9yZWN0YW5nbGUubm9ydGgsdC5fcmVjdGFuZ2xlLnNvdXRoLEwuRVBTSUxPTjEwKXx8TC5lcXVhbHNFcHNpbG9uKHQuX3JlY3RhbmdsZS5lYXN0LHQuX3JlY3RhbmdsZS53ZXN0LEwuRVBTSUxPTjEwKSlyZXR1cm47bGV0IGU9dC5fcmVjdGFuZ2xlLGk9dC5fZWxsaXBzb2lkLG49dC5fcm90YXRpb24scz10Ll9zdFJvdGF0aW9uLG89dC5fdmVydGV4Rm9ybWF0LHI9cm8uY29tcHV0ZU9wdGlvbnMoZSx0Ll9ncmFudWxhcml0eSxuLHMsQTYsZDYscGZ0KSxhPXVmdDtpZihzIT09MHx8biE9PTApe2xldCBfPVh0LmNlbnRlcihlLENmdCksUj1pLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYyhfLG9CKTtBZS5mcm9tQXhpc0FuZ2xlKFIsLXMsbjYpLGx0LmZyb21RdWF0ZXJuaW9uKG42LGEpfWVsc2UgbHQuY2xvbmUobHQuSURFTlRJVFksYSk7bGV0IGg9dC5fc3VyZmFjZUhlaWdodCxBPXQuX2V4dHJ1ZGVkSGVpZ2h0LGQ9IUwuZXF1YWxzRXBzaWxvbihoLEEsMCxMLkVQU0lMT04yKTtyLmxvblNjYWxhcj0xL3QuX3JlY3RhbmdsZS53aWR0aCxyLmxhdFNjYWxhcj0xL3QuX3JlY3RhbmdsZS5oZWlnaHQsci50YW5nZW50Um90YXRpb25NYXRyaXg9YTtsZXQgZixFO2lmKGU9dC5fcmVjdGFuZ2xlLGQpe2Y9WmZ0KHQscik7bGV0IF89TnQuZnJvbVJlY3RhbmdsZTNEKGUsaSxoLEVmdCksUj1OdC5mcm9tUmVjdGFuZ2xlM0QoZSxpLEEsZmZ0KTtFPU50LnVuaW9uKF8sUil9ZWxzZXtpZihmPWw2KHQsciksZi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoZi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxoLGksITEpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IF89Zi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsUj10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxJPW5ldyBVaW50OEFycmF5KF8vMykuZmlsbChSKTtmLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6SX0pfUU9TnQuZnJvbVJlY3RhbmdsZTNEKGUsaSxoKX1yZXR1cm4gby5wb3NpdGlvbnx8ZGVsZXRlIGYuYXR0cmlidXRlcy5wb3NpdGlvbixuZXcgc2Uoe2F0dHJpYnV0ZXM6Zi5hdHRyaWJ1dGVzLGluZGljZXM6Zi5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6Zi5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOkUsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtXQS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQuX2dyYW51bGFyaXR5LHM9dC5fZWxsaXBzb2lkLG89ZShuLHMpLHI9aShuLHMpO3JldHVybiBuZXcgV0Eoe3JlY3RhbmdsZTp0Ll9yZWN0YW5nbGUscm90YXRpb246dC5fcm90YXRpb24sZWxsaXBzb2lkOnMsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om4sZXh0cnVkZWRIZWlnaHQ6cixoZWlnaHQ6byx2ZXJ0ZXhGb3JtYXQ6U3QuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07czY9bmV3IFh0LGdmdD1bbmV3IG50LG5ldyBudCxuZXcgbnRdLFRmdD1uZXcgSG4sTmZ0PW5ldyB1dDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhXQS5wcm90b3R5cGUse3JlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fcm90YXRlZFJlY3RhbmdsZSl8fCh0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlPWFCKHRoaXMuX3JlY3RhbmdsZSx0aGlzLl9ncmFudWxhcml0eSx0aGlzLl9yb3RhdGlvbix0aGlzLl9lbGxpcHNvaWQpKSx0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPUZmdCh0aGlzKSksdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7QUI9V0F9KTt2YXIgaEI9e307SGUoaEIse2RlZmF1bHQ6KCk9PllmdH0pO2Z1bmN0aW9uIGJmdCh0LGUpe3JldHVybiBtKGUpJiYodD1BQi51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPW90LmNsb25lKHQuX2VsbGlwc29pZCksdC5fcmVjdGFuZ2xlPVh0LmNsb25lKHQuX3JlY3RhbmdsZSksQUIuY3JlYXRlR2VvbWV0cnkodCl9dmFyIFlmdCxjQj1TKCgpPT57bXQoKTtPZSgpO3BuKCk7RTYoKTtZZnQ9YmZ0fSk7ZnVuY3Rpb24gXzYodCxlKXtsZXQgaT10Ll9lbGxpcHNvaWQsbj1lLmhlaWdodCxzPWUud2lkdGgsbz1lLm5vcnRoQ2FwLHI9ZS5zb3V0aENhcCxhPW4saD0yLEE9MCxkPTQ7byYmKGgtPTEsYS09MSxBKz0xLGQtPTIpLHImJihoLT0xLGEtPTEsQSs9MSxkLT0yKSxBKz1oKnMrMiphLWQ7bGV0IGY9bmV3IEZsb2F0NjRBcnJheShBKjMpLEU9MCxfPTAsUixJPU9mdDtpZihvKXJvLmNvbXB1dGVQb3NpdGlvbihlLGksITEsXywwLEkpLGZbRSsrXT1JLngsZltFKytdPUkueSxmW0UrK109SS56O2Vsc2UgZm9yKFI9MDtSPHM7UisrKXJvLmNvbXB1dGVQb3NpdGlvbihlLGksITEsXyxSLEkpLGZbRSsrXT1JLngsZltFKytdPUkueSxmW0UrK109SS56O2ZvcihSPXMtMSxfPTE7XzxuO18rKylyby5jb21wdXRlUG9zaXRpb24oZSxpLCExLF8sUixJKSxmW0UrK109SS54LGZbRSsrXT1JLnksZltFKytdPUkuejtpZihfPW4tMSwhcilmb3IoUj1zLTI7Uj49MDtSLS0pcm8uY29tcHV0ZVBvc2l0aW9uKGUsaSwhMSxfLFIsSSksZltFKytdPUkueCxmW0UrK109SS55LGZbRSsrXT1JLno7Zm9yKFI9MCxfPW4tMjtfPjA7Xy0tKXJvLmNvbXB1dGVQb3NpdGlvbihlLGksITEsXyxSLEkpLGZbRSsrXT1JLngsZltFKytdPUkueSxmW0UrK109SS56O2xldCBDPWYubGVuZ3RoLzMqMixOPXRlLmNyZWF0ZVR5cGVkQXJyYXkoZi5sZW5ndGgvMyxDKSxUPTA7Zm9yKGxldCBGPTA7RjxmLmxlbmd0aC8zLTE7RisrKU5bVCsrXT1GLE5bVCsrXT1GKzE7TltUKytdPWYubGVuZ3RoLzMtMSxOW1QrK109MDtsZXQgYj1uZXcgc2Uoe2F0dHJpYnV0ZXM6bmV3IHdlLHByaW1pdGl2ZVR5cGU6bmUuTElORVN9KTtyZXR1cm4gYi5hdHRyaWJ1dGVzLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Zn0pLGIuaW5kaWNlcz1OLGJ9ZnVuY3Rpb24gR2Z0KHQsZSl7bGV0IGk9dC5fc3VyZmFjZUhlaWdodCxuPXQuX2V4dHJ1ZGVkSGVpZ2h0LHM9dC5fZWxsaXBzb2lkLG89XzYodCxlKSxyPWUuaGVpZ2h0LGE9ZS53aWR0aCxoPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChvLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGkscywhMSksQT1oLmxlbmd0aCxkPW5ldyBGbG9hdDY0QXJyYXkoQSoyKTtkLnNldChoKTtsZXQgZj11aS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoby5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxuLHMpO2Quc2V0KGYsQSksby5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1kO2xldCBFPWUubm9ydGhDYXAsXz1lLnNvdXRoQ2FwLFI9NDtFJiYoUi09MSksXyYmKFItPTEpO2xldCBJPShkLmxlbmd0aC8zK1IpKjIsQz10ZS5jcmVhdGVUeXBlZEFycmF5KGQubGVuZ3RoLzMsSSk7QT1kLmxlbmd0aC82O2xldCBOPTA7Zm9yKGxldCBiPTA7YjxBLTE7YisrKUNbTisrXT1iLENbTisrXT1iKzEsQ1tOKytdPWIrQSxDW04rK109YitBKzE7Q1tOKytdPUEtMSxDW04rK109MCxDW04rK109QStBLTEsQ1tOKytdPUEsQ1tOKytdPTAsQ1tOKytdPUE7bGV0IFQ7aWYoRSlUPXItMTtlbHNle2xldCBiPWEtMTtDW04rK109YixDW04rK109YitBLFQ9YStyLTJ9aWYoQ1tOKytdPVQsQ1tOKytdPVQrQSwhXyl7bGV0IGI9YStULTE7Q1tOKytdPWIsQ1tOXT1iK0F9cmV0dXJuIG8uaW5kaWNlcz1DLG99ZnVuY3Rpb24gSmYodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucmVjdGFuZ2xlLGk9Wih0LmdyYW51bGFyaXR5LEwuUkFESUFOU19QRVJfREVHUkVFKSxuPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLHM9Wih0LnJvdGF0aW9uLDApO2lmKCFtKGUpKXRocm93IG5ldyBZKCJyZWN0YW5nbGUgaXMgcmVxdWlyZWQuIik7aWYoWHQudmFsaWRhdGUoZSksZS5ub3J0aDxlLnNvdXRoKXRocm93IG5ldyBZKCJvcHRpb25zLnJlY3RhbmdsZS5ub3J0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvcHRpb25zLnJlY3RhbmdsZS5zb3V0aCIpO2xldCBvPVoodC5oZWlnaHQsMCkscj1aKHQuZXh0cnVkZWRIZWlnaHQsbyk7dGhpcy5fcmVjdGFuZ2xlPVh0LmNsb25lKGUpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fZWxsaXBzb2lkPW4sdGhpcy5fc3VyZmFjZUhlaWdodD1NYXRoLm1heChvLHIpLHRoaXMuX3JvdGF0aW9uPXMsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4obyxyKSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUmVjdGFuZ2xlT3V0bGluZUdlb21ldHJ5In12YXIgVmZ0LFNmdCxPZnQsQmZ0LFI2LFo2LFBmLFdmdCxsQixJNj1TKCgpPT57X2koKTtIdCgpO3JpKCk7b2koKTtGdCgpO210KCk7T3QoKTtPZSgpO3lpKCk7amkoKTtFbigpO2dvKCk7RGkoKTtfZSgpO1BhKCk7WGkoKTtwbigpO25CKCk7VmZ0PW5ldyBOdCxTZnQ9bmV3IE50LE9mdD1uZXcgbCxCZnQ9bmV3IFh0O0pmLnBhY2tlZExlbmd0aD1YdC5wYWNrZWRMZW5ndGgrb3QucGFja2VkTGVuZ3RoKzU7SmYucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIGk9WihpLDApLFh0LnBhY2sodC5fcmVjdGFuZ2xlLGUsaSksaSs9WHQucGFja2VkTGVuZ3RoLG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLGVbaSsrXT10Ll9ncmFudWxhcml0eSxlW2krK109dC5fc3VyZmFjZUhlaWdodCxlW2krK109dC5fcm90YXRpb24sZVtpKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbaV09Wih0Ll9vZmZzZXRBdHRyaWJ1dGUsLTEpLGV9O1I2PW5ldyBYdCxaNj1vdC5jbG9uZShvdC5VTklUX1NQSEVSRSksUGY9e3JlY3RhbmdsZTpSNixlbGxpcHNvaWQ6WjYsZ3JhbnVsYXJpdHk6dm9pZCAwLGhlaWdodDp2b2lkIDAscm90YXRpb246dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtKZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuPVh0LnVucGFjayh0LGUsUjYpO2UrPVh0LnBhY2tlZExlbmd0aDtsZXQgcz1vdC51bnBhY2sodCxlLFo2KTtlKz1vdC5wYWNrZWRMZW5ndGg7bGV0IG89dFtlKytdLHI9dFtlKytdLGE9dFtlKytdLGg9dFtlKytdLEE9dFtlXTtyZXR1cm4gbShpKT8oaS5fcmVjdGFuZ2xlPVh0LmNsb25lKG4saS5fcmVjdGFuZ2xlKSxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUocyxpLl9lbGxpcHNvaWQpLGkuX3N1cmZhY2VIZWlnaHQ9cixpLl9yb3RhdGlvbj1hLGkuX2V4dHJ1ZGVkSGVpZ2h0PWgsaS5fb2Zmc2V0QXR0cmlidXRlPUE9PT0tMT92b2lkIDA6QSxpKTooUGYuZ3JhbnVsYXJpdHk9byxQZi5oZWlnaHQ9cixQZi5yb3RhdGlvbj1hLFBmLmV4dHJ1ZGVkSGVpZ2h0PWgsUGYub2Zmc2V0QXR0cmlidXRlPUE9PT0tMT92b2lkIDA6QSxuZXcgSmYoUGYpKX07V2Z0PW5ldyB1dDtKZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9yZWN0YW5nbGUsaT10Ll9lbGxpcHNvaWQsbj1yby5jb21wdXRlT3B0aW9ucyhlLHQuX2dyYW51bGFyaXR5LHQuX3JvdGF0aW9uLDAsQmZ0LFdmdCkscyxvO2lmKEwuZXF1YWxzRXBzaWxvbihlLm5vcnRoLGUuc291dGgsTC5FUFNJTE9OMTApfHxMLmVxdWFsc0Vwc2lsb24oZS5lYXN0LGUud2VzdCxMLkVQU0lMT04xMCkpcmV0dXJuO2xldCByPXQuX3N1cmZhY2VIZWlnaHQsYT10Ll9leHRydWRlZEhlaWdodCxoPSFMLmVxdWFsc0Vwc2lsb24ocixhLDAsTC5FUFNJTE9OMiksQTtpZihoKXtpZihzPUdmdCh0LG4pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IEU9cy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxfPW5ldyBVaW50OEFycmF5KEUpO3QuX29mZnNldEF0dHJpYnV0ZT09PVBlLlRPUD9fPV8uZmlsbCgxLDAsRS8yKTooQT10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1QZS5OT05FPzA6MSxfPV8uZmlsbChBKSkscy5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOl99KX1sZXQgZD1OdC5mcm9tUmVjdGFuZ2xlM0QoZSxpLHIsU2Z0KSxmPU50LmZyb21SZWN0YW5nbGUzRChlLGksYSxWZnQpO289TnQudW5pb24oZCxmKX1lbHNle2lmKHM9XzYodCxuKSxzLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPXVpLnNjYWxlVG9HZW9kZXRpY0hlaWdodChzLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLHIsaSwhMSksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgZD1zLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aDtBPXQuX29mZnNldEF0dHJpYnV0ZT09PVBlLk5PTkU/MDoxO2xldCBmPW5ldyBVaW50OEFycmF5KGQvMykuZmlsbChBKTtzLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Zn0pfW89TnQuZnJvbVJlY3RhbmdsZTNEKGUsaSxyKX1yZXR1cm4gbmV3IHNlKHthdHRyaWJ1dGVzOnMuYXR0cmlidXRlcyxpbmRpY2VzOnMuaW5kaWNlcyxwcmltaXRpdmVUeXBlOm5lLkxJTkVTLGJvdW5kaW5nU3BoZXJlOm8sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtsQj1KZn0pO3ZhciBkQj17fTtIZShkQix7ZGVmYXVsdDooKT0+VWZ0fSk7ZnVuY3Rpb24gRGZ0KHQsZSl7cmV0dXJuIG0oZSkmJih0PWxCLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSx0Ll9yZWN0YW5nbGU9WHQuY2xvbmUodC5fcmVjdGFuZ2xlKSxsQi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgVWZ0LG1CPVMoKCk9PnttdCgpO09lKCk7cG4oKTtJNigpO1VmdD1EZnR9KTtmdW5jdGlvbiBNZnQodCxlLGksbixzLG8scil7bGV0IGE9U24ubnVtYmVyT2ZQb2ludHModCxlLHMpLGgsQT1pLnJlZCxkPWkuZ3JlZW4sZj1pLmJsdWUsRT1pLmFscGhhLF89bi5yZWQsUj1uLmdyZWVuLEk9bi5ibHVlLEM9bi5hbHBoYTtpZihadC5lcXVhbHMoaSxuKSl7Zm9yKGg9MDtoPGE7aCsrKW9bcisrXT1adC5mbG9hdFRvQnl0ZShBKSxvW3IrK109WnQuZmxvYXRUb0J5dGUoZCksb1tyKytdPVp0LmZsb2F0VG9CeXRlKGYpLG9bcisrXT1adC5mbG9hdFRvQnl0ZShFKTtyZXR1cm4gcn1sZXQgTj0oXy1BKS9hLFQ9KFItZCkvYSxiPShJLWYpL2EsRj0oQy1FKS9hLEI9cjtmb3IoaD0wO2g8YTtoKyspb1tCKytdPVp0LmZsb2F0VG9CeXRlKEEraCpOKSxvW0IrK109WnQuZmxvYXRUb0J5dGUoZCtoKlQpLG9bQisrXT1adC5mbG9hdFRvQnl0ZShmK2gqYiksb1tCKytdPVp0LmZsb2F0VG9CeXRlKEUraCpGKTtyZXR1cm4gQn1mdW5jdGlvbiBCUih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnMsaT10LmNvbG9ycyxuPVoodC5jb2xvcnNQZXJWZXJ0ZXgsITEpO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBZKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKGkpJiYobiYmaS5sZW5ndGg8ZS5sZW5ndGh8fCFuJiZpLmxlbmd0aDxlLmxlbmd0aC0xKSl0aHJvdyBuZXcgWSgiY29sb3JzIGhhcyBhbiBpbnZhbGlkIGxlbmd0aC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9jb2xvcnM9aSx0aGlzLl9jb2xvcnNQZXJWZXJ0ZXg9bix0aGlzLl9hcmNUeXBlPVoodC5hcmNUeXBlLHRpLkdFT0RFU0lDKSx0aGlzLl9ncmFudWxhcml0eT1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHRoaXMuX2VsbGlwc29pZD1aKHQuZWxsaXBzb2lkLG90LldHUzg0KSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVTaW1wbGVQb2x5bGluZUdlb21ldHJ5IjtsZXQgcz0xK2UubGVuZ3RoKmwucGFja2VkTGVuZ3RoO3MrPW0oaSk/MStpLmxlbmd0aCpadC5wYWNrZWRMZW5ndGg6MSx0aGlzLnBhY2tlZExlbmd0aD1zK290LnBhY2tlZExlbmd0aCszfXZhciBmZyxFZyxRZnQsZkIscDY9UygoKT0+e0dsKCk7X2koKTtIdCgpO1FuKCk7b2koKTtGdCgpO210KCk7T3QoKTtPZSgpO3lpKCk7amkoKTtFbigpO0RpKCk7X2UoKTtTZigpO1hpKCk7QlIucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7aT1aKGksMCk7bGV0IG4scz10Ll9wb3NpdGlvbnMsbz1zLmxlbmd0aDtmb3IoZVtpKytdPW8sbj0wO248bzsrK24saSs9bC5wYWNrZWRMZW5ndGgpbC5wYWNrKHNbbl0sZSxpKTtsZXQgcj10Ll9jb2xvcnM7Zm9yKG89bShyKT9yLmxlbmd0aDowLGVbaSsrXT1vLG49MDtuPG87KytuLGkrPVp0LnBhY2tlZExlbmd0aCladC5wYWNrKHJbbl0sZSxpKTtyZXR1cm4gb3QucGFjayh0Ll9lbGxpcHNvaWQsZSxpKSxpKz1vdC5wYWNrZWRMZW5ndGgsZVtpKytdPXQuX2NvbG9yc1BlclZlcnRleD8xOjAsZVtpKytdPXQuX2FyY1R5cGUsZVtpXT10Ll9ncmFudWxhcml0eSxlfTtCUi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuLHM9dFtlKytdLG89bmV3IEFycmF5KHMpO2ZvcihuPTA7bjxzOysrbixlKz1sLnBhY2tlZExlbmd0aClvW25dPWwudW5wYWNrKHQsZSk7cz10W2UrK107bGV0IHI9cz4wP25ldyBBcnJheShzKTp2b2lkIDA7Zm9yKG49MDtuPHM7KytuLGUrPVp0LnBhY2tlZExlbmd0aClyW25dPVp0LnVucGFjayh0LGUpO2xldCBhPW90LnVucGFjayh0LGUpO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgaD10W2UrK109PT0xLEE9dFtlKytdLGQ9dFtlXTtyZXR1cm4gbShpKT8oaS5fcG9zaXRpb25zPW8saS5fY29sb3JzPXIsaS5fZWxsaXBzb2lkPWEsaS5fY29sb3JzUGVyVmVydGV4PWgsaS5fYXJjVHlwZT1BLGkuX2dyYW51bGFyaXR5PWQsaSk6bmV3IEJSKHtwb3NpdGlvbnM6byxjb2xvcnM6cixlbGxpcHNvaWQ6YSxjb2xvcnNQZXJWZXJ0ZXg6aCxhcmNUeXBlOkEsZ3JhbnVsYXJpdHk6ZH0pfTtmZz1uZXcgQXJyYXkoMiksRWc9bmV3IEFycmF5KDIpLFFmdD17cG9zaXRpb25zOmZnLGhlaWdodDpFZyxlbGxpcHNvaWQ6dm9pZCAwLG1pbkRpc3RhbmNlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O0JSLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxpPXQuX2NvbG9ycyxuPXQuX2NvbG9yc1BlclZlcnRleCxzPXQuX2FyY1R5cGUsbz10Ll9ncmFudWxhcml0eSxyPXQuX2VsbGlwc29pZCxhPUwuY2hvcmRMZW5ndGgobyxyLm1heGltdW1SYWRpdXMpLGg9bShpKSYmIW4sQSxkPWUubGVuZ3RoLGYsRSxfLFIsST0wO2lmKHM9PT10aS5HRU9ERVNJQ3x8cz09PXRpLlJIVU1CKXtsZXQgRixCLFU7cz09PXRpLkdFT0RFU0lDPyhGPUwuY2hvcmRMZW5ndGgobyxyLm1heGltdW1SYWRpdXMpLEI9U24ubnVtYmVyT2ZQb2ludHMsVT1Tbi5nZW5lcmF0ZUFyYyk6KEY9byxCPVNuLm51bWJlck9mUG9pbnRzUmh1bWJMaW5lLFU9U24uZ2VuZXJhdGVSaHVtYkFyYyk7bGV0IFE9U24uZXh0cmFjdEhlaWdodHMoZSxyKSxNPVFmdDtpZihzPT09dGkuR0VPREVTSUM/TS5taW5EaXN0YW5jZT1hOk0uZ3JhbnVsYXJpdHk9byxNLmVsbGlwc29pZD1yLGgpe2xldCBrPTA7Zm9yKEE9MDtBPGQtMTtBKyspays9QihlW0FdLGVbQSsxXSxGKSsxO2Y9bmV3IEZsb2F0NjRBcnJheShrKjMpLF89bmV3IFVpbnQ4QXJyYXkoayo0KSxNLnBvc2l0aW9ucz1mZyxNLmhlaWdodD1FZztsZXQgeT0wO2ZvcihBPTA7QTxkLTE7KytBKXtmZ1swXT1lW0FdLGZnWzFdPWVbQSsxXSxFZ1swXT1RW0FdLEVnWzFdPVFbQSsxXTtsZXQgYz1VKE0pO2lmKG0oaSkpe2xldCBnPWMubGVuZ3RoLzM7Uj1pW0FdO2ZvcihsZXQgTz0wO088ZzsrK08pX1t5KytdPVp0LmZsb2F0VG9CeXRlKFIucmVkKSxfW3krK109WnQuZmxvYXRUb0J5dGUoUi5ncmVlbiksX1t5KytdPVp0LmZsb2F0VG9CeXRlKFIuYmx1ZSksX1t5KytdPVp0LmZsb2F0VG9CeXRlKFIuYWxwaGEpfWYuc2V0KGMsSSksSSs9Yy5sZW5ndGh9fWVsc2UgaWYoTS5wb3NpdGlvbnM9ZSxNLmhlaWdodD1RLGY9bmV3IEZsb2F0NjRBcnJheShVKE0pKSxtKGkpKXtmb3IoXz1uZXcgVWludDhBcnJheShmLmxlbmd0aC8zKjQpLEE9MDtBPGQtMTsrK0Epe2xldCB5PWVbQV0sYz1lW0ErMV0sZz1pW0FdLE89aVtBKzFdO0k9TWZ0KHksYyxnLE8sYSxfLEkpfWxldCBrPWlbZC0xXTtfW0krK109WnQuZmxvYXRUb0J5dGUoay5yZWQpLF9bSSsrXT1adC5mbG9hdFRvQnl0ZShrLmdyZWVuKSxfW0krK109WnQuZmxvYXRUb0J5dGUoay5ibHVlKSxfW0krK109WnQuZmxvYXRUb0J5dGUoay5hbHBoYSl9fWVsc2V7RT1oP2QqMi0yOmQsZj1uZXcgRmxvYXQ2NEFycmF5KEUqMyksXz1tKGkpP25ldyBVaW50OEFycmF5KEUqNCk6dm9pZCAwO2xldCBGPTAsQj0wO2ZvcihBPTA7QTxkOysrQSl7bGV0IFU9ZVtBXTtpZihoJiZBPjAmJihsLnBhY2soVSxmLEYpLEYrPTMsUj1pW0EtMV0sX1tCKytdPVp0LmZsb2F0VG9CeXRlKFIucmVkKSxfW0IrK109WnQuZmxvYXRUb0J5dGUoUi5ncmVlbiksX1tCKytdPVp0LmZsb2F0VG9CeXRlKFIuYmx1ZSksX1tCKytdPVp0LmZsb2F0VG9CeXRlKFIuYWxwaGEpKSxoJiZBPT09ZC0xKWJyZWFrO2wucGFjayhVLGYsRiksRis9MyxtKGkpJiYoUj1pW0FdLF9bQisrXT1adC5mbG9hdFRvQnl0ZShSLnJlZCksX1tCKytdPVp0LmZsb2F0VG9CeXRlKFIuZ3JlZW4pLF9bQisrXT1adC5mbG9hdFRvQnl0ZShSLmJsdWUpLF9bQisrXT1adC5mbG9hdFRvQnl0ZShSLmFscGhhKSl9fWxldCBDPW5ldyB3ZTtDLnBvc2l0aW9uPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Zn0pLG0oaSkmJihDLmNvbG9yPW5ldyBUdCh7Y29tcG9uZW50RGF0YXR5cGU6QXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsdmFsdWVzOl8sbm9ybWFsaXplOiEwfSkpLEU9Zi5sZW5ndGgvMztsZXQgTj0oRS0xKSoyLFQ9dGUuY3JlYXRlVHlwZWRBcnJheShFLE4pLGI9MDtmb3IoQT0wO0E8RS0xOysrQSlUW2IrK109QSxUW2IrK109QSsxO3JldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6QyxpbmRpY2VzOlQscHJpbWl0aXZlVHlwZTpuZS5MSU5FUyxib3VuZGluZ1NwaGVyZTpOdC5mcm9tUG9pbnRzKGUpfSl9O2ZCPUJSfSk7dmFyIEVCPXt9O0hlKEVCLHtkZWZhdWx0OigpPT5MZnR9KTtmdW5jdGlvbiBrZnQodCxlKXtyZXR1cm4gbShlKSYmKHQ9ZkIudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1vdC5jbG9uZSh0Ll9lbGxpcHNvaWQpLGZCLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBMZnQsX0I9UygoKT0+e210KCk7T2UoKTtwNigpO0xmdD1rZnR9KTtmdW5jdGlvbiBqZih0KXtsZXQgZT1aKHQucmFkaXVzLDEpLG49e3JhZGlpOm5ldyBsKGUsZSxlKSxzdGFja1BhcnRpdGlvbnM6dC5zdGFja1BhcnRpdGlvbnMsc2xpY2VQYXJ0aXRpb25zOnQuc2xpY2VQYXJ0aXRpb25zLHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdH07dGhpcy5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IE5yKG4pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVNwaGVyZUdlb21ldHJ5In12YXIgeWZ0LEhjLFJCLHU2PVMoKCk9PntIdCgpO2FlKCk7RnQoKTttdCgpO3NnKCk7THMoKTtqZi5wYWNrZWRMZW5ndGg9TnIucGFja2VkTGVuZ3RoO2pmLnBhY2s9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBwLnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxOci5wYWNrKHQuX2VsbGlwc29pZEdlb21ldHJ5LGUsaSl9O3lmdD1uZXcgTnIsSGM9e3JhZGl1czp2b2lkIDAscmFkaWk6bmV3IGwsdmVydGV4Rm9ybWF0Om5ldyBTdCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDB9O2pmLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7bGV0IG49TnIudW5wYWNrKHQsZSx5ZnQpO3JldHVybiBIYy52ZXJ0ZXhGb3JtYXQ9U3QuY2xvbmUobi5fdmVydGV4Rm9ybWF0LEhjLnZlcnRleEZvcm1hdCksSGMuc3RhY2tQYXJ0aXRpb25zPW4uX3N0YWNrUGFydGl0aW9ucyxIYy5zbGljZVBhcnRpdGlvbnM9bi5fc2xpY2VQYXJ0aXRpb25zLG0oaSk/KGwuY2xvbmUobi5fcmFkaWksSGMucmFkaWkpLGkuX2VsbGlwc29pZEdlb21ldHJ5PW5ldyBOcihIYyksaSk6KEhjLnJhZGl1cz1uLl9yYWRpaS54LG5ldyBqZihIYykpfTtqZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtyZXR1cm4gTnIuY3JlYXRlR2VvbWV0cnkodC5fZWxsaXBzb2lkR2VvbWV0cnkpfTtSQj1qZn0pO3ZhciBaQj17fTtIZShaQix7ZGVmYXVsdDooKT0+eGZ0fSk7ZnVuY3Rpb24gd2Z0KHQsZSl7cmV0dXJuIG0oZSkmJih0PVJCLnVucGFjayh0LGUpKSxSQi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgeGZ0LElCPVMoKCk9PnttdCgpO3U2KCk7eGZ0PXdmdH0pO2Z1bmN0aW9uIEhmKHQpe2xldCBlPVoodC5yYWRpdXMsMSksbj17cmFkaWk6bmV3IGwoZSxlLGUpLHN0YWNrUGFydGl0aW9uczp0LnN0YWNrUGFydGl0aW9ucyxzbGljZVBhcnRpdGlvbnM6dC5zbGljZVBhcnRpdGlvbnMsc3ViZGl2aXNpb25zOnQuc3ViZGl2aXNpb25zfTt0aGlzLl9lbGxpcHNvaWRHZW9tZXRyeT1uZXcgamEobiksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlU3BoZXJlT3V0bGluZUdlb21ldHJ5In12YXIgUGZ0LHBkLHBCLEM2PVMoKCk9PntIdCgpO2FlKCk7RnQoKTttdCgpO1pPKCk7SGYucGFja2VkTGVuZ3RoPWphLnBhY2tlZExlbmd0aDtIZi5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gcC50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksamEucGFjayh0Ll9lbGxpcHNvaWRHZW9tZXRyeSxlLGkpfTtQZnQ9bmV3IGphLHBkPXtyYWRpdXM6dm9pZCAwLHJhZGlpOm5ldyBsLHN0YWNrUGFydGl0aW9uczp2b2lkIDAsc2xpY2VQYXJ0aXRpb25zOnZvaWQgMCxzdWJkaXZpc2lvbnM6dm9pZCAwfTtIZi51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2xldCBuPWphLnVucGFjayh0LGUsUGZ0KTtyZXR1cm4gcGQuc3RhY2tQYXJ0aXRpb25zPW4uX3N0YWNrUGFydGl0aW9ucyxwZC5zbGljZVBhcnRpdGlvbnM9bi5fc2xpY2VQYXJ0aXRpb25zLHBkLnN1YmRpdmlzaW9ucz1uLl9zdWJkaXZpc2lvbnMsbShpKT8obC5jbG9uZShuLl9yYWRpaSxwZC5yYWRpaSksaS5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IGphKHBkKSxpKToocGQucmFkaXVzPW4uX3JhZGlpLngsbmV3IEhmKHBkKSl9O0hmLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBqYS5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNvaWRHZW9tZXRyeSl9O3BCPUhmfSk7dmFyIHVCPXt9O0hlKHVCLHtkZWZhdWx0OigpPT5qZnR9KTtmdW5jdGlvbiBKZnQodCxlKXtyZXR1cm4gbShlKSYmKHQ9cEIudW5wYWNrKHQsZSkpLHBCLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBqZnQsQ0I9UygoKT0+e210KCk7QzYoKTtqZnQ9SmZ0fSk7dmFyIGdCPXt9O0hlKGdCLHtkZWZhdWx0OigpPT5kRXR9KTtmdW5jdGlvbiBLZnQodCxlLGksbixzLG8scil7bGV0IGE9dC5sZW5ndGgsaD1uZXcgRmxvYXQ2NEFycmF5KGEqMyk7Zm9yKGxldCBBPTA7QTxhOysrQSl7bGV0IGQ9dFtBXSxmPWVbQV0sRT1pW0FdLF89TC5sZXJwKG4ud2VzdCxuLmVhc3QsZC9HUiksUj1MLmxlcnAobi5zb3V0aCxuLm5vcnRoLGYvR1IpLEk9TC5sZXJwKHMsbyxFL0dSKSxDPXV0LmZyb21SYWRpYW5zKF8sUixJLHZmdCksTj1yLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEMsemZ0KTtsLnBhY2soTixoLEEqMyl9cmV0dXJuIGh9ZnVuY3Rpb24gWGZ0KHQpe2xldCBlPXQubGVuZ3RoLGk9bmV3IFVpbnQzMkFycmF5KGUrMSksbj0wO2ZvcihsZXQgcz0wO3M8ZTsrK3MpaVtzXT1uLG4rPXRbc107cmV0dXJuIGlbZV09bixpfWZ1bmN0aW9uIHRFdCh0LGUsaSxuKXtsZXQgcz1uLmxlbmd0aCxvPXQubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkobyksYT1xZnQsaD0kZnQsQT0wO2ZvcihsZXQgZj0wO2Y8cztmKyspe2xldCBFPW5bZl0sXz1FO2ZvcihsZXQgUj0xO1I8RTtSKyspe2xldCBJPUErUixDPUktMTtoLmxvbmdpdHVkZT10W0ldLGgubGF0aXR1ZGU9ZVtJXSxhLmxvbmdpdHVkZT10W0NdLGEubGF0aXR1ZGU9ZVtDXSx1dC5lcXVhbHMoaCxhKSYmKF8tLSxyW0NdPTEpfW5bZl09XyxBKz1FfWxldCBkPTA7Zm9yKGxldCBmPTA7ZjxvO2YrKylyW2ZdIT09MSYmKHRbZF09dFtmXSxlW2RdPWVbZl0saVtkXT1pW2ZdLGQrKyl9ZnVuY3Rpb24gYjYodCl7bGV0IGU9dCo4LGk9ZSozLG49ZSo0O3RoaXMuc3RhcnRFbGxpcHNvaWROb3JtYWxzPW5ldyBGbG9hdDMyQXJyYXkoaSksdGhpcy5lbmRFbGxpcHNvaWROb3JtYWxzPW5ldyBGbG9hdDMyQXJyYXkoaSksdGhpcy5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMuc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzPW5ldyBGbG9hdDMyQXJyYXkobiksdGhpcy5lbmRQb3NpdGlvbkFuZEhlaWdodHM9bmV3IEZsb2F0MzJBcnJheShuKSx0aGlzLmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzPW5ldyBGbG9hdDMyQXJyYXkobiksdGhpcy52ZXJ0ZXhCYXRjaElkcz1uZXcgVWludDE2QXJyYXkoZSksdGhpcy5pbmRpY2VzPXRlLmNyZWF0ZVR5cGVkQXJyYXkoZSwzNip0KSx0aGlzLnZlYzNPZmZzZXQ9MCx0aGlzLnZlYzRPZmZzZXQ9MCx0aGlzLmJhdGNoSWRPZmZzZXQ9MCx0aGlzLmluZGV4T2Zmc2V0PTAsdGhpcy52b2x1bWVTdGFydEluZGV4PTB9ZnVuY3Rpb24gVDYodCxlLGksbixzKXtsZXQgbz1sLnN1YnRyYWN0KGksZSxlRXQpLHI9bC5zdWJ0cmFjdChlLHQsZzYpO3JldHVybiBsLm5vcm1hbGl6ZShvLG8pLGwubm9ybWFsaXplKHIsciksbC5kb3QobyxyKTxIZnQmJihyPWwubXVsdGlwbHlCeVNjYWxhcihyLC0xLGc2KSksbC5hZGQobyxyLHMpLGwuZXF1YWxzKHMsbC5aRVJPKSYmKHM9bC5zdWJ0cmFjdCh0LGUpKSxsLmNyb3NzKHMsbixzKSxsLmNyb3NzKG4scyxzKSxsLm5vcm1hbGl6ZShzLHMpLHN9ZnVuY3Rpb24gbEV0KHQsZSl7bGV0IGk9bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKSxuPW5ldyBVaW50MTZBcnJheSh0LndpZHRocykscz1uZXcgVWludDMyQXJyYXkodC5jb3VudHMpLG89bmV3IFVpbnQxNkFycmF5KHQuYmF0Y2hJZHMpLHI9ckV0LGE9YUV0LGg9QUV0LEE9bmV3IEZsb2F0NjRBcnJheSh0LnBhY2tlZEJ1ZmZlciksZD0wLGY9QVtkKytdLEU9QVtkKytdO1h0LnVucGFjayhBLGQsciksZCs9WHQucGFja2VkTGVuZ3RoLG90LnVucGFjayhBLGQsYSksZCs9b3QucGFja2VkTGVuZ3RoLGwudW5wYWNrKEEsZCxoKTtsZXQgXyxSPWkubGVuZ3RoLzMsST1pLnN1YmFycmF5KDAsUiksQz1pLnN1YmFycmF5KFIsMipSKSxOPWkuc3ViYXJyYXkoMipSLDMqUik7WWkuemlnWmFnRGVsdGFEZWNvZGUoSSxDLE4pLHRFdChJLEMsTixzKTtsZXQgVD1zLmxlbmd0aCxiPTA7Zm9yKF89MDtfPFQ7XysrKXtsZXQgYz1zW19dO2IrPWMtMX1sZXQgRj1uZXcgYjYoYiksQj1LZnQoSSxDLE4scixmLEUsYSxoKTtSPUkubGVuZ3RoO2xldCBVPW5ldyBGbG9hdDMyQXJyYXkoUiozKTtmb3IoXz0wO188UjsrK18pVVtfKjNdPUJbXyozXS1oLngsVVtfKjMrMV09QltfKjMrMV0taC55LFVbXyozKzJdPUJbXyozKzJdLWguejtsZXQgUT0wLE09MDtmb3IoXz0wO188VDtfKyspe2xldCBjPXNbX10tMSxnPW5bX10qLjUsTz1vW19dLEQ9UTtmb3IobGV0IHc9MDt3PGM7dysrKXtsZXQgeD1sLnVucGFjayhVLFEsaEV0KSxIPWwudW5wYWNrKFUsUSszLGNFdCksaj1OW01dLFg9TltNKzFdO2o9TC5sZXJwKGYsRSxqL0dSKSxYPUwubGVycChmLEUsWC9HUiksTSsrO2xldCB0dD1fZyxHPVJnO2lmKHc9PT0wKXtsZXQgSXQ9RCtjKjMsZ3Q9bC51bnBhY2soVSxJdCxfZyk7aWYobC5lcXVhbHMoZ3QseCkpbC51bnBhY2soVSxJdC0zLHR0KTtlbHNle2xldCBZdD1sLnN1YnRyYWN0KHgsSCxfZyk7dHQ9bC5hZGQoWXQseCxfZyl9fWVsc2UgbC51bnBhY2soVSxRLTMsdHQpO2lmKHc9PT1jLTEpe2xldCBJdD1sLnVucGFjayhVLEQsUmcpO2lmKGwuZXF1YWxzKEl0LEgpKWwudW5wYWNrKFUsRCszLEcpO2Vsc2V7bGV0IGd0PWwuc3VidHJhY3QoSCx4LFJnKTtHPWwuYWRkKGd0LEgsUmcpfX1lbHNlIGwudW5wYWNrKFUsUSs2LEcpO0YuYWRkVm9sdW1lKHR0LHgsSCxHLGosWCxnLE8saCxhKSxRKz0zfVErPTMsTSsrfWxldCBrPUYuaW5kaWNlcztlLnB1c2goRi5zdGFydEVsbGlwc29pZE5vcm1hbHMuYnVmZmVyKSxlLnB1c2goRi5lbmRFbGxpcHNvaWROb3JtYWxzLmJ1ZmZlciksZS5wdXNoKEYuc3RhcnRQb3NpdGlvbkFuZEhlaWdodHMuYnVmZmVyKSxlLnB1c2goRi5zdGFydEZhY2VOb3JtYWxBbmRWZXJ0ZXhDb3JuZXJJZHMuYnVmZmVyKSxlLnB1c2goRi5lbmRQb3NpdGlvbkFuZEhlaWdodHMuYnVmZmVyKSxlLnB1c2goRi5lbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRocy5idWZmZXIpLGUucHVzaChGLnZlcnRleEJhdGNoSWRzLmJ1ZmZlciksZS5wdXNoKGsuYnVmZmVyKTtsZXQgeT17aW5kZXhEYXRhdHlwZTprLkJZVEVTX1BFUl9FTEVNRU5UPT09Mj90ZS5VTlNJR05FRF9TSE9SVDp0ZS5VTlNJR05FRF9JTlQsc3RhcnRFbGxpcHNvaWROb3JtYWxzOkYuc3RhcnRFbGxpcHNvaWROb3JtYWxzLmJ1ZmZlcixlbmRFbGxpcHNvaWROb3JtYWxzOkYuZW5kRWxsaXBzb2lkTm9ybWFscy5idWZmZXIsc3RhcnRQb3NpdGlvbkFuZEhlaWdodHM6Ri5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIsc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzOkYuc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzLmJ1ZmZlcixlbmRQb3NpdGlvbkFuZEhlaWdodHM6Ri5lbmRQb3NpdGlvbkFuZEhlaWdodHMuYnVmZmVyLGVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzOkYuZW5kRmFjZU5vcm1hbEFuZEhhbGZXaWR0aHMuYnVmZmVyLHZlcnRleEJhdGNoSWRzOkYudmVydGV4QmF0Y2hJZHMuYnVmZmVyLGluZGljZXM6ay5idWZmZXJ9O2lmKHQua2VlcERlY29kZWRQb3NpdGlvbnMpe2xldCBjPVhmdChzKTtlLnB1c2goQi5idWZmZXIsYy5idWZmZXIpLHk9ZXMoeSx7ZGVjb2RlZFBvc2l0aW9uczpCLmJ1ZmZlcixkZWNvZGVkUG9zaXRpb25PZmZzZXRzOmMuYnVmZmVyfSl9cmV0dXJuIHl9dmFyIEdSLEhmdCx2ZnQsemZ0LHFmdCwkZnQsZzYsZUV0LFk2LE42LEY2LGlFdCxuRXQsc0V0LG9FdCxyRXQsYUV0LEFFdCxfZyxoRXQsY0V0LFJnLGRFdCxUQj1TKCgpPT57b2goKTtIdCgpO3JpKCk7S0EoKTtPZSgpO0RpKCk7X2UoKTtwbigpO05zKCk7R1I9MzI3NjcsSGZ0PU1hdGguY29zKEwudG9SYWRpYW5zKDE1MCkpLHZmdD1uZXcgdXQsemZ0PW5ldyBsO3FmdD1uZXcgdXQsJGZ0PW5ldyB1dDtnNj1uZXcgbCxlRXQ9bmV3IGw7WTY9WzAsMiw2LDAsNiw0LDAsMSwzLDAsMywyLDAsNCw1LDAsNSwxLDUsMywxLDUsNywzLDcsNSw0LDcsNCw2LDcsNiwyLDcsMiwzXSxONj1ZNi5sZW5ndGgsRjY9bmV3IGwsaUV0PW5ldyBsLG5FdD1uZXcgbCxzRXQ9bmV3IGwsb0V0PW5ldyBsO2I2LnByb3RvdHlwZS5hZGRWb2x1bWU9ZnVuY3Rpb24odCxlLGksbixzLG8scixhLGgsQSl7bGV0IGQ9bC5hZGQoZSxoLEY2KSxmPUEuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGQsaUV0KTtkPWwuYWRkKGksaCxGNik7bGV0IEU9QS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZCxzRXQpLF89VDYodCxlLGksZixuRXQpLFI9VDYobixpLGUsRSxvRXQpLEk9dGhpcy5zdGFydEVsbGlwc29pZE5vcm1hbHMsQz10aGlzLmVuZEVsbGlwc29pZE5vcm1hbHMsTj10aGlzLnN0YXJ0UG9zaXRpb25BbmRIZWlnaHRzLFQ9dGhpcy5zdGFydEZhY2VOb3JtYWxBbmRWZXJ0ZXhDb3JuZXJJZHMsYj10aGlzLmVuZFBvc2l0aW9uQW5kSGVpZ2h0cyxGPXRoaXMuZW5kRmFjZU5vcm1hbEFuZEhhbGZXaWR0aHMsQj10aGlzLnZlcnRleEJhdGNoSWRzLFU9dGhpcy5iYXRjaElkT2Zmc2V0LFE9dGhpcy52ZWMzT2Zmc2V0LE09dGhpcy52ZWM0T2Zmc2V0LGs7Zm9yKGs9MDtrPDg7aysrKWwucGFjayhmLEksUSksbC5wYWNrKEUsQyxRKSxsLnBhY2soZSxOLE0pLE5bTSszXT1zLGwucGFjayhpLGIsTSksYltNKzNdPW8sbC5wYWNrKF8sVCxNKSxUW00rM109ayxsLnBhY2soUixGLE0pLEZbTSszXT1yLEJbVSsrXT1hLFErPTMsTSs9NDt0aGlzLmJhdGNoSWRPZmZzZXQ9VSx0aGlzLnZlYzNPZmZzZXQ9USx0aGlzLnZlYzRPZmZzZXQ9TTtsZXQgeT10aGlzLmluZGljZXMsYz10aGlzLnZvbHVtZVN0YXJ0SW5kZXgsZz10aGlzLmluZGV4T2Zmc2V0O2ZvcihrPTA7azxONjtrKyspeVtnK2tdPVk2W2tdK2M7dGhpcy52b2x1bWVTdGFydEluZGV4Kz04LHRoaXMuaW5kZXhPZmZzZXQrPU42fTtyRXQ9bmV3IFh0LGFFdD1uZXcgb3QsQUV0PW5ldyBsLF9nPW5ldyBsLGhFdD1uZXcgbCxjRXQ9bmV3IGwsUmc9bmV3IGw7ZEV0PVdpKGxFdCl9KTtmdW5jdGlvbiBtRXQodCl7dGhpcy5vZmZzZXQ9dC5vZmZzZXQsdGhpcy5jb3VudD10LmNvdW50LHRoaXMuY29sb3I9dC5jb2xvcix0aGlzLmJhdGNoSWRzPXQuYmF0Y2hJZHN9dmFyIFY2LFM2PVMoKCk9PntWNj1tRXR9KTt2YXIgTkI9e307SGUoTkIse2RlZmF1bHQ6KCk9PmJFdH0pO2Z1bmN0aW9uIFpFdCh0LGUpe2xldCBpPWUqZkV0LG49bC51bnBhY2sodCxpLElnKTtpKz1sLnBhY2tlZExlbmd0aDtsZXQgcz1hdC51bnBhY2sodCxpLG5hLm1vZGVsTWF0cml4KTthdC5tdWx0aXBseUJ5U2NhbGUocyxuLHMpO2xldCBvPW5hLmJvdW5kaW5nVm9sdW1lO3JldHVybiBsLmNsb25lKGwuWkVSTyxvLmNlbnRlciksby5yYWRpdXM9TWF0aC5zcXJ0KDMpLG5hfWZ1bmN0aW9uIElFdCh0LGUpe2xldCBpPWUqRUV0LG49dFtpKytdLHM9dFtpKytdLG89bC5mcm9tRWxlbWVudHMobixuLHMsSWcpLHI9YXQudW5wYWNrKHQsaSxuYS5tb2RlbE1hdHJpeCk7YXQubXVsdGlwbHlCeVNjYWxlKHIsbyxyKTtsZXQgYT1uYS5ib3VuZGluZ1ZvbHVtZTtyZXR1cm4gbC5jbG9uZShsLlpFUk8sYS5jZW50ZXIpLGEucmFkaXVzPU1hdGguc3FydCgyKSxuYX1mdW5jdGlvbiBwRXQodCxlKXtsZXQgaT1lKl9FdCxuPWwudW5wYWNrKHQsaSxJZyk7aSs9bC5wYWNrZWRMZW5ndGg7bGV0IHM9YXQudW5wYWNrKHQsaSxuYS5tb2RlbE1hdHJpeCk7YXQubXVsdGlwbHlCeVNjYWxlKHMsbixzKTtsZXQgbz1uYS5ib3VuZGluZ1ZvbHVtZTtyZXR1cm4gbC5jbG9uZShsLlpFUk8sby5jZW50ZXIpLG8ucmFkaXVzPTEsbmF9ZnVuY3Rpb24gdUV0KHQsZSl7bGV0IGk9ZSpSRXQsbj10W2krK10scz1sLnVucGFjayh0LGksSWcpLG89YXQuZnJvbVRyYW5zbGF0aW9uKHMsbmEubW9kZWxNYXRyaXgpO2F0Lm11bHRpcGx5QnlVbmlmb3JtU2NhbGUobyxuLG8pO2xldCByPW5hLmJvdW5kaW5nVm9sdW1lO3JldHVybiBsLmNsb25lKGwuWkVSTyxyLmNlbnRlciksci5yYWRpdXM9MSxuYX1mdW5jdGlvbiBaZyh0LGUsaSxuLHMpe2lmKCFtKGUpKXJldHVybjtsZXQgbz1pLmxlbmd0aCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsYT1uLmluZGljZXMsaD10LnBvc2l0aW9ucyxBPXQudmVydGV4QmF0Y2hJZHMsZD10LmluZGljZXMsZj10LmJhdGNoSWRzLEU9dC5iYXRjaFRhYmxlQ29sb3JzLF89dC5iYXRjaGVkSW5kaWNlcyxSPXQuaW5kZXhPZmZzZXRzLEk9dC5pbmRleENvdW50cyxDPXQuYm91bmRpbmdWb2x1bWVzLE49dC5tb2RlbE1hdHJpeCxUPXQuY2VudGVyLGI9dC5wb3NpdGlvbk9mZnNldCxGPXQuYmF0Y2hJZEluZGV4LEI9dC5pbmRleE9mZnNldCxVPXQuYmF0Y2hlZEluZGljZXNPZmZzZXQ7Zm9yKGxldCBRPTA7UTxvOysrUSl7bGV0IE09cyhlLFEpLGs9TS5tb2RlbE1hdHJpeDthdC5tdWx0aXBseShOLGssayk7bGV0IHk9aVtRXSxjPXIubGVuZ3RoO2ZvcihsZXQgRD0wO0Q8YztEKz0zKXtsZXQgdz1sLnVucGFjayhyLEQsQ0V0KTthdC5tdWx0aXBseUJ5UG9pbnQoayx3LHcpLGwuc3VidHJhY3QodyxULHcpLGwucGFjayh3LGgsYiozK0QpLEFbRisrXT15fWxldCBnPWEubGVuZ3RoO2ZvcihsZXQgRD0wO0Q8ZzsrK0QpZFtCK0RdPWFbRF0rYjtsZXQgTz1RK1U7X1tPXT1uZXcgVjYoe29mZnNldDpCLGNvdW50OmcsY29sb3I6WnQuZnJvbVJnYmEoRVt5XSksYmF0Y2hJZHM6W3ldfSksZltPXT15LFJbT109QixJW09dPWcsQ1tPXT1OdC50cmFuc2Zvcm0oTS5ib3VuZGluZ1ZvbHVtZSxrKSxiKz1jLzMsQis9Z310LnBvc2l0aW9uT2Zmc2V0PWIsdC5iYXRjaElkSW5kZXg9Rix0LmluZGV4T2Zmc2V0PUIsdC5iYXRjaGVkSW5kaWNlc09mZnNldCs9b31mdW5jdGlvbiBnRXQodCl7bGV0IGU9bmV3IEZsb2F0NjRBcnJheSh0KSxpPTA7bC51bnBhY2soZSxpLE82KSxpKz1sLnBhY2tlZExlbmd0aCxhdC51bnBhY2soZSxpLEI2KX1mdW5jdGlvbiBURXQodCl7bGV0IGU9dC5sZW5ndGgsaT0wO2ZvcihsZXQgbj0wO248ZTsrK24paSs9WnQucGFja2VkTGVuZ3RoKzMrdFtuXS5iYXRjaElkcy5sZW5ndGg7cmV0dXJuIGl9ZnVuY3Rpb24gTkV0KHQsZSxpKXtsZXQgbj1pLmxlbmd0aCxzPTIrbipOdC5wYWNrZWRMZW5ndGgrMStURXQoZSksbz1uZXcgRmxvYXQ2NEFycmF5KHMpLHI9MDtvW3IrK109dCxvW3IrK109bjtmb3IobGV0IGg9MDtoPG47KytoKU50LnBhY2soaVtoXSxvLHIpLHIrPU50LnBhY2tlZExlbmd0aDtsZXQgYT1lLmxlbmd0aDtvW3IrK109YTtmb3IobGV0IGg9MDtoPGE7KytoKXtsZXQgQT1lW2hdO1p0LnBhY2soQS5jb2xvcixvLHIpLHIrPVp0LnBhY2tlZExlbmd0aCxvW3IrK109QS5vZmZzZXQsb1tyKytdPUEuY291bnQ7bGV0IGQ9QS5iYXRjaElkcyxmPWQubGVuZ3RoO29bcisrXT1mO2ZvcihsZXQgRT0wO0U8ZjsrK0Upb1tyKytdPWRbRV19cmV0dXJuIG99ZnVuY3Rpb24gRkV0KHQsZSl7bGV0IGk9bSh0LmJveGVzKT9uZXcgRmxvYXQzMkFycmF5KHQuYm94ZXMpOnZvaWQgMCxuPW0odC5ib3hCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuYm94QmF0Y2hJZHMpOnZvaWQgMCxzPW0odC5jeWxpbmRlcnMpP25ldyBGbG9hdDMyQXJyYXkodC5jeWxpbmRlcnMpOnZvaWQgMCxvPW0odC5jeWxpbmRlckJhdGNoSWRzKT9uZXcgVWludDE2QXJyYXkodC5jeWxpbmRlckJhdGNoSWRzKTp2b2lkIDAscj1tKHQuZWxsaXBzb2lkcyk/bmV3IEZsb2F0MzJBcnJheSh0LmVsbGlwc29pZHMpOnZvaWQgMCxhPW0odC5lbGxpcHNvaWRCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuZWxsaXBzb2lkQmF0Y2hJZHMpOnZvaWQgMCxoPW0odC5zcGhlcmVzKT9uZXcgRmxvYXQzMkFycmF5KHQuc3BoZXJlcyk6dm9pZCAwLEE9bSh0LnNwaGVyZUJhdGNoSWRzKT9uZXcgVWludDE2QXJyYXkodC5zcGhlcmVCYXRjaElkcyk6dm9pZCAwLGQ9bShpKT9uLmxlbmd0aDowLGY9bShzKT9vLmxlbmd0aDowLEU9bShyKT9hLmxlbmd0aDowLF89bShoKT9BLmxlbmd0aDowLFI9Y1IuZ2V0VW5pdEJveCgpLEk9Z1IuZ2V0VW5pdEN5bGluZGVyKCksQz1Oci5nZXRVbml0RWxsaXBzb2lkKCksTj1SLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLFQ9SS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxiPUMuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsRj1OLmxlbmd0aCpkO0YrPVQubGVuZ3RoKmYsRis9Yi5sZW5ndGgqKEUrXyk7bGV0IEI9Ui5pbmRpY2VzLFU9SS5pbmRpY2VzLFE9Qy5pbmRpY2VzLE09Qi5sZW5ndGgqZDtNKz1VLmxlbmd0aCpmLE0rPVEubGVuZ3RoKihFK18pO2xldCBrPW5ldyBGbG9hdDMyQXJyYXkoRikseT1uZXcgVWludDE2QXJyYXkoRi8zKSxjPXRlLmNyZWF0ZVR5cGVkQXJyYXkoRi8zLE0pLGc9ZCtmK0UrXyxPPW5ldyBVaW50MTZBcnJheShnKSxEPW5ldyBBcnJheShnKSx3PW5ldyBVaW50MzJBcnJheShnKSx4PW5ldyBVaW50MzJBcnJheShnKSxIPW5ldyBBcnJheShnKTtnRXQodC5wYWNrZWRCdWZmZXIpO2xldCBqPXtiYXRjaFRhYmxlQ29sb3JzOm5ldyBVaW50MzJBcnJheSh0LmJhdGNoVGFibGVDb2xvcnMpLHBvc2l0aW9uczprLHZlcnRleEJhdGNoSWRzOnksaW5kaWNlczpjLGJhdGNoSWRzOk8sYmF0Y2hlZEluZGljZXM6RCxpbmRleE9mZnNldHM6dyxpbmRleENvdW50czp4LGJvdW5kaW5nVm9sdW1lczpILHBvc2l0aW9uT2Zmc2V0OjAsYmF0Y2hJZEluZGV4OjAsaW5kZXhPZmZzZXQ6MCxiYXRjaGVkSW5kaWNlc09mZnNldDowLG1vZGVsTWF0cml4OkI2LGNlbnRlcjpPNn07WmcoaixpLG4sUixaRXQpLFpnKGoscyxvLEksSUV0KSxaZyhqLHIsYSxDLHBFdCksWmcoaixoLEEsQyx1RXQpO2xldCBYPU5FdChjLkJZVEVTX1BFUl9FTEVNRU5ULEQsSCk7cmV0dXJuIGUucHVzaChrLmJ1ZmZlcix5LmJ1ZmZlcixjLmJ1ZmZlciksZS5wdXNoKE8uYnVmZmVyLHcuYnVmZmVyLHguYnVmZmVyKSxlLnB1c2goWC5idWZmZXIpLHtwb3NpdGlvbnM6ay5idWZmZXIsdmVydGV4QmF0Y2hJZHM6eS5idWZmZXIsaW5kaWNlczpjLmJ1ZmZlcixpbmRleE9mZnNldHM6dy5idWZmZXIsaW5kZXhDb3VudHM6eC5idWZmZXIsYmF0Y2hJZHM6Ty5idWZmZXIscGFja2VkQnVmZmVyOlguYnVmZmVyfX12YXIgSWcsZkV0LEVFdCxfRXQsUkV0LG5hLENFdCxPNixCNixiRXQsRkI9UygoKT0+e19pKCk7c1MoKTtIdCgpO1FuKCk7c08oKTttdCgpO3NnKCk7RGkoKTtiaSgpO1M2KCk7TnMoKTtJZz1uZXcgbCxmRXQ9YXQucGFja2VkTGVuZ3RoK2wucGFja2VkTGVuZ3RoLEVFdD1hdC5wYWNrZWRMZW5ndGgrMixfRXQ9YXQucGFja2VkTGVuZ3RoK2wucGFja2VkTGVuZ3RoLFJFdD1sLnBhY2tlZExlbmd0aCsxLG5hPXttb2RlbE1hdHJpeDpuZXcgYXQsYm91bmRpbmdWb2x1bWU6bmV3IE50fTtDRXQ9bmV3IGw7TzY9bmV3IGwsQjY9bmV3IGF0O2JFdD1XaShGRXQpfSk7dmFyIFlCPXt9O0hlKFlCLHtkZWZhdWx0OigpPT5CRXR9KTtmdW5jdGlvbiBTRXQodCl7dD1uZXcgRmxvYXQ2NEFycmF5KHQpO2xldCBlPTA7cGcubWluPXRbZSsrXSxwZy5tYXg9dFtlKytdLFh0LnVucGFjayh0LGUsRzYpLGUrPVh0LnBhY2tlZExlbmd0aCxvdC51bnBhY2sodCxlLFc2KX1mdW5jdGlvbiBPRXQodCxlKXtsZXQgaT1uZXcgVWludDE2QXJyYXkodC5wb3NpdGlvbnMpO1NFdCh0LnBhY2tlZEJ1ZmZlcik7bGV0IG49RzYscz1XNixvPXBnLm1pbixyPXBnLm1heCxhPWkubGVuZ3RoLzMsaD1pLnN1YmFycmF5KDAsYSksQT1pLnN1YmFycmF5KGEsMiphKSxkPWkuc3ViYXJyYXkoMiphLDMqYSk7WWkuemlnWmFnRGVsdGFEZWNvZGUoaCxBLGQpO2xldCBmPW5ldyBGbG9hdDY0QXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgRT0wO0U8YTsrK0Upe2xldCBfPWhbRV0sUj1BW0VdLEk9ZFtFXSxDPUwubGVycChuLndlc3Qsbi5lYXN0LF8vYkIpLE49TC5sZXJwKG4uc291dGgsbi5ub3J0aCxSL2JCKSxUPUwubGVycChvLHIsSS9iQiksYj11dC5mcm9tUmFkaWFucyhDLE4sVCxZRXQpLEY9cy5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihiLFZFdCk7bC5wYWNrKEYsZixFKjMpfXJldHVybiBlLnB1c2goZi5idWZmZXIpLHtwb3NpdGlvbnM6Zi5idWZmZXJ9fXZhciBiQixZRXQsVkV0LEc2LFc2LHBnLEJFdCxWQj1TKCgpPT57b2goKTtIdCgpO3JpKCk7T2UoKTtfZSgpO3BuKCk7TnMoKTtiQj0zMjc2NyxZRXQ9bmV3IHV0LFZFdD1uZXcgbCxHNj1uZXcgWHQsVzY9bmV3IG90LHBnPXttaW46dm9pZCAwLG1heDp2b2lkIDB9O0JFdD1XaShPRXQpfSk7dmFyIFNCPXt9O0hlKFNCLHtkZWZhdWx0OigpPT53RXR9KTtmdW5jdGlvbiBHRXQodCl7bGV0IGU9bmV3IEZsb2F0NjRBcnJheSh0KSxpPTA7dmYuaW5kZXhCeXRlc1BlckVsZW1lbnQ9ZVtpKytdLHZmLm1pbj1lW2krK10sdmYubWF4PWVbaSsrXSxsLnVucGFjayhlLGksUTYpLGkrPWwucGFja2VkTGVuZ3RoLG90LnVucGFjayhlLGksazYpLGkrPW90LnBhY2tlZExlbmd0aCxYdC51bnBhY2soZSxpLEw2KX1mdW5jdGlvbiBXRXQodCl7bGV0IGU9dC5sZW5ndGgsaT0wO2ZvcihsZXQgbj0wO248ZTsrK24paSs9WnQucGFja2VkTGVuZ3RoKzMrdFtuXS5iYXRjaElkcy5sZW5ndGg7cmV0dXJuIGl9ZnVuY3Rpb24gREV0KHQsZSxpKXtsZXQgbj1lLmxlbmd0aCxzPTIrbip6cy5wYWNrZWRMZW5ndGgrMStXRXQoaSksbz1uZXcgRmxvYXQ2NEFycmF5KHMpLHI9MDtvW3IrK109dCxvW3IrK109bjtmb3IobGV0IGg9MDtoPG47KytoKXpzLnBhY2soZVtoXSxvLHIpLHIrPXpzLnBhY2tlZExlbmd0aDtsZXQgYT1pLmxlbmd0aDtvW3IrK109YTtmb3IobGV0IGg9MDtoPGE7KytoKXtsZXQgQT1pW2hdO1p0LnBhY2soQS5jb2xvcixvLHIpLHIrPVp0LnBhY2tlZExlbmd0aCxvW3IrK109QS5vZmZzZXQsb1tyKytdPUEuY291bnQ7bGV0IGQ9QS5iYXRjaElkcyxmPWQubGVuZ3RoO29bcisrXT1mO2ZvcihsZXQgRT0wO0U8ZjsrK0Upb1tyKytdPWRbRV19cmV0dXJuIG99ZnVuY3Rpb24geUV0KHQsZSl7R0V0KHQucGFja2VkQnVmZmVyKTtsZXQgaTt2Zi5pbmRleEJ5dGVzUGVyRWxlbWVudD09PTI/aT1uZXcgVWludDE2QXJyYXkodC5pbmRpY2VzKTppPW5ldyBVaW50MzJBcnJheSh0LmluZGljZXMpO2xldCBzPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbz1uZXcgVWludDMyQXJyYXkodC5jb3VudHMpLHI9bmV3IFVpbnQzMkFycmF5KHQuaW5kZXhDb3VudHMpLGE9bmV3IFVpbnQzMkFycmF5KHQuYmF0Y2hJZHMpLGg9bmV3IFVpbnQzMkFycmF5KHQuYmF0Y2hUYWJsZUNvbG9ycyksQT1uZXcgQXJyYXkoby5sZW5ndGgpLGQ9UTYsZj1rNixFPUw2LF89dmYubWluLFI9dmYubWF4LEk9dC5taW5pbXVtSGVpZ2h0cyxDPXQubWF4aW11bUhlaWdodHM7bShJKSYmbShDKSYmKEk9bmV3IEZsb2F0MzJBcnJheShJKSxDPW5ldyBGbG9hdDMyQXJyYXkoQykpO2xldCBOLFQsYixGPXMubGVuZ3RoLzIsQj1zLnN1YmFycmF5KDAsRiksVT1zLnN1YmFycmF5KEYsMipGKTtZaS56aWdaYWdEZWx0YURlY29kZShCLFUpO2xldCBRPW5ldyBGbG9hdDY0QXJyYXkoRiozKTtmb3IoTj0wO048RjsrK04pe2xldCBDdD1CW05dLHp0PVVbTl0sa3Q9TC5sZXJwKEUud2VzdCxFLmVhc3QsQ3QvRDYpLEp0PUwubGVycChFLnNvdXRoLEUubm9ydGgsenQvRDYpLFd0PXV0LmZyb21SYWRpYW5zKGt0LEp0LDAsTTYpLGJ0PWYuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oV3QsVTYpO2wucGFjayhidCxRLE4qMyl9bGV0IE09by5sZW5ndGgsaz1uZXcgQXJyYXkoTSkseT1uZXcgQXJyYXkoTSksYz0wLGc9MDtmb3IoTj0wO048TTsrK04pa1tOXT1jLHlbTl09ZyxjKz1vW05dLGcrPXJbTl07bGV0IE89bmV3IEZsb2F0MzJBcnJheShGKjMqMiksRD1uZXcgVWludDE2QXJyYXkoRioyKSx3PW5ldyBVaW50MzJBcnJheSh5Lmxlbmd0aCkseD1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgpLEg9W10saj17fTtmb3IoTj0wO048TTsrK04pYj1oW05dLG0oaltiXSk/KGpbYl0ucG9zaXRpb25MZW5ndGgrPW9bTl0saltiXS5pbmRleExlbmd0aCs9cltOXSxqW2JdLmJhdGNoSWRzLnB1c2goTikpOmpbYl09e3Bvc2l0aW9uTGVuZ3RoOm9bTl0saW5kZXhMZW5ndGg6cltOXSxvZmZzZXQ6MCxpbmRleE9mZnNldDowLGJhdGNoSWRzOltOXX07bGV0IFgsdHQ9MCxHPTA7Zm9yKGIgaW4gailpZihqLmhhc093blByb3BlcnR5KGIpKXtYPWpbYl0sWC5vZmZzZXQ9dHQsWC5pbmRleE9mZnNldD1HO2xldCBDdD1YLnBvc2l0aW9uTGVuZ3RoKjIsenQ9WC5pbmRleExlbmd0aCoyK1gucG9zaXRpb25MZW5ndGgqNjt0dCs9Q3QsRys9enQsWC5pbmRleExlbmd0aD16dH1sZXQgSXQ9W107Zm9yKGIgaW4gailqLmhhc093blByb3BlcnR5KGIpJiYoWD1qW2JdLEl0LnB1c2goe2NvbG9yOlp0LmZyb21SZ2JhKHBhcnNlSW50KGIpKSxvZmZzZXQ6WC5pbmRleE9mZnNldCxjb3VudDpYLmluZGV4TGVuZ3RoLGJhdGNoSWRzOlguYmF0Y2hJZHN9KSk7Zm9yKE49MDtOPE07KytOKXtiPWhbTl0sWD1qW2JdO2xldCBDdD1YLm9mZnNldCx6dD1DdCozLGt0PUN0LEp0PWtbTl0sV3Q9b1tOXSxidD1hW05dLGVlPV8sY2U9UjttKEkpJiZtKEMpJiYoZWU9SVtOXSxjZT1DW05dKTtsZXQgamU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFNlPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxVZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTWU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihUPTA7VDxXdDsrK1Qpe2xldCB6ZT1sLnVucGFjayhRLEp0KjMrVCozLFU2KTtmLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoemUsemUpO2xldCBCZT1mLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHplLE02KSxNaT1CZS5sYXRpdHVkZSxSaT1CZS5sb25naXR1ZGU7amU9TWF0aC5taW4oTWksamUpLFNlPU1hdGgubWF4KE1pLFNlKSxVZT1NYXRoLm1pbihSaSxVZSksTWU9TWF0aC5tYXgoUmksTWUpO2xldCBzaT1mLmdlb2RldGljU3VyZmFjZU5vcm1hbCh6ZSxVRXQpLHFlPWwubXVsdGlwbHlCeVNjYWxhcihzaSxlZSxNRXQpLE9pPWwuYWRkKHplLHFlLFFFdCk7cWU9bC5tdWx0aXBseUJ5U2NhbGFyKHNpLGNlLHFlKTtsZXQgZ249bC5hZGQoemUscWUsa0V0KTtsLnN1YnRyYWN0KGduLGQsZ24pLGwuc3VidHJhY3QoT2ksZCxPaSksbC5wYWNrKGduLE8senQpLGwucGFjayhPaSxPLHp0KzMpLERba3RdPWJ0LERba3QrMV09YnQsenQrPTYsa3QrPTJ9RT1MRXQsRS53ZXN0PVVlLEUuZWFzdD1NZSxFLnNvdXRoPWplLEUubm9ydGg9U2UsQVtOXT16cy5mcm9tUmVjdGFuZ2xlKEUsXyxSLGYpO2xldCBDZT1YLmluZGV4T2Zmc2V0LEZlPXlbTl0sbmk9cltOXTtmb3Iod1tOXT1DZSxUPTA7VDxuaTtUKz0zKXtsZXQgemU9aVtGZStUXS1KdCxCZT1pW0ZlK1QrMV0tSnQsTWk9aVtGZStUKzJdLUp0O0hbQ2UrK109emUqMitDdCxIW0NlKytdPUJlKjIrQ3QsSFtDZSsrXT1NaSoyK0N0LEhbQ2UrK109TWkqMisxK0N0LEhbQ2UrK109QmUqMisxK0N0LEhbQ2UrK109emUqMisxK0N0fWZvcihUPTA7VDxXdDsrK1Qpe2xldCB6ZT1ULEJlPShUKzEpJVd0O0hbQ2UrK109emUqMisxK0N0LEhbQ2UrK109QmUqMitDdCxIW0NlKytdPXplKjIrQ3QsSFtDZSsrXT16ZSoyKzErQ3QsSFtDZSsrXT1CZSoyKzErQ3QsSFtDZSsrXT1CZSoyK0N0fVgub2Zmc2V0Kz1XdCoyLFguaW5kZXhPZmZzZXQ9Q2UseFtOXT1DZS13W05dfUg9dGUuY3JlYXRlVHlwZWRBcnJheShPLmxlbmd0aC8zLEgpO2xldCBndD1JdC5sZW5ndGg7Zm9yKGxldCBDdD0wO0N0PGd0OysrQ3Qpe2xldCB6dD1JdFtDdF0uYmF0Y2hJZHMsa3Q9MCxKdD16dC5sZW5ndGg7Zm9yKGxldCBXdD0wO1d0PEp0OysrV3Qpa3QrPXhbenRbV3RdXTtJdFtDdF0uY291bnQ9a3R9bGV0IFl0PUguQllURVNfUEVSX0VMRU1FTlQ9PT0yP3RlLlVOU0lHTkVEX1NIT1JUOnRlLlVOU0lHTkVEX0lOVCxVdD1ERXQoWXQsQSxJdCk7cmV0dXJuIGUucHVzaChPLmJ1ZmZlcixILmJ1ZmZlcix3LmJ1ZmZlcix4LmJ1ZmZlcixELmJ1ZmZlcixVdC5idWZmZXIpLHtwb3NpdGlvbnM6Ty5idWZmZXIsaW5kaWNlczpILmJ1ZmZlcixpbmRleE9mZnNldHM6dy5idWZmZXIsaW5kZXhDb3VudHM6eC5idWZmZXIsYmF0Y2hJZHM6RC5idWZmZXIscGFja2VkQnVmZmVyOlV0LmJ1ZmZlcn19dmFyIFE2LGs2LEw2LHZmLEQ2LFU2LFVFdCxNRXQsUUV0LGtFdCxNNixMRXQsd0V0LE9CPVMoKCk9PntvaCgpO0h0KCk7cmkoKTtRbigpO210KCk7T2UoKTtEaSgpO19lKCk7SmwoKTtwbigpO05zKCk7UTY9bmV3IGwsazY9bmV3IG90LEw2PW5ldyBYdCx2Zj17bWluOnZvaWQgMCxtYXg6dm9pZCAwLGluZGV4Qnl0ZXNQZXJFbGVtZW50OnZvaWQgMH07RDY9MzI3NjcsVTY9bmV3IGwsVUV0PW5ldyBsLE1FdD1uZXcgbCxRRXQ9bmV3IGwsa0V0PW5ldyBsLE02PW5ldyB1dCxMRXQ9bmV3IFh0O3dFdD1XaSh5RXQpfSk7ZnVuY3Rpb24gSkV0KHQsZSxpLG4scyl7bGV0IG89dC5sZW5ndGgvMyxyPXQuc3ViYXJyYXkoMCxvKSxhPXQuc3ViYXJyYXkobywyKm8pLGg9dC5zdWJhcnJheSgyKm8sMypvKTtZaS56aWdaYWdEZWx0YURlY29kZShyLGEsaCk7bGV0IEE9bmV3IEZsb2F0NjRBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBkPTA7ZDxvOysrZCl7bGV0IGY9cltkXSxFPWFbZF0sXz1oW2RdLFI9TC5sZXJwKGUud2VzdCxlLmVhc3QsZi9CQiksST1MLmxlcnAoZS5zb3V0aCxlLm5vcnRoLEUvQkIpLEM9TC5sZXJwKGksbixfL0JCKSxOPXV0LmZyb21SYWRpYW5zKFIsSSxDLHhFdCksVD1zLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKE4sUEV0KTtsLnBhY2soVCxBLGQqMyl9cmV0dXJuIEF9dmFyIEJCLHhFdCxQRXQseTYsdzY9UygoKT0+e29oKCk7SHQoKTtyaSgpO19lKCk7QkI9MzI3NjcseEV0PW5ldyB1dCxQRXQ9bmV3IGw7eTY9SkV0fSk7dmFyIEdCPXt9O0hlKEdCLHtkZWZhdWx0OigpPT5LRXR9KTtmdW5jdGlvbiBqRXQodCl7dD1uZXcgRmxvYXQ2NEFycmF5KHQpO2xldCBlPTA7dWcubWluPXRbZSsrXSx1Zy5tYXg9dFtlKytdLFh0LnVucGFjayh0LGUsSDYpLGUrPVh0LnBhY2tlZExlbmd0aCxvdC51bnBhY2sodCxlLHY2KSxlKz1vdC5wYWNrZWRMZW5ndGgsbC51bnBhY2sodCxlLHo2KX1mdW5jdGlvbiBIRXQodCl7bGV0IGU9dC5sZW5ndGgsaT1uZXcgVWludDMyQXJyYXkoZSsxKSxuPTA7Zm9yKGxldCBzPTA7czxlOysrcylpW3NdPW4sbis9dFtzXTtyZXR1cm4gaVtlXT1uLGl9ZnVuY3Rpb24gekV0KHQsZSl7bGV0IGk9bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKSxuPW5ldyBVaW50MTZBcnJheSh0LndpZHRocykscz1uZXcgVWludDMyQXJyYXkodC5jb3VudHMpLG89bmV3IFVpbnQxNkFycmF5KHQuYmF0Y2hJZHMpO2pFdCh0LnBhY2tlZEJ1ZmZlcik7bGV0IHI9SDYsYT12NixoPXo2LEE9dWcubWluLGQ9dWcubWF4LGY9eTYoaSxyLEEsZCxhKSxFPWYubGVuZ3RoLzMsXz1FKjQtNCxSPW5ldyBGbG9hdDMyQXJyYXkoXyozKSxJPW5ldyBGbG9hdDMyQXJyYXkoXyozKSxDPW5ldyBGbG9hdDMyQXJyYXkoXyozKSxOPW5ldyBGbG9hdDMyQXJyYXkoXyoyKSxUPW5ldyBVaW50MTZBcnJheShfKSxiPTAsRj0wLEI9MCxVLFE9MCxNPXMubGVuZ3RoO2ZvcihVPTA7VTxNOysrVSl7bGV0IE89c1tVXSxEPW5bVV0sdz1vW1VdO2ZvcihsZXQgeD0wO3g8TzsrK3gpe2xldCBIO2lmKHg9PT0wKXtsZXQgSXQ9bC51bnBhY2soZixRKjMseDYpLGd0PWwudW5wYWNrKGYsKFErMSkqMyxQNik7SD1sLnN1YnRyYWN0KEl0LGd0LEo2KSxsLmFkZChJdCxILEgpfWVsc2UgSD1sLnVucGFjayhmLChRK3gtMSkqMyxKNik7bGV0IGo9bC51bnBhY2soZiwoUSt4KSozLHZFdCksWDtpZih4PT09Ty0xKXtsZXQgSXQ9bC51bnBhY2soZiwoUStPLTEpKjMseDYpLGd0PWwudW5wYWNrKGYsKFErTy0yKSozLFA2KTtYPWwuc3VidHJhY3QoSXQsZ3QsajYpLGwuYWRkKEl0LFgsWCl9ZWxzZSBYPWwudW5wYWNrKGYsKFEreCsxKSozLGo2KTtsLnN1YnRyYWN0KEgsaCxIKSxsLnN1YnRyYWN0KGosaCxqKSxsLnN1YnRyYWN0KFgsaCxYKTtsZXQgdHQ9eD09PTA/MjowLEc9eD09PU8tMT8yOjQ7Zm9yKGxldCBJdD10dDtJdDxHOysrSXQpe2wucGFjayhqLFIsYiksbC5wYWNrKEgsSSxiKSxsLnBhY2soWCxDLGIpLGIrPTM7bGV0IGd0PUl0LTI8MD8tMToxO05bRisrXT0yKihJdCUyKS0xLE5bRisrXT1ndCpELFRbQisrXT13fX1RKz1PfWxldCBrPXRlLmNyZWF0ZVR5cGVkQXJyYXkoXyxFKjYtNikseT0wLGM9MDtmb3IoTT1FLTEsVT0wO1U8TTsrK1Upa1tjKytdPXksa1tjKytdPXkrMixrW2MrK109eSsxLGtbYysrXT15KzEsa1tjKytdPXkrMixrW2MrK109eSszLHkrPTQ7ZS5wdXNoKFIuYnVmZmVyLEkuYnVmZmVyLEMuYnVmZmVyKSxlLnB1c2goTi5idWZmZXIsVC5idWZmZXIsay5idWZmZXIpO2xldCBnPXtpbmRleERhdGF0eXBlOmsuQllURVNfUEVSX0VMRU1FTlQ9PT0yP3RlLlVOU0lHTkVEX1NIT1JUOnRlLlVOU0lHTkVEX0lOVCxjdXJyZW50UG9zaXRpb25zOlIuYnVmZmVyLHByZXZpb3VzUG9zaXRpb25zOkkuYnVmZmVyLG5leHRQb3NpdGlvbnM6Qy5idWZmZXIsZXhwYW5kQW5kV2lkdGg6Ti5idWZmZXIsYmF0Y2hJZHM6VC5idWZmZXIsaW5kaWNlczprLmJ1ZmZlcn07aWYodC5rZWVwRGVjb2RlZFBvc2l0aW9ucyl7bGV0IE89SEV0KHMpO2UucHVzaChmLmJ1ZmZlcixPLmJ1ZmZlciksZz1lcyhnLHtkZWNvZGVkUG9zaXRpb25zOmYuYnVmZmVyLGRlY29kZWRQb3NpdGlvbk9mZnNldHM6Ty5idWZmZXJ9KX1yZXR1cm4gZ312YXIgSDYsdjYsejYsdWcseDYsUDYsSjYsdkV0LGo2LEtFdCxXQj1TKCgpPT57SHQoKTtLQSgpO3c2KCk7T2UoKTtEaSgpO3BuKCk7TnMoKTtINj1uZXcgWHQsdjY9bmV3IG90LHo2PW5ldyBsLHVnPXttaW46dm9pZCAwLG1heDp2b2lkIDB9O3g2PW5ldyBsLFA2PW5ldyBsLEo2PW5ldyBsLHZFdD1uZXcgbCxqNj1uZXcgbDtLRXQ9V2koekV0KX0pO3ZhciBYRXQsc2EsSzY9UygoKT0+e1hFdD17Tk9ORTowLEJJVFMxMjoxfSxzYT1PYmplY3QuZnJlZXplKFhFdCl9KTtmdW5jdGlvbiBibyh0LGUsaSxuLHMsbyxyLGEsaCxBKXtsZXQgZD1zYS5OT05FLGYsRTtpZihtKGUpJiZtKGkpJiZtKG4pJiZtKHMpKXtsZXQgXz1lLm1pbmltdW0sUj1lLm1heGltdW0sST1sLnN1YnRyYWN0KFIsXyxxRXQpLEM9bi1pO01hdGgubWF4KGwubWF4aW11bUNvbXBvbmVudChJKSxDKTx0X3QtMT9kPXNhLkJJVFMxMjpkPXNhLk5PTkUsZj1hdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24ocyxuZXcgYXQpO2xldCBUPWwubmVnYXRlKF8sdWQpO2F0Lm11bHRpcGx5KGF0LmZyb21UcmFuc2xhdGlvbihULENnKSxmLGYpO2xldCBiPXVkO2IueD0xL0kueCxiLnk9MS9JLnksYi56PTEvSS56LGF0Lm11bHRpcGx5KGF0LmZyb21TY2FsZShiLENnKSxmLGYpLEU9YXQuY2xvbmUocyksYXQuc2V0VHJhbnNsYXRpb24oRSxsLlpFUk8sRSkscz1hdC5jbG9uZShzLG5ldyBhdCk7bGV0IEY9YXQuZnJvbVRyYW5zbGF0aW9uKF8sQ2cpLEI9YXQuZnJvbVNjYWxlKEksJEV0KSxVPWF0Lm11bHRpcGx5KEYsQixDZyk7YXQubXVsdGlwbHkocyxVLHMpLGF0Lm11bHRpcGx5KEUsVSxFKX10aGlzLnF1YW50aXphdGlvbj1kLHRoaXMubWluaW11bUhlaWdodD1pLHRoaXMubWF4aW11bUhlaWdodD1uLHRoaXMuY2VudGVyPWwuY2xvbmUodCksdGhpcy50b1NjYWxlZEVOVT1mLHRoaXMuZnJvbVNjYWxlZEVOVT1zLHRoaXMubWF0cml4PUUsdGhpcy5oYXNWZXJ0ZXhOb3JtYWxzPW8sdGhpcy5oYXNXZWJNZXJjYXRvclQ9WihyLCExKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHM9WihhLCExKSx0aGlzLmV4YWdnZXJhdGlvbj1aKGgsMSksdGhpcy5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodD1aKEEsMCksdGhpcy5zdHJpZGU9MCx0aGlzLl9vZmZzZXRHZW9kZXRpY1N1cmZhY2VOb3JtYWw9MCx0aGlzLl9vZmZzZXRWZXJ0ZXhOb3JtYWw9MCx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCl9dmFyIHVkLHFFdCxvYSxDZywkRXQsdF90LGVfdCxYNixnZyxUZyx2YyxXUj1TKCgpPT57b2goKTtYZSgpO0h0KCk7b2koKTtGdCgpO210KCk7X2UoKTtiaSgpO2hGKCk7SzYoKTt1ZD1uZXcgbCxxRXQ9bmV3IGwsb2E9bmV3IG50LENnPW5ldyBhdCwkRXQ9bmV3IGF0LHRfdD1NYXRoLnBvdygyLDEyKTtiby5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIsYSl7bGV0IGg9bi54LEE9bi55O2lmKHRoaXMucXVhbnRpemF0aW9uPT09c2EuQklUUzEyKXtpPWF0Lm11bHRpcGx5QnlQb2ludCh0aGlzLnRvU2NhbGVkRU5VLGksdWQpLGkueD1MLmNsYW1wKGkueCwwLDEpLGkueT1MLmNsYW1wKGkueSwwLDEpLGkuej1MLmNsYW1wKGkueiwwLDEpO2xldCBkPXRoaXMubWF4aW11bUhlaWdodC10aGlzLm1pbmltdW1IZWlnaHQsZj1MLmNsYW1wKChzLXRoaXMubWluaW11bUhlaWdodCkvZCwwLDEpO250LmZyb21FbGVtZW50cyhpLngsaS55LG9hKTtsZXQgRT1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhvYSk7bnQuZnJvbUVsZW1lbnRzKGkueixmLG9hKTtsZXQgXz1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhvYSk7bnQuZnJvbUVsZW1lbnRzKGgsQSxvYSk7bGV0IFI9WWkuY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMob2EpO2lmKHRbZSsrXT1FLHRbZSsrXT1fLHRbZSsrXT1SLHRoaXMuaGFzV2ViTWVyY2F0b3JUKXtudC5mcm9tRWxlbWVudHMociwwLG9hKTtsZXQgST1ZaS5jb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyhvYSk7dFtlKytdPUl9fWVsc2UgbC5zdWJ0cmFjdChpLHRoaXMuY2VudGVyLHVkKSx0W2UrK109dWQueCx0W2UrK109dWQueSx0W2UrK109dWQueix0W2UrK109cyx0W2UrK109aCx0W2UrK109QSx0aGlzLmhhc1dlYk1lcmNhdG9yVCYmKHRbZSsrXT1yKTtyZXR1cm4gdGhpcy5oYXNWZXJ0ZXhOb3JtYWxzJiYodFtlKytdPVlpLm9jdFBhY2tGbG9hdChvKSksdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzJiYodFtlKytdPWEueCx0W2UrK109YS55LHRbZSsrXT1hLnopLGV9O2VfdD1uZXcgbCxYNj1uZXcgbDtiby5wcm90b3R5cGUuYWRkR2VvZGV0aWNTdXJmYWNlTm9ybWFscz1mdW5jdGlvbih0LGUsaSl7aWYodGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzKXJldHVybjtsZXQgbj10aGlzLnN0cmlkZSxzPXQubGVuZ3RoL247dGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPSEwLHRoaXMuX2NhbGN1bGF0ZVN0cmlkZUFuZE9mZnNldHMoKTtsZXQgbz10aGlzLnN0cmlkZTtmb3IobGV0IHI9MDtyPHM7cisrKXtmb3IobGV0IGQ9MDtkPG47ZCsrKXtsZXQgZj1yKm4rZCxFPXIqbytkO2VbRV09dFtmXX1sZXQgYT10aGlzLmRlY29kZVBvc2l0aW9uKGUscixlX3QpLGg9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoYSxYNiksQT1yKm8rdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsO2VbQV09aC54LGVbQSsxXT1oLnksZVtBKzJdPWguen19O2JvLnByb3RvdHlwZS5yZW1vdmVHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscylyZXR1cm47bGV0IGk9dGhpcy5zdHJpZGUsbj10Lmxlbmd0aC9pO3RoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz0hMSx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCk7bGV0IHM9dGhpcy5zdHJpZGU7Zm9yKGxldCBvPTA7bzxuO28rKylmb3IobGV0IHI9MDtyPHM7cisrKXtsZXQgYT1vKmkrcixoPW8qcytyO2VbaF09dFthXX19O2JvLnByb3RvdHlwZS5kZWNvZGVQb3NpdGlvbj1mdW5jdGlvbih0LGUsaSl7aWYobShpKXx8KGk9bmV3IGwpLGUqPXRoaXMuc3RyaWRlLHRoaXMucXVhbnRpemF0aW9uPT09c2EuQklUUzEyKXtsZXQgbj1ZaS5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZV0sb2EpO2kueD1uLngsaS55PW4ueTtsZXQgcz1ZaS5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZSsxXSxvYSk7cmV0dXJuIGkuej1zLngsYXQubXVsdGlwbHlCeVBvaW50KHRoaXMuZnJvbVNjYWxlZEVOVSxpLGkpfXJldHVybiBpLng9dFtlXSxpLnk9dFtlKzFdLGkuej10W2UrMl0sbC5hZGQoaSx0aGlzLmNlbnRlcixpKX07Ym8ucHJvdG90eXBlLmdldEV4YWdnZXJhdGVkUG9zaXRpb249ZnVuY3Rpb24odCxlLGkpe2k9dGhpcy5kZWNvZGVQb3NpdGlvbih0LGUsaSk7bGV0IG49dGhpcy5leGFnZ2VyYXRpb24scz10aGlzLmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0O2lmKG4hPT0xJiZ0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMpe2xldCByPXRoaXMuZGVjb2RlR2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsZSxYNiksYT10aGlzLmRlY29kZUhlaWdodCh0LGUpLGg9QV8uZ2V0SGVpZ2h0KGEsbixzKS1hO2kueCs9ci54KmgsaS55Kz1yLnkqaCxpLnorPXIueipofXJldHVybiBpfTtiby5wcm90b3R5cGUuZGVjb2RlVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbShpKXx8KGk9bmV3IG50KSxlKj10aGlzLnN0cmlkZSx0aGlzLnF1YW50aXphdGlvbj09PXNhLkJJVFMxMj9ZaS5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZSsyXSxpKTpudC5mcm9tRWxlbWVudHModFtlKzRdLHRbZSs1XSxpKX07Ym8ucHJvdG90eXBlLmRlY29kZUhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBlKj10aGlzLnN0cmlkZSx0aGlzLnF1YW50aXphdGlvbj09PXNhLkJJVFMxMj9ZaS5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZSsxXSxvYSkueSoodGhpcy5tYXhpbXVtSGVpZ2h0LXRoaXMubWluaW11bUhlaWdodCkrdGhpcy5taW5pbXVtSGVpZ2h0OnRbZSszXX07Ym8ucHJvdG90eXBlLmRlY29kZVdlYk1lcmNhdG9yVD1mdW5jdGlvbih0LGUpe3JldHVybiBlKj10aGlzLnN0cmlkZSx0aGlzLnF1YW50aXphdGlvbj09PXNhLkJJVFMxMj9ZaS5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZSszXSxvYSkueDp0W2UrNl19O2JvLnByb3RvdHlwZS5nZXRPY3RFbmNvZGVkTm9ybWFsPWZ1bmN0aW9uKHQsZSxpKXtlPWUqdGhpcy5zdHJpZGUrdGhpcy5fb2Zmc2V0VmVydGV4Tm9ybWFsO2xldCBuPXRbZV0vMjU2LHM9TWF0aC5mbG9vcihuKSxvPShuLXMpKjI1NjtyZXR1cm4gbnQuZnJvbUVsZW1lbnRzKHMsbyxpKX07Ym8ucHJvdG90eXBlLmRlY29kZUdlb2RldGljU3VyZmFjZU5vcm1hbD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIGU9ZSp0aGlzLnN0cmlkZSt0aGlzLl9vZmZzZXRHZW9kZXRpY1N1cmZhY2VOb3JtYWwsaS54PXRbZV0saS55PXRbZSsxXSxpLno9dFtlKzJdLGl9O2JvLnByb3RvdHlwZS5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cz1mdW5jdGlvbigpe2xldCB0PTA7c3dpdGNoKHRoaXMucXVhbnRpemF0aW9uKXtjYXNlIHNhLkJJVFMxMjp0Kz0zO2JyZWFrO2RlZmF1bHQ6dCs9Nn10aGlzLmhhc1dlYk1lcmNhdG9yVCYmKHQrPTEpLHRoaXMuaGFzVmVydGV4Tm9ybWFscyYmKHRoaXMuX29mZnNldFZlcnRleE5vcm1hbD10LHQrPTEpLHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscyYmKHRoaXMuX29mZnNldEdlb2RldGljU3VyZmFjZU5vcm1hbD10LHQrPTMpLHRoaXMuc3RyaWRlPXR9O2dnPXtwb3NpdGlvbjNEQW5kSGVpZ2h0OjAsdGV4dHVyZUNvb3JkQW5kRW5jb2RlZE5vcm1hbHM6MSxnZW9kZXRpY1N1cmZhY2VOb3JtYWw6Mn0sVGc9e2NvbXByZXNzZWQwOjAsY29tcHJlc3NlZDE6MSxnZW9kZXRpY1N1cmZhY2VOb3JtYWw6Mn07Ym8ucHJvdG90eXBlLmdldEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7bGV0IGU9QXQuRkxPQVQsaT1BdC5nZXRTaXplSW5CeXRlcyhlKSxuPXRoaXMuc3RyaWRlKmkscz0wLG89W107ZnVuY3Rpb24gcihhLGgpe28ucHVzaCh7aW5kZXg6YSx2ZXJ0ZXhCdWZmZXI6dCxjb21wb25lbnREYXRhdHlwZTplLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6aCxvZmZzZXRJbkJ5dGVzOnMsc3RyaWRlSW5CeXRlczpufSkscys9aCppfWlmKHRoaXMucXVhbnRpemF0aW9uPT09c2EuTk9ORSl7cihnZy5wb3NpdGlvbjNEQW5kSGVpZ2h0LDQpO2xldCBhPTI7YSs9dGhpcy5oYXNXZWJNZXJjYXRvclQ/MTowLGErPXRoaXMuaGFzVmVydGV4Tm9ybWFscz8xOjAscihnZy50ZXh0dXJlQ29vcmRBbmRFbmNvZGVkTm9ybWFscyxhKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJnIoZ2cuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsLDMpfWVsc2V7bGV0IGE9dGhpcy5oYXNXZWJNZXJjYXRvclR8fHRoaXMuaGFzVmVydGV4Tm9ybWFscyxoPXRoaXMuaGFzV2ViTWVyY2F0b3JUJiZ0aGlzLmhhc1ZlcnRleE5vcm1hbHM7cihUZy5jb21wcmVzc2VkMCxhPzQ6MyksaCYmcihUZy5jb21wcmVzc2VkMSwxKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJnIoVGcuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsLDMpfXJldHVybiBvfTtiby5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVhbnRpemF0aW9uPT09c2EuTk9ORT9nZzpUZ307Ym8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpfHwoZT1uZXcgYm8pLGUucXVhbnRpemF0aW9uPXQucXVhbnRpemF0aW9uLGUubWluaW11bUhlaWdodD10Lm1pbmltdW1IZWlnaHQsZS5tYXhpbXVtSGVpZ2h0PXQubWF4aW11bUhlaWdodCxlLmNlbnRlcj1sLmNsb25lKHQuY2VudGVyKSxlLnRvU2NhbGVkRU5VPWF0LmNsb25lKHQudG9TY2FsZWRFTlUpLGUuZnJvbVNjYWxlZEVOVT1hdC5jbG9uZSh0LmZyb21TY2FsZWRFTlUpLGUubWF0cml4PWF0LmNsb25lKHQubWF0cml4KSxlLmhhc1ZlcnRleE5vcm1hbHM9dC5oYXNWZXJ0ZXhOb3JtYWxzLGUuaGFzV2ViTWVyY2F0b3JUPXQuaGFzV2ViTWVyY2F0b3JULGUuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz10Lmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMsZS5leGFnZ2VyYXRpb249dC5leGFnZ2VyYXRpb24sZS5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodD10LmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0LGUuX2NhbGN1bGF0ZVN0cmlkZUFuZE9mZnNldHMoKSxlfTt2Yz1ib30pO3ZhciBVQj17fTtIZShVQix7ZGVmYXVsdDooKT0+aF90fSk7ZnVuY3Rpb24gRFIodCxlLGkpe2k9WihpLEwpO2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgcz0wO3M8bjsrK3MpaWYoaS5lcXVhbHNFcHNpbG9uKHRbc10sZSxMLkVQU0lMT04xMikpcmV0dXJuIHM7cmV0dXJuLTF9ZnVuY3Rpb24gc190KHQsZSl7dC5lbGxpcHNvaWQ9b3QuY2xvbmUodC5lbGxpcHNvaWQpLHQucmVjdGFuZ2xlPVh0LmNsb25lKHQucmVjdGFuZ2xlKTtsZXQgaT1BX3QodC5idWZmZXIsdC5yZWxhdGl2ZVRvQ2VudGVyLHQuZWxsaXBzb2lkLHQucmVjdGFuZ2xlLHQubmF0aXZlUmVjdGFuZ2xlLHQuZXhhZ2dlcmF0aW9uLHQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsdC5za2lydEhlaWdodCx0LmluY2x1ZGVXZWJNZXJjYXRvclQsdC5uZWdhdGl2ZUFsdGl0dWRlRXhwb25lbnRCaWFzLHQubmVnYXRpdmVFbGV2YXRpb25UaHJlc2hvbGQpLG49aS52ZXJ0aWNlcztlLnB1c2gobi5idWZmZXIpO2xldCBzPWkuaW5kaWNlcztyZXR1cm4gZS5wdXNoKHMuYnVmZmVyKSx7dmVydGljZXM6bi5idWZmZXIsaW5kaWNlczpzLmJ1ZmZlcixudW1iZXJPZkF0dHJpYnV0ZXM6aS5lbmNvZGluZy5zdHJpZGUsbWluaW11bUhlaWdodDppLm1pbmltdW1IZWlnaHQsbWF4aW11bUhlaWdodDppLm1heGltdW1IZWlnaHQsYm91bmRpbmdTcGhlcmUzRDppLmJvdW5kaW5nU3BoZXJlM0Qsb3JpZW50ZWRCb3VuZGluZ0JveDppLm9yaWVudGVkQm91bmRpbmdCb3gsb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6aS5vY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZSxlbmNvZGluZzppLmVuY29kaW5nLHZlcnRleENvdW50V2l0aG91dFNraXJ0czppLnZlcnRleENvdW50V2l0aG91dFNraXJ0cyxpbmRleENvdW50V2l0aG91dFNraXJ0czppLmluZGV4Q291bnRXaXRob3V0U2tpcnRzLHdlc3RJbmRpY2VzU291dGhUb05vcnRoOmkud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsc291dGhJbmRpY2VzRWFzdFRvV2VzdDppLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsZWFzdEluZGljZXNOb3J0aFRvU291dGg6aS5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxub3J0aEluZGljZXNXZXN0VG9FYXN0Omkubm9ydGhJbmRpY2VzV2VzdFRvRWFzdH19ZnVuY3Rpb24gQV90KHQsZSxpLG4scyxvLHIsYSxoLEEsZCl7bGV0IGYsRSxfLFIsSSxDO20obik/KGY9bi53ZXN0LEU9bi5zb3V0aCxfPW4uZWFzdCxSPW4ubm9ydGgsST1uLndpZHRoLEM9bi5oZWlnaHQpOihmPUwudG9SYWRpYW5zKHMud2VzdCksRT1MLnRvUmFkaWFucyhzLnNvdXRoKSxfPUwudG9SYWRpYW5zKHMuZWFzdCksUj1MLnRvUmFkaWFucyhzLm5vcnRoKSxJPUwudG9SYWRpYW5zKG4ud2lkdGgpLEM9TC50b1JhZGlhbnMobi5oZWlnaHQpKTtsZXQgTj1bRSxSXSxUPVtmLF9dLGI9SW4uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUoZSxpKSxGPWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihiLGFfdCksQixVO2gmJihCPWtzLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoRSksVT0xLyhrcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKFIpLUIpKTtsZXQgTT1vIT09MSxrPW5ldyBEYXRhVmlldyh0KSx5PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxjPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxnPW9fdDtnLng9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGcueT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksZy56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgTz1yX3Q7Ty54PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxPLnk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLE8uej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IEQ9MCx3PTAseD0wLEgsajtmb3Ioaj0wO2o8NDsrK2ope2xldCBEZT1EO0g9ay5nZXRVaW50MzIoRGUsITApLERlKz1EQjtsZXQgWWU9TC50b1JhZGlhbnMoay5nZXRGbG9hdDY0KERlLCEwKSoxODApO0RlKz1DZCxEUihULFllKT09PS0xJiZULnB1c2goWWUpO2xldCBHaT1MLnRvUmFkaWFucyhrLmdldEZsb2F0NjQoRGUsITApKjE4MCk7RGUrPUNkLERSKE4sR2kpPT09LTEmJk4ucHVzaChHaSksRGUrPTIqQ2Q7bGV0IEFuPWsuZ2V0SW50MzIoRGUsITApO0RlKz1OZyx3Kz1BbixBbj1rLmdldEludDMyKERlLCEwKSx4Kz1BbiozLEQrPUgrREJ9bGV0IFg9W10sdHQ9W10sRz1uZXcgQXJyYXkodyksSXQ9bmV3IEFycmF5KHcpLGd0PW5ldyBBcnJheSh3KSxZdD1oP25ldyBBcnJheSh3KTpbXSxVdD1NP25ldyBBcnJheSh3KTpbXSxDdD1uZXcgQXJyYXkoeCksenQ9W10sa3Q9W10sSnQ9W10sV3Q9W10sYnQ9MCxlZT0wO2ZvcihEPTAsaj0wO2o8NDsrK2ope0g9ay5nZXRVaW50MzIoRCwhMCksRCs9REI7bGV0IERlPUQsWWU9TC50b1JhZGlhbnMoay5nZXRGbG9hdDY0KEQsITApKjE4MCk7RCs9Q2Q7bGV0IEdpPUwudG9SYWRpYW5zKGsuZ2V0RmxvYXQ2NChELCEwKSoxODApO0QrPUNkO2xldCBBbj1MLnRvUmFkaWFucyhrLmdldEZsb2F0NjQoRCwhMCkqMTgwKSxOZT1BbiouNTtEKz1DZDtsZXQgZWk9TC50b1JhZGlhbnMoay5nZXRGbG9hdDY0KEQsITApKjE4MCksX249ZWkqLjU7RCs9Q2Q7bGV0IGhzPWsuZ2V0SW50MzIoRCwhMCk7RCs9Tmc7bGV0IFFpPWsuZ2V0SW50MzIoRCwhMCk7RCs9TmcsRCs9Tmc7bGV0IG5uPW5ldyBBcnJheShocyk7Zm9yKGxldCBzbj0wO3NuPGhzOysrc24pe2xldCBDcz1ZZStrLmdldFVpbnQ4KEQrKykqQW47WW8ubG9uZ2l0dWRlPUNzO2xldCBjcz1HaStrLmdldFVpbnQ4KEQrKykqZWk7WW8ubGF0aXR1ZGU9Y3M7bGV0IHhuPWsuZ2V0RmxvYXQzMihELCEwKTtpZihEKz1uX3QseG4hPT0wJiZ4bjxkJiYoeG4qPS1NYXRoLnBvdygyLEEpKSx4bio9NjM3MTAxMCxZby5oZWlnaHQ9eG4sRFIoVCxDcykhPT0tMXx8RFIoTixjcykhPT0tMSl7bGV0IEpuPURSKFgsWW8sdXQpO2lmKEpuPT09LTEpWC5wdXNoKHV0LmNsb25lKFlvKSksdHQucHVzaChidCk7ZWxzZXtubltzbl09dHRbSm5dO2NvbnRpbnVlfX1ubltzbl09YnQsTWF0aC5hYnMoQ3MtZik8TmU/enQucHVzaCh7aW5kZXg6YnQsY2FydG9ncmFwaGljOnV0LmNsb25lKFlvKX0pOk1hdGguYWJzKENzLV8pPE5lP0p0LnB1c2goe2luZGV4OmJ0LGNhcnRvZ3JhcGhpYzp1dC5jbG9uZShZbyl9KTpNYXRoLmFicyhjcy1FKTxfbj9rdC5wdXNoKHtpbmRleDpidCxjYXJ0b2dyYXBoaWM6dXQuY2xvbmUoWW8pfSk6TWF0aC5hYnMoY3MtUik8X24mJld0LnB1c2goe2luZGV4OmJ0LGNhcnRvZ3JhcGhpYzp1dC5jbG9uZShZbyl9KSx5PU1hdGgubWluKHhuLHkpLGM9TWF0aC5tYXgoeG4sYyksZ3RbYnRdPXhuO2xldCBQbj1pLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFlvKTtpZihHW2J0XT1QbixoJiYoWXRbYnRdPShrcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKGNzKS1CKSpVKSxNKXtsZXQgSm49aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoUG4pO1V0W2J0XT1Kbn1hdC5tdWx0aXBseUJ5UG9pbnQoRixQbix6ZiksbC5taW5pbXVtQnlDb21wb25lbnQoemYsZyxnKSxsLm1heGltdW1CeUNvbXBvbmVudCh6ZixPLE8pO2xldCBBaT0oQ3MtZikvKF8tZik7QWk9TC5jbGFtcChBaSwwLDEpO2xldCBDaT0oY3MtRSkvKFItRSk7Q2k9TC5jbGFtcChDaSwwLDEpLEl0W2J0XT1uZXcgbnQoQWksQ2kpLCsrYnR9bGV0IGtpPVFpKjM7Zm9yKGxldCBzbj0wO3NuPGtpOysrc24sKytlZSlDdFtlZV09bm5bay5nZXRVaW50MTYoRCwhMCldLEQrPWlfdDtpZihIIT09RC1EZSl0aHJvdyBuZXcga2UoIkludmFsaWQgdGVycmFpbiB0aWxlLiIpfUcubGVuZ3RoPWJ0LEl0Lmxlbmd0aD1idCxndC5sZW5ndGg9YnQsaCYmKFl0Lmxlbmd0aD1idCksTSYmKFV0Lmxlbmd0aD1idCk7bGV0IGNlPWJ0LGplPWVlLFNlPXtoTWluOnksbGFzdEJvcmRlclBvaW50OnZvaWQgMCxza2lydEhlaWdodDphLHRvRU5VOkYsZWxsaXBzb2lkOmksbWluaW11bTpnLG1heGltdW06T307enQuc29ydChmdW5jdGlvbihEZSxZZSl7cmV0dXJuIFllLmNhcnRvZ3JhcGhpYy5sYXRpdHVkZS1EZS5jYXJ0b2dyYXBoaWMubGF0aXR1ZGV9KSxrdC5zb3J0KGZ1bmN0aW9uKERlLFllKXtyZXR1cm4gRGUuY2FydG9ncmFwaGljLmxvbmdpdHVkZS1ZZS5jYXJ0b2dyYXBoaWMubG9uZ2l0dWRlfSksSnQuc29ydChmdW5jdGlvbihEZSxZZSl7cmV0dXJuIERlLmNhcnRvZ3JhcGhpYy5sYXRpdHVkZS1ZZS5jYXJ0b2dyYXBoaWMubGF0aXR1ZGV9KSxXdC5zb3J0KGZ1bmN0aW9uKERlLFllKXtyZXR1cm4gWWUuY2FydG9ncmFwaGljLmxvbmdpdHVkZS1EZS5jYXJ0b2dyYXBoaWMubG9uZ2l0dWRlfSk7bGV0IFVlPTFlLTU7aWYoRmcoRyxndCxJdCxZdCxVdCxDdCxTZSx6dCwtVWUqSSwhMCwtVWUqQyksRmcoRyxndCxJdCxZdCxVdCxDdCxTZSxrdCwtVWUqQywhMSksRmcoRyxndCxJdCxZdCxVdCxDdCxTZSxKdCxVZSpJLCEwLFVlKkMpLEZnKEcsZ3QsSXQsWXQsVXQsQ3QsU2UsV3QsVWUqQywhMSksenQubGVuZ3RoPjAmJld0Lmxlbmd0aD4wKXtsZXQgRGU9enRbMF0uaW5kZXgsWWU9Y2UsR2k9V3RbV3QubGVuZ3RoLTFdLmluZGV4LEFuPUcubGVuZ3RoLTE7Q3QucHVzaChHaSxBbixZZSxZZSxEZSxHaSl9dz1HLmxlbmd0aDtsZXQgTWU9TnQuZnJvbVBvaW50cyhHKSxDZTttKG4pJiYoQ2U9enMuZnJvbVJlY3RhbmdsZShuLHksYyxpKSk7bGV0IG5pPW5ldyBkQShpKS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludFBvc3NpYmx5VW5kZXJFbGxpcHNvaWQoZSxHLHkpLHplPW5ldyBwaChnLE8sZSksQmU9bmV3IHZjKGUsemUsU2UuaE1pbixjLGIsITEsaCxNLG8sciksTWk9bmV3IEZsb2F0MzJBcnJheSh3KkJlLnN0cmlkZSksUmk9MDtmb3IobGV0IERlPTA7RGU8dzsrK0RlKVJpPUJlLmVuY29kZShNaSxSaSxHW0RlXSxJdFtEZV0sZ3RbRGVdLHZvaWQgMCxZdFtEZV0sVXRbRGVdKTtsZXQgc2k9enQubWFwKGZ1bmN0aW9uKERlKXtyZXR1cm4gRGUuaW5kZXh9KS5yZXZlcnNlKCkscWU9a3QubWFwKGZ1bmN0aW9uKERlKXtyZXR1cm4gRGUuaW5kZXh9KS5yZXZlcnNlKCksT2k9SnQubWFwKGZ1bmN0aW9uKERlKXtyZXR1cm4gRGUuaW5kZXh9KS5yZXZlcnNlKCksZ249V3QubWFwKGZ1bmN0aW9uKERlKXtyZXR1cm4gRGUuaW5kZXh9KS5yZXZlcnNlKCk7cmV0dXJuIHFlLnVuc2hpZnQoT2lbT2kubGVuZ3RoLTFdKSxxZS5wdXNoKHNpWzBdKSxnbi51bnNoaWZ0KHNpW3NpLmxlbmd0aC0xXSksZ24ucHVzaChPaVswXSkse3ZlcnRpY2VzOk1pLGluZGljZXM6bmV3IFVpbnQxNkFycmF5KEN0KSxtYXhpbXVtSGVpZ2h0OmMsbWluaW11bUhlaWdodDp5LGVuY29kaW5nOkJlLGJvdW5kaW5nU3BoZXJlM0Q6TWUsb3JpZW50ZWRCb3VuZGluZ0JveDpDZSxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTpuaSx2ZXJ0ZXhDb3VudFdpdGhvdXRTa2lydHM6Y2UsaW5kZXhDb3VudFdpdGhvdXRTa2lydHM6amUsd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6c2ksc291dGhJbmRpY2VzRWFzdFRvV2VzdDpxZSxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpPaSxub3J0aEluZGljZXNXZXN0VG9FYXN0OmdufX1mdW5jdGlvbiBGZyh0LGUsaSxuLHMsbyxyLGEsaCxBLGQpe2xldCBmPWEubGVuZ3RoO2ZvcihsZXQgRT0wO0U8ZjsrK0Upe2xldCBfPWFbRV0sUj1fLmNhcnRvZ3JhcGhpYyxJPV8uaW5kZXgsQz10Lmxlbmd0aCxOPVIubG9uZ2l0dWRlLFQ9Ui5sYXRpdHVkZTtUPUwuY2xhbXAoVCwtTC5QSV9PVkVSX1RXTyxMLlBJX09WRVJfVFdPKTtsZXQgYj1SLmhlaWdodC1yLnNraXJ0SGVpZ2h0O3IuaE1pbj1NYXRoLm1pbihyLmhNaW4sYiksdXQuZnJvbVJhZGlhbnMoTixULGIsWW8pLEEmJihZby5sb25naXR1ZGUrPWgpLEE/RT09PWYtMT9Zby5sYXRpdHVkZSs9ZDpFPT09MCYmKFlvLmxhdGl0dWRlLT1kKTpZby5sYXRpdHVkZSs9aDtsZXQgRj1yLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihZbyk7dC5wdXNoKEYpLGUucHVzaChiKSxpLnB1c2gobnQuY2xvbmUoaVtJXSkpLG4ubGVuZ3RoPjAmJm4ucHVzaChuW0ldKSxzLmxlbmd0aD4wJiZzLnB1c2goc1tJXSksYXQubXVsdGlwbHlCeVBvaW50KHIudG9FTlUsRix6Zik7bGV0IEI9ci5taW5pbXVtLFU9ci5tYXhpbXVtO2wubWluaW11bUJ5Q29tcG9uZW50KHpmLEIsQiksbC5tYXhpbXVtQnlDb21wb25lbnQoemYsVSxVKTtsZXQgUT1yLmxhc3RCb3JkZXJQb2ludDtpZihtKFEpKXtsZXQgTT1RLmluZGV4O28ucHVzaChNLEMtMSxDLEMsSSxNKX1yLmxhc3RCb3JkZXJQb2ludD1ffX12YXIgaV90LE5nLERCLG5fdCxDZCxZbyx6ZixvX3Qscl90LGFfdCxoX3QsTUI9UygoKT0+e2FfKCk7X2koKTtYZSgpO0h0KCk7cmkoKTtGdCgpO210KCk7T2UoKTtWbSgpO19lKCk7YmkoKTtKbCgpO3BuKCk7UHMoKTtXUigpO2ZyKCk7TWwoKTtOcygpO2lfdD1VaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxOZz1JbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULERCPVVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULG5fdD1GbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsQ2Q9RmxvYXQ2NEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO1lvPW5ldyB1dCx6Zj1uZXcgbCxvX3Q9bmV3IGwscl90PW5ldyBsLGFfdD1uZXcgYXQ7aF90PVdpKHNfdCl9KTt2YXIgY190LHE2LCQ2PVMoKCk9PntjX3Q9e05PTkU6MCxMRVJDOjF9LHE2PU9iamVjdC5mcmVlemUoY190KX0pO3ZhciBEQSxRQixsX3QsZF90LG1fdCx0SyxlSz1TKCgpPT57YV8oKTtfaSgpO1hlKCk7SHQoKTtGdCgpO210KCk7T3QoKTtPZSgpO1ZtKCk7X2UoKTtiaSgpO0psKCk7cG4oKTtXUigpO2ZyKCk7TWwoKTtEQT17fTtEQS5ERUZBVUxUX1NUUlVDVFVSRT1PYmplY3QuZnJlZXplKHtoZWlnaHRTY2FsZToxLGhlaWdodE9mZnNldDowLGVsZW1lbnRzUGVySGVpZ2h0OjEsc3RyaWRlOjEsZWxlbWVudE11bHRpcGxpZXI6MjU2LGlzQmlnRW5kaWFuOiExfSk7UUI9bmV3IGwsbF90PW5ldyBhdCxkX3Q9bmV3IGwsbV90PW5ldyBsO0RBLmNvbXB1dGVWZXJ0aWNlcz1mdW5jdGlvbih0KXtpZighbSh0KXx8IW0odC5oZWlnaHRtYXApKXRocm93IG5ldyBZKCJvcHRpb25zLmhlaWdodG1hcCBpcyByZXF1aXJlZC4iKTtpZighbSh0LndpZHRoKXx8IW0odC5oZWlnaHQpKXRocm93IG5ldyBZKCJvcHRpb25zLndpZHRoIGFuZCBvcHRpb25zLmhlaWdodCBhcmUgcmVxdWlyZWQuIik7aWYoIW0odC5uYXRpdmVSZWN0YW5nbGUpKXRocm93IG5ldyBZKCJvcHRpb25zLm5hdGl2ZVJlY3RhbmdsZSBpcyByZXF1aXJlZC4iKTtpZighbSh0LnNraXJ0SGVpZ2h0KSl0aHJvdyBuZXcgWSgib3B0aW9ucy5za2lydEhlaWdodCBpcyByZXF1aXJlZC4iKTtsZXQgZT1NYXRoLmNvcyxpPU1hdGguc2luLG49TWF0aC5zcXJ0LHM9TWF0aC5hdGFuLG89TWF0aC5leHAscj1MLlBJX09WRVJfVFdPLGE9TC50b1JhZGlhbnMsaD10LmhlaWdodG1hcCxBPXQud2lkdGgsZD10LmhlaWdodCxmPXQuc2tpcnRIZWlnaHQsRT1mPjAsXz1aKHQuaXNHZW9ncmFwaGljLCEwKSxSPVoodC5lbGxpcHNvaWQsb3QuV0dTODQpLEk9MS9SLm1heGltdW1SYWRpdXMsQz1YdC5jbG9uZSh0Lm5hdGl2ZVJlY3RhbmdsZSksTj1YdC5jbG9uZSh0LnJlY3RhbmdsZSksVCxiLEYsQjttKE4pPyhUPU4ud2VzdCxiPU4uc291dGgsRj1OLmVhc3QsQj1OLm5vcnRoKTpfPyhUPWEoQy53ZXN0KSxiPWEoQy5zb3V0aCksRj1hKEMuZWFzdCksQj1hKEMubm9ydGgpKTooVD1DLndlc3QqSSxiPXItMipzKG8oLUMuc291dGgqSSkpLEY9Qy5lYXN0KkksQj1yLTIqcyhvKC1DLm5vcnRoKkkpKSk7bGV0IFU9dC5yZWxhdGl2ZVRvQ2VudGVyLFE9bShVKTtVPVE/VTpsLlpFUk87bGV0IE09Wih0LmluY2x1ZGVXZWJNZXJjYXRvclQsITEpLGs9Wih0LmV4YWdnZXJhdGlvbiwxKSx5PVoodC5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodCwwKSxnPWshPT0xLE89Wih0LnN0cnVjdHVyZSxEQS5ERUZBVUxUX1NUUlVDVFVSRSksRD1aKE8uaGVpZ2h0U2NhbGUsREEuREVGQVVMVF9TVFJVQ1RVUkUuaGVpZ2h0U2NhbGUpLHc9WihPLmhlaWdodE9mZnNldCxEQS5ERUZBVUxUX1NUUlVDVFVSRS5oZWlnaHRPZmZzZXQpLHg9WihPLmVsZW1lbnRzUGVySGVpZ2h0LERBLkRFRkFVTFRfU1RSVUNUVVJFLmVsZW1lbnRzUGVySGVpZ2h0KSxIPVooTy5zdHJpZGUsREEuREVGQVVMVF9TVFJVQ1RVUkUuc3RyaWRlKSxqPVooTy5lbGVtZW50TXVsdGlwbGllcixEQS5ERUZBVUxUX1NUUlVDVFVSRS5lbGVtZW50TXVsdGlwbGllciksWD1aKE8uaXNCaWdFbmRpYW4sREEuREVGQVVMVF9TVFJVQ1RVUkUuaXNCaWdFbmRpYW4pLHR0PVh0LmNvbXB1dGVXaWR0aChDKSxHPVh0LmNvbXB1dGVIZWlnaHQoQyksSXQ9dHQvKEEtMSksZ3Q9Ry8oZC0xKTtffHwodHQqPUksRyo9SSk7bGV0IFl0PVIucmFkaWlTcXVhcmVkLFV0PVl0LngsQ3Q9WXQueSx6dD1ZdC56LGt0PTY1NTM2LEp0PS02NTUzNixXdD1Jbi5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShVLFIpLGJ0PWF0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihXdCxsX3QpLGVlLGNlO00mJihlZT1rcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKGIpLGNlPTEvKGtzLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoQiktZWUpKTtsZXQgamU9ZF90O2plLng9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGplLnk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGplLno9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBTZT1tX3Q7U2UueD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksU2UueT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksU2Uuej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IFVlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxNZT1BKmQsQ2U9Zj4wP0EqMitkKjI6MCxGZT1NZStDZSxuaT1uZXcgQXJyYXkoRmUpLHplPW5ldyBBcnJheShGZSksQmU9bmV3IEFycmF5KEZlKSxNaT1NP25ldyBBcnJheShGZSk6W10sUmk9Zz9uZXcgQXJyYXkoRmUpOltdLHNpPTAscWU9ZCxPaT0wLGduPUE7RSYmKC0tc2ksKytxZSwtLU9pLCsrZ24pO2xldCBEZT0xZS01O2ZvcihsZXQgUWk9c2k7UWk8cWU7KytRaSl7bGV0IG5uPVFpO25uPDAmJihubj0wKSxubj49ZCYmKG5uPWQtMSk7bGV0IGtpPUMubm9ydGgtZ3Qqbm47Xz9raT1hKGtpKTpraT1yLTIqcyhvKC1raSpJKSk7bGV0IHNuPShraS1iKS8oQi1iKTtzbj1MLmNsYW1wKHNuLDAsMSk7bGV0IENzPVFpPT09c2ksY3M9UWk9PT1xZS0xO2Y+MCYmKENzP2tpKz1EZSpHOmNzJiYoa2ktPURlKkcpKTtsZXQgeG49ZShraSksUG49aShraSksQWk9enQqUG4sQ2k7TSYmKENpPShrcy5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKGtpKS1lZSkqY2UpO2ZvcihsZXQgSm49T2k7Sm48Z247KytKbil7bGV0IGxzPUpuO2xzPDAmJihscz0wKSxscz49QSYmKGxzPUEtMSk7bGV0IGFvPW5uKihBKkgpK2xzKkgscWk7aWYoeD09PTEpcWk9aFthb107ZWxzZXtxaT0wO2xldCBUbjtpZihYKWZvcihUbj0wO1RuPHg7KytUbilxaT1xaSpqK2hbYW8rVG5dO2Vsc2UgZm9yKFRuPXgtMTtUbj49MDstLVRuKXFpPXFpKmoraFthbytUbl19cWk9cWkqRCt3LEp0PU1hdGgubWF4KEp0LHFpKSxrdD1NYXRoLm1pbihrdCxxaSk7bGV0IGhuPUMud2VzdCtJdCpscztfP2huPWEoaG4pOmhuPWhuKkk7bGV0IGpvPShobi1UKS8oRi1UKTtqbz1MLmNsYW1wKGpvLDAsMSk7bGV0IGRzPW5uKkErbHM7aWYoZj4wKXtsZXQgVG49Sm49PT1PaSxocj1Kbj09PWduLTEsVWg9Q3N8fGNzfHxUbnx8aHI7aWYoKENzfHxjcykmJihUbnx8aHIpKWNvbnRpbnVlO1VoJiYocWktPWYsVG4/KGRzPU1lKyhkLW5uLTEpLGhuLT1EZSp0dCk6Y3M/ZHM9TWUrZCsoQS1scy0xKTpocj8oZHM9TWUrZCtBK25uLGhuKz1EZSp0dCk6Q3MmJihkcz1NZStkK0ErZCtscykpfWxldCBvbj14biplKGhuKSx3cz14bippKGhuKSxWbz1VdCpvbixicj1DdCp3cywkZT0xL24oVm8qb24rYnIqd3MrQWkqUG4pLGFhPVZvKiRlLFlyPWJyKiRlLHhzPUFpKiRlLGdzPW5ldyBsO2dzLng9YWErb24qcWksZ3MueT1Zcit3cypxaSxncy56PXhzK1BuKnFpLGF0Lm11bHRpcGx5QnlQb2ludChidCxncyxRQiksbC5taW5pbXVtQnlDb21wb25lbnQoUUIsamUsamUpLGwubWF4aW11bUJ5Q29tcG9uZW50KFFCLFNlLFNlKSxVZT1NYXRoLm1pbihVZSxxaSksbmlbZHNdPWdzLEJlW2RzXT1uZXcgbnQoam8sc24pLHplW2RzXT1xaSxNJiYoTWlbZHNdPUNpKSxnJiYoUmlbZHNdPVIuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGdzKSl9fWxldCBZZT1OdC5mcm9tUG9pbnRzKG5pKSxHaTttKE4pJiYoR2k9enMuZnJvbVJlY3RhbmdsZShOLGt0LEp0LFIpKTtsZXQgQW47USYmKEFuPW5ldyBkQShSKS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludFBvc3NpYmx5VW5kZXJFbGxpcHNvaWQoVSxuaSxrdCkpO2xldCBOZT1uZXcgcGgoamUsU2UsVSksZWk9bmV3IHZjKFUsTmUsVWUsSnQsV3QsITEsTSxnLGsseSksX249bmV3IEZsb2F0MzJBcnJheShGZSplaS5zdHJpZGUpLGhzPTA7Zm9yKGxldCBRaT0wO1FpPEZlOysrUWkpaHM9ZWkuZW5jb2RlKF9uLGhzLG5pW1FpXSxCZVtRaV0semVbUWldLHZvaWQgMCxNaVtRaV0sUmlbUWldKTtyZXR1cm57dmVydGljZXM6X24sbWF4aW11bUhlaWdodDpKdCxtaW5pbXVtSGVpZ2h0Omt0LGVuY29kaW5nOmVpLGJvdW5kaW5nU3BoZXJlM0Q6WWUsb3JpZW50ZWRCb3VuZGluZ0JveDpHaSxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTpBbn19O3RLPURBfSk7dmFyIGlLPXRzKChBVmUsYmcpPT57LyogQ29weXJpZ2h0IDIwMTUtMjAxOCBFc3JpLiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIEBwcmVzZXJ2ZSAqLyhmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIHM9e307cy5kZWZhdWx0Tm9EYXRhVmFsdWU9LTM0MDI3OTk5Mzg3OTAxNDg0ZTIyLHMuZGVjb2RlPWZ1bmN0aW9uKGQsZil7Zj1mfHx7fTt2YXIgRT1mLmVuY29kZWRNYXNrRGF0YXx8Zi5lbmNvZGVkTWFza0RhdGE9PT1udWxsLF89aChkLGYuaW5wdXRPZmZzZXR8fDAsRSksUj1mLm5vRGF0YVZhbHVlIT09bnVsbD9mLm5vRGF0YVZhbHVlOnMuZGVmYXVsdE5vRGF0YVZhbHVlLEk9byhfLGYucGl4ZWxUeXBlfHxGbG9hdDMyQXJyYXksZi5lbmNvZGVkTWFza0RhdGEsUixmLnJldHVybk1hc2spLEM9e3dpZHRoOl8ud2lkdGgsaGVpZ2h0Ol8uaGVpZ2h0LHBpeGVsRGF0YTpJLnJlc3VsdFBpeGVscyxtaW5WYWx1ZTpJLm1pblZhbHVlLG1heFZhbHVlOl8ucGl4ZWxzLm1heFZhbHVlLG5vRGF0YVZhbHVlOlJ9O3JldHVybiBJLnJlc3VsdE1hc2smJihDLm1hc2tEYXRhPUkucmVzdWx0TWFzayksZi5yZXR1cm5FbmNvZGVkTWFzayYmXy5tYXNrJiYoQy5lbmNvZGVkTWFza0RhdGE9Xy5tYXNrLmJpdHNldD9fLm1hc2suYml0c2V0Om51bGwpLGYucmV0dXJuRmlsZUluZm8mJihDLmZpbGVJbmZvPXIoXyksZi5jb21wdXRlVXNlZEJpdERlcHRocyYmKEMuZmlsZUluZm8uYml0RGVwdGhzPWEoXykpKSxDfTt2YXIgbz1mdW5jdGlvbihkLGYsRSxfLFIpe3ZhciBJPTAsQz1kLnBpeGVscy5udW1CbG9ja3NYLE49ZC5waXhlbHMubnVtQmxvY2tzWSxUPU1hdGguZmxvb3IoZC53aWR0aC9DKSxiPU1hdGguZmxvb3IoZC5oZWlnaHQvTiksRj0yKmQubWF4WkVycm9yLEI9TnVtYmVyLk1BWF9WQUxVRSxVO0U9RXx8KGQubWFzaz9kLm1hc2suYml0c2V0Om51bGwpO3ZhciBRLE07UT1uZXcgZihkLndpZHRoKmQuaGVpZ2h0KSxSJiZFJiYoTT1uZXcgVWludDhBcnJheShkLndpZHRoKmQuaGVpZ2h0KSk7Zm9yKHZhciBrPW5ldyBGbG9hdDMyQXJyYXkoVCpiKSx5LGMsZz0wO2c8PU47ZysrKXt2YXIgTz1nIT09Tj9iOmQuaGVpZ2h0JU47aWYoTyE9PTApZm9yKHZhciBEPTA7RDw9QztEKyspe3ZhciB3PUQhPT1DP1Q6ZC53aWR0aCVDO2lmKHchPT0wKXt2YXIgeD1nKmQud2lkdGgqYitEKlQsSD1kLndpZHRoLXcsaj1kLnBpeGVscy5ibG9ja3NbSV0sWCx0dCxHO2ouZW5jb2Rpbmc8Mj8oai5lbmNvZGluZz09PTA/WD1qLnJhd0RhdGE6KEEoai5zdHVmZmVkRGF0YSxqLmJpdHNQZXJQaXhlbCxqLm51bVZhbGlkUGl4ZWxzLGoub2Zmc2V0LEYsayxkLnBpeGVscy5tYXhWYWx1ZSksWD1rKSx0dD0wKTpqLmVuY29kaW5nPT09Mj9HPTA6Rz1qLm9mZnNldDt2YXIgSXQ7aWYoRSlmb3IoYz0wO2M8TztjKyspe2Zvcih4JjcmJihJdD1FW3g+PjNdLEl0PDw9eCY3KSx5PTA7eTx3O3krKyl4Jjd8fChJdD1FW3g+PjNdKSxJdCYxMjg/KE0mJihNW3hdPTEpLFU9ai5lbmNvZGluZzwyP1hbdHQrK106RyxCPUI+VT9VOkIsUVt4KytdPVUpOihNJiYoTVt4XT0wKSxRW3grK109XyksSXQ8PD0xO3grPUh9ZWxzZSBpZihqLmVuY29kaW5nPDIpZm9yKGM9MDtjPE87YysrKXtmb3IoeT0wO3k8dzt5KyspVT1YW3R0KytdLEI9Qj5VP1U6QixRW3grK109VTt4Kz1IfWVsc2UgZm9yKEI9Qj5HP0c6QixjPTA7YzxPO2MrKyl7Zm9yKHk9MDt5PHc7eSsrKVFbeCsrXT1HO3grPUh9aWYoai5lbmNvZGluZz09PTEmJnR0IT09ai5udW1WYWxpZFBpeGVscyl0aHJvdyJCbG9jayBhbmQgTWFzayBkbyBub3QgbWF0Y2giO0krK319fXJldHVybntyZXN1bHRQaXhlbHM6USxyZXN1bHRNYXNrOk0sbWluVmFsdWU6Qn19LHI9ZnVuY3Rpb24oZCl7cmV0dXJue2ZpbGVJZGVudGlmaWVyU3RyaW5nOmQuZmlsZUlkZW50aWZpZXJTdHJpbmcsZmlsZVZlcnNpb246ZC5maWxlVmVyc2lvbixpbWFnZVR5cGU6ZC5pbWFnZVR5cGUsaGVpZ2h0OmQuaGVpZ2h0LHdpZHRoOmQud2lkdGgsbWF4WkVycm9yOmQubWF4WkVycm9yLGVvZk9mZnNldDpkLmVvZk9mZnNldCxtYXNrOmQubWFzaz97bnVtQmxvY2tzWDpkLm1hc2subnVtQmxvY2tzWCxudW1CbG9ja3NZOmQubWFzay5udW1CbG9ja3NZLG51bUJ5dGVzOmQubWFzay5udW1CeXRlcyxtYXhWYWx1ZTpkLm1hc2subWF4VmFsdWV9Om51bGwscGl4ZWxzOntudW1CbG9ja3NYOmQucGl4ZWxzLm51bUJsb2Nrc1gsbnVtQmxvY2tzWTpkLnBpeGVscy5udW1CbG9ja3NZLG51bUJ5dGVzOmQucGl4ZWxzLm51bUJ5dGVzLG1heFZhbHVlOmQucGl4ZWxzLm1heFZhbHVlLG5vRGF0YVZhbHVlOmQubm9EYXRhVmFsdWV9fX0sYT1mdW5jdGlvbihkKXtmb3IodmFyIGY9ZC5waXhlbHMubnVtQmxvY2tzWCpkLnBpeGVscy5udW1CbG9ja3NZLEU9e30sXz0wO188ZjtfKyspe3ZhciBSPWQucGl4ZWxzLmJsb2Nrc1tfXTtSLmVuY29kaW5nPT09MD9FLmZsb2F0MzI9ITA6Ui5lbmNvZGluZz09PTE/RVtSLmJpdHNQZXJQaXhlbF09ITA6RVswXT0hMH1yZXR1cm4gT2JqZWN0LmtleXMoRSl9LGg9ZnVuY3Rpb24oZCxmLEUpe3ZhciBfPXt9LFI9bmV3IFVpbnQ4QXJyYXkoZCxmLDEwKTtpZihfLmZpbGVJZGVudGlmaWVyU3RyaW5nPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxSKSxfLmZpbGVJZGVudGlmaWVyU3RyaW5nLnRyaW0oKSE9PSJDbnRaSW1hZ2UiKXRocm93IlVuZXhwZWN0ZWQgZmlsZSBpZGVudGlmaWVyIHN0cmluZzogIitfLmZpbGVJZGVudGlmaWVyU3RyaW5nO2YrPTEwO3ZhciBJPW5ldyBEYXRhVmlldyhkLGYsMjQpO2lmKF8uZmlsZVZlcnNpb249SS5nZXRJbnQzMigwLCEwKSxfLmltYWdlVHlwZT1JLmdldEludDMyKDQsITApLF8uaGVpZ2h0PUkuZ2V0VWludDMyKDgsITApLF8ud2lkdGg9SS5nZXRVaW50MzIoMTIsITApLF8ubWF4WkVycm9yPUkuZ2V0RmxvYXQ2NCgxNiwhMCksZis9MjQsIUUpaWYoST1uZXcgRGF0YVZpZXcoZCxmLDE2KSxfLm1hc2s9e30sXy5tYXNrLm51bUJsb2Nrc1k9SS5nZXRVaW50MzIoMCwhMCksXy5tYXNrLm51bUJsb2Nrc1g9SS5nZXRVaW50MzIoNCwhMCksXy5tYXNrLm51bUJ5dGVzPUkuZ2V0VWludDMyKDgsITApLF8ubWFzay5tYXhWYWx1ZT1JLmdldEZsb2F0MzIoMTIsITApLGYrPTE2LF8ubWFzay5udW1CeXRlcz4wKXt2YXIgQz1uZXcgVWludDhBcnJheShNYXRoLmNlaWwoXy53aWR0aCpfLmhlaWdodC84KSk7ST1uZXcgRGF0YVZpZXcoZCxmLF8ubWFzay5udW1CeXRlcyk7dmFyIE49SS5nZXRJbnQxNigwLCEwKSxUPTIsYj0wO2Rve2lmKE4+MClmb3IoO04tLTspQ1tiKytdPUkuZ2V0VWludDgoVCsrKTtlbHNle3ZhciBGPUkuZ2V0VWludDgoVCsrKTtmb3IoTj0tTjtOLS07KUNbYisrXT1GfU49SS5nZXRJbnQxNihULCEwKSxUKz0yfXdoaWxlKFQ8Xy5tYXNrLm51bUJ5dGVzKTtpZihOIT09LTMyNzY4fHxiPEMubGVuZ3RoKXRocm93IlVuZXhwZWN0ZWQgZW5kIG9mIG1hc2sgUkxFIGVuY29kaW5nIjtfLm1hc2suYml0c2V0PUMsZis9Xy5tYXNrLm51bUJ5dGVzfWVsc2UgXy5tYXNrLm51bUJ5dGVzfF8ubWFzay5udW1CbG9ja3NZfF8ubWFzay5tYXhWYWx1ZXx8KF8ubWFzay5iaXRzZXQ9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKF8ud2lkdGgqXy5oZWlnaHQvOCkpKTtJPW5ldyBEYXRhVmlldyhkLGYsMTYpLF8ucGl4ZWxzPXt9LF8ucGl4ZWxzLm51bUJsb2Nrc1k9SS5nZXRVaW50MzIoMCwhMCksXy5waXhlbHMubnVtQmxvY2tzWD1JLmdldFVpbnQzMig0LCEwKSxfLnBpeGVscy5udW1CeXRlcz1JLmdldFVpbnQzMig4LCEwKSxfLnBpeGVscy5tYXhWYWx1ZT1JLmdldEZsb2F0MzIoMTIsITApLGYrPTE2O3ZhciBCPV8ucGl4ZWxzLm51bUJsb2Nrc1gsVT1fLnBpeGVscy5udW1CbG9ja3NZLFE9QisoXy53aWR0aCVCPjA/MTowKSxNPVUrKF8uaGVpZ2h0JVU+MD8xOjApO18ucGl4ZWxzLmJsb2Nrcz1uZXcgQXJyYXkoUSpNKTtmb3IodmFyIGs9MCx5PTA7eTxNO3krKylmb3IodmFyIGM9MDtjPFE7YysrKXt2YXIgZz0wLE89ZC5ieXRlTGVuZ3RoLWY7ST1uZXcgRGF0YVZpZXcoZCxmLE1hdGgubWluKDEwLE8pKTt2YXIgRD17fTtfLnBpeGVscy5ibG9ja3NbaysrXT1EO3ZhciB3PUkuZ2V0VWludDgoMCk7aWYoZysrLEQuZW5jb2Rpbmc9dyY2MyxELmVuY29kaW5nPjMpdGhyb3ciSW52YWxpZCBibG9jayBlbmNvZGluZyAoIitELmVuY29kaW5nKyIpIjtpZihELmVuY29kaW5nPT09Mil7ZisrO2NvbnRpbnVlfWlmKHchPT0wJiZ3IT09Mil7aWYodz4+PTYsRC5vZmZzZXRUeXBlPXcsdz09PTIpRC5vZmZzZXQ9SS5nZXRJbnQ4KDEpLGcrKztlbHNlIGlmKHc9PT0xKUQub2Zmc2V0PUkuZ2V0SW50MTYoMSwhMCksZys9MjtlbHNlIGlmKHc9PT0wKUQub2Zmc2V0PUkuZ2V0RmxvYXQzMigxLCEwKSxnKz00O2Vsc2UgdGhyb3ciSW52YWxpZCBibG9jayBvZmZzZXQgdHlwZSI7aWYoRC5lbmNvZGluZz09PTEpaWYodz1JLmdldFVpbnQ4KGcpLGcrKyxELmJpdHNQZXJQaXhlbD13JjYzLHc+Pj02LEQubnVtVmFsaWRQaXhlbHNUeXBlPXcsdz09PTIpRC5udW1WYWxpZFBpeGVscz1JLmdldFVpbnQ4KGcpLGcrKztlbHNlIGlmKHc9PT0xKUQubnVtVmFsaWRQaXhlbHM9SS5nZXRVaW50MTYoZywhMCksZys9MjtlbHNlIGlmKHc9PT0wKUQubnVtVmFsaWRQaXhlbHM9SS5nZXRVaW50MzIoZywhMCksZys9NDtlbHNlIHRocm93IkludmFsaWQgdmFsaWQgcGl4ZWwgY291bnQgdHlwZSJ9aWYoZis9ZyxELmVuY29kaW5nIT09Myl7dmFyIHgsSDtpZihELmVuY29kaW5nPT09MCl7dmFyIGo9KF8ucGl4ZWxzLm51bUJ5dGVzLTEpLzQ7aWYoaiE9PU1hdGguZmxvb3IoaikpdGhyb3cidW5jb21wcmVzc2VkIGJsb2NrIGhhcyBpbnZhbGlkIGxlbmd0aCI7eD1uZXcgQXJyYXlCdWZmZXIoaio0KSxIPW5ldyBVaW50OEFycmF5KHgpLEguc2V0KG5ldyBVaW50OEFycmF5KGQsZixqKjQpKTt2YXIgWD1uZXcgRmxvYXQzMkFycmF5KHgpO0QucmF3RGF0YT1YLGYrPWoqNH1lbHNlIGlmKEQuZW5jb2Rpbmc9PT0xKXt2YXIgdHQ9TWF0aC5jZWlsKEQubnVtVmFsaWRQaXhlbHMqRC5iaXRzUGVyUGl4ZWwvOCksRz1NYXRoLmNlaWwodHQvNCk7eD1uZXcgQXJyYXlCdWZmZXIoRyo0KSxIPW5ldyBVaW50OEFycmF5KHgpLEguc2V0KG5ldyBVaW50OEFycmF5KGQsZix0dCkpLEQuc3R1ZmZlZERhdGE9bmV3IFVpbnQzMkFycmF5KHgpLGYrPXR0fX19cmV0dXJuIF8uZW9mT2Zmc2V0PWYsX30sQT1mdW5jdGlvbihkLGYsRSxfLFIsSSxDKXt2YXIgTj0oMTw8ZiktMSxUPTAsYixGPTAsQixVLFE9TWF0aC5jZWlsKChDLV8pL1IpLE09ZC5sZW5ndGgqNC1NYXRoLmNlaWwoZipFLzgpO2ZvcihkW2QubGVuZ3RoLTFdPDw9OCpNLGI9MDtiPEU7YisrKXtpZihGPT09MCYmKFU9ZFtUKytdLEY9MzIpLEY+PWYpQj1VPj4+Ri1mJk4sRi09ZjtlbHNle3ZhciBrPWYtRjtCPShVJk4pPDxrJk4sVT1kW1QrK10sRj0zMi1rLEIrPVU+Pj5GfUlbYl09QjxRP18rQipSOkN9cmV0dXJuIEl9O3JldHVybiBzfSgpLGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHM9e3Vuc3R1ZmY6ZnVuY3Rpb24oaCxBLGQsZixFLF8sUixJKXt2YXIgQz0oMTw8ZCktMSxOPTAsVCxiPTAsRixCLFUsUSxNPWgubGVuZ3RoKjQtTWF0aC5jZWlsKGQqZi84KTtpZihoW2gubGVuZ3RoLTFdPDw9OCpNLEUpZm9yKFQ9MDtUPGY7VCsrKWI9PT0wJiYoQj1oW04rK10sYj0zMiksYj49ZD8oRj1CPj4+Yi1kJkMsYi09ZCk6KFU9ZC1iLEY9KEImQyk8PFUmQyxCPWhbTisrXSxiPTMyLVUsRis9Qj4+PmIpLEFbVF09RVtGXTtlbHNlIGZvcihRPU1hdGguY2VpbCgoSS1fKS9SKSxUPTA7VDxmO1QrKyliPT09MCYmKEI9aFtOKytdLGI9MzIpLGI+PWQ/KEY9Qj4+PmItZCZDLGItPWQpOihVPWQtYixGPShCJkMpPDxVJkMsQj1oW04rK10sYj0zMi1VLEYrPUI+Pj5iKSxBW1RdPUY8UT9fK0YqUjpJfSx1bnN0dWZmTFVUOmZ1bmN0aW9uKGgsQSxkLGYsRSxfKXt2YXIgUj0oMTw8QSktMSxJPTAsQz0wLE49MCxUPTAsYj0wLEYsQj1bXSxVPWgubGVuZ3RoKjQtTWF0aC5jZWlsKEEqZC84KTtoW2gubGVuZ3RoLTFdPDw9OCpVO3ZhciBRPU1hdGguY2VpbCgoXy1mKS9FKTtmb3IoQz0wO0M8ZDtDKyspVD09PTAmJihGPWhbSSsrXSxUPTMyKSxUPj1BPyhiPUY+Pj5ULUEmUixULT1BKTooTj1BLVQsYj0oRiZSKTw8TiZSLEY9aFtJKytdLFQ9MzItTixiKz1GPj4+VCksQltDXT1iPFE/ZitiKkU6XztyZXR1cm4gQi51bnNoaWZ0KGYpLEJ9LHVuc3R1ZmYyOmZ1bmN0aW9uKGgsQSxkLGYsRSxfLFIsSSl7dmFyIEM9KDE8PGQpLTEsTj0wLFQsYj0wLEY9MCxCLFUsUTtpZihFKWZvcihUPTA7VDxmO1QrKyliPT09MCYmKFU9aFtOKytdLGI9MzIsRj0wKSxiPj1kPyhCPVU+Pj5GJkMsYi09ZCxGKz1kKTooUT1kLWIsQj1VPj4+RiZDLFU9aFtOKytdLGI9MzItUSxCfD0oVSYoMTw8USktMSk8PGQtUSxGPVEpLEFbVF09RVtCXTtlbHNle3ZhciBNPU1hdGguY2VpbCgoSS1fKS9SKTtmb3IoVD0wO1Q8ZjtUKyspYj09PTAmJihVPWhbTisrXSxiPTMyLEY9MCksYj49ZD8oQj1VPj4+RiZDLGItPWQsRis9ZCk6KFE9ZC1iLEI9VT4+PkYmQyxVPWhbTisrXSxiPTMyLVEsQnw9KFUmKDE8PFEpLTEpPDxkLVEsRj1RKSxBW1RdPUI8TT9fK0IqUjpJfXJldHVybiBBfSx1bnN0dWZmTFVUMjpmdW5jdGlvbihoLEEsZCxmLEUsXyl7dmFyIFI9KDE8PEEpLTEsST0wLEM9MCxOPTAsVD0wLGI9MCxGPTAsQixVPVtdLFE9TWF0aC5jZWlsKChfLWYpL0UpO2ZvcihDPTA7QzxkO0MrKylUPT09MCYmKEI9aFtJKytdLFQ9MzIsRj0wKSxUPj1BPyhiPUI+Pj5GJlIsVC09QSxGKz1BKTooTj1BLVQsYj1CPj4+RiZSLEI9aFtJKytdLFQ9MzItTixifD0oQiYoMTw8TiktMSk8PEEtTixGPU4pLFVbQ109YjxRP2YrYipFOl87cmV0dXJuIFUudW5zaGlmdChmKSxVfSxvcmlnaW5hbFVuc3R1ZmY6ZnVuY3Rpb24oaCxBLGQsZil7dmFyIEU9KDE8PGQpLTEsXz0wLFIsST0wLEMsTixULGI9aC5sZW5ndGgqNC1NYXRoLmNlaWwoZCpmLzgpO2ZvcihoW2gubGVuZ3RoLTFdPDw9OCpiLFI9MDtSPGY7UisrKUk9PT0wJiYoTj1oW18rK10sST0zMiksST49ZD8oQz1OPj4+SS1kJkUsSS09ZCk6KFQ9ZC1JLEM9KE4mRSk8PFQmRSxOPWhbXysrXSxJPTMyLVQsQys9Tj4+PkkpLEFbUl09QztyZXR1cm4gQX0sb3JpZ2luYWxVbnN0dWZmMjpmdW5jdGlvbihoLEEsZCxmKXt2YXIgRT0oMTw8ZCktMSxfPTAsUixJPTAsQz0wLE4sVCxiO2ZvcihSPTA7UjxmO1IrKylJPT09MCYmKFQ9aFtfKytdLEk9MzIsQz0wKSxJPj1kPyhOPVQ+Pj5DJkUsSS09ZCxDKz1kKTooYj1kLUksTj1UPj4+QyZFLFQ9aFtfKytdLEk9MzItYixOfD0oVCYoMTw8YiktMSk8PGQtYixDPWIpLEFbUl09TjtyZXR1cm4gQX19LG89e0hVRkZNQU5fTFVUX0JJVFNfTUFYOjEyLGNvbXB1dGVDaGVja3N1bUZsZXRjaGVyMzI6ZnVuY3Rpb24oaCl7Zm9yKHZhciBBPTY1NTM1LGQ9NjU1MzUsZj1oLmxlbmd0aCxFPU1hdGguZmxvb3IoZi8yKSxfPTA7RTspe3ZhciBSPUU+PTM1OT8zNTk6RTtFLT1SO2RvIEErPWhbXysrXTw8OCxkKz1BKz1oW18rK107d2hpbGUoLS1SKTtBPShBJjY1NTM1KSsoQT4+PjE2KSxkPShkJjY1NTM1KSsoZD4+PjE2KX1yZXR1cm4gZiYxJiYoZCs9QSs9aFtfXTw8OCksQT0oQSY2NTUzNSkrKEE+Pj4xNiksZD0oZCY2NTUzNSkrKGQ+Pj4xNiksKGQ8PDE2fEEpPj4+MH0scmVhZEhlYWRlckluZm86ZnVuY3Rpb24oaCxBKXt2YXIgZD1BLnB0cixmPW5ldyBVaW50OEFycmF5KGgsZCw2KSxFPXt9O2lmKEUuZmlsZUlkZW50aWZpZXJTdHJpbmc9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGYpLEUuZmlsZUlkZW50aWZpZXJTdHJpbmcubGFzdEluZGV4T2YoIkxlcmMyIiwwKSE9PTApdGhyb3ciVW5leHBlY3RlZCBmaWxlIGlkZW50aWZpZXIgc3RyaW5nIChleHBlY3QgTGVyYzIgKTogIitFLmZpbGVJZGVudGlmaWVyU3RyaW5nO2QrPTY7dmFyIF89bmV3IERhdGFWaWV3KGgsZCw4KSxSPV8uZ2V0SW50MzIoMCwhMCk7RS5maWxlVmVyc2lvbj1SLGQrPTQsUj49MyYmKEUuY2hlY2tzdW09Xy5nZXRVaW50MzIoNCwhMCksZCs9NCksXz1uZXcgRGF0YVZpZXcoaCxkLDEyKSxFLmhlaWdodD1fLmdldFVpbnQzMigwLCEwKSxFLndpZHRoPV8uZ2V0VWludDMyKDQsITApLGQrPTgsUj49ND8oRS5udW1EaW1zPV8uZ2V0VWludDMyKDgsITApLGQrPTQpOkUubnVtRGltcz0xLF89bmV3IERhdGFWaWV3KGgsZCw0MCksRS5udW1WYWxpZFBpeGVsPV8uZ2V0VWludDMyKDAsITApLEUubWljcm9CbG9ja1NpemU9Xy5nZXRJbnQzMig0LCEwKSxFLmJsb2JTaXplPV8uZ2V0SW50MzIoOCwhMCksRS5pbWFnZVR5cGU9Xy5nZXRJbnQzMigxMiwhMCksRS5tYXhaRXJyb3I9Xy5nZXRGbG9hdDY0KDE2LCEwKSxFLnpNaW49Xy5nZXRGbG9hdDY0KDI0LCEwKSxFLnpNYXg9Xy5nZXRGbG9hdDY0KDMyLCEwKSxkKz00MCxBLmhlYWRlckluZm89RSxBLnB0cj1kO3ZhciBJLEM7aWYoUj49MyYmKEM9Uj49ND81Mjo0OCxJPXRoaXMuY29tcHV0ZUNoZWNrc3VtRmxldGNoZXIzMihuZXcgVWludDhBcnJheShoLGQtQyxFLmJsb2JTaXplLTE0KSksSSE9PUUuY2hlY2tzdW0pKXRocm93IkNoZWNrc3VtIGZhaWxlZC4iO3JldHVybiEwfSxjaGVja01pbk1heFJhbmdlczpmdW5jdGlvbihoLEEpe3ZhciBkPUEuaGVhZGVySW5mbyxmPXRoaXMuZ2V0RGF0YVR5cGVBcnJheShkLmltYWdlVHlwZSksRT1kLm51bURpbXMqdGhpcy5nZXREYXRhVHlwZVNpemUoZC5pbWFnZVR5cGUpLF89dGhpcy5yZWFkU3ViQXJyYXkoaCxBLnB0cixmLEUpLFI9dGhpcy5yZWFkU3ViQXJyYXkoaCxBLnB0citFLGYsRSk7QS5wdHIrPTIqRTt2YXIgSSxDPSEwO2ZvcihJPTA7STxkLm51bURpbXM7SSsrKWlmKF9bSV0hPT1SW0ldKXtDPSExO2JyZWFrfXJldHVybiBkLm1pblZhbHVlcz1fLGQubWF4VmFsdWVzPVIsQ30scmVhZFN1YkFycmF5OmZ1bmN0aW9uKGgsQSxkLGYpe3ZhciBFO2lmKGQ9PT1VaW50OEFycmF5KUU9bmV3IFVpbnQ4QXJyYXkoaCxBLGYpO2Vsc2V7dmFyIF89bmV3IEFycmF5QnVmZmVyKGYpLFI9bmV3IFVpbnQ4QXJyYXkoXyk7Ui5zZXQobmV3IFVpbnQ4QXJyYXkoaCxBLGYpKSxFPW5ldyBkKF8pfXJldHVybiBFfSxyZWFkTWFzazpmdW5jdGlvbihoLEEpe3ZhciBkPUEucHRyLGY9QS5oZWFkZXJJbmZvLEU9Zi53aWR0aCpmLmhlaWdodCxfPWYubnVtVmFsaWRQaXhlbCxSPW5ldyBEYXRhVmlldyhoLGQsNCksST17fTtpZihJLm51bUJ5dGVzPVIuZ2V0VWludDMyKDAsITApLGQrPTQsKF89PT0wfHxFPT09XykmJkkubnVtQnl0ZXMhPT0wKXRocm93ImludmFsaWQgbWFzayI7dmFyIEMsTjtpZihfPT09MClDPW5ldyBVaW50OEFycmF5KE1hdGguY2VpbChFLzgpKSxJLmJpdHNldD1DLE49bmV3IFVpbnQ4QXJyYXkoRSksQS5waXhlbHMucmVzdWx0TWFzaz1OLGQrPUkubnVtQnl0ZXM7ZWxzZSBpZihJLm51bUJ5dGVzPjApe0M9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKEUvOCkpLFI9bmV3IERhdGFWaWV3KGgsZCxJLm51bUJ5dGVzKTt2YXIgVD1SLmdldEludDE2KDAsITApLGI9MixGPTAsQj0wO2Rve2lmKFQ+MClmb3IoO1QtLTspQ1tGKytdPVIuZ2V0VWludDgoYisrKTtlbHNlIGZvcihCPVIuZ2V0VWludDgoYisrKSxUPS1UO1QtLTspQ1tGKytdPUI7VD1SLmdldEludDE2KGIsITApLGIrPTJ9d2hpbGUoYjxJLm51bUJ5dGVzKTtpZihUIT09LTMyNzY4fHxGPEMubGVuZ3RoKXRocm93IlVuZXhwZWN0ZWQgZW5kIG9mIG1hc2sgUkxFIGVuY29kaW5nIjtOPW5ldyBVaW50OEFycmF5KEUpO3ZhciBVPTAsUT0wO2ZvcihRPTA7UTxFO1ErKylRJjc/KFU9Q1tRPj4zXSxVPDw9USY3KTpVPUNbUT4+M10sVSYxMjgmJihOW1FdPTEpO0EucGl4ZWxzLnJlc3VsdE1hc2s9TixJLmJpdHNldD1DLGQrPUkubnVtQnl0ZXN9cmV0dXJuIEEucHRyPWQsQS5tYXNrPUksITB9LHJlYWREYXRhT25lU3dlZXA6ZnVuY3Rpb24oaCxBLGQpe3ZhciBmPUEucHRyLEU9QS5oZWFkZXJJbmZvLF89RS5udW1EaW1zLFI9RS53aWR0aCpFLmhlaWdodCxJPUUuaW1hZ2VUeXBlLEM9RS5udW1WYWxpZFBpeGVsKm8uZ2V0RGF0YVR5cGVTaXplKEkpKl8sTixUPUEucGl4ZWxzLnJlc3VsdE1hc2s7aWYoZD09PVVpbnQ4QXJyYXkpTj1uZXcgVWludDhBcnJheShoLGYsQyk7ZWxzZXt2YXIgYj1uZXcgQXJyYXlCdWZmZXIoQyksRj1uZXcgVWludDhBcnJheShiKTtGLnNldChuZXcgVWludDhBcnJheShoLGYsQykpLE49bmV3IGQoYil9aWYoTi5sZW5ndGg9PT1SKl8pQS5waXhlbHMucmVzdWx0UGl4ZWxzPU47ZWxzZXtBLnBpeGVscy5yZXN1bHRQaXhlbHM9bmV3IGQoUipfKTt2YXIgQj0wLFU9MCxRPTAsTT0wO2lmKF8+MSlmb3IoUT0wO1E8XztRKyspZm9yKE09USpSLFU9MDtVPFI7VSsrKVRbVV0mJihBLnBpeGVscy5yZXN1bHRQaXhlbHNbTStVXT1OW0IrK10pO2Vsc2UgZm9yKFU9MDtVPFI7VSsrKVRbVV0mJihBLnBpeGVscy5yZXN1bHRQaXhlbHNbVV09TltCKytdKX1yZXR1cm4gZis9QyxBLnB0cj1mLCEwfSxyZWFkSHVmZm1hblRyZWU6ZnVuY3Rpb24oaCxBKXt2YXIgZD10aGlzLkhVRkZNQU5fTFVUX0JJVFNfTUFYLGY9bmV3IERhdGFWaWV3KGgsQS5wdHIsMTYpO0EucHRyKz0xNjt2YXIgRT1mLmdldEludDMyKDAsITApO2lmKEU8Mil0aHJvdyJ1bnN1cHBvcnRlZCBIdWZmbWFuIHZlcnNpb24iO3ZhciBfPWYuZ2V0SW50MzIoNCwhMCksUj1mLmdldEludDMyKDgsITApLEk9Zi5nZXRJbnQzMigxMiwhMCk7aWYoUj49SSlyZXR1cm4hMTt2YXIgQz1uZXcgVWludDMyQXJyYXkoSS1SKTtvLmRlY29kZUJpdHMoaCxBLEMpO3ZhciBOPVtdLFQsYixGLEI7Zm9yKFQ9UjtUPEk7VCsrKWI9VC0oVDxfPzA6XyksTltiXT17Zmlyc3Q6Q1tULVJdLHNlY29uZDpudWxsfTt2YXIgVT1oLmJ5dGVMZW5ndGgtQS5wdHIsUT1NYXRoLmNlaWwoVS80KSxNPW5ldyBBcnJheUJ1ZmZlcihRKjQpLGs9bmV3IFVpbnQ4QXJyYXkoTSk7ay5zZXQobmV3IFVpbnQ4QXJyYXkoaCxBLnB0cixVKSk7dmFyIHk9bmV3IFVpbnQzMkFycmF5KE0pLGM9MCxnLE89MDtmb3IoZz15WzBdLFQ9UjtUPEk7VCsrKWI9VC0oVDxfPzA6XyksQj1OW2JdLmZpcnN0LEI+MCYmKE5bYl0uc2Vjb25kPWc8PGM+Pj4zMi1CLDMyLWM+PUI/KGMrPUIsYz09PTMyJiYoYz0wLE8rKyxnPXlbT10pKTooYys9Qi0zMixPKyssZz15W09dLE5bYl0uc2Vjb25kfD1nPj4+MzItYykpO3ZhciBEPTAsdz0wLHg9bmV3IHI7Zm9yKFQ9MDtUPE4ubGVuZ3RoO1QrKylOW1RdIT09dm9pZCAwJiYoRD1NYXRoLm1heChELE5bVF0uZmlyc3QpKTtEPj1kP3c9ZDp3PUQsRD49MzAmJmNvbnNvbGUubG9nKCJXQVJuaW5nLCBsYXJnZSBOVU0gTFVUIEJJVFMgSVMgIitEKTt2YXIgSD1bXSxqLFgsdHQsRyxJdCxndDtmb3IoVD1SO1Q8STtUKyspaWYoYj1ULShUPF8/MDpfKSxCPU5bYl0uZmlyc3QsQj4wKWlmKGo9W0IsYl0sQjw9dylmb3IoWD1OW2JdLnNlY29uZDw8dy1CLHR0PTE8PHctQixGPTA7Rjx0dDtGKyspSFtYfEZdPWo7ZWxzZSBmb3IoWD1OW2JdLnNlY29uZCxndD14LEc9Qi0xO0c+PTA7Ry0tKUl0PVg+Pj5HJjEsSXQ/KGd0LnJpZ2h0fHwoZ3QucmlnaHQ9bmV3IHIpLGd0PWd0LnJpZ2h0KTooZ3QubGVmdHx8KGd0LmxlZnQ9bmV3IHIpLGd0PWd0LmxlZnQpLEc9PT0wJiYhZ3QudmFsJiYoZ3QudmFsPWpbMV0pO3JldHVybntkZWNvZGVMdXQ6SCxudW1CaXRzTFVUUWljazp3LG51bUJpdHNMVVQ6RCx0cmVlOngsc3R1ZmZlZERhdGE6eSxzcmNQdHI6TyxiaXRQb3M6Y319LHJlYWRIdWZmbWFuOmZ1bmN0aW9uKGgsQSxkKXt2YXIgZj1BLmhlYWRlckluZm8sRT1mLm51bURpbXMsXz1BLmhlYWRlckluZm8uaGVpZ2h0LFI9QS5oZWFkZXJJbmZvLndpZHRoLEk9UipfLEM9dGhpcy5yZWFkSHVmZm1hblRyZWUoaCxBKSxOPUMuZGVjb2RlTHV0LFQ9Qy50cmVlLGI9Qy5zdHVmZmVkRGF0YSxGPUMuc3JjUHRyLEI9Qy5iaXRQb3MsVT1DLm51bUJpdHNMVVRRaWNrLFE9Qy5udW1CaXRzTFVULE09QS5oZWFkZXJJbmZvLmltYWdlVHlwZT09PTA/MTI4OjAsayx5LGMsZz1BLnBpeGVscy5yZXN1bHRNYXNrLE8sRCx3LHgsSCxqLFgsdHQ9MDtCPjAmJihGKyssQj0wKTt2YXIgRz1iW0ZdLEl0PUEuZW5jb2RlTW9kZT09PTEsZ3Q9bmV3IGQoSSpFKSxZdD1ndCxVdDtmb3IoVXQ9MDtVdDxmLm51bURpbXM7VXQrKyl7aWYoRT4xJiYoWXQ9bmV3IGQoZ3QuYnVmZmVyLEkqVXQsSSksdHQ9MCksQS5oZWFkZXJJbmZvLm51bVZhbGlkUGl4ZWw9PT1SKl8pZm9yKGo9MCx4PTA7eDxfO3grKylmb3IoSD0wO0g8UjtIKyssaisrKXtpZih5PTAsTz1HPDxCPj4+MzItVSxEPU8sMzItQjxVJiYoT3w9YltGKzFdPj4+NjQtQi1VLEQ9TyksTltEXSl5PU5bRF1bMV0sQis9TltEXVswXTtlbHNlIGZvcihPPUc8PEI+Pj4zMi1RLEQ9TywzMi1CPFEmJihPfD1iW0YrMV0+Pj42NC1CLVEsRD1PKSxrPVQsWD0wO1g8UTtYKyspaWYodz1PPj4+US1YLTEmMSxrPXc/ay5yaWdodDprLmxlZnQsIShrLmxlZnR8fGsucmlnaHQpKXt5PWsudmFsLEI9QitYKzE7YnJlYWt9Qj49MzImJihCLT0zMixGKyssRz1iW0ZdKSxjPXktTSxJdD8oSD4wP2MrPXR0Ong+MD9jKz1ZdFtqLVJdOmMrPXR0LGMmPTI1NSxZdFtqXT1jLHR0PWMpOll0W2pdPWN9ZWxzZSBmb3Ioaj0wLHg9MDt4PF87eCsrKWZvcihIPTA7SDxSO0grKyxqKyspaWYoZ1tqXSl7aWYoeT0wLE89Rzw8Qj4+PjMyLVUsRD1PLDMyLUI8VSYmKE98PWJbRisxXT4+PjY0LUItVSxEPU8pLE5bRF0peT1OW0RdWzFdLEIrPU5bRF1bMF07ZWxzZSBmb3IoTz1HPDxCPj4+MzItUSxEPU8sMzItQjxRJiYoT3w9YltGKzFdPj4+NjQtQi1RLEQ9Tyksaz1ULFg9MDtYPFE7WCsrKWlmKHc9Tz4+PlEtWC0xJjEsaz13P2sucmlnaHQ6ay5sZWZ0LCEoay5sZWZ0fHxrLnJpZ2h0KSl7eT1rLnZhbCxCPUIrWCsxO2JyZWFrfUI+PTMyJiYoQi09MzIsRisrLEc9YltGXSksYz15LU0sSXQ/KEg+MCYmZ1tqLTFdP2MrPXR0Ong+MCYmZ1tqLVJdP2MrPVl0W2otUl06Yys9dHQsYyY9MjU1LFl0W2pdPWMsdHQ9Yyk6WXRbal09Y31BLnB0cj1BLnB0cisoRisxKSo0KyhCPjA/NDowKX1BLnBpeGVscy5yZXN1bHRQaXhlbHM9Z3R9LGRlY29kZUJpdHM6ZnVuY3Rpb24oaCxBLGQsZixFKXt7dmFyIF89QS5oZWFkZXJJbmZvLFI9Xy5maWxlVmVyc2lvbixJPTAsQz1uZXcgRGF0YVZpZXcoaCxBLnB0ciw1KSxOPUMuZ2V0VWludDgoMCk7SSsrO3ZhciBUPU4+PjYsYj1UPT09MD80OjMtVCxGPShOJjMyKT4wLEI9TiYzMSxVPTA7aWYoYj09PTEpVT1DLmdldFVpbnQ4KEkpLEkrKztlbHNlIGlmKGI9PT0yKVU9Qy5nZXRVaW50MTYoSSwhMCksSSs9MjtlbHNlIGlmKGI9PT00KVU9Qy5nZXRVaW50MzIoSSwhMCksSSs9NDtlbHNlIHRocm93IkludmFsaWQgdmFsaWQgcGl4ZWwgY291bnQgdHlwZSI7dmFyIFE9MipfLm1heFpFcnJvcixNLGsseSxjLGcsTyxELHcseCxILGo9Xy5udW1EaW1zPjE/Xy5tYXhWYWx1ZXNbRV06Xy56TWF4O2lmKEYpe2ZvcihBLmNvdW50ZXIubHV0Kyssdz1DLmdldFVpbnQ4KEkpLHg9QixJKyssYz1NYXRoLmNlaWwoKHctMSkqQi84KSxnPU1hdGguY2VpbChjLzQpLGs9bmV3IEFycmF5QnVmZmVyKGcqNCkseT1uZXcgVWludDhBcnJheShrKSxBLnB0cis9SSx5LnNldChuZXcgVWludDhBcnJheShoLEEucHRyLGMpKSxEPW5ldyBVaW50MzJBcnJheShrKSxBLnB0cis9YyxIPTA7dy0xPj4+SDspSCsrO2M9TWF0aC5jZWlsKFUqSC84KSxnPU1hdGguY2VpbChjLzQpLGs9bmV3IEFycmF5QnVmZmVyKGcqNCkseT1uZXcgVWludDhBcnJheShrKSx5LnNldChuZXcgVWludDhBcnJheShoLEEucHRyLGMpKSxNPW5ldyBVaW50MzJBcnJheShrKSxBLnB0cis9YyxSPj0zP089cy51bnN0dWZmTFVUMihELEIsdy0xLGYsUSxqKTpPPXMudW5zdHVmZkxVVChELEIsdy0xLGYsUSxqKSxSPj0zP3MudW5zdHVmZjIoTSxkLEgsVSxPKTpzLnVuc3R1ZmYoTSxkLEgsVSxPKX1lbHNlIEEuY291bnRlci5iaXRzdHVmZmVyKyssSD1CLEEucHRyKz1JLEg+MCYmKGM9TWF0aC5jZWlsKFUqSC84KSxnPU1hdGguY2VpbChjLzQpLGs9bmV3IEFycmF5QnVmZmVyKGcqNCkseT1uZXcgVWludDhBcnJheShrKSx5LnNldChuZXcgVWludDhBcnJheShoLEEucHRyLGMpKSxNPW5ldyBVaW50MzJBcnJheShrKSxBLnB0cis9YyxSPj0zP2Y9PW51bGw/cy5vcmlnaW5hbFVuc3R1ZmYyKE0sZCxILFUpOnMudW5zdHVmZjIoTSxkLEgsVSwhMSxmLFEsaik6Zj09bnVsbD9zLm9yaWdpbmFsVW5zdHVmZihNLGQsSCxVKTpzLnVuc3R1ZmYoTSxkLEgsVSwhMSxmLFEsaikpfX0scmVhZFRpbGVzOmZ1bmN0aW9uKGgsQSxkKXt2YXIgZj1BLmhlYWRlckluZm8sRT1mLndpZHRoLF89Zi5oZWlnaHQsUj1mLm1pY3JvQmxvY2tTaXplLEk9Zi5pbWFnZVR5cGUsQz1vLmdldERhdGFUeXBlU2l6ZShJKSxOPU1hdGguY2VpbChFL1IpLFQ9TWF0aC5jZWlsKF8vUik7QS5waXhlbHMubnVtQmxvY2tzWT1ULEEucGl4ZWxzLm51bUJsb2Nrc1g9TixBLnBpeGVscy5wdHI9MDt2YXIgYj0wLEY9MCxCPTAsVT0wLFE9MCxNPTAsaz0wLHk9MCxjPTAsZz0wLE89MCxEPTAsdz0wLHg9MCxIPTAsaj0wLFgsdHQsRyxJdCxndCxZdCxVdD1uZXcgZChSKlIpLEN0PV8lUnx8Uix6dD1FJVJ8fFIsa3QsSnQsV3Q9Zi5udW1EaW1zLGJ0LGVlPUEucGl4ZWxzLnJlc3VsdE1hc2ssY2U9QS5waXhlbHMucmVzdWx0UGl4ZWxzO2ZvcihCPTA7QjxUO0IrKylmb3IoUT1CIT09VC0xP1I6Q3QsVT0wO1U8TjtVKyspZm9yKE09VSE9PU4tMT9SOnp0LE89QipFKlIrVSpSLEQ9RS1NLGJ0PTA7YnQ8V3Q7YnQrKyl7aWYoV3Q+MSYmKGNlPW5ldyBkKEEucGl4ZWxzLnJlc3VsdFBpeGVscy5idWZmZXIsRSpfKmJ0KkMsRSpfKSksaz1oLmJ5dGVMZW5ndGgtQS5wdHIsWD1uZXcgRGF0YVZpZXcoaCxBLnB0cixNYXRoLm1pbigxMCxrKSksdHQ9e30saj0wLHk9WC5nZXRVaW50OCgwKSxqKyssYz15Pj42JjI1NSxnPXk+PjImMTUsZyE9PShVKlI+PjMmMTUpKXRocm93ImludGVncml0eSBpc3N1ZSI7aWYoWXQ9eSYzLFl0PjMpdGhyb3cgQS5wdHIrPWosIkludmFsaWQgYmxvY2sgZW5jb2RpbmcgKCIrWXQrIikiO2lmKFl0PT09Mil7QS5jb3VudGVyLmNvbnN0YW50KyssQS5wdHIrPWo7Y29udGludWV9ZWxzZSBpZihZdD09PTApe2lmKEEuY291bnRlci51bmNvbXByZXNzZWQrKyxBLnB0cis9aix3PVEqTSpDLHg9aC5ieXRlTGVuZ3RoLUEucHRyLHc9dzx4P3c6eCxHPW5ldyBBcnJheUJ1ZmZlcih3JUM9PT0wP3c6dytDLXclQyksSXQ9bmV3IFVpbnQ4QXJyYXkoRyksSXQuc2V0KG5ldyBVaW50OEFycmF5KGgsQS5wdHIsdykpLGd0PW5ldyBkKEcpLEg9MCxlZSlmb3IoYj0wO2I8UTtiKyspe2ZvcihGPTA7RjxNO0YrKyllZVtPXSYmKGNlW09dPWd0W0grK10pLE8rKztPKz1EfWVsc2UgZm9yKGI9MDtiPFE7YisrKXtmb3IoRj0wO0Y8TTtGKyspY2VbTysrXT1ndFtIKytdO08rPUR9QS5wdHIrPUgqQ31lbHNlIGlmKGt0PW8uZ2V0RGF0YVR5cGVVc2VkKEksYyksSnQ9by5nZXRPbmVQaXhlbCh0dCxqLGt0LFgpLGorPW8uZ2V0RGF0YVR5cGVTaXplKGt0KSxZdD09PTMpaWYoQS5wdHIrPWosQS5jb3VudGVyLmNvbnN0YW50b2Zmc2V0KyssZWUpZm9yKGI9MDtiPFE7YisrKXtmb3IoRj0wO0Y8TTtGKyspZWVbT10mJihjZVtPXT1KdCksTysrO08rPUR9ZWxzZSBmb3IoYj0wO2I8UTtiKyspe2ZvcihGPTA7RjxNO0YrKyljZVtPKytdPUp0O08rPUR9ZWxzZSBpZihBLnB0cis9aixvLmRlY29kZUJpdHMoaCxBLFV0LEp0LGJ0KSxqPTAsZWUpZm9yKGI9MDtiPFE7YisrKXtmb3IoRj0wO0Y8TTtGKyspZWVbT10mJihjZVtPXT1VdFtqKytdKSxPKys7Tys9RH1lbHNlIGZvcihiPTA7YjxRO2IrKyl7Zm9yKEY9MDtGPE07RisrKWNlW08rK109VXRbaisrXTtPKz1EfX19LGZvcm1hdEZpbGVJbmZvOmZ1bmN0aW9uKGgpe3JldHVybntmaWxlSWRlbnRpZmllclN0cmluZzpoLmhlYWRlckluZm8uZmlsZUlkZW50aWZpZXJTdHJpbmcsZmlsZVZlcnNpb246aC5oZWFkZXJJbmZvLmZpbGVWZXJzaW9uLGltYWdlVHlwZTpoLmhlYWRlckluZm8uaW1hZ2VUeXBlLGhlaWdodDpoLmhlYWRlckluZm8uaGVpZ2h0LHdpZHRoOmguaGVhZGVySW5mby53aWR0aCxudW1WYWxpZFBpeGVsOmguaGVhZGVySW5mby5udW1WYWxpZFBpeGVsLG1pY3JvQmxvY2tTaXplOmguaGVhZGVySW5mby5taWNyb0Jsb2NrU2l6ZSxibG9iU2l6ZTpoLmhlYWRlckluZm8uYmxvYlNpemUsbWF4WkVycm9yOmguaGVhZGVySW5mby5tYXhaRXJyb3IscGl4ZWxUeXBlOm8uZ2V0UGl4ZWxUeXBlKGguaGVhZGVySW5mby5pbWFnZVR5cGUpLGVvZk9mZnNldDpoLmVvZk9mZnNldCxtYXNrOmgubWFzaz97bnVtQnl0ZXM6aC5tYXNrLm51bUJ5dGVzfTpudWxsLHBpeGVsczp7bnVtQmxvY2tzWDpoLnBpeGVscy5udW1CbG9ja3NYLG51bUJsb2Nrc1k6aC5waXhlbHMubnVtQmxvY2tzWSxtYXhWYWx1ZTpoLmhlYWRlckluZm8uek1heCxtaW5WYWx1ZTpoLmhlYWRlckluZm8uek1pbixub0RhdGFWYWx1ZTpoLm5vRGF0YVZhbHVlfX19LGNvbnN0cnVjdENvbnN0YW50U3VyZmFjZTpmdW5jdGlvbihoKXt2YXIgQT1oLmhlYWRlckluZm8uek1heCxkPWguaGVhZGVySW5mby5udW1EaW1zLGY9aC5oZWFkZXJJbmZvLmhlaWdodCpoLmhlYWRlckluZm8ud2lkdGgsRT1mKmQsXz0wLFI9MCxJPTAsQz1oLnBpeGVscy5yZXN1bHRNYXNrO2lmKEMpaWYoZD4xKWZvcihfPTA7XzxkO18rKylmb3IoST1fKmYsUj0wO1I8ZjtSKyspQ1tSXSYmKGgucGl4ZWxzLnJlc3VsdFBpeGVsc1tJK1JdPUEpO2Vsc2UgZm9yKFI9MDtSPGY7UisrKUNbUl0mJihoLnBpeGVscy5yZXN1bHRQaXhlbHNbUl09QSk7ZWxzZSBpZihoLnBpeGVscy5yZXN1bHRQaXhlbHMuZmlsbCloLnBpeGVscy5yZXN1bHRQaXhlbHMuZmlsbChBKTtlbHNlIGZvcihSPTA7UjxFO1IrKyloLnBpeGVscy5yZXN1bHRQaXhlbHNbUl09QX0sZ2V0RGF0YVR5cGVBcnJheTpmdW5jdGlvbihoKXt2YXIgQTtzd2l0Y2goaCl7Y2FzZSAwOkE9SW50OEFycmF5O2JyZWFrO2Nhc2UgMTpBPVVpbnQ4QXJyYXk7YnJlYWs7Y2FzZSAyOkE9SW50MTZBcnJheTticmVhaztjYXNlIDM6QT1VaW50MTZBcnJheTticmVhaztjYXNlIDQ6QT1JbnQzMkFycmF5O2JyZWFrO2Nhc2UgNTpBPVVpbnQzMkFycmF5O2JyZWFrO2Nhc2UgNjpBPUZsb2F0MzJBcnJheTticmVhaztjYXNlIDc6QT1GbG9hdDY0QXJyYXk7YnJlYWs7ZGVmYXVsdDpBPUZsb2F0MzJBcnJheX1yZXR1cm4gQX0sZ2V0UGl4ZWxUeXBlOmZ1bmN0aW9uKGgpe3ZhciBBO3N3aXRjaChoKXtjYXNlIDA6QT0iUzgiO2JyZWFrO2Nhc2UgMTpBPSJVOCI7YnJlYWs7Y2FzZSAyOkE9IlMxNiI7YnJlYWs7Y2FzZSAzOkE9IlUxNiI7YnJlYWs7Y2FzZSA0OkE9IlMzMiI7YnJlYWs7Y2FzZSA1OkE9IlUzMiI7YnJlYWs7Y2FzZSA2OkE9IkYzMiI7YnJlYWs7Y2FzZSA3OkE9IkY2NCI7YnJlYWs7ZGVmYXVsdDpBPSJGMzIifXJldHVybiBBfSxpc1ZhbGlkUGl4ZWxWYWx1ZTpmdW5jdGlvbihoLEEpe2lmKEE9PW51bGwpcmV0dXJuITE7dmFyIGQ7c3dpdGNoKGgpe2Nhc2UgMDpkPUE+PS0xMjgmJkE8PTEyNzticmVhaztjYXNlIDE6ZD1BPj0wJiZBPD0yNTU7YnJlYWs7Y2FzZSAyOmQ9QT49LTMyNzY4JiZBPD0zMjc2NzticmVhaztjYXNlIDM6ZD1BPj0wJiZBPD02NTUzNjticmVhaztjYXNlIDQ6ZD1BPj0tMjE0NzQ4MzY0OCYmQTw9MjE0NzQ4MzY0NzticmVhaztjYXNlIDU6ZD1BPj0wJiZBPD00Mjk0OTY3Mjk2O2JyZWFrO2Nhc2UgNjpkPUE+PS0zNDAyNzk5OTM4NzkwMTQ4NGUyMiYmQTw9MzQwMjc5OTkzODc5MDE0ODRlMjI7YnJlYWs7Y2FzZSA3OmQ9QT49NWUtMzI0JiZBPD0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7YnJlYWs7ZGVmYXVsdDpkPSExfXJldHVybiBkfSxnZXREYXRhVHlwZVNpemU6ZnVuY3Rpb24oaCl7dmFyIEE9MDtzd2l0Y2goaCl7Y2FzZSAwOmNhc2UgMTpBPTE7YnJlYWs7Y2FzZSAyOmNhc2UgMzpBPTI7YnJlYWs7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6QT00O2JyZWFrO2Nhc2UgNzpBPTg7YnJlYWs7ZGVmYXVsdDpBPWh9cmV0dXJuIEF9LGdldERhdGFUeXBlVXNlZDpmdW5jdGlvbihoLEEpe3ZhciBkPWg7c3dpdGNoKGgpe2Nhc2UgMjpjYXNlIDQ6ZD1oLUE7YnJlYWs7Y2FzZSAzOmNhc2UgNTpkPWgtMipBO2JyZWFrO2Nhc2UgNjpBPT09MD9kPWg6QT09PTE/ZD0yOmQ9MTticmVhaztjYXNlIDc6QT09PTA/ZD1oOmQ9aC0yKkErMTticmVhaztkZWZhdWx0OmQ9aDticmVha31yZXR1cm4gZH0sZ2V0T25lUGl4ZWw6ZnVuY3Rpb24oaCxBLGQsZil7dmFyIEU9MDtzd2l0Y2goZCl7Y2FzZSAwOkU9Zi5nZXRJbnQ4KEEpO2JyZWFrO2Nhc2UgMTpFPWYuZ2V0VWludDgoQSk7YnJlYWs7Y2FzZSAyOkU9Zi5nZXRJbnQxNihBLCEwKTticmVhaztjYXNlIDM6RT1mLmdldFVpbnQxNihBLCEwKTticmVhaztjYXNlIDQ6RT1mLmdldEludDMyKEEsITApO2JyZWFrO2Nhc2UgNTpFPWYuZ2V0VUludDMyKEEsITApO2JyZWFrO2Nhc2UgNjpFPWYuZ2V0RmxvYXQzMihBLCEwKTticmVhaztjYXNlIDc6RT1mLmdldEZsb2F0NjQoQSwhMCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJ0aGUgZGVjb2RlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoaXMgcGl4ZWwgdHlwZSJ9cmV0dXJuIEV9fSxyPWZ1bmN0aW9uKGgsQSxkKXt0aGlzLnZhbD1oLHRoaXMubGVmdD1BLHRoaXMucmlnaHQ9ZH0sYT17ZGVjb2RlOmZ1bmN0aW9uKGgsQSl7QT1BfHx7fTt2YXIgZD1BLm5vRGF0YVZhbHVlLGY9MCxFPXt9O2lmKEUucHRyPUEuaW5wdXRPZmZzZXR8fDAsRS5waXhlbHM9e30sISFvLnJlYWRIZWFkZXJJbmZvKGgsRSkpe3ZhciBfPUUuaGVhZGVySW5mbyxSPV8uZmlsZVZlcnNpb24sST1vLmdldERhdGFUeXBlQXJyYXkoXy5pbWFnZVR5cGUpO28ucmVhZE1hc2soaCxFKSxfLm51bVZhbGlkUGl4ZWwhPT1fLndpZHRoKl8uaGVpZ2h0JiYhRS5waXhlbHMucmVzdWx0TWFzayYmKEUucGl4ZWxzLnJlc3VsdE1hc2s9QS5tYXNrRGF0YSk7dmFyIEM9Xy53aWR0aCpfLmhlaWdodDtpZihFLnBpeGVscy5yZXN1bHRQaXhlbHM9bmV3IEkoQypfLm51bURpbXMpLEUuY291bnRlcj17b25lc3dlZXA6MCx1bmNvbXByZXNzZWQ6MCxsdXQ6MCxiaXRzdHVmZmVyOjAsY29uc3RhbnQ6MCxjb25zdGFudG9mZnNldDowfSxfLm51bVZhbGlkUGl4ZWwhPT0wKWlmKF8uek1heD09PV8uek1pbilvLmNvbnN0cnVjdENvbnN0YW50U3VyZmFjZShFKTtlbHNlIGlmKFI+PTQmJm8uY2hlY2tNaW5NYXhSYW5nZXMoaCxFKSlvLmNvbnN0cnVjdENvbnN0YW50U3VyZmFjZShFKTtlbHNle3ZhciBOPW5ldyBEYXRhVmlldyhoLEUucHRyLDIpLFQ9Ti5nZXRVaW50OCgwKTtpZihFLnB0cisrLFQpby5yZWFkRGF0YU9uZVN3ZWVwKGgsRSxJKTtlbHNlIGlmKFI+MSYmXy5pbWFnZVR5cGU8PTEmJk1hdGguYWJzKF8ubWF4WkVycm9yLS41KTwxZS01KXt2YXIgYj1OLmdldFVpbnQ4KDEpO2lmKEUucHRyKyssRS5lbmNvZGVNb2RlPWIsYj4yfHxSPDQmJmI+MSl0aHJvdyJJbnZhbGlkIEh1ZmZtYW4gZmxhZyAiK2I7Yj9vLnJlYWRIdWZmbWFuKGgsRSxJKTpvLnJlYWRUaWxlcyhoLEUsSSl9ZWxzZSBvLnJlYWRUaWxlcyhoLEUsSSl9RS5lb2ZPZmZzZXQ9RS5wdHI7dmFyIEY7QS5pbnB1dE9mZnNldD8oRj1FLmhlYWRlckluZm8uYmxvYlNpemUrQS5pbnB1dE9mZnNldC1FLnB0cixNYXRoLmFicyhGKT49MSYmKEUuZW9mT2Zmc2V0PUEuaW5wdXRPZmZzZXQrRS5oZWFkZXJJbmZvLmJsb2JTaXplKSk6KEY9RS5oZWFkZXJJbmZvLmJsb2JTaXplLUUucHRyLE1hdGguYWJzKEYpPj0xJiYoRS5lb2ZPZmZzZXQ9RS5oZWFkZXJJbmZvLmJsb2JTaXplKSk7dmFyIEI9e3dpZHRoOl8ud2lkdGgsaGVpZ2h0Ol8uaGVpZ2h0LHBpeGVsRGF0YTpFLnBpeGVscy5yZXN1bHRQaXhlbHMsbWluVmFsdWU6Xy56TWluLG1heFZhbHVlOl8uek1heCx2YWxpZFBpeGVsQ291bnQ6Xy5udW1WYWxpZFBpeGVsLGRpbUNvdW50Ol8ubnVtRGltcyxkaW1TdGF0czp7bWluVmFsdWVzOl8ubWluVmFsdWVzLG1heFZhbHVlczpfLm1heFZhbHVlc30sbWFza0RhdGE6RS5waXhlbHMucmVzdWx0TWFza307aWYoRS5waXhlbHMucmVzdWx0TWFzayYmby5pc1ZhbGlkUGl4ZWxWYWx1ZShfLmltYWdlVHlwZSxkKSl7dmFyIFU9RS5waXhlbHMucmVzdWx0TWFzaztmb3IoZj0wO2Y8QztmKyspVVtmXXx8KEIucGl4ZWxEYXRhW2ZdPWQpO0Iubm9EYXRhVmFsdWU9ZH1yZXR1cm4gRS5ub0RhdGFWYWx1ZT1kLEEucmV0dXJuRmlsZUluZm8mJihCLmZpbGVJbmZvPW8uZm9ybWF0RmlsZUluZm8oRSkpLEJ9fSxnZXRCYW5kQ291bnQ6ZnVuY3Rpb24oaCl7dmFyIEE9MCxkPTAsZj17fTtmb3IoZi5wdHI9MCxmLnBpeGVscz17fTtkPGguYnl0ZUxlbmd0aC01ODspby5yZWFkSGVhZGVySW5mbyhoLGYpLGQrPWYuaGVhZGVySW5mby5ibG9iU2l6ZSxBKyssZi5wdHI9ZDtyZXR1cm4gQX19O3JldHVybiBhfSgpLGk9ZnVuY3Rpb24oKXt2YXIgcz1uZXcgQXJyYXlCdWZmZXIoNCksbz1uZXcgVWludDhBcnJheShzKSxyPW5ldyBVaW50MzJBcnJheShzKTtyZXR1cm4gclswXT0xLG9bMF09PT0xfSgpLG49e2RlY29kZTpmdW5jdGlvbihzLG8pe2lmKCFpKXRocm93IkJpZyBlbmRpYW4gc3lzdGVtIGlzIG5vdCBzdXBwb3J0ZWQuIjtvPW98fHt9O3ZhciByPW8uaW5wdXRPZmZzZXR8fDAsYT1uZXcgVWludDhBcnJheShzLHIsMTApLGg9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpLEEsZDtpZihoLnRyaW0oKT09PSJDbnRaSW1hZ2UiKUE9dCxkPTE7ZWxzZSBpZihoLnN1YnN0cmluZygwLDUpPT09IkxlcmMyIilBPWUsZD0yO2Vsc2UgdGhyb3ciVW5leHBlY3RlZCBmaWxlIGlkZW50aWZpZXIgc3RyaW5nOiAiK2g7Zm9yKHZhciBmPTAsRT1zLmJ5dGVMZW5ndGgtMTAsXyxSPVtdLEksQyxOPXt3aWR0aDowLGhlaWdodDowLHBpeGVsczpbXSxwaXhlbFR5cGU6by5waXhlbFR5cGUsbWFzazpudWxsLHN0YXRpc3RpY3M6W119O3I8RTspe3ZhciBUPUEuZGVjb2RlKHMse2lucHV0T2Zmc2V0OnIsZW5jb2RlZE1hc2tEYXRhOl8sbWFza0RhdGE6QyxyZXR1cm5NYXNrOmY9PT0wLHJldHVybkVuY29kZWRNYXNrOmY9PT0wLHJldHVybkZpbGVJbmZvOiEwLHBpeGVsVHlwZTpvLnBpeGVsVHlwZXx8bnVsbCxub0RhdGFWYWx1ZTpvLm5vRGF0YVZhbHVlfHxudWxsfSk7cj1ULmZpbGVJbmZvLmVvZk9mZnNldCxmPT09MCYmKF89VC5lbmNvZGVkTWFza0RhdGEsQz1ULm1hc2tEYXRhLE4ud2lkdGg9VC53aWR0aCxOLmhlaWdodD1ULmhlaWdodCxOLmRpbUNvdW50PVQuZGltQ291bnR8fDEsTi5waXhlbFR5cGU9VC5waXhlbFR5cGV8fFQuZmlsZUluZm8ucGl4ZWxUeXBlLE4ubWFzaz1ULm1hc2tEYXRhKSxkPjEmJlQuZmlsZUluZm8ubWFzayYmVC5maWxlSW5mby5tYXNrLm51bUJ5dGVzPjAmJlIucHVzaChULm1hc2tEYXRhKSxmKyssTi5waXhlbHMucHVzaChULnBpeGVsRGF0YSksTi5zdGF0aXN0aWNzLnB1c2goe21pblZhbHVlOlQubWluVmFsdWUsbWF4VmFsdWU6VC5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpULm5vRGF0YVZhbHVlLGRpbVN0YXRzOlQuZGltU3RhdHN9KX12YXIgYixGLEI7aWYoZD4xJiZSLmxlbmd0aD4xKXtmb3IoQj1OLndpZHRoKk4uaGVpZ2h0LE4uYmFuZE1hc2tzPVIsQz1uZXcgVWludDhBcnJheShCKSxDLnNldChSWzBdKSxiPTE7YjxSLmxlbmd0aDtiKyspZm9yKEk9UltiXSxGPTA7RjxCO0YrKylDW0ZdPUNbRl0mSVtGXTtOLm1hc2tEYXRhPUN9cmV0dXJuIE59fTt0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShbXSxmdW5jdGlvbigpe3JldHVybiBufSk6dHlwZW9mIGJnPCJ1IiYmYmcuZXhwb3J0cz9iZy5leHBvcnRzPW46dGhpcy5MZXJjPW59KSgpfSk7dmFyIGtCPXt9O0hlKGtCLHtkZWZhdWx0OigpPT5FX3R9KTtmdW5jdGlvbiBmX3QodCxlKXtpZih0LmVuY29kaW5nPT09cTYuTEVSQyl7bGV0IHM7dHJ5e3M9bksuZGVmYXVsdC5kZWNvZGUodC5oZWlnaHRtYXApfWNhdGNoKHIpe3Rocm93IG5ldyBrZShyKX1pZihzLnN0YXRpc3RpY3NbMF0ubWluVmFsdWU9PT1OdW1iZXIuTUFYX1ZBTFVFKXRocm93IG5ldyBrZSgiSW52YWxpZCB0aWxlIGRhdGEiKTt0LmhlaWdodG1hcD1zLnBpeGVsc1swXSx0LndpZHRoPXMud2lkdGgsdC5oZWlnaHQ9cy5oZWlnaHR9dC5lbGxpcHNvaWQ9b3QuY2xvbmUodC5lbGxpcHNvaWQpLHQucmVjdGFuZ2xlPVh0LmNsb25lKHQucmVjdGFuZ2xlKTtsZXQgaT10Sy5jb21wdXRlVmVydGljZXModCksbj1pLnZlcnRpY2VzO3JldHVybiBlLnB1c2gobi5idWZmZXIpLHt2ZXJ0aWNlczpuLmJ1ZmZlcixudW1iZXJPZkF0dHJpYnV0ZXM6aS5lbmNvZGluZy5zdHJpZGUsbWluaW11bUhlaWdodDppLm1pbmltdW1IZWlnaHQsbWF4aW11bUhlaWdodDppLm1heGltdW1IZWlnaHQsZ3JpZFdpZHRoOnQud2lkdGgsZ3JpZEhlaWdodDp0LmhlaWdodCxib3VuZGluZ1NwaGVyZTNEOmkuYm91bmRpbmdTcGhlcmUzRCxvcmllbnRlZEJvdW5kaW5nQm94Omkub3JpZW50ZWRCb3VuZGluZ0JveCxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTppLm9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlLGVuY29kaW5nOmkuZW5jb2Rpbmcsd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6aS53ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aCxzb3V0aEluZGljZXNFYXN0VG9XZXN0Omkuc291dGhJbmRpY2VzRWFzdFRvV2VzdCxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDppLmVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6aS5ub3J0aEluZGljZXNXZXN0VG9FYXN0fX12YXIgbkssRV90LExCPVMoKCk9PntPZSgpOyQ2KCk7ZUsoKTtwbigpO1BzKCk7bks9Y28oaUsoKSwxKTtOcygpO0VfdD1XaShmX3QpfSk7ZnVuY3Rpb24geG8oKXtZLnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9ZnVuY3Rpb24gYUsodCxlKXtsZXQgaT1uZXcgQXJyYXkoZSksbj1uZXcgQXJyYXkodCkscz1uZXcgQXJyYXkoZSksbz1uZXcgQXJyYXkodCkscjtmb3Iocj0wO3I8dDsrK3Ipb1tyXT1yLG5bcl09dCplLTEtcjtmb3Iocj0wO3I8ZTsrK3Ipc1tyXT0ocisxKSp0LTEsaVtyXT0oZS1yLTEpKnQ7cmV0dXJue3dlc3RJbmRpY2VzU291dGhUb05vcnRoOmksc291dGhJbmRpY2VzRWFzdFRvV2VzdDpuLGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOnMsbm9ydGhJbmRpY2VzV2VzdFRvRWFzdDpvfX1mdW5jdGlvbiBBSyh0LGUsaSxuKXtsZXQgcz0wO2ZvcihsZXQgbz0wO288ZS0xOysrbyl7Zm9yKGxldCByPTA7cjx0LTE7KytyKXtsZXQgYT1zLGg9YSt0LEE9aCsxLGQ9YSsxO2lbbisrXT1hLGlbbisrXT1oLGlbbisrXT1kLGlbbisrXT1kLGlbbisrXT1oLGlbbisrXT1BLCsrc30rK3N9fWZ1bmN0aW9uIFlnKHQsZSxpLG4pe2xldCBzPXRbMF0sbz10Lmxlbmd0aDtmb3IobGV0IHI9MTtyPG87KytyKXtsZXQgYT10W3JdO2lbbisrXT1zLGlbbisrXT1hLGlbbisrXT1lLGlbbisrXT1lLGlbbisrXT1hLGlbbisrXT1lKzEscz1hLCsrZX1yZXR1cm4gbn12YXIgc0ssb0ssckssaEssY0s9UygoKT0+e210KCk7T3QoKTtEaSgpO19lKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeG8ucHJvdG90eXBlLHtlcnJvckV2ZW50OntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY3JlZGl0OntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sdGlsaW5nU2NoZW1lOntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0saGFzV2F0ZXJNYXNrOntnZXQ6WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0saGFzVmVydGV4Tm9ybWFsczp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGF2YWlsYWJpbGl0eTp7Z2V0OlkudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7c0s9W107eG8uZ2V0UmVndWxhckdyaWRJbmRpY2VzPWZ1bmN0aW9uKHQsZSl7aWYodCplPj1MLkZPVVJfR0lHQUJZVEVTKXRocm93IG5ldyBZKCJUaGUgdG90YWwgbnVtYmVyIG9mIHZlcnRpY2VzICh3aWR0aCAqIGhlaWdodCkgbXVzdCBiZSBsZXNzIHRoYW4gNCwyOTQsOTY3LDI5Ni4iKTtsZXQgaT1zS1t0XTttKGkpfHwoc0tbdF09aT1bXSk7bGV0IG49aVtlXTtyZXR1cm4gbShuKXx8KHQqZTxMLlNJWFRZX0ZPVVJfS0lMT0JZVEVTP249aVtlXT1uZXcgVWludDE2QXJyYXkoKHQtMSkqKGUtMSkqNik6bj1pW2VdPW5ldyBVaW50MzJBcnJheSgodC0xKSooZS0xKSo2KSxBSyh0LGUsbiwwKSksbn07b0s9W107eG8uZ2V0UmVndWxhckdyaWRJbmRpY2VzQW5kRWRnZUluZGljZXM9ZnVuY3Rpb24odCxlKXtpZih0KmU+PUwuRk9VUl9HSUdBQllURVMpdGhyb3cgbmV3IFkoIlRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgKHdpZHRoICogaGVpZ2h0KSBtdXN0IGJlIGxlc3MgdGhhbiA0LDI5NCw5NjcsMjk2LiIpO2xldCBpPW9LW3RdO20oaSl8fChvS1t0XT1pPVtdKTtsZXQgbj1pW2VdO2lmKCFtKG4pKXtsZXQgcz14by5nZXRSZWd1bGFyR3JpZEluZGljZXModCxlKSxvPWFLKHQsZSkscj1vLndlc3RJbmRpY2VzU291dGhUb05vcnRoLGE9by5zb3V0aEluZGljZXNFYXN0VG9XZXN0LGg9by5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxBPW8ubm9ydGhJbmRpY2VzV2VzdFRvRWFzdDtuPWlbZV09e2luZGljZXM6cyx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpyLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6YSxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpoLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6QX19cmV0dXJuIG59O3JLPVtdO3hvLmdldFJlZ3VsYXJHcmlkQW5kU2tpcnRJbmRpY2VzQW5kRWRnZUluZGljZXM9ZnVuY3Rpb24odCxlKXtpZih0KmU+PUwuRk9VUl9HSUdBQllURVMpdGhyb3cgbmV3IFkoIlRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgKHdpZHRoICogaGVpZ2h0KSBtdXN0IGJlIGxlc3MgdGhhbiA0LDI5NCw5NjcsMjk2LiIpO2xldCBpPXJLW3RdO20oaSl8fChyS1t0XT1pPVtdKTtsZXQgbj1pW2VdO2lmKCFtKG4pKXtsZXQgcz10KmUsbz0odC0xKSooZS0xKSo2LHI9dCoyK2UqMixhPU1hdGgubWF4KDAsci00KSo2LGg9cytyLEE9bythLGQ9YUsodCxlKSxmPWQud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsRT1kLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsXz1kLmVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoLFI9ZC5ub3J0aEluZGljZXNXZXN0VG9FYXN0LEk9dGUuY3JlYXRlVHlwZWRBcnJheShoLEEpO0FLKHQsZSxJLDApLHhvLmFkZFNraXJ0SW5kaWNlcyhmLEUsXyxSLHMsSSxvKSxuPWlbZV09e2luZGljZXM6SSx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpmLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6RSxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpfLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6UixpbmRleENvdW50V2l0aG91dFNraXJ0czpvfX1yZXR1cm4gbn07eG8uYWRkU2tpcnRJbmRpY2VzPWZ1bmN0aW9uKHQsZSxpLG4scyxvLHIpe2xldCBhPXM7cj1ZZyh0LGEsbyxyKSxhKz10Lmxlbmd0aCxyPVlnKGUsYSxvLHIpLGErPWUubGVuZ3RoLHI9WWcoaSxhLG8sciksYSs9aS5sZW5ndGgsWWcobixhLG8scil9O3hvLmhlaWdodG1hcFRlcnJhaW5RdWFsaXR5PS4yNTt4by5nZXRFc3RpbWF0ZWRMZXZlbFplcm9HZW9tZXRyaWNFcnJvckZvckFIZWlnaHRtYXA9ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Lm1heGltdW1SYWRpdXMqMipNYXRoLlBJKnhvLmhlaWdodG1hcFRlcnJhaW5RdWFsaXR5LyhlKmkpfTt4by5wcm90b3R5cGUucmVxdWVzdFRpbGVHZW9tZXRyeT1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO3hvLnByb3RvdHlwZS5nZXRMZXZlbE1heGltdW1HZW9tZXRyaWNFcnJvcj1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO3hvLnByb3RvdHlwZS5nZXRUaWxlRGF0YUF2YWlsYWJsZT1ZLnRocm93SW5zdGFudGlhdGlvbkVycm9yO3hvLnByb3RvdHlwZS5sb2FkVGlsZURhdGFBdmFpbGFiaWxpdHk9WS50aHJvd0luc3RhbnRpYXRpb25FcnJvcjtoSz14b30pO3ZhciB3Qj17fTtIZSh3Qix7ZGVmYXVsdDooKT0+SV90fSk7ZnVuY3Rpb24gWl90KHQsZSl7bGV0IGk9dC5xdWFudGl6ZWRWZXJ0aWNlcyxuPWkubGVuZ3RoLzMscz10Lm9jdEVuY29kZWROb3JtYWxzLG89dC53ZXN0SW5kaWNlcy5sZW5ndGgrdC5lYXN0SW5kaWNlcy5sZW5ndGgrdC5zb3V0aEluZGljZXMubGVuZ3RoK3Qubm9ydGhJbmRpY2VzLmxlbmd0aCxyPXQuaW5jbHVkZVdlYk1lcmNhdG9yVCxhPXQuZXhhZ2dlcmF0aW9uLGg9dC5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodCxkPWEhPT0xLGY9WHQuY2xvbmUodC5yZWN0YW5nbGUpLEU9Zi53ZXN0LF89Zi5zb3V0aCxSPWYuZWFzdCxJPWYubm9ydGgsQz1vdC5jbG9uZSh0LmVsbGlwc29pZCksTj10Lm1pbmltdW1IZWlnaHQsVD10Lm1heGltdW1IZWlnaHQsYj10LnJlbGF0aXZlVG9DZW50ZXIsRj1Jbi5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShiLEMpLEI9YXQuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKEYsbmV3IGF0KSxVLFE7ciYmKFU9a3MuZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShfKSxRPTEvKGtzLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoSSktVSkpO2xldCBNPWkuc3ViYXJyYXkoMCxuKSxrPWkuc3ViYXJyYXkobiwyKm4pLHk9aS5zdWJhcnJheShuKjIsMypuKSxjPW0ocyksZz1uZXcgQXJyYXkobiksTz1uZXcgQXJyYXkobiksRD1uZXcgQXJyYXkobiksdz1yP25ldyBBcnJheShuKTpbXSx4PWQ/bmV3IEFycmF5KG4pOltdLEg9X190O0gueD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksSC55PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxILno9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2xldCBqPVJfdDtqLng9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGoueT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksai56PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtsZXQgWD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksdHQ9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEc9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLEl0PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtmb3IobGV0IFllPTA7WWU8bjsrK1llKXtsZXQgR2k9TVtZZV0sQW49a1tZZV0sTmU9R2kveUIsZWk9QW4veUIsX249TC5sZXJwKE4sVCx5W1llXS95Qik7WXMubG9uZ2l0dWRlPUwubGVycChFLFIsTmUpLFlzLmxhdGl0dWRlPUwubGVycChfLEksZWkpLFlzLmhlaWdodD1fbixYPU1hdGgubWluKFlzLmxvbmdpdHVkZSxYKSx0dD1NYXRoLm1heChZcy5sb25naXR1ZGUsdHQpLEc9TWF0aC5taW4oWXMubGF0aXR1ZGUsRyksSXQ9TWF0aC5tYXgoWXMubGF0aXR1ZGUsSXQpO2xldCBocz1DLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFlzKTtnW1llXT1uZXcgbnQoTmUsZWkpLE9bWWVdPV9uLERbWWVdPWhzLHImJih3W1llXT0oa3MuZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShZcy5sYXRpdHVkZSktVSkqUSksZCYmKHhbWWVdPUMuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGhzKSksYXQubXVsdGlwbHlCeVBvaW50KEIsaHMsVVIpLGwubWluaW11bUJ5Q29tcG9uZW50KFVSLEgsSCksbC5tYXhpbXVtQnlDb21wb25lbnQoVVIsaixqKX1sZXQgZ3Q9T2codC53ZXN0SW5kaWNlcyxmdW5jdGlvbihZZSxHaSl7cmV0dXJuIGdbWWVdLnktZ1tHaV0ueX0pLFl0PU9nKHQuZWFzdEluZGljZXMsZnVuY3Rpb24oWWUsR2kpe3JldHVybiBnW0dpXS55LWdbWWVdLnl9KSxVdD1PZyh0LnNvdXRoSW5kaWNlcyxmdW5jdGlvbihZZSxHaSl7cmV0dXJuIGdbR2ldLngtZ1tZZV0ueH0pLEN0PU9nKHQubm9ydGhJbmRpY2VzLGZ1bmN0aW9uKFllLEdpKXtyZXR1cm4gZ1tZZV0ueC1nW0dpXS54fSksenQ7TjwwJiYoenQ9bmV3IGRBKEMpLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZChiLEQsTikpO2xldCBrdD1OO2t0PU1hdGgubWluKGt0LFZnKHQud2VzdEluZGljZXMsdC53ZXN0U2tpcnRIZWlnaHQsTyxnLGYsQyxCLEgsaikpLGt0PU1hdGgubWluKGt0LFZnKHQuc291dGhJbmRpY2VzLHQuc291dGhTa2lydEhlaWdodCxPLGcsZixDLEIsSCxqKSksa3Q9TWF0aC5taW4oa3QsVmcodC5lYXN0SW5kaWNlcyx0LmVhc3RTa2lydEhlaWdodCxPLGcsZixDLEIsSCxqKSksa3Q9TWF0aC5taW4oa3QsVmcodC5ub3J0aEluZGljZXMsdC5ub3J0aFNraXJ0SGVpZ2h0LE8sZyxmLEMsQixILGopKTtsZXQgSnQ9bmV3IHBoKEgsaixiKSxXdD1uZXcgdmMoYixKdCxrdCxULEYsYyxyLGQsYSxoKSxidD1XdC5zdHJpZGUsZWU9bipidCtvKmJ0LGNlPW5ldyBGbG9hdDMyQXJyYXkoZWUpLGplPTA7Zm9yKGxldCBZZT0wO1llPG47KytZZSl7aWYoYyl7bGV0IEdpPVllKjI7S2YueD1zW0dpXSxLZi55PXNbR2krMV19amU9V3QuZW5jb2RlKGNlLGplLERbWWVdLGdbWWVdLE9bWWVdLEtmLHdbWWVdLHhbWWVdKX1sZXQgU2U9TWF0aC5tYXgoMCwoby00KSoyKSxVZT10LmluZGljZXMubGVuZ3RoK1NlKjMsTWU9dGUuY3JlYXRlVHlwZWRBcnJheShuK28sVWUpO01lLnNldCh0LmluZGljZXMsMCk7bGV0IENlPTFlLTQsRmU9KHR0LVgpKkNlLG5pPShJdC1HKSpDZSx6ZT0tRmUsQmU9MCxNaT1GZSxSaT0wLHNpPTAscWU9bmksT2k9MCxnbj0tbmksRGU9bipidDtyZXR1cm4gU2coY2UsRGUsZ3QsV3QsTyxnLHMsQyxmLHQud2VzdFNraXJ0SGVpZ2h0LFUsUSx6ZSxCZSksRGUrPXQud2VzdEluZGljZXMubGVuZ3RoKmJ0LFNnKGNlLERlLFV0LFd0LE8sZyxzLEMsZix0LnNvdXRoU2tpcnRIZWlnaHQsVSxRLE9pLGduKSxEZSs9dC5zb3V0aEluZGljZXMubGVuZ3RoKmJ0LFNnKGNlLERlLFl0LFd0LE8sZyxzLEMsZix0LmVhc3RTa2lydEhlaWdodCxVLFEsTWksUmkpLERlKz10LmVhc3RJbmRpY2VzLmxlbmd0aCpidCxTZyhjZSxEZSxDdCxXdCxPLGcscyxDLGYsdC5ub3J0aFNraXJ0SGVpZ2h0LFUsUSxzaSxxZSksaEsuYWRkU2tpcnRJbmRpY2VzKGd0LFV0LFl0LEN0LG4sTWUsdC5pbmRpY2VzLmxlbmd0aCksZS5wdXNoKGNlLmJ1ZmZlcixNZS5idWZmZXIpLHt2ZXJ0aWNlczpjZS5idWZmZXIsaW5kaWNlczpNZS5idWZmZXIsd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6Z3Qsc291dGhJbmRpY2VzRWFzdFRvV2VzdDpVdCxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpZdCxub3J0aEluZGljZXNXZXN0VG9FYXN0OkN0LHZlcnRleFN0cmlkZTpidCxjZW50ZXI6YixtaW5pbXVtSGVpZ2h0Ok4sbWF4aW11bUhlaWdodDpULG9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlOnp0LGVuY29kaW5nOld0LGluZGV4Q291bnRXaXRob3V0U2tpcnRzOnQuaW5kaWNlcy5sZW5ndGh9fWZ1bmN0aW9uIFZnKHQsZSxpLG4scyxvLHIsYSxoKXtsZXQgQT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksZD1zLm5vcnRoLGY9cy5zb3V0aCxFPXMuZWFzdCxfPXMud2VzdDtFPF8mJihFKz1MLlRXT19QSSk7bGV0IFI9dC5sZW5ndGg7Zm9yKGxldCBJPTA7STxSOysrSSl7bGV0IEM9dFtJXSxOPWlbQ10sVD1uW0NdO1lzLmxvbmdpdHVkZT1MLmxlcnAoXyxFLFQueCksWXMubGF0aXR1ZGU9TC5sZXJwKGYsZCxULnkpLFlzLmhlaWdodD1OLWU7bGV0IGI9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihZcyxVUik7YXQubXVsdGlwbHlCeVBvaW50KHIsYixiKSxsLm1pbmltdW1CeUNvbXBvbmVudChiLGEsYSksbC5tYXhpbXVtQnlDb21wb25lbnQoYixoLGgpLEE9TWF0aC5taW4oQSxZcy5oZWlnaHQpfXJldHVybiBBfWZ1bmN0aW9uIFNnKHQsZSxpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyl7bGV0IFI9bShyKSxJPWgubm9ydGgsQz1oLnNvdXRoLE49aC5lYXN0LFQ9aC53ZXN0O048VCYmKE4rPUwuVFdPX1BJKTtsZXQgYj1pLmxlbmd0aDtmb3IobGV0IEY9MDtGPGI7KytGKXtsZXQgQj1pW0ZdLFU9c1tCXSxRPW9bQl07WXMubG9uZ2l0dWRlPUwubGVycChULE4sUS54KStFLFlzLmxhdGl0dWRlPUwubGVycChDLEksUS55KStfLFlzLmhlaWdodD1VLUE7bGV0IE09YS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihZcyxVUik7aWYoUil7bGV0IGM9QioyO0tmLng9cltjXSxLZi55PXJbYysxXX1sZXQgaztuLmhhc1dlYk1lcmNhdG9yVCYmKGs9KGtzLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoWXMubGF0aXR1ZGUpLWQpKmYpO2xldCB5O24uaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscyYmKHk9YS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoTSkpLGU9bi5lbmNvZGUodCxlLE0sUSxZcy5oZWlnaHQsS2Ysayx5KX19ZnVuY3Rpb24gT2codCxlKXtsZXQgaTtyZXR1cm4gdHlwZW9mIHQuc2xpY2U9PSJmdW5jdGlvbiImJihpPXQuc2xpY2UoKSx0eXBlb2YgaS5zb3J0IT0iZnVuY3Rpb24iJiYoaT12b2lkIDApKSxtKGkpfHwoaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSksaS5zb3J0KGUpLGl9dmFyIHlCLFVSLF9fdCxSX3QsWXMsS2YsSV90LHhCPVMoKCk9PnthXygpO1hlKCk7SHQoKTtyaSgpO210KCk7T2UoKTtWbSgpO0RpKCk7X2UoKTtiaSgpO3BuKCk7V1IoKTtjSygpO2ZyKCk7TWwoKTtOcygpO3lCPTMyNzY3LFVSPW5ldyBsLF9fdD1uZXcgbCxSX3Q9bmV3IGwsWXM9bmV3IHV0LEtmPW5ldyBudDtJX3Q9V2koWl90KX0pO2Z1bmN0aW9uIHBfdCh0LGUpe3JldHVybiBMLmVxdWFsc0Vwc2lsb24odC5sYXRpdHVkZSxlLmxhdGl0dWRlLEwuRVBTSUxPTjEwKSYmTC5lcXVhbHNFcHNpbG9uKHQubG9uZ2l0dWRlLGUubG9uZ2l0dWRlLEwuRVBTSUxPTjEwKX1mdW5jdGlvbiBnX3QodCxlLGksbil7ZT1YbihlLGwuZXF1YWxzRXBzaWxvbik7bGV0IHM9ZS5sZW5ndGg7aWYoczwyKXJldHVybjtsZXQgbz1tKG4pLHI9bShpKSxhPW5ldyBBcnJheShzKSxoPW5ldyBBcnJheShzKSxBPW5ldyBBcnJheShzKSxkPWVbMF07YVswXT1kO2xldCBmPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZCx1X3QpO3ImJihmLmhlaWdodD1pWzBdKSxoWzBdPWYuaGVpZ2h0LG8/QVswXT1uWzBdOkFbMF09MDtsZXQgRT1oWzBdLF89QVswXSxSPUU9PT1fLEk9MTtmb3IobGV0IEM9MTtDPHM7KytDKXtsZXQgTj1lW0NdLFQ9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhOLENfdCk7ciYmKFQuaGVpZ2h0PWlbQ10pLFI9UiYmVC5oZWlnaHQ9PT0wLHBfdChmLFQpP2YuaGVpZ2h0PFQuaGVpZ2h0JiYoaFtJLTFdPVQuaGVpZ2h0KTooYVtJXT1OLGhbSV09VC5oZWlnaHQsbz9BW0ldPW5bQ106QVtJXT0wLFI9UiYmaFtJXT09PUFbSV0sdXQuY2xvbmUoVCxmKSwrK0kpfWlmKCEoUnx8STwyKSlyZXR1cm4gYS5sZW5ndGg9SSxoLmxlbmd0aD1JLEEubGVuZ3RoPUkse3Bvc2l0aW9uczphLHRvcEhlaWdodHM6aCxib3R0b21IZWlnaHRzOkF9fXZhciBsSyx1X3QsQ190LFRfdCxOX3QsRl90LEJnLFBCPVMoKCk9PntTYSgpO0h0KCk7cmkoKTttdCgpO19lKCk7U2YoKTtsSz17fTt1X3Q9bmV3IHV0LENfdD1uZXcgdXQ7VF90PW5ldyBBcnJheSgyKSxOX3Q9bmV3IEFycmF5KDIpLEZfdD17cG9zaXRpb25zOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxlbGxpcHNvaWQ6dm9pZCAwfTtsSy5jb21wdXRlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxpLG4scyxvKXtsZXQgcj1nX3QodCxlLGksbik7aWYoIW0ocikpcmV0dXJuO2U9ci5wb3NpdGlvbnMsaT1yLnRvcEhlaWdodHMsbj1yLmJvdHRvbUhlaWdodHM7bGV0IGE9ZS5sZW5ndGgsaD1hLTIsQSxkLGY9TC5jaG9yZExlbmd0aChzLHQubWF4aW11bVJhZGl1cyksRT1GX3Q7aWYoRS5taW5EaXN0YW5jZT1mLEUuZWxsaXBzb2lkPXQsbyl7bGV0IF89MCxSO2ZvcihSPTA7UjxhLTE7UisrKV8rPVNuLm51bWJlck9mUG9pbnRzKGVbUl0sZVtSKzFdLGYpKzE7QT1uZXcgRmxvYXQ2NEFycmF5KF8qMyksZD1uZXcgRmxvYXQ2NEFycmF5KF8qMyk7bGV0IEk9VF90LEM9Tl90O0UucG9zaXRpb25zPUksRS5oZWlnaHQ9QztsZXQgTj0wO2ZvcihSPTA7UjxhLTE7UisrKXtJWzBdPWVbUl0sSVsxXT1lW1IrMV0sQ1swXT1pW1JdLENbMV09aVtSKzFdO2xldCBUPVNuLmdlbmVyYXRlQXJjKEUpO0Euc2V0KFQsTiksQ1swXT1uW1JdLENbMV09bltSKzFdLGQuc2V0KFNuLmdlbmVyYXRlQXJjKEUpLE4pLE4rPVQubGVuZ3RofX1lbHNlIEUucG9zaXRpb25zPWUsRS5oZWlnaHQ9aSxBPW5ldyBGbG9hdDY0QXJyYXkoU24uZ2VuZXJhdGVBcmMoRSkpLEUuaGVpZ2h0PW4sZD1uZXcgRmxvYXQ2NEFycmF5KFNuLmdlbmVyYXRlQXJjKEUpKTtyZXR1cm57Ym90dG9tUG9zaXRpb25zOmQsdG9wUG9zaXRpb25zOkEsbnVtQ29ybmVyczpofX07Qmc9bEt9KTtmdW5jdGlvbiBnZCh0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnMsaT10Lm1heGltdW1IZWlnaHRzLG49dC5taW5pbXVtSGVpZ2h0cztpZighbShlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYobShpKSYmaS5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWF4aW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtpZihtKG4pJiZuLmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBZKCJvcHRpb25zLnBvc2l0aW9ucyBhbmQgb3B0aW9ucy5taW5pbXVtSGVpZ2h0cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2xldCBzPVoodC52ZXJ0ZXhGb3JtYXQsU3QuREVGQVVMVCksbz1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLHI9Wih0LmVsbGlwc29pZCxvdC5XR1M4NCk7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fbWluaW11bUhlaWdodHM9bix0aGlzLl9tYXhpbXVtSGVpZ2h0cz1pLHRoaXMuX3ZlcnRleEZvcm1hdD1TdC5jbG9uZShzKSx0aGlzLl9ncmFudWxhcml0eT1vLHRoaXMuX2VsbGlwc29pZD1vdC5jbG9uZShyKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVXYWxsR2VvbWV0cnkiO2xldCBhPTErZS5sZW5ndGgqbC5wYWNrZWRMZW5ndGgrMjttKG4pJiYoYSs9bi5sZW5ndGgpLG0oaSkmJihhKz1pLmxlbmd0aCksdGhpcy5wYWNrZWRMZW5ndGg9YStvdC5wYWNrZWRMZW5ndGgrU3QucGFja2VkTGVuZ3RoKzF9dmFyIEpCLEdnLGJfdCxkSyxZX3QsVl90LFNfdCxtSyxmSyxNUixqQixFSz1TKCgpPT57X2koKTtIdCgpO29pKCk7RnQoKTttdCgpO090KCk7T2UoKTt5aSgpO2ppKCk7RW4oKTtEaSgpO19lKCk7WGkoKTtMcygpO1BCKCk7SkI9bmV3IGwsR2c9bmV3IGwsYl90PW5ldyBsLGRLPW5ldyBsLFlfdD1uZXcgbCxWX3Q9bmV3IGwsU190PW5ldyBsO2dkLnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2k9WihpLDApO2xldCBuLHM9dC5fcG9zaXRpb25zLG89cy5sZW5ndGg7Zm9yKGVbaSsrXT1vLG49MDtuPG87KytuLGkrPWwucGFja2VkTGVuZ3RoKWwucGFjayhzW25dLGUsaSk7bGV0IHI9dC5fbWluaW11bUhlaWdodHM7aWYobz1tKHIpP3IubGVuZ3RoOjAsZVtpKytdPW8sbShyKSlmb3Iobj0wO248bzsrK24pZVtpKytdPXJbbl07bGV0IGE9dC5fbWF4aW11bUhlaWdodHM7aWYobz1tKGEpP2EubGVuZ3RoOjAsZVtpKytdPW8sbShhKSlmb3Iobj0wO248bzsrK24pZVtpKytdPWFbbl07cmV0dXJuIG90LnBhY2sodC5fZWxsaXBzb2lkLGUsaSksaSs9b3QucGFja2VkTGVuZ3RoLFN0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsaSksaSs9U3QucGFja2VkTGVuZ3RoLGVbaV09dC5fZ3JhbnVsYXJpdHksZX07bUs9b3QuY2xvbmUob3QuVU5JVF9TUEhFUkUpLGZLPW5ldyBTdCxNUj17cG9zaXRpb25zOnZvaWQgMCxtaW5pbXVtSGVpZ2h0czp2b2lkIDAsbWF4aW11bUhlaWdodHM6dm9pZCAwLGVsbGlwc29pZDptSyx2ZXJ0ZXhGb3JtYXQ6ZkssZ3JhbnVsYXJpdHk6dm9pZCAwfTtnZC51bnBhY2s9ZnVuY3Rpb24odCxlLGkpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9WihlLDApO2xldCBuLHM9dFtlKytdLG89bmV3IEFycmF5KHMpO2ZvcihuPTA7bjxzOysrbixlKz1sLnBhY2tlZExlbmd0aClvW25dPWwudW5wYWNrKHQsZSk7cz10W2UrK107bGV0IHI7aWYocz4wKWZvcihyPW5ldyBBcnJheShzKSxuPTA7bjxzOysrbilyW25dPXRbZSsrXTtzPXRbZSsrXTtsZXQgYTtpZihzPjApZm9yKGE9bmV3IEFycmF5KHMpLG49MDtuPHM7KytuKWFbbl09dFtlKytdO2xldCBoPW90LnVucGFjayh0LGUsbUspO2UrPW90LnBhY2tlZExlbmd0aDtsZXQgQT1TdC51bnBhY2sodCxlLGZLKTtlKz1TdC5wYWNrZWRMZW5ndGg7bGV0IGQ9dFtlXTtyZXR1cm4gbShpKT8oaS5fcG9zaXRpb25zPW8saS5fbWluaW11bUhlaWdodHM9cixpLl9tYXhpbXVtSGVpZ2h0cz1hLGkuX2VsbGlwc29pZD1vdC5jbG9uZShoLGkuX2VsbGlwc29pZCksaS5fdmVydGV4Rm9ybWF0PVN0LmNsb25lKEEsaS5fdmVydGV4Rm9ybWF0KSxpLl9ncmFudWxhcml0eT1kLGkpOihNUi5wb3NpdGlvbnM9byxNUi5taW5pbXVtSGVpZ2h0cz1yLE1SLm1heGltdW1IZWlnaHRzPWEsTVIuZ3JhbnVsYXJpdHk9ZCxuZXcgZ2QoTVIpKX07Z2QuZnJvbUNvbnN0YW50SGVpZ2h0cz1mdW5jdGlvbih0KXt0PVoodCxaLkVNUFRZX09CSkVDVCk7bGV0IGU9dC5wb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2xldCBpLG4scz10Lm1pbmltdW1IZWlnaHQsbz10Lm1heGltdW1IZWlnaHQscj1tKHMpLGE9bShvKTtpZihyfHxhKXtsZXQgQT1lLmxlbmd0aDtpPXI/bmV3IEFycmF5KEEpOnZvaWQgMCxuPWE/bmV3IEFycmF5KEEpOnZvaWQgMDtmb3IobGV0IGQ9MDtkPEE7KytkKXImJihpW2RdPXMpLGEmJihuW2RdPW8pfWxldCBoPXtwb3NpdGlvbnM6ZSxtYXhpbXVtSGVpZ2h0czpuLG1pbmltdW1IZWlnaHRzOmksZWxsaXBzb2lkOnQuZWxsaXBzb2lkLHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdH07cmV0dXJuIG5ldyBnZChoKX07Z2QuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLGk9dC5fbWluaW11bUhlaWdodHMsbj10Ll9tYXhpbXVtSGVpZ2h0cyxzPXQuX3ZlcnRleEZvcm1hdCxvPXQuX2dyYW51bGFyaXR5LHI9dC5fZWxsaXBzb2lkLGE9QmcuY29tcHV0ZVBvc2l0aW9ucyhyLGUsbixpLG8sITApO2lmKCFtKGEpKXJldHVybjtsZXQgaD1hLmJvdHRvbVBvc2l0aW9ucyxBPWEudG9wUG9zaXRpb25zLGQ9YS5udW1Db3JuZXJzLGY9QS5sZW5ndGgsRT1mKjIsXz1zLnBvc2l0aW9uP25ldyBGbG9hdDY0QXJyYXkoRSk6dm9pZCAwLFI9cy5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShFKTp2b2lkIDAsST1zLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShFKTp2b2lkIDAsQz1zLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KEUpOnZvaWQgMCxOPXMuc3Q/bmV3IEZsb2F0MzJBcnJheShFLzMqMik6dm9pZCAwLFQ9MCxiPTAsRj0wLEI9MCxVPTAsUT1TX3QsTT1WX3Qsaz1ZX3QseT0hMDtmLz0zO2xldCBjLGc9MCxPPTEvKGYtZC0xKTtmb3IoYz0wO2M8ZjsrK2Mpe2xldCBqPWMqMyxYPWwuZnJvbUFycmF5KEEsaixKQiksdHQ9bC5mcm9tQXJyYXkoaCxqLEdnKTtpZihzLnBvc2l0aW9uJiYoX1tUKytdPXR0LngsX1tUKytdPXR0LnksX1tUKytdPXR0LnosX1tUKytdPVgueCxfW1QrK109WC55LF9bVCsrXT1YLnopLHMuc3QmJihOW1UrK109ZyxOW1UrK109MCxOW1UrK109ZyxOW1UrK109MSkscy5ub3JtYWx8fHMudGFuZ2VudHx8cy5iaXRhbmdlbnQpe2xldCBHPWwuY2xvbmUobC5aRVJPLGRLKSxJdD1sLnN1YnRyYWN0KFgsci5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoWCxHZyksR2cpO2lmKGMrMTxmJiYoRz1sLmZyb21BcnJheShBLGorMyxkSykpLHkpe2xldCBndD1sLnN1YnRyYWN0KEcsWCxiX3QpLFl0PWwuc3VidHJhY3QoSXQsWCxKQik7UT1sLm5vcm1hbGl6ZShsLmNyb3NzKFl0LGd0LFEpLFEpLHk9ITF9bC5lcXVhbHNFcHNpbG9uKFgsRyxMLkVQU0lMT04xMCk/eT0hMDooZys9TyxzLnRhbmdlbnQmJihNPWwubm9ybWFsaXplKGwuc3VidHJhY3QoRyxYLE0pLE0pKSxzLmJpdGFuZ2VudCYmKGs9bC5ub3JtYWxpemUobC5jcm9zcyhRLE0sayksaykpKSxzLm5vcm1hbCYmKFJbYisrXT1RLngsUltiKytdPVEueSxSW2IrK109US56LFJbYisrXT1RLngsUltiKytdPVEueSxSW2IrK109US56KSxzLnRhbmdlbnQmJihJW0IrK109TS54LElbQisrXT1NLnksSVtCKytdPU0ueixJW0IrK109TS54LElbQisrXT1NLnksSVtCKytdPU0ueikscy5iaXRhbmdlbnQmJihDW0YrK109ay54LENbRisrXT1rLnksQ1tGKytdPWsueixDW0YrK109ay54LENbRisrXT1rLnksQ1tGKytdPWsueil9fWxldCBEPW5ldyB3ZTtzLnBvc2l0aW9uJiYoRC5wb3NpdGlvbj1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSkscy5ub3JtYWwmJihELm5vcm1hbD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Un0pKSxzLnRhbmdlbnQmJihELnRhbmdlbnQ9bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkl9KSkscy5iaXRhbmdlbnQmJihELmJpdGFuZ2VudD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Q30pKSxzLnN0JiYoRC5zdD1uZXcgVHQoe2NvbXBvbmVudERhdGF0eXBlOkF0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6Tn0pKTtsZXQgdz1FLzM7RS09NiooZCsxKTtsZXQgeD10ZS5jcmVhdGVUeXBlZEFycmF5KHcsRSksSD0wO2ZvcihjPTA7Yzx3LTI7Yys9Mil7bGV0IGo9YyxYPWMrMix0dD1sLmZyb21BcnJheShfLGoqMyxKQiksRz1sLmZyb21BcnJheShfLFgqMyxHZyk7aWYobC5lcXVhbHNFcHNpbG9uKHR0LEcsTC5FUFNJTE9OMTApKWNvbnRpbnVlO2xldCBJdD1jKzEsZ3Q9YyszO3hbSCsrXT1JdCx4W0grK109aix4W0grK109Z3QseFtIKytdPWd0LHhbSCsrXT1qLHhbSCsrXT1YfXJldHVybiBuZXcgc2Uoe2F0dHJpYnV0ZXM6RCxpbmRpY2VzOngscHJpbWl0aXZlVHlwZTpuZS5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6bmV3IE50LmZyb21WZXJ0aWNlcyhfKX0pfTtqQj1nZH0pO3ZhciBIQj17fTtIZShIQix7ZGVmYXVsdDooKT0+Ql90fSk7ZnVuY3Rpb24gT190KHQsZSl7cmV0dXJuIG0oZSkmJih0PWpCLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSxqQi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgQl90LHZCPVMoKCk9PnttdCgpO09lKCk7RUsoKTtCX3Q9T190fSk7ZnVuY3Rpb24gVGQodCl7dD1aKHQsWi5FTVBUWV9PQkpFQ1QpO2xldCBlPXQucG9zaXRpb25zLGk9dC5tYXhpbXVtSGVpZ2h0cyxuPXQubWluaW11bUhlaWdodHM7aWYoIW0oZSkpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2lmKG0oaSkmJmkubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IFkoIm9wdGlvbnMucG9zaXRpb25zIGFuZCBvcHRpb25zLm1heGltdW1IZWlnaHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGguIik7aWYobShuKSYmbi5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWluaW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtsZXQgcz1aKHQuZ3JhbnVsYXJpdHksTC5SQURJQU5TX1BFUl9ERUdSRUUpLG89Wih0LmVsbGlwc29pZCxvdC5XR1M4NCk7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fbWluaW11bUhlaWdodHM9bix0aGlzLl9tYXhpbXVtSGVpZ2h0cz1pLHRoaXMuX2dyYW51bGFyaXR5PXMsdGhpcy5fZWxsaXBzb2lkPW90LmNsb25lKG8pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVdhbGxPdXRsaW5lR2VvbWV0cnkiO2xldCByPTErZS5sZW5ndGgqbC5wYWNrZWRMZW5ndGgrMjttKG4pJiYocis9bi5sZW5ndGgpLG0oaSkmJihyKz1pLmxlbmd0aCksdGhpcy5wYWNrZWRMZW5ndGg9citvdC5wYWNrZWRMZW5ndGgrMX12YXIgX0ssUkssWkssUVIsekIsSUs9UygoKT0+e19pKCk7SHQoKTtvaSgpO0Z0KCk7bXQoKTtPdCgpO09lKCk7eWkoKTtqaSgpO0VuKCk7RGkoKTtfZSgpO1hpKCk7UEIoKTtfSz1uZXcgbCxSSz1uZXcgbDtUZC5wYWNrPWZ1bmN0aW9uKHQsZSxpKXtpZighbSh0KSl0aHJvdyBuZXcgWSgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgWSgiYXJyYXkgaXMgcmVxdWlyZWQiKTtpPVooaSwwKTtsZXQgbixzPXQuX3Bvc2l0aW9ucyxvPXMubGVuZ3RoO2ZvcihlW2krK109byxuPTA7bjxvOysrbixpKz1sLnBhY2tlZExlbmd0aClsLnBhY2soc1tuXSxlLGkpO2xldCByPXQuX21pbmltdW1IZWlnaHRzO2lmKG89bShyKT9yLmxlbmd0aDowLGVbaSsrXT1vLG0ocikpZm9yKG49MDtuPG87KytuKWVbaSsrXT1yW25dO2xldCBhPXQuX21heGltdW1IZWlnaHRzO2lmKG89bShhKT9hLmxlbmd0aDowLGVbaSsrXT1vLG0oYSkpZm9yKG49MDtuPG87KytuKWVbaSsrXT1hW25dO3JldHVybiBvdC5wYWNrKHQuX2VsbGlwc29pZCxlLGkpLGkrPW90LnBhY2tlZExlbmd0aCxlW2ldPXQuX2dyYW51bGFyaXR5LGV9O1pLPW90LmNsb25lKG90LlVOSVRfU1BIRVJFKSxRUj17cG9zaXRpb25zOnZvaWQgMCxtaW5pbXVtSGVpZ2h0czp2b2lkIDAsbWF4aW11bUhlaWdodHM6dm9pZCAwLGVsbGlwc29pZDpaSyxncmFudWxhcml0eTp2b2lkIDB9O1RkLnVucGFjaz1mdW5jdGlvbih0LGUsaSl7aWYoIW0odCkpdGhyb3cgbmV3IFkoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1aKGUsMCk7bGV0IG4scz10W2UrK10sbz1uZXcgQXJyYXkocyk7Zm9yKG49MDtuPHM7KytuLGUrPWwucGFja2VkTGVuZ3RoKW9bbl09bC51bnBhY2sodCxlKTtzPXRbZSsrXTtsZXQgcjtpZihzPjApZm9yKHI9bmV3IEFycmF5KHMpLG49MDtuPHM7KytuKXJbbl09dFtlKytdO3M9dFtlKytdO2xldCBhO2lmKHM+MClmb3IoYT1uZXcgQXJyYXkocyksbj0wO248czsrK24pYVtuXT10W2UrK107bGV0IGg9b3QudW5wYWNrKHQsZSxaSyk7ZSs9b3QucGFja2VkTGVuZ3RoO2xldCBBPXRbZV07cmV0dXJuIG0oaSk/KGkuX3Bvc2l0aW9ucz1vLGkuX21pbmltdW1IZWlnaHRzPXIsaS5fbWF4aW11bUhlaWdodHM9YSxpLl9lbGxpcHNvaWQ9b3QuY2xvbmUoaCxpLl9lbGxpcHNvaWQpLGkuX2dyYW51bGFyaXR5PUEsaSk6KFFSLnBvc2l0aW9ucz1vLFFSLm1pbmltdW1IZWlnaHRzPXIsUVIubWF4aW11bUhlaWdodHM9YSxRUi5ncmFudWxhcml0eT1BLG5ldyBUZChRUikpfTtUZC5mcm9tQ29uc3RhbnRIZWlnaHRzPWZ1bmN0aW9uKHQpe3Q9Wih0LFouRU1QVFlfT0JKRUNUKTtsZXQgZT10LnBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgWSgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7bGV0IGksbixzPXQubWluaW11bUhlaWdodCxvPXQubWF4aW11bUhlaWdodCxyPW0ocyksYT1tKG8pO2lmKHJ8fGEpe2xldCBBPWUubGVuZ3RoO2k9cj9uZXcgQXJyYXkoQSk6dm9pZCAwLG49YT9uZXcgQXJyYXkoQSk6dm9pZCAwO2ZvcihsZXQgZD0wO2Q8QTsrK2QpciYmKGlbZF09cyksYSYmKG5bZF09byl9bGV0IGg9e3Bvc2l0aW9uczplLG1heGltdW1IZWlnaHRzOm4sbWluaW11bUhlaWdodHM6aSxlbGxpcHNvaWQ6dC5lbGxpcHNvaWR9O3JldHVybiBuZXcgVGQoaCl9O1RkLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxpPXQuX21pbmltdW1IZWlnaHRzLG49dC5fbWF4aW11bUhlaWdodHMscz10Ll9ncmFudWxhcml0eSxvPXQuX2VsbGlwc29pZCxyPUJnLmNvbXB1dGVQb3NpdGlvbnMobyxlLG4saSxzLCExKTtpZighbShyKSlyZXR1cm47bGV0IGE9ci5ib3R0b21Qb3NpdGlvbnMsaD1yLnRvcFBvc2l0aW9ucyxBPWgubGVuZ3RoLGQ9QSoyLGY9bmV3IEZsb2F0NjRBcnJheShkKSxFPTA7QS89MztsZXQgXztmb3IoXz0wO188QTsrK18pe2xldCBUPV8qMyxiPWwuZnJvbUFycmF5KGgsVCxfSyksRj1sLmZyb21BcnJheShhLFQsUkspO2ZbRSsrXT1GLngsZltFKytdPUYueSxmW0UrK109Ri56LGZbRSsrXT1iLngsZltFKytdPWIueSxmW0UrK109Yi56fWxldCBSPW5ldyB3ZSh7cG9zaXRpb246bmV3IFR0KHtjb21wb25lbnREYXRhdHlwZTpBdC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpmfSl9KSxJPWQvMztkPTIqSS00K0k7bGV0IEM9dGUuY3JlYXRlVHlwZWRBcnJheShJLGQpLE49MDtmb3IoXz0wO188SS0yO18rPTIpe2xldCBUPV8sYj1fKzIsRj1sLmZyb21BcnJheShmLFQqMyxfSyksQj1sLmZyb21BcnJheShmLGIqMyxSSyk7aWYobC5lcXVhbHNFcHNpbG9uKEYsQixMLkVQU0lMT04xMCkpY29udGludWU7bGV0IFU9XysxLFE9XyszO0NbTisrXT1VLENbTisrXT1ULENbTisrXT1VLENbTisrXT1RLENbTisrXT1ULENbTisrXT1ifXJldHVybiBDW04rK109SS0yLENbTisrXT1JLTEsbmV3IHNlKHthdHRyaWJ1dGVzOlIsaW5kaWNlczpDLHByaW1pdGl2ZVR5cGU6bmUuTElORVMsYm91bmRpbmdTcGhlcmU6bmV3IE50LmZyb21WZXJ0aWNlcyhmKX0pfTt6Qj1UZH0pO3ZhciBLQj17fTtIZShLQix7ZGVmYXVsdDooKT0+V190fSk7ZnVuY3Rpb24gR190KHQsZSl7cmV0dXJuIG0oZSkmJih0PXpCLnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9b3QuY2xvbmUodC5fZWxsaXBzb2lkKSx6Qi5jcmVhdGVHZW9tZXRyeSh0KX12YXIgV190LFhCPVMoKCk9PnttdCgpO09lKCk7SUsoKTtXX3Q9R190fSk7dmFyIHRHPXRzKChrUiwkQik9Pnt2YXIgaGU9aGV8fHt9O2hlLnNjb3BlPXt9O2hlLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKHQpe3ZhciBlPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGU8dC5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6dFtlKytdfTp7ZG9uZTohMH19fTtoZS5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybntuZXh0OmhlLmFycmF5SXRlcmF0b3JJbXBsKHQpfX07aGUubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuaXRlcmF0b3ImJnRbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gZT9lLmNhbGwodCk6aGUuYXJyYXlJdGVyYXRvcih0KX07aGUuQVNTVU1FX0VTNT0hMTtoZS5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTtoZS5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTtoZS5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExO2hlLklTT0xBVEVfUE9MWUZJTExTPSExO2hlLkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7aGUuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7aGUuZ2V0R2xvYmFsPWZ1bmN0aW9uKHQpe3Q9W3R5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IiYmZ2xvYmFsVGhpcyx0LHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3csdHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmLHR5cGVvZiBnbG9iYWw9PSJvYmplY3QiJiZnbG9iYWxdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7KytlKXt2YXIgaT10W2VdO2lmKGkmJmkuTWF0aD09TWF0aClyZXR1cm4gaX10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpfTtoZS5nbG9iYWw9aGUuZ2V0R2xvYmFsKGtSKTtoZS5kZWZpbmVQcm9wZXJ0eT1oZS5BU1NVTUVfRVM1fHx0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD09QXJyYXkucHJvdG90eXBlfHx0PT1PYmplY3QucHJvdG90eXBlfHwodFtlXT1pLnZhbHVlKSx0fTtoZS5JU19TWU1CT0xfTkFUSVZFPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woIngiKT09InN5bWJvbCI7aGUuVFJVU1RfRVM2X1BPTFlGSUxMUz0haGUuSVNPTEFURV9QT0xZRklMTFN8fGhlLklTX1NZTUJPTF9OQVRJVkU7aGUucG9seWZpbGxzPXt9O2hlLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTtoZS5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7aGUucG9seWZpbGw9ZnVuY3Rpb24odCxlLGksbil7ZSYmKGhlLklTT0xBVEVfUE9MWUZJTExTP2hlLnBvbHlmaWxsSXNvbGF0ZWQodCxlLGksbik6aGUucG9seWZpbGxVbmlzb2xhdGVkKHQsZSxpLG4pKX07aGUucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKHQsZSxpLG4pe2ZvcihpPWhlLmdsb2JhbCx0PXQuc3BsaXQoIi4iKSxuPTA7bjx0Lmxlbmd0aC0xO24rKyl7dmFyIHM9dFtuXTtpZighKHMgaW4gaSkpcmV0dXJuO2k9aVtzXX10PXRbdC5sZW5ndGgtMV0sbj1pW3RdLGU9ZShuKSxlIT1uJiZlIT1udWxsJiZoZS5kZWZpbmVQcm9wZXJ0eShpLHQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSl9O2hlLnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24odCxlLGksbil7dmFyIHM9dC5zcGxpdCgiLiIpO3Q9cy5sZW5ndGg9PT0xLG49c1swXSxuPSF0JiZuIGluIGhlLnBvbHlmaWxscz9oZS5wb2x5ZmlsbHM6aGUuZ2xvYmFsO2Zvcih2YXIgbz0wO288cy5sZW5ndGgtMTtvKyspe3ZhciByPXNbb107aWYoIShyIGluIG4pKXJldHVybjtuPW5bcl19cz1zW3MubGVuZ3RoLTFdLGk9aGUuSVNfU1lNQk9MX05BVElWRSYmaT09PSJlczYiP25bc106bnVsbCxlPWUoaSksZSE9bnVsbCYmKHQ/aGUuZGVmaW5lUHJvcGVydHkoaGUucG9seWZpbGxzLHMse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSk6ZSE9PWkmJihoZS5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbc109PT12b2lkIDAmJihpPTFlOSpNYXRoLnJhbmRvbSgpPj4+MCxoZS5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbc109aGUuSVNfU1lNQk9MX05BVElWRT9oZS5nbG9iYWwuU3ltYm9sKHMpOmhlLlBPTFlGSUxMX1BSRUZJWCtpKyIkIitzKSxoZS5kZWZpbmVQcm9wZXJ0eShuLGhlLnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtzXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KSkpfTtoZS5wb2x5ZmlsbCgiUHJvbWlzZSIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3RoaXMuYmF0Y2hfPW51bGx9ZnVuY3Rpb24gaShyKXtyZXR1cm4gciBpbnN0YW5jZW9mIHM/cjpuZXcgcyhmdW5jdGlvbihhLGgpe2Eocil9KX1pZih0JiYoIShoZS5GT1JDRV9QT0xZRklMTF9QUk9NSVNFfHxoZS5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmdHlwZW9mIGhlLmdsb2JhbC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ+InUiKXx8IWhlLmdsb2JhbC5Qcm9taXNlfHxoZS5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKT09PS0xKSlyZXR1cm4gdDtlLnByb3RvdHlwZS5hc3luY0V4ZWN1dGU9ZnVuY3Rpb24ocil7aWYodGhpcy5iYXRjaF89PW51bGwpe3RoaXMuYmF0Y2hfPVtdO3ZhciBhPXRoaXM7dGhpcy5hc3luY0V4ZWN1dGVGdW5jdGlvbihmdW5jdGlvbigpe2EuZXhlY3V0ZUJhdGNoXygpfSl9dGhpcy5iYXRjaF8ucHVzaChyKX07dmFyIG49aGUuZ2xvYmFsLnNldFRpbWVvdXQ7ZS5wcm90b3R5cGUuYXN5bmNFeGVjdXRlRnVuY3Rpb249ZnVuY3Rpb24ocil7bihyLDApfSxlLnByb3RvdHlwZS5leGVjdXRlQmF0Y2hfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJhdGNoXyYmdGhpcy5iYXRjaF8ubGVuZ3RoOyl7dmFyIHI9dGhpcy5iYXRjaF87dGhpcy5iYXRjaF89W107Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDsrK2Epe3ZhciBoPXJbYV07clthXT1udWxsO3RyeXtoKCl9Y2F0Y2goQSl7dGhpcy5hc3luY1Rocm93XyhBKX19fXRoaXMuYmF0Y2hfPW51bGx9LGUucHJvdG90eXBlLmFzeW5jVGhyb3dfPWZ1bmN0aW9uKHIpe3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXt0aHJvdyByfSl9O3ZhciBzPWZ1bmN0aW9uKHIpe3RoaXMuc3RhdGVfPTAsdGhpcy5yZXN1bHRfPXZvaWQgMCx0aGlzLm9uU2V0dGxlZENhbGxiYWNrc189W10sdGhpcy5pc1JlamVjdGlvbkhhbmRsZWRfPSExO3ZhciBhPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTt0cnl7cihhLnJlc29sdmUsYS5yZWplY3QpfWNhdGNoKGgpe2EucmVqZWN0KGgpfX07cy5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiByKEEpe3JldHVybiBmdW5jdGlvbihkKXtofHwoaD0hMCxBLmNhbGwoYSxkKSl9fXZhciBhPXRoaXMsaD0hMTtyZXR1cm57cmVzb2x2ZTpyKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OnIodGhpcy5yZWplY3RfKX19LHMucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24ocil7aWYocj09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihyIGluc3RhbmNlb2Ygcyl0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKHIpO2Vsc2V7dDpzd2l0Y2godHlwZW9mIHIpe2Nhc2Uib2JqZWN0Ijp2YXIgYT1yIT1udWxsO2JyZWFrIHQ7Y2FzZSJmdW5jdGlvbiI6YT0hMDticmVhayB0O2RlZmF1bHQ6YT0hMX1hP3RoaXMucmVzb2x2ZVRvTm9uUHJvbWlzZU9ial8ocik6dGhpcy5mdWxmaWxsXyhyKX19LHMucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKHIpe3ZhciBhPXZvaWQgMDt0cnl7YT1yLnRoZW59Y2F0Y2goaCl7dGhpcy5yZWplY3RfKGgpO3JldHVybn10eXBlb2YgYT09ImZ1bmN0aW9uIj90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhhLHIpOnRoaXMuZnVsZmlsbF8ocil9LHMucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24ocil7dGhpcy5zZXR0bGVfKDIscil9LHMucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKHIpe3RoaXMuc2V0dGxlXygxLHIpfSxzLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKHIsYSl7aWYodGhpcy5zdGF0ZV8hPTApdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIityKyIsICIrYSsiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1yLHRoaXMucmVzdWx0Xz1hLHRoaXMuc3RhdGVfPT09MiYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpLHRoaXMuZXhlY3V0ZU9uU2V0dGxlZENhbGxiYWNrc18oKX0scy5wcm90b3R5cGUuc2NoZWR1bGVVbmhhbmRsZWRSZWplY3Rpb25DaGVja189ZnVuY3Rpb24oKXt2YXIgcj10aGlzO24oZnVuY3Rpb24oKXtpZihyLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl8oKSl7dmFyIGE9aGUuZ2xvYmFsLmNvbnNvbGU7dHlwZW9mIGE8InUiJiZhLmVycm9yKHIucmVzdWx0Xyl9fSwxKX0scy5wcm90b3R5cGUubm90aWZ5VW5oYW5kbGVkUmVqZWN0aW9uXz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXylyZXR1cm4hMTt2YXIgcj1oZS5nbG9iYWwuQ3VzdG9tRXZlbnQsYT1oZS5nbG9iYWwuRXZlbnQsaD1oZS5nbG9iYWwuZGlzcGF0Y2hFdmVudDtyZXR1cm4gdHlwZW9mIGg+InUiPyEwOih0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yPW5ldyByKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6dHlwZW9mIGE9PSJmdW5jdGlvbiI/cj1uZXcgYSgidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihyPWhlLmdsb2JhbC5kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxyLmluaXRDdXN0b21FdmVudCgidW5oYW5kbGVkcmVqZWN0aW9uIiwhMSwhMCxyKSksci5wcm9taXNlPXRoaXMsci5yZWFzb249dGhpcy5yZXN1bHRfLGgocikpfSxzLnByb3RvdHlwZS5leGVjdXRlT25TZXR0bGVkQ2FsbGJhY2tzXz1mdW5jdGlvbigpe2lmKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXyE9bnVsbCl7Zm9yKHZhciByPTA7cjx0aGlzLm9uU2V0dGxlZENhbGxiYWNrc18ubGVuZ3RoOysrcilvLmFzeW5jRXhlY3V0ZSh0aGlzLm9uU2V0dGxlZENhbGxiYWNrc19bcl0pO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1udWxsfX07dmFyIG89bmV3IGU7cmV0dXJuIHMucHJvdG90eXBlLnNldHRsZVNhbWVBc1Byb21pc2VfPWZ1bmN0aW9uKHIpe3ZhciBhPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTtyLmNhbGxXaGVuU2V0dGxlZF8oYS5yZXNvbHZlLGEucmVqZWN0KX0scy5wcm90b3R5cGUuc2V0dGxlU2FtZUFzVGhlbmFibGVfPWZ1bmN0aW9uKHIsYSl7dmFyIGg9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpO3RyeXtyLmNhbGwoYSxoLnJlc29sdmUsaC5yZWplY3QpfWNhdGNoKEEpe2gucmVqZWN0KEEpfX0scy5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihyLGEpe2Z1bmN0aW9uIGgoRSxfKXtyZXR1cm4gdHlwZW9mIEU9PSJmdW5jdGlvbiI/ZnVuY3Rpb24oUil7dHJ5e0EoRShSKSl9Y2F0Y2goSSl7ZChJKX19Ol99dmFyIEEsZCxmPW5ldyBzKGZ1bmN0aW9uKEUsXyl7QT1FLGQ9X30pO3JldHVybiB0aGlzLmNhbGxXaGVuU2V0dGxlZF8oaChyLEEpLGgoYSxkKSksZn0scy5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAscil9LHMucHJvdG90eXBlLmNhbGxXaGVuU2V0dGxlZF89ZnVuY3Rpb24ocixhKXtmdW5jdGlvbiBoKCl7c3dpdGNoKEEuc3RhdGVfKXtjYXNlIDE6cihBLnJlc3VsdF8pO2JyZWFrO2Nhc2UgMjphKEEucmVzdWx0Xyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5leHBlY3RlZCBzdGF0ZTogIitBLnN0YXRlXyl9fXZhciBBPXRoaXM7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPT1udWxsP28uYXN5bmNFeGVjdXRlKGgpOnRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5wdXNoKGgpLHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXz0hMH0scy5yZXNvbHZlPWkscy5yZWplY3Q9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyBzKGZ1bmN0aW9uKGEsaCl7aChyKX0pfSxzLnJhY2U9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyBzKGZ1bmN0aW9uKGEsaCl7Zm9yKHZhciBBPWhlLm1ha2VJdGVyYXRvcihyKSxkPUEubmV4dCgpOyFkLmRvbmU7ZD1BLm5leHQoKSlpKGQudmFsdWUpLmNhbGxXaGVuU2V0dGxlZF8oYSxoKX0pfSxzLmFsbD1mdW5jdGlvbihyKXt2YXIgYT1oZS5tYWtlSXRlcmF0b3IociksaD1hLm5leHQoKTtyZXR1cm4gaC5kb25lP2koW10pOm5ldyBzKGZ1bmN0aW9uKEEsZCl7ZnVuY3Rpb24gZihSKXtyZXR1cm4gZnVuY3Rpb24oSSl7RVtSXT1JLF8tLSxfPT0wJiZBKEUpfX12YXIgRT1bXSxfPTA7ZG8gRS5wdXNoKHZvaWQgMCksXysrLGkoaC52YWx1ZSkuY2FsbFdoZW5TZXR0bGVkXyhmKEUubGVuZ3RoLTEpLGQpLGg9YS5uZXh0KCk7d2hpbGUoIWguZG9uZSl9KX0sc30sImVzNiIsImVzMyIpO2hlLm93bnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9O2hlLmFzc2lnbj1oZS5UUlVTVF9FUzZfUE9MWUZJTExTJiZ0eXBlb2YgT2JqZWN0LmFzc2lnbj09ImZ1bmN0aW9uIj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIG49YXJndW1lbnRzW2ldO2lmKG4pZm9yKHZhciBzIGluIG4paGUub3ducyhuLHMpJiYodFtzXT1uW3NdKX1yZXR1cm4gdH07aGUucG9seWZpbGwoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKHQpe3JldHVybiB0fHxoZS5hc3NpZ259LCJlczYiLCJlczMiKTtoZS5jaGVja1N0cmluZ0FyZ3M9ZnVuY3Rpb24odCxlLGkpe2lmKHQ9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS4iK2krIiBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS4iK2krIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiIpO3JldHVybiB0KyIifTtoZS5wb2x5ZmlsbCgiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIixmdW5jdGlvbih0KXtyZXR1cm4gdHx8ZnVuY3Rpb24oZSxpKXt2YXIgbj1oZS5jaGVja1N0cmluZ0FyZ3ModGhpcyxlLCJzdGFydHNXaXRoIik7ZSs9IiI7dmFyIHM9bi5sZW5ndGgsbz1lLmxlbmd0aDtpPU1hdGgubWF4KDAsTWF0aC5taW4oaXwwLG4ubGVuZ3RoKSk7Zm9yKHZhciByPTA7cjxvJiZpPHM7KWlmKG5baSsrXSE9ZVtyKytdKXJldHVybiExO3JldHVybiByPj1vfX0sImVzNiIsImVzMyIpO2hlLnBvbHlmaWxsKCJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShpKXtyZXR1cm4gaT1OdW1iZXIoaSksaT09PTEvMHx8aT09PS0xLzA/aTppfDB9cmV0dXJuIHR8fGZ1bmN0aW9uKGksbixzKXt2YXIgbz10aGlzLmxlbmd0aDtpZihpPWUoaSksbj1lKG4pLHM9cz09PXZvaWQgMD9vOmUocyksaT0wPmk/TWF0aC5tYXgobytpLDApOk1hdGgubWluKGksbyksbj0wPm4/TWF0aC5tYXgobytuLDApOk1hdGgubWluKG4sbykscz0wPnM/TWF0aC5tYXgobytzLDApOk1hdGgubWluKHMsbyksaTxuKWZvcig7bjxzOyluIGluIHRoaXM/dGhpc1tpKytdPXRoaXNbbisrXTooZGVsZXRlIHRoaXNbaSsrXSxuKyspO2Vsc2UgZm9yKHM9TWF0aC5taW4ocyxvK24taSksaSs9cy1uO3M+bjspLS1zIGluIHRoaXM/dGhpc1stLWldPXRoaXNbc106ZGVsZXRlIHRoaXNbLS1pXTtyZXR1cm4gdGhpc319LCJlczYiLCJlczMiKTtoZS50eXBlZEFycmF5Q29weVdpdGhpbj1mdW5jdGlvbih0KXtyZXR1cm4gdHx8QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW59O2hlLnBvbHlmaWxsKCJJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGhlLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtoZS5wb2x5ZmlsbCgiVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsaGUudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2hlLnBvbHlmaWxsKCJVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsaGUudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2hlLnBvbHlmaWxsKCJJbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixoZS50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7aGUucG9seWZpbGwoIlVpbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixoZS50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7aGUucG9seWZpbGwoIkludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGhlLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtoZS5wb2x5ZmlsbCgiVWludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGhlLnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtoZS5wb2x5ZmlsbCgiRmxvYXQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixoZS50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7aGUucG9seWZpbGwoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsaGUudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO3ZhciBxQj1mdW5jdGlvbigpe3ZhciB0PXR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM6dm9pZCAwO3JldHVybiB0eXBlb2YgX19maWxlbmFtZTwidSImJih0PXR8fF9fZmlsZW5hbWUpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGkoeil7cmV0dXJuIEcubG9jYXRlRmlsZT9HLmxvY2F0ZUZpbGUoeixXdCk6V3Qren1mdW5jdGlvbiBuKHosZXQscHQpe3ZhciAkdD1ldCtwdDtmb3IocHQ9ZXQ7eltwdF0mJiEocHQ+PSR0KTspKytwdDtpZigxNjxwdC1ldCYmei5idWZmZXImJnplKXJldHVybiB6ZS5kZWNvZGUoei5zdWJhcnJheShldCxwdCkpO2ZvcigkdD0iIjtldDxwdDspe3ZhciB2ZT16W2V0KytdO2lmKHZlJjEyOCl7dmFyIGhpPXpbZXQrK10mNjM7aWYoKHZlJjIyNCk9PTE5MikkdCs9U3RyaW5nLmZyb21DaGFyQ29kZSgodmUmMzEpPDw2fGhpKTtlbHNle3ZhciBfYT16W2V0KytdJjYzO3ZlPSh2ZSYyNDApPT0yMjQ/KHZlJjE1KTw8MTJ8aGk8PDZ8X2E6KHZlJjcpPDwxOHxoaTw8MTJ8X2E8PDZ8eltldCsrXSY2Myw2NTUzNj52ZT8kdCs9U3RyaW5nLmZyb21DaGFyQ29kZSh2ZSk6KHZlLT02NTUzNiwkdCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5Nnx2ZT4+MTAsNTYzMjB8dmUmMTAyMykpfX1lbHNlICR0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHZlKX1yZXR1cm4gJHR9ZnVuY3Rpb24gcyh6LGV0KXtyZXR1cm4gej9uKE1pLHosZXQpOiIifWZ1bmN0aW9uIG8oKXt2YXIgej1GZS5idWZmZXI7Ry5IRUFQOD1CZT1uZXcgSW50OEFycmF5KHopLEcuSEVBUDE2PW5ldyBJbnQxNkFycmF5KHopLEcuSEVBUDMyPVJpPW5ldyBJbnQzMkFycmF5KHopLEcuSEVBUFU4PU1pPW5ldyBVaW50OEFycmF5KHopLEcuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoeiksRy5IRUFQVTMyPXNpPW5ldyBVaW50MzJBcnJheSh6KSxHLkhFQVBGMzI9bmV3IEZsb2F0MzJBcnJheSh6KSxHLkhFQVBGNjQ9bmV3IEZsb2F0NjRBcnJheSh6KX1mdW5jdGlvbiByKHope3Rocm93IEcub25BYm9ydCYmRy5vbkFib3J0KHopLHo9IkFib3J0ZWQoIit6KyIpIixNZSh6KSxuaT0hMCx6PW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoeisiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiIpLGd0KHopLHp9ZnVuY3Rpb24gYSh6KXt0cnl7aWYoej09TmUmJkNlKXJldHVybiBuZXcgVWludDhBcnJheShDZSk7aWYoamUpcmV0dXJuIGplKHopO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1jYXRjaChldCl7cihldCl9fWZ1bmN0aW9uIGgoKXtpZighQ2UmJih6dHx8a3QpKXtpZih0eXBlb2YgZmV0Y2g9PSJmdW5jdGlvbiImJiFOZS5zdGFydHNXaXRoKCJmaWxlOi8vIikpcmV0dXJuIGZldGNoKE5lLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbih6KXtpZighei5vayl0aHJvdyJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciK05lKyInIjtyZXR1cm4gei5hcnJheUJ1ZmZlcigpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gYShOZSl9KTtpZihTZSlyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oeixldCl7U2UoTmUsZnVuY3Rpb24ocHQpe3oobmV3IFVpbnQ4QXJyYXkocHQpKX0sZXQpfSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYShOZSl9KX1mdW5jdGlvbiBBKHope2Zvcig7MDx6Lmxlbmd0aDspei5zaGlmdCgpKEcpfWZ1bmN0aW9uIGQoeil7dGhpcy5leGNQdHI9eix0aGlzLnB0cj16LTI0LHRoaXMuc2V0X3R5cGU9ZnVuY3Rpb24oZXQpe3NpW3RoaXMucHRyKzQ+PjJdPWV0fSx0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHNpW3RoaXMucHRyKzQ+PjJdfSx0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKGV0KXtzaVt0aGlzLnB0cis4Pj4yXT1ldH0sdGhpcy5nZXRfZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBzaVt0aGlzLnB0cis4Pj4yXX0sdGhpcy5zZXRfcmVmY291bnQ9ZnVuY3Rpb24oZXQpe1JpW3RoaXMucHRyPj4yXT1ldH0sdGhpcy5zZXRfY2F1Z2h0PWZ1bmN0aW9uKGV0KXtCZVt0aGlzLnB0cisxMj4+MF09ZXQ/MTowfSx0aGlzLmdldF9jYXVnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gQmVbdGhpcy5wdHIrMTI+PjBdIT0wfSx0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihldCl7QmVbdGhpcy5wdHIrMTM+PjBdPWV0PzE6MH0sdGhpcy5nZXRfcmV0aHJvd249ZnVuY3Rpb24oKXtyZXR1cm4gQmVbdGhpcy5wdHIrMTM+PjBdIT0wfSx0aGlzLmluaXQ9ZnVuY3Rpb24oZXQscHQpe3RoaXMuc2V0X2FkanVzdGVkX3B0cigwKSx0aGlzLnNldF90eXBlKGV0KSx0aGlzLnNldF9kZXN0cnVjdG9yKHB0KSx0aGlzLnNldF9yZWZjb3VudCgwKSx0aGlzLnNldF9jYXVnaHQoITEpLHRoaXMuc2V0X3JldGhyb3duKCExKX0sdGhpcy5hZGRfcmVmPWZ1bmN0aW9uKCl7UmlbdGhpcy5wdHI+PjJdKz0xfSx0aGlzLnJlbGVhc2VfcmVmPWZ1bmN0aW9uKCl7dmFyIGV0PVJpW3RoaXMucHRyPj4yXTtyZXR1cm4gUmlbdGhpcy5wdHI+PjJdPWV0LTEsZXQ9PT0xfSx0aGlzLnNldF9hZGp1c3RlZF9wdHI9ZnVuY3Rpb24oZXQpe3NpW3RoaXMucHRyKzE2Pj4yXT1ldH0sdGhpcy5nZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKCl7cmV0dXJuIHNpW3RoaXMucHRyKzE2Pj4yXX0sdGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe2lmKGZtKHRoaXMuZ2V0X3R5cGUoKSkpcmV0dXJuIHNpW3RoaXMuZXhjUHRyPj4yXTt2YXIgZXQ9dGhpcy5nZXRfYWRqdXN0ZWRfcHRyKCk7cmV0dXJuIGV0IT09MD9ldDp0aGlzLmV4Y1B0cn19ZnVuY3Rpb24gZigpe2Z1bmN0aW9uIHooKXtpZighckEmJihyQT0hMCxHLmNhbGxlZFJ1bj0hMCwhbmkpKXtpZihEZT0hMCxBKE9pKSxJdChHKSxHLm9uUnVudGltZUluaXRpYWxpemVkJiZHLm9uUnVudGltZUluaXRpYWxpemVkKCksRy5wb3N0UnVuKWZvcih0eXBlb2YgRy5wb3N0UnVuPT0iZnVuY3Rpb24iJiYoRy5wb3N0UnVuPVtHLnBvc3RSdW5dKTtHLnBvc3RSdW4ubGVuZ3RoOylnbi51bnNoaWZ0KEcucG9zdFJ1bi5zaGlmdCgpKTtBKGduKX19aWYoISgwPFllKSl7aWYoRy5wcmVSdW4pZm9yKHR5cGVvZiBHLnByZVJ1bj09ImZ1bmN0aW9uIiYmKEcucHJlUnVuPVtHLnByZVJ1bl0pO0cucHJlUnVuLmxlbmd0aDspcWUudW5zaGlmdChHLnByZVJ1bi5zaGlmdCgpKTtBKHFlKSwwPFllfHwoRy5zZXRTdGF0dXM/KEcuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtHLnNldFN0YXR1cygiIil9LDEpLHooKX0sMSkpOnooKSl9fWZ1bmN0aW9uIEUoKXt9ZnVuY3Rpb24gXyh6KXtyZXR1cm4oenx8RSkuX19jYWNoZV9ffWZ1bmN0aW9uIFIoeixldCl7dmFyIHB0PV8oZXQpLCR0PXB0W3pdO3JldHVybiAkdHx8KCR0PU9iamVjdC5jcmVhdGUoKGV0fHxFKS5wcm90b3R5cGUpLCR0LnB0cj16LHB0W3pdPSR0KX1mdW5jdGlvbiBJKHope2lmKHR5cGVvZiB6PT0ic3RyaW5nIil7Zm9yKHZhciBldD0wLHB0PTA7cHQ8ei5sZW5ndGg7KytwdCl7dmFyICR0PXouY2hhckNvZGVBdChwdCk7MTI3Pj0kdD9ldCsrOjIwNDc+PSR0P2V0Kz0yOjU1Mjk2PD0kdCYmNTczNDM+PSR0PyhldCs9NCwrK3B0KTpldCs9M31pZihldD1BcnJheShldCsxKSxwdD0wLCR0PWV0Lmxlbmd0aCwwPCR0KXskdD1wdCskdC0xO2Zvcih2YXIgdmU9MDt2ZTx6Lmxlbmd0aDsrK3ZlKXt2YXIgaGk9ei5jaGFyQ29kZUF0KHZlKTtpZig1NTI5Njw9aGkmJjU3MzQzPj1oaSl7dmFyIF9hPXouY2hhckNvZGVBdCgrK3ZlKTtoaT02NTUzNisoKGhpJjEwMjMpPDwxMCl8X2EmMTAyM31pZigxMjc+PWhpKXtpZihwdD49JHQpYnJlYWs7ZXRbcHQrK109aGl9ZWxzZXtpZigyMDQ3Pj1oaSl7aWYocHQrMT49JHQpYnJlYWs7ZXRbcHQrK109MTkyfGhpPj42fWVsc2V7aWYoNjU1MzU+PWhpKXtpZihwdCsyPj0kdClicmVhaztldFtwdCsrXT0yMjR8aGk+PjEyfWVsc2V7aWYocHQrMz49JHQpYnJlYWs7ZXRbcHQrK109MjQwfGhpPj4xOCxldFtwdCsrXT0xMjh8aGk+PjEyJjYzfWV0W3B0KytdPTEyOHxoaT4+NiY2M31ldFtwdCsrXT0xMjh8aGkmNjN9fWV0W3B0XT0wfXJldHVybiB6PWZpLmFsbG9jKGV0LEJlKSxmaS5jb3B5KGV0LEJlLHopLHp9cmV0dXJuIHp9ZnVuY3Rpb24gQyh6KXtpZih0eXBlb2Ygej09Im9iamVjdCIpe3ZhciBldD1maS5hbGxvYyh6LEJlKTtyZXR1cm4gZmkuY29weSh6LEJlLGV0KSxldH1yZXR1cm4gen1mdW5jdGlvbiBOKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIFZvaWRQdHIsIG5vIGNvbnN0cnVjdG9yIGluIElETCJ9ZnVuY3Rpb24gVCgpe3RoaXMucHRyPW5uKCksXyhUKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBiKCl7dGhpcy5wdHI9Q3MoKSxfKGIpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEYoKXt0aGlzLnB0cj1QbigpLF8oRilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gQigpe3RoaXMucHRyPUNpKCksXyhCKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBVKCl7dGhpcy5wdHI9YnIoKSxfKFUpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFEoKXt0aGlzLnB0cj1ncygpLF8oUSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTSgpe3RoaXMucHRyPU1oKCksXyhNKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBrKCl7dGhpcy5wdHI9T28oKSxfKGspW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHkoKXt0aGlzLnB0cj1raCgpLF8oeSlbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gYygpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBTdGF0dXMsIG5vIGNvbnN0cnVjdG9yIGluIElETCJ9ZnVuY3Rpb24gZygpe3RoaXMucHRyPVhhKCksXyhnKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBPKCl7dGhpcy5wdHI9a0EoKSxfKE8pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEQoKXt0aGlzLnB0cj0kYygpLF8oRClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gdygpe3RoaXMucHRyPXdoKCksXyh3KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB4KCl7dGhpcy5wdHI9ZWwoKSxfKHgpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEgoKXt0aGlzLnB0cj1XZCgpLF8oSClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gaigpe3RoaXMucHRyPWVBKCksXyhqKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBYKCl7dGhpcy5wdHI9SG8oKSxfKFgpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHR0KCl7dGhpcy5wdHI9amgoKSxfKHR0KVt0aGlzLnB0cl09dGhpc31lPWU9PT12b2lkIDA/e306ZTt2YXIgRz10eXBlb2YgZTwidSI/ZTp7fSxJdCxndDtHLnJlYWR5PW5ldyBQcm9taXNlKGZ1bmN0aW9uKHosZXQpe0l0PXosZ3Q9ZXR9KTt2YXIgWXQ9ITEsVXQ9ITE7Ry5vblJ1bnRpbWVJbml0aWFsaXplZD1mdW5jdGlvbigpe1l0PSEwLFV0JiZ0eXBlb2YgRy5vbk1vZHVsZUxvYWRlZD09ImZ1bmN0aW9uIiYmRy5vbk1vZHVsZUxvYWRlZChHKX0sRy5vbk1vZHVsZVBhcnNlZD1mdW5jdGlvbigpe1V0PSEwLFl0JiZ0eXBlb2YgRy5vbk1vZHVsZUxvYWRlZD09ImZ1bmN0aW9uIiYmRy5vbk1vZHVsZUxvYWRlZChHKX0sRy5pc1ZlcnNpb25TdXBwb3J0ZWQ9ZnVuY3Rpb24oeil7cmV0dXJuIHR5cGVvZiB6IT0ic3RyaW5nIj8hMTooej16LnNwbGl0KCIuIiksMj56Lmxlbmd0aHx8Mzx6Lmxlbmd0aD8hMTp6WzBdPT0xJiYwPD16WzFdJiY1Pj16WzFdPyEwOiEoelswXSE9MHx8MTA8elsxXSkpfTt2YXIgQ3Q9T2JqZWN0LmFzc2lnbih7fSxHKSx6dD10eXBlb2Ygd2luZG93PT0ib2JqZWN0IixrdD10eXBlb2YgaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIixKdD10eXBlb2YgcHJvY2Vzcz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZT09InN0cmluZyIsV3Q9IiI7aWYoSnQpe3ZhciBidD1YbygiZnMiKSxlZT1YbygicGF0aCIpO1d0PWt0P2VlLmRpcm5hbWUoV3QpKyIvIjpfX2Rpcm5hbWUrIi8iO3ZhciBjZT1mdW5jdGlvbih6LGV0KXtyZXR1cm4gej16LnN0YXJ0c1dpdGgoImZpbGU6Ly8iKT9uZXcgVVJMKHopOmVlLm5vcm1hbGl6ZSh6KSxidC5yZWFkRmlsZVN5bmMoeixldD92b2lkIDA6InV0ZjgiKX0samU9ZnVuY3Rpb24oeil7cmV0dXJuIHo9Y2UoeiwhMCksei5idWZmZXJ8fCh6PW5ldyBVaW50OEFycmF5KHopKSx6fSxTZT1mdW5jdGlvbih6LGV0LHB0KXt6PXouc3RhcnRzV2l0aCgiZmlsZTovLyIpP25ldyBVUkwoeik6ZWUubm9ybWFsaXplKHopLGJ0LnJlYWRGaWxlKHosZnVuY3Rpb24oJHQsdmUpeyR0P3B0KCR0KTpldCh2ZS5idWZmZXIpfSl9OzE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmcHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKSxwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksRy5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn19ZWxzZSh6dHx8a3QpJiYoa3Q/V3Q9c2VsZi5sb2NhdGlvbi5ocmVmOnR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJihXdD1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksdCYmKFd0PXQpLFd0PVd0LmluZGV4T2YoImJsb2I6IikhPT0wP1d0LnN1YnN0cigwLFd0LnJlcGxhY2UoL1s/I10uKi8sIiIpLmxhc3RJbmRleE9mKCIvIikrMSk6IiIsY2U9ZnVuY3Rpb24oeil7dmFyIGV0PW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gZXQub3BlbigiR0VUIix6LCExKSxldC5zZW5kKG51bGwpLGV0LnJlc3BvbnNlVGV4dH0sa3QmJihqZT1mdW5jdGlvbih6KXt2YXIgZXQ9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBldC5vcGVuKCJHRVQiLHosITEpLGV0LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLGV0LnNlbmQobnVsbCksbmV3IFVpbnQ4QXJyYXkoZXQucmVzcG9uc2UpfSksU2U9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PW5ldyBYTUxIdHRwUmVxdWVzdDskdC5vcGVuKCJHRVQiLHosITApLCR0LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLCR0Lm9ubG9hZD1mdW5jdGlvbigpeyR0LnN0YXR1cz09MjAwfHwkdC5zdGF0dXM9PTAmJiR0LnJlc3BvbnNlP2V0KCR0LnJlc3BvbnNlKTpwdCgpfSwkdC5vbmVycm9yPXB0LCR0LnNlbmQobnVsbCl9KTt2YXIgVWU9Ry5wcmludHx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxNZT1HLnByaW50RXJyfHxjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtPYmplY3QuYXNzaWduKEcsQ3QpLEN0PW51bGw7dmFyIENlO0cud2FzbUJpbmFyeSYmKENlPUcud2FzbUJpbmFyeSksdHlwZW9mIFdlYkFzc2VtYmx5IT0ib2JqZWN0IiYmcigibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBGZSxuaT0hMSx6ZT10eXBlb2YgVGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMCxCZSxNaSxSaSxzaSxxZT1bXSxPaT1bXSxnbj1bXSxEZT0hMSxZZT0wLEdpPW51bGwsQW49bnVsbCxOZT0iZHJhY29fZGVjb2Rlci53YXNtIjtOZS5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil8fChOZT1pKE5lKSk7dmFyIGVpPTAsX249W251bGwsW10sW11dLGhzPXtiOmZ1bmN0aW9uKHosZXQscHQpe3Rocm93IG5ldyBkKHopLmluaXQoZXQscHQpLGVpKyssen0sYTpmdW5jdGlvbigpe3IoIiIpfSxnOmZ1bmN0aW9uKHosZXQscHQpe01pLmNvcHlXaXRoaW4oeixldCxldCtwdCl9LGU6ZnVuY3Rpb24oeil7dmFyIGV0PU1pLmxlbmd0aDtpZih6Pj4+PTAsMjE0NzQ4MzY0ODx6KXJldHVybiExO2Zvcih2YXIgcHQ9MTs0Pj1wdDtwdCo9Mil7dmFyICR0PWV0KigxKy4yL3B0KTskdD1NYXRoLm1pbigkdCx6KzEwMDY2MzI5Nik7dmFyIHZlPU1hdGg7JHQ9TWF0aC5tYXgoeiwkdCksdmU9dmUubWluLmNhbGwodmUsMjE0NzQ4MzY0OCwkdCsoNjU1MzYtJHQlNjU1MzYpJTY1NTM2KTt0OnskdD1GZS5idWZmZXI7dHJ5e0ZlLmdyb3codmUtJHQuYnl0ZUxlbmd0aCs2NTUzNT4+PjE2KSxvKCk7dmFyIGhpPTE7YnJlYWsgdH1jYXRjaHt9aGk9dm9pZCAwfWlmKGhpKXJldHVybiEwfXJldHVybiExfSxmOmZ1bmN0aW9uKHope3JldHVybiA1Mn0sZDpmdW5jdGlvbih6LGV0LHB0LCR0LHZlKXtyZXR1cm4gNzB9LGM6ZnVuY3Rpb24oeixldCxwdCwkdCl7Zm9yKHZhciB2ZT0wLGhpPTA7aGk8cHQ7aGkrKyl7dmFyIF9hPXNpW2V0Pj4yXSx0Yz1zaVtldCs0Pj4yXTtldCs9ODtmb3IodmFyIEo9MDtKPHRjO0orKyl7dmFyIHY9TWlbX2ErSl0sc3Q9X25bel07dj09PTB8fHY9PT0xMD8oKHo9PT0xP1VlOk1lKShuKHN0LDApKSxzdC5sZW5ndGg9MCk6c3QucHVzaCh2KX12ZSs9dGN9cmV0dXJuIHNpWyR0Pj4yXT12ZSwwfX07KGZ1bmN0aW9uKCl7ZnVuY3Rpb24geih2ZSxoaSl7Ry5hc209dmUuZXhwb3J0cyxGZT1HLmFzbS5oLG8oKSxPaS51bnNoaWZ0KEcuYXNtLmkpLFllLS0sRy5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZHLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoWWUpLFllPT0wJiYoR2khPT1udWxsJiYoY2xlYXJJbnRlcnZhbChHaSksR2k9bnVsbCksQW4mJih2ZT1BbixBbj1udWxsLHZlKCkpKX1mdW5jdGlvbiBldCh2ZSl7eih2ZS5pbnN0YW5jZSl9ZnVuY3Rpb24gcHQodmUpe3JldHVybiBoKCkudGhlbihmdW5jdGlvbihoaSl7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGhpLCR0KX0pLnRoZW4oZnVuY3Rpb24oaGkpe3JldHVybiBoaX0pLnRoZW4odmUsZnVuY3Rpb24oaGkpe01lKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK2hpKSxyKGhpKX0pfXZhciAkdD17YTpoc307aWYoWWUrKyxHLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJkcubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhZZSksRy5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBHLmluc3RhbnRpYXRlV2FzbSgkdCx6KX1jYXRjaCh2ZSl7TWUoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrdmUpLGd0KHZlKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQ2V8fHR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyE9ImZ1bmN0aW9uInx8TmUuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfHxOZS5zdGFydHNXaXRoKCJmaWxlOi8vIil8fEp0fHx0eXBlb2YgZmV0Y2ghPSJmdW5jdGlvbiI/cHQoZXQpOmZldGNoKE5lLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbih2ZSl7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKHZlLCR0KS50aGVuKGV0LGZ1bmN0aW9uKGhpKXtyZXR1cm4gTWUoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK2hpKSxNZSgiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKSxwdChldCl9KX0pfSgpLmNhdGNoKGd0KSx7fX0pKCk7dmFyIFFpPUcuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWk9Ry5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1HLmFzbS5rKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5uPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX0RlY29kZXJCdWZmZXJfMD1mdW5jdGlvbigpe3JldHVybihubj1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9Ry5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxraT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oa2k9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPUcuYXNtLm0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc249Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihzbj1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9fX2Rlc3Ryb3lfX18wPUcuYXNtLm4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ3M9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENzPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1HLmFzbS5vKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNzPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oY3M9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfdHJhbnNmb3JtX3R5cGVfMD1HLmFzbS5wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhuPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeG49Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfX19kZXN0cm95X19fMD1HLmFzbS5xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBuPUcuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9HZW9tZXRyeUF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBuPUcuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9HZW9tZXRyeUF0dHJpYnV0ZV8wPUcuYXNtLnIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWk9Ry5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWk9Ry5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX19fZGVzdHJveV9fXzA9Ry5hc20ucykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDaT1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1mdW5jdGlvbigpe3JldHVybihDaT1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1HLmFzbS50KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpuPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSm49Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1HLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxzPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4obHM9Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1HLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGFvPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGFvPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPUcuYXNtLncpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scWk9Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2RhdGFfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHFpPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1HLmFzbS54KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhuPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPWZ1bmN0aW9uKCl7cmV0dXJuKGhuPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPUcuYXNtLnkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sam89Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1mdW5jdGlvbigpe3JldHVybihqbz1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbm9ybWFsaXplZF8wPUcuYXNtLnopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZHM9Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfc3RyaWRlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZHM9Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfc3RyaWRlXzA9Ry5hc20uQSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvbj1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9vZmZzZXRfMD1mdW5jdGlvbigpe3JldHVybihvbj1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9vZmZzZXRfMD1HLmFzbS5CKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdzPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1mdW5jdGlvbigpe3JldHVybih3cz1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfdW5pcXVlX2lkXzA9Ry5hc20uQykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWbz1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihWbz1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1HLmFzbS5EKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGJyPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYnI9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1HLmFzbS5FKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNvPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybihTbz1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9Ry5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkZT1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oJGU9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPUcuYXNtLkcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWE9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihhYT1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX21pbl92YWx1ZV8xPUcuYXNtLkgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWXI9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9yYW5nZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFlyPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1HLmFzbS5JKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhzPUcuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih4cz1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9Ry5hc20uSikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxncz1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZ3M9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV8wPUcuYXNtLkspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVG49Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybihUbj1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPUcuYXNtLkwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saHI9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1mdW5jdGlvbigpe3JldHVybihocj1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPUcuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWg9Ry5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihVaD1HLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPUcuYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWg9Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1oPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1HLmFzbS5PKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9uPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oT249Ry5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX2F0dHJpYnV0ZXNfMD1HLmFzbS5QKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNyPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybihjcj1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9Ry5hc20uUSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJaT1HLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKElpPUcuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX19fZGVzdHJveV9fXzA9Ry5hc20uUikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPbz1HLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9NZXNoXzA9ZnVuY3Rpb24oKXtyZXR1cm4oT289Ry5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPUcuYXNtLlMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2M9Ry5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2ZhY2VzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2M9Ry5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2ZhY2VzXzA9Ry5hc20uVCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYYz1HLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fYXR0cmlidXRlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKFhjPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9hdHRyaWJ1dGVzXzA9Ry5hc20uVSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYz1HLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocWM9Ry5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX3BvaW50c18wPUcuYXNtLlYpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWg9Ry5fZW1zY3JpcHRlbl9iaW5kX01lc2hfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihRaD1HLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPUcuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2g9Ry5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oa2g9Ry5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9Ry5hc20uWCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBYT1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihBYT1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1HLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExoPUcuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExoPUcuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPUcuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGE9Ry5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKGhhPUcuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfb2tfMD1HLmFzbS5fKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEthPUcuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2E9Ry5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19lcnJvcl9tc2dfMD1HLmFzbS4kKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFZkPUcuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihWZD1HLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9Ry5hc20uYWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWGE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oWGE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9Ry5hc20uYmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oU2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0dldFZhbHVlXzE9Ry5hc20uY2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scWE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihxYT1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfc2l6ZV8wPUcuYXNtLmRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxyPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGxyPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9fX2Rlc3Ryb3lfX18wPUcuYXNtLmVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGtBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPUcuYXNtLmZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRhPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRhPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPUcuYXNtLmdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9kPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oT2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1HLmFzbS5oYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkcj1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihkcj1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1HLmFzbS5pYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkYz1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKCRjPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfRHJhY29VSW50OEFycmF5XzA9Ry5hc20uamEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGw9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHRsPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT1HLmFzbS5rYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5aD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybih5aD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X3NpemVfMD1HLmFzbS5sYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtcj1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4obXI9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPUcuYXNtLm1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfRHJhY29JbnQxNkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4od2g9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9EcmFjb0ludDE2QXJyYXlfMD1HLmFzbS5uYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxCZD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQmQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9HZXRWYWx1ZV8xPUcuYXNtLm9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHhoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfc2l6ZV8wPUcuYXNtLnBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihQaD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X19fZGVzdHJveV9fXzA9Ry5hc20ucWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZWw9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGVsPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0RyYWNvVUludDE2QXJyYXlfMD1HLmFzbS5yYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpbD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGlsPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9Ry5hc20uc2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1HLmFzbS50YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx0QT1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHRBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X19fZGVzdHJveV9fXzA9Ry5hc20udWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sV2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihXZD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0RyYWNvSW50MzJBcnJheV8wPUcuYXNtLnZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihEZD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9Ry5hc20ud2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVWQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9zaXplXzA9Ry5hc20ueGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTEE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKExBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfX19kZXN0cm95X19fMD1HLmFzbS55YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlQT1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oZUE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfRHJhY29VSW50MzJBcnJheV8wPUcuYXNtLnphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE1kPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oTWQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1HLmFzbS5BYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRZD1HLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfc2l6ZV8wPUcuYXNtLkJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeUE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1HLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIbz1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKEhvPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTWV0YWRhdGFRdWVyaWVyXzA9Ry5hc20uRGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbmw9Ry5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9IYXNFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKG5sPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1HLmFzbS5FYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2bz1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4odm89Ry5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPUcuYXNtLkZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlBPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlBcnJheV8zPWZ1bmN0aW9uKCl7cmV0dXJuKGlBPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlBcnJheV8zPUcuYXNtLkdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpoPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RG91YmxlRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihKaD1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldERvdWJsZUVudHJ5XzI9Ry5hc20uSGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRTdHJpbmdFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGtkPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0U3RyaW5nRW50cnlfMj1HLmFzbS5JYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMZD1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX051bUVudHJpZXNfMT1mdW5jdGlvbigpe3JldHVybihMZD1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX051bUVudHJpZXNfMT1HLmFzbS5KYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqbj1HLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEVudHJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKGpuPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9Ry5hc20uS2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2w9Ry5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHNsPUcuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfX19kZXN0cm95X19fMD1HLmFzbS5MYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqaD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oamg9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPUcuYXNtLk1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5BPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4obkE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWRfMz1HLmFzbS5OYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjYT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKGNhPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9NZXNoXzM9Ry5hc20uT2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSGg9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1mdW5jdGlvbigpe3JldHVybihIaD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZF8yPUcuYXNtLlBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9ZnVuY3Rpb24oKXtyZXR1cm4odmg9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU5hbWVfMj1HLmFzbS5RYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3QT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeV8zPWZ1bmN0aW9uKCl7cmV0dXJuKHdBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5XzM9Ry5hc20uUmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2w9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlXzI9ZnVuY3Rpb24oKXtyZXR1cm4ob2w9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlXzI9Ry5hc20uU2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semg9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKHpoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUJ5VW5pcXVlSWRfMj1HLmFzbS5UYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5ZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRNZXRhZGF0YV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHlkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9Ry5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2g9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlTWV0YWRhdGFfMj1mdW5jdGlvbigpe3JldHVybihLaD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPUcuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFZzPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKFZzPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPUcuYXNtLldhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhoPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj1mdW5jdGlvbigpe3JldHVybihYaD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoXzI9Ry5hc20uWGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2Q9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybih3ZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MTZBcnJheV8zPUcuYXNtLllhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJsPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4ocmw9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDMyQXJyYXlfMz1HLmFzbS5aYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBbz1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdF8zPWZ1bmN0aW9uKCl7cmV0dXJuKEFvPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0XzM9Ry5hc20uX2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG89Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihobz1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50c18zPUcuYXNtLiRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKHhkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludEZvckFsbFBvaW50c18zPUcuYXNtLmFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihQZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzXzM9Ry5hc20uYmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQm89Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihCbz1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPUcuYXNtLmNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oeEE9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1HLmFzbS5kYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsYT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihsYT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1HLmFzbS5lYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkYT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKGRhPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzXzM9Ry5hc20uZmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oSmQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9Ry5hc20uZ2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzXzU9ZnVuY3Rpb24oKXtyZXR1cm4oamQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzXzU9Ry5hc20uaGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSGQ9Ry5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybV8xPWZ1bmN0aW9uKCl7cmV0dXJuKEhkPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX1NraXBBdHRyaWJ1dGVUcmFuc2Zvcm1fMT1HLmFzbS5pYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2ZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWRfMT1mdW5jdGlvbigpe3JldHVybih2ZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWRfMT1HLmFzbS5qYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6ZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1mdW5jdGlvbigpe3JldHVybih6ZD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1HLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxaD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1mdW5jdGlvbigpe3JldHVybihxaD1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1HLmFzbS5sYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQQT1HLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFBBPUcuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9Ry5hc20ubWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWE9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX0lOVkFMSURfVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKG1hPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1HLmFzbS5uYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhbD1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKGFsPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9OT19UUkFOU0ZPUk09Ry5hc20ub2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZmE9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09ZnVuY3Rpb24oKXtyZXR1cm4oZmE9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09Ry5hc20ucGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWE9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX09DVEFIRURST05fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKEVhPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1HLmFzbS5xYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzQT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9JTlZBTElEPWZ1bmN0aW9uKCl7cmV0dXJuKHNBPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0lOVkFMSUQ9Ry5hc20ucmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWw9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfUE9TSVRJT049ZnVuY3Rpb24oKXtyZXR1cm4oQWw9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfUE9TSVRJT049Ry5hc20uc2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2Q9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfTk9STUFMPWZ1bmN0aW9uKCl7cmV0dXJuKEtkPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX05PUk1BTD1HLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKQT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1mdW5jdGlvbigpe3JldHVybihKQT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1HLmFzbS51YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkaD1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9ZnVuY3Rpb24oKXtyZXR1cm4oJGg9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfVEVYX0NPT1JEPUcuYXNtLnZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhkPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9ZnVuY3Rpb24oKXtyZXR1cm4oWGQ9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfR0VORVJJQz1HLmFzbS53YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxobD1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9JTlZBTElEX0dFT01FVFJZX1RZUEU9ZnVuY3Rpb24oKXtyZXR1cm4oaGw9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPUcuYXNtLnhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFkPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPWZ1bmN0aW9uKCl7cmV0dXJuKHFkPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPUcuYXNtLnliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRkPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1RSSUFOR1VMQVJfTUVTSD1mdW5jdGlvbigpe3JldHVybigkZD1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9Ry5hc20uemIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdG09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVkFMSUQ9ZnVuY3Rpb24oKXtyZXR1cm4odG09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVkFMSUQ9Ry5hc20uQWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZW09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oZW09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDg9Ry5hc20uQmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saW09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PWZ1bmN0aW9uKCl7cmV0dXJuKGltPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UOD1HLmFzbS5DYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxubT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4obm09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDE2PUcuYXNtLkRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oc209Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1HLmFzbS5FYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvbT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4ob209Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDMyPUcuYXNtLkZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNsPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oY2w9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQzMj1HLmFzbS5HYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxybT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4ocm09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PUcuYXNtLkhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGFtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oYW09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ2ND1HLmFzbS5JYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBbT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj1mdW5jdGlvbigpe3JldHVybihBbT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj1HLmFzbS5KYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsbD1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQ2ND1mdW5jdGlvbigpe3JldHVybihsbD1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQ2ND1HLmFzbS5LYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxobT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfQk9PTD1mdW5jdGlvbigpe3JldHVybihobT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfQk9PTD1HLmFzbS5MYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvQT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVFlQRVNfQ09VTlQ9ZnVuY3Rpb24oKXtyZXR1cm4ob0E9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1RZUEVTX0NPVU5UPUcuYXNtLk1iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPWZ1bmN0aW9uKCl7cmV0dXJuKGNtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPUcuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpBPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKGpBPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPUcuYXNtLk9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKGxtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPUcuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWZ1bmN0aW9uKCl7cmV0dXJuKGRtPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPUcuYXNtLlFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRsPUcuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4oZGw9Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5TVVBQT1JURURfVkVSU0lPTj1HLmFzbS5SYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtbT1HLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTktOT1dOX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4obW09Ry5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPUcuYXNtLlNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O0cuX21hbGxvYz1mdW5jdGlvbigpe3JldHVybihHLl9tYWxsb2M9Ry5hc20uVGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRy5fZnJlZT1mdW5jdGlvbigpe3JldHVybihHLl9mcmVlPUcuYXNtLlViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBmbT1mdW5jdGlvbigpe3JldHVybihmbT1HLmFzbS5WYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtHLl9fX3N0YXJ0X2VtX2pzPTE1ODU2LEcuX19fc3RvcF9lbV9qcz0xNTk1NDt2YXIgckE7aWYoQW49ZnVuY3Rpb24geigpe3JBfHxmKCksckF8fChBbj16KX0sRy5wcmVJbml0KWZvcih0eXBlb2YgRy5wcmVJbml0PT0iZnVuY3Rpb24iJiYoRy5wcmVJbml0PVtHLnByZUluaXRdKTswPEcucHJlSW5pdC5sZW5ndGg7KUcucHJlSW5pdC5wb3AoKSgpO2YoKSxFLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FLEUucHJvdG90eXBlLl9fY2xhc3NfXz1FLEUuX19jYWNoZV9fPXt9LEcuV3JhcHBlck9iamVjdD1FLEcuZ2V0Q2FjaGU9XyxHLndyYXBQb2ludGVyPVIsRy5jYXN0T2JqZWN0PWZ1bmN0aW9uKHosZXQpe3JldHVybiBSKHoucHRyLGV0KX0sRy5OVUxMPVIoMCksRy5kZXN0cm95PWZ1bmN0aW9uKHope2lmKCF6Ll9fZGVzdHJveV9fKXRocm93IkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjt6Ll9fZGVzdHJveV9fKCksZGVsZXRlIF8oei5fX2NsYXNzX18pW3oucHRyXX0sRy5jb21wYXJlPWZ1bmN0aW9uKHosZXQpe3JldHVybiB6LnB0cj09PWV0LnB0cn0sRy5nZXRQb2ludGVyPWZ1bmN0aW9uKHope3JldHVybiB6LnB0cn0sRy5nZXRDbGFzcz1mdW5jdGlvbih6KXtyZXR1cm4gei5fX2NsYXNzX199O3ZhciBmaT17YnVmZmVyOjAsc2l6ZTowLHBvczowLHRlbXBzOltdLG5lZWRlZDowLHByZXBhcmU6ZnVuY3Rpb24oKXtpZihmaS5uZWVkZWQpe2Zvcih2YXIgej0wO3o8ZmkudGVtcHMubGVuZ3RoO3orKylHLl9mcmVlKGZpLnRlbXBzW3pdKTtmaS50ZW1wcy5sZW5ndGg9MCxHLl9mcmVlKGZpLmJ1ZmZlciksZmkuYnVmZmVyPTAsZmkuc2l6ZSs9ZmkubmVlZGVkLGZpLm5lZWRlZD0wfWZpLmJ1ZmZlcnx8KGZpLnNpemUrPTEyOCxmaS5idWZmZXI9Ry5fbWFsbG9jKGZpLnNpemUpLGZpLmJ1ZmZlcnx8cih2b2lkIDApKSxmaS5wb3M9MH0sYWxsb2M6ZnVuY3Rpb24oeixldCl7cmV0dXJuIGZpLmJ1ZmZlcnx8cih2b2lkIDApLHo9ei5sZW5ndGgqZXQuQllURVNfUEVSX0VMRU1FTlQsej16KzcmLTgsZmkucG9zK3o+PWZpLnNpemU/KDA8enx8cih2b2lkIDApLGZpLm5lZWRlZCs9eixldD1HLl9tYWxsb2MoeiksZmkudGVtcHMucHVzaChldCkpOihldD1maS5idWZmZXIrZmkucG9zLGZpLnBvcys9eiksZXR9LGNvcHk6ZnVuY3Rpb24oeixldCxwdCl7c3dpdGNoKHB0Pj4+PTAsZXQuQllURVNfUEVSX0VMRU1FTlQpe2Nhc2UgMjpwdD4+Pj0xO2JyZWFrO2Nhc2UgNDpwdD4+Pj0yO2JyZWFrO2Nhc2UgODpwdD4+Pj0zfWZvcih2YXIgJHQ9MDskdDx6Lmxlbmd0aDskdCsrKWV0W3B0KyR0XT16WyR0XX19O3JldHVybiBOLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxOLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1OLE4ucHJvdG90eXBlLl9fY2xhc3NfXz1OLE4uX19jYWNoZV9fPXt9LEcuVm9pZFB0cj1OLE4ucHJvdG90eXBlLl9fZGVzdHJveV9fPU4ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7UWkodGhpcy5wdHIpfSxULnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxULnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ULFQucHJvdG90eXBlLl9fY2xhc3NfXz1ULFQuX19jYWNoZV9fPXt9LEcuRGVjb2RlckJ1ZmZlcj1ULFQucHJvdG90eXBlLkluaXQ9VC5wcm90b3R5cGUuSW5pdD1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7ZmkucHJlcGFyZSgpLHR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9Qyh6KSksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLGtpKHB0LHosZXQpfSxULnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1ULnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3NuKHRoaXMucHRyKX0sYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksYi5wcm90b3R5cGUuY29uc3RydWN0b3I9YixiLnByb3RvdHlwZS5fX2NsYXNzX189YixiLl9fY2FjaGVfXz17fSxHLkF0dHJpYnV0ZVRyYW5zZm9ybURhdGE9YixiLnByb3RvdHlwZS50cmFuc2Zvcm1fdHlwZT1iLnByb3RvdHlwZS50cmFuc2Zvcm1fdHlwZT1mdW5jdGlvbigpe3JldHVybiBjcyh0aGlzLnB0cil9LGIucHJvdG90eXBlLl9fZGVzdHJveV9fPWIucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7eG4odGhpcy5wdHIpfSxGLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxGLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1GLEYucHJvdG90eXBlLl9fY2xhc3NfXz1GLEYuX19jYWNoZV9fPXt9LEcuR2VvbWV0cnlBdHRyaWJ1dGU9RixGLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1GLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0FpKHRoaXMucHRyKX0sQi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksQi5wcm90b3R5cGUuY29uc3RydWN0b3I9QixCLnByb3RvdHlwZS5fX2NsYXNzX189QixCLl9fY2FjaGVfXz17fSxHLlBvaW50QXR0cmlidXRlPUIsQi5wcm90b3R5cGUuc2l6ZT1CLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIEpuKHRoaXMucHRyKX0sQi5wcm90b3R5cGUuR2V0QXR0cmlidXRlVHJhbnNmb3JtRGF0YT1CLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIFIobHModGhpcy5wdHIpLGIpfSxCLnByb3RvdHlwZS5hdHRyaWJ1dGVfdHlwZT1CLnByb3RvdHlwZS5hdHRyaWJ1dGVfdHlwZT1mdW5jdGlvbigpe3JldHVybiBhbyh0aGlzLnB0cil9LEIucHJvdG90eXBlLmRhdGFfdHlwZT1CLnByb3RvdHlwZS5kYXRhX3R5cGU9ZnVuY3Rpb24oKXtyZXR1cm4gcWkodGhpcy5wdHIpfSxCLnByb3RvdHlwZS5udW1fY29tcG9uZW50cz1CLnByb3RvdHlwZS5udW1fY29tcG9uZW50cz1mdW5jdGlvbigpe3JldHVybiBobih0aGlzLnB0cil9LEIucHJvdG90eXBlLm5vcm1hbGl6ZWQ9Qi5wcm90b3R5cGUubm9ybWFsaXplZD1mdW5jdGlvbigpe3JldHVybiEham8odGhpcy5wdHIpfSxCLnByb3RvdHlwZS5ieXRlX3N0cmlkZT1CLnByb3RvdHlwZS5ieXRlX3N0cmlkZT1mdW5jdGlvbigpe3JldHVybiBkcyh0aGlzLnB0cil9LEIucHJvdG90eXBlLmJ5dGVfb2Zmc2V0PUIucHJvdG90eXBlLmJ5dGVfb2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIG9uKHRoaXMucHRyKX0sQi5wcm90b3R5cGUudW5pcXVlX2lkPUIucHJvdG90eXBlLnVuaXF1ZV9pZD1mdW5jdGlvbigpe3JldHVybiB3cyh0aGlzLnB0cil9LEIucHJvdG90eXBlLl9fZGVzdHJveV9fPUIucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7Vm8odGhpcy5wdHIpfSxVLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxVLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1VLFUucHJvdG90eXBlLl9fY2xhc3NfXz1VLFUuX19jYWNoZV9fPXt9LEcuQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtPVUsVS5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9VS5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSwhIVNvKGV0LHopfSxVLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1VLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiAkZSh0aGlzLnB0cil9LFUucHJvdG90eXBlLm1pbl92YWx1ZT1VLnByb3RvdHlwZS5taW5fdmFsdWU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxhYShldCx6KX0sVS5wcm90b3R5cGUucmFuZ2U9VS5wcm90b3R5cGUucmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gWXIodGhpcy5wdHIpfSxVLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1VLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3hzKHRoaXMucHRyKX0sUS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksUS5wcm90b3R5cGUuY29uc3RydWN0b3I9USxRLnByb3RvdHlwZS5fX2NsYXNzX189USxRLl9fY2FjaGVfXz17fSxHLkF0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm09USxRLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1RLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLCEhVG4oZXQseil9LFEucHJvdG90eXBlLnF1YW50aXphdGlvbl9iaXRzPVEucHJvdG90eXBlLnF1YW50aXphdGlvbl9iaXRzPWZ1bmN0aW9uKCl7cmV0dXJuIGhyKHRoaXMucHRyKX0sUS5wcm90b3R5cGUuX19kZXN0cm95X189US5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtVaCh0aGlzLnB0cil9LE0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLE0ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU0sTS5wcm90b3R5cGUuX19jbGFzc19fPU0sTS5fX2NhY2hlX189e30sRy5Qb2ludENsb3VkPU0sTS5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9TS5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT24odGhpcy5wdHIpfSxNLnByb3RvdHlwZS5udW1fcG9pbnRzPU0ucHJvdG90eXBlLm51bV9wb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gY3IodGhpcy5wdHIpfSxNLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1NLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0lpKHRoaXMucHRyKX0say5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksay5wcm90b3R5cGUuY29uc3RydWN0b3I9ayxrLnByb3RvdHlwZS5fX2NsYXNzX189ayxrLl9fY2FjaGVfXz17fSxHLk1lc2g9ayxrLnByb3RvdHlwZS5udW1fZmFjZXM9ay5wcm90b3R5cGUubnVtX2ZhY2VzPWZ1bmN0aW9uKCl7cmV0dXJuIEtjKHRoaXMucHRyKX0say5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9ay5wcm90b3R5cGUubnVtX2F0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gWGModGhpcy5wdHIpfSxrLnByb3RvdHlwZS5udW1fcG9pbnRzPWsucHJvdG90eXBlLm51bV9wb2ludHM9ZnVuY3Rpb24oKXtyZXR1cm4gcWModGhpcy5wdHIpfSxrLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1rLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1FoKHRoaXMucHRyKX0seS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSkseS5wcm90b3R5cGUuY29uc3RydWN0b3I9eSx5LnByb3RvdHlwZS5fX2NsYXNzX189eSx5Ll9fY2FjaGVfXz17fSxHLk1ldGFkYXRhPXkseS5wcm90b3R5cGUuX19kZXN0cm95X189eS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtBYSh0aGlzLnB0cil9LGMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMsYy5wcm90b3R5cGUuX19jbGFzc19fPWMsYy5fX2NhY2hlX189e30sRy5TdGF0dXM9YyxjLnByb3RvdHlwZS5jb2RlPWMucHJvdG90eXBlLmNvZGU9ZnVuY3Rpb24oKXtyZXR1cm4gTGgodGhpcy5wdHIpfSxjLnByb3RvdHlwZS5vaz1jLnByb3RvdHlwZS5vaz1mdW5jdGlvbigpe3JldHVybiEhaGEodGhpcy5wdHIpfSxjLnByb3RvdHlwZS5lcnJvcl9tc2c9Yy5wcm90b3R5cGUuZXJyb3JfbXNnPWZ1bmN0aW9uKCl7cmV0dXJuIHMoS2EodGhpcy5wdHIpKX0sYy5wcm90b3R5cGUuX19kZXN0cm95X189Yy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtWZCh0aGlzLnB0cil9LGcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWcsZy5wcm90b3R5cGUuX19jbGFzc19fPWcsZy5fX2NhY2hlX189e30sRy5EcmFjb0Zsb2F0MzJBcnJheT1nLGcucHJvdG90eXBlLkdldFZhbHVlPWcucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksU2QoZXQseil9LGcucHJvdG90eXBlLnNpemU9Zy5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBxYSh0aGlzLnB0cil9LGcucHJvdG90eXBlLl9fZGVzdHJveV9fPWcucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7bHIodGhpcy5wdHIpfSxPLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSxPLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1PLE8ucHJvdG90eXBlLl9fY2xhc3NfXz1PLE8uX19jYWNoZV9fPXt9LEcuRHJhY29JbnQ4QXJyYXk9TyxPLnByb3RvdHlwZS5HZXRWYWx1ZT1PLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLCRhKGV0LHopfSxPLnByb3RvdHlwZS5zaXplPU8ucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gT2QodGhpcy5wdHIpfSxPLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1PLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2RyKHRoaXMucHRyKX0sRC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksRC5wcm90b3R5cGUuY29uc3RydWN0b3I9RCxELnByb3RvdHlwZS5fX2NsYXNzX189RCxELl9fY2FjaGVfXz17fSxHLkRyYWNvVUludDhBcnJheT1ELEQucHJvdG90eXBlLkdldFZhbHVlPUQucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksdGwoZXQseil9LEQucHJvdG90eXBlLnNpemU9RC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB5aCh0aGlzLnB0cil9LEQucHJvdG90eXBlLl9fZGVzdHJveV9fPUQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7bXIodGhpcy5wdHIpfSx3LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSx3LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj13LHcucHJvdG90eXBlLl9fY2xhc3NfXz13LHcuX19jYWNoZV9fPXt9LEcuRHJhY29JbnQxNkFycmF5PXcsdy5wcm90b3R5cGUuR2V0VmFsdWU9dy5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxCZChldCx6KX0sdy5wcm90b3R5cGUuc2l6ZT13LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHhoKHRoaXMucHRyKX0sdy5wcm90b3R5cGUuX19kZXN0cm95X189dy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtQaCh0aGlzLnB0cil9LHgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLHgucHJvdG90eXBlLmNvbnN0cnVjdG9yPXgseC5wcm90b3R5cGUuX19jbGFzc19fPXgseC5fX2NhY2hlX189e30sRy5EcmFjb1VJbnQxNkFycmF5PXgseC5wcm90b3R5cGUuR2V0VmFsdWU9eC5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxpbChldCx6KX0seC5wcm90b3R5cGUuc2l6ZT14LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIEdkKHRoaXMucHRyKX0seC5wcm90b3R5cGUuX19kZXN0cm95X189eC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXt0QSh0aGlzLnB0cil9LEgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRS5wcm90b3R5cGUpLEgucHJvdG90eXBlLmNvbnN0cnVjdG9yPUgsSC5wcm90b3R5cGUuX19jbGFzc19fPUgsSC5fX2NhY2hlX189e30sRy5EcmFjb0ludDMyQXJyYXk9SCxILnByb3RvdHlwZS5HZXRWYWx1ZT1ILnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLERkKGV0LHopfSxILnByb3RvdHlwZS5zaXplPUgucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gVWQodGhpcy5wdHIpfSxILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1ILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0xBKHRoaXMucHRyKX0sai5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksai5wcm90b3R5cGUuY29uc3RydWN0b3I9aixqLnByb3RvdHlwZS5fX2NsYXNzX189aixqLl9fY2FjaGVfXz17fSxHLkRyYWNvVUludDMyQXJyYXk9aixqLnByb3RvdHlwZS5HZXRWYWx1ZT1qLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbih6KXt2YXIgZXQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLE1kKGV0LHopfSxqLnByb3RvdHlwZS5zaXplPWoucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gUWQodGhpcy5wdHIpfSxqLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1qLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3lBKHRoaXMucHRyKX0sWC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFLnByb3RvdHlwZSksWC5wcm90b3R5cGUuY29uc3RydWN0b3I9WCxYLnByb3RvdHlwZS5fX2NsYXNzX189WCxYLl9fY2FjaGVfXz17fSxHLk1ldGFkYXRhUXVlcmllcj1YLFgucHJvdG90eXBlLkhhc0VudHJ5PVgucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0PWV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiP2V0LnB0cjpJKGV0KSwhIW5sKHB0LHosZXQpfSxYLnByb3RvdHlwZS5HZXRJbnRFbnRyeT1YLnByb3RvdHlwZS5HZXRJbnRFbnRyeT1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIGZpLnByZXBhcmUoKSx6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldD1ldCYmdHlwZW9mIGV0PT0ib2JqZWN0Ij9ldC5wdHI6SShldCksdm8ocHQseixldCl9LFgucHJvdG90eXBlLkdldEludEVudHJ5QXJyYXk9WC5wcm90b3R5cGUuR2V0SW50RW50cnlBcnJheT1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7ZmkucHJlcGFyZSgpLHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0PWV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiP2V0LnB0cjpJKGV0KSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksaUEoJHQseixldCxwdCl9LFgucHJvdG90eXBlLkdldERvdWJsZUVudHJ5PVgucHJvdG90eXBlLkdldERvdWJsZUVudHJ5PWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0PWV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiP2V0LnB0cjpJKGV0KSxKaChwdCx6LGV0KX0sWC5wcm90b3R5cGUuR2V0U3RyaW5nRW50cnk9WC5wcm90b3R5cGUuR2V0U3RyaW5nRW50cnk9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiBmaS5wcmVwYXJlKCkseiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQ9ZXQmJnR5cGVvZiBldD09Im9iamVjdCI/ZXQucHRyOkkoZXQpLHMoa2QocHQseixldCkpfSxYLnByb3RvdHlwZS5OdW1FbnRyaWVzPVgucHJvdG90eXBlLk51bUVudHJpZXM9ZnVuY3Rpb24oeil7dmFyIGV0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxMZChldCx6KX0sWC5wcm90b3R5cGUuR2V0RW50cnlOYW1lPVgucHJvdG90eXBlLkdldEVudHJ5TmFtZT1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxzKGpuKHB0LHosZXQpKX0sWC5wcm90b3R5cGUuX19kZXN0cm95X189WC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtzbCh0aGlzLnB0cil9LHR0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEUucHJvdG90eXBlKSx0dC5wcm90b3R5cGUuY29uc3RydWN0b3I9dHQsdHQucHJvdG90eXBlLl9fY2xhc3NfXz10dCx0dC5fX2NhY2hlX189e30sRy5EZWNvZGVyPXR0LHR0LnByb3RvdHlwZS5EZWNvZGVBcnJheVRvUG9pbnRDbG91ZD10dC5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiBmaS5wcmVwYXJlKCksdHlwZW9mIHo9PSJvYmplY3QiJiYoej1DKHopKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLFIobkEoJHQseixldCxwdCksYyl9LHR0LnByb3RvdHlwZS5EZWNvZGVBcnJheVRvTWVzaD10dC5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb01lc2g9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiBmaS5wcmVwYXJlKCksdHlwZW9mIHo9PSJvYmplY3QiJiYoej1DKHopKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLFIoY2EoJHQseixldCxwdCksYyl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZD10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWQ9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0ciksSGgocHQseixldCl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU5hbWU9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiBmaS5wcmVwYXJlKCkseiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQ9ZXQmJnR5cGVvZiBldD09Im9iamVjdCI/ZXQucHRyOkkoZXQpLHZoKHB0LHosZXQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5PWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4gZmkucHJlcGFyZSgpLHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0PWV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiP2V0LnB0cjpJKGV0KSxwdD1wdCYmdHlwZW9mIHB0PT0ib2JqZWN0Ij9wdC5wdHI6SShwdCksd0EoJHQseixldCxwdCl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGU9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZT1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxSKG9sKHB0LHosZXQpLEIpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxSKHpoKHB0LHosZXQpLEIpfSx0dC5wcm90b3R5cGUuR2V0TWV0YWRhdGE9dHQucHJvdG90eXBlLkdldE1ldGFkYXRhPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksUih5ZChldCx6KSx5KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZU1ldGFkYXRhPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVNZXRhZGF0YT1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxSKEtoKHB0LHosZXQpLHkpfSx0dC5wcm90b3R5cGUuR2V0RmFjZUZyb21NZXNoPXR0LnByb3RvdHlwZS5HZXRGYWNlRnJvbU1lc2g9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLCEhVnMoJHQseixldCxwdCl9LHR0LnByb3RvdHlwZS5HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoPXR0LnByb3RvdHlwZS5HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoPWZ1bmN0aW9uKHosZXQpe3ZhciBwdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLFhoKHB0LHosZXQpfSx0dC5wcm90b3R5cGUuR2V0VHJpYW5nbGVzVUludDE2QXJyYXk9dHQucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIXdkKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0VHJpYW5nbGVzVUludDMyQXJyYXk9dHQucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQzMkFycmF5PWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIXJsKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0PWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIUFvKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHM9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIWhvKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHM9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLCEheGQoJHQseixldCxwdCl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIVBkKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHM9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIUJvKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHM9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQpe3ZhciAkdD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwhIXhBKCR0LHosZXQscHQpfSx0dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPXR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHM9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLCEhbGEoJHQseixldCxwdCl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50cz10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oeixldCxwdCl7dmFyICR0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0cikscHQmJnR5cGVvZiBwdD09Im9iamVjdCImJihwdD1wdC5wdHIpLCEhZGEoJHQseixldCxwdCl9LHR0LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9dHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50cz1mdW5jdGlvbih6LGV0LHB0KXt2YXIgJHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxwdCYmdHlwZW9mIHB0PT0ib2JqZWN0IiYmKHB0PXB0LnB0ciksISFKZCgkdCx6LGV0LHB0KX0sdHQucHJvdG90eXBlLkdldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50cz10dC5wcm90b3R5cGUuR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKHosZXQscHQsJHQsdmUpe3ZhciBoaT10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksZXQmJnR5cGVvZiBldD09Im9iamVjdCImJihldD1ldC5wdHIpLHB0JiZ0eXBlb2YgcHQ9PSJvYmplY3QiJiYocHQ9cHQucHRyKSwkdCYmdHlwZW9mICR0PT0ib2JqZWN0IiYmKCR0PSR0LnB0ciksdmUmJnR5cGVvZiB2ZT09Im9iamVjdCImJih2ZT12ZS5wdHIpLCEhamQoaGkseixldCxwdCwkdCx2ZSl9LHR0LnByb3RvdHlwZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtPXR0LnByb3RvdHlwZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjt6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxIZChldCx6KX0sdHQucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD10dC5wcm90b3R5cGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZV9EZXByZWNhdGVkPWZ1bmN0aW9uKHope3ZhciBldD10aGlzLnB0cjtyZXR1cm4geiYmdHlwZW9mIHo9PSJvYmplY3QiJiYoej16LnB0ciksdmQoZXQseil9LHR0LnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQ9dHQucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD1mdW5jdGlvbih6LGV0KXt2YXIgcHQ9dGhpcy5wdHI7cmV0dXJuIHomJnR5cGVvZiB6PT0ib2JqZWN0IiYmKHo9ei5wdHIpLGV0JiZ0eXBlb2YgZXQ9PSJvYmplY3QiJiYoZXQ9ZXQucHRyKSxSKHpkKHB0LHosZXQpLGMpfSx0dC5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9NZXNoPXR0LnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb01lc2g9ZnVuY3Rpb24oeixldCl7dmFyIHB0PXRoaXMucHRyO3JldHVybiB6JiZ0eXBlb2Ygej09Im9iamVjdCImJih6PXoucHRyKSxldCYmdHlwZW9mIGV0PT0ib2JqZWN0IiYmKGV0PWV0LnB0ciksUihxaChwdCx6LGV0KSxjKX0sdHQucHJvdG90eXBlLl9fZGVzdHJveV9fPXR0LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1BBKHRoaXMucHRyKX0sZnVuY3Rpb24oKXtmdW5jdGlvbiB6KCl7Ry5BVFRSSUJVVEVfSU5WQUxJRF9UUkFOU0ZPUk09bWEoKSxHLkFUVFJJQlVURV9OT19UUkFOU0ZPUk09YWwoKSxHLkFUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWZhKCksRy5BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09RWEoKSxHLklOVkFMSUQ9c0EoKSxHLlBPU0lUSU9OPUFsKCksRy5OT1JNQUw9S2QoKSxHLkNPTE9SPUpBKCksRy5URVhfQ09PUkQ9JGgoKSxHLkdFTkVSSUM9WGQoKSxHLklOVkFMSURfR0VPTUVUUllfVFlQRT1obCgpLEcuUE9JTlRfQ0xPVUQ9cWQoKSxHLlRSSUFOR1VMQVJfTUVTSD0kZCgpLEcuRFRfSU5WQUxJRD10bSgpLEcuRFRfSU5UOD1lbSgpLEcuRFRfVUlOVDg9aW0oKSxHLkRUX0lOVDE2PW5tKCksRy5EVF9VSU5UMTY9c20oKSxHLkRUX0lOVDMyPW9tKCksRy5EVF9VSU5UMzI9Y2woKSxHLkRUX0lOVDY0PXJtKCksRy5EVF9VSU5UNjQ9YW0oKSxHLkRUX0ZMT0FUMzI9QW0oKSxHLkRUX0ZMT0FUNjQ9bGwoKSxHLkRUX0JPT0w9aG0oKSxHLkRUX1RZUEVTX0NPVU5UPW9BKCksRy5PSz1jbSgpLEcuRFJBQ09fRVJST1I9akEoKSxHLklPX0VSUk9SPWxtKCksRy5JTlZBTElEX1BBUkFNRVRFUj1kbSgpLEcuVU5TVVBQT1JURURfVkVSU0lPTj1kbCgpLEcuVU5LTk9XTl9WRVJTSU9OPW1tKCl9RGU/eigpOk9pLnVuc2hpZnQoeil9KCksdHlwZW9mIEcub25Nb2R1bGVQYXJzZWQ9PSJmdW5jdGlvbiImJkcub25Nb2R1bGVQYXJzZWQoKSxHLkRlY29kZXIucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGU9ZnVuY3Rpb24oeil7aWYoei5fX2NsYXNzX18mJnouX19jbGFzc19fPT09Ry5EZWNvZGVyQnVmZmVyKXJldHVybiBHLkRlY29kZXIucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZCh6KTtpZig4PnouYnl0ZUxlbmd0aClyZXR1cm4gRy5JTlZBTElEX0dFT01FVFJZX1RZUEU7c3dpdGNoKHpbN10pe2Nhc2UgMDpyZXR1cm4gRy5QT0lOVF9DTE9VRDtjYXNlIDE6cmV0dXJuIEcuVFJJQU5HVUxBUl9NRVNIO2RlZmF1bHQ6cmV0dXJuIEcuSU5WQUxJRF9HRU9NRVRSWV9UWVBFfX0sZS5yZWFkeX19KCk7dHlwZW9mIGtSPT0ib2JqZWN0IiYmdHlwZW9mICRCPT0ib2JqZWN0Ij8kQi5leHBvcnRzPXFCOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHFCfSk6dHlwZW9mIGtSPT0ib2JqZWN0IiYmKGtSLkRyYWNvRGVjb2Rlck1vZHVsZT1xQil9KTt2YXIgaUc9e307SGUoaUcse2RlZmF1bHQ6KCk9PnhfdH0pO2Z1bmN0aW9uIERfdCh0LGUpe2xldCBpPXQubnVtX3BvaW50cygpLG49dC5udW1fZmFjZXMoKSxzPW5ldyBGaS5EcmFjb0ludDMyQXJyYXksbz1uKjMscj10ZS5jcmVhdGVUeXBlZEFycmF5KGksbyksYT0wO2ZvcihsZXQgaD0wO2g8bjsrK2gpZS5HZXRGYWNlRnJvbU1lc2godCxoLHMpLHJbYSswXT1zLkdldFZhbHVlKDApLHJbYSsxXT1zLkdldFZhbHVlKDEpLHJbYSsyXT1zLkdldFZhbHVlKDIpLGErPTM7cmV0dXJuIEZpLmRlc3Ryb3kocykse3R5cGVkQXJyYXk6cixudW1iZXJPZkluZGljZXM6b319ZnVuY3Rpb24gVV90KHQsZSxpLG4scyl7bGV0IG8scjtuLnF1YW50aXphdGlvbkJpdHM8PTg/KHI9bmV3IEZpLkRyYWNvVUludDhBcnJheSxvPW5ldyBVaW50OEFycmF5KHMpLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHModCxpLHIpKTpuLnF1YW50aXphdGlvbkJpdHM8PTE2PyhyPW5ldyBGaS5EcmFjb1VJbnQxNkFycmF5LG89bmV3IFVpbnQxNkFycmF5KHMpLGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzKHQsaSxyKSk6KHI9bmV3IEZpLkRyYWNvRmxvYXQzMkFycmF5LG89bmV3IEZsb2F0MzJBcnJheShzKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKHQsaSxyKSk7Zm9yKGxldCBhPTA7YTxzOysrYSlvW2FdPXIuR2V0VmFsdWUoYSk7cmV0dXJuIEZpLmRlc3Ryb3kociksb31mdW5jdGlvbiBNX3QodCxlLGksbil7bGV0IHMsbztzd2l0Y2goaS5kYXRhX3R5cGUoKSl7Y2FzZSAxOmNhc2UgMTE6bz1uZXcgRmkuRHJhY29JbnQ4QXJyYXkscz1uZXcgSW50OEFycmF5KG4pLGUuR2V0QXR0cmlidXRlSW50OEZvckFsbFBvaW50cyh0LGksbyk7YnJlYWs7Y2FzZSAyOm89bmV3IEZpLkRyYWNvVUludDhBcnJheSxzPW5ldyBVaW50OEFycmF5KG4pLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHModCxpLG8pO2JyZWFrO2Nhc2UgMzpvPW5ldyBGaS5EcmFjb0ludDE2QXJyYXkscz1uZXcgSW50MTZBcnJheShuKSxlLkdldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzKHQsaSxvKTticmVhaztjYXNlIDQ6bz1uZXcgRmkuRHJhY29VSW50MTZBcnJheSxzPW5ldyBVaW50MTZBcnJheShuKSxlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cyh0LGksbyk7YnJlYWs7Y2FzZSA1OmNhc2UgNzpvPW5ldyBGaS5EcmFjb0ludDMyQXJyYXkscz1uZXcgSW50MzJBcnJheShuKSxlLkdldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzKHQsaSxvKTticmVhaztjYXNlIDY6Y2FzZSA4Om89bmV3IEZpLkRyYWNvVUludDMyQXJyYXkscz1uZXcgVWludDMyQXJyYXkobiksZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHModCxpLG8pO2JyZWFrO2Nhc2UgOTpjYXNlIDEwOm89bmV3IEZpLkRyYWNvRmxvYXQzMkFycmF5LHM9bmV3IEZsb2F0MzJBcnJheShuKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKHQsaSxvKTticmVha31mb3IobGV0IHI9MDtyPG47KytyKXNbcl09by5HZXRWYWx1ZShyKTtyZXR1cm4gRmkuZGVzdHJveShvKSxzfWZ1bmN0aW9uIHBLKHQsZSxpKXtsZXQgbj10Lm51bV9wb2ludHMoKSxzPWkubnVtX2NvbXBvbmVudHMoKSxvLHI9bmV3IEZpLkF0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybTtpZihyLkluaXRGcm9tQXR0cmlidXRlKGkpKXtsZXQgZD1uZXcgQXJyYXkocyk7Zm9yKGxldCBmPTA7ZjxzOysrZilkW2ZdPXIubWluX3ZhbHVlKGYpO289e3F1YW50aXphdGlvbkJpdHM6ci5xdWFudGl6YXRpb25fYml0cygpLG1pblZhbHVlczpkLHJhbmdlOnIucmFuZ2UoKSxvY3RFbmNvZGVkOiExfX1GaS5kZXN0cm95KHIpLHI9bmV3IEZpLkF0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm0sci5Jbml0RnJvbUF0dHJpYnV0ZShpKSYmKG89e3F1YW50aXphdGlvbkJpdHM6ci5xdWFudGl6YXRpb25fYml0cygpLG9jdEVuY29kZWQ6ITB9KSxGaS5kZXN0cm95KHIpO2xldCBhPW4qcyxoO20obyk/aD1VX3QodCxlLGksbyxhKTpoPU1fdCh0LGUsaSxhKTtsZXQgQT1BdC5mcm9tVHlwZWRBcnJheShoKTtyZXR1cm57YXJyYXk6aCxkYXRhOntjb21wb25lbnRzUGVyQXR0cmlidXRlOnMsY29tcG9uZW50RGF0YXR5cGU6QSxieXRlT2Zmc2V0OmkuYnl0ZV9vZmZzZXQoKSxieXRlU3RyaWRlOkF0LmdldFNpemVJbkJ5dGVzKEEpKnMsbm9ybWFsaXplZDppLm5vcm1hbGl6ZWQoKSxxdWFudGl6YXRpb246b319fWZ1bmN0aW9uIFFfdCh0KXtsZXQgZT1uZXcgRmkuRGVjb2Rlcjt0LmRlcXVhbnRpemVJblNoYWRlciYmKGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybShGaS5QT1NJVElPTiksZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtKEZpLk5PUk1BTCkpO2xldCBpPW5ldyBGaS5EZWNvZGVyQnVmZmVyO2lmKGkuSW5pdCh0LmJ1ZmZlcix0LmJ1ZmZlci5sZW5ndGgpLGUuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZShpKSE9PUZpLlBPSU5UX0NMT1VEKXRocm93IG5ldyBrZSgiRHJhY28gZ2VvbWV0cnkgdHlwZSBtdXN0IGJlIFBPSU5UX0NMT1VELiIpO2xldCBzPW5ldyBGaS5Qb2ludENsb3VkLG89ZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQoaSxzKTtpZighby5vaygpfHxzLnB0cj09PTApdGhyb3cgbmV3IGtlKGBFcnJvciBkZWNvZGluZyBkcmFjbyBwb2ludCBjbG91ZDogJHtvLmVycm9yX21zZygpfWApO0ZpLmRlc3Ryb3koaSk7bGV0IHI9e30sYT10LnByb3BlcnRpZXM7Zm9yKGxldCBoIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShoKSl7bGV0IEE7aWYoaD09PSJQT1NJVElPTiJ8fGg9PT0iTk9STUFMIil7bGV0IGQ9ZS5HZXRBdHRyaWJ1dGVJZChzLEZpW2hdKTtBPWUuR2V0QXR0cmlidXRlKHMsZCl9ZWxzZXtsZXQgZD1hW2hdO0E9ZS5HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkKHMsZCl9cltoXT1wSyhzLGUsQSl9cmV0dXJuIEZpLmRlc3Ryb3kocyksRmkuZGVzdHJveShlKSxyfWZ1bmN0aW9uIGtfdCh0KXtsZXQgZT1uZXcgRmkuRGVjb2RlcixpPVsiUE9TSVRJT04iLCJOT1JNQUwiLCJDT0xPUiIsIlRFWF9DT09SRCJdO2lmKHQuZGVxdWFudGl6ZUluU2hhZGVyKWZvcihsZXQgZj0wO2Y8aS5sZW5ndGg7KytmKWUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybShGaVtpW2ZdXSk7bGV0IG49dC5idWZmZXJWaWV3LHM9bmV3IEZpLkRlY29kZXJCdWZmZXI7aWYocy5Jbml0KHQuYXJyYXksbi5ieXRlTGVuZ3RoKSxlLkdldEVuY29kZWRHZW9tZXRyeVR5cGUocykhPT1GaS5UUklBTkdVTEFSX01FU0gpdGhyb3cgbmV3IGtlKCJVbnN1cHBvcnRlZCBkcmFjbyBtZXNoIGdlb21ldHJ5IHR5cGUuIik7bGV0IHI9bmV3IEZpLk1lc2gsYT1lLkRlY29kZUJ1ZmZlclRvTWVzaChzLHIpO2lmKCFhLm9rKCl8fHIucHRyPT09MCl0aHJvdyBuZXcga2UoYEVycm9yIGRlY29kaW5nIGRyYWNvIG1lc2ggZ2VvbWV0cnk6ICR7YS5lcnJvcl9tc2coKX1gKTtGaS5kZXN0cm95KHMpO2xldCBoPXt9LEE9dC5jb21wcmVzc2VkQXR0cmlidXRlcztmb3IobGV0IGYgaW4gQSlpZihBLmhhc093blByb3BlcnR5KGYpKXtsZXQgRT1BW2ZdLF89ZS5HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkKHIsRSk7aFtmXT1wSyhyLGUsXyl9bGV0IGQ9e2luZGV4QXJyYXk6RF90KHIsZSksYXR0cmlidXRlRGF0YTpofTtyZXR1cm4gRmkuZGVzdHJveShyKSxGaS5kZXN0cm95KGUpLGR9YXN5bmMgZnVuY3Rpb24gTF90KHQsZSl7cmV0dXJuIG0odC5idWZmZXJWaWV3KT9rX3QodCk6UV90KHQpfWFzeW5jIGZ1bmN0aW9uIHlfdCh0LGUpe2xldCBpPXQud2ViQXNzZW1ibHlDb25maWc7cmV0dXJuIG0oaSkmJm0oaS53YXNtQmluYXJ5RmlsZSk/Rmk9YXdhaXQoMCxlRy5kZWZhdWx0KShpKTpGaT1hd2FpdCgwLGVHLmRlZmF1bHQpKCksITB9YXN5bmMgZnVuY3Rpb24gd190KHQsZSl7bGV0IGk9dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShpKT95X3QodCxlKTpMX3QodCxlKX12YXIgZUcsRmkseF90LG5HPVMoKCk9PntvaSgpO210KCk7RGkoKTtQcygpO05zKCk7ZUc9Y28odEcoKSwxKTt4X3Q9V2kod190KX0pO2Z1bmN0aW9uIHNHKHQsZSl7aWYoc0cucGFzc1Rocm91Z2hEYXRhRm9yVGVzdGluZylyZXR1cm4gZTtwLnR5cGVPZi5vYmplY3QoImtleSIsdCkscC50eXBlT2Yub2JqZWN0KCJkYXRhIixlKTtsZXQgaT10LmJ5dGVMZW5ndGg7aWYoaT09PTB8fGklNCE9PTApdGhyb3cgbmV3IGtlKCJUaGUgbGVuZ3RoIG9mIGtleSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBhIG11bHRpcGxlIG9mIDQuIik7bGV0IG49bmV3IERhdGFWaWV3KGUpLHM9bi5nZXRVaW50MzIoMCwhMCk7aWYocz09PVBfdHx8cz09PUpfdClyZXR1cm4gZTtsZXQgbz1uZXcgRGF0YVZpZXcodCkscj0wLGE9ZS5ieXRlTGVuZ3RoLGg9YS1hJTgsQT1pLGQsZj04O2Zvcig7cjxoOylmb3IoZj0oZis4KSUyNCxkPWY7cjxoJiZkPEE7KW4uc2V0VWludDMyKHIsbi5nZXRVaW50MzIociwhMCleby5nZXRVaW50MzIoZCwhMCksITApLG4uc2V0VWludDMyKHIrNCxuLmdldFVpbnQzMihyKzQsITApXm8uZ2V0VWludDMyKGQrNCwhMCksITApLHIrPTgsZCs9MjQ7aWYocjxhKWZvcihkPj1BJiYoZj0oZis4KSUyNCxkPWYpO3I8YTspbi5zZXRVaW50OChyLG4uZ2V0VWludDgocileby5nZXRVaW50OChkKSkscisrLGQrK312YXIgUF90LEpfdCx1SyxDSz1TKCgpPT57YWUoKTtQcygpO1BfdD0xOTUzMDI5ODA1LEpfdD0yOTE3MDM0MTAwO3NHLnBhc3NUaHJvdWdoRGF0YUZvclRlc3Rpbmc9ITE7dUs9c0d9KTtmdW5jdGlvbiBqX3QodCxlKXtyZXR1cm4odCZlKSE9PTB9dmFyIFhmLGdLPVMoKCk9PntYZj1qX3R9KTtmdW5jdGlvbiBVQSh0LGUsaSxuLHMsbyl7dGhpcy5fYml0cz10LHRoaXMuY25vZGVWZXJzaW9uPWUsdGhpcy5pbWFnZXJ5VmVyc2lvbj1pLHRoaXMudGVycmFpblZlcnNpb249bix0aGlzLmltYWdlcnlQcm92aWRlcj1zLHRoaXMudGVycmFpblByb3ZpZGVyPW8sdGhpcy5hbmNlc3Rvckhhc1RlcnJhaW49ITEsdGhpcy50ZXJyYWluU3RhdGU9dm9pZCAwfXZhciBIX3QsVEssdl90LHpfdCxLX3QsTkssRks9UygoKT0+e210KCk7Z0soKTtIX3Q9WzEsMiw0LDhdLFRLPTE1LHZfdD0xNix6X3Q9NjQsS190PTEyODtVQS5jbG9uZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpPyhlLl9iaXRzPXQuX2JpdHMsZS5jbm9kZVZlcnNpb249dC5jbm9kZVZlcnNpb24sZS5pbWFnZXJ5VmVyc2lvbj10LmltYWdlcnlWZXJzaW9uLGUudGVycmFpblZlcnNpb249dC50ZXJyYWluVmVyc2lvbixlLmltYWdlcnlQcm92aWRlcj10LmltYWdlcnlQcm92aWRlcixlLnRlcnJhaW5Qcm92aWRlcj10LnRlcnJhaW5Qcm92aWRlcik6ZT1uZXcgVUEodC5fYml0cyx0LmNub2RlVmVyc2lvbix0LmltYWdlcnlWZXJzaW9uLHQudGVycmFpblZlcnNpb24sdC5pbWFnZXJ5UHJvdmlkZXIsdC50ZXJyYWluUHJvdmlkZXIpLGUuYW5jZXN0b3JIYXNUZXJyYWluPXQuYW5jZXN0b3JIYXNUZXJyYWluLGUudGVycmFpblN0YXRlPXQudGVycmFpblN0YXRlLGV9O1VBLnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCl7dGhpcy5hbmNlc3Rvckhhc1RlcnJhaW49dC5hbmNlc3Rvckhhc1RlcnJhaW58fHRoaXMuaGFzVGVycmFpbigpfTtVQS5wcm90b3R5cGUuaGFzU3VidHJlZT1mdW5jdGlvbigpe3JldHVybiBYZih0aGlzLl9iaXRzLHZfdCl9O1VBLnByb3RvdHlwZS5oYXNJbWFnZXJ5PWZ1bmN0aW9uKCl7cmV0dXJuIFhmKHRoaXMuX2JpdHMsel90KX07VUEucHJvdG90eXBlLmhhc1RlcnJhaW49ZnVuY3Rpb24oKXtyZXR1cm4gWGYodGhpcy5fYml0cyxLX3QpfTtVQS5wcm90b3R5cGUuaGFzQ2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4gWGYodGhpcy5fYml0cyxUSyl9O1VBLnByb3RvdHlwZS5oYXNDaGlsZD1mdW5jdGlvbih0KXtyZXR1cm4gWGYodGhpcy5fYml0cyxIX3RbdF0pfTtVQS5wcm90b3R5cGUuZ2V0Q2hpbGRCaXRtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JpdHMmVEt9O05LPVVBfSk7dmFyIFlLPXRzKChRU2UsYkspPT57InVzZSBzdHJpY3QiO3ZhciBYX3Q9KHQsZSxpLG4pPT57bGV0IHM9dCY2NTUzNXwwLG89dD4+PjE2JjY1NTM1fDAscj0wO2Zvcig7aSE9PTA7KXtyPWk+MmUzPzJlMzppLGktPXI7ZG8gcz1zK2VbbisrXXwwLG89bytzfDA7d2hpbGUoLS1yKTtzJT02NTUyMSxvJT02NTUyMX1yZXR1cm4gc3xvPDwxNnwwfTtiSy5leHBvcnRzPVhfdH0pO3ZhciBTSz10cygoa1NlLFZLKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcV90PSgpPT57bGV0IHQsZT1bXTtmb3IodmFyIGk9MDtpPDI1NjtpKyspe3Q9aTtmb3IodmFyIG49MDtuPDg7bisrKXQ9dCYxPzM5ODgyOTIzODRedD4+PjE6dD4+PjE7ZVtpXT10fXJldHVybiBlfSwkX3Q9bmV3IFVpbnQzMkFycmF5KHFfdCgpKSx0UnQ9KHQsZSxpLG4pPT57bGV0IHM9JF90LG89bitpO3RePS0xO2ZvcihsZXQgcj1uO3I8bztyKyspdD10Pj4+OF5zWyh0XmVbcl0pJjI1NV07cmV0dXJuIHReLTF9O1ZLLmV4cG9ydHM9dFJ0fSk7dmFyIEJLPXRzKChMU2UsT0spPT57InVzZSBzdHJpY3QiO09LLmV4cG9ydHM9ZnVuY3Rpb24oZSxpKXtsZXQgbixzLG8scixhLGgsQSxkLGYsRSxfLFIsSSxDLE4sVCxiLEYsQixVLFEsTSxrLHksYz1lLnN0YXRlO249ZS5uZXh0X2luLGs9ZS5pbnB1dCxzPW4rKGUuYXZhaWxfaW4tNSksbz1lLm5leHRfb3V0LHk9ZS5vdXRwdXQscj1vLShpLWUuYXZhaWxfb3V0KSxhPW8rKGUuYXZhaWxfb3V0LTI1NyksaD1jLmRtYXgsQT1jLndzaXplLGQ9Yy53aGF2ZSxmPWMud25leHQsRT1jLndpbmRvdyxfPWMuaG9sZCxSPWMuYml0cyxJPWMubGVuY29kZSxDPWMuZGlzdGNvZGUsTj0oMTw8Yy5sZW5iaXRzKS0xLFQ9KDE8PGMuZGlzdGJpdHMpLTE7dDpkb3tSPDE1JiYoXys9a1tuKytdPDxSLFIrPTgsXys9a1tuKytdPDxSLFIrPTgpLGI9SVtfJk5dO2U6Zm9yKDs7KXtpZihGPWI+Pj4yNCxfPj4+PUYsUi09RixGPWI+Pj4xNiYyNTUsRj09PTApeVtvKytdPWImNjU1MzU7ZWxzZSBpZihGJjE2KXtCPWImNjU1MzUsRiY9MTUsRiYmKFI8RiYmKF8rPWtbbisrXTw8UixSKz04KSxCKz1fJigxPDxGKS0xLF8+Pj49RixSLT1GKSxSPDE1JiYoXys9a1tuKytdPDxSLFIrPTgsXys9a1tuKytdPDxSLFIrPTgpLGI9Q1tfJlRdO2k6Zm9yKDs7KXtpZihGPWI+Pj4yNCxfPj4+PUYsUi09RixGPWI+Pj4xNiYyNTUsRiYxNil7aWYoVT1iJjY1NTM1LEYmPTE1LFI8RiYmKF8rPWtbbisrXTw8UixSKz04LFI8RiYmKF8rPWtbbisrXTw8UixSKz04KSksVSs9XyYoMTw8RiktMSxVPmgpe2UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsYy5tb2RlPTE2MjA5O2JyZWFrIHR9aWYoXz4+Pj1GLFItPUYsRj1vLXIsVT5GKXtpZihGPVUtRixGPmQmJmMuc2FuZSl7ZS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixjLm1vZGU9MTYyMDk7YnJlYWsgdH1pZihRPTAsTT1FLGY9PT0wKXtpZihRKz1BLUYsRjxCKXtCLT1GO2RvIHlbbysrXT1FW1ErK107d2hpbGUoLS1GKTtRPW8tVSxNPXl9fWVsc2UgaWYoZjxGKXtpZihRKz1BK2YtRixGLT1mLEY8Qil7Qi09RjtkbyB5W28rK109RVtRKytdO3doaWxlKC0tRik7aWYoUT0wLGY8Qil7Rj1mLEItPUY7ZG8geVtvKytdPUVbUSsrXTt3aGlsZSgtLUYpO1E9by1VLE09eX19fWVsc2UgaWYoUSs9Zi1GLEY8Qil7Qi09RjtkbyB5W28rK109RVtRKytdO3doaWxlKC0tRik7UT1vLVUsTT15fWZvcig7Qj4yOyl5W28rK109TVtRKytdLHlbbysrXT1NW1ErK10seVtvKytdPU1bUSsrXSxCLT0zO0ImJih5W28rK109TVtRKytdLEI+MSYmKHlbbysrXT1NW1ErK10pKX1lbHNle1E9by1VO2RvIHlbbysrXT15W1ErK10seVtvKytdPXlbUSsrXSx5W28rK109eVtRKytdLEItPTM7d2hpbGUoQj4yKTtCJiYoeVtvKytdPXlbUSsrXSxCPjEmJih5W28rK109eVtRKytdKSl9fWVsc2UgaWYoRiY2NCl7ZS5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsYy5tb2RlPTE2MjA5O2JyZWFrIHR9ZWxzZXtiPUNbKGImNjU1MzUpKyhfJigxPDxGKS0xKV07Y29udGludWUgaX1icmVha319ZWxzZSBpZihGJjY0KWlmKEYmMzIpe2MubW9kZT0xNjE5MTticmVhayB0fWVsc2V7ZS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsYy5tb2RlPTE2MjA5O2JyZWFrIHR9ZWxzZXtiPUlbKGImNjU1MzUpKyhfJigxPDxGKS0xKV07Y29udGludWUgZX1icmVha319d2hpbGUobjxzJiZvPGEpO0I9Uj4+MyxuLT1CLFItPUI8PDMsXyY9KDE8PFIpLTEsZS5uZXh0X2luPW4sZS5uZXh0X291dD1vLGUuYXZhaWxfaW49bjxzPzUrKHMtbik6NS0obi1zKSxlLmF2YWlsX291dD1vPGE/MjU3KyhhLW8pOjI1Ny0oby1hKSxjLmhvbGQ9XyxjLmJpdHM9Un19KTt2YXIgV0s9dHMoKHlTZSxHSyk9PnsidXNlIHN0cmljdCI7dmFyIGVSdD1uZXcgVWludDE2QXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSksaVJ0PW5ldyBVaW50OEFycmF5KFsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNywxNywxNywxNywxOCwxOCwxOCwxOCwxOSwxOSwxOSwxOSwyMCwyMCwyMCwyMCwyMSwyMSwyMSwyMSwxNiw3Miw3OF0pLG5SdD1uZXcgVWludDE2QXJyYXkoWzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3NywwLDBdKSxzUnQ9bmV3IFVpbnQ4QXJyYXkoWzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XSksb1J0PSh0LGUsaSxuLHMsbyxyLGEpPT57bGV0IGg9YS5iaXRzLEE9MCxkPTAsZj0wLEU9MCxfPTAsUj0wLEk9MCxDPTAsTj0wLFQ9MCxiLEYsQixVLFEsTT1udWxsLGsseT1uZXcgVWludDE2QXJyYXkoMTYpLGM9bmV3IFVpbnQxNkFycmF5KDE2KSxnPW51bGwsTyxELHc7Zm9yKEE9MDtBPD0xNTtBKyspeVtBXT0wO2ZvcihkPTA7ZDxuO2QrKyl5W2VbaStkXV0rKztmb3IoXz1oLEU9MTU7RT49MSYmeVtFXT09PTA7RS0tKTtpZihfPkUmJihfPUUpLEU9PT0wKXJldHVybiBzW28rK109MTw8MjR8NjQ8PDE2fDAsc1tvKytdPTE8PDI0fDY0PDwxNnwwLGEuYml0cz0xLDA7Zm9yKGY9MTtmPEUmJnlbZl09PT0wO2YrKyk7Zm9yKF88ZiYmKF89ZiksQz0xLEE9MTtBPD0xNTtBKyspaWYoQzw8PTEsQy09eVtBXSxDPDApcmV0dXJuLTE7aWYoQz4wJiYodD09PTB8fEUhPT0xKSlyZXR1cm4tMTtmb3IoY1sxXT0wLEE9MTtBPDE1O0ErKyljW0ErMV09Y1tBXSt5W0FdO2ZvcihkPTA7ZDxuO2QrKyllW2krZF0hPT0wJiYocltjW2VbaStkXV0rK109ZCk7aWYodD09PTA/KE09Zz1yLGs9MjApOnQ9PT0xPyhNPWVSdCxnPWlSdCxrPTI1Nyk6KE09blJ0LGc9c1J0LGs9MCksVD0wLGQ9MCxBPWYsUT1vLFI9XyxJPTAsQj0tMSxOPTE8PF8sVT1OLTEsdD09PTEmJk4+ODUyfHx0PT09MiYmTj41OTIpcmV0dXJuIDE7Zm9yKDs7KXtPPUEtSSxyW2RdKzE8az8oRD0wLHc9cltkXSk6cltkXT49az8oRD1nW3JbZF0ta10sdz1NW3JbZF0ta10pOihEPTk2LHc9MCksYj0xPDxBLUksRj0xPDxSLGY9RjtkbyBGLT1iLHNbUSsoVD4+SSkrRl09Tzw8MjR8RDw8MTZ8d3wwO3doaWxlKEYhPT0wKTtmb3IoYj0xPDxBLTE7VCZiOyliPj49MTtpZihiIT09MD8oVCY9Yi0xLFQrPWIpOlQ9MCxkKyssLS15W0FdPT09MCl7aWYoQT09PUUpYnJlYWs7QT1lW2krcltkXV19aWYoQT5fJiYoVCZVKSE9PUIpe2ZvcihJPT09MCYmKEk9XyksUSs9ZixSPUEtSSxDPTE8PFI7UitJPEUmJihDLT15W1IrSV0sIShDPD0wKSk7KVIrKyxDPDw9MTtpZihOKz0xPDxSLHQ9PT0xJiZOPjg1Mnx8dD09PTImJk4+NTkyKXJldHVybiAxO0I9VCZVLHNbQl09Xzw8MjR8Ujw8MTZ8US1vfDB9fXJldHVybiBUIT09MCYmKHNbUStUXT1BLUk8PDI0fDY0PDwxNnwwKSxhLmJpdHM9XywwfTtHSy5leHBvcnRzPW9SdH0pO3ZhciBXZz10cygod1NlLERLKT0+eyJ1c2Ugc3RyaWN0IjtESy5leHBvcnRzPXtaX05PX0ZMVVNIOjAsWl9QQVJUSUFMX0ZMVVNIOjEsWl9TWU5DX0ZMVVNIOjIsWl9GVUxMX0ZMVVNIOjMsWl9GSU5JU0g6NCxaX0JMT0NLOjUsWl9UUkVFUzo2LFpfT0s6MCxaX1NUUkVBTV9FTkQ6MSxaX05FRURfRElDVDoyLFpfRVJSTk86LTEsWl9TVFJFQU1fRVJST1I6LTIsWl9EQVRBX0VSUk9SOi0zLFpfTUVNX0VSUk9SOi00LFpfQlVGX0VSUk9SOi01LFpfTk9fQ09NUFJFU1NJT046MCxaX0JFU1RfU1BFRUQ6MSxaX0JFU1RfQ09NUFJFU1NJT046OSxaX0RFRkFVTFRfQ09NUFJFU1NJT046LTEsWl9GSUxURVJFRDoxLFpfSFVGRk1BTl9PTkxZOjIsWl9STEU6MyxaX0ZJWEVEOjQsWl9ERUZBVUxUX1NUUkFURUdZOjAsWl9CSU5BUlk6MCxaX1RFWFQ6MSxaX1VOS05PV046MixaX0RFRkxBVEVEOjh9fSk7dmFyIF84PXRzKCh4U2UsdmEpPT57InVzZSBzdHJpY3QiO3ZhciBjRz1ZSygpLE1BPVNLKCksclJ0PUJLKCksTFI9V0soKSxhUnQ9MCxhOD0xLEE4PTIse1pfRklOSVNIOlVLLFpfQkxPQ0s6QVJ0LFpfVFJFRVM6RGcsWl9PSzpOZCxaX1NUUkVBTV9FTkQ6aFJ0LFpfTkVFRF9ESUNUOmNSdCxaX1NUUkVBTV9FUlJPUjpyYSxaX0RBVEFfRVJST1I6aDgsWl9NRU1fRVJST1I6bEcsWl9CVUZfRVJST1I6bFJ0LFpfREVGTEFURUQ6TUt9PVdnKCksa2c9MTYxODAsUUs9MTYxODEsa0s9MTYxODIsTEs9MTYxODMseUs9MTYxODQsd0s9MTYxODUseEs9MTYxODYsUEs9MTYxODcsSks9MTYxODgsaks9MTYxODksUWc9MTYxOTAsR2g9MTYxOTEsb0c9MTYxOTIsSEs9MTYxOTMsckc9MTYxOTQsdks9MTYxOTUseks9MTYxOTYsS0s9MTYxOTcsWEs9MTYxOTgsVWc9MTYxOTksTWc9MTYyMDAscUs9MTYyMDEsJEs9MTYyMDIsdDg9MTYyMDMsZTg9MTYyMDQsaTg9MTYyMDUsYUc9MTYyMDYsbjg9MTYyMDcsczg9MTYyMDgsJG49MTYyMDksZEc9MTYyMTAsYzg9MTYyMTEsZFJ0PTg1MixtUnQ9NTkyLGZSdD0xNSxFUnQ9ZlJ0LG84PXQ9Pih0Pj4+MjQmMjU1KSsodD4+PjgmNjUyODApKygodCY2NTI4MCk8PDgpKygodCYyNTUpPDwyNCk7ZnVuY3Rpb24gX1J0KCl7dGhpcy5zdHJtPW51bGwsdGhpcy5tb2RlPTAsdGhpcy5sYXN0PSExLHRoaXMud3JhcD0wLHRoaXMuaGF2ZWRpY3Q9ITEsdGhpcy5mbGFncz0wLHRoaXMuZG1heD0wLHRoaXMuY2hlY2s9MCx0aGlzLnRvdGFsPTAsdGhpcy5oZWFkPW51bGwsdGhpcy53Yml0cz0wLHRoaXMud3NpemU9MCx0aGlzLndoYXZlPTAsdGhpcy53bmV4dD0wLHRoaXMud2luZG93PW51bGwsdGhpcy5ob2xkPTAsdGhpcy5iaXRzPTAsdGhpcy5sZW5ndGg9MCx0aGlzLm9mZnNldD0wLHRoaXMuZXh0cmE9MCx0aGlzLmxlbmNvZGU9bnVsbCx0aGlzLmRpc3Rjb2RlPW51bGwsdGhpcy5sZW5iaXRzPTAsdGhpcy5kaXN0Yml0cz0wLHRoaXMubmNvZGU9MCx0aGlzLm5sZW49MCx0aGlzLm5kaXN0PTAsdGhpcy5oYXZlPTAsdGhpcy5uZXh0PW51bGwsdGhpcy5sZW5zPW5ldyBVaW50MTZBcnJheSgzMjApLHRoaXMud29yaz1uZXcgVWludDE2QXJyYXkoMjg4KSx0aGlzLmxlbmR5bj1udWxsLHRoaXMuZGlzdGR5bj1udWxsLHRoaXMuc2FuZT0wLHRoaXMuYmFjaz0wLHRoaXMud2FzPTB9dmFyIEZkPXQ9PntpZighdClyZXR1cm4gMTtsZXQgZT10LnN0YXRlO3JldHVybiFlfHxlLnN0cm0hPT10fHxlLm1vZGU8a2d8fGUubW9kZT5jOD8xOjB9LGw4PXQ9PntpZihGZCh0KSlyZXR1cm4gcmE7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gdC50b3RhbF9pbj10LnRvdGFsX291dD1lLnRvdGFsPTAsdC5tc2c9IiIsZS53cmFwJiYodC5hZGxlcj1lLndyYXAmMSksZS5tb2RlPWtnLGUubGFzdD0wLGUuaGF2ZWRpY3Q9MCxlLmZsYWdzPS0xLGUuZG1heD0zMjc2OCxlLmhlYWQ9bnVsbCxlLmhvbGQ9MCxlLmJpdHM9MCxlLmxlbmNvZGU9ZS5sZW5keW49bmV3IEludDMyQXJyYXkoZFJ0KSxlLmRpc3Rjb2RlPWUuZGlzdGR5bj1uZXcgSW50MzJBcnJheShtUnQpLGUuc2FuZT0xLGUuYmFjaz0tMSxOZH0sZDg9dD0+e2lmKEZkKHQpKXJldHVybiByYTtsZXQgZT10LnN0YXRlO3JldHVybiBlLndzaXplPTAsZS53aGF2ZT0wLGUud25leHQ9MCxsOCh0KX0sbTg9KHQsZSk9PntsZXQgaTtpZihGZCh0KSlyZXR1cm4gcmE7bGV0IG49dC5zdGF0ZTtyZXR1cm4gZTwwPyhpPTAsZT0tZSk6KGk9KGU+PjQpKzUsZTw0OCYmKGUmPTE1KSksZSYmKGU8OHx8ZT4xNSk/cmE6KG4ud2luZG93IT09bnVsbCYmbi53Yml0cyE9PWUmJihuLndpbmRvdz1udWxsKSxuLndyYXA9aSxuLndiaXRzPWUsZDgodCkpfSxmOD0odCxlKT0+e2lmKCF0KXJldHVybiByYTtsZXQgaT1uZXcgX1J0O3Quc3RhdGU9aSxpLnN0cm09dCxpLndpbmRvdz1udWxsLGkubW9kZT1rZztsZXQgbj1tOCh0LGUpO3JldHVybiBuIT09TmQmJih0LnN0YXRlPW51bGwpLG59LFJSdD10PT5mOCh0LEVSdCkscjg9ITAsQUcsaEcsWlJ0PXQ9PntpZihyOCl7QUc9bmV3IEludDMyQXJyYXkoNTEyKSxoRz1uZXcgSW50MzJBcnJheSgzMik7bGV0IGU9MDtmb3IoO2U8MTQ0Oyl0LmxlbnNbZSsrXT04O2Zvcig7ZTwyNTY7KXQubGVuc1tlKytdPTk7Zm9yKDtlPDI4MDspdC5sZW5zW2UrK109Nztmb3IoO2U8Mjg4Oyl0LmxlbnNbZSsrXT04O2ZvcihMUihhOCx0LmxlbnMsMCwyODgsQUcsMCx0Lndvcmsse2JpdHM6OX0pLGU9MDtlPDMyOyl0LmxlbnNbZSsrXT01O0xSKEE4LHQubGVucywwLDMyLGhHLDAsdC53b3JrLHtiaXRzOjV9KSxyOD0hMX10LmxlbmNvZGU9QUcsdC5sZW5iaXRzPTksdC5kaXN0Y29kZT1oRyx0LmRpc3RiaXRzPTV9LEU4PSh0LGUsaSxuKT0+e2xldCBzLG89dC5zdGF0ZTtyZXR1cm4gby53aW5kb3c9PT1udWxsJiYoby53c2l6ZT0xPDxvLndiaXRzLG8ud25leHQ9MCxvLndoYXZlPTAsby53aW5kb3c9bmV3IFVpbnQ4QXJyYXkoby53c2l6ZSkpLG4+PW8ud3NpemU/KG8ud2luZG93LnNldChlLnN1YmFycmF5KGktby53c2l6ZSxpKSwwKSxvLnduZXh0PTAsby53aGF2ZT1vLndzaXplKToocz1vLndzaXplLW8ud25leHQscz5uJiYocz1uKSxvLndpbmRvdy5zZXQoZS5zdWJhcnJheShpLW4saS1uK3MpLG8ud25leHQpLG4tPXMsbj8oby53aW5kb3cuc2V0KGUuc3ViYXJyYXkoaS1uLGkpLDApLG8ud25leHQ9bixvLndoYXZlPW8ud3NpemUpOihvLnduZXh0Kz1zLG8ud25leHQ9PT1vLndzaXplJiYoby53bmV4dD0wKSxvLndoYXZlPG8ud3NpemUmJihvLndoYXZlKz1zKSkpLDB9LElSdD0odCxlKT0+e2xldCBpLG4scyxvLHIsYSxoLEEsZCxmLEUsXyxSLEksQz0wLE4sVCxiLEYsQixVLFEsTSxrPW5ldyBVaW50OEFycmF5KDQpLHksYyxnPW5ldyBVaW50OEFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSk7aWYoRmQodCl8fCF0Lm91dHB1dHx8IXQuaW5wdXQmJnQuYXZhaWxfaW4hPT0wKXJldHVybiByYTtpPXQuc3RhdGUsaS5tb2RlPT09R2gmJihpLm1vZGU9b0cpLHI9dC5uZXh0X291dCxzPXQub3V0cHV0LGg9dC5hdmFpbF9vdXQsbz10Lm5leHRfaW4sbj10LmlucHV0LGE9dC5hdmFpbF9pbixBPWkuaG9sZCxkPWkuYml0cyxmPWEsRT1oLE09TmQ7dDpmb3IoOzspc3dpdGNoKGkubW9kZSl7Y2FzZSBrZzppZihpLndyYXA9PT0wKXtpLm1vZGU9b0c7YnJlYWt9Zm9yKDtkPDE2Oyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoaS53cmFwJjImJkE9PT0zNTYxNSl7aS53Yml0cz09PTAmJihpLndiaXRzPTE1KSxpLmNoZWNrPTAsa1swXT1BJjI1NSxrWzFdPUE+Pj44JjI1NSxpLmNoZWNrPU1BKGkuY2hlY2ssaywyLDApLEE9MCxkPTAsaS5tb2RlPVFLO2JyZWFrfWlmKGkuaGVhZCYmKGkuaGVhZC5kb25lPSExKSwhKGkud3JhcCYxKXx8KCgoQSYyNTUpPDw4KSsoQT4+OCkpJTMxKXt0Lm1zZz0iaW5jb3JyZWN0IGhlYWRlciBjaGVjayIsaS5tb2RlPSRuO2JyZWFrfWlmKChBJjE1KSE9PU1LKXt0Lm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiLGkubW9kZT0kbjticmVha31pZihBPj4+PTQsZC09NCxRPShBJjE1KSs4LGkud2JpdHM9PT0wJiYoaS53Yml0cz1RKSxRPjE1fHxRPmkud2JpdHMpe3QubXNnPSJpbnZhbGlkIHdpbmRvdyBzaXplIixpLm1vZGU9JG47YnJlYWt9aS5kbWF4PTE8PGkud2JpdHMsaS5mbGFncz0wLHQuYWRsZXI9aS5jaGVjaz0xLGkubW9kZT1BJjUxMj9qSzpHaCxBPTAsZD0wO2JyZWFrO2Nhc2UgUUs6Zm9yKDtkPDE2Oyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoaS5mbGFncz1BLChpLmZsYWdzJjI1NSkhPT1NSyl7dC5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixpLm1vZGU9JG47YnJlYWt9aWYoaS5mbGFncyY1NzM0NCl7dC5tc2c9InVua25vd24gaGVhZGVyIGZsYWdzIHNldCIsaS5tb2RlPSRuO2JyZWFrfWkuaGVhZCYmKGkuaGVhZC50ZXh0PUE+PjgmMSksaS5mbGFncyY1MTImJmkud3JhcCY0JiYoa1swXT1BJjI1NSxrWzFdPUE+Pj44JjI1NSxpLmNoZWNrPU1BKGkuY2hlY2ssaywyLDApKSxBPTAsZD0wLGkubW9kZT1rSztjYXNlIGtLOmZvcig7ZDwzMjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWkuaGVhZCYmKGkuaGVhZC50aW1lPUEpLGkuZmxhZ3MmNTEyJiZpLndyYXAmNCYmKGtbMF09QSYyNTUsa1sxXT1BPj4+OCYyNTUsa1syXT1BPj4+MTYmMjU1LGtbM109QT4+PjI0JjI1NSxpLmNoZWNrPU1BKGkuY2hlY2ssayw0LDApKSxBPTAsZD0wLGkubW9kZT1MSztjYXNlIExLOmZvcig7ZDwxNjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWkuaGVhZCYmKGkuaGVhZC54ZmxhZ3M9QSYyNTUsaS5oZWFkLm9zPUE+PjgpLGkuZmxhZ3MmNTEyJiZpLndyYXAmNCYmKGtbMF09QSYyNTUsa1sxXT1BPj4+OCYyNTUsaS5jaGVjaz1NQShpLmNoZWNrLGssMiwwKSksQT0wLGQ9MCxpLm1vZGU9eUs7Y2FzZSB5SzppZihpLmZsYWdzJjEwMjQpe2Zvcig7ZDwxNjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWkubGVuZ3RoPUEsaS5oZWFkJiYoaS5oZWFkLmV4dHJhX2xlbj1BKSxpLmZsYWdzJjUxMiYmaS53cmFwJjQmJihrWzBdPUEmMjU1LGtbMV09QT4+PjgmMjU1LGkuY2hlY2s9TUEoaS5jaGVjayxrLDIsMCkpLEE9MCxkPTB9ZWxzZSBpLmhlYWQmJihpLmhlYWQuZXh0cmE9bnVsbCk7aS5tb2RlPXdLO2Nhc2Ugd0s6aWYoaS5mbGFncyYxMDI0JiYoXz1pLmxlbmd0aCxfPmEmJihfPWEpLF8mJihpLmhlYWQmJihRPWkuaGVhZC5leHRyYV9sZW4taS5sZW5ndGgsaS5oZWFkLmV4dHJhfHwoaS5oZWFkLmV4dHJhPW5ldyBVaW50OEFycmF5KGkuaGVhZC5leHRyYV9sZW4pKSxpLmhlYWQuZXh0cmEuc2V0KG4uc3ViYXJyYXkobyxvK18pLFEpKSxpLmZsYWdzJjUxMiYmaS53cmFwJjQmJihpLmNoZWNrPU1BKGkuY2hlY2ssbixfLG8pKSxhLT1fLG8rPV8saS5sZW5ndGgtPV8pLGkubGVuZ3RoKSlicmVhayB0O2kubGVuZ3RoPTAsaS5tb2RlPXhLO2Nhc2UgeEs6aWYoaS5mbGFncyYyMDQ4KXtpZihhPT09MClicmVhayB0O189MDtkbyBRPW5bbytfKytdLGkuaGVhZCYmUSYmaS5sZW5ndGg8NjU1MzYmJihpLmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZShRKSk7d2hpbGUoUSYmXzxhKTtpZihpLmZsYWdzJjUxMiYmaS53cmFwJjQmJihpLmNoZWNrPU1BKGkuY2hlY2ssbixfLG8pKSxhLT1fLG8rPV8sUSlicmVhayB0fWVsc2UgaS5oZWFkJiYoaS5oZWFkLm5hbWU9bnVsbCk7aS5sZW5ndGg9MCxpLm1vZGU9UEs7Y2FzZSBQSzppZihpLmZsYWdzJjQwOTYpe2lmKGE9PT0wKWJyZWFrIHQ7Xz0wO2RvIFE9bltvK18rK10saS5oZWFkJiZRJiZpLmxlbmd0aDw2NTUzNiYmKGkuaGVhZC5jb21tZW50Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKFEpKTt3aGlsZShRJiZfPGEpO2lmKGkuZmxhZ3MmNTEyJiZpLndyYXAmNCYmKGkuY2hlY2s9TUEoaS5jaGVjayxuLF8sbykpLGEtPV8sbys9XyxRKWJyZWFrIHR9ZWxzZSBpLmhlYWQmJihpLmhlYWQuY29tbWVudD1udWxsKTtpLm1vZGU9Sks7Y2FzZSBKSzppZihpLmZsYWdzJjUxMil7Zm9yKDtkPDE2Oyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoaS53cmFwJjQmJkEhPT0oaS5jaGVjayY2NTUzNSkpe3QubXNnPSJoZWFkZXIgY3JjIG1pc21hdGNoIixpLm1vZGU9JG47YnJlYWt9QT0wLGQ9MH1pLmhlYWQmJihpLmhlYWQuaGNyYz1pLmZsYWdzPj45JjEsaS5oZWFkLmRvbmU9ITApLHQuYWRsZXI9aS5jaGVjaz0wLGkubW9kZT1HaDticmVhaztjYXNlIGpLOmZvcig7ZDwzMjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fXQuYWRsZXI9aS5jaGVjaz1vOChBKSxBPTAsZD0wLGkubW9kZT1RZztjYXNlIFFnOmlmKGkuaGF2ZWRpY3Q9PT0wKXJldHVybiB0Lm5leHRfb3V0PXIsdC5hdmFpbF9vdXQ9aCx0Lm5leHRfaW49byx0LmF2YWlsX2luPWEsaS5ob2xkPUEsaS5iaXRzPWQsY1J0O3QuYWRsZXI9aS5jaGVjaz0xLGkubW9kZT1HaDtjYXNlIEdoOmlmKGU9PT1BUnR8fGU9PT1EZylicmVhayB0O2Nhc2Ugb0c6aWYoaS5sYXN0KXtBPj4+PWQmNyxkLT1kJjcsaS5tb2RlPWFHO2JyZWFrfWZvcig7ZDwzOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9c3dpdGNoKGkubGFzdD1BJjEsQT4+Pj0xLGQtPTEsQSYzKXtjYXNlIDA6aS5tb2RlPUhLO2JyZWFrO2Nhc2UgMTppZihaUnQoaSksaS5tb2RlPVVnLGU9PT1EZyl7QT4+Pj0yLGQtPTI7YnJlYWsgdH1icmVhaztjYXNlIDI6aS5tb2RlPXpLO2JyZWFrO2Nhc2UgMzp0Lm1zZz0iaW52YWxpZCBibG9jayB0eXBlIixpLm1vZGU9JG59QT4+Pj0yLGQtPTI7YnJlYWs7Y2FzZSBISzpmb3IoQT4+Pj1kJjcsZC09ZCY3O2Q8MzI7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pZigoQSY2NTUzNSkhPT0oQT4+PjE2XjY1NTM1KSl7dC5tc2c9ImludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMiLGkubW9kZT0kbjticmVha31pZihpLmxlbmd0aD1BJjY1NTM1LEE9MCxkPTAsaS5tb2RlPXJHLGU9PT1EZylicmVhayB0O2Nhc2Ugckc6aS5tb2RlPXZLO2Nhc2Ugdks6aWYoXz1pLmxlbmd0aCxfKXtpZihfPmEmJihfPWEpLF8+aCYmKF89aCksXz09PTApYnJlYWsgdDtzLnNldChuLnN1YmFycmF5KG8sbytfKSxyKSxhLT1fLG8rPV8saC09XyxyKz1fLGkubGVuZ3RoLT1fO2JyZWFrfWkubW9kZT1HaDticmVhaztjYXNlIHpLOmZvcig7ZDwxNDspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKGkubmxlbj0oQSYzMSkrMjU3LEE+Pj49NSxkLT01LGkubmRpc3Q9KEEmMzEpKzEsQT4+Pj01LGQtPTUsaS5uY29kZT0oQSYxNSkrNCxBPj4+PTQsZC09NCxpLm5sZW4+Mjg2fHxpLm5kaXN0PjMwKXt0Lm1zZz0idG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMiLGkubW9kZT0kbjticmVha31pLmhhdmU9MCxpLm1vZGU9S0s7Y2FzZSBLSzpmb3IoO2kuaGF2ZTxpLm5jb2RlOyl7Zm9yKDtkPDM7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pLmxlbnNbZ1tpLmhhdmUrK11dPUEmNyxBPj4+PTMsZC09M31mb3IoO2kuaGF2ZTwxOTspaS5sZW5zW2dbaS5oYXZlKytdXT0wO2lmKGkubGVuY29kZT1pLmxlbmR5bixpLmxlbmJpdHM9Nyx5PXtiaXRzOmkubGVuYml0c30sTT1MUihhUnQsaS5sZW5zLDAsMTksaS5sZW5jb2RlLDAsaS53b3JrLHkpLGkubGVuYml0cz15LmJpdHMsTSl7dC5tc2c9ImludmFsaWQgY29kZSBsZW5ndGhzIHNldCIsaS5tb2RlPSRuO2JyZWFrfWkuaGF2ZT0wLGkubW9kZT1YSztjYXNlIFhLOmZvcig7aS5oYXZlPGkubmxlbitpLm5kaXN0Oyl7Zm9yKDtDPWkubGVuY29kZVtBJigxPDxpLmxlbmJpdHMpLTFdLE49Qz4+PjI0LFQ9Qz4+PjE2JjI1NSxiPUMmNjU1MzUsIShOPD1kKTspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKGI8MTYpQT4+Pj1OLGQtPU4saS5sZW5zW2kuaGF2ZSsrXT1iO2Vsc2V7aWYoYj09PTE2KXtmb3IoYz1OKzI7ZDxjOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoQT4+Pj1OLGQtPU4saS5oYXZlPT09MCl7dC5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLGkubW9kZT0kbjticmVha31RPWkubGVuc1tpLmhhdmUtMV0sXz0zKyhBJjMpLEE+Pj49MixkLT0yfWVsc2UgaWYoYj09PTE3KXtmb3IoYz1OKzM7ZDxjOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9QT4+Pj1OLGQtPU4sUT0wLF89MysoQSY3KSxBPj4+PTMsZC09M31lbHNle2ZvcihjPU4rNztkPGM7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1BPj4+PU4sZC09TixRPTAsXz0xMSsoQSYxMjcpLEE+Pj49NyxkLT03fWlmKGkuaGF2ZStfPmkubmxlbitpLm5kaXN0KXt0Lm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsaS5tb2RlPSRuO2JyZWFrfWZvcig7Xy0tOylpLmxlbnNbaS5oYXZlKytdPVF9fWlmKGkubW9kZT09PSRuKWJyZWFrO2lmKGkubGVuc1syNTZdPT09MCl7dC5tc2c9ImludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayIsaS5tb2RlPSRuO2JyZWFrfWlmKGkubGVuYml0cz05LHk9e2JpdHM6aS5sZW5iaXRzfSxNPUxSKGE4LGkubGVucywwLGkubmxlbixpLmxlbmNvZGUsMCxpLndvcmsseSksaS5sZW5iaXRzPXkuYml0cyxNKXt0Lm1zZz0iaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0IixpLm1vZGU9JG47YnJlYWt9aWYoaS5kaXN0Yml0cz02LGkuZGlzdGNvZGU9aS5kaXN0ZHluLHk9e2JpdHM6aS5kaXN0Yml0c30sTT1MUihBOCxpLmxlbnMsaS5ubGVuLGkubmRpc3QsaS5kaXN0Y29kZSwwLGkud29yayx5KSxpLmRpc3RiaXRzPXkuYml0cyxNKXt0Lm1zZz0iaW52YWxpZCBkaXN0YW5jZXMgc2V0IixpLm1vZGU9JG47YnJlYWt9aWYoaS5tb2RlPVVnLGU9PT1EZylicmVhayB0O2Nhc2UgVWc6aS5tb2RlPU1nO2Nhc2UgTWc6aWYoYT49NiYmaD49MjU4KXt0Lm5leHRfb3V0PXIsdC5hdmFpbF9vdXQ9aCx0Lm5leHRfaW49byx0LmF2YWlsX2luPWEsaS5ob2xkPUEsaS5iaXRzPWQsclJ0KHQsRSkscj10Lm5leHRfb3V0LHM9dC5vdXRwdXQsaD10LmF2YWlsX291dCxvPXQubmV4dF9pbixuPXQuaW5wdXQsYT10LmF2YWlsX2luLEE9aS5ob2xkLGQ9aS5iaXRzLGkubW9kZT09PUdoJiYoaS5iYWNrPS0xKTticmVha31mb3IoaS5iYWNrPTA7Qz1pLmxlbmNvZGVbQSYoMTw8aS5sZW5iaXRzKS0xXSxOPUM+Pj4yNCxUPUM+Pj4xNiYyNTUsYj1DJjY1NTM1LCEoTjw9ZCk7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pZihUJiYhKFQmMjQwKSl7Zm9yKEY9TixCPVQsVT1iO0M9aS5sZW5jb2RlW1UrKChBJigxPDxGK0IpLTEpPj5GKV0sTj1DPj4+MjQsVD1DPj4+MTYmMjU1LGI9QyY2NTUzNSwhKEYrTjw9ZCk7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1BPj4+PUYsZC09RixpLmJhY2srPUZ9aWYoQT4+Pj1OLGQtPU4saS5iYWNrKz1OLGkubGVuZ3RoPWIsVD09PTApe2kubW9kZT1pODticmVha31pZihUJjMyKXtpLmJhY2s9LTEsaS5tb2RlPUdoO2JyZWFrfWlmKFQmNjQpe3QubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLGkubW9kZT0kbjticmVha31pLmV4dHJhPVQmMTUsaS5tb2RlPXFLO2Nhc2UgcUs6aWYoaS5leHRyYSl7Zm9yKGM9aS5leHRyYTtkPGM7KXtpZihhPT09MClicmVhayB0O2EtLSxBKz1uW28rK108PGQsZCs9OH1pLmxlbmd0aCs9QSYoMTw8aS5leHRyYSktMSxBPj4+PWkuZXh0cmEsZC09aS5leHRyYSxpLmJhY2srPWkuZXh0cmF9aS53YXM9aS5sZW5ndGgsaS5tb2RlPSRLO2Nhc2UgJEs6Zm9yKDtDPWkuZGlzdGNvZGVbQSYoMTw8aS5kaXN0Yml0cyktMV0sTj1DPj4+MjQsVD1DPj4+MTYmMjU1LGI9QyY2NTUzNSwhKE48PWQpOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aWYoIShUJjI0MCkpe2ZvcihGPU4sQj1ULFU9YjtDPWkuZGlzdGNvZGVbVSsoKEEmKDE8PEYrQiktMSk+PkYpXSxOPUM+Pj4yNCxUPUM+Pj4xNiYyNTUsYj1DJjY1NTM1LCEoRitOPD1kKTspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fUE+Pj49RixkLT1GLGkuYmFjays9Rn1pZihBPj4+PU4sZC09TixpLmJhY2srPU4sVCY2NCl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsaS5tb2RlPSRuO2JyZWFrfWkub2Zmc2V0PWIsaS5leHRyYT1UJjE1LGkubW9kZT10ODtjYXNlIHQ4OmlmKGkuZXh0cmEpe2ZvcihjPWkuZXh0cmE7ZDxjOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQSs9bltvKytdPDxkLGQrPTh9aS5vZmZzZXQrPUEmKDE8PGkuZXh0cmEpLTEsQT4+Pj1pLmV4dHJhLGQtPWkuZXh0cmEsaS5iYWNrKz1pLmV4dHJhfWlmKGkub2Zmc2V0PmkuZG1heCl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixpLm1vZGU9JG47YnJlYWt9aS5tb2RlPWU4O2Nhc2UgZTg6aWYoaD09PTApYnJlYWsgdDtpZihfPUUtaCxpLm9mZnNldD5fKXtpZihfPWkub2Zmc2V0LV8sXz5pLndoYXZlJiZpLnNhbmUpe3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsaS5tb2RlPSRuO2JyZWFrfV8+aS53bmV4dD8oXy09aS53bmV4dCxSPWkud3NpemUtXyk6Uj1pLnduZXh0LV8sXz5pLmxlbmd0aCYmKF89aS5sZW5ndGgpLEk9aS53aW5kb3d9ZWxzZSBJPXMsUj1yLWkub2Zmc2V0LF89aS5sZW5ndGg7Xz5oJiYoXz1oKSxoLT1fLGkubGVuZ3RoLT1fO2RvIHNbcisrXT1JW1IrK107d2hpbGUoLS1fKTtpLmxlbmd0aD09PTAmJihpLm1vZGU9TWcpO2JyZWFrO2Nhc2UgaTg6aWYoaD09PTApYnJlYWsgdDtzW3IrK109aS5sZW5ndGgsaC0tLGkubW9kZT1NZzticmVhaztjYXNlIGFHOmlmKGkud3JhcCl7Zm9yKDtkPDMyOyl7aWYoYT09PTApYnJlYWsgdDthLS0sQXw9bltvKytdPDxkLGQrPTh9aWYoRS09aCx0LnRvdGFsX291dCs9RSxpLnRvdGFsKz1FLGkud3JhcCY0JiZFJiYodC5hZGxlcj1pLmNoZWNrPWkuZmxhZ3M/TUEoaS5jaGVjayxzLEUsci1FKTpjRyhpLmNoZWNrLHMsRSxyLUUpKSxFPWgsaS53cmFwJjQmJihpLmZsYWdzP0E6bzgoQSkpIT09aS5jaGVjayl7dC5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIixpLm1vZGU9JG47YnJlYWt9QT0wLGQ9MH1pLm1vZGU9bjg7Y2FzZSBuODppZihpLndyYXAmJmkuZmxhZ3Mpe2Zvcig7ZDwzMjspe2lmKGE9PT0wKWJyZWFrIHQ7YS0tLEErPW5bbysrXTw8ZCxkKz04fWlmKGkud3JhcCY0JiZBIT09KGkudG90YWwmNDI5NDk2NzI5NSkpe3QubXNnPSJpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrIixpLm1vZGU9JG47YnJlYWt9QT0wLGQ9MH1pLm1vZGU9czg7Y2FzZSBzODpNPWhSdDticmVhayB0O2Nhc2UgJG46TT1oODticmVhayB0O2Nhc2UgZEc6cmV0dXJuIGxHO2Nhc2UgYzg6ZGVmYXVsdDpyZXR1cm4gcmF9cmV0dXJuIHQubmV4dF9vdXQ9cix0LmF2YWlsX291dD1oLHQubmV4dF9pbj1vLHQuYXZhaWxfaW49YSxpLmhvbGQ9QSxpLmJpdHM9ZCwoaS53c2l6ZXx8RSE9PXQuYXZhaWxfb3V0JiZpLm1vZGU8JG4mJihpLm1vZGU8YUd8fGUhPT1VSykpJiZFOCh0LHQub3V0cHV0LHQubmV4dF9vdXQsRS10LmF2YWlsX291dCk/KGkubW9kZT1kRyxsRyk6KGYtPXQuYXZhaWxfaW4sRS09dC5hdmFpbF9vdXQsdC50b3RhbF9pbis9Zix0LnRvdGFsX291dCs9RSxpLnRvdGFsKz1FLGkud3JhcCY0JiZFJiYodC5hZGxlcj1pLmNoZWNrPWkuZmxhZ3M/TUEoaS5jaGVjayxzLEUsdC5uZXh0X291dC1FKTpjRyhpLmNoZWNrLHMsRSx0Lm5leHRfb3V0LUUpKSx0LmRhdGFfdHlwZT1pLmJpdHMrKGkubGFzdD82NDowKSsoaS5tb2RlPT09R2g/MTI4OjApKyhpLm1vZGU9PT1VZ3x8aS5tb2RlPT09ckc/MjU2OjApLChmPT09MCYmRT09PTB8fGU9PT1VSykmJk09PT1OZCYmKE09bFJ0KSxNKX0scFJ0PXQ9PntpZihGZCh0KSlyZXR1cm4gcmE7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gZS53aW5kb3cmJihlLndpbmRvdz1udWxsKSx0LnN0YXRlPW51bGwsTmR9LHVSdD0odCxlKT0+e2lmKEZkKHQpKXJldHVybiByYTtsZXQgaT10LnN0YXRlO3JldHVybiBpLndyYXAmMj8oaS5oZWFkPWUsZS5kb25lPSExLE5kKTpyYX0sQ1J0PSh0LGUpPT57bGV0IGk9ZS5sZW5ndGgsbixzLG87cmV0dXJuIEZkKHQpfHwobj10LnN0YXRlLG4ud3JhcCE9PTAmJm4ubW9kZSE9PVFnKT9yYTpuLm1vZGU9PT1RZyYmKHM9MSxzPWNHKHMsZSxpLDApLHMhPT1uLmNoZWNrKT9oODoobz1FOCh0LGUsaSxpKSxvPyhuLm1vZGU9ZEcsbEcpOihuLmhhdmVkaWN0PTEsTmQpKX07dmEuZXhwb3J0cy5pbmZsYXRlUmVzZXQ9ZDg7dmEuZXhwb3J0cy5pbmZsYXRlUmVzZXQyPW04O3ZhLmV4cG9ydHMuaW5mbGF0ZVJlc2V0S2VlcD1sODt2YS5leHBvcnRzLmluZmxhdGVJbml0PVJSdDt2YS5leHBvcnRzLmluZmxhdGVJbml0Mj1mODt2YS5leHBvcnRzLmluZmxhdGU9SVJ0O3ZhLmV4cG9ydHMuaW5mbGF0ZUVuZD1wUnQ7dmEuZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyPXVSdDt2YS5leHBvcnRzLmluZmxhdGVTZXREaWN0aW9uYXJ5PUNSdDt2YS5leHBvcnRzLmluZmxhdGVJbmZvPSJwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0pO3ZhciBSOD10cygoUFNlLG1HKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgZ1J0PSh0LGUpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKTttRy5leHBvcnRzLmFzc2lnbj1mdW5jdGlvbih0KXtsZXQgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Zm9yKDtlLmxlbmd0aDspe2xldCBpPWUuc2hpZnQoKTtpZihpKXtpZih0eXBlb2YgaSE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcihpKyJtdXN0IGJlIG5vbi1vYmplY3QiKTtmb3IobGV0IG4gaW4gaSlnUnQoaSxuKSYmKHRbbl09aVtuXSl9fXJldHVybiB0fTttRy5leHBvcnRzLmZsYXR0ZW5DaHVua3M9dD0+e2xldCBlPTA7Zm9yKGxldCBuPTAscz10Lmxlbmd0aDtuPHM7bisrKWUrPXRbbl0ubGVuZ3RoO2xldCBpPW5ldyBVaW50OEFycmF5KGUpO2ZvcihsZXQgbj0wLHM9MCxvPXQubGVuZ3RoO248bztuKyspe2xldCByPXRbbl07aS5zZXQocixzKSxzKz1yLmxlbmd0aH1yZXR1cm4gaX19KTt2YXIgSTg9dHMoKEpTZSxMZyk9PnsidXNlIHN0cmljdCI7dmFyIFo4PSEwO3RyeXtTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMSkpfWNhdGNoe1o4PSExfXZhciB5Uj1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl5Ult0XT10Pj0yNTI/Njp0Pj0yNDg/NTp0Pj0yNDA/NDp0Pj0yMjQ/Mzp0Pj0xOTI/MjoxO3lSWzI1NF09eVJbMjU0XT0xO0xnLmV4cG9ydHMuc3RyaW5nMmJ1Zj10PT57aWYodHlwZW9mIFRleHRFbmNvZGVyPT0iZnVuY3Rpb24iJiZUZXh0RW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlKXJldHVybiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodCk7bGV0IGUsaSxuLHMsbyxyPXQubGVuZ3RoLGE9MDtmb3Iocz0wO3M8cjtzKyspaT10LmNoYXJDb2RlQXQocyksKGkmNjQ1MTIpPT09NTUyOTYmJnMrMTxyJiYobj10LmNoYXJDb2RlQXQocysxKSwobiY2NDUxMik9PT01NjMyMCYmKGk9NjU1MzYrKGktNTUyOTY8PDEwKSsobi01NjMyMCkscysrKSksYSs9aTwxMjg/MTppPDIwNDg/MjppPDY1NTM2PzM6NDtmb3IoZT1uZXcgVWludDhBcnJheShhKSxvPTAscz0wO288YTtzKyspaT10LmNoYXJDb2RlQXQocyksKGkmNjQ1MTIpPT09NTUyOTYmJnMrMTxyJiYobj10LmNoYXJDb2RlQXQocysxKSwobiY2NDUxMik9PT01NjMyMCYmKGk9NjU1MzYrKGktNTUyOTY8PDEwKSsobi01NjMyMCkscysrKSksaTwxMjg/ZVtvKytdPWk6aTwyMDQ4PyhlW28rK109MTkyfGk+Pj42LGVbbysrXT0xMjh8aSY2Myk6aTw2NTUzNj8oZVtvKytdPTIyNHxpPj4+MTIsZVtvKytdPTEyOHxpPj4+NiY2MyxlW28rK109MTI4fGkmNjMpOihlW28rK109MjQwfGk+Pj4xOCxlW28rK109MTI4fGk+Pj4xMiY2MyxlW28rK109MTI4fGk+Pj42JjYzLGVbbysrXT0xMjh8aSY2Myk7cmV0dXJuIGV9O3ZhciBUUnQ9KHQsZSk9PntpZihlPDY1NTM0JiZ0LnN1YmFycmF5JiZaOClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQubGVuZ3RoPT09ZT90OnQuc3ViYXJyYXkoMCxlKSk7bGV0IGk9IiI7Zm9yKGxldCBuPTA7bjxlO24rKylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbbl0pO3JldHVybiBpfTtMZy5leHBvcnRzLmJ1ZjJzdHJpbmc9KHQsZSk9PntsZXQgaT1lfHx0Lmxlbmd0aDtpZih0eXBlb2YgVGV4dERlY29kZXI9PSJmdW5jdGlvbiImJlRleHREZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUpcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0LnN1YmFycmF5KDAsZSkpO2xldCBuLHMsbz1uZXcgQXJyYXkoaSoyKTtmb3Iocz0wLG49MDtuPGk7KXtsZXQgcj10W24rK107aWYocjwxMjgpe29bcysrXT1yO2NvbnRpbnVlfWxldCBhPXlSW3JdO2lmKGE+NCl7b1tzKytdPTY1NTMzLG4rPWEtMTtjb250aW51ZX1mb3IociY9YT09PTI/MzE6YT09PTM/MTU6NzthPjEmJm48aTspcj1yPDw2fHRbbisrXSY2MyxhLS07aWYoYT4xKXtvW3MrK109NjU1MzM7Y29udGludWV9cjw2NTUzNj9vW3MrK109cjooci09NjU1MzYsb1tzKytdPTU1Mjk2fHI+PjEwJjEwMjMsb1tzKytdPTU2MzIwfHImMTAyMyl9cmV0dXJuIFRSdChvLHMpfTtMZy5leHBvcnRzLnV0Zjhib3JkZXI9KHQsZSk9PntlPWV8fHQubGVuZ3RoLGU+dC5sZW5ndGgmJihlPXQubGVuZ3RoKTtsZXQgaT1lLTE7Zm9yKDtpPj0wJiYodFtpXSYxOTIpPT09MTI4OylpLS07cmV0dXJuIGk8MHx8aT09PTA/ZTppK3lSW3RbaV1dPmU/aTplfX0pO3ZhciB1OD10cygoalNlLHA4KT0+eyJ1c2Ugc3RyaWN0IjtwOC5leHBvcnRzPXsyOiJuZWVkIGRpY3Rpb25hcnkiLDE6InN0cmVhbSBlbmQiLDA6IiIsIi0xIjoiZmlsZSBlcnJvciIsIi0yIjoic3RyZWFtIGVycm9yIiwiLTMiOiJkYXRhIGVycm9yIiwiLTQiOiJpbnN1ZmZpY2llbnQgbWVtb3J5IiwiLTUiOiJidWZmZXIgZXJyb3IiLCItNiI6ImluY29tcGF0aWJsZSB2ZXJzaW9uIn19KTt2YXIgZzg9dHMoKEhTZSxDOCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gTlJ0KCl7dGhpcy5pbnB1dD1udWxsLHRoaXMubmV4dF9pbj0wLHRoaXMuYXZhaWxfaW49MCx0aGlzLnRvdGFsX2luPTAsdGhpcy5vdXRwdXQ9bnVsbCx0aGlzLm5leHRfb3V0PTAsdGhpcy5hdmFpbF9vdXQ9MCx0aGlzLnRvdGFsX291dD0wLHRoaXMubXNnPSIiLHRoaXMuc3RhdGU9bnVsbCx0aGlzLmRhdGFfdHlwZT0yLHRoaXMuYWRsZXI9MH1DOC5leHBvcnRzPU5SdH0pO3ZhciBOOD10cygodlNlLFQ4KT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBGUnQoKXt0aGlzLnRleHQ9MCx0aGlzLnRpbWU9MCx0aGlzLnhmbGFncz0wLHRoaXMub3M9MCx0aGlzLmV4dHJhPW51bGwsdGhpcy5leHRyYV9sZW49MCx0aGlzLm5hbWU9IiIsdGhpcy5jb21tZW50PSIiLHRoaXMuaGNyYz0wLHRoaXMuZG9uZT0hMX1UOC5leHBvcnRzPUZSdH0pO3ZhciBWOD10cygoelNlLHFmKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgV2g9XzgoKSxiOD1SOCgpLF9HPUk4KCksUkc9dTgoKSxiUnQ9ZzgoKSxZUnQ9TjgoKSxZOD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHtaX05PX0ZMVVNIOlZSdCxaX0ZJTklTSDpTUnQsWl9PSzp3UixaX1NUUkVBTV9FTkQ6ZkcsWl9ORUVEX0RJQ1Q6RUcsWl9TVFJFQU1fRVJST1I6T1J0LFpfREFUQV9FUlJPUjpGOCxaX01FTV9FUlJPUjpCUnR9PVdnKCk7ZnVuY3Rpb24geFIodCl7dGhpcy5vcHRpb25zPWI4LmFzc2lnbih7Y2h1bmtTaXplOjEwMjQqNjQsd2luZG93Qml0czoxNSx0bzoiIn0sdHx8e30pO2xldCBlPXRoaXMub3B0aW9ucztlLnJhdyYmZS53aW5kb3dCaXRzPj0wJiZlLndpbmRvd0JpdHM8MTYmJihlLndpbmRvd0JpdHM9LWUud2luZG93Qml0cyxlLndpbmRvd0JpdHM9PT0wJiYoZS53aW5kb3dCaXRzPS0xNSkpLGUud2luZG93Qml0cz49MCYmZS53aW5kb3dCaXRzPDE2JiYhKHQmJnQud2luZG93Qml0cykmJihlLndpbmRvd0JpdHMrPTMyKSxlLndpbmRvd0JpdHM+MTUmJmUud2luZG93Qml0czw0OCYmKGUud2luZG93Qml0cyYxNXx8KGUud2luZG93Qml0c3w9MTUpKSx0aGlzLmVycj0wLHRoaXMubXNnPSIiLHRoaXMuZW5kZWQ9ITEsdGhpcy5jaHVua3M9W10sdGhpcy5zdHJtPW5ldyBiUnQsdGhpcy5zdHJtLmF2YWlsX291dD0wO2xldCBpPVdoLmluZmxhdGVJbml0Mih0aGlzLnN0cm0sZS53aW5kb3dCaXRzKTtpZihpIT09d1IpdGhyb3cgbmV3IEVycm9yKFJHW2ldKTtpZih0aGlzLmhlYWRlcj1uZXcgWVJ0LFdoLmluZmxhdGVHZXRIZWFkZXIodGhpcy5zdHJtLHRoaXMuaGVhZGVyKSxlLmRpY3Rpb25hcnkmJih0eXBlb2YgZS5kaWN0aW9uYXJ5PT0ic3RyaW5nIj9lLmRpY3Rpb25hcnk9X0cuc3RyaW5nMmJ1ZihlLmRpY3Rpb25hcnkpOlk4LmNhbGwoZS5kaWN0aW9uYXJ5KT09PSJbb2JqZWN0IEFycmF5QnVmZmVyXSImJihlLmRpY3Rpb25hcnk9bmV3IFVpbnQ4QXJyYXkoZS5kaWN0aW9uYXJ5KSksZS5yYXcmJihpPVdoLmluZmxhdGVTZXREaWN0aW9uYXJ5KHRoaXMuc3RybSxlLmRpY3Rpb25hcnkpLGkhPT13UikpKXRocm93IG5ldyBFcnJvcihSR1tpXSl9eFIucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxlKXtsZXQgaT10aGlzLnN0cm0sbj10aGlzLm9wdGlvbnMuY2h1bmtTaXplLHM9dGhpcy5vcHRpb25zLmRpY3Rpb25hcnksbyxyLGE7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtmb3IoZT09PX5+ZT9yPWU6cj1lPT09ITA/U1J0OlZSdCxZOC5jYWxsKHQpPT09IltvYmplY3QgQXJyYXlCdWZmZXJdIj9pLmlucHV0PW5ldyBVaW50OEFycmF5KHQpOmkuaW5wdXQ9dCxpLm5leHRfaW49MCxpLmF2YWlsX2luPWkuaW5wdXQubGVuZ3RoOzspe2ZvcihpLmF2YWlsX291dD09PTAmJihpLm91dHB1dD1uZXcgVWludDhBcnJheShuKSxpLm5leHRfb3V0PTAsaS5hdmFpbF9vdXQ9biksbz1XaC5pbmZsYXRlKGksciksbz09PUVHJiZzJiYobz1XaC5pbmZsYXRlU2V0RGljdGlvbmFyeShpLHMpLG89PT13Uj9vPVdoLmluZmxhdGUoaSxyKTpvPT09RjgmJihvPUVHKSk7aS5hdmFpbF9pbj4wJiZvPT09ZkcmJmkuc3RhdGUud3JhcD4wJiZ0W2kubmV4dF9pbl0hPT0wOylXaC5pbmZsYXRlUmVzZXQoaSksbz1XaC5pbmZsYXRlKGkscik7c3dpdGNoKG8pe2Nhc2UgT1J0OmNhc2UgRjg6Y2FzZSBFRzpjYXNlIEJSdDpyZXR1cm4gdGhpcy5vbkVuZChvKSx0aGlzLmVuZGVkPSEwLCExfWlmKGE9aS5hdmFpbF9vdXQsaS5uZXh0X291dCYmKGkuYXZhaWxfb3V0PT09MHx8bz09PWZHKSlpZih0aGlzLm9wdGlvbnMudG89PT0ic3RyaW5nIil7bGV0IGg9X0cudXRmOGJvcmRlcihpLm91dHB1dCxpLm5leHRfb3V0KSxBPWkubmV4dF9vdXQtaCxkPV9HLmJ1ZjJzdHJpbmcoaS5vdXRwdXQsaCk7aS5uZXh0X291dD1BLGkuYXZhaWxfb3V0PW4tQSxBJiZpLm91dHB1dC5zZXQoaS5vdXRwdXQuc3ViYXJyYXkoaCxoK0EpLDApLHRoaXMub25EYXRhKGQpfWVsc2UgdGhpcy5vbkRhdGEoaS5vdXRwdXQubGVuZ3RoPT09aS5uZXh0X291dD9pLm91dHB1dDppLm91dHB1dC5zdWJhcnJheSgwLGkubmV4dF9vdXQpKTtpZighKG89PT13UiYmYT09PTApKXtpZihvPT09ZkcpcmV0dXJuIG89V2guaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQobyksdGhpcy5lbmRlZD0hMCwhMDtpZihpLmF2YWlsX2luPT09MClicmVha319cmV0dXJuITB9O3hSLnByb3RvdHlwZS5vbkRhdGE9ZnVuY3Rpb24odCl7dGhpcy5jaHVua3MucHVzaCh0KX07eFIucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKHQpe3Q9PT13UiYmKHRoaXMub3B0aW9ucy50bz09PSJzdHJpbmciP3RoaXMucmVzdWx0PXRoaXMuY2h1bmtzLmpvaW4oIiIpOnRoaXMucmVzdWx0PWI4LmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj10LHRoaXMubXNnPXRoaXMuc3RybS5tc2d9O2Z1bmN0aW9uIFpHKHQsZSl7bGV0IGk9bmV3IHhSKGUpO2lmKGkucHVzaCh0KSxpLmVycil0aHJvdyBpLm1zZ3x8UkdbaS5lcnJdO3JldHVybiBpLnJlc3VsdH1mdW5jdGlvbiBHUnQodCxlKXtyZXR1cm4gZT1lfHx7fSxlLnJhdz0hMCxaRyh0LGUpfXFmLmV4cG9ydHMuSW5mbGF0ZT14UjtxZi5leHBvcnRzLmluZmxhdGU9Wkc7cWYuZXhwb3J0cy5pbmZsYXRlUmF3PUdSdDtxZi5leHBvcnRzLnVuZ3ppcD1aRztxZi5leHBvcnRzLmNvbnN0YW50cz1XZygpfSk7dmFyIElHPXt9O0hlKElHLHtkZWZhdWx0OigpPT53UnR9KTtmdW5jdGlvbiBXUnQodCxlKXtsZXQgaT16Yy5mcm9tU3RyaW5nKHQudHlwZSksbj10LmJ1ZmZlcjt1Syh0LmtleSxuKTtsZXQgcz15UnQobik7bj1zLmJ1ZmZlcjtsZXQgbz1zLmxlbmd0aDtzd2l0Y2goaSl7Y2FzZSB6Yy5NRVRBREFUQTpyZXR1cm4gVVJ0KG4sbyx0LnF1YWRLZXkpO2Nhc2UgemMuVEVSUkFJTjpyZXR1cm4ga1J0KG4sbyxlKTtjYXNlIHpjLkRCUk9PVDpyZXR1cm4gZS5wdXNoKG4pLHtidWZmZXI6bn19fWZ1bmN0aW9uIFVSdCh0LGUsaSl7bGV0IG49bmV3IERhdGFWaWV3KHQpLHM9MCxvPW4uZ2V0VWludDMyKHMsITApO2lmKHMrPXRFLG8hPT1EUnQpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIG1hZ2ljIik7bGV0IHI9bi5nZXRVaW50MzIocywhMCk7aWYocys9dEUsciE9PTEpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIGRhdGEgdHlwZS4gTXVzdCBiZSAxIGZvciBRdWFkVHJlZVBhY2tldCIpO2xldCBhPW4uZ2V0VWludDMyKHMsITApO2lmKHMrPXRFLGEhPT0yKXRocm93IG5ldyBrZSgiSW52YWxpZCBRdWFkVHJlZVBhY2tldCB2ZXJzaW9uLiBPbmx5IHZlcnNpb24gMiBpcyBzdXBwb3J0ZWQuIik7bGV0IGg9bi5nZXRJbnQzMihzLCEwKTtzKz1iZDtsZXQgQT1uLmdldEludDMyKHMsITApO2lmKHMrPWJkLEEhPT0zMil0aHJvdyBuZXcga2UoIkludmFsaWQgaW5zdGFuY2Ugc2l6ZS4iKTtsZXQgZD1uLmdldEludDMyKHMsITApO3MrPWJkO2xldCBmPW4uZ2V0SW50MzIocywhMCk7cys9YmQ7bGV0IEU9bi5nZXRJbnQzMihzLCEwKTtpZihzKz1iZCxkIT09aCpBK3MpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIGRhdGFCdWZmZXJPZmZzZXQiKTtpZihkK2YrRSE9PWUpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIHBhY2tldCBvZmZzZXRzIik7bGV0IF89W107Zm9yKGxldCBiPTA7YjxoOysrYil7bGV0IEY9bi5nZXRVaW50OChzKTsrK3MsKytzO2xldCBCPW4uZ2V0VWludDE2KHMsITApO3MrPSRmO2xldCBVPW4uZ2V0VWludDE2KHMsITApO3MrPSRmO2xldCBRPW4uZ2V0VWludDE2KHMsITApO3MrPSRmLHMrPSRmLHMrPSRmLHMrPWJkLHMrPWJkLHMrPTg7bGV0IE09bi5nZXRVaW50OChzKyspLGs9bi5nZXRVaW50OChzKyspO3MrPSRmLF8ucHVzaChuZXcgTksoRixCLFUsUSxNLGspKX1sZXQgUj1bXSxJPTA7ZnVuY3Rpb24gQyhiLEYsQil7bGV0IFU9ITE7aWYoQj09PTQpe2lmKEYuaGFzU3VidHJlZSgpKXJldHVybjtVPSEwfWZvcihsZXQgUT0wO1E8NDsrK1Epe2xldCBNPWIrUS50b1N0cmluZygpO2lmKFUpUltNXT1udWxsO2Vsc2UgaWYoQjw0KWlmKCFGLmhhc0NoaWxkKFEpKVJbTV09bnVsbDtlbHNle2lmKEk9PT1oKXtjb25zb2xlLmxvZygiSW5jb3JyZWN0IG51bWJlciBvZiBpbnN0YW5jZXMiKTtyZXR1cm59bGV0IGs9X1tJKytdO1JbTV09ayxDKE0sayxCKzEpfX19bGV0IE49MCxUPV9bSSsrXTtyZXR1cm4gaT09PSIiPysrTjpSW2ldPVQsQyhpLFQsTiksUn1mdW5jdGlvbiBrUnQodCxlLGkpe2xldCBuPW5ldyBEYXRhVmlldyh0KSxzPWZ1bmN0aW9uKGEpe2ZvcihsZXQgaD0wO2g8UVJ0OysraCl7bGV0IEE9bi5nZXRVaW50MzIoYSwhMCk7aWYoYSs9dEUsYSs9QSxhPmUpdGhyb3cgbmV3IGtlKCJNYWxmb3JtZWQgdGVycmFpbiBwYWNrZXQgZm91bmQuIil9cmV0dXJuIGF9LG89MCxyPVtdO2Zvcig7ci5sZW5ndGg8TVJ0Oyl7bGV0IGE9bztvPXMobyk7bGV0IGg9dC5zbGljZShhLG8pO2kucHVzaChoKSxyLnB1c2goaCl9cmV0dXJuIHJ9ZnVuY3Rpb24geVJ0KHQpe2xldCBlPW5ldyBEYXRhVmlldyh0KSxpPTAsbj1lLmdldFVpbnQzMihpLCEwKTtpZihpKz10RSxuIT09UzgmJm4hPT1MUnQpdGhyb3cgbmV3IGtlKCJJbnZhbGlkIG1hZ2ljIik7bGV0IHM9ZS5nZXRVaW50MzIoaSxuPT09UzgpO2krPXRFO2xldCBvPW5ldyBVaW50OEFycmF5KHQsaSkscj1POC5kZWZhdWx0LmluZmxhdGUobyk7aWYoci5sZW5ndGghPT1zKXRocm93IG5ldyBrZSgiU2l6ZSBvZiBwYWNrZXQgZG9lc24ndCBtYXRjaCBoZWFkZXIiKTtyZXR1cm4gcn12YXIgTzgsJGYsYmQsdEUsemMsRFJ0LE1SdCxRUnQsUzgsTFJ0LHdSdCxwRz1TKCgpPT57Q0soKTtGSygpO1BzKCk7Tzg9Y28oVjgoKSwxKTtOcygpOyRmPVVpbnQxNkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULGJkPUludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsdEU9VWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsemM9e01FVEFEQVRBOjAsVEVSUkFJTjoxLERCUk9PVDoyfTt6Yy5mcm9tU3RyaW5nPWZ1bmN0aW9uKHQpe2lmKHQ9PT0iTWV0YWRhdGEiKXJldHVybiB6Yy5NRVRBREFUQTtpZih0PT09IlRlcnJhaW4iKXJldHVybiB6Yy5URVJSQUlOO2lmKHQ9PT0iRGJSb290IilyZXR1cm4gemMuREJST09UfTtEUnQ9MzIzMDE7TVJ0PTUsUVJ0PTQ7Uzg9MTk1MzAyOTgwNSxMUnQ9MjkxNzAzNDEwMDt3UnQ9V2koV1J0KX0pO2Z1bmN0aW9uIHhSdCh0KXtyZXR1cm4gcC5kZWZpbmVkKCJ2YWx1ZSIsdCksdDw9LjA0MDQ1P3QqLjA3NzM5OTM4MDgwNDk1MzU3Ok1hdGgucG93KCh0Ky4wNTUpKi45NDc4NjcyOTg1NzgxOTkxLDIuNCl9dmFyIHlnLEI4PVMoKCk9PnthZSgpO3lnPXhSdH0pO3ZhciBURz17fTtIZShURyx7ZGVmYXVsdDooKT0+RVp0fSk7ZnVuY3Rpb24gUFJ0KHQsZSxpLG4scyxvKXtsZXQgcj1pKigxLXQpK24qdCxhPXMqKDEtdCkrbyp0O3JldHVybiByKigxLWUpK2EqZX1mdW5jdGlvbiB3Zyh0LGUsaSxuKXtsZXQgcz10K2UqaTtyZXR1cm4gbltzXX1mdW5jdGlvbiBKUnQodCxlLGkpe2xldCBuPWkubmF0aXZlRXh0ZW50LHM9KHQtbi53ZXN0KS8obi5lYXN0LW4ud2VzdCkqKGkud2lkdGgtMSksbz0oZS1uLnNvdXRoKS8obi5ub3J0aC1uLnNvdXRoKSooaS5oZWlnaHQtMSkscj1NYXRoLmZsb29yKHMpLGE9TWF0aC5mbG9vcihvKTtzLT1yLG8tPWE7bGV0IGg9cjxpLndpZHRoP3IrMTpyLEE9YTxpLmhlaWdodD9hKzE6YTthPWkuaGVpZ2h0LTEtYSxBPWkuaGVpZ2h0LTEtQTtsZXQgZD13ZyhyLGEsaS53aWR0aCxpLmJ1ZmZlciksZj13ZyhoLGEsaS53aWR0aCxpLmJ1ZmZlciksRT13ZyhyLEEsaS53aWR0aCxpLmJ1ZmZlciksXz13ZyhoLEEsaS53aWR0aCxpLmJ1ZmZlciksUj1QUnQocyxvLGQsZixFLF8pO3JldHVybiBSPVIqaS5zY2FsZStpLm9mZnNldCxSfWZ1bmN0aW9uIEc4KHQsZSxpKXtmb3IobGV0IG49MDtuPGkubGVuZ3RoO24rKyl7bGV0IHM9aVtuXS5uYXRpdmVFeHRlbnQsbz1uZXcgbDtpZihpW25dLnByb2plY3Rpb25UeXBlPT09IldlYk1lcmNhdG9yIil7bGV0IHI9aVtuXS5wcm9qZWN0aW9uLl9lbGxpcHNvaWQuX3JhZGlpO289bmV3IGtzKG5ldyBvdChyLngsci55LHIueikpLnByb2plY3QobmV3IHV0KHQsZSwwKSl9ZWxzZSBvLng9dCxvLnk9ZTtpZihvLng+cy53ZXN0JiZvLng8cy5lYXN0JiZvLnk+cy5zb3V0aCYmby55PHMubm9ydGgpcmV0dXJuIEpSdChvLngsby55LGlbbl0pfXJldHVybiAwfWZ1bmN0aW9uIGpSdCh0LGUsaSxuLHMsbyxyKXtpZihyKXJldHVybjtsZXQgYT1HOChzLmxvbmdpdHVkZSxzLmxhdGl0dWRlLG8pO2ZvcihsZXQgaD0wO2g8dDsrK2gpe2xldCBBPUc4KHMubG9uZ2l0dWRlK0wudG9SYWRpYW5zKGkqZVtoKjNdKSxzLmxhdGl0dWRlK0wudG9SYWRpYW5zKG4qZVtoKjMrMV0pLG8pO2VbaCozKzJdKz1BLWF9fWZ1bmN0aW9uIEhSdCh0LGUsaSxuLHMsbyxyLGEsaCl7aWYodD09PTB8fCFtKGUpfHxlLmxlbmd0aD09PTApcmV0dXJuO2xldCBBPW5ldyBvdChNYXRoLnNxcnQoci54KSxNYXRoLnNxcnQoci55KSxNYXRoLnNxcnQoci56KSk7Zm9yKGxldCBkPTA7ZDx0OysrZCl7bGV0IGY9ZCozLEU9ZisxLF89ZisyLFI9bmV3IHV0O1IubG9uZ2l0dWRlPW4ubG9uZ2l0dWRlK0wudG9SYWRpYW5zKGEqZVtmXSksUi5sYXRpdHVkZT1uLmxhdGl0dWRlK0wudG9SYWRpYW5zKGgqZVtFXSksUi5oZWlnaHQ9bi5oZWlnaHQrZVtfXTtsZXQgST17fTtBLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFIsSSksSS54LT1zLngsSS55LT1zLnksSS56LT1zLno7bGV0IEM9e307aWYobHQubXVsdGlwbHlCeVZlY3RvcihvLEksQyksZVtmXT1DLngsZVtFXT1DLnksZVtfXT1DLnosbShpKSl7bGV0IE49bmV3IGwoaVtmXSxpW0VdLGlbX10pLFQ9e307bHQubXVsdGlwbHlCeVZlY3RvcihvLE4sVCksaVtmXT1ULngsaVtFXT1ULnksaVtfXT1ULnp9fX1mdW5jdGlvbiB2UnQodCxlLGkpe2ZvcihsZXQgbj0wO248dDsrK24pe2xldCBzPWlbbio0XS82NTUzNSxvPWlbbio0KzFdLzY1NTM1LHI9KGlbbio0KzJdLWlbbio0XSkvNjU1MzUsYT0oaVtuKjQrM10taVtuKjQrMV0pLzY1NTM1O2VbbioyXSo9cixlW24qMl0rPXMsZVtuKjIrMV0qPWEsZVtuKjIrMV0rPW99fWZ1bmN0aW9uIHpSdCh0LGUsaSxuKXtsZXQgcz1uZXcgVWludDMyQXJyYXkodCksbz1tKGUpP2E9PmVbYV06YT0+YSxyPTA7aWYobiYmbShpKSl7bGV0IGE9aD0+aVtvKGgpKjQrM108MjU1O2ZvcihsZXQgaD0wO2g8dDtoKz0zKSFhKGgpJiYhYShoKzEpJiYhYShoKzIpJiYoc1tyKytdPW8oaCksc1tyKytdPW8oaCsxKSxzW3IrK109byhoKzIpKTtpZihyPjApe2xldCBoPXI7Zm9yKGxldCBBPTA7QTx0O0ErPTMpKGEoQSl8fGEoQSsxKXx8YShBKzIpKSYmKHNbaCsrXT1vKEEpLHNbaCsrXT1vKEErMSksc1toKytdPW8oQSsyKSl9ZWxzZSBmb3IobGV0IGg9MDtoPHQ7KytoKXNbaF09byhoKX1lbHNle3I9dDtmb3IobGV0IGE9MDthPHQ7KythKXNbYV09byhhKX1yZXR1cm57aW5kZXhBcnJheTpzLHRyYW5zcGFyZW50VmVydGV4T2Zmc2V0OnJ9fWZ1bmN0aW9uIEtSdCh0LGUsaSl7bGV0IG49ZVtpXTtpZihtKG4pKXJldHVybiBuO2xldCBzPWVbaV09e3Bvc2l0aW9uczp7fSxpbmRpY2VzOnt9LGVkZ2VzOnt9fSxvPVoodFtpXSx0LmRlZmF1bHQpO3JldHVybiBzLmhhc091dGxpbmU9bShvPy5lZGdlcyksc31mdW5jdGlvbiBYUnQodCxlLGksbil7aWYoIW0odFtpXSkpe2xldCBzPWkqMyxvPWU7Zm9yKGxldCByPTA7cjwzO3IrKyl7bGV0IGE9bltzK3JdO20ob1thXSl8fChvW2FdPXt9KSxvPW9bYV19bShvLmluZGV4KXx8KG8uaW5kZXg9aSksdFtpXT1vLmluZGV4fX1mdW5jdGlvbiBxUnQodCxlLGksbixzLG8pe2xldCByLGE7bjxzPyhyPW4sYT1zKToocj1zLGE9bik7bGV0IGg9dFtyXTttKGgpfHwoaD10W3JdPXt9KTtsZXQgQT1oW2FdO20oQSl8fChBPWhbYV09e25vcm1hbHNJbmRleDpbXSxvdXRsaW5lczpbXX0pLEEubm9ybWFsc0luZGV4LnB1c2gobyksKEEub3V0bGluZXMubGVuZ3RoPT09MHx8ZSE9PW58fGkhPT1zKSYmQS5vdXRsaW5lcy5wdXNoKGUsaSl9ZnVuY3Rpb24gJFJ0KHQsZSxpLG4pe2xldCBzPVtdO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bys9Myl7bGV0IHI9bShlKT9lW2lbb11dOiJkZWZhdWx0IixhPUtSdCh0LHMscik7aWYoIWEuaGFzT3V0bGluZSljb250aW51ZTtsZXQgaD1hLmluZGljZXMsQT1hLnBvc2l0aW9ucztmb3IobGV0IGY9MDtmPDM7ZisrKXtsZXQgRT1pW28rZl07WFJ0KGgsQSxFLG4pfWxldCBkPWEuZWRnZXM7Zm9yKGxldCBmPTA7ZjwzO2YrKyl7bGV0IEU9aVtvK2ZdLF89aVtvKyhmKzEpJTNdLFI9aFtFXSxJPWhbX107cVJ0KGQsRSxfLFIsSSxvKX19cmV0dXJuIHN9ZnVuY3Rpb24gVzgodCxlLGksbil7bGV0IHM9aVtlXSozLG89aVtlKzFdKjMscj1pW2UrMl0qMztsLmZyb21BcnJheShuLHMsUUEpLGwuZnJvbUFycmF5KG4sbyx4ZyksbC5mcm9tQXJyYXkobixyLFBnKSxsLnN1YnRyYWN0KHhnLFFBLHhnKSxsLnN1YnRyYWN0KFBnLFFBLFBnKSxsLmNyb3NzKHhnLFBnLFFBKTtsZXQgYT1sLm1hZ25pdHVkZShRQSk7YSE9PTAmJmwuZGl2aWRlQnlTY2FsYXIoUUEsYSxRQSk7bGV0IGg9ZSozLEE9KGUrMSkqMyxkPShlKzIpKjM7bC5wYWNrKFFBLHQsaCksbC5wYWNrKFFBLHQsQSksbC5wYWNrKFFBLHQsZCl9ZnVuY3Rpb24gdFp0KHQsZSxpKXtsLmZyb21BcnJheSh0LGUsSmcpLGwuZnJvbUFycmF5KHQsaSx1Ryk7bGV0IG49bC5kb3QoSmcsdUcpLHM9bC5tYWduaXR1ZGUobC5jcm9zcyhKZyx1RyxKZykpO3JldHVybiBNYXRoLmF0YW4yKHMsbik8LjI1fWZ1bmN0aW9uIGVadCh0LGUsaSxuLHMpe2lmKGUubm9ybWFsc0luZGV4Lmxlbmd0aD4xKXtsZXQgbz1uLmxlbmd0aD09PXMubGVuZ3RoO2ZvcihsZXQgcj0wO3I8ZS5ub3JtYWxzSW5kZXgubGVuZ3RoO3IrKyl7bGV0IGE9ZS5ub3JtYWxzSW5kZXhbcl07aWYobShzW2EqM10pfHxXOChzLGEsaSxuKSxyIT09MClmb3IobGV0IGg9MDtoPHI7aCsrKXtsZXQgQT1lLm5vcm1hbHNJbmRleFtoXSxkPW8/aVthXSozOmEqMyxmPW8/aVtBXSozOkEqMztpZih0WnQocyxkLGYpKXJldHVybn19fXQucHVzaCguLi5lLm91dGxpbmVzKX1mdW5jdGlvbiBpWnQodCxlLGksbixzKXtsZXQgbz1PYmplY3Qua2V5cyhlKTtmb3IobGV0IHI9MDtyPG8ubGVuZ3RoO3IrKyl7bGV0IGE9ZVtvW3JdXSxoPU9iamVjdC5rZXlzKGEpO2ZvcihsZXQgQT0wO0E8aC5sZW5ndGg7QSsrKXtsZXQgZD1hW2hbQV1dO2VadCh0LGQsaSxuLHMpfX19ZnVuY3Rpb24gblp0KHQsZSxpLG4pe2xldCBzPVtdLG89T2JqZWN0LmtleXModCk7Zm9yKGxldCByPTA7cjxvLmxlbmd0aDtyKyspe2xldCBhPXRbb1tyXV0uZWRnZXM7aVp0KHMsYSxlLGksbil9cmV0dXJuIHN9ZnVuY3Rpb24gc1p0KHQsZSxpLG4scyl7aWYoIW0odCl8fE9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTApcmV0dXJuO2xldCBvPSRSdCh0LGUsaSxuKTsoIW0ocyl8fGkubGVuZ3RoKjMhPT1zLmxlbmd0aCkmJihzPVtdKTtsZXQgcj1uWnQobyxpLG4scyk7cmV0dXJuIHIubGVuZ3RoPjA/bmV3IFVpbnQzMkFycmF5KHIpOnZvaWQgMH1mdW5jdGlvbiBvWnQodCl7bGV0IGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKz00KWVbaV09eWcoWnQuYnl0ZVRvRmxvYXQodFtpXSkpLGVbaSsxXT15ZyhadC5ieXRlVG9GbG9hdCh0W2krMV0pKSxlW2krMl09eWcoWnQuYnl0ZVRvRmxvYXQodFtpKzJdKSksZVtpKzNdPVp0LmJ5dGVUb0Zsb2F0KHRbaSszXSk7cmV0dXJuIGV9ZnVuY3Rpb24gclp0KHQsZSxpLG4scyxvLHIpe2xldCBhPXtub3JtYWxzOnZvaWQgMCxwb3NpdGlvbnM6dm9pZCAwLHV2MHM6dm9pZCAwLGNvbG9yczp2b2lkIDAsZmVhdHVyZUluZGV4OnZvaWQgMCx2ZXJ0ZXhDb3VudDp2b2lkIDB9O2lmKHQ9PT0wfHwhbShpKXx8aS5sZW5ndGg9PT0wfHxtKG4pKXJldHVybiBhO2lmKG0oZSkpe2EudmVydGV4Q291bnQ9ZS5sZW5ndGgsYS5wb3NpdGlvbnM9bmV3IEZsb2F0MzJBcnJheShlLmxlbmd0aCozKSxhLnV2MHM9bShzKT9uZXcgRmxvYXQzMkFycmF5KGUubGVuZ3RoKjIpOnZvaWQgMCxhLmNvbG9ycz1tKG8pP25ldyBVaW50OEFycmF5KGUubGVuZ3RoKjQpOnZvaWQgMCxhLmZlYXR1cmVJbmRleD1tKHIpP25ldyBBcnJheShlLmxlbmd0aCk6dm9pZCAwO2ZvcihsZXQgaD0wO2g8ZS5sZW5ndGg7aCsrKXtsZXQgQT1lW2hdO2EucG9zaXRpb25zW2gqM109aVtBKjNdLGEucG9zaXRpb25zW2gqMysxXT1pW0EqMysxXSxhLnBvc2l0aW9uc1toKjMrMl09aVtBKjMrMl0sbShhLnV2MHMpJiYoYS51djBzW2gqMl09c1tBKjJdLGEudXYwc1toKjIrMV09c1tBKjIrMV0pLG0oYS5jb2xvcnMpJiYoYS5jb2xvcnNbaCo0XT1vW0EqNF0sYS5jb2xvcnNbaCo0KzFdPW9bQSo0KzFdLGEuY29sb3JzW2gqNCsyXT1vW0EqNCsyXSxhLmNvbG9yc1toKjQrM109b1tBKjQrM10pLG0oYS5mZWF0dXJlSW5kZXgpJiYoYS5mZWF0dXJlSW5kZXhbaF09cltBXSl9dD1lLmxlbmd0aCxpPWEucG9zaXRpb25zfWU9bmV3IEFycmF5KHQpO2ZvcihsZXQgaD0wO2g8dDtoKyspZVtoXT1oO2Eubm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KGUubGVuZ3RoKjMpO2ZvcihsZXQgaD0wO2g8ZS5sZW5ndGg7aCs9MylXOChhLm5vcm1hbHMsaCxlLGkpO3JldHVybiBhfWZ1bmN0aW9uIGFadCh0LGUsaSxuLHMsbyxyLGEpe2lmKHQ9PT0wfHwhbShpKXx8aS5sZW5ndGg9PT0wKXJldHVybntidWZmZXJzOltdLGJ1ZmZlclZpZXdzOltdLGFjY2Vzc29yczpbXSxtZXNoZXM6W10sbm9kZXM6W10sbm9kZXNJblNjZW5lOltdfTtsZXQgaD1bXSxBPVtdLGQ9W10sZj1bXSxFPVtdLF89W10sUj17fSxJPVtdO20oZSkmJih0PWUubGVuZ3RoKTtsZXR7aW5kZXhBcnJheTpDLHRyYW5zcGFyZW50VmVydGV4T2Zmc2V0Ok59PXpSdCh0LGUsbyxhLnNwbGl0R2VvbWV0cnlCeUNvbG9yVHJhbnNwYXJlbmN5KSxUPW5ldyBCbG9iKFtDXSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pLGI9VVJMLmNyZWF0ZU9iamVjdFVSTChUKSxGPXQsQj1hLmVuYWJsZUZlYXR1cmVzJiZtKHIpP25ldyBGbG9hdDMyQXJyYXkoci5sZW5ndGgpOnZvaWQgMCxVPTA7aWYobShCKSlmb3IobGV0IGJ0PTA7YnQ8ci5sZW5ndGg7KytidCl7QltidF09cltidF07bGV0IGVlPXJbYnRdKzE7VTxlZSYmKFU9ZWUpfWxldCBRLE09c1p0KGEuc3ltYm9sb2d5RGF0YSxyLEMsaSxuKTtpZihtKE0pKXtsZXQgYnQ9bmV3IEJsb2IoW01dLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7UT1VUkwuY3JlYXRlT2JqZWN0VVJMKGJ0KX1sZXQgaz1pLnN1YmFycmF5KDAsRiozKSx5PW5ldyBCbG9iKFtrXSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pLGM9VVJMLmNyZWF0ZU9iamVjdFVSTCh5KSxnPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxPPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxEPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx3PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSx4PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxIPU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtmb3IobGV0IGJ0PTA7YnQ8ay5sZW5ndGgvMztidCsrKWc9TWF0aC5taW4oZyxrW2J0KjMrMF0pLE89TWF0aC5tYXgoTyxrW2J0KjMrMF0pLEQ9TWF0aC5taW4oRCxrW2J0KjMrMV0pLHc9TWF0aC5tYXgodyxrW2J0KjMrMV0pLHg9TWF0aC5taW4oeCxrW2J0KjMrMl0pLEg9TWF0aC5tYXgoSCxrW2J0KjMrMl0pO2xldCBqPW4/bi5zdWJhcnJheSgwLEYqMyk6dm9pZCAwLFg7aWYobShqKSl7bGV0IGJ0PW5ldyBCbG9iKFtqXSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO1g9VVJMLmNyZWF0ZU9iamVjdFVSTChidCl9bGV0IHR0PXM/cy5zdWJhcnJheSgwLEYqMik6dm9pZCAwLEc7aWYobSh0dCkpe2xldCBidD1uZXcgQmxvYihbdHRdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7Rz1VUkwuY3JlYXRlT2JqZWN0VVJMKGJ0KX1sZXQgSXQ9bShvKT9vWnQoby5zdWJhcnJheSgwLEYqNCkpOnZvaWQgMCxndDtpZihtKEl0KSl7bGV0IGJ0PW5ldyBCbG9iKFtJdF0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtndD1VUkwuY3JlYXRlT2JqZWN0VVJMKGJ0KX1sZXQgWXQ9bShCKT9CLnN1YmFycmF5KDAsRik6dm9pZCAwLFV0O2lmKG0oWXQpKXtsZXQgYnQ9bmV3IEJsb2IoW1l0XSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO1V0PVVSTC5jcmVhdGVPYmplY3RVUkwoYnQpfWxldCBDdD1tKEIpP25ldyBGbG9hdDMyQXJyYXkoVSk6dm9pZCAwLHp0O2lmKG0oQ3QpKXtmb3IobGV0IGVlPTA7ZWU8Q3QubGVuZ3RoOysrZWUpQ3RbZWVdPWVlO2xldCBidD1uZXcgQmxvYihbQ3RdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7enQ9VVJMLmNyZWF0ZU9iamVjdFVSTChidCl9bGV0IGt0PXt9LEp0PXt9O2t0LlBPU0lUSU9OPWQubGVuZ3RoLGgucHVzaCh7dXJpOmMsYnl0ZUxlbmd0aDprLmJ5dGVMZW5ndGh9KSxBLnB1c2goe2J1ZmZlcjpoLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOmsuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxkLnB1c2goe2J1ZmZlclZpZXc6QS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50OmsubGVuZ3RoLzMsdHlwZToiVkVDMyIsbWF4OltnLEQseF0sbWluOltPLHcsSF19KSxtKFgpJiYoa3QuTk9STUFMPWQubGVuZ3RoLGgucHVzaCh7dXJpOlgsYnl0ZUxlbmd0aDpqLmJ5dGVMZW5ndGh9KSxBLnB1c2goe2J1ZmZlcjpoLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOmouYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxkLnB1c2goe2J1ZmZlclZpZXc6QS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50OmoubGVuZ3RoLzMsdHlwZToiVkVDMyJ9KSksbShHKSYmKGt0LlRFWENPT1JEXzA9ZC5sZW5ndGgsaC5wdXNoKHt1cmk6RyxieXRlTGVuZ3RoOnR0LmJ5dGVMZW5ndGh9KSxBLnB1c2goe2J1ZmZlcjpoLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOnR0LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksZC5wdXNoKHtidWZmZXJWaWV3OkEubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDp0dC5sZW5ndGgvMix0eXBlOiJWRUMyIn0pKSxtKGd0KSYmKGt0LkNPTE9SXzA9ZC5sZW5ndGgsaC5wdXNoKHt1cmk6Z3QsYnl0ZUxlbmd0aDpJdC5ieXRlTGVuZ3RofSksQS5wdXNoKHtidWZmZXI6aC5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpJdC5ieXRlTGVuZ3RoLHRhcmdldDozNDk2Mn0pLGQucHVzaCh7YnVmZmVyVmlldzpBLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxjb21wb25lbnRUeXBlOjUxMjYsY291bnQ6SXQubGVuZ3RoLzQsdHlwZToiVkVDNCJ9KSksbShVdCkmJihrdC5fRkVBVFVSRV9JRF8wPWQubGVuZ3RoLGgucHVzaCh7dXJpOlV0LGJ5dGVMZW5ndGg6WXQuYnl0ZUxlbmd0aH0pLEEucHVzaCh7YnVmZmVyOmgubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6WXQuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjN9KSxkLnB1c2goe2J1ZmZlclZpZXc6QS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50Oll0Lmxlbmd0aCx0eXBlOiJTQ0FMQVIifSksSnQuRVhUX21lc2hfZmVhdHVyZXM9e2ZlYXR1cmVJZHM6W3thdHRyaWJ1dGU6MCxwcm9wZXJ0eVRhYmxlOjAsZmVhdHVyZUNvdW50OlV9XX0sSS5wdXNoKCJFWFRfbWVzaF9mZWF0dXJlcyIpKSxtKHp0KSYmKGgucHVzaCh7dXJpOnp0LGJ5dGVMZW5ndGg6Q3QuYnl0ZUxlbmd0aH0pLEEucHVzaCh7YnVmZmVyOmgubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6Q3QuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjN9KSxSLkVYVF9zdHJ1Y3R1cmFsX21ldGFkYXRhPXtzY2hlbWE6e2lkOiJpM3MtbWV0YWRhdGEtc2NoZW1hLTAwMSIsbmFtZToiSTNTIG1ldGFkYXRhIHNjaGVtYSAwMDEiLGRlc2NyaXB0aW9uOiJUaGUgc2NoZW1hIGZvciBJM1MgbWV0YWRhdGEiLHZlcnNpb246IjEuMCIsY2xhc3Nlczp7ZmVhdHVyZTp7bmFtZToiZmVhdHVyZSIsZGVzY3JpcHRpb246IkZlYXR1cmUgbWV0YWRhdGEiLHByb3BlcnRpZXM6e2luZGV4OntkZXNjcmlwdGlvbjoiVGhlIGZlYXR1cmUgaW5kZXgiLHR5cGU6IlNDQUxBUiIsY29tcG9uZW50VHlwZToiRkxPQVQzMiIscmVxdWlyZWQ6ITB9fX19fSxwcm9wZXJ0eVRhYmxlczpbe25hbWU6ImZlYXR1cmUtaW5kaWNlcy1tYXBwaW5nIixjbGFzczoiZmVhdHVyZSIsY291bnQ6VSxwcm9wZXJ0aWVzOntpbmRleDp7dmFsdWVzOkEubGVuZ3RoLTF9fX1dfSxJLnB1c2goIkVYVF9zdHJ1Y3R1cmFsX21ldGFkYXRhIikpLG0oUSkmJihoLnB1c2goe3VyaTpRLGJ5dGVMZW5ndGg6TS5ieXRlTGVuZ3RofSksQS5wdXNoKHtidWZmZXI6aC5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpNLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksZC5wdXNoKHtidWZmZXJWaWV3OkEubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNSxjb3VudDpNLmxlbmd0aCx0eXBlOiJTQ0FMQVIifSksSnQuQ0VTSVVNX3ByaW1pdGl2ZV9vdXRsaW5lPXtpbmRpY2VzOmQubGVuZ3RoLTF9LEkucHVzaCgiQ0VTSVVNX3ByaW1pdGl2ZV9vdXRsaW5lIikpLGgucHVzaCh7dXJpOmIsYnl0ZUxlbmd0aDpDLmJ5dGVMZW5ndGh9KSxBLnB1c2goe2J1ZmZlcjpoLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOkMuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjN9KTtsZXQgV3Q9W107cmV0dXJuIE4+MCYmKGQucHVzaCh7YnVmZmVyVmlldzpBLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxjb21wb25lbnRUeXBlOjUxMjUsY291bnQ6Tix0eXBlOiJTQ0FMQVIifSksV3QucHVzaCh7YXR0cmlidXRlczprdCxpbmRpY2VzOmQubGVuZ3RoLTEsbWF0ZXJpYWw6V3QubGVuZ3RoLGV4dGVuc2lvbnM6SnR9KSksTjx0JiYoZC5wdXNoKHtidWZmZXJWaWV3OkEubGVuZ3RoLTEsYnl0ZU9mZnNldDo0Kk4sY29tcG9uZW50VHlwZTo1MTI1LGNvdW50OnQtTix0eXBlOiJTQ0FMQVIifSksV3QucHVzaCh7YXR0cmlidXRlczprdCxpbmRpY2VzOmQubGVuZ3RoLTEsbWF0ZXJpYWw6V3QubGVuZ3RoLGV4dGVuc2lvbnM6SnQsZXh0cmE6e2lzVHJhbnNwYXJlbnQ6ITB9fSkpLGYucHVzaCh7cHJpbWl0aXZlczpXdH0pLF8ucHVzaCgwKSxFLnB1c2goe21lc2g6MH0pLHtidWZmZXJzOmgsYnVmZmVyVmlld3M6QSxhY2Nlc3NvcnM6ZCxtZXNoZXM6Zixub2RlczpFLG5vZGVzSW5TY2VuZTpfLHJvb3RFeHRlbnNpb25zOlIsZXh0ZW5zaW9uc1VzZWQ6SX19ZnVuY3Rpb24gQVp0KHQsZSxpLG4pe2xldCBzPW5ldyBVaW50OEFycmF5KHQsMCw1KTtyZXR1cm4gc1swXT09PTY4JiZzWzFdPT09ODImJnNbMl09PT02NSYmc1szXT09PTY3JiZzWzRdPT09Nzk/aFp0KHQsaSk6bFp0KHQsZSxpLG4pfWZ1bmN0aW9uIGhadCh0KXtsZXQgZT1nRyxpPW5ldyBlLkRlY29kZXJCdWZmZXIsbj1uZXcgVWludDhBcnJheSh0KTtpLkluaXQobixuLmxlbmd0aCk7bGV0IHM9bmV3IGUuRGVjb2RlcixvPXMuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZShpKSxyPW5ldyBlLk1ldGFkYXRhUXVlcmllcixhLGg7bz09PWUuVFJJQU5HVUxBUl9NRVNIJiYoYT1uZXcgZS5NZXNoLGg9cy5EZWNvZGVCdWZmZXJUb01lc2goaSxhKSk7bGV0IEE9e3ZlcnRleENvdW50OlswXSxmZWF0dXJlQ291bnQ6MH07aWYobShoKSYmaC5vaygpJiZhLnB0ciE9PTApe2xldCBkPWEubnVtX2ZhY2VzKCksZj1hLm51bV9hdHRyaWJ1dGVzKCksRT1hLm51bV9wb2ludHMoKTtBLmluZGljZXM9bmV3IFVpbnQzMkFycmF5KGQqMyk7bGV0IF89QS5pbmRpY2VzO0EudmVydGV4Q291bnRbMF09RSxBLnNjYWxlX3g9MSxBLnNjYWxlX3k9MTtsZXQgUj1uZXcgZS5EcmFjb0ludDMyQXJyYXkoMyk7Zm9yKGxldCBJPTA7STxkOysrSSlzLkdldEZhY2VGcm9tTWVzaChhLEksUiksX1tJKjNdPVIuR2V0VmFsdWUoMCksX1tJKjMrMV09Ui5HZXRWYWx1ZSgxKSxfW0kqMysyXT1SLkdldFZhbHVlKDIpO2UuZGVzdHJveShSKTtmb3IobGV0IEk9MDtJPGY7KytJKXtsZXQgQz1zLkdldEF0dHJpYnV0ZShhLEkpLE49Y1p0KGUscyxhLEMsRSksVD1DLmF0dHJpYnV0ZV90eXBlKCksYj0idW5rbm93biI7VD09PWUuUE9TSVRJT04/Yj0icG9zaXRpb25zIjpUPT09ZS5OT1JNQUw/Yj0ibm9ybWFscyI6VD09PWUuQ09MT1I/Yj0iY29sb3JzIjpUPT09ZS5URVhfQ09PUkQmJihiPSJ1djBzIik7bGV0IEY9cy5HZXRBdHRyaWJ1dGVNZXRhZGF0YShhLEkpO2lmKEYucHRyIT09MCl7bGV0IEI9ci5OdW1FbnRyaWVzKEYpO2ZvcihsZXQgVT0wO1U8QjsrK1Upe2xldCBRPXIuR2V0RW50cnlOYW1lKEYsVSk7UT09PSJpM3Mtc2NhbGVfeCI/QS5zY2FsZV94PXIuR2V0RG91YmxlRW50cnkoRiwiaTNzLXNjYWxlX3giKTpRPT09Imkzcy1zY2FsZV95Ij9BLnNjYWxlX3k9ci5HZXREb3VibGVFbnRyeShGLCJpM3Mtc2NhbGVfeSIpOlE9PT0iaTNzLWF0dHJpYnV0ZS10eXBlIiYmKGI9ci5HZXRTdHJpbmdFbnRyeShGLCJpM3MtYXR0cmlidXRlLXR5cGUiKSl9fW0oQVtiXSkmJmNvbnNvbGUubG9nKCJBdHRyaWJ1dGUgYWxyZWFkeSBleGlzdHMiLGIpLEFbYl09TixiPT09ImZlYXR1cmUtaW5kZXgiJiZBLmZlYXR1cmVDb3VudCsrfWUuZGVzdHJveShhKX1yZXR1cm4gZS5kZXN0cm95KHIpLGUuZGVzdHJveShzKSxBfWZ1bmN0aW9uIGNadCh0LGUsaSxuLHMpe2xldCBvPW4ubnVtX2NvbXBvbmVudHMoKSpzLHIsaD1bZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0ludDhBcnJheShvKSxlLkdldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IEludDhBcnJheShvKTtmb3IobGV0IGY9MDtmPG87KytmKWRbZl09ci5HZXRWYWx1ZShmKTtyZXR1cm4gZH0sZnVuY3Rpb24oKXtyPW5ldyB0LkRyYWNvSW50OEFycmF5KG8pLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0ludDE2QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cyhpLG4scil8fGNvbnNvbGUuZXJyb3IoIkJhZCBzdHJlYW0iKTtsZXQgZD1uZXcgSW50MTZBcnJheShvKTtmb3IobGV0IGY9MDtmPG87KytmKWRbZl09ci5HZXRWYWx1ZShmKTtyZXR1cm4gZH0sZnVuY3Rpb24oKXtyPW5ldyB0LkRyYWNvSW50MTZBcnJheShvKSxlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cyhpLG4scil8fGNvbnNvbGUuZXJyb3IoIkJhZCBzdHJlYW0iKTtsZXQgZD1uZXcgVWludDE2QXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb0ludDMyQXJyYXkobyksZS5HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50cyhpLG4scil8fGNvbnNvbGUuZXJyb3IoIkJhZCBzdHJlYW0iKTtsZXQgZD1uZXcgSW50MzJBcnJheShvKTtmb3IobGV0IGY9MDtmPG87KytmKWRbZl09ci5HZXRWYWx1ZShmKTtyZXR1cm4gZH0sZnVuY3Rpb24oKXtyPW5ldyB0LkRyYWNvSW50MzJBcnJheShvKSxlLkdldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50cyhpLG4scil8fGNvbnNvbGUuZXJyb3IoIkJhZCBzdHJlYW0iKTtsZXQgZD1uZXcgVWludDMyQXJyYXkobyk7Zm9yKGxldCBmPTA7ZjxvOysrZilkW2ZdPXIuR2V0VmFsdWUoZik7cmV0dXJuIGR9LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe30sZnVuY3Rpb24oKXtyPW5ldyB0LkRyYWNvRmxvYXQzMkFycmF5KG8pLGUuR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHMoaSxuLHIpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGQ9bmV3IEZsb2F0MzJBcnJheShvKTtmb3IobGV0IGY9MDtmPG87KytmKWRbZl09ci5HZXRWYWx1ZShmKTtyZXR1cm4gZH0sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7cj1uZXcgdC5EcmFjb1VJbnQ4QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50cyhpLG4scil8fGNvbnNvbGUuZXJyb3IoIkJhZCBzdHJlYW0iKTtsZXQgZD1uZXcgVWludDhBcnJheShvKTtmb3IobGV0IGY9MDtmPG87KytmKWRbZl09ci5HZXRWYWx1ZShmKTtyZXR1cm4gZH1dW24uZGF0YV90eXBlKCldKCk7cmV0dXJuIG0ocikmJnQuZGVzdHJveShyKSxofWZ1bmN0aW9uIGxadCh0LGUsaSxuKXtsZXQgcz17dmVydGV4Q291bnQ6MH0sbz1uZXcgRGF0YVZpZXcodCk7dHJ5e2xldCByPTA7aWYocy52ZXJ0ZXhDb3VudD1vLmdldFVpbnQzMihyLDEpLHIrPTQscy5mZWF0dXJlQ291bnQ9by5nZXRVaW50MzIociwxKSxyKz00LG0oaSkpZm9yKGxldCBhPTA7YTxpLmF0dHJpYnV0ZXMubGVuZ3RoO2ErKyltKGpnW2kuYXR0cmlidXRlc1thXV0pP3I9amdbaS5hdHRyaWJ1dGVzW2FdXShzLHQscik6Y29uc29sZS5lcnJvcigiVW5rbm93biBkZWNvZGVyIGZvciIsaS5hdHRyaWJ1dGVzW2FdKTtlbHNle2xldCBhPWUub3JkZXJpbmcsaD1lLmZlYXR1cmVBdHRyaWJ1dGVPcmRlcjttKG4pJiZtKG4uZ2VvbWV0cnlEYXRhKSYmbShuLmdlb21ldHJ5RGF0YVswXSkmJm0obi5nZW9tZXRyeURhdGFbMF0ucGFyYW1zKSYmKGE9T2JqZWN0LmtleXMobi5nZW9tZXRyeURhdGFbMF0ucGFyYW1zLnZlcnRleEF0dHJpYnV0ZXMpLGg9T2JqZWN0LmtleXMobi5nZW9tZXRyeURhdGFbMF0ucGFyYW1zLmZlYXR1cmVBdHRyaWJ1dGVzKSk7Zm9yKGxldCBBPTA7QTxhLmxlbmd0aDtBKyspe2xldCBkPWpnW2FbQV1dO3I9ZChzLHQscil9Zm9yKGxldCBBPTA7QTxoLmxlbmd0aDtBKyspe2xldCBkPWpnW2hbQV1dO3I9ZChzLHQscil9fX1jYXRjaChyKXtjb25zb2xlLmVycm9yKHIpfXJldHVybiBzLnNjYWxlX3g9MSxzLnNjYWxlX3k9MSxzfWZ1bmN0aW9uIGRadCh0KXtsZXQgZT1BWnQodC5iaW5hcnlEYXRhLHQuc2NoZW1hLHQuYnVmZmVySW5mbyx0LmZlYXR1cmVEYXRhKTttKHQuZ2VvaWREYXRhTGlzdCkmJnQuZ2VvaWREYXRhTGlzdC5sZW5ndGg+MCYmalJ0KGUudmVydGV4Q291bnQsZS5wb3NpdGlvbnMsZS5zY2FsZV94LGUuc2NhbGVfeSx0LmNhcnRvZ3JhcGhpY0NlbnRlcix0Lmdlb2lkRGF0YUxpc3QsITEpLEhSdChlLnZlcnRleENvdW50LGUucG9zaXRpb25zLGUubm9ybWFscyx0LmNhcnRvZ3JhcGhpY0NlbnRlcix0LmNhcnRlc2lhbkNlbnRlcix0LnBhcmVudFJvdGF0aW9uLHQuZWxsaXBzb2lkUmFkaWlTcXVhcmUsZS5zY2FsZV94LGUuc2NhbGVfeSksbShlLnV2MHMpJiZtKGVbInV2LXJlZ2lvbiJdKSYmdlJ0KGUudmVydGV4Q291bnQsZS51djBzLGVbInV2LXJlZ2lvbiJdKTtsZXQgaTtpZihtKGVbImZlYXR1cmUtaW5kZXgiXSkpaT1lWyJmZWF0dXJlLWluZGV4Il07ZWxzZSBpZihtKGUuZmFjZVJhbmdlKSl7aT1uZXcgQXJyYXkoZS52ZXJ0ZXhDb3VudCk7Zm9yKGxldCByPTA7cjxlLmZhY2VSYW5nZS5sZW5ndGgtMTtyKz0yKXtsZXQgYT1yLzIsaD1lLmZhY2VSYW5nZVtyXSxBPWUuZmFjZVJhbmdlW3IrMV07Zm9yKGxldCBkPWg7ZDw9QTtkKyspaVtkKjNdPWEsaVtkKjMrMV09YSxpW2QqMysyXT1hfX1pZih0LmNhbGN1bGF0ZU5vcm1hbHMpe2xldCByPXJadChlLnZlcnRleENvdW50LGUuaW5kaWNlcyxlLnBvc2l0aW9ucyxlLm5vcm1hbHMsZS51djBzLGUuY29sb3JzLGkpO20oci5ub3JtYWxzKSYmKGUubm9ybWFscz1yLm5vcm1hbHMsbShyLnZlcnRleENvdW50KSYmKGUudmVydGV4Q291bnQ9ci52ZXJ0ZXhDb3VudCxlLmluZGljZXM9ci5pbmRpY2VzLGUucG9zaXRpb25zPXIucG9zaXRpb25zLGUudXYwcz1yLnV2MHMsZS5jb2xvcnM9ci5jb2xvcnMsaT1yLmZlYXR1cmVJbmRleCkpfWxldCBuPWFadChlLnZlcnRleENvdW50LGUuaW5kaWNlcyxlLnBvc2l0aW9ucyxlLm5vcm1hbHMsZS51djBzLGUuY29sb3JzLGksdCkscz17cG9zaXRpb25zOmUucG9zaXRpb25zLGluZGljZXM6ZS5pbmRpY2VzLGZlYXR1cmVJbmRleDppLHNvdXJjZVVSTDp0LnVybCxjYXJ0ZXNpYW5DZW50ZXI6dC5jYXJ0ZXNpYW5DZW50ZXIscGFyZW50Um90YXRpb246dC5wYXJlbnRSb3RhdGlvbn07cmV0dXJuIG4uX2N1c3RvbUF0dHJpYnV0ZXM9cyx7bWVzaERhdGE6bn19YXN5bmMgZnVuY3Rpb24gbVp0KHQsZSl7bGV0IGk9dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShpKSYmbShpLndhc21CaW5hcnlGaWxlKT9nRz1hd2FpdCgwLENHLmRlZmF1bHQpKGkpOmdHPWF3YWl0KDAsQ0cuZGVmYXVsdCkoKSwhMH1mdW5jdGlvbiBmWnQodCxlKXtsZXQgaT10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKGkpP21adCh0LGUpOmRadCh0LGUpfXZhciBDRyxnRyxRQSx4ZyxQZyxKZyx1RyxqZyxFWnQsTkc9UygoKT0+e05zKCk7RnQoKTttdCgpO01sKCk7T2UoKTtyaSgpO0h0KCk7UW4oKTtkbigpO19lKCk7Q0c9Y28odEcoKSwxKTtCOCgpO1FBPW5ldyBsLHhnPW5ldyBsLFBnPW5ldyBsO0pnPW5ldyBsLHVHPW5ldyBsO2pnPXtwb3NpdGlvbjpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC52ZXJ0ZXhDb3VudCozO3JldHVybiB0LnBvc2l0aW9ucz1uZXcgRmxvYXQzMkFycmF5KGUsaSxuKSxpKz1uKjQsaX0sbm9ybWFsOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LnZlcnRleENvdW50KjM7cmV0dXJuIHQubm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KGUsaSxuKSxpKz1uKjQsaX0sdXYwOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LnZlcnRleENvdW50KjI7cmV0dXJuIHQudXYwcz1uZXcgRmxvYXQzMkFycmF5KGUsaSxuKSxpKz1uKjQsaX0sY29sb3I6ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQudmVydGV4Q291bnQqNDtyZXR1cm4gdC5jb2xvcnM9bmV3IFVpbnQ4QXJyYXkoZSxpLG4pLGkrPW4saX0sZmVhdHVyZUlkOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LmZlYXR1cmVDb3VudDtyZXR1cm4gaSs9bio4LGl9LGlkOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LmZlYXR1cmVDb3VudDtyZXR1cm4gaSs9bio4LGl9LGZhY2VSYW5nZTpmdW5jdGlvbih0LGUsaSl7bGV0IG49dC5mZWF0dXJlQ291bnQqMjtyZXR1cm4gdC5mYWNlUmFuZ2U9bmV3IFVpbnQzMkFycmF5KGUsaSxuKSxpKz1uKjQsaX0sdXZSZWdpb246ZnVuY3Rpb24odCxlLGkpe2xldCBuPXQudmVydGV4Q291bnQqNDtyZXR1cm4gdFsidXYtcmVnaW9uIl09bmV3IFVpbnQxNkFycmF5KGUsaSxuKSxpKz1uKjIsaX0scmVnaW9uOmZ1bmN0aW9uKHQsZSxpKXtsZXQgbj10LnZlcnRleENvdW50KjQ7cmV0dXJuIHRbInV2LXJlZ2lvbiJdPW5ldyBVaW50MTZBcnJheShlLGksbiksaSs9bioyLGl9fTtFWnQ9V2koZlp0KX0pO3ZhciBfWnQsUFIsRDg9UygoKT0+e19adD17VktfRk9STUFUX1VOREVGSU5FRDowLFZLX0ZPUk1BVF9SNEc0X1VOT1JNX1BBQ0s4OjEsVktfRk9STUFUX1I0RzRCNEE0X1VOT1JNX1BBQ0sxNjoyLFZLX0ZPUk1BVF9CNEc0UjRBNF9VTk9STV9QQUNLMTY6MyxWS19GT1JNQVRfUjVHNkI1X1VOT1JNX1BBQ0sxNjo0LFZLX0ZPUk1BVF9CNUc2UjVfVU5PUk1fUEFDSzE2OjUsVktfRk9STUFUX1I1RzVCNUExX1VOT1JNX1BBQ0sxNjo2LFZLX0ZPUk1BVF9CNUc1UjVBMV9VTk9STV9QQUNLMTY6NyxWS19GT1JNQVRfQTFSNUc1QjVfVU5PUk1fUEFDSzE2OjgsVktfRk9STUFUX1I4X1VOT1JNOjksVktfRk9STUFUX1I4X1NOT1JNOjEwLFZLX0ZPUk1BVF9SOF9VU0NBTEVEOjExLFZLX0ZPUk1BVF9SOF9TU0NBTEVEOjEyLFZLX0ZPUk1BVF9SOF9VSU5UOjEzLFZLX0ZPUk1BVF9SOF9TSU5UOjE0LFZLX0ZPUk1BVF9SOF9TUkdCOjE1LFZLX0ZPUk1BVF9SOEc4X1VOT1JNOjE2LFZLX0ZPUk1BVF9SOEc4X1NOT1JNOjE3LFZLX0ZPUk1BVF9SOEc4X1VTQ0FMRUQ6MTgsVktfRk9STUFUX1I4RzhfU1NDQUxFRDoxOSxWS19GT1JNQVRfUjhHOF9VSU5UOjIwLFZLX0ZPUk1BVF9SOEc4X1NJTlQ6MjEsVktfRk9STUFUX1I4RzhfU1JHQjoyMixWS19GT1JNQVRfUjhHOEI4X1VOT1JNOjIzLFZLX0ZPUk1BVF9SOEc4QjhfU05PUk06MjQsVktfRk9STUFUX1I4RzhCOF9VU0NBTEVEOjI1LFZLX0ZPUk1BVF9SOEc4QjhfU1NDQUxFRDoyNixWS19GT1JNQVRfUjhHOEI4X1VJTlQ6MjcsVktfRk9STUFUX1I4RzhCOF9TSU5UOjI4LFZLX0ZPUk1BVF9SOEc4QjhfU1JHQjoyOSxWS19GT1JNQVRfQjhHOFI4X1VOT1JNOjMwLFZLX0ZPUk1BVF9COEc4UjhfU05PUk06MzEsVktfRk9STUFUX0I4RzhSOF9VU0NBTEVEOjMyLFZLX0ZPUk1BVF9COEc4UjhfU1NDQUxFRDozMyxWS19GT1JNQVRfQjhHOFI4X1VJTlQ6MzQsVktfRk9STUFUX0I4RzhSOF9TSU5UOjM1LFZLX0ZPUk1BVF9COEc4UjhfU1JHQjozNixWS19GT1JNQVRfUjhHOEI4QThfVU5PUk06MzcsVktfRk9STUFUX1I4RzhCOEE4X1NOT1JNOjM4LFZLX0ZPUk1BVF9SOEc4QjhBOF9VU0NBTEVEOjM5LFZLX0ZPUk1BVF9SOEc4QjhBOF9TU0NBTEVEOjQwLFZLX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOjQxLFZLX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOjQyLFZLX0ZPUk1BVF9SOEc4QjhBOF9TUkdCOjQzLFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STTo0NCxWS19GT1JNQVRfQjhHOFI4QThfU05PUk06NDUsVktfRk9STUFUX0I4RzhSOEE4X1VTQ0FMRUQ6NDYsVktfRk9STUFUX0I4RzhSOEE4X1NTQ0FMRUQ6NDcsVktfRk9STUFUX0I4RzhSOEE4X1VJTlQ6NDgsVktfRk9STUFUX0I4RzhSOEE4X1NJTlQ6NDksVktfRk9STUFUX0I4RzhSOEE4X1NSR0I6NTAsVktfRk9STUFUX0E4QjhHOFI4X1VOT1JNX1BBQ0szMjo1MSxWS19GT1JNQVRfQThCOEc4UjhfU05PUk1fUEFDSzMyOjUyLFZLX0ZPUk1BVF9BOEI4RzhSOF9VU0NBTEVEX1BBQ0szMjo1MyxWS19GT1JNQVRfQThCOEc4UjhfU1NDQUxFRF9QQUNLMzI6NTQsVktfRk9STUFUX0E4QjhHOFI4X1VJTlRfUEFDSzMyOjU1LFZLX0ZPUk1BVF9BOEI4RzhSOF9TSU5UX1BBQ0szMjo1NixWS19GT1JNQVRfQThCOEc4UjhfU1JHQl9QQUNLMzI6NTcsVktfRk9STUFUX0EyUjEwRzEwQjEwX1VOT1JNX1BBQ0szMjo1OCxWS19GT1JNQVRfQTJSMTBHMTBCMTBfU05PUk1fUEFDSzMyOjU5LFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9VU0NBTEVEX1BBQ0szMjo2MCxWS19GT1JNQVRfQTJSMTBHMTBCMTBfU1NDQUxFRF9QQUNLMzI6NjEsVktfRk9STUFUX0EyUjEwRzEwQjEwX1VJTlRfUEFDSzMyOjYyLFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9TSU5UX1BBQ0szMjo2MyxWS19GT1JNQVRfQTJCMTBHMTBSMTBfVU5PUk1fUEFDSzMyOjY0LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TTk9STV9QQUNLMzI6NjUsVktfRk9STUFUX0EyQjEwRzEwUjEwX1VTQ0FMRURfUEFDSzMyOjY2LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TU0NBTEVEX1BBQ0szMjo2NyxWS19GT1JNQVRfQTJCMTBHMTBSMTBfVUlOVF9QQUNLMzI6NjgsVktfRk9STUFUX0EyQjEwRzEwUjEwX1NJTlRfUEFDSzMyOjY5LFZLX0ZPUk1BVF9SMTZfVU5PUk06NzAsVktfRk9STUFUX1IxNl9TTk9STTo3MSxWS19GT1JNQVRfUjE2X1VTQ0FMRUQ6NzIsVktfRk9STUFUX1IxNl9TU0NBTEVEOjczLFZLX0ZPUk1BVF9SMTZfVUlOVDo3NCxWS19GT1JNQVRfUjE2X1NJTlQ6NzUsVktfRk9STUFUX1IxNl9TRkxPQVQ6NzYsVktfRk9STUFUX1IxNkcxNl9VTk9STTo3NyxWS19GT1JNQVRfUjE2RzE2X1NOT1JNOjc4LFZLX0ZPUk1BVF9SMTZHMTZfVVNDQUxFRDo3OSxWS19GT1JNQVRfUjE2RzE2X1NTQ0FMRUQ6ODAsVktfRk9STUFUX1IxNkcxNl9VSU5UOjgxLFZLX0ZPUk1BVF9SMTZHMTZfU0lOVDo4MixWS19GT1JNQVRfUjE2RzE2X1NGTE9BVDo4MyxWS19GT1JNQVRfUjE2RzE2QjE2X1VOT1JNOjg0LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU05PUk06ODUsVktfRk9STUFUX1IxNkcxNkIxNl9VU0NBTEVEOjg2LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU1NDQUxFRDo4NyxWS19GT1JNQVRfUjE2RzE2QjE2X1VJTlQ6ODgsVktfRk9STUFUX1IxNkcxNkIxNl9TSU5UOjg5LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU0ZMT0FUOjkwLFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06OTEsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STTo5MixWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VTQ0FMRUQ6OTMsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TU0NBTEVEOjk0LFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDo5NSxWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6OTYsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQ6OTcsVktfRk9STUFUX1IzMl9VSU5UOjk4LFZLX0ZPUk1BVF9SMzJfU0lOVDo5OSxWS19GT1JNQVRfUjMyX1NGTE9BVDoxMDAsVktfRk9STUFUX1IzMkczMl9VSU5UOjEwMSxWS19GT1JNQVRfUjMyRzMyX1NJTlQ6MTAyLFZLX0ZPUk1BVF9SMzJHMzJfU0ZMT0FUOjEwMyxWS19GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6MTA0LFZLX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoxMDUsVktfRk9STUFUX1IzMkczMkIzMl9TRkxPQVQ6MTA2LFZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoxMDcsVktfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOjEwOCxWS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVDoxMDksVktfRk9STUFUX1I2NF9VSU5UOjExMCxWS19GT1JNQVRfUjY0X1NJTlQ6MTExLFZLX0ZPUk1BVF9SNjRfU0ZMT0FUOjExMixWS19GT1JNQVRfUjY0RzY0X1VJTlQ6MTEzLFZLX0ZPUk1BVF9SNjRHNjRfU0lOVDoxMTQsVktfRk9STUFUX1I2NEc2NF9TRkxPQVQ6MTE1LFZLX0ZPUk1BVF9SNjRHNjRCNjRfVUlOVDoxMTYsVktfRk9STUFUX1I2NEc2NEI2NF9TSU5UOjExNyxWS19GT1JNQVRfUjY0RzY0QjY0X1NGTE9BVDoxMTgsVktfRk9STUFUX1I2NEc2NEI2NEE2NF9VSU5UOjExOSxWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1NJTlQ6MTIwLFZLX0ZPUk1BVF9SNjRHNjRCNjRBNjRfU0ZMT0FUOjEyMSxWS19GT1JNQVRfQjEwRzExUjExX1VGTE9BVF9QQUNLMzI6MTIyLFZLX0ZPUk1BVF9FNUI5RzlSOV9VRkxPQVRfUEFDSzMyOjEyMyxWS19GT1JNQVRfRDE2X1VOT1JNOjEyNCxWS19GT1JNQVRfWDhfRDI0X1VOT1JNX1BBQ0szMjoxMjUsVktfRk9STUFUX0QzMl9TRkxPQVQ6MTI2LFZLX0ZPUk1BVF9TOF9VSU5UOjEyNyxWS19GT1JNQVRfRDE2X1VOT1JNX1M4X1VJTlQ6MTI4LFZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoxMjksVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVDoxMzAsVktfRk9STUFUX0JDMV9SR0JfVU5PUk1fQkxPQ0s6MTMxLFZLX0ZPUk1BVF9CQzFfUkdCX1NSR0JfQkxPQ0s6MTMyLFZLX0ZPUk1BVF9CQzFfUkdCQV9VTk9STV9CTE9DSzoxMzMsVktfRk9STUFUX0JDMV9SR0JBX1NSR0JfQkxPQ0s6MTM0LFZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0s6MTM1LFZLX0ZPUk1BVF9CQzJfU1JHQl9CTE9DSzoxMzYsVktfRk9STUFUX0JDM19VTk9STV9CTE9DSzoxMzcsVktfRk9STUFUX0JDM19TUkdCX0JMT0NLOjEzOCxWS19GT1JNQVRfQkM0X1VOT1JNX0JMT0NLOjEzOSxWS19GT1JNQVRfQkM0X1NOT1JNX0JMT0NLOjE0MCxWS19GT1JNQVRfQkM1X1VOT1JNX0JMT0NLOjE0MSxWS19GT1JNQVRfQkM1X1NOT1JNX0JMT0NLOjE0MixWS19GT1JNQVRfQkM2SF9VRkxPQVRfQkxPQ0s6MTQzLFZLX0ZPUk1BVF9CQzZIX1NGTE9BVF9CTE9DSzoxNDQsVktfRk9STUFUX0JDN19VTk9STV9CTE9DSzoxNDUsVktfRk9STUFUX0JDN19TUkdCX0JMT0NLOjE0NixWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0s6MTQ3LFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLOjE0OCxWS19GT1JNQVRfRVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSzoxNDksVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSzoxNTAsVktfRk9STUFUX0VUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0s6MTUxLFZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0s6MTUyLFZLX0ZPUk1BVF9FQUNfUjExX1VOT1JNX0JMT0NLOjE1MyxWS19GT1JNQVRfRUFDX1IxMV9TTk9STV9CTE9DSzoxNTQsVktfRk9STUFUX0VBQ19SMTFHMTFfVU5PUk1fQkxPQ0s6MTU1LFZLX0ZPUk1BVF9FQUNfUjExRzExX1NOT1JNX0JMT0NLOjE1NixWS19GT1JNQVRfQVNUQ180eDRfVU5PUk1fQkxPQ0s6MTU3LFZLX0ZPUk1BVF9BU1RDXzR4NF9TUkdCX0JMT0NLOjE1OCxWS19GT1JNQVRfQVNUQ181eDRfVU5PUk1fQkxPQ0s6MTU5LFZLX0ZPUk1BVF9BU1RDXzV4NF9TUkdCX0JMT0NLOjE2MCxWS19GT1JNQVRfQVNUQ181eDVfVU5PUk1fQkxPQ0s6MTYxLFZLX0ZPUk1BVF9BU1RDXzV4NV9TUkdCX0JMT0NLOjE2MixWS19GT1JNQVRfQVNUQ182eDVfVU5PUk1fQkxPQ0s6MTYzLFZLX0ZPUk1BVF9BU1RDXzZ4NV9TUkdCX0JMT0NLOjE2NCxWS19GT1JNQVRfQVNUQ182eDZfVU5PUk1fQkxPQ0s6MTY1LFZLX0ZPUk1BVF9BU1RDXzZ4Nl9TUkdCX0JMT0NLOjE2NixWS19GT1JNQVRfQVNUQ184eDVfVU5PUk1fQkxPQ0s6MTY3LFZLX0ZPUk1BVF9BU1RDXzh4NV9TUkdCX0JMT0NLOjE2OCxWS19GT1JNQVRfQVNUQ184eDZfVU5PUk1fQkxPQ0s6MTY5LFZLX0ZPUk1BVF9BU1RDXzh4Nl9TUkdCX0JMT0NLOjE3MCxWS19GT1JNQVRfQVNUQ184eDhfVU5PUk1fQkxPQ0s6MTcxLFZLX0ZPUk1BVF9BU1RDXzh4OF9TUkdCX0JMT0NLOjE3MixWS19GT1JNQVRfQVNUQ18xMHg1X1VOT1JNX0JMT0NLOjE3MyxWS19GT1JNQVRfQVNUQ18xMHg1X1NSR0JfQkxPQ0s6MTc0LFZLX0ZPUk1BVF9BU1RDXzEweDZfVU5PUk1fQkxPQ0s6MTc1LFZLX0ZPUk1BVF9BU1RDXzEweDZfU1JHQl9CTE9DSzoxNzYsVktfRk9STUFUX0FTVENfMTB4OF9VTk9STV9CTE9DSzoxNzcsVktfRk9STUFUX0FTVENfMTB4OF9TUkdCX0JMT0NLOjE3OCxWS19GT1JNQVRfQVNUQ18xMHgxMF9VTk9STV9CTE9DSzoxNzksVktfRk9STUFUX0FTVENfMTB4MTBfU1JHQl9CTE9DSzoxODAsVktfRk9STUFUX0FTVENfMTJ4MTBfVU5PUk1fQkxPQ0s6MTgxLFZLX0ZPUk1BVF9BU1RDXzEyeDEwX1NSR0JfQkxPQ0s6MTgyLFZLX0ZPUk1BVF9BU1RDXzEyeDEyX1VOT1JNX0JMT0NLOjE4MyxWS19GT1JNQVRfQVNUQ18xMngxMl9TUkdCX0JMT0NLOjE4NCxWS19GT1JNQVRfRzhCOEc4UjhfNDIyX1VOT1JNOjEwMDAxNTZlMyxWS19GT1JNQVRfQjhHOFI4RzhfNDIyX1VOT1JNOjEwMDAxNTYwMDEsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjBfVU5PUk06MTAwMDE1NjAwMixWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIwX1VOT1JNOjEwMDAxNTYwMDMsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjJfVU5PUk06MTAwMDE1NjAwNCxWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIyX1VOT1JNOjEwMDAxNTYwMDUsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80NDRfVU5PUk06MTAwMDE1NjAwNixWS19GT1JNQVRfUjEwWDZfVU5PUk1fUEFDSzE2OjEwMDAxNTYwMDcsVktfRk9STUFUX1IxMFg2RzEwWDZfVU5PUk1fMlBBQ0sxNjoxMDAwMTU2MDA4LFZLX0ZPUk1BVF9SMTBYNkcxMFg2QjEwWDZBMTBYNl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMDksVktfRk9STUFUX0cxMFg2QjEwWDZHMTBYNlIxMFg2XzQyMl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMTAsVktfRk9STUFUX0IxMFg2RzEwWDZSMTBYNkcxMFg2XzQyMl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMTEsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80MjBfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDEyLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDEzLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNl9SMTBYNl8zUExBTkVfNDIyX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxNCxWS19GT1JNQVRfRzEwWDZfQjEwWDZSMTBYNl8yUExBTkVfNDIyX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxNSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMTYsVktfRk9STUFUX1IxMlg0X1VOT1JNX1BBQ0sxNjoxMDAwMTU2MDE3LFZLX0ZPUk1BVF9SMTJYNEcxMlg0X1VOT1JNXzJQQUNLMTY6MTAwMDE1NjAxOCxWS19GT1JNQVRfUjEyWDRHMTJYNEIxMlg0QTEyWDRfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDE5LFZLX0ZPUk1BVF9HMTJYNEIxMlg0RzEyWDRSMTJYNF80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDIwLFZLX0ZPUk1BVF9CMTJYNEcxMlg0UjEyWDRHMTJYNF80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDIxLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyMixWS19GT1JNQVRfRzEyWDRfQjEyWDRSMTJYNF8yUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyMyxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjQsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjUsVktfRk9STUFUX0cxMlg0X0IxMlg0X1IxMlg0XzNQTEFORV80NDRfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDI2LFZLX0ZPUk1BVF9HMTZCMTZHMTZSMTZfNDIyX1VOT1JNOjEwMDAxNTYwMjcsVktfRk9STUFUX0IxNkcxNlIxNkcxNl80MjJfVU5PUk06MTAwMDE1NjAyOCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMF9VTk9STToxMDAwMTU2MDI5LFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjBfVU5PUk06MTAwMDE1NjAzMCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMl9VTk9STToxMDAwMTU2MDMxLFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjJfVU5PUk06MTAwMDE1NjAzMixWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQ0NF9VTk9STToxMDAwMTU2MDMzLFZLX0ZPUk1BVF9QVlJUQzFfMkJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NGUzLFZLX0ZPUk1BVF9QVlJUQzFfNEJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NDAwMSxWS19GT1JNQVRfUFZSVEMyXzJCUFBfVU5PUk1fQkxPQ0tfSU1HOjEwMDAwNTQwMDIsVktfRk9STUFUX1BWUlRDMl80QlBQX1VOT1JNX0JMT0NLX0lNRzoxMDAwMDU0MDAzLFZLX0ZPUk1BVF9QVlJUQzFfMkJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA0LFZLX0ZPUk1BVF9QVlJUQzFfNEJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA1LFZLX0ZPUk1BVF9QVlJUQzJfMkJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA2LFZLX0ZPUk1BVF9QVlJUQzJfNEJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA3LFZLX0ZPUk1BVF9BU1RDXzR4NF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjZlMyxWS19GT1JNQVRfQVNUQ181eDRfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDAxLFZLX0ZPUk1BVF9BU1RDXzV4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDIsVktfRk9STUFUX0FTVENfNng1X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwMyxWS19GT1JNQVRfQVNUQ182eDZfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA0LFZLX0ZPUk1BVF9BU1RDXzh4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDUsVktfRk9STUFUX0FTVENfOHg2X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwNixWS19GT1JNQVRfQVNUQ184eDhfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA3LFZLX0ZPUk1BVF9BU1RDXzEweDVfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA4LFZLX0ZPUk1BVF9BU1RDXzEweDZfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA5LFZLX0ZPUk1BVF9BU1RDXzEweDhfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEwLFZLX0ZPUk1BVF9BU1RDXzEweDEwX1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAxMSxWS19GT1JNQVRfQVNUQ18xMngxMF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMTIsVktfRk9STUFUX0FTVENfMTJ4MTJfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEzLFZLX0ZPUk1BVF9HOEI4RzhSOF80MjJfVU5PUk1fS0hSOjEwMDAxNTZlMyxWS19GT1JNQVRfQjhHOFI4RzhfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDAxLFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDIwX1VOT1JNX0tIUjoxMDAwMTU2MDAyLFZLX0ZPUk1BVF9HOF9COFI4XzJQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMDMsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMDQsVktfRk9STUFUX0c4X0I4UjhfMlBMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAwNSxWS19GT1JNQVRfRzhfQjhfUjhfM1BMQU5FXzQ0NF9VTk9STV9LSFI6MTAwMDE1NjAwNixWS19GT1JNQVRfUjEwWDZfVU5PUk1fUEFDSzE2X0tIUjoxMDAwMTU2MDA3LFZLX0ZPUk1BVF9SMTBYNkcxMFg2X1VOT1JNXzJQQUNLMTZfS0hSOjEwMDAxNTYwMDgsVktfRk9STUFUX1IxMFg2RzEwWDZCMTBYNkExMFg2X1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMDksVktfRk9STUFUX0cxMFg2QjEwWDZHMTBYNlIxMFg2XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDEwLFZLX0ZPUk1BVF9CMTBYNkcxMFg2UjEwWDZHMTBYNl80MjJfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxMSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDEyLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxMyxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDE0LFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjJfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxNSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDE2LFZLX0ZPUk1BVF9SMTJYNF9VTk9STV9QQUNLMTZfS0hSOjEwMDAxNTYwMTcsVktfRk9STUFUX1IxMlg0RzEyWDRfVU5PUk1fMlBBQ0sxNl9LSFI6MTAwMDE1NjAxOCxWS19GT1JNQVRfUjEyWDRHMTJYNEIxMlg0QTEyWDRfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxOSxWS19GT1JNQVRfRzEyWDRCMTJYNEcxMlg0UjEyWDRfNDIyX1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMjAsVktfRk9STUFUX0IxMlg0RzEyWDRSMTJYNEcxMlg0XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDIxLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjIsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDIzLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIyX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjQsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDI1LFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDQ0X1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjYsVktfRk9STUFUX0cxNkIxNkcxNlIxNl80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMjcsVktfRk9STUFUX0IxNkcxNlIxNkcxNl80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMjgsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMjksVktfRk9STUFUX0cxNl9CMTZSMTZfMlBMQU5FXzQyMF9VTk9STV9LSFI6MTAwMDE1NjAzMCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAzMSxWS19GT1JNQVRfRzE2X0IxNlIxNl8yUExBTkVfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDMyLFZLX0ZPUk1BVF9HMTZfQjE2X1IxNl8zUExBTkVfNDQ0X1VOT1JNX0tIUjoxMDAwMTU2MDMzfSxQUj1PYmplY3QuZnJlZXplKF9adCl9KTtmdW5jdGlvbiBVOCh0KXtyZXR1cm4gdHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodCk6QnVmZmVyLmZyb20odCkudG9TdHJpbmcoInV0ZjgiKX1mdW5jdGlvbiBNOCh0KXtsZXQgZT1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsUG8ubGVuZ3RoKTtpZihlWzBdIT09UG9bMF18fGVbMV0hPT1Qb1sxXXx8ZVsyXSE9PVBvWzJdfHxlWzNdIT09UG9bM118fGVbNF0hPT1Qb1s0XXx8ZVs1XSE9PVBvWzVdfHxlWzZdIT09UG9bNl18fGVbN10hPT1Qb1s3XXx8ZVs4XSE9PVBvWzhdfHxlWzldIT09UG9bOV18fGVbMTBdIT09UG9bMTBdfHxlWzExXSE9PVBvWzExXSl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgS1RYIDIuMCBpZGVudGlmaWVyLiIpO2xldCBpPW5ldyBGRyxuPTE3KlVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULHM9bmV3IFlkKHQsUG8ubGVuZ3RoLG4sITApO2kudmtGb3JtYXQ9cy5fbmV4dFVpbnQzMigpLGkudHlwZVNpemU9cy5fbmV4dFVpbnQzMigpLGkucGl4ZWxXaWR0aD1zLl9uZXh0VWludDMyKCksaS5waXhlbEhlaWdodD1zLl9uZXh0VWludDMyKCksaS5waXhlbERlcHRoPXMuX25leHRVaW50MzIoKSxpLmxheWVyQ291bnQ9cy5fbmV4dFVpbnQzMigpLGkuZmFjZUNvdW50PXMuX25leHRVaW50MzIoKTtsZXQgbz1zLl9uZXh0VWludDMyKCk7aS5zdXBlcmNvbXByZXNzaW9uU2NoZW1lPXMuX25leHRVaW50MzIoKTtsZXQgcj1zLl9uZXh0VWludDMyKCksYT1zLl9uZXh0VWludDMyKCksaD1zLl9uZXh0VWludDMyKCksQT1zLl9uZXh0VWludDMyKCksZD1zLl9uZXh0VWludDY0KCksZj1zLl9uZXh0VWludDY0KCksRT1vKjMqOCxfPW5ldyBZZCh0LFBvLmxlbmd0aCtuLEUsITApO2ZvcihsZXQgdHQ9MDt0dDxvO3R0KyspaS5sZXZlbHMucHVzaCh7bGV2ZWxEYXRhOm5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCtfLl9uZXh0VWludDY0KCksXy5fbmV4dFVpbnQ2NCgpKSx1bmNvbXByZXNzZWRCeXRlTGVuZ3RoOl8uX25leHRVaW50NjQoKX0pO2xldCBSPW5ldyBZZCh0LHIsYSwhMCksST17dmVuZG9ySWQ6Ui5fc2tpcCg0KS5fbmV4dFVpbnQxNigpLGRlc2NyaXB0b3JUeXBlOlIuX25leHRVaW50MTYoKSx2ZXJzaW9uTnVtYmVyOlIuX25leHRVaW50MTYoKSxkZXNjcmlwdG9yQmxvY2tTaXplOlIuX25leHRVaW50MTYoKSxjb2xvck1vZGVsOlIuX25leHRVaW50OCgpLGNvbG9yUHJpbWFyaWVzOlIuX25leHRVaW50OCgpLHRyYW5zZmVyRnVuY3Rpb246Ui5fbmV4dFVpbnQ4KCksZmxhZ3M6Ui5fbmV4dFVpbnQ4KCksdGV4ZWxCbG9ja0RpbWVuc2lvbjpbUi5fbmV4dFVpbnQ4KCksUi5fbmV4dFVpbnQ4KCksUi5fbmV4dFVpbnQ4KCksUi5fbmV4dFVpbnQ4KCldLGJ5dGVzUGxhbmU6W1IuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpLFIuX25leHRVaW50OCgpXSxzYW1wbGVzOltdfSxUPShJLmRlc2NyaXB0b3JCbG9ja1NpemUvNC02KS80O2ZvcihsZXQgdHQ9MDt0dDxUO3R0Kyspe2xldCBHPXtiaXRPZmZzZXQ6Ui5fbmV4dFVpbnQxNigpLGJpdExlbmd0aDpSLl9uZXh0VWludDgoKSxjaGFubmVsVHlwZTpSLl9uZXh0VWludDgoKSxzYW1wbGVQb3NpdGlvbjpbUi5fbmV4dFVpbnQ4KCksUi5fbmV4dFVpbnQ4KCksUi5fbmV4dFVpbnQ4KCksUi5fbmV4dFVpbnQ4KCldLHNhbXBsZUxvd2VyOi0xLzAsc2FtcGxlVXBwZXI6MS8wfTtHLmNoYW5uZWxUeXBlJjY0PyhHLnNhbXBsZUxvd2VyPVIuX25leHRJbnQzMigpLEcuc2FtcGxlVXBwZXI9Ui5fbmV4dEludDMyKCkpOihHLnNhbXBsZUxvd2VyPVIuX25leHRVaW50MzIoKSxHLnNhbXBsZVVwcGVyPVIuX25leHRVaW50MzIoKSksSS5zYW1wbGVzW3R0XT1HfWkuZGF0YUZvcm1hdERlc2NyaXB0b3IubGVuZ3RoPTAsaS5kYXRhRm9ybWF0RGVzY3JpcHRvci5wdXNoKEkpO2xldCBiPW5ldyBZZCh0LGgsQSwhMCk7Zm9yKDtiLl9vZmZzZXQ8QTspe2xldCB0dD1iLl9uZXh0VWludDMyKCksRz1iLl9zY2FuKHR0KSxJdD1VOChHKTtpZihpLmtleVZhbHVlW0l0XT1iLl9uZXh0VWludDhBcnJheSh0dC1HLmJ5dGVMZW5ndGgtMSksSXQubWF0Y2goL15rdHgvaSkpe2xldCBZdD1VOChpLmtleVZhbHVlW0l0XSk7aS5rZXlWYWx1ZVtJdF09WXQuc3Vic3RyaW5nKDAsWXQubGFzdEluZGV4T2YoIlwwIikpfWxldCBndD10dCU0PzQtdHQlNDowO2IuX3NraXAoZ3QpfWlmKGY8PTApcmV0dXJuIGk7bGV0IEY9bmV3IFlkKHQsZCxmLCEwKSxCPUYuX25leHRVaW50MTYoKSxVPUYuX25leHRVaW50MTYoKSxRPUYuX25leHRVaW50MzIoKSxNPUYuX25leHRVaW50MzIoKSxrPUYuX25leHRVaW50MzIoKSx5PUYuX25leHRVaW50MzIoKSxjPVtdO2ZvcihsZXQgdHQ9MDt0dDxvO3R0KyspYy5wdXNoKHtpbWFnZUZsYWdzOkYuX25leHRVaW50MzIoKSxyZ2JTbGljZUJ5dGVPZmZzZXQ6Ri5fbmV4dFVpbnQzMigpLHJnYlNsaWNlQnl0ZUxlbmd0aDpGLl9uZXh0VWludDMyKCksYWxwaGFTbGljZUJ5dGVPZmZzZXQ6Ri5fbmV4dFVpbnQzMigpLGFscGhhU2xpY2VCeXRlTGVuZ3RoOkYuX25leHRVaW50MzIoKX0pO2xldCBnPWQrRi5fb2Zmc2V0LE89ZytRLEQ9TytNLHc9RCtrLHg9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K2csUSksSD1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQrTyxNKSxqPW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCtELGspLFg9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K3cseSk7cmV0dXJuIGkuZ2xvYmFsRGF0YT17ZW5kcG9pbnRDb3VudDpCLHNlbGVjdG9yQ291bnQ6VSxpbWFnZURlc2NzOmMsZW5kcG9pbnRzRGF0YTp4LHNlbGVjdG9yc0RhdGE6SCx0YWJsZXNEYXRhOmosZXh0ZW5kZWREYXRhOlh9LGl9dmFyIEZHLFlkLGZPZSxQbyxROD1TKCgpPT57Rkc9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnZrRm9ybWF0PTAsdGhpcy50eXBlU2l6ZT0xLHRoaXMucGl4ZWxXaWR0aD0wLHRoaXMucGl4ZWxIZWlnaHQ9MCx0aGlzLnBpeGVsRGVwdGg9MCx0aGlzLmxheWVyQ291bnQ9MCx0aGlzLmZhY2VDb3VudD0xLHRoaXMuc3VwZXJjb21wcmVzc2lvblNjaGVtZT0wLHRoaXMubGV2ZWxzPVtdLHRoaXMuZGF0YUZvcm1hdERlc2NyaXB0b3I9W3t2ZW5kb3JJZDowLGRlc2NyaXB0b3JUeXBlOjAsZGVzY3JpcHRvckJsb2NrU2l6ZTowLHZlcnNpb25OdW1iZXI6Mixjb2xvck1vZGVsOjAsY29sb3JQcmltYXJpZXM6MSx0cmFuc2ZlckZ1bmN0aW9uOjIsZmxhZ3M6MCx0ZXhlbEJsb2NrRGltZW5zaW9uOlswLDAsMCwwXSxieXRlc1BsYW5lOlswLDAsMCwwLDAsMCwwLDBdLHNhbXBsZXM6W119XSx0aGlzLmtleVZhbHVlPXt9LHRoaXMuZ2xvYmFsRGF0YT1udWxsfX0sWWQ9Y2xhc3N7Y29uc3RydWN0b3IoZSxpLG4scyl7dGhpcy5fZGF0YVZpZXc9dm9pZCAwLHRoaXMuX2xpdHRsZUVuZGlhbj12b2lkIDAsdGhpcy5fb2Zmc2V0PXZvaWQgMCx0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0K2ksbiksdGhpcy5fbGl0dGxlRW5kaWFuPXMsdGhpcy5fb2Zmc2V0PTB9X25leHRVaW50OCgpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQ4KHRoaXMuX29mZnNldCk7cmV0dXJuIHRoaXMuX29mZnNldCs9MSxlfV9uZXh0VWludDE2KCl7bGV0IGU9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDE2KHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pO3JldHVybiB0aGlzLl9vZmZzZXQrPTIsZX1fbmV4dFVpbnQzMigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQzMih0aGlzLl9vZmZzZXQsdGhpcy5fbGl0dGxlRW5kaWFuKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz00LGV9X25leHRVaW50NjQoKXtsZXQgZT10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0LHRoaXMuX2xpdHRsZUVuZGlhbiksaT10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0KzQsdGhpcy5fbGl0dGxlRW5kaWFuKSxuPWUrMioqMzIqaTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz04LG59X25leHRJbnQzMigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldEludDMyKHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pO3JldHVybiB0aGlzLl9vZmZzZXQrPTQsZX1fbmV4dFVpbnQ4QXJyYXkoZSl7bGV0IGk9bmV3IFVpbnQ4QXJyYXkodGhpcy5fZGF0YVZpZXcuYnVmZmVyLHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQrdGhpcy5fb2Zmc2V0LGUpO3JldHVybiB0aGlzLl9vZmZzZXQrPWUsaX1fc2tpcChlKXtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz1lLHRoaXN9X3NjYW4oZSxpPTApe2xldCBuPXRoaXMuX29mZnNldCxzPTA7Zm9yKDt0aGlzLl9kYXRhVmlldy5nZXRVaW50OCh0aGlzLl9vZmZzZXQpIT09aSYmczxlOylzKyssdGhpcy5fb2Zmc2V0Kys7cmV0dXJuIHM8ZSYmdGhpcy5fb2Zmc2V0KyssbmV3IFVpbnQ4QXJyYXkodGhpcy5fZGF0YVZpZXcuYnVmZmVyLHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQrbixzKX19LGZPZT1uZXcgVWludDhBcnJheShbMF0pLFBvPVsxNzEsNzUsODQsODgsMzIsNTAsNDgsMTg3LDEzLDEwLDI2LDEwXX0pO3ZhciBrOD10cygoSGcsWUcpPT57dmFyIGJHPWZ1bmN0aW9uKCl7dmFyIHQ9dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7cmV0dXJuIHR5cGVvZiBfX2ZpbGVuYW1lPCJ1IiYmKHQ9dHx8X19maWxlbmFtZSksZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgaT10eXBlb2YgZTwidSI/ZTp7fSxuLHM7aS5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihKLHYpe249SixzPXZ9KTt2YXIgbz17fSxyO2ZvcihyIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShyKSYmKG9bcl09aVtyXSk7dmFyIGE9W10saD0iLi90aGlzLnByb2dyYW0iLEE9ZnVuY3Rpb24oSix2KXt0aHJvdyB2fSxkPSExLGY9ITEsRT0hMSxfPSExO2Q9dHlwZW9mIHdpbmRvdz09Im9iamVjdCIsZj10eXBlb2YgaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIixFPXR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT0ic3RyaW5nIixfPSFkJiYhRSYmIWY7dmFyIFI9IiI7ZnVuY3Rpb24gSShKKXtyZXR1cm4gaS5sb2NhdGVGaWxlP2kubG9jYXRlRmlsZShKLFIpOlIrSn12YXIgQyxOLFQsYixGLEI7RT8oZj9SPVhvKCJwYXRoIikuZGlybmFtZShSKSsiLyI6Uj1fX2Rpcm5hbWUrIi8iLEM9ZnVuY3Rpb24odixzdCl7cmV0dXJuIEZ8fChGPVhvKCJmcyIpKSxCfHwoQj1YbygicGF0aCIpKSx2PUIubm9ybWFsaXplKHYpLEYucmVhZEZpbGVTeW5jKHYsc3Q/bnVsbDoidXRmOCIpfSxUPWZ1bmN0aW9uKHYpe3ZhciBzdD1DKHYsITApO3JldHVybiBzdC5idWZmZXJ8fChzdD1uZXcgVWludDhBcnJheShzdCkpLHcoc3QuYnVmZmVyKSxzdH0scHJvY2Vzcy5hcmd2Lmxlbmd0aD4xJiYoaD1wcm9jZXNzLmFyZ3ZbMV0ucmVwbGFjZSgvXFwvZywiLyIpKSxhPXByb2Nlc3MuYXJndi5zbGljZSgyKSxwcm9jZXNzLm9uKCJ1bmNhdWdodEV4Y2VwdGlvbiIsZnVuY3Rpb24oSil7aWYoIShKIGluc3RhbmNlb2YgX2EpKXRocm93IEp9KSxwcm9jZXNzLm9uKCJ1bmhhbmRsZWRSZWplY3Rpb24iLGtpKSxBPWZ1bmN0aW9uKEope3Byb2Nlc3MuZXhpdChKKX0saS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn0pOl8/KHR5cGVvZiByZWFkPCJ1IiYmKEM9ZnVuY3Rpb24odil7cmV0dXJuIHJlYWQodil9KSxUPWZ1bmN0aW9uKHYpe3ZhciBzdDtyZXR1cm4gdHlwZW9mIHJlYWRidWZmZXI9PSJmdW5jdGlvbiI/bmV3IFVpbnQ4QXJyYXkocmVhZGJ1ZmZlcih2KSk6KHN0PXJlYWQodiwiYmluYXJ5Iiksdyh0eXBlb2Ygc3Q9PSJvYmplY3QiKSxzdCl9LHR5cGVvZiBzY3JpcHRBcmdzPCJ1Ij9hPXNjcmlwdEFyZ3M6dHlwZW9mIGFyZ3VtZW50czwidSImJihhPWFyZ3VtZW50cyksdHlwZW9mIHF1aXQ9PSJmdW5jdGlvbiImJihBPWZ1bmN0aW9uKEope3F1aXQoSil9KSx0eXBlb2YgcHJpbnQ8InUiJiYodHlwZW9mIGNvbnNvbGU+InUiJiYoY29uc29sZT17fSksY29uc29sZS5sb2c9cHJpbnQsY29uc29sZS53YXJuPWNvbnNvbGUuZXJyb3I9dHlwZW9mIHByaW50RXJyPCJ1Ij9wcmludEVycjpwcmludCkpOihkfHxmKSYmKGY/Uj1zZWxmLmxvY2F0aW9uLmhyZWY6dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKFI9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHQmJihSPXQpLFIuaW5kZXhPZigiYmxvYjoiKSE9PTA/Uj1SLnN1YnN0cigwLFIubGFzdEluZGV4T2YoIi8iKSsxKTpSPSIiLEM9ZnVuY3Rpb24oSil7dmFyIHY9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiB2Lm9wZW4oIkdFVCIsSiwhMSksdi5zZW5kKG51bGwpLHYucmVzcG9uc2VUZXh0fSxmJiYoVD1mdW5jdGlvbihKKXt2YXIgdj1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHYub3BlbigiR0VUIixKLCExKSx2LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLHYuc2VuZChudWxsKSxuZXcgVWludDhBcnJheSh2LnJlc3BvbnNlKX0pLE49ZnVuY3Rpb24oSix2LHN0KXt2YXIgUnQ9bmV3IFhNTEh0dHBSZXF1ZXN0O1J0Lm9wZW4oIkdFVCIsSiwhMCksUnQucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsUnQub25sb2FkPWZ1bmN0aW9uKCl7aWYoUnQuc3RhdHVzPT0yMDB8fFJ0LnN0YXR1cz09MCYmUnQucmVzcG9uc2Upe3YoUnQucmVzcG9uc2UpO3JldHVybn1zdCgpfSxSdC5vbmVycm9yPXN0LFJ0LnNlbmQobnVsbCl9LGI9ZnVuY3Rpb24oSil7ZG9jdW1lbnQudGl0bGU9Sn0pO3ZhciBVPWkucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksUT1pLnByaW50RXJyfHxjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtmb3IociBpbiBvKW8uaGFzT3duUHJvcGVydHkocikmJihpW3JdPW9bcl0pO289bnVsbCxpLmFyZ3VtZW50cyYmKGE9aS5hcmd1bWVudHMpLGkudGhpc1Byb2dyYW0mJihoPWkudGhpc1Byb2dyYW0pLGkucXVpdCYmKEE9aS5xdWl0KTt2YXIgTT0wLGs9ZnVuY3Rpb24oSil7TT1KfSx5O2kud2FzbUJpbmFyeSYmKHk9aS53YXNtQmluYXJ5KTt2YXIgYz1pLm5vRXhpdFJ1bnRpbWV8fCEwO3R5cGVvZiBXZWJBc3NlbWJseSE9Im9iamVjdCImJmtpKCJubyBuYXRpdmUgd2FzbSBzdXBwb3J0IGRldGVjdGVkIik7dmFyIGcsTz0hMSxEO2Z1bmN0aW9uIHcoSix2KXtKfHxraSgiQXNzZXJ0aW9uIGZhaWxlZDogIit2KX12YXIgeD10eXBlb2YgVGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMDtmdW5jdGlvbiBIKEosdixzdCl7Zm9yKHZhciBSdD12K3N0LFZ0PXY7SltWdF0mJiEoVnQ+PVJ0KTspKytWdDtpZihWdC12PjE2JiZKLnN1YmFycmF5JiZ4KXJldHVybiB4LmRlY29kZShKLnN1YmFycmF5KHYsVnQpKTtmb3IodmFyIEJ0PSIiO3Y8VnQ7KXt2YXIganQ9Slt2KytdO2lmKCEoanQmMTI4KSl7QnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoanQpO2NvbnRpbnVlfXZhciBNdD1KW3YrK10mNjM7aWYoKGp0JjIyNCk9PTE5Mil7QnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGp0JjMxKTw8NnxNdCk7Y29udGludWV9dmFyIER0PUpbdisrXSY2MztpZigoanQmMjQwKT09MjI0P2p0PShqdCYxNSk8PDEyfE10PDw2fER0Omp0PShqdCY3KTw8MTh8TXQ8PDEyfER0PDw2fEpbdisrXSY2MyxqdDw2NTUzNilCdCs9U3RyaW5nLmZyb21DaGFyQ29kZShqdCk7ZWxzZXt2YXIgcGU9anQtNjU1MzY7QnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8cGU+PjEwLDU2MzIwfHBlJjEwMjMpfX1yZXR1cm4gQnR9ZnVuY3Rpb24gaihKLHYpe3JldHVybiBKP0goZWUsSix2KToiIn1mdW5jdGlvbiBYKEosdixzdCxSdCl7aWYoIShSdD4wKSlyZXR1cm4gMDtmb3IodmFyIFZ0PXN0LEJ0PXN0K1J0LTEsanQ9MDtqdDxKLmxlbmd0aDsrK2p0KXt2YXIgTXQ9Si5jaGFyQ29kZUF0KGp0KTtpZihNdD49NTUyOTYmJk10PD01NzM0Myl7dmFyIER0PUouY2hhckNvZGVBdCgrK2p0KTtNdD02NTUzNisoKE10JjEwMjMpPDwxMCl8RHQmMTAyM31pZihNdDw9MTI3KXtpZihzdD49QnQpYnJlYWs7dltzdCsrXT1NdH1lbHNlIGlmKE10PD0yMDQ3KXtpZihzdCsxPj1CdClicmVhazt2W3N0KytdPTE5MnxNdD4+Nix2W3N0KytdPTEyOHxNdCY2M31lbHNlIGlmKE10PD02NTUzNSl7aWYoc3QrMj49QnQpYnJlYWs7dltzdCsrXT0yMjR8TXQ+PjEyLHZbc3QrK109MTI4fE10Pj42JjYzLHZbc3QrK109MTI4fE10JjYzfWVsc2V7aWYoc3QrMz49QnQpYnJlYWs7dltzdCsrXT0yNDB8TXQ+PjE4LHZbc3QrK109MTI4fE10Pj4xMiY2Myx2W3N0KytdPTEyOHxNdD4+NiY2Myx2W3N0KytdPTEyOHxNdCY2M319cmV0dXJuIHZbc3RdPTAsc3QtVnR9ZnVuY3Rpb24gdHQoSix2LHN0KXtyZXR1cm4gWChKLGVlLHYsc3QpfWZ1bmN0aW9uIEcoSil7Zm9yKHZhciB2PTAsc3Q9MDtzdDxKLmxlbmd0aDsrK3N0KXt2YXIgUnQ9Si5jaGFyQ29kZUF0KHN0KTtSdD49NTUyOTYmJlJ0PD01NzM0MyYmKFJ0PTY1NTM2KygoUnQmMTAyMyk8PDEwKXxKLmNoYXJDb2RlQXQoKytzdCkmMTAyMyksUnQ8PTEyNz8rK3Y6UnQ8PTIwNDc/dis9MjpSdDw9NjU1MzU/dis9Mzp2Kz00fXJldHVybiB2fXZhciBJdD10eXBlb2YgVGV4dERlY29kZXI8InUiP25ldyBUZXh0RGVjb2RlcigidXRmLTE2bGUiKTp2b2lkIDA7ZnVuY3Rpb24gZ3QoSix2KXtmb3IodmFyIHN0PUosUnQ9c3Q+PjEsVnQ9UnQrdi8yOyEoUnQ+PVZ0KSYmamVbUnRdOykrK1J0O2lmKHN0PVJ0PDwxLHN0LUo+MzImJkl0KXJldHVybiBJdC5kZWNvZGUoZWUuc3ViYXJyYXkoSixzdCkpO2Zvcih2YXIgQnQ9IiIsanQ9MDshKGp0Pj12LzIpOysranQpe3ZhciBNdD1jZVtKK2p0KjI+PjFdO2lmKE10PT0wKWJyZWFrO0J0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKE10KX1yZXR1cm4gQnR9ZnVuY3Rpb24gWXQoSix2LHN0KXtpZihzdD09PXZvaWQgMCYmKHN0PTIxNDc0ODM2NDcpLHN0PDIpcmV0dXJuIDA7c3QtPTI7Zm9yKHZhciBSdD12LFZ0PXN0PEoubGVuZ3RoKjI/c3QvMjpKLmxlbmd0aCxCdD0wO0J0PFZ0OysrQnQpe3ZhciBqdD1KLmNoYXJDb2RlQXQoQnQpO2NlW3Y+PjFdPWp0LHYrPTJ9cmV0dXJuIGNlW3Y+PjFdPTAsdi1SdH1mdW5jdGlvbiBVdChKKXtyZXR1cm4gSi5sZW5ndGgqMn1mdW5jdGlvbiBDdChKLHYpe2Zvcih2YXIgc3Q9MCxSdD0iIjshKHN0Pj12LzQpOyl7dmFyIFZ0PVNlW0orc3QqND4+Ml07aWYoVnQ9PTApYnJlYWs7aWYoKytzdCxWdD49NjU1MzYpe3ZhciBCdD1WdC02NTUzNjtSdCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxCdD4+MTAsNTYzMjB8QnQmMTAyMyl9ZWxzZSBSdCs9U3RyaW5nLmZyb21DaGFyQ29kZShWdCl9cmV0dXJuIFJ0fWZ1bmN0aW9uIHp0KEosdixzdCl7aWYoc3Q9PT12b2lkIDAmJihzdD0yMTQ3NDgzNjQ3KSxzdDw0KXJldHVybiAwO2Zvcih2YXIgUnQ9dixWdD1SdCtzdC00LEJ0PTA7QnQ8Si5sZW5ndGg7KytCdCl7dmFyIGp0PUouY2hhckNvZGVBdChCdCk7aWYoanQ+PTU1Mjk2JiZqdDw9NTczNDMpe3ZhciBNdD1KLmNoYXJDb2RlQXQoKytCdCk7anQ9NjU1MzYrKChqdCYxMDIzKTw8MTApfE10JjEwMjN9aWYoU2Vbdj4+Ml09anQsdis9NCx2KzQ+VnQpYnJlYWt9cmV0dXJuIFNlW3Y+PjJdPTAsdi1SdH1mdW5jdGlvbiBrdChKKXtmb3IodmFyIHY9MCxzdD0wO3N0PEoubGVuZ3RoOysrc3Qpe3ZhciBSdD1KLmNoYXJDb2RlQXQoc3QpO1J0Pj01NTI5NiYmUnQ8PTU3MzQzJiYrK3N0LHYrPTR9cmV0dXJuIHZ9ZnVuY3Rpb24gSnQoSix2KXtyZXR1cm4gSiV2PjAmJihKKz12LUoldiksSn12YXIgV3QsYnQsZWUsY2UsamUsU2UsVWUsTWUsQ2U7ZnVuY3Rpb24gRmUoSil7V3Q9SixpLkhFQVA4PWJ0PW5ldyBJbnQ4QXJyYXkoSiksaS5IRUFQMTY9Y2U9bmV3IEludDE2QXJyYXkoSiksaS5IRUFQMzI9U2U9bmV3IEludDMyQXJyYXkoSiksaS5IRUFQVTg9ZWU9bmV3IFVpbnQ4QXJyYXkoSiksaS5IRUFQVTE2PWplPW5ldyBVaW50MTZBcnJheShKKSxpLkhFQVBVMzI9VWU9bmV3IFVpbnQzMkFycmF5KEopLGkuSEVBUEYzMj1NZT1uZXcgRmxvYXQzMkFycmF5KEopLGkuSEVBUEY2ND1DZT1uZXcgRmxvYXQ2NEFycmF5KEopfXZhciBuaT1pLklOSVRJQUxfTUVNT1JZfHwxNjc3NzIxNix6ZSxCZT1bXSxNaT1bXSxSaT1bXSxzaT1bXSxxZT0hMTtmdW5jdGlvbiBPaSgpe2lmKGkucHJlUnVuKWZvcih0eXBlb2YgaS5wcmVSdW49PSJmdW5jdGlvbiImJihpLnByZVJ1bj1baS5wcmVSdW5dKTtpLnByZVJ1bi5sZW5ndGg7KUdpKGkucHJlUnVuLnNoaWZ0KCkpO2FvKEJlKX1mdW5jdGlvbiBnbigpe3FlPSEwLGFvKE1pKX1mdW5jdGlvbiBEZSgpe2FvKFJpKX1mdW5jdGlvbiBZZSgpe2lmKGkucG9zdFJ1bilmb3IodHlwZW9mIGkucG9zdFJ1bj09ImZ1bmN0aW9uIiYmKGkucG9zdFJ1bj1baS5wb3N0UnVuXSk7aS5wb3N0UnVuLmxlbmd0aDspTmUoaS5wb3N0UnVuLnNoaWZ0KCkpO2FvKHNpKX1mdW5jdGlvbiBHaShKKXtCZS51bnNoaWZ0KEopfWZ1bmN0aW9uIEFuKEope01pLnVuc2hpZnQoSil9ZnVuY3Rpb24gTmUoSil7c2kudW5zaGlmdChKKX12YXIgZWk9MCxfbj1udWxsLGhzPW51bGw7ZnVuY3Rpb24gUWkoSil7ZWkrKyxpLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJmkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhlaSl9ZnVuY3Rpb24gbm4oSil7aWYoZWktLSxpLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJmkubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhlaSksZWk9PTAmJihfbiE9PW51bGwmJihjbGVhckludGVydmFsKF9uKSxfbj1udWxsKSxocykpe3ZhciB2PWhzO2hzPW51bGwsdigpfX1pLnByZWxvYWRlZEltYWdlcz17fSxpLnByZWxvYWRlZEF1ZGlvcz17fTtmdW5jdGlvbiBraShKKXtpLm9uQWJvcnQmJmkub25BYm9ydChKKSxKKz0iIixRKEopLE89ITAsRD0xLEo9ImFib3J0KCIrSisiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iO3ZhciB2PW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoSik7dGhyb3cgcyh2KSx2fWZ1bmN0aW9uIHNuKEosdil7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aD9KLnN0YXJ0c1dpdGgodik6Si5pbmRleE9mKHYpPT09MH12YXIgQ3M9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIGNzKEope3JldHVybiBzbihKLENzKX12YXIgeG49ImZpbGU6Ly8iO2Z1bmN0aW9uIFBuKEope3JldHVybiBzbihKLHhuKX12YXIgQWk9ImJhc2lzX3RyYW5zY29kZXIud2FzbSI7Y3MoQWkpfHwoQWk9SShBaSkpO2Z1bmN0aW9uIENpKEope3RyeXtpZihKPT1BaSYmeSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeSk7aWYoVClyZXR1cm4gVChKKTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCJ9Y2F0Y2godil7a2kodil9fWZ1bmN0aW9uIEpuKCl7aWYoIXkmJihkfHxmKSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhUG4oQWkpKXJldHVybiBmZXRjaChBaSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oSil7aWYoIUoub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitBaSsiJyI7cmV0dXJuIEouYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIENpKEFpKX0pO2lmKE4pcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKEosdil7TihBaSxmdW5jdGlvbihzdCl7SihuZXcgVWludDhBcnJheShzdCkpfSx2KX0pfXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIENpKEFpKX0pfWZ1bmN0aW9uIGxzKCl7dmFyIEo9e2E6Zm19O2Z1bmN0aW9uIHYoanQsTXQpe3ZhciBEdD1qdC5leHBvcnRzO2kuYXNtPUR0LGc9aS5hc20uSyxGZShnLmJ1ZmZlciksemU9aS5hc20uTyxBbihpLmFzbS5MKSxubigid2FzbS1pbnN0YW50aWF0ZSIpfVFpKCJ3YXNtLWluc3RhbnRpYXRlIik7ZnVuY3Rpb24gc3QoanQpe3YoanQuaW5zdGFuY2UpfWZ1bmN0aW9uIFJ0KGp0KXtyZXR1cm4gSm4oKS50aGVuKGZ1bmN0aW9uKE10KXt2YXIgRHQ9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoTXQsSik7cmV0dXJuIER0fSkudGhlbihqdCxmdW5jdGlvbihNdCl7USgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIitNdCksa2koTXQpfSl9ZnVuY3Rpb24gVnQoKXtyZXR1cm4heSYmdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nPT0iZnVuY3Rpb24iJiYhY3MoQWkpJiYhUG4oQWkpJiZ0eXBlb2YgZmV0Y2g9PSJmdW5jdGlvbiI/ZmV0Y2goQWkse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKGp0KXt2YXIgTXQ9V2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoanQsSik7cmV0dXJuIE10LnRoZW4oc3QsZnVuY3Rpb24oRHQpe3JldHVybiBRKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIitEdCksUSgiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKSxSdChzdCl9KX0pOlJ0KHN0KX1pZihpLmluc3RhbnRpYXRlV2FzbSl0cnl7dmFyIEJ0PWkuaW5zdGFudGlhdGVXYXNtKEosdik7cmV0dXJuIEJ0fWNhdGNoKGp0KXtyZXR1cm4gUSgiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitqdCksITF9cmV0dXJuIFZ0KCkuY2F0Y2gocykse319ZnVuY3Rpb24gYW8oSil7Zm9yKDtKLmxlbmd0aD4wOyl7dmFyIHY9Si5zaGlmdCgpO2lmKHR5cGVvZiB2PT0iZnVuY3Rpb24iKXt2KGkpO2NvbnRpbnVlfXZhciBzdD12LmZ1bmM7dHlwZW9mIHN0PT0ibnVtYmVyIj92LmFyZz09PXZvaWQgMD96ZS5nZXQoc3QpKCk6emUuZ2V0KHN0KSh2LmFyZyk6c3Qodi5hcmc9PT12b2lkIDA/bnVsbDp2LmFyZyl9fXZhciBxaT17fTtmdW5jdGlvbiBobihKKXtmb3IoO0oubGVuZ3RoOyl7dmFyIHY9Si5wb3AoKSxzdD1KLnBvcCgpO3N0KHYpfX1mdW5jdGlvbiBqbyhKKXtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoVWVbSj4+Ml0pfXZhciBkcz17fSxvbj17fSx3cz17fSxWbz00OCxicj01NztmdW5jdGlvbiBTbyhKKXtpZihKPT09dm9pZCAwKXJldHVybiJfdW5rbm93biI7Sj1KLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywiJCIpO3ZhciB2PUouY2hhckNvZGVBdCgwKTtyZXR1cm4gdj49Vm8mJnY8PWJyPyJfIitKOkp9ZnVuY3Rpb24gJGUoSix2KXtyZXR1cm4gSj1TbyhKKSxuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIitKK2AoKSB7CiAgICAidXNlIHN0cmljdCI7ICAgIHJldHVybiBib2R5LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cn07CmApKHYpfWZ1bmN0aW9uIGFhKEosdil7dmFyIHN0PSRlKHYsZnVuY3Rpb24oUnQpe3RoaXMubmFtZT12LHRoaXMubWVzc2FnZT1SdDt2YXIgVnQ9bmV3IEVycm9yKFJ0KS5zdGFjaztWdCE9PXZvaWQgMCYmKHRoaXMuc3RhY2s9dGhpcy50b1N0cmluZygpK2AKYCtWdC5yZXBsYWNlKC9eRXJyb3IoOlteXG5dKik/XG4vLCIiKSl9KTtyZXR1cm4gc3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSi5wcm90b3R5cGUpLHN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1zdCxzdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlPT09dm9pZCAwP3RoaXMubmFtZTp0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9LHN0fXZhciBZcj12b2lkIDA7ZnVuY3Rpb24geHMoSil7dGhyb3cgbmV3IFlyKEopfWZ1bmN0aW9uIGdzKEosdixzdCl7Si5mb3JFYWNoKGZ1bmN0aW9uKE10KXt3c1tNdF09dn0pO2Z1bmN0aW9uIFJ0KE10KXt2YXIgRHQ9c3QoTXQpO0R0Lmxlbmd0aCE9PUoubGVuZ3RoJiZ4cygiTWlzbWF0Y2hlZCB0eXBlIGNvbnZlcnRlciBjb3VudCIpO2Zvcih2YXIgcGU9MDtwZTxKLmxlbmd0aDsrK3BlKU9vKEpbcGVdLER0W3BlXSl9dmFyIFZ0PW5ldyBBcnJheSh2Lmxlbmd0aCksQnQ9W10sanQ9MDt2LmZvckVhY2goZnVuY3Rpb24oTXQsRHQpe29uLmhhc093blByb3BlcnR5KE10KT9WdFtEdF09b25bTXRdOihCdC5wdXNoKE10KSxkcy5oYXNPd25Qcm9wZXJ0eShNdCl8fChkc1tNdF09W10pLGRzW010XS5wdXNoKGZ1bmN0aW9uKCl7VnRbRHRdPW9uW010XSwrK2p0LGp0PT09QnQubGVuZ3RoJiZSdChWdCl9KSl9KSxCdC5sZW5ndGg9PT0wJiZSdChWdCl9ZnVuY3Rpb24gVG4oSil7dmFyIHY9cWlbSl07ZGVsZXRlIHFpW0pdO3ZhciBzdD12LnJhd0NvbnN0cnVjdG9yLFJ0PXYucmF3RGVzdHJ1Y3RvcixWdD12LmZpZWxkcyxCdD1WdC5tYXAoZnVuY3Rpb24oanQpe3JldHVybiBqdC5nZXR0ZXJSZXR1cm5UeXBlfSkuY29uY2F0KFZ0Lm1hcChmdW5jdGlvbihqdCl7cmV0dXJuIGp0LnNldHRlckFyZ3VtZW50VHlwZX0pKTtncyhbSl0sQnQsZnVuY3Rpb24oanQpe3ZhciBNdD17fTtyZXR1cm4gVnQuZm9yRWFjaChmdW5jdGlvbihEdCxwZSl7dmFyIEdlPUR0LmZpZWxkTmFtZSxjaT1qdFtwZV0scGk9RHQuZ2V0dGVyLGNuPUR0LmdldHRlckNvbnRleHQsUWU9anRbcGUrVnQubGVuZ3RoXSxYcz1EdC5zZXR0ZXIsem89RHQuc2V0dGVyQ29udGV4dDtNdFtHZV09e3JlYWQ6ZnVuY3Rpb24oVnIpe3JldHVybiBjaS5mcm9tV2lyZVR5cGUocGkoY24sVnIpKX0sd3JpdGU6ZnVuY3Rpb24oVnIsbWwpe3ZhciBSYT1bXTtYcyh6byxWcixRZS50b1dpcmVUeXBlKFJhLG1sKSksaG4oUmEpfX19KSxbe25hbWU6di5uYW1lLGZyb21XaXJlVHlwZTpmdW5jdGlvbihEdCl7dmFyIHBlPXt9O2Zvcih2YXIgR2UgaW4gTXQpcGVbR2VdPU10W0dlXS5yZWFkKER0KTtyZXR1cm4gUnQoRHQpLHBlfSx0b1dpcmVUeXBlOmZ1bmN0aW9uKER0LHBlKXtmb3IodmFyIEdlIGluIE10KWlmKCEoR2UgaW4gcGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ01pc3NpbmcgZmllbGQ6ICAiJytHZSsnIicpO3ZhciBjaT1zdCgpO2ZvcihHZSBpbiBNdClNdFtHZV0ud3JpdGUoY2kscGVbR2VdKTtyZXR1cm4gRHQhPT1udWxsJiZEdC5wdXNoKFJ0LGNpKSxjaX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpqbyxkZXN0cnVjdG9yRnVuY3Rpb246UnR9XX0pfWZ1bmN0aW9uIGhyKEope3N3aXRjaChKKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDg6cmV0dXJuIDM7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIHR5cGUgc2l6ZTogIitKKX19ZnVuY3Rpb24gVWgoKXtmb3IodmFyIEo9bmV3IEFycmF5KDI1Niksdj0wO3Y8MjU2OysrdilKW3ZdPVN0cmluZy5mcm9tQ2hhckNvZGUodik7TWg9Sn12YXIgTWg9dm9pZCAwO2Z1bmN0aW9uIE9uKEope2Zvcih2YXIgdj0iIixzdD1KO2VlW3N0XTspdis9TWhbZWVbc3QrK11dO3JldHVybiB2fXZhciBjcj12b2lkIDA7ZnVuY3Rpb24gSWkoSil7dGhyb3cgbmV3IGNyKEopfWZ1bmN0aW9uIE9vKEosdixzdCl7aWYoc3Q9c3R8fHt9LCEoImFyZ1BhY2tBZHZhbmNlImluIHYpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKTt2YXIgUnQ9di5uYW1lO2lmKEp8fElpKCd0eXBlICInK1J0KyciIG11c3QgaGF2ZSBhIHBvc2l0aXZlIGludGVnZXIgdHlwZWlkIHBvaW50ZXInKSxvbi5oYXNPd25Qcm9wZXJ0eShKKSl7aWYoc3QuaWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9ucylyZXR1cm47SWkoIkNhbm5vdCByZWdpc3RlciB0eXBlICciK1J0KyInIHR3aWNlIil9aWYob25bSl09dixkZWxldGUgd3NbSl0sZHMuaGFzT3duUHJvcGVydHkoSikpe3ZhciBWdD1kc1tKXTtkZWxldGUgZHNbSl0sVnQuZm9yRWFjaChmdW5jdGlvbihCdCl7QnQoKX0pfX1mdW5jdGlvbiBLYyhKLHYsc3QsUnQsVnQpe3ZhciBCdD1ocihzdCk7dj1Pbih2KSxPbyhKLHtuYW1lOnYsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKGp0KXtyZXR1cm4hIWp0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKGp0LE10KXtyZXR1cm4gTXQ/UnQ6VnR9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6ZnVuY3Rpb24oanQpe3ZhciBNdDtpZihzdD09PTEpTXQ9YnQ7ZWxzZSBpZihzdD09PTIpTXQ9Y2U7ZWxzZSBpZihzdD09PTQpTXQ9U2U7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGJvb2xlYW4gdHlwZSBzaXplOiAiK3YpO3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShNdFtqdD4+QnRdKX0sZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBYYyhKKXtpZighKHRoaXMgaW5zdGFuY2VvZiBkcil8fCEoSiBpbnN0YW5jZW9mIGRyKSlyZXR1cm4hMTtmb3IodmFyIHY9dGhpcy4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcyxzdD10aGlzLiQkLnB0cixSdD1KLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFZ0PUouJCQucHRyO3YuYmFzZUNsYXNzOylzdD12LnVwY2FzdChzdCksdj12LmJhc2VDbGFzcztmb3IoO1J0LmJhc2VDbGFzczspVnQ9UnQudXBjYXN0KFZ0KSxSdD1SdC5iYXNlQ2xhc3M7cmV0dXJuIHY9PT1SdCYmc3Q9PT1WdH1mdW5jdGlvbiBxYyhKKXtyZXR1cm57Y291bnQ6Si5jb3VudCxkZWxldGVTY2hlZHVsZWQ6Si5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6Si5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSxwdHI6Si5wdHIscHRyVHlwZTpKLnB0clR5cGUsc21hcnRQdHI6Si5zbWFydFB0cixzbWFydFB0clR5cGU6Si5zbWFydFB0clR5cGV9fWZ1bmN0aW9uIFFoKEope2Z1bmN0aW9uIHYoc3Qpe3JldHVybiBzdC4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5uYW1lfUlpKHYoSikrIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKX12YXIga2g9ITE7ZnVuY3Rpb24gQWEoSil7fWZ1bmN0aW9uIExoKEope0ouc21hcnRQdHI/Si5zbWFydFB0clR5cGUucmF3RGVzdHJ1Y3RvcihKLnNtYXJ0UHRyKTpKLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLnJhd0Rlc3RydWN0b3IoSi5wdHIpfWZ1bmN0aW9uIGhhKEope0ouY291bnQudmFsdWUtPTE7dmFyIHY9Si5jb3VudC52YWx1ZT09PTA7diYmTGgoSil9ZnVuY3Rpb24gS2EoSil7cmV0dXJuIHR5cGVvZiBGaW5hbGl6YXRpb25Hcm91cD4idSI/KEthPWZ1bmN0aW9uKHYpe3JldHVybiB2fSxKKTooa2g9bmV3IEZpbmFsaXphdGlvbkdyb3VwKGZ1bmN0aW9uKHYpe2Zvcih2YXIgc3Q9di5uZXh0KCk7IXN0LmRvbmU7c3Q9di5uZXh0KCkpe3ZhciBSdD1zdC52YWx1ZTtSdC5wdHI/aGEoUnQpOmNvbnNvbGUud2Fybigib2JqZWN0IGFscmVhZHkgZGVsZXRlZDogIitSdC5wdHIpfX0pLEthPWZ1bmN0aW9uKHYpe3JldHVybiBraC5yZWdpc3Rlcih2LHYuJCQsdi4kJCksdn0sQWE9ZnVuY3Rpb24odil7a2gudW5yZWdpc3Rlcih2LiQkKX0sS2EoSikpfWZ1bmN0aW9uIFZkKCl7aWYodGhpcy4kJC5wdHJ8fFFoKHRoaXMpLHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpcmV0dXJuIHRoaXMuJCQuY291bnQudmFsdWUrPTEsdGhpczt2YXIgSj1LYShPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSx7JCQ6e3ZhbHVlOnFjKHRoaXMuJCQpfX0pKTtyZXR1cm4gSi4kJC5jb3VudC52YWx1ZSs9MSxKLiQkLmRlbGV0ZVNjaGVkdWxlZD0hMSxKfWZ1bmN0aW9uIFhhKCl7dGhpcy4kJC5wdHJ8fFFoKHRoaXMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkJiYhdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSYmSWkoIk9iamVjdCBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24iKSxBYSh0aGlzKSxoYSh0aGlzLiQkKSx0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlfHwodGhpcy4kJC5zbWFydFB0cj12b2lkIDAsdGhpcy4kJC5wdHI9dm9pZCAwKX1mdW5jdGlvbiBTZCgpe3JldHVybiF0aGlzLiQkLnB0cn12YXIgcWE9dm9pZCAwLGxyPVtdO2Z1bmN0aW9uIGtBKCl7Zm9yKDtsci5sZW5ndGg7KXt2YXIgSj1sci5wb3AoKTtKLiQkLmRlbGV0ZVNjaGVkdWxlZD0hMSxKLmRlbGV0ZSgpfX1mdW5jdGlvbiAkYSgpe3JldHVybiB0aGlzLiQkLnB0cnx8UWgodGhpcyksdGhpcy4kJC5kZWxldGVTY2hlZHVsZWQmJiF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlJiZJaSgiT2JqZWN0IGFscmVhZHkgc2NoZWR1bGVkIGZvciBkZWxldGlvbiIpLGxyLnB1c2godGhpcyksbHIubGVuZ3RoPT09MSYmcWEmJnFhKGtBKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZD0hMCx0aGlzfWZ1bmN0aW9uIE9kKCl7ZHIucHJvdG90eXBlLmlzQWxpYXNPZj1YYyxkci5wcm90b3R5cGUuY2xvbmU9VmQsZHIucHJvdG90eXBlLmRlbGV0ZT1YYSxkci5wcm90b3R5cGUuaXNEZWxldGVkPVNkLGRyLnByb3RvdHlwZS5kZWxldGVMYXRlcj0kYX1mdW5jdGlvbiBkcigpe312YXIgJGM9e307ZnVuY3Rpb24gdGwoSix2LHN0KXtpZihKW3ZdLm92ZXJsb2FkVGFibGU9PT12b2lkIDApe3ZhciBSdD1KW3ZdO0pbdl09ZnVuY3Rpb24oKXtyZXR1cm4gSlt2XS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpfHxJaSgiRnVuY3Rpb24gJyIrc3QrIicgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzICgiK2FyZ3VtZW50cy5sZW5ndGgrIikgLSBleHBlY3RzIG9uZSBvZiAoIitKW3ZdLm92ZXJsb2FkVGFibGUrIikhIiksSlt2XS5vdmVybG9hZFRhYmxlW2FyZ3VtZW50cy5sZW5ndGhdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sSlt2XS5vdmVybG9hZFRhYmxlPVtdLEpbdl0ub3ZlcmxvYWRUYWJsZVtSdC5hcmdDb3VudF09UnR9fWZ1bmN0aW9uIHloKEosdixzdCl7aS5oYXNPd25Qcm9wZXJ0eShKKT8oKHN0PT09dm9pZCAwfHxpW0pdLm92ZXJsb2FkVGFibGUhPT12b2lkIDAmJmlbSl0ub3ZlcmxvYWRUYWJsZVtzdF0hPT12b2lkIDApJiZJaSgiQ2Fubm90IHJlZ2lzdGVyIHB1YmxpYyBuYW1lICciK0orIicgdHdpY2UiKSx0bChpLEosSiksaS5oYXNPd25Qcm9wZXJ0eShzdCkmJklpKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgb3ZlcmxvYWRzIG9mIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzICgiK3N0KyIpISIpLGlbSl0ub3ZlcmxvYWRUYWJsZVtzdF09dik6KGlbSl09dixzdCE9PXZvaWQgMCYmKGlbSl0ubnVtQXJndW1lbnRzPXN0KSl9ZnVuY3Rpb24gbXIoSix2LHN0LFJ0LFZ0LEJ0LGp0LE10KXt0aGlzLm5hbWU9Six0aGlzLmNvbnN0cnVjdG9yPXYsdGhpcy5pbnN0YW5jZVByb3RvdHlwZT1zdCx0aGlzLnJhd0Rlc3RydWN0b3I9UnQsdGhpcy5iYXNlQ2xhc3M9VnQsdGhpcy5nZXRBY3R1YWxUeXBlPUJ0LHRoaXMudXBjYXN0PWp0LHRoaXMuZG93bmNhc3Q9TXQsdGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiB3aChKLHYsc3Qpe2Zvcig7diE9PXN0Oyl2LnVwY2FzdHx8SWkoIkV4cGVjdGVkIG51bGwgb3IgaW5zdGFuY2Ugb2YgIitzdC5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK3YubmFtZSksSj12LnVwY2FzdChKKSx2PXYuYmFzZUNsYXNzO3JldHVybiBKfWZ1bmN0aW9uIEJkKEosdil7aWYodj09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJklpKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKSwwO3YuJCR8fElpKCdDYW5ub3QgcGFzcyAiJytkYSh2KSsnIiBhcyBhICcrdGhpcy5uYW1lKSx2LiQkLnB0cnx8SWkoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt2YXIgc3Q9di4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcyxSdD13aCh2LiQkLnB0cixzdCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFJ0fWZ1bmN0aW9uIHhoKEosdil7dmFyIHN0O2lmKHY9PT1udWxsKXJldHVybiB0aGlzLmlzUmVmZXJlbmNlJiZJaSgibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSksdGhpcy5pc1NtYXJ0UG9pbnRlcj8oc3Q9dGhpcy5yYXdDb25zdHJ1Y3RvcigpLEohPT1udWxsJiZKLnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLHN0KSxzdCk6MDt2LiQkfHxJaSgnQ2Fubm90IHBhc3MgIicrZGEodikrJyIgYXMgYSAnK3RoaXMubmFtZSksdi4kJC5wdHJ8fElpKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSksIXRoaXMuaXNDb25zdCYmdi4kJC5wdHJUeXBlLmlzQ29uc3QmJklpKCJDYW5ub3QgY29udmVydCBhcmd1bWVudCBvZiB0eXBlICIrKHYuJCQuc21hcnRQdHJUeXBlP3YuJCQuc21hcnRQdHJUeXBlLm5hbWU6di4kJC5wdHJUeXBlLm5hbWUpKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpO3ZhciBSdD12LiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO2lmKHN0PXdoKHYuJCQucHRyLFJ0LHRoaXMucmVnaXN0ZXJlZENsYXNzKSx0aGlzLmlzU21hcnRQb2ludGVyKXN3aXRjaCh2LiQkLnNtYXJ0UHRyPT09dm9pZCAwJiZJaSgiUGFzc2luZyByYXcgcG9pbnRlciB0byBzbWFydCBwb2ludGVyIGlzIGlsbGVnYWwiKSx0aGlzLnNoYXJpbmdQb2xpY3kpe2Nhc2UgMDp2LiQkLnNtYXJ0UHRyVHlwZT09PXRoaXM/c3Q9di4kJC5zbWFydFB0cjpJaSgiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyh2LiQkLnNtYXJ0UHRyVHlwZT92LiQkLnNtYXJ0UHRyVHlwZS5uYW1lOnYuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTticmVhaztjYXNlIDE6c3Q9di4kJC5zbWFydFB0cjticmVhaztjYXNlIDI6aWYodi4kJC5zbWFydFB0clR5cGU9PT10aGlzKXN0PXYuJCQuc21hcnRQdHI7ZWxzZXt2YXIgVnQ9di5jbG9uZSgpO3N0PXRoaXMucmF3U2hhcmUoc3QsaG8oZnVuY3Rpb24oKXtWdC5kZWxldGUoKX0pKSxKIT09bnVsbCYmSi5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixzdCl9YnJlYWs7ZGVmYXVsdDpJaSgiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iil9cmV0dXJuIHN0fWZ1bmN0aW9uIFBoKEosdil7aWYodj09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJklpKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKSwwO3YuJCR8fElpKCdDYW5ub3QgcGFzcyAiJytkYSh2KSsnIiBhcyBhICcrdGhpcy5uYW1lKSx2LiQkLnB0cnx8SWkoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKSx2LiQkLnB0clR5cGUuaXNDb25zdCYmSWkoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIit2LiQkLnB0clR5cGUubmFtZSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt2YXIgc3Q9di4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcyxSdD13aCh2LiQkLnB0cixzdCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFJ0fWZ1bmN0aW9uIGVsKEope3JldHVybiB0aGlzLnJhd0dldFBvaW50ZWUmJihKPXRoaXMucmF3R2V0UG9pbnRlZShKKSksSn1mdW5jdGlvbiBpbChKKXt0aGlzLnJhd0Rlc3RydWN0b3ImJnRoaXMucmF3RGVzdHJ1Y3RvcihKKX1mdW5jdGlvbiBHZChKKXtKIT09bnVsbCYmSi5kZWxldGUoKX1mdW5jdGlvbiB0QShKLHYsc3Qpe2lmKHY9PT1zdClyZXR1cm4gSjtpZihzdC5iYXNlQ2xhc3M9PT12b2lkIDApcmV0dXJuIG51bGw7dmFyIFJ0PXRBKEosdixzdC5iYXNlQ2xhc3MpO3JldHVybiBSdD09PW51bGw/bnVsbDpzdC5kb3duY2FzdChSdCl9ZnVuY3Rpb24gV2QoKXtyZXR1cm4gT2JqZWN0LmtleXMoZUEpLmxlbmd0aH1mdW5jdGlvbiBEZCgpe3ZhciBKPVtdO2Zvcih2YXIgdiBpbiBlQSllQS5oYXNPd25Qcm9wZXJ0eSh2KSYmSi5wdXNoKGVBW3ZdKTtyZXR1cm4gSn1mdW5jdGlvbiBVZChKKXtxYT1KLGxyLmxlbmd0aCYmcWEmJnFhKGtBKX1mdW5jdGlvbiBMQSgpe2kuZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudD1XZCxpLmdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM9RGQsaS5mbHVzaFBlbmRpbmdEZWxldGVzPWtBLGkuc2V0RGVsYXlGdW5jdGlvbj1VZH12YXIgZUE9e307ZnVuY3Rpb24gTWQoSix2KXtmb3Iodj09PXZvaWQgMCYmSWkoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpO0ouYmFzZUNsYXNzOyl2PUoudXBjYXN0KHYpLEo9Si5iYXNlQ2xhc3M7cmV0dXJuIHZ9ZnVuY3Rpb24gUWQoSix2KXtyZXR1cm4gdj1NZChKLHYpLGVBW3ZdfWZ1bmN0aW9uIHlBKEosdil7KCF2LnB0clR5cGV8fCF2LnB0cikmJnhzKCJtYWtlQ2xhc3NIYW5kbGUgcmVxdWlyZXMgcHRyIGFuZCBwdHJUeXBlIik7dmFyIHN0PSEhdi5zbWFydFB0clR5cGUsUnQ9ISF2LnNtYXJ0UHRyO3JldHVybiBzdCE9PVJ0JiZ4cygiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIiksdi5jb3VudD17dmFsdWU6MX0sS2EoT2JqZWN0LmNyZWF0ZShKLHskJDp7dmFsdWU6dn19KSl9ZnVuY3Rpb24gSG8oSil7dmFyIHY9dGhpcy5nZXRQb2ludGVlKEopO2lmKCF2KXJldHVybiB0aGlzLmRlc3RydWN0b3IoSiksbnVsbDt2YXIgc3Q9UWQodGhpcy5yZWdpc3RlcmVkQ2xhc3Msdik7aWYoc3QhPT12b2lkIDApe2lmKHN0LiQkLmNvdW50LnZhbHVlPT09MClyZXR1cm4gc3QuJCQucHRyPXYsc3QuJCQuc21hcnRQdHI9SixzdC5jbG9uZSgpO3ZhciBSdD1zdC5jbG9uZSgpO3JldHVybiB0aGlzLmRlc3RydWN0b3IoSiksUnR9ZnVuY3Rpb24gVnQoKXtyZXR1cm4gdGhpcy5pc1NtYXJ0UG9pbnRlcj95QSh0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0aGlzLnBvaW50ZWVUeXBlLHB0cjp2LHNtYXJ0UHRyVHlwZTp0aGlzLHNtYXJ0UHRyOkp9KTp5QSh0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0aGlzLHB0cjpKfSl9dmFyIEJ0PXRoaXMucmVnaXN0ZXJlZENsYXNzLmdldEFjdHVhbFR5cGUodiksanQ9JGNbQnRdO2lmKCFqdClyZXR1cm4gVnQuY2FsbCh0aGlzKTt2YXIgTXQ7dGhpcy5pc0NvbnN0P010PWp0LmNvbnN0UG9pbnRlclR5cGU6TXQ9anQucG9pbnRlclR5cGU7dmFyIER0PXRBKHYsdGhpcy5yZWdpc3RlcmVkQ2xhc3MsTXQucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gRHQ9PT1udWxsP1Z0LmNhbGwodGhpcyk6dGhpcy5pc1NtYXJ0UG9pbnRlcj95QShNdC5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6TXQscHRyOkR0LHNtYXJ0UHRyVHlwZTp0aGlzLHNtYXJ0UHRyOkp9KTp5QShNdC5yZWdpc3RlcmVkQ2xhc3MuaW5zdGFuY2VQcm90b3R5cGUse3B0clR5cGU6TXQscHRyOkR0fSl9ZnVuY3Rpb24gbmwoKXt2by5wcm90b3R5cGUuZ2V0UG9pbnRlZT1lbCx2by5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1pbCx2by5wcm90b3R5cGUuYXJnUGFja0FkdmFuY2U9OCx2by5wcm90b3R5cGUucmVhZFZhbHVlRnJvbVBvaW50ZXI9am8sdm8ucHJvdG90eXBlLmRlbGV0ZU9iamVjdD1HZCx2by5wcm90b3R5cGUuZnJvbVdpcmVUeXBlPUhvfWZ1bmN0aW9uIHZvKEosdixzdCxSdCxWdCxCdCxqdCxNdCxEdCxwZSxHZSl7dGhpcy5uYW1lPUosdGhpcy5yZWdpc3RlcmVkQ2xhc3M9dix0aGlzLmlzUmVmZXJlbmNlPXN0LHRoaXMuaXNDb25zdD1SdCx0aGlzLmlzU21hcnRQb2ludGVyPVZ0LHRoaXMucG9pbnRlZVR5cGU9QnQsdGhpcy5zaGFyaW5nUG9saWN5PWp0LHRoaXMucmF3R2V0UG9pbnRlZT1NdCx0aGlzLnJhd0NvbnN0cnVjdG9yPUR0LHRoaXMucmF3U2hhcmU9cGUsdGhpcy5yYXdEZXN0cnVjdG9yPUdlLCFWdCYmdi5iYXNlQ2xhc3M9PT12b2lkIDA/UnQ/KHRoaXMudG9XaXJlVHlwZT1CZCx0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsKToodGhpcy50b1dpcmVUeXBlPVBoLHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGwpOnRoaXMudG9XaXJlVHlwZT14aH1mdW5jdGlvbiBpQShKLHYsc3Qpe2kuaGFzT3duUHJvcGVydHkoSil8fHhzKCJSZXBsYWNpbmcgbm9uZXhpc3RhbnQgcHVibGljIHN5bWJvbCIpLGlbSl0ub3ZlcmxvYWRUYWJsZSE9PXZvaWQgMCYmc3QhPT12b2lkIDA/aVtKXS5vdmVybG9hZFRhYmxlW3N0XT12OihpW0pdPXYsaVtKXS5hcmdDb3VudD1zdCl9ZnVuY3Rpb24gSmgoSix2LHN0KXt2YXIgUnQ9aVsiZHluQ2FsbF8iK0pdO3JldHVybiBzdCYmc3QubGVuZ3RoP1J0LmFwcGx5KG51bGwsW3ZdLmNvbmNhdChzdCkpOlJ0LmNhbGwobnVsbCx2KX1mdW5jdGlvbiBrZChKLHYsc3Qpe3JldHVybiBKLmluZGV4T2YoImoiKSE9LTE/SmgoSix2LHN0KTp6ZS5nZXQodikuYXBwbHkobnVsbCxzdCl9ZnVuY3Rpb24gTGQoSix2KXt2YXIgc3Q9W107cmV0dXJuIGZ1bmN0aW9uKCl7c3QubGVuZ3RoPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKHZhciBSdD0wO1J0PGFyZ3VtZW50cy5sZW5ndGg7UnQrKylzdFtSdF09YXJndW1lbnRzW1J0XTtyZXR1cm4ga2QoSix2LHN0KX19ZnVuY3Rpb24gam4oSix2KXtKPU9uKEopO2Z1bmN0aW9uIHN0KCl7cmV0dXJuIEouaW5kZXhPZigiaiIpIT0tMT9MZChKLHYpOnplLmdldCh2KX12YXIgUnQ9c3QoKTtyZXR1cm4gdHlwZW9mIFJ0IT0iZnVuY3Rpb24iJiZJaSgidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrSisiOiAiK3YpLFJ0fXZhciBzbD12b2lkIDA7ZnVuY3Rpb24gamgoSil7dmFyIHY9cHQoSiksc3Q9T24odik7cmV0dXJuIGV0KHYpLHN0fWZ1bmN0aW9uIG5BKEosdil7dmFyIHN0PVtdLFJ0PXt9O2Z1bmN0aW9uIFZ0KEJ0KXtpZighUnRbQnRdJiYhb25bQnRdKXtpZih3c1tCdF0pe3dzW0J0XS5mb3JFYWNoKFZ0KTtyZXR1cm59c3QucHVzaChCdCksUnRbQnRdPSEwfX10aHJvdyB2LmZvckVhY2goVnQpLG5ldyBzbChKKyI6ICIrc3QubWFwKGpoKS5qb2luKFsiLCAiXSkpfWZ1bmN0aW9uIGNhKEosdixzdCxSdCxWdCxCdCxqdCxNdCxEdCxwZSxHZSxjaSxwaSl7R2U9T24oR2UpLEJ0PWpuKFZ0LEJ0KSxNdCYmKE10PWpuKGp0LE10KSkscGUmJihwZT1qbihEdCxwZSkpLHBpPWpuKGNpLHBpKTt2YXIgY249U28oR2UpO3loKGNuLGZ1bmN0aW9uKCl7bkEoIkNhbm5vdCBjb25zdHJ1Y3QgIitHZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbUnRdKX0pLGdzKFtKLHYsc3RdLFJ0P1tSdF06W10sZnVuY3Rpb24oUWUpe1FlPVFlWzBdO3ZhciBYcyx6bztSdD8oWHM9UWUucmVnaXN0ZXJlZENsYXNzLHpvPVhzLmluc3RhbmNlUHJvdG90eXBlKTp6bz1kci5wcm90b3R5cGU7dmFyIFZyPSRlKGNuLGZ1bmN0aW9uKCl7aWYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpIT09bWwpdGhyb3cgbmV3IGNyKCJVc2UgJ25ldycgdG8gY29uc3RydWN0ICIrR2UpO2lmKFJhLmNvbnN0cnVjdG9yX2JvZHk9PT12b2lkIDApdGhyb3cgbmV3IGNyKEdlKyIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKTt2YXIgSFI9UmEuY29uc3RydWN0b3JfYm9keVthcmd1bWVudHMubGVuZ3RoXTtpZihIUj09PXZvaWQgMCl0aHJvdyBuZXcgY3IoIlRyaWVkIHRvIGludm9rZSBjdG9yIG9mICIrR2UrIiB3aXRoIGludmFsaWQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdGVkICgiK09iamVjdC5rZXlzKFJhLmNvbnN0cnVjdG9yX2JvZHkpLnRvU3RyaW5nKCkrIikgcGFyYW1ldGVycyBpbnN0ZWFkISIpO3JldHVybiBIUi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxtbD1PYmplY3QuY3JlYXRlKHpvLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6VnJ9fSk7VnIucHJvdG90eXBlPW1sO3ZhciBSYT1uZXcgbXIoR2UsVnIsbWwscGksWHMsQnQsTXQscGUpLGlFPW5ldyB2byhHZSxSYSwhMCwhMSwhMSksalI9bmV3IHZvKEdlKyIqIixSYSwhMSwhMSwhMSksRW09bmV3IHZvKEdlKyIgY29uc3QqIixSYSwhMSwhMCwhMSk7cmV0dXJuICRjW0pdPXtwb2ludGVyVHlwZTpqUixjb25zdFBvaW50ZXJUeXBlOkVtfSxpQShjbixWciksW2lFLGpSLEVtXX0pfWZ1bmN0aW9uIEhoKEosdil7Zm9yKHZhciBzdD1bXSxSdD0wO1J0PEo7UnQrKylzdC5wdXNoKFNlWyh2Pj4yKStSdF0pO3JldHVybiBzdH1mdW5jdGlvbiB2aChKLHYsc3QsUnQsVnQsQnQpe3codj4wKTt2YXIganQ9SGgodixzdCk7VnQ9am4oUnQsVnQpO3ZhciBNdD1bQnRdLER0PVtdO2dzKFtdLFtKXSxmdW5jdGlvbihwZSl7cGU9cGVbMF07dmFyIEdlPSJjb25zdHJ1Y3RvciAiK3BlLm5hbWU7aWYocGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHk9PT12b2lkIDAmJihwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT1bXSkscGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHlbdi0xXSE9PXZvaWQgMCl0aHJvdyBuZXcgY3IoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMgd2l0aCBpZGVudGljYWwgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCIrKHYtMSkrIikgZm9yIGNsYXNzICciK3BlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpO3JldHVybiBwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVt2LTFdPWZ1bmN0aW9uKCl7bkEoIkNhbm5vdCBjb25zdHJ1Y3QgIitwZS5uYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGp0KX0sZ3MoW10sanQsZnVuY3Rpb24oY2kpe3JldHVybiBwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVt2LTFdPWZ1bmN0aW9uKCl7YXJndW1lbnRzLmxlbmd0aCE9PXYtMSYmSWkoR2UrIiBjYWxsZWQgd2l0aCAiK2FyZ3VtZW50cy5sZW5ndGgrIiBhcmd1bWVudHMsIGV4cGVjdGVkICIrKHYtMSkpLER0Lmxlbmd0aD0wLE10Lmxlbmd0aD12O2Zvcih2YXIgY249MTtjbjx2OysrY24pTXRbY25dPWNpW2NuXS50b1dpcmVUeXBlKER0LGFyZ3VtZW50c1tjbi0xXSk7dmFyIFFlPVZ0LmFwcGx5KG51bGwsTXQpO3JldHVybiBobihEdCksY2lbMF0uZnJvbVdpcmVUeXBlKFFlKX0sW119KSxbXX0pfWZ1bmN0aW9uIHdBKEosdil7aWYoIShKIGluc3RhbmNlb2YgRnVuY3Rpb24pKXRocm93IG5ldyBUeXBlRXJyb3IoIm5ld18gY2FsbGVkIHdpdGggY29uc3RydWN0b3IgdHlwZSAiK3R5cGVvZiBKKyIgd2hpY2ggaXMgbm90IGEgZnVuY3Rpb24iKTt2YXIgc3Q9JGUoSi5uYW1lfHwidW5rbm93bkZ1bmN0aW9uTmFtZSIsZnVuY3Rpb24oKXt9KTtzdC5wcm90b3R5cGU9Si5wcm90b3R5cGU7dmFyIFJ0PW5ldyBzdCxWdD1KLmFwcGx5KFJ0LHYpO3JldHVybiBWdCBpbnN0YW5jZW9mIE9iamVjdD9WdDpSdH1mdW5jdGlvbiBvbChKLHYsc3QsUnQsVnQpe3ZhciBCdD12Lmxlbmd0aDtCdDwyJiZJaSgiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIik7Zm9yKHZhciBqdD12WzFdIT09bnVsbCYmc3QhPT1udWxsLE10PSExLER0PTE7RHQ8di5sZW5ndGg7KytEdClpZih2W0R0XSE9PW51bGwmJnZbRHRdLmRlc3RydWN0b3JGdW5jdGlvbj09PXZvaWQgMCl7TXQ9ITA7YnJlYWt9Zm9yKHZhciBwZT12WzBdLm5hbWUhPT0idm9pZCIsR2U9IiIsY2k9IiIsRHQ9MDtEdDxCdC0yOysrRHQpR2UrPShEdCE9PTA/IiwgIjoiIikrImFyZyIrRHQsY2krPShEdCE9PTA/IiwgIjoiIikrImFyZyIrRHQrIldpcmVkIjt2YXIgcGk9InJldHVybiBmdW5jdGlvbiAiK1NvKEopKyIoIitHZStgKSB7CmlmIChhcmd1bWVudHMubGVuZ3RoICE9PSBgKyhCdC0yKStgKSB7CnRocm93QmluZGluZ0Vycm9yKCdmdW5jdGlvbiBgK0orIiBjYWxsZWQgd2l0aCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhCdC0yKStgIGFyZ3MhJyk7Cn0KYDtNdCYmKHBpKz1gdmFyIGRlc3RydWN0b3JzID0gW107CmApO3ZhciBjbj1NdD8iZGVzdHJ1Y3RvcnMiOiJudWxsIixRZT1bInRocm93QmluZGluZ0Vycm9yIiwiaW52b2tlciIsImZuIiwicnVuRGVzdHJ1Y3RvcnMiLCJyZXRUeXBlIiwiY2xhc3NQYXJhbSJdLFhzPVtJaSxSdCxWdCxobix2WzBdLHZbMV1dO2p0JiYocGkrPSJ2YXIgdGhpc1dpcmVkID0gY2xhc3NQYXJhbS50b1dpcmVUeXBlKCIrY24rYCwgdGhpcyk7CmApO2Zvcih2YXIgRHQ9MDtEdDxCdC0yOysrRHQpcGkrPSJ2YXIgYXJnIitEdCsiV2lyZWQgPSBhcmdUeXBlIitEdCsiLnRvV2lyZVR5cGUoIitjbisiLCBhcmciK0R0KyIpOyAvLyAiK3ZbRHQrMl0ubmFtZStgCmAsUWUucHVzaCgiYXJnVHlwZSIrRHQpLFhzLnB1c2godltEdCsyXSk7aWYoanQmJihjaT0idGhpc1dpcmVkIisoY2kubGVuZ3RoPjA/IiwgIjoiIikrY2kpLHBpKz0ocGU/InZhciBydiA9ICI6IiIpKyJpbnZva2VyKGZuIisoY2kubGVuZ3RoPjA/IiwgIjoiIikrY2krYCk7CmAsTXQpcGkrPWBydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7CmA7ZWxzZSBmb3IodmFyIER0PWp0PzE6MjtEdDx2Lmxlbmd0aDsrK0R0KXt2YXIgem89RHQ9PT0xPyJ0aGlzV2lyZWQiOiJhcmciKyhEdC0yKSsiV2lyZWQiO3ZbRHRdLmRlc3RydWN0b3JGdW5jdGlvbiE9PW51bGwmJihwaSs9em8rIl9kdG9yKCIrem8rIik7IC8vICIrdltEdF0ubmFtZStgCmAsUWUucHVzaCh6bysiX2R0b3IiKSxYcy5wdXNoKHZbRHRdLmRlc3RydWN0b3JGdW5jdGlvbikpfXBlJiYocGkrPWB2YXIgcmV0ID0gcmV0VHlwZS5mcm9tV2lyZVR5cGUocnYpOwpyZXR1cm4gcmV0OwpgKSxwaSs9YH0KYCxRZS5wdXNoKHBpKTt2YXIgVnI9d0EoRnVuY3Rpb24sUWUpLmFwcGx5KG51bGwsWHMpO3JldHVybiBWcn1mdW5jdGlvbiB6aChKLHYsc3QsUnQsVnQsQnQsanQsTXQpe3ZhciBEdD1IaChzdCxSdCk7dj1Pbih2KSxCdD1qbihWdCxCdCksZ3MoW10sW0pdLGZ1bmN0aW9uKHBlKXtwZT1wZVswXTt2YXIgR2U9cGUubmFtZSsiLiIrdjtNdCYmcGUucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2godik7ZnVuY3Rpb24gY2koKXtuQSgiQ2Fubm90IGNhbGwgIitHZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixEdCl9dmFyIHBpPXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxjbj1waVt2XTtyZXR1cm4gY249PT12b2lkIDB8fGNuLm92ZXJsb2FkVGFibGU9PT12b2lkIDAmJmNuLmNsYXNzTmFtZSE9PXBlLm5hbWUmJmNuLmFyZ0NvdW50PT09c3QtMj8oY2kuYXJnQ291bnQ9c3QtMixjaS5jbGFzc05hbWU9cGUubmFtZSxwaVt2XT1jaSk6KHRsKHBpLHYsR2UpLHBpW3ZdLm92ZXJsb2FkVGFibGVbc3QtMl09Y2kpLGdzKFtdLER0LGZ1bmN0aW9uKFFlKXt2YXIgWHM9b2woR2UsUWUscGUsQnQsanQpO3JldHVybiBwaVt2XS5vdmVybG9hZFRhYmxlPT09dm9pZCAwPyhYcy5hcmdDb3VudD1zdC0yLHBpW3ZdPVhzKTpwaVt2XS5vdmVybG9hZFRhYmxlW3N0LTJdPVhzLFtdfSksW119KX1mdW5jdGlvbiB5ZChKLHYsc3Qpe0o9T24oSiksZ3MoW10sW3ZdLGZ1bmN0aW9uKFJ0KXtyZXR1cm4gUnQ9UnRbMF0saVtKXT1SdC5mcm9tV2lyZVR5cGUoc3QpLFtdfSl9dmFyIEtoPVtdLFZzPVt7fSx7dmFsdWU6dm9pZCAwfSx7dmFsdWU6bnVsbH0se3ZhbHVlOiEwfSx7dmFsdWU6ITF9XTtmdW5jdGlvbiBYaChKKXtKPjQmJi0tVnNbSl0ucmVmY291bnQ9PT0wJiYoVnNbSl09dm9pZCAwLEtoLnB1c2goSikpfWZ1bmN0aW9uIHdkKCl7Zm9yKHZhciBKPTAsdj01O3Y8VnMubGVuZ3RoOysrdilWc1t2XSE9PXZvaWQgMCYmKytKO3JldHVybiBKfWZ1bmN0aW9uIHJsKCl7Zm9yKHZhciBKPTU7SjxWcy5sZW5ndGg7KytKKWlmKFZzW0pdIT09dm9pZCAwKXJldHVybiBWc1tKXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBBbygpe2kuY291bnRfZW12YWxfaGFuZGxlcz13ZCxpLmdldF9maXJzdF9lbXZhbD1ybH1mdW5jdGlvbiBobyhKKXtzd2l0Y2goSil7Y2FzZSB2b2lkIDA6cmV0dXJuIDE7Y2FzZSBudWxsOnJldHVybiAyO2Nhc2UhMDpyZXR1cm4gMztjYXNlITE6cmV0dXJuIDQ7ZGVmYXVsdDp7dmFyIHY9S2gubGVuZ3RoP0toLnBvcCgpOlZzLmxlbmd0aDtyZXR1cm4gVnNbdl09e3JlZmNvdW50OjEsdmFsdWU6Sn0sdn19fWZ1bmN0aW9uIHhkKEosdil7dj1Pbih2KSxPbyhKLHtuYW1lOnYsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKHN0KXt2YXIgUnQ9VnNbc3RdLnZhbHVlO3JldHVybiBYaChzdCksUnR9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oc3QsUnQpe3JldHVybiBobyhSdCl9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6am8sZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBQZChKLHYsc3Qpe3N3aXRjaCh2KXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKFJ0KXt2YXIgVnQ9c3Q/YnQ6ZWU7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKFZ0W1J0XSl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24oUnQpe3ZhciBWdD1zdD9jZTpqZTtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoVnRbUnQ+PjFdKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihSdCl7dmFyIFZ0PXN0P1NlOlVlO3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShWdFtSdD4+Ml0pfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gaW50ZWdlciB0eXBlOiAiK0opfX1mdW5jdGlvbiBCbyhKLHYsc3QsUnQpe3ZhciBWdD1ocihzdCk7dj1Pbih2KTtmdW5jdGlvbiBCdCgpe31CdC52YWx1ZXM9e30sT28oSix7bmFtZTp2LGNvbnN0cnVjdG9yOkJ0LGZyb21XaXJlVHlwZTpmdW5jdGlvbihqdCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IudmFsdWVzW2p0XX0sdG9XaXJlVHlwZTpmdW5jdGlvbihqdCxNdCl7cmV0dXJuIE10LnZhbHVlfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOlBkKHYsVnQsUnQpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSkseWgodixCdCl9ZnVuY3Rpb24geEEoSix2KXt2YXIgc3Q9b25bSl07cmV0dXJuIHN0PT09dm9pZCAwJiZJaSh2KyIgaGFzIHVua25vd24gdHlwZSAiK2poKEopKSxzdH1mdW5jdGlvbiBsYShKLHYsc3Qpe3ZhciBSdD14QShKLCJlbnVtIik7dj1Pbih2KTt2YXIgVnQ9UnQuY29uc3RydWN0b3IsQnQ9T2JqZWN0LmNyZWF0ZShSdC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUse3ZhbHVlOnt2YWx1ZTpzdH0sY29uc3RydWN0b3I6e3ZhbHVlOiRlKFJ0Lm5hbWUrIl8iK3YsZnVuY3Rpb24oKXt9KX19KTtWdC52YWx1ZXNbc3RdPUJ0LFZ0W3ZdPUJ0fWZ1bmN0aW9uIGRhKEope2lmKEo9PT1udWxsKXJldHVybiJudWxsIjt2YXIgdj10eXBlb2YgSjtyZXR1cm4gdj09PSJvYmplY3QifHx2PT09ImFycmF5Inx8dj09PSJmdW5jdGlvbiI/Si50b1N0cmluZygpOiIiK0p9ZnVuY3Rpb24gSmQoSix2KXtzd2l0Y2godil7Y2FzZSAyOnJldHVybiBmdW5jdGlvbihzdCl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKE1lW3N0Pj4yXSl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oc3Qpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShDZVtzdD4+M10pfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZmxvYXQgdHlwZTogIitKKX19ZnVuY3Rpb24gamQoSix2LHN0KXt2YXIgUnQ9aHIoc3QpO3Y9T24odiksT28oSix7bmFtZTp2LGZyb21XaXJlVHlwZTpmdW5jdGlvbihWdCl7cmV0dXJuIFZ0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKFZ0LEJ0KXtpZih0eXBlb2YgQnQhPSJudW1iZXIiJiZ0eXBlb2YgQnQhPSJib29sZWFuIil0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytkYShCdCkrJyIgdG8gJyt0aGlzLm5hbWUpO3JldHVybiBCdH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpKZCh2LFJ0KSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIEhkKEosdixzdCxSdCxWdCxCdCl7dmFyIGp0PUhoKHYsc3QpO0o9T24oSiksVnQ9am4oUnQsVnQpLHloKEosZnVuY3Rpb24oKXtuQSgiQ2Fubm90IGNhbGwgIitKKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLGp0KX0sdi0xKSxncyhbXSxqdCxmdW5jdGlvbihNdCl7dmFyIER0PVtNdFswXSxudWxsXS5jb25jYXQoTXQuc2xpY2UoMSkpO3JldHVybiBpQShKLG9sKEosRHQsbnVsbCxWdCxCdCksdi0xKSxbXX0pfWZ1bmN0aW9uIHZkKEosdixzdCl7c3dpdGNoKHYpe2Nhc2UgMDpyZXR1cm4gc3Q/ZnVuY3Rpb24oVnQpe3JldHVybiBidFtWdF19OmZ1bmN0aW9uKFZ0KXtyZXR1cm4gZWVbVnRdfTtjYXNlIDE6cmV0dXJuIHN0P2Z1bmN0aW9uKFZ0KXtyZXR1cm4gY2VbVnQ+PjFdfTpmdW5jdGlvbihWdCl7cmV0dXJuIGplW1Z0Pj4xXX07Y2FzZSAyOnJldHVybiBzdD9mdW5jdGlvbihWdCl7cmV0dXJuIFNlW1Z0Pj4yXX06ZnVuY3Rpb24oVnQpe3JldHVybiBVZVtWdD4+Ml19O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBpbnRlZ2VyIHR5cGU6ICIrSil9fWZ1bmN0aW9uIHpkKEosdixzdCxSdCxWdCl7dj1Pbih2KSxWdD09PS0xJiYoVnQ9NDI5NDk2NzI5NSk7dmFyIEJ0PWhyKHN0KSxqdD1mdW5jdGlvbihwZSl7cmV0dXJuIHBlfTtpZihSdD09PTApe3ZhciBNdD0zMi04KnN0O2p0PWZ1bmN0aW9uKHBlKXtyZXR1cm4gcGU8PE10Pj4+TXR9fXZhciBEdD12LmluZGV4T2YoInVuc2lnbmVkIikhPS0xO09vKEose25hbWU6dixmcm9tV2lyZVR5cGU6anQsdG9XaXJlVHlwZTpmdW5jdGlvbihwZSxHZSl7aWYodHlwZW9mIEdlIT0ibnVtYmVyIiYmdHlwZW9mIEdlIT0iYm9vbGVhbiIpdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgIicrZGEoR2UpKyciIHRvICcrdGhpcy5uYW1lKTtpZihHZTxSdHx8R2U+VnQpdGhyb3cgbmV3IFR5cGVFcnJvcignUGFzc2luZyBhIG51bWJlciAiJytkYShHZSkrJyIgZnJvbSBKUyBzaWRlIHRvIEMvQysrIHNpZGUgdG8gYW4gYXJndW1lbnQgb2YgdHlwZSAiJyt2KyciLCB3aGljaCBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBbJytSdCsiLCAiK1Z0KyJdISIpO3JldHVybiBEdD9HZT4+PjA6R2V8MH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjp2ZCh2LEJ0LFJ0IT09MCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KX1mdW5jdGlvbiBxaChKLHYsc3Qpe3ZhciBSdD1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldLFZ0PVJ0W3ZdO2Z1bmN0aW9uIEJ0KGp0KXtqdD1qdD4+Mjt2YXIgTXQ9VWUsRHQ9TXRbanRdLHBlPU10W2p0KzFdO3JldHVybiBuZXcgVnQoV3QscGUsRHQpfXN0PU9uKHN0KSxPbyhKLHtuYW1lOnN0LGZyb21XaXJlVHlwZTpCdCxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOkJ0fSx7aWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9uczohMH0pfWZ1bmN0aW9uIFBBKEosdil7dj1Pbih2KTt2YXIgc3Q9dj09PSJzdGQ6OnN0cmluZyI7T28oSix7bmFtZTp2LGZyb21XaXJlVHlwZTpmdW5jdGlvbihSdCl7dmFyIFZ0PVVlW1J0Pj4yXSxCdDtpZihzdClmb3IodmFyIGp0PVJ0KzQsTXQ9MDtNdDw9VnQ7KytNdCl7dmFyIER0PVJ0KzQrTXQ7aWYoTXQ9PVZ0fHxlZVtEdF09PTApe3ZhciBwZT1EdC1qdCxHZT1qKGp0LHBlKTtCdD09PXZvaWQgMD9CdD1HZTooQnQrPSJcMCIsQnQrPUdlKSxqdD1EdCsxfX1lbHNle2Zvcih2YXIgY2k9bmV3IEFycmF5KFZ0KSxNdD0wO010PFZ0OysrTXQpY2lbTXRdPVN0cmluZy5mcm9tQ2hhckNvZGUoZWVbUnQrNCtNdF0pO0J0PWNpLmpvaW4oIiIpfXJldHVybiBldChSdCksQnR9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oUnQsVnQpe1Z0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihWdD1uZXcgVWludDhBcnJheShWdCkpO3ZhciBCdCxqdD10eXBlb2YgVnQ9PSJzdHJpbmciO2p0fHxWdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fFZ0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fFZ0IGluc3RhbmNlb2YgSW50OEFycmF5fHxJaSgiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpLHN0JiZqdD9CdD1mdW5jdGlvbigpe3JldHVybiBHKFZ0KX06QnQ9ZnVuY3Rpb24oKXtyZXR1cm4gVnQubGVuZ3RofTt2YXIgTXQ9QnQoKSxEdD16KDQrTXQrMSk7aWYoVWVbRHQ+PjJdPU10LHN0JiZqdCl0dChWdCxEdCs0LE10KzEpO2Vsc2UgaWYoanQpZm9yKHZhciBwZT0wO3BlPE10OysrcGUpe3ZhciBHZT1WdC5jaGFyQ29kZUF0KHBlKTtHZT4yNTUmJihldChEdCksSWkoIlN0cmluZyBoYXMgVVRGLTE2IGNvZGUgdW5pdHMgdGhhdCBkbyBub3QgZml0IGluIDggYml0cyIpKSxlZVtEdCs0K3BlXT1HZX1lbHNlIGZvcih2YXIgcGU9MDtwZTxNdDsrK3BlKWVlW0R0KzQrcGVdPVZ0W3BlXTtyZXR1cm4gUnQhPT1udWxsJiZSdC5wdXNoKGV0LER0KSxEdH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpqbyxkZXN0cnVjdG9yRnVuY3Rpb246ZnVuY3Rpb24oUnQpe2V0KFJ0KX19KX1mdW5jdGlvbiBtYShKLHYsc3Qpe3N0PU9uKHN0KTt2YXIgUnQsVnQsQnQsanQsTXQ7dj09PTI/KFJ0PWd0LFZ0PVl0LGp0PVV0LEJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGplfSxNdD0xKTp2PT09NCYmKFJ0PUN0LFZ0PXp0LGp0PWt0LEJ0PWZ1bmN0aW9uKCl7cmV0dXJuIFVlfSxNdD0yKSxPbyhKLHtuYW1lOnN0LGZyb21XaXJlVHlwZTpmdW5jdGlvbihEdCl7Zm9yKHZhciBwZT1VZVtEdD4+Ml0sR2U9QnQoKSxjaSxwaT1EdCs0LGNuPTA7Y248PXBlOysrY24pe3ZhciBRZT1EdCs0K2NuKnY7aWYoY249PXBlfHxHZVtRZT4+TXRdPT0wKXt2YXIgWHM9UWUtcGksem89UnQocGksWHMpO2NpPT09dm9pZCAwP2NpPXpvOihjaSs9IlwwIixjaSs9em8pLHBpPVFlK3Z9fXJldHVybiBldChEdCksY2l9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oRHQscGUpe3R5cGVvZiBwZSE9InN0cmluZyImJklpKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAiK3N0KTt2YXIgR2U9anQocGUpLGNpPXooNCtHZSt2KTtyZXR1cm4gVWVbY2k+PjJdPUdlPj5NdCxWdChwZSxjaSs0LEdlK3YpLER0IT09bnVsbCYmRHQucHVzaChldCxjaSksY2l9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6am8sZGVzdHJ1Y3RvckZ1bmN0aW9uOmZ1bmN0aW9uKER0KXtldChEdCl9fSl9ZnVuY3Rpb24gYWwoSix2LHN0LFJ0LFZ0LEJ0KXtxaVtKXT17bmFtZTpPbih2KSxyYXdDb25zdHJ1Y3RvcjpqbihzdCxSdCkscmF3RGVzdHJ1Y3RvcjpqbihWdCxCdCksZmllbGRzOltdfX1mdW5jdGlvbiBmYShKLHYsc3QsUnQsVnQsQnQsanQsTXQsRHQscGUpe3FpW0pdLmZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6T24odiksZ2V0dGVyUmV0dXJuVHlwZTpzdCxnZXR0ZXI6am4oUnQsVnQpLGdldHRlckNvbnRleHQ6QnQsc2V0dGVyQXJndW1lbnRUeXBlOmp0LHNldHRlcjpqbihNdCxEdCksc2V0dGVyQ29udGV4dDpwZX0pfWZ1bmN0aW9uIEVhKEosdil7dj1Pbih2KSxPbyhKLHtpc1ZvaWQ6ITAsbmFtZTp2LGFyZ1BhY2tBZHZhbmNlOjAsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKCl7fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKHN0LFJ0KXt9fSl9ZnVuY3Rpb24gc0EoSil7cmV0dXJuIEp8fElpKCJDYW5ub3QgdXNlIGRlbGV0ZWQgdmFsLiBoYW5kbGUgPSAiK0opLFZzW0pdLnZhbHVlfWZ1bmN0aW9uIEFsKEosdixzdCl7Sj1zQShKKSx2PXhBKHYsImVtdmFsOjphcyIpO3ZhciBSdD1bXSxWdD1obyhSdCk7cmV0dXJuIFNlW3N0Pj4yXT1WdCx2LnRvV2lyZVR5cGUoUnQsSil9dmFyIEtkPXt9O2Z1bmN0aW9uIEpBKEope3ZhciB2PUtkW0pdO3JldHVybiB2PT09dm9pZCAwP09uKEopOnZ9dmFyICRoPVtdO2Z1bmN0aW9uIFhkKEosdixzdCxSdCl7Sj0kaFtKXSx2PXNBKHYpLHN0PUpBKHN0KSxKKHYsc3QsbnVsbCxSdCl9ZnVuY3Rpb24gaGwoKXtyZXR1cm4gdHlwZW9mIGdsb2JhbFRoaXM9PSJvYmplY3QiP2dsb2JhbFRoaXM6ZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KCkoInJldHVybiB0aGlzIikoKX1mdW5jdGlvbiBxZChKKXtyZXR1cm4gSj09PTA/aG8oaGwoKSk6KEo9SkEoSiksaG8oaGwoKVtKXSkpfWZ1bmN0aW9uICRkKEope3ZhciB2PSRoLmxlbmd0aDtyZXR1cm4gJGgucHVzaChKKSx2fWZ1bmN0aW9uIHRtKEosdil7Zm9yKHZhciBzdD1uZXcgQXJyYXkoSiksUnQ9MDtSdDxKOysrUnQpc3RbUnRdPXhBKFNlWyh2Pj4yKStSdF0sInBhcmFtZXRlciAiK1J0KTtyZXR1cm4gc3R9ZnVuY3Rpb24gZW0oSix2KXtmb3IodmFyIHN0PXRtKEosdiksUnQ9c3RbMF0sVnQ9UnQubmFtZSsiXyQiK3N0LnNsaWNlKDEpLm1hcChmdW5jdGlvbihjbil7cmV0dXJuIGNuLm5hbWV9KS5qb2luKCJfIikrIiQiLEJ0PVsicmV0VHlwZSJdLGp0PVtSdF0sTXQ9IiIsRHQ9MDtEdDxKLTE7KytEdClNdCs9KER0IT09MD8iLCAiOiIiKSsiYXJnIitEdCxCdC5wdXNoKCJhcmdUeXBlIitEdCksanQucHVzaChzdFsxK0R0XSk7Zm9yKHZhciBwZT1TbygibWV0aG9kQ2FsbGVyXyIrVnQpLEdlPSJyZXR1cm4gZnVuY3Rpb24gIitwZStgKGhhbmRsZSwgbmFtZSwgZGVzdHJ1Y3RvcnMsIGFyZ3MpIHsKYCxjaT0wLER0PTA7RHQ8Si0xOysrRHQpR2UrPSIgICAgdmFyIGFyZyIrRHQrIiA9IGFyZ1R5cGUiK0R0KyIucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyIrKGNpPyIrIitjaToiIikrYCk7CmAsY2krPXN0W0R0KzFdLmFyZ1BhY2tBZHZhbmNlO0dlKz0iICAgIHZhciBydiA9IGhhbmRsZVtuYW1lXSgiK010K2ApOwpgO2Zvcih2YXIgRHQ9MDtEdDxKLTE7KytEdClzdFtEdCsxXS5kZWxldGVPYmplY3QmJihHZSs9IiAgICBhcmdUeXBlIitEdCsiLmRlbGV0ZU9iamVjdChhcmciK0R0K2ApOwpgKTtSdC5pc1ZvaWR8fChHZSs9YCAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7CmApLEdlKz1gfTsKYCxCdC5wdXNoKEdlKTt2YXIgcGk9d0EoRnVuY3Rpb24sQnQpLmFwcGx5KG51bGwsanQpO3JldHVybiAkZChwaSl9ZnVuY3Rpb24gaW0oSil7cmV0dXJuIEo9SkEoSiksaG8oaVtKXSl9ZnVuY3Rpb24gbm0oSix2KXtyZXR1cm4gSj1zQShKKSx2PXNBKHYpLGhvKEpbdl0pfWZ1bmN0aW9uIHNtKEope0o+NCYmKFZzW0pdLnJlZmNvdW50Kz0xKX1mdW5jdGlvbiBvbShKKXtmb3IodmFyIHY9IiIsc3Q9MDtzdDxKOysrc3Qpdis9KHN0IT09MD8iLCAiOiIiKSsiYXJnIitzdDtmb3IodmFyIFJ0PSJyZXR1cm4gZnVuY3Rpb24gZW12YWxfYWxsb2NhdG9yXyIrSitgKGNvbnN0cnVjdG9yLCBhcmdUeXBlcywgYXJncykgewpgLHN0PTA7c3Q8SjsrK3N0KVJ0Kz0idmFyIGFyZ1R5cGUiK3N0KyIgPSByZXF1aXJlUmVnaXN0ZXJlZFR5cGUoTW9kdWxlWydIRUFQMzInXVsoYXJnVHlwZXMgPj4+IDIpICsgIitzdCsnXSwgInBhcmFtZXRlciAnK3N0K2AiKTsKdmFyIGFyZ2Arc3QrIiA9IGFyZ1R5cGUiK3N0K2AucmVhZFZhbHVlRnJvbVBvaW50ZXIoYXJncyk7CmFyZ3MgKz0gYXJnVHlwZWArc3QrYFsnYXJnUGFja0FkdmFuY2UnXTsKYDtyZXR1cm4gUnQrPSJ2YXIgb2JqID0gbmV3IGNvbnN0cnVjdG9yKCIrditgKTsKcmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTsKfQpgLG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiTW9kdWxlIiwiX19lbXZhbF9yZWdpc3RlciIsUnQpKHhBLGksaG8pfXZhciBjbD17fTtmdW5jdGlvbiBybShKLHYsc3QsUnQpe0o9c0EoSik7dmFyIFZ0PWNsW3ZdO3JldHVybiBWdHx8KFZ0PW9tKHYpLGNsW3ZdPVZ0KSxWdChKLHN0LFJ0KX1mdW5jdGlvbiBhbShKKXtyZXR1cm4gaG8oSkEoSikpfWZ1bmN0aW9uIEFtKEope3ZhciB2PVZzW0pdLnZhbHVlO2huKHYpLFhoKEopfWZ1bmN0aW9uIGxsKCl7a2koKX1mdW5jdGlvbiBobShKLHYsc3Qpe2VlLmNvcHlXaXRoaW4oSix2LHYrc3QpfWZ1bmN0aW9uIG9BKEope3RyeXtyZXR1cm4gZy5ncm93KEotV3QuYnl0ZUxlbmd0aCs2NTUzNT4+PjE2KSxGZShnLmJ1ZmZlciksMX1jYXRjaHt9fWZ1bmN0aW9uIGNtKEope3ZhciB2PWVlLmxlbmd0aDtKPUo+Pj4wO3ZhciBzdD0yMTQ3NDgzNjQ4O2lmKEo+c3QpcmV0dXJuITE7Zm9yKHZhciBSdD0xO1J0PD00O1J0Kj0yKXt2YXIgVnQ9diooMSsuMi9SdCk7VnQ9TWF0aC5taW4oVnQsSisxMDA2NjMyOTYpO3ZhciBCdD1NYXRoLm1pbihzdCxKdChNYXRoLm1heChKLFZ0KSw2NTUzNikpLGp0PW9BKEJ0KTtpZihqdClyZXR1cm4hMH1yZXR1cm4hMX12YXIgakE9e21hcHBpbmdzOnt9LGJ1ZmZlcnM6W251bGwsW10sW11dLHByaW50Q2hhcjpmdW5jdGlvbihKLHYpe3ZhciBzdD1qQS5idWZmZXJzW0pdO3Y9PT0wfHx2PT09MTA/KChKPT09MT9VOlEpKEgoc3QsMCkpLHN0Lmxlbmd0aD0wKTpzdC5wdXNoKHYpfSx2YXJhcmdzOnZvaWQgMCxnZXQ6ZnVuY3Rpb24oKXtqQS52YXJhcmdzKz00O3ZhciBKPVNlW2pBLnZhcmFyZ3MtND4+Ml07cmV0dXJuIEp9LGdldFN0cjpmdW5jdGlvbihKKXt2YXIgdj1qKEopO3JldHVybiB2fSxnZXQ2NDpmdW5jdGlvbihKLHYpe3JldHVybiBKfX07ZnVuY3Rpb24gbG0oSil7cmV0dXJuIDB9ZnVuY3Rpb24gZG0oSix2LHN0LFJ0LFZ0KXt9ZnVuY3Rpb24gZGwoSix2LHN0LFJ0KXtmb3IodmFyIFZ0PTAsQnQ9MDtCdDxzdDtCdCsrKXtmb3IodmFyIGp0PVNlW3YrQnQqOD4+Ml0sTXQ9U2VbdisoQnQqOCs0KT4+Ml0sRHQ9MDtEdDxNdDtEdCsrKWpBLnByaW50Q2hhcihKLGVlW2p0K0R0XSk7VnQrPU10fXJldHVybiBTZVtSdD4+Ml09VnQsMH1mdW5jdGlvbiBtbShKKXtrKEp8MCl9WXI9aS5JbnRlcm5hbEVycm9yPWFhKEVycm9yLCJJbnRlcm5hbEVycm9yIiksVWgoKSxjcj1pLkJpbmRpbmdFcnJvcj1hYShFcnJvciwiQmluZGluZ0Vycm9yIiksT2QoKSxubCgpLExBKCksc2w9aS5VbmJvdW5kVHlwZUVycm9yPWFhKEVycm9yLCJVbmJvdW5kVHlwZUVycm9yIiksQW8oKTt2YXIgZm09e3Q6VG4sSTpLYyx4OmNhLHc6dmgsZDp6aCxrOnlkLEg6eGQsbjpCbyxhOmxhLEE6amQsaTpIZCxqOnpkLGg6cWgsQjpQQSx2Om1hLHU6YWwsYzpmYSxKOkVhLG06QWwsczpYZCxiOlhoLHk6cWQscDplbSxyOmltLGU6bm0sZzpzbSxxOnJtLGY6YW0sbDpBbSxvOmxsLEU6aG0sRjpjbSxHOmxtLEM6ZG0sejpkbCxEOm1tfSxyQT1scygpLGZpPWkuX19fd2FzbV9jYWxsX2N0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuKGZpPWkuX19fd2FzbV9jYWxsX2N0b3JzPWkuYXNtLkwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sej1pLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oej1pLl9tYWxsb2M9aS5hc20uTSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxldD1pLl9mcmVlPWZ1bmN0aW9uKCl7cmV0dXJuKGV0PWkuX2ZyZWU9aS5hc20uTikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwdD1pLl9fX2dldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuKHB0PWkuX19fZ2V0VHlwZU5hbWU9aS5hc20uUCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwkdD1pLl9fX2VtYmluZF9yZWdpc3Rlcl9uYXRpdmVfYW5kX2J1aWx0aW5fdHlwZXM9ZnVuY3Rpb24oKXtyZXR1cm4oJHQ9aS5fX19lbWJpbmRfcmVnaXN0ZXJfbmF0aXZlX2FuZF9idWlsdGluX3R5cGVzPWkuYXNtLlEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmU9aS5keW5DYWxsX2ppamk9ZnVuY3Rpb24oKXtyZXR1cm4odmU9aS5keW5DYWxsX2ppamk9aS5hc20uUikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxoaTtmdW5jdGlvbiBfYShKKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiLHRoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK0orIikiLHRoaXMuc3RhdHVzPUp9aHM9ZnVuY3Rpb24gSigpe2hpfHx0YygpLGhpfHwoaHM9Sil9O2Z1bmN0aW9uIHRjKEope2lmKEo9Snx8YSxlaT4wfHwoT2koKSxlaT4wKSlyZXR1cm47ZnVuY3Rpb24gdigpe2hpfHwoaGk9ITAsaS5jYWxsZWRSdW49ITAsIU8mJihnbigpLERlKCksbihpKSxpLm9uUnVudGltZUluaXRpYWxpemVkJiZpLm9uUnVudGltZUluaXRpYWxpemVkKCksWWUoKSkpfWkuc2V0U3RhdHVzPyhpLnNldFN0YXR1cygiUnVubmluZy4uLiIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5zZXRTdGF0dXMoIiIpfSwxKSx2KCl9LDEpKTp2KCl9aWYoaS5ydW49dGMsaS5wcmVJbml0KWZvcih0eXBlb2YgaS5wcmVJbml0PT0iZnVuY3Rpb24iJiYoaS5wcmVJbml0PVtpLnByZUluaXRdKTtpLnByZUluaXQubGVuZ3RoPjA7KWkucHJlSW5pdC5wb3AoKSgpO3JldHVybiB0YygpLGUucmVhZHl9fSgpO3R5cGVvZiBIZz09Im9iamVjdCImJnR5cGVvZiBZRz09Im9iamVjdCI/WUcuZXhwb3J0cz1iRzp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShbXSxmdW5jdGlvbigpe3JldHVybiBiR30pOnR5cGVvZiBIZz09Im9iamVjdCImJihIZy5CQVNJUz1iRyl9KTt2YXIgVkc9e307SGUoVkcse2RlZmF1bHQ6KCk9PkNadH0pO2Z1bmN0aW9uIFJadCh0LGUpe3AudHlwZU9mLm9iamVjdCgidHJhbnNjb2Rlck1vZHVsZSIsSlIpO2xldCBpPXQua3R4MkJ1ZmZlcixuPXQuc3VwcG9ydGVkVGFyZ2V0Rm9ybWF0cyxzO3RyeXtzPU04KGkpfWNhdGNoe3Rocm93IG5ldyBrZSgiSW52YWxpZCBLVFgyIGZpbGUuIil9aWYocy5sYXllckNvdW50IT09MCl0aHJvdyBuZXcga2UoIktUWDIgdGV4dHVyZSBhcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQuIik7aWYocy5waXhlbERlcHRoIT09MCl0aHJvdyBuZXcga2UoIktUWDIgM0QgdGV4dHVyZXMgYXJlIHVuc3VwcG9ydGVkLiIpO2xldCBvPXMuZGF0YUZvcm1hdERlc2NyaXB0b3JbMF0scj1uZXcgQXJyYXkocy5sZXZlbENvdW50KTtyZXR1cm4gcy52a0Zvcm1hdD09PTAmJihvLmNvbG9yTW9kZWw9PT13OHx8by5jb2xvck1vZGVsPT09eDgpP0ladChpLHMsbixKUixlLHIpOihlLnB1c2goaS5idWZmZXIpLFpadChzLHIpKSxyfWZ1bmN0aW9uIFpadCh0LGUpe2xldCBpPXQudmtGb3JtYXQ9PT1QUi5WS19GT1JNQVRfUjhHOEI4X1NSR0I/SWUuUkdCOkllLlJHQkEsbjt0LnZrRm9ybWF0PT09UFIuVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNP249Z2UuVU5TSUdORURfQllURTp0LnZrRm9ybWF0PT09UFIuVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQ/bj1nZS5IQUxGX0ZMT0FUOnQudmtGb3JtYXQ9PT1QUi5WS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVCYmKG49Z2UuRkxPQVQpO2ZvcihsZXQgcz0wO3M8dC5sZXZlbHMubGVuZ3RoOysrcyl7bGV0IG89e307ZVtzXT1vO2xldCByPXQubGV2ZWxzW3NdLmxldmVsRGF0YSxhPXQucGl4ZWxXaWR0aD4+cyxoPXQucGl4ZWxIZWlnaHQ+PnMsQT1hKmgqSWUuY29tcG9uZW50c0xlbmd0aChpKTtmb3IobGV0IGQ9MDtkPHQuZmFjZUNvdW50OysrZCl7bGV0IGY9ci5ieXRlT2Zmc2V0K0EqdC50eXBlU2l6ZSpkLEU7IW0obil8fGdlLnNpemVJbkJ5dGVzKG4pPT09MT9FPW5ldyBVaW50OEFycmF5KHIuYnVmZmVyLGYsQSk6Z2Uuc2l6ZUluQnl0ZXMobik9PT0yP0U9bmV3IFVpbnQxNkFycmF5KHIuYnVmZmVyLGYsQSk6RT1uZXcgRmxvYXQzMkFycmF5KHIuYnVmZmVyLGYsQSksb1t5OFtkXV09e2ludGVybmFsRm9ybWF0OmksZGF0YXR5cGU6bix3aWR0aDphLGhlaWdodDpoLGxldmVsQnVmZmVyOkV9fX19ZnVuY3Rpb24gSVp0KHQsZSxpLG4scyxvKXtsZXQgcj1uZXcgbi5LVFgyRmlsZSh0KSxhPXIuZ2V0V2lkdGgoKSxoPXIuZ2V0SGVpZ2h0KCksQT1yLmdldExldmVscygpLGQ9ci5nZXRIYXNBbHBoYSgpO2lmKCEoYT4wKXx8IShoPjApfHwhKEE+MCkpdGhyb3cgci5jbG9zZSgpLHIuZGVsZXRlKCksbmV3IGtlKCJJbnZhbGlkIEtUWDIgZmlsZSIpO2xldCBmLEUsXz1lLmRhdGFGb3JtYXREZXNjcmlwdG9yWzBdLFI9bi50cmFuc2NvZGVyX3RleHR1cmVfZm9ybWF0O2lmKF8uY29sb3JNb2RlbD09PXc4KWlmKGkuZXRjKWY9ZD9JZS5SR0JBOF9FVEMyX0VBQzpJZS5SR0I4X0VUQzIsRT1kP1IuY1RGRVRDMl9SR0JBOlIuY1RGRVRDMV9SR0I7ZWxzZSBpZihpLmV0YzEmJiFkKWY9SWUuUkdCX0VUQzEsRT1SLmNURkVUQzFfUkdCO2Vsc2UgaWYoaS5zM3RjKWY9ZD9JZS5SR0JBX0RYVDU6SWUuUkdCX0RYVDEsRT1kP1IuY1RGQkMzX1JHQkE6Ui5jVEZCQzFfUkdCO2Vsc2UgaWYoaS5wdnJ0YylmPWQ/SWUuUkdCQV9QVlJUQ180QlBQVjE6SWUuUkdCX1BWUlRDXzRCUFBWMSxFPWQ/Ui5jVEZQVlJUQzFfNF9SR0JBOlIuY1RGUFZSVEMxXzRfUkdCO2Vsc2UgaWYoaS5hc3RjKWY9SWUuUkdCQV9BU1RDLEU9Ui5jVEZBU1RDXzR4NF9SR0JBO2Vsc2UgaWYoaS5iYzcpZj1JZS5SR0JBX0JDNyxFPVIuY1RGQkM3X1JHQkE7ZWxzZSB0aHJvdyBuZXcga2UoIk5vIHRyYW5zY29kaW5nIGZvcm1hdCB0YXJnZXQgYXZhaWxhYmxlIGZvciBFVEMxUyBjb21wcmVzc2VkIGt0eDIuIik7ZWxzZSBpZihfLmNvbG9yTW9kZWw9PT14OClpZihpLmFzdGMpZj1JZS5SR0JBX0FTVEMsRT1SLmNURkFTVENfNHg0X1JHQkE7ZWxzZSBpZihpLmJjNylmPUllLlJHQkFfQkM3LEU9Ui5jVEZCQzdfUkdCQTtlbHNlIGlmKGkuczN0YylmPWQ/SWUuUkdCQV9EWFQ1OkllLlJHQl9EWFQxLEU9ZD9SLmNURkJDM19SR0JBOlIuY1RGQkMxX1JHQjtlbHNlIGlmKGkuZXRjKWY9ZD9JZS5SR0JBOF9FVEMyX0VBQzpJZS5SR0I4X0VUQzIsRT1kP1IuY1RGRVRDMl9SR0JBOlIuY1RGRVRDMV9SR0I7ZWxzZSBpZihpLmV0YzEmJiFkKWY9SWUuUkdCX0VUQzEsRT1SLmNURkVUQzFfUkdCO2Vsc2UgaWYoaS5wdnJ0YylmPWQ/SWUuUkdCQV9QVlJUQ180QlBQVjE6SWUuUkdCX1BWUlRDXzRCUFBWMSxFPWQ/Ui5jVEZQVlJUQzFfNF9SR0JBOlIuY1RGUFZSVEMxXzRfUkdCO2Vsc2UgdGhyb3cgbmV3IGtlKCJObyB0cmFuc2NvZGluZyBmb3JtYXQgdGFyZ2V0IGF2YWlsYWJsZSBmb3IgVUFTVEMgY29tcHJlc3NlZCBrdHgyLiIpO2lmKCFyLnN0YXJ0VHJhbnNjb2RpbmcoKSl0aHJvdyByLmNsb3NlKCksci5kZWxldGUoKSxuZXcga2UoInN0YXJ0VHJhbnNjb2RpbmcoKSBmYWlsZWQiKTtmb3IobGV0IEk9MDtJPGUubGV2ZWxzLmxlbmd0aDsrK0kpe2xldCBDPXt9O29bSV09QyxhPWUucGl4ZWxXaWR0aD4+SSxoPWUucGl4ZWxIZWlnaHQ+Pkk7bGV0IE49ci5nZXRJbWFnZVRyYW5zY29kZWRTaXplSW5CeXRlcyhJLDAsMCxFLnZhbHVlKSxUPW5ldyBVaW50OEFycmF5KE4pLGI9ci50cmFuc2NvZGVJbWFnZShULEksMCwwLEUudmFsdWUsMCwtMSwtMSk7aWYoIW0oYikpdGhyb3cgbmV3IGtlKCJ0cmFuc2NvZGVJbWFnZSgpIGZhaWxlZC4iKTtzLnB1c2goVC5idWZmZXIpLENbeThbMF1dPXtpbnRlcm5hbEZvcm1hdDpmLHdpZHRoOmEsaGVpZ2h0OmgsbGV2ZWxCdWZmZXI6VH19cmV0dXJuIHIuY2xvc2UoKSxyLmRlbGV0ZSgpLG99YXN5bmMgZnVuY3Rpb24gcFp0KHQsZSl7bGV0IGk9dC53ZWJBc3NlbWJseUNvbmZpZyxuPVooTDguZGVmYXVsdCxzZWxmLkJBU0lTKTtyZXR1cm4gbShpLndhc21CaW5hcnlGaWxlKT9KUj1hd2FpdCBuKGkpOkpSPWF3YWl0IG4oKSxKUi5pbml0aWFsaXplQmFzaXMoKSwhMH1mdW5jdGlvbiB1WnQodCxlKXtsZXQgaT10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKGkpP3BadCh0LGUpOlJadCh0LGUpfXZhciBMOCx5OCx3OCx4OCxKUixDWnQsU0c9UygoKT0+e0Z0KCk7bXQoKTthZSgpO19jKCk7UHMoKTtEOCgpO0VjKCk7TnMoKTtROCgpO0w4PWNvKGs4KCksMSkseTg9WyJwb3NpdGl2ZVgiLCJuZWdhdGl2ZVgiLCJwb3NpdGl2ZVkiLCJuZWdhdGl2ZVkiLCJwb3NpdGl2ZVoiLCJuZWdhdGl2ZVoiXSx3OD0xNjMseDg9MTY2O0NadD1XaSh1WnQpfSk7dmFyIFA4PXt9O3ZhciBPRz1TKCgpPT57c2VsZi5vbm1lc3NhZ2U9ZnVuY3Rpb24odCl7bGV0IGU9dC5kYXRhLmFycmF5LGk9c2VsZi53ZWJraXRQb3N0TWVzc2FnZXx8c2VsZi5wb3N0TWVzc2FnZTt0cnl7aSh7YXJyYXk6ZX0sW2UuYnVmZmVyXSl9Y2F0Y2h7aSh7fSl9fX0pO3ZhciB2Zyx6ZyxKOD1TKCgpPT57WGUoKTtIdCgpO2FlKCk7bXQoKTtPdCgpO3ZnPXt9O3ZnLmNsaXBUcmlhbmdsZUF0QXhpc0FsaWduZWRUaHJlc2hvbGQ9ZnVuY3Rpb24odCxlLGksbixzLG8pe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ0aHJlc2hvbGQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IFkoImtlZXBBYm92ZSBpcyByZXF1aXJlZC4iKTtpZighbShpKSl0aHJvdyBuZXcgWSgidTAgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IFkoInUxIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHMpKXRocm93IG5ldyBZKCJ1MiBpcyByZXF1aXJlZC4iKTttKG8pP28ubGVuZ3RoPTA6bz1bXTtsZXQgcixhLGg7ZT8ocj1pPHQsYT1uPHQsaD1zPHQpOihyPWk+dCxhPW4+dCxoPXM+dCk7bGV0IEE9cithK2gsZCxmLEUsXyxSLEk7cmV0dXJuIEE9PT0xP3I/KGQ9KHQtaSkvKG4taSksZj0odC1pKS8ocy1pKSxvLnB1c2goMSksby5wdXNoKDIpLGYhPT0xJiYoby5wdXNoKC0xKSxvLnB1c2goMCksby5wdXNoKDIpLG8ucHVzaChmKSksZCE9PTEmJihvLnB1c2goLTEpLG8ucHVzaCgwKSxvLnB1c2goMSksby5wdXNoKGQpKSk6YT8oRT0odC1uKS8ocy1uKSxfPSh0LW4pLyhpLW4pLG8ucHVzaCgyKSxvLnB1c2goMCksXyE9PTEmJihvLnB1c2goLTEpLG8ucHVzaCgxKSxvLnB1c2goMCksby5wdXNoKF8pKSxFIT09MSYmKG8ucHVzaCgtMSksby5wdXNoKDEpLG8ucHVzaCgyKSxvLnB1c2goRSkpKTpoJiYoUj0odC1zKS8oaS1zKSxJPSh0LXMpLyhuLXMpLG8ucHVzaCgwKSxvLnB1c2goMSksSSE9PTEmJihvLnB1c2goLTEpLG8ucHVzaCgyKSxvLnB1c2goMSksby5wdXNoKEkpKSxSIT09MSYmKG8ucHVzaCgtMSksby5wdXNoKDIpLG8ucHVzaCgwKSxvLnB1c2goUikpKTpBPT09Mj8hciYmaSE9PXQ/KF89KHQtbikvKGktbiksUj0odC1zKS8oaS1zKSxvLnB1c2goMCksby5wdXNoKC0xKSxvLnB1c2goMSksby5wdXNoKDApLG8ucHVzaChfKSxvLnB1c2goLTEpLG8ucHVzaCgyKSxvLnB1c2goMCksby5wdXNoKFIpKTohYSYmbiE9PXQ/KEk9KHQtcykvKG4tcyksZD0odC1pKS8obi1pKSxvLnB1c2goMSksby5wdXNoKC0xKSxvLnB1c2goMiksby5wdXNoKDEpLG8ucHVzaChJKSxvLnB1c2goLTEpLG8ucHVzaCgwKSxvLnB1c2goMSksby5wdXNoKGQpKTohaCYmcyE9PXQmJihmPSh0LWkpLyhzLWkpLEU9KHQtbikvKHMtbiksby5wdXNoKDIpLG8ucHVzaCgtMSksby5wdXNoKDApLG8ucHVzaCgyKSxvLnB1c2goZiksby5wdXNoKC0xKSxvLnB1c2goMSksby5wdXNoKDIpLG8ucHVzaChFKSk6QSE9PTMmJihvLnB1c2goMCksby5wdXNoKDEpLG8ucHVzaCgyKSksb307dmcuY29tcHV0ZUJhcnljZW50cmljQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlLGksbixzLG8scixhLGgpe2lmKCFtKHQpKXRocm93IG5ldyBZKCJ4IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBZKCJ5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGkpKXRocm93IG5ldyBZKCJ4MSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgWSgieTEgaXMgcmVxdWlyZWQuIik7aWYoIW0ocykpdGhyb3cgbmV3IFkoIngyIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBZKCJ5MiBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgWSgieDMgaXMgcmVxdWlyZWQuIik7aWYoIW0oYSkpdGhyb3cgbmV3IFkoInkzIGlzIHJlcXVpcmVkLiIpO2xldCBBPWktcixkPXItcyxmPW8tYSxFPW4tYSxfPTEvKGYqQStkKkUpLFI9ZS1hLEk9dC1yLEM9KGYqSStkKlIpKl8sTj0oLUUqSStBKlIpKl8sVD0xLUMtTjtyZXR1cm4gbShoKT8oaC54PUMsaC55PU4saC56PVQsaCk6bmV3IGwoQyxOLFQpfTt2Zy5jb21wdXRlTGluZVNlZ21lbnRMaW5lU2VnbWVudEludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsaSxuLHMsbyxyLGEsaCl7cC50eXBlT2YubnVtYmVyKCJ4MDAiLHQpLHAudHlwZU9mLm51bWJlcigieTAwIixlKSxwLnR5cGVPZi5udW1iZXIoIngwMSIsaSkscC50eXBlT2YubnVtYmVyKCJ5MDEiLG4pLHAudHlwZU9mLm51bWJlcigieDEwIixzKSxwLnR5cGVPZi5udW1iZXIoInkxMCIsbykscC50eXBlT2YubnVtYmVyKCJ4MTEiLHIpLHAudHlwZU9mLm51bWJlcigieTExIixhKTtsZXQgQT0oci1zKSooZS1vKS0oYS1vKSoodC1zKSxkPShpLXQpKihlLW8pLShuLWUpKih0LXMpLGY9KGEtbykqKGktdCktKHItcykqKG4tZSk7aWYoZj09PTApcmV0dXJuO2xldCBFPUEvZixfPWQvZjtpZihFPj0wJiZFPD0xJiZfPj0wJiZfPD0xKXJldHVybiBtKGgpfHwoaD1uZXcgbnQpLGgueD10K0UqKGktdCksaC55PWUrRSoobi1lKSxofTt6Zz12Z30pO3ZhciBCRz17fTtIZShCRyx7ZGVmYXVsdDooKT0+UVp0fSk7ZnVuY3Rpb24gRFp0KHQsZSl7bGV0IGk9dC5pc0Vhc3RDaGlsZCxuPXQuaXNOb3J0aENoaWxkLHM9aT96YTowLG89aT9wczp6YSxyPW4/emE6MCxhPW4/cHM6emEsaD1OWnQsQT1GWnQsZD1iWnQsZj1WWnQ7aC5sZW5ndGg9MCxBLmxlbmd0aD0wLGQubGVuZ3RoPTAsZi5sZW5ndGg9MDtsZXQgRT1ZWnQ7RS5sZW5ndGg9MDtsZXQgXz17fSxSPXQudmVydGljZXMsST10LmluZGljZXM7ST1JLnN1YmFycmF5KDAsdC5pbmRleENvdW50V2l0aG91dFNraXJ0cyk7bGV0IEM9dmMuY2xvbmUodC5lbmNvZGluZyksTj1DLmhhc1ZlcnRleE5vcm1hbHMsVD0wLGI9dC52ZXJ0ZXhDb3VudFdpdGhvdXRTa2lydHMsRj10Lm1pbmltdW1IZWlnaHQsQj10Lm1heGltdW1IZWlnaHQsVT1uZXcgQXJyYXkoYiksUT1uZXcgQXJyYXkoYiksTT1uZXcgQXJyYXkoYiksaz1OP25ldyBBcnJheShiKjIpOnZvaWQgMCx5PTIwLGMsZyxPLEQsdztmb3IoZz0wLE89MDtnPGI7KytnLE8rPTIpe2xldCBSaT1DLmRlY29kZVRleHR1cmVDb29yZGluYXRlcyhSLGcsR1p0KTtpZihjPUMuZGVjb2RlSGVpZ2h0KFIsZyksRD1MLmNsYW1wKFJpLngqcHN8MCwwLHBzKSx3PUwuY2xhbXAoUmkueSpwc3wwLDAscHMpLE1bZ109TC5jbGFtcCgoYy1GKS8oQi1GKSpwc3wwLDAscHMpLEQ8eSYmKEQ9MCksdzx5JiYodz0wKSxwcy1EPHkmJihEPXBzKSxwcy13PHkmJih3PXBzKSxVW2ddPUQsUVtnXT13LE4pe2xldCBzaT1DLmdldE9jdEVuY29kZWROb3JtYWwoUixnLFdadCk7a1tPXT1zaS54LGtbTysxXT1zaS55fShpJiZEPj16YXx8IWkmJkQ8PXphKSYmKG4mJnc+PXphfHwhbiYmdzw9emEpJiYoX1tnXT1ULGgucHVzaChEKSxBLnB1c2godyksZC5wdXNoKE1bZ10pLE4mJihmLnB1c2goa1tPXSksZi5wdXNoKGtbTysxXSkpLCsrVCl9bGV0IHg9W107eC5wdXNoKG5ldyB1cykseC5wdXNoKG5ldyB1cykseC5wdXNoKG5ldyB1cyk7bGV0IEg9W107SC5wdXNoKG5ldyB1cyksSC5wdXNoKG5ldyB1cyksSC5wdXNoKG5ldyB1cyk7bGV0IGosWDtmb3IoZz0wO2c8SS5sZW5ndGg7Zys9Myl7bGV0IFJpPUlbZ10sc2k9SVtnKzFdLHFlPUlbZysyXSxPaT1VW1JpXSxnbj1VW3NpXSxEZT1VW3FlXTt4WzBdLmluaXRpYWxpemVJbmRleGVkKFUsUSxNLGssUmkpLHhbMV0uaW5pdGlhbGl6ZUluZGV4ZWQoVSxRLE0sayxzaSkseFsyXS5pbml0aWFsaXplSW5kZXhlZChVLFEsTSxrLHFlKTtsZXQgWWU9emcuY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZCh6YSxpLE9pLGduLERlLGdadCk7aj0wLCEoaj49WWUubGVuZ3RoKSYmKGo9SFswXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQoWWUsaix4KSwhKGo+PVllLmxlbmd0aCkmJihqPUhbMV0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFllLGoseCksIShqPj1ZZS5sZW5ndGgpJiYoaj1IWzJdLmluaXRpYWxpemVGcm9tQ2xpcFJlc3VsdChZZSxqLHgpLFg9emcuY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZCh6YSxuLEhbMF0uZ2V0VigpLEhbMV0uZ2V0VigpLEhbMl0uZ2V0VigpLGo4KSxIOChoLEEsZCxmLEUsXyxYLEgsTiksajxZZS5sZW5ndGgmJihIWzJdLmNsb25lKEhbMV0pLEhbMl0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFllLGoseCksWD16Zy5jbGlwVHJpYW5nbGVBdEF4aXNBbGlnbmVkVGhyZXNob2xkKHphLG4sSFswXS5nZXRWKCksSFsxXS5nZXRWKCksSFsyXS5nZXRWKCksajgpLEg4KGgsQSxkLGYsRSxfLFgsSCxOKSkpKSl9bGV0IHR0PWk/LXBzOjAsRz1uPy1wczowLEl0PVtdLGd0PVtdLFl0PVtdLFV0PVtdLEN0PU51bWJlci5NQVhfVkFMVUUsenQ9LUN0LGt0PVRadDtrdC5sZW5ndGg9MDtsZXQgSnQ9b3QuY2xvbmUodC5lbGxpcHNvaWQpLFd0PVh0LmNsb25lKHQuY2hpbGRSZWN0YW5nbGUpLGJ0PVd0Lm5vcnRoLGVlPVd0LnNvdXRoLGNlPVd0LmVhc3QsamU9V3Qud2VzdDtmb3IoY2U8amUmJihjZSs9TC5UV09fUEkpLGc9MDtnPGgubGVuZ3RoOysrZylEPU1hdGgucm91bmQoaFtnXSksRDw9cz8oSXQucHVzaChnKSxEPTApOkQ+PW8/KFl0LnB1c2goZyksRD1wcyk6RD1EKjIrdHQsaFtnXT1ELHc9TWF0aC5yb3VuZChBW2ddKSx3PD1yPyhndC5wdXNoKGcpLHc9MCk6dz49YT8oVXQucHVzaChnKSx3PXBzKTp3PXcqMitHLEFbZ109dyxjPUwubGVycChGLEIsZFtnXS9wcyksYzxDdCYmKEN0PWMpLGM+enQmJih6dD1jKSxkW2ddPWMsS2cubG9uZ2l0dWRlPUwubGVycChqZSxjZSxEL3BzKSxLZy5sYXRpdHVkZT1MLmxlcnAoZWUsYnQsdy9wcyksS2cuaGVpZ2h0PWMsSnQuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oS2csRGgpLGt0LnB1c2goRGgueCksa3QucHVzaChEaC55KSxrdC5wdXNoKERoLnopO2xldCBTZT1OdC5mcm9tVmVydGljZXMoa3QsbC5aRVJPLDMsT1p0KSxVZT16cy5mcm9tUmVjdGFuZ2xlKFd0LEN0LHp0LEp0LEJadCksQ2U9bmV3IGRBKEp0KS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQoU2UuY2VudGVyLGt0LDMsU2UuY2VudGVyLEN0LFNadCksRmU9enQtQ3Qsbmk9bmV3IFVpbnQxNkFycmF5KGgubGVuZ3RoK0EubGVuZ3RoK2QubGVuZ3RoKTtmb3IoZz0wO2c8aC5sZW5ndGg7KytnKW5pW2ddPWhbZ107bGV0IHplPWgubGVuZ3RoO2ZvcihnPTA7ZzxBLmxlbmd0aDsrK2cpbmlbemUrZ109QVtnXTtmb3IoemUrPUEubGVuZ3RoLGc9MDtnPGQubGVuZ3RoOysrZyluaVt6ZStnXT1wcyooZFtnXS1DdCkvRmU7bGV0IEJlPXRlLmNyZWF0ZVR5cGVkQXJyYXkoaC5sZW5ndGgsRSksTWk7aWYoTil7bGV0IFJpPW5ldyBVaW50OEFycmF5KGYpO2UucHVzaChuaS5idWZmZXIsQmUuYnVmZmVyLFJpLmJ1ZmZlciksTWk9UmkuYnVmZmVyfWVsc2UgZS5wdXNoKG5pLmJ1ZmZlcixCZS5idWZmZXIpO3JldHVybnt2ZXJ0aWNlczpuaS5idWZmZXIsZW5jb2RlZE5vcm1hbHM6TWksaW5kaWNlczpCZS5idWZmZXIsbWluaW11bUhlaWdodDpDdCxtYXhpbXVtSGVpZ2h0Onp0LHdlc3RJbmRpY2VzOkl0LHNvdXRoSW5kaWNlczpndCxlYXN0SW5kaWNlczpZdCxub3J0aEluZGljZXM6VXQsYm91bmRpbmdTcGhlcmU6U2Usb3JpZW50ZWRCb3VuZGluZ0JveDpVZSxob3Jpem9uT2NjbHVzaW9uUG9pbnQ6Q2V9fWZ1bmN0aW9uIHVzKCl7dGhpcy52ZXJ0ZXhCdWZmZXI9dm9pZCAwLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMuZmlyc3Q9dm9pZCAwLHRoaXMuc2Vjb25kPXZvaWQgMCx0aGlzLnJhdGlvPXZvaWQgMH1mdW5jdGlvbiB2OCh0LGUpeysrWGc7bGV0IGk9VVp0W1hnXSxuPU1adFtYZ107cmV0dXJuIGk9WWkub2N0RGVjb2RlKHQuZmlyc3QuZ2V0Tm9ybWFsWCgpLHQuZmlyc3QuZ2V0Tm9ybWFsWSgpLGkpLG49WWkub2N0RGVjb2RlKHQuc2Vjb25kLmdldE5vcm1hbFgoKSx0LnNlY29uZC5nZXROb3JtYWxZKCksbiksRGg9bC5sZXJwKGksbix0LnJhdGlvLERoKSxsLm5vcm1hbGl6ZShEaCxEaCksWWkub2N0RW5jb2RlKERoLGUpLC0tWGcsZX1mdW5jdGlvbiBIOCh0LGUsaSxuLHMsbyxyLGEsaCl7aWYoci5sZW5ndGg9PT0wKXJldHVybjtsZXQgQT0wLGQ9MDtmb3IoO2Q8ci5sZW5ndGg7KWQ9Sm9bQSsrXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQocixkLGEpO2ZvcihsZXQgZj0wO2Y8QTsrK2Ype2xldCBFPUpvW2ZdO2lmKEUuaXNJbmRleGVkKCkpRS5uZXdJbmRleD1vW0UuaW5kZXhdLEUudUJ1ZmZlcj10LEUudkJ1ZmZlcj1lLEUuaGVpZ2h0QnVmZmVyPWksaCYmKEUubm9ybWFsQnVmZmVyPW4pO2Vsc2V7bGV0IF89RS5nZXRLZXkoKTtpZihtKG9bX10pKUUubmV3SW5kZXg9b1tfXTtlbHNle2xldCBSPXQubGVuZ3RoO3QucHVzaChFLmdldFUoKSksZS5wdXNoKEUuZ2V0VigpKSxpLnB1c2goRS5nZXRIKCkpLGgmJihuLnB1c2goRS5nZXROb3JtYWxYKCkpLG4ucHVzaChFLmdldE5vcm1hbFkoKSkpLEUubmV3SW5kZXg9UixvW19dPVJ9fX1BPT09Mz8ocy5wdXNoKEpvWzBdLm5ld0luZGV4KSxzLnB1c2goSm9bMV0ubmV3SW5kZXgpLHMucHVzaChKb1syXS5uZXdJbmRleCkpOkE9PT00JiYocy5wdXNoKEpvWzBdLm5ld0luZGV4KSxzLnB1c2goSm9bMV0ubmV3SW5kZXgpLHMucHVzaChKb1syXS5uZXdJbmRleCkscy5wdXNoKEpvWzBdLm5ld0luZGV4KSxzLnB1c2goSm9bMl0ubmV3SW5kZXgpLHMucHVzaChKb1szXS5uZXdJbmRleCkpfXZhciBwcyx6YSxnWnQsajgsVFp0LEtnLERoLE5adCxGWnQsYlp0LFladCxWWnQsU1p0LE9adCxCWnQsR1p0LFdadCxlRSxYZyxVWnQsTVp0LEpvLFFadCxHRz1TKCgpPT57b2goKTtfaSgpO1hlKCk7SHQoKTtyaSgpO210KCk7T2UoKTtWbSgpO0RpKCk7SjgoKTtfZSgpO0psKCk7cG4oKTtXUigpO05zKCk7cHM9MzI3NjcsemE9cHMvMnwwLGdadD1bXSxqOD1bXSxUWnQ9W10sS2c9bmV3IHV0LERoPW5ldyBsLE5adD1bXSxGWnQ9W10sYlp0PVtdLFladD1bXSxWWnQ9W10sU1p0PW5ldyBsLE9adD1uZXcgTnQsQlp0PW5ldyB6cyxHWnQ9bmV3IG50LFdadD1uZXcgbDt1cy5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyB1cyksdC51QnVmZmVyPXRoaXMudUJ1ZmZlcix0LnZCdWZmZXI9dGhpcy52QnVmZmVyLHQuaGVpZ2h0QnVmZmVyPXRoaXMuaGVpZ2h0QnVmZmVyLHQubm9ybWFsQnVmZmVyPXRoaXMubm9ybWFsQnVmZmVyLHQuaW5kZXg9dGhpcy5pbmRleCx0LmZpcnN0PXRoaXMuZmlyc3QsdC5zZWNvbmQ9dGhpcy5zZWNvbmQsdC5yYXRpbz10aGlzLnJhdGlvLHR9O3VzLnByb3RvdHlwZS5pbml0aWFsaXplSW5kZXhlZD1mdW5jdGlvbih0LGUsaSxuLHMpe3RoaXMudUJ1ZmZlcj10LHRoaXMudkJ1ZmZlcj1lLHRoaXMuaGVpZ2h0QnVmZmVyPWksdGhpcy5ub3JtYWxCdWZmZXI9bix0aGlzLmluZGV4PXMsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5zZWNvbmQ9dm9pZCAwLHRoaXMucmF0aW89dm9pZCAwfTt1cy5wcm90b3R5cGUuaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0PWZ1bmN0aW9uKHQsZSxpKXtsZXQgbj1lKzE7cmV0dXJuIHRbZV0hPT0tMT9pW3RbZV1dLmNsb25lKHRoaXMpOih0aGlzLnZlcnRleEJ1ZmZlcj12b2lkIDAsdGhpcy5pbmRleD12b2lkIDAsdGhpcy5maXJzdD1pW3Rbbl1dLCsrbix0aGlzLnNlY29uZD1pW3Rbbl1dLCsrbix0aGlzLnJhdGlvPXRbbl0sKytuKSxufTt1cy5wcm90b3R5cGUuZ2V0S2V5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmRleGVkKCk/dGhpcy5pbmRleDpKU09OLnN0cmluZ2lmeSh7Zmlyc3Q6dGhpcy5maXJzdC5nZXRLZXkoKSxzZWNvbmQ6dGhpcy5zZWNvbmQuZ2V0S2V5KCkscmF0aW86dGhpcy5yYXRpb30pfTt1cy5wcm90b3R5cGUuaXNJbmRleGVkPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5pbmRleCl9O3VzLnByb3RvdHlwZS5nZXRIPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5pbmRleCk/dGhpcy5oZWlnaHRCdWZmZXJbdGhpcy5pbmRleF06TC5sZXJwKHRoaXMuZmlyc3QuZ2V0SCgpLHRoaXMuc2Vjb25kLmdldEgoKSx0aGlzLnJhdGlvKX07dXMucHJvdG90eXBlLmdldFU9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLnVCdWZmZXJbdGhpcy5pbmRleF06TC5sZXJwKHRoaXMuZmlyc3QuZ2V0VSgpLHRoaXMuc2Vjb25kLmdldFUoKSx0aGlzLnJhdGlvKX07dXMucHJvdG90eXBlLmdldFY9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLnZCdWZmZXJbdGhpcy5pbmRleF06TC5sZXJwKHRoaXMuZmlyc3QuZ2V0VigpLHRoaXMuc2Vjb25kLmdldFYoKSx0aGlzLnJhdGlvKX07ZUU9bmV3IG50LFhnPS0xLFVadD1bbmV3IGwsbmV3IGxdLE1adD1bbmV3IGwsbmV3IGxdO3VzLnByb3RvdHlwZS5nZXROb3JtYWxYPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5pbmRleCk/dGhpcy5ub3JtYWxCdWZmZXJbdGhpcy5pbmRleCoyXTooZUU9djgodGhpcyxlRSksZUUueCl9O3VzLnByb3RvdHlwZS5nZXROb3JtYWxZPWZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5pbmRleCk/dGhpcy5ub3JtYWxCdWZmZXJbdGhpcy5pbmRleCoyKzFdOihlRT12OCh0aGlzLGVFKSxlRS55KX07Sm89W107Sm8ucHVzaChuZXcgdXMpO0pvLnB1c2gobmV3IHVzKTtKby5wdXNoKG5ldyB1cyk7Sm8ucHVzaChuZXcgdXMpO1FadD1XaShEWnQpfSk7dmFyIGtadCxXRz1TKCgpPT57a1p0PWpHKHsiLi9BbmFseXNpc1dvcmtlci5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihpMCgpLGUwKSksIi4vQ29uanVuY3Rpb25Bc3Nlc3NtZW50LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHRTKCksJFYpKSwiLi9jb21iaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oaVMoKSxlUykpLCIuL2NyZWF0ZUJveEdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHJTKCksb1MpKSwiLi9jcmVhdGVCb3hPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oaFMoKSxBUykpLCIuL2NyZWF0ZUNpcmNsZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KElTKCksWlMpKSwiLi9jcmVhdGVDaXJjbGVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZ1MoKSxDUykpLCIuL2NyZWF0ZUNvcGxhbmFyUG9seWdvbkdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEdTKCksQlMpKSwiLi9jcmVhdGVDb3BsYW5hclBvbHlnb25PdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oVVMoKSxEUykpLCIuL2NyZWF0ZUNvcnJpZG9yR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oWFMoKSxLUykpLCIuL2NyZWF0ZUNvcnJpZG9yT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHRPKCksJFMpKSwiLi9jcmVhdGVDeWxpbmRlckdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHJPKCksb08pKSwiLi9jcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihjTygpLGhPKSksIi4vY3JlYXRlRWxsaXBzZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGRPKCksbE8pKSwiLi9jcmVhdGVFbGxpcHNlT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGZPKCksbU8pKSwiLi9jcmVhdGVFbGxpcHNvaWRHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihSTygpLF9PKSksIi4vY3JlYXRlRWxsaXBzb2lkT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHBPKCksSU8pKSwiLi9jcmVhdGVGcnVzdHVtR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oRk8oKSxOTykpLCIuL2NyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oU08oKSxWTykpLCIuL2NyZWF0ZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFVHKCksREcpKSwiLi9jcmVhdGVHcm91bmRQb2x5bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEJPKCksT08pKSwiLi9jcmVhdGVQbGFuZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KERPKCksV08pKSwiLi9jcmVhdGVQbGFuZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihRTygpLE1PKSksIi4vY3JlYXRlUG9seWdvbkdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHdPKCkseU8pKSwiLi9jcmVhdGVQb2x5Z29uT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEpPKCksUE8pKSwiLi9jcmVhdGVQb2x5bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHZPKCksSE8pKSwiLi9jcmVhdGVQb2x5bGluZVZvbHVtZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFhPKCksS08pKSwiLi9jcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih0QigpLCRPKSksIi4vY3JlYXRlUmVjdGFuZ2xlR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oY0IoKSxoQikpLCIuL2NyZWF0ZVJlY3RhbmdsZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihtQigpLGRCKSksIi4vY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihfQigpLEVCKSksIi4vY3JlYXRlU3BoZXJlR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oSUIoKSxaQikpLCIuL2NyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihDQigpLHVCKSksIi4vY3JlYXRlVGFza1Byb2Nlc3Nvcldvcmtlci5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihOcygpLHQwKSksIi4vY3JlYXRlVmVjdG9yVGlsZUNsYW1wZWRQb2x5bGluZXMuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oVEIoKSxnQikpLCIuL2NyZWF0ZVZlY3RvclRpbGVHZW9tZXRyaWVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEZCKCksTkIpKSwiLi9jcmVhdGVWZWN0b3JUaWxlUG9pbnRzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFZCKCksWUIpKSwiLi9jcmVhdGVWZWN0b3JUaWxlUG9seWdvbnMuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oT0IoKSxTQikpLCIuL2NyZWF0ZVZlY3RvclRpbGVQb2x5bGluZXMuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oV0IoKSxHQikpLCIuL2NyZWF0ZVZlcnRpY2VzRnJvbUdvb2dsZUVhcnRoRW50ZXJwcmlzZUJ1ZmZlci5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihNQigpLFVCKSksIi4vY3JlYXRlVmVydGljZXNGcm9tSGVpZ2h0bWFwLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KExCKCksa0IpKSwiLi9jcmVhdGVWZXJ0aWNlc0Zyb21RdWFudGl6ZWRUZXJyYWluTWVzaC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih4QigpLHdCKSksIi4vY3JlYXRlV2FsbEdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHZCKCksSEIpKSwiLi9jcmVhdGVXYWxsT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFhCKCksS0IpKSwiLi9kZWNvZGVEcmFjby5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihuRygpLGlHKSksIi4vZGVjb2RlR29vZ2xlRWFydGhFbnRlcnByaXNlUGFja2V0LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHBHKCksSUcpKSwiLi9kZWNvZGVJM1MuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oTkcoKSxURykpLCIuL3RyYW5zY29kZUtUWDIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oU0coKSxWRykpLCIuL3RyYW5zZmVyVHlwZWRBcnJheVRlc3QuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oT0coKSxQOCkpLCIuL3Vwc2FtcGxlUXVhbnRpemVkVGVycmFpbk1lc2guanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oR0coKSxCRykpfSl9KTt2YXIgREc9e307SGUoREcse2RlZmF1bHQ6KCk9PndadH0pO2FzeW5jIGZ1bmN0aW9uIExadCh0LGUpe2xldCBpPVoocWdbZV0scWdbdF0pO3JldHVybiBtKGkpP2k6bShlKT8odHlwZW9mIGV4cG9ydHM9PSJvYmplY3QiP2k9WG8oZSk6aT0oYXdhaXQgaW1wb3J0KGUpKS5kZWZhdWx0LHFnW2VdPWksaSk6KHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0Ij9pPVhvKGBXb3JrZXJzLyR7dH1gKTppPShtKGUpP2F3YWl0IGltcG9ydChlKTphd2FpdCBrWnQoYC4vJHt0fS5qc2ApKS5kZWZhdWx0LHFnW3RdPWksaSl9YXN5bmMgZnVuY3Rpb24geVp0KHQsZSl7bGV0IGk9dC5zdWJUYXNrcyxuPWkubGVuZ3RoLHM9bmV3IEFycmF5KG4pO2ZvcihsZXQgbz0wO288bjtvKyspe2xldCByPWlbb10sYT1yLmdlb21ldHJ5LGg9ci5tb2R1bGVOYW1lLEE9ci5tb2R1bGVQYXRoO2lmKG0oaCkmJm0oQSkpdGhyb3cgbmV3IFkoIk11c3Qgb25seSBzZXQgbW9kdWxlTmFtZSBvciBtb2R1bGVQYXRoIik7bShoKXx8bShBKT9zW29dPUxadChoLEEpLnRoZW4oZD0+ZChhLHIub2Zmc2V0KSk6c1tvXT1hfXJldHVybiBQcm9taXNlLmFsbChzKS50aGVuKGZ1bmN0aW9uKG8pe3JldHVybiBUQS5wYWNrQ3JlYXRlR2VvbWV0cnlSZXN1bHRzKG8sZSl9KX12YXIgcWcsd1p0LFVHPVMoKCk9PntPdCgpO0Z0KCk7bXQoKTtLSSgpO05zKCk7V0coKTtxZz17fTt3WnQ9V2koeVp0KX0pO3ZhciBrSXQ9e307SGUoa0l0LHtBbmFseXNpc1dvcmtlcjooKT0+eFp0LENvbmp1bmN0aW9uQXNzZXNzbWVudDooKT0+UFp0LGNvbWJpbmVHZW9tZXRyeTooKT0+Slp0LGNyZWF0ZUJveEdlb21ldHJ5OigpPT5qWnQsY3JlYXRlQm94T3V0bGluZUdlb21ldHJ5OigpPT5IWnQsY3JlYXRlQ2lyY2xlR2VvbWV0cnk6KCk9PnZadCxjcmVhdGVDaXJjbGVPdXRsaW5lR2VvbWV0cnk6KCk9PnpadCxjcmVhdGVDb3BsYW5hclBvbHlnb25HZW9tZXRyeTooKT0+S1p0LGNyZWF0ZUNvcGxhbmFyUG9seWdvbk91dGxpbmVHZW9tZXRyeTooKT0+WFp0LGNyZWF0ZUNvcnJpZG9yR2VvbWV0cnk6KCk9PnFadCxjcmVhdGVDb3JyaWRvck91dGxpbmVHZW9tZXRyeTooKT0+JFp0LGNyZWF0ZUN5bGluZGVyR2VvbWV0cnk6KCk9PnRJdCxjcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeTooKT0+ZUl0LGNyZWF0ZUVsbGlwc2VHZW9tZXRyeTooKT0+aUl0LGNyZWF0ZUVsbGlwc2VPdXRsaW5lR2VvbWV0cnk6KCk9Pm5JdCxjcmVhdGVFbGxpcHNvaWRHZW9tZXRyeTooKT0+c0l0LGNyZWF0ZUVsbGlwc29pZE91dGxpbmVHZW9tZXRyeTooKT0+b0l0LGNyZWF0ZUZydXN0dW1HZW9tZXRyeTooKT0+ckl0LGNyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnk6KCk9PmFJdCxjcmVhdGVHZW9tZXRyeTooKT0+QUl0LGNyZWF0ZUdyb3VuZFBvbHlsaW5lR2VvbWV0cnk6KCk9PmhJdCxjcmVhdGVQbGFuZUdlb21ldHJ5OigpPT5jSXQsY3JlYXRlUGxhbmVPdXRsaW5lR2VvbWV0cnk6KCk9PmxJdCxjcmVhdGVQb2x5Z29uR2VvbWV0cnk6KCk9PmRJdCxjcmVhdGVQb2x5Z29uT3V0bGluZUdlb21ldHJ5OigpPT5tSXQsY3JlYXRlUG9seWxpbmVHZW9tZXRyeTooKT0+Zkl0LGNyZWF0ZVBvbHlsaW5lVm9sdW1lR2VvbWV0cnk6KCk9PkVJdCxjcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeTooKT0+X0l0LGNyZWF0ZVJlY3RhbmdsZUdlb21ldHJ5OigpPT5SSXQsY3JlYXRlUmVjdGFuZ2xlT3V0bGluZUdlb21ldHJ5OigpPT5aSXQsY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeTooKT0+SUl0LGNyZWF0ZVNwaGVyZUdlb21ldHJ5OigpPT5wSXQsY3JlYXRlU3BoZXJlT3V0bGluZUdlb21ldHJ5OigpPT51SXQsY3JlYXRlVGFza1Byb2Nlc3NvcldvcmtlcjooKT0+Q0l0LGNyZWF0ZVZlY3RvclRpbGVDbGFtcGVkUG9seWxpbmVzOigpPT5nSXQsY3JlYXRlVmVjdG9yVGlsZUdlb21ldHJpZXM6KCk9PlRJdCxjcmVhdGVWZWN0b3JUaWxlUG9pbnRzOigpPT5OSXQsY3JlYXRlVmVjdG9yVGlsZVBvbHlnb25zOigpPT5GSXQsY3JlYXRlVmVjdG9yVGlsZVBvbHlsaW5lczooKT0+Ykl0LGNyZWF0ZVZlcnRpY2VzRnJvbUdvb2dsZUVhcnRoRW50ZXJwcmlzZUJ1ZmZlcjooKT0+WUl0LGNyZWF0ZVZlcnRpY2VzRnJvbUhlaWdodG1hcDooKT0+Vkl0LGNyZWF0ZVZlcnRpY2VzRnJvbVF1YW50aXplZFRlcnJhaW5NZXNoOigpPT5TSXQsY3JlYXRlV2FsbEdlb21ldHJ5OigpPT5PSXQsY3JlYXRlV2FsbE91dGxpbmVHZW9tZXRyeTooKT0+Qkl0LGRlY29kZURyYWNvOigpPT5HSXQsZGVjb2RlR29vZ2xlRWFydGhFbnRlcnByaXNlUGFja2V0OigpPT5XSXQsZGVjb2RlSTNTOigpPT5ESXQsdHJhbnNjb2RlS1RYMjooKT0+VUl0LHRyYW5zZmVyVHlwZWRBcnJheVRlc3Q6KCk9Pk1JdCx1cHNhbXBsZVF1YW50aXplZFRlcnJhaW5NZXNoOigpPT5RSXR9KTt2YXIgeFp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+aTAoKSl9LFBadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRTKCkpfSxKWnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5pUygpKX0salp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+clMoKSl9LEhadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmhTKCkpfSx2WnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5JUygpKX0selp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+Z1MoKSl9LEtadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkdTKCkpfSxYWnQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5VUygpKX0scVp0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+WFMoKSl9LCRadD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRPKCkpfSx0SXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5yTygpKX0sZUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+Y08oKSl9LGlJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmRPKCkpfSxuSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5mTygpKX0sc0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+Uk8oKSl9LG9JdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnBPKCkpfSxySXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5GTygpKX0sYUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+U08oKSl9LEFJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlVHKCkpfSxoSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5CTygpKX0sY0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+RE8oKSl9LGxJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlFPKCkpfSxkSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT53TygpKX0sbUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+Sk8oKSl9LGZJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnZPKCkpfSxFSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5YTygpKX0sX0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+dEIoKSl9LFJJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmNCKCkpfSxaSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5tQigpKX0sSUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+X0IoKSl9LHBJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PklCKCkpfSx1SXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5DQigpKX0sQ0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+TnMoKSl9LGdJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlRCKCkpfSxUSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5GQigpKX0sTkl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+VkIoKSl9LEZJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk9CKCkpfSxiSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5XQigpKX0sWUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+TUIoKSl9LFZJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkxCKCkpfSxTSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT54QigpKX0sT0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+dkIoKSl9LEJJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlhCKCkpfSxHSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5uRygpKX0sV0l0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+cEcoKSl9LERJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk5HKCkpfSxVSXQ9KCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5TRygpKX0sTUl0PSgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+T0coKSl9LFFJdD0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkdHKCkpfTtyZXR1cm4gT1goa0l0KTt9KSgpOwo=")});var KO=Zo((tOe,wct)=>{var eOe=b(W()),Zb=function(t){t==null&&(t=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,t.constructor==Array?this.init_by_array(t,t.length):this.init_seed(t)};Zb.prototype.init_seed=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(((t&4294901760)>>>16)*1812433253<<16)+(t&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};Zb.prototype.init_by_array=function(t,e){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>e?this.N:e;o;o--){var a=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((a&4294901760)>>>16)*1664525<<16)+(a&65535)*1664525)+t[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=e&&(i=0)}for(o=this.N-1;o;o--){var a=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((a&4294901760)>>>16)*1566083941<<16)+(a&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};Zb.prototype.random_int=function(){var t,e=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n>>1^e[t&1];for(;n>>1^e[t&1];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^e[t&1],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0};Zb.prototype.random_int31=function(){return this.random_int()>>>1};Zb.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};Zb.prototype.random=function(){return this.random_int()*(1/4294967296)};Zb.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};Zb.prototype.random_long=function(){var t=this.random_int()>>>5,e=this.random_int()>>>6;return(t*67108864+e)*(1/9007199254740992)};wct.exports=Zb});var Rmt=Zo((jg,qg)=>{var Lwe=b(W());/*! https://mths.be/punycode v1.4.0 by @mathias */(function(t){var e=typeof jg=="object"&&jg&&!jg.nodeType&&jg,n=typeof qg=="object"&&qg&&!qg.nodeType&&qg,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(t=i);var o,a=2147483647,s=36,l=1,r=26,d=38,m=700,h=72,u=128,R="-",V=/^xn--/,F=/[^\x20-\x7E]/,U=/[\x2E\u3002\uFF0E\uFF61]/g,G={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},A=s-l,S=Math.floor,g=String.fromCharCode,C;function y(w){throw new RangeError(G[w])}function Y(w,z){for(var H=w.length,nt=[];H--;)nt[H]=z(w[H]);return nt}function Q(w,z){var H=w.split("@"),nt="";H.length>1&&(nt=H[0]+"@",w=H[1]),w=w.replace(U,".");var $=w.split("."),dt=Y($,z).join(".");return nt+dt}function J(w){for(var z=[],H=0,nt=w.length,$,dt;H=55296&&$<=56319&&H65535&&(z-=65536,H+=g(z>>>10&1023|55296),z=56320|z&1023),H+=g(z),H}).join("")}function Z(w){return w-48<10?w-22:w-65<26?w-65:w-97<26?w-97:s}function E(w,z){return w+22+75*(w<26)-((z!=0)<<5)}function I(w,z,H){var nt=0;for(w=H?S(w/m):w>>1,w+=S(w/z);w>A*r>>1;nt+=s)w=S(w/A);return S(nt+(A+1)*w/(w+d))}function B(w){var z=[],H=w.length,nt,$=0,dt=u,q=h,at,st,Et,Qt,Wt,Nt,kt,Mt,qt;for(at=w.lastIndexOf(R),at<0&&(at=0),st=0;st=128&&y("not-basic"),z.push(w.charCodeAt(st));for(Et=at>0?at+1:0;Et=H&&y("invalid-input"),kt=Z(w.charCodeAt(Et++)),(kt>=s||kt>S((a-$)/Wt))&&y("overflow"),$+=kt*Wt,Mt=Nt<=q?l:Nt>=q+r?r:Nt-q,!(ktS(a/qt)&&y("overflow"),Wt*=qt;nt=z.length+1,q=I($-Qt,nt,Qt==0),S($/nt)>a-dt&&y("overflow"),dt+=S($/nt),$%=nt,z.splice($++,0,dt)}return M(z)}function X(w){var z,H,nt,$,dt,q,at,st,Et,Qt,Wt,Nt=[],kt,Mt,qt,ie;for(w=J(w),kt=w.length,z=u,H=0,dt=h,q=0;q=z&&WtS((a-H)/Mt)&&y("overflow"),H+=(at-z)*Mt,z=at,q=0;qa&&y("overflow"),Wt==z){for(st=H,Et=s;Qt=Et<=dt?l:Et>=dt+r?r:Et-dt,!(st{var Mwe=b(W());/*! * URI.js - Mutating URLs * IPv6 Support * @@ -35,7 +35,7 @@ var Cesium=(()=>{var pMt=Object.create;var PO=Object.defineProperty;var uMt=Obje * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - */(function(t,e){"use strict";typeof ZH=="object"&&ZH.exports?ZH.exports=e():typeof define=="function"&&define.amd?define(e):t.IPv6=e(t)})(Rmt,function(t){"use strict";var e=t&&t.IPv6;function n(o){var a=o.toLowerCase(),s=a.split(":"),l=s.length,r=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[l-1]===""&&s[l-2]===""&&s.pop(),l=s.length,s[l-1].indexOf(".")!==-1&&(r=7);var d;for(d=0;d1);Z++)m.splice(0,1);s[h]=m.join("")}var b=-1,u=0,F=0,U=-1,G=!1;for(h=0;hu&&(b=U,u=F)):s[h]==="0"&&(G=!0,U=h,F=1);F>u&&(b=U,u=F),u>1&&s.splice(b,u,""),l=s.length;var A="";for(s[0]===""&&(A=":"),h=0;h{var _we=R(W());/*! + */(function(t,e){"use strict";typeof uH=="object"&&uH.exports?uH.exports=e():typeof define=="function"&&define.amd?define(e):t.IPv6=e(t)})(bmt,function(t){"use strict";var e=t&&t.IPv6;function n(o){var a=o.toLowerCase(),s=a.split(":"),l=s.length,r=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[l-1]===""&&s[l-2]===""&&s.pop(),l=s.length,s[l-1].indexOf(".")!==-1&&(r=7);var d;for(d=0;d1);u++)m.splice(0,1);s[h]=m.join("")}var R=-1,V=0,F=0,U=-1,G=!1;for(h=0;hV&&(R=U,V=F)):s[h]==="0"&&(G=!0,U=h,F=1);F>V&&(R=U,V=F),V>1&&s.splice(R,V,""),l=s.length;var A="";for(s[0]===""&&(A=":"),h=0;h{var _we=b(W());/*! * URI.js - Mutating URLs * Second Level Domain (SLD) Support * @@ -47,7 +47,7 @@ var Cesium=(()=>{var pMt=Object.create;var PO=Object.defineProperty;var uMt=Obje * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - */(function(t,e){"use strict";typeof VH=="object"&&VH.exports?VH.exports=e():typeof define=="function"&&define.amd?define(e):t.SecondLevelDomains=e(t)})(fmt,function(t){"use strict";var e=t&&t.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var a=i.lastIndexOf(".",o-1);if(a<=0||a>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(a+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var a=i.lastIndexOf(".",o-1);if(a>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var a=i.lastIndexOf(".",o-1);if(a<=0||a>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(a+1,o)+" ")<0?null:i.slice(a+1)},noConflict:function(){return t.SecondLevelDomains===this&&(t.SecondLevelDomains=e),this}};return n})});var uh=Vo((Umt,bH)=>{var Dwe=R(W());/*! + */(function(t,e){"use strict";typeof ZH=="object"&&ZH.exports?ZH.exports=e():typeof define=="function"&&define.amd?define(e):t.SecondLevelDomains=e(t)})(fmt,function(t){"use strict";var e=t&&t.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var a=i.lastIndexOf(".",o-1);if(a<=0||a>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(a+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var a=i.lastIndexOf(".",o-1);if(a>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var a=i.lastIndexOf(".",o-1);if(a<=0||a>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(a+1,o)+" ")<0?null:i.slice(a+1)},noConflict:function(){return t.SecondLevelDomains===this&&(t.SecondLevelDomains=e),this}};return n})});var Vh=Zo((Umt,RH)=>{var Dwe=b(W());/*! * URI.js - Mutating URLs * * Version: 1.19.11 @@ -58,18 +58,18 @@ var Cesium=(()=>{var pMt=Object.create;var PO=Object.defineProperty;var uMt=Obje * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - */(function(t,e){"use strict";typeof bH=="object"&&bH.exports?bH.exports=e(bmt(),Wmt(),Fmt()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],e):t.URI=e(t.punycode,t.IPv6,t.SecondLevelDomains,t)})(Umt,function(t,e,n,i){"use strict";var o=i&&i.URI;function a(E,I){var B=arguments.length>=1,X=arguments.length>=2;if(!(this instanceof a))return B?X?new a(E,I):new a(E):new a;if(E===void 0){if(B)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?E=location.href+"":E=""}if(E===null&&B)throw new TypeError("null is not a valid argument for URI");return this.href(E),I!==void 0?this.absoluteTo(I):this}function s(E){return/^[0-9]+$/.test(E)}a.version="1.19.11";var l=a.prototype,r=Object.prototype.hasOwnProperty;function d(E){return E.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function m(E){return E===void 0?"Undefined":String(Object.prototype.toString.call(E)).slice(8,-1)}function h(E){return m(E)==="Array"}function Z(E,I){var B={},X,_;if(m(I)==="RegExp")B=null;else if(h(I))for(X=0,_=I.length;X<_;X++)B[I[X]]=!0;else B[I]=!0;for(X=0,_=E.length;X<_;X++){var P=B&&B[E[X]]!==void 0||!B&&I.test(E[X]);P&&(E.splice(X,1),_--,X--)}return E}function b(E,I){var B,X;if(h(I)){for(B=0,X=I.length;B]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,a.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},a.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,a.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},a.hostProtocols=["http","https"],a.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,a.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},a.getDomAttribute=function(E){if(!(!E||!E.nodeName)){var I=E.nodeName.toLowerCase();if(!(I==="input"&&E.type!=="image"))return a.domAttributes[I]}};function U(E){return escape(E)}function G(E){return encodeURIComponent(E).replace(/[!'()*]/g,U).replace(/\*/g,"%2A")}a.encode=G,a.decode=decodeURIComponent,a.iso8859=function(){a.encode=escape,a.decode=unescape},a.unicode=function(){a.encode=G,a.decode=decodeURIComponent},a.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},a.encodeQuery=function(E,I){var B=a.encode(E+"");return I===void 0&&(I=a.escapeQuerySpace),I?B.replace(/%20/g,"+"):B},a.decodeQuery=function(E,I){E+="",I===void 0&&(I=a.escapeQuerySpace);try{return a.decode(I?E.replace(/\+/g,"%20"):E)}catch{return E}};var A={encode:"encode",decode:"decode"},T,g=function(E,I){return function(B){try{return a[I](B+"").replace(a.characters[E][I].expression,function(X){return a.characters[E][I].map[X]})}catch{return B}}};for(T in A)a[T+"PathSegment"]=g("pathname",A[T]),a[T+"UrnPathSegment"]=g("urnpath",A[T]);var C=function(E,I,B){return function(X){var _;B?_=function(H){return a[I](a[B](H))}:_=a[I];for(var P=(X+"").split(E),w=0,z=P.length;w-1&&(I.fragment=E.substring(B+1)||null,E=E.substring(0,B)),B=E.indexOf("?"),B>-1&&(I.query=E.substring(B+1)||null,E=E.substring(0,B)),E=E.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),E=E.replace(/^[/\\]{2,}/i,"//"),E.substring(0,2)==="//"?(I.protocol=null,E=E.substring(2),E=a.parseAuthority(E,I)):(B=E.indexOf(":"),B>-1&&(I.protocol=E.substring(0,B)||null,I.protocol&&!I.protocol.match(a.protocol_expression)?I.protocol=void 0:E.substring(B+1,B+3).replace(/\\/g,"/")==="//"?(E=E.substring(B+3),E=a.parseAuthority(E,I)):(E=E.substring(B+1),I.urn=!0))),I.path=E,I},a.parseHost=function(E,I){E||(E=""),E=E.replace(/\\/g,"/");var B=E.indexOf("/"),X,_;if(B===-1&&(B=E.length),E.charAt(0)==="[")X=E.indexOf("]"),I.hostname=E.substring(1,X)||null,I.port=E.substring(X+2,B)||null,I.port==="/"&&(I.port=null);else{var P=E.indexOf(":"),w=E.indexOf("/"),z=E.indexOf(":",P+1);z!==-1&&(w===-1||z-1?_:E.length-1),w;return P>-1&&(_===-1||P<_)?(w=E.substring(0,P).split(":"),I.username=w[0]?a.decode(w[0]):null,w.shift(),I.password=w[0]?a.decode(w.join(":")):null,E=B.substring(P+1)):(I.username=null,I.password=null),E},a.parseQuery=function(E,I){if(!E)return{};if(E=E.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!E)return{};for(var B={},X=E.split("&"),_=X.length,P,w,z,H=0;H<_;H++)P=X[H].split("="),w=a.decodeQuery(P.shift(),I),z=P.length?a.decodeQuery(P.join("="),I):null,w!=="__proto__"&&(r.call(B,w)?((typeof B[w]=="string"||B[w]===null)&&(B[w]=[B[w]]),B[w].push(z)):B[w]=z);return B},a.build=function(E){var I="",B=!1;return E.protocol&&(I+=E.protocol+":"),!E.urn&&(I||E.hostname)&&(I+="//",B=!0),I+=a.buildAuthority(E)||"",typeof E.path=="string"&&(E.path.charAt(0)!=="/"&&B&&(I+="/"),I+=E.path),typeof E.query=="string"&&E.query&&(I+="?"+E.query),typeof E.fragment=="string"&&E.fragment&&(I+="#"+E.fragment),I},a.buildHost=function(E){var I="";if(E.hostname)a.ip6_expression.test(E.hostname)?I+="["+E.hostname+"]":I+=E.hostname;else return"";return E.port&&(I+=":"+E.port),I},a.buildAuthority=function(E){return a.buildUserinfo(E)+a.buildHost(E)},a.buildUserinfo=function(E){var I="";return E.username&&(I+=a.encode(E.username)),E.password&&(I+=":"+a.encode(E.password)),I&&(I+="@"),I},a.buildQuery=function(E,I,B){var X="",_,P,w,z;for(P in E)if(P!=="__proto__"&&r.call(E,P))if(h(E[P]))for(_={},w=0,z=E[P].length;w-1?q=q.slice(0,at)+q.slice(at).replace(P,""):q=q.replace(P,""),!(q.length<=H[0].length)&&!(B.ignore&&B.ignore.test(q))){dt=nt+q.length;var Qt=I(q,nt,dt,E);if(Qt===void 0){X.lastIndex=dt;continue}Qt=String(Qt),E=E.slice(0,nt)+Qt+E.slice(dt),X.lastIndex=nt+Qt.length}}return X.lastIndex=0,E},a.ensureValidHostname=function(E,I){var B=!!E,X=!!I,_=!1;if(X&&(_=b(a.hostProtocols,I)),_&&!B)throw new TypeError("Hostname cannot be empty, if protocol is "+I);if(E&&E.match(a.invalid_hostname_characters)){if(!t)throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(t.toASCII(E).match(a.invalid_hostname_characters))throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-:_]')}},a.ensureValidPort=function(E){if(E){var I=Number(E);if(!(s(I)&&I>0&&I<65536))throw new TypeError('Port "'+E+'" is not a valid port')}},a.noConflict=function(E){if(E){var I={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(I.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(I.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(I.SecondLevelDomains=i.SecondLevelDomains.noConflict()),I}else i.URI===this&&(i.URI=o);return this},l.build=function(E){return E===!0?this._deferred_build=!0:(E===void 0||this._deferred_build)&&(this._string=a.build(this._parts),this._deferred_build=!1),this},l.clone=function(){return new a(this)},l.valueOf=l.toString=function(){return this.build(!1)._string};function y(E){return function(I,B){return I===void 0?this._parts[E]||"":(this._parts[E]=I||null,this.build(!B),this)}}function Y(E,I){return function(B,X){return B===void 0?this._parts[E]||"":(B!==null&&(B=B+"",B.charAt(0)===I&&(B=B.substring(1))),this._parts[E]=B,this.build(!X),this)}}l.protocol=y("protocol"),l.username=y("username"),l.password=y("password"),l.hostname=y("hostname"),l.port=y("port"),l.query=Y("query","?"),l.fragment=Y("fragment","#"),l.search=function(E,I){var B=this.query(E,I);return typeof B=="string"&&B.length?"?"+B:B},l.hash=function(E,I){var B=this.fragment(E,I);return typeof B=="string"&&B.length?"#"+B:B},l.pathname=function(E,I){if(E===void 0||E===!0){var B=this._parts.path||(this._parts.hostname?"/":"");return E?(this._parts.urn?a.decodeUrnPath:a.decodePath)(B):B}else return this._parts.urn?this._parts.path=E?a.recodeUrnPath(E):"":this._parts.path=E?a.recodePath(E):"/",this.build(!I),this},l.path=l.pathname,l.href=function(E,I){var B;if(E===void 0)return this.toString();this._string="",this._parts=a._parts();var X=E instanceof a,_=typeof E=="object"&&(E.hostname||E.path||E.pathname);if(E.nodeName){var P=a.getDomAttribute(E);E=E[P]||"",_=!1}if(!X&&_&&E.pathname!==void 0&&(E=E.toString()),typeof E=="string"||E instanceof String)this._parts=a.parse(String(E),this._parts);else if(X||_){var w=X?E._parts:E;for(B in w)B!=="query"&&r.call(this._parts,B)&&(this._parts[B]=w[B]);w.query&&this.query(w.query,!1)}else throw new TypeError("invalid input");return this.build(!I),this},l.is=function(E){var I=!1,B=!1,X=!1,_=!1,P=!1,w=!1,z=!1,H=!this._parts.urn;switch(this._parts.hostname&&(H=!1,B=a.ip4_expression.test(this._parts.hostname),X=a.ip6_expression.test(this._parts.hostname),I=B||X,_=!I,P=_&&n&&n.has(this._parts.hostname),w=_&&a.idn_expression.test(this._parts.hostname),z=_&&a.punycode_expression.test(this._parts.hostname)),E.toLowerCase()){case"relative":return H;case"absolute":return!H;case"domain":case"name":return _;case"sld":return P;case"ip":return I;case"ip4":case"ipv4":case"inet4":return B;case"ip6":case"ipv6":case"inet6":return X;case"idn":return w;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var Q=l.protocol,J=l.port,M=l.hostname;l.protocol=function(E,I){if(E&&(E=E.replace(/:(\/\/)?$/,""),!E.match(a.protocol_expression)))throw new TypeError('Protocol "'+E+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return Q.call(this,E,I)},l.scheme=l.protocol,l.port=function(E,I){return this._parts.urn?E===void 0?"":this:(E!==void 0&&(E===0&&(E=null),E&&(E+="",E.charAt(0)===":"&&(E=E.substring(1)),a.ensureValidPort(E))),J.call(this,E,I))},l.hostname=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E!==void 0){var B={preventInvalidHostname:this._parts.preventInvalidHostname},X=a.parseHost(E,B);if(X!=="/")throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-]');E=B.hostname,this._parts.preventInvalidHostname&&a.ensureValidHostname(E,this._parts.protocol)}return M.call(this,E,I)},l.origin=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0){var B=this.protocol(),X=this.authority();return X?(B?B+"://":"")+this.authority():""}else{var _=a(E);return this.protocol(_.protocol()).authority(_.authority()).build(!I),this}},l.host=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0)return this._parts.hostname?a.buildHost(this._parts):"";var B=a.parseHost(E,this._parts);if(B!=="/")throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-]');return this.build(!I),this},l.authority=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0)return this._parts.hostname?a.buildAuthority(this._parts):"";var B=a.parseAuthority(E,this._parts);if(B!=="/")throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-]');return this.build(!I),this},l.userinfo=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0){var B=a.buildUserinfo(this._parts);return B&&B.substring(0,B.length-1)}else return E[E.length-1]!=="@"&&(E+="@"),a.parseUserinfo(E,this._parts),this.build(!I),this},l.resource=function(E,I){var B;return E===void 0?this.path()+this.search()+this.hash():(B=a.parse(E),this._parts.path=B.path,this._parts.query=B.query,this._parts.fragment=B.fragment,this.build(!I),this)},l.subdomain=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0){if(!this._parts.hostname||this.is("IP"))return"";var B=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,B)||""}else{var X=this._parts.hostname.length-this.domain().length,_=this._parts.hostname.substring(0,X),P=new RegExp("^"+d(_));if(E&&E.charAt(E.length-1)!=="."&&(E+="."),E.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return E&&a.ensureValidHostname(E,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(P,E),this.build(!I),this}},l.domain=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(typeof E=="boolean"&&(I=E,E=void 0),E===void 0){if(!this._parts.hostname||this.is("IP"))return"";var B=this._parts.hostname.match(/\./g);if(B&&B.length<2)return this._parts.hostname;var X=this._parts.hostname.length-this.tld(I).length-1;return X=this._parts.hostname.lastIndexOf(".",X-1)+1,this._parts.hostname.substring(X)||""}else{if(!E)throw new TypeError("cannot set domain empty");if(E.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(a.ensureValidHostname(E,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=E;else{var _=new RegExp(d(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(_,E)}return this.build(!I),this}},l.tld=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(typeof E=="boolean"&&(I=E,E=void 0),E===void 0){if(!this._parts.hostname||this.is("IP"))return"";var B=this._parts.hostname.lastIndexOf("."),X=this._parts.hostname.substring(B+1);return I!==!0&&n&&n.list[X.toLowerCase()]&&n.get(this._parts.hostname)||X}else{var _;if(E)if(E.match(/[^a-zA-Z0-9-]/))if(n&&n.is(E))_=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(_,E);else throw new TypeError('TLD "'+E+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");_=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(_,E)}else throw new TypeError("cannot set TLD empty");return this.build(!I),this}},l.directory=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0||E===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var B=this._parts.path.length-this.filename().length-1,X=this._parts.path.substring(0,B)||(this._parts.hostname?"/":"");return E?a.decodePath(X):X}else{var _=this._parts.path.length-this.filename().length,P=this._parts.path.substring(0,_),w=new RegExp("^"+d(P));return this.is("relative")||(E||(E="/"),E.charAt(0)!=="/"&&(E="/"+E)),E&&E.charAt(E.length-1)!=="/"&&(E+="/"),E=a.recodePath(E),this._parts.path=this._parts.path.replace(w,E),this.build(!I),this}},l.filename=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(typeof E!="string"){if(!this._parts.path||this._parts.path==="/")return"";var B=this._parts.path.lastIndexOf("/"),X=this._parts.path.substring(B+1);return E?a.decodePathSegment(X):X}else{var _=!1;E.charAt(0)==="/"&&(E=E.substring(1)),E.match(/\.?\//)&&(_=!0);var P=new RegExp(d(this.filename())+"$");return E=a.recodePath(E),this._parts.path=this._parts.path.replace(P,E),_?this.normalizePath(I):this.build(!I),this}},l.suffix=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0||E===!0){if(!this._parts.path||this._parts.path==="/")return"";var B=this.filename(),X=B.lastIndexOf("."),_,P;return X===-1?"":(_=B.substring(X+1),P=/^[a-z0-9%]+$/i.test(_)?_:"",E?a.decodePathSegment(P):P)}else{E.charAt(0)==="."&&(E=E.substring(1));var w=this.suffix(),z;if(w)E?z=new RegExp(d(w)+"$"):z=new RegExp(d("."+w)+"$");else{if(!E)return this;this._parts.path+="."+a.recodePath(E)}return z&&(E=a.recodePath(E),this._parts.path=this._parts.path.replace(z,E)),this.build(!I),this}},l.segment=function(E,I,B){var X=this._parts.urn?":":"/",_=this.path(),P=_.substring(0,1)==="/",w=_.split(X);if(E!==void 0&&typeof E!="number"&&(B=I,I=E,E=void 0),E!==void 0&&typeof E!="number")throw new Error('Bad segment "'+E+'", must be 0-based integer');if(P&&w.shift(),E<0&&(E=Math.max(w.length+E,0)),I===void 0)return E===void 0?w:w[E];if(E===null||w[E]===void 0)if(h(I)){w=[];for(var z=0,H=I.length;z{var uAn=R(W());/*! @license DOMPurify 3.1.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.2/LICENSE */(function(t,e){typeof Uq=="object"&&typeof Gq<"u"?Gq.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self,t.DOMPurify=e())})(Uq,function(){"use strict";let{entries:t,setPrototypeOf:e,isFrozen:n,getPrototypeOf:i,getOwnPropertyDescriptor:o}=Object,{freeze:a,seal:s,create:l}=Object,{apply:r,construct:d}=typeof Reflect<"u"&&Reflect;a||(a=function(zt){return zt}),s||(s=function(zt){return zt}),r||(r=function(zt,ke,ue){return zt.apply(ke,ue)}),d||(d=function(zt,ke){return new zt(...ke)});let m=y(Array.prototype.forEach),h=y(Array.prototype.pop),Z=y(Array.prototype.push),b=y(String.prototype.toLowerCase),u=y(String.prototype.toString),F=y(String.prototype.match),U=y(String.prototype.replace),G=y(String.prototype.indexOf),A=y(String.prototype.trim),T=y(Object.prototype.hasOwnProperty),g=y(RegExp.prototype.test),C=Y(TypeError);function y(de){return function(zt){for(var ke=arguments.length,ue=new Array(ke>1?ke-1:0),We=1;We2&&arguments[2]!==void 0?arguments[2]:b;e&&e(de,null);let ue=zt.length;for(;ue--;){let We=zt[ue];if(typeof We=="string"){let un=ke(We);un!==We&&(n(zt)||(zt[ue]=un),We=un)}de[We]=!0}return de}function J(de){for(let zt=0;zt/gm),at=s(/\${[\w\W]*}/gm),st=s(/^data-[\-\w.\u00B7-\uFFFF]/),Et=s(/^aria-[\-\w]+$/),Qt=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Wt=s(/^(?:\w+script|data):/i),Nt=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),kt=s(/^html$/i),Mt=s(/^[a-z][.\w]*(-[.\w]+)+$/i);var qt=Object.freeze({__proto__:null,MUSTACHE_EXPR:dt,ERB_EXPR:q,TMPLIT_EXPR:at,DATA_ATTR:st,ARIA_ATTR:Et,IS_ALLOWED_URI:Qt,IS_SCRIPT_OR_DATA:Wt,ATTR_WHITESPACE:Nt,DOCTYPE_NAME:kt,CUSTOM_ELEMENT:Mt});let ie=function(){return typeof window>"u"?null:window},oe=function(zt,ke){if(typeof zt!="object"||typeof zt.createPolicy!="function")return null;let ue=null,We="data-tt-policy-suffix";ke&&ke.hasAttribute(We)&&(ue=ke.getAttribute(We));let un="dompurify"+(ue?"#"+ue:"");try{return zt.createPolicy(un,{createHTML(Ct){return Ct},createScriptURL(Ct){return Ct}})}catch{return console.warn("TrustedTypes policy "+un+" could not be created."),null}};function He(){let de=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ie(),zt=Zn=>He(Zn);if(zt.version="3.1.2",zt.removed=[],!de||!de.document||de.document.nodeType!==9)return zt.isSupported=!1,zt;let{document:ke}=de,ue=ke,We=ue.currentScript,{DocumentFragment:un,HTMLTemplateElement:Ct,Node:_t,Element:Je,NodeFilter:xe,NamedNodeMap:oo=de.NamedNodeMap||de.MozNamedAttrMap,HTMLFormElement:ea,DOMParser:gs,trustedTypes:is}=de,ja=Je.prototype,qn=V(ja,"cloneNode"),ae=V(ja,"nextSibling"),fe=V(ja,"childNodes"),ge=V(ja,"parentNode");if(typeof Ct=="function"){let Zn=ke.createElement("template");Zn.content&&Zn.content.ownerDocument&&(ke=Zn.content.ownerDocument)}let Ze,Ke="",{implementation:An,createNodeIterator:si,createDocumentFragment:da,getElementsByTagName:_a}=ke,{importNode:bl}=ue,na={};zt.isSupported=typeof t=="function"&&typeof ge=="function"&&An&&An.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Go,ERB_EXPR:Ao,TMPLIT_EXPR:Xs,DATA_ATTR:Es,ARIA_ATTR:wl,IS_SCRIPT_OR_DATA:ka,ATTR_WHITESPACE:Wa,CUSTOM_ELEMENT:Ju}=qt,{IS_ALLOWED_URI:yl}=qt,Bi=null,sd=Q({},[...E,...I,...B,..._,...w]),zi=null,js=Q({},[...z,...H,...nt,...$]),ca=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),$n=null,mr=null,hr=!0,pr=!0,hs=!1,ma=!0,Ed=!1,BW=!0,Rc=!1,$b=!1,Zp=!1,Lu=!1,QW=!1,tR=!1,kW=!0,YW=!1,pg="user-content-",MU=!0,lh=!1,Vp={},lm=null,_U=Q({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),DU=null,Mu=Q({},["audio","video","img","source","image","track"]),eR=null,ug=Q({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),bp="http://www.w3.org/1998/Math/MathML",Rp="http://www.w3.org/2000/svg",kr="http://www.w3.org/1999/xhtml",fV=kr,xW=!1,XW=null,OU=Q({},[bp,Rp,kr],u),nR=null,rh=["application/xhtml+xml","text/html"],HU="text/html",Js=null,ld=null,iR=255,wU=ke.createElement("form"),PU=function(Kt){return Kt instanceof RegExp||Kt instanceof Function},JW=function(){let Kt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ld&&ld===Kt)){if((!Kt||typeof Kt!="object")&&(Kt={}),Kt=M(Kt),nR=rh.indexOf(Kt.PARSER_MEDIA_TYPE)===-1?HU:Kt.PARSER_MEDIA_TYPE,Js=nR==="application/xhtml+xml"?u:b,Bi=T(Kt,"ALLOWED_TAGS")?Q({},Kt.ALLOWED_TAGS,Js):sd,zi=T(Kt,"ALLOWED_ATTR")?Q({},Kt.ALLOWED_ATTR,Js):js,XW=T(Kt,"ALLOWED_NAMESPACES")?Q({},Kt.ALLOWED_NAMESPACES,u):OU,eR=T(Kt,"ADD_URI_SAFE_ATTR")?Q(M(ug),Kt.ADD_URI_SAFE_ATTR,Js):ug,DU=T(Kt,"ADD_DATA_URI_TAGS")?Q(M(Mu),Kt.ADD_DATA_URI_TAGS,Js):Mu,lm=T(Kt,"FORBID_CONTENTS")?Q({},Kt.FORBID_CONTENTS,Js):_U,$n=T(Kt,"FORBID_TAGS")?Q({},Kt.FORBID_TAGS,Js):{},mr=T(Kt,"FORBID_ATTR")?Q({},Kt.FORBID_ATTR,Js):{},Vp=T(Kt,"USE_PROFILES")?Kt.USE_PROFILES:!1,hr=Kt.ALLOW_ARIA_ATTR!==!1,pr=Kt.ALLOW_DATA_ATTR!==!1,hs=Kt.ALLOW_UNKNOWN_PROTOCOLS||!1,ma=Kt.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ed=Kt.SAFE_FOR_TEMPLATES||!1,BW=Kt.SAFE_FOR_XML!==!1,Rc=Kt.WHOLE_DOCUMENT||!1,Lu=Kt.RETURN_DOM||!1,QW=Kt.RETURN_DOM_FRAGMENT||!1,tR=Kt.RETURN_TRUSTED_TYPE||!1,Zp=Kt.FORCE_BODY||!1,kW=Kt.SANITIZE_DOM!==!1,YW=Kt.SANITIZE_NAMED_PROPS||!1,MU=Kt.KEEP_CONTENT!==!1,lh=Kt.IN_PLACE||!1,yl=Kt.ALLOWED_URI_REGEXP||Qt,fV=Kt.NAMESPACE||kr,ca=Kt.CUSTOM_ELEMENT_HANDLING||{},Kt.CUSTOM_ELEMENT_HANDLING&&PU(Kt.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ca.tagNameCheck=Kt.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Kt.CUSTOM_ELEMENT_HANDLING&&PU(Kt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ca.attributeNameCheck=Kt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Kt.CUSTOM_ELEMENT_HANDLING&&typeof Kt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ca.allowCustomizedBuiltInElements=Kt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ed&&(pr=!1),QW&&(Lu=!0),Vp&&(Bi=Q({},w),zi=[],Vp.html===!0&&(Q(Bi,E),Q(zi,z)),Vp.svg===!0&&(Q(Bi,I),Q(zi,H),Q(zi,$)),Vp.svgFilters===!0&&(Q(Bi,B),Q(zi,H),Q(zi,$)),Vp.mathMl===!0&&(Q(Bi,_),Q(zi,nt),Q(zi,$))),Kt.ADD_TAGS&&(Bi===sd&&(Bi=M(Bi)),Q(Bi,Kt.ADD_TAGS,Js)),Kt.ADD_ATTR&&(zi===js&&(zi=M(zi)),Q(zi,Kt.ADD_ATTR,Js)),Kt.ADD_URI_SAFE_ATTR&&Q(eR,Kt.ADD_URI_SAFE_ATTR,Js),Kt.FORBID_CONTENTS&&(lm===_U&&(lm=M(lm)),Q(lm,Kt.FORBID_CONTENTS,Js)),MU&&(Bi["#text"]=!0),Rc&&Q(Bi,["html","head","body"]),Bi.table&&(Q(Bi,["tbody"]),delete $n.tbody),Kt.TRUSTED_TYPES_POLICY){if(typeof Kt.TRUSTED_TYPES_POLICY.createHTML!="function")throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Kt.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');Ze=Kt.TRUSTED_TYPES_POLICY,Ke=Ze.createHTML("")}else Ze===void 0&&(Ze=oe(is,We)),Ze!==null&&typeof Ke=="string"&&(Ke=Ze.createHTML(""));a&&a(Kt),ld=Kt}},FV=Q({},["mi","mo","mn","ms","mtext"]),vU=Q({},["foreignobject","annotation-xml"]),Zg=Q({},["title","style","font","a","script"]),Vg=Q({},[...I,...B,...X]),oR=Q({},[..._,...P]),SN=function(Kt){let De=ge(Kt);(!De||!De.tagName)&&(De={namespaceURI:fV,tagName:"template"});let ti=b(Kt.tagName),Hi=b(De.tagName);return XW[Kt.namespaceURI]?Kt.namespaceURI===Rp?De.namespaceURI===kr?ti==="svg":De.namespaceURI===bp?ti==="svg"&&(Hi==="annotation-xml"||FV[Hi]):!!Vg[ti]:Kt.namespaceURI===bp?De.namespaceURI===kr?ti==="math":De.namespaceURI===Rp?ti==="math"&&vU[Hi]:!!oR[ti]:Kt.namespaceURI===kr?De.namespaceURI===Rp&&!vU[Hi]||De.namespaceURI===bp&&!FV[Hi]?!1:!oR[ti]&&(Zg[ti]||!Vg[ti]):!!(nR==="application/xhtml+xml"&&XW[Kt.namespaceURI]):!1},Cd=function(Kt){Z(zt.removed,{element:Kt});try{Kt.parentNode.removeChild(Kt)}catch{Kt.remove()}},KU=function(Kt,De){try{Z(zt.removed,{attribute:De.getAttributeNode(Kt),from:De})}catch{Z(zt.removed,{attribute:null,from:De})}if(De.removeAttribute(Kt),Kt==="is"&&!zi[Kt])if(Lu||QW)try{Cd(De)}catch{}else try{De.setAttribute(Kt,"")}catch{}},bg=function(Kt){let De=null,ti=null;if(Zp)Kt=""+Kt;else{let Pl=F(Kt,/^[\r\n\t ]+/);ti=Pl&&Pl[0]}nR==="application/xhtml+xml"&&fV===kr&&(Kt=''+Kt+"");let Hi=Ze?Ze.createHTML(Kt):Kt;if(fV===kr)try{De=new gs().parseFromString(Hi,nR)}catch{}if(!De||!De.documentElement){De=An.createDocument(fV,"template",null);try{De.documentElement.innerHTML=xW?Ke:Hi}catch{}}let Rl=De.body||De.documentElement;return Kt&&ti&&Rl.insertBefore(ke.createTextNode(ti),Rl.childNodes[0]||null),fV===kr?_a.call(De,Rc?"html":"body")[0]:Rc?De.documentElement:Rl},rm=function(Kt){return si.call(Kt.ownerDocument||Kt,Kt,xe.SHOW_ELEMENT|xe.SHOW_COMMENT|xe.SHOW_TEXT|xe.SHOW_PROCESSING_INSTRUCTION|xe.SHOW_CDATA_SECTION,null)},Rg=function(Kt){return Kt instanceof ea&&(typeof Kt.__depth<"u"&&typeof Kt.__depth!="number"||typeof Kt.__removalCount<"u"&&typeof Kt.__removalCount!="number"||typeof Kt.nodeName!="string"||typeof Kt.textContent!="string"||typeof Kt.removeChild!="function"||!(Kt.attributes instanceof oo)||typeof Kt.removeAttribute!="function"||typeof Kt.setAttribute!="function"||typeof Kt.namespaceURI!="string"||typeof Kt.insertBefore!="function"||typeof Kt.hasChildNodes!="function")},LW=function(Kt){return typeof _t=="function"&&Kt instanceof _t},Id=function(Kt,De,ti){na[Kt]&&m(na[Kt],Hi=>{Hi.call(zt,De,ti,ld)})},MW=function(Kt){let De=null;if(Id("beforeSanitizeElements",Kt,null),Rg(Kt))return Cd(Kt),!0;let ti=Js(Kt.nodeName);if(Id("uponSanitizeElement",Kt,{tagName:ti,allowedTags:Bi}),Kt.hasChildNodes()&&!LW(Kt.firstElementChild)&&g(/<[/\w]/g,Kt.innerHTML)&&g(/<[/\w]/g,Kt.textContent)||Kt.nodeType===7||BW&&Kt.nodeType===8&&g(/<[/\w]/g,Kt.data))return Cd(Kt),!0;if(!Bi[ti]||$n[ti]){if(!$n[ti]&&fg(ti)&&(ca.tagNameCheck instanceof RegExp&&g(ca.tagNameCheck,ti)||ca.tagNameCheck instanceof Function&&ca.tagNameCheck(ti)))return!1;if(MU&&!lm[ti]){let Hi=ge(Kt)||Kt.parentNode,Rl=fe(Kt)||Kt.childNodes;if(Rl&&Hi){let Pl=Rl.length;for(let Bl=Pl-1;Bl>=0;--Bl){let Yr=qn(Rl[Bl],!0);Yr.__removalCount=(Kt.__removalCount||0)+1,Hi.insertBefore(Yr,ae(Kt))}}}return Cd(Kt),!0}return Kt instanceof Je&&!SN(Kt)||(ti==="noscript"||ti==="noembed"||ti==="noframes")&&g(/<\/no(script|embed|frames)/i,Kt.innerHTML)?(Cd(Kt),!0):(Ed&&Kt.nodeType===3&&(De=Kt.textContent,m([Go,Ao,Xs],Hi=>{De=U(De,Hi," ")}),Kt.textContent!==De&&(Z(zt.removed,{element:Kt.cloneNode()}),Kt.textContent=De)),Id("afterSanitizeElements",Kt,null),!1)},Wg=function(Kt,De,ti){if(kW&&(De==="id"||De==="name")&&(ti in ke||ti in wU))return!1;if(!(pr&&!mr[De]&&g(Es,De))){if(!(hr&&g(wl,De))){if(!zi[De]||mr[De]){if(!(fg(Kt)&&(ca.tagNameCheck instanceof RegExp&&g(ca.tagNameCheck,Kt)||ca.tagNameCheck instanceof Function&&ca.tagNameCheck(Kt))&&(ca.attributeNameCheck instanceof RegExp&&g(ca.attributeNameCheck,De)||ca.attributeNameCheck instanceof Function&&ca.attributeNameCheck(De))||De==="is"&&ca.allowCustomizedBuiltInElements&&(ca.tagNameCheck instanceof RegExp&&g(ca.tagNameCheck,ti)||ca.tagNameCheck instanceof Function&&ca.tagNameCheck(ti))))return!1}else if(!eR[De]){if(!g(yl,U(ti,Wa,""))){if(!((De==="src"||De==="xlink:href"||De==="href")&&Kt!=="script"&&G(ti,"data:")===0&&DU[Kt])){if(!(hs&&!g(ka,U(ti,Wa,"")))){if(ti)return!1}}}}}}return!0},fg=function(Kt){return Kt!=="annotation-xml"&&F(Kt,Ju)},dm=function(Kt){Id("beforeSanitizeAttributes",Kt,null);let{attributes:De}=Kt;if(!De)return;let ti={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:zi},Hi=De.length;for(;Hi--;){let Rl=De[Hi],{name:Pl,namespaceURI:Bl,value:Yr}=Rl,ps=Js(Pl),Ql=Pl==="value"?Yr:A(Yr);if(ti.attrName=ps,ti.attrValue=Ql,ti.keepAttr=!0,ti.forceKeepAttr=void 0,Id("uponSanitizeAttribute",Kt,ti),Ql=ti.attrValue,ti.forceKeepAttr||(KU(Pl,Kt),!ti.keepAttr))continue;if(!ma&&g(/\/>/i,Ql)){KU(Pl,Kt);continue}Ed&&m([Go,Ao,Xs],zU=>{Ql=U(Ql,zU," ")});let Wp=Js(Kt.nodeName);if(Wg(Wp,ps,Ql)){if(YW&&(ps==="id"||ps==="name")&&(KU(Pl,Kt),Ql=pg+Ql),Ze&&typeof is=="object"&&typeof is.getAttributeType=="function"&&!Bl)switch(is.getAttributeType(Wp,ps)){case"TrustedHTML":{Ql=Ze.createHTML(Ql);break}case"TrustedScriptURL":{Ql=Ze.createScriptURL(Ql);break}}try{Bl?Kt.setAttributeNS(Bl,Pl,Ql):Kt.setAttribute(Pl,Ql),h(zt.removed)}catch{}}}Id("afterSanitizeAttributes",Kt,null)},Da=function Zn(Kt){let De=null,ti=rm(Kt);for(Id("beforeSanitizeShadowDOM",Kt,null);De=ti.nextNode();){if(Id("uponSanitizeShadowNode",De,null),MW(De))continue;let Hi=ge(De);De.nodeType===1&&(Hi&&Hi.__depth?De.__depth=(De.__removalCount||0)+Hi.__depth+1:De.__depth=1),De.__depth>=iR&&Cd(De),De.content instanceof un&&(De.content.__depth=De.__depth,Zn(De.content)),dm(De)}Id("afterSanitizeShadowDOM",Kt,null)};return zt.sanitize=function(Zn){let Kt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},De=null,ti=null,Hi=null,Rl=null;if(xW=!Zn,xW&&(Zn=""),typeof Zn!="string"&&!LW(Zn))if(typeof Zn.toString=="function"){if(Zn=Zn.toString(),typeof Zn!="string")throw C("dirty is not a string, aborting")}else throw C("toString is not a function");if(!zt.isSupported)return Zn;if($b||JW(Kt),zt.removed=[],typeof Zn=="string"&&(lh=!1),lh){if(Zn.nodeName){let Yr=Js(Zn.nodeName);if(!Bi[Yr]||$n[Yr])throw C("root node is forbidden and cannot be sanitized in-place")}}else if(Zn instanceof _t)De=bg(""),ti=De.ownerDocument.importNode(Zn,!0),ti.nodeType===1&&ti.nodeName==="BODY"||ti.nodeName==="HTML"?De=ti:De.appendChild(ti);else{if(!Lu&&!Ed&&!Rc&&Zn.indexOf("<")===-1)return Ze&&tR?Ze.createHTML(Zn):Zn;if(De=bg(Zn),!De)return Lu?null:tR?Ke:""}De&&Zp&&Cd(De.firstChild);let Pl=rm(lh?Zn:De);for(;Hi=Pl.nextNode();){if(MW(Hi))continue;let Yr=ge(Hi);Hi.nodeType===1&&(Yr&&Yr.__depth?Hi.__depth=(Hi.__removalCount||0)+Yr.__depth+1:Hi.__depth=1),Hi.__depth>=iR&&Cd(Hi),Hi.content instanceof un&&(Hi.content.__depth=Hi.__depth,Da(Hi.content)),dm(Hi)}if(lh)return Zn;if(Lu){if(QW)for(Rl=da.call(De.ownerDocument);De.firstChild;)Rl.appendChild(De.firstChild);else Rl=De;return(zi.shadowroot||zi.shadowrootmode)&&(Rl=bl.call(ue,Rl,!0)),Rl}let Bl=Rc?De.outerHTML:De.innerHTML;return Rc&&Bi["!doctype"]&&De.ownerDocument&&De.ownerDocument.doctype&&De.ownerDocument.doctype.name&&g(kt,De.ownerDocument.doctype.name)&&(Bl=" -`+Bl),Ed&&m([Go,Ao,Xs],Yr=>{Bl=U(Bl,Yr," ")}),Ze&&tR?Ze.createHTML(Bl):Bl},zt.setConfig=function(){let Zn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};JW(Zn),$b=!0},zt.clearConfig=function(){ld=null,$b=!1},zt.isValidAttribute=function(Zn,Kt,De){ld||JW({});let ti=Js(Zn),Hi=Js(Kt);return Wg(ti,Hi,De)},zt.addHook=function(Zn,Kt){typeof Kt=="function"&&(na[Zn]=na[Zn]||[],Z(na[Zn],Kt))},zt.removeHook=function(Zn){if(na[Zn])return h(na[Zn])},zt.removeHooks=function(Zn){na[Zn]&&(na[Zn]=[])},zt.removeAllHooks=function(){na={}},zt}var rn=He();return rn})});var qbt=Vo((Gkn,r$)=>{"use strict";var Akn=R(W());r$.exports=Yw;r$.exports.default=Yw;function Yw(t,e,n){n=n||2;var i=e&&e.length,o=i?e[0]*n:t.length,a=Kbt(t,0,o,n,!0),s=[];if(!a||a.next===a.prev)return s;var l,r,d,m,h,Z,b;if(i&&(a=Jqt(t,e,a,n)),t.length>80*n){l=d=t[0],r=m=t[1];for(var u=n;ud&&(d=h),Z>m&&(m=Z);b=Math.max(d-l,m-r),b=b!==0?32767/b:0}return lY(a,s,n,l,r,b,0),s}function Kbt(t,e,n,i,o){var a,s;if(o===l$(t,e,n,i)>0)for(a=e;a=e;a-=i)s=vbt(a,t[a],t[a+1],s);return s&&xw(s,s.next)&&(dY(s),s=s.next),s}function SA(t,e){if(!t)return t;e||(e=t);var n=t,i;do if(i=!1,!n.steiner&&(xw(n,n.next)||ol(n.prev,n,n.next)===0)){if(dY(n),n=e=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==e);return e}function lY(t,e,n,i,o,a,s){if(t){!s&&a&&Oqt(t,i,o,a);for(var l=t,r,d;t.prev!==t.next;){if(r=t.prev,d=t.next,a?Yqt(t,i,o,a):kqt(t)){e.push(r.i/n|0),e.push(t.i/n|0),e.push(d.i/n|0),dY(t),t=d.next,l=d.next;continue}if(t=d,t===l){s?s===1?(t=xqt(SA(t),e,n),lY(t,e,n,i,o,a,2)):s===2&&Xqt(t,e,n,i,o,a):lY(SA(t),e,n,i,o,a,1);break}}}}function kqt(t){var e=t.prev,n=t,i=t.next;if(ol(e,n,i)>=0)return!1;for(var o=e.x,a=n.x,s=i.x,l=e.y,r=n.y,d=i.y,m=oa?o>s?o:s:a>s?a:s,b=l>r?l>d?l:d:r>d?r:d,u=i.next;u!==e;){if(u.x>=m&&u.x<=Z&&u.y>=h&&u.y<=b&&HE(o,l,a,r,s,d,u.x,u.y)&&ol(u.prev,u,u.next)>=0)return!1;u=u.next}return!0}function Yqt(t,e,n,i){var o=t.prev,a=t,s=t.next;if(ol(o,a,s)>=0)return!1;for(var l=o.x,r=a.x,d=s.x,m=o.y,h=a.y,Z=s.y,b=lr?l>d?l:d:r>d?r:d,U=m>h?m>Z?m:Z:h>Z?h:Z,G=a$(b,u,e,n,i),A=a$(F,U,e,n,i),T=t.prevZ,g=t.nextZ;T&&T.z>=G&&g&&g.z<=A;){if(T.x>=b&&T.x<=F&&T.y>=u&&T.y<=U&&T!==o&&T!==s&&HE(l,m,r,h,d,Z,T.x,T.y)&&ol(T.prev,T,T.next)>=0||(T=T.prevZ,g.x>=b&&g.x<=F&&g.y>=u&&g.y<=U&&g!==o&&g!==s&&HE(l,m,r,h,d,Z,g.x,g.y)&&ol(g.prev,g,g.next)>=0))return!1;g=g.nextZ}for(;T&&T.z>=G;){if(T.x>=b&&T.x<=F&&T.y>=u&&T.y<=U&&T!==o&&T!==s&&HE(l,m,r,h,d,Z,T.x,T.y)&&ol(T.prev,T,T.next)>=0)return!1;T=T.prevZ}for(;g&&g.z<=A;){if(g.x>=b&&g.x<=F&&g.y>=u&&g.y<=U&&g!==o&&g!==s&&HE(l,m,r,h,d,Z,g.x,g.y)&&ol(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function xqt(t,e,n){var i=t;do{var o=i.prev,a=i.next.next;!xw(o,a)&&zbt(o,i,i.next,a)&&rY(o,a)&&rY(a,o)&&(e.push(o.i/n|0),e.push(i.i/n|0),e.push(a.i/n|0),dY(i),dY(i.next),i=t=a),i=i.next}while(i!==t);return SA(i)}function Xqt(t,e,n,i,o,a){var s=t;do{for(var l=s.next.next;l!==s.prev;){if(s.i!==l.i&&Pqt(s,l)){var r=jbt(s,l);s=SA(s,s.next),r=SA(r,r.next),lY(s,e,n,i,o,a,0),lY(r,e,n,i,o,a,0);return}l=l.next}s=s.next}while(s!==t)}function Jqt(t,e,n,i){var o=[],a,s,l,r,d;for(a=0,s=e.length;a=n.next.y&&n.next.y!==n.y){var l=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(l<=i&&l>a&&(a=l,s=n.x=n.x&&n.x>=d&&i!==n.x&&HE(os.x||n.x===s.x&&Dqt(s,n)))&&(s=n,h=Z)),n=n.next;while(n!==r);return s}function Dqt(t,e){return ol(t.prev,t,e.prev)<0&&ol(e.next,t,t.next)<0}function Oqt(t,e,n,i){var o=t;do o.z===0&&(o.z=a$(o.x,o.y,e,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==t);o.prevZ.nextZ=null,o.prevZ=null,Hqt(o)}function Hqt(t){var e,n,i,o,a,s,l,r,d=1;do{for(n=t,t=null,a=null,s=0;n;){for(s++,i=n,l=0,e=0;e0||r>0&&i;)l!==0&&(r===0||!i||n.z<=i.z)?(o=n,n=n.nextZ,l--):(o=i,i=i.nextZ,r--),a?a.nextZ=o:t=o,o.prevZ=a,a=o;n=i}a.nextZ=null,d*=2}while(s>1);return t}function a$(t,e,n,i,o){return t=(t-n)*o|0,e=(e-i)*o|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t|e<<1}function wqt(t){var e=t,n=t;do(e.x=(t-s)*(a-l)&&(t-s)*(i-l)>=(n-s)*(e-l)&&(n-s)*(a-l)>=(o-s)*(i-l)}function Pqt(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!vqt(t,e)&&(rY(t,e)&&rY(e,t)&&Kqt(t,e)&&(ol(t.prev,t,e.prev)||ol(t,e.prev,e))||xw(t,e)&&ol(t.prev,t,t.next)>0&&ol(e.prev,e,e.next)>0)}function ol(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function xw(t,e){return t.x===e.x&&t.y===e.y}function zbt(t,e,n,i){var o=kw(ol(t,e,n)),a=kw(ol(t,e,i)),s=kw(ol(n,i,t)),l=kw(ol(n,i,e));return!!(o!==a&&s!==l||o===0&&Qw(t,n,e)||a===0&&Qw(t,i,e)||s===0&&Qw(n,t,i)||l===0&&Qw(n,e,i))}function Qw(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function kw(t){return t>0?1:t<0?-1:0}function vqt(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&zbt(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}function rY(t,e){return ol(t.prev,t,t.next)<0?ol(t,e,t.next)>=0&&ol(t,t.prev,e)>=0:ol(t,e,t.prev)<0||ol(t,t.next,e)<0}function Kqt(t,e){var n=t,i=!1,o=(t.x+e.x)/2,a=(t.y+e.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&o<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==t);return i}function jbt(t,e){var n=new s$(t.i,t.x,t.y),i=new s$(e.i,e.x,e.y),o=t.next,a=e.prev;return t.next=e,e.prev=t,n.next=o,o.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function vbt(t,e,n,i){var o=new s$(t,e,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function dY(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function s$(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Yw.deviation=function(t,e,n,i){var o=e&&e.length,a=o?e[0]*n:t.length,s=Math.abs(l$(t,0,a,n));if(o)for(var l=0,r=e.length;l0&&(i+=t[o-1].length,n.holes.push(i))}return n}});var oft=Vo((i7n,ift)=>{"use strict";var o7n=R(W());ift.exports=ure;var FX=1e20;function ure(t,e){e||(e={});var n=e.cutoff==null?.25:e.cutoff,i=e.radius==null?8:e.radius,o=e.channel||0,a,s,l,r,d,m,h,Z,b,u,F;if(ArrayBuffer.isView(t)||Array.isArray(t)){if(!e.width||!e.height)throw Error("For raw data width and height should be provided by options");a=e.width,s=e.height,r=t,e.stride?m=e.stride:m=Math.floor(t.length/a/s)}else window.HTMLCanvasElement&&t instanceof window.HTMLCanvasElement?(Z=t,h=Z.getContext("2d"),a=Z.width,s=Z.height,b=h.getImageData(0,0,a,s),r=b.data,m=4):window.CanvasRenderingContext2D&&t instanceof window.CanvasRenderingContext2D?(Z=t.canvas,h=t,a=Z.width,s=Z.height,b=h.getImageData(0,0,a,s),r=b.data,m=4):window.ImageData&&t instanceof window.ImageData&&(b=t,a=t.width,s=t.height,r=b.data,m=4);if(l=Math.max(a,s),window.Uint8ClampedArray&&r instanceof window.Uint8ClampedArray||window.Uint8Array&&r instanceof window.Uint8Array)for(d=r,r=Array(a*s),u=0,F=Math.floor(d.length/m);u{var A7n=R(W());function Tre(){var t=0,e=1,n=2,i=3,o=4,a=5,s=6,l=7,r=8,d=9,m=10,h=11,Z=12,b=13,u=14,F=15,U=16,G=17,A=0,T=1,g=2,C=3,y=4;function Y(V,E){return 55296<=V.charCodeAt(E)&&V.charCodeAt(E)<=56319&&56320<=V.charCodeAt(E+1)&&V.charCodeAt(E+1)<=57343}function Q(V,E){E===void 0&&(E=0);var I=V.charCodeAt(E);if(55296<=I&&I<=56319&&E=1){var B=V.charCodeAt(E-1),X=I;return 55296<=B&&B<=56319?(B-55296)*1024+(X-56320)+65536:X}return I}function J(V,E,I){var B=[V].concat(E).concat([I]),X=B[B.length-2],_=I,P=B.lastIndexOf(u);if(P>1&&B.slice(1,P).every(function(H){return H==i})&&[i,b,G].indexOf(V)==-1)return g;var w=B.lastIndexOf(o);if(w>0&&B.slice(1,w).every(function(H){return H==o})&&[Z,o].indexOf(X)==-1)return B.filter(function(H){return H==o}).length%2==1?C:y;if(X==t&&_==e)return A;if(X==n||X==t||X==e)return _==u&&E.every(function(H){return H==i})?g:T;if(_==n||_==t||_==e)return T;if(X==s&&(_==s||_==l||_==d||_==m))return A;if((X==d||X==l)&&(_==l||_==r))return A;if((X==m||X==r)&&_==r)return A;if(_==i||_==F)return A;if(_==a)return A;if(X==Z)return A;var z=B.indexOf(i)!=-1?B.lastIndexOf(i)-1:B.length-2;return[b,G].indexOf(B[z])!=-1&&B.slice(z+1,-1).every(function(H){return H==i})&&_==u||X==F&&[U,G].indexOf(_)!=-1?A:E.indexOf(o)!=-1?g:X==o&&_==o?A:T}this.nextBreak=function(V,E){if(E===void 0&&(E=0),E<0)return 0;if(E>=V.length-1)return V.length;for(var I=M(Q(V,E)),B=[],X=E+1;X{var $gi=R(W());(function(t,e){typeof wet=="object"&&typeof Pet<"u"?Pet.exports=e():typeof define=="function"&&define.amd?define(e):(t=t||self).RBush=e()})(wet,function(){"use strict";function t(U,G,A,T,g){(function C(y,Y,Q,J,M){for(;J>Q;){if(J-Q>600){var V=J-Q+1,E=Y-Q+1,I=Math.log(V),B=.5*Math.exp(2*I/3),X=.5*Math.sqrt(I*B*(V-B)/V)*(E-V/2<0?-1:1),_=Math.max(Q,Math.floor(Y-E*B/V+X)),P=Math.min(J,Math.floor(Y+(V-E)*B/V+X));C(y,Y,_,P,M)}var w=y[Y],z=Q,H=J;for(e(y,Q,Y),M(y[J],w)>0&&e(y,Q,J);z0;)H--}M(y[Q],w)===0?e(y,Q,H):e(y,++H,J),H<=Y&&(Q=H+1),Y<=H&&(J=H-1)}})(U,G,A||0,T||U.length-1,g||n)}function e(U,G,A){var T=U[G];U[G]=U[A],U[A]=T}function n(U,G){return UG?1:0}var i=function(U){U===void 0&&(U=9),this._maxEntries=Math.max(4,U),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function o(U,G,A){if(!A)return G.indexOf(U);for(var T=0;T=U.minX&&G.maxY>=U.minY}function u(U){return{children:U,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function F(U,G,A,T,g){for(var C=[G,A];C.length;)if(!((A=C.pop())-(G=C.pop())<=T)){var y=G+Math.ceil((A-G)/T/2)*T;t(U,y,G,A,g),C.push(G,y,y,A)}}return i.prototype.all=function(){return this._all(this.data,[])},i.prototype.search=function(U){var G=this.data,A=[];if(!b(U,G))return A;for(var T=this.toBBox,g=[];G;){for(var C=0;C=0&&g[G].children.length>this._maxEntries;)this._split(g,G),G--;this._adjustParentBBoxes(T,g,G)},i.prototype._split=function(U,G){var A=U[G],T=A.children.length,g=this._minEntries;this._chooseSplitAxis(A,g,T);var C=this._chooseSplitIndex(A,g,T),y=u(A.children.splice(C,A.children.length-C));y.height=A.height,y.leaf=A.leaf,a(A,this.toBBox),a(y,this.toBBox),G?U[G-1].children.push(y):this._splitRoot(A,y)},i.prototype._splitRoot=function(U,G){this.data=u([U,G]),this.data.height=U.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},i.prototype._chooseSplitIndex=function(U,G,A){for(var T,g,C,y,Y,Q,J,M=1/0,V=1/0,E=G;E<=A-G;E++){var I=s(U,0,E,this.toBBox),B=s(U,E,A,this.toBBox),X=(g=I,C=B,y=void 0,Y=void 0,Q=void 0,J=void 0,y=Math.max(g.minX,C.minX),Y=Math.max(g.minY,C.minY),Q=Math.min(g.maxX,C.maxX),J=Math.min(g.maxY,C.maxY),Math.max(0,Q-y)*Math.max(0,J-Y)),_=m(I)+m(B);X=G;M--){var V=U.children[M];l(y,U.leaf?g(V):V),Y+=h(y)}return Y},i.prototype._adjustParentBBoxes=function(U,G,A){for(var T=A;T>=0;T--)l(G[T],U)},i.prototype._condense=function(U){for(var G=U.length-1,A=void 0;G>=0;G--)U[G].children.length===0?G>0?(A=U[G-1].children).splice(A.indexOf(U[G]),1):this.clear():a(U[G],this.toBBox)},i})});var zEt=Vo((DI,oM)=>{var AJi=R(W());/** + */(function(t,e){"use strict";typeof RH=="object"&&RH.exports?RH.exports=e(Rmt(),Wmt(),Fmt()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],e):t.URI=e(t.punycode,t.IPv6,t.SecondLevelDomains,t)})(Umt,function(t,e,n,i){"use strict";var o=i&&i.URI;function a(E,I){var B=arguments.length>=1,X=arguments.length>=2;if(!(this instanceof a))return B?X?new a(E,I):new a(E):new a;if(E===void 0){if(B)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?E=location.href+"":E=""}if(E===null&&B)throw new TypeError("null is not a valid argument for URI");return this.href(E),I!==void 0?this.absoluteTo(I):this}function s(E){return/^[0-9]+$/.test(E)}a.version="1.19.11";var l=a.prototype,r=Object.prototype.hasOwnProperty;function d(E){return E.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function m(E){return E===void 0?"Undefined":String(Object.prototype.toString.call(E)).slice(8,-1)}function h(E){return m(E)==="Array"}function u(E,I){var B={},X,_;if(m(I)==="RegExp")B=null;else if(h(I))for(X=0,_=I.length;X<_;X++)B[I[X]]=!0;else B[I]=!0;for(X=0,_=E.length;X<_;X++){var P=B&&B[E[X]]!==void 0||!B&&I.test(E[X]);P&&(E.splice(X,1),_--,X--)}return E}function R(E,I){var B,X;if(h(I)){for(B=0,X=I.length;B]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,a.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},a.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,a.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},a.hostProtocols=["http","https"],a.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,a.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},a.getDomAttribute=function(E){if(!(!E||!E.nodeName)){var I=E.nodeName.toLowerCase();if(!(I==="input"&&E.type!=="image"))return a.domAttributes[I]}};function U(E){return escape(E)}function G(E){return encodeURIComponent(E).replace(/[!'()*]/g,U).replace(/\*/g,"%2A")}a.encode=G,a.decode=decodeURIComponent,a.iso8859=function(){a.encode=escape,a.decode=unescape},a.unicode=function(){a.encode=G,a.decode=decodeURIComponent},a.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},a.encodeQuery=function(E,I){var B=a.encode(E+"");return I===void 0&&(I=a.escapeQuerySpace),I?B.replace(/%20/g,"+"):B},a.decodeQuery=function(E,I){E+="",I===void 0&&(I=a.escapeQuerySpace);try{return a.decode(I?E.replace(/\+/g,"%20"):E)}catch{return E}};var A={encode:"encode",decode:"decode"},S,g=function(E,I){return function(B){try{return a[I](B+"").replace(a.characters[E][I].expression,function(X){return a.characters[E][I].map[X]})}catch{return B}}};for(S in A)a[S+"PathSegment"]=g("pathname",A[S]),a[S+"UrnPathSegment"]=g("urnpath",A[S]);var C=function(E,I,B){return function(X){var _;B?_=function(H){return a[I](a[B](H))}:_=a[I];for(var P=(X+"").split(E),w=0,z=P.length;w-1&&(I.fragment=E.substring(B+1)||null,E=E.substring(0,B)),B=E.indexOf("?"),B>-1&&(I.query=E.substring(B+1)||null,E=E.substring(0,B)),E=E.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),E=E.replace(/^[/\\]{2,}/i,"//"),E.substring(0,2)==="//"?(I.protocol=null,E=E.substring(2),E=a.parseAuthority(E,I)):(B=E.indexOf(":"),B>-1&&(I.protocol=E.substring(0,B)||null,I.protocol&&!I.protocol.match(a.protocol_expression)?I.protocol=void 0:E.substring(B+1,B+3).replace(/\\/g,"/")==="//"?(E=E.substring(B+3),E=a.parseAuthority(E,I)):(E=E.substring(B+1),I.urn=!0))),I.path=E,I},a.parseHost=function(E,I){E||(E=""),E=E.replace(/\\/g,"/");var B=E.indexOf("/"),X,_;if(B===-1&&(B=E.length),E.charAt(0)==="[")X=E.indexOf("]"),I.hostname=E.substring(1,X)||null,I.port=E.substring(X+2,B)||null,I.port==="/"&&(I.port=null);else{var P=E.indexOf(":"),w=E.indexOf("/"),z=E.indexOf(":",P+1);z!==-1&&(w===-1||z-1?_:E.length-1),w;return P>-1&&(_===-1||P<_)?(w=E.substring(0,P).split(":"),I.username=w[0]?a.decode(w[0]):null,w.shift(),I.password=w[0]?a.decode(w.join(":")):null,E=B.substring(P+1)):(I.username=null,I.password=null),E},a.parseQuery=function(E,I){if(!E)return{};if(E=E.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!E)return{};for(var B={},X=E.split("&"),_=X.length,P,w,z,H=0;H<_;H++)P=X[H].split("="),w=a.decodeQuery(P.shift(),I),z=P.length?a.decodeQuery(P.join("="),I):null,w!=="__proto__"&&(r.call(B,w)?((typeof B[w]=="string"||B[w]===null)&&(B[w]=[B[w]]),B[w].push(z)):B[w]=z);return B},a.build=function(E){var I="",B=!1;return E.protocol&&(I+=E.protocol+":"),!E.urn&&(I||E.hostname)&&(I+="//",B=!0),I+=a.buildAuthority(E)||"",typeof E.path=="string"&&(E.path.charAt(0)!=="/"&&B&&(I+="/"),I+=E.path),typeof E.query=="string"&&E.query&&(I+="?"+E.query),typeof E.fragment=="string"&&E.fragment&&(I+="#"+E.fragment),I},a.buildHost=function(E){var I="";if(E.hostname)a.ip6_expression.test(E.hostname)?I+="["+E.hostname+"]":I+=E.hostname;else return"";return E.port&&(I+=":"+E.port),I},a.buildAuthority=function(E){return a.buildUserinfo(E)+a.buildHost(E)},a.buildUserinfo=function(E){var I="";return E.username&&(I+=a.encode(E.username)),E.password&&(I+=":"+a.encode(E.password)),I&&(I+="@"),I},a.buildQuery=function(E,I,B){var X="",_,P,w,z;for(P in E)if(P!=="__proto__"&&r.call(E,P))if(h(E[P]))for(_={},w=0,z=E[P].length;w-1?q=q.slice(0,at)+q.slice(at).replace(P,""):q=q.replace(P,""),!(q.length<=H[0].length)&&!(B.ignore&&B.ignore.test(q))){dt=nt+q.length;var Qt=I(q,nt,dt,E);if(Qt===void 0){X.lastIndex=dt;continue}Qt=String(Qt),E=E.slice(0,nt)+Qt+E.slice(dt),X.lastIndex=nt+Qt.length}}return X.lastIndex=0,E},a.ensureValidHostname=function(E,I){var B=!!E,X=!!I,_=!1;if(X&&(_=R(a.hostProtocols,I)),_&&!B)throw new TypeError("Hostname cannot be empty, if protocol is "+I);if(E&&E.match(a.invalid_hostname_characters)){if(!t)throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(t.toASCII(E).match(a.invalid_hostname_characters))throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-:_]')}},a.ensureValidPort=function(E){if(E){var I=Number(E);if(!(s(I)&&I>0&&I<65536))throw new TypeError('Port "'+E+'" is not a valid port')}},a.noConflict=function(E){if(E){var I={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(I.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(I.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(I.SecondLevelDomains=i.SecondLevelDomains.noConflict()),I}else i.URI===this&&(i.URI=o);return this},l.build=function(E){return E===!0?this._deferred_build=!0:(E===void 0||this._deferred_build)&&(this._string=a.build(this._parts),this._deferred_build=!1),this},l.clone=function(){return new a(this)},l.valueOf=l.toString=function(){return this.build(!1)._string};function y(E){return function(I,B){return I===void 0?this._parts[E]||"":(this._parts[E]=I||null,this.build(!B),this)}}function Y(E,I){return function(B,X){return B===void 0?this._parts[E]||"":(B!==null&&(B=B+"",B.charAt(0)===I&&(B=B.substring(1))),this._parts[E]=B,this.build(!X),this)}}l.protocol=y("protocol"),l.username=y("username"),l.password=y("password"),l.hostname=y("hostname"),l.port=y("port"),l.query=Y("query","?"),l.fragment=Y("fragment","#"),l.search=function(E,I){var B=this.query(E,I);return typeof B=="string"&&B.length?"?"+B:B},l.hash=function(E,I){var B=this.fragment(E,I);return typeof B=="string"&&B.length?"#"+B:B},l.pathname=function(E,I){if(E===void 0||E===!0){var B=this._parts.path||(this._parts.hostname?"/":"");return E?(this._parts.urn?a.decodeUrnPath:a.decodePath)(B):B}else return this._parts.urn?this._parts.path=E?a.recodeUrnPath(E):"":this._parts.path=E?a.recodePath(E):"/",this.build(!I),this},l.path=l.pathname,l.href=function(E,I){var B;if(E===void 0)return this.toString();this._string="",this._parts=a._parts();var X=E instanceof a,_=typeof E=="object"&&(E.hostname||E.path||E.pathname);if(E.nodeName){var P=a.getDomAttribute(E);E=E[P]||"",_=!1}if(!X&&_&&E.pathname!==void 0&&(E=E.toString()),typeof E=="string"||E instanceof String)this._parts=a.parse(String(E),this._parts);else if(X||_){var w=X?E._parts:E;for(B in w)B!=="query"&&r.call(this._parts,B)&&(this._parts[B]=w[B]);w.query&&this.query(w.query,!1)}else throw new TypeError("invalid input");return this.build(!I),this},l.is=function(E){var I=!1,B=!1,X=!1,_=!1,P=!1,w=!1,z=!1,H=!this._parts.urn;switch(this._parts.hostname&&(H=!1,B=a.ip4_expression.test(this._parts.hostname),X=a.ip6_expression.test(this._parts.hostname),I=B||X,_=!I,P=_&&n&&n.has(this._parts.hostname),w=_&&a.idn_expression.test(this._parts.hostname),z=_&&a.punycode_expression.test(this._parts.hostname)),E.toLowerCase()){case"relative":return H;case"absolute":return!H;case"domain":case"name":return _;case"sld":return P;case"ip":return I;case"ip4":case"ipv4":case"inet4":return B;case"ip6":case"ipv6":case"inet6":return X;case"idn":return w;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var Q=l.protocol,J=l.port,M=l.hostname;l.protocol=function(E,I){if(E&&(E=E.replace(/:(\/\/)?$/,""),!E.match(a.protocol_expression)))throw new TypeError('Protocol "'+E+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return Q.call(this,E,I)},l.scheme=l.protocol,l.port=function(E,I){return this._parts.urn?E===void 0?"":this:(E!==void 0&&(E===0&&(E=null),E&&(E+="",E.charAt(0)===":"&&(E=E.substring(1)),a.ensureValidPort(E))),J.call(this,E,I))},l.hostname=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E!==void 0){var B={preventInvalidHostname:this._parts.preventInvalidHostname},X=a.parseHost(E,B);if(X!=="/")throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-]');E=B.hostname,this._parts.preventInvalidHostname&&a.ensureValidHostname(E,this._parts.protocol)}return M.call(this,E,I)},l.origin=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0){var B=this.protocol(),X=this.authority();return X?(B?B+"://":"")+this.authority():""}else{var _=a(E);return this.protocol(_.protocol()).authority(_.authority()).build(!I),this}},l.host=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0)return this._parts.hostname?a.buildHost(this._parts):"";var B=a.parseHost(E,this._parts);if(B!=="/")throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-]');return this.build(!I),this},l.authority=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0)return this._parts.hostname?a.buildAuthority(this._parts):"";var B=a.parseAuthority(E,this._parts);if(B!=="/")throw new TypeError('Hostname "'+E+'" contains characters other than [A-Z0-9.-]');return this.build(!I),this},l.userinfo=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0){var B=a.buildUserinfo(this._parts);return B&&B.substring(0,B.length-1)}else return E[E.length-1]!=="@"&&(E+="@"),a.parseUserinfo(E,this._parts),this.build(!I),this},l.resource=function(E,I){var B;return E===void 0?this.path()+this.search()+this.hash():(B=a.parse(E),this._parts.path=B.path,this._parts.query=B.query,this._parts.fragment=B.fragment,this.build(!I),this)},l.subdomain=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0){if(!this._parts.hostname||this.is("IP"))return"";var B=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,B)||""}else{var X=this._parts.hostname.length-this.domain().length,_=this._parts.hostname.substring(0,X),P=new RegExp("^"+d(_));if(E&&E.charAt(E.length-1)!=="."&&(E+="."),E.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return E&&a.ensureValidHostname(E,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(P,E),this.build(!I),this}},l.domain=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(typeof E=="boolean"&&(I=E,E=void 0),E===void 0){if(!this._parts.hostname||this.is("IP"))return"";var B=this._parts.hostname.match(/\./g);if(B&&B.length<2)return this._parts.hostname;var X=this._parts.hostname.length-this.tld(I).length-1;return X=this._parts.hostname.lastIndexOf(".",X-1)+1,this._parts.hostname.substring(X)||""}else{if(!E)throw new TypeError("cannot set domain empty");if(E.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(a.ensureValidHostname(E,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=E;else{var _=new RegExp(d(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(_,E)}return this.build(!I),this}},l.tld=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(typeof E=="boolean"&&(I=E,E=void 0),E===void 0){if(!this._parts.hostname||this.is("IP"))return"";var B=this._parts.hostname.lastIndexOf("."),X=this._parts.hostname.substring(B+1);return I!==!0&&n&&n.list[X.toLowerCase()]&&n.get(this._parts.hostname)||X}else{var _;if(E)if(E.match(/[^a-zA-Z0-9-]/))if(n&&n.is(E))_=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(_,E);else throw new TypeError('TLD "'+E+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");_=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(_,E)}else throw new TypeError("cannot set TLD empty");return this.build(!I),this}},l.directory=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0||E===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var B=this._parts.path.length-this.filename().length-1,X=this._parts.path.substring(0,B)||(this._parts.hostname?"/":"");return E?a.decodePath(X):X}else{var _=this._parts.path.length-this.filename().length,P=this._parts.path.substring(0,_),w=new RegExp("^"+d(P));return this.is("relative")||(E||(E="/"),E.charAt(0)!=="/"&&(E="/"+E)),E&&E.charAt(E.length-1)!=="/"&&(E+="/"),E=a.recodePath(E),this._parts.path=this._parts.path.replace(w,E),this.build(!I),this}},l.filename=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(typeof E!="string"){if(!this._parts.path||this._parts.path==="/")return"";var B=this._parts.path.lastIndexOf("/"),X=this._parts.path.substring(B+1);return E?a.decodePathSegment(X):X}else{var _=!1;E.charAt(0)==="/"&&(E=E.substring(1)),E.match(/\.?\//)&&(_=!0);var P=new RegExp(d(this.filename())+"$");return E=a.recodePath(E),this._parts.path=this._parts.path.replace(P,E),_?this.normalizePath(I):this.build(!I),this}},l.suffix=function(E,I){if(this._parts.urn)return E===void 0?"":this;if(E===void 0||E===!0){if(!this._parts.path||this._parts.path==="/")return"";var B=this.filename(),X=B.lastIndexOf("."),_,P;return X===-1?"":(_=B.substring(X+1),P=/^[a-z0-9%]+$/i.test(_)?_:"",E?a.decodePathSegment(P):P)}else{E.charAt(0)==="."&&(E=E.substring(1));var w=this.suffix(),z;if(w)E?z=new RegExp(d(w)+"$"):z=new RegExp(d("."+w)+"$");else{if(!E)return this;this._parts.path+="."+a.recodePath(E)}return z&&(E=a.recodePath(E),this._parts.path=this._parts.path.replace(z,E)),this.build(!I),this}},l.segment=function(E,I,B){var X=this._parts.urn?":":"/",_=this.path(),P=_.substring(0,1)==="/",w=_.split(X);if(E!==void 0&&typeof E!="number"&&(B=I,I=E,E=void 0),E!==void 0&&typeof E!="number")throw new Error('Bad segment "'+E+'", must be 0-based integer');if(P&&w.shift(),E<0&&(E=Math.max(w.length+E,0)),I===void 0)return E===void 0?w:w[E];if(E===null||w[E]===void 0)if(h(I)){w=[];for(var z=0,H=I.length;z{var VAn=b(W());/*! @license DOMPurify 3.1.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.2/LICENSE */(function(t,e){typeof Uq=="object"&&typeof Gq<"u"?Gq.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self,t.DOMPurify=e())})(Uq,function(){"use strict";let{entries:t,setPrototypeOf:e,isFrozen:n,getPrototypeOf:i,getOwnPropertyDescriptor:o}=Object,{freeze:a,seal:s,create:l}=Object,{apply:r,construct:d}=typeof Reflect<"u"&&Reflect;a||(a=function(zt){return zt}),s||(s=function(zt){return zt}),r||(r=function(zt,ke,Ve){return zt.apply(ke,Ve)}),d||(d=function(zt,ke){return new zt(...ke)});let m=y(Array.prototype.forEach),h=y(Array.prototype.pop),u=y(Array.prototype.push),R=y(String.prototype.toLowerCase),V=y(String.prototype.toString),F=y(String.prototype.match),U=y(String.prototype.replace),G=y(String.prototype.indexOf),A=y(String.prototype.trim),S=y(Object.prototype.hasOwnProperty),g=y(RegExp.prototype.test),C=Y(TypeError);function y(de){return function(zt){for(var ke=arguments.length,Ve=new Array(ke>1?ke-1:0),We=1;We2&&arguments[2]!==void 0?arguments[2]:R;e&&e(de,null);let Ve=zt.length;for(;Ve--;){let We=zt[Ve];if(typeof We=="string"){let Vn=ke(We);Vn!==We&&(n(zt)||(zt[Ve]=Vn),We=Vn)}de[We]=!0}return de}function J(de){for(let zt=0;zt/gm),at=s(/\${[\w\W]*}/gm),st=s(/^data-[\-\w.\u00B7-\uFFFF]/),Et=s(/^aria-[\-\w]+$/),Qt=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Wt=s(/^(?:\w+script|data):/i),Nt=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),kt=s(/^html$/i),Mt=s(/^[a-z][.\w]*(-[.\w]+)+$/i);var qt=Object.freeze({__proto__:null,MUSTACHE_EXPR:dt,ERB_EXPR:q,TMPLIT_EXPR:at,DATA_ATTR:st,ARIA_ATTR:Et,IS_ALLOWED_URI:Qt,IS_SCRIPT_OR_DATA:Wt,ATTR_WHITESPACE:Nt,DOCTYPE_NAME:kt,CUSTOM_ELEMENT:Mt});let ie=function(){return typeof window>"u"?null:window},oe=function(zt,ke){if(typeof zt!="object"||typeof zt.createPolicy!="function")return null;let Ve=null,We="data-tt-policy-suffix";ke&&ke.hasAttribute(We)&&(Ve=ke.getAttribute(We));let Vn="dompurify"+(Ve?"#"+Ve:"");try{return zt.createPolicy(Vn,{createHTML(Ct){return Ct},createScriptURL(Ct){return Ct}})}catch{return console.warn("TrustedTypes policy "+Vn+" could not be created."),null}};function He(){let de=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ie(),zt=un=>He(un);if(zt.version="3.1.2",zt.removed=[],!de||!de.document||de.document.nodeType!==9)return zt.isSupported=!1,zt;let{document:ke}=de,Ve=ke,We=Ve.currentScript,{DocumentFragment:Vn,HTMLTemplateElement:Ct,Node:_t,Element:Je,NodeFilter:xe,NamedNodeMap:oo=de.NamedNodeMap||de.MozNamedAttrMap,HTMLFormElement:ea,DOMParser:gs,trustedTypes:is}=de,ja=Je.prototype,qn=Z(ja,"cloneNode"),ae=Z(ja,"nextSibling"),fe=Z(ja,"childNodes"),ge=Z(ja,"parentNode");if(typeof Ct=="function"){let un=ke.createElement("template");un.content&&un.content.ownerDocument&&(ke=un.content.ownerDocument)}let ue,Ke="",{implementation:An,createNodeIterator:si,createDocumentFragment:da,getElementsByTagName:_a}=ke,{importNode:Rl}=Ve,na={};zt.isSupported=typeof t=="function"&&typeof ge=="function"&&An&&An.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Go,ERB_EXPR:Ao,TMPLIT_EXPR:Xs,DATA_ATTR:Es,ARIA_ATTR:wl,IS_SCRIPT_OR_DATA:ka,ATTR_WHITESPACE:Wa,CUSTOM_ELEMENT:JV}=qt,{IS_ALLOWED_URI:yl}=qt,Bi=null,sd=Q({},[...E,...I,...B,..._,...w]),zi=null,js=Q({},[...z,...H,...nt,...$]),ca=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),$n=null,mr=null,hr=!0,pr=!0,hs=!1,ma=!0,Ed=!1,BW=!0,bc=!1,$R=!1,up=!1,LV=!1,QW=!1,tb=!1,kW=!0,YW=!1,pg="user-content-",MU=!0,lh=!1,Zp={},lm=null,_U=Q({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),DU=null,MV=Q({},["audio","video","img","source","image","track"]),eb=null,Vg=Q({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Rp="http://www.w3.org/1998/Math/MathML",bp="http://www.w3.org/2000/svg",kr="http://www.w3.org/1999/xhtml",fZ=kr,xW=!1,XW=null,OU=Q({},[Rp,bp,kr],V),nb=null,rh=["application/xhtml+xml","text/html"],HU="text/html",Js=null,ld=null,ib=255,wU=ke.createElement("form"),PU=function(Kt){return Kt instanceof RegExp||Kt instanceof Function},JW=function(){let Kt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ld&&ld===Kt)){if((!Kt||typeof Kt!="object")&&(Kt={}),Kt=M(Kt),nb=rh.indexOf(Kt.PARSER_MEDIA_TYPE)===-1?HU:Kt.PARSER_MEDIA_TYPE,Js=nb==="application/xhtml+xml"?V:R,Bi=S(Kt,"ALLOWED_TAGS")?Q({},Kt.ALLOWED_TAGS,Js):sd,zi=S(Kt,"ALLOWED_ATTR")?Q({},Kt.ALLOWED_ATTR,Js):js,XW=S(Kt,"ALLOWED_NAMESPACES")?Q({},Kt.ALLOWED_NAMESPACES,V):OU,eb=S(Kt,"ADD_URI_SAFE_ATTR")?Q(M(Vg),Kt.ADD_URI_SAFE_ATTR,Js):Vg,DU=S(Kt,"ADD_DATA_URI_TAGS")?Q(M(MV),Kt.ADD_DATA_URI_TAGS,Js):MV,lm=S(Kt,"FORBID_CONTENTS")?Q({},Kt.FORBID_CONTENTS,Js):_U,$n=S(Kt,"FORBID_TAGS")?Q({},Kt.FORBID_TAGS,Js):{},mr=S(Kt,"FORBID_ATTR")?Q({},Kt.FORBID_ATTR,Js):{},Zp=S(Kt,"USE_PROFILES")?Kt.USE_PROFILES:!1,hr=Kt.ALLOW_ARIA_ATTR!==!1,pr=Kt.ALLOW_DATA_ATTR!==!1,hs=Kt.ALLOW_UNKNOWN_PROTOCOLS||!1,ma=Kt.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ed=Kt.SAFE_FOR_TEMPLATES||!1,BW=Kt.SAFE_FOR_XML!==!1,bc=Kt.WHOLE_DOCUMENT||!1,LV=Kt.RETURN_DOM||!1,QW=Kt.RETURN_DOM_FRAGMENT||!1,tb=Kt.RETURN_TRUSTED_TYPE||!1,up=Kt.FORCE_BODY||!1,kW=Kt.SANITIZE_DOM!==!1,YW=Kt.SANITIZE_NAMED_PROPS||!1,MU=Kt.KEEP_CONTENT!==!1,lh=Kt.IN_PLACE||!1,yl=Kt.ALLOWED_URI_REGEXP||Qt,fZ=Kt.NAMESPACE||kr,ca=Kt.CUSTOM_ELEMENT_HANDLING||{},Kt.CUSTOM_ELEMENT_HANDLING&&PU(Kt.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ca.tagNameCheck=Kt.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Kt.CUSTOM_ELEMENT_HANDLING&&PU(Kt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ca.attributeNameCheck=Kt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Kt.CUSTOM_ELEMENT_HANDLING&&typeof Kt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ca.allowCustomizedBuiltInElements=Kt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ed&&(pr=!1),QW&&(LV=!0),Zp&&(Bi=Q({},w),zi=[],Zp.html===!0&&(Q(Bi,E),Q(zi,z)),Zp.svg===!0&&(Q(Bi,I),Q(zi,H),Q(zi,$)),Zp.svgFilters===!0&&(Q(Bi,B),Q(zi,H),Q(zi,$)),Zp.mathMl===!0&&(Q(Bi,_),Q(zi,nt),Q(zi,$))),Kt.ADD_TAGS&&(Bi===sd&&(Bi=M(Bi)),Q(Bi,Kt.ADD_TAGS,Js)),Kt.ADD_ATTR&&(zi===js&&(zi=M(zi)),Q(zi,Kt.ADD_ATTR,Js)),Kt.ADD_URI_SAFE_ATTR&&Q(eb,Kt.ADD_URI_SAFE_ATTR,Js),Kt.FORBID_CONTENTS&&(lm===_U&&(lm=M(lm)),Q(lm,Kt.FORBID_CONTENTS,Js)),MU&&(Bi["#text"]=!0),bc&&Q(Bi,["html","head","body"]),Bi.table&&(Q(Bi,["tbody"]),delete $n.tbody),Kt.TRUSTED_TYPES_POLICY){if(typeof Kt.TRUSTED_TYPES_POLICY.createHTML!="function")throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Kt.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ue=Kt.TRUSTED_TYPES_POLICY,Ke=ue.createHTML("")}else ue===void 0&&(ue=oe(is,We)),ue!==null&&typeof Ke=="string"&&(Ke=ue.createHTML(""));a&&a(Kt),ld=Kt}},FZ=Q({},["mi","mo","mn","ms","mtext"]),vU=Q({},["foreignobject","annotation-xml"]),ug=Q({},["title","style","font","a","script"]),Zg=Q({},[...I,...B,...X]),ob=Q({},[..._,...P]),TN=function(Kt){let De=ge(Kt);(!De||!De.tagName)&&(De={namespaceURI:fZ,tagName:"template"});let ti=R(Kt.tagName),Hi=R(De.tagName);return XW[Kt.namespaceURI]?Kt.namespaceURI===bp?De.namespaceURI===kr?ti==="svg":De.namespaceURI===Rp?ti==="svg"&&(Hi==="annotation-xml"||FZ[Hi]):!!Zg[ti]:Kt.namespaceURI===Rp?De.namespaceURI===kr?ti==="math":De.namespaceURI===bp?ti==="math"&&vU[Hi]:!!ob[ti]:Kt.namespaceURI===kr?De.namespaceURI===bp&&!vU[Hi]||De.namespaceURI===Rp&&!FZ[Hi]?!1:!ob[ti]&&(ug[ti]||!Zg[ti]):!!(nb==="application/xhtml+xml"&&XW[Kt.namespaceURI]):!1},Cd=function(Kt){u(zt.removed,{element:Kt});try{Kt.parentNode.removeChild(Kt)}catch{Kt.remove()}},KU=function(Kt,De){try{u(zt.removed,{attribute:De.getAttributeNode(Kt),from:De})}catch{u(zt.removed,{attribute:null,from:De})}if(De.removeAttribute(Kt),Kt==="is"&&!zi[Kt])if(LV||QW)try{Cd(De)}catch{}else try{De.setAttribute(Kt,"")}catch{}},Rg=function(Kt){let De=null,ti=null;if(up)Kt=""+Kt;else{let Pl=F(Kt,/^[\r\n\t ]+/);ti=Pl&&Pl[0]}nb==="application/xhtml+xml"&&fZ===kr&&(Kt=''+Kt+"");let Hi=ue?ue.createHTML(Kt):Kt;if(fZ===kr)try{De=new gs().parseFromString(Hi,nb)}catch{}if(!De||!De.documentElement){De=An.createDocument(fZ,"template",null);try{De.documentElement.innerHTML=xW?Ke:Hi}catch{}}let bl=De.body||De.documentElement;return Kt&&ti&&bl.insertBefore(ke.createTextNode(ti),bl.childNodes[0]||null),fZ===kr?_a.call(De,bc?"html":"body")[0]:bc?De.documentElement:bl},rm=function(Kt){return si.call(Kt.ownerDocument||Kt,Kt,xe.SHOW_ELEMENT|xe.SHOW_COMMENT|xe.SHOW_TEXT|xe.SHOW_PROCESSING_INSTRUCTION|xe.SHOW_CDATA_SECTION,null)},bg=function(Kt){return Kt instanceof ea&&(typeof Kt.__depth<"u"&&typeof Kt.__depth!="number"||typeof Kt.__removalCount<"u"&&typeof Kt.__removalCount!="number"||typeof Kt.nodeName!="string"||typeof Kt.textContent!="string"||typeof Kt.removeChild!="function"||!(Kt.attributes instanceof oo)||typeof Kt.removeAttribute!="function"||typeof Kt.setAttribute!="function"||typeof Kt.namespaceURI!="string"||typeof Kt.insertBefore!="function"||typeof Kt.hasChildNodes!="function")},LW=function(Kt){return typeof _t=="function"&&Kt instanceof _t},Id=function(Kt,De,ti){na[Kt]&&m(na[Kt],Hi=>{Hi.call(zt,De,ti,ld)})},MW=function(Kt){let De=null;if(Id("beforeSanitizeElements",Kt,null),bg(Kt))return Cd(Kt),!0;let ti=Js(Kt.nodeName);if(Id("uponSanitizeElement",Kt,{tagName:ti,allowedTags:Bi}),Kt.hasChildNodes()&&!LW(Kt.firstElementChild)&&g(/<[/\w]/g,Kt.innerHTML)&&g(/<[/\w]/g,Kt.textContent)||Kt.nodeType===7||BW&&Kt.nodeType===8&&g(/<[/\w]/g,Kt.data))return Cd(Kt),!0;if(!Bi[ti]||$n[ti]){if(!$n[ti]&&fg(ti)&&(ca.tagNameCheck instanceof RegExp&&g(ca.tagNameCheck,ti)||ca.tagNameCheck instanceof Function&&ca.tagNameCheck(ti)))return!1;if(MU&&!lm[ti]){let Hi=ge(Kt)||Kt.parentNode,bl=fe(Kt)||Kt.childNodes;if(bl&&Hi){let Pl=bl.length;for(let Bl=Pl-1;Bl>=0;--Bl){let Yr=qn(bl[Bl],!0);Yr.__removalCount=(Kt.__removalCount||0)+1,Hi.insertBefore(Yr,ae(Kt))}}}return Cd(Kt),!0}return Kt instanceof Je&&!TN(Kt)||(ti==="noscript"||ti==="noembed"||ti==="noframes")&&g(/<\/no(script|embed|frames)/i,Kt.innerHTML)?(Cd(Kt),!0):(Ed&&Kt.nodeType===3&&(De=Kt.textContent,m([Go,Ao,Xs],Hi=>{De=U(De,Hi," ")}),Kt.textContent!==De&&(u(zt.removed,{element:Kt.cloneNode()}),Kt.textContent=De)),Id("afterSanitizeElements",Kt,null),!1)},Wg=function(Kt,De,ti){if(kW&&(De==="id"||De==="name")&&(ti in ke||ti in wU))return!1;if(!(pr&&!mr[De]&&g(Es,De))){if(!(hr&&g(wl,De))){if(!zi[De]||mr[De]){if(!(fg(Kt)&&(ca.tagNameCheck instanceof RegExp&&g(ca.tagNameCheck,Kt)||ca.tagNameCheck instanceof Function&&ca.tagNameCheck(Kt))&&(ca.attributeNameCheck instanceof RegExp&&g(ca.attributeNameCheck,De)||ca.attributeNameCheck instanceof Function&&ca.attributeNameCheck(De))||De==="is"&&ca.allowCustomizedBuiltInElements&&(ca.tagNameCheck instanceof RegExp&&g(ca.tagNameCheck,ti)||ca.tagNameCheck instanceof Function&&ca.tagNameCheck(ti))))return!1}else if(!eb[De]){if(!g(yl,U(ti,Wa,""))){if(!((De==="src"||De==="xlink:href"||De==="href")&&Kt!=="script"&&G(ti,"data:")===0&&DU[Kt])){if(!(hs&&!g(ka,U(ti,Wa,"")))){if(ti)return!1}}}}}}return!0},fg=function(Kt){return Kt!=="annotation-xml"&&F(Kt,JV)},dm=function(Kt){Id("beforeSanitizeAttributes",Kt,null);let{attributes:De}=Kt;if(!De)return;let ti={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:zi},Hi=De.length;for(;Hi--;){let bl=De[Hi],{name:Pl,namespaceURI:Bl,value:Yr}=bl,ps=Js(Pl),Ql=Pl==="value"?Yr:A(Yr);if(ti.attrName=ps,ti.attrValue=Ql,ti.keepAttr=!0,ti.forceKeepAttr=void 0,Id("uponSanitizeAttribute",Kt,ti),Ql=ti.attrValue,ti.forceKeepAttr||(KU(Pl,Kt),!ti.keepAttr))continue;if(!ma&&g(/\/>/i,Ql)){KU(Pl,Kt);continue}Ed&&m([Go,Ao,Xs],zU=>{Ql=U(Ql,zU," ")});let Wp=Js(Kt.nodeName);if(Wg(Wp,ps,Ql)){if(YW&&(ps==="id"||ps==="name")&&(KU(Pl,Kt),Ql=pg+Ql),ue&&typeof is=="object"&&typeof is.getAttributeType=="function"&&!Bl)switch(is.getAttributeType(Wp,ps)){case"TrustedHTML":{Ql=ue.createHTML(Ql);break}case"TrustedScriptURL":{Ql=ue.createScriptURL(Ql);break}}try{Bl?Kt.setAttributeNS(Bl,Pl,Ql):Kt.setAttribute(Pl,Ql),h(zt.removed)}catch{}}}Id("afterSanitizeAttributes",Kt,null)},Da=function un(Kt){let De=null,ti=rm(Kt);for(Id("beforeSanitizeShadowDOM",Kt,null);De=ti.nextNode();){if(Id("uponSanitizeShadowNode",De,null),MW(De))continue;let Hi=ge(De);De.nodeType===1&&(Hi&&Hi.__depth?De.__depth=(De.__removalCount||0)+Hi.__depth+1:De.__depth=1),De.__depth>=ib&&Cd(De),De.content instanceof Vn&&(De.content.__depth=De.__depth,un(De.content)),dm(De)}Id("afterSanitizeShadowDOM",Kt,null)};return zt.sanitize=function(un){let Kt=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},De=null,ti=null,Hi=null,bl=null;if(xW=!un,xW&&(un=""),typeof un!="string"&&!LW(un))if(typeof un.toString=="function"){if(un=un.toString(),typeof un!="string")throw C("dirty is not a string, aborting")}else throw C("toString is not a function");if(!zt.isSupported)return un;if($R||JW(Kt),zt.removed=[],typeof un=="string"&&(lh=!1),lh){if(un.nodeName){let Yr=Js(un.nodeName);if(!Bi[Yr]||$n[Yr])throw C("root node is forbidden and cannot be sanitized in-place")}}else if(un instanceof _t)De=Rg(""),ti=De.ownerDocument.importNode(un,!0),ti.nodeType===1&&ti.nodeName==="BODY"||ti.nodeName==="HTML"?De=ti:De.appendChild(ti);else{if(!LV&&!Ed&&!bc&&un.indexOf("<")===-1)return ue&&tb?ue.createHTML(un):un;if(De=Rg(un),!De)return LV?null:tb?Ke:""}De&&up&&Cd(De.firstChild);let Pl=rm(lh?un:De);for(;Hi=Pl.nextNode();){if(MW(Hi))continue;let Yr=ge(Hi);Hi.nodeType===1&&(Yr&&Yr.__depth?Hi.__depth=(Hi.__removalCount||0)+Yr.__depth+1:Hi.__depth=1),Hi.__depth>=ib&&Cd(Hi),Hi.content instanceof Vn&&(Hi.content.__depth=Hi.__depth,Da(Hi.content)),dm(Hi)}if(lh)return un;if(LV){if(QW)for(bl=da.call(De.ownerDocument);De.firstChild;)bl.appendChild(De.firstChild);else bl=De;return(zi.shadowroot||zi.shadowrootmode)&&(bl=Rl.call(Ve,bl,!0)),bl}let Bl=bc?De.outerHTML:De.innerHTML;return bc&&Bi["!doctype"]&&De.ownerDocument&&De.ownerDocument.doctype&&De.ownerDocument.doctype.name&&g(kt,De.ownerDocument.doctype.name)&&(Bl=" +`+Bl),Ed&&m([Go,Ao,Xs],Yr=>{Bl=U(Bl,Yr," ")}),ue&&tb?ue.createHTML(Bl):Bl},zt.setConfig=function(){let un=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};JW(un),$R=!0},zt.clearConfig=function(){ld=null,$R=!1},zt.isValidAttribute=function(un,Kt,De){ld||JW({});let ti=Js(un),Hi=Js(Kt);return Wg(ti,Hi,De)},zt.addHook=function(un,Kt){typeof Kt=="function"&&(na[un]=na[un]||[],u(na[un],Kt))},zt.removeHook=function(un){if(na[un])return h(na[un])},zt.removeHooks=function(un){na[un]&&(na[un]=[])},zt.removeAllHooks=function(){na={}},zt}var rn=He();return rn})});var qRt=Zo((G2n,r$)=>{"use strict";var A2n=b(W());r$.exports=Yw;r$.exports.default=Yw;function Yw(t,e,n){n=n||2;var i=e&&e.length,o=i?e[0]*n:t.length,a=KRt(t,0,o,n,!0),s=[];if(!a||a.next===a.prev)return s;var l,r,d,m,h,u,R;if(i&&(a=Jqt(t,e,a,n)),t.length>80*n){l=d=t[0],r=m=t[1];for(var V=n;Vd&&(d=h),u>m&&(m=u);R=Math.max(d-l,m-r),R=R!==0?32767/R:0}return lY(a,s,n,l,r,R,0),s}function KRt(t,e,n,i,o){var a,s;if(o===l$(t,e,n,i)>0)for(a=e;a=e;a-=i)s=vRt(a,t[a],t[a+1],s);return s&&xw(s,s.next)&&(dY(s),s=s.next),s}function TA(t,e){if(!t)return t;e||(e=t);var n=t,i;do if(i=!1,!n.steiner&&(xw(n,n.next)||ol(n.prev,n,n.next)===0)){if(dY(n),n=e=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==e);return e}function lY(t,e,n,i,o,a,s){if(t){!s&&a&&Oqt(t,i,o,a);for(var l=t,r,d;t.prev!==t.next;){if(r=t.prev,d=t.next,a?Yqt(t,i,o,a):kqt(t)){e.push(r.i/n|0),e.push(t.i/n|0),e.push(d.i/n|0),dY(t),t=d.next,l=d.next;continue}if(t=d,t===l){s?s===1?(t=xqt(TA(t),e,n),lY(t,e,n,i,o,a,2)):s===2&&Xqt(t,e,n,i,o,a):lY(TA(t),e,n,i,o,a,1);break}}}}function kqt(t){var e=t.prev,n=t,i=t.next;if(ol(e,n,i)>=0)return!1;for(var o=e.x,a=n.x,s=i.x,l=e.y,r=n.y,d=i.y,m=oa?o>s?o:s:a>s?a:s,R=l>r?l>d?l:d:r>d?r:d,V=i.next;V!==e;){if(V.x>=m&&V.x<=u&&V.y>=h&&V.y<=R&&HE(o,l,a,r,s,d,V.x,V.y)&&ol(V.prev,V,V.next)>=0)return!1;V=V.next}return!0}function Yqt(t,e,n,i){var o=t.prev,a=t,s=t.next;if(ol(o,a,s)>=0)return!1;for(var l=o.x,r=a.x,d=s.x,m=o.y,h=a.y,u=s.y,R=lr?l>d?l:d:r>d?r:d,U=m>h?m>u?m:u:h>u?h:u,G=a$(R,V,e,n,i),A=a$(F,U,e,n,i),S=t.prevZ,g=t.nextZ;S&&S.z>=G&&g&&g.z<=A;){if(S.x>=R&&S.x<=F&&S.y>=V&&S.y<=U&&S!==o&&S!==s&&HE(l,m,r,h,d,u,S.x,S.y)&&ol(S.prev,S,S.next)>=0||(S=S.prevZ,g.x>=R&&g.x<=F&&g.y>=V&&g.y<=U&&g!==o&&g!==s&&HE(l,m,r,h,d,u,g.x,g.y)&&ol(g.prev,g,g.next)>=0))return!1;g=g.nextZ}for(;S&&S.z>=G;){if(S.x>=R&&S.x<=F&&S.y>=V&&S.y<=U&&S!==o&&S!==s&&HE(l,m,r,h,d,u,S.x,S.y)&&ol(S.prev,S,S.next)>=0)return!1;S=S.prevZ}for(;g&&g.z<=A;){if(g.x>=R&&g.x<=F&&g.y>=V&&g.y<=U&&g!==o&&g!==s&&HE(l,m,r,h,d,u,g.x,g.y)&&ol(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function xqt(t,e,n){var i=t;do{var o=i.prev,a=i.next.next;!xw(o,a)&&zRt(o,i,i.next,a)&&rY(o,a)&&rY(a,o)&&(e.push(o.i/n|0),e.push(i.i/n|0),e.push(a.i/n|0),dY(i),dY(i.next),i=t=a),i=i.next}while(i!==t);return TA(i)}function Xqt(t,e,n,i,o,a){var s=t;do{for(var l=s.next.next;l!==s.prev;){if(s.i!==l.i&&Pqt(s,l)){var r=jRt(s,l);s=TA(s,s.next),r=TA(r,r.next),lY(s,e,n,i,o,a,0),lY(r,e,n,i,o,a,0);return}l=l.next}s=s.next}while(s!==t)}function Jqt(t,e,n,i){var o=[],a,s,l,r,d;for(a=0,s=e.length;a=n.next.y&&n.next.y!==n.y){var l=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(l<=i&&l>a&&(a=l,s=n.x=n.x&&n.x>=d&&i!==n.x&&HE(os.x||n.x===s.x&&Dqt(s,n)))&&(s=n,h=u)),n=n.next;while(n!==r);return s}function Dqt(t,e){return ol(t.prev,t,e.prev)<0&&ol(e.next,t,t.next)<0}function Oqt(t,e,n,i){var o=t;do o.z===0&&(o.z=a$(o.x,o.y,e,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==t);o.prevZ.nextZ=null,o.prevZ=null,Hqt(o)}function Hqt(t){var e,n,i,o,a,s,l,r,d=1;do{for(n=t,t=null,a=null,s=0;n;){for(s++,i=n,l=0,e=0;e0||r>0&&i;)l!==0&&(r===0||!i||n.z<=i.z)?(o=n,n=n.nextZ,l--):(o=i,i=i.nextZ,r--),a?a.nextZ=o:t=o,o.prevZ=a,a=o;n=i}a.nextZ=null,d*=2}while(s>1);return t}function a$(t,e,n,i,o){return t=(t-n)*o|0,e=(e-i)*o|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t|e<<1}function wqt(t){var e=t,n=t;do(e.x=(t-s)*(a-l)&&(t-s)*(i-l)>=(n-s)*(e-l)&&(n-s)*(a-l)>=(o-s)*(i-l)}function Pqt(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!vqt(t,e)&&(rY(t,e)&&rY(e,t)&&Kqt(t,e)&&(ol(t.prev,t,e.prev)||ol(t,e.prev,e))||xw(t,e)&&ol(t.prev,t,t.next)>0&&ol(e.prev,e,e.next)>0)}function ol(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function xw(t,e){return t.x===e.x&&t.y===e.y}function zRt(t,e,n,i){var o=kw(ol(t,e,n)),a=kw(ol(t,e,i)),s=kw(ol(n,i,t)),l=kw(ol(n,i,e));return!!(o!==a&&s!==l||o===0&&Qw(t,n,e)||a===0&&Qw(t,i,e)||s===0&&Qw(n,t,i)||l===0&&Qw(n,e,i))}function Qw(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function kw(t){return t>0?1:t<0?-1:0}function vqt(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&zRt(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}function rY(t,e){return ol(t.prev,t,t.next)<0?ol(t,e,t.next)>=0&&ol(t,t.prev,e)>=0:ol(t,e,t.prev)<0||ol(t,t.next,e)<0}function Kqt(t,e){var n=t,i=!1,o=(t.x+e.x)/2,a=(t.y+e.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&o<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==t);return i}function jRt(t,e){var n=new s$(t.i,t.x,t.y),i=new s$(e.i,e.x,e.y),o=t.next,a=e.prev;return t.next=e,e.prev=t,n.next=o,o.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function vRt(t,e,n,i){var o=new s$(t,e,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function dY(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function s$(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Yw.deviation=function(t,e,n,i){var o=e&&e.length,a=o?e[0]*n:t.length,s=Math.abs(l$(t,0,a,n));if(o)for(var l=0,r=e.length;l0&&(i+=t[o-1].length,n.holes.push(i))}return n}});var oft=Zo((i7n,ift)=>{"use strict";var o7n=b(W());ift.exports=Vre;var FX=1e20;function Vre(t,e){e||(e={});var n=e.cutoff==null?.25:e.cutoff,i=e.radius==null?8:e.radius,o=e.channel||0,a,s,l,r,d,m,h,u,R,V,F;if(ArrayBuffer.isView(t)||Array.isArray(t)){if(!e.width||!e.height)throw Error("For raw data width and height should be provided by options");a=e.width,s=e.height,r=t,e.stride?m=e.stride:m=Math.floor(t.length/a/s)}else window.HTMLCanvasElement&&t instanceof window.HTMLCanvasElement?(u=t,h=u.getContext("2d"),a=u.width,s=u.height,R=h.getImageData(0,0,a,s),r=R.data,m=4):window.CanvasRenderingContext2D&&t instanceof window.CanvasRenderingContext2D?(u=t.canvas,h=t,a=u.width,s=u.height,R=h.getImageData(0,0,a,s),r=R.data,m=4):window.ImageData&&t instanceof window.ImageData&&(R=t,a=t.width,s=t.height,r=R.data,m=4);if(l=Math.max(a,s),window.Uint8ClampedArray&&r instanceof window.Uint8ClampedArray||window.Uint8Array&&r instanceof window.Uint8Array)for(d=r,r=Array(a*s),V=0,F=Math.floor(d.length/m);V{var A7n=b(W());function Sre(){var t=0,e=1,n=2,i=3,o=4,a=5,s=6,l=7,r=8,d=9,m=10,h=11,u=12,R=13,V=14,F=15,U=16,G=17,A=0,S=1,g=2,C=3,y=4;function Y(Z,E){return 55296<=Z.charCodeAt(E)&&Z.charCodeAt(E)<=56319&&56320<=Z.charCodeAt(E+1)&&Z.charCodeAt(E+1)<=57343}function Q(Z,E){E===void 0&&(E=0);var I=Z.charCodeAt(E);if(55296<=I&&I<=56319&&E=1){var B=Z.charCodeAt(E-1),X=I;return 55296<=B&&B<=56319?(B-55296)*1024+(X-56320)+65536:X}return I}function J(Z,E,I){var B=[Z].concat(E).concat([I]),X=B[B.length-2],_=I,P=B.lastIndexOf(V);if(P>1&&B.slice(1,P).every(function(H){return H==i})&&[i,R,G].indexOf(Z)==-1)return g;var w=B.lastIndexOf(o);if(w>0&&B.slice(1,w).every(function(H){return H==o})&&[u,o].indexOf(X)==-1)return B.filter(function(H){return H==o}).length%2==1?C:y;if(X==t&&_==e)return A;if(X==n||X==t||X==e)return _==V&&E.every(function(H){return H==i})?g:S;if(_==n||_==t||_==e)return S;if(X==s&&(_==s||_==l||_==d||_==m))return A;if((X==d||X==l)&&(_==l||_==r))return A;if((X==m||X==r)&&_==r)return A;if(_==i||_==F)return A;if(_==a)return A;if(X==u)return A;var z=B.indexOf(i)!=-1?B.lastIndexOf(i)-1:B.length-2;return[R,G].indexOf(B[z])!=-1&&B.slice(z+1,-1).every(function(H){return H==i})&&_==V||X==F&&[U,G].indexOf(_)!=-1?A:E.indexOf(o)!=-1?g:X==o&&_==o?A:S}this.nextBreak=function(Z,E){if(E===void 0&&(E=0),E<0)return 0;if(E>=Z.length-1)return Z.length;for(var I=M(Q(Z,E)),B=[],X=E+1;X{var $gi=b(W());(function(t,e){typeof wet=="object"&&typeof Pet<"u"?Pet.exports=e():typeof define=="function"&&define.amd?define(e):(t=t||self).RBush=e()})(wet,function(){"use strict";function t(U,G,A,S,g){(function C(y,Y,Q,J,M){for(;J>Q;){if(J-Q>600){var Z=J-Q+1,E=Y-Q+1,I=Math.log(Z),B=.5*Math.exp(2*I/3),X=.5*Math.sqrt(I*B*(Z-B)/Z)*(E-Z/2<0?-1:1),_=Math.max(Q,Math.floor(Y-E*B/Z+X)),P=Math.min(J,Math.floor(Y+(Z-E)*B/Z+X));C(y,Y,_,P,M)}var w=y[Y],z=Q,H=J;for(e(y,Q,Y),M(y[J],w)>0&&e(y,Q,J);z0;)H--}M(y[Q],w)===0?e(y,Q,H):e(y,++H,J),H<=Y&&(Q=H+1),Y<=H&&(J=H-1)}})(U,G,A||0,S||U.length-1,g||n)}function e(U,G,A){var S=U[G];U[G]=U[A],U[A]=S}function n(U,G){return UG?1:0}var i=function(U){U===void 0&&(U=9),this._maxEntries=Math.max(4,U),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function o(U,G,A){if(!A)return G.indexOf(U);for(var S=0;S=U.minX&&G.maxY>=U.minY}function V(U){return{children:U,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function F(U,G,A,S,g){for(var C=[G,A];C.length;)if(!((A=C.pop())-(G=C.pop())<=S)){var y=G+Math.ceil((A-G)/S/2)*S;t(U,y,G,A,g),C.push(G,y,y,A)}}return i.prototype.all=function(){return this._all(this.data,[])},i.prototype.search=function(U){var G=this.data,A=[];if(!R(U,G))return A;for(var S=this.toBBox,g=[];G;){for(var C=0;C=0&&g[G].children.length>this._maxEntries;)this._split(g,G),G--;this._adjustParentBBoxes(S,g,G)},i.prototype._split=function(U,G){var A=U[G],S=A.children.length,g=this._minEntries;this._chooseSplitAxis(A,g,S);var C=this._chooseSplitIndex(A,g,S),y=V(A.children.splice(C,A.children.length-C));y.height=A.height,y.leaf=A.leaf,a(A,this.toBBox),a(y,this.toBBox),G?U[G-1].children.push(y):this._splitRoot(A,y)},i.prototype._splitRoot=function(U,G){this.data=V([U,G]),this.data.height=U.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},i.prototype._chooseSplitIndex=function(U,G,A){for(var S,g,C,y,Y,Q,J,M=1/0,Z=1/0,E=G;E<=A-G;E++){var I=s(U,0,E,this.toBBox),B=s(U,E,A,this.toBBox),X=(g=I,C=B,y=void 0,Y=void 0,Q=void 0,J=void 0,y=Math.max(g.minX,C.minX),Y=Math.max(g.minY,C.minY),Q=Math.min(g.maxX,C.maxX),J=Math.min(g.maxY,C.maxY),Math.max(0,Q-y)*Math.max(0,J-Y)),_=m(I)+m(B);X=G;M--){var Z=U.children[M];l(y,U.leaf?g(Z):Z),Y+=h(y)}return Y},i.prototype._adjustParentBBoxes=function(U,G,A){for(var S=A;S>=0;S--)l(G[S],U)},i.prototype._condense=function(U){for(var G=U.length-1,A=void 0;G>=0;G--)U[G].children.length===0?G>0?(A=U[G-1].children).splice(A.indexOf(U[G]),1):this.clear():a(U[G],this.toBBox)},i})});var zEt=Zo((DI,oM)=>{var AJi=b(W());/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(){var t,e="4.17.21",n=200,i="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",a="Invalid `variable` option passed into `_.template`",s="__lodash_hash_undefined__",l=500,r="__lodash_placeholder__",d=1,m=2,h=4,Z=1,b=2,u=1,F=2,U=4,G=8,A=16,T=32,g=64,C=128,y=256,Y=512,Q=30,J="...",M=800,V=16,E=1,I=2,B=3,X=1/0,_=9007199254740991,P=17976931348623157e292,w=NaN,z=4294967295,H=z-1,nt=z>>>1,$=[["ary",C],["bind",u],["bindKey",F],["curry",G],["curryRight",A],["flip",Y],["partial",T],["partialRight",g],["rearg",y]],dt="[object Arguments]",q="[object Array]",at="[object AsyncFunction]",st="[object Boolean]",Et="[object Date]",Qt="[object DOMException]",Wt="[object Error]",Nt="[object Function]",kt="[object GeneratorFunction]",Mt="[object Map]",qt="[object Number]",ie="[object Null]",oe="[object Object]",He="[object Promise]",rn="[object Proxy]",de="[object RegExp]",zt="[object Set]",ke="[object String]",ue="[object Symbol]",We="[object Undefined]",un="[object WeakMap]",Ct="[object WeakSet]",_t="[object ArrayBuffer]",Je="[object DataView]",xe="[object Float32Array]",oo="[object Float64Array]",ea="[object Int8Array]",gs="[object Int16Array]",is="[object Int32Array]",ja="[object Uint8Array]",qn="[object Uint8ClampedArray]",ae="[object Uint16Array]",fe="[object Uint32Array]",ge=/\b__p \+= '';/g,Ze=/\b(__p \+=) '' \+/g,Ke=/(__e\(.*?\)|\b__t\)) \+\n'';/g,An=/&(?:amp|lt|gt|quot|#39);/g,si=/[&<>"']/g,da=RegExp(An.source),_a=RegExp(si.source),bl=/<%-([\s\S]+?)%>/g,na=/<%([\s\S]+?)%>/g,Go=/<%=([\s\S]+?)%>/g,Ao=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Xs=/^\w*$/,Es=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wl=/[\\^$.*+?()[\]{}|]/g,ka=RegExp(wl.source),Wa=/^\s+/,Ju=/\s/,yl=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bi=/\{\n\/\* \[wrapped with (.+)\] \*/,sd=/,? & /,zi=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,js=/[()=,{}\[\]\/\s]/,ca=/\\(\\)?/g,$n=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,mr=/\w*$/,hr=/^[-+]0x[0-9a-f]+$/i,pr=/^0b[01]+$/i,hs=/^\[object .+?Constructor\]$/,ma=/^0o[0-7]+$/i,Ed=/^(?:0|[1-9]\d*)$/,BW=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Rc=/($^)/,$b=/['\n\r\u2028\u2029\\]/g,Zp="\\ud800-\\udfff",Lu="\\u0300-\\u036f",QW="\\ufe20-\\ufe2f",tR="\\u20d0-\\u20ff",kW=Lu+QW+tR,YW="\\u2700-\\u27bf",pg="a-z\\xdf-\\xf6\\xf8-\\xff",MU="\\xac\\xb1\\xd7\\xf7",lh="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Vp="\\u2000-\\u206f",lm=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",_U="A-Z\\xc0-\\xd6\\xd8-\\xde",DU="\\ufe0e\\ufe0f",Mu=MU+lh+Vp+lm,eR="['\u2019]",ug="["+Zp+"]",bp="["+Mu+"]",Rp="["+kW+"]",kr="\\d+",fV="["+YW+"]",xW="["+pg+"]",XW="[^"+Zp+Mu+kr+YW+pg+_U+"]",OU="\\ud83c[\\udffb-\\udfff]",nR="(?:"+Rp+"|"+OU+")",rh="[^"+Zp+"]",HU="(?:\\ud83c[\\udde6-\\uddff]){2}",Js="[\\ud800-\\udbff][\\udc00-\\udfff]",ld="["+_U+"]",iR="\\u200d",wU="(?:"+xW+"|"+XW+")",PU="(?:"+ld+"|"+XW+")",JW="(?:"+eR+"(?:d|ll|m|re|s|t|ve))?",FV="(?:"+eR+"(?:D|LL|M|RE|S|T|VE))?",vU=nR+"?",Zg="["+DU+"]?",Vg="(?:"+iR+"(?:"+[rh,HU,Js].join("|")+")"+Zg+vU+")*",oR="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",SN="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Cd=Zg+vU+Vg,KU="(?:"+[fV,HU,Js].join("|")+")"+Cd,bg="(?:"+[rh+Rp+"?",Rp,HU,Js,ug].join("|")+")",rm=RegExp(eR,"g"),Rg=RegExp(Rp,"g"),LW=RegExp(OU+"(?="+OU+")|"+bg+Cd,"g"),Id=RegExp([ld+"?"+xW+"+"+JW+"(?="+[bp,ld,"$"].join("|")+")",PU+"+"+FV+"(?="+[bp,ld+wU,"$"].join("|")+")",ld+"?"+wU+"+"+JW,ld+"+"+FV,SN,oR,kr,KU].join("|"),"g"),MW=RegExp("["+iR+Zp+kW+DU+"]"),Wg=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,fg=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],dm=-1,Da={};Da[xe]=Da[oo]=Da[ea]=Da[gs]=Da[is]=Da[ja]=Da[qn]=Da[ae]=Da[fe]=!0,Da[dt]=Da[q]=Da[_t]=Da[st]=Da[Je]=Da[Et]=Da[Wt]=Da[Nt]=Da[Mt]=Da[qt]=Da[oe]=Da[de]=Da[zt]=Da[ke]=Da[un]=!1;var Zn={};Zn[dt]=Zn[q]=Zn[_t]=Zn[Je]=Zn[st]=Zn[Et]=Zn[xe]=Zn[oo]=Zn[ea]=Zn[gs]=Zn[is]=Zn[Mt]=Zn[qt]=Zn[oe]=Zn[de]=Zn[zt]=Zn[ke]=Zn[ue]=Zn[ja]=Zn[qn]=Zn[ae]=Zn[fe]=!0,Zn[Wt]=Zn[Nt]=Zn[un]=!1;var Kt={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},De={"&":"&","<":"<",">":">",'"':""","'":"'"},ti={"&":"&","<":"<",">":">",""":'"',"'":"'"},Hi={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Rl=parseFloat,Pl=parseInt,Bl=typeof global=="object"&&global&&global.Object===Object&&global,Yr=typeof self=="object"&&self&&self.Object===Object&&self,ps=Bl||Yr||Function("return this")(),Ql=typeof DI=="object"&&DI&&!DI.nodeType&&DI,Wp=Ql&&typeof oM=="object"&&oM&&!oM.nodeType&&oM,zU=Wp&&Wp.exports===Ql,Fg=zU&&Bl.process,Ls=function(){try{var vt=Wp&&Wp.require&&Wp.require("util").types;return vt||Fg&&Fg.binding&&Fg.binding("util")}catch{}}(),Ug=Ls&&Ls.isArrayBuffer,lO=Ls&&Ls.isDate,rO=Ls&&Ls.isMap,dh=Ls&&Ls.isRegExp,dO=Ls&&Ls.isSet,aR=Ls&&Ls.isTypedArray;function Wc(vt,Te,me){switch(me.length){case 0:return vt.call(Te);case 1:return vt.call(Te,me[0]);case 2:return vt.call(Te,me[0],me[1]);case 3:return vt.call(Te,me[0],me[1],me[2])}return vt.apply(Te,me)}function y4(vt,Te,me,Jn){for(var Ai=-1,ia=vt==null?0:vt.length;++Ai-1}function DW(vt,Te,me){for(var Jn=-1,Ai=vt==null?0:vt.length;++Jn-1;);return me}function bO(vt,Te){for(var me=vt.length;me--&&HW(Te,vt[me],0)>-1;);return me}function J4(vt,Te){for(var me=vt.length,Jn=0;me--;)vt[me]===Te&&++Jn;return Jn}var L4=CN(Kt),M4=CN(De);function RO(vt){return"\\"+Hi[vt]}function _4(vt,Te){return vt==null?t:vt[Te]}function PW(vt){return MW.test(vt)}function Tg(vt){return Wg.test(vt)}function D4(vt){for(var Te,me=[];!(Te=vt.next()).done;)me.push(Te.value);return me}function yN(vt){var Te=-1,me=Array(vt.size);return vt.forEach(function(Jn,Ai){me[++Te]=[Ai,Jn]}),me}function WO(vt,Te){return function(me){return vt(Te(me))}}function AV(vt,Te){for(var me=-1,Jn=vt.length,Ai=0,ia=[];++me-1}function en(S,N){var O=this.__data__,tt=TO(O,S);return tt<0?(++this.size,O.push([S,N])):O[tt][1]=N,this}yt.prototype.clear=Yt,yt.prototype.delete=Dt,yt.prototype.get=pe,yt.prototype.has=Se,yt.prototype.set=en;function Vn(S){var N=-1,O=S==null?0:S.length;for(this.clear();++N=N?S:N)),S}function fp(S,N,O,tt,ct,Tt){var Jt,Ht=N&d,$t=N&m,ye=N&h;if(O&&(Jt=ct?O(S,tt,ct,Tt):O(S)),Jt!==t)return Jt;if(!qs(S))return S;var Be=ji(S);if(Be){if(Jt=_Yt(S),!Ht)return um(S,Jt)}else{var Oe=yd(S),Bn=Oe==Nt||Oe==kt;if(af(S))return kdt(S,Ht);if(Oe==oe||Oe==dt||Bn&&!ct){if(Jt=$t||Bn?{}:tct(S),!Ht)return $t?NYt(S,tYt(Jt,S)):IYt(S,mdt(Jt,S))}else{if(!Zn[Oe])return ct?S:{};Jt=DYt(S,Oe,Ht)}}Tt||(Tt=new fa);var li=Tt.get(S);if(li)return li;Tt.set(S,Jt),Cct(S)?S.forEach(function(ki){Jt.add(fp(ki,N,O,ki,S,Tt))}):gct(S)&&S.forEach(function(ki,No){Jt.set(No,fp(ki,N,O,No,S,Tt))});var Qi=ye?$t?N8:I8:$t?Vm:xr,Zo=Be?t:Qi(S);return cm(Zo||S,function(ki,No){Zo&&(No=ki,ki=S[No]),MN(Jt,No,fp(ki,N,O,No,S,Tt))}),Jt}function eYt(S){var N=xr(S);return function(O){return hdt(O,S,N)}}function hdt(S,N,O){var tt=O.length;if(S==null)return!tt;for(S=Oa(S);tt--;){var ct=O[tt],Tt=N[ct],Jt=S[ct];if(Jt===t&&!(ct in S)||!Tt(Jt))return!1}return!0}function pdt(S,N,O){if(typeof S!="function")throw new hm(o);return vN(function(){S.apply(t,O)},N)}function _N(S,N,O,tt){var ct=-1,Tt=_W,Jt=!0,Ht=S.length,$t=[],ye=N.length;if(!Ht)return $t;O&&(N=Ta(N,fc(O))),tt?(Tt=DW,Jt=!1):N.length>=n&&(Tt=jU,Jt=!1,N=new Oo(N));t:for(;++ctct?0:ct+O),tt=tt===t||tt>ct?ct:po(tt),tt<0&&(tt+=ct),tt=O>tt?0:Nct(tt);O0&&O(Ht)?N>1?rd(Ht,N-1,O,tt,ct):_u(ct,Ht):tt||(ct[ct.length]=Ht)}return ct}var h8=Mdt(),Vdt=Mdt(!0);function gV(S,N){return S&&h8(S,N,xr)}function p8(S,N){return S&&Vdt(S,N,xr)}function gO(S,N){return UV(N,function(O){return pR(S[O])})}function sG(S,N){N=nf(N,S);for(var O=0,tt=N.length;S!=null&&ON}function oYt(S,N){return S!=null&&ga.call(S,N)}function aYt(S,N){return S!=null&&N in Oa(S)}function sYt(S,N,O){return S>=us(N,O)&&S=120&&Be.length>=120)?new Oo(Jt&&Be):t}Be=S[0];var Oe=-1,Bn=Ht[0];t:for(;++Oe-1;)Ht!==S&&Bg.call(Ht,$t,1),Bg.call(S,$t,1);return S}function gdt(S,N){for(var O=S?N.length:0,tt=O-1;O--;){var ct=N[O];if(O==tt||ct!==Tt){var Tt=ct;hR(ct)?Bg.call(S,ct,1):G8(S,ct)}}return S}function f8(S,N){return S+lR(UO()*(N-S+1))}function WYt(S,N,O,tt){for(var ct=-1,Tt=Ms(eG((N-S)/(O||1)),0),Jt=me(Tt);Tt--;)Jt[tt?Tt:++ct]=S,S+=O;return Jt}function F8(S,N){var O="";if(!S||N<1||N>_)return O;do N%2&&(O+=S),N=lR(N/2),N&&(S+=S);while(N);return O}function Fo(S,N){return X8(ict(S,N,bm),S+"")}function fYt(S){return cdt(Dg(S))}function FYt(S,N){var O=Dg(S);return XO(O,aG(N,0,O.length))}function HN(S,N,O,tt){if(!qs(S))return S;N=nf(N,S);for(var ct=-1,Tt=N.length,Jt=Tt-1,Ht=S;Ht!=null&&++ctct?0:ct+N),O=O>ct?ct:O,O<0&&(O+=ct),ct=N>O?0:O-N>>>0,N>>>=0;for(var Tt=me(ct);++tt>>1,Jt=S[Tt];Jt!==null&&!mh(Jt)&&(O?Jt<=N:Jt=n){var ye=N?null:kYt(S);if(ye)return qU(ye);Jt=!1,ct=jU,$t=new Oo}else $t=N?[]:Ht;t:for(;++tt=tt?S:Fp(S,N,O)}var Qdt=t8||function(S){return ps.clearTimeout(S)};function kdt(S,N){if(N)return S.slice();var O=S.length,tt=fO?fO(O):new S.constructor(O);return S.copy(tt),tt}function g8(S){var N=new S.constructor(S.byteLength);return new Ng(N).set(new Ng(S)),N}function SYt(S,N){var O=N?g8(S.buffer):S.buffer;return new S.constructor(O,S.byteOffset,S.byteLength)}function gYt(S){var N=new S.constructor(S.source,mr.exec(S));return N.lastIndex=S.lastIndex,N}function EYt(S){return Yg?Oa(Yg.call(S)):{}}function Ydt(S,N){var O=N?g8(S.buffer):S.buffer;return new S.constructor(O,S.byteOffset,S.length)}function xdt(S,N){if(S!==N){var O=S!==t,tt=S===null,ct=S===S,Tt=mh(S),Jt=N!==t,Ht=N===null,$t=N===N,ye=mh(N);if(!Ht&&!ye&&!Tt&&S>N||Tt&&Jt&&$t&&!Ht&&!ye||tt&&Jt&&$t||!O&&$t||!ct)return 1;if(!tt&&!Tt&&!ye&&S=Ht)return $t;var ye=O[tt];return $t*(ye=="desc"?-1:1)}}return S.index-N.index}function Xdt(S,N,O,tt){for(var ct=-1,Tt=S.length,Jt=O.length,Ht=-1,$t=N.length,ye=Ms(Tt-Jt,0),Be=me($t+ye),Oe=!tt;++Ht<$t;)Be[Ht]=N[Ht];for(;++ct1?O[ct-1]:t,Jt=ct>2?O[2]:t;for(Tt=S.length>3&&typeof Tt=="function"?(ct--,Tt):t,Jt&&Uc(O[0],O[1],Jt)&&(Tt=ct<3?t:Tt,ct=1),N=Oa(N);++tt-1?ct[Tt?N[Jt]:Jt]:t}}function Odt(S){return mR(function(N){var O=N.length,tt=O,ct=pm.prototype.thru;for(S&&N.reverse();tt--;){var Tt=N[tt];if(typeof Tt!="function")throw new hm(o);if(ct&&!Jt&&YO(Tt)=="wrapper")var Jt=new pm([],!0)}for(tt=Jt?tt:O;++tt1&&Ko.reverse(),Be&&$tHt))return!1;var ye=Tt.get(S),Be=Tt.get(N);if(ye&&Be)return ye==N&&Be==S;var Oe=-1,Bn=!0,li=O&b?new Oo:t;for(Tt.set(S,N),Tt.set(N,S);++Oe1?"& ":"")+N[tt],N=N.join(O>2?", ":" "),S.replace(yl,`{ + */(function(){var t,e="4.17.21",n=200,i="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",a="Invalid `variable` option passed into `_.template`",s="__lodash_hash_undefined__",l=500,r="__lodash_placeholder__",d=1,m=2,h=4,u=1,R=2,V=1,F=2,U=4,G=8,A=16,S=32,g=64,C=128,y=256,Y=512,Q=30,J="...",M=800,Z=16,E=1,I=2,B=3,X=1/0,_=9007199254740991,P=17976931348623157e292,w=NaN,z=4294967295,H=z-1,nt=z>>>1,$=[["ary",C],["bind",V],["bindKey",F],["curry",G],["curryRight",A],["flip",Y],["partial",S],["partialRight",g],["rearg",y]],dt="[object Arguments]",q="[object Array]",at="[object AsyncFunction]",st="[object Boolean]",Et="[object Date]",Qt="[object DOMException]",Wt="[object Error]",Nt="[object Function]",kt="[object GeneratorFunction]",Mt="[object Map]",qt="[object Number]",ie="[object Null]",oe="[object Object]",He="[object Promise]",rn="[object Proxy]",de="[object RegExp]",zt="[object Set]",ke="[object String]",Ve="[object Symbol]",We="[object Undefined]",Vn="[object WeakMap]",Ct="[object WeakSet]",_t="[object ArrayBuffer]",Je="[object DataView]",xe="[object Float32Array]",oo="[object Float64Array]",ea="[object Int8Array]",gs="[object Int16Array]",is="[object Int32Array]",ja="[object Uint8Array]",qn="[object Uint8ClampedArray]",ae="[object Uint16Array]",fe="[object Uint32Array]",ge=/\b__p \+= '';/g,ue=/\b(__p \+=) '' \+/g,Ke=/(__e\(.*?\)|\b__t\)) \+\n'';/g,An=/&(?:amp|lt|gt|quot|#39);/g,si=/[&<>"']/g,da=RegExp(An.source),_a=RegExp(si.source),Rl=/<%-([\s\S]+?)%>/g,na=/<%([\s\S]+?)%>/g,Go=/<%=([\s\S]+?)%>/g,Ao=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Xs=/^\w*$/,Es=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,wl=/[\\^$.*+?()[\]{}|]/g,ka=RegExp(wl.source),Wa=/^\s+/,JV=/\s/,yl=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bi=/\{\n\/\* \[wrapped with (.+)\] \*/,sd=/,? & /,zi=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,js=/[()=,{}\[\]\/\s]/,ca=/\\(\\)?/g,$n=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,mr=/\w*$/,hr=/^[-+]0x[0-9a-f]+$/i,pr=/^0b[01]+$/i,hs=/^\[object .+?Constructor\]$/,ma=/^0o[0-7]+$/i,Ed=/^(?:0|[1-9]\d*)$/,BW=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,bc=/($^)/,$R=/['\n\r\u2028\u2029\\]/g,up="\\ud800-\\udfff",LV="\\u0300-\\u036f",QW="\\ufe20-\\ufe2f",tb="\\u20d0-\\u20ff",kW=LV+QW+tb,YW="\\u2700-\\u27bf",pg="a-z\\xdf-\\xf6\\xf8-\\xff",MU="\\xac\\xb1\\xd7\\xf7",lh="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Zp="\\u2000-\\u206f",lm=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",_U="A-Z\\xc0-\\xd6\\xd8-\\xde",DU="\\ufe0e\\ufe0f",MV=MU+lh+Zp+lm,eb="['\u2019]",Vg="["+up+"]",Rp="["+MV+"]",bp="["+kW+"]",kr="\\d+",fZ="["+YW+"]",xW="["+pg+"]",XW="[^"+up+MV+kr+YW+pg+_U+"]",OU="\\ud83c[\\udffb-\\udfff]",nb="(?:"+bp+"|"+OU+")",rh="[^"+up+"]",HU="(?:\\ud83c[\\udde6-\\uddff]){2}",Js="[\\ud800-\\udbff][\\udc00-\\udfff]",ld="["+_U+"]",ib="\\u200d",wU="(?:"+xW+"|"+XW+")",PU="(?:"+ld+"|"+XW+")",JW="(?:"+eb+"(?:d|ll|m|re|s|t|ve))?",FZ="(?:"+eb+"(?:D|LL|M|RE|S|T|VE))?",vU=nb+"?",ug="["+DU+"]?",Zg="(?:"+ib+"(?:"+[rh,HU,Js].join("|")+")"+ug+vU+")*",ob="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",TN="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Cd=ug+vU+Zg,KU="(?:"+[fZ,HU,Js].join("|")+")"+Cd,Rg="(?:"+[rh+bp+"?",bp,HU,Js,Vg].join("|")+")",rm=RegExp(eb,"g"),bg=RegExp(bp,"g"),LW=RegExp(OU+"(?="+OU+")|"+Rg+Cd,"g"),Id=RegExp([ld+"?"+xW+"+"+JW+"(?="+[Rp,ld,"$"].join("|")+")",PU+"+"+FZ+"(?="+[Rp,ld+wU,"$"].join("|")+")",ld+"?"+wU+"+"+JW,ld+"+"+FZ,TN,ob,kr,KU].join("|"),"g"),MW=RegExp("["+ib+up+kW+DU+"]"),Wg=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,fg=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],dm=-1,Da={};Da[xe]=Da[oo]=Da[ea]=Da[gs]=Da[is]=Da[ja]=Da[qn]=Da[ae]=Da[fe]=!0,Da[dt]=Da[q]=Da[_t]=Da[st]=Da[Je]=Da[Et]=Da[Wt]=Da[Nt]=Da[Mt]=Da[qt]=Da[oe]=Da[de]=Da[zt]=Da[ke]=Da[Vn]=!1;var un={};un[dt]=un[q]=un[_t]=un[Je]=un[st]=un[Et]=un[xe]=un[oo]=un[ea]=un[gs]=un[is]=un[Mt]=un[qt]=un[oe]=un[de]=un[zt]=un[ke]=un[Ve]=un[ja]=un[qn]=un[ae]=un[fe]=!0,un[Wt]=un[Nt]=un[Vn]=!1;var Kt={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},De={"&":"&","<":"<",">":">",'"':""","'":"'"},ti={"&":"&","<":"<",">":">",""":'"',"'":"'"},Hi={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},bl=parseFloat,Pl=parseInt,Bl=typeof global=="object"&&global&&global.Object===Object&&global,Yr=typeof self=="object"&&self&&self.Object===Object&&self,ps=Bl||Yr||Function("return this")(),Ql=typeof DI=="object"&&DI&&!DI.nodeType&&DI,Wp=Ql&&typeof oM=="object"&&oM&&!oM.nodeType&&oM,zU=Wp&&Wp.exports===Ql,Fg=zU&&Bl.process,Ls=function(){try{var vt=Wp&&Wp.require&&Wp.require("util").types;return vt||Fg&&Fg.binding&&Fg.binding("util")}catch{}}(),Ug=Ls&&Ls.isArrayBuffer,lO=Ls&&Ls.isDate,rO=Ls&&Ls.isMap,dh=Ls&&Ls.isRegExp,dO=Ls&&Ls.isSet,ab=Ls&&Ls.isTypedArray;function Wc(vt,Se,me){switch(me.length){case 0:return vt.call(Se);case 1:return vt.call(Se,me[0]);case 2:return vt.call(Se,me[0],me[1]);case 3:return vt.call(Se,me[0],me[1],me[2])}return vt.apply(Se,me)}function y4(vt,Se,me,Jn){for(var Ai=-1,ia=vt==null?0:vt.length;++Ai-1}function DW(vt,Se,me){for(var Jn=-1,Ai=vt==null?0:vt.length;++Jn-1;);return me}function RO(vt,Se){for(var me=vt.length;me--&&HW(Se,vt[me],0)>-1;);return me}function J4(vt,Se){for(var me=vt.length,Jn=0;me--;)vt[me]===Se&&++Jn;return Jn}var L4=CN(Kt),M4=CN(De);function bO(vt){return"\\"+Hi[vt]}function _4(vt,Se){return vt==null?t:vt[Se]}function PW(vt){return MW.test(vt)}function Sg(vt){return Wg.test(vt)}function D4(vt){for(var Se,me=[];!(Se=vt.next()).done;)me.push(Se.value);return me}function yN(vt){var Se=-1,me=Array(vt.size);return vt.forEach(function(Jn,Ai){me[++Se]=[Ai,Jn]}),me}function WO(vt,Se){return function(me){return vt(Se(me))}}function AZ(vt,Se){for(var me=-1,Jn=vt.length,Ai=0,ia=[];++me-1}function en(T,N){var O=this.__data__,tt=SO(O,T);return tt<0?(++this.size,O.push([T,N])):O[tt][1]=N,this}yt.prototype.clear=Yt,yt.prototype.delete=Dt,yt.prototype.get=pe,yt.prototype.has=Te,yt.prototype.set=en;function Zn(T){var N=-1,O=T==null?0:T.length;for(this.clear();++N=N?T:N)),T}function fp(T,N,O,tt,ct,St){var Jt,Ht=N&d,$t=N&m,ye=N&h;if(O&&(Jt=ct?O(T,tt,ct,St):O(T)),Jt!==t)return Jt;if(!qs(T))return T;var Be=ji(T);if(Be){if(Jt=_Yt(T),!Ht)return Vm(T,Jt)}else{var Oe=yd(T),Bn=Oe==Nt||Oe==kt;if(af(T))return kdt(T,Ht);if(Oe==oe||Oe==dt||Bn&&!ct){if(Jt=$t||Bn?{}:tct(T),!Ht)return $t?NYt(T,tYt(Jt,T)):IYt(T,mdt(Jt,T))}else{if(!un[Oe])return ct?T:{};Jt=DYt(T,Oe,Ht)}}St||(St=new fa);var li=St.get(T);if(li)return li;St.set(T,Jt),Cct(T)?T.forEach(function(ki){Jt.add(fp(ki,N,O,ki,T,St))}):gct(T)&&T.forEach(function(ki,No){Jt.set(No,fp(ki,N,O,No,T,St))});var Qi=ye?$t?N8:I8:$t?Zm:xr,uo=Be?t:Qi(T);return cm(uo||T,function(ki,No){uo&&(No=ki,ki=T[No]),MN(Jt,No,fp(ki,N,O,No,T,St))}),Jt}function eYt(T){var N=xr(T);return function(O){return hdt(O,T,N)}}function hdt(T,N,O){var tt=O.length;if(T==null)return!tt;for(T=Oa(T);tt--;){var ct=O[tt],St=N[ct],Jt=T[ct];if(Jt===t&&!(ct in T)||!St(Jt))return!1}return!0}function pdt(T,N,O){if(typeof T!="function")throw new hm(o);return vN(function(){T.apply(t,O)},N)}function _N(T,N,O,tt){var ct=-1,St=_W,Jt=!0,Ht=T.length,$t=[],ye=N.length;if(!Ht)return $t;O&&(N=Sa(N,fc(O))),tt?(St=DW,Jt=!1):N.length>=n&&(St=jU,Jt=!1,N=new Oo(N));t:for(;++ctct?0:ct+O),tt=tt===t||tt>ct?ct:po(tt),tt<0&&(tt+=ct),tt=O>tt?0:Nct(tt);O0&&O(Ht)?N>1?rd(Ht,N-1,O,tt,ct):_V(ct,Ht):tt||(ct[ct.length]=Ht)}return ct}var h8=Mdt(),Zdt=Mdt(!0);function gZ(T,N){return T&&h8(T,N,xr)}function p8(T,N){return T&&Zdt(T,N,xr)}function gO(T,N){return UZ(N,function(O){return pb(T[O])})}function sG(T,N){N=nf(N,T);for(var O=0,tt=N.length;T!=null&&ON}function oYt(T,N){return T!=null&&ga.call(T,N)}function aYt(T,N){return T!=null&&N in Oa(T)}function sYt(T,N,O){return T>=Vs(N,O)&&T=120&&Be.length>=120)?new Oo(Jt&&Be):t}Be=T[0];var Oe=-1,Bn=Ht[0];t:for(;++Oe-1;)Ht!==T&&Bg.call(Ht,$t,1),Bg.call(T,$t,1);return T}function gdt(T,N){for(var O=T?N.length:0,tt=O-1;O--;){var ct=N[O];if(O==tt||ct!==St){var St=ct;hb(ct)?Bg.call(T,ct,1):G8(T,ct)}}return T}function f8(T,N){return T+lb(UO()*(N-T+1))}function WYt(T,N,O,tt){for(var ct=-1,St=Ms(eG((N-T)/(O||1)),0),Jt=me(St);St--;)Jt[tt?St:++ct]=T,T+=O;return Jt}function F8(T,N){var O="";if(!T||N<1||N>_)return O;do N%2&&(O+=T),N=lb(N/2),N&&(T+=T);while(N);return O}function Fo(T,N){return X8(ict(T,N,Rm),T+"")}function fYt(T){return cdt(Dg(T))}function FYt(T,N){var O=Dg(T);return XO(O,aG(N,0,O.length))}function HN(T,N,O,tt){if(!qs(T))return T;N=nf(N,T);for(var ct=-1,St=N.length,Jt=St-1,Ht=T;Ht!=null&&++ctct?0:ct+N),O=O>ct?ct:O,O<0&&(O+=ct),ct=N>O?0:O-N>>>0,N>>>=0;for(var St=me(ct);++tt>>1,Jt=T[St];Jt!==null&&!mh(Jt)&&(O?Jt<=N:Jt=n){var ye=N?null:kYt(T);if(ye)return qU(ye);Jt=!1,ct=jU,$t=new Oo}else $t=N?[]:Ht;t:for(;++tt=tt?T:Fp(T,N,O)}var Qdt=t8||function(T){return ps.clearTimeout(T)};function kdt(T,N){if(N)return T.slice();var O=T.length,tt=fO?fO(O):new T.constructor(O);return T.copy(tt),tt}function g8(T){var N=new T.constructor(T.byteLength);return new Ng(N).set(new Ng(T)),N}function TYt(T,N){var O=N?g8(T.buffer):T.buffer;return new T.constructor(O,T.byteOffset,T.byteLength)}function gYt(T){var N=new T.constructor(T.source,mr.exec(T));return N.lastIndex=T.lastIndex,N}function EYt(T){return Yg?Oa(Yg.call(T)):{}}function Ydt(T,N){var O=N?g8(T.buffer):T.buffer;return new T.constructor(O,T.byteOffset,T.length)}function xdt(T,N){if(T!==N){var O=T!==t,tt=T===null,ct=T===T,St=mh(T),Jt=N!==t,Ht=N===null,$t=N===N,ye=mh(N);if(!Ht&&!ye&&!St&&T>N||St&&Jt&&$t&&!Ht&&!ye||tt&&Jt&&$t||!O&&$t||!ct)return 1;if(!tt&&!St&&!ye&&T=Ht)return $t;var ye=O[tt];return $t*(ye=="desc"?-1:1)}}return T.index-N.index}function Xdt(T,N,O,tt){for(var ct=-1,St=T.length,Jt=O.length,Ht=-1,$t=N.length,ye=Ms(St-Jt,0),Be=me($t+ye),Oe=!tt;++Ht<$t;)Be[Ht]=N[Ht];for(;++ct1?O[ct-1]:t,Jt=ct>2?O[2]:t;for(St=T.length>3&&typeof St=="function"?(ct--,St):t,Jt&&Uc(O[0],O[1],Jt)&&(St=ct<3?t:St,ct=1),N=Oa(N);++tt-1?ct[St?N[Jt]:Jt]:t}}function Odt(T){return mb(function(N){var O=N.length,tt=O,ct=pm.prototype.thru;for(T&&N.reverse();tt--;){var St=N[tt];if(typeof St!="function")throw new hm(o);if(ct&&!Jt&&YO(St)=="wrapper")var Jt=new pm([],!0)}for(tt=Jt?tt:O;++tt1&&Ko.reverse(),Be&&$tHt))return!1;var ye=St.get(T),Be=St.get(N);if(ye&&Be)return ye==N&&Be==T;var Oe=-1,Bn=!0,li=O&R?new Oo:t;for(St.set(T,N),St.set(N,T);++Oe1?"& ":"")+N[tt],N=N.join(O>2?", ":" "),T.replace(yl,`{ /* [wrapped with `+N+`] */ -`)}function HYt(S){return ji(S)||dG(S)||!!(xN&&S&&S[xN])}function hR(S,N){var O=typeof S;return N=N??_,!!N&&(O=="number"||O!="symbol"&&Ed.test(S))&&S>-1&&S%1==0&&S0){if(++N>=M)return arguments[0]}else N=0;return S.apply(t,arguments)}}function XO(S,N){var O=-1,tt=S.length,ct=tt-1;for(N=N===t?tt:N;++O1?S[N-1]:t;return O=typeof O=="function"?(S.pop(),O):t,Zct(S,O)});function Vct(S){var N=bt(S);return N.__chain__=!0,N}function nXt(S,N){return N(S),S}function JO(S,N){return N(S)}var iXt=mR(function(S){var N=S.length,O=N?S[0]:0,tt=this.__wrapped__,ct=function(Tt){return m8(Tt,S)};return N>1||this.__actions__.length||!(tt instanceof To)||!hR(O)?this.thru(ct):(tt=tt.slice(O,+O+(N?1:0)),tt.__actions__.push({func:JO,args:[ct],thisArg:t}),new pm(tt,this.__chain__).thru(function(Tt){return N&&!Tt.length&&Tt.push(t),Tt}))});function oXt(){return Vct(this)}function aXt(){return new pm(this.value(),this.__chain__)}function sXt(){this.__values__===t&&(this.__values__=Ict(this.value()));var S=this.__index__>=this.__values__.length,N=S?t:this.__values__[this.__index__++];return{done:S,value:N}}function lXt(){return this}function rXt(S){for(var N,O=this;O instanceof xg;){var tt=dct(O);tt.__index__=0,tt.__values__=t,N?ct.__wrapped__=tt:N=tt;var ct=tt;O=O.__wrapped__}return ct.__wrapped__=S,N}function dXt(){var S=this.__wrapped__;if(S instanceof To){var N=S;return this.__actions__.length&&(N=new To(this)),N=N.reverse(),N.__actions__.push({func:JO,args:[J8],thisArg:t}),new pm(N,this.__chain__)}return this.thru(J8)}function cXt(){return ydt(this.__wrapped__,this.__actions__)}var mXt=NO(function(S,N,O){ga.call(S,O)?++S[O]:dR(S,O,1)});function hXt(S,N,O){var tt=ji(S)?cO:nYt;return O&&Uc(S,N,O)&&(N=t),tt(S,Ei(N,3))}function pXt(S,N){var O=ji(S)?UV:Zdt;return O(S,Ei(N,3))}var uXt=Ddt(cct),ZXt=Ddt(mct);function VXt(S,N){return rd(LO(S,N),1)}function bXt(S,N){return rd(LO(S,N),X)}function RXt(S,N,O){return O=O===t?1:po(O),rd(LO(S,N),O)}function bct(S,N){var O=ji(S)?cm:tf;return O(S,Ei(N,3))}function Rct(S,N){var O=ji(S)?B4:udt;return O(S,Ei(N,3))}var WXt=NO(function(S,N,O){ga.call(S,O)?S[O].push(N):dR(S,O,[N])});function fXt(S,N,O,tt){S=Zm(S)?S:Dg(S),O=O&&!tt?po(O):0;var ct=S.length;return O<0&&(O=Ms(ct+O,0)),HO(S)?O<=ct&&S.indexOf(N,O)>-1:!!ct&&HW(S,N,O)>-1}var FXt=Fo(function(S,N,O){var tt=-1,ct=typeof N=="function",Tt=Zm(S)?me(S.length):[];return tf(S,function(Jt){Tt[++tt]=ct?Wc(N,Jt,O):DN(Jt,N,O)}),Tt}),UXt=NO(function(S,N,O){dR(S,O,N)});function LO(S,N){var O=ji(S)?Ta:Fdt;return O(S,Ei(N,3))}function GXt(S,N,O,tt){return S==null?[]:(ji(N)||(N=N==null?[]:[N]),O=tt?t:O,ji(O)||(O=O==null?[]:[O]),Tdt(S,N,O))}var AXt=NO(function(S,N,O){S[O?0:1].push(N)},function(){return[[],[]]});function TXt(S,N,O){var tt=ji(S)?GV:ZO,ct=arguments.length<3;return tt(S,Ei(N,4),O,ct,tf)}function SXt(S,N,O){var tt=ji(S)?OW:ZO,ct=arguments.length<3;return tt(S,Ei(N,4),O,ct,udt)}function gXt(S,N){var O=ji(S)?UV:Zdt;return O(S,DO(Ei(N,3)))}function EXt(S){var N=ji(S)?cdt:fYt;return N(S)}function CXt(S,N,O){(O?Uc(S,N,O):N===t)?N=1:N=po(N);var tt=ji(S)?jkt:FYt;return tt(S,N)}function IXt(S){var N=ji(S)?qkt:GYt;return N(S)}function NXt(S){if(S==null)return 0;if(Zm(S))return HO(S)?vW(S):S.length;var N=yd(S);return N==Mt||N==zt?S.size:b8(S).length}function yXt(S,N,O){var tt=ji(S)?gN:AYt;return O&&Uc(S,N,O)&&(N=t),tt(S,Ei(N,3))}var BXt=Fo(function(S,N){if(S==null)return[];var O=N.length;return O>1&&Uc(S,N[0],N[1])?N=[]:O>2&&Uc(N[0],N[1],N[2])&&(N=[N[0]]),Tdt(S,rd(N,1),[])}),MO=FO||function(){return ps.Date.now()};function QXt(S,N){if(typeof N!="function")throw new hm(o);return S=po(S),function(){if(--S<1)return N.apply(this,arguments)}}function Wct(S,N,O){return N=O?t:N,N=S&&N==null?S.length:N,cR(S,C,t,t,t,t,N)}function fct(S,N){var O;if(typeof N!="function")throw new hm(o);return S=po(S),function(){return--S>0&&(O=N.apply(this,arguments)),S<=1&&(N=t),O}}var M8=Fo(function(S,N,O){var tt=u;if(O.length){var ct=AV(O,Mg(M8));tt|=T}return cR(S,tt,N,O,ct)}),Fct=Fo(function(S,N,O){var tt=u|F;if(O.length){var ct=AV(O,Mg(Fct));tt|=T}return cR(N,tt,S,O,ct)});function Uct(S,N,O){N=O?t:N;var tt=cR(S,G,t,t,t,t,t,N);return tt.placeholder=Uct.placeholder,tt}function Gct(S,N,O){N=O?t:N;var tt=cR(S,A,t,t,t,t,t,N);return tt.placeholder=Gct.placeholder,tt}function Act(S,N,O){var tt,ct,Tt,Jt,Ht,$t,ye=0,Be=!1,Oe=!1,Bn=!0;if(typeof S!="function")throw new hm(o);N=Gp(N)||0,qs(O)&&(Be=!!O.leading,Oe="maxWait"in O,Tt=Oe?Ms(Gp(O.maxWait)||0,N):Tt,Bn="trailing"in O?!!O.trailing:Bn);function li(Yl){var wu=tt,ZR=ct;return tt=ct=t,ye=Yl,Jt=S.apply(ZR,wu),Jt}function Qi(Yl){return ye=Yl,Ht=vN(No,N),Be?li(Yl):Jt}function Zo(Yl){var wu=Yl-$t,ZR=Yl-ye,Dct=N-wu;return Oe?us(Dct,Tt-ZR):Dct}function ki(Yl){var wu=Yl-$t,ZR=Yl-ye;return $t===t||wu>=N||wu<0||Oe&&ZR>=Tt}function No(){var Yl=MO();if(ki(Yl))return Ko(Yl);Ht=vN(No,Zo(Yl))}function Ko(Yl){return Ht=t,Bn&&tt?li(Yl):(tt=ct=t,Jt)}function hh(){Ht!==t&&Qdt(Ht),ye=0,tt=$t=ct=Ht=t}function Gc(){return Ht===t?Jt:Ko(MO())}function ph(){var Yl=MO(),wu=ki(Yl);if(tt=arguments,ct=this,$t=Yl,wu){if(Ht===t)return Qi($t);if(Oe)return Qdt(Ht),Ht=vN(No,N),li($t)}return Ht===t&&(Ht=vN(No,N)),Jt}return ph.cancel=hh,ph.flush=Gc,ph}var kXt=Fo(function(S,N){return pdt(S,1,N)}),YXt=Fo(function(S,N,O){return pdt(S,Gp(N)||0,O)});function xXt(S){return cR(S,Y)}function _O(S,N){if(typeof S!="function"||N!=null&&typeof N!="function")throw new hm(o);var O=function(){var tt=arguments,ct=N?N.apply(this,tt):tt[0],Tt=O.cache;if(Tt.has(ct))return Tt.get(ct);var Jt=S.apply(this,tt);return O.cache=Tt.set(ct,Jt)||Tt,Jt};return O.cache=new(_O.Cache||Vn),O}_O.Cache=Vn;function DO(S){if(typeof S!="function")throw new hm(o);return function(){var N=arguments;switch(N.length){case 0:return!S.call(this);case 1:return!S.call(this,N[0]);case 2:return!S.call(this,N[0],N[1]);case 3:return!S.call(this,N[0],N[1],N[2])}return!S.apply(this,N)}}function XXt(S){return fct(2,S)}var JXt=TYt(function(S,N){N=N.length==1&&ji(N[0])?Ta(N[0],fc(Ei())):Ta(rd(N,1),fc(Ei()));var O=N.length;return Fo(function(tt){for(var ct=-1,Tt=us(tt.length,O);++ct=N}),dG=Rdt(function(){return arguments}())?Rdt:function(S){return Wl(S)&&ga.call(S,"callee")&&!YN.call(S,"callee")},ji=me.isArray,tJt=Ug?fc(Ug):rYt;function Zm(S){return S!=null&&OO(S.length)&&!pR(S)}function kl(S){return Wl(S)&&Zm(S)}function eJt(S){return S===!0||S===!1||Wl(S)&&Fc(S)==st}var af=n8||$8,nJt=lO?fc(lO):dYt;function iJt(S){return Wl(S)&&S.nodeType===1&&!KN(S)}function oJt(S){if(S==null)return!0;if(Zm(S)&&(ji(S)||typeof S=="string"||typeof S.splice=="function"||af(S)||_g(S)||dG(S)))return!S.length;var N=yd(S);if(N==Mt||N==zt)return!S.size;if(PN(S))return!b8(S).length;for(var O in S)if(ga.call(S,O))return!1;return!0}function aJt(S,N){return ON(S,N)}function sJt(S,N,O){O=typeof O=="function"?O:t;var tt=O?O(S,N):t;return tt===t?ON(S,N,t,O):!!tt}function D8(S){if(!Wl(S))return!1;var N=Fc(S);return N==Wt||N==Qt||typeof S.message=="string"&&typeof S.name=="string"&&!KN(S)}function lJt(S){return typeof S=="number"&&XN(S)}function pR(S){if(!qs(S))return!1;var N=Fc(S);return N==Nt||N==kt||N==at||N==rn}function Sct(S){return typeof S=="number"&&S==po(S)}function OO(S){return typeof S=="number"&&S>-1&&S%1==0&&S<=_}function qs(S){var N=typeof S;return S!=null&&(N=="object"||N=="function")}function Wl(S){return S!=null&&typeof S=="object"}var gct=rO?fc(rO):mYt;function rJt(S,N){return S===N||V8(S,N,B8(N))}function dJt(S,N,O){return O=typeof O=="function"?O:t,V8(S,N,B8(N),O)}function cJt(S){return Ect(S)&&S!=+S}function mJt(S){if(vYt(S))throw new Ai(i);return Wdt(S)}function hJt(S){return S===null}function pJt(S){return S==null}function Ect(S){return typeof S=="number"||Wl(S)&&Fc(S)==qt}function KN(S){if(!Wl(S)||Fc(S)!=oe)return!1;var N=yg(S);if(N===null)return!0;var O=ga.call(N,"constructor")&&N.constructor;return typeof O=="function"&&O instanceof O&&Eg.call(O)==j4}var O8=dh?fc(dh):hYt;function uJt(S){return Sct(S)&&S>=-_&&S<=_}var Cct=dO?fc(dO):pYt;function HO(S){return typeof S=="string"||!ji(S)&&Wl(S)&&Fc(S)==ke}function mh(S){return typeof S=="symbol"||Wl(S)&&Fc(S)==ue}var _g=aR?fc(aR):uYt;function ZJt(S){return S===t}function VJt(S){return Wl(S)&&yd(S)==un}function bJt(S){return Wl(S)&&Fc(S)==Ct}var RJt=kO(R8),WJt=kO(function(S,N){return S<=N});function Ict(S){if(!S)return[];if(Zm(S))return HO(S)?mm(S):um(S);if(tG&&S[tG])return D4(S[tG]());var N=yd(S),O=N==Mt?yN:N==zt?qU:Dg;return O(S)}function uR(S){if(!S)return S===0?S:0;if(S=Gp(S),S===X||S===-X){var N=S<0?-1:1;return N*P}return S===S?S:0}function po(S){var N=uR(S),O=N%1;return N===N?O?N-O:N:0}function Nct(S){return S?aG(po(S),0,z):0}function Gp(S){if(typeof S=="number")return S;if(mh(S))return w;if(qs(S)){var N=typeof S.valueOf=="function"?S.valueOf():S;S=qs(N)?N+"":N}if(typeof S!="string")return S===0?S:+S;S=VO(S);var O=pr.test(S);return O||ma.test(S)?Pl(S.slice(2),O?2:8):hr.test(S)?w:+S}function yct(S){return EV(S,Vm(S))}function fJt(S){return S?aG(po(S),-_,_):S===0?S:0}function xa(S){return S==null?"":ch(S)}var FJt=Jg(function(S,N){if(PN(N)||Zm(N)){EV(N,xr(N),S);return}for(var O in N)ga.call(N,O)&&MN(S,O,N[O])}),Bct=Jg(function(S,N){EV(N,Vm(N),S)}),wO=Jg(function(S,N,O,tt){EV(N,Vm(N),S,tt)}),UJt=Jg(function(S,N,O,tt){EV(N,xr(N),S,tt)}),GJt=mR(m8);function AJt(S,N){var O=oG(S);return N==null?O:mdt(O,N)}var TJt=Fo(function(S,N){S=Oa(S);var O=-1,tt=N.length,ct=tt>2?N[2]:t;for(ct&&Uc(N[0],N[1],ct)&&(tt=1);++O1),Tt}),EV(S,N8(S),O),tt&&(O=fp(O,d|m|h,YYt));for(var ct=N.length;ct--;)G8(O,N[ct]);return O});function DJt(S,N){return kct(S,DO(Ei(N)))}var OJt=mR(function(S,N){return S==null?{}:bYt(S,N)});function kct(S,N){if(S==null)return{};var O=Ta(N8(S),function(tt){return[tt]});return N=Ei(N),Sdt(S,O,function(tt,ct){return N(tt,ct[0])})}function HJt(S,N,O){N=nf(N,S);var tt=-1,ct=N.length;for(ct||(ct=1,S=t);++ttN){var tt=S;S=N,N=tt}if(O||S%1||N%1){var ct=UO();return us(S+ct*(N-S+Rl("1e-"+((ct+"").length-1))),N)}return f8(S,N)}var nLt=Lg(function(S,N,O){return N=N.toLowerCase(),S+(O?Xct(N):N)});function Xct(S){return P8(xa(S).toLowerCase())}function Jct(S){return S=xa(S),S&&S.replace(BW,L4).replace(Rg,"")}function iLt(S,N,O){S=xa(S),N=ch(N);var tt=S.length;O=O===t?tt:aG(po(O),0,tt);var ct=O;return O-=N.length,O>=0&&S.slice(O,ct)==N}function oLt(S){return S=xa(S),S&&_a.test(S)?S.replace(si,M4):S}function aLt(S){return S=xa(S),S&&ka.test(S)?S.replace(wl,"\\$&"):S}var sLt=Lg(function(S,N,O){return S+(O?"-":"")+N.toLowerCase()}),lLt=Lg(function(S,N,O){return S+(O?" ":"")+N.toLowerCase()}),rLt=_dt("toLowerCase");function dLt(S,N,O){S=xa(S),N=po(N);var tt=N?vW(S):0;if(!N||tt>=N)return S;var ct=(N-tt)/2;return QO(lR(ct),O)+S+QO(eG(ct),O)}function cLt(S,N,O){S=xa(S),N=po(N);var tt=N?vW(S):0;return N&&tt>>0,O?(S=xa(S),S&&(typeof N=="string"||N!=null&&!O8(N))&&(N=ch(N),!N&&PW(S))?of(mm(S),0,O):S.split(N,O)):[]}var bLt=Lg(function(S,N,O){return S+(O?" ":"")+P8(N)});function RLt(S,N,O){return S=xa(S),O=O==null?0:aG(po(O),0,S.length),N=ch(N),S.slice(O,O+N.length)==N}function WLt(S,N,O){var tt=bt.templateSettings;O&&Uc(S,N,O)&&(N=t),S=xa(S),N=wO({},N,tt,Kdt);var ct=wO({},N.imports,tt.imports,Kdt),Tt=xr(ct),Jt=Ag(ct,Tt),Ht,$t,ye=0,Be=N.interpolate||Rc,Oe="__p += '",Bn=BN((N.escape||Rc).source+"|"+Be.source+"|"+(Be===Go?$n:Rc).source+"|"+(N.evaluate||Rc).source+"|$","g"),li="//# sourceURL="+(ga.call(N,"sourceURL")?(N.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++dm+"]")+` -`;S.replace(Bn,function(ki,No,Ko,hh,Gc,ph){return Ko||(Ko=hh),Oe+=S.slice(ye,ph).replace($b,RO),No&&(Ht=!0,Oe+=`' + +`)}function HYt(T){return ji(T)||dG(T)||!!(xN&&T&&T[xN])}function hb(T,N){var O=typeof T;return N=N??_,!!N&&(O=="number"||O!="symbol"&&Ed.test(T))&&T>-1&&T%1==0&&T0){if(++N>=M)return arguments[0]}else N=0;return T.apply(t,arguments)}}function XO(T,N){var O=-1,tt=T.length,ct=tt-1;for(N=N===t?tt:N;++O1?T[N-1]:t;return O=typeof O=="function"?(T.pop(),O):t,uct(T,O)});function Zct(T){var N=Rt(T);return N.__chain__=!0,N}function nXt(T,N){return N(T),T}function JO(T,N){return N(T)}var iXt=mb(function(T){var N=T.length,O=N?T[0]:0,tt=this.__wrapped__,ct=function(St){return m8(St,T)};return N>1||this.__actions__.length||!(tt instanceof So)||!hb(O)?this.thru(ct):(tt=tt.slice(O,+O+(N?1:0)),tt.__actions__.push({func:JO,args:[ct],thisArg:t}),new pm(tt,this.__chain__).thru(function(St){return N&&!St.length&&St.push(t),St}))});function oXt(){return Zct(this)}function aXt(){return new pm(this.value(),this.__chain__)}function sXt(){this.__values__===t&&(this.__values__=Ict(this.value()));var T=this.__index__>=this.__values__.length,N=T?t:this.__values__[this.__index__++];return{done:T,value:N}}function lXt(){return this}function rXt(T){for(var N,O=this;O instanceof xg;){var tt=dct(O);tt.__index__=0,tt.__values__=t,N?ct.__wrapped__=tt:N=tt;var ct=tt;O=O.__wrapped__}return ct.__wrapped__=T,N}function dXt(){var T=this.__wrapped__;if(T instanceof So){var N=T;return this.__actions__.length&&(N=new So(this)),N=N.reverse(),N.__actions__.push({func:JO,args:[J8],thisArg:t}),new pm(N,this.__chain__)}return this.thru(J8)}function cXt(){return ydt(this.__wrapped__,this.__actions__)}var mXt=NO(function(T,N,O){ga.call(T,O)?++T[O]:db(T,O,1)});function hXt(T,N,O){var tt=ji(T)?cO:nYt;return O&&Uc(T,N,O)&&(N=t),tt(T,Ei(N,3))}function pXt(T,N){var O=ji(T)?UZ:udt;return O(T,Ei(N,3))}var VXt=Ddt(cct),uXt=Ddt(mct);function ZXt(T,N){return rd(LO(T,N),1)}function RXt(T,N){return rd(LO(T,N),X)}function bXt(T,N,O){return O=O===t?1:po(O),rd(LO(T,N),O)}function Rct(T,N){var O=ji(T)?cm:tf;return O(T,Ei(N,3))}function bct(T,N){var O=ji(T)?B4:Vdt;return O(T,Ei(N,3))}var WXt=NO(function(T,N,O){ga.call(T,O)?T[O].push(N):db(T,O,[N])});function fXt(T,N,O,tt){T=um(T)?T:Dg(T),O=O&&!tt?po(O):0;var ct=T.length;return O<0&&(O=Ms(ct+O,0)),HO(T)?O<=ct&&T.indexOf(N,O)>-1:!!ct&&HW(T,N,O)>-1}var FXt=Fo(function(T,N,O){var tt=-1,ct=typeof N=="function",St=um(T)?me(T.length):[];return tf(T,function(Jt){St[++tt]=ct?Wc(N,Jt,O):DN(Jt,N,O)}),St}),UXt=NO(function(T,N,O){db(T,O,N)});function LO(T,N){var O=ji(T)?Sa:Fdt;return O(T,Ei(N,3))}function GXt(T,N,O,tt){return T==null?[]:(ji(N)||(N=N==null?[]:[N]),O=tt?t:O,ji(O)||(O=O==null?[]:[O]),Sdt(T,N,O))}var AXt=NO(function(T,N,O){T[O?0:1].push(N)},function(){return[[],[]]});function SXt(T,N,O){var tt=ji(T)?GZ:uO,ct=arguments.length<3;return tt(T,Ei(N,4),O,ct,tf)}function TXt(T,N,O){var tt=ji(T)?OW:uO,ct=arguments.length<3;return tt(T,Ei(N,4),O,ct,Vdt)}function gXt(T,N){var O=ji(T)?UZ:udt;return O(T,DO(Ei(N,3)))}function EXt(T){var N=ji(T)?cdt:fYt;return N(T)}function CXt(T,N,O){(O?Uc(T,N,O):N===t)?N=1:N=po(N);var tt=ji(T)?j2t:FYt;return tt(T,N)}function IXt(T){var N=ji(T)?q2t:GYt;return N(T)}function NXt(T){if(T==null)return 0;if(um(T))return HO(T)?vW(T):T.length;var N=yd(T);return N==Mt||N==zt?T.size:R8(T).length}function yXt(T,N,O){var tt=ji(T)?gN:AYt;return O&&Uc(T,N,O)&&(N=t),tt(T,Ei(N,3))}var BXt=Fo(function(T,N){if(T==null)return[];var O=N.length;return O>1&&Uc(T,N[0],N[1])?N=[]:O>2&&Uc(N[0],N[1],N[2])&&(N=[N[0]]),Sdt(T,rd(N,1),[])}),MO=FO||function(){return ps.Date.now()};function QXt(T,N){if(typeof N!="function")throw new hm(o);return T=po(T),function(){if(--T<1)return N.apply(this,arguments)}}function Wct(T,N,O){return N=O?t:N,N=T&&N==null?T.length:N,cb(T,C,t,t,t,t,N)}function fct(T,N){var O;if(typeof N!="function")throw new hm(o);return T=po(T),function(){return--T>0&&(O=N.apply(this,arguments)),T<=1&&(N=t),O}}var M8=Fo(function(T,N,O){var tt=V;if(O.length){var ct=AZ(O,Mg(M8));tt|=S}return cb(T,tt,N,O,ct)}),Fct=Fo(function(T,N,O){var tt=V|F;if(O.length){var ct=AZ(O,Mg(Fct));tt|=S}return cb(N,tt,T,O,ct)});function Uct(T,N,O){N=O?t:N;var tt=cb(T,G,t,t,t,t,t,N);return tt.placeholder=Uct.placeholder,tt}function Gct(T,N,O){N=O?t:N;var tt=cb(T,A,t,t,t,t,t,N);return tt.placeholder=Gct.placeholder,tt}function Act(T,N,O){var tt,ct,St,Jt,Ht,$t,ye=0,Be=!1,Oe=!1,Bn=!0;if(typeof T!="function")throw new hm(o);N=Gp(N)||0,qs(O)&&(Be=!!O.leading,Oe="maxWait"in O,St=Oe?Ms(Gp(O.maxWait)||0,N):St,Bn="trailing"in O?!!O.trailing:Bn);function li(Yl){var wV=tt,ub=ct;return tt=ct=t,ye=Yl,Jt=T.apply(ub,wV),Jt}function Qi(Yl){return ye=Yl,Ht=vN(No,N),Be?li(Yl):Jt}function uo(Yl){var wV=Yl-$t,ub=Yl-ye,Dct=N-wV;return Oe?Vs(Dct,St-ub):Dct}function ki(Yl){var wV=Yl-$t,ub=Yl-ye;return $t===t||wV>=N||wV<0||Oe&&ub>=St}function No(){var Yl=MO();if(ki(Yl))return Ko(Yl);Ht=vN(No,uo(Yl))}function Ko(Yl){return Ht=t,Bn&&tt?li(Yl):(tt=ct=t,Jt)}function hh(){Ht!==t&&Qdt(Ht),ye=0,tt=$t=ct=Ht=t}function Gc(){return Ht===t?Jt:Ko(MO())}function ph(){var Yl=MO(),wV=ki(Yl);if(tt=arguments,ct=this,$t=Yl,wV){if(Ht===t)return Qi($t);if(Oe)return Qdt(Ht),Ht=vN(No,N),li($t)}return Ht===t&&(Ht=vN(No,N)),Jt}return ph.cancel=hh,ph.flush=Gc,ph}var kXt=Fo(function(T,N){return pdt(T,1,N)}),YXt=Fo(function(T,N,O){return pdt(T,Gp(N)||0,O)});function xXt(T){return cb(T,Y)}function _O(T,N){if(typeof T!="function"||N!=null&&typeof N!="function")throw new hm(o);var O=function(){var tt=arguments,ct=N?N.apply(this,tt):tt[0],St=O.cache;if(St.has(ct))return St.get(ct);var Jt=T.apply(this,tt);return O.cache=St.set(ct,Jt)||St,Jt};return O.cache=new(_O.Cache||Zn),O}_O.Cache=Zn;function DO(T){if(typeof T!="function")throw new hm(o);return function(){var N=arguments;switch(N.length){case 0:return!T.call(this);case 1:return!T.call(this,N[0]);case 2:return!T.call(this,N[0],N[1]);case 3:return!T.call(this,N[0],N[1],N[2])}return!T.apply(this,N)}}function XXt(T){return fct(2,T)}var JXt=SYt(function(T,N){N=N.length==1&&ji(N[0])?Sa(N[0],fc(Ei())):Sa(rd(N,1),fc(Ei()));var O=N.length;return Fo(function(tt){for(var ct=-1,St=Vs(tt.length,O);++ct=N}),dG=bdt(function(){return arguments}())?bdt:function(T){return Wl(T)&&ga.call(T,"callee")&&!YN.call(T,"callee")},ji=me.isArray,tJt=Ug?fc(Ug):rYt;function um(T){return T!=null&&OO(T.length)&&!pb(T)}function kl(T){return Wl(T)&&um(T)}function eJt(T){return T===!0||T===!1||Wl(T)&&Fc(T)==st}var af=n8||$8,nJt=lO?fc(lO):dYt;function iJt(T){return Wl(T)&&T.nodeType===1&&!KN(T)}function oJt(T){if(T==null)return!0;if(um(T)&&(ji(T)||typeof T=="string"||typeof T.splice=="function"||af(T)||_g(T)||dG(T)))return!T.length;var N=yd(T);if(N==Mt||N==zt)return!T.size;if(PN(T))return!R8(T).length;for(var O in T)if(ga.call(T,O))return!1;return!0}function aJt(T,N){return ON(T,N)}function sJt(T,N,O){O=typeof O=="function"?O:t;var tt=O?O(T,N):t;return tt===t?ON(T,N,t,O):!!tt}function D8(T){if(!Wl(T))return!1;var N=Fc(T);return N==Wt||N==Qt||typeof T.message=="string"&&typeof T.name=="string"&&!KN(T)}function lJt(T){return typeof T=="number"&&XN(T)}function pb(T){if(!qs(T))return!1;var N=Fc(T);return N==Nt||N==kt||N==at||N==rn}function Tct(T){return typeof T=="number"&&T==po(T)}function OO(T){return typeof T=="number"&&T>-1&&T%1==0&&T<=_}function qs(T){var N=typeof T;return T!=null&&(N=="object"||N=="function")}function Wl(T){return T!=null&&typeof T=="object"}var gct=rO?fc(rO):mYt;function rJt(T,N){return T===N||Z8(T,N,B8(N))}function dJt(T,N,O){return O=typeof O=="function"?O:t,Z8(T,N,B8(N),O)}function cJt(T){return Ect(T)&&T!=+T}function mJt(T){if(vYt(T))throw new Ai(i);return Wdt(T)}function hJt(T){return T===null}function pJt(T){return T==null}function Ect(T){return typeof T=="number"||Wl(T)&&Fc(T)==qt}function KN(T){if(!Wl(T)||Fc(T)!=oe)return!1;var N=yg(T);if(N===null)return!0;var O=ga.call(N,"constructor")&&N.constructor;return typeof O=="function"&&O instanceof O&&Eg.call(O)==j4}var O8=dh?fc(dh):hYt;function VJt(T){return Tct(T)&&T>=-_&&T<=_}var Cct=dO?fc(dO):pYt;function HO(T){return typeof T=="string"||!ji(T)&&Wl(T)&&Fc(T)==ke}function mh(T){return typeof T=="symbol"||Wl(T)&&Fc(T)==Ve}var _g=ab?fc(ab):VYt;function uJt(T){return T===t}function ZJt(T){return Wl(T)&&yd(T)==Vn}function RJt(T){return Wl(T)&&Fc(T)==Ct}var bJt=kO(b8),WJt=kO(function(T,N){return T<=N});function Ict(T){if(!T)return[];if(um(T))return HO(T)?mm(T):Vm(T);if(tG&&T[tG])return D4(T[tG]());var N=yd(T),O=N==Mt?yN:N==zt?qU:Dg;return O(T)}function Vb(T){if(!T)return T===0?T:0;if(T=Gp(T),T===X||T===-X){var N=T<0?-1:1;return N*P}return T===T?T:0}function po(T){var N=Vb(T),O=N%1;return N===N?O?N-O:N:0}function Nct(T){return T?aG(po(T),0,z):0}function Gp(T){if(typeof T=="number")return T;if(mh(T))return w;if(qs(T)){var N=typeof T.valueOf=="function"?T.valueOf():T;T=qs(N)?N+"":N}if(typeof T!="string")return T===0?T:+T;T=ZO(T);var O=pr.test(T);return O||ma.test(T)?Pl(T.slice(2),O?2:8):hr.test(T)?w:+T}function yct(T){return EZ(T,Zm(T))}function fJt(T){return T?aG(po(T),-_,_):T===0?T:0}function xa(T){return T==null?"":ch(T)}var FJt=Jg(function(T,N){if(PN(N)||um(N)){EZ(N,xr(N),T);return}for(var O in N)ga.call(N,O)&&MN(T,O,N[O])}),Bct=Jg(function(T,N){EZ(N,Zm(N),T)}),wO=Jg(function(T,N,O,tt){EZ(N,Zm(N),T,tt)}),UJt=Jg(function(T,N,O,tt){EZ(N,xr(N),T,tt)}),GJt=mb(m8);function AJt(T,N){var O=oG(T);return N==null?O:mdt(O,N)}var SJt=Fo(function(T,N){T=Oa(T);var O=-1,tt=N.length,ct=tt>2?N[2]:t;for(ct&&Uc(N[0],N[1],ct)&&(tt=1);++O1),St}),EZ(T,N8(T),O),tt&&(O=fp(O,d|m|h,YYt));for(var ct=N.length;ct--;)G8(O,N[ct]);return O});function DJt(T,N){return kct(T,DO(Ei(N)))}var OJt=mb(function(T,N){return T==null?{}:RYt(T,N)});function kct(T,N){if(T==null)return{};var O=Sa(N8(T),function(tt){return[tt]});return N=Ei(N),Tdt(T,O,function(tt,ct){return N(tt,ct[0])})}function HJt(T,N,O){N=nf(N,T);var tt=-1,ct=N.length;for(ct||(ct=1,T=t);++ttN){var tt=T;T=N,N=tt}if(O||T%1||N%1){var ct=UO();return Vs(T+ct*(N-T+bl("1e-"+((ct+"").length-1))),N)}return f8(T,N)}var nLt=Lg(function(T,N,O){return N=N.toLowerCase(),T+(O?Xct(N):N)});function Xct(T){return P8(xa(T).toLowerCase())}function Jct(T){return T=xa(T),T&&T.replace(BW,L4).replace(bg,"")}function iLt(T,N,O){T=xa(T),N=ch(N);var tt=T.length;O=O===t?tt:aG(po(O),0,tt);var ct=O;return O-=N.length,O>=0&&T.slice(O,ct)==N}function oLt(T){return T=xa(T),T&&_a.test(T)?T.replace(si,M4):T}function aLt(T){return T=xa(T),T&&ka.test(T)?T.replace(wl,"\\$&"):T}var sLt=Lg(function(T,N,O){return T+(O?"-":"")+N.toLowerCase()}),lLt=Lg(function(T,N,O){return T+(O?" ":"")+N.toLowerCase()}),rLt=_dt("toLowerCase");function dLt(T,N,O){T=xa(T),N=po(N);var tt=N?vW(T):0;if(!N||tt>=N)return T;var ct=(N-tt)/2;return QO(lb(ct),O)+T+QO(eG(ct),O)}function cLt(T,N,O){T=xa(T),N=po(N);var tt=N?vW(T):0;return N&&tt>>0,O?(T=xa(T),T&&(typeof N=="string"||N!=null&&!O8(N))&&(N=ch(N),!N&&PW(T))?of(mm(T),0,O):T.split(N,O)):[]}var RLt=Lg(function(T,N,O){return T+(O?" ":"")+P8(N)});function bLt(T,N,O){return T=xa(T),O=O==null?0:aG(po(O),0,T.length),N=ch(N),T.slice(O,O+N.length)==N}function WLt(T,N,O){var tt=Rt.templateSettings;O&&Uc(T,N,O)&&(N=t),T=xa(T),N=wO({},N,tt,Kdt);var ct=wO({},N.imports,tt.imports,Kdt),St=xr(ct),Jt=Ag(ct,St),Ht,$t,ye=0,Be=N.interpolate||bc,Oe="__p += '",Bn=BN((N.escape||bc).source+"|"+Be.source+"|"+(Be===Go?$n:bc).source+"|"+(N.evaluate||bc).source+"|$","g"),li="//# sourceURL="+(ga.call(N,"sourceURL")?(N.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++dm+"]")+` +`;T.replace(Bn,function(ki,No,Ko,hh,Gc,ph){return Ko||(Ko=hh),Oe+=T.slice(ye,ph).replace($R,bO),No&&(Ht=!0,Oe+=`' + __e(`+No+`) + '`),Gc&&($t=!0,Oe+=`'; `+Gc+`; @@ -79,33 +79,33 @@ __p += '`),Ko&&(Oe+=`' + `;var Qi=ga.call(N,"variable")&&N.variable;if(!Qi)Oe=`with (obj) { `+Oe+` } -`;else if(js.test(Qi))throw new Ai(a);Oe=($t?Oe.replace(ge,""):Oe).replace(Ze,"$1").replace(Ke,"$1;"),Oe="function("+(Qi||"obj")+`) { +`;else if(js.test(Qi))throw new Ai(a);Oe=($t?Oe.replace(ge,""):Oe).replace(ue,"$1").replace(Ke,"$1;"),Oe="function("+(Qi||"obj")+`) { `+(Qi?"":`obj || (obj = {}); `)+"var __t, __p = ''"+(Ht?", __e = _.escape":"")+($t?`, __j = Array.prototype.join; function print() { __p += __j.call(arguments, '') } `:`; `)+Oe+`return __p -}`;var Zo=Mct(function(){return ia(Tt,li+"return "+Oe).apply(t,Jt)});if(Zo.source=Oe,D8(Zo))throw Zo;return Zo}function fLt(S){return xa(S).toLowerCase()}function FLt(S){return xa(S).toUpperCase()}function ULt(S,N,O){if(S=xa(S),S&&(O||N===t))return VO(S);if(!S||!(N=ch(N)))return S;var tt=mm(S),ct=mm(N),Tt=wW(tt,ct),Jt=bO(tt,ct)+1;return of(tt,Tt,Jt).join("")}function GLt(S,N,O){if(S=xa(S),S&&(O||N===t))return S.slice(0,Sg(S)+1);if(!S||!(N=ch(N)))return S;var tt=mm(S),ct=bO(tt,mm(N))+1;return of(tt,0,ct).join("")}function ALt(S,N,O){if(S=xa(S),S&&(O||N===t))return S.replace(Wa,"");if(!S||!(N=ch(N)))return S;var tt=mm(S),ct=wW(tt,mm(N));return of(tt,ct).join("")}function TLt(S,N){var O=Q,tt=J;if(qs(N)){var ct="separator"in N?N.separator:ct;O="length"in N?po(N.length):O,tt="omission"in N?ch(N.omission):tt}S=xa(S);var Tt=S.length;if(PW(S)){var Jt=mm(S);Tt=Jt.length}if(O>=Tt)return S;var Ht=O-vW(tt);if(Ht<1)return tt;var $t=Jt?of(Jt,0,Ht).join(""):S.slice(0,Ht);if(ct===t)return $t+tt;if(Jt&&(Ht+=$t.length-Ht),O8(ct)){if(S.slice(Ht).search(ct)){var ye,Be=$t;for(ct.global||(ct=BN(ct.source,xa(mr.exec(ct))+"g")),ct.lastIndex=0;ye=ct.exec(Be);)var Oe=ye.index;$t=$t.slice(0,Oe===t?Ht:Oe)}}else if(S.indexOf(ch(ct),Ht)!=Ht){var Bn=$t.lastIndexOf(ct);Bn>-1&&($t=$t.slice(0,Bn))}return $t+tt}function SLt(S){return S=xa(S),S&&da.test(S)?S.replace(An,P4):S}var gLt=Lg(function(S,N,O){return S+(O?" ":"")+N.toUpperCase()}),P8=_dt("toUpperCase");function Lct(S,N,O){return S=xa(S),N=O?t:N,N===t?Tg(S)?Sa(S):k4(S):S.match(N)||[]}var Mct=Fo(function(S,N){try{return Wc(S,t,N)}catch(O){return D8(O)?O:new Ai(O)}}),ELt=mR(function(S,N){return cm(N,function(O){O=CV(O),dR(S,O,M8(S[O],S))}),S});function CLt(S){var N=S==null?0:S.length,O=Ei();return S=N?Ta(S,function(tt){if(typeof tt[1]!="function")throw new hm(o);return[O(tt[0]),tt[1]]}):[],Fo(function(tt){for(var ct=-1;++ct_)return[];var O=z,tt=us(S,z);N=Ei(N),S-=z;for(var ct=NN(tt,N);++O0||N<0)?new To(O):(S<0?O=O.takeRight(-S):S&&(O=O.drop(S)),N!==t&&(N=po(N),O=N<0?O.dropRight(-N):O.take(N-S)),O)},To.prototype.takeRightWhile=function(S){return this.reverse().takeWhile(S).reverse()},To.prototype.toArray=function(){return this.take(z)},gV(To.prototype,function(S,N){var O=/^(?:filter|find|map|reject)|While$/.test(N),tt=/^(?:head|last)$/.test(N),ct=bt[tt?"take"+(N=="last"?"Right":""):N],Tt=tt||/^find/.test(N);ct&&(bt.prototype[N]=function(){var Jt=this.__wrapped__,Ht=tt?[1]:arguments,$t=Jt instanceof To,ye=Ht[0],Be=$t||ji(Jt),Oe=function(No){var Ko=ct.apply(bt,_u([No],Ht));return tt&&Bn?Ko[0]:Ko};Be&&O&&typeof ye=="function"&&ye.length!=1&&($t=Be=!1);var Bn=this.__chain__,li=!!this.__actions__.length,Qi=Tt&&!Bn,Zo=$t&&!li;if(!Tt&&Be){Jt=Zo?Jt:new To(this);var ki=S.apply(Jt,Ht);return ki.__actions__.push({func:JO,args:[Oe],thisArg:t}),new pm(ki,Bn)}return Qi&&Zo?S.apply(this,Ht):(ki=this.thru(Oe),Qi?tt?ki.value()[0]:ki.value():ki)})}),cm(["pop","push","shift","sort","splice","unshift"],function(S){var N=gg[S],O=/^(?:push|sort|unshift)$/.test(S)?"tap":"thru",tt=/^(?:pop|shift)$/.test(S);bt.prototype[S]=function(){var ct=arguments;if(tt&&!this.__chain__){var Tt=this.value();return N.apply(ji(Tt)?Tt:[],ct)}return this[O](function(Jt){return N.apply(ji(Jt)?Jt:[],ct)})}}),gV(To.prototype,function(S,N){var O=bt[N];if(O){var tt=O.name+"";ga.call($W,tt)||($W[tt]=[]),$W[tt].push({name:N,func:O})}}),$W[yO(t,F).name]=[{name:"wrapper",func:t}],To.prototype.clone=r8,To.prototype.reverse=Xg,To.prototype.value=d8,bt.prototype.at=iXt,bt.prototype.chain=oXt,bt.prototype.commit=aXt,bt.prototype.next=sXt,bt.prototype.plant=rXt,bt.prototype.reverse=dXt,bt.prototype.toJSON=bt.prototype.valueOf=bt.prototype.value=cXt,bt.prototype.first=bt.prototype.head,tG&&(bt.prototype[tG]=lXt),bt},Du=K4();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(ps._=Du,define(function(){return Du})):Wp?((Wp.exports=Du)._=Du,Ql._=Du):ps._=Du}).call(DI)});var NK=Vo((D_i,aCt)=>{var O_i=R(W());aCt.exports=eGe;function eGe(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}});var yK=Vo((H_i,sCt)=>{var w_i=R(W());sCt.exports=nGe;function nGe(t,e,n){var i=e[0],o=e[1],a=e[2],s=n[0],l=n[1],r=n[2];return t[0]=o*r-a*l,t[1]=a*s-i*r,t[2]=i*l-o*s,t}});var rCt=Vo((P_i,lCt)=>{var v_i=R(W());lCt.exports=iGe;function iGe(t){var e=t[0],n=t[1],i=t[2];return e*e+n*n+i*i}});var pCt=Vo((K_i,hCt)=>{var z_i=R(W()),dCt=NK(),oGe=yK(),cCt=rCt(),qit=[],mCt=[],aGe=[];hCt.exports=function(t,e,n){dCt(qit,n,e),dCt(mCt,t,e);var i=cCt(oGe(aGe,mCt,qit)),o=cCt(qit);if(o===0)throw Error("a and b are the same point");return i/o}});var ZCt=Vo((j_i,uCt)=>{"use strict";var q_i=R(W()),sGe=pCt();uCt.exports=function(t,e,n){return Math.sqrt(sGe(t,e,n))}});var $it=Vo(($_i,VCt)=>{var t9i=R(W());VCt.exports=lGe;function lGe(t,e){var n=e[0],i=e[1],o=e[2],a=n*n+i*i+o*o;return a>0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a),t}});var tot=Vo((e9i,WCt)=>{var n9i=R(W()),rGe=$it(),bCt=NK(),dGe=yK(),RCt=[0,0,0];WCt.exports=cGe;function cGe(t,e,n,i){return bCt(t,e,n),bCt(RCt,n,i),dGe(t,t,RCt),rGe(t,t)}});var eot=Vo((i9i,fCt)=>{var o9i=R(W());fCt.exports=mGe;function mGe(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}});var UCt=Vo(BK=>{"use strict";var s9i=R(W());Object.defineProperty(BK,"__esModule",{value:!0});BK.default=void 0;function hGe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function FCt(t,e){for(var n=0;n{"use strict";var r9i=R(W());Object.defineProperty(QK,"__esModule",{value:!0});QK.default=void 0;function GCt(t,e){for(var n=0;n{var c9i=R(W());TCt.exports=RGe;function RGe(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}});var ECt=Vo((m9i,gCt)=>{var h9i=R(W());gCt.exports=WGe;function WGe(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}});var ICt=Vo((p9i,CCt)=>{var u9i=R(W());CCt.exports=fGe;function fGe(t){var e=t[0],n=t[1],i=t[2];return Math.sqrt(e*e+n*n+i*i)}});var yCt=Vo((Z9i,NCt)=>{var V9i=R(W());NCt.exports=FGe;function FGe(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}});var QCt=Vo((b9i,BCt)=>{var R9i=R(W());BCt.exports=UGe;function UGe(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t[2]=e[2]+n[2]*i,t}});var YCt=Vo((W9i,kCt)=>{var f9i=R(W());kCt.exports=GGe;function GGe(t,e){var n=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+i*i+o*o)}});var XCt=Vo((F9i,xCt)=>{var U9i=R(W());xCt.exports=AGe;function AGe(t,e){var n=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2];return n*n+i*i+o*o}});var LCt=Vo((G9i,JCt)=>{var A9i=R(W()),t1=1e3,e1=t1*60,n1=e1*60,zT=n1*24,TGe=zT*7,SGe=zT*365.25;JCt.exports=function(t,e){e=e||{};var n=typeof t;if(n==="string"&&t.length>0)return gGe(t);if(n==="number"&&isFinite(t))return e.long?CGe(t):EGe(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function gGe(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return n*SGe;case"weeks":case"week":case"w":return n*TGe;case"days":case"day":case"d":return n*zT;case"hours":case"hour":case"hrs":case"hr":case"h":return n*n1;case"minutes":case"minute":case"mins":case"min":case"m":return n*e1;case"seconds":case"second":case"secs":case"sec":case"s":return n*t1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function EGe(t){var e=Math.abs(t);return e>=zT?Math.round(t/zT)+"d":e>=n1?Math.round(t/n1)+"h":e>=e1?Math.round(t/e1)+"m":e>=t1?Math.round(t/t1)+"s":t+"ms"}function CGe(t){var e=Math.abs(t);return e>=zT?kK(t,e,zT,"day"):e>=n1?kK(t,e,n1,"hour"):e>=e1?kK(t,e,e1,"minute"):e>=t1?kK(t,e,t1,"second"):t+" ms"}function kK(t,e,n,i){var o=e>=n*1.5;return Math.round(t/n)+" "+i+(o?"s":"")}});var _Ct=Vo((T9i,MCt)=>{var S9i=R(W());function IGe(t){n.debug=n,n.default=n,n.coerce=r,n.disable=a,n.enable=o,n.enabled=s,n.humanize=LCt(),n.destroy=d,Object.keys(t).forEach(m=>{n[m]=t[m]}),n.names=[],n.skips=[],n.formatters={};function e(m){let h=0;for(let Z=0;Z{if(y==="%%")return"%";g++;let Q=n.formatters[Y];if(typeof Q=="function"){let J=U[g];y=Q.call(G,J),U.splice(g,1),g--}return y}),n.formatArgs.call(G,U),(G.log||n.log).apply(G,U)}return F.namespace=m,F.useColors=n.useColors(),F.color=n.selectColor(m),F.extend=i,F.destroy=n.destroy,Object.defineProperty(F,"enabled",{enumerable:!0,configurable:!1,get:()=>Z!==null?Z:(b!==n.namespaces&&(b=n.namespaces,u=n.enabled(m)),u),set:U=>{Z=U}}),typeof n.init=="function"&&n.init(F),F}function i(m,h){let Z=n(this.namespace+(typeof h>"u"?":":h)+m);return Z.log=this.log,Z}function o(m){n.save(m),n.namespaces=m,n.names=[],n.skips=[];let h,Z=(typeof m=="string"?m:"").split(/[\s,]+/),b=Z.length;for(h=0;h"-"+h)].join(",");return n.enable(""),m}function s(m){if(m[m.length-1]==="*")return!0;let h,Z;for(h=0,Z=n.skips.length;h{var g9i=R(W());qh.formatArgs=yGe;qh.save=BGe;qh.load=QGe;qh.useColors=NGe;qh.storage=kGe();qh.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();qh.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function NGe(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function yGe(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+YK.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(n++,o==="%c"&&(i=n))}),t.splice(i,0,e)}qh.log=console.debug||console.log||(()=>{});function BGe(t){try{t?qh.storage.setItem("debug",t):qh.storage.removeItem("debug")}catch{}}function QGe(){let t;try{t=qh.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function kGe(){try{return localStorage}catch{}}YK.exports=_Ct()(qh);var{formatters:YGe}=YK.exports;YGe.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var wCt=Vo(XK=>{"use strict";var C9i=R(W());Object.defineProperty(XK,"__esModule",{value:!0});XK.default=void 0;var xGe=HCt(YCt()),XGe=HCt(XCt());function HCt(t){return t&&t.__esModule?t:{default:t}}function JGe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function DCt(t,e){for(var n=0;n ").concat(i.head().index," between ").concat(i.face.collectIndices(),", ").concat(n.face.collectIndices())),this.opposite=n,n.opposite=this}}]),t}();XK.default=MGe});var jCt=Vo(Ib=>{"use strict";var N9i=R(W());Object.defineProperty(Ib,"__esModule",{value:!0});Ib.default=Ib.VISIBLE=Ib.NON_CONVEX=Ib.DELETED=void 0;var not=Nb(eot()),PCt=Nb(SCt()),iot=Nb(NK()),_Ge=Nb(yK()),DGe=Nb(ECt()),OGe=Nb(ICt()),oot=Nb(yCt()),HGe=Nb(QCt()),wGe=Nb($it()),aot=Nb(wCt());function Nb(t){return t&&t.__esModule?t:{default:t}}function PGe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function vCt(t,e){for(var n=0;n0;)i=i.next,n-=1;for(;n<0;)i=i.prev,n+=1;return i}},{key:"computeNormal",value:function(){var n=this.edge,i=n.next,o=i.next,a=(0,iot.default)([],i.head().point,n.head().point),s=[],l=[];for(this.nVertices=2,this.normal=[0,0,0];o!==n;)(0,DGe.default)(l,a),(0,iot.default)(a,o.head().point,n.head().point),(0,PCt.default)(this.normal,this.normal,(0,_Ge.default)(s,l,a)),o=o.next,this.nVertices+=1;this.area=(0,OGe.default)(this.normal),this.normal=(0,oot.default)(this.normal,this.normal,1/this.area)}},{key:"computeNormalMinArea",value:function(n){if(this.computeNormal(),this.areao&&(i=a,o=s),a=a.next}while(a!==this.edge);var l=i.tail().point,r=i.head().point,d=(0,iot.default)([],r,l),m=Math.sqrt(o);(0,oot.default)(d,d,1/m);var h=(0,not.default)(this.normal,d);(0,HGe.default)(this.normal,this.normal,d,-h),(0,wGe.default)(this.normal,this.normal)}}},{key:"computeCentroid",value:function(){this.centroid=[0,0,0];var n=this.edge;do(0,PCt.default)(this.centroid,this.centroid,n.head().point),n=n.next;while(n!==this.edge);(0,oot.default)(this.centroid,this.centroid,1/this.nVertices)}},{key:"computeNormalAndCentroid",value:function(n){typeof n<"u"?this.computeNormalMinArea(n):this.computeNormal(),this.computeCentroid(),this.offset=(0,not.default)(this.normal,this.centroid)}},{key:"distanceToPlane",value:function(n){return(0,not.default)(this.normal,n)-this.offset}},{key:"connectHalfEdges",value:function(n,i){var o;if(n.opposite.face===i.opposite.face){var a=i.opposite.face,s;n===this.edge&&(this.edge=i),a.nVertices===3?(s=i.opposite.prev.opposite,a.mark=sot,o=a):(s=i.opposite.next,a.edge===s.prev&&(a.edge=s),s.prev=s.prev.prev,s.prev.next=s),i.prev=n.prev,i.prev.next=i,i.setOpposite(s),a.computeNormalAndCentroid()}else n.next=i,i.prev=n;return o}},{key:"mergeAdjacentFaces",value:function(n,i){var o=n.opposite,a=o.face;i.push(a),a.mark=sot;for(var s=n.prev,l=n.next,r=o.prev,d=o.next;s.opposite.face===a;)s=s.prev,d=d.next;for(;l.opposite.face===a;)l=l.next,r=r.prev;var m;for(m=d;m!==r.next;m=m.next)m.face=this;this.edge=l;var h;return h=this.connectHalfEdges(r,l),h&&i.push(h),h=this.connectHalfEdges(s,d),h&&i.push(h),this.computeNormalAndCentroid(),i}},{key:"collectIndices",value:function(){var n=[],i=this.edge;do n.push(i.head().index),i=i.next;while(i!==this.edge);return n}}],[{key:"createTriangle",value:function(n,i,o){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=new t,l=new aot.default(n,s),r=new aot.default(i,s),d=new aot.default(o,s);return l.next=d.prev=r,r.next=l.prev=d,d.next=r.prev=l,s.edge=l,s.computeNormalAndCentroid(a),KCt.enabled&&KCt("face created %j",s.collectIndices()),s}}]),t}();Ib.default=zGe});var iIt=Vo(JK=>{"use strict";var B9i=R(W());function rot(t){"@babel/helpers - typeof";return rot=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rot(t)}Object.defineProperty(JK,"__esModule",{value:!0});JK.default=void 0;var jGe=sM(ZCt()),qGe=sM(tot()),lot=sM(eot()),qCt=sM(UCt()),$Ge=sM(ACt()),qr=tAe(jCt());function nIt(t){if(typeof WeakMap!="function")return null;var e=new WeakMap,n=new WeakMap;return(nIt=function(o){return o?n:e})(t)}function tAe(t,e){if(!e&&t&&t.__esModule)return t;if(t===null||rot(t)!=="object"&&typeof t!="function")return{default:t};var n=nIt(e);if(n&&n.has(t))return n.get(t);var i={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(a!=="default"&&Object.prototype.hasOwnProperty.call(t,a)){var s=o?Object.getOwnPropertyDescriptor(t,a):null;s&&(s.get||s.set)?Object.defineProperty(i,a,s):i[a]=t[a]}return i.default=t,n&&n.set(t,i),i}function sM(t){return t&&t.__esModule?t:{default:t}}function eAe(t,e){return aAe(t)||oAe(t,e)||iAe(t,e)||nAe()}function nAe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function iAe(t,e){if(t){if(typeof t=="string")return $Ct(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return $Ct(t,e)}}function $Ct(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nthis.tolerance?this.addVertexToFace(s,i):this.unclaimed.add(s)}}},{key:"resolveUnclaimedPoints",value:function(n){for(var i=this.unclaimed.first(),o=i;o;o=i){i=o.next;for(var a=this.tolerance,s=void 0,l=0;la&&(a=d,s=r),a>1e3*this.tolerance)break}}s&&this.addVertexToFace(o,s)}}},{key:"computeExtremes",value:function(){var n=this,i=[],o=[],a=[],s=[],l,r;for(l=0;l<3;l+=1)a[l]=s[l]=this.vertices[0];for(l=0;l<3;l+=1)i[l]=o[l]=this.vertices[0].point[l];for(l=1;lo[r]&&(o[r]=m[r],s[r]=d)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(i[0]),Math.abs(o[0]))+Math.max(Math.abs(i[1]),Math.abs(o[1]))+Math.max(Math.abs(i[2]),Math.abs(o[2]))),zZ.enabled&&zZ("tolerance %d",n.tolerance),[a,s]}},{key:"createInitialSimplex",value:function(){var n=this.vertices,i=this.computeExtremes(),o=eAe(i,2),a=o[0],s=o[1],l,r,d=0,m=0;for(l=0;l<3;l+=1){var h=s[l].point[l]-a[l].point[l];h>d&&(d=h,m=l)}var Z=a[m],b=s[m],u,F;for(d=0,l=0;ld&&(d=G,u=U)}}var A=(0,qGe.default)([],Z.point,b.point,u.point),T=(0,lot.default)(Z.point,A);for(d=-1,l=0;ld&&(d=C,F=g)}}var y=[];if((0,lot.default)(F.point,A)-T<0)for(y.push(qr.default.createTriangle(Z,b,u),qr.default.createTriangle(F,b,Z),qr.default.createTriangle(F,u,b),qr.default.createTriangle(F,Z,u)),l=0;l<3;l+=1){var Y=(l+1)%3;y[l+1].getEdge(2).setOpposite(y[0].getEdge(Y)),y[l+1].getEdge(1).setOpposite(y[Y+1].getEdge(0))}else for(y.push(qr.default.createTriangle(Z,u,b),qr.default.createTriangle(F,Z,b),qr.default.createTriangle(F,b,u),qr.default.createTriangle(F,u,Z)),l=0;l<3;l+=1){var Q=(l+1)%3;y[l+1].getEdge(2).setOpposite(y[0].getEdge((3-l)%3)),y[l+1].getEdge(0).setOpposite(y[Q+1].getEdge(1))}for(l=0;l<4;l+=1)this.faces.push(y[l]);for(l=0;ld&&(d=V,M=y[r])}M&&this.addVertexToFace(J,M)}}}},{key:"reindexFaceAndVertices",value:function(){for(var n=[],i=0;io&&(o=s,n=i)}return n}}},{key:"computeHorizon",value:function(n,i,o,a){this.deleteFaceVertices(o),o.mark=qr.DELETED;var s;i?s=i.next:s=i=o.getEdge(0);do{var l=s.opposite,r=l.face;r.mark===qr.VISIBLE&&(r.distanceToPlane(n)>this.tolerance?this.computeHorizon(n,l,r,a):a.push(s)),s=s.next}while(s!==i)}},{key:"addAdjoiningFace",value:function(n,i){var o=qr.default.createTriangle(n,i.tail(),i.head());return this.faces.push(o),o.getEdge(-1).setOpposite(i.opposite),o.getEdge(0)}},{key:"addNewFaces",value:function(n,i){this.newFaces=[];for(var o,a,s=0;s=n.nVertices)throw Error("merge recursion limit exceeded");var l=o.opposite.face,r=!1;if(i===eIt?(this.oppositeFaceDistance(o)>-this.tolerance||this.oppositeFaceDistance(o.opposite)>-this.tolerance)&&(r=!0):n.area>l.area?this.oppositeFaceDistance(o)>-this.tolerance?r=!0:this.oppositeFaceDistance(o.opposite)>-this.tolerance&&(a=!1):this.oppositeFaceDistance(o.opposite)>-this.tolerance?r=!0:this.oppositeFaceDistance(o)>-this.tolerance&&(a=!1),r){zZ("face merge");for(var d=n.mergeAdjacentFaces(o,[]),m=0;m{"use strict";var k9i=R(W());Object.defineProperty(LK,"__esModule",{value:!0});LK.default=hAe;LK.isPointInsideHull=pAe;var cAe=oIt(iIt()),mAe=oIt(tot());function oIt(t){return t&&t.__esModule?t:{default:t}}function hAe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=new cAe.default(t);return n.build(),n.collectFaces(e.skipTriangulation)}function pAe(t,e,n){for(var i=0;i0)return!1}return!0}});var wst=Vo((exports,module)=>{var gOo=R(W());/*! +}`;var uo=Mct(function(){return ia(St,li+"return "+Oe).apply(t,Jt)});if(uo.source=Oe,D8(uo))throw uo;return uo}function fLt(T){return xa(T).toLowerCase()}function FLt(T){return xa(T).toUpperCase()}function ULt(T,N,O){if(T=xa(T),T&&(O||N===t))return ZO(T);if(!T||!(N=ch(N)))return T;var tt=mm(T),ct=mm(N),St=wW(tt,ct),Jt=RO(tt,ct)+1;return of(tt,St,Jt).join("")}function GLt(T,N,O){if(T=xa(T),T&&(O||N===t))return T.slice(0,Tg(T)+1);if(!T||!(N=ch(N)))return T;var tt=mm(T),ct=RO(tt,mm(N))+1;return of(tt,0,ct).join("")}function ALt(T,N,O){if(T=xa(T),T&&(O||N===t))return T.replace(Wa,"");if(!T||!(N=ch(N)))return T;var tt=mm(T),ct=wW(tt,mm(N));return of(tt,ct).join("")}function SLt(T,N){var O=Q,tt=J;if(qs(N)){var ct="separator"in N?N.separator:ct;O="length"in N?po(N.length):O,tt="omission"in N?ch(N.omission):tt}T=xa(T);var St=T.length;if(PW(T)){var Jt=mm(T);St=Jt.length}if(O>=St)return T;var Ht=O-vW(tt);if(Ht<1)return tt;var $t=Jt?of(Jt,0,Ht).join(""):T.slice(0,Ht);if(ct===t)return $t+tt;if(Jt&&(Ht+=$t.length-Ht),O8(ct)){if(T.slice(Ht).search(ct)){var ye,Be=$t;for(ct.global||(ct=BN(ct.source,xa(mr.exec(ct))+"g")),ct.lastIndex=0;ye=ct.exec(Be);)var Oe=ye.index;$t=$t.slice(0,Oe===t?Ht:Oe)}}else if(T.indexOf(ch(ct),Ht)!=Ht){var Bn=$t.lastIndexOf(ct);Bn>-1&&($t=$t.slice(0,Bn))}return $t+tt}function TLt(T){return T=xa(T),T&&da.test(T)?T.replace(An,P4):T}var gLt=Lg(function(T,N,O){return T+(O?" ":"")+N.toUpperCase()}),P8=_dt("toUpperCase");function Lct(T,N,O){return T=xa(T),N=O?t:N,N===t?Sg(T)?Ta(T):k4(T):T.match(N)||[]}var Mct=Fo(function(T,N){try{return Wc(T,t,N)}catch(O){return D8(O)?O:new Ai(O)}}),ELt=mb(function(T,N){return cm(N,function(O){O=CZ(O),db(T,O,M8(T[O],T))}),T});function CLt(T){var N=T==null?0:T.length,O=Ei();return T=N?Sa(T,function(tt){if(typeof tt[1]!="function")throw new hm(o);return[O(tt[0]),tt[1]]}):[],Fo(function(tt){for(var ct=-1;++ct_)return[];var O=z,tt=Vs(T,z);N=Ei(N),T-=z;for(var ct=NN(tt,N);++O0||N<0)?new So(O):(T<0?O=O.takeRight(-T):T&&(O=O.drop(T)),N!==t&&(N=po(N),O=N<0?O.dropRight(-N):O.take(N-T)),O)},So.prototype.takeRightWhile=function(T){return this.reverse().takeWhile(T).reverse()},So.prototype.toArray=function(){return this.take(z)},gZ(So.prototype,function(T,N){var O=/^(?:filter|find|map|reject)|While$/.test(N),tt=/^(?:head|last)$/.test(N),ct=Rt[tt?"take"+(N=="last"?"Right":""):N],St=tt||/^find/.test(N);ct&&(Rt.prototype[N]=function(){var Jt=this.__wrapped__,Ht=tt?[1]:arguments,$t=Jt instanceof So,ye=Ht[0],Be=$t||ji(Jt),Oe=function(No){var Ko=ct.apply(Rt,_V([No],Ht));return tt&&Bn?Ko[0]:Ko};Be&&O&&typeof ye=="function"&&ye.length!=1&&($t=Be=!1);var Bn=this.__chain__,li=!!this.__actions__.length,Qi=St&&!Bn,uo=$t&&!li;if(!St&&Be){Jt=uo?Jt:new So(this);var ki=T.apply(Jt,Ht);return ki.__actions__.push({func:JO,args:[Oe],thisArg:t}),new pm(ki,Bn)}return Qi&&uo?T.apply(this,Ht):(ki=this.thru(Oe),Qi?tt?ki.value()[0]:ki.value():ki)})}),cm(["pop","push","shift","sort","splice","unshift"],function(T){var N=gg[T],O=/^(?:push|sort|unshift)$/.test(T)?"tap":"thru",tt=/^(?:pop|shift)$/.test(T);Rt.prototype[T]=function(){var ct=arguments;if(tt&&!this.__chain__){var St=this.value();return N.apply(ji(St)?St:[],ct)}return this[O](function(Jt){return N.apply(ji(Jt)?Jt:[],ct)})}}),gZ(So.prototype,function(T,N){var O=Rt[N];if(O){var tt=O.name+"";ga.call($W,tt)||($W[tt]=[]),$W[tt].push({name:N,func:O})}}),$W[yO(t,F).name]=[{name:"wrapper",func:t}],So.prototype.clone=r8,So.prototype.reverse=Xg,So.prototype.value=d8,Rt.prototype.at=iXt,Rt.prototype.chain=oXt,Rt.prototype.commit=aXt,Rt.prototype.next=sXt,Rt.prototype.plant=rXt,Rt.prototype.reverse=dXt,Rt.prototype.toJSON=Rt.prototype.valueOf=Rt.prototype.value=cXt,Rt.prototype.first=Rt.prototype.head,tG&&(Rt.prototype[tG]=lXt),Rt},DV=K4();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(ps._=DV,define(function(){return DV})):Wp?((Wp.exports=DV)._=DV,Ql._=DV):ps._=DV}).call(DI)});var N3=Zo((D_i,aCt)=>{var O_i=b(W());aCt.exports=eGe;function eGe(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}});var y3=Zo((H_i,sCt)=>{var w_i=b(W());sCt.exports=nGe;function nGe(t,e,n){var i=e[0],o=e[1],a=e[2],s=n[0],l=n[1],r=n[2];return t[0]=o*r-a*l,t[1]=a*s-i*r,t[2]=i*l-o*s,t}});var rCt=Zo((P_i,lCt)=>{var v_i=b(W());lCt.exports=iGe;function iGe(t){var e=t[0],n=t[1],i=t[2];return e*e+n*n+i*i}});var pCt=Zo((K_i,hCt)=>{var z_i=b(W()),dCt=N3(),oGe=y3(),cCt=rCt(),qit=[],mCt=[],aGe=[];hCt.exports=function(t,e,n){dCt(qit,n,e),dCt(mCt,t,e);var i=cCt(oGe(aGe,mCt,qit)),o=cCt(qit);if(o===0)throw Error("a and b are the same point");return i/o}});var uCt=Zo((j_i,VCt)=>{"use strict";var q_i=b(W()),sGe=pCt();VCt.exports=function(t,e,n){return Math.sqrt(sGe(t,e,n))}});var $it=Zo(($_i,ZCt)=>{var t9i=b(W());ZCt.exports=lGe;function lGe(t,e){var n=e[0],i=e[1],o=e[2],a=n*n+i*i+o*o;return a>0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a),t}});var tot=Zo((e9i,WCt)=>{var n9i=b(W()),rGe=$it(),RCt=N3(),dGe=y3(),bCt=[0,0,0];WCt.exports=cGe;function cGe(t,e,n,i){return RCt(t,e,n),RCt(bCt,n,i),dGe(t,t,bCt),rGe(t,t)}});var eot=Zo((i9i,fCt)=>{var o9i=b(W());fCt.exports=mGe;function mGe(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}});var UCt=Zo(B3=>{"use strict";var s9i=b(W());Object.defineProperty(B3,"__esModule",{value:!0});B3.default=void 0;function hGe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function FCt(t,e){for(var n=0;n{"use strict";var r9i=b(W());Object.defineProperty(Q3,"__esModule",{value:!0});Q3.default=void 0;function GCt(t,e){for(var n=0;n{var c9i=b(W());SCt.exports=bGe;function bGe(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}});var ECt=Zo((m9i,gCt)=>{var h9i=b(W());gCt.exports=WGe;function WGe(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}});var ICt=Zo((p9i,CCt)=>{var V9i=b(W());CCt.exports=fGe;function fGe(t){var e=t[0],n=t[1],i=t[2];return Math.sqrt(e*e+n*n+i*i)}});var yCt=Zo((u9i,NCt)=>{var Z9i=b(W());NCt.exports=FGe;function FGe(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}});var QCt=Zo((R9i,BCt)=>{var b9i=b(W());BCt.exports=UGe;function UGe(t,e,n,i){return t[0]=e[0]+n[0]*i,t[1]=e[1]+n[1]*i,t[2]=e[2]+n[2]*i,t}});var YCt=Zo((W9i,kCt)=>{var f9i=b(W());kCt.exports=GGe;function GGe(t,e){var n=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+i*i+o*o)}});var XCt=Zo((F9i,xCt)=>{var U9i=b(W());xCt.exports=AGe;function AGe(t,e){var n=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2];return n*n+i*i+o*o}});var LCt=Zo((G9i,JCt)=>{var A9i=b(W()),t1=1e3,e1=t1*60,n1=e1*60,zS=n1*24,SGe=zS*7,TGe=zS*365.25;JCt.exports=function(t,e){e=e||{};var n=typeof t;if(n==="string"&&t.length>0)return gGe(t);if(n==="number"&&isFinite(t))return e.long?CGe(t):EGe(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function gGe(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return n*TGe;case"weeks":case"week":case"w":return n*SGe;case"days":case"day":case"d":return n*zS;case"hours":case"hour":case"hrs":case"hr":case"h":return n*n1;case"minutes":case"minute":case"mins":case"min":case"m":return n*e1;case"seconds":case"second":case"secs":case"sec":case"s":return n*t1;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function EGe(t){var e=Math.abs(t);return e>=zS?Math.round(t/zS)+"d":e>=n1?Math.round(t/n1)+"h":e>=e1?Math.round(t/e1)+"m":e>=t1?Math.round(t/t1)+"s":t+"ms"}function CGe(t){var e=Math.abs(t);return e>=zS?k3(t,e,zS,"day"):e>=n1?k3(t,e,n1,"hour"):e>=e1?k3(t,e,e1,"minute"):e>=t1?k3(t,e,t1,"second"):t+" ms"}function k3(t,e,n,i){var o=e>=n*1.5;return Math.round(t/n)+" "+i+(o?"s":"")}});var _Ct=Zo((S9i,MCt)=>{var T9i=b(W());function IGe(t){n.debug=n,n.default=n,n.coerce=r,n.disable=a,n.enable=o,n.enabled=s,n.humanize=LCt(),n.destroy=d,Object.keys(t).forEach(m=>{n[m]=t[m]}),n.names=[],n.skips=[],n.formatters={};function e(m){let h=0;for(let u=0;u{if(y==="%%")return"%";g++;let Q=n.formatters[Y];if(typeof Q=="function"){let J=U[g];y=Q.call(G,J),U.splice(g,1),g--}return y}),n.formatArgs.call(G,U),(G.log||n.log).apply(G,U)}return F.namespace=m,F.useColors=n.useColors(),F.color=n.selectColor(m),F.extend=i,F.destroy=n.destroy,Object.defineProperty(F,"enabled",{enumerable:!0,configurable:!1,get:()=>u!==null?u:(R!==n.namespaces&&(R=n.namespaces,V=n.enabled(m)),V),set:U=>{u=U}}),typeof n.init=="function"&&n.init(F),F}function i(m,h){let u=n(this.namespace+(typeof h>"u"?":":h)+m);return u.log=this.log,u}function o(m){n.save(m),n.namespaces=m,n.names=[],n.skips=[];let h,u=(typeof m=="string"?m:"").split(/[\s,]+/),R=u.length;for(h=0;h"-"+h)].join(",");return n.enable(""),m}function s(m){if(m[m.length-1]==="*")return!0;let h,u;for(h=0,u=n.skips.length;h{var g9i=b(W());qh.formatArgs=yGe;qh.save=BGe;qh.load=QGe;qh.useColors=NGe;qh.storage=kGe();qh.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();qh.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function NGe(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function yGe(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+Y3.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(n++,o==="%c"&&(i=n))}),t.splice(i,0,e)}qh.log=console.debug||console.log||(()=>{});function BGe(t){try{t?qh.storage.setItem("debug",t):qh.storage.removeItem("debug")}catch{}}function QGe(){let t;try{t=qh.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function kGe(){try{return localStorage}catch{}}Y3.exports=_Ct()(qh);var{formatters:YGe}=Y3.exports;YGe.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var wCt=Zo(X3=>{"use strict";var C9i=b(W());Object.defineProperty(X3,"__esModule",{value:!0});X3.default=void 0;var xGe=HCt(YCt()),XGe=HCt(XCt());function HCt(t){return t&&t.__esModule?t:{default:t}}function JGe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function DCt(t,e){for(var n=0;n ").concat(i.head().index," between ").concat(i.face.collectIndices(),", ").concat(n.face.collectIndices())),this.opposite=n,n.opposite=this}}]),t}();X3.default=MGe});var jCt=Zo(IR=>{"use strict";var N9i=b(W());Object.defineProperty(IR,"__esModule",{value:!0});IR.default=IR.VISIBLE=IR.NON_CONVEX=IR.DELETED=void 0;var not=NR(eot()),PCt=NR(TCt()),iot=NR(N3()),_Ge=NR(y3()),DGe=NR(ECt()),OGe=NR(ICt()),oot=NR(yCt()),HGe=NR(QCt()),wGe=NR($it()),aot=NR(wCt());function NR(t){return t&&t.__esModule?t:{default:t}}function PGe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function vCt(t,e){for(var n=0;n0;)i=i.next,n-=1;for(;n<0;)i=i.prev,n+=1;return i}},{key:"computeNormal",value:function(){var n=this.edge,i=n.next,o=i.next,a=(0,iot.default)([],i.head().point,n.head().point),s=[],l=[];for(this.nVertices=2,this.normal=[0,0,0];o!==n;)(0,DGe.default)(l,a),(0,iot.default)(a,o.head().point,n.head().point),(0,PCt.default)(this.normal,this.normal,(0,_Ge.default)(s,l,a)),o=o.next,this.nVertices+=1;this.area=(0,OGe.default)(this.normal),this.normal=(0,oot.default)(this.normal,this.normal,1/this.area)}},{key:"computeNormalMinArea",value:function(n){if(this.computeNormal(),this.areao&&(i=a,o=s),a=a.next}while(a!==this.edge);var l=i.tail().point,r=i.head().point,d=(0,iot.default)([],r,l),m=Math.sqrt(o);(0,oot.default)(d,d,1/m);var h=(0,not.default)(this.normal,d);(0,HGe.default)(this.normal,this.normal,d,-h),(0,wGe.default)(this.normal,this.normal)}}},{key:"computeCentroid",value:function(){this.centroid=[0,0,0];var n=this.edge;do(0,PCt.default)(this.centroid,this.centroid,n.head().point),n=n.next;while(n!==this.edge);(0,oot.default)(this.centroid,this.centroid,1/this.nVertices)}},{key:"computeNormalAndCentroid",value:function(n){typeof n<"u"?this.computeNormalMinArea(n):this.computeNormal(),this.computeCentroid(),this.offset=(0,not.default)(this.normal,this.centroid)}},{key:"distanceToPlane",value:function(n){return(0,not.default)(this.normal,n)-this.offset}},{key:"connectHalfEdges",value:function(n,i){var o;if(n.opposite.face===i.opposite.face){var a=i.opposite.face,s;n===this.edge&&(this.edge=i),a.nVertices===3?(s=i.opposite.prev.opposite,a.mark=sot,o=a):(s=i.opposite.next,a.edge===s.prev&&(a.edge=s),s.prev=s.prev.prev,s.prev.next=s),i.prev=n.prev,i.prev.next=i,i.setOpposite(s),a.computeNormalAndCentroid()}else n.next=i,i.prev=n;return o}},{key:"mergeAdjacentFaces",value:function(n,i){var o=n.opposite,a=o.face;i.push(a),a.mark=sot;for(var s=n.prev,l=n.next,r=o.prev,d=o.next;s.opposite.face===a;)s=s.prev,d=d.next;for(;l.opposite.face===a;)l=l.next,r=r.prev;var m;for(m=d;m!==r.next;m=m.next)m.face=this;this.edge=l;var h;return h=this.connectHalfEdges(r,l),h&&i.push(h),h=this.connectHalfEdges(s,d),h&&i.push(h),this.computeNormalAndCentroid(),i}},{key:"collectIndices",value:function(){var n=[],i=this.edge;do n.push(i.head().index),i=i.next;while(i!==this.edge);return n}}],[{key:"createTriangle",value:function(n,i,o){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=new t,l=new aot.default(n,s),r=new aot.default(i,s),d=new aot.default(o,s);return l.next=d.prev=r,r.next=l.prev=d,d.next=r.prev=l,s.edge=l,s.computeNormalAndCentroid(a),KCt.enabled&&KCt("face created %j",s.collectIndices()),s}}]),t}();IR.default=zGe});var iIt=Zo(J3=>{"use strict";var B9i=b(W());function rot(t){"@babel/helpers - typeof";return rot=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rot(t)}Object.defineProperty(J3,"__esModule",{value:!0});J3.default=void 0;var jGe=sM(uCt()),qGe=sM(tot()),lot=sM(eot()),qCt=sM(UCt()),$Ge=sM(ACt()),qr=tAe(jCt());function nIt(t){if(typeof WeakMap!="function")return null;var e=new WeakMap,n=new WeakMap;return(nIt=function(o){return o?n:e})(t)}function tAe(t,e){if(!e&&t&&t.__esModule)return t;if(t===null||rot(t)!=="object"&&typeof t!="function")return{default:t};var n=nIt(e);if(n&&n.has(t))return n.get(t);var i={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if(a!=="default"&&Object.prototype.hasOwnProperty.call(t,a)){var s=o?Object.getOwnPropertyDescriptor(t,a):null;s&&(s.get||s.set)?Object.defineProperty(i,a,s):i[a]=t[a]}return i.default=t,n&&n.set(t,i),i}function sM(t){return t&&t.__esModule?t:{default:t}}function eAe(t,e){return aAe(t)||oAe(t,e)||iAe(t,e)||nAe()}function nAe(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function iAe(t,e){if(t){if(typeof t=="string")return $Ct(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);if(n==="Object"&&t.constructor&&(n=t.constructor.name),n==="Map"||n==="Set")return Array.from(t);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return $Ct(t,e)}}function $Ct(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nthis.tolerance?this.addVertexToFace(s,i):this.unclaimed.add(s)}}},{key:"resolveUnclaimedPoints",value:function(n){for(var i=this.unclaimed.first(),o=i;o;o=i){i=o.next;for(var a=this.tolerance,s=void 0,l=0;la&&(a=d,s=r),a>1e3*this.tolerance)break}}s&&this.addVertexToFace(o,s)}}},{key:"computeExtremes",value:function(){var n=this,i=[],o=[],a=[],s=[],l,r;for(l=0;l<3;l+=1)a[l]=s[l]=this.vertices[0];for(l=0;l<3;l+=1)i[l]=o[l]=this.vertices[0].point[l];for(l=1;lo[r]&&(o[r]=m[r],s[r]=d)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(i[0]),Math.abs(o[0]))+Math.max(Math.abs(i[1]),Math.abs(o[1]))+Math.max(Math.abs(i[2]),Math.abs(o[2]))),zu.enabled&&zu("tolerance %d",n.tolerance),[a,s]}},{key:"createInitialSimplex",value:function(){var n=this.vertices,i=this.computeExtremes(),o=eAe(i,2),a=o[0],s=o[1],l,r,d=0,m=0;for(l=0;l<3;l+=1){var h=s[l].point[l]-a[l].point[l];h>d&&(d=h,m=l)}var u=a[m],R=s[m],V,F;for(d=0,l=0;ld&&(d=G,V=U)}}var A=(0,qGe.default)([],u.point,R.point,V.point),S=(0,lot.default)(u.point,A);for(d=-1,l=0;ld&&(d=C,F=g)}}var y=[];if((0,lot.default)(F.point,A)-S<0)for(y.push(qr.default.createTriangle(u,R,V),qr.default.createTriangle(F,R,u),qr.default.createTriangle(F,V,R),qr.default.createTriangle(F,u,V)),l=0;l<3;l+=1){var Y=(l+1)%3;y[l+1].getEdge(2).setOpposite(y[0].getEdge(Y)),y[l+1].getEdge(1).setOpposite(y[Y+1].getEdge(0))}else for(y.push(qr.default.createTriangle(u,V,R),qr.default.createTriangle(F,u,R),qr.default.createTriangle(F,R,V),qr.default.createTriangle(F,V,u)),l=0;l<3;l+=1){var Q=(l+1)%3;y[l+1].getEdge(2).setOpposite(y[0].getEdge((3-l)%3)),y[l+1].getEdge(0).setOpposite(y[Q+1].getEdge(1))}for(l=0;l<4;l+=1)this.faces.push(y[l]);for(l=0;ld&&(d=Z,M=y[r])}M&&this.addVertexToFace(J,M)}}}},{key:"reindexFaceAndVertices",value:function(){for(var n=[],i=0;io&&(o=s,n=i)}return n}}},{key:"computeHorizon",value:function(n,i,o,a){this.deleteFaceVertices(o),o.mark=qr.DELETED;var s;i?s=i.next:s=i=o.getEdge(0);do{var l=s.opposite,r=l.face;r.mark===qr.VISIBLE&&(r.distanceToPlane(n)>this.tolerance?this.computeHorizon(n,l,r,a):a.push(s)),s=s.next}while(s!==i)}},{key:"addAdjoiningFace",value:function(n,i){var o=qr.default.createTriangle(n,i.tail(),i.head());return this.faces.push(o),o.getEdge(-1).setOpposite(i.opposite),o.getEdge(0)}},{key:"addNewFaces",value:function(n,i){this.newFaces=[];for(var o,a,s=0;s=n.nVertices)throw Error("merge recursion limit exceeded");var l=o.opposite.face,r=!1;if(i===eIt?(this.oppositeFaceDistance(o)>-this.tolerance||this.oppositeFaceDistance(o.opposite)>-this.tolerance)&&(r=!0):n.area>l.area?this.oppositeFaceDistance(o)>-this.tolerance?r=!0:this.oppositeFaceDistance(o.opposite)>-this.tolerance&&(a=!1):this.oppositeFaceDistance(o.opposite)>-this.tolerance?r=!0:this.oppositeFaceDistance(o)>-this.tolerance&&(a=!1),r){zu("face merge");for(var d=n.mergeAdjacentFaces(o,[]),m=0;m{"use strict";var k9i=b(W());Object.defineProperty(L3,"__esModule",{value:!0});L3.default=hAe;L3.isPointInsideHull=pAe;var cAe=oIt(iIt()),mAe=oIt(tot());function oIt(t){return t&&t.__esModule?t:{default:t}}function hAe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=new cAe.default(t);return n.build(),n.collectFaces(e.skipTriangulation)}function pAe(t,e,n){for(var i=0;i0)return!1}return!0}});var wst=Zo((exports,module)=>{var gOo=b(W());/*! * protobuf.js v7.2.6 (c) 2016, daniel wirtz * compiled tue, 16 jan 2024 22:54:38 utc * licensed under the bsd-3-clause license * see: https://github.com/dcodeio/protobuf.js for details - */(function(undefined){"use strict";(function(e,n,i){function o(s){var l=n[s];return l||e[s][0].call(l=n[s]={exports:{}},o,l,l.exports),l.exports}var a=o(i[0]);a.util.global.protobuf=a,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(a.util.Long=s,a.configure()),a}),typeof module=="object"&&module&&module.exports&&(module.exports=a)})({1:[function(t,e,n){"use strict";e.exports=i;function i(o,a){for(var s=new Array(arguments.length-1),l=0,r=2,d=!0;r1&&d.charAt(m)==="=";)++h;return Math.ceil(d.length*3)/4-h};for(var o=new Array(64),a=new Array(123),s=0;s<64;)a[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(d,m,h){for(var Z=null,b=[],u=0,F=0,U;m>2],U=(G&3)<<4,F=1;break;case 1:b[u++]=o[U|G>>4],U=(G&15)<<2,F=2;break;case 2:b[u++]=o[U|G>>6],b[u++]=o[G&63],F=0;break}u>8191&&((Z||(Z=[])).push(String.fromCharCode.apply(String,b)),u=0)}return F&&(b[u++]=o[U],b[u++]=61,F===1&&(b[u++]=61)),Z?(u&&Z.push(String.fromCharCode.apply(String,b.slice(0,u))),Z.join("")):String.fromCharCode.apply(String,b.slice(0,u))};var l="invalid encoding";i.decode=function(d,m,h){for(var Z=h,b=0,u,F=0;F1)break;if((U=a[U])===undefined)throw Error(l);switch(b){case 0:u=U,b=1;break;case 1:m[h++]=u<<2|(U&48)>>4,u=U,b=2;break;case 2:m[h++]=(u&15)<<4|(U&60)>>2,u=U,b=3;break;case 3:m[h++]=(u&3)<<6|U,b=0;break}}if(b===1)throw Error(l);return h-Z},i.test=function(d){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(d)}},{}],3:[function(t,e,n){"use strict";e.exports=i;function i(){this._listeners={}}i.prototype.on=function(a,s,l){return(this._listeners[a]||(this._listeners[a]=[])).push({fn:s,ctx:l||this}),this},i.prototype.off=function(a,s){if(a===undefined)this._listeners={};else if(s===undefined)this._listeners[a]=[];else for(var l=this._listeners[a],r=0;r0?0:2147483648,b,u);else if(isNaN(Z))h(2143289344,b,u);else if(Z>34028234663852886e22)h((F<<31|2139095040)>>>0,b,u);else if(Z<11754943508222875e-54)h((F<<31|Math.round(Z/1401298464324817e-60))>>>0,b,u);else{var U=Math.floor(Math.log(Z)/Math.LN2),G=Math.round(Z*Math.pow(2,-U)*8388608)&8388607;h((F<<31|U+127<<23|G)>>>0,b,u)}}r.writeFloatLE=d.bind(null,o),r.writeFloatBE=d.bind(null,a);function m(h,Z,b){var u=h(Z,b),F=(u>>31)*2+1,U=u>>>23&255,G=u&8388607;return U===255?G?NaN:F*(1/0):U===0?F*1401298464324817e-60*G:F*Math.pow(2,U-150)*(G+8388608)}r.readFloatLE=m.bind(null,s),r.readFloatBE=m.bind(null,l)}(),typeof Float64Array<"u"?function(){var d=new Float64Array([-0]),m=new Uint8Array(d.buffer),h=m[7]===128;function Z(U,G,A){d[0]=U,G[A]=m[0],G[A+1]=m[1],G[A+2]=m[2],G[A+3]=m[3],G[A+4]=m[4],G[A+5]=m[5],G[A+6]=m[6],G[A+7]=m[7]}function b(U,G,A){d[0]=U,G[A]=m[7],G[A+1]=m[6],G[A+2]=m[5],G[A+3]=m[4],G[A+4]=m[3],G[A+5]=m[2],G[A+6]=m[1],G[A+7]=m[0]}r.writeDoubleLE=h?Z:b,r.writeDoubleBE=h?b:Z;function u(U,G){return m[0]=U[G],m[1]=U[G+1],m[2]=U[G+2],m[3]=U[G+3],m[4]=U[G+4],m[5]=U[G+5],m[6]=U[G+6],m[7]=U[G+7],d[0]}function F(U,G){return m[7]=U[G],m[6]=U[G+1],m[5]=U[G+2],m[4]=U[G+3],m[3]=U[G+4],m[2]=U[G+5],m[1]=U[G+6],m[0]=U[G+7],d[0]}r.readDoubleLE=h?u:F,r.readDoubleBE=h?F:u}():function(){function d(h,Z,b,u,F,U){var G=u<0?1:0;if(G&&(u=-u),u===0)h(0,F,U+Z),h(1/u>0?0:2147483648,F,U+b);else if(isNaN(u))h(0,F,U+Z),h(2146959360,F,U+b);else if(u>17976931348623157e292)h(0,F,U+Z),h((G<<31|2146435072)>>>0,F,U+b);else{var A;if(u<22250738585072014e-324)A=u/5e-324,h(A>>>0,F,U+Z),h((G<<31|A/4294967296)>>>0,F,U+b);else{var T=Math.floor(Math.log(u)/Math.LN2);T===1024&&(T=1023),A=u*Math.pow(2,-T),h(A*4503599627370496>>>0,F,U+Z),h((G<<31|T+1023<<20|A*1048576&1048575)>>>0,F,U+b)}}}r.writeDoubleLE=d.bind(null,o,0,4),r.writeDoubleBE=d.bind(null,a,4,0);function m(h,Z,b,u,F){var U=h(u,F+Z),G=h(u,F+b),A=(G>>31)*2+1,T=G>>>20&2047,g=4294967296*(G&1048575)+U;return T===2047?g?NaN:A*(1/0):T===0?A*5e-324*g:A*Math.pow(2,T-1075)*(g+4503599627370496)}r.readDoubleLE=m.bind(null,s,0,4),r.readDoubleBE=m.bind(null,l,4,0)}(),r}function o(r,d,m){d[m]=r&255,d[m+1]=r>>>8&255,d[m+2]=r>>>16&255,d[m+3]=r>>>24}function a(r,d,m){d[m]=r>>>24,d[m+1]=r>>>16&255,d[m+2]=r>>>8&255,d[m+3]=r&255}function s(r,d){return(r[d]|r[d+1]<<8|r[d+2]<<16|r[d+3]<<24)>>>0}function l(r,d){return(r[d]<<24|r[d+1]<<16|r[d+2]<<8|r[d+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(t){}return null}},{}],6:[function(t,e,n){"use strict";e.exports=i;function i(o,a,s){var l=s||8192,r=l>>>1,d=null,m=l;return function(Z){if(Z<1||Z>r)return o(Z);m+Z>l&&(d=o(l),m=0);var b=a.call(d,m,m+=Z);return m&7&&(m=(m|7)+1),b}}},{}],7:[function(t,e,n){"use strict";var i=n;i.length=function(a){for(var s=0,l=0,r=0;r191&&Z<224?m[h++]=(Z&31)<<6|a[s++]&63:Z>239&&Z<365?(Z=((Z&7)<<18|(a[s++]&63)<<12|(a[s++]&63)<<6|a[s++]&63)-65536,m[h++]=55296+(Z>>10),m[h++]=56320+(Z&1023)):m[h++]=(Z&15)<<12|(a[s++]&63)<<6|a[s++]&63,h>8191&&((d||(d=[])).push(String.fromCharCode.apply(String,m)),h=0);return d?(h&&d.push(String.fromCharCode.apply(String,m.slice(0,h))),d.join("")):String.fromCharCode.apply(String,m.slice(0,h))},i.write=function(a,s,l){for(var r=l,d,m,h=0;h>6|192,s[l++]=d&63|128):(d&64512)===55296&&((m=a.charCodeAt(h+1))&64512)===56320?(d=65536+((d&1023)<<10)+(m&1023),++h,s[l++]=d>>18|240,s[l++]=d>>12&63|128,s[l++]=d>>6&63|128,s[l++]=d&63|128):(s[l++]=d>>12|224,s[l++]=d>>6&63|128,s[l++]=d&63|128);return l-r}},{}],8:[function(t,e,n){"use strict";var i=n;i.build="minimal",i.Writer=t(16),i.BufferWriter=t(17),i.Reader=t(9),i.BufferReader=t(10),i.util=t(15),i.rpc=t(12),i.roots=t(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(t,e,n){"use strict";e.exports=r;var i=t(15),o,a=i.LongBits,s=i.utf8;function l(u,F){return RangeError("index out of range: "+u.pos+" + "+(F||1)+" > "+u.len)}function r(u){this.buf=u,this.pos=0,this.len=u.length}var d=typeof Uint8Array<"u"?function(F){if(F instanceof Uint8Array||Array.isArray(F))return new r(F);throw Error("illegal buffer")}:function(F){if(Array.isArray(F))return new r(F);throw Error("illegal buffer")},m=function(){return i.Buffer?function(U){return(r.create=function(A){return i.Buffer.isBuffer(A)?new o(A):d(A)})(U)}:d};r.create=m(),r.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,r.prototype.uint32=function(){var F=4294967295;return function(){if(F=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(F=(F|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(F=(F|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(F=(F|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(F=(F|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return F;if((this.pos+=5)>this.len)throw this.pos=this.len,l(this,10);return F}}(),r.prototype.int32=function(){return this.uint32()|0},r.prototype.sint32=function(){var F=this.uint32();return F>>>1^-(F&1)|0};function h(){var u=new a(0,0),F=0;if(this.len-this.pos>4){for(;F<4;++F)if(u.lo=(u.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return u;if(u.lo=(u.lo|(this.buf[this.pos]&127)<<28)>>>0,u.hi=(u.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return u;F=0}else{for(;F<3;++F){if(this.pos>=this.len)throw l(this);if(u.lo=(u.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return u}return u.lo=(u.lo|(this.buf[this.pos++]&127)<>>0,u}if(this.len-this.pos>4){for(;F<5;++F)if(u.hi=(u.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return u}else for(;F<5;++F){if(this.pos>=this.len)throw l(this);if(u.hi=(u.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return u}throw Error("invalid varint encoding")}r.prototype.bool=function(){return this.uint32()!==0};function Z(u,F){return(u[F-4]|u[F-3]<<8|u[F-2]<<16|u[F-1]<<24)>>>0}r.prototype.fixed32=function(){if(this.pos+4>this.len)throw l(this,4);return Z(this.buf,this.pos+=4)},r.prototype.sfixed32=function(){if(this.pos+4>this.len)throw l(this,4);return Z(this.buf,this.pos+=4)|0};function b(){if(this.pos+8>this.len)throw l(this,8);return new a(Z(this.buf,this.pos+=4),Z(this.buf,this.pos+=4))}r.prototype.float=function(){if(this.pos+4>this.len)throw l(this,4);var F=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,F},r.prototype.double=function(){if(this.pos+8>this.len)throw l(this,4);var F=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,F},r.prototype.bytes=function(){var F=this.uint32(),U=this.pos,G=this.pos+F;if(G>this.len)throw l(this,F);if(this.pos+=F,Array.isArray(this.buf))return this.buf.slice(U,G);if(U===G){var A=i.Buffer;return A?A.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,U,G)},r.prototype.string=function(){var F=this.bytes();return s.read(F,0,F.length)},r.prototype.skip=function(F){if(typeof F=="number"){if(this.pos+F>this.len)throw l(this,F);this.pos+=F}else do if(this.pos>=this.len)throw l(this);while(this.buf[this.pos++]&128);return this},r.prototype.skipType=function(u){switch(u){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(u=this.uint32()&7)!==4;)this.skipType(u);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+u+" at offset "+this.pos)}return this},r._configure=function(u){o=u,r.create=m(),o._configure();var F=i.Long?"toLong":"toNumber";i.merge(r.prototype,{int64:function(){return h.call(this)[F](!1)},uint64:function(){return h.call(this)[F](!0)},sint64:function(){return h.call(this).zzDecode()[F](!1)},fixed64:function(){return b.call(this)[F](!0)},sfixed64:function(){return b.call(this)[F](!1)}})}},{15:15}],10:[function(t,e,n){"use strict";e.exports=a;var i=t(9);(a.prototype=Object.create(i.prototype)).constructor=a;var o=t(15);function a(s){i.call(this,s)}a._configure=function(){o.Buffer&&(a.prototype._slice=o.Buffer.prototype.slice)},a.prototype.string=function(){var l=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+l,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+l,this.len))},a._configure()},{15:15,9:9}],11:[function(t,e,n){"use strict";e.exports={}},{}],12:[function(t,e,n){"use strict";var i=n;i.Service=t(13)},{13:13}],13:[function(t,e,n){"use strict";e.exports=o;var i=t(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(a,s,l){if(typeof a!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=a,this.requestDelimited=!!s,this.responseDelimited=!!l}o.prototype.rpcCall=function a(s,l,r,d,m){if(!d)throw TypeError("request must be specified");var h=this;if(!m)return i.asPromise(a,h,s,l,r,d);if(!h.rpcImpl)return setTimeout(function(){m(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,l[h.requestDelimited?"encodeDelimited":"encode"](d).finish(),function(b,u){if(b)return h.emit("error",b,s),m(b);if(u===null)return h.end(!0),undefined;if(!(u instanceof r))try{u=r[h.responseDelimited?"decodeDelimited":"decode"](u)}catch(F){return h.emit("error",F,s),m(F)}return h.emit("data",u,s),m(null,u)})}catch(Z){return h.emit("error",Z,s),setTimeout(function(){m(Z)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(t,e,n){"use strict";e.exports=o;var i=t(15);function o(r,d){this.lo=r>>>0,this.hi=d>>>0}var a=o.zero=new o(0,0);a.toNumber=function(){return 0},a.zzEncode=a.zzDecode=function(){return this},a.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(d){if(d===0)return a;var m=d<0;m&&(d=-d);var h=d>>>0,Z=(d-h)/4294967296>>>0;return m&&(Z=~Z>>>0,h=~h>>>0,++h>4294967295&&(h=0,++Z>4294967295&&(Z=0))),new o(h,Z)},o.from=function(d){if(typeof d=="number")return o.fromNumber(d);if(i.isString(d))if(i.Long)d=i.Long.fromString(d);else return o.fromNumber(parseInt(d,10));return d.low||d.high?new o(d.low>>>0,d.high>>>0):a},o.prototype.toNumber=function(d){if(!d&&this.hi>>>31){var m=~this.lo+1>>>0,h=~this.hi>>>0;return m||(h=h+1>>>0),-(m+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(d){return i.Long?new i.Long(this.lo|0,this.hi|0,!!d):{low:this.lo|0,high:this.hi|0,unsigned:!!d}};var l=String.prototype.charCodeAt;o.fromHash=function(d){return d===s?a:new o((l.call(d,0)|l.call(d,1)<<8|l.call(d,2)<<16|l.call(d,3)<<24)>>>0,(l.call(d,4)|l.call(d,5)<<8|l.call(d,6)<<16|l.call(d,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var d=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^d)>>>0,this.lo=(this.lo<<1^d)>>>0,this},o.prototype.zzDecode=function(){var d=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^d)>>>0,this.hi=(this.hi>>>1^d)>>>0,this},o.prototype.length=function(){var d=this.lo,m=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?m===0?d<16384?d<128?1:2:d<2097152?3:4:m<16384?m<128?5:6:m<2097152?7:8:h<128?9:10}},{15:15}],15:[function(t,e,n){"use strict";var i=n;i.asPromise=t(1),i.base64=t(2),i.EventEmitter=t(3),i.float=t(4),i.inquire=t(5),i.utf8=t(7),i.pool=t(6),i.LongBits=t(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(l){return typeof l=="number"&&isFinite(l)&&Math.floor(l)===l},i.isString=function(l){return typeof l=="string"||l instanceof String},i.isObject=function(l){return l&&typeof l=="object"},i.isset=i.isSet=function(l,r){var d=l[r];return d!=null&&l.hasOwnProperty(r)?typeof d!="object"||(Array.isArray(d)?d.length:Object.keys(d).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(l){return typeof l=="number"?i.Buffer?i._Buffer_allocUnsafe(l):new i.Array(l):i.Buffer?i._Buffer_from(l):typeof Uint8Array>"u"?l:new Uint8Array(l)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(l){return l?i.LongBits.from(l).toHash():i.LongBits.zeroHash},i.longFromHash=function(l,r){var d=i.LongBits.fromHash(l);return i.Long?i.Long.fromBits(d.lo,d.hi,r):d.toNumber(!!r)};function o(s,l,r){for(var d=Object.keys(l),m=0;m-1;--h)if(r[m[h]]===1&&this[m[h]]!==undefined&&this[m[h]]!==null)return m[h]}},i.oneOfSetter=function(l){return function(r){for(var d=0;d127;)g[C++]=T&127|128,T>>>=7;g[C]=T}function F(T,g){this.len=T,this.next=undefined,this.val=g}F.prototype=Object.create(r.prototype),F.prototype.fn=u,h.prototype.uint32=function(g){return this.len+=(this.tail=this.tail.next=new F((g=g>>>0)<128?1:g<16384?2:g<2097152?3:g<268435456?4:5,g)).len,this},h.prototype.int32=function(g){return g<0?this._push(U,10,a.fromNumber(g)):this.uint32(g)},h.prototype.sint32=function(g){return this.uint32((g<<1^g>>31)>>>0)};function U(T,g,C){for(;T.hi;)g[C++]=T.lo&127|128,T.lo=(T.lo>>>7|T.hi<<25)>>>0,T.hi>>>=7;for(;T.lo>127;)g[C++]=T.lo&127|128,T.lo=T.lo>>>7;g[C++]=T.lo}h.prototype.uint64=function(g){var C=a.from(g);return this._push(U,C.length(),C)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(g){var C=a.from(g).zzEncode();return this._push(U,C.length(),C)},h.prototype.bool=function(g){return this._push(b,1,g?1:0)};function G(T,g,C){g[C]=T&255,g[C+1]=T>>>8&255,g[C+2]=T>>>16&255,g[C+3]=T>>>24}h.prototype.fixed32=function(g){return this._push(G,4,g>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(g){var C=a.from(g);return this._push(G,4,C.lo)._push(G,4,C.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(g){return this._push(i.float.writeFloatLE,4,g)},h.prototype.double=function(g){return this._push(i.float.writeDoubleLE,8,g)};var A=i.Array.prototype.set?function(g,C,y){C.set(g,y)}:function(g,C,y){for(var Y=0;Y>>0;if(!C)return this._push(b,1,0);if(i.isString(g)){var y=h.alloc(C=s.length(g));s.decode(g,y,0),g=y}return this.uint32(C)._push(A,C,g)},h.prototype.string=function(g){var C=l.length(g);return C?this.uint32(C)._push(l.write,C,g):this._push(b,1,0)},h.prototype.fork=function(){return this.states=new m(this),this.head=this.tail=new r(d,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(d,0,0),this.len=0),this},h.prototype.ldelim=function(){var g=this.head,C=this.tail,y=this.len;return this.reset().uint32(y),y&&(this.tail.next=g.next,this.tail=C,this.len+=y),this},h.prototype.finish=function(){for(var g=this.head.next,C=this.constructor.alloc(this.len),y=0;g;)g.fn(g.val,C,y),y+=g.len,g=g.next;return C},h._configure=function(T){o=T,h.create=Z(),o._configure()}},{15:15}],17:[function(t,e,n){"use strict";e.exports=a;var i=t(16);(a.prototype=Object.create(i.prototype)).constructor=a;var o=t(15);function a(){i.call(this)}a._configure=function(){a.alloc=o._Buffer_allocUnsafe,a.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(r,d,m){d.set(r,m)}:function(r,d,m){if(r.copy)r.copy(d,m,0,r.length);else for(var h=0;h>>0;return this.uint32(d),d&&this._push(a.writeBytesBuffer,d,r),this};function s(l,r,d){l.length<40?o.utf8.write(l,r,d):r.utf8Write?r.utf8Write(l,d):r.write(l,d)}a.prototype.string=function(r){var d=o.Buffer.byteLength(r);return this.uint32(d),d&&this._push(s,d,r),this},a._configure()},{15:15,16:16}]},{},[8])})()});var X2t=Vo((Mjo,t4)=>{var _jo=R(W());/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var t=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(m,h){h=h||{};var Z=h.encodedMaskData||h.encodedMaskData===null,b=r(m,h.inputOffset||0,Z),u=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,F=a(b,h.pixelType||Float32Array,h.encodedMaskData,u,h.returnMask),U={width:b.width,height:b.height,pixelData:F.resultPixels,minValue:F.minValue,maxValue:b.pixels.maxValue,noDataValue:u};return F.resultMask&&(U.maskData=F.resultMask),h.returnEncodedMask&&b.mask&&(U.encodedMaskData=b.mask.bitset?b.mask.bitset:null),h.returnFileInfo&&(U.fileInfo=s(b),h.computeUsedBitDepths&&(U.fileInfo.bitDepths=l(b))),U};var a=function(m,h,Z,b,u){var F=0,U=m.pixels.numBlocksX,G=m.pixels.numBlocksY,A=Math.floor(m.width/U),T=Math.floor(m.height/G),g=2*m.maxZError,C=Number.MAX_VALUE,y;Z=Z||(m.mask?m.mask.bitset:null);var Y,Q;Y=new h(m.width*m.height),u&&Z&&(Q=new Uint8Array(m.width*m.height));for(var J=new Float32Array(A*T),M,V,E=0;E<=G;E++){var I=E!==G?T:m.height%G;if(I!==0)for(var B=0;B<=U;B++){var X=B!==U?A:m.width%U;if(X!==0){var _=E*m.width*T+B*A,P=m.width-X,w=m.pixels.blocks[F],z,H,nt;w.encoding<2?(w.encoding===0?z=w.rawData:(d(w.stuffedData,w.bitsPerPixel,w.numValidPixels,w.offset,g,J,m.pixels.maxValue),z=J),H=0):w.encoding===2?nt=0:nt=w.offset;var $;if(Z)for(V=0;V>3],$<<=_&7),M=0;M>3]),$&128?(Q&&(Q[_]=1),y=w.encoding<2?z[H++]:nt,C=C>y?y:C,Y[_++]=y):(Q&&(Q[_]=0),Y[_++]=b),$<<=1;_+=P}else if(w.encoding<2)for(V=0;Vy?y:C,Y[_++]=y;_+=P}else for(C=C>nt?nt:C,V=0;V0){var U=new Uint8Array(Math.ceil(b.width*b.height/8));F=new DataView(m,h,b.mask.numBytes);var G=F.getInt16(0,!0),A=2,T=0;do{if(G>0)for(;G--;)U[T++]=F.getUint8(A++);else{var g=F.getUint8(A++);for(G=-G;G--;)U[T++]=g}G=F.getInt16(A,!0),A+=2}while(A0?1:0),Q=y+(b.height%y>0?1:0);b.pixels.blocks=new Array(Y*Q);for(var J=0,M=0;M3)throw"Invalid block encoding ("+B.encoding+")";if(B.encoding===2){h++;continue}if(X!==0&&X!==2){if(X>>=6,B.offsetType=X,X===2)B.offset=F.getInt8(1),E++;else if(X===1)B.offset=F.getInt16(1,!0),E+=2;else if(X===0)B.offset=F.getFloat32(1,!0),E+=4;else throw"Invalid block offset type";if(B.encoding===1)if(X=F.getUint8(E),E++,B.bitsPerPixel=X&63,X>>=6,B.numValidPixelsType=X,X===2)B.numValidPixels=F.getUint8(E),E++;else if(X===1)B.numValidPixels=F.getUint16(E,!0),E+=2;else if(X===0)B.numValidPixels=F.getUint32(E,!0),E+=4;else throw"Invalid valid pixel count type"}if(h+=E,B.encoding!==3){var _,P;if(B.encoding===0){var w=(b.pixels.numBytes-1)/4;if(w!==Math.floor(w))throw"uncompressed block has invalid length";_=new ArrayBuffer(w*4),P=new Uint8Array(_),P.set(new Uint8Array(m,h,w*4));var z=new Float32Array(_);B.rawData=z,h+=w*4}else if(B.encoding===1){var H=Math.ceil(B.numValidPixels*B.bitsPerPixel/8),nt=Math.ceil(H/4);_=new ArrayBuffer(nt*4),P=new Uint8Array(_),P.set(new Uint8Array(m,h,H)),B.stuffedData=new Uint32Array(_),h+=H}}}return b.eofOffset=h,b},d=function(m,h,Z,b,u,F,U){var G=(1<=h)C=y>>>g-h&G,g-=h;else{var J=h-g;C=(y&G)<>>g}F[T]=C=m?(g=C>>>T-m&U,T-=m):(y=m-T,g=(C&U)<>>T),d[A]=Z[g];else for(Y=Math.ceil((F-b)/u),A=0;A=m?(g=C>>>T-m&U,T-=m):(y=m-T,g=(C&U)<>>T),d[A]=g=d?(T=g>>>A-d&u,A-=d):(G=d-A,T=(g&u)<>>A),C[U]=T=m?(C=y>>>g&U,T-=m,g+=m):(Y=m-T,C=y>>>g&U,y=r[G++],T=32-Y,C|=(y&(1<=m?(C=y>>>g&U,T-=m,g+=m):(Y=m-T,C=y>>>g&U,y=r[G++],T=32-Y,C|=(y&(1<=d?(T=C>>>g&u,A-=d,g+=d):(G=d-A,T=C>>>g&u,C=r[F++],A=32-G,T|=(C&(1<=m?(U=G>>>F-m&Z,F-=m):(A=m-F,U=(G&Z)<>>F),d[u]=U;return d},originalUnstuff2:function(r,d,m,h){var Z=(1<=m?(G=A>>>U&Z,F-=m,U+=m):(T=m-F,G=A>>>U&Z,A=r[b++],F=32-T,G|=(A&(1<=359?359:Z;Z-=u;do d+=r[b++]<<8,m+=d+=r[b++];while(--u);d=(d&65535)+(d>>>16),m=(m&65535)+(m>>>16)}return h&1&&(m+=d+=r[b]<<8),d=(d&65535)+(d>>>16),m=(m&65535)+(m>>>16),(m<<16|d)>>>0},readHeaderInfo:function(r,d){var m=d.ptr,h=new Uint8Array(r,m,6),Z={};if(Z.fileIdentifierString=String.fromCharCode.apply(null,h),Z.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+Z.fileIdentifierString;m+=6;var b=new DataView(r,m,8),u=b.getInt32(0,!0);Z.fileVersion=u,m+=4,u>=3&&(Z.checksum=b.getUint32(4,!0),m+=4),b=new DataView(r,m,12),Z.height=b.getUint32(0,!0),Z.width=b.getUint32(4,!0),m+=8,u>=4?(Z.numDims=b.getUint32(8,!0),m+=4):Z.numDims=1,b=new DataView(r,m,40),Z.numValidPixel=b.getUint32(0,!0),Z.microBlockSize=b.getInt32(4,!0),Z.blobSize=b.getInt32(8,!0),Z.imageType=b.getInt32(12,!0),Z.maxZError=b.getFloat64(16,!0),Z.zMin=b.getFloat64(24,!0),Z.zMax=b.getFloat64(32,!0),m+=40,d.headerInfo=Z,d.ptr=m;var F,U;if(u>=3&&(U=u>=4?52:48,F=this.computeChecksumFletcher32(new Uint8Array(r,m-U,Z.blobSize-14)),F!==Z.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(r,d){var m=d.headerInfo,h=this.getDataTypeArray(m.imageType),Z=m.numDims*this.getDataTypeSize(m.imageType),b=this.readSubArray(r,d.ptr,h,Z),u=this.readSubArray(r,d.ptr+Z,h,Z);d.ptr+=2*Z;var F,U=!0;for(F=0;F0){U=new Uint8Array(Math.ceil(Z/8)),u=new DataView(r,m,F.numBytes);var A=u.getInt16(0,!0),T=2,g=0,C=0;do{if(A>0)for(;A--;)U[g++]=u.getUint8(T++);else for(C=u.getUint8(T++),A=-A;A--;)U[g++]=C;A=u.getInt16(T,!0),T+=2}while(T>3],y<<=Y&7):y=U[Y>>3],y&128&&(G[Y]=1);d.pixels.resultMask=G,F.bitset=U,m+=F.numBytes}return d.ptr=m,d.mask=F,!0},readDataOneSweep:function(r,d,m){var h=d.ptr,Z=d.headerInfo,b=Z.numDims,u=Z.width*Z.height,F=Z.imageType,U=Z.numValidPixel*a.getDataTypeSize(F)*b,G,A=d.pixels.resultMask;if(m===Uint8Array)G=new Uint8Array(r,h,U);else{var T=new ArrayBuffer(U),g=new Uint8Array(T);g.set(new Uint8Array(r,h,U)),G=new m(T)}if(G.length===u*b)d.pixels.resultPixels=G;else{d.pixels.resultPixels=new m(u*b);var C=0,y=0,Y=0,Q=0;if(b>1)for(Y=0;Y=F)return!1;var U=new Uint32Array(F-u);a.decodeBits(r,d,U);var G=[],A,T,g,C;for(A=u;A0&&(G[T].second=E<>>32-C,32-V>=C?(V+=C,V===32&&(V=0,I++,E=M[I])):(V+=C-32,I++,E=M[I],G[T].second|=E>>>32-V));var B=0,X=0,_=new s;for(A=0;A=m?X=m:X=B,B>=30&&console.log("WARning, large NUM LUT BITS IS "+B);var P=[],w,z,H,nt,$,dt;for(A=u;A0)if(w=[C,T],C<=X)for(z=G[T].second<=0;nt--)$=z>>>nt&1,$?(dt.right||(dt.right=new s),dt=dt.right):(dt.left||(dt.left=new s),dt=dt.left),nt===0&&!dt.val&&(dt.val=w[1]);return{decodeLut:P,numBitsLUTQick:X,numBitsLUT:B,tree:_,stuffedData:M,srcPtr:I,bitPos:V}},readHuffman:function(r,d,m){var h=d.headerInfo,Z=h.numDims,b=d.headerInfo.height,u=d.headerInfo.width,F=u*b,U=this.readHuffmanTree(r,d),G=U.decodeLut,A=U.tree,T=U.stuffedData,g=U.srcPtr,C=U.bitPos,y=U.numBitsLUTQick,Y=U.numBitsLUT,Q=d.headerInfo.imageType===0?128:0,J,M,V,E=d.pixels.resultMask,I,B,X,_,P,w,z,H=0;C>0&&(g++,C=0);var nt=T[g],$=d.encodeMode===1,dt=new m(F*Z),q=dt,at;for(at=0;at1&&(q=new m(dt.buffer,F*at,F),H=0),d.headerInfo.numValidPixel===u*b)for(w=0,_=0;_>>32-y,B=I,32-C>>64-C-y,B=I),G[B])M=G[B][1],C+=G[B][0];else for(I=nt<>>32-Y,B=I,32-C>>64-C-Y,B=I),J=A,z=0;z>>Y-z-1&1,J=X?J.right:J.left,!(J.left||J.right)){M=J.val,C=C+z+1;break}C>=32&&(C-=32,g++,nt=T[g]),V=M-Q,$?(P>0?V+=H:_>0?V+=q[w-u]:V+=H,V&=255,q[w]=V,H=V):q[w]=V}else for(w=0,_=0;_>>32-y,B=I,32-C>>64-C-y,B=I),G[B])M=G[B][1],C+=G[B][0];else for(I=nt<>>32-Y,B=I,32-C>>64-C-Y,B=I),J=A,z=0;z>>Y-z-1&1,J=X?J.right:J.left,!(J.left||J.right)){M=J.val,C=C+z+1;break}C>=32&&(C-=32,g++,nt=T[g]),V=M-Q,$?(P>0&&E[w-1]?V+=H:_>0&&E[w-u]?V+=q[w-u]:V+=H,V&=255,q[w]=V,H=V):q[w]=V}d.ptr=d.ptr+(g+1)*4+(C>0?4:0)}d.pixels.resultPixels=dt},decodeBits:function(r,d,m,h,Z){{var b=d.headerInfo,u=b.fileVersion,F=0,U=new DataView(r,d.ptr,5),G=U.getUint8(0);F++;var A=G>>6,T=A===0?4:3-A,g=(G&32)>0,C=G&31,y=0;if(T===1)y=U.getUint8(F),F++;else if(T===2)y=U.getUint16(F,!0),F+=2;else if(T===4)y=U.getUint32(F,!0),F+=4;else throw"Invalid valid pixel count type";var Y=2*b.maxZError,Q,J,M,V,E,I,B,X,_,P,w=b.numDims>1?b.maxValues[Z]:b.zMax;if(g){for(d.counter.lut++,X=U.getUint8(F),_=C,F++,V=Math.ceil((X-1)*C/8),E=Math.ceil(V/4),J=new ArrayBuffer(E*4),M=new Uint8Array(J),d.ptr+=F,M.set(new Uint8Array(r,d.ptr,V)),B=new Uint32Array(J),d.ptr+=V,P=0;X-1>>>P;)P++;V=Math.ceil(y*P/8),E=Math.ceil(V/4),J=new ArrayBuffer(E*4),M=new Uint8Array(J),M.set(new Uint8Array(r,d.ptr,V)),Q=new Uint32Array(J),d.ptr+=V,u>=3?I=o.unstuffLUT2(B,C,X-1,h,Y,w):I=o.unstuffLUT(B,C,X-1,h,Y,w),u>=3?o.unstuff2(Q,m,P,y,I):o.unstuff(Q,m,P,y,I)}else d.counter.bitstuffer++,P=C,d.ptr+=F,P>0&&(V=Math.ceil(y*P/8),E=Math.ceil(V/4),J=new ArrayBuffer(E*4),M=new Uint8Array(J),M.set(new Uint8Array(r,d.ptr,V)),Q=new Uint32Array(J),d.ptr+=V,u>=3?h==null?o.originalUnstuff2(Q,m,P,y):o.unstuff2(Q,m,P,y,!1,h,Y,w):h==null?o.originalUnstuff(Q,m,P,y):o.unstuff(Q,m,P,y,!1,h,Y,w))}},readTiles:function(r,d,m){var h=d.headerInfo,Z=h.width,b=h.height,u=h.microBlockSize,F=h.imageType,U=a.getDataTypeSize(F),G=Math.ceil(Z/u),A=Math.ceil(b/u);d.pixels.numBlocksY=A,d.pixels.numBlocksX=G,d.pixels.ptr=0;var T=0,g=0,C=0,y=0,Y=0,Q=0,J=0,M=0,V=0,E=0,I=0,B=0,X=0,_=0,P=0,w=0,z,H,nt,$,dt,q,at=new m(u*u),st=b%u||u,Et=Z%u||u,Qt,Wt,Nt=h.numDims,kt,Mt=d.pixels.resultMask,qt=d.pixels.resultPixels;for(C=0;C1&&(qt=new m(d.pixels.resultPixels.buffer,Z*b*kt*U,Z*b)),J=r.byteLength-d.ptr,z=new DataView(r,d.ptr,Math.min(10,J)),H={},w=0,M=z.getUint8(0),w++,V=M>>6&255,E=M>>2&15,E!==(y*u>>3&15))throw"integrity issue";if(q=M&3,q>3)throw d.ptr+=w,"Invalid block encoding ("+q+")";if(q===2){d.counter.constant++,d.ptr+=w;continue}else if(q===0){if(d.counter.uncompressed++,d.ptr+=w,X=Y*Q*U,_=r.byteLength-d.ptr,X=X<_?X:_,nt=new ArrayBuffer(X%U===0?X:X+U-X%U),$=new Uint8Array(nt),$.set(new Uint8Array(r,d.ptr,X)),dt=new m(nt),P=0,Mt)for(T=0;T1)for(b=0;b=-128&&d<=127;break;case 1:m=d>=0&&d<=255;break;case 2:m=d>=-32768&&d<=32767;break;case 3:m=d>=0&&d<=65536;break;case 4:m=d>=-2147483648&&d<=2147483647;break;case 5:m=d>=0&&d<=4294967296;break;case 6:m=d>=-34027999387901484e22&&d<=34027999387901484e22;break;case 7:m=d>=5e-324&&d<=17976931348623157e292;break;default:m=!1}return m},getDataTypeSize:function(r){var d=0;switch(r){case 0:case 1:d=1;break;case 2:case 3:d=2;break;case 4:case 5:case 6:d=4;break;case 7:d=8;break;default:d=r}return d},getDataTypeUsed:function(r,d){var m=r;switch(r){case 2:case 4:m=r-d;break;case 3:case 5:m=r-2*d;break;case 6:d===0?m=r:d===1?m=2:m=1;break;case 7:d===0?m=r:m=r-2*d+1;break;default:m=r;break}return m},getOnePixel:function(r,d,m,h){var Z=0;switch(m){case 0:Z=h.getInt8(d);break;case 1:Z=h.getUint8(d);break;case 2:Z=h.getInt16(d,!0);break;case 3:Z=h.getUint16(d,!0);break;case 4:Z=h.getInt32(d,!0);break;case 5:Z=h.getUInt32(d,!0);break;case 6:Z=h.getFloat32(d,!0);break;case 7:Z=h.getFloat64(d,!0);break;default:throw"the decoder does not understand this pixel type"}return Z}},s=function(r,d,m){this.val=r,this.left=d,this.right=m},l={decode:function(r,d){d=d||{};var m=d.noDataValue,h=0,Z={};if(Z.ptr=d.inputOffset||0,Z.pixels={},!!a.readHeaderInfo(r,Z)){var b=Z.headerInfo,u=b.fileVersion,F=a.getDataTypeArray(b.imageType);a.readMask(r,Z),b.numValidPixel!==b.width*b.height&&!Z.pixels.resultMask&&(Z.pixels.resultMask=d.maskData);var U=b.width*b.height;if(Z.pixels.resultPixels=new F(U*b.numDims),Z.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},b.numValidPixel!==0)if(b.zMax===b.zMin)a.constructConstantSurface(Z);else if(u>=4&&a.checkMinMaxRanges(r,Z))a.constructConstantSurface(Z);else{var G=new DataView(r,Z.ptr,2),A=G.getUint8(0);if(Z.ptr++,A)a.readDataOneSweep(r,Z,F);else if(u>1&&b.imageType<=1&&Math.abs(b.maxZError-.5)<1e-5){var T=G.getUint8(1);if(Z.ptr++,Z.encodeMode=T,T>2||u<4&&T>1)throw"Invalid Huffman flag "+T;T?a.readHuffman(r,Z,F):a.readTiles(r,Z,F)}else a.readTiles(r,Z,F)}Z.eofOffset=Z.ptr;var g;d.inputOffset?(g=Z.headerInfo.blobSize+d.inputOffset-Z.ptr,Math.abs(g)>=1&&(Z.eofOffset=d.inputOffset+Z.headerInfo.blobSize)):(g=Z.headerInfo.blobSize-Z.ptr,Math.abs(g)>=1&&(Z.eofOffset=Z.headerInfo.blobSize));var C={width:b.width,height:b.height,pixelData:Z.pixels.resultPixels,minValue:b.zMin,maxValue:b.zMax,validPixelCount:b.numValidPixel,dimCount:b.numDims,dimStats:{minValues:b.minValues,maxValues:b.maxValues},maskData:Z.pixels.resultMask};if(Z.pixels.resultMask&&a.isValidPixelValue(b.imageType,m)){var y=Z.pixels.resultMask;for(h=0;h1&&A.fileInfo.mask&&A.fileInfo.mask.numBytes>0&&u.push(A.maskData),h++,G.pixels.push(A.pixelData),G.statistics.push({minValue:A.minValue,maxValue:A.maxValue,noDataValue:A.noDataValue,dimStats:A.dimStats})}var T,g,C;if(m>1&&u.length>1){for(C=G.width*G.height,G.bandMasks=u,U=new Uint8Array(C),U.set(u[0]),T=1;T{var $Ga=R(W());kkt.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}});var Xkt=Vo((tAa,xkt)=>{var eAa=R(W()),{webm:lDe,mp4:rDe}=Ykt(),Drt=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,Ort=()=>"wakeLock"in navigator,Hrt=class{constructor(){if(this.enabled=!1,Ort()){this._wakeLock=null;let e=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else Drt()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",lDe),this._addSourceToVideo(this.noSleepVideo,"mp4",rDe),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(e,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){return Ort()?navigator.wakeLock.request("screen").then(e=>{this._wakeLock=e,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(e=>{throw this.enabled=!1,console.error(`${e.name}, ${e.message}`),e}):Drt()?(this.disable(),console.warn(` + */(function(undefined){"use strict";(function(e,n,i){function o(s){var l=n[s];return l||e[s][0].call(l=n[s]={exports:{}},o,l,l.exports),l.exports}var a=o(i[0]);a.util.global.protobuf=a,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(a.util.Long=s,a.configure()),a}),typeof module=="object"&&module&&module.exports&&(module.exports=a)})({1:[function(t,e,n){"use strict";e.exports=i;function i(o,a){for(var s=new Array(arguments.length-1),l=0,r=2,d=!0;r1&&d.charAt(m)==="=";)++h;return Math.ceil(d.length*3)/4-h};for(var o=new Array(64),a=new Array(123),s=0;s<64;)a[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(d,m,h){for(var u=null,R=[],V=0,F=0,U;m>2],U=(G&3)<<4,F=1;break;case 1:R[V++]=o[U|G>>4],U=(G&15)<<2,F=2;break;case 2:R[V++]=o[U|G>>6],R[V++]=o[G&63],F=0;break}V>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,R)),V=0)}return F&&(R[V++]=o[U],R[V++]=61,F===1&&(R[V++]=61)),u?(V&&u.push(String.fromCharCode.apply(String,R.slice(0,V))),u.join("")):String.fromCharCode.apply(String,R.slice(0,V))};var l="invalid encoding";i.decode=function(d,m,h){for(var u=h,R=0,V,F=0;F1)break;if((U=a[U])===undefined)throw Error(l);switch(R){case 0:V=U,R=1;break;case 1:m[h++]=V<<2|(U&48)>>4,V=U,R=2;break;case 2:m[h++]=(V&15)<<4|(U&60)>>2,V=U,R=3;break;case 3:m[h++]=(V&3)<<6|U,R=0;break}}if(R===1)throw Error(l);return h-u},i.test=function(d){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(d)}},{}],3:[function(t,e,n){"use strict";e.exports=i;function i(){this._listeners={}}i.prototype.on=function(a,s,l){return(this._listeners[a]||(this._listeners[a]=[])).push({fn:s,ctx:l||this}),this},i.prototype.off=function(a,s){if(a===undefined)this._listeners={};else if(s===undefined)this._listeners[a]=[];else for(var l=this._listeners[a],r=0;r0?0:2147483648,R,V);else if(isNaN(u))h(2143289344,R,V);else if(u>34028234663852886e22)h((F<<31|2139095040)>>>0,R,V);else if(u<11754943508222875e-54)h((F<<31|Math.round(u/1401298464324817e-60))>>>0,R,V);else{var U=Math.floor(Math.log(u)/Math.LN2),G=Math.round(u*Math.pow(2,-U)*8388608)&8388607;h((F<<31|U+127<<23|G)>>>0,R,V)}}r.writeFloatLE=d.bind(null,o),r.writeFloatBE=d.bind(null,a);function m(h,u,R){var V=h(u,R),F=(V>>31)*2+1,U=V>>>23&255,G=V&8388607;return U===255?G?NaN:F*(1/0):U===0?F*1401298464324817e-60*G:F*Math.pow(2,U-150)*(G+8388608)}r.readFloatLE=m.bind(null,s),r.readFloatBE=m.bind(null,l)}(),typeof Float64Array<"u"?function(){var d=new Float64Array([-0]),m=new Uint8Array(d.buffer),h=m[7]===128;function u(U,G,A){d[0]=U,G[A]=m[0],G[A+1]=m[1],G[A+2]=m[2],G[A+3]=m[3],G[A+4]=m[4],G[A+5]=m[5],G[A+6]=m[6],G[A+7]=m[7]}function R(U,G,A){d[0]=U,G[A]=m[7],G[A+1]=m[6],G[A+2]=m[5],G[A+3]=m[4],G[A+4]=m[3],G[A+5]=m[2],G[A+6]=m[1],G[A+7]=m[0]}r.writeDoubleLE=h?u:R,r.writeDoubleBE=h?R:u;function V(U,G){return m[0]=U[G],m[1]=U[G+1],m[2]=U[G+2],m[3]=U[G+3],m[4]=U[G+4],m[5]=U[G+5],m[6]=U[G+6],m[7]=U[G+7],d[0]}function F(U,G){return m[7]=U[G],m[6]=U[G+1],m[5]=U[G+2],m[4]=U[G+3],m[3]=U[G+4],m[2]=U[G+5],m[1]=U[G+6],m[0]=U[G+7],d[0]}r.readDoubleLE=h?V:F,r.readDoubleBE=h?F:V}():function(){function d(h,u,R,V,F,U){var G=V<0?1:0;if(G&&(V=-V),V===0)h(0,F,U+u),h(1/V>0?0:2147483648,F,U+R);else if(isNaN(V))h(0,F,U+u),h(2146959360,F,U+R);else if(V>17976931348623157e292)h(0,F,U+u),h((G<<31|2146435072)>>>0,F,U+R);else{var A;if(V<22250738585072014e-324)A=V/5e-324,h(A>>>0,F,U+u),h((G<<31|A/4294967296)>>>0,F,U+R);else{var S=Math.floor(Math.log(V)/Math.LN2);S===1024&&(S=1023),A=V*Math.pow(2,-S),h(A*4503599627370496>>>0,F,U+u),h((G<<31|S+1023<<20|A*1048576&1048575)>>>0,F,U+R)}}}r.writeDoubleLE=d.bind(null,o,0,4),r.writeDoubleBE=d.bind(null,a,4,0);function m(h,u,R,V,F){var U=h(V,F+u),G=h(V,F+R),A=(G>>31)*2+1,S=G>>>20&2047,g=4294967296*(G&1048575)+U;return S===2047?g?NaN:A*(1/0):S===0?A*5e-324*g:A*Math.pow(2,S-1075)*(g+4503599627370496)}r.readDoubleLE=m.bind(null,s,0,4),r.readDoubleBE=m.bind(null,l,4,0)}(),r}function o(r,d,m){d[m]=r&255,d[m+1]=r>>>8&255,d[m+2]=r>>>16&255,d[m+3]=r>>>24}function a(r,d,m){d[m]=r>>>24,d[m+1]=r>>>16&255,d[m+2]=r>>>8&255,d[m+3]=r&255}function s(r,d){return(r[d]|r[d+1]<<8|r[d+2]<<16|r[d+3]<<24)>>>0}function l(r,d){return(r[d]<<24|r[d+1]<<16|r[d+2]<<8|r[d+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(t){}return null}},{}],6:[function(t,e,n){"use strict";e.exports=i;function i(o,a,s){var l=s||8192,r=l>>>1,d=null,m=l;return function(u){if(u<1||u>r)return o(u);m+u>l&&(d=o(l),m=0);var R=a.call(d,m,m+=u);return m&7&&(m=(m|7)+1),R}}},{}],7:[function(t,e,n){"use strict";var i=n;i.length=function(a){for(var s=0,l=0,r=0;r191&&u<224?m[h++]=(u&31)<<6|a[s++]&63:u>239&&u<365?(u=((u&7)<<18|(a[s++]&63)<<12|(a[s++]&63)<<6|a[s++]&63)-65536,m[h++]=55296+(u>>10),m[h++]=56320+(u&1023)):m[h++]=(u&15)<<12|(a[s++]&63)<<6|a[s++]&63,h>8191&&((d||(d=[])).push(String.fromCharCode.apply(String,m)),h=0);return d?(h&&d.push(String.fromCharCode.apply(String,m.slice(0,h))),d.join("")):String.fromCharCode.apply(String,m.slice(0,h))},i.write=function(a,s,l){for(var r=l,d,m,h=0;h>6|192,s[l++]=d&63|128):(d&64512)===55296&&((m=a.charCodeAt(h+1))&64512)===56320?(d=65536+((d&1023)<<10)+(m&1023),++h,s[l++]=d>>18|240,s[l++]=d>>12&63|128,s[l++]=d>>6&63|128,s[l++]=d&63|128):(s[l++]=d>>12|224,s[l++]=d>>6&63|128,s[l++]=d&63|128);return l-r}},{}],8:[function(t,e,n){"use strict";var i=n;i.build="minimal",i.Writer=t(16),i.BufferWriter=t(17),i.Reader=t(9),i.BufferReader=t(10),i.util=t(15),i.rpc=t(12),i.roots=t(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(t,e,n){"use strict";e.exports=r;var i=t(15),o,a=i.LongBits,s=i.utf8;function l(V,F){return RangeError("index out of range: "+V.pos+" + "+(F||1)+" > "+V.len)}function r(V){this.buf=V,this.pos=0,this.len=V.length}var d=typeof Uint8Array<"u"?function(F){if(F instanceof Uint8Array||Array.isArray(F))return new r(F);throw Error("illegal buffer")}:function(F){if(Array.isArray(F))return new r(F);throw Error("illegal buffer")},m=function(){return i.Buffer?function(U){return(r.create=function(A){return i.Buffer.isBuffer(A)?new o(A):d(A)})(U)}:d};r.create=m(),r.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,r.prototype.uint32=function(){var F=4294967295;return function(){if(F=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(F=(F|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(F=(F|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(F=(F|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(F=(F|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return F;if((this.pos+=5)>this.len)throw this.pos=this.len,l(this,10);return F}}(),r.prototype.int32=function(){return this.uint32()|0},r.prototype.sint32=function(){var F=this.uint32();return F>>>1^-(F&1)|0};function h(){var V=new a(0,0),F=0;if(this.len-this.pos>4){for(;F<4;++F)if(V.lo=(V.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return V;if(V.lo=(V.lo|(this.buf[this.pos]&127)<<28)>>>0,V.hi=(V.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return V;F=0}else{for(;F<3;++F){if(this.pos>=this.len)throw l(this);if(V.lo=(V.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return V}return V.lo=(V.lo|(this.buf[this.pos++]&127)<>>0,V}if(this.len-this.pos>4){for(;F<5;++F)if(V.hi=(V.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return V}else for(;F<5;++F){if(this.pos>=this.len)throw l(this);if(V.hi=(V.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return V}throw Error("invalid varint encoding")}r.prototype.bool=function(){return this.uint32()!==0};function u(V,F){return(V[F-4]|V[F-3]<<8|V[F-2]<<16|V[F-1]<<24)>>>0}r.prototype.fixed32=function(){if(this.pos+4>this.len)throw l(this,4);return u(this.buf,this.pos+=4)},r.prototype.sfixed32=function(){if(this.pos+4>this.len)throw l(this,4);return u(this.buf,this.pos+=4)|0};function R(){if(this.pos+8>this.len)throw l(this,8);return new a(u(this.buf,this.pos+=4),u(this.buf,this.pos+=4))}r.prototype.float=function(){if(this.pos+4>this.len)throw l(this,4);var F=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,F},r.prototype.double=function(){if(this.pos+8>this.len)throw l(this,4);var F=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,F},r.prototype.bytes=function(){var F=this.uint32(),U=this.pos,G=this.pos+F;if(G>this.len)throw l(this,F);if(this.pos+=F,Array.isArray(this.buf))return this.buf.slice(U,G);if(U===G){var A=i.Buffer;return A?A.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,U,G)},r.prototype.string=function(){var F=this.bytes();return s.read(F,0,F.length)},r.prototype.skip=function(F){if(typeof F=="number"){if(this.pos+F>this.len)throw l(this,F);this.pos+=F}else do if(this.pos>=this.len)throw l(this);while(this.buf[this.pos++]&128);return this},r.prototype.skipType=function(V){switch(V){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(V=this.uint32()&7)!==4;)this.skipType(V);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+V+" at offset "+this.pos)}return this},r._configure=function(V){o=V,r.create=m(),o._configure();var F=i.Long?"toLong":"toNumber";i.merge(r.prototype,{int64:function(){return h.call(this)[F](!1)},uint64:function(){return h.call(this)[F](!0)},sint64:function(){return h.call(this).zzDecode()[F](!1)},fixed64:function(){return R.call(this)[F](!0)},sfixed64:function(){return R.call(this)[F](!1)}})}},{15:15}],10:[function(t,e,n){"use strict";e.exports=a;var i=t(9);(a.prototype=Object.create(i.prototype)).constructor=a;var o=t(15);function a(s){i.call(this,s)}a._configure=function(){o.Buffer&&(a.prototype._slice=o.Buffer.prototype.slice)},a.prototype.string=function(){var l=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+l,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+l,this.len))},a._configure()},{15:15,9:9}],11:[function(t,e,n){"use strict";e.exports={}},{}],12:[function(t,e,n){"use strict";var i=n;i.Service=t(13)},{13:13}],13:[function(t,e,n){"use strict";e.exports=o;var i=t(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(a,s,l){if(typeof a!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=a,this.requestDelimited=!!s,this.responseDelimited=!!l}o.prototype.rpcCall=function a(s,l,r,d,m){if(!d)throw TypeError("request must be specified");var h=this;if(!m)return i.asPromise(a,h,s,l,r,d);if(!h.rpcImpl)return setTimeout(function(){m(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,l[h.requestDelimited?"encodeDelimited":"encode"](d).finish(),function(R,V){if(R)return h.emit("error",R,s),m(R);if(V===null)return h.end(!0),undefined;if(!(V instanceof r))try{V=r[h.responseDelimited?"decodeDelimited":"decode"](V)}catch(F){return h.emit("error",F,s),m(F)}return h.emit("data",V,s),m(null,V)})}catch(u){return h.emit("error",u,s),setTimeout(function(){m(u)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(t,e,n){"use strict";e.exports=o;var i=t(15);function o(r,d){this.lo=r>>>0,this.hi=d>>>0}var a=o.zero=new o(0,0);a.toNumber=function(){return 0},a.zzEncode=a.zzDecode=function(){return this},a.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(d){if(d===0)return a;var m=d<0;m&&(d=-d);var h=d>>>0,u=(d-h)/4294967296>>>0;return m&&(u=~u>>>0,h=~h>>>0,++h>4294967295&&(h=0,++u>4294967295&&(u=0))),new o(h,u)},o.from=function(d){if(typeof d=="number")return o.fromNumber(d);if(i.isString(d))if(i.Long)d=i.Long.fromString(d);else return o.fromNumber(parseInt(d,10));return d.low||d.high?new o(d.low>>>0,d.high>>>0):a},o.prototype.toNumber=function(d){if(!d&&this.hi>>>31){var m=~this.lo+1>>>0,h=~this.hi>>>0;return m||(h=h+1>>>0),-(m+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(d){return i.Long?new i.Long(this.lo|0,this.hi|0,!!d):{low:this.lo|0,high:this.hi|0,unsigned:!!d}};var l=String.prototype.charCodeAt;o.fromHash=function(d){return d===s?a:new o((l.call(d,0)|l.call(d,1)<<8|l.call(d,2)<<16|l.call(d,3)<<24)>>>0,(l.call(d,4)|l.call(d,5)<<8|l.call(d,6)<<16|l.call(d,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var d=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^d)>>>0,this.lo=(this.lo<<1^d)>>>0,this},o.prototype.zzDecode=function(){var d=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^d)>>>0,this.hi=(this.hi>>>1^d)>>>0,this},o.prototype.length=function(){var d=this.lo,m=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?m===0?d<16384?d<128?1:2:d<2097152?3:4:m<16384?m<128?5:6:m<2097152?7:8:h<128?9:10}},{15:15}],15:[function(t,e,n){"use strict";var i=n;i.asPromise=t(1),i.base64=t(2),i.EventEmitter=t(3),i.float=t(4),i.inquire=t(5),i.utf8=t(7),i.pool=t(6),i.LongBits=t(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(l){return typeof l=="number"&&isFinite(l)&&Math.floor(l)===l},i.isString=function(l){return typeof l=="string"||l instanceof String},i.isObject=function(l){return l&&typeof l=="object"},i.isset=i.isSet=function(l,r){var d=l[r];return d!=null&&l.hasOwnProperty(r)?typeof d!="object"||(Array.isArray(d)?d.length:Object.keys(d).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(l){return typeof l=="number"?i.Buffer?i._Buffer_allocUnsafe(l):new i.Array(l):i.Buffer?i._Buffer_from(l):typeof Uint8Array>"u"?l:new Uint8Array(l)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(l){return l?i.LongBits.from(l).toHash():i.LongBits.zeroHash},i.longFromHash=function(l,r){var d=i.LongBits.fromHash(l);return i.Long?i.Long.fromBits(d.lo,d.hi,r):d.toNumber(!!r)};function o(s,l,r){for(var d=Object.keys(l),m=0;m-1;--h)if(r[m[h]]===1&&this[m[h]]!==undefined&&this[m[h]]!==null)return m[h]}},i.oneOfSetter=function(l){return function(r){for(var d=0;d127;)g[C++]=S&127|128,S>>>=7;g[C]=S}function F(S,g){this.len=S,this.next=undefined,this.val=g}F.prototype=Object.create(r.prototype),F.prototype.fn=V,h.prototype.uint32=function(g){return this.len+=(this.tail=this.tail.next=new F((g=g>>>0)<128?1:g<16384?2:g<2097152?3:g<268435456?4:5,g)).len,this},h.prototype.int32=function(g){return g<0?this._push(U,10,a.fromNumber(g)):this.uint32(g)},h.prototype.sint32=function(g){return this.uint32((g<<1^g>>31)>>>0)};function U(S,g,C){for(;S.hi;)g[C++]=S.lo&127|128,S.lo=(S.lo>>>7|S.hi<<25)>>>0,S.hi>>>=7;for(;S.lo>127;)g[C++]=S.lo&127|128,S.lo=S.lo>>>7;g[C++]=S.lo}h.prototype.uint64=function(g){var C=a.from(g);return this._push(U,C.length(),C)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(g){var C=a.from(g).zzEncode();return this._push(U,C.length(),C)},h.prototype.bool=function(g){return this._push(R,1,g?1:0)};function G(S,g,C){g[C]=S&255,g[C+1]=S>>>8&255,g[C+2]=S>>>16&255,g[C+3]=S>>>24}h.prototype.fixed32=function(g){return this._push(G,4,g>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(g){var C=a.from(g);return this._push(G,4,C.lo)._push(G,4,C.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(g){return this._push(i.float.writeFloatLE,4,g)},h.prototype.double=function(g){return this._push(i.float.writeDoubleLE,8,g)};var A=i.Array.prototype.set?function(g,C,y){C.set(g,y)}:function(g,C,y){for(var Y=0;Y>>0;if(!C)return this._push(R,1,0);if(i.isString(g)){var y=h.alloc(C=s.length(g));s.decode(g,y,0),g=y}return this.uint32(C)._push(A,C,g)},h.prototype.string=function(g){var C=l.length(g);return C?this.uint32(C)._push(l.write,C,g):this._push(R,1,0)},h.prototype.fork=function(){return this.states=new m(this),this.head=this.tail=new r(d,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(d,0,0),this.len=0),this},h.prototype.ldelim=function(){var g=this.head,C=this.tail,y=this.len;return this.reset().uint32(y),y&&(this.tail.next=g.next,this.tail=C,this.len+=y),this},h.prototype.finish=function(){for(var g=this.head.next,C=this.constructor.alloc(this.len),y=0;g;)g.fn(g.val,C,y),y+=g.len,g=g.next;return C},h._configure=function(S){o=S,h.create=u(),o._configure()}},{15:15}],17:[function(t,e,n){"use strict";e.exports=a;var i=t(16);(a.prototype=Object.create(i.prototype)).constructor=a;var o=t(15);function a(){i.call(this)}a._configure=function(){a.alloc=o._Buffer_allocUnsafe,a.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(r,d,m){d.set(r,m)}:function(r,d,m){if(r.copy)r.copy(d,m,0,r.length);else for(var h=0;h>>0;return this.uint32(d),d&&this._push(a.writeBytesBuffer,d,r),this};function s(l,r,d){l.length<40?o.utf8.write(l,r,d):r.utf8Write?r.utf8Write(l,d):r.write(l,d)}a.prototype.string=function(r){var d=o.Buffer.byteLength(r);return this.uint32(d),d&&this._push(s,d,r),this},a._configure()},{15:15,16:16}]},{},[8])})()});var Xkt=Zo((Mjo,t4)=>{var _jo=b(W());/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var t=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(m,h){h=h||{};var u=h.encodedMaskData||h.encodedMaskData===null,R=r(m,h.inputOffset||0,u),V=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,F=a(R,h.pixelType||Float32Array,h.encodedMaskData,V,h.returnMask),U={width:R.width,height:R.height,pixelData:F.resultPixels,minValue:F.minValue,maxValue:R.pixels.maxValue,noDataValue:V};return F.resultMask&&(U.maskData=F.resultMask),h.returnEncodedMask&&R.mask&&(U.encodedMaskData=R.mask.bitset?R.mask.bitset:null),h.returnFileInfo&&(U.fileInfo=s(R),h.computeUsedBitDepths&&(U.fileInfo.bitDepths=l(R))),U};var a=function(m,h,u,R,V){var F=0,U=m.pixels.numBlocksX,G=m.pixels.numBlocksY,A=Math.floor(m.width/U),S=Math.floor(m.height/G),g=2*m.maxZError,C=Number.MAX_VALUE,y;u=u||(m.mask?m.mask.bitset:null);var Y,Q;Y=new h(m.width*m.height),V&&u&&(Q=new Uint8Array(m.width*m.height));for(var J=new Float32Array(A*S),M,Z,E=0;E<=G;E++){var I=E!==G?S:m.height%G;if(I!==0)for(var B=0;B<=U;B++){var X=B!==U?A:m.width%U;if(X!==0){var _=E*m.width*S+B*A,P=m.width-X,w=m.pixels.blocks[F],z,H,nt;w.encoding<2?(w.encoding===0?z=w.rawData:(d(w.stuffedData,w.bitsPerPixel,w.numValidPixels,w.offset,g,J,m.pixels.maxValue),z=J),H=0):w.encoding===2?nt=0:nt=w.offset;var $;if(u)for(Z=0;Z>3],$<<=_&7),M=0;M>3]),$&128?(Q&&(Q[_]=1),y=w.encoding<2?z[H++]:nt,C=C>y?y:C,Y[_++]=y):(Q&&(Q[_]=0),Y[_++]=R),$<<=1;_+=P}else if(w.encoding<2)for(Z=0;Zy?y:C,Y[_++]=y;_+=P}else for(C=C>nt?nt:C,Z=0;Z0){var U=new Uint8Array(Math.ceil(R.width*R.height/8));F=new DataView(m,h,R.mask.numBytes);var G=F.getInt16(0,!0),A=2,S=0;do{if(G>0)for(;G--;)U[S++]=F.getUint8(A++);else{var g=F.getUint8(A++);for(G=-G;G--;)U[S++]=g}G=F.getInt16(A,!0),A+=2}while(A0?1:0),Q=y+(R.height%y>0?1:0);R.pixels.blocks=new Array(Y*Q);for(var J=0,M=0;M3)throw"Invalid block encoding ("+B.encoding+")";if(B.encoding===2){h++;continue}if(X!==0&&X!==2){if(X>>=6,B.offsetType=X,X===2)B.offset=F.getInt8(1),E++;else if(X===1)B.offset=F.getInt16(1,!0),E+=2;else if(X===0)B.offset=F.getFloat32(1,!0),E+=4;else throw"Invalid block offset type";if(B.encoding===1)if(X=F.getUint8(E),E++,B.bitsPerPixel=X&63,X>>=6,B.numValidPixelsType=X,X===2)B.numValidPixels=F.getUint8(E),E++;else if(X===1)B.numValidPixels=F.getUint16(E,!0),E+=2;else if(X===0)B.numValidPixels=F.getUint32(E,!0),E+=4;else throw"Invalid valid pixel count type"}if(h+=E,B.encoding!==3){var _,P;if(B.encoding===0){var w=(R.pixels.numBytes-1)/4;if(w!==Math.floor(w))throw"uncompressed block has invalid length";_=new ArrayBuffer(w*4),P=new Uint8Array(_),P.set(new Uint8Array(m,h,w*4));var z=new Float32Array(_);B.rawData=z,h+=w*4}else if(B.encoding===1){var H=Math.ceil(B.numValidPixels*B.bitsPerPixel/8),nt=Math.ceil(H/4);_=new ArrayBuffer(nt*4),P=new Uint8Array(_),P.set(new Uint8Array(m,h,H)),B.stuffedData=new Uint32Array(_),h+=H}}}return R.eofOffset=h,R},d=function(m,h,u,R,V,F,U){var G=(1<=h)C=y>>>g-h&G,g-=h;else{var J=h-g;C=(y&G)<>>g}F[S]=C=m?(g=C>>>S-m&U,S-=m):(y=m-S,g=(C&U)<>>S),d[A]=u[g];else for(Y=Math.ceil((F-R)/V),A=0;A=m?(g=C>>>S-m&U,S-=m):(y=m-S,g=(C&U)<>>S),d[A]=g=d?(S=g>>>A-d&V,A-=d):(G=d-A,S=(g&V)<>>A),C[U]=S=m?(C=y>>>g&U,S-=m,g+=m):(Y=m-S,C=y>>>g&U,y=r[G++],S=32-Y,C|=(y&(1<=m?(C=y>>>g&U,S-=m,g+=m):(Y=m-S,C=y>>>g&U,y=r[G++],S=32-Y,C|=(y&(1<=d?(S=C>>>g&V,A-=d,g+=d):(G=d-A,S=C>>>g&V,C=r[F++],A=32-G,S|=(C&(1<=m?(U=G>>>F-m&u,F-=m):(A=m-F,U=(G&u)<>>F),d[V]=U;return d},originalUnstuff2:function(r,d,m,h){var u=(1<=m?(G=A>>>U&u,F-=m,U+=m):(S=m-F,G=A>>>U&u,A=r[R++],F=32-S,G|=(A&(1<=359?359:u;u-=V;do d+=r[R++]<<8,m+=d+=r[R++];while(--V);d=(d&65535)+(d>>>16),m=(m&65535)+(m>>>16)}return h&1&&(m+=d+=r[R]<<8),d=(d&65535)+(d>>>16),m=(m&65535)+(m>>>16),(m<<16|d)>>>0},readHeaderInfo:function(r,d){var m=d.ptr,h=new Uint8Array(r,m,6),u={};if(u.fileIdentifierString=String.fromCharCode.apply(null,h),u.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+u.fileIdentifierString;m+=6;var R=new DataView(r,m,8),V=R.getInt32(0,!0);u.fileVersion=V,m+=4,V>=3&&(u.checksum=R.getUint32(4,!0),m+=4),R=new DataView(r,m,12),u.height=R.getUint32(0,!0),u.width=R.getUint32(4,!0),m+=8,V>=4?(u.numDims=R.getUint32(8,!0),m+=4):u.numDims=1,R=new DataView(r,m,40),u.numValidPixel=R.getUint32(0,!0),u.microBlockSize=R.getInt32(4,!0),u.blobSize=R.getInt32(8,!0),u.imageType=R.getInt32(12,!0),u.maxZError=R.getFloat64(16,!0),u.zMin=R.getFloat64(24,!0),u.zMax=R.getFloat64(32,!0),m+=40,d.headerInfo=u,d.ptr=m;var F,U;if(V>=3&&(U=V>=4?52:48,F=this.computeChecksumFletcher32(new Uint8Array(r,m-U,u.blobSize-14)),F!==u.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(r,d){var m=d.headerInfo,h=this.getDataTypeArray(m.imageType),u=m.numDims*this.getDataTypeSize(m.imageType),R=this.readSubArray(r,d.ptr,h,u),V=this.readSubArray(r,d.ptr+u,h,u);d.ptr+=2*u;var F,U=!0;for(F=0;F0){U=new Uint8Array(Math.ceil(u/8)),V=new DataView(r,m,F.numBytes);var A=V.getInt16(0,!0),S=2,g=0,C=0;do{if(A>0)for(;A--;)U[g++]=V.getUint8(S++);else for(C=V.getUint8(S++),A=-A;A--;)U[g++]=C;A=V.getInt16(S,!0),S+=2}while(S>3],y<<=Y&7):y=U[Y>>3],y&128&&(G[Y]=1);d.pixels.resultMask=G,F.bitset=U,m+=F.numBytes}return d.ptr=m,d.mask=F,!0},readDataOneSweep:function(r,d,m){var h=d.ptr,u=d.headerInfo,R=u.numDims,V=u.width*u.height,F=u.imageType,U=u.numValidPixel*a.getDataTypeSize(F)*R,G,A=d.pixels.resultMask;if(m===Uint8Array)G=new Uint8Array(r,h,U);else{var S=new ArrayBuffer(U),g=new Uint8Array(S);g.set(new Uint8Array(r,h,U)),G=new m(S)}if(G.length===V*R)d.pixels.resultPixels=G;else{d.pixels.resultPixels=new m(V*R);var C=0,y=0,Y=0,Q=0;if(R>1)for(Y=0;Y=F)return!1;var U=new Uint32Array(F-V);a.decodeBits(r,d,U);var G=[],A,S,g,C;for(A=V;A0&&(G[S].second=E<>>32-C,32-Z>=C?(Z+=C,Z===32&&(Z=0,I++,E=M[I])):(Z+=C-32,I++,E=M[I],G[S].second|=E>>>32-Z));var B=0,X=0,_=new s;for(A=0;A=m?X=m:X=B,B>=30&&console.log("WARning, large NUM LUT BITS IS "+B);var P=[],w,z,H,nt,$,dt;for(A=V;A0)if(w=[C,S],C<=X)for(z=G[S].second<=0;nt--)$=z>>>nt&1,$?(dt.right||(dt.right=new s),dt=dt.right):(dt.left||(dt.left=new s),dt=dt.left),nt===0&&!dt.val&&(dt.val=w[1]);return{decodeLut:P,numBitsLUTQick:X,numBitsLUT:B,tree:_,stuffedData:M,srcPtr:I,bitPos:Z}},readHuffman:function(r,d,m){var h=d.headerInfo,u=h.numDims,R=d.headerInfo.height,V=d.headerInfo.width,F=V*R,U=this.readHuffmanTree(r,d),G=U.decodeLut,A=U.tree,S=U.stuffedData,g=U.srcPtr,C=U.bitPos,y=U.numBitsLUTQick,Y=U.numBitsLUT,Q=d.headerInfo.imageType===0?128:0,J,M,Z,E=d.pixels.resultMask,I,B,X,_,P,w,z,H=0;C>0&&(g++,C=0);var nt=S[g],$=d.encodeMode===1,dt=new m(F*u),q=dt,at;for(at=0;at1&&(q=new m(dt.buffer,F*at,F),H=0),d.headerInfo.numValidPixel===V*R)for(w=0,_=0;_>>32-y,B=I,32-C>>64-C-y,B=I),G[B])M=G[B][1],C+=G[B][0];else for(I=nt<>>32-Y,B=I,32-C>>64-C-Y,B=I),J=A,z=0;z>>Y-z-1&1,J=X?J.right:J.left,!(J.left||J.right)){M=J.val,C=C+z+1;break}C>=32&&(C-=32,g++,nt=S[g]),Z=M-Q,$?(P>0?Z+=H:_>0?Z+=q[w-V]:Z+=H,Z&=255,q[w]=Z,H=Z):q[w]=Z}else for(w=0,_=0;_>>32-y,B=I,32-C>>64-C-y,B=I),G[B])M=G[B][1],C+=G[B][0];else for(I=nt<>>32-Y,B=I,32-C>>64-C-Y,B=I),J=A,z=0;z>>Y-z-1&1,J=X?J.right:J.left,!(J.left||J.right)){M=J.val,C=C+z+1;break}C>=32&&(C-=32,g++,nt=S[g]),Z=M-Q,$?(P>0&&E[w-1]?Z+=H:_>0&&E[w-V]?Z+=q[w-V]:Z+=H,Z&=255,q[w]=Z,H=Z):q[w]=Z}d.ptr=d.ptr+(g+1)*4+(C>0?4:0)}d.pixels.resultPixels=dt},decodeBits:function(r,d,m,h,u){{var R=d.headerInfo,V=R.fileVersion,F=0,U=new DataView(r,d.ptr,5),G=U.getUint8(0);F++;var A=G>>6,S=A===0?4:3-A,g=(G&32)>0,C=G&31,y=0;if(S===1)y=U.getUint8(F),F++;else if(S===2)y=U.getUint16(F,!0),F+=2;else if(S===4)y=U.getUint32(F,!0),F+=4;else throw"Invalid valid pixel count type";var Y=2*R.maxZError,Q,J,M,Z,E,I,B,X,_,P,w=R.numDims>1?R.maxValues[u]:R.zMax;if(g){for(d.counter.lut++,X=U.getUint8(F),_=C,F++,Z=Math.ceil((X-1)*C/8),E=Math.ceil(Z/4),J=new ArrayBuffer(E*4),M=new Uint8Array(J),d.ptr+=F,M.set(new Uint8Array(r,d.ptr,Z)),B=new Uint32Array(J),d.ptr+=Z,P=0;X-1>>>P;)P++;Z=Math.ceil(y*P/8),E=Math.ceil(Z/4),J=new ArrayBuffer(E*4),M=new Uint8Array(J),M.set(new Uint8Array(r,d.ptr,Z)),Q=new Uint32Array(J),d.ptr+=Z,V>=3?I=o.unstuffLUT2(B,C,X-1,h,Y,w):I=o.unstuffLUT(B,C,X-1,h,Y,w),V>=3?o.unstuff2(Q,m,P,y,I):o.unstuff(Q,m,P,y,I)}else d.counter.bitstuffer++,P=C,d.ptr+=F,P>0&&(Z=Math.ceil(y*P/8),E=Math.ceil(Z/4),J=new ArrayBuffer(E*4),M=new Uint8Array(J),M.set(new Uint8Array(r,d.ptr,Z)),Q=new Uint32Array(J),d.ptr+=Z,V>=3?h==null?o.originalUnstuff2(Q,m,P,y):o.unstuff2(Q,m,P,y,!1,h,Y,w):h==null?o.originalUnstuff(Q,m,P,y):o.unstuff(Q,m,P,y,!1,h,Y,w))}},readTiles:function(r,d,m){var h=d.headerInfo,u=h.width,R=h.height,V=h.microBlockSize,F=h.imageType,U=a.getDataTypeSize(F),G=Math.ceil(u/V),A=Math.ceil(R/V);d.pixels.numBlocksY=A,d.pixels.numBlocksX=G,d.pixels.ptr=0;var S=0,g=0,C=0,y=0,Y=0,Q=0,J=0,M=0,Z=0,E=0,I=0,B=0,X=0,_=0,P=0,w=0,z,H,nt,$,dt,q,at=new m(V*V),st=R%V||V,Et=u%V||V,Qt,Wt,Nt=h.numDims,kt,Mt=d.pixels.resultMask,qt=d.pixels.resultPixels;for(C=0;C1&&(qt=new m(d.pixels.resultPixels.buffer,u*R*kt*U,u*R)),J=r.byteLength-d.ptr,z=new DataView(r,d.ptr,Math.min(10,J)),H={},w=0,M=z.getUint8(0),w++,Z=M>>6&255,E=M>>2&15,E!==(y*V>>3&15))throw"integrity issue";if(q=M&3,q>3)throw d.ptr+=w,"Invalid block encoding ("+q+")";if(q===2){d.counter.constant++,d.ptr+=w;continue}else if(q===0){if(d.counter.uncompressed++,d.ptr+=w,X=Y*Q*U,_=r.byteLength-d.ptr,X=X<_?X:_,nt=new ArrayBuffer(X%U===0?X:X+U-X%U),$=new Uint8Array(nt),$.set(new Uint8Array(r,d.ptr,X)),dt=new m(nt),P=0,Mt)for(S=0;S1)for(R=0;R=-128&&d<=127;break;case 1:m=d>=0&&d<=255;break;case 2:m=d>=-32768&&d<=32767;break;case 3:m=d>=0&&d<=65536;break;case 4:m=d>=-2147483648&&d<=2147483647;break;case 5:m=d>=0&&d<=4294967296;break;case 6:m=d>=-34027999387901484e22&&d<=34027999387901484e22;break;case 7:m=d>=5e-324&&d<=17976931348623157e292;break;default:m=!1}return m},getDataTypeSize:function(r){var d=0;switch(r){case 0:case 1:d=1;break;case 2:case 3:d=2;break;case 4:case 5:case 6:d=4;break;case 7:d=8;break;default:d=r}return d},getDataTypeUsed:function(r,d){var m=r;switch(r){case 2:case 4:m=r-d;break;case 3:case 5:m=r-2*d;break;case 6:d===0?m=r:d===1?m=2:m=1;break;case 7:d===0?m=r:m=r-2*d+1;break;default:m=r;break}return m},getOnePixel:function(r,d,m,h){var u=0;switch(m){case 0:u=h.getInt8(d);break;case 1:u=h.getUint8(d);break;case 2:u=h.getInt16(d,!0);break;case 3:u=h.getUint16(d,!0);break;case 4:u=h.getInt32(d,!0);break;case 5:u=h.getUInt32(d,!0);break;case 6:u=h.getFloat32(d,!0);break;case 7:u=h.getFloat64(d,!0);break;default:throw"the decoder does not understand this pixel type"}return u}},s=function(r,d,m){this.val=r,this.left=d,this.right=m},l={decode:function(r,d){d=d||{};var m=d.noDataValue,h=0,u={};if(u.ptr=d.inputOffset||0,u.pixels={},!!a.readHeaderInfo(r,u)){var R=u.headerInfo,V=R.fileVersion,F=a.getDataTypeArray(R.imageType);a.readMask(r,u),R.numValidPixel!==R.width*R.height&&!u.pixels.resultMask&&(u.pixels.resultMask=d.maskData);var U=R.width*R.height;if(u.pixels.resultPixels=new F(U*R.numDims),u.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},R.numValidPixel!==0)if(R.zMax===R.zMin)a.constructConstantSurface(u);else if(V>=4&&a.checkMinMaxRanges(r,u))a.constructConstantSurface(u);else{var G=new DataView(r,u.ptr,2),A=G.getUint8(0);if(u.ptr++,A)a.readDataOneSweep(r,u,F);else if(V>1&&R.imageType<=1&&Math.abs(R.maxZError-.5)<1e-5){var S=G.getUint8(1);if(u.ptr++,u.encodeMode=S,S>2||V<4&&S>1)throw"Invalid Huffman flag "+S;S?a.readHuffman(r,u,F):a.readTiles(r,u,F)}else a.readTiles(r,u,F)}u.eofOffset=u.ptr;var g;d.inputOffset?(g=u.headerInfo.blobSize+d.inputOffset-u.ptr,Math.abs(g)>=1&&(u.eofOffset=d.inputOffset+u.headerInfo.blobSize)):(g=u.headerInfo.blobSize-u.ptr,Math.abs(g)>=1&&(u.eofOffset=u.headerInfo.blobSize));var C={width:R.width,height:R.height,pixelData:u.pixels.resultPixels,minValue:R.zMin,maxValue:R.zMax,validPixelCount:R.numValidPixel,dimCount:R.numDims,dimStats:{minValues:R.minValues,maxValues:R.maxValues},maskData:u.pixels.resultMask};if(u.pixels.resultMask&&a.isValidPixelValue(R.imageType,m)){var y=u.pixels.resultMask;for(h=0;h1&&A.fileInfo.mask&&A.fileInfo.mask.numBytes>0&&V.push(A.maskData),h++,G.pixels.push(A.pixelData),G.statistics.push({minValue:A.minValue,maxValue:A.maxValue,noDataValue:A.noDataValue,dimStats:A.dimStats})}var S,g,C;if(m>1&&V.length>1){for(C=G.width*G.height,G.bandMasks=V,U=new Uint8Array(C),U.set(V[0]),S=1;S{var $Ga=b(W());k2t.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}});var X2t=Zo((tAa,x2t)=>{var eAa=b(W()),{webm:lDe,mp4:rDe}=Y2t(),Drt=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,Ort=()=>"wakeLock"in navigator,Hrt=class{constructor(){if(this.enabled=!1,Ort()){this._wakeLock=null;let e=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else Drt()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",lDe),this._addSourceToVideo(this.noSleepVideo,"mp4",rDe),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(e,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){return Ort()?navigator.wakeLock.request("screen").then(e=>{this._wakeLock=e,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(e=>{throw this.enabled=!1,console.error(`${e.name}, ${e.message}`),e}):Drt()?(this.disable(),console.warn(` NoSleep enabled for older iOS devices. This can interrupt active or long-running network requests from completing successfully. See https://github.com/richtr/NoSleep.js/issues/15 for more details. `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){Ort()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):Drt()?this.noSleepTimer&&(console.warn(` NoSleep now disabled for older iOS devices. - `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};xkt.exports=Hrt});var JDe={};vO(JDe,{AlphaMode:()=>qV,AlphaPipelineStage:()=>ux,Analysis:()=>x1,Animation:()=>GD,AnimationViewModel:()=>AD,Appearance:()=>ua,ApproximateTerrainHeights:()=>uo,ArcGISTiledElevationTerrainProvider:()=>Sst,ArcGisBaseMapType:()=>oV,ArcGisMapServerImageryProvider:()=>cW,ArcGisMapService:()=>tp,ArcType:()=>Ln,ArticulationStageType:()=>zd,AssociativeArray:()=>qe,Atmosphere:()=>b_,AtmospherePipelineStage:()=>vY,AttributeCompression:()=>Ni,AttributeType:()=>_n,AutoExposure:()=>R9,AutomaticUniforms:()=>bR,Axis:()=>$a,AxisAlignedBoundingBox:()=>Ff,B3dmLoader:()=>SY,B3dmParser:()=>GY,BaseLayerPicker:()=>SD,BaseLayerPickerViewModel:()=>TD,BatchTable:()=>kG,BatchTableHierarchy:()=>lA,BatchTexture:()=>Yc,BatchTexturePipelineStage:()=>Zx,Billboard:()=>Na,BillboardCollection:()=>yh,BillboardGraphics:()=>Mr,BillboardVisualizer:()=>h2,BingMapsGeocoderService:()=>Est,BingMapsImageryProvider:()=>LM,BingMapsStyle:()=>U1,BlendEquation:()=>pd,BlendFunction:()=>Ha,BlendOption:()=>wa,BlendingState:()=>Pn,BoundingRectangle:()=>Fe,BoundingSphere:()=>Ft,BoundingSphereState:()=>ve,BoundingVolumeSemantics:()=>AA,BoxEmitter:()=>Ult,BoxGeometry:()=>Am,BoxGeometryUpdater:()=>Ck,BoxGraphics:()=>PG,BoxOutlineGeometry:()=>tZ,BrdfLutGenerator:()=>f_,Buffer:()=>we,BufferLoader:()=>pA,BufferUsage:()=>ce,CPUStylingPipelineStage:()=>Wx,CallbackProperty:()=>Th,Camera:()=>Aa,CameraEventAggregator:()=>S9,CameraEventType:()=>Mo,CameraFlightPath:()=>U_,Cartesian2:()=>K,Cartesian3:()=>p,Cartesian4:()=>Rt,Cartographic:()=>gt,CartographicGeocoderService:()=>Ist,CatmullRomSpline:()=>Nst,Cesium3DContentGroup:()=>sA,Cesium3DTile:()=>iu,Cesium3DTileBatchTable:()=>wR,Cesium3DTileColorBlendMode:()=>Nm,Cesium3DTileContent:()=>Glt,Cesium3DTileContentFactory:()=>DA,Cesium3DTileContentState:()=>rs,Cesium3DTileContentType:()=>nr,Cesium3DTileFeature:()=>Fr,Cesium3DTileFeatureTable:()=>FZ,Cesium3DTileOptimizationHint:()=>jp,Cesium3DTileOptimizations:()=>KX,Cesium3DTilePass:()=>ns,Cesium3DTilePassState:()=>Eu,Cesium3DTilePointFeature:()=>b0,Cesium3DTileRefine:()=>ss,Cesium3DTileStyle:()=>qS,Cesium3DTileStyleEngine:()=>eJ,Cesium3DTilesInspector:()=>fD,Cesium3DTilesInspectorViewModel:()=>WD,Cesium3DTilesVoxelProvider:()=>Alt,Cesium3DTileset:()=>Pr,Cesium3DTilesetBaseTraversal:()=>lJ,Cesium3DTilesetCache:()=>qX,Cesium3DTilesetGraphics:()=>tA,Cesium3DTilesetHeatmap:()=>$X,Cesium3DTilesetMetadata:()=>$A,Cesium3DTilesetMostDetailedTraversal:()=>oJ,Cesium3DTilesetSkipTraversal:()=>cJ,Cesium3DTilesetStatistics:()=>N0,Cesium3DTilesetTraversal:()=>Sr,Cesium3DTilesetVisualizer:()=>mJ,CesiumInspector:()=>ND,CesiumInspectorViewModel:()=>ID,CesiumTerrainProvider:()=>HS,CesiumWidget:()=>W5,Check:()=>Xa,CheckerboardMaterialProperty:()=>yC,CircleEmitter:()=>M5,CircleGeometry:()=>xst,CircleOutlineGeometry:()=>Xst,ClassificationModelDrawCommand:()=>_Y,ClassificationPipelineStage:()=>Vx,ClassificationPrimitive:()=>fE,ClassificationType:()=>Ji,ClassifyOrbit:()=>_tt,ClearCommand:()=>ao,ClippingPlane:()=>TA,ClippingPlaneCollection:()=>Ml,ClippingPolygon:()=>KE,ClippingPolygonCollection:()=>RZ,Clock:()=>kZ,ClockRange:()=>pl,ClockSpeedUp:()=>Jst,ClockStep:()=>ya,ClockViewModel:()=>ZD,CloudCollection:()=>Ilt,CloudType:()=>mN,Color:()=>v,ColorBlendMode:()=>Kd,ColorGeometryInstanceAttribute:()=>En,ColorMaterialProperty:()=>Cn,Command:()=>Crt,ComponentDatatype:()=>it,Composite3DTileContent:()=>Yk,CompositeEntityCollection:()=>Ott,CompositeMaterialProperty:()=>QC,CompositePositionProperty:()=>cl,CompositeProperty:()=>ec,CompressedTextureBuffer:()=>by,ComputeCommand:()=>Wm,ComputeEngine:()=>Zy,ConditionsExpression:()=>x5,ConeEmitter:()=>ylt,ConjunctionAssessmentTask:()=>Mst,ConstantPositionProperty:()=>jl,ConstantProperty:()=>Ii,ConstantSpline:()=>IY,ContentMetadata:()=>MX,Context:()=>a2,ContextLimits:()=>Sn,CoplanarPolygonGeometry:()=>HJ,CoplanarPolygonGeometryLibrary:()=>T0,CoplanarPolygonOutlineGeometry:()=>nu,CornerType:()=>Xo,CorridorGeometry:()=>aT,CorridorGeometryLibrary:()=>Po,CorridorGeometryUpdater:()=>fJ,CorridorGraphics:()=>KG,CorridorOutlineGeometry:()=>WJ,CoverageGroupDataSource:()=>SJ,CoveragePolygonGeometry:()=>PJ,CoveragePolygonGeometryLibrary:()=>hI,Credit:()=>on,CreditDisplay:()=>S_,CubeMap:()=>Ld,CubeMapFace:()=>XV,CubicRealPolynomial:()=>BG,CullFace:()=>so,CullingVolume:()=>Jl,CumulusCloud:()=>hp,CustomDataSource:()=>hb,CustomHeightmapTerrainProvider:()=>_st,CustomShader:()=>JS,CustomShaderMode:()=>Z0,CustomShaderPipelineStage:()=>Sx,CustomShaderTranslucencyMode:()=>iF,CylinderGeometry:()=>gJ,CylinderGeometryLibrary:()=>sT,CylinderGeometryUpdater:()=>CJ,CylinderGraphics:()=>zG,CylinderOutlineGeometry:()=>EJ,CzmlDataSource:()=>O0,DataSource:()=>ml,DataSourceClock:()=>YZ,DataSourceCollection:()=>YJ,DataSourceDisplay:()=>kF,DebugAppearance:()=>Blt,DebugCameraPrimitive:()=>Jb,DebugInspector:()=>Q9,DebugModelMatrixPrimitive:()=>D5,DefaultProxy:()=>Dst,DepthFunction:()=>_d,DepthPlane:()=>Q_,DequantizationPipelineStage:()=>Ex,DerivedCommand:()=>VW,DeveloperError:()=>Ut,DeviceOrientationCameraController:()=>Y_,DirectionalLight:()=>Qlt,DiscardEmptyTileImagePolicy:()=>G1,DiscardMissingTileImagePolicy:()=>XM,DistanceDisplayCondition:()=>Wn,DistanceDisplayConditionGeometryInstanceAttribute:()=>Xi,DoubleEndedPriorityQueue:()=>xS,DoublyLinkedList:()=>jX,DracoLoader:()=>$R,DrawCommand:()=>Ee,DynamicAtmosphereLightingType:()=>uS,DynamicGeometryBatch:()=>ZT,DynamicGeometryUpdater:()=>lo,EarthOrientationParameters:()=>ly,EarthOrientationParametersSample:()=>lf,EasingFunction:()=>Zl,EllipseGeometry:()=>Pc,EllipseGeometryLibrary:()=>Om,EllipseGeometryUpdater:()=>XJ,EllipseGraphics:()=>jG,EllipseOutlineGeometry:()=>Lh,Ellipsoid:()=>mt,EllipsoidGeodesic:()=>oZ,EllipsoidGeometry:()=>Cr,EllipsoidGeometryUpdater:()=>LJ,EllipsoidGraphics:()=>qG,EllipsoidOutlineGeometry:()=>Qh,EllipsoidPrimitive:()=>h_,EllipsoidRhumbLine:()=>ud,EllipsoidSurfaceAppearance:()=>klt,EllipsoidTangentPlane:()=>Fl,EllipsoidTerrainProvider:()=>Ru,EllipsoidalOccluder:()=>BZ,EmbeddedTileServiceImageryProvider:()=>Ylt,Empty3DTileContent:()=>WC,EncodedCartesian3:()=>Mi,Entity:()=>qa,EntityCluster:()=>Yh,EntityCollection:()=>gr,EntityView:()=>AL,Event:()=>It,EventHelper:()=>rl,Expression:()=>xp,ExpressionNodeType:()=>tn,ExternalData:()=>y6,ExtrapolationType:()=>Ah,FeatureDetection:()=>In,FeatureIdPipelineStage:()=>nF,FlatbufferUtilities:()=>a1,Fog:()=>x_,ForEach:()=>ne,FrameRateMonitor:()=>P5,FrameState:()=>X_,Framebuffer:()=>Lr,FramebufferManager:()=>Ro,FrustumCommands:()=>__,FrustumGeometry:()=>VS,FrustumOutlineGeometry:()=>C_,Fullscreen:()=>Ds,FullscreenButton:()=>BD,FullscreenButtonViewModel:()=>yD,GenerateAccessReport:()=>Ost,GeoJsonDataSource:()=>gL,GeoJsonLoader:()=>gY,GeocodeType:()=>IU,Geocoder:()=>kD,GeocoderService:()=>sN,GeocoderViewModel:()=>QD,GeographicProjection:()=>yo,GeographicTilingScheme:()=>Qo,Geometry:()=>_e,Geometry3DTileContent:()=>Xk,GeometryAttribute:()=>jt,GeometryAttributes:()=>ei,GeometryFactory:()=>Hst,GeometryInstance:()=>$e,GeometryInstanceAttribute:()=>Dd,GeometryOffsetAttribute:()=>zn,GeometryPipeline:()=>gi,GeometryPipelineStage:()=>yx,GeometryType:()=>gp,GeometryUpdater:()=>ro,GeometryUpdaterSet:()=>gT,GeometryVisualizer:()=>dL,GetFeatureInfoFormat:()=>cS,Globe:()=>r_,GlobeDepth:()=>D_,GlobeSurfaceShaderSet:()=>xM,GlobeSurfaceTile:()=>Tu,GlobeSurfaceTileProvider:()=>qM,GlobeTranslucency:()=>$M,GlobeTranslucencyFramebuffer:()=>O_,GlobeTranslucencyState:()=>J_,GltfBufferViewLoader:()=>QE,GltfDracoLoader:()=>kE,GltfImageLoader:()=>YE,GltfIndexBufferLoader:()=>xE,GltfJsonLoader:()=>JE,GltfLoader:()=>s0,GltfLoaderUtil:()=>km,GltfStructuralMetadataLoader:()=>WY,GltfTextureLoader:()=>LE,GltfVertexBufferLoader:()=>ME,GoogleEarthEnterpriseImageryProvider:()=>Xlt,GoogleEarthEnterpriseMapsProvider:()=>DM,GoogleEarthEnterpriseMetadata:()=>EW,GoogleEarthEnterpriseTerrainData:()=>lN,GoogleEarthEnterpriseTerrainProvider:()=>$st,GoogleEarthEnterpriseTileInformation:()=>E5,GoogleMaps:()=>PS,GpxDataSource:()=>NL,GregorianDate:()=>WR,GridImageryProvider:()=>Jlt,GridMaterialProperty:()=>OC,GroundGeometryUpdater:()=>_i,GroundPolylineGeometry:()=>kR,GroundPolylinePrimitive:()=>Gh,GroundPrimitive:()=>Nc,GroupMetadata:()=>CC,HeadingPitchRange:()=>Zu,HeadingPitchRoll:()=>Jr,Heap:()=>iy,HeightReference:()=>Ge,HeightmapEncoding:()=>Uu,HeightmapTerrainData:()=>Gd,HeightmapTessellator:()=>b1,HermitePolynomialApproximation:()=>rT,HermiteSpline:()=>$f,HilbertOrder:()=>IE,HomeButton:()=>xD,HomeButtonViewModel:()=>YD,HorizontalOrigin:()=>to,I3SBuildingSceneLayerExplorer:()=>Xrt,I3SBuildingSceneLayerExplorerViewModel:()=>XD,I3SDataProvider:()=>RV,I3SDecoder:()=>v5,I3SFeature:()=>K5,I3SField:()=>z5,I3SGeometry:()=>hN,I3SLayer:()=>ig,I3SNode:()=>pN,I3SStatistics:()=>$5,I3SSublayer:()=>eD,I3SSymbology:()=>q5,I3dmLoader:()=>CY,I3dmParser:()=>EY,Iau2000Orientation:()=>c_,Iau2006XysData:()=>cy,Iau2006XysSample:()=>UG,IauOrientationAxes:()=>m_,IauOrientationParameters:()=>d_,ImageBasedLighting:()=>aA,ImageBasedLightingPipelineStage:()=>zY,ImageMaterialProperty:()=>Sf,Imagery:()=>C1,ImageryLayer:()=>$r,ImageryLayerCollection:()=>t_,ImageryLayerFeatureInfo:()=>iV,ImageryProvider:()=>$c,ImageryState:()=>ho,Implicit3DTileContent:()=>DE,ImplicitAvailabilityBitstream:()=>yE,ImplicitMetadataView:()=>BE,ImplicitSubdivisionScheme:()=>Al,ImplicitSubtree:()=>UA,ImplicitSubtreeCache:()=>J5,ImplicitSubtreeMetadata:()=>Jk,ImplicitTileCoordinates:()=>nT,ImplicitTileset:()=>eT,IndexDatatype:()=>re,InfoBox:()=>LD,InfoBoxViewModel:()=>JD,InspectorShared:()=>gd,InstanceAttributeSemantic:()=>Sl,InstancingPipelineStage:()=>cx,InterpolationAlgorithm:()=>tlt,InterpolationType:()=>WZ,Intersect:()=>yn,IntersectionTests:()=>no,Intersections2D:()=>SW,Interval:()=>hd,InvertClassification:()=>M1,Ion:()=>cZ,IonGeocoderService:()=>N5,IonImageryProvider:()=>mW,IonResource:()=>gh,IonWorldImageryStyle:()=>hW,Iso8601:()=>Re,JobScheduler:()=>L_,JobType:()=>Vd,JsonMetadataTable:()=>o0,JulianDate:()=>rt,KTX2Transcoder:()=>Ry,KeyboardEventModifier:()=>id,KeyframeNode:()=>ra,KmlCamera:()=>yL,KmlDataSource:()=>iM,KmlLookAt:()=>zL,KmlTour:()=>jL,KmlTourFlyTo:()=>$L,KmlTourWait:()=>tM,Label:()=>cF,LabelCollection:()=>sb,LabelGraphics:()=>aZ,LabelStyle:()=>Pa,LabelVisualizer:()=>cL,LagrangePolynomialApproximation:()=>dT,LatLonGrid:()=>Pit,LeapSecond:()=>zo,Light:()=>Dlt,LightingModel:()=>nb,LightingPipelineStage:()=>Qx,LinearApproximation:()=>_R,LinearSpline:()=>qf,MakeBillboardLabel:()=>Olt,ManagedArray:()=>kc,MapMode2D:()=>eh,MapProjection:()=>ilt,MapboxImageryProvider:()=>OM,MapboxStyleImageryProvider:()=>Hlt,Material:()=>eo,MaterialAppearance:()=>Fa,MaterialPipelineStage:()=>Yx,MaterialProperty:()=>Ua,Math:()=>k,Matrix2:()=>pa,Matrix3:()=>ot,Matrix4:()=>L,Megatexture:()=>P1,MetadataClass:()=>uZ,MetadataClassProperty:()=>kf,MetadataComponentType:()=>vn,MetadataEntity:()=>Yi,MetadataEnum:()=>nY,MetadataEnumValue:()=>eY,MetadataPipelineStage:()=>_p,MetadataSchema:()=>ZZ,MetadataSchemaLoader:()=>_E,MetadataSemantic:()=>GA,MetadataTable:()=>Bm,MetadataTableProperty:()=>Mk,MetadataType:()=>Nn,MipmapHint:()=>JV,Model:()=>AZ,Model3DTileContent:()=>ib,ModelAlphaOptions:()=>tX,ModelAnimation:()=>QY,ModelAnimationChannel:()=>BY,ModelAnimationCollection:()=>kY,ModelAnimationLoop:()=>xm,ModelAnimationState:()=>UZ,ModelArticulation:()=>qY,ModelArticulationStage:()=>jY,ModelClippingPlanesPipelineStage:()=>ex,ModelClippingPolygonsPipelineStage:()=>ox,ModelColorPipelineStage:()=>eF,ModelComponents:()=>Tn,ModelDrawCommand:()=>DY,ModelFeature:()=>YY,ModelFeatureTable:()=>XY,ModelGraphics:()=>JR,ModelLightingOptions:()=>rX,ModelMatrixUpdateStage:()=>mx,ModelNode:()=>ax,ModelRenderResources:()=>eX,ModelRuntimeNode:()=>px,ModelRuntimePrimitive:()=>qx,ModelSceneGraph:()=>cX,ModelSilhouettePipelineStage:()=>oX,ModelSkin:()=>$x,ModelSplitterPipelineStage:()=>sX,ModelStatistics:()=>mX,ModelType:()=>Is,ModelUtility:()=>Mn,ModelVisualizer:()=>mL,Moon:()=>u_,MorphTargetsPipelineStage:()=>Xx,MorphWeightSpline:()=>olt,MortonOrder:()=>VF,Multiple3DTileContent:()=>OX,MultisampleFramebuffer:()=>s2,NavigationHelpButton:()=>_D,NavigationHelpButtonViewModel:()=>MD,NearFarScalar:()=>ln,NeverTileDiscardPolicy:()=>Plt,NodeRenderResources:()=>lX,NodeStatisticsPipelineStage:()=>hx,NodeTransformationProperty:()=>$G,OIT:()=>w_,Occluder:()=>Z_,OctahedralProjectedCubeMap:()=>dZ,OffsetGeometryInstanceAttribute:()=>aa,OpenCageGeocoderService:()=>slt,OpenStreetMapImageryProvider:()=>IW,OrderedGroundPrimitiveCollection:()=>xJ,OrientedBoundingBox:()=>ci,OrthographicFrustum:()=>wn,OrthographicOffCenterFrustum:()=>el,Packable:()=>llt,PackableForInterpolation:()=>rlt,Particle:()=>VN,ParticleBurst:()=>Klt,ParticleEmitter:()=>zlt,ParticleSystem:()=>jlt,Pass:()=>Pt,PassState:()=>Md,PathGraphics:()=>LR,PathVisualizer:()=>uL,PeliasGeocoderService:()=>I5,PerInstanceColorAppearance:()=>jn,PerformanceDisplay:()=>bW,PerformanceWatchdog:()=>OD,PerformanceWatchdogViewModel:()=>DD,PerspectiveFrustum:()=>Io,PerspectiveOffCenterFrustum:()=>em,PickDepth:()=>M_,PickDepthFramebuffer:()=>v_,PickFramebuffer:()=>z_,Picking:()=>$_,PickingPipelineStage:()=>Jx,PinBuilder:()=>q0,PixelDatatype:()=>Ue,PixelFormat:()=>Ye,Plane:()=>Kn,PlaneGeometry:()=>MJ,PlaneGeometryUpdater:()=>DJ,PlaneGraphics:()=>Uk,PlaneOutlineGeometry:()=>_J,PlanetImageryProvider:()=>qlt,PntsLoader:()=>pX,PntsParser:()=>xA,PointCloud:()=>aD,PointCloudEyeDomeLighting:()=>l0,PointCloudShading:()=>eb,PointCloudStylingPipelineStage:()=>Mx,PointGraphics:()=>eA,PointPrimitive:()=>Er,PointPrimitiveCollection:()=>JC,PointVisualizer:()=>VL,PolygonGeometry:()=>i0,PolygonGeometryLibrary:()=>Fi,PolygonGeometryUpdater:()=>vJ,PolygonGraphics:()=>sZ,PolygonHierarchy:()=>Wr,PolygonOutlineGeometry:()=>wJ,PolygonPipeline:()=>wi,Polyline:()=>vp,PolylineArrowMaterialProperty:()=>wC,PolylineCollection:()=>Mc,PolylineColorAppearance:()=>Ul,PolylineDashMaterialProperty:()=>vC,PolylineGeometry:()=>j0,PolylineGeometryUpdater:()=>WL,PolylineGlowMaterialProperty:()=>zC,PolylineGraphics:()=>Od,PolylineMaterialAppearance:()=>zl,PolylineOutlineMaterialProperty:()=>AF,PolylinePipeline:()=>xo,PolylineVisualizer:()=>FL,PolylineVolumeGeometry:()=>jJ,PolylineVolumeGeometryLibrary:()=>IZ,PolylineVolumeGeometryUpdater:()=>eL,PolylineVolumeGraphics:()=>nA,PolylineVolumeOutlineGeometry:()=>tL,PositionProperty:()=>xR,PositionPropertyArray:()=>L0,PostProcessStage:()=>Qa,PostProcessStageCollection:()=>U9,PostProcessStageComposite:()=>nm,PostProcessStageLibrary:()=>Iu,PostProcessStageSampleMode:()=>op,PostProcessStageTextureCache:()=>ES,Primitive:()=>Wi,PrimitiveCollection:()=>Dm,PrimitiveLoadPlan:()=>yA,PrimitiveOutlineGenerator:()=>NA,PrimitiveOutlinePipelineStage:()=>Ox,PrimitivePipeline:()=>MG,PrimitiveRenderResources:()=>dX,PrimitiveState:()=>vs,PrimitiveStatisticsPipelineStage:()=>Hx,PrimitiveType:()=>le,ProjectionPicker:()=>wD,ProjectionPickerViewModel:()=>HD,Property:()=>et,PropertyArray:()=>qC,PropertyAttribute:()=>IA,PropertyAttributeProperty:()=>ZY,PropertyBag:()=>Em,PropertyTable:()=>Xc,PropertyTexture:()=>CA,PropertyTextureProperty:()=>uY,ProviderViewModel:()=>Nl,Proxy:()=>dlt,QuadraticRealPolynomial:()=>Cc,QuadtreeOccluders:()=>e_,QuadtreePrimitive:()=>l_,QuadtreeTile:()=>n_,QuadtreeTileLoadState:()=>Br,QuadtreeTileProvider:()=>ort,QuantizedMeshTerrainData:()=>OS,QuarticRealPolynomial:()=>w2,Quaternion:()=>wt,QuaternionSpline:()=>yY,Queue:()=>$V,Ray:()=>di,Rectangle:()=>Gt,RectangleCollisionChecker:()=>CT,RectangleGeometry:()=>FT,RectangleGeometryLibrary:()=>ir,RectangleGeometryUpdater:()=>nL,RectangleGraphics:()=>lZ,RectangleOutlineGeometry:()=>wA,ReferenceFrame:()=>ri,ReferenceProperty:()=>M0,RenderState:()=>he,Renderbuffer:()=>bh,RenderbufferFormat:()=>Sc,Request:()=>Zs,RequestErrorEvent:()=>yV,RequestScheduler:()=>xd,RequestState:()=>qi,RequestType:()=>Xl,Resource:()=>te,ResourceCache:()=>jo,ResourceCacheKey:()=>Ym,ResourceCacheStatistics:()=>sY,ResourceLoader:()=>Va,ResourceLoaderState:()=>pn,Rotation:()=>ru,RuntimeError:()=>St,S2Cell:()=>KR,SDFSettings:()=>Ar,SampledPositionProperty:()=>Bs,SampledProperty:()=>ql,Sampler:()=>Hn,ScaledPositionProperty:()=>vc,Scene:()=>s5,SceneFramebuffer:()=>FS,SceneMode:()=>ut,SceneMode2DPipelineStage:()=>wx,SceneModePicker:()=>vD,SceneModePickerViewModel:()=>PD,SceneTransforms:()=>qo,SceneTransitioner:()=>T9,ScreenSpaceCameraController:()=>C9,ScreenSpaceEventHandler:()=>sp,ScreenSpaceEventType:()=>Zi,SelectedFeatureIdPipelineStage:()=>oF,SelectionIndicator:()=>jD,SelectionIndicatorViewModel:()=>zD,Sensor:()=>oW,SensorVolumePortionToDisplay:()=>nI,SensorVolumes:()=>dot,SerializePosition:()=>g5,ShaderBuilder:()=>EG,ShaderCache:()=>$Q,ShaderDestination:()=>Xt,ShaderFunction:()=>d2,ShaderProgram:()=>xn,ShaderSource:()=>Ve,ShaderStruct:()=>r2,ShadowMap:()=>fW,ShadowMapShader:()=>Db,ShadowMode:()=>ui,ShadowVolumeAppearance:()=>Fh,ShowGeometryInstanceAttribute:()=>pi,Simon1994PlanetaryPositions:()=>_V,SimplePolylineGeometry:()=>clt,SingleTileImageryProvider:()=>HM,SkinningPipelineStage:()=>vx,SkyAtmosphere:()=>d5,SkyBox:()=>h5,SpaceCatalogDataSource:()=>BM,SpaceEntity:()=>oS,SpatialNode:()=>e5,SphereEmitter:()=>srt,SphereGeometry:()=>mlt,SphereOutlineGeometry:()=>g0,Spherical:()=>Oc,Spline:()=>ba,SplitDirection:()=>Jc,Splitter:()=>RN,StaticGeometryColorBatch:()=>mu,StaticGeometryPerMaterialBatch:()=>hu,StaticGroundGeometryColorBatch:()=>UI,StaticGroundGeometryPerMaterialBatch:()=>rL,StaticGroundPolylinePerMaterialBatch:()=>fL,StaticOutlineGeometryBatch:()=>TI,StencilConstants:()=>gn,StencilFunction:()=>Li,StencilOperation:()=>je,SteppedSpline:()=>NY,Stereographic:()=>vd,StripeMaterialProperty:()=>tI,StripeOrientation:()=>xZ,StructuralMetadata:()=>bd,StyleCommandsNeeded:()=>GZ,StyleExpression:()=>lrt,Sun:()=>R5,SunLight:()=>gR,SunPostProcess:()=>y9,SupportedImageFormats:()=>fY,SvgPathBindingHandler:()=>pD,TaskProcessor:()=>$i,Terrain:()=>lD,TerrainData:()=>nV,TerrainEncoding:()=>lc,TerrainFillMesh:()=>B1,TerrainMesh:()=>Au,TerrainOffsetProperty:()=>iA,TerrainProvider:()=>El,TerrainQuantization:()=>yr,TerrainState:()=>Ga,Texture:()=>hn,TextureAtlas:()=>dF,TextureCache:()=>t2,TextureMagnificationFilter:()=>bo,TextureManager:()=>i5,TextureMinificationFilter:()=>On,TextureUniform:()=>Art,TextureWrap:()=>Vi,TileAvailability:()=>pV,TileBoundingRegion:()=>eu,TileBoundingS2Cell:()=>PX,TileBoundingSphere:()=>E0,TileBoundingVolume:()=>rrt,TileCoordinatesImageryProvider:()=>dD,TileDiscardPolicy:()=>crt,TileEdge:()=>mi,TileImagery:()=>I1,TileMapServiceImageryProvider:()=>hU,TileMetadata:()=>_X,TileOrientedBoundingBox:()=>kh,TileProviderError:()=>za,TileReplacementQueue:()=>i_,TileSelectionResult:()=>Pi,TileState:()=>mrt,Tileset3DTileContent:()=>VX,TilesetMetadata:()=>vX,TilesetPipelineStage:()=>HY,TilingScheme:()=>hlt,TimeConstants:()=>xi,TimeDynamicImagery:()=>mS,TimeDynamicPointCloud:()=>UN,TimeInterval:()=>ai,TimeIntervalCollection:()=>ys,TimeIntervalCollectionPositionProperty:()=>_0,TimeIntervalCollectionProperty:()=>_m,TimeStandard:()=>Di,Timeline:()=>tO,TimelineHighlightRange:()=>qD,TimelineTrack:()=>$D,Tipsify:()=>j2,ToggleButtonViewModel:()=>YU,Tonemapper:()=>FU,Transforms:()=>Pe,TranslationRotationScale:()=>gf,TranslucentTileClassification:()=>q_,TridiagonalSystemSolver:()=>nC,TrustedServers:()=>eE,TweenCollection:()=>yS,UniformState:()=>o2,UniformType:()=>K1,UrlTemplateImageryProvider:()=>Ad,VERSION:()=>XDe,VRButton:()=>nO,VRButtonViewModel:()=>eO,VRTheWorldTerrainProvider:()=>plt,VaryingType:()=>Trt,Vector3DTileBatch:()=>vV,Vector3DTileClampedPolylines:()=>XX,Vector3DTileContent:()=>LX,Vector3DTileGeometry:()=>vR,Vector3DTilePoints:()=>NX,Vector3DTilePolygons:()=>yX,Vector3DTilePolylines:()=>_A,Vector3DTilePrimitive:()=>cA,VelocityOrientationProperty:()=>NJ,VelocityVectorProperty:()=>pT,VertexArray:()=>Ki,VertexArrayFacade:()=>CR,VertexAttributeSemantic:()=>sn,VertexFormat:()=>ee,VerticalExaggeration:()=>Ps,VerticalExaggerationPipelineStage:()=>zx,VerticalOrigin:()=>hi,VideoSynchronizer:()=>ult,View:()=>AS,Viewer:()=>Prt,ViewportQuad:()=>urt,Visibility:()=>Ys,Visualizer:()=>Vot,VoxelBoxShape:()=>Pb,VoxelCell:()=>k9,VoxelContent:()=>L5,VoxelCylinderShape:()=>vb,VoxelEllipsoidShape:()=>YS,VoxelInspector:()=>sO,VoxelInspectorViewModel:()=>aO,VoxelPrimitive:()=>TU,VoxelProvider:()=>Vrt,VoxelRenderResources:()=>z9,VoxelShape:()=>brt,VoxelShapeType:()=>_o,VoxelTraversal:()=>v1,VulkanConstants:()=>Zlt,WallGeometry:()=>oL,WallGeometryLibrary:()=>UT,WallGeometryUpdater:()=>lL,WallGraphics:()=>MR,WallOutlineGeometry:()=>sL,WasmPositionManager:()=>K0,WebGLConstants:()=>pt,WebMapServiceImageryProvider:()=>PM,WebMapTileServiceImageryProvider:()=>hS,WebMercatorProjection:()=>Yo,WebMercatorTilingScheme:()=>Gs,WindingOrder:()=>ws,WireframeIndexGenerator:()=>hC,WireframePipelineStage:()=>jx,_shadersAcesTonemappingStage:()=>t9,_shadersAdditiveBlend:()=>I9,_shadersAdjustTranslucentFS:()=>_1,_shadersAllMaterialAppearanceFS:()=>Z2,_shadersAllMaterialAppearanceVS:()=>V2,_shadersAmbientOcclusionGenerate:()=>e9,_shadersAmbientOcclusionModulate:()=>n9,_shadersAspectRampMaterial:()=>F2,_shadersAtmosphereCommon:()=>rW,_shadersAtmosphereStageFS:()=>wY,_shadersAtmosphereStageVS:()=>PY,_shadersBasicMaterialAppearanceFS:()=>b2,_shadersBasicMaterialAppearanceVS:()=>R2,_shadersBillboardCollectionFS:()=>bX,_shadersBillboardCollectionVS:()=>RX,_shadersBlackAndWhite:()=>i9,_shadersBloomComposite:()=>o9,_shadersBrdfLutGeneratorFS:()=>R_,_shadersBrightPass:()=>N9,_shadersBrightness:()=>a9,_shadersBumpMapMaterial:()=>U2,_shadersCPUStylingStageFS:()=>Rx,_shadersCPUStylingStageVS:()=>bx,_shadersCheckerboardMaterial:()=>G2,_shadersCloudCollectionFS:()=>f5,_shadersCloudCollectionVS:()=>F5,_shadersCloudNoiseFS:()=>U5,_shadersCloudNoiseVS:()=>G5,_shadersCompareAndPackTranslucentDepth:()=>j_,_shadersCompositeOITFS:()=>H_,_shadersCompositeTranslucentClassification:()=>GS,_shadersContrastBias:()=>s9,_shadersCustomShaderStageFS:()=>Fx,_shadersCustomShaderStageVS:()=>fx,_shadersCzmBuiltins:()=>TG,_shadersDepthOfField:()=>l9,_shadersDepthPlaneFS:()=>I_,_shadersDepthPlaneVS:()=>N_,_shadersDepthView:()=>r9,_shadersDepthViewPacked:()=>Grt,_shadersDotMaterial:()=>A2,_shadersEdgeDetection:()=>d9,_shadersElevationBandMaterial:()=>T2,_shadersElevationContourMaterial:()=>S2,_shadersElevationRampMaterial:()=>g2,_shadersEllipsoidFS:()=>k1,_shadersEllipsoidSurfaceAppearanceFS:()=>O5,_shadersEllipsoidSurfaceAppearanceVS:()=>H5,_shadersEllipsoidVS:()=>Y1,_shadersFXAA:()=>m9,_shadersFXAA3_11:()=>b9,_shadersFadeMaterial:()=>E2,_shadersFeatureIdStageFS:()=>Ux,_shadersFeatureIdStageVS:()=>Gx,_shadersFilmicTonemapping:()=>c9,_shadersGaussianBlur1D:()=>fU,_shadersGeometryStageFS:()=>Cx,_shadersGeometryStageVS:()=>Ix,_shadersGlobeFS:()=>kM,_shadersGlobeVS:()=>YM,_shadersGridMaterial:()=>C2,_shadersGroundAtmosphere:()=>W1,_shadersHSBToRGB:()=>uB,_shadersHSLToRGB:()=>ZB,_shadersImageBasedLightingStageFS:()=>KY,_shadersInstancingStageCommon:()=>sx,_shadersInstancingStageVS:()=>lx,_shadersIntersectBox:()=>_9,_shadersIntersectClippingPlanes:()=>M9,_shadersIntersectCylinder:()=>D9,_shadersIntersectDepth:()=>L9,_shadersIntersectEllipsoid:()=>O9,_shadersIntersectLongitude:()=>w1,_shadersIntersection:()=>kS,_shadersIntersectionUtils:()=>J9,_shadersLegacyInstancingStageVS:()=>rx,_shadersLensFlare:()=>h9,_shadersLightingStageFS:()=>Bx,_shadersMaterialStageFS:()=>kx,_shadersMegatexture:()=>K9,_shadersMetadataStageFS:()=>Ax,_shadersMetadataStageVS:()=>Tx,_shadersModelClippingPlanesStageFS:()=>tx,_shadersModelClippingPolygonsStageFS:()=>ix,_shadersModelClippingPolygonsStageVS:()=>nx,_shadersModelColorStageFS:()=>$Y,_shadersModelFS:()=>JY,_shadersModelSilhouetteStageFS:()=>nX,_shadersModelSilhouetteStageVS:()=>iX,_shadersModelSplitterStageFS:()=>aX,_shadersModelVS:()=>LY,_shadersModifiedReinhardTonemapping:()=>p9,_shadersMorphTargetsStageVS:()=>xx,_shadersNightVision:()=>u9,_shadersNormalMapMaterial:()=>I2,_shadersOctahedralProjectionAtlasFS:()=>Ik,_shadersOctahedralProjectionFS:()=>Nk,_shadersOctahedralProjectionVS:()=>yk,_shadersOctree:()=>v9,_shadersPassThrough:()=>nh,_shadersPassThroughDepth:()=>bU,_shadersPerInstanceColorAppearanceFS:()=>L2,_shadersPerInstanceColorAppearanceVS:()=>M2,_shadersPerInstanceFlatColorAppearanceFS:()=>yG,_shadersPerInstanceFlatColorAppearanceVS:()=>_2,_shadersPointCloudEyeDomeLighting:()=>FY,_shadersPointCloudStylingStageVS:()=>Lx,_shadersPointPrimitiveCollectionFS:()=>GF,_shadersPointPrimitiveCollectionVS:()=>FJ,_shadersPolygonSignedDistanceFS:()=>cY,_shadersPolylineArrowMaterial:()=>N2,_shadersPolylineColorAppearanceVS:()=>dk,_shadersPolylineCommon:()=>Uh,_shadersPolylineDashMaterial:()=>y2,_shadersPolylineFS:()=>HG,_shadersPolylineGlowMaterial:()=>B2,_shadersPolylineMaterialAppearanceVS:()=>ck,_shadersPolylineOutlineMaterial:()=>Q2,_shadersPolylineShadowVolumeFS:()=>ak,_shadersPolylineShadowVolumeMorphFS:()=>sk,_shadersPolylineShadowVolumeMorphVS:()=>lk,_shadersPolylineShadowVolumeVS:()=>rk,_shadersPolylineVS:()=>TX,_shadersPrimitiveOutlineStageFS:()=>Dx,_shadersPrimitiveOutlineStageVS:()=>_x,_shadersRGBToHSB:()=>VB,_shadersRGBToHSL:()=>bB,_shadersRGBToXYZ:()=>RB,_shadersReinhardTonemapping:()=>Z9,_shadersReprojectWebMercatorFS:()=>KM,_shadersReprojectWebMercatorVS:()=>zM,_shadersRimLightingMaterial:()=>k2,_shadersSelectedFeatureIdStageCommon:()=>mC,_shadersShadowVolumeAppearanceFS:()=>RE,_shadersShadowVolumeAppearanceVS:()=>P2,_shadersShadowVolumeFS:()=>Uf,_shadersSilhouette:()=>V9,_shadersSkinningStageVS:()=>Px,_shadersSkyAtmosphereCommon:()=>j1,_shadersSkyAtmosphereFS:()=>l5,_shadersSkyAtmosphereVS:()=>r5,_shadersSkyBoxFS:()=>c5,_shadersSkyBoxVS:()=>m5,_shadersSlopeRampMaterial:()=>Y2,_shadersStripeMaterial:()=>x2,_shadersSunFS:()=>p5,_shadersSunTextureFS:()=>u5,_shadersSunVS:()=>Z5,_shadersTexturedMaterialAppearanceFS:()=>W2,_shadersTexturedMaterialAppearanceVS:()=>f2,_shadersVector3DTileClampedPolylinesFS:()=>YX,_shadersVector3DTileClampedPolylinesVS:()=>kX,_shadersVector3DTilePolylinesVS:()=>BX,_shadersVectorTileVS:()=>CE,_shadersVerticalExaggerationStageVS:()=>Kx,_shadersViewportQuadFS:()=>A5,_shadersViewportQuadVS:()=>GG,_shadersVoxelFS:()=>x9,_shadersVoxelUtils:()=>Y9,_shadersVoxelVS:()=>X9,_shadersWater:()=>X2,_shadersXYZToRGB:()=>WB,_shadersacesTonemapping:()=>fB,_shadersalphaWeight:()=>FB,_shadersantialias:()=>UB,_shadersapplyHSBShift:()=>GB,_shadersapproximateSphericalCoordinates:()=>AB,_shadersapproximateTanh:()=>TB,_shadersbackFacing:()=>SB,_shadersbranchFreeTernary:()=>gB,_shaderscascadeColor:()=>EB,_shaderscascadeDistance:()=>CB,_shaderscascadeMatrix:()=>IB,_shaderscascadeWeights:()=>NB,_shadersclipPolygons:()=>yB,_shaderscolumbusViewMorph:()=>BB,_shaderscomputeAtmosphereColor:()=>QB,_shaderscomputeGroundAtmosphereScattering:()=>kB,_shaderscomputePosition:()=>YB,_shaderscomputeScattering:()=>xB,_shadersconvertUvToBox:()=>H9,_shadersconvertUvToCylinder:()=>w9,_shadersconvertUvToEllipsoid:()=>P9,_shaderscosineAndSine:()=>XB,_shadersdecompressTextureCoordinates:()=>JB,_shadersdefaultPbrMaterial:()=>LB,_shadersdegreesPerRadian:()=>Fy,_shadersdepthClamp:()=>MB,_shadersdepthRange:()=>Uy,_shadersdepthRangeStruct:()=>aB,_shaderseastNorthUpToEyeCoordinates:()=>_B,_shadersellipsoidContainsPoint:()=>DB,_shadersellipsoidWgs84TextureCoordinates:()=>OB,_shadersepsilon1:()=>Gy,_shadersepsilon2:()=>Ay,_shadersepsilon3:()=>Ty,_shadersepsilon4:()=>Sy,_shadersepsilon5:()=>gy,_shadersepsilon6:()=>Ey,_shadersepsilon7:()=>Cy,_shadersequalsEpsilon:()=>HB,_shaderseyeOffset:()=>wB,_shaderseyeToWindowCoordinates:()=>PB,_shadersfastApproximateAtan:()=>vB,_shadersfog:()=>KB,_shadersgammaCorrect:()=>zB,_shadersgeodeticSurfaceNormal:()=>jB,_shadersgetDefaultMaterial:()=>qB,_shadersgetDynamicAtmosphereLightDirection:()=>$B,_shadersgetLambertDiffuse:()=>tQ,_shadersgetSpecular:()=>eQ,_shadersgetWaterNoise:()=>nQ,_shadershue:()=>iQ,_shadersinfinity:()=>Iy,_shadersinverseGamma:()=>oQ,_shadersisEmpty:()=>aQ,_shadersisFull:()=>sQ,_shaderslatitudeToWebMercatorFraction:()=>lQ,_shaderslineDistance:()=>rQ,_shaderslinearToSrgb:()=>dQ,_shadersluminance:()=>cQ,_shadersmaterial:()=>sB,_shadersmaterialInput:()=>lB,_shadersmetersPerPixel:()=>mQ,_shadersmodelMaterial:()=>rB,_shadersmodelToWindowCoordinates:()=>hQ,_shadersmodelVertexOutput:()=>dB,_shadersmultiplyWithColorBalance:()=>pQ,_shadersnearFarScalar:()=>uQ,_shadersoctDecode:()=>ZQ,_shadersoneOverPi:()=>Ny,_shadersoneOverTwoPi:()=>yy,_shaderspackDepth:()=>VQ,_shaderspassCesium3DTile:()=>By,_shaderspassCesium3DTileClassification:()=>Qy,_shaderspassCesium3DTileClassificationIgnoreShow:()=>ky,_shaderspassClassification:()=>Yy,_shaderspassCompute:()=>xy,_shaderspassEnvironment:()=>Xy,_shaderspassGlobe:()=>Jy,_shaderspassOpaque:()=>Ly,_shaderspassOverlay:()=>My,_shaderspassTerrainClassification:()=>_y,_shaderspassTranslucent:()=>Dy,_shaderspassVoxels:()=>Oy,_shaderspbrLighting:()=>bQ,_shaderspbrMetallicRoughnessMaterial:()=>RQ,_shaderspbrParameters:()=>cB,_shaderspbrSpecularGlossinessMaterial:()=>WQ,_shadersphong:()=>fQ,_shaderspi:()=>Hy,_shaderspiOverFour:()=>wy,_shaderspiOverSix:()=>Py,_shaderspiOverThree:()=>vy,_shaderspiOverTwo:()=>Ky,_shadersplaneDistance:()=>FQ,_shaderspointAlongRay:()=>UQ,_shadersradiansPerDegree:()=>zy,_shadersray:()=>mB,_shadersrayEllipsoidIntersectionInterval:()=>GQ,_shadersraySegment:()=>hB,_shadersraySphereIntersectionInterval:()=>AQ,_shadersreadDepth:()=>TQ,_shadersreadNonPerspective:()=>SQ,_shadersreverseLogDepth:()=>gQ,_shadersround:()=>EQ,_shaderssampleOctahedralProjection:()=>CQ,_shaderssaturation:()=>IQ,_shaderssceneMode2D:()=>jy,_shaderssceneMode3D:()=>qy,_shaderssceneModeColumbusView:()=>$y,_shaderssceneModeMorphing:()=>tB,_shadersshadowDepthCompare:()=>NQ,_shadersshadowParameters:()=>pB,_shadersshadowVisibility:()=>yQ,_shaderssignNotZero:()=>BQ,_shaderssolarRadius:()=>eB,_shaderssphericalHarmonics:()=>QQ,_shaderssrgbToLinear:()=>kQ,_shaderstangentToEyeSpaceMatrix:()=>YQ,_shaderstextureCube:()=>xQ,_shadersthreePiOver2:()=>nB,_shaderstransformPlane:()=>XQ,_shaderstranslateRelativeToEye:()=>JQ,_shaderstranslucentPhong:()=>LQ,_shaderstranspose:()=>MQ,_shaderstwoPi:()=>iB,_shadersunpackClippingExtents:()=>_Q,_shadersunpackDepth:()=>DQ,_shadersunpackFloat:()=>OQ,_shadersunpackUint:()=>HQ,_shadersvalueTransform:()=>wQ,_shadersvertexLogDepth:()=>PQ,_shaderswebMercatorMaxLatitude:()=>oB,_shaderswindowToEyeCoordinates:()=>vQ,_shaderswriteDepthClamp:()=>KQ,_shaderswriteLogDepth:()=>zQ,_shaderswriteNonPerspective:()=>jQ,addBuffer:()=>zk,addDefaults:()=>_k,addExtensionsRequired:()=>Pk,addExtensionsUsed:()=>Xp,addPipelineExtras:()=>Jf,addToArray:()=>$l,appendForwardSlash:()=>$N,arrayRemoveDuplicates:()=>sa,barycentricCoordinates:()=>YG,binarySearch:()=>Ja,buildDrawCommand:()=>OY,buildModuleUrl:()=>Dn,buildVoxelDrawCommands:()=>q9,cesiumWorkerBootstrapperPackedStringBase64:()=>bot,clone:()=>be,combine:()=>ze,computeFlyToLocationForRectangle:()=>rg,computePositions:()=>qF,conic_sensor_graphics:()=>XT,conic_sensor_visualizer:()=>LT,createBillboardPointCallback:()=>XA,createCommand:()=>bi,createDefaultImageryProviderViewModels:()=>gD,createDefaultTerrainProviderViewModels:()=>ED,createElevationBandMaterial:()=>Wrt,createGooglePhotorealistic3DTileset:()=>frt,createGuid:()=>Si,createMaterialPropertyDescriptor:()=>la,createOsmBuildingsAsync:()=>Frt,createPropertyDescriptor:()=>ft,createRawPropertyDescriptor:()=>gm,createTangentSpaceDebugPrimitive:()=>Urt,createTaskProcessorWorker:()=>Srt,createUniform:()=>hy,createUniformArray:()=>py,createWorldBathymetryAsync:()=>B5,createWorldImageryAsync:()=>pW,createWorldTerrainAsync:()=>KS,custom_pattern_sensor_graphics:()=>_T,custom_pattern_sensor_visualizer:()=>DT,custom_sensor_volume:()=>KZ,custom_sensor_volume_fs_glsl:()=>PI,custom_sensor_volume_vs_glsl:()=>vI,decodeGoogleEarthEnterpriseData:()=>Q5,decodeVectorPolylinePositions:()=>JX,defaultValue:()=>f,defer:()=>kd,defined:()=>c,demodernizeShader:()=>qQ,deprecationWarning:()=>Zr,destroyObject:()=>At,exportKml:()=>Uot,findAccessorMinMax:()=>RA,findContentMetadata:()=>OA,findGroupMetadata:()=>HA,findTileMetadata:()=>DX,forEachTextureInMaterial:()=>XE,formatError:()=>Qb,freezeRenderState:()=>w6,getAbsoluteUri:()=>IV,getAccessorByteStride:()=>Qm,getBaseUri:()=>ty,getBinaryAccessor:()=>Eh,getClipAndStyleCode:()=>iD,getClippingFunction:()=>dW,getComponentReader:()=>e0,getElement:()=>Ui,getExtensionFromUri:()=>pG,getFilenameFromUri:()=>X0,getImageFromTypedArray:()=>n5,getImagePixels:()=>vu,getJsonFromTypedArray:()=>ts,getMagic:()=>mZ,getStringFromTypedArray:()=>Im,getTimestamp:()=>Oi,hasExtension:()=>co,heightReferenceOnEntityPropertyChanged:()=>DR,initialize:()=>KT,isBitSet:()=>Vc,isBlobUri:()=>uG,isCrossOriginUrl:()=>ZG,isDataUri:()=>fR,isLeapYear:()=>Pu,isPointIn2D:()=>lM,isPointIn3D:()=>rM,knockout:()=>Lt,knockout_3_5_1:()=>dg,knockout_es5:()=>hD,loadAndExecuteScript:()=>VG,loadCubeMap:()=>c2,loadImageFromTypedArray:()=>ZA,loadKTX2:()=>Fm,mergeSort:()=>ZW,moveTechniqueRenderStates:()=>wk,moveTechniquesToExtension:()=>vk,numberOfComponentsForType:()=>Ih,objectToQuery:()=>bG,oneTimeWarning:()=>Gn,parseBatchTable:()=>c0,parseFeatureMetadataLegacy:()=>RY,parseGlb:()=>Ok,parseResponseHeaders:()=>ey,parseStructuralMetadata:()=>bY,pickModel:()=>uC,pointInsideTriangle:()=>blt,preprocess3DTileContent:()=>db,processVoxelProperties:()=>j9,queryToObject:()=>Tc,readAccessorPacked:()=>jk,rectangular_pyramid_sensor_volume:()=>PT,rectangular_sensor_graphics:()=>HT,rectangular_sensor_visualizer:()=>vT,removeExtension:()=>WA,removeExtensionsRequired:()=>Dk,removeExtensionsUsed:()=>bA,removePipelineExtras:()=>Hk,removeUnusedElements:()=>Kk,remove_primitive:()=>ac,resizeImageToNextPowerOfTwo:()=>_f,sampleTerrain:()=>k5,sampleTerrainMostDetailed:()=>zS,scaleToGeodeticSurface:()=>hG,sensor_state:()=>JT,sensor_volume_glsl:()=>wI,srgbToLinear:()=>jS,subdivideArray:()=>v2,subscribeAndEvaluate:()=>od,transferTypedArrayTestSrc:()=>Got,updateAccessorComponentTypes:()=>qk,updateVersion:()=>$k,usesExtension:()=>Cs,viewerCSSMixin:()=>vrt,viewerCameraMixin:()=>Krt,viewerCesium3DTilesInspectorMixin:()=>zrt,viewerCesiumInspectorMixin:()=>jrt,viewerDragDropMixin:()=>$rt,viewerPerformanceWatchdogMixin:()=>tdt,viewerReferenceFrameMixin:()=>edt,viewerStorageMixin:()=>ndt,viewerVoxelInspectorMixin:()=>idt,webGLConstantToGlslType:()=>flt,wrapFunction:()=>Y5,writeTextToCanvas:()=>LA});var NSa=R(W(),1);var Uqo=R(W(),1);var JOe=R(W(),1);var dOe=R(W(),1);var jDe=R(W(),1);var ODe=R(W(),1);function WMt(t){return t!=null}var c=WMt;var PDe=R(W(),1);function cG(t){this.name="DeveloperError",this.message=t;let e;try{throw new Error}catch(n){e=n.stack}this.stack=e}c(Object.create)&&(cG.prototype=Object.create(Error.prototype),cG.prototype.constructor=cG);cG.prototype.toString=function(){let t=`${this.name}: ${this.message}`;return c(this.stack)&&(t+=` -${this.stack.toString()}`),t};cG.throwInstantiationError=function(){throw new cG("This function defines an interface and should not be called directly.")};var Ut=cG;var vl={};vl.typeOf={};function fMt(t){return`${t} is required, actual value was undefined`}function Hg(t,e,n){return`Expected ${n} to be typeof ${e}, actual typeof was ${t}`}vl.defined=function(t,e){if(!c(e))throw new Ut(fMt(t))};vl.typeOf.func=function(t,e){if(typeof e!="function")throw new Ut(Hg(typeof e,"function",t))};vl.typeOf.string=function(t,e){if(typeof e!="string")throw new Ut(Hg(typeof e,"string",t))};vl.typeOf.number=function(t,e){if(typeof e!="number")throw new Ut(Hg(typeof e,"number",t))};vl.typeOf.number.lessThan=function(t,e,n){if(vl.typeOf.number(t,e),e>=n)throw new Ut(`Expected ${t} to be less than ${n}, actual value was ${e}`)};vl.typeOf.number.lessThanOrEquals=function(t,e,n){if(vl.typeOf.number(t,e),e>n)throw new Ut(`Expected ${t} to be less than or equal to ${n}, actual value was ${e}`)};vl.typeOf.number.greaterThan=function(t,e,n){if(vl.typeOf.number(t,e),e<=n)throw new Ut(`Expected ${t} to be greater than ${n}, actual value was ${e}`)};vl.typeOf.number.greaterThanOrEquals=function(t,e,n){if(vl.typeOf.number(t,e),e0?1:-1});Me.signNotZero=function(t){return t<0?-1:1};Me.toSNorm=function(t,e){return e=f(e,255),Math.round((Me.clamp(t,-1,1)*.5+.5)*e)};Me.fromSNorm=function(t,e){return e=f(e,255),Me.clamp(t,0,e)/e*2-1};Me.normalize=function(t,e,n){return n=Math.max(n-e,0),n===0?0:Me.clamp((t-e)/n,0,1)};Me.sinh=f(Math.sinh,function(e){return(Math.exp(e)-Math.exp(-e))/2});Me.cosh=f(Math.cosh,function(e){return(Math.exp(e)+Math.exp(-e))/2});Me.lerp=function(t,e,n){return(1-n)*t+n*e};Me.PI=Math.PI;Me.ONE_OVER_PI=1/Math.PI;Me.PI_OVER_TWO=Math.PI/2;Me.PI_OVER_THREE=Math.PI/3;Me.PI_OVER_FOUR=Math.PI/4;Me.PI_OVER_SIX=Math.PI/6;Me.THREE_PI_OVER_TWO=3*Math.PI/2;Me.TWO_PI=2*Math.PI;Me.ONE_OVER_TWO_PI=1/(2*Math.PI);Me.RADIANS_PER_DEGREE=Math.PI/180;Me.DEGREES_PER_RADIAN=180/Math.PI;Me.RADIANS_PER_ARCSECOND=Me.RADIANS_PER_DEGREE/3600;Me.toRadians=function(t){return t*Me.RADIANS_PER_DEGREE};Me.toDegrees=function(t){return t*Me.DEGREES_PER_RADIAN};Me.convertLongitudeRange=function(t){let e=Me.TWO_PI,n=t-Math.floor(t/e)*e;return n<-Math.PI?n+e:n>=Math.PI?n-e:n};Me.clampToLatitudeRange=function(t){return Me.clamp(t,-1*Me.PI_OVER_TWO,Me.PI_OVER_TWO)};Me.negativePiToPi=function(t){return t>=-Me.PI&&t<=Me.PI?t:Me.zeroToTwoPi(t+Me.PI)-Me.PI};Me.zeroToTwoPi=function(t){if(t>=0&&t<=Me.TWO_PI)return t;let e=Me.mod(t,Me.TWO_PI);return Math.abs(e)Me.EPSILON14?Me.TWO_PI:e};Me.mod=function(t,e){return Me.sign(t)===Me.sign(e)&&Math.abs(t)n};Me.greaterThanOrEquals=function(t,e,n){return t-e>-n};var zO=[1];Me.factorial=function(t){let e=zO.length;if(t>=e){let n=zO[e-1];for(let i=e;i<=t;i++){let o=n*i;zO.push(o),n=o}}return zO[t]};Me.incrementWrap=function(t,e,n){return n=f(n,0),++t,t>e&&(t=n),t};Me.isPowerOfTwo=function(t){return t!==0&&(t&t-1)===0};Me.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t};Me.previousPowerOfTwo=function(t){return t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t|=t>>32,t=(t>>>0)-(t>>>1),t};Me.clamp=function(t,e,n){return tn?n:t};var Pct=new t6.default;Me.setRandomNumberSeed=function(t){Pct=new t6.default(t)};Me.nextRandomNumber=function(){return Pct.random()};Me.randomBetween=function(t,e){return Me.nextRandomNumber()*(e-t)+t};Me.acosClamped=function(t){return Math.acos(Me.clamp(t,-1,1))};Me.asinClamped=function(t){return Math.asin(Me.clamp(t,-1,1))};Me.chordLength=function(t,e){return 2*e*Math.sin(t*.5)};Me.logBase=function(t,e){return Math.log(t)/Math.log(e)};Me.cbrt=f(Math.cbrt,function(e){let n=Math.pow(Math.abs(e),.3333333333333333);return e<0?-n:n});Me.log2=f(Math.log2,function(e){return Math.log(e)*Math.LOG2E});Me.fog=function(t,e){let n=t*e;return 1-Math.exp(-(n*n))};Me.fastApproximateAtan=function(t){return t*(-.1784*Math.abs(t)-.0663*t*t+1.0301)};Me.fastApproximateAtan2=function(t,e){let n,i=Math.abs(t);n=Math.abs(e);let o=Math.max(i,n);n=Math.min(i,n);let a=n/o;return i=Me.fastApproximateAtan(a),i=Math.abs(e)>Math.abs(t)?Me.PI_OVER_TWO-i:i,i=t<0?Me.PI-i:i,i=e<0?-i:i,i};var k=Me;function Ie(t,e,n){this.x=f(t,0),this.y=f(e,0),this.z=f(n,0)}Ie.fromSpherical=function(t,e){c(e)||(e=new Ie);let n=t.clock,i=t.cone,o=f(t.magnitude,1),a=o*Math.sin(i);return e.x=a*Math.cos(n),e.y=a*Math.sin(n),e.z=o*Math.cos(i),e};Ie.fromElements=function(t,e,n,i){return c(i)?(i.x=t,i.y=e,i.z=n,i):new Ie(t,e,n)};Ie.clone=function(t,e){if(c(t))return c(e)?(e.x=t.x,e.y=t.y,e.z=t.z,e):new Ie(t.x,t.y,t.z)};Ie.fromCartesian4=Ie.clone;Ie.packedLength=3;Ie.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n++]=t.y,e[n]=t.z,e};Ie.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Ie),n.x=t[e++],n.y=t[e++],n.z=t[e],n};Ie.packArray=function(t,e){let n=t.length,i=n*3;c(e)?!Array.isArray(e)&&e.length!==i||e.length!==i&&(e.length=i):e=new Array(i);for(let o=0;oi&&(o=d,i=m)}let a=1,s=0,l=o6[o],r=a6[o];if(Math.abs(t[Ne.getElementIndex(r,l)])>n){let d=t[Ne.getElementIndex(r,r)],m=t[Ne.getElementIndex(l,l)],h=t[Ne.getElementIndex(r,l)],Z=(d-m)/2/h,b;Z<0?b=-1/(-Z+Math.sqrt(1+Z*Z)):b=1/(Z+Math.sqrt(1+Z*Z)),a=1/Math.sqrt(1+b*b),s=b*a}return e=Ne.clone(Ne.IDENTITY,e),e[Ne.getElementIndex(l,l)]=e[Ne.getElementIndex(r,r)]=a,e[Ne.getElementIndex(r,l)]=s,e[Ne.getElementIndex(l,r)]=-s,e}var tH=new Ne,qct=new Ne;Ne.computeEigenDecomposition=function(t,e){let n=k.EPSILON20,i=10,o=0,a=0;c(e)||(e={});let s=e.unitary=Ne.clone(Ne.IDENTITY,e.unitary),l=e.diagonal=Ne.clone(t,e.diagonal),r=n*IMt(l);for(;ar;)yMt(l,tH),Ne.transpose(tH,qct),Ne.multiply(l,tH,l),Ne.multiply(qct,l,l),Ne.multiply(s,tH,s),++o>2&&(++a,o=0);return e};Ne.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e};Ne.determinant=function(t){let e=t[0],n=t[3],i=t[6],o=t[1],a=t[4],s=t[7],l=t[2],r=t[5],d=t[8];return e*(a*d-r*s)+o*(r*i-n*d)+l*(n*s-a*i)};Ne.inverse=function(t,e){let n=t[0],i=t[1],o=t[2],a=t[3],s=t[4],l=t[5],r=t[6],d=t[7],m=t[8],h=Ne.determinant(t);e[0]=s*m-d*l,e[1]=d*o-i*m,e[2]=i*l-s*o,e[3]=r*l-a*m,e[4]=n*m-r*o,e[5]=a*o-n*l,e[6]=a*d-r*s,e[7]=r*i-n*d,e[8]=n*s-a*i;let Z=1/h;return Ne.multiplyByScalar(e,Z,e)};var BMt=new Ne;Ne.inverseTranspose=function(t,e){return Ne.inverse(Ne.transpose(t,BMt),e)};Ne.equals=function(t,e){return t===e||c(t)&&c(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]};Ne.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n};Ne.IDENTITY=Object.freeze(new Ne(1,0,0,0,1,0,0,0,1));Ne.ZERO=Object.freeze(new Ne(0,0,0,0,0,0,0,0,0));Ne.COLUMN0ROW0=0;Ne.COLUMN0ROW1=1;Ne.COLUMN0ROW2=2;Ne.COLUMN1ROW0=3;Ne.COLUMN1ROW1=4;Ne.COLUMN1ROW2=5;Ne.COLUMN2ROW0=6;Ne.COLUMN2ROW1=7;Ne.COLUMN2ROW2=8;Object.defineProperties(Ne.prototype,{length:{get:function(){return Ne.packedLength}}});Ne.prototype.clone=function(t){return Ne.clone(this,t)};Ne.prototype.equals=function(t){return Ne.equals(this,t)};Ne.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]};Ne.prototype.equalsEpsilon=function(t,e){return Ne.equalsEpsilon(this,t,e)};Ne.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};x2t.exports=Hrt});var JDe={};vO(JDe,{AlphaMode:()=>qZ,AlphaPipelineStage:()=>Vx,Analysis:()=>x1,Animation:()=>GD,AnimationViewModel:()=>AD,Appearance:()=>Va,ApproximateTerrainHeights:()=>Vo,ArcGISTiledElevationTerrainProvider:()=>Tst,ArcGisBaseMapType:()=>oZ,ArcGisMapServerImageryProvider:()=>cW,ArcGisMapService:()=>tp,ArcType:()=>Ln,ArticulationStageType:()=>zd,AssociativeArray:()=>qe,Atmosphere:()=>R_,AtmospherePipelineStage:()=>vY,AttributeCompression:()=>Ni,AttributeType:()=>_n,AutoExposure:()=>b9,AutomaticUniforms:()=>Rb,Axis:()=>$a,AxisAlignedBoundingBox:()=>Ff,B3dmLoader:()=>TY,B3dmParser:()=>GY,BaseLayerPicker:()=>TD,BaseLayerPickerViewModel:()=>SD,BatchTable:()=>kG,BatchTableHierarchy:()=>lA,BatchTexture:()=>Yc,BatchTexturePipelineStage:()=>ux,Billboard:()=>Na,BillboardCollection:()=>yh,BillboardGraphics:()=>Mr,BillboardVisualizer:()=>hk,BingMapsGeocoderService:()=>Est,BingMapsImageryProvider:()=>LM,BingMapsStyle:()=>U1,BlendEquation:()=>pd,BlendFunction:()=>Ha,BlendOption:()=>wa,BlendingState:()=>Pn,BoundingRectangle:()=>Fe,BoundingSphere:()=>Ft,BoundingSphereState:()=>ve,BoundingVolumeSemantics:()=>AA,BoxEmitter:()=>Ult,BoxGeometry:()=>Am,BoxGeometryUpdater:()=>C2,BoxGraphics:()=>PG,BoxOutlineGeometry:()=>tu,BrdfLutGenerator:()=>f_,Buffer:()=>we,BufferLoader:()=>pA,BufferUsage:()=>ce,CPUStylingPipelineStage:()=>Wx,CallbackProperty:()=>Sh,Camera:()=>Aa,CameraEventAggregator:()=>T9,CameraEventType:()=>Mo,CameraFlightPath:()=>U_,Cartesian2:()=>K,Cartesian3:()=>p,Cartesian4:()=>bt,Cartographic:()=>gt,CartographicGeocoderService:()=>Ist,CatmullRomSpline:()=>Nst,Cesium3DContentGroup:()=>sA,Cesium3DTile:()=>iV,Cesium3DTileBatchTable:()=>wb,Cesium3DTileColorBlendMode:()=>Nm,Cesium3DTileContent:()=>Glt,Cesium3DTileContentFactory:()=>DA,Cesium3DTileContentState:()=>rs,Cesium3DTileContentType:()=>nr,Cesium3DTileFeature:()=>Fr,Cesium3DTileFeatureTable:()=>Fu,Cesium3DTileOptimizationHint:()=>jp,Cesium3DTileOptimizations:()=>KX,Cesium3DTilePass:()=>ns,Cesium3DTilePassState:()=>EV,Cesium3DTilePointFeature:()=>R0,Cesium3DTileRefine:()=>ss,Cesium3DTileStyle:()=>qT,Cesium3DTileStyleEngine:()=>eJ,Cesium3DTilesInspector:()=>fD,Cesium3DTilesInspectorViewModel:()=>WD,Cesium3DTilesVoxelProvider:()=>Alt,Cesium3DTileset:()=>Pr,Cesium3DTilesetBaseTraversal:()=>lJ,Cesium3DTilesetCache:()=>qX,Cesium3DTilesetGraphics:()=>tA,Cesium3DTilesetHeatmap:()=>$X,Cesium3DTilesetMetadata:()=>$A,Cesium3DTilesetMostDetailedTraversal:()=>oJ,Cesium3DTilesetSkipTraversal:()=>cJ,Cesium3DTilesetStatistics:()=>N0,Cesium3DTilesetTraversal:()=>Tr,Cesium3DTilesetVisualizer:()=>mJ,CesiumInspector:()=>ND,CesiumInspectorViewModel:()=>ID,CesiumTerrainProvider:()=>HT,CesiumWidget:()=>W5,Check:()=>Xa,CheckerboardMaterialProperty:()=>yC,CircleEmitter:()=>M5,CircleGeometry:()=>xst,CircleOutlineGeometry:()=>Xst,ClassificationModelDrawCommand:()=>_Y,ClassificationPipelineStage:()=>Zx,ClassificationPrimitive:()=>fE,ClassificationType:()=>Ji,ClassifyOrbit:()=>_tt,ClearCommand:()=>ao,ClippingPlane:()=>SA,ClippingPlaneCollection:()=>Ml,ClippingPolygon:()=>KE,ClippingPolygonCollection:()=>bu,Clock:()=>ku,ClockRange:()=>pl,ClockSpeedUp:()=>Jst,ClockStep:()=>ya,ClockViewModel:()=>uD,CloudCollection:()=>Ilt,CloudType:()=>mN,Color:()=>v,ColorBlendMode:()=>Kd,ColorGeometryInstanceAttribute:()=>En,ColorMaterialProperty:()=>Cn,Command:()=>Crt,ComponentDatatype:()=>it,Composite3DTileContent:()=>Y2,CompositeEntityCollection:()=>Ott,CompositeMaterialProperty:()=>QC,CompositePositionProperty:()=>cl,CompositeProperty:()=>ec,CompressedTextureBuffer:()=>Ry,ComputeCommand:()=>Wm,ComputeEngine:()=>uy,ConditionsExpression:()=>x5,ConeEmitter:()=>ylt,ConjunctionAssessmentTask:()=>Mst,ConstantPositionProperty:()=>jl,ConstantProperty:()=>Ii,ConstantSpline:()=>IY,ContentMetadata:()=>MX,Context:()=>ak,ContextLimits:()=>Tn,CoplanarPolygonGeometry:()=>HJ,CoplanarPolygonGeometryLibrary:()=>S0,CoplanarPolygonOutlineGeometry:()=>nV,CornerType:()=>Xo,CorridorGeometry:()=>aS,CorridorGeometryLibrary:()=>Po,CorridorGeometryUpdater:()=>fJ,CorridorGraphics:()=>KG,CorridorOutlineGeometry:()=>WJ,CoverageGroupDataSource:()=>TJ,CoveragePolygonGeometry:()=>PJ,CoveragePolygonGeometryLibrary:()=>hI,Credit:()=>on,CreditDisplay:()=>T_,CubeMap:()=>Ld,CubeMapFace:()=>XZ,CubicRealPolynomial:()=>BG,CullFace:()=>so,CullingVolume:()=>Jl,CumulusCloud:()=>hp,CustomDataSource:()=>hR,CustomHeightmapTerrainProvider:()=>_st,CustomShader:()=>JT,CustomShaderMode:()=>u0,CustomShaderPipelineStage:()=>Tx,CustomShaderTranslucencyMode:()=>iF,CylinderGeometry:()=>gJ,CylinderGeometryLibrary:()=>sS,CylinderGeometryUpdater:()=>CJ,CylinderGraphics:()=>zG,CylinderOutlineGeometry:()=>EJ,CzmlDataSource:()=>O0,DataSource:()=>ml,DataSourceClock:()=>Yu,DataSourceCollection:()=>YJ,DataSourceDisplay:()=>kF,DebugAppearance:()=>Blt,DebugCameraPrimitive:()=>JR,DebugInspector:()=>Q9,DebugModelMatrixPrimitive:()=>D5,DefaultProxy:()=>Dst,DepthFunction:()=>_d,DepthPlane:()=>Q_,DequantizationPipelineStage:()=>Ex,DerivedCommand:()=>ZW,DeveloperError:()=>Ut,DeviceOrientationCameraController:()=>Y_,DirectionalLight:()=>Qlt,DiscardEmptyTileImagePolicy:()=>G1,DiscardMissingTileImagePolicy:()=>XM,DistanceDisplayCondition:()=>Wn,DistanceDisplayConditionGeometryInstanceAttribute:()=>Xi,DoubleEndedPriorityQueue:()=>xT,DoublyLinkedList:()=>jX,DracoLoader:()=>$b,DrawCommand:()=>Ee,DynamicAtmosphereLightingType:()=>VT,DynamicGeometryBatch:()=>uS,DynamicGeometryUpdater:()=>lo,EarthOrientationParameters:()=>ly,EarthOrientationParametersSample:()=>lf,EasingFunction:()=>ul,EllipseGeometry:()=>Pc,EllipseGeometryLibrary:()=>Om,EllipseGeometryUpdater:()=>XJ,EllipseGraphics:()=>jG,EllipseOutlineGeometry:()=>Lh,Ellipsoid:()=>mt,EllipsoidGeodesic:()=>ou,EllipsoidGeometry:()=>Cr,EllipsoidGeometryUpdater:()=>LJ,EllipsoidGraphics:()=>qG,EllipsoidOutlineGeometry:()=>Qh,EllipsoidPrimitive:()=>h_,EllipsoidRhumbLine:()=>Vd,EllipsoidSurfaceAppearance:()=>klt,EllipsoidTangentPlane:()=>Fl,EllipsoidTerrainProvider:()=>bV,EllipsoidalOccluder:()=>Bu,EmbeddedTileServiceImageryProvider:()=>Ylt,Empty3DTileContent:()=>WC,EncodedCartesian3:()=>Mi,Entity:()=>qa,EntityCluster:()=>Yh,EntityCollection:()=>gr,EntityView:()=>AL,Event:()=>It,EventHelper:()=>rl,Expression:()=>xp,ExpressionNodeType:()=>tn,ExternalData:()=>y6,ExtrapolationType:()=>Ah,FeatureDetection:()=>In,FeatureIdPipelineStage:()=>nF,FlatbufferUtilities:()=>a1,Fog:()=>x_,ForEach:()=>ne,FrameRateMonitor:()=>P5,FrameState:()=>X_,Framebuffer:()=>Lr,FramebufferManager:()=>bo,FrustumCommands:()=>__,FrustumGeometry:()=>ZT,FrustumOutlineGeometry:()=>C_,Fullscreen:()=>Ds,FullscreenButton:()=>BD,FullscreenButtonViewModel:()=>yD,GenerateAccessReport:()=>Ost,GeoJsonDataSource:()=>gL,GeoJsonLoader:()=>gY,GeocodeType:()=>IU,Geocoder:()=>kD,GeocoderService:()=>sN,GeocoderViewModel:()=>QD,GeographicProjection:()=>yo,GeographicTilingScheme:()=>Qo,Geometry:()=>_e,Geometry3DTileContent:()=>X2,GeometryAttribute:()=>jt,GeometryAttributes:()=>ei,GeometryFactory:()=>Hst,GeometryInstance:()=>$e,GeometryInstanceAttribute:()=>Dd,GeometryOffsetAttribute:()=>zn,GeometryPipeline:()=>gi,GeometryPipelineStage:()=>yx,GeometryType:()=>gp,GeometryUpdater:()=>ro,GeometryUpdaterSet:()=>gS,GeometryVisualizer:()=>dL,GetFeatureInfoFormat:()=>cT,Globe:()=>r_,GlobeDepth:()=>D_,GlobeSurfaceShaderSet:()=>xM,GlobeSurfaceTile:()=>SV,GlobeSurfaceTileProvider:()=>qM,GlobeTranslucency:()=>$M,GlobeTranslucencyFramebuffer:()=>O_,GlobeTranslucencyState:()=>J_,GltfBufferViewLoader:()=>QE,GltfDracoLoader:()=>kE,GltfImageLoader:()=>YE,GltfIndexBufferLoader:()=>xE,GltfJsonLoader:()=>JE,GltfLoader:()=>s0,GltfLoaderUtil:()=>km,GltfStructuralMetadataLoader:()=>WY,GltfTextureLoader:()=>LE,GltfVertexBufferLoader:()=>ME,GoogleEarthEnterpriseImageryProvider:()=>Xlt,GoogleEarthEnterpriseMapsProvider:()=>DM,GoogleEarthEnterpriseMetadata:()=>EW,GoogleEarthEnterpriseTerrainData:()=>lN,GoogleEarthEnterpriseTerrainProvider:()=>$st,GoogleEarthEnterpriseTileInformation:()=>E5,GoogleMaps:()=>PT,GpxDataSource:()=>NL,GregorianDate:()=>Wb,GridImageryProvider:()=>Jlt,GridMaterialProperty:()=>OC,GroundGeometryUpdater:()=>_i,GroundPolylineGeometry:()=>kb,GroundPolylinePrimitive:()=>Gh,GroundPrimitive:()=>Nc,GroupMetadata:()=>CC,HeadingPitchRange:()=>uV,HeadingPitchRoll:()=>Jr,Heap:()=>iy,HeightReference:()=>Ge,HeightmapEncoding:()=>UV,HeightmapTerrainData:()=>Gd,HeightmapTessellator:()=>R1,HermitePolynomialApproximation:()=>rS,HermiteSpline:()=>$f,HilbertOrder:()=>IE,HomeButton:()=>xD,HomeButtonViewModel:()=>YD,HorizontalOrigin:()=>to,I3SBuildingSceneLayerExplorer:()=>Xrt,I3SBuildingSceneLayerExplorerViewModel:()=>XD,I3SDataProvider:()=>bZ,I3SDecoder:()=>v5,I3SFeature:()=>K5,I3SField:()=>z5,I3SGeometry:()=>hN,I3SLayer:()=>ig,I3SNode:()=>pN,I3SStatistics:()=>$5,I3SSublayer:()=>eD,I3SSymbology:()=>q5,I3dmLoader:()=>CY,I3dmParser:()=>EY,Iau2000Orientation:()=>c_,Iau2006XysData:()=>cy,Iau2006XysSample:()=>UG,IauOrientationAxes:()=>m_,IauOrientationParameters:()=>d_,ImageBasedLighting:()=>aA,ImageBasedLightingPipelineStage:()=>zY,ImageMaterialProperty:()=>Tf,Imagery:()=>C1,ImageryLayer:()=>$r,ImageryLayerCollection:()=>t_,ImageryLayerFeatureInfo:()=>iZ,ImageryProvider:()=>$c,ImageryState:()=>ho,Implicit3DTileContent:()=>DE,ImplicitAvailabilityBitstream:()=>yE,ImplicitMetadataView:()=>BE,ImplicitSubdivisionScheme:()=>Al,ImplicitSubtree:()=>UA,ImplicitSubtreeCache:()=>J5,ImplicitSubtreeMetadata:()=>J2,ImplicitTileCoordinates:()=>nS,ImplicitTileset:()=>eS,IndexDatatype:()=>re,InfoBox:()=>LD,InfoBoxViewModel:()=>JD,InspectorShared:()=>gd,InstanceAttributeSemantic:()=>Tl,InstancingPipelineStage:()=>cx,InterpolationAlgorithm:()=>tlt,InterpolationType:()=>Wu,Intersect:()=>yn,IntersectionTests:()=>no,Intersections2D:()=>TW,Interval:()=>hd,InvertClassification:()=>M1,Ion:()=>cu,IonGeocoderService:()=>N5,IonImageryProvider:()=>mW,IonResource:()=>gh,IonWorldImageryStyle:()=>hW,Iso8601:()=>be,JobScheduler:()=>L_,JobType:()=>Zd,JsonMetadataTable:()=>o0,JulianDate:()=>rt,KTX2Transcoder:()=>by,KeyboardEventModifier:()=>id,KeyframeNode:()=>ra,KmlCamera:()=>yL,KmlDataSource:()=>iM,KmlLookAt:()=>zL,KmlTour:()=>jL,KmlTourFlyTo:()=>$L,KmlTourWait:()=>tM,Label:()=>cF,LabelCollection:()=>sR,LabelGraphics:()=>au,LabelStyle:()=>Pa,LabelVisualizer:()=>cL,LagrangePolynomialApproximation:()=>dS,LatLonGrid:()=>Pit,LeapSecond:()=>zo,Light:()=>Dlt,LightingModel:()=>nR,LightingPipelineStage:()=>Qx,LinearApproximation:()=>_b,LinearSpline:()=>qf,MakeBillboardLabel:()=>Olt,ManagedArray:()=>kc,MapMode2D:()=>eh,MapProjection:()=>ilt,MapboxImageryProvider:()=>OM,MapboxStyleImageryProvider:()=>Hlt,Material:()=>eo,MaterialAppearance:()=>Fa,MaterialPipelineStage:()=>Yx,MaterialProperty:()=>Ua,Math:()=>k,Matrix2:()=>pa,Matrix3:()=>ot,Matrix4:()=>L,Megatexture:()=>P1,MetadataClass:()=>Vu,MetadataClassProperty:()=>kf,MetadataComponentType:()=>vn,MetadataEntity:()=>Yi,MetadataEnum:()=>nY,MetadataEnumValue:()=>eY,MetadataPipelineStage:()=>_p,MetadataSchema:()=>uu,MetadataSchemaLoader:()=>_E,MetadataSemantic:()=>GA,MetadataTable:()=>Bm,MetadataTableProperty:()=>M2,MetadataType:()=>Nn,MipmapHint:()=>JZ,Model:()=>Au,Model3DTileContent:()=>iR,ModelAlphaOptions:()=>tX,ModelAnimation:()=>QY,ModelAnimationChannel:()=>BY,ModelAnimationCollection:()=>kY,ModelAnimationLoop:()=>xm,ModelAnimationState:()=>Uu,ModelArticulation:()=>qY,ModelArticulationStage:()=>jY,ModelClippingPlanesPipelineStage:()=>ex,ModelClippingPolygonsPipelineStage:()=>ox,ModelColorPipelineStage:()=>eF,ModelComponents:()=>Sn,ModelDrawCommand:()=>DY,ModelFeature:()=>YY,ModelFeatureTable:()=>XY,ModelGraphics:()=>Jb,ModelLightingOptions:()=>rX,ModelMatrixUpdateStage:()=>mx,ModelNode:()=>ax,ModelRenderResources:()=>eX,ModelRuntimeNode:()=>px,ModelRuntimePrimitive:()=>qx,ModelSceneGraph:()=>cX,ModelSilhouettePipelineStage:()=>oX,ModelSkin:()=>$x,ModelSplitterPipelineStage:()=>sX,ModelStatistics:()=>mX,ModelType:()=>Is,ModelUtility:()=>Mn,ModelVisualizer:()=>mL,Moon:()=>V_,MorphTargetsPipelineStage:()=>Xx,MorphWeightSpline:()=>olt,MortonOrder:()=>ZF,Multiple3DTileContent:()=>OX,MultisampleFramebuffer:()=>sk,NavigationHelpButton:()=>_D,NavigationHelpButtonViewModel:()=>MD,NearFarScalar:()=>ln,NeverTileDiscardPolicy:()=>Plt,NodeRenderResources:()=>lX,NodeStatisticsPipelineStage:()=>hx,NodeTransformationProperty:()=>$G,OIT:()=>w_,Occluder:()=>u_,OctahedralProjectedCubeMap:()=>du,OffsetGeometryInstanceAttribute:()=>aa,OpenCageGeocoderService:()=>slt,OpenStreetMapImageryProvider:()=>IW,OrderedGroundPrimitiveCollection:()=>xJ,OrientedBoundingBox:()=>ci,OrthographicFrustum:()=>wn,OrthographicOffCenterFrustum:()=>el,Packable:()=>llt,PackableForInterpolation:()=>rlt,Particle:()=>ZN,ParticleBurst:()=>Klt,ParticleEmitter:()=>zlt,ParticleSystem:()=>jlt,Pass:()=>Pt,PassState:()=>Md,PathGraphics:()=>Lb,PathVisualizer:()=>VL,PeliasGeocoderService:()=>I5,PerInstanceColorAppearance:()=>jn,PerformanceDisplay:()=>RW,PerformanceWatchdog:()=>OD,PerformanceWatchdogViewModel:()=>DD,PerspectiveFrustum:()=>Io,PerspectiveOffCenterFrustum:()=>em,PickDepth:()=>M_,PickDepthFramebuffer:()=>v_,PickFramebuffer:()=>z_,Picking:()=>$_,PickingPipelineStage:()=>Jx,PinBuilder:()=>q0,PixelDatatype:()=>Ue,PixelFormat:()=>Ye,Plane:()=>Kn,PlaneGeometry:()=>MJ,PlaneGeometryUpdater:()=>DJ,PlaneGraphics:()=>U2,PlaneOutlineGeometry:()=>_J,PlanetImageryProvider:()=>qlt,PntsLoader:()=>pX,PntsParser:()=>xA,PointCloud:()=>aD,PointCloudEyeDomeLighting:()=>l0,PointCloudShading:()=>eR,PointCloudStylingPipelineStage:()=>Mx,PointGraphics:()=>eA,PointPrimitive:()=>Er,PointPrimitiveCollection:()=>JC,PointVisualizer:()=>ZL,PolygonGeometry:()=>i0,PolygonGeometryLibrary:()=>Fi,PolygonGeometryUpdater:()=>vJ,PolygonGraphics:()=>su,PolygonHierarchy:()=>Wr,PolygonOutlineGeometry:()=>wJ,PolygonPipeline:()=>wi,Polyline:()=>vp,PolylineArrowMaterialProperty:()=>wC,PolylineCollection:()=>Mc,PolylineColorAppearance:()=>Ul,PolylineDashMaterialProperty:()=>vC,PolylineGeometry:()=>j0,PolylineGeometryUpdater:()=>WL,PolylineGlowMaterialProperty:()=>zC,PolylineGraphics:()=>Od,PolylineMaterialAppearance:()=>zl,PolylineOutlineMaterialProperty:()=>AF,PolylinePipeline:()=>xo,PolylineVisualizer:()=>FL,PolylineVolumeGeometry:()=>jJ,PolylineVolumeGeometryLibrary:()=>Iu,PolylineVolumeGeometryUpdater:()=>eL,PolylineVolumeGraphics:()=>nA,PolylineVolumeOutlineGeometry:()=>tL,PositionProperty:()=>xb,PositionPropertyArray:()=>L0,PostProcessStage:()=>Qa,PostProcessStageCollection:()=>U9,PostProcessStageComposite:()=>nm,PostProcessStageLibrary:()=>IV,PostProcessStageSampleMode:()=>op,PostProcessStageTextureCache:()=>ET,Primitive:()=>Wi,PrimitiveCollection:()=>Dm,PrimitiveLoadPlan:()=>yA,PrimitiveOutlineGenerator:()=>NA,PrimitiveOutlinePipelineStage:()=>Ox,PrimitivePipeline:()=>MG,PrimitiveRenderResources:()=>dX,PrimitiveState:()=>vs,PrimitiveStatisticsPipelineStage:()=>Hx,PrimitiveType:()=>le,ProjectionPicker:()=>wD,ProjectionPickerViewModel:()=>HD,Property:()=>et,PropertyArray:()=>qC,PropertyAttribute:()=>IA,PropertyAttributeProperty:()=>uY,PropertyBag:()=>Em,PropertyTable:()=>Xc,PropertyTexture:()=>CA,PropertyTextureProperty:()=>VY,ProviderViewModel:()=>Nl,Proxy:()=>dlt,QuadraticRealPolynomial:()=>Cc,QuadtreeOccluders:()=>e_,QuadtreePrimitive:()=>l_,QuadtreeTile:()=>n_,QuadtreeTileLoadState:()=>Br,QuadtreeTileProvider:()=>ort,QuantizedMeshTerrainData:()=>OT,QuarticRealPolynomial:()=>wk,Quaternion:()=>wt,QuaternionSpline:()=>yY,Queue:()=>$Z,Ray:()=>di,Rectangle:()=>Gt,RectangleCollisionChecker:()=>CS,RectangleGeometry:()=>FS,RectangleGeometryLibrary:()=>ir,RectangleGeometryUpdater:()=>nL,RectangleGraphics:()=>lu,RectangleOutlineGeometry:()=>wA,ReferenceFrame:()=>ri,ReferenceProperty:()=>M0,RenderState:()=>he,Renderbuffer:()=>Rh,RenderbufferFormat:()=>Tc,Request:()=>us,RequestErrorEvent:()=>yZ,RequestScheduler:()=>xd,RequestState:()=>qi,RequestType:()=>Xl,Resource:()=>te,ResourceCache:()=>jo,ResourceCacheKey:()=>Ym,ResourceCacheStatistics:()=>sY,ResourceLoader:()=>Za,ResourceLoaderState:()=>pn,Rotation:()=>rV,RuntimeError:()=>Tt,S2Cell:()=>Kb,SDFSettings:()=>Ar,SampledPositionProperty:()=>Bs,SampledProperty:()=>ql,Sampler:()=>Hn,ScaledPositionProperty:()=>vc,Scene:()=>s5,SceneFramebuffer:()=>FT,SceneMode:()=>Vt,SceneMode2DPipelineStage:()=>wx,SceneModePicker:()=>vD,SceneModePickerViewModel:()=>PD,SceneTransforms:()=>qo,SceneTransitioner:()=>S9,ScreenSpaceCameraController:()=>C9,ScreenSpaceEventHandler:()=>sp,ScreenSpaceEventType:()=>ui,SelectedFeatureIdPipelineStage:()=>oF,SelectionIndicator:()=>jD,SelectionIndicatorViewModel:()=>zD,Sensor:()=>oW,SensorVolumePortionToDisplay:()=>nI,SensorVolumes:()=>dot,SerializePosition:()=>g5,ShaderBuilder:()=>EG,ShaderCache:()=>$Q,ShaderDestination:()=>Xt,ShaderFunction:()=>dk,ShaderProgram:()=>xn,ShaderSource:()=>Ze,ShaderStruct:()=>rk,ShadowMap:()=>fW,ShadowMapShader:()=>DR,ShadowMode:()=>Vi,ShadowVolumeAppearance:()=>Fh,ShowGeometryInstanceAttribute:()=>pi,Simon1994PlanetaryPositions:()=>_Z,SimplePolylineGeometry:()=>clt,SingleTileImageryProvider:()=>HM,SkinningPipelineStage:()=>vx,SkyAtmosphere:()=>d5,SkyBox:()=>h5,SpaceCatalogDataSource:()=>BM,SpaceEntity:()=>oT,SpatialNode:()=>e5,SphereEmitter:()=>srt,SphereGeometry:()=>mlt,SphereOutlineGeometry:()=>g0,Spherical:()=>Oc,Spline:()=>Ra,SplitDirection:()=>Jc,Splitter:()=>bN,StaticGeometryColorBatch:()=>mV,StaticGeometryPerMaterialBatch:()=>hV,StaticGroundGeometryColorBatch:()=>UI,StaticGroundGeometryPerMaterialBatch:()=>rL,StaticGroundPolylinePerMaterialBatch:()=>fL,StaticOutlineGeometryBatch:()=>SI,StencilConstants:()=>gn,StencilFunction:()=>Li,StencilOperation:()=>je,SteppedSpline:()=>NY,Stereographic:()=>vd,StripeMaterialProperty:()=>tI,StripeOrientation:()=>xu,StructuralMetadata:()=>Rd,StyleCommandsNeeded:()=>Gu,StyleExpression:()=>lrt,Sun:()=>b5,SunLight:()=>gb,SunPostProcess:()=>y9,SupportedImageFormats:()=>fY,SvgPathBindingHandler:()=>pD,TaskProcessor:()=>$i,Terrain:()=>lD,TerrainData:()=>nZ,TerrainEncoding:()=>lc,TerrainFillMesh:()=>B1,TerrainMesh:()=>AV,TerrainOffsetProperty:()=>iA,TerrainProvider:()=>El,TerrainQuantization:()=>yr,TerrainState:()=>Ga,Texture:()=>hn,TextureAtlas:()=>dF,TextureCache:()=>tk,TextureMagnificationFilter:()=>Ro,TextureManager:()=>i5,TextureMinificationFilter:()=>On,TextureUniform:()=>Art,TextureWrap:()=>Zi,TileAvailability:()=>pZ,TileBoundingRegion:()=>eV,TileBoundingS2Cell:()=>PX,TileBoundingSphere:()=>E0,TileBoundingVolume:()=>rrt,TileCoordinatesImageryProvider:()=>dD,TileDiscardPolicy:()=>crt,TileEdge:()=>mi,TileImagery:()=>I1,TileMapServiceImageryProvider:()=>hU,TileMetadata:()=>_X,TileOrientedBoundingBox:()=>kh,TileProviderError:()=>za,TileReplacementQueue:()=>i_,TileSelectionResult:()=>Pi,TileState:()=>mrt,Tileset3DTileContent:()=>ZX,TilesetMetadata:()=>vX,TilesetPipelineStage:()=>HY,TilingScheme:()=>hlt,TimeConstants:()=>xi,TimeDynamicImagery:()=>mT,TimeDynamicPointCloud:()=>UN,TimeInterval:()=>ai,TimeIntervalCollection:()=>ys,TimeIntervalCollectionPositionProperty:()=>_0,TimeIntervalCollectionProperty:()=>_m,TimeStandard:()=>Di,Timeline:()=>tO,TimelineHighlightRange:()=>qD,TimelineTrack:()=>$D,Tipsify:()=>jk,ToggleButtonViewModel:()=>YU,Tonemapper:()=>FU,Transforms:()=>Pe,TranslationRotationScale:()=>gf,TranslucentTileClassification:()=>q_,TridiagonalSystemSolver:()=>nC,TrustedServers:()=>eE,TweenCollection:()=>yT,UniformState:()=>ok,UniformType:()=>K1,UrlTemplateImageryProvider:()=>Ad,VERSION:()=>XDe,VRButton:()=>nO,VRButtonViewModel:()=>eO,VRTheWorldTerrainProvider:()=>plt,VaryingType:()=>Srt,Vector3DTileBatch:()=>vZ,Vector3DTileClampedPolylines:()=>XX,Vector3DTileContent:()=>LX,Vector3DTileGeometry:()=>vb,Vector3DTilePoints:()=>NX,Vector3DTilePolygons:()=>yX,Vector3DTilePolylines:()=>_A,Vector3DTilePrimitive:()=>cA,VelocityOrientationProperty:()=>NJ,VelocityVectorProperty:()=>pS,VertexArray:()=>Ki,VertexArrayFacade:()=>Cb,VertexAttributeSemantic:()=>sn,VertexFormat:()=>ee,VerticalExaggeration:()=>Ps,VerticalExaggerationPipelineStage:()=>zx,VerticalOrigin:()=>hi,VideoSynchronizer:()=>Vlt,View:()=>AT,Viewer:()=>Prt,ViewportQuad:()=>Vrt,Visibility:()=>Ys,Visualizer:()=>Zot,VoxelBoxShape:()=>PR,VoxelCell:()=>k9,VoxelContent:()=>L5,VoxelCylinderShape:()=>vR,VoxelEllipsoidShape:()=>YT,VoxelInspector:()=>sO,VoxelInspectorViewModel:()=>aO,VoxelPrimitive:()=>SU,VoxelProvider:()=>Zrt,VoxelRenderResources:()=>z9,VoxelShape:()=>Rrt,VoxelShapeType:()=>_o,VoxelTraversal:()=>v1,VulkanConstants:()=>ult,WallGeometry:()=>oL,WallGeometryLibrary:()=>US,WallGeometryUpdater:()=>lL,WallGraphics:()=>Mb,WallOutlineGeometry:()=>sL,WasmPositionManager:()=>K0,WebGLConstants:()=>pt,WebMapServiceImageryProvider:()=>PM,WebMapTileServiceImageryProvider:()=>hT,WebMercatorProjection:()=>Yo,WebMercatorTilingScheme:()=>Gs,WindingOrder:()=>ws,WireframeIndexGenerator:()=>hC,WireframePipelineStage:()=>jx,_shadersAcesTonemappingStage:()=>t9,_shadersAdditiveBlend:()=>I9,_shadersAdjustTranslucentFS:()=>_1,_shadersAllMaterialAppearanceFS:()=>uk,_shadersAllMaterialAppearanceVS:()=>Zk,_shadersAmbientOcclusionGenerate:()=>e9,_shadersAmbientOcclusionModulate:()=>n9,_shadersAspectRampMaterial:()=>Fk,_shadersAtmosphereCommon:()=>rW,_shadersAtmosphereStageFS:()=>wY,_shadersAtmosphereStageVS:()=>PY,_shadersBasicMaterialAppearanceFS:()=>Rk,_shadersBasicMaterialAppearanceVS:()=>bk,_shadersBillboardCollectionFS:()=>RX,_shadersBillboardCollectionVS:()=>bX,_shadersBlackAndWhite:()=>i9,_shadersBloomComposite:()=>o9,_shadersBrdfLutGeneratorFS:()=>b_,_shadersBrightPass:()=>N9,_shadersBrightness:()=>a9,_shadersBumpMapMaterial:()=>Uk,_shadersCPUStylingStageFS:()=>bx,_shadersCPUStylingStageVS:()=>Rx,_shadersCheckerboardMaterial:()=>Gk,_shadersCloudCollectionFS:()=>f5,_shadersCloudCollectionVS:()=>F5,_shadersCloudNoiseFS:()=>U5,_shadersCloudNoiseVS:()=>G5,_shadersCompareAndPackTranslucentDepth:()=>j_,_shadersCompositeOITFS:()=>H_,_shadersCompositeTranslucentClassification:()=>GT,_shadersContrastBias:()=>s9,_shadersCustomShaderStageFS:()=>Fx,_shadersCustomShaderStageVS:()=>fx,_shadersCzmBuiltins:()=>SG,_shadersDepthOfField:()=>l9,_shadersDepthPlaneFS:()=>I_,_shadersDepthPlaneVS:()=>N_,_shadersDepthView:()=>r9,_shadersDepthViewPacked:()=>Grt,_shadersDotMaterial:()=>Ak,_shadersEdgeDetection:()=>d9,_shadersElevationBandMaterial:()=>Sk,_shadersElevationContourMaterial:()=>Tk,_shadersElevationRampMaterial:()=>gk,_shadersEllipsoidFS:()=>k1,_shadersEllipsoidSurfaceAppearanceFS:()=>O5,_shadersEllipsoidSurfaceAppearanceVS:()=>H5,_shadersEllipsoidVS:()=>Y1,_shadersFXAA:()=>m9,_shadersFXAA3_11:()=>R9,_shadersFadeMaterial:()=>Ek,_shadersFeatureIdStageFS:()=>Ux,_shadersFeatureIdStageVS:()=>Gx,_shadersFilmicTonemapping:()=>c9,_shadersGaussianBlur1D:()=>fU,_shadersGeometryStageFS:()=>Cx,_shadersGeometryStageVS:()=>Ix,_shadersGlobeFS:()=>kM,_shadersGlobeVS:()=>YM,_shadersGridMaterial:()=>Ck,_shadersGroundAtmosphere:()=>W1,_shadersHSBToRGB:()=>VB,_shadersHSLToRGB:()=>uB,_shadersImageBasedLightingStageFS:()=>KY,_shadersInstancingStageCommon:()=>sx,_shadersInstancingStageVS:()=>lx,_shadersIntersectBox:()=>_9,_shadersIntersectClippingPlanes:()=>M9,_shadersIntersectCylinder:()=>D9,_shadersIntersectDepth:()=>L9,_shadersIntersectEllipsoid:()=>O9,_shadersIntersectLongitude:()=>w1,_shadersIntersection:()=>kT,_shadersIntersectionUtils:()=>J9,_shadersLegacyInstancingStageVS:()=>rx,_shadersLensFlare:()=>h9,_shadersLightingStageFS:()=>Bx,_shadersMaterialStageFS:()=>kx,_shadersMegatexture:()=>K9,_shadersMetadataStageFS:()=>Ax,_shadersMetadataStageVS:()=>Sx,_shadersModelClippingPlanesStageFS:()=>tx,_shadersModelClippingPolygonsStageFS:()=>ix,_shadersModelClippingPolygonsStageVS:()=>nx,_shadersModelColorStageFS:()=>$Y,_shadersModelFS:()=>JY,_shadersModelSilhouetteStageFS:()=>nX,_shadersModelSilhouetteStageVS:()=>iX,_shadersModelSplitterStageFS:()=>aX,_shadersModelVS:()=>LY,_shadersModifiedReinhardTonemapping:()=>p9,_shadersMorphTargetsStageVS:()=>xx,_shadersNightVision:()=>V9,_shadersNormalMapMaterial:()=>Ik,_shadersOctahedralProjectionAtlasFS:()=>I2,_shadersOctahedralProjectionFS:()=>N2,_shadersOctahedralProjectionVS:()=>y2,_shadersOctree:()=>v9,_shadersPassThrough:()=>nh,_shadersPassThroughDepth:()=>RU,_shadersPerInstanceColorAppearanceFS:()=>Lk,_shadersPerInstanceColorAppearanceVS:()=>Mk,_shadersPerInstanceFlatColorAppearanceFS:()=>yG,_shadersPerInstanceFlatColorAppearanceVS:()=>_k,_shadersPointCloudEyeDomeLighting:()=>FY,_shadersPointCloudStylingStageVS:()=>Lx,_shadersPointPrimitiveCollectionFS:()=>GF,_shadersPointPrimitiveCollectionVS:()=>FJ,_shadersPolygonSignedDistanceFS:()=>cY,_shadersPolylineArrowMaterial:()=>Nk,_shadersPolylineColorAppearanceVS:()=>d2,_shadersPolylineCommon:()=>Uh,_shadersPolylineDashMaterial:()=>yk,_shadersPolylineFS:()=>HG,_shadersPolylineGlowMaterial:()=>Bk,_shadersPolylineMaterialAppearanceVS:()=>c2,_shadersPolylineOutlineMaterial:()=>Qk,_shadersPolylineShadowVolumeFS:()=>a2,_shadersPolylineShadowVolumeMorphFS:()=>s2,_shadersPolylineShadowVolumeMorphVS:()=>l2,_shadersPolylineShadowVolumeVS:()=>r2,_shadersPolylineVS:()=>SX,_shadersPrimitiveOutlineStageFS:()=>Dx,_shadersPrimitiveOutlineStageVS:()=>_x,_shadersRGBToHSB:()=>ZB,_shadersRGBToHSL:()=>RB,_shadersRGBToXYZ:()=>bB,_shadersReinhardTonemapping:()=>u9,_shadersReprojectWebMercatorFS:()=>KM,_shadersReprojectWebMercatorVS:()=>zM,_shadersRimLightingMaterial:()=>kk,_shadersSelectedFeatureIdStageCommon:()=>mC,_shadersShadowVolumeAppearanceFS:()=>bE,_shadersShadowVolumeAppearanceVS:()=>Pk,_shadersShadowVolumeFS:()=>Uf,_shadersSilhouette:()=>Z9,_shadersSkinningStageVS:()=>Px,_shadersSkyAtmosphereCommon:()=>j1,_shadersSkyAtmosphereFS:()=>l5,_shadersSkyAtmosphereVS:()=>r5,_shadersSkyBoxFS:()=>c5,_shadersSkyBoxVS:()=>m5,_shadersSlopeRampMaterial:()=>Yk,_shadersStripeMaterial:()=>xk,_shadersSunFS:()=>p5,_shadersSunTextureFS:()=>V5,_shadersSunVS:()=>u5,_shadersTexturedMaterialAppearanceFS:()=>Wk,_shadersTexturedMaterialAppearanceVS:()=>fk,_shadersVector3DTileClampedPolylinesFS:()=>YX,_shadersVector3DTileClampedPolylinesVS:()=>kX,_shadersVector3DTilePolylinesVS:()=>BX,_shadersVectorTileVS:()=>CE,_shadersVerticalExaggerationStageVS:()=>Kx,_shadersViewportQuadFS:()=>A5,_shadersViewportQuadVS:()=>GG,_shadersVoxelFS:()=>x9,_shadersVoxelUtils:()=>Y9,_shadersVoxelVS:()=>X9,_shadersWater:()=>Xk,_shadersXYZToRGB:()=>WB,_shadersacesTonemapping:()=>fB,_shadersalphaWeight:()=>FB,_shadersantialias:()=>UB,_shadersapplyHSBShift:()=>GB,_shadersapproximateSphericalCoordinates:()=>AB,_shadersapproximateTanh:()=>SB,_shadersbackFacing:()=>TB,_shadersbranchFreeTernary:()=>gB,_shaderscascadeColor:()=>EB,_shaderscascadeDistance:()=>CB,_shaderscascadeMatrix:()=>IB,_shaderscascadeWeights:()=>NB,_shadersclipPolygons:()=>yB,_shaderscolumbusViewMorph:()=>BB,_shaderscomputeAtmosphereColor:()=>QB,_shaderscomputeGroundAtmosphereScattering:()=>kB,_shaderscomputePosition:()=>YB,_shaderscomputeScattering:()=>xB,_shadersconvertUvToBox:()=>H9,_shadersconvertUvToCylinder:()=>w9,_shadersconvertUvToEllipsoid:()=>P9,_shaderscosineAndSine:()=>XB,_shadersdecompressTextureCoordinates:()=>JB,_shadersdefaultPbrMaterial:()=>LB,_shadersdegreesPerRadian:()=>Fy,_shadersdepthClamp:()=>MB,_shadersdepthRange:()=>Uy,_shadersdepthRangeStruct:()=>aB,_shaderseastNorthUpToEyeCoordinates:()=>_B,_shadersellipsoidContainsPoint:()=>DB,_shadersellipsoidWgs84TextureCoordinates:()=>OB,_shadersepsilon1:()=>Gy,_shadersepsilon2:()=>Ay,_shadersepsilon3:()=>Sy,_shadersepsilon4:()=>Ty,_shadersepsilon5:()=>gy,_shadersepsilon6:()=>Ey,_shadersepsilon7:()=>Cy,_shadersequalsEpsilon:()=>HB,_shaderseyeOffset:()=>wB,_shaderseyeToWindowCoordinates:()=>PB,_shadersfastApproximateAtan:()=>vB,_shadersfog:()=>KB,_shadersgammaCorrect:()=>zB,_shadersgeodeticSurfaceNormal:()=>jB,_shadersgetDefaultMaterial:()=>qB,_shadersgetDynamicAtmosphereLightDirection:()=>$B,_shadersgetLambertDiffuse:()=>tQ,_shadersgetSpecular:()=>eQ,_shadersgetWaterNoise:()=>nQ,_shadershue:()=>iQ,_shadersinfinity:()=>Iy,_shadersinverseGamma:()=>oQ,_shadersisEmpty:()=>aQ,_shadersisFull:()=>sQ,_shaderslatitudeToWebMercatorFraction:()=>lQ,_shaderslineDistance:()=>rQ,_shaderslinearToSrgb:()=>dQ,_shadersluminance:()=>cQ,_shadersmaterial:()=>sB,_shadersmaterialInput:()=>lB,_shadersmetersPerPixel:()=>mQ,_shadersmodelMaterial:()=>rB,_shadersmodelToWindowCoordinates:()=>hQ,_shadersmodelVertexOutput:()=>dB,_shadersmultiplyWithColorBalance:()=>pQ,_shadersnearFarScalar:()=>VQ,_shadersoctDecode:()=>uQ,_shadersoneOverPi:()=>Ny,_shadersoneOverTwoPi:()=>yy,_shaderspackDepth:()=>ZQ,_shaderspassCesium3DTile:()=>By,_shaderspassCesium3DTileClassification:()=>Qy,_shaderspassCesium3DTileClassificationIgnoreShow:()=>ky,_shaderspassClassification:()=>Yy,_shaderspassCompute:()=>xy,_shaderspassEnvironment:()=>Xy,_shaderspassGlobe:()=>Jy,_shaderspassOpaque:()=>Ly,_shaderspassOverlay:()=>My,_shaderspassTerrainClassification:()=>_y,_shaderspassTranslucent:()=>Dy,_shaderspassVoxels:()=>Oy,_shaderspbrLighting:()=>RQ,_shaderspbrMetallicRoughnessMaterial:()=>bQ,_shaderspbrParameters:()=>cB,_shaderspbrSpecularGlossinessMaterial:()=>WQ,_shadersphong:()=>fQ,_shaderspi:()=>Hy,_shaderspiOverFour:()=>wy,_shaderspiOverSix:()=>Py,_shaderspiOverThree:()=>vy,_shaderspiOverTwo:()=>Ky,_shadersplaneDistance:()=>FQ,_shaderspointAlongRay:()=>UQ,_shadersradiansPerDegree:()=>zy,_shadersray:()=>mB,_shadersrayEllipsoidIntersectionInterval:()=>GQ,_shadersraySegment:()=>hB,_shadersraySphereIntersectionInterval:()=>AQ,_shadersreadDepth:()=>SQ,_shadersreadNonPerspective:()=>TQ,_shadersreverseLogDepth:()=>gQ,_shadersround:()=>EQ,_shaderssampleOctahedralProjection:()=>CQ,_shaderssaturation:()=>IQ,_shaderssceneMode2D:()=>jy,_shaderssceneMode3D:()=>qy,_shaderssceneModeColumbusView:()=>$y,_shaderssceneModeMorphing:()=>tB,_shadersshadowDepthCompare:()=>NQ,_shadersshadowParameters:()=>pB,_shadersshadowVisibility:()=>yQ,_shaderssignNotZero:()=>BQ,_shaderssolarRadius:()=>eB,_shaderssphericalHarmonics:()=>QQ,_shaderssrgbToLinear:()=>kQ,_shaderstangentToEyeSpaceMatrix:()=>YQ,_shaderstextureCube:()=>xQ,_shadersthreePiOver2:()=>nB,_shaderstransformPlane:()=>XQ,_shaderstranslateRelativeToEye:()=>JQ,_shaderstranslucentPhong:()=>LQ,_shaderstranspose:()=>MQ,_shaderstwoPi:()=>iB,_shadersunpackClippingExtents:()=>_Q,_shadersunpackDepth:()=>DQ,_shadersunpackFloat:()=>OQ,_shadersunpackUint:()=>HQ,_shadersvalueTransform:()=>wQ,_shadersvertexLogDepth:()=>PQ,_shaderswebMercatorMaxLatitude:()=>oB,_shaderswindowToEyeCoordinates:()=>vQ,_shaderswriteDepthClamp:()=>KQ,_shaderswriteLogDepth:()=>zQ,_shaderswriteNonPerspective:()=>jQ,addBuffer:()=>z2,addDefaults:()=>_2,addExtensionsRequired:()=>P2,addExtensionsUsed:()=>Xp,addPipelineExtras:()=>Jf,addToArray:()=>$l,appendForwardSlash:()=>$N,arrayRemoveDuplicates:()=>sa,barycentricCoordinates:()=>YG,binarySearch:()=>Ja,buildDrawCommand:()=>OY,buildModuleUrl:()=>Dn,buildVoxelDrawCommands:()=>q9,cesiumWorkerBootstrapperPackedStringBase64:()=>Rot,clone:()=>Re,combine:()=>ze,computeFlyToLocationForRectangle:()=>rg,computePositions:()=>qF,conic_sensor_graphics:()=>XS,conic_sensor_visualizer:()=>LS,createBillboardPointCallback:()=>XA,createCommand:()=>Ri,createDefaultImageryProviderViewModels:()=>gD,createDefaultTerrainProviderViewModels:()=>ED,createElevationBandMaterial:()=>Wrt,createGooglePhotorealistic3DTileset:()=>frt,createGuid:()=>Ti,createMaterialPropertyDescriptor:()=>la,createOsmBuildingsAsync:()=>Frt,createPropertyDescriptor:()=>ft,createRawPropertyDescriptor:()=>gm,createTangentSpaceDebugPrimitive:()=>Urt,createTaskProcessorWorker:()=>Trt,createUniform:()=>hy,createUniformArray:()=>py,createWorldBathymetryAsync:()=>B5,createWorldImageryAsync:()=>pW,createWorldTerrainAsync:()=>KT,custom_pattern_sensor_graphics:()=>_S,custom_pattern_sensor_visualizer:()=>DS,custom_sensor_volume:()=>Ku,custom_sensor_volume_fs_glsl:()=>PI,custom_sensor_volume_vs_glsl:()=>vI,decodeGoogleEarthEnterpriseData:()=>Q5,decodeVectorPolylinePositions:()=>JX,defaultValue:()=>f,defer:()=>kd,defined:()=>c,demodernizeShader:()=>qQ,deprecationWarning:()=>ur,destroyObject:()=>At,exportKml:()=>Uot,findAccessorMinMax:()=>bA,findContentMetadata:()=>OA,findGroupMetadata:()=>HA,findTileMetadata:()=>DX,forEachTextureInMaterial:()=>XE,formatError:()=>QR,freezeRenderState:()=>w6,getAbsoluteUri:()=>IZ,getAccessorByteStride:()=>Qm,getBaseUri:()=>ty,getBinaryAccessor:()=>Eh,getClipAndStyleCode:()=>iD,getClippingFunction:()=>dW,getComponentReader:()=>e0,getElement:()=>Ui,getExtensionFromUri:()=>pG,getFilenameFromUri:()=>X0,getImageFromTypedArray:()=>n5,getImagePixels:()=>vV,getJsonFromTypedArray:()=>ts,getMagic:()=>mu,getStringFromTypedArray:()=>Im,getTimestamp:()=>Oi,hasExtension:()=>co,heightReferenceOnEntityPropertyChanged:()=>Db,initialize:()=>KS,isBitSet:()=>Zc,isBlobUri:()=>VG,isCrossOriginUrl:()=>uG,isDataUri:()=>fb,isLeapYear:()=>PV,isPointIn2D:()=>lM,isPointIn3D:()=>rM,knockout:()=>Lt,knockout_3_5_1:()=>dg,knockout_es5:()=>hD,loadAndExecuteScript:()=>ZG,loadCubeMap:()=>ck,loadImageFromTypedArray:()=>uA,loadKTX2:()=>Fm,mergeSort:()=>uW,moveTechniqueRenderStates:()=>w2,moveTechniquesToExtension:()=>v2,numberOfComponentsForType:()=>Ih,objectToQuery:()=>RG,oneTimeWarning:()=>Gn,parseBatchTable:()=>c0,parseFeatureMetadataLegacy:()=>bY,parseGlb:()=>O2,parseResponseHeaders:()=>ey,parseStructuralMetadata:()=>RY,pickModel:()=>VC,pointInsideTriangle:()=>Rlt,preprocess3DTileContent:()=>dR,processVoxelProperties:()=>j9,queryToObject:()=>Sc,readAccessorPacked:()=>j2,rectangular_pyramid_sensor_volume:()=>PS,rectangular_sensor_graphics:()=>HS,rectangular_sensor_visualizer:()=>vS,removeExtension:()=>WA,removeExtensionsRequired:()=>D2,removeExtensionsUsed:()=>RA,removePipelineExtras:()=>H2,removeUnusedElements:()=>K2,remove_primitive:()=>ac,resizeImageToNextPowerOfTwo:()=>_f,sampleTerrain:()=>k5,sampleTerrainMostDetailed:()=>zT,scaleToGeodeticSurface:()=>hG,sensor_state:()=>JS,sensor_volume_glsl:()=>wI,srgbToLinear:()=>jT,subdivideArray:()=>vk,subscribeAndEvaluate:()=>od,transferTypedArrayTestSrc:()=>Got,updateAccessorComponentTypes:()=>q2,updateVersion:()=>$2,usesExtension:()=>Cs,viewerCSSMixin:()=>vrt,viewerCameraMixin:()=>Krt,viewerCesium3DTilesInspectorMixin:()=>zrt,viewerCesiumInspectorMixin:()=>jrt,viewerDragDropMixin:()=>$rt,viewerPerformanceWatchdogMixin:()=>tdt,viewerReferenceFrameMixin:()=>edt,viewerStorageMixin:()=>ndt,viewerVoxelInspectorMixin:()=>idt,webGLConstantToGlslType:()=>flt,wrapFunction:()=>Y5,writeTextToCanvas:()=>LA});var NTa=b(W(),1);var Uqo=b(W(),1);var JOe=b(W(),1);var dOe=b(W(),1);var jDe=b(W(),1);var ODe=b(W(),1);function WMt(t){return t!=null}var c=WMt;var PDe=b(W(),1);function cG(t){this.name="DeveloperError",this.message=t;let e;try{throw new Error}catch(n){e=n.stack}this.stack=e}c(Object.create)&&(cG.prototype=Object.create(Error.prototype),cG.prototype.constructor=cG);cG.prototype.toString=function(){let t=`${this.name}: ${this.message}`;return c(this.stack)&&(t+=` +${this.stack.toString()}`),t};cG.throwInstantiationError=function(){throw new cG("This function defines an interface and should not be called directly.")};var Ut=cG;var vl={};vl.typeOf={};function fMt(t){return`${t} is required, actual value was undefined`}function Hg(t,e,n){return`Expected ${n} to be typeof ${e}, actual typeof was ${t}`}vl.defined=function(t,e){if(!c(e))throw new Ut(fMt(t))};vl.typeOf.func=function(t,e){if(typeof e!="function")throw new Ut(Hg(typeof e,"function",t))};vl.typeOf.string=function(t,e){if(typeof e!="string")throw new Ut(Hg(typeof e,"string",t))};vl.typeOf.number=function(t,e){if(typeof e!="number")throw new Ut(Hg(typeof e,"number",t))};vl.typeOf.number.lessThan=function(t,e,n){if(vl.typeOf.number(t,e),e>=n)throw new Ut(`Expected ${t} to be less than ${n}, actual value was ${e}`)};vl.typeOf.number.lessThanOrEquals=function(t,e,n){if(vl.typeOf.number(t,e),e>n)throw new Ut(`Expected ${t} to be less than or equal to ${n}, actual value was ${e}`)};vl.typeOf.number.greaterThan=function(t,e,n){if(vl.typeOf.number(t,e),e<=n)throw new Ut(`Expected ${t} to be greater than ${n}, actual value was ${e}`)};vl.typeOf.number.greaterThanOrEquals=function(t,e,n){if(vl.typeOf.number(t,e),e0?1:-1});Me.signNotZero=function(t){return t<0?-1:1};Me.toSNorm=function(t,e){return e=f(e,255),Math.round((Me.clamp(t,-1,1)*.5+.5)*e)};Me.fromSNorm=function(t,e){return e=f(e,255),Me.clamp(t,0,e)/e*2-1};Me.normalize=function(t,e,n){return n=Math.max(n-e,0),n===0?0:Me.clamp((t-e)/n,0,1)};Me.sinh=f(Math.sinh,function(e){return(Math.exp(e)-Math.exp(-e))/2});Me.cosh=f(Math.cosh,function(e){return(Math.exp(e)+Math.exp(-e))/2});Me.lerp=function(t,e,n){return(1-n)*t+n*e};Me.PI=Math.PI;Me.ONE_OVER_PI=1/Math.PI;Me.PI_OVER_TWO=Math.PI/2;Me.PI_OVER_THREE=Math.PI/3;Me.PI_OVER_FOUR=Math.PI/4;Me.PI_OVER_SIX=Math.PI/6;Me.THREE_PI_OVER_TWO=3*Math.PI/2;Me.TWO_PI=2*Math.PI;Me.ONE_OVER_TWO_PI=1/(2*Math.PI);Me.RADIANS_PER_DEGREE=Math.PI/180;Me.DEGREES_PER_RADIAN=180/Math.PI;Me.RADIANS_PER_ARCSECOND=Me.RADIANS_PER_DEGREE/3600;Me.toRadians=function(t){return t*Me.RADIANS_PER_DEGREE};Me.toDegrees=function(t){return t*Me.DEGREES_PER_RADIAN};Me.convertLongitudeRange=function(t){let e=Me.TWO_PI,n=t-Math.floor(t/e)*e;return n<-Math.PI?n+e:n>=Math.PI?n-e:n};Me.clampToLatitudeRange=function(t){return Me.clamp(t,-1*Me.PI_OVER_TWO,Me.PI_OVER_TWO)};Me.negativePiToPi=function(t){return t>=-Me.PI&&t<=Me.PI?t:Me.zeroToTwoPi(t+Me.PI)-Me.PI};Me.zeroToTwoPi=function(t){if(t>=0&&t<=Me.TWO_PI)return t;let e=Me.mod(t,Me.TWO_PI);return Math.abs(e)Me.EPSILON14?Me.TWO_PI:e};Me.mod=function(t,e){return Me.sign(t)===Me.sign(e)&&Math.abs(t)n};Me.greaterThanOrEquals=function(t,e,n){return t-e>-n};var zO=[1];Me.factorial=function(t){let e=zO.length;if(t>=e){let n=zO[e-1];for(let i=e;i<=t;i++){let o=n*i;zO.push(o),n=o}}return zO[t]};Me.incrementWrap=function(t,e,n){return n=f(n,0),++t,t>e&&(t=n),t};Me.isPowerOfTwo=function(t){return t!==0&&(t&t-1)===0};Me.nextPowerOfTwo=function(t){return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t};Me.previousPowerOfTwo=function(t){return t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t|=t>>32,t=(t>>>0)-(t>>>1),t};Me.clamp=function(t,e,n){return tn?n:t};var Pct=new t6.default;Me.setRandomNumberSeed=function(t){Pct=new t6.default(t)};Me.nextRandomNumber=function(){return Pct.random()};Me.randomBetween=function(t,e){return Me.nextRandomNumber()*(e-t)+t};Me.acosClamped=function(t){return Math.acos(Me.clamp(t,-1,1))};Me.asinClamped=function(t){return Math.asin(Me.clamp(t,-1,1))};Me.chordLength=function(t,e){return 2*e*Math.sin(t*.5)};Me.logBase=function(t,e){return Math.log(t)/Math.log(e)};Me.cbrt=f(Math.cbrt,function(e){let n=Math.pow(Math.abs(e),.3333333333333333);return e<0?-n:n});Me.log2=f(Math.log2,function(e){return Math.log(e)*Math.LOG2E});Me.fog=function(t,e){let n=t*e;return 1-Math.exp(-(n*n))};Me.fastApproximateAtan=function(t){return t*(-.1784*Math.abs(t)-.0663*t*t+1.0301)};Me.fastApproximateAtan2=function(t,e){let n,i=Math.abs(t);n=Math.abs(e);let o=Math.max(i,n);n=Math.min(i,n);let a=n/o;return i=Me.fastApproximateAtan(a),i=Math.abs(e)>Math.abs(t)?Me.PI_OVER_TWO-i:i,i=t<0?Me.PI-i:i,i=e<0?-i:i,i};var k=Me;function Ie(t,e,n){this.x=f(t,0),this.y=f(e,0),this.z=f(n,0)}Ie.fromSpherical=function(t,e){c(e)||(e=new Ie);let n=t.clock,i=t.cone,o=f(t.magnitude,1),a=o*Math.sin(i);return e.x=a*Math.cos(n),e.y=a*Math.sin(n),e.z=o*Math.cos(i),e};Ie.fromElements=function(t,e,n,i){return c(i)?(i.x=t,i.y=e,i.z=n,i):new Ie(t,e,n)};Ie.clone=function(t,e){if(c(t))return c(e)?(e.x=t.x,e.y=t.y,e.z=t.z,e):new Ie(t.x,t.y,t.z)};Ie.fromCartesian4=Ie.clone;Ie.packedLength=3;Ie.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n++]=t.y,e[n]=t.z,e};Ie.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Ie),n.x=t[e++],n.y=t[e++],n.z=t[e],n};Ie.packArray=function(t,e){let n=t.length,i=n*3;c(e)?!Array.isArray(e)&&e.length!==i||e.length!==i&&(e.length=i):e=new Array(i);for(let o=0;oi&&(o=d,i=m)}let a=1,s=0,l=o6[o],r=a6[o];if(Math.abs(t[Ne.getElementIndex(r,l)])>n){let d=t[Ne.getElementIndex(r,r)],m=t[Ne.getElementIndex(l,l)],h=t[Ne.getElementIndex(r,l)],u=(d-m)/2/h,R;u<0?R=-1/(-u+Math.sqrt(1+u*u)):R=1/(u+Math.sqrt(1+u*u)),a=1/Math.sqrt(1+R*R),s=R*a}return e=Ne.clone(Ne.IDENTITY,e),e[Ne.getElementIndex(l,l)]=e[Ne.getElementIndex(r,r)]=a,e[Ne.getElementIndex(r,l)]=s,e[Ne.getElementIndex(l,r)]=-s,e}var tH=new Ne,qct=new Ne;Ne.computeEigenDecomposition=function(t,e){let n=k.EPSILON20,i=10,o=0,a=0;c(e)||(e={});let s=e.unitary=Ne.clone(Ne.IDENTITY,e.unitary),l=e.diagonal=Ne.clone(t,e.diagonal),r=n*IMt(l);for(;ar;)yMt(l,tH),Ne.transpose(tH,qct),Ne.multiply(l,tH,l),Ne.multiply(qct,l,l),Ne.multiply(s,tH,s),++o>2&&(++a,o=0);return e};Ne.abs=function(t,e){return e[0]=Math.abs(t[0]),e[1]=Math.abs(t[1]),e[2]=Math.abs(t[2]),e[3]=Math.abs(t[3]),e[4]=Math.abs(t[4]),e[5]=Math.abs(t[5]),e[6]=Math.abs(t[6]),e[7]=Math.abs(t[7]),e[8]=Math.abs(t[8]),e};Ne.determinant=function(t){let e=t[0],n=t[3],i=t[6],o=t[1],a=t[4],s=t[7],l=t[2],r=t[5],d=t[8];return e*(a*d-r*s)+o*(r*i-n*d)+l*(n*s-a*i)};Ne.inverse=function(t,e){let n=t[0],i=t[1],o=t[2],a=t[3],s=t[4],l=t[5],r=t[6],d=t[7],m=t[8],h=Ne.determinant(t);e[0]=s*m-d*l,e[1]=d*o-i*m,e[2]=i*l-s*o,e[3]=r*l-a*m,e[4]=n*m-r*o,e[5]=a*o-n*l,e[6]=a*d-r*s,e[7]=r*i-n*d,e[8]=n*s-a*i;let u=1/h;return Ne.multiplyByScalar(e,u,e)};var BMt=new Ne;Ne.inverseTranspose=function(t,e){return Ne.inverse(Ne.transpose(t,BMt),e)};Ne.equals=function(t,e){return t===e||c(t)&&c(e)&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]};Ne.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(t[0]-e[0])<=n&&Math.abs(t[1]-e[1])<=n&&Math.abs(t[2]-e[2])<=n&&Math.abs(t[3]-e[3])<=n&&Math.abs(t[4]-e[4])<=n&&Math.abs(t[5]-e[5])<=n&&Math.abs(t[6]-e[6])<=n&&Math.abs(t[7]-e[7])<=n&&Math.abs(t[8]-e[8])<=n};Ne.IDENTITY=Object.freeze(new Ne(1,0,0,0,1,0,0,0,1));Ne.ZERO=Object.freeze(new Ne(0,0,0,0,0,0,0,0,0));Ne.COLUMN0ROW0=0;Ne.COLUMN0ROW1=1;Ne.COLUMN0ROW2=2;Ne.COLUMN1ROW0=3;Ne.COLUMN1ROW1=4;Ne.COLUMN1ROW2=5;Ne.COLUMN2ROW0=6;Ne.COLUMN2ROW1=7;Ne.COLUMN2ROW2=8;Object.defineProperties(Ne.prototype,{length:{get:function(){return Ne.packedLength}}});Ne.prototype.clone=function(t){return Ne.clone(this,t)};Ne.prototype.equals=function(t){return Ne.equals(this,t)};Ne.equalsArray=function(t,e,n){return t[0]===e[n]&&t[1]===e[n+1]&&t[2]===e[n+2]&&t[3]===e[n+3]&&t[4]===e[n+4]&&t[5]===e[n+5]&&t[6]===e[n+6]&&t[7]===e[n+7]&&t[8]===e[n+8]};Ne.prototype.equalsEpsilon=function(t,e){return Ne.equalsEpsilon(this,t,e)};Ne.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) (${this[1]}, ${this[4]}, ${this[7]}) -(${this[2]}, ${this[5]}, ${this[8]})`};var ot=Ne;var GOe=R(W(),1);function zN(t){this.name="RuntimeError",this.message=t;let e;try{throw new Error}catch(n){e=n.stack}this.stack=e}c(Object.create)&&(zN.prototype=Object.create(Error.prototype),zN.prototype.constructor=zN);zN.prototype.toString=function(){let t=`${this.name}: ${this.message}`;return c(this.stack)&&(t+=` -${this.stack.toString()}`),t};var St=zN;function Ce(t,e,n,i,o,a,s,l,r,d,m,h,Z,b,u,F){this[0]=f(t,0),this[1]=f(o,0),this[2]=f(r,0),this[3]=f(Z,0),this[4]=f(e,0),this[5]=f(a,0),this[6]=f(d,0),this[7]=f(b,0),this[8]=f(n,0),this[9]=f(s,0),this[10]=f(m,0),this[11]=f(u,0),this[12]=f(i,0),this[13]=f(l,0),this[14]=f(h,0),this[15]=f(F,0)}Ce.packedLength=16;Ce.pack=function(t,e,n){return n=f(n,0),e[n++]=t[0],e[n++]=t[1],e[n++]=t[2],e[n++]=t[3],e[n++]=t[4],e[n++]=t[5],e[n++]=t[6],e[n++]=t[7],e[n++]=t[8],e[n++]=t[9],e[n++]=t[10],e[n++]=t[11],e[n++]=t[12],e[n++]=t[13],e[n++]=t[14],e[n]=t[15],e};Ce.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Ce),n[0]=t[e++],n[1]=t[e++],n[2]=t[e++],n[3]=t[e++],n[4]=t[e++],n[5]=t[e++],n[6]=t[e++],n[7]=t[e++],n[8]=t[e++],n[9]=t[e++],n[10]=t[e++],n[11]=t[e++],n[12]=t[e++],n[13]=t[e++],n[14]=t[e++],n[15]=t[e],n};Ce.packArray=function(t,e){let n=t.length,i=n*16;c(e)?!Array.isArray(e)&&e.length!==i||e.length!==i&&(e.length=i):e=new Array(i);for(let o=0;o=k.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)};ur.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>=k.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)};ur.fromTypedArray=function(t){if(t instanceof Uint8Array)return ur.UNSIGNED_BYTE;if(t instanceof Uint16Array)return ur.UNSIGNED_SHORT;if(t instanceof Uint32Array)return ur.UNSIGNED_INT};var re=Object.freeze(ur);var qOe=R(W(),1);var eH={STREAM_DRAW:pt.STREAM_DRAW,STATIC_DRAW:pt.STATIC_DRAW,DYNAMIC_DRAW:pt.DYNAMIC_DRAW,validate:function(t){return t===eH.STREAM_DRAW||t===eH.STATIC_DRAW||t===eH.DYNAMIC_DRAW}},ce=Object.freeze(eH);function Tp(t){t=f(t,f.EMPTY_OBJECT);let e=t.context._gl,n=t.bufferTarget,i=t.typedArray,o=t.sizeInBytes,a=t.usage,s=c(i);s&&(o=i.byteLength);let l=e.createBuffer();e.bindBuffer(n,l),e.bufferData(n,s?i:o,a),e.bindBuffer(n,null),this._id=Si(),this._gl=e,this._webgl2=t.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=a,this._buffer=l,this.vertexArrayDestroyable=!0}Tp.createVertexBuffer=function(t){return new Tp({context:t.context,bufferTarget:pt.ARRAY_BUFFER,typedArray:t.typedArray,sizeInBytes:t.sizeInBytes,usage:t.usage})};Tp.createIndexBuffer=function(t){let e=t.context,n=t.indexDatatype,i=re.getSizeInBytes(n),o=new Tp({context:e,bufferTarget:pt.ELEMENT_ARRAY_BUFFER,typedArray:t.typedArray,sizeInBytes:t.sizeInBytes,usage:t.usage}),a=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return a}}}),o};Object.defineProperties(Tp.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Tp.prototype._getBuffer=function(){return this._buffer};Tp.prototype.copyFromArrayView=function(t,e){e=f(e,0);let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,e,t),n.bindBuffer(i,null)};Tp.prototype.copyFromBuffer=function(t,e,n,i){let o=pt.COPY_READ_BUFFER,a=pt.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(a,this._buffer),s.bindBuffer(o,t._buffer),s.copyBufferSubData(o,a,e,n,i),s.bindBuffer(a,null),s.bindBuffer(o,null)};Tp.prototype.getBufferData=function(t,e,n,i){e=f(e,0),n=f(n,0);let o=this._gl,a=pt.COPY_READ_BUFFER;o.bindBuffer(a,this._buffer),o.getBufferSubData(a,e,t,n,i),o.bindBuffer(a,null)};Tp.prototype.isDestroyed=function(){return!1};Tp.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),At(this)};var we=Tp;var AHe=R(W(),1);var fHe=R(W(),1);var uHe=R(W(),1);var dHe=R(W(),1);var sf,$s={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},Rm={};Object.defineProperties(Rm,{element:{get:function(){if(Rm.supportsFullscreen())return document[$s.fullscreenElement]}},changeEventName:{get:function(){if(Rm.supportsFullscreen())return $s.fullscreenchange}},errorEventName:{get:function(){if(Rm.supportsFullscreen())return $s.fullscreenerror}},enabled:{get:function(){if(Rm.supportsFullscreen())return document[$s.fullscreenEnabled]}},fullscreen:{get:function(){if(Rm.supportsFullscreen())return Rm.element!==null}}});Rm.supportsFullscreen=function(){if(c(sf))return sf;sf=!1;let t=document.body;if(typeof t.requestFullscreen=="function")return $s.requestFullscreen="requestFullscreen",$s.exitFullscreen="exitFullscreen",$s.fullscreenEnabled="fullscreenEnabled",$s.fullscreenElement="fullscreenElement",$s.fullscreenchange="fullscreenchange",$s.fullscreenerror="fullscreenerror",sf=!0,sf;let e=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=e.length;i{let e=new Image;e.onload=function(){Ac._result=e.width>0&&e.height>0,t(Ac._result)},e.onerror=function(){Ac._result=!1,t(Ac._result)},e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),Ac._promise};Object.defineProperties(Ac,{initialized:{get:function(){return c(Ac._result)}}});var Kg=[];typeof ArrayBuffer<"u"&&(Kg.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&Kg.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&Kg.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&Kg.push(BigInt64Array),typeof BigUint64Array<"u"&&Kg.push(BigUint64Array));var Sp={isChrome:h6,chromeVersion:KMt,isSafari:nmt,safariVersion:zMt,isWebkit:imt,webkitVersion:jMt,isInternetExplorer:omt,internetExplorerVersion:qMt,isEdge:rH,edgeVersion:$Mt,isFirefox:dH,firefoxVersion:n_t,isWindows:t_t,isIPadOrIOS:e_t,hardwareConcurrency:f(Qd.hardwareConcurrency,3),supportsPointerEvents:i_t,supportsImageRenderingPixelated:lmt,supportsWebP:Ac,imageRenderingValue:o_t,typedArrayTypes:Kg};Sp.supportsBasis=function(t){return Sp.supportsWebAssembly()&&t.context.supportsBasis};Sp.supportsFullscreen=function(){return Ds.supportsFullscreen()};Sp.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};Sp.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};Sp.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};Sp.supportsBigInt=function(){return typeof BigInt<"u"};Sp.supportsWebWorkers=function(){return typeof Worker<"u"};Sp.supportsWebAssembly=function(){return typeof WebAssembly<"u"};Sp.supportsWebgl2=function(t){return t.context.webgl2};Sp.supportsEsmWebWorkers=function(){return!dH()||parseInt(p6)>=114};var In=Sp;function u6(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?t+(e-t)*6*n:n*2<1?e:n*3<2?t+(e-t)*(2/3-n)*6:t}function Vt(t,e,n,i){this.red=f(t,1),this.green=f(e,1),this.blue=f(n,1),this.alpha=f(i,1)}Vt.fromCartesian4=function(t,e){return c(e)?(e.red=t.x,e.green=t.y,e.blue=t.z,e.alpha=t.w,e):new Vt(t.x,t.y,t.z,t.w)};Vt.fromBytes=function(t,e,n,i,o){return t=Vt.byteToFloat(f(t,255)),e=Vt.byteToFloat(f(e,255)),n=Vt.byteToFloat(f(n,255)),i=Vt.byteToFloat(f(i,255)),c(o)?(o.red=t,o.green=e,o.blue=n,o.alpha=i,o):new Vt(t,e,n,i)};Vt.fromAlpha=function(t,e,n){return c(n)?(n.red=t.red,n.green=t.green,n.blue=t.blue,n.alpha=e,n):new Vt(t.red,t.green,t.blue,e)};var Z6,V6,RR;In.supportsTypedArrays()&&(Z6=new ArrayBuffer(4),V6=new Uint32Array(Z6),RR=new Uint8Array(Z6));Vt.fromRgba=function(t,e){return V6[0]=t,Vt.fromBytes(RR[0],RR[1],RR[2],RR[3],e)};Vt.fromHsl=function(t,e,n,i,o){t=f(t,0)%1,e=f(e,0),n=f(n,0),i=f(i,1);let a=n,s=n,l=n;if(e!==0){let r;n<.5?r=n*(1+e):r=n+e-n*e;let d=2*n-r;a=u6(d,r,t+1/3),s=u6(d,r,t),l=u6(d,r,t-1/3)}return c(o)?(o.red=a,o.green=s,o.blue=l,o.alpha=i,o):new Vt(a,s,l,i)};Vt.fromRandom=function(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.red;if(!c(n)){let s=f(t.minimumRed,0),l=f(t.maximumRed,1);n=s+k.nextRandomNumber()*(l-s)}let i=t.green;if(!c(i)){let s=f(t.minimumGreen,0),l=f(t.maximumGreen,1);i=s+k.nextRandomNumber()*(l-s)}let o=t.blue;if(!c(o)){let s=f(t.minimumBlue,0),l=f(t.maximumBlue,1);o=s+k.nextRandomNumber()*(l-s)}let a=t.alpha;if(!c(a)){let s=f(t.minimumAlpha,0),l=f(t.maximumAlpha,1);a=s+k.nextRandomNumber()*(l-s)}return c(e)?(e.red=n,e.green=i,e.blue=o,e.alpha=a,e):new Vt(n,i,o,a)};var a_t=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,s_t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,l_t=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,r_t=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;Vt.fromCssColorString=function(t,e){c(e)||(e=new Vt),t=t.trim();let n=Vt[t.toUpperCase()];if(c(n))return Vt.clone(n,e),e;let i=a_t.exec(t);return i!==null?(e.red=parseInt(i[1],16)/15,e.green=parseInt(i[2],16)/15,e.blue=parseInt(i[3],16)/15,e.alpha=parseInt(f(i[4],"f"),16)/15,e):(i=s_t.exec(t),i!==null?(e.red=parseInt(i[1],16)/255,e.green=parseInt(i[2],16)/255,e.blue=parseInt(i[3],16)/255,e.alpha=parseInt(f(i[4],"ff"),16)/255,e):(i=l_t.exec(t),i!==null?(e.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),e.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),e.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),e.alpha=parseFloat(f(i[4],"1.0")),e):(i=r_t.exec(t),i!==null?Vt.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(f(i[4],"1.0")),e):(e=void 0,e))))};Vt.packedLength=4;Vt.pack=function(t,e,n){return n=f(n,0),e[n++]=t.red,e[n++]=t.green,e[n++]=t.blue,e[n]=t.alpha,e};Vt.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Vt),n.red=t[e++],n.green=t[e++],n.blue=t[e++],n.alpha=t[e],n};Vt.byteToFloat=function(t){return t/255};Vt.floatToByte=function(t){return t===1?255:t*256|0};Vt.clone=function(t,e){if(c(t))return c(e)?(e.red=t.red,e.green=t.green,e.blue=t.blue,e.alpha=t.alpha,e):new Vt(t.red,t.green,t.blue,t.alpha)};Vt.equals=function(t,e){return t===e||c(t)&&c(e)&&t.red===e.red&&t.green===e.green&&t.blue===e.blue&&t.alpha===e.alpha};Vt.equalsArray=function(t,e,n){return t.red===e[n]&&t.green===e[n+1]&&t.blue===e[n+2]&&t.alpha===e[n+3]};Vt.prototype.clone=function(t){return Vt.clone(this,t)};Vt.prototype.equals=function(t){return Vt.equals(this,t)};Vt.prototype.equalsEpsilon=function(t,e){return this===t||c(t)&&Math.abs(this.red-t.red)<=e&&Math.abs(this.green-t.green)<=e&&Math.abs(this.blue-t.blue)<=e&&Math.abs(this.alpha-t.alpha)<=e};Vt.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};Vt.prototype.toCssColorString=function(){let t=Vt.floatToByte(this.red),e=Vt.floatToByte(this.green),n=Vt.floatToByte(this.blue);return this.alpha===1?`rgb(${t},${e},${n})`:`rgba(${t},${e},${n},${this.alpha})`};Vt.prototype.toCssHexString=function(){let t=Vt.floatToByte(this.red).toString(16);t.length<2&&(t=`0${t}`);let e=Vt.floatToByte(this.green).toString(16);e.length<2&&(e=`0${e}`);let n=Vt.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=Vt.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${t}${e}${n}${i}`}return`#${t}${e}${n}`};Vt.prototype.toBytes=function(t){let e=Vt.floatToByte(this.red),n=Vt.floatToByte(this.green),i=Vt.floatToByte(this.blue),o=Vt.floatToByte(this.alpha);return c(t)?(t[0]=e,t[1]=n,t[2]=i,t[3]=o,t):[e,n,i,o]};Vt.prototype.toRgba=function(){return RR[0]=Vt.floatToByte(this.red),RR[1]=Vt.floatToByte(this.green),RR[2]=Vt.floatToByte(this.blue),RR[3]=Vt.floatToByte(this.alpha),V6[0]};Vt.prototype.brighten=function(t,e){return t=1-t,e.red=1-(1-this.red)*t,e.green=1-(1-this.green)*t,e.blue=1-(1-this.blue)*t,e.alpha=this.alpha,e};Vt.prototype.darken=function(t,e){return t=1-t,e.red=this.red*t,e.green=this.green*t,e.blue=this.blue*t,e.alpha=this.alpha,e};Vt.prototype.withAlpha=function(t,e){return Vt.fromAlpha(this,t,e)};Vt.add=function(t,e,n){return n.red=t.red+e.red,n.green=t.green+e.green,n.blue=t.blue+e.blue,n.alpha=t.alpha+e.alpha,n};Vt.subtract=function(t,e,n){return n.red=t.red-e.red,n.green=t.green-e.green,n.blue=t.blue-e.blue,n.alpha=t.alpha-e.alpha,n};Vt.multiply=function(t,e,n){return n.red=t.red*e.red,n.green=t.green*e.green,n.blue=t.blue*e.blue,n.alpha=t.alpha*e.alpha,n};Vt.divide=function(t,e,n){return n.red=t.red/e.red,n.green=t.green/e.green,n.blue=t.blue/e.blue,n.alpha=t.alpha/e.alpha,n};Vt.mod=function(t,e,n){return n.red=t.red%e.red,n.green=t.green%e.green,n.blue=t.blue%e.blue,n.alpha=t.alpha%e.alpha,n};Vt.lerp=function(t,e,n,i){return i.red=k.lerp(t.red,e.red,n),i.green=k.lerp(t.green,e.green,n),i.blue=k.lerp(t.blue,e.blue,n),i.alpha=k.lerp(t.alpha,e.alpha,n),i};Vt.multiplyByScalar=function(t,e,n){return n.red=t.red*e,n.green=t.green*e,n.blue=t.blue*e,n.alpha=t.alpha*e,n};Vt.divideByScalar=function(t,e,n){return n.red=t.red/e,n.green=t.green/e,n.blue=t.blue/e,n.alpha=t.alpha/e,n};Vt.ALICEBLUE=Object.freeze(Vt.fromCssColorString("#F0F8FF"));Vt.ANTIQUEWHITE=Object.freeze(Vt.fromCssColorString("#FAEBD7"));Vt.AQUA=Object.freeze(Vt.fromCssColorString("#00FFFF"));Vt.AQUAMARINE=Object.freeze(Vt.fromCssColorString("#7FFFD4"));Vt.AZURE=Object.freeze(Vt.fromCssColorString("#F0FFFF"));Vt.BEIGE=Object.freeze(Vt.fromCssColorString("#F5F5DC"));Vt.BISQUE=Object.freeze(Vt.fromCssColorString("#FFE4C4"));Vt.BLACK=Object.freeze(Vt.fromCssColorString("#000000"));Vt.BLANCHEDALMOND=Object.freeze(Vt.fromCssColorString("#FFEBCD"));Vt.BLUE=Object.freeze(Vt.fromCssColorString("#0000FF"));Vt.BLUEVIOLET=Object.freeze(Vt.fromCssColorString("#8A2BE2"));Vt.BROWN=Object.freeze(Vt.fromCssColorString("#A52A2A"));Vt.BURLYWOOD=Object.freeze(Vt.fromCssColorString("#DEB887"));Vt.CADETBLUE=Object.freeze(Vt.fromCssColorString("#5F9EA0"));Vt.CHARTREUSE=Object.freeze(Vt.fromCssColorString("#7FFF00"));Vt.CHOCOLATE=Object.freeze(Vt.fromCssColorString("#D2691E"));Vt.CORAL=Object.freeze(Vt.fromCssColorString("#FF7F50"));Vt.CORNFLOWERBLUE=Object.freeze(Vt.fromCssColorString("#6495ED"));Vt.CORNSILK=Object.freeze(Vt.fromCssColorString("#FFF8DC"));Vt.CRIMSON=Object.freeze(Vt.fromCssColorString("#DC143C"));Vt.CYAN=Object.freeze(Vt.fromCssColorString("#00FFFF"));Vt.DARKBLUE=Object.freeze(Vt.fromCssColorString("#00008B"));Vt.DARKCYAN=Object.freeze(Vt.fromCssColorString("#008B8B"));Vt.DARKGOLDENROD=Object.freeze(Vt.fromCssColorString("#B8860B"));Vt.DARKGRAY=Object.freeze(Vt.fromCssColorString("#A9A9A9"));Vt.DARKGREEN=Object.freeze(Vt.fromCssColorString("#006400"));Vt.DARKGREY=Vt.DARKGRAY;Vt.DARKKHAKI=Object.freeze(Vt.fromCssColorString("#BDB76B"));Vt.DARKMAGENTA=Object.freeze(Vt.fromCssColorString("#8B008B"));Vt.DARKOLIVEGREEN=Object.freeze(Vt.fromCssColorString("#556B2F"));Vt.DARKORANGE=Object.freeze(Vt.fromCssColorString("#FF8C00"));Vt.DARKORCHID=Object.freeze(Vt.fromCssColorString("#9932CC"));Vt.DARKRED=Object.freeze(Vt.fromCssColorString("#8B0000"));Vt.DARKSALMON=Object.freeze(Vt.fromCssColorString("#E9967A"));Vt.DARKSEAGREEN=Object.freeze(Vt.fromCssColorString("#8FBC8F"));Vt.DARKSLATEBLUE=Object.freeze(Vt.fromCssColorString("#483D8B"));Vt.DARKSLATEGRAY=Object.freeze(Vt.fromCssColorString("#2F4F4F"));Vt.DARKSLATEGREY=Vt.DARKSLATEGRAY;Vt.DARKTURQUOISE=Object.freeze(Vt.fromCssColorString("#00CED1"));Vt.DARKVIOLET=Object.freeze(Vt.fromCssColorString("#9400D3"));Vt.DEEPPINK=Object.freeze(Vt.fromCssColorString("#FF1493"));Vt.DEEPSKYBLUE=Object.freeze(Vt.fromCssColorString("#00BFFF"));Vt.DIMGRAY=Object.freeze(Vt.fromCssColorString("#696969"));Vt.DIMGREY=Vt.DIMGRAY;Vt.DODGERBLUE=Object.freeze(Vt.fromCssColorString("#1E90FF"));Vt.FIREBRICK=Object.freeze(Vt.fromCssColorString("#B22222"));Vt.FLORALWHITE=Object.freeze(Vt.fromCssColorString("#FFFAF0"));Vt.FORESTGREEN=Object.freeze(Vt.fromCssColorString("#228B22"));Vt.FUCHSIA=Object.freeze(Vt.fromCssColorString("#FF00FF"));Vt.GAINSBORO=Object.freeze(Vt.fromCssColorString("#DCDCDC"));Vt.GHOSTWHITE=Object.freeze(Vt.fromCssColorString("#F8F8FF"));Vt.GOLD=Object.freeze(Vt.fromCssColorString("#FFD700"));Vt.GOLDENROD=Object.freeze(Vt.fromCssColorString("#DAA520"));Vt.GRAY=Object.freeze(Vt.fromCssColorString("#808080"));Vt.GREEN=Object.freeze(Vt.fromCssColorString("#008000"));Vt.GREENYELLOW=Object.freeze(Vt.fromCssColorString("#ADFF2F"));Vt.GREY=Vt.GRAY;Vt.HONEYDEW=Object.freeze(Vt.fromCssColorString("#F0FFF0"));Vt.HOTPINK=Object.freeze(Vt.fromCssColorString("#FF69B4"));Vt.INDIANRED=Object.freeze(Vt.fromCssColorString("#CD5C5C"));Vt.INDIGO=Object.freeze(Vt.fromCssColorString("#4B0082"));Vt.IVORY=Object.freeze(Vt.fromCssColorString("#FFFFF0"));Vt.KHAKI=Object.freeze(Vt.fromCssColorString("#F0E68C"));Vt.LAVENDER=Object.freeze(Vt.fromCssColorString("#E6E6FA"));Vt.LAVENDAR_BLUSH=Object.freeze(Vt.fromCssColorString("#FFF0F5"));Vt.LAWNGREEN=Object.freeze(Vt.fromCssColorString("#7CFC00"));Vt.LEMONCHIFFON=Object.freeze(Vt.fromCssColorString("#FFFACD"));Vt.LIGHTBLUE=Object.freeze(Vt.fromCssColorString("#ADD8E6"));Vt.LIGHTCORAL=Object.freeze(Vt.fromCssColorString("#F08080"));Vt.LIGHTCYAN=Object.freeze(Vt.fromCssColorString("#E0FFFF"));Vt.LIGHTGOLDENRODYELLOW=Object.freeze(Vt.fromCssColorString("#FAFAD2"));Vt.LIGHTGRAY=Object.freeze(Vt.fromCssColorString("#D3D3D3"));Vt.LIGHTGREEN=Object.freeze(Vt.fromCssColorString("#90EE90"));Vt.LIGHTGREY=Vt.LIGHTGRAY;Vt.LIGHTPINK=Object.freeze(Vt.fromCssColorString("#FFB6C1"));Vt.LIGHTSEAGREEN=Object.freeze(Vt.fromCssColorString("#20B2AA"));Vt.LIGHTSKYBLUE=Object.freeze(Vt.fromCssColorString("#87CEFA"));Vt.LIGHTSLATEGRAY=Object.freeze(Vt.fromCssColorString("#778899"));Vt.LIGHTSLATEGREY=Vt.LIGHTSLATEGRAY;Vt.LIGHTSTEELBLUE=Object.freeze(Vt.fromCssColorString("#B0C4DE"));Vt.LIGHTYELLOW=Object.freeze(Vt.fromCssColorString("#FFFFE0"));Vt.LIME=Object.freeze(Vt.fromCssColorString("#00FF00"));Vt.LIMEGREEN=Object.freeze(Vt.fromCssColorString("#32CD32"));Vt.LINEN=Object.freeze(Vt.fromCssColorString("#FAF0E6"));Vt.MAGENTA=Object.freeze(Vt.fromCssColorString("#FF00FF"));Vt.MAROON=Object.freeze(Vt.fromCssColorString("#800000"));Vt.MEDIUMAQUAMARINE=Object.freeze(Vt.fromCssColorString("#66CDAA"));Vt.MEDIUMBLUE=Object.freeze(Vt.fromCssColorString("#0000CD"));Vt.MEDIUMORCHID=Object.freeze(Vt.fromCssColorString("#BA55D3"));Vt.MEDIUMPURPLE=Object.freeze(Vt.fromCssColorString("#9370DB"));Vt.MEDIUMSEAGREEN=Object.freeze(Vt.fromCssColorString("#3CB371"));Vt.MEDIUMSLATEBLUE=Object.freeze(Vt.fromCssColorString("#7B68EE"));Vt.MEDIUMSPRINGGREEN=Object.freeze(Vt.fromCssColorString("#00FA9A"));Vt.MEDIUMTURQUOISE=Object.freeze(Vt.fromCssColorString("#48D1CC"));Vt.MEDIUMVIOLETRED=Object.freeze(Vt.fromCssColorString("#C71585"));Vt.MIDNIGHTBLUE=Object.freeze(Vt.fromCssColorString("#191970"));Vt.MINTCREAM=Object.freeze(Vt.fromCssColorString("#F5FFFA"));Vt.MISTYROSE=Object.freeze(Vt.fromCssColorString("#FFE4E1"));Vt.MOCCASIN=Object.freeze(Vt.fromCssColorString("#FFE4B5"));Vt.NAVAJOWHITE=Object.freeze(Vt.fromCssColorString("#FFDEAD"));Vt.NAVY=Object.freeze(Vt.fromCssColorString("#000080"));Vt.OLDLACE=Object.freeze(Vt.fromCssColorString("#FDF5E6"));Vt.OLIVE=Object.freeze(Vt.fromCssColorString("#808000"));Vt.OLIVEDRAB=Object.freeze(Vt.fromCssColorString("#6B8E23"));Vt.ORANGE=Object.freeze(Vt.fromCssColorString("#FFA500"));Vt.ORANGERED=Object.freeze(Vt.fromCssColorString("#FF4500"));Vt.ORCHID=Object.freeze(Vt.fromCssColorString("#DA70D6"));Vt.PALEGOLDENROD=Object.freeze(Vt.fromCssColorString("#EEE8AA"));Vt.PALEGREEN=Object.freeze(Vt.fromCssColorString("#98FB98"));Vt.PALETURQUOISE=Object.freeze(Vt.fromCssColorString("#AFEEEE"));Vt.PALEVIOLETRED=Object.freeze(Vt.fromCssColorString("#DB7093"));Vt.PAPAYAWHIP=Object.freeze(Vt.fromCssColorString("#FFEFD5"));Vt.PEACHPUFF=Object.freeze(Vt.fromCssColorString("#FFDAB9"));Vt.PERU=Object.freeze(Vt.fromCssColorString("#CD853F"));Vt.PINK=Object.freeze(Vt.fromCssColorString("#FFC0CB"));Vt.PLUM=Object.freeze(Vt.fromCssColorString("#DDA0DD"));Vt.POWDERBLUE=Object.freeze(Vt.fromCssColorString("#B0E0E6"));Vt.PURPLE=Object.freeze(Vt.fromCssColorString("#800080"));Vt.RED=Object.freeze(Vt.fromCssColorString("#FF0000"));Vt.ROSYBROWN=Object.freeze(Vt.fromCssColorString("#BC8F8F"));Vt.ROYALBLUE=Object.freeze(Vt.fromCssColorString("#4169E1"));Vt.SADDLEBROWN=Object.freeze(Vt.fromCssColorString("#8B4513"));Vt.SALMON=Object.freeze(Vt.fromCssColorString("#FA8072"));Vt.SANDYBROWN=Object.freeze(Vt.fromCssColorString("#F4A460"));Vt.SEAGREEN=Object.freeze(Vt.fromCssColorString("#2E8B57"));Vt.SEASHELL=Object.freeze(Vt.fromCssColorString("#FFF5EE"));Vt.SIENNA=Object.freeze(Vt.fromCssColorString("#A0522D"));Vt.SILVER=Object.freeze(Vt.fromCssColorString("#C0C0C0"));Vt.SKYBLUE=Object.freeze(Vt.fromCssColorString("#87CEEB"));Vt.SLATEBLUE=Object.freeze(Vt.fromCssColorString("#6A5ACD"));Vt.SLATEGRAY=Object.freeze(Vt.fromCssColorString("#708090"));Vt.SLATEGREY=Vt.SLATEGRAY;Vt.SNOW=Object.freeze(Vt.fromCssColorString("#FFFAFA"));Vt.SPRINGGREEN=Object.freeze(Vt.fromCssColorString("#00FF7F"));Vt.STEELBLUE=Object.freeze(Vt.fromCssColorString("#4682B4"));Vt.TAN=Object.freeze(Vt.fromCssColorString("#D2B48C"));Vt.TEAL=Object.freeze(Vt.fromCssColorString("#008080"));Vt.THISTLE=Object.freeze(Vt.fromCssColorString("#D8BFD8"));Vt.TOMATO=Object.freeze(Vt.fromCssColorString("#FF6347"));Vt.TURQUOISE=Object.freeze(Vt.fromCssColorString("#40E0D0"));Vt.VIOLET=Object.freeze(Vt.fromCssColorString("#EE82EE"));Vt.WHEAT=Object.freeze(Vt.fromCssColorString("#F5DEB3"));Vt.WHITE=Object.freeze(Vt.fromCssColorString("#FFFFFF"));Vt.WHITESMOKE=Object.freeze(Vt.fromCssColorString("#F5F5F5"));Vt.YELLOW=Object.freeze(Vt.fromCssColorString("#FFFF00"));Vt.YELLOWGREEN=Object.freeze(Vt.fromCssColorString("#9ACD32"));Vt.TRANSPARENT=Object.freeze(new Vt(0,0,0,0));var v=Vt;function cH(t){t=f(t,f.EMPTY_OBJECT),this.color=t.color,this.depth=t.depth,this.stencil=t.stencil,this.renderState=t.renderState,this.framebuffer=t.framebuffer,this.owner=t.owner,this.pass=t.pass}cH.ALL=Object.freeze(new cH({color:new v(0,0,0,0),depth:1,stencil:0}));cH.prototype.execute=function(t,e){t.clear(this,e)};var ao=cH;var IHe=R(W(),1);var SHe=R(W(),1),d_t={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,OVERLAY:10,NUMBER_OF_PASSES:11},Pt=Object.freeze(d_t);function rmt(t){t=f(t,f.EMPTY_OBJECT),this.vertexArray=t.vertexArray,this.fragmentShaderSource=t.fragmentShaderSource,this.shaderProgram=t.shaderProgram,this.uniformMap=t.uniformMap,this.outputTexture=t.outputTexture,this.preExecute=t.preExecute,this.postExecute=t.postExecute,this.canceled=t.canceled,this.persists=f(t.persists,!1),this.pass=Pt.COMPUTE,this.owner=t.owner}rmt.prototype.execute=function(t){t.execute(this)};var Wm=rmt;var qze=R(W(),1);var R3e=R(W(),1);var kHe=R(W(),1);function Un(t,e){this.x=f(t,0),this.y=f(e,0)}Un.fromElements=function(t,e,n){return c(n)?(n.x=t,n.y=e,n):new Un(t,e)};Un.clone=function(t,e){if(c(t))return c(e)?(e.x=t.x,e.y=t.y,e):new Un(t.x,t.y)};Un.fromCartesian3=Un.clone;Un.fromCartesian4=Un.clone;Un.packedLength=2;Un.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n]=t.y,e};Un.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Un),n.x=t[e++],n.y=t[e],n};Un.packArray=function(t,e){let n=t.length,i=n*2;c(e)?!Array.isArray(e)&&e.length!==i||e.length!==i&&(e.length=i):e=new Array(i);for(let o=0;ok.EPSILON12);return c(o)?(o.x=a*J,o.y=s*M,o.z=l*V,o):new p(a*J,s*M,l*V)}var hG=p_t;function xl(t,e,n){this.longitude=f(t,0),this.latitude=f(e,0),this.height=f(n,0)}xl.fromRadians=function(t,e,n,i){return n=f(n,0),c(i)?(i.longitude=t,i.latitude=e,i.height=n,i):new xl(t,e,n)};xl.fromDegrees=function(t,e,n,i){return t=k.toRadians(t),e=k.toRadians(e),xl.fromRadians(t,e,n,i)};var u_t=new p,Z_t=new p,V_t=new p,b_t=new p(1/6378137,1/6378137,1/6356752314245179e-9),R_t=new p(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9)),W_t=k.EPSILON1;xl.fromCartesian=function(t,e,n){let i=c(e)?e.oneOverRadii:b_t,o=c(e)?e.oneOverRadiiSquared:R_t,a=c(e)?e._centerToleranceSquared:W_t,s=hG(t,i,o,a,Z_t);if(!c(s))return;let l=p.multiplyComponents(s,o,u_t);l=p.normalize(l,l);let r=p.subtract(t,s,V_t),d=Math.atan2(l.y,l.x),m=Math.asin(l.z),h=k.sign(p.dot(r,t))*p.magnitude(r);return c(n)?(n.longitude=d,n.latitude=m,n.height=h,n):new xl(d,m,h)};xl.toCartesian=function(t,e,n){return p.fromRadians(t.longitude,t.latitude,t.height,e,n)};xl.clone=function(t,e){if(c(t))return c(e)?(e.longitude=t.longitude,e.latitude=t.latitude,e.height=t.height,e):new xl(t.longitude,t.latitude,t.height)};xl.equals=function(t,e){return t===e||c(t)&&c(e)&&t.longitude===e.longitude&&t.latitude===e.latitude&&t.height===e.height};xl.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(t.longitude-e.longitude)<=n&&Math.abs(t.latitude-e.latitude)<=n&&Math.abs(t.height-e.height)<=n};xl.ZERO=Object.freeze(new xl(0,0,0));xl.prototype.clone=function(t){return xl.clone(this,t)};xl.prototype.equals=function(t){return xl.equals(this,t)};xl.prototype.equalsEpsilon=function(t,e){return xl.equalsEpsilon(this,t,e)};xl.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var gt=xl;var dwe=R(W(),1);var nwe=R(W(),1);function pmt(t,e,n,i){e=f(e,0),n=f(n,0),i=f(i,0),t._radii=new p(e,n,i),t._radiiSquared=new p(e*e,n*n,i*i),t._radiiToTheFourth=new p(e*e*e*e,n*n*n*n,i*i*i*i),t._oneOverRadii=new p(e===0?0:1/e,n===0?0:1/n,i===0?0:1/i),t._oneOverRadiiSquared=new p(e===0?0:1/(e*e),n===0?0:1/(n*n),i===0?0:1/(i*i)),t._minimumRadius=Math.min(e,n,i),t._maximumRadius=Math.max(e,n,i),t._centerToleranceSquared=k.EPSILON1,t._radiiSquared.z!==0&&(t._squaredXOverSquaredZ=t._radiiSquared.x/t._radiiSquared.z)}function oa(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,pmt(this,t,e,n)}Object.defineProperties(oa.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});oa.clone=function(t,e){if(!c(t))return;let n=t._radii;return c(e)?(p.clone(n,e._radii),p.clone(t._radiiSquared,e._radiiSquared),p.clone(t._radiiToTheFourth,e._radiiToTheFourth),p.clone(t._oneOverRadii,e._oneOverRadii),p.clone(t._oneOverRadiiSquared,e._oneOverRadiiSquared),e._minimumRadius=t._minimumRadius,e._maximumRadius=t._maximumRadius,e._centerToleranceSquared=t._centerToleranceSquared,e):new oa(n.x,n.y,n.z)};oa.fromCartesian3=function(t,e){return c(e)||(e=new oa),c(t)&&pmt(e,t.x,t.y,t.z),e};oa.WGS84=Object.freeze(new oa(6378137,6378137,6356752314245179e-9));oa.UNIT_SPHERE=Object.freeze(new oa(1,1,1));oa.MOON=Object.freeze(new oa(k.LUNAR_RADIUS,k.LUNAR_RADIUS,k.LUNAR_RADIUS));oa.prototype.clone=function(t){return oa.clone(this,t)};oa.packedLength=p.packedLength;oa.pack=function(t,e,n){return n=f(n,0),p.pack(t._radii,e,n),e};oa.unpack=function(t,e,n){e=f(e,0);let i=p.unpack(t,e);return oa.fromCartesian3(i,n)};oa.prototype.geocentricSurfaceNormal=p.normalize;oa.prototype.geodeticSurfaceNormalCartographic=function(t,e){let n=t.longitude,i=t.latitude,o=Math.cos(i),a=o*Math.cos(n),s=o*Math.sin(n),l=Math.sin(i);return c(e)||(e=new p),e.x=a,e.y=s,e.z=l,p.normalize(e,e)};oa.prototype.geodeticSurfaceNormal=function(t,e){if(!p.equalsEpsilon(t,p.ZERO,k.EPSILON14))return c(e)||(e=new p),e=p.multiplyComponents(t,this._oneOverRadiiSquared,e),p.normalize(e,e)};var f_t=new p,F_t=new p;oa.prototype.cartographicToCartesian=function(t,e){let n=f_t,i=F_t;this.geodeticSurfaceNormalCartographic(t,n),p.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(p.dot(n,i));return p.divideByScalar(i,o,i),p.multiplyByScalar(n,t.height,n),c(e)||(e=new p),p.add(i,n,e)};oa.prototype.cartographicArrayToCartesianArray=function(t,e){let n=t.length;c(e)?e.length=n:e=new Array(n);for(let i=0;i=this._radii.z-e))return n};var T_t=new p;oa.prototype.getLocalCurvature=function(t,e){c(e)||(e=new K);let n=this.getSurfaceNormalIntersectionWithZAxis(t,0,T_t),i=p.distance(t,n),o=this.minimumRadius*i/this.maximumRadius**2,a=i*o**2;return K.fromElements(1/i,1/a,e)};var S_t=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],g_t=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function hmt(t,e,n){let i=.5*(e+t),o=.5*(e-t),a=0;for(let s=0;s<5;s++){let l=o*S_t[s];a+=g_t[s]*(n(i+l)+n(i-l))}return a*=o,a}oa.prototype.surfaceArea=function(t){let e=t.west,n=t.east,i=t.south,o=t.north;for(;n0){o=a-1;continue}return a}return~(o+1)}var Ja=C_t;var Zwe=R(W(),1);function I_t(t,e,n,i,o){this.xPoleWander=t,this.yPoleWander=e,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var lf=I_t;var Jwe=R(W(),1);var Gwe=R(W(),1);var bwe=R(W(),1);function N_t(t){return t%4===0&&t%100!==0||t%400===0}var Pu=N_t;var umt=[31,28,31,30,31,30,31,31,30,31,30,31];function y_t(t,e,n,i,o,a,s,l){t=f(t,1),e=f(e,1),n=f(n,1),i=f(i,0),o=f(o,0),a=f(a,0),s=f(s,0),l=f(l,!1),this.year=t,this.month=e,this.day=n,this.hour=i,this.minute=o,this.second=a,this.millisecond=s,this.isLeapSecond=l;function F(){Xa.typeOf.number.greaterThanOrEquals("Year",t,1),Xa.typeOf.number.lessThanOrEquals("Year",t,9999),Xa.typeOf.number.greaterThanOrEquals("Month",e,1),Xa.typeOf.number.lessThanOrEquals("Month",e,12),Xa.typeOf.number.greaterThanOrEquals("Day",n,1),Xa.typeOf.number.lessThanOrEquals("Day",n,31),Xa.typeOf.number.greaterThanOrEquals("Hour",i,0),Xa.typeOf.number.lessThanOrEquals("Hour",i,23),Xa.typeOf.number.greaterThanOrEquals("Minute",o,0),Xa.typeOf.number.lessThanOrEquals("Minute",o,59),Xa.typeOf.bool("IsLeapSecond",l),Xa.typeOf.number.greaterThanOrEquals("Second",a,0),Xa.typeOf.number.lessThanOrEquals("Second",a,l?60:59),Xa.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Xa.typeOf.number.lessThan("Millisecond",s,1e3)}function U(){let G=e===2&&Pu(t)?umt[e-1]+1:umt[e-1];if(n>G)throw new Ut("Month and Day represents invalid date")}}var WR=y_t;var Twe=R(W(),1);function B_t(t,e){this.julianDate=t,this.offset=e}var zo=B_t;var gwe=R(W(),1),Q_t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},xi=Object.freeze(Q_t);var Cwe=R(W(),1),k_t={UTC:0,TAI:1},Di=Object.freeze(k_t);var Vmt=new WR,b6=[31,28,31,30,31,30,31,31,30,31,30,31],R6=29;function W6(t,e){return mn.compare(t.julianDate,e.julianDate)}var zg=new zo;function uH(t){zg.julianDate=t;let e=mn.leapSeconds,n=Ja(e,zg,W6);n<0&&(n=~n),n>=e.length&&(n=e.length-1);let i=e[n].offset;n>0&&mn.secondsDifference(e[n].julianDate,t)>i&&(n--,i=e[n].offset),mn.addSeconds(t,i,t)}function Zmt(t,e){zg.julianDate=t;let n=mn.leapSeconds,i=Ja(n,zg,W6);if(i<0&&(i=~i),i===0)return mn.addSeconds(t,-n[0].offset,e);if(i>=n.length)return mn.addSeconds(t,-n[i-1].offset,e);let o=mn.secondsDifference(n[i].julianDate,t);if(o===0)return mn.addSeconds(t,-n[i].offset,e);if(!(o<=1))return mn.addSeconds(t,-n[--i].offset,e)}function rf(t,e,n){let i=e/xi.SECONDS_PER_DAY|0;return t+=i,e-=xi.SECONDS_PER_DAY*i,e<0&&(t--,e+=xi.SECONDS_PER_DAY),n.dayNumber=t,n.secondsOfDay=e,n}function f6(t,e,n,i,o,a,s){let l=(e-14)/12|0,r=t+4800+l,d=(1461*r/4|0)+(367*(e-2-12*l)/12|0)-(3*((r+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let m=a+(i*xi.SECONDS_PER_HOUR+o*xi.SECONDS_PER_MINUTE+s*xi.SECONDS_PER_MILLISECOND);return m>=43200&&(d-=1),[d,m]}var Y_t=/^(\d{4})$/,x_t=/^(\d{4})-(\d{2})$/,X_t=/^(\d{4})-?(\d{3})$/,J_t=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,L_t=/^(\d{4})-?(\d{2})-?(\d{2})$/,F6=/([Z+\-])?(\d{2})?:?(\d{2})?$/,M_t=/^(\d{2})(\.\d+)?/.source+F6.source,__t=/^(\d{2}):?(\d{2})(\.\d+)?/.source+F6.source,D_t=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+F6.source;function mn(t,e,n){this.dayNumber=void 0,this.secondsOfDay=void 0,t=f(t,0),e=f(e,0),n=f(n,Di.UTC);let i=t|0;e=e+(t-i)*xi.SECONDS_PER_DAY,rf(i,e,this),n===Di.UTC&&uH(this)}mn.fromGregorianDate=function(t,e){let n=f6(t.year,t.month,t.day,t.hour,t.minute,t.second,t.millisecond);return c(e)?(rf(n[0],n[1],e),uH(e),e):new mn(n[0],n[1],Di.UTC)};mn.fromDate=function(t,e){let n=f6(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds());return c(e)?(rf(n[0],n[1],e),uH(e),e):new mn(n[0],n[1],Di.UTC)};mn.fromIso8601=function(t,e){t=t.replace(",",".");let n=t.split("T"),i,o=1,a=1,s=0,l=0,r=0,d=0,m=n[0],h=n[1],Z,b;if(n=m.match(L_t),n!==null)i=+n[1],o=+n[2],a=+n[3];else if(n=m.match(x_t),n!==null)i=+n[1],o=+n[2];else if(n=m.match(Y_t),n!==null)i=+n[1];else{let G;if(n=m.match(X_t),n!==null)i=+n[1],G=+n[2],b=Pu(i);else if(n=m.match(J_t),n!==null){i=+n[1];let A=+n[2],T=+n[3]||0,g=new Date(Date.UTC(i,0,4));G=A*7+T-g.getUTCDay()-3}Z=new Date(Date.UTC(i,0,1)),Z.setUTCDate(G),o=Z.getUTCMonth()+1,a=Z.getUTCDate()}b=Pu(i);let u;if(c(h)){n=h.match(D_t),n!==null?(s=+n[1],l=+n[2],r=+n[3],d=+(n[4]||0)*1e3,u=5):(n=h.match(__t),n!==null?(s=+n[1],l=+n[2],r=+(n[3]||0)*60,u=4):(n=h.match(M_t),n!==null&&(s=+n[1],l=+(n[2]||0)*60,u=3)));let G=n[u],A=+n[u+1],T=+(n[u+2]||0);switch(G){case"+":s=s-A,l=l-T;break;case"-":s=s+A,l=l+T;break;case"Z":break;default:l=l+new Date(Date.UTC(i,o-1,a,s,l)).getTimezoneOffset();break}}let F=r===60;for(F&&r--;l>=60;)l-=60,s++;for(;s>=24;)s-=24,a++;for(Z=b&&o===2?R6:b6[o-1];a>Z;)a-=Z,o++,o>12&&(o-=12,i++),Z=b&&o===2?R6:b6[o-1];for(;l<0;)l+=60,s--;for(;s<0;)s+=24,a--;for(;a<1;)o--,o<1&&(o+=12,i--),Z=b&&o===2?R6:b6[o-1],a+=Z;let U=f6(i,o,a,s,l,r,d);return c(e)?(rf(U[0],U[1],e),uH(e)):e=new mn(U[0],U[1],Di.UTC),F&&mn.addSeconds(e,1,e),e};mn.now=function(t){return mn.fromDate(new Date,t)};var pH=new mn(0,0,Di.TAI);mn.toGregorianDate=function(t,e){let n=!1,i=Zmt(t,pH);c(i)||(mn.addSeconds(t,-1,pH),i=Zmt(pH,pH),n=!0);let o=i.dayNumber,a=i.secondsOfDay;a>=43200&&(o+=1);let s=o+68569|0,l=4*s/146097|0;s=s-((146097*l+3)/4|0)|0;let r=4e3*(s+1)/1461001|0;s=s-(1461*r/4|0)+31|0;let d=80*s/2447|0,m=s-(2447*d/80|0)|0;s=d/11|0;let h=d+2-12*s|0,Z=100*(l-49)+r+s|0,b=a/xi.SECONDS_PER_HOUR|0,u=a-b*xi.SECONDS_PER_HOUR,F=u/xi.SECONDS_PER_MINUTE|0;u=u-F*xi.SECONDS_PER_MINUTE;let U=u|0,G=(u-U)/xi.SECONDS_PER_MILLISECOND;return b+=12,b>23&&(b-=24),n&&(U+=1),c(e)?(e.year=Z,e.month=h,e.day=m,e.hour=b,e.minute=F,e.second=U,e.millisecond=G,e.isLeapSecond=n,e):new WR(Z,h,m,b,F,U,G,n)};mn.toDate=function(t){let e=mn.toGregorianDate(t,Vmt),n=e.second;return e.isLeapSecond&&(n-=1),new Date(Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,n,e.millisecond))};mn.toIso8601=function(t,e){let n=mn.toGregorianDate(t,Vmt),i=n.year,o=n.month,a=n.day,s=n.hour,l=n.minute,r=n.second,d=n.millisecond;i===1e4&&o===1&&a===1&&s===0&&l===0&&r===0&&d===0&&(i=9999,o=12,a=31,s=24);let m;return!c(e)&&d!==0?(m=(d*.01).toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}.${m}Z`):!c(e)||e===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}Z`:(m=(d*.01).toFixed(e).replace(".","").slice(0,e),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}.${m}Z`)};mn.clone=function(t,e){if(c(t))return c(e)?(e.dayNumber=t.dayNumber,e.secondsOfDay=t.secondsOfDay,e):new mn(t.dayNumber,t.secondsOfDay,Di.TAI)};mn.compare=function(t,e){let n=t.dayNumber-e.dayNumber;return n!==0?n:t.secondsOfDay-e.secondsOfDay};mn.equals=function(t,e){return t===e||c(t)&&c(e)&&t.dayNumber===e.dayNumber&&t.secondsOfDay===e.secondsOfDay};mn.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(mn.secondsDifference(t,e))<=n};mn.totalDays=function(t){return t.dayNumber+t.secondsOfDay/xi.SECONDS_PER_DAY};mn.secondsDifference=function(t,e){return(t.dayNumber-e.dayNumber)*xi.SECONDS_PER_DAY+(t.secondsOfDay-e.secondsOfDay)};mn.daysDifference=function(t,e){let n=t.dayNumber-e.dayNumber,i=(t.secondsOfDay-e.secondsOfDay)/xi.SECONDS_PER_DAY;return n+i};mn.computeTaiMinusUtc=function(t){zg.julianDate=t;let e=mn.leapSeconds,n=Ja(e,zg,W6);return n<0&&(n=~n,--n,n<0&&(n=0)),e[n].offset};mn.addSeconds=function(t,e,n){return rf(t.dayNumber,t.secondsOfDay+e,n)};mn.addMinutes=function(t,e,n){let i=t.secondsOfDay+e*xi.SECONDS_PER_MINUTE;return rf(t.dayNumber,i,n)};mn.addHours=function(t,e,n){let i=t.secondsOfDay+e*xi.SECONDS_PER_HOUR;return rf(t.dayNumber,i,n)};mn.addDays=function(t,e,n){let i=t.dayNumber+e;return rf(i,t.secondsOfDay,n)};mn.lessThan=function(t,e){return mn.compare(t,e)<0};mn.lessThanOrEquals=function(t,e){return mn.compare(t,e)<=0};mn.greaterThan=function(t,e){return mn.compare(t,e)>0};mn.greaterThanOrEquals=function(t,e){return mn.compare(t,e)>=0};mn.prototype.clone=function(t){return mn.clone(this,t)};mn.prototype.equals=function(t){return mn.equals(this,t)};mn.prototype.equalsEpsilon=function(t,e){return mn.equalsEpsilon(this,t,e)};mn.prototype.toString=function(){return mn.toIso8601(this)};mn.leapSeconds=[new zo(new mn(2441317,43210,Di.TAI),10),new zo(new mn(2441499,43211,Di.TAI),11),new zo(new mn(2441683,43212,Di.TAI),12),new zo(new mn(2442048,43213,Di.TAI),13),new zo(new mn(2442413,43214,Di.TAI),14),new zo(new mn(2442778,43215,Di.TAI),15),new zo(new mn(2443144,43216,Di.TAI),16),new zo(new mn(2443509,43217,Di.TAI),17),new zo(new mn(2443874,43218,Di.TAI),18),new zo(new mn(2444239,43219,Di.TAI),19),new zo(new mn(2444786,43220,Di.TAI),20),new zo(new mn(2445151,43221,Di.TAI),21),new zo(new mn(2445516,43222,Di.TAI),22),new zo(new mn(2446247,43223,Di.TAI),23),new zo(new mn(2447161,43224,Di.TAI),24),new zo(new mn(2447892,43225,Di.TAI),25),new zo(new mn(2448257,43226,Di.TAI),26),new zo(new mn(2448804,43227,Di.TAI),27),new zo(new mn(2449169,43228,Di.TAI),28),new zo(new mn(2449534,43229,Di.TAI),29),new zo(new mn(2450083,43230,Di.TAI),30),new zo(new mn(2450630,43231,Di.TAI),31),new zo(new mn(2451179,43232,Di.TAI),32),new zo(new mn(2453736,43233,Di.TAI),33),new zo(new mn(2454832,43234,Di.TAI),34),new zo(new mn(2456109,43235,Di.TAI),35),new zo(new mn(2457204,43236,Di.TAI),36),new zo(new mn(2457754,43237,Di.TAI),37)];var rt=mn;var Bve=R(W(),1),kmt=R(uh(),1);var Hwe=R(W(),1);function O_t(t){return(t.length===0||t[t.length-1]!=="/")&&(t=`${t}/`),t}var $N=O_t;var vwe=R(W(),1);function Gmt(t,e){if(t===null||typeof t!="object")return t;e=f(e,!1);let n=new t.constructor;for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];e&&(o=Gmt(o,e)),n[i]=o}return n}var be=Gmt;var qwe=R(W(),1);function Amt(t,e,n){n=f(n,!1);let i={},o=c(t),a=c(e),s,l,r;if(o)for(s in t)t.hasOwnProperty(s)&&(l=t[s],a&&n&&typeof l=="object"&&e.hasOwnProperty(s)?(r=e[s],typeof r=="object"?i[s]=Amt(l,r,n):i[s]=l):i[s]=l);if(a)for(s in e)e.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(r=e[s],i[s]=r);return i}var ze=Amt;var tPe=R(W(),1);function H_t(){let t,e,n=new Promise(function(i,o){t=i,e=o});return{resolve:t,reject:e,promise:n}}var kd=H_t;var oPe=R(W(),1),Tmt=R(uh(),1);function U6(t,e){let n;return typeof document<"u"&&(n=document),U6._implementation(t,e,n)}U6._implementation=function(t,e,n){if(!c(e)){if(typeof n>"u")return t;e=f(n.baseURI,n.location.href)}let i=new Tmt.default(t);return i.scheme()!==""?i.toString():i.absoluteTo(e).toString()};var IV=U6;var sPe=R(W(),1),Smt=R(uh(),1);function w_t(t,e){let n="",i=t.lastIndexOf("/");return i!==-1&&(n=t.substring(0,i+1)),e&&(t=new Smt.default(t),t.query().length!==0&&(n+=`?${t.query()}`),t.fragment().length!==0&&(n+=`#${t.fragment()}`)),n}var ty=w_t;var rPe=R(W(),1),gmt=R(uh(),1);function P_t(t){let e=new gmt.default(t);e.normalize();let n=e.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var pG=P_t;var mPe=R(W(),1);var Emt={};function v_t(t,e,n){c(e)||(e=t.width),c(n)||(n=t.height);let i=Emt[e];c(i)||(i={},Emt[e]=i);let o=i[n];if(!c(o)){let a=document.createElement("canvas");a.width=e,a.height=n,o=a.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(t,0,0,e,n),o.getImageData(0,0,e,n).data}var vu=v_t;var pPe=R(W(),1);var K_t=/^blob:/i;function z_t(t){return K_t.test(t)}var uG=z_t;var VPe=R(W(),1);var NV;function j_t(t){c(NV)||(NV=document.createElement("a")),NV.href=window.location.href;let e=NV.host,n=NV.protocol;return NV.href=t,NV.href=NV.href,n!==NV.protocol||e!==NV.host}var ZG=j_t;var RPe=R(W(),1);var q_t=/^data:/i;function $_t(t){return q_t.test(t)}var fR=$_t;var fPe=R(W(),1);function t9t(t){let e=document.createElement("script");return e.async=!0,e.src=t,new Promise((n,i)=>{window.crossOriginIsolated&&e.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];e.onload=function(){e.onload=void 0,o.removeChild(e),n()},e.onerror=function(a){i(a)},o.appendChild(e)})}var VG=t9t;var UPe=R(W(),1);function e9t(t){let e="";for(let n in t)if(t.hasOwnProperty(n)){let i=t[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let a=0,s=i.length;a0){let s=o.substring(0,a),l=o.substring(a+2);e[s]=l}}return e}var ey=a9t;function Cmt(t,e,n){this.statusCode=t,this.response=e,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=ey(this.responseHeaders))}Cmt.prototype.toString=function(){let t="Request has failed.";return c(this.statusCode)&&(t+=` Status Code: ${this.statusCode}`),t};var yV=Cmt;var ove=R(W(),1),WH=R(uh(),1);var OPe=R(W(),1);function ny(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(ny.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});ny.prototype.addEventListener=function(t,e){this._listeners.push(t),this._scopes.push(e);let n=this;return function(){n.removeEventListener(t,e)}};ny.prototype.removeEventListener=function(t,e){let n=this._listeners,i=this._scopes,o=-1;for(let a=0;a0){for(o.sort(s9t),t=0;t=0;--e)this.heapify(e)};RG.prototype.insert=function(t){let e=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(oi&&(a=e[i],this._length=i),a};RG.prototype.pop=function(t){if(t=f(t,0),this._length===0)return;let e=this._array,n=e[t];return G6(e,t,--this._length),this.heapify(t),e[this._length]=void 0,n};var iy=RG;function l9t(t,e){return t.priority-e.priority}var ha={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},$g=20,Yd=new iy({comparator:l9t});Yd.maximumLength=$g;Yd.reserve($g);var BV=[],FR={},r9t=typeof document<"u"?new WH.default(document.location.href):new WH.default,fH=new It;function Vs(){}Vs.maximumRequests=50;Vs.maximumRequestsPerServer=18;Vs.requestsByServer={};Vs.throttleRequests=!0;Vs.debugShowStatistics=!1;Vs.requestCompletedEvent=fH;Object.defineProperties(Vs,{statistics:{get:function(){return ha}},priorityHeapLength:{get:function(){return $g},set:function(t){if(t<$g)for(;Yd.length>t;){let e=Yd.pop();WG(e)}$g=t,Yd.maximumLength=t,Yd.reserve(t)}}});function Imt(t){c(t.priorityFunction)&&(t.priority=t.priorityFunction())}Vs.serverHasOpenSlots=function(t,e){e=f(e,1);let n=f(Vs.requestsByServer[t],Vs.maximumRequestsPerServer);return FR[t]+e<=n};Vs.heapHasOpenSlots=function(t){return Yd.length+t<=$g};function Nmt(t){return t.state===qi.UNISSUED&&(t.state=qi.ISSUED,t.deferred=kd()),t.deferred.promise}function d9t(t){return function(e){if(t.state===qi.CANCELLED)return;let n=t.deferred;--ha.numberOfActiveRequests,--FR[t.serverKey],fH.raiseEvent(),t.state=qi.RECEIVED,t.deferred=void 0,n.resolve(e)}}function c9t(t){return function(e){t.state!==qi.CANCELLED&&(++ha.numberOfFailedRequests,--ha.numberOfActiveRequests,--FR[t.serverKey],fH.raiseEvent(e),t.state=qi.FAILED,t.deferred.reject(e))}}function ymt(t){let e=Nmt(t);return t.state=qi.ACTIVE,BV.push(t),++ha.numberOfActiveRequests,++ha.numberOfActiveRequestsEver,++FR[t.serverKey],t.requestFunction().then(d9t(t)).catch(c9t(t)),e}function WG(t){let e=t.state===qi.ACTIVE;if(t.state=qi.CANCELLED,++ha.numberOfCancelledRequests,c(t.deferred)){let n=t.deferred;t.deferred=void 0,n.reject()}e&&(--ha.numberOfActiveRequests,--FR[t.serverKey],++ha.numberOfCancelledActiveRequests),c(t.cancelFunction)&&t.cancelFunction()}Vs.update=function(){let t,e,n=0,i=BV.length;for(t=0;t0&&(BV[t-n]=e)}BV.length-=n;let o=Yd.internalArray,a=Yd.length;for(t=0;t0;){if(e=Yd.pop(),e.cancelled){WG(e);continue}if(e.throttleByServer&&!Vs.serverHasOpenSlots(e.serverKey)){WG(e);continue}ymt(e),++l}m9t()};Vs.getServerKey=function(t){let e=new WH.default(t);e.scheme()===""&&(e=e.absoluteTo(r9t),e.normalize());let n=e.authority();/:/.test(n)||(n=`${n}:${e.scheme()==="https"?"443":"80"}`);let i=FR[n];return c(i)||(FR[n]=0),n};Vs.request=function(t){if(fR(t.url)||uG(t.url))return fH.raiseEvent(),t.state=qi.RECEIVED,t.requestFunction();if(++ha.numberOfAttemptedRequests,c(t.serverKey)||(t.serverKey=Vs.getServerKey(t.url)),Vs.throttleRequests&&t.throttleByServer&&!Vs.serverHasOpenSlots(t.serverKey))return;if(!Vs.throttleRequests||!t.throttle)return ymt(t);if(BV.length>=Vs.maximumRequests)return;Imt(t);let e=Yd.insert(t);if(c(e)){if(e===t)return;WG(e)}return Nmt(t)};function m9t(){Vs.debugShowStatistics&&(ha.numberOfActiveRequests===0&&ha.lastNumberOfActiveRequests>0&&(ha.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${ha.numberOfAttemptedRequests}`),ha.numberOfAttemptedRequests=0),ha.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${ha.numberOfCancelledRequests}`),ha.numberOfCancelledRequests=0),ha.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${ha.numberOfCancelledActiveRequests}`),ha.numberOfCancelledActiveRequests=0),ha.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${ha.numberOfFailedRequests}`),ha.numberOfFailedRequests=0)),ha.lastNumberOfActiveRequests=ha.numberOfActiveRequests)}Vs.clearForSpecs=function(){for(;Yd.length>0;){let e=Yd.pop();WG(e)}let t=BV.length;for(let e=0;e0}},credits:{get:function(){return this._credits}}});cn.prototype.toString=function(){return this.getUrlComponent(!0,!0)};cn.prototype.parseUrl=function(t,e,n,i){let o=new kmt.default(t),a=p9t(o.query());this._queryParameters=e?UH(a,this.queryParameters,n):a,o.search(""),o.fragment(""),c(i)&&o.scheme()===""&&(o=o.absoluteTo(IV(i))),this._url=o.toString()};function p9t(t){return t.length===0?{}:t.indexOf("=")===-1?{[t]:void 0}:Tc(t)}function UH(t,e,n){if(!n)return ze(t,e);let i=be(t,!0);for(let o in e)if(e.hasOwnProperty(o)){let a=i[o],s=e[o];c(a)?(Array.isArray(a)||(a=i[o]=[a]),i[o]=a.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}cn.prototype.getUrlComponent=function(t,e){if(this.isDataUri)return this._url;let n=this._url;t&&(n=`${n}${u9t(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,a){let s=i[a];return c(s)?encodeURIComponent(s):o})),e&&c(this.proxy)&&(n=this.proxy.getURL(n)),n};function u9t(t){let e=Object.keys(t);return e.length===0?"":e.length===1&&!c(t[e[0]])?`?${e[0]}`:`?${bG(t)}`}cn.prototype.setQueryParameters=function(t,e){e?this._queryParameters=UH(this._queryParameters,t,!1):this._queryParameters=UH(t,this._queryParameters,!1)};cn.prototype.appendQueryParameters=function(t){this._queryParameters=UH(t,this._queryParameters,!0)};cn.prototype.setTemplateValues=function(t,e){e?this._templateValues=ze(this._templateValues,t):this._templateValues=ze(t,this._templateValues)};cn.prototype.getDerivedResource=function(t){let e=this.clone();if(e._retryCount=0,c(t.url)){let n=f(t.preserveQueryParameters,!1);e.parseUrl(t.url,!0,n,this._url)}return c(t.queryParameters)&&(e._queryParameters=ze(t.queryParameters,e.queryParameters)),c(t.templateValues)&&(e._templateValues=ze(t.templateValues,e.templateValues)),c(t.headers)&&(e.headers=ze(t.headers,e.headers)),c(t.proxy)&&(e.proxy=t.proxy),c(t.request)&&(e.request=t.request),c(t.retryCallback)&&(e.retryCallback=t.retryCallback),c(t.retryAttempts)&&(e.retryAttempts=t.retryAttempts),e};cn.prototype.retryOnError=function(t){let e=this.retryCallback;if(typeof e!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(e(this,t)).then(function(i){return++n._retryCount,i})};cn.prototype.clone=function(t){return c(t)?(t._url=this._url,t._queryParameters=be(this._queryParameters),t._templateValues=be(this._templateValues),t.headers=be(this.headers),t.proxy=this.proxy,t.retryCallback=this.retryCallback,t.retryAttempts=this.retryAttempts,t._retryCount=0,t.request=this.request.clone(),t):new cn({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:c(this.credits)?this.credits.slice():void 0})};cn.prototype.getBaseUri=function(t){return ty(this.getUrlComponent(t),t)};cn.prototype.appendForwardSlash=function(){this._url=$N(this._url)};cn.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};cn.fetchArrayBuffer=function(t){return new cn(t).fetchArrayBuffer()};cn.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};cn.fetchBlob=function(t){return new cn(t).fetchBlob()};cn.prototype.fetchImage=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.preferImageBitmap,!1),n=f(t.preferBlob,!1),i=f(t.flipY,!1),o=f(t.skipColorSpaceConversion,!1);if(T6(this.request),!Ymt||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return A6({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:e});let a=this.fetchBlob();if(!c(a))return;let s,l,r,d;return cn.supportsImageBitmapOptions().then(function(m){return s=m,l=s&&e,a}).then(function(m){if(!c(m))return;if(d=m,l)return cn.createImageBitmapFromBlob(m,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(m);return r=new cn({url:h}),A6({resource:r,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(m){if(c(m))return m.blob=d,l||window.URL.revokeObjectURL(r.url),m}).catch(function(m){return c(r)&&window.URL.revokeObjectURL(r.url),m.blob=d,Promise.reject(m)})};function A6(t){let e=t.resource,n=t.flipY,i=t.skipColorSpaceConversion,o=t.preferImageBitmap,a=e.request;a.url=e.url,a.requestFunction=function(){let l=!1;!e.isDataUri&&!e.isBlobUri&&(l=e.isCrossOriginUrl);let r=kd();return cn._Implementations.createImage(a,l,r,n,i,o),r.promise};let s=xd.request(a);if(c(s))return s.catch(function(l){return a.state!==qi.FAILED?Promise.reject(l):e.retryOnError(l).then(function(r){return r?(a.state=qi.UNISSUED,a.deferred=void 0,A6({resource:e,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(l)})})}cn.fetchImage=function(t){return new cn(t).fetchImage({flipY:t.flipY,skipColorSpaceConversion:t.skipColorSpaceConversion,preferBlob:t.preferBlob,preferImageBitmap:t.preferImageBitmap})};cn.prototype.fetchText=function(){return this.fetch({responseType:"text"})};cn.fetchText=function(t){return new cn(t).fetchText()};cn.prototype.fetchJson=function(){let t=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(c(t))return t.then(function(e){if(c(e))return JSON.parse(e)})};cn.fetchJson=function(t){return new cn(t).fetchJson()};cn.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};cn.fetchXML=function(t){return new cn(t).fetchXML()};cn.prototype.fetchJsonp=function(t){t=f(t,"callback"),T6(this.request);let e;do e=`loadJsonp${k.nextRandomNumber().toString().substring(2,8)}`;while(c(window[e]));return xmt(this,t,e)};function xmt(t,e,n){let i={};i[e]=n,t.setQueryParameters(i);let o=t.request,a=t.url;o.url=a,o.requestFunction=function(){let l=kd();return window[n]=function(r){l.resolve(r);try{delete window[n]}catch{window[n]=void 0}},cn._Implementations.loadAndExecuteScript(a,n,l),l.promise};let s=xd.request(o);if(c(s))return s.catch(function(l){return o.state!==qi.FAILED?Promise.reject(l):t.retryOnError(l).then(function(r){return r?(o.state=qi.UNISSUED,o.deferred=void 0,xmt(t,e,n)):Promise.reject(l)})})}cn.fetchJsonp=function(t){return new cn(t).fetchJsonp(t.callbackParameterName)};cn.prototype._makeRequest=function(t){let e=this;T6(e.request);let n=e.request,i=e.url;n.url=i,n.requestFunction=function(){let a=t.responseType,s=ze(t.headers,e.headers),l=t.overrideMimeType,r=t.method,d=t.data,m=kd(),h=cn._Implementations.loadWithXhr(i,a,r,d,s,m,l);return c(h)&&c(h.abort)&&(n.cancelFunction=function(){h.abort()}),m.promise};let o=xd.request(n);if(c(o))return o.then(function(a){return n.cancelFunction=void 0,a}).catch(function(a){return n.cancelFunction=void 0,n.state!==qi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(s){return s?(n.state=qi.UNISSUED,n.deferred=void 0,e.fetch(t)):Promise.reject(a)})})};function T6(t){if(t.state===qi.ISSUED||t.state===qi.ACTIVE)throw new St("The Resource is already being fetched.");t.state=qi.UNISSUED,t.deferred=void 0}var Z9t=/^data:(.*?)(;base64)?,(.*)$/;function FH(t,e){let n=decodeURIComponent(e);return t?atob(n):n}function Qmt(t,e){let n=FH(t,e),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let a=0;a{if(!l.ok){let r={};l.headers.forEach((d,m)=>{r[m]=d}),a.reject(new yV(l.status,l,r));return}switch(e){case"text":a.resolve(l.text());break;case"json":a.resolve(l.json());break;default:a.resolve(new Uint8Array(await l.arrayBuffer()).buffer);break}}).catch(()=>{a.reject(new yV)})}var R9t=typeof XMLHttpRequest>"u";cn._Implementations.loadWithXhr=function(t,e,n,i,o,a,s){let l=Z9t.exec(t);if(l!==null){a.resolve(V9t(l,e));return}if(R9t){b9t(t,e,n,i,o,a,s);return}let r=new XMLHttpRequest;if(eE.contains(t)&&(r.withCredentials=!0),r.open(n,t,!0),c(s)&&c(r.overrideMimeType)&&r.overrideMimeType(s),c(o))for(let m in o)o.hasOwnProperty(m)&&r.setRequestHeader(m,o[m]);c(e)&&(r.responseType=e);let d=!1;return typeof t=="string"&&(d=t.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),r.onload=function(){if((r.status<200||r.status>=300)&&!(d&&r.status===0)){a.reject(new yV(r.status,r.response,r.getAllResponseHeaders()));return}let m=r.response,h=r.responseType;if(n==="HEAD"||n==="OPTIONS"){let b=r.getAllResponseHeaders().trim().split(/[\r\n]+/),u={};b.forEach(function(F){let U=F.split(": "),G=U.shift();u[G]=U.join(": ")}),a.resolve(u);return}if(r.status===204)a.resolve(void 0);else if(c(m)&&(!c(e)||h===e))a.resolve(m);else if(e==="json"&&typeof m=="string")try{a.resolve(JSON.parse(m))}catch(Z){a.reject(Z)}else(h===""||h==="document")&&c(r.responseXML)&&r.responseXML.hasChildNodes()?a.resolve(r.responseXML):(h===""||h==="text")&&c(r.responseText)?a.resolve(r.responseText):a.reject(new St("Invalid XMLHttpRequest response type."))},r.onerror=function(m){a.reject(new yV)},r.send(i),r};cn._Implementations.loadAndExecuteScript=function(t,e,n){return VG(t,e).catch(function(i){n.reject(i)})};cn._DefaultImplementations={};cn._DefaultImplementations.createImage=cn._Implementations.createImage;cn._DefaultImplementations.loadWithXhr=cn._Implementations.loadWithXhr;cn._DefaultImplementations.loadAndExecuteScript=cn._Implementations.loadAndExecuteScript;cn.DEFAULT=Object.freeze(new cn({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var te=cn;function sy(t){t=f(t,f.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=f(t.addNewLeapSeconds,!0),c(t.data)?Xmt(this,t.data):Xmt(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}sy.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=te.createIfNeeded(t),i;try{i=await n.fetchJson()}catch{throw new St(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new sy({addNewLeapSeconds:e.addNewLeapSeconds,data:i})};sy.NONE=Object.freeze({compute:function(t,e){return c(e)?(e.xPoleWander=0,e.yPoleWander=0,e.xPoleOffset=0,e.yPoleOffset=0,e.ut1MinusUtc=0):e=new lf(0,0,0,0,0),e}});sy.prototype.compute=function(t,e){if(!c(this._samples))return;if(c(e)||(e=new lf(0,0,0,0,0)),this._samples.length===0)return e.xPoleWander=0,e.yPoleWander=0,e.xPoleOffset=0,e.yPoleOffset=0,e.ut1MinusUtc=0,e;let n=this._dates,i=this._lastIndex,o=0,a=0;if(c(i)){let l=n[i],r=n[i+1],d=rt.lessThanOrEquals(l,t),m=!c(r),h=m||rt.greaterThanOrEquals(r,t);if(d&&h)return o=i,!m&&r.equals(t)&&++o,a=o+1,Lmt(this,n,this._samples,t,o,a,e),e}let s=Ja(n,t,rt.compare,this._dateColumn);return s>=0?(se.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let r=e[o],d=e[a];if(r.equals(d)||i.equals(r))return Jmt(t,n,o,l,s),s;if(i.equals(d))return Jmt(t,n,a,l,s),s;let m=rt.secondsDifference(i,r)/rt.secondsDifference(d,r),h=o*l,Z=a*l,b=n[h+t._ut1MinusUtcSecondsColumn],u=n[Z+t._ut1MinusUtcSecondsColumn],F=u-b;if(F>.5||F<-.5){let U=n[h+t._taiMinusUtcSecondsColumn],G=n[Z+t._taiMinusUtcSecondsColumn];U!==G&&(d.equals(i)?b=u:u-=G-U)}return s.xPoleWander=ay(m,n[h+t._xPoleWanderRadiansColumn],n[Z+t._xPoleWanderRadiansColumn]),s.yPoleWander=ay(m,n[h+t._yPoleWanderRadiansColumn],n[Z+t._yPoleWanderRadiansColumn]),s.xPoleOffset=ay(m,n[h+t._xCelestialPoleOffsetRadiansColumn],n[Z+t._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=ay(m,n[h+t._yCelestialPoleOffsetRadiansColumn],n[Z+t._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=ay(m,b,u),s}var ly=sy;var rKe=R(W(),1);var $ve=R(W(),1);function Qe(t,e,n,i){this.x=f(t,0),this.y=f(e,0),this.z=f(n,0),this.w=f(i,0)}var ry=new p;Qe.fromAxisAngle=function(t,e,n){let i=e/2,o=Math.sin(i);ry=p.normalize(t,ry);let a=ry.x*o,s=ry.y*o,l=ry.z*o,r=Math.cos(i);return c(n)?(n.x=a,n.y=s,n.z=l,n.w=r,n):new Qe(a,s,l,r)};var f9t=[1,2,0],F9t=new Array(3);Qe.fromRotationMatrix=function(t,e){let n,i,o,a,s,l=t[ot.COLUMN0ROW0],r=t[ot.COLUMN1ROW1],d=t[ot.COLUMN2ROW2],m=l+r+d;if(m>0)n=Math.sqrt(m+1),s=.5*n,n=.5/n,i=(t[ot.COLUMN1ROW2]-t[ot.COLUMN2ROW1])*n,o=(t[ot.COLUMN2ROW0]-t[ot.COLUMN0ROW2])*n,a=(t[ot.COLUMN0ROW1]-t[ot.COLUMN1ROW0])*n;else{let h=f9t,Z=0;r>l&&(Z=1),d>l&&d>r&&(Z=2);let b=h[Z],u=h[b];n=Math.sqrt(t[ot.getElementIndex(Z,Z)]-t[ot.getElementIndex(b,b)]-t[ot.getElementIndex(u,u)]+1);let F=F9t;F[Z]=.5*n,n=.5/n,s=(t[ot.getElementIndex(u,b)]-t[ot.getElementIndex(b,u)])*n,F[b]=(t[ot.getElementIndex(b,Z)]+t[ot.getElementIndex(Z,b)])*n,F[u]=(t[ot.getElementIndex(u,Z)]+t[ot.getElementIndex(Z,u)])*n,i=-F[0],o=-F[1],a=-F[2]}return c(e)?(e.x=i,e.y=o,e.z=a,e.w=s,e):new Qe(i,o,a,s)};var Mmt=new Qe,_mt=new Qe,S6=new Qe,Dmt=new Qe;Qe.fromHeadingPitchRoll=function(t,e){return Dmt=Qe.fromAxisAngle(p.UNIT_X,t.roll,Mmt),S6=Qe.fromAxisAngle(p.UNIT_Y,-t.pitch,e),e=Qe.multiply(S6,Dmt,S6),_mt=Qe.fromAxisAngle(p.UNIT_Z,-t.heading,Mmt),Qe.multiply(_mt,e,e)};var GH=new p,g6=new p,Ku=new Qe,Omt=new Qe,AH=new Qe;Qe.packedLength=4;Qe.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n++]=t.y,e[n++]=t.z,e[n]=t.w,e};Qe.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Qe),n.x=t[e],n.y=t[e+1],n.z=t[e+2],n.w=t[e+3],n};Qe.packedInterpolationLength=3;Qe.convertPackedArrayForInterpolation=function(t,e,n,i){Qe.unpack(t,n*4,AH),Qe.conjugate(AH,AH);for(let o=0,a=n-e+1;o=0?a=1:(a=-1,o=-o);let s=o-1,l=1-n,r=n*n,d=l*l;for(let b=7;b>=0;--b)UR[b]=(TH[b]*r-SH[b])*s,GR[b]=(TH[b]*d-SH[b])*s;let m=a*n*(1+UR[0]*(1+UR[1]*(1+UR[2]*(1+UR[3]*(1+UR[4]*(1+UR[5]*(1+UR[6]*(1+UR[7])))))))),h=l*(1+GR[0]*(1+GR[1]*(1+GR[2]*(1+GR[3]*(1+GR[4]*(1+GR[5]*(1+GR[6]*(1+GR[7])))))))),Z=Qe.multiplyByScalar(t,h,A9t);return Qe.multiplyByScalar(e,m,i),Qe.add(Z,i,i)};Qe.fastSquad=function(t,e,n,i,o,a){let s=Qe.fastSlerp(t,e,o,dy),l=Qe.fastSlerp(n,i,o,iE);return Qe.fastSlerp(s,l,2*o*(1-o),a)};Qe.equals=function(t,e){return t===e||c(t)&&c(e)&&t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w};Qe.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(t.x-e.x)<=n&&Math.abs(t.y-e.y)<=n&&Math.abs(t.z-e.z)<=n&&Math.abs(t.w-e.w)<=n};Qe.ZERO=Object.freeze(new Qe(0,0,0,0));Qe.IDENTITY=Object.freeze(new Qe(0,0,0,1));Qe.prototype.clone=function(t){return Qe.clone(this,t)};Qe.prototype.equals=function(t){return Qe.equals(this,t)};Qe.prototype.equalsEpsilon=function(t,e){return Qe.equalsEpsilon(this,t,e)};Qe.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var wt=Qe;function Xd(t,e,n){this.heading=f(t,0),this.pitch=f(e,0),this.roll=f(n,0)}Xd.fromQuaternion=function(t,e,n){c(e)||(e=new Xd);let i,o;if(c(n)){if(typeof n=="function")i=n();else if(n instanceof L)i=n;else throw new Ut("referenceFrame must be a Matrix4 or a function returning a Matrix4");let m=L.inverse(i,new L),h=L.getRotation(m,new ot),Z=wt.fromRotationMatrix(h,new wt);o=wt.multiply(Z,t,new wt)}else o=t;let a=2*(o.w*o.y-o.z*o.x),s=1-2*(o.x*o.x+o.y*o.y),l=2*(o.w*o.x+o.y*o.z),r=1-2*(o.y*o.y+o.z*o.z),d=2*(o.w*o.z+o.x*o.y);return e.heading=-Math.atan2(d,r),e.roll=Math.atan2(l,s),e.pitch=-k.asinClamped(a),e};Xd.fromDegrees=function(t,e,n,i){return c(i)||(i=new Xd),i.heading=t*k.RADIANS_PER_DEGREE,i.pitch=e*k.RADIANS_PER_DEGREE,i.roll=n*k.RADIANS_PER_DEGREE,i};Xd.clone=function(t,e){if(c(t))return c(e)?(e.heading=t.heading,e.pitch=t.pitch,e.roll=t.roll,e):new Xd(t.heading,t.pitch,t.roll)};Xd.equals=function(t,e){return t===e||c(t)&&c(e)&&t.heading===e.heading&&t.pitch===e.pitch&&t.roll===e.roll};Xd.equalsEpsilon=function(t,e,n,i){return t===e||c(t)&&c(e)&&k.equalsEpsilon(t.heading,e.heading,n,i)&&k.equalsEpsilon(t.pitch,e.pitch,n,i)&&k.equalsEpsilon(t.roll,e.roll,n,i)};Xd.prototype.clone=function(t){return Xd.clone(this,t)};Xd.prototype.equals=function(t){return Xd.equals(this,t)};Xd.prototype.equalsEpsilon=function(t,e,n){return Xd.equalsEpsilon(this,t,e,n)};Xd.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var Jr=Xd;var CKe=R(W(),1);var VKe=R(W(),1);var cKe=R(W(),1),N6={},gH=[],Pmt={},EH={};var y6={};var vmt={};var Kmt=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function T9t(){let t=document.getElementsByTagName("script");for(let e=0,n=t.length;e"u"?t:(c(CH)||(CH=document.createElement("a")),CH.href=t,CH.href)}var fG;function jmt(){if(c(fG))return fG;let t;return typeof CESIUM_BASE_URL<"u"?t=CESIUM_BASE_URL:c(vmt?.url)?t=IV(".",vmt.url):typeof define=="object"&&c(define.amd)&&!define.amd.toUrlUndefined&&c(Og.toUrl)?t=IV("..",FG("Core/buildModuleUrl.js")):t=T9t(),fG=new te({url:zmt(t)}),fG.appendForwardSlash(),fG}function S9t(t){return zmt(Og.toUrl(`../${t}`))}function qmt(t){return jmt().getDerivedResource({url:t}).url}var IH;function FG(t){return N6[t]?N6[t]:(c(IH)||(typeof define=="object"&&c(define.amd)&&!define.amd.toUrlUndefined&&c(Og.toUrl)?IH=S9t:IH=qmt),IH(t))}FG._cesiumScriptRegex=Kmt;FG._buildModuleUrlFromBaseUrl=qmt;FG._clearBaseResource=function(){fG=void 0};FG.setBaseUrl=function(t){fG=te.DEFAULT.getDerivedResource({url:t})};FG.getCesiumBaseUrl=jmt;var Dn=FG;var WKe=R(W(),1);function g9t(t,e,n){this.x=t,this.y=e,this.s=n}var UG=g9t;function k6(t){t=f(t,f.EMPTY_OBJECT),this._xysFileUrlTemplate=te.createIfNeeded(t.xysFileUrlTemplate),this._interpolationOrder=f(t.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=f(t.sampleZeroJulianEphemerisDate,24423965e-1),this._sampleZeroDateTT=new rt(this._sampleZeroJulianEphemerisDate,0,Di.TAI),this._stepSizeDays=f(t.stepSizeDays,1),this._samplesPerXysFile=f(t.samplesPerXysFile,1e3),this._totalSamples=f(t.totalSamples,27426),this._samples=Pmt||new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let e=this._interpolationOrder,n=this._denominators=new Array(e+1),i=this._xTable=new Array(e+1),o=Math.pow(this._stepSizeDays,e);for(let a=0;a<=e;++a){n[a]=o,i[a]=a*this._stepSizeDays;for(let s=0;s<=e;++s)s!==a&&(n[a]*=a-s);n[a]=1/n[a]}this._work=new Array(e+1),this._coef=new Array(e+1)}var E9t=new rt(0,0,Di.TAI);function B6(t,e,n){let i=E9t;return i.dayNumber=e,i.secondsOfDay=n,rt.daysDifference(i,t._sampleZeroDateTT)}k6.prototype.preload=function(t,e,n,i){let o=B6(this,t,e),a=B6(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let l=a/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);let r=s/this._samplesPerXysFile|0,d=l/this._samplesPerXysFile|0,m=[];for(let h=r;h<=d;++h)m.push(Q6(this,h));return Promise.all(m)};k6.prototype.computeXysRadians=function(t,e,n){let i=B6(this,t,e);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let a=this._interpolationOrder,s=o-(a/2|0);s<0&&(s=0);let l=s+a;l>=this._totalSamples&&(l=this._totalSamples-1,s=l-a,s<0&&(s=0));let r=!1,d=this._samples;if(c(d[s*3])||(Q6(this,s/this._samplesPerXysFile|0),r=!0),c(d[l*3])||(Q6(this,l/this._samplesPerXysFile|0),r=!0),r)return;c(n)?(n.x=0,n.y=0,n.s=0):n=new UG(0,0,0);let m=i-s*this._stepSizeDays,h=this._work,Z=this._denominators,b=this._coef,u=this._xTable,F,U;for(F=0;F<=a;++F)h[F]=m-u[F];for(F=0;F<=a;++F){for(b[F]=1,U=0;U<=a;++U)U!==F&&(b[F]*=h[U]);b[F]*=Z[F];let G=(s+F)*3;n.x+=b[F]*d[G++],n.y+=b[F]*d[G++],n.s+=b[F]*d[G]}return n};function Q6(t,e){if(t._chunkDownloadsInProgress[e])return t._chunkDownloadsInProgress[e];let n,i=t._xysFileUrlTemplate;c(i)?n=i.getDerivedResource({templateValues:{0:e}}):n=new te({url:Dn(`Assets/IAU2006_XYS/IAU2006_XYS_${e}.json`)});let o=n.fetchJson().then(function(a){t._chunkDownloadsInProgress[e]=!1;let s=t._samples,l=a.samples,r=e*t._samplesPerXysFile*3;for(let d=0,m=l.length;d=43200?o=(a+.5)/xi.DAYS_PER_JULIAN_CENTURY:o=(a-.5)/xi.DAYS_PER_JULIAN_CENTURY;let l=(J9t+o*(L9t+o*(M9t+o*_9t)))*H9t%k.TWO_PI,r=O9t+D9t*(n-24515455e-1),d=(i+xi.SECONDS_PER_DAY*.5)%xi.SECONDS_PER_DAY,m=l+r*d,h=Math.cos(m),Z=Math.sin(m);return c(e)?(e[0]=h,e[1]=-Z,e[2]=0,e[3]=Z,e[4]=h,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new ot(h,Z,0,-Z,h,0,0,0,1)};Ci.iau2006XysData=new cy;Ci.earthOrientationParameters=ly.NONE;var M6=32.184,w9t=2451545;Ci.preloadIcrfFixed=function(t){let e=t.start.dayNumber,n=t.start.secondsOfDay+M6,i=t.stop.dayNumber,o=t.stop.secondsOfDay+M6;return Ci.iau2006XysData.preload(e,n,i,o)};Ci.computeIcrfToFixedMatrix=function(t,e){c(e)||(e=new ot);let n=Ci.computeFixedToIcrfMatrix(t,e);if(c(n))return ot.transpose(n,e)};var P9t=new UG(0,0,0),v9t=new lf(0,0,0,0,0,0),X6=new ot,J6=new ot;Ci.computeFixedToIcrfMatrix=function(t,e){c(e)||(e=new ot);let n=Ci.earthOrientationParameters.compute(t,v9t);if(!c(n))return;let i=t.dayNumber,o=t.secondsOfDay+M6,a=Ci.iau2006XysData.computeXysRadians(i,o,P9t);if(!c(a))return;let s=a.x+n.xPoleOffset,l=a.y+n.yPoleOffset,r=1/(1+Math.sqrt(1-s*s-l*l)),d=X6;d[0]=1-r*s*s,d[3]=-r*s*l,d[6]=s,d[1]=-r*s*l,d[4]=1-r*l*l,d[7]=l,d[2]=-s,d[5]=-l,d[8]=1-r*(s*s+l*l);let m=ot.fromRotationZ(-a.s,J6),h=ot.multiply(d,m,X6),Z=t.dayNumber,b=t.secondsOfDay-rt.computeTaiMinusUtc(t)+n.ut1MinusUtc,u=Z-2451545,F=b/xi.SECONDS_PER_DAY,U=.779057273264+F+.00273781191135448*(u+F);U=U%1*k.TWO_PI;let G=ot.fromRotationZ(U,J6),A=ot.multiply(h,G,X6),T=Math.cos(n.xPoleWander),g=Math.cos(n.yPoleWander),C=Math.sin(n.xPoleWander),y=Math.sin(n.yPoleWander),Y=i-w9t+o/xi.SECONDS_PER_DAY;Y/=36525;let Q=-47e-6*Y*k.RADIANS_PER_DEGREE/3600,J=Math.cos(Q),M=Math.sin(Q),V=J6;return V[0]=T*J,V[1]=T*M,V[2]=C,V[3]=-g*M+y*C*J,V[4]=g*J+y*C*M,V[5]=-y*T,V[6]=-y*M-g*C*J,V[7]=y*J-g*C*M,V[8]=g*T,ot.multiply(A,V,e)};var K9t=new Rt;Ci.pointToWindowCoordinates=function(t,e,n,i){return i=Ci.pointToGLWindowCoordinates(t,e,n,i),i.y=2*e[5]-i.y,i};Ci.pointToGLWindowCoordinates=function(t,e,n,i){c(i)||(i=new K);let o=K9t;return L.multiplyByVector(t,Rt.fromElements(n.x,n.y,n.z,1,o),o),Rt.multiplyByScalar(o,1/o.w,o),L.multiplyByVector(e,o,o),K.fromCartesian4(o,i)};var z9t=new p,j9t=new p,q9t=new p;Ci.rotationMatrixFromPositionVelocity=function(t,e,n,i){let o=f(n,mt.WGS84).geodeticSurfaceNormal(t,z9t),a=p.cross(e,o,j9t);p.equalsEpsilon(a,p.ZERO,k.EPSILON6)&&(a=p.clone(p.UNIT_X,a));let s=p.cross(a,e,q9t);return p.normalize(s,s),p.cross(e,s,a),p.negate(a,a),p.normalize(a,a),c(i)||(i=new ot),i[0]=e.x,i[1]=e.y,i[2]=e.z,i[3]=a.x,i[4]=a.y,i[5]=a.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var nht=new L(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),iht=new gt,_6=new p,$9t=new p,t5t=new ot,D6=new L,oht=new L;Ci.basisTo2D=function(t,e,n){let i=L.getTranslation(e,$9t),o=t.ellipsoid,a;if(p.equals(i,p.ZERO))a=p.clone(p.ZERO,_6);else{let m=o.cartesianToCartographic(i,iht);a=t.project(m,_6),p.fromElements(a.z,a.x,a.y,a)}let s=Ci.eastNorthUpToFixedFrame(i,o,D6),l=L.inverseTransformation(s,oht),r=L.getMatrix3(e,t5t),d=L.multiplyByMatrix3(l,r,n);return L.multiply(nht,d,n),L.setTranslation(n,a,n),n};Ci.wgs84To2DModelMatrix=function(t,e,n){let i=t.ellipsoid,o=Ci.eastNorthUpToFixedFrame(e,i,D6),a=L.inverseTransformation(o,oht),s=i.cartesianToCartographic(e,iht),l=t.project(s,_6);p.fromElements(l.z,l.x,l.y,l);let r=L.fromTranslation(l,D6);return L.multiply(nht,a,n),L.multiply(r,n,n),n};var e5t=new p,n5t=new p,i5t=new p,o5t=new p,a5t=new p,s5t=new p,l5t=new p,r5t=new p,L6=new rt,d5t=new ot,c5t=new ot,m5t=new ot;Ci.vvlhToFixed=function(t,e,n){let i=t.getValue(e,e5t);rt.addSeconds(e,.01,L6);let o=t.getValue(L6,n5t),a=mt.WGS84,s=a.maximumRadius+1e5;if(c(n)||(n=new L),p.magnitude(i)<=s){let Z=p.subtract(o,i,new p),b;if(p.magnitude(Z)===0){let U=Ci.eastNorthUpToFixedFrame(i,a);b=new p(U[0],U[1],U[2])}else b=p.normalize(Z,new p);let u=a.geodeticSurfaceNormal(i,new p),F=p.cross(u,b,new p);return n[0]=b.x,n[1]=b.y,n[2]=b.z,n[3]=0,n[4]=F.x,n[5]=F.y,n[6]=F.z,n[7]=0,n[8]=u.x,n[9]=u.y,n[10]=u.z,n[11]=0,n[12]=i.x,n[13]=i.y,n[14]=i.z,n[15]=1,n}let l=Ci.computeFixedToIcrfMatrix(e,d5t);if(!l)return new L;let r=Ci.computeFixedToIcrfMatrix(L6,c5t),d=ot.transpose(l,m5t),m=ot.multiplyByVector(l,i,i5t),h=ot.multiplyByVector(r,o,o5t);if(!p.equalsEpsilon(m,h,k.EPSILON14)){let Z=p.subtract(h,m,a5t),b=s5t;try{p.negate(p.normalize(m,b),b)}catch{console.log(m,b)}let u=p.cross(Z,b,l5t);p.negate(u,u);let F=p.cross(u,b,r5t);try{ot.multiplyByVector(d,F,F),ot.multiplyByVector(d,u,u),ot.multiplyByVector(d,b,b),p.normalize(F,F),p.normalize(u,u),p.normalize(b,b),n[0]=F.x,n[1]=F.y,n[2]=F.z,n[3]=0,n[4]=u.x,n[5]=u.y,n[6]=u.z,n[7]=0,n[8]=b.x,n[9]=b.y,n[10]=b.z,n[11]=0,n[12]=i.x,n[13]=i.y,n[14]=i.z,n[15]=1}catch(U){return console.log(U,F,u,b,Z,i,o,t),new Array(16).fill(0)}}return L.multiply(n,new L(1,0,0,0,0,-1,0,0,0,0,-1,0,0,0,0,1),n),n};Ci.reverseHeadingQuaternion=function(t){if(!c(t))throw new Ut("orientation is required");let e=new Jr;Jr.fromQuaternion(t,e),e.heading=-e.heading,e.roll=-e.roll;let n=new wt;return wt.fromHeadingPitchRoll(e,n),n};var pf=new L(0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1);Ci.getPositionInVVLH=function(t,e,n,i,o=ri.FIXED){let a=e.position.getValueInReferenceFrame(n,o.FIXED),s=t.position.getValueInReferenceFrame(i,o.FIXED),l;try{l=L.inverse(Ci.vvlhToFixed(t.position,n),new L)}catch{l=new L}let r=L.multiplyByPoint(l,a,new p),d=L.getRotation(Ci.vvlhToFixed(t.position,i),new ot),m=ot.multiplyByVector(d,r,new p),h=p.add(s,m,new p);if(o===ri.INERTIAL){let Z=Ci.computeFixedToIcrfMatrix(i);Z&&(h=ot.multiplyByVector(Z,h,new p))}return h};var eht=Ci.localFrameToFixedFrameGenerator("north","west");Ci.getTransformToFixedFrame=function(t,e,n){let i,o={[ri.FIXED]:()=>L.IDENTITY,[ri.INERTIAL]:()=>{if(!c(e))throw new Ut("Conversion from INERTIAL to FIXED requires a time.");return Ci.computeIcrfToFixedMatrix(e)},[ri.TEME]:()=>{throw new Ut("Conversion from TEME to FIXED is not implemented.")},[ri.VVLH]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from VVLH to FIXED requires both time and position.");let a=Ci.vvlhToFixed(n,e),s=L.fromScale(new p(1,-1,-1));return L.multiply(a,s,new L)},[ri.NED]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from NED to FIXED requires both time and position.");let a=eht(n.getValue(e)),s=L.fromScale(new p(1,-1,-1));return L.multiply(a,s,new L)},[ri.NEU]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from NEU to FIXED requires both time and position.");let a=eht(n.getValue(e)),s=L.fromScale(new p(1,-1,1));return L.multiply(a,s,new L)},[ri.RIC]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from RIC to FIXED requires both time and position.");let a=Ci.vvlhToFixed(n,e),s=L.fromArray([0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1]);return L.multiply(a,s,new L)}};return o.hasOwnProperty(t)?i=o[t]:i=Ci.eastNorthUpToFixedFrame,i};var Pe=Ci;function fi(t,e,n,i){this.west=f(t,0),this.south=f(e,0),this.east=f(n,0),this.north=f(i,0)}Object.defineProperties(fi.prototype,{width:{get:function(){return fi.computeWidth(this)}},height:{get:function(){return fi.computeHeight(this)}}});fi.packedLength=4;fi.pack=function(t,e,n){return n=f(n,0),e[n++]=t.west,e[n++]=t.south,e[n++]=t.east,e[n]=t.north,e};fi.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new fi),n.west=t[e++],n.south=t[e++],n.east=t[e++],n.north=t[e],n};fi.computeWidth=function(t){let e=t.east,n=t.west;return e=0?m.longitude:m.longitude+k.TWO_PI;o=Math.min(o,h),a=Math.max(a,h)}return i-n>a-o&&(n=o,i=a,i>k.PI&&(i=i-k.TWO_PI),n>k.PI&&(n=n-k.TWO_PI)),c(e)?(e.west=n,e.south=s,e.east=i,e.north=l,e):new fi(n,s,i,l)};fi.fromCartesianArray=function(t,e,n){e=f(e,mt.WGS84);let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,a=Number.MAX_VALUE,s=-Number.MAX_VALUE,l=Number.MAX_VALUE,r=-Number.MAX_VALUE;for(let d=0,m=t.length;d=0?h.longitude:h.longitude+k.TWO_PI;a=Math.min(a,Z),s=Math.max(s,Z)}return o-i>s-a&&(i=a,o=s,o>k.PI&&(o=o-k.TWO_PI),i>k.PI&&(i=i-k.TWO_PI)),c(n)?(n.west=i,n.south=l,n.east=o,n.north=r,n):new fi(i,l,o,r)};var h5t=new p,p5t=new p,u5t=new p,Z5t=new p,V5t=new p,O6=new Array(5);for(let t=0;t0?i+=k.TWO_PI:a0&&(a+=k.TWO_PI),i=m))return c(n)?(n.west=l,n.south=d,n.east=r,n.north=m,n):new fi(l,d,r,m)};fi.simpleIntersection=function(t,e,n){let i=Math.max(t.west,e.west),o=Math.max(t.south,e.south),a=Math.min(t.east,e.east),s=Math.min(t.north,e.north);if(!(o>=s||i>=a))return c(n)?(n.west=i,n.south=o,n.east=a,n.north=s,n):new fi(i,o,a,s)};fi.union=function(t,e,n){c(n)||(n=new fi);let i=t.east,o=t.west,a=e.east,s=e.west;i0?i+=k.TWO_PI:a0&&(a+=k.TWO_PI),io||k.equalsEpsilon(n,o,k.EPSILON14))&&(n=t.south&&i<=t.north};var b5t=new gt;fi.subsample=function(t,e,n,i){e=f(e,mt.WGS84),n=f(n,0),c(i)||(i=[]);let o=0,a=t.north,s=t.south,l=t.east,r=t.west,d=b5t;d.height=n,d.longitude=r,d.latitude=a,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.longitude=l,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.latitude=s,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.longitude=r,i[o]=e.cartographicToCartesian(d,i[o]),o++,a<0?d.latitude=a:s>0?d.latitude=s:d.latitude=0;for(let m=1;m<8;++m)d.longitude=-Math.PI+m*k.PI_OVER_TWO,fi.contains(t,d)&&(i[o]=e.cartographicToCartesian(d,i[o]),o++);return d.latitude===0&&(d.longitude=r,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.longitude=l,i[o]=e.cartographicToCartesian(d,i[o]),o++),i.length=o,i};fi.subsection=function(t,e,n,i,o,a){if(c(a)||(a=new fi),t.west<=t.east){let l=t.east-t.west;a.west=t.west+e*l,a.east=t.west+i*l}else{let l=k.TWO_PI+t.east-t.west;a.west=k.negativePiToPi(t.west+e*l),a.east=k.negativePiToPi(t.west+i*l)}let s=t.north-t.south;return a.south=t.south+n*s,a.north=t.south+o*s,e===1&&(a.west=t.east),i===1&&(a.east=t.east),n===1&&(a.south=t.north),o===1&&(a.north=t.north),a};fi.MAX_VALUE=Object.freeze(new fi(-Math.PI,-k.PI_OVER_TWO,Math.PI,k.PI_OVER_TWO));var Gt=fi;function tl(t,e,n,i){this.x=f(t,0),this.y=f(e,0),this.width=f(n,0),this.height=f(i,0)}tl.packedLength=4;tl.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n++]=t.y,e[n++]=t.width,e[n]=t.height,e};tl.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new tl),n.x=t[e++],n.y=t[e++],n.width=t[e++],n.height=t[e],n};tl.fromPoints=function(t,e){if(c(e)||(e=new tl),!c(t)||t.length===0)return e.x=0,e.y=0,e.width=0,e.height=0,e;let n=t.length,i=t[0].x,o=t[0].y,a=t[0].x,s=t[0].y;for(let l=1;ln.width?n.width=i:i<0&&(n.width-=i,n.x=e.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=e.y),n};tl.intersect=function(t,e){let n=t.x,i=t.y,o=e.x,a=e.y;return n>o+e.width||n+t.widtha+e.height?yn.OUTSIDE:yn.INTERSECTING};tl.equals=function(t,e){return t===e||c(t)&&c(e)&&t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height};tl.prototype.clone=function(t){return tl.clone(this,t)};tl.prototype.intersect=function(t){return tl.intersect(this,t)};tl.prototype.equals=function(t){return tl.equals(this,t)};var Fe=tl;var F3e=R(W(),1);var dd={POINTS:pt.POINTS,LINES:pt.LINES,LINE_LOOP:pt.LINE_LOOP,LINE_STRIP:pt.LINE_STRIP,TRIANGLES:pt.TRIANGLES,TRIANGLE_STRIP:pt.TRIANGLE_STRIP,TRIANGLE_FAN:pt.TRIANGLE_FAN};dd.isLines=function(t){return t===dd.LINES||t===dd.LINE_LOOP||t===dd.LINE_STRIP};dd.isTriangles=function(t){return t===dd.TRIANGLES||t===dd.TRIANGLE_STRIP||t===dd.TRIANGLE_FAN};dd.validate=function(t){return t===dd.POINTS||t===dd.LINES||t===dd.LINE_LOOP||t===dd.LINE_STRIP||t===dd.TRIANGLES||t===dd.TRIANGLE_STRIP||t===dd.TRIANGLE_FAN};var le=Object.freeze(dd);var G3e=R(W(),1),GG=`in vec4 position; +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var L=Ce;var QOe=b(W(),1),DMt={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},pt=Object.freeze(DMt);var OMt=new p;function dn(t){this._size=t.size,this._datatype=t.datatype,this.getValue=t.getValue}var Xr={};Xr[pt.FLOAT]="float";Xr[pt.FLOAT_VEC2]="vec2";Xr[pt.FLOAT_VEC3]="vec3";Xr[pt.FLOAT_VEC4]="vec4";Xr[pt.INT]="int";Xr[pt.INT_VEC2]="ivec2";Xr[pt.INT_VEC3]="ivec3";Xr[pt.INT_VEC4]="ivec4";Xr[pt.BOOL]="bool";Xr[pt.BOOL_VEC2]="bvec2";Xr[pt.BOOL_VEC3]="bvec3";Xr[pt.BOOL_VEC4]="bvec4";Xr[pt.FLOAT_MAT2]="mat2";Xr[pt.FLOAT_MAT3]="mat3";Xr[pt.FLOAT_MAT4]="mat4";Xr[pt.SAMPLER_2D]="sampler2D";Xr[pt.SAMPLER_CUBE]="samplerCube";dn.prototype.getDeclaration=function(t){let e=`uniform ${Xr[this._datatype]} ${t}`,n=this._size;return n===1?e+=";":e+=`[${n.toString()}];`,e};var HMt={czm_viewport:new dn({size:1,datatype:pt.FLOAT_VEC4,getValue:function(t){return t.viewportCartesian4}}),czm_viewportOrthographic:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.viewportOrthographic}}),czm_viewportTransformation:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.viewportTransformation}}),czm_globeDepthTexture:new dn({size:1,datatype:pt.SAMPLER_2D,getValue:function(t){return t.globeDepthTexture}}),czm_model:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.model}}),czm_inverseModel:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseModel}}),czm_view:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.view}}),czm_view3D:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.view3D}}),czm_viewRotation:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.viewRotation}}),czm_viewRotation3D:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.viewRotation3D}}),czm_inverseView:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseView}}),czm_inverseView3D:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseView3D}}),czm_inverseViewRotation:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.inverseViewRotation}}),czm_inverseViewRotation3D:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.inverseViewRotation3D}}),czm_projection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.projection}}),czm_inverseProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseProjection}}),czm_infiniteProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.infiniteProjection}}),czm_modelView:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelView}}),czm_modelView3D:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelView3D}}),czm_modelViewRelativeToEye:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelViewRelativeToEye}}),czm_inverseModelView:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseModelView}}),czm_inverseModelView3D:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseModelView3D}}),czm_viewProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.viewProjection}}),czm_inverseViewProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseViewProjection}}),czm_modelViewProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelViewProjection}}),czm_inverseModelViewProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelViewInfiniteProjection}}),czm_orthographicIn3D:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.orthographicIn3D?1:0}}),czm_normal:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.normal}}),czm_normal3D:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.normal3D}}),czm_inverseNormal:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.inverseNormal}}),czm_inverseNormal3D:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.inverseNormal3D}}),czm_eyeHeight:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.eyeHeight}}),czm_eyeHeight2D:new dn({size:1,datatype:pt.FLOAT_VEC2,getValue:function(t){return t.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new dn({size:1,datatype:pt.FLOAT_VEC2,getValue:function(t){return t.eyeEllipsoidCurvature}}),czm_modelToEnu:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.modelToEnu}}),czm_enuToModel:new dn({size:1,datatype:pt.FLOAT_MAT4,getValue:function(t){return t.enuToModel}}),czm_entireFrustum:new dn({size:1,datatype:pt.FLOAT_VEC2,getValue:function(t){return t.entireFrustum}}),czm_currentFrustum:new dn({size:1,datatype:pt.FLOAT_VEC2,getValue:function(t){return t.currentFrustum}}),czm_frustumPlanes:new dn({size:1,datatype:pt.FLOAT_VEC4,getValue:function(t){return t.frustumPlanes}}),czm_farDepthFromNearPlusOne:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.sunPositionWC}}),czm_sunPositionColumbusView:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.sunPositionColumbusView}}),czm_sunDirectionEC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.sunDirectionEC}}),czm_sunDirectionWC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.sunDirectionWC}}),czm_moonDirectionEC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.moonDirectionEC}}),czm_lightDirectionEC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.lightDirectionEC}}),czm_lightDirectionWC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.lightDirectionWC}}),czm_lightColor:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.lightColor}}),czm_lightColorHdr:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return L.getTranslation(t.inverseView,OMt)}}),czm_frameNumber:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.frameState.frameNumber}}),czm_morphTime:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.frameState.morphTime}}),czm_sceneMode:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.frameState.mode}}),czm_pass:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.pass}}),czm_backgroundColor:new dn({size:1,datatype:pt.FLOAT_VEC4,getValue:function(t){return t.backgroundColor}}),czm_brdfLut:new dn({size:1,datatype:pt.SAMPLER_2D,getValue:function(t){return t.brdfLut}}),czm_environmentMap:new dn({size:1,datatype:pt.SAMPLER_CUBE,getValue:function(t){return t.environmentMap}}),czm_specularEnvironmentMaps:new dn({size:1,datatype:pt.SAMPLER_2D,getValue:function(t){return t.specularEnvironmentMaps}}),czm_specularEnvironmentMapSize:new dn({size:1,datatype:pt.FLOAT_VEC2,getValue:function(t){return t.specularEnvironmentMapsDimensions}}),czm_specularEnvironmentMapsMaximumLOD:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new dn({size:9,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new dn({size:1,datatype:pt.FLOAT_MAT3,getValue:function(t){return t.temeToPseudoFixedMatrix}}),czm_pixelRatio:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.pixelRatio}}),czm_fogDensity:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.fogDensity}}),czm_fogMinimumBrightness:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.fogMinimumBrightness}}),czm_atmosphereHsbShift:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.atmosphereDynamicLighting}}),czm_splitPosition:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.splitPosition}}),czm_geometricToleranceOverMeter:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new dn({size:1,datatype:pt.FLOAT_VEC4,getValue:function(t){return t.invertClassificationColor}}),czm_gamma:new dn({size:1,datatype:pt.FLOAT,getValue:function(t){return t.gamma}}),czm_ellipsoidRadii:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new dn({size:1,datatype:pt.FLOAT_VEC3,getValue:function(t){return t.ellipsoid.oneOverRadii}})},Rb=HMt;var sHe=b(W(),1);var MOe=b(W(),1);function wMt(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){let e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}var Ti=wMt;var OOe=b(W(),1);function PMt(){return!0}function vMt(t,e){e=f(e,"This object was destroyed, i.e., destroy() was called.");function n(){}for(let i in t)typeof t[i]=="function"&&(t[i]=n);t.isDestroyed=PMt}var At=vMt;var KOe=b(W(),1);var Vr={UNSIGNED_BYTE:pt.UNSIGNED_BYTE,UNSIGNED_SHORT:pt.UNSIGNED_SHORT,UNSIGNED_INT:pt.UNSIGNED_INT};Vr.getSizeInBytes=function(t){switch(t){case Vr.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Vr.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Vr.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};Vr.fromSizeInBytes=function(t){switch(t){case 2:return Vr.UNSIGNED_SHORT;case 4:return Vr.UNSIGNED_INT;case 1:return Vr.UNSIGNED_BYTE}};Vr.validate=function(t){return c(t)&&(t===Vr.UNSIGNED_BYTE||t===Vr.UNSIGNED_SHORT||t===Vr.UNSIGNED_INT)};Vr.createTypedArray=function(t,e){return t>=k.SIXTY_FOUR_KILOBYTES?new Uint32Array(e):new Uint16Array(e)};Vr.createTypedArrayFromArrayBuffer=function(t,e,n,i){return t>=k.SIXTY_FOUR_KILOBYTES?new Uint32Array(e,n,i):new Uint16Array(e,n,i)};Vr.fromTypedArray=function(t){if(t instanceof Uint8Array)return Vr.UNSIGNED_BYTE;if(t instanceof Uint16Array)return Vr.UNSIGNED_SHORT;if(t instanceof Uint32Array)return Vr.UNSIGNED_INT};var re=Object.freeze(Vr);var qOe=b(W(),1);var eH={STREAM_DRAW:pt.STREAM_DRAW,STATIC_DRAW:pt.STATIC_DRAW,DYNAMIC_DRAW:pt.DYNAMIC_DRAW,validate:function(t){return t===eH.STREAM_DRAW||t===eH.STATIC_DRAW||t===eH.DYNAMIC_DRAW}},ce=Object.freeze(eH);function Sp(t){t=f(t,f.EMPTY_OBJECT);let e=t.context._gl,n=t.bufferTarget,i=t.typedArray,o=t.sizeInBytes,a=t.usage,s=c(i);s&&(o=i.byteLength);let l=e.createBuffer();e.bindBuffer(n,l),e.bufferData(n,s?i:o,a),e.bindBuffer(n,null),this._id=Ti(),this._gl=e,this._webgl2=t.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=a,this._buffer=l,this.vertexArrayDestroyable=!0}Sp.createVertexBuffer=function(t){return new Sp({context:t.context,bufferTarget:pt.ARRAY_BUFFER,typedArray:t.typedArray,sizeInBytes:t.sizeInBytes,usage:t.usage})};Sp.createIndexBuffer=function(t){let e=t.context,n=t.indexDatatype,i=re.getSizeInBytes(n),o=new Sp({context:e,bufferTarget:pt.ELEMENT_ARRAY_BUFFER,typedArray:t.typedArray,sizeInBytes:t.sizeInBytes,usage:t.usage}),a=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return a}}}),o};Object.defineProperties(Sp.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Sp.prototype._getBuffer=function(){return this._buffer};Sp.prototype.copyFromArrayView=function(t,e){e=f(e,0);let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,e,t),n.bindBuffer(i,null)};Sp.prototype.copyFromBuffer=function(t,e,n,i){let o=pt.COPY_READ_BUFFER,a=pt.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(a,this._buffer),s.bindBuffer(o,t._buffer),s.copyBufferSubData(o,a,e,n,i),s.bindBuffer(a,null),s.bindBuffer(o,null)};Sp.prototype.getBufferData=function(t,e,n,i){e=f(e,0),n=f(n,0);let o=this._gl,a=pt.COPY_READ_BUFFER;o.bindBuffer(a,this._buffer),o.getBufferSubData(a,e,t,n,i),o.bindBuffer(a,null)};Sp.prototype.isDestroyed=function(){return!1};Sp.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),At(this)};var we=Sp;var AHe=b(W(),1);var fHe=b(W(),1);var VHe=b(W(),1);var dHe=b(W(),1);var sf,$s={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},bm={};Object.defineProperties(bm,{element:{get:function(){if(bm.supportsFullscreen())return document[$s.fullscreenElement]}},changeEventName:{get:function(){if(bm.supportsFullscreen())return $s.fullscreenchange}},errorEventName:{get:function(){if(bm.supportsFullscreen())return $s.fullscreenerror}},enabled:{get:function(){if(bm.supportsFullscreen())return document[$s.fullscreenEnabled]}},fullscreen:{get:function(){if(bm.supportsFullscreen())return bm.element!==null}}});bm.supportsFullscreen=function(){if(c(sf))return sf;sf=!1;let t=document.body;if(typeof t.requestFullscreen=="function")return $s.requestFullscreen="requestFullscreen",$s.exitFullscreen="exitFullscreen",$s.fullscreenEnabled="fullscreenEnabled",$s.fullscreenElement="fullscreenElement",$s.fullscreenchange="fullscreenchange",$s.fullscreenerror="fullscreenerror",sf=!0,sf;let e=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=e.length;i{let e=new Image;e.onload=function(){Ac._result=e.width>0&&e.height>0,t(Ac._result)},e.onerror=function(){Ac._result=!1,t(Ac._result)},e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),Ac._promise};Object.defineProperties(Ac,{initialized:{get:function(){return c(Ac._result)}}});var Kg=[];typeof ArrayBuffer<"u"&&(Kg.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&Kg.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&Kg.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&Kg.push(BigInt64Array),typeof BigUint64Array<"u"&&Kg.push(BigUint64Array));var Tp={isChrome:h6,chromeVersion:KMt,isSafari:nmt,safariVersion:zMt,isWebkit:imt,webkitVersion:jMt,isInternetExplorer:omt,internetExplorerVersion:qMt,isEdge:rH,edgeVersion:$Mt,isFirefox:dH,firefoxVersion:n_t,isWindows:t_t,isIPadOrIOS:e_t,hardwareConcurrency:f(Qd.hardwareConcurrency,3),supportsPointerEvents:i_t,supportsImageRenderingPixelated:lmt,supportsWebP:Ac,imageRenderingValue:o_t,typedArrayTypes:Kg};Tp.supportsBasis=function(t){return Tp.supportsWebAssembly()&&t.context.supportsBasis};Tp.supportsFullscreen=function(){return Ds.supportsFullscreen()};Tp.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};Tp.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};Tp.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};Tp.supportsBigInt=function(){return typeof BigInt<"u"};Tp.supportsWebWorkers=function(){return typeof Worker<"u"};Tp.supportsWebAssembly=function(){return typeof WebAssembly<"u"};Tp.supportsWebgl2=function(t){return t.context.webgl2};Tp.supportsEsmWebWorkers=function(){return!dH()||parseInt(p6)>=114};var In=Tp;function V6(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?t+(e-t)*6*n:n*2<1?e:n*3<2?t+(e-t)*(2/3-n)*6:t}function Zt(t,e,n,i){this.red=f(t,1),this.green=f(e,1),this.blue=f(n,1),this.alpha=f(i,1)}Zt.fromCartesian4=function(t,e){return c(e)?(e.red=t.x,e.green=t.y,e.blue=t.z,e.alpha=t.w,e):new Zt(t.x,t.y,t.z,t.w)};Zt.fromBytes=function(t,e,n,i,o){return t=Zt.byteToFloat(f(t,255)),e=Zt.byteToFloat(f(e,255)),n=Zt.byteToFloat(f(n,255)),i=Zt.byteToFloat(f(i,255)),c(o)?(o.red=t,o.green=e,o.blue=n,o.alpha=i,o):new Zt(t,e,n,i)};Zt.fromAlpha=function(t,e,n){return c(n)?(n.red=t.red,n.green=t.green,n.blue=t.blue,n.alpha=e,n):new Zt(t.red,t.green,t.blue,e)};var u6,Z6,bb;In.supportsTypedArrays()&&(u6=new ArrayBuffer(4),Z6=new Uint32Array(u6),bb=new Uint8Array(u6));Zt.fromRgba=function(t,e){return Z6[0]=t,Zt.fromBytes(bb[0],bb[1],bb[2],bb[3],e)};Zt.fromHsl=function(t,e,n,i,o){t=f(t,0)%1,e=f(e,0),n=f(n,0),i=f(i,1);let a=n,s=n,l=n;if(e!==0){let r;n<.5?r=n*(1+e):r=n+e-n*e;let d=2*n-r;a=V6(d,r,t+1/3),s=V6(d,r,t),l=V6(d,r,t-1/3)}return c(o)?(o.red=a,o.green=s,o.blue=l,o.alpha=i,o):new Zt(a,s,l,i)};Zt.fromRandom=function(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.red;if(!c(n)){let s=f(t.minimumRed,0),l=f(t.maximumRed,1);n=s+k.nextRandomNumber()*(l-s)}let i=t.green;if(!c(i)){let s=f(t.minimumGreen,0),l=f(t.maximumGreen,1);i=s+k.nextRandomNumber()*(l-s)}let o=t.blue;if(!c(o)){let s=f(t.minimumBlue,0),l=f(t.maximumBlue,1);o=s+k.nextRandomNumber()*(l-s)}let a=t.alpha;if(!c(a)){let s=f(t.minimumAlpha,0),l=f(t.maximumAlpha,1);a=s+k.nextRandomNumber()*(l-s)}return c(e)?(e.red=n,e.green=i,e.blue=o,e.alpha=a,e):new Zt(n,i,o,a)};var a_t=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,s_t=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,l_t=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,r_t=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;Zt.fromCssColorString=function(t,e){c(e)||(e=new Zt),t=t.trim();let n=Zt[t.toUpperCase()];if(c(n))return Zt.clone(n,e),e;let i=a_t.exec(t);return i!==null?(e.red=parseInt(i[1],16)/15,e.green=parseInt(i[2],16)/15,e.blue=parseInt(i[3],16)/15,e.alpha=parseInt(f(i[4],"f"),16)/15,e):(i=s_t.exec(t),i!==null?(e.red=parseInt(i[1],16)/255,e.green=parseInt(i[2],16)/255,e.blue=parseInt(i[3],16)/255,e.alpha=parseInt(f(i[4],"ff"),16)/255,e):(i=l_t.exec(t),i!==null?(e.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),e.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),e.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),e.alpha=parseFloat(f(i[4],"1.0")),e):(i=r_t.exec(t),i!==null?Zt.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(f(i[4],"1.0")),e):(e=void 0,e))))};Zt.packedLength=4;Zt.pack=function(t,e,n){return n=f(n,0),e[n++]=t.red,e[n++]=t.green,e[n++]=t.blue,e[n]=t.alpha,e};Zt.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Zt),n.red=t[e++],n.green=t[e++],n.blue=t[e++],n.alpha=t[e],n};Zt.byteToFloat=function(t){return t/255};Zt.floatToByte=function(t){return t===1?255:t*256|0};Zt.clone=function(t,e){if(c(t))return c(e)?(e.red=t.red,e.green=t.green,e.blue=t.blue,e.alpha=t.alpha,e):new Zt(t.red,t.green,t.blue,t.alpha)};Zt.equals=function(t,e){return t===e||c(t)&&c(e)&&t.red===e.red&&t.green===e.green&&t.blue===e.blue&&t.alpha===e.alpha};Zt.equalsArray=function(t,e,n){return t.red===e[n]&&t.green===e[n+1]&&t.blue===e[n+2]&&t.alpha===e[n+3]};Zt.prototype.clone=function(t){return Zt.clone(this,t)};Zt.prototype.equals=function(t){return Zt.equals(this,t)};Zt.prototype.equalsEpsilon=function(t,e){return this===t||c(t)&&Math.abs(this.red-t.red)<=e&&Math.abs(this.green-t.green)<=e&&Math.abs(this.blue-t.blue)<=e&&Math.abs(this.alpha-t.alpha)<=e};Zt.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};Zt.prototype.toCssColorString=function(){let t=Zt.floatToByte(this.red),e=Zt.floatToByte(this.green),n=Zt.floatToByte(this.blue);return this.alpha===1?`rgb(${t},${e},${n})`:`rgba(${t},${e},${n},${this.alpha})`};Zt.prototype.toCssHexString=function(){let t=Zt.floatToByte(this.red).toString(16);t.length<2&&(t=`0${t}`);let e=Zt.floatToByte(this.green).toString(16);e.length<2&&(e=`0${e}`);let n=Zt.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=Zt.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${t}${e}${n}${i}`}return`#${t}${e}${n}`};Zt.prototype.toBytes=function(t){let e=Zt.floatToByte(this.red),n=Zt.floatToByte(this.green),i=Zt.floatToByte(this.blue),o=Zt.floatToByte(this.alpha);return c(t)?(t[0]=e,t[1]=n,t[2]=i,t[3]=o,t):[e,n,i,o]};Zt.prototype.toRgba=function(){return bb[0]=Zt.floatToByte(this.red),bb[1]=Zt.floatToByte(this.green),bb[2]=Zt.floatToByte(this.blue),bb[3]=Zt.floatToByte(this.alpha),Z6[0]};Zt.prototype.brighten=function(t,e){return t=1-t,e.red=1-(1-this.red)*t,e.green=1-(1-this.green)*t,e.blue=1-(1-this.blue)*t,e.alpha=this.alpha,e};Zt.prototype.darken=function(t,e){return t=1-t,e.red=this.red*t,e.green=this.green*t,e.blue=this.blue*t,e.alpha=this.alpha,e};Zt.prototype.withAlpha=function(t,e){return Zt.fromAlpha(this,t,e)};Zt.add=function(t,e,n){return n.red=t.red+e.red,n.green=t.green+e.green,n.blue=t.blue+e.blue,n.alpha=t.alpha+e.alpha,n};Zt.subtract=function(t,e,n){return n.red=t.red-e.red,n.green=t.green-e.green,n.blue=t.blue-e.blue,n.alpha=t.alpha-e.alpha,n};Zt.multiply=function(t,e,n){return n.red=t.red*e.red,n.green=t.green*e.green,n.blue=t.blue*e.blue,n.alpha=t.alpha*e.alpha,n};Zt.divide=function(t,e,n){return n.red=t.red/e.red,n.green=t.green/e.green,n.blue=t.blue/e.blue,n.alpha=t.alpha/e.alpha,n};Zt.mod=function(t,e,n){return n.red=t.red%e.red,n.green=t.green%e.green,n.blue=t.blue%e.blue,n.alpha=t.alpha%e.alpha,n};Zt.lerp=function(t,e,n,i){return i.red=k.lerp(t.red,e.red,n),i.green=k.lerp(t.green,e.green,n),i.blue=k.lerp(t.blue,e.blue,n),i.alpha=k.lerp(t.alpha,e.alpha,n),i};Zt.multiplyByScalar=function(t,e,n){return n.red=t.red*e,n.green=t.green*e,n.blue=t.blue*e,n.alpha=t.alpha*e,n};Zt.divideByScalar=function(t,e,n){return n.red=t.red/e,n.green=t.green/e,n.blue=t.blue/e,n.alpha=t.alpha/e,n};Zt.ALICEBLUE=Object.freeze(Zt.fromCssColorString("#F0F8FF"));Zt.ANTIQUEWHITE=Object.freeze(Zt.fromCssColorString("#FAEBD7"));Zt.AQUA=Object.freeze(Zt.fromCssColorString("#00FFFF"));Zt.AQUAMARINE=Object.freeze(Zt.fromCssColorString("#7FFFD4"));Zt.AZURE=Object.freeze(Zt.fromCssColorString("#F0FFFF"));Zt.BEIGE=Object.freeze(Zt.fromCssColorString("#F5F5DC"));Zt.BISQUE=Object.freeze(Zt.fromCssColorString("#FFE4C4"));Zt.BLACK=Object.freeze(Zt.fromCssColorString("#000000"));Zt.BLANCHEDALMOND=Object.freeze(Zt.fromCssColorString("#FFEBCD"));Zt.BLUE=Object.freeze(Zt.fromCssColorString("#0000FF"));Zt.BLUEVIOLET=Object.freeze(Zt.fromCssColorString("#8A2BE2"));Zt.BROWN=Object.freeze(Zt.fromCssColorString("#A52A2A"));Zt.BURLYWOOD=Object.freeze(Zt.fromCssColorString("#DEB887"));Zt.CADETBLUE=Object.freeze(Zt.fromCssColorString("#5F9EA0"));Zt.CHARTREUSE=Object.freeze(Zt.fromCssColorString("#7FFF00"));Zt.CHOCOLATE=Object.freeze(Zt.fromCssColorString("#D2691E"));Zt.CORAL=Object.freeze(Zt.fromCssColorString("#FF7F50"));Zt.CORNFLOWERBLUE=Object.freeze(Zt.fromCssColorString("#6495ED"));Zt.CORNSILK=Object.freeze(Zt.fromCssColorString("#FFF8DC"));Zt.CRIMSON=Object.freeze(Zt.fromCssColorString("#DC143C"));Zt.CYAN=Object.freeze(Zt.fromCssColorString("#00FFFF"));Zt.DARKBLUE=Object.freeze(Zt.fromCssColorString("#00008B"));Zt.DARKCYAN=Object.freeze(Zt.fromCssColorString("#008B8B"));Zt.DARKGOLDENROD=Object.freeze(Zt.fromCssColorString("#B8860B"));Zt.DARKGRAY=Object.freeze(Zt.fromCssColorString("#A9A9A9"));Zt.DARKGREEN=Object.freeze(Zt.fromCssColorString("#006400"));Zt.DARKGREY=Zt.DARKGRAY;Zt.DARKKHAKI=Object.freeze(Zt.fromCssColorString("#BDB76B"));Zt.DARKMAGENTA=Object.freeze(Zt.fromCssColorString("#8B008B"));Zt.DARKOLIVEGREEN=Object.freeze(Zt.fromCssColorString("#556B2F"));Zt.DARKORANGE=Object.freeze(Zt.fromCssColorString("#FF8C00"));Zt.DARKORCHID=Object.freeze(Zt.fromCssColorString("#9932CC"));Zt.DARKRED=Object.freeze(Zt.fromCssColorString("#8B0000"));Zt.DARKSALMON=Object.freeze(Zt.fromCssColorString("#E9967A"));Zt.DARKSEAGREEN=Object.freeze(Zt.fromCssColorString("#8FBC8F"));Zt.DARKSLATEBLUE=Object.freeze(Zt.fromCssColorString("#483D8B"));Zt.DARKSLATEGRAY=Object.freeze(Zt.fromCssColorString("#2F4F4F"));Zt.DARKSLATEGREY=Zt.DARKSLATEGRAY;Zt.DARKTURQUOISE=Object.freeze(Zt.fromCssColorString("#00CED1"));Zt.DARKVIOLET=Object.freeze(Zt.fromCssColorString("#9400D3"));Zt.DEEPPINK=Object.freeze(Zt.fromCssColorString("#FF1493"));Zt.DEEPSKYBLUE=Object.freeze(Zt.fromCssColorString("#00BFFF"));Zt.DIMGRAY=Object.freeze(Zt.fromCssColorString("#696969"));Zt.DIMGREY=Zt.DIMGRAY;Zt.DODGERBLUE=Object.freeze(Zt.fromCssColorString("#1E90FF"));Zt.FIREBRICK=Object.freeze(Zt.fromCssColorString("#B22222"));Zt.FLORALWHITE=Object.freeze(Zt.fromCssColorString("#FFFAF0"));Zt.FORESTGREEN=Object.freeze(Zt.fromCssColorString("#228B22"));Zt.FUCHSIA=Object.freeze(Zt.fromCssColorString("#FF00FF"));Zt.GAINSBORO=Object.freeze(Zt.fromCssColorString("#DCDCDC"));Zt.GHOSTWHITE=Object.freeze(Zt.fromCssColorString("#F8F8FF"));Zt.GOLD=Object.freeze(Zt.fromCssColorString("#FFD700"));Zt.GOLDENROD=Object.freeze(Zt.fromCssColorString("#DAA520"));Zt.GRAY=Object.freeze(Zt.fromCssColorString("#808080"));Zt.GREEN=Object.freeze(Zt.fromCssColorString("#008000"));Zt.GREENYELLOW=Object.freeze(Zt.fromCssColorString("#ADFF2F"));Zt.GREY=Zt.GRAY;Zt.HONEYDEW=Object.freeze(Zt.fromCssColorString("#F0FFF0"));Zt.HOTPINK=Object.freeze(Zt.fromCssColorString("#FF69B4"));Zt.INDIANRED=Object.freeze(Zt.fromCssColorString("#CD5C5C"));Zt.INDIGO=Object.freeze(Zt.fromCssColorString("#4B0082"));Zt.IVORY=Object.freeze(Zt.fromCssColorString("#FFFFF0"));Zt.KHAKI=Object.freeze(Zt.fromCssColorString("#F0E68C"));Zt.LAVENDER=Object.freeze(Zt.fromCssColorString("#E6E6FA"));Zt.LAVENDAR_BLUSH=Object.freeze(Zt.fromCssColorString("#FFF0F5"));Zt.LAWNGREEN=Object.freeze(Zt.fromCssColorString("#7CFC00"));Zt.LEMONCHIFFON=Object.freeze(Zt.fromCssColorString("#FFFACD"));Zt.LIGHTBLUE=Object.freeze(Zt.fromCssColorString("#ADD8E6"));Zt.LIGHTCORAL=Object.freeze(Zt.fromCssColorString("#F08080"));Zt.LIGHTCYAN=Object.freeze(Zt.fromCssColorString("#E0FFFF"));Zt.LIGHTGOLDENRODYELLOW=Object.freeze(Zt.fromCssColorString("#FAFAD2"));Zt.LIGHTGRAY=Object.freeze(Zt.fromCssColorString("#D3D3D3"));Zt.LIGHTGREEN=Object.freeze(Zt.fromCssColorString("#90EE90"));Zt.LIGHTGREY=Zt.LIGHTGRAY;Zt.LIGHTPINK=Object.freeze(Zt.fromCssColorString("#FFB6C1"));Zt.LIGHTSEAGREEN=Object.freeze(Zt.fromCssColorString("#20B2AA"));Zt.LIGHTSKYBLUE=Object.freeze(Zt.fromCssColorString("#87CEFA"));Zt.LIGHTSLATEGRAY=Object.freeze(Zt.fromCssColorString("#778899"));Zt.LIGHTSLATEGREY=Zt.LIGHTSLATEGRAY;Zt.LIGHTSTEELBLUE=Object.freeze(Zt.fromCssColorString("#B0C4DE"));Zt.LIGHTYELLOW=Object.freeze(Zt.fromCssColorString("#FFFFE0"));Zt.LIME=Object.freeze(Zt.fromCssColorString("#00FF00"));Zt.LIMEGREEN=Object.freeze(Zt.fromCssColorString("#32CD32"));Zt.LINEN=Object.freeze(Zt.fromCssColorString("#FAF0E6"));Zt.MAGENTA=Object.freeze(Zt.fromCssColorString("#FF00FF"));Zt.MAROON=Object.freeze(Zt.fromCssColorString("#800000"));Zt.MEDIUMAQUAMARINE=Object.freeze(Zt.fromCssColorString("#66CDAA"));Zt.MEDIUMBLUE=Object.freeze(Zt.fromCssColorString("#0000CD"));Zt.MEDIUMORCHID=Object.freeze(Zt.fromCssColorString("#BA55D3"));Zt.MEDIUMPURPLE=Object.freeze(Zt.fromCssColorString("#9370DB"));Zt.MEDIUMSEAGREEN=Object.freeze(Zt.fromCssColorString("#3CB371"));Zt.MEDIUMSLATEBLUE=Object.freeze(Zt.fromCssColorString("#7B68EE"));Zt.MEDIUMSPRINGGREEN=Object.freeze(Zt.fromCssColorString("#00FA9A"));Zt.MEDIUMTURQUOISE=Object.freeze(Zt.fromCssColorString("#48D1CC"));Zt.MEDIUMVIOLETRED=Object.freeze(Zt.fromCssColorString("#C71585"));Zt.MIDNIGHTBLUE=Object.freeze(Zt.fromCssColorString("#191970"));Zt.MINTCREAM=Object.freeze(Zt.fromCssColorString("#F5FFFA"));Zt.MISTYROSE=Object.freeze(Zt.fromCssColorString("#FFE4E1"));Zt.MOCCASIN=Object.freeze(Zt.fromCssColorString("#FFE4B5"));Zt.NAVAJOWHITE=Object.freeze(Zt.fromCssColorString("#FFDEAD"));Zt.NAVY=Object.freeze(Zt.fromCssColorString("#000080"));Zt.OLDLACE=Object.freeze(Zt.fromCssColorString("#FDF5E6"));Zt.OLIVE=Object.freeze(Zt.fromCssColorString("#808000"));Zt.OLIVEDRAB=Object.freeze(Zt.fromCssColorString("#6B8E23"));Zt.ORANGE=Object.freeze(Zt.fromCssColorString("#FFA500"));Zt.ORANGERED=Object.freeze(Zt.fromCssColorString("#FF4500"));Zt.ORCHID=Object.freeze(Zt.fromCssColorString("#DA70D6"));Zt.PALEGOLDENROD=Object.freeze(Zt.fromCssColorString("#EEE8AA"));Zt.PALEGREEN=Object.freeze(Zt.fromCssColorString("#98FB98"));Zt.PALETURQUOISE=Object.freeze(Zt.fromCssColorString("#AFEEEE"));Zt.PALEVIOLETRED=Object.freeze(Zt.fromCssColorString("#DB7093"));Zt.PAPAYAWHIP=Object.freeze(Zt.fromCssColorString("#FFEFD5"));Zt.PEACHPUFF=Object.freeze(Zt.fromCssColorString("#FFDAB9"));Zt.PERU=Object.freeze(Zt.fromCssColorString("#CD853F"));Zt.PINK=Object.freeze(Zt.fromCssColorString("#FFC0CB"));Zt.PLUM=Object.freeze(Zt.fromCssColorString("#DDA0DD"));Zt.POWDERBLUE=Object.freeze(Zt.fromCssColorString("#B0E0E6"));Zt.PURPLE=Object.freeze(Zt.fromCssColorString("#800080"));Zt.RED=Object.freeze(Zt.fromCssColorString("#FF0000"));Zt.ROSYBROWN=Object.freeze(Zt.fromCssColorString("#BC8F8F"));Zt.ROYALBLUE=Object.freeze(Zt.fromCssColorString("#4169E1"));Zt.SADDLEBROWN=Object.freeze(Zt.fromCssColorString("#8B4513"));Zt.SALMON=Object.freeze(Zt.fromCssColorString("#FA8072"));Zt.SANDYBROWN=Object.freeze(Zt.fromCssColorString("#F4A460"));Zt.SEAGREEN=Object.freeze(Zt.fromCssColorString("#2E8B57"));Zt.SEASHELL=Object.freeze(Zt.fromCssColorString("#FFF5EE"));Zt.SIENNA=Object.freeze(Zt.fromCssColorString("#A0522D"));Zt.SILVER=Object.freeze(Zt.fromCssColorString("#C0C0C0"));Zt.SKYBLUE=Object.freeze(Zt.fromCssColorString("#87CEEB"));Zt.SLATEBLUE=Object.freeze(Zt.fromCssColorString("#6A5ACD"));Zt.SLATEGRAY=Object.freeze(Zt.fromCssColorString("#708090"));Zt.SLATEGREY=Zt.SLATEGRAY;Zt.SNOW=Object.freeze(Zt.fromCssColorString("#FFFAFA"));Zt.SPRINGGREEN=Object.freeze(Zt.fromCssColorString("#00FF7F"));Zt.STEELBLUE=Object.freeze(Zt.fromCssColorString("#4682B4"));Zt.TAN=Object.freeze(Zt.fromCssColorString("#D2B48C"));Zt.TEAL=Object.freeze(Zt.fromCssColorString("#008080"));Zt.THISTLE=Object.freeze(Zt.fromCssColorString("#D8BFD8"));Zt.TOMATO=Object.freeze(Zt.fromCssColorString("#FF6347"));Zt.TURQUOISE=Object.freeze(Zt.fromCssColorString("#40E0D0"));Zt.VIOLET=Object.freeze(Zt.fromCssColorString("#EE82EE"));Zt.WHEAT=Object.freeze(Zt.fromCssColorString("#F5DEB3"));Zt.WHITE=Object.freeze(Zt.fromCssColorString("#FFFFFF"));Zt.WHITESMOKE=Object.freeze(Zt.fromCssColorString("#F5F5F5"));Zt.YELLOW=Object.freeze(Zt.fromCssColorString("#FFFF00"));Zt.YELLOWGREEN=Object.freeze(Zt.fromCssColorString("#9ACD32"));Zt.TRANSPARENT=Object.freeze(new Zt(0,0,0,0));var v=Zt;function cH(t){t=f(t,f.EMPTY_OBJECT),this.color=t.color,this.depth=t.depth,this.stencil=t.stencil,this.renderState=t.renderState,this.framebuffer=t.framebuffer,this.owner=t.owner,this.pass=t.pass}cH.ALL=Object.freeze(new cH({color:new v(0,0,0,0),depth:1,stencil:0}));cH.prototype.execute=function(t,e){t.clear(this,e)};var ao=cH;var IHe=b(W(),1);var THe=b(W(),1),d_t={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,OVERLAY:10,NUMBER_OF_PASSES:11},Pt=Object.freeze(d_t);function rmt(t){t=f(t,f.EMPTY_OBJECT),this.vertexArray=t.vertexArray,this.fragmentShaderSource=t.fragmentShaderSource,this.shaderProgram=t.shaderProgram,this.uniformMap=t.uniformMap,this.outputTexture=t.outputTexture,this.preExecute=t.preExecute,this.postExecute=t.postExecute,this.canceled=t.canceled,this.persists=f(t.persists,!1),this.pass=Pt.COMPUTE,this.owner=t.owner}rmt.prototype.execute=function(t){t.execute(this)};var Wm=rmt;var qze=b(W(),1);var bKe=b(W(),1);var kHe=b(W(),1);function Un(t,e){this.x=f(t,0),this.y=f(e,0)}Un.fromElements=function(t,e,n){return c(n)?(n.x=t,n.y=e,n):new Un(t,e)};Un.clone=function(t,e){if(c(t))return c(e)?(e.x=t.x,e.y=t.y,e):new Un(t.x,t.y)};Un.fromCartesian3=Un.clone;Un.fromCartesian4=Un.clone;Un.packedLength=2;Un.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n]=t.y,e};Un.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Un),n.x=t[e++],n.y=t[e],n};Un.packArray=function(t,e){let n=t.length,i=n*2;c(e)?!Array.isArray(e)&&e.length!==i||e.length!==i&&(e.length=i):e=new Array(i);for(let o=0;ok.EPSILON12);return c(o)?(o.x=a*J,o.y=s*M,o.z=l*Z,o):new p(a*J,s*M,l*Z)}var hG=p_t;function xl(t,e,n){this.longitude=f(t,0),this.latitude=f(e,0),this.height=f(n,0)}xl.fromRadians=function(t,e,n,i){return n=f(n,0),c(i)?(i.longitude=t,i.latitude=e,i.height=n,i):new xl(t,e,n)};xl.fromDegrees=function(t,e,n,i){return t=k.toRadians(t),e=k.toRadians(e),xl.fromRadians(t,e,n,i)};var V_t=new p,u_t=new p,Z_t=new p,R_t=new p(1/6378137,1/6378137,1/6356752314245179e-9),b_t=new p(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9)),W_t=k.EPSILON1;xl.fromCartesian=function(t,e,n){let i=c(e)?e.oneOverRadii:R_t,o=c(e)?e.oneOverRadiiSquared:b_t,a=c(e)?e._centerToleranceSquared:W_t,s=hG(t,i,o,a,u_t);if(!c(s))return;let l=p.multiplyComponents(s,o,V_t);l=p.normalize(l,l);let r=p.subtract(t,s,Z_t),d=Math.atan2(l.y,l.x),m=Math.asin(l.z),h=k.sign(p.dot(r,t))*p.magnitude(r);return c(n)?(n.longitude=d,n.latitude=m,n.height=h,n):new xl(d,m,h)};xl.toCartesian=function(t,e,n){return p.fromRadians(t.longitude,t.latitude,t.height,e,n)};xl.clone=function(t,e){if(c(t))return c(e)?(e.longitude=t.longitude,e.latitude=t.latitude,e.height=t.height,e):new xl(t.longitude,t.latitude,t.height)};xl.equals=function(t,e){return t===e||c(t)&&c(e)&&t.longitude===e.longitude&&t.latitude===e.latitude&&t.height===e.height};xl.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(t.longitude-e.longitude)<=n&&Math.abs(t.latitude-e.latitude)<=n&&Math.abs(t.height-e.height)<=n};xl.ZERO=Object.freeze(new xl(0,0,0));xl.prototype.clone=function(t){return xl.clone(this,t)};xl.prototype.equals=function(t){return xl.equals(this,t)};xl.prototype.equalsEpsilon=function(t,e){return xl.equalsEpsilon(this,t,e)};xl.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var gt=xl;var dwe=b(W(),1);var nwe=b(W(),1);function pmt(t,e,n,i){e=f(e,0),n=f(n,0),i=f(i,0),t._radii=new p(e,n,i),t._radiiSquared=new p(e*e,n*n,i*i),t._radiiToTheFourth=new p(e*e*e*e,n*n*n*n,i*i*i*i),t._oneOverRadii=new p(e===0?0:1/e,n===0?0:1/n,i===0?0:1/i),t._oneOverRadiiSquared=new p(e===0?0:1/(e*e),n===0?0:1/(n*n),i===0?0:1/(i*i)),t._minimumRadius=Math.min(e,n,i),t._maximumRadius=Math.max(e,n,i),t._centerToleranceSquared=k.EPSILON1,t._radiiSquared.z!==0&&(t._squaredXOverSquaredZ=t._radiiSquared.x/t._radiiSquared.z)}function oa(t,e,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,pmt(this,t,e,n)}Object.defineProperties(oa.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});oa.clone=function(t,e){if(!c(t))return;let n=t._radii;return c(e)?(p.clone(n,e._radii),p.clone(t._radiiSquared,e._radiiSquared),p.clone(t._radiiToTheFourth,e._radiiToTheFourth),p.clone(t._oneOverRadii,e._oneOverRadii),p.clone(t._oneOverRadiiSquared,e._oneOverRadiiSquared),e._minimumRadius=t._minimumRadius,e._maximumRadius=t._maximumRadius,e._centerToleranceSquared=t._centerToleranceSquared,e):new oa(n.x,n.y,n.z)};oa.fromCartesian3=function(t,e){return c(e)||(e=new oa),c(t)&&pmt(e,t.x,t.y,t.z),e};oa.WGS84=Object.freeze(new oa(6378137,6378137,6356752314245179e-9));oa.UNIT_SPHERE=Object.freeze(new oa(1,1,1));oa.MOON=Object.freeze(new oa(k.LUNAR_RADIUS,k.LUNAR_RADIUS,k.LUNAR_RADIUS));oa.prototype.clone=function(t){return oa.clone(this,t)};oa.packedLength=p.packedLength;oa.pack=function(t,e,n){return n=f(n,0),p.pack(t._radii,e,n),e};oa.unpack=function(t,e,n){e=f(e,0);let i=p.unpack(t,e);return oa.fromCartesian3(i,n)};oa.prototype.geocentricSurfaceNormal=p.normalize;oa.prototype.geodeticSurfaceNormalCartographic=function(t,e){let n=t.longitude,i=t.latitude,o=Math.cos(i),a=o*Math.cos(n),s=o*Math.sin(n),l=Math.sin(i);return c(e)||(e=new p),e.x=a,e.y=s,e.z=l,p.normalize(e,e)};oa.prototype.geodeticSurfaceNormal=function(t,e){if(!p.equalsEpsilon(t,p.ZERO,k.EPSILON14))return c(e)||(e=new p),e=p.multiplyComponents(t,this._oneOverRadiiSquared,e),p.normalize(e,e)};var f_t=new p,F_t=new p;oa.prototype.cartographicToCartesian=function(t,e){let n=f_t,i=F_t;this.geodeticSurfaceNormalCartographic(t,n),p.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(p.dot(n,i));return p.divideByScalar(i,o,i),p.multiplyByScalar(n,t.height,n),c(e)||(e=new p),p.add(i,n,e)};oa.prototype.cartographicArrayToCartesianArray=function(t,e){let n=t.length;c(e)?e.length=n:e=new Array(n);for(let i=0;i=this._radii.z-e))return n};var S_t=new p;oa.prototype.getLocalCurvature=function(t,e){c(e)||(e=new K);let n=this.getSurfaceNormalIntersectionWithZAxis(t,0,S_t),i=p.distance(t,n),o=this.minimumRadius*i/this.maximumRadius**2,a=i*o**2;return K.fromElements(1/i,1/a,e)};var T_t=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],g_t=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function hmt(t,e,n){let i=.5*(e+t),o=.5*(e-t),a=0;for(let s=0;s<5;s++){let l=o*T_t[s];a+=g_t[s]*(n(i+l)+n(i-l))}return a*=o,a}oa.prototype.surfaceArea=function(t){let e=t.west,n=t.east,i=t.south,o=t.north;for(;n0){o=a-1;continue}return a}return~(o+1)}var Ja=C_t;var uwe=b(W(),1);function I_t(t,e,n,i,o){this.xPoleWander=t,this.yPoleWander=e,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var lf=I_t;var Jwe=b(W(),1);var Gwe=b(W(),1);var Rwe=b(W(),1);function N_t(t){return t%4===0&&t%100!==0||t%400===0}var PV=N_t;var Vmt=[31,28,31,30,31,30,31,31,30,31,30,31];function y_t(t,e,n,i,o,a,s,l){t=f(t,1),e=f(e,1),n=f(n,1),i=f(i,0),o=f(o,0),a=f(a,0),s=f(s,0),l=f(l,!1),this.year=t,this.month=e,this.day=n,this.hour=i,this.minute=o,this.second=a,this.millisecond=s,this.isLeapSecond=l;function F(){Xa.typeOf.number.greaterThanOrEquals("Year",t,1),Xa.typeOf.number.lessThanOrEquals("Year",t,9999),Xa.typeOf.number.greaterThanOrEquals("Month",e,1),Xa.typeOf.number.lessThanOrEquals("Month",e,12),Xa.typeOf.number.greaterThanOrEquals("Day",n,1),Xa.typeOf.number.lessThanOrEquals("Day",n,31),Xa.typeOf.number.greaterThanOrEquals("Hour",i,0),Xa.typeOf.number.lessThanOrEquals("Hour",i,23),Xa.typeOf.number.greaterThanOrEquals("Minute",o,0),Xa.typeOf.number.lessThanOrEquals("Minute",o,59),Xa.typeOf.bool("IsLeapSecond",l),Xa.typeOf.number.greaterThanOrEquals("Second",a,0),Xa.typeOf.number.lessThanOrEquals("Second",a,l?60:59),Xa.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Xa.typeOf.number.lessThan("Millisecond",s,1e3)}function U(){let G=e===2&&PV(t)?Vmt[e-1]+1:Vmt[e-1];if(n>G)throw new Ut("Month and Day represents invalid date")}}var Wb=y_t;var Swe=b(W(),1);function B_t(t,e){this.julianDate=t,this.offset=e}var zo=B_t;var gwe=b(W(),1),Q_t={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},xi=Object.freeze(Q_t);var Cwe=b(W(),1),k_t={UTC:0,TAI:1},Di=Object.freeze(k_t);var Zmt=new Wb,R6=[31,28,31,30,31,30,31,31,30,31,30,31],b6=29;function W6(t,e){return mn.compare(t.julianDate,e.julianDate)}var zg=new zo;function VH(t){zg.julianDate=t;let e=mn.leapSeconds,n=Ja(e,zg,W6);n<0&&(n=~n),n>=e.length&&(n=e.length-1);let i=e[n].offset;n>0&&mn.secondsDifference(e[n].julianDate,t)>i&&(n--,i=e[n].offset),mn.addSeconds(t,i,t)}function umt(t,e){zg.julianDate=t;let n=mn.leapSeconds,i=Ja(n,zg,W6);if(i<0&&(i=~i),i===0)return mn.addSeconds(t,-n[0].offset,e);if(i>=n.length)return mn.addSeconds(t,-n[i-1].offset,e);let o=mn.secondsDifference(n[i].julianDate,t);if(o===0)return mn.addSeconds(t,-n[i].offset,e);if(!(o<=1))return mn.addSeconds(t,-n[--i].offset,e)}function rf(t,e,n){let i=e/xi.SECONDS_PER_DAY|0;return t+=i,e-=xi.SECONDS_PER_DAY*i,e<0&&(t--,e+=xi.SECONDS_PER_DAY),n.dayNumber=t,n.secondsOfDay=e,n}function f6(t,e,n,i,o,a,s){let l=(e-14)/12|0,r=t+4800+l,d=(1461*r/4|0)+(367*(e-2-12*l)/12|0)-(3*((r+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let m=a+(i*xi.SECONDS_PER_HOUR+o*xi.SECONDS_PER_MINUTE+s*xi.SECONDS_PER_MILLISECOND);return m>=43200&&(d-=1),[d,m]}var Y_t=/^(\d{4})$/,x_t=/^(\d{4})-(\d{2})$/,X_t=/^(\d{4})-?(\d{3})$/,J_t=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,L_t=/^(\d{4})-?(\d{2})-?(\d{2})$/,F6=/([Z+\-])?(\d{2})?:?(\d{2})?$/,M_t=/^(\d{2})(\.\d+)?/.source+F6.source,__t=/^(\d{2}):?(\d{2})(\.\d+)?/.source+F6.source,D_t=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+F6.source;function mn(t,e,n){this.dayNumber=void 0,this.secondsOfDay=void 0,t=f(t,0),e=f(e,0),n=f(n,Di.UTC);let i=t|0;e=e+(t-i)*xi.SECONDS_PER_DAY,rf(i,e,this),n===Di.UTC&&VH(this)}mn.fromGregorianDate=function(t,e){let n=f6(t.year,t.month,t.day,t.hour,t.minute,t.second,t.millisecond);return c(e)?(rf(n[0],n[1],e),VH(e),e):new mn(n[0],n[1],Di.UTC)};mn.fromDate=function(t,e){let n=f6(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds());return c(e)?(rf(n[0],n[1],e),VH(e),e):new mn(n[0],n[1],Di.UTC)};mn.fromIso8601=function(t,e){t=t.replace(",",".");let n=t.split("T"),i,o=1,a=1,s=0,l=0,r=0,d=0,m=n[0],h=n[1],u,R;if(n=m.match(L_t),n!==null)i=+n[1],o=+n[2],a=+n[3];else if(n=m.match(x_t),n!==null)i=+n[1],o=+n[2];else if(n=m.match(Y_t),n!==null)i=+n[1];else{let G;if(n=m.match(X_t),n!==null)i=+n[1],G=+n[2],R=PV(i);else if(n=m.match(J_t),n!==null){i=+n[1];let A=+n[2],S=+n[3]||0,g=new Date(Date.UTC(i,0,4));G=A*7+S-g.getUTCDay()-3}u=new Date(Date.UTC(i,0,1)),u.setUTCDate(G),o=u.getUTCMonth()+1,a=u.getUTCDate()}R=PV(i);let V;if(c(h)){n=h.match(D_t),n!==null?(s=+n[1],l=+n[2],r=+n[3],d=+(n[4]||0)*1e3,V=5):(n=h.match(__t),n!==null?(s=+n[1],l=+n[2],r=+(n[3]||0)*60,V=4):(n=h.match(M_t),n!==null&&(s=+n[1],l=+(n[2]||0)*60,V=3)));let G=n[V],A=+n[V+1],S=+(n[V+2]||0);switch(G){case"+":s=s-A,l=l-S;break;case"-":s=s+A,l=l+S;break;case"Z":break;default:l=l+new Date(Date.UTC(i,o-1,a,s,l)).getTimezoneOffset();break}}let F=r===60;for(F&&r--;l>=60;)l-=60,s++;for(;s>=24;)s-=24,a++;for(u=R&&o===2?b6:R6[o-1];a>u;)a-=u,o++,o>12&&(o-=12,i++),u=R&&o===2?b6:R6[o-1];for(;l<0;)l+=60,s--;for(;s<0;)s+=24,a--;for(;a<1;)o--,o<1&&(o+=12,i--),u=R&&o===2?b6:R6[o-1],a+=u;let U=f6(i,o,a,s,l,r,d);return c(e)?(rf(U[0],U[1],e),VH(e)):e=new mn(U[0],U[1],Di.UTC),F&&mn.addSeconds(e,1,e),e};mn.now=function(t){return mn.fromDate(new Date,t)};var pH=new mn(0,0,Di.TAI);mn.toGregorianDate=function(t,e){let n=!1,i=umt(t,pH);c(i)||(mn.addSeconds(t,-1,pH),i=umt(pH,pH),n=!0);let o=i.dayNumber,a=i.secondsOfDay;a>=43200&&(o+=1);let s=o+68569|0,l=4*s/146097|0;s=s-((146097*l+3)/4|0)|0;let r=4e3*(s+1)/1461001|0;s=s-(1461*r/4|0)+31|0;let d=80*s/2447|0,m=s-(2447*d/80|0)|0;s=d/11|0;let h=d+2-12*s|0,u=100*(l-49)+r+s|0,R=a/xi.SECONDS_PER_HOUR|0,V=a-R*xi.SECONDS_PER_HOUR,F=V/xi.SECONDS_PER_MINUTE|0;V=V-F*xi.SECONDS_PER_MINUTE;let U=V|0,G=(V-U)/xi.SECONDS_PER_MILLISECOND;return R+=12,R>23&&(R-=24),n&&(U+=1),c(e)?(e.year=u,e.month=h,e.day=m,e.hour=R,e.minute=F,e.second=U,e.millisecond=G,e.isLeapSecond=n,e):new Wb(u,h,m,R,F,U,G,n)};mn.toDate=function(t){let e=mn.toGregorianDate(t,Zmt),n=e.second;return e.isLeapSecond&&(n-=1),new Date(Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,n,e.millisecond))};mn.toIso8601=function(t,e){let n=mn.toGregorianDate(t,Zmt),i=n.year,o=n.month,a=n.day,s=n.hour,l=n.minute,r=n.second,d=n.millisecond;i===1e4&&o===1&&a===1&&s===0&&l===0&&r===0&&d===0&&(i=9999,o=12,a=31,s=24);let m;return!c(e)&&d!==0?(m=(d*.01).toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}.${m}Z`):!c(e)||e===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}Z`:(m=(d*.01).toFixed(e).replace(".","").slice(0,e),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${a.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}.${m}Z`)};mn.clone=function(t,e){if(c(t))return c(e)?(e.dayNumber=t.dayNumber,e.secondsOfDay=t.secondsOfDay,e):new mn(t.dayNumber,t.secondsOfDay,Di.TAI)};mn.compare=function(t,e){let n=t.dayNumber-e.dayNumber;return n!==0?n:t.secondsOfDay-e.secondsOfDay};mn.equals=function(t,e){return t===e||c(t)&&c(e)&&t.dayNumber===e.dayNumber&&t.secondsOfDay===e.secondsOfDay};mn.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(mn.secondsDifference(t,e))<=n};mn.totalDays=function(t){return t.dayNumber+t.secondsOfDay/xi.SECONDS_PER_DAY};mn.secondsDifference=function(t,e){return(t.dayNumber-e.dayNumber)*xi.SECONDS_PER_DAY+(t.secondsOfDay-e.secondsOfDay)};mn.daysDifference=function(t,e){let n=t.dayNumber-e.dayNumber,i=(t.secondsOfDay-e.secondsOfDay)/xi.SECONDS_PER_DAY;return n+i};mn.computeTaiMinusUtc=function(t){zg.julianDate=t;let e=mn.leapSeconds,n=Ja(e,zg,W6);return n<0&&(n=~n,--n,n<0&&(n=0)),e[n].offset};mn.addSeconds=function(t,e,n){return rf(t.dayNumber,t.secondsOfDay+e,n)};mn.addMinutes=function(t,e,n){let i=t.secondsOfDay+e*xi.SECONDS_PER_MINUTE;return rf(t.dayNumber,i,n)};mn.addHours=function(t,e,n){let i=t.secondsOfDay+e*xi.SECONDS_PER_HOUR;return rf(t.dayNumber,i,n)};mn.addDays=function(t,e,n){let i=t.dayNumber+e;return rf(i,t.secondsOfDay,n)};mn.lessThan=function(t,e){return mn.compare(t,e)<0};mn.lessThanOrEquals=function(t,e){return mn.compare(t,e)<=0};mn.greaterThan=function(t,e){return mn.compare(t,e)>0};mn.greaterThanOrEquals=function(t,e){return mn.compare(t,e)>=0};mn.prototype.clone=function(t){return mn.clone(this,t)};mn.prototype.equals=function(t){return mn.equals(this,t)};mn.prototype.equalsEpsilon=function(t,e){return mn.equalsEpsilon(this,t,e)};mn.prototype.toString=function(){return mn.toIso8601(this)};mn.leapSeconds=[new zo(new mn(2441317,43210,Di.TAI),10),new zo(new mn(2441499,43211,Di.TAI),11),new zo(new mn(2441683,43212,Di.TAI),12),new zo(new mn(2442048,43213,Di.TAI),13),new zo(new mn(2442413,43214,Di.TAI),14),new zo(new mn(2442778,43215,Di.TAI),15),new zo(new mn(2443144,43216,Di.TAI),16),new zo(new mn(2443509,43217,Di.TAI),17),new zo(new mn(2443874,43218,Di.TAI),18),new zo(new mn(2444239,43219,Di.TAI),19),new zo(new mn(2444786,43220,Di.TAI),20),new zo(new mn(2445151,43221,Di.TAI),21),new zo(new mn(2445516,43222,Di.TAI),22),new zo(new mn(2446247,43223,Di.TAI),23),new zo(new mn(2447161,43224,Di.TAI),24),new zo(new mn(2447892,43225,Di.TAI),25),new zo(new mn(2448257,43226,Di.TAI),26),new zo(new mn(2448804,43227,Di.TAI),27),new zo(new mn(2449169,43228,Di.TAI),28),new zo(new mn(2449534,43229,Di.TAI),29),new zo(new mn(2450083,43230,Di.TAI),30),new zo(new mn(2450630,43231,Di.TAI),31),new zo(new mn(2451179,43232,Di.TAI),32),new zo(new mn(2453736,43233,Di.TAI),33),new zo(new mn(2454832,43234,Di.TAI),34),new zo(new mn(2456109,43235,Di.TAI),35),new zo(new mn(2457204,43236,Di.TAI),36),new zo(new mn(2457754,43237,Di.TAI),37)];var rt=mn;var Bve=b(W(),1),kmt=b(Vh(),1);var Hwe=b(W(),1);function O_t(t){return(t.length===0||t[t.length-1]!=="/")&&(t=`${t}/`),t}var $N=O_t;var vwe=b(W(),1);function Gmt(t,e){if(t===null||typeof t!="object")return t;e=f(e,!1);let n=new t.constructor;for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];e&&(o=Gmt(o,e)),n[i]=o}return n}var Re=Gmt;var qwe=b(W(),1);function Amt(t,e,n){n=f(n,!1);let i={},o=c(t),a=c(e),s,l,r;if(o)for(s in t)t.hasOwnProperty(s)&&(l=t[s],a&&n&&typeof l=="object"&&e.hasOwnProperty(s)?(r=e[s],typeof r=="object"?i[s]=Amt(l,r,n):i[s]=l):i[s]=l);if(a)for(s in e)e.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(r=e[s],i[s]=r);return i}var ze=Amt;var tPe=b(W(),1);function H_t(){let t,e,n=new Promise(function(i,o){t=i,e=o});return{resolve:t,reject:e,promise:n}}var kd=H_t;var oPe=b(W(),1),Smt=b(Vh(),1);function U6(t,e){let n;return typeof document<"u"&&(n=document),U6._implementation(t,e,n)}U6._implementation=function(t,e,n){if(!c(e)){if(typeof n>"u")return t;e=f(n.baseURI,n.location.href)}let i=new Smt.default(t);return i.scheme()!==""?i.toString():i.absoluteTo(e).toString()};var IZ=U6;var sPe=b(W(),1),Tmt=b(Vh(),1);function w_t(t,e){let n="",i=t.lastIndexOf("/");return i!==-1&&(n=t.substring(0,i+1)),e&&(t=new Tmt.default(t),t.query().length!==0&&(n+=`?${t.query()}`),t.fragment().length!==0&&(n+=`#${t.fragment()}`)),n}var ty=w_t;var rPe=b(W(),1),gmt=b(Vh(),1);function P_t(t){let e=new gmt.default(t);e.normalize();let n=e.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var pG=P_t;var mPe=b(W(),1);var Emt={};function v_t(t,e,n){c(e)||(e=t.width),c(n)||(n=t.height);let i=Emt[e];c(i)||(i={},Emt[e]=i);let o=i[n];if(!c(o)){let a=document.createElement("canvas");a.width=e,a.height=n,o=a.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(t,0,0,e,n),o.getImageData(0,0,e,n).data}var vV=v_t;var pPe=b(W(),1);var K_t=/^blob:/i;function z_t(t){return K_t.test(t)}var VG=z_t;var ZPe=b(W(),1);var NZ;function j_t(t){c(NZ)||(NZ=document.createElement("a")),NZ.href=window.location.href;let e=NZ.host,n=NZ.protocol;return NZ.href=t,NZ.href=NZ.href,n!==NZ.protocol||e!==NZ.host}var uG=j_t;var bPe=b(W(),1);var q_t=/^data:/i;function $_t(t){return q_t.test(t)}var fb=$_t;var fPe=b(W(),1);function t9t(t){let e=document.createElement("script");return e.async=!0,e.src=t,new Promise((n,i)=>{window.crossOriginIsolated&&e.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];e.onload=function(){e.onload=void 0,o.removeChild(e),n()},e.onerror=function(a){i(a)},o.appendChild(e)})}var ZG=t9t;var UPe=b(W(),1);function e9t(t){let e="";for(let n in t)if(t.hasOwnProperty(n)){let i=t[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let a=0,s=i.length;a0){let s=o.substring(0,a),l=o.substring(a+2);e[s]=l}}return e}var ey=a9t;function Cmt(t,e,n){this.statusCode=t,this.response=e,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=ey(this.responseHeaders))}Cmt.prototype.toString=function(){let t="Request has failed.";return c(this.statusCode)&&(t+=` Status Code: ${this.statusCode}`),t};var yZ=Cmt;var ove=b(W(),1),WH=b(Vh(),1);var OPe=b(W(),1);function ny(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(ny.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});ny.prototype.addEventListener=function(t,e){this._listeners.push(t),this._scopes.push(e);let n=this;return function(){n.removeEventListener(t,e)}};ny.prototype.removeEventListener=function(t,e){let n=this._listeners,i=this._scopes,o=-1;for(let a=0;a0){for(o.sort(s9t),t=0;t=0;--e)this.heapify(e)};bG.prototype.insert=function(t){let e=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(oi&&(a=e[i],this._length=i),a};bG.prototype.pop=function(t){if(t=f(t,0),this._length===0)return;let e=this._array,n=e[t];return G6(e,t,--this._length),this.heapify(t),e[this._length]=void 0,n};var iy=bG;function l9t(t,e){return t.priority-e.priority}var ha={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},$g=20,Yd=new iy({comparator:l9t});Yd.maximumLength=$g;Yd.reserve($g);var BZ=[],Fb={},r9t=typeof document<"u"?new WH.default(document.location.href):new WH.default,fH=new It;function Zs(){}Zs.maximumRequests=50;Zs.maximumRequestsPerServer=18;Zs.requestsByServer={};Zs.throttleRequests=!0;Zs.debugShowStatistics=!1;Zs.requestCompletedEvent=fH;Object.defineProperties(Zs,{statistics:{get:function(){return ha}},priorityHeapLength:{get:function(){return $g},set:function(t){if(t<$g)for(;Yd.length>t;){let e=Yd.pop();WG(e)}$g=t,Yd.maximumLength=t,Yd.reserve(t)}}});function Imt(t){c(t.priorityFunction)&&(t.priority=t.priorityFunction())}Zs.serverHasOpenSlots=function(t,e){e=f(e,1);let n=f(Zs.requestsByServer[t],Zs.maximumRequestsPerServer);return Fb[t]+e<=n};Zs.heapHasOpenSlots=function(t){return Yd.length+t<=$g};function Nmt(t){return t.state===qi.UNISSUED&&(t.state=qi.ISSUED,t.deferred=kd()),t.deferred.promise}function d9t(t){return function(e){if(t.state===qi.CANCELLED)return;let n=t.deferred;--ha.numberOfActiveRequests,--Fb[t.serverKey],fH.raiseEvent(),t.state=qi.RECEIVED,t.deferred=void 0,n.resolve(e)}}function c9t(t){return function(e){t.state!==qi.CANCELLED&&(++ha.numberOfFailedRequests,--ha.numberOfActiveRequests,--Fb[t.serverKey],fH.raiseEvent(e),t.state=qi.FAILED,t.deferred.reject(e))}}function ymt(t){let e=Nmt(t);return t.state=qi.ACTIVE,BZ.push(t),++ha.numberOfActiveRequests,++ha.numberOfActiveRequestsEver,++Fb[t.serverKey],t.requestFunction().then(d9t(t)).catch(c9t(t)),e}function WG(t){let e=t.state===qi.ACTIVE;if(t.state=qi.CANCELLED,++ha.numberOfCancelledRequests,c(t.deferred)){let n=t.deferred;t.deferred=void 0,n.reject()}e&&(--ha.numberOfActiveRequests,--Fb[t.serverKey],++ha.numberOfCancelledActiveRequests),c(t.cancelFunction)&&t.cancelFunction()}Zs.update=function(){let t,e,n=0,i=BZ.length;for(t=0;t0&&(BZ[t-n]=e)}BZ.length-=n;let o=Yd.internalArray,a=Yd.length;for(t=0;t0;){if(e=Yd.pop(),e.cancelled){WG(e);continue}if(e.throttleByServer&&!Zs.serverHasOpenSlots(e.serverKey)){WG(e);continue}ymt(e),++l}m9t()};Zs.getServerKey=function(t){let e=new WH.default(t);e.scheme()===""&&(e=e.absoluteTo(r9t),e.normalize());let n=e.authority();/:/.test(n)||(n=`${n}:${e.scheme()==="https"?"443":"80"}`);let i=Fb[n];return c(i)||(Fb[n]=0),n};Zs.request=function(t){if(fb(t.url)||VG(t.url))return fH.raiseEvent(),t.state=qi.RECEIVED,t.requestFunction();if(++ha.numberOfAttemptedRequests,c(t.serverKey)||(t.serverKey=Zs.getServerKey(t.url)),Zs.throttleRequests&&t.throttleByServer&&!Zs.serverHasOpenSlots(t.serverKey))return;if(!Zs.throttleRequests||!t.throttle)return ymt(t);if(BZ.length>=Zs.maximumRequests)return;Imt(t);let e=Yd.insert(t);if(c(e)){if(e===t)return;WG(e)}return Nmt(t)};function m9t(){Zs.debugShowStatistics&&(ha.numberOfActiveRequests===0&&ha.lastNumberOfActiveRequests>0&&(ha.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${ha.numberOfAttemptedRequests}`),ha.numberOfAttemptedRequests=0),ha.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${ha.numberOfCancelledRequests}`),ha.numberOfCancelledRequests=0),ha.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${ha.numberOfCancelledActiveRequests}`),ha.numberOfCancelledActiveRequests=0),ha.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${ha.numberOfFailedRequests}`),ha.numberOfFailedRequests=0)),ha.lastNumberOfActiveRequests=ha.numberOfActiveRequests)}Zs.clearForSpecs=function(){for(;Yd.length>0;){let e=Yd.pop();WG(e)}let t=BZ.length;for(let e=0;e0}},credits:{get:function(){return this._credits}}});cn.prototype.toString=function(){return this.getUrlComponent(!0,!0)};cn.prototype.parseUrl=function(t,e,n,i){let o=new kmt.default(t),a=p9t(o.query());this._queryParameters=e?UH(a,this.queryParameters,n):a,o.search(""),o.fragment(""),c(i)&&o.scheme()===""&&(o=o.absoluteTo(IZ(i))),this._url=o.toString()};function p9t(t){return t.length===0?{}:t.indexOf("=")===-1?{[t]:void 0}:Sc(t)}function UH(t,e,n){if(!n)return ze(t,e);let i=Re(t,!0);for(let o in e)if(e.hasOwnProperty(o)){let a=i[o],s=e[o];c(a)?(Array.isArray(a)||(a=i[o]=[a]),i[o]=a.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}cn.prototype.getUrlComponent=function(t,e){if(this.isDataUri)return this._url;let n=this._url;t&&(n=`${n}${V9t(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,a){let s=i[a];return c(s)?encodeURIComponent(s):o})),e&&c(this.proxy)&&(n=this.proxy.getURL(n)),n};function V9t(t){let e=Object.keys(t);return e.length===0?"":e.length===1&&!c(t[e[0]])?`?${e[0]}`:`?${RG(t)}`}cn.prototype.setQueryParameters=function(t,e){e?this._queryParameters=UH(this._queryParameters,t,!1):this._queryParameters=UH(t,this._queryParameters,!1)};cn.prototype.appendQueryParameters=function(t){this._queryParameters=UH(t,this._queryParameters,!0)};cn.prototype.setTemplateValues=function(t,e){e?this._templateValues=ze(this._templateValues,t):this._templateValues=ze(t,this._templateValues)};cn.prototype.getDerivedResource=function(t){let e=this.clone();if(e._retryCount=0,c(t.url)){let n=f(t.preserveQueryParameters,!1);e.parseUrl(t.url,!0,n,this._url)}return c(t.queryParameters)&&(e._queryParameters=ze(t.queryParameters,e.queryParameters)),c(t.templateValues)&&(e._templateValues=ze(t.templateValues,e.templateValues)),c(t.headers)&&(e.headers=ze(t.headers,e.headers)),c(t.proxy)&&(e.proxy=t.proxy),c(t.request)&&(e.request=t.request),c(t.retryCallback)&&(e.retryCallback=t.retryCallback),c(t.retryAttempts)&&(e.retryAttempts=t.retryAttempts),e};cn.prototype.retryOnError=function(t){let e=this.retryCallback;if(typeof e!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(e(this,t)).then(function(i){return++n._retryCount,i})};cn.prototype.clone=function(t){return c(t)?(t._url=this._url,t._queryParameters=Re(this._queryParameters),t._templateValues=Re(this._templateValues),t.headers=Re(this.headers),t.proxy=this.proxy,t.retryCallback=this.retryCallback,t.retryAttempts=this.retryAttempts,t._retryCount=0,t.request=this.request.clone(),t):new cn({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:c(this.credits)?this.credits.slice():void 0})};cn.prototype.getBaseUri=function(t){return ty(this.getUrlComponent(t),t)};cn.prototype.appendForwardSlash=function(){this._url=$N(this._url)};cn.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};cn.fetchArrayBuffer=function(t){return new cn(t).fetchArrayBuffer()};cn.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};cn.fetchBlob=function(t){return new cn(t).fetchBlob()};cn.prototype.fetchImage=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.preferImageBitmap,!1),n=f(t.preferBlob,!1),i=f(t.flipY,!1),o=f(t.skipColorSpaceConversion,!1);if(S6(this.request),!Ymt||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return A6({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:e});let a=this.fetchBlob();if(!c(a))return;let s,l,r,d;return cn.supportsImageBitmapOptions().then(function(m){return s=m,l=s&&e,a}).then(function(m){if(!c(m))return;if(d=m,l)return cn.createImageBitmapFromBlob(m,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(m);return r=new cn({url:h}),A6({resource:r,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(m){if(c(m))return m.blob=d,l||window.URL.revokeObjectURL(r.url),m}).catch(function(m){return c(r)&&window.URL.revokeObjectURL(r.url),m.blob=d,Promise.reject(m)})};function A6(t){let e=t.resource,n=t.flipY,i=t.skipColorSpaceConversion,o=t.preferImageBitmap,a=e.request;a.url=e.url,a.requestFunction=function(){let l=!1;!e.isDataUri&&!e.isBlobUri&&(l=e.isCrossOriginUrl);let r=kd();return cn._Implementations.createImage(a,l,r,n,i,o),r.promise};let s=xd.request(a);if(c(s))return s.catch(function(l){return a.state!==qi.FAILED?Promise.reject(l):e.retryOnError(l).then(function(r){return r?(a.state=qi.UNISSUED,a.deferred=void 0,A6({resource:e,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(l)})})}cn.fetchImage=function(t){return new cn(t).fetchImage({flipY:t.flipY,skipColorSpaceConversion:t.skipColorSpaceConversion,preferBlob:t.preferBlob,preferImageBitmap:t.preferImageBitmap})};cn.prototype.fetchText=function(){return this.fetch({responseType:"text"})};cn.fetchText=function(t){return new cn(t).fetchText()};cn.prototype.fetchJson=function(){let t=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(c(t))return t.then(function(e){if(c(e))return JSON.parse(e)})};cn.fetchJson=function(t){return new cn(t).fetchJson()};cn.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};cn.fetchXML=function(t){return new cn(t).fetchXML()};cn.prototype.fetchJsonp=function(t){t=f(t,"callback"),S6(this.request);let e;do e=`loadJsonp${k.nextRandomNumber().toString().substring(2,8)}`;while(c(window[e]));return xmt(this,t,e)};function xmt(t,e,n){let i={};i[e]=n,t.setQueryParameters(i);let o=t.request,a=t.url;o.url=a,o.requestFunction=function(){let l=kd();return window[n]=function(r){l.resolve(r);try{delete window[n]}catch{window[n]=void 0}},cn._Implementations.loadAndExecuteScript(a,n,l),l.promise};let s=xd.request(o);if(c(s))return s.catch(function(l){return o.state!==qi.FAILED?Promise.reject(l):t.retryOnError(l).then(function(r){return r?(o.state=qi.UNISSUED,o.deferred=void 0,xmt(t,e,n)):Promise.reject(l)})})}cn.fetchJsonp=function(t){return new cn(t).fetchJsonp(t.callbackParameterName)};cn.prototype._makeRequest=function(t){let e=this;S6(e.request);let n=e.request,i=e.url;n.url=i,n.requestFunction=function(){let a=t.responseType,s=ze(t.headers,e.headers),l=t.overrideMimeType,r=t.method,d=t.data,m=kd(),h=cn._Implementations.loadWithXhr(i,a,r,d,s,m,l);return c(h)&&c(h.abort)&&(n.cancelFunction=function(){h.abort()}),m.promise};let o=xd.request(n);if(c(o))return o.then(function(a){return n.cancelFunction=void 0,a}).catch(function(a){return n.cancelFunction=void 0,n.state!==qi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(s){return s?(n.state=qi.UNISSUED,n.deferred=void 0,e.fetch(t)):Promise.reject(a)})})};function S6(t){if(t.state===qi.ISSUED||t.state===qi.ACTIVE)throw new Tt("The Resource is already being fetched.");t.state=qi.UNISSUED,t.deferred=void 0}var u9t=/^data:(.*?)(;base64)?,(.*)$/;function FH(t,e){let n=decodeURIComponent(e);return t?atob(n):n}function Qmt(t,e){let n=FH(t,e),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let a=0;a{if(!l.ok){let r={};l.headers.forEach((d,m)=>{r[m]=d}),a.reject(new yZ(l.status,l,r));return}switch(e){case"text":a.resolve(l.text());break;case"json":a.resolve(l.json());break;default:a.resolve(new Uint8Array(await l.arrayBuffer()).buffer);break}}).catch(()=>{a.reject(new yZ)})}var b9t=typeof XMLHttpRequest>"u";cn._Implementations.loadWithXhr=function(t,e,n,i,o,a,s){let l=u9t.exec(t);if(l!==null){a.resolve(Z9t(l,e));return}if(b9t){R9t(t,e,n,i,o,a,s);return}let r=new XMLHttpRequest;if(eE.contains(t)&&(r.withCredentials=!0),r.open(n,t,!0),c(s)&&c(r.overrideMimeType)&&r.overrideMimeType(s),c(o))for(let m in o)o.hasOwnProperty(m)&&r.setRequestHeader(m,o[m]);c(e)&&(r.responseType=e);let d=!1;return typeof t=="string"&&(d=t.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),r.onload=function(){if((r.status<200||r.status>=300)&&!(d&&r.status===0)){a.reject(new yZ(r.status,r.response,r.getAllResponseHeaders()));return}let m=r.response,h=r.responseType;if(n==="HEAD"||n==="OPTIONS"){let R=r.getAllResponseHeaders().trim().split(/[\r\n]+/),V={};R.forEach(function(F){let U=F.split(": "),G=U.shift();V[G]=U.join(": ")}),a.resolve(V);return}if(r.status===204)a.resolve(void 0);else if(c(m)&&(!c(e)||h===e))a.resolve(m);else if(e==="json"&&typeof m=="string")try{a.resolve(JSON.parse(m))}catch(u){a.reject(u)}else(h===""||h==="document")&&c(r.responseXML)&&r.responseXML.hasChildNodes()?a.resolve(r.responseXML):(h===""||h==="text")&&c(r.responseText)?a.resolve(r.responseText):a.reject(new Tt("Invalid XMLHttpRequest response type."))},r.onerror=function(m){a.reject(new yZ)},r.send(i),r};cn._Implementations.loadAndExecuteScript=function(t,e,n){return ZG(t,e).catch(function(i){n.reject(i)})};cn._DefaultImplementations={};cn._DefaultImplementations.createImage=cn._Implementations.createImage;cn._DefaultImplementations.loadWithXhr=cn._Implementations.loadWithXhr;cn._DefaultImplementations.loadAndExecuteScript=cn._Implementations.loadAndExecuteScript;cn.DEFAULT=Object.freeze(new cn({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var te=cn;function sy(t){t=f(t,f.EMPTY_OBJECT),this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=f(t.addNewLeapSeconds,!0),c(t.data)?Xmt(this,t.data):Xmt(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}sy.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=te.createIfNeeded(t),i;try{i=await n.fetchJson()}catch{throw new Tt(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new sy({addNewLeapSeconds:e.addNewLeapSeconds,data:i})};sy.NONE=Object.freeze({compute:function(t,e){return c(e)?(e.xPoleWander=0,e.yPoleWander=0,e.xPoleOffset=0,e.yPoleOffset=0,e.ut1MinusUtc=0):e=new lf(0,0,0,0,0),e}});sy.prototype.compute=function(t,e){if(!c(this._samples))return;if(c(e)||(e=new lf(0,0,0,0,0)),this._samples.length===0)return e.xPoleWander=0,e.yPoleWander=0,e.xPoleOffset=0,e.yPoleOffset=0,e.ut1MinusUtc=0,e;let n=this._dates,i=this._lastIndex,o=0,a=0;if(c(i)){let l=n[i],r=n[i+1],d=rt.lessThanOrEquals(l,t),m=!c(r),h=m||rt.greaterThanOrEquals(r,t);if(d&&h)return o=i,!m&&r.equals(t)&&++o,a=o+1,Lmt(this,n,this._samples,t,o,a,e),e}let s=Ja(n,t,rt.compare,this._dateColumn);return s>=0?(se.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let r=e[o],d=e[a];if(r.equals(d)||i.equals(r))return Jmt(t,n,o,l,s),s;if(i.equals(d))return Jmt(t,n,a,l,s),s;let m=rt.secondsDifference(i,r)/rt.secondsDifference(d,r),h=o*l,u=a*l,R=n[h+t._ut1MinusUtcSecondsColumn],V=n[u+t._ut1MinusUtcSecondsColumn],F=V-R;if(F>.5||F<-.5){let U=n[h+t._taiMinusUtcSecondsColumn],G=n[u+t._taiMinusUtcSecondsColumn];U!==G&&(d.equals(i)?R=V:V-=G-U)}return s.xPoleWander=ay(m,n[h+t._xPoleWanderRadiansColumn],n[u+t._xPoleWanderRadiansColumn]),s.yPoleWander=ay(m,n[h+t._yPoleWanderRadiansColumn],n[u+t._yPoleWanderRadiansColumn]),s.xPoleOffset=ay(m,n[h+t._xCelestialPoleOffsetRadiansColumn],n[u+t._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=ay(m,n[h+t._yCelestialPoleOffsetRadiansColumn],n[u+t._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=ay(m,R,V),s}var ly=sy;var r3e=b(W(),1);var $ve=b(W(),1);function Qe(t,e,n,i){this.x=f(t,0),this.y=f(e,0),this.z=f(n,0),this.w=f(i,0)}var ry=new p;Qe.fromAxisAngle=function(t,e,n){let i=e/2,o=Math.sin(i);ry=p.normalize(t,ry);let a=ry.x*o,s=ry.y*o,l=ry.z*o,r=Math.cos(i);return c(n)?(n.x=a,n.y=s,n.z=l,n.w=r,n):new Qe(a,s,l,r)};var f9t=[1,2,0],F9t=new Array(3);Qe.fromRotationMatrix=function(t,e){let n,i,o,a,s,l=t[ot.COLUMN0ROW0],r=t[ot.COLUMN1ROW1],d=t[ot.COLUMN2ROW2],m=l+r+d;if(m>0)n=Math.sqrt(m+1),s=.5*n,n=.5/n,i=(t[ot.COLUMN1ROW2]-t[ot.COLUMN2ROW1])*n,o=(t[ot.COLUMN2ROW0]-t[ot.COLUMN0ROW2])*n,a=(t[ot.COLUMN0ROW1]-t[ot.COLUMN1ROW0])*n;else{let h=f9t,u=0;r>l&&(u=1),d>l&&d>r&&(u=2);let R=h[u],V=h[R];n=Math.sqrt(t[ot.getElementIndex(u,u)]-t[ot.getElementIndex(R,R)]-t[ot.getElementIndex(V,V)]+1);let F=F9t;F[u]=.5*n,n=.5/n,s=(t[ot.getElementIndex(V,R)]-t[ot.getElementIndex(R,V)])*n,F[R]=(t[ot.getElementIndex(R,u)]+t[ot.getElementIndex(u,R)])*n,F[V]=(t[ot.getElementIndex(V,u)]+t[ot.getElementIndex(u,V)])*n,i=-F[0],o=-F[1],a=-F[2]}return c(e)?(e.x=i,e.y=o,e.z=a,e.w=s,e):new Qe(i,o,a,s)};var Mmt=new Qe,_mt=new Qe,T6=new Qe,Dmt=new Qe;Qe.fromHeadingPitchRoll=function(t,e){return Dmt=Qe.fromAxisAngle(p.UNIT_X,t.roll,Mmt),T6=Qe.fromAxisAngle(p.UNIT_Y,-t.pitch,e),e=Qe.multiply(T6,Dmt,T6),_mt=Qe.fromAxisAngle(p.UNIT_Z,-t.heading,Mmt),Qe.multiply(_mt,e,e)};var GH=new p,g6=new p,KV=new Qe,Omt=new Qe,AH=new Qe;Qe.packedLength=4;Qe.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n++]=t.y,e[n++]=t.z,e[n]=t.w,e};Qe.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Qe),n.x=t[e],n.y=t[e+1],n.z=t[e+2],n.w=t[e+3],n};Qe.packedInterpolationLength=3;Qe.convertPackedArrayForInterpolation=function(t,e,n,i){Qe.unpack(t,n*4,AH),Qe.conjugate(AH,AH);for(let o=0,a=n-e+1;o=0?a=1:(a=-1,o=-o);let s=o-1,l=1-n,r=n*n,d=l*l;for(let R=7;R>=0;--R)Ub[R]=(SH[R]*r-TH[R])*s,Gb[R]=(SH[R]*d-TH[R])*s;let m=a*n*(1+Ub[0]*(1+Ub[1]*(1+Ub[2]*(1+Ub[3]*(1+Ub[4]*(1+Ub[5]*(1+Ub[6]*(1+Ub[7])))))))),h=l*(1+Gb[0]*(1+Gb[1]*(1+Gb[2]*(1+Gb[3]*(1+Gb[4]*(1+Gb[5]*(1+Gb[6]*(1+Gb[7])))))))),u=Qe.multiplyByScalar(t,h,A9t);return Qe.multiplyByScalar(e,m,i),Qe.add(u,i,i)};Qe.fastSquad=function(t,e,n,i,o,a){let s=Qe.fastSlerp(t,e,o,dy),l=Qe.fastSlerp(n,i,o,iE);return Qe.fastSlerp(s,l,2*o*(1-o),a)};Qe.equals=function(t,e){return t===e||c(t)&&c(e)&&t.x===e.x&&t.y===e.y&&t.z===e.z&&t.w===e.w};Qe.equalsEpsilon=function(t,e,n){return n=f(n,0),t===e||c(t)&&c(e)&&Math.abs(t.x-e.x)<=n&&Math.abs(t.y-e.y)<=n&&Math.abs(t.z-e.z)<=n&&Math.abs(t.w-e.w)<=n};Qe.ZERO=Object.freeze(new Qe(0,0,0,0));Qe.IDENTITY=Object.freeze(new Qe(0,0,0,1));Qe.prototype.clone=function(t){return Qe.clone(this,t)};Qe.prototype.equals=function(t){return Qe.equals(this,t)};Qe.prototype.equalsEpsilon=function(t,e){return Qe.equalsEpsilon(this,t,e)};Qe.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var wt=Qe;function Xd(t,e,n){this.heading=f(t,0),this.pitch=f(e,0),this.roll=f(n,0)}Xd.fromQuaternion=function(t,e,n){c(e)||(e=new Xd);let i,o;if(c(n)){if(typeof n=="function")i=n();else if(n instanceof L)i=n;else throw new Ut("referenceFrame must be a Matrix4 or a function returning a Matrix4");let m=L.inverse(i,new L),h=L.getRotation(m,new ot),u=wt.fromRotationMatrix(h,new wt);o=wt.multiply(u,t,new wt)}else o=t;let a=2*(o.w*o.y-o.z*o.x),s=1-2*(o.x*o.x+o.y*o.y),l=2*(o.w*o.x+o.y*o.z),r=1-2*(o.y*o.y+o.z*o.z),d=2*(o.w*o.z+o.x*o.y);return e.heading=-Math.atan2(d,r),e.roll=Math.atan2(l,s),e.pitch=-k.asinClamped(a),e};Xd.fromDegrees=function(t,e,n,i){return c(i)||(i=new Xd),i.heading=t*k.RADIANS_PER_DEGREE,i.pitch=e*k.RADIANS_PER_DEGREE,i.roll=n*k.RADIANS_PER_DEGREE,i};Xd.clone=function(t,e){if(c(t))return c(e)?(e.heading=t.heading,e.pitch=t.pitch,e.roll=t.roll,e):new Xd(t.heading,t.pitch,t.roll)};Xd.equals=function(t,e){return t===e||c(t)&&c(e)&&t.heading===e.heading&&t.pitch===e.pitch&&t.roll===e.roll};Xd.equalsEpsilon=function(t,e,n,i){return t===e||c(t)&&c(e)&&k.equalsEpsilon(t.heading,e.heading,n,i)&&k.equalsEpsilon(t.pitch,e.pitch,n,i)&&k.equalsEpsilon(t.roll,e.roll,n,i)};Xd.prototype.clone=function(t){return Xd.clone(this,t)};Xd.prototype.equals=function(t){return Xd.equals(this,t)};Xd.prototype.equalsEpsilon=function(t,e,n){return Xd.equalsEpsilon(this,t,e,n)};Xd.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var Jr=Xd;var C3e=b(W(),1);var Z3e=b(W(),1);var c3e=b(W(),1),N6={},gH=[],Pmt={},EH={};var y6={};var vmt={};var Kmt=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function S9t(){let t=document.getElementsByTagName("script");for(let e=0,n=t.length;e"u"?t:(c(CH)||(CH=document.createElement("a")),CH.href=t,CH.href)}var fG;function jmt(){if(c(fG))return fG;let t;return typeof CESIUM_BASE_URL<"u"?t=CESIUM_BASE_URL:c(vmt?.url)?t=IZ(".",vmt.url):typeof define=="object"&&c(define.amd)&&!define.amd.toUrlUndefined&&c(Og.toUrl)?t=IZ("..",FG("Core/buildModuleUrl.js")):t=S9t(),fG=new te({url:zmt(t)}),fG.appendForwardSlash(),fG}function T9t(t){return zmt(Og.toUrl(`../${t}`))}function qmt(t){return jmt().getDerivedResource({url:t}).url}var IH;function FG(t){return N6[t]?N6[t]:(c(IH)||(typeof define=="object"&&c(define.amd)&&!define.amd.toUrlUndefined&&c(Og.toUrl)?IH=T9t:IH=qmt),IH(t))}FG._cesiumScriptRegex=Kmt;FG._buildModuleUrlFromBaseUrl=qmt;FG._clearBaseResource=function(){fG=void 0};FG.setBaseUrl=function(t){fG=te.DEFAULT.getDerivedResource({url:t})};FG.getCesiumBaseUrl=jmt;var Dn=FG;var W3e=b(W(),1);function g9t(t,e,n){this.x=t,this.y=e,this.s=n}var UG=g9t;function k6(t){t=f(t,f.EMPTY_OBJECT),this._xysFileUrlTemplate=te.createIfNeeded(t.xysFileUrlTemplate),this._interpolationOrder=f(t.interpolationOrder,9),this._sampleZeroJulianEphemerisDate=f(t.sampleZeroJulianEphemerisDate,24423965e-1),this._sampleZeroDateTT=new rt(this._sampleZeroJulianEphemerisDate,0,Di.TAI),this._stepSizeDays=f(t.stepSizeDays,1),this._samplesPerXysFile=f(t.samplesPerXysFile,1e3),this._totalSamples=f(t.totalSamples,27426),this._samples=Pmt||new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let e=this._interpolationOrder,n=this._denominators=new Array(e+1),i=this._xTable=new Array(e+1),o=Math.pow(this._stepSizeDays,e);for(let a=0;a<=e;++a){n[a]=o,i[a]=a*this._stepSizeDays;for(let s=0;s<=e;++s)s!==a&&(n[a]*=a-s);n[a]=1/n[a]}this._work=new Array(e+1),this._coef=new Array(e+1)}var E9t=new rt(0,0,Di.TAI);function B6(t,e,n){let i=E9t;return i.dayNumber=e,i.secondsOfDay=n,rt.daysDifference(i,t._sampleZeroDateTT)}k6.prototype.preload=function(t,e,n,i){let o=B6(this,t,e),a=B6(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let l=a/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;l>=this._totalSamples&&(l=this._totalSamples-1);let r=s/this._samplesPerXysFile|0,d=l/this._samplesPerXysFile|0,m=[];for(let h=r;h<=d;++h)m.push(Q6(this,h));return Promise.all(m)};k6.prototype.computeXysRadians=function(t,e,n){let i=B6(this,t,e);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let a=this._interpolationOrder,s=o-(a/2|0);s<0&&(s=0);let l=s+a;l>=this._totalSamples&&(l=this._totalSamples-1,s=l-a,s<0&&(s=0));let r=!1,d=this._samples;if(c(d[s*3])||(Q6(this,s/this._samplesPerXysFile|0),r=!0),c(d[l*3])||(Q6(this,l/this._samplesPerXysFile|0),r=!0),r)return;c(n)?(n.x=0,n.y=0,n.s=0):n=new UG(0,0,0);let m=i-s*this._stepSizeDays,h=this._work,u=this._denominators,R=this._coef,V=this._xTable,F,U;for(F=0;F<=a;++F)h[F]=m-V[F];for(F=0;F<=a;++F){for(R[F]=1,U=0;U<=a;++U)U!==F&&(R[F]*=h[U]);R[F]*=u[F];let G=(s+F)*3;n.x+=R[F]*d[G++],n.y+=R[F]*d[G++],n.s+=R[F]*d[G]}return n};function Q6(t,e){if(t._chunkDownloadsInProgress[e])return t._chunkDownloadsInProgress[e];let n,i=t._xysFileUrlTemplate;c(i)?n=i.getDerivedResource({templateValues:{0:e}}):n=new te({url:Dn(`Assets/IAU2006_XYS/IAU2006_XYS_${e}.json`)});let o=n.fetchJson().then(function(a){t._chunkDownloadsInProgress[e]=!1;let s=t._samples,l=a.samples,r=e*t._samplesPerXysFile*3;for(let d=0,m=l.length;d=43200?o=(a+.5)/xi.DAYS_PER_JULIAN_CENTURY:o=(a-.5)/xi.DAYS_PER_JULIAN_CENTURY;let l=(J9t+o*(L9t+o*(M9t+o*_9t)))*H9t%k.TWO_PI,r=O9t+D9t*(n-24515455e-1),d=(i+xi.SECONDS_PER_DAY*.5)%xi.SECONDS_PER_DAY,m=l+r*d,h=Math.cos(m),u=Math.sin(m);return c(e)?(e[0]=h,e[1]=-u,e[2]=0,e[3]=u,e[4]=h,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new ot(h,u,0,-u,h,0,0,0,1)};Ci.iau2006XysData=new cy;Ci.earthOrientationParameters=ly.NONE;var M6=32.184,w9t=2451545;Ci.preloadIcrfFixed=function(t){let e=t.start.dayNumber,n=t.start.secondsOfDay+M6,i=t.stop.dayNumber,o=t.stop.secondsOfDay+M6;return Ci.iau2006XysData.preload(e,n,i,o)};Ci.computeIcrfToFixedMatrix=function(t,e){c(e)||(e=new ot);let n=Ci.computeFixedToIcrfMatrix(t,e);if(c(n))return ot.transpose(n,e)};var P9t=new UG(0,0,0),v9t=new lf(0,0,0,0,0,0),X6=new ot,J6=new ot;Ci.computeFixedToIcrfMatrix=function(t,e){c(e)||(e=new ot);let n=Ci.earthOrientationParameters.compute(t,v9t);if(!c(n))return;let i=t.dayNumber,o=t.secondsOfDay+M6,a=Ci.iau2006XysData.computeXysRadians(i,o,P9t);if(!c(a))return;let s=a.x+n.xPoleOffset,l=a.y+n.yPoleOffset,r=1/(1+Math.sqrt(1-s*s-l*l)),d=X6;d[0]=1-r*s*s,d[3]=-r*s*l,d[6]=s,d[1]=-r*s*l,d[4]=1-r*l*l,d[7]=l,d[2]=-s,d[5]=-l,d[8]=1-r*(s*s+l*l);let m=ot.fromRotationZ(-a.s,J6),h=ot.multiply(d,m,X6),u=t.dayNumber,R=t.secondsOfDay-rt.computeTaiMinusUtc(t)+n.ut1MinusUtc,V=u-2451545,F=R/xi.SECONDS_PER_DAY,U=.779057273264+F+.00273781191135448*(V+F);U=U%1*k.TWO_PI;let G=ot.fromRotationZ(U,J6),A=ot.multiply(h,G,X6),S=Math.cos(n.xPoleWander),g=Math.cos(n.yPoleWander),C=Math.sin(n.xPoleWander),y=Math.sin(n.yPoleWander),Y=i-w9t+o/xi.SECONDS_PER_DAY;Y/=36525;let Q=-47e-6*Y*k.RADIANS_PER_DEGREE/3600,J=Math.cos(Q),M=Math.sin(Q),Z=J6;return Z[0]=S*J,Z[1]=S*M,Z[2]=C,Z[3]=-g*M+y*C*J,Z[4]=g*J+y*C*M,Z[5]=-y*S,Z[6]=-y*M-g*C*J,Z[7]=y*J-g*C*M,Z[8]=g*S,ot.multiply(A,Z,e)};var K9t=new bt;Ci.pointToWindowCoordinates=function(t,e,n,i){return i=Ci.pointToGLWindowCoordinates(t,e,n,i),i.y=2*e[5]-i.y,i};Ci.pointToGLWindowCoordinates=function(t,e,n,i){c(i)||(i=new K);let o=K9t;return L.multiplyByVector(t,bt.fromElements(n.x,n.y,n.z,1,o),o),bt.multiplyByScalar(o,1/o.w,o),L.multiplyByVector(e,o,o),K.fromCartesian4(o,i)};var z9t=new p,j9t=new p,q9t=new p;Ci.rotationMatrixFromPositionVelocity=function(t,e,n,i){let o=f(n,mt.WGS84).geodeticSurfaceNormal(t,z9t),a=p.cross(e,o,j9t);p.equalsEpsilon(a,p.ZERO,k.EPSILON6)&&(a=p.clone(p.UNIT_X,a));let s=p.cross(a,e,q9t);return p.normalize(s,s),p.cross(e,s,a),p.negate(a,a),p.normalize(a,a),c(i)||(i=new ot),i[0]=e.x,i[1]=e.y,i[2]=e.z,i[3]=a.x,i[4]=a.y,i[5]=a.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var nht=new L(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),iht=new gt,_6=new p,$9t=new p,t5t=new ot,D6=new L,oht=new L;Ci.basisTo2D=function(t,e,n){let i=L.getTranslation(e,$9t),o=t.ellipsoid,a;if(p.equals(i,p.ZERO))a=p.clone(p.ZERO,_6);else{let m=o.cartesianToCartographic(i,iht);a=t.project(m,_6),p.fromElements(a.z,a.x,a.y,a)}let s=Ci.eastNorthUpToFixedFrame(i,o,D6),l=L.inverseTransformation(s,oht),r=L.getMatrix3(e,t5t),d=L.multiplyByMatrix3(l,r,n);return L.multiply(nht,d,n),L.setTranslation(n,a,n),n};Ci.wgs84To2DModelMatrix=function(t,e,n){let i=t.ellipsoid,o=Ci.eastNorthUpToFixedFrame(e,i,D6),a=L.inverseTransformation(o,oht),s=i.cartesianToCartographic(e,iht),l=t.project(s,_6);p.fromElements(l.z,l.x,l.y,l);let r=L.fromTranslation(l,D6);return L.multiply(nht,a,n),L.multiply(r,n,n),n};var e5t=new p,n5t=new p,i5t=new p,o5t=new p,a5t=new p,s5t=new p,l5t=new p,r5t=new p,L6=new rt,d5t=new ot,c5t=new ot,m5t=new ot;Ci.vvlhToFixed=function(t,e,n){let i=t.getValue(e,e5t);rt.addSeconds(e,.01,L6);let o=t.getValue(L6,n5t),a=mt.WGS84,s=a.maximumRadius+1e5;if(c(n)||(n=new L),p.magnitude(i)<=s){let u=p.subtract(o,i,new p),R;if(p.magnitude(u)===0){let U=Ci.eastNorthUpToFixedFrame(i,a);R=new p(U[0],U[1],U[2])}else R=p.normalize(u,new p);let V=a.geodeticSurfaceNormal(i,new p),F=p.cross(V,R,new p);return n[0]=R.x,n[1]=R.y,n[2]=R.z,n[3]=0,n[4]=F.x,n[5]=F.y,n[6]=F.z,n[7]=0,n[8]=V.x,n[9]=V.y,n[10]=V.z,n[11]=0,n[12]=i.x,n[13]=i.y,n[14]=i.z,n[15]=1,n}let l=Ci.computeFixedToIcrfMatrix(e,d5t);if(!l)return new L;let r=Ci.computeFixedToIcrfMatrix(L6,c5t),d=ot.transpose(l,m5t),m=ot.multiplyByVector(l,i,i5t),h=ot.multiplyByVector(r,o,o5t);if(!p.equalsEpsilon(m,h,k.EPSILON14)){let u=p.subtract(h,m,a5t),R=s5t;try{p.negate(p.normalize(m,R),R)}catch{console.log(m,R)}let V=p.cross(u,R,l5t);p.negate(V,V);let F=p.cross(V,R,r5t);try{ot.multiplyByVector(d,F,F),ot.multiplyByVector(d,V,V),ot.multiplyByVector(d,R,R),p.normalize(F,F),p.normalize(V,V),p.normalize(R,R),n[0]=F.x,n[1]=F.y,n[2]=F.z,n[3]=0,n[4]=V.x,n[5]=V.y,n[6]=V.z,n[7]=0,n[8]=R.x,n[9]=R.y,n[10]=R.z,n[11]=0,n[12]=i.x,n[13]=i.y,n[14]=i.z,n[15]=1}catch(U){return console.log(U,F,V,R,u,i,o,t),new Array(16).fill(0)}}return L.multiply(n,new L(1,0,0,0,0,-1,0,0,0,0,-1,0,0,0,0,1),n),n};Ci.reverseHeadingQuaternion=function(t){if(!c(t))throw new Ut("orientation is required");let e=new Jr;Jr.fromQuaternion(t,e),e.heading=-e.heading,e.roll=-e.roll;let n=new wt;return wt.fromHeadingPitchRoll(e,n),n};var pf=new L(0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1);Ci.getPositionInVVLH=function(t,e,n,i,o=ri.FIXED){let a=e.position.getValueInReferenceFrame(n,o.FIXED),s=t.position.getValueInReferenceFrame(i,o.FIXED),l;try{l=L.inverse(Ci.vvlhToFixed(t.position,n),new L)}catch{l=new L}let r=L.multiplyByPoint(l,a,new p),d=L.getRotation(Ci.vvlhToFixed(t.position,i),new ot),m=ot.multiplyByVector(d,r,new p),h=p.add(s,m,new p);if(o===ri.INERTIAL){let u=Ci.computeFixedToIcrfMatrix(i);u&&(h=ot.multiplyByVector(u,h,new p))}return h};var eht=Ci.localFrameToFixedFrameGenerator("north","west");Ci.getTransformToFixedFrame=function(t,e,n){let i,o={[ri.FIXED]:()=>L.IDENTITY,[ri.INERTIAL]:()=>{if(!c(e))throw new Ut("Conversion from INERTIAL to FIXED requires a time.");return Ci.computeIcrfToFixedMatrix(e)},[ri.TEME]:()=>{throw new Ut("Conversion from TEME to FIXED is not implemented.")},[ri.VVLH]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from VVLH to FIXED requires both time and position.");let a=Ci.vvlhToFixed(n,e),s=L.fromScale(new p(1,-1,-1));return L.multiply(a,s,new L)},[ri.NED]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from NED to FIXED requires both time and position.");let a=eht(n.getValue(e)),s=L.fromScale(new p(1,-1,-1));return L.multiply(a,s,new L)},[ri.NEU]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from NEU to FIXED requires both time and position.");let a=eht(n.getValue(e)),s=L.fromScale(new p(1,-1,1));return L.multiply(a,s,new L)},[ri.RIC]:()=>{if(!c(e)||!c(n))throw new Ut("Conversion from RIC to FIXED requires both time and position.");let a=Ci.vvlhToFixed(n,e),s=L.fromArray([0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1]);return L.multiply(a,s,new L)}};return o.hasOwnProperty(t)?i=o[t]:i=Ci.eastNorthUpToFixedFrame,i};var Pe=Ci;function fi(t,e,n,i){this.west=f(t,0),this.south=f(e,0),this.east=f(n,0),this.north=f(i,0)}Object.defineProperties(fi.prototype,{width:{get:function(){return fi.computeWidth(this)}},height:{get:function(){return fi.computeHeight(this)}}});fi.packedLength=4;fi.pack=function(t,e,n){return n=f(n,0),e[n++]=t.west,e[n++]=t.south,e[n++]=t.east,e[n]=t.north,e};fi.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new fi),n.west=t[e++],n.south=t[e++],n.east=t[e++],n.north=t[e],n};fi.computeWidth=function(t){let e=t.east,n=t.west;return e=0?m.longitude:m.longitude+k.TWO_PI;o=Math.min(o,h),a=Math.max(a,h)}return i-n>a-o&&(n=o,i=a,i>k.PI&&(i=i-k.TWO_PI),n>k.PI&&(n=n-k.TWO_PI)),c(e)?(e.west=n,e.south=s,e.east=i,e.north=l,e):new fi(n,s,i,l)};fi.fromCartesianArray=function(t,e,n){e=f(e,mt.WGS84);let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,a=Number.MAX_VALUE,s=-Number.MAX_VALUE,l=Number.MAX_VALUE,r=-Number.MAX_VALUE;for(let d=0,m=t.length;d=0?h.longitude:h.longitude+k.TWO_PI;a=Math.min(a,u),s=Math.max(s,u)}return o-i>s-a&&(i=a,o=s,o>k.PI&&(o=o-k.TWO_PI),i>k.PI&&(i=i-k.TWO_PI)),c(n)?(n.west=i,n.south=l,n.east=o,n.north=r,n):new fi(i,l,o,r)};var h5t=new p,p5t=new p,V5t=new p,u5t=new p,Z5t=new p,O6=new Array(5);for(let t=0;t0?i+=k.TWO_PI:a0&&(a+=k.TWO_PI),i=m))return c(n)?(n.west=l,n.south=d,n.east=r,n.north=m,n):new fi(l,d,r,m)};fi.simpleIntersection=function(t,e,n){let i=Math.max(t.west,e.west),o=Math.max(t.south,e.south),a=Math.min(t.east,e.east),s=Math.min(t.north,e.north);if(!(o>=s||i>=a))return c(n)?(n.west=i,n.south=o,n.east=a,n.north=s,n):new fi(i,o,a,s)};fi.union=function(t,e,n){c(n)||(n=new fi);let i=t.east,o=t.west,a=e.east,s=e.west;i0?i+=k.TWO_PI:a0&&(a+=k.TWO_PI),io||k.equalsEpsilon(n,o,k.EPSILON14))&&(n=t.south&&i<=t.north};var R5t=new gt;fi.subsample=function(t,e,n,i){e=f(e,mt.WGS84),n=f(n,0),c(i)||(i=[]);let o=0,a=t.north,s=t.south,l=t.east,r=t.west,d=R5t;d.height=n,d.longitude=r,d.latitude=a,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.longitude=l,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.latitude=s,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.longitude=r,i[o]=e.cartographicToCartesian(d,i[o]),o++,a<0?d.latitude=a:s>0?d.latitude=s:d.latitude=0;for(let m=1;m<8;++m)d.longitude=-Math.PI+m*k.PI_OVER_TWO,fi.contains(t,d)&&(i[o]=e.cartographicToCartesian(d,i[o]),o++);return d.latitude===0&&(d.longitude=r,i[o]=e.cartographicToCartesian(d,i[o]),o++,d.longitude=l,i[o]=e.cartographicToCartesian(d,i[o]),o++),i.length=o,i};fi.subsection=function(t,e,n,i,o,a){if(c(a)||(a=new fi),t.west<=t.east){let l=t.east-t.west;a.west=t.west+e*l,a.east=t.west+i*l}else{let l=k.TWO_PI+t.east-t.west;a.west=k.negativePiToPi(t.west+e*l),a.east=k.negativePiToPi(t.west+i*l)}let s=t.north-t.south;return a.south=t.south+n*s,a.north=t.south+o*s,e===1&&(a.west=t.east),i===1&&(a.east=t.east),n===1&&(a.south=t.north),o===1&&(a.north=t.north),a};fi.MAX_VALUE=Object.freeze(new fi(-Math.PI,-k.PI_OVER_TWO,Math.PI,k.PI_OVER_TWO));var Gt=fi;function tl(t,e,n,i){this.x=f(t,0),this.y=f(e,0),this.width=f(n,0),this.height=f(i,0)}tl.packedLength=4;tl.pack=function(t,e,n){return n=f(n,0),e[n++]=t.x,e[n++]=t.y,e[n++]=t.width,e[n]=t.height,e};tl.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new tl),n.x=t[e++],n.y=t[e++],n.width=t[e++],n.height=t[e],n};tl.fromPoints=function(t,e){if(c(e)||(e=new tl),!c(t)||t.length===0)return e.x=0,e.y=0,e.width=0,e.height=0,e;let n=t.length,i=t[0].x,o=t[0].y,a=t[0].x,s=t[0].y;for(let l=1;ln.width?n.width=i:i<0&&(n.width-=i,n.x=e.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=e.y),n};tl.intersect=function(t,e){let n=t.x,i=t.y,o=e.x,a=e.y;return n>o+e.width||n+t.widtha+e.height?yn.OUTSIDE:yn.INTERSECTING};tl.equals=function(t,e){return t===e||c(t)&&c(e)&&t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height};tl.prototype.clone=function(t){return tl.clone(this,t)};tl.prototype.intersect=function(t){return tl.intersect(this,t)};tl.prototype.equals=function(t){return tl.equals(this,t)};var Fe=tl;var FKe=b(W(),1);var dd={POINTS:pt.POINTS,LINES:pt.LINES,LINE_LOOP:pt.LINE_LOOP,LINE_STRIP:pt.LINE_STRIP,TRIANGLES:pt.TRIANGLES,TRIANGLE_STRIP:pt.TRIANGLE_STRIP,TRIANGLE_FAN:pt.TRIANGLE_FAN};dd.isLines=function(t){return t===dd.LINES||t===dd.LINE_LOOP||t===dd.LINE_STRIP};dd.isTriangles=function(t){return t===dd.TRIANGLES||t===dd.TRIANGLE_STRIP||t===dd.TRIANGLE_FAN};dd.validate=function(t){return t===dd.POINTS||t===dd.LINES||t===dd.LINE_LOOP||t===dd.LINE_STRIP||t===dd.TRIANGLES||t===dd.TRIANGLE_STRIP||t===dd.TRIANGLE_FAN};var le=Object.freeze(dd);var GKe=b(W(),1),GG=`in vec4 position; in vec2 textureCoordinates; out vec2 v_textureCoordinates; @@ -115,14 +115,14 @@ void main() gl_Position = position; v_textureCoordinates = textureCoordinates; } -`;var E3e=R(W(),1);var Os={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function my(t){t=f(t,f.EMPTY_OBJECT),this._boundingVolume=t.boundingVolume,this._orientedBoundingBox=t.orientedBoundingBox,this._modelMatrix=t.modelMatrix,this._primitiveType=f(t.primitiveType,le.TRIANGLES),this._vertexArray=t.vertexArray,this._count=t.count,this._offset=f(t.offset,0),this._instanceCount=f(t.instanceCount,0),this._shaderProgram=t.shaderProgram,this._uniformMap=t.uniformMap,this._renderState=t.renderState,this._framebuffer=t.framebuffer,this._pass=t.pass,this._owner=t.owner,this._debugOverlappingFrustums=0,this._pickId=t.pickId,this._flags=0,this.cull=f(t.cull,!0),this.occlude=f(t.occlude,!0),this.executeInClosestFrustum=f(t.executeInClosestFrustum,!1),this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.castShadows=f(t.castShadows,!1),this.receiveShadows=f(t.receiveShadows,!1),this.pickOnly=f(t.pickOnly,!1),this.depthForTranslucentClassification=f(t.depthForTranslucentClassification,!1),this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Jd(t,e){return(t._flags&e)===e}function uf(t,e,n){n?t._flags|=e:t._flags&=~e}Object.defineProperties(my.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(t){this._boundingVolume!==t&&(this._boundingVolume=t,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(t){this._orientedBoundingBox!==t&&(this._orientedBoundingBox=t,this.dirty=!0)}},cull:{get:function(){return Jd(this,Os.CULL)},set:function(t){Jd(this,Os.CULL)!==t&&(uf(this,Os.CULL,t),this.dirty=!0)}},occlude:{get:function(){return Jd(this,Os.OCCLUDE)},set:function(t){Jd(this,Os.OCCLUDE)!==t&&(uf(this,Os.OCCLUDE,t),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(t){this._modelMatrix!==t&&(this._modelMatrix=t,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(t){this._primitiveType!==t&&(this._primitiveType=t,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(t){this._vertexArray!==t&&(this._vertexArray=t,this.dirty=!0)}},count:{get:function(){return this._count},set:function(t){this._count!==t&&(this._count=t,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(t){this._offset!==t&&(this._offset=t,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(t){this._instanceCount!==t&&(this._instanceCount=t,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(t){this._shaderProgram!==t&&(this._shaderProgram=t,this.dirty=!0)}},castShadows:{get:function(){return Jd(this,Os.CAST_SHADOWS)},set:function(t){Jd(this,Os.CAST_SHADOWS)!==t&&(uf(this,Os.CAST_SHADOWS,t),this.dirty=!0)}},receiveShadows:{get:function(){return Jd(this,Os.RECEIVE_SHADOWS)},set:function(t){Jd(this,Os.RECEIVE_SHADOWS)!==t&&(uf(this,Os.RECEIVE_SHADOWS,t),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(t){this._uniformMap!==t&&(this._uniformMap=t,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(t){this._renderState!==t&&(this._renderState=t,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(t){this._framebuffer!==t&&(this._framebuffer=t,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(t){this._pass!==t&&(this._pass=t,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Jd(this,Os.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(t){Jd(this,Os.EXECUTE_IN_CLOSEST_FRUSTUM)!==t&&(uf(this,Os.EXECUTE_IN_CLOSEST_FRUSTUM,t),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(t){this._owner!==t&&(this._owner=t,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Jd(this,Os.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(t){Jd(this,Os.DEBUG_SHOW_BOUNDING_VOLUME)!==t&&(uf(this,Os.DEBUG_SHOW_BOUNDING_VOLUME,t),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(t){this._debugOverlappingFrustums!==t&&(this._debugOverlappingFrustums=t,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(t){this._pickId!==t&&(this._pickId=t,this.dirty=!0)}},pickOnly:{get:function(){return Jd(this,Os.PICK_ONLY)},set:function(t){Jd(this,Os.PICK_ONLY)!==t&&(uf(this,Os.PICK_ONLY,t),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Jd(this,Os.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(t){Jd(this,Os.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==t&&(uf(this,Os.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,t),this.dirty=!0)}}});my.shallowClone=function(t,e){if(c(t))return c(e)||(e=new my),e._boundingVolume=t._boundingVolume,e._orientedBoundingBox=t._orientedBoundingBox,e._modelMatrix=t._modelMatrix,e._primitiveType=t._primitiveType,e._vertexArray=t._vertexArray,e._count=t._count,e._offset=t._offset,e._instanceCount=t._instanceCount,e._shaderProgram=t._shaderProgram,e._uniformMap=t._uniformMap,e._renderState=t._renderState,e._framebuffer=t._framebuffer,e._pass=t._pass,e._owner=t._owner,e._debugOverlappingFrustums=t._debugOverlappingFrustums,e._pickId=t._pickId,e._flags=t._flags,e.dirty=!0,e.lastDirtyTime=0,e};my.prototype.execute=function(t,e){t.draw(this,e)};var Ee=my;var D3e=R(W(),1);var k3e=R(W(),1);var N3e=R(W(),1);var Bo={UNSIGNED_BYTE:pt.UNSIGNED_BYTE,UNSIGNED_SHORT:pt.UNSIGNED_SHORT,UNSIGNED_INT:pt.UNSIGNED_INT,FLOAT:pt.FLOAT,HALF_FLOAT:pt.HALF_FLOAT_OES,UNSIGNED_INT_24_8:pt.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:pt.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:pt.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:pt.UNSIGNED_SHORT_5_6_5};Bo.toWebGLConstant=function(t,e){switch(t){case Bo.UNSIGNED_BYTE:return pt.UNSIGNED_BYTE;case Bo.UNSIGNED_SHORT:return pt.UNSIGNED_SHORT;case Bo.UNSIGNED_INT:return pt.UNSIGNED_INT;case Bo.FLOAT:return pt.FLOAT;case Bo.HALF_FLOAT:return e.webgl2?pt.HALF_FLOAT:pt.HALF_FLOAT_OES;case Bo.UNSIGNED_INT_24_8:return pt.UNSIGNED_INT_24_8;case Bo.UNSIGNED_SHORT_4_4_4_4:return pt.UNSIGNED_SHORT_4_4_4_4;case Bo.UNSIGNED_SHORT_5_5_5_1:return pt.UNSIGNED_SHORT_5_5_5_1;case Bo.UNSIGNED_SHORT_5_6_5:return Bo.UNSIGNED_SHORT_5_6_5}};Bo.isPacked=function(t){return t===Bo.UNSIGNED_INT_24_8||t===Bo.UNSIGNED_SHORT_4_4_4_4||t===Bo.UNSIGNED_SHORT_5_5_5_1||t===Bo.UNSIGNED_SHORT_5_6_5};Bo.sizeInBytes=function(t){switch(t){case Bo.UNSIGNED_BYTE:return 1;case Bo.UNSIGNED_SHORT:case Bo.UNSIGNED_SHORT_4_4_4_4:case Bo.UNSIGNED_SHORT_5_5_5_1:case Bo.UNSIGNED_SHORT_5_6_5:case Bo.HALF_FLOAT:return 2;case Bo.UNSIGNED_INT:case Bo.FLOAT:case Bo.UNSIGNED_INT_24_8:return 4}};Bo.validate=function(t){return t===Bo.UNSIGNED_BYTE||t===Bo.UNSIGNED_SHORT||t===Bo.UNSIGNED_INT||t===Bo.FLOAT||t===Bo.HALF_FLOAT||t===Bo.UNSIGNED_INT_24_8||t===Bo.UNSIGNED_SHORT_4_4_4_4||t===Bo.UNSIGNED_SHORT_5_5_5_1||t===Bo.UNSIGNED_SHORT_5_6_5};var Ue=Object.freeze(Bo);var Xe={DEPTH_COMPONENT:pt.DEPTH_COMPONENT,DEPTH_STENCIL:pt.DEPTH_STENCIL,ALPHA:pt.ALPHA,RED:pt.RED,RG:pt.RG,RGB:pt.RGB,RGBA:pt.RGBA,LUMINANCE:pt.LUMINANCE,LUMINANCE_ALPHA:pt.LUMINANCE_ALPHA,RGB_DXT1:pt.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:pt.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:pt.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:pt.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:pt.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:pt.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:pt.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:pt.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:pt.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:pt.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:pt.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:pt.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:pt.COMPRESSED_RGBA_BPTC_UNORM};Xe.componentsLength=function(t){switch(t){case Xe.RGB:return 3;case Xe.RGBA:return 4;case Xe.LUMINANCE_ALPHA:case Xe.RG:return 2;case Xe.ALPHA:case Xe.RED:case Xe.LUMINANCE:return 1;default:return 1}};Xe.validate=function(t){return t===Xe.DEPTH_COMPONENT||t===Xe.DEPTH_STENCIL||t===Xe.ALPHA||t===Xe.RED||t===Xe.RG||t===Xe.RGB||t===Xe.RGBA||t===Xe.LUMINANCE||t===Xe.LUMINANCE_ALPHA||t===Xe.RGB_DXT1||t===Xe.RGBA_DXT1||t===Xe.RGBA_DXT3||t===Xe.RGBA_DXT5||t===Xe.RGB_PVRTC_4BPPV1||t===Xe.RGB_PVRTC_2BPPV1||t===Xe.RGBA_PVRTC_4BPPV1||t===Xe.RGBA_PVRTC_2BPPV1||t===Xe.RGBA_ASTC||t===Xe.RGB_ETC1||t===Xe.RGB8_ETC2||t===Xe.RGBA8_ETC2_EAC||t===Xe.RGBA_BC7};Xe.isColorFormat=function(t){return t===Xe.RED||t===Xe.ALPHA||t===Xe.RGB||t===Xe.RGBA||t===Xe.LUMINANCE||t===Xe.LUMINANCE_ALPHA};Xe.isDepthFormat=function(t){return t===Xe.DEPTH_COMPONENT||t===Xe.DEPTH_STENCIL};Xe.isCompressedFormat=function(t){return t===Xe.RGB_DXT1||t===Xe.RGBA_DXT1||t===Xe.RGBA_DXT3||t===Xe.RGBA_DXT5||t===Xe.RGB_PVRTC_4BPPV1||t===Xe.RGB_PVRTC_2BPPV1||t===Xe.RGBA_PVRTC_4BPPV1||t===Xe.RGBA_PVRTC_2BPPV1||t===Xe.RGBA_ASTC||t===Xe.RGB_ETC1||t===Xe.RGB8_ETC2||t===Xe.RGBA8_ETC2_EAC||t===Xe.RGBA_BC7};Xe.isDXTFormat=function(t){return t===Xe.RGB_DXT1||t===Xe.RGBA_DXT1||t===Xe.RGBA_DXT3||t===Xe.RGBA_DXT5};Xe.isPVRTCFormat=function(t){return t===Xe.RGB_PVRTC_4BPPV1||t===Xe.RGB_PVRTC_2BPPV1||t===Xe.RGBA_PVRTC_4BPPV1||t===Xe.RGBA_PVRTC_2BPPV1};Xe.isASTCFormat=function(t){return t===Xe.RGBA_ASTC};Xe.isETC1Format=function(t){return t===Xe.RGB_ETC1};Xe.isETC2Format=function(t){return t===Xe.RGB8_ETC2||t===Xe.RGBA8_ETC2_EAC};Xe.isBC7Format=function(t){return t===Xe.RGBA_BC7};Xe.compressedTextureSizeInBytes=function(t,e,n){switch(t){case Xe.RGB_DXT1:case Xe.RGBA_DXT1:case Xe.RGB_ETC1:case Xe.RGB8_ETC2:return Math.floor((e+3)/4)*Math.floor((n+3)/4)*8;case Xe.RGBA_DXT3:case Xe.RGBA_DXT5:case Xe.RGBA_ASTC:case Xe.RGBA8_ETC2_EAC:return Math.floor((e+3)/4)*Math.floor((n+3)/4)*16;case Xe.RGB_PVRTC_4BPPV1:case Xe.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(e,8)*Math.max(n,8)*4+7)/8);case Xe.RGB_PVRTC_2BPPV1:case Xe.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(e,16)*Math.max(n,8)*2+7)/8);case Xe.RGBA_BC7:return Math.ceil(e/4)*Math.ceil(n/4)*16;default:return 0}};Xe.textureSizeInBytes=function(t,e,n,i){let o=Xe.componentsLength(t);return Ue.isPacked(e)&&(o=1),o*Ue.sizeInBytes(e)*n*i};Xe.alignmentInBytes=function(t,e,n){let i=Xe.textureSizeInBytes(t,e,n,1)%4;return i===0?4:i===2?2:1};Xe.createTypedArray=function(t,e,n,i){let o,a=Ue.sizeInBytes(e);a===Uint8Array.BYTES_PER_ELEMENT?o=Uint8Array:a===Uint16Array.BYTES_PER_ELEMENT?o=Uint16Array:a===Float32Array.BYTES_PER_ELEMENT&&e===Ue.FLOAT?o=Float32Array:o=Uint32Array;let s=Xe.componentsLength(t)*n*i;return new o(s)};Xe.flipY=function(t,e,n,i,o){if(o===1)return t;let a=Xe.createTypedArray(e,n,i,o),s=Xe.componentsLength(e),l=i*s;for(let r=0;r0&&console.log(`${xV}Vertex shader compile log: ${r}`),r=t.getShaderInfoLog(a),c(r)&&r.length>0&&console.log(`${xV}Fragment shader compile log: ${r}`),r=t.getProgramInfoLog(s),c(r)&&r.length>0&&console.log(`${xV}Shader program link log: ${r}`)),t.deleteShader(o),t.deleteShader(a),s;let d,m=e._debugShaders;throw t.getShaderParameter(a,t.COMPILE_STATUS)?t.getShaderParameter(o,t.COMPILE_STATUS)?(r=t.getProgramInfoLog(s),console.error(`${xV}Shader program link log: ${r}`),h(o,"vertex"),h(a,"fragment"),d=`Program failed to link. Link log: ${r}`):(r=t.getShaderInfoLog(o),console.error(`${xV}Vertex shader compile log: ${r}`),console.error(`${xV} Vertex shader source: -${n}`),d=`Vertex shader failed to compile. Compile log: ${r}`):(r=t.getShaderInfoLog(a),console.error(`${xV}Fragment shader compile log: ${r}`),console.error(`${xV} Fragment shader source: -${i}`),d=`Fragment shader failed to compile. Compile log: ${r}`),t.deleteShader(o),t.deleteShader(a),t.deleteProgram(s),new St(d);function h(Z,b){if(!c(m))return;let u=m.getTranslatedShaderSource(Z);if(u===""){console.error(`${xV}${b} shader translation failed.`);return}console.error(`${xV}Translated ${b} shaderSource: -${u}`)}}function x5t(t,e,n){let i={};for(let o=0;o=0){if(m=n[d.slice(0,u)],!c(m))continue;h=m._locations,h.length<=1&&(Z=m.value,b=t.getUniformLocation(e,d),b!==null&&(h.push(b),Z.push(t.getUniform(e,b))))}else{h=[];for(let F=0;F{t.onmessage=function(o){let a=o.data.array,s=c(a)&&a[0]===e;i(s),t.terminate(),cd._canTransferArrayBuffer=s}})}return cd._canTransferArrayBuffer}var j6=new It;function z6(t){let e;try{e=new Blob([t],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,a=new o;a.append(t),e=a.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(e)}function q6(t){let e=new vht.default(t),n=e.scheme().length!==0&&e.fragment().length===0,i={},o;if(ZG(t)){let s=`importScripts("${t}");`;return o=z6(s),new Worker(o,i)}let a=t.replace(/\.js$/,"");if(!n&&typeof CESIUM_WORKERS<"u"){let s=` +`;var EKe=b(W(),1);var Os={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function my(t){t=f(t,f.EMPTY_OBJECT),this._boundingVolume=t.boundingVolume,this._orientedBoundingBox=t.orientedBoundingBox,this._modelMatrix=t.modelMatrix,this._primitiveType=f(t.primitiveType,le.TRIANGLES),this._vertexArray=t.vertexArray,this._count=t.count,this._offset=f(t.offset,0),this._instanceCount=f(t.instanceCount,0),this._shaderProgram=t.shaderProgram,this._uniformMap=t.uniformMap,this._renderState=t.renderState,this._framebuffer=t.framebuffer,this._pass=t.pass,this._owner=t.owner,this._debugOverlappingFrustums=0,this._pickId=t.pickId,this._flags=0,this.cull=f(t.cull,!0),this.occlude=f(t.occlude,!0),this.executeInClosestFrustum=f(t.executeInClosestFrustum,!1),this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.castShadows=f(t.castShadows,!1),this.receiveShadows=f(t.receiveShadows,!1),this.pickOnly=f(t.pickOnly,!1),this.depthForTranslucentClassification=f(t.depthForTranslucentClassification,!1),this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Jd(t,e){return(t._flags&e)===e}function Vf(t,e,n){n?t._flags|=e:t._flags&=~e}Object.defineProperties(my.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(t){this._boundingVolume!==t&&(this._boundingVolume=t,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(t){this._orientedBoundingBox!==t&&(this._orientedBoundingBox=t,this.dirty=!0)}},cull:{get:function(){return Jd(this,Os.CULL)},set:function(t){Jd(this,Os.CULL)!==t&&(Vf(this,Os.CULL,t),this.dirty=!0)}},occlude:{get:function(){return Jd(this,Os.OCCLUDE)},set:function(t){Jd(this,Os.OCCLUDE)!==t&&(Vf(this,Os.OCCLUDE,t),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(t){this._modelMatrix!==t&&(this._modelMatrix=t,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(t){this._primitiveType!==t&&(this._primitiveType=t,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(t){this._vertexArray!==t&&(this._vertexArray=t,this.dirty=!0)}},count:{get:function(){return this._count},set:function(t){this._count!==t&&(this._count=t,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(t){this._offset!==t&&(this._offset=t,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(t){this._instanceCount!==t&&(this._instanceCount=t,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(t){this._shaderProgram!==t&&(this._shaderProgram=t,this.dirty=!0)}},castShadows:{get:function(){return Jd(this,Os.CAST_SHADOWS)},set:function(t){Jd(this,Os.CAST_SHADOWS)!==t&&(Vf(this,Os.CAST_SHADOWS,t),this.dirty=!0)}},receiveShadows:{get:function(){return Jd(this,Os.RECEIVE_SHADOWS)},set:function(t){Jd(this,Os.RECEIVE_SHADOWS)!==t&&(Vf(this,Os.RECEIVE_SHADOWS,t),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(t){this._uniformMap!==t&&(this._uniformMap=t,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(t){this._renderState!==t&&(this._renderState=t,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(t){this._framebuffer!==t&&(this._framebuffer=t,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(t){this._pass!==t&&(this._pass=t,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Jd(this,Os.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(t){Jd(this,Os.EXECUTE_IN_CLOSEST_FRUSTUM)!==t&&(Vf(this,Os.EXECUTE_IN_CLOSEST_FRUSTUM,t),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(t){this._owner!==t&&(this._owner=t,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Jd(this,Os.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(t){Jd(this,Os.DEBUG_SHOW_BOUNDING_VOLUME)!==t&&(Vf(this,Os.DEBUG_SHOW_BOUNDING_VOLUME,t),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(t){this._debugOverlappingFrustums!==t&&(this._debugOverlappingFrustums=t,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(t){this._pickId!==t&&(this._pickId=t,this.dirty=!0)}},pickOnly:{get:function(){return Jd(this,Os.PICK_ONLY)},set:function(t){Jd(this,Os.PICK_ONLY)!==t&&(Vf(this,Os.PICK_ONLY,t),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Jd(this,Os.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(t){Jd(this,Os.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==t&&(Vf(this,Os.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,t),this.dirty=!0)}}});my.shallowClone=function(t,e){if(c(t))return c(e)||(e=new my),e._boundingVolume=t._boundingVolume,e._orientedBoundingBox=t._orientedBoundingBox,e._modelMatrix=t._modelMatrix,e._primitiveType=t._primitiveType,e._vertexArray=t._vertexArray,e._count=t._count,e._offset=t._offset,e._instanceCount=t._instanceCount,e._shaderProgram=t._shaderProgram,e._uniformMap=t._uniformMap,e._renderState=t._renderState,e._framebuffer=t._framebuffer,e._pass=t._pass,e._owner=t._owner,e._debugOverlappingFrustums=t._debugOverlappingFrustums,e._pickId=t._pickId,e._flags=t._flags,e.dirty=!0,e.lastDirtyTime=0,e};my.prototype.execute=function(t,e){t.draw(this,e)};var Ee=my;var DKe=b(W(),1);var kKe=b(W(),1);var NKe=b(W(),1);var Bo={UNSIGNED_BYTE:pt.UNSIGNED_BYTE,UNSIGNED_SHORT:pt.UNSIGNED_SHORT,UNSIGNED_INT:pt.UNSIGNED_INT,FLOAT:pt.FLOAT,HALF_FLOAT:pt.HALF_FLOAT_OES,UNSIGNED_INT_24_8:pt.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:pt.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:pt.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:pt.UNSIGNED_SHORT_5_6_5};Bo.toWebGLConstant=function(t,e){switch(t){case Bo.UNSIGNED_BYTE:return pt.UNSIGNED_BYTE;case Bo.UNSIGNED_SHORT:return pt.UNSIGNED_SHORT;case Bo.UNSIGNED_INT:return pt.UNSIGNED_INT;case Bo.FLOAT:return pt.FLOAT;case Bo.HALF_FLOAT:return e.webgl2?pt.HALF_FLOAT:pt.HALF_FLOAT_OES;case Bo.UNSIGNED_INT_24_8:return pt.UNSIGNED_INT_24_8;case Bo.UNSIGNED_SHORT_4_4_4_4:return pt.UNSIGNED_SHORT_4_4_4_4;case Bo.UNSIGNED_SHORT_5_5_5_1:return pt.UNSIGNED_SHORT_5_5_5_1;case Bo.UNSIGNED_SHORT_5_6_5:return Bo.UNSIGNED_SHORT_5_6_5}};Bo.isPacked=function(t){return t===Bo.UNSIGNED_INT_24_8||t===Bo.UNSIGNED_SHORT_4_4_4_4||t===Bo.UNSIGNED_SHORT_5_5_5_1||t===Bo.UNSIGNED_SHORT_5_6_5};Bo.sizeInBytes=function(t){switch(t){case Bo.UNSIGNED_BYTE:return 1;case Bo.UNSIGNED_SHORT:case Bo.UNSIGNED_SHORT_4_4_4_4:case Bo.UNSIGNED_SHORT_5_5_5_1:case Bo.UNSIGNED_SHORT_5_6_5:case Bo.HALF_FLOAT:return 2;case Bo.UNSIGNED_INT:case Bo.FLOAT:case Bo.UNSIGNED_INT_24_8:return 4}};Bo.validate=function(t){return t===Bo.UNSIGNED_BYTE||t===Bo.UNSIGNED_SHORT||t===Bo.UNSIGNED_INT||t===Bo.FLOAT||t===Bo.HALF_FLOAT||t===Bo.UNSIGNED_INT_24_8||t===Bo.UNSIGNED_SHORT_4_4_4_4||t===Bo.UNSIGNED_SHORT_5_5_5_1||t===Bo.UNSIGNED_SHORT_5_6_5};var Ue=Object.freeze(Bo);var Xe={DEPTH_COMPONENT:pt.DEPTH_COMPONENT,DEPTH_STENCIL:pt.DEPTH_STENCIL,ALPHA:pt.ALPHA,RED:pt.RED,RG:pt.RG,RGB:pt.RGB,RGBA:pt.RGBA,LUMINANCE:pt.LUMINANCE,LUMINANCE_ALPHA:pt.LUMINANCE_ALPHA,RGB_DXT1:pt.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:pt.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:pt.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:pt.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:pt.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:pt.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:pt.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:pt.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:pt.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:pt.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:pt.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:pt.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:pt.COMPRESSED_RGBA_BPTC_UNORM};Xe.componentsLength=function(t){switch(t){case Xe.RGB:return 3;case Xe.RGBA:return 4;case Xe.LUMINANCE_ALPHA:case Xe.RG:return 2;case Xe.ALPHA:case Xe.RED:case Xe.LUMINANCE:return 1;default:return 1}};Xe.validate=function(t){return t===Xe.DEPTH_COMPONENT||t===Xe.DEPTH_STENCIL||t===Xe.ALPHA||t===Xe.RED||t===Xe.RG||t===Xe.RGB||t===Xe.RGBA||t===Xe.LUMINANCE||t===Xe.LUMINANCE_ALPHA||t===Xe.RGB_DXT1||t===Xe.RGBA_DXT1||t===Xe.RGBA_DXT3||t===Xe.RGBA_DXT5||t===Xe.RGB_PVRTC_4BPPV1||t===Xe.RGB_PVRTC_2BPPV1||t===Xe.RGBA_PVRTC_4BPPV1||t===Xe.RGBA_PVRTC_2BPPV1||t===Xe.RGBA_ASTC||t===Xe.RGB_ETC1||t===Xe.RGB8_ETC2||t===Xe.RGBA8_ETC2_EAC||t===Xe.RGBA_BC7};Xe.isColorFormat=function(t){return t===Xe.RED||t===Xe.ALPHA||t===Xe.RGB||t===Xe.RGBA||t===Xe.LUMINANCE||t===Xe.LUMINANCE_ALPHA};Xe.isDepthFormat=function(t){return t===Xe.DEPTH_COMPONENT||t===Xe.DEPTH_STENCIL};Xe.isCompressedFormat=function(t){return t===Xe.RGB_DXT1||t===Xe.RGBA_DXT1||t===Xe.RGBA_DXT3||t===Xe.RGBA_DXT5||t===Xe.RGB_PVRTC_4BPPV1||t===Xe.RGB_PVRTC_2BPPV1||t===Xe.RGBA_PVRTC_4BPPV1||t===Xe.RGBA_PVRTC_2BPPV1||t===Xe.RGBA_ASTC||t===Xe.RGB_ETC1||t===Xe.RGB8_ETC2||t===Xe.RGBA8_ETC2_EAC||t===Xe.RGBA_BC7};Xe.isDXTFormat=function(t){return t===Xe.RGB_DXT1||t===Xe.RGBA_DXT1||t===Xe.RGBA_DXT3||t===Xe.RGBA_DXT5};Xe.isPVRTCFormat=function(t){return t===Xe.RGB_PVRTC_4BPPV1||t===Xe.RGB_PVRTC_2BPPV1||t===Xe.RGBA_PVRTC_4BPPV1||t===Xe.RGBA_PVRTC_2BPPV1};Xe.isASTCFormat=function(t){return t===Xe.RGBA_ASTC};Xe.isETC1Format=function(t){return t===Xe.RGB_ETC1};Xe.isETC2Format=function(t){return t===Xe.RGB8_ETC2||t===Xe.RGBA8_ETC2_EAC};Xe.isBC7Format=function(t){return t===Xe.RGBA_BC7};Xe.compressedTextureSizeInBytes=function(t,e,n){switch(t){case Xe.RGB_DXT1:case Xe.RGBA_DXT1:case Xe.RGB_ETC1:case Xe.RGB8_ETC2:return Math.floor((e+3)/4)*Math.floor((n+3)/4)*8;case Xe.RGBA_DXT3:case Xe.RGBA_DXT5:case Xe.RGBA_ASTC:case Xe.RGBA8_ETC2_EAC:return Math.floor((e+3)/4)*Math.floor((n+3)/4)*16;case Xe.RGB_PVRTC_4BPPV1:case Xe.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(e,8)*Math.max(n,8)*4+7)/8);case Xe.RGB_PVRTC_2BPPV1:case Xe.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(e,16)*Math.max(n,8)*2+7)/8);case Xe.RGBA_BC7:return Math.ceil(e/4)*Math.ceil(n/4)*16;default:return 0}};Xe.textureSizeInBytes=function(t,e,n,i){let o=Xe.componentsLength(t);return Ue.isPacked(e)&&(o=1),o*Ue.sizeInBytes(e)*n*i};Xe.alignmentInBytes=function(t,e,n){let i=Xe.textureSizeInBytes(t,e,n,1)%4;return i===0?4:i===2?2:1};Xe.createTypedArray=function(t,e,n,i){let o,a=Ue.sizeInBytes(e);a===Uint8Array.BYTES_PER_ELEMENT?o=Uint8Array:a===Uint16Array.BYTES_PER_ELEMENT?o=Uint16Array:a===Float32Array.BYTES_PER_ELEMENT&&e===Ue.FLOAT?o=Float32Array:o=Uint32Array;let s=Xe.componentsLength(t)*n*i;return new o(s)};Xe.flipY=function(t,e,n,i,o){if(o===1)return t;let a=Xe.createTypedArray(e,n,i,o),s=Xe.componentsLength(e),l=i*s;for(let r=0;r0&&console.log(`${xZ}Vertex shader compile log: ${r}`),r=t.getShaderInfoLog(a),c(r)&&r.length>0&&console.log(`${xZ}Fragment shader compile log: ${r}`),r=t.getProgramInfoLog(s),c(r)&&r.length>0&&console.log(`${xZ}Shader program link log: ${r}`)),t.deleteShader(o),t.deleteShader(a),s;let d,m=e._debugShaders;throw t.getShaderParameter(a,t.COMPILE_STATUS)?t.getShaderParameter(o,t.COMPILE_STATUS)?(r=t.getProgramInfoLog(s),console.error(`${xZ}Shader program link log: ${r}`),h(o,"vertex"),h(a,"fragment"),d=`Program failed to link. Link log: ${r}`):(r=t.getShaderInfoLog(o),console.error(`${xZ}Vertex shader compile log: ${r}`),console.error(`${xZ} Vertex shader source: +${n}`),d=`Vertex shader failed to compile. Compile log: ${r}`):(r=t.getShaderInfoLog(a),console.error(`${xZ}Fragment shader compile log: ${r}`),console.error(`${xZ} Fragment shader source: +${i}`),d=`Fragment shader failed to compile. Compile log: ${r}`),t.deleteShader(o),t.deleteShader(a),t.deleteProgram(s),new Tt(d);function h(u,R){if(!c(m))return;let V=m.getTranslatedShaderSource(u);if(V===""){console.error(`${xZ}${R} shader translation failed.`);return}console.error(`${xZ}Translated ${R} shaderSource: +${V}`)}}function x5t(t,e,n){let i={};for(let o=0;o=0){if(m=n[d.slice(0,V)],!c(m))continue;h=m._locations,h.length<=1&&(u=m.value,R=t.getUniformLocation(e,d),R!==null&&(h.push(R),u.push(t.getUniform(e,R))))}else{h=[];for(let F=0;F{t.onmessage=function(o){let a=o.data.array,s=c(a)&&a[0]===e;i(s),t.terminate(),cd._canTransferArrayBuffer=s}})}return cd._canTransferArrayBuffer}var j6=new It;function z6(t){let e;try{e=new Blob([t],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,a=new o;a.append(t),e=a.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(e)}function q6(t){let e=new vht.default(t),n=e.scheme().length!==0&&e.fragment().length===0,i={},o;if(uG(t)){let s=`importScripts("${t}");`;return o=z6(s),new Worker(o,i)}let a=t.replace(/\.js$/,"");if(!n&&typeof CESIUM_WORKERS<"u"){let s=` importScripts("${z6(CESIUM_WORKERS)}"); CesiumWorkers["${a}"](); - `;return o=z6(s),new Worker(o,i)}if(o=t,n||(o=Dn(`${cd._workerModulePrefix+a}.js`)),!In.supportsEsmWebWorkers())throw new St("This browser is not supported. Please update your browser to continue.");return i.type="module",new Worker(o,i)}async function oDt(t,e){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!In.supportsWebAssembly()){if(!c(e.fallbackModulePath))throw new St(`This browser does not support Web Assembly, and no backup module was provided for ${t._workerPath}`);return n.modulePath=Dn(e.fallbackModulePath),n}n.wasmBinaryFile=Dn(e.wasmBinaryFile);let i=await te.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function cd(t,e){this._workerPath=t,this._maximumActiveTasks=f(e,Number.POSITIVE_INFINITY),this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var aDt=(t,e,n,i)=>{let o=({data:a})=>{if(a.id===e){if(c(a.error)){let s=a.error;s.name==="RuntimeError"?(s=new St(a.error.message),s.stack=a.error.stack):s.name==="DeveloperError"?(s=new Ut(a.error.message),s.stack=a.error.stack):s.name==="Error"&&(s=new Error(a.error.message),s.stack=a.error.stack),j6.raiseEvent(s),i(s)}else j6.raiseEvent(),n(a.result);t.removeEventListener("message",o)}};return o},sDt=[];async function lDt(t,e,n){let i=await Promise.resolve(Kht());c(n)?i||(n.length=0):n=sDt;let o=t._nextID++,a=new Promise((s,l)=>{t._worker.addEventListener("message",aDt(t._worker,o,s,l))});return t._worker.postMessage({id:o,baseUrl:Dn.getCesiumBaseUrl().url,parameters:e,canTransferArrayBuffer:i},n),a}async function rDt(t,e,n){++t._activeTasks;try{let i=await lDt(t,e,n);return--t._activeTasks,i}catch(i){throw--t._activeTasks,i}}cd.prototype.scheduleTask=function(t,e){if(c(this._worker)||(this._worker=q6(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return rDt(this,t,e)};cd.prototype.initWebAssemblyModule=async function(t){if(c(this._webAssemblyPromise))return this._webAssemblyPromise;let e=async()=>{let n=this._worker=q6(this._workerPath),i=await oDt(this,t),o=await Promise.resolve(Kht()),a,s=i.wasmBinary;c(s)&&o&&(a=[s]);let l=new Promise((r,d)=>{n.onmessage=function({data:m}){c(m)?r(m.result):d(new St("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},a),l};return this._webAssemblyPromise=e(),this._webAssemblyPromise};cd.prototype.isDestroyed=function(){return!1};cd.prototype.destroy=function(){return c(this._worker)&&this._worker.terminate(),At(this)};cd.taskCompletedEvent=j6;cd._defaultWorkerModulePrefix="Workers/";cd._workerModulePrefix=cd._defaultWorkerModulePrefix;cd._canTransferArrayBuffer=void 0;var $i=cd;function TR(){}TR._transcodeTaskProcessor=new $i("transcodeKTX2",Number.POSITIVE_INFINITY);TR._readyPromise=void 0;function dDt(){let t=TR._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(e){if(e)return TR._transcodeTaskProcessor;throw new St("KTX2 transcoder could not be initialized.")});TR._readyPromise=t}TR.transcode=function(t,e){return c(TR._readyPromise)||dDt(),TR._readyPromise.then(function(n){let i;if(t instanceof ArrayBuffer){let o=new Uint8Array(t);return i={supportedTargetFormats:e,ktx2Buffer:o},n.scheduleTask(i,[t])}return i={supportedTargetFormats:e,ktx2Buffer:t},n.scheduleTask(i,[t.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]),a=o.length,s;for(s=0;s{let o=({data:a})=>{if(a.id===e){if(c(a.error)){let s=a.error;s.name==="RuntimeError"?(s=new Tt(a.error.message),s.stack=a.error.stack):s.name==="DeveloperError"?(s=new Ut(a.error.message),s.stack=a.error.stack):s.name==="Error"&&(s=new Error(a.error.message),s.stack=a.error.stack),j6.raiseEvent(s),i(s)}else j6.raiseEvent(),n(a.result);t.removeEventListener("message",o)}};return o},sDt=[];async function lDt(t,e,n){let i=await Promise.resolve(Kht());c(n)?i||(n.length=0):n=sDt;let o=t._nextID++,a=new Promise((s,l)=>{t._worker.addEventListener("message",aDt(t._worker,o,s,l))});return t._worker.postMessage({id:o,baseUrl:Dn.getCesiumBaseUrl().url,parameters:e,canTransferArrayBuffer:i},n),a}async function rDt(t,e,n){++t._activeTasks;try{let i=await lDt(t,e,n);return--t._activeTasks,i}catch(i){throw--t._activeTasks,i}}cd.prototype.scheduleTask=function(t,e){if(c(this._worker)||(this._worker=q6(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return rDt(this,t,e)};cd.prototype.initWebAssemblyModule=async function(t){if(c(this._webAssemblyPromise))return this._webAssemblyPromise;let e=async()=>{let n=this._worker=q6(this._workerPath),i=await oDt(this,t),o=await Promise.resolve(Kht()),a,s=i.wasmBinary;c(s)&&o&&(a=[s]);let l=new Promise((r,d)=>{n.onmessage=function({data:m}){c(m)?r(m.result):d(new Tt("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},a),l};return this._webAssemblyPromise=e(),this._webAssemblyPromise};cd.prototype.isDestroyed=function(){return!1};cd.prototype.destroy=function(){return c(this._worker)&&this._worker.terminate(),At(this)};cd.taskCompletedEvent=j6;cd._defaultWorkerModulePrefix="Workers/";cd._workerModulePrefix=cd._defaultWorkerModulePrefix;cd._canTransferArrayBuffer=void 0;var $i=cd;function Sb(){}Sb._transcodeTaskProcessor=new $i("transcodeKTX2",Number.POSITIVE_INFINITY);Sb._readyPromise=void 0;function dDt(){let t=Sb._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(e){if(e)return Sb._transcodeTaskProcessor;throw new Tt("KTX2 transcoder could not be initialized.")});Sb._readyPromise=t}Sb.transcode=function(t,e){return c(Sb._readyPromise)||dDt(),Sb._readyPromise.then(function(n){let i;if(t instanceof ArrayBuffer){let o=new Uint8Array(t);return i={supportedTargetFormats:e,ktx2Buffer:o},n.scheduleTask(i,[t])}return i={supportedTargetFormats:e,ktx2Buffer:t},n.scheduleTask(i,[t.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]),a=o.length,s;for(s=0;s1/pi. * * @alias czm_oneOverPi @@ -224,7 +224,7 @@ const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto i * float pi = 1.0 / czm_oneOverPi; */ const float czm_oneOverPi = 0.3183098861837907; -`;var c8e=R(W(),1),yy=`/** +`;var c8e=b(W(),1),yy=`/** * A built-in GLSL floating-point constant for 1/2pi. * * @alias czm_oneOverTwoPi @@ -240,7 +240,7 @@ const float czm_oneOverPi = 0.3183098861837907; * float pi = 2.0 * czm_oneOverTwoPi; */ const float czm_oneOverTwoPi = 0.15915494309189535; -`;var h8e=R(W(),1),By=`/** +`;var h8e=b(W(),1),By=`/** * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE} * * @name czm_passCesium3DTile @@ -249,7 +249,7 @@ const float czm_oneOverTwoPi = 0.15915494309189535; * @see czm_pass */ const float czm_passCesium3DTile = 4.0; -`;var u8e=R(W(),1),Qy=`/** +`;var V8e=b(W(),1),Qy=`/** * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION} * * @name czm_passCesium3DTileClassification @@ -258,7 +258,7 @@ const float czm_passCesium3DTile = 4.0; * @see czm_pass */ const float czm_passCesium3DTileClassification = 5.0; -`;var V8e=R(W(),1),ky=`/** +`;var Z8e=b(W(),1),ky=`/** * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW} * * @name czm_passCesium3DTileClassificationIgnoreShow @@ -267,7 +267,7 @@ const float czm_passCesium3DTileClassification = 5.0; * @see czm_pass */ const float czm_passCesium3DTileClassificationIgnoreShow = 6.0; -`;var R8e=R(W(),1),Yy=`/** +`;var b8e=b(W(),1),Yy=`/** * The automatic GLSL constant for {@link Pass#CLASSIFICATION} * * @name czm_passClassification @@ -276,7 +276,7 @@ const float czm_passCesium3DTileClassificationIgnoreShow = 6.0; * @see czm_pass */ const float czm_passClassification = 7.0; -`;var f8e=R(W(),1),xy=`/** +`;var f8e=b(W(),1),xy=`/** * The automatic GLSL constant for {@link Pass#COMPUTE} * * @name czm_passCompute @@ -285,7 +285,7 @@ const float czm_passClassification = 7.0; * @see czm_pass */ const float czm_passCompute = 1.0; -`;var U8e=R(W(),1),Xy=`/** +`;var U8e=b(W(),1),Xy=`/** * The automatic GLSL constant for {@link Pass#ENVIRONMENT} * * @name czm_passEnvironment @@ -294,7 +294,7 @@ const float czm_passCompute = 1.0; * @see czm_pass */ const float czm_passEnvironment = 0.0; -`;var A8e=R(W(),1),Jy=`/** +`;var A8e=b(W(),1),Jy=`/** * The automatic GLSL constant for {@link Pass#GLOBE} * * @name czm_passGlobe @@ -303,7 +303,7 @@ const float czm_passEnvironment = 0.0; * @see czm_pass */ const float czm_passGlobe = 2.0; -`;var S8e=R(W(),1),Ly=`/** +`;var T8e=b(W(),1),Ly=`/** * The automatic GLSL constant for {@link Pass#OPAQUE} * * @name czm_passOpaque @@ -312,7 +312,7 @@ const float czm_passGlobe = 2.0; * @see czm_pass */ const float czm_passOpaque = 7.0; -`;var E8e=R(W(),1),My=`/** +`;var E8e=b(W(),1),My=`/** * The automatic GLSL constant for {@link Pass#OVERLAY} * * @name czm_passOverlay @@ -321,7 +321,7 @@ const float czm_passOpaque = 7.0; * @see czm_pass */ const float czm_passOverlay = 10.0; -`;var I8e=R(W(),1),_y=`/** +`;var I8e=b(W(),1),_y=`/** * The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION} * * @name czm_passTerrainClassification @@ -330,7 +330,7 @@ const float czm_passOverlay = 10.0; * @see czm_pass */ const float czm_passTerrainClassification = 3.0; -`;var y8e=R(W(),1),Dy=`/** +`;var y8e=b(W(),1),Dy=`/** * The automatic GLSL constant for {@link Pass#TRANSLUCENT} * * @name czm_passTranslucent @@ -339,7 +339,7 @@ const float czm_passTerrainClassification = 3.0; * @see czm_pass */ const float czm_passTranslucent = 8.0; -`;var Q8e=R(W(),1),Oy=`/** +`;var Q8e=b(W(),1),Oy=`/** * The automatic GLSL constant for {@link Pass#VOXELS} * * @name czm_passVoxels @@ -348,7 +348,7 @@ const float czm_passTranslucent = 8.0; * @see czm_pass */ const float czm_passVoxels = 9.0; -`;var Y8e=R(W(),1),Hy=`/** +`;var Y8e=b(W(),1),Hy=`/** * A built-in GLSL floating-point constant for Math.PI. * * @alias czm_pi @@ -364,7 +364,7 @@ const float czm_passVoxels = 9.0; * float twoPi = 2.0 * czm_pi; */ const float czm_pi = 3.141592653589793; -`;var X8e=R(W(),1),wy=`/** +`;var X8e=b(W(),1),wy=`/** * A built-in GLSL floating-point constant for pi/4. * * @alias czm_piOverFour @@ -380,7 +380,7 @@ const float czm_pi = 3.141592653589793; * float pi = 4.0 * czm_piOverFour; */ const float czm_piOverFour = 0.7853981633974483; -`;var L8e=R(W(),1),Py=`/** +`;var L8e=b(W(),1),Py=`/** * A built-in GLSL floating-point constant for pi/6. * * @alias czm_piOverSix @@ -396,7 +396,7 @@ const float czm_piOverFour = 0.7853981633974483; * float pi = 6.0 * czm_piOverSix; */ const float czm_piOverSix = 0.5235987755982988; -`;var _8e=R(W(),1),vy=`/** +`;var _8e=b(W(),1),vy=`/** * A built-in GLSL floating-point constant for pi/3. * * @alias czm_piOverThree @@ -412,7 +412,7 @@ const float czm_piOverSix = 0.5235987755982988; * float pi = 3.0 * czm_piOverThree; */ const float czm_piOverThree = 1.0471975511965976; -`;var O8e=R(W(),1),Ky=`/** +`;var O8e=b(W(),1),Ky=`/** * A built-in GLSL floating-point constant for pi/2. * * @alias czm_piOverTwo @@ -428,7 +428,7 @@ const float czm_piOverThree = 1.0471975511965976; * float pi = 2.0 * czm_piOverTwo; */ const float czm_piOverTwo = 1.5707963267948966; -`;var w8e=R(W(),1),zy=`/** +`;var w8e=b(W(),1),zy=`/** * A built-in GLSL floating-point constant for converting degrees to radians. * * @alias czm_radiansPerDegree @@ -444,7 +444,7 @@ const float czm_piOverTwo = 1.5707963267948966; * float rad = czm_radiansPerDegree * deg; */ const float czm_radiansPerDegree = 0.017453292519943295; -`;var v8e=R(W(),1),jy=`/** +`;var v8e=b(W(),1),jy=`/** * The constant identifier for the 2D {@link SceneMode} * * @name czm_sceneMode2D @@ -455,7 +455,7 @@ const float czm_radiansPerDegree = 0.017453292519943295; * @see czm_sceneModeMorphing */ const float czm_sceneMode2D = 2.0; -`;var z8e=R(W(),1),qy=`/** +`;var z8e=b(W(),1),qy=`/** * The constant identifier for the 3D {@link SceneMode} * * @name czm_sceneMode3D @@ -466,7 +466,7 @@ const float czm_sceneMode2D = 2.0; * @see czm_sceneModeMorphing */ const float czm_sceneMode3D = 3.0; -`;var q8e=R(W(),1),$y=`/** +`;var q8e=b(W(),1),$y=`/** * The constant identifier for the Columbus View {@link SceneMode} * * @name czm_sceneModeColumbusView @@ -477,7 +477,7 @@ const float czm_sceneMode3D = 3.0; * @see czm_sceneModeMorphing */ const float czm_sceneModeColumbusView = 1.0; -`;var t6e=R(W(),1),tB=`/** +`;var t6e=b(W(),1),tB=`/** * The constant identifier for the Morphing {@link SceneMode} * * @name czm_sceneModeMorphing @@ -488,7 +488,7 @@ const float czm_sceneModeColumbusView = 1.0; * @see czm_sceneMode3D */ const float czm_sceneModeMorphing = 0.0; -`;var n6e=R(W(),1),eB=`/** +`;var n6e=b(W(),1),eB=`/** * A built-in GLSL floating-point constant for one solar radius. * * @alias czm_solarRadius @@ -501,7 +501,7 @@ const float czm_sceneModeMorphing = 0.0; * const float czm_solarRadius = ...; */ const float czm_solarRadius = 695500000.0; -`;var o6e=R(W(),1),nB=`/** +`;var o6e=b(W(),1),nB=`/** * A built-in GLSL floating-point constant for 3pi/2. * * @alias czm_threePiOver2 @@ -517,7 +517,7 @@ const float czm_solarRadius = 695500000.0; * float pi = (2.0 / 3.0) * czm_threePiOver2; */ const float czm_threePiOver2 = 4.71238898038469; -`;var s6e=R(W(),1),iB=`/** +`;var s6e=b(W(),1),iB=`/** * A built-in GLSL floating-point constant for 2pi. * * @alias czm_twoPi @@ -533,7 +533,7 @@ const float czm_threePiOver2 = 4.71238898038469; * float pi = czm_twoPi / 2.0; */ const float czm_twoPi = 6.283185307179586; -`;var r6e=R(W(),1),oB=`/** +`;var r6e=b(W(),1),oB=`/** * The maximum latitude, in radians, both North and South, supported by a Web Mercator * (EPSG:3857) projection. Technically, the Mercator projection is defined * for any latitude up to (but not including) 90 degrees, but it makes sense @@ -549,7 +549,7 @@ const float czm_twoPi = 6.283185307179586; * @glslConstant */ const float czm_webMercatorMaxLatitude = 1.4844222297453324; -`;var c6e=R(W(),1),aB=`/** +`;var c6e=b(W(),1),aB=`/** * @name czm_depthRangeStruct * @glslStruct */ @@ -558,7 +558,7 @@ struct czm_depthRangeStruct float near; float far; }; -`;var h6e=R(W(),1),sB=`/** +`;var h6e=b(W(),1),sB=`/** * Holds material information that can be used for lighting. Returned by all czm_getMaterial functions. * * @name czm_material @@ -580,7 +580,7 @@ struct czm_material vec3 emission; float alpha; }; -`;var u6e=R(W(),1),lB=`/** +`;var V6e=b(W(),1),lB=`/** * Used as input to every material's czm_getMaterial function. * * @name czm_materialInput @@ -608,7 +608,7 @@ struct czm_materialInput float slope; float aspect; }; -`;var V6e=R(W(),1),rB=`/** +`;var Z6e=b(W(),1),rB=`/** * Struct for representing a material for a {@link Model}. The model * rendering pipeline will pass this struct between material, custom shaders, * and lighting stages. This is not to be confused with {@link czm_material} @@ -637,7 +637,7 @@ struct czm_modelMaterial { float occlusion; vec3 emissive; }; -`;var R6e=R(W(),1),dB=`/** +`;var b6e=b(W(),1),dB=`/** * Struct for representing the output of a custom vertex shader. * * @name czm_modelVertexOutput @@ -653,7 +653,7 @@ struct czm_modelVertexOutput { vec3 positionMC; float pointSize; }; -`;var f6e=R(W(),1),cB=`/** +`;var f6e=b(W(),1),cB=`/** * Parameters for {@link czm_pbrLighting} * * @name czm_material @@ -669,7 +669,7 @@ struct czm_pbrParameters float roughness; vec3 f0; }; -`;var U6e=R(W(),1),mB=`/** +`;var U6e=b(W(),1),mB=`/** * DOC_TBA * * @name czm_ray @@ -680,7 +680,7 @@ struct czm_ray vec3 origin; vec3 direction; }; -`;var A6e=R(W(),1),hB=`/** +`;var A6e=b(W(),1),hB=`/** * DOC_TBA * * @name czm_raySegment @@ -707,7 +707,7 @@ const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_in * @glslConstant */ const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity); -`;var S6e=R(W(),1),pB=`struct czm_shadowParameters +`;var T6e=b(W(),1),pB=`struct czm_shadowParameters { #ifdef USE_CUBE_MAP_SHADOW vec3 texCoords; @@ -722,7 +722,7 @@ const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity); float normalShadingSmooth; float darkness; }; -`;var E6e=R(W(),1),uB=`/** +`;var E6e=b(W(),1),VB=`/** * Converts an HSB color (hue, saturation, brightness) to RGB * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} * @@ -746,7 +746,7 @@ vec3 czm_HSBToRGB(vec3 hsb) vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www); return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y); } -`;var I6e=R(W(),1),ZB=`/** +`;var I6e=b(W(),1),uB=`/** * Converts an HSL color (hue, saturation, lightness) to RGB * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} * @@ -777,7 +777,7 @@ vec3 czm_HSLToRGB(vec3 hsl) float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y; return (rgb - 0.5) * c + hsl.z; } -`;var y6e=R(W(),1),VB=`/** +`;var y6e=b(W(),1),ZB=`/** * Converts an RGB color to HSB (hue, saturation, brightness) * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} * @@ -804,7 +804,7 @@ vec3 czm_RGBToHSB(vec3 rgb) float d = q.x - min(q.w, q.y); return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x); } -`;var Q6e=R(W(),1),bB=`/** +`;var Q6e=b(W(),1),RB=`/** * Converts an RGB color to HSL (hue, saturation, lightness) * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} * @@ -838,7 +838,7 @@ vec3 czm_RGBToHSL(vec3 rgb) float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7); return vec3(hcv.x, s, l); } -`;var Y6e=R(W(),1),RB=`/** +`;var Y6e=b(W(),1),bB=`/** * Converts an RGB color to CIE Yxy. *

The conversion is described in * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} @@ -868,7 +868,7 @@ vec3 czm_RGBToXYZ(vec3 rgb) Yxy.gb = xyz.rg / temp; return Yxy; } -`;var X6e=R(W(),1),WB=`/** +`;var X6e=b(W(),1),WB=`/** * Converts a CIE Yxy color to RGB. *

The conversion is described in * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} @@ -898,7 +898,7 @@ vec3 czm_XYZToRGB(vec3 Yxy) return XYZ2RGB * xyz; } -`;var L6e=R(W(),1),fB=`// See: +`;var L6e=b(W(),1),fB=`// See: // https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ vec3 czm_acesTonemapping(vec3 color) { @@ -914,7 +914,7 @@ vec3 czm_acesTonemapping(vec3 color) { return color; } -`;var _6e=R(W(),1),FB=`/** +`;var _6e=b(W(),1),FB=`/** * @private */ float czm_alphaWeight(float a) @@ -925,7 +925,7 @@ float czm_alphaWeight(float a) // http://jcgt.org/published/0002/02/09/ return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0)))); } -`;var O6e=R(W(),1),UB=`/** +`;var O6e=b(W(),1),UB=`/** * Procedural anti-aliasing by blurring two colors that meet at a sharp edge. * * @name czm_antialias @@ -964,7 +964,7 @@ vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist) { return czm_antialias(color1, color2, currentColor, dist, 0.1); } -`;var w6e=R(W(),1),GB=`/** +`;var w6e=b(W(),1),GB=`/** * Apply a HSB color shift to an RGB color. * * @param {vec3} rgb The color in RGB space. @@ -996,7 +996,7 @@ vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) { // Convert shifted hsb back to rgb return czm_HSBToRGB(hsb); } -`;var v6e=R(W(),1),AB=`/** +`;var v6e=b(W(),1),AB=`/** * Approximately computes spherical coordinates given a normal. * Uses approximate inverse trigonometry for speed and consistency, * since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU. @@ -1014,7 +1014,7 @@ vec2 czm_approximateSphericalCoordinates(vec3 normal) { float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y); return vec2(latitudeApproximation, longitudeApproximation); } -`;var z6e=R(W(),1),TB=`/** +`;var z6e=b(W(),1),SB=`/** * Compute a rational approximation to tanh(x) * * @param {float} x A real number input @@ -1024,7 +1024,7 @@ float czm_approximateTanh(float x) { float x2 = x * x; return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2))); } -`;var q6e=R(W(),1),SB=`/** +`;var q6e=b(W(),1),TB=`/** * Determines if the fragment is back facing * * @name czm_backFacing @@ -1037,7 +1037,7 @@ bool czm_backFacing() // !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494. return gl_FrontFacing == false; } -`;var t7e=R(W(),1),gB=`/** +`;var t7e=b(W(),1),gB=`/** * Branchless ternary operator to be used when it's inexpensive to explicitly * evaluate both possibilities for a float expression. * @@ -1108,7 +1108,7 @@ vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) { float useA = float(comparison); return a * useA + b * (1.0 - useA); } -`;var n7e=R(W(),1),EB=` +`;var n7e=b(W(),1),EB=` vec4 czm_cascadeColor(vec4 weights) { return vec4(1.0, 0.0, 0.0, 1.0) * weights.x + @@ -1116,14 +1116,14 @@ vec4 czm_cascadeColor(vec4 weights) vec4(0.0, 0.0, 1.0, 1.0) * weights.z + vec4(1.0, 0.0, 1.0, 1.0) * weights.w; } -`;var o7e=R(W(),1),CB=` +`;var o7e=b(W(),1),CB=` uniform vec4 shadowMap_cascadeDistances; float czm_cascadeDistance(vec4 weights) { return dot(shadowMap_cascadeDistances, weights); } -`;var s7e=R(W(),1),IB=` +`;var s7e=b(W(),1),IB=` uniform mat4 shadowMap_cascadeMatrices[4]; mat4 czm_cascadeMatrix(vec4 weights) @@ -1133,7 +1133,7 @@ mat4 czm_cascadeMatrix(vec4 weights) shadowMap_cascadeMatrices[2] * weights.z + shadowMap_cascadeMatrices[3] * weights.w; } -`;var r7e=R(W(),1),NB=` +`;var r7e=b(W(),1),NB=` uniform vec4 shadowMap_cascadeSplits[2]; vec4 czm_cascadeWeights(float depthEye) @@ -1143,7 +1143,7 @@ vec4 czm_cascadeWeights(float depthEye) vec4 far = step(depthEye, shadowMap_cascadeSplits[1]); return near * far; } -`;var c7e=R(W(),1),yB=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { +`;var c7e=b(W(),1),yB=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { float signedDistance = texture(clippingDistance, uv).r; return (signedDistance - 0.5) * 2.0; } @@ -1180,7 +1180,7 @@ void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 } #endif } -`;var h7e=R(W(),1),BB=`/** +`;var h7e=b(W(),1),BB=`/** * DOC_TBA * * @name czm_columbusViewMorph @@ -1192,7 +1192,7 @@ vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time) vec3 p = mix(position2D.xyz, position3D.xyz, time); return vec4(p, 1.0); } -`;var u7e=R(W(),1),QB=`/** +`;var V7e=b(W(),1),QB=`/** * Compute the atmosphere color, applying Rayleigh and Mie scattering. This * builtin uses automatic uniforms so the atmophere settings are synced with the * state of the Scene, even in other contexts like Model. @@ -1236,7 +1236,7 @@ vec4 czm_computeAtmosphereColor( return vec4(color, opacity); } -`;var V7e=R(W(),1),kB=`/** +`;var Z7e=b(W(),1),kB=`/** * Compute atmosphere scattering for the ground atmosphere and fog. This method * uses automatic uniforms so it is always synced with the scene settings. * @@ -1266,7 +1266,7 @@ void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, opacity ); } -`;var R7e=R(W(),1),YB=`/** +`;var b7e=b(W(),1),YB=`/** * Returns a position in model coordinates relative to eye taking into * account the current scene mode: 3D, 2D, or Columbus view. *

@@ -1288,7 +1288,7 @@ void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, * @see czm_translateRelativeToEye */ vec4 czm_computePosition(); -`;var f7e=R(W(),1),xB=`/** +`;var f7e=b(W(),1),xB=`/** * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as * the transmittance value for the ray. This function uses automatic uniforms * so the atmosphere settings are always synced with the current scene. @@ -1438,7 +1438,7 @@ void czm_computeScattering( // Compute the transmittance i.e. how much light is passing through the atmosphere. opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x)))); } -`;var U7e=R(W(),1),XB=`/** +`;var U7e=b(W(),1),XB=`/** * @private */ vec2 cordic(float angle) @@ -1649,7 +1649,7 @@ vec2 czm_cosineAndSine(float angle) return cordic(angle); } } -`;var A7e=R(W(),1),JB=`/** +`;var A7e=b(W(),1),JB=`/** * Decompresses texture coordinates that were packed into a single float. * * @name czm_decompressTextureCoordinates @@ -1666,7 +1666,7 @@ vec2 czm_cosineAndSine(float angle) float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0; return vec2(stx, sty); } -`;var S7e=R(W(),1),LB=`/** +`;var T7e=b(W(),1),LB=`/** * Get default parameters for physically based rendering. These defaults * describe a rough dielectric (non-metal) surface (e.g. rough plastic). * @@ -1682,7 +1682,7 @@ czm_pbrParameters czm_defaultPbrMaterial() results.f0 = REFLECTANCE_DIELECTRIC; return results; } -`;var E7e=R(W(),1),MB=`// emulated noperspective +`;var E7e=b(W(),1),MB=`// emulated noperspective #if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH) out float v_WindowZ; #endif @@ -1729,7 +1729,7 @@ vec4 czm_depthClamp(vec4 coords) #endif return coords; } -`;var I7e=R(W(),1),_B=`/** +`;var I7e=b(W(),1),_B=`/** * Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system * to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the * surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping. @@ -1762,7 +1762,7 @@ mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC) bitangentEC.x, bitangentEC.y, bitangentEC.z, normalEC.x, normalEC.y, normalEC.z); } -`;var y7e=R(W(),1),DB=`/** +`;var y7e=b(W(),1),DB=`/** * DOC_TBA * * @name czm_ellipsoidContainsPoint @@ -1774,7 +1774,7 @@ bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point) vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz; return (dot(scaled, scaled) <= 1.0); } -`;var Q7e=R(W(),1),OB=`/** +`;var Q7e=b(W(),1),OB=`/** * DOC_TBA * * @name czm_ellipsoidWgs84TextureCoordinates @@ -1784,7 +1784,7 @@ vec2 czm_ellipsoidWgs84TextureCoordinates(vec3 normal) { return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5); } -`;var Y7e=R(W(),1),HB=`/** +`;var Y7e=b(W(),1),HB=`/** * Compares left and right componentwise. Returns true * if they are within epsilon and false otherwise. The inputs * left and right can be floats, vec2s, @@ -1820,7 +1820,7 @@ bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) { bool czm_equalsEpsilon(float left, float right, float epsilon) { return (abs(left - right) <= epsilon); } -`;var X7e=R(W(),1),wB=`/** +`;var X7e=b(W(),1),wB=`/** * DOC_TBA * * @name czm_eyeOffset @@ -1840,7 +1840,7 @@ vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset) p.z += zEyeOffset.z; return p; } -`;var L7e=R(W(),1),PB=`/** +`;var L7e=b(W(),1),PB=`/** * Transforms a position from eye to window coordinates. The transformation * from eye to clip coordinates is done using {@link czm_projection}. * The transform from normalized device coordinates to window coordinates is @@ -1872,7 +1872,7 @@ vec4 czm_eyeToWindowCoordinates(vec4 positionEC) q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates return q; } -`;var _7e=R(W(),1),vB=`/** +`;var _7e=b(W(),1),vB=`/** * Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input. * * Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on @@ -1927,7 +1927,7 @@ float czm_fastApproximateAtan(float x, float y) { t = czm_branchFreeTernary(y < 0.0, -t, t); return t; } -`;var O7e=R(W(),1),KB=`/** +`;var O7e=b(W(),1),KB=`/** * Gets the color with fog at a distance from the camera. * * @name czm_fog @@ -1965,7 +1965,7 @@ vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifie float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); return mix(color, fogColor, fog); } -`;var w7e=R(W(),1),zB=`/** +`;var w7e=b(W(),1),zB=`/** * Converts a color from RGB space to linear space. * * @name czm_gammaCorrect @@ -1987,7 +1987,7 @@ vec4 czm_gammaCorrect(vec4 color) { #endif return color; } -`;var v7e=R(W(),1),jB=`/** +`;var v7e=b(W(),1),jB=`/** * DOC_TBA * * @name czm_geodeticSurfaceNormal @@ -2003,7 +2003,7 @@ vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, v { return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); } -`;var z7e=R(W(),1),qB=`/** +`;var z7e=b(W(),1),qB=`/** * An czm_material with default values. Every material's czm_getMaterial * should use this default material as a base for the material it returns. * The default normal value is given by materialInput.normalEC. @@ -2030,7 +2030,7 @@ czm_material czm_getDefaultMaterial(czm_materialInput materialInput) material.alpha = 1.0; return material; } -`;var q7e=R(W(),1),$B=`/** +`;var q7e=b(W(),1),$B=`/** * Select which direction vector to use for dynamic atmosphere lighting based on an enum value * * @name czm_getDynamicAtmosphereLightDirection @@ -2052,7 +2052,7 @@ vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { czm_sunDirectionWC * float(lightEnum == SUNLIGHT); return normalize(lightDirection); } -`;var tqe=R(W(),1),tQ=`/** +`;var tqe=b(W(),1),tQ=`/** * Calculates the intensity of diffusely reflected light. * * @name czm_getLambertDiffuse @@ -2074,7 +2074,7 @@ float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) { return max(dot(lightDirectionEC, normalEC), 0.0); } -`;var nqe=R(W(),1),eQ=`/** +`;var nqe=b(W(),1),eQ=`/** * Calculates the specular intensity of reflected light. * * @name czm_getSpecular @@ -2103,7 +2103,7 @@ float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float // Prevent this by making sure shininess is at least czm_epsilon2. return pow(specular, max(shininess, czm_epsilon2)); } -`;var oqe=R(W(),1),nQ=`/** +`;var oqe=b(W(),1),nQ=`/** * @private */ vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) @@ -2140,7 +2140,7 @@ vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRa // average and scale to between -1 and 1 return ((noise / 4.0) - 0.5) * 2.0; } -`;var sqe=R(W(),1),iQ=`/** +`;var sqe=b(W(),1),iQ=`/** * Adjusts the hue of a color. * * @name czm_hue @@ -2170,7 +2170,7 @@ vec3 czm_hue(vec3 rgb, float adjustment) vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); return toRGB * color; } -`;var rqe=R(W(),1),oQ=`/** +`;var rqe=b(W(),1),oQ=`/** * Converts a color in linear space to RGB space. * * @name czm_inverseGamma @@ -2182,7 +2182,7 @@ vec3 czm_hue(vec3 rgb, float adjustment) vec3 czm_inverseGamma(vec3 color) { return pow(color, vec3(1.0 / czm_gamma)); } -`;var cqe=R(W(),1),aQ=`/** +`;var cqe=b(W(),1),aQ=`/** * Determines if a time interval is empty. * * @name czm_isEmpty @@ -2201,7 +2201,7 @@ bool czm_isEmpty(czm_raySegment interval) { return (interval.stop < 0.0); } -`;var hqe=R(W(),1),sQ=`/** +`;var hqe=b(W(),1),sQ=`/** * Determines if a time interval is empty. * * @name czm_isFull @@ -2220,7 +2220,7 @@ bool czm_isFull(czm_raySegment interval) { return (interval.start == 0.0 && interval.stop == czm_infinity); } -`;var uqe=R(W(),1),lQ=`/** +`;var Vqe=b(W(),1),lQ=`/** * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. * * @name czm_latitudeToWebMercatorFraction @@ -2241,7 +2241,7 @@ float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, fl return (mercatorY - southMercatorY) * oneOverMercatorHeight; } -`;var Vqe=R(W(),1),rQ=`/** +`;var Zqe=b(W(),1),rQ=`/** * Computes distance from an point in 2D to a line in 2D. * * @name czm_lineDistance @@ -2255,7 +2255,7 @@ float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, fl float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); } -`;var Rqe=R(W(),1),dQ=`/** +`;var bqe=b(W(),1),dQ=`/** * Converts a linear RGB color to an sRGB color. * * @param {vec3|vec4} linearIn The color in linear color space. @@ -2271,7 +2271,7 @@ vec4 czm_linearToSrgb(vec4 linearIn) vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); return vec4(srgbOut, linearIn.a); } -`;var fqe=R(W(),1),cQ=`/** +`;var fqe=b(W(),1),cQ=`/** * Computes the luminance of a color. * * @name czm_luminance @@ -2291,7 +2291,7 @@ float czm_luminance(vec3 rgb) const vec3 W = vec3(0.2125, 0.7154, 0.0721); return dot(rgb, W); } -`;var Uqe=R(W(),1),mQ=`/** +`;var Uqe=b(W(),1),mQ=`/** * Computes the size of a pixel in meters at a distance from the eye. *

* Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. @@ -2352,7 +2352,7 @@ float czm_metersPerPixel(vec4 positionEC) { return czm_metersPerPixel(positionEC, czm_pixelRatio); } -`;var Aqe=R(W(),1),hQ=`/** +`;var Aqe=b(W(),1),hQ=`/** * Transforms a position from model to window coordinates. The transformation * from model to clip coordinates is done using {@link czm_modelViewProjection}. * The transform from normalized device coordinates to window coordinates is @@ -2389,7 +2389,7 @@ vec4 czm_modelToWindowCoordinates(vec4 position) q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates return q; } -`;var Sqe=R(W(),1),pQ=`/** +`;var Tqe=b(W(),1),pQ=`/** * DOC_TBA * * @name czm_multiplyWithColorBalance @@ -2407,7 +2407,7 @@ vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; } -`;var Eqe=R(W(),1),uQ=`/** +`;var Eqe=b(W(),1),VQ=`/** * Computes a value that scales with distance. The scaling is clamped at the near and * far distances, and does not extrapolate. This function works with the * {@link NearFarScalar} JavaScript class. @@ -2433,7 +2433,7 @@ float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) return mix(valueAtMin, valueAtMax, t); } -`;var Iqe=R(W(),1),ZQ=` /** +`;var Iqe=b(W(),1),uQ=` /** * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ @@ -2516,7 +2516,7 @@ float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) vector3 = czm_octDecode(vec2(x, y)); } -`;var yqe=R(W(),1),VQ=`/** +`;var yqe=b(W(),1),ZQ=`/** * Packs a depth value into a vec3 that can be represented by unsigned bytes. * * @name czm_packDepth @@ -2534,7 +2534,7 @@ vec4 czm_packDepth(float depth) enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); return enc; } -`;var Qqe=R(W(),1),bQ=`vec3 lambertianDiffuse(vec3 diffuseColor) +`;var Qqe=b(W(),1),RQ=`vec3 lambertianDiffuse(vec3 diffuseColor) { return diffuseColor / czm_pi; } @@ -2633,7 +2633,7 @@ vec3 czm_pbrLighting( // Lo = (diffuse + specular) * Li * NdotL return (diffuseContribution + specularContribution) * NdotL * lightColorHdr; } -`;var Yqe=R(W(),1),RQ=`/** +`;var Yqe=b(W(),1),bQ=`/** * Compute parameters for physically based rendering using the * metallic/roughness workflow. All inputs are linear; sRGB texture values must * be decoded beforehand @@ -2670,7 +2670,7 @@ czm_pbrParameters czm_pbrMetallicRoughnessMaterial( return results; } -`;var Xqe=R(W(),1),WQ=`/** +`;var Xqe=b(W(),1),WQ=`/** * Compute parameters for physically based rendering using the * specular/glossy workflow. All inputs are linear; sRGB texture values must * be decoded beforehand @@ -2700,7 +2700,7 @@ czm_pbrParameters czm_pbrSpecularGlossinessMaterial( return results; } -`;var Lqe=R(W(),1),fQ=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +`;var Lqe=b(W(),1),fQ=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) { return czm_getLambertDiffuse(lightDirectionEC, material.normal); } @@ -2763,7 +2763,7 @@ vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) return vec4(color, material.alpha); } -`;var _qe=R(W(),1),FQ=`/** +`;var _qe=b(W(),1),FQ=`/** * Computes distance from a point to a plane. * * @name czm_planeDistance @@ -2791,7 +2791,7 @@ float czm_planeDistance(vec4 plane, vec3 point) { float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { return (dot(planeNormal, point) + planeDistance); } -`;var Oqe=R(W(),1),UQ=`/** +`;var Oqe=b(W(),1),UQ=`/** * Computes the point along a ray at the given time. time can be positive, negative, or zero. * * @name czm_pointAlongRay @@ -2810,7 +2810,7 @@ vec3 czm_pointAlongRay(czm_ray ray, float time) { return ray.origin + (time * ray.direction); } -`;var wqe=R(W(),1),GQ=`/** +`;var wqe=b(W(),1),GQ=`/** * DOC_TBA * * @name czm_rayEllipsoidIntersectionInterval @@ -2893,7 +2893,7 @@ czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_ } } } -`;var vqe=R(W(),1),AQ=`/** +`;var vqe=b(W(),1),AQ=`/** * Compute the intersection interval of a ray with a sphere. * * @name czm_raySphereIntersectionInterval @@ -2929,11 +2929,11 @@ czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float czm_raySegment result = czm_raySegment(t0, t1); return result; } -`;var zqe=R(W(),1),TQ=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +`;var zqe=b(W(),1),SQ=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) { return czm_reverseLogDepth(texture(depthTexture, texCoords).r); } -`;var qqe=R(W(),1),SQ=`/** +`;var qqe=b(W(),1),TQ=`/** * Reads a value previously transformed with {@link czm_writeNonPerspective} * by dividing it by \`w\`, the value used in the perspective divide. * This function is intended to be called in a fragment shader to access a @@ -2964,7 +2964,7 @@ vec3 czm_readNonPerspective(vec3 value, float oneOverW) { vec4 czm_readNonPerspective(vec4 value, float oneOverW) { return value * oneOverW; } -`;var t$e=R(W(),1),gQ=`float czm_reverseLogDepth(float logZ) +`;var t$e=b(W(),1),gQ=`float czm_reverseLogDepth(float logZ) { #ifdef LOG_DEPTH float near = czm_currentFrustum.x; @@ -2975,7 +2975,7 @@ vec4 czm_readNonPerspective(vec4 value, float oneOverW) { #endif return logZ; } -`;var n$e=R(W(),1),EQ=`/** +`;var n$e=b(W(),1),EQ=`/** * Round a floating point value. This function exists because round() doesn't * exist in GLSL 1.00. * @@ -2997,7 +2997,7 @@ vec3 czm_round(vec3 value) { vec4 czm_round(vec4 value) { return floor(value + 0.5); } -`;var o$e=R(W(),1),CQ=`/** +`;var o$e=b(W(),1),CQ=`/** * Samples the 4 neighboring pixels and return the weighted average. * * @private @@ -3075,7 +3075,7 @@ vec3 czm_sampleOctahedralProjection(sampler2D projectedMap, vec2 textureSize, ve return mix(colorNextLod, colorCurrentLod, nextLod - lod); } -`;var s$e=R(W(),1),IQ=`/** +`;var s$e=b(W(),1),IQ=`/** * Adjusts the saturation of a color. * * @name czm_saturation @@ -3097,7 +3097,7 @@ vec3 czm_saturation(vec3 rgb, float adjustment) vec3 intensity = vec3(dot(rgb, W)); return mix(intensity, rgb, adjustment); } -`;var r$e=R(W(),1),NQ=` +`;var r$e=b(W(),1),NQ=` float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) { return czm_unpackDepth(czm_textureCube(shadowMap, d)); @@ -3121,7 +3121,7 @@ float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) { return step(depth, czm_sampleShadowMap(shadowMap, uv)); } -`;var c$e=R(W(),1),yQ=` +`;var c$e=b(W(),1),yQ=` float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) { #ifdef USE_NORMAL_SHADING @@ -3187,7 +3187,7 @@ float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParam return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); } #endif -`;var h$e=R(W(),1),BQ=`/** +`;var h$e=b(W(),1),BQ=`/** * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL * built-in function sign except that returns 1.0 instead of 0.0 when the input value is 0.0. * @@ -3216,7 +3216,7 @@ vec4 czm_signNotZero(vec4 value) { return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); } -`;var u$e=R(W(),1),QQ=`/** +`;var V$e=b(W(),1),QQ=`/** * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. *

* The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. @@ -3258,7 +3258,7 @@ vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) + L21 * (z * x) + L22 * (x * x - y * y); } -`;var V$e=R(W(),1),kQ=`/** +`;var Z$e=b(W(),1),kQ=`/** * Converts an sRGB color to a linear RGB color. * * @param {vec3|vec4} srgbIn The color in sRGB space @@ -3274,7 +3274,7 @@ vec4 czm_srgbToLinear(vec4 srgbIn) vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); return vec4(linearOut, srgbIn.a); } -`;var R$e=R(W(),1),YQ=`/** +`;var b$e=b(W(),1),YQ=`/** * Creates a matrix that transforms vectors from tangent space to eye space. * * @name czm_tangentToEyeSpaceMatrix @@ -3299,7 +3299,7 @@ mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC bitangent.x, bitangent.y, bitangent.z, normal.x , normal.y , normal.z); } -`;var f$e=R(W(),1),xQ=`/** +`;var f$e=b(W(),1),xQ=`/** * A wrapper around the texture (WebGL2) / textureCube (WebGL1) * function to allow for WebGL 1 support. * @@ -3315,7 +3315,7 @@ vec4 czm_textureCube(samplerCube sampler, vec3 p) { #else return textureCube(sampler, p); #endif -}`;var U$e=R(W(),1),XQ=`/** +}`;var U$e=b(W(),1),XQ=`/** * Transforms a plane. * * @name czm_transformPlane @@ -3330,7 +3330,7 @@ vec4 czm_transformPlane(vec4 plane, mat4 transform) { float normalMagnitude = length(transformedPlane.xyz); return transformedPlane / normalMagnitude; } -`;var A$e=R(W(),1),JQ=`/** +`;var A$e=b(W(),1),JQ=`/** * Translates a position (or any vec3) that was encoded with {@link EncodedCartesian3}, * and then provided to the shader as separate high and low bits to * be relative to the eye. As shown in the example, the position can then be transformed in eye @@ -3375,7 +3375,7 @@ vec4 czm_translateRelativeToEye(vec3 high, vec3 low) return vec4(highDifference + lowDifference, 1.0); } -`;var S$e=R(W(),1),LQ=`/** +`;var T$e=b(W(),1),LQ=`/** * @private */ vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) @@ -3402,7 +3402,7 @@ vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirection return vec4(color, material.alpha); } -`;var E$e=R(W(),1),MQ=`/** +`;var E$e=b(W(),1),MQ=`/** * Returns the transpose of the matrix. The input matrix can be * a mat2, mat3, or mat4. * @@ -3447,7 +3447,7 @@ mat4 czm_transpose(mat4 matrix) matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); } -`;var I$e=R(W(),1),_Q=`vec2 getLookupUv(vec2 dimensions, int i) { +`;var I$e=b(W(),1),_Q=`vec2 getLookupUv(vec2 dimensions, int i) { int pixY = i / int(dimensions.x); int pixX = i - (pixY * int(dimensions.x)); float pixelWidth = 1.0 / dimensions.x; @@ -3460,7 +3460,7 @@ mat4 czm_transpose(mat4 matrix) vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); return texture(extentsTexture, getLookupUv(textureDimensions, index)); -}`;var y$e=R(W(),1),DQ=`/** +}`;var y$e=b(W(),1),DQ=`/** * Unpacks a vec4 depth value to a float in [0, 1) range. * * @name czm_unpackDepth @@ -3476,7 +3476,7 @@ vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); } -`;var Q$e=R(W(),1),OQ=`/** +`;var Q$e=b(W(),1),OQ=`/** * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. * * @name czm_unpackFloat @@ -3500,7 +3500,7 @@ float czm_unpackFloat(vec4 packedFloat) float result = sign * exp2(exponent - 23.0) * mantissa; return result; } -`;var Y$e=R(W(),1),HQ=`/** +`;var Y$e=b(W(),1),HQ=`/** * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, * so the return value is an int. *

@@ -3531,7 +3531,7 @@ float czm_unpackFloat(vec4 packedFloat) vec4 rounded = czm_round(packedValue * 255.0); return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); } -`;var X$e=R(W(),1),wQ=`/** +`;var X$e=b(W(),1),wQ=`/** * Transform metadata values following the EXT_structural_metadata spec * by multiplying by scale and adding the offset. Operations are always * performed component-wise, even for matrices. @@ -3569,7 +3569,7 @@ mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { return matrixCompMult(scale, value) + offset; } -`;var L$e=R(W(),1),PQ=`#ifdef LOG_DEPTH +`;var L$e=b(W(),1),PQ=`#ifdef LOG_DEPTH // 1.0 at the near plane, increasing linearly from there. out float v_depthFromNearPlusOne; #ifdef SHADOW_MAP @@ -3633,7 +3633,7 @@ void czm_vertexLogDepth(vec4 clipCoords) czm_updatePositionDepth(clipCoords); #endif } -`;var _$e=R(W(),1),vQ=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +`;var _$e=b(W(),1),vQ=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) { // Reconstruct NDC coordinates float x = 2.0 * screenCoordinate.x - 1.0; @@ -3744,7 +3744,7 @@ vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); } -`;var O$e=R(W(),1),KQ=`// emulated noperspective +`;var O$e=b(W(),1),KQ=`// emulated noperspective #if !defined(LOG_DEPTH) in float v_WindowZ; #endif @@ -3768,7 +3768,7 @@ void czm_writeDepthClamp() gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); #endif } -`;var w$e=R(W(),1),zQ=`#ifdef LOG_DEPTH +`;var w$e=b(W(),1),zQ=`#ifdef LOG_DEPTH in float v_depthFromNearPlusOne; #ifdef POLYGON_OFFSET @@ -3847,7 +3847,7 @@ void czm_writeLogDepth() { czm_writeLogDepth(v_depthFromNearPlusOne); #endif } -`;var v$e=R(W(),1),jQ=`/** +`;var v$e=b(W(),1),jQ=`/** * Transforms a value for non-perspective interpolation by multiplying * it by w, the value used in the perspective divide. This function is * intended to be called in a vertex shader to compute the value of a @@ -3879,7 +3879,7 @@ vec3 czm_writeNonPerspective(vec3 value, float w) { vec4 czm_writeNonPerspective(vec4 value, float w) { return value * w; } -`;var TG={czm_degreesPerRadian:Fy,czm_depthRange:Uy,czm_epsilon1:Gy,czm_epsilon2:Ay,czm_epsilon3:Ty,czm_epsilon4:Sy,czm_epsilon5:gy,czm_epsilon6:Ey,czm_epsilon7:Cy,czm_infinity:Iy,czm_oneOverPi:Ny,czm_oneOverTwoPi:yy,czm_passCesium3DTile:By,czm_passCesium3DTileClassification:Qy,czm_passCesium3DTileClassificationIgnoreShow:ky,czm_passClassification:Yy,czm_passCompute:xy,czm_passEnvironment:Xy,czm_passGlobe:Jy,czm_passOpaque:Ly,czm_passOverlay:My,czm_passTerrainClassification:_y,czm_passTranslucent:Dy,czm_passVoxels:Oy,czm_pi:Hy,czm_piOverFour:wy,czm_piOverSix:Py,czm_piOverThree:vy,czm_piOverTwo:Ky,czm_radiansPerDegree:zy,czm_sceneMode2D:jy,czm_sceneMode3D:qy,czm_sceneModeColumbusView:$y,czm_sceneModeMorphing:tB,czm_solarRadius:eB,czm_threePiOver2:nB,czm_twoPi:iB,czm_webMercatorMaxLatitude:oB,czm_depthRangeStruct:aB,czm_material:sB,czm_materialInput:lB,czm_modelMaterial:rB,czm_modelVertexOutput:dB,czm_pbrParameters:cB,czm_ray:mB,czm_raySegment:hB,czm_shadowParameters:pB,czm_HSBToRGB:uB,czm_HSLToRGB:ZB,czm_RGBToHSB:VB,czm_RGBToHSL:bB,czm_RGBToXYZ:RB,czm_XYZToRGB:WB,czm_acesTonemapping:fB,czm_alphaWeight:FB,czm_antialias:UB,czm_applyHSBShift:GB,czm_approximateSphericalCoordinates:AB,czm_approximateTanh:TB,czm_backFacing:SB,czm_branchFreeTernary:gB,czm_cascadeColor:EB,czm_cascadeDistance:CB,czm_cascadeMatrix:IB,czm_cascadeWeights:NB,czm_clipPolygons:yB,czm_columbusViewMorph:BB,czm_computeAtmosphereColor:QB,czm_computeGroundAtmosphereScattering:kB,czm_computePosition:YB,czm_computeScattering:xB,czm_cosineAndSine:XB,czm_decompressTextureCoordinates:JB,czm_defaultPbrMaterial:LB,czm_depthClamp:MB,czm_eastNorthUpToEyeCoordinates:_B,czm_ellipsoidContainsPoint:DB,czm_ellipsoidWgs84TextureCoordinates:OB,czm_equalsEpsilon:HB,czm_eyeOffset:wB,czm_eyeToWindowCoordinates:PB,czm_fastApproximateAtan:vB,czm_fog:KB,czm_gammaCorrect:zB,czm_geodeticSurfaceNormal:jB,czm_getDefaultMaterial:qB,czm_getDynamicAtmosphereLightDirection:$B,czm_getLambertDiffuse:tQ,czm_getSpecular:eQ,czm_getWaterNoise:nQ,czm_hue:iQ,czm_inverseGamma:oQ,czm_isEmpty:aQ,czm_isFull:sQ,czm_latitudeToWebMercatorFraction:lQ,czm_lineDistance:rQ,czm_linearToSrgb:dQ,czm_luminance:cQ,czm_metersPerPixel:mQ,czm_modelToWindowCoordinates:hQ,czm_multiplyWithColorBalance:pQ,czm_nearFarScalar:uQ,czm_octDecode:ZQ,czm_packDepth:VQ,czm_pbrLighting:bQ,czm_pbrMetallicRoughnessMaterial:RQ,czm_pbrSpecularGlossinessMaterial:WQ,czm_phong:fQ,czm_planeDistance:FQ,czm_pointAlongRay:UQ,czm_rayEllipsoidIntersectionInterval:GQ,czm_raySphereIntersectionInterval:AQ,czm_readDepth:TQ,czm_readNonPerspective:SQ,czm_reverseLogDepth:gQ,czm_round:EQ,czm_sampleOctahedralProjection:CQ,czm_saturation:IQ,czm_shadowDepthCompare:NQ,czm_shadowVisibility:yQ,czm_signNotZero:BQ,czm_sphericalHarmonics:QQ,czm_srgbToLinear:kQ,czm_tangentToEyeSpaceMatrix:YQ,czm_textureCube:xQ,czm_transformPlane:XQ,czm_translateRelativeToEye:JQ,czm_translucentPhong:LQ,czm_transpose:MQ,czm_unpackClippingExtents:_Q,czm_unpackDepth:DQ,czm_unpackFloat:OQ,czm_unpackUint:HQ,czm_valueTransform:wQ,czm_vertexLogDepth:PQ,czm_windowToEyeCoordinates:vQ,czm_writeDepthClamp:KQ,czm_writeLogDepth:zQ,czm_writeNonPerspective:jQ};var Cnn=R(W(),1);function mDt(t,e){let n=t;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),e?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +`;var SG={czm_degreesPerRadian:Fy,czm_depthRange:Uy,czm_epsilon1:Gy,czm_epsilon2:Ay,czm_epsilon3:Sy,czm_epsilon4:Ty,czm_epsilon5:gy,czm_epsilon6:Ey,czm_epsilon7:Cy,czm_infinity:Iy,czm_oneOverPi:Ny,czm_oneOverTwoPi:yy,czm_passCesium3DTile:By,czm_passCesium3DTileClassification:Qy,czm_passCesium3DTileClassificationIgnoreShow:ky,czm_passClassification:Yy,czm_passCompute:xy,czm_passEnvironment:Xy,czm_passGlobe:Jy,czm_passOpaque:Ly,czm_passOverlay:My,czm_passTerrainClassification:_y,czm_passTranslucent:Dy,czm_passVoxels:Oy,czm_pi:Hy,czm_piOverFour:wy,czm_piOverSix:Py,czm_piOverThree:vy,czm_piOverTwo:Ky,czm_radiansPerDegree:zy,czm_sceneMode2D:jy,czm_sceneMode3D:qy,czm_sceneModeColumbusView:$y,czm_sceneModeMorphing:tB,czm_solarRadius:eB,czm_threePiOver2:nB,czm_twoPi:iB,czm_webMercatorMaxLatitude:oB,czm_depthRangeStruct:aB,czm_material:sB,czm_materialInput:lB,czm_modelMaterial:rB,czm_modelVertexOutput:dB,czm_pbrParameters:cB,czm_ray:mB,czm_raySegment:hB,czm_shadowParameters:pB,czm_HSBToRGB:VB,czm_HSLToRGB:uB,czm_RGBToHSB:ZB,czm_RGBToHSL:RB,czm_RGBToXYZ:bB,czm_XYZToRGB:WB,czm_acesTonemapping:fB,czm_alphaWeight:FB,czm_antialias:UB,czm_applyHSBShift:GB,czm_approximateSphericalCoordinates:AB,czm_approximateTanh:SB,czm_backFacing:TB,czm_branchFreeTernary:gB,czm_cascadeColor:EB,czm_cascadeDistance:CB,czm_cascadeMatrix:IB,czm_cascadeWeights:NB,czm_clipPolygons:yB,czm_columbusViewMorph:BB,czm_computeAtmosphereColor:QB,czm_computeGroundAtmosphereScattering:kB,czm_computePosition:YB,czm_computeScattering:xB,czm_cosineAndSine:XB,czm_decompressTextureCoordinates:JB,czm_defaultPbrMaterial:LB,czm_depthClamp:MB,czm_eastNorthUpToEyeCoordinates:_B,czm_ellipsoidContainsPoint:DB,czm_ellipsoidWgs84TextureCoordinates:OB,czm_equalsEpsilon:HB,czm_eyeOffset:wB,czm_eyeToWindowCoordinates:PB,czm_fastApproximateAtan:vB,czm_fog:KB,czm_gammaCorrect:zB,czm_geodeticSurfaceNormal:jB,czm_getDefaultMaterial:qB,czm_getDynamicAtmosphereLightDirection:$B,czm_getLambertDiffuse:tQ,czm_getSpecular:eQ,czm_getWaterNoise:nQ,czm_hue:iQ,czm_inverseGamma:oQ,czm_isEmpty:aQ,czm_isFull:sQ,czm_latitudeToWebMercatorFraction:lQ,czm_lineDistance:rQ,czm_linearToSrgb:dQ,czm_luminance:cQ,czm_metersPerPixel:mQ,czm_modelToWindowCoordinates:hQ,czm_multiplyWithColorBalance:pQ,czm_nearFarScalar:VQ,czm_octDecode:uQ,czm_packDepth:ZQ,czm_pbrLighting:RQ,czm_pbrMetallicRoughnessMaterial:bQ,czm_pbrSpecularGlossinessMaterial:WQ,czm_phong:fQ,czm_planeDistance:FQ,czm_pointAlongRay:UQ,czm_rayEllipsoidIntersectionInterval:GQ,czm_raySphereIntersectionInterval:AQ,czm_readDepth:SQ,czm_readNonPerspective:TQ,czm_reverseLogDepth:gQ,czm_round:EQ,czm_sampleOctahedralProjection:CQ,czm_saturation:IQ,czm_shadowDepthCompare:NQ,czm_shadowVisibility:yQ,czm_signNotZero:BQ,czm_sphericalHarmonics:QQ,czm_srgbToLinear:kQ,czm_tangentToEyeSpaceMatrix:YQ,czm_textureCube:xQ,czm_transformPlane:XQ,czm_translateRelativeToEye:JQ,czm_translucentPhong:LQ,czm_transpose:MQ,czm_unpackClippingExtents:_Q,czm_unpackDepth:DQ,czm_unpackFloat:OQ,czm_unpackUint:HQ,czm_valueTransform:wQ,czm_vertexLogDepth:PQ,czm_windowToEyeCoordinates:vQ,czm_writeDepthClamp:KQ,czm_writeLogDepth:zQ,czm_writeNonPerspective:jQ};var Cnn=b(W(),1);function mDt(t,e){let n=t;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),e?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable ${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable ${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_OES_standard_derivatives @@ -3887,12 +3887,12 @@ ${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_OES_standa #endif ${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 ${n}`,n}var qQ=mDt;function qht(t){return t=t.replace(/\/\/.*/g,""),t.replace(/\/\*\*[\s\S]*?\*\//gm,function(e){let n=e.match(/\n/gm).length,i="";for(let o=0;o0;){let o=t.pop();n.push(o),o.requiredBy.length===0&&e.push(o)}for(;e.length>0;){let o=e.shift();t.push(o);for(let a=0;a=0;--o)i=`${i+e[o].glslSource} +`;return i})}function $ht(t,e,n){let i;for(let o=0;o0;){let o=t.pop();n.push(o),o.requiredBy.length===0&&e.push(o)}for(;e.length>0;){let o=e.shift();t.push(o);for(let a=0;a=0;--o)i=`${i+e[o].glslSource} `;return i.replace(n.glslSource,"")}function ept(t,e,n){let i,o,a="",s=t.sources;if(c(s))for(i=0,o=s.length;i-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(t,e,n)};ju.prototype.getDerivedShaderProgram=function(t,e){let n=t._cachedShader,i=e+n.keyword,o=this._shaders[i];if(c(o))return o.shaderProgram};ju.prototype.createDerivedShaderProgram=function(t,e,n){let i=t._cachedShader,o=e+i.keyword,a=n.vertexShaderSource,s=n.fragmentShaderSource,l=n.attributeLocations;typeof a=="string"&&(a=new Ve({sources:[a]})),typeof s=="string"&&(s=new Ve({sources:[s]}));let r=this._context,d=a.createCombinedVertexShader(r),m=s.createCombinedFragmentShader(r),h=new xn({gl:r._gl,logShaderCompilation:r.logShaderCompilation,debugShaders:r.debugShaders,vertexShaderSource:a,vertexShaderText:d,fragmentShaderSource:s,fragmentShaderText:m,attributeLocations:l}),Z={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(e),h._cachedShader=Z,this._shaders[o]=Z,h};function $6(t,e){let n=e.derivedKeywords,i=n.length;for(let o=0;o=0?(n=Math.floor(t/65536)*65536,e.high=n,e.low=t-n):(n=Math.floor(-t/65536)*65536,e.high=-n,e.low=t+n),e};var SR={high:0,low:0};LV.fromCartesian=function(t,e){c(e)||(e=new LV);let n=e.high,i=e.low;return LV.encode(t.x,SR),n.x=SR.high,i.x=SR.low,LV.encode(t.y,SR),n.y=SR.high,i.y=SR.low,LV.encode(t.z,SR),n.z=SR.high,i.z=SR.low,e};var t7=new LV;LV.writeElements=function(t,e,n){LV.fromCartesian(t,t7);let i=t7.high,o=t7.low;e[n]=i.x,e[n+1]=i.y,e[n+2]=i.z,e[n+3]=o.x,e[n+4]=o.y,e[n+5]=o.z};var Mi=LV;var Xin=R(W(),1);var yin=R(W(),1);var Gin=R(W(),1);var Zin=R(W(),1);function br(t,e){this.normal=p.clone(t),this.distance=e}br.fromPointNormal=function(t,e,n){let i=-p.dot(e,t);return c(n)?(p.clone(e,n.normal),n.distance=i,n):new br(e,i)};var RDt=new p;br.fromCartesian4=function(t,e){let n=p.fromCartesian4(t,RDt),i=t.w;return c(e)?(p.clone(n,e.normal),e.distance=i,e):new br(n,i)};br.getPointDistance=function(t,e){return p.dot(t.normal,e)+t.distance};var WDt=new p;br.projectPointOntoPlane=function(t,e,n){c(n)||(n=new p);let i=br.getPointDistance(t,e),o=p.multiplyByScalar(t.normal,i,WDt);return p.subtract(e,o,n)};var fDt=new L,FDt=new Rt,UDt=new p;br.transform=function(t,e,n){let i=t.normal,o=t.distance,a=L.inverseTranspose(e,fDt),s=Rt.fromElements(i.x,i.y,i.z,o,FDt);s=L.multiplyByVector(a,s,s);let l=p.fromCartesian4(s,UDt);return s=Rt.divideByScalar(s,p.magnitude(l),s),br.fromCartesian4(s,n)};br.clone=function(t,e){return c(e)?(p.clone(t.normal,e.normal),e.distance=t.distance,e):new br(t.normal,t.distance)};br.equals=function(t,e){return t.distance===e.distance&&p.equals(t.normal,e.normal)};br.ORIGIN_XY_PLANE=Object.freeze(new br(p.UNIT_Z,0));br.ORIGIN_YZ_PLANE=Object.freeze(new br(p.UNIT_X,0));br.ORIGIN_ZX_PLANE=Object.freeze(new br(p.UNIT_Y,0));var Kn=br;function Ep(t){this.planes=f(t,[])}var e2=[new p,new p,new p];p.clone(p.UNIT_X,e2[0]);p.clone(p.UNIT_Y,e2[1]);p.clone(p.UNIT_Z,e2[2]);var Vf=new p,GDt=new p,opt=new Kn(new p(1,0,0),0);Ep.fromBoundingSphere=function(t,e){c(e)||(e=new Ep);let n=e2.length,i=e.planes;i.length=2*n;let o=t.center,a=t.radius,s=0;for(let l=0;lQDt;++a){o=i;let s=o-e*Math.sin(o)-t,l=1-e*Math.cos(o);i=o-s/l}return o=i+n*k.TWO_PI,o}function YDt(t,e){let n=Math.floor(t/k.TWO_PI);t-=n*k.TWO_PI;let i=Math.cos(t)-e,o=Math.sin(t)*Math.sqrt(1-e*e),a=Math.atan2(o,i);return a=k.zeroToTwoPi(a),t<0&&(a-=k.TWO_PI),a+=n*k.TWO_PI,a}function xDt(t,e,n,i){let o=Math.cos(t),a=Math.sin(t),s=Math.cos(e),l=Math.sin(e),r=Math.cos(n),d=Math.sin(n);return c(i)?(i[0]=r*o-d*a*s,i[1]=d*o+r*a*s,i[2]=a*l,i[3]=-r*a-d*o*s,i[4]=-d*a+r*o*s,i[5]=o*l,i[6]=d*l,i[7]=-r*l,i[8]=s):i=new ot(r*o-d*a*s,-r*a-d*o*s,d*l,d*o+r*a*s,-d*a+r*o*s,-r*l,a*l,o*l,s),i}var XDt=1.0000010178*md,JDt=100.46645683*Cp,LDt=129597742283429e-5*Zh,lpt=16002,rpt=21863,dpt=32004,cpt=10931,mpt=14529,hpt=16368,ppt=15318,upt=32794,MDt=64*1e-7*md,_Dt=-152*1e-7*md,DDt=62*1e-7*md,ODt=-8*1e-7*md,HDt=32*1e-7*md,wDt=-41*1e-7*md,PDt=19*1e-7*md,vDt=-11*1e-7*md,KDt=-150*1e-7*md,zDt=-46*1e-7*md,jDt=68*1e-7*md,qDt=54*1e-7*md,$Dt=14*1e-7*md,tOt=24*1e-7*md,eOt=-28*1e-7*md,nOt=22*1e-7*md,Zpt=10,Vpt=16002,bpt=21863,Rpt=10931,Wpt=1473,fpt=32004,Fpt=4387,Upt=73,iOt=-325*1e-7,oOt=-322*1e-7,aOt=-79*1e-7,sOt=232*1e-7,lOt=-52*1e-7,rOt=97*1e-7,dOt=55*1e-7,cOt=-41*1e-7,mOt=-105*1e-7,hOt=-137*1e-7,pOt=258*1e-7,uOt=35*1e-7,ZOt=-116*1e-7,VOt=-88*1e-7,bOt=-112*1e-7,ROt=-80*1e-7,sE=new rt(0,0,Di.TAI);function WOt(t,e){Apt(t,sE);let i=(sE.dayNumber-LH.dayNumber+(sE.secondsOfDay-LH.secondsOfDay)/xi.SECONDS_PER_DAY)/(xi.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,a=XDt+MDt*Math.cos(lpt*o)+KDt*Math.sin(lpt*o)+_Dt*Math.cos(rpt*o)+zDt*Math.sin(rpt*o)+DDt*Math.cos(dpt*o)+jDt*Math.sin(dpt*o)+ODt*Math.cos(cpt*o)+qDt*Math.sin(cpt*o)+HDt*Math.cos(mpt*o)+$Dt*Math.sin(mpt*o)+wDt*Math.cos(hpt*o)+tOt*Math.sin(hpt*o)+PDt*Math.cos(ppt*o)+eOt*Math.sin(ppt*o)+vDt*Math.cos(upt*o)+nOt*Math.sin(upt*o),s=JDt+LDt*i+iOt*Math.cos(Zpt*o)+mOt*Math.sin(Zpt*o)+oOt*Math.cos(Vpt*o)+hOt*Math.sin(Vpt*o)+aOt*Math.cos(bpt*o)+pOt*Math.sin(bpt*o)+sOt*Math.cos(Rpt*o)+uOt*Math.sin(Rpt*o)+lOt*Math.cos(Wpt*o)+ZOt*Math.sin(Wpt*o)+rOt*Math.cos(fpt*o)+VOt*Math.sin(fpt*o)+dOt*Math.cos(Fpt*o)+bOt*Math.sin(Fpt*o)+cOt*Math.cos(Upt*o)+ROt*Math.sin(Upt*o),l=.0167086342-.0004203654*i,r=102.93734808*Cp+11612.3529*Zh*i,d=469.97289*Zh*i,m=174.87317577*Cp-8679.27034*Zh*i;return Tpt(a,l,d,r,m,s,e)}function Spt(t,e){Apt(t,sE);let i=(sE.dayNumber-LH.dayNumber+(sE.secondsOfDay-LH.secondsOfDay)/xi.SECONDS_PER_DAY)/xi.DAYS_PER_JULIAN_CENTURY,o=i*i,a=o*i,s=a*i,l=383397.7725+.004*i,r=.055545526-16e-9*i,d=5.15668983*Cp,m=-8e-5*i+.02966*o-42e-6*a-13e-8*s,h=83.35324312*Cp,Z=146434202669e-4*i-38.2702*o-.045047*a+21301e-8*s,b=125.04455501*Cp,u=-69679193631e-4*i+6.3602*o+.007625*a-3586e-8*s,F=218.31664563*Cp,U=17325593434847e-4*i-6.391*o+.006588*a-3169e-8*s,G=297.85019547*Cp+Zh*(1602961601209e-3*i-6.3706*o+.006593*a-3169e-8*s),A=93.27209062*Cp+Zh*(17395272628478e-4*i-12.7512*o-.001037*a+417e-8*s),T=134.96340251*Cp+Zh*(17179159232178e-4*i+31.8792*o+.051635*a-2447e-7*s),g=357.52910918*Cp+Zh*(1295965810481e-4*i-.5532*o+136e-6*a-1149e-8*s),C=310.17137918*Cp-Zh*(6967051436e-3*i+6.2068*o+.007618*a-3219e-8*s),y=2*G,Y=4*G,Q=6*G,J=2*T,M=3*T,V=4*T,E=2*A;l+=3400.4*Math.cos(y)-635.6*Math.cos(y-T)-235.6*Math.cos(T)+218.1*Math.cos(y-g)+181*Math.cos(y+T),r+=.014216*Math.cos(y-T)+.008551*Math.cos(y-J)-.001383*Math.cos(T)+.001356*Math.cos(y+T)-.001147*Math.cos(Y-M)-914e-6*Math.cos(Y-J)+869e-6*Math.cos(y-g-T)-627e-6*Math.cos(y)-394e-6*Math.cos(Y-V)+282e-6*Math.cos(y-g-J)-279e-6*Math.cos(G-T)-236e-6*Math.cos(J)+231e-6*Math.cos(Y)+229e-6*Math.cos(Q-V)-201e-6*Math.cos(J-E),m+=486.26*Math.cos(y-E)-40.13*Math.cos(y)+37.51*Math.cos(E)+25.73*Math.cos(J-E)+19.97*Math.cos(y-g-E),Z+=-55609*Math.sin(y-T)-34711*Math.sin(y-J)-9792*Math.sin(T)+9385*Math.sin(Y-M)+7505*Math.sin(Y-J)+5318*Math.sin(y+T)+3484*Math.sin(Y-V)-3417*Math.sin(y-g-T)-2530*Math.sin(Q-V)-2376*Math.sin(y)-2075*Math.sin(y-M)-1883*Math.sin(J)-1736*Math.sin(Q-5*T)+1626*Math.sin(g)-1370*Math.sin(Q-M),u+=-5392*Math.sin(y-E)-540*Math.sin(g)-441*Math.sin(y)+423*Math.sin(E)-288*Math.sin(J-E),U+=-3332.9*Math.sin(y)+1197.4*Math.sin(y-T)-662.5*Math.sin(g)+396.3*Math.sin(T)-218*Math.sin(y-g);let I=2*C,B=3*C;m+=46.997*Math.cos(C)*i-.614*Math.cos(y-E+C)*i+.614*Math.cos(y-E-C)*i-.0297*Math.cos(I)*o-.0335*Math.cos(C)*o+.0012*Math.cos(y-E+I)*o-16e-5*Math.cos(C)*a+4e-5*Math.cos(B)*a+4e-5*Math.cos(I)*a;let X=2.116*Math.sin(C)*i-.111*Math.sin(y-E-C)*i-.0015*Math.sin(C)*o;Z+=X,U+=X,u+=-520.77*Math.sin(C)*i+13.66*Math.sin(y-E+C)*i+1.12*Math.sin(y-C)*i-1.06*Math.sin(E-C)*i+.66*Math.sin(I)*o+.371*Math.sin(C)*o-.035*Math.sin(y-E+I)*o-.015*Math.sin(y-E+C)*o+.0014*Math.sin(C)*a-.0011*Math.sin(B)*a-9e-4*Math.sin(I)*a,l*=IDt;let _=d+m*Zh,P=h+Z*Zh,w=F+U*Zh,z=b+u*Zh;return Tpt(l,r,_,P,z,w,e)}var Gpt=.012300034,fOt=Gpt/(Gpt+1)*-1;function FOt(t,e){return e=Spt(t,e),p.multiplyByScalar(e,fOt,e)}var gpt=new ot(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),n2=new p;n7.computeSunPositionInEarthInertialFrame=function(t,e){return c(t)||(t=rt.now()),c(e)||(e=new p),n2=WOt(t,n2),e=p.negate(n2,e),FOt(t,n2),p.subtract(e,n2,e),ot.multiplyByVector(gpt,e,e),e};n7.computeMoonPositionInEarthInertialFrame=function(t,e){return c(t)||(t=rt.now()),e=Spt(t,e),ot.multiplyByVector(gpt,e,e),e};var _V=n7;var Kin=R(W(),1),MH={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};MH.getMorphTime=function(t){return t===MH.SCENE3D?1:t===MH.MORPHING?void 0:0};var ut=Object.freeze(MH);var $in=R(W(),1);function UOt(t){t=f(t,f.EMPTY_OBJECT),this.color=v.clone(f(t.color,v.WHITE)),this.intensity=f(t.intensity,2)}var gR=UOt;function lE(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Fe,this._viewportCartesian4=new Rt,this._viewportDirty=!1,this._viewportOrthographicMatrix=L.clone(L.IDENTITY),this._viewportTransformation=L.clone(L.IDENTITY),this._model=L.clone(L.IDENTITY),this._view=L.clone(L.IDENTITY),this._inverseView=L.clone(L.IDENTITY),this._projection=L.clone(L.IDENTITY),this._infiniteProjection=L.clone(L.IDENTITY),this._entireFrustum=new K,this._currentFrustum=new K,this._frustumPlanes=new Rt,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=ot.clone(L.IDENTITY),this._view3DDirty=!0,this._view3D=new L,this._inverseView3DDirty=!0,this._inverseView3D=new L,this._inverseModelDirty=!0,this._inverseModel=new L,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new ot,this._viewRotation=new ot,this._inverseViewRotation=new ot,this._viewRotation3D=new ot,this._inverseViewRotation3D=new ot,this._inverseProjectionDirty=!0,this._inverseProjection=new L,this._modelViewDirty=!0,this._modelView=new L,this._modelView3DDirty=!0,this._modelView3D=new L,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new L,this._inverseModelViewDirty=!0,this._inverseModelView=new L,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new L,this._viewProjectionDirty=!0,this._viewProjection=new L,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new L,this._modelViewProjectionDirty=!0,this._modelViewProjection=new L,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new L,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new L,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new L,this._normalDirty=!0,this._normal=new ot,this._normal3DDirty=!0,this._normal3D=new ot,this._inverseNormalDirty=!0,this._inverseNormal=new ot,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new ot,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new Mi,this._cameraPosition=new p,this._sunPositionWC=new p,this._sunPositionColumbusView=new p,this._sunDirectionWC=new p,this._sunDirectionEC=new p,this._moonDirectionEC=new p,this._lightDirectionWC=new p,this._lightDirectionEC=new p,this._lightColor=new p,this._lightColorHdr=new p,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new p,this._cameraRight=new p,this._cameraUp=new p,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new K,this._eyeEllipsoidNormalEC=new p,this._eyeEllipsoidCurvature=new K,this._modelToEnu=new L,this._enuToModel=new L,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new v,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsDimensions=new K,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new p,this._atmosphereRayleighScaleHeight=new p,this._atmosphereMieCoefficient=new p,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(lE.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(t){if(!Fe.equals(t,this._viewport)){Fe.clone(t,this._viewport);let e=this._viewport,n=this._viewportCartesian4;n.x=e.x,n.y=e.y,n.z=e.width,n.w=e.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return Cpt(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return Cpt(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(t){L.clone(t,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,L.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let t=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,L.getMatrix3(this.inverseModel,t),ot.transpose(t,t)),t}},view:{get:function(){return this._view}},view3D:{get:function(){return i7(this),this._view3D}},viewRotation:{get:function(){return i7(this),this._viewRotation}},viewRotation3D:{get:function(){return i7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return ypt(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return ypt(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return BOt(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return QOt(this),this._modelView}},modelView3D:{get:function(){return kOt(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return MOt(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return YOt(this),this._inverseModelView}},inverseModelView3D:{get:function(){return xOt(this),this._inverseModelView3D}},viewProjection:{get:function(){return XOt(this),this._viewProjection}},inverseViewProjection:{get:function(){return JOt(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return LOt(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return _Ot(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return DOt(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return OOt(this),this._modelViewInfiniteProjection}},normal:{get:function(){return HOt(this),this._normal}},normal3D:{get:function(){return wOt(this),this._normal3D}},inverseNormal:{get:function(){return POt(this),this._inverseNormal}},inverseNormal3D:{get:function(){return vOt(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return Npt(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return Npt(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsDimensions:{get:function(){return this._specularEnvironmentMapsDimensions}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return f(this._ellipsoid,mt.WGS84)}}});function GOt(t,e){L.clone(e,t._view),L.getMatrix3(e,t._viewRotation),t._view3DDirty=!0,t._inverseView3DDirty=!0,t._modelViewDirty=!0,t._modelView3DDirty=!0,t._modelViewRelativeToEyeDirty=!0,t._inverseModelViewDirty=!0,t._inverseModelView3DDirty=!0,t._viewProjectionDirty=!0,t._inverseViewProjectionDirty=!0,t._modelViewProjectionDirty=!0,t._modelViewProjectionRelativeToEyeDirty=!0,t._modelViewInfiniteProjectionDirty=!0,t._normalDirty=!0,t._inverseNormalDirty=!0,t._normal3DDirty=!0,t._inverseNormal3DDirty=!0}function AOt(t,e){L.clone(e,t._inverseView),L.getMatrix3(e,t._inverseViewRotation)}function TOt(t,e){L.clone(e,t._projection),t._inverseProjectionDirty=!0,t._viewProjectionDirty=!0,t._inverseViewProjectionDirty=!0,t._modelViewProjectionDirty=!0,t._modelViewProjectionRelativeToEyeDirty=!0}function SOt(t,e){L.clone(e,t._infiniteProjection),t._modelViewInfiniteProjectionDirty=!0}var Ept=new p,gOt=new L;function EOt(t,e){p.clone(e.positionWC,t._cameraPosition),p.clone(e.directionWC,t._cameraDirection),p.clone(e.rightWC,t._cameraRight),p.clone(e.upWC,t._cameraUp);let n=t._ellipsoid,i,o=e.positionCartographic;if(c(o)?(t._eyeHeight=o.height,t._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,t._eyeEllipsoidNormalEC),i=p.fromRadians(o.longitude,o.latitude,0,n,Ept)):(t._eyeHeight=-n.maximumRadius,p.magnitude(e.positionWC)>0&&(t._eyeEllipsoidNormalEC=p.normalize(e.positionWC,t._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(e.positionWC,Ept)),t._encodedCameraPositionMCDirty=!0,!c(i))return;t._eyeEllipsoidNormalEC=ot.multiplyByVector(t._viewRotation,t._eyeEllipsoidNormalEC,t._eyeEllipsoidNormalEC);let a=Pe.eastNorthUpToFixedFrame(i,n,gOt);t._enuToModel=L.multiplyTransformation(t.inverseModel,a,t._enuToModel),t._modelToEnu=L.inverseTransformation(t._enuToModel,t._modelToEnu),k.equalsEpsilon(n._radii.x,n._radii.y,k.EPSILON15)&&(t._eyeEllipsoidCurvature=n.getLocalCurvature(i,t._eyeEllipsoidCurvature))}var i2=new ot,COt=new gt;function IOt(t,e){c(Pe.computeIcrfToFixedMatrix(e.time,i2))||(i2=Pe.computeTemeToPseudoFixedMatrix(e.time,i2));let n=_V.computeSunPositionInEarthInertialFrame(e.time,t._sunPositionWC);ot.multiplyByVector(i2,n,n),p.normalize(n,t._sunDirectionWC),n=ot.multiplyByVector(t.viewRotation3D,n,t._sunDirectionEC),p.normalize(n,n),n=_V.computeMoonPositionInEarthInertialFrame(e.time,t._moonDirectionEC),ot.multiplyByVector(i2,n,n),ot.multiplyByVector(t.viewRotation3D,n,n),p.normalize(n,n);let i=e.mapProjection,a=i.ellipsoid.cartesianToCartographic(t._sunPositionWC,COt);i.project(a,t._sunPositionColumbusView)}lE.prototype.updateCamera=function(t){GOt(this,t.viewMatrix),AOt(this,t.inverseViewMatrix),EOt(this,t),this._entireFrustum.x=t.frustum.near,this._entireFrustum.y=t.frustum.far,this.updateFrustum(t.frustum),this._orthographicIn3D=this._mode!==ut.SCENE2D&&t.frustum instanceof wn};lE.prototype.updateFrustum=function(t){TOt(this,t.projectionMatrix),c(t.infiniteProjectionMatrix)&&SOt(this,t.infiniteProjectionMatrix),this._currentFrustum.x=t.near,this._currentFrustum.y=t.far,this._farDepthFromNearPlusOne=t.far-t.near+1,this._log2FarDepthFromNearPlusOne=k.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let e=t.offCenterFrustum;c(e)&&(t=e),this._frustumPlanes.x=t.top,this._frustumPlanes.y=t.bottom,this._frustumPlanes.z=t.left,this._frustumPlanes.w=t.right};lE.prototype.updatePass=function(t){this._pass=t};var NOt=[],yOt=new gR;lE.prototype.update=function(t){this._mode=t.mode,this._mapProjection=t.mapProjection,this._ellipsoid=t.mapProjection.ellipsoid,this._pixelRatio=t.pixelRatio;let e=t.camera;this.updateCamera(e),t.mode===ut.SCENE2D?(this._frustum2DWidth=e.frustum.right-e.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),IOt(this,t);let n=f(t.light,yOt);n instanceof gR?(this._lightDirectionWC=p.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=p.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=p.normalize(p.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=ot.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=p.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=p.multiplyByScalar(o,n.intensity,o);let a=p.maximumComponent(o);a>1?p.divideByScalar(o,a,this._lightColor):p.clone(o,this._lightColor);let s=t.brdfLutGenerator,l=c(s)?s.colorTexture:void 0;this._brdfLut=l,this._environmentMap=f(t.environmentMap,t.context.defaultCubeMap),this._sphericalHarmonicCoefficients=f(t.sphericalHarmonicCoefficients,NOt),this._specularEnvironmentMaps=t.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=t.specularEnvironmentMapsMaximumLOD,c(this._specularEnvironmentMaps)&&K.clone(this._specularEnvironmentMaps.dimensions,this._specularEnvironmentMapsDimensions),this._fogDensity=t.fog.density,this._fogMinimumBrightness=t.fog.minimumBrightness;let r=t.atmosphere;c(r)&&(this._atmosphereHsbShift=p.fromElements(r.hueShift,r.saturationShift,r.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=r.lightIntensity,this._atmosphereRayleighCoefficient=p.clone(r.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=r.rayleighScaleHeight,this._atmosphereMieCoefficient=p.clone(r.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=r.mieScaleHeight,this._atmosphereMieAnisotropy=r.mieAnisotropy,this._atmosphereDynamicLighting=r.dynamicLighting),this._invertClassificationColor=t.invertClassificationColor,this._frameState=t,this._temeToPseudoFixed=Pe.computeTemeToPseudoFixedMatrix(t.time,this._temeToPseudoFixed),this._splitPosition=t.splitPosition*t.context.drawingBufferWidth;let d=e.frustum.fov,m=this._viewport,h;c(d)?m.height>m.width?h=Math.tan(.5*d)*2/m.height:h=Math.tan(.5*d)*2/m.width:h=1/Math.max(m.width,m.height),this._geometricToleranceOverMeter=h*t.maximumScreenSpaceError,v.clone(t.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=t.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function Cpt(t){if(t._viewportDirty){let e=t._viewport;L.computeOrthographicOffCenter(e.x,e.x+e.width,e.y,e.y+e.height,0,1,t._viewportOrthographicMatrix),L.computeViewportTransformation(e,0,1,t._viewportTransformation),t._viewportDirty=!1}}function BOt(t){t._inverseProjectionDirty&&(t._inverseProjectionDirty=!1,t._mode!==ut.SCENE2D&&t._mode!==ut.MORPHING&&!t._orthographicIn3D?L.inverse(t._projection,t._inverseProjection):L.clone(L.ZERO,t._inverseProjection))}function QOt(t){t._modelViewDirty&&(t._modelViewDirty=!1,L.multiplyTransformation(t._view,t._model,t._modelView))}function kOt(t){t._modelView3DDirty&&(t._modelView3DDirty=!1,L.multiplyTransformation(t.view3D,t._model,t._modelView3D))}function YOt(t){t._inverseModelViewDirty&&(t._inverseModelViewDirty=!1,L.inverse(t.modelView,t._inverseModelView))}function xOt(t){t._inverseModelView3DDirty&&(t._inverseModelView3DDirty=!1,L.inverse(t.modelView3D,t._inverseModelView3D))}function XOt(t){t._viewProjectionDirty&&(t._viewProjectionDirty=!1,L.multiply(t._projection,t._view,t._viewProjection))}function JOt(t){t._inverseViewProjectionDirty&&(t._inverseViewProjectionDirty=!1,L.inverse(t.viewProjection,t._inverseViewProjection))}function LOt(t){t._modelViewProjectionDirty&&(t._modelViewProjectionDirty=!1,L.multiply(t._projection,t.modelView,t._modelViewProjection))}function MOt(t){if(t._modelViewRelativeToEyeDirty){t._modelViewRelativeToEyeDirty=!1;let e=t.modelView,n=t._modelViewRelativeToEye;n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=0,n[13]=0,n[14]=0,n[15]=e[15]}}function _Ot(t){t._inverseModelViewProjectionDirty&&(t._inverseModelViewProjectionDirty=!1,L.inverse(t.modelViewProjection,t._inverseModelViewProjection))}function DOt(t){t._modelViewProjectionRelativeToEyeDirty&&(t._modelViewProjectionRelativeToEyeDirty=!1,L.multiply(t._projection,t.modelViewRelativeToEye,t._modelViewProjectionRelativeToEye))}function OOt(t){t._modelViewInfiniteProjectionDirty&&(t._modelViewInfiniteProjectionDirty=!1,L.multiply(t._infiniteProjection,t.modelView,t._modelViewInfiniteProjection))}function HOt(t){if(t._normalDirty){t._normalDirty=!1;let e=t._normal;L.getMatrix3(t.inverseModelView,e),ot.transpose(e,e)}}function wOt(t){if(t._normal3DDirty){t._normal3DDirty=!1;let e=t._normal3D;L.getMatrix3(t.inverseModelView3D,e),ot.transpose(e,e)}}function POt(t){if(t._inverseNormalDirty){t._inverseNormalDirty=!1;let e=t._inverseNormal;L.getMatrix3(t.modelView,e),ot.transpose(e,e)}}function vOt(t){if(t._inverseNormal3DDirty){t._inverseNormal3DDirty=!1;let e=t._inverseNormal3D;L.getMatrix3(t.modelView3D,e),ot.transpose(e,e)}}var Ipt=new p;function Npt(t){t._encodedCameraPositionMCDirty&&(t._encodedCameraPositionMCDirty=!1,L.multiplyByPoint(t.inverseModel,t._cameraPosition,Ipt),Mi.fromCartesian(Ipt,t._encodedCameraPositionMC))}var KOt=new p,zOt=new p,jOt=new p,qOt=new p,$Ot=new gt,tHt=new p,eHt=new L;function nHt(t,e,n,i,o,a,s,l){let r=KOt;r.x=t.y,r.y=t.z,r.z=t.x;let d=zOt;d.x=n.y,d.y=n.z,d.z=n.x;let m=jOt;m.x=i.y,m.y=i.z,m.z=i.x;let h=qOt;h.x=e.y,h.y=e.z,h.z=e.x,a===ut.SCENE2D&&(r.z=o*.5);let Z=s.unproject(r,$Ot);Z.longitude=k.clamp(Z.longitude,-Math.PI,Math.PI),Z.latitude=k.clamp(Z.latitude,-k.PI_OVER_TWO,k.PI_OVER_TWO);let b=s.ellipsoid,u=b.cartographicToCartesian(Z,tHt),F=Pe.eastNorthUpToFixedFrame(u,b,eHt);return L.multiplyByPointAsVector(F,d,d),L.multiplyByPointAsVector(F,m,m),L.multiplyByPointAsVector(F,h,h),c(l)||(l=new L),l[0]=d.x,l[1]=m.x,l[2]=-h.x,l[3]=0,l[4]=d.y,l[5]=m.y,l[6]=-h.y,l[7]=0,l[8]=d.z,l[9]=m.z,l[10]=-h.z,l[11]=0,l[12]=-p.dot(d,u),l[13]=-p.dot(m,u),l[14]=p.dot(h,u),l[15]=1,l}function i7(t){t._view3DDirty&&(t._mode===ut.SCENE3D?L.clone(t._view,t._view3D):nHt(t._cameraPosition,t._cameraDirection,t._cameraRight,t._cameraUp,t._frustum2DWidth,t._mode,t._mapProjection,t._view3D),L.getMatrix3(t._view3D,t._viewRotation3D),t._view3DDirty=!1)}function ypt(t){t._inverseView3DDirty&&(L.inverseTransformation(t.view3D,t._inverseView3D),L.getMatrix3(t._inverseView3D,t._inverseViewRotation3D),t._inverseView3DDirty=!1)}var o2=lE;var yon=R(W(),1);function iHt(t,e,n,i){let o=c(e.vertexBuffer),a=c(e.value),s=e.value?e.value.length:e.componentsPerAttribute,l={index:f(e.index,n),enabled:f(e.enabled,!0),vertexBuffer:e.vertexBuffer,value:a?e.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:f(e.componentDatatype,it.FLOAT),normalize:f(e.normalize,!1),offsetInBytes:f(e.offsetInBytes,0),strideInBytes:f(e.strideInBytes,0),instanceDivisor:f(e.instanceDivisor,0)};if(o)l.vertexAttrib=function(r){let d=this.index;r.bindBuffer(r.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),r.vertexAttribPointer(d,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),r.enableVertexAttribArray(d),this.instanceDivisor>0&&(i.glVertexAttribDivisor(d,this.instanceDivisor),i._vertexAttribDivisors[d]=this.instanceDivisor,i._previousDrawInstanced=!0)},l.disableVertexAttribArray=function(r){r.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(l.componentsPerAttribute){case 1:l.vertexAttrib=function(r){r.vertexAttrib1fv(this.index,this.value)};break;case 2:l.vertexAttrib=function(r){r.vertexAttrib2fv(this.index,this.value)};break;case 3:l.vertexAttrib=function(r){r.vertexAttrib3fv(this.index,this.value)};break;case 4:l.vertexAttrib=function(r){r.vertexAttrib4fv(this.index,this.value)};break}l.disableVertexAttribArray=function(r){}}t.push(l)}function Qpt(t,e,n){for(let i=0;i0&&(r=!0),c(s[a].value)&&(d=!0);let h;e.vertexArrayObject&&(h=e.glCreateVertexArray(),e.glBindVertexArray(h),Qpt(n,s,o),e.glBindVertexArray(null)),this._numberOfVertices=l,this._hasInstancedAttributes=r,this._hasConstantAttributes=d,this._context=e,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function Bpt(t){return t.values.length/t.componentsPerAttribute}function oHt(t){return it.getSizeInBytes(t.componentDatatype)*t.componentsPerAttribute}function aHt(t){let e,n,i,o=[];for(n in t)t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)&&(o.push(n),t[n].componentDatatype===it.DOUBLE&&(t[n].componentDatatype=it.FLOAT,t[n].values=it.createTypedArray(it.FLOAT,t[n].values)));let a,s=o.length;if(s>0)for(a=Bpt(t[o[0]]),e=1;e0){let d=it.getSizeInBytes(t[o[0]].componentDatatype),m=l%d;m!==0&&(l+=d-m);let h=a*l,Z=new ArrayBuffer(h),b={};for(e=0;e=k.SIXTY_FOUR_KILOBYTES&&e.elementIndexUint?Z=we.createIndexBuffer({context:e,typedArray:new Uint32Array(b),usage:i,indexDatatype:re.UNSIGNED_INT}):Z=we.createIndexBuffer({context:e,typedArray:new Uint16Array(b),usage:i,indexDatatype:re.UNSIGNED_SHORT})),new ER({context:e,attributes:m,indexBuffer:Z})};Object.defineProperties(ER.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});ER.prototype.getAttribute=function(t){return this._attributes[t]};function sHt(t){let e=t._context,n=t._hasInstancedAttributes;if(!n&&!e._previousDrawInstanced)return;e._previousDrawInstanced=n;let i=e._vertexAttribDivisors,o=t._attributes,a=Sn.maximumVertexAttributes,s;if(n){let l=o.length;for(s=0;s0&&(e.glVertexAttribDivisor(s,0),i[s]=0)}function lHt(t,e){let n=t._attributes,i=n.length;for(let o=0;o"u")throw new St("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",a=t.getContext(o,e);if(!c(a))throw new St("The browser supports WebGL, but initialization failed.");return a}function dHt(t,e){let n="WebGL Error: ";switch(e){case t.INVALID_ENUM:n+="INVALID_ENUM";break;case t.INVALID_VALUE:n+="INVALID_VALUE";break;case t.INVALID_OPERATION:n+="INVALID_OPERATION";break;case t.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case t.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${e})`}return n}function cHt(t,e,n,i){let o=`${dHt(t,i)}: ${e.name}(`;for(let a=0;a=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(t){this._throwOnWebGLError=t,this._gl=pHt(this._originalGLContext,t?mHt:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new hn({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new hn({context:this,pixelFormat:Ye.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new hn({context:this,pixelFormat:Ye.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let t={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new Ld({context:this,source:{positiveX:t,negativeX:t,positiveY:t,negativeY:t,positiveZ:t,negativeZ:t},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return uHt}}});function kpt(t,e,n,i){let o=t._currentRenderState,a=t._currentPassState;t._currentRenderState=e,t._currentPassState=n,he.partialApply(t._gl,o,e,a,n,i)}var o7;typeof WebGLRenderingContext<"u"&&(o7=[pt.BACK]);function a7(t,e){if(e!==t._currentFramebuffer){t._currentFramebuffer=e;let n=o7;if(c(e))e._bind(),n=e._getActiveColorAttachments();else{let i=t._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}t.drawBuffers&&t.glDrawBuffers(n)}}var ZHt=new ao;Vh.prototype.clear=function(t,e){t=f(t,ZHt),e=f(e,this._defaultPassState);let n=this._gl,i=0,o=t.color,a=t.depth,s=t.stencil;c(o)&&(v.equals(this._clearColor,o)||(v.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),c(a)&&(a!==this._clearDepth&&(this._clearDepth=a,n.clearDepth(a)),i|=n.DEPTH_BUFFER_BIT),c(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let l=f(t.renderState,this._defaultRenderState);kpt(this,l,e,!0);let r=f(t.framebuffer,e.framebuffer);a7(this,r),n.clear(i)};function VHt(t,e,n,i,o){a7(t,e),kpt(t,o,n,!1),i._bind(),t._maxFrameTextureUnitIndex=Math.max(t._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function bHt(t,e,n,i){let o=e._primitiveType,a=e._vertexArray,s=e._offset,l=e._count,r=e.instanceCount;t._us.model=f(e._modelMatrix,L.IDENTITY),n._setUniforms(i,t._us,t.validateShaderProgram),a._bind();let d=a.indexBuffer;c(d)?(s=s*d.bytesPerIndex,c(l)?l=Math.min(l,d.numberOfIndices):l=d.numberOfIndices,r===0?t._gl.drawElements(o,l,d.indexDatatype,s):t.glDrawElementsInstanced(o,l,d.indexDatatype,s,r)):(c(l)?l=Math.min(l,a.numberOfVertices):l=a.numberOfVertices,r===0?t._gl.drawArrays(o,s,l):t.glDrawArraysInstanced(o,s,l,r)),a._unBind()}Vh.prototype.draw=function(t,e,n,i){e=f(e,this._defaultPassState);let o=f(t._framebuffer,e.framebuffer),a=f(t._renderState,this._defaultRenderState);n=f(n,t._shaderProgram),i=f(i,t._uniformMap),VHt(this,o,e,n,a),bHt(this,t,n,i)};Vh.prototype.endFrame=function(){let t=this._gl;t.useProgram(null),this._currentFramebuffer=void 0,t.bindFramebuffer(t.FRAMEBUFFER,null);let e=o7;this.drawBuffers&&this.glDrawBuffers(e);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i0&&(l=s.getColorTexture(0).pixelDatatype);let r=Ye.createTypedArray(Ye.RGBA,l,o,a);return a7(this,s),e.readPixels(n,i,o,a,Ye.RGBA,Ue.toWebGLConstant(l,this),r),r};var Ypt={position:0,textureCoordinates:1};Vh.prototype.getViewportQuadVertexArray=function(){let t=this.cache.viewportQuad_vertexArray;if(!c(t)){let e=new _e({attributes:{position:new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:le.TRIANGLES});t=Ki.fromGeometry({context:this,geometry:e,attributeLocations:Ypt,bufferUsage:ce.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=t}return t};Vh.prototype.createViewportQuadCommand=function(t,e){return e=f(e,f.EMPTY_OBJECT),new Ee({vertexArray:this.getViewportQuadVertexArray(),primitiveType:le.TRIANGLES,renderState:e.renderState,shaderProgram:xn.fromCache({context:this,vertexShaderSource:GG,fragmentShaderSource:t,attributeLocations:Ypt}),uniformMap:e.uniformMap,owner:e.owner,framebuffer:e.framebuffer,pass:e.pass})};Vh.prototype.getObjectByPickColor=function(t){return this._pickObjects[t.toRgba()]};function s7(t,e,n){this._pickObjects=t,this.key=e,this.color=n}Object.defineProperties(s7.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(t){this._pickObjects[this.key]=t}}});s7.prototype.destroy=function(){delete this._pickObjects[this.key]};Vh.prototype.createPickId=function(t){++this._nextPickColor[0];let e=this._nextPickColor[0];if(e===0)throw new St("Out of unique Pick IDs.");return this._pickObjects[e]=t,new s7(this._pickObjects,e,v.fromRgba(e))};Vh.prototype.isDestroyed=function(){return!1};Vh.prototype.destroy=function(){let t=this.cache;for(let e in t)if(t.hasOwnProperty(e)){let n=t[e];c(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),At(this)};Vh._deprecationWarning=Zr;var a2=Vh;var Jan=R(W(),1);var ban=R(W(),1);function rE(t){t=f(t,f.EMPTY_OBJECT);let e=t.context,n=t.width,i=t.height;this._width=n,this._height=i;let o=t.colorRenderbuffers,a=t.colorTextures;if(c(o)!==c(a))throw new Ut("Both color renderbuffer and texture attachments must be provided.");let s=t.depthStencilRenderbuffer,l=t.depthStencilTexture;if(c(s)!==c(l))throw new Ut("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new Lr({context:e,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:t.destroyAttachments}),this._colorFramebuffer=new Lr({context:e,colorTextures:a,depthStencilTexture:l,destroyAttachments:t.destroyAttachments})}rE.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};rE.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};rE.prototype.blitFramebuffers=function(t,e){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=t._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),c(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(e?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};rE.prototype.isDestroyed=function(){return!1};rE.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),At(this)};var s2=rE;var gan=R(W(),1);var fan=R(W(),1);var Gm={RGBA4:pt.RGBA4,RGBA8:pt.RGBA8,RGBA16F:pt.RGBA16F,RGBA32F:pt.RGBA32F,RGB5_A1:pt.RGB5_A1,RGB565:pt.RGB565,DEPTH_COMPONENT16:pt.DEPTH_COMPONENT16,STENCIL_INDEX8:pt.STENCIL_INDEX8,DEPTH_STENCIL:pt.DEPTH_STENCIL,DEPTH24_STENCIL8:pt.DEPTH24_STENCIL8,validate:function(t){return t===Gm.RGBA4||t===Gm.RGBA8||t===Gm.RGBA16F||t===Gm.RGBA32F||t===Gm.RGB5_A1||t===Gm.RGB565||t===Gm.DEPTH_COMPONENT16||t===Gm.STENCIL_INDEX8||t===Gm.DEPTH_STENCIL||t===Gm.DEPTH24_STENCIL8},getColorFormat:function(t){return t===pt.FLOAT?Gm.RGBA32F:t===pt.HALF_FLOAT_OES?Gm.RGBA16F:Gm.RGBA8}},Sc=Object.freeze(Gm);function l2(t){t=f(t,f.EMPTY_OBJECT);let n=t.context._gl,i=Sn.maximumRenderbufferSize,o=f(t.format,Sc.RGBA4),a=c(t.width)?t.width:n.drawingBufferWidth,s=c(t.height)?t.height:n.drawingBufferHeight,l=f(t.numSamples,1);this._gl=n,this._format=o,this._width=a,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),l>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,l,o,a,s):n.renderbufferStorage(n.RENDERBUFFER,o,a,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(l2.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});l2.prototype._getRenderbuffer=function(){return this._renderbuffer};l2.prototype.isDestroyed=function(){return!1};l2.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),At(this)};var bh=l2;function Kl(t){t=f(t,f.EMPTY_OBJECT),this._numSamples=f(t.numSamples,1),this._colorAttachmentsLength=f(t.colorAttachmentsLength,1),this._color=f(t.color,!0),this._depth=f(t.depth,!1),this._depthStencil=f(t.depthStencil,!1),this._supportsDepthTexture=f(t.supportsDepthTexture,!1),this._createColorAttachments=f(t.createColorAttachments,!0),this._createDepthAttachments=f(t.createDepthAttachments,!0),this._pixelDatatype=t.pixelDatatype,this._pixelFormat=t.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Kl.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Kl.prototype.isDirty=function(t,e,n,i,o){n=f(n,1);let a=this._width!==t||this._height!==e,s=this._numSamples!==n,l=c(i)&&this._pixelDatatype!==i||c(o)&&this._pixelFormat!==o,r=n===1?c(this._framebuffer):c(this._multisampleFramebuffer);return this._attachmentsDirty||a||s||l||!r||this._color&&!c(this._colorTextures[0])};Kl.prototype.update=function(t,e,n,i,o,a){if(i=t.msaa?f(i,1):1,o=f(o,this._color?f(this._pixelDatatype,Ue.UNSIGNED_BYTE):void 0),a=f(a,this._color?f(this._pixelFormat,Ye.RGBA):void 0),this.isDirty(e,n,i,o,a)){if(this.destroy(),this._width=e,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=a,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s1){let l=Sc.getColorFormat(o);this._colorRenderbuffers[s]=new bh({context:t,width:e,height:n,format:l,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&t.depthTexture?(this._depthStencilTexture=new hn({context:t,width:e,height:n,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8,sampler:Hn.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new bh({context:t,width:e,height:n,format:Sc.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new bh({context:t,width:e,height:n,format:Sc.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&t.depthTexture?this._depthTexture=new hn({context:t,width:e,height:n,pixelFormat:Ye.DEPTH_COMPONENT,pixelDatatype:Ue.UNSIGNED_INT,sampler:Hn.NEAREST}):this._depthRenderbuffer=new bh({context:t,width:e,height:n,format:Sc.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new s2({context:t,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new Lr({context:t,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Kl.prototype.getColorTexture=function(t){return t=f(t,0),this._colorTextures[t]};Kl.prototype.setColorTexture=function(t,e){e=f(e,0),this._attachmentsDirty=t!==this._colorTextures[e],this._colorTextures[e]=t};Kl.prototype.getColorRenderbuffer=function(t){return t=f(t,0),this._colorRenderbuffers[t]};Kl.prototype.setColorRenderbuffer=function(t,e){e=f(e,0),this._attachmentsDirty=t!==this._colorRenderbuffers[e],this._colorRenderbuffers[e]=t};Kl.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Kl.prototype.setDepthRenderbuffer=function(t){this._attachmentsDirty=t!==this._depthRenderbuffer,this._depthRenderbuffer=t};Kl.prototype.getDepthTexture=function(){return this._depthTexture};Kl.prototype.setDepthTexture=function(t){this._attachmentsDirty=t!==this._depthTexture,this._depthTexture=t};Kl.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Kl.prototype.setDepthStencilRenderbuffer=function(t){this._attachmentsDirty=t!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=t};Kl.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Kl.prototype.setDepthStencilTexture=function(t){this._attachmentsDirty=t!==this._depthStencilTexture,this._depthStencilTexture=t};Kl.prototype.prepareTextures=function(t,e){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(t,e)};Kl.prototype.clear=function(t,e,n){let i=e.framebuffer;e.framebuffer=this.framebuffer,e.execute(t,n),e.framebuffer=i};Kl.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Kl.prototype.destroy=function(){if(this._color){let t,e=this._colorTextures.length;for(t=0;t0?it.getSizeInBytes(t[0].componentDatatype):0,o=i>0?e%i:0,a=o===0?0:i-o;return e+=a,e};Rr._createArrayViews=function(t,e){let n=[],i=0,o=t.length;for(let a=0;a0){let n=new ArrayBuffer(e*t.vertexSizeInBytes);if(c(t.arrayBuffer)){let a=new Uint8Array(n),s=new Uint8Array(t.arrayBuffer),l=s.length;for(let r=0;r0){e.needsCommit=!1;let n=e.vertexBuffer,i=t._size*e.vertexSizeInBytes,o=c(n);if(!o||n.sizeInBytes0){let i=t.vertexSizeInBytes*e,o=t.vertexSizeInBytes*n;t.vertexBuffer.copyFromArrayView(new Uint8Array(t.arrayBuffer,i,o),i)}}Rr.prototype.endSubCommits=function(){let t=this._allBuffers;for(let e=0,n=t.length;e0&&(this._hash={},t.length=0)};var qe=CG;var xsn=R(W(),1);function Rh(t,e){t=f(t,0),this._near=t,e=f(e,Number.MAX_VALUE),this._far=e}Object.defineProperties(Rh.prototype,{near:{get:function(){return this._near},set:function(t){this._near=t}},far:{get:function(){return this._far},set:function(t){this._far=t}}});Rh.packedLength=2;Rh.pack=function(t,e,n){return n=f(n,0),e[n++]=t.near,e[n]=t.far,e};Rh.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Rh),n.near=t[e++],n.far=t[e],n};Rh.equals=function(t,e){return t===e||c(t)&&c(e)&&t.near===e.near&&t.far===e.far};Rh.clone=function(t,e){if(c(t))return c(e)||(e=new Rh),e.near=t.near,e.far=t.far,e};Rh.prototype.clone=function(t){return Rh.clone(this,t)};Rh.prototype.equals=function(t){return Rh.equals(this,t)};var Wn=Rh;var Msn=R(W(),1);function Ip(t,e,n,i){this.near=f(t,0),this.nearValue=f(e,0),this.far=f(n,1),this.farValue=f(i,0)}Ip.clone=function(t,e){if(c(t))return c(e)?(e.near=t.near,e.nearValue=t.nearValue,e.far=t.far,e.farValue=t.farValue,e):new Ip(t.near,t.nearValue,t.far,t.farValue)};Ip.packedLength=4;Ip.pack=function(t,e,n){return n=f(n,0),e[n++]=t.near,e[n++]=t.nearValue,e[n++]=t.far,e[n]=t.farValue,e};Ip.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Ip),n.near=t[e++],n.nearValue=t[e++],n.far=t[e++],n.farValue=t[e],n};Ip.equals=function(t,e){return t===e||c(t)&&c(e)&&t.near===e.near&&t.nearValue===e.nearValue&&t.far===e.far&&t.farValue===e.farValue};Ip.prototype.clone=function(t){return Ip.clone(this,t)};Ip.prototype.equals=function(t){return Ip.equals(this,t)};var ln=Ip;var Dsn=R(W(),1),IG={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ge=Object.freeze(IG);function Np(t){return t===IG.CLAMP_TO_GROUND||t===IG.CLAMP_TO_3D_TILE||t===IG.CLAMP_TO_TERRAIN}function dE(t){return t===IG.RELATIVE_TO_GROUND||t===IG.RELATIVE_TO_3D_TILE||t===IG.RELATIVE_TO_TERRAIN}var Hsn=R(W(),1),EHt={CENTER:0,LEFT:1,RIGHT:-1},to=Object.freeze(EHt);var Psn=R(W(),1),CHt={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},hi=Object.freeze(CHt);var Ksn=R(W(),1),IHt={DONE:0,PENDING:1,FAILED:2},ve=Object.freeze(IHt);var tln=R(W(),1);function $u(){Ut.throwInstantiationError()}Object.defineProperties($u.prototype,{isConstant:{get:Ut.throwInstantiationError},definitionChanged:{get:Ut.throwInstantiationError}});$u.prototype.getValue=Ut.throwInstantiationError;$u.prototype.equals=Ut.throwInstantiationError;$u.equals=function(t,e){return t===e||c(t)&&t.equals(e)};$u.arrayEquals=function(t,e){if(t===e)return!0;if(!c(t)||!c(e)||t.length!==e.length)return!1;let n=t.length;for(let i=0;i-1;o--)a=e[o],c(a._billboard)&&c(a._position)&&s.set(a.id,new xpt(a));for(o=i.length-1;o>-1;o--)a=i[o],c(a._billboard)&&c(a._position)?s.contains(a.id)||s.set(a.id,new xpt(a)):(c7(s.get(a.id),a,l),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],c7(s.get(a.id),a,l),s.remove(a.id)};function c7(t,e,n){c(t)&&(t.billboard=void 0,n.removeBillboard(e))}var h2=Wf;var pAn=R(W(),1);var ern=R(W(),1);var Bln=R(W(),1);var Wln=R(W(),1);function zHt(t,e){this.start=f(t,0),this.stop=f(e,0)}var hd=zHt;function oi(t,e){this.center=p.clone(f(t,p.ZERO)),this.radius=f(e,0)}var p7=new p,u7=new p,Z7=new p,V7=new p,b7=new p,R7=new p,W7=new p,_r=new p,f7=new p,F7=new p,U7=new p,G7=new p,jHt=4/3*k.PI;oi.fromPoints=function(t,e){if(c(e)||(e=new oi),!c(t)||t.length===0)return e.center=p.clone(p.ZERO,e.center),e.radius=0,e;let n=p.clone(t[0],W7),i=p.clone(n,p7),o=p.clone(n,u7),a=p.clone(n,Z7),s=p.clone(n,V7),l=p.clone(n,b7),r=p.clone(n,R7),d=t.length,m;for(m=1;ms.x&&p.clone(n,s),Jl.y&&p.clone(n,l),Mr.z&&p.clone(n,r)}let h=p.magnitudeSquared(p.subtract(s,i,_r)),Z=p.magnitudeSquared(p.subtract(l,o,_r)),b=p.magnitudeSquared(p.subtract(r,a,_r)),u=i,F=s,U=h;Z>U&&(U=Z,u=o,F=l),b>U&&(U=b,u=a,F=r);let G=f7;G.x=(u.x+F.x)*.5,G.y=(u.y+F.y)*.5,G.z=(u.z+F.z)*.5;let A=p.magnitudeSquared(p.subtract(F,G,_r)),T=Math.sqrt(A),g=F7;g.x=i.x,g.y=o.y,g.z=a.z;let C=U7;C.x=s.x,C.y=l.y,C.z=r.z;let y=p.midpoint(g,C,G7),Y=0;for(m=0;mY&&(Y=Q);let J=p.magnitudeSquared(p.subtract(n,G,_r));if(J>A){let M=Math.sqrt(J);T=(T+M)*.5,A=T*T;let V=M-T;G.x=(T*G.x+V*n.x)/M,G.y=(T*G.y+V*n.y)/M,G.z=(T*G.z+V*n.z)/M}}return Tr.x&&p.clone(o,r),Vd.y&&p.clone(o,d),Em.z&&p.clone(o,m)}let b=p.magnitudeSquared(p.subtract(r,a,_r)),u=p.magnitudeSquared(p.subtract(d,s,_r)),F=p.magnitudeSquared(p.subtract(m,l,_r)),U=a,G=r,A=b;u>A&&(A=u,U=s,G=d),F>A&&(A=F,U=l,G=m);let T=f7;T.x=(U.x+G.x)*.5,T.y=(U.y+G.y)*.5,T.z=(U.z+G.z)*.5;let g=p.magnitudeSquared(p.subtract(G,T,_r)),C=Math.sqrt(g),y=F7;y.x=a.x,y.y=s.y,y.z=l.z;let Y=U7;Y.x=r.x,Y.y=d.y,Y.z=m.z;let Q=p.midpoint(y,Y,G7),J=0;for(Z=0;ZJ&&(J=M);let V=p.magnitudeSquared(p.subtract(o,T,_r));if(V>g){let E=Math.sqrt(V);C=(C+E)*.5,g=C*C;let I=E-C;T.x=(C*T.x+I*o.x)/E,T.y=(C*T.y+I*o.y)/E,T.z=(C*T.z+I*o.z)/E}}return Cl.x&&p.clone(i,l),Mr.y&&p.clone(i,r),Vd.z&&p.clone(i,d)}let Z=p.magnitudeSquared(p.subtract(l,o,_r)),b=p.magnitudeSquared(p.subtract(r,a,_r)),u=p.magnitudeSquared(p.subtract(d,s,_r)),F=o,U=l,G=Z;b>G&&(G=b,F=a,U=r),u>G&&(G=u,F=s,U=d);let A=f7;A.x=(F.x+U.x)*.5,A.y=(F.y+U.y)*.5,A.z=(F.z+U.z)*.5;let T=p.magnitudeSquared(p.subtract(U,A,_r)),g=Math.sqrt(T),C=F7;C.x=o.x,C.y=a.y,C.z=s.z;let y=U7;y.x=l.x,y.y=r.y,y.z=d.z;let Y=p.midpoint(C,y,G7),Q=0;for(h=0;hQ&&(Q=J);let M=p.magnitudeSquared(p.subtract(i,A,_r));if(M>T){let V=Math.sqrt(M);g=(g+V)*.5,T=g*g;let E=V-g;A.x=(g*A.x+E*i.x)/V,A.y=(g*A.y+E*i.y)/V,A.z=(g*A.z+E*i.z)/V}}return g=r+s)return t.clone(n),n;if(s>=r+o)return e.clone(n),n;let d=(o+r+s)*.5,m=p.multiplyByScalar(l,(-o+d)/r,dwt);return p.add(m,i,m),p.clone(m,n.center),n.radius=d,n};var cwt=new p;oi.expand=function(t,e,n){n=oi.clone(t,n);let i=p.magnitude(p.subtract(e,n.center,cwt));return i>n.radius&&(n.radius=i),n};oi.intersectPlane=function(t,e){let n=t.center,i=t.radius,o=e.normal,a=p.dot(o,n)+e.distance;return a<-i?yn.OUTSIDE:a-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(t,e,n)};jV.prototype.getDerivedShaderProgram=function(t,e){let n=t._cachedShader,i=e+n.keyword,o=this._shaders[i];if(c(o))return o.shaderProgram};jV.prototype.createDerivedShaderProgram=function(t,e,n){let i=t._cachedShader,o=e+i.keyword,a=n.vertexShaderSource,s=n.fragmentShaderSource,l=n.attributeLocations;typeof a=="string"&&(a=new Ze({sources:[a]})),typeof s=="string"&&(s=new Ze({sources:[s]}));let r=this._context,d=a.createCombinedVertexShader(r),m=s.createCombinedFragmentShader(r),h=new xn({gl:r._gl,logShaderCompilation:r.logShaderCompilation,debugShaders:r.debugShaders,vertexShaderSource:a,vertexShaderText:d,fragmentShaderSource:s,fragmentShaderText:m,attributeLocations:l}),u={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(e),h._cachedShader=u,this._shaders[o]=u,h};function $6(t,e){let n=e.derivedKeywords,i=n.length;for(let o=0;o=0?(n=Math.floor(t/65536)*65536,e.high=n,e.low=t-n):(n=Math.floor(-t/65536)*65536,e.high=-n,e.low=t+n),e};var Tb={high:0,low:0};LZ.fromCartesian=function(t,e){c(e)||(e=new LZ);let n=e.high,i=e.low;return LZ.encode(t.x,Tb),n.x=Tb.high,i.x=Tb.low,LZ.encode(t.y,Tb),n.y=Tb.high,i.y=Tb.low,LZ.encode(t.z,Tb),n.z=Tb.high,i.z=Tb.low,e};var t7=new LZ;LZ.writeElements=function(t,e,n){LZ.fromCartesian(t,t7);let i=t7.high,o=t7.low;e[n]=i.x,e[n+1]=i.y,e[n+2]=i.z,e[n+3]=o.x,e[n+4]=o.y,e[n+5]=o.z};var Mi=LZ;var Xin=b(W(),1);var yin=b(W(),1);var Gin=b(W(),1);var uin=b(W(),1);function Rr(t,e){this.normal=p.clone(t),this.distance=e}Rr.fromPointNormal=function(t,e,n){let i=-p.dot(e,t);return c(n)?(p.clone(e,n.normal),n.distance=i,n):new Rr(e,i)};var bDt=new p;Rr.fromCartesian4=function(t,e){let n=p.fromCartesian4(t,bDt),i=t.w;return c(e)?(p.clone(n,e.normal),e.distance=i,e):new Rr(n,i)};Rr.getPointDistance=function(t,e){return p.dot(t.normal,e)+t.distance};var WDt=new p;Rr.projectPointOntoPlane=function(t,e,n){c(n)||(n=new p);let i=Rr.getPointDistance(t,e),o=p.multiplyByScalar(t.normal,i,WDt);return p.subtract(e,o,n)};var fDt=new L,FDt=new bt,UDt=new p;Rr.transform=function(t,e,n){let i=t.normal,o=t.distance,a=L.inverseTranspose(e,fDt),s=bt.fromElements(i.x,i.y,i.z,o,FDt);s=L.multiplyByVector(a,s,s);let l=p.fromCartesian4(s,UDt);return s=bt.divideByScalar(s,p.magnitude(l),s),Rr.fromCartesian4(s,n)};Rr.clone=function(t,e){return c(e)?(p.clone(t.normal,e.normal),e.distance=t.distance,e):new Rr(t.normal,t.distance)};Rr.equals=function(t,e){return t.distance===e.distance&&p.equals(t.normal,e.normal)};Rr.ORIGIN_XY_PLANE=Object.freeze(new Rr(p.UNIT_Z,0));Rr.ORIGIN_YZ_PLANE=Object.freeze(new Rr(p.UNIT_X,0));Rr.ORIGIN_ZX_PLANE=Object.freeze(new Rr(p.UNIT_Y,0));var Kn=Rr;function Ep(t){this.planes=f(t,[])}var ek=[new p,new p,new p];p.clone(p.UNIT_X,ek[0]);p.clone(p.UNIT_Y,ek[1]);p.clone(p.UNIT_Z,ek[2]);var Zf=new p,GDt=new p,opt=new Kn(new p(1,0,0),0);Ep.fromBoundingSphere=function(t,e){c(e)||(e=new Ep);let n=ek.length,i=e.planes;i.length=2*n;let o=t.center,a=t.radius,s=0;for(let l=0;lQDt;++a){o=i;let s=o-e*Math.sin(o)-t,l=1-e*Math.cos(o);i=o-s/l}return o=i+n*k.TWO_PI,o}function YDt(t,e){let n=Math.floor(t/k.TWO_PI);t-=n*k.TWO_PI;let i=Math.cos(t)-e,o=Math.sin(t)*Math.sqrt(1-e*e),a=Math.atan2(o,i);return a=k.zeroToTwoPi(a),t<0&&(a-=k.TWO_PI),a+=n*k.TWO_PI,a}function xDt(t,e,n,i){let o=Math.cos(t),a=Math.sin(t),s=Math.cos(e),l=Math.sin(e),r=Math.cos(n),d=Math.sin(n);return c(i)?(i[0]=r*o-d*a*s,i[1]=d*o+r*a*s,i[2]=a*l,i[3]=-r*a-d*o*s,i[4]=-d*a+r*o*s,i[5]=o*l,i[6]=d*l,i[7]=-r*l,i[8]=s):i=new ot(r*o-d*a*s,-r*a-d*o*s,d*l,d*o+r*a*s,-d*a+r*o*s,-r*l,a*l,o*l,s),i}var XDt=1.0000010178*md,JDt=100.46645683*Cp,LDt=129597742283429e-5*uh,lpt=16002,rpt=21863,dpt=32004,cpt=10931,mpt=14529,hpt=16368,ppt=15318,Vpt=32794,MDt=64*1e-7*md,_Dt=-152*1e-7*md,DDt=62*1e-7*md,ODt=-8*1e-7*md,HDt=32*1e-7*md,wDt=-41*1e-7*md,PDt=19*1e-7*md,vDt=-11*1e-7*md,KDt=-150*1e-7*md,zDt=-46*1e-7*md,jDt=68*1e-7*md,qDt=54*1e-7*md,$Dt=14*1e-7*md,tOt=24*1e-7*md,eOt=-28*1e-7*md,nOt=22*1e-7*md,upt=10,Zpt=16002,Rpt=21863,bpt=10931,Wpt=1473,fpt=32004,Fpt=4387,Upt=73,iOt=-325*1e-7,oOt=-322*1e-7,aOt=-79*1e-7,sOt=232*1e-7,lOt=-52*1e-7,rOt=97*1e-7,dOt=55*1e-7,cOt=-41*1e-7,mOt=-105*1e-7,hOt=-137*1e-7,pOt=258*1e-7,VOt=35*1e-7,uOt=-116*1e-7,ZOt=-88*1e-7,ROt=-112*1e-7,bOt=-80*1e-7,sE=new rt(0,0,Di.TAI);function WOt(t,e){Apt(t,sE);let i=(sE.dayNumber-LH.dayNumber+(sE.secondsOfDay-LH.secondsOfDay)/xi.SECONDS_PER_DAY)/(xi.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,a=XDt+MDt*Math.cos(lpt*o)+KDt*Math.sin(lpt*o)+_Dt*Math.cos(rpt*o)+zDt*Math.sin(rpt*o)+DDt*Math.cos(dpt*o)+jDt*Math.sin(dpt*o)+ODt*Math.cos(cpt*o)+qDt*Math.sin(cpt*o)+HDt*Math.cos(mpt*o)+$Dt*Math.sin(mpt*o)+wDt*Math.cos(hpt*o)+tOt*Math.sin(hpt*o)+PDt*Math.cos(ppt*o)+eOt*Math.sin(ppt*o)+vDt*Math.cos(Vpt*o)+nOt*Math.sin(Vpt*o),s=JDt+LDt*i+iOt*Math.cos(upt*o)+mOt*Math.sin(upt*o)+oOt*Math.cos(Zpt*o)+hOt*Math.sin(Zpt*o)+aOt*Math.cos(Rpt*o)+pOt*Math.sin(Rpt*o)+sOt*Math.cos(bpt*o)+VOt*Math.sin(bpt*o)+lOt*Math.cos(Wpt*o)+uOt*Math.sin(Wpt*o)+rOt*Math.cos(fpt*o)+ZOt*Math.sin(fpt*o)+dOt*Math.cos(Fpt*o)+ROt*Math.sin(Fpt*o)+cOt*Math.cos(Upt*o)+bOt*Math.sin(Upt*o),l=.0167086342-.0004203654*i,r=102.93734808*Cp+11612.3529*uh*i,d=469.97289*uh*i,m=174.87317577*Cp-8679.27034*uh*i;return Spt(a,l,d,r,m,s,e)}function Tpt(t,e){Apt(t,sE);let i=(sE.dayNumber-LH.dayNumber+(sE.secondsOfDay-LH.secondsOfDay)/xi.SECONDS_PER_DAY)/xi.DAYS_PER_JULIAN_CENTURY,o=i*i,a=o*i,s=a*i,l=383397.7725+.004*i,r=.055545526-16e-9*i,d=5.15668983*Cp,m=-8e-5*i+.02966*o-42e-6*a-13e-8*s,h=83.35324312*Cp,u=146434202669e-4*i-38.2702*o-.045047*a+21301e-8*s,R=125.04455501*Cp,V=-69679193631e-4*i+6.3602*o+.007625*a-3586e-8*s,F=218.31664563*Cp,U=17325593434847e-4*i-6.391*o+.006588*a-3169e-8*s,G=297.85019547*Cp+uh*(1602961601209e-3*i-6.3706*o+.006593*a-3169e-8*s),A=93.27209062*Cp+uh*(17395272628478e-4*i-12.7512*o-.001037*a+417e-8*s),S=134.96340251*Cp+uh*(17179159232178e-4*i+31.8792*o+.051635*a-2447e-7*s),g=357.52910918*Cp+uh*(1295965810481e-4*i-.5532*o+136e-6*a-1149e-8*s),C=310.17137918*Cp-uh*(6967051436e-3*i+6.2068*o+.007618*a-3219e-8*s),y=2*G,Y=4*G,Q=6*G,J=2*S,M=3*S,Z=4*S,E=2*A;l+=3400.4*Math.cos(y)-635.6*Math.cos(y-S)-235.6*Math.cos(S)+218.1*Math.cos(y-g)+181*Math.cos(y+S),r+=.014216*Math.cos(y-S)+.008551*Math.cos(y-J)-.001383*Math.cos(S)+.001356*Math.cos(y+S)-.001147*Math.cos(Y-M)-914e-6*Math.cos(Y-J)+869e-6*Math.cos(y-g-S)-627e-6*Math.cos(y)-394e-6*Math.cos(Y-Z)+282e-6*Math.cos(y-g-J)-279e-6*Math.cos(G-S)-236e-6*Math.cos(J)+231e-6*Math.cos(Y)+229e-6*Math.cos(Q-Z)-201e-6*Math.cos(J-E),m+=486.26*Math.cos(y-E)-40.13*Math.cos(y)+37.51*Math.cos(E)+25.73*Math.cos(J-E)+19.97*Math.cos(y-g-E),u+=-55609*Math.sin(y-S)-34711*Math.sin(y-J)-9792*Math.sin(S)+9385*Math.sin(Y-M)+7505*Math.sin(Y-J)+5318*Math.sin(y+S)+3484*Math.sin(Y-Z)-3417*Math.sin(y-g-S)-2530*Math.sin(Q-Z)-2376*Math.sin(y)-2075*Math.sin(y-M)-1883*Math.sin(J)-1736*Math.sin(Q-5*S)+1626*Math.sin(g)-1370*Math.sin(Q-M),V+=-5392*Math.sin(y-E)-540*Math.sin(g)-441*Math.sin(y)+423*Math.sin(E)-288*Math.sin(J-E),U+=-3332.9*Math.sin(y)+1197.4*Math.sin(y-S)-662.5*Math.sin(g)+396.3*Math.sin(S)-218*Math.sin(y-g);let I=2*C,B=3*C;m+=46.997*Math.cos(C)*i-.614*Math.cos(y-E+C)*i+.614*Math.cos(y-E-C)*i-.0297*Math.cos(I)*o-.0335*Math.cos(C)*o+.0012*Math.cos(y-E+I)*o-16e-5*Math.cos(C)*a+4e-5*Math.cos(B)*a+4e-5*Math.cos(I)*a;let X=2.116*Math.sin(C)*i-.111*Math.sin(y-E-C)*i-.0015*Math.sin(C)*o;u+=X,U+=X,V+=-520.77*Math.sin(C)*i+13.66*Math.sin(y-E+C)*i+1.12*Math.sin(y-C)*i-1.06*Math.sin(E-C)*i+.66*Math.sin(I)*o+.371*Math.sin(C)*o-.035*Math.sin(y-E+I)*o-.015*Math.sin(y-E+C)*o+.0014*Math.sin(C)*a-.0011*Math.sin(B)*a-9e-4*Math.sin(I)*a,l*=IDt;let _=d+m*uh,P=h+u*uh,w=F+U*uh,z=R+V*uh;return Spt(l,r,_,P,z,w,e)}var Gpt=.012300034,fOt=Gpt/(Gpt+1)*-1;function FOt(t,e){return e=Tpt(t,e),p.multiplyByScalar(e,fOt,e)}var gpt=new ot(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),nk=new p;n7.computeSunPositionInEarthInertialFrame=function(t,e){return c(t)||(t=rt.now()),c(e)||(e=new p),nk=WOt(t,nk),e=p.negate(nk,e),FOt(t,nk),p.subtract(e,nk,e),ot.multiplyByVector(gpt,e,e),e};n7.computeMoonPositionInEarthInertialFrame=function(t,e){return c(t)||(t=rt.now()),e=Tpt(t,e),ot.multiplyByVector(gpt,e,e),e};var _Z=n7;var Kin=b(W(),1),MH={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};MH.getMorphTime=function(t){return t===MH.SCENE3D?1:t===MH.MORPHING?void 0:0};var Vt=Object.freeze(MH);var $in=b(W(),1);function UOt(t){t=f(t,f.EMPTY_OBJECT),this.color=v.clone(f(t.color,v.WHITE)),this.intensity=f(t.intensity,2)}var gb=UOt;function lE(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Fe,this._viewportCartesian4=new bt,this._viewportDirty=!1,this._viewportOrthographicMatrix=L.clone(L.IDENTITY),this._viewportTransformation=L.clone(L.IDENTITY),this._model=L.clone(L.IDENTITY),this._view=L.clone(L.IDENTITY),this._inverseView=L.clone(L.IDENTITY),this._projection=L.clone(L.IDENTITY),this._infiniteProjection=L.clone(L.IDENTITY),this._entireFrustum=new K,this._currentFrustum=new K,this._frustumPlanes=new bt,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=ot.clone(L.IDENTITY),this._view3DDirty=!0,this._view3D=new L,this._inverseView3DDirty=!0,this._inverseView3D=new L,this._inverseModelDirty=!0,this._inverseModel=new L,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new ot,this._viewRotation=new ot,this._inverseViewRotation=new ot,this._viewRotation3D=new ot,this._inverseViewRotation3D=new ot,this._inverseProjectionDirty=!0,this._inverseProjection=new L,this._modelViewDirty=!0,this._modelView=new L,this._modelView3DDirty=!0,this._modelView3D=new L,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new L,this._inverseModelViewDirty=!0,this._inverseModelView=new L,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new L,this._viewProjectionDirty=!0,this._viewProjection=new L,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new L,this._modelViewProjectionDirty=!0,this._modelViewProjection=new L,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new L,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new L,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new L,this._normalDirty=!0,this._normal=new ot,this._normal3DDirty=!0,this._normal3D=new ot,this._inverseNormalDirty=!0,this._inverseNormal=new ot,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new ot,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new Mi,this._cameraPosition=new p,this._sunPositionWC=new p,this._sunPositionColumbusView=new p,this._sunDirectionWC=new p,this._sunDirectionEC=new p,this._moonDirectionEC=new p,this._lightDirectionWC=new p,this._lightDirectionEC=new p,this._lightColor=new p,this._lightColorHdr=new p,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new p,this._cameraRight=new p,this._cameraUp=new p,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new K,this._eyeEllipsoidNormalEC=new p,this._eyeEllipsoidCurvature=new K,this._modelToEnu=new L,this._enuToModel=new L,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new v,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsDimensions=new K,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new p,this._atmosphereRayleighScaleHeight=new p,this._atmosphereMieCoefficient=new p,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(lE.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(t){if(!Fe.equals(t,this._viewport)){Fe.clone(t,this._viewport);let e=this._viewport,n=this._viewportCartesian4;n.x=e.x,n.y=e.y,n.z=e.width,n.w=e.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return Cpt(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return Cpt(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(t){L.clone(t,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,L.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let t=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,L.getMatrix3(this.inverseModel,t),ot.transpose(t,t)),t}},view:{get:function(){return this._view}},view3D:{get:function(){return i7(this),this._view3D}},viewRotation:{get:function(){return i7(this),this._viewRotation}},viewRotation3D:{get:function(){return i7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return ypt(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return ypt(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return BOt(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return QOt(this),this._modelView}},modelView3D:{get:function(){return kOt(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return MOt(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return YOt(this),this._inverseModelView}},inverseModelView3D:{get:function(){return xOt(this),this._inverseModelView3D}},viewProjection:{get:function(){return XOt(this),this._viewProjection}},inverseViewProjection:{get:function(){return JOt(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return LOt(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return _Ot(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return DOt(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return OOt(this),this._modelViewInfiniteProjection}},normal:{get:function(){return HOt(this),this._normal}},normal3D:{get:function(){return wOt(this),this._normal3D}},inverseNormal:{get:function(){return POt(this),this._inverseNormal}},inverseNormal3D:{get:function(){return vOt(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return Npt(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return Npt(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsDimensions:{get:function(){return this._specularEnvironmentMapsDimensions}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return f(this._ellipsoid,mt.WGS84)}}});function GOt(t,e){L.clone(e,t._view),L.getMatrix3(e,t._viewRotation),t._view3DDirty=!0,t._inverseView3DDirty=!0,t._modelViewDirty=!0,t._modelView3DDirty=!0,t._modelViewRelativeToEyeDirty=!0,t._inverseModelViewDirty=!0,t._inverseModelView3DDirty=!0,t._viewProjectionDirty=!0,t._inverseViewProjectionDirty=!0,t._modelViewProjectionDirty=!0,t._modelViewProjectionRelativeToEyeDirty=!0,t._modelViewInfiniteProjectionDirty=!0,t._normalDirty=!0,t._inverseNormalDirty=!0,t._normal3DDirty=!0,t._inverseNormal3DDirty=!0}function AOt(t,e){L.clone(e,t._inverseView),L.getMatrix3(e,t._inverseViewRotation)}function SOt(t,e){L.clone(e,t._projection),t._inverseProjectionDirty=!0,t._viewProjectionDirty=!0,t._inverseViewProjectionDirty=!0,t._modelViewProjectionDirty=!0,t._modelViewProjectionRelativeToEyeDirty=!0}function TOt(t,e){L.clone(e,t._infiniteProjection),t._modelViewInfiniteProjectionDirty=!0}var Ept=new p,gOt=new L;function EOt(t,e){p.clone(e.positionWC,t._cameraPosition),p.clone(e.directionWC,t._cameraDirection),p.clone(e.rightWC,t._cameraRight),p.clone(e.upWC,t._cameraUp);let n=t._ellipsoid,i,o=e.positionCartographic;if(c(o)?(t._eyeHeight=o.height,t._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,t._eyeEllipsoidNormalEC),i=p.fromRadians(o.longitude,o.latitude,0,n,Ept)):(t._eyeHeight=-n.maximumRadius,p.magnitude(e.positionWC)>0&&(t._eyeEllipsoidNormalEC=p.normalize(e.positionWC,t._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(e.positionWC,Ept)),t._encodedCameraPositionMCDirty=!0,!c(i))return;t._eyeEllipsoidNormalEC=ot.multiplyByVector(t._viewRotation,t._eyeEllipsoidNormalEC,t._eyeEllipsoidNormalEC);let a=Pe.eastNorthUpToFixedFrame(i,n,gOt);t._enuToModel=L.multiplyTransformation(t.inverseModel,a,t._enuToModel),t._modelToEnu=L.inverseTransformation(t._enuToModel,t._modelToEnu),k.equalsEpsilon(n._radii.x,n._radii.y,k.EPSILON15)&&(t._eyeEllipsoidCurvature=n.getLocalCurvature(i,t._eyeEllipsoidCurvature))}var ik=new ot,COt=new gt;function IOt(t,e){c(Pe.computeIcrfToFixedMatrix(e.time,ik))||(ik=Pe.computeTemeToPseudoFixedMatrix(e.time,ik));let n=_Z.computeSunPositionInEarthInertialFrame(e.time,t._sunPositionWC);ot.multiplyByVector(ik,n,n),p.normalize(n,t._sunDirectionWC),n=ot.multiplyByVector(t.viewRotation3D,n,t._sunDirectionEC),p.normalize(n,n),n=_Z.computeMoonPositionInEarthInertialFrame(e.time,t._moonDirectionEC),ot.multiplyByVector(ik,n,n),ot.multiplyByVector(t.viewRotation3D,n,n),p.normalize(n,n);let i=e.mapProjection,a=i.ellipsoid.cartesianToCartographic(t._sunPositionWC,COt);i.project(a,t._sunPositionColumbusView)}lE.prototype.updateCamera=function(t){GOt(this,t.viewMatrix),AOt(this,t.inverseViewMatrix),EOt(this,t),this._entireFrustum.x=t.frustum.near,this._entireFrustum.y=t.frustum.far,this.updateFrustum(t.frustum),this._orthographicIn3D=this._mode!==Vt.SCENE2D&&t.frustum instanceof wn};lE.prototype.updateFrustum=function(t){SOt(this,t.projectionMatrix),c(t.infiniteProjectionMatrix)&&TOt(this,t.infiniteProjectionMatrix),this._currentFrustum.x=t.near,this._currentFrustum.y=t.far,this._farDepthFromNearPlusOne=t.far-t.near+1,this._log2FarDepthFromNearPlusOne=k.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let e=t.offCenterFrustum;c(e)&&(t=e),this._frustumPlanes.x=t.top,this._frustumPlanes.y=t.bottom,this._frustumPlanes.z=t.left,this._frustumPlanes.w=t.right};lE.prototype.updatePass=function(t){this._pass=t};var NOt=[],yOt=new gb;lE.prototype.update=function(t){this._mode=t.mode,this._mapProjection=t.mapProjection,this._ellipsoid=t.mapProjection.ellipsoid,this._pixelRatio=t.pixelRatio;let e=t.camera;this.updateCamera(e),t.mode===Vt.SCENE2D?(this._frustum2DWidth=e.frustum.right-e.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),IOt(this,t);let n=f(t.light,yOt);n instanceof gb?(this._lightDirectionWC=p.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=p.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=p.normalize(p.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=ot.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=p.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=p.multiplyByScalar(o,n.intensity,o);let a=p.maximumComponent(o);a>1?p.divideByScalar(o,a,this._lightColor):p.clone(o,this._lightColor);let s=t.brdfLutGenerator,l=c(s)?s.colorTexture:void 0;this._brdfLut=l,this._environmentMap=f(t.environmentMap,t.context.defaultCubeMap),this._sphericalHarmonicCoefficients=f(t.sphericalHarmonicCoefficients,NOt),this._specularEnvironmentMaps=t.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=t.specularEnvironmentMapsMaximumLOD,c(this._specularEnvironmentMaps)&&K.clone(this._specularEnvironmentMaps.dimensions,this._specularEnvironmentMapsDimensions),this._fogDensity=t.fog.density,this._fogMinimumBrightness=t.fog.minimumBrightness;let r=t.atmosphere;c(r)&&(this._atmosphereHsbShift=p.fromElements(r.hueShift,r.saturationShift,r.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=r.lightIntensity,this._atmosphereRayleighCoefficient=p.clone(r.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=r.rayleighScaleHeight,this._atmosphereMieCoefficient=p.clone(r.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=r.mieScaleHeight,this._atmosphereMieAnisotropy=r.mieAnisotropy,this._atmosphereDynamicLighting=r.dynamicLighting),this._invertClassificationColor=t.invertClassificationColor,this._frameState=t,this._temeToPseudoFixed=Pe.computeTemeToPseudoFixedMatrix(t.time,this._temeToPseudoFixed),this._splitPosition=t.splitPosition*t.context.drawingBufferWidth;let d=e.frustum.fov,m=this._viewport,h;c(d)?m.height>m.width?h=Math.tan(.5*d)*2/m.height:h=Math.tan(.5*d)*2/m.width:h=1/Math.max(m.width,m.height),this._geometricToleranceOverMeter=h*t.maximumScreenSpaceError,v.clone(t.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=t.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function Cpt(t){if(t._viewportDirty){let e=t._viewport;L.computeOrthographicOffCenter(e.x,e.x+e.width,e.y,e.y+e.height,0,1,t._viewportOrthographicMatrix),L.computeViewportTransformation(e,0,1,t._viewportTransformation),t._viewportDirty=!1}}function BOt(t){t._inverseProjectionDirty&&(t._inverseProjectionDirty=!1,t._mode!==Vt.SCENE2D&&t._mode!==Vt.MORPHING&&!t._orthographicIn3D?L.inverse(t._projection,t._inverseProjection):L.clone(L.ZERO,t._inverseProjection))}function QOt(t){t._modelViewDirty&&(t._modelViewDirty=!1,L.multiplyTransformation(t._view,t._model,t._modelView))}function kOt(t){t._modelView3DDirty&&(t._modelView3DDirty=!1,L.multiplyTransformation(t.view3D,t._model,t._modelView3D))}function YOt(t){t._inverseModelViewDirty&&(t._inverseModelViewDirty=!1,L.inverse(t.modelView,t._inverseModelView))}function xOt(t){t._inverseModelView3DDirty&&(t._inverseModelView3DDirty=!1,L.inverse(t.modelView3D,t._inverseModelView3D))}function XOt(t){t._viewProjectionDirty&&(t._viewProjectionDirty=!1,L.multiply(t._projection,t._view,t._viewProjection))}function JOt(t){t._inverseViewProjectionDirty&&(t._inverseViewProjectionDirty=!1,L.inverse(t.viewProjection,t._inverseViewProjection))}function LOt(t){t._modelViewProjectionDirty&&(t._modelViewProjectionDirty=!1,L.multiply(t._projection,t.modelView,t._modelViewProjection))}function MOt(t){if(t._modelViewRelativeToEyeDirty){t._modelViewRelativeToEyeDirty=!1;let e=t.modelView,n=t._modelViewRelativeToEye;n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=0,n[13]=0,n[14]=0,n[15]=e[15]}}function _Ot(t){t._inverseModelViewProjectionDirty&&(t._inverseModelViewProjectionDirty=!1,L.inverse(t.modelViewProjection,t._inverseModelViewProjection))}function DOt(t){t._modelViewProjectionRelativeToEyeDirty&&(t._modelViewProjectionRelativeToEyeDirty=!1,L.multiply(t._projection,t.modelViewRelativeToEye,t._modelViewProjectionRelativeToEye))}function OOt(t){t._modelViewInfiniteProjectionDirty&&(t._modelViewInfiniteProjectionDirty=!1,L.multiply(t._infiniteProjection,t.modelView,t._modelViewInfiniteProjection))}function HOt(t){if(t._normalDirty){t._normalDirty=!1;let e=t._normal;L.getMatrix3(t.inverseModelView,e),ot.transpose(e,e)}}function wOt(t){if(t._normal3DDirty){t._normal3DDirty=!1;let e=t._normal3D;L.getMatrix3(t.inverseModelView3D,e),ot.transpose(e,e)}}function POt(t){if(t._inverseNormalDirty){t._inverseNormalDirty=!1;let e=t._inverseNormal;L.getMatrix3(t.modelView,e),ot.transpose(e,e)}}function vOt(t){if(t._inverseNormal3DDirty){t._inverseNormal3DDirty=!1;let e=t._inverseNormal3D;L.getMatrix3(t.modelView3D,e),ot.transpose(e,e)}}var Ipt=new p;function Npt(t){t._encodedCameraPositionMCDirty&&(t._encodedCameraPositionMCDirty=!1,L.multiplyByPoint(t.inverseModel,t._cameraPosition,Ipt),Mi.fromCartesian(Ipt,t._encodedCameraPositionMC))}var KOt=new p,zOt=new p,jOt=new p,qOt=new p,$Ot=new gt,tHt=new p,eHt=new L;function nHt(t,e,n,i,o,a,s,l){let r=KOt;r.x=t.y,r.y=t.z,r.z=t.x;let d=zOt;d.x=n.y,d.y=n.z,d.z=n.x;let m=jOt;m.x=i.y,m.y=i.z,m.z=i.x;let h=qOt;h.x=e.y,h.y=e.z,h.z=e.x,a===Vt.SCENE2D&&(r.z=o*.5);let u=s.unproject(r,$Ot);u.longitude=k.clamp(u.longitude,-Math.PI,Math.PI),u.latitude=k.clamp(u.latitude,-k.PI_OVER_TWO,k.PI_OVER_TWO);let R=s.ellipsoid,V=R.cartographicToCartesian(u,tHt),F=Pe.eastNorthUpToFixedFrame(V,R,eHt);return L.multiplyByPointAsVector(F,d,d),L.multiplyByPointAsVector(F,m,m),L.multiplyByPointAsVector(F,h,h),c(l)||(l=new L),l[0]=d.x,l[1]=m.x,l[2]=-h.x,l[3]=0,l[4]=d.y,l[5]=m.y,l[6]=-h.y,l[7]=0,l[8]=d.z,l[9]=m.z,l[10]=-h.z,l[11]=0,l[12]=-p.dot(d,V),l[13]=-p.dot(m,V),l[14]=p.dot(h,V),l[15]=1,l}function i7(t){t._view3DDirty&&(t._mode===Vt.SCENE3D?L.clone(t._view,t._view3D):nHt(t._cameraPosition,t._cameraDirection,t._cameraRight,t._cameraUp,t._frustum2DWidth,t._mode,t._mapProjection,t._view3D),L.getMatrix3(t._view3D,t._viewRotation3D),t._view3DDirty=!1)}function ypt(t){t._inverseView3DDirty&&(L.inverseTransformation(t.view3D,t._inverseView3D),L.getMatrix3(t._inverseView3D,t._inverseViewRotation3D),t._inverseView3DDirty=!1)}var ok=lE;var yon=b(W(),1);function iHt(t,e,n,i){let o=c(e.vertexBuffer),a=c(e.value),s=e.value?e.value.length:e.componentsPerAttribute,l={index:f(e.index,n),enabled:f(e.enabled,!0),vertexBuffer:e.vertexBuffer,value:a?e.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:f(e.componentDatatype,it.FLOAT),normalize:f(e.normalize,!1),offsetInBytes:f(e.offsetInBytes,0),strideInBytes:f(e.strideInBytes,0),instanceDivisor:f(e.instanceDivisor,0)};if(o)l.vertexAttrib=function(r){let d=this.index;r.bindBuffer(r.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),r.vertexAttribPointer(d,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),r.enableVertexAttribArray(d),this.instanceDivisor>0&&(i.glVertexAttribDivisor(d,this.instanceDivisor),i._vertexAttribDivisors[d]=this.instanceDivisor,i._previousDrawInstanced=!0)},l.disableVertexAttribArray=function(r){r.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(l.componentsPerAttribute){case 1:l.vertexAttrib=function(r){r.vertexAttrib1fv(this.index,this.value)};break;case 2:l.vertexAttrib=function(r){r.vertexAttrib2fv(this.index,this.value)};break;case 3:l.vertexAttrib=function(r){r.vertexAttrib3fv(this.index,this.value)};break;case 4:l.vertexAttrib=function(r){r.vertexAttrib4fv(this.index,this.value)};break}l.disableVertexAttribArray=function(r){}}t.push(l)}function Qpt(t,e,n){for(let i=0;i0&&(r=!0),c(s[a].value)&&(d=!0);let h;e.vertexArrayObject&&(h=e.glCreateVertexArray(),e.glBindVertexArray(h),Qpt(n,s,o),e.glBindVertexArray(null)),this._numberOfVertices=l,this._hasInstancedAttributes=r,this._hasConstantAttributes=d,this._context=e,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function Bpt(t){return t.values.length/t.componentsPerAttribute}function oHt(t){return it.getSizeInBytes(t.componentDatatype)*t.componentsPerAttribute}function aHt(t){let e,n,i,o=[];for(n in t)t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)&&(o.push(n),t[n].componentDatatype===it.DOUBLE&&(t[n].componentDatatype=it.FLOAT,t[n].values=it.createTypedArray(it.FLOAT,t[n].values)));let a,s=o.length;if(s>0)for(a=Bpt(t[o[0]]),e=1;e0){let d=it.getSizeInBytes(t[o[0]].componentDatatype),m=l%d;m!==0&&(l+=d-m);let h=a*l,u=new ArrayBuffer(h),R={};for(e=0;e=k.SIXTY_FOUR_KILOBYTES&&e.elementIndexUint?u=we.createIndexBuffer({context:e,typedArray:new Uint32Array(R),usage:i,indexDatatype:re.UNSIGNED_INT}):u=we.createIndexBuffer({context:e,typedArray:new Uint16Array(R),usage:i,indexDatatype:re.UNSIGNED_SHORT})),new Eb({context:e,attributes:m,indexBuffer:u})};Object.defineProperties(Eb.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});Eb.prototype.getAttribute=function(t){return this._attributes[t]};function sHt(t){let e=t._context,n=t._hasInstancedAttributes;if(!n&&!e._previousDrawInstanced)return;e._previousDrawInstanced=n;let i=e._vertexAttribDivisors,o=t._attributes,a=Tn.maximumVertexAttributes,s;if(n){let l=o.length;for(s=0;s0&&(e.glVertexAttribDivisor(s,0),i[s]=0)}function lHt(t,e){let n=t._attributes,i=n.length;for(let o=0;o"u")throw new Tt("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",a=t.getContext(o,e);if(!c(a))throw new Tt("The browser supports WebGL, but initialization failed.");return a}function dHt(t,e){let n="WebGL Error: ";switch(e){case t.INVALID_ENUM:n+="INVALID_ENUM";break;case t.INVALID_VALUE:n+="INVALID_VALUE";break;case t.INVALID_OPERATION:n+="INVALID_OPERATION";break;case t.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case t.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${e})`}return n}function cHt(t,e,n,i){let o=`${dHt(t,i)}: ${e.name}(`;for(let a=0;a=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(t){this._throwOnWebGLError=t,this._gl=pHt(this._originalGLContext,t?mHt:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new hn({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new hn({context:this,pixelFormat:Ye.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new hn({context:this,pixelFormat:Ye.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let t={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new Ld({context:this,source:{positiveX:t,negativeX:t,positiveY:t,negativeY:t,positiveZ:t,negativeZ:t},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return VHt}}});function kpt(t,e,n,i){let o=t._currentRenderState,a=t._currentPassState;t._currentRenderState=e,t._currentPassState=n,he.partialApply(t._gl,o,e,a,n,i)}var o7;typeof WebGLRenderingContext<"u"&&(o7=[pt.BACK]);function a7(t,e){if(e!==t._currentFramebuffer){t._currentFramebuffer=e;let n=o7;if(c(e))e._bind(),n=e._getActiveColorAttachments();else{let i=t._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}t.drawBuffers&&t.glDrawBuffers(n)}}var uHt=new ao;Zh.prototype.clear=function(t,e){t=f(t,uHt),e=f(e,this._defaultPassState);let n=this._gl,i=0,o=t.color,a=t.depth,s=t.stencil;c(o)&&(v.equals(this._clearColor,o)||(v.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),c(a)&&(a!==this._clearDepth&&(this._clearDepth=a,n.clearDepth(a)),i|=n.DEPTH_BUFFER_BIT),c(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let l=f(t.renderState,this._defaultRenderState);kpt(this,l,e,!0);let r=f(t.framebuffer,e.framebuffer);a7(this,r),n.clear(i)};function ZHt(t,e,n,i,o){a7(t,e),kpt(t,o,n,!1),i._bind(),t._maxFrameTextureUnitIndex=Math.max(t._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function RHt(t,e,n,i){let o=e._primitiveType,a=e._vertexArray,s=e._offset,l=e._count,r=e.instanceCount;t._us.model=f(e._modelMatrix,L.IDENTITY),n._setUniforms(i,t._us,t.validateShaderProgram),a._bind();let d=a.indexBuffer;c(d)?(s=s*d.bytesPerIndex,c(l)?l=Math.min(l,d.numberOfIndices):l=d.numberOfIndices,r===0?t._gl.drawElements(o,l,d.indexDatatype,s):t.glDrawElementsInstanced(o,l,d.indexDatatype,s,r)):(c(l)?l=Math.min(l,a.numberOfVertices):l=a.numberOfVertices,r===0?t._gl.drawArrays(o,s,l):t.glDrawArraysInstanced(o,s,l,r)),a._unBind()}Zh.prototype.draw=function(t,e,n,i){e=f(e,this._defaultPassState);let o=f(t._framebuffer,e.framebuffer),a=f(t._renderState,this._defaultRenderState);n=f(n,t._shaderProgram),i=f(i,t._uniformMap),ZHt(this,o,e,n,a),RHt(this,t,n,i)};Zh.prototype.endFrame=function(){let t=this._gl;t.useProgram(null),this._currentFramebuffer=void 0,t.bindFramebuffer(t.FRAMEBUFFER,null);let e=o7;this.drawBuffers&&this.glDrawBuffers(e);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i0&&(l=s.getColorTexture(0).pixelDatatype);let r=Ye.createTypedArray(Ye.RGBA,l,o,a);return a7(this,s),e.readPixels(n,i,o,a,Ye.RGBA,Ue.toWebGLConstant(l,this),r),r};var Ypt={position:0,textureCoordinates:1};Zh.prototype.getViewportQuadVertexArray=function(){let t=this.cache.viewportQuad_vertexArray;if(!c(t)){let e=new _e({attributes:{position:new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:le.TRIANGLES});t=Ki.fromGeometry({context:this,geometry:e,attributeLocations:Ypt,bufferUsage:ce.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=t}return t};Zh.prototype.createViewportQuadCommand=function(t,e){return e=f(e,f.EMPTY_OBJECT),new Ee({vertexArray:this.getViewportQuadVertexArray(),primitiveType:le.TRIANGLES,renderState:e.renderState,shaderProgram:xn.fromCache({context:this,vertexShaderSource:GG,fragmentShaderSource:t,attributeLocations:Ypt}),uniformMap:e.uniformMap,owner:e.owner,framebuffer:e.framebuffer,pass:e.pass})};Zh.prototype.getObjectByPickColor=function(t){return this._pickObjects[t.toRgba()]};function s7(t,e,n){this._pickObjects=t,this.key=e,this.color=n}Object.defineProperties(s7.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(t){this._pickObjects[this.key]=t}}});s7.prototype.destroy=function(){delete this._pickObjects[this.key]};Zh.prototype.createPickId=function(t){++this._nextPickColor[0];let e=this._nextPickColor[0];if(e===0)throw new Tt("Out of unique Pick IDs.");return this._pickObjects[e]=t,new s7(this._pickObjects,e,v.fromRgba(e))};Zh.prototype.isDestroyed=function(){return!1};Zh.prototype.destroy=function(){let t=this.cache;for(let e in t)if(t.hasOwnProperty(e)){let n=t[e];c(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),At(this)};Zh._deprecationWarning=ur;var ak=Zh;var Jan=b(W(),1);var Ran=b(W(),1);function rE(t){t=f(t,f.EMPTY_OBJECT);let e=t.context,n=t.width,i=t.height;this._width=n,this._height=i;let o=t.colorRenderbuffers,a=t.colorTextures;if(c(o)!==c(a))throw new Ut("Both color renderbuffer and texture attachments must be provided.");let s=t.depthStencilRenderbuffer,l=t.depthStencilTexture;if(c(s)!==c(l))throw new Ut("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new Lr({context:e,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:t.destroyAttachments}),this._colorFramebuffer=new Lr({context:e,colorTextures:a,depthStencilTexture:l,destroyAttachments:t.destroyAttachments})}rE.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};rE.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};rE.prototype.blitFramebuffers=function(t,e){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=t._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),c(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(e?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};rE.prototype.isDestroyed=function(){return!1};rE.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),At(this)};var sk=rE;var gan=b(W(),1);var fan=b(W(),1);var Gm={RGBA4:pt.RGBA4,RGBA8:pt.RGBA8,RGBA16F:pt.RGBA16F,RGBA32F:pt.RGBA32F,RGB5_A1:pt.RGB5_A1,RGB565:pt.RGB565,DEPTH_COMPONENT16:pt.DEPTH_COMPONENT16,STENCIL_INDEX8:pt.STENCIL_INDEX8,DEPTH_STENCIL:pt.DEPTH_STENCIL,DEPTH24_STENCIL8:pt.DEPTH24_STENCIL8,validate:function(t){return t===Gm.RGBA4||t===Gm.RGBA8||t===Gm.RGBA16F||t===Gm.RGBA32F||t===Gm.RGB5_A1||t===Gm.RGB565||t===Gm.DEPTH_COMPONENT16||t===Gm.STENCIL_INDEX8||t===Gm.DEPTH_STENCIL||t===Gm.DEPTH24_STENCIL8},getColorFormat:function(t){return t===pt.FLOAT?Gm.RGBA32F:t===pt.HALF_FLOAT_OES?Gm.RGBA16F:Gm.RGBA8}},Tc=Object.freeze(Gm);function lk(t){t=f(t,f.EMPTY_OBJECT);let n=t.context._gl,i=Tn.maximumRenderbufferSize,o=f(t.format,Tc.RGBA4),a=c(t.width)?t.width:n.drawingBufferWidth,s=c(t.height)?t.height:n.drawingBufferHeight,l=f(t.numSamples,1);this._gl=n,this._format=o,this._width=a,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),l>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,l,o,a,s):n.renderbufferStorage(n.RENDERBUFFER,o,a,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(lk.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});lk.prototype._getRenderbuffer=function(){return this._renderbuffer};lk.prototype.isDestroyed=function(){return!1};lk.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),At(this)};var Rh=lk;function Kl(t){t=f(t,f.EMPTY_OBJECT),this._numSamples=f(t.numSamples,1),this._colorAttachmentsLength=f(t.colorAttachmentsLength,1),this._color=f(t.color,!0),this._depth=f(t.depth,!1),this._depthStencil=f(t.depthStencil,!1),this._supportsDepthTexture=f(t.supportsDepthTexture,!1),this._createColorAttachments=f(t.createColorAttachments,!0),this._createDepthAttachments=f(t.createDepthAttachments,!0),this._pixelDatatype=t.pixelDatatype,this._pixelFormat=t.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Kl.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Kl.prototype.isDirty=function(t,e,n,i,o){n=f(n,1);let a=this._width!==t||this._height!==e,s=this._numSamples!==n,l=c(i)&&this._pixelDatatype!==i||c(o)&&this._pixelFormat!==o,r=n===1?c(this._framebuffer):c(this._multisampleFramebuffer);return this._attachmentsDirty||a||s||l||!r||this._color&&!c(this._colorTextures[0])};Kl.prototype.update=function(t,e,n,i,o,a){if(i=t.msaa?f(i,1):1,o=f(o,this._color?f(this._pixelDatatype,Ue.UNSIGNED_BYTE):void 0),a=f(a,this._color?f(this._pixelFormat,Ye.RGBA):void 0),this.isDirty(e,n,i,o,a)){if(this.destroy(),this._width=e,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=a,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s1){let l=Tc.getColorFormat(o);this._colorRenderbuffers[s]=new Rh({context:t,width:e,height:n,format:l,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&t.depthTexture?(this._depthStencilTexture=new hn({context:t,width:e,height:n,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8,sampler:Hn.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Rh({context:t,width:e,height:n,format:Tc.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Rh({context:t,width:e,height:n,format:Tc.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&t.depthTexture?this._depthTexture=new hn({context:t,width:e,height:n,pixelFormat:Ye.DEPTH_COMPONENT,pixelDatatype:Ue.UNSIGNED_INT,sampler:Hn.NEAREST}):this._depthRenderbuffer=new Rh({context:t,width:e,height:n,format:Tc.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new sk({context:t,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new Lr({context:t,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Kl.prototype.getColorTexture=function(t){return t=f(t,0),this._colorTextures[t]};Kl.prototype.setColorTexture=function(t,e){e=f(e,0),this._attachmentsDirty=t!==this._colorTextures[e],this._colorTextures[e]=t};Kl.prototype.getColorRenderbuffer=function(t){return t=f(t,0),this._colorRenderbuffers[t]};Kl.prototype.setColorRenderbuffer=function(t,e){e=f(e,0),this._attachmentsDirty=t!==this._colorRenderbuffers[e],this._colorRenderbuffers[e]=t};Kl.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Kl.prototype.setDepthRenderbuffer=function(t){this._attachmentsDirty=t!==this._depthRenderbuffer,this._depthRenderbuffer=t};Kl.prototype.getDepthTexture=function(){return this._depthTexture};Kl.prototype.setDepthTexture=function(t){this._attachmentsDirty=t!==this._depthTexture,this._depthTexture=t};Kl.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Kl.prototype.setDepthStencilRenderbuffer=function(t){this._attachmentsDirty=t!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=t};Kl.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Kl.prototype.setDepthStencilTexture=function(t){this._attachmentsDirty=t!==this._depthStencilTexture,this._depthStencilTexture=t};Kl.prototype.prepareTextures=function(t,e){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(t,e)};Kl.prototype.clear=function(t,e,n){let i=e.framebuffer;e.framebuffer=this.framebuffer,e.execute(t,n),e.framebuffer=i};Kl.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Kl.prototype.destroy=function(){if(this._color){let t,e=this._colorTextures.length;for(t=0;t0?it.getSizeInBytes(t[0].componentDatatype):0,o=i>0?e%i:0,a=o===0?0:i-o;return e+=a,e};br._createArrayViews=function(t,e){let n=[],i=0,o=t.length;for(let a=0;a0){let n=new ArrayBuffer(e*t.vertexSizeInBytes);if(c(t.arrayBuffer)){let a=new Uint8Array(n),s=new Uint8Array(t.arrayBuffer),l=s.length;for(let r=0;r0){e.needsCommit=!1;let n=e.vertexBuffer,i=t._size*e.vertexSizeInBytes,o=c(n);if(!o||n.sizeInBytes0){let i=t.vertexSizeInBytes*e,o=t.vertexSizeInBytes*n;t.vertexBuffer.copyFromArrayView(new Uint8Array(t.arrayBuffer,i,o),i)}}br.prototype.endSubCommits=function(){let t=this._allBuffers;for(let e=0,n=t.length;e0&&(this._hash={},t.length=0)};var qe=CG;var xsn=b(W(),1);function bh(t,e){t=f(t,0),this._near=t,e=f(e,Number.MAX_VALUE),this._far=e}Object.defineProperties(bh.prototype,{near:{get:function(){return this._near},set:function(t){this._near=t}},far:{get:function(){return this._far},set:function(t){this._far=t}}});bh.packedLength=2;bh.pack=function(t,e,n){return n=f(n,0),e[n++]=t.near,e[n]=t.far,e};bh.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new bh),n.near=t[e++],n.far=t[e],n};bh.equals=function(t,e){return t===e||c(t)&&c(e)&&t.near===e.near&&t.far===e.far};bh.clone=function(t,e){if(c(t))return c(e)||(e=new bh),e.near=t.near,e.far=t.far,e};bh.prototype.clone=function(t){return bh.clone(this,t)};bh.prototype.equals=function(t){return bh.equals(this,t)};var Wn=bh;var Msn=b(W(),1);function Ip(t,e,n,i){this.near=f(t,0),this.nearValue=f(e,0),this.far=f(n,1),this.farValue=f(i,0)}Ip.clone=function(t,e){if(c(t))return c(e)?(e.near=t.near,e.nearValue=t.nearValue,e.far=t.far,e.farValue=t.farValue,e):new Ip(t.near,t.nearValue,t.far,t.farValue)};Ip.packedLength=4;Ip.pack=function(t,e,n){return n=f(n,0),e[n++]=t.near,e[n++]=t.nearValue,e[n++]=t.far,e[n]=t.farValue,e};Ip.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new Ip),n.near=t[e++],n.nearValue=t[e++],n.far=t[e++],n.farValue=t[e],n};Ip.equals=function(t,e){return t===e||c(t)&&c(e)&&t.near===e.near&&t.nearValue===e.nearValue&&t.far===e.far&&t.farValue===e.farValue};Ip.prototype.clone=function(t){return Ip.clone(this,t)};Ip.prototype.equals=function(t){return Ip.equals(this,t)};var ln=Ip;var Dsn=b(W(),1),IG={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ge=Object.freeze(IG);function Np(t){return t===IG.CLAMP_TO_GROUND||t===IG.CLAMP_TO_3D_TILE||t===IG.CLAMP_TO_TERRAIN}function dE(t){return t===IG.RELATIVE_TO_GROUND||t===IG.RELATIVE_TO_3D_TILE||t===IG.RELATIVE_TO_TERRAIN}var Hsn=b(W(),1),EHt={CENTER:0,LEFT:1,RIGHT:-1},to=Object.freeze(EHt);var Psn=b(W(),1),CHt={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},hi=Object.freeze(CHt);var Ksn=b(W(),1),IHt={DONE:0,PENDING:1,FAILED:2},ve=Object.freeze(IHt);var tln=b(W(),1);function $V(){Ut.throwInstantiationError()}Object.defineProperties($V.prototype,{isConstant:{get:Ut.throwInstantiationError},definitionChanged:{get:Ut.throwInstantiationError}});$V.prototype.getValue=Ut.throwInstantiationError;$V.prototype.equals=Ut.throwInstantiationError;$V.equals=function(t,e){return t===e||c(t)&&t.equals(e)};$V.arrayEquals=function(t,e){if(t===e)return!0;if(!c(t)||!c(e)||t.length!==e.length)return!1;let n=t.length;for(let i=0;i-1;o--)a=e[o],c(a._billboard)&&c(a._position)&&s.set(a.id,new xpt(a));for(o=i.length-1;o>-1;o--)a=i[o],c(a._billboard)&&c(a._position)?s.contains(a.id)||s.set(a.id,new xpt(a)):(c7(s.get(a.id),a,l),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],c7(s.get(a.id),a,l),s.remove(a.id)};function c7(t,e,n){c(t)&&(t.billboard=void 0,n.removeBillboard(e))}var hk=Wf;var pAn=b(W(),1);var ern=b(W(),1);var Bln=b(W(),1);var Wln=b(W(),1);function zHt(t,e){this.start=f(t,0),this.stop=f(e,0)}var hd=zHt;function oi(t,e){this.center=p.clone(f(t,p.ZERO)),this.radius=f(e,0)}var p7=new p,V7=new p,u7=new p,Z7=new p,R7=new p,b7=new p,W7=new p,_r=new p,f7=new p,F7=new p,U7=new p,G7=new p,jHt=4/3*k.PI;oi.fromPoints=function(t,e){if(c(e)||(e=new oi),!c(t)||t.length===0)return e.center=p.clone(p.ZERO,e.center),e.radius=0,e;let n=p.clone(t[0],W7),i=p.clone(n,p7),o=p.clone(n,V7),a=p.clone(n,u7),s=p.clone(n,Z7),l=p.clone(n,R7),r=p.clone(n,b7),d=t.length,m;for(m=1;ms.x&&p.clone(n,s),Jl.y&&p.clone(n,l),Mr.z&&p.clone(n,r)}let h=p.magnitudeSquared(p.subtract(s,i,_r)),u=p.magnitudeSquared(p.subtract(l,o,_r)),R=p.magnitudeSquared(p.subtract(r,a,_r)),V=i,F=s,U=h;u>U&&(U=u,V=o,F=l),R>U&&(U=R,V=a,F=r);let G=f7;G.x=(V.x+F.x)*.5,G.y=(V.y+F.y)*.5,G.z=(V.z+F.z)*.5;let A=p.magnitudeSquared(p.subtract(F,G,_r)),S=Math.sqrt(A),g=F7;g.x=i.x,g.y=o.y,g.z=a.z;let C=U7;C.x=s.x,C.y=l.y,C.z=r.z;let y=p.midpoint(g,C,G7),Y=0;for(m=0;mY&&(Y=Q);let J=p.magnitudeSquared(p.subtract(n,G,_r));if(J>A){let M=Math.sqrt(J);S=(S+M)*.5,A=S*S;let Z=M-S;G.x=(S*G.x+Z*n.x)/M,G.y=(S*G.y+Z*n.y)/M,G.z=(S*G.z+Z*n.z)/M}}return Sr.x&&p.clone(o,r),Zd.y&&p.clone(o,d),Em.z&&p.clone(o,m)}let R=p.magnitudeSquared(p.subtract(r,a,_r)),V=p.magnitudeSquared(p.subtract(d,s,_r)),F=p.magnitudeSquared(p.subtract(m,l,_r)),U=a,G=r,A=R;V>A&&(A=V,U=s,G=d),F>A&&(A=F,U=l,G=m);let S=f7;S.x=(U.x+G.x)*.5,S.y=(U.y+G.y)*.5,S.z=(U.z+G.z)*.5;let g=p.magnitudeSquared(p.subtract(G,S,_r)),C=Math.sqrt(g),y=F7;y.x=a.x,y.y=s.y,y.z=l.z;let Y=U7;Y.x=r.x,Y.y=d.y,Y.z=m.z;let Q=p.midpoint(y,Y,G7),J=0;for(u=0;uJ&&(J=M);let Z=p.magnitudeSquared(p.subtract(o,S,_r));if(Z>g){let E=Math.sqrt(Z);C=(C+E)*.5,g=C*C;let I=E-C;S.x=(C*S.x+I*o.x)/E,S.y=(C*S.y+I*o.y)/E,S.z=(C*S.z+I*o.z)/E}}return Cl.x&&p.clone(i,l),Mr.y&&p.clone(i,r),Zd.z&&p.clone(i,d)}let u=p.magnitudeSquared(p.subtract(l,o,_r)),R=p.magnitudeSquared(p.subtract(r,a,_r)),V=p.magnitudeSquared(p.subtract(d,s,_r)),F=o,U=l,G=u;R>G&&(G=R,F=a,U=r),V>G&&(G=V,F=s,U=d);let A=f7;A.x=(F.x+U.x)*.5,A.y=(F.y+U.y)*.5,A.z=(F.z+U.z)*.5;let S=p.magnitudeSquared(p.subtract(U,A,_r)),g=Math.sqrt(S),C=F7;C.x=o.x,C.y=a.y,C.z=s.z;let y=U7;y.x=l.x,y.y=r.y,y.z=d.z;let Y=p.midpoint(C,y,G7),Q=0;for(h=0;hQ&&(Q=J);let M=p.magnitudeSquared(p.subtract(i,A,_r));if(M>S){let Z=Math.sqrt(M);g=(g+Z)*.5,S=g*g;let E=Z-g;A.x=(g*A.x+E*i.x)/Z,A.y=(g*A.y+E*i.y)/Z,A.z=(g*A.z+E*i.z)/Z}}return g=r+s)return t.clone(n),n;if(s>=r+o)return e.clone(n),n;let d=(o+r+s)*.5,m=p.multiplyByScalar(l,(-o+d)/r,dwt);return p.add(m,i,m),p.clone(m,n.center),n.radius=d,n};var cwt=new p;oi.expand=function(t,e,n){n=oi.clone(t,n);let i=p.magnitude(p.subtract(e,n.center,cwt));return i>n.radius&&(n.radius=i),n};oi.intersectPlane=function(t,e){let n=t.center,i=t.radius,o=e.normal,a=p.dot(o,n)+e.distance;return a<-i?yn.OUTSIDE:a-1)return!0;return!1}function Ywt(t){let e=t._template.components,n=t._template.source;if(c(n))t.shaderSource+=`${n} +`;function Ae(t){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=f(t.minificationFilter,On.LINEAR),this._magnificationFilter=f(t.magnificationFilter,Ro.LINEAR),this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,Iwt(t,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),c(Ae._uniformList[this.type])||(Ae._uniformList[this.type]=Object.keys(this._uniforms))}Ae._uniformList={};Ae.fromType=function(t,e){let n=new Ae({fabric:{type:t}});if(c(e))for(let i in e)e.hasOwnProperty(i)&&(n.uniforms[i]=e[i]);return n};Ae.prototype.isTranslucent=function(){if(c(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let t=!0,e=this._translucentFunctions,n=e.length;for(let i=0;i-1)return!0;return!1}function Ywt(t){let e=t._template.components,n=t._template.source;if(c(n))t.shaderSource+=`${n} `;else{if(t.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) { `,t.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); @@ -4664,7 +4664,7 @@ czm_material czm_getMaterial(czm_materialInput materialInput) `:t.shaderSource+=`material.${o} = ${e[o]}; `}t.shaderSource+=`return material; } -`}}var zpt={mat2:pa,mat3:ot,mat4:L},xwt=/\.ktx2$/i;function Xwt(t){let e;return function(n,i){let o=n.uniforms,a=o[t],s=e!==a,l=!c(a)||a===Ae.DefaultImageId;e=a;let r=n._textures[t],d,m;if(a instanceof HTMLVideoElement){if(a.readyState>=2){if(s&&c(r)&&(r!==i.defaultTexture&&r.destroy(),r=void 0),!c(r)||r===i.defaultTexture){let Z=new Hn({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});r=new hn({context:i,source:a,sampler:Z}),n._textures[t]=r;return}r.copyFrom({source:a})}else c(r)||(n._textures[t]=i.defaultTexture);return}if(a instanceof hn&&a!==r){n._texturePaths[t]=void 0;let Z=n._textures[t];c(Z)&&Z!==n._defaultTexture&&Z.destroy(),n._textures[t]=a,d=`${t}Dimensions`,o.hasOwnProperty(d)&&(m=o[d],m.x=a._width,m.y=a._height);return}if(s&&c(r)&&l&&(r!==n._defaultTexture&&r.destroy(),r=void 0),c(r)||(n._texturePaths[t]=void 0,r=n._textures[t]=n._defaultTexture,d=`${t}Dimensions`,o.hasOwnProperty(d)&&(m=o[d],m.x=r._width,m.y=r._height)),l)return;let h=a instanceof te;if(!c(n._texturePaths[t])||h&&a.url!==n._texturePaths[t].url||!h&&a!==n._texturePaths[t]){if(typeof a=="string"||h){let Z=h?a:te.createIfNeeded(a),b;xwt.test(Z.url)?b=Fm(Z.url):b=Z.fetchImage(),Promise.resolve(b).then(function(u){n._loadedImages.push({id:t,image:u})}).catch(function(){c(r)&&r!==n._defaultTexture&&r.destroy(),n._textures[t]=n._defaultTexture})}else(a instanceof HTMLCanvasElement||a instanceof HTMLImageElement)&&n._loadedImages.push({id:t,image:a});n._texturePaths[t]=a}}}function Jwt(t){return function(e,n){let i=e.uniforms[t];if(i instanceof Ld){let a=e._textures[t];a!==e._defaultTexture&&a.destroy(),e._texturePaths[t]=void 0,e._textures[t]=i;return}if(c(e._textures[t])||(e._texturePaths[t]=void 0,e._textures[t]=n.defaultCubeMap),i===Ae.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==e._texturePaths[t]){let a=[te.createIfNeeded(i.positiveX).fetchImage(),te.createIfNeeded(i.negativeX).fetchImage(),te.createIfNeeded(i.positiveY).fetchImage(),te.createIfNeeded(i.negativeY).fetchImage(),te.createIfNeeded(i.positiveZ).fetchImage(),te.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(a).then(function(s){e._loadedCubeMaps.push({id:t,images:s})}),e._texturePaths[t]=o}}}function Lwt(t){let e=t._template.uniforms;for(let n in e)e.hasOwnProperty(n)&&jpt(t,n)}function jpt(t,e){let n=t._strict,i=t._template.uniforms,o=i[e],a=Mwt(o),s;if(a==="channels")s=J2(t,e,o,!1);else{if(a==="sampler2D"){let d=`${e}Dimensions`;Dwt(t,d)>0&&(i[d]={type:"ivec3",x:1,y:1},jpt(t,d))}if(!new RegExp(`uniform\\s+${a}\\s+${e}\\s*;`).test(t.shaderSource)){let d=`uniform ${a} ${e};`;t.shaderSource=d+t.shaderSource}let r=`${e}_${t._count++}`;if(s=J2(t,e,r),t.uniforms[e]=o,a==="sampler2D")t._uniforms[r]=function(){return t._textures[e]},t._updateFunctions.push(Xwt(e));else if(a==="samplerCube")t._uniforms[r]=function(){return t._textures[e]},t._updateFunctions.push(Jwt(e));else if(a.indexOf("mat")!==-1){let d=new zpt[a];t._uniforms[r]=function(){return zpt[a].fromColumnMajorArray(t.uniforms[e],d)}}else t._uniforms[r]=function(){return t.uniforms[e]}}}function Mwt(t){let e=t.type;if(!c(e)){let n=typeof t;if(n==="number")e="float";else if(n==="boolean")e="bool";else if(n==="string"||t instanceof te||t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)/^([rgba]){1,4}$/i.test(t)?e="channels":t===Ae.DefaultCubeMapId?e="samplerCube":e="sampler2D";else if(n==="object")if(Array.isArray(t))(t.length===4||t.length===9||t.length===16)&&(e=`mat${Math.sqrt(t.length)}`);else{let i=0;for(let o in t)t.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?e=`vec${i}`:i===6&&(e="samplerCube")}}return e}function _wt(t){let e=t._strict,n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Ae({strict:e,fabric:n[i],count:t._count});t._count=o._count,t._uniforms=ze(t._uniforms,o._uniforms,!0),t.materials[i]=o,t._translucentFunctions=t._translucentFunctions.concat(o._translucentFunctions);let a="czm_getMaterial",s=`${a}_${t._count++}`;J2(o,a,s),t.shaderSource=o.shaderSource+t.shaderSource;let l=`${s}(materialInput)`,r=J2(t,i,l)}}function J2(t,e,n,i){i=f(i,!0);let o=0,a="([\\w])?",s=`([\\w${i?".":""}])?`,l=new RegExp(s+e+a,"g");return t.shaderSource=t.shaderSource.replace(l,function(r,d,m){return d||m?r:(o+=1,n)}),o}function Dwt(t,e,n){return J2(t,e,e,n)}Ae._materialCache={_materials:{},addMaterial:function(t,e){this._materials[t]=e},getMaterial:function(t){return this._materials[t]}};Ae.DefaultImageId="czm_defaultImage";Ae.DefaultCubeMapId="czm_defaultCubeMap";Ae.ColorType="Color";Ae._materialCache.addMaterial(Ae.ColorType,{fabric:{type:Ae.ColorType,uniforms:{color:new v(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(t){return t.uniforms.color.alpha<1}});Ae.ImageType="Image";Ae._materialCache.addMaterial(Ae.ImageType,{fabric:{type:Ae.ImageType,uniforms:{image:Ae.DefaultImageId,repeat:new K(1,1),color:new v(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(t){return t.uniforms.color.alpha<1}});Ae.DiffuseMapType="DiffuseMap";Ae._materialCache.addMaterial(Ae.DiffuseMapType,{fabric:{type:Ae.DiffuseMapType,uniforms:{image:Ae.DefaultImageId,channels:"rgb",repeat:new K(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ae.AlphaMapType="AlphaMap";Ae._materialCache.addMaterial(Ae.AlphaMapType,{fabric:{type:Ae.AlphaMapType,uniforms:{image:Ae.DefaultImageId,channel:"a",repeat:new K(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Ae.SpecularMapType="SpecularMap";Ae._materialCache.addMaterial(Ae.SpecularMapType,{fabric:{type:Ae.SpecularMapType,uniforms:{image:Ae.DefaultImageId,channel:"r",repeat:new K(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Ae.EmissionMapType="EmissionMap";Ae._materialCache.addMaterial(Ae.EmissionMapType,{fabric:{type:Ae.EmissionMapType,uniforms:{image:Ae.DefaultImageId,channels:"rgb",repeat:new K(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ae.BumpMapType="BumpMap";Ae._materialCache.addMaterial(Ae.BumpMapType,{fabric:{type:Ae.BumpMapType,uniforms:{image:Ae.DefaultImageId,channel:"r",strength:.8,repeat:new K(1,1)},source:U2},translucent:!1});Ae.NormalMapType="NormalMap";Ae._materialCache.addMaterial(Ae.NormalMapType,{fabric:{type:Ae.NormalMapType,uniforms:{image:Ae.DefaultImageId,channels:"rgb",strength:.8,repeat:new K(1,1)},source:I2},translucent:!1});Ae.GridType="Grid";Ae._materialCache.addMaterial(Ae.GridType,{fabric:{type:Ae.GridType,uniforms:{color:new v(0,1,0,1),cellAlpha:.1,lineCount:new K(8,8),lineThickness:new K(1,1),lineOffset:new K(0,0)},source:C2},translucent:function(t){let e=t.uniforms;return e.color.alpha<1||e.cellAlpha<1}});Ae.StripeType="Stripe";Ae._materialCache.addMaterial(Ae.StripeType,{fabric:{type:Ae.StripeType,uniforms:{horizontal:!0,evenColor:new v(1,1,1,.5),oddColor:new v(0,0,1,.5),offset:0,repeat:5},source:x2},translucent:function(t){let e=t.uniforms;return e.evenColor.alpha<1||e.oddColor.alpha<1}});Ae.CheckerboardType="Checkerboard";Ae._materialCache.addMaterial(Ae.CheckerboardType,{fabric:{type:Ae.CheckerboardType,uniforms:{lightColor:new v(1,1,1,.5),darkColor:new v(0,0,0,.5),repeat:new K(5,5)},source:G2},translucent:function(t){let e=t.uniforms;return e.lightColor.alpha<1||e.darkColor.alpha<1}});Ae.DotType="Dot";Ae._materialCache.addMaterial(Ae.DotType,{fabric:{type:Ae.DotType,uniforms:{lightColor:new v(1,1,0,.75),darkColor:new v(0,1,1,.75),repeat:new K(5,5)},source:A2},translucent:function(t){let e=t.uniforms;return e.lightColor.alpha<1||e.darkColor.alpha<1}});Ae.WaterType="Water";Ae._materialCache.addMaterial(Ae.WaterType,{fabric:{type:Ae.WaterType,uniforms:{baseWaterColor:new v(.2,.3,.6,1),blendColor:new v(0,1,.699,1),specularMap:Ae.DefaultImageId,normalMap:Ae.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:X2},translucent:function(t){let e=t.uniforms;return e.baseWaterColor.alpha<1||e.blendColor.alpha<1}});Ae.RimLightingType="RimLighting";Ae._materialCache.addMaterial(Ae.RimLightingType,{fabric:{type:Ae.RimLightingType,uniforms:{color:new v(1,0,0,.7),rimColor:new v(1,1,1,.4),width:.3},source:k2},translucent:function(t){let e=t.uniforms;return e.color.alpha<1||e.rimColor.alpha<1}});Ae.FadeType="Fade";Ae._materialCache.addMaterial(Ae.FadeType,{fabric:{type:Ae.FadeType,uniforms:{fadeInColor:new v(1,0,0,1),fadeOutColor:new v(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new K(.5,.5)},source:E2},translucent:function(t){let e=t.uniforms;return e.fadeInColor.alpha<1||e.fadeOutColor.alpha<1}});Ae.PolylineArrowType="PolylineArrow";Ae._materialCache.addMaterial(Ae.PolylineArrowType,{fabric:{type:Ae.PolylineArrowType,uniforms:{color:new v(1,1,1,1)},source:N2},translucent:!0});Ae.PolylineDashType="PolylineDash";Ae._materialCache.addMaterial(Ae.PolylineDashType,{fabric:{type:Ae.PolylineDashType,uniforms:{color:new v(1,0,1,1),gapColor:new v(0,0,0,0),dashLength:16,dashPattern:255},source:y2},translucent:!0});Ae.PolylineGlowType="PolylineGlow";Ae._materialCache.addMaterial(Ae.PolylineGlowType,{fabric:{type:Ae.PolylineGlowType,uniforms:{color:new v(0,.5,1,1),glowPower:.25,taperPower:1},source:B2},translucent:!0});Ae.PolylineOutlineType="PolylineOutline";Ae._materialCache.addMaterial(Ae.PolylineOutlineType,{fabric:{type:Ae.PolylineOutlineType,uniforms:{color:new v(1,1,1,1),outlineColor:new v(1,0,0,1),outlineWidth:1},source:Q2},translucent:function(t){let e=t.uniforms;return e.color.alpha<1||e.outlineColor.alpha<1}});Ae.ElevationContourType="ElevationContour";Ae._materialCache.addMaterial(Ae.ElevationContourType,{fabric:{type:Ae.ElevationContourType,uniforms:{spacing:100,color:new v(1,0,0,1),width:1},source:S2},translucent:!1});Ae.ElevationRampType="ElevationRamp";Ae._materialCache.addMaterial(Ae.ElevationRampType,{fabric:{type:Ae.ElevationRampType,uniforms:{image:Ae.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:g2},translucent:!1});Ae.SlopeRampMaterialType="SlopeRamp";Ae._materialCache.addMaterial(Ae.SlopeRampMaterialType,{fabric:{type:Ae.SlopeRampMaterialType,uniforms:{image:Ae.DefaultImageId},source:Y2},translucent:!1});Ae.AspectRampMaterialType="AspectRamp";Ae._materialCache.addMaterial(Ae.AspectRampMaterialType,{fabric:{type:Ae.AspectRampMaterialType,uniforms:{image:Ae.DefaultImageId},source:F2},translucent:!1});Ae.ElevationBandType="ElevationBand";Ae._materialCache.addMaterial(Ae.ElevationBandType,{fabric:{type:Ae.ElevationBandType,uniforms:{heights:Ae.DefaultImageId,colors:Ae.DefaultImageId},source:T2},translucent:!0});var eo=Ae;function NG(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.translucent,!0),n=f(t.closed,!1),i=f(t.materialSupport,NG.MaterialSupport.TEXTURED);this.material=c(t.material)?t.material:eo.fromType(eo.ColorType),this.translucent=e,this._vertexShaderSource=f(t.vertexShaderSource,i.vertexShaderSource),this._fragmentShaderSource=f(t.fragmentShaderSource,i.fragmentShaderSource),this._renderState=ua.getDefaultRenderState(e,n,t.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=f(t.flat,!1),this._faceForward=f(t.faceForward,!n)}Object.defineProperties(NG.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});NG.prototype.getFragmentShaderSource=ua.prototype.getFragmentShaderSource;NG.prototype.isTranslucent=ua.prototype.isTranslucent;NG.prototype.getRenderState=ua.prototype.getRenderState;NG.MaterialSupport={BASIC:Object.freeze({vertexFormat:ee.POSITION_AND_NORMAL,vertexShaderSource:R2,fragmentShaderSource:b2}),TEXTURED:Object.freeze({vertexFormat:ee.POSITION_NORMAL_AND_ST,vertexShaderSource:f2,fragmentShaderSource:W2}),ALL:Object.freeze({vertexFormat:ee.ALL,vertexShaderSource:V2,fragmentShaderSource:Z2})};var Fa=NG;var Gmn=R(W(),1);var rmn=R(W(),1),L2=`in vec3 v_positionEC; +`}}var zpt={mat2:pa,mat3:ot,mat4:L},xwt=/\.ktx2$/i;function Xwt(t){let e;return function(n,i){let o=n.uniforms,a=o[t],s=e!==a,l=!c(a)||a===Ae.DefaultImageId;e=a;let r=n._textures[t],d,m;if(a instanceof HTMLVideoElement){if(a.readyState>=2){if(s&&c(r)&&(r!==i.defaultTexture&&r.destroy(),r=void 0),!c(r)||r===i.defaultTexture){let u=new Hn({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});r=new hn({context:i,source:a,sampler:u}),n._textures[t]=r;return}r.copyFrom({source:a})}else c(r)||(n._textures[t]=i.defaultTexture);return}if(a instanceof hn&&a!==r){n._texturePaths[t]=void 0;let u=n._textures[t];c(u)&&u!==n._defaultTexture&&u.destroy(),n._textures[t]=a,d=`${t}Dimensions`,o.hasOwnProperty(d)&&(m=o[d],m.x=a._width,m.y=a._height);return}if(s&&c(r)&&l&&(r!==n._defaultTexture&&r.destroy(),r=void 0),c(r)||(n._texturePaths[t]=void 0,r=n._textures[t]=n._defaultTexture,d=`${t}Dimensions`,o.hasOwnProperty(d)&&(m=o[d],m.x=r._width,m.y=r._height)),l)return;let h=a instanceof te;if(!c(n._texturePaths[t])||h&&a.url!==n._texturePaths[t].url||!h&&a!==n._texturePaths[t]){if(typeof a=="string"||h){let u=h?a:te.createIfNeeded(a),R;xwt.test(u.url)?R=Fm(u.url):R=u.fetchImage(),Promise.resolve(R).then(function(V){n._loadedImages.push({id:t,image:V})}).catch(function(){c(r)&&r!==n._defaultTexture&&r.destroy(),n._textures[t]=n._defaultTexture})}else(a instanceof HTMLCanvasElement||a instanceof HTMLImageElement)&&n._loadedImages.push({id:t,image:a});n._texturePaths[t]=a}}}function Jwt(t){return function(e,n){let i=e.uniforms[t];if(i instanceof Ld){let a=e._textures[t];a!==e._defaultTexture&&a.destroy(),e._texturePaths[t]=void 0,e._textures[t]=i;return}if(c(e._textures[t])||(e._texturePaths[t]=void 0,e._textures[t]=n.defaultCubeMap),i===Ae.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==e._texturePaths[t]){let a=[te.createIfNeeded(i.positiveX).fetchImage(),te.createIfNeeded(i.negativeX).fetchImage(),te.createIfNeeded(i.positiveY).fetchImage(),te.createIfNeeded(i.negativeY).fetchImage(),te.createIfNeeded(i.positiveZ).fetchImage(),te.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(a).then(function(s){e._loadedCubeMaps.push({id:t,images:s})}),e._texturePaths[t]=o}}}function Lwt(t){let e=t._template.uniforms;for(let n in e)e.hasOwnProperty(n)&&jpt(t,n)}function jpt(t,e){let n=t._strict,i=t._template.uniforms,o=i[e],a=Mwt(o),s;if(a==="channels")s=Jk(t,e,o,!1);else{if(a==="sampler2D"){let d=`${e}Dimensions`;Dwt(t,d)>0&&(i[d]={type:"ivec3",x:1,y:1},jpt(t,d))}if(!new RegExp(`uniform\\s+${a}\\s+${e}\\s*;`).test(t.shaderSource)){let d=`uniform ${a} ${e};`;t.shaderSource=d+t.shaderSource}let r=`${e}_${t._count++}`;if(s=Jk(t,e,r),t.uniforms[e]=o,a==="sampler2D")t._uniforms[r]=function(){return t._textures[e]},t._updateFunctions.push(Xwt(e));else if(a==="samplerCube")t._uniforms[r]=function(){return t._textures[e]},t._updateFunctions.push(Jwt(e));else if(a.indexOf("mat")!==-1){let d=new zpt[a];t._uniforms[r]=function(){return zpt[a].fromColumnMajorArray(t.uniforms[e],d)}}else t._uniforms[r]=function(){return t.uniforms[e]}}}function Mwt(t){let e=t.type;if(!c(e)){let n=typeof t;if(n==="number")e="float";else if(n==="boolean")e="bool";else if(n==="string"||t instanceof te||t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)/^([rgba]){1,4}$/i.test(t)?e="channels":t===Ae.DefaultCubeMapId?e="samplerCube":e="sampler2D";else if(n==="object")if(Array.isArray(t))(t.length===4||t.length===9||t.length===16)&&(e=`mat${Math.sqrt(t.length)}`);else{let i=0;for(let o in t)t.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?e=`vec${i}`:i===6&&(e="samplerCube")}}return e}function _wt(t){let e=t._strict,n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Ae({strict:e,fabric:n[i],count:t._count});t._count=o._count,t._uniforms=ze(t._uniforms,o._uniforms,!0),t.materials[i]=o,t._translucentFunctions=t._translucentFunctions.concat(o._translucentFunctions);let a="czm_getMaterial",s=`${a}_${t._count++}`;Jk(o,a,s),t.shaderSource=o.shaderSource+t.shaderSource;let l=`${s}(materialInput)`,r=Jk(t,i,l)}}function Jk(t,e,n,i){i=f(i,!0);let o=0,a="([\\w])?",s=`([\\w${i?".":""}])?`,l=new RegExp(s+e+a,"g");return t.shaderSource=t.shaderSource.replace(l,function(r,d,m){return d||m?r:(o+=1,n)}),o}function Dwt(t,e,n){return Jk(t,e,e,n)}Ae._materialCache={_materials:{},addMaterial:function(t,e){this._materials[t]=e},getMaterial:function(t){return this._materials[t]}};Ae.DefaultImageId="czm_defaultImage";Ae.DefaultCubeMapId="czm_defaultCubeMap";Ae.ColorType="Color";Ae._materialCache.addMaterial(Ae.ColorType,{fabric:{type:Ae.ColorType,uniforms:{color:new v(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(t){return t.uniforms.color.alpha<1}});Ae.ImageType="Image";Ae._materialCache.addMaterial(Ae.ImageType,{fabric:{type:Ae.ImageType,uniforms:{image:Ae.DefaultImageId,repeat:new K(1,1),color:new v(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(t){return t.uniforms.color.alpha<1}});Ae.DiffuseMapType="DiffuseMap";Ae._materialCache.addMaterial(Ae.DiffuseMapType,{fabric:{type:Ae.DiffuseMapType,uniforms:{image:Ae.DefaultImageId,channels:"rgb",repeat:new K(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ae.AlphaMapType="AlphaMap";Ae._materialCache.addMaterial(Ae.AlphaMapType,{fabric:{type:Ae.AlphaMapType,uniforms:{image:Ae.DefaultImageId,channel:"a",repeat:new K(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Ae.SpecularMapType="SpecularMap";Ae._materialCache.addMaterial(Ae.SpecularMapType,{fabric:{type:Ae.SpecularMapType,uniforms:{image:Ae.DefaultImageId,channel:"r",repeat:new K(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Ae.EmissionMapType="EmissionMap";Ae._materialCache.addMaterial(Ae.EmissionMapType,{fabric:{type:Ae.EmissionMapType,uniforms:{image:Ae.DefaultImageId,channels:"rgb",repeat:new K(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ae.BumpMapType="BumpMap";Ae._materialCache.addMaterial(Ae.BumpMapType,{fabric:{type:Ae.BumpMapType,uniforms:{image:Ae.DefaultImageId,channel:"r",strength:.8,repeat:new K(1,1)},source:Uk},translucent:!1});Ae.NormalMapType="NormalMap";Ae._materialCache.addMaterial(Ae.NormalMapType,{fabric:{type:Ae.NormalMapType,uniforms:{image:Ae.DefaultImageId,channels:"rgb",strength:.8,repeat:new K(1,1)},source:Ik},translucent:!1});Ae.GridType="Grid";Ae._materialCache.addMaterial(Ae.GridType,{fabric:{type:Ae.GridType,uniforms:{color:new v(0,1,0,1),cellAlpha:.1,lineCount:new K(8,8),lineThickness:new K(1,1),lineOffset:new K(0,0)},source:Ck},translucent:function(t){let e=t.uniforms;return e.color.alpha<1||e.cellAlpha<1}});Ae.StripeType="Stripe";Ae._materialCache.addMaterial(Ae.StripeType,{fabric:{type:Ae.StripeType,uniforms:{horizontal:!0,evenColor:new v(1,1,1,.5),oddColor:new v(0,0,1,.5),offset:0,repeat:5},source:xk},translucent:function(t){let e=t.uniforms;return e.evenColor.alpha<1||e.oddColor.alpha<1}});Ae.CheckerboardType="Checkerboard";Ae._materialCache.addMaterial(Ae.CheckerboardType,{fabric:{type:Ae.CheckerboardType,uniforms:{lightColor:new v(1,1,1,.5),darkColor:new v(0,0,0,.5),repeat:new K(5,5)},source:Gk},translucent:function(t){let e=t.uniforms;return e.lightColor.alpha<1||e.darkColor.alpha<1}});Ae.DotType="Dot";Ae._materialCache.addMaterial(Ae.DotType,{fabric:{type:Ae.DotType,uniforms:{lightColor:new v(1,1,0,.75),darkColor:new v(0,1,1,.75),repeat:new K(5,5)},source:Ak},translucent:function(t){let e=t.uniforms;return e.lightColor.alpha<1||e.darkColor.alpha<1}});Ae.WaterType="Water";Ae._materialCache.addMaterial(Ae.WaterType,{fabric:{type:Ae.WaterType,uniforms:{baseWaterColor:new v(.2,.3,.6,1),blendColor:new v(0,1,.699,1),specularMap:Ae.DefaultImageId,normalMap:Ae.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:Xk},translucent:function(t){let e=t.uniforms;return e.baseWaterColor.alpha<1||e.blendColor.alpha<1}});Ae.RimLightingType="RimLighting";Ae._materialCache.addMaterial(Ae.RimLightingType,{fabric:{type:Ae.RimLightingType,uniforms:{color:new v(1,0,0,.7),rimColor:new v(1,1,1,.4),width:.3},source:kk},translucent:function(t){let e=t.uniforms;return e.color.alpha<1||e.rimColor.alpha<1}});Ae.FadeType="Fade";Ae._materialCache.addMaterial(Ae.FadeType,{fabric:{type:Ae.FadeType,uniforms:{fadeInColor:new v(1,0,0,1),fadeOutColor:new v(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new K(.5,.5)},source:Ek},translucent:function(t){let e=t.uniforms;return e.fadeInColor.alpha<1||e.fadeOutColor.alpha<1}});Ae.PolylineArrowType="PolylineArrow";Ae._materialCache.addMaterial(Ae.PolylineArrowType,{fabric:{type:Ae.PolylineArrowType,uniforms:{color:new v(1,1,1,1)},source:Nk},translucent:!0});Ae.PolylineDashType="PolylineDash";Ae._materialCache.addMaterial(Ae.PolylineDashType,{fabric:{type:Ae.PolylineDashType,uniforms:{color:new v(1,0,1,1),gapColor:new v(0,0,0,0),dashLength:16,dashPattern:255},source:yk},translucent:!0});Ae.PolylineGlowType="PolylineGlow";Ae._materialCache.addMaterial(Ae.PolylineGlowType,{fabric:{type:Ae.PolylineGlowType,uniforms:{color:new v(0,.5,1,1),glowPower:.25,taperPower:1},source:Bk},translucent:!0});Ae.PolylineOutlineType="PolylineOutline";Ae._materialCache.addMaterial(Ae.PolylineOutlineType,{fabric:{type:Ae.PolylineOutlineType,uniforms:{color:new v(1,1,1,1),outlineColor:new v(1,0,0,1),outlineWidth:1},source:Qk},translucent:function(t){let e=t.uniforms;return e.color.alpha<1||e.outlineColor.alpha<1}});Ae.ElevationContourType="ElevationContour";Ae._materialCache.addMaterial(Ae.ElevationContourType,{fabric:{type:Ae.ElevationContourType,uniforms:{spacing:100,color:new v(1,0,0,1),width:1},source:Tk},translucent:!1});Ae.ElevationRampType="ElevationRamp";Ae._materialCache.addMaterial(Ae.ElevationRampType,{fabric:{type:Ae.ElevationRampType,uniforms:{image:Ae.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:gk},translucent:!1});Ae.SlopeRampMaterialType="SlopeRamp";Ae._materialCache.addMaterial(Ae.SlopeRampMaterialType,{fabric:{type:Ae.SlopeRampMaterialType,uniforms:{image:Ae.DefaultImageId},source:Yk},translucent:!1});Ae.AspectRampMaterialType="AspectRamp";Ae._materialCache.addMaterial(Ae.AspectRampMaterialType,{fabric:{type:Ae.AspectRampMaterialType,uniforms:{image:Ae.DefaultImageId},source:Fk},translucent:!1});Ae.ElevationBandType="ElevationBand";Ae._materialCache.addMaterial(Ae.ElevationBandType,{fabric:{type:Ae.ElevationBandType,uniforms:{heights:Ae.DefaultImageId,colors:Ae.DefaultImageId},source:Sk},translucent:!0});var eo=Ae;function NG(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.translucent,!0),n=f(t.closed,!1),i=f(t.materialSupport,NG.MaterialSupport.TEXTURED);this.material=c(t.material)?t.material:eo.fromType(eo.ColorType),this.translucent=e,this._vertexShaderSource=f(t.vertexShaderSource,i.vertexShaderSource),this._fragmentShaderSource=f(t.fragmentShaderSource,i.fragmentShaderSource),this._renderState=Va.getDefaultRenderState(e,n,t.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=f(t.flat,!1),this._faceForward=f(t.faceForward,!n)}Object.defineProperties(NG.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});NG.prototype.getFragmentShaderSource=Va.prototype.getFragmentShaderSource;NG.prototype.isTranslucent=Va.prototype.isTranslucent;NG.prototype.getRenderState=Va.prototype.getRenderState;NG.MaterialSupport={BASIC:Object.freeze({vertexFormat:ee.POSITION_AND_NORMAL,vertexShaderSource:bk,fragmentShaderSource:Rk}),TEXTURED:Object.freeze({vertexFormat:ee.POSITION_NORMAL_AND_ST,vertexShaderSource:fk,fragmentShaderSource:Wk}),ALL:Object.freeze({vertexFormat:ee.ALL,vertexShaderSource:Zk,fragmentShaderSource:uk})};var Fa=NG;var Gmn=b(W(),1);var rmn=b(W(),1),Lk=`in vec3 v_positionEC; in vec3 v_normalEC; in vec4 v_color; @@ -4688,7 +4688,7 @@ void main() out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); } -`;var cmn=R(W(),1),M2=`in vec3 position3DHigh; +`;var cmn=b(W(),1),Mk=`in vec3 position3DHigh; in vec3 position3DLow; in vec3 normal; in vec4 color; @@ -4708,13 +4708,13 @@ void main() gl_Position = czm_modelViewProjectionRelativeToEye * p; } -`;var hmn=R(W(),1),yG=`in vec4 v_color; +`;var hmn=b(W(),1),yG=`in vec4 v_color; void main() { out_FragColor = czm_gammaCorrect(v_color); } -`;var umn=R(W(),1),_2=`in vec3 position3DHigh; +`;var Vmn=b(W(),1),_k=`in vec3 position3DHigh; in vec3 position3DLow; in vec4 color; in float batchId; @@ -4729,7 +4729,7 @@ void main() gl_Position = czm_modelViewProjectionRelativeToEye * p; } -`;function IR(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.translucent,!0),n=f(t.closed,!1),i=f(t.flat,!1),o=i?_2:M2,a=i?yG:L2,s=i?IR.FLAT_VERTEX_FORMAT:IR.VERTEX_FORMAT;this.material=void 0,this.translucent=e,this._vertexShaderSource=f(t.vertexShaderSource,o),this._fragmentShaderSource=f(t.fragmentShaderSource,a),this._renderState=ua.getDefaultRenderState(e,n,t.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=f(t.faceForward,!n)}Object.defineProperties(IR.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});IR.VERTEX_FORMAT=ee.POSITION_AND_NORMAL;IR.FLAT_VERTEX_FORMAT=ee.POSITION_ONLY;IR.prototype.getFragmentShaderSource=ua.prototype.getFragmentShaderSource;IR.prototype.isTranslucent=ua.prototype.isTranslucent;IR.prototype.getRenderState=ua.prototype.getRenderState;var jn=IR;var Imn=R(W(),1);function pE(t){this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this.color=t}Object.defineProperties(pE.prototype,{isConstant:{get:function(){return et.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color")});pE.prototype.getType=function(t){return"Color"};pE.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,v.WHITE,e.color),e};pE.prototype.equals=function(t){return this===t||t instanceof pE&&et.equals(this._color,t._color)};var Cn=pE;var _bn=R(W(),1);var Ubn=R(W(),1);var $mn=R(W(),1);var Jmn=R(W(),1);function ff(t){t=f(t,f.EMPTY_OBJECT),this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._rectangle=f(t.rectangle,Gt.MAX_VALUE),this._projection=new yo(this._ellipsoid),this._numberOfLevelZeroTilesX=f(t.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=f(t.numberOfLevelZeroTilesY,1)}Object.defineProperties(ff.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});ff.prototype.getNumberOfXTilesAtLevel=function(t){return this._numberOfLevelZeroTilesX<=o&&(d=o-1);let m=(i.north-t.latitude)/l|0;return m>=a&&(m=a-1),c(n)?(n.x=d,n.y=m,n):new K(d,m)};var Qo=ff;var qpt=new p,$pt=new p,tut=new gt,S7=new p,Owt=new p,eut=new Ft,Hwt=new Qo,D2=[new gt,new gt,new gt,new gt],O2=new K,fl={};fl.initialize=function(){let t=fl._initPromise;return c(t)||(t=te.fetchJson(Dn("Assets/approximateTerrainHeights.json")).then(function(e){fl._terrainHeights=e}),fl._initPromise=t),t};fl.getMinimumMaximumHeights=function(t,e){e=f(e,mt.WGS84);let n=nut(t),i=fl._defaultMinTerrainHeight,o=fl._defaultMaxTerrainHeight;if(c(n)){let a=`${n.level}-${n.x}-${n.y}`,s=fl._terrainHeights[a];c(s)&&(i=s[0],o=s[1]),e.cartographicToCartesian(Gt.northeast(t,tut),qpt),e.cartographicToCartesian(Gt.southwest(t,tut),$pt),p.midpoint($pt,qpt,S7);let l=e.scaleToGeodeticSurface(S7,Owt);if(c(l)){let r=p.distance(S7,l);i=Math.min(i,-r)}else i=fl._defaultMinTerrainHeight}return i=Math.max(fl._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};fl.getBoundingSphere=function(t,e){e=f(e,mt.WGS84);let n=nut(t),i=fl._defaultMaxTerrainHeight;if(c(n)){let a=`${n.level}-${n.x}-${n.y}`,s=fl._terrainHeights[a];c(s)&&(i=s[1])}let o=Ft.fromRectangle3D(t,e,0);return Ft.fromRectangle3D(t,e,i,eut),Ft.union(o,eut,o)};function nut(t){gt.fromRadians(t.east,t.north,0,D2[0]),gt.fromRadians(t.west,t.north,0,D2[1]),gt.fromRadians(t.east,t.south,0,D2[2]),gt.fromRadians(t.west,t.south,0,D2[3]);let e=0,n=0,i=0,o=0,a=fl._terrainHeightsMaxLevel,s;for(s=0;s<=a;++s){let l=!1;for(let r=0;r<4;++r){let d=D2[r];if(Hwt.positionToTileXY(d,s,O2),r===0)i=O2.x,o=O2.y;else if(i!==O2.x||o!==O2.y){l=!0;break}}if(l)break;e=i,n=o}if(s!==0)return{x:e,y:n,level:s>a?a:s-1}}fl._terrainHeightsMaxLevel=6;fl._defaultMaxTerrainHeight=9e3;fl._defaultMinTerrainHeight=-1e5;fl._terrainHeights=gH?gH:void 0;fl._initPromise=gH?new Promise(function(t){t()}):void 0;Object.defineProperties(fl,{initialized:{get:function(){return c(fl._terrainHeights)}}});var uo=fl;var cpn=R(W(),1);var Phn=R(W(),1);var ahn=R(W(),1);function Ec(t,e,n){this.minimum=p.clone(f(t,p.ZERO)),this.maximum=p.clone(f(e,p.ZERO)),c(n)?n=p.clone(n):n=p.midpoint(this.minimum,this.maximum,new p),this.center=n}Ec.fromCorners=function(t,e,n){return c(n)||(n=new Ec),n.minimum=p.clone(t,n.minimum),n.maximum=p.clone(e,n.maximum),n.center=p.midpoint(t,e,n.center),n};Ec.fromPoints=function(t,e){if(c(e)||(e=new Ec),!c(t)||t.length===0)return e.minimum=p.clone(p.ZERO,e.minimum),e.maximum=p.clone(p.ZERO,e.maximum),e.center=p.clone(p.ZERO,e.center),e;let n=t[0].x,i=t[0].y,o=t[0].z,a=t[0].x,s=t[0].y,l=t[0].z,r=t.length;for(let h=1;h0?yn.INSIDE:a+o<0?yn.OUTSIDE:yn.INTERSECTING};Ec.prototype.clone=function(t){return Ec.clone(this,t)};Ec.prototype.intersectPlane=function(t){return Ec.intersectPlane(this,t)};Ec.prototype.equals=function(t){return Ec.equals(this,t)};var Ff=Ec;var Bhn=R(W(),1);var rhn=R(W(),1);var g7={};g7.computeDiscriminant=function(t,e,n){return e*e-4*t*n};function iut(t,e,n){let i=t+e;return k.sign(t)!==k.sign(e)&&Math.abs(i/Math.max(Math.abs(t),Math.abs(e)))d&&d/r0?[l/t,n/l]:[n/l,l/t]};var Cc=g7;var Vhn=R(W(),1);var mhn=R(W(),1);var C7={};C7.computeDiscriminant=function(t,e,n,i){let o=t*t,a=e*e,s=n*n,l=i*i;return 18*t*e*n*i+a*s-27*o*l-4*(t*s*n+a*e*i)};function E7(t,e,n,i){let o=t,a=e/3,s=n/3,l=i,r=o*s,d=a*l,m=a*a,h=s*s,Z=o*s-m,b=o*l-a*s,u=a*l-h,F=4*Z*u-b*b,U,G;if(F<0){let nt,$,dt;m*d>=r*h?(nt=o,$=Z,dt=-2*a*Z+o*b):(nt=l,$=u,dt=-l*b+2*s*u);let at=-(dt<0?-1:1)*Math.abs(nt)*Math.sqrt(-F);G=-dt+at;let st=G/2,Et=st<0?-Math.pow(-st,1/3):Math.pow(st,1/3),Qt=G===at?-Et:-$/Et;return U=$<=0?Et+Qt:-dt/(Et*Et+Qt*Qt+$),m*d>=r*h?[(U-a)/o]:[-l/(U+s)]}let A=Z,T=-2*a*Z+o*b,g=u,C=-l*b+2*s*u,y=Math.sqrt(F),Y=Math.sqrt(3)/2,Q=Math.abs(Math.atan2(o*y,-T)/3);U=2*Math.sqrt(-A);let J=Math.cos(Q);G=U*J;let M=U*(-J/2-Y*Math.sin(Q)),V=G+M>2*a?G-a:M-a,E=o,I=V/E;Q=Math.abs(Math.atan2(l*y,-C)/3),U=2*Math.sqrt(-g),J=Math.cos(Q),G=U*J,M=U*(-J/2-Y*Math.sin(Q));let B=-l,X=G+M<2*s?G+s:M+s,_=B/X,P=E*X,w=-V*X-E*B,z=V*B,H=(s*w-a*z)/(-a*w+s*P);return I<=H?I<=_?H<=_?[I,H,_]:[I,_,H]:[_,I,H]:I<=_?[H,I,_]:H<=_?[H,_,I]:[_,H,I]}C7.computeRealRoots=function(t,e,n,i){let o,a;if(t===0)return Cc.computeRealRoots(e,n,i);if(e===0){if(n===0){if(i===0)return[0,0,0];a=-i/t;let s=a<0?-Math.pow(-a,1/3):Math.pow(a,1/3);return[s,s,s]}else if(i===0)return o=Cc.computeRealRoots(t,0,n),o.Length===0?[0]:[o[0],0,o[1]];return E7(t,0,n,i)}else{if(n===0)return i===0?(a=-e/t,a<0?[a,0,0]:[0,0,a]):E7(t,e,0,i);if(i===0)return o=Cc.computeRealRoots(t,e,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return E7(t,e,n,i)};var BG=C7;var I7={};I7.computeDiscriminant=function(t,e,n,i,o){let a=t*t,s=a*t,l=e*e,r=l*e,d=n*n,m=d*n,h=i*i,Z=h*i,b=o*o,u=b*o;return l*d*h-4*r*Z-4*t*m*h+18*t*e*n*Z-27*a*h*h+256*s*u+o*(18*r*n*i-4*l*m+16*t*d*d-80*t*e*d*i-6*t*l*h+144*a*n*h)+b*(144*t*l*n-27*l*l-128*a*d-192*a*e*i)};function eZ(t,e,n,i){let o=t*t,a=e-3*o/8,s=n-e*t/2+o*t/8,l=i-n*t/4+e*o/16-3*o*o/256,r=BG.computeRealRoots(1,2*a,a*a-4*l,-s*s);if(r.length>0){let d=-t/4,m=r[r.length-1];if(Math.abs(m)=0&&b>=0){let F=Math.sqrt(Z),U=Math.sqrt(b);return[d-U,d-F,d+F,d+U]}else{if(Z>=0&&b<0)return u=Math.sqrt(Z),[d-u,d+u];if(Z<0&&b>=0)return u=Math.sqrt(b),[d-u,d+u]}}return[]}else if(m>0){let h=Math.sqrt(m),Z=(a+m-s/h)/2,b=(a+m+s/h)/2,u=Cc.computeRealRoots(1,h,Z),F=Cc.computeRealRoots(1,-h,b);return u.length!==0?(u[0]+=d,u[1]+=d,F.length!==0?(F[0]+=d,F[1]+=d,u[1]<=F[0]?[u[0],u[1],F[0],F[1]]:F[1]<=u[0]?[F[0],F[1],u[0],u[1]]:u[0]>=F[0]&&u[1]<=F[1]?[F[0],u[0],u[1],F[1]]:F[0]>=u[0]&&F[1]<=u[1]?[u[0],F[0],F[1],u[1]]:u[0]>F[0]&&u[0]0){let h=m[0],Z=e-h,b=Z*Z,u=t/2,F=Z/2,U=b-4*i,G=b+4*Math.abs(i),A=s-4*h,T=s+4*Math.abs(h),g,C;if(h<0||U*T=V[0]&&M[1]<=V[1]?[V[0],M[0],M[1],V[1]]:V[0]>=M[0]&&V[1]<=M[1]?[M[0],V[0],V[1],M[1]]:M[0]>V[0]&&M[0]m)||(Z=p.cross(h,l,aut),u=p.dot(s,Z),u<0||b+u>m))return;F=p.dot(r,Z)/m}else{if(Math.abs(m)1||(Z=p.cross(h,l,aut),u=p.dot(s,Z)*U,u<0||b+u>1))return;F=p.dot(r,Z)*U}return F};os.rayTriangle=function(t,e,n,i,o,a){let s=os.rayTriangleParametric(t,e,n,i,o);if(!(!c(s)||s<0))return c(a)||(a=new p),p.multiplyByScalar(t.direction,s,a),p.add(t.origin,a,a)};var vwt=new di;os.lineSegmentTriangle=function(t,e,n,i,o,a,s){let l=vwt;p.clone(t,l.origin),p.subtract(e,t,l.direction),p.normalize(l.direction,l.direction);let r=os.rayTriangleParametric(l,n,i,o,a);if(!(!c(r)||r<0||r>p.distance(t,e)))return c(s)||(s=new p),p.multiplyByScalar(l.direction,r,s),p.add(l.origin,s,s)};function Kwt(t,e,n,i){let o=e*e-4*t*n;if(o<0)return;if(o>0){let s=1/(2*t),l=Math.sqrt(o),r=(-e+l)*s,d=(-e-l)*s;return rs))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var qwt=new p,$wt=new p;os.rayEllipsoid=function(t,e){let n=e.oneOverRadii,i=p.multiplyComponents(n,t.origin,qwt),o=p.multiplyComponents(n,t.direction,$wt),a=p.magnitudeSquared(i),s=p.dot(i,o),l,r,d,m,h;if(a>1){if(s>=0)return;let Z=s*s;if(l=a-1,r=p.magnitudeSquared(o),d=r*l,Zd){m=s*s-d,h=-s+Math.sqrt(m);let u=h/r,F=l/h;return u0?b.push(new p(i,o*J,o*-E)):E!==0?(b.push(new p(i,o*J,o*-E)),b.push(new p(i,o*J,o*E)),++Q):b.push(new p(i,o*J,o*E))}return b};var N7=new p,sut=new p,lut=new p,HH=new p,tPt=new p,ePt=new ot,nPt=new ot,iPt=new ot,oPt=new ot,aPt=new ot,rut=new ot,dut=new ot,cut=new p,sPt=new p,lPt=new gt;os.grazingAltitudeLocation=function(t,e){let n=t.origin,i=t.direction;if(!p.equals(n,p.ZERO)){let y=e.geodeticSurfaceNormal(n,N7);if(p.dot(i,y)>=0)return n}let o=c(this.rayEllipsoid(t,e)),a=e.transformPositionToScaledSpace(i,N7),s=p.normalize(a,a),l=p.mostOrthogonalAxis(a,HH),r=p.normalize(p.cross(l,s,sut),sut),d=p.normalize(p.cross(s,r,lut),lut),m=ePt;m[0]=s.x,m[1]=s.y,m[2]=s.z,m[3]=r.x,m[4]=r.y,m[5]=r.z,m[6]=d.x,m[7]=d.y,m[8]=d.z;let h=ot.transpose(m,nPt),Z=ot.fromScale(e.radii,iPt),b=ot.fromScale(e.oneOverRadii,oPt),u=aPt;u[0]=0,u[1]=-i.z,u[2]=i.y,u[3]=i.z,u[4]=0,u[5]=-i.x,u[6]=-i.y,u[7]=i.x,u[8]=0;let F=ot.multiply(ot.multiply(h,b,rut),u,rut),U=ot.multiply(ot.multiply(F,Z,dut),m,dut),G=ot.multiplyByVector(F,n,tPt),A=os.quadraticVectorExpression(U,p.negate(G,N7),0,0,1),T,g,C=A.length;if(C>0){let y=p.clone(p.ZERO,sPt),Y=Number.NEGATIVE_INFINITY;for(let J=0;JY&&(Y=V,y=p.clone(T,y))}let Q=e.cartesianToCartographic(y,lPt);return Y=k.clamp(Y,0,1),g=p.magnitude(p.subtract(y,n,HH))*Math.sqrt(1-Y*Y),g=o?-g:g,Q.height=g,e.cartographicToCartesian(Q,new p)}};var rPt=new p;os.lineSegmentPlane=function(t,e,n,i){c(i)||(i=new p);let o=p.subtract(e,t,rPt),a=n.normal,s=p.dot(a,o);if(Math.abs(s)1))return p.multiplyByScalar(o,r,i),p.add(t,i,i),i};os.trianglePlaneIntersection=function(t,e,n,i){let o=i.normal,a=i.distance,s=p.dot(o,t)+a<0,l=p.dot(o,e)+a<0,r=p.dot(o,n)+a<0,d=0;d+=s?1:0,d+=l?1:0,d+=r?1:0;let m,h;if((d===1||d===2)&&(m=new p,h=new p),d===1){if(s)return os.lineSegmentPlane(t,e,i,m),os.lineSegmentPlane(t,n,i,h),{positions:[t,e,n,m,h],indices:[0,3,4,1,2,4,1,4,3]};if(l)return os.lineSegmentPlane(e,n,i,m),os.lineSegmentPlane(e,t,i,h),{positions:[t,e,n,m,h],indices:[1,3,4,2,0,4,2,4,3]};if(r)return os.lineSegmentPlane(n,t,i,m),os.lineSegmentPlane(n,e,i,h),{positions:[t,e,n,m,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(d===2)if(s)if(l){if(!r)return os.lineSegmentPlane(t,n,i,m),os.lineSegmentPlane(e,n,i,h),{positions:[t,e,n,m,h],indices:[0,1,4,0,4,3,2,3,4]}}else return os.lineSegmentPlane(n,e,i,m),os.lineSegmentPlane(t,e,i,h),{positions:[t,e,n,m,h],indices:[2,0,4,2,4,3,1,3,4]};else return os.lineSegmentPlane(e,t,i,m),os.lineSegmentPlane(n,t,i,h),{positions:[t,e,n,m,h],indices:[1,2,4,1,4,3,0,3,4]}};var no=os;var y7=new Rt;function OV(t,e){e=f(e,mt.WGS84),t=e.scaleToGeodeticSurface(t);let n=Pe.eastNorthUpToFixedFrame(t,e);this._ellipsoid=e,this._origin=t,this._xAxis=p.fromCartesian4(L.getColumn(n,0,y7)),this._yAxis=p.fromCartesian4(L.getColumn(n,1,y7));let i=p.fromCartesian4(L.getColumn(n,2,y7));this._plane=Kn.fromPointNormal(t,i)}Object.defineProperties(OV.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var dPt=new Ff;OV.fromPoints=function(t,e){let n=Ff.fromPoints(t,dPt);return new OV(n.center,e)};var put=new di,wH=new p;OV.prototype.projectPointOntoPlane=function(t,e){let n=put;n.origin=t,p.normalize(t,n.direction);let i=no.rayPlane(n,this._plane,wH);if(c(i)||(p.negate(n.direction,n.direction),i=no.rayPlane(n,this._plane,wH)),c(i)){let o=p.subtract(i,this._origin,i),a=p.dot(this._xAxis,o),s=p.dot(this._yAxis,o);return c(e)?(e.x=a,e.y=s,e):new K(a,s)}};OV.prototype.projectPointsOntoPlane=function(t,e){c(e)||(e=[]);let n=0,i=t.length;for(let o=0;o0?0:Y.latitude,E=gt.fromRadians(M,t.north,n,FPt),I=gt.fromRadians(t.west,t.north,n,UPt),B=gt.fromRadians(t.west,V,n,GPt),X=gt.fromRadians(t.west,t.south,n,APt),_=gt.fromRadians(M,t.south,n,TPt),P=i.cartographicToCartesian(E,SPt),w=i.cartographicToCartesian(I,Vut),z=i.cartographicToCartesian(B,gPt),H=i.cartographicToCartesian(X,but),nt=i.cartographicToCartesian(_,EPt),$=J.projectPointToNearestOnPlane(P,CPt),dt=J.projectPointToNearestOnPlane(w,IPt),q=J.projectPointToNearestOnPlane(z,NPt),at=J.projectPointToNearestOnPlane(H,yPt),st=J.projectPointToNearestOnPlane(nt,BPt);return a=Math.min(dt.x,q.x,at.x),s=-a,r=Math.max(dt.y,$.y),l=Math.min(at.y,st.y),I.height=X.height=e,w=i.cartographicToCartesian(I,Vut),H=i.cartographicToCartesian(X,but),d=Math.min(Kn.getPointDistance(h,w),Kn.getPointDistance(h,H)),m=n,uut(J.origin,J.xAxis,J.yAxis,J.zAxis,a,s,l,r,d,m,o)}let Z=t.south>0,b=t.north<0,u=Z?t.south:b?t.north:0,F=Gt.center(t,Zut).longitude,U=p.fromRadians(F,u,n,i,QPt);U.z=0;let A=Math.abs(U.x)=r?yn.INSIDE:yn.INTERSECTING};var fut=new p,Fut=new p,Uut=new p,DPt=new p,Rut=new p,OPt=new p;Ho.distanceSquaredTo=function(t,e){let n=p.subtract(e,t.center,Wut),i=t.halfAxes,o=ot.getColumn(i,0,fut),a=ot.getColumn(i,1,Fut),s=ot.getColumn(i,2,Uut),l=p.magnitude(o),r=p.magnitude(a),d=p.magnitude(s),m=!0,h=!0,Z=!0;l>0?p.divideByScalar(o,l,o):m=!1,r>0?p.divideByScalar(a,r,a):h=!1,d>0?p.divideByScalar(s,d,s):Z=!1;let b=!m+!h+!Z,u,F,U;if(b===1){let g=o;u=a,F=s,h?Z||(g=s,F=o):(g=a,u=o),U=p.cross(u,F,Rut),g===o?o=U:g===a?a=U:g===s&&(s=U)}else if(b===2){u=o,h?u=a:Z&&(u=s);let g=p.UNIT_Y;g.equalsEpsilon(u,k.EPSILON3)&&(g=p.UNIT_X),F=p.cross(u,g,DPt),p.normalize(F,F),U=p.cross(u,F,Rut),p.normalize(U,U),u===o?(a=F,s=U):u===a?(s=F,o=U):u===s&&(o=F,a=U)}else b===3&&(o=p.UNIT_X,a=p.UNIT_Y,s=p.UNIT_Z);let G=OPt;G.x=p.dot(n,o),G.y=p.dot(n,a),G.z=p.dot(n,s);let A=0,T;return G.x<-l?(T=G.x+l,A+=T*T):G.x>l&&(T=G.x-l,A+=T*T),G.y<-r?(T=G.y+r,A+=T*T):G.y>r&&(T=G.y-r,A+=T*T),G.z<-d?(T=G.z+d,A+=T*T):G.z>d&&(T=G.z-d,A+=T*T),A};var HPt=new p,wPt=new p;Ho.computePlaneDistances=function(t,e,n,i){c(i)||(i=new hd);let o=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,s=t.center,l=t.halfAxes,r=ot.getColumn(l,0,fut),d=ot.getColumn(l,1,Fut),m=ot.getColumn(l,2,Uut),h=p.add(r,d,HPt);p.add(h,m,h),p.add(h,s,h);let Z=p.subtract(h,e,wPt),b=p.dot(n,Z);return o=Math.min(b,o),a=Math.max(b,a),p.add(s,r,h),p.add(h,d,h),p.subtract(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),p.add(s,r,h),p.subtract(h,d,h),p.add(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),p.add(s,r,h),p.subtract(h,d,h),p.subtract(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),p.subtract(s,r,h),p.add(h,d,h),p.add(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),p.subtract(s,r,h),p.add(h,d,h),p.subtract(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),p.subtract(s,r,h),p.subtract(h,d,h),p.add(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),p.subtract(s,r,h),p.subtract(h,d,h),p.subtract(h,m,h),p.subtract(h,e,Z),b=p.dot(n,Z),o=Math.min(b,o),a=Math.max(b,a),i.start=o,i.stop=a,i};var PPt=new p,vPt=new p,KPt=new p;Ho.computeCorners=function(t,e){c(e)||(e=[new p,new p,new p,new p,new p,new p,new p,new p]);let n=t.center,i=t.halfAxes,o=ot.getColumn(i,0,PPt),a=ot.getColumn(i,1,vPt),s=ot.getColumn(i,2,KPt);return p.clone(n,e[0]),p.subtract(e[0],o,e[0]),p.subtract(e[0],a,e[0]),p.subtract(e[0],s,e[0]),p.clone(n,e[1]),p.subtract(e[1],o,e[1]),p.subtract(e[1],a,e[1]),p.add(e[1],s,e[1]),p.clone(n,e[2]),p.subtract(e[2],o,e[2]),p.add(e[2],a,e[2]),p.subtract(e[2],s,e[2]),p.clone(n,e[3]),p.subtract(e[3],o,e[3]),p.add(e[3],a,e[3]),p.add(e[3],s,e[3]),p.clone(n,e[4]),p.add(e[4],o,e[4]),p.subtract(e[4],a,e[4]),p.subtract(e[4],s,e[4]),p.clone(n,e[5]),p.add(e[5],o,e[5]),p.subtract(e[5],a,e[5]),p.add(e[5],s,e[5]),p.clone(n,e[6]),p.add(e[6],o,e[6]),p.add(e[6],a,e[6]),p.subtract(e[6],s,e[6]),p.clone(n,e[7]),p.add(e[7],o,e[7]),p.add(e[7],a,e[7]),p.add(e[7],s,e[7]),e};var zPt=new ot;Ho.computeTransformation=function(t,e){c(e)||(e=new L);let n=t.center,i=ot.multiplyByUniformScale(t.halfAxes,2,zPt);return L.fromRotationTranslation(i,n,e)};var jPt=new Ft;Ho.isOccluded=function(t,e){let n=Ft.fromOrientedBoundingBox(t,jPt);return!e.isBoundingSphereVisible(n)};Ho.prototype.intersectPlane=function(t){return Ho.intersectPlane(this,t)};Ho.prototype.distanceSquaredTo=function(t){return Ho.distanceSquaredTo(this,t)};Ho.prototype.computePlaneDistances=function(t,e,n){return Ho.computePlaneDistances(this,t,e,n)};Ho.prototype.computeCorners=function(t){return Ho.computeCorners(this,t)};Ho.prototype.computeTransformation=function(t){return Ho.computeTransformation(this,t)};Ho.prototype.isOccluded=function(t){return Ho.isOccluded(this,t)};Ho.equals=function(t,e){return t===e||c(t)&&c(e)&&p.equals(t.center,e.center)&&ot.equals(t.halfAxes,e.halfAxes)};Ho.prototype.clone=function(t){return Ho.clone(this,t)};Ho.prototype.equals=function(t){return Ho.equals(this,t)};var ci=Ho;var Zpn=R(W(),1);var PH={};PH.getHeight=function(t,e,n){return(t-n)*e+n};var qPt=new gt;PH.getPosition=function(t,e,n,i,o){let a=e.cartesianToCartographic(t,qPt);if(!c(a))return p.clone(t,o);let s=PH.getHeight(a.height,n,i);return p.fromRadians(a.longitude,a.latitude,s,e,o)};var Ps=PH;var obn=R(W(),1);var bpn=R(W(),1),P2=`in vec3 position3DHigh; +`;function Ib(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.translucent,!0),n=f(t.closed,!1),i=f(t.flat,!1),o=i?_k:Mk,a=i?yG:Lk,s=i?Ib.FLAT_VERTEX_FORMAT:Ib.VERTEX_FORMAT;this.material=void 0,this.translucent=e,this._vertexShaderSource=f(t.vertexShaderSource,o),this._fragmentShaderSource=f(t.fragmentShaderSource,a),this._renderState=Va.getDefaultRenderState(e,n,t.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=f(t.faceForward,!n)}Object.defineProperties(Ib.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});Ib.VERTEX_FORMAT=ee.POSITION_AND_NORMAL;Ib.FLAT_VERTEX_FORMAT=ee.POSITION_ONLY;Ib.prototype.getFragmentShaderSource=Va.prototype.getFragmentShaderSource;Ib.prototype.isTranslucent=Va.prototype.isTranslucent;Ib.prototype.getRenderState=Va.prototype.getRenderState;var jn=Ib;var Imn=b(W(),1);function pE(t){this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this.color=t}Object.defineProperties(pE.prototype,{isConstant:{get:function(){return et.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color")});pE.prototype.getType=function(t){return"Color"};pE.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,v.WHITE,e.color),e};pE.prototype.equals=function(t){return this===t||t instanceof pE&&et.equals(this._color,t._color)};var Cn=pE;var _Rn=b(W(),1);var URn=b(W(),1);var $mn=b(W(),1);var Jmn=b(W(),1);function ff(t){t=f(t,f.EMPTY_OBJECT),this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._rectangle=f(t.rectangle,Gt.MAX_VALUE),this._projection=new yo(this._ellipsoid),this._numberOfLevelZeroTilesX=f(t.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=f(t.numberOfLevelZeroTilesY,1)}Object.defineProperties(ff.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});ff.prototype.getNumberOfXTilesAtLevel=function(t){return this._numberOfLevelZeroTilesX<=o&&(d=o-1);let m=(i.north-t.latitude)/l|0;return m>=a&&(m=a-1),c(n)?(n.x=d,n.y=m,n):new K(d,m)};var Qo=ff;var qpt=new p,$pt=new p,tVt=new gt,T7=new p,Owt=new p,eVt=new Ft,Hwt=new Qo,Dk=[new gt,new gt,new gt,new gt],Ok=new K,fl={};fl.initialize=function(){let t=fl._initPromise;return c(t)||(t=te.fetchJson(Dn("Assets/approximateTerrainHeights.json")).then(function(e){fl._terrainHeights=e}),fl._initPromise=t),t};fl.getMinimumMaximumHeights=function(t,e){e=f(e,mt.WGS84);let n=nVt(t),i=fl._defaultMinTerrainHeight,o=fl._defaultMaxTerrainHeight;if(c(n)){let a=`${n.level}-${n.x}-${n.y}`,s=fl._terrainHeights[a];c(s)&&(i=s[0],o=s[1]),e.cartographicToCartesian(Gt.northeast(t,tVt),qpt),e.cartographicToCartesian(Gt.southwest(t,tVt),$pt),p.midpoint($pt,qpt,T7);let l=e.scaleToGeodeticSurface(T7,Owt);if(c(l)){let r=p.distance(T7,l);i=Math.min(i,-r)}else i=fl._defaultMinTerrainHeight}return i=Math.max(fl._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};fl.getBoundingSphere=function(t,e){e=f(e,mt.WGS84);let n=nVt(t),i=fl._defaultMaxTerrainHeight;if(c(n)){let a=`${n.level}-${n.x}-${n.y}`,s=fl._terrainHeights[a];c(s)&&(i=s[1])}let o=Ft.fromRectangle3D(t,e,0);return Ft.fromRectangle3D(t,e,i,eVt),Ft.union(o,eVt,o)};function nVt(t){gt.fromRadians(t.east,t.north,0,Dk[0]),gt.fromRadians(t.west,t.north,0,Dk[1]),gt.fromRadians(t.east,t.south,0,Dk[2]),gt.fromRadians(t.west,t.south,0,Dk[3]);let e=0,n=0,i=0,o=0,a=fl._terrainHeightsMaxLevel,s;for(s=0;s<=a;++s){let l=!1;for(let r=0;r<4;++r){let d=Dk[r];if(Hwt.positionToTileXY(d,s,Ok),r===0)i=Ok.x,o=Ok.y;else if(i!==Ok.x||o!==Ok.y){l=!0;break}}if(l)break;e=i,n=o}if(s!==0)return{x:e,y:n,level:s>a?a:s-1}}fl._terrainHeightsMaxLevel=6;fl._defaultMaxTerrainHeight=9e3;fl._defaultMinTerrainHeight=-1e5;fl._terrainHeights=gH?gH:void 0;fl._initPromise=gH?new Promise(function(t){t()}):void 0;Object.defineProperties(fl,{initialized:{get:function(){return c(fl._terrainHeights)}}});var Vo=fl;var cpn=b(W(),1);var Phn=b(W(),1);var ahn=b(W(),1);function Ec(t,e,n){this.minimum=p.clone(f(t,p.ZERO)),this.maximum=p.clone(f(e,p.ZERO)),c(n)?n=p.clone(n):n=p.midpoint(this.minimum,this.maximum,new p),this.center=n}Ec.fromCorners=function(t,e,n){return c(n)||(n=new Ec),n.minimum=p.clone(t,n.minimum),n.maximum=p.clone(e,n.maximum),n.center=p.midpoint(t,e,n.center),n};Ec.fromPoints=function(t,e){if(c(e)||(e=new Ec),!c(t)||t.length===0)return e.minimum=p.clone(p.ZERO,e.minimum),e.maximum=p.clone(p.ZERO,e.maximum),e.center=p.clone(p.ZERO,e.center),e;let n=t[0].x,i=t[0].y,o=t[0].z,a=t[0].x,s=t[0].y,l=t[0].z,r=t.length;for(let h=1;h0?yn.INSIDE:a+o<0?yn.OUTSIDE:yn.INTERSECTING};Ec.prototype.clone=function(t){return Ec.clone(this,t)};Ec.prototype.intersectPlane=function(t){return Ec.intersectPlane(this,t)};Ec.prototype.equals=function(t){return Ec.equals(this,t)};var Ff=Ec;var Bhn=b(W(),1);var rhn=b(W(),1);var g7={};g7.computeDiscriminant=function(t,e,n){return e*e-4*t*n};function iVt(t,e,n){let i=t+e;return k.sign(t)!==k.sign(e)&&Math.abs(i/Math.max(Math.abs(t),Math.abs(e)))d&&d/r0?[l/t,n/l]:[n/l,l/t]};var Cc=g7;var Zhn=b(W(),1);var mhn=b(W(),1);var C7={};C7.computeDiscriminant=function(t,e,n,i){let o=t*t,a=e*e,s=n*n,l=i*i;return 18*t*e*n*i+a*s-27*o*l-4*(t*s*n+a*e*i)};function E7(t,e,n,i){let o=t,a=e/3,s=n/3,l=i,r=o*s,d=a*l,m=a*a,h=s*s,u=o*s-m,R=o*l-a*s,V=a*l-h,F=4*u*V-R*R,U,G;if(F<0){let nt,$,dt;m*d>=r*h?(nt=o,$=u,dt=-2*a*u+o*R):(nt=l,$=V,dt=-l*R+2*s*V);let at=-(dt<0?-1:1)*Math.abs(nt)*Math.sqrt(-F);G=-dt+at;let st=G/2,Et=st<0?-Math.pow(-st,1/3):Math.pow(st,1/3),Qt=G===at?-Et:-$/Et;return U=$<=0?Et+Qt:-dt/(Et*Et+Qt*Qt+$),m*d>=r*h?[(U-a)/o]:[-l/(U+s)]}let A=u,S=-2*a*u+o*R,g=V,C=-l*R+2*s*V,y=Math.sqrt(F),Y=Math.sqrt(3)/2,Q=Math.abs(Math.atan2(o*y,-S)/3);U=2*Math.sqrt(-A);let J=Math.cos(Q);G=U*J;let M=U*(-J/2-Y*Math.sin(Q)),Z=G+M>2*a?G-a:M-a,E=o,I=Z/E;Q=Math.abs(Math.atan2(l*y,-C)/3),U=2*Math.sqrt(-g),J=Math.cos(Q),G=U*J,M=U*(-J/2-Y*Math.sin(Q));let B=-l,X=G+M<2*s?G+s:M+s,_=B/X,P=E*X,w=-Z*X-E*B,z=Z*B,H=(s*w-a*z)/(-a*w+s*P);return I<=H?I<=_?H<=_?[I,H,_]:[I,_,H]:[_,I,H]:I<=_?[H,I,_]:H<=_?[H,_,I]:[_,H,I]}C7.computeRealRoots=function(t,e,n,i){let o,a;if(t===0)return Cc.computeRealRoots(e,n,i);if(e===0){if(n===0){if(i===0)return[0,0,0];a=-i/t;let s=a<0?-Math.pow(-a,1/3):Math.pow(a,1/3);return[s,s,s]}else if(i===0)return o=Cc.computeRealRoots(t,0,n),o.Length===0?[0]:[o[0],0,o[1]];return E7(t,0,n,i)}else{if(n===0)return i===0?(a=-e/t,a<0?[a,0,0]:[0,0,a]):E7(t,e,0,i);if(i===0)return o=Cc.computeRealRoots(t,e,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return E7(t,e,n,i)};var BG=C7;var I7={};I7.computeDiscriminant=function(t,e,n,i,o){let a=t*t,s=a*t,l=e*e,r=l*e,d=n*n,m=d*n,h=i*i,u=h*i,R=o*o,V=R*o;return l*d*h-4*r*u-4*t*m*h+18*t*e*n*u-27*a*h*h+256*s*V+o*(18*r*n*i-4*l*m+16*t*d*d-80*t*e*d*i-6*t*l*h+144*a*n*h)+R*(144*t*l*n-27*l*l-128*a*d-192*a*e*i)};function eu(t,e,n,i){let o=t*t,a=e-3*o/8,s=n-e*t/2+o*t/8,l=i-n*t/4+e*o/16-3*o*o/256,r=BG.computeRealRoots(1,2*a,a*a-4*l,-s*s);if(r.length>0){let d=-t/4,m=r[r.length-1];if(Math.abs(m)=0&&R>=0){let F=Math.sqrt(u),U=Math.sqrt(R);return[d-U,d-F,d+F,d+U]}else{if(u>=0&&R<0)return V=Math.sqrt(u),[d-V,d+V];if(u<0&&R>=0)return V=Math.sqrt(R),[d-V,d+V]}}return[]}else if(m>0){let h=Math.sqrt(m),u=(a+m-s/h)/2,R=(a+m+s/h)/2,V=Cc.computeRealRoots(1,h,u),F=Cc.computeRealRoots(1,-h,R);return V.length!==0?(V[0]+=d,V[1]+=d,F.length!==0?(F[0]+=d,F[1]+=d,V[1]<=F[0]?[V[0],V[1],F[0],F[1]]:F[1]<=V[0]?[F[0],F[1],V[0],V[1]]:V[0]>=F[0]&&V[1]<=F[1]?[F[0],V[0],V[1],F[1]]:F[0]>=V[0]&&F[1]<=V[1]?[V[0],F[0],F[1],V[1]]:V[0]>F[0]&&V[0]0){let h=m[0],u=e-h,R=u*u,V=t/2,F=u/2,U=R-4*i,G=R+4*Math.abs(i),A=s-4*h,S=s+4*Math.abs(h),g,C;if(h<0||U*S=Z[0]&&M[1]<=Z[1]?[Z[0],M[0],M[1],Z[1]]:Z[0]>=M[0]&&Z[1]<=M[1]?[M[0],Z[0],Z[1],M[1]]:M[0]>Z[0]&&M[0]m)||(u=p.cross(h,l,aVt),V=p.dot(s,u),V<0||R+V>m))return;F=p.dot(r,u)/m}else{if(Math.abs(m)1||(u=p.cross(h,l,aVt),V=p.dot(s,u)*U,V<0||R+V>1))return;F=p.dot(r,u)*U}return F};os.rayTriangle=function(t,e,n,i,o,a){let s=os.rayTriangleParametric(t,e,n,i,o);if(!(!c(s)||s<0))return c(a)||(a=new p),p.multiplyByScalar(t.direction,s,a),p.add(t.origin,a,a)};var vwt=new di;os.lineSegmentTriangle=function(t,e,n,i,o,a,s){let l=vwt;p.clone(t,l.origin),p.subtract(e,t,l.direction),p.normalize(l.direction,l.direction);let r=os.rayTriangleParametric(l,n,i,o,a);if(!(!c(r)||r<0||r>p.distance(t,e)))return c(s)||(s=new p),p.multiplyByScalar(l.direction,r,s),p.add(l.origin,s,s)};function Kwt(t,e,n,i){let o=e*e-4*t*n;if(o<0)return;if(o>0){let s=1/(2*t),l=Math.sqrt(o),r=(-e+l)*s,d=(-e-l)*s;return rs))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var qwt=new p,$wt=new p;os.rayEllipsoid=function(t,e){let n=e.oneOverRadii,i=p.multiplyComponents(n,t.origin,qwt),o=p.multiplyComponents(n,t.direction,$wt),a=p.magnitudeSquared(i),s=p.dot(i,o),l,r,d,m,h;if(a>1){if(s>=0)return;let u=s*s;if(l=a-1,r=p.magnitudeSquared(o),d=r*l,ud){m=s*s-d,h=-s+Math.sqrt(m);let V=h/r,F=l/h;return V0?R.push(new p(i,o*J,o*-E)):E!==0?(R.push(new p(i,o*J,o*-E)),R.push(new p(i,o*J,o*E)),++Q):R.push(new p(i,o*J,o*E))}return R};var N7=new p,sVt=new p,lVt=new p,HH=new p,tPt=new p,ePt=new ot,nPt=new ot,iPt=new ot,oPt=new ot,aPt=new ot,rVt=new ot,dVt=new ot,cVt=new p,sPt=new p,lPt=new gt;os.grazingAltitudeLocation=function(t,e){let n=t.origin,i=t.direction;if(!p.equals(n,p.ZERO)){let y=e.geodeticSurfaceNormal(n,N7);if(p.dot(i,y)>=0)return n}let o=c(this.rayEllipsoid(t,e)),a=e.transformPositionToScaledSpace(i,N7),s=p.normalize(a,a),l=p.mostOrthogonalAxis(a,HH),r=p.normalize(p.cross(l,s,sVt),sVt),d=p.normalize(p.cross(s,r,lVt),lVt),m=ePt;m[0]=s.x,m[1]=s.y,m[2]=s.z,m[3]=r.x,m[4]=r.y,m[5]=r.z,m[6]=d.x,m[7]=d.y,m[8]=d.z;let h=ot.transpose(m,nPt),u=ot.fromScale(e.radii,iPt),R=ot.fromScale(e.oneOverRadii,oPt),V=aPt;V[0]=0,V[1]=-i.z,V[2]=i.y,V[3]=i.z,V[4]=0,V[5]=-i.x,V[6]=-i.y,V[7]=i.x,V[8]=0;let F=ot.multiply(ot.multiply(h,R,rVt),V,rVt),U=ot.multiply(ot.multiply(F,u,dVt),m,dVt),G=ot.multiplyByVector(F,n,tPt),A=os.quadraticVectorExpression(U,p.negate(G,N7),0,0,1),S,g,C=A.length;if(C>0){let y=p.clone(p.ZERO,sPt),Y=Number.NEGATIVE_INFINITY;for(let J=0;JY&&(Y=Z,y=p.clone(S,y))}let Q=e.cartesianToCartographic(y,lPt);return Y=k.clamp(Y,0,1),g=p.magnitude(p.subtract(y,n,HH))*Math.sqrt(1-Y*Y),g=o?-g:g,Q.height=g,e.cartographicToCartesian(Q,new p)}};var rPt=new p;os.lineSegmentPlane=function(t,e,n,i){c(i)||(i=new p);let o=p.subtract(e,t,rPt),a=n.normal,s=p.dot(a,o);if(Math.abs(s)1))return p.multiplyByScalar(o,r,i),p.add(t,i,i),i};os.trianglePlaneIntersection=function(t,e,n,i){let o=i.normal,a=i.distance,s=p.dot(o,t)+a<0,l=p.dot(o,e)+a<0,r=p.dot(o,n)+a<0,d=0;d+=s?1:0,d+=l?1:0,d+=r?1:0;let m,h;if((d===1||d===2)&&(m=new p,h=new p),d===1){if(s)return os.lineSegmentPlane(t,e,i,m),os.lineSegmentPlane(t,n,i,h),{positions:[t,e,n,m,h],indices:[0,3,4,1,2,4,1,4,3]};if(l)return os.lineSegmentPlane(e,n,i,m),os.lineSegmentPlane(e,t,i,h),{positions:[t,e,n,m,h],indices:[1,3,4,2,0,4,2,4,3]};if(r)return os.lineSegmentPlane(n,t,i,m),os.lineSegmentPlane(n,e,i,h),{positions:[t,e,n,m,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(d===2)if(s)if(l){if(!r)return os.lineSegmentPlane(t,n,i,m),os.lineSegmentPlane(e,n,i,h),{positions:[t,e,n,m,h],indices:[0,1,4,0,4,3,2,3,4]}}else return os.lineSegmentPlane(n,e,i,m),os.lineSegmentPlane(t,e,i,h),{positions:[t,e,n,m,h],indices:[2,0,4,2,4,3,1,3,4]};else return os.lineSegmentPlane(e,t,i,m),os.lineSegmentPlane(n,t,i,h),{positions:[t,e,n,m,h],indices:[1,2,4,1,4,3,0,3,4]}};var no=os;var y7=new bt;function OZ(t,e){e=f(e,mt.WGS84),t=e.scaleToGeodeticSurface(t);let n=Pe.eastNorthUpToFixedFrame(t,e);this._ellipsoid=e,this._origin=t,this._xAxis=p.fromCartesian4(L.getColumn(n,0,y7)),this._yAxis=p.fromCartesian4(L.getColumn(n,1,y7));let i=p.fromCartesian4(L.getColumn(n,2,y7));this._plane=Kn.fromPointNormal(t,i)}Object.defineProperties(OZ.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var dPt=new Ff;OZ.fromPoints=function(t,e){let n=Ff.fromPoints(t,dPt);return new OZ(n.center,e)};var pVt=new di,wH=new p;OZ.prototype.projectPointOntoPlane=function(t,e){let n=pVt;n.origin=t,p.normalize(t,n.direction);let i=no.rayPlane(n,this._plane,wH);if(c(i)||(p.negate(n.direction,n.direction),i=no.rayPlane(n,this._plane,wH)),c(i)){let o=p.subtract(i,this._origin,i),a=p.dot(this._xAxis,o),s=p.dot(this._yAxis,o);return c(e)?(e.x=a,e.y=s,e):new K(a,s)}};OZ.prototype.projectPointsOntoPlane=function(t,e){c(e)||(e=[]);let n=0,i=t.length;for(let o=0;o0?0:Y.latitude,E=gt.fromRadians(M,t.north,n,FPt),I=gt.fromRadians(t.west,t.north,n,UPt),B=gt.fromRadians(t.west,Z,n,GPt),X=gt.fromRadians(t.west,t.south,n,APt),_=gt.fromRadians(M,t.south,n,SPt),P=i.cartographicToCartesian(E,TPt),w=i.cartographicToCartesian(I,ZVt),z=i.cartographicToCartesian(B,gPt),H=i.cartographicToCartesian(X,RVt),nt=i.cartographicToCartesian(_,EPt),$=J.projectPointToNearestOnPlane(P,CPt),dt=J.projectPointToNearestOnPlane(w,IPt),q=J.projectPointToNearestOnPlane(z,NPt),at=J.projectPointToNearestOnPlane(H,yPt),st=J.projectPointToNearestOnPlane(nt,BPt);return a=Math.min(dt.x,q.x,at.x),s=-a,r=Math.max(dt.y,$.y),l=Math.min(at.y,st.y),I.height=X.height=e,w=i.cartographicToCartesian(I,ZVt),H=i.cartographicToCartesian(X,RVt),d=Math.min(Kn.getPointDistance(h,w),Kn.getPointDistance(h,H)),m=n,VVt(J.origin,J.xAxis,J.yAxis,J.zAxis,a,s,l,r,d,m,o)}let u=t.south>0,R=t.north<0,V=u?t.south:R?t.north:0,F=Gt.center(t,uVt).longitude,U=p.fromRadians(F,V,n,i,QPt);U.z=0;let A=Math.abs(U.x)=r?yn.INSIDE:yn.INTERSECTING};var fVt=new p,FVt=new p,UVt=new p,DPt=new p,bVt=new p,OPt=new p;Ho.distanceSquaredTo=function(t,e){let n=p.subtract(e,t.center,WVt),i=t.halfAxes,o=ot.getColumn(i,0,fVt),a=ot.getColumn(i,1,FVt),s=ot.getColumn(i,2,UVt),l=p.magnitude(o),r=p.magnitude(a),d=p.magnitude(s),m=!0,h=!0,u=!0;l>0?p.divideByScalar(o,l,o):m=!1,r>0?p.divideByScalar(a,r,a):h=!1,d>0?p.divideByScalar(s,d,s):u=!1;let R=!m+!h+!u,V,F,U;if(R===1){let g=o;V=a,F=s,h?u||(g=s,F=o):(g=a,V=o),U=p.cross(V,F,bVt),g===o?o=U:g===a?a=U:g===s&&(s=U)}else if(R===2){V=o,h?V=a:u&&(V=s);let g=p.UNIT_Y;g.equalsEpsilon(V,k.EPSILON3)&&(g=p.UNIT_X),F=p.cross(V,g,DPt),p.normalize(F,F),U=p.cross(V,F,bVt),p.normalize(U,U),V===o?(a=F,s=U):V===a?(s=F,o=U):V===s&&(o=F,a=U)}else R===3&&(o=p.UNIT_X,a=p.UNIT_Y,s=p.UNIT_Z);let G=OPt;G.x=p.dot(n,o),G.y=p.dot(n,a),G.z=p.dot(n,s);let A=0,S;return G.x<-l?(S=G.x+l,A+=S*S):G.x>l&&(S=G.x-l,A+=S*S),G.y<-r?(S=G.y+r,A+=S*S):G.y>r&&(S=G.y-r,A+=S*S),G.z<-d?(S=G.z+d,A+=S*S):G.z>d&&(S=G.z-d,A+=S*S),A};var HPt=new p,wPt=new p;Ho.computePlaneDistances=function(t,e,n,i){c(i)||(i=new hd);let o=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY,s=t.center,l=t.halfAxes,r=ot.getColumn(l,0,fVt),d=ot.getColumn(l,1,FVt),m=ot.getColumn(l,2,UVt),h=p.add(r,d,HPt);p.add(h,m,h),p.add(h,s,h);let u=p.subtract(h,e,wPt),R=p.dot(n,u);return o=Math.min(R,o),a=Math.max(R,a),p.add(s,r,h),p.add(h,d,h),p.subtract(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),p.add(s,r,h),p.subtract(h,d,h),p.add(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),p.add(s,r,h),p.subtract(h,d,h),p.subtract(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),p.subtract(s,r,h),p.add(h,d,h),p.add(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),p.subtract(s,r,h),p.add(h,d,h),p.subtract(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),p.subtract(s,r,h),p.subtract(h,d,h),p.add(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),p.subtract(s,r,h),p.subtract(h,d,h),p.subtract(h,m,h),p.subtract(h,e,u),R=p.dot(n,u),o=Math.min(R,o),a=Math.max(R,a),i.start=o,i.stop=a,i};var PPt=new p,vPt=new p,KPt=new p;Ho.computeCorners=function(t,e){c(e)||(e=[new p,new p,new p,new p,new p,new p,new p,new p]);let n=t.center,i=t.halfAxes,o=ot.getColumn(i,0,PPt),a=ot.getColumn(i,1,vPt),s=ot.getColumn(i,2,KPt);return p.clone(n,e[0]),p.subtract(e[0],o,e[0]),p.subtract(e[0],a,e[0]),p.subtract(e[0],s,e[0]),p.clone(n,e[1]),p.subtract(e[1],o,e[1]),p.subtract(e[1],a,e[1]),p.add(e[1],s,e[1]),p.clone(n,e[2]),p.subtract(e[2],o,e[2]),p.add(e[2],a,e[2]),p.subtract(e[2],s,e[2]),p.clone(n,e[3]),p.subtract(e[3],o,e[3]),p.add(e[3],a,e[3]),p.add(e[3],s,e[3]),p.clone(n,e[4]),p.add(e[4],o,e[4]),p.subtract(e[4],a,e[4]),p.subtract(e[4],s,e[4]),p.clone(n,e[5]),p.add(e[5],o,e[5]),p.subtract(e[5],a,e[5]),p.add(e[5],s,e[5]),p.clone(n,e[6]),p.add(e[6],o,e[6]),p.add(e[6],a,e[6]),p.subtract(e[6],s,e[6]),p.clone(n,e[7]),p.add(e[7],o,e[7]),p.add(e[7],a,e[7]),p.add(e[7],s,e[7]),e};var zPt=new ot;Ho.computeTransformation=function(t,e){c(e)||(e=new L);let n=t.center,i=ot.multiplyByUniformScale(t.halfAxes,2,zPt);return L.fromRotationTranslation(i,n,e)};var jPt=new Ft;Ho.isOccluded=function(t,e){let n=Ft.fromOrientedBoundingBox(t,jPt);return!e.isBoundingSphereVisible(n)};Ho.prototype.intersectPlane=function(t){return Ho.intersectPlane(this,t)};Ho.prototype.distanceSquaredTo=function(t){return Ho.distanceSquaredTo(this,t)};Ho.prototype.computePlaneDistances=function(t,e,n){return Ho.computePlaneDistances(this,t,e,n)};Ho.prototype.computeCorners=function(t){return Ho.computeCorners(this,t)};Ho.prototype.computeTransformation=function(t){return Ho.computeTransformation(this,t)};Ho.prototype.isOccluded=function(t){return Ho.isOccluded(this,t)};Ho.equals=function(t,e){return t===e||c(t)&&c(e)&&p.equals(t.center,e.center)&&ot.equals(t.halfAxes,e.halfAxes)};Ho.prototype.clone=function(t){return Ho.clone(this,t)};Ho.prototype.equals=function(t){return Ho.equals(this,t)};var ci=Ho;var upn=b(W(),1);var PH={};PH.getHeight=function(t,e,n){return(t-n)*e+n};var qPt=new gt;PH.getPosition=function(t,e,n,i,o){let a=e.cartesianToCartographic(t,qPt);if(!c(a))return p.clone(t,o);let s=PH.getHeight(a.height,n,i);return p.fromRadians(a.longitude,a.latitude,s,e,o)};var Ps=PH;var oRn=b(W(),1);var Rpn=b(W(),1),Pk=`in vec3 position3DHigh; in vec3 position3DLow; in float batchId; @@ -4830,7 +4830,7 @@ void main() gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); } -`;var Wpn=R(W(),1),Uf=`#ifdef VECTOR_TILE +`;var Wpn=b(W(),1),Uf=`#ifdef VECTOR_TILE uniform vec4 u_highlightColor; #endif @@ -4843,7 +4843,7 @@ void main(void) #endif czm_writeDepthClamp(); } -`;var Fpn=R(W(),1),Gut={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};Gut.NUMBER_OF_CLASSIFICATION_TYPES=3;var Ji=Object.freeze(Gut);var Apn=R(W(),1);var $Pt={NEVER:pt.NEVER,LESS:pt.LESS,EQUAL:pt.EQUAL,LESS_OR_EQUAL:pt.LEQUAL,GREATER:pt.GREATER,NOT_EQUAL:pt.NOTEQUAL,GREATER_OR_EQUAL:pt.GEQUAL,ALWAYS:pt.ALWAYS},_d=Object.freeze($Pt);var tVn=R(W(),1);var Spn=R(W(),1);function tvt(t,e){let n=[],i=t.length,o=0;for(;o>1^-(t&1)}La.zigZagDeltaDecode=function(t,e,n){let i=t.length,o=0,a=0,s=0;for(let l=0;l>11,m=r>>5&o,h=r&i,Z=3*l;e[Z]=d*a,e[Z+1]=m*s,e[Z+2]=h*a}return e};var Ni=La;var run=R(W(),1);var Cut=new p,Iut=new p,Nut=new p;function uvt(t,e,n,i,o){c(o)||(o=new p);let a,s,l,r,d,m,h,Z;if(c(e.z)){if(p.equalsEpsilon(t,e,k.EPSILON14))return p.clone(p.UNIT_X,o);if(p.equalsEpsilon(t,n,k.EPSILON14))return p.clone(p.UNIT_Y,o);if(p.equalsEpsilon(t,i,k.EPSILON14))return p.clone(p.UNIT_Z,o);a=p.subtract(n,e,Cut),s=p.subtract(i,e,Iut),l=p.subtract(t,e,Nut),r=p.dot(a,a),d=p.dot(a,s),m=p.dot(a,l),h=p.dot(s,s),Z=p.dot(s,l)}else{if(K.equalsEpsilon(t,e,k.EPSILON14))return p.clone(p.UNIT_X,o);if(K.equalsEpsilon(t,n,k.EPSILON14))return p.clone(p.UNIT_Y,o);if(K.equalsEpsilon(t,i,k.EPSILON14))return p.clone(p.UNIT_Z,o);a=K.subtract(n,e,Cut),s=K.subtract(i,e,Iut),l=K.subtract(t,e,Nut),r=K.dot(a,a),d=K.dot(a,s),m=K.dot(a,l),h=K.dot(s,s),Z=K.dot(s,l)}o.y=h*m-d*Z,o.z=r*Z-d*m;let b=r*h-d*d;if(b!==0)return o.y/=b,o.z/=b,o.x=1-o.y-o.z,o}var YG=uvt;var hun=R(W(),1);var k7={};k7.calculateACMR=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.indices,n=t.maximumIndex,i=f(t.cacheSize,24),o=e.length;if(!c(n)){n=0;let l=0,r=e[l];for(;ln&&(n=r),++l,r=e[l]}let a=[];for(let l=0;li&&(a[e[l]]=s,++s);return(s-i+1)/(o/3)};k7.tipsify=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.indices,n=t.maximumIndex,i=f(t.cacheSize,24),o;function a(V,E,I,B){for(;E.length>=1;){let X=E[E.length-1];if(E.splice(E.length-1,1),V[X].numLiveTriangles>0)return X}for(;o0)return++o,o-1;++o}return-1}function s(V,E,I,B,X,_,P){let w=-1,z,H=-1,nt=0;for(;ntH||H===-1)&&(H=z,w=$)),++nt}return w===-1?a(B,_,V,P):w}let l=e.length,r=0,d=0,m=e[d],h=l;if(c(n))r=n+1;else{for(;dr&&(r=m),++d,m=e[d];if(r===-1)return 0;++r}let Z=[],b;for(b=0;bi&&(T.timeStamp=U,++U),++d}F=s(e,i,G,Z,U,A,r)}return y};var j2=k7;var Ic={};function ew(t,e,n,i,o){t[e++]=n,t[e++]=i,t[e++]=i,t[e++]=o,t[e++]=o,t[e]=n}function Zvt(t){let e=t.length,n=e/3*6,i=re.createTypedArray(e,n),o=0;for(let a=0;a=3){let n=(e-2)*6,i=re.createTypedArray(e,n);ew(i,0,t[0],t[1],t[2]);let o=6;for(let a=3;a0){let e=t.length-1,n=(e-1)*6,i=re.createTypedArray(e,n),o=t[0],a=0;for(let s=1;so&&(o=n[a]);t.indices=j2.tipsify({indices:n,maximumIndex:o,cacheSize:e})}return t};function yut(t){let e={};for(let n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){let i=t[n];e[n]=new jt({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return e}function Rvt(t,e,n){for(let i in e)if(e.hasOwnProperty(i)&&c(e[i])&&c(e[i].values)){let o=e[i];for(let a=0;a=k.SIXTY_FOUR_KILOBYTES){let i=[],o=[],a=0,s=yut(t.attributes),l=t.indices,r=l.length,d;t.primitiveType===le.TRIANGLES?d=3:t.primitiveType===le.LINES?d=2:t.primitiveType===le.POINTS&&(d=1);for(let m=0;m=k.SIXTY_FOUR_KILOBYTES&&(e.push(new _e({attributes:s,indices:o,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV})),i=[],o=[],a=0,s=yut(t.attributes))}o.length!==0&&e.push(new _e({attributes:s,indices:o,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV}))}else e.push(t);return e};var But=new p,Wvt=new gt;Ic.projectTo2D=function(t,e,n,i,o){let a=t.attributes[e];o=c(o)?o:new yo;let s=o.ellipsoid,l=a.values,r=new Float64Array(l.length),d=0;for(let m=0;mU&&(U=A)}return new _e({attributes:m,indices:u,primitiveType:d,boundingSphere:c(F)?new Ft(F,U):void 0})}Ic.combineInstances=function(t){let e=[],n=[],i=t.length;for(let a=0;a0&&o.push(J7(e,"geometry")),n.length>0&&(o.push(J7(n,"westHemisphereGeometry")),o.push(J7(n,"eastHemisphereGeometry"))),o};var yp=new p,q2=new p,uE=new p,ZE=new p;Ic.computeNormal=function(t){let e=t.indices,n=t.attributes,i=n.position.values,o=n.position.values.length/3,a=e.length,s=new Array(o),l=new Array(a/3),r=new Array(a),d;for(d=0;d0){for(m=0;m3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;oo?i>a?s=k.sign(t.y):s=k.sign(n.y):o>a?s=k.sign(e.y):s=k.sign(n.y);let l=s<0;Gf(t,l),Gf(e,l),Gf(n,l)}var xut=new p;function Bp(t,e,n,i){p.add(t,p.multiplyByScalar(p.subtract(e,t,xut),t.y/(t.y-e.y),xut),n),p.clone(n,i),Gf(n,!0),Gf(i,!1)}var xG=new p,XG=new p,JG=new p,LG=new p,L7={positions:new Array(7),indices:new Array(3*3)};function yvt(t,e,n){if(t.x>=0||e.x>=0||n.x>=0)return;Nvt(t,e,n);let i=t.y<0,o=e.y<0,a=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=a?1:0;let l=L7.indices;s===1?(l[1]=3,l[2]=4,l[5]=6,l[7]=6,l[8]=5,i?(Bp(t,e,xG,JG),Bp(t,n,XG,LG),l[0]=0,l[3]=1,l[4]=2,l[6]=1):o?(Bp(e,n,xG,JG),Bp(e,t,XG,LG),l[0]=1,l[3]=2,l[4]=0,l[6]=2):a&&(Bp(n,t,xG,JG),Bp(n,e,XG,LG),l[0]=2,l[3]=0,l[4]=1,l[6]=0)):s===2&&(l[2]=4,l[4]=4,l[5]=3,l[7]=5,l[8]=6,i?o?a||(Bp(n,t,xG,JG),Bp(n,e,XG,LG),l[0]=0,l[1]=1,l[3]=0,l[6]=2):(Bp(e,n,xG,JG),Bp(e,t,XG,LG),l[0]=2,l[1]=0,l[3]=2,l[6]=1):(Bp(t,e,xG,JG),Bp(t,n,XG,LG),l[0]=1,l[1]=2,l[3]=1,l[6]=0));let r=L7.positions;return r[0]=t,r[1]=e,r[2]=n,r.length=3,(s===1||s===2)&&(r[3]=xG,r[4]=XG,r[5]=JG,r[6]=LG,r.length=7),L7}function Xut(t,e){let n=t.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&c(n[o])&&c(n[o].values)){let a=n[o];a.values=it.createTypedArray(a.componentDatatype,a.values)}let i=_e.computeNumberOfVertices(t);return t.indices=re.createTypedArray(i,t.indices),e&&(t.boundingSphere=Ft.fromVertices(n.position.values)),t}function bE(t){let e=t.attributes,n={};for(let i in e)if(e.hasOwnProperty(i)&&c(e[i])&&c(e[i].values)){let o=e[i];n[i]=new jt({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new _e({attributes:n,indices:[],primitiveType:t.primitiveType})}function O7(t,e,n){let i=c(t.geometry.boundingSphere);e=Xut(e,i),n=Xut(n,i),c(n)&&!c(e)?t.geometry=n:!c(n)&&c(e)?t.geometry=e:(t.westHemisphereGeometry=e,t.eastHemisphereGeometry=n,t.geometry=void 0)}function H7(t,e){let n=new t,i=new t,o=new t;return function(a,s,l,r,d,m,h,Z){let b=t.fromArray(d,a*e,n),u=t.fromArray(d,s*e,i),F=t.fromArray(d,l*e,o);t.multiplyByScalar(b,r.x,b),t.multiplyByScalar(u,r.y,u),t.multiplyByScalar(F,r.z,F);let U=t.add(b,u,b);if(t.add(U,F,U),Z)try{t.normalize(U,U)}catch(G){throw new Ut(G)}t.pack(U,m,h*e)}}var Bvt=H7(Rt,4),tw=H7(p,3),Out=H7(K,2),Qvt=function(t,e,n,i,o,a,s){let l=o[t]*i.x,r=o[e]*i.y,d=o[n]*i.z;a[s]=l+r+d>k.EPSILON6?1:0},tk=new p,M7=new p,_7=new p,kvt=new p;function qH(t,e,n,i,o,a,s,l,r,d,m,h,Z,b,u,F){if(!c(a)&&!c(s)&&!c(l)&&!c(r)&&!c(d)&&b===0)return;let U=p.fromArray(o,t*3,tk),G=p.fromArray(o,e*3,M7),A=p.fromArray(o,n*3,_7),T=YG(i,U,G,A,kvt);if(c(T)){if(c(a)&&tw(t,e,n,T,a,h.normal.values,F,!0),c(d)){let g=p.fromArray(d,t*3,tk),C=p.fromArray(d,e*3,M7),y=p.fromArray(d,n*3,_7);p.multiplyByScalar(g,T.x,g),p.multiplyByScalar(C,T.y,C),p.multiplyByScalar(y,T.z,y);let Y;!p.equals(g,p.ZERO)||!p.equals(C,p.ZERO)||!p.equals(y,p.ZERO)?(Y=p.add(g,C,g),p.add(Y,y,Y),p.normalize(Y,Y)):(Y=tk,Y.x=0,Y.y=0,Y.z=0),p.pack(Y,h.extrudeDirection.values,F*3)}if(c(m)&&Qvt(t,e,n,T,m,h.applyOffset.values,F),c(s)&&tw(t,e,n,T,s,h.tangent.values,F,!0),c(l)&&tw(t,e,n,T,l,h.bitangent.values,F,!0),c(r)&&Out(t,e,n,T,r,h.st.values,F),b>0)for(let g=0;g3){let B=I.positions,X=I.indices,_=X.length;for(let P=0;P<_;++P){let w=X[P],z=B[w];z.y<0?(F=u.attributes,U=u.indices,G=g):(F=b.attributes,U=b.indices,G=C),A=HV(F,U,G,m,w<3?T+w:-1,z),qH(Y,Q,J,z,i,o,s,a,l,r,d,F,h,Z,n,A)}}else c(I)&&(M=I.positions[0],V=I.positions[1],E=I.positions[2]),M.y<0?(F=u.attributes,U=u.indices,G=g):(F=b.attributes,U=b.indices,G=C),A=HV(F,U,G,m,T,M),qH(Y,Q,J,M,i,o,s,a,l,r,d,F,h,Z,n,A),A=HV(F,U,G,m,T+1,V),qH(Y,Q,J,V,i,o,s,a,l,r,d,F,h,Z,n,A),A=HV(F,U,G,m,T+2,E),qH(Y,Q,J,E,i,o,s,a,l,r,d,F,h,Z,n,A)}O7(t,u,b)}var Hut=Kn.fromPointNormal(p.ZERO,p.UNIT_Y),Xvt=new p,Jvt=new p;function VE(t,e,n,i,o,a,s){if(!c(s))return;let l=p.fromArray(i,t*3,tk);p.equalsEpsilon(l,n,k.EPSILON10)?a.applyOffset.values[o]=s[t]:a.applyOffset.values[o]=s[e]}function Lut(t){let e=t.geometry,n=e.attributes,i=n.position.values,o=c(n.applyOffset)?n.applyOffset.values:void 0,a=e.indices,s=bE(e),l=bE(e),r,d=a.length,m=[];m.length=i.length/3;let h=[];for(h.length=i.length/3,r=0;r0)continue;let r=p.unpack(i,s,Put);(l.y<0&&r.y>0||l.y>0&&r.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):p.pack(l,i,s));let d=p.unpack(o,s,D7);(l.y<0&&d.y>0||l.y>0&&d.y<0)&&(s+30||Ft.intersectPlane(n,Kn.ORIGIN_ZX_PLANE)!==yn.INTERSECTING))return t;if(e.geometryType!==gp.NONE)switch(e.geometryType){case gp.POLYLINES:Hvt(t);break;case gp.TRIANGLES:Jut(t);break;case gp.LINES:Lut(t);break}else Ivt(e),e.primitiveType===le.TRIANGLES?Jut(t):e.primitiveType===le.LINES&&Lut(t);return t};var gi=Ic;var Pun=R(W(),1);function Tm(t){this._ellipsoid=f(t,mt.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(Tm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Tm.mercatorAngleToGeodeticLatitude=function(t){return k.PI_OVER_TWO-2*Math.atan(Math.exp(-t))};Tm.geodeticLatitudeToMercatorAngle=function(t){t>Tm.MaximumLatitude?t=Tm.MaximumLatitude:t<-Tm.MaximumLatitude&&(t=-Tm.MaximumLatitude);let e=Math.sin(t);return .5*Math.log((1+e)/(1-e))};Tm.MaximumLatitude=Tm.mercatorAngleToGeodeticLatitude(Math.PI);Tm.prototype.project=function(t,e){let n=this._semimajorAxis,i=t.longitude*n,o=Tm.geodeticLatitudeToMercatorAngle(t.latitude)*n,a=t.height;return c(e)?(e.x=i,e.y=o,e.z=a,e):new p(i,o,a)};Tm.prototype.unproject=function(t,e){let n=this._oneOverSemimajorAxis,i=t.x*n,o=Tm.mercatorAngleToGeodeticLatitude(t.y*n),a=t.z;return c(e)?(e.longitude=i,e.latitude=o,e.height=a,e):new gt(i,o,a)};var Yo=Tm;function wvt(t,e,n){let i=!n,o=t.length,a;if(!i&&o>1){let s=t[0].modelMatrix;for(a=1;a=0){let d=i[l];o=d.offset+d.count,s=d.index,a=n[s].indices.length}else o=0,s=0,a=n[s].indices.length;let r=t.length;for(let d=0;da&&(o=0,a=n[++s].indices.length),i.push({index:s,offset:o,count:Z}),o+=Z}}function Kvt(t,e){let n=[];return P7(t,"geometry",e,n),P7(t,"westHemisphereGeometry",e,n),P7(t,"eastHemisphereGeometry",e,n),n}var yR={};yR.combineGeometry=function(t){let e,n,i=t.instances,o=i.length,a,s,l=!1;o>0&&(e=vvt(t),e.length>0&&(n=gi.createAttributeLocations(e[0]),t.createPickOffsets&&(a=Kvt(i,e))),c(i[0].attributes)&&c(i[0].attributes.offset)&&(s=new Array(o),l=!0));let r=new Array(o),d=new Array(o);for(let m=0;m0&&(n.set(r.indices,s),s+=u)}return e.push(n.buffer),{stringTable:i,packedData:n}};yR.unpackCreateGeometryResults=function(t){let e=t.stringTable,n=t.packedData,i,o=new Array(n[0]),a=0,s=1;for(;s0){let C=U.length/G;for(g=re.createTypedArray(C,F),i=0;i>1^-(t&1)}La.zigZagDeltaDecode=function(t,e,n){let i=t.length,o=0,a=0,s=0;for(let l=0;l>11,m=r>>5&o,h=r&i,u=3*l;e[u]=d*a,e[u+1]=m*s,e[u+2]=h*a}return e};var Ni=La;var rVn=b(W(),1);var CVt=new p,IVt=new p,NVt=new p;function Vvt(t,e,n,i,o){c(o)||(o=new p);let a,s,l,r,d,m,h,u;if(c(e.z)){if(p.equalsEpsilon(t,e,k.EPSILON14))return p.clone(p.UNIT_X,o);if(p.equalsEpsilon(t,n,k.EPSILON14))return p.clone(p.UNIT_Y,o);if(p.equalsEpsilon(t,i,k.EPSILON14))return p.clone(p.UNIT_Z,o);a=p.subtract(n,e,CVt),s=p.subtract(i,e,IVt),l=p.subtract(t,e,NVt),r=p.dot(a,a),d=p.dot(a,s),m=p.dot(a,l),h=p.dot(s,s),u=p.dot(s,l)}else{if(K.equalsEpsilon(t,e,k.EPSILON14))return p.clone(p.UNIT_X,o);if(K.equalsEpsilon(t,n,k.EPSILON14))return p.clone(p.UNIT_Y,o);if(K.equalsEpsilon(t,i,k.EPSILON14))return p.clone(p.UNIT_Z,o);a=K.subtract(n,e,CVt),s=K.subtract(i,e,IVt),l=K.subtract(t,e,NVt),r=K.dot(a,a),d=K.dot(a,s),m=K.dot(a,l),h=K.dot(s,s),u=K.dot(s,l)}o.y=h*m-d*u,o.z=r*u-d*m;let R=r*h-d*d;if(R!==0)return o.y/=R,o.z/=R,o.x=1-o.y-o.z,o}var YG=Vvt;var hVn=b(W(),1);var k7={};k7.calculateACMR=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.indices,n=t.maximumIndex,i=f(t.cacheSize,24),o=e.length;if(!c(n)){n=0;let l=0,r=e[l];for(;ln&&(n=r),++l,r=e[l]}let a=[];for(let l=0;li&&(a[e[l]]=s,++s);return(s-i+1)/(o/3)};k7.tipsify=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.indices,n=t.maximumIndex,i=f(t.cacheSize,24),o;function a(Z,E,I,B){for(;E.length>=1;){let X=E[E.length-1];if(E.splice(E.length-1,1),Z[X].numLiveTriangles>0)return X}for(;o0)return++o,o-1;++o}return-1}function s(Z,E,I,B,X,_,P){let w=-1,z,H=-1,nt=0;for(;ntH||H===-1)&&(H=z,w=$)),++nt}return w===-1?a(B,_,Z,P):w}let l=e.length,r=0,d=0,m=e[d],h=l;if(c(n))r=n+1;else{for(;dr&&(r=m),++d,m=e[d];if(r===-1)return 0;++r}let u=[],R;for(R=0;Ri&&(S.timeStamp=U,++U),++d}F=s(e,i,G,u,U,A,r)}return y};var jk=k7;var Ic={};function ew(t,e,n,i,o){t[e++]=n,t[e++]=i,t[e++]=i,t[e++]=o,t[e++]=o,t[e]=n}function uvt(t){let e=t.length,n=e/3*6,i=re.createTypedArray(e,n),o=0;for(let a=0;a=3){let n=(e-2)*6,i=re.createTypedArray(e,n);ew(i,0,t[0],t[1],t[2]);let o=6;for(let a=3;a0){let e=t.length-1,n=(e-1)*6,i=re.createTypedArray(e,n),o=t[0],a=0;for(let s=1;so&&(o=n[a]);t.indices=jk.tipsify({indices:n,maximumIndex:o,cacheSize:e})}return t};function yVt(t){let e={};for(let n in t)if(t.hasOwnProperty(n)&&c(t[n])&&c(t[n].values)){let i=t[n];e[n]=new jt({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return e}function bvt(t,e,n){for(let i in e)if(e.hasOwnProperty(i)&&c(e[i])&&c(e[i].values)){let o=e[i];for(let a=0;a=k.SIXTY_FOUR_KILOBYTES){let i=[],o=[],a=0,s=yVt(t.attributes),l=t.indices,r=l.length,d;t.primitiveType===le.TRIANGLES?d=3:t.primitiveType===le.LINES?d=2:t.primitiveType===le.POINTS&&(d=1);for(let m=0;m=k.SIXTY_FOUR_KILOBYTES&&(e.push(new _e({attributes:s,indices:o,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV})),i=[],o=[],a=0,s=yVt(t.attributes))}o.length!==0&&e.push(new _e({attributes:s,indices:o,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV}))}else e.push(t);return e};var BVt=new p,Wvt=new gt;Ic.projectTo2D=function(t,e,n,i,o){let a=t.attributes[e];o=c(o)?o:new yo;let s=o.ellipsoid,l=a.values,r=new Float64Array(l.length),d=0;for(let m=0;mU&&(U=A)}return new _e({attributes:m,indices:V,primitiveType:d,boundingSphere:c(F)?new Ft(F,U):void 0})}Ic.combineInstances=function(t){let e=[],n=[],i=t.length;for(let a=0;a0&&o.push(J7(e,"geometry")),n.length>0&&(o.push(J7(n,"westHemisphereGeometry")),o.push(J7(n,"eastHemisphereGeometry"))),o};var yp=new p,qk=new p,VE=new p,uE=new p;Ic.computeNormal=function(t){let e=t.indices,n=t.attributes,i=n.position.values,o=n.position.values.length/3,a=e.length,s=new Array(o),l=new Array(a/3),r=new Array(a),d;for(d=0;d0){for(m=0;m3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;oo?i>a?s=k.sign(t.y):s=k.sign(n.y):o>a?s=k.sign(e.y):s=k.sign(n.y);let l=s<0;Gf(t,l),Gf(e,l),Gf(n,l)}var xVt=new p;function Bp(t,e,n,i){p.add(t,p.multiplyByScalar(p.subtract(e,t,xVt),t.y/(t.y-e.y),xVt),n),p.clone(n,i),Gf(n,!0),Gf(i,!1)}var xG=new p,XG=new p,JG=new p,LG=new p,L7={positions:new Array(7),indices:new Array(3*3)};function yvt(t,e,n){if(t.x>=0||e.x>=0||n.x>=0)return;Nvt(t,e,n);let i=t.y<0,o=e.y<0,a=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=a?1:0;let l=L7.indices;s===1?(l[1]=3,l[2]=4,l[5]=6,l[7]=6,l[8]=5,i?(Bp(t,e,xG,JG),Bp(t,n,XG,LG),l[0]=0,l[3]=1,l[4]=2,l[6]=1):o?(Bp(e,n,xG,JG),Bp(e,t,XG,LG),l[0]=1,l[3]=2,l[4]=0,l[6]=2):a&&(Bp(n,t,xG,JG),Bp(n,e,XG,LG),l[0]=2,l[3]=0,l[4]=1,l[6]=0)):s===2&&(l[2]=4,l[4]=4,l[5]=3,l[7]=5,l[8]=6,i?o?a||(Bp(n,t,xG,JG),Bp(n,e,XG,LG),l[0]=0,l[1]=1,l[3]=0,l[6]=2):(Bp(e,n,xG,JG),Bp(e,t,XG,LG),l[0]=2,l[1]=0,l[3]=2,l[6]=1):(Bp(t,e,xG,JG),Bp(t,n,XG,LG),l[0]=1,l[1]=2,l[3]=1,l[6]=0));let r=L7.positions;return r[0]=t,r[1]=e,r[2]=n,r.length=3,(s===1||s===2)&&(r[3]=xG,r[4]=XG,r[5]=JG,r[6]=LG,r.length=7),L7}function XVt(t,e){let n=t.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&c(n[o])&&c(n[o].values)){let a=n[o];a.values=it.createTypedArray(a.componentDatatype,a.values)}let i=_e.computeNumberOfVertices(t);return t.indices=re.createTypedArray(i,t.indices),e&&(t.boundingSphere=Ft.fromVertices(n.position.values)),t}function RE(t){let e=t.attributes,n={};for(let i in e)if(e.hasOwnProperty(i)&&c(e[i])&&c(e[i].values)){let o=e[i];n[i]=new jt({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new _e({attributes:n,indices:[],primitiveType:t.primitiveType})}function O7(t,e,n){let i=c(t.geometry.boundingSphere);e=XVt(e,i),n=XVt(n,i),c(n)&&!c(e)?t.geometry=n:!c(n)&&c(e)?t.geometry=e:(t.westHemisphereGeometry=e,t.eastHemisphereGeometry=n,t.geometry=void 0)}function H7(t,e){let n=new t,i=new t,o=new t;return function(a,s,l,r,d,m,h,u){let R=t.fromArray(d,a*e,n),V=t.fromArray(d,s*e,i),F=t.fromArray(d,l*e,o);t.multiplyByScalar(R,r.x,R),t.multiplyByScalar(V,r.y,V),t.multiplyByScalar(F,r.z,F);let U=t.add(R,V,R);if(t.add(U,F,U),u)try{t.normalize(U,U)}catch(G){throw new Ut(G)}t.pack(U,m,h*e)}}var Bvt=H7(bt,4),tw=H7(p,3),OVt=H7(K,2),Qvt=function(t,e,n,i,o,a,s){let l=o[t]*i.x,r=o[e]*i.y,d=o[n]*i.z;a[s]=l+r+d>k.EPSILON6?1:0},t2=new p,M7=new p,_7=new p,kvt=new p;function qH(t,e,n,i,o,a,s,l,r,d,m,h,u,R,V,F){if(!c(a)&&!c(s)&&!c(l)&&!c(r)&&!c(d)&&R===0)return;let U=p.fromArray(o,t*3,t2),G=p.fromArray(o,e*3,M7),A=p.fromArray(o,n*3,_7),S=YG(i,U,G,A,kvt);if(c(S)){if(c(a)&&tw(t,e,n,S,a,h.normal.values,F,!0),c(d)){let g=p.fromArray(d,t*3,t2),C=p.fromArray(d,e*3,M7),y=p.fromArray(d,n*3,_7);p.multiplyByScalar(g,S.x,g),p.multiplyByScalar(C,S.y,C),p.multiplyByScalar(y,S.z,y);let Y;!p.equals(g,p.ZERO)||!p.equals(C,p.ZERO)||!p.equals(y,p.ZERO)?(Y=p.add(g,C,g),p.add(Y,y,Y),p.normalize(Y,Y)):(Y=t2,Y.x=0,Y.y=0,Y.z=0),p.pack(Y,h.extrudeDirection.values,F*3)}if(c(m)&&Qvt(t,e,n,S,m,h.applyOffset.values,F),c(s)&&tw(t,e,n,S,s,h.tangent.values,F,!0),c(l)&&tw(t,e,n,S,l,h.bitangent.values,F,!0),c(r)&&OVt(t,e,n,S,r,h.st.values,F),R>0)for(let g=0;g3){let B=I.positions,X=I.indices,_=X.length;for(let P=0;P<_;++P){let w=X[P],z=B[w];z.y<0?(F=V.attributes,U=V.indices,G=g):(F=R.attributes,U=R.indices,G=C),A=HZ(F,U,G,m,w<3?S+w:-1,z),qH(Y,Q,J,z,i,o,s,a,l,r,d,F,h,u,n,A)}}else c(I)&&(M=I.positions[0],Z=I.positions[1],E=I.positions[2]),M.y<0?(F=V.attributes,U=V.indices,G=g):(F=R.attributes,U=R.indices,G=C),A=HZ(F,U,G,m,S,M),qH(Y,Q,J,M,i,o,s,a,l,r,d,F,h,u,n,A),A=HZ(F,U,G,m,S+1,Z),qH(Y,Q,J,Z,i,o,s,a,l,r,d,F,h,u,n,A),A=HZ(F,U,G,m,S+2,E),qH(Y,Q,J,E,i,o,s,a,l,r,d,F,h,u,n,A)}O7(t,V,R)}var HVt=Kn.fromPointNormal(p.ZERO,p.UNIT_Y),Xvt=new p,Jvt=new p;function ZE(t,e,n,i,o,a,s){if(!c(s))return;let l=p.fromArray(i,t*3,t2);p.equalsEpsilon(l,n,k.EPSILON10)?a.applyOffset.values[o]=s[t]:a.applyOffset.values[o]=s[e]}function LVt(t){let e=t.geometry,n=e.attributes,i=n.position.values,o=c(n.applyOffset)?n.applyOffset.values:void 0,a=e.indices,s=RE(e),l=RE(e),r,d=a.length,m=[];m.length=i.length/3;let h=[];for(h.length=i.length/3,r=0;r0)continue;let r=p.unpack(i,s,PVt);(l.y<0&&r.y>0||l.y>0&&r.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):p.pack(l,i,s));let d=p.unpack(o,s,D7);(l.y<0&&d.y>0||l.y>0&&d.y<0)&&(s+30||Ft.intersectPlane(n,Kn.ORIGIN_ZX_PLANE)!==yn.INTERSECTING))return t;if(e.geometryType!==gp.NONE)switch(e.geometryType){case gp.POLYLINES:Hvt(t);break;case gp.TRIANGLES:JVt(t);break;case gp.LINES:LVt(t);break}else Ivt(e),e.primitiveType===le.TRIANGLES?JVt(t):e.primitiveType===le.LINES&&LVt(t);return t};var gi=Ic;var PVn=b(W(),1);function Sm(t){this._ellipsoid=f(t,mt.WGS84),this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(Sm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Sm.mercatorAngleToGeodeticLatitude=function(t){return k.PI_OVER_TWO-2*Math.atan(Math.exp(-t))};Sm.geodeticLatitudeToMercatorAngle=function(t){t>Sm.MaximumLatitude?t=Sm.MaximumLatitude:t<-Sm.MaximumLatitude&&(t=-Sm.MaximumLatitude);let e=Math.sin(t);return .5*Math.log((1+e)/(1-e))};Sm.MaximumLatitude=Sm.mercatorAngleToGeodeticLatitude(Math.PI);Sm.prototype.project=function(t,e){let n=this._semimajorAxis,i=t.longitude*n,o=Sm.geodeticLatitudeToMercatorAngle(t.latitude)*n,a=t.height;return c(e)?(e.x=i,e.y=o,e.z=a,e):new p(i,o,a)};Sm.prototype.unproject=function(t,e){let n=this._oneOverSemimajorAxis,i=t.x*n,o=Sm.mercatorAngleToGeodeticLatitude(t.y*n),a=t.z;return c(e)?(e.longitude=i,e.latitude=o,e.height=a,e):new gt(i,o,a)};var Yo=Sm;function wvt(t,e,n){let i=!n,o=t.length,a;if(!i&&o>1){let s=t[0].modelMatrix;for(a=1;a=0){let d=i[l];o=d.offset+d.count,s=d.index,a=n[s].indices.length}else o=0,s=0,a=n[s].indices.length;let r=t.length;for(let d=0;da&&(o=0,a=n[++s].indices.length),i.push({index:s,offset:o,count:u}),o+=u}}function Kvt(t,e){let n=[];return P7(t,"geometry",e,n),P7(t,"westHemisphereGeometry",e,n),P7(t,"eastHemisphereGeometry",e,n),n}var yb={};yb.combineGeometry=function(t){let e,n,i=t.instances,o=i.length,a,s,l=!1;o>0&&(e=vvt(t),e.length>0&&(n=gi.createAttributeLocations(e[0]),t.createPickOffsets&&(a=Kvt(i,e))),c(i[0].attributes)&&c(i[0].attributes.offset)&&(s=new Array(o),l=!0));let r=new Array(o),d=new Array(o);for(let m=0;m0&&(n.set(r.indices,s),s+=V)}return e.push(n.buffer),{stringTable:i,packedData:n}};yb.unpackCreateGeometryResults=function(t){let e=t.stringTable,n=t.packedData,i,o=new Array(n[0]),a=0,s=1;for(;s0){let C=U.length/G;for(g=re.createTypedArray(C,F),i=0;i= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; gl_Position *= show; }`,`${i} -${o}`};function qut(t,e){if(!t.compressVertices)return e;let n=e.search(/in\s+vec3\s+normal;/g)!==-1,i=e.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return e;let o=e.search(/in\s+vec3\s+tangent;/g)!==-1,a=e.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||a?1:0;let l=s>1?`vec${s}`:"float",r="compressedAttributes",d=`in ${l} ${r};`,m="",h="";if(i){m+=`vec2 st; -`;let u=s>1?`${r}.x`:r;h+=` st = czm_decompressTextureCoordinates(${u}); +${o}`};function qVt(t,e){if(!t.compressVertices)return e;let n=e.search(/in\s+vec3\s+normal;/g)!==-1,i=e.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return e;let o=e.search(/in\s+vec3\s+tangent;/g)!==-1,a=e.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||a?1:0;let l=s>1?`vec${s}`:"float",r="compressedAttributes",d=`in ${l} ${r};`,m="",h="";if(i){m+=`vec2 st; +`;let V=s>1?`${r}.x`:r;h+=` st = czm_decompressTextureCoordinates(${V}); `}n&&o&&a?(m+=`vec3 normal; vec3 tangent; vec3 bitangent; @@ -4994,14 +4994,14 @@ vec3 bitangent; `,h+=` tangent = czm_octDecode(${r}.${i&&n?"z":"y"}); `),a&&(m+=`vec3 bitangent; `,h+=` bitangent = czm_octDecode(${r}.${i&&n?"z":"y"}); -`));let Z=e;Z=Z.replace(/in\s+vec3\s+normal;/g,""),Z=Z.replace(/in\s+vec2\s+st;/g,""),Z=Z.replace(/in\s+vec3\s+tangent;/g,""),Z=Z.replace(/in\s+vec3\s+bitangent;/g,""),Z=Ve.replaceMain(Z,"czm_non_compressed_main");let b=`void main() +`));let u=e;u=u.replace(/in\s+vec3\s+normal;/g,""),u=u.replace(/in\s+vec2\s+st;/g,""),u=u.replace(/in\s+vec3\s+tangent;/g,""),u=u.replace(/in\s+vec3\s+bitangent;/g,""),u=Ze.replaceMain(u,"czm_non_compressed_main");let R=`void main() { ${h} czm_non_compressed_main(); -}`;return[d,m,Z,b].join(` -`)}function cKt(t){let e=Ve.replaceMain(t,"czm_non_depth_clamp_main");return e+=`void main() { +}`;return[d,m,u,R].join(` +`)}function c3t(t){let e=Ze.replaceMain(t,"czm_non_depth_clamp_main");return e+=`void main() { czm_non_depth_clamp_main(); gl_Position = czm_depthClamp(gl_Position);} -`,e}function mKt(t){let e=Ve.replaceMain(t,"czm_non_depth_clamp_main");return e+=`void main() { +`,e}function m3t(t){let e=Ze.replaceMain(t,"czm_non_depth_clamp_main");return e+=`void main() { czm_non_depth_clamp_main(); #if defined(LOG_DEPTH) czm_writeLogDepth(); @@ -5009,7 +5009,7 @@ ${h} czm_non_compressed_main(); czm_writeDepthClamp(); #endif } -`,e}function $ut(t,e){let n=t.vertexAttributes}function hKt(t,e){return function(){return t[e]}}var v7=Math.max(In.hardwareConcurrency-1,1),nw,pKt=new $i("combineGeometry");function uKt(t,e){let n,i,o,a,s=t._instanceIds;if(t._state===vs.READY){n=Array.isArray(t.geometryInstances)?t.geometryInstances:[t.geometryInstances];let l=t._numberOfInstances=n.length,r=[],d=[];for(o=0;o0){let F=new Float64Array(h);for(u=[F.buffer],a=0;a0?(t._recomputeBoundingSpheres=!0,t._state=vs.COMBINED):nk(t,e,vs.FAILED,void 0)}).catch(function(h){nk(t,e,vs.FAILED,h)})}}function ZKt(t,e){let n=Array.isArray(t.geometryInstances)?t.geometryInstances:[t.geometryInstances],i=t._numberOfInstances=n.length,o=new Array(i),a=t._instanceIds,s,l,r=0;for(l=0;l0?(t._recomputeBoundingSpheres=!0,t._state=vs.COMBINED):nk(t,e,vs.FAILED,void 0)}function VKt(t,e){let n=t._batchTableAttributeIndices.offset;if(!t._recomputeBoundingSpheres||!c(n)){t._recomputeBoundingSpheres=!1;return}let i,o=t._offsetInstanceExtend,a=t._instanceBoundingSpheres,s=a.length,l=t._tempBoundingSpheres;if(!c(l)){for(l=new Array(s),i=0;i0||Ft.intersectPlane(F,Kn.ORIGIN_ZX_PLANE)!==yn.INTERSECTING?r.push(F):(d.push(F),m.push(F))}let h=r[0],Z=m[0],b=d[0];for(i=1;i0){if(Sn.maximumVertexTextureImageUnits===0)throw new St("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(t)}if(this._state!==vs.COMPLETE&&this._state!==vs.COMBINED&&(this.asynchronous?uKt(this,t):ZKt(this,t)),this._state===vs.COMBINED&&(bKt(this,t),eZt(this,t),WKt(this,t)),!this.show||this._state!==vs.COMPLETE)return;this._batchTableOffsetsUpdated||eZt(this,t),this._recomputeBoundingSpheres&&VKt(this,t);let n=this.appearance,i=n.material,o=!1,a=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,a=!0):this._material!==i&&(this._material=i,a=!0);let s=this.depthFailAppearance,l=c(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=l,o=!0,a=!0):this._depthFailMaterial!==l&&(this._depthFailMaterial=l,a=!0);let r=this._appearance.isTranslucent();this._translucent!==r&&(this._translucent=r,o=!0),c(this._material)&&this._material.update(e);let d=n.closed&&r;o&&f(this._createRenderStatesFunction,fKt)(this,e,n,d),a&&f(this._createShaderProgramFunction,FKt)(this,t,n),(o||a)&&f(this._createCommandsFunction,UKt)(this,n,i,r,d,this._colorCommands,this._pickCommands,t),f(this._updateAndQueueCommandsFunction,GKt)(this,t,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,d)};var AKt=new Ft,TKt=new Ft;function dZt(t,e,n){if(n===zn.TOP){let i=Ft.clone(t,AKt),o=Ft.clone(t,TKt);o.center=p.add(o.center,e,o.center),t=Ft.union(i,o,t)}else n===zn.ALL&&(t.center=p.add(t.center,e,t.center));return t}function SKt(t,e,n){return function(){let i=t.getBatchedAttribute(e,n),o=t.attributes[n],a=o.componentsPerAttribute,s=it.createTypedArray(o.componentDatatype,a);return c(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function gKt(t,e,n,i,o){return function(a){let s=aZt(a);t.setBatchedAttribute(e,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var EKt=new p;function CKt(t,e,n){e.boundingSphere={get:function(){let i=t._instanceBoundingSpheres[n];if(c(i)){i=i.clone();let o=t.modelMatrix,a=e.offset;c(a)&&dZt(i,p.fromArray(a.get(),0,EKt),t._offsetInstanceExtend[n]),c(o)&&(i=Ft.transform(i,o))}return i}},e.boundingSphereCV={get:function(){return t._instanceBoundingSpheresCV[n]}}}function IKt(t,e,n){e.pickId={get:function(){return t._pickIds[n]}}}Ks.prototype.getGeometryInstanceAttributes=function(t){let e=this._perInstanceAttributeCache.get(t);if(c(e))return e;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,a=o.length;for(let d=0;d0){let F=new Float64Array(h);for(V=[F.buffer],a=0;a0?(t._recomputeBoundingSpheres=!0,t._state=vs.COMBINED):n2(t,e,vs.FAILED,void 0)}).catch(function(h){n2(t,e,vs.FAILED,h)})}}function u3t(t,e){let n=Array.isArray(t.geometryInstances)?t.geometryInstances:[t.geometryInstances],i=t._numberOfInstances=n.length,o=new Array(i),a=t._instanceIds,s,l,r=0;for(l=0;l0?(t._recomputeBoundingSpheres=!0,t._state=vs.COMBINED):n2(t,e,vs.FAILED,void 0)}function Z3t(t,e){let n=t._batchTableAttributeIndices.offset;if(!t._recomputeBoundingSpheres||!c(n)){t._recomputeBoundingSpheres=!1;return}let i,o=t._offsetInstanceExtend,a=t._instanceBoundingSpheres,s=a.length,l=t._tempBoundingSpheres;if(!c(l)){for(l=new Array(s),i=0;i0||Ft.intersectPlane(F,Kn.ORIGIN_ZX_PLANE)!==yn.INTERSECTING?r.push(F):(d.push(F),m.push(F))}let h=r[0],u=m[0],R=d[0];for(i=1;i0){if(Tn.maximumVertexTextureImageUnits===0)throw new Tt("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(t)}if(this._state!==vs.COMPLETE&&this._state!==vs.COMBINED&&(this.asynchronous?V3t(this,t):u3t(this,t)),this._state===vs.COMBINED&&(R3t(this,t),eut(this,t),W3t(this,t)),!this.show||this._state!==vs.COMPLETE)return;this._batchTableOffsetsUpdated||eut(this,t),this._recomputeBoundingSpheres&&Z3t(this,t);let n=this.appearance,i=n.material,o=!1,a=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,a=!0):this._material!==i&&(this._material=i,a=!0);let s=this.depthFailAppearance,l=c(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=l,o=!0,a=!0):this._depthFailMaterial!==l&&(this._depthFailMaterial=l,a=!0);let r=this._appearance.isTranslucent();this._translucent!==r&&(this._translucent=r,o=!0),c(this._material)&&this._material.update(e);let d=n.closed&&r;o&&f(this._createRenderStatesFunction,f3t)(this,e,n,d),a&&f(this._createShaderProgramFunction,F3t)(this,t,n),(o||a)&&f(this._createCommandsFunction,U3t)(this,n,i,r,d,this._colorCommands,this._pickCommands,t),f(this._updateAndQueueCommandsFunction,G3t)(this,t,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,d)};var A3t=new Ft,S3t=new Ft;function dut(t,e,n){if(n===zn.TOP){let i=Ft.clone(t,A3t),o=Ft.clone(t,S3t);o.center=p.add(o.center,e,o.center),t=Ft.union(i,o,t)}else n===zn.ALL&&(t.center=p.add(t.center,e,t.center));return t}function T3t(t,e,n){return function(){let i=t.getBatchedAttribute(e,n),o=t.attributes[n],a=o.componentsPerAttribute,s=it.createTypedArray(o.componentDatatype,a);return c(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function g3t(t,e,n,i,o){return function(a){let s=aut(a);t.setBatchedAttribute(e,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var E3t=new p;function C3t(t,e,n){e.boundingSphere={get:function(){let i=t._instanceBoundingSpheres[n];if(c(i)){i=i.clone();let o=t.modelMatrix,a=e.offset;c(a)&&dut(i,p.fromArray(a.get(),0,E3t),t._offsetInstanceExtend[n]),c(o)&&(i=Ft.transform(i,o))}return i}},e.boundingSphereCV={get:function(){return t._instanceBoundingSpheresCV[n]}}}function I3t(t,e,n){e.pickId={get:function(){return t._pickIds[n]}}}Ks.prototype.getGeometryInstanceAttributes=function(t){let e=this._perInstanceAttributeCache.get(t);if(c(e))return e;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,a=o.length;for(let d=0;dd&&(m=k.PI-s,s=-k.PI,d+=m),a-=k.EPSILON5,s-=k.EPSILON5,r+=k.EPSILON5,d+=k.EPSILON5;let h=1/(d-s),Z=1/(r-a),b={sphericalExtents:new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:4,normalize:!1,value:[a,s,Z,h]}),longitudeRotation:new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:1,normalize:!1,value:[m]})};return RZt(b,e),FZt(t,i,b),b};Qp.hasAttributesForTextureCoordinatePlanes=function(t){return c(t.southWest_HIGH)&&c(t.southWest_LOW)&&c(t.northward)&&c(t.eastward)&&c(t.planes2D_HIGH)&&c(t.planes2D_LOW)&&c(t.uMaxVmax)&&c(t.uvMinAndExtents)};Qp.hasAttributesForSphericalExtents=function(t){return c(t.sphericalExtents)&&c(t.longitudeRotation)&&c(t.planes2D_HIGH)&&c(t.planes2D_LOW)&&c(t.uMaxVmax)&&c(t.uvMinAndExtents)};function OKt(t){return Math.max(t.width,t.height)>Qp.MAX_WIDTH_FOR_PLANAR_EXTENTS}Qp.shouldUseSphericalCoordinates=function(t){return OKt(t)};Qp.MAX_WIDTH_FOR_PLANAR_EXTENTS=k.toRadians(1);var Fh=Qp;var yVn=R(W(),1);var TVn=R(W(),1);var HKt={NEVER:pt.NEVER,LESS:pt.LESS,EQUAL:pt.EQUAL,LESS_OR_EQUAL:pt.LEQUAL,GREATER:pt.GREATER,NOT_EQUAL:pt.NOTEQUAL,GREATER_OR_EQUAL:pt.GEQUAL,ALWAYS:pt.ALWAYS},Li=Object.freeze(HKt);var EVn=R(W(),1);var wKt={ZERO:pt.ZERO,KEEP:pt.KEEP,REPLACE:pt.REPLACE,INCREMENT:pt.INCR,DECREMENT:pt.DECR,INVERT:pt.INVERT,INCREMENT_WRAP:pt.INCR_WRAP,DECREMENT_WRAP:pt.DECR_WRAP},je=Object.freeze(wKt);var ow={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};ow.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Li.ALWAYS,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.REPLACE},backFunction:Li.ALWAYS,backOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.REPLACE},reference:ow.CESIUM_3D_TILE_MASK,mask:ow.CESIUM_3D_TILE_MASK}};var gn=Object.freeze(ow);function _G(t){t=f(t,f.EMPTY_OBJECT);let e=t.geometryInstances;this.geometryInstances=e,this.show=f(t.show,!0),this.classificationType=f(t.classificationType,Ji.BOTH),this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.debugShowShadowVolume=f(t.debugShowShadowVolume,!1),this._debugShowShadowVolume=!1,this._extruded=f(t._extruded,!1),this._uniformMap=t._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=t._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=t.appearance,this._createBoundingVolumeFunction=t._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=t._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:f(t.vertexCacheOptimize,!1),interleave:f(t.interleave,!1),releaseGeometryInstances:f(t.releaseGeometryInstances,!0),allowPicking:f(t.allowPicking,!0),asynchronous:f(t.asynchronous,!0),compressVertices:f(t.compressVertices,!0),_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(_G.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});_G.isSupported=function(t){return t.context.stencilBuffer};function WE(t,e){let n=e?Li.EQUAL:Li.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:t,frontFunction:n,frontOperation:{fail:je.KEEP,zFail:je.DECREMENT_WRAP,zPass:je.KEEP},backFunction:n,backOperation:{fail:je.KEEP,zFail:je.INCREMENT_WRAP,zPass:je.KEEP},reference:gn.CESIUM_3D_TILE_MASK,mask:gn.CESIUM_3D_TILE_MASK},stencilMask:gn.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:_d.LESS_OR_EQUAL},depthMask:!1}}function q7(t){return{stencilTest:{enabled:t,frontFunction:Li.NOT_EQUAL,frontOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},backFunction:Li.NOT_EQUAL,backOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},reference:0,mask:gn.CLASSIFICATION_MASK},stencilMask:gn.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:Pn.PRE_MULTIPLIED_ALPHA_BLEND}}var PKt={stencilTest:{enabled:!0,frontFunction:Li.NOT_EQUAL,frontOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},backFunction:Li.NOT_EQUAL,backOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},reference:0,mask:gn.CLASSIFICATION_MASK},stencilMask:gn.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function vKt(t,e,n,i){if(c(t._rsStencilDepthPass))return;let o=!t.debugShowShadowVolume;t._rsStencilDepthPass=he.fromCache(WE(o,!1)),t._rsStencilDepthPass3DTiles=he.fromCache(WE(o,!0)),t._rsColorPass=he.fromCache(q7(o,!1)),t._rsPickPass=he.fromCache(PKt)}function KKt(t,e){if(!t.compressVertices)return e;if(e.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +${n.fragmentShaderSource}`;i.normalEC=a.indexOf("materialInput.normalEC")!==-1||a.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=a.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=a.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=a.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=t,this._planarExtents=e}Qp.prototype.createFragmentShader=function(t){let e=this._appearance,n=this._colorShaderDependencies,i=[];!t&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),e instanceof jn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),e.flat&&i.push("FLAT");let o="";return e instanceof jn||(o=e.material.shaderSource),new Ze({defines:i,sources:[o,bE]})};Qp.prototype.createPickFragmentShader=function(t){let e=this._pickShaderDependencies,n=["PICK"];return!t&&!this._planarExtents&&n.push("SPHERICAL"),e.requiresEC&&n.push("REQUIRES_EC"),e.requiresWC&&n.push("REQUIRES_WC"),e.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new Ze({defines:n,sources:[bE],pickColorQualifier:"in"})};Qp.prototype.createVertexShader=function(t,e,n,i){return Rut(this._colorShaderDependencies,this._planarExtents,n,t,e,this._appearance,i,this._projectionExtentDefines)};Qp.prototype.createPickVertexShader=function(t,e,n,i){return Rut(this._pickShaderDependencies,this._planarExtents,n,t,e,void 0,i,this._projectionExtentDefines)};var cut=new p,mut=new gt,hut={high:0,low:0};function Rut(t,e,n,i,o,a,s,l){let r=i.slice();if(l.eastMostYhighDefine===""){let d=mut;d.longitude=k.PI,d.latitude=0,d.height=0;let m=s.project(d,cut),h=Mi.encode(m.x,hut);l.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,l.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let u=mut;u.longitude=-k.PI,u.latitude=0,u.height=0;let R=s.project(u,cut);h=Mi.encode(R.x,hut),l.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,l.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(r.push(l.eastMostYhighDefine),r.push(l.eastMostYlowDefine),r.push(l.westMostYhighDefine),r.push(l.westMostYlowDefine)),c(a)&&a instanceof jn&&r.push("PER_INSTANCE_COLOR"),t.requiresTextureCoordinates&&(r.push("TEXTURE_COORDINATES"),e||n||r.push("SPHERICAL"),n&&r.push("COLUMBUS_VIEW_2D")),new Ze({defines:r,sources:[o]})}function z7(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(z7.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(t){this._requiresEC=t||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(t){this._requiresWC=t||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(t){this._requiresNormalEC=t||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(t){this._requiresTextureCoordinates=t||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(t){this.requiresNormalEC=t,this._usesNormalEC=t},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(t){this.requiresWC=t,this.requiresNormalEC=t,this._usesTangentToEyeMat=t},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(t){this.requiresEC=t,this._usesPositionToEyeEC=t},get:function(){return this._usesPositionToEyeEC}},st:{set:function(t){this.requiresTextureCoordinates=t,this._usesSt=t},get:function(){return this._usesSt}}});function put(t,e,n){return Math.abs((e.y-t.y)*n.x-(e.x-t.x)*n.y+e.x*t.y-e.y*t.x)/K.distance(e,t)}var y3t=[new K,new K,new K,new K];function but(t,e){let n=y3t,i=K.unpack(e,0,n[0]),o=K.unpack(e,2,n[1]),a=K.unpack(e,4,n[2]);t.uMaxVmax=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,a.x,a.y]});let s=1/put(i,o,a),l=1/put(i,a,o);t.uvMinAndExtents=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,l]})}var Wut=new gt,fut=new p,B3t=new p,Q3t=new p,iw={high:0,low:0};function Fut(t,e,n){let i=Wut;i.height=0,i.longitude=t.west,i.latitude=t.south;let o=e.project(i,fut);i.latitude=t.north;let a=e.project(i,B3t);i.longitude=t.east,i.latitude=t.south;let s=e.project(i,Q3t),l=[0,0,0,0],r=[0,0,0,0],d=Mi.encode(o.x,iw);l[0]=d.high,r[0]=d.low,d=Mi.encode(o.y,iw),l[1]=d.high,r[1]=d.low,d=Mi.encode(a.y,iw),l[2]=d.high,r[2]=d.low,d=Mi.encode(s.x,iw),l[3]=d.high,r[3]=d.low,n.planes2D_HIGH=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:4,normalize:!1,value:l}),n.planes2D_LOW=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:4,normalize:!1,value:r})}var k3t=new L,Y3t=new L,Vut=new p,x3t=new gt,X3t=[new gt,new gt,new gt,new gt,new gt,new gt,new gt,new gt];function J3t(t,e,n,i,o,a){let s=Gt.center(t,x3t);s.height=n;let l=gt.toCartesian(s,e,Vut),r=Pe.eastNorthUpToFixedFrame(l,e,k3t),d=L.inverse(r,Y3t),m=t.west,h=t.east,u=t.north,R=t.south,V=X3t;V[0].latitude=R,V[0].longitude=m,V[1].latitude=u,V[1].longitude=m,V[2].latitude=u,V[2].longitude=h,V[3].latitude=R,V[3].longitude=h;let F=(m+h)*.5,U=(u+R)*.5;V[4].latitude=R,V[4].longitude=F,V[5].latitude=u,V[5].longitude=F,V[6].latitude=U,V[6].longitude=m,V[7].latitude=U,V[7].longitude=h;let G=Number.POSITIVE_INFINITY,A=Number.NEGATIVE_INFINITY,S=Number.POSITIVE_INFINITY,g=Number.NEGATIVE_INFINITY;for(let Q=0;Q<8;Q++){V[Q].height=n;let J=gt.toCartesian(V[Q],e,Vut);L.multiplyByPoint(d,J,J),J.z=0,G=Math.min(G,J.x),A=Math.max(A,J.x),S=Math.min(S,J.y),g=Math.max(g,J.y)}let C=i;C.x=G,C.y=S,C.z=0,L.multiplyByPoint(r,C,C);let y=o;y.x=A,y.y=S,y.z=0,L.multiplyByPoint(r,y,y),p.subtract(y,C,o);let Y=a;Y.x=G,Y.y=g,Y.z=0,L.multiplyByPoint(r,Y,Y),p.subtract(Y,C,a)}var L3t=new p,M3t=new p,_3t=new Mi;Qp.getPlanarTextureCoordinateAttributes=function(t,e,n,i,o){let a=fut,s=L3t,l=M3t;J3t(t,n,f(o,0),a,s,l);let r={};but(r,e);let d=Mi.fromCartesian(a,_3t);return r.southWest_HIGH=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:3,normalize:!1,value:p.pack(d.high,[0,0,0])}),r.southWest_LOW=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:3,normalize:!1,value:p.pack(d.low,[0,0,0])}),r.eastward=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:3,normalize:!1,value:p.pack(s,[0,0,0])}),r.northward=new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:3,normalize:!1,value:p.pack(l,[0,0,0])}),Fut(t,i,r),r};var D3t=new p;function uut(t,e,n,i){let o=Wut;o.latitude=t,o.longitude=e,o.height=0;let a=gt.toCartesian(o,n,D3t),s=Math.sqrt(a.x*a.x+a.y*a.y),l=k.fastApproximateAtan2(s,a.z),r=k.fastApproximateAtan2(a.x,a.y);return i.x=l,i.y=r,i}var Zut=new K;Qp.getSphericalExtentGeometryInstanceAttributes=function(t,e,n,i){let o=uut(t.south,t.west,n,Zut),a=o.x,s=o.y,l=uut(t.north,t.east,n,Zut),r=l.x,d=l.y,m=0;s>d&&(m=k.PI-s,s=-k.PI,d+=m),a-=k.EPSILON5,s-=k.EPSILON5,r+=k.EPSILON5,d+=k.EPSILON5;let h=1/(d-s),u=1/(r-a),R={sphericalExtents:new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:4,normalize:!1,value:[a,s,u,h]}),longitudeRotation:new Dd({componentDatatype:it.FLOAT,componentsPerAttribute:1,normalize:!1,value:[m]})};return but(R,e),Fut(t,i,R),R};Qp.hasAttributesForTextureCoordinatePlanes=function(t){return c(t.southWest_HIGH)&&c(t.southWest_LOW)&&c(t.northward)&&c(t.eastward)&&c(t.planes2D_HIGH)&&c(t.planes2D_LOW)&&c(t.uMaxVmax)&&c(t.uvMinAndExtents)};Qp.hasAttributesForSphericalExtents=function(t){return c(t.sphericalExtents)&&c(t.longitudeRotation)&&c(t.planes2D_HIGH)&&c(t.planes2D_LOW)&&c(t.uMaxVmax)&&c(t.uvMinAndExtents)};function O3t(t){return Math.max(t.width,t.height)>Qp.MAX_WIDTH_FOR_PLANAR_EXTENTS}Qp.shouldUseSphericalCoordinates=function(t){return O3t(t)};Qp.MAX_WIDTH_FOR_PLANAR_EXTENTS=k.toRadians(1);var Fh=Qp;var yZn=b(W(),1);var SZn=b(W(),1);var H3t={NEVER:pt.NEVER,LESS:pt.LESS,EQUAL:pt.EQUAL,LESS_OR_EQUAL:pt.LEQUAL,GREATER:pt.GREATER,NOT_EQUAL:pt.NOTEQUAL,GREATER_OR_EQUAL:pt.GEQUAL,ALWAYS:pt.ALWAYS},Li=Object.freeze(H3t);var EZn=b(W(),1);var w3t={ZERO:pt.ZERO,KEEP:pt.KEEP,REPLACE:pt.REPLACE,INCREMENT:pt.INCR,DECREMENT:pt.DECR,INVERT:pt.INVERT,INCREMENT_WRAP:pt.INCR_WRAP,DECREMENT_WRAP:pt.DECR_WRAP},je=Object.freeze(w3t);var ow={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};ow.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Li.ALWAYS,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.REPLACE},backFunction:Li.ALWAYS,backOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.REPLACE},reference:ow.CESIUM_3D_TILE_MASK,mask:ow.CESIUM_3D_TILE_MASK}};var gn=Object.freeze(ow);function _G(t){t=f(t,f.EMPTY_OBJECT);let e=t.geometryInstances;this.geometryInstances=e,this.show=f(t.show,!0),this.classificationType=f(t.classificationType,Ji.BOTH),this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.debugShowShadowVolume=f(t.debugShowShadowVolume,!1),this._debugShowShadowVolume=!1,this._extruded=f(t._extruded,!1),this._uniformMap=t._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=t._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=t.appearance,this._createBoundingVolumeFunction=t._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=t._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:f(t.vertexCacheOptimize,!1),interleave:f(t.interleave,!1),releaseGeometryInstances:f(t.releaseGeometryInstances,!0),allowPicking:f(t.allowPicking,!0),asynchronous:f(t.asynchronous,!0),compressVertices:f(t.compressVertices,!0),_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(_G.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});_G.isSupported=function(t){return t.context.stencilBuffer};function WE(t,e){let n=e?Li.EQUAL:Li.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:t,frontFunction:n,frontOperation:{fail:je.KEEP,zFail:je.DECREMENT_WRAP,zPass:je.KEEP},backFunction:n,backOperation:{fail:je.KEEP,zFail:je.INCREMENT_WRAP,zPass:je.KEEP},reference:gn.CESIUM_3D_TILE_MASK,mask:gn.CESIUM_3D_TILE_MASK},stencilMask:gn.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:_d.LESS_OR_EQUAL},depthMask:!1}}function q7(t){return{stencilTest:{enabled:t,frontFunction:Li.NOT_EQUAL,frontOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},backFunction:Li.NOT_EQUAL,backOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},reference:0,mask:gn.CLASSIFICATION_MASK},stencilMask:gn.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:Pn.PRE_MULTIPLIED_ALPHA_BLEND}}var P3t={stencilTest:{enabled:!0,frontFunction:Li.NOT_EQUAL,frontOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},backFunction:Li.NOT_EQUAL,backOperation:{fail:je.ZERO,zFail:je.ZERO,zPass:je.ZERO},reference:0,mask:gn.CLASSIFICATION_MASK},stencilMask:gn.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function v3t(t,e,n,i){if(c(t._rsStencilDepthPass))return;let o=!t.debugShowShadowVolume;t._rsStencilDepthPass=he.fromCache(WE(o,!1)),t._rsStencilDepthPass3DTiles=he.fromCache(WE(o,!0)),t._rsColorPass=he.fromCache(q7(o,!1)),t._rsPickPass=he.fromCache(P3t)}function K3t(t,e){if(!t.compressVertices)return e;if(e.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; `,a=` extrudeDirection = czm_octDecode(${n}, 65535.0); -`,s=e;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=Ve.replaceMain(s,"czm_non_compressed_main");let l=`void main() +`,s=e;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=Ze.replaceMain(s,"czm_non_compressed_main");let l=`void main() { ${a} czm_non_compressed_main(); }`;return[i,o,s,l].join(` -`)}}function zKt(t,e){let n=e.context,i=t._primitive,o=P2;o=t._primitive._batchTable.getVertexShaderCallback()(o),o=Wi._appendDistanceDisplayConditionToShader(i,o),o=Wi._modifyShaderPosition(t,o,e.scene3DOnly),o=Wi._updateColorAttribute(i,o);let a=t._hasPlanarExtentsAttributes,s=a||t._hasSphericalExtentsAttribute;t._extruded&&(o=KKt(i,o));let l=t._extruded?"EXTRUDED_GEOMETRY":"",r=new Ve({defines:[l],sources:[o]}),d=new Ve({sources:[Uf]}),m=t._primitive._attributeLocations,h=new Fh(s,a,t.appearance);if(t._spStencil=xn.replaceCache({context:n,shaderProgram:t._spStencil,vertexShaderSource:r,fragmentShaderSource:d,attributeLocations:m}),t._primitive.allowPicking){let u=Ve.createPickVertexShaderSource(o);u=Wi._appendShowToShader(i,u),u=Wi._updatePickColorAttribute(u);let F=h.createPickFragmentShader(!1),U=h.createPickVertexShader([l],u,!1,e.mapProjection);if(t._spPick=xn.replaceCache({context:n,shaderProgram:t._spPick,vertexShaderSource:U,fragmentShaderSource:F,attributeLocations:m}),s){let G=n.shaderCache.getDerivedShaderProgram(t._spPick,"2dPick");if(!c(G)){let A=h.createPickFragmentShader(!0),T=h.createPickVertexShader([l],u,!0,e.mapProjection);G=n.shaderCache.createDerivedShaderProgram(t._spPick,"2dPick",{vertexShaderSource:T,fragmentShaderSource:A,attributeLocations:m})}t._spPick2D=G}}else t._spPick=xn.fromCache({context:n,vertexShaderSource:r,fragmentShaderSource:d,attributeLocations:m});o=Wi._appendShowToShader(i,o),r=new Ve({defines:[l],sources:[o]}),t._sp=xn.replaceCache({context:n,shaderProgram:t._sp,vertexShaderSource:r,fragmentShaderSource:d,attributeLocations:m});let Z=h.createFragmentShader(!1),b=h.createVertexShader([l],o,!1,e.mapProjection);if(t._spColor=xn.replaceCache({context:n,shaderProgram:t._spColor,vertexShaderSource:b,fragmentShaderSource:Z,attributeLocations:m}),s){let u=n.shaderCache.getDerivedShaderProgram(t._spColor,"2dColor");if(!c(u)){let F=h.createFragmentShader(!0),U=h.createVertexShader([l],o,!0,e.mapProjection);u=n.shaderCache.createDerivedShaderProgram(t._spColor,"2dColor",{vertexShaderSource:U,fragmentShaderSource:F,attributeLocations:m})}t._spColor2D=u}}function jKt(t,e){let n=t._primitive,i=n._va.length*2;e.length=i;let o,a,s,l=0,r=n._batchTable.getUniformMapCallback()(t._uniformMap),d=t._needs2DShader;for(o=0;o0&&(r=o[0].attributes,Z=Fh.hasAttributesForSphericalExtents(r),b=Fh.hasAttributesForTextureCoordinatePlanes(r),h=r.color),s=0;s{c(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};_G.prototype.getGeometryInstanceAttributes=function(t){return this._primitive.getGeometryInstanceAttributes(t)};_G.prototype.isDestroyed=function(){return!1};_G.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,At(this)};var fE=_G;var e3t={u_globeMinimumAltitude:function(){return 55e3}};function Sm(t){t=f(t,f.EMPTY_OBJECT);let e=t.appearance,n=t.geometryInstances;if(!c(e)&&c(n)){let o=Array.isArray(n)?n:[n],a=o.length;for(let s=0;s{!this._ready&&c(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Sm.prototype.getBoundingSphere=function(t){let e=this._boundingSpheresKeys.indexOf(t);if(e!==-1)return this._boundingSpheres[e]};Sm.prototype.getGeometryInstanceAttributes=function(t){return this._primitive.getGeometryInstanceAttributes(t)};Sm.prototype.isDestroyed=function(){return!1};Sm.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};Sm._supportsMaterials=function(t){return t.depthTexture};Sm.supportsMaterials=function(t){return Sm._supportsMaterials(t.frameState.context)};var Nc=Sm;var Ebn=R(W(),1);function FE(){Ut.throwInstantiationError()}Object.defineProperties(FE.prototype,{isConstant:{get:Ut.throwInstantiationError},definitionChanged:{get:Ut.throwInstantiationError}});FE.prototype.getType=Ut.throwInstantiationError;FE.prototype.getValue=Ut.throwInstantiationError;FE.prototype.equals=Ut.throwInstantiationError;FE.getValue=function(t,e,n){let i;return c(e)&&(i=e.getType(t),c(i))?((!c(n)||n.type!==i)&&(n=eo.fromType(i)),e.getValue(t,n.uniforms),n):((!c(n)||n.type!==eo.ColorType)&&(n=eo.fromType(eo.ColorType)),v.clone(v.WHITE,n.uniforms.color),n)};var Ua=FE;function DG(t,e,n){this._primitives=e,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=t._options,this._entity=t._entity,this._material=void 0}DG.prototype._isHidden=function(t,e,n){return!t.isShowing||!t.isAvailable(n)||!et.getValueOrDefault(e.show,n,!0)};DG.prototype._setOptions=Ut.throwInstantiationError;DG.prototype.update=function(t){let e=this._geometryUpdater,n=e._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let a=this._entity,s=a[this._geometryUpdater._geometryPropertyName];if(this._setOptions(a,s,t),this._isHidden(a,s,t))return;let l=this._geometryUpdater.shadowsProperty.getValue(t),r=this._options;if(!c(s.fill)||s.fill.getValue(t)){let d=e.fillMaterialProperty,m=d instanceof Cn,h,Z=e._getIsClosed(r);if(m)h=new jn({closed:Z,flat:n&&!e._supportsMaterialsforEntitiesOnTerrain});else{let b=Ua.getValue(t,d,this._material);this._material=b,h=new Fa({material:b,translucent:b.isTranslucent(),closed:Z})}if(n)r.vertexFormat=jn.VERTEX_FORMAT,this._primitive=o.add(new Nc({geometryInstances:this._geometryUpdater.createFillGeometryInstance(t),appearance:h,asynchronous:!1,shadows:l,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(t)}),et.getValueOrUndefined(this._geometryUpdater.zIndex,t));else{r.vertexFormat=h.vertexFormat;let b=this._geometryUpdater.createFillGeometryInstance(t);m&&(h.translucent=b.attributes.color.value[3]!==255),a?.properties?.uniforms&&(h.uniforms=a.properties.uniforms.getValue()()),a?.properties?.vertexShaderSource&&(h._vertexShaderSource=a.properties.vertexShaderSource.getValue()()),a?.properties?.fragmentShaderSource&&(h._fragmentShaderSource=a.properties.fragmentShaderSource.getValue()()),this._primitive=i.add(new Wi({geometryInstances:b,appearance:h,asynchronous:!1,shadows:l}))}}if(!n&&c(s.outline)&&s.outline.getValue(t)){let d=this._geometryUpdater.createOutlineGeometryInstance(t),m=et.getValueOrDefault(s.outlineWidth,t,1);this._outlinePrimitive=i.add(new Wi({geometryInstances:d,appearance:new jn({flat:!0,translucent:d.attributes.color.value[3]!==255,renderState:{lineWidth:e._scene.clampLineWidth(m)}}),asynchronous:!1,shadows:l}))}};DG.prototype.getBoundingSphere=function(t){let e=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return c(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(e),c(o)&&c(o.boundingSphere))?(Ft.clone(o.boundingSphere,t),ve.DONE):c(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(e),c(o)&&c(o.boundingSphere))?(Ft.clone(o.boundingSphere,t),ve.DONE):c(n)&&!n.ready||c(i)&&!i.ready?ve.PENDING:ve.FAILED};DG.prototype.isDestroyed=function(){return!1};DG.prototype.destroy=function(){let t=this._primitives,e=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?e.remove(this._primitive):t.removeAndDestroy(this._primitive),t.removeAndDestroy(this._outlinePrimitive),At(this)};var lo=DG;var TGn=R(W(),1);var rGn=R(W(),1);var v0n=R(W(),1);var YRn=R(W(),1);var Obn=R(W(),1),c3t={NONE:0,GEODESIC:1,RHUMB:2},Ln=Object.freeze(c3t);var Kbn=R(W(),1);var gZt=k.EPSILON10;function m3t(t,e,n,i){if(!c(t))return;n=f(n,!1);let o=c(i),a=t.length;if(a<2)return t;let s,l=t[0],r,d,m=0,h=-1;for(s=1;sk.EPSILON12);let E=M*(e*e-n*n)/(n*n),I=1+E*(4096+E*(E*(320-175*E)-768))/16384,B=E*(256+E*(E*(74-47*E)-128))/1024,X=V*V,_=B*J*(V+B*(Q*(2*X-1)-B*V*(4*J*J-3)*(4*X-3)/6)/4),P=n*I*(Y-_),w=Math.atan2(b*y,U-A*C),z=Math.atan2(h*y,U*C-A);t._distance=P,t._startHeading=w,t._endHeading=z,t._uSquared=E}var Z3t=new p,eq=new p;function CZt(t,e,n,i){let o=p.normalize(i.cartographicToCartesian(e,eq),Z3t),a=p.normalize(i.cartographicToCartesian(n,eq),eq);u3t(t,i.maximumRadius,i.minimumRadius,e.longitude,e.latitude,n.longitude,n.latitude),t._start=gt.clone(e,t._start),t._end=gt.clone(n,t._end),t._start.height=0,t._end.height=0,h3t(t)}function ik(t,e,n){let i=f(n,mt.WGS84);this._ellipsoid=i,this._start=new gt,this._end=new gt,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,c(t)&&c(e)&&CZt(this,t,e,i)}Object.defineProperties(ik.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});ik.prototype.setEndPoints=function(t,e){CZt(this,t,e,this._ellipsoid)};ik.prototype.interpolateUsingFraction=function(t,e){return this.interpolateUsingSurfaceDistance(this._distance*t,e)};ik.prototype.interpolateUsingSurfaceDistance=function(t,e){let n=this._constants,i=n.distanceRatio+t/n.b,o=Math.cos(2*i),a=Math.cos(4*i),s=Math.cos(6*i),l=Math.sin(2*i),r=Math.sin(4*i),d=Math.sin(6*i),m=Math.sin(8*i),h=i*i,Z=i*h,b=n.u8Over256,u=n.u2Over4,F=n.u6Over64,U=n.u4Over16,G=2*Z*b*o/3+i*(1-u+7*U/4-15*F/4+579*b/64-(U-15*F/4+187*b/16)*o-(5*F/4-115*b/16)*a-29*b*s/16)+(u/2-U+71*F/32-85*b/16)*l+(5*U/16-5*F/4+383*b/96)*r-h*((F-11*b/2)*l+5*b*r/2)+(29*F/96-29*b/16)*d+539*b*m/1536,A=Math.asin(Math.sin(G)*n.cosineAlpha),T=Math.atan(n.a/n.b*Math.tan(A));G=G-n.sigma;let g=Math.cos(2*n.sigma+G),C=Math.sin(G),y=Math.cos(G),Y=n.cosineU*y,Q=n.sineU*C,M=Math.atan2(C*n.sineHeading,Y-Q*n.cosineHeading)-EZt(n.f,n.sineAlpha,n.cosineSquaredAlpha,G,C,y,g);return c(e)?(e.longitude=this._start.longitude+M,e.latitude=T,e.height=0,e):new gt(this._start.longitude+M,T,0)};var oZ=ik;var mRn=R(W(),1);function iq(t,e,n){if(t===0)return e*n;let i=t*t,o=i*i,a=o*i,s=a*i,l=s*i,r=l*i,d=n,m=Math.sin(2*d),h=Math.sin(4*d),Z=Math.sin(6*d),b=Math.sin(8*d),u=Math.sin(10*d),F=Math.sin(12*d);return e*((1-i/4-3*o/64-5*a/256-175*s/16384-441*l/65536-4851*r/1048576)*d-(3*i/8+3*o/32+45*a/1024+105*s/4096+2205*l/131072+6237*r/524288)*m+(15*o/256+45*a/1024+525*s/16384+1575*l/65536+155925*r/8388608)*h-(35*a/3072+175*s/12288+3675*l/262144+13475*r/1048576)*Z+(315*s/131072+2205*l/524288+43659*r/8388608)*b-(693*l/1310720+6237*r/5242880)*u+1001*r/8388608*F)}function V3t(t,e,n){let i=t/n;if(e===0)return i;let o=i*i,a=o*i,s=a*i,l=e,r=l*l,d=r*r,m=d*r,h=m*r,Z=h*r,b=Z*r,u=Math.sin(2*i),F=Math.cos(2*i),U=Math.sin(4*i),G=Math.cos(4*i),A=Math.sin(6*i),T=Math.cos(6*i),g=Math.sin(8*i),C=Math.cos(8*i),y=Math.sin(10*i),Y=Math.cos(10*i),Q=Math.sin(12*i);return i+i*r/4+7*i*d/64+15*i*m/256+579*i*h/16384+1515*i*Z/65536+16837*i*b/1048576+(3*i*d/16+45*i*m/256-i*(32*o-561)*h/4096-i*(232*o-1677)*Z/16384+i*(399985-90560*o+512*s)*b/5242880)*F+(21*i*m/256+483*i*h/4096-i*(224*o-1969)*Z/16384-i*(33152*o-112599)*b/1048576)*G+(151*i*h/4096+4681*i*Z/65536+1479*i*b/16384-453*a*b/32768)*T+(1097*i*Z/65536+42783*i*b/1048576)*C+8011*i*b/1048576*Y+(3*r/8+3*d/16+213*m/2048-3*o*m/64+255*h/4096-33*o*h/512+20861*Z/524288-33*o*Z/512+s*Z/1024+28273*b/1048576-471*o*b/8192+9*s*b/4096)*u+(21*d/256+21*m/256+533*h/8192-21*o*h/512+197*Z/4096-315*o*Z/4096+584039*b/16777216-12517*o*b/131072+7*s*b/2048)*U+(151*m/6144+151*h/4096+5019*Z/131072-453*o*Z/16384+26965*b/786432-8607*o*b/131072)*A+(1097*h/131072+1097*Z/65536+225797*b/10485760-1097*o*b/65536)*g+(8011*Z/2621440+8011*b/1048576)*y+293393*b/251658240*Q}function UE(t,e){if(t===0)return Math.log(Math.tan(.5*(k.PI_OVER_TWO+e)));let n=t*Math.sin(e);return Math.log(Math.tan(.5*(k.PI_OVER_TWO+e)))-t/2*Math.log((1+n)/(1-n))}function b3t(t,e,n,i,o){let a=UE(t._ellipticity,n),s=UE(t._ellipticity,o);return Math.atan2(k.negativePiToPi(i-e),s-a)}function R3t(t,e,n,i,o,a,s){let l=t._heading,r=a-i,d=0;if(k.equalsEpsilon(Math.abs(l),k.PI_OVER_TWO,k.EPSILON8))if(e===n)d=e*Math.cos(o)*k.negativePiToPi(r);else{let m=Math.sin(o);d=e*Math.cos(o)*k.negativePiToPi(r)/Math.sqrt(1-t._ellipticitySquared*m*m)}else{let m=iq(t._ellipticity,e,o);d=(iq(t._ellipticity,e,s)-m)/Math.cos(l)}return Math.abs(d)}var W3t=new p,nq=new p;function IZt(t,e,n,i){let o=p.normalize(i.cartographicToCartesian(e,nq),W3t),a=p.normalize(i.cartographicToCartesian(n,nq),nq),s=i.maximumRadius,l=i.minimumRadius,r=s*s,d=l*l;t._ellipticitySquared=(r-d)/r,t._ellipticity=Math.sqrt(t._ellipticitySquared),t._start=gt.clone(e,t._start),t._start.height=0,t._end=gt.clone(n,t._end),t._end.height=0,t._heading=b3t(t,e.longitude,e.latitude,n.longitude,n.latitude),t._distance=R3t(t,i.maximumRadius,i.minimumRadius,e.longitude,e.latitude,n.longitude,n.latitude)}function NZt(t,e,n,i,o,a){if(n===0)return gt.clone(t,a);let s=o*o,l,r,d;if(Math.abs(k.PI_OVER_TWO-Math.abs(e))>k.EPSILON8){let m=iq(o,i,t.latitude),h=n*Math.cos(e),Z=m+h;if(r=V3t(Z,o,i),Math.abs(e)0?l=k.negativePiToPi(t.longitude+d):l=k.negativePiToPi(t.longitude-d)}return c(a)?(a.longitude=l,a.latitude=r,a.height=0,a):new gt(l,r,0)}function BR(t,e,n){let i=f(n,mt.WGS84);this._ellipsoid=i,this._start=new gt,this._end=new gt,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,c(t)&&c(e)&&IZt(this,t,e,i)}Object.defineProperties(BR.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});BR.fromStartHeadingDistance=function(t,e,n,i,o){let a=f(i,mt.WGS84),s=a.maximumRadius,l=a.minimumRadius,r=s*s,d=l*l,m=Math.sqrt((r-d)/r);e=k.negativePiToPi(e);let h=NZt(t,e,n,a.maximumRadius,m);return!c(o)||c(i)&&!i.equals(o.ellipsoid)?new BR(t,h,a):(o.setEndPoints(t,h),o)};BR.prototype.setEndPoints=function(t,e){IZt(this,t,e,this._ellipsoid)};BR.prototype.interpolateUsingFraction=function(t,e){return this.interpolateUsingSurfaceDistance(t*this._distance,e)};BR.prototype.interpolateUsingSurfaceDistance=function(t,e){return NZt(this._start,this._heading,t,this._ellipsoid.maximumRadius,this._ellipticity,e)};BR.prototype.findIntersectionWithLongitude=function(t,e){let n=this._ellipticity,i=this._heading,o=Math.abs(i),a=this._start;if(t=k.negativePiToPi(t),k.equalsEpsilon(Math.abs(t),Math.PI,k.EPSILON14)&&(t=k.sign(a.longitude)*Math.PI),c(e)||(e=new gt),Math.abs(k.PI_OVER_TWO-o)<=k.EPSILON8)return e.longitude=t,e.latitude=a.latitude,e.height=0,e;if(k.equalsEpsilon(Math.abs(k.PI_OVER_TWO-o),k.PI_OVER_TWO,k.EPSILON8))return k.equalsEpsilon(t,a.longitude,k.EPSILON12)?void 0:(e.longitude=t,e.latitude=k.PI_OVER_TWO*k.sign(k.PI_OVER_TWO-i),e.height=0,e);let s=a.latitude,l=n*Math.sin(s),r=Math.tan(.5*(k.PI_OVER_TWO+s))*Math.exp((t-a.longitude)/Math.tan(i)),d=(1+l)/(1-l),m=a.latitude,h;do{h=m;let Z=n*Math.sin(h),b=(1+Z)/(1-Z);m=2*Math.atan(r*Math.pow(b/d,n/2))-k.PI_OVER_TWO}while(!k.equalsEpsilon(m,h,k.EPSILON12));return e.longitude=t,e.latitude=m,e.height=0,e};BR.prototype.findIntersectionWithLatitude=function(t,e){let n=this._ellipticity,i=this._heading,o=this._start;if(k.equalsEpsilon(Math.abs(i),k.PI_OVER_TWO,k.EPSILON8))return;let a=UE(n,o.latitude),s=UE(n,t),l=Math.tan(i)*(s-a),r=k.negativePiToPi(o.longitude+l);return c(e)?(e.longitude=r,e.latitude=t,e.height=0,e):new gt(r,t,0)};var ud=BR;var mq=[yo,Yo],f3t=mq.length,jZt=Math.cos(k.toRadians(30)),yZt=Math.cos(k.toRadians(150)),qZt=0,$Zt=1e3;function Tf(t){t=f(t,f.EMPTY_OBJECT);let e=t.positions;this.width=f(t.width,1),this._positions=e,this.granularity=f(t.granularity,9999),this.loop=f(t.loop,!1),this.arcType=f(t.arcType,Ln.GEODESIC),this._ellipsoid=mt.WGS84,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Tf.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+mt.packedLength+1+1}}});Tf.setProjectionAndEllipsoid=function(t,e){let n=0;for(let i=0;ijZt||ak.PI_OVER_TWO&&(l=!0,s=p.subtract(a,n,LZt),d=r.cartesianToCartographic(s,JZt)),d.height=0;let m=t.project(d,o);return o=p.subtract(m,i,o),o.z=0,o=p.normalize(o,o),l&&p.negate(o,o),o}var L3t=new p,MZt=new p;function _Zt(t,e,n,i,o,a){let s=p.subtract(e,t,L3t);p.normalize(s,s);let l=n-qZt,r=p.multiplyByScalar(s,l,MZt);p.add(t,r,o);let d=i-$Zt;r=p.multiplyByScalar(s,d,MZt),p.add(e,r,a)}var M3t=new p;function rw(t,e){let n=Kn.getPointDistance(dw,t),i=Kn.getPointDistance(dw,e),o=M3t;k.equalsEpsilon(n,0,k.EPSILON2)?(o=QR(e,t,o),p.multiplyByScalar(o,k.EPSILON2,o),p.add(t,o,t)):k.equalsEpsilon(i,0,k.EPSILON2)&&(o=QR(t,e,o),p.multiplyByScalar(o,k.EPSILON2,o),p.add(e,o,e))}function _3t(t,e){let n=Math.abs(t.longitude),i=Math.abs(e.longitude);if(k.equalsEpsilon(n,k.PI,k.EPSILON11)){let o=k.sign(e.longitude);return t.longitude=o*(n-k.EPSILON11),1}else if(k.equalsEpsilon(i,k.PI,k.EPSILON11)){let o=k.sign(t.longitude);return e.longitude=o*(i-k.EPSILON11),2}return 0}var eVt=new gt,nVt=new gt,DZt=new p,lq=new p,OZt=new p,HZt=new p,D3t=new p,wZt=new p,O3t=[eVt,nVt],H3t=new Gt,w3t=new p,P3t=new p,v3t=new p,K3t=new p,z3t=new p,j3t=new p,rq=new p,dq=new p,q3t=new p,$3t=new p,tzt=new p,PZt=new p,ezt=new p,nzt=new p,izt=new Mi,ozt=new Mi,vZt=new p,azt=new p,KZt=new p,szt=[new Ft,new Ft],iVt=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],zZt=iVt.length;function lzt(t,e,n,i,o,a,s){let l,r,d=e._ellipsoid,m=n.length/3-1,h=m*8,Z=h*4,b=m*36,u=h>65535?new Uint32Array(b):new Uint16Array(b),F=new Float64Array(h*3),U=new Float32Array(Z),G=new Float32Array(Z),A=new Float32Array(Z),T=new Float32Array(Z),g=new Float32Array(Z),C,y,Y,Q;s&&(C=new Float32Array(Z),y=new Float32Array(Z),Y=new Float32Array(Z),Q=new Float32Array(h*2));let J=a.length/2,M=0,V=eVt;V.height=0;let E=nVt;E.height=0;let I=DZt,B=lq;if(s)for(r=0,l=1;ljZt?(de=ok(e,V,oe,He,rq),zt=ok(e,E,at,rn,dq)):Ao===1?(zt=ok(e,E,at,rn,dq),de.x=0,de.y=k.sign(V.longitude-Math.abs(E.longitude)),de.z=0):(de=ok(e,V,oe,He,rq),zt.x=0,zt.y=k.sign(V.longitude-E.longitude),zt.z=0)}let ke=p.distance(ie,q),ue=Mi.fromCartesian(qt,izt),We=p.subtract(dt,qt,q3t),un=p.normalize(We,PZt),Ct=p.subtract(ie,qt,$3t);Ct=p.normalize(Ct,Ct);let _t=p.cross(un,Ct,PZt);_t=p.normalize(_t,_t);let Je=p.cross(Ct,oe,ezt);Je=p.normalize(Je,Je);let xe=p.subtract(q,dt,tzt);xe=p.normalize(xe,xe);let oo=p.cross(at,xe,nzt);oo=p.normalize(oo,oo);let ea=ke/_,gs=st/_,is=0,ja,qn,ae,fe=0,ge=0;if(s){is=p.distance(He,rn),ja=Mi.fromCartesian(He,ozt),qn=p.subtract(rn,He,vZt),ae=p.normalize(qn,azt);let Ao=ae.x;ae.x=ae.y,ae.y=-Ao,fe=is/M,ge=Et/M}for(P=0;P<8;P++){let Ao=nt+P*4,Xs=z+P*2,Es=Ao+3,wl=P<4?1:-1,ka=P===2||P===3||P===6||P===7?1:-1;p.pack(ue.high,U,Ao),U[Es]=We.x,p.pack(ue.low,G,Ao),G[Es]=We.y,p.pack(Je,A,Ao),A[Es]=We.z,p.pack(oo,T,Ao),T[Es]=ea*wl,p.pack(_t,g,Ao);let Wa=gs*ka;Wa===0&&ka<0&&(Wa=9),g[Es]=Wa,s&&(C[Ao]=ja.high.x,C[Ao+1]=ja.high.y,C[Ao+2]=ja.low.x,C[Ao+3]=ja.low.y,Y[Ao]=-de.y,Y[Ao+1]=de.x,Y[Ao+2]=zt.y,Y[Ao+3]=-zt.x,y[Ao]=qn.x,y[Ao+1]=qn.y,y[Ao+2]=ae.x,y[Ao+3]=ae.y,Q[Xs]=fe*wl,Wa=ge*ka,Wa===0&&ka<0&&(Wa=9),Q[Xs+1]=Wa)}let Ze=v3t,Ke=K3t,An=w3t,si=P3t,da=Gt.fromCartographicArray(O3t,H3t),_a=uo.getMinimumMaximumHeights(da,d),bl=_a.minimumTerrainHeight,na=_a.maximumTerrainHeight;Qt+=Math.abs(bl),Qt+=Math.abs(na),_Zt(qt,ie,bl,na,Ze,An),_Zt(dt,q,bl,na,Ke,si);let Go=p.multiplyByScalar(_t,k.EPSILON5,KZt);p.add(Ze,Go,Ze),p.add(Ke,Go,Ke),p.add(An,Go,An),p.add(si,Go,si),rw(Ze,Ke),rw(An,si),p.pack(Ze,F,H),p.pack(Ke,F,H+3),p.pack(si,F,H+6),p.pack(An,F,H+9),Go=p.multiplyByScalar(_t,-2*k.EPSILON5,KZt),p.add(Ze,Go,Ze),p.add(Ke,Go,Ke),p.add(An,Go,An),p.add(si,Go,si),rw(Ze,Ke),rw(An,si),p.pack(Ze,F,H+12),p.pack(Ke,F,H+15),p.pack(si,F,H+18),p.pack(An,F,H+21),w+=2,r+=3,z+=16,H+=24,nt+=32,st+=ke,Et+=is}r=0;let Wt=0;for(l=0;l0&&(r=o[0].attributes,u=Fh.hasAttributesForSphericalExtents(r),R=Fh.hasAttributesForTextureCoordinatePlanes(r),h=r.color),s=0;s{c(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};_G.prototype.getGeometryInstanceAttributes=function(t){return this._primitive.getGeometryInstanceAttributes(t)};_G.prototype.isDestroyed=function(){return!1};_G.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,At(this)};var fE=_G;var eKt={u_globeMinimumAltitude:function(){return 55e3}};function Tm(t){t=f(t,f.EMPTY_OBJECT);let e=t.appearance,n=t.geometryInstances;if(!c(e)&&c(n)){let o=Array.isArray(n)?n:[n],a=o.length;for(let s=0;s{!this._ready&&c(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Tm.prototype.getBoundingSphere=function(t){let e=this._boundingSpheresKeys.indexOf(t);if(e!==-1)return this._boundingSpheres[e]};Tm.prototype.getGeometryInstanceAttributes=function(t){return this._primitive.getGeometryInstanceAttributes(t)};Tm.prototype.isDestroyed=function(){return!1};Tm.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};Tm._supportsMaterials=function(t){return t.depthTexture};Tm.supportsMaterials=function(t){return Tm._supportsMaterials(t.frameState.context)};var Nc=Tm;var ERn=b(W(),1);function FE(){Ut.throwInstantiationError()}Object.defineProperties(FE.prototype,{isConstant:{get:Ut.throwInstantiationError},definitionChanged:{get:Ut.throwInstantiationError}});FE.prototype.getType=Ut.throwInstantiationError;FE.prototype.getValue=Ut.throwInstantiationError;FE.prototype.equals=Ut.throwInstantiationError;FE.getValue=function(t,e,n){let i;return c(e)&&(i=e.getType(t),c(i))?((!c(n)||n.type!==i)&&(n=eo.fromType(i)),e.getValue(t,n.uniforms),n):((!c(n)||n.type!==eo.ColorType)&&(n=eo.fromType(eo.ColorType)),v.clone(v.WHITE,n.uniforms.color),n)};var Ua=FE;function DG(t,e,n){this._primitives=e,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=t,this._options=t._options,this._entity=t._entity,this._material=void 0}DG.prototype._isHidden=function(t,e,n){return!t.isShowing||!t.isAvailable(n)||!et.getValueOrDefault(e.show,n,!0)};DG.prototype._setOptions=Ut.throwInstantiationError;DG.prototype.update=function(t){let e=this._geometryUpdater,n=e._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let a=this._entity,s=a[this._geometryUpdater._geometryPropertyName];if(this._setOptions(a,s,t),this._isHidden(a,s,t))return;let l=this._geometryUpdater.shadowsProperty.getValue(t),r=this._options;if(!c(s.fill)||s.fill.getValue(t)){let d=e.fillMaterialProperty,m=d instanceof Cn,h,u=e._getIsClosed(r);if(m)h=new jn({closed:u,flat:n&&!e._supportsMaterialsforEntitiesOnTerrain});else{let R=Ua.getValue(t,d,this._material);this._material=R,h=new Fa({material:R,translucent:R.isTranslucent(),closed:u})}if(n)r.vertexFormat=jn.VERTEX_FORMAT,this._primitive=o.add(new Nc({geometryInstances:this._geometryUpdater.createFillGeometryInstance(t),appearance:h,asynchronous:!1,shadows:l,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(t)}),et.getValueOrUndefined(this._geometryUpdater.zIndex,t));else{r.vertexFormat=h.vertexFormat;let R=this._geometryUpdater.createFillGeometryInstance(t);m&&(h.translucent=R.attributes.color.value[3]!==255),a?.properties?.uniforms&&(h.uniforms=a.properties.uniforms.getValue()()),a?.properties?.vertexShaderSource&&(h._vertexShaderSource=a.properties.vertexShaderSource.getValue()()),a?.properties?.fragmentShaderSource&&(h._fragmentShaderSource=a.properties.fragmentShaderSource.getValue()()),this._primitive=i.add(new Wi({geometryInstances:R,appearance:h,asynchronous:!1,shadows:l}))}}if(!n&&c(s.outline)&&s.outline.getValue(t)){let d=this._geometryUpdater.createOutlineGeometryInstance(t),m=et.getValueOrDefault(s.outlineWidth,t,1);this._outlinePrimitive=i.add(new Wi({geometryInstances:d,appearance:new jn({flat:!0,translucent:d.attributes.color.value[3]!==255,renderState:{lineWidth:e._scene.clampLineWidth(m)}}),asynchronous:!1,shadows:l}))}};DG.prototype.getBoundingSphere=function(t){let e=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return c(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(e),c(o)&&c(o.boundingSphere))?(Ft.clone(o.boundingSphere,t),ve.DONE):c(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(e),c(o)&&c(o.boundingSphere))?(Ft.clone(o.boundingSphere,t),ve.DONE):c(n)&&!n.ready||c(i)&&!i.ready?ve.PENDING:ve.FAILED};DG.prototype.isDestroyed=function(){return!1};DG.prototype.destroy=function(){let t=this._primitives,e=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?e.remove(this._primitive):t.removeAndDestroy(this._primitive),t.removeAndDestroy(this._outlinePrimitive),At(this)};var lo=DG;var SGn=b(W(),1);var rGn=b(W(),1);var v0n=b(W(),1);var Ybn=b(W(),1);var ORn=b(W(),1),cKt={NONE:0,GEODESIC:1,RHUMB:2},Ln=Object.freeze(cKt);var KRn=b(W(),1);var gut=k.EPSILON10;function mKt(t,e,n,i){if(!c(t))return;n=f(n,!1);let o=c(i),a=t.length;if(a<2)return t;let s,l=t[0],r,d,m=0,h=-1;for(s=1;sk.EPSILON12);let E=M*(e*e-n*n)/(n*n),I=1+E*(4096+E*(E*(320-175*E)-768))/16384,B=E*(256+E*(E*(74-47*E)-128))/1024,X=Z*Z,_=B*J*(Z+B*(Q*(2*X-1)-B*Z*(4*J*J-3)*(4*X-3)/6)/4),P=n*I*(Y-_),w=Math.atan2(R*y,U-A*C),z=Math.atan2(h*y,U*C-A);t._distance=P,t._startHeading=w,t._endHeading=z,t._uSquared=E}var uKt=new p,eq=new p;function Cut(t,e,n,i){let o=p.normalize(i.cartographicToCartesian(e,eq),uKt),a=p.normalize(i.cartographicToCartesian(n,eq),eq);VKt(t,i.maximumRadius,i.minimumRadius,e.longitude,e.latitude,n.longitude,n.latitude),t._start=gt.clone(e,t._start),t._end=gt.clone(n,t._end),t._start.height=0,t._end.height=0,hKt(t)}function i2(t,e,n){let i=f(n,mt.WGS84);this._ellipsoid=i,this._start=new gt,this._end=new gt,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,c(t)&&c(e)&&Cut(this,t,e,i)}Object.defineProperties(i2.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});i2.prototype.setEndPoints=function(t,e){Cut(this,t,e,this._ellipsoid)};i2.prototype.interpolateUsingFraction=function(t,e){return this.interpolateUsingSurfaceDistance(this._distance*t,e)};i2.prototype.interpolateUsingSurfaceDistance=function(t,e){let n=this._constants,i=n.distanceRatio+t/n.b,o=Math.cos(2*i),a=Math.cos(4*i),s=Math.cos(6*i),l=Math.sin(2*i),r=Math.sin(4*i),d=Math.sin(6*i),m=Math.sin(8*i),h=i*i,u=i*h,R=n.u8Over256,V=n.u2Over4,F=n.u6Over64,U=n.u4Over16,G=2*u*R*o/3+i*(1-V+7*U/4-15*F/4+579*R/64-(U-15*F/4+187*R/16)*o-(5*F/4-115*R/16)*a-29*R*s/16)+(V/2-U+71*F/32-85*R/16)*l+(5*U/16-5*F/4+383*R/96)*r-h*((F-11*R/2)*l+5*R*r/2)+(29*F/96-29*R/16)*d+539*R*m/1536,A=Math.asin(Math.sin(G)*n.cosineAlpha),S=Math.atan(n.a/n.b*Math.tan(A));G=G-n.sigma;let g=Math.cos(2*n.sigma+G),C=Math.sin(G),y=Math.cos(G),Y=n.cosineU*y,Q=n.sineU*C,M=Math.atan2(C*n.sineHeading,Y-Q*n.cosineHeading)-Eut(n.f,n.sineAlpha,n.cosineSquaredAlpha,G,C,y,g);return c(e)?(e.longitude=this._start.longitude+M,e.latitude=S,e.height=0,e):new gt(this._start.longitude+M,S,0)};var ou=i2;var mbn=b(W(),1);function iq(t,e,n){if(t===0)return e*n;let i=t*t,o=i*i,a=o*i,s=a*i,l=s*i,r=l*i,d=n,m=Math.sin(2*d),h=Math.sin(4*d),u=Math.sin(6*d),R=Math.sin(8*d),V=Math.sin(10*d),F=Math.sin(12*d);return e*((1-i/4-3*o/64-5*a/256-175*s/16384-441*l/65536-4851*r/1048576)*d-(3*i/8+3*o/32+45*a/1024+105*s/4096+2205*l/131072+6237*r/524288)*m+(15*o/256+45*a/1024+525*s/16384+1575*l/65536+155925*r/8388608)*h-(35*a/3072+175*s/12288+3675*l/262144+13475*r/1048576)*u+(315*s/131072+2205*l/524288+43659*r/8388608)*R-(693*l/1310720+6237*r/5242880)*V+1001*r/8388608*F)}function ZKt(t,e,n){let i=t/n;if(e===0)return i;let o=i*i,a=o*i,s=a*i,l=e,r=l*l,d=r*r,m=d*r,h=m*r,u=h*r,R=u*r,V=Math.sin(2*i),F=Math.cos(2*i),U=Math.sin(4*i),G=Math.cos(4*i),A=Math.sin(6*i),S=Math.cos(6*i),g=Math.sin(8*i),C=Math.cos(8*i),y=Math.sin(10*i),Y=Math.cos(10*i),Q=Math.sin(12*i);return i+i*r/4+7*i*d/64+15*i*m/256+579*i*h/16384+1515*i*u/65536+16837*i*R/1048576+(3*i*d/16+45*i*m/256-i*(32*o-561)*h/4096-i*(232*o-1677)*u/16384+i*(399985-90560*o+512*s)*R/5242880)*F+(21*i*m/256+483*i*h/4096-i*(224*o-1969)*u/16384-i*(33152*o-112599)*R/1048576)*G+(151*i*h/4096+4681*i*u/65536+1479*i*R/16384-453*a*R/32768)*S+(1097*i*u/65536+42783*i*R/1048576)*C+8011*i*R/1048576*Y+(3*r/8+3*d/16+213*m/2048-3*o*m/64+255*h/4096-33*o*h/512+20861*u/524288-33*o*u/512+s*u/1024+28273*R/1048576-471*o*R/8192+9*s*R/4096)*V+(21*d/256+21*m/256+533*h/8192-21*o*h/512+197*u/4096-315*o*u/4096+584039*R/16777216-12517*o*R/131072+7*s*R/2048)*U+(151*m/6144+151*h/4096+5019*u/131072-453*o*u/16384+26965*R/786432-8607*o*R/131072)*A+(1097*h/131072+1097*u/65536+225797*R/10485760-1097*o*R/65536)*g+(8011*u/2621440+8011*R/1048576)*y+293393*R/251658240*Q}function UE(t,e){if(t===0)return Math.log(Math.tan(.5*(k.PI_OVER_TWO+e)));let n=t*Math.sin(e);return Math.log(Math.tan(.5*(k.PI_OVER_TWO+e)))-t/2*Math.log((1+n)/(1-n))}function RKt(t,e,n,i,o){let a=UE(t._ellipticity,n),s=UE(t._ellipticity,o);return Math.atan2(k.negativePiToPi(i-e),s-a)}function bKt(t,e,n,i,o,a,s){let l=t._heading,r=a-i,d=0;if(k.equalsEpsilon(Math.abs(l),k.PI_OVER_TWO,k.EPSILON8))if(e===n)d=e*Math.cos(o)*k.negativePiToPi(r);else{let m=Math.sin(o);d=e*Math.cos(o)*k.negativePiToPi(r)/Math.sqrt(1-t._ellipticitySquared*m*m)}else{let m=iq(t._ellipticity,e,o);d=(iq(t._ellipticity,e,s)-m)/Math.cos(l)}return Math.abs(d)}var WKt=new p,nq=new p;function Iut(t,e,n,i){let o=p.normalize(i.cartographicToCartesian(e,nq),WKt),a=p.normalize(i.cartographicToCartesian(n,nq),nq),s=i.maximumRadius,l=i.minimumRadius,r=s*s,d=l*l;t._ellipticitySquared=(r-d)/r,t._ellipticity=Math.sqrt(t._ellipticitySquared),t._start=gt.clone(e,t._start),t._start.height=0,t._end=gt.clone(n,t._end),t._end.height=0,t._heading=RKt(t,e.longitude,e.latitude,n.longitude,n.latitude),t._distance=bKt(t,i.maximumRadius,i.minimumRadius,e.longitude,e.latitude,n.longitude,n.latitude)}function Nut(t,e,n,i,o,a){if(n===0)return gt.clone(t,a);let s=o*o,l,r,d;if(Math.abs(k.PI_OVER_TWO-Math.abs(e))>k.EPSILON8){let m=iq(o,i,t.latitude),h=n*Math.cos(e),u=m+h;if(r=ZKt(u,o,i),Math.abs(e)0?l=k.negativePiToPi(t.longitude+d):l=k.negativePiToPi(t.longitude-d)}return c(a)?(a.longitude=l,a.latitude=r,a.height=0,a):new gt(l,r,0)}function Bb(t,e,n){let i=f(n,mt.WGS84);this._ellipsoid=i,this._start=new gt,this._end=new gt,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,c(t)&&c(e)&&Iut(this,t,e,i)}Object.defineProperties(Bb.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});Bb.fromStartHeadingDistance=function(t,e,n,i,o){let a=f(i,mt.WGS84),s=a.maximumRadius,l=a.minimumRadius,r=s*s,d=l*l,m=Math.sqrt((r-d)/r);e=k.negativePiToPi(e);let h=Nut(t,e,n,a.maximumRadius,m);return!c(o)||c(i)&&!i.equals(o.ellipsoid)?new Bb(t,h,a):(o.setEndPoints(t,h),o)};Bb.prototype.setEndPoints=function(t,e){Iut(this,t,e,this._ellipsoid)};Bb.prototype.interpolateUsingFraction=function(t,e){return this.interpolateUsingSurfaceDistance(t*this._distance,e)};Bb.prototype.interpolateUsingSurfaceDistance=function(t,e){return Nut(this._start,this._heading,t,this._ellipsoid.maximumRadius,this._ellipticity,e)};Bb.prototype.findIntersectionWithLongitude=function(t,e){let n=this._ellipticity,i=this._heading,o=Math.abs(i),a=this._start;if(t=k.negativePiToPi(t),k.equalsEpsilon(Math.abs(t),Math.PI,k.EPSILON14)&&(t=k.sign(a.longitude)*Math.PI),c(e)||(e=new gt),Math.abs(k.PI_OVER_TWO-o)<=k.EPSILON8)return e.longitude=t,e.latitude=a.latitude,e.height=0,e;if(k.equalsEpsilon(Math.abs(k.PI_OVER_TWO-o),k.PI_OVER_TWO,k.EPSILON8))return k.equalsEpsilon(t,a.longitude,k.EPSILON12)?void 0:(e.longitude=t,e.latitude=k.PI_OVER_TWO*k.sign(k.PI_OVER_TWO-i),e.height=0,e);let s=a.latitude,l=n*Math.sin(s),r=Math.tan(.5*(k.PI_OVER_TWO+s))*Math.exp((t-a.longitude)/Math.tan(i)),d=(1+l)/(1-l),m=a.latitude,h;do{h=m;let u=n*Math.sin(h),R=(1+u)/(1-u);m=2*Math.atan(r*Math.pow(R/d,n/2))-k.PI_OVER_TWO}while(!k.equalsEpsilon(m,h,k.EPSILON12));return e.longitude=t,e.latitude=m,e.height=0,e};Bb.prototype.findIntersectionWithLatitude=function(t,e){let n=this._ellipticity,i=this._heading,o=this._start;if(k.equalsEpsilon(Math.abs(i),k.PI_OVER_TWO,k.EPSILON8))return;let a=UE(n,o.latitude),s=UE(n,t),l=Math.tan(i)*(s-a),r=k.negativePiToPi(o.longitude+l);return c(e)?(e.longitude=r,e.latitude=t,e.height=0,e):new gt(r,t,0)};var Vd=Bb;var mq=[yo,Yo],fKt=mq.length,jut=Math.cos(k.toRadians(30)),yut=Math.cos(k.toRadians(150)),qut=0,$ut=1e3;function Sf(t){t=f(t,f.EMPTY_OBJECT);let e=t.positions;this.width=f(t.width,1),this._positions=e,this.granularity=f(t.granularity,9999),this.loop=f(t.loop,!1),this.arcType=f(t.arcType,Ln.GEODESIC),this._ellipsoid=mt.WGS84,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Sf.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+mt.packedLength+1+1}}});Sf.setProjectionAndEllipsoid=function(t,e){let n=0;for(let i=0;ijut||ak.PI_OVER_TWO&&(l=!0,s=p.subtract(a,n,Lut),d=r.cartesianToCartographic(s,Jut)),d.height=0;let m=t.project(d,o);return o=p.subtract(m,i,o),o.z=0,o=p.normalize(o,o),l&&p.negate(o,o),o}var LKt=new p,Mut=new p;function _ut(t,e,n,i,o,a){let s=p.subtract(e,t,LKt);p.normalize(s,s);let l=n-qut,r=p.multiplyByScalar(s,l,Mut);p.add(t,r,o);let d=i-$ut;r=p.multiplyByScalar(s,d,Mut),p.add(e,r,a)}var MKt=new p;function rw(t,e){let n=Kn.getPointDistance(dw,t),i=Kn.getPointDistance(dw,e),o=MKt;k.equalsEpsilon(n,0,k.EPSILON2)?(o=Qb(e,t,o),p.multiplyByScalar(o,k.EPSILON2,o),p.add(t,o,t)):k.equalsEpsilon(i,0,k.EPSILON2)&&(o=Qb(t,e,o),p.multiplyByScalar(o,k.EPSILON2,o),p.add(e,o,e))}function _Kt(t,e){let n=Math.abs(t.longitude),i=Math.abs(e.longitude);if(k.equalsEpsilon(n,k.PI,k.EPSILON11)){let o=k.sign(e.longitude);return t.longitude=o*(n-k.EPSILON11),1}else if(k.equalsEpsilon(i,k.PI,k.EPSILON11)){let o=k.sign(t.longitude);return e.longitude=o*(i-k.EPSILON11),2}return 0}var eZt=new gt,nZt=new gt,Dut=new p,lq=new p,Out=new p,Hut=new p,DKt=new p,wut=new p,OKt=[eZt,nZt],HKt=new Gt,wKt=new p,PKt=new p,vKt=new p,KKt=new p,zKt=new p,jKt=new p,rq=new p,dq=new p,qKt=new p,$Kt=new p,tzt=new p,Put=new p,ezt=new p,nzt=new p,izt=new Mi,ozt=new Mi,vut=new p,azt=new p,Kut=new p,szt=[new Ft,new Ft],iZt=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],zut=iZt.length;function lzt(t,e,n,i,o,a,s){let l,r,d=e._ellipsoid,m=n.length/3-1,h=m*8,u=h*4,R=m*36,V=h>65535?new Uint32Array(R):new Uint16Array(R),F=new Float64Array(h*3),U=new Float32Array(u),G=new Float32Array(u),A=new Float32Array(u),S=new Float32Array(u),g=new Float32Array(u),C,y,Y,Q;s&&(C=new Float32Array(u),y=new Float32Array(u),Y=new Float32Array(u),Q=new Float32Array(h*2));let J=a.length/2,M=0,Z=eZt;Z.height=0;let E=nZt;E.height=0;let I=Dut,B=lq;if(s)for(r=0,l=1;ljut?(de=o2(e,Z,oe,He,rq),zt=o2(e,E,at,rn,dq)):Ao===1?(zt=o2(e,E,at,rn,dq),de.x=0,de.y=k.sign(Z.longitude-Math.abs(E.longitude)),de.z=0):(de=o2(e,Z,oe,He,rq),zt.x=0,zt.y=k.sign(Z.longitude-E.longitude),zt.z=0)}let ke=p.distance(ie,q),Ve=Mi.fromCartesian(qt,izt),We=p.subtract(dt,qt,qKt),Vn=p.normalize(We,Put),Ct=p.subtract(ie,qt,$Kt);Ct=p.normalize(Ct,Ct);let _t=p.cross(Vn,Ct,Put);_t=p.normalize(_t,_t);let Je=p.cross(Ct,oe,ezt);Je=p.normalize(Je,Je);let xe=p.subtract(q,dt,tzt);xe=p.normalize(xe,xe);let oo=p.cross(at,xe,nzt);oo=p.normalize(oo,oo);let ea=ke/_,gs=st/_,is=0,ja,qn,ae,fe=0,ge=0;if(s){is=p.distance(He,rn),ja=Mi.fromCartesian(He,ozt),qn=p.subtract(rn,He,vut),ae=p.normalize(qn,azt);let Ao=ae.x;ae.x=ae.y,ae.y=-Ao,fe=is/M,ge=Et/M}for(P=0;P<8;P++){let Ao=nt+P*4,Xs=z+P*2,Es=Ao+3,wl=P<4?1:-1,ka=P===2||P===3||P===6||P===7?1:-1;p.pack(Ve.high,U,Ao),U[Es]=We.x,p.pack(Ve.low,G,Ao),G[Es]=We.y,p.pack(Je,A,Ao),A[Es]=We.z,p.pack(oo,S,Ao),S[Es]=ea*wl,p.pack(_t,g,Ao);let Wa=gs*ka;Wa===0&&ka<0&&(Wa=9),g[Es]=Wa,s&&(C[Ao]=ja.high.x,C[Ao+1]=ja.high.y,C[Ao+2]=ja.low.x,C[Ao+3]=ja.low.y,Y[Ao]=-de.y,Y[Ao+1]=de.x,Y[Ao+2]=zt.y,Y[Ao+3]=-zt.x,y[Ao]=qn.x,y[Ao+1]=qn.y,y[Ao+2]=ae.x,y[Ao+3]=ae.y,Q[Xs]=fe*wl,Wa=ge*ka,Wa===0&&ka<0&&(Wa=9),Q[Xs+1]=Wa)}let ue=vKt,Ke=KKt,An=wKt,si=PKt,da=Gt.fromCartographicArray(OKt,HKt),_a=Vo.getMinimumMaximumHeights(da,d),Rl=_a.minimumTerrainHeight,na=_a.maximumTerrainHeight;Qt+=Math.abs(Rl),Qt+=Math.abs(na),_ut(qt,ie,Rl,na,ue,An),_ut(dt,q,Rl,na,Ke,si);let Go=p.multiplyByScalar(_t,k.EPSILON5,Kut);p.add(ue,Go,ue),p.add(Ke,Go,Ke),p.add(An,Go,An),p.add(si,Go,si),rw(ue,Ke),rw(An,si),p.pack(ue,F,H),p.pack(Ke,F,H+3),p.pack(si,F,H+6),p.pack(An,F,H+9),Go=p.multiplyByScalar(_t,-2*k.EPSILON5,Kut),p.add(ue,Go,ue),p.add(Ke,Go,Ke),p.add(An,Go,An),p.add(si,Go,si),rw(ue,Ke),rw(An,si),p.pack(ue,F,H+12),p.pack(Ke,F,H+15),p.pack(si,F,H+18),p.pack(An,F,H+21),w+=2,r+=3,z+=16,H+=24,nt+=32,st+=ke,Et+=is}r=0;let Wt=0;for(l=0;l{!this._ready&&c(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};YR.prototype.getGeometryInstanceAttributes=function(t){return this._primitive.getGeometryInstanceAttributes(t)};YR.isSupported=function(t){return t.frameState.context.depthTexture};YR.prototype.isDestroyed=function(){return!1};YR.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,At(this)};var Gh=YR;var bWn=R(W(),1);var cWn=R(W(),1);var iWn=R(W(),1);var pzt=new K(1,1),uzt=!1,Zzt=v.WHITE;function GE(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=t.image,this.repeat=t.repeat,this.color=t.color,this.transparent=t.transparent}Object.defineProperties(GE.prototype,{isConstant:{get:function(){return et.isConstant(this._image)&&et.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:ft("image"),repeat:ft("repeat"),color:ft("color"),transparent:ft("transparent")});GE.prototype.getType=function(t){return"Image"};GE.prototype.getValue=function(t,e){return c(e)||(e={}),e.image=et.getValueOrUndefined(this._image,t),e.repeat=et.getValueOrClonedDefault(this._repeat,t,pzt,e.repeat),e.color=et.getValueOrClonedDefault(this._color,t,Zzt,e.color),et.getValueOrDefault(this._transparent,t,uzt)&&(e.color.alpha=Math.min(.99,e.color.alpha)),e};GE.prototype.equals=function(t){return this===t||t instanceof GE&&et.equals(this._image,t._image)&&et.equals(this._repeat,t._repeat)&&et.equals(this._color,t._color)&&et.equals(this._transparent,t._transparent)};var Sf=GE;function Vzt(t){if(t instanceof v)return new Cn(t);if(typeof t=="string"||t instanceof te||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement){let e=new Sf;return e.image=t,e}}function bzt(t,e){return ft(t,e,Vzt)}var la=bzt;function mk(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(mk.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),dimensions:ft("dimensions"),heightReference:ft("heightReference"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition")});mk.prototype.clone=function(t){return c(t)?(t.show=this.show,t.dimensions=this.dimensions,t.heightReference=this.heightReference,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t):new mk(this)};mk.prototype.merge=function(t){this.show=f(this.show,t.show),this.dimensions=f(this.dimensions,t.dimensions),this.heightReference=f(this.heightReference,t.heightReference),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition)};var PG=mk;var BWn=R(W(),1);var TWn=R(W(),1);function AE(){Ut.throwInstantiationError()}Object.defineProperties(AE.prototype,{isConstant:{get:Ut.throwInstantiationError},definitionChanged:{get:Ut.throwInstantiationError},referenceFrame:{get:Ut.throwInstantiationError}});AE.prototype.getValue=Ut.throwInstantiationError;AE.prototype.getValueInReferenceFrame=Ut.throwInstantiationError;AE.prototype.equals=Ut.throwInstantiationError;var uq=new ot;AE.convertToReferenceFrame=function(t,e,n,i,o){if(!c(e))return e;if(c(o)||(o=new p),n===i)return p.clone(e,o);let a=Pe.computeIcrfToFixedMatrix(t,uq);if(c(a)||(a=Pe.computeTemeToPseudoFixedMatrix(t,uq)),n===ri.INERTIAL)return ot.multiplyByVector(a,e,o);if(n===ri.FIXED)return ot.multiplyByVector(ot.transpose(a,uq),e,o)};var xR=AE;function vG(t,e){this._definitionChanged=new It,this._value=p.clone(t),this._referenceFrame=f(e,ri.FIXED)}Object.defineProperties(vG.prototype,{isConstant:{get:function(){return!c(this._value)||this._referenceFrame===ri.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});vG.prototype.getValue=function(t,e){return this.getValueInReferenceFrame(t,ri.FIXED,e)};vG.prototype.setValue=function(t,e){let n=!1;p.equals(this._value,t)||(n=!0,this._value=p.clone(t)),c(e)&&this._referenceFrame!==e&&(n=!0,this._referenceFrame=e),n&&this._definitionChanged.raiseEvent(this)};vG.prototype.getValueInReferenceFrame=function(t,e,n){return xR.convertToReferenceFrame(t,this._value,this._referenceFrame,e,n)};vG.prototype.equals=function(t){return this===t||t instanceof vG&&p.equals(this._value,t._value)&&this._referenceFrame===t._referenceFrame};var jl=vG;var LWn=R(W(),1);function hk(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(hk.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),positions:ft("positions"),width:ft("width"),height:ft("height"),heightReference:ft("heightReference"),extrudedHeight:ft("extrudedHeight"),extrudedHeightReference:ft("extrudedHeightReference"),cornerType:ft("cornerType"),granularity:ft("granularity"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition"),classificationType:ft("classificationType"),zIndex:ft("zIndex")});hk.prototype.clone=function(t){return c(t)?(t.show=this.show,t.positions=this.positions,t.width=this.width,t.height=this.height,t.heightReference=this.heightReference,t.extrudedHeight=this.extrudedHeight,t.extrudedHeightReference=this.extrudedHeightReference,t.cornerType=this.cornerType,t.granularity=this.granularity,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t.classificationType=this.classificationType,t.zIndex=this.zIndex,t):new hk(this)};hk.prototype.merge=function(t){this.show=f(this.show,t.show),this.positions=f(this.positions,t.positions),this.width=f(this.width,t.width),this.height=f(this.height,t.height),this.heightReference=f(this.heightReference,t.heightReference),this.extrudedHeight=f(this.extrudedHeight,t.extrudedHeight),this.extrudedHeightReference=f(this.extrudedHeightReference,t.extrudedHeightReference),this.cornerType=f(this.cornerType,t.cornerType),this.granularity=f(this.granularity,t.granularity),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition),this.classificationType=f(this.classificationType,t.classificationType),this.zIndex=f(this.zIndex,t.zIndex)};var KG=hk;var DWn=R(W(),1);function Rzt(t){return t}function Wzt(t,e){return ft(t,e,Rzt)}var gm=Wzt;var zWn=R(W(),1);function pk(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(pk.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),length:ft("length"),topRadius:ft("topRadius"),bottomRadius:ft("bottomRadius"),heightReference:ft("heightReference"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),numberOfVerticalLines:ft("numberOfVerticalLines"),slices:ft("slices"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition")});pk.prototype.clone=function(t){return c(t)?(t.show=this.show,t.length=this.length,t.topRadius=this.topRadius,t.bottomRadius=this.bottomRadius,t.heightReference=this.heightReference,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.numberOfVerticalLines=this.numberOfVerticalLines,t.slices=this.slices,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t):new pk(this)};pk.prototype.merge=function(t){this.show=f(this.show,t.show),this.length=f(this.length,t.length),this.topRadius=f(this.topRadius,t.topRadius),this.bottomRadius=f(this.bottomRadius,t.bottomRadius),this.heightReference=f(this.heightReference,t.heightReference),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.numberOfVerticalLines=f(this.numberOfVerticalLines,t.numberOfVerticalLines),this.slices=f(this.slices,t.slices),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition)};var zG=pk;var ifn=R(W(),1);function uk(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(uk.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),semiMajorAxis:ft("semiMajorAxis"),semiMinorAxis:ft("semiMinorAxis"),height:ft("height"),heightReference:ft("heightReference"),extrudedHeight:ft("extrudedHeight"),extrudedHeightReference:ft("extrudedHeightReference"),rotation:ft("rotation"),stRotation:ft("stRotation"),granularity:ft("granularity"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),numberOfVerticalLines:ft("numberOfVerticalLines"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition"),classificationType:ft("classificationType"),zIndex:ft("zIndex")});uk.prototype.clone=function(t){return c(t)?(t.show=this.show,t.semiMajorAxis=this.semiMajorAxis,t.semiMinorAxis=this.semiMinorAxis,t.height=this.height,t.heightReference=this.heightReference,t.extrudedHeight=this.extrudedHeight,t.extrudedHeightReference=this.extrudedHeightReference,t.rotation=this.rotation,t.stRotation=this.stRotation,t.granularity=this.granularity,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.numberOfVerticalLines=this.numberOfVerticalLines,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t.classificationType=this.classificationType,t.zIndex=this.zIndex,t):new uk(this)};uk.prototype.merge=function(t){this.show=f(this.show,t.show),this.semiMajorAxis=f(this.semiMajorAxis,t.semiMajorAxis),this.semiMinorAxis=f(this.semiMinorAxis,t.semiMinorAxis),this.height=f(this.height,t.height),this.heightReference=f(this.heightReference,t.heightReference),this.extrudedHeight=f(this.extrudedHeight,t.extrudedHeight),this.extrudedHeightReference=f(this.extrudedHeightReference,t.extrudedHeightReference),this.rotation=f(this.rotation,t.rotation),this.stRotation=f(this.stRotation,t.stRotation),this.granularity=f(this.granularity,t.granularity),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.numberOfVerticalLines=f(this.numberOfVerticalLines,t.numberOfVerticalLines),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition),this.classificationType=f(this.classificationType,t.classificationType),this.zIndex=f(this.zIndex,t.zIndex)};var jG=uk;var cfn=R(W(),1);function Zk(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(Zk.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),radii:ft("radii"),innerRadii:ft("innerRadii"),minimumClock:ft("minimumClock"),maximumClock:ft("maximumClock"),minimumCone:ft("minimumCone"),maximumCone:ft("maximumCone"),heightReference:ft("heightReference"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),stackPartitions:ft("stackPartitions"),slicePartitions:ft("slicePartitions"),subdivisions:ft("subdivisions"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition")});Zk.prototype.clone=function(t){return c(t)?(t.show=this.show,t.radii=this.radii,t.innerRadii=this.innerRadii,t.minimumClock=this.minimumClock,t.maximumClock=this.maximumClock,t.minimumCone=this.minimumCone,t.maximumCone=this.maximumCone,t.heightReference=this.heightReference,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.stackPartitions=this.stackPartitions,t.slicePartitions=this.slicePartitions,t.subdivisions=this.subdivisions,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t):new Zk(this)};Zk.prototype.merge=function(t){this.show=f(this.show,t.show),this.radii=f(this.radii,t.radii),this.innerRadii=f(this.innerRadii,t.innerRadii),this.minimumClock=f(this.minimumClock,t.minimumClock),this.maximumClock=f(this.maximumClock,t.maximumClock),this.minimumCone=f(this.minimumCone,t.minimumCone),this.maximumCone=f(this.maximumCone,t.maximumCone),this.heightReference=f(this.heightReference,t.heightReference),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.stackPartitions=f(this.stackPartitions,t.stackPartitions),this.slicePartitions=f(this.slicePartitions,t.slicePartitions),this.subdivisions=f(this.subdivisions,t.subdivisions),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition)};var qG=Zk;var Vfn=R(W(),1);function Vk(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(Vk.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),text:ft("text"),font:ft("font"),style:ft("style"),scale:ft("scale"),showBackground:ft("showBackground"),backgroundColor:ft("backgroundColor"),backgroundPadding:ft("backgroundPadding"),pixelOffset:ft("pixelOffset"),eyeOffset:ft("eyeOffset"),horizontalOrigin:ft("horizontalOrigin"),verticalOrigin:ft("verticalOrigin"),heightReference:ft("heightReference"),fillColor:ft("fillColor"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),translucencyByDistance:ft("translucencyByDistance"),pixelOffsetScaleByDistance:ft("pixelOffsetScaleByDistance"),scaleByDistance:ft("scaleByDistance"),distanceDisplayCondition:ft("distanceDisplayCondition"),disableDepthTestDistance:ft("disableDepthTestDistance")});Vk.prototype.clone=function(t){return c(t)?(t.show=this.show,t.text=this.text,t.font=this.font,t.style=this.style,t.scale=this.scale,t.showBackground=this.showBackground,t.backgroundColor=this.backgroundColor,t.backgroundPadding=this.backgroundPadding,t.pixelOffset=this.pixelOffset,t.eyeOffset=this.eyeOffset,t.horizontalOrigin=this.horizontalOrigin,t.verticalOrigin=this.verticalOrigin,t.heightReference=this.heightReference,t.fillColor=this.fillColor,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.translucencyByDistance=this.translucencyByDistance,t.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,t.scaleByDistance=this.scaleByDistance,t.distanceDisplayCondition=this.distanceDisplayCondition,t.disableDepthTestDistance=this.disableDepthTestDistance,t):new Vk(this)};Vk.prototype.merge=function(t){this.show=f(this.show,t.show),this.text=f(this.text,t.text),this.font=f(this.font,t.font),this.style=f(this.style,t.style),this.scale=f(this.scale,t.scale),this.showBackground=f(this.showBackground,t.showBackground),this.backgroundColor=f(this.backgroundColor,t.backgroundColor),this.backgroundPadding=f(this.backgroundPadding,t.backgroundPadding),this.pixelOffset=f(this.pixelOffset,t.pixelOffset),this.eyeOffset=f(this.eyeOffset,t.eyeOffset),this.horizontalOrigin=f(this.horizontalOrigin,t.horizontalOrigin),this.verticalOrigin=f(this.verticalOrigin,t.verticalOrigin),this.heightReference=f(this.heightReference,t.heightReference),this.fillColor=f(this.fillColor,t.fillColor),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.translucencyByDistance=f(this.translucencyByDistance,t.translucencyByDistance),this.pixelOffsetScaleByDistance=f(this.pixelOffsetScaleByDistance,t.pixelOffsetScaleByDistance),this.scaleByDistance=f(this.scaleByDistance,t.scaleByDistance),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition),this.disableDepthTestDistance=f(this.disableDepthTestDistance,t.disableDepthTestDistance)};var aZ=Vk;var wfn=R(W(),1);var Ifn=R(W(),1);var Ufn=R(W(),1);var fzt=new p(1,1,1),Fzt=p.ZERO,Uzt=wt.IDENTITY;function sVt(t,e,n){this.translation=p.clone(f(t,Fzt)),this.rotation=wt.clone(f(e,Uzt)),this.scale=p.clone(f(n,fzt))}sVt.prototype.equals=function(t){return this===t||c(t)&&p.equals(this.translation,t.translation)&&wt.equals(this.rotation,t.rotation)&&p.equals(this.scale,t.scale)};var gf=sVt;var Zq=new gf;function bk(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=t.translation,this.rotation=t.rotation,this.scale=t.scale}Object.defineProperties(bk.prototype,{isConstant:{get:function(){return et.isConstant(this._translation)&&et.isConstant(this._rotation)&&et.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:ft("translation"),rotation:ft("rotation"),scale:ft("scale")});bk.prototype.getValue=function(t,e){return c(e)||(e=new gf),e.translation=et.getValueOrClonedDefault(this._translation,t,Zq.translation,e.translation),e.rotation=et.getValueOrClonedDefault(this._rotation,t,Zq.rotation,e.rotation),e.scale=et.getValueOrClonedDefault(this._scale,t,Zq.scale,e.scale),e};bk.prototype.equals=function(t){return this===t||t instanceof bk&&et.equals(this._translation,t._translation)&&et.equals(this._rotation,t._rotation)&&et.equals(this._scale,t._scale)};var $G=bk;var Xfn=R(W(),1);function XR(t,e){this._propertyNames=[],this._definitionChanged=new It,c(t)&&this.merge(t,e)}Object.defineProperties(XR.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let t=this._propertyNames;for(let e=0,n=t.length;e=e;i--)t[i]=t[l--]}for(i=0;i=0||c(h)&&rt.compare(m,h)>=0));){for(bq[Z++]=m,a=a+1,s=0;s0&&(Rq.length=b,dVt(n,d,Rq),bq.length=Z,dVt(e,r,bq))}else{for(s=0;so)return;if(this._backwardExtrapolationType===Ah.HOLD)return a.unpack(s,0,e)}if(l>=i){l=i-1;let g=n[l];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===Ah.NONE||o!==0&&rt.secondsDifference(t,g)>o)return;if(this._forwardExtrapolationType===Ah.HOLD)return l=i-1,a.unpack(s,l*a.packedLength,e)}let r=this._xTable,d=this._yTable,m=this._interpolationAlgorithm,h=this._packedInterpolationLength,Z=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let g=Math.min(m.getRequiredDataPoints(this._interpolationDegree,Z),i);g!==this._numberOfPoints&&(this._numberOfPoints=g,r.length=g,d.length=g*h)}let b=this._numberOfPoints-1;if(b<1)return;let u=0,F=i-1;if(F-u+1>=b+1){let g=l-(b/2|0)-1;gF&&(C=F,g=C-b,g{this._terrainHeight=l.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=t.updateHeight(o,s,this._heightReference)};gE.prototype.getValue=function(t,e){let n=et.getValueOrDefault(this._heightReference,t,Ge.NONE),i=et.getValueOrDefault(this._extrudedHeightReference,t,Ge.NONE);if(n===Ge.NONE&&!dE(i))return this._position=p.clone(p.ZERO,this._position),p.clone(p.ZERO,e);if(this._positionProperty.isConstant)return p.multiplyByScalar(this._normal,this._terrainHeight,e);let o=this._scene,a=this._positionProperty.getValue(t,uVt);if(!c(a)||p.equals(a,p.ZERO)||!c(o.globe))return p.clone(p.ZERO,e);if(p.equalsEpsilon(this._position,a,k.EPSILON10))return p.multiplyByScalar(this._normal,this._terrainHeight,e);this._position=p.clone(a,this._position),this._updateClamping();let s=o.globe.ellipsoid.geodeticSurfaceNormal(a,this._normal);return p.multiplyByScalar(s,this._terrainHeight,e)};gE.prototype.isDestroyed=function(){return!1};gE.prototype.destroy=function(){return c(this._removeEventListener)&&this._removeEventListener(),c(this._removeModeListener)&&this._removeModeListener(),c(this._removeCallbackFunc)&&this._removeCallbackFunc(),At(this)};var iA=gE;function Dzt(t,e,n,i){if(ro.prototype._onEntityPropertyChanged.call(this,t,e,n,i),this._observedPropertyNames.indexOf(e)===-1)return;let o=this._entity[this._geometryPropertyName];if(!c(o))return;c(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let a=o.heightReference;if(c(a)){let s=new Th(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new iA(this._scene,s,a)}}var DR=Dzt;var ZVt=p.ZERO,VVt=new p,Ozt=new p,bVt=new v;function Hzt(t){this.id=t,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function Sh(t,e){ro.call(this,{entity:t,scene:e,geometryOptions:new Hzt(t),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(t,"box",t.box,void 0)}c(Object.create)&&(Sh.prototype=Object.create(ro.prototype),Sh.prototype.constructor=Sh);Object.defineProperties(Sh.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Sh.prototype.createFillGeometryInstance=function(t){let e=this._entity,n=e.isAvailable(t),i=new pi(n&&e.isShowing&&this._showProperty.getValue(t)&&this._fillProperty.getValue(t)),o=this._distanceDisplayConditionProperty.getValue(t),a=Xi.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:a,color:void 0,offset:void 0};if(this._materialProperty instanceof Cn){let l;c(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(l=this._materialProperty.color.getValue(t,bVt)),c(l)||(l=v.WHITE),s.color=En.fromColor(l)}return c(this._options.offsetAttribute)&&(s.offset=aa.fromCartesian3(et.getValueOrDefault(this._terrainOffsetProperty,t,ZVt,VVt))),new $e({id:e,geometry:Am.fromDimensions(this._options),modelMatrix:e.computeModelMatrixForHeightReference(t,e.box.heightReference,this._options.dimensions.z*.5,this._scene.mapProjection.ellipsoid),attributes:s})};Sh.prototype.createOutlineGeometryInstance=function(t){let e=this._entity,n=e.isAvailable(t),i=et.getValueOrDefault(this._outlineColorProperty,t,v.BLACK,bVt),o=this._distanceDisplayConditionProperty.getValue(t),a={show:new pi(n&&e.isShowing&&this._showProperty.getValue(t)&&this._showOutlineProperty.getValue(t)),color:En.fromColor(i),distanceDisplayCondition:Xi.fromDistanceDisplayCondition(o),offset:void 0};return c(this._options.offsetAttribute)&&(a.offset=aa.fromCartesian3(et.getValueOrDefault(this._terrainOffsetProperty,t,ZVt,VVt))),new $e({id:e,geometry:tZ.fromDimensions(this._options),modelMatrix:e.computeModelMatrixForHeightReference(t,e.box.heightReference,this._options.dimensions.z*.5,this._scene.mapProjection.ellipsoid),attributes:a})};Sh.prototype._computeCenter=function(t,e){return et.getValueOrUndefined(this._entity.position,t,e)};Sh.prototype._isHidden=function(t,e){return!c(e.dimensions)||!c(t.position)||ro.prototype._isHidden.call(this,t,e)};Sh.prototype._isDynamic=function(t,e){return!t.position.isConstant||!et.isConstant(t.orientation)||!e.dimensions.isConstant||!et.isConstant(e.outlineWidth)};Sh.prototype._setStaticOptions=function(t,e){let n=et.getValueOrDefault(e.heightReference,Re.MINIMUM_VALUE,Ge.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Cn?jn.VERTEX_FORMAT:Fa.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=e.dimensions.getValue(Re.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ge.NONE?zn.ALL:void 0};Sh.prototype._onEntityPropertyChanged=DR;Sh.DynamicGeometryUpdater=EE;function EE(t,e,n){lo.call(this,t,e,n)}c(Object.create)&&(EE.prototype=Object.create(lo.prototype),EE.prototype.constructor=EE);EE.prototype._isHidden=function(t,e,n){let i=et.getValueOrUndefined(t.position,n,Ozt),o=this._options.dimensions;return!c(i)||!c(o)||lo.prototype._isHidden.call(this,t,e,n)};EE.prototype._setOptions=function(t,e,n){let i=et.getValueOrDefault(e.heightReference,n,Ge.NONE),o=this._options;o.dimensions=et.getValueOrUndefined(e.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ge.NONE?zn.ALL:void 0};var Ck=Sh;var jri=R(W(),1);var Lri=R(W(),1);var RAn=R(W(),1),WVt=R(RVt(),1);var wzt=0,Aq={};function wV(t,e){let n,i=t;c(Aq[i])?n=Aq[i]:(n=wzt++,Aq[i]=n),e=f(e,!1),this._id=n,this._html=t,this._showOnScreen=e,this._element=void 0}Object.defineProperties(wV.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(t){this._showOnScreen=t}},element:{get:function(){if(!c(this._element)){let t=WVt.default.sanitize(this._html),e=document.createElement("div");e._creditId=this._id,e.style.display="inline",e.innerHTML=t;let n=e.querySelectorAll("a");for(let i=0;i{!this._ready&&c(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Yb.prototype.getGeometryInstanceAttributes=function(t){return this._primitive.getGeometryInstanceAttributes(t)};Yb.isSupported=function(t){return t.frameState.context.depthTexture};Yb.prototype.isDestroyed=function(){return!1};Yb.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,At(this)};var Gh=Yb;var RWn=b(W(),1);var cWn=b(W(),1);var iWn=b(W(),1);var pzt=new K(1,1),Vzt=!1,uzt=v.WHITE;function GE(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=t.image,this.repeat=t.repeat,this.color=t.color,this.transparent=t.transparent}Object.defineProperties(GE.prototype,{isConstant:{get:function(){return et.isConstant(this._image)&&et.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:ft("image"),repeat:ft("repeat"),color:ft("color"),transparent:ft("transparent")});GE.prototype.getType=function(t){return"Image"};GE.prototype.getValue=function(t,e){return c(e)||(e={}),e.image=et.getValueOrUndefined(this._image,t),e.repeat=et.getValueOrClonedDefault(this._repeat,t,pzt,e.repeat),e.color=et.getValueOrClonedDefault(this._color,t,uzt,e.color),et.getValueOrDefault(this._transparent,t,Vzt)&&(e.color.alpha=Math.min(.99,e.color.alpha)),e};GE.prototype.equals=function(t){return this===t||t instanceof GE&&et.equals(this._image,t._image)&&et.equals(this._repeat,t._repeat)&&et.equals(this._color,t._color)&&et.equals(this._transparent,t._transparent)};var Tf=GE;function Zzt(t){if(t instanceof v)return new Cn(t);if(typeof t=="string"||t instanceof te||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement){let e=new Tf;return e.image=t,e}}function Rzt(t,e){return ft(t,e,Zzt)}var la=Rzt;function m2(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(m2.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),dimensions:ft("dimensions"),heightReference:ft("heightReference"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition")});m2.prototype.clone=function(t){return c(t)?(t.show=this.show,t.dimensions=this.dimensions,t.heightReference=this.heightReference,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t):new m2(this)};m2.prototype.merge=function(t){this.show=f(this.show,t.show),this.dimensions=f(this.dimensions,t.dimensions),this.heightReference=f(this.heightReference,t.heightReference),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition)};var PG=m2;var BWn=b(W(),1);var SWn=b(W(),1);function AE(){Ut.throwInstantiationError()}Object.defineProperties(AE.prototype,{isConstant:{get:Ut.throwInstantiationError},definitionChanged:{get:Ut.throwInstantiationError},referenceFrame:{get:Ut.throwInstantiationError}});AE.prototype.getValue=Ut.throwInstantiationError;AE.prototype.getValueInReferenceFrame=Ut.throwInstantiationError;AE.prototype.equals=Ut.throwInstantiationError;var Vq=new ot;AE.convertToReferenceFrame=function(t,e,n,i,o){if(!c(e))return e;if(c(o)||(o=new p),n===i)return p.clone(e,o);let a=Pe.computeIcrfToFixedMatrix(t,Vq);if(c(a)||(a=Pe.computeTemeToPseudoFixedMatrix(t,Vq)),n===ri.INERTIAL)return ot.multiplyByVector(a,e,o);if(n===ri.FIXED)return ot.multiplyByVector(ot.transpose(a,Vq),e,o)};var xb=AE;function vG(t,e){this._definitionChanged=new It,this._value=p.clone(t),this._referenceFrame=f(e,ri.FIXED)}Object.defineProperties(vG.prototype,{isConstant:{get:function(){return!c(this._value)||this._referenceFrame===ri.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});vG.prototype.getValue=function(t,e){return this.getValueInReferenceFrame(t,ri.FIXED,e)};vG.prototype.setValue=function(t,e){let n=!1;p.equals(this._value,t)||(n=!0,this._value=p.clone(t)),c(e)&&this._referenceFrame!==e&&(n=!0,this._referenceFrame=e),n&&this._definitionChanged.raiseEvent(this)};vG.prototype.getValueInReferenceFrame=function(t,e,n){return xb.convertToReferenceFrame(t,this._value,this._referenceFrame,e,n)};vG.prototype.equals=function(t){return this===t||t instanceof vG&&p.equals(this._value,t._value)&&this._referenceFrame===t._referenceFrame};var jl=vG;var LWn=b(W(),1);function h2(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(h2.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),positions:ft("positions"),width:ft("width"),height:ft("height"),heightReference:ft("heightReference"),extrudedHeight:ft("extrudedHeight"),extrudedHeightReference:ft("extrudedHeightReference"),cornerType:ft("cornerType"),granularity:ft("granularity"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition"),classificationType:ft("classificationType"),zIndex:ft("zIndex")});h2.prototype.clone=function(t){return c(t)?(t.show=this.show,t.positions=this.positions,t.width=this.width,t.height=this.height,t.heightReference=this.heightReference,t.extrudedHeight=this.extrudedHeight,t.extrudedHeightReference=this.extrudedHeightReference,t.cornerType=this.cornerType,t.granularity=this.granularity,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t.classificationType=this.classificationType,t.zIndex=this.zIndex,t):new h2(this)};h2.prototype.merge=function(t){this.show=f(this.show,t.show),this.positions=f(this.positions,t.positions),this.width=f(this.width,t.width),this.height=f(this.height,t.height),this.heightReference=f(this.heightReference,t.heightReference),this.extrudedHeight=f(this.extrudedHeight,t.extrudedHeight),this.extrudedHeightReference=f(this.extrudedHeightReference,t.extrudedHeightReference),this.cornerType=f(this.cornerType,t.cornerType),this.granularity=f(this.granularity,t.granularity),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition),this.classificationType=f(this.classificationType,t.classificationType),this.zIndex=f(this.zIndex,t.zIndex)};var KG=h2;var DWn=b(W(),1);function bzt(t){return t}function Wzt(t,e){return ft(t,e,bzt)}var gm=Wzt;var zWn=b(W(),1);function p2(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(p2.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),length:ft("length"),topRadius:ft("topRadius"),bottomRadius:ft("bottomRadius"),heightReference:ft("heightReference"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),numberOfVerticalLines:ft("numberOfVerticalLines"),slices:ft("slices"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition")});p2.prototype.clone=function(t){return c(t)?(t.show=this.show,t.length=this.length,t.topRadius=this.topRadius,t.bottomRadius=this.bottomRadius,t.heightReference=this.heightReference,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.numberOfVerticalLines=this.numberOfVerticalLines,t.slices=this.slices,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t):new p2(this)};p2.prototype.merge=function(t){this.show=f(this.show,t.show),this.length=f(this.length,t.length),this.topRadius=f(this.topRadius,t.topRadius),this.bottomRadius=f(this.bottomRadius,t.bottomRadius),this.heightReference=f(this.heightReference,t.heightReference),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.numberOfVerticalLines=f(this.numberOfVerticalLines,t.numberOfVerticalLines),this.slices=f(this.slices,t.slices),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition)};var zG=p2;var ifn=b(W(),1);function V2(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(V2.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),semiMajorAxis:ft("semiMajorAxis"),semiMinorAxis:ft("semiMinorAxis"),height:ft("height"),heightReference:ft("heightReference"),extrudedHeight:ft("extrudedHeight"),extrudedHeightReference:ft("extrudedHeightReference"),rotation:ft("rotation"),stRotation:ft("stRotation"),granularity:ft("granularity"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),numberOfVerticalLines:ft("numberOfVerticalLines"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition"),classificationType:ft("classificationType"),zIndex:ft("zIndex")});V2.prototype.clone=function(t){return c(t)?(t.show=this.show,t.semiMajorAxis=this.semiMajorAxis,t.semiMinorAxis=this.semiMinorAxis,t.height=this.height,t.heightReference=this.heightReference,t.extrudedHeight=this.extrudedHeight,t.extrudedHeightReference=this.extrudedHeightReference,t.rotation=this.rotation,t.stRotation=this.stRotation,t.granularity=this.granularity,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.numberOfVerticalLines=this.numberOfVerticalLines,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t.classificationType=this.classificationType,t.zIndex=this.zIndex,t):new V2(this)};V2.prototype.merge=function(t){this.show=f(this.show,t.show),this.semiMajorAxis=f(this.semiMajorAxis,t.semiMajorAxis),this.semiMinorAxis=f(this.semiMinorAxis,t.semiMinorAxis),this.height=f(this.height,t.height),this.heightReference=f(this.heightReference,t.heightReference),this.extrudedHeight=f(this.extrudedHeight,t.extrudedHeight),this.extrudedHeightReference=f(this.extrudedHeightReference,t.extrudedHeightReference),this.rotation=f(this.rotation,t.rotation),this.stRotation=f(this.stRotation,t.stRotation),this.granularity=f(this.granularity,t.granularity),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.numberOfVerticalLines=f(this.numberOfVerticalLines,t.numberOfVerticalLines),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition),this.classificationType=f(this.classificationType,t.classificationType),this.zIndex=f(this.zIndex,t.zIndex)};var jG=V2;var cfn=b(W(),1);function u2(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(u2.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),radii:ft("radii"),innerRadii:ft("innerRadii"),minimumClock:ft("minimumClock"),maximumClock:ft("maximumClock"),minimumCone:ft("minimumCone"),maximumCone:ft("maximumCone"),heightReference:ft("heightReference"),fill:ft("fill"),material:la("material"),outline:ft("outline"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),stackPartitions:ft("stackPartitions"),slicePartitions:ft("slicePartitions"),subdivisions:ft("subdivisions"),shadows:ft("shadows"),distanceDisplayCondition:ft("distanceDisplayCondition")});u2.prototype.clone=function(t){return c(t)?(t.show=this.show,t.radii=this.radii,t.innerRadii=this.innerRadii,t.minimumClock=this.minimumClock,t.maximumClock=this.maximumClock,t.minimumCone=this.minimumCone,t.maximumCone=this.maximumCone,t.heightReference=this.heightReference,t.fill=this.fill,t.material=this.material,t.outline=this.outline,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.stackPartitions=this.stackPartitions,t.slicePartitions=this.slicePartitions,t.subdivisions=this.subdivisions,t.shadows=this.shadows,t.distanceDisplayCondition=this.distanceDisplayCondition,t):new u2(this)};u2.prototype.merge=function(t){this.show=f(this.show,t.show),this.radii=f(this.radii,t.radii),this.innerRadii=f(this.innerRadii,t.innerRadii),this.minimumClock=f(this.minimumClock,t.minimumClock),this.maximumClock=f(this.maximumClock,t.maximumClock),this.minimumCone=f(this.minimumCone,t.minimumCone),this.maximumCone=f(this.maximumCone,t.maximumCone),this.heightReference=f(this.heightReference,t.heightReference),this.fill=f(this.fill,t.fill),this.material=f(this.material,t.material),this.outline=f(this.outline,t.outline),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.stackPartitions=f(this.stackPartitions,t.stackPartitions),this.slicePartitions=f(this.slicePartitions,t.slicePartitions),this.subdivisions=f(this.subdivisions,t.subdivisions),this.shadows=f(this.shadows,t.shadows),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition)};var qG=u2;var Zfn=b(W(),1);function Z2(t){this._definitionChanged=new It,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(f(t,f.EMPTY_OBJECT))}Object.defineProperties(Z2.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:ft("show"),text:ft("text"),font:ft("font"),style:ft("style"),scale:ft("scale"),showBackground:ft("showBackground"),backgroundColor:ft("backgroundColor"),backgroundPadding:ft("backgroundPadding"),pixelOffset:ft("pixelOffset"),eyeOffset:ft("eyeOffset"),horizontalOrigin:ft("horizontalOrigin"),verticalOrigin:ft("verticalOrigin"),heightReference:ft("heightReference"),fillColor:ft("fillColor"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth"),translucencyByDistance:ft("translucencyByDistance"),pixelOffsetScaleByDistance:ft("pixelOffsetScaleByDistance"),scaleByDistance:ft("scaleByDistance"),distanceDisplayCondition:ft("distanceDisplayCondition"),disableDepthTestDistance:ft("disableDepthTestDistance")});Z2.prototype.clone=function(t){return c(t)?(t.show=this.show,t.text=this.text,t.font=this.font,t.style=this.style,t.scale=this.scale,t.showBackground=this.showBackground,t.backgroundColor=this.backgroundColor,t.backgroundPadding=this.backgroundPadding,t.pixelOffset=this.pixelOffset,t.eyeOffset=this.eyeOffset,t.horizontalOrigin=this.horizontalOrigin,t.verticalOrigin=this.verticalOrigin,t.heightReference=this.heightReference,t.fillColor=this.fillColor,t.outlineColor=this.outlineColor,t.outlineWidth=this.outlineWidth,t.translucencyByDistance=this.translucencyByDistance,t.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,t.scaleByDistance=this.scaleByDistance,t.distanceDisplayCondition=this.distanceDisplayCondition,t.disableDepthTestDistance=this.disableDepthTestDistance,t):new Z2(this)};Z2.prototype.merge=function(t){this.show=f(this.show,t.show),this.text=f(this.text,t.text),this.font=f(this.font,t.font),this.style=f(this.style,t.style),this.scale=f(this.scale,t.scale),this.showBackground=f(this.showBackground,t.showBackground),this.backgroundColor=f(this.backgroundColor,t.backgroundColor),this.backgroundPadding=f(this.backgroundPadding,t.backgroundPadding),this.pixelOffset=f(this.pixelOffset,t.pixelOffset),this.eyeOffset=f(this.eyeOffset,t.eyeOffset),this.horizontalOrigin=f(this.horizontalOrigin,t.horizontalOrigin),this.verticalOrigin=f(this.verticalOrigin,t.verticalOrigin),this.heightReference=f(this.heightReference,t.heightReference),this.fillColor=f(this.fillColor,t.fillColor),this.outlineColor=f(this.outlineColor,t.outlineColor),this.outlineWidth=f(this.outlineWidth,t.outlineWidth),this.translucencyByDistance=f(this.translucencyByDistance,t.translucencyByDistance),this.pixelOffsetScaleByDistance=f(this.pixelOffsetScaleByDistance,t.pixelOffsetScaleByDistance),this.scaleByDistance=f(this.scaleByDistance,t.scaleByDistance),this.distanceDisplayCondition=f(this.distanceDisplayCondition,t.distanceDisplayCondition),this.disableDepthTestDistance=f(this.disableDepthTestDistance,t.disableDepthTestDistance)};var au=Z2;var wfn=b(W(),1);var Ifn=b(W(),1);var Ufn=b(W(),1);var fzt=new p(1,1,1),Fzt=p.ZERO,Uzt=wt.IDENTITY;function sZt(t,e,n){this.translation=p.clone(f(t,Fzt)),this.rotation=wt.clone(f(e,Uzt)),this.scale=p.clone(f(n,fzt))}sZt.prototype.equals=function(t){return this===t||c(t)&&p.equals(this.translation,t.translation)&&wt.equals(this.rotation,t.rotation)&&p.equals(this.scale,t.scale)};var gf=sZt;var uq=new gf;function R2(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=t.translation,this.rotation=t.rotation,this.scale=t.scale}Object.defineProperties(R2.prototype,{isConstant:{get:function(){return et.isConstant(this._translation)&&et.isConstant(this._rotation)&&et.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:ft("translation"),rotation:ft("rotation"),scale:ft("scale")});R2.prototype.getValue=function(t,e){return c(e)||(e=new gf),e.translation=et.getValueOrClonedDefault(this._translation,t,uq.translation,e.translation),e.rotation=et.getValueOrClonedDefault(this._rotation,t,uq.rotation,e.rotation),e.scale=et.getValueOrClonedDefault(this._scale,t,uq.scale,e.scale),e};R2.prototype.equals=function(t){return this===t||t instanceof R2&&et.equals(this._translation,t._translation)&&et.equals(this._rotation,t._rotation)&&et.equals(this._scale,t._scale)};var $G=R2;var Xfn=b(W(),1);function Xb(t,e){this._propertyNames=[],this._definitionChanged=new It,c(t)&&this.merge(t,e)}Object.defineProperties(Xb.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let t=this._propertyNames;for(let e=0,n=t.length;e=e;i--)t[i]=t[l--]}for(i=0;i=0||c(h)&&rt.compare(m,h)>=0));){for(Rq[u++]=m,a=a+1,s=0;s0&&(bq.length=R,dZt(n,d,bq),Rq.length=u,dZt(e,r,Rq))}else{for(s=0;so)return;if(this._backwardExtrapolationType===Ah.HOLD)return a.unpack(s,0,e)}if(l>=i){l=i-1;let g=n[l];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===Ah.NONE||o!==0&&rt.secondsDifference(t,g)>o)return;if(this._forwardExtrapolationType===Ah.HOLD)return l=i-1,a.unpack(s,l*a.packedLength,e)}let r=this._xTable,d=this._yTable,m=this._interpolationAlgorithm,h=this._packedInterpolationLength,u=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let g=Math.min(m.getRequiredDataPoints(this._interpolationDegree,u),i);g!==this._numberOfPoints&&(this._numberOfPoints=g,r.length=g,d.length=g*h)}let R=this._numberOfPoints-1;if(R<1)return;let V=0,F=i-1;if(F-V+1>=R+1){let g=l-(R/2|0)-1;gF&&(C=F,g=C-R,g{this._terrainHeight=l.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=t.updateHeight(o,s,this._heightReference)};gE.prototype.getValue=function(t,e){let n=et.getValueOrDefault(this._heightReference,t,Ge.NONE),i=et.getValueOrDefault(this._extrudedHeightReference,t,Ge.NONE);if(n===Ge.NONE&&!dE(i))return this._position=p.clone(p.ZERO,this._position),p.clone(p.ZERO,e);if(this._positionProperty.isConstant)return p.multiplyByScalar(this._normal,this._terrainHeight,e);let o=this._scene,a=this._positionProperty.getValue(t,VZt);if(!c(a)||p.equals(a,p.ZERO)||!c(o.globe))return p.clone(p.ZERO,e);if(p.equalsEpsilon(this._position,a,k.EPSILON10))return p.multiplyByScalar(this._normal,this._terrainHeight,e);this._position=p.clone(a,this._position),this._updateClamping();let s=o.globe.ellipsoid.geodeticSurfaceNormal(a,this._normal);return p.multiplyByScalar(s,this._terrainHeight,e)};gE.prototype.isDestroyed=function(){return!1};gE.prototype.destroy=function(){return c(this._removeEventListener)&&this._removeEventListener(),c(this._removeModeListener)&&this._removeModeListener(),c(this._removeCallbackFunc)&&this._removeCallbackFunc(),At(this)};var iA=gE;function Dzt(t,e,n,i){if(ro.prototype._onEntityPropertyChanged.call(this,t,e,n,i),this._observedPropertyNames.indexOf(e)===-1)return;let o=this._entity[this._geometryPropertyName];if(!c(o))return;c(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let a=o.heightReference;if(c(a)){let s=new Sh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new iA(this._scene,s,a)}}var Db=Dzt;var uZt=p.ZERO,ZZt=new p,Ozt=new p,RZt=new v;function Hzt(t){this.id=t,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function Th(t,e){ro.call(this,{entity:t,scene:e,geometryOptions:new Hzt(t),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(t,"box",t.box,void 0)}c(Object.create)&&(Th.prototype=Object.create(ro.prototype),Th.prototype.constructor=Th);Object.defineProperties(Th.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Th.prototype.createFillGeometryInstance=function(t){let e=this._entity,n=e.isAvailable(t),i=new pi(n&&e.isShowing&&this._showProperty.getValue(t)&&this._fillProperty.getValue(t)),o=this._distanceDisplayConditionProperty.getValue(t),a=Xi.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:a,color:void 0,offset:void 0};if(this._materialProperty instanceof Cn){let l;c(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(l=this._materialProperty.color.getValue(t,RZt)),c(l)||(l=v.WHITE),s.color=En.fromColor(l)}return c(this._options.offsetAttribute)&&(s.offset=aa.fromCartesian3(et.getValueOrDefault(this._terrainOffsetProperty,t,uZt,ZZt))),new $e({id:e,geometry:Am.fromDimensions(this._options),modelMatrix:e.computeModelMatrixForHeightReference(t,e.box.heightReference,this._options.dimensions.z*.5,this._scene.mapProjection.ellipsoid),attributes:s})};Th.prototype.createOutlineGeometryInstance=function(t){let e=this._entity,n=e.isAvailable(t),i=et.getValueOrDefault(this._outlineColorProperty,t,v.BLACK,RZt),o=this._distanceDisplayConditionProperty.getValue(t),a={show:new pi(n&&e.isShowing&&this._showProperty.getValue(t)&&this._showOutlineProperty.getValue(t)),color:En.fromColor(i),distanceDisplayCondition:Xi.fromDistanceDisplayCondition(o),offset:void 0};return c(this._options.offsetAttribute)&&(a.offset=aa.fromCartesian3(et.getValueOrDefault(this._terrainOffsetProperty,t,uZt,ZZt))),new $e({id:e,geometry:tu.fromDimensions(this._options),modelMatrix:e.computeModelMatrixForHeightReference(t,e.box.heightReference,this._options.dimensions.z*.5,this._scene.mapProjection.ellipsoid),attributes:a})};Th.prototype._computeCenter=function(t,e){return et.getValueOrUndefined(this._entity.position,t,e)};Th.prototype._isHidden=function(t,e){return!c(e.dimensions)||!c(t.position)||ro.prototype._isHidden.call(this,t,e)};Th.prototype._isDynamic=function(t,e){return!t.position.isConstant||!et.isConstant(t.orientation)||!e.dimensions.isConstant||!et.isConstant(e.outlineWidth)};Th.prototype._setStaticOptions=function(t,e){let n=et.getValueOrDefault(e.heightReference,be.MINIMUM_VALUE,Ge.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Cn?jn.VERTEX_FORMAT:Fa.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=e.dimensions.getValue(be.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ge.NONE?zn.ALL:void 0};Th.prototype._onEntityPropertyChanged=Db;Th.DynamicGeometryUpdater=EE;function EE(t,e,n){lo.call(this,t,e,n)}c(Object.create)&&(EE.prototype=Object.create(lo.prototype),EE.prototype.constructor=EE);EE.prototype._isHidden=function(t,e,n){let i=et.getValueOrUndefined(t.position,n,Ozt),o=this._options.dimensions;return!c(i)||!c(o)||lo.prototype._isHidden.call(this,t,e,n)};EE.prototype._setOptions=function(t,e,n){let i=et.getValueOrDefault(e.heightReference,n,Ge.NONE),o=this._options;o.dimensions=et.getValueOrUndefined(e.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ge.NONE?zn.ALL:void 0};var C2=Th;var jri=b(W(),1);var Lri=b(W(),1);var bAn=b(W(),1),WZt=b(bZt(),1);var wzt=0,Aq={};function wZ(t,e){let n,i=t;c(Aq[i])?n=Aq[i]:(n=wzt++,Aq[i]=n),e=f(e,!1),this._id=n,this._html=t,this._showOnScreen=e,this._element=void 0}Object.defineProperties(wZ.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(t){this._showOnScreen=t}},element:{get:function(){if(!c(this._element)){let t=WZt.default.sanitize(this._html),e=document.createElement("div");e._creditId=this._id,e.style.display="inline",e.innerHTML=t;let n=e.querySelectorAll("a");for(let i=0;i0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useSphericalHarmonicCoefficients:{get:function(){return c(this._sphericalHarmonicCoefficients)||this._useDefaultSphericalHarmonics}},specularEnvironmentMapAtlas:{get:function(){return this._specularEnvironmentMapAtlas}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return c(this._specularEnvironmentMapAtlas)&&this._specularEnvironmentMapAtlas.ready||this._useDefaultSpecularMaps}}});function ejt(t,e){if(dZ.isSupported(e)){if(t._specularEnvironmentMapAtlas=t._specularEnvironmentMapAtlas&&t._specularEnvironmentMapAtlas.destroy(),c(t._specularEnvironmentMaps)){let n=new dZ(t._specularEnvironmentMaps);t._specularEnvironmentMapAtlas=n,t._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}t._shouldRegenerateShaders=!0}}Bk.prototype.update=function(t){if(t.frameNumber===this._previousFrameNumber)return;this._previousFrameNumber=t.frameNumber;let e=t.context;t.brdfLutGenerator.update(t),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;K.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=K.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._luminanceAtZenith!==this._previousLuminanceAtZenith&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||c(this._luminanceAtZenith)!==c(this._previousLuminanceAtZenith),this._previousLuminanceAtZenith=this._luminanceAtZenith),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||c(this._previousSphericalHarmonicCoefficients)!==c(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentMapAtlasDirty&&(ejt(this,e),this._specularEnvironmentMapAtlasDirty=!1),c(this._specularEnvironmentMapAtlas)&&(this._specularEnvironmentMapAtlas.update(t),this._specularEnvironmentMapAtlas.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!c(this._specularEnvironmentMapAtlas)&&c(t.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,a=!c(t.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!c(this._sphericalHarmonicCoefficients)&&c(t.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,l=!c(t.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||a||s||l,this._useDefaultSpecularMaps=!c(this._specularEnvironmentMapAtlas)&&c(t.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!c(this._sphericalHarmonicCoefficients)&&c(t.sphericalHarmonicCoefficients)};Bk.prototype.isDestroyed=function(){return!1};Bk.prototype.destroy=function(){return this._specularEnvironmentMapAtlas=this._specularEnvironmentMapAtlas&&this._specularEnvironmentMapAtlas.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),At(this)};var aA=Bk;var hTn=R(W(),1),gq=R(uh(),1);var oTn=R(W(),1);var Sq,TVt="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjM2I5YWEyNS02NzRiLTRmOTEtYWZhNi1jNzlhZTI5Yjc3YWYiLCJpZCI6MjU5LCJpYXQiOjE3MTE1NTQ2Njd9.dawdakmPEfdAKpH2-Cv-IDOlVHwicZ1Mgk7ZzI775hQ",hw={};hw.defaultAccessToken=TVt;hw.defaultServer=new te({url:"https://api.cesium.com/"});hw.getDefaultTokenCredit=function(t){if(t===TVt){if(!c(Sq)){let e=` This application is using Cesium's default ion access token. Please assign Cesium.Ion.defaultAccessToken with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at https://cesium.com.`;Sq=new on(e,!0)}return Sq}};var cZ=hw;function Qc(t,e){let n,i=t.externalType,o=c(i);if(!o)n={url:t.url,retryAttempts:1,retryCallback:njt};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:t.options.url};else throw new St("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");te.call(this,n),this._ionEndpoint=t,this._ionEndpointDomain=o?void 0:new gq.default(t.url).authority(),this._ionEndpointResource=e,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}c(Object.create)&&(Qc.prototype=Object.create(te.prototype),Qc.prototype.constructor=Qc);Qc.fromAssetId=function(t,e){let n=Qc._createEndpointResource(t,e);return n.fetchJson().then(function(i){return new Qc(i,n)})};Object.defineProperties(Qc.prototype,{credits:{get:function(){return c(this._ionRoot)?this._ionRoot.credits:c(this._credits)?this._credits:(this._credits=Qc.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});Qc.getCreditsFromEndpoint=function(t,e){let n=t.attributions.map(on.getIonCredit),i=cZ.getDefaultTokenCredit(e.queryParameters.access_token);return c(i)&&n.push(on.clone(i)),n};Qc.prototype.clone=function(t){let e=f(this._ionRoot,this);return c(t)||(t=new Qc(e._ionEndpoint,e._ionEndpointResource)),t=te.prototype.clone.call(this,t),t._ionRoot=e,t._isExternal=this._isExternal,t};Qc.prototype.fetchImage=function(t){if(!this._isExternal){let e=t;t={preferBlob:!0},c(e)&&(t.flipY=e.flipY,t.preferImageBitmap=e.preferImageBitmap)}return te.prototype.fetchImage.call(this,t)};Qc.prototype._makeRequest=function(t){return this._isExternal||new gq.default(this.url).authority()!==this._ionEndpointDomain?te.prototype._makeRequest.call(this,t):(c(t.headers)||(t.headers={}),t.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,t.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(t.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),te.prototype._makeRequest.call(this,t))};Qc._createEndpointResource=function(t,e){e=f(e,f.EMPTY_OBJECT);let n=f(e.server,cZ.defaultServer),i=f(e.accessToken,cZ.defaultAccessToken);n=te.createIfNeeded(n);let o={url:`v1/assets/${t}/endpoint`};return c(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function njt(t,e){let n=f(t._ionRoot,t),i=n._ionEndpointResource,o=typeof Image<"u";return!c(e)||e.statusCode!==401&&!(o&&e.target instanceof Image)?Promise.resolve(!1):(c(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(a){return n._ionEndpoint=a,a}).finally(function(a){return n._pendingPromise=void 0,a})),n._pendingPromise.then(function(a){return t._ionEndpoint=a,!0}))}var gh=Qc;var ZTn=R(W(),1);function PV(t){t=f(t,0),this._array=new Array(t),this._length=t}Object.defineProperties(PV.prototype,{length:{get:function(){return this._length},set:function(t){let e=this._array,n=this._length;if(te.length&&(e.length=t);this._length=t}},values:{get:function(){return this._array}}});PV.prototype.get=function(t){return this._array[t]};PV.prototype.set=function(t,e){t>=this._length&&(this.length=t+1),this._array[t]=e};PV.prototype.peek=function(){return this._array[this._length-1]};PV.prototype.push=function(t){let e=this.length++;this._array[e]=t};PV.prototype.pop=function(){if(this._length===0)return;let t=this._array[this._length-1];return--this.length,t};PV.prototype.reserve=function(t){t>this._array.length&&(this._array.length=t)};PV.prototype.resize=function(t){this.length=t};PV.prototype.trim=function(t){t=f(t,this._length),this._array.length=t};var kc=PV;var WTn=R(W(),1);var OR={X:0,Y:1,Z:2};OR.Y_UP_TO_Z_UP=L.fromRotationTranslation(ot.fromArray([1,0,0,0,0,1,0,-1,0]));OR.Z_UP_TO_Y_UP=L.fromRotationTranslation(ot.fromArray([1,0,0,0,0,-1,0,1,0]));OR.X_UP_TO_Z_UP=L.fromRotationTranslation(ot.fromArray([0,0,1,0,1,0,-1,0,0]));OR.Z_UP_TO_X_UP=L.fromRotationTranslation(ot.fromArray([0,0,-1,0,1,0,1,0,0]));OR.X_UP_TO_Y_UP=L.fromRotationTranslation(ot.fromArray([0,1,0,-1,0,0,0,0,1]));OR.Y_UP_TO_X_UP=L.fromRotationTranslation(ot.fromArray([0,-1,0,1,0,0,0,0,1]));OR.fromName=function(t){return OR[t]};var $a=Object.freeze(OR);var nsi=R(W(),1);var UTn=R(W(),1);function SVt(t){t=f(t,f.EMPTY_OBJECT),this._metadata=t.metadata}Object.defineProperties(SVt.prototype,{metadata:{get:function(){return this._metadata}}});var sA=SVt;var Iei=R(W(),1);var XTn=R(W(),1);var ITn=R(W(),1);var STn=R(W(),1);function Ef(t,e,n){return e=f(e,0),n=f(n,t.byteLength-e),t=t.subarray(e,e+n),Ef.decode(t)}Ef.decodeWithTextDecoder=function(t){return new TextDecoder("utf-8").decode(t)};Ef.decodeWithFromCharCode=function(t){let e="",n=ijt(t),i=n.length;for(let o=0;o>10)+55296,(a&1023)+56320))}return e};function Qk(t,e,n){return e<=t&&t<=n}function ijt(t){let e=0,n=0,i=0,o=128,a=191,s=[],l=t.length;for(let r=0;r0){let o=Math.min(e,Sn.maximumTextureSize),a=Math.ceil(e/Sn.maximumTextureSize),s=1/o,l=s*.5,r=1/a,d=r*.5;n=new K(o,a),i=new Rt(s,l,r,d)}this._translucentFeaturesLength=0,this._featuresLength=e,this._textureDimensions=n,this._textureStep=i,this._owner=t.owner,this._statistics=t.statistics,this._colorChangedCallback=t.colorChangedCallback}Object.defineProperties(Hd.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let t=0;return c(this._pickTexture)&&(t+=this._pickTexture.sizeInBytes),c(this._batchTexture)&&(t+=this._batchTexture.sizeInBytes),t}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Hd.DEFAULT_COLOR_VALUE=v.WHITE;Hd.DEFAULT_SHOW_VALUE=!0;function gVt(t){let e=t._textureDimensions;return e.x*e.y*4}function EVt(t){if(!c(t._batchValues)){let e=gVt(t),n=new Uint8Array(e).fill(255);t._batchValues=n}return t._batchValues}function CVt(t){if(!c(t._showAlphaProperties)){let e=2*t._featuresLength,n=new Uint8Array(e).fill(255);t._showAlphaProperties=n}return t._showAlphaProperties}Hd.prototype.setShow=function(t,e){if(e&&!c(this._showAlphaProperties))return;let n=CVt(this),i=t*2,o=e?255:0;if(n[i]!==o){n[i]=o;let a=EVt(this),s=t*4+3;a[s]=e?n[i+1]:0,this._batchValuesDirty=!0}};Hd.prototype.setAllShow=function(t){let e=this._featuresLength;for(let n=0;n0){let i=t._pickIds,o=gVt(t),a=new Uint8Array(o),s=t._owner,l=t._statistics;for(let r=0;r0;){if(e=m.pop(),r[e]===d)continue;r[e]=d;let h=n(t,e);if(c(h))return h;let Z=o[e],b=s[e];for(let u=0;u0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useSphericalHarmonicCoefficients:{get:function(){return c(this._sphericalHarmonicCoefficients)||this._useDefaultSphericalHarmonics}},specularEnvironmentMapAtlas:{get:function(){return this._specularEnvironmentMapAtlas}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return c(this._specularEnvironmentMapAtlas)&&this._specularEnvironmentMapAtlas.ready||this._useDefaultSpecularMaps}}});function ejt(t,e){if(du.isSupported(e)){if(t._specularEnvironmentMapAtlas=t._specularEnvironmentMapAtlas&&t._specularEnvironmentMapAtlas.destroy(),c(t._specularEnvironmentMaps)){let n=new du(t._specularEnvironmentMaps);t._specularEnvironmentMapAtlas=n,t._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}t._shouldRegenerateShaders=!0}}B2.prototype.update=function(t){if(t.frameNumber===this._previousFrameNumber)return;this._previousFrameNumber=t.frameNumber;let e=t.context;t.brdfLutGenerator.update(t),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;K.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=K.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._luminanceAtZenith!==this._previousLuminanceAtZenith&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||c(this._luminanceAtZenith)!==c(this._previousLuminanceAtZenith),this._previousLuminanceAtZenith=this._luminanceAtZenith),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||c(this._previousSphericalHarmonicCoefficients)!==c(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentMapAtlasDirty&&(ejt(this,e),this._specularEnvironmentMapAtlasDirty=!1),c(this._specularEnvironmentMapAtlas)&&(this._specularEnvironmentMapAtlas.update(t),this._specularEnvironmentMapAtlas.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!c(this._specularEnvironmentMapAtlas)&&c(t.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,a=!c(t.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!c(this._sphericalHarmonicCoefficients)&&c(t.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,l=!c(t.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||a||s||l,this._useDefaultSpecularMaps=!c(this._specularEnvironmentMapAtlas)&&c(t.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!c(this._sphericalHarmonicCoefficients)&&c(t.sphericalHarmonicCoefficients)};B2.prototype.isDestroyed=function(){return!1};B2.prototype.destroy=function(){return this._specularEnvironmentMapAtlas=this._specularEnvironmentMapAtlas&&this._specularEnvironmentMapAtlas.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),At(this)};var aA=B2;var hSn=b(W(),1),gq=b(Vh(),1);var oSn=b(W(),1);var Tq,SZt="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjM2I5YWEyNS02NzRiLTRmOTEtYWZhNi1jNzlhZTI5Yjc3YWYiLCJpZCI6MjU5LCJpYXQiOjE3MTE1NTQ2Njd9.dawdakmPEfdAKpH2-Cv-IDOlVHwicZ1Mgk7ZzI775hQ",hw={};hw.defaultAccessToken=SZt;hw.defaultServer=new te({url:"https://api.cesium.com/"});hw.getDefaultTokenCredit=function(t){if(t===SZt){if(!c(Tq)){let e=` This application is using Cesium's default ion access token. Please assign Cesium.Ion.defaultAccessToken with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at https://cesium.com.`;Tq=new on(e,!0)}return Tq}};var cu=hw;function Qc(t,e){let n,i=t.externalType,o=c(i);if(!o)n={url:t.url,retryAttempts:1,retryCallback:njt};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:t.options.url};else throw new Tt("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");te.call(this,n),this._ionEndpoint=t,this._ionEndpointDomain=o?void 0:new gq.default(t.url).authority(),this._ionEndpointResource=e,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}c(Object.create)&&(Qc.prototype=Object.create(te.prototype),Qc.prototype.constructor=Qc);Qc.fromAssetId=function(t,e){let n=Qc._createEndpointResource(t,e);return n.fetchJson().then(function(i){return new Qc(i,n)})};Object.defineProperties(Qc.prototype,{credits:{get:function(){return c(this._ionRoot)?this._ionRoot.credits:c(this._credits)?this._credits:(this._credits=Qc.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});Qc.getCreditsFromEndpoint=function(t,e){let n=t.attributions.map(on.getIonCredit),i=cu.getDefaultTokenCredit(e.queryParameters.access_token);return c(i)&&n.push(on.clone(i)),n};Qc.prototype.clone=function(t){let e=f(this._ionRoot,this);return c(t)||(t=new Qc(e._ionEndpoint,e._ionEndpointResource)),t=te.prototype.clone.call(this,t),t._ionRoot=e,t._isExternal=this._isExternal,t};Qc.prototype.fetchImage=function(t){if(!this._isExternal){let e=t;t={preferBlob:!0},c(e)&&(t.flipY=e.flipY,t.preferImageBitmap=e.preferImageBitmap)}return te.prototype.fetchImage.call(this,t)};Qc.prototype._makeRequest=function(t){return this._isExternal||new gq.default(this.url).authority()!==this._ionEndpointDomain?te.prototype._makeRequest.call(this,t):(c(t.headers)||(t.headers={}),t.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,t.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(t.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),te.prototype._makeRequest.call(this,t))};Qc._createEndpointResource=function(t,e){e=f(e,f.EMPTY_OBJECT);let n=f(e.server,cu.defaultServer),i=f(e.accessToken,cu.defaultAccessToken);n=te.createIfNeeded(n);let o={url:`v1/assets/${t}/endpoint`};return c(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function njt(t,e){let n=f(t._ionRoot,t),i=n._ionEndpointResource,o=typeof Image<"u";return!c(e)||e.statusCode!==401&&!(o&&e.target instanceof Image)?Promise.resolve(!1):(c(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(a){return n._ionEndpoint=a,a}).finally(function(a){return n._pendingPromise=void 0,a})),n._pendingPromise.then(function(a){return t._ionEndpoint=a,!0}))}var gh=Qc;var uSn=b(W(),1);function PZ(t){t=f(t,0),this._array=new Array(t),this._length=t}Object.defineProperties(PZ.prototype,{length:{get:function(){return this._length},set:function(t){let e=this._array,n=this._length;if(te.length&&(e.length=t);this._length=t}},values:{get:function(){return this._array}}});PZ.prototype.get=function(t){return this._array[t]};PZ.prototype.set=function(t,e){t>=this._length&&(this.length=t+1),this._array[t]=e};PZ.prototype.peek=function(){return this._array[this._length-1]};PZ.prototype.push=function(t){let e=this.length++;this._array[e]=t};PZ.prototype.pop=function(){if(this._length===0)return;let t=this._array[this._length-1];return--this.length,t};PZ.prototype.reserve=function(t){t>this._array.length&&(this._array.length=t)};PZ.prototype.resize=function(t){this.length=t};PZ.prototype.trim=function(t){t=f(t,this._length),this._array.length=t};var kc=PZ;var WSn=b(W(),1);var Ob={X:0,Y:1,Z:2};Ob.Y_UP_TO_Z_UP=L.fromRotationTranslation(ot.fromArray([1,0,0,0,0,1,0,-1,0]));Ob.Z_UP_TO_Y_UP=L.fromRotationTranslation(ot.fromArray([1,0,0,0,0,-1,0,1,0]));Ob.X_UP_TO_Z_UP=L.fromRotationTranslation(ot.fromArray([0,0,1,0,1,0,-1,0,0]));Ob.Z_UP_TO_X_UP=L.fromRotationTranslation(ot.fromArray([0,0,-1,0,1,0,1,0,0]));Ob.X_UP_TO_Y_UP=L.fromRotationTranslation(ot.fromArray([0,1,0,-1,0,0,0,0,1]));Ob.Y_UP_TO_X_UP=L.fromRotationTranslation(ot.fromArray([0,-1,0,1,0,0,0,0,1]));Ob.fromName=function(t){return Ob[t]};var $a=Object.freeze(Ob);var nsi=b(W(),1);var USn=b(W(),1);function TZt(t){t=f(t,f.EMPTY_OBJECT),this._metadata=t.metadata}Object.defineProperties(TZt.prototype,{metadata:{get:function(){return this._metadata}}});var sA=TZt;var Iei=b(W(),1);var XSn=b(W(),1);var ISn=b(W(),1);var TSn=b(W(),1);function Ef(t,e,n){return e=f(e,0),n=f(n,t.byteLength-e),t=t.subarray(e,e+n),Ef.decode(t)}Ef.decodeWithTextDecoder=function(t){return new TextDecoder("utf-8").decode(t)};Ef.decodeWithFromCharCode=function(t){let e="",n=ijt(t),i=n.length;for(let o=0;o>10)+55296,(a&1023)+56320))}return e};function Q2(t,e,n){return e<=t&&t<=n}function ijt(t){let e=0,n=0,i=0,o=128,a=191,s=[],l=t.length;for(let r=0;r0){let o=Math.min(e,Tn.maximumTextureSize),a=Math.ceil(e/Tn.maximumTextureSize),s=1/o,l=s*.5,r=1/a,d=r*.5;n=new K(o,a),i=new bt(s,l,r,d)}this._translucentFeaturesLength=0,this._featuresLength=e,this._textureDimensions=n,this._textureStep=i,this._owner=t.owner,this._statistics=t.statistics,this._colorChangedCallback=t.colorChangedCallback}Object.defineProperties(Hd.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let t=0;return c(this._pickTexture)&&(t+=this._pickTexture.sizeInBytes),c(this._batchTexture)&&(t+=this._batchTexture.sizeInBytes),t}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Hd.DEFAULT_COLOR_VALUE=v.WHITE;Hd.DEFAULT_SHOW_VALUE=!0;function gZt(t){let e=t._textureDimensions;return e.x*e.y*4}function EZt(t){if(!c(t._batchValues)){let e=gZt(t),n=new Uint8Array(e).fill(255);t._batchValues=n}return t._batchValues}function CZt(t){if(!c(t._showAlphaProperties)){let e=2*t._featuresLength,n=new Uint8Array(e).fill(255);t._showAlphaProperties=n}return t._showAlphaProperties}Hd.prototype.setShow=function(t,e){if(e&&!c(this._showAlphaProperties))return;let n=CZt(this),i=t*2,o=e?255:0;if(n[i]!==o){n[i]=o;let a=EZt(this),s=t*4+3;a[s]=e?n[i+1]:0,this._batchValuesDirty=!0}};Hd.prototype.setAllShow=function(t){let e=this._featuresLength;for(let n=0;n0){let i=t._pickIds,o=gZt(t),a=new Uint8Array(o),s=t._owner,l=t._statistics;for(let r=0;r0;){if(e=m.pop(),r[e]===d)continue;r[e]=d;let h=n(t,e);if(c(h))return h;let u=o[e],R=s[e];for(let V=0;V0?(s="",t&&(s+=`uniform bool tile_translucentCommand; +`}Ca.prototype.getVertexShaderCallback=function(t,e,n){if(this.featuresLength===0)return;let i=this;return function(o){let a=BZt(o,n,!1),s;return Tn.maximumVertexTextureImageUnits>0?(s="",t&&(s+=`uniform bool tile_translucentCommand; `),s+=`uniform sampler2D tile_batchTexture; out vec4 tile_featureColor; out vec2 tile_featureSt; @@ -6086,7 +6086,7 @@ void main() tile_color(vec4(1.0)); tile_featureSt = computeSt(${e}); }`,`${a} -${Cjt(i)}${s}`}};function NVt(t,e){return t=Ve.replaceMain(t,"tile_main"),e?`${t}uniform float tile_colorBlend; +${Cjt(i)}${s}`}};function NZt(t,e){return t=Ze.replaceMain(t,"tile_main"),e?`${t}uniform float tile_colorBlend; void tile_color(vec4 tile_featureColor) { tile_main(); @@ -6099,7 +6099,7 @@ void tile_color(vec4 tile_featureColor) { tile_main(); } -`}function Ijt(t,e){let n=`texture(${e}`,i=0,o=t.indexOf(n,i),a;for(;o>-1;){let s=0;for(let d=o;d-1;){let s=0;for(let d=o;d0?(i+=`uniform sampler2D tile_pickTexture; +`,t}Ca.prototype.getFragmentShaderCallback=function(t,e,n){if(this.featuresLength!==0)return function(i){return i=BZt(i,e,!0),Tn.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture; in vec2 tile_featureSt; in vec4 tile_featureColor; void main() @@ -6160,7 +6160,7 @@ void main() `),i+=` tile_color(featureProperties); `,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; `),i+=`} -`),i}};Ca.prototype.getClassificationFragmentShaderCallback=function(){if(this.featuresLength!==0)return function(t){return t=Ve.replaceMain(t,"tile_main"),Sn.maximumVertexTextureImageUnits>0?t+=`uniform sampler2D tile_pickTexture; +`),i}};Ca.prototype.getClassificationFragmentShaderCallback=function(){if(this.featuresLength!==0)return function(t){return t=Ze.replaceMain(t,"tile_main"),Tn.maximumVertexTextureImageUnits>0?t+=`uniform sampler2D tile_pickTexture; in vec2 tile_featureSt; in vec4 tile_featureColor; void main() @@ -6181,7 +6181,7 @@ void main() out_FragColor = featureProperties; out_FragColor.rgb *= out_FragColor.a; } -`,t}};function Njt(t){let e=t._content.tileset,n=e.colorBlendMode,i=e.colorBlendAmount;if(n===Nm.HIGHLIGHT)return 0;if(n===Nm.REPLACE)return 1;if(n===Nm.MIX)return k.clamp(i,k.EPSILON4,1)}Ca.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let t=this;return function(e){return ze(e,{tile_batchTexture:function(){return f(t._batchTexture.batchTexture,t._batchTexture.defaultTexture)},tile_textureDimensions:function(){return t._batchTexture.textureDimensions},tile_textureStep:function(){return t._batchTexture.textureStep},tile_colorBlend:function(){return Njt(t)},tile_pickTexture:function(){return t._batchTexture.pickTexture}})}};Ca.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Cf={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Ca.prototype.addDerivedCommands=function(t,e){let n=t.commandList,i=n.length,o=this._content._tile,a=o._finalResolution,s=o.tileset,l=s.isSkippingLevelOfDetail&&s.hasMixedContent&&t.context.stencilBuffer,r=yjt(this);for(let d=e;d>>gn.SKIP_LOD_BIT_SHIFT}function Ljt(t){let e=be(t,!0);return e.cull.enabled=!1,e.depthTest.enabled=!0,e.depthMask=!1,e.blending=Pn.ALPHA_BLEND,e.stencilTest=gn.setCesium3DTileBit(),e.stencilMask=gn.CESIUM_3D_TILE_MASK,he.fromCache(e)}function Mjt(t){let e=be(t,!0);return e.stencilTest=gn.setCesium3DTileBit(),e.stencilMask=gn.CESIUM_3D_TILE_MASK,he.fromCache(e)}Ca.prototype.update=function(t,e){this._batchTexture.update(t,e)};Ca.prototype.isDestroyed=function(){return!1};Ca.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),At(this)};var wR=Ca;var aEn=R(W(),1);var KSn=R(W(),1);function _jt(t){this.offset=t.offset,this.count=t.count,this.color=t.color,this.batchIds=t.batchIds}var vV=_jt;var wgn=R(W(),1);var jSn=R(W(),1),CE=`in vec3 position; +`,t}};function Njt(t){let e=t._content.tileset,n=e.colorBlendMode,i=e.colorBlendAmount;if(n===Nm.HIGHLIGHT)return 0;if(n===Nm.REPLACE)return 1;if(n===Nm.MIX)return k.clamp(i,k.EPSILON4,1)}Ca.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let t=this;return function(e){return ze(e,{tile_batchTexture:function(){return f(t._batchTexture.batchTexture,t._batchTexture.defaultTexture)},tile_textureDimensions:function(){return t._batchTexture.textureDimensions},tile_textureStep:function(){return t._batchTexture.textureStep},tile_colorBlend:function(){return Njt(t)},tile_pickTexture:function(){return t._batchTexture.pickTexture}})}};Ca.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Cf={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Ca.prototype.addDerivedCommands=function(t,e){let n=t.commandList,i=n.length,o=this._content._tile,a=o._finalResolution,s=o.tileset,l=s.isSkippingLevelOfDetail&&s.hasMixedContent&&t.context.stencilBuffer,r=yjt(this);for(let d=e;d>>gn.SKIP_LOD_BIT_SHIFT}function Ljt(t){let e=Re(t,!0);return e.cull.enabled=!1,e.depthTest.enabled=!0,e.depthMask=!1,e.blending=Pn.ALPHA_BLEND,e.stencilTest=gn.setCesium3DTileBit(),e.stencilMask=gn.CESIUM_3D_TILE_MASK,he.fromCache(e)}function Mjt(t){let e=Re(t,!0);return e.stencilTest=gn.setCesium3DTileBit(),e.stencilMask=gn.CESIUM_3D_TILE_MASK,he.fromCache(e)}Ca.prototype.update=function(t,e){this._batchTexture.update(t,e)};Ca.prototype.isDestroyed=function(){return!1};Ca.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),At(this)};var wb=Ca;var aEn=b(W(),1);var KTn=b(W(),1);function _jt(t){this.offset=t.offset,this.count=t.count,this.color=t.color,this.batchIds=t.batchIds}var vZ=_jt;var wgn=b(W(),1);var jTn=b(W(),1),CE=`in vec3 position; in float a_batchId; uniform mat4 u_modifiedModelViewProjection; @@ -6190,31 +6190,31 @@ void main() { gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); } -`;var egn=R(W(),1);function Yp(t,e){this._content=t,this._batchId=e,this._color=void 0}Object.defineProperties(Yp.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(t){this._content.batchTable.setShow(this._batchId,t)}},color:{get:function(){return c(this._color)||(this._color=new v),this._content.batchTable.getColor(this._batchId,this._color)},set:function(t){this._content.batchTable.setColor(this._batchId,t)}},polylinePositions:{get:function(){if(c(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});Yp.prototype.hasProperty=function(t){return this._content.batchTable.hasProperty(this._batchId,t)};Yp.prototype.getPropertyIds=function(t){return this._content.batchTable.getPropertyIds(this._batchId,t)};Yp.prototype.getProperty=function(t){return this._content.batchTable.getProperty(this._batchId,t)};Yp.getPropertyInherited=function(t,e,n){let i=t.batchTable;if(c(i)){if(i.hasPropertyBySemantic(e,n))return i.getPropertyBySemantic(e,n);if(i.hasProperty(e,n))return i.getProperty(e,n)}let o=t.metadata;if(c(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let a=t.tile,s=a.metadata;if(c(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let l;if(c(a.implicitSubtree)&&(l=a.implicitSubtree.metadata),c(l)){if(l.hasPropertyBySemantic(n))return l.getPropertyBySemantic(n);if(l.hasProperty(n))return l.getProperty(n)}let r=c(t.group)?t.group.metadata:void 0;if(c(r)){if(r.hasPropertyBySemantic(n))return r.getPropertyBySemantic(n);if(r.hasProperty(n))return r.getProperty(n)}let d=t.tileset.metadata;if(c(d)){if(d.hasPropertyBySemantic(n))return d.getPropertyBySemantic(n);if(d.hasProperty(n))return d.getProperty(n)}};Yp.prototype.getPropertyInherited=function(t){return Yp.getPropertyInherited(this._content,this._batchId,t)};Yp.prototype.setProperty=function(t,e){this._content.batchTable.setProperty(this._batchId,t,e),this._content.featurePropertiesDirty=!0};Yp.prototype.isExactClass=function(t){return this._content.batchTable.isExactClass(this._batchId,t)};Yp.prototype.isClass=function(t){return this._content.batchTable.isClass(this._batchId,t)};Yp.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var Fr=Yp;var Vgn=R(W(),1);var ign=R(W(),1),Iq=class{add(e,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(e)?e:[e]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(e,n){this[e]=this[e]||[],this[e].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},Nq=class{constructor(e){this.jsep=e,this.registered={}}register(...e){e.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},ym=class t{static get version(){return"1.3.8"}static toString(){return"JavaScript Expression Parser (JSEP) v"+t.version}static addUnaryOp(e){return t.max_unop_len=Math.max(e.length,t.max_unop_len),t.unary_ops[e]=1,t}static addBinaryOp(e,n,i){return t.max_binop_len=Math.max(e.length,t.max_binop_len),t.binary_ops[e]=n,i?t.right_associative.add(e):t.right_associative.delete(e),t}static addIdentifierChar(e){return t.additional_identifier_chars.add(e),t}static addLiteral(e,n){return t.literals[e]=n,t}static removeUnaryOp(e){return delete t.unary_ops[e],e.length===t.max_unop_len&&(t.max_unop_len=t.getMaxKeyLen(t.unary_ops)),t}static removeAllUnaryOps(){return t.unary_ops={},t.max_unop_len=0,t}static removeIdentifierChar(e){return t.additional_identifier_chars.delete(e),t}static removeBinaryOp(e){return delete t.binary_ops[e],e.length===t.max_binop_len&&(t.max_binop_len=t.getMaxKeyLen(t.binary_ops)),t.right_associative.delete(e),t}static removeAllBinaryOps(){return t.binary_ops={},t.max_binop_len=0,t}static removeLiteral(e){return delete t.literals[e],t}static removeAllLiterals(){return t.literals={},t}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(e){this.expr=e,this.index=0}static parse(e){return new t(e).parse()}static getMaxKeyLen(e){return Math.max(0,...Object.keys(e).map(n=>n.length))}static isDecimalDigit(e){return e>=48&&e<=57}static binaryPrecedence(e){return t.binary_ops[e]||0}static isIdentifierStart(e){return e>=65&&e<=90||e>=97&&e<=122||e>=128&&!t.binary_ops[String.fromCharCode(e)]||t.additional_identifier_chars.has(String.fromCharCode(e))}static isIdentifierPart(e){return t.isIdentifierStart(e)||t.isDecimalDigit(e)}throwError(e){let n=new Error(e+" at character "+this.index);throw n.index=this.index,n.description=e,n}runHook(e,n){if(t.hooks[e]){let i={context:this,node:n};return t.hooks.run(e,i),i.node}return n}searchHook(e){if(t.hooks[e]){let n={context:this};return t.hooks[e].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let e=this.code;for(;e===t.SPACE_CODE||e===t.TAB_CODE||e===t.LF_CODE||e===t.CR_CODE;)e=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let e=this.gobbleExpressions(),n=e.length===1?e[0]:{type:t.COMPOUND,body:e};return this.runHook("after-all",n)}gobbleExpressions(e){let n=[],i,o;for(;this.index0;){if(t.binary_ops.hasOwnProperty(e)&&(!t.isIdentifierStart(this.code)||this.index+e.lengtha.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&m(o[o.length-2]);)l=o.pop(),n=o.pop().value,s=o.pop(),e={type:t.BINARY_EXP,operator:n,left:s,right:l},o.push(e);e=this.gobbleToken(),e||this.throwError("Expected expression after "+d),o.push(a,e)}for(r=o.length-1,e=o[r];r>1;)e={type:t.BINARY_EXP,operator:o[r-1].value,left:o[r-2],right:e},r-=2;return e}gobbleToken(){let e,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(e=this.code,t.isDecimalDigit(e)||e===t.PERIOD_CODE)return this.gobbleNumericLiteral();if(e===t.SQUOTE_CODE||e===t.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(e===t.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,t.max_unop_len),i=n.length;i>0;){if(t.unary_ops.hasOwnProperty(n)&&(!t.isIdentifierStart(this.code)||this.index+n.length=n.length&&this.throwError("Unexpected token "+String.fromCharCode(e));break}else if(a===t.COMMA_CODE){if(this.index++,o++,o!==n.length){if(e===t.CPAREN_CODE)this.throwError("Unexpected token ,");else if(e===t.CBRACK_CODE)for(let s=n.length;s":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},right_associative:new Set,additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});ym.max_unop_len=ym.getMaxKeyLen(ym.unary_ops);ym.max_binop_len=ym.getMaxKeyLen(ym.binary_ops);var If=t=>new ym(t).parse(),Ojt=Object.getOwnPropertyNames(ym);Ojt.forEach(t=>{If[t]===void 0&&t!=="prototype"&&(If[t]=ym[t])});If.Jsep=ym;var Hjt="ConditionalExpression",wjt={name:"ternary",init(t){t.hooks.add("after-expression",function(n){if(n.node&&this.code===t.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===t.COLON_CODE){this.index++;let a=this.gobbleExpression();if(a||this.throwError("Expected expression"),n.node={type:Hjt,test:i,consequent:o,alternate:a},i.operator&&t.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&t.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};If.plugins.register(wjt);var agn=R(W(),1),Pjt={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},tn=Object.freeze(Pjt);function hZ(t,e){this._expression=t,t=s4t(t,e),t=r4t(l4t(t)),If.addBinaryOp("=~",0),If.addBinaryOp("!~",0);let n;try{n=If(t)}catch(i){throw new St(i)}this._runtimeAst=So(this,n)}Object.defineProperties(hZ.prototype,{expression:{get:function(){return this._expression}}});var Ti={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new K],cartesian3Array:[new p],cartesian4Array:[new Rt],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let t=this.arrayArray[this.arrayIndex++];return t.length=0,t},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new K),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new p),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new Rt),this.cartesian4Array[this.cartesian4Index++]}};hZ.prototype.evaluate=function(t,e){Ti.reset();let n=this._runtimeAst.evaluate(t);return e instanceof v&&n instanceof Rt?v.fromCartesian4(n,e):n instanceof K||n instanceof p||n instanceof Rt?n.clone(e):n};hZ.prototype.evaluateColor=function(t,e){Ti.reset();let n=this._runtimeAst.evaluate(t);return v.fromCartesian4(n,e)};hZ.prototype.getShaderFunction=function(t,e,n,i){let o=this.getShaderExpression(e,n);return o=`${i} ${t} +`;var egn=b(W(),1);function Yp(t,e){this._content=t,this._batchId=e,this._color=void 0}Object.defineProperties(Yp.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(t){this._content.batchTable.setShow(this._batchId,t)}},color:{get:function(){return c(this._color)||(this._color=new v),this._content.batchTable.getColor(this._batchId,this._color)},set:function(t){this._content.batchTable.setColor(this._batchId,t)}},polylinePositions:{get:function(){if(c(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});Yp.prototype.hasProperty=function(t){return this._content.batchTable.hasProperty(this._batchId,t)};Yp.prototype.getPropertyIds=function(t){return this._content.batchTable.getPropertyIds(this._batchId,t)};Yp.prototype.getProperty=function(t){return this._content.batchTable.getProperty(this._batchId,t)};Yp.getPropertyInherited=function(t,e,n){let i=t.batchTable;if(c(i)){if(i.hasPropertyBySemantic(e,n))return i.getPropertyBySemantic(e,n);if(i.hasProperty(e,n))return i.getProperty(e,n)}let o=t.metadata;if(c(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let a=t.tile,s=a.metadata;if(c(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let l;if(c(a.implicitSubtree)&&(l=a.implicitSubtree.metadata),c(l)){if(l.hasPropertyBySemantic(n))return l.getPropertyBySemantic(n);if(l.hasProperty(n))return l.getProperty(n)}let r=c(t.group)?t.group.metadata:void 0;if(c(r)){if(r.hasPropertyBySemantic(n))return r.getPropertyBySemantic(n);if(r.hasProperty(n))return r.getProperty(n)}let d=t.tileset.metadata;if(c(d)){if(d.hasPropertyBySemantic(n))return d.getPropertyBySemantic(n);if(d.hasProperty(n))return d.getProperty(n)}};Yp.prototype.getPropertyInherited=function(t){return Yp.getPropertyInherited(this._content,this._batchId,t)};Yp.prototype.setProperty=function(t,e){this._content.batchTable.setProperty(this._batchId,t,e),this._content.featurePropertiesDirty=!0};Yp.prototype.isExactClass=function(t){return this._content.batchTable.isExactClass(this._batchId,t)};Yp.prototype.isClass=function(t){return this._content.batchTable.isClass(this._batchId,t)};Yp.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var Fr=Yp;var Zgn=b(W(),1);var ign=b(W(),1),Iq=class{add(e,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(e)?e:[e]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(e,n){this[e]=this[e]||[],this[e].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},Nq=class{constructor(e){this.jsep=e,this.registered={}}register(...e){e.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},ym=class t{static get version(){return"1.3.8"}static toString(){return"JavaScript Expression Parser (JSEP) v"+t.version}static addUnaryOp(e){return t.max_unop_len=Math.max(e.length,t.max_unop_len),t.unary_ops[e]=1,t}static addBinaryOp(e,n,i){return t.max_binop_len=Math.max(e.length,t.max_binop_len),t.binary_ops[e]=n,i?t.right_associative.add(e):t.right_associative.delete(e),t}static addIdentifierChar(e){return t.additional_identifier_chars.add(e),t}static addLiteral(e,n){return t.literals[e]=n,t}static removeUnaryOp(e){return delete t.unary_ops[e],e.length===t.max_unop_len&&(t.max_unop_len=t.getMaxKeyLen(t.unary_ops)),t}static removeAllUnaryOps(){return t.unary_ops={},t.max_unop_len=0,t}static removeIdentifierChar(e){return t.additional_identifier_chars.delete(e),t}static removeBinaryOp(e){return delete t.binary_ops[e],e.length===t.max_binop_len&&(t.max_binop_len=t.getMaxKeyLen(t.binary_ops)),t.right_associative.delete(e),t}static removeAllBinaryOps(){return t.binary_ops={},t.max_binop_len=0,t}static removeLiteral(e){return delete t.literals[e],t}static removeAllLiterals(){return t.literals={},t}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(e){this.expr=e,this.index=0}static parse(e){return new t(e).parse()}static getMaxKeyLen(e){return Math.max(0,...Object.keys(e).map(n=>n.length))}static isDecimalDigit(e){return e>=48&&e<=57}static binaryPrecedence(e){return t.binary_ops[e]||0}static isIdentifierStart(e){return e>=65&&e<=90||e>=97&&e<=122||e>=128&&!t.binary_ops[String.fromCharCode(e)]||t.additional_identifier_chars.has(String.fromCharCode(e))}static isIdentifierPart(e){return t.isIdentifierStart(e)||t.isDecimalDigit(e)}throwError(e){let n=new Error(e+" at character "+this.index);throw n.index=this.index,n.description=e,n}runHook(e,n){if(t.hooks[e]){let i={context:this,node:n};return t.hooks.run(e,i),i.node}return n}searchHook(e){if(t.hooks[e]){let n={context:this};return t.hooks[e].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let e=this.code;for(;e===t.SPACE_CODE||e===t.TAB_CODE||e===t.LF_CODE||e===t.CR_CODE;)e=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let e=this.gobbleExpressions(),n=e.length===1?e[0]:{type:t.COMPOUND,body:e};return this.runHook("after-all",n)}gobbleExpressions(e){let n=[],i,o;for(;this.index0;){if(t.binary_ops.hasOwnProperty(e)&&(!t.isIdentifierStart(this.code)||this.index+e.lengtha.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&m(o[o.length-2]);)l=o.pop(),n=o.pop().value,s=o.pop(),e={type:t.BINARY_EXP,operator:n,left:s,right:l},o.push(e);e=this.gobbleToken(),e||this.throwError("Expected expression after "+d),o.push(a,e)}for(r=o.length-1,e=o[r];r>1;)e={type:t.BINARY_EXP,operator:o[r-1].value,left:o[r-2],right:e},r-=2;return e}gobbleToken(){let e,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(e=this.code,t.isDecimalDigit(e)||e===t.PERIOD_CODE)return this.gobbleNumericLiteral();if(e===t.SQUOTE_CODE||e===t.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(e===t.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,t.max_unop_len),i=n.length;i>0;){if(t.unary_ops.hasOwnProperty(n)&&(!t.isIdentifierStart(this.code)||this.index+n.length=n.length&&this.throwError("Unexpected token "+String.fromCharCode(e));break}else if(a===t.COMMA_CODE){if(this.index++,o++,o!==n.length){if(e===t.CPAREN_CODE)this.throwError("Unexpected token ,");else if(e===t.CBRACK_CODE)for(let s=n.length;s":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},right_associative:new Set,additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});ym.max_unop_len=ym.getMaxKeyLen(ym.unary_ops);ym.max_binop_len=ym.getMaxKeyLen(ym.binary_ops);var If=t=>new ym(t).parse(),Ojt=Object.getOwnPropertyNames(ym);Ojt.forEach(t=>{If[t]===void 0&&t!=="prototype"&&(If[t]=ym[t])});If.Jsep=ym;var Hjt="ConditionalExpression",wjt={name:"ternary",init(t){t.hooks.add("after-expression",function(n){if(n.node&&this.code===t.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===t.COLON_CODE){this.index++;let a=this.gobbleExpression();if(a||this.throwError("Expected expression"),n.node={type:Hjt,test:i,consequent:o,alternate:a},i.operator&&t.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&t.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};If.plugins.register(wjt);var agn=b(W(),1),Pjt={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},tn=Object.freeze(Pjt);function hu(t,e){this._expression=t,t=s4t(t,e),t=r4t(l4t(t)),If.addBinaryOp("=~",0),If.addBinaryOp("!~",0);let n;try{n=If(t)}catch(i){throw new Tt(i)}this._runtimeAst=To(this,n)}Object.defineProperties(hu.prototype,{expression:{get:function(){return this._expression}}});var Si={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new K],cartesian3Array:[new p],cartesian4Array:[new bt],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let t=this.arrayArray[this.arrayIndex++];return t.length=0,t},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new K),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new p),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new bt),this.cartesian4Array[this.cartesian4Index++]}};hu.prototype.evaluate=function(t,e){Si.reset();let n=this._runtimeAst.evaluate(t);return e instanceof v&&n instanceof bt?v.fromCartesian4(n,e):n instanceof K||n instanceof p||n instanceof bt?n.clone(e):n};hu.prototype.evaluateColor=function(t,e){Si.reset();let n=this._runtimeAst.evaluate(t);return v.fromCartesian4(n,e)};hu.prototype.getShaderFunction=function(t,e,n,i){let o=this.getShaderExpression(e,n);return o=`${i} ${t} { return ${o}; } -`,o};hZ.prototype.getShaderExpression=function(t,e){return this._runtimeAst.getShaderExpression(t,e)};hZ.prototype.getVariables=function(){let t=[];return this._runtimeAst.getVariables(t),t=t.filter(function(e,n,i){return i.indexOf(e)===n}),t};var vjt=["!","-","+"],QVt=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],Zw=/\${(.*?)}/g,Kjt=/\\/g,zjt="@#%",jjt=/@#%/g,Vw=new v,bw={abs:Ur(Math.abs),sqrt:Ur(Math.sqrt),cos:Ur(Math.cos),sin:Ur(Math.sin),tan:Ur(Math.tan),acos:Ur(Math.acos),asin:Ur(Math.asin),atan:Ur(Math.atan),radians:Ur(k.toRadians),degrees:Ur(k.toDegrees),sign:Ur(k.sign),floor:Ur(Math.floor),ceil:Ur(Math.ceil),round:Ur(Math.round),exp:Ur(Math.exp),exp2:Ur($jt),log:Ur(Math.log),log2:Ur(t4t),fract:Ur(qjt),length:e4t,normalize:n4t},Rw={atan2:pw(Math.atan2,!1),pow:pw(Math.pow,!1),min:pw(Math.min,!0),max:pw(Math.max,!0),distance:i4t,dot:o4t,cross:a4t},Qq={clamp:kVt(k.clamp,!0),mix:kVt(k.lerp,!0)};function qjt(t){return t-Math.floor(t)}function $jt(t){return Math.pow(2,t)}function t4t(t){return k.log2(t)}function Ur(t){return function(e,n){if(typeof n=="number")return t(n);if(n instanceof K)return K.fromElements(t(n.x),t(n.y),Ti.getCartesian2());if(n instanceof p)return p.fromElements(t(n.x),t(n.y),t(n.z),Ti.getCartesian3());if(n instanceof Rt)return Rt.fromElements(t(n.x),t(n.y),t(n.z),t(n.w),Ti.getCartesian4());throw new St(`Function "${e}" requires a vector or number argument. Argument is ${n}.`)}}function pw(t,e){return function(n,i,o){if(e&&typeof o=="number"){if(typeof i=="number")return t(i,o);if(i instanceof K)return K.fromElements(t(i.x,o),t(i.y,o),Ti.getCartesian2());if(i instanceof p)return p.fromElements(t(i.x,o),t(i.y,o),t(i.z,o),Ti.getCartesian3());if(i instanceof Rt)return Rt.fromElements(t(i.x,o),t(i.y,o),t(i.z,o),t(i.w,o),Ti.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return t(i,o);if(i instanceof K&&o instanceof K)return K.fromElements(t(i.x,o.x),t(i.y,o.y),Ti.getCartesian2());if(i instanceof p&&o instanceof p)return p.fromElements(t(i.x,o.x),t(i.y,o.y),t(i.z,o.z),Ti.getCartesian3());if(i instanceof Rt&&o instanceof Rt)return Rt.fromElements(t(i.x,o.x),t(i.y,o.y),t(i.z,o.z),t(i.w,o.w),Ti.getCartesian4());throw new St(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function kVt(t,e){return function(n,i,o,a){if(e&&typeof a=="number"){if(typeof i=="number"&&typeof o=="number")return t(i,o,a);if(i instanceof K&&o instanceof K)return K.fromElements(t(i.x,o.x,a),t(i.y,o.y,a),Ti.getCartesian2());if(i instanceof p&&o instanceof p)return p.fromElements(t(i.x,o.x,a),t(i.y,o.y,a),t(i.z,o.z,a),Ti.getCartesian3());if(i instanceof Rt&&o instanceof Rt)return Rt.fromElements(t(i.x,o.x,a),t(i.y,o.y,a),t(i.z,o.z,a),t(i.w,o.w,a),Ti.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof a=="number")return t(i,o,a);if(i instanceof K&&o instanceof K&&a instanceof K)return K.fromElements(t(i.x,o.x,a.x),t(i.y,o.y,a.y),Ti.getCartesian2());if(i instanceof p&&o instanceof p&&a instanceof p)return p.fromElements(t(i.x,o.x,a.x),t(i.y,o.y,a.y),t(i.z,o.z,a.z),Ti.getCartesian3());if(i instanceof Rt&&o instanceof Rt&&a instanceof Rt)return Rt.fromElements(t(i.x,o.x,a.x),t(i.y,o.y,a.y),t(i.z,o.z,a.z),t(i.w,o.w,a.w),Ti.getCartesian4());throw new St(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${a}.`)}}function e4t(t,e){if(typeof e=="number")return Math.abs(e);if(e instanceof K)return K.magnitude(e);if(e instanceof p)return p.magnitude(e);if(e instanceof Rt)return Rt.magnitude(e);throw new St(`Function "${t}" requires a vector or number argument. Argument is ${e}.`)}function n4t(t,e){if(typeof e=="number")return 1;if(e instanceof K)return K.normalize(e,Ti.getCartesian2());if(e instanceof p)return p.normalize(e,Ti.getCartesian3());if(e instanceof Rt)return Rt.normalize(e,Ti.getCartesian4());throw new St(`Function "${t}" requires a vector or number argument. Argument is ${e}.`)}function i4t(t,e,n){if(typeof e=="number"&&typeof n=="number")return Math.abs(e-n);if(e instanceof K&&n instanceof K)return K.distance(e,n);if(e instanceof p&&n instanceof p)return p.distance(e,n);if(e instanceof Rt&&n instanceof Rt)return Rt.distance(e,n);throw new St(`Function "${t}" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)}function o4t(t,e,n){if(typeof e=="number"&&typeof n=="number")return e*n;if(e instanceof K&&n instanceof K)return K.dot(e,n);if(e instanceof p&&n instanceof p)return p.dot(e,n);if(e instanceof Rt&&n instanceof Rt)return Rt.dot(e,n);throw new St(`Function "${t}" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)}function a4t(t,e,n){if(e instanceof p&&n instanceof p)return p.cross(e,n,Ti.getCartesian3());throw new St(`Function "${t}" requires vec3 arguments. Arguments are ${e} and ${n}.`)}function an(t,e,n,i,o){this._type=t,this._value=e,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,R4t(this)}function s4t(t,e){if(!c(e))return t;for(let n in e)if(e.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${e[n]})`;c(o)&&(t=t.replace(i,o))}return t}function l4t(t){return t.replace(Kjt,zjt)}function Bq(t){return t.replace(jjt,"\\")}function r4t(t){let e=t,n="",i=e.indexOf("${");for(;i>=0;){let o=e.indexOf("'"),a=e.indexOf('"'),s;if(o>=0&&o=0&&a=0?new an(tn.VARIABLE_IN_STRING,t.value):new an(tn.LITERAL_STRING,Bq(t.value))}function c4t(t,e){let n=e.arguments,i=n.length,o,a,s,l;if(e.callee.type==="MemberExpression"){o=e.callee.property.name;let r=e.callee.object;if(o==="test"||o==="exec"){if(!c(r.callee)||r.callee.name!=="regExp")throw new St(`${o} is not a function.`);return i===0?o==="test"?new an(tn.LITERAL_BOOLEAN,!1):new an(tn.LITERAL_NULL,null):(s=So(t,r),l=So(t,n[0]),new an(tn.FUNCTION_CALL,o,s,l))}else if(o==="toString")return a=So(t,r),new an(tn.FUNCTION_CALL,o,a);throw new St(`Unexpected function call "${o}".`)}if(o=e.callee.name,o==="color"){if(i===0)return new an(tn.LITERAL_COLOR,o);if(a=So(t,n[0]),c(n[1])){let r=So(t,n[1]);return new an(tn.LITERAL_COLOR,o,[a,r])}return new an(tn.LITERAL_COLOR,o,[a])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new St(`${o} requires three arguments.`);return a=[So(t,n[0]),So(t,n[1]),So(t,n[2])],new an(tn.LITERAL_COLOR,o,a)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new St(`${o} requires four arguments.`);return a=[So(t,n[0]),So(t,n[1]),So(t,n[2]),So(t,n[3])],new an(tn.LITERAL_COLOR,o,a)}else if(o==="vec2"||o==="vec3"||o==="vec4"){a=new Array(i);for(let r=0;r1)throw new St(`${o} requires exactly one argument.`);return a=So(t,n[0]),new an(tn.UNARY,o,a)}else if(o==="getExactClassName"){if(i>0)throw new St(`${o} does not take any argument.`);return new an(tn.UNARY,o)}else if(c(bw[o])){if(i!==1)throw new St(`${o} requires exactly one argument.`);return a=So(t,n[0]),new an(tn.UNARY,o,a)}else if(c(Rw[o])){if(i!==2)throw new St(`${o} requires exactly two arguments.`);return s=So(t,n[0]),l=So(t,n[1]),new an(tn.BINARY,o,s,l)}else if(c(Qq[o])){if(i!==3)throw new St(`${o} requires exactly three arguments.`);s=So(t,n[0]),l=So(t,n[1]);let r=So(t,n[2]);return new an(tn.TERNARY,o,s,l,r)}else{if(o==="Boolean")return i===0?new an(tn.LITERAL_BOOLEAN,!1):(a=So(t,n[0]),new an(tn.UNARY,o,a));if(o==="Number")return i===0?new an(tn.LITERAL_NUMBER,0):(a=So(t,n[0]),new an(tn.UNARY,o,a));if(o==="String")return i===0?new an(tn.LITERAL_STRING,""):(a=So(t,n[0]),new an(tn.UNARY,o,a));if(o==="regExp")return m4t(t,e)}}throw new St(`Unexpected function call "${o}".`)}function m4t(t,e){let n=e.arguments;if(n.length===0)return new an(tn.LITERAL_REGEX,new RegExp);let i=So(t,n[0]),o;if(n.length>1){let a=So(t,n[1]);if(yq(i)&&yq(a)){try{o=new RegExp(Bq(String(i._value)),a._value)}catch(s){throw new St(s)}return new an(tn.LITERAL_REGEX,o)}return new an(tn.REGEX,i,a)}if(yq(i)){try{o=new RegExp(Bq(String(i._value)))}catch(a){throw new St(a)}return new an(tn.LITERAL_REGEX,o)}return new an(tn.REGEX,i)}function h4t(t){if(V4t(t.name)){let e=b4t(t.name);return e.substr(0,8)==="tiles3d_"?new an(tn.BUILTIN_VARIABLE,e):new an(tn.VARIABLE,e)}else{if(t.name==="NaN")return new an(tn.LITERAL_NUMBER,NaN);if(t.name==="Infinity")return new an(tn.LITERAL_NUMBER,1/0);if(t.name==="undefined")return new an(tn.LITERAL_UNDEFINED,void 0)}throw new St(`${t.name} is not defined.`)}function p4t(t){let e=t.property.name;if(e==="PI")return new an(tn.LITERAL_NUMBER,Math.PI);if(e==="E")return new an(tn.LITERAL_NUMBER,Math.E)}function u4t(t){if(t.property.name==="POSITIVE_INFINITY")return new an(tn.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function Z4t(t,e){if(e.object.name==="Math")return p4t(e);if(e.object.name==="Number")return u4t(e);let n,i=So(t,e.object);return e.computed?(n=So(t,e.property),new an(tn.MEMBER,"brackets",i,n)):(n=new an(tn.LITERAL_STRING,e.property.name),new an(tn.MEMBER,"dot",i,n))}function yq(t){return t._type>=tn.LITERAL_NULL}function V4t(t){return t.substr(0,4)==="czm_"}function b4t(t){return t.substr(4)}function So(t,e){let n,i,o,a;if(e.type==="Literal")n=d4t(e);else if(e.type==="CallExpression")n=c4t(t,e);else if(e.type==="Identifier")n=h4t(e);else if(e.type==="UnaryExpression"){i=e.operator;let s=So(t,e.argument);if(vjt.indexOf(i)>-1)n=new an(tn.UNARY,i,s);else throw new St(`Unexpected operator "${i}".`)}else if(e.type==="BinaryExpression")if(i=e.operator,o=So(t,e.left),a=So(t,e.right),QVt.indexOf(i)>-1)n=new an(tn.BINARY,i,o,a);else throw new St(`Unexpected operator "${i}".`);else if(e.type==="LogicalExpression")i=e.operator,o=So(t,e.left),a=So(t,e.right),QVt.indexOf(i)>-1&&(n=new an(tn.BINARY,i,o,a));else if(e.type==="ConditionalExpression"){let s=So(t,e.test);o=So(t,e.consequent),a=So(t,e.alternate),n=new an(tn.CONDITIONAL,"?",o,a,s)}else if(e.type==="MemberExpression")n=Z4t(t,e);else if(e.type==="ArrayExpression"){let s=[];for(let l=0;l"?t.evaluate=t._evaluateGreaterThan:t._value===">="?t.evaluate=t._evaluateGreaterThanOrEquals:t._value==="&&"?t.evaluate=t._evaluateAnd:t._value==="||"?t.evaluate=t._evaluateOr:t._value==="=~"?t.evaluate=t._evaluateRegExpMatch:t._value==="!~"?t.evaluate=t._evaluateRegExpNotMatch:c(Rw[t._value])&&(t.evaluate=F4t(t._value)):t._type===tn.TERNARY?t.evaluate=U4t(t._value):t._type===tn.MEMBER?t._value==="brackets"?t.evaluate=t._evaluateMemberBrackets:t.evaluate=t._evaluateMemberDot:t._type===tn.ARRAY?t.evaluate=t._evaluateArray:t._type===tn.VARIABLE?t.evaluate=t._evaluateVariable:t._type===tn.VARIABLE_IN_STRING?t.evaluate=t._evaluateVariableString:t._type===tn.LITERAL_COLOR?t.evaluate=t._evaluateLiteralColor:t._type===tn.LITERAL_VECTOR?t.evaluate=t._evaluateLiteralVector:t._type===tn.LITERAL_STRING?t.evaluate=t._evaluateLiteralString:t._type===tn.REGEX?t.evaluate=t._evaluateRegExp:t._type===tn.BUILTIN_VARIABLE?t._value==="tiles3d_tileset_time"&&(t.evaluate=W4t):t.evaluate=t._evaluateLiteral}function W4t(t){return c(t)?t.content.tileset.timeSinceLoad:0}function f4t(t){let e=bw[t];return function(n){let i=this._left.evaluate(n);return e(t,i)}}function F4t(t){let e=Rw[t];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return e(t,i,o)}}function U4t(t){let e=Qq[t];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),a=this._test.evaluate(n);return e(t,i,o,a)}}function Ww(t,e){if(c(t))return t.getPropertyInherited(e)}an.prototype._evaluateLiteral=function(){return this._value};an.prototype._evaluateLiteralColor=function(t){let e=Vw,n=this._left;if(this._value==="color")c(n)?n.length>1?(v.fromCssColorString(n[0].evaluate(t),e),e.alpha=n[1].evaluate(t)):v.fromCssColorString(n[0].evaluate(t),e):v.fromBytes(255,255,255,255,e);else if(this._value==="rgb")v.fromBytes(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),255,e);else if(this._value==="rgba"){let i=n[3].evaluate(t)*255;v.fromBytes(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),i,e)}else this._value==="hsl"?v.fromHsl(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),1,e):this._value==="hsla"&&v.fromHsl(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),n[3].evaluate(t),e);return Rt.fromColor(e,Ti.getCartesian4())};an.prototype._evaluateLiteralVector=function(t){let e=Ti.getArray(),n=this._value,i=this._left,o=i.length;for(let l=0;l1)throw new St(`Invalid ${n} constructor. Not enough arguments.`);if(a>s&&o>1)throw new St(`Invalid ${n} constructor. Too many arguments.`);if(a===1){let l=e[0];e.push(l,l,l)}if(n==="vec2")return K.fromArray(e,0,Ti.getCartesian2());if(n==="vec3")return p.fromArray(e,0,Ti.getCartesian3());if(n==="vec4")return Rt.fromArray(e,0,Ti.getCartesian4())};an.prototype._evaluateLiteralString=function(){return this._value};an.prototype._evaluateVariableString=function(t){let e=this._value,n=Zw.exec(e);for(;n!==null;){let i=n[0],o=n[1],a=Ww(t,o);c(a)||(a=""),e=e.replace(i,a),n=Zw.exec(e)}return e};an.prototype._evaluateVariable=function(t){return Ww(t,this._value)};function rA(t){return t._value==="feature"}an.prototype._evaluateMemberDot=function(t){if(rA(this._left))return Ww(t,this._right.evaluate(t));let e=this._left.evaluate(t);if(!c(e))return;let n=this._right.evaluate(t);if(e instanceof K||e instanceof p||e instanceof Rt){if(n==="r")return e.x;if(n==="g")return e.y;if(n==="b")return e.z;if(n==="a")return e.w}return e[n]};an.prototype._evaluateMemberBrackets=function(t){if(rA(this._left))return Ww(t,this._right.evaluate(t));let e=this._left.evaluate(t);if(!c(e))return;let n=this._right.evaluate(t);if(e instanceof K||e instanceof p||e instanceof Rt){if(n===0||n==="r")return e.x;if(n===1||n==="g")return e.y;if(n===2||n==="b")return e.z;if(n===3||n==="a")return e.w}return e[n]};an.prototype._evaluateArray=function(t){let e=[];for(let n=0;n" requires number arguments. Arguments are ${e} and ${n}.`);return e>n};an.prototype._evaluateGreaterThanOrEquals=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(typeof e!="number"||typeof n!="number")throw new St(`Operator ">=" requires number arguments. Arguments are ${e} and ${n}.`);return e>=n};an.prototype._evaluateOr=function(t){let e=this._left.evaluate(t);if(typeof e!="boolean")throw new St(`Operator "||" requires boolean arguments. First argument is ${e}.`);if(e)return!0;let n=this._right.evaluate(t);if(typeof n!="boolean")throw new St(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return e||n};an.prototype._evaluateAnd=function(t){let e=this._left.evaluate(t);if(typeof e!="boolean")throw new St(`Operator "&&" requires boolean arguments. First argument is ${e}.`);if(!e)return!1;let n=this._right.evaluate(t);if(typeof n!="boolean")throw new St(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return e&&n};an.prototype._evaluatePlus=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.add(e,n,Ti.getCartesian2());if(n instanceof p&&e instanceof p)return p.add(e,n,Ti.getCartesian3());if(n instanceof Rt&&e instanceof Rt)return Rt.add(e,n,Ti.getCartesian4());if(typeof e=="string"||typeof n=="string")return e+n;if(typeof e=="number"&&typeof n=="number")return e+n;throw new St(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateMinus=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.subtract(e,n,Ti.getCartesian2());if(n instanceof p&&e instanceof p)return p.subtract(e,n,Ti.getCartesian3());if(n instanceof Rt&&e instanceof Rt)return Rt.subtract(e,n,Ti.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e-n;throw new St(`Operator "-" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)};an.prototype._evaluateTimes=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.multiplyComponents(e,n,Ti.getCartesian2());if(n instanceof K&&typeof e=="number")return K.multiplyByScalar(n,e,Ti.getCartesian2());if(e instanceof K&&typeof n=="number")return K.multiplyByScalar(e,n,Ti.getCartesian2());if(n instanceof p&&e instanceof p)return p.multiplyComponents(e,n,Ti.getCartesian3());if(n instanceof p&&typeof e=="number")return p.multiplyByScalar(n,e,Ti.getCartesian3());if(e instanceof p&&typeof n=="number")return p.multiplyByScalar(e,n,Ti.getCartesian3());if(n instanceof Rt&&e instanceof Rt)return Rt.multiplyComponents(e,n,Ti.getCartesian4());if(n instanceof Rt&&typeof e=="number")return Rt.multiplyByScalar(n,e,Ti.getCartesian4());if(e instanceof Rt&&typeof n=="number")return Rt.multiplyByScalar(e,n,Ti.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e*n;throw new St(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${e} and ${n}.`)};an.prototype._evaluateDivide=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.divideComponents(e,n,Ti.getCartesian2());if(e instanceof K&&typeof n=="number")return K.divideByScalar(e,n,Ti.getCartesian2());if(n instanceof p&&e instanceof p)return p.divideComponents(e,n,Ti.getCartesian3());if(e instanceof p&&typeof n=="number")return p.divideByScalar(e,n,Ti.getCartesian3());if(n instanceof Rt&&e instanceof Rt)return Rt.divideComponents(e,n,Ti.getCartesian4());if(e instanceof Rt&&typeof n=="number")return Rt.divideByScalar(e,n,Ti.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e/n;throw new St(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateMod=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.fromElements(e.x%n.x,e.y%n.y,Ti.getCartesian2());if(n instanceof p&&e instanceof p)return p.fromElements(e.x%n.x,e.y%n.y,e.z%n.z,Ti.getCartesian3());if(n instanceof Rt&&e instanceof Rt)return Rt.fromElements(e.x%n.x,e.y%n.y,e.z%n.z,e.w%n.w,Ti.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e%n;throw new St(`Operator "%" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)};an.prototype._evaluateEqualsStrict=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);return n instanceof K&&e instanceof K||n instanceof p&&e instanceof p||n instanceof Rt&&e instanceof Rt?e.equals(n):e===n};an.prototype._evaluateNotEqualsStrict=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);return n instanceof K&&e instanceof K||n instanceof p&&e instanceof p||n instanceof Rt&&e instanceof Rt?!e.equals(n):e!==n};an.prototype._evaluateConditional=function(t){let e=this._test.evaluate(t);if(typeof e!="boolean")throw new St(`Conditional argument of conditional expression must be a boolean. Argument is ${e}.`);return e?this._left.evaluate(t):this._right.evaluate(t)};an.prototype._evaluateNaN=function(t){return isNaN(this._left.evaluate(t))};an.prototype._evaluateIsFinite=function(t){return isFinite(this._left.evaluate(t))};an.prototype._evaluateIsExactClass=function(t){return c(t)?t.isExactClass(this._left.evaluate(t)):!1};an.prototype._evaluateIsClass=function(t){return c(t)?t.isClass(this._left.evaluate(t)):!1};an.prototype._evaluateGetExactClassName=function(t){if(c(t))return t.getExactClassName()};an.prototype._evaluateBooleanConversion=function(t){return!!this._left.evaluate(t)};an.prototype._evaluateNumberConversion=function(t){return Number(this._left.evaluate(t))};an.prototype._evaluateStringConversion=function(t){return String(this._left.evaluate(t))};an.prototype._evaluateRegExp=function(t){let e=this._value.evaluate(t),n="";c(this._left)&&(n=this._left.evaluate(t));let i;try{i=new RegExp(e,n)}catch(o){throw new St(o)}return i};an.prototype._evaluateRegExpTest=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(!(e instanceof RegExp&&typeof n=="string"))throw new St(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${e} and ${n}.`);return e.test(n)};an.prototype._evaluateRegExpMatch=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(e instanceof RegExp&&typeof n=="string")return e.test(n);if(n instanceof RegExp&&typeof e=="string")return n.test(e);throw new St(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateRegExpNotMatch=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(e instanceof RegExp&&typeof n=="string")return!e.test(n);if(n instanceof RegExp&&typeof e=="string")return!n.test(e);throw new St(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateRegExpExec=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(!(e instanceof RegExp&&typeof n=="string"))throw new St(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${e} and ${n}.`);let i=e.exec(n);return c(i)?i[1]:null};an.prototype._evaluateToString=function(t){let e=this._left.evaluate(t);if(e instanceof RegExp||e instanceof K||e instanceof p||e instanceof Rt)return String(e);throw new St(`Unexpected function call "${this._value}".`)};function YVt(t){let e=t._left,n=e.length;for(let l=0;l1){let Z=d[0],b=d[1];return b!=="1.0"&&(e.translucent=!0),`vec4(${Z}, ${b})`}}else return"vec4(1.0)";return`vec4(${d[0]}, 1.0)`}else{if(r==="rgb")return i=xVt(this),c(i)?uw(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, 1.0)`;if(r==="rgba")return d[3]!=="1.0"&&(e.translucent=!0),i=xVt(this),c(i)?uw(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, ${d[3]})`;if(r==="hsl")return i=YVt(this),c(i)?uw(i):`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), 1.0)`;if(r==="hsla")return i=YVt(this),c(i)?(i.alpha!==1&&(e.translucent=!0),uw(i)):(d[3]!=="1.0"&&(e.translucent=!0),`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), ${d[3]})`)}break;case tn.LITERAL_VECTOR:m=o.length,h=`${r}(`;for(let Z=0;Z",">=","<","<=","&&","||","!~","=~"],uw=/\${(.*?)}/g,Kjt=/\\/g,zjt="@#%",jjt=/@#%/g,Zw=new v,Rw={abs:Ur(Math.abs),sqrt:Ur(Math.sqrt),cos:Ur(Math.cos),sin:Ur(Math.sin),tan:Ur(Math.tan),acos:Ur(Math.acos),asin:Ur(Math.asin),atan:Ur(Math.atan),radians:Ur(k.toRadians),degrees:Ur(k.toDegrees),sign:Ur(k.sign),floor:Ur(Math.floor),ceil:Ur(Math.ceil),round:Ur(Math.round),exp:Ur(Math.exp),exp2:Ur($jt),log:Ur(Math.log),log2:Ur(t4t),fract:Ur(qjt),length:e4t,normalize:n4t},bw={atan2:pw(Math.atan2,!1),pow:pw(Math.pow,!1),min:pw(Math.min,!0),max:pw(Math.max,!0),distance:i4t,dot:o4t,cross:a4t},Qq={clamp:kZt(k.clamp,!0),mix:kZt(k.lerp,!0)};function qjt(t){return t-Math.floor(t)}function $jt(t){return Math.pow(2,t)}function t4t(t){return k.log2(t)}function Ur(t){return function(e,n){if(typeof n=="number")return t(n);if(n instanceof K)return K.fromElements(t(n.x),t(n.y),Si.getCartesian2());if(n instanceof p)return p.fromElements(t(n.x),t(n.y),t(n.z),Si.getCartesian3());if(n instanceof bt)return bt.fromElements(t(n.x),t(n.y),t(n.z),t(n.w),Si.getCartesian4());throw new Tt(`Function "${e}" requires a vector or number argument. Argument is ${n}.`)}}function pw(t,e){return function(n,i,o){if(e&&typeof o=="number"){if(typeof i=="number")return t(i,o);if(i instanceof K)return K.fromElements(t(i.x,o),t(i.y,o),Si.getCartesian2());if(i instanceof p)return p.fromElements(t(i.x,o),t(i.y,o),t(i.z,o),Si.getCartesian3());if(i instanceof bt)return bt.fromElements(t(i.x,o),t(i.y,o),t(i.z,o),t(i.w,o),Si.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return t(i,o);if(i instanceof K&&o instanceof K)return K.fromElements(t(i.x,o.x),t(i.y,o.y),Si.getCartesian2());if(i instanceof p&&o instanceof p)return p.fromElements(t(i.x,o.x),t(i.y,o.y),t(i.z,o.z),Si.getCartesian3());if(i instanceof bt&&o instanceof bt)return bt.fromElements(t(i.x,o.x),t(i.y,o.y),t(i.z,o.z),t(i.w,o.w),Si.getCartesian4());throw new Tt(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function kZt(t,e){return function(n,i,o,a){if(e&&typeof a=="number"){if(typeof i=="number"&&typeof o=="number")return t(i,o,a);if(i instanceof K&&o instanceof K)return K.fromElements(t(i.x,o.x,a),t(i.y,o.y,a),Si.getCartesian2());if(i instanceof p&&o instanceof p)return p.fromElements(t(i.x,o.x,a),t(i.y,o.y,a),t(i.z,o.z,a),Si.getCartesian3());if(i instanceof bt&&o instanceof bt)return bt.fromElements(t(i.x,o.x,a),t(i.y,o.y,a),t(i.z,o.z,a),t(i.w,o.w,a),Si.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof a=="number")return t(i,o,a);if(i instanceof K&&o instanceof K&&a instanceof K)return K.fromElements(t(i.x,o.x,a.x),t(i.y,o.y,a.y),Si.getCartesian2());if(i instanceof p&&o instanceof p&&a instanceof p)return p.fromElements(t(i.x,o.x,a.x),t(i.y,o.y,a.y),t(i.z,o.z,a.z),Si.getCartesian3());if(i instanceof bt&&o instanceof bt&&a instanceof bt)return bt.fromElements(t(i.x,o.x,a.x),t(i.y,o.y,a.y),t(i.z,o.z,a.z),t(i.w,o.w,a.w),Si.getCartesian4());throw new Tt(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${a}.`)}}function e4t(t,e){if(typeof e=="number")return Math.abs(e);if(e instanceof K)return K.magnitude(e);if(e instanceof p)return p.magnitude(e);if(e instanceof bt)return bt.magnitude(e);throw new Tt(`Function "${t}" requires a vector or number argument. Argument is ${e}.`)}function n4t(t,e){if(typeof e=="number")return 1;if(e instanceof K)return K.normalize(e,Si.getCartesian2());if(e instanceof p)return p.normalize(e,Si.getCartesian3());if(e instanceof bt)return bt.normalize(e,Si.getCartesian4());throw new Tt(`Function "${t}" requires a vector or number argument. Argument is ${e}.`)}function i4t(t,e,n){if(typeof e=="number"&&typeof n=="number")return Math.abs(e-n);if(e instanceof K&&n instanceof K)return K.distance(e,n);if(e instanceof p&&n instanceof p)return p.distance(e,n);if(e instanceof bt&&n instanceof bt)return bt.distance(e,n);throw new Tt(`Function "${t}" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)}function o4t(t,e,n){if(typeof e=="number"&&typeof n=="number")return e*n;if(e instanceof K&&n instanceof K)return K.dot(e,n);if(e instanceof p&&n instanceof p)return p.dot(e,n);if(e instanceof bt&&n instanceof bt)return bt.dot(e,n);throw new Tt(`Function "${t}" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)}function a4t(t,e,n){if(e instanceof p&&n instanceof p)return p.cross(e,n,Si.getCartesian3());throw new Tt(`Function "${t}" requires vec3 arguments. Arguments are ${e} and ${n}.`)}function an(t,e,n,i,o){this._type=t,this._value=e,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,b4t(this)}function s4t(t,e){if(!c(e))return t;for(let n in e)if(e.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${e[n]})`;c(o)&&(t=t.replace(i,o))}return t}function l4t(t){return t.replace(Kjt,zjt)}function Bq(t){return t.replace(jjt,"\\")}function r4t(t){let e=t,n="",i=e.indexOf("${");for(;i>=0;){let o=e.indexOf("'"),a=e.indexOf('"'),s;if(o>=0&&o=0&&a=0?new an(tn.VARIABLE_IN_STRING,t.value):new an(tn.LITERAL_STRING,Bq(t.value))}function c4t(t,e){let n=e.arguments,i=n.length,o,a,s,l;if(e.callee.type==="MemberExpression"){o=e.callee.property.name;let r=e.callee.object;if(o==="test"||o==="exec"){if(!c(r.callee)||r.callee.name!=="regExp")throw new Tt(`${o} is not a function.`);return i===0?o==="test"?new an(tn.LITERAL_BOOLEAN,!1):new an(tn.LITERAL_NULL,null):(s=To(t,r),l=To(t,n[0]),new an(tn.FUNCTION_CALL,o,s,l))}else if(o==="toString")return a=To(t,r),new an(tn.FUNCTION_CALL,o,a);throw new Tt(`Unexpected function call "${o}".`)}if(o=e.callee.name,o==="color"){if(i===0)return new an(tn.LITERAL_COLOR,o);if(a=To(t,n[0]),c(n[1])){let r=To(t,n[1]);return new an(tn.LITERAL_COLOR,o,[a,r])}return new an(tn.LITERAL_COLOR,o,[a])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new Tt(`${o} requires three arguments.`);return a=[To(t,n[0]),To(t,n[1]),To(t,n[2])],new an(tn.LITERAL_COLOR,o,a)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new Tt(`${o} requires four arguments.`);return a=[To(t,n[0]),To(t,n[1]),To(t,n[2]),To(t,n[3])],new an(tn.LITERAL_COLOR,o,a)}else if(o==="vec2"||o==="vec3"||o==="vec4"){a=new Array(i);for(let r=0;r1)throw new Tt(`${o} requires exactly one argument.`);return a=To(t,n[0]),new an(tn.UNARY,o,a)}else if(o==="getExactClassName"){if(i>0)throw new Tt(`${o} does not take any argument.`);return new an(tn.UNARY,o)}else if(c(Rw[o])){if(i!==1)throw new Tt(`${o} requires exactly one argument.`);return a=To(t,n[0]),new an(tn.UNARY,o,a)}else if(c(bw[o])){if(i!==2)throw new Tt(`${o} requires exactly two arguments.`);return s=To(t,n[0]),l=To(t,n[1]),new an(tn.BINARY,o,s,l)}else if(c(Qq[o])){if(i!==3)throw new Tt(`${o} requires exactly three arguments.`);s=To(t,n[0]),l=To(t,n[1]);let r=To(t,n[2]);return new an(tn.TERNARY,o,s,l,r)}else{if(o==="Boolean")return i===0?new an(tn.LITERAL_BOOLEAN,!1):(a=To(t,n[0]),new an(tn.UNARY,o,a));if(o==="Number")return i===0?new an(tn.LITERAL_NUMBER,0):(a=To(t,n[0]),new an(tn.UNARY,o,a));if(o==="String")return i===0?new an(tn.LITERAL_STRING,""):(a=To(t,n[0]),new an(tn.UNARY,o,a));if(o==="regExp")return m4t(t,e)}}throw new Tt(`Unexpected function call "${o}".`)}function m4t(t,e){let n=e.arguments;if(n.length===0)return new an(tn.LITERAL_REGEX,new RegExp);let i=To(t,n[0]),o;if(n.length>1){let a=To(t,n[1]);if(yq(i)&&yq(a)){try{o=new RegExp(Bq(String(i._value)),a._value)}catch(s){throw new Tt(s)}return new an(tn.LITERAL_REGEX,o)}return new an(tn.REGEX,i,a)}if(yq(i)){try{o=new RegExp(Bq(String(i._value)))}catch(a){throw new Tt(a)}return new an(tn.LITERAL_REGEX,o)}return new an(tn.REGEX,i)}function h4t(t){if(Z4t(t.name)){let e=R4t(t.name);return e.substr(0,8)==="tiles3d_"?new an(tn.BUILTIN_VARIABLE,e):new an(tn.VARIABLE,e)}else{if(t.name==="NaN")return new an(tn.LITERAL_NUMBER,NaN);if(t.name==="Infinity")return new an(tn.LITERAL_NUMBER,1/0);if(t.name==="undefined")return new an(tn.LITERAL_UNDEFINED,void 0)}throw new Tt(`${t.name} is not defined.`)}function p4t(t){let e=t.property.name;if(e==="PI")return new an(tn.LITERAL_NUMBER,Math.PI);if(e==="E")return new an(tn.LITERAL_NUMBER,Math.E)}function V4t(t){if(t.property.name==="POSITIVE_INFINITY")return new an(tn.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function u4t(t,e){if(e.object.name==="Math")return p4t(e);if(e.object.name==="Number")return V4t(e);let n,i=To(t,e.object);return e.computed?(n=To(t,e.property),new an(tn.MEMBER,"brackets",i,n)):(n=new an(tn.LITERAL_STRING,e.property.name),new an(tn.MEMBER,"dot",i,n))}function yq(t){return t._type>=tn.LITERAL_NULL}function Z4t(t){return t.substr(0,4)==="czm_"}function R4t(t){return t.substr(4)}function To(t,e){let n,i,o,a;if(e.type==="Literal")n=d4t(e);else if(e.type==="CallExpression")n=c4t(t,e);else if(e.type==="Identifier")n=h4t(e);else if(e.type==="UnaryExpression"){i=e.operator;let s=To(t,e.argument);if(vjt.indexOf(i)>-1)n=new an(tn.UNARY,i,s);else throw new Tt(`Unexpected operator "${i}".`)}else if(e.type==="BinaryExpression")if(i=e.operator,o=To(t,e.left),a=To(t,e.right),QZt.indexOf(i)>-1)n=new an(tn.BINARY,i,o,a);else throw new Tt(`Unexpected operator "${i}".`);else if(e.type==="LogicalExpression")i=e.operator,o=To(t,e.left),a=To(t,e.right),QZt.indexOf(i)>-1&&(n=new an(tn.BINARY,i,o,a));else if(e.type==="ConditionalExpression"){let s=To(t,e.test);o=To(t,e.consequent),a=To(t,e.alternate),n=new an(tn.CONDITIONAL,"?",o,a,s)}else if(e.type==="MemberExpression")n=u4t(t,e);else if(e.type==="ArrayExpression"){let s=[];for(let l=0;l"?t.evaluate=t._evaluateGreaterThan:t._value===">="?t.evaluate=t._evaluateGreaterThanOrEquals:t._value==="&&"?t.evaluate=t._evaluateAnd:t._value==="||"?t.evaluate=t._evaluateOr:t._value==="=~"?t.evaluate=t._evaluateRegExpMatch:t._value==="!~"?t.evaluate=t._evaluateRegExpNotMatch:c(bw[t._value])&&(t.evaluate=F4t(t._value)):t._type===tn.TERNARY?t.evaluate=U4t(t._value):t._type===tn.MEMBER?t._value==="brackets"?t.evaluate=t._evaluateMemberBrackets:t.evaluate=t._evaluateMemberDot:t._type===tn.ARRAY?t.evaluate=t._evaluateArray:t._type===tn.VARIABLE?t.evaluate=t._evaluateVariable:t._type===tn.VARIABLE_IN_STRING?t.evaluate=t._evaluateVariableString:t._type===tn.LITERAL_COLOR?t.evaluate=t._evaluateLiteralColor:t._type===tn.LITERAL_VECTOR?t.evaluate=t._evaluateLiteralVector:t._type===tn.LITERAL_STRING?t.evaluate=t._evaluateLiteralString:t._type===tn.REGEX?t.evaluate=t._evaluateRegExp:t._type===tn.BUILTIN_VARIABLE?t._value==="tiles3d_tileset_time"&&(t.evaluate=W4t):t.evaluate=t._evaluateLiteral}function W4t(t){return c(t)?t.content.tileset.timeSinceLoad:0}function f4t(t){let e=Rw[t];return function(n){let i=this._left.evaluate(n);return e(t,i)}}function F4t(t){let e=bw[t];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return e(t,i,o)}}function U4t(t){let e=Qq[t];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),a=this._test.evaluate(n);return e(t,i,o,a)}}function Ww(t,e){if(c(t))return t.getPropertyInherited(e)}an.prototype._evaluateLiteral=function(){return this._value};an.prototype._evaluateLiteralColor=function(t){let e=Zw,n=this._left;if(this._value==="color")c(n)?n.length>1?(v.fromCssColorString(n[0].evaluate(t),e),e.alpha=n[1].evaluate(t)):v.fromCssColorString(n[0].evaluate(t),e):v.fromBytes(255,255,255,255,e);else if(this._value==="rgb")v.fromBytes(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),255,e);else if(this._value==="rgba"){let i=n[3].evaluate(t)*255;v.fromBytes(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),i,e)}else this._value==="hsl"?v.fromHsl(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),1,e):this._value==="hsla"&&v.fromHsl(n[0].evaluate(t),n[1].evaluate(t),n[2].evaluate(t),n[3].evaluate(t),e);return bt.fromColor(e,Si.getCartesian4())};an.prototype._evaluateLiteralVector=function(t){let e=Si.getArray(),n=this._value,i=this._left,o=i.length;for(let l=0;l1)throw new Tt(`Invalid ${n} constructor. Not enough arguments.`);if(a>s&&o>1)throw new Tt(`Invalid ${n} constructor. Too many arguments.`);if(a===1){let l=e[0];e.push(l,l,l)}if(n==="vec2")return K.fromArray(e,0,Si.getCartesian2());if(n==="vec3")return p.fromArray(e,0,Si.getCartesian3());if(n==="vec4")return bt.fromArray(e,0,Si.getCartesian4())};an.prototype._evaluateLiteralString=function(){return this._value};an.prototype._evaluateVariableString=function(t){let e=this._value,n=uw.exec(e);for(;n!==null;){let i=n[0],o=n[1],a=Ww(t,o);c(a)||(a=""),e=e.replace(i,a),n=uw.exec(e)}return e};an.prototype._evaluateVariable=function(t){return Ww(t,this._value)};function rA(t){return t._value==="feature"}an.prototype._evaluateMemberDot=function(t){if(rA(this._left))return Ww(t,this._right.evaluate(t));let e=this._left.evaluate(t);if(!c(e))return;let n=this._right.evaluate(t);if(e instanceof K||e instanceof p||e instanceof bt){if(n==="r")return e.x;if(n==="g")return e.y;if(n==="b")return e.z;if(n==="a")return e.w}return e[n]};an.prototype._evaluateMemberBrackets=function(t){if(rA(this._left))return Ww(t,this._right.evaluate(t));let e=this._left.evaluate(t);if(!c(e))return;let n=this._right.evaluate(t);if(e instanceof K||e instanceof p||e instanceof bt){if(n===0||n==="r")return e.x;if(n===1||n==="g")return e.y;if(n===2||n==="b")return e.z;if(n===3||n==="a")return e.w}return e[n]};an.prototype._evaluateArray=function(t){let e=[];for(let n=0;n" requires number arguments. Arguments are ${e} and ${n}.`);return e>n};an.prototype._evaluateGreaterThanOrEquals=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(typeof e!="number"||typeof n!="number")throw new Tt(`Operator ">=" requires number arguments. Arguments are ${e} and ${n}.`);return e>=n};an.prototype._evaluateOr=function(t){let e=this._left.evaluate(t);if(typeof e!="boolean")throw new Tt(`Operator "||" requires boolean arguments. First argument is ${e}.`);if(e)return!0;let n=this._right.evaluate(t);if(typeof n!="boolean")throw new Tt(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return e||n};an.prototype._evaluateAnd=function(t){let e=this._left.evaluate(t);if(typeof e!="boolean")throw new Tt(`Operator "&&" requires boolean arguments. First argument is ${e}.`);if(!e)return!1;let n=this._right.evaluate(t);if(typeof n!="boolean")throw new Tt(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return e&&n};an.prototype._evaluatePlus=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.add(e,n,Si.getCartesian2());if(n instanceof p&&e instanceof p)return p.add(e,n,Si.getCartesian3());if(n instanceof bt&&e instanceof bt)return bt.add(e,n,Si.getCartesian4());if(typeof e=="string"||typeof n=="string")return e+n;if(typeof e=="number"&&typeof n=="number")return e+n;throw new Tt(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateMinus=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.subtract(e,n,Si.getCartesian2());if(n instanceof p&&e instanceof p)return p.subtract(e,n,Si.getCartesian3());if(n instanceof bt&&e instanceof bt)return bt.subtract(e,n,Si.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e-n;throw new Tt(`Operator "-" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)};an.prototype._evaluateTimes=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.multiplyComponents(e,n,Si.getCartesian2());if(n instanceof K&&typeof e=="number")return K.multiplyByScalar(n,e,Si.getCartesian2());if(e instanceof K&&typeof n=="number")return K.multiplyByScalar(e,n,Si.getCartesian2());if(n instanceof p&&e instanceof p)return p.multiplyComponents(e,n,Si.getCartesian3());if(n instanceof p&&typeof e=="number")return p.multiplyByScalar(n,e,Si.getCartesian3());if(e instanceof p&&typeof n=="number")return p.multiplyByScalar(e,n,Si.getCartesian3());if(n instanceof bt&&e instanceof bt)return bt.multiplyComponents(e,n,Si.getCartesian4());if(n instanceof bt&&typeof e=="number")return bt.multiplyByScalar(n,e,Si.getCartesian4());if(e instanceof bt&&typeof n=="number")return bt.multiplyByScalar(e,n,Si.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e*n;throw new Tt(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${e} and ${n}.`)};an.prototype._evaluateDivide=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.divideComponents(e,n,Si.getCartesian2());if(e instanceof K&&typeof n=="number")return K.divideByScalar(e,n,Si.getCartesian2());if(n instanceof p&&e instanceof p)return p.divideComponents(e,n,Si.getCartesian3());if(e instanceof p&&typeof n=="number")return p.divideByScalar(e,n,Si.getCartesian3());if(n instanceof bt&&e instanceof bt)return bt.divideComponents(e,n,Si.getCartesian4());if(e instanceof bt&&typeof n=="number")return bt.divideByScalar(e,n,Si.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e/n;throw new Tt(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateMod=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(n instanceof K&&e instanceof K)return K.fromElements(e.x%n.x,e.y%n.y,Si.getCartesian2());if(n instanceof p&&e instanceof p)return p.fromElements(e.x%n.x,e.y%n.y,e.z%n.z,Si.getCartesian3());if(n instanceof bt&&e instanceof bt)return bt.fromElements(e.x%n.x,e.y%n.y,e.z%n.z,e.w%n.w,Si.getCartesian4());if(typeof e=="number"&&typeof n=="number")return e%n;throw new Tt(`Operator "%" requires vector or number arguments of matching types. Arguments are ${e} and ${n}.`)};an.prototype._evaluateEqualsStrict=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);return n instanceof K&&e instanceof K||n instanceof p&&e instanceof p||n instanceof bt&&e instanceof bt?e.equals(n):e===n};an.prototype._evaluateNotEqualsStrict=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);return n instanceof K&&e instanceof K||n instanceof p&&e instanceof p||n instanceof bt&&e instanceof bt?!e.equals(n):e!==n};an.prototype._evaluateConditional=function(t){let e=this._test.evaluate(t);if(typeof e!="boolean")throw new Tt(`Conditional argument of conditional expression must be a boolean. Argument is ${e}.`);return e?this._left.evaluate(t):this._right.evaluate(t)};an.prototype._evaluateNaN=function(t){return isNaN(this._left.evaluate(t))};an.prototype._evaluateIsFinite=function(t){return isFinite(this._left.evaluate(t))};an.prototype._evaluateIsExactClass=function(t){return c(t)?t.isExactClass(this._left.evaluate(t)):!1};an.prototype._evaluateIsClass=function(t){return c(t)?t.isClass(this._left.evaluate(t)):!1};an.prototype._evaluateGetExactClassName=function(t){if(c(t))return t.getExactClassName()};an.prototype._evaluateBooleanConversion=function(t){return!!this._left.evaluate(t)};an.prototype._evaluateNumberConversion=function(t){return Number(this._left.evaluate(t))};an.prototype._evaluateStringConversion=function(t){return String(this._left.evaluate(t))};an.prototype._evaluateRegExp=function(t){let e=this._value.evaluate(t),n="";c(this._left)&&(n=this._left.evaluate(t));let i;try{i=new RegExp(e,n)}catch(o){throw new Tt(o)}return i};an.prototype._evaluateRegExpTest=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(!(e instanceof RegExp&&typeof n=="string"))throw new Tt(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${e} and ${n}.`);return e.test(n)};an.prototype._evaluateRegExpMatch=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(e instanceof RegExp&&typeof n=="string")return e.test(n);if(n instanceof RegExp&&typeof e=="string")return n.test(e);throw new Tt(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateRegExpNotMatch=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(e instanceof RegExp&&typeof n=="string")return!e.test(n);if(n instanceof RegExp&&typeof e=="string")return!n.test(e);throw new Tt(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${e} and ${n}.`)};an.prototype._evaluateRegExpExec=function(t){let e=this._left.evaluate(t),n=this._right.evaluate(t);if(!(e instanceof RegExp&&typeof n=="string"))throw new Tt(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${e} and ${n}.`);let i=e.exec(n);return c(i)?i[1]:null};an.prototype._evaluateToString=function(t){let e=this._left.evaluate(t);if(e instanceof RegExp||e instanceof K||e instanceof p||e instanceof bt)return String(e);throw new Tt(`Unexpected function call "${this._value}".`)};function YZt(t){let e=t._left,n=e.length;for(let l=0;l1){let u=d[0],R=d[1];return R!=="1.0"&&(e.translucent=!0),`vec4(${u}, ${R})`}}else return"vec4(1.0)";return`vec4(${d[0]}, 1.0)`}else{if(r==="rgb")return i=xZt(this),c(i)?Vw(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, 1.0)`;if(r==="rgba")return d[3]!=="1.0"&&(e.translucent=!0),i=xZt(this),c(i)?Vw(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, ${d[3]})`;if(r==="hsl")return i=YZt(this),c(i)?Vw(i):`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), 1.0)`;if(r==="hsla")return i=YZt(this),c(i)?(i.alpha!==1&&(e.translucent=!0),Vw(i)):(d[3]!=="1.0"&&(e.translucent=!0),`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), ${d[3]})`)}break;case tn.LITERAL_VECTOR:m=o.length,h=`${r}(`;for(let u=0;u0;){let m=e.pop();if(v.equals(m.color,l.color))d=kq(n,s,d,i,o,m.batchIds,a),l.batchIds=l.batchIds.concat(m.batchIds),l.count=d-l.offset;else{let h=d;d=kq(n,s,d,i,o,m.batchIds,a),m.offset=h,m.count=d-h,r.push(m),l=m}}t._va.indexBuffer.copyFromArrayView(s),t._indices=s,t._batchedIndices=r}function Yq(t,e,n,i,o,a,s){let l=t.bytesPerIndex,r=a.length;for(let d=0;d0;){let h=e.pop();if(v.equals(h.color,a.color))d=Yq(l,r,d,n,i,h.batchIds,o),a.batchIds=a.batchIds.concat(h.batchIds),a.count=d-a.offset;else{let Z=d;d=Yq(l,r,d,n,i,h.batchIds,o),h.offset=Z,h.count=d-Z,s.push(h),a=h}}let m=t._va;t._va=t._vaSwap,t._vaSwap=m,t._batchedIndices=s}function B4t(t,e){return e.color.toRgba()-t.color.toRgba()}function Q4t(t,e){if(!t._batchDirty)return!1;let n=t._batchedIndices,i=n.length,o=!1,a={};for(let s=0;s=F&&s{t.isDestroyed()||(t._error=u)}):void 0}}function z4t(t){c(t._primitive)||(t._primitive=new cA({batchTable:t._batchTable,positions:t._positions,batchIds:t._batchIds,vertexBatchIds:t._vertexBatchIds,indices:t._indices,indexOffsets:t._indexOffsets,indexCounts:t._indexCounts,batchedIndices:t._batchedIndices,boundingVolume:t._boundingVolume,boundingVolumes:t._boundingVolumes,center:t._center,pickObject:f(t._pickObject,t)}),t._boxes=void 0,t._boxBatchIds=void 0,t._cylinders=void 0,t._cylinderBatchIds=void 0,t._ellipsoids=void 0,t._ellipsoidBatchIds=void 0,t._spheres=void 0,t._sphereBatchIds=void 0,t._center=void 0,t._modelMatrix=void 0,t._batchTable=void 0,t._boundingVolume=void 0,t._boundingVolumes=void 0,t._batchedIndices=void 0,t._indices=void 0,t._indexOffsets=void 0,t._indexCounts=void 0,t._positions=void 0,t._vertexBatchIds=void 0,t._batchIds=void 0,t._batchTableColors=void 0,t._packedBuffer=void 0,t._verticesPromise=void 0)}Ch.prototype.createFeatures=function(t,e){this._primitive.createFeatures(t,e)};Ch.prototype.applyDebugSettings=function(t,e){this._primitive.applyDebugSettings(t,e)};Ch.prototype.applyStyle=function(t,e){this._primitive.applyStyle(t,e)};Ch.prototype.updateCommands=function(t,e){this._primitive.updateCommands(t,e)};Ch.prototype.update=function(t){if(!this._ready){if(c(this._promise)||(this._promise=K4t(this)),c(this._error)){let e=this._error;throw this._error=void 0,e}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(t)};Ch.prototype.isDestroyed=function(){return!1};Ch.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};var vR=Ch;function KV(t,e,n,i,o){this._tileset=t,this._tile=e,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,$4t(this,i,o)}Object.defineProperties(KV.prototype,{featuresLength:{get:function(){return c(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return c(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return c(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return c(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(t){this._metadata=t}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(t){this._group=t}}});function j4t(t){return function(e,n){c(t._geometries)&&t._geometries.updateCommands(e,n)}}function q4t(t,e){let n,i,o,a,s,l=f(t.BOXES_LENGTH,0),r=f(t.CYLINDERS_LENGTH,0),d=f(t.ELLIPSOIDS_LENGTH,0),m=f(t.SPHERES_LENGTH,0);if(l>0&&c(t.BOX_BATCH_IDS)){let u=e.byteOffset+t.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(e.buffer,u,l)}if(r>0&&c(t.CYLINDER_BATCH_IDS)){let u=e.byteOffset+t.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(e.buffer,u,r)}if(d>0&&c(t.ELLIPSOID_BATCH_IDS)){let u=e.byteOffset+t.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(e.buffer,u,d)}if(m>0&&c(t.SPHERE_BATCH_IDS)){let u=e.byteOffset+t.SPHERE_BATCH_IDS.byteOffset;a=new Uint16Array(e.buffer,u,m)}let h=c(n)||c(i)||c(o)||c(a),Z=l>0&&!c(n)||r>0&&!c(i)||d>0&&!c(o)||m>0&&!c(a);if(h&&Z)throw new St("If one group of batch ids is defined, then all batch ids must be defined");if(!c(n)&&!c(i)&&!c(o)&&!c(a)){let u=0;if(!c(n)&&l>0)for(n=new Uint16Array(l),s=0;s0)for(i=new Uint16Array(r),s=0;s0)for(o=new Uint16Array(d),s=0;s0)for(a=new Uint16Array(m),s=0;s0&&(b=ts(i,n,d),n+=d,m>0&&(u=new Uint8Array(e,n,m),u=new Uint8Array(u)));let F=f(h.BOXES_LENGTH,0),U=f(h.CYLINDERS_LENGTH,0),G=f(h.ELLIPSOIDS_LENGTH,0),A=f(h.SPHERES_LENGTH,0),T=F+U+G+A,g=new wR(t,T,b,u,j4t(t));if(t._batchTable=g,T===0)return;let C=t.tile.computedTransform,y;c(h.RTC_CENTER)&&(y=p.unpack(h.RTC_CENTER),L.multiplyByPoint(C,y,y));let Y=q4t(h,Z);if(F>0||U>0||G>0||A>0){let Q,J,M,V;if(F>0){let E=Z.byteOffset+h.BOXES.byteOffset;Q=new Float32Array(Z.buffer,E,vR.packedBoxLength*F)}if(U>0){let E=Z.byteOffset+h.CYLINDERS.byteOffset;J=new Float32Array(Z.buffer,E,vR.packedCylinderLength*U)}if(G>0){let E=Z.byteOffset+h.ELLIPSOIDS.byteOffset;M=new Float32Array(Z.buffer,E,vR.packedEllipsoidLength*G)}if(A>0){let E=Z.byteOffset+h.SPHERES.byteOffset;V=new Float32Array(Z.buffer,E,vR.packedSphereLength*A)}return t._geometries=new vR({boxes:Q,boxBatchIds:Y.boxes,cylinders:J,cylinderBatchIds:Y.cylinders,ellipsoids:M,ellipsoidBatchIds:Y.ellipsoids,spheres:V,sphereBatchIds:Y.spheres,center:y,modelMatrix:C,batchTable:g,boundingVolume:t.tile.boundingVolume.boundingVolume}),t}return Promise.resolve(t)}function DVt(t){let e=t.featuresLength;if(!c(t._features)&&e>0){let n=new Array(e);c(t._geometries)&&t._geometries.createFeatures(t,n),t._features=n}}KV.prototype.hasProperty=function(t,e){return this._batchTable.hasProperty(t,e)};KV.prototype.getFeature=function(t){return DVt(this),this._features[t]};KV.prototype.applyDebugSettings=function(t,e){c(this._geometries)&&this._geometries.applyDebugSettings(t,e)};KV.prototype.applyStyle=function(t){DVt(this),c(this._geometries)&&this._geometries.applyStyle(t,this._features)};KV.prototype.update=function(t,e){c(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(e)),c(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(t,e),this._ready=!0)};KV.prototype.pick=function(t,e,n){};KV.prototype.isDestroyed=function(){return!1};KV.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),At(this)};var Xk=KV;var z2n=R(W(),1);var REn=R(W(),1);var xq={};xq.encode2D=function(t,e,n){let i=Math.pow(2,t),o={x:e,y:n},a,s,l,r=BigInt(0);for(l=i/2;l>0;l/=2)a=(o.x&l)>0?1:0,s=(o.y&l)>0?1:0,r+=BigInt((3*a^s)*l*l),OVt(i,o,a,s);return r};xq.decode2D=function(t,e){let n=Math.pow(2,t),i={x:0,y:0},o,a,s,l;for(s=1,l=e;s>>0,Xq=2*hA+1,yf=4,PVt=[],vVt=[],n8t=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],Bf=1,NE=2,fw=[Bf,0,0,Bf|NE];function Gl(t){if(!In.supportsBigInt())throw new St("S2 required BigInt support");this._cellId=t,this._level=Gl.getLevel(t)}Gl.fromToken=function(t){return new Gl(Gl.getIdFromToken(t))};Gl.isValidId=function(t){return!(t<=0||t>>BigInt(Xq)>5||!(t&~t+BigInt(1)&BigInt("0x1555555555555555")))};Gl.isValidToken=function(t){return/^[0-9a-fA-F]{1,16}$/.test(t)?Gl.isValidId(Gl.getIdFromToken(t)):!1};Gl.getIdFromToken=function(t){return BigInt("0x"+t+"0".repeat(16-t.length))};Gl.getTokenFromId=function(t){let e=Math.floor(h8t(t)/4),n=t.toString(16).replace(/0*$/,"");return Array(17-e-n.length).join("0")+n};Gl.getLevel=function(t){let e=0;for(;t!==BigInt(0)&&!(t&BigInt(1));)e++,t=t>>BigInt(1);return hA-(e>>1)};Gl.prototype.getChild=function(t){let e=jVt(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*t+1-4)*e;return new Gl(n)};Gl.prototype.getParent=function(){let t=jVt(this._cellId)<>1&1;return zVt(i[0],o[0][a^n&1],o[1][a])}function a8t(t,e){let n=KVt(t),i=n[0],o=n[1],a=n[2],s=e===30,l=!s&&(BigInt(o)^t>>BigInt(2))&BigInt(1),r=s?1:l?2:0,d=(o<<1)+r,m=(a<<1)+r;return[i,d,m]}function KVt(t){PVt.length===0&&d8t();let e=Number(t>>BigInt(Xq)),n=e&Bf,i=(1<=0;s--){let r=(1<<2*(s===7?hA-7*yf:yf))-1;n+=Number(t>>BigInt(s*2*yf+1)&BigInt(r))<<2,n=vVt[n];let d=s*yf;o+=n>>yf+2<>2&i)<=.5?1/3*(4*t*t-1):1/3*(1-4*(1-t)*(1-t))}function HVt(t){return 1/e8t*t}function l8t(t,e){let n=[[],[]],i=r8t(e);for(let o=0;o<2;++o){let a=t[o]&-i,s=a+i;n[o][0]=Fw(wVt(a)),n[o][1]=Fw(wVt(s))}return n}function r8t(t){return 1<>>0}function wVt(t){return 1/t8t*t}function Qf(t,e,n,i,o,a){if(t===yf){let s=(e<>1),n+(s[0]&1),i,o,a^fw[0]),Qf(t,e+(s[1]>>1),n+(s[1]&1),i,o+1,a^fw[1]),Qf(t,e+(s[2]>>1),n+(s[2]&1),i,o+2,a^fw[2]),Qf(t,e+(s[3]>>1),n+(s[3]&1),i,o+3,a^fw[3])}}function d8t(){Qf(0,0,0,0,0,0),Qf(0,0,0,Bf,0,Bf),Qf(0,0,0,NE,0,NE),Qf(0,0,0,Bf|NE,0,Bf|NE)}function jVt(t){return t&~t+BigInt(1)}function c8t(t){return BigInt(1)<>3,a=i%8;n+=t[o]>>a&1}return n}Object.defineProperties(Jq.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});Jq.prototype.getBit=function(t){if(c(this._constant))return this._constant;let e=t>>3,n=t%8;return(this._bitstream[e]>>n&1)===1};var yE=Jq;var xEn=R(W(),1);function zR(t){t=f(t,f.EMPTY_OBJECT);let e=t.metadataTable,n=t.class,i=t.entityId,o=t.propertyTableJson;this._class=n,this._metadataTable=e,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(zR.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});zR.prototype.hasProperty=function(t){return this._metadataTable.hasProperty(t)};zR.prototype.hasPropertyBySemantic=function(t){return this._metadataTable.hasPropertyBySemantic(t)};zR.prototype.getPropertyIds=function(t){return this._metadataTable.getPropertyIds(t)};zR.prototype.getProperty=function(t){return this._metadataTable.getProperty(this._entityId,t)};zR.prototype.setProperty=function(t,e){return this._metadataTable.setProperty(this._entityId,t,e)};zR.prototype.getPropertyBySemantic=function(t){return this._metadataTable.getPropertyBySemantic(this._entityId,t)};zR.prototype.setPropertyBySemantic=function(t,e){return this._metadataTable.setPropertyBySemantic(this._entityId,t,e)};var BE=zR;var JEn=R(W(),1);var Uw={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};Uw.getBranchingFactor=function(t){switch(t){case Uw.OCTREE:return 8;case Uw.QUADTREE:return 4}};var Al=Object.freeze(Uw);var KEn=R(W(),1);var OEn=R(W(),1);function Dr(){}Object.defineProperties(Dr.prototype,{class:{get:function(){Ut.throwInstantiationError()}}});Dr.prototype.hasProperty=function(t){Ut.throwInstantiationError()};Dr.prototype.hasPropertyBySemantic=function(t){Ut.throwInstantiationError()};Dr.prototype.getPropertyIds=function(t){Ut.throwInstantiationError()};Dr.prototype.getProperty=function(t){Ut.throwInstantiationError()};Dr.prototype.setProperty=function(t,e){Ut.throwInstantiationError()};Dr.prototype.getPropertyBySemantic=function(t){Ut.throwInstantiationError()};Dr.prototype.setPropertyBySemantic=function(t,e){Ut.throwInstantiationError()};Dr.hasProperty=function(t,e,n){if(c(e[t]))return!0;let i=n.properties;if(!c(i))return!1;let o=i[t];return!!(c(o)&&c(o.default))};Dr.hasPropertyBySemantic=function(t,e,n){let i=n.propertiesBySemantic;if(!c(i))return!1;let o=i[t];return c(o)};Dr.getPropertyIds=function(t,e,n){n=c(n)?n:[],n.length=0;for(let o in t)t.hasOwnProperty(o)&&c(t[o])&&n.push(o);let i=e.properties;if(c(i))for(let o in i)i.hasOwnProperty(o)&&!c(t[o])&&c(i[o].default)&&n.push(o);return n};Dr.getProperty=function(t,e,n){let i=n.properties[t],o=e[t];Array.isArray(o)&&(o=o.slice());let a=!0;if(o=i.handleNoData(o),!c(o)&&c(i.default))return o=be(i.default,!0),i.unpackVectorAndMatrixTypes(o,a);if(c(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,a)};Dr.setProperty=function(t,e,n,i){if(!c(n[t]))return!1;Array.isArray(e)&&(e=e.slice());let o,a=i.properties;return c(a)&&(o=a[t]),c(o)&&(e=o.packVectorAndMatrixTypes(e,!0),e=o.unapplyValueTransform(e),e=o.unnormalize(e)),n[t]=e,!0};Dr.getPropertyBySemantic=function(t,e,n){let i=n.propertiesBySemantic;if(!c(i))return;let o=i[t];if(c(o))return Dr.getProperty(o.id,e,n)};Dr.setPropertyBySemantic=function(t,e,n,i){let o=i.propertiesBySemantic;if(!c(o))return!1;let a=i.propertiesBySemantic[t];return c(a)?Dr.setProperty(a.id,e,n,i):!1};var Yi=Dr;function jR(t){t=f(t,f.EMPTY_OBJECT);let e=t.subtreeMetadata,n=t.class,i=c(e.properties)?e.properties:{};this._class=n,this._properties=i,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(jR.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});jR.prototype.hasProperty=function(t){return Yi.hasProperty(t,this._properties,this._class)};jR.prototype.hasPropertyBySemantic=function(t){return Yi.hasPropertyBySemantic(t,this._properties,this._class)};jR.prototype.getPropertyIds=function(t){return Yi.getPropertyIds(this._properties,this._class,t)};jR.prototype.getProperty=function(t){return Yi.getProperty(t,this._properties,this._class)};jR.prototype.setProperty=function(t,e){return Yi.setProperty(t,e,this._properties,this._class)};jR.prototype.getPropertyBySemantic=function(t){return Yi.getPropertyBySemantic(t,this._properties,this._class)};jR.prototype.setPropertyBySemantic=function(t,e){return Yi.setPropertyBySemantic(t,e,this._properties,this._class)};var Jk=jR;var LCn=R(W(),1);var BCn=R(W(),1);var tCn=R(W(),1);var Fn={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Fn.getMinimum=function(t){switch(t){case Fn.INT8:return-128;case Fn.UINT8:return 0;case Fn.INT16:return-32768;case Fn.UINT16:return 0;case Fn.INT32:return-2147483648;case Fn.UINT32:return 0;case Fn.INT64:return In.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Fn.UINT64:return In.supportsBigInt()?BigInt(0):0;case Fn.FLOAT32:return-34028234663852886e22;case Fn.FLOAT64:return-Number.MAX_VALUE}};Fn.getMaximum=function(t){switch(t){case Fn.INT8:return 127;case Fn.UINT8:return 255;case Fn.INT16:return 32767;case Fn.UINT16:return 65535;case Fn.INT32:return 2147483647;case Fn.UINT32:return 4294967295;case Fn.INT64:return In.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Fn.UINT64:return In.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Fn.FLOAT32:return 34028234663852886e22;case Fn.FLOAT64:return Number.MAX_VALUE}};Fn.isIntegerType=function(t){switch(t){case Fn.INT8:case Fn.UINT8:case Fn.INT16:case Fn.UINT16:case Fn.INT32:case Fn.UINT32:case Fn.INT64:case Fn.UINT64:return!0;default:return!1}};Fn.isUnsignedIntegerType=function(t){switch(t){case Fn.UINT8:case Fn.UINT16:case Fn.UINT32:case Fn.UINT64:return!0;default:return!1}};Fn.isVectorCompatible=function(t){switch(t){case Fn.INT8:case Fn.UINT8:case Fn.INT16:case Fn.UINT16:case Fn.INT32:case Fn.UINT32:case Fn.FLOAT32:case Fn.FLOAT64:return!0;default:return!1}};Fn.normalize=function(t,e){return Math.max(Number(t)/Number(Fn.getMaximum(e)),-1)};Fn.unnormalize=function(t,e){let n=Fn.getMaximum(e),i=Fn.isUnsignedIntegerType(e)?0:-n;return t=k.sign(t)*Math.round(Math.abs(t)*Number(n)),(e===Fn.INT64||e===Fn.UINT64)&&In.supportsBigInt()&&(t=BigInt(t)),t>n?n:t1;if(!n&&o===1)return t;if(!n)return new Array(o).fill(t);if(!a)return new Array(i).fill(t);if(!e)return new Array(this._arrayLength*o).fill(t);let s=new Array(o).fill(t);return new Array(this._arrayLength).fill(s)};Zd.prototype.handleNoData=function(t){let e=this._noData;if(!c(e))return t;if(!ebt(t,e))return t};function ebt(t,e){if(!Array.isArray(t))return t===e;if(!Array.isArray(e)||t.length!==e.length)return!1;for(let n=0;n1;return c(n)?e&&a?t.map(function(s){return n.unpack(s)}):i?n.unpackArray(t):n.unpack(t):t};Zd.prototype.packVectorAndMatrixTypes=function(t,e){e=f(e,!1);let n=Nn.getMathType(this._type),i=this._isArray,o=Nn.getComponentCount(this._type),a=i&&o>1;return c(n)?e&&a?t.map(function(s){return n.pack(s,[])}):i?n.packArray(t,[]):n.pack(t,[]):t};Zd.prototype.validate=function(t){if(!(!c(t)&&c(this._default)))return this._required&&!c(t)?"required property must have a value":this._isArray?b8t(this,t):nbt(this,t)};function b8t(t,e){if(!Array.isArray(e))return`value ${e} must be an array`;let n=e.length;if(!t._isVariableLengthArray&&n!==t._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i1?qVt(t,e,n):void 0}if(tvn.getMaximum(e))return qVt(t,e,n)}function tbt(t,e){return`value ${t} of type ${e} must be finite`}function Lq(t,e,n){if(!Array.isArray(t))return n(t,e);for(let i=0;i>3,i=t%8;return(e.typedArray[n]>>i&1)===1}function E8t(t,e,n){let i=t>>3,o=t%8;n?e.typedArray[i]|=1<0,s=!0;for(let l=0;l<8;++l){let r=n.getUint8(i+l);a&&(s?r!==0&&(r=~(r-1)&255,s=!1):r=~r&255),o+=r*Math.pow(256,l)}return a&&(o=-o),o}function I8t(t,e){let n=e.dataView,i=t*8,o=BigInt(0),a=(n.getUint8(i+7)&128)>0,s=!0;for(let l=0;l<8;++l){let r=n.getUint8(i+l);a&&(s?r!==0&&(r=~(r-1)&255,s=!1):r=~r&255),o+=BigInt(r)*(BigInt(1)<0;){let m=e.pop();if(v.equals(m.color,l.color))d=kq(n,s,d,i,o,m.batchIds,a),l.batchIds=l.batchIds.concat(m.batchIds),l.count=d-l.offset;else{let h=d;d=kq(n,s,d,i,o,m.batchIds,a),m.offset=h,m.count=d-h,r.push(m),l=m}}t._va.indexBuffer.copyFromArrayView(s),t._indices=s,t._batchedIndices=r}function Yq(t,e,n,i,o,a,s){let l=t.bytesPerIndex,r=a.length;for(let d=0;d0;){let h=e.pop();if(v.equals(h.color,a.color))d=Yq(l,r,d,n,i,h.batchIds,o),a.batchIds=a.batchIds.concat(h.batchIds),a.count=d-a.offset;else{let u=d;d=Yq(l,r,d,n,i,h.batchIds,o),h.offset=u,h.count=d-u,s.push(h),a=h}}let m=t._va;t._va=t._vaSwap,t._vaSwap=m,t._batchedIndices=s}function B4t(t,e){return e.color.toRgba()-t.color.toRgba()}function Q4t(t,e){if(!t._batchDirty)return!1;let n=t._batchedIndices,i=n.length,o=!1,a={};for(let s=0;s=F&&s{t.isDestroyed()||(t._error=V)}):void 0}}function z4t(t){c(t._primitive)||(t._primitive=new cA({batchTable:t._batchTable,positions:t._positions,batchIds:t._batchIds,vertexBatchIds:t._vertexBatchIds,indices:t._indices,indexOffsets:t._indexOffsets,indexCounts:t._indexCounts,batchedIndices:t._batchedIndices,boundingVolume:t._boundingVolume,boundingVolumes:t._boundingVolumes,center:t._center,pickObject:f(t._pickObject,t)}),t._boxes=void 0,t._boxBatchIds=void 0,t._cylinders=void 0,t._cylinderBatchIds=void 0,t._ellipsoids=void 0,t._ellipsoidBatchIds=void 0,t._spheres=void 0,t._sphereBatchIds=void 0,t._center=void 0,t._modelMatrix=void 0,t._batchTable=void 0,t._boundingVolume=void 0,t._boundingVolumes=void 0,t._batchedIndices=void 0,t._indices=void 0,t._indexOffsets=void 0,t._indexCounts=void 0,t._positions=void 0,t._vertexBatchIds=void 0,t._batchIds=void 0,t._batchTableColors=void 0,t._packedBuffer=void 0,t._verticesPromise=void 0)}Ch.prototype.createFeatures=function(t,e){this._primitive.createFeatures(t,e)};Ch.prototype.applyDebugSettings=function(t,e){this._primitive.applyDebugSettings(t,e)};Ch.prototype.applyStyle=function(t,e){this._primitive.applyStyle(t,e)};Ch.prototype.updateCommands=function(t,e){this._primitive.updateCommands(t,e)};Ch.prototype.update=function(t){if(!this._ready){if(c(this._promise)||(this._promise=K4t(this)),c(this._error)){let e=this._error;throw this._error=void 0,e}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(t)};Ch.prototype.isDestroyed=function(){return!1};Ch.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};var vb=Ch;function KZ(t,e,n,i,o){this._tileset=t,this._tile=e,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,$4t(this,i,o)}Object.defineProperties(KZ.prototype,{featuresLength:{get:function(){return c(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return c(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return c(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return c(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(t){this._metadata=t}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(t){this._group=t}}});function j4t(t){return function(e,n){c(t._geometries)&&t._geometries.updateCommands(e,n)}}function q4t(t,e){let n,i,o,a,s,l=f(t.BOXES_LENGTH,0),r=f(t.CYLINDERS_LENGTH,0),d=f(t.ELLIPSOIDS_LENGTH,0),m=f(t.SPHERES_LENGTH,0);if(l>0&&c(t.BOX_BATCH_IDS)){let V=e.byteOffset+t.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(e.buffer,V,l)}if(r>0&&c(t.CYLINDER_BATCH_IDS)){let V=e.byteOffset+t.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(e.buffer,V,r)}if(d>0&&c(t.ELLIPSOID_BATCH_IDS)){let V=e.byteOffset+t.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(e.buffer,V,d)}if(m>0&&c(t.SPHERE_BATCH_IDS)){let V=e.byteOffset+t.SPHERE_BATCH_IDS.byteOffset;a=new Uint16Array(e.buffer,V,m)}let h=c(n)||c(i)||c(o)||c(a),u=l>0&&!c(n)||r>0&&!c(i)||d>0&&!c(o)||m>0&&!c(a);if(h&&u)throw new Tt("If one group of batch ids is defined, then all batch ids must be defined");if(!c(n)&&!c(i)&&!c(o)&&!c(a)){let V=0;if(!c(n)&&l>0)for(n=new Uint16Array(l),s=0;s0)for(i=new Uint16Array(r),s=0;s0)for(o=new Uint16Array(d),s=0;s0)for(a=new Uint16Array(m),s=0;s0&&(R=ts(i,n,d),n+=d,m>0&&(V=new Uint8Array(e,n,m),V=new Uint8Array(V)));let F=f(h.BOXES_LENGTH,0),U=f(h.CYLINDERS_LENGTH,0),G=f(h.ELLIPSOIDS_LENGTH,0),A=f(h.SPHERES_LENGTH,0),S=F+U+G+A,g=new wb(t,S,R,V,j4t(t));if(t._batchTable=g,S===0)return;let C=t.tile.computedTransform,y;c(h.RTC_CENTER)&&(y=p.unpack(h.RTC_CENTER),L.multiplyByPoint(C,y,y));let Y=q4t(h,u);if(F>0||U>0||G>0||A>0){let Q,J,M,Z;if(F>0){let E=u.byteOffset+h.BOXES.byteOffset;Q=new Float32Array(u.buffer,E,vb.packedBoxLength*F)}if(U>0){let E=u.byteOffset+h.CYLINDERS.byteOffset;J=new Float32Array(u.buffer,E,vb.packedCylinderLength*U)}if(G>0){let E=u.byteOffset+h.ELLIPSOIDS.byteOffset;M=new Float32Array(u.buffer,E,vb.packedEllipsoidLength*G)}if(A>0){let E=u.byteOffset+h.SPHERES.byteOffset;Z=new Float32Array(u.buffer,E,vb.packedSphereLength*A)}return t._geometries=new vb({boxes:Q,boxBatchIds:Y.boxes,cylinders:J,cylinderBatchIds:Y.cylinders,ellipsoids:M,ellipsoidBatchIds:Y.ellipsoids,spheres:Z,sphereBatchIds:Y.spheres,center:y,modelMatrix:C,batchTable:g,boundingVolume:t.tile.boundingVolume.boundingVolume}),t}return Promise.resolve(t)}function DZt(t){let e=t.featuresLength;if(!c(t._features)&&e>0){let n=new Array(e);c(t._geometries)&&t._geometries.createFeatures(t,n),t._features=n}}KZ.prototype.hasProperty=function(t,e){return this._batchTable.hasProperty(t,e)};KZ.prototype.getFeature=function(t){return DZt(this),this._features[t]};KZ.prototype.applyDebugSettings=function(t,e){c(this._geometries)&&this._geometries.applyDebugSettings(t,e)};KZ.prototype.applyStyle=function(t){DZt(this),c(this._geometries)&&this._geometries.applyStyle(t,this._features)};KZ.prototype.update=function(t,e){c(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(e)),c(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(t,e),this._ready=!0)};KZ.prototype.pick=function(t,e,n){};KZ.prototype.isDestroyed=function(){return!1};KZ.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),At(this)};var X2=KZ;var zkn=b(W(),1);var bEn=b(W(),1);var xq={};xq.encode2D=function(t,e,n){let i=Math.pow(2,t),o={x:e,y:n},a,s,l,r=BigInt(0);for(l=i/2;l>0;l/=2)a=(o.x&l)>0?1:0,s=(o.y&l)>0?1:0,r+=BigInt((3*a^s)*l*l),OZt(i,o,a,s);return r};xq.decode2D=function(t,e){let n=Math.pow(2,t),i={x:0,y:0},o,a,s,l;for(s=1,l=e;s>>0,Xq=2*hA+1,yf=4,PZt=[],vZt=[],n8t=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],Bf=1,NE=2,fw=[Bf,0,0,Bf|NE];function Gl(t){if(!In.supportsBigInt())throw new Tt("S2 required BigInt support");this._cellId=t,this._level=Gl.getLevel(t)}Gl.fromToken=function(t){return new Gl(Gl.getIdFromToken(t))};Gl.isValidId=function(t){return!(t<=0||t>>BigInt(Xq)>5||!(t&~t+BigInt(1)&BigInt("0x1555555555555555")))};Gl.isValidToken=function(t){return/^[0-9a-fA-F]{1,16}$/.test(t)?Gl.isValidId(Gl.getIdFromToken(t)):!1};Gl.getIdFromToken=function(t){return BigInt("0x"+t+"0".repeat(16-t.length))};Gl.getTokenFromId=function(t){let e=Math.floor(h8t(t)/4),n=t.toString(16).replace(/0*$/,"");return Array(17-e-n.length).join("0")+n};Gl.getLevel=function(t){let e=0;for(;t!==BigInt(0)&&!(t&BigInt(1));)e++,t=t>>BigInt(1);return hA-(e>>1)};Gl.prototype.getChild=function(t){let e=jZt(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*t+1-4)*e;return new Gl(n)};Gl.prototype.getParent=function(){let t=jZt(this._cellId)<>1&1;return zZt(i[0],o[0][a^n&1],o[1][a])}function a8t(t,e){let n=KZt(t),i=n[0],o=n[1],a=n[2],s=e===30,l=!s&&(BigInt(o)^t>>BigInt(2))&BigInt(1),r=s?1:l?2:0,d=(o<<1)+r,m=(a<<1)+r;return[i,d,m]}function KZt(t){PZt.length===0&&d8t();let e=Number(t>>BigInt(Xq)),n=e&Bf,i=(1<=0;s--){let r=(1<<2*(s===7?hA-7*yf:yf))-1;n+=Number(t>>BigInt(s*2*yf+1)&BigInt(r))<<2,n=vZt[n];let d=s*yf;o+=n>>yf+2<>2&i)<=.5?1/3*(4*t*t-1):1/3*(1-4*(1-t)*(1-t))}function HZt(t){return 1/e8t*t}function l8t(t,e){let n=[[],[]],i=r8t(e);for(let o=0;o<2;++o){let a=t[o]&-i,s=a+i;n[o][0]=Fw(wZt(a)),n[o][1]=Fw(wZt(s))}return n}function r8t(t){return 1<>>0}function wZt(t){return 1/t8t*t}function Qf(t,e,n,i,o,a){if(t===yf){let s=(e<>1),n+(s[0]&1),i,o,a^fw[0]),Qf(t,e+(s[1]>>1),n+(s[1]&1),i,o+1,a^fw[1]),Qf(t,e+(s[2]>>1),n+(s[2]&1),i,o+2,a^fw[2]),Qf(t,e+(s[3]>>1),n+(s[3]&1),i,o+3,a^fw[3])}}function d8t(){Qf(0,0,0,0,0,0),Qf(0,0,0,Bf,0,Bf),Qf(0,0,0,NE,0,NE),Qf(0,0,0,Bf|NE,0,Bf|NE)}function jZt(t){return t&~t+BigInt(1)}function c8t(t){return BigInt(1)<>3,a=i%8;n+=t[o]>>a&1}return n}Object.defineProperties(Jq.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});Jq.prototype.getBit=function(t){if(c(this._constant))return this._constant;let e=t>>3,n=t%8;return(this._bitstream[e]>>n&1)===1};var yE=Jq;var xEn=b(W(),1);function zb(t){t=f(t,f.EMPTY_OBJECT);let e=t.metadataTable,n=t.class,i=t.entityId,o=t.propertyTableJson;this._class=n,this._metadataTable=e,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(zb.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});zb.prototype.hasProperty=function(t){return this._metadataTable.hasProperty(t)};zb.prototype.hasPropertyBySemantic=function(t){return this._metadataTable.hasPropertyBySemantic(t)};zb.prototype.getPropertyIds=function(t){return this._metadataTable.getPropertyIds(t)};zb.prototype.getProperty=function(t){return this._metadataTable.getProperty(this._entityId,t)};zb.prototype.setProperty=function(t,e){return this._metadataTable.setProperty(this._entityId,t,e)};zb.prototype.getPropertyBySemantic=function(t){return this._metadataTable.getPropertyBySemantic(this._entityId,t)};zb.prototype.setPropertyBySemantic=function(t,e){return this._metadataTable.setPropertyBySemantic(this._entityId,t,e)};var BE=zb;var JEn=b(W(),1);var Uw={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};Uw.getBranchingFactor=function(t){switch(t){case Uw.OCTREE:return 8;case Uw.QUADTREE:return 4}};var Al=Object.freeze(Uw);var KEn=b(W(),1);var OEn=b(W(),1);function Dr(){}Object.defineProperties(Dr.prototype,{class:{get:function(){Ut.throwInstantiationError()}}});Dr.prototype.hasProperty=function(t){Ut.throwInstantiationError()};Dr.prototype.hasPropertyBySemantic=function(t){Ut.throwInstantiationError()};Dr.prototype.getPropertyIds=function(t){Ut.throwInstantiationError()};Dr.prototype.getProperty=function(t){Ut.throwInstantiationError()};Dr.prototype.setProperty=function(t,e){Ut.throwInstantiationError()};Dr.prototype.getPropertyBySemantic=function(t){Ut.throwInstantiationError()};Dr.prototype.setPropertyBySemantic=function(t,e){Ut.throwInstantiationError()};Dr.hasProperty=function(t,e,n){if(c(e[t]))return!0;let i=n.properties;if(!c(i))return!1;let o=i[t];return!!(c(o)&&c(o.default))};Dr.hasPropertyBySemantic=function(t,e,n){let i=n.propertiesBySemantic;if(!c(i))return!1;let o=i[t];return c(o)};Dr.getPropertyIds=function(t,e,n){n=c(n)?n:[],n.length=0;for(let o in t)t.hasOwnProperty(o)&&c(t[o])&&n.push(o);let i=e.properties;if(c(i))for(let o in i)i.hasOwnProperty(o)&&!c(t[o])&&c(i[o].default)&&n.push(o);return n};Dr.getProperty=function(t,e,n){let i=n.properties[t],o=e[t];Array.isArray(o)&&(o=o.slice());let a=!0;if(o=i.handleNoData(o),!c(o)&&c(i.default))return o=Re(i.default,!0),i.unpackVectorAndMatrixTypes(o,a);if(c(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,a)};Dr.setProperty=function(t,e,n,i){if(!c(n[t]))return!1;Array.isArray(e)&&(e=e.slice());let o,a=i.properties;return c(a)&&(o=a[t]),c(o)&&(e=o.packVectorAndMatrixTypes(e,!0),e=o.unapplyValueTransform(e),e=o.unnormalize(e)),n[t]=e,!0};Dr.getPropertyBySemantic=function(t,e,n){let i=n.propertiesBySemantic;if(!c(i))return;let o=i[t];if(c(o))return Dr.getProperty(o.id,e,n)};Dr.setPropertyBySemantic=function(t,e,n,i){let o=i.propertiesBySemantic;if(!c(o))return!1;let a=i.propertiesBySemantic[t];return c(a)?Dr.setProperty(a.id,e,n,i):!1};var Yi=Dr;function jb(t){t=f(t,f.EMPTY_OBJECT);let e=t.subtreeMetadata,n=t.class,i=c(e.properties)?e.properties:{};this._class=n,this._properties=i,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(jb.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});jb.prototype.hasProperty=function(t){return Yi.hasProperty(t,this._properties,this._class)};jb.prototype.hasPropertyBySemantic=function(t){return Yi.hasPropertyBySemantic(t,this._properties,this._class)};jb.prototype.getPropertyIds=function(t){return Yi.getPropertyIds(this._properties,this._class,t)};jb.prototype.getProperty=function(t){return Yi.getProperty(t,this._properties,this._class)};jb.prototype.setProperty=function(t,e){return Yi.setProperty(t,e,this._properties,this._class)};jb.prototype.getPropertyBySemantic=function(t){return Yi.getPropertyBySemantic(t,this._properties,this._class)};jb.prototype.setPropertyBySemantic=function(t,e){return Yi.setPropertyBySemantic(t,e,this._properties,this._class)};var J2=jb;var LCn=b(W(),1);var BCn=b(W(),1);var tCn=b(W(),1);var Fn={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Fn.getMinimum=function(t){switch(t){case Fn.INT8:return-128;case Fn.UINT8:return 0;case Fn.INT16:return-32768;case Fn.UINT16:return 0;case Fn.INT32:return-2147483648;case Fn.UINT32:return 0;case Fn.INT64:return In.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Fn.UINT64:return In.supportsBigInt()?BigInt(0):0;case Fn.FLOAT32:return-34028234663852886e22;case Fn.FLOAT64:return-Number.MAX_VALUE}};Fn.getMaximum=function(t){switch(t){case Fn.INT8:return 127;case Fn.UINT8:return 255;case Fn.INT16:return 32767;case Fn.UINT16:return 65535;case Fn.INT32:return 2147483647;case Fn.UINT32:return 4294967295;case Fn.INT64:return In.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Fn.UINT64:return In.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Fn.FLOAT32:return 34028234663852886e22;case Fn.FLOAT64:return Number.MAX_VALUE}};Fn.isIntegerType=function(t){switch(t){case Fn.INT8:case Fn.UINT8:case Fn.INT16:case Fn.UINT16:case Fn.INT32:case Fn.UINT32:case Fn.INT64:case Fn.UINT64:return!0;default:return!1}};Fn.isUnsignedIntegerType=function(t){switch(t){case Fn.UINT8:case Fn.UINT16:case Fn.UINT32:case Fn.UINT64:return!0;default:return!1}};Fn.isVectorCompatible=function(t){switch(t){case Fn.INT8:case Fn.UINT8:case Fn.INT16:case Fn.UINT16:case Fn.INT32:case Fn.UINT32:case Fn.FLOAT32:case Fn.FLOAT64:return!0;default:return!1}};Fn.normalize=function(t,e){return Math.max(Number(t)/Number(Fn.getMaximum(e)),-1)};Fn.unnormalize=function(t,e){let n=Fn.getMaximum(e),i=Fn.isUnsignedIntegerType(e)?0:-n;return t=k.sign(t)*Math.round(Math.abs(t)*Number(n)),(e===Fn.INT64||e===Fn.UINT64)&&In.supportsBigInt()&&(t=BigInt(t)),t>n?n:t1;if(!n&&o===1)return t;if(!n)return new Array(o).fill(t);if(!a)return new Array(i).fill(t);if(!e)return new Array(this._arrayLength*o).fill(t);let s=new Array(o).fill(t);return new Array(this._arrayLength).fill(s)};ud.prototype.handleNoData=function(t){let e=this._noData;if(!c(e))return t;if(!eRt(t,e))return t};function eRt(t,e){if(!Array.isArray(t))return t===e;if(!Array.isArray(e)||t.length!==e.length)return!1;for(let n=0;n1;return c(n)?e&&a?t.map(function(s){return n.unpack(s)}):i?n.unpackArray(t):n.unpack(t):t};ud.prototype.packVectorAndMatrixTypes=function(t,e){e=f(e,!1);let n=Nn.getMathType(this._type),i=this._isArray,o=Nn.getComponentCount(this._type),a=i&&o>1;return c(n)?e&&a?t.map(function(s){return n.pack(s,[])}):i?n.packArray(t,[]):n.pack(t,[]):t};ud.prototype.validate=function(t){if(!(!c(t)&&c(this._default)))return this._required&&!c(t)?"required property must have a value":this._isArray?R8t(this,t):nRt(this,t)};function R8t(t,e){if(!Array.isArray(e))return`value ${e} must be an array`;let n=e.length;if(!t._isVariableLengthArray&&n!==t._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i1?qZt(t,e,n):void 0}if(tvn.getMaximum(e))return qZt(t,e,n)}function tRt(t,e){return`value ${t} of type ${e} must be finite`}function Lq(t,e,n){if(!Array.isArray(t))return n(t,e);for(let i=0;i>3,i=t%8;return(e.typedArray[n]>>i&1)===1}function E8t(t,e,n){let i=t>>3,o=t%8;n?e.typedArray[i]|=1<0,s=!0;for(let l=0;l<8;++l){let r=n.getUint8(i+l);a&&(s?r!==0&&(r=~(r-1)&255,s=!1):r=~r&255),o+=r*Math.pow(256,l)}return a&&(o=-o),o}function I8t(t,e){let n=e.dataView,i=t*8,o=BigInt(0),a=(n.getUint8(i+7)&128)>0,s=!0;for(let l=0;l<8;++l){let r=n.getUint8(i+l);a&&(s?r!==0&&(r=~(r-1)&255,s=!1):r=~r&255),o+=BigInt(r)*(BigInt(1)<96?U-97:U>64?U-39:U+4}for(var G=0,F=0;F=3),r(n.exports.meshopt_spatialSortRemap,b,b.length/u,u*4)},encodeVertexBuffer:function(b,u,F){a(F>0&&F<=256),a(F%4==0);var U=n.exports.meshopt_encodeVertexBufferBound(u,F);return d(n.exports.meshopt_encodeVertexBuffer,U,b,u,F)},encodeIndexBuffer:function(b,u,F){a(F==2||F==4),a(u%3==0);var U=h(b,F),G=n.exports.meshopt_encodeIndexBufferBound(u,m(U)+1);return d(n.exports.meshopt_encodeIndexBuffer,G,U,u,4)},encodeIndexSequence:function(b,u,F){a(F==2||F==4);var U=h(b,F),G=n.exports.meshopt_encodeIndexSequenceBound(u,m(U)+1);return d(n.exports.meshopt_encodeIndexSequence,G,U,u,4)},encodeGltfBuffer:function(b,u,F,U){var G={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return a(G[U]),G[U](b,u,F)},encodeFilterOct:function(b,u,F,U){return a(F==4||F==8),a(U>=1&&U<=16),Z(n.exports.meshopt_encodeFilterOct,b,u,F,U,16)},encodeFilterQuat:function(b,u,F,U){return a(F==8),a(U>=4&&U<=16),Z(n.exports.meshopt_encodeFilterQuat,b,u,F,U,16)},encodeFilterExp:function(b,u,F,U,G){a(F>0&&F%4==0),a(U>=1&&U<=24);var A={Separate:0,SharedVector:1,SharedComponent:2};return Z(n.exports.meshopt_encodeFilterExp,b,u,F,U,F,G?A[G]:1)}}}();var aIn=R(W()),lbt=function(){var t="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?e:t,a,s=WebAssembly.instantiate(l(o),{}).then(function(G){a=G.instance,a.exports.__wasm_call_ctors()});function l(G){for(var A=new Uint8Array(G.length),T=0;T96?g-97:g>64?g-39:g+4}for(var C=0,T=0;T0?F(G,A,T,m[g],d[C]):s.then(function(){var y=new Uint8Array(G*A);return r(a,a.exports[m[g]],y,G,A,T,a.exports[d[C]]),y})}}}();var rIn=R(W()),sIn=function(){var t="b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb",e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(t),{}).then(function(u){n=u.instance,n.exports.__wasm_call_ctors()});function o(u){for(var F=new Uint8Array(u.length),U=0;U96?G-97:G>64?G-39:G+4}for(var A=0,U=0;U=3),a(G>=0&&G<=u.length),a(G%3==0),a(A>=0&&A<=1);for(var g=0,C=0;C<(T?T.length:0);++C)g|=b[T[C]];var y=u.BYTES_PER_ELEMENT==4?u:new Uint32Array(u),Y=d(n.exports.meshopt_simplify,y,u.length,F,F.length/U,U*4,G,A,g);return Y[0]=u instanceof Uint32Array?Y[0]:new u.constructor(Y[0]),Y},simplifyWithAttributes:function(u,F,U,G,A,T,g,C,y){a(this.useExperimentalFeatures),a(u instanceof Uint32Array||u instanceof Int32Array||u instanceof Uint16Array||u instanceof Int16Array),a(u.length%3==0),a(F instanceof Float32Array),a(F.length%U==0),a(U>=3),a(G instanceof Float32Array),a(G.length%A==0),a(A>=0),a(g>=0&&g<=u.length),a(g%3==0),a(C>=0&&C<=1),a(Array.isArray(T)),a(A>=T.length),a(T.length<=16);for(var Y=0,Q=0;Q<(y?y.length:0);++Q)Y|=b[y[Q]];var J=u.BYTES_PER_ELEMENT==4?u:new Uint32Array(u),M=m(n.exports.meshopt_simplifyWithAttributes,J,u.length,F,F.length/U,U*4,G,A*4,new Float32Array(T),g,C,Y);return M[0]=u instanceof Uint32Array?M[0]:new u.constructor(M[0]),M},getScale:function(u,F){return a(u instanceof Float32Array),a(u.length%F==0),a(F>=3),h(n.exports.meshopt_simplifyScale,u,u.length/F,F*4)},simplifyPoints:function(u,F,U,G,A,T){return a(this.useExperimentalFeatures),a(u instanceof Float32Array),a(u.length%F==0),a(F>=3),a(U>=0&&U<=u.length/F),G?(a(G instanceof Float32Array),a(G.length%A==0),a(A>=3),a(u.length/F==G.length/A),Z(n.exports.meshopt_simplifyPoints,u,u.length/F,F*4,G,A*4,T,U)):Z(n.exports.meshopt_simplifyPoints,u,u.length/F,F*4,void 0,0,0,U)}}}();function uA(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.bufferViewId,o=t.gltfResource,a=t.baseResource,s=t.cacheKey,l=n.bufferViews[i],r=l.buffer,d=l.byteOffset,m=l.byteLength,h=!1,Z,b,u,F;if(co(l,"EXT_meshopt_compression")){let G=l.extensions.EXT_meshopt_compression;r=G.buffer,d=f(G.byteOffset,0),m=G.byteLength,h=!0,Z=G.byteStride,b=G.count,u=G.mode,F=f(G.filter,"NONE")}let U=n.buffers[r];this._hasMeshopt=h,this._meshoptByteStride=Z,this._meshoptCount=b,this._meshoptMode=u,this._meshoptFilter=F,this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._buffer=U,this._bufferId=r,this._byteOffset=d,this._byteLength=m,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(uA.prototype=Object.create(Va.prototype),uA.prototype.constructor=uA);Object.defineProperties(uA.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function M8t(t){try{let e=_8t(t);if(t._bufferLoader=e,await e.load(),t.isDestroyed())return;let n=e.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+t._byteOffset,t._byteLength);if(t.unload(),t._typedArray=i,t._hasMeshopt){let o=t._meshoptCount,a=t._meshoptByteStride,s=new Uint8Array(o*a);lbt.decodeGltfBuffer(s,o,a,t._typedArray,t._meshoptMode,t._meshoptFilter),t._typedArray=s}return t._state=pn.READY,t}catch(e){if(t.isDestroyed())return;throw t.unload(),t._state=pn.FAILED,t.getError("Failed to load buffer view",e)}}uA.prototype.load=async function(){return c(this._promise)?this._promise:(this._state=pn.LOADING,this._promise=M8t(this),this._promise)};function _8t(t){let e=t._resourceCache,n=t._buffer;if(c(n.uri)){let o=t._baseResource.getDerivedResource({url:n.uri});return e.getExternalBufferLoader({resource:o})}return e.getEmbeddedBufferLoader({parentResource:t._gltfResource,bufferId:t._bufferId})}uA.prototype.unload=function(){c(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var QE=uA;var QIn=R(W(),1);var gIn=R(W(),1);function il(){}il._maxDecodingConcurrency=Math.max(In.hardwareConcurrency-1,1);il._decoderTaskProcessor=void 0;il._taskProcessorReady=!1;il._error=void 0;il._getDecoderTaskProcessor=function(){if(!c(il._decoderTaskProcessor)){let t=new $i("decodeDraco",il._maxDecodingConcurrency);t.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(e){e?il._taskProcessorReady=!0:il._error=new St("Draco decoder could not be initialized.")}).catch(e=>{il._error=e}),il._decoderTaskProcessor=t}return il._decoderTaskProcessor};il.decodePointCloud=function(t){let e=il._getDecoderTaskProcessor();if(c(il._error))throw il._error;if(il._taskProcessorReady)return e.scheduleTask(t,[t.buffer.buffer])};il.decodeBufferView=function(t){let e=il._getDecoderTaskProcessor();if(c(il._error))throw il._error;if(il._taskProcessorReady)return e.scheduleTask(t,[t.array.buffer])};var $R=il;function xf(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.draco,o=t.gltfResource,a=t.baseResource,s=t.cacheKey;this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._gltf=n,this._draco=i,this._cacheKey=s,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=pn.UNLOADED,this._promise=void 0,this._dracoError=void 0}c(Object.create)&&(xf.prototype=Object.create(Va.prototype),xf.prototype.constructor=xf);Object.defineProperties(xf.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function D8t(t){let e=t._resourceCache;try{let n=e.getBufferViewLoader({gltf:t._gltf,bufferViewId:t._draco.bufferView,gltfResource:t._gltfResource,baseResource:t._baseResource});return t._bufferViewLoader=n,await n.load(),t.isDestroyed()?void 0:(t._bufferViewTypedArray=n.typedArray,t._state=pn.PROCESSING,t)}catch(n){if(t.isDestroyed())return;rbt(t,n)}}xf.prototype.load=async function(){return c(this._promise)?this._promise:(this._state=pn.LOADING,this._promise=D8t(this),this._promise)};function rbt(t,e){throw t.unload(),t._state=pn.FAILED,t.getError("Failed to load Draco",e)}async function O8t(t,e){try{let n=await e;return t.isDestroyed()?void 0:(t.unload(),t._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},t._state=pn.READY,t._baseResource)}catch(n){if(t.isDestroyed())return;t._dracoError=n}}xf.prototype.process=function(t){if(this._state===pn.READY)return!0;if(this._state!==pn.PROCESSING||(c(this._dracoError)&&rbt(this,this._dracoError),!c(this._bufferViewTypedArray))||c(this._decodePromise))return!1;let e=this._draco,i=this._gltf.bufferViews,o=e.bufferView,a=i[o],s=e.attributes,l={array:new Uint8Array(this._bufferViewTypedArray),bufferView:a,compressedAttributes:s,dequantizeInShader:!0},r=$R.decodeBufferView(l);if(!c(r))return!1;this._decodePromise=O8t(this,r)};xf.prototype.unload=function(){c(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0};var kE=xf;var vIn=R(W(),1);var JIn=R(W(),1);function H8t(t){let e=t.uint8Array,n=t.format,i=t.request,o=f(t.flipY,!1),a=f(t.skipColorSpaceConversion,!1),s=new Blob([e],{type:n}),l;return te.supportsImageBitmapOptions().then(function(r){return r?Promise.resolve(te.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:a})):(l=window.URL.createObjectURL(s),new te({url:l,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:a}))}).then(function(r){return c(l)&&window.URL.revokeObjectURL(l),r}).catch(function(r){return c(l)&&window.URL.revokeObjectURL(l),Promise.reject(r)})}var ZA=H8t;function t0(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.imageId,o=t.gltfResource,a=t.baseResource,s=t.cacheKey,l=n.images[i],r=l.bufferView,d=l.uri;this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._gltf=n,this._bufferViewId=r,this._uri=d,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(t0.prototype=Object.create(Va.prototype),t0.prototype.constructor=t0);Object.defineProperties(t0.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});t0.prototype.load=function(){return c(this._promise)?this._promise:c(this._bufferViewId)?(this._promise=w8t(this),this._promise):(this._promise=P8t(this),this._promise)};function dbt(t){let e;return Array.isArray(t)&&(e=t.slice(1,t.length).map(function(n){return n.bufferView}),t=t[0]),{image:t,mipLevels:e}}async function w8t(t){t._state=pn.LOADING;let e=t._resourceCache;try{let n=e.getBufferViewLoader({gltf:t._gltf,bufferViewId:t._bufferViewId,gltfResource:t._gltfResource,baseResource:t._baseResource});if(t._bufferViewLoader=n,await n.load(),t.isDestroyed())return;let i=n.typedArray,o=await K8t(i);if(t.isDestroyed())return;let a=dbt(o);return t.unload(),t._image=a.image,t._mipLevels=a.mipLevels,t._state=pn.READY,t}catch(n){return t.isDestroyed()?void 0:cbt(t,n,"Failed to load embedded image")}}async function P8t(t){t._state=pn.LOADING;let e=t._baseResource,n=t._uri,i=e.getDerivedResource({url:n});try{let o=await j8t(i);if(t.isDestroyed())return;let a=dbt(o);return t.unload(),t._image=a.image,t._mipLevels=a.mipLevels,t._state=pn.READY,t}catch(o){return t.isDestroyed()?void 0:cbt(t,o,`Failed to load image: ${n}`)}}function cbt(t,e,n){return t.unload(),t._state=pn.FAILED,Promise.reject(t.getError(n,e))}function v8t(t){let e=t.subarray(0,2),n=t.subarray(0,4),i=t.subarray(8,12);if(e[0]===255&&e[1]===216)return"image/jpeg";if(e[0]===137&&e[1]===80)return"image/png";if(e[0]===171&&e[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new St("Image format is not recognized")}async function K8t(t){let e=v8t(t);if(e==="image/ktx2"){let n=new Uint8Array(t);return Fm(n)}return t0._loadImageFromTypedArray({uint8Array:t,format:e,flipY:!1,skipColorSpaceConversion:!0})}var z8t=/(^data:image\/ktx2)|(\.ktx2$)/i;function j8t(t){let e=t.getUrlComponent(!1,!0);return z8t.test(e)?Fm(t):t.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}t0.prototype.unload=function(){c(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};t0._loadImageFromTypedArray=ZA;var YE=t0;var r1n=R(W(),1);var zIn=R(W(),1),q8t={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},Vd=Object.freeze(q8t);function Xf(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.accessorId,o=t.gltfResource,a=t.baseResource,s=t.draco,l=t.cacheKey,r=f(t.asynchronous,!0),d=f(t.loadBuffer,!1),m=f(t.loadTypedArray,!1),h=n.accessors[i].componentType;this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._gltf=n,this._accessorId=i,this._indexDatatype=h,this._draco=s,this._cacheKey=l,this._asynchronous=r,this._loadBuffer=d,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(Xf.prototype=Object.create(Va.prototype),Xf.prototype.constructor=Xf);Object.defineProperties(Xf.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var $8t=new Dq;Xf.prototype.load=async function(){return c(this._promise)?this._promise:c(this._draco)?(this._promise=t6t(this),this._promise):(this._promise=e6t(this),this._promise)};async function t6t(t){t._state=pn.LOADING;let e=t._resourceCache;try{let n=e.getDracoLoader({gltf:t._gltf,draco:t._draco,gltfResource:t._gltfResource,baseResource:t._baseResource});return t._dracoLoader=n,await n.load(),t.isDestroyed()?void 0:(t._state=pn.LOADED,t)}catch(n){if(t.isDestroyed())return;_q(t,n)}}async function e6t(t){let e=t._gltf,n=t._accessorId,o=e.accessors[n].bufferView;t._state=pn.LOADING;let a=t._resourceCache;try{let s=a.getBufferViewLoader({gltf:e,bufferViewId:o,gltfResource:t._gltfResource,baseResource:t._baseResource});if(t._bufferViewLoader=s,await s.load(),t.isDestroyed())return;let l=s.typedArray;return t._typedArray=n6t(t,l),t._state=pn.PROCESSING,t}catch(s){if(t.isDestroyed())return;_q(t,s)}}function n6t(t,e){let n=t._gltf,i=t._accessorId,o=n.accessors[i],a=o.count,s=o.componentType,l=re.getSizeInBytes(s),r=e.buffer,d=e.byteOffset+o.byteOffset;if(d%l!==0){let h=a*l,Z=new Uint8Array(r,d,h);r=new Uint8Array(Z).buffer,d=0,Zr("index-buffer-unaligned",`The index array is not aligned to a ${l}-byte boundary.`)}let m;return s===re.UNSIGNED_BYTE?m=new Uint8Array(r,d,a):s===re.UNSIGNED_SHORT?m=new Uint16Array(r,d,a):s===re.UNSIGNED_INT&&(m=new Uint32Array(r,d,a)),m}function _q(t,e){throw t.unload(),t._state=pn.FAILED,t.getError("Failed to load index buffer",e)}function Dq(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}Dq.prototype.set=function(t,e,n){this.typedArray=t,this.indexDatatype=e,this.context=n};Dq.prototype.execute=function(){this.buffer=mbt(this.typedArray,this.indexDatatype,this.context)};function mbt(t,e,n){let i=we.createIndexBuffer({typedArray:t,context:n,usage:ce.STATIC_DRAW,indexDatatype:e});return i.vertexArrayDestroyable=!1,i}Xf.prototype.process=function(t){if(this._state===pn.READY)return!0;if(this._state!==pn.LOADED&&this._state!==pn.PROCESSING)return!1;let e=this._typedArray,n=this._indexDatatype;if(c(this._dracoLoader))try{this._dracoLoader.process(t)&&(e=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=e,n=it.fromTypedArray(e),this._indexDatatype=n)}catch(o){_q(this,o)}if(!c(e))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=$8t;if(o.set(e,n,t.context),!t.jobScheduler.execute(o,Vd.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=mbt(e,n,t.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?e:void 0,this._state=pn.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};Xf.prototype.unload=function(){c(this._buffer)&&this._buffer.destroy();let t=this._resourceCache;c(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&t.unload(this._bufferViewLoader),c(this._dracoLoader)&&t.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0};var xE=Xf;var WBn=R(W(),1);var B1n=R(W(),1);var m1n=R(W(),1);function i6t(t,e,n){if(n=f(n,!1),n){let i=t.indexOf(e);if(i>-1)return i}return t.push(e),t.length-1}var $l=i6t;var R1n=R(W(),1);var u1n=R(W(),1);function o6t(t,e){return c(t.extensionsUsed)&&t.extensionsUsed.indexOf(e)>=0}var Cs=o6t;function Qn(){}Qn.objectLegacy=function(t,e){if(c(t)){for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=e(i,n);if(c(o))return o}}};Qn.object=function(t,e){if(c(t)){let n=t.length;for(let i=0;i0)return i.byteStride}return it.getSizeInBytes(e.componentType)*Ih(e.type)}var Qm=s6t;function l6t(t){ne.accessor(t,function(n){c(n.bufferView)&&(n.byteOffset=f(n.byteOffset,0))}),ne.bufferView(t,function(n){c(n.buffer)&&(n.byteOffset=f(n.byteOffset,0))}),ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){if(i.mode=f(i.mode,pt.TRIANGLES),!c(i.material)){c(t.materials)||(t.materials=[]);let o={name:"default"};i.material=$l(t.materials,o)}})}),ne.accessorContainingVertexAttributeData(t,function(n){let i=t.accessors[n],o=i.bufferView;if(i.normalized=f(i.normalized,!1),c(o)){let a=t.bufferViews[o];a.byteStride=Qm(t,i),a.target=pt.ARRAY_BUFFER}}),ne.accessorContainingIndexData(t,function(n){let o=t.accessors[n].bufferView;if(c(o)){let a=t.bufferViews[o];a.target=pt.ELEMENT_ARRAY_BUFFER}}),ne.material(t,function(n){let i=f(n.extensions,f.EMPTY_OBJECT),o=i.KHR_materials_common;if(c(o)){let r=o.technique,d=c(o.values)?o.values:{};o.values=d,d.ambient=c(d.ambient)?d.ambient:[0,0,0,1],d.emission=c(d.emission)?d.emission:[0,0,0,1],d.transparency=f(d.transparency,1),r!=="CONSTANT"&&(d.diffuse=c(d.diffuse)?d.diffuse:[0,0,0,1],r!=="LAMBERT"&&(d.specular=c(d.specular)?d.specular:[0,0,0,1],d.shininess=f(d.shininess,0))),o.transparent=f(o.transparent,!1),o.doubleSided=f(o.doubleSided,!1);return}n.emissiveFactor=f(n.emissiveFactor,[0,0,0]),n.alphaMode=f(n.alphaMode,"OPAQUE"),n.doubleSided=f(n.doubleSided,!1),n.alphaMode==="MASK"&&(n.alphaCutoff=f(n.alphaCutoff,.5));let a=i.KHR_techniques_webgl;c(a)&&ne.materialValue(n,function(r){c(r.index)&&VA(r)}),VA(n.emissiveTexture),VA(n.normalTexture),VA(n.occlusionTexture);let s=n.pbrMetallicRoughness;c(s)&&(s.baseColorFactor=f(s.baseColorFactor,[1,1,1,1]),s.metallicFactor=f(s.metallicFactor,1),s.roughnessFactor=f(s.roughnessFactor,1),VA(s.baseColorTexture),VA(s.metallicRoughnessTexture));let l=i.KHR_materials_pbrSpecularGlossiness;c(l)&&(l.diffuseFactor=f(l.diffuseFactor,[1,1,1,1]),l.specularFactor=f(l.specularFactor,[1,1,1]),l.glossinessFactor=f(l.glossinessFactor,1),VA(l.specularGlossinessTexture))}),ne.animation(t,function(n){ne.animationSampler(n,function(i){i.interpolation=f(i.interpolation,"LINEAR")})});let e=r6t(t);return ne.node(t,function(n,i){c(e[i])||c(n.translation)||c(n.rotation)||c(n.scale)?(n.translation=f(n.translation,[0,0,0]),n.rotation=f(n.rotation,[0,0,0,1]),n.scale=f(n.scale,[1,1,1])):n.matrix=f(n.matrix,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}),ne.sampler(t,function(n){n.wrapS=f(n.wrapS,pt.REPEAT),n.wrapT=f(n.wrapT,pt.REPEAT)}),c(t.scenes)&&!c(t.scene)&&(t.scene=0),t}function r6t(t){let e={};return ne.animation(t,function(n){ne.animationChannel(n,function(i){let o=i.target,a=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(e[a]=!0)})}),e}function VA(t){c(t)&&(t.texCoord=f(t.texCoord,0))}var _k=l6t;var x1n=R(W(),1);function d6t(t){return ne.shader(t,function(e){Aw(e)}),ne.buffer(t,function(e){Aw(e)}),ne.image(t,function(e){Aw(e)}),Aw(t),t}function Aw(t){t.extras=c(t.extras)?t.extras:{},t.extras._pipeline=c(t.extras._pipeline)?t.extras._pipeline:{}}var Jf=d6t;var $1n=R(W(),1);var O1n=R(W(),1);var L1n=R(W(),1);function c6t(t,e){let n=t.extensionsRequired;if(c(n)){let i=n.indexOf(e);i>=0&&n.splice(i,1),n.length===0&&delete t.extensionsRequired}}var Dk=c6t;function m6t(t,e){let n=t.extensionsUsed;if(c(n)){let i=n.indexOf(e);i>=0&&n.splice(i,1),Dk(t,e),n.length===0&&delete t.extensionsUsed}}var bA=m6t;var h6t=4;function p6t(t){if(mZ(t)!=="glTF")throw new St("File is not valid binary glTF");let n=hbt(t,0,5),i=n[1];if(i!==1&&i!==2)throw new St("Binary glTF version is not 1 or 2");return i===1?u6t(t,n):Z6t(t,n)}function hbt(t,e,n){let i=new DataView(t.buffer),o=new Array(n);for(let a=0;a0){let h=f(m.binary_glTF,m.KHR_binary_glTF);c(h)&&(h.extras._pipeline.source=d,delete h.uri)}return bA(r,"KHR_binary_glTF"),r}function Z6t(t,e){let n=e[2],i=12,o,a;for(;i0){let l=s[0];l.extras._pipeline.source=a}}return o}var Ok=p6t;var iNn=R(W(),1);function V6t(t){return ne.shader(t,function(e){Tw(e)}),ne.buffer(t,function(e){Tw(e)}),ne.image(t,function(e){Tw(e)}),Tw(t),t}function Tw(t){c(t.extras)&&(c(t.extras._pipeline)&&delete t.extras._pipeline,Object.keys(t.extras).length===0&&delete t.extras)}var Hk=V6t;var Xyn=R(W(),1);var lNn=R(W(),1);function b6t(t,e){let n=t.extensionsUsed;c(n)||(n=[],t.extensionsUsed=n),$l(n,e,!0)}var Xp=b6t;var bNn=R(W(),1);var cNn=R(W(),1);function R6t(t){switch(t){case it.BYTE:return function(e,n,i,o,a){for(let s=0;s-1:!1}var U6t=[pt.ZERO,pt.ONE,pt.SRC_COLOR,pt.ONE_MINUS_SRC_COLOR,pt.SRC_ALPHA,pt.ONE_MINUS_SRC_ALPHA,pt.DST_ALPHA,pt.ONE_MINUS_DST_ALPHA,pt.DST_COLOR,pt.ONE_MINUS_DST_COLOR];function G6t(t,e){if(!c(t))return e;for(let n=0;n<4;n++)if(U6t.indexOf(t[n])===-1)return e;return t}function A6t(t){let e={},n={},i=t.techniques;return c(i)&&(ne.technique(t,function(o,a){let s=o.states;if(c(s)){let l=n[a]={};if(pbt(s,pt.BLEND)){l.alphaMode="BLEND";let r=s.functions;c(r)&&(c(r.blendEquationSeparate)||c(r.blendFuncSeparate))&&(e[a]={blendEquation:f(r.blendEquationSeparate,f6t),blendFactors:G6t(r.blendFuncSeparate,F6t)})}pbt(s,pt.CULL_FACE)||(l.doubleSided=!0),delete o.states}}),Object.keys(e).length>0&&(c(t.extensions)||(t.extensions={}),Xp(t,"KHR_blend")),ne.material(t,function(o){if(c(o.technique)){let a=n[o.technique];ne.objectLegacy(a,function(l,r){o[r]=l});let s=e[o.technique];c(s)&&(c(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),t}var wk=A6t;var YNn=R(W(),1);var CNn=R(W(),1);function T6t(t,e){let n=t.extensionsRequired;c(n)||(n=[],t.extensionsRequired=n),$l(n,e,!0),Xp(t,e)}var Pk=T6t;function S6t(t){let e=t.techniques,n={},i={},o={};if(c(e)){let a={programs:[],shaders:[],techniques:[]},s=t.glExtensionsUsed;delete t.glExtensionsUsed,ne.technique(t,function(l,r){let d={name:l.name,program:void 0,attributes:{},uniforms:{}},m;if(ne.techniqueAttribute(l,function(h,Z){m=l.parameters[h],d.attributes[Z]={semantic:m.semantic}}),ne.techniqueUniform(l,function(h,Z){m=l.parameters[h],d.uniforms[Z]={count:m.count,node:m.node,type:m.type,semantic:m.semantic,value:m.value},c(n[r])||(n[r]={}),n[r][h]=Z}),c(o[l.program]))d.program=o[l.program];else{let h=t.programs[l.program],Z={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},b=t.shaders[h.fragmentShader];Z.fragmentShader=$l(a.shaders,b,!0);let u=t.shaders[h.vertexShader];Z.vertexShader=$l(a.shaders,u,!0),d.program=$l(a.programs,Z),o[l.program]=d.program}i[r]=$l(a.techniques,d)}),a.techniques.length>0&&(c(t.extensions)||(t.extensions={}),t.extensions.KHR_techniques_webgl=a,Xp(t,"KHR_techniques_webgl"),Pk(t,"KHR_techniques_webgl"))}return ne.material(t,function(a){if(c(a.technique)){let s={technique:i[a.technique]};ne.objectLegacy(a.values,function(l,r){c(s.values)||(s.values={});let d=n[a.technique][r];c(d)&&(s.values[d]=l)}),c(a.extensions)||(a.extensions={}),a.extensions.KHR_techniques_webgl=s}delete a.technique,delete a.values}),delete t.techniques,delete t.programs,delete t.shaders,t}var vk=S6t;var vNn=R(W(),1);var MNn=R(W(),1);function g6t(t,e){Xa.typeOf.object("material",t),Xa.defined("handler",e);let n=t.pbrMetallicRoughness;if(c(n)){if(c(n.baseColorTexture)){let o=n.baseColorTexture,a=e(o.index,o);if(c(a))return a}if(c(n.metallicRoughnessTexture)){let o=n.metallicRoughnessTexture,a=e(o.index,o);if(c(a))return a}}if(c(t.extensions)){let o=t.extensions.KHR_materials_pbrSpecularGlossiness;if(c(o)){if(c(o.diffuseTexture)){let s=o.diffuseTexture,l=e(s.index,s);if(c(l))return l}if(c(o.specularGlossinessTexture)){let s=o.specularGlossinessTexture,l=e(s.index,s);if(c(l))return l}}let a=t.extensions.KHR_materials_common;if(c(a)&&c(a.values)){let s=a.values.diffuse,l=a.values.ambient,r=a.values.emission,d=a.values.specular;if(c(s)&&c(s.index)){let m=e(s.index,s);if(c(m))return m}if(c(l)&&c(l.index)){let m=e(l.index,l);if(c(m))return m}if(c(r)&&c(r.index)){let m=e(r.index,r);if(c(m))return m}if(c(d)&&c(d.index)){let m=e(d.index,d);if(c(m))return m}}}let i=ne.materialValue(t,function(o){if(c(o.index)){let a=e(o.index,o);if(c(a))return a}});if(c(i))return i;if(c(t.emissiveTexture)){let o=t.emissiveTexture,a=e(o.index,o);if(c(a))return a}if(c(t.normalTexture)){let o=t.normalTexture,a=e(o.index,o);if(c(a))return a}if(c(t.occlusionTexture)){let o=t.occlusionTexture,a=e(o.index,o);if(c(a))return a}}var XE=g6t;var ubt=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function E6t(t,e){return e=f(e,ubt),ubt.forEach(function(n){e.indexOf(n)>-1&&I6t(t,n)}),t}var C6t={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function I6t(t,e){let n=C6t[e],i=t[n];if(c(i)){let o=0,a=jV[e](t),s=i.length;for(let l=0;le&&o.attributes[r]--}),ne.meshPrimitiveTarget(o,function(l){ne.meshPrimitiveTargetAttribute(l,function(r,d){r>e&&l[d]--})});let a=o.indices;c(a)&&a>e&&o.indices--;let s=o.extensions;c(s)&&c(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>e&&--s.CESIUM_primitive_outline.indices})}),ne.skin(t,function(i){c(i.inverseBindMatrices)&&i.inverseBindMatrices>e&&i.inverseBindMatrices--}),ne.animation(t,function(i){ne.animationSampler(i,function(o){c(o.input)&&o.input>e&&o.input--,c(o.output)&&o.output>e&&o.output--})})};zV.buffer=function(t,e){t.buffers.splice(e,1),ne.bufferView(t,function(i){c(i.buffer)&&i.buffer>e&&i.buffer--,c(i.extensions)&&c(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};zV.bufferView=function(t,e){if(t.bufferViews.splice(e,1),ne.accessor(t,function(i){c(i.bufferView)&&i.bufferView>e&&i.bufferView--}),ne.shader(t,function(i){c(i.bufferView)&&i.bufferView>e&&i.bufferView--}),ne.image(t,function(i){c(i.bufferView)&&i.bufferView>e&&i.bufferView--}),Cs(t,"KHR_draco_mesh_compression")&&ne.mesh(t,function(i){ne.meshPrimitive(i,function(o){c(o.extensions)&&c(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>e&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Cs(t,"EXT_feature_metadata")){let o=t.extensions.EXT_feature_metadata.featureTables;for(let a in o)if(o.hasOwnProperty(a)){let l=o[a].properties;if(c(l)){for(let r in l)if(l.hasOwnProperty(r)){let d=l[r];c(d.bufferView)&&d.bufferView>e&&d.bufferView--,c(d.arrayOffsetBufferView)&&d.arrayOffsetBufferView>e&&d.arrayOffsetBufferView--,c(d.stringOffsetBufferView)&&d.stringOffsetBufferView>e&&d.stringOffsetBufferView--}}}}if(Cs(t,"EXT_structural_metadata")){let o=t.extensions.EXT_structural_metadata.propertyTables;if(c(o)){let a=o.length;for(let s=0;se&&m.values--,c(m.arrayOffsets)&&m.arrayOffsets>e&&m.arrayOffsets--,c(m.stringOffsets)&&m.stringOffsets>e&&m.stringOffsets--}}}}};zV.image=function(t,e){t.images.splice(e,1),ne.texture(t,function(i){c(i.source)&&i.source>e&&--i.source;let o=i.extensions;c(o)&&c(o.EXT_texture_webp)&&o.EXT_texture_webp.source>e?--i.extensions.EXT_texture_webp.source:c(o)&&c(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>e&&--i.extensions.KHR_texture_basisu.source})};zV.mesh=function(t,e){t.meshes.splice(e,1),ne.node(t,function(i){c(i.mesh)&&(i.mesh>e?i.mesh--:i.mesh===e&&delete i.mesh)})};zV.node=function(t,e){t.nodes.splice(e,1),ne.skin(t,function(i){c(i.skeleton)&&i.skeleton>e&&i.skeleton--,i.joints=i.joints.map(function(o){return o>e?o-1:o})}),ne.animation(t,function(i){ne.animationChannel(i,function(o){c(o.target)&&c(o.target.node)&&o.target.node>e&&o.target.node--})}),ne.technique(t,function(i){ne.techniqueUniform(i,function(o){c(o.node)&&o.node>e&&o.node--})}),ne.node(t,function(i){c(i.children)&&(i.children=i.children.filter(function(o){return o!==e}).map(function(o){return o>e?o-1:o}))}),ne.scene(t,function(i){i.nodes=i.nodes.filter(function(o){return o!==e}).map(function(o){return o>e?o-1:o})})};zV.material=function(t,e){t.materials.splice(e,1),ne.mesh(t,function(i){ne.meshPrimitive(i,function(o){c(o.material)&&o.material>e&&o.material--})})};zV.sampler=function(t,e){t.samplers.splice(e,1),ne.texture(t,function(i){c(i.sampler)&&i.sampler>e&&--i.sampler})};zV.texture=function(t,e){if(t.textures.splice(e,1),ne.material(t,function(i){XE(i,function(o,a){a.index>e&&--a.index})}),Cs(t,"EXT_feature_metadata")){ne.mesh(t,function(a){ne.meshPrimitive(a,function(s){let l=s.extensions;if(c(l)&&c(l.EXT_feature_metadata)){let d=l.EXT_feature_metadata.featureIdTextures;if(c(d)){let m=d.length;for(let h=0;he&&--b.index}}}})});let o=t.extensions.EXT_feature_metadata.featureTextures;for(let a in o)if(o.hasOwnProperty(a)){let l=o[a].properties;if(c(l)){for(let r in l)if(l.hasOwnProperty(r)){let m=l[r].texture;m.index>e&&--m.index}}}}if(Cs(t,"EXT_mesh_features")&&ne.mesh(t,function(i){ne.meshPrimitive(i,function(o){let a=o.extensions;if(c(a)&&c(a.EXT_mesh_features)){let l=a.EXT_mesh_features.featureIds;if(c(l)){let r=l.length;for(let d=0;de&&--m.texture.index}}}})}),Cs(t,"EXT_structural_metadata")){let o=t.extensions.EXT_structural_metadata.propertyTextures;if(c(o)){let a=o.length;for(let s=0;se&&--m.index}}}}};function jV(){}jV.accessor=function(t){let e={};return ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){ne.meshPrimitiveAttribute(i,function(a){e[a]=!0}),ne.meshPrimitiveTarget(i,function(a){ne.meshPrimitiveTargetAttribute(a,function(s){e[s]=!0})});let o=i.indices;c(o)&&(e[o]=!0)})}),ne.skin(t,function(n){c(n.inverseBindMatrices)&&(e[n.inverseBindMatrices]=!0)}),ne.animation(t,function(n){ne.animationSampler(n,function(i){c(i.input)&&(e[i.input]=!0),c(i.output)&&(e[i.output]=!0)})}),Cs(t,"EXT_mesh_gpu_instancing")&&ne.node(t,function(n){c(n.extensions)&&c(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];e[o]=!0})}),Cs(t,"CESIUM_primitive_outline")&&ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){let o=i.extensions;if(c(o)&&c(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;c(s)&&(e[s]=!0)}})}),e};jV.buffer=function(t){let e={};return ne.bufferView(t,function(n){c(n.buffer)&&(e[n.buffer]=!0),c(n.extensions)&&c(n.extensions.EXT_meshopt_compression)&&(e[n.extensions.EXT_meshopt_compression.buffer]=!0)}),e};jV.bufferView=function(t){let e={};if(ne.accessor(t,function(n){c(n.bufferView)&&(e[n.bufferView]=!0)}),ne.shader(t,function(n){c(n.bufferView)&&(e[n.bufferView]=!0)}),ne.image(t,function(n){c(n.bufferView)&&(e[n.bufferView]=!0)}),Cs(t,"KHR_draco_mesh_compression")&&ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){c(i.extensions)&&c(i.extensions.KHR_draco_mesh_compression)&&(e[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Cs(t,"EXT_feature_metadata")){let i=t.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(c(s)){for(let l in s)if(s.hasOwnProperty(l)){let r=s[l];c(r.bufferView)&&(e[r.bufferView]=!0),c(r.arrayOffsetBufferView)&&(e[r.arrayOffsetBufferView]=!0),c(r.stringOffsetBufferView)&&(e[r.stringOffsetBufferView]=!0)}}}}if(Cs(t,"EXT_structural_metadata")){let i=t.extensions.EXT_structural_metadata.propertyTables;if(c(i)){let o=i.length;for(let a=0;a0&&(e[n.mesh]=!0)}}),e};function Zbt(t,e,n){let i=t.nodes[e];return c(i.mesh)||c(i.camera)||c(i.skin)||c(i.weights)||c(i.extras)||c(i.extensions)&&Object.keys(i.extensions).length!==0||c(n[e])?!1:!c(i.children)||i.children.filter(function(o){return!Zbt(t,o,n)}).length===0}jV.node=function(t){let e={};return ne.skin(t,function(n){c(n.skeleton)&&(e[n.skeleton]=!0),ne.skinJoint(n,function(i){e[i]=!0})}),ne.animation(t,function(n){ne.animationChannel(n,function(i){c(i.target)&&c(i.target.node)&&(e[i.target.node]=!0)})}),ne.technique(t,function(n){ne.techniqueUniform(n,function(i){c(i.node)&&(e[i.node]=!0)})}),ne.node(t,function(n,i){Zbt(t,i,e)||(e[i]=!0)}),e};jV.material=function(t){let e={};return ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){c(i.material)&&(e[i.material]=!0)})}),e};jV.texture=function(t){let e={};if(ne.material(t,function(n){XE(n,function(i){e[i]=!0})}),Cs(t,"EXT_feature_metadata")){ne.mesh(t,function(o){ne.meshPrimitive(o,function(a){let s=a.extensions;if(c(s)&&c(s.EXT_feature_metadata)){let r=s.EXT_feature_metadata.featureIdTextures;if(c(r)){let d=r.length;for(let m=0;m0)for(s.mesh=n.meshes[r[0]],e=1;e0&&c(s.skin)){let m=t.skins[s.skin];m.skeleton=n.nodes[r[0]]}delete s.skeletons}c(s.jointName)&&delete s.jointName}),ne.skin(t,function(s){c(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let l=s.jointNames;if(c(l)){let r=[],d=l.length;for(e=0;e=0&&(l=a.substring(0,s),r=a.substring(s));let d,m=$6t[l];c(m)?(d=m+r,e[a]=d):c(q6t[l])||(d=`_${a}`,e[a]=d)}});for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o)){let a=e[o],s=i.attributes[o];c(s)&&(delete i.attributes[o],i.attributes[a]=s)}})}),ne.technique(t,function(n){ne.techniqueParameter(n,function(i){let o=e[i.semantic];c(o)&&(i.semantic=o)})})}function e7t(t){ne.camera(t,function(e){let n=e.perspective;if(c(n)){let i=n.aspectRatio;c(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;c(o)&&o===0&&(n.yfov=1)}})}function wq(t,e){return c(e.byteStride)&&e.byteStride!==0?e.byteStride:Qm(t,e)}function n7t(t){ne.buffer(t,function(e){c(e.byteLength)||(e.byteLength=e.extras._pipeline.source.length)}),ne.accessor(t,function(e){let n=e.bufferView;if(c(n)){let i=t.bufferViews[n],o=wq(t,e),a=e.byteOffset+e.count*o;i.byteLength=Math.max(f(i.byteLength,0),a)}})}function i7t(t){let e,n,i,o=t.bufferViews,a={};ne.accessorContainingVertexAttributeData(t,function(l){let r=t.accessors[l];c(r.bufferView)&&(a[r.bufferView]=!0)});let s={};ne.accessor(t,function(l){c(l.bufferView)&&(s[l.bufferView]=f(s[l.bufferView],[]),s[l.bufferView].push(l))});for(let l in s)if(Object.prototype.hasOwnProperty.call(s,l)){i=o[l];let r=s[l];r.sort(function(Z,b){return Z.byteOffset-b.byteOffset});let d=0,m=0,h=r.length;for(e=0;e=0;--a)if(i[a]===e){i.splice(a,1);return}}}),ne.node(t,function(n,i){if(c(n.children)){let o=n.children.indexOf(e);o>-1&&(n.children.splice(o,1),Wbt(n)&&fbt(t,i))}}),delete t.nodes[e]}function a7t(t){return ne.node(t,function(e,n){Wbt(e)&&fbt(t,n)}),t}function s7t(t){ne.animation(t,function(e){ne.animationSampler(e,function(n){let i=t.accessors[n.input];if(!c(i.min)||!c(i.max)){let o=RA(t,i);i.min=o.min,i.max=o.max}})})}function l7t(t){ne.accessor(t,function(e){if(c(e.min)||c(e.max)){let n=RA(t,e);c(e.min)&&(e.min=n.min),c(e.max)&&(e.max=n.max)}})}function r7t(t){t.asset=f(t.asset,{}),t.asset.version="2.0",Rbt(t),_6t(t),a7t(t),D6t(t),O6t(t),w6t(t),v6t(t),n7t(t),i7t(t),o7t(t),s7t(t),l7t(t),K6t(t),z6t(t),j6t(t),t7t(t),qk(t),e7t(t),wk(t),vk(t),H6t(t)}var d7t=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],c7t=["u_diffuse","u_diffuse_mat"];function Pq(t){t.pbrMetallicRoughness=c(t.pbrMetallicRoughness)?t.pbrMetallicRoughness:{},t.pbrMetallicRoughness.roughnessFactor=1,t.pbrMetallicRoughness.metallicFactor=0}function vq(t){return c(t.index)}function Kq(t){return Array.isArray(t)&&t.length===4}function Fbt(t){let e=new Array(4);e[3]=t[3];for(let n=0;n<3;n++){let i=t[n];i<=.04045?e[n]=t[n]*.07739938080495357:e[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return e}function m7t(t,e){e=f(e,f.EMPTY_OBJECT);let n=f(e.baseColorTextureNames,d7t),i=f(e.baseColorFactorNames,c7t);ne.material(t,function(o){ne.materialValue(o,function(a,s){n.indexOf(s)!==-1&&vq(a)?(Pq(o),o.pbrMetallicRoughness.baseColorTexture=a):i.indexOf(s)!==-1&&Kq(a)&&(Pq(o),o.pbrMetallicRoughness.baseColorFactor=Fbt(a))})}),WA(t,"KHR_techniques_webgl"),WA(t,"KHR_blend")}function Hq(t,e){c(e)&&(Kq(e)?t.pbrMetallicRoughness.baseColorFactor=Fbt(e):vq(e)&&(t.pbrMetallicRoughness.baseColorTexture=e))}function bbt(t,e){c(e)&&(Kq(e)?t.emissiveFactor=e.slice(0,3):vq(e)&&(t.emissiveTexture=e))}function h7t(t){ne.material(t,function(e){let n=f(e.extensions,f.EMPTY_OBJECT).KHR_materials_common;if(!c(n))return;let i=f(n.values,{}),o=i.ambient,a=i.diffuse,s=i.emission,l=i.transparency,r=n.doubleSided,d=n.transparent;Pq(e),n.technique==="CONSTANT"?(Xp(t,"KHR_materials_unlit"),e.extensions=c(e.extensions)?e.extensions:{},e.extensions.KHR_materials_unlit={},Hq(e,s),Hq(e,o)):(Hq(e,a),bbt(e,o),bbt(e,s)),c(r)&&(e.doubleSided=r),c(l)&&(c(e.pbrMetallicRoughness.baseColorFactor)?e.pbrMetallicRoughness.baseColorFactor[3]*=l:e.pbrMetallicRoughness.baseColorFactor=[1,1,1,l]),c(d)&&(e.alphaMode=d?"BLEND":"OPAQUE")}),WA(t,"KHR_materials_common")}var $k=Y6t;var tBn=R(W(),1);var Myn=R(W(),1);var mo={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID"};function p7t(t){switch(t){case mo.POSITION:return"positionMC";case mo.NORMAL:return"normalMC";case mo.TANGENT:return"tangentMC";case mo.TEXCOORD:return"texCoord";case mo.COLOR:return"color";case mo.JOINTS:return"joints";case mo.WEIGHTS:return"weights";case mo.FEATURE_ID:return"featureId"}}mo.hasSetIndex=function(t){switch(t){case mo.POSITION:case mo.NORMAL:case mo.TANGENT:return!1;case mo.TEXCOORD:case mo.COLOR:case mo.JOINTS:case mo.WEIGHTS:case mo.FEATURE_ID:return!0}};mo.fromGltfSemantic=function(t){let e=t,i=/^(\w+)_\d+$/.exec(t);switch(i!==null&&(e=i[1]),e){case"POSITION":return mo.POSITION;case"NORMAL":return mo.NORMAL;case"TANGENT":return mo.TANGENT;case"TEXCOORD":return mo.TEXCOORD;case"COLOR":return mo.COLOR;case"JOINTS":return mo.JOINTS;case"WEIGHTS":return mo.WEIGHTS;case"_FEATURE_ID":return mo.FEATURE_ID}};mo.fromPntsSemantic=function(t){switch(t){case"POSITION":case"POSITION_QUANTIZED":return mo.POSITION;case"RGBA":case"RGB":case"RGB565":return mo.COLOR;case"NORMAL":case"NORMAL_OCT16P":return mo.NORMAL;case"BATCH_ID":return mo.FEATURE_ID}};mo.getGlslType=function(t){switch(t){case mo.POSITION:case mo.NORMAL:case mo.TANGENT:return"vec3";case mo.TEXCOORD:return"vec2";case mo.COLOR:return"vec4";case mo.JOINTS:return"ivec4";case mo.WEIGHTS:return"vec4";case mo.FEATURE_ID:return"int"}};mo.getVariableName=function(t,e){let n=p7t(t);return c(e)&&(n+=`_${e}`),n};var sn=Object.freeze(mo);function wd(){}wd.getError=function(t,e,n){let i=`Failed to load ${t}: ${e}`;c(n)&&c(n.message)&&(i+=` -${n.message}`);let o=new St(i);return c(n)&&(o.stack=`Original stack: +${n.stack}`),n};Yf.prototype.isDestroyed=function(){return!1};Yf.prototype.destroy=function(){return this.unload(),At(this)};var Za=Yf;var vCn=b(W(),1),J8t={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},pn=Object.freeze(J8t);function qb(t){t=f(t,f.EMPTY_OBJECT);let e=t.typedArray,n=t.resource,i=t.cacheKey;this._typedArray=e,this._resource=n,this._cacheKey=i,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(qb.prototype=Object.create(Za.prototype),qb.prototype.constructor=qb);Object.defineProperties(qb.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});qb.prototype.load=async function(){return c(this._promise)?this._promise:c(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=L8t(this),this._promise)};async function L8t(t){let e=t._resource;t._state=pn.LOADING;try{let n=await qb._fetchArrayBuffer(e);return t.isDestroyed()?void 0:(t._typedArray=new Uint8Array(n),t._state=pn.READY,t)}catch(n){if(t.isDestroyed())return;t._state=pn.FAILED;let i=`Failed to load external buffer: ${e.url}`;throw t.getError(i,n)}}qb._fetchArrayBuffer=function(t){return t.fetchArrayBuffer()};qb.prototype.unload=function(){this._typedArray=void 0};var pA=qb;var FIn=b(W(),1);var cIn=b(W());var iIn=b(W()),eIn=function(){var t="b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:W;kekr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq:g9sLdbk;3keYu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRb:S:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9UhodndndndndnalTmbaoc;WFbGgecjdaecjd6Ehqcbhkdninakai9pmiaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndndndnaec9WGgsTmbcbhzcehHaPhOawhAxekdnaxTmbcbhAcehHaPhCinaDaAfRbbhXaDcjlfheaChoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkaraw9Ram6miawcbamzNjjjbgeTmiaCcefhCaeamfhwaAcefgAal6hHaAal9hmbxvkkaraw9Ram6mvawcbamzNjjjb8AceheinawgXamfhwalaegoSmldnaraw9Ram6mbaocefheawcbamzNjjjb8AaXmekkaoal6hHxekindnaxTmbaDazfRbbhXaDcjlfheaOhoaxhQinaeaoRbbgLaX9RgXcetaX;acr4786bbaoalfhoaecefheaLhXaQcufgQmbkkaraA9Ram6mearaAcbamzNjjjbgKamfgw9RcK6mdcbhYaDcjlfhAinaDcjlfaYfh8AcwhCczhLcehQindndnaQce9hmbcuhoa8ARbbmecbhodninaogecsSmeaecefhoaAaefcefRbbTmbkkcucbaecs6EhoxekaQcetc;:FFFeGhocuaQtcu7cFeGhXcbheinaoaXaAaefRbb9nfhoaecefgecz9hmbkkaoaLaoaL6geEhLaQaCaeEhCaQcetgQcw6mbkdndndndnaCcufPdiebkaKaYco4fgeaeRbbcdciaCclSEaYci4coGtV86bbaCcw9hmeawa8A8Pbb83bbawcwfa8Acwf8Pbb83bbawczfhwxdkaKaYco4fgeaeRbbceaYci4coGtV86bbkdncwaC9TgEmbinawcb86bbawcefhwxbkkcuaCtcu7h8Acbh3aAh5ina5heaEhQcbhoinaeRbbgLa8AcFeGgXaLaX6EaoaCtVhoaecefheaQcufgQmbkawao86bba5aEfh5awcefhwa3aEfg3cz6mbkcbheindnaAaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaYczfgYas9pmbaAczfhAaraw9RcL0mekkaYas6meawTmeaOcefhOazcefgzal6hHawhAazalSmixbkkcbhwaHceGTmexikcbhwaHceGmdkaDaPaxcufal2falz:tjjjb8AaxakfhkawmbkcbhoxokcbhoxvkaiTmekcbhoaraw9Ralcaalca0E6mialc8F9nmexdkcbhoaecufca6mdkawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9Rhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBd:S:kjjbk;rse3u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:C:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgoydbhLaocwfydbhKaoclfydbhYcbh8Adndninalc;abfavcsGcitfgoydlhEdndndnaoydbgoaL9hmbaEaYSmekdnaoaY9hmbaEaK9hmba8Acefh8AxekaoaK9hmeaEaL9hmea8Acdfh8Aka8Ac870mdaXcufhvada8AciGcx2goc:y1jjbfydbaCfcdtfydbhEadaocN1jjbfydbaCfcdtfydbhKadaoc:q1jjbfydbaCfcdtfydbhLcbhodnindnalavcsGcdtfydbaE9hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaEaOSgvaYce9iaYaH9oVgoGh3dndndndndncbcsavEaYaoEgvcs9hmbarce9imbaEaEaAaEcefaASgvEgAcefSmecmcsavEhvkasava8Acdtc;WeGV86bbavcs9hmeaEaA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbkaEhAxdkcPhvasa8AcdtcPV86bbaEhAkavTmbavaH9imekalaXcdtfaEBdbaXcefcsGhXkaOa3fhOalc;abfaQcitfgvaKBdlavaEBdbalc;abfaQcefcsGgvcitfgoaEBdlaoaLBdbavcefhoxikavcufhva8Aclfg8Ac;ab9hmbkkdnadceaKaOScetaYaOSEcx2gvc:q1jjbfydbaCfcdtfydbgLTadavcN1jjbfydbaCfcdtfydbg8AceSGadavc:y1jjbfydbaCfcdtfydbgYcdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhKxdkcuhKaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydbaY9hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaLaOSg8Efh3dndnaKcm0mbaKcefhKxekcbcsa8Aa3SgvEhKa3avfh3kdndnaEcm0mbaEcefhExekcbcsaYa3SgvEhEa3avfh3kc9:cua8EEh8FaEaKcltVhocbhvdndndninavcj1jjbfRbbaocFeGSmeavcefgvcz9hmbxdkka5aLaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeao86bbaecefhekdna8EmbaLaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaLhAkdnaKcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmbaYaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaYhAkalaXcdtfaLBdbaXcefcsGhvdndnaKPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfaYBdbavcefcsGhvkalc;abfaQcitfgoaLBdlaoa8ABdbalc;abfaQcefcsGcitfgoa8ABdlaoaYBdbalc;abfaQcdfcsGcitfgoaYBdlaoaLBdbaQcifhoavhXa3hOkascefhsaocsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:C:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:C:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;klld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicdfciGcdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk:Hvdxue998Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6mearcearce0EhwaohDinaDc:CuBdbaDclfhDawcufgwmbkaeTmiadcl6mdarcearce0EhqarcdthkalhxcbhminaohDaxhwaqhPinaDaDydbgsawydbgzcL4cFeGc:cufcbazEgzasaz9kEBdbawclfhwaDclfhDaPcufgPmbkaxakfhxamcefgmae9hmbkkaeTmdxekaeTmekavcb9hadcl6gqVhHarcearce0Ehkarcdthrceai9Rhmcbhdindndndnavce9hmbaqmdc:CuhwalhDakhPinawaDydbgscL4cFeGc:cufcbasEgsawas9kEhwaDclfhDaPcufgPmbxdkkc:CuhwaHmbaohDalhPakhsinaDaPydbgzcL4cFeGgxc8Aaxc8A9kEc:cufcbazEBdbaPclfhPaDclfhDascufgsmbkkaqmbcbhDakhsinawhPdnavceSmbaoaDfydbhPkdndnalaDfIdbgOcjjj;8iamaPfgPcLt9R::NJbbbZJbbb:;aOJbbbb9GEMgO:lJbbb9p9DTmbaO:Ohzxekcjjjj94hzkabaDfazcFFFrGaPcKtVBdbaDclfhDascufgsmbkkabarfhbalarfhladcefgdae9hmbkkaocjdf8KjjjjbkFkdCui998Jjjjjbc:Gd9Rgv8Kjjjjbavc:4efcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgoadcFFFFi0Ecbyd:K:kjjbHjjjjbbgeBd:4eavceBd:ydaeabaoz:tjjjb8Akavc:OefcwfcbBdbav9cb83i:Oeavc:Oefaeadaiavc:4efz:njjjbcuaicdtgraicFFFFi0Egwcbyd:K:kjjbHjjjjbbhoavc:4efavyd:ydgDcdtfaoBdbavaDcefgqBd:ydaoavyd:Oegkarz:tjjjbhxavc:4efaqcdtfadci9Ugmcbyd:K:kjjbHjjjjbbgoBdbavaDcdfgrBd:ydaocbamzNjjjbhPavc:4efarcdtfawcbyd:K:kjjbHjjjjbbgsBdbavaDcifgqBd:ydaxhoashrinaralIdbalaoydbgwcwawcw6Ecdtfc;ebfIdbMUdbaoclfhoarclfhraicufgimbkavc:4efaqcdtfcuamcdtadcFFFF970Ecbyd:K:kjjbHjjjjbbgqBdbavaDclfBd:yddnadci6mbamceamce0EhiaehoaqhrinarasaoydbcdtfIdbasaoclfydbcdtfIdbMasaocwfydbcdtfIdbMUdbaocxfhoarclfhraicufgimbkkavc;qbfhzavhoavyd:SehHavyd:WehOcbhwcbhrcbhAcehCinaohXcihQaearci2gLcdtfgocwfydbhdaoydbhDabaAcx2fgiclfaoclfydbgKBdbaiaDBdbaicwfadBdbaParfce86bbazadBdwazaKBdlazaDBdbaqarcdtfcbBdbdnawTmbcihQaXhiinazaQcdtfaiydbgoBdbaQaoaD9haoaK9hGaoad9hGfhQaiclfhiawcufgwmbkkaAcefhAaxaDcdtfgoaoydbcufBdbaxaKcdtfgoaoydbcufBdbaxadcdtfgoaoydbcufBdbcbhwinaOaHaeawaLfcdtfydbcdtgifydbcdtfgKhoakaifgDydbgdhidnadTmbdninaoydbarSmeaoclfhoaicufgiTmdxbkkaoadcdtaKfc98fydbBdbaDaDydbcufBdbkawcefgwci9hmbkdndndnaQTmbcuhrJbbbbhYcbhDavyd:SehKavyd:WehLindndnakazaDcdtfydbcdtgofydbgimbaDcefhDxekaDcs0hwasaofgdIdbh8AadalcbaDcefgDawEcdtfIdbalaxaofydbgwcwawcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEaicdthiaLaKaofydbcdtfhoinaqaoydbgwcdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYawaradEhraoclfhoaic98fgimbkkaDaQ9hmbkarcu9hmekaCam9pmeindnaPaCfRbbmbaChrxdkamaCcefgC9hmbxdkkaQczaQcz6EhwazhoaXhzarcu9hmekkavyd:ydhokaocdtavc:4effc98fhrdninaoTmearydbcbyd:G:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:Gdf8Kjjjjbk;UlevucuaicdtgvaicFFFFi0Egocbyd:K:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:K:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhwdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbawceawce0EhDabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;:kivuo99lu8Jjjjjbcj;Hb9Rgl8Kjjjjbcbhvalc1;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:K:kjjbHjjjjbbgrBd19GalceBd;O9Galcwfcbyd:m:kjjbBdbalcb8Pd:e:kjjb83ibalc;W;Gbfcwfcbyd:y:kjjbBdbalcb8Pd:q:kjjb83i;W9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;W;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;49GhDalIdlhkalId;09GhxalIdbhmalId;W9GhPkdndnadTmbJbbbbJbbjZaPam:tJbbbb:xgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhialaocbyd:K:kjjbHjjjjbbgzBd:m9GdnadTmbabhHinaHaiBdbaHclfhHadaicefgi9hmbkadTmbabhiadhHinalaraiydbgecdtfydbcFrGcx2fgvavydbgvcefBdbazavcdtfaeBdbaiclfhiaHcufgHmbkazhiadhHinalaraiydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaiclfhiaHcufgHmbkabhiadhHinalaraiydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwazavcdtfaeBdbaiclfhiaHcufgHmbkadTmbcbhiinabazydbcdtfaiBdbazclfhzadaicefgi9hmbkkclhidninaic98Smealc1;Gbfaifydbcbyd:G:kjjbH:bjjjbbaic98fhixbkkalcj;Hbf8Kjjjjbk9teiucbcbyd:O:kjjbgeabcifc98GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:O:kjjbgeabcrfc94GfgbBd:O:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:O:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:O:kjjbfgdBd:O:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:6ddbcjwk:Cdb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc:Cqkzebbbebbbdbbb8WWbb",e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(t),{}).then(function(R){n=R.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(R){for(var V=new Uint8Array(R.length),F=0;F96?U-97:U>64?U-39:U+4}for(var G=0,F=0;F=3),r(n.exports.meshopt_spatialSortRemap,R,R.length/V,V*4)},encodeVertexBuffer:function(R,V,F){a(F>0&&F<=256),a(F%4==0);var U=n.exports.meshopt_encodeVertexBufferBound(V,F);return d(n.exports.meshopt_encodeVertexBuffer,U,R,V,F)},encodeIndexBuffer:function(R,V,F){a(F==2||F==4),a(V%3==0);var U=h(R,F),G=n.exports.meshopt_encodeIndexBufferBound(V,m(U)+1);return d(n.exports.meshopt_encodeIndexBuffer,G,U,V,4)},encodeIndexSequence:function(R,V,F){a(F==2||F==4);var U=h(R,F),G=n.exports.meshopt_encodeIndexSequenceBound(V,m(U)+1);return d(n.exports.meshopt_encodeIndexSequence,G,U,V,4)},encodeGltfBuffer:function(R,V,F,U){var G={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return a(G[U]),G[U](R,V,F)},encodeFilterOct:function(R,V,F,U){return a(F==4||F==8),a(U>=1&&U<=16),u(n.exports.meshopt_encodeFilterOct,R,V,F,U,16)},encodeFilterQuat:function(R,V,F,U){return a(F==8),a(U>=4&&U<=16),u(n.exports.meshopt_encodeFilterQuat,R,V,F,U,16)},encodeFilterExp:function(R,V,F,U,G){a(F>0&&F%4==0),a(U>=1&&U<=24);var A={Separate:0,SharedVector:1,SharedComponent:2};return u(n.exports.meshopt_encodeFilterExp,R,V,F,U,F,G?A[G]:1)}}}();var aIn=b(W()),lRt=function(){var t="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;d8Yqdbk:yzeHu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhlaicefhodnadTmbalc;WFbGglcjdalcjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxdndndndnalc9WGgmTmbcbhPcehsawcjdfhzaohHinaraH9Rax6midnaraHaxfgo9RcK6mbczhlcbhOinalgic9WfgAawcj;cbffhldndndndndnaHaAco4fRbbaOcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgAco4gCaCciSgCE86bbawcj;cbfaifglcGfaoclfaCfgCRbbaAcl4ciGgXaXciSgXE86bbalcVfaCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc7faCaXfgCRbbaAciGgAaAciSgAE86bbalctfaCaAfgCRbbaoRbegAco4gXaXciSgXE86bbalc91faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc4faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc93faCaXfgCRbbaAciGgAaAciSgAE86bbalc94faCaAfgCRbbaoRbdgAco4gXaXciSgXE86bbalc95faCaXfgCRbbaAcl4ciGgXaXciSgXE86bbalc96faCaXfgCRbbaAcd4ciGgXaXciSgXE86bbalc97faCaXfgCRbbaAciGgAaAciSgAE86bbalc98faCaAfgARbbaoRbigoco4gCaCciSgCE86bbalc99faAaCfgARbbaocl4ciGgCaCciSgCE86bbalc9:faAaCfgARbbaocd4ciGgCaCciSgCE86bbalcufaAaCfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgAcl4gCaCcsSgCE86bbawcj;cbfaifglcGfaocwfaCfgCRbbaAcsGgAaAcsSgAE86bbalcVfaCaAfgARbbaoRbegCcl4gXaXcsSgXE86bbalc7faAaXfgARbbaCcsGgCaCcsSgCE86bbalctfaAaCfgARbbaoRbdgCcl4gXaXcsSgXE86bbalc91faAaXfgARbbaCcsGgCaCcsSgCE86bbalc4faAaCfgARbbaoRbigCcl4gXaXcsSgXE86bbalc93faAaXfgARbbaCcsGgCaCcsSgCE86bbalc94faAaCfgARbbaoRblgCcl4gXaXcsSgXE86bbalc95faAaXfgARbbaCcsGgCaCcsSgCE86bbalc96faAaCfgARbbaoRbvgCcl4gXaXcsSgXE86bbalc97faAaXfgARbbaCcsGgCaCcsSgCE86bbalc98faAaCfgARbbaoRbogCcl4gXaXcsSgXE86bbalc99faAaXfgARbbaCcsGgCaCcsSgCE86bbalc9:faAaCfgARbbaoRbrgocl4gCaCcsSgCE86bbalcufaAaCfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaOcdfhOaiczfhlarao9RcL0mekkaiam6miaoTmidnakTmbawaPfRbbhOawcj;cbfhlazhiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkkazcefhzaPcefgPad6hsaohHaPad9hmexvkkcbhoasceGmdxikaoaxad2fhXdnakTmbcbhmcehsawcjdfhCinarao9Rax6miaoTmdaoaxfhoawamfRbbhOawcj;cbfhlaChiakhAinaialRbbgHce4cbaHceG9R7aOfgO86bbaiadfhialcefhlaAcufgAmbkaCcefhCamcefgmad6hsamad9hmbkaXhoxikcbhlcehsinarao9Rax6mdaoTmeaoaxfhoalcefglad6hsadal9hmbkaXhoxdkcbhoasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekcbc99arao9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;xzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabaiavcdfciGfcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabaiavcufciGfcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabaiavciGfcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;b9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;e8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincbhHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAcd0hHalhOaAcefgAclSmdxekkcbhlaHceGTmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;tzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfalaDcu7gPcl4fcsGcitfgsydlhzasydbhHdnaDcsGgDak9pmbavaiaPfcsGcdtfydbaxaDEhsaDThDdndnadcd9hmbabarcetfgPaH87ebaPcdfaz87ebaPclfas87ebxekabarcdtfgPaHBdbaPclfazBdbaPcwfasBdbkaxaDfhxavc;abfalcitfgPasBdbaPazBdlavaicdtfasBdbavc;abfalcefcsGglcitfgPaHBdbaPasBdlaiaDfhialcefhlxdkdndnaDcsSmbamaDfaDc987fcefhmxekaocefhDao8SbbgscFeGhPdndnascu9mmbaDhoxekaocvfhoaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhokaPce4cbaPceG9R7amfhmkdndnadcd9hmbabarcetfgDaH87ebaDcdfaz87ebaDclfam87ebxekabarcdtfgDaHBdbaDclfazBdbaDcwfamBdbkavc;abfalcitfgDamBdbaDazBdlavaicdtfamBdbavc;abfalcefcsGglcitfgDaHBdbaDamBdlaicefhialcefhlxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHcdfaD87ebaHclfas87ebxekabarcdtfgHaxBdbaHclfaDBdbaHcwfasBdbkavaicdtfaxBdbavc;abfalcitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfalcefcsGcitfgHasBdbaHaDBdlavaiaPfcsGgicdtfasBdbavc;abfalcdfcsGglcitfgDaxBdbaDasBdlalcefhlaiaOfhiazaOfhxxekaxcbaoRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbaocefhDxekaocdfhDao8SbegPcFeGhsdnaPcu9kmbaocofhAascFbGhscrhodninaD8SbbgPcFbGaotasVhsaPcu9kmeaDcefhDaocrfgoc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbgocFeGhPdnaocu9kmbaDcvfhzaPcFbGhPcrhodninas8SbbgDcFbGaotaPVhPaDcu9kmeascefhsaocrfgoc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashoxekascefhoas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninao8SbbgscFbGaDtaPVhPascu9kmeaocefhoaDcrfgDc8J9hmbkaOhoxekaocefhokaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDcdfaz87ebaDclfaO87ebxekabarcdtfgDaABdbaDclfazBdbaDcwfaOBdbkavc;abfalcitfgDazBdbaDaABdlavaicdtfaABdbavc;abfalcefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfalcdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiarcifgrae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnaval9pmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?e:t,a,s=WebAssembly.instantiate(l(o),{}).then(function(G){a=G.instance,a.exports.__wasm_call_ctors()});function l(G){for(var A=new Uint8Array(G.length),S=0;S96?g-97:g>64?g-39:g+4}for(var C=0,S=0;S0?F(G,A,S,m[g],d[C]):s.then(function(){var y=new Uint8Array(G*A);return r(a,a.exports[m[g]],y,G,A,S,a.exports[d[C]]),y})}}}();var rIn=b(W()),sIn=function(){var t="b9H79Tebbbe9Ek9Geueu9Geub9Gbb9GPuuuuuuuuuuu99uueu9Gvuuuuub9Gluuuub9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuec:G;jekr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdxmq::9Usdbk;i6iKuY99Ou8Jjjjjbc;W;ab9RgP8KjjjjbaPcwfcbc;Kbz:ljjjb8AaPcualcefgscdtascFFFFi0Ecbyd1:jjjbHjjjjbbgzBdwaPceBd9OaPazBdbaPcuadcitadcFFFFe0Ecbyd1:jjjbHjjjjbbgHBdxaPcdBd9OaPaHBdlaPaeadalcbz:cjjjbaPcualcdtgOalcFFFFi0EgAcbyd1:jjjbHjjjjbbgCBdzaPciBd9OaPaAcbyd1:jjjbHjjjjbbgXBdCaPclBd9Oalcd4alfhQcehLinaLgscethLasaQ6mbkcbhKaPcuascdtgLascFFFFi0Ecbyd1:jjjbHjjjjbbgQBdKaPcvBd9OaQcFeaLz:ljjjbhYdnalTmbavcd4h8AascufhEinaiaKa8A2cdtfg3ydlgscH4as7c:F:b:DD2a3ydbgscH4as7c;D;O:B8J27a3ydwgscH4as7c:3F;N8N27hQcbhsdndninaYaQaEGgQcdtfg5ydbgLcuSmeaiaLa8A2cdtfa3cxz:ojjjbTmdascefgsaQfhQasaE9nmbxdkka5aKBdbaKhLkaCaKcdtfaLBdbaKcefgKal9hmbkcbhsaXhLinaLasBdbaLclfhLalascefgs9hmbkcbhsaChLaXhQindnasaLydbgESmbaQaXaEcdtfgEydbBdbaEasBdbkaLclfhLaQclfhQalascefgs9hmbkkcbh8EaYcbyd:m:jjjbH:bjjjbbaPclBd9OaPalcbyd1:jjjbHjjjjbbgEBdKaPcvBd9OaPaAcbyd1:jjjbHjjjjbbgsBd3aPcoBd9OaPaAcbyd1:jjjbHjjjjbbgLBdaaPcrBd9OascFeaOz:ljjjbh8FaLcFeaOz:ljjjbhadnalTmbaHcwfhhindnaza8EgQcefg8Ecdtfydbg3azaQcdtgsfydbgLSmba3aL9RhOaHaLcitfhgaaasfh8Ja8FasfhKcbh8Aindndnaga8Acitfydbg5aQ9hmbaKaQBdba8JaQBdbxekdnaza5cdtg8KfgsclfydbgLasydbgsSmbaHascitg3fydbaQSmeaLas9Rh8Lascu7aLfhYaha3fhLcbhsinaYasSmeascefhsaLydbh3aLcwfhLa3aQ9hmbkasa8L6mekaaa8KfgsaQa5asydbcuSEBdbaKa5aQaKydbcuSEBdbka8Acefg8AaO9hmbkka8Eal9hmbkaChLaXhQaah3a8Fh8AcbhsindndnasaLydbg59hmbdnasaQydbg59hmba8Aydbh5dna3ydbgYcu9hmba5cu9hmbaEasfcb86bbxikaEasfhKdnasaYSmbasa5SmbaKce86bbxikaKcl86bbxdkdnasaXa5cdtgYfydb9hmbdna3ydbgKcuSmbasaKSmba8AydbgOcuSmbasaOSmbaaaYfydbggcuSmbaga5Smba8FaYfydbgYcuSmbaYa5SmbdnaCaKcdtfydbaCaYcdtfydb9hmbaCaOcdtfydbaCagcdtfydb9hmbaEasfcd86bbxlkaEasfcl86bbxikaEasfcl86bbxdkaEasfcl86bbxekaEasfaEa5fRbb86bbkaLclfhLaQclfhQa3clfh3a8Aclfh8Aalascefgs9hmbkaxceGTmbaEhsalhLindnasRbbce9hmbascl86bbkascefhsaLcufgLmbkkcualcx2alc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8JaPcwfaPyd9Ogscdtfa8JBdbaPascefgOBd9Oa8Jaialavz:djjjbdndnaDmbcbhvxekcbh5aPcwfaOcdtfcuaDal2gLcdtaLcFFFFi0Ecbyd1:jjjbHjjjjbbgvBdbaPascdfgOBd9OalTmbarcd4cdthYaDcdthKavh8AinaohsawhLa8AhQaDh3inaQasIdbaLIdbNUdbasclfhsaLclfhLaQclfhQa3cufg3mbkaoaYfhoa8AaKfh8Aa5cefg5al9hmbkkaPcwfaOcdtfcualc8S2gsalc;D;O;f8U0EgQcbyd1:jjjbHjjjjbbgLBdbaPaOcefg3Bd9OaLcbasz:ljjjbh8EdndndnaDTmbaPcwfa3cdtfaQcbyd1:jjjbHjjjjbbgoBdbaPaOcdfgLBd9Oaocbasz:ljjjb8AaPcwfaLcdtfcuaDal2gscltgLascFFFFb0Ecbyd1:jjjbHjjjjbbgwBdbaPaOcifBd9OawcbaLz:ljjjb8AadmexdkcbhocbhwadTmekcbh8AaehLindna8JaLclfydbg5cx2fgsIdba8JaLydbgYcx2fgQIdbg8M:tg8Na8JaLcwfydbgKcx2fg3IdlaQIdlgy:tg8PNa3Idba8M:tgIasIdlay:tg8RN:tg8Sa8SNa8Ra3IdwaQIdwgR:tg8UNa8PasIdwaR:tg8RN:tg8Pa8PNa8RaINa8Ua8NN:tg8Na8NNMM:rgIJbbbb9ETmba8SaI:vh8Sa8NaI:vh8Na8PaI:vh8Pka8EaCaYcdtfydbc8S2fgsa8PaI:rgIa8PNNg8RasIdbMUdbasa8NaIa8NNg8VNg8UasIdlMUdlasa8SaIa8SNg8WNg8XasIdwMUdwasa8Va8PNg8VasIdxMUdxasa8Wa8PNg8YasIdzMUdzasa8Wa8NNg8WasIdCMUdCasa8PaIa8SaRNa8Pa8MNaya8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asa8Sa8MNg8SasIdaMUdaasa8MayNg8MasId8KMUd8KasaIasIdyMUdya8EaCa5cdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdya8EaCaKcdtfydbc8S2fgsa8RasIdbMUdbasa8UasIdlMUdlasa8XasIdwMUdwasa8VasIdxMUdxasa8YasIdzMUdzasa8WasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asa8SasIdaMUdaasa8MasId8KMUd8KasaIasIdyMUdyaLcxfhLa8Acifg8Aad6mbkcbh5aehYincbhLinaEaeaLc:G1jjbfydba5fcdtfydbgQfRbbhsdndnaEaYaLfydbg3fRbbg8Ac99fcFeGcpe0mbasceSmbascd9hmekdna8AcufcFeGce0mba8Fa3cdtfydbaQ9hmekdnascufcFeGce0mbaaaQcdtfydba39hmekdna8Acv2asfc:W1jjbfRbbTmbaCaQcdtfydbaCa3cdtfydb0mekJbbacJbbjZasceSEhIa8AceShOa8JaeaLc:K1jjbfydba5fcdtfydbcx2fhsdna8JaQcx2fg8AIdwa8Ja3cx2fgKIdwgy:tg8Pa8PNa8AIdbaKIdbgR:tg8Na8NNa8AIdlaKIdlg8R:tg8Sa8SNMM:rg8MJbbbb9ETmba8Pa8M:vh8Pa8Sa8M:vh8Sa8Na8M:vh8NkJbbacaIaOEh8WdnasIdway:tgIa8PaIa8PNasIdbaR:tg8Xa8NNa8SasIdla8R:tg8VNMMg8UN:tgIaINa8Xa8Na8UN:tg8Pa8PNa8Va8Sa8UN:tg8Na8NNMM:rg8SJbbbb9ETmbaIa8S:vhIa8Na8S:vh8Na8Pa8S:vh8Pka8EaCa3cdtfydbc8S2fgsa8Pa8Wa8MNg8Sa8PNNg8UasIdbMUdbasa8Na8Sa8NNg8WNg8XasIdlMUdlasaIa8SaINg8MNg8VasIdwMUdwasa8Wa8PNg8WasIdxMUdxasa8Ma8PNg8YasIdzMUdzasa8Ma8NNg8ZasIdCMUdCasa8Pa8SaIayNa8PaRNa8Ra8NNMM:mgyNg8MNg8PasIdKMUdKasa8Na8MNg8NasId3MUd3asaIa8MNgIasIdaMUdaasa8MayNg8MasId8KMUd8Kasa8SasIdyMUdya8EaCaQcdtfydbc8S2fgsa8UasIdbMUdbasa8XasIdlMUdlasa8VasIdwMUdwasa8WasIdxMUdxasa8YasIdzMUdzasa8ZasIdCMUdCasa8PasIdKMUdKasa8NasId3MUd3asaIasIdaMUdaasa8MasId8KMUd8Kasa8SasIdyMUdykaLclfgLcx9hmbkaYcxfhYa5cifg5ad6mbkaDTmbcbhYinJbbbbhRa8JaeaYcdtfgsclfydbgKcx2fgLIdwa8JasydbgOcx2fgQIdwg8V:tg8Na8NNaLIdbaQIdbg8Y:tgIaINaLIdlaQIdlg8Z:tg8Sa8SNMMg8Wa8Jascwfydbggcx2fgsIdwa8V:tg8MNa8Na8Na8MNaIasIdba8Y:tgyNa8SasIdla8Z:tg8RNMMg8PN:tJbbbbJbbjZa8Wa8Ma8MNayayNa8Ra8RNMMg8XNa8Pa8PN:tg8U:va8UJbbbb9BEg8UNh80a8Xa8NNa8Ma8PN:ta8UNh81a8Wa8RNa8Sa8PN:ta8UNhBa8Xa8SNa8Ra8PN:ta8UNh83a8WayNaIa8PN:ta8UNhUa8XaINaya8PN:ta8UNh85aIa8RNaya8SN:tg8Pa8PNa8Sa8MNa8Ra8NN:tg8Pa8PNa8NayNa8MaIN:tg8Pa8PNMM:r:rh8PavaOaD2cdtfhLavagaD2cdtfhQavaKaD2cdtfh3a8V:mh86a8Z:mh87a8Y:mh88cbh8AaDh5Jbbbbh8RJbbbbh8UJbbbbh8WJbbbbh8XJbbbbh8VJbbbbh8YJbbbbh8ZJbbbbh89Jbbbbh8:inaPc;Wbfa8Afgscwfa8Pa81a3IdbaLIdbg8M:tg8SNa80aQIdba8M:tgyNMg8NNUdbasclfa8Pa83a8SNaBayNMgINUdbasa8Pa85a8SNaUayNMg8SNUdbascxfa8Pa86a8NNa87aINa8Ma88a8SNMMMg8MNUdba8Pa8NaINNa8XMh8Xa8Pa8Na8SNNa8VMh8Va8PaIa8SNNa8YMh8Ya8Pa8Ma8MNNaRMhRa8Pa8Na8MNNa8RMh8Ra8PaIa8MNNa8UMh8Ua8Pa8Sa8MNNa8WMh8Wa8Pa8Na8NNNa8ZMh8Za8PaIaINNa89Mh89a8Pa8Sa8SNNa8:Mh8:aLclfhLa3clfh3aQclfhQa8Aczfh8Aa5cufg5mbkaoaCaOcdtfydbgLc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCaKcdtfydbgKc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyaoaCagcdtfydbgOc8S2fgsa8:asIdbMUdbasa89asIdlMUdlasa8ZasIdwMUdwasa8YasIdxMUdxasa8VasIdzMUdzasa8XasIdCMUdCasa8WasIdKMUdKasa8UasId3MUd3asa8RasIdaMUdaasaRasId8KMUd8Kasa8PasIdyMUdyawaLaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaKaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkawaOaD2cltfh5cbhLaDh3ina5aLfgsaPc;WbfaLfgQIdbasIdbMUdbasclfg8AaQclfIdba8AIdbMUdbascwfg8AaQcwfIdba8AIdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa3cufg3mbkaYcifgYad6mbkkdnabaeSmbabaeadcdtz:kjjjb8AkaPydbhZcbhsdnalTmbaZclfhsaZydbh3aEhLalh8AcbhQincbasydbg5a39RaLRbbcpeGEaQfhQaLcefhLasclfhsa5h3a8Acufg8AmbkaQce4hskcuadas9Rcifgrcx2arc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbh8LaPcwfaPyd9Ogscdtfa8LBdbaPascefgLBd9OaPcwfaLcdtfcuarcdtarcFFFFi0Ecbyd1:jjjbHjjjjbbgxBdbaPascdfgLBd9OaPcwfaLcdtfaAcbyd1:jjjbHjjjjbbgHBdbaPascifgLBd9OaPcwfaLcdtfalcbyd1:jjjbHjjjjbbgnBdbaPasclfBd9OJbbbbh8Ydnadaq9nmbdnarci6mbakakNh8VaDclthca8Lcwfh9cJbbbbh8YinaPabadghalaCz:cjjjbabhOcbhzcbhKincbhsindnaCaOasfydbgQcdtgYfydbg8AaCabasc;m1jjbfydbaKfcdtfydbgLcdtfydbg5SmbaEaLfRbbgecv2aEaQfRbbg3fc;G1jjbfRbbg8Ka3cv2aefggc;G1jjbfRbbgiVcFeGTmbdnagc:W1jjbfRbbTmba5a8A0mekdna3ae9hmba3cufcFeGce0mba8FaYfydbaL9hmeka8Lazcx2fg3aLaQaicFeGg8AEBdla3aQaLa8AEBdba3a8Aa8KGcb9hBdwazcefhzkasclfgscx9hmbkdnaKcifgKah9pmbaOcxfhOazcifar9nmekkdnazmbahhdxikcbheinJbbbbJbbjZa8EaCa8Laecx2fg3ydlg8Aa3ydbg5a3ydwgLEgKcdtfydbg8Kc8S2gifgsIdyg8P:va8PJbbbb9BEasIdwa8Ja5a8AaLEgYcx2fgLIdwg8SNasIdzaLIdbg8MNasIdaMg8Pa8PMMa8SNasIdlaLIdlgyNasIdCa8SNasId3Mg8Pa8PMMayNasIdba8MNasIdxayNasIdKMg8Pa8PMMa8MNasId8KMMM:lNh8WJbbbbJbbjZa8EaCa5cdtfydbgdc8S2gQfgsIdyg8P:va8PJbbbb9BEasIdwa8Ja8Acx2fgLIdwgINasIdzaLIdbgRNasIdaMg8Pa8PMMaINasIdlaLIdlg8RNasIdCaINasId3Mg8Pa8PMMa8RNasIdbaRNasIdxa8RNasIdKMg8Pa8PMMaRNasId8KMMM:lNh8Xa3cwfhOa3clfhgdnaDTmbaoaQfgQIdwaINaQIdzaRNaQIdaMg8Pa8PMMaINaQIdla8RNaQIdCaINaQId3Mg8Pa8PMMa8RNaQIdbaRNaQIdxa8RNaQIdKMg8Pa8PMMaRNaQId8KMMMh8Nava8AaD2cdtfhLawadaD2cltfhsaQIdyh8UaDhQinaLIdbg8PJbbb;aNascxfIdbaIascwfIdbNaRasIdbNa8RasclfIdbNMMMNa8Pa8PNa8UNa8NMMh8NaLclfhLasczfhsaQcufgQmbkaoaifgQIdwa8SNaQIdza8MNaQIdaMg8Pa8PMMa8SNaQIdlayNaQIdCa8SNaQId3Mg8Pa8PMMayNaQIdba8MNaQIdxayNaQIdKMg8Pa8PMMa8MNaQId8KMMMhIavaYaD2cdtfhLawa8KaD2cltfhsaQIdyhRaDhQinaLIdbg8PJbbb;aNascxfIdba8SascwfIdbNa8MasIdbNayasclfIdbNMMMNa8Pa8PNaRNaIMMhIaLclfhLasczfhsaQcufgQmbka8WaI:lMh8Wa8Xa8N:lMh8Xkaga8AaYa8Xa8W9FgsEBdba3a5aKasEBdbaOa8Xa8WasEUdbaecefgeaz9hmbkaPc;Wbfcbcj;abz:ljjjb8Aa9chsazhLinaPc;WbfasydbcO4c;8ZGfgQaQydbcefBdbascxfhsaLcufgLmbkcbhscbhLinaPc;WbfasfgQydbh3aQaLBdba3aLfhLasclfgscj;ab9hmbkcbhsa9chLinaPc;WbfaLydbcO4c;8ZGfgQaQydbgQcefBdbaxaQcdtfasBdbaLcxfhLazascefgs9hmbkahaq9RgQci9UhJdnalTmbcbhsaHhLinaLasBdbaLclfhLalascefgs9hmbkkcbh9eancbalz:ljjjbhTaQcO9UhSaJce4h9haPydlh9icbhicbhgdnina8Laxagcdtfydbcx2fgOIdwg8Na8V9EmeaiaJ9pmeJFFuuh8Pdna9haz9pmba8Laxa9hcdtfydbcx2fIdwJbb;aZNh8Pkdna8Na8P9ETmbaiaS0mdkdnaTaCaOydlg6cdtg9kfydbg3fg0RbbaTaCaOydbgKcdtg9mfydbg9nfg9oRbbVmbdnaZa9ncdtfgsclfydbgLasydbgsSmbaLas9Rh5a9iascitfhsa8Ja3cx2fgYcwfhdaYclfhAa8Ja9ncx2fg8Kcwfh9pa8Kclfh9qcbhLcehednindnaHasydbcdtfydbgQa3SmbaHasclfydbcdtfydbg8Aa3SmbaQa8ASmba8Ja8Acx2fg8AIdba8JaQcx2fgQIdbgI:tg8Pa9qIdbaQIdlg8S:tg8MNa8KIdbaI:tgya8AIdla8S:tg8NN:ta8PaAIdba8S:tgRNaYIdbaI:tg8Ra8NN:tNa8Na9pIdbaQIdwg8S:tg8UNa8Ma8AIdwa8S:tgIN:ta8NadIdba8S:tg8SNaRaIN:tNaIayNa8Ua8PN:taIa8RNa8Sa8PN:tNMMJbbbb9FmdkascwfhsaLcefgLa56hea5aL9hmbkkaeceGTmba9hcefh9hxeka8Ea3c8S2gQfgsa8Ea9nc8S2g8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdydnaDTmbaoaQfgsaoa8AfgLIdbasIdbMUdbasaLIdlasIdlMUdlasaLIdwasIdwMUdwasaLIdxasIdxMUdxasaLIdzasIdzMUdzasaLIdCasIdCMUdCasaLIdKasIdKMUdKasaLId3asId3MUd3asaLIdaasIdaMUdaasaLId8KasId8KMUd8KasaLIdyasIdyMUdyaca9n2heaca32hYawhLaDh8AinaLaYfgsaLaefgQIdbasIdbMUdbasclfg5aQclfIdba5IdbMUdbascwfg5aQcwfIdba5IdbMUdbascxfgsaQcxfIdbasIdbMUdbaLczfhLa8Acufg8AmbkkaOcwfhLdndndndnaEaKfgQRbbc9:fPdebdkaKhsinaHascdtgsfa3BdbaXasfydbgsaK9hmbxikkaXa9kfydbhsaXa9mfydbhKaHa9mfa6Bdbash6kaHaKcdtfa6Bdbka9oce86bba0ce86bbaLIdbg8Pa8Ya8Ya8P9DEh8Ya9ecefh9ececdaQRbbceSEaifhikagcefggaz9hmbkkdna9embahhdxikdnalTmbcbhLa8FhsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmba8Fa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkcbhLaahsindnasydbgQcuSmbdnaLaHaQcdtg3fydbgQ9hmbaaa3fydbhQkasaQBdbkasclfhsalaLcefgL9hmbkkcbhdabhscbh8AindnaHasydbcdtfydbgLaHasclfydbcdtfydbgQSmbaLaHascwfydbcdtfydbg3SmbaQa3Smbabadcdtfg5aLBdba5clfaQBdba5cwfa3Bdbadcifhdkascxfhsa8Acifg8Aah6mbkadaq9nmdxbkkaPabadalaCz:cjjjbkdnamTmbama8Y:rUdbkaPyd9OgscdtaPcwffc98fhCdninasTmeaCydbcbyd:m:jjjbH:bjjjbbaCc98fhCascufhsxbkkaPc;W;abf8Kjjjjbadk;:ieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbarcearce0EhdinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfheadcufgdmbkkabydbcbBdbk:Zldouv998Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdnadTmbaicd4hvdnabTmbavcdthocbhraehwinabarcx2fgiaearav2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinalczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawaofhwarcefgrad9hmbxdkkavcdthrcbhwincbhiinalczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbalaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbkkdnabTmbadTmbJbbbbJbbjZalIdbalIdzgk:tJbbbb:xgqalIdlalIdCgx:tgmamaq9DEgqalIdwalIdKgm:tgPaPaq9DEgq:vaqJbbbb9BEhqinabaqabIdbak:tNUdbabclfgiaqaiIdbax:tNUdbabcwfgiaqaiIdbam:tNUdbabcxfhbadcufgdmbkkk8KbabaeadaialavcbcbcbcbaoarawaDz:bjjjbk8KbabaeadaialavaoarawaDaqakaxamz:bjjjbk;lOowud99wue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcwfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:jjjbHjjjjbbgqBdwawceBd9Oaqaeadaiz:djjjbawcuadcdtadcFFFFi0Egkcbyd1:jjjbHjjjjbbgxBdxawcdBd9Oadcd4adfhmceheinaegicetheaiam6mbkcbhmawcuaicdtgPaicFFFFi0Ecbyd1:jjjbHjjjjbbgsBdzawciBd9Odndnar:Zgz:rJbbbZMgH:lJbbb9p9DTmbaH:Ohexekcjjjj94hekaicufhOc:bwhAcbhCcbhXadhQinaChLaeaAgKcufaeaK9iEamgDcefaeaD9kEhYdndnadTmbaYcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbh3cbh5indnaEaxa5cdtfydbgAcm4aA7c:v;t;h;Ev2gics4ai7aOGgmcdtfgCydbgecuSmbaeaASmbcehiinaEamaifaOGgmcdtfgCydbgecuSmeaicefhiaeaA9hmbkkaCaABdba3aecuSfh3a5cefg5ad9hmbxdkkascFeaPz:ljjjb8Acbh3kaDaYa3ar0giEhmaLa3aiEhCdna3arSmbaYaKaiEgAam9Rcd9imbdndnaXcl0mbdnaQ:ZgHaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa3:Zghaz:tNNNaHaz:taaNa8Aah:tNa8Aaz:ta8FNahaH:tNM:va8EMJbbbZMgH:lJbbb9p9DTmbaH:Ohexdkcjjjj94hexekamaAfcd9Theka3aQaiEhQaXcefgXcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd1:jjjbHjjjjbbg5BdCawclBd9OdndnadTmbamcuf:YhHaqhiaxheadhmindndnaiIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhAxekcjjjj94hAkaAcCthAdndnaiclfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcqtaAVhAdndnaicwfIdbaHNJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaeaAaCVBdbaicxfhiaeclfheamcufgmmbkascFeaPz:ljjjbhEcbhDcbh3inaxa3cdtgYfydbgAcm4aA7c:v;t;h;Ev2gics4ai7hecbhidndninaEaeaOGgmcdtfgCydbgecuSmednaxaecdtgCfydbaASmbaicefgiamfheaiaO9nmekka5aCfydbhixekaCa3BdbaDhiaDcefhDka5aYfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekascFeaPz:ljjjb8AcbhDcbhekawaecbyd1:jjjbHjjjjbbgeBdKawcvBd9Oaecbaiz:ljjjbhOavcd4hxdnadTmbaxcdth3a5hmalhAaqheadhEinaOamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaAc;81jjbalEgCIdbaiIdxMUdxaiaCIdlaiIdzMUdzaiaCIdwaiIdCMUdCaiaiIdKJbbjZMUdKamclfhmaAa3fhAaecxfheaEcufgEmbkkdnaDTmbaOcxfhiaDheinaictfgmamIdbJbbbbJbbjZaicxfIdbgH:vaHJbbbb9BEgHNUdbaic94fgmaHamIdbNUdbaic98fgmaHamIdbNUdbaiaHaiIdbNUdbaiclfgmaHamIdbNUdbaicwfgmaHamIdbNUdbaic3fhiaecufgembkkcbhAawcuaDcdtgYaDcFFFFi0Egicbyd1:jjjbHjjjjbbgeBd3awcoBd9Oawaicbyd1:jjjbHjjjjbbgEBdaaecFeaYz:ljjjbh3dnadTmbaoaoNh8Aaxcdthxalheina8Aaec;81jjbalEgmIdwaOa5ydbgCc32fgiIdC:tgHaHNamIdbaiIdx:tgHaHNamIdlaiIdz:tgHaHNMMNaqcwfIdbaiIdw:tgHaHNaqIdbaiIdb:tgHaHNaqclfIdbaiIdl:tgHaHNMMMhHdndna3aCcdtgifgmydbcuSmbaEaifIdbaH9ETmekamaABdbaEaifaHUdbka5clfh5aeaxfheaqcxfhqadaAcefgA9hmbkkaba3aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcwffydbcbyd:m:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Qdidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgoaDIdbgrarao9EEUdbaladfgDaoaDIdbgrarao9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkavJbbbb:xgvaoaoav9DEgoararao9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbeeebeebebbeeebebbbbbebebbbbbebbbdbbbbbbbbbbbbbbbeeeeebebbbbbebbbbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:G9Kbb",e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(t),{}).then(function(V){n=V.instance,n.exports.__wasm_call_ctors()});function o(V){for(var F=new Uint8Array(V.length),U=0;U96?G-97:G>64?G-39:G+4}for(var A=0,U=0;U=3),a(G>=0&&G<=V.length),a(G%3==0),a(A>=0&&A<=1);for(var g=0,C=0;C<(S?S.length:0);++C)g|=R[S[C]];var y=V.BYTES_PER_ELEMENT==4?V:new Uint32Array(V),Y=d(n.exports.meshopt_simplify,y,V.length,F,F.length/U,U*4,G,A,g);return Y[0]=V instanceof Uint32Array?Y[0]:new V.constructor(Y[0]),Y},simplifyWithAttributes:function(V,F,U,G,A,S,g,C,y){a(this.useExperimentalFeatures),a(V instanceof Uint32Array||V instanceof Int32Array||V instanceof Uint16Array||V instanceof Int16Array),a(V.length%3==0),a(F instanceof Float32Array),a(F.length%U==0),a(U>=3),a(G instanceof Float32Array),a(G.length%A==0),a(A>=0),a(g>=0&&g<=V.length),a(g%3==0),a(C>=0&&C<=1),a(Array.isArray(S)),a(A>=S.length),a(S.length<=16);for(var Y=0,Q=0;Q<(y?y.length:0);++Q)Y|=R[y[Q]];var J=V.BYTES_PER_ELEMENT==4?V:new Uint32Array(V),M=m(n.exports.meshopt_simplifyWithAttributes,J,V.length,F,F.length/U,U*4,G,A*4,new Float32Array(S),g,C,Y);return M[0]=V instanceof Uint32Array?M[0]:new V.constructor(M[0]),M},getScale:function(V,F){return a(V instanceof Float32Array),a(V.length%F==0),a(F>=3),h(n.exports.meshopt_simplifyScale,V,V.length/F,F*4)},simplifyPoints:function(V,F,U,G,A,S){return a(this.useExperimentalFeatures),a(V instanceof Float32Array),a(V.length%F==0),a(F>=3),a(U>=0&&U<=V.length/F),G?(a(G instanceof Float32Array),a(G.length%A==0),a(A>=3),a(V.length/F==G.length/A),u(n.exports.meshopt_simplifyPoints,V,V.length/F,F*4,G,A*4,S,U)):u(n.exports.meshopt_simplifyPoints,V,V.length/F,F*4,void 0,0,0,U)}}}();function VA(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.bufferViewId,o=t.gltfResource,a=t.baseResource,s=t.cacheKey,l=n.bufferViews[i],r=l.buffer,d=l.byteOffset,m=l.byteLength,h=!1,u,R,V,F;if(co(l,"EXT_meshopt_compression")){let G=l.extensions.EXT_meshopt_compression;r=G.buffer,d=f(G.byteOffset,0),m=G.byteLength,h=!0,u=G.byteStride,R=G.count,V=G.mode,F=f(G.filter,"NONE")}let U=n.buffers[r];this._hasMeshopt=h,this._meshoptByteStride=u,this._meshoptCount=R,this._meshoptMode=V,this._meshoptFilter=F,this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._buffer=U,this._bufferId=r,this._byteOffset=d,this._byteLength=m,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(VA.prototype=Object.create(Za.prototype),VA.prototype.constructor=VA);Object.defineProperties(VA.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function M8t(t){try{let e=_8t(t);if(t._bufferLoader=e,await e.load(),t.isDestroyed())return;let n=e.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+t._byteOffset,t._byteLength);if(t.unload(),t._typedArray=i,t._hasMeshopt){let o=t._meshoptCount,a=t._meshoptByteStride,s=new Uint8Array(o*a);lRt.decodeGltfBuffer(s,o,a,t._typedArray,t._meshoptMode,t._meshoptFilter),t._typedArray=s}return t._state=pn.READY,t}catch(e){if(t.isDestroyed())return;throw t.unload(),t._state=pn.FAILED,t.getError("Failed to load buffer view",e)}}VA.prototype.load=async function(){return c(this._promise)?this._promise:(this._state=pn.LOADING,this._promise=M8t(this),this._promise)};function _8t(t){let e=t._resourceCache,n=t._buffer;if(c(n.uri)){let o=t._baseResource.getDerivedResource({url:n.uri});return e.getExternalBufferLoader({resource:o})}return e.getEmbeddedBufferLoader({parentResource:t._gltfResource,bufferId:t._bufferId})}VA.prototype.unload=function(){c(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var QE=VA;var QIn=b(W(),1);var gIn=b(W(),1);function il(){}il._maxDecodingConcurrency=Math.max(In.hardwareConcurrency-1,1);il._decoderTaskProcessor=void 0;il._taskProcessorReady=!1;il._error=void 0;il._getDecoderTaskProcessor=function(){if(!c(il._decoderTaskProcessor)){let t=new $i("decodeDraco",il._maxDecodingConcurrency);t.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(e){e?il._taskProcessorReady=!0:il._error=new Tt("Draco decoder could not be initialized.")}).catch(e=>{il._error=e}),il._decoderTaskProcessor=t}return il._decoderTaskProcessor};il.decodePointCloud=function(t){let e=il._getDecoderTaskProcessor();if(c(il._error))throw il._error;if(il._taskProcessorReady)return e.scheduleTask(t,[t.buffer.buffer])};il.decodeBufferView=function(t){let e=il._getDecoderTaskProcessor();if(c(il._error))throw il._error;if(il._taskProcessorReady)return e.scheduleTask(t,[t.array.buffer])};var $b=il;function xf(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.draco,o=t.gltfResource,a=t.baseResource,s=t.cacheKey;this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._gltf=n,this._draco=i,this._cacheKey=s,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=pn.UNLOADED,this._promise=void 0,this._dracoError=void 0}c(Object.create)&&(xf.prototype=Object.create(Za.prototype),xf.prototype.constructor=xf);Object.defineProperties(xf.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function D8t(t){let e=t._resourceCache;try{let n=e.getBufferViewLoader({gltf:t._gltf,bufferViewId:t._draco.bufferView,gltfResource:t._gltfResource,baseResource:t._baseResource});return t._bufferViewLoader=n,await n.load(),t.isDestroyed()?void 0:(t._bufferViewTypedArray=n.typedArray,t._state=pn.PROCESSING,t)}catch(n){if(t.isDestroyed())return;rRt(t,n)}}xf.prototype.load=async function(){return c(this._promise)?this._promise:(this._state=pn.LOADING,this._promise=D8t(this),this._promise)};function rRt(t,e){throw t.unload(),t._state=pn.FAILED,t.getError("Failed to load Draco",e)}async function O8t(t,e){try{let n=await e;return t.isDestroyed()?void 0:(t.unload(),t._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},t._state=pn.READY,t._baseResource)}catch(n){if(t.isDestroyed())return;t._dracoError=n}}xf.prototype.process=function(t){if(this._state===pn.READY)return!0;if(this._state!==pn.PROCESSING||(c(this._dracoError)&&rRt(this,this._dracoError),!c(this._bufferViewTypedArray))||c(this._decodePromise))return!1;let e=this._draco,i=this._gltf.bufferViews,o=e.bufferView,a=i[o],s=e.attributes,l={array:new Uint8Array(this._bufferViewTypedArray),bufferView:a,compressedAttributes:s,dequantizeInShader:!0},r=$b.decodeBufferView(l);if(!c(r))return!1;this._decodePromise=O8t(this,r)};xf.prototype.unload=function(){c(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0};var kE=xf;var vIn=b(W(),1);var JIn=b(W(),1);function H8t(t){let e=t.uint8Array,n=t.format,i=t.request,o=f(t.flipY,!1),a=f(t.skipColorSpaceConversion,!1),s=new Blob([e],{type:n}),l;return te.supportsImageBitmapOptions().then(function(r){return r?Promise.resolve(te.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:a})):(l=window.URL.createObjectURL(s),new te({url:l,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:a}))}).then(function(r){return c(l)&&window.URL.revokeObjectURL(l),r}).catch(function(r){return c(l)&&window.URL.revokeObjectURL(l),Promise.reject(r)})}var uA=H8t;function t0(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.imageId,o=t.gltfResource,a=t.baseResource,s=t.cacheKey,l=n.images[i],r=l.bufferView,d=l.uri;this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._gltf=n,this._bufferViewId=r,this._uri=d,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(t0.prototype=Object.create(Za.prototype),t0.prototype.constructor=t0);Object.defineProperties(t0.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});t0.prototype.load=function(){return c(this._promise)?this._promise:c(this._bufferViewId)?(this._promise=w8t(this),this._promise):(this._promise=P8t(this),this._promise)};function dRt(t){let e;return Array.isArray(t)&&(e=t.slice(1,t.length).map(function(n){return n.bufferView}),t=t[0]),{image:t,mipLevels:e}}async function w8t(t){t._state=pn.LOADING;let e=t._resourceCache;try{let n=e.getBufferViewLoader({gltf:t._gltf,bufferViewId:t._bufferViewId,gltfResource:t._gltfResource,baseResource:t._baseResource});if(t._bufferViewLoader=n,await n.load(),t.isDestroyed())return;let i=n.typedArray,o=await K8t(i);if(t.isDestroyed())return;let a=dRt(o);return t.unload(),t._image=a.image,t._mipLevels=a.mipLevels,t._state=pn.READY,t}catch(n){return t.isDestroyed()?void 0:cRt(t,n,"Failed to load embedded image")}}async function P8t(t){t._state=pn.LOADING;let e=t._baseResource,n=t._uri,i=e.getDerivedResource({url:n});try{let o=await j8t(i);if(t.isDestroyed())return;let a=dRt(o);return t.unload(),t._image=a.image,t._mipLevels=a.mipLevels,t._state=pn.READY,t}catch(o){return t.isDestroyed()?void 0:cRt(t,o,`Failed to load image: ${n}`)}}function cRt(t,e,n){return t.unload(),t._state=pn.FAILED,Promise.reject(t.getError(n,e))}function v8t(t){let e=t.subarray(0,2),n=t.subarray(0,4),i=t.subarray(8,12);if(e[0]===255&&e[1]===216)return"image/jpeg";if(e[0]===137&&e[1]===80)return"image/png";if(e[0]===171&&e[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new Tt("Image format is not recognized")}async function K8t(t){let e=v8t(t);if(e==="image/ktx2"){let n=new Uint8Array(t);return Fm(n)}return t0._loadImageFromTypedArray({uint8Array:t,format:e,flipY:!1,skipColorSpaceConversion:!0})}var z8t=/(^data:image\/ktx2)|(\.ktx2$)/i;function j8t(t){let e=t.getUrlComponent(!1,!0);return z8t.test(e)?Fm(t):t.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}t0.prototype.unload=function(){c(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};t0._loadImageFromTypedArray=uA;var YE=t0;var r1n=b(W(),1);var zIn=b(W(),1),q8t={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},Zd=Object.freeze(q8t);function Xf(t){t=f(t,f.EMPTY_OBJECT);let e=t.resourceCache,n=t.gltf,i=t.accessorId,o=t.gltfResource,a=t.baseResource,s=t.draco,l=t.cacheKey,r=f(t.asynchronous,!0),d=f(t.loadBuffer,!1),m=f(t.loadTypedArray,!1),h=n.accessors[i].componentType;this._resourceCache=e,this._gltfResource=o,this._baseResource=a,this._gltf=n,this._accessorId=i,this._indexDatatype=h,this._draco=s,this._cacheKey=l,this._asynchronous=r,this._loadBuffer=d,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=pn.UNLOADED,this._promise=void 0}c(Object.create)&&(Xf.prototype=Object.create(Za.prototype),Xf.prototype.constructor=Xf);Object.defineProperties(Xf.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var $8t=new Dq;Xf.prototype.load=async function(){return c(this._promise)?this._promise:c(this._draco)?(this._promise=t6t(this),this._promise):(this._promise=e6t(this),this._promise)};async function t6t(t){t._state=pn.LOADING;let e=t._resourceCache;try{let n=e.getDracoLoader({gltf:t._gltf,draco:t._draco,gltfResource:t._gltfResource,baseResource:t._baseResource});return t._dracoLoader=n,await n.load(),t.isDestroyed()?void 0:(t._state=pn.LOADED,t)}catch(n){if(t.isDestroyed())return;_q(t,n)}}async function e6t(t){let e=t._gltf,n=t._accessorId,o=e.accessors[n].bufferView;t._state=pn.LOADING;let a=t._resourceCache;try{let s=a.getBufferViewLoader({gltf:e,bufferViewId:o,gltfResource:t._gltfResource,baseResource:t._baseResource});if(t._bufferViewLoader=s,await s.load(),t.isDestroyed())return;let l=s.typedArray;return t._typedArray=n6t(t,l),t._state=pn.PROCESSING,t}catch(s){if(t.isDestroyed())return;_q(t,s)}}function n6t(t,e){let n=t._gltf,i=t._accessorId,o=n.accessors[i],a=o.count,s=o.componentType,l=re.getSizeInBytes(s),r=e.buffer,d=e.byteOffset+o.byteOffset;if(d%l!==0){let h=a*l,u=new Uint8Array(r,d,h);r=new Uint8Array(u).buffer,d=0,ur("index-buffer-unaligned",`The index array is not aligned to a ${l}-byte boundary.`)}let m;return s===re.UNSIGNED_BYTE?m=new Uint8Array(r,d,a):s===re.UNSIGNED_SHORT?m=new Uint16Array(r,d,a):s===re.UNSIGNED_INT&&(m=new Uint32Array(r,d,a)),m}function _q(t,e){throw t.unload(),t._state=pn.FAILED,t.getError("Failed to load index buffer",e)}function Dq(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}Dq.prototype.set=function(t,e,n){this.typedArray=t,this.indexDatatype=e,this.context=n};Dq.prototype.execute=function(){this.buffer=mRt(this.typedArray,this.indexDatatype,this.context)};function mRt(t,e,n){let i=we.createIndexBuffer({typedArray:t,context:n,usage:ce.STATIC_DRAW,indexDatatype:e});return i.vertexArrayDestroyable=!1,i}Xf.prototype.process=function(t){if(this._state===pn.READY)return!0;if(this._state!==pn.LOADED&&this._state!==pn.PROCESSING)return!1;let e=this._typedArray,n=this._indexDatatype;if(c(this._dracoLoader))try{this._dracoLoader.process(t)&&(e=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=e,n=it.fromTypedArray(e),this._indexDatatype=n)}catch(o){_q(this,o)}if(!c(e))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=$8t;if(o.set(e,n,t.context),!t.jobScheduler.execute(o,Zd.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=mRt(e,n,t.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?e:void 0,this._state=pn.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};Xf.prototype.unload=function(){c(this._buffer)&&this._buffer.destroy();let t=this._resourceCache;c(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&t.unload(this._bufferViewLoader),c(this._dracoLoader)&&t.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0};var xE=Xf;var WBn=b(W(),1);var B1n=b(W(),1);var m1n=b(W(),1);function i6t(t,e,n){if(n=f(n,!1),n){let i=t.indexOf(e);if(i>-1)return i}return t.push(e),t.length-1}var $l=i6t;var b1n=b(W(),1);var V1n=b(W(),1);function o6t(t,e){return c(t.extensionsUsed)&&t.extensionsUsed.indexOf(e)>=0}var Cs=o6t;function Qn(){}Qn.objectLegacy=function(t,e){if(c(t)){for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=e(i,n);if(c(o))return o}}};Qn.object=function(t,e){if(c(t)){let n=t.length;for(let i=0;i0)return i.byteStride}return it.getSizeInBytes(e.componentType)*Ih(e.type)}var Qm=s6t;function l6t(t){ne.accessor(t,function(n){c(n.bufferView)&&(n.byteOffset=f(n.byteOffset,0))}),ne.bufferView(t,function(n){c(n.buffer)&&(n.byteOffset=f(n.byteOffset,0))}),ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){if(i.mode=f(i.mode,pt.TRIANGLES),!c(i.material)){c(t.materials)||(t.materials=[]);let o={name:"default"};i.material=$l(t.materials,o)}})}),ne.accessorContainingVertexAttributeData(t,function(n){let i=t.accessors[n],o=i.bufferView;if(i.normalized=f(i.normalized,!1),c(o)){let a=t.bufferViews[o];a.byteStride=Qm(t,i),a.target=pt.ARRAY_BUFFER}}),ne.accessorContainingIndexData(t,function(n){let o=t.accessors[n].bufferView;if(c(o)){let a=t.bufferViews[o];a.target=pt.ELEMENT_ARRAY_BUFFER}}),ne.material(t,function(n){let i=f(n.extensions,f.EMPTY_OBJECT),o=i.KHR_materials_common;if(c(o)){let r=o.technique,d=c(o.values)?o.values:{};o.values=d,d.ambient=c(d.ambient)?d.ambient:[0,0,0,1],d.emission=c(d.emission)?d.emission:[0,0,0,1],d.transparency=f(d.transparency,1),r!=="CONSTANT"&&(d.diffuse=c(d.diffuse)?d.diffuse:[0,0,0,1],r!=="LAMBERT"&&(d.specular=c(d.specular)?d.specular:[0,0,0,1],d.shininess=f(d.shininess,0))),o.transparent=f(o.transparent,!1),o.doubleSided=f(o.doubleSided,!1);return}n.emissiveFactor=f(n.emissiveFactor,[0,0,0]),n.alphaMode=f(n.alphaMode,"OPAQUE"),n.doubleSided=f(n.doubleSided,!1),n.alphaMode==="MASK"&&(n.alphaCutoff=f(n.alphaCutoff,.5));let a=i.KHR_techniques_webgl;c(a)&&ne.materialValue(n,function(r){c(r.index)&&ZA(r)}),ZA(n.emissiveTexture),ZA(n.normalTexture),ZA(n.occlusionTexture);let s=n.pbrMetallicRoughness;c(s)&&(s.baseColorFactor=f(s.baseColorFactor,[1,1,1,1]),s.metallicFactor=f(s.metallicFactor,1),s.roughnessFactor=f(s.roughnessFactor,1),ZA(s.baseColorTexture),ZA(s.metallicRoughnessTexture));let l=i.KHR_materials_pbrSpecularGlossiness;c(l)&&(l.diffuseFactor=f(l.diffuseFactor,[1,1,1,1]),l.specularFactor=f(l.specularFactor,[1,1,1]),l.glossinessFactor=f(l.glossinessFactor,1),ZA(l.specularGlossinessTexture))}),ne.animation(t,function(n){ne.animationSampler(n,function(i){i.interpolation=f(i.interpolation,"LINEAR")})});let e=r6t(t);return ne.node(t,function(n,i){c(e[i])||c(n.translation)||c(n.rotation)||c(n.scale)?(n.translation=f(n.translation,[0,0,0]),n.rotation=f(n.rotation,[0,0,0,1]),n.scale=f(n.scale,[1,1,1])):n.matrix=f(n.matrix,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}),ne.sampler(t,function(n){n.wrapS=f(n.wrapS,pt.REPEAT),n.wrapT=f(n.wrapT,pt.REPEAT)}),c(t.scenes)&&!c(t.scene)&&(t.scene=0),t}function r6t(t){let e={};return ne.animation(t,function(n){ne.animationChannel(n,function(i){let o=i.target,a=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(e[a]=!0)})}),e}function ZA(t){c(t)&&(t.texCoord=f(t.texCoord,0))}var _2=l6t;var x1n=b(W(),1);function d6t(t){return ne.shader(t,function(e){Aw(e)}),ne.buffer(t,function(e){Aw(e)}),ne.image(t,function(e){Aw(e)}),Aw(t),t}function Aw(t){t.extras=c(t.extras)?t.extras:{},t.extras._pipeline=c(t.extras._pipeline)?t.extras._pipeline:{}}var Jf=d6t;var $1n=b(W(),1);var O1n=b(W(),1);var L1n=b(W(),1);function c6t(t,e){let n=t.extensionsRequired;if(c(n)){let i=n.indexOf(e);i>=0&&n.splice(i,1),n.length===0&&delete t.extensionsRequired}}var D2=c6t;function m6t(t,e){let n=t.extensionsUsed;if(c(n)){let i=n.indexOf(e);i>=0&&n.splice(i,1),D2(t,e),n.length===0&&delete t.extensionsUsed}}var RA=m6t;var h6t=4;function p6t(t){if(mu(t)!=="glTF")throw new Tt("File is not valid binary glTF");let n=hRt(t,0,5),i=n[1];if(i!==1&&i!==2)throw new Tt("Binary glTF version is not 1 or 2");return i===1?V6t(t,n):u6t(t,n)}function hRt(t,e,n){let i=new DataView(t.buffer),o=new Array(n);for(let a=0;a0){let h=f(m.binary_glTF,m.KHR_binary_glTF);c(h)&&(h.extras._pipeline.source=d,delete h.uri)}return RA(r,"KHR_binary_glTF"),r}function u6t(t,e){let n=e[2],i=12,o,a;for(;i0){let l=s[0];l.extras._pipeline.source=a}}return o}var O2=p6t;var iNn=b(W(),1);function Z6t(t){return ne.shader(t,function(e){Sw(e)}),ne.buffer(t,function(e){Sw(e)}),ne.image(t,function(e){Sw(e)}),Sw(t),t}function Sw(t){c(t.extras)&&(c(t.extras._pipeline)&&delete t.extras._pipeline,Object.keys(t.extras).length===0&&delete t.extras)}var H2=Z6t;var Xyn=b(W(),1);var lNn=b(W(),1);function R6t(t,e){let n=t.extensionsUsed;c(n)||(n=[],t.extensionsUsed=n),$l(n,e,!0)}var Xp=R6t;var RNn=b(W(),1);var cNn=b(W(),1);function b6t(t){switch(t){case it.BYTE:return function(e,n,i,o,a){for(let s=0;s-1:!1}var U6t=[pt.ZERO,pt.ONE,pt.SRC_COLOR,pt.ONE_MINUS_SRC_COLOR,pt.SRC_ALPHA,pt.ONE_MINUS_SRC_ALPHA,pt.DST_ALPHA,pt.ONE_MINUS_DST_ALPHA,pt.DST_COLOR,pt.ONE_MINUS_DST_COLOR];function G6t(t,e){if(!c(t))return e;for(let n=0;n<4;n++)if(U6t.indexOf(t[n])===-1)return e;return t}function A6t(t){let e={},n={},i=t.techniques;return c(i)&&(ne.technique(t,function(o,a){let s=o.states;if(c(s)){let l=n[a]={};if(pRt(s,pt.BLEND)){l.alphaMode="BLEND";let r=s.functions;c(r)&&(c(r.blendEquationSeparate)||c(r.blendFuncSeparate))&&(e[a]={blendEquation:f(r.blendEquationSeparate,f6t),blendFactors:G6t(r.blendFuncSeparate,F6t)})}pRt(s,pt.CULL_FACE)||(l.doubleSided=!0),delete o.states}}),Object.keys(e).length>0&&(c(t.extensions)||(t.extensions={}),Xp(t,"KHR_blend")),ne.material(t,function(o){if(c(o.technique)){let a=n[o.technique];ne.objectLegacy(a,function(l,r){o[r]=l});let s=e[o.technique];c(s)&&(c(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),t}var w2=A6t;var YNn=b(W(),1);var CNn=b(W(),1);function S6t(t,e){let n=t.extensionsRequired;c(n)||(n=[],t.extensionsRequired=n),$l(n,e,!0),Xp(t,e)}var P2=S6t;function T6t(t){let e=t.techniques,n={},i={},o={};if(c(e)){let a={programs:[],shaders:[],techniques:[]},s=t.glExtensionsUsed;delete t.glExtensionsUsed,ne.technique(t,function(l,r){let d={name:l.name,program:void 0,attributes:{},uniforms:{}},m;if(ne.techniqueAttribute(l,function(h,u){m=l.parameters[h],d.attributes[u]={semantic:m.semantic}}),ne.techniqueUniform(l,function(h,u){m=l.parameters[h],d.uniforms[u]={count:m.count,node:m.node,type:m.type,semantic:m.semantic,value:m.value},c(n[r])||(n[r]={}),n[r][h]=u}),c(o[l.program]))d.program=o[l.program];else{let h=t.programs[l.program],u={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},R=t.shaders[h.fragmentShader];u.fragmentShader=$l(a.shaders,R,!0);let V=t.shaders[h.vertexShader];u.vertexShader=$l(a.shaders,V,!0),d.program=$l(a.programs,u),o[l.program]=d.program}i[r]=$l(a.techniques,d)}),a.techniques.length>0&&(c(t.extensions)||(t.extensions={}),t.extensions.KHR_techniques_webgl=a,Xp(t,"KHR_techniques_webgl"),P2(t,"KHR_techniques_webgl"))}return ne.material(t,function(a){if(c(a.technique)){let s={technique:i[a.technique]};ne.objectLegacy(a.values,function(l,r){c(s.values)||(s.values={});let d=n[a.technique][r];c(d)&&(s.values[d]=l)}),c(a.extensions)||(a.extensions={}),a.extensions.KHR_techniques_webgl=s}delete a.technique,delete a.values}),delete t.techniques,delete t.programs,delete t.shaders,t}var v2=T6t;var vNn=b(W(),1);var MNn=b(W(),1);function g6t(t,e){Xa.typeOf.object("material",t),Xa.defined("handler",e);let n=t.pbrMetallicRoughness;if(c(n)){if(c(n.baseColorTexture)){let o=n.baseColorTexture,a=e(o.index,o);if(c(a))return a}if(c(n.metallicRoughnessTexture)){let o=n.metallicRoughnessTexture,a=e(o.index,o);if(c(a))return a}}if(c(t.extensions)){let o=t.extensions.KHR_materials_pbrSpecularGlossiness;if(c(o)){if(c(o.diffuseTexture)){let s=o.diffuseTexture,l=e(s.index,s);if(c(l))return l}if(c(o.specularGlossinessTexture)){let s=o.specularGlossinessTexture,l=e(s.index,s);if(c(l))return l}}let a=t.extensions.KHR_materials_common;if(c(a)&&c(a.values)){let s=a.values.diffuse,l=a.values.ambient,r=a.values.emission,d=a.values.specular;if(c(s)&&c(s.index)){let m=e(s.index,s);if(c(m))return m}if(c(l)&&c(l.index)){let m=e(l.index,l);if(c(m))return m}if(c(r)&&c(r.index)){let m=e(r.index,r);if(c(m))return m}if(c(d)&&c(d.index)){let m=e(d.index,d);if(c(m))return m}}}let i=ne.materialValue(t,function(o){if(c(o.index)){let a=e(o.index,o);if(c(a))return a}});if(c(i))return i;if(c(t.emissiveTexture)){let o=t.emissiveTexture,a=e(o.index,o);if(c(a))return a}if(c(t.normalTexture)){let o=t.normalTexture,a=e(o.index,o);if(c(a))return a}if(c(t.occlusionTexture)){let o=t.occlusionTexture,a=e(o.index,o);if(c(a))return a}}var XE=g6t;var VRt=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function E6t(t,e){return e=f(e,VRt),VRt.forEach(function(n){e.indexOf(n)>-1&&I6t(t,n)}),t}var C6t={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function I6t(t,e){let n=C6t[e],i=t[n];if(c(i)){let o=0,a=jZ[e](t),s=i.length;for(let l=0;le&&o.attributes[r]--}),ne.meshPrimitiveTarget(o,function(l){ne.meshPrimitiveTargetAttribute(l,function(r,d){r>e&&l[d]--})});let a=o.indices;c(a)&&a>e&&o.indices--;let s=o.extensions;c(s)&&c(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>e&&--s.CESIUM_primitive_outline.indices})}),ne.skin(t,function(i){c(i.inverseBindMatrices)&&i.inverseBindMatrices>e&&i.inverseBindMatrices--}),ne.animation(t,function(i){ne.animationSampler(i,function(o){c(o.input)&&o.input>e&&o.input--,c(o.output)&&o.output>e&&o.output--})})};zZ.buffer=function(t,e){t.buffers.splice(e,1),ne.bufferView(t,function(i){c(i.buffer)&&i.buffer>e&&i.buffer--,c(i.extensions)&&c(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};zZ.bufferView=function(t,e){if(t.bufferViews.splice(e,1),ne.accessor(t,function(i){c(i.bufferView)&&i.bufferView>e&&i.bufferView--}),ne.shader(t,function(i){c(i.bufferView)&&i.bufferView>e&&i.bufferView--}),ne.image(t,function(i){c(i.bufferView)&&i.bufferView>e&&i.bufferView--}),Cs(t,"KHR_draco_mesh_compression")&&ne.mesh(t,function(i){ne.meshPrimitive(i,function(o){c(o.extensions)&&c(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>e&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Cs(t,"EXT_feature_metadata")){let o=t.extensions.EXT_feature_metadata.featureTables;for(let a in o)if(o.hasOwnProperty(a)){let l=o[a].properties;if(c(l)){for(let r in l)if(l.hasOwnProperty(r)){let d=l[r];c(d.bufferView)&&d.bufferView>e&&d.bufferView--,c(d.arrayOffsetBufferView)&&d.arrayOffsetBufferView>e&&d.arrayOffsetBufferView--,c(d.stringOffsetBufferView)&&d.stringOffsetBufferView>e&&d.stringOffsetBufferView--}}}}if(Cs(t,"EXT_structural_metadata")){let o=t.extensions.EXT_structural_metadata.propertyTables;if(c(o)){let a=o.length;for(let s=0;se&&m.values--,c(m.arrayOffsets)&&m.arrayOffsets>e&&m.arrayOffsets--,c(m.stringOffsets)&&m.stringOffsets>e&&m.stringOffsets--}}}}};zZ.image=function(t,e){t.images.splice(e,1),ne.texture(t,function(i){c(i.source)&&i.source>e&&--i.source;let o=i.extensions;c(o)&&c(o.EXT_texture_webp)&&o.EXT_texture_webp.source>e?--i.extensions.EXT_texture_webp.source:c(o)&&c(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>e&&--i.extensions.KHR_texture_basisu.source})};zZ.mesh=function(t,e){t.meshes.splice(e,1),ne.node(t,function(i){c(i.mesh)&&(i.mesh>e?i.mesh--:i.mesh===e&&delete i.mesh)})};zZ.node=function(t,e){t.nodes.splice(e,1),ne.skin(t,function(i){c(i.skeleton)&&i.skeleton>e&&i.skeleton--,i.joints=i.joints.map(function(o){return o>e?o-1:o})}),ne.animation(t,function(i){ne.animationChannel(i,function(o){c(o.target)&&c(o.target.node)&&o.target.node>e&&o.target.node--})}),ne.technique(t,function(i){ne.techniqueUniform(i,function(o){c(o.node)&&o.node>e&&o.node--})}),ne.node(t,function(i){c(i.children)&&(i.children=i.children.filter(function(o){return o!==e}).map(function(o){return o>e?o-1:o}))}),ne.scene(t,function(i){i.nodes=i.nodes.filter(function(o){return o!==e}).map(function(o){return o>e?o-1:o})})};zZ.material=function(t,e){t.materials.splice(e,1),ne.mesh(t,function(i){ne.meshPrimitive(i,function(o){c(o.material)&&o.material>e&&o.material--})})};zZ.sampler=function(t,e){t.samplers.splice(e,1),ne.texture(t,function(i){c(i.sampler)&&i.sampler>e&&--i.sampler})};zZ.texture=function(t,e){if(t.textures.splice(e,1),ne.material(t,function(i){XE(i,function(o,a){a.index>e&&--a.index})}),Cs(t,"EXT_feature_metadata")){ne.mesh(t,function(a){ne.meshPrimitive(a,function(s){let l=s.extensions;if(c(l)&&c(l.EXT_feature_metadata)){let d=l.EXT_feature_metadata.featureIdTextures;if(c(d)){let m=d.length;for(let h=0;he&&--R.index}}}})});let o=t.extensions.EXT_feature_metadata.featureTextures;for(let a in o)if(o.hasOwnProperty(a)){let l=o[a].properties;if(c(l)){for(let r in l)if(l.hasOwnProperty(r)){let m=l[r].texture;m.index>e&&--m.index}}}}if(Cs(t,"EXT_mesh_features")&&ne.mesh(t,function(i){ne.meshPrimitive(i,function(o){let a=o.extensions;if(c(a)&&c(a.EXT_mesh_features)){let l=a.EXT_mesh_features.featureIds;if(c(l)){let r=l.length;for(let d=0;de&&--m.texture.index}}}})}),Cs(t,"EXT_structural_metadata")){let o=t.extensions.EXT_structural_metadata.propertyTextures;if(c(o)){let a=o.length;for(let s=0;se&&--m.index}}}}};function jZ(){}jZ.accessor=function(t){let e={};return ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){ne.meshPrimitiveAttribute(i,function(a){e[a]=!0}),ne.meshPrimitiveTarget(i,function(a){ne.meshPrimitiveTargetAttribute(a,function(s){e[s]=!0})});let o=i.indices;c(o)&&(e[o]=!0)})}),ne.skin(t,function(n){c(n.inverseBindMatrices)&&(e[n.inverseBindMatrices]=!0)}),ne.animation(t,function(n){ne.animationSampler(n,function(i){c(i.input)&&(e[i.input]=!0),c(i.output)&&(e[i.output]=!0)})}),Cs(t,"EXT_mesh_gpu_instancing")&&ne.node(t,function(n){c(n.extensions)&&c(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];e[o]=!0})}),Cs(t,"CESIUM_primitive_outline")&&ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){let o=i.extensions;if(c(o)&&c(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;c(s)&&(e[s]=!0)}})}),e};jZ.buffer=function(t){let e={};return ne.bufferView(t,function(n){c(n.buffer)&&(e[n.buffer]=!0),c(n.extensions)&&c(n.extensions.EXT_meshopt_compression)&&(e[n.extensions.EXT_meshopt_compression.buffer]=!0)}),e};jZ.bufferView=function(t){let e={};if(ne.accessor(t,function(n){c(n.bufferView)&&(e[n.bufferView]=!0)}),ne.shader(t,function(n){c(n.bufferView)&&(e[n.bufferView]=!0)}),ne.image(t,function(n){c(n.bufferView)&&(e[n.bufferView]=!0)}),Cs(t,"KHR_draco_mesh_compression")&&ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){c(i.extensions)&&c(i.extensions.KHR_draco_mesh_compression)&&(e[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Cs(t,"EXT_feature_metadata")){let i=t.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(c(s)){for(let l in s)if(s.hasOwnProperty(l)){let r=s[l];c(r.bufferView)&&(e[r.bufferView]=!0),c(r.arrayOffsetBufferView)&&(e[r.arrayOffsetBufferView]=!0),c(r.stringOffsetBufferView)&&(e[r.stringOffsetBufferView]=!0)}}}}if(Cs(t,"EXT_structural_metadata")){let i=t.extensions.EXT_structural_metadata.propertyTables;if(c(i)){let o=i.length;for(let a=0;a0&&(e[n.mesh]=!0)}}),e};function uRt(t,e,n){let i=t.nodes[e];return c(i.mesh)||c(i.camera)||c(i.skin)||c(i.weights)||c(i.extras)||c(i.extensions)&&Object.keys(i.extensions).length!==0||c(n[e])?!1:!c(i.children)||i.children.filter(function(o){return!uRt(t,o,n)}).length===0}jZ.node=function(t){let e={};return ne.skin(t,function(n){c(n.skeleton)&&(e[n.skeleton]=!0),ne.skinJoint(n,function(i){e[i]=!0})}),ne.animation(t,function(n){ne.animationChannel(n,function(i){c(i.target)&&c(i.target.node)&&(e[i.target.node]=!0)})}),ne.technique(t,function(n){ne.techniqueUniform(n,function(i){c(i.node)&&(e[i.node]=!0)})}),ne.node(t,function(n,i){uRt(t,i,e)||(e[i]=!0)}),e};jZ.material=function(t){let e={};return ne.mesh(t,function(n){ne.meshPrimitive(n,function(i){c(i.material)&&(e[i.material]=!0)})}),e};jZ.texture=function(t){let e={};if(ne.material(t,function(n){XE(n,function(i){e[i]=!0})}),Cs(t,"EXT_feature_metadata")){ne.mesh(t,function(o){ne.meshPrimitive(o,function(a){let s=a.extensions;if(c(s)&&c(s.EXT_feature_metadata)){let r=s.EXT_feature_metadata.featureIdTextures;if(c(r)){let d=r.length;for(let m=0;m0)for(s.mesh=n.meshes[r[0]],e=1;e0&&c(s.skin)){let m=t.skins[s.skin];m.skeleton=n.nodes[r[0]]}delete s.skeletons}c(s.jointName)&&delete s.jointName}),ne.skin(t,function(s){c(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let l=s.jointNames;if(c(l)){let r=[],d=l.length;for(e=0;e=0&&(l=a.substring(0,s),r=a.substring(s));let d,m=$6t[l];c(m)?(d=m+r,e[a]=d):c(q6t[l])||(d=`_${a}`,e[a]=d)}});for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o)){let a=e[o],s=i.attributes[o];c(s)&&(delete i.attributes[o],i.attributes[a]=s)}})}),ne.technique(t,function(n){ne.techniqueParameter(n,function(i){let o=e[i.semantic];c(o)&&(i.semantic=o)})})}function e7t(t){ne.camera(t,function(e){let n=e.perspective;if(c(n)){let i=n.aspectRatio;c(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;c(o)&&o===0&&(n.yfov=1)}})}function wq(t,e){return c(e.byteStride)&&e.byteStride!==0?e.byteStride:Qm(t,e)}function n7t(t){ne.buffer(t,function(e){c(e.byteLength)||(e.byteLength=e.extras._pipeline.source.length)}),ne.accessor(t,function(e){let n=e.bufferView;if(c(n)){let i=t.bufferViews[n],o=wq(t,e),a=e.byteOffset+e.count*o;i.byteLength=Math.max(f(i.byteLength,0),a)}})}function i7t(t){let e,n,i,o=t.bufferViews,a={};ne.accessorContainingVertexAttributeData(t,function(l){let r=t.accessors[l];c(r.bufferView)&&(a[r.bufferView]=!0)});let s={};ne.accessor(t,function(l){c(l.bufferView)&&(s[l.bufferView]=f(s[l.bufferView],[]),s[l.bufferView].push(l))});for(let l in s)if(Object.prototype.hasOwnProperty.call(s,l)){i=o[l];let r=s[l];r.sort(function(u,R){return u.byteOffset-R.byteOffset});let d=0,m=0,h=r.length;for(e=0;e=0;--a)if(i[a]===e){i.splice(a,1);return}}}),ne.node(t,function(n,i){if(c(n.children)){let o=n.children.indexOf(e);o>-1&&(n.children.splice(o,1),WRt(n)&&fRt(t,i))}}),delete t.nodes[e]}function a7t(t){return ne.node(t,function(e,n){WRt(e)&&fRt(t,n)}),t}function s7t(t){ne.animation(t,function(e){ne.animationSampler(e,function(n){let i=t.accessors[n.input];if(!c(i.min)||!c(i.max)){let o=bA(t,i);i.min=o.min,i.max=o.max}})})}function l7t(t){ne.accessor(t,function(e){if(c(e.min)||c(e.max)){let n=bA(t,e);c(e.min)&&(e.min=n.min),c(e.max)&&(e.max=n.max)}})}function r7t(t){t.asset=f(t.asset,{}),t.asset.version="2.0",bRt(t),_6t(t),a7t(t),D6t(t),O6t(t),w6t(t),v6t(t),n7t(t),i7t(t),o7t(t),s7t(t),l7t(t),K6t(t),z6t(t),j6t(t),t7t(t),q2(t),e7t(t),w2(t),v2(t),H6t(t)}var d7t=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],c7t=["u_diffuse","u_diffuse_mat"];function Pq(t){t.pbrMetallicRoughness=c(t.pbrMetallicRoughness)?t.pbrMetallicRoughness:{},t.pbrMetallicRoughness.roughnessFactor=1,t.pbrMetallicRoughness.metallicFactor=0}function vq(t){return c(t.index)}function Kq(t){return Array.isArray(t)&&t.length===4}function FRt(t){let e=new Array(4);e[3]=t[3];for(let n=0;n<3;n++){let i=t[n];i<=.04045?e[n]=t[n]*.07739938080495357:e[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return e}function m7t(t,e){e=f(e,f.EMPTY_OBJECT);let n=f(e.baseColorTextureNames,d7t),i=f(e.baseColorFactorNames,c7t);ne.material(t,function(o){ne.materialValue(o,function(a,s){n.indexOf(s)!==-1&&vq(a)?(Pq(o),o.pbrMetallicRoughness.baseColorTexture=a):i.indexOf(s)!==-1&&Kq(a)&&(Pq(o),o.pbrMetallicRoughness.baseColorFactor=FRt(a))})}),WA(t,"KHR_techniques_webgl"),WA(t,"KHR_blend")}function Hq(t,e){c(e)&&(Kq(e)?t.pbrMetallicRoughness.baseColorFactor=FRt(e):vq(e)&&(t.pbrMetallicRoughness.baseColorTexture=e))}function RRt(t,e){c(e)&&(Kq(e)?t.emissiveFactor=e.slice(0,3):vq(e)&&(t.emissiveTexture=e))}function h7t(t){ne.material(t,function(e){let n=f(e.extensions,f.EMPTY_OBJECT).KHR_materials_common;if(!c(n))return;let i=f(n.values,{}),o=i.ambient,a=i.diffuse,s=i.emission,l=i.transparency,r=n.doubleSided,d=n.transparent;Pq(e),n.technique==="CONSTANT"?(Xp(t,"KHR_materials_unlit"),e.extensions=c(e.extensions)?e.extensions:{},e.extensions.KHR_materials_unlit={},Hq(e,s),Hq(e,o)):(Hq(e,a),RRt(e,o),RRt(e,s)),c(r)&&(e.doubleSided=r),c(l)&&(c(e.pbrMetallicRoughness.baseColorFactor)?e.pbrMetallicRoughness.baseColorFactor[3]*=l:e.pbrMetallicRoughness.baseColorFactor=[1,1,1,l]),c(d)&&(e.alphaMode=d?"BLEND":"OPAQUE")}),WA(t,"KHR_materials_common")}var $2=Y6t;var tBn=b(W(),1);var Myn=b(W(),1);var mo={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID"};function p7t(t){switch(t){case mo.POSITION:return"positionMC";case mo.NORMAL:return"normalMC";case mo.TANGENT:return"tangentMC";case mo.TEXCOORD:return"texCoord";case mo.COLOR:return"color";case mo.JOINTS:return"joints";case mo.WEIGHTS:return"weights";case mo.FEATURE_ID:return"featureId"}}mo.hasSetIndex=function(t){switch(t){case mo.POSITION:case mo.NORMAL:case mo.TANGENT:return!1;case mo.TEXCOORD:case mo.COLOR:case mo.JOINTS:case mo.WEIGHTS:case mo.FEATURE_ID:return!0}};mo.fromGltfSemantic=function(t){let e=t,i=/^(\w+)_\d+$/.exec(t);switch(i!==null&&(e=i[1]),e){case"POSITION":return mo.POSITION;case"NORMAL":return mo.NORMAL;case"TANGENT":return mo.TANGENT;case"TEXCOORD":return mo.TEXCOORD;case"COLOR":return mo.COLOR;case"JOINTS":return mo.JOINTS;case"WEIGHTS":return mo.WEIGHTS;case"_FEATURE_ID":return mo.FEATURE_ID}};mo.fromPntsSemantic=function(t){switch(t){case"POSITION":case"POSITION_QUANTIZED":return mo.POSITION;case"RGBA":case"RGB":case"RGB565":return mo.COLOR;case"NORMAL":case"NORMAL_OCT16P":return mo.NORMAL;case"BATCH_ID":return mo.FEATURE_ID}};mo.getGlslType=function(t){switch(t){case mo.POSITION:case mo.NORMAL:case mo.TANGENT:return"vec3";case mo.TEXCOORD:return"vec2";case mo.COLOR:return"vec4";case mo.JOINTS:return"ivec4";case mo.WEIGHTS:return"vec4";case mo.FEATURE_ID:return"int"}};mo.getVariableName=function(t,e){let n=p7t(t);return c(e)&&(n+=`_${e}`),n};var sn=Object.freeze(mo);function wd(){}wd.getError=function(t,e,n){let i=`Failed to load ${t}: ${e}`;c(n)&&c(n.message)&&(i+=` +${n.message}`);let o=new Tt(i);return c(n)&&(o.stack=`Original stack: ${n.stack} Handler stack: -${o.stack}`),o};wd.getNodeTransform=function(t){return c(t.matrix)?t.matrix:L.fromTranslationQuaternionRotationScale(c(t.translation)?t.translation:p.ZERO,c(t.rotation)?t.rotation:wt.IDENTITY,c(t.scale)?t.scale:p.ONE)};wd.getAttributeBySemantic=function(t,e,n){let i=t.attributes,o=i.length;for(let a=0;a>e};Or.fromSubtreeJson=async function(t,e,n,i,o){let a=new Or(t,i,o),s;c(e)?s={json:e,binary:void 0}:s=iqt(n);let l=s.json;a._subtreeJson=l;let r;if(co(l,"3DTILES_metadata"))r=l.extensions["3DTILES_metadata"];else if(c(l.tileMetadata)){let A=l.tileMetadata;r=l.propertyTables[A]}let d=[];if(c(l.contentMetadata)){let A=l.contentMetadata.length;for(let T=0;T0;m=m||h;for(let Z=0;Z>BigInt(61)),d=r%2===0?IE.encode2D(i,o,a):IE.encode2D(i,a,o),m=KR.fromFacePositionLevel(r,BigInt(d),i),h,Z;if(c(s)){let b=(l.maximumHeight+l.minimumHeight)/2;h=n<4?l.minimumHeight:b,Z=n<4?b:l.maximumHeight}else h=l.minimumHeight,Z=l.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:KR.getTokenFromId(m._cellId),minimumHeight:h,maximumHeight:Z}}}}var Tqt=new p,Sqt=new p,i$=new p,gqt=new ot;function Ybt(t,e,n,i,o){if(e===0)return t;let a=p.unpack(t,0,Sqt),s=ot.unpack(t,3,gqt),l=Math.pow(2,-e),r=-1+(2*n+1)*l,d=-1+(2*i+1)*l,m=0,h=p.fromElements(l,l,1,Tqt);c(o)&&(m=-1+(2*o+1)*l,h.z=l);let Z=p.fromElements(r,d,m,i$);Z=ot.multiplyByVector(s,Z,i$),Z=p.add(Z,a,i$);let b=ot.clone(s);b=ot.multiplyByScale(b,h,b);let u=new Array(12);return p.pack(Z,u),ot.pack(b,u,3),u}var Eqt=new Gt;function xbt(t,e,n,i,o){if(e===0)return t.slice();let a=Gt.unpack(t,0,Eqt),s=t[4],l=t[5],r=Math.pow(2,-e),d=r*a.width,m=k.negativePiToPi(a.west+n*d),h=k.negativePiToPi(m+d),Z=r*a.height,b=k.negativePiToPi(a.south+i*Z),u=k.negativePiToPi(b+Z),F=s,U=l;if(c(o)){let G=r*(l-s);F+=o*G,U=F+G}return[m,b,h,u,F,U]}function Cqt(t,e,n){let i=t._implicitTileset,o=e.implicitCoordinates.getChildCoordinates(n),a=Qbt(i,o,n,!1,e),s=Bbt(void 0,i,o),l=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,r={boundingVolume:a,geometricError:s,refine:i.refine,contents:[{uri:l}]},d=Xbt(t,i.baseResource,r,e);return d.implicitTileset=i,d.implicitCoordinates=o,d}function Xbt(t,e,n,i){let o=t._tile.constructor;return new o(t._tileset,e,n,i)}xc.prototype.hasProperty=function(t,e){return!1};xc.prototype.getFeature=function(t){};xc.prototype.applyDebugSettings=function(t,e){};xc.prototype.applyStyle=function(t){};xc.prototype.update=function(t,e){};xc.prototype.pick=function(t,e,n){};xc.prototype.isDestroyed=function(){return!1};xc.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),At(this)};xc._deriveBoundingBox=Ybt;xc._deriveBoundingRegion=xbt;xc._deriveBoundingVolumeS2=kbt;var DE=xc;var u8n=R(W(),1);var q2n=R(W(),1),Iqt={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},xm=Object.freeze(Iqt);var o8n=R(W(),1);var Ukn=R(W(),1);var nkn=R(W(),1);function OE(t,e){this._distance=e,this._normal=new Jbt(t,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(OE.prototype,{distance:{get:function(){return this._distance},set:function(t){c(this.onChangeCallback)&&t!==this._distance&&this.onChangeCallback(this.index),this._distance=t}},normal:{get:function(){return this._normal},set:function(t){c(this.onChangeCallback)&&!p.equals(this._normal._cartesian3,t)&&this.onChangeCallback(this.index),p.clone(t,this._normal._cartesian3)}}});OE.fromPlane=function(t,e){return c(e)?(e.normal=t.normal,e.distance=t.distance):e=new OE(t.normal,t.distance),e};OE.clone=function(t,e){return c(e)?(e.normal=t.normal,e.distance=t.distance,e):new OE(t.normal,t.distance)};function Jbt(t,e){this._clippingPlane=e,this._cartesian3=p.clone(t)}Object.defineProperties(Jbt.prototype,{x:{get:function(){return this._cartesian3.x},set:function(t){c(this._clippingPlane.onChangeCallback)&&t!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=t}},y:{get:function(){return this._cartesian3.y},set:function(t){c(this._clippingPlane.onChangeCallback)&&t!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=t}},z:{get:function(){return this._cartesian3.z},set:function(t){c(this._clippingPlane.onChangeCallback)&&t!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=t}}});var TA=OE;function Pd(t){t=f(t,f.EMPTY_OBJECT),this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=f(t.enabled,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this.edgeColor=v.clone(f(t.edgeColor,v.WHITE)),this.edgeWidth=f(t.edgeWidth,0),this.planeAdded=new It,this.planeRemoved=new It,this._owner=void 0;let e=f(t.unionClippingRegions,!1);this._unionClippingRegions=e,this._testIntersection=e?Obt:Hbt,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=t.planes;if(c(n)){let i=n.length;for(let o=0;o0&&(a=yn.OUTSIDE);for(let s=0;s0?ws.COUNTER_CLOCKWISE:ws.CLOCKWISE};Hf.triangulate=function(t,e){let n=K.packArray(t);return(0,nRt.default)(n,e,2)};var iRt=new p,oRt=new p,aRt=new p,$bt=new p,tRt=new p,eRt=new p,n0=new p,sRt=new K,lRt=new K,rRt=new K,wE=new K;Hf.computeSubdivision=function(t,e,n,i,o){o=f(o,k.RADIANS_PER_DEGREE);let a=c(i),s=n.slice(0),l,r=e.length,d=new Array(r*3),m=new Array(r*2),h=0,Z=0;for(l=0;l0;){let T=s.pop(),g=s.pop(),C=s.pop(),y=p.fromArray(d,C*3,iRt),Y=p.fromArray(d,g*3,oRt),Q=p.fromArray(d,T*3,aRt),J,M,V;a&&(J=K.fromArray(m,C*2,sRt),M=K.fromArray(m,g*2,lRt),V=K.fromArray(m,T*2,rRt));let E=p.multiplyByScalar(p.normalize(y,$bt),F,$bt),I=p.multiplyByScalar(p.normalize(Y,tRt),F,tRt),B=p.multiplyByScalar(p.normalize(Q,eRt),F,eRt),X=p.magnitudeSquared(p.subtract(E,I,n0)),_=p.magnitudeSquared(p.subtract(I,B,n0)),P=p.magnitudeSquared(p.subtract(B,E,n0)),w=Math.max(X,_,P),z,H,nt;w>G?X===w?(z=`${Math.min(C,g)} ${Math.max(C,g)}`,l=u[z],c(l)||(H=p.add(y,Y,n0),p.multiplyByScalar(H,.5,H),d.push(H.x,H.y,H.z),l=d.length/3-1,u[z]=l,a&&(nt=K.add(J,M,wE),K.multiplyByScalar(nt,.5,nt),m.push(nt.x,nt.y))),s.push(C,l,T),s.push(l,g,T)):_===w?(z=`${Math.min(g,T)} ${Math.max(g,T)}`,l=u[z],c(l)||(H=p.add(Y,Q,n0),p.multiplyByScalar(H,.5,H),d.push(H.x,H.y,H.z),l=d.length/3-1,u[z]=l,a&&(nt=K.add(M,V,wE),K.multiplyByScalar(nt,.5,nt),m.push(nt.x,nt.y))),s.push(g,l,C),s.push(l,T,C)):P===w&&(z=`${Math.min(T,C)} ${Math.max(T,C)}`,l=u[z],c(l)||(H=p.add(Q,y,n0),p.multiplyByScalar(H,.5,H),d.push(H.x,H.y,H.z),l=d.length/3-1,u[z]=l,a&&(nt=K.add(V,J,wE),K.multiplyByScalar(nt,.5,nt),m.push(nt.x,nt.y))),s.push(T,l,g),s.push(l,C,g)):(b.push(C),b.push(g),b.push(T))}let A={attributes:{position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:d})},indices:b,primitiveType:le.TRIANGLES};return a&&(A.attributes.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:m})),new _e(A)};var qqt=new gt,$qt=new gt,t$t=new gt,d$=new gt;Hf.computeRhumbLineSubdivision=function(t,e,n,i,o){o=f(o,k.RADIANS_PER_DEGREE);let a=c(i),s=n.slice(0),l,r=e.length,d=new Array(r*3),m=new Array(r*2),h=0,Z=0;for(l=0;l0;){let C=s.pop(),y=s.pop(),Y=s.pop(),Q=p.fromArray(d,Y*3,iRt),J=p.fromArray(d,y*3,oRt),M=p.fromArray(d,C*3,aRt),V,E,I;a&&(V=K.fromArray(m,Y*2,sRt),E=K.fromArray(m,y*2,lRt),I=K.fromArray(m,C*2,rRt));let B=t.cartesianToCartographic(Q,qqt),X=t.cartesianToCartographic(J,$qt),_=t.cartesianToCartographic(M,t$t);G.setEndPoints(B,X);let P=G.surfaceDistance;A.setEndPoints(X,_);let w=A.surfaceDistance;T.setEndPoints(_,B);let z=T.surfaceDistance,H=Math.max(P,w,z),nt,$,dt,q,at;H>U?P===H?(nt=`${Math.min(Y,y)} ${Math.max(Y,y)}`,l=u[nt],c(l)||($=G.interpolateUsingFraction(.5,d$),dt=(B.height+X.height)*.5,q=p.fromRadians($.longitude,$.latitude,dt,t,n0),d.push(q.x,q.y,q.z),l=d.length/3-1,u[nt]=l,a&&(at=K.add(V,E,wE),K.multiplyByScalar(at,.5,at),m.push(at.x,at.y))),s.push(Y,l,C),s.push(l,y,C)):w===H?(nt=`${Math.min(y,C)} ${Math.max(y,C)}`,l=u[nt],c(l)||($=A.interpolateUsingFraction(.5,d$),dt=(X.height+_.height)*.5,q=p.fromRadians($.longitude,$.latitude,dt,t,n0),d.push(q.x,q.y,q.z),l=d.length/3-1,u[nt]=l,a&&(at=K.add(E,I,wE),K.multiplyByScalar(at,.5,at),m.push(at.x,at.y))),s.push(y,l,Y),s.push(l,C,Y)):z===H&&(nt=`${Math.min(C,Y)} ${Math.max(C,Y)}`,l=u[nt],c(l)||($=T.interpolateUsingFraction(.5,d$),dt=(_.height+B.height)*.5,q=p.fromRadians($.longitude,$.latitude,dt,t,n0),d.push(q.x,q.y,q.z),l=d.length/3-1,u[nt]=l,a&&(at=K.add(I,V,wE),K.multiplyByScalar(at,.5,at),m.push(at.x,at.y))),s.push(C,l,y),s.push(l,Y,y)):(b.push(Y),b.push(y),b.push(C))}let g={attributes:{position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:d})},indices:b,primitiveType:le.TRIANGLES};return a&&(g.attributes.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:m})),new _e(g)};Hf.scaleToGeodeticHeight=function(t,e,n,i){n=f(n,mt.WGS84);let o=zqt,a=jqt;if(e=f(e,0),i=f(i,!0),c(t)){let s=t.length;for(let l=0;l10&&e*2>t.length&&(this._array=t.slice(e),e=0),this._offset=e,this._length--,n};wf.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};wf.prototype.contains=function(t){return this._array.indexOf(t)!==-1};wf.prototype.clear=function(){this._array.length=this._offset=this._length=0};wf.prototype.sort=function(t){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(t)};var $V=wf;var Ws={};Ws.computeHierarchyPackedLength=function(t,e){let n=0,i=[t];for(;i.length>0;){let o=i.pop();if(!c(o))continue;n+=2;let a=o.positions,s=o.holes;if(c(a)&&a.length>0&&(n+=a.length*e.packedLength),c(s)){let l=s.length;for(let r=0;r0;){let a=o.pop();if(!c(a))continue;let s=a.positions,l=a.holes;if(e[n++]=c(s)?s.length:0,e[n++]=c(l)?l.length:0,c(s)){let r=s.length;for(let d=0;d0?new Array(o):void 0;for(let l=0;lk.PI){let r=s;s=l,l=r}if(!(a.longitudel))return n.cartographicToCartesian(a)}function c$t(t,e,n,i){if(i===Ln.RHUMB)return d$t(t,e,n);let o=no.lineSegmentPlane(t,e,Kn.ORIGIN_XY_PLANE);if(c(o))return n.scaleToGeodeticSurface(o,o)}var m$t=new gt;function h$t(t,e,n){let i=[],o,a,s,l,r,d=0;for(;de.cartesianToCartographic(h,m$t).longitude;if(s===0)i.push({position:d,type:s,visited:!1,next:l,theta:m(o)});else if(l!==0){if(r=c$t(o,a,e,n),++d,!c(r))continue;t.splice(d,0,r),i.push({position:d,type:s,visited:!1,next:l,theta:m(r)})}++d}return i}function hRt(t,e,n,i,o,a,s){let l=[],r=a,d=h=>Z=>Z.position===h,m=[];do{let h=n[r];l.push(h);let Z=i.findIndex(d(r)),b=i[Z];if(!c(b)){++r;continue}let{visited:u,type:F,next:U}=b;if(b.visited=!0,F===0){if(U===0){let g=i[Z-(s?1:-1)];if(g?.position===r+1)g.visited=!0;else{++r;continue}}if(!u&&s&&U>0||a===r&&!s&&U<0){++r;continue}}if(!(s?F>=0:F<=0)){++r;continue}u||m.push(r);let A=Z+(s?1:-1),T=i[A];if(!c(T)){++r;continue}r=T.position}while(r=0&&r!==a&&l.lengthd.theta-m.theta);let r=s[0].z>=0;o=hRt(i,o,s,l,1,0,r)}return i};Ws.polygonsFromHierarchy=function(t,e,n,i,o,a){let s=[],l=[],r=new $V;r.enqueue(t);let d=c(a);for(;r.length!==0;){let m=r.dequeue(),h=m.positions,Z=m.holes,b,u;if(i)for(u=h.length,b=0;b1){for(let Y of y)r.enqueue(new Wr(Y,Z));continue}}let A=h.slice(),T=c(Z)?Z.length:0,g=[],C;for(b=0;bMath.PI&&(t-=k.TWO_PI),t}}});var PE=new gt,W$t=new p;al.prototype.getLatitude=function(t){c(t)||(t=mt.WGS84),PE.latitude=this.conformalLatitude,PE.longitude=this.longitude,PE.height=0;let e=this.ellipsoid.cartographicToCartesian(PE,W$t);return t.cartesianToCartographic(e,PE),PE.latitude};var f$t=new di,F$t=new p,U$t=new p;al.fromCartesian=function(t,e){let n=k.signNotZero(t.z),i=al.NORTH_POLE_TANGENT_PLANE,o=al.SOUTH_POLE;n<0&&(i=al.SOUTH_POLE_TANGENT_PLANE,o=al.NORTH_POLE);let a=f$t;a.origin=i.ellipsoid.scaleToGeocentricSurface(t,a.origin),a.direction=p.subtract(a.origin,o,F$t),p.normalize(a.direction,a.direction);let s=no.rayPlane(a,i.plane,U$t),l=p.subtract(s,o,s),r=p.dot(i.xAxis,l),d=n*p.dot(i.yAxis,l);return c(e)?(e.position=new K(r,d),e.tangentPlane=i,e):new al(new K(r,d),i)};al.fromCartesianArray=function(t,e){let n=t.length;c(e)?e.length=n:e=new Array(n);for(let i=0;i=0?s:s+k.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,l),o.eastOverIdl=Math.max(o.eastOverIdl,l),a.west=Math.min(a.west,s),a.east=Math.max(a.east,s);let r=t.getLatitude(n),d=r;if(a.south=Math.min(a.south,r),a.north=Math.max(a.north,r),i!==Ln.RHUMB){let Z=K.subtract(e.position,t.position,L$t),b=K.dot(e.position,Z)/K.dot(Z,Z);if(b>0&&b<1){let u=K.add(e.position,K.multiplyByScalar(Z,-b,Z),M$t),F=vd.clone(e,_$t);F.position=u;let U=F.getLatitude(n);a.south=Math.min(a.south,U),a.north=Math.max(a.north,U),Math.abs(r)>Math.abs(U)&&(d=U)}}let m=e.x*t.y-t.x*e.y,h=Math.sign(m);h!==0&&(h*=K.angleBetween(e.position,t.position)),d>=0&&(o.northAngle+=h),d<=0&&(o.southAngle+=h)}var RRt=new vd,D$t=new vd,Jp={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};Lp.computeRectangleFromPositions=function(t,e,n,i){if(c(i)||(i=new Gt),t.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,Jp.northAngle=0,Jp.southAngle=0,Jp.westOverIdl=Number.POSITIVE_INFINITY,Jp.eastOverIdl=Number.NEGATIVE_INFINITY;let o=t.length,a=vd.fromCartesian(t[0],D$t);for(let s=1;sJp.eastOverIdl-Jp.westOverIdl&&(i.west=Jp.westOverIdl,i.east=Jp.eastOverIdl,i.east>k.PI&&(i.east=i.east-k.TWO_PI),i.west>k.PI&&(i.west=i.west-k.TWO_PI)),k.equalsEpsilon(Math.abs(Jp.northAngle),k.TWO_PI,k.EPSILON10)&&(i.north=k.PI_OVER_TWO,i.east=k.PI,i.west=-k.PI),k.equalsEpsilon(Math.abs(Jp.southAngle),k.TWO_PI,k.EPSILON10)&&(i.south=-k.PI_OVER_TWO,i.east=k.PI,i.west=-k.PI),i};var O$t=new vd;function H$t(t,e,n){return t.height>=k.PI||t.width>=k.PI?vd.fromCartesian(e[0],O$t).tangentPlane:Fl.fromPoints(e,n)}var WRt=new gt;function w$t(t,e,n){return(i,o)=>{if(t.height>=k.PI||t.width>=k.PI){if(t.south<0&&t.north>0){c(o)||(o=[]);for(let s=0;s=k.PI||t.width>=k.PI)return(o,a)=>{if(t.south<0&&t.north>0){let s=n.cartesianToCartographic(o,WRt);return c(a)||(a=new K),a.x=s.longitude/k.PI,a.y=s.latitude/k.PI_OVER_TWO,a}return vd.fromCartesian(o,a)};let i=Fl.fromPoints(e,n);return(o,a)=>i.projectPointsOntoPlane(o,a)}function v$t(t,e,n,i){return(o,a)=>!i&&(t.height>=k.PI_OVER_TWO||t.width>=2*k.PI_OVER_THREE)?Fi.splitPolygonsOnEquator(o,e,n,a):o}function K$t(t,e,n,i){if(e.height>=k.PI||e.width>=k.PI)return Fe.fromRectangle(e,void 0,uRt);let o=t,a=Fl.fromPoints(o,n);return Fi.computeBoundingRectangle(a.plane.normal,a.projectPointOntoPlane.bind(a),o,i,uRt)}Lp.createGeometry=function(t){let e=t._vertexFormat,n=t._ellipsoid,i=t._granularity,o=t._stRotation,a=t._polygonHierarchy,s=t._perPositionHeight,l=t._closeTop,r=t._closeBottom,d=t._arcType,m=t._textureCoordinates,h=c(m),Z=a.positions;if(Z.length<3)return;let b=t.rectangle,u=Fi.polygonsFromHierarchy(a,h,w$t(b,Z,n),!s,n,v$t(b,n,d,s)),F=u.hierarchy,U=u.polygons,G=function(B){return B},A=h?Fi.polygonsFromHierarchy(m,!0,G,!1,n).polygons:void 0;if(F.length===0)return;let T=F[0].outerRing,g=K$t(T,b,n,o),C=[],y=t._height,Y=t._extrudedHeight,Q=t._perPositionHeightExtrude||!k.equalsEpsilon(y,Y,0,k.EPSILON2),J={perPositionHeight:s,vertexFormat:e,geometry:void 0,rotationAxis:H$t(b,T,n).plane.normal,projectTo2d:P$t(b,T,n),boundingRectangle:g,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:d},M;if(Q)for(J.extrude=!0,J.top=l,J.bottom=r,J.shadowVolume=t._shadowVolume,J.offsetAttribute=t._offsetAttribute,M=0;M>e};Or.fromSubtreeJson=async function(t,e,n,i,o){let a=new Or(t,i,o),s;c(e)?s={json:e,binary:void 0}:s=iqt(n);let l=s.json;a._subtreeJson=l;let r;if(co(l,"3DTILES_metadata"))r=l.extensions["3DTILES_metadata"];else if(c(l.tileMetadata)){let A=l.tileMetadata;r=l.propertyTables[A]}let d=[];if(c(l.contentMetadata)){let A=l.contentMetadata.length;for(let S=0;S0;m=m||h;for(let u=0;u>BigInt(61)),d=r%2===0?IE.encode2D(i,o,a):IE.encode2D(i,a,o),m=Kb.fromFacePositionLevel(r,BigInt(d),i),h,u;if(c(s)){let R=(l.maximumHeight+l.minimumHeight)/2;h=n<4?l.minimumHeight:R,u=n<4?R:l.maximumHeight}else h=l.minimumHeight,u=l.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:Kb.getTokenFromId(m._cellId),minimumHeight:h,maximumHeight:u}}}}var Sqt=new p,Tqt=new p,i$=new p,gqt=new ot;function YRt(t,e,n,i,o){if(e===0)return t;let a=p.unpack(t,0,Tqt),s=ot.unpack(t,3,gqt),l=Math.pow(2,-e),r=-1+(2*n+1)*l,d=-1+(2*i+1)*l,m=0,h=p.fromElements(l,l,1,Sqt);c(o)&&(m=-1+(2*o+1)*l,h.z=l);let u=p.fromElements(r,d,m,i$);u=ot.multiplyByVector(s,u,i$),u=p.add(u,a,i$);let R=ot.clone(s);R=ot.multiplyByScale(R,h,R);let V=new Array(12);return p.pack(u,V),ot.pack(R,V,3),V}var Eqt=new Gt;function xRt(t,e,n,i,o){if(e===0)return t.slice();let a=Gt.unpack(t,0,Eqt),s=t[4],l=t[5],r=Math.pow(2,-e),d=r*a.width,m=k.negativePiToPi(a.west+n*d),h=k.negativePiToPi(m+d),u=r*a.height,R=k.negativePiToPi(a.south+i*u),V=k.negativePiToPi(R+u),F=s,U=l;if(c(o)){let G=r*(l-s);F+=o*G,U=F+G}return[m,R,h,V,F,U]}function Cqt(t,e,n){let i=t._implicitTileset,o=e.implicitCoordinates.getChildCoordinates(n),a=QRt(i,o,n,!1,e),s=BRt(void 0,i,o),l=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,r={boundingVolume:a,geometricError:s,refine:i.refine,contents:[{uri:l}]},d=XRt(t,i.baseResource,r,e);return d.implicitTileset=i,d.implicitCoordinates=o,d}function XRt(t,e,n,i){let o=t._tile.constructor;return new o(t._tileset,e,n,i)}xc.prototype.hasProperty=function(t,e){return!1};xc.prototype.getFeature=function(t){};xc.prototype.applyDebugSettings=function(t,e){};xc.prototype.applyStyle=function(t){};xc.prototype.update=function(t,e){};xc.prototype.pick=function(t,e,n){};xc.prototype.isDestroyed=function(){return!1};xc.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),At(this)};xc._deriveBoundingBox=YRt;xc._deriveBoundingRegion=xRt;xc._deriveBoundingVolumeS2=kRt;var DE=xc;var V8n=b(W(),1);var qkn=b(W(),1),Iqt={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},xm=Object.freeze(Iqt);var o8n=b(W(),1);var U2n=b(W(),1);var n2n=b(W(),1);function OE(t,e){this._distance=e,this._normal=new JRt(t,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(OE.prototype,{distance:{get:function(){return this._distance},set:function(t){c(this.onChangeCallback)&&t!==this._distance&&this.onChangeCallback(this.index),this._distance=t}},normal:{get:function(){return this._normal},set:function(t){c(this.onChangeCallback)&&!p.equals(this._normal._cartesian3,t)&&this.onChangeCallback(this.index),p.clone(t,this._normal._cartesian3)}}});OE.fromPlane=function(t,e){return c(e)?(e.normal=t.normal,e.distance=t.distance):e=new OE(t.normal,t.distance),e};OE.clone=function(t,e){return c(e)?(e.normal=t.normal,e.distance=t.distance,e):new OE(t.normal,t.distance)};function JRt(t,e){this._clippingPlane=e,this._cartesian3=p.clone(t)}Object.defineProperties(JRt.prototype,{x:{get:function(){return this._cartesian3.x},set:function(t){c(this._clippingPlane.onChangeCallback)&&t!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=t}},y:{get:function(){return this._cartesian3.y},set:function(t){c(this._clippingPlane.onChangeCallback)&&t!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=t}},z:{get:function(){return this._cartesian3.z},set:function(t){c(this._clippingPlane.onChangeCallback)&&t!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=t}}});var SA=OE;function Pd(t){t=f(t,f.EMPTY_OBJECT),this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=f(t.enabled,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this.edgeColor=v.clone(f(t.edgeColor,v.WHITE)),this.edgeWidth=f(t.edgeWidth,0),this.planeAdded=new It,this.planeRemoved=new It,this._owner=void 0;let e=f(t.unionClippingRegions,!1);this._unionClippingRegions=e,this._testIntersection=e?ORt:HRt,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=t.planes;if(c(n)){let i=n.length;for(let o=0;o0&&(a=yn.OUTSIDE);for(let s=0;s0?ws.COUNTER_CLOCKWISE:ws.CLOCKWISE};Hf.triangulate=function(t,e){let n=K.packArray(t);return(0,nbt.default)(n,e,2)};var ibt=new p,obt=new p,abt=new p,$Rt=new p,tbt=new p,ebt=new p,n0=new p,sbt=new K,lbt=new K,rbt=new K,wE=new K;Hf.computeSubdivision=function(t,e,n,i,o){o=f(o,k.RADIANS_PER_DEGREE);let a=c(i),s=n.slice(0),l,r=e.length,d=new Array(r*3),m=new Array(r*2),h=0,u=0;for(l=0;l0;){let S=s.pop(),g=s.pop(),C=s.pop(),y=p.fromArray(d,C*3,ibt),Y=p.fromArray(d,g*3,obt),Q=p.fromArray(d,S*3,abt),J,M,Z;a&&(J=K.fromArray(m,C*2,sbt),M=K.fromArray(m,g*2,lbt),Z=K.fromArray(m,S*2,rbt));let E=p.multiplyByScalar(p.normalize(y,$Rt),F,$Rt),I=p.multiplyByScalar(p.normalize(Y,tbt),F,tbt),B=p.multiplyByScalar(p.normalize(Q,ebt),F,ebt),X=p.magnitudeSquared(p.subtract(E,I,n0)),_=p.magnitudeSquared(p.subtract(I,B,n0)),P=p.magnitudeSquared(p.subtract(B,E,n0)),w=Math.max(X,_,P),z,H,nt;w>G?X===w?(z=`${Math.min(C,g)} ${Math.max(C,g)}`,l=V[z],c(l)||(H=p.add(y,Y,n0),p.multiplyByScalar(H,.5,H),d.push(H.x,H.y,H.z),l=d.length/3-1,V[z]=l,a&&(nt=K.add(J,M,wE),K.multiplyByScalar(nt,.5,nt),m.push(nt.x,nt.y))),s.push(C,l,S),s.push(l,g,S)):_===w?(z=`${Math.min(g,S)} ${Math.max(g,S)}`,l=V[z],c(l)||(H=p.add(Y,Q,n0),p.multiplyByScalar(H,.5,H),d.push(H.x,H.y,H.z),l=d.length/3-1,V[z]=l,a&&(nt=K.add(M,Z,wE),K.multiplyByScalar(nt,.5,nt),m.push(nt.x,nt.y))),s.push(g,l,C),s.push(l,S,C)):P===w&&(z=`${Math.min(S,C)} ${Math.max(S,C)}`,l=V[z],c(l)||(H=p.add(Q,y,n0),p.multiplyByScalar(H,.5,H),d.push(H.x,H.y,H.z),l=d.length/3-1,V[z]=l,a&&(nt=K.add(Z,J,wE),K.multiplyByScalar(nt,.5,nt),m.push(nt.x,nt.y))),s.push(S,l,g),s.push(l,C,g)):(R.push(C),R.push(g),R.push(S))}let A={attributes:{position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:d})},indices:R,primitiveType:le.TRIANGLES};return a&&(A.attributes.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:m})),new _e(A)};var qqt=new gt,$qt=new gt,t$t=new gt,d$=new gt;Hf.computeRhumbLineSubdivision=function(t,e,n,i,o){o=f(o,k.RADIANS_PER_DEGREE);let a=c(i),s=n.slice(0),l,r=e.length,d=new Array(r*3),m=new Array(r*2),h=0,u=0;for(l=0;l0;){let C=s.pop(),y=s.pop(),Y=s.pop(),Q=p.fromArray(d,Y*3,ibt),J=p.fromArray(d,y*3,obt),M=p.fromArray(d,C*3,abt),Z,E,I;a&&(Z=K.fromArray(m,Y*2,sbt),E=K.fromArray(m,y*2,lbt),I=K.fromArray(m,C*2,rbt));let B=t.cartesianToCartographic(Q,qqt),X=t.cartesianToCartographic(J,$qt),_=t.cartesianToCartographic(M,t$t);G.setEndPoints(B,X);let P=G.surfaceDistance;A.setEndPoints(X,_);let w=A.surfaceDistance;S.setEndPoints(_,B);let z=S.surfaceDistance,H=Math.max(P,w,z),nt,$,dt,q,at;H>U?P===H?(nt=`${Math.min(Y,y)} ${Math.max(Y,y)}`,l=V[nt],c(l)||($=G.interpolateUsingFraction(.5,d$),dt=(B.height+X.height)*.5,q=p.fromRadians($.longitude,$.latitude,dt,t,n0),d.push(q.x,q.y,q.z),l=d.length/3-1,V[nt]=l,a&&(at=K.add(Z,E,wE),K.multiplyByScalar(at,.5,at),m.push(at.x,at.y))),s.push(Y,l,C),s.push(l,y,C)):w===H?(nt=`${Math.min(y,C)} ${Math.max(y,C)}`,l=V[nt],c(l)||($=A.interpolateUsingFraction(.5,d$),dt=(X.height+_.height)*.5,q=p.fromRadians($.longitude,$.latitude,dt,t,n0),d.push(q.x,q.y,q.z),l=d.length/3-1,V[nt]=l,a&&(at=K.add(E,I,wE),K.multiplyByScalar(at,.5,at),m.push(at.x,at.y))),s.push(y,l,Y),s.push(l,C,Y)):z===H&&(nt=`${Math.min(C,Y)} ${Math.max(C,Y)}`,l=V[nt],c(l)||($=S.interpolateUsingFraction(.5,d$),dt=(_.height+B.height)*.5,q=p.fromRadians($.longitude,$.latitude,dt,t,n0),d.push(q.x,q.y,q.z),l=d.length/3-1,V[nt]=l,a&&(at=K.add(I,Z,wE),K.multiplyByScalar(at,.5,at),m.push(at.x,at.y))),s.push(C,l,y),s.push(l,Y,y)):(R.push(Y),R.push(y),R.push(C))}let g={attributes:{position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:d})},indices:R,primitiveType:le.TRIANGLES};return a&&(g.attributes.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:m})),new _e(g)};Hf.scaleToGeodeticHeight=function(t,e,n,i){n=f(n,mt.WGS84);let o=zqt,a=jqt;if(e=f(e,0),i=f(i,!0),c(t)){let s=t.length;for(let l=0;l10&&e*2>t.length&&(this._array=t.slice(e),e=0),this._offset=e,this._length--,n};wf.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};wf.prototype.contains=function(t){return this._array.indexOf(t)!==-1};wf.prototype.clear=function(){this._array.length=this._offset=this._length=0};wf.prototype.sort=function(t){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(t)};var $Z=wf;var Ws={};Ws.computeHierarchyPackedLength=function(t,e){let n=0,i=[t];for(;i.length>0;){let o=i.pop();if(!c(o))continue;n+=2;let a=o.positions,s=o.holes;if(c(a)&&a.length>0&&(n+=a.length*e.packedLength),c(s)){let l=s.length;for(let r=0;r0;){let a=o.pop();if(!c(a))continue;let s=a.positions,l=a.holes;if(e[n++]=c(s)?s.length:0,e[n++]=c(l)?l.length:0,c(s)){let r=s.length;for(let d=0;d0?new Array(o):void 0;for(let l=0;lk.PI){let r=s;s=l,l=r}if(!(a.longitudel))return n.cartographicToCartesian(a)}function c$t(t,e,n,i){if(i===Ln.RHUMB)return d$t(t,e,n);let o=no.lineSegmentPlane(t,e,Kn.ORIGIN_XY_PLANE);if(c(o))return n.scaleToGeodeticSurface(o,o)}var m$t=new gt;function h$t(t,e,n){let i=[],o,a,s,l,r,d=0;for(;de.cartesianToCartographic(h,m$t).longitude;if(s===0)i.push({position:d,type:s,visited:!1,next:l,theta:m(o)});else if(l!==0){if(r=c$t(o,a,e,n),++d,!c(r))continue;t.splice(d,0,r),i.push({position:d,type:s,visited:!1,next:l,theta:m(r)})}++d}return i}function hbt(t,e,n,i,o,a,s){let l=[],r=a,d=h=>u=>u.position===h,m=[];do{let h=n[r];l.push(h);let u=i.findIndex(d(r)),R=i[u];if(!c(R)){++r;continue}let{visited:V,type:F,next:U}=R;if(R.visited=!0,F===0){if(U===0){let g=i[u-(s?1:-1)];if(g?.position===r+1)g.visited=!0;else{++r;continue}}if(!V&&s&&U>0||a===r&&!s&&U<0){++r;continue}}if(!(s?F>=0:F<=0)){++r;continue}V||m.push(r);let A=u+(s?1:-1),S=i[A];if(!c(S)){++r;continue}r=S.position}while(r=0&&r!==a&&l.lengthd.theta-m.theta);let r=s[0].z>=0;o=hbt(i,o,s,l,1,0,r)}return i};Ws.polygonsFromHierarchy=function(t,e,n,i,o,a){let s=[],l=[],r=new $Z;r.enqueue(t);let d=c(a);for(;r.length!==0;){let m=r.dequeue(),h=m.positions,u=m.holes,R,V;if(i)for(V=h.length,R=0;R1){for(let Y of y)r.enqueue(new Wr(Y,u));continue}}let A=h.slice(),S=c(u)?u.length:0,g=[],C;for(R=0;RMath.PI&&(t-=k.TWO_PI),t}}});var PE=new gt,W$t=new p;al.prototype.getLatitude=function(t){c(t)||(t=mt.WGS84),PE.latitude=this.conformalLatitude,PE.longitude=this.longitude,PE.height=0;let e=this.ellipsoid.cartographicToCartesian(PE,W$t);return t.cartesianToCartographic(e,PE),PE.latitude};var f$t=new di,F$t=new p,U$t=new p;al.fromCartesian=function(t,e){let n=k.signNotZero(t.z),i=al.NORTH_POLE_TANGENT_PLANE,o=al.SOUTH_POLE;n<0&&(i=al.SOUTH_POLE_TANGENT_PLANE,o=al.NORTH_POLE);let a=f$t;a.origin=i.ellipsoid.scaleToGeocentricSurface(t,a.origin),a.direction=p.subtract(a.origin,o,F$t),p.normalize(a.direction,a.direction);let s=no.rayPlane(a,i.plane,U$t),l=p.subtract(s,o,s),r=p.dot(i.xAxis,l),d=n*p.dot(i.yAxis,l);return c(e)?(e.position=new K(r,d),e.tangentPlane=i,e):new al(new K(r,d),i)};al.fromCartesianArray=function(t,e){let n=t.length;c(e)?e.length=n:e=new Array(n);for(let i=0;i=0?s:s+k.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,l),o.eastOverIdl=Math.max(o.eastOverIdl,l),a.west=Math.min(a.west,s),a.east=Math.max(a.east,s);let r=t.getLatitude(n),d=r;if(a.south=Math.min(a.south,r),a.north=Math.max(a.north,r),i!==Ln.RHUMB){let u=K.subtract(e.position,t.position,L$t),R=K.dot(e.position,u)/K.dot(u,u);if(R>0&&R<1){let V=K.add(e.position,K.multiplyByScalar(u,-R,u),M$t),F=vd.clone(e,_$t);F.position=V;let U=F.getLatitude(n);a.south=Math.min(a.south,U),a.north=Math.max(a.north,U),Math.abs(r)>Math.abs(U)&&(d=U)}}let m=e.x*t.y-t.x*e.y,h=Math.sign(m);h!==0&&(h*=K.angleBetween(e.position,t.position)),d>=0&&(o.northAngle+=h),d<=0&&(o.southAngle+=h)}var bbt=new vd,D$t=new vd,Jp={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};Lp.computeRectangleFromPositions=function(t,e,n,i){if(c(i)||(i=new Gt),t.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,Jp.northAngle=0,Jp.southAngle=0,Jp.westOverIdl=Number.POSITIVE_INFINITY,Jp.eastOverIdl=Number.NEGATIVE_INFINITY;let o=t.length,a=vd.fromCartesian(t[0],D$t);for(let s=1;sJp.eastOverIdl-Jp.westOverIdl&&(i.west=Jp.westOverIdl,i.east=Jp.eastOverIdl,i.east>k.PI&&(i.east=i.east-k.TWO_PI),i.west>k.PI&&(i.west=i.west-k.TWO_PI)),k.equalsEpsilon(Math.abs(Jp.northAngle),k.TWO_PI,k.EPSILON10)&&(i.north=k.PI_OVER_TWO,i.east=k.PI,i.west=-k.PI),k.equalsEpsilon(Math.abs(Jp.southAngle),k.TWO_PI,k.EPSILON10)&&(i.south=-k.PI_OVER_TWO,i.east=k.PI,i.west=-k.PI),i};var O$t=new vd;function H$t(t,e,n){return t.height>=k.PI||t.width>=k.PI?vd.fromCartesian(e[0],O$t).tangentPlane:Fl.fromPoints(e,n)}var Wbt=new gt;function w$t(t,e,n){return(i,o)=>{if(t.height>=k.PI||t.width>=k.PI){if(t.south<0&&t.north>0){c(o)||(o=[]);for(let s=0;s=k.PI||t.width>=k.PI)return(o,a)=>{if(t.south<0&&t.north>0){let s=n.cartesianToCartographic(o,Wbt);return c(a)||(a=new K),a.x=s.longitude/k.PI,a.y=s.latitude/k.PI_OVER_TWO,a}return vd.fromCartesian(o,a)};let i=Fl.fromPoints(e,n);return(o,a)=>i.projectPointsOntoPlane(o,a)}function v$t(t,e,n,i){return(o,a)=>!i&&(t.height>=k.PI_OVER_TWO||t.width>=2*k.PI_OVER_THREE)?Fi.splitPolygonsOnEquator(o,e,n,a):o}function K$t(t,e,n,i){if(e.height>=k.PI||e.width>=k.PI)return Fe.fromRectangle(e,void 0,Vbt);let o=t,a=Fl.fromPoints(o,n);return Fi.computeBoundingRectangle(a.plane.normal,a.projectPointOntoPlane.bind(a),o,i,Vbt)}Lp.createGeometry=function(t){let e=t._vertexFormat,n=t._ellipsoid,i=t._granularity,o=t._stRotation,a=t._polygonHierarchy,s=t._perPositionHeight,l=t._closeTop,r=t._closeBottom,d=t._arcType,m=t._textureCoordinates,h=c(m),u=a.positions;if(u.length<3)return;let R=t.rectangle,V=Fi.polygonsFromHierarchy(a,h,w$t(R,u,n),!s,n,v$t(R,n,d,s)),F=V.hierarchy,U=V.polygons,G=function(B){return B},A=h?Fi.polygonsFromHierarchy(m,!0,G,!1,n).polygons:void 0;if(F.length===0)return;let S=F[0].outerRing,g=K$t(S,R,n,o),C=[],y=t._height,Y=t._extrudedHeight,Q=t._perPositionHeightExtrude||!k.equalsEpsilon(y,Y,0,k.EPSILON2),J={perPositionHeight:s,vertexFormat:e,geometry:void 0,rotationAxis:H$t(R,S,n).plane.normal,projectTo2d:P$t(R,S,n),boundingRectangle:g,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:d},M;if(Q)for(J.extrude=!0,J.top=l,J.bottom=r,J.shadowVolume=t._shadowVolume,J.offsetAttribute=t._offsetAttribute,M=0;MKE.equals(e,t))};Tl.prototype.remove=function(t){let e=this._polygons,n=e.findIndex(i=>KE.equals(i,t));return n===-1?!1:(e.splice(n,1),this.polygonRemoved.raiseEvent(t,n),!0)};var q$t=new Gt;function $$t(t){let e=[],n=[],i=t.length;for(let a=0;aGt.union(t[U].computeSphericalExtents(q$t),F,F),l),e[Z]=void 0,n[Z]=void 0,r=Math.max(l.height*2.5,.001),d=Math.max(l.width*2.5,.001),m=Gt.clone(l,m),m.south-=r,m.west-=d,m.north+=r,m.east+=d,m.south=Math.max(m.south,-Math.PI),m.west=Math.max(m.west,-Math.PI),m.north=Math.min(m.north,Math.PI),m.east=Math.min(m.east,Math.PI),Z=-1}}e.push(m),n.push(h)}let o=new Map;return n.filter(c).forEach((a,s)=>a.forEach(l=>o.set(l,s))),{extentsList:e.filter(c),extentsIndexByPolygon:o}}Tl.prototype.removeAll=function(){let t=this._polygons,e=t.length;for(let n=0;ns+l.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;c(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,a=this._signedDistanceTexture;if(c(i)){let s=i.width*i.height;(s{t._signedDistanceComputeCommand=void 0}})}var FRt=new Gt,nte=new Gt;Tl.prototype.computeIntersectionWithBoundingVolume=function(t,e){let n=this._polygons,i=n.length,o=yn.OUTSIDE;this.inverse&&(o=yn.INSIDE);for(let a=0;a=a;)G=o[G-a];o.push(G),s[F]=U}U>Tte&&(e instanceof Uint16Array||e instanceof Uint8Array)?e=new Uint32Array(e):U>Ste&&e instanceof Uint8Array&&(e=new Uint16Array(e)),F===r?(r=U,e[l]=U):F===d?(d=U,e[l+1]=U):(m=U,e[l+2]=U),F=TRt(i,r,d,m,Z,b,u)}}t._triangleIndices=e,t._outlineCoordinatesTypedArray=new Float32Array(i)}function TRt(t,e,n,i,o,a,s){let l=s?1:0,r=o?1:0,d=0,m=Z$(t,e,l,r,d);if(m===0)return e;let h=0,Z=o?1:0,b=a?1:0,u=Z$(t,n,h,Z,b);if(u===0)return n;let F=s?1:0,U=0,G=a?1:0,A=Z$(t,i,F,U,G);if(A===0)return i;let T=m&u&A,g,C,y;if(T&1)g=0,C=1,y=2;else if(T&2)g=0,y=1,C=2;else if(T&4)C=0,g=1,y=2;else if(T&8)C=0,y=1,g=2;else if(T&16)y=0,g=1,C=2;else if(T&32)y=0,C=1,g=2;else{let M=V$(m),V=V$(u),E=V$(A);return M>1&1)+(t>>2&1)+(t>>3&1)+(t>>4&1)+(t>>5&1)}_w.prototype.updateAttribute=function(t){let e=this._extraVertices,n=t.length,i=n/this._originalVertexCount,o=e.length,a=t.constructor,s=new a(t.length+o*i);s.set(t);for(let l=0;l1;)i>>=1,a.push(SRt(i));let s=new hn({context:t,source:{arrayBufferView:o,mipLevels:a},width:n,height:1,pixelFormat:Ye.LUMINANCE,sampler:new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR_MIPMAP_LINEAR,magnificationFilter:bo.LINEAR})});return e.outlineTexture=s,s};function SRt(t){let e=new Uint8Array(t);return e[t-1]=192,t===8?e[t-1]=96:t===4?e[t-1]=48:t===2?e[t-1]=24:t===1&&(e[t-1]=12),e}function gRt(t,e){this._originalVertexCount=e,this._edges=new Set;for(let n=0;n{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),c(this._processError)){this._state=es.FAILED;let o=this._processError;this._processError=void 0,Ow(this,o)}let e=this._textureErrors.pop();if(c(e)){let o=this.getError("Failed to load glTF texture",e);throw o.name="TextureError",o}if(this._state===es.FAILED)return!1;let n=!1;try{n=this._process(t)}catch(o){this._state=es.FAILED,Ow(this,o)}let i=!1;try{i=this._processTextures(t)}catch(o){this._textureState=es.FAILED,Ow(this,o)}return this._incrementallyLoadTextures?n:n&&i};function see(t,e,n,i,o,a,s,l){let d=e.accessors[n].bufferView;return jo.getVertexBufferLoader({gltf:e,gltfResource:t._gltfResource,baseResource:t._baseResource,frameState:l,bufferViewId:d,draco:o,attributeSemantic:i,accessorId:n,asynchronous:t._asynchronous,loadBuffer:a,loadTypedArray:s})}function lee(t,e,n,i,o,a,s){return jo.getIndexBufferLoader({gltf:e,accessorId:n,gltfResource:t._gltfResource,baseResource:t._baseResource,frameState:s,draco:i,asynchronous:t._asynchronous,loadBuffer:o,loadTypedArray:a})}function ree(t,e,n){let i=jo.getBufferViewLoader({gltf:e,bufferViewId:n,gltfResource:t._gltfResource,baseResource:t._baseResource});return t._bufferViewLoaders.push(i),i}function yRt(t,e,n){let i=e.byteOffset,o=Qm(t,e),a=e.count,s=Ih(e.type),l=e.componentType,r=it.getSizeInBytes(l),d=r*s,m=a*s;if(o===d)return n=new Uint8Array(n),it.createArrayBufferView(l,n.buffer,n.byteOffset+i,m);let h=it.createTypedArray(l,m),Z=new DataView(n.buffer),b=new Array(s),u=e0(e.componentType);i=n.byteOffset+i;for(let F=0;F{c(o)&&c(o.attributes)&&c(o.attributes[m])?fee(F,U,a,s):Fee(e,r,F,U,a,s)},F}function kRt(t,e,n,i,o,a,s,l){let r=i.modelSemantic,d=r===sn.POSITION,m=r===sn.FEATURE_ID,h=d&&!a&&t._loadAttributesFor2D&&!l.scene3DOnly,Z=d&&t._enablePick&&!l.context.webgl2,b=t._loadForClassification&&m,u=t._loadAttributesAsTypedArray,F=!u,U=u||h||Z||b,T=QRt(t,e,n,i,o,s?!1:F,s?!0:U,l),g=new yA.AttributeLoadPlan(T);return g.loadBuffer=F,g.loadTypedArray=U,g}function Uee(t,e,n,i,o,a){let s=c(i.ROTATION),l=c(i.TRANSLATION)&&c(e.accessors[i.TRANSLATION].min)&&c(e.accessors[i.TRANSLATION].max),r=b$(t,Sl,o),d=r.modelSemantic,m=d===Sl.TRANSLATION||d===Sl.ROTATION||d===Sl.SCALE,h=d===Sl.TRANSLATION,Z=t._loadAttributesAsTypedArray||s&&m||!a.context.instancedArrays,b=t._enablePick&&!a.context.webgl2,u=!Z,F=t._loadAttributesFor2D&&!a.scene3DOnly;return QRt(t,e,n,r,void 0,u,Z||h&&(!l||F||b),a)}function Gee(t,e,n,i,o,a,s){let l=e.accessors[n],r=l.bufferView;if(!c(i)&&!c(r))return;let d=new Yte;d.count=l.count;let m=t._loadAttributesAsTypedArray,h=(t._loadIndicesForWireframe||t._enablePick)&&!s.context.webgl2,Z=t._loadForClassification&&o,u=!m,F=m||h||Z,A=lee(t,e,n,i,a?!1:u,a?!0:F,s),T=t._geometryLoaders.length;t._geometryLoaders.push(A);let g=A.load();t._loaderPromises.push(g),t._geometryCallbacks[T]=()=>{d.indexDatatype=A.indexDatatype,d.buffer=A.buffer,d.typedArray=A.typedArray};let C=new yA.IndicesLoadPlan(d);return C.loadBuffer=u,C.loadTypedArray=F,C}function a0(t,e,n,i,o,a){let s=km.getImageIdFromTexture({gltf:e,textureId:n.index,supportedImageFormats:i});if(!c(s))return;let l=jo.getTextureLoader({gltf:e,textureInfo:n,gltfResource:t._gltfResource,baseResource:t._baseResource,supportedImageFormats:i,frameState:o,asynchronous:t._asynchronous}),r=km.createModelTextureReader({textureInfo:n}),d=t._textureLoaders.length;t._textureLoaders.push(l);let m=l.load().catch(h=>{if(!t.isDestroyed()){if(!t._incrementallyLoadTextures)throw h;t._textureState=es.FAILED,t._textureErrors.push(h)}});return t._texturesPromises.push(m),t._textureCallbacks[d]=()=>{r.texture=l.texture,c(a)&&(r.texture.sampler=a)},r}function Aee(t,e,n,i,o){let a=new tee,s=f(n.extensions,f.EMPTY_OBJECT),l=s.KHR_materials_pbrSpecularGlossiness,r=n.pbrMetallicRoughness;if(a.unlit=c(s.KHR_materials_unlit),c(l)){let d=new $te;a.specularGlossiness=d,c(l.diffuseTexture)&&(d.diffuseTexture=a0(t,e,l.diffuseTexture,i,o)),c(l.specularGlossinessTexture)&&c(l.specularGlossinessTexture)&&(d.specularGlossinessTexture=a0(t,e,l.specularGlossinessTexture,i,o)),d.diffuseFactor=Mp(Rt,l.diffuseFactor),d.specularFactor=Mp(p,l.specularFactor),d.glossinessFactor=l.glossinessFactor,a.pbrSpecularGlossiness=l}else if(c(r)){let d=new qte;c(r.baseColorTexture)&&(d.baseColorTexture=a0(t,e,r.baseColorTexture,i,o)),c(r.metallicRoughnessTexture)&&(d.metallicRoughnessTexture=a0(t,e,r.metallicRoughnessTexture,i,o)),d.baseColorFactor=Mp(Rt,r.baseColorFactor),d.metallicFactor=r.metallicFactor,d.roughnessFactor=r.roughnessFactor,a.metallicRoughness=d}return c(n.emissiveTexture)&&(a.emissiveTexture=a0(t,e,n.emissiveTexture,i,o)),c(n.normalTexture)&&!t._loadForClassification&&(a.normalTexture=a0(t,e,n.normalTexture,i,o)),c(n.occlusionTexture)&&(a.occlusionTexture=a0(t,e,n.occlusionTexture,i,o)),a.emissiveFactor=Mp(p,n.emissiveFactor),a.alphaMode=n.alphaMode,a.alphaCutoff=n.alphaCutoff,a.doubleSided=n.doubleSided,a}function YRt(t,e){let n=new CRt;return n.featureCount=t.featureCount,n.nullFeatureId=t.nullFeatureId,n.propertyTableId=t.propertyTable,n.setIndex=t.attribute,n.label=t.label,n.positionalLabel=e,n}function xRt(t,e,n,i){let o=new CRt,a=t.featureIds;return o.featureCount=n,o.propertyTableId=e,o.setIndex=BRt(a.attribute),o.positionalLabel=i,o}function XRt(t,e){let n=new NRt;return n.propertyTableId=t.propertyTable,n.featureCount=t.featureCount,n.nullFeatureId=t.nullFeatureId,n.label=t.label,n.positionalLabel=e,n.offset=0,n.repeat=1,n}function JRt(t,e,n,i){let o=new NRt,a=t.featureIds;o.propertyTableId=e,o.featureCount=n,o.offset=f(a.constant,0);let s=f(a.divisor,0);return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function Tee(t,e,n,i,o,a){let s=new IRt;s.featureCount=n.featureCount,s.nullFeatureId=n.nullFeatureId,s.propertyTableId=n.propertyTable,s.label=n.label,s.positionalLabel=a;let l=n.texture;s.textureReader=a0(t,e,l,i,o,Hn.NEAREST);let d=(c(l.channels)?l.channels:[0]).map(function(m){return"rgba".charAt(m)}).join("");return s.textureReader.channels=d,s}function See(t,e,n,i,o,a,s,l){let r=new IRt,d=n.featureIds,m=d.texture;return r.featureCount=s,r.propertyTableId=i,r.textureReader=a0(t,e,m,o,a,Hn.NEAREST),r.textureReader.channels=d.channels,r.positionalLabel=l,r}function gee(t,e,n,i,o,a){let s=new xte,l=void 0,r=!1;for(let d in n)if(n.hasOwnProperty(d)){let m=n[d],h=b$(t,sn,d),Z=kRt(t,e,m,h,l,r,i,a);s.attributes.push(Z.attribute),o.attributePlans.push(Z)}return s}function Eee(t,e,n,i,o,a){let s=new Xte,l=new yA(s);t._primitiveLoadPlans.push(l);let r=n.material;c(r)&&(s.material=Aee(t,e,e.materials[r],o,a));let d=f(n.extensions,f.EMPTY_OBJECT),m=!1,h=d.CESIUM_primitive_outline;t._loadPrimitiveOutline&&c(h)&&(m=!0,l.needsOutlines=!0,l.outlineIndices=Cee(t,e,h,l));let Z=t._loadForClassification,b=d.KHR_draco_mesh_compression,u=!1,F=n.attributes;if(c(F)){for(let Y in F)if(F.hasOwnProperty(Y)){let Q=F[Y],J=b$(t,sn,Y),M=J.modelSemantic;if(Z&&!Wee(M))continue;M===sn.FEATURE_ID&&(u=!0);let V=kRt(t,e,Q,J,b,i,m,a);l.attributePlans.push(V),s.attributes.push(V.attribute)}}let U=n.targets;if(c(U)&&!Z){let Y=U.length;for(let Q=0;QKE.equals(e,t))};Sl.prototype.remove=function(t){let e=this._polygons,n=e.findIndex(i=>KE.equals(i,t));return n===-1?!1:(e.splice(n,1),this.polygonRemoved.raiseEvent(t,n),!0)};var q$t=new Gt;function $$t(t){let e=[],n=[],i=t.length;for(let a=0;aGt.union(t[U].computeSphericalExtents(q$t),F,F),l),e[u]=void 0,n[u]=void 0,r=Math.max(l.height*2.5,.001),d=Math.max(l.width*2.5,.001),m=Gt.clone(l,m),m.south-=r,m.west-=d,m.north+=r,m.east+=d,m.south=Math.max(m.south,-Math.PI),m.west=Math.max(m.west,-Math.PI),m.north=Math.min(m.north,Math.PI),m.east=Math.min(m.east,Math.PI),u=-1}}e.push(m),n.push(h)}let o=new Map;return n.filter(c).forEach((a,s)=>a.forEach(l=>o.set(l,s))),{extentsList:e.filter(c),extentsIndexByPolygon:o}}Sl.prototype.removeAll=function(){let t=this._polygons,e=t.length;for(let n=0;ns+l.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;c(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,a=this._signedDistanceTexture;if(c(i)){let s=i.width*i.height;(s{t._signedDistanceComputeCommand=void 0}})}var Fbt=new Gt,nte=new Gt;Sl.prototype.computeIntersectionWithBoundingVolume=function(t,e){let n=this._polygons,i=n.length,o=yn.OUTSIDE;this.inverse&&(o=yn.INSIDE);for(let a=0;a=a;)G=o[G-a];o.push(G),s[F]=U}U>Ste&&(e instanceof Uint16Array||e instanceof Uint8Array)?e=new Uint32Array(e):U>Tte&&e instanceof Uint8Array&&(e=new Uint16Array(e)),F===r?(r=U,e[l]=U):F===d?(d=U,e[l+1]=U):(m=U,e[l+2]=U),F=Sbt(i,r,d,m,u,R,V)}}t._triangleIndices=e,t._outlineCoordinatesTypedArray=new Float32Array(i)}function Sbt(t,e,n,i,o,a,s){let l=s?1:0,r=o?1:0,d=0,m=u$(t,e,l,r,d);if(m===0)return e;let h=0,u=o?1:0,R=a?1:0,V=u$(t,n,h,u,R);if(V===0)return n;let F=s?1:0,U=0,G=a?1:0,A=u$(t,i,F,U,G);if(A===0)return i;let S=m&V&A,g,C,y;if(S&1)g=0,C=1,y=2;else if(S&2)g=0,y=1,C=2;else if(S&4)C=0,g=1,y=2;else if(S&8)C=0,y=1,g=2;else if(S&16)y=0,g=1,C=2;else if(S&32)y=0,C=1,g=2;else{let M=Z$(m),Z=Z$(V),E=Z$(A);return M>1&1)+(t>>2&1)+(t>>3&1)+(t>>4&1)+(t>>5&1)}_w.prototype.updateAttribute=function(t){let e=this._extraVertices,n=t.length,i=n/this._originalVertexCount,o=e.length,a=t.constructor,s=new a(t.length+o*i);s.set(t);for(let l=0;l1;)i>>=1,a.push(Tbt(i));let s=new hn({context:t,source:{arrayBufferView:o,mipLevels:a},width:n,height:1,pixelFormat:Ye.LUMINANCE,sampler:new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR_MIPMAP_LINEAR,magnificationFilter:Ro.LINEAR})});return e.outlineTexture=s,s};function Tbt(t){let e=new Uint8Array(t);return e[t-1]=192,t===8?e[t-1]=96:t===4?e[t-1]=48:t===2?e[t-1]=24:t===1&&(e[t-1]=12),e}function gbt(t,e){this._originalVertexCount=e,this._edges=new Set;for(let n=0;n{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),c(this._processError)){this._state=es.FAILED;let o=this._processError;this._processError=void 0,Ow(this,o)}let e=this._textureErrors.pop();if(c(e)){let o=this.getError("Failed to load glTF texture",e);throw o.name="TextureError",o}if(this._state===es.FAILED)return!1;let n=!1;try{n=this._process(t)}catch(o){this._state=es.FAILED,Ow(this,o)}let i=!1;try{i=this._processTextures(t)}catch(o){this._textureState=es.FAILED,Ow(this,o)}return this._incrementallyLoadTextures?n:n&&i};function see(t,e,n,i,o,a,s,l){let d=e.accessors[n].bufferView;return jo.getVertexBufferLoader({gltf:e,gltfResource:t._gltfResource,baseResource:t._baseResource,frameState:l,bufferViewId:d,draco:o,attributeSemantic:i,accessorId:n,asynchronous:t._asynchronous,loadBuffer:a,loadTypedArray:s})}function lee(t,e,n,i,o,a,s){return jo.getIndexBufferLoader({gltf:e,accessorId:n,gltfResource:t._gltfResource,baseResource:t._baseResource,frameState:s,draco:i,asynchronous:t._asynchronous,loadBuffer:o,loadTypedArray:a})}function ree(t,e,n){let i=jo.getBufferViewLoader({gltf:e,bufferViewId:n,gltfResource:t._gltfResource,baseResource:t._baseResource});return t._bufferViewLoaders.push(i),i}function ybt(t,e,n){let i=e.byteOffset,o=Qm(t,e),a=e.count,s=Ih(e.type),l=e.componentType,r=it.getSizeInBytes(l),d=r*s,m=a*s;if(o===d)return n=new Uint8Array(n),it.createArrayBufferView(l,n.buffer,n.byteOffset+i,m);let h=it.createTypedArray(l,m),u=new DataView(n.buffer),R=new Array(s),V=e0(e.componentType);i=n.byteOffset+i;for(let F=0;F{c(o)&&c(o.attributes)&&c(o.attributes[m])?fee(F,U,a,s):Fee(e,r,F,U,a,s)},F}function kbt(t,e,n,i,o,a,s,l){let r=i.modelSemantic,d=r===sn.POSITION,m=r===sn.FEATURE_ID,h=d&&!a&&t._loadAttributesFor2D&&!l.scene3DOnly,u=d&&t._enablePick&&!l.context.webgl2,R=t._loadForClassification&&m,V=t._loadAttributesAsTypedArray,F=!V,U=V||h||u||R,S=Qbt(t,e,n,i,o,s?!1:F,s?!0:U,l),g=new yA.AttributeLoadPlan(S);return g.loadBuffer=F,g.loadTypedArray=U,g}function Uee(t,e,n,i,o,a){let s=c(i.ROTATION),l=c(i.TRANSLATION)&&c(e.accessors[i.TRANSLATION].min)&&c(e.accessors[i.TRANSLATION].max),r=R$(t,Tl,o),d=r.modelSemantic,m=d===Tl.TRANSLATION||d===Tl.ROTATION||d===Tl.SCALE,h=d===Tl.TRANSLATION,u=t._loadAttributesAsTypedArray||s&&m||!a.context.instancedArrays,R=t._enablePick&&!a.context.webgl2,V=!u,F=t._loadAttributesFor2D&&!a.scene3DOnly;return Qbt(t,e,n,r,void 0,V,u||h&&(!l||F||R),a)}function Gee(t,e,n,i,o,a,s){let l=e.accessors[n],r=l.bufferView;if(!c(i)&&!c(r))return;let d=new Yte;d.count=l.count;let m=t._loadAttributesAsTypedArray,h=(t._loadIndicesForWireframe||t._enablePick)&&!s.context.webgl2,u=t._loadForClassification&&o,V=!m,F=m||h||u,A=lee(t,e,n,i,a?!1:V,a?!0:F,s),S=t._geometryLoaders.length;t._geometryLoaders.push(A);let g=A.load();t._loaderPromises.push(g),t._geometryCallbacks[S]=()=>{d.indexDatatype=A.indexDatatype,d.buffer=A.buffer,d.typedArray=A.typedArray};let C=new yA.IndicesLoadPlan(d);return C.loadBuffer=V,C.loadTypedArray=F,C}function a0(t,e,n,i,o,a){let s=km.getImageIdFromTexture({gltf:e,textureId:n.index,supportedImageFormats:i});if(!c(s))return;let l=jo.getTextureLoader({gltf:e,textureInfo:n,gltfResource:t._gltfResource,baseResource:t._baseResource,supportedImageFormats:i,frameState:o,asynchronous:t._asynchronous}),r=km.createModelTextureReader({textureInfo:n}),d=t._textureLoaders.length;t._textureLoaders.push(l);let m=l.load().catch(h=>{if(!t.isDestroyed()){if(!t._incrementallyLoadTextures)throw h;t._textureState=es.FAILED,t._textureErrors.push(h)}});return t._texturesPromises.push(m),t._textureCallbacks[d]=()=>{r.texture=l.texture,c(a)&&(r.texture.sampler=a)},r}function Aee(t,e,n,i,o){let a=new tee,s=f(n.extensions,f.EMPTY_OBJECT),l=s.KHR_materials_pbrSpecularGlossiness,r=n.pbrMetallicRoughness;if(a.unlit=c(s.KHR_materials_unlit),c(l)){let d=new $te;a.specularGlossiness=d,c(l.diffuseTexture)&&(d.diffuseTexture=a0(t,e,l.diffuseTexture,i,o)),c(l.specularGlossinessTexture)&&c(l.specularGlossinessTexture)&&(d.specularGlossinessTexture=a0(t,e,l.specularGlossinessTexture,i,o)),d.diffuseFactor=Mp(bt,l.diffuseFactor),d.specularFactor=Mp(p,l.specularFactor),d.glossinessFactor=l.glossinessFactor,a.pbrSpecularGlossiness=l}else if(c(r)){let d=new qte;c(r.baseColorTexture)&&(d.baseColorTexture=a0(t,e,r.baseColorTexture,i,o)),c(r.metallicRoughnessTexture)&&(d.metallicRoughnessTexture=a0(t,e,r.metallicRoughnessTexture,i,o)),d.baseColorFactor=Mp(bt,r.baseColorFactor),d.metallicFactor=r.metallicFactor,d.roughnessFactor=r.roughnessFactor,a.metallicRoughness=d}return c(n.emissiveTexture)&&(a.emissiveTexture=a0(t,e,n.emissiveTexture,i,o)),c(n.normalTexture)&&!t._loadForClassification&&(a.normalTexture=a0(t,e,n.normalTexture,i,o)),c(n.occlusionTexture)&&(a.occlusionTexture=a0(t,e,n.occlusionTexture,i,o)),a.emissiveFactor=Mp(p,n.emissiveFactor),a.alphaMode=n.alphaMode,a.alphaCutoff=n.alphaCutoff,a.doubleSided=n.doubleSided,a}function Ybt(t,e){let n=new Cbt;return n.featureCount=t.featureCount,n.nullFeatureId=t.nullFeatureId,n.propertyTableId=t.propertyTable,n.setIndex=t.attribute,n.label=t.label,n.positionalLabel=e,n}function xbt(t,e,n,i){let o=new Cbt,a=t.featureIds;return o.featureCount=n,o.propertyTableId=e,o.setIndex=Bbt(a.attribute),o.positionalLabel=i,o}function Xbt(t,e){let n=new Nbt;return n.propertyTableId=t.propertyTable,n.featureCount=t.featureCount,n.nullFeatureId=t.nullFeatureId,n.label=t.label,n.positionalLabel=e,n.offset=0,n.repeat=1,n}function Jbt(t,e,n,i){let o=new Nbt,a=t.featureIds;o.propertyTableId=e,o.featureCount=n,o.offset=f(a.constant,0);let s=f(a.divisor,0);return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function See(t,e,n,i,o,a){let s=new Ibt;s.featureCount=n.featureCount,s.nullFeatureId=n.nullFeatureId,s.propertyTableId=n.propertyTable,s.label=n.label,s.positionalLabel=a;let l=n.texture;s.textureReader=a0(t,e,l,i,o,Hn.NEAREST);let d=(c(l.channels)?l.channels:[0]).map(function(m){return"rgba".charAt(m)}).join("");return s.textureReader.channels=d,s}function Tee(t,e,n,i,o,a,s,l){let r=new Ibt,d=n.featureIds,m=d.texture;return r.featureCount=s,r.propertyTableId=i,r.textureReader=a0(t,e,m,o,a,Hn.NEAREST),r.textureReader.channels=d.channels,r.positionalLabel=l,r}function gee(t,e,n,i,o,a){let s=new xte,l=void 0,r=!1;for(let d in n)if(n.hasOwnProperty(d)){let m=n[d],h=R$(t,sn,d),u=kbt(t,e,m,h,l,r,i,a);s.attributes.push(u.attribute),o.attributePlans.push(u)}return s}function Eee(t,e,n,i,o,a){let s=new Xte,l=new yA(s);t._primitiveLoadPlans.push(l);let r=n.material;c(r)&&(s.material=Aee(t,e,e.materials[r],o,a));let d=f(n.extensions,f.EMPTY_OBJECT),m=!1,h=d.CESIUM_primitive_outline;t._loadPrimitiveOutline&&c(h)&&(m=!0,l.needsOutlines=!0,l.outlineIndices=Cee(t,e,h,l));let u=t._loadForClassification,R=d.KHR_draco_mesh_compression,V=!1,F=n.attributes;if(c(F)){for(let Y in F)if(F.hasOwnProperty(Y)){let Q=F[Y],J=R$(t,sn,Y),M=J.modelSemantic;if(u&&!Wee(M))continue;M===sn.FEATURE_ID&&(V=!0);let Z=kbt(t,e,Q,J,R,i,m,a);l.attributePlans.push(Z),s.attributes.push(Z.attribute)}}let U=n.targets;if(c(U)&&!u){let Y=U.length;for(let Q=0;Q=s.clientWidth)d=!0;else{if(T.x>s.clientWidth*.5){l.width=T.x,r.frustum.right=Z.x-G,qd=UY(a,n,r,qd),Rd.clipToGLWindowCoordinates(l,qd,W$),l.x+=T.x,r.position.x=-r.position.x;let g=r.frustum.right;r.frustum.right=-r.frustum.left,r.frustum.left=-g,qd=UY(a,n,r,qd),Rd.clipToGLWindowCoordinates(l,qd,f$)}else{l.x+=T.x,l.width-=T.x,r.frustum.left=-Z.x-G,qd=UY(a,n,r,qd),Rd.clipToGLWindowCoordinates(l,qd,W$),l.x=l.x-l.width,r.position.x=-r.position.x;let g=r.frustum.left;r.frustum.left=-r.frustum.right,r.frustum.right=-g,qd=UY(a,n,r,qd),Rd.clipToGLWindowCoordinates(l,qd,f$)}p.clone(b,r.position),r.frustum=u.clone(),i=K.clone(W$,i),(i.x<0||i.x>s.clientWidth)&&(i.x=f$.x)}}if(o.mode!==ut.SCENE2D||d){if(qd=UY(a,n,r,qd),qd.z<0&&!(r.frustum instanceof wn)&&!(r.frustum instanceof el))return;i=Rd.clipToGLWindowCoordinates(l,qd,i)}return i.y=s.clientHeight-i.y,i};Rd.wgs84ToDrawingBufferCoordinates=function(t,e,n){if(n=Rd.wgs84ToWindowCoordinates(t,e,n),!!c(n))return Rd.transformWindowToDrawingBuffer(t,n,n)};var r0=new p,pne=new gt;Rd.computeActualWgs84Position=function(t,e,n){let i=t.mode;if(i===ut.SCENE3D)return p.clone(e,n);let o=t.mapProjection,a=o.ellipsoid.cartesianToCartographic(e,pne);if(!c(a))return;if(o.project(a,r0),i===ut.COLUMBUS_VIEW)return p.fromElements(r0.z,r0.x,r0.y,n);if(i===ut.SCENE2D)return p.fromElements(0,r0.x,r0.y,n);let s=t.morphTime;return p.fromElements(k.lerp(r0.z,e.x,s),k.lerp(r0.x,e.y,s),k.lerp(r0.y,e.z,s),n)};var HRt=new p,wRt=new p,PRt=new L;Rd.clipToGLWindowCoordinates=function(t,e,n){return p.divideByScalar(e,e.w,HRt),L.computeViewportTransformation(t,0,1,PRt),L.multiplyByPoint(PRt,HRt,wRt),K.fromCartesian3(wRt,n)};Rd.transformWindowToDrawingBuffer=function(t,e,n){let i=t.canvas,o=t.drawingBufferWidth/i.clientWidth,a=t.drawingBufferHeight/i.clientHeight;return K.fromElements(e.x*o,e.y*a,n)};var une=new Rt,vRt=new Rt;Rd.drawingBufferToWgs84Coordinates=function(t,e,n,i){let a=t.context.uniformState,s=a.currentFrustum,l=s.x,r=s.y;if(t.frameState.useLogDepth){let b=n*a.log2FarDepthFromNearPlusOne,u=Math.pow(2,b)-1;n=r*(1-l/(u+l))/(r-l)}let d=t.view.passState.viewport,m=Rt.clone(Rt.UNIT_W,une);m.x=(e.x-d.x)/d.width*2-1,m.y=(e.y-d.y)/d.height*2-1,m.z=n*2-1,m.w=1;let h,Z=t.camera.frustum;if(c(Z.fovy)){h=L.multiplyByVector(a.inverseViewProjection,m,vRt);let b=1/h.w;p.multiplyByScalar(h,b,h)}else{let b=Z.offCenterFrustum;c(b)&&(Z=b),h=vRt,h.x=(m.x*(Z.right-Z.left)+Z.left+Z.right)*.5,h.y=(m.y*(Z.top-Z.bottom)+Z.bottom+Z.top)*.5,h.z=(m.z*(l-r)-l-r)*.5,h.w=1,h=L.multiplyByVector(a.inverseView,h,h)}return p.fromCartesian4(h,i)};var qo=Rd;var YLn=R(W(),1),Zne={LEFT:-1,NONE:0,RIGHT:1},Jc=Object.freeze(Zne);var NMn=R(W(),1);var _Ln=R(W(),1);var qE={};qE._deprecationWarning=Zr;var d0=Uint32Array.BYTES_PER_ELEMENT;qE.parse=function(t,e){let n=f(e,0);e=n;let i=new Uint8Array(t),o=new DataView(t);e+=d0;let a=o.getUint32(e,!0);if(a!==1)throw new St(`Only Batched 3D Model version 1 is supported. Version ${a} is not.`);e+=d0;let s=o.getUint32(e,!0);e+=d0;let l=o.getUint32(e,!0);e+=d0;let r=o.getUint32(e,!0);e+=d0;let d=o.getUint32(e,!0);e+=d0;let m=o.getUint32(e,!0);e+=d0;let h;d>=570425344?(e-=d0*2,h=l,d=r,m=0,l=0,r=0,qE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):m>=570425344&&(e-=d0,h=d,d=l,m=r,l=0,r=0,qE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let Z;l===0?Z={BATCH_LENGTH:f(h,0)}:(Z=ts(i,e,l),e+=l);let b=new Uint8Array(t,e,r);e+=r;let u,F;d>0&&(u=ts(i,e,d),e+=d,m>0&&(F=new Uint8Array(t,e,m),F=new Uint8Array(F),e+=m));let U=n+s-e;if(U===0)throw new St("glTF byte length must be greater than 0.");let G;return e%4===0?G=new Uint8Array(t,e,U):(qE._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),G=new Uint8Array(i.subarray(e,e+U))),{batchLength:h,featureTableJson:Z,featureTableBinary:b,batchTableJson:u,batchTableBinary:F,gltf:G}};var GY=qE;var PLn=R(W(),1);function AY(t,e){this.json=t,this.buffer=e,this._cachedTypedArrays={},this.featuresLength=0}function KRt(t,e,n,i,o,a){let s=t._cachedTypedArrays,l=s[e];return c(l)||(l=it.createArrayBufferView(n,t.buffer.buffer,t.buffer.byteOffset+a,o*i),s[e]=l),l}function Vne(t,e,n,i){let o=t._cachedTypedArrays,a=o[e];return c(a)||(a=it.createTypedArray(n,i),o[e]=a),a}AY.prototype.getGlobalProperty=function(t,e,n){let i=this.json[t];if(c(i))return c(i.byteOffset)?(e=f(e,it.UNSIGNED_INT),n=f(n,1),KRt(this,t,e,n,1,i.byteOffset)):i};AY.prototype.hasProperty=function(t){return c(this.json[t])};AY.prototype.getPropertyArray=function(t,e,n){let i=this.json[t];if(c(i))return c(i.byteOffset)?(c(i.componentType)&&(e=it.fromName(i.componentType)),KRt(this,t,e,n,this.featuresLength,i.byteOffset)):Vne(this,t,e,i)};AY.prototype.getProperty=function(t,e,n,i,o){let a=this.json[t];if(!c(a))return;let s=this.getPropertyArray(t,e,n);if(n===1)return s[i];for(let l=0;l0&&(u=ts(i,e,d),e+=d,m>0&&(F=new Uint8Array(t,e,m),F=new Uint8Array(F),e+=m));let U=n+s-e;if(U===0)throw new St("glTF byte length must be greater than 0.");let G;return e%4===0?G=new Uint8Array(t,e,U):(Pw._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),G=new Uint8Array(i.subarray(e,e+U))),{gltfFormat:h,featureTableJson:Z,featureTableBinary:b,batchTableJson:u,batchTableBinary:F,gltf:G}};var EY=Pw;var m0={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},vw=Tn.Attribute,xne=Tn.FeatureIdAttribute,e0t=Tn.Instances;function h0(t){t=f(t,f.EMPTY_OBJECT);let e=t.i3dmResource,n=t.arrayBuffer,i=t.baseResource,o=f(t.byteOffset,0),a=f(t.releaseGltfJson,!1),s=f(t.asynchronous,!0),l=f(t.incrementallyLoadTextures,!0),r=f(t.upAxis,$a.Y),d=f(t.forwardAxis,$a.X),m=f(t.loadAttributesAsTypedArray,!1),h=f(t.loadIndicesForWireframe,!1),Z=f(t.loadPrimitiveOutline,!0),b=f(t.enablePick,!1);i=c(i)?i:e.clone(),this._i3dmResource=e,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=a,this._asynchronous=s,this._incrementallyLoadTextures=l,this._upAxis=r,this._forwardAxis=d,this._loadAttributesAsTypedArray=m,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=Z,this._enablePick=b,this._state=m0.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=L.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}c(Object.create)&&(h0.prototype=Object.create(Va.prototype),h0.prototype.constructor=h0);Object.defineProperties(h0.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});h0.prototype.load=function(){if(c(this._promise))return this._promise;let t=EY.parse(this._arrayBuffer,this._byteOffset),e=t.featureTableJson,n=t.featureTableBinary,i=t.batchTableJson,o=t.batchTableBinary,a=t.gltfFormat,s=new FZ(e,n);this._featureTable=s;let l=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=l,!c(l))throw new St("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=l;let r=s.getGlobalProperty("RTC_CENTER",it.FLOAT,3);c(r)&&(this._transform=L.fromTranslation(p.fromArray(r))),this._batchTable={json:i,binary:o};let d={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(a===0){let h=Im(t.gltf);h=h.replace(/[\s\0]+$/,"");let Z=this._baseResource.getDerivedResource({url:h});d.gltfResource=Z,d.baseResource=Z}else d.gltfResource=this._i3dmResource,d.typedArray=t.gltf;let m=new s0(d);return this._gltfLoader=m,this._state=m0.LOADING,this._promise=m.load().then(()=>{if(!this.isDestroyed())return this._state=m0.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw Xne(this,h)}),this._promise};function Xne(t,e){return t.unload(),t._state=m0.FAILED,t.getError("Failed to load i3dm",e)}h0.prototype.process=function(t){if(this._state===m0.READY)return!0;let e=this._gltfLoader,n=!1;if(this._state===m0.PROCESSING&&(n=e.process(t)),!n)return!1;let i=e.components;return i.transform=L.multiplyTransformation(this._transform,i.transform,i.transform),Mne(this,i,t),Jne(this,i),this._components=i,this._arrayBuffer=void 0,this._state=m0.READY,!0};function Jne(t,e){let n=t._batchTable,i=t._instancesLength;if(i===0)return;let o;if(c(n.json))o=c0({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Xc({name:uZ.BATCH_TABLE_CLASS_NAME,count:i});o=new bd({schema:{},propertyTables:[a]})}e.structuralMetadata=o}var Kw=new p,G$=new Array(4),Lne=new L;function Mne(t,e,n){let i,o=t._featureTable,a=t._instancesLength;if(a===0)return;let s=o.getGlobalProperty("RTC_CENTER",it.FLOAT,3),l=o.getGlobalProperty("EAST_NORTH_UP"),r=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||l,d=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),m=Dne(o,a),h;r&&(h=new Float32Array(4*a));let Z;d&&(Z=new Float32Array(3*a));let b=new Float32Array(a),u=p.unpackArray(m),F=new p,U=new p,G=new p,A=new p,T=new ot,g=new wt,C=new Array(4),y=new p,Y=new Array(3),Q=new L;if(!c(s)||p.equals(p.unpack(s),p.ZERO)){let w=Ft.fromPoints(u);for(i=0;i0&&(w.instances=P?_ne(J):J,P=!0)}}function _ne(t){let e=new e0t;e.transformInWorldSpace=t.transformInWorldSpace;let n=t.attributes,i=n.length;for(let o=0;o=n[e]){if(e+1=0&&t>=n[e-1])return e-1;let o;if(t>n[e])for(o=e;o=n[o]&&t=0&&!(t>=n[o]&&tn&&(a=Math.floor((t-n)/o)+1,t-=a*o),t};$E.prototype.clampTime=function(t){let e=this.times;return k.clamp(t,e[0],e[e.length-1])};var ba=$E;function tC(t){this._value=t,this._valueType=ba.getPointType(t)}Object.defineProperties(tC.prototype,{value:{get:function(){return this._value}}});tC.prototype.findTimeInterval=function(t){};tC.prototype.wrapTime=function(t){return 0};tC.prototype.clampTime=function(t){return 0};tC.prototype.evaluate=function(t,e){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,e)};var IY=tC;var h9n=R(W(),1);var $_n=R(W(),1);function eC(t){t=f(t,f.EMPTY_OBJECT);let e=t.points,n=t.times;this._times=n,this._points=e,this._pointType=ba.getPointType(e[0]),this._lastTimeIndex=0}Object.defineProperties(eC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});eC.prototype.findTimeInterval=ba.prototype.findTimeInterval;eC.prototype.wrapTime=ba.prototype.wrapTime;eC.prototype.clampTime=ba.prototype.clampTime;eC.prototype.evaluate=function(t,e){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(t,this._lastTimeIndex),a=(t-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-a)*n[o]+a*n[o+1]:(c(e)||(e=new p),p.lerp(n[o],n[o+1],a,e))};var qf=eC;var n9n=R(W(),1);var n0t={};n0t.solve=function(t,e,n,i){let o=new Array(n.length),a=new Array(i.length),s=new Array(i.length),l;for(l=0;l=0;--l)s[l]=p.subtract(a[l],p.multiplyByScalar(s[l+1],o[l],s[l]),s[l]);return s};var nC=n0t;var i0t=[],o0t=[],a0t=[],s0t=[];function vne(t,e,n){let i=i0t,o=a0t,a=o0t,s=s0t;i.length=o.length=t.length-1,a.length=s.length=t.length;let l;i[0]=a[0]=1,o[0]=0;let r=s[0];for(c(r)||(r=s[0]=new p),p.clone(e,r),l=1;l0&&t.afterRender.push(l._raiseStartEvent)),l.loop===xm.REPEAT)b=b-Math.floor(b);else if(l.loop===xm.MIRRORED_REPEAT){let G=Math.floor(b),A=b-G;b=G%2===1?1-A:A}l.reverse&&(b=1-b);let U=b*d*l.multiplier;U=k.clamp(U,l.localStartTime,l.localStopTime),l.animate(U),l.update.numberOfListeners>0&&(l._updateEventTime=U,t.afterRender.push(l._raiseUpdateEvent)),i=!0,F||(l._state=UZ.STOPPED,l.stop.numberOfListeners>0&&t.afterRender.push(l._raiseStopEvent),l.removeOnStop&&zw.push(l))}}n=zw.length;for(let s=0;s=s.clientWidth)d=!0;else{if(S.x>s.clientWidth*.5){l.width=S.x,r.frustum.right=u.x-G,qd=UY(a,n,r,qd),bd.clipToGLWindowCoordinates(l,qd,W$),l.x+=S.x,r.position.x=-r.position.x;let g=r.frustum.right;r.frustum.right=-r.frustum.left,r.frustum.left=-g,qd=UY(a,n,r,qd),bd.clipToGLWindowCoordinates(l,qd,f$)}else{l.x+=S.x,l.width-=S.x,r.frustum.left=-u.x-G,qd=UY(a,n,r,qd),bd.clipToGLWindowCoordinates(l,qd,W$),l.x=l.x-l.width,r.position.x=-r.position.x;let g=r.frustum.left;r.frustum.left=-r.frustum.right,r.frustum.right=-g,qd=UY(a,n,r,qd),bd.clipToGLWindowCoordinates(l,qd,f$)}p.clone(R,r.position),r.frustum=V.clone(),i=K.clone(W$,i),(i.x<0||i.x>s.clientWidth)&&(i.x=f$.x)}}if(o.mode!==Vt.SCENE2D||d){if(qd=UY(a,n,r,qd),qd.z<0&&!(r.frustum instanceof wn)&&!(r.frustum instanceof el))return;i=bd.clipToGLWindowCoordinates(l,qd,i)}return i.y=s.clientHeight-i.y,i};bd.wgs84ToDrawingBufferCoordinates=function(t,e,n){if(n=bd.wgs84ToWindowCoordinates(t,e,n),!!c(n))return bd.transformWindowToDrawingBuffer(t,n,n)};var r0=new p,pne=new gt;bd.computeActualWgs84Position=function(t,e,n){let i=t.mode;if(i===Vt.SCENE3D)return p.clone(e,n);let o=t.mapProjection,a=o.ellipsoid.cartesianToCartographic(e,pne);if(!c(a))return;if(o.project(a,r0),i===Vt.COLUMBUS_VIEW)return p.fromElements(r0.z,r0.x,r0.y,n);if(i===Vt.SCENE2D)return p.fromElements(0,r0.x,r0.y,n);let s=t.morphTime;return p.fromElements(k.lerp(r0.z,e.x,s),k.lerp(r0.x,e.y,s),k.lerp(r0.y,e.z,s),n)};var Hbt=new p,wbt=new p,Pbt=new L;bd.clipToGLWindowCoordinates=function(t,e,n){return p.divideByScalar(e,e.w,Hbt),L.computeViewportTransformation(t,0,1,Pbt),L.multiplyByPoint(Pbt,Hbt,wbt),K.fromCartesian3(wbt,n)};bd.transformWindowToDrawingBuffer=function(t,e,n){let i=t.canvas,o=t.drawingBufferWidth/i.clientWidth,a=t.drawingBufferHeight/i.clientHeight;return K.fromElements(e.x*o,e.y*a,n)};var Vne=new bt,vbt=new bt;bd.drawingBufferToWgs84Coordinates=function(t,e,n,i){let a=t.context.uniformState,s=a.currentFrustum,l=s.x,r=s.y;if(t.frameState.useLogDepth){let R=n*a.log2FarDepthFromNearPlusOne,V=Math.pow(2,R)-1;n=r*(1-l/(V+l))/(r-l)}let d=t.view.passState.viewport,m=bt.clone(bt.UNIT_W,Vne);m.x=(e.x-d.x)/d.width*2-1,m.y=(e.y-d.y)/d.height*2-1,m.z=n*2-1,m.w=1;let h,u=t.camera.frustum;if(c(u.fovy)){h=L.multiplyByVector(a.inverseViewProjection,m,vbt);let R=1/h.w;p.multiplyByScalar(h,R,h)}else{let R=u.offCenterFrustum;c(R)&&(u=R),h=vbt,h.x=(m.x*(u.right-u.left)+u.left+u.right)*.5,h.y=(m.y*(u.top-u.bottom)+u.bottom+u.top)*.5,h.z=(m.z*(l-r)-l-r)*.5,h.w=1,h=L.multiplyByVector(a.inverseView,h,h)}return p.fromCartesian4(h,i)};var qo=bd;var YLn=b(W(),1),une={LEFT:-1,NONE:0,RIGHT:1},Jc=Object.freeze(une);var NMn=b(W(),1);var _Ln=b(W(),1);var qE={};qE._deprecationWarning=ur;var d0=Uint32Array.BYTES_PER_ELEMENT;qE.parse=function(t,e){let n=f(e,0);e=n;let i=new Uint8Array(t),o=new DataView(t);e+=d0;let a=o.getUint32(e,!0);if(a!==1)throw new Tt(`Only Batched 3D Model version 1 is supported. Version ${a} is not.`);e+=d0;let s=o.getUint32(e,!0);e+=d0;let l=o.getUint32(e,!0);e+=d0;let r=o.getUint32(e,!0);e+=d0;let d=o.getUint32(e,!0);e+=d0;let m=o.getUint32(e,!0);e+=d0;let h;d>=570425344?(e-=d0*2,h=l,d=r,m=0,l=0,r=0,qE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):m>=570425344&&(e-=d0,h=d,d=l,m=r,l=0,r=0,qE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let u;l===0?u={BATCH_LENGTH:f(h,0)}:(u=ts(i,e,l),e+=l);let R=new Uint8Array(t,e,r);e+=r;let V,F;d>0&&(V=ts(i,e,d),e+=d,m>0&&(F=new Uint8Array(t,e,m),F=new Uint8Array(F),e+=m));let U=n+s-e;if(U===0)throw new Tt("glTF byte length must be greater than 0.");let G;return e%4===0?G=new Uint8Array(t,e,U):(qE._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),G=new Uint8Array(i.subarray(e,e+U))),{batchLength:h,featureTableJson:u,featureTableBinary:R,batchTableJson:V,batchTableBinary:F,gltf:G}};var GY=qE;var PLn=b(W(),1);function AY(t,e){this.json=t,this.buffer=e,this._cachedTypedArrays={},this.featuresLength=0}function Kbt(t,e,n,i,o,a){let s=t._cachedTypedArrays,l=s[e];return c(l)||(l=it.createArrayBufferView(n,t.buffer.buffer,t.buffer.byteOffset+a,o*i),s[e]=l),l}function Zne(t,e,n,i){let o=t._cachedTypedArrays,a=o[e];return c(a)||(a=it.createTypedArray(n,i),o[e]=a),a}AY.prototype.getGlobalProperty=function(t,e,n){let i=this.json[t];if(c(i))return c(i.byteOffset)?(e=f(e,it.UNSIGNED_INT),n=f(n,1),Kbt(this,t,e,n,1,i.byteOffset)):i};AY.prototype.hasProperty=function(t){return c(this.json[t])};AY.prototype.getPropertyArray=function(t,e,n){let i=this.json[t];if(c(i))return c(i.byteOffset)?(c(i.componentType)&&(e=it.fromName(i.componentType)),Kbt(this,t,e,n,this.featuresLength,i.byteOffset)):Zne(this,t,e,i)};AY.prototype.getProperty=function(t,e,n,i,o){let a=this.json[t];if(!c(a))return;let s=this.getPropertyArray(t,e,n);if(n===1)return s[i];for(let l=0;l0&&(V=ts(i,e,d),e+=d,m>0&&(F=new Uint8Array(t,e,m),F=new Uint8Array(F),e+=m));let U=n+s-e;if(U===0)throw new Tt("glTF byte length must be greater than 0.");let G;return e%4===0?G=new Uint8Array(t,e,U):(Pw._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),G=new Uint8Array(i.subarray(e,e+U))),{gltfFormat:h,featureTableJson:u,featureTableBinary:R,batchTableJson:V,batchTableBinary:F,gltf:G}};var EY=Pw;var m0={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},vw=Sn.Attribute,xne=Sn.FeatureIdAttribute,e0t=Sn.Instances;function h0(t){t=f(t,f.EMPTY_OBJECT);let e=t.i3dmResource,n=t.arrayBuffer,i=t.baseResource,o=f(t.byteOffset,0),a=f(t.releaseGltfJson,!1),s=f(t.asynchronous,!0),l=f(t.incrementallyLoadTextures,!0),r=f(t.upAxis,$a.Y),d=f(t.forwardAxis,$a.X),m=f(t.loadAttributesAsTypedArray,!1),h=f(t.loadIndicesForWireframe,!1),u=f(t.loadPrimitiveOutline,!0),R=f(t.enablePick,!1);i=c(i)?i:e.clone(),this._i3dmResource=e,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=a,this._asynchronous=s,this._incrementallyLoadTextures=l,this._upAxis=r,this._forwardAxis=d,this._loadAttributesAsTypedArray=m,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=u,this._enablePick=R,this._state=m0.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=L.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}c(Object.create)&&(h0.prototype=Object.create(Za.prototype),h0.prototype.constructor=h0);Object.defineProperties(h0.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});h0.prototype.load=function(){if(c(this._promise))return this._promise;let t=EY.parse(this._arrayBuffer,this._byteOffset),e=t.featureTableJson,n=t.featureTableBinary,i=t.batchTableJson,o=t.batchTableBinary,a=t.gltfFormat,s=new Fu(e,n);this._featureTable=s;let l=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=l,!c(l))throw new Tt("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=l;let r=s.getGlobalProperty("RTC_CENTER",it.FLOAT,3);c(r)&&(this._transform=L.fromTranslation(p.fromArray(r))),this._batchTable={json:i,binary:o};let d={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(a===0){let h=Im(t.gltf);h=h.replace(/[\s\0]+$/,"");let u=this._baseResource.getDerivedResource({url:h});d.gltfResource=u,d.baseResource=u}else d.gltfResource=this._i3dmResource,d.typedArray=t.gltf;let m=new s0(d);return this._gltfLoader=m,this._state=m0.LOADING,this._promise=m.load().then(()=>{if(!this.isDestroyed())return this._state=m0.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw Xne(this,h)}),this._promise};function Xne(t,e){return t.unload(),t._state=m0.FAILED,t.getError("Failed to load i3dm",e)}h0.prototype.process=function(t){if(this._state===m0.READY)return!0;let e=this._gltfLoader,n=!1;if(this._state===m0.PROCESSING&&(n=e.process(t)),!n)return!1;let i=e.components;return i.transform=L.multiplyTransformation(this._transform,i.transform,i.transform),Mne(this,i,t),Jne(this,i),this._components=i,this._arrayBuffer=void 0,this._state=m0.READY,!0};function Jne(t,e){let n=t._batchTable,i=t._instancesLength;if(i===0)return;let o;if(c(n.json))o=c0({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Xc({name:Vu.BATCH_TABLE_CLASS_NAME,count:i});o=new Rd({schema:{},propertyTables:[a]})}e.structuralMetadata=o}var Kw=new p,G$=new Array(4),Lne=new L;function Mne(t,e,n){let i,o=t._featureTable,a=t._instancesLength;if(a===0)return;let s=o.getGlobalProperty("RTC_CENTER",it.FLOAT,3),l=o.getGlobalProperty("EAST_NORTH_UP"),r=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||l,d=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),m=Dne(o,a),h;r&&(h=new Float32Array(4*a));let u;d&&(u=new Float32Array(3*a));let R=new Float32Array(a),V=p.unpackArray(m),F=new p,U=new p,G=new p,A=new p,S=new ot,g=new wt,C=new Array(4),y=new p,Y=new Array(3),Q=new L;if(!c(s)||p.equals(p.unpack(s),p.ZERO)){let w=Ft.fromPoints(V);for(i=0;i0&&(w.instances=P?_ne(J):J,P=!0)}}function _ne(t){let e=new e0t;e.transformInWorldSpace=t.transformInWorldSpace;let n=t.attributes,i=n.length;for(let o=0;o=n[e]){if(e+1=0&&t>=n[e-1])return e-1;let o;if(t>n[e])for(o=e;o=n[o]&&t=0&&!(t>=n[o]&&tn&&(a=Math.floor((t-n)/o)+1,t-=a*o),t};$E.prototype.clampTime=function(t){let e=this.times;return k.clamp(t,e[0],e[e.length-1])};var Ra=$E;function tC(t){this._value=t,this._valueType=Ra.getPointType(t)}Object.defineProperties(tC.prototype,{value:{get:function(){return this._value}}});tC.prototype.findTimeInterval=function(t){};tC.prototype.wrapTime=function(t){return 0};tC.prototype.clampTime=function(t){return 0};tC.prototype.evaluate=function(t,e){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,e)};var IY=tC;var h9n=b(W(),1);var $_n=b(W(),1);function eC(t){t=f(t,f.EMPTY_OBJECT);let e=t.points,n=t.times;this._times=n,this._points=e,this._pointType=Ra.getPointType(e[0]),this._lastTimeIndex=0}Object.defineProperties(eC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});eC.prototype.findTimeInterval=Ra.prototype.findTimeInterval;eC.prototype.wrapTime=Ra.prototype.wrapTime;eC.prototype.clampTime=Ra.prototype.clampTime;eC.prototype.evaluate=function(t,e){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(t,this._lastTimeIndex),a=(t-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-a)*n[o]+a*n[o+1]:(c(e)||(e=new p),p.lerp(n[o],n[o+1],a,e))};var qf=eC;var n9n=b(W(),1);var n0t={};n0t.solve=function(t,e,n,i){let o=new Array(n.length),a=new Array(i.length),s=new Array(i.length),l;for(l=0;l=0;--l)s[l]=p.subtract(a[l],p.multiplyByScalar(s[l+1],o[l],s[l]),s[l]);return s};var nC=n0t;var i0t=[],o0t=[],a0t=[],s0t=[];function vne(t,e,n){let i=i0t,o=a0t,a=o0t,s=s0t;i.length=o.length=t.length-1,a.length=s.length=t.length;let l;i[0]=a[0]=1,o[0]=0;let r=s[0];for(c(r)||(r=s[0]=new p),p.clone(e,r),l=1;l0&&t.afterRender.push(l._raiseStartEvent)),l.loop===xm.REPEAT)R=R-Math.floor(R);else if(l.loop===xm.MIRRORED_REPEAT){let G=Math.floor(R),A=R-G;R=G%2===1?1-A:A}l.reverse&&(R=1-R);let U=R*d*l.multiplier;U=k.clamp(U,l.localStartTime,l.localStopTime),l.animate(U),l.update.numberOfListeners>0&&(l._updateEventTime=U,t.afterRender.push(l._raiseUpdateEvent)),i=!0,F||(l._state=Uu.STOPPED,l.stop.numberOfListeners>0&&t.afterRender.push(l._raiseStopEvent),l.removeOnStop&&zw.push(l))}}n=zw.length;for(let s=0;ss||o<-s&&a>-s}function lC(t,e){if(!c(e))return;let n=u0.clone(e),i=Ee.shallowClone(e.command);return i.modelMatrix=t._modelMatrix2D,i.boundingVolume=t._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,e.derivedCommand2D=n,t._derivedCommands.push(n),n}function Rie(t){lC(t,t._originalCommand),lC(t,t._translucentCommand),lC(t,t._skipLodBackfaceCommand),lC(t,t._skipLodStencilCommand),lC(t,t._silhouetteModelCommand),lC(t,t._silhouetteColorCommand)}function Wie(t){let e=Ee.shallowClone(t);e.pass=Pt.TRANSLUCENT;let n=be(t.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=Pn.ALPHA_BLEND,e.renderState=he.fromCache(n),e}function fie(t,e){let n=e._silhouetteId%255,i=Ee.shallowClone(t),o=be(t.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:pt.ALWAYS,backFunction:pt.ALWAYS,reference:n,mask:-1,frontOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.REPLACE},backOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.REPLACE}},e.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=he.fromCache(o),i}function Fie(t,e){let n=e._silhouetteId%255,i=Ee.shallowClone(t),o=be(t.renderState,!0);o.cull.enabled=!1,(t.pass===Pt.TRANSLUCENT||e.silhouetteColor.alpha<1)&&(i.pass=Pt.TRANSLUCENT,o.depthMask=!1,o.blending=Pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:pt.NOTEQUAL,backFunction:pt.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.KEEP},backOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.KEEP}};let s=be(t.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=he.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function Uie(t,e,n){let i=t._skipLodStencilCommand,o=i.command,a=e._selectionDepth,s=Gie(o);if(a!==s){let l=Aie(a),r=be(o.renderState,!0);r.stencilTest.reference=l,o.renderState=he.fromCache(r),n&&(i.derivedCommand2D.renderState=r)}}function Gie(t){return(t.renderState.stencilTest.reference&gn.SKIP_LOD_MASK)>>>gn.SKIP_LOD_BIT_SHIFT}function Aie(t){return gn.CESIUM_3D_TILE_MASK|t<s||o<-s&&a>-s}function lC(t,e){if(!c(e))return;let n=V0.clone(e),i=Ee.shallowClone(e.command);return i.modelMatrix=t._modelMatrix2D,i.boundingVolume=t._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,e.derivedCommand2D=n,t._derivedCommands.push(n),n}function bie(t){lC(t,t._originalCommand),lC(t,t._translucentCommand),lC(t,t._skipLodBackfaceCommand),lC(t,t._skipLodStencilCommand),lC(t,t._silhouetteModelCommand),lC(t,t._silhouetteColorCommand)}function Wie(t){let e=Ee.shallowClone(t);e.pass=Pt.TRANSLUCENT;let n=Re(t.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=Pn.ALPHA_BLEND,e.renderState=he.fromCache(n),e}function fie(t,e){let n=e._silhouetteId%255,i=Ee.shallowClone(t),o=Re(t.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:pt.ALWAYS,backFunction:pt.ALWAYS,reference:n,mask:-1,frontOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.REPLACE},backOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.REPLACE}},e.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=he.fromCache(o),i}function Fie(t,e){let n=e._silhouetteId%255,i=Ee.shallowClone(t),o=Re(t.renderState,!0);o.cull.enabled=!1,(t.pass===Pt.TRANSLUCENT||e.silhouetteColor.alpha<1)&&(i.pass=Pt.TRANSLUCENT,o.depthMask=!1,o.blending=Pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:pt.NOTEQUAL,backFunction:pt.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.KEEP},backOperation:{fail:pt.KEEP,zFail:pt.KEEP,zPass:pt.KEEP}};let s=Re(t.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=he.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function Uie(t,e,n){let i=t._skipLodStencilCommand,o=i.command,a=e._selectionDepth,s=Gie(o);if(a!==s){let l=Aie(a),r=Re(o.renderState,!0);r.stencilTest.reference=l,o.renderState=he.fromCache(r),n&&(i.derivedCommand2D.renderState=r)}}function Gie(t){return(t.renderState.stencilTest.reference&gn.SKIP_LOD_MASK)>>>gn.SKIP_LOD_BIT_SHIFT}function Aie(t){return gn.CESIUM_3D_TILE_MASK|t<k.EPSILON3}};var vY=p0t;var PDn=R(W(),1);var LDn=R(W(),1),KY=`vec3 proceduralIBL( +`;var p0t={name:"AtmospherePipelineStage"};p0t.process=function(t,e,n){let i=t.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,Xt.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,Xt.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([PY]),i.addFragmentLines([wY]),i.addUniform("bool","u_isInFog",Xt.FRAGMENT),t.uniformMap.u_isInFog=function(){let o=p.distance(n.camera.positionWC,e.boundingSphere.center);return k.fog(o,n.fog.density)>k.EPSILON3}};var vY=p0t;var PDn=b(W(),1);var LDn=b(W(),1),KY=`vec3 proceduralIBL( vec3 positionEC, vec3 normalEC, vec3 lightDirectionEC, @@ -6913,14 +6913,14 @@ vec3 imageBasedLightingStage( pbrParameters ); #endif -}`;var u0t={name:"ImageBasedLightingPipelineStage"};u0t.process=function(t,e,n){let i=e.imageBasedLighting,o=t.shaderBuilder;o.addDefine("USE_IBL_LIGHTING",void 0,Xt.FRAGMENT),o.addUniform("vec2","model_iblFactor",Xt.FRAGMENT),dZ.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&o.addUniform("mat3","model_iblReferenceFrameMatrix",Xt.FRAGMENT),c(i.sphericalHarmonicCoefficients)?(o.addDefine("DIFFUSE_IBL",void 0,Xt.FRAGMENT),o.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,Xt.FRAGMENT),o.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",Xt.FRAGMENT)):i.useDefaultSphericalHarmonics&&o.addDefine("DIFFUSE_IBL",void 0,Xt.FRAGMENT),c(i.specularEnvironmentMapAtlas)&&i.specularEnvironmentMapAtlas.ready?(o.addDefine("SPECULAR_IBL",void 0,Xt.FRAGMENT),o.addDefine("CUSTOM_SPECULAR_IBL",void 0,Xt.FRAGMENT),o.addUniform("sampler2D","model_specularEnvironmentMaps",Xt.FRAGMENT),o.addUniform("vec2","model_specularEnvironmentMapsSize",Xt.FRAGMENT),o.addUniform("float","model_specularEnvironmentMapsMaximumLOD",Xt.FRAGMENT)):e.useDefaultSpecularMaps&&o.addDefine("SPECULAR_IBL",void 0,Xt.FRAGMENT)),c(i.luminanceAtZenith)&&(o.addDefine("USE_SUN_LUMINANCE",void 0,Xt.FRAGMENT),o.addUniform("float","model_luminanceAtZenith",Xt.FRAGMENT)),o.addFragmentLines(KY);let a={model_iblFactor:function(){return i.imageBasedLightingFactor},model_iblReferenceFrameMatrix:function(){return e._iblReferenceFrameMatrix},model_luminanceAtZenith:function(){return i.luminanceAtZenith},model_sphericalHarmonicCoefficients:function(){return i.sphericalHarmonicCoefficients},model_specularEnvironmentMaps:function(){return i.specularEnvironmentMapAtlas.texture},model_specularEnvironmentMapsSize:function(){return i.specularEnvironmentMapAtlas.texture.dimensions},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentMapAtlas.maximumMipmapLevel}};t.uniformMap=ze(a,t.uniformMap)};var zY=u0t;var lOn=R(W(),1);var eOn=R(W(),1);var Cie=k.EPSILON16;function I$(t){t=f(t,f.EMPTY_OBJECT);let e=t.stage,n=t.runtimeArticulation;this._stage=e,this._runtimeArticulation=n,this._name=e.name,this._type=e.type,this._minimumValue=e.minimumValue,this._maximumValue=e.maximumValue,this._currentValue=e.initialValue}Object.defineProperties(I$.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(t){t=k.clamp(t,this.minimumValue,this.maximumValue),k.equalsEpsilon(this._currentValue,t,Cie)||(this._currentValue=t,this.runtimeArticulation._dirty=!0)}}});var Iie=new p,C$=new ot;I$.prototype.applyStageToMatrix=function(t){let e=this.type,n=this.currentValue,i=Iie,o;switch(e){case zd.XROTATE:o=ot.fromRotationX(k.toRadians(n),C$),t=L.multiplyByMatrix3(t,o,t);break;case zd.YROTATE:o=ot.fromRotationY(k.toRadians(n),C$),t=L.multiplyByMatrix3(t,o,t);break;case zd.ZROTATE:o=ot.fromRotationZ(k.toRadians(n),C$),t=L.multiplyByMatrix3(t,o,t);break;case zd.XTRANSLATE:i.x=n,i.y=0,i.z=0,t=L.multiplyByTranslation(t,i,t);break;case zd.YTRANSLATE:i.x=0,i.y=n,i.z=0,t=L.multiplyByTranslation(t,i,t);break;case zd.ZTRANSLATE:i.x=0,i.y=0,i.z=n,t=L.multiplyByTranslation(t,i,t);break;case zd.XSCALE:i.x=n,i.y=1,i.z=1,t=L.multiplyByScale(t,i,t);break;case zd.YSCALE:i.x=1,i.y=n,i.z=1,t=L.multiplyByScale(t,i,t);break;case zd.ZSCALE:i.x=1,i.y=1,i.z=n,t=L.multiplyByScale(t,i,t);break;case zd.UNIFORMSCALE:t=L.multiplyByUniformScale(t,n,t);break;default:break}return t};var jY=I$;function qw(t){t=f(t,f.EMPTY_OBJECT);let e=t.articulation,n=t.sceneGraph;this._articulation=e,this._sceneGraph=n,this._name=e.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Nie(this)}Object.defineProperties(qw.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Nie(t){let n=t.articulation.stages,i=n.length,o=t._runtimeStages,a=t._runtimeStagesByName;for(let s=0;s=t.featureIdVertexAttributeSetIndex&&(t.featureIdVertexAttributeSetIndex=l.setIndex+1),i.push({index:t.attributeIndex++,vertexBuffer:l.buffer,componentsPerAttribute:_n.getNumberOfComponents(l.type),componentDatatype:l.componentDatatype,normalize:!1,offsetInBytes:l.byteOffset,strideInBytes:l.byteStride,instanceDivisor:1}),a.addAttribute("float",`a_instanceFeatureId_${l.setIndex}`))}}var cx=W0t;var RHn=R(W(),1);var Q$={};Q$.name="ModelMatrixUpdateStage";Q$.update=function(t,e,n){let i=n.mode!==ut.SCENE3D;if(!(i&&e._model._projectTo2D)&&t._transformDirty){let o=i?e._computedModelMatrix2D:e._computedModelMatrix;T0t(t,e,o,t.transformToRoot),t._transformDirty=!1}};function T0t(t,e,n,i){let o;i=L.multiplyTransformation(i,t.transform,new L),t.updateComputedTransform();let a=t.runtimePrimitives.length;for(o=0;o1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return r.textureDimensions}),t.uniformMap=ze(o,t.uniformMap)};var Zx=I0t;var zHn=R(W(),1);var N0t={name:"ClassificationPipelineStage"};N0t.process=function(t,e,n){t.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,Xt.BOTH);let o=t.runtimePrimitive;c(o.batchLengths)||noe(e,o)};function noe(t,e){let n=Mn.getAttributeBySemantic(t,sn.POSITION);if(!c(n))throw new St("Primitives must have a position attribute to be used for classification.");let i,o=t.indices,a=c(o);a&&(i=o.typedArray,o.typedArray=void 0);let s=a?o.count:n.count,l=Mn.getAttributeBySemantic(t,sn.FEATURE_ID,0);if(!c(l)){e.batchLengths=[s],e.batchOffsets=[0];return}let r=l.typedArray;l.typedArray=void 0;let d=[],m=[0],h=a?i[0]:0,Z=r[h],b=0;for(let F=1;F=t.featureIdVertexAttributeSetIndex&&(t.featureIdVertexAttributeSetIndex=l.setIndex+1),i.push({index:t.attributeIndex++,vertexBuffer:l.buffer,componentsPerAttribute:_n.getNumberOfComponents(l.type),componentDatatype:l.componentDatatype,normalize:!1,offsetInBytes:l.byteOffset,strideInBytes:l.byteStride,instanceDivisor:1}),a.addAttribute("float",`a_instanceFeatureId_${l.setIndex}`))}}var cx=W0t;var bHn=b(W(),1);var Q$={};Q$.name="ModelMatrixUpdateStage";Q$.update=function(t,e,n){let i=n.mode!==Vt.SCENE3D;if(!(i&&e._model._projectTo2D)&&t._transformDirty){let o=i?e._computedModelMatrix2D:e._computedModelMatrix;S0t(t,e,o,t.transformToRoot),t._transformDirty=!1}};function S0t(t,e,n,i){let o;i=L.multiplyTransformation(i,t.transform,new L),t.updateComputedTransform();let a=t.runtimePrimitives.length;for(o=0;o1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return r.textureDimensions}),t.uniformMap=ze(o,t.uniformMap)};var ux=I0t;var zHn=b(W(),1);var N0t={name:"ClassificationPipelineStage"};N0t.process=function(t,e,n){t.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,Xt.BOTH);let o=t.runtimePrimitive;c(o.batchLengths)||noe(e,o)};function noe(t,e){let n=Mn.getAttributeBySemantic(t,sn.POSITION);if(!c(n))throw new Tt("Primitives must have a position attribute to be used for classification.");let i,o=t.indices,a=c(o);a&&(i=o.typedArray,o.typedArray=void 0);let s=a?o.count:n.count,l=Mn.getAttributeBySemantic(t,sn.FEATURE_ID,0);if(!c(l)){e.batchLengths=[s],e.batchOffsets=[0];return}let r=l.typedArray;l.typedArray=void 0;let d=[],m=[0],h=a?i[0]:0,u=r[h],R=0;for(let F=1;Fhoe(i,e,n)):[]}function hoe(t,e,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:a}=Mn,s=t.class.id,l=n?.classes[s],r=Object.entries(t.properties),d=new Array(r.length);for(let m=0;muoe(n,e)):[]}function uoe(t,e){let{sanitizeGlslIdentifier:n}=Mn,i=t.class.id,o=e?.classes[i],a=Object.entries(t.properties).filter(([l,r])=>r.isGpuCompatible()),s=new Array(a.length);for(let l=0;lm),n.addStructField(go.STRUCT_ID_METADATA_FS,a,o);let b=`attributes.texCoord_${l}`,u=b;if(c(h)&&!ot.equals(h,ot.IDENTITY)){let T=`${Z}Transform`;n.addUniform("mat3",T,Xt.FRAGMENT),i[T]=function(){return h},u=`vec2(${T} * vec3(${b}, 1.0))`}let F=`texture(${Z}, ${u}).${r}`,U=s.unpackInShader(F),G=J0t({valueExpression:U,renderResources:t,glslType:a,metadataVariable:o,shaderDestination:Xt.FRAGMENT,property:s}),A=`metadata.${o} = ${G};`;n.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_FS,[A])}function Y0t(t,e){let{classProperty:n}=e.property,{metadataVariable:i,glslType:o,shaderDestination:a}=e,s=X0t(go.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),l=`${o}MetadataClass`;t.addStructField(go.STRUCT_ID_METADATA_CLASS_FS,l,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_FS,s),Xt.includesVertexShader(a)&&(t.addStructField(go.STRUCT_ID_METADATA_CLASS_VS,l,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function x0t(t,e){let{propertyStatistics:n}=e;if(!c(n))return;let{metadataVariable:i,type:o,glslType:a}=e;if(o===Nn.ENUM)return;let s=go.METADATA_STATISTICS_FIELDS,l=`metadataStatistics.${i}`,r=X0t(s,n,l,a),d=`${a}MetadataStatistics`;t.addStructField(go.STRUCT_ID_METADATA_STATISTICS_FS,d,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_FS,r),Xt.includesVertexShader(e.shaderDestination)&&(t.addStructField(go.STRUCT_ID_METADATA_STATISTICS_VS,d,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_VS,r))}function X0t(t,e,n,i){function o(a){let s=e[a.specName];if(c(s))return`${n}.${a.shaderName} = ${i}(${s});`}return c(e)?t.map(o).filter(c):[]}function J0t(t){let{valueExpression:e,property:n}=t;if(!n.hasValueTransform)return e;let i=t.metadataVariable,o=`u_${i}_offset`,a=`u_${i}_scale`,{shaderBuilder:s,uniformMap:l}=t.renderResources,{glslType:r,shaderDestination:d}=t;s.addUniform(r,o,d),s.addUniform(r,a,d);let{offset:m,scale:h}=n;return l[o]=()=>m,l[a]=()=>h,`czm_valueTransform(${o}, ${a}, ${e})`}var _p=go;var vwn=R(W(),1),Goe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},iF=Object.freeze(Goe);var Hr={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:Gn};Hr.process=function(t,e,n){let{shaderBuilder:i,model:o,alphaOptions:a}=t,{customShader:s}=o,{lightingModel:l,translucencyMode:r}=s;c(l)&&(t.lightingOptions.lightingModel=l),r===iF.TRANSLUCENT?a.pass=Pt.TRANSLUCENT:r===iF.OPAQUE&&(a.pass=void 0);let d=Noe(s,e);if(!d.customShaderEnabled)return;if(koe(i,s,d),d.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,Xt.BOTH),c(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,Xt.VERTEX),c(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,Xt.FRAGMENT);let Z=Z0.getDefineName(s.mode);i.addDefine(Z,void 0,Xt.FRAGMENT)}let m=s.uniforms;for(let Z in m)if(m.hasOwnProperty(Z)){let b=m[Z];i.addUniform(b.type,Z)}let h=s.varyings;for(let Z in h)if(h.hasOwnProperty(Z)){let b=h[Z];i.addVarying(b,Z)}t.uniformMap=ze(t.uniformMap,s.uniformMap)};function Aoe(t){let e={};for(let n=0;nhoe(i,e,n)):[]}function hoe(t,e,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:a}=Mn,s=t.class.id,l=n?.classes[s],r=Object.entries(t.properties),d=new Array(r.length);for(let m=0;mVoe(n,e)):[]}function Voe(t,e){let{sanitizeGlslIdentifier:n}=Mn,i=t.class.id,o=e?.classes[i],a=Object.entries(t.properties).filter(([l,r])=>r.isGpuCompatible()),s=new Array(a.length);for(let l=0;lm),n.addStructField(go.STRUCT_ID_METADATA_FS,a,o);let R=`attributes.texCoord_${l}`,V=R;if(c(h)&&!ot.equals(h,ot.IDENTITY)){let S=`${u}Transform`;n.addUniform("mat3",S,Xt.FRAGMENT),i[S]=function(){return h},V=`vec2(${S} * vec3(${R}, 1.0))`}let F=`texture(${u}, ${V}).${r}`,U=s.unpackInShader(F),G=J0t({valueExpression:U,renderResources:t,glslType:a,metadataVariable:o,shaderDestination:Xt.FRAGMENT,property:s}),A=`metadata.${o} = ${G};`;n.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_FS,[A])}function Y0t(t,e){let{classProperty:n}=e.property,{metadataVariable:i,glslType:o,shaderDestination:a}=e,s=X0t(go.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),l=`${o}MetadataClass`;t.addStructField(go.STRUCT_ID_METADATA_CLASS_FS,l,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_FS,s),Xt.includesVertexShader(a)&&(t.addStructField(go.STRUCT_ID_METADATA_CLASS_VS,l,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function x0t(t,e){let{propertyStatistics:n}=e;if(!c(n))return;let{metadataVariable:i,type:o,glslType:a}=e;if(o===Nn.ENUM)return;let s=go.METADATA_STATISTICS_FIELDS,l=`metadataStatistics.${i}`,r=X0t(s,n,l,a),d=`${a}MetadataStatistics`;t.addStructField(go.STRUCT_ID_METADATA_STATISTICS_FS,d,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_FS,r),Xt.includesVertexShader(e.shaderDestination)&&(t.addStructField(go.STRUCT_ID_METADATA_STATISTICS_VS,d,i),t.addFunctionLines(go.FUNCTION_ID_INITIALIZE_METADATA_VS,r))}function X0t(t,e,n,i){function o(a){let s=e[a.specName];if(c(s))return`${n}.${a.shaderName} = ${i}(${s});`}return c(e)?t.map(o).filter(c):[]}function J0t(t){let{valueExpression:e,property:n}=t;if(!n.hasValueTransform)return e;let i=t.metadataVariable,o=`u_${i}_offset`,a=`u_${i}_scale`,{shaderBuilder:s,uniformMap:l}=t.renderResources,{glslType:r,shaderDestination:d}=t;s.addUniform(r,o,d),s.addUniform(r,a,d);let{offset:m,scale:h}=n;return l[o]=()=>m,l[a]=()=>h,`czm_valueTransform(${o}, ${a}, ${e})`}var _p=go;var vwn=b(W(),1),Goe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},iF=Object.freeze(Goe);var Hr={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:Gn};Hr.process=function(t,e,n){let{shaderBuilder:i,model:o,alphaOptions:a}=t,{customShader:s}=o,{lightingModel:l,translucencyMode:r}=s;c(l)&&(t.lightingOptions.lightingModel=l),r===iF.TRANSLUCENT?a.pass=Pt.TRANSLUCENT:r===iF.OPAQUE&&(a.pass=void 0);let d=Noe(s,e);if(!d.customShaderEnabled)return;if(koe(i,s,d),d.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,Xt.BOTH),c(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,Xt.VERTEX),c(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,Xt.FRAGMENT);let u=u0.getDefineName(s.mode);i.addDefine(u,void 0,Xt.FRAGMENT)}let m=s.uniforms;for(let u in m)if(m.hasOwnProperty(u)){let R=m[u];i.addUniform(R.type,u)}let h=s.varyings;for(let u in h)if(h.hasOwnProperty(u)){let R=h[u];i.addVarying(R,u)}t.uniformMap=ze(t.uniformMap,s.uniformMap)};function Aoe(t){let e={};for(let n=0;n1?(u=t.attributeIndex,t.attributeIndex+=Z):b&&!r?u=0:u=t.attributeIndex++,_oe(t,h,u,Z,s,l)}joe(i,e.attributes),e.primitiveType===le.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(Ix),i.addFragmentLines(Cx)};function _oe(t,e,n,i,o,a){let s=t.shaderBuilder,l=Mn.getAttributeInfo(e),r=o&&!a;i>1?Hoe(t,e,n,i):Ooe(t,e,n,r),Poe(s,l,r),woe(s,l),c(e.semantic)&&Doe(s,e),voe(s,l,o),Koe(s,l,r),zoe(s,l)}function Doe(t,e){let n=e.semantic,i=e.setIndex;switch(n){case sn.NORMAL:t.addDefine("HAS_NORMALS");break;case sn.TANGENT:t.addDefine("HAS_TANGENTS");break;case sn.FEATURE_ID:t.addDefine(`HAS${n}_${i}`);break;case sn.TEXCOORD:case sn.COLOR:t.addDefine(`HAS_${n}_${i}`)}}function Ooe(t,e,n,i){let o=e.quantization,a,s;c(o)?(a=o.type,s=o.componentDatatype):(a=e.type,s=e.componentDatatype);let l=e.semantic,r=e.setIndex;l===sn.FEATURE_ID&&r>=t.featureIdVertexAttributeSetIndex&&(t.featureIdVertexAttributeSetIndex=r+1);let d=l===sn.POSITION,m=d?0:n,h=_n.getNumberOfComponents(a),Z={index:m,value:c(e.buffer)?void 0:e.constant,vertexBuffer:e.buffer,count:e.count,componentsPerAttribute:h,componentDatatype:s,offsetInBytes:e.byteOffset,strideInBytes:e.byteStride,normalize:e.normalized};if(t.attributes.push(Z),!d||!i)return;let b=t.runtimePrimitive.positionBuffer2D,u={index:n,vertexBuffer:b,count:e.count,componentsPerAttribute:h,componentDatatype:it.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:e.normalized};t.attributes.push(u)}function Hoe(t,e,n,i){let o=e.quantization,a,s;c(o)?(a=o.type,s=o.componentDatatype):(a=e.type,s=e.componentDatatype);let l=e.normalized,d=_n.getNumberOfComponents(a)/i,m=it.getSizeInBytes(s),h=d*m,Z=e.byteStride;for(let b=0;b1?(V=t.attributeIndex,t.attributeIndex+=u):R&&!r?V=0:V=t.attributeIndex++,_oe(t,h,V,u,s,l)}joe(i,e.attributes),e.primitiveType===le.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(Ix),i.addFragmentLines(Cx)};function _oe(t,e,n,i,o,a){let s=t.shaderBuilder,l=Mn.getAttributeInfo(e),r=o&&!a;i>1?Hoe(t,e,n,i):Ooe(t,e,n,r),Poe(s,l,r),woe(s,l),c(e.semantic)&&Doe(s,e),voe(s,l,o),Koe(s,l,r),zoe(s,l)}function Doe(t,e){let n=e.semantic,i=e.setIndex;switch(n){case sn.NORMAL:t.addDefine("HAS_NORMALS");break;case sn.TANGENT:t.addDefine("HAS_TANGENTS");break;case sn.FEATURE_ID:t.addDefine(`HAS${n}_${i}`);break;case sn.TEXCOORD:case sn.COLOR:t.addDefine(`HAS_${n}_${i}`)}}function Ooe(t,e,n,i){let o=e.quantization,a,s;c(o)?(a=o.type,s=o.componentDatatype):(a=e.type,s=e.componentDatatype);let l=e.semantic,r=e.setIndex;l===sn.FEATURE_ID&&r>=t.featureIdVertexAttributeSetIndex&&(t.featureIdVertexAttributeSetIndex=r+1);let d=l===sn.POSITION,m=d?0:n,h=_n.getNumberOfComponents(a),u={index:m,value:c(e.buffer)?void 0:e.constant,vertexBuffer:e.buffer,count:e.count,componentsPerAttribute:h,componentDatatype:s,offsetInBytes:e.byteOffset,strideInBytes:e.byteStride,normalize:e.normalized};if(t.attributes.push(u),!d||!i)return;let R=t.runtimePrimitive.positionBuffer2D,V={index:n,vertexBuffer:R,count:e.count,componentsPerAttribute:h,componentDatatype:it.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:e.normalized};t.attributes.push(V)}function Hoe(t,e,n,i){let o=e.quantization,a,s;c(o)?(a=o.type,s=o.componentDatatype):(a=e.type,s=e.componentDatatype);let l=e.normalized,d=_n.getNumberOfComponents(a)/i,m=it.getSizeInBytes(s),h=d*m,u=e.byteStride;for(let R=0;R0,d=!c(l)&&r;if(c(a)&&!d){let F=bae(l),U=Rae(a,F);Wae(i,U);let A=fae(U).indexOf("normalMC")>=0,T=Mn.getAttributeBySemantic(e,sn.NORMAL);if(A&&!T)throw new St("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,Xt.VERTEX),U.styleTranslucent&&(t.alphaOptions.pass=Pt.TRANSLUCENT)}let m=o.pointCloudShading;m.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,Xt.VERTEX),m.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,Xt.VERTEX);let h,Z,b;Is.is3DTiles(o.type)&&(Z=!0,h=o.content,b=h.tile.refine===ss.ADD),i.addUniform("vec4","model_pointCloudParameters",Xt.VERTEX),i.addVertexLines(Lx);let u=t.uniformMap;u.model_pointCloudParameters=function(){let F=pae,U=1;Z&&(U=b?5:h.tileset.memoryAdjustedScreenSpaceError),F.x=f(m.maximumAttenuation,U),F.x*=n.pixelRatio;let G=uae(t,e,m,h);F.y=G*m.geometricErrorScale;let A=n.context,T=n.camera.frustum,g;return n.mode===ut.SCENE2D||T instanceof wn?g=Number.POSITIVE_INFINITY:g=A.drawingBufferHeight/n.camera.frustum.sseDenominator,F.z=g,Z&&(F.w=h.tileset.timeSinceLoad),F}};var j0t=new p;function uae(t,e,n,i){if(c(i)){let m=i.tile.geometricError;if(m>0)return m}if(c(n.baseResolution))return n.baseResolution;let o=Mn.getAttributeBySemantic(e,sn.POSITION),a=o.count,s=t.runtimeNode.transform,l=p.subtract(o.max,o.min,j0t);l=L.multiplyByPointAsVector(s,l,j0t);let r=l.x*l.y*l.z;return k.cbrt(r/a)}var Zae={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},Vae={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function bae(t){let e=be(Vae);if(!c(t))return e;for(let n=0;n0,d=!c(l)&&r;if(c(a)&&!d){let F=Rae(l),U=bae(a,F);Wae(i,U);let A=fae(U).indexOf("normalMC")>=0,S=Mn.getAttributeBySemantic(e,sn.NORMAL);if(A&&!S)throw new Tt("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,Xt.VERTEX),U.styleTranslucent&&(t.alphaOptions.pass=Pt.TRANSLUCENT)}let m=o.pointCloudShading;m.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,Xt.VERTEX),m.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,Xt.VERTEX);let h,u,R;Is.is3DTiles(o.type)&&(u=!0,h=o.content,R=h.tile.refine===ss.ADD),i.addUniform("vec4","model_pointCloudParameters",Xt.VERTEX),i.addVertexLines(Lx);let V=t.uniformMap;V.model_pointCloudParameters=function(){let F=pae,U=1;u&&(U=R?5:h.tileset.memoryAdjustedScreenSpaceError),F.x=f(m.maximumAttenuation,U),F.x*=n.pixelRatio;let G=Vae(t,e,m,h);F.y=G*m.geometricErrorScale;let A=n.context,S=n.camera.frustum,g;return n.mode===Vt.SCENE2D||S instanceof wn?g=Number.POSITIVE_INFINITY:g=A.drawingBufferHeight/n.camera.frustum.sseDenominator,F.z=g,u&&(F.w=h.tileset.timeSinceLoad),F}};var j0t=new p;function Vae(t,e,n,i){if(c(i)){let m=i.tile.geometricError;if(m>0)return m}if(c(n.baseResolution))return n.baseResolution;let o=Mn.getAttributeBySemantic(e,sn.POSITION),a=o.count,s=t.runtimeNode.transform,l=p.subtract(o.max,o.min,j0t);l=L.multiplyByPointAsVector(s,l,j0t);let r=l.x*l.y*l.z;return k.cbrt(r/a)}var uae={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},Zae={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function Rae(t){let e=Re(Zae);if(!c(t))return e;for(let n=0;n0,Z=c(i.skin),b=c(a),F=!(b&&c(a.fragmentShaderText))||a.mode!==Z0.REPLACE_MATERIAL,U=Mn.hasQuantizedAttributes(n.attributes),G=o.debugWireframe&&le.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||l),A=o.pointCloudShading,T=c(A)&&A.attenuation,g=c(A)&&A.backFaceCulling,C=n.primitiveType===le.POINTS&&(c(s)||T||g),y=o._enableShowOutline&&c(n.outlineCoordinates),Y=_ae(o,i,n),Q=c(o.classificationType);d&&e.push(wx),e.push(yx),G&&e.push(jx),Q&&e.push(Vx),h&&e.push(Xx),Z&&e.push(vx),C&&e.push(Mx),U&&e.push(Ex),F&&e.push(Yx),e.push(nF),e.push(_p),Y.hasPropertyTable&&(e.push(oF),e.push(Zx),e.push(Wx)),m&&e.push(zx),b&&e.push(Sx),e.push(Qx),o.allowPicking&&e.push(Jx),y&&e.push(Ox),e.push(ux),e.push(Hx)};function _ae(t,e,n){let i;return c(e.instances)&&(i=Mn.getFeatureIdsByLabel(e.instances.featureIds,t.instanceFeatureIdLabel),c(i))?{hasFeatureIds:!0,hasPropertyTable:c(i.propertyTableId)}:(i=Mn.getFeatureIdsByLabel(n.featureIds,t.featureIdLabel),c(i)?{hasFeatureIds:!0,hasPropertyTable:c(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var qx=mWt;var v3n=R(W(),1);function M$(t){t=f(t,f.EMPTY_OBJECT),this._sceneGraph=t.sceneGraph;let e=t.skin;this._skin=e,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],Dae(this)}Object.defineProperties(M$.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function Dae(t){let e=t.skin,n=e.inverseBindMatrices;t._inverseBindMatrices=n;let i=e.joints,o=i.length,a=t.sceneGraph._runtimeNodes,s=t.joints,l=t._jointMatrices;for(let r=0;r0,u=c(i.skin),R=c(a),F=!(R&&c(a.fragmentShaderText))||a.mode!==u0.REPLACE_MATERIAL,U=Mn.hasQuantizedAttributes(n.attributes),G=o.debugWireframe&&le.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||l),A=o.pointCloudShading,S=c(A)&&A.attenuation,g=c(A)&&A.backFaceCulling,C=n.primitiveType===le.POINTS&&(c(s)||S||g),y=o._enableShowOutline&&c(n.outlineCoordinates),Y=_ae(o,i,n),Q=c(o.classificationType);d&&e.push(wx),e.push(yx),G&&e.push(jx),Q&&e.push(Zx),h&&e.push(Xx),u&&e.push(vx),C&&e.push(Mx),U&&e.push(Ex),F&&e.push(Yx),e.push(nF),e.push(_p),Y.hasPropertyTable&&(e.push(oF),e.push(ux),e.push(Wx)),m&&e.push(zx),R&&e.push(Tx),e.push(Qx),o.allowPicking&&e.push(Jx),y&&e.push(Ox),e.push(Vx),e.push(Hx)};function _ae(t,e,n){let i;return c(e.instances)&&(i=Mn.getFeatureIdsByLabel(e.instances.featureIds,t.instanceFeatureIdLabel),c(i))?{hasFeatureIds:!0,hasPropertyTable:c(i.propertyTableId)}:(i=Mn.getFeatureIdsByLabel(n.featureIds,t.featureIdLabel),c(i)?{hasFeatureIds:!0,hasPropertyTable:c(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var qx=mWt;var vKn=b(W(),1);function M$(t){t=f(t,f.EMPTY_OBJECT),this._sceneGraph=t.sceneGraph;let e=t.skin;this._skin=e,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],Dae(this)}Object.defineProperties(M$.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function Dae(t){let e=t.skin,n=e.inverseBindMatrices;t._inverseBindMatrices=n;let i=e.joints,o=i.length,a=t.sceneGraph._runtimeNodes,s=t.joints,l=t._jointMatrices;for(let r=0;r 0.0 && gl_FragCoord.x < czm_splitPosition) discard; #endif } -`;var eP={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};eP.process=function(t,e,n){let i=t.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,Xt.FRAGMENT),i.addFragmentLines(aX);let o={};i.addUniform("float",eP.SPLIT_DIRECTION_UNIFORM_NAME,Xt.FRAGMENT),o[eP.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return e.splitDirection},t.uniformMap=ze(o,t.uniformMap)};var sX=eP;var Gzn=R(W(),1);function wae(t,e){this.model=t.model,this.shaderBuilder=t.shaderBuilder.clone(),this.uniformMap=be(t.uniformMap),this.alphaOptions=be(t.alphaOptions),this.renderStateOptions=be(t.renderStateOptions,!0),this.hasSilhouette=t.hasSilhouette,this.hasSkipLevelOfDetail=t.hasSkipLevelOfDetail,this.runtimeNode=e,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0}var lX=wae;var kzn=R(W(),1);var gzn=R(W(),1);function Pae(t){t=f(t,f.EMPTY_OBJECT),this.lightingModel=f(t.lightingModel,nb.UNLIT)}var rX=Pae;function vae(t,e){this.model=t.model,this.runtimeNode=t.runtimeNode,this.attributes=t.attributes.slice(),this.attributeIndex=t.attributeIndex,this.featureIdVertexAttributeSetIndex=t.featureIdVertexAttributeSetIndex,this.uniformMap=be(t.uniformMap),this.alphaOptions=be(t.alphaOptions),this.renderStateOptions=be(t.renderStateOptions,!0),this.hasSilhouette=t.hasSilhouette,this.hasSkipLevelOfDetail=t.hasSkipLevelOfDetail,this.shaderBuilder=t.shaderBuilder.clone(),this.instanceCount=t.instanceCount,this.runtimePrimitive=e;let n=e.primitive;this.count=c(n.indices)?n.indices.count:Mn.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Mn.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=p.clone(i.min,new p),this.positionMax=p.clone(i.max,new p),this.boundingSphere=Ft.fromCornerPoints(this.positionMin,this.positionMax,new Ft),this.lightingOptions=new rX,this.pickId=void 0}var dX=vae;function Nh(t){t=f(t,f.EMPTY_OBJECT);let e=t.modelComponents;this._model=t.model,this._components=e,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=L.clone(L.IDENTITY),this._computedModelMatrix2D=L.clone(L.IDENTITY),this._axisCorrectionMatrix=Mn.getAxisCorrectionMatrix(e.upAxis,e.forwardAxis,new L),this._runtimeArticulations={},Kae(this)}Object.defineProperties(Nh.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function Kae(t){let e=t._components,n=e.scene,o=t._model.modelMatrix;pWt(t,o);let a=e.articulations,s=a.length,l=t._runtimeArticulations;for(let A=0;A0&&(h=ts(n,e,l),e+=l,r>0&&(Z=new Uint8Array(t,e,r),e+=r));let b=new FZ(d,m),u=b.getGlobalProperty("POINTS_LENGTH");if(b.featuresLength=u,!c(u))throw new St("Feature table global property: POINTS_LENGTH must be defined");let F=b.getGlobalProperty("RTC_CENTER",it.FLOAT,3);c(F)&&(F=p.unpack(F));let U=cse(b,h);if(U.rtcCenter=F,U.pointsLength=u,!U.hasPositions){let G=mse(b);U.positions=G,U.hasPositions=U.hasPositions||c(G)}if(!U.hasPositions)throw new St("Either POSITION or POSITION_QUANTIZED must be defined.");if(!U.hasNormals){let G=pse(b);U.normals=G,U.hasNormals=U.hasNormals||c(G)}if(!U.hasColors){let G=hse(b);U.colors=G,U.hasColors=U.hasColors||c(G),U.hasConstantColor=c(U.constantColor),U.isTranslucent=c(G)&&G.isTranslucent}if(!U.hasBatchIds){let G=use(b);U.batchIds=G,U.hasBatchIds=U.hasBatchIds||c(G)}if(U.hasBatchIds){let G=b.getGlobalProperty("BATCH_LENGTH");if(!c(G))throw new St("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");U.batchLength=G}return c(Z)&&(Z=new Uint8Array(Z),U.batchTableJson=h,U.batchTableBinary=Z),U};function cse(t,e){let n=t.json,i,o,a,s=c(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,l=c(e)&&c(e.extensions)?e.extensions["3DTILES_draco_point_compression"]:void 0;c(l)&&(a=l.properties);let r,d,m,h,Z;if(c(s)){o=s.properties;let u=s.byteOffset,F=s.byteLength;if(!c(o)||!c(u)||!c(F))throw new St("Draco properties, byteOffset, and byteLength must be defined");i=t.buffer.slice(u,u+F),r=c(o.POSITION),d=c(o.RGB)||c(o.RGBA),m=c(o.NORMAL),h=c(o.BATCH_ID),Z=c(o.RGBA)}let b;return c(i)&&(b={buffer:i,featureTableProperties:o,batchTableProperties:a,properties:ze(o,a),dequantizeInShader:!0}),{draco:b,hasPositions:r,hasColors:d,isTranslucent:Z,hasNormals:m,hasBatchIds:h}}function mse(t){let e=t.json,n;if(c(e.POSITION))return n=t.getPropertyArray("POSITION",it.FLOAT,3),{name:sn.POSITION,semantic:sn.POSITION,typedArray:n,isQuantized:!1,componentDatatype:it.FLOAT,type:_n.VEC3};if(c(e.POSITION_QUANTIZED)){n=t.getPropertyArray("POSITION_QUANTIZED",it.UNSIGNED_SHORT,3);let i=t.getGlobalProperty("QUANTIZED_VOLUME_SCALE",it.FLOAT,3);if(!c(i))throw new St("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,a=t.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",it.FLOAT,3);if(!c(a))throw new St("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:sn.POSITION,semantic:sn.POSITION,typedArray:n,isQuantized:!0,componentDatatype:it.FLOAT,type:_n.VEC3,quantizedRange:o,quantizedVolumeOffset:p.unpack(a),quantizedVolumeScale:p.unpack(i),quantizedComponentDatatype:it.UNSIGNED_SHORT,quantizedType:_n.VEC3}}}function hse(t){let e=t.json,n;if(c(e.RGBA))return n=t.getPropertyArray("RGBA",it.UNSIGNED_BYTE,4),{name:sn.COLOR,semantic:sn.COLOR,setIndex:0,typedArray:n,componentDatatype:it.UNSIGNED_BYTE,type:_n.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(c(e.RGB))return n=t.getPropertyArray("RGB",it.UNSIGNED_BYTE,3),{name:"COLOR",semantic:sn.COLOR,setIndex:0,typedArray:n,componentDatatype:it.UNSIGNED_BYTE,type:_n.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(c(e.RGB565))return n=t.getPropertyArray("RGB565",it.UNSIGNED_SHORT,1),{name:"COLOR",semantic:sn.COLOR,setIndex:0,typedArray:n,componentDatatype:it.FLOAT,type:_n.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(c(e.CONSTANT_RGBA)){let i=t.getGlobalProperty("CONSTANT_RGBA",it.UNSIGNED_BYTE,4),o=i[3],a=v.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:sn.COLOR,semantic:sn.COLOR,setIndex:0,constantColor:a,componentDatatype:it.FLOAT,type:_n.VEC4,isQuantized:!1,isTranslucent:s}}}function pse(t){let e=t.json,n;if(c(e.NORMAL))return n=t.getPropertyArray("NORMAL",it.FLOAT,3),{name:sn.NORMAL,semantic:sn.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:it.FLOAT,type:_n.VEC3};if(c(e.NORMAL_OCT16P))return n=t.getPropertyArray("NORMAL_OCT16P",it.UNSIGNED_BYTE,2),{name:sn.NORMAL,semantic:sn.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:_n.VEC2,quantizedComponentDatatype:it.UNSIGNED_BYTE,componentDatatype:it.FLOAT,type:_n.VEC3}}function use(t){let e=t.json;if(c(e.BATCH_ID)){let n=t.getPropertyArray("BATCH_ID",it.UNSIGNED_SHORT,1);return{name:sn.FEATURE_ID,semantic:sn.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:it.fromTypedArray(n),type:_n.SCALAR}}}var xA=bWt;var Zse=Tn.Components,Vse=Tn.Scene,bse=Tn.Node,Rse=Tn.Primitive,Wse=Tn.Attribute,RWt=Tn.Quantization,fse=Tn.FeatureIdAttribute,Fse=Tn.Material,Use=Tn.MetallicRoughness;function sF(t){t=f(t,f.EMPTY_OBJECT);let e=t.arrayBuffer,n=f(t.byteOffset,0);this._arrayBuffer=e,this._byteOffset=n,this._loadAttributesFor2D=f(t.loadAttributesFor2D,!1),this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=pn.UNLOADED,this._buffers=[],this._components=void 0,this._transform=L.IDENTITY}c(Object.create)&&(sF.prototype=Object.create(Va.prototype),sF.prototype.constructor=sF);Object.defineProperties(sF.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});sF.prototype.load=function(){if(c(this._promise))return this._promise;this._parsedContent=xA.parse(this._arrayBuffer,this._byteOffset),this._state=pn.PROCESSING,this._promise=Promise.resolve(this)};sF.prototype.process=function(t){if(c(this._error)){let e=this._error;throw this._error=void 0,e}if(this._state===pn.READY)return!0;if(this._state===pn.PROCESSING){if(c(this._decodePromise))return!1;this._decodePromise=Gse(this,t.context)}return!1};function Gse(t,e){let i=t._parsedContent.draco,o;if(c(i)?o=$R.decodePointCloud(i,e):o=Promise.resolve(),!!c(o))return t._decodePromise=o,o.then(function(a){if(!t.isDestroyed())return c(a)&&Ase(t,i,a),kse(t,e),t._state=pn.READY,t}).catch(function(a){t.unload(),t._state=pn.FAILED;let s="Failed to load Draco pnts";t._error=t.getError(s,a)})}function Ase(t,e,n){t._state=pn.READY;let i=t._parsedContent,o;if(c(n.POSITION)){if(o={name:"POSITION",semantic:sn.POSITION,typedArray:n.POSITION.array,componentDatatype:it.FLOAT,type:_n.VEC3,isQuantized:!1},c(n.POSITION.data.quantization)){let l=n.POSITION.data.quantization,r=l.range,d=p.fromElements(r,r,r),m=p.unpack(l.minValues),h=(1<0&&Yse(t,l,h,e),c(n.rtcCenter)&&(m.transform=L.multiplyByTranslation(m.transform,n.rtcCenter,m.transform));let Z=n.positions;c(Z)&&Z.isQuantized&&(m.transform=L.multiplyByTranslation(m.transform,Z.quantizedVolumeOffset,m.transform)),t._components=m,t._parsedContent=void 0,t._arrayBuffer=void 0}function Yse(t,e,n,i){let o=e.attributes,a=n.length;for(let s=0;s=0&&(l=Nt)}}}}if(l!==Number.MAX_VALUE){if(s=di.getPoint(e,l,s),n.mode!==ut.SCENE3D){p.fromElements(s.y,s.z,s.x,s);let m=n.mapProjection,h=m.ellipsoid,Z=m.unproject(s,Dse);h.cartographicToCartesian(Z,s)}return s}}function _$(t,e,n,i,o,a,s,l,r,d){let m=n+e*i;if(d.x=t[m],d.y=t[m+1],d.z=t[m+2],c(o))if(o.octEncoded){if(d=Ni.octDecodeInRange(d,o.normalizationRange,d),o.octEncodedZXY){let h=d.x;d.x=d.z,d.z=d.y,d.y=h}}else d=p.multiplyComponents(d,o.quantizedVolumeStepSize,d),d=p.add(d,o.quantizedVolumeOffset,d);return d=L.multiplyByPoint(a,d,d),s!==1&&Ps.getPosition(d,r,s,l,d),d}function Ia(t){t=f(t,f.EMPTY_OBJECT),this._loader=t.loader,this._resource=t.resource,this.type=f(t.type,Is.GLTF),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=L.clone(this.modelMatrix),this._scale=f(t.scale,1),this._minimumPixelSize=f(t.minimumPixelSize,0),this._maximumScale=t.maximumScale,this._clampedScale=c(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=ot.clone(ot.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=t.customShader,this._content=t.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new kY(this),this._clampAnimations=f(t.clampAnimations,!0),this._userAnimationDirty=!1,this._id=t.id,this._idDirty=!1,this._color=v.clone(t.color),this._colorBlendMode=f(t.colorBlendMode,Kd.HIGHLIGHT),this._colorBlendAmount=f(t.colorBlendAmount,.5);let e=f(t.silhouetteColor,v.RED);this._silhouetteColor=v.clone(e),this._silhouetteSize=f(t.silhouetteSize,0),this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=f(t.cull,!0),this._opaquePass=f(t.opaquePass,Pt.OPAQUE),this._allowPicking=f(t.allowPicking,!0),this._show=f(t.show,!0),this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=f(t.featureIdLabel,"featureId_0");typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=f(t.instanceFeatureIdLabel,"instanceFeatureId_0");typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new Ft,this._initialRadius=void 0,this._heightReference=f(t.heightReference,Ge.NONE),this._heightDirty=this._heightReference!==Ge.NONE,this._removeUpdateHeightCallback=void 0,this._verticalExaggerationOn=!1,this._clampedModelMatrix=void 0;let o=t.scene;c(o)&&c(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=t.distanceDisplayCondition;let a=new eb(t.pointCloudShading);this._pointCloudShading=a,this._attenuation=a.attenuation,this._pointCloudBackFaceCulling=a.backFaceCulling;let s=t.clippingPlanes;c(s)&&s.owner===void 0?Ml.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=L.clone(L.IDENTITY);let l=t.clippingPolygons;c(l)&&l.owner===void 0?RZ.setOwner(l,this,"_clippingPolygons"):this._clippingPolygons=l,this._clippingPolygonsState=0,this._lightColor=p.clone(t.lightColor),this._imageBasedLighting=c(t.imageBasedLighting)?t.imageBasedLighting:new aA,this._shouldDestroyImageBasedLighting=!c(t.imageBasedLighting),this._backFaceCulling=f(t.backFaceCulling,!0),this._backFaceCullingDirty=!1,this._shadows=f(t.shadows,ui.ENABLED),this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this._enableDebugWireframe=f(t.enableDebugWireframe,!1),this._enableShowOutline=f(t.enableShowOutline,!0),this._debugWireframe=f(t.debugWireframe,!1),this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Is.GLTF&&Gn("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let r=t.credit;typeof r=="string"&&(r=new on(r)),this._credits=[],this._credit=r,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=f(t.showCreditsOnScreen,!1),this._showCreditsOnScreenDirty=!0,this._splitDirection=f(t.splitDirection,Jc.NONE),this._enableShowOutline=f(t.enableShowOutline,!0),this.showOutline=f(t.showOutline,!0),this.outlineColor=f(t.outlineColor,v.BLACK),this._classificationType=t.classificationType,this._statistics=new mX,this._sceneMode=void 0,this._projectTo2D=f(t.projectTo2D,!1),this._enablePick=f(t.enablePick,!1),this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=f(t.ignoreCommands,!1),this._errorEvent=new It,this._readyEvent=new It,this._texturesReadyEvent=new It,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=t.pickObject}function D$(t,e){if(t._errorEvent.numberOfListeners>0){t._errorEvent.raiseEvent(e);return}console.log(e)}function Hse(t,e){let n=t._featureTables,i=e.propertyTables,o=i.length;for(let a=0;a0&&e===0||t===0&&e>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=t}},boundingSphere:{get:function(){let t=c(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return GWt(this,t),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(t){this._debugShowBoundingVolume!==t&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=t}},debugWireframe:{get:function(){return this._debugWireframe},set:function(t){this._debugWireframe!==t&&this.resetDrawCommands(),this._debugWireframe=t,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Is.GLTF&&Gn("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(t){this._show=t}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(t){typeof t=="number"&&(t=`featureId_${t}`),t!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=t}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(t){typeof t=="number"&&(t=`instanceFeatureId_${t}`),t!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=t}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){t!==this._clippingPlanes&&(Ml.setOwner(t,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(t){t!==this._clippingPolygons&&(RZ.setOwner(t,this,"_clippingPolygons"),this.resetDrawCommands())}},lightColor:{get:function(){return this._lightColor},set:function(t){c(t)!==c(this._lightColor)&&this.resetDrawCommands(),this._lightColor=p.clone(t,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(t){t!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=t,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(t){t!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=t}},scale:{get:function(){return this._scale},set:function(t){t!==this._scale&&(this._updateModelMatrix=!0),this._scale=t}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(t){t!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=t}},maximumScale:{get:function(){return this._maximumScale},set:function(t){t!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=t}},shadows:{get:function(){return this._shadows},set:function(t){t!==this._shadows&&(this._shadowsDirty=!0),this._shadows=t}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(t){this._showCreditsOnScreen!==t&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=t}},splitDirection:{get:function(){return this._splitDirection},set:function(t){this._splitDirection!==t&&this.resetDrawCommands(),this._splitDirection=t}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});Ia.prototype.getNode=function(t){return this._nodesByName[t]};Ia.prototype.setArticulationStage=function(t,e){this._sceneGraph.setArticulationStage(t,e)};Ia.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};Ia.prototype.makeStyleDirty=function(){this._styleDirty=!0};Ia.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var Pse=new L,vse=new ot,Kse=new L;Ia.prototype.update=function(t){let e=!1;try{e=zse(this,t)}catch(n){if(!this._loader.incrementallyLoadTextures&&n.name==="TextureError")D$(this,n);else{let i=Mn.getError("model",this._resource,n);D$(this,i)}}if(jse(this,t),qse(this,t),!this._resourcesLoaded&&e){this._resourcesLoaded=!0;let n=this._loader.components;if(!c(n)){if(this._loader.isUnloaded())return;let a=Mn.getError("model",this._resource,new St("Failed to load model."));D$(a),this._rejectLoad=this._rejectLoad&&this._rejectLoad(a)}let i=n.structuralMetadata;c(i)&&i.propertyTableCount>0&&Hse(this,i);let o=new cX({model:this,modelComponents:n});this._sceneGraph=o,this._gltfCredits=o.components.asset.credits}if(!(!this._resourcesLoaded||t.mode===ut.MORPHING)){if($se(this),tle(this),ele(this,t),nle(this),ile(this,t),ole(this,t),ale(this,t),sle(this,t),lle(this,t),rle(this,t),dle(this,t),this._defaultTexture=t.context.defaultTexture,cle(this,t),mle(this,t),hle(this),ple(this,t),Vle(this,t),!this._ready){t.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),Zle(this),ble(this,t),Rle(this),Wle(this,t)}};function zse(t,e){return!t._resourcesLoaded||t._loader.incrementallyLoadTextures&&!t._texturesLoaded?(e.afterRender.push(()=>!0),t._loader.process(e)):!0}function jse(t,e){c(t._customShader)&&t._customShader.update(e)}function qse(t,e){t._imageBasedLighting.update(e),t._imageBasedLighting.shouldRegenerateShaders&&t.resetDrawCommands()}function $se(t){if(!t._featureTableIdDirty)return;t._featureTableIdDirty=!1;let e=t._sceneGraph.components,n=e.structuralMetadata;c(n)&&n.propertyTableCount>0&&(t.featureTableId=wse(e,t),t._styleDirty=!0,t.resetDrawCommands())}function tle(t){t._styleDirty&&(t.applyStyle(t._style),t._styleDirty=!1)}function ele(t,e){let n=t._featureTables,i=n.length,o=!1;for(let a=0;a=i&&a<=o}function Gle(t,e){let n=e.creditDisplay,i=t._credits,o=i.length;for(let a=0;a0&&t.alpha<1};Ia.prototype.isInvisible=function(){let t=this.color;return c(t)&&t.alpha===0};function AWt(t){return t.context.stencilBuffer}Ia.prototype.hasSilhouette=function(t){return AWt(t)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!c(this._classificationType)};Ia.prototype.hasSkipLevelOfDetail=function(t){if(!Is.is3DTiles(this.type))return!1;let e=t.context.stencilBuffer,n=this._content.tileset;return e&&n.isSkippingLevelOfDetail};Ia.prototype.isClippingEnabled=function(){let t=this._clippingPlanes;return c(t)&&t.enabled&&t.length!==0};Ia.prototype.pick=function(t,e,n,i,o){return uC(this,t,e,n,i,o)};Ia.prototype.isClippingPolygonsEnabled=function(){let t=this._clippingPolygons;return c(t)&&t.enabled&&t.length!==0};Ia.prototype.isDestroyed=function(){return!1};Ia.prototype.destroy=function(){let t=this._loader;c(t)&&t.destroy();let e=this._featureTables;if(c(e)){let o=e.length;for(let a=0;a0,i=c(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=c(i)&&c(i[0]);if(e&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(t),UWt(this,t)):(this.applyColorAndShow(t),this._styleCommandsNeeded=void 0)};function uX(t,e,n){return{loader:t,type:e,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var AZ=Ia;function tr(t,e,n){this._tileset=t,this._tile=e,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(tr.prototype,{featuresLength:{get:function(){let t=this._model,e=t.featureTables,n=t.featureTableId;return c(e)&&c(e[n])?e[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let t=this._model.statistics;return t.propertyTablesByteLength+t.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let t=this._model,e=t.featureTables,n=t.featureTableId;if(c(e)&&c(e[n]))return e[n]}},metadata:{get:function(){return this._metadata},set:function(t){this._metadata=t}},group:{get:function(){return this._group},set:function(t){this._group=t}}});tr.prototype.getFeature=function(t){let e=this._model,n=e.featureTableId;return e.featureTables[n].getFeature(t)};tr.prototype.hasProperty=function(t,e){let n=this._model,i=n.featureTableId;return c(i)?n.featureTables[i].hasProperty(t,e):!1};tr.prototype.applyDebugSettings=function(t,e){e=t?e:v.WHITE,this.featuresLength===0?this._model.color=e:c(this.batchTable)&&this.batchTable.setAllColor(e)};tr.prototype.applyStyle=function(t){this._model.style=t};tr.prototype.update=function(t,e){let n=this._model,i=this._tile;n.colorBlendAmount=t.colorBlendAmount,n.colorBlendMode=t.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=t.customShader,n.featureIdLabel=t.featureIdLabel,n.instanceFeatureIdLabel=t.instanceFeatureIdLabel,n.lightColor=t.lightColor,n.imageBasedLighting=t.imageBasedLighting,n.backFaceCulling=t.backFaceCulling,n.shadows=t.shadows,n.showCreditsOnScreen=t.showCreditsOnScreen,n.splitDirection=t.splitDirection,n.debugWireframe=t.debugWireframe,n.showOutline=t.showOutline,n.outlineColor=t.outlineColor,n.pointCloudShading=t.pointCloudShading;let o=t.clippingPlanes;n.referenceMatrix=t.clippingPlanesOriginMatrix,c(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0),c(o)&&c(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let a=t.clippingPolygons;c(a)&&i.clippingPolygonsDirty&&(n._clippingPolygons=a.enabled&&i._isClippedByPolygon?a:void 0),c(a)&&c(n._clippingPolygons)&&n._clippingPolygons!==a&&(n._clippingPolygons=a,n._clippingPolygonsState=0),n.update(e),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:xm.REPEAT}),this._ready=!0)};tr.prototype.isDestroyed=function(){return!1};tr.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),At(this)};tr.fromGltf=async function(t,e,n,i){let o=new tr(t,e,n),s=ZX(t,e,o,{gltf:i,basePath:n}),l=t.vectorClassificationOnly?void 0:t.classificationType;s.classificationType=l;let r=await AZ.fromGltfAsync(s);return o._model=r,o};tr.fromB3dm=async function(t,e,n,i,o){let a=new tr(t,e,n),l=ZX(t,e,a,{arrayBuffer:i,byteOffset:o,resource:n}),r=t.vectorClassificationOnly?void 0:t.classificationType;l.classificationType=r;let d=await AZ.fromB3dm(l);return a._model=d,a};tr.fromI3dm=async function(t,e,n,i,o){let a=new tr(t,e,n),l=ZX(t,e,a,{arrayBuffer:i,byteOffset:o,resource:n}),r=await AZ.fromI3dm(l);return a._model=r,a};tr.fromPnts=async function(t,e,n,i,o){let a=new tr(t,e,n),l=ZX(t,e,a,{arrayBuffer:i,byteOffset:o,resource:n}),r=await AZ.fromPnts(l);return a._model=r,a};tr.fromGeoJson=async function(t,e,n,i){let o=new tr(t,e,n),s=ZX(t,e,o,{geoJson:i,resource:n}),l=await AZ.fromGeoJson(s);return o._model=l,o};tr.prototype.pick=function(t,e,n){if(!c(this._model)||!this._ready)return;let i=e.verticalExaggeration,o=e.verticalExaggerationRelativeHeight;return this._model.pick(t,e,i,o,mt.WGS84,n)};function ZX(t,e,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Pt.CESIUM_3D_TILE,modelMatrix:e.computedTransform,upAxis:t._modelUpAxis,forwardAxis:t._modelForwardAxis,incrementallyLoadTextures:!1,customShader:t.customShader,content:n,colorBlendMode:t.colorBlendMode,colorBlendAmount:t.colorBlendAmount,lightColor:t.lightColor,imageBasedLighting:t.imageBasedLighting,featureIdLabel:t.featureIdLabel,instanceFeatureIdLabel:t.instanceFeatureIdLabel,pointCloudShading:t.pointCloudShading,clippingPlanes:t.clippingPlanes,backFaceCulling:t.backFaceCulling,shadows:t.shadows,showCreditsOnScreen:t.showCreditsOnScreen,splitDirection:t.splitDirection,enableDebugWireframe:t._enableDebugWireframe,debugWireframe:t.debugWireframe,projectTo2D:t._projectTo2D,enablePick:t._enablePick,enableShowOutline:t._enableShowOutline,showOutline:t.showOutline,outlineColor:t.outlineColor};return ze(i,o)}var ib=tr;var b8n=R(W(),1);function Dp(t,e,n){this._tileset=t,this._tile=e,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Dp.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(t){this._metadata=t}},group:{get:function(){return this._group},set:function(t){this._group=t}}});Dp.fromJson=function(t,e,n,i){let o=new Dp(t,e,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};Dp.prototype.hasProperty=function(t,e){return!1};Dp.prototype.getFeature=function(t){};Dp.prototype.applyDebugSettings=function(t,e){};Dp.prototype.applyStyle=function(t){};Dp.prototype.update=function(t,e){};Dp.prototype.pick=function(t,e,n){};Dp.prototype.isDestroyed=function(){return!1};Dp.prototype.destroy=function(){return At(this)};var VX=Dp;var Fei=R(W(),1);var f$n=R(W(),1);var M6n=R(W(),1);var W8n=R(W(),1),bX=`uniform sampler2D u_atlas; +`;var eP={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};eP.process=function(t,e,n){let i=t.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,Xt.FRAGMENT),i.addFragmentLines(aX);let o={};i.addUniform("float",eP.SPLIT_DIRECTION_UNIFORM_NAME,Xt.FRAGMENT),o[eP.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return e.splitDirection},t.uniformMap=ze(o,t.uniformMap)};var sX=eP;var Gzn=b(W(),1);function wae(t,e){this.model=t.model,this.shaderBuilder=t.shaderBuilder.clone(),this.uniformMap=Re(t.uniformMap),this.alphaOptions=Re(t.alphaOptions),this.renderStateOptions=Re(t.renderStateOptions,!0),this.hasSilhouette=t.hasSilhouette,this.hasSkipLevelOfDetail=t.hasSkipLevelOfDetail,this.runtimeNode=e,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0}var lX=wae;var kzn=b(W(),1);var gzn=b(W(),1);function Pae(t){t=f(t,f.EMPTY_OBJECT),this.lightingModel=f(t.lightingModel,nR.UNLIT)}var rX=Pae;function vae(t,e){this.model=t.model,this.runtimeNode=t.runtimeNode,this.attributes=t.attributes.slice(),this.attributeIndex=t.attributeIndex,this.featureIdVertexAttributeSetIndex=t.featureIdVertexAttributeSetIndex,this.uniformMap=Re(t.uniformMap),this.alphaOptions=Re(t.alphaOptions),this.renderStateOptions=Re(t.renderStateOptions,!0),this.hasSilhouette=t.hasSilhouette,this.hasSkipLevelOfDetail=t.hasSkipLevelOfDetail,this.shaderBuilder=t.shaderBuilder.clone(),this.instanceCount=t.instanceCount,this.runtimePrimitive=e;let n=e.primitive;this.count=c(n.indices)?n.indices.count:Mn.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Mn.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=p.clone(i.min,new p),this.positionMax=p.clone(i.max,new p),this.boundingSphere=Ft.fromCornerPoints(this.positionMin,this.positionMax,new Ft),this.lightingOptions=new rX,this.pickId=void 0}var dX=vae;function Nh(t){t=f(t,f.EMPTY_OBJECT);let e=t.modelComponents;this._model=t.model,this._components=e,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=L.clone(L.IDENTITY),this._computedModelMatrix2D=L.clone(L.IDENTITY),this._axisCorrectionMatrix=Mn.getAxisCorrectionMatrix(e.upAxis,e.forwardAxis,new L),this._runtimeArticulations={},Kae(this)}Object.defineProperties(Nh.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function Kae(t){let e=t._components,n=e.scene,o=t._model.modelMatrix;pWt(t,o);let a=e.articulations,s=a.length,l=t._runtimeArticulations;for(let A=0;A0&&(h=ts(n,e,l),e+=l,r>0&&(u=new Uint8Array(t,e,r),e+=r));let R=new Fu(d,m),V=R.getGlobalProperty("POINTS_LENGTH");if(R.featuresLength=V,!c(V))throw new Tt("Feature table global property: POINTS_LENGTH must be defined");let F=R.getGlobalProperty("RTC_CENTER",it.FLOAT,3);c(F)&&(F=p.unpack(F));let U=cse(R,h);if(U.rtcCenter=F,U.pointsLength=V,!U.hasPositions){let G=mse(R);U.positions=G,U.hasPositions=U.hasPositions||c(G)}if(!U.hasPositions)throw new Tt("Either POSITION or POSITION_QUANTIZED must be defined.");if(!U.hasNormals){let G=pse(R);U.normals=G,U.hasNormals=U.hasNormals||c(G)}if(!U.hasColors){let G=hse(R);U.colors=G,U.hasColors=U.hasColors||c(G),U.hasConstantColor=c(U.constantColor),U.isTranslucent=c(G)&&G.isTranslucent}if(!U.hasBatchIds){let G=Vse(R);U.batchIds=G,U.hasBatchIds=U.hasBatchIds||c(G)}if(U.hasBatchIds){let G=R.getGlobalProperty("BATCH_LENGTH");if(!c(G))throw new Tt("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");U.batchLength=G}return c(u)&&(u=new Uint8Array(u),U.batchTableJson=h,U.batchTableBinary=u),U};function cse(t,e){let n=t.json,i,o,a,s=c(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,l=c(e)&&c(e.extensions)?e.extensions["3DTILES_draco_point_compression"]:void 0;c(l)&&(a=l.properties);let r,d,m,h,u;if(c(s)){o=s.properties;let V=s.byteOffset,F=s.byteLength;if(!c(o)||!c(V)||!c(F))throw new Tt("Draco properties, byteOffset, and byteLength must be defined");i=t.buffer.slice(V,V+F),r=c(o.POSITION),d=c(o.RGB)||c(o.RGBA),m=c(o.NORMAL),h=c(o.BATCH_ID),u=c(o.RGBA)}let R;return c(i)&&(R={buffer:i,featureTableProperties:o,batchTableProperties:a,properties:ze(o,a),dequantizeInShader:!0}),{draco:R,hasPositions:r,hasColors:d,isTranslucent:u,hasNormals:m,hasBatchIds:h}}function mse(t){let e=t.json,n;if(c(e.POSITION))return n=t.getPropertyArray("POSITION",it.FLOAT,3),{name:sn.POSITION,semantic:sn.POSITION,typedArray:n,isQuantized:!1,componentDatatype:it.FLOAT,type:_n.VEC3};if(c(e.POSITION_QUANTIZED)){n=t.getPropertyArray("POSITION_QUANTIZED",it.UNSIGNED_SHORT,3);let i=t.getGlobalProperty("QUANTIZED_VOLUME_SCALE",it.FLOAT,3);if(!c(i))throw new Tt("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,a=t.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",it.FLOAT,3);if(!c(a))throw new Tt("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:sn.POSITION,semantic:sn.POSITION,typedArray:n,isQuantized:!0,componentDatatype:it.FLOAT,type:_n.VEC3,quantizedRange:o,quantizedVolumeOffset:p.unpack(a),quantizedVolumeScale:p.unpack(i),quantizedComponentDatatype:it.UNSIGNED_SHORT,quantizedType:_n.VEC3}}}function hse(t){let e=t.json,n;if(c(e.RGBA))return n=t.getPropertyArray("RGBA",it.UNSIGNED_BYTE,4),{name:sn.COLOR,semantic:sn.COLOR,setIndex:0,typedArray:n,componentDatatype:it.UNSIGNED_BYTE,type:_n.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(c(e.RGB))return n=t.getPropertyArray("RGB",it.UNSIGNED_BYTE,3),{name:"COLOR",semantic:sn.COLOR,setIndex:0,typedArray:n,componentDatatype:it.UNSIGNED_BYTE,type:_n.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(c(e.RGB565))return n=t.getPropertyArray("RGB565",it.UNSIGNED_SHORT,1),{name:"COLOR",semantic:sn.COLOR,setIndex:0,typedArray:n,componentDatatype:it.FLOAT,type:_n.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(c(e.CONSTANT_RGBA)){let i=t.getGlobalProperty("CONSTANT_RGBA",it.UNSIGNED_BYTE,4),o=i[3],a=v.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:sn.COLOR,semantic:sn.COLOR,setIndex:0,constantColor:a,componentDatatype:it.FLOAT,type:_n.VEC4,isQuantized:!1,isTranslucent:s}}}function pse(t){let e=t.json,n;if(c(e.NORMAL))return n=t.getPropertyArray("NORMAL",it.FLOAT,3),{name:sn.NORMAL,semantic:sn.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:it.FLOAT,type:_n.VEC3};if(c(e.NORMAL_OCT16P))return n=t.getPropertyArray("NORMAL_OCT16P",it.UNSIGNED_BYTE,2),{name:sn.NORMAL,semantic:sn.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:_n.VEC2,quantizedComponentDatatype:it.UNSIGNED_BYTE,componentDatatype:it.FLOAT,type:_n.VEC3}}function Vse(t){let e=t.json;if(c(e.BATCH_ID)){let n=t.getPropertyArray("BATCH_ID",it.UNSIGNED_SHORT,1);return{name:sn.FEATURE_ID,semantic:sn.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:it.fromTypedArray(n),type:_n.SCALAR}}}var xA=RWt;var use=Sn.Components,Zse=Sn.Scene,Rse=Sn.Node,bse=Sn.Primitive,Wse=Sn.Attribute,bWt=Sn.Quantization,fse=Sn.FeatureIdAttribute,Fse=Sn.Material,Use=Sn.MetallicRoughness;function sF(t){t=f(t,f.EMPTY_OBJECT);let e=t.arrayBuffer,n=f(t.byteOffset,0);this._arrayBuffer=e,this._byteOffset=n,this._loadAttributesFor2D=f(t.loadAttributesFor2D,!1),this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=pn.UNLOADED,this._buffers=[],this._components=void 0,this._transform=L.IDENTITY}c(Object.create)&&(sF.prototype=Object.create(Za.prototype),sF.prototype.constructor=sF);Object.defineProperties(sF.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});sF.prototype.load=function(){if(c(this._promise))return this._promise;this._parsedContent=xA.parse(this._arrayBuffer,this._byteOffset),this._state=pn.PROCESSING,this._promise=Promise.resolve(this)};sF.prototype.process=function(t){if(c(this._error)){let e=this._error;throw this._error=void 0,e}if(this._state===pn.READY)return!0;if(this._state===pn.PROCESSING){if(c(this._decodePromise))return!1;this._decodePromise=Gse(this,t.context)}return!1};function Gse(t,e){let i=t._parsedContent.draco,o;if(c(i)?o=$b.decodePointCloud(i,e):o=Promise.resolve(),!!c(o))return t._decodePromise=o,o.then(function(a){if(!t.isDestroyed())return c(a)&&Ase(t,i,a),kse(t,e),t._state=pn.READY,t}).catch(function(a){t.unload(),t._state=pn.FAILED;let s="Failed to load Draco pnts";t._error=t.getError(s,a)})}function Ase(t,e,n){t._state=pn.READY;let i=t._parsedContent,o;if(c(n.POSITION)){if(o={name:"POSITION",semantic:sn.POSITION,typedArray:n.POSITION.array,componentDatatype:it.FLOAT,type:_n.VEC3,isQuantized:!1},c(n.POSITION.data.quantization)){let l=n.POSITION.data.quantization,r=l.range,d=p.fromElements(r,r,r),m=p.unpack(l.minValues),h=(1<0&&Yse(t,l,h,e),c(n.rtcCenter)&&(m.transform=L.multiplyByTranslation(m.transform,n.rtcCenter,m.transform));let u=n.positions;c(u)&&u.isQuantized&&(m.transform=L.multiplyByTranslation(m.transform,u.quantizedVolumeOffset,m.transform)),t._components=m,t._parsedContent=void 0,t._arrayBuffer=void 0}function Yse(t,e,n,i){let o=e.attributes,a=n.length;for(let s=0;s=0&&(l=Nt)}}}}if(l!==Number.MAX_VALUE){if(s=di.getPoint(e,l,s),n.mode!==Vt.SCENE3D){p.fromElements(s.y,s.z,s.x,s);let m=n.mapProjection,h=m.ellipsoid,u=m.unproject(s,Dse);h.cartographicToCartesian(u,s)}return s}}function _$(t,e,n,i,o,a,s,l,r,d){let m=n+e*i;if(d.x=t[m],d.y=t[m+1],d.z=t[m+2],c(o))if(o.octEncoded){if(d=Ni.octDecodeInRange(d,o.normalizationRange,d),o.octEncodedZXY){let h=d.x;d.x=d.z,d.z=d.y,d.y=h}}else d=p.multiplyComponents(d,o.quantizedVolumeStepSize,d),d=p.add(d,o.quantizedVolumeOffset,d);return d=L.multiplyByPoint(a,d,d),s!==1&&Ps.getPosition(d,r,s,l,d),d}function Ia(t){t=f(t,f.EMPTY_OBJECT),this._loader=t.loader,this._resource=t.resource,this.type=f(t.type,Is.GLTF),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=L.clone(this.modelMatrix),this._scale=f(t.scale,1),this._minimumPixelSize=f(t.minimumPixelSize,0),this._maximumScale=t.maximumScale,this._clampedScale=c(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=ot.clone(ot.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=t.customShader,this._content=t.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new kY(this),this._clampAnimations=f(t.clampAnimations,!0),this._userAnimationDirty=!1,this._id=t.id,this._idDirty=!1,this._color=v.clone(t.color),this._colorBlendMode=f(t.colorBlendMode,Kd.HIGHLIGHT),this._colorBlendAmount=f(t.colorBlendAmount,.5);let e=f(t.silhouetteColor,v.RED);this._silhouetteColor=v.clone(e),this._silhouetteSize=f(t.silhouetteSize,0),this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=f(t.cull,!0),this._opaquePass=f(t.opaquePass,Pt.OPAQUE),this._allowPicking=f(t.allowPicking,!0),this._show=f(t.show,!0),this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=f(t.featureIdLabel,"featureId_0");typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=f(t.instanceFeatureIdLabel,"instanceFeatureId_0");typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new Ft,this._initialRadius=void 0,this._heightReference=f(t.heightReference,Ge.NONE),this._heightDirty=this._heightReference!==Ge.NONE,this._removeUpdateHeightCallback=void 0,this._verticalExaggerationOn=!1,this._clampedModelMatrix=void 0;let o=t.scene;c(o)&&c(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=t.distanceDisplayCondition;let a=new eR(t.pointCloudShading);this._pointCloudShading=a,this._attenuation=a.attenuation,this._pointCloudBackFaceCulling=a.backFaceCulling;let s=t.clippingPlanes;c(s)&&s.owner===void 0?Ml.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=L.clone(L.IDENTITY);let l=t.clippingPolygons;c(l)&&l.owner===void 0?bu.setOwner(l,this,"_clippingPolygons"):this._clippingPolygons=l,this._clippingPolygonsState=0,this._lightColor=p.clone(t.lightColor),this._imageBasedLighting=c(t.imageBasedLighting)?t.imageBasedLighting:new aA,this._shouldDestroyImageBasedLighting=!c(t.imageBasedLighting),this._backFaceCulling=f(t.backFaceCulling,!0),this._backFaceCullingDirty=!1,this._shadows=f(t.shadows,Vi.ENABLED),this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this._enableDebugWireframe=f(t.enableDebugWireframe,!1),this._enableShowOutline=f(t.enableShowOutline,!0),this._debugWireframe=f(t.debugWireframe,!1),this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Is.GLTF&&Gn("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let r=t.credit;typeof r=="string"&&(r=new on(r)),this._credits=[],this._credit=r,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=f(t.showCreditsOnScreen,!1),this._showCreditsOnScreenDirty=!0,this._splitDirection=f(t.splitDirection,Jc.NONE),this._enableShowOutline=f(t.enableShowOutline,!0),this.showOutline=f(t.showOutline,!0),this.outlineColor=f(t.outlineColor,v.BLACK),this._classificationType=t.classificationType,this._statistics=new mX,this._sceneMode=void 0,this._projectTo2D=f(t.projectTo2D,!1),this._enablePick=f(t.enablePick,!1),this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=f(t.ignoreCommands,!1),this._errorEvent=new It,this._readyEvent=new It,this._texturesReadyEvent=new It,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=t.pickObject}function D$(t,e){if(t._errorEvent.numberOfListeners>0){t._errorEvent.raiseEvent(e);return}console.log(e)}function Hse(t,e){let n=t._featureTables,i=e.propertyTables,o=i.length;for(let a=0;a0&&e===0||t===0&&e>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=t}},boundingSphere:{get:function(){let t=c(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return GWt(this,t),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(t){this._debugShowBoundingVolume!==t&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=t}},debugWireframe:{get:function(){return this._debugWireframe},set:function(t){this._debugWireframe!==t&&this.resetDrawCommands(),this._debugWireframe=t,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Is.GLTF&&Gn("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(t){this._show=t}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(t){typeof t=="number"&&(t=`featureId_${t}`),t!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=t}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(t){typeof t=="number"&&(t=`instanceFeatureId_${t}`),t!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=t}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){t!==this._clippingPlanes&&(Ml.setOwner(t,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(t){t!==this._clippingPolygons&&(bu.setOwner(t,this,"_clippingPolygons"),this.resetDrawCommands())}},lightColor:{get:function(){return this._lightColor},set:function(t){c(t)!==c(this._lightColor)&&this.resetDrawCommands(),this._lightColor=p.clone(t,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(t){t!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=t,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(t){t!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=t}},scale:{get:function(){return this._scale},set:function(t){t!==this._scale&&(this._updateModelMatrix=!0),this._scale=t}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(t){t!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=t}},maximumScale:{get:function(){return this._maximumScale},set:function(t){t!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=t}},shadows:{get:function(){return this._shadows},set:function(t){t!==this._shadows&&(this._shadowsDirty=!0),this._shadows=t}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(t){this._showCreditsOnScreen!==t&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=t}},splitDirection:{get:function(){return this._splitDirection},set:function(t){this._splitDirection!==t&&this.resetDrawCommands(),this._splitDirection=t}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});Ia.prototype.getNode=function(t){return this._nodesByName[t]};Ia.prototype.setArticulationStage=function(t,e){this._sceneGraph.setArticulationStage(t,e)};Ia.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};Ia.prototype.makeStyleDirty=function(){this._styleDirty=!0};Ia.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var Pse=new L,vse=new ot,Kse=new L;Ia.prototype.update=function(t){let e=!1;try{e=zse(this,t)}catch(n){if(!this._loader.incrementallyLoadTextures&&n.name==="TextureError")D$(this,n);else{let i=Mn.getError("model",this._resource,n);D$(this,i)}}if(jse(this,t),qse(this,t),!this._resourcesLoaded&&e){this._resourcesLoaded=!0;let n=this._loader.components;if(!c(n)){if(this._loader.isUnloaded())return;let a=Mn.getError("model",this._resource,new Tt("Failed to load model."));D$(a),this._rejectLoad=this._rejectLoad&&this._rejectLoad(a)}let i=n.structuralMetadata;c(i)&&i.propertyTableCount>0&&Hse(this,i);let o=new cX({model:this,modelComponents:n});this._sceneGraph=o,this._gltfCredits=o.components.asset.credits}if(!(!this._resourcesLoaded||t.mode===Vt.MORPHING)){if($se(this),tle(this),ele(this,t),nle(this),ile(this,t),ole(this,t),ale(this,t),sle(this,t),lle(this,t),rle(this,t),dle(this,t),this._defaultTexture=t.context.defaultTexture,cle(this,t),mle(this,t),hle(this),ple(this,t),Zle(this,t),!this._ready){t.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),ule(this),Rle(this,t),ble(this),Wle(this,t)}};function zse(t,e){return!t._resourcesLoaded||t._loader.incrementallyLoadTextures&&!t._texturesLoaded?(e.afterRender.push(()=>!0),t._loader.process(e)):!0}function jse(t,e){c(t._customShader)&&t._customShader.update(e)}function qse(t,e){t._imageBasedLighting.update(e),t._imageBasedLighting.shouldRegenerateShaders&&t.resetDrawCommands()}function $se(t){if(!t._featureTableIdDirty)return;t._featureTableIdDirty=!1;let e=t._sceneGraph.components,n=e.structuralMetadata;c(n)&&n.propertyTableCount>0&&(t.featureTableId=wse(e,t),t._styleDirty=!0,t.resetDrawCommands())}function tle(t){t._styleDirty&&(t.applyStyle(t._style),t._styleDirty=!1)}function ele(t,e){let n=t._featureTables,i=n.length,o=!1;for(let a=0;a=i&&a<=o}function Gle(t,e){let n=e.creditDisplay,i=t._credits,o=i.length;for(let a=0;a0&&t.alpha<1};Ia.prototype.isInvisible=function(){let t=this.color;return c(t)&&t.alpha===0};function AWt(t){return t.context.stencilBuffer}Ia.prototype.hasSilhouette=function(t){return AWt(t)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!c(this._classificationType)};Ia.prototype.hasSkipLevelOfDetail=function(t){if(!Is.is3DTiles(this.type))return!1;let e=t.context.stencilBuffer,n=this._content.tileset;return e&&n.isSkippingLevelOfDetail};Ia.prototype.isClippingEnabled=function(){let t=this._clippingPlanes;return c(t)&&t.enabled&&t.length!==0};Ia.prototype.pick=function(t,e,n,i,o){return VC(this,t,e,n,i,o)};Ia.prototype.isClippingPolygonsEnabled=function(){let t=this._clippingPolygons;return c(t)&&t.enabled&&t.length!==0};Ia.prototype.isDestroyed=function(){return!1};Ia.prototype.destroy=function(){let t=this._loader;c(t)&&t.destroy();let e=this._featureTables;if(c(e)){let o=e.length;for(let a=0;a0,i=c(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=c(i)&&c(i[0]);if(e&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(t),UWt(this,t)):(this.applyColorAndShow(t),this._styleCommandsNeeded=void 0)};function VX(t,e,n){return{loader:t,type:e,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Au=Ia;function tr(t,e,n){this._tileset=t,this._tile=e,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(tr.prototype,{featuresLength:{get:function(){let t=this._model,e=t.featureTables,n=t.featureTableId;return c(e)&&c(e[n])?e[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let t=this._model.statistics;return t.propertyTablesByteLength+t.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let t=this._model,e=t.featureTables,n=t.featureTableId;if(c(e)&&c(e[n]))return e[n]}},metadata:{get:function(){return this._metadata},set:function(t){this._metadata=t}},group:{get:function(){return this._group},set:function(t){this._group=t}}});tr.prototype.getFeature=function(t){let e=this._model,n=e.featureTableId;return e.featureTables[n].getFeature(t)};tr.prototype.hasProperty=function(t,e){let n=this._model,i=n.featureTableId;return c(i)?n.featureTables[i].hasProperty(t,e):!1};tr.prototype.applyDebugSettings=function(t,e){e=t?e:v.WHITE,this.featuresLength===0?this._model.color=e:c(this.batchTable)&&this.batchTable.setAllColor(e)};tr.prototype.applyStyle=function(t){this._model.style=t};tr.prototype.update=function(t,e){let n=this._model,i=this._tile;n.colorBlendAmount=t.colorBlendAmount,n.colorBlendMode=t.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=t.customShader,n.featureIdLabel=t.featureIdLabel,n.instanceFeatureIdLabel=t.instanceFeatureIdLabel,n.lightColor=t.lightColor,n.imageBasedLighting=t.imageBasedLighting,n.backFaceCulling=t.backFaceCulling,n.shadows=t.shadows,n.showCreditsOnScreen=t.showCreditsOnScreen,n.splitDirection=t.splitDirection,n.debugWireframe=t.debugWireframe,n.showOutline=t.showOutline,n.outlineColor=t.outlineColor,n.pointCloudShading=t.pointCloudShading;let o=t.clippingPlanes;n.referenceMatrix=t.clippingPlanesOriginMatrix,c(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0),c(o)&&c(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let a=t.clippingPolygons;c(a)&&i.clippingPolygonsDirty&&(n._clippingPolygons=a.enabled&&i._isClippedByPolygon?a:void 0),c(a)&&c(n._clippingPolygons)&&n._clippingPolygons!==a&&(n._clippingPolygons=a,n._clippingPolygonsState=0),n.update(e),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:xm.REPEAT}),this._ready=!0)};tr.prototype.isDestroyed=function(){return!1};tr.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),At(this)};tr.fromGltf=async function(t,e,n,i){let o=new tr(t,e,n),s=uX(t,e,o,{gltf:i,basePath:n}),l=t.vectorClassificationOnly?void 0:t.classificationType;s.classificationType=l;let r=await Au.fromGltfAsync(s);return o._model=r,o};tr.fromB3dm=async function(t,e,n,i,o){let a=new tr(t,e,n),l=uX(t,e,a,{arrayBuffer:i,byteOffset:o,resource:n}),r=t.vectorClassificationOnly?void 0:t.classificationType;l.classificationType=r;let d=await Au.fromB3dm(l);return a._model=d,a};tr.fromI3dm=async function(t,e,n,i,o){let a=new tr(t,e,n),l=uX(t,e,a,{arrayBuffer:i,byteOffset:o,resource:n}),r=await Au.fromI3dm(l);return a._model=r,a};tr.fromPnts=async function(t,e,n,i,o){let a=new tr(t,e,n),l=uX(t,e,a,{arrayBuffer:i,byteOffset:o,resource:n}),r=await Au.fromPnts(l);return a._model=r,a};tr.fromGeoJson=async function(t,e,n,i){let o=new tr(t,e,n),s=uX(t,e,o,{geoJson:i,resource:n}),l=await Au.fromGeoJson(s);return o._model=l,o};tr.prototype.pick=function(t,e,n){if(!c(this._model)||!this._ready)return;let i=e.verticalExaggeration,o=e.verticalExaggerationRelativeHeight;return this._model.pick(t,e,i,o,mt.WGS84,n)};function uX(t,e,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Pt.CESIUM_3D_TILE,modelMatrix:e.computedTransform,upAxis:t._modelUpAxis,forwardAxis:t._modelForwardAxis,incrementallyLoadTextures:!1,customShader:t.customShader,content:n,colorBlendMode:t.colorBlendMode,colorBlendAmount:t.colorBlendAmount,lightColor:t.lightColor,imageBasedLighting:t.imageBasedLighting,featureIdLabel:t.featureIdLabel,instanceFeatureIdLabel:t.instanceFeatureIdLabel,pointCloudShading:t.pointCloudShading,clippingPlanes:t.clippingPlanes,backFaceCulling:t.backFaceCulling,shadows:t.shadows,showCreditsOnScreen:t.showCreditsOnScreen,splitDirection:t.splitDirection,enableDebugWireframe:t._enableDebugWireframe,debugWireframe:t.debugWireframe,projectTo2D:t._projectTo2D,enablePick:t._enablePick,enableShowOutline:t._enableShowOutline,showOutline:t.showOutline,outlineColor:t.outlineColor};return ze(i,o)}var iR=tr;var R8n=b(W(),1);function Dp(t,e,n){this._tileset=t,this._tile=e,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Dp.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(t){this._metadata=t}},group:{get:function(){return this._group},set:function(t){this._group=t}}});Dp.fromJson=function(t,e,n,i){let o=new Dp(t,e,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};Dp.prototype.hasProperty=function(t,e){return!1};Dp.prototype.getFeature=function(t){};Dp.prototype.applyDebugSettings=function(t,e){};Dp.prototype.applyStyle=function(t){};Dp.prototype.update=function(t,e){};Dp.prototype.pick=function(t,e,n){};Dp.prototype.isDestroyed=function(){return!1};Dp.prototype.destroy=function(){return At(this)};var ZX=Dp;var Fei=b(W(),1);var f$n=b(W(),1);var M6n=b(W(),1);var W8n=b(W(),1),RX=`uniform sampler2D u_atlas; #ifdef VECTOR_TILE uniform vec4 u_highlightColor; @@ -8068,7 +8068,7 @@ void main() #endif } -`;var F8n=R(W(),1),RX=`#ifdef INSTANCED +`;var F8n=b(W(),1),bX=`#ifdef INSTANCED in vec2 direction; #endif in vec4 positionHighAndScale; @@ -8502,19 +8502,19 @@ if (lengthSq < disableDepthTestDistance) { v_color.a *= translucency; } -`;var _8n=R(W(),1);function Eo(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.translucencyByDistance,i=t.pixelOffsetScaleByDistance,o=t.scaleByDistance,a=t.distanceDisplayCondition;c(n)&&(n=ln.clone(n)),c(i)&&(i=ln.clone(i)),c(o)&&(o=ln.clone(o)),c(a)&&(a=Wn.clone(a)),this._show=f(t.show,!0),this._position=p.clone(f(t.position,p.ZERO)),this._actualPosition=p.clone(this._position),this._pixelOffset=K.clone(f(t.pixelOffset,K.ZERO)),this._translate=new K(0,0),this._eyeOffset=p.clone(f(t.eyeOffset,p.ZERO)),this._heightReference=f(t.heightReference,Ge.NONE),this._verticalOrigin=f(t.verticalOrigin,hi.CENTER),this._horizontalOrigin=f(t.horizontalOrigin,to.CENTER),this._scale=f(t.scale,1),this._color=v.clone(f(t.color,v.WHITE)),this._rotation=f(t.rotation,0),this._alignedAxis=p.clone(f(t.alignedAxis,p.ZERO)),this._width=t.width,this._height=t.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=f(t.sizeInMeters,!1),this._distanceDisplayCondition=a,this._disableDepthTestDistance=t.disableDepthTestDistance,this._id=t.id,this._collection=f(t.collection,e),this._pickId=void 0,this._pickPrimitive=f(t._pickPrimitive,this),this._billboardCollection=e,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageIndex=-1,this._imageIndexPromise=void 0,this._imageId=void 0,this._image=void 0,this._imageSubRegion=void 0,this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=t.image,l=t.imageId;c(s)&&(c(l)||(typeof s=="string"?l=s:c(s.src)?l=s.src:l=Si()),this._imageId=l,this._image=s),c(t.imageSubRegion)&&(this._imageId=l,this._imageSubRegion=t.imageSubRegion),c(this._billboardCollection._textureAtlas)&&this._loadImage(),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ut.SCENE3D,this._clusterShow=!0,this._outlineColor=v.clone(f(t.outlineColor,v.BLACK)),this._outlineWidth=f(t.outlineWidth,0),this._updateClamping()}var TWt=Eo.SHOW_INDEX=0,sP=Eo.POSITION_INDEX=1,CWt=Eo.PIXEL_OFFSET_INDEX=2,Tle=Eo.EYE_OFFSET_INDEX=3,Sle=Eo.HORIZONTAL_ORIGIN_INDEX=4,gle=Eo.VERTICAL_ORIGIN_INDEX=5,Ele=Eo.SCALE_INDEX=6,lP=Eo.IMAGE_INDEX_INDEX=7,SWt=Eo.COLOR_INDEX=8,Cle=Eo.ROTATION_INDEX=9,Ile=Eo.ALIGNED_AXIS_INDEX=10,Nle=Eo.SCALE_BY_DISTANCE_INDEX=11,yle=Eo.TRANSLUCENCY_BY_DISTANCE_INDEX=12,Ble=Eo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,Qle=Eo.DISTANCE_DISPLAY_CONDITION=14,kle=Eo.DISABLE_DEPTH_DISTANCE=15;Eo.TEXTURE_COORDINATE_BOUNDS=16;var gWt=Eo.SDF_INDEX=17;Eo.NUMBER_OF_PROPERTIES=18;function ls(t,e){let n=t._billboardCollection;c(n)&&(n._updateBillboard(t,e),t._dirty=!0)}Object.defineProperties(Eo.prototype,{show:{get:function(){return this._show},set:function(t){this._show!==t&&(this._show=t,ls(this,TWt))}},position:{get:function(){return this._position},set:function(t){let e=this._position;p.equals(e,t)||(p.clone(t,e),p.clone(t,this._actualPosition),this._updateClamping(),ls(this,sP))}},heightReference:{get:function(){return this._heightReference},set:function(t){let e=this._heightReference;t!==e&&(this._heightReference=t,this._updateClamping(),ls(this,sP))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(t){let e=this._pixelOffset;K.equals(e,t)||(K.clone(t,e),ls(this,CWt))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(t){let e=this._scaleByDistance;ln.equals(e,t)||(this._scaleByDistance=ln.clone(t,e),ls(this,Nle))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(t){let e=this._translucencyByDistance;ln.equals(e,t)||(this._translucencyByDistance=ln.clone(t,e),ls(this,yle))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(t){let e=this._pixelOffsetScaleByDistance;ln.equals(e,t)||(this._pixelOffsetScaleByDistance=ln.clone(t,e),ls(this,Ble))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(t){let e=this._eyeOffset;p.equals(e,t)||(p.clone(t,e),ls(this,Tle))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(t){this._horizontalOrigin!==t&&(this._horizontalOrigin=t,ls(this,Sle))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(t){this._verticalOrigin!==t&&(this._verticalOrigin=t,ls(this,gle))}},scale:{get:function(){return this._scale},set:function(t){this._scale!==t&&(this._scale=t,ls(this,Ele))}},color:{get:function(){return this._color},set:function(t){let e=this._color;v.equals(e,t)||(v.clone(t,e),ls(this,SWt))}},rotation:{get:function(){return this._rotation},set:function(t){this._rotation!==t&&(this._rotation=t,ls(this,Cle))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(t){let e=this._alignedAxis;p.equals(e,t)||(p.clone(t,e),ls(this,Ile))}},width:{get:function(){return f(this._width,this._imageWidth)},set:function(t){this._width!==t&&(this._width=t,ls(this,lP))}},height:{get:function(){return f(this._height,this._imageHeight)},set:function(t){this._height!==t&&(this._height=t,ls(this,lP))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(t){this._sizeInMeters!==t&&(this._sizeInMeters=t,ls(this,SWt))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){Wn.equals(t,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Wn.clone(t,this._distanceDisplayCondition),ls(this,Qle))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(t){this._disableDepthTestDistance!==t&&(this._disableDepthTestDistance=t,ls(this,kle))}},id:{get:function(){return this._id},set:function(t){this._id=t,c(this._pickId)&&(this._pickId.object.id=t)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(t){this._pickPrimitive=t,c(this._pickId)&&(this._pickId.object.primitive=t)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageId},set:function(t){c(t)?typeof t=="string"?this.setImage(t,t):t instanceof te?this.setImage(t.url,t):c(t.src)?this.setImage(t.src,t):this.setImage(Si(),t):(this._imageIndex=-1,this._imageSubRegion=void 0,this._imageId=void 0,this._image=void 0,this._imageIndexPromise=void 0,ls(this,lP))}},ready:{get:function(){return this._imageIndex!==-1}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(t){this._actualClampedPosition=p.clone(t,this._actualClampedPosition),ls(this,sP)}},clusterShow:{get:function(){return this._clusterShow},set:function(t){this._clusterShow!==t&&(this._clusterShow=t,ls(this,TWt))}},outlineColor:{get:function(){return this._outlineColor},set:function(t){let e=this._outlineColor;v.equals(e,t)||(v.clone(t,e),ls(this,gWt))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(t){this._outlineWidth!==t&&(this._outlineWidth=t,ls(this,gWt))}}});Eo.prototype.getPickId=function(t){return c(this._pickId)||(this._pickId=t.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};Eo.prototype._updateClamping=function(){Eo._updateClamping(this._billboardCollection,this)};var rP=new gt;Eo._updateClamping=function(t,e){let n=t._scene;if(!c(n))return;let i=n.globe,o=f(i?.ellipsoid,mt.WGS84),a=n.frameState.mode,s=a!==e._mode;if(e._mode=a,(e._heightReference===Ge.NONE||s)&&c(e._removeCallbackFunc)&&(e._removeCallbackFunc(),e._removeCallbackFunc=void 0,e._clampedPosition=void 0),e._heightReference===Ge.NONE||!c(e._position))return;c(e._removeCallbackFunc)&&e._removeCallbackFunc();let l=o.cartesianToCartographic(e._position);if(!c(l)){e._actualClampedPosition=void 0;return}function r(m){let h=o.cartographicToCartesian(m,e._clampedPosition);dE(e._heightReference)&&(e._mode===ut.SCENE3D?(m.height+=l.height,o.cartographicToCartesian(m,h)):h.x+=l.height),e._clampedPosition=h}e._removeCallbackFunc=n.updateHeight(l,r,e._heightReference),gt.clone(l,rP);let d=n.getHeight(l,e._heightReference);c(d)&&(rP.height=d),r(rP)};Eo.prototype._loadImage=function(){let t=this._billboardCollection._textureAtlas,e=this._imageId,n=this._image,i=this._imageSubRegion,o,a=this;function s(r){if(a._imageId!==e||a._image!==n||!Fe.equals(a._imageSubRegion,i))return;let d=t.textureCoordinates[r];a._imageWidth=t.texture.width*d.width,a._imageHeight=t.texture.height*d.height,a._imageIndex=r,a._ready=!0,a._image=void 0,a._imageIndexPromise=void 0,ls(a,lP);let m=a._billboardCollection._scene;c(m)&&m.frameState.afterRender.push(()=>!0)}if(c(n)&&(o=t.addImage(e,n)),c(i)&&(o=t.addSubRegion(e,i)),this._imageIndexPromise=o,!c(o))return;let l=t.getImageIndex(e);if(c(l)&&!c(i)){s(l);return}o.then(s).catch(function(r){console.error(`Error loading image for billboard: ${r}`),a._imageIndexPromise=void 0})};Eo.prototype.setImage=function(t,e){this._imageId!==t&&(this._imageIndex=-1,this._imageSubRegion=void 0,this._imageId=t,this._image=e,c(this._billboardCollection._textureAtlas)&&this._loadImage())};Eo.prototype.setImageSubRegion=function(t,e){this._imageId===t&&Fe.equals(this._imageSubRegion,e)||(this._imageIndex=-1,this._imageId=t,this._imageSubRegion=Fe.clone(e),c(this._billboardCollection._textureAtlas)&&this._loadImage())};Eo.prototype._setTranslate=function(t){let e=this._translate;K.equals(e,t)||(K.clone(t,e),ls(this,CWt))};Eo.prototype._getActualPosition=function(){return c(this._clampedPosition)?this._clampedPosition:this._actualPosition};Eo.prototype._setActualPosition=function(t){c(this._clampedPosition)||p.clone(t,this._actualPosition),ls(this,sP)};var EWt=new Rt;Eo._computeActualPosition=function(t,e,n,i){return c(t._clampedPosition)?(n.mode!==t._mode&&t._updateClamping(),t._clampedPosition):n.mode===ut.SCENE3D?e:(L.multiplyByPoint(i,e,EWt),qo.computeActualWgs84Position(n,EWt))};var IWt=new p;Eo._computeScreenSpacePosition=function(t,e,n,i,o,a){let s=L.multiplyByPoint(t,e,IWt),l=qo.wgs84WithEyeOffsetToWindowCoordinates(o,s,n,a);if(c(l))return K.add(l,i,l),l};var aP=new K(0,0);Eo.prototype.computeScreenSpacePosition=function(t,e){let n=this._billboardCollection;c(e)||(e=new K),K.clone(this._pixelOffset,aP),K.add(aP,this._translate,aP);let i=n.modelMatrix,o=this._position;if(c(this._clampedPosition)&&(o=this._clampedPosition,t.mode!==ut.SCENE3D)){let s=t.mapProjection,l=s.ellipsoid,r=s.unproject(o,rP);o=l.cartographicToCartesian(r,IWt),i=L.IDENTITY}return Eo._computeScreenSpacePosition(i,o,this._eyeOffset,aP,t,e)};Eo.getScreenSpaceBoundingBox=function(t,e,n){let i=t.width,o=t.height,a=t.scale;i*=a,o*=a;let s=e.x;t.horizontalOrigin===to.RIGHT?s-=i:t.horizontalOrigin===to.CENTER&&(s-=i*.5);let l=e.y;return t.verticalOrigin===hi.BOTTOM||t.verticalOrigin===hi.BASELINE?l-=o:t.verticalOrigin===hi.CENTER&&(l-=o*.5),c(n)||(n=new Fe),n.x=s,n.y=l,n.width=i,n.height=o,n};Eo.prototype.equals=function(t){return this===t||c(t)&&this._id===t._id&&p.equals(this._position,t._position)&&this._imageId===t._imageId&&this._show===t._show&&this._scale===t._scale&&this._verticalOrigin===t._verticalOrigin&&this._horizontalOrigin===t._horizontalOrigin&&this._heightReference===t._heightReference&&Fe.equals(this._imageSubRegion,t._imageSubRegion)&&v.equals(this._color,t._color)&&K.equals(this._pixelOffset,t._pixelOffset)&&K.equals(this._translate,t._translate)&&p.equals(this._eyeOffset,t._eyeOffset)&&ln.equals(this._scaleByDistance,t._scaleByDistance)&&ln.equals(this._translucencyByDistance,t._translucencyByDistance)&&ln.equals(this._pixelOffsetScaleByDistance,t._pixelOffsetScaleByDistance)&&Wn.equals(this._distanceDisplayCondition,t._distanceDisplayCondition)&&this._disableDepthTestDistance===t._disableDepthTestDistance};Eo.prototype._destroy=function(){c(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),c(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var Na=Eo;var O8n=R(W(),1),Yle={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},wa=Object.freeze(Yle);var w8n=R(W(),1),xle={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},Ar=Object.freeze(xle);var a6n=R(W(),1);function V0(t,e,n,i,o){this.bottomLeft=f(t,K.ZERO),this.topRight=f(e,K.ZERO),this.childNode1=n,this.childNode2=i,this.imageIndex=o}var Xle=new K(16,16);function rF(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.borderWidthInPixels,1),n=f(t.initialSize,Xle);this._context=t.context,this._pixelFormat=f(t.pixelFormat,Ye.RGBA),this._borderWidthInPixels=e,this._textureCoordinates=[],this._guid=Si(),this._idHash={},this._indexHash={},this._initialSize=n,this._root=void 0}Object.defineProperties(rF.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},textureCoordinates:{get:function(){return this._textureCoordinates}},texture:{get:function(){return c(this._texture)||(this._texture=new hn({context:this._context,width:this._initialSize.x,height:this._initialSize.y,pixelFormat:this._pixelFormat})),this._texture}},numberOfImages:{get:function(){return this._textureCoordinates.length}},guid:{get:function(){return this._guid}}});function Jle(t,e){let n=t._context,i=t.numberOfImages,o=2,a=t._borderWidthInPixels;if(i>0){let s=t._texture.width,l=t._texture.height,r=o*(s+e.width+a),d=o*(l+e.height+a),m=s/r,h=l/d,Z=new V0(new K(s+a,a),new K(r,l)),b=new V0(new K,new K(r,l),t._root,Z),u=new V0(new K(a,l+a),new K(r,d)),F=new V0(new K,new K(r,d),b,u);for(let A=0;As){e.childNode1=new V0(new K(e.bottomLeft.x,e.bottomLeft.y),new K(e.bottomLeft.x+n.width,e.topRight.y));let l=e.bottomLeft.x+n.width+t._borderWidthInPixels;l0)&&(t._shaderDisableDepthDistance=!0,m===Number.POSITIVE_INFINITY&&(m=-1));let Z,b;if(c(o._labelDimensions))b=o._labelDimensions.x,Z=o._labelDimensions.y;else{let G=0,A=0,T=o._imageIndex;if(T!==-1){let C=n[T];G=C.height,A=C.width}Z=Math.round(f(o.height,t._textureAtlas.texture.dimensions.y*G));let g=t._textureAtlas.texture.width;b=Math.round(f(o.width,g*A))}let u=Math.floor(k.clamp(b,0,K$)),F=Math.floor(k.clamp(Z,0,K$)),U=u*K$+F;t._instanced?(a=o._index,s(a,l,r,m,U)):(a=o._index*4,s(a+0,l,r,m,U),s(a+1,l,r,m,U),s(a+2,l,r,m,U),s(a+3,l,r,m,U))}function $Wt(t,e,n,i,o){if(Np(o.heightReference)){let u=t._scene,F=e.context,U=e.globeTranslucencyState.translucent,G=c(u.globe)&&u.globe.depthTestAgainstTerrain;t._shaderClampToGround=F.depthTexture&&!U&&G}let a,s=i[Ma.textureCoordinateBoundsOrLabelTranslate];if(Sn.maximumVertexTextureImageUnits>0){let u=0,F=0;c(o._labelTranslate)&&(u=o._labelTranslate.x,F=o._labelTranslate.y),t._instanced?(a=o._index,s(a,u,F,0,0)):(a=o._index*4,s(a+0,u,F,0,0),s(a+1,u,F,0,0),s(a+2,u,F,0,0),s(a+3,u,F,0,0));return}let l=0,r=0,d=0,m=0,h=o._imageIndex;if(h!==-1){let u=n[h];l=u.x,r=u.y,d=u.width,m=u.height}let Z=l+d,b=r+m;t._instanced?(a=o._index,s(a,l,r,Z,b)):(a=o._index*4,s(a+0,l,r,Z,b),s(a+1,l,r,Z,b),s(a+2,l,r,Z,b),s(a+3,l,r,Z,b))}function ore(t,e,n,i,o){if(!c(t._batchTable))return;let a=i[Ma.a_batchId],s=o._batchIndex,l;t._instanced?(l=o._index,a(l,s)):(l=o._index*4,a(l+0,s),a(l+1,s),a(l+2,s),a(l+3,s))}function tft(t,e,n,i,o){if(!t._sdf)return;let a,s=i[Ma.sdf],l=o.outlineColor,r=o.outlineWidth,d=v.floatToByte(l.red),m=v.floatToByte(l.green),h=v.floatToByte(l.blue),Z=d*ZC+m*ob+h,b=r/Ar.RADIUS,u=v.floatToByte(l.alpha)*ZC+v.floatToByte(b)*ob;t._instanced?(a=o._index,s(a,Z,u)):(a=o._index*4,s(a+0,Z+OWt,u),s(a+1,Z+HWt,u),s(a+2,Z+wWt,u),s(a+3,Z+PWt,u))}function are(t,e,n,i,o){_Wt(t,e,n,i,o),vWt(t,e,n,i,o),KWt(t,e,n,i,o),j$(t,e,n,i,o),q$(t,e,n,i,o),zWt(t,e,n,i,o),jWt(t,e,n,i,o),qWt(t,e,n,i,o),$Wt(t,e,n,i,o),ore(t,e,n,i,o),tft(t,e,n,i,o)}function z$(t,e,n,i,o,a){let s;i.mode===ut.SCENE3D?(s=t._baseVolume,t._boundingVolumeDirty=!0):s=t._baseVolume2D;let l=[];for(let r=0;r!0)}if(c(n)&&(o=t.addImage(e,n)),c(i)&&(o=t.addSubRegion(e,i)),this._imageIndexPromise=o,!c(o))return;let l=t.getImageIndex(e);if(c(l)&&!c(i)){s(l);return}o.then(s).catch(function(r){console.error(`Error loading image for billboard: ${r}`),a._imageIndexPromise=void 0})};Eo.prototype.setImage=function(t,e){this._imageId!==t&&(this._imageIndex=-1,this._imageSubRegion=void 0,this._imageId=t,this._image=e,c(this._billboardCollection._textureAtlas)&&this._loadImage())};Eo.prototype.setImageSubRegion=function(t,e){this._imageId===t&&Fe.equals(this._imageSubRegion,e)||(this._imageIndex=-1,this._imageId=t,this._imageSubRegion=Fe.clone(e),c(this._billboardCollection._textureAtlas)&&this._loadImage())};Eo.prototype._setTranslate=function(t){let e=this._translate;K.equals(e,t)||(K.clone(t,e),ls(this,CWt))};Eo.prototype._getActualPosition=function(){return c(this._clampedPosition)?this._clampedPosition:this._actualPosition};Eo.prototype._setActualPosition=function(t){c(this._clampedPosition)||p.clone(t,this._actualPosition),ls(this,sP)};var EWt=new bt;Eo._computeActualPosition=function(t,e,n,i){return c(t._clampedPosition)?(n.mode!==t._mode&&t._updateClamping(),t._clampedPosition):n.mode===Vt.SCENE3D?e:(L.multiplyByPoint(i,e,EWt),qo.computeActualWgs84Position(n,EWt))};var IWt=new p;Eo._computeScreenSpacePosition=function(t,e,n,i,o,a){let s=L.multiplyByPoint(t,e,IWt),l=qo.wgs84WithEyeOffsetToWindowCoordinates(o,s,n,a);if(c(l))return K.add(l,i,l),l};var aP=new K(0,0);Eo.prototype.computeScreenSpacePosition=function(t,e){let n=this._billboardCollection;c(e)||(e=new K),K.clone(this._pixelOffset,aP),K.add(aP,this._translate,aP);let i=n.modelMatrix,o=this._position;if(c(this._clampedPosition)&&(o=this._clampedPosition,t.mode!==Vt.SCENE3D)){let s=t.mapProjection,l=s.ellipsoid,r=s.unproject(o,rP);o=l.cartographicToCartesian(r,IWt),i=L.IDENTITY}return Eo._computeScreenSpacePosition(i,o,this._eyeOffset,aP,t,e)};Eo.getScreenSpaceBoundingBox=function(t,e,n){let i=t.width,o=t.height,a=t.scale;i*=a,o*=a;let s=e.x;t.horizontalOrigin===to.RIGHT?s-=i:t.horizontalOrigin===to.CENTER&&(s-=i*.5);let l=e.y;return t.verticalOrigin===hi.BOTTOM||t.verticalOrigin===hi.BASELINE?l-=o:t.verticalOrigin===hi.CENTER&&(l-=o*.5),c(n)||(n=new Fe),n.x=s,n.y=l,n.width=i,n.height=o,n};Eo.prototype.equals=function(t){return this===t||c(t)&&this._id===t._id&&p.equals(this._position,t._position)&&this._imageId===t._imageId&&this._show===t._show&&this._scale===t._scale&&this._verticalOrigin===t._verticalOrigin&&this._horizontalOrigin===t._horizontalOrigin&&this._heightReference===t._heightReference&&Fe.equals(this._imageSubRegion,t._imageSubRegion)&&v.equals(this._color,t._color)&&K.equals(this._pixelOffset,t._pixelOffset)&&K.equals(this._translate,t._translate)&&p.equals(this._eyeOffset,t._eyeOffset)&&ln.equals(this._scaleByDistance,t._scaleByDistance)&&ln.equals(this._translucencyByDistance,t._translucencyByDistance)&&ln.equals(this._pixelOffsetScaleByDistance,t._pixelOffsetScaleByDistance)&&Wn.equals(this._distanceDisplayCondition,t._distanceDisplayCondition)&&this._disableDepthTestDistance===t._disableDepthTestDistance};Eo.prototype._destroy=function(){c(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),c(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var Na=Eo;var O8n=b(W(),1),Yle={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},wa=Object.freeze(Yle);var w8n=b(W(),1),xle={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},Ar=Object.freeze(xle);var a6n=b(W(),1);function Z0(t,e,n,i,o){this.bottomLeft=f(t,K.ZERO),this.topRight=f(e,K.ZERO),this.childNode1=n,this.childNode2=i,this.imageIndex=o}var Xle=new K(16,16);function rF(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.borderWidthInPixels,1),n=f(t.initialSize,Xle);this._context=t.context,this._pixelFormat=f(t.pixelFormat,Ye.RGBA),this._borderWidthInPixels=e,this._textureCoordinates=[],this._guid=Ti(),this._idHash={},this._indexHash={},this._initialSize=n,this._root=void 0}Object.defineProperties(rF.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},textureCoordinates:{get:function(){return this._textureCoordinates}},texture:{get:function(){return c(this._texture)||(this._texture=new hn({context:this._context,width:this._initialSize.x,height:this._initialSize.y,pixelFormat:this._pixelFormat})),this._texture}},numberOfImages:{get:function(){return this._textureCoordinates.length}},guid:{get:function(){return this._guid}}});function Jle(t,e){let n=t._context,i=t.numberOfImages,o=2,a=t._borderWidthInPixels;if(i>0){let s=t._texture.width,l=t._texture.height,r=o*(s+e.width+a),d=o*(l+e.height+a),m=s/r,h=l/d,u=new Z0(new K(s+a,a),new K(r,l)),R=new Z0(new K,new K(r,l),t._root,u),V=new Z0(new K(a,l+a),new K(r,d)),F=new Z0(new K,new K(r,d),R,V);for(let A=0;As){e.childNode1=new Z0(new K(e.bottomLeft.x,e.bottomLeft.y),new K(e.bottomLeft.x+n.width,e.topRight.y));let l=e.bottomLeft.x+n.width+t._borderWidthInPixels;l0)&&(t._shaderDisableDepthDistance=!0,m===Number.POSITIVE_INFINITY&&(m=-1));let u,R;if(c(o._labelDimensions))R=o._labelDimensions.x,u=o._labelDimensions.y;else{let G=0,A=0,S=o._imageIndex;if(S!==-1){let C=n[S];G=C.height,A=C.width}u=Math.round(f(o.height,t._textureAtlas.texture.dimensions.y*G));let g=t._textureAtlas.texture.width;R=Math.round(f(o.width,g*A))}let V=Math.floor(k.clamp(R,0,K$)),F=Math.floor(k.clamp(u,0,K$)),U=V*K$+F;t._instanced?(a=o._index,s(a,l,r,m,U)):(a=o._index*4,s(a+0,l,r,m,U),s(a+1,l,r,m,U),s(a+2,l,r,m,U),s(a+3,l,r,m,U))}function $Wt(t,e,n,i,o){if(Np(o.heightReference)){let V=t._scene,F=e.context,U=e.globeTranslucencyState.translucent,G=c(V.globe)&&V.globe.depthTestAgainstTerrain;t._shaderClampToGround=F.depthTexture&&!U&&G}let a,s=i[Ma.textureCoordinateBoundsOrLabelTranslate];if(Tn.maximumVertexTextureImageUnits>0){let V=0,F=0;c(o._labelTranslate)&&(V=o._labelTranslate.x,F=o._labelTranslate.y),t._instanced?(a=o._index,s(a,V,F,0,0)):(a=o._index*4,s(a+0,V,F,0,0),s(a+1,V,F,0,0),s(a+2,V,F,0,0),s(a+3,V,F,0,0));return}let l=0,r=0,d=0,m=0,h=o._imageIndex;if(h!==-1){let V=n[h];l=V.x,r=V.y,d=V.width,m=V.height}let u=l+d,R=r+m;t._instanced?(a=o._index,s(a,l,r,u,R)):(a=o._index*4,s(a+0,l,r,u,R),s(a+1,l,r,u,R),s(a+2,l,r,u,R),s(a+3,l,r,u,R))}function ore(t,e,n,i,o){if(!c(t._batchTable))return;let a=i[Ma.a_batchId],s=o._batchIndex,l;t._instanced?(l=o._index,a(l,s)):(l=o._index*4,a(l+0,s),a(l+1,s),a(l+2,s),a(l+3,s))}function tft(t,e,n,i,o){if(!t._sdf)return;let a,s=i[Ma.sdf],l=o.outlineColor,r=o.outlineWidth,d=v.floatToByte(l.red),m=v.floatToByte(l.green),h=v.floatToByte(l.blue),u=d*uC+m*oR+h,R=r/Ar.RADIUS,V=v.floatToByte(l.alpha)*uC+v.floatToByte(R)*oR;t._instanced?(a=o._index,s(a,u,V)):(a=o._index*4,s(a+0,u+OWt,V),s(a+1,u+HWt,V),s(a+2,u+wWt,V),s(a+3,u+PWt,V))}function are(t,e,n,i,o){_Wt(t,e,n,i,o),vWt(t,e,n,i,o),KWt(t,e,n,i,o),j$(t,e,n,i,o),q$(t,e,n,i,o),zWt(t,e,n,i,o),jWt(t,e,n,i,o),qWt(t,e,n,i,o),$Wt(t,e,n,i,o),ore(t,e,n,i,o),tft(t,e,n,i,o)}function z$(t,e,n,i,o,a){let s;i.mode===Vt.SCENE3D?(s=t._baseVolume,t._boundingVolumeDirty=!0):s=t._baseVolume2D;let l=[];for(let r=0;r0){this._vaf=$le(i,n,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let Q=0;Q0){let Q=dre;Q.length=0,(r[fX]||r[Ole]||r[Dle])&&Q.push(_Wt),(r[WX]||r[BWt]||r[Mle]||r[_le]||r[Lle])&&(Q.push(vWt),this._instanced&&Q.push(q$)),(r[WX]||r[Hle]||r[xWt])&&(Q.push(KWt),Q.push(j$)),(r[WX]||r[kWt])&&Q.push(j$),r[QWt]&&Q.push(q$),r[YWt]&&Q.push(zWt),r[XWt]&&Q.push(jWt),(r[JWt]||r[wle]||r[WX]||r[fX])&&Q.push(qWt),(r[WX]||r[fX])&&Q.push($Wt),r[LWt]&&Q.push(tft);let J=Q.length;if(h=this._vaf.writers,l/n>.1){for(let M=0;Mn*1.5&&(s.length=n),!c(this._vaf)||!c(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,Ft.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let u,F=L.IDENTITY;t.mode===ut.SCENE3D?(F=this.modelMatrix,u=Ft.clone(this._baseVolumeWC,this._boundingVolume)):u=Ft.clone(this._baseVolume2D,this._boundingVolume),lre(this,t,u);let U=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,U){this._blendOption===wa.OPAQUE||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=he.fromCache({depthTest:{enabled:!0,func:pt.LESS},depthMask:!0}):this._rsOpaque=void 0;let Q=this._blendOption===wa.TRANSLUCENT;this._blendOption===wa.TRANSLUCENT||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=he.fromCache({depthTest:{enabled:!0,func:Q?pt.LEQUAL:pt.LESS},depthMask:Q,blending:Pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||t.minimumDisableDepthTestDistance!==0;let G,A,T,g,C,y=Sn.maximumVertexTextureImageUnits>0;if(U||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){G=RX,A=bX,C=[],c(this._batchTable)&&(C.push("VECTOR_TILE"),G=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(G),A=this._batchTable.getFragmentShaderCallback(!1,void 0)(A)),T=new Ve({defines:C,sources:[G]}),this._instanced&&T.defines.push("INSTANCED"),this._shaderRotation&&T.defines.push("ROTATION"),this._shaderAlignedAxis&&T.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&T.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&T.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&T.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&T.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&T.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(y?T.defines.push("VERTEX_DEPTH_CHECK"):T.defines.push("FRAGMENT_DEPTH_CHECK"));let Q=1-Ar.CUTOFF;this._sdf&&T.defines.push("SDF");let J=c(this._batchTable)?"VECTOR_TILE":"";this._blendOption===wa.OPAQUE_AND_TRANSLUCENT&&(g=new Ve({defines:["OPAQUE",J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._sp=xn.replaceCache({context:i,shaderProgram:this._sp,vertexShaderSource:T,fragmentShaderSource:g,attributeLocations:Ma}),g=new Ve({defines:["TRANSLUCENT",J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._spTranslucent=xn.replaceCache({context:i,shaderProgram:this._spTranslucent,vertexShaderSource:T,fragmentShaderSource:g,attributeLocations:Ma})),this._blendOption===wa.OPAQUE&&(g=new Ve({defines:[J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._sp=xn.replaceCache({context:i,shaderProgram:this._sp,vertexShaderSource:T,fragmentShaderSource:g,attributeLocations:Ma})),this._blendOption===wa.TRANSLUCENT&&(g=new Ve({defines:[J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._spTranslucent=xn.replaceCache({context:i,shaderProgram:this._spTranslucent,vertexShaderSource:T,fragmentShaderSource:g,attributeLocations:Ma})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let Y=t.commandList;if(Z.render||Z.pick){let Q=this._colorCommands,J=this._blendOption===wa.OPAQUE,M=this._blendOption===wa.OPAQUE_AND_TRANSLUCENT,V=this._vaf.va,E=V.length,I=this._uniforms,B;c(this._batchTable)?(I=this._batchTable.getUniformMapCallback()(I),B=this._batchTable.getPickId()):B="v_pickColor",Q.length=E;let X=M?E*2:E;for(let _=0;_0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(t){this._label.outlineColor=t}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(t){this._label.outlineWidth=t}},font:{get:function(){return this._label.font},set:function(t){this._label.font=t}},labelStyle:{get:function(){return this._label.style},set:function(t){this._label.style=t}},labelText:{get:function(){return this._label.text},set:function(t){c(t)||(t=""),this._label.text=t}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(t){this._label.backgroundColor=t}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(t){this._label.backgroundPadding=t}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(t){this._label.showBackground=t}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(t){this._label.scaleByDistance=t,this._billboard.scaleByDistance=t}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(t){this._label.translucencyByDistance=t,this._billboard.translucencyByDistance=t}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(t){this._label.distanceDisplayCondition=t,this._polyline.distanceDisplayCondition=t,this._billboard.distanceDisplayCondition=t}},heightOffset:{get:function(){return this._heightOffset},set:function(t){let e=f(this._heightOffset,0),n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,mre);i.height=i.height-e+t;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=t}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(t){this._polyline.show=t}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(t){this._polyline.material.uniforms.color=v.clone(t,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(t){let e=this._billboardImage!==t;this._billboardImage=t,e&&VC(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(t){this._label.disableDepthTestDistance=t,this._billboard.disableDepthTestDistance=t}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(t){this._billboard.horizontalOrigin=t}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(t){this._billboard.verticalOrigin=t}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(t){this._label.horizontalOrigin=t}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(t){this._label.verticalOrigin=t}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let t=this._pickIds;return t[0]=this._billboard.pickId,t[1]=this._label.pickId,t[2]=this._polyline.pickId,t}}});wr.defaultColor=v.WHITE;wr.defaultPointOutlineColor=v.BLACK;wr.defaultPointOutlineWidth=0;wr.defaultPointSize=8;function VC(t){let e=t._billboard;if(c(t._billboardImage)&&t._billboardImage!==e.image){e.image=t._billboardImage;return}if(c(t._billboardImage))return;let n=f(t._color,wr.defaultColor),i=f(t._pointOutlineColor,wr.defaultPointOutlineColor),o=f(t._pointOutlineWidth,wr.defaultPointOutlineWidth),a=f(t._pointSize,wr.defaultPointSize),s=t._billboardColor,l=t._billboardOutlineColor,r=t._billboardOutlineWidth,d=t._billboardSize;if(v.equals(n,s)&&v.equals(i,l)&&o===r&&a===d)return;t._billboardColor=v.clone(n,t._billboardColor),t._billboardOutlineColor=v.clone(i,t._billboardOutlineColor),t._billboardOutlineWidth=o,t._billboardSize=a;let m=n.alpha,h=n.toCssColorString(),Z=i.toCssColorString(),b=JSON.stringify([h,a,Z,o]);e.setImage(b,XA(m,h,Z,o,a))}wr.prototype.hasProperty=function(t){return this._content.batchTable.hasProperty(this._batchId,t)};wr.prototype.getPropertyIds=function(t){return this._content.batchTable.getPropertyIds(this._batchId,t)};wr.prototype.getProperty=function(t){return this._content.batchTable.getProperty(this._batchId,t)};wr.prototype.getPropertyInherited=function(t){return Fr.getPropertyInherited(this._content,this._batchId,t)};wr.prototype.setProperty=function(t,e){this._content.batchTable.setProperty(this._batchId,t,e),this._content.featurePropertiesDirty=!0};wr.prototype.isExactClass=function(t){return this._content.batchTable.isExactClass(this._batchId,t)};wr.prototype.isClass=function(t){return this._content.batchTable.isClass(this._batchId,t)};wr.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var b0=wr;var D7n=R(W(),1);var n7n=R(W(),1);function hre(t,e,n,i,o){let a=t.measureText(e);if(!!/\S/.test(e)){let l=document.defaultView.getComputedStyle(t.canvas).getPropertyValue("font-size").replace("px",""),r=document.createElement("canvas"),d=100,m=a.width+d|0,h=3*l,Z=h/2;r.width=m,r.height=h;let b=r.getContext("2d");b.font=n,b.fillStyle="white",b.fillRect(0,0,r.width+1,r.height+1),i&&(b.strokeStyle="black",b.lineWidth=t.lineWidth,b.strokeText(e,d/2,Z)),o&&(b.fillStyle="black",b.fillText(e,d/2,Z));let u=b.getImageData(0,0,m,h).data,F=u.length,U=m*4,G,A,T,g;for(G=0;G=0;--G)if(u[G]!==255){g=G/U|0;break}let C=-1;for(G=0;G]/,o=[],a="",s=_l.LTR,l="",r=t.length;for(let d=0;d";case">":return"<"}}var Ure="\u05D0-\u05EA",Gre="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",lft=new RegExp(`[${Ure}${Gre}]`);function Are(t){let e=t.split(` +`,{uniformMap:{billboard_texture:function(){return t._textureAtlas.texture}}});return i.pass=Pt.OVERLAY,i}var dre=[];wp.prototype.update=function(t){if(ttt(this),!this.show)return;let e=this._billboards,n=e.length,i=t.context;this._instanced=i.instancedArrays,Ma=this._instanced?Kle:vle,P$=this._instanced?jle:zle;let o=this._textureAtlas;if(!c(o)){o=this._textureAtlas=new dF({context:i});for(let Q=0;Q0){this._vaf=$le(i,n,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let Q=0;Q0){let Q=dre;Q.length=0,(r[fX]||r[Ole]||r[Dle])&&Q.push(_Wt),(r[WX]||r[BWt]||r[Mle]||r[_le]||r[Lle])&&(Q.push(vWt),this._instanced&&Q.push(q$)),(r[WX]||r[Hle]||r[xWt])&&(Q.push(KWt),Q.push(j$)),(r[WX]||r[kWt])&&Q.push(j$),r[QWt]&&Q.push(q$),r[YWt]&&Q.push(zWt),r[XWt]&&Q.push(jWt),(r[JWt]||r[wle]||r[WX]||r[fX])&&Q.push(qWt),(r[WX]||r[fX])&&Q.push($Wt),r[LWt]&&Q.push(tft);let J=Q.length;if(h=this._vaf.writers,l/n>.1){for(let M=0;Mn*1.5&&(s.length=n),!c(this._vaf)||!c(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,Ft.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let V,F=L.IDENTITY;t.mode===Vt.SCENE3D?(F=this.modelMatrix,V=Ft.clone(this._baseVolumeWC,this._boundingVolume)):V=Ft.clone(this._baseVolume2D,this._boundingVolume),lre(this,t,V);let U=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,U){this._blendOption===wa.OPAQUE||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=he.fromCache({depthTest:{enabled:!0,func:pt.LESS},depthMask:!0}):this._rsOpaque=void 0;let Q=this._blendOption===wa.TRANSLUCENT;this._blendOption===wa.TRANSLUCENT||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=he.fromCache({depthTest:{enabled:!0,func:Q?pt.LEQUAL:pt.LESS},depthMask:Q,blending:Pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||t.minimumDisableDepthTestDistance!==0;let G,A,S,g,C,y=Tn.maximumVertexTextureImageUnits>0;if(U||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){G=bX,A=RX,C=[],c(this._batchTable)&&(C.push("VECTOR_TILE"),G=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(G),A=this._batchTable.getFragmentShaderCallback(!1,void 0)(A)),S=new Ze({defines:C,sources:[G]}),this._instanced&&S.defines.push("INSTANCED"),this._shaderRotation&&S.defines.push("ROTATION"),this._shaderAlignedAxis&&S.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&S.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&S.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&S.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&S.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&S.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(y?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK"));let Q=1-Ar.CUTOFF;this._sdf&&S.defines.push("SDF");let J=c(this._batchTable)?"VECTOR_TILE":"";this._blendOption===wa.OPAQUE_AND_TRANSLUCENT&&(g=new Ze({defines:["OPAQUE",J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._sp=xn.replaceCache({context:i,shaderProgram:this._sp,vertexShaderSource:S,fragmentShaderSource:g,attributeLocations:Ma}),g=new Ze({defines:["TRANSLUCENT",J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._spTranslucent=xn.replaceCache({context:i,shaderProgram:this._spTranslucent,vertexShaderSource:S,fragmentShaderSource:g,attributeLocations:Ma})),this._blendOption===wa.OPAQUE&&(g=new Ze({defines:[J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._sp=xn.replaceCache({context:i,shaderProgram:this._sp,vertexShaderSource:S,fragmentShaderSource:g,attributeLocations:Ma})),this._blendOption===wa.TRANSLUCENT&&(g=new Ze({defines:[J],sources:[A]}),this._shaderClampToGround&&(y?g.defines.push("VERTEX_DEPTH_CHECK"):g.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(g.defines.push("SDF"),g.defines.push(`SDF_EDGE ${Q}`)),this._spTranslucent=xn.replaceCache({context:i,shaderProgram:this._spTranslucent,vertexShaderSource:S,fragmentShaderSource:g,attributeLocations:Ma})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let Y=t.commandList;if(u.render||u.pick){let Q=this._colorCommands,J=this._blendOption===wa.OPAQUE,M=this._blendOption===wa.OPAQUE_AND_TRANSLUCENT,Z=this._vaf.va,E=Z.length,I=this._uniforms,B;c(this._batchTable)?(I=this._batchTable.getUniformMapCallback()(I),B=this._batchTable.getPickId()):B="v_pickColor",Q.length=E;let X=M?E*2:E;for(let _=0;_0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(t){this._label.outlineColor=t}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(t){this._label.outlineWidth=t}},font:{get:function(){return this._label.font},set:function(t){this._label.font=t}},labelStyle:{get:function(){return this._label.style},set:function(t){this._label.style=t}},labelText:{get:function(){return this._label.text},set:function(t){c(t)||(t=""),this._label.text=t}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(t){this._label.backgroundColor=t}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(t){this._label.backgroundPadding=t}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(t){this._label.showBackground=t}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(t){this._label.scaleByDistance=t,this._billboard.scaleByDistance=t}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(t){this._label.translucencyByDistance=t,this._billboard.translucencyByDistance=t}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(t){this._label.distanceDisplayCondition=t,this._polyline.distanceDisplayCondition=t,this._billboard.distanceDisplayCondition=t}},heightOffset:{get:function(){return this._heightOffset},set:function(t){let e=f(this._heightOffset,0),n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,mre);i.height=i.height-e+t;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=t}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(t){this._polyline.show=t}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(t){this._polyline.material.uniforms.color=v.clone(t,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(t){let e=this._billboardImage!==t;this._billboardImage=t,e&&ZC(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(t){this._label.disableDepthTestDistance=t,this._billboard.disableDepthTestDistance=t}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(t){this._billboard.horizontalOrigin=t}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(t){this._billboard.verticalOrigin=t}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(t){this._label.horizontalOrigin=t}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(t){this._label.verticalOrigin=t}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let t=this._pickIds;return t[0]=this._billboard.pickId,t[1]=this._label.pickId,t[2]=this._polyline.pickId,t}}});wr.defaultColor=v.WHITE;wr.defaultPointOutlineColor=v.BLACK;wr.defaultPointOutlineWidth=0;wr.defaultPointSize=8;function ZC(t){let e=t._billboard;if(c(t._billboardImage)&&t._billboardImage!==e.image){e.image=t._billboardImage;return}if(c(t._billboardImage))return;let n=f(t._color,wr.defaultColor),i=f(t._pointOutlineColor,wr.defaultPointOutlineColor),o=f(t._pointOutlineWidth,wr.defaultPointOutlineWidth),a=f(t._pointSize,wr.defaultPointSize),s=t._billboardColor,l=t._billboardOutlineColor,r=t._billboardOutlineWidth,d=t._billboardSize;if(v.equals(n,s)&&v.equals(i,l)&&o===r&&a===d)return;t._billboardColor=v.clone(n,t._billboardColor),t._billboardOutlineColor=v.clone(i,t._billboardOutlineColor),t._billboardOutlineWidth=o,t._billboardSize=a;let m=n.alpha,h=n.toCssColorString(),u=i.toCssColorString(),R=JSON.stringify([h,a,u,o]);e.setImage(R,XA(m,h,u,o,a))}wr.prototype.hasProperty=function(t){return this._content.batchTable.hasProperty(this._batchId,t)};wr.prototype.getPropertyIds=function(t){return this._content.batchTable.getPropertyIds(this._batchId,t)};wr.prototype.getProperty=function(t){return this._content.batchTable.getProperty(this._batchId,t)};wr.prototype.getPropertyInherited=function(t){return Fr.getPropertyInherited(this._content,this._batchId,t)};wr.prototype.setProperty=function(t,e){this._content.batchTable.setProperty(this._batchId,t,e),this._content.featurePropertiesDirty=!0};wr.prototype.isExactClass=function(t){return this._content.batchTable.isExactClass(this._batchId,t)};wr.prototype.isClass=function(t){return this._content.batchTable.isClass(this._batchId,t)};wr.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var R0=wr;var D7n=b(W(),1);var n7n=b(W(),1);function hre(t,e,n,i,o){let a=t.measureText(e);if(!!/\S/.test(e)){let l=document.defaultView.getComputedStyle(t.canvas).getPropertyValue("font-size").replace("px",""),r=document.createElement("canvas"),d=100,m=a.width+d|0,h=3*l,u=h/2;r.width=m,r.height=h;let R=r.getContext("2d");R.font=n,R.fillStyle="white",R.fillRect(0,0,r.width+1,r.height+1),i&&(R.strokeStyle="black",R.lineWidth=t.lineWidth,R.strokeText(e,d/2,u)),o&&(R.fillStyle="black",R.fillText(e,d/2,u));let V=R.getImageData(0,0,m,h).data,F=V.length,U=m*4,G,A,S,g;for(G=0;G=0;--G)if(V[G]!==255){g=G/U|0;break}let C=-1;for(G=0;G]/,o=[],a="",s=_l.LTR,l="",r=t.length;for(let d=0;d";case">":return"<"}}var Ure="\u05D0-\u05EA",Gre="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",lft=new RegExp(`[${Ure}${Gre}]`);function Are(t){let e=t.split(` `),n="";for(let i=0;id+1?s[d+1].Type===_l.RTL?(r=h+r,l=0):(r=AX(r,l,m.Word),l+=m.Word.length):r=AX(r,0,h)):m.Type===_l.RTL?r=AX(r,l,h):m.Type===_l.LTR?(r+=m.Word,l=r.length):(m.Type===_l.WEAK||m.Type===_l.BRACKETS)&&(d>0&&s[d-1].Type===_l.RTL?s.length>d+1?s[d+1].Type===_l.RTL?r=AX(r,l,h):(r+=m.Word,l=r.length):r+=m.Word:(r+=m.Word,l=r.length))}n+=r,i0,h=e._backgroundBillboard,Z=t._backgroundBillboardCollection;m?(c(h)||(h=Z.add({collection:t,image:pft,imageSubRegion:Cre}),e._backgroundBillboard=h),h.color=e._backgroundColor,h.show=e._show,h.position=e._position,h.eyeOffset=e._eyeOffset,h.pixelOffset=e._pixelOffset,h.horizontalOrigin=to.LEFT,h.verticalOrigin=e._verticalOrigin,h.heightReference=e._heightReference,h.scale=e.totalScale,h.pickPrimitive=e,h.id=e._id,h.translucencyByDistance=e._translucencyByDistance,h.pixelOffsetScaleByDistance=e._pixelOffsetScaleByDistance,h.scaleByDistance=e._scaleByDistance,h.distanceDisplayCondition=e._distanceDisplayCondition,h.disableDepthTestDistance=e._disableDepthTestDistance,h.clusterShow=e.clusterShow):c(h)&&(Z.remove(h),e._backgroundBillboard=h=void 0);let b=t._glyphTextureCache;for(d=0;d0&&T.height>0){let g=(0,mft.default)(T,{cutoff:Ar.CUTOFF,radius:Ar.RADIUS}),C=T.getContext("2d"),y=T.width,Y=T.height,Q=C.getImageData(0,0,y,Y);for(let J=0;J0?A=T.pop():(A=t._billboardCollection.add({collection:t}),A._labelDimensions=new K,A._labelTranslate=new K),l.billboard=A),A.show=e._show,A.position=e._position,A.eyeOffset=e._eyeOffset,A.pixelOffset=e._pixelOffset,A.horizontalOrigin=to.LEFT,A.verticalOrigin=e._verticalOrigin,A.heightReference=e._heightReference,A.scale=e.totalScale,A.pickPrimitive=e,A.id=e._id,A.image=U,A.translucencyByDistance=e._translucencyByDistance,A.pixelOffsetScaleByDistance=e._pixelOffsetScaleByDistance,A.scaleByDistance=e._scaleByDistance,A.distanceDisplayCondition=e._distanceDisplayCondition,A.disableDepthTestDistance=e._disableDepthTestDistance,A._batchIndex=e._batchIndex,A.outlineColor=e.outlineColor,e.style===Pa.FILL_AND_OUTLINE?(A.color=e._fillColor,A.outlineWidth=e.outlineWidth):e.style===Pa.FILL?(A.color=e._fillColor,A.outlineWidth=0):e.style===Pa.OUTLINE&&(A.color=v.TRANSPARENT,A.outlineWidth=e.outlineWidth)}}e._repositionAllGlyphs=!0}function cft(t,e,n){return e===to.CENTER?-t/2:e===to.RIGHT?-(t+n.x):n.x}var Ns=new K,kre=new K;function Yre(t){let e=t._glyphs,n=t._renderedText,i,o,a=0,s=0,l=[],r=Number.NEGATIVE_INFINITY,d=0,m=1,h,Z=e.length,b=t._backgroundBillboard,u=K.clone(c(b)?t._backgroundPadding:K.ZERO,kre);for(u.x/=t._relativeSize,u.y/=t._relativeSize,h=0;h0&&(G===to.CENTER?C=-s/2-u.x:G===to.RIGHT?C=-(s+u.x*2):C=0,Ns.x=C*U,A===hi.TOP?Ns.y=F-d-r:A===hi.CENTER?Ns.y=(F-d)/2-r:A===hi.BASELINE?Ns.y=-u.y-r:Ns.y=0,Ns.y=Ns.y*U,b.width=Q,b.height=J,b._setTranslate(Ns),b._labelTranslate=K.clone(Ns,b._labelTranslate)),Np(t.heightReference))for(h=0;h0?wa.TRANSLUCENT:this.blendOption;e.blendOption=a,n.blendOption=a,e._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(t),e.update(t)};ab.prototype.isDestroyed=function(){return!1};ab.prototype.destroy=function(){return this.removeAll(),this._billboardCollection=this._billboardCollection.destroy(),this._textureAtlas=this._textureAtlas&&this._textureAtlas.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),this._backgroundTextureAtlas=this._backgroundTextureAtlas&&this._backgroundTextureAtlas.destroy(),At(this)};var sb=ab;var e$n=R(W(),1);var H7n=R(W(),1),TX=`in vec3 position3DHigh; +`)}return n}var cF=b0;var hft=b(dft(),1);function Tre(){this.textureInfo=void 0,this.dimensions=void 0,this.billboard=void 0}function gre(t,e,n){this.labelCollection=t,this.index=e,this.dimensions=n}var Ere=1.2,pft="ID_WHITE_PIXEL",ett=new K(4,4),Cre=new Fe(1,1,1,1);function Ire(t){let e=document.createElement("canvas");e.width=ett.x,e.height=ett.y;let n=e.getContext("2d");return n.fillStyle="#fff",n.fillRect(0,0,e.width,e.height),t.addImage(pft,e)}var Pp={};function Nre(t,e,n,i,o,a,s){return Pp.font=e,Pp.fillColor=n,Pp.strokeColor=i,Pp.strokeWidth=o,Pp.padding=Ar.PADDING,s===hi.CENTER?Pp.textBaseline="middle":s===hi.TOP?Pp.textBaseline="top":Pp.textBaseline="bottom",Pp.fill=a===Pa.FILL||a===Pa.FILL_AND_OUTLINE,Pp.stroke=a===Pa.OUTLINE||a===Pa.FILL_AND_OUTLINE,Pp.backgroundColor=v.BLACK,LA(t,Pp)}function ntt(t,e){e.textureInfo=void 0,e.dimensions=void 0;let n=e.billboard;c(n)&&(n.show=!1,n.image=void 0,c(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),t._spareBillboards.push(n),e.billboard=void 0)}function yre(t,e,n,i){i.index=t.addImageSync(e,n)}var Bre=new hft.default;function Qre(t,e){let n=e._renderedText,i=Bre.splitGraphemes(n),o=i.length,a=e._glyphs,s=a.length,l,r,d;if(e._relativeSize=e._fontSize/Ar.FONT_SIZE,o0,h=e._backgroundBillboard,u=t._backgroundBillboardCollection;m?(c(h)||(h=u.add({collection:t,image:pft,imageSubRegion:Cre}),e._backgroundBillboard=h),h.color=e._backgroundColor,h.show=e._show,h.position=e._position,h.eyeOffset=e._eyeOffset,h.pixelOffset=e._pixelOffset,h.horizontalOrigin=to.LEFT,h.verticalOrigin=e._verticalOrigin,h.heightReference=e._heightReference,h.scale=e.totalScale,h.pickPrimitive=e,h.id=e._id,h.translucencyByDistance=e._translucencyByDistance,h.pixelOffsetScaleByDistance=e._pixelOffsetScaleByDistance,h.scaleByDistance=e._scaleByDistance,h.distanceDisplayCondition=e._distanceDisplayCondition,h.disableDepthTestDistance=e._disableDepthTestDistance,h.clusterShow=e.clusterShow):c(h)&&(u.remove(h),e._backgroundBillboard=h=void 0);let R=t._glyphTextureCache;for(d=0;d0&&S.height>0){let g=(0,mft.default)(S,{cutoff:Ar.CUTOFF,radius:Ar.RADIUS}),C=S.getContext("2d"),y=S.width,Y=S.height,Q=C.getImageData(0,0,y,Y);for(let J=0;J0?A=S.pop():(A=t._billboardCollection.add({collection:t}),A._labelDimensions=new K,A._labelTranslate=new K),l.billboard=A),A.show=e._show,A.position=e._position,A.eyeOffset=e._eyeOffset,A.pixelOffset=e._pixelOffset,A.horizontalOrigin=to.LEFT,A.verticalOrigin=e._verticalOrigin,A.heightReference=e._heightReference,A.scale=e.totalScale,A.pickPrimitive=e,A.id=e._id,A.image=U,A.translucencyByDistance=e._translucencyByDistance,A.pixelOffsetScaleByDistance=e._pixelOffsetScaleByDistance,A.scaleByDistance=e._scaleByDistance,A.distanceDisplayCondition=e._distanceDisplayCondition,A.disableDepthTestDistance=e._disableDepthTestDistance,A._batchIndex=e._batchIndex,A.outlineColor=e.outlineColor,e.style===Pa.FILL_AND_OUTLINE?(A.color=e._fillColor,A.outlineWidth=e.outlineWidth):e.style===Pa.FILL?(A.color=e._fillColor,A.outlineWidth=0):e.style===Pa.OUTLINE&&(A.color=v.TRANSPARENT,A.outlineWidth=e.outlineWidth)}}e._repositionAllGlyphs=!0}function cft(t,e,n){return e===to.CENTER?-t/2:e===to.RIGHT?-(t+n.x):n.x}var Ns=new K,kre=new K;function Yre(t){let e=t._glyphs,n=t._renderedText,i,o,a=0,s=0,l=[],r=Number.NEGATIVE_INFINITY,d=0,m=1,h,u=e.length,R=t._backgroundBillboard,V=K.clone(c(R)?t._backgroundPadding:K.ZERO,kre);for(V.x/=t._relativeSize,V.y/=t._relativeSize,h=0;h0&&(G===to.CENTER?C=-s/2-V.x:G===to.RIGHT?C=-(s+V.x*2):C=0,Ns.x=C*U,A===hi.TOP?Ns.y=F-d-r:A===hi.CENTER?Ns.y=(F-d)/2-r:A===hi.BASELINE?Ns.y=-V.y-r:Ns.y=0,Ns.y=Ns.y*U,R.width=Q,R.height=J,R._setTranslate(Ns),R._labelTranslate=K.clone(Ns,R._labelTranslate)),Np(t.heightReference))for(h=0;h0?wa.TRANSLUCENT:this.blendOption;e.blendOption=a,n.blendOption=a,e._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(t),e.update(t)};aR.prototype.isDestroyed=function(){return!1};aR.prototype.destroy=function(){return this.removeAll(),this._billboardCollection=this._billboardCollection.destroy(),this._textureAtlas=this._textureAtlas&&this._textureAtlas.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),this._backgroundTextureAtlas=this._backgroundTextureAtlas&&this._backgroundTextureAtlas.destroy(),At(this)};var sR=aR;var e$n=b(W(),1);var H7n=b(W(),1),SX=`in vec3 position3DHigh; in vec3 position3DLow; in vec3 position2DHigh; in vec3 position2DLow; @@ -8617,8 +8617,8 @@ void main() v_pickColor = pickColor; v_polylineAngle = polylineAngle; } -`;var Vqn=R(W(),1);var oqn=R(W(),1);var Lc={};Lc.numberOfPoints=function(t,e,n){let i=p.distance(t,e);return Math.ceil(i/n)};Lc.numberOfPointsRhumbLine=function(t,e,n){let i=Math.pow(t.longitude-e.longitude,2)+Math.pow(t.latitude-e.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var xre=new gt;Lc.extractHeights=function(t,e){let n=t.length,i=new Array(n);for(let o=0;o0){e=f(e,L.IDENTITY);let o=L.inverseTransformation(e,Xre),a=L.multiplyByPoint(o,p.ZERO,Jre),s=p.normalize(L.multiplyByPointAsVector(o,p.UNIT_Y,Zft),Zft),l=Kn.fromPointNormal(a,s,Lre),r=p.normalize(L.multiplyByPointAsVector(o,p.UNIT_X,Vft),Vft),d=Kn.fromPointNormal(a,r,Mre),m=1;n.push(p.clone(t[0]));let h=n[0],Z=t.length;for(let b=1;b2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(p.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=t.id;let i;c(e)&&(i=L.clone(e.modelMatrix)),this._modelMatrix=i,this._segments=xo.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(fft),this._polylineCollection=e,this._dirty=!1,this._pickId=void 0,this._boundingVolume=Ft.fromPoints(this._actualPositions),this._boundingVolumeWC=Ft.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new Ft}var Wft=Bh.POSITION_INDEX=0,vre=Bh.SHOW_INDEX=1,Kre=Bh.WIDTH_INDEX=2,zre=Bh.MATERIAL_INDEX=3,gX=Bh.POSITION_SIZE_INDEX=4,jre=Bh.DISTANCE_DISPLAY_CONDITION=5,fft=Bh.NUMBER_OF_PROPERTIES=6;function W0(t,e){++t._propertiesChanged[e];let n=t._polylineCollection;c(n)&&(n._updatePolyline(t,e),t._dirty=!0)}Object.defineProperties(Bh.prototype,{show:{get:function(){return this._show},set:function(t){t!==this._show&&(this._show=t,W0(this,vre))}},positions:{get:function(){return this._positions},set:function(t){let e=sa(t,p.equalsEpsilon);this._loop&&e.length>2&&(e===t&&(e=t.slice()),e.push(p.clone(e[0]))),(this._actualPositions.length!==e.length||this._actualPositions.length!==this._length)&&W0(this,gX),this._positions=t,this._actualPositions=e,this._length=e.length,this._boundingVolume=Ft.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=Ft.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),W0(this,Wft),this.update()}},material:{get:function(){return this._material},set:function(t){this._material!==t&&(this._material=t,W0(this,zre))}},width:{get:function(){return this._width},set:function(t){let e=this._width;t!==e&&(this._width=t,W0(this,Kre))}},loop:{get:function(){return this._loop},set:function(t){if(t!==this._loop){let e=this._actualPositions;t?e.length>2&&!p.equals(e[0],e[e.length-1])&&(e.length===this._positions.length&&(this._actualPositions=e=this._positions.slice()),e.push(p.clone(e[0]))):e.length>2&&p.equals(e[0],e[e.length-1])&&(e.length-1===this._positions.length?this._actualPositions=this._positions:e.pop()),this._loop=t,W0(this,gX)}}},id:{get:function(){return this._id},set:function(t){this._id=t,c(this._pickId)&&(this._pickId.object.id=t)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!c(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){Wn.equals(t,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Wn.clone(t,this._distanceDisplayCondition),W0(this,jre))}}});Bh.prototype.update=function(){let t=L.IDENTITY;c(this._polylineCollection)&&(t=this._polylineCollection.modelMatrix);let e=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Wft]>0||this._propertiesChanged[gX]>0;if((!L.equals(t,this._modelMatrix)||i)&&(this._segments=xo.wrapLongitude(this._actualPositions,t),this._boundingVolumeWC=Ft.transform(this._boundingVolume,t,this._boundingVolumeWC)),this._modelMatrix=L.clone(t,this._modelMatrix),this._segments.positions.length!==e)W0(this,gX);else{let o=n.length;for(let a=0;a2){if(o[ltt]||o[Fft]){let u=t.mode===ut.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,F=Mi.fromCartesian(u.center,Cft),U=Rt.fromElements(F.low.x,F.low.y,F.low.z,u.radius,Ift);this._batchTable.setBatchedAttribute(i._index,2,F.high),this._batchTable.setBatchedAttribute(i._index,3,U)}if(o[ede]){let u=Nft;u.x=0,u.y=Number.MAX_VALUE;let F=i.distanceDisplayCondition;c(F)&&(u.x=F.near,u.y=F.far),this._batchTable.setBatchedAttribute(i._index,4,u)}}i._clean()}}r.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let r=0;r0){let z=J.isTranslucent();l>=s?(V=new Ee({owner:t}),n.push(V)):V=n[l],++l,E=ze(Z(J._uniforms),t._uniformMap),V.boundingVolume=Ft.clone(EX,V.boundingVolume),V.modelMatrix=i,V.shaderProgram=C,V.vertexArray=F.va,V.renderState=z?t._translucentRS:t._opaqueRS,V.pass=z?Pt.TRANSLUCENT:Pt.OPAQUE,V.debugShowBoundingVolume=m,V.pickId="v_pickColor",V.uniformMap=E,V.count=M,V.offset=g,g+=M,M=0,r=!0,a.push(V)}J=B._material,J.update(o),Q=X}let _=B._locatorBuckets,P=_.length;for(let z=0;z0&&(l>=s?(V=new Ee({owner:t}),n.push(V)):V=n[l],++l,E=ze(Z(J._uniforms),t._uniformMap),V.boundingVolume=Ft.clone(EX,V.boundingVolume),V.modelMatrix=i,V.shaderProgram=C,V.vertexArray=F.va,V.renderState=J.isTranslucent()?t._translucentRS:t._opaqueRS,V.pass=J.isTranslucent()?Pt.TRANSLUCENT:Pt.OPAQUE,V.debugShowBoundingVolume=m,V.pickId="v_pickColor",V.uniformMap=E,V.count=M,V.offset=g,r=!0,a.push(V)),Q=void 0}}n.length=l}TZ.prototype.isDestroyed=function(){return!1};TZ.prototype.destroy=function(){return yft(this),dtt(this),Bft(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),At(this)};function ode(t){let e=!1,n=t._propertiesChanged,i=t._positionBufferUsage;return n[ltt]?(i.bufferUsage!==ce.STREAM_DRAW&&(e=!0,i.bufferUsage=ce.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==ce.STATIC_DRAW&&(i.frameCount===0?(e=!0,i.bufferUsage=ce.STATIC_DRAW):i.frameCount--),e}var Gft=[0,0,0];function Aft(t,e,n){t._createVertexArray=!1,dtt(t),yft(t),lde(t);let i=[[]],o=i[0],a=t._batchTable,s=t._useHighlightColor,l=[0],r=0,d=[[]],m=0,h=t._polylineBuckets,Z,b;for(Z in h)h.hasOwnProperty(Z)&&(b=h[Z],b.updateShader(e,a,s),m+=b.lengthOfPositions);if(m>0){let u=t._mode,F=new Float32Array(6*m*3),U=new Float32Array(m*4),G,A=0,T=0,g=0;for(Z in h)if(h.hasOwnProperty(Z)){b=h[Z],b.write(F,U,A,T,g,a,e,n),u===ut.MORPHING&&(c(G)||(G=new Float32Array(6*m*3)),b.writeForMorph(G,A));let E=b.lengthOfPositions;A+=6*E*3,T+=E*4,g+=E*4,r=b.updateIndices(i,l,d,r)}let C=t._positionBufferUsage.bufferUsage,y=ce.STATIC_DRAW;t._positionBuffer=we.createVertexBuffer({context:e,typedArray:F,usage:C});let Y;c(G)&&(Y=we.createVertexBuffer({context:e,typedArray:G,usage:C})),t._texCoordExpandAndBatchIndexBuffer=we.createVertexBuffer({context:e,typedArray:U,usage:y});let Q=3*Float32Array.BYTES_PER_ELEMENT,J=4*Float32Array.BYTES_PER_ELEMENT,M=0,V=i.length;for(let E=0;E0){let I=new Uint16Array(o),B=we.createIndexBuffer({context:e,typedArray:I,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT});M+=l[E];let X=6*(E*(Q*k.SIXTY_FOUR_KILOBYTES)-M*Q),_=Q+X,P=Q+_,w=Q+P,z=Q+w,H=Q+z,nt=E*(J*k.SIXTY_FOUR_KILOBYTES)-M*J,$=[{index:Jm.position3DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:X,strideInBytes:6*Q},{index:Jm.position3DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:_,strideInBytes:6*Q},{index:Jm.position2DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:X,strideInBytes:6*Q},{index:Jm.position2DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:_,strideInBytes:6*Q},{index:Jm.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:P,strideInBytes:6*Q},{index:Jm.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:w,strideInBytes:6*Q},{index:Jm.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:P,strideInBytes:6*Q},{index:Jm.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:w,strideInBytes:6*Q},{index:Jm.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:z,strideInBytes:6*Q},{index:Jm.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:H,strideInBytes:6*Q},{index:Jm.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:z,strideInBytes:6*Q},{index:Jm.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:H,strideInBytes:6*Q},{index:Jm.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:it.FLOAT,vertexBuffer:t._texCoordExpandAndBatchIndexBuffer,offsetInBytes:nt}],dt,q,at,st;u===ut.SCENE3D?(q=t._positionBuffer,dt="vertexBuffer",at=Gft,st="value"):u===ut.SCENE2D||u===ut.COLUMBUS_VIEW?(q=Gft,dt="value",at=t._positionBuffer,st="vertexBuffer"):(q=Y,dt="vertexBuffer",at=t._positionBuffer,st="vertexBuffer"),$[0][dt]=q,$[1][dt]=q,$[2][st]=at,$[3][st]=at,$[4][dt]=q,$[5][dt]=q,$[6][st]=at,$[7][st]=at,$[8][dt]=q,$[9][dt]=q,$[10][st]=at,$[11][st]=at;let Et=new Ki({context:e,attributes:$,indexBuffer:B});t._vertexArrays.push({va:Et,buckets:d[E]})}}}function ade(t,e){return e instanceof hn?e.id:e}var pP=[];function sde(t){let e=eo._uniformList[t.type],n=e.length;pP.length=2*n;let i=0;for(let o=0;o1){l.update();let r=l.material,d=i[r.type];c(d)||(d=i[r.type]=new lb(r,e,n)),d.addPolyline(l)}}}function rde(t,e){let n=e.mode;(t._mode!==n||!L.equals(t._modelMatrix,t.modelMatrix))&&(t._mode=n,t._modelMatrix=L.clone(t.modelMatrix),t._createVertexArray=!0)}function rtt(t){if(t._polylinesRemoved){t._polylinesRemoved=!1;let e=[],n=[],i=0,o,a=t._polylines.length;for(let s=0;s0,U=b._index,G=this.getSegments(b,l),A=G.positions,T=G.lengths,g=A.length,C=b.getPickId(s).color,y=0,Y=0,Q;for(let P=0;P0||er.x>0&&Kp.x<0)&&p.clone(er,Kp),(er.x<0&&zp.x>0||er.x>0&&zp.x<0)&&p.clone(er,zp));let nt=z?2:0,$=H?2:4;for(let dt=nt;dt<$;++dt){Mi.writeElements(er,t,n),Mi.writeElements(Kp,t,n+6),Mi.writeElements(zp,t,n+12);let q=dt-2<0?-1:1;e[o]=P/(g-1),e[o+1]=2*(dt%2)-1,e[o+2]=q,e[o+3]=U,n+=6*3,o+=4}}let J=dde;J.x=v.floatToByte(C.red),J.y=v.floatToByte(C.green),J.z=v.floatToByte(C.blue),J.w=v.floatToByte(C.alpha);let M=cde;M.x=u,M.y=F?1:0;let V=r===ut.SCENE2D?b._boundingVolume2D:b._boundingVolumeWC,E=Mi.fromCartesian(V.center,Cft),I=E.high,B=Rt.fromElements(E.low.x,E.low.y,E.low.z,V.radius,Ift),X=Nft;X.x=0,X.y=Number.MAX_VALUE;let _=b.distanceDisplayCondition;c(_)&&(X.x=_.near,X.y=_.far),a.setBatchedAttribute(U,0,M),a.setBatchedAttribute(U,1,J),a.attributes.length>2&&(a.setBatchedAttribute(U,2,I),a.setBatchedAttribute(U,3,B),a.setBatchedAttribute(U,4,X))}};var mde=new p,hde=new p,pde=new p,Tft=new p;lb.prototype.writeForMorph=function(t,e){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let a=0;a0&&(r=l[l.length-1]+1);let d=this.polylines,m=d.length;for(let h=0;h0)b[0]=F;else continue}else b=Z._segments.lengths;let u=b.length;if(u>0){let F=0;for(let U=0;Uk.SIXTY_FOUR_KILOBYTES&&(Z._locatorBuckets.push({locator:a,count:F}),F=0,e.push(4),l=[],t.push(l),r=0,a.count=s,s=0,i=0,a=new stt(0,0,this),n[++o]=[a]),l.push(r,r+2,r+1),l.push(r+1,r+2,r+3),F+=6,s+=6,i+=6,r+=4}Z._locatorBuckets.push({locator:a,count:F}),r+4>k.SIXTY_FOUR_KILOBYTES&&(e.push(0),l=[],t.push(l),r=0,a.count=s,i=0,s=0,a=new stt(0,0,this),n[++o]=[a])}Z._clean()}return a.count=s,i};lb.prototype.getPolylineStartIndex=function(t){let e=this.polylines,n=0,i=e.length;for(let o=0;o0){t._boundingVolume2D=Ft.fromPoints(o,t._boundingVolume2D);let d=t._boundingVolume2D.center;t._boundingVolume2D.center=new p(d.z,d.x,d.y)}return bC.positions=o,bC.lengths=t._segments.lengths,bC};var gft;lb.prototype.writeUpdate=function(t,e,n,i){let o=this.mode,a=i.ellipsoid.maximumRadius*k.PI,s=e._actualLength;if(s){t+=this.getPolylineStartIndex(e);let l=gft,r=6*s*3;!c(l)||l.lengthr&&(l=new Float32Array(l.buffer,0,r));let d=this.getSegments(e,i),m=d.positions,h=d.lengths,Z=0,b=0,u=0,F;s=m.length;for(let U=0;U0||er.x>0&&Kp.x<0)&&p.clone(er,Kp),(er.x<0&&zp.x>0||er.x>0&&zp.x<0)&&p.clone(er,zp));let g=A?2:0,C=T?2:4;for(let y=g;y{if(t.isDestroyed())return;t._positions=new Float64Array(l.positions);let r=t._billboardCollection,d=t._labelCollection,m=t._polylineCollection;n=t._positions;let h=t._batchIds,Z=n.length/3;for(let b=0;b{t.isDestroyed()||(t._error=l)})}hF.prototype.createFeatures=function(t,e){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,a=this._batchIds,s=a.length;for(let l=0;l{if(t.isDestroyed())return;t._positions=void 0,t._counts=void 0,t._polygonMinimumHeights=void 0,t._polygonMaximumHeights=void 0;let u=new Float64Array(b.packedBuffer),F=u[0];Cde(t,u),t._indices=re.getSizeInBytes(F)===2?new Uint16Array(b.indices):new Uint32Array(b.indices),t._indexOffsets=new Uint32Array(b.indexOffsets),t._indexCounts=new Uint32Array(b.indexCounts),t._batchedPositions=new Float32Array(b.positions),t._vertexBatchIds=new Uint16Array(b.batchIds),Bde(t),t._ready=!0}).catch(b=>{t.isDestroyed()||(t._error=b)})}function Bde(t){c(t._primitive)||(t._primitive=new cA({batchTable:t._batchTable,positions:t._batchedPositions,batchIds:t._batchIds,vertexBatchIds:t._vertexBatchIds,indices:t._indices,indexOffsets:t._indexOffsets,indexCounts:t._indexCounts,batchedIndices:t._batchedIndices,boundingVolume:t._boundingVolume,boundingVolumes:t._boundingVolumes,center:t._center}),t._batchTable=void 0,t._batchIds=void 0,t._positions=void 0,t._counts=void 0,t._indices=void 0,t._indexCounts=void 0,t._indexOffsets=void 0,t._batchTableColors=void 0,t._packedBuffer=void 0,t._batchedPositions=void 0,t._transferrableBatchIds=void 0,t._vertexBatchIds=void 0,t._ellipsoid=void 0,t._minimumHeight=void 0,t._maximumHeight=void 0,t._polygonMinimumHeights=void 0,t._polygonMaximumHeights=void 0,t._center=void 0,t._rectangle=void 0,t._boundingVolume=void 0,t._boundingVolumes=void 0,t._batchedIndices=void 0)}f0.prototype.createFeatures=function(t,e){this._primitive.createFeatures(t,e)};f0.prototype.applyDebugSettings=function(t,e){this._primitive.applyDebugSettings(t,e)};f0.prototype.applyStyle=function(t,e){this._primitive.applyStyle(t,e)};f0.prototype.updateCommands=function(t,e){this._primitive.updateCommands(t,e)};f0.prototype.update=function(t){if(!this._ready){if(c(this._promise)||(this._promise=yde(this)),c(this._error)){let e=this._error;throw this._error=void 0,e}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(t)};f0.prototype.isDestroyed=function(){return!1};f0.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};var yX=f0;var dti=R(W(),1);var x$n=R(W(),1),BX=`in vec4 currentPosition; +`;var Zqn=b(W(),1);var oqn=b(W(),1);var Lc={};Lc.numberOfPoints=function(t,e,n){let i=p.distance(t,e);return Math.ceil(i/n)};Lc.numberOfPointsRhumbLine=function(t,e,n){let i=Math.pow(t.longitude-e.longitude,2)+Math.pow(t.latitude-e.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var xre=new gt;Lc.extractHeights=function(t,e){let n=t.length,i=new Array(n);for(let o=0;o0){e=f(e,L.IDENTITY);let o=L.inverseTransformation(e,Xre),a=L.multiplyByPoint(o,p.ZERO,Jre),s=p.normalize(L.multiplyByPointAsVector(o,p.UNIT_Y,uft),uft),l=Kn.fromPointNormal(a,s,Lre),r=p.normalize(L.multiplyByPointAsVector(o,p.UNIT_X,Zft),Zft),d=Kn.fromPointNormal(a,r,Mre),m=1;n.push(p.clone(t[0]));let h=n[0],u=t.length;for(let R=1;R2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(p.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=t.id;let i;c(e)&&(i=L.clone(e.modelMatrix)),this._modelMatrix=i,this._segments=xo.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(fft),this._polylineCollection=e,this._dirty=!1,this._pickId=void 0,this._boundingVolume=Ft.fromPoints(this._actualPositions),this._boundingVolumeWC=Ft.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new Ft}var Wft=Bh.POSITION_INDEX=0,vre=Bh.SHOW_INDEX=1,Kre=Bh.WIDTH_INDEX=2,zre=Bh.MATERIAL_INDEX=3,gX=Bh.POSITION_SIZE_INDEX=4,jre=Bh.DISTANCE_DISPLAY_CONDITION=5,fft=Bh.NUMBER_OF_PROPERTIES=6;function W0(t,e){++t._propertiesChanged[e];let n=t._polylineCollection;c(n)&&(n._updatePolyline(t,e),t._dirty=!0)}Object.defineProperties(Bh.prototype,{show:{get:function(){return this._show},set:function(t){t!==this._show&&(this._show=t,W0(this,vre))}},positions:{get:function(){return this._positions},set:function(t){let e=sa(t,p.equalsEpsilon);this._loop&&e.length>2&&(e===t&&(e=t.slice()),e.push(p.clone(e[0]))),(this._actualPositions.length!==e.length||this._actualPositions.length!==this._length)&&W0(this,gX),this._positions=t,this._actualPositions=e,this._length=e.length,this._boundingVolume=Ft.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=Ft.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),W0(this,Wft),this.update()}},material:{get:function(){return this._material},set:function(t){this._material!==t&&(this._material=t,W0(this,zre))}},width:{get:function(){return this._width},set:function(t){let e=this._width;t!==e&&(this._width=t,W0(this,Kre))}},loop:{get:function(){return this._loop},set:function(t){if(t!==this._loop){let e=this._actualPositions;t?e.length>2&&!p.equals(e[0],e[e.length-1])&&(e.length===this._positions.length&&(this._actualPositions=e=this._positions.slice()),e.push(p.clone(e[0]))):e.length>2&&p.equals(e[0],e[e.length-1])&&(e.length-1===this._positions.length?this._actualPositions=this._positions:e.pop()),this._loop=t,W0(this,gX)}}},id:{get:function(){return this._id},set:function(t){this._id=t,c(this._pickId)&&(this._pickId.object.id=t)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!c(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){Wn.equals(t,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Wn.clone(t,this._distanceDisplayCondition),W0(this,jre))}}});Bh.prototype.update=function(){let t=L.IDENTITY;c(this._polylineCollection)&&(t=this._polylineCollection.modelMatrix);let e=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Wft]>0||this._propertiesChanged[gX]>0;if((!L.equals(t,this._modelMatrix)||i)&&(this._segments=xo.wrapLongitude(this._actualPositions,t),this._boundingVolumeWC=Ft.transform(this._boundingVolume,t,this._boundingVolumeWC)),this._modelMatrix=L.clone(t,this._modelMatrix),this._segments.positions.length!==e)W0(this,gX);else{let o=n.length;for(let a=0;a2){if(o[ltt]||o[Fft]){let V=t.mode===Vt.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,F=Mi.fromCartesian(V.center,Cft),U=bt.fromElements(F.low.x,F.low.y,F.low.z,V.radius,Ift);this._batchTable.setBatchedAttribute(i._index,2,F.high),this._batchTable.setBatchedAttribute(i._index,3,U)}if(o[ede]){let V=Nft;V.x=0,V.y=Number.MAX_VALUE;let F=i.distanceDisplayCondition;c(F)&&(V.x=F.near,V.y=F.far),this._batchTable.setBatchedAttribute(i._index,4,V)}}i._clean()}}r.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let r=0;r0){let z=J.isTranslucent();l>=s?(Z=new Ee({owner:t}),n.push(Z)):Z=n[l],++l,E=ze(u(J._uniforms),t._uniformMap),Z.boundingVolume=Ft.clone(EX,Z.boundingVolume),Z.modelMatrix=i,Z.shaderProgram=C,Z.vertexArray=F.va,Z.renderState=z?t._translucentRS:t._opaqueRS,Z.pass=z?Pt.TRANSLUCENT:Pt.OPAQUE,Z.debugShowBoundingVolume=m,Z.pickId="v_pickColor",Z.uniformMap=E,Z.count=M,Z.offset=g,g+=M,M=0,r=!0,a.push(Z)}J=B._material,J.update(o),Q=X}let _=B._locatorBuckets,P=_.length;for(let z=0;z0&&(l>=s?(Z=new Ee({owner:t}),n.push(Z)):Z=n[l],++l,E=ze(u(J._uniforms),t._uniformMap),Z.boundingVolume=Ft.clone(EX,Z.boundingVolume),Z.modelMatrix=i,Z.shaderProgram=C,Z.vertexArray=F.va,Z.renderState=J.isTranslucent()?t._translucentRS:t._opaqueRS,Z.pass=J.isTranslucent()?Pt.TRANSLUCENT:Pt.OPAQUE,Z.debugShowBoundingVolume=m,Z.pickId="v_pickColor",Z.uniformMap=E,Z.count=M,Z.offset=g,r=!0,a.push(Z)),Q=void 0}}n.length=l}Su.prototype.isDestroyed=function(){return!1};Su.prototype.destroy=function(){return yft(this),dtt(this),Bft(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),At(this)};function ode(t){let e=!1,n=t._propertiesChanged,i=t._positionBufferUsage;return n[ltt]?(i.bufferUsage!==ce.STREAM_DRAW&&(e=!0,i.bufferUsage=ce.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==ce.STATIC_DRAW&&(i.frameCount===0?(e=!0,i.bufferUsage=ce.STATIC_DRAW):i.frameCount--),e}var Gft=[0,0,0];function Aft(t,e,n){t._createVertexArray=!1,dtt(t),yft(t),lde(t);let i=[[]],o=i[0],a=t._batchTable,s=t._useHighlightColor,l=[0],r=0,d=[[]],m=0,h=t._polylineBuckets,u,R;for(u in h)h.hasOwnProperty(u)&&(R=h[u],R.updateShader(e,a,s),m+=R.lengthOfPositions);if(m>0){let V=t._mode,F=new Float32Array(6*m*3),U=new Float32Array(m*4),G,A=0,S=0,g=0;for(u in h)if(h.hasOwnProperty(u)){R=h[u],R.write(F,U,A,S,g,a,e,n),V===Vt.MORPHING&&(c(G)||(G=new Float32Array(6*m*3)),R.writeForMorph(G,A));let E=R.lengthOfPositions;A+=6*E*3,S+=E*4,g+=E*4,r=R.updateIndices(i,l,d,r)}let C=t._positionBufferUsage.bufferUsage,y=ce.STATIC_DRAW;t._positionBuffer=we.createVertexBuffer({context:e,typedArray:F,usage:C});let Y;c(G)&&(Y=we.createVertexBuffer({context:e,typedArray:G,usage:C})),t._texCoordExpandAndBatchIndexBuffer=we.createVertexBuffer({context:e,typedArray:U,usage:y});let Q=3*Float32Array.BYTES_PER_ELEMENT,J=4*Float32Array.BYTES_PER_ELEMENT,M=0,Z=i.length;for(let E=0;E0){let I=new Uint16Array(o),B=we.createIndexBuffer({context:e,typedArray:I,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT});M+=l[E];let X=6*(E*(Q*k.SIXTY_FOUR_KILOBYTES)-M*Q),_=Q+X,P=Q+_,w=Q+P,z=Q+w,H=Q+z,nt=E*(J*k.SIXTY_FOUR_KILOBYTES)-M*J,$=[{index:Jm.position3DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:X,strideInBytes:6*Q},{index:Jm.position3DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:_,strideInBytes:6*Q},{index:Jm.position2DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:X,strideInBytes:6*Q},{index:Jm.position2DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:_,strideInBytes:6*Q},{index:Jm.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:P,strideInBytes:6*Q},{index:Jm.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:w,strideInBytes:6*Q},{index:Jm.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:P,strideInBytes:6*Q},{index:Jm.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:w,strideInBytes:6*Q},{index:Jm.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:z,strideInBytes:6*Q},{index:Jm.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:H,strideInBytes:6*Q},{index:Jm.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:z,strideInBytes:6*Q},{index:Jm.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:it.FLOAT,offsetInBytes:H,strideInBytes:6*Q},{index:Jm.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:it.FLOAT,vertexBuffer:t._texCoordExpandAndBatchIndexBuffer,offsetInBytes:nt}],dt,q,at,st;V===Vt.SCENE3D?(q=t._positionBuffer,dt="vertexBuffer",at=Gft,st="value"):V===Vt.SCENE2D||V===Vt.COLUMBUS_VIEW?(q=Gft,dt="value",at=t._positionBuffer,st="vertexBuffer"):(q=Y,dt="vertexBuffer",at=t._positionBuffer,st="vertexBuffer"),$[0][dt]=q,$[1][dt]=q,$[2][st]=at,$[3][st]=at,$[4][dt]=q,$[5][dt]=q,$[6][st]=at,$[7][st]=at,$[8][dt]=q,$[9][dt]=q,$[10][st]=at,$[11][st]=at;let Et=new Ki({context:e,attributes:$,indexBuffer:B});t._vertexArrays.push({va:Et,buckets:d[E]})}}}function ade(t,e){return e instanceof hn?e.id:e}var pP=[];function sde(t){let e=eo._uniformList[t.type],n=e.length;pP.length=2*n;let i=0;for(let o=0;o1){l.update();let r=l.material,d=i[r.type];c(d)||(d=i[r.type]=new lR(r,e,n)),d.addPolyline(l)}}}function rde(t,e){let n=e.mode;(t._mode!==n||!L.equals(t._modelMatrix,t.modelMatrix))&&(t._mode=n,t._modelMatrix=L.clone(t.modelMatrix),t._createVertexArray=!0)}function rtt(t){if(t._polylinesRemoved){t._polylinesRemoved=!1;let e=[],n=[],i=0,o,a=t._polylines.length;for(let s=0;s0,U=R._index,G=this.getSegments(R,l),A=G.positions,S=G.lengths,g=A.length,C=R.getPickId(s).color,y=0,Y=0,Q;for(let P=0;P0||er.x>0&&Kp.x<0)&&p.clone(er,Kp),(er.x<0&&zp.x>0||er.x>0&&zp.x<0)&&p.clone(er,zp));let nt=z?2:0,$=H?2:4;for(let dt=nt;dt<$;++dt){Mi.writeElements(er,t,n),Mi.writeElements(Kp,t,n+6),Mi.writeElements(zp,t,n+12);let q=dt-2<0?-1:1;e[o]=P/(g-1),e[o+1]=2*(dt%2)-1,e[o+2]=q,e[o+3]=U,n+=6*3,o+=4}}let J=dde;J.x=v.floatToByte(C.red),J.y=v.floatToByte(C.green),J.z=v.floatToByte(C.blue),J.w=v.floatToByte(C.alpha);let M=cde;M.x=V,M.y=F?1:0;let Z=r===Vt.SCENE2D?R._boundingVolume2D:R._boundingVolumeWC,E=Mi.fromCartesian(Z.center,Cft),I=E.high,B=bt.fromElements(E.low.x,E.low.y,E.low.z,Z.radius,Ift),X=Nft;X.x=0,X.y=Number.MAX_VALUE;let _=R.distanceDisplayCondition;c(_)&&(X.x=_.near,X.y=_.far),a.setBatchedAttribute(U,0,M),a.setBatchedAttribute(U,1,J),a.attributes.length>2&&(a.setBatchedAttribute(U,2,I),a.setBatchedAttribute(U,3,B),a.setBatchedAttribute(U,4,X))}};var mde=new p,hde=new p,pde=new p,Sft=new p;lR.prototype.writeForMorph=function(t,e){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let a=0;a0&&(r=l[l.length-1]+1);let d=this.polylines,m=d.length;for(let h=0;h0)R[0]=F;else continue}else R=u._segments.lengths;let V=R.length;if(V>0){let F=0;for(let U=0;Uk.SIXTY_FOUR_KILOBYTES&&(u._locatorBuckets.push({locator:a,count:F}),F=0,e.push(4),l=[],t.push(l),r=0,a.count=s,s=0,i=0,a=new stt(0,0,this),n[++o]=[a]),l.push(r,r+2,r+1),l.push(r+1,r+2,r+3),F+=6,s+=6,i+=6,r+=4}u._locatorBuckets.push({locator:a,count:F}),r+4>k.SIXTY_FOUR_KILOBYTES&&(e.push(0),l=[],t.push(l),r=0,a.count=s,i=0,s=0,a=new stt(0,0,this),n[++o]=[a])}u._clean()}return a.count=s,i};lR.prototype.getPolylineStartIndex=function(t){let e=this.polylines,n=0,i=e.length;for(let o=0;o0){t._boundingVolume2D=Ft.fromPoints(o,t._boundingVolume2D);let d=t._boundingVolume2D.center;t._boundingVolume2D.center=new p(d.z,d.x,d.y)}return RC.positions=o,RC.lengths=t._segments.lengths,RC};var gft;lR.prototype.writeUpdate=function(t,e,n,i){let o=this.mode,a=i.ellipsoid.maximumRadius*k.PI,s=e._actualLength;if(s){t+=this.getPolylineStartIndex(e);let l=gft,r=6*s*3;!c(l)||l.lengthr&&(l=new Float32Array(l.buffer,0,r));let d=this.getSegments(e,i),m=d.positions,h=d.lengths,u=0,R=0,V=0,F;s=m.length;for(let U=0;U0||er.x>0&&Kp.x<0)&&p.clone(er,Kp),(er.x<0&&zp.x>0||er.x>0&&zp.x<0)&&p.clone(er,zp));let g=A?2:0,C=S?2:4;for(let y=g;y{if(t.isDestroyed())return;t._positions=new Float64Array(l.positions);let r=t._billboardCollection,d=t._labelCollection,m=t._polylineCollection;n=t._positions;let h=t._batchIds,u=n.length/3;for(let R=0;R{t.isDestroyed()||(t._error=l)})}hF.prototype.createFeatures=function(t,e){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,a=this._batchIds,s=a.length;for(let l=0;l{if(t.isDestroyed())return;t._positions=void 0,t._counts=void 0,t._polygonMinimumHeights=void 0,t._polygonMaximumHeights=void 0;let V=new Float64Array(R.packedBuffer),F=V[0];Cde(t,V),t._indices=re.getSizeInBytes(F)===2?new Uint16Array(R.indices):new Uint32Array(R.indices),t._indexOffsets=new Uint32Array(R.indexOffsets),t._indexCounts=new Uint32Array(R.indexCounts),t._batchedPositions=new Float32Array(R.positions),t._vertexBatchIds=new Uint16Array(R.batchIds),Bde(t),t._ready=!0}).catch(R=>{t.isDestroyed()||(t._error=R)})}function Bde(t){c(t._primitive)||(t._primitive=new cA({batchTable:t._batchTable,positions:t._batchedPositions,batchIds:t._batchIds,vertexBatchIds:t._vertexBatchIds,indices:t._indices,indexOffsets:t._indexOffsets,indexCounts:t._indexCounts,batchedIndices:t._batchedIndices,boundingVolume:t._boundingVolume,boundingVolumes:t._boundingVolumes,center:t._center}),t._batchTable=void 0,t._batchIds=void 0,t._positions=void 0,t._counts=void 0,t._indices=void 0,t._indexCounts=void 0,t._indexOffsets=void 0,t._batchTableColors=void 0,t._packedBuffer=void 0,t._batchedPositions=void 0,t._transferrableBatchIds=void 0,t._vertexBatchIds=void 0,t._ellipsoid=void 0,t._minimumHeight=void 0,t._maximumHeight=void 0,t._polygonMinimumHeights=void 0,t._polygonMaximumHeights=void 0,t._center=void 0,t._rectangle=void 0,t._boundingVolume=void 0,t._boundingVolumes=void 0,t._batchedIndices=void 0)}f0.prototype.createFeatures=function(t,e){this._primitive.createFeatures(t,e)};f0.prototype.applyDebugSettings=function(t,e){this._primitive.applyDebugSettings(t,e)};f0.prototype.applyStyle=function(t,e){this._primitive.applyStyle(t,e)};f0.prototype.updateCommands=function(t,e){this._primitive.updateCommands(t,e)};f0.prototype.update=function(t){if(!this._ready){if(c(this._promise)||(this._promise=yde(this)),c(this._error)){let e=this._error;throw this._error=void 0,e}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(t)};f0.prototype.isDestroyed=function(){return!1};f0.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};var yX=f0;var dti=b(W(),1);var x$n=b(W(),1),BX=`in vec4 currentPosition; in vec4 previousPosition; in vec4 nextPosition; in vec2 expandAndWidth; @@ -8640,12 +8640,12 @@ void main() vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); gl_Position = czm_viewportOrthographic * positionWC; } -`;function SZ(t){this._positions=t.positions,this._widths=t.widths,this._counts=t.counts,this._batchIds=t.batchIds,this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._minimumHeight=t.minimumHeight,this._maximumHeight=t.maximumHeight,this._center=t.center,this._rectangle=t.rectangle,this._boundingVolume=t.boundingVolume,this._batchTable=t.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=t.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=v.clone(v.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(SZ.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function Qde(t){let e=t._rectangle,n=t._minimumHeight,i=t._maximumHeight,o=t._ellipsoid,a=t._center,s=2+Gt.packedLength+mt.packedLength+p.packedLength,l=new Float64Array(s),r=0;return l[r++]=n,l[r++]=i,Gt.pack(e,l,r),r+=Gt.packedLength,mt.pack(o,l,r),r+=mt.packedLength,p.pack(a,l,r),l}var kde=new $i("createVectorTilePolylines",5),RC={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function Yde(t,e){if(c(t._va))return;let n=t._positions,i=t._widths,o=t._counts,a=t._transferrableBatchIds,s=t._packedBuffer;c(s)||(n=t._positions=n.slice(),i=t._widths=i.slice(),o=t._counts=o.slice(),a=t._transferrableBatchIds=t._batchIds.slice(),s=t._packedBuffer=Qde(t));let l=[n.buffer,i.buffer,o.buffer,a.buffer,s.buffer],r={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:a.buffer,packedBuffer:s.buffer,keepDecodedPositions:t._keepDecodedPositions},d=kde.scheduleTask(r,l);if(c(d))return d.then(function(m){if(t.isDestroyed())return;t._keepDecodedPositions&&(t._decodedPositions=new Float64Array(m.decodedPositions),t._decodedPositionOffsets=new Uint32Array(m.decodedPositionOffsets)),t._currentPositions=new Float32Array(m.currentPositions),t._previousPositions=new Float32Array(m.previousPositions),t._nextPositions=new Float32Array(m.nextPositions),t._expandAndWidth=new Float32Array(m.expandAndWidth),t._vertexBatchIds=new Uint16Array(m.batchIds);let h=m.indexDatatype;t._indices=h===re.UNSIGNED_SHORT?new Uint16Array(m.indices):new Uint32Array(m.indices),xde(t,e),t._ready=!0}).catch(m=>{t.isDestroyed()||(t._error=m)})}function xde(t,e){if(!c(t._va)){let n=t._currentPositions,i=t._previousPositions,o=t._nextPositions,a=t._expandAndWidth,s=t._vertexBatchIds,l=t._indices,r=i.byteLength+n.byteLength+o.byteLength;r+=a.byteLength+s.byteLength+l.byteLength,t._trianglesLength=l.length/3,t._geometryByteLength=r;let d=we.createVertexBuffer({context:e,typedArray:i,usage:ce.STATIC_DRAW}),m=we.createVertexBuffer({context:e,typedArray:n,usage:ce.STATIC_DRAW}),h=we.createVertexBuffer({context:e,typedArray:o,usage:ce.STATIC_DRAW}),Z=we.createVertexBuffer({context:e,typedArray:a,usage:ce.STATIC_DRAW}),b=we.createVertexBuffer({context:e,typedArray:s,usage:ce.STATIC_DRAW}),u=we.createIndexBuffer({context:e,typedArray:l,usage:ce.STATIC_DRAW,indexDatatype:l.BYTES_PER_ELEMENT===2?re.UNSIGNED_SHORT:re.UNSIGNED_INT}),F=[{index:RC.previousPosition,vertexBuffer:d,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:RC.currentPosition,vertexBuffer:m,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:RC.nextPosition,vertexBuffer:h,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:RC.expandAndWidth,vertexBuffer:Z,componentDatatype:it.FLOAT,componentsPerAttribute:2},{index:RC.a_batchId,vertexBuffer:b,componentDatatype:it.UNSIGNED_SHORT,componentsPerAttribute:1}];t._va=new Ki({context:e,attributes:F,indexBuffer:u}),t._positions=void 0,t._widths=void 0,t._counts=void 0,t._ellipsoid=void 0,t._minimumHeight=void 0,t._maximumHeight=void 0,t._rectangle=void 0,t._transferrableBatchIds=void 0,t._packedBuffer=void 0,t._currentPositions=void 0,t._previousPositions=void 0,t._nextPositions=void 0,t._expandAndWidth=void 0,t._vertexBatchIds=void 0,t._indices=void 0}}var QX=new L,kft=new p;function Xde(t,e){c(t._uniformMap)||(t._uniformMap={u_modifiedModelView:function(){let n=e.uniformState.view;return L.clone(n,QX),L.multiplyByPoint(QX,t._center,kft),L.setTranslation(QX,kft,QX),QX},u_highlightColor:function(){return t._highlightColor}})}function Jde(t){if(c(t._rs))return;let e={enabled:!0,factor:-5,units:-5};t._rs=he.fromCache({blending:Pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:e})}var Lde=`uniform vec4 u_highlightColor; +`;function Tu(t){this._positions=t.positions,this._widths=t.widths,this._counts=t.counts,this._batchIds=t.batchIds,this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._minimumHeight=t.minimumHeight,this._maximumHeight=t.maximumHeight,this._center=t.center,this._rectangle=t.rectangle,this._boundingVolume=t.boundingVolume,this._batchTable=t.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=t.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=v.clone(v.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Tu.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function Qde(t){let e=t._rectangle,n=t._minimumHeight,i=t._maximumHeight,o=t._ellipsoid,a=t._center,s=2+Gt.packedLength+mt.packedLength+p.packedLength,l=new Float64Array(s),r=0;return l[r++]=n,l[r++]=i,Gt.pack(e,l,r),r+=Gt.packedLength,mt.pack(o,l,r),r+=mt.packedLength,p.pack(a,l,r),l}var kde=new $i("createVectorTilePolylines",5),bC={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function Yde(t,e){if(c(t._va))return;let n=t._positions,i=t._widths,o=t._counts,a=t._transferrableBatchIds,s=t._packedBuffer;c(s)||(n=t._positions=n.slice(),i=t._widths=i.slice(),o=t._counts=o.slice(),a=t._transferrableBatchIds=t._batchIds.slice(),s=t._packedBuffer=Qde(t));let l=[n.buffer,i.buffer,o.buffer,a.buffer,s.buffer],r={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:a.buffer,packedBuffer:s.buffer,keepDecodedPositions:t._keepDecodedPositions},d=kde.scheduleTask(r,l);if(c(d))return d.then(function(m){if(t.isDestroyed())return;t._keepDecodedPositions&&(t._decodedPositions=new Float64Array(m.decodedPositions),t._decodedPositionOffsets=new Uint32Array(m.decodedPositionOffsets)),t._currentPositions=new Float32Array(m.currentPositions),t._previousPositions=new Float32Array(m.previousPositions),t._nextPositions=new Float32Array(m.nextPositions),t._expandAndWidth=new Float32Array(m.expandAndWidth),t._vertexBatchIds=new Uint16Array(m.batchIds);let h=m.indexDatatype;t._indices=h===re.UNSIGNED_SHORT?new Uint16Array(m.indices):new Uint32Array(m.indices),xde(t,e),t._ready=!0}).catch(m=>{t.isDestroyed()||(t._error=m)})}function xde(t,e){if(!c(t._va)){let n=t._currentPositions,i=t._previousPositions,o=t._nextPositions,a=t._expandAndWidth,s=t._vertexBatchIds,l=t._indices,r=i.byteLength+n.byteLength+o.byteLength;r+=a.byteLength+s.byteLength+l.byteLength,t._trianglesLength=l.length/3,t._geometryByteLength=r;let d=we.createVertexBuffer({context:e,typedArray:i,usage:ce.STATIC_DRAW}),m=we.createVertexBuffer({context:e,typedArray:n,usage:ce.STATIC_DRAW}),h=we.createVertexBuffer({context:e,typedArray:o,usage:ce.STATIC_DRAW}),u=we.createVertexBuffer({context:e,typedArray:a,usage:ce.STATIC_DRAW}),R=we.createVertexBuffer({context:e,typedArray:s,usage:ce.STATIC_DRAW}),V=we.createIndexBuffer({context:e,typedArray:l,usage:ce.STATIC_DRAW,indexDatatype:l.BYTES_PER_ELEMENT===2?re.UNSIGNED_SHORT:re.UNSIGNED_INT}),F=[{index:bC.previousPosition,vertexBuffer:d,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:bC.currentPosition,vertexBuffer:m,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:bC.nextPosition,vertexBuffer:h,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:bC.expandAndWidth,vertexBuffer:u,componentDatatype:it.FLOAT,componentsPerAttribute:2},{index:bC.a_batchId,vertexBuffer:R,componentDatatype:it.UNSIGNED_SHORT,componentsPerAttribute:1}];t._va=new Ki({context:e,attributes:F,indexBuffer:V}),t._positions=void 0,t._widths=void 0,t._counts=void 0,t._ellipsoid=void 0,t._minimumHeight=void 0,t._maximumHeight=void 0,t._rectangle=void 0,t._transferrableBatchIds=void 0,t._packedBuffer=void 0,t._currentPositions=void 0,t._previousPositions=void 0,t._nextPositions=void 0,t._expandAndWidth=void 0,t._vertexBatchIds=void 0,t._indices=void 0}}var QX=new L,kft=new p;function Xde(t,e){c(t._uniformMap)||(t._uniformMap={u_modifiedModelView:function(){let n=e.uniformState.view;return L.clone(n,QX),L.multiplyByPoint(QX,t._center,kft),L.setTranslation(QX,kft,QX),QX},u_highlightColor:function(){return t._highlightColor}})}function Jde(t){if(c(t._rs))return;let e={enabled:!0,factor:-5,units:-5};t._rs=he.fromCache({blending:Pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:e})}var Lde=`uniform vec4 u_highlightColor; void main() { out_FragColor = u_highlightColor; } -`;function Mde(t,e){if(c(t._sp))return;let n=t._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(BX),o=n.getFragmentShaderCallback(!1,void 0,!1)(Lde),a=new Ve({defines:["VECTOR_TILE",In.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Uh,i]}),s=new Ve({defines:["VECTOR_TILE"],sources:[o]});t._sp=xn.fromCache({context:e,vertexShaderSource:a,fragmentShaderSource:s,attributeLocations:RC})}function _de(t,e){if(!c(t._command)){let n=t._batchTable.getUniformMapCallback()(t._uniformMap);t._command=new Ee({owner:t,vertexArray:t._va,renderState:t._rs,shaderProgram:t._sp,uniformMap:n,boundingVolume:t._boundingVolume,pass:Pt.TRANSLUCENT,pickId:t._batchTable.getPickId()})}e.commandList.push(t._command)}SZ.getPolylinePositions=function(t,e){let n=t._batchIds,i=t._decodedPositions,o=t._decodedPositionOffsets;if(!c(n)||!c(i))return;let a,s,l=n.length,r=0,d=0;for(a=0;a{t.isDestroyed()||(t._error=m)})}function jde(t,e){if(!c(t._va)){let n=t._startEllipsoidNormals,i=t._endEllipsoidNormals,o=t._startPositionAndHeights,a=t._endPositionAndHeights,s=t._startFaceNormalAndVertexCornerIds,l=t._endFaceNormalAndHalfWidths,r=t._vertexBatchIds,d=t._indices,m=n.byteLength+i.byteLength;m+=o.byteLength+a.byteLength,m+=s.byteLength+l.byteLength,m+=r.byteLength+d.byteLength,t._trianglesLength=d.length/3,t._geometryByteLength=m;let h=we.createVertexBuffer({context:e,typedArray:n,usage:ce.STATIC_DRAW}),Z=we.createVertexBuffer({context:e,typedArray:i,usage:ce.STATIC_DRAW}),b=we.createVertexBuffer({context:e,typedArray:o,usage:ce.STATIC_DRAW}),u=we.createVertexBuffer({context:e,typedArray:a,usage:ce.STATIC_DRAW}),F=we.createVertexBuffer({context:e,typedArray:s,usage:ce.STATIC_DRAW}),U=we.createVertexBuffer({context:e,typedArray:l,usage:ce.STATIC_DRAW}),G=we.createVertexBuffer({context:e,typedArray:r,usage:ce.STATIC_DRAW}),A=we.createIndexBuffer({context:e,typedArray:d,usage:ce.STATIC_DRAW,indexDatatype:d.BYTES_PER_ELEMENT===2?re.UNSIGNED_SHORT:re.UNSIGNED_INT}),T=[{index:pF.startEllipsoidNormal,vertexBuffer:h,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:pF.endEllipsoidNormal,vertexBuffer:Z,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:pF.startPositionAndHeight,vertexBuffer:b,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.endPositionAndHeight,vertexBuffer:u,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.startFaceNormalAndVertexCorner,vertexBuffer:F,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.endFaceNormalAndHalfWidth,vertexBuffer:U,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.a_batchId,vertexBuffer:G,componentDatatype:it.UNSIGNED_SHORT,componentsPerAttribute:1}];t._va=new Ki({context:e,attributes:T,indexBuffer:A}),t._positions=void 0,t._widths=void 0,t._counts=void 0,t._ellipsoid=void 0,t._minimumHeight=void 0,t._maximumHeight=void 0,t._rectangle=void 0,t._transferrableBatchIds=void 0,t._packedBuffer=void 0,t._startEllipsoidNormals=void 0,t._endEllipsoidNormals=void 0,t._startPositionAndHeights=void 0,t._startFaceNormalAndVertexCornerIds=void 0,t._endPositionAndHeights=void 0,t._endFaceNormalAndHalfWidths=void 0,t._vertexBatchIds=void 0,t._indices=void 0}}var xX=new L,Yft=new p;function qde(t,e){c(t._uniformMap)||(t._uniformMap={u_modifiedModelView:function(){let n=e.uniformState.view;return L.clone(n,xX),L.multiplyByPoint(xX,t._center,Yft),L.setTranslation(xX,Yft,xX),xX},u_highlightColor:function(){return t._highlightColor},u_minimumMaximumVectorHeights:function(){return t._minimumMaximumVectorHeights}})}function xft(t){return he.fromCache({cull:{enabled:!0,face:so.FRONT},blending:Pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:t,frontFunction:Li.EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.EQUAL,backOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},reference:gn.CESIUM_3D_TILE_MASK,mask:gn.CESIUM_3D_TILE_MASK}})}function $de(t){c(t._rs)||(t._rs=xft(!1),t._rs3DTiles=xft(!0))}function tce(t,e){if(c(t._sp))return;let n=t._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(kX),o=n.getFragmentShaderCallback(!1,void 0,!0)(YX),a=new Ve({defines:["VECTOR_TILE",In.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Uh,i]}),s=new Ve({defines:["VECTOR_TILE"],sources:[o]});t._sp=xn.fromCache({context:e,vertexShaderSource:a,fragmentShaderSource:s,attributeLocations:pF})}function ece(t,e){let n=t._command;if(!c(t._command)){let o=t._batchTable.getUniformMapCallback()(t._uniformMap);n=t._command=new Ee({owner:t,vertexArray:t._va,renderState:t._rs,shaderProgram:t._sp,uniformMap:o,boundingVolume:t._boundingVolume,pass:Pt.TERRAIN_CLASSIFICATION,pickId:t._batchTable.getPickId()});let a=Ee.shallowClone(n,n.derivedCommands.tileset);a.renderState=t._rs3DTiles,a.pass=Pt.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=a}let i=t._classificationType;(i===Ji.TERRAIN||i===Ji.BOTH)&&e.commandList.push(n),(i===Ji.CESIUM_3D_TILE||i===Ji.BOTH)&&e.commandList.push(n.derivedCommands.tileset)}F0.prototype.getPositions=function(t){return _A.getPolylinePositions(this,t)};F0.prototype.createFeatures=function(t,e){let n=this._batchIds,i=n.length;for(let o=0;o{t.isDestroyed()||(t._error=e)})}F0.prototype.update=function(t){let e=t.context;if(!this._ready){if(c(this._promise)||(this._promise=sce(this).then(zde(this,e))),c(this._error)){let i=this._error;throw this._error=void 0,i}return}qde(this,e),tce(this,e),$de(this);let n=t.passes;(n.render||n.pick)&&ece(this,t)};F0.prototype.isDestroyed=function(){return!1};F0.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),At(this)};var XX=F0;var eei=R(W(),1);var mtt=32767,lce=new gt,rce=new p;function dce(t,e,n,i,o){let a=t.length/3,s=t.subarray(0,a),l=t.subarray(a,2*a),r=t.subarray(2*a,3*a);Ni.zigZagDeltaDecode(s,l,r);let d=new Float64Array(t.length);for(let m=0;m0&&c(t.POLYGON_BATCH_IDS)){let Z=e.byteOffset+t.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(e.buffer,Z,s)}if(l>0&&c(t.POLYLINE_BATCH_IDS)){let Z=e.byteOffset+t.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(e.buffer,Z,l)}if(r>0&&c(t.POINT_BATCH_IDS)){let Z=e.byteOffset+t.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(e.buffer,Z,r)}let d=c(n)||c(i)||c(o),m=s>0&&!c(n)||l>0&&!c(i)||r>0&&!c(o);if(d&&m)throw new St("If one group of batch ids is defined, then all batch ids must be defined");if(!c(n)&&!c(i)&&!c(o)){let Z=0;if(!c(n)&&s>0)for(n=new Uint16Array(s),a=0;a0)for(i=new Uint16Array(l),a=0;a0)for(o=new Uint16Array(r),a=0;a0&&(G=ts(i,n,d),n+=d,m>0&&(A=new Uint8Array(e,n,m),A=new Uint8Array(A),n+=m));let T=f(F.POLYGONS_LENGTH,0),g=f(F.POLYLINES_LENGTH,0),C=f(F.POINTS_LENGTH,0),y=T+g+C,Y=new wR(t,y,G,A,cce(t));if(t._batchTable=Y,y===0)return;let Q=new FZ(F,U),J=Q.getGlobalProperty("REGION");if(!c(J))throw new St("Feature table global property: REGION must be defined");let M=Gt.unpack(J),V=J[4],E=J[5],I=t._tile.computedTransform,B=Q.getGlobalProperty("RTC_CENTER",it.FLOAT,3);c(B)?(B=p.unpack(B),L.multiplyByPoint(I,B,B)):(B=Gt.center(M),B.height=k.lerp(V,E,.5),B=mt.WGS84.cartographicToCartesian(B));let X=mce(F,U);if(n+=(4-n%4)%4,T>0){Q.featuresLength=T;let _=f(Q.getPropertyArray("POLYGON_COUNTS",it.UNSIGNED_INT,1),Q.getPropertyArray("POLYGON_COUNT",it.UNSIGNED_INT,1));if(!c(_))throw new St("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let P=f(Q.getPropertyArray("POLYGON_INDEX_COUNTS",it.UNSIGNED_INT,1),Q.getPropertyArray("POLYGON_INDEX_COUNT",it.UNSIGNED_INT,1));if(!c(P))throw new St("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let w=_.reduce(function(q,at){return q+at*2},0),z=P.reduce(function(q,at){return q+at},0),H=new Uint32Array(e,n,z);n+=h;let nt=new Uint16Array(e,n,w);n+=Z;let $,dt;c(F.POLYGON_MINIMUM_HEIGHTS)&&c(F.POLYGON_MAXIMUM_HEIGHTS)&&($=Q.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",it.FLOAT,1),dt=Q.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",it.FLOAT,1)),t._polygons=new yX({positions:nt,counts:_,indexCounts:P,indices:H,minimumHeight:V,maximumHeight:E,polygonMinimumHeights:$,polygonMaximumHeights:dt,center:B,rectangle:M,boundingVolume:t.tile.boundingVolume.boundingVolume,batchTable:Y,batchIds:X.polygons,modelMatrix:I})}if(g>0){Q.featuresLength=g;let _=f(Q.getPropertyArray("POLYLINE_COUNTS",it.UNSIGNED_INT,1),Q.getPropertyArray("POLYLINE_COUNT",it.UNSIGNED_INT,1));if(!c(_))throw new St("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let P=Q.getPropertyArray("POLYLINE_WIDTHS",it.UNSIGNED_SHORT,1);if(!c(P)){P=new Uint16Array(g);for(let dt=0;dt0){let _=new Uint16Array(e,n,C*3);n+=u,t._points=new NX({positions:_,batchIds:X.points,minimumHeight:V,maximumHeight:E,rectangle:M,batchTable:Y})}}function htt(t){let e=t.featuresLength;if(!c(t._features)&&e>0){let n=new Array(e);c(t._polygons)&&t._polygons.createFeatures(t,n),c(t._polylines)&&t._polylines.createFeatures(t,n),c(t._points)&&t._points.createFeatures(t,n),t._features=n}}EZ.prototype.hasProperty=function(t,e){return this._batchTable.hasProperty(t,e)};EZ.prototype.getFeature=function(t){return c(this._features)||htt(this),this._features[t]};EZ.prototype.applyDebugSettings=function(t,e){c(this._polygons)&&this._polygons.applyDebugSettings(t,e),c(this._polylines)&&this._polylines.applyDebugSettings(t,e),c(this._points)&&this._points.applyDebugSettings(t,e)};EZ.prototype.applyStyle=function(t){c(this._features)||htt(this),c(this._polygons)&&this._polygons.applyStyle(t,this._features),c(this._polylines)&&this._polylines.applyStyle(t,this._features),c(this._points)&&this._points.applyStyle(t,this._features)};EZ.prototype.update=function(t,e){let n=!0;c(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(e),n=n&&this._polygons.ready),c(this._polylines)&&(this._polylines.update(e),n=n&&this._polylines.ready),c(this._points)&&(this._points.update(e),n=n&&this._points.ready),c(this._batchTable)&&n&&(c(this._features)||htt(this),this._batchTable.update(t,e),this._ready=!0)};EZ.prototype.pick=function(t,e,n){};EZ.prototype.getPolylinePositions=function(t){let e=this._polylines;if(c(e))return e.getPositions(t)};EZ.prototype.isDestroyed=function(){return!1};EZ.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),At(this)};function Zce(t,e,n,i,o,a){let s=e.length,l=0;for(let r=0;r=0?i[a]:void 0}var HA=Rce;var pni=R(W(),1);var sni=R(W(),1);function A0(t){t=f(t,f.EMPTY_OBJECT);let e=t.tile,n=t.class;this._class=n,this._properties=e.properties,this._extensions=e.extensions,this._extras=e.extras}Object.defineProperties(A0.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});A0.prototype.hasProperty=function(t){return Yi.hasProperty(t,this._properties,this._class)};A0.prototype.hasPropertyBySemantic=function(t){return Yi.hasPropertyBySemantic(t,this._properties,this._class)};A0.prototype.getPropertyIds=function(t){return Yi.getPropertyIds(this._properties,this._class,t)};A0.prototype.getProperty=function(t){return Yi.getProperty(t,this._properties,this._class)};A0.prototype.setProperty=function(t,e){return Yi.setProperty(t,e,this._properties,this._class)};A0.prototype.getPropertyBySemantic=function(t){return Yi.getPropertyBySemantic(t,this._properties,this._class)};A0.prototype.setPropertyBySemantic=function(t,e){return Yi.setPropertyBySemantic(t,e,this._properties,this._class)};var _X=A0;function utt(t,e){let n=co(e,"3DTILES_metadata")?e.extensions["3DTILES_metadata"]:e.metadata;if(!c(n))return;if(!c(t.schema)){utt._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=f(t.schema.classes,f.EMPTY_OBJECT);if(c(n.class)){let o=i[n.class];return new _X({tile:n,class:o})}}utt._oneTimeWarning=Gn;var DX=utt;var Yni=R(W(),1);var fni=R(W(),1);function Wce(t){let e=new Uint8Array(t),n=mZ(e);if(n==="glTF"&&(n="glb"),nr.isBinaryFormat(n))return{contentType:n,binaryPayload:e};let i=fce(e);if(c(i.root))return{contentType:nr.EXTERNAL_TILESET,jsonPayload:i};if(c(i.asset))return{contentType:nr.GLTF,jsonPayload:i};if(c(i.tileAvailability))return{contentType:nr.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(c(i.type))return{contentType:nr.GEOJSON,jsonPayload:i};if(c(i.voxelTable))return{contentType:nr.VOXEL_JSON,jsonPayload:i};throw new St("Invalid tile content.")}function fce(t){let e;try{e=ts(t)}catch{throw new St("Invalid tile content.")}return e}var db=Wce;function qp(t,e,n,i){this._tileset=t,this._tile=e,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=c(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0;let a=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(a),this._requests=new Array(a),this._ready=!1,this._innerContentResources=new Array(a),this._serverKeys=new Array(a);for(let s=0;sAce(t,a,s)),o=await Promise.all(i);return t._contentsCreated=!0,t._contents=o.filter(c),o}async function Ace(t,e,n){if(c(e))try{let i=db(e);if(i.contentType===nr.EXTERNAL_TILESET)throw new St("External tilesets are disallowed inside multiple contents");t._disableSkipLevelOfDetail=t._disableSkipLevelOfDetail||i.contentType===nr.GEOMETRY||i.contentType===nr.VECTOR;let o=t._tileset,a=t._innerContentResources[n],s=t._tile,l,r=DA[i.contentType];c(i.binaryPayload)?l=await Promise.resolve(r(o,s,a,i.binaryPayload.buffer,0)):l=await Promise.resolve(r(o,s,a,i.jsonPayload));let d=t._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,Z=s.implicitCoordinates;l.metadata=h.getContentMetadataView(Z,n)}else s.hasImplicitContent||(l.metadata=OA(o,d));let m=HA(o,d);return c(m)&&(l.group=new sA({metadata:m})),l}catch(i){Lft(t,n,i)}}function Lft(t,e,n){let i=t._tileset,o=t._innerContentResources[e].url,a=c(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:a}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${a}`))}qp.prototype.cancelRequests=function(){for(let t=0;tl?b=k.TWO_PI-r+l:b=l-r;let F=Math.ceil(b/e)+1,U=Math.ceil(u/e)+1,G=b/(F-1),A=u/(U-1),T=Gt.northwest(t,a),g=Gt.center(t,gce);(n!==0||i!==0)&&(g.longitude=0;u--)ir.computePosition(e,n,!1,b,u,F),h[Z++]=F.x,h[Z++]=F.y,h[Z++]=F.z;for(u=0,b=i-2;b>0;b--)ir.computePosition(e,n,!1,b,u,F),h[Z++]=F.x,h[Z++]=F.y,h[Z++]=F.z;let U=h.length/3*2,G=re.createTypedArray(h.length/3,U),A=0;for(let g=0;g0){tu.longitude=(e.west+e.east)*.5,tu.latitude=d;let F=n.cartographicToCartesian(tu,UC.origin);p.clone(r,UC.direction);let U=Kn.fromPointNormal(t.southwestCornerCartesian,t.westNormal,Kft);no.rayPlane(UC,U,t.southwestCornerCartesian),m=n.geodeticSurfaceNormal(F,VP)}else m=n.geodeticSurfaceNormalCartographic(Gt.southeast(e),VP);let h=p.cross(m,l,vft);p.normalize(h,t.southNormal);let Z=e.north,b;if(Z<0){tu.longitude=(e.west+e.east)*.5,tu.latitude=Z;let F=n.cartographicToCartesian(tu,UC.origin);p.negate(r,UC.direction);let U=Kn.fromPointNormal(t.northeastCornerCartesian,t.eastNormal,Kft);no.rayPlane(UC,U,t.northeastCornerCartesian),b=n.geodeticSurfaceNormal(F,VP)}else b=n.geodeticSurfaceNormalCartographic(Gt.northwest(e),VP);let u=p.cross(l,b,vft);p.normalize(u,t.northNormal)}var Jce=new p,Lce=new p,Mce=new p(0,-1,0),_ce=new p(0,0,-1),zft=new p;function Dce(t,e){let n=e.camera,i=n.positionWC,o=n.positionCartographic,a=0;if(!Gt.contains(t.rectangle,o)){let d=t.southwestCornerCartesian,m=t.northeastCornerCartesian,h=t.westNormal,Z=t.southNormal,b=t.eastNormal,u=t.northNormal;e.mode!==ut.SCENE3D&&(d=e.mapProjection.project(Gt.southwest(t.rectangle),Jce),d.z=d.y,d.y=d.x,d.x=0,m=e.mapProjection.project(Gt.northeast(t.rectangle),Lce),m.z=m.y,m.y=m.x,m.x=0,h=Mce,b=p.UNIT_Y,Z=_ce,u=p.UNIT_Z);let F=p.subtract(i,d,zft),U=p.dot(F,h),G=p.dot(F,Z),A=p.subtract(i,m,zft),T=p.dot(A,b),g=p.dot(A,u);U>0?a+=U*U:T>0&&(a+=T*T),G>0?a+=G*G:g>0&&(a+=g*g)}let s,l,r;if(e.mode===ut.SCENE3D?(s=o.height,l=t.minimumHeight,r=t.maximumHeight):(s=i.x,l=0,r=0),s>r){let d=s-r;a+=d*d}else if(s0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):Kn.getPointDistance(this._boundingPlanes[1],e)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let a,s;for(a=0;a<4;a++)s=2+a,Kn.getPointDistance(this._boundingPlanes[s],e)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let l,r;if(n.length===1)return r=this._boundingPlanes[n[0]],l=gtt(Kn.projectPointOntoPlane(r,e,Stt),i[0],r,o),p.distance(l,e);if(n.length===2){if(n[0]===0){let Z=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return l=iFt(e,Z[0],Z[1]),p.distance(l,e)}let m=Number.MAX_VALUE,h;for(a=0;a<2;a++)r=this._boundingPlanes[n[a]],l=gtt(Kn.projectPointOntoPlane(r,e,Stt),i[a],r,this._edgeNormals[n[a]]),h=p.distanceSquared(l,e),h3)return l=gtt(Kn.projectPointOntoPlane(this._boundingPlanes[1],e,Stt),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),p.distance(l,e);let d=n[1]===2&&n[2]===5?0:1;return n[0]===0?p.distance(e,this._vertices[(n[1]-2+d)%4]):p.distance(e,this._vertices[4+(n[1]-2+d)%4])};var sme=new p,lme=new p;function iFt(t,e,n){let i=p.subtract(n,e,sme),o=p.subtract(t,e,lme),a=p.dot(i,o);if(a<=0)return e;let s=p.dot(i,i);return a>=s?n:(a=a/s,new p((1-a)*e.x+a*n.x,(1-a)*e.y+a*n.y,(1-a)*e.z+a*n.z))}var rme=new Kn(p.UNIT_X,0);function gtt(t,e,n,i){let o=Number.MAX_VALUE,a,s,l;for(let r=0;r0&&(u=!0,h+=d),s1||co(n,"3DTILES_multiple_contents"),s=o&&!a?n.contents[0]:n.content;this._contentHeader=s,this.transform=c(n.transform)?L.unpack(n.transform):L.clone(L.IDENTITY);let l=c(i)?i.computedTransform:t.modelMatrix,r=L.multiply(l,this.transform,new L),d=c(i)?i._initialTransform:L.IDENTITY;this._initialTransform=L.multiply(d,this.transform,new L),this.computedTransform=r,this.metadata=DX(t,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,r),this._boundingVolume2D=void 0;let m;c(s)&&c(s.boundingVolume)&&(m=this.createBoundingVolume(s.boundingVolume,r)),this._contentBoundingVolume=m,this._contentBoundingVolume2D=void 0;let h;c(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,r)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,c(this._geometricError)||(this._geometricError=c(i)?i._geometricError:t._geometricError,fs._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let Z;c(n.refine)?((n.refine==="replace"||n.refine==="add")&&fs._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),Z=n.refine.toUpperCase()==="REPLACE"?ss.REPLACE:ss.ADD):c(i)?Z=i.refine:Z=ss.REPLACE,this.refine=Z,this.children=[],this.parent=i;let b,u=!1,F,U,G;if(e=te.createIfNeeded(e),a)F=rs.UNLOADED,U=e.clone();else if(c(s)){let C=s.uri;c(s.url)&&(fs._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),C=s.url),C===""?(fs._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),b=new WC(t,this),u=!0,F=rs.READY):(F=rs.UNLOADED,U=e.getDerivedResource({url:C}),G=xd.getServerKey(U.getUrlComponent()))}else b=new WC(t,this),u=!0,F=rs.READY;this._content=b,this._contentResource=U,this._contentState=F,this._expiredContent=void 0,this._serverKey=G,this.hasEmptyContent=u,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=a,this.cacheNode=void 0;let A=n.expire,T,g;c(A)&&(T=A.duration,c(A.date)&&(g=rt.fromIso8601(A.date))),this.expireDuration=T,this.expireDate=g,this.lastStyleTime=0,this._optimChildrenWithinParent=jp.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=v.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new rt,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}fs._deprecationWarning=Zr;Object.defineProperties(fs.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return f(this._contentBoundingVolume,this._boundingVolume)}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return c(this._color)||(this._color=new v),v.clone(this._color)},set:function(t){this._color=v.clone(t,this._color),this._colorDirty=!0}},hasRenderableContent:{get:function(){return!this.hasEmptyContent&&!this.hasTilesetContent&&!this.hasImplicitContent}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||c(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===rs.READY}},contentUnloaded:{get:function(){return this._contentState===rs.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===rs.EXPIRED}},contentFailed:{get:function(){return this._contentState===rs.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var ZF=new p;function Zme(t,e){let{tileset:n,boundingSphere:i}=t,{radius:o,center:a}=i,{camera:s}=e,l=p.multiplyByScalar(s.directionWC,t._centerZDepth,ZF),r=p.add(s.positionWC,l,ZF),d=p.subtract(r,a,ZF);if(p.magnitude(d)>o){let g=p.normalize(d,ZF),C=p.multiplyByScalar(g,o,ZF),y=p.add(a,C,ZF),Y=p.subtract(y,s.positionWC,ZF),Q=p.normalize(Y,ZF);t._foveatedFactor=1-Math.abs(p.dot(s.directionWC,Q))}else t._foveatedFactor=0;let Z=t.refine===ss.REPLACE,b=n.isSkippingLevelOfDetail;if(Z&&!b||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||t._priorityProgressiveResolution&&Z&&b||n._pass===ns.PRELOAD_FLIGHT||n._pass===ns.PRELOAD)return!1;let u=1-Math.cos(s.frustum.fov*.5),F=n.foveatedConeSize*u;if(t._foveatedFactor<=F)return!1;let U=u-F,G=k.clamp((t._foveatedFactor-F)/U,0,1),A=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,G),T=t._screenSpaceError===0&&c(t.parent)?t.parent._screenSpaceError*.5:t._screenSpaceError;return n.memoryAdjustedScreenSpaceError-A<=T}var cFt=new rt;fs.prototype.getScreenSpaceError=function(t,e,n){let i=this._tileset,o=f(n,1),a=c(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=e?a:this.geometricError;if(s===0)return 0;let{camera:l,context:r}=t,d=l.frustum,m=r.drawingBufferWidth,h=r.drawingBufferHeight*o,Z;if(t.mode===ut.SCENE2D||d instanceof wn){let b=d.offCenterFrustum;c(b)&&(d=b);let u=Math.max(d.top-d.bottom,d.right-d.left)/Math.max(m,h);Z=s/u}else{let b=Math.max(this._distanceToCamera,k.EPSILON7),u=d.sseDenominator;if(Z=s*h/(b*u),i.dynamicScreenSpaceError){let F=i._dynamicScreenSpaceErrorComputedDensity,U=i.dynamicScreenSpaceErrorFactor,G=k.fog(b,F)*U;Z-=G}}return Z/=t.pixelRatio,Z};function Vme(t,e){if(t.progressiveResolutionHeightFraction<=0||t.progressiveResolutionHeightFraction>.5)return!1;let n=t.memoryAdjustedScreenSpaceError,i=e._screenSpaceErrorProgressiveResolution>n;e._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=e.parent,a=e._screenSpaceErrorProgressiveResolution<=n,s=c(o)&&o._screenSpaceErrorProgressiveResolution>n;return a&&s&&(e._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function bme(t,e){let n=e.parent,o=c(n)&&(!t.isSkippingLevelOfDetail||e._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:e._screenSpaceError;return t.root._screenSpaceError-o}fs.prototype.updateVisibility=function(t){let{parent:e,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=c(e)?e.computedTransform:n.modelMatrix,o=c(e)?e._visibilityPlaneMask:Jl.MASK_INDETERMINATE;this.updateTransform(i,t),this._distanceToCamera=this.distanceToTile(t),this._centerZDepth=this.distanceToTileCenter(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(t,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(t,o),this._visible=this._visibilityPlaneMask!==Jl.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._priorityReverseScreenSpaceError=bme(n,this),this._priorityProgressiveResolution=Vme(n,this),this.priorityDeferred=Zme(this,t),this._updatedVisibilityFrame=n._updatedVisibilityFrame};fs.prototype.updateExpiration=function(){if(c(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let t=rt.now(cFt);rt.lessThan(this.expireDate,t)&&(this._contentState=rs.EXPIRED,this._expiredContent=this._content)}};function Rme(t){if(!c(t.expireDuration))return;let e=rt.now(cFt);rt.addSeconds(e,t.expireDuration,e),c(t.expireDate)?rt.lessThan(t.expireDate,e)&&rt.clone(e,t.expireDate):t.expireDate=rt.clone(e)}function Wme(t){return function(){return t._priority}}fs.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?fme(this):Ume(this)};function fme(t){let e=t._content,n=t._tileset;if(!c(e)){let o=co(t._header,"3DTILES_multiple_contents")?t._header.extensions["3DTILES_multiple_contents"]:t._header;e=new OX(n,t,t._contentResource.clone(),o),t._content=e}let i=e.requestInnerContents();if(c(i))return t._contentState=rs.LOADING,i.then(o=>{if(!t.isDestroyed()&&c(o))return t._contentState=rs.PROCESSING,e}).catch(o=>{if(!t.isDestroyed())throw t._contentState=rs.FAILED,o})}async function Fme(t,e,n,i,o){let a=t._contentState;t._contentState=rs.LOADING,++e.statistics.numberOfPendingRequests;let s;try{s=await o}catch(l){if(--e.statistics.numberOfPendingRequests,t.isDestroyed())return;if(n.cancelled||n.state===qi.CANCELLED){t._contentState=a,++e.statistics.numberOfAttemptedRequests;return}throw t._contentState=rs.FAILED,l}if(t.isDestroyed()){--e.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===qi.CANCELLED){t._contentState=a,--e.statistics.numberOfPendingRequests,++e.statistics.numberOfAttemptedRequests;return}try{let l=await Gme(t,s);return--e.statistics.numberOfPendingRequests,t.isDestroyed()?void 0:(i&&(t.expireDate=void 0),t._content=l,t._contentState=rs.PROCESSING,l)}catch(l){if(--e.statistics.numberOfPendingRequests,t.isDestroyed())return;throw t._contentState=rs.FAILED,l}}function Ume(t){let e=t._contentResource.clone(),n=t.contentExpired;n&&e.setQueryParameters({expired:t.expireDate.toString()});let i=new Zs({throttle:!0,throttleByServer:!0,type:Xl.TILES3D,priorityFunction:Wme(t),serverKey:t._serverKey});t._request=i,e.request=i;let o=t._tileset,a=e.fetchArrayBuffer();if(!c(a)){++o.statistics.numberOfAttemptedRequests;return}return Fme(t,o,i,n,a)}async function Gme(t,e){let n=db(e),i=t._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===nr.GEOMETRY||n.contentType===nr.VECTOR,(n.contentType===nr.IMPLICIT_SUBTREE||n.contentType===nr.IMPLICIT_SUBTREE_JSON)&&(t.hasImplicitContent=!0),n.contentType===nr.EXTERNAL_TILESET&&(t.hasTilesetContent=!0);let o,a=DA[n.contentType];if(t.isDestroyed())return;c(n.binaryPayload)?o=await Promise.resolve(a(i,t,t._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(a(i,t,t._contentResource,n.jsonPayload));let s=t._contentHeader;if(t.hasImplicitContentMetadata){let r=t.implicitSubtree,d=t.implicitCoordinates;o.metadata=r.getContentMetadataView(d,0)}else t.hasImplicitContent||(o.metadata=OA(i,s));let l=HA(i,s);return c(l)&&(o.group=new sA({metadata:l})),o}fs.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};fs.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=rs.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var mFt=new Ft;function Itt(t,e){if(e.mode!==ut.SCENE3D&&!c(t._boundingVolume2D)){let n=t._boundingVolume.boundingSphere,i=Ft.projectTo2D(n,e.mapProjection,mFt);t._boundingVolume2D=new E0(i.center,i.radius)}return e.mode!==ut.SCENE3D?t._boundingVolume2D:t._boundingVolume}function Ame(t,e){if(e.mode!==ut.SCENE3D&&!c(t._contentBoundingVolume2D)){let n=t._contentBoundingVolume.boundingSphere,i=Ft.projectTo2D(n,e.mapProjection,mFt);t._contentBoundingVolume2D=new E0(i.center,i.radius)}return e.mode!==ut.SCENE3D?t._contentBoundingVolume2D:t._contentBoundingVolume}fs.prototype.visibility=function(t,e){let n=t.cullingVolume,i=Itt(this,t),o=this._tileset,a=o.clippingPlanes;if(c(a)&&a.enabled){let l=a.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=l!==yn.INSIDE,l===yn.OUTSIDE)return Jl.MASK_OUTSIDE}let s=o.clippingPolygons;if(c(s)&&s.enabled){let l=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=l!==yn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,e)};fs.prototype.contentVisibility=function(t){if(!c(this._contentBoundingVolume))return yn.INSIDE;if(this._visibilityPlaneMask===Jl.MASK_INSIDE)return yn.INSIDE;let e=t.cullingVolume,n=Ame(this,t),i=this._tileset,o=i.clippingPlanes;if(c(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==yn.INSIDE,s===yn.OUTSIDE)return yn.OUTSIDE}let a=i.clippingPolygons;if(c(a)&&a.enabled){let s=a.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==yn.OUTSIDE,s===yn.INSIDE)return yn.OUTSIDE}return e.computeVisibility(n)};fs.prototype.distanceToTile=function(t){return Itt(this,t).distanceToCamera(t)};var Tme=new p;fs.prototype.distanceToTileCenter=function(t){let n=Itt(this,t).boundingVolume,i=p.subtract(n.center,t.camera.positionWC,Tme);return p.dot(t.camera.directionWC,i)};fs.prototype.insideViewerRequestVolume=function(t){let e=this._viewerRequestVolume;return!c(e)||e.distanceToCamera(t)===0};var hFt=new ot,pFt=new p,Sme=new ot,Ntt=new p,uFt=new Gt,ZFt=new ci,Ctt=new L;function gme(t,e,n){let i=p.fromElements(t[0],t[1],t[2],Ntt),o=ot.fromArray(t,3,Sme);i=L.multiplyByPoint(e,i,i);let a=L.getMatrix3(e,hFt);return o=ot.multiply(a,o,o),c(n)?(n.update(i,o),n):new kh(i,o)}function Eme(t,e,n,i){let o=Gt.unpack(t,0,uFt),a=t[4],s=t[5],l=ci.fromRectangle(o,a,s,mt.WGS84,ZFt),r=l.center,d=l.halfAxes;e=L.multiplyTransformation(e,L.inverseTransformation(n,Ctt),Ctt),r=L.multiplyByPoint(e,r,r);let m=L.getMatrix3(e,hFt);return d=ot.multiply(m,d,d),c(i)&&i instanceof kh?(i.update(r,d),i):new kh(r,d)}function Cme(t,e,n,i){if(!L.equalsEpsilon(e,n,k.EPSILON8))return Eme(t,e,n,i);let o=Gt.unpack(t,0,uFt);return c(i)?(i.rectangle=Gt.clone(o,i.rectangle),i.minimumHeight=t[4],i.maximumHeight=t[5],i.computeBoundingVolumes(mt.WGS84),i):new eu({rectangle:o,minimumHeight:t[4],maximumHeight:t[5]})}function Ime(t,e,n){let i=p.fromElements(t[0],t[1],t[2],Ntt),o=t[3];i=L.multiplyByPoint(e,i,i);let a=L.getScale(e,pFt),s=p.maximumComponent(a);return o*=s,c(n)?(n.update(i,o),n):new E0(i,o)}fs.prototype.createBoundingVolume=function(t,e,n){let i=this.metadata,o;if(c(i)&&(o=AA.parseBoundingVolumeSemantic("TILE",i)),c(o)&&(t=o),!c(t))throw new St("boundingVolume must be defined");if(co(t,"3DTILES_bounding_volume_S2"))return new PX(t.extensions["3DTILES_bounding_volume_S2"]);let{box:a,region:s,sphere:l}=t;if(c(a)){let r=gme(a,e,n);return this._verticalExaggeration!==1&&lFt(r,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),r}if(c(s)){let r=Cme(s,e,this._initialTransform,n);return this._verticalExaggeration===1||(r instanceof kh?lFt(r,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(r.minimumHeight=Ps.getHeight(r.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),r.maximumHeight=Ps.getHeight(r.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),r.computeBoundingVolumes(mt.WGS84))),r}if(c(l)){let r=Ime(l,e,n);if(this._verticalExaggeration!==1){let d=Ps.getPosition(r.center,mt.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,Ntt),m=r.radius*this._verticalExaggeration;r.update(d,m)}return r}throw new St("boundingVolume must contain a sphere, region, or box")};var Nme=p.unpackArray(new Array(8*3).fill(0));function lFt(t,e,n){let i=t.boundingVolume.computeCorners(Nme).map(a=>Ps.getPosition(a,mt.WGS84,e,n,a)),o=ci.fromPoints(i,ZFt);t.update(o.center,o.halfAxes)}fs.prototype.updateTransform=function(t,e){t=f(t,L.IDENTITY);let n=L.multiplyTransformation(t,this.transform,Ctt),i=!L.equals(n,this.computedTransform),o=c(e)&&(this._verticalExaggeration!==e.verticalExaggeration||this._verticalExaggerationRelativeHeight!==e.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&L.clone(n,this.computedTransform),o&&(this._verticalExaggeration=e.verticalExaggeration,this._verticalExaggerationRelativeHeight=e.verticalExaggerationRelativeHeight);let a=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(a.boundingVolume,this.computedTransform,this._boundingVolume),c(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),c(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(a.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};fs.prototype.updateGeometricErrorScale=function(){let t=L.getScale(this.computedTransform,pFt),e=p.maximumComponent(t);if(this.geometricError=this._geometricError*e,!c(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*e}};function yme(t,e,n,i){if(!i.isRender)return;let o=c(t._contentHeader)&&c(t._contentHeader.boundingVolume),a=e.debugShowBoundingVolume||e.debugShowContentBoundingVolume&&!o;if(a){let r;t._finalResolution?t.hasRenderableContent?r=v.WHITE:r=v.DARKGRAY:r=v.YELLOW,c(t._debugBoundingVolume)||(t._debugBoundingVolume=t._boundingVolume.createDebugVolume(r)),t._debugBoundingVolume.update(n);let d=t._debugBoundingVolume.getGeometryInstanceAttributes("outline");d.color=En.toValue(r,d.color)}else!a&&c(t._debugBoundingVolume)&&(t._debugBoundingVolume=t._debugBoundingVolume.destroy());e.debugShowContentBoundingVolume&&o?(c(t._debugContentBoundingVolume)||(t._debugContentBoundingVolume=t._contentBoundingVolume.createDebugVolume(v.BLUE)),t._debugContentBoundingVolume.update(n)):!e.debugShowContentBoundingVolume&&c(t._debugContentBoundingVolume)&&(t._debugContentBoundingVolume=t._debugContentBoundingVolume.destroy()),e.debugShowViewerRequestVolume&&c(t._viewerRequestVolume)?(c(t._debugViewerRequestVolume)||(t._debugViewerRequestVolume=t._viewerRequestVolume.createDebugVolume(v.YELLOW)),t._debugViewerRequestVolume.update(n)):!e.debugShowViewerRequestVolume&&c(t._debugViewerRequestVolume)&&(t._debugViewerRequestVolume=t._debugViewerRequestVolume.destroy());let s=e.debugColorizeTiles&&!t._debugColorizeTiles||c(e._heatmap.tilePropertyName),l=!e.debugColorizeTiles&&t._debugColorizeTiles;s?(e._heatmap.colorize(t,n),t._debugColorizeTiles=!0,t.color=t._debugColor):l&&(t._debugColorizeTiles=!1,t.color=v.WHITE),t._colorDirty&&(t._colorDirty=!1,t._content.applyDebugSettings(!0,t._color)),l&&e.makeStyleDirty()}function Bme(t,e,n){let i=t._expiredContent;if(!t.hasMultipleContents&&c(i)){if(!t.contentReady){try{i.update(e,n)}catch{}return}t._expiredContent.destroy(),t._expiredContent=void 0}if(c(t.content))try{t.content.update(e,n)}catch(o){throw t._contentState=rs.FAILED,o}}function Qme(t,e){let n=e.clippingPlanes,i=0;c(n)&&t._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==t._clippingPlanesState&&(t._clippingPlanesState=i,t.clippingPlanesDirty=!0)}function kme(t,e){let n=e.clippingPolygons,i=0;c(n)&&t._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==t._clippingPolygonsState&&(t._clippingPolygonsState=i,t.clippingPolygonsDirty=!0)}fs.prototype.update=function(t,e,n){let{commandList:i}=e,o=i.length;Qme(this,t),kme(this,t),yme(this,t,e,n),Bme(this,t,e);let a=i.length;this._commandsLength=a-o;for(let s=o;st.cacheBytes||n);){let s=a.item;a=a.next,this.unloadTile(t,s,e)}};tT.prototype.trim=function(){this._trimTiles=!0};var qX=tT;var xsi=R(W(),1);function FP(t){this.tilePropertyName=t,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function Btt(t,e){let n;return e==="_loadTimestamp"?n=rt.toDate(t).getTime():n=t,n}FP.prototype.setReferenceMinimumMaximum=function(t,e,n){this._referenceMinimum[n]=Btt(t,n),this._referenceMaximum[n]=Btt(e,n)};function Xme(t,e){let n=t.tilePropertyName;if(c(n)){let i=Btt(e[n],n);return c(i)?(t._maximum=Math.max(i,t._maximum),t._minimum=Math.min(i,t._minimum),i):(t.tilePropertyName=void 0,i)}}var ytt=[new v(.1,.1,.1,1),new v(.153,.278,.878,1),new v(.827,.231,.49,1),new v(.827,.188,.22,1),new v(1,.592,.259,1),new v(1,.843,0,1)];FP.prototype.colorize=function(t,e){let n=this.tilePropertyName;if(!c(n)||!t.contentAvailable||t._selectedFrame!==e.frameNumber)return;let i=Xme(this,t),o=this._previousMinimum,a=this._previousMaximum;if(o===Number.MAX_VALUE||a===-Number.MAX_VALUE)return;let s=a-o+k.EPSILON7,r=k.clamp(i-o,0,s)/s,d=ytt.length-1,m=r*d,h=Math.floor(m),Z=Math.ceil(m),b=m-h,u=ytt[h],F=ytt[Z],U=v.clone(v.WHITE);U.red=k.lerp(u.red,F.red,b),U.green=k.lerp(u.green,F.green,b),U.blue=k.lerp(u.blue,F.blue,b),t._debugColor=U};FP.prototype.resetMinimumMaximum=function(){let t=this.tilePropertyName;if(c(t)){let e=this._referenceMinimum[t],n=this._referenceMaximum[t],i=c(e)&&c(n);this._previousMinimum=i?e:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var $X=FP;var Lsi=R(W(),1);function IC(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.batchTableByteLength=0}IC.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};function UP(t,e,n,i){let o=e.innerContents,a=e.pointsLength,s=e.trianglesLength,l=e.featuresLength,r=e.geometryByteLength,d=e.texturesByteLength,m=e.batchTableByteLength;if(i?(t.numberOfFeaturesLoaded+=n?-l:l,t.numberOfPointsLoaded+=n?-a:a,t.geometryByteLength+=n?-r:r,t.texturesByteLength+=n?-d:d,t.batchTableByteLength+=n?-m:m):(t.numberOfFeaturesSelected+=n?-l:l,t.numberOfPointsSelected+=n?-a:a,t.numberOfTrianglesSelected+=n?-s:s),c(o)){let h=o.length;for(let Z=0;Z>1)&858993459,t=(t^t>>2)&252645135,t=(t^t>>4)&16711935,t=(t^t>>8)&65535,t}function ktt(t){return t&=153391689,t=(t^t>>2)&51130563,t=(t^t>>4)&50393103,t=(t^t>>8)&4278190335,t=(t^t>>16)&1023,t}nJ.encode2D=function(t,e){return(WFt(t)|WFt(e)<<1)>>>0};nJ.decode2D=function(t,e){return c(e)||(e=new Array(2)),e[0]=fFt(t),e[1]=fFt(t>>1),e};nJ.encode3D=function(t,e,n){return Qtt(t)|Qtt(e)<<1|Qtt(n)<<2};nJ.decode3D=function(t,e){return c(e)||(e=new Array(3)),e[0]=ktt(t),e[1]=ktt(t>>1),e[2]=ktt(t>>2),e};var VF=nJ;function ds(t){this.subdivisionScheme=t.subdivisionScheme,this.subtreeLevels=t.subtreeLevels,this.level=t.level,this.x=t.x,this.y=t.y,this.z=void 0,t.subdivisionScheme===Al.OCTREE&&(this.z=t.z)}Object.defineProperties(ds.prototype,{childIndex:{get:function(){let t=0;return t|=this.x&1,t|=(this.y&1)<<1,this.subdivisionScheme===Al.OCTREE&&(t|=(this.z&1)<<2),t}},mortonIndex:{get:function(){return this.subdivisionScheme===Al.OCTREE?VF.encode3D(this.x,this.y,this.z):VF.encode2D(this.x,this.y)}},tileIndex:{get:function(){let t=this.subdivisionScheme===Al.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,e=this.mortonIndex;return t+e}}});ds.prototype.getDescendantCoordinates=function(t){let e=this.level+t.level,n=(this.x<>e,i=t.y>>e,o=this.x===n,a=this.y===i;if(this.subdivisionScheme===Al.OCTREE){let s=t.z>>e,l=this.z===s;return o&&a&&l}return o&&a};ds.prototype.isEqual=function(t){return this.subdivisionScheme===t.subdivisionScheme&&this.subtreeLevels===t.subtreeLevels&&this.level===t.level&&this.x===t.x&&this.y===t.y&&(this.subdivisionScheme===Al.OCTREE?this.z===t.z:!0)};ds.prototype.isImplicitTilesetRoot=function(){return this.level===0};ds.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};ds.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};ds.prototype.getTemplateValues=function(){let t={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Al.OCTREE&&(t.z=this.z),t};var FFt=[0,0,0];ds.fromMortonIndex=function(t,e,n,i){let o;return t===Al.OCTREE?(o=VF.decode3D(i,FFt),new ds({subdivisionScheme:t,subtreeLevels:e,level:n,x:o[0],y:o[1],z:o[2]})):(o=VF.decode2D(i,FFt),new ds({subdivisionScheme:t,subtreeLevels:e,level:n,x:o[0],y:o[1]}))};ds.fromTileIndex=function(t,e,n){let i,o,a;return t===Al.OCTREE?(i=Math.floor(k.log2(7*n+1)/3),o=((1<<3*i)-1)/7,a=n-o):(i=Math.floor(k.log2(3*n+1)/2),o=((1<<2*i)-1)/3,a=n-o),ds.fromMortonIndex(t,e,i,a)};var nT=ds;var Rli=R(W(),1);var hli=R(W(),1);function y0(){}y0.selectTiles=function(t,e){Ut.throwInstantiationError()};y0.sortChildrenByDistanceToCamera=function(t,e){return e._distanceToCamera===0&&t._distanceToCamera===0?e._centerZDepth-t._centerZDepth:e._distanceToCamera-t._distanceToCamera};y0.canTraverse=function(t){return t.children.length===0?!1:t.hasTilesetContent||t.hasImplicitContent?!t.contentExpired:t._screenSpaceError>t.tileset.memoryAdjustedScreenSpaceError};y0.selectTile=function(t,e){if(t.contentVisibility(e)===yn.OUTSIDE)return;t._wasSelectedLastFrame=!0;let{content:n,tileset:i}=t;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,t.lastStyleTime=0,i._selectedTilesToStyle.push(t)):t._selectedFrame0;if((t.hasTilesetContent||t.hasImplicitContent)&&n){let a=t.children[0];UFt(a,e),t._visible=a._visible;return}if(Dme(t,e)){t._visible=!1;return}let i=t.refine===ss.REPLACE,o=t._optimChildrenWithinParent===jp.USE_OPTIMIZATION;if(i&&o&&n&&!Ome(t,e)){++t.tileset._statistics.numberOfTilesCulledWithChildrenUnion,t._visible=!1;return}}function Dme(t,e){let{parent:n,tileset:i}=t;return!c(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==ss.ADD?!1:t.getScreenSpaceError(e,!0)<=i.memoryAdjustedScreenSpaceError}function Ome(t,e){let n=!1,i=t.children;for(let o=0;o0;){iJ.stackMaximumLength=Math.max(iJ.stackMaximumLength,s.length);let l=s.pop(),r=l.refine===ss.ADD,d=l.refine===ss.REPLACE,m=wme(l);m&&Pme(l,s,e),(r||d&&!m)&&(vme(t,l),o(l,e),Kme(l,e),l.hasRenderableContent&&!l.contentAvailable&&(n=!1)),a(l,e)}return iJ.stack.trim(iJ.stackMaximumLength),n};function wme(t){return t.children.length===0?!1:t.hasTilesetContent||t.hasImplicitContent?!t.contentExpired:(t.hasEmptyContent,!0)}function Pme(t,e,n){let{children:i}=t;for(let o=0;o0;){aJ.stackMaximumLength=Math.max(aJ.stackMaximumLength,l.length);let r=l.pop(),d=r.parent,m=!c(d)||d._refines;r._refines=i(r)?zme(r,l,e)&&m:!1;let h=!r._refines&&m;r.hasRenderableContent?r.refine===ss.ADD?(Ytt(r,e),o(r,e)):r.refine===ss.REPLACE&&(o(r,e),h&&Ytt(r,e)):(n._emptyTiles.push(r),o(r,e),h&&Ytt(r,e)),a(r,e),s(r,e)}}function qme(t,e){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:a}=Sr,s=!0,l=sJ.stack;for(l.push(t);l.length>0;){sJ.stackMaximumLength=Math.max(sJ.stackMaximumLength,l.length);let r=l.pop(),d=r.children,m=d.length,h=!r.hasRenderableContent&&n(r);if(!h&&!r.contentAvailable&&(s=!1),i(r,e),r.isVisible||(o(r,e),a(r,e)),h)for(let Z=0;Z0;){dJ.stackMaximumLength=Math.max(dJ.stackMaximumLength,a.length);let l=a.pop().children;for(let r=0;rn._depth+t.skipLevels)}function ihe(t,e,n){let{tileset:i,children:o}=t,{updateTile:a,loadTile:s,touchTile:l}=Sr;for(let d=0;de:t._screenSpaceError>e:!0}function ahe(t,e){let{tileset:n}=t,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:a,visitTile:s,touchTile:l}=Sr,r=rJ.stack;for(r.push(t);r.length>0;){rJ.stackMaximumLength=Math.max(rJ.stackMaximumLength,r.length);let d=r.pop();ehe(d,e);let m=d.parent,h=!c(m)||m._refines;d._refines=o(d)?ihe(d,r,e)&&h:!1;let Z=!d._refines&&h;d.hasRenderableContent?d.refine===ss.ADD?(GP(d,e),a(d,e)):d.refine===ss.REPLACE&&(ohe(d,i)?(a(d,e),Z&&GP(d,e)):Z?(GP(d,e),a(d,e)):nhe(n,d)&&a(d,e)):(n._emptyTiles.push(d),a(d,e),Z&&GP(d,e)),s(d,e),l(d,e)}}function she(t,e){let{selectTile:n,canTraverse:i}=Sr,{stack:o,ancestorStack:a}=B0,s;for(o.push(t);o.length>0||a.length>0;){if(B0.stackMaximumLength=Math.max(B0.stackMaximumLength,o.length),B0.ancestorStackMaximumLength=Math.max(B0.ancestorStackMaximumLength,a.length),a.length>0){let d=a.peek();if(d._stackLength===o.length){a.pop(),d!==s&&(d._finalResolution=!1),n(d,e);continue}}let l=o.pop();if(!c(l))continue;let r=i(l);if(l._shouldSelect)if(l.refine===ss.ADD)n(l,e);else{if(l._selectionDepth=a.length,l._selectionDepth>0&&(l.tileset.hasMixedContent=!0),s=l,!r){n(l,e);continue}a.push(l),l._stackLength=o.length}if(r){let d=l.children;for(let m=0;muo._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=Pe.eastNorthUpToFixedFrame(Z)),s._clippingPlanesOriginMatrix=L.clone(s._initialClippingPlanesOriginMatrix),s};Fs.loadJson=function(t){return te.createIfNeeded(t).fetchJson()};Fs.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Fs.prototype.loadTileset=function(t,e,n){let i=e.asset;if(!c(i))throw new St("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new St("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");c(e.extensionsRequired)&&Fs.checkSupportedExtensions(e.extensionsRequired);let o=this._statistics,a=i.tilesetVersion;c(a)&&(this._basePath+=`?v=${a}`,t=t.clone(),t.setQueryParameters({v:a}));let s=SFt(this,t,e.root,n);c(n)&&(n.children.push(s),s._depth=n._depth+1);let l=[];for(l.push(s);l.length>0;){let r=l.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&r.refine===ss.ADD;let d=r._header.children;if(c(d))for(let m=0;mU.minimumRadius){let T=gt.fromCartesian(A,U,rhe);n=p.normalize(l.positionWC,gFt),i=l.directionWC,o=l.positionCartographic.height,a=0,s=T.height*2}else{let T=L.multiplyByPoint(F,l.positionWC,mhe);if(n=p.UNIT_Z,i=L.multiplyByPointAsVector(F,l.directionWC,hhe),i=p.normalize(i,i),o=T.z,d instanceof kh){let g=ot.getColumn(G.halfAxes,2,phe),C=p.magnitude(g);a=A.z-C,s=A.z+C}else if(d instanceof E0){let g=G.radius;a=A.z-g,s=A.z+g}}}let m=t.dynamicScreenSpaceErrorHeightFalloff,h=a+(s-a)*m,Z=s,b=k.clamp((o-h)/(Z-h),0,1),u=1-Math.abs(p.dot(i,n));u=u*(1-b),t._dynamicScreenSpaceErrorComputedDensity=t.dynamicScreenSpaceErrorDensity*u}function Zhe(t,e){if(e.hasEmptyContent)return;let{statistics:n}=t,i=e.contentExpired,o=e.requestContent();c(o)&&(o.then(a=>{!c(a)||e.isDestroyed()||t.isDestroyed()||(t._processingQueue.push(e),++n.numberOfTilesProcessing)}).catch(a=>{IFt(a,t,e)}),i&&(e.hasTilesetContent||e.hasImplicitContent?Che(t,e):(n.decrementLoadCounts(e.content),--n.numberOfTilesWithContentReady)),t._requestedTilesInFlight.push(e))}function CFt(t,e){return t._priority-e._priority}Fs.prototype.postPassesUpdate=function(t){c(this._root)&&(Vhe(this,t),Nhe(this,t),this._cache.unloadTiles(this,yFt),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Fs.prototype.prePassesUpdate=function(t){if(!c(this._root))return;Ghe(this,t);let e=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,c(e)&&e.enabled&&e.update(t);let n=this._clippingPolygons;c(n)&&n.enabled&&n.update(t),c(this._loadTimestamp)||(this._loadTimestamp=rt.clone(t.time)),this._timeSinceLoad=Math.max(rt.secondsDifference(t.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&uhe(this,t),t.newFrame&&this._cache.reset()};function Vhe(t,e){let n=t._requestedTilesInFlight,i=0;for(let o=0;o=1;if(a._contentState!==rs.LOADING){++i;continue}else if(s){a.cancelRequests(),++i;continue}i>0&&(n[o-i]=a)}n.length-=i}function bhe(t){let e=t._requestedTiles;e.sort(CFt);for(let n=0;n0?e.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`))}function Rhe(t){let e=t._processingQueue,n=0;for(let i=0;i0&&(e[i-n]=o)}e.length-=n}var Whe=new gt,fhe=new gt,Fhe=new p;function Uhe(t,e,n){if(!t.enableCollision||!t.show)return;let i=t._addHeightCallbacks,o=e.boundingSphere;for(let a of i){if(a.invoked||e._wasSelectedLastFrame)continue;let s=a.ellipsoid,l=gt.clone(a.positionCartographic,Whe),r=gt.fromCartesian(o.center,s,fhe);c(r)&&(l.height=r.height);let d=gt.toCartesian(l,s,Fhe);p.distance(d,o.center)<=o.radius&&n.afterRender.push(()=>{c(a.callback)&&a.callback(l),a.invoked=!1})}}function Ghe(t,e){Rhe(t);let n=t._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:a}=t,s=i+o,l=!1;for(let r=0;rs){l=!0;break}let d=n[r];try{d.process(t,e),d.contentReady&&(--a.numberOfTilesProcessing,t.tileLoad.raiseEvent(d))}catch(m){--a.numberOfTilesProcessing,IFt(m,t,d)}}t.totalMemoryUsageInBytes0&&Ahe(t)}function Ahe(t){t._memoryAdjustedScreenSpaceError*=1.02;let e=t._processingQueue;for(let n=0;n{t.isDestroyed()||(t._error=m)})}function jde(t,e){if(!c(t._va)){let n=t._startEllipsoidNormals,i=t._endEllipsoidNormals,o=t._startPositionAndHeights,a=t._endPositionAndHeights,s=t._startFaceNormalAndVertexCornerIds,l=t._endFaceNormalAndHalfWidths,r=t._vertexBatchIds,d=t._indices,m=n.byteLength+i.byteLength;m+=o.byteLength+a.byteLength,m+=s.byteLength+l.byteLength,m+=r.byteLength+d.byteLength,t._trianglesLength=d.length/3,t._geometryByteLength=m;let h=we.createVertexBuffer({context:e,typedArray:n,usage:ce.STATIC_DRAW}),u=we.createVertexBuffer({context:e,typedArray:i,usage:ce.STATIC_DRAW}),R=we.createVertexBuffer({context:e,typedArray:o,usage:ce.STATIC_DRAW}),V=we.createVertexBuffer({context:e,typedArray:a,usage:ce.STATIC_DRAW}),F=we.createVertexBuffer({context:e,typedArray:s,usage:ce.STATIC_DRAW}),U=we.createVertexBuffer({context:e,typedArray:l,usage:ce.STATIC_DRAW}),G=we.createVertexBuffer({context:e,typedArray:r,usage:ce.STATIC_DRAW}),A=we.createIndexBuffer({context:e,typedArray:d,usage:ce.STATIC_DRAW,indexDatatype:d.BYTES_PER_ELEMENT===2?re.UNSIGNED_SHORT:re.UNSIGNED_INT}),S=[{index:pF.startEllipsoidNormal,vertexBuffer:h,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:pF.endEllipsoidNormal,vertexBuffer:u,componentDatatype:it.FLOAT,componentsPerAttribute:3},{index:pF.startPositionAndHeight,vertexBuffer:R,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.endPositionAndHeight,vertexBuffer:V,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.startFaceNormalAndVertexCorner,vertexBuffer:F,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.endFaceNormalAndHalfWidth,vertexBuffer:U,componentDatatype:it.FLOAT,componentsPerAttribute:4},{index:pF.a_batchId,vertexBuffer:G,componentDatatype:it.UNSIGNED_SHORT,componentsPerAttribute:1}];t._va=new Ki({context:e,attributes:S,indexBuffer:A}),t._positions=void 0,t._widths=void 0,t._counts=void 0,t._ellipsoid=void 0,t._minimumHeight=void 0,t._maximumHeight=void 0,t._rectangle=void 0,t._transferrableBatchIds=void 0,t._packedBuffer=void 0,t._startEllipsoidNormals=void 0,t._endEllipsoidNormals=void 0,t._startPositionAndHeights=void 0,t._startFaceNormalAndVertexCornerIds=void 0,t._endPositionAndHeights=void 0,t._endFaceNormalAndHalfWidths=void 0,t._vertexBatchIds=void 0,t._indices=void 0}}var xX=new L,Yft=new p;function qde(t,e){c(t._uniformMap)||(t._uniformMap={u_modifiedModelView:function(){let n=e.uniformState.view;return L.clone(n,xX),L.multiplyByPoint(xX,t._center,Yft),L.setTranslation(xX,Yft,xX),xX},u_highlightColor:function(){return t._highlightColor},u_minimumMaximumVectorHeights:function(){return t._minimumMaximumVectorHeights}})}function xft(t){return he.fromCache({cull:{enabled:!0,face:so.FRONT},blending:Pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:t,frontFunction:Li.EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.EQUAL,backOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},reference:gn.CESIUM_3D_TILE_MASK,mask:gn.CESIUM_3D_TILE_MASK}})}function $de(t){c(t._rs)||(t._rs=xft(!1),t._rs3DTiles=xft(!0))}function tce(t,e){if(c(t._sp))return;let n=t._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(kX),o=n.getFragmentShaderCallback(!1,void 0,!0)(YX),a=new Ze({defines:["VECTOR_TILE",In.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Uh,i]}),s=new Ze({defines:["VECTOR_TILE"],sources:[o]});t._sp=xn.fromCache({context:e,vertexShaderSource:a,fragmentShaderSource:s,attributeLocations:pF})}function ece(t,e){let n=t._command;if(!c(t._command)){let o=t._batchTable.getUniformMapCallback()(t._uniformMap);n=t._command=new Ee({owner:t,vertexArray:t._va,renderState:t._rs,shaderProgram:t._sp,uniformMap:o,boundingVolume:t._boundingVolume,pass:Pt.TERRAIN_CLASSIFICATION,pickId:t._batchTable.getPickId()});let a=Ee.shallowClone(n,n.derivedCommands.tileset);a.renderState=t._rs3DTiles,a.pass=Pt.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=a}let i=t._classificationType;(i===Ji.TERRAIN||i===Ji.BOTH)&&e.commandList.push(n),(i===Ji.CESIUM_3D_TILE||i===Ji.BOTH)&&e.commandList.push(n.derivedCommands.tileset)}F0.prototype.getPositions=function(t){return _A.getPolylinePositions(this,t)};F0.prototype.createFeatures=function(t,e){let n=this._batchIds,i=n.length;for(let o=0;o{t.isDestroyed()||(t._error=e)})}F0.prototype.update=function(t){let e=t.context;if(!this._ready){if(c(this._promise)||(this._promise=sce(this).then(zde(this,e))),c(this._error)){let i=this._error;throw this._error=void 0,i}return}qde(this,e),tce(this,e),$de(this);let n=t.passes;(n.render||n.pick)&&ece(this,t)};F0.prototype.isDestroyed=function(){return!1};F0.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),At(this)};var XX=F0;var eei=b(W(),1);var mtt=32767,lce=new gt,rce=new p;function dce(t,e,n,i,o){let a=t.length/3,s=t.subarray(0,a),l=t.subarray(a,2*a),r=t.subarray(2*a,3*a);Ni.zigZagDeltaDecode(s,l,r);let d=new Float64Array(t.length);for(let m=0;m0&&c(t.POLYGON_BATCH_IDS)){let u=e.byteOffset+t.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(e.buffer,u,s)}if(l>0&&c(t.POLYLINE_BATCH_IDS)){let u=e.byteOffset+t.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(e.buffer,u,l)}if(r>0&&c(t.POINT_BATCH_IDS)){let u=e.byteOffset+t.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(e.buffer,u,r)}let d=c(n)||c(i)||c(o),m=s>0&&!c(n)||l>0&&!c(i)||r>0&&!c(o);if(d&&m)throw new Tt("If one group of batch ids is defined, then all batch ids must be defined");if(!c(n)&&!c(i)&&!c(o)){let u=0;if(!c(n)&&s>0)for(n=new Uint16Array(s),a=0;a0)for(i=new Uint16Array(l),a=0;a0)for(o=new Uint16Array(r),a=0;a0&&(G=ts(i,n,d),n+=d,m>0&&(A=new Uint8Array(e,n,m),A=new Uint8Array(A),n+=m));let S=f(F.POLYGONS_LENGTH,0),g=f(F.POLYLINES_LENGTH,0),C=f(F.POINTS_LENGTH,0),y=S+g+C,Y=new wb(t,y,G,A,cce(t));if(t._batchTable=Y,y===0)return;let Q=new Fu(F,U),J=Q.getGlobalProperty("REGION");if(!c(J))throw new Tt("Feature table global property: REGION must be defined");let M=Gt.unpack(J),Z=J[4],E=J[5],I=t._tile.computedTransform,B=Q.getGlobalProperty("RTC_CENTER",it.FLOAT,3);c(B)?(B=p.unpack(B),L.multiplyByPoint(I,B,B)):(B=Gt.center(M),B.height=k.lerp(Z,E,.5),B=mt.WGS84.cartographicToCartesian(B));let X=mce(F,U);if(n+=(4-n%4)%4,S>0){Q.featuresLength=S;let _=f(Q.getPropertyArray("POLYGON_COUNTS",it.UNSIGNED_INT,1),Q.getPropertyArray("POLYGON_COUNT",it.UNSIGNED_INT,1));if(!c(_))throw new Tt("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let P=f(Q.getPropertyArray("POLYGON_INDEX_COUNTS",it.UNSIGNED_INT,1),Q.getPropertyArray("POLYGON_INDEX_COUNT",it.UNSIGNED_INT,1));if(!c(P))throw new Tt("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let w=_.reduce(function(q,at){return q+at*2},0),z=P.reduce(function(q,at){return q+at},0),H=new Uint32Array(e,n,z);n+=h;let nt=new Uint16Array(e,n,w);n+=u;let $,dt;c(F.POLYGON_MINIMUM_HEIGHTS)&&c(F.POLYGON_MAXIMUM_HEIGHTS)&&($=Q.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",it.FLOAT,1),dt=Q.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",it.FLOAT,1)),t._polygons=new yX({positions:nt,counts:_,indexCounts:P,indices:H,minimumHeight:Z,maximumHeight:E,polygonMinimumHeights:$,polygonMaximumHeights:dt,center:B,rectangle:M,boundingVolume:t.tile.boundingVolume.boundingVolume,batchTable:Y,batchIds:X.polygons,modelMatrix:I})}if(g>0){Q.featuresLength=g;let _=f(Q.getPropertyArray("POLYLINE_COUNTS",it.UNSIGNED_INT,1),Q.getPropertyArray("POLYLINE_COUNT",it.UNSIGNED_INT,1));if(!c(_))throw new Tt("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let P=Q.getPropertyArray("POLYLINE_WIDTHS",it.UNSIGNED_SHORT,1);if(!c(P)){P=new Uint16Array(g);for(let dt=0;dt0){let _=new Uint16Array(e,n,C*3);n+=V,t._points=new NX({positions:_,batchIds:X.points,minimumHeight:Z,maximumHeight:E,rectangle:M,batchTable:Y})}}function htt(t){let e=t.featuresLength;if(!c(t._features)&&e>0){let n=new Array(e);c(t._polygons)&&t._polygons.createFeatures(t,n),c(t._polylines)&&t._polylines.createFeatures(t,n),c(t._points)&&t._points.createFeatures(t,n),t._features=n}}Eu.prototype.hasProperty=function(t,e){return this._batchTable.hasProperty(t,e)};Eu.prototype.getFeature=function(t){return c(this._features)||htt(this),this._features[t]};Eu.prototype.applyDebugSettings=function(t,e){c(this._polygons)&&this._polygons.applyDebugSettings(t,e),c(this._polylines)&&this._polylines.applyDebugSettings(t,e),c(this._points)&&this._points.applyDebugSettings(t,e)};Eu.prototype.applyStyle=function(t){c(this._features)||htt(this),c(this._polygons)&&this._polygons.applyStyle(t,this._features),c(this._polylines)&&this._polylines.applyStyle(t,this._features),c(this._points)&&this._points.applyStyle(t,this._features)};Eu.prototype.update=function(t,e){let n=!0;c(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(e),n=n&&this._polygons.ready),c(this._polylines)&&(this._polylines.update(e),n=n&&this._polylines.ready),c(this._points)&&(this._points.update(e),n=n&&this._points.ready),c(this._batchTable)&&n&&(c(this._features)||htt(this),this._batchTable.update(t,e),this._ready=!0)};Eu.prototype.pick=function(t,e,n){};Eu.prototype.getPolylinePositions=function(t){let e=this._polylines;if(c(e))return e.getPositions(t)};Eu.prototype.isDestroyed=function(){return!1};Eu.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),At(this)};function uce(t,e,n,i,o,a){let s=e.length,l=0;for(let r=0;r=0?i[a]:void 0}var HA=bce;var pni=b(W(),1);var sni=b(W(),1);function A0(t){t=f(t,f.EMPTY_OBJECT);let e=t.tile,n=t.class;this._class=n,this._properties=e.properties,this._extensions=e.extensions,this._extras=e.extras}Object.defineProperties(A0.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});A0.prototype.hasProperty=function(t){return Yi.hasProperty(t,this._properties,this._class)};A0.prototype.hasPropertyBySemantic=function(t){return Yi.hasPropertyBySemantic(t,this._properties,this._class)};A0.prototype.getPropertyIds=function(t){return Yi.getPropertyIds(this._properties,this._class,t)};A0.prototype.getProperty=function(t){return Yi.getProperty(t,this._properties,this._class)};A0.prototype.setProperty=function(t,e){return Yi.setProperty(t,e,this._properties,this._class)};A0.prototype.getPropertyBySemantic=function(t){return Yi.getPropertyBySemantic(t,this._properties,this._class)};A0.prototype.setPropertyBySemantic=function(t,e){return Yi.setPropertyBySemantic(t,e,this._properties,this._class)};var _X=A0;function Vtt(t,e){let n=co(e,"3DTILES_metadata")?e.extensions["3DTILES_metadata"]:e.metadata;if(!c(n))return;if(!c(t.schema)){Vtt._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=f(t.schema.classes,f.EMPTY_OBJECT);if(c(n.class)){let o=i[n.class];return new _X({tile:n,class:o})}}Vtt._oneTimeWarning=Gn;var DX=Vtt;var Yni=b(W(),1);var fni=b(W(),1);function Wce(t){let e=new Uint8Array(t),n=mu(e);if(n==="glTF"&&(n="glb"),nr.isBinaryFormat(n))return{contentType:n,binaryPayload:e};let i=fce(e);if(c(i.root))return{contentType:nr.EXTERNAL_TILESET,jsonPayload:i};if(c(i.asset))return{contentType:nr.GLTF,jsonPayload:i};if(c(i.tileAvailability))return{contentType:nr.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(c(i.type))return{contentType:nr.GEOJSON,jsonPayload:i};if(c(i.voxelTable))return{contentType:nr.VOXEL_JSON,jsonPayload:i};throw new Tt("Invalid tile content.")}function fce(t){let e;try{e=ts(t)}catch{throw new Tt("Invalid tile content.")}return e}var dR=Wce;function qp(t,e,n,i){this._tileset=t,this._tile=e,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=c(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0;let a=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(a),this._requests=new Array(a),this._ready=!1,this._innerContentResources=new Array(a),this._serverKeys=new Array(a);for(let s=0;sAce(t,a,s)),o=await Promise.all(i);return t._contentsCreated=!0,t._contents=o.filter(c),o}async function Ace(t,e,n){if(c(e))try{let i=dR(e);if(i.contentType===nr.EXTERNAL_TILESET)throw new Tt("External tilesets are disallowed inside multiple contents");t._disableSkipLevelOfDetail=t._disableSkipLevelOfDetail||i.contentType===nr.GEOMETRY||i.contentType===nr.VECTOR;let o=t._tileset,a=t._innerContentResources[n],s=t._tile,l,r=DA[i.contentType];c(i.binaryPayload)?l=await Promise.resolve(r(o,s,a,i.binaryPayload.buffer,0)):l=await Promise.resolve(r(o,s,a,i.jsonPayload));let d=t._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,u=s.implicitCoordinates;l.metadata=h.getContentMetadataView(u,n)}else s.hasImplicitContent||(l.metadata=OA(o,d));let m=HA(o,d);return c(m)&&(l.group=new sA({metadata:m})),l}catch(i){Lft(t,n,i)}}function Lft(t,e,n){let i=t._tileset,o=t._innerContentResources[e].url,a=c(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:a}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${a}`))}qp.prototype.cancelRequests=function(){for(let t=0;tl?R=k.TWO_PI-r+l:R=l-r;let F=Math.ceil(R/e)+1,U=Math.ceil(V/e)+1,G=R/(F-1),A=V/(U-1),S=Gt.northwest(t,a),g=Gt.center(t,gce);(n!==0||i!==0)&&(g.longitude=0;V--)ir.computePosition(e,n,!1,R,V,F),h[u++]=F.x,h[u++]=F.y,h[u++]=F.z;for(V=0,R=i-2;R>0;R--)ir.computePosition(e,n,!1,R,V,F),h[u++]=F.x,h[u++]=F.y,h[u++]=F.z;let U=h.length/3*2,G=re.createTypedArray(h.length/3,U),A=0;for(let g=0;g0){tV.longitude=(e.west+e.east)*.5,tV.latitude=d;let F=n.cartographicToCartesian(tV,UC.origin);p.clone(r,UC.direction);let U=Kn.fromPointNormal(t.southwestCornerCartesian,t.westNormal,Kft);no.rayPlane(UC,U,t.southwestCornerCartesian),m=n.geodeticSurfaceNormal(F,ZP)}else m=n.geodeticSurfaceNormalCartographic(Gt.southeast(e),ZP);let h=p.cross(m,l,vft);p.normalize(h,t.southNormal);let u=e.north,R;if(u<0){tV.longitude=(e.west+e.east)*.5,tV.latitude=u;let F=n.cartographicToCartesian(tV,UC.origin);p.negate(r,UC.direction);let U=Kn.fromPointNormal(t.northeastCornerCartesian,t.eastNormal,Kft);no.rayPlane(UC,U,t.northeastCornerCartesian),R=n.geodeticSurfaceNormal(F,ZP)}else R=n.geodeticSurfaceNormalCartographic(Gt.northwest(e),ZP);let V=p.cross(l,R,vft);p.normalize(V,t.northNormal)}var Jce=new p,Lce=new p,Mce=new p(0,-1,0),_ce=new p(0,0,-1),zft=new p;function Dce(t,e){let n=e.camera,i=n.positionWC,o=n.positionCartographic,a=0;if(!Gt.contains(t.rectangle,o)){let d=t.southwestCornerCartesian,m=t.northeastCornerCartesian,h=t.westNormal,u=t.southNormal,R=t.eastNormal,V=t.northNormal;e.mode!==Vt.SCENE3D&&(d=e.mapProjection.project(Gt.southwest(t.rectangle),Jce),d.z=d.y,d.y=d.x,d.x=0,m=e.mapProjection.project(Gt.northeast(t.rectangle),Lce),m.z=m.y,m.y=m.x,m.x=0,h=Mce,R=p.UNIT_Y,u=_ce,V=p.UNIT_Z);let F=p.subtract(i,d,zft),U=p.dot(F,h),G=p.dot(F,u),A=p.subtract(i,m,zft),S=p.dot(A,R),g=p.dot(A,V);U>0?a+=U*U:S>0&&(a+=S*S),G>0?a+=G*G:g>0&&(a+=g*g)}let s,l,r;if(e.mode===Vt.SCENE3D?(s=o.height,l=t.minimumHeight,r=t.maximumHeight):(s=i.x,l=0,r=0),s>r){let d=s-r;a+=d*d}else if(s0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):Kn.getPointDistance(this._boundingPlanes[1],e)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let a,s;for(a=0;a<4;a++)s=2+a,Kn.getPointDistance(this._boundingPlanes[s],e)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let l,r;if(n.length===1)return r=this._boundingPlanes[n[0]],l=gtt(Kn.projectPointOntoPlane(r,e,Ttt),i[0],r,o),p.distance(l,e);if(n.length===2){if(n[0]===0){let u=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return l=iFt(e,u[0],u[1]),p.distance(l,e)}let m=Number.MAX_VALUE,h;for(a=0;a<2;a++)r=this._boundingPlanes[n[a]],l=gtt(Kn.projectPointOntoPlane(r,e,Ttt),i[a],r,this._edgeNormals[n[a]]),h=p.distanceSquared(l,e),h3)return l=gtt(Kn.projectPointOntoPlane(this._boundingPlanes[1],e,Ttt),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),p.distance(l,e);let d=n[1]===2&&n[2]===5?0:1;return n[0]===0?p.distance(e,this._vertices[(n[1]-2+d)%4]):p.distance(e,this._vertices[4+(n[1]-2+d)%4])};var sme=new p,lme=new p;function iFt(t,e,n){let i=p.subtract(n,e,sme),o=p.subtract(t,e,lme),a=p.dot(i,o);if(a<=0)return e;let s=p.dot(i,i);return a>=s?n:(a=a/s,new p((1-a)*e.x+a*n.x,(1-a)*e.y+a*n.y,(1-a)*e.z+a*n.z))}var rme=new Kn(p.UNIT_X,0);function gtt(t,e,n,i){let o=Number.MAX_VALUE,a,s,l;for(let r=0;r0&&(V=!0,h+=d),s1||co(n,"3DTILES_multiple_contents"),s=o&&!a?n.contents[0]:n.content;this._contentHeader=s,this.transform=c(n.transform)?L.unpack(n.transform):L.clone(L.IDENTITY);let l=c(i)?i.computedTransform:t.modelMatrix,r=L.multiply(l,this.transform,new L),d=c(i)?i._initialTransform:L.IDENTITY;this._initialTransform=L.multiply(d,this.transform,new L),this.computedTransform=r,this.metadata=DX(t,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,r),this._boundingVolume2D=void 0;let m;c(s)&&c(s.boundingVolume)&&(m=this.createBoundingVolume(s.boundingVolume,r)),this._contentBoundingVolume=m,this._contentBoundingVolume2D=void 0;let h;c(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,r)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,c(this._geometricError)||(this._geometricError=c(i)?i._geometricError:t._geometricError,fs._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let u;c(n.refine)?((n.refine==="replace"||n.refine==="add")&&fs._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),u=n.refine.toUpperCase()==="REPLACE"?ss.REPLACE:ss.ADD):c(i)?u=i.refine:u=ss.REPLACE,this.refine=u,this.children=[],this.parent=i;let R,V=!1,F,U,G;if(e=te.createIfNeeded(e),a)F=rs.UNLOADED,U=e.clone();else if(c(s)){let C=s.uri;c(s.url)&&(fs._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),C=s.url),C===""?(fs._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),R=new WC(t,this),V=!0,F=rs.READY):(F=rs.UNLOADED,U=e.getDerivedResource({url:C}),G=xd.getServerKey(U.getUrlComponent()))}else R=new WC(t,this),V=!0,F=rs.READY;this._content=R,this._contentResource=U,this._contentState=F,this._expiredContent=void 0,this._serverKey=G,this.hasEmptyContent=V,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=a,this.cacheNode=void 0;let A=n.expire,S,g;c(A)&&(S=A.duration,c(A.date)&&(g=rt.fromIso8601(A.date))),this.expireDuration=S,this.expireDate=g,this.lastStyleTime=0,this._optimChildrenWithinParent=jp.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=v.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new rt,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}fs._deprecationWarning=ur;Object.defineProperties(fs.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return f(this._contentBoundingVolume,this._boundingVolume)}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return c(this._color)||(this._color=new v),v.clone(this._color)},set:function(t){this._color=v.clone(t,this._color),this._colorDirty=!0}},hasRenderableContent:{get:function(){return!this.hasEmptyContent&&!this.hasTilesetContent&&!this.hasImplicitContent}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||c(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===rs.READY}},contentUnloaded:{get:function(){return this._contentState===rs.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===rs.EXPIRED}},contentFailed:{get:function(){return this._contentState===rs.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var uF=new p;function ume(t,e){let{tileset:n,boundingSphere:i}=t,{radius:o,center:a}=i,{camera:s}=e,l=p.multiplyByScalar(s.directionWC,t._centerZDepth,uF),r=p.add(s.positionWC,l,uF),d=p.subtract(r,a,uF);if(p.magnitude(d)>o){let g=p.normalize(d,uF),C=p.multiplyByScalar(g,o,uF),y=p.add(a,C,uF),Y=p.subtract(y,s.positionWC,uF),Q=p.normalize(Y,uF);t._foveatedFactor=1-Math.abs(p.dot(s.directionWC,Q))}else t._foveatedFactor=0;let u=t.refine===ss.REPLACE,R=n.isSkippingLevelOfDetail;if(u&&!R||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||t._priorityProgressiveResolution&&u&&R||n._pass===ns.PRELOAD_FLIGHT||n._pass===ns.PRELOAD)return!1;let V=1-Math.cos(s.frustum.fov*.5),F=n.foveatedConeSize*V;if(t._foveatedFactor<=F)return!1;let U=V-F,G=k.clamp((t._foveatedFactor-F)/U,0,1),A=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,G),S=t._screenSpaceError===0&&c(t.parent)?t.parent._screenSpaceError*.5:t._screenSpaceError;return n.memoryAdjustedScreenSpaceError-A<=S}var cFt=new rt;fs.prototype.getScreenSpaceError=function(t,e,n){let i=this._tileset,o=f(n,1),a=c(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=e?a:this.geometricError;if(s===0)return 0;let{camera:l,context:r}=t,d=l.frustum,m=r.drawingBufferWidth,h=r.drawingBufferHeight*o,u;if(t.mode===Vt.SCENE2D||d instanceof wn){let R=d.offCenterFrustum;c(R)&&(d=R);let V=Math.max(d.top-d.bottom,d.right-d.left)/Math.max(m,h);u=s/V}else{let R=Math.max(this._distanceToCamera,k.EPSILON7),V=d.sseDenominator;if(u=s*h/(R*V),i.dynamicScreenSpaceError){let F=i._dynamicScreenSpaceErrorComputedDensity,U=i.dynamicScreenSpaceErrorFactor,G=k.fog(R,F)*U;u-=G}}return u/=t.pixelRatio,u};function Zme(t,e){if(t.progressiveResolutionHeightFraction<=0||t.progressiveResolutionHeightFraction>.5)return!1;let n=t.memoryAdjustedScreenSpaceError,i=e._screenSpaceErrorProgressiveResolution>n;e._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=e.parent,a=e._screenSpaceErrorProgressiveResolution<=n,s=c(o)&&o._screenSpaceErrorProgressiveResolution>n;return a&&s&&(e._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function Rme(t,e){let n=e.parent,o=c(n)&&(!t.isSkippingLevelOfDetail||e._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:e._screenSpaceError;return t.root._screenSpaceError-o}fs.prototype.updateVisibility=function(t){let{parent:e,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=c(e)?e.computedTransform:n.modelMatrix,o=c(e)?e._visibilityPlaneMask:Jl.MASK_INDETERMINATE;this.updateTransform(i,t),this._distanceToCamera=this.distanceToTile(t),this._centerZDepth=this.distanceToTileCenter(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(t,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(t,o),this._visible=this._visibilityPlaneMask!==Jl.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._priorityReverseScreenSpaceError=Rme(n,this),this._priorityProgressiveResolution=Zme(n,this),this.priorityDeferred=ume(this,t),this._updatedVisibilityFrame=n._updatedVisibilityFrame};fs.prototype.updateExpiration=function(){if(c(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let t=rt.now(cFt);rt.lessThan(this.expireDate,t)&&(this._contentState=rs.EXPIRED,this._expiredContent=this._content)}};function bme(t){if(!c(t.expireDuration))return;let e=rt.now(cFt);rt.addSeconds(e,t.expireDuration,e),c(t.expireDate)?rt.lessThan(t.expireDate,e)&&rt.clone(e,t.expireDate):t.expireDate=rt.clone(e)}function Wme(t){return function(){return t._priority}}fs.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?fme(this):Ume(this)};function fme(t){let e=t._content,n=t._tileset;if(!c(e)){let o=co(t._header,"3DTILES_multiple_contents")?t._header.extensions["3DTILES_multiple_contents"]:t._header;e=new OX(n,t,t._contentResource.clone(),o),t._content=e}let i=e.requestInnerContents();if(c(i))return t._contentState=rs.LOADING,i.then(o=>{if(!t.isDestroyed()&&c(o))return t._contentState=rs.PROCESSING,e}).catch(o=>{if(!t.isDestroyed())throw t._contentState=rs.FAILED,o})}async function Fme(t,e,n,i,o){let a=t._contentState;t._contentState=rs.LOADING,++e.statistics.numberOfPendingRequests;let s;try{s=await o}catch(l){if(--e.statistics.numberOfPendingRequests,t.isDestroyed())return;if(n.cancelled||n.state===qi.CANCELLED){t._contentState=a,++e.statistics.numberOfAttemptedRequests;return}throw t._contentState=rs.FAILED,l}if(t.isDestroyed()){--e.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===qi.CANCELLED){t._contentState=a,--e.statistics.numberOfPendingRequests,++e.statistics.numberOfAttemptedRequests;return}try{let l=await Gme(t,s);return--e.statistics.numberOfPendingRequests,t.isDestroyed()?void 0:(i&&(t.expireDate=void 0),t._content=l,t._contentState=rs.PROCESSING,l)}catch(l){if(--e.statistics.numberOfPendingRequests,t.isDestroyed())return;throw t._contentState=rs.FAILED,l}}function Ume(t){let e=t._contentResource.clone(),n=t.contentExpired;n&&e.setQueryParameters({expired:t.expireDate.toString()});let i=new us({throttle:!0,throttleByServer:!0,type:Xl.TILES3D,priorityFunction:Wme(t),serverKey:t._serverKey});t._request=i,e.request=i;let o=t._tileset,a=e.fetchArrayBuffer();if(!c(a)){++o.statistics.numberOfAttemptedRequests;return}return Fme(t,o,i,n,a)}async function Gme(t,e){let n=dR(e),i=t._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===nr.GEOMETRY||n.contentType===nr.VECTOR,(n.contentType===nr.IMPLICIT_SUBTREE||n.contentType===nr.IMPLICIT_SUBTREE_JSON)&&(t.hasImplicitContent=!0),n.contentType===nr.EXTERNAL_TILESET&&(t.hasTilesetContent=!0);let o,a=DA[n.contentType];if(t.isDestroyed())return;c(n.binaryPayload)?o=await Promise.resolve(a(i,t,t._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(a(i,t,t._contentResource,n.jsonPayload));let s=t._contentHeader;if(t.hasImplicitContentMetadata){let r=t.implicitSubtree,d=t.implicitCoordinates;o.metadata=r.getContentMetadataView(d,0)}else t.hasImplicitContent||(o.metadata=OA(i,s));let l=HA(i,s);return c(l)&&(o.group=new sA({metadata:l})),o}fs.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};fs.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=rs.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var mFt=new Ft;function Itt(t,e){if(e.mode!==Vt.SCENE3D&&!c(t._boundingVolume2D)){let n=t._boundingVolume.boundingSphere,i=Ft.projectTo2D(n,e.mapProjection,mFt);t._boundingVolume2D=new E0(i.center,i.radius)}return e.mode!==Vt.SCENE3D?t._boundingVolume2D:t._boundingVolume}function Ame(t,e){if(e.mode!==Vt.SCENE3D&&!c(t._contentBoundingVolume2D)){let n=t._contentBoundingVolume.boundingSphere,i=Ft.projectTo2D(n,e.mapProjection,mFt);t._contentBoundingVolume2D=new E0(i.center,i.radius)}return e.mode!==Vt.SCENE3D?t._contentBoundingVolume2D:t._contentBoundingVolume}fs.prototype.visibility=function(t,e){let n=t.cullingVolume,i=Itt(this,t),o=this._tileset,a=o.clippingPlanes;if(c(a)&&a.enabled){let l=a.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=l!==yn.INSIDE,l===yn.OUTSIDE)return Jl.MASK_OUTSIDE}let s=o.clippingPolygons;if(c(s)&&s.enabled){let l=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=l!==yn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,e)};fs.prototype.contentVisibility=function(t){if(!c(this._contentBoundingVolume))return yn.INSIDE;if(this._visibilityPlaneMask===Jl.MASK_INSIDE)return yn.INSIDE;let e=t.cullingVolume,n=Ame(this,t),i=this._tileset,o=i.clippingPlanes;if(c(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==yn.INSIDE,s===yn.OUTSIDE)return yn.OUTSIDE}let a=i.clippingPolygons;if(c(a)&&a.enabled){let s=a.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==yn.OUTSIDE,s===yn.INSIDE)return yn.OUTSIDE}return e.computeVisibility(n)};fs.prototype.distanceToTile=function(t){return Itt(this,t).distanceToCamera(t)};var Sme=new p;fs.prototype.distanceToTileCenter=function(t){let n=Itt(this,t).boundingVolume,i=p.subtract(n.center,t.camera.positionWC,Sme);return p.dot(t.camera.directionWC,i)};fs.prototype.insideViewerRequestVolume=function(t){let e=this._viewerRequestVolume;return!c(e)||e.distanceToCamera(t)===0};var hFt=new ot,pFt=new p,Tme=new ot,Ntt=new p,VFt=new Gt,uFt=new ci,Ctt=new L;function gme(t,e,n){let i=p.fromElements(t[0],t[1],t[2],Ntt),o=ot.fromArray(t,3,Tme);i=L.multiplyByPoint(e,i,i);let a=L.getMatrix3(e,hFt);return o=ot.multiply(a,o,o),c(n)?(n.update(i,o),n):new kh(i,o)}function Eme(t,e,n,i){let o=Gt.unpack(t,0,VFt),a=t[4],s=t[5],l=ci.fromRectangle(o,a,s,mt.WGS84,uFt),r=l.center,d=l.halfAxes;e=L.multiplyTransformation(e,L.inverseTransformation(n,Ctt),Ctt),r=L.multiplyByPoint(e,r,r);let m=L.getMatrix3(e,hFt);return d=ot.multiply(m,d,d),c(i)&&i instanceof kh?(i.update(r,d),i):new kh(r,d)}function Cme(t,e,n,i){if(!L.equalsEpsilon(e,n,k.EPSILON8))return Eme(t,e,n,i);let o=Gt.unpack(t,0,VFt);return c(i)?(i.rectangle=Gt.clone(o,i.rectangle),i.minimumHeight=t[4],i.maximumHeight=t[5],i.computeBoundingVolumes(mt.WGS84),i):new eV({rectangle:o,minimumHeight:t[4],maximumHeight:t[5]})}function Ime(t,e,n){let i=p.fromElements(t[0],t[1],t[2],Ntt),o=t[3];i=L.multiplyByPoint(e,i,i);let a=L.getScale(e,pFt),s=p.maximumComponent(a);return o*=s,c(n)?(n.update(i,o),n):new E0(i,o)}fs.prototype.createBoundingVolume=function(t,e,n){let i=this.metadata,o;if(c(i)&&(o=AA.parseBoundingVolumeSemantic("TILE",i)),c(o)&&(t=o),!c(t))throw new Tt("boundingVolume must be defined");if(co(t,"3DTILES_bounding_volume_S2"))return new PX(t.extensions["3DTILES_bounding_volume_S2"]);let{box:a,region:s,sphere:l}=t;if(c(a)){let r=gme(a,e,n);return this._verticalExaggeration!==1&&lFt(r,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),r}if(c(s)){let r=Cme(s,e,this._initialTransform,n);return this._verticalExaggeration===1||(r instanceof kh?lFt(r,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(r.minimumHeight=Ps.getHeight(r.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),r.maximumHeight=Ps.getHeight(r.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),r.computeBoundingVolumes(mt.WGS84))),r}if(c(l)){let r=Ime(l,e,n);if(this._verticalExaggeration!==1){let d=Ps.getPosition(r.center,mt.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,Ntt),m=r.radius*this._verticalExaggeration;r.update(d,m)}return r}throw new Tt("boundingVolume must contain a sphere, region, or box")};var Nme=p.unpackArray(new Array(8*3).fill(0));function lFt(t,e,n){let i=t.boundingVolume.computeCorners(Nme).map(a=>Ps.getPosition(a,mt.WGS84,e,n,a)),o=ci.fromPoints(i,uFt);t.update(o.center,o.halfAxes)}fs.prototype.updateTransform=function(t,e){t=f(t,L.IDENTITY);let n=L.multiplyTransformation(t,this.transform,Ctt),i=!L.equals(n,this.computedTransform),o=c(e)&&(this._verticalExaggeration!==e.verticalExaggeration||this._verticalExaggerationRelativeHeight!==e.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&L.clone(n,this.computedTransform),o&&(this._verticalExaggeration=e.verticalExaggeration,this._verticalExaggerationRelativeHeight=e.verticalExaggerationRelativeHeight);let a=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(a.boundingVolume,this.computedTransform,this._boundingVolume),c(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),c(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(a.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};fs.prototype.updateGeometricErrorScale=function(){let t=L.getScale(this.computedTransform,pFt),e=p.maximumComponent(t);if(this.geometricError=this._geometricError*e,!c(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*e}};function yme(t,e,n,i){if(!i.isRender)return;let o=c(t._contentHeader)&&c(t._contentHeader.boundingVolume),a=e.debugShowBoundingVolume||e.debugShowContentBoundingVolume&&!o;if(a){let r;t._finalResolution?t.hasRenderableContent?r=v.WHITE:r=v.DARKGRAY:r=v.YELLOW,c(t._debugBoundingVolume)||(t._debugBoundingVolume=t._boundingVolume.createDebugVolume(r)),t._debugBoundingVolume.update(n);let d=t._debugBoundingVolume.getGeometryInstanceAttributes("outline");d.color=En.toValue(r,d.color)}else!a&&c(t._debugBoundingVolume)&&(t._debugBoundingVolume=t._debugBoundingVolume.destroy());e.debugShowContentBoundingVolume&&o?(c(t._debugContentBoundingVolume)||(t._debugContentBoundingVolume=t._contentBoundingVolume.createDebugVolume(v.BLUE)),t._debugContentBoundingVolume.update(n)):!e.debugShowContentBoundingVolume&&c(t._debugContentBoundingVolume)&&(t._debugContentBoundingVolume=t._debugContentBoundingVolume.destroy()),e.debugShowViewerRequestVolume&&c(t._viewerRequestVolume)?(c(t._debugViewerRequestVolume)||(t._debugViewerRequestVolume=t._viewerRequestVolume.createDebugVolume(v.YELLOW)),t._debugViewerRequestVolume.update(n)):!e.debugShowViewerRequestVolume&&c(t._debugViewerRequestVolume)&&(t._debugViewerRequestVolume=t._debugViewerRequestVolume.destroy());let s=e.debugColorizeTiles&&!t._debugColorizeTiles||c(e._heatmap.tilePropertyName),l=!e.debugColorizeTiles&&t._debugColorizeTiles;s?(e._heatmap.colorize(t,n),t._debugColorizeTiles=!0,t.color=t._debugColor):l&&(t._debugColorizeTiles=!1,t.color=v.WHITE),t._colorDirty&&(t._colorDirty=!1,t._content.applyDebugSettings(!0,t._color)),l&&e.makeStyleDirty()}function Bme(t,e,n){let i=t._expiredContent;if(!t.hasMultipleContents&&c(i)){if(!t.contentReady){try{i.update(e,n)}catch{}return}t._expiredContent.destroy(),t._expiredContent=void 0}if(c(t.content))try{t.content.update(e,n)}catch(o){throw t._contentState=rs.FAILED,o}}function Qme(t,e){let n=e.clippingPlanes,i=0;c(n)&&t._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==t._clippingPlanesState&&(t._clippingPlanesState=i,t.clippingPlanesDirty=!0)}function kme(t,e){let n=e.clippingPolygons,i=0;c(n)&&t._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==t._clippingPolygonsState&&(t._clippingPolygonsState=i,t.clippingPolygonsDirty=!0)}fs.prototype.update=function(t,e,n){let{commandList:i}=e,o=i.length;Qme(this,t),kme(this,t),yme(this,t,e,n),Bme(this,t,e);let a=i.length;this._commandsLength=a-o;for(let s=o;st.cacheBytes||n);){let s=a.item;a=a.next,this.unloadTile(t,s,e)}};tS.prototype.trim=function(){this._trimTiles=!0};var qX=tS;var xsi=b(W(),1);function FP(t){this.tilePropertyName=t,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function Btt(t,e){let n;return e==="_loadTimestamp"?n=rt.toDate(t).getTime():n=t,n}FP.prototype.setReferenceMinimumMaximum=function(t,e,n){this._referenceMinimum[n]=Btt(t,n),this._referenceMaximum[n]=Btt(e,n)};function Xme(t,e){let n=t.tilePropertyName;if(c(n)){let i=Btt(e[n],n);return c(i)?(t._maximum=Math.max(i,t._maximum),t._minimum=Math.min(i,t._minimum),i):(t.tilePropertyName=void 0,i)}}var ytt=[new v(.1,.1,.1,1),new v(.153,.278,.878,1),new v(.827,.231,.49,1),new v(.827,.188,.22,1),new v(1,.592,.259,1),new v(1,.843,0,1)];FP.prototype.colorize=function(t,e){let n=this.tilePropertyName;if(!c(n)||!t.contentAvailable||t._selectedFrame!==e.frameNumber)return;let i=Xme(this,t),o=this._previousMinimum,a=this._previousMaximum;if(o===Number.MAX_VALUE||a===-Number.MAX_VALUE)return;let s=a-o+k.EPSILON7,r=k.clamp(i-o,0,s)/s,d=ytt.length-1,m=r*d,h=Math.floor(m),u=Math.ceil(m),R=m-h,V=ytt[h],F=ytt[u],U=v.clone(v.WHITE);U.red=k.lerp(V.red,F.red,R),U.green=k.lerp(V.green,F.green,R),U.blue=k.lerp(V.blue,F.blue,R),t._debugColor=U};FP.prototype.resetMinimumMaximum=function(){let t=this.tilePropertyName;if(c(t)){let e=this._referenceMinimum[t],n=this._referenceMaximum[t],i=c(e)&&c(n);this._previousMinimum=i?e:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var $X=FP;var Lsi=b(W(),1);function IC(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.batchTableByteLength=0}IC.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};function UP(t,e,n,i){let o=e.innerContents,a=e.pointsLength,s=e.trianglesLength,l=e.featuresLength,r=e.geometryByteLength,d=e.texturesByteLength,m=e.batchTableByteLength;if(i?(t.numberOfFeaturesLoaded+=n?-l:l,t.numberOfPointsLoaded+=n?-a:a,t.geometryByteLength+=n?-r:r,t.texturesByteLength+=n?-d:d,t.batchTableByteLength+=n?-m:m):(t.numberOfFeaturesSelected+=n?-l:l,t.numberOfPointsSelected+=n?-a:a,t.numberOfTrianglesSelected+=n?-s:s),c(o)){let h=o.length;for(let u=0;u>1)&858993459,t=(t^t>>2)&252645135,t=(t^t>>4)&16711935,t=(t^t>>8)&65535,t}function ktt(t){return t&=153391689,t=(t^t>>2)&51130563,t=(t^t>>4)&50393103,t=(t^t>>8)&4278190335,t=(t^t>>16)&1023,t}nJ.encode2D=function(t,e){return(WFt(t)|WFt(e)<<1)>>>0};nJ.decode2D=function(t,e){return c(e)||(e=new Array(2)),e[0]=fFt(t),e[1]=fFt(t>>1),e};nJ.encode3D=function(t,e,n){return Qtt(t)|Qtt(e)<<1|Qtt(n)<<2};nJ.decode3D=function(t,e){return c(e)||(e=new Array(3)),e[0]=ktt(t),e[1]=ktt(t>>1),e[2]=ktt(t>>2),e};var ZF=nJ;function ds(t){this.subdivisionScheme=t.subdivisionScheme,this.subtreeLevels=t.subtreeLevels,this.level=t.level,this.x=t.x,this.y=t.y,this.z=void 0,t.subdivisionScheme===Al.OCTREE&&(this.z=t.z)}Object.defineProperties(ds.prototype,{childIndex:{get:function(){let t=0;return t|=this.x&1,t|=(this.y&1)<<1,this.subdivisionScheme===Al.OCTREE&&(t|=(this.z&1)<<2),t}},mortonIndex:{get:function(){return this.subdivisionScheme===Al.OCTREE?ZF.encode3D(this.x,this.y,this.z):ZF.encode2D(this.x,this.y)}},tileIndex:{get:function(){let t=this.subdivisionScheme===Al.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,e=this.mortonIndex;return t+e}}});ds.prototype.getDescendantCoordinates=function(t){let e=this.level+t.level,n=(this.x<>e,i=t.y>>e,o=this.x===n,a=this.y===i;if(this.subdivisionScheme===Al.OCTREE){let s=t.z>>e,l=this.z===s;return o&&a&&l}return o&&a};ds.prototype.isEqual=function(t){return this.subdivisionScheme===t.subdivisionScheme&&this.subtreeLevels===t.subtreeLevels&&this.level===t.level&&this.x===t.x&&this.y===t.y&&(this.subdivisionScheme===Al.OCTREE?this.z===t.z:!0)};ds.prototype.isImplicitTilesetRoot=function(){return this.level===0};ds.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};ds.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};ds.prototype.getTemplateValues=function(){let t={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Al.OCTREE&&(t.z=this.z),t};var FFt=[0,0,0];ds.fromMortonIndex=function(t,e,n,i){let o;return t===Al.OCTREE?(o=ZF.decode3D(i,FFt),new ds({subdivisionScheme:t,subtreeLevels:e,level:n,x:o[0],y:o[1],z:o[2]})):(o=ZF.decode2D(i,FFt),new ds({subdivisionScheme:t,subtreeLevels:e,level:n,x:o[0],y:o[1]}))};ds.fromTileIndex=function(t,e,n){let i,o,a;return t===Al.OCTREE?(i=Math.floor(k.log2(7*n+1)/3),o=((1<<3*i)-1)/7,a=n-o):(i=Math.floor(k.log2(3*n+1)/2),o=((1<<2*i)-1)/3,a=n-o),ds.fromMortonIndex(t,e,i,a)};var nS=ds;var bli=b(W(),1);var hli=b(W(),1);function y0(){}y0.selectTiles=function(t,e){Ut.throwInstantiationError()};y0.sortChildrenByDistanceToCamera=function(t,e){return e._distanceToCamera===0&&t._distanceToCamera===0?e._centerZDepth-t._centerZDepth:e._distanceToCamera-t._distanceToCamera};y0.canTraverse=function(t){return t.children.length===0?!1:t.hasTilesetContent||t.hasImplicitContent?!t.contentExpired:t._screenSpaceError>t.tileset.memoryAdjustedScreenSpaceError};y0.selectTile=function(t,e){if(t.contentVisibility(e)===yn.OUTSIDE)return;t._wasSelectedLastFrame=!0;let{content:n,tileset:i}=t;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,t.lastStyleTime=0,i._selectedTilesToStyle.push(t)):t._selectedFrame0;if((t.hasTilesetContent||t.hasImplicitContent)&&n){let a=t.children[0];UFt(a,e),t._visible=a._visible;return}if(Dme(t,e)){t._visible=!1;return}let i=t.refine===ss.REPLACE,o=t._optimChildrenWithinParent===jp.USE_OPTIMIZATION;if(i&&o&&n&&!Ome(t,e)){++t.tileset._statistics.numberOfTilesCulledWithChildrenUnion,t._visible=!1;return}}function Dme(t,e){let{parent:n,tileset:i}=t;return!c(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==ss.ADD?!1:t.getScreenSpaceError(e,!0)<=i.memoryAdjustedScreenSpaceError}function Ome(t,e){let n=!1,i=t.children;for(let o=0;o0;){iJ.stackMaximumLength=Math.max(iJ.stackMaximumLength,s.length);let l=s.pop(),r=l.refine===ss.ADD,d=l.refine===ss.REPLACE,m=wme(l);m&&Pme(l,s,e),(r||d&&!m)&&(vme(t,l),o(l,e),Kme(l,e),l.hasRenderableContent&&!l.contentAvailable&&(n=!1)),a(l,e)}return iJ.stack.trim(iJ.stackMaximumLength),n};function wme(t){return t.children.length===0?!1:t.hasTilesetContent||t.hasImplicitContent?!t.contentExpired:(t.hasEmptyContent,!0)}function Pme(t,e,n){let{children:i}=t;for(let o=0;o0;){aJ.stackMaximumLength=Math.max(aJ.stackMaximumLength,l.length);let r=l.pop(),d=r.parent,m=!c(d)||d._refines;r._refines=i(r)?zme(r,l,e)&&m:!1;let h=!r._refines&&m;r.hasRenderableContent?r.refine===ss.ADD?(Ytt(r,e),o(r,e)):r.refine===ss.REPLACE&&(o(r,e),h&&Ytt(r,e)):(n._emptyTiles.push(r),o(r,e),h&&Ytt(r,e)),a(r,e),s(r,e)}}function qme(t,e){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:a}=Tr,s=!0,l=sJ.stack;for(l.push(t);l.length>0;){sJ.stackMaximumLength=Math.max(sJ.stackMaximumLength,l.length);let r=l.pop(),d=r.children,m=d.length,h=!r.hasRenderableContent&&n(r);if(!h&&!r.contentAvailable&&(s=!1),i(r,e),r.isVisible||(o(r,e),a(r,e)),h)for(let u=0;u0;){dJ.stackMaximumLength=Math.max(dJ.stackMaximumLength,a.length);let l=a.pop().children;for(let r=0;rn._depth+t.skipLevels)}function ihe(t,e,n){let{tileset:i,children:o}=t,{updateTile:a,loadTile:s,touchTile:l}=Tr;for(let d=0;de:t._screenSpaceError>e:!0}function ahe(t,e){let{tileset:n}=t,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:a,visitTile:s,touchTile:l}=Tr,r=rJ.stack;for(r.push(t);r.length>0;){rJ.stackMaximumLength=Math.max(rJ.stackMaximumLength,r.length);let d=r.pop();ehe(d,e);let m=d.parent,h=!c(m)||m._refines;d._refines=o(d)?ihe(d,r,e)&&h:!1;let u=!d._refines&&h;d.hasRenderableContent?d.refine===ss.ADD?(GP(d,e),a(d,e)):d.refine===ss.REPLACE&&(ohe(d,i)?(a(d,e),u&&GP(d,e)):u?(GP(d,e),a(d,e)):nhe(n,d)&&a(d,e)):(n._emptyTiles.push(d),a(d,e),u&&GP(d,e)),s(d,e),l(d,e)}}function she(t,e){let{selectTile:n,canTraverse:i}=Tr,{stack:o,ancestorStack:a}=B0,s;for(o.push(t);o.length>0||a.length>0;){if(B0.stackMaximumLength=Math.max(B0.stackMaximumLength,o.length),B0.ancestorStackMaximumLength=Math.max(B0.ancestorStackMaximumLength,a.length),a.length>0){let d=a.peek();if(d._stackLength===o.length){a.pop(),d!==s&&(d._finalResolution=!1),n(d,e);continue}}let l=o.pop();if(!c(l))continue;let r=i(l);if(l._shouldSelect)if(l.refine===ss.ADD)n(l,e);else{if(l._selectionDepth=a.length,l._selectionDepth>0&&(l.tileset.hasMixedContent=!0),s=l,!r){n(l,e);continue}a.push(l),l._stackLength=o.length}if(r){let d=l.children;for(let m=0;mVo._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=Pe.eastNorthUpToFixedFrame(u)),s._clippingPlanesOriginMatrix=L.clone(s._initialClippingPlanesOriginMatrix),s};Fs.loadJson=function(t){return te.createIfNeeded(t).fetchJson()};Fs.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Fs.prototype.loadTileset=function(t,e,n){let i=e.asset;if(!c(i))throw new Tt("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new Tt("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");c(e.extensionsRequired)&&Fs.checkSupportedExtensions(e.extensionsRequired);let o=this._statistics,a=i.tilesetVersion;c(a)&&(this._basePath+=`?v=${a}`,t=t.clone(),t.setQueryParameters({v:a}));let s=TFt(this,t,e.root,n);c(n)&&(n.children.push(s),s._depth=n._depth+1);let l=[];for(l.push(s);l.length>0;){let r=l.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&r.refine===ss.ADD;let d=r._header.children;if(c(d))for(let m=0;mU.minimumRadius){let S=gt.fromCartesian(A,U,rhe);n=p.normalize(l.positionWC,gFt),i=l.directionWC,o=l.positionCartographic.height,a=0,s=S.height*2}else{let S=L.multiplyByPoint(F,l.positionWC,mhe);if(n=p.UNIT_Z,i=L.multiplyByPointAsVector(F,l.directionWC,hhe),i=p.normalize(i,i),o=S.z,d instanceof kh){let g=ot.getColumn(G.halfAxes,2,phe),C=p.magnitude(g);a=A.z-C,s=A.z+C}else if(d instanceof E0){let g=G.radius;a=A.z-g,s=A.z+g}}}let m=t.dynamicScreenSpaceErrorHeightFalloff,h=a+(s-a)*m,u=s,R=k.clamp((o-h)/(u-h),0,1),V=1-Math.abs(p.dot(i,n));V=V*(1-R),t._dynamicScreenSpaceErrorComputedDensity=t.dynamicScreenSpaceErrorDensity*V}function uhe(t,e){if(e.hasEmptyContent)return;let{statistics:n}=t,i=e.contentExpired,o=e.requestContent();c(o)&&(o.then(a=>{!c(a)||e.isDestroyed()||t.isDestroyed()||(t._processingQueue.push(e),++n.numberOfTilesProcessing)}).catch(a=>{IFt(a,t,e)}),i&&(e.hasTilesetContent||e.hasImplicitContent?Che(t,e):(n.decrementLoadCounts(e.content),--n.numberOfTilesWithContentReady)),t._requestedTilesInFlight.push(e))}function CFt(t,e){return t._priority-e._priority}Fs.prototype.postPassesUpdate=function(t){c(this._root)&&(Zhe(this,t),Nhe(this,t),this._cache.unloadTiles(this,yFt),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Fs.prototype.prePassesUpdate=function(t){if(!c(this._root))return;Ghe(this,t);let e=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,c(e)&&e.enabled&&e.update(t);let n=this._clippingPolygons;c(n)&&n.enabled&&n.update(t),c(this._loadTimestamp)||(this._loadTimestamp=rt.clone(t.time)),this._timeSinceLoad=Math.max(rt.secondsDifference(t.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&Vhe(this,t),t.newFrame&&this._cache.reset()};function Zhe(t,e){let n=t._requestedTilesInFlight,i=0;for(let o=0;o=1;if(a._contentState!==rs.LOADING){++i;continue}else if(s){a.cancelRequests(),++i;continue}i>0&&(n[o-i]=a)}n.length-=i}function Rhe(t){let e=t._requestedTiles;e.sort(CFt);for(let n=0;n0?e.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`))}function bhe(t){let e=t._processingQueue,n=0;for(let i=0;i0&&(e[i-n]=o)}e.length-=n}var Whe=new gt,fhe=new gt,Fhe=new p;function Uhe(t,e,n){if(!t.enableCollision||!t.show)return;let i=t._addHeightCallbacks,o=e.boundingSphere;for(let a of i){if(a.invoked||e._wasSelectedLastFrame)continue;let s=a.ellipsoid,l=gt.clone(a.positionCartographic,Whe),r=gt.fromCartesian(o.center,s,fhe);c(r)&&(l.height=r.height);let d=gt.toCartesian(l,s,Fhe);p.distance(d,o.center)<=o.radius&&n.afterRender.push(()=>{c(a.callback)&&a.callback(l),a.invoked=!1})}}function Ghe(t,e){bhe(t);let n=t._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:a}=t,s=i+o,l=!1;for(let r=0;rs){l=!0;break}let d=n[r];try{d.process(t,e),d.contentReady&&(--a.numberOfTilesProcessing,t.tileLoad.raiseEvent(d))}catch(m){--a.numberOfTilesProcessing,IFt(m,t,d)}}t.totalMemoryUsageInBytes0&&Ahe(t)}function Ahe(t){t._memoryAdjustedScreenSpaceError*=1.02;let e=t._processingQueue;for(let n=0;n0&&(i+=` Points: ${t.content.pointsLength}`,o++),t.content.trianglesLength>0&&(i+=` @@ -8788,7 +8788,7 @@ Texture Memory: ${EFt(t.content.texturesByteLength)}`,i+=` Geometry Memory: ${EFt(t.content.geometryByteLength)}`,o+=2),e.debugShowUrl)if(t.hasMultipleContents){i+=` Urls:`;let s=t.content.innerContentUrls;for(let l=0;l0;t._backfaceCommands.length=0,l&&(c(t._stencilClearCommand)||(t._stencilClearCommand=new ao({stencil:0,pass:Pt.CESIUM_3D_TILE,renderState:he.fromCache({stencilMask:gn.SKIP_LOD_MASK})})),i.push(t._stencilClearCommand));let{statistics:r,tileVisible:d}=t,m=n.isRender,h=i.length;for(let u=0;u=0;--U)i[h+F+U]=i[h+U];for(let U=0;U0&&t._pointCloudEyeDomeLighting.update(e,a,t.pointCloudShading,t.boundingSphere),t.debugShowGeometricError||t.debugShowRenderingStatistics||t.debugShowMemoryUsage||t.debugShowUrl?(c(t._tileDebugLabels)||(t._tileDebugLabels=new sb),ghe(t,e)):t._tileDebugLabels=t._tileDebugLabels&&t._tileDebugLabels.destroy())}var NFt=[];function Che(t,e){let n=e,i=NFt;for(i.push(e);i.length>0;){e=i.pop();let o=e.children;for(let a=0;a{e.push(on.clone(i))});let n=t.asset.extras;if(c(n)&&c(n.cesium)&&c(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;oi.showOnScreen=i.showOnScreen||t._showCreditsOnScreen),t._credits=e}Fs.prototype.getTraversal=function(t){let{pass:e}=t;return e===ns.MOST_DETAILED_PRELOAD||e===ns.MOST_DETAILED_PICK?oJ:this.isSkippingLevelOfDetail?cJ:lJ};Fs.prototype.update=function(t){this.updateForPass(t,t.tilesetPassState)};Fs.prototype.updateForPass=function(t,e){let n=e.pass;if(n===ns.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===ns.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===ns.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=t.commandList,o=t.camera,a=t.cullingVolume;e.ready=!1;let s=ns.getPassOptions(n),l=s.ignoreCommands,r=f(e.commandList,i),d=r.length;t.commandList=r,t.camera=f(e.camera,o),t.cullingVolume=f(e.cullingVolume,a);let m=this._clippingPolygons;c(m)&&m.enabled&&m.queueCommands(t);let h=this._statisticsPerPass[n];(this.show||l)&&(this._pass=n,e.ready=Qhe(this,t,h,s)),l&&(r.length=d),t.commandList=i,t.camera=o,t.cullingVolume=a};Fs.prototype.hasExtension=function(t){return c(this._extensionsUsed)?this._extensionsUsed.indexOf(t)>-1:!1};Fs.prototype.isDestroyed=function(){return!1};Fs.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),c(this._root)){let t=NFt;for(t.push(this._root);t.length>0;){let e=t.pop();e.destroy();let n=e.children;for(let i=0;i{let a=this._addHeightCallbacks,s=a.length;for(let l=0;l{let m=Ft.distanceSquaredTo(r.contentBoundingVolume.boundingSphere,t.origin),h=Ft.distanceSquaredTo(d.contentBoundingVolume.boundingSphere,t.origin);return m-h});let l;for(let r=0;r-1;i--)Jtt(this,t[i],e,n);return At(this)};bF.prototype.getBoundingSphere=function(t,e){let n=this._tilesetHash[t.id];if(!c(n)||n.loadFail)return ve.FAILED;let i=n.tilesetPrimitive;return c(i)?i.show?(Ft.clone(i.boundingSphere,e),ve.DONE):ve.FAILED:ve.PENDING};bF.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._tilesetHash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._tileset)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._tileset)?s.set(a.id,a):(Jtt(this,a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],Jtt(this,a,l,r),s.remove(a.id)};function Jtt(t,e,n,i){let o=n[e.id];c(o)&&(c(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[e.id])}async function Mhe(t,e,n,i){e[n.id]={url:t.url,loadFail:!1};try{let o=await Pr.fromUrl(t);if(o.id=n,i.add(o),!c(e[n.id]))return;e[n.id].tilesetPrimitive=o}catch(o){console.error(o),e[n.id].loadFail=!0}}var mJ=bF;var sdi=R(W(),1);var _he=v.WHITE,Dhe=v.BLACK,Ohe=new K(2,2);function NC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=t.evenColor,this.oddColor=t.oddColor,this.repeat=t.repeat}Object.defineProperties(NC.prototype,{isConstant:{get:function(){return et.isConstant(this._evenColor)&&et.isConstant(this._oddColor)&&et.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:ft("evenColor"),oddColor:ft("oddColor"),repeat:ft("repeat")});NC.prototype.getType=function(t){return"Checkerboard"};NC.prototype.getValue=function(t,e){return c(e)||(e={}),e.lightColor=et.getValueOrClonedDefault(this._evenColor,t,_he,e.lightColor),e.darkColor=et.getValueOrClonedDefault(this._oddColor,t,Dhe,e.darkColor),e.repeat=et.getValueOrDefault(this._repeat,t,Ohe),e};NC.prototype.equals=function(t){return this===t||t instanceof NC&&et.equals(this._evenColor,t._evenColor)&&et.equals(this._oddColor,t._oddColor)&&et.equals(this._repeat,t._repeat)};var yC=NC;var hdi=R(W(),1);var Co={LEO:"Low Earth Orbit",MEO:"Medium Earth Orbit",HEO:"Highly Elliptical Orbit",GEO:"Geostationary Orbit",IGO:"Inclined Geosynchronous Orbit",EGO:"Extended Geostationary Orbit",GEOIADC:"IADC GEO Protected Region",GEOSYNC:"Geosynchronous Orbit",SUNSYNC:"Sun Synchronous Orbit",SEMISYNC:"Semi Synchronous Orbit",POLAR:"POLAR Orbit",UNKNOWN:"UNKNOWN"},Ltt=86164.0905;function Mtt(t){let e=[],n=t.properties.CAT.getValue(),i=t.properties.OMM.getValue(),o=i.SEMI_MAJOR_AXIS;if(n.PERIOD<128*60&&i.ECCENTRICITY<.25&&e.push(Co.LEO),o>36e3){let a=rt.now(),s=rt.addMinutes(a,1440,new rt),l=10,r=1/0,d=-1/0;for(let m=a;rt.lessThan(m,s);m=rt.addMinutes(m,l,new rt)){let h=t.position.getValue(m),{latitude:Z}=gt.fromCartesian(h,mt.WGS84)||{latitude:0},b=k.toDegrees(Z);r=Math.min(r,b),d=Math.max(d,b)}n.PERIOD>Ltt-60&&n.PERIOD=25&&i.INCLINATION<=180&&o>=37948&&o<=46380&&i.ECCENTRICITY<=.25&&e.push(Co.IGO),i.INCLINATION>=0&&i.INCLINATION<=25&&o>=37948&&o<=46380&&i.ECCENTRICITY<=.25&&e.push(Co.EGO),r>=-15&&d<=15&&n.PERIGEE>=35586&&n.PERIGEE<=35986&&e.push(Co.GEOIADC)}return n.PERIGEE>=2e3&&n.PERIGEE<35700?e.push(Co.MEO):n.PERIGEE>35786&&e.push(Co.HEO),i.INCLINATION>97&&i.INCLINATION<99&&e.push(Co.SUNSYNC),Math.abs(n.PERIOD-.5*Ltt)<1&&e.push(Co.SEMISYNC),i.INCLINATION>=80&&i.INCLINATION<=100&&e.push(Co.POLAR),e.length===0&&e.push(Co.UNKNOWN),e}var _tt=Mtt;var Idi=R(W(),1);var Gdi=R(W(),1);var QFt={id:void 0};function hJ(t){if(t._firing){t._refire=!0;return}if(t._suspendCount===0){let e=t._addedEntities,n=t._removedEntities,i=t._changedEntities;if(i.length!==0||e.length!==0||n.length!==0){t._firing=!0;do{t._refire=!1;let o=e.values.slice(0),a=n.values.slice(0),s=i.values.slice(0);e.removeAll(),n.removeAll(),i.removeAll(),t._collectionChanged.raiseEvent(t,o,a,s)}while(t._refire);t._firing=!1}}}function $d(t){this._owner=t,this._entities=new qe,this._addedEntities=new qe,this._removedEntities=new qe,this._changedEntities=new qe,this._suspendCount=0,this._collectionChanged=new It,this._id=Si(),this._show=!0,this._firing=!1,this._refire=!1}$d.prototype.suspendEvents=function(){this._suspendCount++};$d.prototype.resumeEvents=function(){this._suspendCount--,hJ(this)};Object.defineProperties($d.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(t){if(t===this._show)return;this.suspendEvents();let e,n=[],i=this._entities.values,o=i.length;for(e=0;e-1;r--)s=l[r],YFt(t,Z,b,s);for(a=n-1;a>=0;a--)for(d=e[a],d.collectionChanged.addEventListener(ll.prototype._onCollectionChanged,t),l=d.values,b=d.id,r=l.length-1;r>-1;r--){s=l[r],kFt(t,Z,b,s);let F=h.getById(s.id);c(F)||(F=m.getById(s.id),c(F)?Dtt(F):(TP.id=s.id,F=new qa(TP)),h.add(F)),F.merge(s)}t._collectionsCopy=e.slice(0),m.suspendEvents(),m.removeAll();let u=h.values;for(a=0;a=0;l--)r=i[l].getById(F),c(r)&&(c(d)||(d=a.getById(F),Dtt(d)),d.merge(r));c(d)||a.removeById(F),d=void 0}let b=e.length;for(s=0;s=0;l--)r=i[l].getById(F),c(r)&&(c(d)||(d=a.getById(F),c(d)?Dtt(d):(TP.id=F,d=new qa(TP),a.add(d))),d.merge(r));d=void 0}a.resumeEvents()};ll.prototype._onDefinitionChanged=function(t,e,n,i){let o=this._collections,a=this._composite,s=o.length,l=t.id,r=a.getById(l),d=r[e],m=!c(d),h=!0;for(let Z=s-1;Z>=0;Z--){let b=o[Z].getById(t.id);if(c(b)){let u=b[e];if(c(u)){if(h)if(h=!1,c(u.merge)&&c(u.clone))d=u.clone(d);else{d=u;break}d.merge(u)}}}m&&r.propertyNames.indexOf(e)===-1&&r.addProperty(e),r[e]=d};var Ott=ll;var nci=R(W(),1);var zdi=R(W(),1);var ydi=R(W(),1);function Htt(){this._removalFunctions=[]}Htt.prototype.add=function(t,e,n){let i=t.addEventListener(e,n);this._removalFunctions.push(i);let o=this;return function(){i();let a=o._removalFunctions;a.splice(a.indexOf(i),1)}};Htt.prototype.removeAll=function(){let t=this._removalFunctions;for(let e=0,n=t.length;e0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};dl.prototype.findIntervalContainingDate=function(t){let e=this.indexOf(t);return e>=0?this._intervals[e]:void 0};dl.prototype.findDataForIntervalContainingDate=function(t){let e=this.indexOf(t);return e>=0?this._intervals[e].data:void 0};dl.prototype.contains=function(t){return this.indexOf(t)>=0};var wtt=new ai;dl.prototype.indexOf=function(t){let e=this._intervals;wtt.start=t,wtt.stop=t;let n=Ja(e,wtt,vtt);return n>=0?e[n].isStartIncluded?n:n>0&&e[n-1].stop.equals(t)&&e[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-10&&t.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(t.start)?--i:i0&&(o=rt.compare(n[i-1].stop,t.start),(o>0||o===0&&(n[i-1].isStopIncluded||t.isStartIncluded))&&((c(e)?e(n[i-1].data,t.data):n[i-1].data===t.data)?(rt.greaterThan(t.stop,n[i-1].stop)?t=new ai({start:n[i-1].start,stop:t.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:t.isStopIncluded,data:t.data}):t=new ai({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||t.stop.equals(n[i-1].stop)&&t.isStopIncluded,data:t.data}),n.splice(i-1,1),--i):(o=rt.compare(n[i-1].stop,t.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!t.isStopIncluded)&&n.splice(i,0,new ai({start:t.stop,stop:n[i-1].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new ai({start:n[i-1].start,stop:t.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!t.isStartIncluded,data:n[i-1].data}))));i0||o===0&&(t.isStopIncluded||n[i].isStartIncluded));)if(c(e)?e(n[i].data,t.data):n[i].data===t.data)t=new ai({start:t.start,stop:rt.greaterThan(n[i].stop,t.stop)?n[i].stop:t.stop,isStartIncluded:t.isStartIncluded,isStopIncluded:rt.greaterThan(n[i].stop,t.stop)?n[i].isStopIncluded:t.isStopIncluded,data:t.data}),n.splice(i,1);else if(n[i]=new ai({start:t.stop,stop:n[i].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,t),this._changedEvent.raiseEvent(this)};dl.prototype.removeInterval=function(t){if(t.isEmpty)return!1;let e=this._intervals,n=Ja(e,t,vtt);n<0&&(n=~n);let i=!1;for(n>0&&(rt.greaterThan(e[n-1].stop,t.start)||e[n-1].stop.equals(t.start)&&e[n-1].isStopIncluded&&t.isStartIncluded)&&(i=!0,(rt.greaterThan(e[n-1].stop,t.stop)||e[n-1].isStopIncluded&&!t.isStopIncluded&&e[n-1].stop.equals(t.stop))&&e.splice(n,0,new ai({start:t.stop,stop:e[n-1].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:e[n-1].isStopIncluded,data:e[n-1].data})),e[n-1]=new ai({start:e[n-1].start,stop:t.start,isStartIncluded:e[n-1].isStartIncluded,isStopIncluded:!t.isStartIncluded,data:e[n-1].data})),n=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(a+=Math.floor(o/60),o=o%60),a>=60&&(s+=Math.floor(a/60),a=a%60),s>=24&&(l+=Math.floor(s/24),s=s%24),pJ[2]=Pu(d)?29:28;l>pJ[r]||r>=13;)l>pJ[r]&&(l-=pJ[r],++r),r>=13&&(--r,d+=Math.floor(r/12),r=r%12,++r),pJ[2]=Pu(d)?29:28;return tc.millisecond=i,tc.second=o,tc.minute=a,tc.hour=s,tc.day=l,tc.month=r,tc.year=d,rt.fromGregorianDate(tc,n)}var Hhe=new rt,whe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function XFt(t,e){if(!c(t)||t.length===0)return!1;if(e.year=0,e.month=0,e.day=0,e.hour=0,e.minute=0,e.second=0,e.millisecond=0,t[0]==="P"){let n=t.match(whe);if(!c(n))return!1;if(c(n[1])&&(e.year=Number(n[1].replace(",","."))),c(n[2])&&(e.month=Number(n[2].replace(",","."))),c(n[3])&&(e.day=Number(n[3].replace(",","."))*7),c(n[4])&&(e.day+=Number(n[4].replace(",","."))),c(n[5])&&(e.hour=Number(n[5].replace(",","."))),c(n[6])&&(e.minute=Number(n[6].replace(",","."))),c(n[7])){let i=Number(n[7].replace(",","."));e.second=Math.floor(i),e.millisecond=i%1*1e3}}else t[t.length-1]!=="Z"&&(t+="Z"),rt.toGregorianDate(rt.fromIso8601(t,Hhe),e);return e.year||e.month||e.day||e.hour||e.minute||e.second||e.millisecond}var uJ=new WR;dl.fromIso8601=function(t,e){let n=t.iso8601.split("/"),i=rt.fromIso8601(n[0]),o=rt.fromIso8601(n[1]),a=[];if(!XFt(n[2],uJ))a.push(i,o);else{let s=rt.clone(i);for(a.push(s);rt.compare(s,o)<0;)s=Ptt(s,uJ),rt.compare(o,s)<=0&&rt.clone(o,s),a.push(s)}return dl.fromJulianDateArray({julianDates:a,isStartIncluded:t.isStartIncluded,isStopIncluded:t.isStopIncluded,leadingInterval:t.leadingInterval,trailingInterval:t.trailingInterval,dataCallback:t.dataCallback},e)};dl.fromIso8601DateArray=function(t,e){return dl.fromJulianDateArray({julianDates:t.iso8601Dates.map(function(n){return rt.fromIso8601(n)}),isStartIncluded:t.isStartIncluded,isStopIncluded:t.isStopIncluded,leadingInterval:t.leadingInterval,trailingInterval:t.trailingInterval,dataCallback:t.dataCallback},e)};dl.fromIso8601DurationArray=function(t,e){let n=t.epoch,i=t.iso8601Durations,o=f(t.relativeToPrevious,!1),a=[],s,l,r=i.length;for(let d=0;d=0?-l:l}var spe=new p(-1,0,0),oT=new L,lpe=new L,jtt=new ot,rpe=ot.IDENTITY.clone(),dpe=new p,cpe=new Rt,JFt=new p;function Q0(t,e,n,i,o,a,s,l){let r=dpe,d=cpe;oT=Pe.eastNorthUpToFixedFrame(t,o,oT),r=L.multiplyByPointAsVector(oT,spe,r),r=p.normalize(r,r);let m=ape(r,e,t,o);jtt=ot.fromRotationZ(m,jtt),JFt.z=a,oT=L.multiplyTransformation(oT,L.fromRotationTranslation(jtt,JFt,lpe),oT);let h=rpe;h[0]=s;for(let Z=0;Z0){let F=d?2:1;for(let U=0;U=0};var ppe=new p,upe=new p;ZJ.computePositions=function(t,e,n,i,o){let a=i._ellipsoid,s=ope(t,a),l=i._granularity,r=i._cornerType,d=o?hpe(e,n):LFt(e,n),m=o?LFt(e,n):void 0,h=n.height/2,Z=n.width/2,b=t.length,u=[],F=o?[]:void 0,U=Khe,G=zhe,A=jhe,T=qhe,g=$he,C=tpe,y=epe,Y=npe,Q=ipe,J=t[0],M=t[1];T=a.geodeticSurfaceNormal(J,T),U=p.subtract(M,J,U),U=p.normalize(U,U),Y=p.cross(T,U,Y),Y=p.normalize(Y,Y);let V=s[0],E=s[1];o&&(F=Q0(J,Y,m,F,a,V+h,1,1)),Q=p.clone(J,Q),J=M,G=p.negate(U,G);let I,B;for(let P=1;PMt;Z--)kt=k.PI_OVER_TWO-Z*Nt,st[Wt++]=1-Et*(1+Math.cos(kt)),st[Wt++]=.5*(1+Math.sin(kt));for(Z=Mt;Z>0;Z--)kt=k.PI_OVER_TWO-Nt*Z,st[Wt++]=1-Qt*(1+Math.cos(kt)),st[Wt++]=.5*(1+Math.sin(kt));for(Z=m-U;Z>0;Z--)st[Wt++]=Z*Qt,st[Wt++]=1;for(Z=1;Z0;Z--)st[Wt++]=(Z-1)*Qt,st[Wt++]=1}r.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:st})}return e.normal&&(r.normal=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:y.normals})),e.tangent&&(r.tangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:y.tangents})),e.bitangent&&(r.bitangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:y.bitangents})),{attributes:r,indices:w}}function gpe(t,e){if(!e.normal&&!e.tangent&&!e.bitangent&&!e.st)return t;let n=t.position.values,i,o;(e.normal||e.bitangent)&&(i=t.normal.values,o=t.bitangent.values);let a=t.position.values.length/18,s=a*3,l=a*2,r=s*2,d;if(e.normal||e.bitangent||e.tangent){let m=e.normal?new Float32Array(s*6):void 0,h=e.tangent?new Float32Array(s*6):void 0,Z=e.bitangent?new Float32Array(s*6):void 0,b=eUt,u=nUt,F=NP,U=yP,G=Spe,A=iUt,T=r;for(d=0;d-e?(o=Qpe,o.x=this._cameraPosition.x/(n.radii.x+e),o.y=this._cameraPosition.y/(n.radii.y+e),o.z=this._cameraPosition.z/(n.radii.z+e),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),iet(t,o,i)};mb.prototype.computeHorizonCullingPoint=function(t,e,n){return fUt(this._ellipsoid,t,e,n)};var RUt=mt.clone(mt.UNIT_SPHERE);mb.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(t,e,n,i){let o=WUt(this._ellipsoid,n,RUt);return fUt(o,t,e,i)};mb.prototype.computeHorizonCullingPointFromVertices=function(t,e,n,i,o){return FUt(this._ellipsoid,t,e,n,i,o)};mb.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(t,e,n,i,o,a){let s=WUt(this._ellipsoid,o,RUt);return FUt(s,t,e,n,i,a)};var kpe=[];mb.prototype.computeHorizonCullingPointFromRectangle=function(t,e,n){let i=Gt.subsample(t,e,0,kpe),o=Ft.fromPoints(i);if(!(p.magnitude(o.center)<.1*e.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var Ype=new p;function WUt(t,e,n){if(c(e)&&e<0&&t.minimumRadius>-e){let i=p.fromElements(t.radii.x+e,t.radii.y+e,t.radii.z+e,Ype);t=mt.fromCartesian3(i,n)}return t}function fUt(t,e,n,i){c(i)||(i=new p);let o=AUt(t,e),a=0;for(let s=0,l=n.length;s0:s>o&&s*s/p.magnitudeSquared(a)>o)}var xpe=new p,Xpe=new p;function UUt(t,e,n){let i=t.transformPositionToScaledSpace(e,xpe),o=p.magnitudeSquared(i),a=Math.sqrt(o),s=p.divideByScalar(i,a,Xpe);o=Math.max(1,o),a=Math.max(1,a);let l=p.dot(s,n),r=p.magnitude(p.cross(s,n,s)),d=1/a,m=Math.sqrt(o-1)*d;return 1/(l*d-r*m)}function GUt(t,e,n){if(!(e<=0||e===1/0||e!==e))return p.multiplyByScalar(t,e,n)}var net=new p;function AUt(t,e){return p.equals(e,p.ZERO)?e:(t.transformPositionToScaledSpace(e,net),p.normalize(net,net))}var BZ=mb;var Nhi=R(W(),1);function hl(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.translucencyByDistance,i=t.scaleByDistance,o=t.distanceDisplayCondition;c(n)&&(n=ln.clone(n)),c(i)&&(i=ln.clone(i)),c(o)&&(o=Wn.clone(o)),this._show=f(t.show,!0),this._position=p.clone(f(t.position,p.ZERO)),this._actualPosition=p.clone(this._position),this._color=v.clone(f(t.color,v.WHITE)),this._outlineColor=v.clone(f(t.outlineColor,v.TRANSPARENT)),this._outlineWidth=f(t.outlineWidth,0),this._pixelSize=f(t.pixelSize,10),this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=f(t.disableDepthTestDistance,0),this._id=t.id,this._collection=f(t.collection,e),this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=e,this._dirty=!1,this._index=-1}var TUt=hl.SHOW_INDEX=0,EUt=hl.POSITION_INDEX=1,Jpe=hl.COLOR_INDEX=2,Lpe=hl.OUTLINE_COLOR_INDEX=3,Mpe=hl.OUTLINE_WIDTH_INDEX=4,_pe=hl.PIXEL_SIZE_INDEX=5,Dpe=hl.SCALE_BY_DISTANCE_INDEX=6,Ope=hl.TRANSLUCENCY_BY_DISTANCE_INDEX=7,Hpe=hl.DISTANCE_DISPLAY_CONDITION_INDEX=8,wpe=hl.DISABLE_DEPTH_DISTANCE_INDEX=9;hl.NUMBER_OF_PROPERTIES=10;function su(t,e){let n=t._pointPrimitiveCollection;c(n)&&(n._updatePointPrimitive(t,e),t._dirty=!0)}Object.defineProperties(hl.prototype,{show:{get:function(){return this._show},set:function(t){this._show!==t&&(this._show=t,su(this,TUt))}},position:{get:function(){return this._position},set:function(t){let e=this._position;p.equals(e,t)||(p.clone(t,e),p.clone(t,this._actualPosition),su(this,EUt))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(t){let e=this._scaleByDistance;ln.equals(e,t)||(this._scaleByDistance=ln.clone(t,e),su(this,Dpe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(t){let e=this._translucencyByDistance;ln.equals(e,t)||(this._translucencyByDistance=ln.clone(t,e),su(this,Ope))}},pixelSize:{get:function(){return this._pixelSize},set:function(t){this._pixelSize!==t&&(this._pixelSize=t,su(this,_pe))}},color:{get:function(){return this._color},set:function(t){let e=this._color;v.equals(e,t)||(v.clone(t,e),su(this,Jpe))}},outlineColor:{get:function(){return this._outlineColor},set:function(t){let e=this._outlineColor;v.equals(e,t)||(v.clone(t,e),su(this,Lpe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(t){this._outlineWidth!==t&&(this._outlineWidth=t,su(this,Mpe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){Wn.equals(this._distanceDisplayCondition,t)||(this._distanceDisplayCondition=Wn.clone(t,this._distanceDisplayCondition),su(this,Hpe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(t){this._disableDepthTestDistance!==t&&(this._disableDepthTestDistance=t,su(this,wpe))}},id:{get:function(){return this._id},set:function(t){this._id=t,c(this._pickId)&&(this._pickId.object.id=t)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(t){this._clusterShow!==t&&(this._clusterShow=t,su(this,TUt))}}});hl.prototype.getPickId=function(t){return c(this._pickId)||(this._pickId=t.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};hl.prototype._getActualPosition=function(){return this._actualPosition};hl.prototype._setActualPosition=function(t){p.clone(t,this._actualPosition),su(this,EUt)};var SUt=new Rt;hl._computeActualPosition=function(t,e,n){return e.mode===ut.SCENE3D?t:(L.multiplyByPoint(n,t,SUt),qo.computeActualWgs84Position(e,SUt))};var gUt=new Rt;hl._computeScreenSpacePosition=function(t,e,n,i){let o=L.multiplyByVector(t,Rt.fromElements(e.x,e.y,e.z,1,gUt),gUt);return qo.wgs84ToWindowCoordinates(n,o,i)};hl.prototype.computeScreenSpacePosition=function(t,e){let n=this._pointPrimitiveCollection;c(e)||(e=new K);let i=n.modelMatrix,o=hl._computeScreenSpacePosition(i,this._actualPosition,t,e);if(c(o))return o.y=t.canvas.clientHeight-o.y,o};hl.getScreenSpaceBoundingBox=function(t,e,n){let i=t.pixelSize,o=i*.5,a=e.x-o,s=e.y-o,l=i,r=i;return c(n)||(n=new Fe),n.x=a,n.y=s,n.width=l,n.height=r,n};hl.prototype.equals=function(t){return this===t||c(t)&&this._id===t._id&&p.equals(this._position,t._position)&&v.equals(this._color,t._color)&&this._pixelSize===t._pixelSize&&this._outlineWidth===t._outlineWidth&&this._show===t._show&&v.equals(this._outlineColor,t._outlineColor)&&ln.equals(this._scaleByDistance,t._scaleByDistance)&&ln.equals(this._translucencyByDistance,t._translucencyByDistance)&&Wn.equals(this._distanceDisplayCondition,t._distanceDisplayCondition)&&this._disableDepthTestDistance===t._disableDepthTestDistance};hl.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var Er=hl;var rpi=R(W(),1);var Bhi=R(W(),1),GF=`in vec4 v_color; +Url: ${t._contentHeader.uri}`,o++;let a={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return e._tileDebugLabels.add(a)}function ghe(t,e){let n=t._selectedTiles,i=n.length,o=t._emptyTiles,a=o.length;if(t._tileDebugLabels.removeAll(),t.debugPickedTileLabelOnly){if(c(t.debugPickedTile)){let s=c(t.debugPickPosition)?t.debugPickPosition:xtt(t.debugPickedTile),l=Xtt(t.debugPickedTile,t,s);l.pixelOffset=new K(15,-15)}}else{for(let s=0;s0;t._backfaceCommands.length=0,l&&(c(t._stencilClearCommand)||(t._stencilClearCommand=new ao({stencil:0,pass:Pt.CESIUM_3D_TILE,renderState:he.fromCache({stencilMask:gn.SKIP_LOD_MASK})})),i.push(t._stencilClearCommand));let{statistics:r,tileVisible:d}=t,m=n.isRender,h=i.length;for(let V=0;V=0;--U)i[h+F+U]=i[h+U];for(let U=0;U0&&t._pointCloudEyeDomeLighting.update(e,a,t.pointCloudShading,t.boundingSphere),t.debugShowGeometricError||t.debugShowRenderingStatistics||t.debugShowMemoryUsage||t.debugShowUrl?(c(t._tileDebugLabels)||(t._tileDebugLabels=new sR),ghe(t,e)):t._tileDebugLabels=t._tileDebugLabels&&t._tileDebugLabels.destroy())}var NFt=[];function Che(t,e){let n=e,i=NFt;for(i.push(e);i.length>0;){e=i.pop();let o=e.children;for(let a=0;a{e.push(on.clone(i))});let n=t.asset.extras;if(c(n)&&c(n.cesium)&&c(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;oi.showOnScreen=i.showOnScreen||t._showCreditsOnScreen),t._credits=e}Fs.prototype.getTraversal=function(t){let{pass:e}=t;return e===ns.MOST_DETAILED_PRELOAD||e===ns.MOST_DETAILED_PICK?oJ:this.isSkippingLevelOfDetail?cJ:lJ};Fs.prototype.update=function(t){this.updateForPass(t,t.tilesetPassState)};Fs.prototype.updateForPass=function(t,e){let n=e.pass;if(n===ns.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===ns.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===ns.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=t.commandList,o=t.camera,a=t.cullingVolume;e.ready=!1;let s=ns.getPassOptions(n),l=s.ignoreCommands,r=f(e.commandList,i),d=r.length;t.commandList=r,t.camera=f(e.camera,o),t.cullingVolume=f(e.cullingVolume,a);let m=this._clippingPolygons;c(m)&&m.enabled&&m.queueCommands(t);let h=this._statisticsPerPass[n];(this.show||l)&&(this._pass=n,e.ready=Qhe(this,t,h,s)),l&&(r.length=d),t.commandList=i,t.camera=o,t.cullingVolume=a};Fs.prototype.hasExtension=function(t){return c(this._extensionsUsed)?this._extensionsUsed.indexOf(t)>-1:!1};Fs.prototype.isDestroyed=function(){return!1};Fs.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),c(this._root)){let t=NFt;for(t.push(this._root);t.length>0;){let e=t.pop();e.destroy();let n=e.children;for(let i=0;i{let a=this._addHeightCallbacks,s=a.length;for(let l=0;l{let m=Ft.distanceSquaredTo(r.contentBoundingVolume.boundingSphere,t.origin),h=Ft.distanceSquaredTo(d.contentBoundingVolume.boundingSphere,t.origin);return m-h});let l;for(let r=0;r-1;i--)Jtt(this,t[i],e,n);return At(this)};RF.prototype.getBoundingSphere=function(t,e){let n=this._tilesetHash[t.id];if(!c(n)||n.loadFail)return ve.FAILED;let i=n.tilesetPrimitive;return c(i)?i.show?(Ft.clone(i.boundingSphere,e),ve.DONE):ve.FAILED:ve.PENDING};RF.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._tilesetHash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._tileset)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._tileset)?s.set(a.id,a):(Jtt(this,a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],Jtt(this,a,l,r),s.remove(a.id)};function Jtt(t,e,n,i){let o=n[e.id];c(o)&&(c(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[e.id])}async function Mhe(t,e,n,i){e[n.id]={url:t.url,loadFail:!1};try{let o=await Pr.fromUrl(t);if(o.id=n,i.add(o),!c(e[n.id]))return;e[n.id].tilesetPrimitive=o}catch(o){console.error(o),e[n.id].loadFail=!0}}var mJ=RF;var sdi=b(W(),1);var _he=v.WHITE,Dhe=v.BLACK,Ohe=new K(2,2);function NC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=t.evenColor,this.oddColor=t.oddColor,this.repeat=t.repeat}Object.defineProperties(NC.prototype,{isConstant:{get:function(){return et.isConstant(this._evenColor)&&et.isConstant(this._oddColor)&&et.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:ft("evenColor"),oddColor:ft("oddColor"),repeat:ft("repeat")});NC.prototype.getType=function(t){return"Checkerboard"};NC.prototype.getValue=function(t,e){return c(e)||(e={}),e.lightColor=et.getValueOrClonedDefault(this._evenColor,t,_he,e.lightColor),e.darkColor=et.getValueOrClonedDefault(this._oddColor,t,Dhe,e.darkColor),e.repeat=et.getValueOrDefault(this._repeat,t,Ohe),e};NC.prototype.equals=function(t){return this===t||t instanceof NC&&et.equals(this._evenColor,t._evenColor)&&et.equals(this._oddColor,t._oddColor)&&et.equals(this._repeat,t._repeat)};var yC=NC;var hdi=b(W(),1);var Co={LEO:"Low Earth Orbit",MEO:"Medium Earth Orbit",HEO:"Highly Elliptical Orbit",GEO:"Geostationary Orbit",IGO:"Inclined Geosynchronous Orbit",EGO:"Extended Geostationary Orbit",GEOIADC:"IADC GEO Protected Region",GEOSYNC:"Geosynchronous Orbit",SUNSYNC:"Sun Synchronous Orbit",SEMISYNC:"Semi Synchronous Orbit",POLAR:"POLAR Orbit",UNKNOWN:"UNKNOWN"},Ltt=86164.0905;function Mtt(t){let e=[],n=t.properties.CAT.getValue(),i=t.properties.OMM.getValue(),o=i.SEMI_MAJOR_AXIS;if(n.PERIOD<128*60&&i.ECCENTRICITY<.25&&e.push(Co.LEO),o>36e3){let a=rt.now(),s=rt.addMinutes(a,1440,new rt),l=10,r=1/0,d=-1/0;for(let m=a;rt.lessThan(m,s);m=rt.addMinutes(m,l,new rt)){let h=t.position.getValue(m),{latitude:u}=gt.fromCartesian(h,mt.WGS84)||{latitude:0},R=k.toDegrees(u);r=Math.min(r,R),d=Math.max(d,R)}n.PERIOD>Ltt-60&&n.PERIOD=25&&i.INCLINATION<=180&&o>=37948&&o<=46380&&i.ECCENTRICITY<=.25&&e.push(Co.IGO),i.INCLINATION>=0&&i.INCLINATION<=25&&o>=37948&&o<=46380&&i.ECCENTRICITY<=.25&&e.push(Co.EGO),r>=-15&&d<=15&&n.PERIGEE>=35586&&n.PERIGEE<=35986&&e.push(Co.GEOIADC)}return n.PERIGEE>=2e3&&n.PERIGEE<35700?e.push(Co.MEO):n.PERIGEE>35786&&e.push(Co.HEO),i.INCLINATION>97&&i.INCLINATION<99&&e.push(Co.SUNSYNC),Math.abs(n.PERIOD-.5*Ltt)<1&&e.push(Co.SEMISYNC),i.INCLINATION>=80&&i.INCLINATION<=100&&e.push(Co.POLAR),e.length===0&&e.push(Co.UNKNOWN),e}var _tt=Mtt;var Idi=b(W(),1);var Gdi=b(W(),1);var QFt={id:void 0};function hJ(t){if(t._firing){t._refire=!0;return}if(t._suspendCount===0){let e=t._addedEntities,n=t._removedEntities,i=t._changedEntities;if(i.length!==0||e.length!==0||n.length!==0){t._firing=!0;do{t._refire=!1;let o=e.values.slice(0),a=n.values.slice(0),s=i.values.slice(0);e.removeAll(),n.removeAll(),i.removeAll(),t._collectionChanged.raiseEvent(t,o,a,s)}while(t._refire);t._firing=!1}}}function $d(t){this._owner=t,this._entities=new qe,this._addedEntities=new qe,this._removedEntities=new qe,this._changedEntities=new qe,this._suspendCount=0,this._collectionChanged=new It,this._id=Ti(),this._show=!0,this._firing=!1,this._refire=!1}$d.prototype.suspendEvents=function(){this._suspendCount++};$d.prototype.resumeEvents=function(){this._suspendCount--,hJ(this)};Object.defineProperties($d.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(t){if(t===this._show)return;this.suspendEvents();let e,n=[],i=this._entities.values,o=i.length;for(e=0;e-1;r--)s=l[r],YFt(t,u,R,s);for(a=n-1;a>=0;a--)for(d=e[a],d.collectionChanged.addEventListener(ll.prototype._onCollectionChanged,t),l=d.values,R=d.id,r=l.length-1;r>-1;r--){s=l[r],kFt(t,u,R,s);let F=h.getById(s.id);c(F)||(F=m.getById(s.id),c(F)?Dtt(F):(SP.id=s.id,F=new qa(SP)),h.add(F)),F.merge(s)}t._collectionsCopy=e.slice(0),m.suspendEvents(),m.removeAll();let V=h.values;for(a=0;a=0;l--)r=i[l].getById(F),c(r)&&(c(d)||(d=a.getById(F),Dtt(d)),d.merge(r));c(d)||a.removeById(F),d=void 0}let R=e.length;for(s=0;s=0;l--)r=i[l].getById(F),c(r)&&(c(d)||(d=a.getById(F),c(d)?Dtt(d):(SP.id=F,d=new qa(SP),a.add(d))),d.merge(r));d=void 0}a.resumeEvents()};ll.prototype._onDefinitionChanged=function(t,e,n,i){let o=this._collections,a=this._composite,s=o.length,l=t.id,r=a.getById(l),d=r[e],m=!c(d),h=!0;for(let u=s-1;u>=0;u--){let R=o[u].getById(t.id);if(c(R)){let V=R[e];if(c(V)){if(h)if(h=!1,c(V.merge)&&c(V.clone))d=V.clone(d);else{d=V;break}d.merge(V)}}}m&&r.propertyNames.indexOf(e)===-1&&r.addProperty(e),r[e]=d};var Ott=ll;var nci=b(W(),1);var zdi=b(W(),1);var ydi=b(W(),1);function Htt(){this._removalFunctions=[]}Htt.prototype.add=function(t,e,n){let i=t.addEventListener(e,n);this._removalFunctions.push(i);let o=this;return function(){i();let a=o._removalFunctions;a.splice(a.indexOf(i),1)}};Htt.prototype.removeAll=function(){let t=this._removalFunctions;for(let e=0,n=t.length;e0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};dl.prototype.findIntervalContainingDate=function(t){let e=this.indexOf(t);return e>=0?this._intervals[e]:void 0};dl.prototype.findDataForIntervalContainingDate=function(t){let e=this.indexOf(t);return e>=0?this._intervals[e].data:void 0};dl.prototype.contains=function(t){return this.indexOf(t)>=0};var wtt=new ai;dl.prototype.indexOf=function(t){let e=this._intervals;wtt.start=t,wtt.stop=t;let n=Ja(e,wtt,vtt);return n>=0?e[n].isStartIncluded?n:n>0&&e[n-1].stop.equals(t)&&e[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-10&&t.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(t.start)?--i:i0&&(o=rt.compare(n[i-1].stop,t.start),(o>0||o===0&&(n[i-1].isStopIncluded||t.isStartIncluded))&&((c(e)?e(n[i-1].data,t.data):n[i-1].data===t.data)?(rt.greaterThan(t.stop,n[i-1].stop)?t=new ai({start:n[i-1].start,stop:t.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:t.isStopIncluded,data:t.data}):t=new ai({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||t.stop.equals(n[i-1].stop)&&t.isStopIncluded,data:t.data}),n.splice(i-1,1),--i):(o=rt.compare(n[i-1].stop,t.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!t.isStopIncluded)&&n.splice(i,0,new ai({start:t.stop,stop:n[i-1].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new ai({start:n[i-1].start,stop:t.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!t.isStartIncluded,data:n[i-1].data}))));i0||o===0&&(t.isStopIncluded||n[i].isStartIncluded));)if(c(e)?e(n[i].data,t.data):n[i].data===t.data)t=new ai({start:t.start,stop:rt.greaterThan(n[i].stop,t.stop)?n[i].stop:t.stop,isStartIncluded:t.isStartIncluded,isStopIncluded:rt.greaterThan(n[i].stop,t.stop)?n[i].isStopIncluded:t.isStopIncluded,data:t.data}),n.splice(i,1);else if(n[i]=new ai({start:t.stop,stop:n[i].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,t),this._changedEvent.raiseEvent(this)};dl.prototype.removeInterval=function(t){if(t.isEmpty)return!1;let e=this._intervals,n=Ja(e,t,vtt);n<0&&(n=~n);let i=!1;for(n>0&&(rt.greaterThan(e[n-1].stop,t.start)||e[n-1].stop.equals(t.start)&&e[n-1].isStopIncluded&&t.isStartIncluded)&&(i=!0,(rt.greaterThan(e[n-1].stop,t.stop)||e[n-1].isStopIncluded&&!t.isStopIncluded&&e[n-1].stop.equals(t.stop))&&e.splice(n,0,new ai({start:t.stop,stop:e[n-1].stop,isStartIncluded:!t.isStopIncluded,isStopIncluded:e[n-1].isStopIncluded,data:e[n-1].data})),e[n-1]=new ai({start:e[n-1].start,stop:t.start,isStartIncluded:e[n-1].isStartIncluded,isStopIncluded:!t.isStartIncluded,data:e[n-1].data})),n=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(a+=Math.floor(o/60),o=o%60),a>=60&&(s+=Math.floor(a/60),a=a%60),s>=24&&(l+=Math.floor(s/24),s=s%24),pJ[2]=PV(d)?29:28;l>pJ[r]||r>=13;)l>pJ[r]&&(l-=pJ[r],++r),r>=13&&(--r,d+=Math.floor(r/12),r=r%12,++r),pJ[2]=PV(d)?29:28;return tc.millisecond=i,tc.second=o,tc.minute=a,tc.hour=s,tc.day=l,tc.month=r,tc.year=d,rt.fromGregorianDate(tc,n)}var Hhe=new rt,whe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function XFt(t,e){if(!c(t)||t.length===0)return!1;if(e.year=0,e.month=0,e.day=0,e.hour=0,e.minute=0,e.second=0,e.millisecond=0,t[0]==="P"){let n=t.match(whe);if(!c(n))return!1;if(c(n[1])&&(e.year=Number(n[1].replace(",","."))),c(n[2])&&(e.month=Number(n[2].replace(",","."))),c(n[3])&&(e.day=Number(n[3].replace(",","."))*7),c(n[4])&&(e.day+=Number(n[4].replace(",","."))),c(n[5])&&(e.hour=Number(n[5].replace(",","."))),c(n[6])&&(e.minute=Number(n[6].replace(",","."))),c(n[7])){let i=Number(n[7].replace(",","."));e.second=Math.floor(i),e.millisecond=i%1*1e3}}else t[t.length-1]!=="Z"&&(t+="Z"),rt.toGregorianDate(rt.fromIso8601(t,Hhe),e);return e.year||e.month||e.day||e.hour||e.minute||e.second||e.millisecond}var VJ=new Wb;dl.fromIso8601=function(t,e){let n=t.iso8601.split("/"),i=rt.fromIso8601(n[0]),o=rt.fromIso8601(n[1]),a=[];if(!XFt(n[2],VJ))a.push(i,o);else{let s=rt.clone(i);for(a.push(s);rt.compare(s,o)<0;)s=Ptt(s,VJ),rt.compare(o,s)<=0&&rt.clone(o,s),a.push(s)}return dl.fromJulianDateArray({julianDates:a,isStartIncluded:t.isStartIncluded,isStopIncluded:t.isStopIncluded,leadingInterval:t.leadingInterval,trailingInterval:t.trailingInterval,dataCallback:t.dataCallback},e)};dl.fromIso8601DateArray=function(t,e){return dl.fromJulianDateArray({julianDates:t.iso8601Dates.map(function(n){return rt.fromIso8601(n)}),isStartIncluded:t.isStartIncluded,isStopIncluded:t.isStopIncluded,leadingInterval:t.leadingInterval,trailingInterval:t.trailingInterval,dataCallback:t.dataCallback},e)};dl.fromIso8601DurationArray=function(t,e){let n=t.epoch,i=t.iso8601Durations,o=f(t.relativeToPrevious,!1),a=[],s,l,r=i.length;for(let d=0;d=0?-l:l}var spe=new p(-1,0,0),oS=new L,lpe=new L,jtt=new ot,rpe=ot.IDENTITY.clone(),dpe=new p,cpe=new bt,JFt=new p;function Q0(t,e,n,i,o,a,s,l){let r=dpe,d=cpe;oS=Pe.eastNorthUpToFixedFrame(t,o,oS),r=L.multiplyByPointAsVector(oS,spe,r),r=p.normalize(r,r);let m=ape(r,e,t,o);jtt=ot.fromRotationZ(m,jtt),JFt.z=a,oS=L.multiplyTransformation(oS,L.fromRotationTranslation(jtt,JFt,lpe),oS);let h=rpe;h[0]=s;for(let u=0;u0){let F=d?2:1;for(let U=0;U=0};var ppe=new p,Vpe=new p;uJ.computePositions=function(t,e,n,i,o){let a=i._ellipsoid,s=ope(t,a),l=i._granularity,r=i._cornerType,d=o?hpe(e,n):LFt(e,n),m=o?LFt(e,n):void 0,h=n.height/2,u=n.width/2,R=t.length,V=[],F=o?[]:void 0,U=Khe,G=zhe,A=jhe,S=qhe,g=$he,C=tpe,y=epe,Y=npe,Q=ipe,J=t[0],M=t[1];S=a.geodeticSurfaceNormal(J,S),U=p.subtract(M,J,U),U=p.normalize(U,U),Y=p.cross(S,U,Y),Y=p.normalize(Y,Y);let Z=s[0],E=s[1];o&&(F=Q0(J,Y,m,F,a,Z+h,1,1)),Q=p.clone(J,Q),J=M,G=p.negate(U,G);let I,B;for(let P=1;PMt;u--)kt=k.PI_OVER_TWO-u*Nt,st[Wt++]=1-Et*(1+Math.cos(kt)),st[Wt++]=.5*(1+Math.sin(kt));for(u=Mt;u>0;u--)kt=k.PI_OVER_TWO-Nt*u,st[Wt++]=1-Qt*(1+Math.cos(kt)),st[Wt++]=.5*(1+Math.sin(kt));for(u=m-U;u>0;u--)st[Wt++]=u*Qt,st[Wt++]=1;for(u=1;u0;u--)st[Wt++]=(u-1)*Qt,st[Wt++]=1}r.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:st})}return e.normal&&(r.normal=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:y.normals})),e.tangent&&(r.tangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:y.tangents})),e.bitangent&&(r.bitangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:y.bitangents})),{attributes:r,indices:w}}function gpe(t,e){if(!e.normal&&!e.tangent&&!e.bitangent&&!e.st)return t;let n=t.position.values,i,o;(e.normal||e.bitangent)&&(i=t.normal.values,o=t.bitangent.values);let a=t.position.values.length/18,s=a*3,l=a*2,r=s*2,d;if(e.normal||e.bitangent||e.tangent){let m=e.normal?new Float32Array(s*6):void 0,h=e.tangent?new Float32Array(s*6):void 0,u=e.bitangent?new Float32Array(s*6):void 0,R=eUt,V=nUt,F=NP,U=yP,G=Tpe,A=iUt,S=r;for(d=0;d-e?(o=Qpe,o.x=this._cameraPosition.x/(n.radii.x+e),o.y=this._cameraPosition.y/(n.radii.y+e),o.z=this._cameraPosition.z/(n.radii.z+e),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),iet(t,o,i)};mR.prototype.computeHorizonCullingPoint=function(t,e,n){return fUt(this._ellipsoid,t,e,n)};var bUt=mt.clone(mt.UNIT_SPHERE);mR.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(t,e,n,i){let o=WUt(this._ellipsoid,n,bUt);return fUt(o,t,e,i)};mR.prototype.computeHorizonCullingPointFromVertices=function(t,e,n,i,o){return FUt(this._ellipsoid,t,e,n,i,o)};mR.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(t,e,n,i,o,a){let s=WUt(this._ellipsoid,o,bUt);return FUt(s,t,e,n,i,a)};var kpe=[];mR.prototype.computeHorizonCullingPointFromRectangle=function(t,e,n){let i=Gt.subsample(t,e,0,kpe),o=Ft.fromPoints(i);if(!(p.magnitude(o.center)<.1*e.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var Ype=new p;function WUt(t,e,n){if(c(e)&&e<0&&t.minimumRadius>-e){let i=p.fromElements(t.radii.x+e,t.radii.y+e,t.radii.z+e,Ype);t=mt.fromCartesian3(i,n)}return t}function fUt(t,e,n,i){c(i)||(i=new p);let o=AUt(t,e),a=0;for(let s=0,l=n.length;s0:s>o&&s*s/p.magnitudeSquared(a)>o)}var xpe=new p,Xpe=new p;function UUt(t,e,n){let i=t.transformPositionToScaledSpace(e,xpe),o=p.magnitudeSquared(i),a=Math.sqrt(o),s=p.divideByScalar(i,a,Xpe);o=Math.max(1,o),a=Math.max(1,a);let l=p.dot(s,n),r=p.magnitude(p.cross(s,n,s)),d=1/a,m=Math.sqrt(o-1)*d;return 1/(l*d-r*m)}function GUt(t,e,n){if(!(e<=0||e===1/0||e!==e))return p.multiplyByScalar(t,e,n)}var net=new p;function AUt(t,e){return p.equals(e,p.ZERO)?e:(t.transformPositionToScaledSpace(e,net),p.normalize(net,net))}var Bu=mR;var Nhi=b(W(),1);function hl(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.translucencyByDistance,i=t.scaleByDistance,o=t.distanceDisplayCondition;c(n)&&(n=ln.clone(n)),c(i)&&(i=ln.clone(i)),c(o)&&(o=Wn.clone(o)),this._show=f(t.show,!0),this._position=p.clone(f(t.position,p.ZERO)),this._actualPosition=p.clone(this._position),this._color=v.clone(f(t.color,v.WHITE)),this._outlineColor=v.clone(f(t.outlineColor,v.TRANSPARENT)),this._outlineWidth=f(t.outlineWidth,0),this._pixelSize=f(t.pixelSize,10),this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=f(t.disableDepthTestDistance,0),this._id=t.id,this._collection=f(t.collection,e),this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=e,this._dirty=!1,this._index=-1}var SUt=hl.SHOW_INDEX=0,EUt=hl.POSITION_INDEX=1,Jpe=hl.COLOR_INDEX=2,Lpe=hl.OUTLINE_COLOR_INDEX=3,Mpe=hl.OUTLINE_WIDTH_INDEX=4,_pe=hl.PIXEL_SIZE_INDEX=5,Dpe=hl.SCALE_BY_DISTANCE_INDEX=6,Ope=hl.TRANSLUCENCY_BY_DISTANCE_INDEX=7,Hpe=hl.DISTANCE_DISPLAY_CONDITION_INDEX=8,wpe=hl.DISABLE_DEPTH_DISTANCE_INDEX=9;hl.NUMBER_OF_PROPERTIES=10;function sV(t,e){let n=t._pointPrimitiveCollection;c(n)&&(n._updatePointPrimitive(t,e),t._dirty=!0)}Object.defineProperties(hl.prototype,{show:{get:function(){return this._show},set:function(t){this._show!==t&&(this._show=t,sV(this,SUt))}},position:{get:function(){return this._position},set:function(t){let e=this._position;p.equals(e,t)||(p.clone(t,e),p.clone(t,this._actualPosition),sV(this,EUt))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(t){let e=this._scaleByDistance;ln.equals(e,t)||(this._scaleByDistance=ln.clone(t,e),sV(this,Dpe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(t){let e=this._translucencyByDistance;ln.equals(e,t)||(this._translucencyByDistance=ln.clone(t,e),sV(this,Ope))}},pixelSize:{get:function(){return this._pixelSize},set:function(t){this._pixelSize!==t&&(this._pixelSize=t,sV(this,_pe))}},color:{get:function(){return this._color},set:function(t){let e=this._color;v.equals(e,t)||(v.clone(t,e),sV(this,Jpe))}},outlineColor:{get:function(){return this._outlineColor},set:function(t){let e=this._outlineColor;v.equals(e,t)||(v.clone(t,e),sV(this,Lpe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(t){this._outlineWidth!==t&&(this._outlineWidth=t,sV(this,Mpe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){Wn.equals(this._distanceDisplayCondition,t)||(this._distanceDisplayCondition=Wn.clone(t,this._distanceDisplayCondition),sV(this,Hpe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(t){this._disableDepthTestDistance!==t&&(this._disableDepthTestDistance=t,sV(this,wpe))}},id:{get:function(){return this._id},set:function(t){this._id=t,c(this._pickId)&&(this._pickId.object.id=t)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(t){this._clusterShow!==t&&(this._clusterShow=t,sV(this,SUt))}}});hl.prototype.getPickId=function(t){return c(this._pickId)||(this._pickId=t.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};hl.prototype._getActualPosition=function(){return this._actualPosition};hl.prototype._setActualPosition=function(t){p.clone(t,this._actualPosition),sV(this,EUt)};var TUt=new bt;hl._computeActualPosition=function(t,e,n){return e.mode===Vt.SCENE3D?t:(L.multiplyByPoint(n,t,TUt),qo.computeActualWgs84Position(e,TUt))};var gUt=new bt;hl._computeScreenSpacePosition=function(t,e,n,i){let o=L.multiplyByVector(t,bt.fromElements(e.x,e.y,e.z,1,gUt),gUt);return qo.wgs84ToWindowCoordinates(n,o,i)};hl.prototype.computeScreenSpacePosition=function(t,e){let n=this._pointPrimitiveCollection;c(e)||(e=new K);let i=n.modelMatrix,o=hl._computeScreenSpacePosition(i,this._actualPosition,t,e);if(c(o))return o.y=t.canvas.clientHeight-o.y,o};hl.getScreenSpaceBoundingBox=function(t,e,n){let i=t.pixelSize,o=i*.5,a=e.x-o,s=e.y-o,l=i,r=i;return c(n)||(n=new Fe),n.x=a,n.y=s,n.width=l,n.height=r,n};hl.prototype.equals=function(t){return this===t||c(t)&&this._id===t._id&&p.equals(this._position,t._position)&&v.equals(this._color,t._color)&&this._pixelSize===t._pixelSize&&this._outlineWidth===t._outlineWidth&&this._show===t._show&&v.equals(this._outlineColor,t._outlineColor)&&ln.equals(this._scaleByDistance,t._scaleByDistance)&&ln.equals(this._translucencyByDistance,t._translucencyByDistance)&&Wn.equals(this._distanceDisplayCondition,t._distanceDisplayCondition)&&this._disableDepthTestDistance===t._disableDepthTestDistance};hl.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var Er=hl;var rpi=b(W(),1);var Bhi=b(W(),1),GF=`in vec4 v_color; in vec4 v_outlineColor; in float v_innerPercent; in float v_pixelDistance; @@ -8831,7 +8831,7 @@ void main() out_FragColor = czm_gammaCorrect(color); czm_writeLogDepth(); } -`;var khi=R(W(),1),FJ=`uniform float u_maxTotalPointSize; +`;var khi=b(W(),1),FJ=`uniform float u_maxTotalPointSize; in vec4 positionHighAndSize; in vec4 positionLowAndOutline; @@ -9014,27 +9014,27 @@ void main() v_pickColor = pickColor; } -`;var Ppe=Er.SHOW_INDEX,set=Er.POSITION_INDEX,CUt=Er.COLOR_INDEX,vpe=Er.OUTLINE_COLOR_INDEX,Kpe=Er.OUTLINE_WIDTH_INDEX,zpe=Er.PIXEL_SIZE_INDEX,IUt=Er.SCALE_BY_DISTANCE_INDEX,NUt=Er.TRANSLUCENCY_BY_DISTANCE_INDEX,yUt=Er.DISTANCE_DISPLAY_CONDITION_INDEX,jpe=Er.DISABLE_DEPTH_DISTANCE_INDEX,ret=Er.NUMBER_OF_PROPERTIES,nc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepth:5};function lu(t){t=f(t,f.EMPTY_OBJECT),this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(ret),this._maxPixelSize=1,this._baseVolume=new Ft,this._baseVolumeWC=new Ft,this._baseVolume2D=new Ft,this._boundingVolume=new Ft,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=f(t.show,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=L.clone(L.IDENTITY),this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.blendOption=f(t.blendOption,wa.OPAQUE_AND_TRANSLUCENT),this._blendOption=void 0,this._mode=ut.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW];let e=this;this._uniforms={u_maxTotalPointSize:function(){return e._maxTotalPointSize}}}Object.defineProperties(lu.prototype,{length:{get:function(){return det(this),this._pointPrimitives.length}}});function BUt(t){let e=t.length;for(let n=0;n0&&(t._shaderDisableDepthDistance=!0,d===Number.POSITIVE_INFINITY&&(d=-1)),a(o,s,l,d)}function $pe(t,e,n,i){QUt(t,e,n,i),kUt(t,e,n,i),YUt(t,e,n,i),xUt(t,e,n,i),XUt(t,e,n,i)}function aet(t,e,n,i,o,a){let s;i.mode===ut.SCENE3D?(s=t._baseVolume,t._boundingVolumeDirty=!0):s=t._baseVolume2D;let l=[];for(let r=0;r0){this._vaf=qpe(r,n,this._buffersUsage),l=this._vaf.writers;for(let C=0;C0){let C=nue;C.length=0,(a[set]||a[Kpe]||a[zpe])&&C.push(QUt),(a[CUt]||a[vpe])&&C.push(kUt),(a[Ppe]||a[NUt])&&C.push(YUt),a[IUt]&&C.push(xUt),(a[yUt]||a[jpe])&&C.push(XUt);let y=C.length;if(l=this._vaf.writers,o/n>.1){for(let Y=0;Yn*1.5&&(i.length=n),!c(this._vaf)||!c(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,Ft.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,Z=L.IDENTITY;t.mode===ut.SCENE3D?(Z=this.modelMatrix,h=Ft.clone(this._baseVolumeWC,this._boundingVolume)):h=Ft.clone(this._baseVolume2D,this._boundingVolume),eue(this,t,h);let b=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,b&&(this._blendOption===wa.OPAQUE||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=he.fromCache({depthTest:{enabled:!0,func:pt.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===wa.TRANSLUCENT||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=he.fromCache({depthTest:{enabled:!0,func:pt.LEQUAL},depthMask:!1,blending:Pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||t.minimumDisableDepthTestDistance!==0;let u,F;(b||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(u=new Ve({sources:[FJ]}),this._shaderScaleByDistance&&u.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&u.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&u.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&u.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===wa.OPAQUE_AND_TRANSLUCENT&&(F=new Ve({defines:["OPAQUE"],sources:[GF]}),this._sp=xn.replaceCache({context:r,shaderProgram:this._sp,vertexShaderSource:u,fragmentShaderSource:F,attributeLocations:nc}),F=new Ve({defines:["TRANSLUCENT"],sources:[GF]}),this._spTranslucent=xn.replaceCache({context:r,shaderProgram:this._spTranslucent,vertexShaderSource:u,fragmentShaderSource:F,attributeLocations:nc})),this._blendOption===wa.OPAQUE&&(F=new Ve({sources:[GF]}),this._sp=xn.replaceCache({context:r,shaderProgram:this._sp,vertexShaderSource:u,fragmentShaderSource:F,attributeLocations:nc})),this._blendOption===wa.TRANSLUCENT&&(F=new Ve({sources:[GF]}),this._spTranslucent=xn.replaceCache({context:r,shaderProgram:this._spTranslucent,vertexShaderSource:u,fragmentShaderSource:F,attributeLocations:nc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let U,G,A,T,g=t.commandList;if(d.render||m){let C=this._colorCommands,y=this._blendOption===wa.OPAQUE,Y=this._blendOption===wa.OPAQUE_AND_TRANSLUCENT;U=this._vaf.va,G=U.length,C.length=G;let Q=Y?G*2:G;for(T=0;T>4;if(o!==cet)throw new Error(`Got v${o} data when expected v${cet}.`);let a=JUt[i&15];if(!a)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(e,2,1),[l]=new Uint32Array(e,4,1);return new t(l,s,a,e)}constructor(e,n=64,i=Float64Array,o){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;let a=JUt.indexOf(this.ArrayType),s=e*2*this.ArrayType.BYTES_PER_ELEMENT,l=e*this.IndexArrayType.BYTES_PER_ELEMENT,r=(8-l%8)%8;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,GJ,e),this.coords=new this.ArrayType(this.data,GJ+l+r,e*2),this._pos=e*2,this._finished=!0):(this.data=new ArrayBuffer(GJ+s+l+r),this.ids=new this.IndexArrayType(this.data,GJ,e),this.coords=new this.ArrayType(this.data,GJ+l+r,e*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(cet<<4)+a]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=e)}add(e,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=e,this.coords[this._pos++]=n,i}finish(){let e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return het(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:a,coords:s,nodeSize:l}=this,r=[0,a.length-1,0],d=[];for(;r.length;){let m=r.pop()||0,h=r.pop()||0,Z=r.pop()||0;if(h-Z<=l){for(let U=Z;U<=h;U++){let G=s[2*U],A=s[2*U+1];G>=e&&G<=i&&A>=n&&A<=o&&d.push(a[U])}continue}let b=Z+h>>1,u=s[2*b],F=s[2*b+1];u>=e&&u<=i&&F>=n&&F<=o&&d.push(a[b]),(m===0?e<=u:n<=F)&&(r.push(Z),r.push(b-1),r.push(1-m)),(m===0?i>=u:o>=F)&&(r.push(b+1),r.push(h),r.push(1-m))}return d}within(e,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:a,nodeSize:s}=this,l=[0,o.length-1,0],r=[],d=i*i;for(;l.length;){let m=l.pop()||0,h=l.pop()||0,Z=l.pop()||0;if(h-Z<=s){for(let U=Z;U<=h;U++)LUt(a[2*U],a[2*U+1],e,n)<=d&&r.push(o[U]);continue}let b=Z+h>>1,u=a[2*b],F=a[2*b+1];LUt(u,F,e,n)<=d&&r.push(o[b]),(m===0?e-i<=u:n-i<=F)&&(l.push(Z),l.push(b-1),l.push(1-m)),(m===0?e+i>=u:n+i>=F)&&(l.push(b+1),l.push(h),l.push(1-m))}return r}};function het(t,e,n,i,o,a){if(o-i<=n)return;let s=i+o>>1;MUt(t,e,s,i,o,a),het(t,e,n,i,s-1,1-a),het(t,e,n,s+1,o,1-a)}function MUt(t,e,n,i,o,a){for(;o>i;){if(o-i>600){let d=o-i+1,m=n-i+1,h=Math.log(d),Z=.5*Math.exp(2*h/3),b=.5*Math.sqrt(h*Z*(d-Z)/d)*(m-d/2<0?-1:1),u=Math.max(i,Math.floor(n-m*Z/d+b)),F=Math.min(o,Math.floor(n+(d-m)*Z/d+b));MUt(t,e,n,u,F,a)}let s=e[2*n+a],l=i,r=o;for(AJ(t,e,i,n),e[2*o+a]>s&&AJ(t,e,i,o);ls;)r--}e[2*i+a]===s?AJ(t,e,i,r):(r++,AJ(t,e,r,o)),r<=n&&(i=r+1),n<=r&&(o=r-1)}}function AJ(t,e,n,i){met(t,n,i),met(e,2*n,2*i),met(e,2*n+1,2*i+1)}function met(t,e,n){let i=t[e];t[e]=t[n],t[n]=i}function LUt(t,e,n,i){let o=t-n,a=e-i;return o*o+a*a}function QZ(t){t=f(t,f.EMPTY_OBJECT),this._enabled=f(t.enabled,!1),this._pixelRange=f(t.pixelRange,80),this._minimumClusterSize=f(t.minimumClusterSize,2),this._clusterBillboards=f(t.clusterBillboards,!0),this._clusterLabels=f(t.clusterLabels,!0),this._clusterPoints=f(t.clusterPoints,!0),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new It,this.show=f(t.show,!0)}function _Ut(t,e){t.x-=e,t.y-=e,t.width+=e*2,t.height+=e*2}var iue=new Fe;function DUt(t,e,n,i,o){if(c(t._labelCollection)&&i._clusterLabels?o=cF.getScreenSpaceBoundingBox(t,e,o):c(t._billboardCollection)&&i._clusterBillboards?o=Na.getScreenSpaceBoundingBox(t,e,o):c(t._pointPrimitiveCollection)&&i._clusterPoints&&(o=Er.getScreenSpaceBoundingBox(t,e,o)),_Ut(o,n),i._clusterLabels&&!c(t._labelCollection)&&c(t.id)&&HUt(i,t.id.id)&&c(t.id._label)){let a=i._collectionIndicesByEntity[t.id.id].labelIndex,s=i._labelCollection.get(a),l=cF.getScreenSpaceBoundingBox(s,e,iue);_Ut(l,n),o=Fe.union(o,l,o)}return o}function oue(t,e){if(t.clusterShow=!0,!c(t._labelCollection)&&c(t.id)&&HUt(e,t.id.id)&&c(t.id._label)){let n=e._collectionIndicesByEntity[t.id.id].labelIndex,i=e._labelCollection.get(n);i.clusterShow=!0}}function OUt(t,e,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=e.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=t,i._clusterEvent.raiseEvent(n,o)}function HUt(t,e){return c(t)&&c(t._collectionIndicesByEntity[e])&&c(t._collectionIndicesByEntity[e].labelIndex)}function pet(t,e,n,i,o){if(!c(t))return;let a=t.length;for(let s=0;s0){let X=new TJ(A.length,64,Uint32Array);for(let _=0;_=m)for(OUt(_.position,E,V,t),Z.push(_),g=0;g=m){let H=p.multiplyByScalar(z,1/E,z);for(OUt(H,E,V,t),Z.push({position:H,width:w.width,height:w.height,minimumWidth:y.width,minimumHeight:y.height}),g=0;g0?(l=d.shift(),r=a.get(l)):(r=a.add(),l=a.length-1),s[i]=l;let m=this;return Promise.resolve().then(function(){m._clusterDirty=!0}),r}}function Vet(t,e){let n=t._collectionIndicesByEntity[e];!c(n.billboardIndex)&&!c(n.labelIndex)&&!c(n.pointIndex)&&delete t._collectionIndicesByEntity[e]}QZ.prototype.getLabel=Zet("_labelCollection",sb,"_unusedLabelIndices","labelIndex");QZ.prototype.removeLabel=function(t){let e=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!c(this._labelCollection)||!c(e)||!c(e.labelIndex))return;let n=e.labelIndex;e.labelIndex=void 0,Vet(this,t.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};QZ.prototype.getBillboard=Zet("_billboardCollection",yh,"_unusedBillboardIndices","billboardIndex");QZ.prototype.removeBillboard=function(t){let e=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!c(this._billboardCollection)||!c(e)||!c(e.billboardIndex))return;let n=e.billboardIndex;e.billboardIndex=void 0,Vet(this,t.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};QZ.prototype.getPoint=Zet("_pointCollection",JC,"_unusedPointIndices","pointIndex");QZ.prototype.removePoint=function(t){let e=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!c(this._pointCollection)||!c(e)||!c(e.pointIndex))return;let n=e.pointIndex;e.pointIndex=void 0,Vet(this,t.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function uet(t){if(!c(t))return;let e=t.length;for(let n=0;n0&&this._labelCollection.get(0)._glyphs.length===0&&(e=t.commandList,t.commandList=[],this._labelCollection.update(t),t.commandList=e),c(this._billboardCollection)&&this._billboardCollection.length>0&&!c(this._billboardCollection.get(0).width)&&(e=t.commandList,t.commandList=[],this._billboardCollection.update(t),t.commandList=e),this._enabledDirty&&(this._enabledDirty=!1,due(this),this._clusterDirty=!0),this._clusterDirty&&(this._clusterDirty=!1,this._cluster()),c(this._clusterLabelCollection)&&this._clusterLabelCollection.update(t),c(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(t),c(this._clusterPointCollection)&&this._clusterPointCollection.update(t),c(this._labelCollection)&&this._labelCollection.update(t),c(this._billboardCollection)&&this._billboardCollection.update(t),c(this._pointCollection)&&this._pointCollection.update(t)};QZ.prototype.destroy=function(){this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),c(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var Yh=QZ;function bet(t){this._name=t,this._clock=void 0,this._changed=new It,this._error=new It,this._isLoading=!1,this._loading=new It,this._entityCollection=new gr(this),this._entityCluster=new Yh}Object.defineProperties(bet.prototype,{name:{get:function(){return this._name},set:function(t){this._name!==t&&(this._name=t,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(t){this._clock!==t&&(this._clock=t,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(t){ml.setLoading(this,t)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(t){this._entityCollection.show=t}},clustering:{get:function(){return this._entityCluster},set:function(t){this._entityCluster=t}}});bet.prototype.update=function(t){return!0};var hb=bet;var Ret=class extends hb{constructor(e){if(!(e.sdc instanceof hb)||!e.sdc._wasmModule)throw new Ut("Invalid SpaceCatalogDataSource");super(`${e.sdc.name}_coverageGroup`),this.objectList=[],this.sdc=e.sdc,this.sdc.entities.collectionChanged.addEventListener((n,i,o,a)=>{for(let s=0;s{this.ph.positionsArray=[],this.ph.positions=[];for(let o=0;o!0,set:()=>{}}})}}getById(e){return this.objectList.filter(n=>n.id===e)}push(e){this.objectList.filter(n=>n.id===e.id).length||(this.objectList.push(e),this.createGeometry())}remove(e){this.objectList=this.objectList.filter(n=>n.id!==e.id),Object.defineProperties(e,{show:{configurable:!0,get:()=>e._show,set:n=>{e._show=n}}}),this.createGeometry()}},SJ=Ret;var Hui=R(W(),1);var rui=R(W(),1);var Hpi=R(W(),1);var wUt={};wUt.computePositions=function(t,e,n,i,o){let a=t*.5,s=-a,l=i+i,r=o?2*l:l,d=new Float64Array(r*3),m,h=0,Z=0,b=o?l*3:0,u=o?(l+i)*3:i*3;for(m=0;m0){let F=Math.min(a,o);d=Math.round(o/F),r+=F}let m=re.createTypedArray(s,r*2),h=0,Z;for(Z=0;Z0)for(Z=0;Z0){for(r=0;r=3e4)console.log("synch"),e=rt.now(e),this._lastSystemClockUpdate=t;else{let i=this._multiplier;if(n===ya.TICK_DEPENDENT)e=rt.addSeconds(e,i,e);else{let l=t-this._lastSystemTime;e=rt.addSeconds(e,i*(l/1e3),e)}let o=this.clockRange,a=this.startTime,s=this.stopTime;if(o===pl.CLAMPED)rt.lessThan(e,a)?e=rt.clone(a,e):rt.greaterThan(e,s)&&(e=rt.clone(s,e),this.onStop.raiseEvent(this));else if(o===pl.LOOP_STOP)for(rt.lessThan(e,a)&&(e=rt.clone(a,e));rt.greaterThan(e,s);)e=rt.addSeconds(a,rt.secondsDifference(e,s),e),this.onStop.raiseEvent(this)}}return this._currentTime=e,this._lastSystemTime=t,this.onTick.raiseEvent(this),e};var kZ=Tet;function cT(){this._definitionChanged=new It,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(cT.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:gm("startTime"),stopTime:gm("stopTime"),currentTime:gm("currentTime"),clockRange:gm("clockRange"),clockStep:gm("clockStep"),multiplier:gm("multiplier")});cT.prototype.clone=function(t){return c(t)||(t=new cT),t.startTime=this.startTime,t.stopTime=this.stopTime,t.currentTime=this.currentTime,t.clockRange=this.clockRange,t.clockStep=this.clockStep,t.multiplier=this.multiplier,t};cT.prototype.equals=function(t){return this===t||c(t)&&rt.equals(this.startTime,t.startTime)&&rt.equals(this.stopTime,t.stopTime)&&rt.equals(this.currentTime,t.currentTime)&&this.clockRange===t.clockRange&&this.clockStep===t.clockStep&&this.multiplier===t.multiplier};cT.prototype.merge=function(t){this.startTime=f(this.startTime,t.startTime),this.stopTime=f(this.stopTime,t.stopTime),this.currentTime=f(this.currentTime,t.currentTime),this.clockRange=f(this.clockRange,t.clockRange),this.clockStep=f(this.clockStep,t.clockStep),this.multiplier=f(this.multiplier,t.multiplier)};cT.prototype.getValue=function(t){return c(t)||(t=new kZ),t.startTime=f(this.startTime,t.startTime),t.stopTime=f(this.stopTime,t.stopTime),t.currentTime=f(this.currentTime,t.currentTime),t.clockRange=f(this.clockRange,t.clockRange),t.multiplier=f(this.multiplier,t.multiplier),t.clockStep=f(this.clockStep,t.clockStep),t};var YZ=cT;var xZi=R(W(),1);var Uue=v.WHITE,Gue=.1,Aue=new K(8,8),Tue=new K(0,0),Sue=new K(1,1);function DC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=t.color,this.cellAlpha=t.cellAlpha,this.lineCount=t.lineCount,this.lineThickness=t.lineThickness,this.lineOffset=t.lineOffset}Object.defineProperties(DC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._cellAlpha)&&et.isConstant(this._lineCount)&&et.isConstant(this._lineThickness)&&et.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),cellAlpha:ft("cellAlpha"),lineCount:ft("lineCount"),lineThickness:ft("lineThickness"),lineOffset:ft("lineOffset")});DC.prototype.getType=function(t){return"Grid"};DC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,Uue,e.color),e.cellAlpha=et.getValueOrDefault(this._cellAlpha,t,Gue),e.lineCount=et.getValueOrClonedDefault(this._lineCount,t,Aue,e.lineCount),e.lineThickness=et.getValueOrClonedDefault(this._lineThickness,t,Sue,e.lineThickness),e.lineOffset=et.getValueOrClonedDefault(this._lineOffset,t,Tue,e.lineOffset),e};DC.prototype.equals=function(t){return this===t||t instanceof DC&&et.equals(this._color,t._color)&&et.equals(this._cellAlpha,t._cellAlpha)&&et.equals(this._lineCount,t._lineCount)&&et.equals(this._lineThickness,t._lineThickness)&&et.equals(this._lineOffset,t._lineOffset)};var OC=DC;var OZi=R(W(),1);function HC(t){this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this.color=t}Object.defineProperties(HC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color")});HC.prototype.getType=function(t){return"PolylineArrow"};HC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,v.WHITE,e.color),e};HC.prototype.equals=function(t){return this===t||t instanceof HC&&et.equals(this._color,t._color)};var wC=HC;var qZi=R(W(),1);var gue=v.WHITE,Eue=v.TRANSPARENT,Cue=16,Iue=255;function PC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=t.color,this.gapColor=t.gapColor,this.dashLength=t.dashLength,this.dashPattern=t.dashPattern}Object.defineProperties(PC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._gapColor)&&et.isConstant(this._dashLength)&&et.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),gapColor:ft("gapColor"),dashLength:ft("dashLength"),dashPattern:ft("dashPattern")});PC.prototype.getType=function(t){return"PolylineDash"};PC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,gue,e.color),e.gapColor=et.getValueOrClonedDefault(this._gapColor,t,Eue,e.gapColor),e.dashLength=et.getValueOrDefault(this._dashLength,t,Cue,e.dashLength),e.dashPattern=et.getValueOrDefault(this._dashPattern,t,Iue,e.dashPattern),e};PC.prototype.equals=function(t){return this===t||t instanceof PC&&et.equals(this._color,t._color)&&et.equals(this._gapColor,t._gapColor)&&et.equals(this._dashLength,t._dashLength)&&et.equals(this._dashPattern,t._dashPattern)};var vC=PC;var sVi=R(W(),1);var Nue=v.WHITE,yue=.25,Bue=1;function KC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=t.color,this.glowPower=t.glowPower,this.taperPower=t.taperPower}Object.defineProperties(KC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),glowPower:ft("glowPower"),taperPower:ft("taperPower")});KC.prototype.getType=function(t){return"PolylineGlow"};KC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,Nue,e.color),e.glowPower=et.getValueOrDefault(this._glowPower,t,yue,e.glowPower),e.taperPower=et.getValueOrDefault(this._taperPower,t,Bue,e.taperPower),e};KC.prototype.equals=function(t){return this===t||t instanceof KC&&et.equals(this._color,t._color)&&et.equals(this._glowPower,t._glowPower)&&et.equals(this._taperPower,t._taperPower)};var zC=KC;var uVi=R(W(),1);var Que=v.WHITE,kue=v.BLACK,Yue=1;function jC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=t.color,this.outlineColor=t.outlineColor,this.outlineWidth=t.outlineWidth}Object.defineProperties(jC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._outlineColor)&&et.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth")});jC.prototype.getType=function(t){return"PolylineOutline"};jC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,Que,e.color),e.outlineColor=et.getValueOrClonedDefault(this._outlineColor,t,kue,e.outlineColor),e.outlineWidth=et.getValueOrDefault(this._outlineWidth,t,Yue),e};jC.prototype.equals=function(t){return this===t||t instanceof jC&&et.equals(this._color,t._color)&&et.equals(this._outlineColor,t._outlineColor)&&et.equals(this._outlineWidth,t._outlineWidth)};var AF=jC;var UVi=R(W(),1);function J0(t,e){this._value=void 0,this._definitionChanged=new It,this._eventHelper=new rl,this._referenceFrame=f(e,ri.FIXED),this.setValue(t)}Object.defineProperties(J0.prototype,{isConstant:{get:function(){let t=this._value;if(!c(t))return!0;let e=t.length;for(let n=0;n0){n=new Array(e);for(let i=0;ir&&t!==Object}let u=typeof t.unpack=="function"&&t!==ru;if(!b&&!Z){h?e[n]=new Ii(u?t.unpack(d,0):d):e[n]=nGt(t,s,i);return}let F=e[n],U,G=i.epoch;if(c(G)&&(U=rt.fromIso8601(G)),b&&!Z){F instanceof ql||(e[n]=F=new ql(t)),F.addSamplesPackedArray(d,U),XP(i,F);return}let A;if(!b&&Z){l=l.clone(),h?l.data=u?t.unpack(d,0):d:l.data=nGt(t,s,i),c(F)||(e[n]=F=h?new _m:new ec),h&&F instanceof _m?F.intervals.addInterval(l):F instanceof ec?(h&&(l.data=new Ii(l.data)),F.intervals.addInterval(l)):(e[n]=F=rGt(F),h&&(l.data=new Ii(l.data)),F.intervals.addInterval(l));return}c(F)||(e[n]=F=new ec),F instanceof ec||(e[n]=F=rGt(F));let T=F.intervals;A=T.findInterval(l),(!c(A)||!(A.data instanceof ql))&&(A=l.clone(),A.data=new ql(t),T.addInterval(A)),A.data.addSamplesPackedArray(d,U),XP(i,A.data)}function fGt(t,e){if(t instanceof ql){t.removeSamples(e);return}else if(t instanceof _m){t.intervals.removeInterval(e);return}else if(t instanceof ec){let n=t.intervals;for(let i=0;ir),!u&&!Z){h?t[e]=new jl(p.unpack(d),b):t[e]=yJ(a,n.reference);return}let F=t[e],U,G=n.epoch;if(c(G)&&(U=rt.fromIso8601(G)),u&&!Z){(!(F instanceof Bs)||c(b)&&F.referenceFrame!==b)&&(t[e]=F=new Bs(b,l)),F.addSamplesPackedArray(d,U),XP(n,F);return}let A;if(!u&&Z){s=s.clone(),h?s.data=p.unpack(d):s.data=yJ(a,n.reference),c(F)||(h?F=new _0(b):F=new cl(b),t[e]=F),h&&F instanceof _0&&c(b)&&F.referenceFrame===b?F.intervals.addInterval(s):F instanceof cl?(h&&(s.data=new jl(s.data,b)),F.intervals.addInterval(s)):(t[e]=F=dGt(F),h&&(s.data=new jl(s.data,b)),F.intervals.addInterval(s));return}c(F)?F instanceof cl||(t[e]=F=dGt(F)):t[e]=F=new cl(b);let T=F.intervals;A=T.findInterval(s),(!c(A)||!(A.data instanceof Bs)||c(b)&&A.data.referenceFrame!==b)&&(A=s.clone(),A.data=new Bs(b,l),T.addInterval(A)),A.data.addSamplesPackedArray(d,U),XP(n,A.data)}function FGt(t,e){if(t instanceof Bs){t.removeSamples(e);return}else if(t instanceof _0){t.intervals.removeInterval(e);return}else if(t instanceof cl){let n=t.intervals;for(let i=0;i. version format.");let i=e._documentPacket;c(t.name)&&(i.name=t.name);let o=t.clock;if(c(o)){let a=i.clock;c(a)?(a.interval=f(o.interval,a.interval),a.currentTime=f(o.currentTime,a.currentTime),a.range=f(o.range,a.range),a.step=f(o.step,a.step),a.multiplier=f(o.multiplier,a.multiplier)):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function FZe(t,e,n,i){let o=e.ellipse;if(!c(o))return;let a=Qs(o.interval),s=t.ellipse;c(s)||(t.ellipse=s=new jG),Bt(Boolean,s,"show",o.show,a,i,n),Bt(Number,s,"semiMajorAxis",o.semiMajorAxis,a,i,n),Bt(Number,s,"semiMinorAxis",o.semiMinorAxis,a,i,n),Bt(Number,s,"height",o.height,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(Number,s,"extrudedHeight",o.extrudedHeight,a,i,n),Bt(Ge,s,"extrudedHeightReference",o.extrudedHeightReference,a,i,n),Bt(ru,s,"rotation",o.rotation,a,i,n),Bt(ru,s,"stRotation",o.stRotation,a,i,n),Bt(Number,s,"granularity",o.granularity,a,i,n),Bt(Boolean,s,"fill",o.fill,a,i,n),Jh(s,"material",o.material,a,i,n),Bt(Boolean,s,"outline",o.outline,a,i,n),Bt(v,s,"outlineColor",o.outlineColor,a,i,n),Bt(Number,s,"outlineWidth",o.outlineWidth,a,i,n),Bt(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,a,i,n),Bt(ui,s,"shadows",o.shadows,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n),Bt(Ji,s,"classificationType",o.classificationType,a,i,n),Bt(Number,s,"zIndex",o.zIndex,a,i,n)}function UZe(t,e,n,i){let o=e.ellipsoid;if(!c(o))return;let a=Qs(o.interval),s=t.ellipsoid;c(s)||(t.ellipsoid=s=new qG),Bt(Boolean,s,"show",o.show,a,i,n),Bt(p,s,"radii",o.radii,a,i,n),Bt(p,s,"innerRadii",o.innerRadii,a,i,n),Bt(Number,s,"minimumClock",o.minimumClock,a,i,n),Bt(Number,s,"maximumClock",o.maximumClock,a,i,n),Bt(Number,s,"minimumCone",o.minimumCone,a,i,n),Bt(Number,s,"maximumCone",o.maximumCone,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(Boolean,s,"fill",o.fill,a,i,n),Jh(s,"material",o.material,a,i,n),Bt(Boolean,s,"outline",o.outline,a,i,n),Bt(v,s,"outlineColor",o.outlineColor,a,i,n),Bt(Number,s,"outlineWidth",o.outlineWidth,a,i,n),Bt(Number,s,"stackPartitions",o.stackPartitions,a,i,n),Bt(Number,s,"slicePartitions",o.slicePartitions,a,i,n),Bt(Number,s,"subdivisions",o.subdivisions,a,i,n),Bt(ui,s,"shadows",o.shadows,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n)}function GZe(t,e,n,i){let o=e.label;if(!c(o))return;let a=Qs(o.interval),s=t.label;c(s)||(t.label=s=new aZ),Bt(Boolean,s,"show",o.show,a,i,n),Bt(String,s,"text",o.text,a,i,n),Bt(String,s,"font",o.font,a,i,n),Bt(Pa,s,"style",o.style,a,i,n),Bt(Number,s,"scale",o.scale,a,i,n),Bt(Boolean,s,"showBackground",o.showBackground,a,i,n),Bt(v,s,"backgroundColor",o.backgroundColor,a,i,n),Bt(K,s,"backgroundPadding",o.backgroundPadding,a,i,n),Bt(K,s,"pixelOffset",o.pixelOffset,a,i,n),Bt(p,s,"eyeOffset",o.eyeOffset,a,i,n),Bt(to,s,"horizontalOrigin",o.horizontalOrigin,a,i,n),Bt(hi,s,"verticalOrigin",o.verticalOrigin,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(v,s,"fillColor",o.fillColor,a,i,n),Bt(v,s,"outlineColor",o.outlineColor,a,i,n),Bt(Number,s,"outlineWidth",o.outlineWidth,a,i,n),Bt(ln,s,"translucencyByDistance",o.translucencyByDistance,a,i,n),Bt(ln,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,a,i,n),Bt(ln,s,"scaleByDistance",o.scaleByDistance,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n),Bt(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,a,i,n)}function AZe(t,e,n,i){let o=e.model;if(!c(o))return;let a=Qs(o.interval),s=t.model;c(s)||(t.model=s=new JR),Bt(Boolean,s,"show",o.show,a,i,n),Bt(QJ.default,s,"uri",o.gltf,a,i,n),Bt(Number,s,"scale",o.scale,a,i,n),Bt(Number,s,"minimumPixelSize",o.minimumPixelSize,a,i,n),Bt(Number,s,"maximumScale",o.maximumScale,a,i,n),Bt(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,a,i,n),Bt(Boolean,s,"runAnimations",o.runAnimations,a,i,n),Bt(Boolean,s,"clampAnimations",o.clampAnimations,a,i,n),Bt(ui,s,"shadows",o.shadows,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(v,s,"silhouetteColor",o.silhouetteColor,a,i,n),Bt(Number,s,"silhouetteSize",o.silhouetteSize,a,i,n),Bt(v,s,"color",o.color,a,i,n),Bt(Kd,s,"colorBlendMode",o.colorBlendMode,a,i,n),Bt(Number,s,"colorBlendAmount",o.colorBlendAmount,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n);let l,r,d=o.nodeTransformations;if(c(d))if(Array.isArray(d))for(l=0,r=d.length;l-1;r--)n[r](s,t,e,i)}Eet=void 0}function QZe(t){let e,n=t._documentPacket.clock;if(!c(n)){if(!c(t._clock)){let o=t._entityCollection.computeAvailability();if(!o.start.equals(Re.MINIMUM_VALUE)){let a=o.start,s=o.stop,l=rt.secondsDifference(s,a),r=Math.round(l/120);return e=new YZ,e.startTime=rt.clone(a),e.stopTime=rt.clone(s),e.clockRange=pl.LOOP_STOP,e.multiplier=r,e.currentTime=rt.clone(a),e.clockStep=ya.SYSTEM_CLOCK_MULTIPLIER,t._clock=e,!0}}return!1}c(t._clock)?e=t._clock.clone():(e=new YZ,e.startTime=Re.MINIMUM_VALUE.clone(),e.stopTime=Re.MAXIMUM_VALUE.clone(),e.currentTime=Re.MINIMUM_VALUE.clone(),e.clockRange=pl.LOOP_STOP,e.clockStep=ya.SYSTEM_CLOCK_MULTIPLIER,e.multiplier=1);let i=Qs(n.interval);return c(i)&&(e.startTime=i.start,e.stopTime=i.stop),c(n.currentTime)&&(e.currentTime=rt.fromIso8601(n.currentTime)),c(n.range)&&(e.clockRange=f(pl[n.range],pl.LOOP_STOP)),c(n.step)&&(e.clockStep=f(ya[n.step],ya.SYSTEM_CLOCK_MULTIPLIER)),c(n.multiplier)&&(e.multiplier=n.multiplier),e.equals(t._clock)?!1:(t._clock=e.clone(t._clock),!0)}function GGt(t,e,n,i){n=f(n,f.EMPTY_OBJECT);let o=e,a=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new on(s)),t._credit=s,typeof e=="string"||e instanceof te){e=te.createIfNeeded(e),o=e.fetchJson(),a=f(a,e.clone());let l=t._resourceCredits,r=e.credits;if(c(r)){let d=r.length;for(let m=0;m1;--V){if(G=k.PI_OVER_TWO-(V-1)*U,C=oI(-G,a,u,b,r,m,d,h,Z,C),y=oI(G+Math.PI,a,u,b,r,m,d,h,Z,y),e){for(T[g++]=C.x,T[g++]=C.y,T[g++]=C.z,I=2*(V-1)+2,E=1;E1;--s){for(e[n++]=i++,e[n++]=i,e[n++]=a,o=2*s,l=0;lk.PI&&(h.north=h.north>0?k.PI_OVER_TWO-k.EPSILON7:h.north,h.south=h.south<0?k.EPSILON7-k.PI_OVER_TWO:h.south,h.east=k.PI,h.west=-k.PI),h}function Zb(t){t=f(t,f.EMPTY_OBJECT);let e=t.center,n=f(t.ellipsoid,mt.WGS84),i=t.semiMajorAxis,o=t.semiMinorAxis,a=f(t.granularity,k.RADIANS_PER_DEGREE),s=f(t.vertexFormat,ee.DEFAULT),l=f(t.height,0),r=f(t.extrudedHeight,l);this._center=p.clone(e),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=mt.clone(n),this._rotation=f(t.rotation,0),this._stRotation=f(t.stRotation,0),this._height=Math.max(r,l),this._granularity=a,this._vertexFormat=ee.clone(s),this._extrudedHeight=Math.min(r,l),this._shadowVolume=f(t.shadowVolume,!1),this._workerName="createEllipseGeometry",this._offsetAttribute=t.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}Zb.packedLength=p.packedLength+mt.packedLength+ee.packedLength+9;Zb.pack=function(t,e,n){return n=f(n,0),p.pack(t._center,e,n),n+=p.packedLength,mt.pack(t._ellipsoid,e,n),n+=mt.packedLength,ee.pack(t._vertexFormat,e,n),n+=ee.packedLength,e[n++]=t._semiMajorAxis,e[n++]=t._semiMinorAxis,e[n++]=t._rotation,e[n++]=t._stRotation,e[n++]=t._height,e[n++]=t._granularity,e[n++]=t._extrudedHeight,e[n++]=t._shadowVolume?1:0,e[n]=f(t._offsetAttribute,-1),e};var _Gt=new p,DGt=new mt,OGt=new ee,ub={center:_Gt,ellipsoid:DGt,vertexFormat:OGt,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Zb.unpack=function(t,e,n){e=f(e,0);let i=p.unpack(t,e,_Gt);e+=p.packedLength;let o=mt.unpack(t,e,DGt);e+=mt.packedLength;let a=ee.unpack(t,e,OGt);e+=ee.packedLength;let s=t[e++],l=t[e++],r=t[e++],d=t[e++],m=t[e++],h=t[e++],Z=t[e++],b=t[e++]===1,u=t[e];return c(n)?(n._center=p.clone(i,n._center),n._ellipsoid=mt.clone(o,n._ellipsoid),n._vertexFormat=ee.clone(a,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=l,n._rotation=r,n._stRotation=d,n._height=m,n._granularity=h,n._extrudedHeight=Z,n._shadowVolume=b,n._offsetAttribute=u===-1?void 0:u,n):(ub.height=m,ub.extrudedHeight=Z,ub.granularity=h,ub.stRotation=d,ub.rotation=r,ub.semiMajorAxis=s,ub.semiMinorAxis=l,ub.shadowVolume=b,ub.offsetAttribute=u===-1?void 0:u,new Zb(ub))};Zb.computeRectangle=function(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.center,i=f(t.ellipsoid,mt.WGS84),o=t.semiMajorAxis,a=t.semiMinorAxis,s=f(t.granularity,k.RADIANS_PER_DEGREE),l=f(t.rotation,0);return MGt(n,o,a,l,s,i,e)};Zb.createGeometry=function(t){if(t._semiMajorAxis<=0||t._semiMinorAxis<=0)return;let e=t._height,n=t._extrudedHeight,i=!k.equalsEpsilon(e,n,0,k.EPSILON2);t._center=t._ellipsoid.scaleToGeodeticSurface(t._center,t._center);let o={center:t._center,semiMajorAxis:t._semiMajorAxis,semiMinorAxis:t._semiMinorAxis,ellipsoid:t._ellipsoid,rotation:t._rotation,height:e,granularity:t._granularity,vertexFormat:t._vertexFormat,stRotation:t._stRotation},a;if(i)o.extrudedHeight=n,o.shadowVolume=t._shadowVolume,o.offsetAttribute=t._offsetAttribute,a=OZe(o);else if(a=MZe(o),c(t._offsetAttribute)){let s=a.attributes.position.values.length,l=t._offsetAttribute===zn.NONE?0:1,r=new Uint8Array(s/3).fill(l);a.attributes.applyOffset=new jt({componentDatatype:it.UNSIGNED_BYTE,componentsPerAttribute:1,values:r})}return new _e({attributes:a.attributes,indices:a.indices,primitiveType:le.TRIANGLES,boundingSphere:a.boundingSphere,offsetAttribute:t._offsetAttribute})};Zb.createShadowVolume=function(t,e,n){let i=t._granularity,o=t._ellipsoid,a=e(i,o),s=n(i,o);return new Zb({center:t._center,semiMajorAxis:t._semiMajorAxis,semiMinorAxis:t._semiMinorAxis,ellipsoid:o,rotation:t._rotation,stRotation:t._stRotation,granularity:i,extrudedHeight:a,height:s,vertexFormat:ee.POSITION_ONLY,shadowVolume:!0})};function HZe(t){let e=-t._stRotation;if(e===0)return[0,0,0,1,1,0];let i=Om.computeEllipsePositions({center:t._center,semiMajorAxis:t._semiMajorAxis,semiMinorAxis:t._semiMinorAxis,rotation:t._rotation,granularity:t._granularity},!1,!0).outerPositions,o=i.length/3,a=new Array(o);for(let r=0;r0){let u=Math.min(d,r);b=Math.round(r/u);let F=Math.min(b*d,r);for(Z=0;Z0&&(g=!0,G+=r-1),s0&&m!==F-1&&h!==0&&h!==U-1&&(M[$]=!0),$++;Z=0;let dt,q;for(m=1;m=zt&&m1||C>1))for(let E=0;E0;m-=d)kt=m*3,nt=ZI(nt,st,kt,Z,U),st+=6,o.st&&(q=VI(q,Et,m*2,C),Et+=4),n&&(Qt+=3,$[Qt++]=y[kt],$[Qt++]=y[kt+1],$[Qt++]=y[kt+2]),at&&(dt[Wt++]=1,Wt+=1);if(I){let zt=Nt;for(kt=zt*3,m=0;m<2;m++)nt=ZI(nt,st,kt,Z,U),st+=6,o.st&&(q=VI(q,Et,zt*2,C),Et+=4),n&&(Qt+=3,$[Qt++]=y[kt],$[Qt++]=y[kt+1],$[Qt++]=y[kt+2]),at&&(dt[Wt++]=1,Wt+=1)}else for(m=d-1;m>=0;m--)kt=m*3,nt=ZI(nt,st,kt,Z,U),st+=6,o.st&&(q=VI(q,Et,m*2,C),Et+=4),n&&(Qt+=3,$[Qt++]=y[kt],$[Qt++]=y[kt+1],$[Qt++]=y[kt+2]),at&&(dt[Wt++]=1,Wt+=1);let Mt=mbe(nt,o,l);o.st&&(Mt.attributes.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:q})),n&&(Mt.attributes.extrudeDirection=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:$})),Q&&(Mt.attributes.applyOffset=new jt({componentDatatype:it.UNSIGNED_BYTE,componentsPerAttribute:1,values:dt}));let qt=re.createTypedArray(H,P*6),ie,oe,He,rn;b=nt.length/3;let de=0;for(m=0;m0)for(s=new Array(o),i=0;i0)for(l=new Array(o),i=0;i0)for(s=new Array(o),i=0;i0)for(l=new Array(o),i=0;i{i.raiseEvent(l)}),n[a]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=t.definitionChanged.addEventListener(ST.prototype._onEntityPropertyChanged,this)}ST.prototype._onEntityPropertyChanged=function(t,e,n,i){let o=this.updaters;for(let a=0;a0){c(i)&&(c(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let r;c(this.depthFailAppearanceType)&&(c(this.depthFailMaterialProperty)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial)),r=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Wi({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:r,shadows:this.shadows}),o.add(i),e=!1}else{c(i)&&(o.remove(i),i=void 0);let r=this.oldPrimitive;c(r)&&(o.remove(r),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(c(i)&&i.ready){i.show=!0,c(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),c(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Cn)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,l=s.length,r=this.waitingOnCreate;for(a=0;a=0;i--){let o=t[i];if(o.remove(e))return o.updaters.length===0&&(t.splice(i,1),o.destroy()),!0}return!1}WI.prototype.remove=function(t){vAt(this._solidItems,t)||vAt(this._translucentItems,t)};function KAt(t,e,n){let i=!1,o=e.length;for(let a=0;a0)for(a=0;a=0;a--){let s=e[a];if(s.invalidated){e.splice(a,1);let l=s.updaters.values,r=l.length;for(let d=0;d0){c(n)&&(c(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=Ua.getValue(t,this.materialProperty,this.material);let l;c(this.depthFailMaterialProperty)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial),l=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Wi({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:l,shadows:this.shadows}),i.add(n),e=!1}else{c(n)&&(i.remove(n),n=void 0);let l=this.oldPrimitive;c(l)&&(i.remove(l),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(c(n)&&n.ready){n.show=!0,c(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=Ua.getValue(t,this.materialProperty,this.material),this.primitive.appearance.material=this.material,c(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Cn)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,l=s.length;for(a=0;a=0;i--){let o=e[i];if(o.remove(t)){o.updaters.length===0&&(e.splice(i,1),o.destroy());break}}};fI.prototype.update=function(t){let e,n=this._items,i=n.length;for(e=i-1;e>=0;e--){let a=n[e];if(a.invalidated){n.splice(e,1);let s=a.updaters.values,l=s.length;for(let r=0;r0)c(i)&&(c(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Nc({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),e=!1;else{c(i)&&(o.remove(i),i=void 0);let r=this.oldPrimitive;c(r)&&(o.remove(r),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(c(i)&&i.ready){i.show=!0,c(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,l=s.length,r=this.waitingOnCreate;for(a=0;a=0;--e){let s=o[e];s.isDirty&&(i=o[e].update(t)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(e,1)}return i};FI.prototype.getBoundingSphere=function(t,e){let n=this._batches,i=n.length;for(let o=0;o0)c(n)&&(c(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=Ua.getValue(t,this.materialProperty,this.material),n=new Nc({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),e=!1;else{c(n)&&(i.remove(n),n=void 0);let l=this.oldPrimitive;c(l)&&(i.remove(l),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(c(n)&&n.ready){n.show=!0,c(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=Ua.getValue(t,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,l=s.length;for(a=0;a=0;i--){let o=e[i];if(o.remove(t)){o.updaters.length===0&&(e.splice(i,1),o.destroy());break}}};GI.prototype.update=function(t){let e,n=this._items,i=n.length;for(e=i-1;e>=0;e--){let a=n[e];if(a.invalidated){n.splice(e,1);let s=a.updaters.values,l=s.length;for(let r=0;r0)c(i)&&(c(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Wi({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new jn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),e=!1;else{c(i)&&(o.remove(i),i=void 0);let r=this.oldPrimitive;c(r)&&(o.remove(r),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(c(i)&&i.ready){i.show=!0,c(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,l=s.length,r=this.waitingOnCreate;for(a=0;a0)for(h=!0,e=0;e0)for(h=!0,e=0;e-1;l--)r=s[l],d=r.id,m=this._updaterSets.get(d),m.entity===r?m.forEach(function(F){h._removeUpdater(F),h._insertUpdaterIntoBatch(t,F)}):(o.push(r),n.push(r));for(l=o.length-1;l>-1;l--)r=o[l],d=r.id,m=this._updaterSets.get(d),m.forEach(this._removeUpdater.bind(this)),m.destroy(),this._updaterSets.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(l=n.length-1;l>-1;l--)r=n[l],d=r.id,m=new gT(r,this._scene),this._updaterSets.set(d,m),m.forEach(function(F){h._insertUpdaterIntoBatch(t,F)}),this._subscriptions.set(d,m.geometryChanged.addEventListener(Hm._onGeometryChanged,this));e.removeAll(),i.removeAll(),a.removeAll();let Z=!0,b=this._batches,u=b.length;for(l=0;l-1;s--)r=n[s],l=r.id,i.remove(l)||(o.set(l,r),a.remove(l));for(s=e.length-1;s>-1;s--)r=e[s],l=r.id,o.remove(l)?a.set(l,r):i.set(l,r)};var dL=Hm;var gCi=R(W(),1);var lRe=1,rRe="30px sans-serif",dRe=Pa.FILL,cRe=v.WHITE,mRe=v.BLACK,hRe=1,pRe=!1,uRe=new v(.165,.165,.165,.8),ZRe=new K(7,5),VRe=K.ZERO,bRe=p.ZERO,RRe=Ge.NONE,WRe=to.CENTER,fRe=hi.CENTER,FRe=new p,URe=new v,GRe=new v,ARe=new v,TRe=new K,SRe=new p,gRe=new K,ERe=new ln,CRe=new ln,IRe=new ln,NRe=new Wn;function tTt(t){this.entity=t,this.label=void 0,this.index=void 0}function NF(t,e){e.collectionChanged.addEventListener(NF.prototype._onCollectionChanged,this),this._cluster=t,this._entityCollection=e,this._items=new qe,this._toRemove=[],this._onCollectionChanged(e,e.values,[],[])}NF.prototype.update=function(t){let e=this._items.values,n=this._cluster;for(let i=0,o=e.length;i-1;o--)a=e[o],c(a._label)&&c(a._position)&&s.set(a.id,new tTt(a));for(o=i.length-1;o>-1;o--)a=i[o],c(a._label)&&c(a._position)?s.contains(a.id)||s.set(a.id,new tTt(a)):(vet(s.get(a.id),a,l),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],vet(s.get(a.id),a,l),s.remove(a.id)};function vet(t,e,n){c(t)&&(t.label=void 0,n.removeLabel(e))}var cL=NF;var KCi=R(W(),1);var yRe=1,BRe=0,QRe=!0,kRe=!0,YRe=ui.ENABLED,xRe=Ge.NONE,XRe=v.RED,JRe=0,LRe=v.WHITE,MRe=Kd.HIGHLIGHT,_Re=.5,DRe=new K(1,1),ORe=new L,HRe=new L,eTt=new v,nTt=new Array(4),wRe=new p;function yF(t,e){e.collectionChanged.addEventListener(yF.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._modelHash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])}async function PRe(t,e,n,i){let o=t._primitives,a=t._modelHash;try{let s=await AZ.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:t._scene});if(t.isDestroyed()||!c(a[e.id]))return;s.id=e,o.add(s),a[e.id].modelPrimitive=s,s.errorEvent.addEventListener(l=>{c(a[e.id])&&(console.log(l),l.name!=="TextureError"&&s.incrementallyLoadTextures&&(a[e.id].loadFailed=!0))})}catch(s){if(t.isDestroyed()||!c(a[e.id]))return;console.log(s),a[e.id].loadFailed=!0}}yF.prototype.update=function(t){let e=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)Ket(this,t[i],e,n);return At(this)};var iv=new p,vRe=new gt;yF.prototype.getBoundingSphere=function(t,e){let n=this._modelHash[t.id];if(!c(n))return ve.FAILED;if(n.loadFailed)return ve.FAILED;let i=n.modelPrimitive;if(!c(i)||!i.show)return ve.PENDING;if(!i.ready||!n.modelUpdated)return ve.PENDING;let o=this._scene,a=o.globe,s=f(a?.ellipsoid,mt.WGS84);if(i.heightReference!==Ge.NONE){let r=i.modelMatrix;iv.x=r[12],iv.y=r[13],iv.z=r[14];let d=s.cartesianToCartographic(iv,vRe),m=o.getHeight(d,i.heightReference);return c(m)&&(Np(i.heightReference)?d.height=m:d.height+=m),Ft.clone(i.boundingSphere,e),e.center=s.cartographicToCartesian(d),ve.DONE}return Ft.clone(i.boundingSphere,e),ve.DONE};yF.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._modelHash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._model)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._model)&&c(a._position)?(KRe(a,l),s.set(a.id,a)):(Ket(this,a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],Ket(this,a,l,r),s.remove(a.id)};function Ket(t,e,n,i){let o=n[e.id];c(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[e.id])}function KRe(t,e){let n=e[t.id];c(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var mL=yF;var gIi=R(W(),1);var nIi=R(W(),1);function BF(t){this._definitionChanged=new It,this._value=void 0,this._removeSubscription=void 0,this.setValue(t)}Object.defineProperties(BF.prototype,{isConstant:{get:function(){return et.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return c(this._value)?this._value.referenceFrame:ri.FIXED}}});BF.prototype.getValue=function(t,e){return this.getValueInReferenceFrame(t,ri.FIXED,e)};BF.prototype.setValue=function(t){this._value!==t&&(this._value=t,c(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),c(t)&&(this._removeSubscription=t.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};BF.prototype.getValueInReferenceFrame=function(t,e,n){if(c(this._value))return n=this._value.getValueInReferenceFrame(t,e,n),c(n)?mt.WGS84.scaleToGeodeticSurface(n,n):void 0};BF.prototype.equals=function(t){return this===t||t instanceof BF&&this._value===t._value};BF.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var vc=BF;var zRe=60,jRe=1,sTt=new ai,zet=new ai,jet=new ai;function iTt(t){this.entity=t,this.polyline=void 0,this.index=void 0,this.updater=void 0}function oTt(t,e){let n=Math.sin(t)*Math.sqrt(1-Math.pow(e,2))/(1+e*Math.cos(t)),i=(e+Math.cos(t))/(1+e*Math.cos(t)),o=Math.atan2(n,i),a=o-e*Math.sin(o);return a<0&&(a=a+2*Math.PI),a}function qRe(t){t._timeSegments={segments:[],globalIndex:null,splitInterval:null,settings:null}}function lTt(t){t._timeSegments.segments.length=0}function $Re(t,e,n,i,o,a,s,l,r){let d=l,m;m=t.getValueInReferenceFrame(e,a,r[d]),c(m)&&(r[d++]=m);let h=!c(o)||rt.lessThanOrEquals(o,e)||rt.greaterThanOrEquals(o,n),Z=!1;if(s.method){let C=rt.secondsDifference(n,e);if(i.length0&&!G){let C=i[b+1],y=rt.secondsDifference(C,F);G=y>s,G&&(A=Math.ceil(y/s),T=0,g=y/Math.max(A,2),A=Math.max(A-1,1))}if(G&&T1&&(F=1);let U;if(r._timeSegments.splitInterval)U=r._timeSegments.splitInterval;else{let q;for(q=0;q=I)lTt(r);else if(_>0)r._timeSegments.segments.splice(0,_);else if(_<0){r._timeSegments.segments.splice(_,-_);for(let q=0;qz&&(d=av(t,nt,$,i,o,m,d-1,l,r,h),dt=!0),l.splice(d-1,r._timeSegments.segments[at].length,...r._timeSegments.segments[at]),d+=r._timeSegments.segments[at].length-1}return P.length&&(l.splice(d-1,P.length,...P),d+=P.length-1),t._property._refFrame!==o&&(t._property._refFrame=o),l.length=d,Z&&(t._property._samples=l.length),l.length}function av(t,e,n,i,o,a,s,l,r,d){let m=a.method==="trueAnomaly",h=s;return m&&m!=="constant condition"?h=n0e(t,e,n,i,o,a,s,l,d):h=t0e(t,e,n,i,o,a,s,l,d),h}var Dh=new p,SI=new p,hL=new p,sv=new p,IT=new p;function n0e(t,e,n,i,o,a,s,l,r){let d=rt.lessThanOrEquals(n,e),m,h=s,Z=e,b=a.samplesPerPeriod||360,u=a.period||rt.secondsDifference(n,e),F=a.extraEpochSamples||0,U=a.resolutionAtEpoch||1,G=a.extraSamples||3,A=rt.addSeconds(i,-(Math.floor(F/2)*U),new rt),T=!1,g=rt.clone(e),C=t._property._samples||void 0,y=null;for(;!d;){m=t.getValueInReferenceFrame(Z,o,Dh,!0),rt.greaterThanOrEquals(Z,g)&&(l[h++]=p.clone(m)),IT=t.getValueInReferenceFrame(Z,ri.TEME),sv=t._velocity.getValueInReferenceFrame(Z,ri.TEME),Dh=p.cross(IT,sv,Dh),SI=p.cross(sv,Dh,SI),Dh=p.divideByScalar(SI,k.GRAVITATIONALPARAMETER,Dh),SI=p.divideByScalar(IT,p.magnitude(IT),SI),hL=p.subtract(Dh,SI,hL);let Q=p.magnitude(hL),J=p.dot(hL,IT)/(p.magnitude(hL)*p.magnitude(IT)),M=p.dot(IT,sv),V=Math.acos(J);M<0&&(V=2*Math.PI-V);let E=2*Math.PI/b;y!==null&&(E=2*E-Math.abs(V-y));let I=V+E;I>2*Math.PI&&(I-=2*Math.PI),y=V;let B=oTt(V,Q),X=oTt(I,Q),_=Math.abs(X-B);_>Math.PI&&(_=2*Math.PI-_);let P=u*(_/(2*Math.PI));if(Z=rt.addSeconds(Z,P,new rt),!T&&rt.greaterThanOrEquals(Z,A)){for(let w=0;w0){let u=Z.pop();r=this._polylineCollection.get(u),e.index=u}else e.index=this._polylineCollection.length,r=this._polylineCollection.add();r.id=n,e.polyline=r,qRe(e.polyline)}let m=et.getValueOrDefault(i._resolution,t,zRe);r.show=!0;let h=[];if(c(n._localReferenceEntity)){let Z=l0e(a,s,m),b=n._localReferenceEntity;for(let u=0;u=1/this._maxFPS))return!0;this._lastUpdate=i}let e=this._updaters;for(let i in e)e.hasOwnProperty(i)&&e[i].update(t);let n=this._items.values;if(!n.length&&c(this._updaters)&&Object.values(this._updaters).length){for(let i in this._updaters)this._updaters[i]&&this._scene.primitives.removeAndDestroy(this._updaters[i]._polylineCollection);this._updaters={}}for(let i=0,o=n.length;i-1;o--)a=e[o],c(a._path)&&c(a._position)&&l.set(a.id,new iTt(a));for(o=i.length-1;o>-1;o--)a=i[o],c(a._path)&&c(a._position)?l.contains(a.id)||l.set(a.id,new iTt(a)):(s=l.get(a.id),c(s)&&(c(s.updater)&&s.updater.removeObject(s),l.remove(a.id)));for(o=n.length-1;o>-1;o--)a=n[o],s=l.get(a.id),c(s)&&(c(s.updater)&&s.updater.removeObject(s),l.remove(a.id))};QF._subSample=dTt;var uL=QF;var i1i=R(W(),1);var MIi=R(W(),1);var kIi=R(W(),1);var NIi=R(W(),1),d0e={};var r0e=(()=>{var t=d0e.url;return function(e={}){var n=e,i,o;n.ready=new Promise((x,D)=>{i=x,o=D}),["_getCoveragePositions","_inflateEllipsoid","_malloc","_free","_memory","_fflush","__embind_initialize_bindings","___indirect_function_table","___start_em_asm","___stop_em_asm","onRuntimeInitialized"].forEach(x=>{Object.getOwnPropertyDescriptor(n.ready,x)||Object.defineProperty(n.ready,x,{get:()=>We("You are getting "+x+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>We("You are setting "+x+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}),globalThis.__dirname=globalThis.__dirname||"";var a=Object.assign({},n),s=[],l="./this.program",r=(x,D)=>{throw D},d=!0,m=!1,h=!1,Z=!1;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var b="";function u(x){return n.locateFile?n.locateFile(x,b):b+x}var F,U,G,A;if(Z){if(typeof process=="object"&&typeof Og=="function"||typeof window=="object"||typeof importScripts=="function")throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");typeof read<"u"&&(F=read),G=x=>{if(typeof readbuffer=="function")return new Uint8Array(readbuffer(x));let D=read(x,"binary");return V(typeof D=="object"),D},U=(x,D,j)=>{setTimeout(()=>D(G(x)))},typeof clearTimeout>"u"&&(globalThis.clearTimeout=x=>{}),typeof setTimeout>"u"&&(globalThis.setTimeout=x=>typeof x=="function"?x():We()),typeof scriptArgs<"u"?s=scriptArgs:typeof arguments<"u"&&(s=arguments),typeof quit=="function"&&(r=(x,D)=>{throw setTimeout(()=>{if(!(D instanceof _a)){let j=D;D&&typeof D=="object"&&D.stack&&(j=[D,D.stack]),g(`exiting due to exception: ${j}`)}quit(x)}),D}),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)}else if(d||m){if(m?b=self.location.href:typeof document<"u"&&document.currentScript&&(b=document.currentScript.src),t&&(b=t),b.indexOf("blob:")!==0?b=b.substr(0,b.replace(/[?#].*/,"").lastIndexOf("/")+1):b="",!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");F=x=>{var D=new XMLHttpRequest;return D.open("GET",x,!1),D.send(null),D.responseText},m&&(G=x=>{var D=new XMLHttpRequest;return D.open("GET",x,!1),D.responseType="arraybuffer",D.send(null),new Uint8Array(D.response)}),U=(x,D,j)=>{var lt=new XMLHttpRequest;lt.open("GET",x,!0),lt.responseType="arraybuffer",lt.onload=()=>{if(lt.status==200||lt.status==0&<.response){D(lt.response);return}j()},lt.onerror=j,lt.send(null)},A=x=>document.title=x}else throw new Error("environment detection error");var T=n.print||console.log.bind(console),g=n.printErr||console.error.bind(console);Object.assign(n,a),a=null,n8(),n.arguments&&(s=n.arguments),fe("arguments","arguments_"),n.thisProgram&&(l=n.thisProgram),fe("thisProgram","thisProgram"),n.quit&&(r=n.quit),fe("quit","quit_"),V(typeof n.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),V(typeof n.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),V(typeof n.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),V(typeof n.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),V(typeof n.read>"u","Module.read option was removed (modify read_ in JS)"),V(typeof n.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),V(typeof n.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),V(typeof n.setWindowTitle>"u","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),V(typeof n.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),fe("asm","wasmExports"),fe("read","read_"),fe("readAsync","readAsync"),fe("readBinary","readBinary"),fe("setWindowTitle","setWindowTitle"),V(!m,"worker environment detected but not enabled at build time. Add 'worker' to `-sENVIRONMENT` to enable."),V(!h,"node environment detected but not enabled at build time. Add 'node' to `-sENVIRONMENT` to enable."),V(!Z,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.");var C;n.wasmBinary&&(C=n.wasmBinary),fe("wasmBinary","wasmBinary");var y=n.noExitRuntime||!0;fe("noExitRuntime","noExitRuntime"),typeof WebAssembly!="object"&&We("no native wasm support detected");var Y,Q,J=!1,M;function V(x,D){x||We("Assertion failed"+(D?": "+D:""))}var E,I,B,X,_,P,w,z;function H(){var x=Y.buffer;n.HEAP8=E=new Int8Array(x),n.HEAP16=B=new Int16Array(x),n.HEAP32=_=new Int32Array(x),n.HEAPU8=I=new Uint8Array(x),n.HEAPU16=X=new Uint16Array(x),n.HEAPU32=P=new Uint32Array(x),n.HEAPF32=w=new Float32Array(x),n.HEAPF64=z=new Float64Array(x)}V(!n.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),V(typeof Int32Array<"u"&&typeof Float64Array<"u"&&Int32Array.prototype.subarray!=null&&Int32Array.prototype.set!=null,"JS engine does not provide full typed array support"),V(!n.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),V(!n.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");var nt;function $(){var x=qW();V((x&3)==0),x==0&&(x+=4),P[x>>2]=34821223,P[x+4>>2]=2310721022,P[0]=1668509029}function dt(){if(!J){var x=qW();x==0&&(x+=4);var D=P[x>>2],j=P[x+4>>2];(D!=34821223||j!=2310721022)&&We(`Stack overflow! Stack cookie has been overwritten at ${na(x)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${na(j)} ${na(D)}`),P[0]!=1668509029&&We("Runtime error: The application has corrupted its heap memory area (address zero)!")}}(function(){var x=new Int16Array(1),D=new Int8Array(x.buffer);if(x[0]=25459,D[0]!==115||D[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"})();var q=[],at=[],st=[],Et=!1,Qt=0;function Wt(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Mt(n.preRun.shift());bl(q)}function Nt(){V(!Et),Et=!0,dt(),!n.noFSInit&&!ht.init.initialized&&ht.init(),ht.ignorePermissions=!1,Ai.init(),bl(at)}function kt(){if(dt(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)ie(n.postRun.shift());bl(st)}function Mt(x){q.unshift(x)}function qt(x){at.unshift(x)}function ie(x){st.unshift(x)}V(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),V(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),V(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),V(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var oe=0,He=null,rn=null,de={};function zt(x){for(var D=x;;){if(!de[x])return x;x=D+Math.random()}}function ke(x){oe++,n.monitorRunDependencies&&n.monitorRunDependencies(oe),x?(V(!de[x]),de[x]=1,He===null&&typeof setInterval<"u"&&(He=setInterval(()=>{if(J){clearInterval(He),He=null;return}var D=!1;for(var j in de)D||(D=!0,g("still waiting on run dependencies:")),g("dependency: "+j);D&&g("(end of list)")},1e4))):g("warning: run dependency added without ID")}function ue(x){if(oe--,n.monitorRunDependencies&&n.monitorRunDependencies(oe),x?(V(de[x]),delete de[x]):g("warning: run dependency removed without ID"),oe==0&&(He!==null&&(clearInterval(He),He=null),rn)){var D=rn;rn=null,D()}}function We(x){n.onAbort&&n.onAbort(x),x="Aborted("+x+")",g(x),J=!0,M=1;var D=new WebAssembly.RuntimeError(x);throw o(D),D}var un="data:application/octet-stream;base64,";function Ct(x){return x.startsWith(un)}function _t(x){return x.startsWith("file://")}function Je(x){return function(){V(Et,`native function \`${x}\` called before runtime initialization`);var D=Q[x];return V(D,`exported native function \`${x}\` not found`),D.apply(null,arguments)}}var xe;xe="data:application/octet-stream;base64,AGFzbQEAAAABrwRGYAF/AX9gAX8AYAJ/fwBgAn9/AX9gA39/fwF/YAZ/f39/f38Bf2AEf39/fwF/YAV/f39/fwF/YAN/f38AYAAAYAR/f39/AGAIf39/f39/f38Bf2AGf39/f39/AGAFf39/f38AYAABf2AHf39/f39/fwF/YAd/f39/f39/AGAFf35+fn4AYAF8AXxgBH98f38Bf2AFf39/f34Bf2ACfHwBfGADf35/AX5gC39/f39/f39/f39/AX9gCn9/f39/f39/f38AYAR/fn5/AGACf3wBf2AEf398fwF/YAZ/f39/fn4Bf2AHf39/f39+fgF/YAN/f38BfGACfH8BfGAFf398f38AYAN8fH8BfGAGf3x/f39/AX9gBX9/fn9/AGADf39/AX5gBH9/f38BfmAMf39/f39/f39/f39/AX9gBX9/f398AX9gD39/f39/f39/f39/f39/fwBgCH9/f39/f39/AGANf39/f39/f39/f39/fwBgCX9/f39/f39/fwBgAAF8YAR+fn5+AX9gA35+fgF/YAF+AX9gAn5+AXxgAn98AGACfn4BfWACf38BfGADf398AGAEf3x/fwBgA39/fAF/YAF+AX5gBX9/f3x/AX9gBn9/f3x/fwBgAXwAYAJ8fwF/YAJ+fwF/YAJ/fgBgAn9/AX5gA39/fgBgAn9+AX9gBH9/f34BfmADf39/AX1gCX9/f39/f39/fwF/YAp/f39/f39/f39/AX9gBH9/fn4AArEIJQNlbnYcZW1zY3JpcHRlbl9ydW5fc2NyaXB0X3N0cmluZwAAA2VudgtfX2N4YV90aHJvdwAIA2Vudg1fZW12YWxfZGVjcmVmAAEDZW52Fl9lbWJpbmRfcmVnaXN0ZXJfY2xhc3MAKgNlbnYiX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19jb25zdHJ1Y3RvcgAMA2Vudh9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2Z1bmN0aW9uACsDZW52H19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfcHJvcGVydHkAGANlbnYTX2VtdmFsX2dldF9wcm9wZXJ0eQADA2VudhJfZW12YWxfbmV3X2NzdHJpbmcAAANlbnYJX2VtdmFsX2FzAB4DZW52Fl9lbXZhbF9ydW5fZGVzdHJ1Y3RvcnMAAQNlbnYZX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbgAQA2VudhhlbXNjcmlwdGVuX2FzbV9jb25zdF9pbnQABANlbnYVX2VtYmluZF9yZWdpc3Rlcl92b2lkAAIDZW52FV9lbWJpbmRfcmVnaXN0ZXJfYm9vbAANA2VudhtfZW1iaW5kX3JlZ2lzdGVyX3N0ZF9zdHJpbmcAAgNlbnYcX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZwAIA2VudhZfZW1iaW5kX3JlZ2lzdGVyX2VtdmFsAAIDZW52GF9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcgANA2VudhZfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0AAgDZW52HF9lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcACANlbnYTZW1zY3JpcHRlbl9kYXRlX25vdwAsA2VudiBfZW1zY3JpcHRlbl9nZXRfbm93X2lzX21vbm90b25pYwAOFndhc2lfc25hcHNob3RfcHJldmlldzEHZmRfcmVhZAAGFndhc2lfc25hcHNob3RfcHJldmlldzEIZmRfd3JpdGUABhZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGZkX2Nsb3NlAAADZW52FWVtc2NyaXB0ZW5fbWVtY3B5X2JpZwAIA2VudglfdHpzZXRfanMACANlbnYWZW1zY3JpcHRlbl9yZXNpemVfaGVhcAAAA2VudgVhYm9ydAAJFndhc2lfc25hcHNob3RfcHJldmlldzERZW52aXJvbl9zaXplc19nZXQAAxZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxC2Vudmlyb25fZ2V0AAMDZW52CnN0cmZ0aW1lX2wABwNlbnYXX2VtYmluZF9yZWdpc3Rlcl9iaWdpbnQAEBZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxB2ZkX3NlZWsABwNlbnYKX21rdGltZV9qcwAAA2VudgpfZ210aW1lX2pzAAgDxATCBAkOAAEEAAQEBgkAHxEAAAEDAi0uGREZEREAAQkODg4OAQARERUvBBUwAjECMgECAAkBCQEAAAIJAAABAA4DBDM0AwgBBBISFTUCEwkBAwADCAgAAQkBDgMIGjYAAgMIEzcCBAQBCQ4DAwACAQECAgkAAAIBAhobOBsAAQAJOSAJEhISOgUJAAkSAAQEFgAJBAAWAyE7HwcPCAAKPA0DBCICCAAAPQAGERkKPj8GBAQDCUAAAAEAAQIEIwoEBAAAAwQECgoDAAEAAQABAQEBAAMDAAAAAAEAAQIAAQQEAAQAAQADAAAAAgIEAgIIBAADAQgCCAICAAIABAMCAAMAAwIEAwIAAwADAwADAQZBCgcKBAcKBAIABAUADwAAAQUACBcGCgQOJAIFJQUGJAUGBSUFDSZCBR4FCgUEAwUADwAFAwgXBAUFBQUFDSYFBQUHAAAHCgcEEAIUBxQnBAYQHAcHAAcQBQQUBxQnEBwHCwAFBQUMBQwFDQcLCwUFBQwFDAUNBwsPDA8AAgICAAICDxcCCAgAAAMDDw0PFwICAAIAAw8NHRgoBAUdGCgEBQQMDAIBCAIOCAgBAQABAAAAAAIBAAEAAQABAAECAQEAAAAAAQABAAEAAQECAQEBAAAAAgICAQAAAAICAgsLBwcACwsHAQALBAsHBwAABwALBwQGBgYDBAMEBgQHAQADBAMEBgQHAQABKSkDAwMDAwEJAQkEBAQDDAoNCggKDQoEAw0QDA0MDAAAAAABACEVBxAPQ0RFBAcBcAHOA84DBQcBAYAMgIACBhcEfwFBwLIYC38BQQALfwFBAAt/AUEACwedBBsGbWVtb3J5AgARX193YXNtX2NhbGxfY3RvcnMAJQZtYWxsb2MAMwRmcmVlADQQaW5mbGF0ZUVsbGlwc29pZACoARRnZXRDb3ZlcmFnZVBvc2l0aW9ucwCjAQZmZmx1c2gArgENX19nZXRUeXBlTmFtZQCrARtfZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MArAEQX19lcnJub19sb2NhdGlvbgAmGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtzZXRUZW1wUmV0MAA/FWVtc2NyaXB0ZW5fc3RhY2tfaW5pdABAGWVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2ZyZWUAQRllbXNjcmlwdGVuX3N0YWNrX2dldF9iYXNlAEIYZW1zY3JpcHRlbl9zdGFja19nZXRfZW5kAEMJc3RhY2tTYXZlAEQMc3RhY2tSZXN0b3JlAEUKc3RhY2tBbGxvYwBGHGVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2N1cnJlbnQARCJfX2N4YV9pbmNyZW1lbnRfZXhjZXB0aW9uX3JlZmNvdW50AMMEFV9fY3hhX2lzX3BvaW50ZXJfdHlwZQDZBAxkeW5DYWxsX2ppamkA4QQOZHluQ2FsbF92aWlqaWkA4gQOZHluQ2FsbF9paWlpaWoA4wQPZHluQ2FsbF9paWlpaWpqAOQEEGR5bkNhbGxfaWlpaWlpamoA5QQJ4QYBAEEBC80DUlpcXV5eX2BhYmNkZWZncF1xcnN0dXldemB7fH1+f4ABgQGCAYMBVokBigFdcWCLAYwBXV5ecY0BjgGMAY8BkAGUAV1eXnFylQGWAYIBlwGDAZgBmQGaAX+bAZwBmwGdAZ4BggGhAaIBowFeqgHTAcQBxQHSAZQCNMECKPAD7wPtA+UD5wPpA+sD/wP+A/wD9QP3A/kD+wNvhAFekQGTAZEBkgGgAZ8Bd3iyAbABsQG1AbYBrwHaAdsB3AHdAd4B3wG1AbUB4AHiAeMB5AHlAeQB/gH/AdwB3QHeAd8BtQG1AYAC4gGCAuQBgwLkAdsBpwKoAqoCqwLsAe0B7gHvAdcB2QHYAdkB2wGkApwCpQKmAvkB+gH7AfwB/wGfAqACogKjAuwB7QHuAe8B1wHZAf8BmwKcAp0CngL5AfoB+wH8AbgEtwTcA68ErgSwBLEEsgSzBOkBtAS1BLYElwSWBJgEmgScBJ0EtQGfBKAEiASHBIkEigSLBIwEjQSBBIAEggSDBIQEhQSGBF6RAZEBowSkBKUEpgSnBKgEqQSqBOkBqwSsBK0EkQGhBKEEkAQnJ6IEJ5EBkwSUBJAEtQG1AZUEkgSRAZMElASQBLUBtQGVBJIEkQGOBI8EkAS1AbUBkQSSBJEBjgSPBJAEtQG1AZEEkgRekQGzArQCtQJekQG2ArcCuwKRAbwCwgLMAs4C0QLRAtMC1QLZAtsC3QKRAeAC5ALpAuoC6wLrAuwC7QLwAvEC8gKRAfMC9gL8Av0C/gL/AoMDhAORAYUDhwOLA4wDjQOOA5ADkQNekQGTA5QDlQOWA5gDmgOdA/ED8gPzA/QD9gP4A/oDXpEBkwOfA6ADoQOjA6UDqAPgA+ED4gPjA+YD6APqA94D3wOpA94D3wOrA5EBrAOsA60DrQOtA64DtQGvA68DkQGsA6wDrQOtA60DrgO1Aa8DrwORAbADsAOtA60DrQOxA7UBrwOvA5EBsAOwA60DrQOtA7EDtQGvA68DkQGzA7wDkQG+A8YDkQHIA8wDkQHNA9EDkQHSA9MD3AGRAdID1APcAV65BMQEwgRekQEoKMUEkQHHBNcE0wTQBJEB0QSRAdsEkQHcBN0E3gTdBJEB2ATWBM4EkQHJBMsEzASRAdoECsyfCsIE6iIDEH8DfgJ8QcCyGCQDQcCyFCQCQfyhFC0AAEUEQCMAQRBrIgUkAEGcnxQQ6gEaQcyfFEF/NgIAQcSfFEHUnxQ2AgBBvJ8UQej9EzYCAEGcnxRBtJgTNgIAQdCfFEEAOgAAIAVBDGoiAEGgnxQoAgAiATYCACABIAEoAgRBAWo2AgRBnJ8UIABBnJ8UKAIAKAIIEQIAIAAoAgAiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgBUEQaiQAQfyZFEH8mRM2AgBB/JkUQeCZEzYCAEH8mRRBuJkTNgIAQfSZFEGkmRM2AgBB+JkUQQA2AgBB/JkUQZyfFBCZAkHcnxRB0PwTQYygFBCVAkGkmxRB3J8UEJYCQZSgFEG4+xNBxKAUEJUCQcycFEGUoBQQlgJB9J0UQcycFCgCAEEMaygCAEHknBRqKAIAEJYCQfSZFCgCAEEMaygCAEH0mRRqQaSbFDYCSEHMnBQoAgBBDGsoAgBBzJwUaiIAIAAoAgRBgMAAcjYCBEHMnBQoAgBBDGsoAgBBzJwUakGkmxQ2AkgjAEEQayIFJABBzKAUEIQCGkH8oBRBfzYCAEH0oBRBhKEUNgIAQeygFEHo/RM2AgBBzKAUQbybEzYCAEGAoRRBADoAACAFQQxqIgBB0KAUKAIAIgE2AgAgASABKAIEQQFqNgIEQcygFCAAQcygFCgCACgCCBECACAAKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAVBEGokAEHUmhRB/JkTNgIAQdSaFEHonBM2AgBB1JoUQcCcEzYCAEHMmhRBrJwTNgIAQdCaFEEANgIAQdSaFEHMoBQQmQJBjKEUQdD8E0G8oRQQlwJB+JsUQYyhFBCYAkHEoRRBuPsTQfShFBCXAkGgnRRBxKEUEJgCQcieFEGgnRQoAgBBDGsoAgBBuJ0UaigCABCYAkHMmhQoAgBBDGsoAgBBzJoUakH4mxQ2AkhBoJ0UKAIAQQxrKAIAQaCdFGoiACAAKAIEQYDAAHI2AgRBoJ0UKAIAQQxrKAIAQaCdFGpB+JsUNgJIQfyhFEEBOgAACyMAQRBrIgAkAAJAIABBDGogAEEIahAeDQBBgKIUIAAoAgxBAnRBBGoQMyIFNgIAIAVFDQAgACgCCBAzIgUEQEGAohQoAgAiASAAKAIMQQJ0akEANgIAIAEgBRAfRQ0BC0GAohRBADYCAAsgAEEQaiQAQaSDFEIANwIAQayDFEEANgIAEBUaQbSDFEEDNgIAQbiDFEEANgIAEFxBuIMUQfCHFCgCADYCAEHwhxRBtIMUNgIAQbyDFEEQNgIAQcCDFEEANgIAQejrEkG86BJB5OgSQQBB2OwSQRFBkOoSQQBBkOoSQQBB+z1B2+wSQRIQA0Ho6xJBAkH06BJB6OwSQRNBFBAEQQQQVCIAQQQ2AgBBBBBUIgVBBDYCAEHo6xJBhsEAQeDuEkHo7BJBFSAAQeDuEkGA7RJBFiAFEAZBwIMUQfCHFCgCADYCAEHwhxRBvIMUNgIAQcSDFEEXNgIAQciDFEEANgIAEHlByIMUQfCHFCgCADYCAEHwhxRBxIMUNgIAQQAhAUEAIQUjAEHQAGsiAyQAQsDiqLAGEIUBQoCA3+2n4gF8IRAjAEEQayIAJAAgACAQQsCEPX83AwggACkDCCERIABBEGokACADIBE3A0gQswEgAykDSCIQpyAQQiCIp0GAiBQQJEGoiBRBo8QANgIAQaCIFEIANwIAQYCIFEIANwIAQYiIFEEANgIAELMBQYCIFBAjrSMBrUIghoRC6Ad+IRAjAEEwayIAJAACQCAAQRBqIgciBCAAQSRqIgZGDQAgEEIAWQ0AIARBLToAACAEQQFqIQRCACAQfSEQCyAAAn8gBiAEayIJQRNMBEBBPSAJQcAAIBBCAYR5p2tB0QlsQQx2IgggCEEDdEGQ8RNqKQMAIBBYakgNARoLAn8gEEL/////D1gEQCAEIBCnELwEDAELIBBCgMivoCVaBH8gEEKAyK+gJYAiEkKAuNDfWn4gEHwhECAEIBKnELwEBSAECyAQQoDC1y+AIhKnEL0EIBJCgL6o0A9+IBB8pxDABAshBkEACzYCDCAAIAY2AgggA0EwaiIEIAcgACgCCBCNAhogAEEwaiQAIANBPGogBBBbIAMsADtBAEgEQCADKAIwEDQLAkACQAJAQbCDFC0AAEUEQEGAmhIQVEGOywBB/5kSECsiCkEAOgD/mRIgA0EANgI4IANCADcDMANAIAJBAXFFBEAgA0EwaiACIApqLAAAEIYBCyACQQFqIgJB/5kSRw0AC0EAIQJBoIMULQAARQRAQZSDFEHQABBUIgA2AgBBmIMUQsCAgICAioCAgH83AgAgAEGy5hIpAAA3ADggAEGq5hIpAAA3ADAgAEGi5hIpAAA3ACggAEGa5hIpAAA3ACAgAEGS5hIpAAA3ABggAEGK5hIpAAA3ABAgAEGC5hIpAAA3AAggAEH65RIpAAA3AAAgAEEAOgBAQaCDFEEBOgAAC0GACBBUQf8BQYAIECkhBkGUgxRBlIMUKAIAQZ+DFCwAAEEAThshAANAIAYgACACaiwAAEECdGogAjYCACAGIAAgAkEBciIEaiwAAEECdGogBDYCACAGIAAgAkECciIEaiwAAEECdGogBDYCACAGIAAgAkEDciIEaiwAAEECdGogBDYCACACQQRqIgJBwABHDQALAkAgAygCNCADLQA7IgAgAMBBAEgiABsiAkUEQEEAIQIMAQsgAygCMCADQTBqIAAbIgkgAmohDkF4IQdBACECA0AgBiAJLQAAQQJ0aigCACIAQX9GDQEgACAMQQZ0aiEMAn8gB0EGaiIAIAdBekgNABogDCAAdSEEIAEgAksEQCACIAQ6AAAgAkEBaiECIAdBAmsMAQsgAiAFayILQQFqIgBBAEgNBEH/////ByABIAVrIgFBAXQiCCAAIAAgCEkbIAFB/////wNPGyINBH8gDRBUBUEACyIIIAtqIgAgBDoAAAJ/IAAgAiAFRg0AGiAFQX9zIAJqIQ9BACEEIAAhASALQQNxIgsEQANAIAFBAWsiASACQQFrIgItAAA6AAAgBEEBaiIEIAtHDQALCyAIIA9BA0kNABoDQCABQQFrIAJBAWstAAA6AAAgAUECayACQQJrLQAAOgAAIAFBA2sgAkEDay0AADoAACABQQRrIgEgAkEEayICLQAAOgAAIAIgBUcNAAsgCAshBCAFBEAgBRA0CyAIIA1qIQEgAEEBaiECIAQhBSAHQQJrCyEHIAlBAWoiCSAORw0ACwsgBhA0IAMsADtBAEgEQCADKAIwEDQLIAoQNCACIAVrIgBB8P///wdPDQICQCAAQQpNBEAgAyAAOgA7IANBMGohAQwBCyAAQQ9yQQFqIgQQVCEBIAMgBEGAgICAeHI2AjggAyABNgIwIAMgADYCNAsCQCACIAVGDQAgBUF/cyACaiEGAkAgAEEHcSIHRQRAIAUhAAwBC0EAIQQgBSEAA0AgASAALQAAOgAAIAFBAWohASAAQQFqIQAgBEEBaiIEIAdHDQALCyAGQQdJDQADQCABIAAtAAA6AAAgASAALQABOgABIAEgAC0AAjoAAiABIAAtAAM6AAMgASAALQAEOgAEIAEgAC0ABToABSABIAAtAAY6AAYgASAALQAHOgAHIAFBCGohASAAQQhqIgAgAkcNAAsLQQAhAiABQQA6AABB4AAQVEGO5RJB2AAQKyIJQQA6AFggA0EANgIoIANCADcDICADKAI0IAMsADsiCEH/AXEgCEEASCIAGyIBBH8gAygCMCADQTBqIAAbIQADQCADQSBqIAkgAkHYAHBqLQAAIAAgAmotAABzwBCGASACQQFqIgIgAUcNAAsgAygCICADQSBqIAMtACvAQQBIGwUgA0EgagsQACECIAMsACtBAEgEQCADKAIgEDQLIAIQLyIBQfD///8HTw0CAkAgAUEKTQRAIAMgAToAKyADQSBqIQAMAQsgAUEPckEBaiIEEFQhACADIARBgICAgHhyNgIoIAMgADYCICADIAE2AiQLIAAgAiABEEsgAWpBADoAACMAQRBrIgYkACAGQRA2AgwgA0EgaiIAKAIEIAAtAAsiAUH/AHEgAUGAAXFBB3YbIgFBAEkEQBDVAQALIAAoAgAgACAALQALQYABcUEHdhshCiAGIAE2AgggA0EIaiIBIQAgBkEIaiAGQQxqIAYoAgggBigCDEkbKAIAIQQjAEEQayIHJAACQCAEQfD///8HSQRAAkAgBEELSQRAIAAgBDoACwwBCyAHQQhqIARBC08EfyAEQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBahCOAiAAIAcoAggiAjYCACAAIAcoAgxBgICAgHhyNgIIIAAgBDYCBCACIQALIAAgCiAEEOEBIARqQQA6AAAgB0EQaiQADAELEFUACyAGQRBqJAAgA0EUaiABIgAQWyAALAALQQBIBEAgACgCABA0C0GAAhBUQdzBAEHwARArIgFBADoA8AECQCADKAIYIAMtAB8iACAAwEEASCIAGyIGBEAgAUHwAWohBCADKAIUIANBFGogABshBwJAAkACQCAGQfABSg0AIAcsAAAhCkHwASECIAEhAANAIAIgBmtBAWoiAkUNASAAIAogAhCHASIARQ0BIAAgByAGEIgBRQ0CIAQgAEEBaiIAayICIAZODQALC0GwgxRBADoAAAwBC0GwgxQgACAERyAAIAFrQX9HcSIAOgAAIAANAgsgBkHxAUgEQANAIAcsAAAhCkHwASECIAEhAAJAA0ACQCACIAZrQQFqIgJFDQAgACAKIAIQhwEiAkUNACACIAcgBhCIAUUNAiAEIAJBAWoiAGsiAiAGTg0BCwsgBCECC0GwgxQgAiAERyACIAFrQX9HcSIAOgAAIABFDQAMAwsAC0GwgxRBADoAAANADAALAAtBsIMUQQE6AAALIAEQNCADLAAfQQBIBEAgAygCFBA0CyADLAArQQBIBEAgAygCIBA0CyAJEDQgCEEASARAIAMoAjAQNAsgBQRAIAUQNAsgAykDSCERCyMAQTBrIgAkAEH8hxQtAABFBEBB/YcUEBY6AABB/IcUQQE6AAALIAACfhAVIhNEAAAAAABAj0CjIhSZRAAAAAAAAOBDYwRAIBSwDAELQoCAgICAgICAgH8LIhA3AxggAAJ/IBMgEELoB365oUQAAAAAAECPQKJEAAAAAABAj0CiIhOZRAAAAAAAAOBBYwRAIBOqDAELQYCAgIB4CzYCICAAIAApAxg3AxAgACAAKAIgQegHbaw3AwggACkDECEQIwBBEGsiBSQAIAUgEBDWASEBIAUgACkDCCABKQMAfDcDCCAFKQMIIRAgBUEQaiQAIAAgEDcDKCAAKQMoIRAgAEEwaiQAQbCDFC0AACEAIAMsAEdBAEgEQCADKAI8EDQLQdiEFEHUhBQ2AgBB1IQUQdSEFDYCAEHIhBQgAEUgERCFASAQU3I6AABB3IQUQQA2AgAgA0HQAGokAAwCCxBXAAsQVQALQcyEFEEmNgIAQdCEFEEANgIAEIoBQdCEFEHwhxQoAgA2AgBB8IcUQcyEFDYCAEG4hhRBNTYCAEG8hhRBADYCABCUAUG8hhRB8IcUKAIANgIAQfCHFEG4hhQ2AgBB4IYUQcoANgIAQcCGFEGw+xMrAwBEHwx7pYjk7z+iOQMAQeSGFEEANgIAQYI8QQZBgO4SQZjuEkHLAEHMAEEAEAtB5IYUQfCHFCgCADYCAEHwhxRB4IYUNgIAQfSHFEHOADYCAEH4hxRBADYCABCqAUH4hxRB8IcUKAIANgIAQfCHFEH0hxQ2AgBBhJkUQSo2AgBBzJkUQdyiFDYCAAsGAEGg/xMLBABBAQsDAAEL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAALWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALgAQBA38gAkGABE8EQCAAIAEgAhAaIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkUEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgJBA3FFDQEgAiADSQ0ACwsCQCADQXxxIgRBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAAC8ABAQN/AkAgASACKAIQIgMEfyADBSACECoNASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRBAAPCwJAIAIoAlBBAEgEQEEAIQMMAQsgASEEA0AgBCIDRQRAQQAhAwwCCyAAIANBAWsiBGotAABBCkcNAAsgAiAAIAMgAigCJBEEACIEIANJDQEgACADaiEAIAEgA2shASACKAIUIQULIAUgACABECsaIAIgAigCFCABajYCFCABIANqIQQLIAQLQAEBfyABIAJsIQQgBAJ/IAMoAkxBAEgEQCAAIAQgAxAsDAELIAAgBCADECwLIgBGBEAgAkEAIAEbDwsgACABbguMAQECfyMAQRBrIgAkACAAQQo6AA8CQAJAQcj7EygCACIBBH8gAQVBuPsTECoNAkHI+xMoAgALQcz7EygCACIBRg0AQYj8EygCAEEKRg0AQcz7EyABQQFqNgIAIAFBCjoAAAwBC0G4+xMgAEEPakEBQdz7EygCABEEAEEBRw0AIAAtAA8aCyAAQRBqJAALegEDfwJAAkAgACIBQQNxRQ0AIAAtAABFBEBBAA8LA0AgAUEBaiIBQQNxRQ0BIAEtAAANAAsMAQsDQCABIgJBBGohASACKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACwNAIAIiAUEBaiECIAEtAAANAAsLIAEgAGsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB/oiEAIAFB/w9JBEAgAUH/B2shAQwCCyAARAAAAAAAAOB/oiEAQf0XIAEgAUH9F04bQf4PayEBDAELIAFBgXhKDQAgAEQAAAAAAABgA6IhACABQbhwSwRAIAFByQdqIQEMAQsgAEQAAAAAAABgA6IhAEHwaCABIAFB8GhMG0GSD2ohAQsgACABQf8Haq1CNIa/ogvGBgIEfwN+IwBBgAFrIgUkAAJAAkACQCADIARCAEIAEDdFDQACfyAEQv///////z+DIQoCfyAEQjCIp0H//wFxIgZB//8BRwRAQQQgBg0BGkECQQMgAyAKhFAbDAILIAMgCoRQCwshBiACQjCIpyIIQf//AXEiB0H//wFGDQAgBg0BCyAFQRBqIAEgAiADIAQQPCAFIAUpAxAiAiAFKQMYIgEgAiABEDogBSkDCCECIAUpAwAhBAwBCyABIAJC////////////AIMiCiADIARC////////////AIMiCRA3QQBMBEAgASAKIAMgCRA3BEAgASEEDAILIAVB8ABqIAEgAkIAQgAQPCAFKQN4IQIgBSkDcCEEDAELIARCMIinQf//AXEhBiAHBH4gAQUgBUHgAGogASAKQgBCgICAgICAwLvAABA8IAUpA2giCkIwiKdB+ABrIQcgBSkDYAshBCAGRQRAIAVB0ABqIAMgCUIAQoCAgICAgMC7wAAQPCAFKQNYIglCMIinQfgAayEGIAUpA1AhAwsgCUL///////8/g0KAgICAgIDAAIQhCyAKQv///////z+DQoCAgICAgMAAhCEKIAYgB0gEQANAAn4gCiALfSADIARWrX0iCUIAWQRAIAkgBCADfSIEhFAEQCAFQSBqIAEgAkIAQgAQPCAFKQMoIQIgBSkDICEEDAULIAlCAYYgBEI/iIQMAQsgCkIBhiAEQj+IhAshCiAEQgGGIQQgB0EBayIHIAZKDQALIAYhBwsCQCAKIAt9IAMgBFatfSIJQgBTBEAgCiEJDAELIAkgBCADfSIEhEIAUg0AIAVBMGogASACQgBCABA8IAUpAzghAiAFKQMwIQQMAQsgCUL///////8/WARAA0AgBEI/iCEBIAdBAWshByAEQgGGIQQgASAJQgGGhCIJQoCAgICAgMAAVA0ACwsgCEGAgAJxIQYgB0EATARAIAVBQGsgBCAJQv///////z+DIAdB+ABqIAZyrUIwhoRCAEKAgICAgIDAwz8QPCAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAtSAQJ/Qaj7EygCACIBIABBB2pBeHEiAmohAAJAIAJBACAAIAFNGw0AIAA/AEEQdEsEQCAAEBxFDQELQaj7EyAANgIAIAEPC0Gg/xNBMDYCAEF/C8goAQt/IwBBEGsiCiQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQaT/EygCACIGQRAgAEELakF4cSAAQQtJGyIFQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQcz/E2oiACABQdT/E2ooAgAiASgCCCIERgRAQaT/EyAGQX4gAndxNgIADAELIAQgADYCDCAAIAQ2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwPCyAFQaz/EygCACIHTQ0BIAEEQAJAQQIgAHQiAkEAIAJrciABIAB0cWgiAUEDdCIAQcz/E2oiAiAAQdT/E2ooAgAiACgCCCIERgRAQaT/EyAGQX4gAXdxIgY2AgAMAQsgBCACNgIMIAIgBDYCCAsgACAFQQNyNgIEIAAgBWoiCCABQQN0IgEgBWsiBEEBcjYCBCAAIAFqIAQ2AgAgBwRAIAdBeHFBzP8TaiEBQbj/EygCACECAn8gBkEBIAdBA3Z0IgNxRQRAQaT/EyADIAZyNgIAIAEMAQsgASgCCAshAyABIAI2AgggAyACNgIMIAIgATYCDCACIAM2AggLIABBCGohAEG4/xMgCDYCAEGs/xMgBDYCAAwPC0Go/xMoAgAiC0UNASALaEECdEHUgRRqKAIAIgIoAgRBeHEgBWshAyACIQEDQAJAIAEoAhAiAEUEQCABKAIUIgBFDQELIAAoAgRBeHEgBWsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAQsLIAIoAhghCSACIAIoAgwiBEcEQEG0/xMoAgAaIAIoAggiACAENgIMIAQgADYCCAwOCyACQRRqIgEoAgAiAEUEQCACKAIQIgBFDQMgAkEQaiEBCwNAIAEhCCAAIgRBFGoiASgCACIADQAgBEEQaiEBIAQoAhAiAA0ACyAIQQA2AgAMDQtBfyEFIABBv39LDQAgAEELaiIAQXhxIQVBqP8TKAIAIghFDQBBACAFayEDAkACQAJAAn9BACAFQYACSQ0AGkEfIAVB////B0sNABogBUEmIABBCHZnIgBrdkEBcSAAQQF0a0E+agsiB0ECdEHUgRRqKAIAIgFFBEBBACEADAELQQAhACAFQRkgB0EBdmtBACAHQR9HG3QhAgNAAkAgASgCBEF4cSAFayIGIANPDQAgASEEIAYiAw0AQQAhAyABIQAMAwsgACABKAIUIgYgBiABIAJBHXZBBHFqKAIQIgFGGyAAIAYbIQAgAkEBdCECIAENAAsLIAAgBHJFBEBBACEEQQIgB3QiAEEAIABrciAIcSIARQ0DIABoQQJ0QdSBFGooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAVrIgIgA0khASACIAMgARshAyAAIAQgARshBCAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAERQ0AIANBrP8TKAIAIAVrTw0AIAQoAhghByAEIAQoAgwiAkcEQEG0/xMoAgAaIAQoAggiACACNgIMIAIgADYCCAwMCyAEQRRqIgEoAgAiAEUEQCAEKAIQIgBFDQMgBEEQaiEBCwNAIAEhBiAAIgJBFGoiASgCACIADQAgAkEQaiEBIAIoAhAiAA0ACyAGQQA2AgAMCwsgBUGs/xMoAgAiBE0EQEG4/xMoAgAhAAJAIAQgBWsiAUEQTwRAIAAgBWoiAiABQQFyNgIEIAAgBGogATYCACAAIAVBA3I2AgQMAQsgACAEQQNyNgIEIAAgBGoiASABKAIEQQFyNgIEQQAhAkEAIQELQaz/EyABNgIAQbj/EyACNgIAIABBCGohAAwNCyAFQbD/EygCACICSQRAQbD/EyACIAVrIgE2AgBBvP8TQbz/EygCACIAIAVqIgI2AgAgAiABQQFyNgIEIAAgBUEDcjYCBCAAQQhqIQAMDQtBACEAIAVBL2oiAwJ/QfyCFCgCAARAQYSDFCgCAAwBC0GIgxRCfzcCAEGAgxRCgKCAgICABDcCAEH8ghQgCkEMakFwcUHYqtWqBXM2AgBBkIMUQQA2AgBB4IIUQQA2AgBBgCALIgFqIgZBACABayIIcSIBIAVNDQxB3IIUKAIAIgQEQEHUghQoAgAiByABaiIJIAdNDQ0gBCAJSQ0NCwJAQeCCFC0AAEEEcUUEQAJAAkACQAJAQbz/EygCACIEBEBB5IIUIQADQCAEIAAoAgAiB08EQCAHIAAoAgRqIARLDQMLIAAoAggiAA0ACwtBABAyIgJBf0YNAyABIQZBgIMUKAIAIgBBAWsiBCACcQRAIAEgAmsgAiAEakEAIABrcWohBgsgBSAGTw0DQdyCFCgCACIABEBB1IIUKAIAIgQgBmoiCCAETQ0EIAAgCEkNBAsgBhAyIgAgAkcNAQwFCyAGIAJrIAhxIgYQMiICIAAoAgAgACgCBGpGDQEgAiEACyAAQX9GDQEgBUEwaiAGTQRAIAAhAgwEC0GEgxQoAgAiAiADIAZrakEAIAJrcSICEDJBf0YNASACIAZqIQYgACECDAMLIAJBf0cNAgtB4IIUQeCCFCgCAEEEcjYCAAsgARAyIQJBABAyIQAgAkF/Rg0FIABBf0YNBSAAIAJNDQUgACACayIGIAVBKGpNDQULQdSCFEHUghQoAgAgBmoiADYCAEHYghQoAgAgAEkEQEHYghQgADYCAAsCQEG8/xMoAgAiAwRAQeSCFCEAA0AgAiAAKAIAIgEgACgCBCIEakYNAiAAKAIIIgANAAsMBAtBtP8TKAIAIgBBACAAIAJNG0UEQEG0/xMgAjYCAAtBACEAQeiCFCAGNgIAQeSCFCACNgIAQcT/E0F/NgIAQcj/E0H8ghQoAgA2AgBB8IIUQQA2AgADQCAAQQN0IgFB1P8TaiABQcz/E2oiBDYCACABQdj/E2ogBDYCACAAQQFqIgBBIEcNAAtBsP8TIAZBKGsiAEF4IAJrQQdxIgFrIgQ2AgBBvP8TIAEgAmoiATYCACABIARBAXI2AgQgACACakEoNgIEQcD/E0GMgxQoAgA2AgAMBAsgAiADTQ0CIAEgA0sNAiAAKAIMQQhxDQIgACAEIAZqNgIEQbz/EyADQXggA2tBB3EiAGoiATYCAEGw/xNBsP8TKAIAIAZqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQcD/E0GMgxQoAgA2AgAMAwtBACEEDAoLQQAhAgwIC0G0/xMoAgAgAksEQEG0/xMgAjYCAAsgAiAGaiEBQeSCFCEAAkACQAJAA0AgASAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0HkghQhAANAIAMgACgCACIBTwRAIAEgACgCBGoiBCADSw0DCyAAKAIIIQAMAAsACyAAIAI2AgAgACAAKAIEIAZqNgIEIAJBeCACa0EHcWoiByAFQQNyNgIEIAFBeCABa0EHcWoiBiAFIAdqIgVrIQAgAyAGRgRAQbz/EyAFNgIAQbD/E0Gw/xMoAgAgAGoiADYCACAFIABBAXI2AgQMCAtBuP8TKAIAIAZGBEBBuP8TIAU2AgBBrP8TQaz/EygCACAAaiIANgIAIAUgAEEBcjYCBCAAIAVqIAA2AgAMCAsgBigCBCIDQQNxQQFHDQYgA0F4cSEJIANB/wFNBEAgBigCDCIBIAYoAggiAkYEQEGk/xNBpP8TKAIAQX4gA0EDdndxNgIADAcLIAIgATYCDCABIAI2AggMBgsgBigCGCEIIAYgBigCDCICRwRAIAYoAggiASACNgIMIAIgATYCCAwFCyAGQRRqIgEoAgAiA0UEQCAGKAIQIgNFDQQgBkEQaiEBCwNAIAEhBCADIgJBFGoiASgCACIDDQAgAkEQaiEBIAIoAhAiAw0ACyAEQQA2AgAMBAtBsP8TIAZBKGsiAEF4IAJrQQdxIgFrIgg2AgBBvP8TIAEgAmoiATYCACABIAhBAXI2AgQgACACakEoNgIEQcD/E0GMgxQoAgA2AgAgAyAEQScgBGtBB3FqQS9rIgAgACADQRBqSRsiAUEbNgIEIAFB7IIUKQIANwIQIAFB5IIUKQIANwIIQeyCFCABQQhqNgIAQeiCFCAGNgIAQeSCFCACNgIAQfCCFEEANgIAIAFBGGohAANAIABBBzYCBCAAQQhqIQIgAEEEaiEAIAIgBEkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgAgAkH/AU0EQCACQXhxQcz/E2ohAAJ/QaT/EygCACIBQQEgAkEDdnQiAnFFBEBBpP8TIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QdSBFGohAQJAAkBBqP8TKAIAIgRBASAAdCIGcUUEQEGo/xMgBCAGcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEEA0AgBCIBKAIEQXhxIAJGDQIgAEEddiEEIABBAXQhACABIARBBHFqIgYoAhAiBA0ACyAGIAM2AhALIAMgATYCGCADIAM2AgwgAyADNgIIDAELIAEoAggiACADNgIMIAEgAzYCCCADQQA2AhggAyABNgIMIAMgADYCCAtBsP8TKAIAIgAgBU0NAEGw/xMgACAFayIBNgIAQbz/E0G8/xMoAgAiACAFaiICNgIAIAIgAUEBcjYCBCAAIAVBA3I2AgQgAEEIaiEADAgLQaD/E0EwNgIAQQAhAAwHC0EAIQILIAhFDQACQCAGKAIcIgFBAnRB1IEUaiIEKAIAIAZGBEAgBCACNgIAIAINAUGo/xNBqP8TKAIAQX4gAXdxNgIADAILIAhBEEEUIAgoAhAgBkYbaiACNgIAIAJFDQELIAIgCDYCGCAGKAIQIgEEQCACIAE2AhAgASACNgIYCyAGKAIUIgFFDQAgAiABNgIUIAEgAjYCGAsgACAJaiEAIAYgCWoiBigCBCEDCyAGIANBfnE2AgQgBSAAQQFyNgIEIAAgBWogADYCACAAQf8BTQRAIABBeHFBzP8TaiEBAn9BpP8TKAIAIgJBASAAQQN2dCIAcUUEQEGk/xMgACACcjYCACABDAELIAEoAggLIQAgASAFNgIIIAAgBTYCDCAFIAE2AgwgBSAANgIIDAELQR8hAyAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiEDCyAFIAM2AhwgBUIANwIQIANBAnRB1IEUaiEBAkACQEGo/xMoAgAiAkEBIAN0IgRxRQRAQaj/EyACIARyNgIAIAEgBTYCAAwBCyAAQRkgA0EBdmtBACADQR9HG3QhAyABKAIAIQIDQCACIgEoAgRBeHEgAEYNAiADQR12IQIgA0EBdCEDIAEgAkEEcWoiBCgCECICDQALIAQgBTYCEAsgBSABNgIYIAUgBTYCDCAFIAU2AggMAQsgASgCCCIAIAU2AgwgASAFNgIIIAVBADYCGCAFIAE2AgwgBSAANgIICyAHQQhqIQAMAgsCQCAHRQ0AAkAgBCgCHCIAQQJ0QdSBFGoiASgCACAERgRAIAEgAjYCACACDQFBqP8TIAhBfiAAd3EiCDYCAAwCCyAHQRBBFCAHKAIQIARGG2ogAjYCACACRQ0BCyACIAc2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLAkAgA0EPTQRAIAQgAyAFaiIAQQNyNgIEIAAgBGoiACAAKAIEQQFyNgIEDAELIAQgBUEDcjYCBCAEIAVqIgIgA0EBcjYCBCACIANqIAM2AgAgA0H/AU0EQCADQXhxQcz/E2ohAAJ/QaT/EygCACIBQQEgA0EDdnQiA3FFBEBBpP8TIAEgA3I2AgAgAAwBCyAAKAIICyEBIAAgAjYCCCABIAI2AgwgAiAANgIMIAIgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAiAANgIcIAJCADcCECAAQQJ0QdSBFGohAQJAAkAgCEEBIAB0IgZxRQRAQaj/EyAGIAhyNgIAIAEgAjYCAAwBCyADQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQUDQCAFIgEoAgRBeHEgA0YNAiAAQR12IQYgAEEBdCEAIAEgBkEEcWoiBigCECIFDQALIAYgAjYCEAsgAiABNgIYIAIgAjYCDCACIAI2AggMAQsgASgCCCIAIAI2AgwgASACNgIIIAJBADYCGCACIAE2AgwgAiAANgIICyAEQQhqIQAMAQsCQCAJRQ0AAkAgAigCHCIAQQJ0QdSBFGoiASgCACACRgRAIAEgBDYCACAEDQFBqP8TIAtBfiAAd3E2AgAMAgsgCUEQQRQgCSgCECACRhtqIAQ2AgAgBEUNAQsgBCAJNgIYIAIoAhAiAARAIAQgADYCECAAIAQ2AhgLIAIoAhQiAEUNACAEIAA2AhQgACAENgIYCwJAIANBD00EQCACIAMgBWoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAVBA3I2AgQgAiAFaiIEIANBAXI2AgQgAyAEaiADNgIAIAcEQCAHQXhxQcz/E2ohAEG4/xMoAgAhAQJ/QQEgB0EDdnQiBSAGcUUEQEGk/xMgBSAGcjYCACAADAELIAAoAggLIQYgACABNgIIIAYgATYCDCABIAA2AgwgASAGNgIIC0G4/xMgBDYCAEGs/xMgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAv1CwEHfwJAIABFDQAgAEEIayICIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAiACKAIAIgFrIgJBtP8TKAIASQ0BIAAgAWohAAJAAkBBuP8TKAIAIAJHBEAgAUH/AU0EQCABQQN2IQQgAigCDCIBIAIoAggiA0YEQEGk/xNBpP8TKAIAQX4gBHdxNgIADAULIAMgATYCDCABIAM2AggMBAsgAigCGCEGIAIgAigCDCIBRwRAIAIoAggiAyABNgIMIAEgAzYCCAwDCyACQRRqIgQoAgAiA0UEQCACKAIQIgNFDQIgAkEQaiEECwNAIAQhByADIgFBFGoiBCgCACIDDQAgAUEQaiEEIAEoAhAiAw0ACyAHQQA2AgAMAgsgBSgCBCIBQQNxQQNHDQJBrP8TIAA2AgAgBSABQX5xNgIEIAIgAEEBcjYCBCAFIAA2AgAPC0EAIQELIAZFDQACQCACKAIcIgNBAnRB1IEUaiIEKAIAIAJGBEAgBCABNgIAIAENAUGo/xNBqP8TKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgAkYbaiABNgIAIAFFDQELIAEgBjYCGCACKAIQIgMEQCABIAM2AhAgAyABNgIYCyACKAIUIgNFDQAgASADNgIUIAMgATYCGAsgAiAFTw0AIAUoAgQiAUEBcUUNAAJAAkACQAJAIAFBAnFFBEBBvP8TKAIAIAVGBEBBvP8TIAI2AgBBsP8TQbD/EygCACAAaiIANgIAIAIgAEEBcjYCBCACQbj/EygCAEcNBkGs/xNBADYCAEG4/xNBADYCAA8LQbj/EygCACAFRgRAQbj/EyACNgIAQaz/E0Gs/xMoAgAgAGoiADYCACACIABBAXI2AgQgACACaiAANgIADwsgAUF4cSAAaiEAIAFB/wFNBEAgAUEDdiEEIAUoAgwiASAFKAIIIgNGBEBBpP8TQaT/EygCAEF+IAR3cTYCAAwFCyADIAE2AgwgASADNgIIDAQLIAUoAhghBiAFIAUoAgwiAUcEQEG0/xMoAgAaIAUoAggiAyABNgIMIAEgAzYCCAwDCyAFQRRqIgQoAgAiA0UEQCAFKAIQIgNFDQIgBUEQaiEECwNAIAQhByADIgFBFGoiBCgCACIDDQAgAUEQaiEEIAEoAhAiAw0ACyAHQQA2AgAMAgsgBSABQX5xNgIEIAIgAEEBcjYCBCAAIAJqIAA2AgAMAwtBACEBCyAGRQ0AAkAgBSgCHCIDQQJ0QdSBFGoiBCgCACAFRgRAIAQgATYCACABDQFBqP8TQaj/EygCAEF+IAN3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogATYCACABRQ0BCyABIAY2AhggBSgCECIDBEAgASADNgIQIAMgATYCGAsgBSgCFCIDRQ0AIAEgAzYCFCADIAE2AhgLIAIgAEEBcjYCBCAAIAJqIAA2AgAgAkG4/xMoAgBHDQBBrP8TIAA2AgAPCyAAQf8BTQRAIABBeHFBzP8TaiEBAn9BpP8TKAIAIgNBASAAQQN2dCIAcUUEQEGk/xMgACADcjYCACABDAELIAEoAggLIQAgASACNgIIIAAgAjYCDCACIAE2AgwgAiAANgIIDwtBHyEDIABB////B00EQCAAQSYgAEEIdmciAWt2QQFxIAFBAXRrQT5qIQMLIAIgAzYCHCACQgA3AhAgA0ECdEHUgRRqIQECQAJAAkBBqP8TKAIAIgRBASADdCIHcUUEQEGo/xMgBCAHcjYCACABIAI2AgAgAiABNgIYDAELIABBGSADQQF2a0EAIANBH0cbdCEDIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIANBHXYhASADQQF0IQMgBCABQQRxaiIHQRBqKAIAIgENAAsgByACNgIQIAIgBDYCGAsgAiACNgIMIAIgAjYCCAwBCyAEKAIIIgAgAjYCDCAEIAI2AgggAkEANgIYIAIgBDYCDCACIAA2AggLQcT/E0HE/xMoAgBBAWsiAEF/IAAbNgIACwuICAELfyAARQRAIAEQMw8LIAFBQE8EQEGg/xNBMDYCAEEADwsCf0EQIAFBC2pBeHEgAUELSRshBSAAQQhrIgQoAgQiCEF4cSEDAkAgCEEDcUUEQEEAIAVBgAJJDQIaIAVBBGogA00EQCAEIQIgAyAFa0GEgxQoAgBBAXRNDQILQQAMAgsgAyAEaiEGAkAgAyAFTwRAIAMgBWsiAkEQSQ0BIAQgCEEBcSAFckECcjYCBCAEIAVqIgMgAkEDcjYCBCAGIAYoAgRBAXI2AgQgAyACEDYMAQtBvP8TKAIAIAZGBEBBsP8TKAIAIANqIgMgBU0NAiAEIAhBAXEgBXJBAnI2AgQgBCAFaiICIAMgBWsiA0EBcjYCBEGw/xMgAzYCAEG8/xMgAjYCAAwBC0G4/xMoAgAgBkYEQEGs/xMoAgAgA2oiAyAFSQ0CAkAgAyAFayICQRBPBEAgBCAIQQFxIAVyQQJyNgIEIAQgBWoiByACQQFyNgIEIAMgBGoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAEIAhBAXEgA3JBAnI2AgQgAyAEaiICIAIoAgRBAXI2AgRBACECC0G4/xMgBzYCAEGs/xMgAjYCAAwBCyAGKAIEIgdBAnENASAHQXhxIANqIgkgBUkNASAJIAVrIQsCQCAHQf8BTQRAIAYoAgwiAiAGKAIIIgNGBEBBpP8TQaT/EygCAEF+IAdBA3Z3cTYCAAwCCyADIAI2AgwgAiADNgIIDAELIAYoAhghCgJAIAYgBigCDCIDRwRAQbT/EygCABogBigCCCICIAM2AgwgAyACNgIIDAELAkAgBkEUaiICKAIAIgdFBEAgBigCECIHRQ0BIAZBEGohAgsDQCACIQwgByIDQRRqIgIoAgAiBw0AIANBEGohAiADKAIQIgcNAAsgDEEANgIADAELQQAhAwsgCkUNAAJAIAYoAhwiAkECdEHUgRRqIgcoAgAgBkYEQCAHIAM2AgAgAw0BQaj/E0Go/xMoAgBBfiACd3E2AgAMAgsgCkEQQRQgCigCECAGRhtqIAM2AgAgA0UNAQsgAyAKNgIYIAYoAhAiAgRAIAMgAjYCECACIAM2AhgLIAYoAhQiAkUNACADIAI2AhQgAiADNgIYCyALQQ9NBEAgBCAIQQFxIAlyQQJyNgIEIAQgCWoiAiACKAIEQQFyNgIEDAELIAQgCEEBcSAFckECcjYCBCAEIAVqIgIgC0EDcjYCBCAEIAlqIgMgAygCBEEBcjYCBCACIAsQNgsgBCECCyACCyICBEAgAkEIag8LIAEQMyICRQRAQQAPCyACIABBfEF4IABBBGsoAgAiBEEDcRsgBEF4cWoiBCABIAEgBEsbECsaIAAQNCACC7YLAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkEDcUUNASAAKAIAIgIgAWohAQJAAkACQCAAIAJrIgBBuP8TKAIARwRAIAJB/wFNBEAgAkEDdiEEIAAoAggiAyAAKAIMIgJHDQJBpP8TQaT/EygCAEF+IAR3cTYCAAwFCyAAKAIYIQYgACAAKAIMIgJHBEBBtP8TKAIAGiAAKAIIIgMgAjYCDCACIAM2AggMBAsgAEEUaiIEKAIAIgNFBEAgACgCECIDRQ0DIABBEGohBAsDQCAEIQcgAyICQRRqIgQoAgAiAw0AIAJBEGohBCACKAIQIgMNAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQaz/EyABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgAyACNgIMIAIgAzYCCAwCC0EAIQILIAZFDQACQCAAKAIcIgNBAnRB1IEUaiIEKAIAIABGBEAgBCACNgIAIAINAUGo/xNBqP8TKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgAEYbaiACNgIAIAJFDQELIAIgBjYCGCAAKAIQIgMEQCACIAM2AhAgAyACNgIYCyAAKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsCQAJAAkACQCAFKAIEIgJBAnFFBEBBvP8TKAIAIAVGBEBBvP8TIAA2AgBBsP8TQbD/EygCACABaiIBNgIAIAAgAUEBcjYCBCAAQbj/EygCAEcNBkGs/xNBADYCAEG4/xNBADYCAA8LQbj/EygCACAFRgRAQbj/EyAANgIAQaz/E0Gs/xMoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBIAJB/wFNBEAgAkEDdiEEIAUoAgwiAiAFKAIIIgNGBEBBpP8TQaT/EygCAEF+IAR3cTYCAAwFCyADIAI2AgwgAiADNgIIDAQLIAUoAhghBiAFIAUoAgwiAkcEQEG0/xMoAgAaIAUoAggiAyACNgIMIAIgAzYCCAwDCyAFQRRqIgQoAgAiA0UEQCAFKAIQIgNFDQIgBUEQaiEECwNAIAQhByADIgJBFGoiBCgCACIDDQAgAkEQaiEEIAIoAhAiAw0ACyAHQQA2AgAMAgsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACECCyAGRQ0AAkAgBSgCHCIDQQJ0QdSBFGoiBCgCACAFRgRAIAQgAjYCACACDQFBqP8TQaj/EygCAEF+IAN3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogAjYCACACRQ0BCyACIAY2AhggBSgCECIDBEAgAiADNgIQIAMgAjYCGAsgBSgCFCIDRQ0AIAIgAzYCFCADIAI2AhgLIAAgAUEBcjYCBCAAIAFqIAE2AgAgAEG4/xMoAgBHDQBBrP8TIAE2AgAPCyABQf8BTQRAIAFBeHFBzP8TaiECAn9BpP8TKAIAIgNBASABQQN2dCIBcUUEQEGk/xMgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyEDIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEHUgRRqIQICQAJAQaj/EygCACIEQQEgA3QiB3FFBEBBqP8TIAQgB3I2AgAgAiAANgIAIAAgAjYCGAwBCyABQRkgA0EBdmtBACADQR9HG3QhAyACKAIAIQIDQCACIgQoAgRBeHEgAUYNAiADQR12IQIgA0EBdCEDIAQgAkEEcWoiB0EQaigCACICDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAupDwIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAMhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAMQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3kgBkEGdK18pyIGQQ9rEDlBECAGayEGIAUpA8gCIQogBSkDwAIhAQsgAkL///////8/Vg0AIAVBsAJqIAMgCyADIAsgC1AiBxt5IAdBBnStfKciB0EPaxA5IAYgB2pBEGshBiAFKQO4AiELIAUpA7ACIQMLIAVBoAJqIAtCgICAgICAwACEIhJCD4YgA0IxiIQiAkIAQoCAgICw5ryC9QAgAn0iBEIAED0gBUGQAmpCACAFKQOoAn1CACAEQgAQPSAFQYACaiAFKQOYAkIBhiAFKQOQAkI/iIQiBEIAIAJCABA9IAVB8AFqIARCAEIAIAUpA4gCfUIAED0gBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQPSAFQdABaiAEQgBCACAFKQPoAX1CABA9IAVBwAFqIAUpA9gBQgGGIAUpA9ABQj+IhCIEQgAgAkIAED0gBUGwAWogBEIAQgAgBSkDyAF9QgAQPSAFQaABaiACQgAgBSkDuAFCAYYgBSkDsAFCP4iEQgF9IgJCABA9IAVBkAFqIANCD4ZCACACQgAQPSAFQfAAaiACQgBCACAFKQOoASAFKQOgASIMIAUpA5gBfCIEIAxUrXwgBEIBVq18fUIAED0gBUGAAWpCASAEfUIAIAJCABA9IAYgCSAIa2ohBgJ/IAUpA3AiE0IBhiIOIAUpA4gBIg9CAYYgBSkDgAFCP4iEfCIQQufsAH0iFEIgiCICIApCgICAgICAwACEIhVCAYYiFkIgiCIEfiIRIAFCAYYiDEIgiCILIBAgFFatIA4gEFatIAUpA3hCAYYgE0I/iIQgD0I/iHx8fEIBfSITQiCIIhB+fCIOIBFUrSAOIA4gE0L/////D4MiEyABQj+IIhcgCkIBhoRC/////w+DIgp+fCIOVq18IAQgEH58IAQgE34iESAKIBB+fCIPIBFUrUIghiAPQiCIhHwgDiAOIA9CIIZ8Ig5WrXwgDiAOIBRC/////w+DIhQgCn4iESACIAt+fCIPIBFUrSAPIA8gEyAMQv7///8PgyIRfnwiD1atfHwiDlatfCAOIAQgFH4iGCAQIBF+fCIEIAIgCn58IgogCyATfnwiEEIgiCAKIBBWrSAEIBhUrSAEIApWrXx8QiCGhHwiBCAOVK18IAQgDyACIBF+IgIgCyAUfnwiC0IgiCACIAtWrUIghoR8IgIgD1StIAIgEEIghnwgAlStfHwiAiAEVK18IgRC/////////wBYBEAgFiAXhCEVIAVB0ABqIAIgBCADIBIQPSABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQpCACABfSELIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhA9IAFCMIYgBSkDaH0gBSkDYCIMQgBSrX0hCkIAIAx9IQsgASEMIAZB//8AagsiBkH//wFOBEAgDUKAgICAgIDA//8AhCENQgAhAQwBCwJ+IAZBAEoEQCAKQgGGIAtCP4iEIQogBEL///////8/gyAGrUIwhoQhDCALQgGGDAELIAZBj39MBEBCACEBDAILIAVBQGsgAiAEQQEgBmsQOyAFQTBqIAwgFSAGQfAAahA5IAVBIGogAyASIAUpA0AiAiAFKQNIIgwQPSAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiAVStfSEKIAQgAX0LIQQgBUEQaiADIBJCA0IAED0gBSADIBJCBUIAED0gDCACIAIgAyACQgGDIgEgBHwiA1QgCiABIANWrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA//8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD//wBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCANhCENCyAAIAE3AwAgACANNwMIIAVB0AJqJAALUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLwwoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDiAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIGG3kgBkEGdK18pyIGQQ9rEDlBECAGayEGIAUpA1giDUIgiCEOIAUpA1AhAQsgAkL///////8/Vg0AIAVBQGsgAyAMIAMgDCAMUCIIG3kgCEEGdK18pyIIQQ9rEDkgBiAIa0EQaiEGIAUpA0ghDCAFKQNAIQMLIANCD4YiC0KAgP7/D4MiAiABQiCIIgR+IhAgC0IgiCITIAFC/////w+DIgF+fCIPQiCGIhEgASACfnwiCyARVK0gAiANQv////8PgyINfiIVIAQgE358IhEgDEIPhiISIANCMYiEQv////8PgyIDIAF+fCIUIA8gEFStQiCGIA9CIIiEfCIPIAIgDkKAgASEIgx+IhYgDSATfnwiDiASQiCIQoCAgIAIhCICIAF+fCIQIAMgBH58IhJCIIZ8Ihd8IQEgByAJaiAGakH//wBrIQYCQCACIAR+IhggDCATfnwiBCAYVK0gBCAEIAMgDX58IgRWrXwgAiAMfnwgBCAEIBEgFVStIBEgFFatfHwiBFatfCADIAx+IgMgAiANfnwiAiADVK1CIIYgAkIgiIR8IAQgAkIghnwiAiAEVK18IAIgAiAQIBJWrSAOIBZUrSAOIBBWrXx8QiCGIBJCIIiEfCICVq18IAIgAiAPIBRUrSAPIBdWrXx8IgJWrXwiBEKAgICAgIDAAINCAFIEQCAGQQFqIQYMAQsgC0I/iCEDIARCAYYgAkI/iIQhBCACQgGGIAFCP4iEIQIgC0IBhiELIAMgAUIBhoQhAQsgBkH//wFOBEAgCkKAgICAgIDA//8AhCEKQgAhAQwBCwJ+IAZBAEwEQEEBIAZrIgdB/wBNBEAgBUEwaiALIAEgBkH/AGoiBhA5IAVBIGogAiAEIAYQOSAFQRBqIAsgASAHEDsgBSACIAQgBxA7IAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv///////z+DIAatQjCGhAsgCoQhCiALUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgCyABQoCAgICAgICAgH+FhEIAUgRAIAIhAQwBCyAKIAIgAkIBg3wiASACVK18IQoLIAAgATcDACAAIAo3AwggBUHgAGokAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALpgEBAX8CfwJAIAAoAkwiAUEATgRAIAFFDQFBhJkUKAIAIAFB/////3txRw0BCyAAKAIEIgEgACgCCEcEQCAAIAFBAWo2AgQgAS0AAAwCCyAAEMgBDAELIAAgACgCTCIBQf////8DIAEbNgJMAn8gACgCBCIBIAAoAghHBEAgACABQQFqNgIEIAEtAAAMAQsgABDIAQshASAAKAJMGiAAQQA2AkwgAQsLBgAgACQBCw4AQcCyGCQDQcCyFCQCCwcAIwAjAmsLBAAjAwsEACMCCwQAIwALBgAgACQACxAAIwAgAGtBcHEiACQAIAALxQkCBH8FfiMAQfAAayIGJAAgBEL///////////8AgyEJAkACQCABUCIFIAJC////////////AIMiCkKAgICAgIDA//8AfUKAgICAgIDAgIB/VCAKUBtFBEAgA0IAUiAJQoCAgICAgMD//wB9IgtCgICAgICAwICAf1YgC0KAgICAgIDAgIB/URsNAQsgBSAKQoCAgICAgMD//wBUIApCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCUKAgICAgIDA//8AVCAJQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAKQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBRshBEIAIAEgBRshAwwCCyADIAlCgICAgICAwP//AIWEUA0BIAEgCoRQBEAgAyAJhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAJhEIAUg0AIAEhAyACIQQMAQsgAyABIAEgA1QgCSAKViAJIApRGyIIGyEKIAQgAiAIGyILQv///////z+DIQkgAiAEIAgbIgJCMIinQf//AXEhByALQjCIp0H//wFxIgVFBEAgBkHgAGogCiAJIAogCSAJUCIFG3kgBUEGdK18pyIFQQ9rEDkgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAJC////////P4MhBCAHRQRAIAZB0ABqIAMgBCADIAQgBFAiBxt5IAdBBnStfKciB0EPaxA5QRAgB2shByAGKQNYIQQgBikDUCEDCyAEQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQhBCACIAuFIQ0CfiADQgOGIgIgBSAHRg0AGiAFIAdrIgdB/wBLBEBCACEBQgEMAQsgBkFAayACIAFBgAEgB2sQOSAGQTBqIAIgASAHEDsgBikDOCEBIAYpAzAgBikDQCAGKQNIhEIAUq2ECyEJIARCgICAgICAgASEIQwgCkIDhiEKAkAgDUIAUwRAQgAhA0IAIQQgCSAKhSABIAyFhFANAiAKIAl9IQIgDCABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5IAdBBnStfKdBDGsiBxA5IAUgB2shBSAGKQMoIQQgBikDICECDAELIAkgCnwiAiAJVK0gASAMfHwiBEKAgICAgICACINQDQAgCUIBgyAEQj+GIAJCAYiEhCECIAVBAWohBSAEQgGIIQQLIAtCgICAgICAgICAf4MhASAFQf//AU4EQCABQoCAgICAgMD//wCEIQRCACEDDAELQQAhBwJAIAVBAEoEQCAFIQcMAQsgBkEQaiACIAQgBUH/AGoQOSAGIAIgBEEBIAVrEDsgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIAKnQQdxIgVBBEutIARCPYYgAkIDiIQiAnwiAyACVK0gBEIDiEL///////8/gyAHrUIwhoQgAYR8IQQCQCAFQQRGBEAgBCADQgGDIgEgA3wiAyABVK18IQQMAQsgBUUNAQsLIAAgAzcDACAAIAQ3AwggBkHwAGokAAtEAQF/IwBBEGsiBSQAIAUgASACIAMgBEKAgICAgICAgIB/hRBHIAUpAwAhASAAIAUpAwg3AwggACABNwMAIAVBEGokAAuBDAMFfAN+Bn8jAEEQayINJAACQAJAIAG9IghCNIinIgxB/w9xIg5BvghrIg9B/35LIAC9IgdCNIinIgpB/w9rQYJwT3ENACAIQgGGQoCAgICAgIAQfEKBgICAgICAEFQEQEQAAAAAAADwPyECIAdCgICAgICAgPg/UQ0CIAhCAYYiCVANAiAJQoGAgICAgIBwVCAHQgGGIgdCgICAgICAgHBYcUUEQCAAIAGgIQIMAwsgB0KAgICAgICA8P8AUQ0CRAAAAAAAAAAAIAEgAaIgB0L/////////7/8AViAIQgBZcxshAgwCCyAHQgGGQoCAgICAgIAQfEKBgICAgICAEFQEQCAAIACiIQIgB0IAUwRAIAKaIAIgCBBKQQFGGyECCyAIQgBZDQIjAEEQayIKRAAAAAAAAPA/IAKjOQMIIAorAwghAgwCCyAHQgBTBEAgCBBKIgtFBEAgACAAoSIAIACjIQIMAwsgCkH/D3EhCiALQQFGQRJ0IQsgB0L///////////8AgyEHCyAPQf9+TQRARAAAAAAAAPA/IQIgB0KAgICAgICA+D9RDQIgDkG9B00EQCABIAGaIAdCgICAgICAgPg/VhtEAAAAAAAA8D+gIQIMAwsgDEGAEEkgB0KBgICAgICA+D9URwRAIwBBEGsiCkQAAAAAAAAAcDkDCCAKKwMIRAAAAAAAAABwoiECDAMLIwBBEGsiCkQAAAAAAAAAEDkDCCAKKwMIRAAAAAAAAAAQoiECDAILIAoNACAARAAAAAAAADBDor1C////////////AINCgICAgICAgKADfSEHCwJ8IAhCgICAQIO/IgUgDSAHQoCAgIDQqqXzP30iCEI0h6e3IgNB+BgrAwCiIAhCLYinQf8AcUEFdCIKQdAZaisDAKAgByAIQoCAgICAgIB4g30iB0KAgICACHxCgICAgHCDvyIAIApBuBlqKwMAIgSiRAAAAAAAAPC/oCICIAe/IAChIASiIgSgIgAgA0HwGCsDAKIgCkHIGWorAwCgIgMgACADoCIDoaCgIAQgAEGAGSsDACIEoiIGIAIgBKIiBKCioCACIASiIgIgAyADIAKgIgKhoKAgACAAIAaiIgOiIAMgAyAAQbAZKwMAokGoGSsDAKCiIABBoBkrAwCiQZgZKwMAoKCiIABBkBkrAwCiQYgZKwMAoKCioCIAIAIgAiAAoCICoaA5AwggAr1CgICAQIO/IgOiIQAgASAFoSADoiANKwMIIAIgA6GgIAGioCEBAkAgAL1CNIinQf8PcSIKQckHa0E/SQ0AIApByQdJBEAgAEQAAAAAAADwP6AiAJogACALGwwCCyAKQYkISSEMQQAhCiAMDQAgAL1CAFMEQCMAQRBrIgpEAAAAAAAAAJBEAAAAAAAAABAgCxs5AwggCisDCEQAAAAAAAAAEKIMAgsjAEEQayIKRAAAAAAAAADwRAAAAAAAAABwIAsbOQMIIAorAwhEAAAAAAAAAHCiDAELQYAIKwMAIACiQYgIKwMAIgKgIgMgAqEiAkGYCCsDAKIgAkGQCCsDAKIgAKCgIAGgIgAgAKIiASABoiAAQbgIKwMAokGwCCsDAKCiIAEgAEGoCCsDAKJBoAgrAwCgoiADvSIIp0EEdEHwD3EiDEHwCGorAwAgAKCgoCEAIAxB+AhqKQMAIAggC618Qi2GfCEHIApFBEACfCAIQoCAgIAIg1AEQCAHQoCAgICAgICIP32/IgEgAKIgAaBEAAAAAAAAAH+iDAELIAdCgICAgICAgPA/fCIHvyIBIACiIgMgAaAiAJlEAAAAAAAA8D9jBHwjAEEQayIKIApEAAAAAAAAEAA5AwggCisDCEQAAAAAAAAQAKI5AwggB0KAgICAgICAgIB/g78gAEQAAAAAAADwv0QAAAAAAADwPyAARAAAAAAAAAAAYxsiAqAiBSADIAEgAKGgIAAgAiAFoaCgoCACoSIAIABEAAAAAAAAAABhGwUgAAtEAAAAAAAAEACiCwwBCyAHvyIBIACiIAGgCyECCyANQRBqJAAgAgtOAgF/AX4Cf0EAIABCNIinQf8PcSIBQf8HSQ0AGkECIAFBswhLDQAaQQBCAUGzCCABa62GIgJCAX0gAINCAFINABpBAkEBIAAgAoNQGwsL6AIBAn8CQCAAIAFGDQAgASAAIAJqIgRrQQAgAkEBdGtNBEAgACABIAIQKw8LIAAgAXNBA3EhAwJAAkAgACABSQRAIAMEQCAAIQMMAwsgAEEDcUUEQCAAIQMMAgsgACEDA0AgAkUNBCADIAEtAAA6AAAgAUEBaiEBIAJBAWshAiADQQFqIgNBA3ENAAsMAQsCQCADDQAgBEEDcQRAA0AgAkUNBSAAIAJBAWsiAmoiAyABIAJqLQAAOgAAIANBA3ENAAsLIAJBA00NAANAIAAgAkEEayICaiABIAJqKAIANgIAIAJBA0sNAAsLIAJFDQIDQCAAIAJBAWsiAmogASACai0AADoAACACDQALDAILIAJBA00NAANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIAJBBGsiAkEDSw0ACwsgAkUNAANAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAuQBAIEfgJ/AkACQCABvSIEQgGGIgNQDQAgAb0hAiAAvSIFQjSIp0H/D3EiBkH/D0YNACACQv///////////wCDQoGAgICAgID4/wBUDQELIAAgAaIiACAAow8LIAMgBUIBhiICWgRAIABEAAAAAAAAAACiIAAgAiADURsPCyAEQjSIp0H/D3EhBwJ+IAZFBEBBACEGIAVCDIYiAkIAWQRAA0AgBkEBayEGIAJCAYYiAkIAWQ0ACwsgBUEBIAZrrYYMAQsgBUL/////////B4NCgICAgICAgAiECyECAn4gB0UEQEEAIQcgBEIMhiIDQgBZBEADQCAHQQFrIQcgA0IBhiIDQgBZDQALCyAEQQEgB2uthgwBCyAEQv////////8Hg0KAgICAgICACIQLIQQgBiAHSgRAA0ACQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LIAJCAYYhAiAGQQFrIgYgB0oNAAsgByEGCwJAIAIgBH0iA0IAUw0AIAMiAkIAUg0AIABEAAAAAAAAAACiDwsCQCACQv////////8HVgRAIAIhAwwBCwNAIAZBAWshBiACQoCAgICAgIAEVCEHIAJCAYYiAyECIAcNAAsLIAVCgICAgICAgICAf4MhAiAGQQBKBH4gA0KAgICAgICACH0gBq1CNIaEBSADQQEgBmutiAsgAoS/C9EDAgJ+An8jAEEgayIEJAACQCABQv///////////wCDIgNCgICAgICAwIA8fSADQoCAgICAgMD/wwB9VARAIAFCBIYgAEI8iIQhAyAAQv//////////D4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD//wBUIANCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQIMAQtCgICAgICAgPj/ACECIANC////////v//DAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC////////P4NCgICAgICAwACEIgIgBUGB9wBrEDkgBCAAIAJBgfgAIAVrEDsgBCkDCEIEhiAEKQMAIgBCPIiEIQIgBCkDECAEKQMYhEIAUq0gAEL//////////w+DhCIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECCyAEQSBqJAAgAiABQoCAgICAgICAgH+DhL8LfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAnMgAmsiAq1CACACZyICQdEAahA5IAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQAC/kBAgN+An8jAEEQayIFJAACfiABvSIDQv///////////wCDIgJCgICAgICAgAh9Qv/////////v/wBYBEAgAkI8hiEEIAJCBIhCgICAgICAgIA8fAwBCyACQoCAgICAgID4/wBaBEAgA0I8hiEEIANCBIhCgICAgICAwP//AIQMAQsgAlAEQEIADAELIAUgAkIAIAOnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgZBMWoQOSAFKQMAIQQgBSkDCEKAgICAgIDAAIVBjPgAIAZrrUIwhoQLIQIgACAENwMAIAAgAiADQoCAgICAgICAgH+DhDcDCCAFQRBqJAALYwIBfwF+IwBBEGsiAiQAIAACfiABRQRAQgAMAQsgAiABrUIAIAFnIgFB0QBqEDkgAikDCEKAgICAgIDAAIVBnoABIAFrrUIwhnwhAyACKQMACzcDACAAIAM3AwggAkEQaiQAC7QDAgN/AX4jAEEgayIDJAACQCABQv///////////wCDIgVCgICAgICAwMA/fSAFQoCAgICAgMC/wAB9VARAIAFCGYinIQQgAFAgAUL///8PgyIFQoCAgAhUIAVCgICACFEbRQRAIARBgYCAgARqIQIMAgsgBEGAgICABGohAiAAIAVCgICACIWEQgBSDQEgAiAEQQFxaiECDAELIABQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgAUIZiKdB////AXFBgICA/gdyIQIMAQtBgICA/AchAiAFQv///////7+/wABWDQBBACECIAVCMIinIgRBkf4ASQ0AIANBEGogACABQv///////z+DQoCAgICAgMAAhCIFIARBgf4AaxA5IAMgACAFQYH/ACAEaxA7IAMpAwgiAEIZiKchAiADKQMAIAMpAxAgAykDGIRCAFKthCIFUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAUgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIANBIGokACACIAFCIIinQYCAgIB4cXK+CxgAQa+DFCwAAEEASARAQaSDFCgCABA0CwtqAQN/IAEQLyICQfD///8HSQRAAkAgAkEKTQRAIAAgAjoACyAAIQMMAQsgAkEPckEBaiIEEFQhAyAAIARBgICAgHhyNgIIIAAgAzYCACAAIAI2AgQLIAMgASACEEsgAmpBADoAAA8LEFUACzYBAX9BASAAIABBAU0bIQACQANAIAAQMyIBDQFBsLIUKAIAIgEEQCABEQkADAELCxAdAAsgAQsIAEGoPxBYAAsYAEGfgxQsAABBAEgEQEGUgxQoAgAQNAsLCABBuzwQWAALYQEDf0EIEFkiAUGc+xM2AgAgAUHI+RM2AgAgABAvIgJBDWoQVCIDQQA2AgggAyACNgIEIAMgAjYCACABIANBDGogACACQQFqECs2AgQgAUH4+RM2AgAgAUGY+hNBAhABAAsOACAAQdAAahAzQdAAagsyAQJ/IABByPkTNgIAIAAoAgRBDGsiASABKAIIQQFrIgI2AgggAkEASARAIAEQNAsgAAv0CwIFfwV+IwBBMGsiBSQAAkBB2AAQMyIERQ0AIARBBGstAABBA3FFDQAgBEEAQdgAECkaCyAEQtbrgu7q/Yn14AA3AwggBEL56tDQ58mh5OEANwMgIARCz9bTvtLHq9lCNwMQAn4CQCABKAIAIAEgAS0ACyIDwEEASCIGGyICRQ0AIAQgASgCBCADIAYbIgGtIgs3AwACQCABQR9NBEAgBEEoaiACIAEQKxogBCAEKAJIIAFqNgJIQtbrgu7q/Yn14AAhCELP1tO+0ser2UIhCUL56tDQ58mh5OEAIQoMAQsgASACaiEDAkAgAUEgSARAQtbrgu7q/Yn14AAhCELP1tO+0ser2UIhCUL56tDQ58mh5OEAIQoMAQsgA0EgayEBQtbrgu7q/Yn14AAhCEL56tDQ58mh5OEAIQpCz9bTvtLHq9lCIQkDQCACKQAYQs/W077Sx6vZQn4gCnxCH4lCh5Wvr5i23puef34hCiACKQAQQs/W077Sx6vZQn4gB3xCH4lCh5Wvr5i23puef34hByACKQAIQs/W077Sx6vZQn4gCXxCH4lCh5Wvr5i23puef34hCSACKQAAQs/W077Sx6vZQn4gCHxCH4lCh5Wvr5i23puef34hCCACQSBqIgIgAU0NAAsgBCAKNwMgIAQgBzcDGCAEIAk3AxAgBCAINwMICyACIANPDQAgBEEoaiACIAMgAmsiARArGiAEIAE2AkgLIAtCIFQNACAJQgeJIAhCAYl8IAdCDIl8IApCEol8IAhCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gCULP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAHQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IApCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0MAQsgB0LFz9my8eW66id8CyEHIARBKGohAiAHIAt8IQcCQCALp0EfcSIBQQhJBEAgAiEDDAELA0AgAikAAELP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+IAeFQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQcgAkEIaiIDIQIgAUEIayIBQQdLDQALCyABQQRPBEAgAzUAAEKHla+vmLbem55/fiAHhUIXiULP1tO+0ser2UJ+Qvnz3fGZ9pmrFnwhByADQQRqIQMgAUEEayEBCwJAIAFFDQACfyABQQFxRQRAIAMhAiABDAELIANBAWohAiADMQAAQsXP2bLx5brqJ34gB4VCC4lCh5Wvr5i23puef34hByABQQFrCyEDIAFBAUYNAANAIAIxAAFCxc/ZsvHluuonfiACMQAAQsXP2bLx5brqJ34gB4VCC4lCh5Wvr5i23puef36FQguJQoeVr6+Ytt6bnn9+IQcgAkECaiECIANBAmsiAw0ACwsgBBA0IAUgB0IhiCAHhULP1tO+0ser2UJ+IgdCHYggB4VC+fPd8Zn2masWfiIHQiCIIAeFNwMAIwBBEGsiBCQAIAQgBTYCDCAFQRBqIQJBACEDIwBBkAFrIgEkAANAIAEgA2ogA0GYkxNqLQAAOgAAIANBAWoiA0GQAUkNAAsgASACNgIsIAEgAjYCFCABQf////8HQX4gAmsiAyADQf////8HTxsiAzYCMCABIAIgA2oiBjYCHCABIAY2AhAgAUHiOiAFEMYBIAMEQCABKAIUIgMgAyABKAIQRmtBADoAAAsgAUGQAWokACAEQRBqJAAgAhAvIgJB8P///wdJBEACQCACQQpNBEAgACACOgALDAELIAJBD3JBAWoiAxBUIQEgACADQYCAgIB4cjYCCCAAIAE2AgAgACACNgIEIAEhAAsgACAFQRBqIAIQKyACakEAOgAAIAVBMGokAA8LEFUAC7oIAQJ/QZznEkHI5xJB+OcSQdjtEkHY7BJBBEHY7BJBBUHY7BJBBkG4OUHb7BJBBxADQZznEkEBQYjoEkHY7BJBCEEJEARBCBBUIgBBADYCBCAAQQo2AgBBnOcSQfbEAEEDQYzoEkGY6BJBCyAAQQBBABAFQQQQVCIAQSA2AgBBBBBUIgFBIDYCAEGc5xJB8MAAQZT3E0Gd6BJBDCAAQZT3E0Gh6BJBDSABEAZBBBBUIgBBKDYCAEEEEFQiAUEoNgIAQZznEkHEwQBBlPcTQZ3oEkEMIABBlPcTQaHoEkENIAEQBkEEEFQiAEEwNgIAQQQQVCIBQTA2AgBBnOcSQac8QZT3E0Gd6BJBDCAAQZT3E0Gh6BJBDSABEAZBBBBUIgBBODYCAEEEEFQiAUE4NgIAQZznEkGXPEGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQcAANgIAQQQQVCIBQcAANgIAQZznEkGfPUGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQcgANgIAQQQQVCIBQcgANgIAQZznEkHFO0GU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQdAANgIAQQQQVCIBQdAANgIAQZznEkGQPUGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQdgANgIAQQQQVCIBQdgANgIAQZznEkGuPUGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQZABNgIAQQQQVCIBQZABNgIAQZznEkHhwABBlPcTQZ3oEkEMIABBlPcTQaHoEkENIAEQBkEEEFQiAEGIATYCAEEEEFQiAUGIATYCAEGc5xJB6MAAQZT3E0Gd6BJBDCAAQZT3E0Gh6BJBDSABEAZBBBBUIgBB4AA2AgBBBBBUIgFB4AA2AgBBnOcSQdfBAEGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQegANgIAQQQQVCIBQegANgIAQZznEkGLPUGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQfAANgIAQQQQVCIBQfAANgIAQZznEkHTPUGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQfgANgIAQQQQVCIBQfgANgIAQZznEkHNPUGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQYABNgIAQQQQVCIBQYABNgIAQZznEkGnPkGU9xNBnegSQQwgAEGU9xNBoegSQQ0gARAGQQQQVCIAQZgBNgIAQQQQVCIBQZgBNgIAQZznEkH2OkGw9hNB6OwSQQ4gAEGw9hNBgO0SQQ8gARAGQQQQVCIAQZwBNgIAQQQQVCIBQZwBNgIAQZznEkH8wABBsPYTQejsEkEOIABBsPYTQYDtEkEPIAEQBgsNACAAKAIAQQRrKAIACwQAIAAL0AEBA38gAARAIABB+OYSNgIAIAAoAhgQaCAAQYTpEjYCAAJAQdiEFCgCACICQdSEFEYNACACIQECQANAAkAgASgCBCEDIAEoAgggAEYNACADIgFB1IQURw0BDAILCyABKAIAIgIgAzYCBCABKAIEIAI2AgBB3IQUQdyEFCgCAEEBazYCACABEDRB2IQUKAIAIQILIAJB1IQURg0AQQAhAQNAIAIoAgggATYCECABQQFqIQEgAigCBCICQdSEFEcNAAsLQeCEFEEBOgAAIAAQNAsLBwAgABEOAAuOAQEDf0H4CBBUIgFBAToABEHIhBQtAABFBEBBDBBUIgBB1IQUNgIEIAAgATYCCCAAQdSEFCgCACICNgIAIAIgADYCBEHUhBQgADYCAEHchBRB3IQUKAIAIgBBAWo2AgAgASAANgIQC0HghBRBAToAACABQRhqIgBCADcDACABQfjmEjYCACABIAA2AhQgAQveTQIIf1V8IwBB8AhrIgIkACABKAIAQdLFABAIIgMQByEHIAMQAgJAAn8gB0Hg7hIgAkEYahAJIgpEAAAAAAAA8EFjIApEAAAAAAAAAABmcQRAIAqrDAELQQALIgkoAgAiBkHw////B08NACACKAIYIQUCQCAGQQpNBEAgAiAGOgCTCCACQYgIaiEDDAELIAZBD3JBAWoiBBBUIQMgAiAEQYCAgIB4cjYCkAggAiADNgKICCACIAY2AowICyADIAlBBGogBhArIAZqQQA6AAAgBRAKIAcQAiABKAIAQZHFABAIIgMQByEHIAMQAgJ/IAdB4O4SIAJBGGoQCSIKRAAAAAAAAPBBYyAKRAAAAAAAAAAAZnEEQCAKqwwBC0EACyIJKAIAIgZB8P///wdPDQAgAigCGCEFAkAgBkEKTQRAIAIgBjoAhwggAkH8B2ohAwwBCyAGQQ9yQQFqIgQQVCEDIAIgBEGAgICAeHI2AoQIIAIgAzYC/AcgAiAGNgKACAsgAyAJQQRqIAYQKyAGakEAOgAAIAUQCiAHEAIgASgCAEHXxAAQCCIDEAchBCADEAIgBEGU9xMgAkEYaiIFEAkhGyACKAIYEAogBBACIAEoAgBBzcMAEAgiAxAHIQQgAxACIARBlPcTIAUQCSEgIAIoAhgQCiAEEAIgASgCAEHjxAAQCCIDEAchBCADEAIgBEGU9xMgBRAJISsgAigCGBAKIAQQAiABKAIAQcPFABAIIgMQByEEIAMQAiAEQZT3EyACQRhqEAkhFyACKAIYEAogBBACIAEoAgBBsMQAEAgiAxAHIQQgAxACIARBlPcTIAJBGGoQCSEQIAIoAhgQCiAEEAIgASgCAEHawwAQCCIDEAchBCADEAIgBEGU9xMgAkEYahAJISMgAigCGBAKIAQQAiABKAIAQf3EABAIIgMQByEEIAMQAiAEQZT3EyACQRhqEAkhUSACKAIYEAogBBACIAEoAgBBoMUAEAgiAxAHIQQgAxACIARBsPYTIAUQCSERIAIoAhgQCiAEEAIgASgCAEGvxQAQCCIDEAchByADEAICfyAHQeDuEiAFEAkiCkQAAAAAAADwQWMgCkQAAAAAAAAAAGZxBEAgCqsMAQtBAAsiCSgCACIIQfD///8HSSEDAn8gEZlEAAAAAAAA4EFjBEAgEaoMAQtBgICAgHgLIQYgA0UNACACKAIYIQUCQCAIQQpNBEAgAiAIOgD7ByACQfAHaiEDDAELIAhBD3JBAWoiBBBUIQMgAiAEQYCAgIB4cjYC+AcgAiADNgLwByACIAg2AvQHCyADIAlBBGogCBArIAhqQQA6AAAgBRAKIAcQAiABKAIAQdzFABAIIgMQByEEIAMQAiAEQbz2EyACQRhqIgUQCSEkIAIoAhgQCiAEEAIgASgCAEHIxAAQCCIDEAchBCADEAIgBEG89hMgBRAJISwgAigCGBAKIAQQAiABKAIAQYrFABAIIgMQByEEIAMQAiAEQZT3EyAFEAkhDiACKAIYEAogBBACIAEoAgBBwsQAEAgiAxAHIQQgAxACIARBlPcTIAUQCSEYIAIoAhgQCiAEEAIgASgCAEGCxAAQCCIDEAchBCADEAIgBEGU9xMgBRAJIREgAigCGBAKIAQQAiABKAIAQZLEABAIIgEQByEDIAEQAiADQZT3EyAFEAkhCiACKAIYEAogAxACAn8gJEQAAAAAAADwQWMgJEQAAAAAAAAAAGZxBEAgJKsMAQtBAAshCEHIhBQtAABFBEAgAigC/AchByACLACHCCEJIAIoAogIIQUgAiwAkwghBCACKALwByEDIAIsAPsHIQEgAkEANgKkCCACQQA2AiQgAiAINgIYIAIgAyACQfAHaiABQQBIGy0AADoAuAYCQAJAIAJBuQZqIgMgBSACQYgIaiAEQQBIGyIEc0EDcQRAIAQtAAAhAQwBCyAEQQNxBEADQCADIAQtAAAiAToAACABRQ0DIANBAWohAyAEQQFqIgRBA3ENAAsLIAQoAgAiAUF/cyABQYGChAhrcUGAgYKEeHENAANAIAMgATYCACAEKAIEIQEgA0EEaiEDIARBBGohBCABQYGChAhrIAFBf3NxQYCBgoR4cUUNAAsLIAMgAToAACABQf8BcUUNAANAIAMgBC0AASIBOgABIANBAWohAyAEQQFqIQQgAQ0ACwsgAgJ/ICxEAAAAAAAA8EFjICxEAAAAAAAAAABmcQRAICyrDAELQQALNgLIBiACIAbANgLEBiACIBg5A/gFIAIgCjkD6AUgAiAROQPwBSACAn8gDplEAAAAAAAA4EFjBEAgDqoMAQtBgICAgHgLNgLMBiACIBs5A7AGIAIgIzkDqAYgAiAQOQOgBiACICA5A5gGIAIgFzkDkAYgAiArOQOIBiACIAJBlAhqNgIQIAIgAkGoCGo2AhQgAiACQaQIajYCACACIAJBoAhqNgIEIAIgAkGcCGo2AgggAiACQZgIajYCDCAHIAJB/AdqIAlBAEgbQeM/IAIQaRogAiACKAKYCLdEAAAAAAAgrECiIAIoApQIt0QAAAAAAABOQKIgAisDqAigoEQAAAAAABj1QKMiGTkD4AUgAiACKAKgCCIBQZMCbLdEAAAAAAAAIkCjnCACKAKkCLciCkQAAAAAAPB2QKIgAUEJardEAAAAAAAAKECjnCAKoEQAAAAAAAAcQKJEAAAAAAAA0D+inKGgIAIoApwIt6BEAAAAgLVCOkGgIhs5A9gFIBmZRAAAAAAAAPA/ZARAIAIgGSAZnCIKoSIZOQPgBSACIAogG6AiGzkD2AULIAJBADYCLCACKwOwBiErIAIrA5AGIRcgAisDiAYhECACKwOoBiEjIAIrA+gFIRggAisDmAYhHSACKwOgBiERIAIrA/AFIQogAigCGCEBIAIrA/gFITMgAkEwakEAQcwBECkaIAJBgAJqQQBBuAMQKRogAkKBuZCSzLbC2T83A6gHIAJCja+6k7HEutzAADcDoAcgAkKAgICAoISVjMEANwOYByACQrCrt/WkoMqxv383A8gHIAJChIaG4Lnkwd2+fzcDwAcgAkLB4K7unbjP4r5/NwO4ByACQtGNisuRnO+oPzcDsAcgAkL9wvzRmpm5lcAANwOQByACQekAOgAoIAIgMzkD+AUgAiABNgIYIAIgCkRiJI7CniQUQaM5A/AFIAIgEUQ5nVKiRt+RP6IiJTkDoAYgAiAdOQOYBiACIBhEKuOXQX9TvEGjOQPoBSACICNEOZ1SokbfkT+iIiw5A6gGIAIgEEQ5nVKiRt+RP6IiPDkDiAYgAiAXRDmdUqJG35E/oiImOQOQBiACICtE+MFjGtylbECjIhE5A7AGIAJCADcD8AYgAkIANwPoBiACQgA3A+AGIAJCADcDiAcgAkIANwPYBiACQgA3A4AHIAJB+dwBOwApIAJBADYCJCACIDwQaiIaIBqiIhREAAAAAAAAFMCiRAAAAAAAAPA/oCIQmiAUoSAUoSItOQM4IAIgGyAZoEQAAADAgJBCwaAiI0QAAADAgJBCQaBEAAAAgCy0QsGgRAAAAACg1eFAoyIKRAADGkedk+dBoiAKIApEzsnmBTMB2r6ioiAKoiAKIApE63Qg66nVtz+ioqCgRG2QScbobvBAoEQ5nVKiRt+RP6JEAAAAAAAAbkCjRBgtRFT7IRlAEEwiCkQYLURU+yEZQKAgCiAKRAAAAAAAAAAAYxs5A6gEIAIgESAURAAAAAAAAAhAokQAAAAAAADwv6BEOsoTplGbSj+iRAAAAAAAAPA/IB0gHaIiDaEiLiAunyJJoqMiCkSBHETCtAmzPyARo0RVVVVVVVXlPxBJIhFEAAAAAAAA8D8gCiARIBGioyIKIAqioSAKIAogCkQAAAAAAMBgQKKiRAAAAAAAQFRAo0RVVVVVVVXVP6CioaIiCiAKoqNEAAAAAAAA8D+goyITOQPQBiACIBNEfSE/qsnkKkCiRFVVVVVVVeW/EEkiCjkDuAUgAiAKIB1EAAAAAAAA8D+gokQAAAAAAADwv6A5A8gFIAIgCkQAAAAAAADwPyAdoSIYokQAAAAAAADwv6A5A8AFRIEcRMK0CbM/IBOjRFVVVVVVVeU/EEkhHiA8EGshFQJAIC5EAAAAAAAAAABmIBNEAAAAAAAAAABmckUNACAuIB6iIgogCqIhESACIBggHqIiCkSb1r9aSI3wP2M2AiwCfCAKRAAAAAAAAPC/oESNl24SI+q4QKIiCkQAAAAAAIBjQGNFBEBEAAAAAACAU0AhIUSMNMG8xSYgPgwBC0QAAAAAAABeQEQAAAAAAAA0QCAKRAAAAAAAgFPAoCAKRAAAAAAAgFhAYxsiIaFEjZduEiPquECjIgogCiAKIAqioqILIQogAiAeIB2iRAAAAAAAAPA/IB4gIUSNl24SI+q4QKNEAAAAAAAA8D+gIlKhoyI3oiIvOQN4IAIgEyAKIDdEAAAAAAAAEEAQSaIiDkQAAAAAAADwPyAvIC+iIhyhmSIbRAAAAAAAAAxAEEmjIjCiIB4gLyAdoiIiIBxEAAAAAAAAEECgoiAcRAAAAAAAAPg/okQAAAAAAADwP6CgoiAcRAAAAAAAAAhAoiAcRAAAAAAAACBAoKJEAAAAAAAAIECgIC0gN0Q6yhOmUZs6P6IgG6OioqCiIDOiIiA5A0AgAiAlEGoiPSAdRC1DHOviNho/ZCIBBHwgFSATIDcgDkQAAAAAAAAAwKKiRLDVrU4CKWO/oqKiIB2jBUQAAAAAAAAAAAsgM6KiOQOIASACICIgHKIgHCAioEQAAAAAAAAGQKJEAAAAAAAA8D+goCAuIB4gMCAwoKKiojkDUCACIElEAAAAAAAA8D8gEaMiJCATICREOsoTplGbWj+ioiIrRAAAAAAAAOA/oiIKRNGGYhnhvFE/oqIiGEQAAAAAAACwP6IiEaIgFCAUoiIXRAAAAAAAIGFAoiAURAAAAAAAgFPAokQAAAAAAAAqQKCgoiBJIAqiIC2iIBOgoDkD0AEgAkQAAAAAAADwPyAUoSIKOQPAASACIC4gHiATIBOgIDCioqIgN0TRhmIZ4bxRv6IgHiAboqMgLUQAAAAAAAAIwKIgHCAiRAAAAAAAAOC/okQAAAAAAAD4P6CiRAAAAAAAAPA/ICIgIqChoKIgJSAloBBqIApEAAAAAAAA6D+iIBwgHKAiCiAcRAAAAAAAAPA/oCAioqGioqCiIC8gHEQAAAAAAADgP6JEAAAAAAAAAECgoiAKRAAAAAAAAOA/oCAdoqCgojkDSCACIBMgJCAkRNRqQWKxVqk+oqKiIgogF0QAAAAAAIBIQKIgFEQAAAAAAABCwKJEAAAAAAAACECgoKIgK0QAAAAAAADgv6IgEKIgF0QAAAAAALB4QKIgFEQAAAAAAIBcwKJEAAAAAAAAHECgoCARoqCgIlo5A4ABIAIgGEQAAAAAAADgP6IgFEQAAAAAAAAzwKJEAAAAAAAAEECgoiAURAAAAAAAABzAokQAAAAAAAAIQKAgCiAKoKKgIBqiIBogK5qiIgqgIls5A9gBIAIgDkRVVVVVVVXlv6IgM6IgIqNEAAAAAAAAAAAgARs5A+gBIAIgIEQAAAAAAAD4P6I5A6ABIAIgLBBrOQOQASACIBVEsNWtTgIpUz+iOQMwIAIgFEQAAAAAAAAcQKJEAAAAAAAA8L+gOQPIASACIC5EAAAAAAAADECiIAqiICCiOQPwASACIBpEAAAAAAAAFECiRAAAAAAAAAhAoCAVRLDVrU4CKUM/oqIgGkQAAAAAAADwP6AiPkQa38RBZmN6PSA+mUQa38RBZmN6PWQbozkD4AEgAiAvICwQaqJEAAAAAAAA8D+gIgogCiAKoqI5A3ACQEQYLURU+yEZQCATo0QAAAAAACBsQGZFDQAgAkEBNgIsIAJB5AA6ACpEChQtUL1b7T8hTERnw3FLcXbZPyEcICNEAAAAAGDV0UCgIk1EBKK99etITr+iRBR7aB8rGBJAoEQYLURU+yEZQBBMIhAQayIYRGfDcUtxdtk/okQAAAAAAADwPyAQEGoiCkSya5RYxkSiv6JEd+xOFHQ97T+gIiQgJKKhnyIso0QAAAAAAADwPyAYRNxGvKJ/9bY/oiAsoyIXIBeioZ8iESAKoiAYIBdEChQtUL1b7T+ioqAQbCEKIAJCADcDwAMgAkIANwO4AyACQgA3A7ADIAJCADcDqAMgAkIANwOgAyAmEGohJyAmEGsiGSARoiAXICeioSEjIBEgJ6IgFyAZoqAhGCAdRAAAAAAAAC7AoiFcRAAAAAAAAPA/IBOjIV0gFZohU0SzBQgPaGPvvyE0RHRfzmxX6Mg/ISFEcY4AlGoNyT4hVEEAIQEgJRBrIT8gCiBNRHc8Kz5F218/okSf1bjtMVcXQKAiXqAgEKEiChBrIREgChBqIQpBASEDA0AgLiAZICEgTKIiEKIgNCAnoqEiQCA9oiA/IBogNCAZoiAnIBCioCIooiAVICEgHKIiJaKgIkGioCI1RAAAAAAAAChAoiA1oiA9IEGiIEAgP6KhIjggOEQAAAAAAAAIwKKioCJKoiBAIECiIEEgQaKgRAAAAAAAAAhAoiANIEqioCIQIBCgoCEiIC4gISAnoiAZIEwgNKIiEKKgIkIgPaIgPyAaICcgEKIgISAZoqEiLaIgFSAcIDSiIiaioCJDoqAiOUQAAAAAAAA4QKIiMCA1oiA4ID0gQ6IgQiA/oqEiREQAAAAAAAAYwKIiOqKgIi+iIEIgQKIgQSBDoqBEAAAAAAAAGECiIA0gL6KgIhAgEKCgIQ4gLiA5RAAAAAAAAChAoiA5oiBEIEREAAAAAAAACMCioqAiS6IgQiBCoiBDIEOioEQAAAAAAAAIQKIgDSBLoqAiECAQoKAhMyA1IDiiIhcgOSBEoiIQoSEbIDUgRKIgOCA5oqAhICAQIBegISsgQSBTIC2iIBogJqKgIkWiIFMgKKIgGiAloqAiRiBDoqBEAAAAAAAAGECiIA0gNSA/IEWiIk6iID8gRqIiKSA5oqBEAAAAAAAAOECiIDggPSBFoiIxoiA9IEaiIiggRKKgRAAAAAAAABjAoqCioCEXIEIgRqIgQCBFoqBEAAAAAAAAGMCiIA0gNSAxoiAoIDmioEQAAAAAAAA4wKIgRCApoiBOIDiioEQAAAAAAAAYwKKgoqAhECBBRAAAAAAAABhAoiBGoiANIDVEAAAAAAAAOECiICmiICggOEQAAAAAAAAYwKIiJqKgoqAhJSBDRAAAAAAAABhAoiBFoiANIDAgTqIgMSA6oqCioCEtIEBEAAAAAAAAGMCiIEaiIA0gNUQAAAAAAAA4wKIgKKIgKSAmoqCioCEwIEJEAAAAAAAAGMCiIEWiIA0gOUQAAAAAAAA4wKIgMaIgTiA6oqCioCEmIFwgSSBdIFSiIjqiIjGiISggOkQAAAAAAADgv6IgSaMhKSADQQFxBEBESxmT52wYoD4hVCAxITsgKyFPICAhKiAbIRIgMyFVIA4hFiAiIVYgJiFXIBAhDyAwITIgLSFYIBchDCAlIVkgSyEfIEohNiA6IUcgKSFIICghUCARITQgJCFMIBghJyAsIRwgCiEhICMhGSAvIQsLIAFBAXEhBEEAIQNBASEBIARFDQALIAIgViBVoSBHRAAAAAAAAADAoiIKojkDmAQgAiAWIAqiOQOQBCACIDIgV6EgSCBIoCIWojkDiAQgAiAPIBaiOQOABCACIBIgUCBQoCIPojkD0AMgAiAqIA+iOQPIAyACIFkgWKEgSEQAAAAAAAAAwKIiD6I5A/gDIAIgDCAPojkD8AMgAiA7RAAAAAAAADLAokT0/dR46SaRP6I5A+gDIAIgOyA7oCIMIDYgH6GiOQPgAyACIAwgC6I5A9gDIAIgKCAooCIMICCiOQOYAyACIDpEAAAAAAAAAMCiIg8gIiAzoaI5A/gEIAIgDyAOojkD8AQgAiApICmgIgsgMCAmoaI5A+gEIAIgCyAQojkD4AQgAiAMIBuiOQOQAyACIE1E9vCQImWdkT+iRCi/oOC9BhlAoEQYLURU+yEZQBBMOQOYBSACIE1EUIvBw7RvzT+iRFHF6BQ/4RJAoCBeoUQYLURU+yEZQBBMOQOQBSACIA1EAAAAAAAAIsCiRAAAAAAAADXAoCILIAqiRPT91HjpJpE/ojkDoAQgAiALIA+iRAfOGVHaG6w/ojkDgAUgAiApRAAAAAAAAADAoiILICUgLaGiOQPYBCACIAsgF6I5A9AEIAIgMUQAAAAAAAAywKJEB84ZUdobrD+iOQPIBCACIDEgMaAiCyBKIEuhojkDwAQgAiALIC+iOQO4BCACIBNEgKzwvlRydT9jIBNETwsrA3GYbD9kcUECIB1EAAAAAAAA4D9mRSATRCZw626e6oA/ZkUgE0SxM4XOa+yCP2VFcnIiAxsiATYC+AEgAisDmAYhDiACKwPYASERIAIrA5AGISAgAisD0AYhFyACKwPQASEQIAIrA6gGISogAisDqAQhEiACKwOgBiEWIAIrA6gHIQ8gAiApRMgpY95qwSQ/oiAwICagoiBXIDKgIEhE3jWJ/mcN6T6ioqA5A/ACIAIgKETIKWPeasEkP6IgK6IgTyBQRN41if5nDek+oqKgOQPQAiACIDpEyClj3mrBJL+iIA1EAAAAAAAAGMCiIgsgIiAzoEQAAAAAAAAswKCgoiALIFUgVqBEAAAAAAAALMCgoCBHRN41if5nDem+oqKgIkc5A/gCIDFEyClj3mrBJD+iIEogS6BEAAAAAAAAGMCgoiEMRAAAAAAAAAAAITIgO0TeNYn+Zw3pPqIgHyA2oEQAAAAAAAAYwKCiIBoCfAJAIDxEoNes7unOqj9jDQAgPES6eYmsv7YIQGQNACBYIFmgIEhE3jWJ/mcN6b6iogwBC0QAAAAAAAAAAAsgFUQAAAAAAADwPyAVRAAAAAAAAAAAYhujIhuioSELAkAgPESg16zu6c6qP2MNACA8RLp5iay/tghAZA0AIClEyClj3mrBJL+iICUgLaCiITILIAIgGzkDgAMgAiAMIAugIhk5A4gDIBVEAAAAAAAAAABiBEAgAiAbIDIgFaOgIhs5A4ADIAIgGpogFaMgMqIgGaAiGTkDiAMLIBJEAAAAAAAAAACgRBgtRFT7IRlAEEwhGCABRQ0AIFogW6AhDCATIA+jRFVVVVVVVeU/EEkhHwJ8IANFBEAgDSAOoiEMIA5EexSuR+F65L+gRClcj8L1KNy/oiELAnwgDkTNzMzMzMzkP2UEQCANRArXo3A9SjBAoiAORFg5tMh2firAokQhsHJoke0MQKCgIRIgDEQK16Nwve2QQKIgDUSTGARWDnSZwKIgDkTXo3A9Ck+KQKJEGy/dJAZNYsCgoKAhIyAMRGiR7Xw/n3NAoiANRC/dJAaBcX3AoiAORJHtfD81Vm5AokRWDi2ynY9EwKCgoCEnIAxEUWuad5xSYkCiIA1EKqkT0ETUasCiIA5EguLHmLtyW0CiREcDeAsk6DLAoKCgIRkgDET0/dR46ZJjQKIgDUTFILByaI1swKIgDkQpXI/C9VhdQKJEWmQ7309NM8CgoKAhNCAMRGQ730+N+KxAoiANRHnpJjEIbLbAoiAORGIQWDn0k6dAokT0/dR46aCAwKCgoAwBCyAMRPYoXI9CQ8hAoiANRHsUrkex49fAoiAOREjhehQOmc9AokR7FK5HYfurwKCgoCEjIAxEi2zn++mHrECiIA1EokW28/0ZvMCiIA5EDi2yna+WskCiRKabxCAwc5DAoKCgIScgDETZzvdT4/+SQKIgDUQ1XrpJzH2iwKIgDkQSg8DKoUuYQKJEj8L1KFxpdcCgoKAhGSAMRMuhRbZzeJNAoiANRJqZmZnZ36LAoiAORJZDi2xnu5hAokQv3SQGga11wKCgoCE0IAxE3SQGgZWrcECiIA1EK4cW2c7Lf8CiIA5EyXa+nxq9dECiRHWTGARWBlLAoKCgIRIgDERxPQrXI5feQKIgDURSuB6F62jqwKIgDkQUrkfhOjzdQKJEXI/C9agdtMCgoKAgDkThehSuR+HmP2QNABogDUThehSuR2etQKIgDkQAAAAAwDiywKJEKVyPwvXilkCgoAshCiALRC/dJAaBldO/oCEWAnwgDkRmZmZmZmbmP2MEQCAMRGZmZmZm3bRAoiANRPYoXI9i2MDAoiAORAAAAABAUrJAokQX2c73U62KwKCgoCEhIAxEGy/dJIbZtECiIA1EduCcEbWVwMCiIA5E0m9fB57YsUCiROik942vtYnAoKCgITsgDEQpXI/CNaa1QKIgDUT2KFyPYrTBwKIgDkSPwvUonHyzQKJEZapgVNK5jMCgoKAMAQsgDETsUbgeXTn8QKIgDURxPQrXW6ANwaIgDkTsUbgeN88EQaJEj8L1KPyK48CgoKAhISAMRMP1KFxr3QFBoiANRD0K16Nw4xLBoiAORJqZmZkPuQpBokTZzvdTA0XpwKCgoCE7IAxEpHA9Ch+0+kCiIA1EmpmZmXEODMGiIA5Ej8L1KIS6A0GiRFyPwvV4jeLAoKCgCyFPIAIgICAqICCgoCAYoSAYoUQYLURU+yEZQBBMIjI5A4gFIAIgFSAVoiI2RAAAAAAAAPg/oiATIBOiRAAAAAAAAAhAoiAfIB+ioiIPRF3k++hqBL4+oiIMoiASojkDiAIgAiAaIBqgIhJEAAAAAAAA8D+gIgsgFKBEAAAAAAAA6D+iIiogDKIgFqI5A4ACIAIgFUQAAAAAAAD+v6IgFEQAAAAAAAAIwKIiDCALoCIWoiAfIA+iIg9EG/1KXTQYmT6iIguiIBmiOQOYAiACIBVEAAAAAAAA/j+iIAxEAAAAAAAA8D8gEqEiDKCiIAuiIDSiOQOQAiACIBUgNkSVlQ0IALATQKIgFEQAAAAAAAAkQKIiEiAaRAAAAAAAABDAokQAAAAAAAAAwKCgoiAWRJWVDQgAQBpAoqCiIB8gHyAPoiIPoiIYRIniam+zrX4+oiILoiAhojkDuAIgAiAVRAAAAAAAsCNAoiA2IBREAAAAAAAAFMCiIAygoiAURAAAAAAAABhAoiAaRAAAAAAAABBAokQAAAAAAAAAwKCgRNoSwVFVVdU/oqCiIAuiIAqiOQOwAiACIDYgNkQAAAAAALBDQKKiIA8gD6BEveCL9negPz6iIguiICOiOQOoAiACIDZEAAAAAACAQUCiICqiIAuiICeiOQOgAiACIBVEAAAAAACIPUCiIhYgFCAURAAAAAAAACTAoiAaRAAAAAAAACBAoiIPRAAAAAAAAChAoKCiIBpEAAAAAAAAIMCiIgxEAAAAAAAAAMCgoKIgGCAYoES39EvHWbIiPqIiC6IgT6I5A8gCIAIgFiAUIBIgD0QAAAAAAAAowKCgoiAMRAAAAAAAAABAoKCiIAuiIDuiOQPAAiARIBugRFetTlrN63G/oCILIAugIEcgEKCgDAELIAIgFiAqICCgoCAYoUQYLURU+yEZQBBMIjI5A4gFIAIgDSANRAAAAAAAAOo/okQAAAAAAAAEwKCiRAAAAAAAAPA/oCA+ID5EAAAAAAAA6D+iIguiIB8gEyATRAAAAAAAAAhAoqIgH6KiIg8gD6CiokRd5PvoagS+PqI5A+ACIAIgHyANIA2gRAAAAAAAAPA/oCAVIBVEAAAAAAAA7j+ioiAaRAAAAAAAAAhAokQAAAAAAADwP6CiIAuhIA+iokS1tiwZqQDCPqKiOQPYAiACIB8gDSANRHKndLD+bxpAokQAAAAAAAAYwKCiRAAAAAAAAPA/oCA+ID4gPkQAAAAAAAD+P6KioiAPRAAAAAAAAAhAoqKiRAAzjfposY0+oqI5A+gCIEcgDCAQoERXrU5azetxv6CgIBmgIBugCyELIAIgMjkDqAUgAkIANwOgBSACIBc5A7AFIAIgCyAXoTkDsAQLIAIoAixBAUYNACACIB5EAAAAAAAAEECiIDeiIAIrA0AiFiAWoiIPoiISOQNYIAIgDyAPoCASoDkDqAEgAiAeRAAAAAAAADFAoiBSoCAWIDcgEqKiRAAAAAAAAAhAoyILoiIMOQNgIAIgDEQAAAAAAAAIQKIgFiASRAAAAAAAAChAoiAPRAAAAAAAACRAoqCioEQAAAAAAADQP6I5A7ABIAIgFiAeRAAAAAAAoGtAoiBSRAAAAAAAAD9AoqAgNyAeIAtEAAAAAAAA4D+ioqKioiILOQNoIAIgD0QAAAAAAAAuQKIgEiASoCAPoKIgEkQAAAAAAAAYQKIgEqIgC0QAAAAAAAAIQKIgFkQAAAAAAAAoQKIgDKKgoKBEmpmZmZmZyT+iOQO4AQsgAkEYakQAAAAAAAAAACACQdAIaiACQbAIahBtIAJB7gA6ACkLIAAgAisD2AUgAisD4AWgRAAAAMDFnkLBoEQAAAAAcJmUQaIiKjkDQCAARBgtRFT7IRlAIAIrA7AGo0QAAAAAAABOQKJEAAAAAABAj0CiIgs5AyAgACALRAAAAAAAQI9AoyILOQMoIAIgCzkD2AcgACACKwPIBSIPOQNgIAAgAisDwAUiDDkDaCAAIAIrA5gGIhY5A3AgACACKwOIBjkDeCACKwOgByESIAAgCDYCnAEgACASOQOAASAAQgA3A0ggACBRRABU2ltmqPZCIFFEAAAAAAAAAABkGyALRBgtRFT7IRlAoyILIAuiokRVVVVVVVXVPxBJIgtEAAAAAAAA8D8gFiAWoqGfojkDOCAAIAs5AzAgAEIANwNQIABCADcDWCAAIA8gEqJEAAAAAABAj0CiOQOQASAAIAwgEqJEAAAAAABAj0CiOQOIASAAQRhqIgQhAQJAAkAgACgCGCIDRQ0AA0AgAyIBKwMQIgsgKmQEQCABIgQoAgAiAw0BDAILIAsgKmNFDQIgASgCBCIDDQALIAFBBGohBAtB8AcQVCIDICo5AxAgA0EYakEAQdgHECkaIAMgATYCCCADQgA3AgAgBCADNgIAIAMhASAAKAIUKAIAIgUEQCAAIAU2AhQgBCgCACEBCyAAKAIYIAEQbiAAIAAoAhxBAWo2AhwLIANBGGogAkEYaiIBQdgHECsaIABBoAFqIAFB2AcQKxogAiwA+wdBAEgEQCACKALwBxA0CyACLACHCEEASARAIAIoAvwHEDQLIAIsAJMIQQBIBEAgAigCiAgQNAsgAkHwCGokAEEADwsQVQALXQECfyMAQRBrIgMkACABIAAoAgQiBEEBdWohASAAKAIAIQAgBEEBcQRAIAEoAgAgAGooAgAhAAsgAyACNgIMIAEgA0EMaiAAEQMAIQAgAygCDBACIANBEGokACAACw0AIAEgACgCAGorAwALDwAgASAAKAIAaiACOQMACw0AIAEgACgCAGooAgALDwAgASAAKAIAaiACNgIACxkAIAAEQCAAKAIAEGggACgCBBBoIAAQNAsLKAEBfyMAQRBrIgMkACADIAI2AgwgACABIAIQtAEhACADQRBqJAAgAAvHAQECfyMAQRBrIgEkAAJ8IAC9QiCIp0H/////B3EiAkH7w6T/A00EQEQAAAAAAADwPyACQZ7BmvIDSQ0BGiAARAAAAAAAAAAAEOAEDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQuQFBA3EOAwABAgMLIAErAwAgASsDCBDgBAwDCyABKwMAIAErAwhBARDfBJoMAgsgASsDACABKwMIEOAEmgwBCyABKwMAIAErAwhBARDfBAshACABQRBqJAAgAAvLAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABDfBCEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABELkBQQNxDgMAAQIDCyABKwMAIAErAwhBARDfBCEADAMLIAErAwAgASsDCBDgBCEADAILIAErAwAgASsDCEEBEN8EmiEADAELIAErAwAgASsDCBDgBJohAAsgAUEQaiQAIAALqAMCBX8BfiAAvUL///////////8Ag0KBgICAgICA+P8AVCABvUL///////////8Ag0KAgICAgICA+P8AWHFFBEAgACABoA8LIAG9IgdCIIinIgJBgIDA/wNrIAenIgVyRQRAIAAQpwEPCyACQR52QQJxIgYgAL0iB0I/iKdyIQMCQCAHQiCIp0H/////B3EiBCAHp3JFBEACQAJAIANBAmsOAgABAwtEGC1EVPshCUAPC0QYLURU+yEJwA8LIAJB/////wdxIgIgBXJFBEBEGC1EVPsh+T8gAKYPCwJAIAJBgIDA/wdGBEAgBEGAgMD/B0cNASADQQN0QYD2EmorAwAPCyAEQYCAwP8HRyACQYCAgCBqIARPcUUEQEQYLURU+yH5PyAApg8LAnwgBgRARAAAAAAAAAAAIARBgICAIGogAkkNARoLIAAgAaOZEKcBCyEAAkACQAJAIAMOAwQAAQILIACaDwtEGC1EVPshCUAgAEQHXBQzJqahvKChDwsgAEQHXBQzJqahvKBEGC1EVPshCcCgDwsgA0EDdEGg9hJqKwMAIQALIAALryACMXwEfyMAQTBrIjUkACAAIAE5A4ABIABBADYCDCAAKwPYASABIAGiIgWiIQggACsDwAEgAaIgACsD+AWgIQogBSAAKwOIAaIhEiAAKwPgBSIGIAArAzCiIAGiIRhEAAAAAAAA8D8gACsDKCABoqEhDyAAKwNoIicgAaIgACsDiAYiKKAhDCAAKwO4ASABoiAAKwOQBqAhBCAAKwOQByEdIAArA4gHIR8gACgCFEEBRwRAIAUgAaIiCSABoiIHIAEgACsDoAGiIAArA5gBoKIgACsDkAEgCaIgEqCgIRIgDyAAKwNAIAWioSAAKwNIIAmioSAAKwNQIAeioSEPIAArA2AhBSAEEGohCSAMIAArA3AgAaIgACsD0AEgBSAJokQAAAAAAADwP6AiBSAFoiAFoiAAKwNYoaKgIgWhIQwgACsDeCEJIAQgBaAiBBBrIQUgBiAAKwM4oiAFIAmhoiAYoCEYCyAIIAqgIQggACsD8AUhCSAAKwOABiETQQIhNgJAAkACfCAAKwO4BiIQIAAtABIiOEHkAEcNABogACsD4AIhBSAAKwPoAiABoiAIoCEIIAArA/ACIAGiIAygIQwgACsD2AIgAaIgCaAhCSAAKwO4AiABoiAToCETIAArA/AEIQogACsDmAQhGSAAKwPQAiEVIAArA8gCIREgACsDwAIhFiAAKwOwAiEaIAArA6gCIRsgACsDoAIhHCAAKwOYAiEgIAArA5ACISEgACsDiAIhIiAAKwOAAiEjIAArA/gBISQgACsD8AEhJSAAKwPoASEmIAAoAuABITcgAURXrU5azetxP6IgACsDkASgRBgtRFT7IRlAEEwhFCA3RQRAIAUgAaIgBKAhBCAQDAELAkACQCAAKwOIBSIFRAAAAAAAAAAAYQ0AIAUgAaJEAAAAAAAAAABlDQAgAZkgBZljRQ0BCyAAIBA5A5gFIABCADcDiAUgACAKOQOQBUQAAAAAAAAAACEFC0QAAAAAAICGQEQAAAAAAICGwCABRAAAAAAAAAAAZBshDSAAKwOYBSEGIAArA5AFIQQCQCA3QQJGBEADQCAERGCkYUIWExfAoCIREGohCyAEICcgBaIgKKAiCiAKoCIOoERgpGFCFhMXwKAiFRBqIRYgCiAEoCIHRPSIsGUieu6/oCIXEGohKSAEIAqhIh5E9IiwZSJ67r+gIioQaiErIAdEzOuIQzbQ8L+gIiwQaiEtIB5EzOuIQzbQ8L+gIh4QaiEuIAQgBKAiB0Q3Akx08dL8v6AiLxBqITAgDiAHoEQ3Akx08dL8v6AiMRBqITIgCiAHoEQ4CrVLwKQRwKAiMxBqITQgBiAZoCIOIBogByAKoUQ4CrVLwKQRwKAiChBqoiAbIDSiICIgMqIgMCAhoqCgoCIHIAegIBwgLqIgICAtoiAjICuiICQgKaIgJiAWoiALICWioKCgoKCgoiELIBEQayEHIBUQayERIBcQayEVICoQayEWIDEQayEXIC8QayEpICwQayEqIB4QayEeIDMQayErIBogChBroiAbICuiIBwgHqIgICAqoiAhICmiICIgF6IgIyAWoiAkIBWiICYgEaIgByAloqCgoKCgoKCgoCEKIAEgBaEiB5lEAAAAAACAhkBmRQ0CIAAgDSAFoCIFOQOIBSAAIAtEAAAAAACkD0GiIAogDaIgBqCgIgY5A5gFIAAgCkQAAAAAAKQPQaIgDiANoiAEoKAiBDkDkAUMAAsACyAVRAAAAAAAAAhAoiEaIBEgEaAhGwNAIARE1UgiZrzOwL+gIgcQayEKIAREYKRhQhYTB8CgIg4gDqAiDhBrIQsgFSAERA0raJx+99e/oEQAAAAAAAAIQKIiHBBroiAWIAqiIAsgEaKgoCEKIAcQaiEHIA4QaiELIAYgGaAiDiAaIBwQaqIgFiAHoiAbIAuioKCiIQsgASAFoSIHmUQAAAAAAICGQGZFDQEgACANIAWgIgU5A4gFIAAgC0QAAAAAAKQPQaIgCiANoiAGoKAiBjkDmAUgACAKRAAAAAAApA9BoiAOIA2iIASgoCIEOQOQBQwACwALIBQgFKAgByAKIAeiIgWiRAAAAAAAAOA/oiAOIAeiIASgoCIEIAggCKChoCAUIAQgCKEgDKGgIDdBAUcbIQQgByALIAeiokQAAAAAAADgP6IgBSAGoKAgEKEgEKALIgVEAAAAAAAAAABlDQAgDyAPIB0gBaNEVVVVVVVV5T8QSaKiIgpEAAAAAAAA+D8QSSEGQQEhNiATIBihIgVEAAAAAAAA8D9mDQAgBUT8qfHSTWJQv2MNACAAIB0gBqMiGDkD8AYgACAJOQPQBiAAIAo5A8AGIAAgDEQYLURU+yEZQBBMIgY5A+AGIAAgCEQYLURU+yEZQBBMIgc5A9gGIABEje21oPfGsD4gBSAFRI3ttaD3xrA+YxsiBTkDyAYgACAQIBKiIASgIAygIAigRBgtRFT7IRlAEEwgBqEgB6FEGC1EVPshGUAQTCIEOQPoBiA1IAk5AxggNSAFOQMoIDUgBjkDICA1IAc5AwggNSAEOQMQAkAgOEHkAEcEQCAAKwPIASEGIAArAxghASAJEGshCCAJEGohDAwBCyAAKwP4AiEHIAArA4ADIQ0gACsDiAMhECAAKwOQAyEPIAArA5gDIQ4gACsDoAMhDCAAKwOoAyELIAArA7ADIRIgACsDuAMhEyAAKwPAAyERIAArA8gDIRQgACsD0AMhGSAAKwPYAyEVIAArA+ADIRYgACsD6AMhCCAAKwPwAyEaIAArA/gDIRsgACsDgAQhHCAAKwOIBCEgIAArA6AEISEgACsDqAQhIiAAKwOwBCEjIAArA7gEISQgACsDwAQhJSAAKwPIBCEFIAArA9AEIQYgACsD2AQhJiAAKwPgBCEnIAArA+gEISggACsD+AQhCSAALAAQITYgAUTeNYn+Zw3pPqIgACsDgAWgIgQQa0T0/dR46SahP6IgBKAiFxBrIQQgFxBqIRcgNSAFIAFEyClj3mrBJD+iIAmgIgEQa0QHzhlR2hu8P6IgAaAiCRBrIgFEAAAAAAAA4D+iIAGiRAAAAAAAANC/oCIFoiAJEGogAUQAAAAAAADgv6KiIgkgBqKgIAggBCAERAAAAAAAAOA/oqJEAAAAAAAA0L+gIgiiIBcgBEQAAAAAAADgv6KiIgYgGqKgoCAMoSIMIDUrAxigOQMYIDUgDSAFoiAJIAeioCASIAiiIAYgE6KgoCAQoSA1KwMooDkDKCAkIAWiIAkgJaKgIBUgCKIgBiAWoqCgIA6hIQcgIyABoiAhIAWiIAkgIqKgoCAZIASiIBEgCKIgBiAUoqCgoCAPoSENICggAaIgJiAFoiAJICeioKAgICAEoiAbIAiiIAYgHKKgoKAgC6EhCSA1KwMYIgUQaiEBIAUQayEEAkAgBUSamZmZmZnJP2YEQCA1IA0gASAHIASjIgGioSA1KwMgoDkDICA1IAEgNSsDCKA5AwggNSAJIDUrAxCgOQMQDAELIDUgNSsDCCIGRBgtRFT7IRlAEEwiBUQYLURU+yEZQKAgBSAFRAAAAAAAAAAAYxsgBSA2QeEARiI2GyIFOQMIIAYQayEIIAYQaiEGIDUrAyAhECA1KwMQIQ8gNSAEIAiiIAcgBqIgCCAMIAGiIg6ioKAgBCAGoiAOIAaiIAcgCKKhoBBsIghEGC1EVPshGUCgIAggCEQAAAAAAAAAAGMbIAggNhsiCEQYLURU+yEZQEQYLURU+yEZwCAFIAhkG0QAAAAAAAAAgCAFIAihmUQYLURU+yEJQGQboDkDCCA1IAkgNSsDEKAiCDkDECA1IAEgBaIgDyAQoKAgCSANoCAFIAyiIASioaAgCKEgASA1KwMIoqE5AyALIDUrAxgiCUQAAAAAAAAAAGMEQCA1IDUrAwhEGC1EVPshCUCgOQMIIDUgNSsDIEQYLURU+yEJwKA5AyAgCZohCQtBAyE2IDUrAygiBUQAAAAAAAAAAGMNASAFRAAAAAAAAPA/ZA0BIAArA7AHIQQgACAJEGsiCCAERAAAAAAAAOC/oqIiATkDGCAJEGoiDEQAAAAAAAAUQKJEAAAAAAAACECgIAggBEQAAAAAAADQv6KioiEEIAACfCAMRAAAAAAAAPA/oCIGmUQa38RBZmN6PWQEQCAEIAajDAELIAREGt/EQWZjej2jCyIGOQPIAQsgBSA1KwMgIgQQa6IgAUQAAAAAAADwPyAKRAAAAAAAAPA/IAUgBaKhoqMiAaKgIgeaIQ5BASE2IAEgBqIgBSAEEGqiIgGiIAQgNSsDEKAgNSsDCCIPoKAgD6FEGC1EVPshGUAQTCIGIQQDQERmZmZmZmbuP0RmZmZmZmbuvyABIAQQayINoiILIA4gBBBqIhCiIhIgBqCgIAShRAAAAAAAAPA/IBAgAaIiE6EgDSAHoiIRoaMiBUQAAAAAAAAAAGQbIAUgBZlEZmZmZmZm7j9mGyIFmUQR6i2BmZdxPWYEQCAEIAWgIQQgNkEKSSE3IDZBAWohNiA3DQELC0EEITYgCkQAAAAAAADwPyABIAGiIAcgB6KgoSIEoiIORAAAAAAAAAAAYw0AIB8gHaJEAAAAAAAATkCjIQUgCiAKRAAAAAAAAPA/IBMgEaChoiIGoyITIA0gB6EgASALIBKgIgsgBJ8iEkQAAAAAAADwP6CjIg2ioaIiBCATIAcgDaIgECABoaCiIgEgAaCiIQ0gBEQAAAAAAAAAwKIgBKJEAAAAAAAA8D+gIRAgCp8gC6IgBqMhEyAOnyAGoyERIAQgARBsIRREAAAAAAAA8D8gDqMiASABIAArA5gHRAAAAAAAAOA/oqIiDqIhCwJAIDhB5ABHBEAgACsDsAEhBCAAKwOoASEKIAArAyAhBwwBCyAARAAAAAAAAPA/IAwgDKIiAaEiCjkDqAEgACABRAAAAAAAABxAokQAAAAAAADwv6AiBDkDsAEgACABRAAAAAAAAAhAokQAAAAAAADwv6AiBzkDIAsgC0QAAAAAAADQv6IgBKIgDaIgFKAiBBBqIQEgDCALRAAAAAAAAPg/oiILoiIUIA2iIA+gIg8QaiEMIA8QayEPIAIgHyAGRAAAAAAAAPA/IBIgC6IgB6KhoiAQIA5EAAAAAAAA4D+iIAqioqAiBiAIIBSiIBCiIAmgIgkQaiIIIA+aoiILIAQQayIEoiAMIAGioCISoqI5AwAgAiAAKwOIByAGIAQgDCAIoiIUoiAPIAGioCIfoqI5AwggAiAGIAQgCRBrIhmiIgiiIAArA4gHojkDECADIAUgEyANIBggDqIiDSAKoqIgHaOhIgkgCKIgESANIAogEKIgB0QAAAAAAAD4P6KgoiAdo6AiCCAZIAGioqCiOQMQIAMgBSAJIB+iIAggFCABoiAEIA+ioaKgojkDCCADIAUgCSASoiAIIAsgAaIgBCAMoqGioKI5AwBBBiE2IAZEAAAAAAAA8D9jRQ0BCyAAIDY2AgwLIDVBMGokAAuUBAEDfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBEUNACAELQAMDQAMAgsCQCABIAIoAgBGBEAgAiEBDAELIAIgAigCBCIBKAIAIgA2AgQgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQILIAFBAToADCADQQA6AAwgAyACKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIINgIIIAMoAggiACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCwJAIARFDQAgBC0ADA0ADAELAkAgASACKAIARwRAIAIhAQwBCyACIAEoAgQiADYCACABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIEIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIEIgAoAgAiATYCBCABBEAgASADNgIICyAAIAMoAgg2AgggAygCCCIBIAEoAgAgA0dBAnRqIAA2AgAgACADNgIAIAMgADYCCAwCCyAEQQxqIQEgAkEBOgAMIAMgACADRjoADCABQQE6AAAgAyIBIABHDQALCwv4BwIGfwt8IAEgACsDQKFEUmLNhAN68T6iIQwgACgCHEECTwRAAkACfAJAAkAgAEEYaiIHKAIAIghFBEAgByEEA0AgBCgCCCIFKAIAIARGIQYgBSEEIAYNAAsMAQsgByEFIAghBANAIAUgBCAEKwMQIAFjIgYbIQUgBEEEaiAEIAYbKAIAIgQNAAsgBSAHRw0BIAghBANAIAQiBSgCBCIEDQALCyAFKwMQDAELAkACQCAAKAIUIAVHBEAgBSgCACIGDQEgBSEGA0AgBigCCCIEKAIAIAZGIQkgBCEGIAkNAAsMAgsgBSsDEAwCCwNAIAYiBCgCBCIGDQALCyAEKwMQIgogBSsDECILIAEgCqEgCyABoWMbCyIBRAAAAAAAAPC/YQRAIAAoAhQhBQwBCyAHIQQCQCAIRQ0AA0AgCCIEKwMQIgogAWQEQCAEIQcgBCgCACIIDQEMAgsgASAKZEUEQCAEIQUMAwsgBCgCBCIIDQALIARBBGohBwtB8AcQVCIFIAE5AxAgBUEYakEAQdgHECkaIAUgBDYCCCAFQgA3AgAgByAFNgIAIAUhBCAAKAIUKAIAIggEQCAAIAg2AhQgBygCACEECyAAKAIYIAQQbiAAIAAoAhxBAWo2AhwLIABBoAFqIAVBGGpB2AcQKxoLIABBoAFqIAxBkIQUQbCEFBBtAkAgACgCrAEiBEEASgRAIAJFDQEgAkIANwMAIAJCADcDECACQgA3AwggACgCrAEPC0EAIQRB0IMUQYCGFCsDACILQaCEFCsDACIBokH4hRQrAwAiDUGYhBQrAwAiDKJB8IUUKwMAIg5BkIQUKwMAIgqiRAAAAAAAAAAAoKCgRAAAAAAAQI9AojkDAEHwgxQgC0HAhBQrAwAiC6IgDUG4hBQrAwAiDaIgDkGwhBQrAwAiDqJEAAAAAAAAAACgoKBEAAAAAABAj0CiOQMAQdiDFCABQZiGFCsDACISoiAMQZCGFCsDACIToiAKQYiGFCsDACIUokQAAAAAAAAAAKCgoEQAAAAAAECPQKI5AwBBsIYUKwMAIQ9BoIYUKwMAIRBBqIYUKwMAIRFB+IMUIBIgC6IgEyANoiAUIA6iRAAAAAAAAAAAoKCgRAAAAAAAQI9AojkDAEHggxQgDyABoiARIAyiIBAgCqJEAAAAAAAAAACgoKBEAAAAAABAj0CiOQMAQYCEFCAPIAuiIBEgDaIgECAOokQAAAAAAAAAAKCgoEQAAAAAAECPQKI5AwAgAkHggxQpAwA3AxAgAkHYgxQpAwA3AwggAkHQgxQpAwA3AwAgA0GAhBQpAwA3AxAgA0H4gxQpAwA3AwggA0HwgxQpAwA3AwALIAQLewECf0Ho6xJBvOgSQeToEkEAQdjsEkERQZDqEkEAQZDqEkEAQfs9QdvsEkESEANB6OsSQQJB9OgSQejsEkETQRQQBEEEEFQiAEEENgIAQQQQVCIBQQQ2AgBB6OsSQYbBAEHg7hJB6OwSQRUgAEHg7hJBgO0SQRYgARAGCxQAIAAEQCAAIAAoAgAoAgQRAQALC6EBAQR/IwBBEGsiAiQAIAEoAgAiA0Hw////B0kEQAJAIANBCk0EQCACIAM6AA8gAkEEaiEEDAELIANBD3JBAWoiBRBUIQQgAiAFQYCAgIB4cjYCDCACIAQ2AgQgAiADNgIICyAEIAFBBGogAxArIANqQQA6AAAgAkEEaiAAEQAAIQAgAiwAD0EASARAIAIoAgQQNAsgAkEQaiQAIAAPCxBVAAuhAQEFfyMAQRBrIgIkAEEQEFQhASAAKAIEIQQgACgCACEDIAIgAC0ACjoADiACIAAvAQg7AQwgAEIANwIAIAAsAAshBSAAQQA2AgggAUGE7BI2AgACQCAFQQBOBEAgASADNgIEIAEgBDYCCCABIAIvAQw7AQwgASACLQAOOgAOIAEgBToADwwBCyABQQRqIAMgBBB2IAMQNAsgAkEQaiQAIAELRQECfyABIAAoAgBqIgAoAgQgAC0ACyIBIAHAQQBIIgMbIgFBBGoQMyICIAE2AgAgAkEEaiAAKAIAIAAgAxsgARArGiACC68BAQR/IwBBEGsiAyQAIAIoAgAiBEHw////B0kEQAJAIARBCk0EQCADIAQ6AA8gA0EEaiEFDAELIARBD3JBAWoiBhBUIQUgAyAGQYCAgIB4cjYCDCADIAU2AgQgAyAENgIICyAFIAJBBGogBBArIARqQQA6AAAgASAAKAIAaiIALAALQQBIBEAgACgCABA0CyAAIAMpAgQ3AgAgACADKAIMNgIIIANBEGokAA8LEFUAC5wBAQJ/IwBBEGsiBCQAAkACQCACQQtJBEAgACACOgALDAELIAJB8P///wdPDQEgBEEIaiACQQtPBH8gAkEQakFwcSIDIANBAWsiAyADQQtGGwVBCgtBAWoQjgIgACAEKAIIIgM2AgAgACAEKAIMQYCAgIB4cjYCCCAAIAI2AgQgAyEACyAAIAEgAkEBahDhARogBEEQaiQADwsQVQALHwAgAEGE7BI2AgAgACwAD0EASARAIAAoAgQQNAsgAAshACAAQYTsEjYCACAALAAPQQBIBEAgACgCBBA0CyAAEDQL7QEBAn9B2O0SQeDtEkGw6RJBAEHY7BJBGEGQ6hJBAEGQ6hJBAEHCOUHb7BJBGRADQdjtEkEBQcDpEkHY7BJBGkEbEARBBBBUIgBBBDYCAEEEEFQiAUEENgIAQdjtEkHZwABB6PUTQejsEkEcIABB6PUTQYDtEkEdIAEQBkEIEFQiAEEANgIEIABBHjYCAEHY7RJB7z1BA0HE6RJBoO0SQR8gAEEAQQAQBUEIEFQiAEEANgIEIABBIDYCAEEIEFQiAUEANgIEIAFBITYCAEHY7RJB6jpBsPYTQejsEkEiIABBsPYTQYDtEkEjIAEQBgvAAQEDfyAABEAgAEGE6RI2AgACQEHYhBQoAgAiAkHUhBRGDQAgAiEBAkADQAJAIAEoAgQhAyABKAIIIABGDQAgAyIBQdSEFEcNAQwCCwsgASgCACICIAM2AgQgASgCBCACNgIAQdyEFEHchBQoAgBBAWs2AgAgARA0QdiEFCgCACECCyACQdSEFEYNAEEAIQEDQCACKAIIIAE2AhAgAUEBaiEBIAIoAgQiAkHUhBRHDQALC0HghBRBAToAACAAEDQLC3oBA39BFBBUIgFBAToABCABQYTpEjYCAEHIhBQtAABFBEBBDBBUIgBB1IQUNgIEIAAgATYCCCAAQdSEFCgCACICNgIAIAIgADYCBEHUhBQgADYCAEHchBRB3IQUKAIAIgBBAWo2AgAgASAANgIQC0HghBRBAToAACABCw0AIAEgACgCAGotAAALDwAgASAAKAIAaiACOgAACx4AIAAgASAAKAIIQQAgACgCACgCABETABogACgCCAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERoACwcAIAAoAhALCQAgACABNgIQCzUBAX8gASAAKAIEIgJBAXVqIQEgACgCACEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAACzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRAgALBABBAAtDAQN/IwBBIGsiASQAIAFBCGoiAyAANwMAIAFBGGoiAiABQRBqIAMpAwAQ1gEpAwA3AwAgAikDACEAIAFBIGokACAAC5QBAQJ/AkACQAJAAkAgAC0ACyIDQYABcUEHdgRAIAAoAgQiAyAAKAIIQf////8HcUEBayICRg0BDAILQQohAiADQf8AcSIDQQpHDQILIAAgAkEBIAIgAhC9AyACIQMLIAAoAgAhAiAAIANBAWo2AgQMAQsgACADQQFqOgALIAAhAgsgAiADaiIAIAE6AAAgAEEAOgABC+MBAQJ/IAJBAEchAwJAAkACQCAAQQNxRQ0AIAJFDQAgAUH/AXEhBANAIAAtAAAgBEYNAiACQQFrIgJBAEchAyAAQQFqIgBBA3FFDQEgAg0ACwsgA0UNAQJAIAAtAAAgAUH/AXFGDQAgAkEESQ0AIAFB/wFxQYGChAhsIQMDQCAAKAIAIANzIgRBf3MgBEGBgoQIa3FBgIGChHhxDQIgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNAQsgAUH/AXEhAQNAIAEgAC0AAEYEQCAADwsgAEEBaiEAIAJBAWsiAg0ACwtBAAuBAQECfwJAAkAgAkEETwRAIAAgAXJBA3ENAQNAIAAoAgAgASgCAEcNAiABQQRqIQEgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNAQsDQCAALQAAIgMgAS0AACIERgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAMgBGsPC0EAC2MBAn8CQEHchBQoAgBFDQBB2IQUKAIAIgAoAgAiAUHUhBQoAgAiAigCBDYCBCACKAIEIAE2AgBB3IQUQQA2AgAgAEHUhBRGDQADQCAAKAIEIQEgABA0IAEiAEHUhBRHDQALCwvxAQEBf0HY6RJB6OkSQYDqEkEAQdjsEkEnQZDqEkEAQZDqEkEAQaTAAEHb7BJBKBADQdjpEkEBQZTqEkHY7BJBKUEqEARBCBBUIgBCiICAgBA3AwBB2OkSQcrAAEECQazqEkHo7BJBKyAAQQBBABAFQcDqEkHY6hJB9OoSQdjpEkHY7BJBLEHY7BJBLUHY7BJBLkH5O0Hb7BJBLxADQcDqEkECQYTrEkHo7BJBMEExEARBCBBUIgBCiICAgBA3AwBBwOoSQcrAAEECQaDrEkHo7BJBMiAAQQBBABAFQaDAAEECQajrEkGQ7RJBM0E0QQAQCwsTAQF/QQQQVCIAQaDqEjYCACAAC5MBAQV/IwBBEGsiAiQAIAAoAgAhAyACQQRqIgQgASAAKAIEIgBBAXVqIgEgAEEBcQR/IAEoAgAgA2ooAgAFIAMLEQIAIAIoAgggAi0ADyIAIADAIgNBAEgiBRsiAEEEahAzIgEgADYCACABQQRqIAIoAgQiBiAEIAUbIAAQKxogA0EASARAIAYQNAsgAkEQaiQAIAELKQEBfyMAQRBrIgIkACACIAE2AgwgAkEMaiAAEQAAIQAgAkEQaiQAIAALEQBBBBBUIgBBlOsSNgIAIAALCQAgASAAEQEAC3IBAn8jAEEQayIBJAAgAUEEaiICIAAgACgCACgCCBECACABIAEoAgQgAiABLAAPQQBIGzYCACMAQRBrIgAkACAAIAE2AgxB0PwTQZg+IAEQxgEgAEEQaiQAIAEsAA9BAEgEQCABKAIEEDQLIAFBEGokAAsGACAAEDQLIAAgAEEAOgAIIABC0+qJm8at2LnzADcCACAAQQg6AAsLGwAgAEEAOgAEIABBwsLNqwY2AgAgAEEEOgALC7wDAQF/QfDrEkGg7BJByOwSQejrEkHY7BJBNkHY7BJBN0HY7BJBOEH1OUHb7BJBORADQfDrEkECQeDsEkHo7BJBOkE7EARBCBBUIgBBADYCBCAAQTw2AgBB8OsSQYXAAEECQezsEkHo7BJBPSAAQQBBABAFQQgQVCIAQQA2AgQgAEE+NgIAQfDrEkHTOUEDQfTsEkGA7RJBPyAAQQBBABAFQQgQVCIAQQA2AgQgAEHAADYCAEHw6xJBvj5BAkGI7RJBkO0SQcEAIABBAEEAEAVBCBBUIgBBADYCBCAAQcIANgIAQfDrEkGTwABBA0GU7RJBoO0SQcMAIABBAEEAEAVBCBBUIgBBADYCBCAAQcQANgIAQfDrEkHvPUEFQbDtEkHw7RJBxQAgAEEAQQAQBUEIEFQiAEEANgIEIABBxgA2AgBB8OsSQa7AAEEFQbDtEkHw7RJBxQAgAEEAQQAQBUEIEFQiAEEANgIEIABBxwA2AgBB8OsSQek5QQVBsO0SQfDtEkHFACAAQQBBABAFQQgQVCIAQQA2AgQgAEHIADYCAEHw6xJBwjxBAkH47RJB6OwSQckAIABBAEEAEAUL0wIBBX8jAEEQayIBJABBIBBUIQIgACgCBCEDIAAoAgAhBCABIAAtAAo6AAIgASAALwEIOwEAIABCADcCACAALAALIQUgAEEANgIIAkACQAJAIAVBAE4EQCABIAEtAAI6AA4gASADNgIIIAEgBDYCBCABIAEvAQA7AQwgASAFOgAPIAJBhOwSNgIAIAJBBGohAAwBCyABQQRqIAQgAxB2IAEsAA8hAyACQYTsEjYCACACQQRqIQAgA0EASA0BCyAAIAEpAgQ3AgAgACABKAIMNgIIDAELIAAgASgCBCABKAIIEHYgASwAD0EATg0AIAEoAgQQNAsgAkG46xI2AgAgAkEYEFQ2AhBBGBBUIQAgAkIANwIYIAIgADYCFEGAhRRCADcDAEH4hBRCADcDAEHAhRRCADcDAEHIhRRCADcDACAFQQBIBEAgBBA0CyABQRBqJAAgAgsJAEHchBQoAgALnwUBCH8jAEEQayIDJABB2IQUKAIAIQIgAyADQQRqIgA2AgggAyAANgIEIAJB1IQURwRAQdyEFCgCACEHIANBBGohBQNAAn8gAigCBCIAIAEgAigCCEcNABpB1IQUIQQCQCAAQdSEFEYEQEEBIQkMAQsDQCAAKAIIIgQgAUYhCSABIARHBEAgACEEDAILQdSEFCEEIAAoAgQiAEHUhBRHDQALCyACIARHBEBBACEAIAIhBkHchBQgByACIAQoAgAiBUYEf0EBBQNAIAAiB0EBaiEAIAYoAgQiBiAFRw0ACyAHQQJqCyIAayIHNgIAIAIoAgAiBiAFKAIENgIEIAUoAgQgBjYCACADKAIEIgYgAjYCBCACIAY2AgAgAyAFNgIEIAUgA0EEajYCBCAAIAhqIQgLIAQgCQ0AGiAEKAIECyICQdSEFEcNAAsCQCAIRQ0AIAMoAggiACgCACICIAUoAgQ2AgQgBSgCBCACNgIAIANBADYCDCAAIANBBGpGDQADQCAAKAIEIQIgABA0IAIiACADQQRqRw0ACwtB2IQUKAIAIQILIAEEQCABQYTpEjYCAAJAIAJB1IQURg0AIAIhAAJAA0ACQCAAKAIEIQQgACgCCCABRg0AIAQiAEHUhBRHDQEMAgsLIAAoAgAiAiAENgIEIAAoAgQgAjYCAEHchBRB3IQUKAIAQQFrNgIAIAAQNEHYhBQoAgAhAgsgAkHUhBRGDQBBACEAA0AgAigCCCAANgIQIABBAWohACACKAIEIgJB1IQURw0ACwtB4IQUQQE6AAAgARA0QdiEFCgCACECCyACQdSEFEcEQEEAIQADQCACKAIIIABBAWoiADYCECACKAIEIgJB1IQURw0ACwtB4IQUQQE6AAAgA0EQaiQAC+sCAQV/QdiEFCgCACIEQdSEFEcEQANAIAQoAggiBQRAIAVBhOkSNgIAQdiEFCgCACIBIQICQCABQdSEFEYNAAJAA0ACQCACKAIEIQMgAigCCCAFRg0AIAMiAkHUhBRHDQEMAgsLIAIoAgAiASADNgIEIAIoAgQgATYCAEHchBRB3IQUKAIAQQFrNgIAIAIQNEHYhBQoAgAhAQtBACECIAFB1IQURg0AA0AgASgCCCACNgIQIAJBAWohAiABKAIEIgFB1IQURw0ACwtB4IQUQQE6AAAgBRA0CyAEKAIEIgRB1IQURw0ACwsCQEHchBQoAgBFDQBB2IQUKAIAIgEoAgAiAkHUhBQoAgAiAygCBDYCBCADKAIEIAI2AgBB3IQUQQA2AgAgAUHUhBRGDQADQCABKAIEIQMgARA0IAMiAUHUhBRHDQALC0HghBRBAToAACAAKAIYIgMEQCADEDQLIAAoAhwiAARAIAAQNAsLNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRAQALnwYCBX8DfCMAQeAAayIDJAAgACgCGCECAkBB4IQULQAABEAgACACQdyEFCgCAEEYbBA1NgIYIAAgACgCHEHchBQoAgBBGGwQNTYCHEHghBRBADoAAAwBCyACDQAgAEHchBQoAgBBGGwiAhAzNgIYIAAgAhAzNgIcC0EAIQIgAUQAAAAAcJmUQaNEAAAAwMWeQkGgQfiEFCsDAKAiCUQAAACALLRCwaBEAAAAAKDV4UCjIgdEAAMaR52T50GiIAcgB0TOyeYFMwHavqKiIAeiIAcgB0TrdCDrqdW3P6KioKBEbZBJxuhu8ECgRDmdUqJG35E/okQAAAAAAABuQKNEGC1EVPshGUAQTCIIRBgtRFT7IRlAoCAIIAhEAAAAAAAAAABjGyEIIAlEAAAAwAiyQkFkBEAgB0T8qfHSTWKAP6IgB6IgB6IgB0Tb+X6iso9awaIgB0RSuB6F69EdQKIgB6KgoEQAAAAAACCsQKNEGra5c9lCX0CgRAAAAAAAgHZAEExEOZ1SokbfkT+iIgcQayEJIAcgB6AQa0Trg8Q6Ov30PaIgCUTl9eiJXnxLPqIgCKCgIQgLIANCADcDOCADQUBrQgA3AwAgA0IANwNIIANCgICAgICAgPg/NwNQIAMgCEQYLURU+yEZQBBMIgcQaiIIOQMwIANCADcDICADIAcQayIHOQMoIAMgCDkDECADIAeaOQMYA0AgAkEYbEHwhRRqIANBEGogAkEDdGorAwA5AwAgAkEBaiICQQNHDQALQQAhAgNAIAJBGGxB+IUUaiACQQN0IANqKwMoOQMAIAJBAWoiAkEDRw0AC0EAIQIDQCACQRhsQYCGFGogAkEDdCADakFAaysDADkDACACQQFqIgJBA0cNAAtB2IQUKAIAIgJB1IQURwRAA0ACQCACKAIIIgUtAARFBEAgA0HkADYCAEH8/hNBwOsSIAMQDBoMAQsgBSABIARBGGwiBiAAKAIYaiAAKAIcIAZqIAUoAgAoAgAREwAaCyAEQQFqIQQgAigCBCICQdSEFEcNAAsLIAAoAhghACADQeAAaiQAIAALHgAgASACIAAoAhBBACABKAIAKAIAERMAGiAAKAIQCzsBAX8gASAAKAIEIgVBAXVqIQEgACgCACEAIAEgAiADIAQgBUEBcQR/IAEoAgAgAGooAgAFIAALERsACx4AIAEgAkEAIAAoAhQgASgCACgCABETABogACgCFAsHACAAKAIcCwkAIAAQoAEQNAtiAQF/IABBuOsSNgIAIAAoAhAiAQRAIAEQNAsgACgCFCIBBEAgARA0CyAAKAIYIgEEQCABEDQLIAAoAhwiAQRAIAEQNAsgAEGE7BI2AgAgACwAD0EASARAIAAoAgQQNAsgAAsZAEGCPEEGQYDuEkGY7hJBywBBzABBABALCxEAIAEgAiADIAQgBSAAESAAC+ouAyp8B38BfkQAAAAAAADwPyAAKwMARPyp8dJNYlA/oiIlICWiIAArAwhE/Knx0k1iUD+iIiYgJqKgIAArAxBE/Knx0k1iUD+iIicgJ6Kgn6MhBUHIhhQrAwBEAAAAAAAAAABhBEBByIYUQq2G8diu3I2NPzcDAAtBwIYUKwMAIRRBsPsTKwMAIQ8gBSAmoiAFICWiEGwiCRBqIQcCfCAFICeiIgi9IjZCIIinQf////8HcSIAQYCAwP8DTwRAIAhEGC1EVPsh+T+iRAAAAAAAAHA4oCA2pyAAQYCAwP8Da3JFDQEaRAAAAAAAAAAAIAggCKGjDAELAkAgAEH////+A00EQCAAQYCAQGpBgICA8gNJDQEgCCAIIAiiEK0BoiAIoAwCC0QAAAAAAADwPyAImaFEAAAAAAAA4D+iIg2fIQYgDRCtASEFAnwgAEGz5rz/A08EQEQYLURU+yH5PyAGIAWiIAagIgUgBaBEB1wUMyamkbygoQwBC0QYLURU+yHpPyAGvUKAgICAcIO/IgggCKChIAYgBqAgBaJEB1wUMyamkTwgDSAIIAiioSAGIAigoyIFIAWgoaGhRBgtRFT7Iek/oAsiBZogBSA2QgBTGyEICyAICyEFQaiHFCAHOQMAQbCHFCAJEGs5AwBBoIcUIAUQajkDAEG4hxQgBRBrmjkDAAJAAkACQAJAIAMOAgMAAQtBCBBUIjBCADcDAAwBC0QAAAAAAAAAACEGAkACQAJAAkACQCADt0QAAAAAAADwv6AiCUQAAAAAAAAAAGRFDQBEGC1EVPshCUAgCaMhBUEAIQADQCAFIAaiRAAAAAAAAAAAoCEHAkAgACAvSQRAIAAgBzkDACAAQQhqIQAMAQsgACAxa0EDdSI1QQFqIjRBgICAgAJPDQNB/////wEgLyAxayIyQQJ1IjAgNCAwIDRLGyAyQfj///8HTxsiLwR/IC9BgICAgAJPDQYgL0EDdBBUBUEACyI0IDVBA3RqIjIgBzkDACAyITAgACAxRwRAA0AgMEEIayIwIABBCGsiACsDADkDACAAIDFHDQALCyAvQQN0IDRqIS8gMkEIaiEAIDEEQCAxEDQLIDAhMQsgCSAzQQFqIjO3IgZkDQALIAAgL0YNACAAQpjakKK1v8iEwAA3AwAMBAsgLyAxayIzQQN1IjBBAWoiMkGAgICAAkkNAQsQVwALQf////8BIDNBAnUiACAyIAAgMksbIDNB+P///wdPGyIABH8gAEGAgICAAk8NASAAQQN0EFQFQQALIDBBA3RqIjBCmNqQorW/yITAADcDACAvIDFHBEADQCAwQQhrIjAgL0EIayIvKwMAOQMAIC8gMUcNAAsLIDFFDQEgMRA0DAELEKQBAAsgA0EATA0BCyACRBgtRFT7IQlAokQAAAAAAIBmQKMhKEQAAAAAAADwPyAUIBSiIA8gD6KjoZ8iBSAFmqIhLiABQQFHITNBACEvA0BBuIcUKwMAIQ1BsIcUKwMAIQ8gMCAvQQN0aisDACIFEGohBkGohxQrAwAhCCAPIAUQayIJoiAGIAggDaKioCAIQaCHFCsDACIHokQAAAAAAAAAAKIgCCAJIA2iIgWiIAYgD6KhRAAAAAAAAAAAoqCgIh4gJaIgBiAPIA2ioiAJIAiioSAHIA+iRAAAAAAAAAAAoiAGIAiiIA8gBaKgRAAAAAAAAAAAoqCgIh8gJqKgIAYgB6IgCSAHokQAAAAAAAAAAKIgDUQAAAAAAAAAAKKhoCIdICeioCIGIB1BwIYUKwMAIg0gDaJBsPsTKwMAIgUgBaIiCaOioiAdIC6iIB2iIgdEAAAAAAAA8D+gIgijISsgHyAGoiAIoyEsIB4gBqIgCKMhLSAFRAAAAAAAAPA/IAYgBqIiBSAJIAiio6GfoiESIA0gB0QAAAAAAADwPyAFIAmjoaCfoiAIoyEcAnwCQCAeRAAAAAAAAAAAYSAfRAAAAAAAAAAAYXEiAEUNACAdRAAAAAAAAPA/Yg0AQciHFEIANwMAQcCHFEKAgICAgICA+D83AwBB0IcUQgA3AwBEAAAAAAAA8D8hIkQAAAAAAAAAACEjRAAAAAAAAAAAISREAAAAAAAA8D8hIEQAAAAAAAAAACEhRAAAAAAAAAAADAELIABFIB1EAAAAAAAA8L9ickUEQEHIhxRCADcDAEHAhxRCgICAgICAgPg/NwMAQdCHFEIANwMARAAAAAAAAPC/ISBEAAAAAAAA8D8hIkQAAAAAAAAAACEjRAAAAAAAAAAAISREAAAAAAAAAAAhIUQAAAAAAAAAAAwBC0HQhxREAAAAAAAA8D8gHiAeoiAfIB+ioCIFn6MiB0QAAAAAAAAAAKIiIzkDAEHIhxQgByAemqIiJDkDAEHAhxQgHyAHoiIiOQMAIB0gH6IgB6IhICAFIAeaoiEhIB0gHqIgB6ILISlB6IcUICE5AwBB4IcUICA5AwBB2IcUICk5AwAgHSAnICuhIgmiIB4gJSAtoSIHoiAmICyhIgUgH6KgoCEaAkAgEiASICMgCaIgIiAHoiAFICSioKAiCiAKoCAhIAmiICkgB6IgBSAgoqCgIguiIBIgEqIiDCAKIAqiIhShIgWjIgmaIAkgCaIgHCAcoiIWIAsgC6IiD6EgBaNEAAAAAAAAEMCioJ8iBaEiByAFIAmhIgUgCiALokQAAAAAAAAAAGYiABtEAAAAAAAA4D+iIg0gCyANIAqioSIJmqKioiAWIA0gDCANoqKgoyIGIAUgByAAG0QAAAAAAADgP6IiByASIBIgByALIAcgCqKhIgWaoqKiIBYgByAMIAeioqCjIgeiIAWgIgWiIA0gBqIgCaAiDSAHoqFEAAAAAAAAAABjRQRAIAYhCSANIQggByEGIAUhDQwBCyAHIQkgBSEICyAaIBqiIhogCiAKIAahIgaiIAsgCyANoSIHoqCgIBQgD6AgGqCfIgUgGiAGIAaiIAcgB6KgoJ+ioxClASENIBogCiAKIAmhIhCiIAsgCyAIoSIHoqCgIAUgGiAQIBCiIAcgB6KgoJ+ioxClASEGIAsgChBsIRMCQCAzRQRAIAZEUrqOziFIvb6gICggBiAoYxshGiANRFK6js4hSL2+oCAoIA0gKGMbIRQCQCATRAAAAAAAAAAAZkUNACATRBgtRFT7Ifk/ZUUNACALIBMgFKEQpgEiDiAKoqEiCSASIA4gDqAgEqKioiAOIAyiIA6iIBagIgWjIg8gD6IgEiASmqIgHKIgHKIiByAJIAkgDKKioCAFo0QAAAAAAAAQwKKgIQggCyATIBqgIg0QpgEiESAKoqEiCSASIBEgEaAgEqKioiARIAyiIBGiIBagIgWjIgYgBqIgByAJIAkgDKKioCAFo0QAAAAAAAAQwKKgIQkgDpohByARmiEFIA1EGC1EVPsh+T9lBEAgCyAOIAifIA+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGSALIBEgCZ8gBqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyANRBgtRFT7Ifk/ZEUNACALIBEgBpogCZ+hRAAAAAAAAOA/oiIYoiAKIAWioKAhFSALIA4gCJ8gD6FEAAAAAAAA4D+iIheiIAogB6KgoCEZCwJAIBNEGC1EVPsh+T9kRQ0AIBNEGC1EVPshCUBlRQ0AIAsgEyAUoSIIEKYBIg4gCqKhIgkgEiAOIA6gIBKioqIgDiAMoiAOoiAWoCIFoyIPIA+iIBIgEpqiIByiIByiIgcgCSAJIAyioqAgBaNEAAAAAAAAEMCioCENIAsgGiAToBCmASIRIAqioSIJIBIgESARoCASoqKiIBEgDKIgEaIgFqAiBaMiBiAGoiAHIAkgCSAMoqKgIAWjRAAAAAAAABDAoqAhCSAOmiEHIBGaIQUgCEQYLURU+yH5P2UEQCALIA4gDZ8gD6FEAAAAAAAA4D+iIheiIAogB6KgoCEZIAsgESAGmiAJn6FEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyAIRBgtRFT7Ifk/ZEUNACALIBEgBpogCZ+hRAAAAAAAAOA/oiIYoiAKIAWioKAhFSALIA4gD5ogDZ+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGQsCQCATRBgtRFT7IQnAZkUNACATRBgtRFT7Ifm/ZUUNACALIBMgFKEQpgEiDiAKoqEiCSASIA4gDqAgEqKioiAOIAyiIA6iIBagIgWjIg8gD6IgEiASmqIgHKIgHKIiByAJIAkgDKKioCAFo0QAAAAAAAAQwKKgIQggCyAaIBOgIg0QpgEiESAKoqEiCSASIBEgEaAgEqKioiARIAyiIBGiIBagIgWjIgYgBqIgByAJIAkgDKKioCAFo0QAAAAAAAAQwKKgIQkgDpohByARmiEFIA1EGC1EVPsh+b9lBEAgCyAOIA+aIAifoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkgCyARIAaaIAmfoUQAAAAAAADgP6IiGKIgCiAFoqCgIRULIA1EGC1EVPsh+b9kRQ0AIAsgESAJnyAGoUQAAAAAAADgP6IiGKIgCiAFoqCgIRUgCyAOIA+aIAifoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkLIBNEGC1EVPsh+b9kRQ0BIBNEAAAAAAAAAABjRQ0BIAsgEyAUoSIIEKYBIhEgCqKhIgkgEiARIBGgIBKioqIgESAMoiARoiAWoCIFoyIPIA+iIBIgEpqiIByiIByiIgcgCSAJIAyioqAgBaNEAAAAAAAAEMCioCENIAsgGiAToBCmASIUIAqioSIJIBIgFCAUoCASoqKiIBQgDKIgFKIgFqAiBaMiBiAGoiAHIAkgCSAMoqKgIAWjRAAAAAAAABDAoqAhCSARmiEHIBSaIQUgCEQYLURU+yH5v2UEQCALIBEgD5ogDZ+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGSALIBQgCZ8gBqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyAIRBgtRFT7Ifm/ZEUNASALIBQgCZ8gBqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVIAsgESANnyAPoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkMAQtB8IYUIAZE9WG3A3GYXL+gIgk5AwBB6IYUIA1E9WG3A3GYXL+gIg05AwBByIYUKwMAIhFEAAAAAAAA8D9jRQ0AIBNEAAAAAAAAAABjIBNEGC1EVPsh+b9kcSExIBNEGC1EVPshCcBmRSATRBgtRFT7Ifm/ZUVyITIgE0QYLURU+yH5P2RFIBNEGC1EVPshCUBlRXIhASATRAAAAAAAAAAAZkUgE0QYLURU+yH5P2VFciEAIByaIRogDJohKgNAAkAgAA0AIAsgEyANoRCmASIGIAqioSIIIAwgBiAGoKKiIAwgBqIgBqIgFqAiBaMiGyAboiAqIBaiIgcgCCAMIAiioqAgBaNEAAAAAAAAEMCioCEUIAsgEyAJoCIPEKYBIhAgCqKhIgggDCAQIBCgoqIgDCAQoiAQoiAWoCIFoyIOIA6iIAcgCCAMIAiioqAgBaNEAAAAAAAAEMCioCEIIAaaIQcgEJohBSAPRBgtRFT7Ifk/ZQRAIAsgBiAUnyAboUQAAAAAAADgP6IiF6IgCiAHoqCgIRkgCyAQIAifIA6hRAAAAAAAAOA/oiIYoiAKIAWioKAhFQsgD0QYLURU+yH5P2RFDQAgCyAQIA6aIAifoUQAAAAAAADgP6IiGKIgCiAFoqCgIRUgCyAGIBSfIBuhRAAAAAAAAOA/oiIXoiAKIAeioKAhGQsCQCABDQAgCyATIA2hIhQQpgEiBiAKoqEiCCAMIAYgBqCioiAMIAaiIAaiIBagIgWjIhsgG6IgKiAWoiIHIAggDCAIoqKgIAWjRAAAAAAAABDAoqAhDyALIBMgCaAQpgEiECAKoqEiCCAMIBAgEKCioiAMIBCiIBCiIBagIgWjIg4gDqIgByAIIAwgCKKioCAFo0QAAAAAAAAQwKKgIQggBpohByAQmiEFIBREGC1EVPsh+T9lBEAgCyAGIA+fIBuhRAAAAAAAAOA/oiIXoiAKIAeioKAhGSALIBAgDpogCJ+hRAAAAAAAAOA/oiIYoiAKIAWioKAhFQsgFEQYLURU+yH5P2RFDQAgCyAQIA6aIAifoUQAAAAAAADgP6IiGKIgCiAFoqCgIRUgCyAGIBuaIA+foUQAAAAAAADgP6IiF6IgCiAHoqCgIRkLAkAgMg0AIAsgEyANoRCmASIGIAqioSIIIAwgBiAGoKKiIAwgBqIgBqIgFqAiBaMiGyAboiAqIBaiIgcgCCAMIAiioqAgBaNEAAAAAAAAEMCioCEUIAsgEyAJoCIPEKYBIhAgCqKhIgggDCAQIBCgoqIgDCAQoiAQoiAWoCIFoyIOIA6iIAcgCCAMIAiioqAgBaNEAAAAAAAAEMCioCEIIAaaIQcgEJohBSAPRBgtRFT7Ifm/ZQRAIAsgBiAbmiAUn6FEAAAAAAAA4D+iIheiIAogB6KgoCEZIAsgECAOmiAIn6FEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyAPRBgtRFT7Ifm/ZEUNACALIBAgCJ8gDqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVIAsgBiAbmiAUn6FEAAAAAAAA4D+iIheiIAogB6KgoCEZCwJAIDFFDQAgCyATIA2hIhQQpgEiBiAKoqEiCCAMIAYgBqCioiAMIAaiIAaiIBagIgWjIhsgG6IgKiAWoiIHIAggDCAIoqKgIAWjRAAAAAAAABDAoqAhDyALIBMgCaAQpgEiECAKoqEiCCAMIBAgEKCioiAMIBCiIBCiIBagIgWjIg4gDqIgByAIIAwgCKKioCAFo0QAAAAAAAAQwKKgIQggBpohByAQmiEFIBREGC1EVPsh+b9lBEAgCyAGIBuaIA+foUQAAAAAAADgP6IiF6IgCiAHoqCgIRkgCyAQIAifIA6hRAAAAAAAAOA/oiIYoiAKIAWioKAhFQsgFEQYLURU+yH5v2RFDQAgCyAQIAifIA6hRAAAAAAAAOA/oiIYoiAKIAWioKAhFSALIAYgD58gG6FEAAAAAAAA4D+iIheiIAogB6KgoCEZCyAGIBcgGiAcIBlEAAAAAAAAAABmG6IgDEQAAAAAAADwPyAXIBKjIgUgBaKhn6KjIgWhIAUgBqJEAAAAAAAA8D+goxCnASEHIBggGiAcIBVEAAAAAAAAAABmG6IgDEQAAAAAAADwPyAYIBKjIgUgBaKhn6KjIgUgEKEgBSAQokQAAAAAAADwP6CjEKcBRPjBYxrcpUxAoiEIIAIgB0T4wWMa3KVMQKIiBWQEQEHohhQgDUSamZmZmZm5v6AiDTkDAAsgAiAIZARAQfCGFCAJRJqZmZmZmbm/oCIJOQMACyACIAWhIBFkDQAgAiAIoSARZA0ACwtBgIcUIB1EAAAAAAAAAACiIgkgIyAXoiAZICGioKAgK6A5AwBB+IYUIB9EAAAAAAAAAACiIgcgJCAXoiAZICCioKAgLKA5AwBBiIcUIB5EAAAAAAAAAACiIgUgIiAYoiApIBWioKAgLaA5AwBBkIcUICwgByAkIBiiICAgFaKgoKA5AwBBmIcUICsgCSAjIBiiICEgFaKgoKA5AwAgBCAvQRhsaiIAIAUgIiAXoiApIBmioKAgLaBEAAAAAABAj0CiOQMAIABB+IYUKwMARAAAAAAAQI9AojkDCCAAQYCHFCsDAEQAAAAAAECPQKI5AxAgBCADIC9qQRhsaiIAQYiHFCsDAEQAAAAAAECPQKI5AwAgAEGQhxQrAwBEAAAAAABAj0CiOQMIIABBmIcUKwMARAAAAAAAQI9AojkDECAvQQFqIi8gA0cNAAsLQdCGFEHQhhQrAwBEAAAAAACAZkCiRBgtRFT7IQlAozkDAEHYhhRB2IYUKwMARAAAAAAAgGZAokQYLURU+yEJQKM5AwAgMARAIDAQNAsLLwEBf0EEEFkiAEGc+xM2AgAgAEHQ+BM2AgAgAEHk+BM2AgAgAEG0+RNBzQAQAQALrgIDAXwBfgF/IAC9IgJCIIinQf////8HcSIDQYCAwP8DTwRAIAKnIANBgIDA/wNrckUEQEQAAAAAAAAAAEQYLURU+yEJQCACQgBZGw8LRAAAAAAAAAAAIAAgAKGjDwsCfCADQf////4DTQRARBgtRFT7Ifk/IANBgYCA4wNJDQEaRAdcFDMmppE8IAAgACAAohCtAaKhIAChRBgtRFT7Ifk/oA8LIAJCAFMEQEQYLURU+yH5PyAARAAAAAAAAPA/oEQAAAAAAADgP6IiAJ8iASABIAAQrQGiRAdcFDMmppG8oKChIgAgAKAPC0QAAAAAAADwPyAAoUQAAAAAAADgP6IiAJ8iASAAEK0BoiAAIAG9QoCAgIBwg78iACAAoqEgASAAoKOgIACgIgAgAKALC4QBAQJ/IwBBEGsiASQAAkAgAL1CIIinQf////8HcSICQfvDpP8DTQRAIAJBgICA8gNJDQEgAEQAAAAAAAAAAEEAELgBIQAMAQsgAkGAgMD/B08EQCAAIAChIQAMAQsgACABELkBIQIgASsDACABKwMIIAJBAXEQuAEhAAsgAUEQaiQAIAAL/gMDA3wCfwF+IAC9IgZCIIinQf////8HcSIEQYCAwKAETwRAIABEGC1EVPsh+T8gAKYgAL1C////////////AINCgICAgICAgPj/AFYbDwsCQAJ/IARB///v/gNNBEBBfyAEQYCAgPIDTw0BGgwCCyAAmSEAIARB///L/wNNBEAgBEH//5f/A00EQCAAIACgRAAAAAAAAPC/oCAARAAAAAAAAABAoKMhAEEADAILIABEAAAAAAAA8L+gIABEAAAAAAAA8D+goyEAQQEMAQsgBEH//42ABE0EQCAARAAAAAAAAPi/oCAARAAAAAAAAPg/okQAAAAAAADwP6CjIQBBAgwBC0QAAAAAAADwvyAAoyEAQQMLIQUgACAAoiICIAKiIgEgASABIAEgAUQvbGosRLSiv6JEmv3eUi3erb+gokRtmnSv8rCzv6CiRHEWI/7Gcby/oKJExOuYmZmZyb+goiEDIAIgASABIAEgASABRBHaIuM6rZA/okTrDXYkS3upP6CiRFE90KBmDbE/oKJEbiBMxc1Ftz+gokT/gwCSJEnCP6CiRA1VVVVVVdU/oKIhASAEQf//7/4DTQRAIAAgACADIAGgoqEPCyAFQQN0IgRBwPUSaisDACAAIAMgAaCiIARB4PUSaisDAKEgAKGhIgCaIAAgBkIAUxshAAsgAAsyAEGw+xMgAET8qfHSTWJQP6JBsPsTKwMAoCIAOQMAQcCGFCAARB8Me6WI5O8/ojkDAAu4AgEEfyMAQRBrIgYkAAJAAkAgAEUNACAEKAIMIQcgAiABayIJQQBKBEAgACABIAkgACgCACgCMBEEACAJRw0BCyAHIAMgAWsiAWtBACABIAdIGyIBQQBKBEAgAUHw////B08NAgJAIAFBC08EQCABQQ9yQQFqIggQVCEHIAYgCEGAgICAeHI2AgwgBiAHNgIEIAYgATYCCAwBCyAGIAE6AA8gBkEEaiEHC0EAIQggByAFIAEQKSABakEAOgAAIAAgBigCBCAGQQRqIAYsAA9BAEgbIAEgACgCACgCMBEEACEFIAYsAA9BAEgEQCAGKAIEEDQLIAEgBUcNAQsgAyACayIBQQBKBEAgACACIAEgACgCACgCMBEEACABRw0BCyAEQQA2AgwgACEICyAGQRBqJAAgCA8LEFUAC6MEAEHQ9RNB98AAEA1B6PUTQbk+QQFBAUEAEA5B9PUTQYI9QQFBgH9B/wAQEkGM9hNB+zxBAUGAf0H/ABASQYD2E0H5PEEBQQBB/wEQEkGY9hNBvztBAkGAgH5B//8BEBJBpPYTQbY7QQJBAEH//wMQEkGw9hNB3jtBBEGAgICAeEH/////BxASQbz2E0HVO0EEQQBBfxASQcT2E0GKP0EEQYCAgIB4Qf////8HEBJB5PYTQYE/QQRBAEF/EBJB8PYTQfE7QoCAgICAgICAgH9C////////////ABDmBEH89hNB8DtCAEJ/EOYEQYj3E0HmO0EEEBNBlPcTQdLAAEEIEBNB4O4SQbU/EA9BqO8SQePJABAPQfDvEkEEQZs/EBBBvPASQQJBwT8QEEGI8RJBBEHQPxAQQaTxEkHOPhARQczxEkEAQZ7JABAUQfTxEkEAQYTKABAUQZzyEkEBQbzJABAUQcTyEkECQevFABAUQezyEkEDQYrGABAUQZTzEkEEQbLGABAUQbzzEkEFQc/GABAUQeTzEkEEQanKABAUQYz0EkEFQcfKABAUQfTxEkEAQbXHABAUQZzyEkEBQZTHABAUQcTyEkECQffHABAUQezyEkEDQdXHABAUQZTzEkEEQf3IABAUQbzzEkEFQdvIABAUQbT0EkEIQbrIABAUQdz0EkEJQZjIABAUQYT1EkEGQfXGABAUQaz1EkEHQe7KABAUCyQBAn8gACgCBCIAEC9BAWoiARAzIgIEfyACIAAgARArBUEACwskAQF/QfCHFCgCACIABEADQCAAKAIAEQkAIAAoAgQiAA0ACwsLjQEAIAAgACAAIAAgAEQJ9/0N4T0CP6JEiLIBdeDvST+gokQ7j2i1KIKkv6CiRFVEiA5Vwck/oKJEfW/rAxLW1L+gokRVVVVVVVXFP6AgAKIgACAAIAAgAESCki6xxbizP6JEWQGNG2wG5r+gokTIilmc5SoAQKCiREstihwnOgPAoKJEAAAAAAAA8D+gowvLAQEEfwJAA0AgAEUEQEEAIQFB4P0TKAIABEBB4P0TKAIAEK4BIQELQcj8EygCAEUNAiABIANyIQNByPwTKAIAIQAMAQsLIAAoAkxBAE4hAgJAAkAgACgCFCAAKAIcRg0AIABBAEEAIAAoAiQRBAAaIAAoAhQNAEF/IQEgAg0BDAILIAAoAgQiASAAKAIIIgRHBEAgACABIARrrEEBIAAoAigRFgAaC0EAIQEgAEEANgIcIABCADcDECAAQgA3AgQgAkUNAQsLIAEgA3IL4wEBBH8jAEEgayIEJAAgBCABNgIQIAQgAiAAKAIwIgNBAEdrNgIUIAAoAiwhBSAEIAM2AhwgBCAFNgIYAkACQCAAIAAoAjwgBEEQakECIARBDGoQFyIDBH9BoP8TIAM2AgBBfwVBAAsEf0EgBSAEKAIMIgNBAEoNAUEgQRAgAxsLIAAoAgByNgIADAELIAQoAhQiBSADIgZPDQAgACAAKAIsIgM2AgQgACADIAYgBWtqNgIIIAAoAjAEQCAAIANBAWo2AgQgASACakEBayADLQAAOgAACyACIQYLIARBIGokACAGC84CAQd/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQYgA0EQaiEBAn8DQAJAAkACQCAAKAI8IAEgBiADQQxqEBgiBAR/QaD/EyAENgIAQX8FQQALRQRAIAUgAygCDCIHRg0BIAdBAE4NAgwDCyAFQX9HDQILIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwDCyABIAcgASgCBCIISyIJQQN0aiIEIAcgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAHayEFIAYgCWshBiAEIQEMAQsLIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgBkECRg0AGiACIAEoAgRrCyEAIANBIGokACAAC1YBAX8gACgCPCEDIwBBEGsiACQAIAMgAacgAUIgiKcgAkH/AXEgAEEIahAiIgIEf0Gg/xMgAjYCAEF/BUEACyECIAApAwghASAAQRBqJABCfyABIAIbCwkAIAAoAjwQGQs0AAJAQdiYFC0AAEEBcQ0AQdiYFC0AAEEBcQ0AQdyYFEHgmBRB5JgUEBtB2JgUQQE6AAALC5gfAg9/BX4jAEGQAWsiAyQAA0AgAyASp2pBADoAACASQgF8IhJCkAFUDQALIANBfzYCTCADIAA2AiwgA0HPADYCICADIAA2AlQgAiEOQQAhACMAQbACayIGJAAgAygCTBoCQAJAAkACQCADKAIEDQAgAxDHARogAygCBA0ADAELIAEtAAAiBUUNAgJAAkACQAJAA0ACQAJAIAVB/wFxIgJBIEYgAkEJa0EFSXIEQANAIAEiBUEBaiEBIAUtAAEiAkEgRiACQQlrQQVJcg0ACyADQgAQyQEDQAJ/IAMoAgQiASADKAJoRwRAIAMgAUEBajYCBCABLQAADAELIAMQygELIgFBIEYgAUEJa0EFSXINAAsgAygCBCEBIAMpA3BCAFkEQCADIAFBAWsiATYCBAsgASADKAIsa6wgAykDeCAUfHwhFAwBCwJ/AkACQCACQSVGBEAgAS0AASICQSpGDQEgAkElRw0CCyADQgAQyQECQCABLQAAQSVGBEADQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQygELIgUiAkEgRiACQQlrQQVJcg0ACyABQQFqIQEMAQsgAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAhBQwBCyADEMoBIQULIAEtAAAgBUcEQCADKQNwQgBZBEAgAyADKAIEQQFrNgIECyAFQQBODQ1BACEHIA8NDQwLCyADKAIEIAMoAixrrCADKQN4IBR8fCEUIAEhBQwDC0EAIQggAUECagwBCwJAIAJBMGtBCk8NACABLQACQSRHDQAjAEEQayIFIA42AgwgBSAOIAJBMGsiAkECdEEEa0EAIAJBAUsbaiICQQRqNgIIIAIoAgAhCCABQQNqDAELIA4oAgAhCCAOQQRqIQ4gAUEBagshAUEAIQIDQCABLQAAIgRBMGtBCkkEQCABQQFqIQEgAkEKbCAEakEwayECDAELC0EAIQwgBEHtAEYEQEEAIQogCEEARyEMIAEtAAEhBCABQQFqIQFBACEACyABQQFqIQVBAyEJIAwhBwJAAkACQAJAAkACQCAEQf8BcUHBAGsOOgQMBAwEBAQMDAwMAwwMDAwMDAQMDAwMBAwMBAwMDAwMBAwEBAQEBAAEBQwBDAQEBAwMBAIEDAwEDAIMCyABQQJqIAUgAS0AAUHoAEYiARshBUF+QX8gARshCQwECyABQQJqIAUgAS0AAUHsAEYiARshBUEDQQEgARshCQwDC0EBIQkMAgtBAiEJDAELQQAhCSABIQULQQEgCSAFLQAAIgFBL3FBA0YiBBshEAJAIAFBIHIgASAEGyILQdsARg0AAkAgC0HuAEcEQCALQeMARw0BQQEgAiACQQFMGyECDAILIAggECAUENABDAILIANCABDJAQNAAn8gAygCBCIBIAMoAmhHBEAgAyABQQFqNgIEIAEtAAAMAQsgAxDKAQsiAUEgRiABQQlrQQVJcg0ACyADKAIEIQEgAykDcEIAWQRAIAMgAUEBayIBNgIECyABIAMoAixrrCADKQN4IBR8fCEUCyADIAKsIhIQyQECQCADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQMAQsgAxDKAUEASA0GCyADKQNwQgBZBEAgAyADKAIEQQFrNgIEC0EQIQECQAJAAkACQAJAAkACQAJAAkACQCALQdgAaw4hBgkJAgkJCQkJAQkCBAEBAQkFCQkJCQkDBgkJAgkECQkGAAsgC0HBAGsiAUEGSw0IQQEgAXRB8QBxRQ0ICyAGQQhqIAMgEEEAEM4BIAMpA3hCACADKAIEIAMoAixrrH1SDQUMDAsgC0EQckHzAEYEQCAGQSBqQX9BgQIQKRogBkEAOgAgIAtB8wBHDQYgBkEAOgBBIAZBADoALiAGQQA2ASoMBgsgBkEgaiAFLQABIgFB3gBGIgRBgQIQKRogBkEAOgAgIAVBAmogBUEBaiAEGyEHAn8CQAJAIAVBAkEBIAQbai0AACIFQS1HBEAgBUHdAEYNASABQd4ARyEJIAcMAwsgBiABQd4ARyIJOgBODAELIAYgAUHeAEciCToAfgsgB0EBagshBQNAAkAgBS0AACIEQS1HBEAgBEUNDyAEQd0ARg0IDAELQS0hBCAFLQABIgdFDQAgB0HdAEYNACAFQQFqIQ0CQCAHIAVBAWstAAAiAU0EQCAHIQQMAQsDQCABQQFqIgEgBkEgamogCToAACABIA0tAAAiBEkNAAsLIA0hBQsgBCAGaiAJOgAhIAVBAWohBQwACwALQQghAQwCC0EKIQEMAQtBACEBC0IAIRJBACEEQQAhB0EAIQ0jAEEQayIJJAACQCABQQFGBEBBoP8TQRw2AgAMAQsDQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQygELIgJBIEYgAkEJa0EFSXINAAsCQAJAIAJBK2sOAwABAAELQX9BACACQS1GGyENIAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAAIQIMAQsgAxDKASECCwJAAkACQAJAAkAgAUEARyABQRBHcQ0AIAJBMEcNAAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQygELIgJBX3FB2ABGBEBBECEBAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxDKAQsiAkHBkBNqLQAAQRBJDQMgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgA0IAEMkBDAYLIAENAUEIIQEMAgsgAUEKIAEbIgEgAkHBkBNqLQAASw0AIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIANCABDJAUGg/xNBHDYCAAwECyABQQpHDQAgAkEwayIEQQlNBEBBACEBA0AgAUEKbCAEaiIBQZmz5swBSQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQygELIgJBMGsiBEEJTXENAAsgAa0hEgsCQCAEQQlLDQAgEkIKfiETIAStIRUDQCATIBV8IRICfyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AAAwBCyADEMoBCyICQTBrIgRBCUsNASASQpqz5syZs+bMGVoNASASQgp+IhMgBK0iFUJ/hVgNAAtBCiEBDAILQQohASAEQQlNDQEMAgsgASABQQFrcQRAIAJBwZATai0AACIHIAFJBEADQCAHIAEgBGxqIgRBx+PxOEkCfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADEMoBCyICQcGQE2otAAAiByABSXENAAsgBK0hEgsgASAHTQ0BIAGtIRMDQCASIBN+IhUgB61C/wGDIhZCf4VWDQIgFSAWfCESIAECfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADEMoBCyICQcGQE2otAAAiB00NAiAJIBNCACASQgAQPSAJKQMIUA0ACwwBCyABQRdsQQV2QQdxQcGSE2osAAAhESACQcGQE2otAAAiBCABSQRAA0AgBCAHIBF0ciIHQYCAgMAASQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQygELIgJBwZATai0AACIEIAFJcQ0ACyAHrSESCyABIARNDQBCfyARrSITiCIVIBJUDQADQCAErUL/AYMgEiAThoQhEiABAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxDKAQsiAkHBkBNqLQAAIgRNDQEgEiAVWA0ACwsgASACQcGQE2otAABNDQADQCABAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxDKAQtBwZATai0AAEsNAAtBoP8TQcQANgIAQn8hEkEAIQ0LIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIBIgDawiE4UgE30hEgsgCUEQaiQAIAMpA3hCACADKAIEIAMoAixrrH1RDQcCQCALQfAARw0AIAhFDQAgCCASPgIADAMLIAggECASENABDAILIAhFDQEgBikDECESIAYpAwghEwJAAkACQCAQDgMAAQIECyAIIBMgEhBROAIADAMLIAggEyASEE05AwAMAgsgCCATNwMAIAggEjcDCAwBC0EfIAJBAWogC0HjAEciDRshAgJAIBBBAUYEQCAIIQQgDARAIAJBAnQQMyIERQ0HCyAGQgA3AqgCQQAhAQNAIAQhAAJAA0ACfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEMoBCyIEIAZqLQAhRQ0BIAYgBDoAGyAGQRxqIAZBG2pBASAGQagCahDLASIEQX5GDQBBACEKIARBf0YNCyAABEAgACABQQJ0aiAGKAIcNgIAIAFBAWohAQsgDEUNACABIAJHDQALQQEhByAAIAIiAUEBdEEBciICQQJ0EDUiBA0BDAsLC0EAIQogACECIAZBqAJqIgQEfyAEKAIARQVBAQtFDQgMAQsgDARAQQAhASACEDMiBEUNBgNAIAQhAANAAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxDKAQsiBCAGai0AIUUEQEEAIQIgACEKDAQLIAAgAWogBDoAACABQQFqIgEgAkcNAAtBASEHIAAgAiIBQQF0QQFyIgIQNSIEDQALIAAhCkEAIQAMCQtBACEBIAgEQANAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxDKAQsiACAGai0AIQRAIAEgCGogADoAACABQQFqIQEMAQVBACECIAgiACEKDAMLAAsACwNAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxDKAQsgBmotACENAAtBACEAQQAhCkEAIQILIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAMpA3ggBCADKAIsa6x8IhNQDQIgDSASIBNRckUNAiAMBEAgCCAANgIACwJAIAtB4wBGDQAgAgRAIAIgAUECdGpBADYCAAsgCkUEQEEAIQoMAQsgASAKakEAOgAACyACIQALIAMoAgQgAygCLGusIAMpA3ggFHx8IRQgDyAIQQBHaiEPCyAFQQFqIQEgBS0AASIFDQEMCAsLIAIhAAwBC0EBIQdBACEKQQAhAAwCCyAMIQcMAwsgDCEHCyAPDQELQX8hDwsgB0UNACAKEDQgABA0CyAGQbACaiQAIANBkAFqJAAgDwsEAEEACwQAQgALTQECfyABLQAAIQICQCAALQAAIgNFDQAgAiADRw0AA0AgAS0AASECIAAtAAEiA0UNASABQQFqIQEgAEEBaiEAIAIgA0YNAAsLIAMgAmsLqAMDAnwDfwF+IAC9IghCIIinIgVB+P///wdxQaiolv8DSSIGRQRARBgtRFT7Iek/IAAgAJogCEIAWSIHG6FEB1wUMyamgTwgASABmiAHG6GgIQAgBUEfdiEFRAAAAAAAAAAAIQELIAAgACAAIACiIgSiIgNEY1VVVVVV1T+iIAQgAyAEIASiIgMgAyADIAMgA0RzU2Dby3XzvqJEppI3oIh+FD+gokQBZfLy2ERDP6CiRCgDVskibW0/oKJEN9YGhPRklj+gokR6/hARERHBP6AgBCADIAMgAyADIANE1Hq/dHAq+z6iROmn8DIPuBI/oKJEaBCNGvcmMD+gokQVg+D+yNtXP6CiRJOEbunjJoI/oKJE/kGzG7qhqz+goqCiIAGgoiABoKAiA6AhASAGRQRAQQEgAkEBdGu3IgQgACADIAEgAaIgASAEoKOhoCIAIACgoSIAmiAAIAUbDwsgAgR8RAAAAAAAAPC/IAGjIgQgBL1CgICAgHCDvyIEIAMgAb1CgICAgHCDvyIBIAChoaIgBCABokQAAAAAAADwP6CgoiAEoAUgAQsLuxgDFH8EfAF+IwBBMGsiCCQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgVB+tS9gARNBEAgA0H//z9xQfvDJEYNASAFQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk/oCIARDFjYhphtNA9oCIWOQMAIAEgACAWoUQxY2IaYbTQPaA5AwhBfyEDDAQLIBpCAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhY5AwAgASAAIBahRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIWOQMAIAEgACAWoUQxY2IaYbTgPaA5AwhBfiEDDAMLIAVBu4zxgARNBEAgBUG8+9eABE0EQCAFQfyyy4AERg0CIBpCAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhY5AwAgASAAIBahRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIWOQMAIAEgACAWoUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAVB+8PkgARGDQEgGkIAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiFjkDACABIAAgFqFEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhY5AwAgASAAIBahRDFjYhphtPA9oDkDCEF8IQMMAwsgBUH6w+SJBEsNAQsgACAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIhdEAABAVPsh+b+ioCIWIBdEMWNiGmG00D2iIhihIhlEGC1EVPsh6b9jIQICfyAXmUQAAAAAAADgQWMEQCAXqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgF0QAAAAAAADwv6AiF0QxY2IaYbTQPaIhGCAAIBdEAABAVPsh+b+ioCEWDAELIBlEGC1EVPsh6T9kRQ0AIANBAWohAyAXRAAAAAAAAPA/oCIXRDFjYhphtNA9oiEYIAAgF0QAAEBU+yH5v6KgIRYLIAEgFiAYoSIAOQMAAkAgBUEUdiICIAC9QjSIp0H/D3FrQRFIDQAgASAWIBdEAABgGmG00D2iIgChIhkgF0RzcAMuihmjO6IgFiAZoSAAoaEiGKEiADkDACACIAC9QjSIp0H/D3FrQTJIBEAgGSEWDAELIAEgGSAXRAAAAC6KGaM7oiIAoSIWIBdEwUkgJZqDezmiIBkgFqEgAKGhIhihIgA5AwALIAEgFiAAoSAYoTkDCAwBCyAFQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgGkL/////////B4NCgICAgICAgLDBAIS/IQBBACEDQQEhAgNAIAhBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3IhY5AwAgACAWoUQAAAAAAABwQaIhAEEBIQMgAiEEQQAhAiAEDQALIAggADkDIEECIQMDQCADIgJBAWshAyAIQRBqIAJBA3RqKwMARAAAAAAAAAAAYQ0ACwJ/IAhBEGohD0EAIQQjAEGwBGsiBiQAIAVBFHZBlghrIgNBA2tBGG0iBUEAIAVBAEobIhBBaGwgA2ohBUHE9hIoAgAiCSACQQFqIgpBAWsiB2pBAE4EQCAJIApqIQMgECAHayECA0AgBkHAAmogBEEDdGogAkEASAR8RAAAAAAAAAAABSACQQJ0QdD2EmooAgC3CzkDACACQQFqIQIgBEEBaiIEIANHDQALCyAFQRhrIQxBACEDIAlBACAJQQBKGyEEIApBAEwhCwNAAkAgCwRARAAAAAAAAAAAIQAMAQsgAyAHaiEOQQAhAkQAAAAAAAAAACEAA0AgDyACQQN0aisDACAGQcACaiAOIAJrQQN0aisDAKIgAKAhACACQQFqIgIgCkcNAAsLIAYgA0EDdGogADkDACADIARGIQIgA0EBaiEDIAJFDQALQS8gBWshE0EwIAVrIQ4gBUEZSCERIAVBGWshFCAJIQMDQCAGIANBA3RqKwMAIQBBACECIAMhBCADQQBMIg1FBEADQCAGQeADaiACQQJ0agJ/An8gAEQAAAAAAABwPqIiFplEAAAAAAAA4EFjBEAgFqoMAQtBgICAgHgLtyIWRAAAAAAAAHDBoiAAoCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAs2AgAgBiAEQQFrIgRBA3RqKwMAIBagIQAgAkEBaiICIANHDQALCwJ/IAAgDBAwIgAgAEQAAAAAAADAP6KcRAAAAAAAACDAoqAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLIQcgACAHt6EhAAJAAkACQAJ/IBFFBEAgA0ECdCAGaiICIAIoAtwDIgIgAiAOdSICIA50ayIENgLcAyACIAdqIQcgBCATdQwBCyAMDQEgA0ECdCAGaigC3ANBF3ULIgtBAEwNAgwBC0ECIQsgAEQAAAAAAADgP2YNAEEAIQsMAQtBACECQQAhBCANRQRAA0AgBkHgA2ogAkECdGoiFSgCACENQf///wchEgJ/AkAgBA0AQYCAgAghEiANDQBBAAwBCyAVIBIgDWs2AgBBAQshBCACQQFqIgIgA0cNAAsLAkAgEQ0AQf///wMhAgJAAkAgFA4CAQACC0H///8BIQILIANBAnQgBmoiDSANKALcAyACcTYC3AMLIAdBAWohByALQQJHDQBEAAAAAAAA8D8gAKEhAEECIQsgBEUNACAARAAAAAAAAPA/IAwQMKEhAAsCQAJAIABEAAAAAAAAAABhBEBBACEEIAMhAiADIAlMDQIDQCAGQeADaiACQQFrIgJBAnRqKAIAIARyIQQgAiAJSg0ACyAERQ0CIAwhBQNAIAVBGGshBSAGQeADaiADQQFrIgNBAnRqKAIARQ0ACwwBCwJAIABBGCAFaxAwIgBEAAAAAAAAcEFmBEAgBkHgA2ogA0ECdGoCfwJ/IABEAAAAAAAAcD6iIhaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4CyICt0QAAAAAAABwwaIgAKAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLNgIAIANBAWohAwwBCwJ/IACZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyECIAwhBQsgBkHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gBRAwIQAgA0EATgRAIAMhAgNAIAYgAiIEQQN0aiAAIAZB4ANqIAJBAnRqKAIAt6I5AwAgAkEBayECIABEAAAAAAAAcD6iIQAgBA0ACyADIQQDQEQAAAAAAAAAACEAQQAhAiAJIAMgBGsiBSAFIAlKGyIMQQBOBEADQCACQQN0QaCME2orAwAgBiACIARqQQN0aisDAKIgAKAhACACIAxHIQogAkEBaiECIAoNAAsLIAZBoAFqIAVBA3RqIAA5AwAgBEEASiECIARBAWshBCACDQALC0QAAAAAAAAAACEAIANBAE4EQCADIQIDQCACIgRBAWshAiAAIAZBoAFqIARBA3RqKwMAoCEAIAQNAAsLIAggAJogACALGzkDACAGKwOgASAAoSEAQQEhAiADQQBKBEADQCAAIAZBoAFqIAJBA3RqKwMAoCEAIAIgA0chBCACQQFqIQIgBA0ACwsgCCAAmiAAIAsbOQMIIAZBsARqJAAgB0EHcQwCC0EBIQIDQCACIgRBAWohAiAGQeADaiAJIARrQQJ0aigCAEUNAAsgAyAEaiEEA0AgBkHAAmogAyAKaiIHQQN0aiADQQFqIgMgEGpBAnRB0PYSaigCALc5AwBBACECRAAAAAAAAAAAIQAgCkEASgRAA0AgDyACQQN0aisDACAGQcACaiAHIAJrQQN0aisDAKIgAKAhACACQQFqIgIgCkcNAAsLIAYgA0EDdGogADkDACADIARIDQALIAQhAwwACwALIQMgCCsDACEAIBpCAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABELoBIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLxgIBBH8jAEHQAWsiBSQAIAUgAjYCzAEgBUGgAWoiAkEAQSgQKRogBSAFKALMATYCyAECQEEAIAEgBUHIAWogBUHQAGogAiADIAQQvAFBAEgEQEF/IQQMAQsgACgCTEEATiEGIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhByAAIAU2AiwMAQsgACgCEA0BC0F/IAAQKg0BGgsgACABIAVByAFqIAVB0ABqIAVBoAFqIAMgBBC8AQshAiAHBEAgAEEAQQAgACgCJBEEABogAEEANgIwIAAgBzYCLCAAQQA2AhwgACgCFCEBIABCADcDECACQX8gARshAgsgACAAKAIAIgAgCEEgcXI2AgBBfyACIABBIHEbIQQgBkUNAAsgBUHQAWokACAEC50TAhN/AX4jAEHQAGsiCCQAIAggATYCTCAIQTdqIRggCEE4aiESAkACQAJAA0BBACEHA0AgASENIAcgEUH/////B3NKDQIgByARaiERAkACQAJAIA0iBy0AACILBEADQAJAAkAgC0H/AXEiAUUEQCAHIQEMAQsgAUElRw0BIAchCwNAIAstAAFBJUcEQCALIQEMAgsgB0EBaiEHIAstAAIhCSALQQJqIgEhCyAJQSVGDQALCyAHIA1rIgcgEUH/////B3MiGUoNCCAABEAgACANIAcQvQELIAcNBiAIIAE2AkwgAUEBaiEHQX8hEAJAIAEsAAEiCUEwa0EKTw0AIAEtAAJBJEcNACABQQNqIQcgCUEwayEQQQEhEwsgCCAHNgJMQQAhDAJAIAcsAAAiC0EgayIBQR9LBEAgByEJDAELIAchCUEBIAF0IgFBidEEcUUNAANAIAggB0EBaiIJNgJMIAEgDHIhDCAHLAABIgtBIGsiAUEgTw0BIAkhB0EBIAF0IgFBidEEcQ0ACwsCQCALQSpGBEACfwJAIAksAAEiAUEwa0EKTw0AIAktAAJBJEcNACABQTBrIQECfyAARQRAIAQgAUECdGpBCjYCAEEADAELIAMgAUEDdGooAgALIQ8gCUEDaiEBQQEMAQsgEw0GIAlBAWohASAARQRAIAggATYCTEEAIRNBACEPDAMLIAIgAigCACIHQQRqNgIAIAcoAgAhD0EACyETIAggATYCTCAPQQBODQFBACAPayEPIAxBgMAAciEMDAELIAhBzABqEL4BIg9BAEgNCSAIKAJMIQELQQAhB0F/IQoCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACIglBMGtBCk8NACABLQADQSRHDQAgCUEwayEJIAFBBGohAQJ/IABFBEAgBCAJQQJ0akEKNgIAQQAMAQsgAyAJQQN0aigCAAsMAQsgEw0GIAFBAmohAUEAIABFDQAaIAIgAigCACIJQQRqNgIAIAkoAgALIQogCCABNgJMIApBf3NBH3YMAQsgCCABQQFqNgJMIAhBzABqEL4BIQogCCgCTCEBQQELIRQDQCAHIRVBHCEOIAEiFywAACIHQfsAa0FGSQ0KIBdBAWohASAHIBVBOmxqQZ+ME2otAAAiB0EBa0EISQ0ACyAIIAE2AkwCQCAHQRtHBEAgB0UNCyAQQQBOBEAgAEUEQCAEIBBBAnRqIAc2AgAMCwsgCCADIBBBA3RqKQMANwNADAILIABFDQcgCEFAayAHIAIgBhC/AQwBCyAQQQBODQpBACEHIABFDQcLQX8hDiAALQAAQSBxDQogDEH//3txIgsgDCAMQYDAAHEbIQxBACEQQYo7IRYgEiEJAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgFywAACIHQV9xIAcgB0EPcUEDRhsgByAVGyIHQdgAaw4hBBQUFBQUFBQUDhQPBg4ODhQGFBQUFAIFAxQUCRQBFBQEAAsCQCAHQcEAaw4HDhQLFA4ODgALIAdB0wBGDQkMEwsgCCkDQCEaQYo7DAULQQAhBwJAAkACQAJAAkACQAJAIBVB/wFxDggAAQIDBBoFBhoLIAgoAkAgETYCAAwZCyAIKAJAIBE2AgAMGAsgCCgCQCARrDcDAAwXCyAIKAJAIBE7AQAMFgsgCCgCQCAROgAADBULIAgoAkAgETYCAAwUCyAIKAJAIBGsNwMADBMLQQggCiAKQQhNGyEKIAxBCHIhDEH4ACEHCyASIQ0gB0EgcSELIAgpA0AiGkIAUgRAA0AgDUEBayINIBqnQQ9xQbCQE2otAAAgC3I6AAAgGkIPViEOIBpCBIghGiAODQALCyAIKQNAUA0DIAxBCHFFDQMgB0EEdkGKO2ohFkECIRAMAwsgEiEHIAgpA0AiGkIAUgRAA0AgB0EBayIHIBqnQQdxQTByOgAAIBpCB1YhDSAaQgOIIRogDQ0ACwsgByENIAxBCHFFDQIgCiASIA1rIgdBAWogByAKSBshCgwCCyAIKQNAIhpCAFMEQCAIQgAgGn0iGjcDQEEBIRBBijsMAQsgDEGAEHEEQEEBIRBBizsMAQtBjDtBijsgDEEBcSIQGwshFiAaIBIQwAEhDQsgFEEAIApBAEgbDQ8gDEH//3txIAwgFBshDAJAIAgpA0AiGkIAUg0AIAoNACASIQ1BACEKDAwLIAogGlAgEiANa2oiByAHIApIGyEKDAsLIAgoAkAiB0G95hIgBxsiDSIHQQBB/////wcgCiAKQf////8HTxsiCRCHASIMIAdrIAkgDBsiByANaiEJIApBAE4EQCALIQwgByEKDAsLIAshDCAHIQogCS0AAA0ODAoLIAoEQCAIKAJADAILQQAhByAAQSAgD0EAIAwQwQEMAgsgCEEANgIMIAggCCkDQD4CCCAIIAhBCGoiBzYCQEF/IQogBwshC0EAIQcCQANAIAsoAgAiCUUNAQJAIAhBBGogCRDCASIJQQBIIg0NACAJIAogB2tLDQAgC0EEaiELIAcgCWoiByAKSQ0BDAILCyANDQ4LQT0hDiAHQQBIDQwgAEEgIA8gByAMEMEBIAdFBEBBACEHDAELQQAhCSAIKAJAIQsDQCALKAIAIg1FDQEgCEEEaiANEMIBIg0gCWoiCSAHSw0BIAAgCEEEaiANEL0BIAtBBGohCyAHIAlLDQALCyAAQSAgDyAHIAxBgMAAcxDBASAPIAcgByAPSBshBwwICyAUQQAgCkEASBsNCUE9IQ4gACAIKwNAIA8gCiAMIAcgBREiACIHQQBODQcMCgsgCCAIKQNAPAA3QQEhCiAYIQ0gCyEMDAQLIActAAEhCyAHQQFqIQcMAAsACyARIQ4gAA0HIBNFDQJBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhC/AUEBIQ4gB0EBaiIHQQpHDQEMCQsLQQEhDiAHQQpPDQcDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAcLQRwhDgwFCyAKIAkgDWsiCyAKIAtKGyIKIBBB/////wdzSg0DQT0hDiAPIAogEGoiCSAJIA9IGyIHIBlKDQQgAEEgIAcgCSAMEMEBIAAgFiAQEL0BIABBMCAHIAkgDEGAgARzEMEBIABBMCAKIAtBABDBASAAIA0gCxC9ASAAQSAgByAJIAxBgMAAcxDBAQwBCwsLQQAhDgwCC0E9IQ4LQaD/EyAONgIAQX8hDgsgCEHQAGokACAOCxcAIAAtAABBIHFFBEAgASACIAAQLBoLC10BA38gACgCACECA0AgAiwAACIDQTBrQQpJBEAgACACQQFqIgI2AgAgAUHMmbPmAE0Ef0F/IANBMGsiAyABQQpsIgFqIAMgAUH/////B3NKGwVBfwshAQwBCwsgAQvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAgALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC4UBAgN/AX4CQCAAQoCAgIAQVARAIAAhBQwBCwNAIAFBAWsiASAAQgqAIgVC9gF+IAB8p0EwcjoAACAAQv////+fAVYhAiAFIQAgAg0ACwsgBaciAgRAA0AgAUEBayIBIAJBCm4iA0H2AWwgAmpBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC3EBAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbECkaIAFFBEADQCAAIAVBgAIQvQEgA0GAAmsiA0H/AUsNAAsLIAAgBSADEL0BCyAFQYACaiQACxIAIABFBEBBAA8LIAAgARDUAQsRACAAIAEgAkHQAEHRABC7AQuzGAMSfwF8A34jAEGwBGsiDCQAIAxBADYCLAJAIAG9IhlCAFMEQEEBIRFBlDshEyABmiIBvSEZDAELIARBgBBxBEBBASERQZc7IRMMAQtBmjtBlTsgBEEBcSIRGyETIBFFIRULAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBFBA2oiAyAEQf//e3EQwQEgACATIBEQvQEgAEGQPkHvxAAgBUEgcSIFG0HfP0GcxQAgBRsgASABYhtBAxC9ASAAQSAgAiADIARBgMAAcxDBASADIAIgAiADSBshCQwBCyAMQRBqIRICQAJ/AkAgASAMQSxqELoBIgEgAaAiAUQAAAAAAAAAAGIEQCAMIAwoAiwiBkEBazYCLCAFQSByIg5B4QBHDQEMAwsgBUEgciIOQeEARg0CIAwoAiwhCkEGIAMgA0EASBsMAQsgDCAGQR1rIgo2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQsgDEEwakGgAkEAIApBAE4baiINIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAHQQRqIQcgASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgCkEATARAIAohAyAHIQYgDSEIDAELIA0hCCAKIQMDQEEdIAMgA0EdThshAwJAIAdBBGsiBiAISQ0AIAOtIRpCACEZA0AgBiAZQv////8PgyAGNQIAIBqGfCIbQoCU69wDgCIZQoDslKMMfiAbfD4CACAGQQRrIgYgCE8NAAsgGaciBkUNACAIQQRrIgggBjYCAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyAMIAwoAiwgA2siAzYCLCAGIQcgA0EASg0ACwsgA0EASARAIAtBGWpBCW5BAWohDyAOQeYARiEQA0BBCUEAIANrIgMgA0EJThshCQJAIAYgCE0EQCAIKAIAIQcMAQtBgJTr3AMgCXYhFEF/IAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCACEHIANFDQAgBiADNgIAIAZBBGohBgsgDCAMKAIsIAlqIgM2AiwgDSAIIAdFQQJ0aiIIIBAbIgcgD0ECdGogBiAGIAdrQQJ1IA9KGyEGIANBAEgNAAsLQQAhAwJAIAYgCE0NACANIAhrQQJ1QQlsIQNBCiEHIAgoAgAiCUEKSQ0AA0AgA0EBaiEDIAkgB0EKbCIHTw0ACwsgCyADQQAgDkHmAEcbayAOQecARiALQQBHcWsiByAGIA1rQQJ1QQlsQQlrSARAQQRBpAIgCkEASBsgDGogB0GAyABqIglBCW0iD0ECdGpB0B9rIQpBCiEHIA9Bd2wgCWoiCUEHTARAA0AgB0EKbCEHIAlBAWoiCUEIRw0ACwsCQCAKKAIAIhAgECAHbiIPIAdsIglGIApBBGoiFCAGRnENACAQIAlrIRACQCAPQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cNASAIIApPDQEgCkEEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAURhtEAAAAAAAA+D8gECAHQQF2IhRGGyAQIBRJGyEYAkAgFQ0AIBMtAABBLUcNACAYmiEYIAGaIQELIAogCTYCACABIBigIAFhDQAgCiAHIAlqIgM2AgAgA0GAlOvcA08EQANAIApBADYCACAIIApBBGsiCksEQCAIQQRrIghBADYCAAsgCiAKKAIAQQFqIgM2AgAgA0H/k+vcA0sNAAsLIA0gCGtBAnVBCWwhA0EKIQcgCCgCACIJQQpJDQADQCADQQFqIQMgCSAHQQpsIgdPDQALCyAKQQRqIgcgBiAGIAdLGyEGCwNAIAYiByAITSIJRQRAIAdBBGsiBigCAEUNAQsLAkAgDkHnAEcEQCAEQQhxIQoMAQsgA0F/c0F/IAtBASALGyIGIANKIANBe0pxIgobIAZqIQtBf0F+IAobIAVqIQUgBEEIcSIKDQBBdyEGAkAgCQ0AIAdBBGsoAgAiDkUNAEEKIQlBACEGIA5BCnANAANAIAYiCkEBaiEGIA4gCUEKbCIJcEUNAAsgCkF/cyEGCyAHIA1rQQJ1QQlsIQkgBUFfcUHGAEYEQEEAIQogCyAGIAlqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsMAQtBACEKIAsgAyAJaiAGakEJayIGQQAgBkEAShsiBiAGIAtKGyELC0F/IQkgC0H9////B0H+////ByAKIAtyIhAbSg0BIAsgEEEAR2pBAWohDgJAIAVBX3EiFUHGAEYEQCADIA5B/////wdzSg0DIANBACADQQBKGyEGDAELIBIgAyADQR91IgZzIAZrrSASEMABIgZrQQFMBEADQCAGQQFrIgZBMDoAACASIAZrQQJIDQALCyAGQQJrIg8gBToAACAGQQFrQS1BKyADQQBIGzoAACASIA9rIgYgDkH/////B3NKDQILIAYgDmoiAyARQf////8Hc0oNASAAQSAgAiADIBFqIgUgBBDBASAAIBMgERC9ASAAQTAgAiAFIARBgIAEcxDBAQJAAkACQCAVQcYARgRAIAxBEGoiBkEIciEDIAZBCXIhCiANIAggCCANSxsiCSEIA0AgCDUCACAKEMABIQYCQCAIIAlHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAGIApHDQAgDEEwOgAYIAMhBgsgACAGIAogBmsQvQEgCEEEaiIIIA1NDQALIBAEQCAAQbvmEkEBEL0BCyAHIAhNDQEgC0EATA0BA0AgCDUCACAKEMABIgYgDEEQaksEQANAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsLIAAgBkEJIAsgC0EJThsQvQEgC0EJayEGIAhBBGoiCCAHTw0DIAtBCUohAyAGIQsgAw0ACwwCCwJAIAtBAEgNACAHIAhBBGogByAISxshCSAMQRBqIgZBCHIhAyAGQQlyIQ0gCCEHA0AgDSAHNQIAIA0QwAEiBkYEQCAMQTA6ABggAyEGCwJAIAcgCEcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAAgBkEBEL0BIAZBAWohBiAKIAtyRQ0AIABBu+YSQQEQvQELIAAgBiANIAZrIgYgCyAGIAtIGxC9ASALIAZrIQsgB0EEaiIHIAlPDQEgC0EATg0ACwsgAEEwIAtBEmpBEkEAEMEBIAAgDyASIA9rEL0BDAILIAshBgsgAEEwIAZBCWpBCUEAEMEBCyAAQSAgAiAFIARBgMAAcxDBASAFIAIgAiAFSBshCQwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRgDQCAYRAAAAAAAADBAoiEYIAZBAWsiBg0ACyAILQAAQS1GBEAgGCABmiAYoaCaIQEMAQsgASAYoCAYoSEBCyARQQJyIQsgBUEgcSENIBIgDCgCLCIHIAdBH3UiBnMgBmutIBIQwAEiBkYEQCAMQTA6AA8gDEEPaiEGCyAGQQJrIgogBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQYgDEEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdBsJATai0AACANcjoAACABIAe3oUQAAAAAAAAwQKIhAQJAIAVBAWoiByAMQRBqa0EBRw0AAkAgBg0AIANBAEoNACABRAAAAAAAAAAAYQ0BCyAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0AC0F/IQlB/f///wcgCyASIAprIgZqIg1rIANIDQAgAEEgIAIgDSADQQJqIAcgDEEQaiIHayIFIAVBAmsgA0gbIAUgAxsiCWoiAyAEEMEBIAAgCCALEL0BIABBMCACIAMgBEGAgARzEMEBIAAgByAFEL0BIABBMCAJIAVrQQBBABDBASAAIAogBhC9ASAAQSAgAiADIARBgMAAcxDBASADIAIgAiADSBshCQsgDEGwBGokACAJCygAIAEgASgCAEEHakF4cSIBQRBqNgIAIAAgASkDACABKQMIEE05AwALEAAgACABIAJBAEEAELsBGgt8AQJ/IAAgACgCSCIBQQFrIAFyNgJIIAAoAhQgACgCHEcEQCAAQQBBACAAKAIkEQQAGgsgAEEANgIcIABCADcDECAAKAIAIgFBBHEEQCAAIAFBIHI2AgBBfw8LIAAgACgCLCAAKAIwaiICNgIIIAAgAjYCBCABQRt0QR91C0EBAn8jAEEQayIBJABBfyECAkAgABDHAQ0AIAAgAUEPakEBIAAoAiARBABBAUcNACABLQAPIQILIAFBEGokACACC0cBAn8gACABNwNwIAAgACgCLCAAKAIEIgNrrDcDeCAAKAIIIQICQCABUA0AIAIgA2usIAFXDQAgAyABp2ohAgsgACACNgJoC9QBAgN/An4CQCAAKQNwIgRCAFIgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIAAQyAEiA0EATg0BIAAoAiwhAiAAKAIEIQELIABCfzcDcCAAIAE2AmggACAFIAIgAWusfDcDeEF/DwsgBUIBfCEFIAAoAgQhASAAKAIIIQICQCAAKQNwIgRQDQAgBCAFfSIEIAIgAWusWQ0AIAEgBKdqIQILIAAgAjYCaCAAIAUgACgCLCIAIAFrrHw3A3ggACABTwRAIAFBAWsgAzoAAAsgAwu/AgEEfyADQfCZFCADGyIFKAIAIQMCQAJ/AkAgAUUEQCADDQFBAA8LQX4gAkUNARoCQCADBEAgAiEEDAELIAEtAAAiA8AiBEEATgRAIAAEQCAAIAM2AgALIARBAEcPC0HMmRQoAgAoAgBFBEBBASAARQ0DGiAAIARB/78DcTYCAEEBDwsgA0HCAWsiA0EySw0BIANBAnRBwLcTaigCACEDIAJBAWsiBEUNAyABQQFqIQELIAEtAAAiBkEDdiIHQRBrIANBGnUgB2pyQQdLDQADQCAEQQFrIQQgBkGAAWsgA0EGdHIiA0EATgRAIAVBADYCACAABEAgACADNgIACyACIARrDwsgBEUNAyABQQFqIgEtAAAiBkHAAXFBgAFGDQALCyAFQQA2AgBBoP8TQRk2AgBBfwsPCyAFIAM2AgBBfgs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQPCAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABA8Qf3/AiADIANB/f8CThtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORA8IAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORA8QeiBfSADIANB6IF9TBtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhA8IAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAvUMgMPfwd+AXwjAEEwayIMJAACQCACQQJNBEAgAkECdCICQYyTE2ooAgAhDyACQYCTE2ooAgAhDgNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARDKAQsiAkEgRiACQQlrQQVJcg0AC0EBIQoCQAJAIAJBK2sOAwABAAELQX9BASACQS1GGyEKIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAQsgARDKASECCwJAAkADQCAFQeA5aiwAACACQSByRgRAAkAgBUEGSw0AIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAQsgARDKASECCyAFQQFqIgVBCEcNAQwCCwsgBUEDRwRAIAVBCEYNASADRQ0CIAVBBEkNAiAFQQhGDQELIAEpA3AiE0IAWQRAIAEgASgCBEEBazYCBAsgA0UNACAFQQRJDQAgE0IAUyECA0AgAkUEQCABIAEoAgRBAWs2AgQLIAVBAWsiBUEDSw0ACwtCACETIwBBEGsiAiQAAn4gCrJDAACAf5S8IgNB/////wdxIgFBgICABGtB////9wdNBEAgAa1CGYZCgICAgICAgMA/fAwBCyADrUIZhkKAgICAgIDA//8AhCABQYCAgPwHTw0AGkIAIAFFDQAaIAIgAa1CACABZyIBQdEAahA5IAIpAwAhEyACKQMIQoCAgICAgMAAhUGJ/wAgAWutQjCGhAshFCAMIBM3AwAgDCAUIANBgICAgHhxrUIghoQ3AwggAkEQaiQAIAwpAwghEyAMKQMAIRQMAgsCQAJAAkAgBQ0AQQAhBQNAIAVBkD5qLAAAIAJBIHJHDQECQCAFQQFLDQAgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABEMoBIQILIAVBAWoiBUEDRw0ACwwBCwJAAkAgBQ4EAAEBAgELAkAgAkEwRw0AAn8gASgCBCIFIAEoAmhHBEAgASAFQQFqNgIEIAUtAAAMAQsgARDKAQtBX3FB2ABGBEAjAEGwA2siAiQAAn8gASgCBCIFIAEoAmhHBEAgASAFQQFqNgIEIAUtAAAMAQsgARDKAQshBQJAAn8DQCAFQTBHBEACQCAFQS5HDQQgASgCBCIFIAEoAmhGDQAgASAFQQFqNgIEIAUtAAAMAwsFIAEoAgQiBSABKAJoRwR/QQEhCSABIAVBAWo2AgQgBS0AAAVBASEJIAEQygELIQUMAQsLIAEQygELIQVBASEIIAVBMEcNAANAIBZCAX0hFgJ/IAEoAgQiBSABKAJoRwRAIAEgBUEBajYCBCAFLQAADAELIAEQygELIgVBMEYNAAtBASEJC0KAgICAgIDA/z8hFAJAA0ACQCAFQSByIQQCQAJAIAVBMGsiB0EKSQ0AIAVBLkcgBEHhAGtBBUtxDQQgBUEuRw0AIAgNAkEBIQggEyEWDAELIARB1wBrIAcgBUE5ShshBQJAIBNCB1cEQCAFIAZBBHRqIQYMAQsgE0IcWARAIAJBMGogBRBOIAJBIGogGCAUQgBCgICAgICAwP0/EDwgAkEQaiACKQMwIAIpAzggAikDICIYIAIpAygiFBA8IAIgAikDECACKQMYIBUgFxBHIAIpAwghFyACKQMAIRUMAQsgBUUNACALDQAgAkHQAGogGCAUQgBCgICAgICAgP8/EDwgAkFAayACKQNQIAIpA1ggFSAXEEcgAikDSCEXQQEhCyACKQNAIRULIBNCAXwhE0EBIQkLIAEoAgQiBSABKAJoRwR/IAEgBUEBajYCBCAFLQAABSABEMoBCyEFDAELC0EuIQULAn4gCUUEQAJAAkAgASkDcEIAWQRAIAEgASgCBCIGQQFrNgIEIANFDQEgASAGQQJrNgIEIAhFDQIgASAGQQNrNgIEDAILIAMNAQsgAUIAEMkBCyACQeAAaiAKt0QAAAAAAAAAAKIQTyACKQNgIRUgAikDaAwBCyATQgdXBEAgEyEUA0AgBkEEdCEGIBRCAXwiFEIIUg0ACwsCQAJAAkAgBUFfcUHQAEYEQCABIAMQzwEiFEKAgICAgICAgIB/Ug0DIAMEQCABKQNwQgBZDQIMAwtCACEVIAFCABDJAUIADAQLQgAhFCABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEUCyAGRQRAIAJB8ABqIAq3RAAAAAAAAAAAohBPIAIpA3AhFSACKQN4DAELIBYgEyAIG0IChiAUfEIgfSITQQAgD2utVQRAQaD/E0HEADYCACACQaABaiAKEE4gAkGQAWogAikDoAEgAikDqAFCf0L///////+///8AEDwgAkGAAWogAikDkAEgAikDmAFCf0L///////+///8AEDwgAikDgAEhFSACKQOIAQwBCyAPQeIBa6wgE1cEQCAGQQBOBEADQCACQaADaiAVIBdCAEKAgICAgIDA/79/EEcgFSAXQoCAgICAgID/PxA4IQEgAkGQA2ogFSAXIAIpA6ADIBUgAUEATiIBGyACKQOoAyAXIAEbEEcgE0IBfSETIAIpA5gDIRcgAikDkAMhFSAGQQF0IAFyIgZBAE4NAAsLAn4gEyAPrH1CIHwiFKciAUEAIAFBAEobIA4gFCAOrVMbIgFB8QBOBEAgAkGAA2ogChBOIAIpA4gDIRYgAikDgAMhGEIADAELIAJB4AJqRAAAAAAAAPA/QZABIAFrEDAQTyACQdACaiAKEE4gAkHwAmogAikD4AIgAikD6AIgAikD0AIiGCACKQPYAiIWEMwBIAIpA/gCIRkgAikD8AILIRQgAkHAAmogBiAGQQFxRSAVIBdCAEIAEDdBAEcgAUEgSHFxIgFqEFAgAkGwAmogGCAWIAIpA8ACIAIpA8gCEDwgAkGQAmogAikDsAIgAikDuAIgFCAZEEcgAkGgAmogGCAWQgAgFSABG0IAIBcgARsQPCACQYACaiACKQOgAiACKQOoAiACKQOQAiACKQOYAhBHIAJB8AFqIAIpA4ACIAIpA4gCIBQgGRBIIAIpA/ABIhQgAikD+AEiFkIAQgAQN0UEQEGg/xNBxAA2AgALIAJB4AFqIBQgFiATpxDNASACKQPgASEVIAIpA+gBDAELQaD/E0HEADYCACACQdABaiAKEE4gAkHAAWogAikD0AEgAikD2AFCAEKAgICAgIDAABA8IAJBsAFqIAIpA8ABIAIpA8gBQgBCgICAgICAwAAQPCACKQOwASEVIAIpA7gBCyETIAwgFTcDECAMIBM3AxggAkGwA2okACAMKQMYIRMgDCkDECEUDAYLIAEpA3BCAFMNACABIAEoAgRBAWs2AgQLIAEhBSACIQYgAyEJQQAhAyMAQZDGAGsiBCQAQQAgD2siECAOayESAkACfwNAAkAgBkEwRwRAIAZBLkcNBCAFKAIEIgEgBSgCaEYNASAFIAFBAWo2AgQgAS0AAAwDCyAFKAIEIgEgBSgCaEcEQCAFIAFBAWo2AgQgAS0AACEGBSAFEMoBIQYLQQEhAwwBCwsgBRDKAQshBkEBIQ0gBkEwRw0AA0AgE0IBfSETAn8gBSgCBCIBIAUoAmhHBEAgBSABQQFqNgIEIAEtAAAMAQsgBRDKAQsiBkEwRg0AC0EBIQMLIARBADYCkAYgBkEwayECIAwCfgJAAkACQAJAAkACQCAGQS5GIgENACACQQlNDQAMAQsDQAJAIAFBAXEEQCANRQRAIBQhE0EBIQ0MAgsgA0UhAQwECyAUQgF8IRQgCEH8D0wEQCALIBSnIAZBMEYbIQsgBEGQBmogCEECdGoiASAHBH8gBiABKAIAQQpsakEwawUgAgs2AgBBASEDQQAgB0EBaiIBIAFBCUYiARshByABIAhqIQgMAQsgBkEwRg0AIAQgBCgCgEZBAXI2AoBGQdyPASELCwJ/IAUoAgQiASAFKAJoRwRAIAUgAUEBajYCBCABLQAADAELIAUQygELIgZBMGshAiAGQS5GIgENACACQQpJDQALCyATIBQgDRshEwJAIANFDQAgBkFfcUHFAEcNAAJAIAUgCRDPASIVQoCAgICAgICAgH9SDQAgCUUNBEIAIRUgBSkDcEIAUw0AIAUgBSgCBEEBazYCBAsgEyAVfCETDAQLIANFIQEgBkEASA0BCyAFKQNwQgBTDQAgBSAFKAIEQQFrNgIECyABRQ0BQaD/E0EcNgIAC0IAIRQgBUIAEMkBQgAMAQsgBCgCkAYiAUUEQCAEIAq3RAAAAAAAAAAAohBPIAQpAwAhFCAEKQMIDAELAkAgFEIJVQ0AIBMgFFINACAOQR5MQQAgASAOdhsNACAEQTBqIAoQTiAEQSBqIAEQUCAEQRBqIAQpAzAgBCkDOCAEKQMgIAQpAygQPCAEKQMQIRQgBCkDGAwBCyAQQQF2rSATUwRAQaD/E0HEADYCACAEQeAAaiAKEE4gBEHQAGogBCkDYCAEKQNoQn9C////////v///ABA8IARBQGsgBCkDUCAEKQNYQn9C////////v///ABA8IAQpA0AhFCAEKQNIDAELIA9B4gFrrCATVQRAQaD/E0HEADYCACAEQZABaiAKEE4gBEGAAWogBCkDkAEgBCkDmAFCAEKAgICAgIDAABA8IARB8ABqIAQpA4ABIAQpA4gBQgBCgICAgICAwAAQPCAEKQNwIRQgBCkDeAwBCyAHBEAgB0EITARAIARBkAZqIAhBAnRqIgEoAgAhBQNAIAVBCmwhBSAHQQFqIgdBCUcNAAsgASAFNgIACyAIQQFqIQgLIBOnIQcCQCALQQlODQAgByALSA0AIAdBEUoNACAHQQlGBEAgBEHAAWogChBOIARBsAFqIAQoApAGEFAgBEGgAWogBCkDwAEgBCkDyAEgBCkDsAEgBCkDuAEQPCAEKQOgASEUIAQpA6gBDAILIAdBCEwEQCAEQZACaiAKEE4gBEGAAmogBCgCkAYQUCAEQfABaiAEKQOQAiAEKQOYAiAEKQOAAiAEKQOIAhA8IARB4AFqQQAgB2tBAnRBgJMTaigCABBOIARB0AFqIAQpA/ABIAQpA/gBIAQpA+ABIAQpA+gBEDogBCkD0AEhFCAEKQPYAQwCCyAOIAdBfWxqQRtqIgFBHkxBACAEKAKQBiICIAF2Gw0AIARB4AJqIAoQTiAEQdACaiACEFAgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQPCAEQbACaiAHQQJ0QbiSE2ooAgAQTiAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhA8IAQpA6ACIRQgBCkDqAIMAQsDQCAEQZAGaiAIIgFBAWsiCEECdGooAgBFDQALQQAhCwJAIAdBCW8iA0UEQEEAIQIMAQtBACECIANBCWogAyAHQQBIGyEDAkAgAUUEQEEAIQEMAQtBgJTr3ANBACADa0ECdEGAkxNqKAIAIghtIQlBACEGQQAhBQNAIARBkAZqIAVBAnRqIg0gBiANKAIAIg0gCG4iEGoiBjYCACACQQFqQf8PcSACIAZFIAIgBUZxIgYbIQIgB0EJayAHIAYbIQcgCSANIAggEGxrbCEGIAVBAWoiBSABRw0ACyAGRQ0AIARBkAZqIAFBAnRqIAY2AgAgAUEBaiEBCyAHIANrQQlqIQcLA0AgBEGQBmogAkECdGohDQJAA0ACQCAHQSRIDQAgB0EkRw0CIA0oAgBB0On5BE0NAEEkIQcMAgsgAUH/D2ohCEEAIQMDQCABIQYgA60gBEGQBmogCEH/D3EiCUECdGoiATUCAEIdhnwiE0KBlOvcA1QEf0EABSATQoCU69wDgCIUQoDslKN8fiATfCETIBSnCyEDIAEgE6ciATYCACAGIAYgBiAJIAEbIAIgCUYbIAkgBkEBa0H/D3EiBUcbIQEgCUEBayEIIAIgCUcNAAsgC0EdayELIAYhASADRQ0ACyACQQFrQf8PcSICIAFGBEAgBEGQBmoiBiABQf4PakH/D3FBAnRqIgEgASgCACAFQQJ0IAZqKAIAcjYCACAFIQELIAdBCWohByAEQZAGaiACQQJ0aiADNgIADAELCwJAA0AgAUEBakH/D3EhBiAEQZAGaiABQQFrQf8PcUECdGohCQNAQQlBASAHQS1KGyEIAkADQCACIQNBACEFAkADQAJAIAMgBWpB/w9xIgIgAUYNACAEQZAGaiACQQJ0aigCACICIAVBAnRB0JITaigCACINSQ0AIAIgDUsNAiAFQQFqIgVBBEcNAQsLIAdBJEcNAEEAIQVCACETQgAhFANAIAEgAyAFakH/D3EiAkYEQCABQQFqQf8PcSIBQQJ0IARqQQA2AowGCyAEQYAGaiAEQZAGaiACQQJ0aigCABBQIARB8AVqIBMgFEIAQoCAgIDlmreOwAAQPCAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBHIAQpA+gFIRQgBCkD4AUhEyAFQQFqIgVBBEcNAAsgBEHQBWogChBOIARBwAVqIBMgFCAEKQPQBSAEKQPYBRA8IAQpA8gFIRRCACETIAQpA8AFIRUgC0HxAGoiCCAPayIGQQAgBkEAShsgDiAGIA5IIgkbIgJB8ABMDQIMBQsgCCALaiELIAEhAiABIANGDQALQYCU69wDIAh2IQ1BfyAIdEF/cyEQQQAhBSADIQIDQCAEQZAGaiADQQJ0aiIRIAUgESgCACIRIAh2aiIFNgIAIAJBAWpB/w9xIAIgBUUgAiADRnEiBRshAiAHQQlrIAcgBRshByAQIBFxIA1sIQUgA0EBakH/D3EiAyABRw0ACyAFRQ0BIAIgBkcEQCAEQZAGaiABQQJ0aiAFNgIAIAYhAQwDCyAJIAkoAgBBAXI2AgAMAQsLCyAEQZAFakQAAAAAAADwP0HhASACaxAwEE8gBEGwBWogBCkDkAUgBCkDmAUgFSAUEMwBIAQpA7gFIRggBCkDsAUhFyAEQYAFakQAAAAAAADwP0HxACACaxAwEE8gBEGgBWogFSAUIAQpA4AFIAQpA4gFEDEgBEHwBGogFSAUIAQpA6AFIhMgBCkDqAUiFhBIIARB4ARqIBcgGCAEKQPwBCAEKQP4BBBHIAQpA+gEIRQgBCkD4AQhFQsCQCADQQRqQf8PcSIFIAFGDQACQCAEQZAGaiAFQQJ0aigCACIFQf/Jte4BTQRAIAVFIANBBWpB/w9xIAFGcQ0BIARB8ANqIAq3RAAAAAAAANA/ohBPIARB4ANqIBMgFiAEKQPwAyAEKQP4AxBHIAQpA+gDIRYgBCkD4AMhEwwBCyAFQYDKte4BRwRAIARB0ARqIAq3RAAAAAAAAOg/ohBPIARBwARqIBMgFiAEKQPQBCAEKQPYBBBHIAQpA8gEIRYgBCkDwAQhEwwBCyAKtyEaIAEgA0EFakH/D3FGBEAgBEGQBGogGkQAAAAAAADgP6IQTyAEQYAEaiATIBYgBCkDkAQgBCkDmAQQRyAEKQOIBCEWIAQpA4AEIRMMAQsgBEGwBGogGkQAAAAAAADoP6IQTyAEQaAEaiATIBYgBCkDsAQgBCkDuAQQRyAEKQOoBCEWIAQpA6AEIRMLIAJB7wBKDQAgBEHQA2ogEyAWQgBCgICAgICAwP8/EDEgBCkD0AMgBCkD2ANCAEIAEDcNACAEQcADaiATIBZCAEKAgICAgIDA/z8QRyAEKQPIAyEWIAQpA8ADIRMLIARBsANqIBUgFCATIBYQRyAEQaADaiAEKQOwAyAEKQO4AyAXIBgQSCAEKQOoAyEUIAQpA6ADIRUCQCASQQJrIAhB/////wdxTg0AIAQgFEL///////////8AgzcDmAMgBCAVNwOQAyAEQYADaiAVIBRCAEKAgICAgICA/z8QPCAEKQOQAyAEKQOYA0KAgICAgICAuMAAEDghASAEKQOIAyAUIAFBAE4iAxshFCAEKQOAAyAVIAMbIRUgEyAWQgBCABA3IQUgEiADIAtqIgtB7gBqTgRAIAkgAiAGRyABQQBIcnEgBUEAR3FFDQELQaD/E0HEADYCAAsgBEHwAmogFSAUIAsQzQEgBCkD8AIhFCAEKQP4Ags3AyggDCAUNwMgIARBkMYAaiQAIAwpAyghEyAMKQMgIRQMBAsgASkDcEIAWQRAIAEgASgCBEEBazYCBAsMAQsCQAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQygELQShGBEBBASEFDAELQoCAgICAgOD//wAhEyABKQNwQgBTDQMgASABKAIEQQFrNgIEDAMLA0ACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABEMoBCyICQcEAayEGAkACQCACQTBrQQpJDQAgBkEaSQ0AIAJB3wBGDQAgAkHhAGtBGk8NAQsgBUEBaiEFDAELC0KAgICAgIDg//8AIRMgAkEpRg0CIAEpA3AiFkIAWQRAIAEgASgCBEEBazYCBAsCQCADBEAgBQ0BDAQLDAELA0AgFkIAWQRAIAEgASgCBEEBazYCBAsgBUEBayIFDQALDAILQaD/E0EcNgIAIAFCABDJAQtCACETCyAAIBQ3AwAgACATNwMIIAxBMGokAAuGBAIEfwF+AkACQAJAAkACQAJAAkACfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEMoBCyICQStrDgMAAQABCyACQS1GIQUCfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAEMoBCyIDQTprIQQgAUUNASAEQXVLDQEgACkDcEIAWQ0CDAULIAJBOmshBCACIQMLIARBdkkNASADQTBrIgRBCkkEQEEAIQIDQCADIAJBCmxqIQECfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEMoBCyIDQTBrIgRBCU0gAUEwayICQcyZs+YASHENAAsgAqwhBgsCQCAEQQpPDQADQCADrSAGQgp+fEIwfSEGAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABDKAQsiA0EwayIEQQlLDQEgBkKuj4XXx8LrowFTDQALCyAEQQpJBEADQAJ/IAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQygELQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAZ9IAYgBRsPCyAAIAAoAgRBAWs2AgQMAQsgACkDcEIAUw0BCyAAIAAoAgRBAWs2AgQLQoCAgICAgICAgH8LQwACQCAARQ0AAkACQAJAAkAgAUECag4GAAECAgQDBAsgACACPAAADwsgACACPQEADwsgACACPgIADwsgACACNwMACwu1AQICfwF+IwBBoAFrIgQkACAEIAAgBEGeAWogARsiBTYClAEgBCABQQFrIgBBACAAIAFNGzYCmAEDQCAEIAanakEAOgAAIAZCAXwiBkKQAVQNAAtBfyEAIARBfzYCTCAEQdIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQCQCABQQBIBEBBoP8TQT02AgAMAQsgBUEAOgAAIAQgAiADEMMBIQALIARBoAFqJAAgAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC1QBAn8gASAAKAJUIgEgAUEAIAJBgAJqIgMQhwEiBCABayADIAQbIgMgAiACIANLGyICECsaIAAgASADaiIDNgJUIAAgAzYCCCAAIAEgAmo2AgQgAguJAgACQCAABH8gAUH/AE0NAQJAQcyZFCgCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAg8LIAFBgEBxQYDAA0cgAUGAsANPcUUEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQPCwtBoP8TQRk2AgBBfwVBAQsPCyAAIAE6AABBAQsFABAdAAswAQF/IwBBEGsiAiQAIAIgAULAhD1+NwMIIAIpAwghASACQRBqJAAgACABNwMAIAALBwAgABDYAQuMAQECfyAAQfyZEzYCACAAKAIoIQEDQCABBEBBACAAIAFBAWsiAUECdCICIAAoAiRqKAIAIAAoAiAgAmooAgARCAAMAQsLIAAoAhwiASABKAIEQQFrIgI2AgQgAkF/RgRAIAEgASgCACgCCBEBAAsgACgCIBA0IAAoAiQQNCAAKAIwEDQgACgCPBA0IAALCQAgABDYARA0CzgBAn8gAEGwlBM2AgAgACgCBCIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACyAACwkAIAAQ2gEQNAsDAAELBAAgAAsQACAAQn83AwggAEIANwMACxAAIABCfzcDCCAAQgA3AwAL2AEBBH8jAEEQayIEJAADQAJAIAIgBUwNAAJ/IAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIAEgAyAEQQRqIgEgBEEIaiIDIAEoAgAgAygCAEgbIgEgBEEMaiIDIAEoAgAgAygCAEgbKAIAIgMQ4QEhASAAIAAoAgwgA2o2AgwgASADagwBCyAAIAAoAgAoAigRAAAiA0F/Rg0BIAEgA8A6AABBASEDIAFBAWoLIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsRACABIAEgAmogABDmARogAAsEAEF/CywAIAAgACgCACgCJBEAAEF/RwR/IAAgACgCDCIAQQFqNgIMIAAtAAAFQX8LCwQAQX8LsQEBBH8jAEEQayIFJAADQAJAIAIgBEwNACAAKAIYIgMgACgCHCIGTwR/IAAgAS0AACAAKAIAKAI0EQMAQX9GDQEgBEEBaiEEIAFBAWoFIAUgBiADazYCDCAFIAIgBGs2AgggAyABIAVBCGoiAyAFQQxqIgYgAygCACAGKAIASBsoAgAiAxDhARogACADIAAoAhhqNgIYIAMgBGohBCABIANqCyEBDAELCyAFQRBqJAAgBAsrAQF/IwBBEGsiAyQAIANBCGogACABIAIQ5wEgAygCDCEAIANBEGokACAAC3IBAn8jAEEgayIEJAAjAEEQayIFJAAgBSACNgIMIAQgATYCGCAEIAUoAgw2AhwgBUEQaiQAIARBEGogBCgCGCAEKAIcIAMQ6AEgBCgCECEBIAQgBCgCFDYCDCAAIAE2AgAgACAEKAIMNgIEIARBIGokAAs6AQF/IwBBEGsiBCQAIAQgAyABIAIgAWsiARBLIAFqNgIMIAAgAjYCACAAIAQoAgw2AgQgBEEQaiQACwQAIAELKgAgAEGwlBM2AgAgAEEEahDrASAAQgA3AhggAEIANwIQIABCADcCCCAAC4wSAQJ/IAACf0G0pBQtAAAEQEGwpBQoAgAMAQtBrKQUAn9BqKQULQAABEBBpKQUKAIADAELQYyxFEEANgIAQYixFEHA8hM2AgBBiLEUQdDGEzYCAEGIsRRBiLsTNgIAIwBBEGsiASQAQZCxFEIANwMAQZixFEEANgIAQZiyFEEAOgAAIAFBkLEUNgIMIwBBEGsiACQAENkDQR1NBEAQVwALIABBCGpBoLEUQR4Q2gNBlLEUIAAoAggiAjYCAEGQsRQgAjYCAEGYsRQgAiAAKAIMQQJ0ajYCACAAQRBqJABBkLEUQR4Q1QMgAUEQaiQAQaCyFEHpxQAQU0GQsRQQ1gNBxK4UQQA2AgBBwK4UQcDyEzYCAEHArhRB0MYTNgIAQcCuFEGkzxM2AgBBiLEUQcCuFEH4ohQQwAIQ1wNBzK4UQQA2AgBByK4UQcDyEzYCAEHIrhRB0MYTNgIAQciuFEHEzxM2AgBBiLEUQciuFEGAoxQQwAIQ1wNB1K4UQQA2AgBB0K4UQcDyEzYCAEHQrhRB0MYTNgIAQdyuFEEAOgAAQdiuFEEANgIAQdCuFEGcuxM2AgBB2K4UQdC7EzYCAEGIsRRB0K4UQcSkFBDAAhDXA0HkrhRBADYCAEHgrhRBwPITNgIAQeCuFEHQxhM2AgBB4K4UQYjHEzYCAEGIsRRB4K4UQbykFBDAAhDXA0HsrhRBADYCAEHorhRBwPITNgIAQeiuFEHQxhM2AgBB6K4UQZzIEzYCAEGIsRRB6K4UQcykFBDAAhDXA0H0rhRBADYCAEHwrhRBwPITNgIAQfCuFEHQxhM2AgBB8K4UQdjDEzYCAEH4rhQQyQI2AgBBiLEUQfCuFEHUpBQQwAIQ1wNBhK8UQQA2AgBBgK8UQcDyEzYCAEGArxRB0MYTNgIAQYCvFEGwyRM2AgBBiLEUQYCvFEHcpBQQwAIQ1wNBjK8UQQA2AgBBiK8UQcDyEzYCAEGIrxRB0MYTNgIAQYivFEGYyxM2AgBBiLEUQYivFEHspBQQwAIQ1wNBlK8UQQA2AgBBkK8UQcDyEzYCAEGQrxRB0MYTNgIAQZCvFEGkyhM2AgBBiLEUQZCvFEHkpBQQwAIQ1wNBnK8UQQA2AgBBmK8UQcDyEzYCAEGYrxRB0MYTNgIAQZivFEGMzBM2AgBBiLEUQZivFEH0pBQQwAIQ1wNBpK8UQQA2AgBBoK8UQcDyEzYCAEGgrxRB0MYTNgIAQaivFEGu2AA7AQBBoK8UQYjEEzYCAEGsrxRCADcCAEG0rxRBADYCAEGIsRRBoK8UQfykFBDAAhDXA0G8rxRBADYCAEG4rxRBwPITNgIAQbivFEHQxhM2AgBBwK8UQq6AgIDABTcCAEG4rxRBsMQTNgIAQcivFEIANwIAQdCvFEEANgIAQYixFEG4rxRBhKUUEMACENcDQdyvFEEANgIAQdivFEHA8hM2AgBB2K8UQdDGEzYCAEHYrxRB5M8TNgIAQYixFEHYrxRBiKMUEMACENcDQeSvFEEANgIAQeCvFEHA8hM2AgBB4K8UQdDGEzYCAEHgrxRB2NETNgIAQYixFEHgrxRBkKMUEMACENcDQeyvFEEANgIAQeivFEHA8hM2AgBB6K8UQdDGEzYCAEHorxRBrNMTNgIAQYixFEHorxRBmKMUEMACENcDQfSvFEEANgIAQfCvFEHA8hM2AgBB8K8UQdDGEzYCAEHwrxRBlNUTNgIAQYixFEHwrxRBoKMUEMACENcDQfyvFEEANgIAQfivFEHA8hM2AgBB+K8UQdDGEzYCAEH4rxRB7NwTNgIAQYixFEH4rxRByKMUEMACENcDQYSwFEEANgIAQYCwFEHA8hM2AgBBgLAUQdDGEzYCAEGAsBRBgN4TNgIAQYixFEGAsBRB0KMUEMACENcDQYywFEEANgIAQYiwFEHA8hM2AgBBiLAUQdDGEzYCAEGIsBRB9N4TNgIAQYixFEGIsBRB2KMUEMACENcDQZSwFEEANgIAQZCwFEHA8hM2AgBBkLAUQdDGEzYCAEGQsBRB6N8TNgIAQYixFEGQsBRB4KMUEMACENcDQZywFEEANgIAQZiwFEHA8hM2AgBBmLAUQdDGEzYCAEGYsBRB3OATNgIAQYixFEGYsBRB6KMUEMACENcDQaSwFEEANgIAQaCwFEHA8hM2AgBBoLAUQdDGEzYCAEGgsBRBgOITNgIAQYixFEGgsBRB8KMUEMACENcDQaywFEEANgIAQaiwFEHA8hM2AgBBqLAUQdDGEzYCAEGosBRBpOMTNgIAQYixFEGosBRB+KMUEMACENcDQbSwFEEANgIAQbCwFEHA8hM2AgBBsLAUQdDGEzYCAEGwsBRByOQTNgIAQYixFEGwsBRBgKQUEMACENcDQbywFEEANgIAQbiwFEHA8hM2AgBBuLAUQdDGEzYCAEHAsBRBsO4TNgIAQcCwFEGM1xM2AgBBuLAUQdzWEzYCAEGIsRRBuLAUQaijFBDAAhDXA0HMsBRBADYCAEHIsBRBwPITNgIAQciwFEHQxhM2AgBB0LAUQdTuEzYCAEHQsBRBlNkTNgIAQciwFEHk2BM2AgBBiLEUQciwFEGwoxQQwAIQ1wNB3LAUQQA2AgBB2LAUQcDyEzYCAEHYsBRB0MYTNgIAQeCwFBDdA0HYsBRB0NoTNgIAQYixFEHYsBRBuKMUEMACENcDQeywFEEANgIAQeiwFEHA8hM2AgBB6LAUQdDGEzYCAEHwsBQQ3QNB6LAUQezbEzYCAEGIsRRB6LAUQcCjFBDAAhDXA0H8sBRBADYCAEH4sBRBwPITNgIAQfiwFEHQxhM2AgBB+LAUQezlEzYCAEGIsRRB+LAUQYikFBDAAhDXA0GEsRRBADYCAEGAsRRBwPITNgIAQYCxFEHQxhM2AgBBgLEUQeTmEzYCAEGIsRRBgLEUQZCkFBDAAhDXA0GgpBRBiLEUNgIAQaikFEEBOgAAQaSkFEGgpBQ2AgBBoKQUCygCACIANgIAIAAgACgCBEEBajYCBEG0pBRBAToAAEGwpBRBrKQUNgIAQaykFAsoAgAiADYCACAAIAAoAgRBAWo2AgQLDQAgAEEIahDYARogAAsJACAAEOwBEDQLEwAgACAAKAIAQQxrKAIAahDsAQsTACAAIAAoAgBBDGsoAgBqEO0BC6wBAQN/IwBBEGsiAyQAIAAgACgCAEEMaygCAGooAhgEQCADQQhqIgIgADYCBCACQQA6AAAgACAAKAIAQQxrKAIAaiIBKAIQRQRAIAEoAkgiAQRAIAEQ8AELIAJBAToAAAsCQCACLQAARQ0AIAAgACgCAEEMaygCAGooAhgiASABKAIAKAIYEQAAQX9HDQAgACAAKAIAQQxrKAIAahDyAQsgAhDxAQsgA0EQaiQAC14BAn8CQCAAKAIEIgEgASgCAEEMaygCAGoiASgCGCICRQ0AIAEoAhANACABLQAFQSBxRQ0AIAIgAigCACgCGBEAAEF/Rw0AIAAoAgQiACAAKAIAQQxrKAIAahDyAQsLKQEBfyAAIAAoAhhFIAAoAhBBAXJyIgE2AhAgACgCFCABcQRAENUBAAsLCwAgAEHEpBQQ9AELQwAgARDAAiEBIAEgACgCDCAAKAIIIgBrQQJ1SQR/IAAgAUECdGooAgBBAEcFQQALRQRAENUBAAsgACABQQJ0aigCAAsQACAAEPYBIAEQ9gFzQQFzC0sBAn8gACgCACIBBEACfyABKAIMIgIgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAi0AAAtBf0cEQCAAKAIARQ8LIABBADYCAAtBAQsNACAAKAIAEPgBGiAACzEBAX8gACgCDCIBIAAoAhBGBEAgACAAKAIAKAIoEQAADwsgACABQQFqNgIMIAEtAAALDQAgAEEEahDYARogAAsJACAAEPkBEDQLEwAgACAAKAIAQQxrKAIAahD5AQsTACAAIAAoAgBBDGsoAgBqEPoBC1wBAn8CQCAAKAIAIgJFDQACfyACKAIYIgMgAigCHEYEQCACIAFB/wFxIAIoAgAoAjQRAwAMAQsgAiADQQFqNgIYIAMgAToAACABQf8BcQtBf0cNACAAQQA2AgALCzgBAn8gAEHwlBM2AgAgACgCBCIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACyAACwkAIAAQ/gEQNAvfAQEEfyMAQRBrIgQkAANAAkAgAiAFTA0AAn8gACgCDCIDIAAoAhAiBkkEQCAEQf////8HNgIMIAQgBiADa0ECdTYCCCAEIAIgBWs2AgQgASADIARBBGoiASAEQQhqIgMgASgCACADKAIASBsiASAEQQxqIgMgASgCACADKAIASBsoAgAiAxCBAiEBIAAgA0ECdCIGIAAoAgxqNgIMIAEgBmoMAQsgACAAKAIAKAIoEQAAIgNBf0YNASABIAM2AgBBASEDIAFBBGoLIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsqAQF/IwBBEGsiAyQAIANBCGogASABIAJBAnRqIAAQ5wEgA0EQaiQAIAALMgEBf0F/IQEgACAAKAIAKAIkEQAAQX9HBH8gACAAKAIMIgBBBGo2AgwgACgCAAVBfwsLuwEBBH8jAEEQayIFJAADQAJAIAIgBEwNACAAKAIYIgMgACgCHCIGTwRAIAAgASgCACAAKAIAKAI0EQMAQX9GDQEgBEEBaiEEIAFBBGohAQUgBSAGIANrQQJ1NgIMIAUgAiAEazYCCCADIAEgBUEIaiIDIAVBDGoiBiADKAIAIAYoAgBIGygCACIDEIECGiAAIANBAnQiBiAAKAIYajYCGCADIARqIQQgASAGaiEBCwwBCwsgBUEQaiQAIAQLKgAgAEHwlBM2AgAgAEEEahDrASAAQgA3AhggAEIANwIQIABCADcCCCAAC6wBAQN/IwBBEGsiAyQAIAAgACgCAEEMaygCAGooAhgEQCADQQhqIgIgADYCBCACQQA6AAAgACAAKAIAQQxrKAIAaiIBKAIQRQRAIAEoAkgiAQRAIAEQhQILIAJBAToAAAsCQCACLQAARQ0AIAAgACgCAEEMaygCAGooAhgiASABKAIAKAIYEQAAQX9HDQAgACAAKAIAQQxrKAIAahDyAQsgAhDxAQsgA0EQaiQACwsAIABBvKQUEPQBCxAAIAAQiAIgARCIAnNBAXMLSwECfyAAKAIAIgEEQAJ/IAEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEAAAwBCyACKAIAC0F/RwRAIAAoAgBFDwsgAEEANgIAC0EBCw0AIAAoAgAQigIaIAALMQEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBBGo2AgwgASgCAAtUAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABIAIoAgAoAjQRAwAMAQsgAiADQQRqNgIYIAMgATYCACABC0F/Rw0AIABBADYCAAsLOgAgAC0AC0GAAXFBB3YEQCAAKAIAEDQLIAAgASkCADcCACAAIAEoAgg2AgggAUEAOgALIAFBADoAAAvIAQEEfyAAIQMjAEEQayIGJAACQCACIAFrIgRB8P///wdJBEACQCAEQQtJBEAgAyAEOgALDAELIAZBCGogBEELTwR/IARBEGpBcHEiBSAFQQFrIgUgBUELRhsFQQoLQQFqEI4CIAMgBigCCCIFNgIAIAMgBigCDEGAgICAeHI2AgggAyAENgIEIAUhAwsDQCABIAJHBEAgAyABLQAAOgAAIANBAWohAyABQQFqIQEMAQsLIANBADoAACAGQRBqJAAMAQsQVQALIAALGAEBfyABEFQhAiAAIAE2AgQgACACNgIAC/0BAQJ/AkAgACgCBCAALQALIgJB/wBxIAJBgAFxQQd2GyICIAFJBEAgASACayICBEAgAiAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCyIDIAAoAgQgAC0ACyIBQf8AcSABQYABcUEHdhsiAWtLBEAgACADIAIgA2sgAWogASABEL0DCyAAKAIAIAAgAC0AC0GAAXFBB3YbIgMgAWogAkEAEJECGiABIAJqIQECQCAALQALQYABcUEHdgRAIAAgATYCBAwBCyAAIAE6AAsLIAEgA2pBADoAAAsMAQsgACAAKAIAIAAgAC0AC0GAAXFBB3YbIAEQkAILCy4AAkAgAC0AC0GAAXFBB3YEQCAAIAI2AgQMAQsgACACOgALCyABIAJqQQA6AAALQwEBfyMAQRBrIgMkACADIAI6AA8gACECA0AgAQRAIAIgAy0ADzoAACABQQFrIQEgAkEBaiECDAELCyADQRBqJAAgAAsLACAAQcykFBD0AQt8AQN/QX8hAwJAIABBf0YNACABKAJMQQBOIQQCQAJAIAEoAgQiAkUEQCABEMcBGiABKAIEIgJFDQELIAIgASgCLEEIa0sNAQsgBEUNAUF/DwsgASACQQFrIgI2AgQgAiAAOgAAIAEgASgCAEFvcTYCACAAQf8BcSEDCyADCx4AQaSbFBDwAUH0nRQQ8AFB+JsUEIUCQcieFBCFAguVAQEDfyMAQRBrIgMkACAAEOoBIgAgATYCICAAQZSaEzYCACADIAAoAgQiATYCDCABIAEoAgRBAWo2AgQgAygCDBCSAiEBIAMoAgwiBCAEKAIEQQFrIgU2AgQgBUF/RgRAIAQgBCgCACgCCBEBAAsgACACNgIoIAAgATYCJCAAIAEgASgCACgCHBEAADoALCADQRBqJAALNAEBfyAAQQRqIgJB/JkTNgIAIAJB4JkTNgIAIABBgJsTNgIAIAJBlJsTNgIAIAIgARCZAguVAQEDfyMAQRBrIgMkACAAEIQCIgAgATYCICAAQYSdEzYCACADIAAoAgQiATYCDCABIAEoAgRBAWo2AgQgAygCDBCaAiEBIAMoAgwiBCAEKAIEQQFrIgU2AgQgBUF/RgRAIAQgBCgCACgCCBEBAAsgACACNgIoIAAgATYCJCAAIAEgASgCACgCHBEAADoALCADQRBqJAALNAEBfyAAQQRqIgJB/JkTNgIAIAJB6JwTNgIAIABB8J0TNgIAIAJBhJ4TNgIAIAIgARCZAgtKACAAQQA2AhQgACABNgIYIABBADYCDCAAQoKggIDgADcCBCAAIAFFNgIQIABBIGpBAEEoECkaIABBHGoQ6wEgAEKAgICAcDcCSAsLACAAQdSkFBD0AQsxACAAIAAoAgAoAhgRAAAaIAAgASgCABCaAiIBNgIkIAAgASABKAIAKAIcEQAAOgAsC4QBAQV/IwBBEGsiASQAIAFBEGohBAJAA0AgACgCJCICIAAoAiggAUEIaiIDIAQgAUEEaiACKAIAKAIUEQcAIQVBfyECIANBASABKAIEIANrIgMgACgCIBAtIANHDQECQCAFQQFrDgIBAgALC0F/QQAgACgCIBCuARshAgsgAUEQaiQAIAILZQEBfwJAIAAtACxFBEAgAkEAIAJBAEobIQIDQCACIANGDQIgACABKAIAIAAoAgAoAjQRAwBBf0YEQCADDwUgAUEEaiEBIANBAWohAwwBCwALAAsgAUEEIAIgACgCIBAtIQILIAILhwIBBX8jAEEgayICJAACQAJAAkAgAUF/Rg0AIAIgATYCFCAALQAsBEBBfyEDIAJBFGpBBEEBIAAoAiAQLUEBRg0BDAMLIAIgAkEYaiIFNgIQIAJBIGohBiACQRRqIQMDQCAAKAIkIgQgACgCKCADIAUgAkEMaiACQRhqIAYgAkEQaiAEKAIAKAIMEQsAIQQgAigCDCADRg0CIARBA0YEQCADQQFBASAAKAIgEC1BAUYNAgwDCyAEQQFLDQIgAkEYaiIDQQEgAigCECADayIDIAAoAiAQLSADRw0CIAIoAgwhAyAEQQFGDQALCyABQQAgAUF/RxshAwwBC0F/IQMLIAJBIGokACADC0kAIAAgASgCABCaAiIBNgIkIAAgASABKAIAKAIYEQAANgIsIAAgACgCJCIBIAEoAgAoAhwRAAA6ADUgACgCLEEJTgRAENUBAAsLCQAgAEEAEKECC58DAgZ/AX4jAEEgayICJAACQCAALQA0BEAgACgCMCEDIAFFDQEgAEEAOgA0IABBfzYCMAwBCyACQQE2AhggAEEsaiIEIAJBGGoiAyADKAIAIAQoAgBIGygCACIEQQAgBEEAShshBgNAIAUgBkcEQEF/IQMgACgCIBA+IgdBf0YNAiACQRhqIAVqIAc6AAAgBUEBaiEFDAELCwJAAkAgAC0ANQRAIAIgAiwAGDYCFAwBCyACQRhqIQMDQAJAIAAoAigiBSkCACEIAkAgACgCJCIGIAUgAkEYaiIFIAQgBWoiBSACQRBqIAJBFGogAyACQQxqIAYoAgAoAhARCwBBAWsOAwAEAQMLIAAoAiggCDcCACAEQQhGDQMgACgCIBA+IgZBf0YNAyAFIAY6AAAgBEEBaiEEDAELCyACIAIsABg2AhQLAkAgAUUEQANAIARBAEwNAkF/IQMgBEEBayIEIAJBGGpqLAAAIAAoAiAQkwJBf0cNAAwECwALIAAgAigCFCIDNgIwDAILIAIoAhQhAwwBC0F/IQMLIAJBIGokACADCwkAIABBARChAgvxAQEDfyMAQSBrIgIkACAALQA0IQMCQCABQX9GBEAgAw0BIAAgACgCMCIBQX9HOgA0DAELAkAgA0UNACACIAAoAjA2AhACQAJAAkAgACgCJCIDIAAoAiggAkEQaiACQRRqIgQgAkEMaiACQRhqIAJBIGogBCADKAIAKAIMEQsAQQFrDgMCAgABCyAAKAIwIQMgAiACQRlqNgIUIAIgAzoAGAsDQCACKAIUIgMgAkEYak0NAiACIANBAWsiAzYCFCADLAAAIAAoAiAQkwJBf0cNAAsLQX8hAQwBCyAAQQE6ADQgACABNgIwCyACQSBqJAAgAQsxACAAIAAoAgAoAhgRAAAaIAAgASgCABCSAiIBNgIkIAAgASABKAIAKAIcEQAAOgAsC2UBAX8CQCAALQAsRQRAIAJBACACQQBKGyECA0AgAiADRg0CIAAgAS0AACAAKAIAKAI0EQMAQX9GBEAgAw8FIAFBAWohASADQQFqIQMMAQsACwALIAFBASACIAAoAiAQLSECCyACC4gCAQV/IwBBIGsiAiQAAkACQAJAIAFBf0YNACACIAHAOgAXIAAtACwEQEF/IQMgAkEXakEBQQEgACgCIBAtQQFGDQEMAwsgAiACQRhqIgU2AhAgAkEgaiEGIAJBF2ohAwNAIAAoAiQiBCAAKAIoIAMgBSACQQxqIAJBGGogBiACQRBqIAQoAgAoAgwRCwAhBCACKAIMIANGDQIgBEEDRgRAIANBAUEBIAAoAiAQLUEBRg0CDAMLIARBAUsNAiACQRhqIgNBASACKAIQIANrIgMgACgCIBAtIANHDQIgAigCDCEDIARBAUYNAAsLIAFBACABQX9HGyEDDAELQX8hAwsgAkEgaiQAIAMLSQAgACABKAIAEJICIgE2AiQgACABIAEoAgAoAhgRAAA2AiwgACAAKAIkIgEgASgCACgCHBEAADoANSAAKAIsQQlOBEAQ1QEACwsJACAAQQAQqQILnwMCBn8BfiMAQSBrIgIkAAJAIAAtADQEQCAAKAIwIQMgAUUNASAAQQA6ADQgAEF/NgIwDAELIAJBATYCGCAAQSxqIgQgAkEYaiIDIAMoAgAgBCgCAEgbKAIAIgRBACAEQQBKGyEGA0AgBSAGRwRAQX8hAyAAKAIgED4iB0F/Rg0CIAJBGGogBWogBzoAACAFQQFqIQUMAQsLAkACQCAALQA1BEAgAiACLQAYOgAXDAELIAJBGGohAwNAAkAgACgCKCIFKQIAIQgCQCAAKAIkIgYgBSACQRhqIgUgBCAFaiIFIAJBEGogAkEXaiADIAJBDGogBigCACgCEBELAEEBaw4DAAQBAwsgACgCKCAINwIAIARBCEYNAyAAKAIgED4iBkF/Rg0DIAUgBjoAACAEQQFqIQQMAQsLIAIgAi0AGDoAFwsCQCABRQRAA0AgBEEATA0CQX8hAyAEQQFrIgQgAkEYamotAAAgACgCIBCTAkF/Rw0ADAQLAAsgACACLQAXIgM2AjAMAgsgAi0AFyEDDAELQX8hAwsgAkEgaiQAIAMLCQAgAEEBEKkCC/IBAQN/IwBBIGsiAiQAIAAtADQhAwJAIAFBf0YEQCADDQEgACAAKAIwIgFBf0c6ADQMAQsCQCADRQ0AIAIgACgCMMA6ABMCQAJAAkAgACgCJCIDIAAoAiggAkETaiACQRRqIgQgAkEMaiACQRhqIAJBIGogBCADKAIAKAIMEQsAQQFrDgMCAgABCyAAKAIwIQMgAiACQRlqNgIUIAIgAzoAGAsDQCACKAIUIgMgAkEYak0NAiACIANBAWsiAzYCFCADLAAAIAAoAiAQkwJBf0cNAAsLQX8hAQwBCyAAQQE6ADQgACABNgIwCyACQSBqJAAgAQssAQF/IwBBEGsiAiQAIAIgATYCDCAAQeQAQfs/IAEQ0QEhACACQRBqJAAgAAuYAwEKfyAAAn8CQCAAIgFBA3EEQANAIAEtAAAiAkUNAiACQT1GDQIgAUEBaiIBQQNxDQALCwJAIAEoAgAiAkF/cyACQYGChAhrcUGAgYKEeHENAANAIAJBvfr06QNzQYGChAhrIAJBf3NxQYCBgoR4cQ0BIAEoAgQhAiABQQRqIQEgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCwNAIAEiAi0AACIDQT1HBEAgAkEBaiEBIAMNAQsLIAIMAQsgAQsiAUYEQEEADwsCQCAAIAEgAGsiBmotAAANAEGAohQoAgAiBEUNACAEKAIAIgFFDQADQAJAAn8gACECIAEhA0EAIQdBACAGIghFDQAaAkAgAi0AACIFRQ0AA0ACQCAFIAMtAAAiCUcNACAJRQ0AIAhBAWsiCEUNACADQQFqIQMgAi0AASEFIAJBAWohAiAFDQEMAgsLIAUhBwsgB0H/AXEgAy0AAGsLRQRAIAEgBmoiAS0AAEE9Rg0BCyAEKAIEIQEgBEEEaiEEIAENAQwCCwsgAUEBaiEKCyAKC/ACAQN/AkAgAS0AAA0AQYPFABCtAiIBBEAgAS0AAA0BCyAAQQxsQdCeE2oQrQIiAQRAIAEtAAANAQtBl8UAEK0CIgEEQCABLQAADQELQfLlEiEBCwJAA0ACQCABIAJqLQAAIgRFDQAgBEEvRg0AQRchBCACQQFqIgJBF0cNAQwCCwsgAiEEC0Hy5RIhAwJAAkACQAJAAkAgAS0AACICQS5GDQAgASAEai0AAA0AIAEhAyACQcMARw0BCyADLQABRQ0BCyADQfLlEhC3AUUNACADQfzDABC3AQ0BCyAARQRAQZifEyECIAMtAAFBLkYNAgtBAA8LQYSiFCgCACICBEADQCADIAJBCGoQtwFFDQIgAigCICICDQALC0EkEDMiAgRAIAJBFDYCBCACQbCeEzYCACACQQhqIgEgAyAEECsaIAEgBGpBADoAACACQYSiFCgCADYCIEGEohQgAjYCAAsgAkGYnxMgACACchshAgsgAgsuACAAQQBHIABBjO8TR3EgAEGk7xNHcSAAQYiiFEdxIABBoKIUR3EEQCAAEDQLC7IIAQV/IAEoAgAhBAJAAkACQAJAAkACQAJAAn8CQAJAAkACQCADRQ0AIAMoAgAiBkUNACAARQRAIAIhAwwDCyADQQA2AgAgAiEDDAELAkBBzJkUKAIAKAIARQRAIABFDQEgAkUNDCACIQYDQCAELAAAIgMEQCAAIANB/78DcTYCACAAQQRqIQAgBEEBaiEEIAZBAWsiBg0BDA4LCyAAQQA2AgAgAUEANgIAIAIgBmsPCyACIQMgAEUNAwwFCyAEEC8PC0EBIQUMAwtBAAwBC0EBCyEFA0AgBUUEQCAELQAAQQN2IgVBEGsgBkEadSAFanJBB0sNAwJ/IARBAWoiBSAGQYCAgBBxRQ0AGiAFLQAAQcABcUGAAUcEQCAEQQFrIQQMBwsgBEECaiIFIAZBgIAgcUUNABogBS0AAEHAAXFBgAFHBEAgBEEBayEEDAcLIARBA2oLIQQgA0EBayEDQQEhBQwBCwNAIAQtAAAhBgJAIARBA3ENACAGQQFrQf4ASw0AIAQoAgAiBkGBgoQIayAGckGAgYKEeHENAANAIANBBGshAyAEKAIEIQYgBEEEaiEEIAYgBkGBgoQIa3JBgIGChHhxRQ0ACwsgBkH/AXEiBUEBa0H+AE0EQCADQQFrIQMgBEEBaiEEDAELCyAFQcIBayIFQTJLDQMgBEEBaiEEIAVBAnRBwLcTaigCACEGQQAhBQwACwALA0AgBUUEQCADRQ0HA0ACQAJAAkAgBC0AACIFQQFrIgdB/gBLBEAgBSEGDAELIANBBUkNASAEQQNxDQECQANAIAQoAgAiBkGBgoQIayAGckGAgYKEeHENASAAIAZB/wFxNgIAIAAgBC0AATYCBCAAIAQtAAI2AgggACAELQADNgIMIABBEGohACAEQQRqIQQgA0EEayIDQQRLDQALIAQtAAAhBgsgBkH/AXEiBUEBayEHCyAHQf4ASw0BCyAAIAU2AgAgAEEEaiEAIARBAWohBCADQQFrIgMNAQwJCwsgBUHCAWsiBUEySw0DIARBAWohBCAFQQJ0QcC3E2ooAgAhBkEBIQUMAQsgBC0AACIFQQN2IgdBEGsgByAGQRp1anJBB0sNAQJAAkACfyAEQQFqIgcgBUGAAWsgBkEGdHIiBUEATg0AGiAHLQAAQYABayIHQT9LDQEgBEECaiIIIAcgBUEGdHIiBUEATg0AGiAILQAAQYABayIHQT9LDQEgByAFQQZ0ciEFIARBA2oLIQQgACAFNgIAIANBAWshAyAAQQRqIQAMAQtBoP8TQRk2AgAgBEEBayEEDAULQQAhBQwACwALIARBAWshBCAGDQEgBC0AACEGCyAGQf8BcQ0AIAAEQCAAQQA2AgAgAUEANgIACyACIANrDwtBoP8TQRk2AgAgAEUNAQsgASAENgIAC0F/DwsgASAENgIAIAILhwQCB38EfiMAQRBrIggkAAJAIAAtAAAiBUUEQCAAIQQMAQsgACEEAkADQCAFwCIGQSBGIAZBCWtBBUlyRQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAVB/wFxIgVBK2sOAwABAAELQX9BACAFQS1GGyEHIARBAWohBAsCfwJAIAJBEHJBEEcNACAELQAAQTBHDQBBASEJIAQtAAFB3wFxQdgARgRAIARBAmohBEEQDAILIARBAWohBCACQQggAhsMAQsgAkEKIAIbCyIKrSEMQQAhAgNAAkBBUCEFAkAgBCwAACIGQTBrQf8BcUEKSQ0AQal/IQUgBkHhAGtB/wFxQRpJDQBBSSEFIAZBwQBrQf8BcUEZSw0BCyAFIAZqIgYgCk4NACAIIAxCACALQgAQPUEBIQUCQCAIKQMIQgBSDQAgCyAMfiINIAatIg5Cf4VWDQAgDSAOfCELQQEhCSACIQULIARBAWohBCAFIQIMAQsLIAEEQCABIAQgACAJGzYCAAsCQAJAAkAgAgRAQaD/E0HEADYCACAHQQAgA0IBgyIMUBshByADIQsMAQsgAyALVg0BIANCAYMhDAsCQCAMpw0AIAcNAEGg/xNBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEGg/xNBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwt/AgJ/An4jAEGgAWsiBCQAIAQgATYCPCAEIAE2AhQgBEF/NgIYIARBEGoiBUIAEMkBIAQgBSADQQEQzgEgBCkDCCEGIAQpAwAhByACBEAgAiABIAQoAhQgBCgCiAFqIAQoAjxrajYCAAsgACAGNwMIIAAgBzcDACAEQaABaiQAC14BA38gASAEIANraiEFAkADQCADIARHBEBBfyEAIAEgAkYNAiABLAAAIgYgAywAACIHSA0CIAYgB0oEQEEBDwUgA0EBaiEDIAFBAWohAQwCCwALCyACIAVHIQALIAALDAAgACACIAMQjQIaC0ABAX9BACEAA38gASACRgR/IAAFIAEsAAAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBAWohAQwBCwsLVAECfwJAA0AgAyAERwRAQX8hACABIAJGDQIgASgCACIFIAMoAgAiBkgNAiAFIAZKBEBBAQ8FIANBBGohAyABQQRqIQEMAgsACwsgASACRyEACyAACwwAIAAgAiADELgCGgvLAQEEfyAAIQMjAEEQayIGJAACQCACIAFrQQJ1IgRB8P///wNJBEACQCAEQQJJBEAgAyAEOgALDAELIAZBCGogBEECTwR/IARBBGpBfHEiBSAFQQFrIgUgBUECRhsFQQELQQFqELkCIAMgBigCCCIFNgIAIAMgBigCDEGAgICAeHI2AgggAyAENgIEIAUhAwsDQCABIAJHBEAgAyABKAIANgIAIANBBGohAyABQQRqIQEMAQsLIANBADYCACAGQRBqJAAMAQsQVQALIAALGQEBfyABELoCIQIgACABNgIEIAAgAjYCAAsZACAAQYCAgIAETwRAEKQBAAsgAEECdBBUC0ABAX9BACEAA38gASACRgR/IAAFIAEoAgAgAEEEdGoiAEGAgICAf3EiA0EYdiADciAAcyEAIAFBBGohAQwBCwsL9AIBAn8jAEEgayIGJAAgBiABNgIcAkAgAy0ABEEBcUUEQCAGQX82AgAgACABIAIgAyAEIAYgACgCACgCEBEFACEBAkACQAJAIAYoAgAOAgABAgsgBUEAOgAADAMLIAVBAToAAAwCCyAFQQE6AAAgBEEENgIADAELIAYgAygCHCIANgIAIAAgACgCBEEBajYCBCAGKAIAEPMBIQcgBigCACIAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyAGIAMoAhwiADYCACAAIAAoAgRBAWo2AgQgBigCABC9AiEAIAYoAgAiASABKAIEQQFrIgM2AgQgA0F/RgRAIAEgASgCACgCCBEBAAsgBiAAIAAoAgAoAhgRAgAgBkEMciAAIAAoAgAoAhwRAgAgBSAGQRxqIAIgBiAGQRhqIgMgByAEQQEQvgIgBkY6AAAgBigCHCEBA0AgA0EMaxC/AiIDIAZHDQALCyAGQSBqJAAgAQsLACAAQfykFBD0AQv4BQELfyMAQYABayIKJAAgCiABNgJ8IApB1AA2AhAgCkEIaiIBQQA2AgAgASAKQRBqIgkoAgA2AgQgASENAkACQCADIAJrQQxtIgtB5QBPBEAgCxAzIglFDQEgDSgCACEBIA0gCTYCACABBEAgASANKAIEEQEACwsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoQ9QFBASALGwRAIAAgCkH8AGoQ9QEEQCAFIAUoAgBBAnI2AgALDAULAn8gACgCACIHKAIMIgEgBygCEEYEQCAHIAcoAgAoAiQRAAAMAQsgAS0AAAvAIQ4gBkUEQCAEIA4gBCgCACgCDBEDACEOCyAQQQFqIQhBACERIAkhByACIQEDQCABIANGBEAgCCEQIBFFDQIgABD3ARogCSEHIAIhASALIAxqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgECABKAIEIAEtAAsiCEH/AHEgCEGAAXFBB3YbRg0AIAdBADoAACAMQQFrIQwLIAdBAWohByABQQxqIQEMAQsACwAFAkAgBy0AAEEBRw0AIBAgASgCACABIAEtAAtBgAFxQQd2G2otAAAhDwJAIA5B/wFxIAYEfyAPBSAEIA/AIAQoAgAoAgwRAwALQf8BcUYEQEEBIREgCCABKAIEIAEtAAsiD0H/AHEgD0GAAXFBB3YbRw0CIAdBAjoAACAMQQFqIQwMAQsgB0EAOgAACyALQQFrIQsLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgASgCBCABLQALIghB/wBxIAhBgAFxQQd2G0UiCBs6AAAgCCAMaiEMIAsgCGshCyAHQQFqIQcgAUEMaiEBDAELAAsACxDVAQALAkACQANAIAIgA0YNASAJLQAAQQJHBEAgCUEBaiEJIAJBDGohAgwBCwsgAiEDDAELIAUgBSgCAEEEcjYCAAsgDSIAKAIAIQEgAEEANgIAIAEEQCABIAAoAgQRAQALIApBgAFqJAAgAwsaACAALQALQYABcUEHdgRAIAAoAgAQNAsgAAvOAQEFfyMAQRBrIgUkACAFQQRqIgFB1QA2AgQgASAANgIAIAFBADYCCCMAQRBrIgMkACAAKAIAQX9HBEAgA0EMaiIEIAE2AgAgA0EIaiICIAQ2AgADQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAIoAgAoAgAiASgCACABKAIIIgRBAXVqIQIgASgCBCEBIAIgBEEBcQR/IAIoAgAgAWooAgAFIAELEQEAIABBfzYCAAsLIANBEGokACAAKAIEIQAgBUEQaiQAIABBAWsLHAAgAEG4pBRBuKQUKAIAQQFqIgA2AgAgADYCBAvlBAECfyADKAIEIQAgAygCHCEGIwBB4AFrIgMkACADIAI2AtgBIAMgATYC3AEgABDDAiEHIANByAFqIAYgA0HXAWoQxAIgA0G8AWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGNgK4ASADIANBEGo2AgwgA0EANgIIA0ACQCADQdwBaiADQdgBahD1AQ0AIAMoArgBIAYgAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAakYEQCACIABBAXQQjwIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiADIAIoAgAgAiACLQALQYABcUEHdhsiBiAAajYCuAELAn8gAygC3AEiACgCDCIBIAAoAhBGBEAgACAAKAIAKAIkEQAADAELIAEtAAALwCAHIAYgA0G4AWogA0EIaiADLADXASADKALMASADLQDTASADQRBqIANBDGpBkLkTEMUCDQAgA0HcAWoQ9wEaDAELCyADKAIMIQACQAJAIAMoAswBIAMtANMBIgFB/wBxIAFBgAFxQQd2G0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAK4ASAEIAcQxgI2AgAgA0HIAWogA0EQaiABIAQQxwIgA0HcAWogA0HYAWoQ9QEEQCAEIAQoAgBBAnI2AgALIAMoAtwBIQAgAhC/AhogA0HIAWoQvwIaIANB4AFqJAAgAAsrAAJAIABBygBxIgAEQCAAQcAARgRAQQgPCyAAQQhHDQFBEA8LQQAPC0EKC3oBAX8jAEEQayIDJAAgAyABNgIMIAEgASgCBEEBajYCBCACIAMoAgwQvQIiASABKAIAKAIQEQAAOgAAIAAgASABKAIAKAIUEQIAIAMoAgwiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgA0EQaiQAC9gCAQN/AkACQCADKAIAIgsgAkcNAEErIQwgAEH/AXEiDSAKLQAYRwRAQS0hDCAKLQAZIA1HDQELIAMgAkEBajYCACACIAw6AAAMAQsCQAJAIAYgB0H/AHEgB0GAAXFBB3YbRQ0AIAAgBUcNAEEAIQcgCSgCACIAIAhrQZ8BSg0BIAQoAgAhASAJIABBBGo2AgAgACABNgIADAILQX8hByAKIApBGmogABDIAiAKayIAQRdKDQACQAJAAkAgAUEIaw4DAAIAAQsgACABSA0BDAILIAFBEEcNACAAQRZIDQAgAiALRg0BIAsgAmtBAkoNASALQQFrLQAAQTBHDQEgBEEANgIAIAMgC0EBajYCACALIABBkLkTai0AADoAAEEADwsgAyALQQFqNgIAIAsgAEGQuRNqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQcLIAcPCyAEQQA2AgBBAAviAQICfwF+IwBBEGsiBCQAAn8CQCAAIAFHBEACQEGg/xMoAgAhBUGg/xNBADYCABDJAhogACAEQQxqIAMQygIhBgJAQaD/EygCACIABEAgBCgCDCABRw0CIABBxABHDQEgAkEENgIAQf////8HIAZCAFUNBRoMBAtBoP8TIAU2AgAgBCgCDCABRg0ADAELIAZC/////3dXBEAgAkEENgIADAMLIAZCgICAgAhZBEAgAkEENgIAQf////8HDAQLIAanDAMLCyACQQQ2AgBBAAwBC0GAgICAeAshACAEQRBqJAAgAAvaAQEDfyAAKAIEIAAtAAsiBEH/AHEgBEGAAXFBB3YbIQQCQCACIAFrQQVIDQAgBEUNACABIAIQywIgAkEEayEEIAAoAgQgAC0ACyICQf8AcSACQYABcUEHdhsgACgCACAAIAJBgAFxQQd2GyICaiEGAkADQAJAIAIsAAAiAEH/AGshBSABIARPDQAgBUH/AXFBggFPBEAgASgCACAARw0DCyABQQRqIQEgAiAGIAJrQQFKaiECDAELCyAFQf8BcUGCAUkNASAEKAIAQQFrIABJDQELIANBBDYCAAsLMgAgAkH/AXEhAgNAAkAgACABRwR/IAAtAAAgAkcNASAABSABCw8LIABBAWohAAwACwAL1AIBA39BnKQULQAABEBBmKQUKAIADwsjAEEgayIBJAACQAJAA0AgAUEIaiAAQQJ0aiAAQenFAEHt5hJBASAAdEH/////B3EbEK4CIgI2AgAgAkF/Rg0BIABBAWoiAEEGRw0AC0GM7xMhACABQQhqQYzvE0EYEIgBRQ0BQaTvEyEAIAFBCGpBpO8TQRgQiAFFDQFBACEAQbiiFC0AAEUEQANAIABBAnRBiKIUaiAAQe3mEhCuAjYCACAAQQFqIgBBBkcNAAtBuKIUQQE6AABBoKIUQYiiFCgCADYCAAtBiKIUIQAgAUEIakGIohRBGBCIAUUNAUGgohQhACABQQhqQaCiFEEYEIgBRQ0BQRgQMyIARQ0AIAAgASkCCDcCACAAIAEpAhg3AhAgACABKQIQNwIIDAELQQAhAAsgAUEgaiQAQZykFEEBOgAAQZikFCAANgIAIAALFgAgACABIAJCgICAgICAgICAfxCxAgs/AQF/AkAgACABRg0AA0AgACABQQRrIgFPDQEgACgCACECIAAgASgCADYCACABIAI2AgAgAEEEaiEADAALAAsL5QQBAn8gAygCBCEAIAMoAhwhBiMAQeABayIDJAAgAyACNgLYASADIAE2AtwBIAAQwwIhByADQcgBaiAGIANB1wFqEMQCIANBvAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiADIAIoAgAgAiACLQALQYABcUEHdhsiBjYCuAEgAyADQRBqNgIMIANBADYCCANAAkAgA0HcAWogA0HYAWoQ9QENACADKAK4ASAGIAIoAgQgAi0ACyIAQf8AcSAAQYABcUEHdhsiAGpGBEAgAiAAQQF0EI8CIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgYgAGo2ArgBCwJ/IAMoAtwBIgAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAAwBCyABLQAAC8AgByAGIANBuAFqIANBCGogAywA1wEgAygCzAEgAy0A0wEgA0EQaiADQQxqQZC5ExDFAg0AIANB3AFqEPcBGgwBCwsgAygCDCEAAkACQCADKALMASADLQDTASIBQf8AcSABQYABcUEHdhtFDQAgACADQRBqa0GfAUoNACADIABBBGoiATYCDCAAIAMoAgg2AgAMAQsgACEBCyAFIAYgAygCuAEgBCAHEM0CNwMAIANByAFqIANBEGogASAEEMcCIANB3AFqIANB2AFqEPUBBEAgBCAEKAIAQQJyNgIACyADKALcASEAIAIQvwIaIANByAFqEL8CGiADQeABaiQAIAALrQECAn8BfiMAQRBrIgQkAAJAIAAgAUcEQEGg/xMoAgAhBUGg/xNBADYCABDJAhogACAEQQxqIAMQygIhBgJAQaD/EygCACIABEAgBCgCDCABRw0BIABBxABHDQMgAkEENgIAQv///////////wBCgICAgICAgICAfyAGQgBVGyEGDAMLQaD/EyAFNgIAIAQoAgwgAUYNAgsLIAJBBDYCAEIAIQYLIARBEGokACAGC+UEAQJ/IAMoAgQhACADKAIcIQYjAEHgAWsiAyQAIAMgAjYC2AEgAyABNgLcASAAEMMCIQcgA0HIAWogBiADQdcBahDEAiADQbwBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArgBIAMgA0EQajYCDCADQQA2AggDQAJAIANB3AFqIANB2AFqEPUBDQAgAygCuAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCPAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgK4AQsCfyADKALcASIAKAIMIgEgACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgAS0AAAvAIAcgBiADQbgBaiADQQhqIAMsANcBIAMoAswBIAMtANMBIANBEGogA0EMakGQuRMQxQINACADQdwBahD3ARoMAQsLIAMoAgwhAAJAAkAgAygCzAEgAy0A0wEiAUH/AHEgAUGAAXFBB3YbRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArgBIAQgBxDPAjsBACADQcgBaiADQRBqIAEgBBDHAiADQdwBaiADQdgBahD1AQRAIAQgBCgCAEECcjYCAAsgAygC3AEhACACEL8CGiADQcgBahC/AhogA0HgAWokACAAC+EBAgN/AX4jAEEQayIEJAACfwJAIAAgAUcEQAJAAkAgAC0AACIFQS1HDQAgAEEBaiIAIAFHDQAMAQtBoP8TKAIAIQZBoP8TQQA2AgAQyQIaIAAgBEEMaiADENACIQcCQEGg/xMoAgAiAARAIAQoAgwgAUcNAiAAQcQARg0BIAdC//8DVg0BDAQLQaD/EyAGNgIAIAEgBCgCDEcNASAHQoCABFQNAwsgAkEENgIAQf//AwwDCwsgAkEENgIAQQAMAQtBACAHpyIAayAAIAVBLUYbCyEAIARBEGokACAAQf//A3ELDQAgACABIAJCfxCxAgvlBAECfyADKAIEIQAgAygCHCEGIwBB4AFrIgMkACADIAI2AtgBIAMgATYC3AEgABDDAiEHIANByAFqIAYgA0HXAWoQxAIgA0G8AWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGNgK4ASADIANBEGo2AgwgA0EANgIIA0ACQCADQdwBaiADQdgBahD1AQ0AIAMoArgBIAYgAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAakYEQCACIABBAXQQjwIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiADIAIoAgAgAiACLQALQYABcUEHdhsiBiAAajYCuAELAn8gAygC3AEiACgCDCIBIAAoAhBGBEAgACAAKAIAKAIkEQAADAELIAEtAAALwCAHIAYgA0G4AWogA0EIaiADLADXASADKALMASADLQDTASADQRBqIANBDGpBkLkTEMUCDQAgA0HcAWoQ9wEaDAELCyADKAIMIQACQAJAIAMoAswBIAMtANMBIgFB/wBxIAFBgAFxQQd2G0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAK4ASAEIAcQ0gI2AgAgA0HIAWogA0EQaiABIAQQxwIgA0HcAWogA0HYAWoQ9QEEQCAEIAQoAgBBAnI2AgALIAMoAtwBIQAgAhC/AhogA0HIAWoQvwIaIANB4AFqJAAgAAveAQIDfwF+IwBBEGsiBCQAAn8CQCAAIAFHBEACQAJAIAAtAAAiBUEtRw0AIABBAWoiACABRw0ADAELQaD/EygCACEGQaD/E0EANgIAEMkCGiAAIARBDGogAxDQAiEHAkBBoP8TKAIAIgAEQCAEKAIMIAFHDQIgAEHEAEYNASAHQv////8PVg0BDAQLQaD/EyAGNgIAIAEgBCgCDEcNASAHQoCAgIAQVA0DCyACQQQ2AgBBfwwDCwsgAkEENgIAQQAMAQtBACAHpyIAayAAIAVBLUYbCyEAIARBEGokACAAC+UEAQJ/IAMoAgQhACADKAIcIQYjAEHgAWsiAyQAIAMgAjYC2AEgAyABNgLcASAAEMMCIQcgA0HIAWogBiADQdcBahDEAiADQbwBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArgBIAMgA0EQajYCDCADQQA2AggDQAJAIANB3AFqIANB2AFqEPUBDQAgAygCuAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCPAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgK4AQsCfyADKALcASIAKAIMIgEgACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgAS0AAAvAIAcgBiADQbgBaiADQQhqIAMsANcBIAMoAswBIAMtANMBIANBEGogA0EMakGQuRMQxQINACADQdwBahD3ARoMAQsLIAMoAgwhAAJAAkAgAygCzAEgAy0A0wEiAUH/AHEgAUGAAXFBB3YbRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArgBIAQgBxDUAjcDACADQcgBaiADQRBqIAEgBBDHAiADQdwBaiADQdgBahD1AQRAIAQgBCgCAEECcjYCAAsgAygC3AEhACACEL8CGiADQcgBahC/AhogA0HgAWokACAAC8IBAgN/AX4jAEEQayIEJAACfiAAIAFHBEACQAJAIAAtAAAiBUEtRw0AIABBAWoiACABRw0ADAELQaD/EygCACEGQaD/E0EANgIAEMkCGiAAIARBDGogAxDQAiEHAkBBoP8TKAIAIgAEQCAEKAIMIAFHDQIgAEHEAEcNASACQQQ2AgBCfwwEC0Gg/xMgBjYCACAEKAIMIAFGDQAMAQtCACAHfSAHIAVBLUYbDAILCyACQQQ2AgBCAAshByAEQRBqJAAgBwuMBQEDfyADKAIcIQAjAEGAAmsiAyQAIAMgAjYC+AEgAyABNgL8ASADQcABaiAAIANB0AFqIANBzwFqIANBzgFqENYCIANBtAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiADIAIoAgAgAiACLQALQYABcUEHdhsiBjYCsAEgAyADQRBqNgIMIANBADYCCCADQQE6AAcgA0HFADoABiADLQDOAcAhASADLQDPAcAhBwNAAkAgA0H8AWogA0H4AWoQ9QENACADKAKwASAGIAIoAgQgAi0ACyIAQf8AcSAAQYABcUEHdhsiAGpGBEAgAiAAQQF0EI8CIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgYgAGo2ArABCwJ/IAMoAvwBIgAoAgwiCCAAKAIQRgRAIAAgACgCACgCJBEAAAwBCyAILQAAC8AgA0EHaiADQQZqIAYgA0GwAWogByABIANBwAFqIANBEGogA0EMaiADQQhqIANB0AFqENcCDQAgA0H8AWoQ9wEaDAELCyADKAIMIQACQAJAIAMoAsQBIAMtAMsBIgFB/wBxIAFBgAFxQQd2G0UNACADLQAHRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArABIAQQ2AI4AgAgA0HAAWogA0EQaiABIAQQxwIgA0H8AWogA0H4AWoQ9QEEQCAEIAQoAgBBAnI2AgALIAMoAvwBIQAgAhC/AhogA0HAAWoQvwIaIANBgAJqJAAgAAusAQEBfyMAQRBrIgUkACAFIAE2AgwgASABKAIEQQFqNgIEIAUoAgwQ8wEiAUGQuRNBsLkTIAIgASgCACgCIBEGABogAyAFKAIMEL0CIgEgASgCACgCDBEAADoAACAEIAEgASgCACgCEBEAADoAACAAIAEgASgCACgCFBECACAFKAIMIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAVBEGokAAu+BAACQAJAIAAgBUYEQCABLQAARQ0CQQAhBSABQQA6AAAgBCAEKAIAIgBBAWo2AgAgAEEuOgAAIAcoAgQgBy0ACyIAQf8AcSAAQYABcUEHdhtFDQEgCSgCACIAIAhrQZ8BSg0BIAooAgAhASAJIABBBGo2AgAgACABNgIAQQAPCwJAIAAgBkcNACAHKAIEIActAAsiBUH/AHEgBUGAAXFBB3YbRQ0AIAEtAABFDQJBACEFIAkoAgAiACAIa0GfAUoNASAKKAIAIQEgCSAAQQRqNgIAIAAgATYCACAKQQA2AgBBAA8LQX8hBSALIAtBIGogABDIAiALayILQR9KDQAgC0GQuRNqLAAAIQYCQAJAAkACQCALQX5xQRZrDgMBAgACCyADIAQoAgAiAEcEQCAAQQFrLAAAIgFB3wBxIAEgAUHhAGtBGkkbIAIsAAAiAUHfAHEgASABQeEAa0EaSRtHDQQLIAQgAEEBajYCACAAIAY6AABBAA8LIAJB0AA6AAAMAQsgBkHfAHEgBiAGQeEAa0EaSRsiACACLAAARw0AIAIgAEEgciAAIABBwQBrQRpJGzoAACABLQAARQ0AIAFBADoAACAHKAIEIActAAsiAEH/AHEgAEGAAXFBB3YbRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhBSALQRVKDQAgCiAKKAIAQQFqNgIACyAFDwtBfwu2AQIDfwJ9IwBBEGsiAyQAAkACQAJAIAAgAUcEQEGg/xMoAgAhBUGg/xNBADYCABDJAhojAEEQayIEJAAgBCAAIANBDGpBABCyAiAEKQMAIAQpAwgQUSEGIARBEGokAEGg/xMoAgAiAEUNASADKAIMIAFHDQIgBiEHIABBxABHDQMMAgsgAkEENgIADAILQaD/EyAFNgIAIAMoAgwgAUYNAQsgAkEENgIAIAchBgsgA0EQaiQAIAYLjAUBA38gAygCHCEAIwBBgAJrIgMkACADIAI2AvgBIAMgATYC/AEgA0HAAWogACADQdABaiADQc8BaiADQc4BahDWAiADQbQBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArABIAMgA0EQajYCDCADQQA2AgggA0EBOgAHIANBxQA6AAYgAy0AzgHAIQEgAy0AzwHAIQcDQAJAIANB/AFqIANB+AFqEPUBDQAgAygCsAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCPAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgKwAQsCfyADKAL8ASIAKAIMIgggACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgCC0AAAvAIANBB2ogA0EGaiAGIANBsAFqIAcgASADQcABaiADQRBqIANBDGogA0EIaiADQdABahDXAg0AIANB/AFqEPcBGgwBCwsgAygCDCEAAkACQCADKALEASADLQDLASIBQf8AcSABQYABcUEHdhtFDQAgAy0AB0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAKwASAEENoCOQMAIANBwAFqIANBEGogASAEEMcCIANB/AFqIANB+AFqEPUBBEAgBCAEKAIAQQJyNgIACyADKAL8ASEAIAIQvwIaIANBwAFqEL8CGiADQYACaiQAIAALtgECA38CfCMAQRBrIgMkAAJAAkACQCAAIAFHBEBBoP8TKAIAIQVBoP8TQQA2AgAQyQIaIwBBEGsiBCQAIAQgACADQQxqQQEQsgIgBCkDACAEKQMIEE0hBiAEQRBqJABBoP8TKAIAIgBFDQEgAygCDCABRw0CIAYhByAAQcQARw0DDAILIAJBBDYCAAwCC0Gg/xMgBTYCACADKAIMIAFGDQELIAJBBDYCACAHIQYLIANBEGokACAGC6MFAgN/AX4gAygCHCEAIwBBkAJrIgMkACADIAI2AogCIAMgATYCjAIgA0HQAWogACADQeABaiADQd8BaiADQd4BahDWAiADQcQBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2AsABIAMgA0EgajYCHCADQQA2AhggA0EBOgAXIANBxQA6ABYgAy0A3gHAIQEgAy0A3wHAIQcDQAJAIANBjAJqIANBiAJqEPUBDQAgAygCwAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCPAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgLAAQsCfyADKAKMAiIAKAIMIgggACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgCC0AAAvAIANBF2ogA0EWaiAGIANBwAFqIAcgASADQdABaiADQSBqIANBHGogA0EYaiADQeABahDXAg0AIANBjAJqEPcBGgwBCwsgAygCHCEAAkACQCADKALUASADLQDbASIBQf8AcSABQYABcUEHdhtFDQAgAy0AF0UNACAAIANBIGprQZ8BSg0AIAMgAEEEaiIBNgIcIAAgAygCGDYCAAwBCyAAIQELIAMgBiADKALAASAEENwCIAMpAwAhCSAFIAMpAwg3AwggBSAJNwMAIANB0AFqIANBIGogASAEEMcCIANBjAJqIANBiAJqEPUBBEAgBCAEKAIAQQJyNgIACyADKAKMAiEAIAIQvwIaIANB0AFqEL8CGiADQZACaiQAIAALsgICBH4FfyMAQSBrIggkAAJAAkACQCABIAJHBEBBoP8TKAIAIQxBoP8TQQA2AgAjAEEQayIJJAAQyQIaIwBBEGsiCiQAIwBBEGsiCyQAIAsgASAIQRxqQQIQsgIgCykDACEEIAogCykDCDcDCCAKIAQ3AwAgC0EQaiQAIAopAwAhBCAJIAopAwg3AwggCSAENwMAIApBEGokACAJKQMAIQQgCCAJKQMINwMQIAggBDcDCCAJQRBqJAAgCCkDECEEIAgpAwghBUGg/xMoAgAiAUUNASAIKAIcIAJHDQIgBSEGIAQhByABQcQARw0DDAILIANBBDYCAAwCC0Gg/xMgDDYCACAIKAIcIAJGDQELIANBBDYCACAGIQUgByEECyAAIAU3AwAgACAENwMIIAhBIGokAAuMBQECfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBxAFqIgdCADcCACAHQQA2AgggAEEQaiIGIAMoAhwiATYCACABIAEoAgRBAWo2AgQgACgCEBDzASIBQZC5E0GquRMgAEHQAWogASgCACgCIBEGABogACgCECIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACyAAQbgBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgACACKAIAIAIgAi0AC0GAAXFBB3YbIgM2ArQBIAAgBjYCDCAAQQA2AgggAyEBA0ACQCACIABB/AFqIABB+AFqEPUBBH8gAwUgAyABIAIoAgQgAi0ACyIGQf8AcSAGQYABcUEHdhsiBmpGBEAgAiAGQQF0EI8CIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgACACKAIAIAIgAi0AC0GAAXFBB3YbIgEgBmo2ArQBCwJ/IAAoAvwBIgMoAgwiBiADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAGLQAAC8BBECABIABBtAFqIABBCGpBACAHKAIEIActAAsgAEEQaiAAQQxqIABB0AFqEMUCRQ0BIAAoArQBCyABaxCPAiACKAIAIAIgAi0AC0GAAXFBB3YbIQEQyQIhAyAAIAU2AgAgASADIAAQ3gJBAUcEQCAEQQQ2AgALIABB/AFqIABB+AFqEPUBBEAgBCAEKAIAQQJyNgIACyAAKAL8ASEBIAIQvwIaIAcQvwIaIABBgAJqJAAgAQ8LIABB/AFqEPcBGiAAKAK0ASEDDAALAAtiAQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIAEQ3wIhASAAQco9IAMoAgwQtAEhAiABKAIAIgAEQEHMmRQoAgAaIAAEQEHMmRRB3KIUIAAgAEF/Rhs2AgALCyADQRBqJAAgAgs4AQF/QcyZFCgCACECIAEEQEHMmRRB3KIUIAEgAUF/Rhs2AgALIABBfyACIAJB3KIURhs2AgAgAAv0AgECfyMAQSBrIgYkACAGIAE2AhwCQCADLQAEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQUAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADKAIcIgA2AgAgACAAKAIEQQFqNgIEIAYoAgAQhgIhByAGKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAYgAygCHCIANgIAIAAgACgCBEEBajYCBCAGKAIAEOECIQAgBigCACIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAGIAAgACgCACgCGBECACAGQQxyIAAgACgCACgCHBECACAFIAZBHGogAiAGIAZBGGoiAyAHIARBARDiAiAGRjoAACAGKAIcIQEDQCADQQxrEOMCIgMgBkcNAAsLIAZBIGokACABCwsAIABBhKUUEPQBC/EFAQt/IwBBgAFrIgokACAKIAE2AnwgCkHUADYCECAKQQhqIgFBADYCACABIApBEGoiCSgCADYCBCABIQ0CQAJAIAMgAmtBDG0iC0HlAE8EQCALEDMiCUUNASANKAIAIQEgDSAJNgIAIAEEQCABIA0oAgQRAQALCyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAahCHAkEBIAsbBEAgACAKQfwAahCHAgRAIAUgBSgCAEECcjYCAAsMBQsCfyAAKAIAIgcoAgwiASAHKAIQRgRAIAcgBygCACgCJBEAAAwBCyABKAIACyEOIAZFBEAgBCAOIAQoAgAoAhwRAwAhDgsgEEEBaiEIQQAhESAJIQcgAiEBA0AgASADRgRAIAghECARRQ0CIAAQiQIaIAkhByACIQEgCyAMakECSQ0CA0AgASADRgRADAQFAkAgBy0AAEECRw0AIBAgASgCBCABLQALIghB/wBxIAhBgAFxQQd2G0YNACAHQQA6AAAgDEEBayEMCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACAQQQJ0IAEoAgAgASABLQALQYABcUEHdhtqKAIAIQ8CQCAGBH8gDwUgBCAPIAQoAgAoAhwRAwALIA5GBEBBASERIAggASgCBCABLQALIg9B/wBxIA9BgAFxQQd2G0cNAiAHQQI6AAAgDEEBaiEMDAELIAdBADoAAAsgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsACwAFIAdBAkEBIAEoAgQgAS0ACyIIQf8AcSAIQYABcUEHdhtFIggbOgAAIAggDGohDCALIAhrIQsgB0EBaiEHIAFBDGohAQwBCwALAAsQ1QEACwJAAkADQCACIANGDQEgCS0AAEECRwRAIAlBAWohCSACQQxqIQIMAQsLIAIhAwwBCyAFIAUoAgBBBHI2AgALIA0iACgCACEBIABBADYCACABBEAgASAAKAIEEQEACyAKQYABaiQAIAMLIAAgAC0AC0GAAXFBB3YEQCAAKAIIGiAAKAIAEDQLIAAL6gQBA38jAEHQAmsiBiQAIAYgAjYCyAIgBiABNgLMAiADKAIEEMMCIQcgAygCHCAGQdABahDlAiECIAZBxAFqIAMoAhwgBkHEAmoQ5gIgBkG4AWoiAEIANwIAIABBADYCCCAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEI8CIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDNgK0ASAGIAZBEGo2AgwgBkEANgIIA0ACQCAGQcwCaiAGQcgCahCHAg0AIAYoArQBIAMgACgCBCAALQALIgFB/wBxIAFBgAFxQQd2GyIBakYEQCAAIAFBAXQQjwIgACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCPAiAGIAAoAgAgACAALQALQYABcUEHdhsiAyABajYCtAELAn8gBigCzAIiASgCDCIIIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAgoAgALIAcgAyAGQbQBaiAGQQhqIAYoAsQCIAYoAsgBIAYtAM8BIAZBEGogBkEMaiACEOcCDQAgBkHMAmoQiQIaDAELCyAGKAIMIQICQAJAIAYoAsgBIAYtAM8BIgFB/wBxIAFBgAFxQQd2G0UNACACIAZBEGprQZ8BSg0AIAYgAkEEaiIBNgIMIAIgBigCCDYCAAwBCyACIQELIAUgAyAGKAK0ASAEIAcQxgI2AgAgBkHEAWogBkEQaiABIAQQxwIgBkHMAmogBkHIAmoQhwIEQCAEIAQoAgBBAnI2AgALIAYoAswCIQEgABC/AhogBkHEAWoQvwIaIAZB0AJqJAAgAQtzAQJ/IwBBEGsiAiQAIAIgADYCDCAAIAAoAgRBAWo2AgQgAigCDBCGAiIAQZC5E0GquRMgASAAKAIAKAIwEQYAGiACKAIMIgAgACgCBEEBayIDNgIEIANBf0YEQCAAIAAoAgAoAggRAQALIAJBEGokACABC3oBAX8jAEEQayIDJAAgAyABNgIMIAEgASgCBEEBajYCBCACIAMoAgwQ4QIiASABKAIAKAIQEQAANgIAIAAgASABKAIAKAIUEQIAIAMoAgwiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgA0EQaiQAC9wCAQJ/AkACQCADKAIAIgsgAkcNAEErIQwgACAKKAJgRwRAQS0hDCAKKAJkIABHDQELIAMgAkEBajYCACACIAw6AAAMAQsCQAJAIAYgB0H/AHEgB0GAAXFBB3YbRQ0AIAAgBUcNAEEAIQcgCSgCACIAIAhrQZ8BSg0BIAQoAgAhASAJIABBBGo2AgAgACABNgIADAILQX8hByAKIApB6ABqIAAQ6AIgCmsiBUHcAEoNACAFQQJ1IQACQAJAAkAgAUEIaw4DAAIAAQsgACABSA0BDAILIAFBEEcNACAFQdgASA0AIAIgC0YNASALIAJrQQJKDQEgC0EBay0AAEEwRw0BIARBADYCACADIAtBAWo2AgAgCyAAQZC5E2otAAA6AABBAA8LIAMgC0EBajYCACALIABBkLkTai0AADoAACAEIAQoAgBBAWo2AgBBACEHCyAHDwsgBEEANgIAQQALKgADQAJAIAAgAUcEfyAAKAIAIAJHDQEgAAUgAQsPCyAAQQRqIQAMAAsAC+oEAQN/IwBB0AJrIgYkACAGIAI2AsgCIAYgATYCzAIgAygCBBDDAiEHIAMoAhwgBkHQAWoQ5QIhAiAGQcQBaiADKAIcIAZBxAJqEOYCIAZBuAFqIgBCADcCACAAQQA2AgggACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCPAiAGIAAoAgAgACAALQALQYABcUEHdhsiAzYCtAEgBiAGQRBqNgIMIAZBADYCCANAAkAgBkHMAmogBkHIAmoQhwINACAGKAK0ASADIAAoAgQgAC0ACyIBQf8AcSABQYABcUEHdhsiAWpGBEAgACABQQF0EI8CIAAgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBCgsQjwIgBiAAKAIAIAAgAC0AC0GAAXFBB3YbIgMgAWo2ArQBCwJ/IAYoAswCIgEoAgwiCCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAIKAIACyAHIAMgBkG0AWogBkEIaiAGKALEAiAGKALIASAGLQDPASAGQRBqIAZBDGogAhDnAg0AIAZBzAJqEIkCGgwBCwsgBigCDCECAkACQCAGKALIASAGLQDPASIBQf8AcSABQYABcUEHdhtFDQAgAiAGQRBqa0GfAUoNACAGIAJBBGoiATYCDCACIAYoAgg2AgAMAQsgAiEBCyAFIAMgBigCtAEgBCAHEM0CNwMAIAZBxAFqIAZBEGogASAEEMcCIAZBzAJqIAZByAJqEIcCBEAgBCAEKAIAQQJyNgIACyAGKALMAiEBIAAQvwIaIAZBxAFqEL8CGiAGQdACaiQAIAEL6gQBA38jAEHQAmsiBiQAIAYgAjYCyAIgBiABNgLMAiADKAIEEMMCIQcgAygCHCAGQdABahDlAiECIAZBxAFqIAMoAhwgBkHEAmoQ5gIgBkG4AWoiAEIANwIAIABBADYCCCAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEI8CIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDNgK0ASAGIAZBEGo2AgwgBkEANgIIA0ACQCAGQcwCaiAGQcgCahCHAg0AIAYoArQBIAMgACgCBCAALQALIgFB/wBxIAFBgAFxQQd2GyIBakYEQCAAIAFBAXQQjwIgACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCPAiAGIAAoAgAgACAALQALQYABcUEHdhsiAyABajYCtAELAn8gBigCzAIiASgCDCIIIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAgoAgALIAcgAyAGQbQBaiAGQQhqIAYoAsQCIAYoAsgBIAYtAM8BIAZBEGogBkEMaiACEOcCDQAgBkHMAmoQiQIaDAELCyAGKAIMIQICQAJAIAYoAsgBIAYtAM8BIgFB/wBxIAFBgAFxQQd2G0UNACACIAZBEGprQZ8BSg0AIAYgAkEEaiIBNgIMIAIgBigCCDYCAAwBCyACIQELIAUgAyAGKAK0ASAEIAcQzwI7AQAgBkHEAWogBkEQaiABIAQQxwIgBkHMAmogBkHIAmoQhwIEQCAEIAQoAgBBAnI2AgALIAYoAswCIQEgABC/AhogBkHEAWoQvwIaIAZB0AJqJAAgAQvqBAEDfyMAQdACayIGJAAgBiACNgLIAiAGIAE2AswCIAMoAgQQwwIhByADKAIcIAZB0AFqEOUCIQIgBkHEAWogAygCHCAGQcQCahDmAiAGQbgBaiIAQgA3AgAgAEEANgIIIAAgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBCgsQjwIgBiAAKAIAIAAgAC0AC0GAAXFBB3YbIgM2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAIAZBzAJqIAZByAJqEIcCDQAgBigCtAEgAyAAKAIEIAAtAAsiAUH/AHEgAUGAAXFBB3YbIgFqRgRAIAAgAUEBdBCPAiAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEI8CIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDIAFqNgK0AQsCfyAGKALMAiIBKAIMIgggASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgCCgCAAsgByADIAZBtAFqIAZBCGogBigCxAIgBigCyAEgBi0AzwEgBkEQaiAGQQxqIAIQ5wINACAGQcwCahCJAhoMAQsLIAYoAgwhAgJAAkAgBigCyAEgBi0AzwEiAUH/AHEgAUGAAXFBB3YbRQ0AIAIgBkEQamtBnwFKDQAgBiACQQRqIgE2AgwgAiAGKAIINgIADAELIAIhAQsgBSADIAYoArQBIAQgBxDSAjYCACAGQcQBaiAGQRBqIAEgBBDHAiAGQcwCaiAGQcgCahCHAgRAIAQgBCgCAEECcjYCAAsgBigCzAIhASAAEL8CGiAGQcQBahC/AhogBkHQAmokACABC+oEAQN/IwBB0AJrIgYkACAGIAI2AsgCIAYgATYCzAIgAygCBBDDAiEHIAMoAhwgBkHQAWoQ5QIhAiAGQcQBaiADKAIcIAZBxAJqEOYCIAZBuAFqIgBCADcCACAAQQA2AgggACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCPAiAGIAAoAgAgACAALQALQYABcUEHdhsiAzYCtAEgBiAGQRBqNgIMIAZBADYCCANAAkAgBkHMAmogBkHIAmoQhwINACAGKAK0ASADIAAoAgQgAC0ACyIBQf8AcSABQYABcUEHdhsiAWpGBEAgACABQQF0EI8CIAAgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBCgsQjwIgBiAAKAIAIAAgAC0AC0GAAXFBB3YbIgMgAWo2ArQBCwJ/IAYoAswCIgEoAgwiCCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAIKAIACyAHIAMgBkG0AWogBkEIaiAGKALEAiAGKALIASAGLQDPASAGQRBqIAZBDGogAhDnAg0AIAZBzAJqEIkCGgwBCwsgBigCDCECAkACQCAGKALIASAGLQDPASIBQf8AcSABQYABcUEHdhtFDQAgAiAGQRBqa0GfAUoNACAGIAJBBGoiATYCDCACIAYoAgg2AgAMAQsgAiEBCyAFIAMgBigCtAEgBCAHENQCNwMAIAZBxAFqIAZBEGogASAEEMcCIAZBzAJqIAZByAJqEIcCBEAgBCAEKAIAQQJyNgIACyAGKALMAiEBIAAQvwIaIAZBxAFqEL8CGiAGQdACaiQAIAELiQUBA38gAygCHCEAIwBB8AJrIgMkACADIAI2AugCIAMgATYC7AIgA0HMAWogACADQeABaiADQdwBaiADQdgBahDuAiADQcABaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArwBIAMgA0EQajYCDCADQQA2AgggA0EBOgAHIANBxQA6AAYgAygC2AEhASADKALcASEHA0ACQCADQewCaiADQegCahCHAg0AIAMoArwBIAYgAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAakYEQCACIABBAXQQjwIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiADIAIoAgAgAiACLQALQYABcUEHdhsiBiAAajYCvAELAn8gAygC7AIiACgCDCIIIAAoAhBGBEAgACAAKAIAKAIkEQAADAELIAgoAgALIANBB2ogA0EGaiAGIANBvAFqIAcgASADQcwBaiADQRBqIANBDGogA0EIaiADQeABahDvAg0AIANB7AJqEIkCGgwBCwsgAygCDCEAAkACQCADKALQASADLQDXASIBQf8AcSABQYABcUEHdhtFDQAgAy0AB0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAK8ASAEENgCOAIAIANBzAFqIANBEGogASAEEMcCIANB7AJqIANB6AJqEIcCBEAgBCAEKAIAQQJyNgIACyADKALsAiEAIAIQvwIaIANBzAFqEL8CGiADQfACaiQAIAALrAEBAX8jAEEQayIFJAAgBSABNgIMIAEgASgCBEEBajYCBCAFKAIMEIYCIgFBkLkTQbC5EyACIAEoAgAoAjARBgAaIAMgBSgCDBDhAiIBIAEoAgAoAgwRAAA2AgAgBCABIAEoAgAoAhARAAA2AgAgACABIAEoAgAoAhQRAgAgBSgCDCIAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyAFQRBqJAALxgQAAkACQCAAIAVGBEAgAS0AAEUNAkEAIQUgAUEAOgAAIAQgBCgCACIAQQFqNgIAIABBLjoAACAHKAIEIActAAsiAEH/AHEgAEGAAXFBB3YbRQ0BIAkoAgAiACAIa0GfAUoNASAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAEEADwsCQCAAIAZHDQAgBygCBCAHLQALIgVB/wBxIAVBgAFxQQd2G0UNACABLQAARQ0CQQAhBSAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgAgCkEANgIAQQAPC0F/IQUgCyALQYABaiAAEOgCIAtrIgtB/ABKDQAgC0ECdUGQuRNqLAAAIQYCQAJAIAtBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIARwRAIABBAWssAAAiAUHfAHEgASABQeEAa0EaSRsgAiwAACIBQd8AcSABIAFB4QBrQRpJG0cNBAsgBCAAQQFqNgIAIAAgBjoAAEEADwsgAkHQADoAAAwBCyAGQd8AcSAGIAZB4QBrQRpJGyIAIAIsAABHDQAgAiAAQSByIAAgAEHBAGtBGkkbOgAAIAEtAABFDQAgAUEAOgAAIAcoAgQgBy0ACyIAQf8AcSAAQYABcUEHdhtFDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAY6AABBACEFIAtB1ABKDQAgCiAKKAIAQQFqNgIACyAFDwtBfwuJBQEDfyADKAIcIQAjAEHwAmsiAyQAIAMgAjYC6AIgAyABNgLsAiADQcwBaiAAIANB4AFqIANB3AFqIANB2AFqEO4CIANBwAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiADIAIoAgAgAiACLQALQYABcUEHdhsiBjYCvAEgAyADQRBqNgIMIANBADYCCCADQQE6AAcgA0HFADoABiADKALYASEBIAMoAtwBIQcDQAJAIANB7AJqIANB6AJqEIcCDQAgAygCvAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCPAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgK8AQsCfyADKALsAiIAKAIMIgggACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgCCgCAAsgA0EHaiADQQZqIAYgA0G8AWogByABIANBzAFqIANBEGogA0EMaiADQQhqIANB4AFqEO8CDQAgA0HsAmoQiQIaDAELCyADKAIMIQACQAJAIAMoAtABIAMtANcBIgFB/wBxIAFBgAFxQQd2G0UNACADLQAHRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArwBIAQQ2gI5AwAgA0HMAWogA0EQaiABIAQQxwIgA0HsAmogA0HoAmoQhwIEQCAEIAQoAgBBAnI2AgALIAMoAuwCIQAgAhC/AhogA0HMAWoQvwIaIANB8AJqJAAgAAugBQIDfwF+IAMoAhwhACMAQYADayIDJAAgAyACNgL4AiADIAE2AvwCIANB3AFqIAAgA0HwAWogA0HsAWogA0HoAWoQ7gIgA0HQAWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEI8CIAMgAigCACACIAItAAtBgAFxQQd2GyIGNgLMASADIANBIGo2AhwgA0EANgIYIANBAToAFyADQcUAOgAWIAMoAugBIQEgAygC7AEhBwNAAkAgA0H8AmogA0H4AmoQhwINACADKALMASAGIAIoAgQgAi0ACyIAQf8AcSAAQYABcUEHdhsiAGpGBEAgAiAAQQF0EI8CIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQjwIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgYgAGo2AswBCwJ/IAMoAvwCIgAoAgwiCCAAKAIQRgRAIAAgACgCACgCJBEAAAwBCyAIKAIACyADQRdqIANBFmogBiADQcwBaiAHIAEgA0HcAWogA0EgaiADQRxqIANBGGogA0HwAWoQ7wINACADQfwCahCJAhoMAQsLIAMoAhwhAAJAAkAgAygC4AEgAy0A5wEiAUH/AHEgAUGAAXFBB3YbRQ0AIAMtABdFDQAgACADQSBqa0GfAUoNACADIABBBGoiATYCHCAAIAMoAhg2AgAMAQsgACEBCyADIAYgAygCzAEgBBDcAiADKQMAIQkgBSADKQMINwMIIAUgCTcDACADQdwBaiADQSBqIAEgBBDHAiADQfwCaiADQfgCahCHAgRAIAQgBCgCAEECcjYCAAsgAygC/AIhACACEL8CGiADQdwBahC/AhogA0GAA2okACAAC4sFAQJ/IwBBwAJrIgAkACAAIAI2ArgCIAAgATYCvAIgAEHEAWoiB0IANwIAIAdBADYCCCAAQRBqIgYgAygCHCIBNgIAIAEgASgCBEEBajYCBCAAKAIQEIYCIgFBkLkTQaq5EyAAQdABaiABKAIAKAIwEQYAGiAAKAIQIgEgASgCBEEBayICNgIEIAJBf0YEQCABIAEoAgAoAggRAQALIABBuAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiAAIAIoAgAgAiACLQALQYABcUEHdhsiAzYCtAEgACAGNgIMIABBADYCCCADIQEDQAJAIAIgAEG8AmogAEG4AmoQhwIEfyADBSADIAEgAigCBCACLQALIgZB/wBxIAZBgAFxQQd2GyIGakYEQCACIAZBAXQQjwIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCPAiAAIAIoAgAgAiACLQALQYABcUEHdhsiASAGajYCtAELAn8gACgCvAIiAygCDCIGIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAYoAgALQRAgASAAQbQBaiAAQQhqQQAgBygCBCAHLQALIABBEGogAEEMaiAAQdABahDnAkUNASAAKAK0AQsgAWsQjwIgAigCACACIAItAAtBgAFxQQd2GyEBEMkCIQMgACAFNgIAIAEgAyAAEN4CQQFHBEAgBEEENgIACyAAQbwCaiAAQbgCahCHAgRAIAQgBCgCAEECcjYCAAsgACgCvAIhASACEL8CGiAHEL8CGiAAQcACaiQAIAEPCyAAQbwCahCJAhogACgCtAEhAwwACwALkwIBAX8jAEEgayIFJAAgBSABNgIcAkAgAi0ABEEBcUUEQCAAIAEgAiADIAQgACgCACgCGBEHACECDAELIAUgAigCHCIANgIQIAAgACgCBEEBajYCBCAFKAIQEL0CIQAgBSgCECIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACwJAIAQEQCAFQRBqIAAgACgCACgCGBECAAwBCyAFQRBqIAAgACgCACgCHBECAAsgBSAFQRBqEPQCNgIMA0AgBUEQahD1AiEAIAAgBSgCDCIBRwRAIAVBHGogASwAABD9ASAFIAUoAgxBAWo2AgwMAQUgBSgCHCECIAVBEGoQvwIaCwsLIAVBIGokACACCzoBAX8gACgCACAAIAAtAAtBgAFxQQd2GyEBIwBBEGsiACQAIAAgATYCDCAAKAIMIQEgAEEQaiQAIAELVAEBfyAAKAIAIAAgAC0ACyIBQYABcUEHdhsgACgCBCABIgBB/wBxIABBgAFxQQd2G2ohASMAQRBrIgAkACAAIAE2AgwgACgCDCEBIABBEGokACABC94BAQR/IwBBQGoiACQAIABCJTcDOCAAQThqIgVBAXJBsbkTQQEgAigCBBD3AhDJAiEGIAAgBDYCACAAQStqIgQgBEENIAYgBSAAEPgCIARqIgcgAigCBBD5AiEIIABBBGoiBSACKAIcIgY2AgAgBiAGKAIEQQFqNgIEIAQgCCAHIABBEGoiBiAAQQxqIABBCGogBRD6AiAFKAIAIgQgBCgCBEEBayIFNgIEIAVBf0YEQCAEIAQoAgAoAggRAQALIAEgBiAAKAIMIAAoAgggAiADEKkBIQEgAEFAayQAIAELrAEBAX8CQCADQYAQcUUNACADQcoAcSIEQQhGDQAgBEHAAEYNACACRQ0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALYwEBfyMAQRBrIgUkACAFIAQ2AgwgBUEIaiACEN8CIQIgACABIAMgBSgCDBDRASEBIAIoAgAiAARAQcyZFCgCABogAARAQcyZFEHcohQgACAAQX9GGzYCAAsLIAVBEGokACABC2EAIAJBsAFxIgJBIEYEQCABDwsCQCACQRBHDQACQAJAIAAtAAAiAkEraw4DAAEAAQsgAEEBag8LIAEgAGtBAkgNACACQTBHDQAgAC0AAUEgckH4AEcNACAAQQJqIQALIAAL7gQBCH8jAEEQayILJAAgBigCABDzASEKIAtBBGogBigCABC9AiIGIAYoAgAoAhQRAgACQCALKAIIIAstAA8iB0H/AHEgB0GAAXFBB3YbRQRAIAogACACIAMgCigCACgCIBEGABogBSADIAIgAGtqIgY2AgAMAQsgBSADNgIAAkACQCAAIgctAAAiCEEraw4DAAEAAQsgCiAIwCAKKAIAKAIcEQMAIQcgBSAFKAIAIghBAWo2AgAgCCAHOgAAIABBAWohBwsCQCACIAdrQQJIDQAgBy0AAEEwRw0AIActAAFBIHJB+ABHDQAgCkEwIAooAgAoAhwRAwAhCCAFIAUoAgAiCUEBajYCACAJIAg6AAAgCiAHLAABIAooAgAoAhwRAwAhCCAFIAUoAgAiCUEBajYCACAJIAg6AAAgB0ECaiEHCyAHIAIQ+wJBACEJIAYgBigCACgCEBEAACENQQAhCCAHIQYDfyACIAZNBH8gAyAHIABraiAFKAIAEPsCIAUoAgAFAkAgCCALQQRqIgwoAgAgDCAMLQALQYABcUEHdhtqLQAARQ0AIAkgCCALQQRqIgwoAgAgDCAMLQALQYABcUEHdhtqLAAARw0AIAUgBSgCACIJQQFqNgIAIAkgDToAACAIIAggCygCCCALLQAPIglB/wBxIAlBgAFxQQd2G0EBa0lqIQhBACEJCyAKIAYsAAAgCigCACgCHBEDACEMIAUgBSgCACIOQQFqNgIAIA4gDDoAACAGQQFqIQYgCUEBaiEJDAELCyEGCyAEIAYgAyABIABraiABIAJGGzYCACALQQRqEL8CGiALQRBqJAALPwEBfwJAIAAgAUYNAANAIAAgAUEBayIBTw0BIAAtAAAhAiAAIAEtAAA6AAAgASACOgAAIABBAWohAAwACwALC+EBAQV/IwBB8ABrIgAkACAAQiU3A2ggAEHoAGoiBkEBckHFPkEBIAIoAgQQ9wIQyQIhByAAIAQ3AwAgAEHQAGoiBSAFQRggByAGIAAQ+AIgBWoiCCACKAIEEPkCIQkgAEEUaiIGIAIoAhwiBzYCACAHIAcoAgRBAWo2AgQgBSAJIAggAEEgaiIHIABBHGogAEEYaiAGEPoCIAYoAgAiBSAFKAIEQQFrIgY2AgQgBkF/RgRAIAUgBSgCACgCCBEBAAsgASAHIAAoAhwgACgCGCACIAMQqQEhASAAQfAAaiQAIAEL3gEBBH8jAEFAaiIAJAAgAEIlNwM4IABBOGoiBUEBckGxuRNBACACKAIEEPcCEMkCIQYgACAENgIAIABBK2oiBCAEQQ0gBiAFIAAQ+AIgBGoiByACKAIEEPkCIQggAEEEaiIFIAIoAhwiBjYCACAGIAYoAgRBAWo2AgQgBCAIIAcgAEEQaiIGIABBDGogAEEIaiAFEPoCIAUoAgAiBCAEKAIEQQFrIgU2AgQgBUF/RgRAIAQgBCgCACgCCBEBAAsgASAGIAAoAgwgACgCCCACIAMQqQEhASAAQUBrJAAgAQvhAQEFfyMAQfAAayIAJAAgAEIlNwNoIABB6ABqIgZBAXJBxT5BACACKAIEEPcCEMkCIQcgACAENwMAIABB0ABqIgUgBUEYIAcgBiAAEPgCIAVqIgggAigCBBD5AiEJIABBFGoiBiACKAIcIgc2AgAgByAHKAIEQQFqNgIEIAUgCSAIIABBIGoiByAAQRxqIABBGGogBhD6AiAGKAIAIgUgBSgCBEEBayIGNgIEIAZBf0YEQCAFIAUoAgAoAggRAQALIAEgByAAKAIcIAAoAhggAiADEKkBIQEgAEHwAGokACABC4EFAQd/An8gASEJIwBB0AFrIgUkACAFQiU3A8gBIAVByAFqQQFyQe3mEiACKAIEEIADIQcgBSAFQaABajYCnAEQyQIhAAJ/IAcEQCACKAIIIQEgBSAEOQMoIAUgATYCICAFQaABakEeIAAgBUHIAWogBUEgahD4AgwBCyAFIAQ5AzAgBUGgAWpBHiAAIAVByAFqIAVBMGoQ+AILIQYgBUHUADYCUCAFQZQBaiIIQQA2AgAgCCAFKAJQNgIEIAVBoAFqIgEhAAJAIAZBHk4EQBDJAiEAAn8gBwRAIAIoAgghBiAFIAQ5AwggBSAGNgIAIAVBnAFqIAAgBUHIAWogBRCBAwwBCyAFIAQ5AxAgBUGcAWogACAFQcgBaiAFQRBqEIEDCyIGQX9GDQEgCCgCACEHIAggBSgCnAEiADYCACAHBEAgByAIKAIEEQEACwsgACAAIAZqIgogAigCBBD5AiELIAVB1AA2AlAgBUEANgJIIAUgBSgCUDYCTAJAIAVBoAFqIABGBEAgBUHQAGohBgwBCyAGQQF0EDMiBkUNASAFKAJIIQEgBSAGNgJIIAEEQCABIAUoAkwRAQALIAAhAQsgBUE8aiIAIAIoAhwiBzYCACAHIAcoAgRBAWo2AgQgASALIAogBiAFQcQAaiAFQUBrIAAQggMgACgCACIAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyAJIAYgBSgCRCAFKAJAIAIgAxCpASEBIAUoAkghACAFQQA2AkggAARAIAAgBSgCTBEBAAsgCCgCACEAIAhBADYCACAABEAgACAIKAIEEQEACyAFQdABaiQAIAEMAQsQ1QEACwvQAQECfyACQYAQcQRAIABBKzoAACAAQQFqIQALIAJBgAhxBEAgAEEjOgAAIABBAWohAAsgAkGEAnEiA0GEAkcEQCAAQa7UADsAACAAQQJqIQALIAJBgIABcSECA0AgAS0AACIEBEAgACAEOgAAIABBAWohACABQQFqIQEMAQsLIAACfwJAIANBgAJHBEAgA0EERw0BQcYAQeYAIAIbDAILQcUAQeUAIAIbDAELQcEAQeEAIAIbIANBhAJGDQAaQccAQecAIAIbCzoAACADQYQCRwu2AQEDfyMAQRBrIgQkACAEIAM2AgwgBEEIaiABEN8CIQYgBCgCDCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQMyIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAgBigCACIABEBBzJkUKAIAGiAABEBBzJkUQdyiFCAAIABBf0YbNgIACwsgBEEQaiQAIAUL9gYBCn8jAEEQayIKJAAgBigCABDzASEJIApBBGogBigCABC9AiINIgYgBigCACgCFBECACAFIAM2AgACQAJAIAAiCC0AACIGQStrDgMAAQABCyAJIAbAIAkoAgAoAhwRAwAhBiAFIAUoAgAiB0EBajYCACAHIAY6AAAgAEEBaiEICwJAAkAgAiAIIgZrQQFMDQAgCC0AAEEwRw0AIAgtAAFBIHJB+ABHDQAgCUEwIAkoAgAoAhwRAwAhBiAFIAUoAgAiB0EBajYCACAHIAY6AAAgCSAILAABIAkoAgAoAhwRAwAhBiAFIAUoAgAiB0EBajYCACAHIAY6AAAgCEECaiIIIQYDQCACIAZNDQIgBiwAACEHEMkCGiAHQTBrQQpJIAdBIHJB4QBrQQZJckUNAiAGQQFqIQYMAAsACwNAIAIgBk0NASAGLAAAIQcQyQIaIAdBMGtBCk8NASAGQQFqIQYMAAsACwJAIAooAgggCi0ADyIHQf8AcSAHQYABcUEHdhtFBEAgCSAIIAYgBSgCACAJKAIAKAIgEQYAGiAFIAUoAgAgBiAIa2o2AgAMAQsgCCAGEPsCIA0gDSgCACgCEBEAACEPIAghBwNAIAYgB00EQCADIAggAGtqIAUoAgAQ+wIFAkAgDiAKQQRqIgsoAgAgCyALLQALQYABcUEHdhtqLAAAQQBMDQAgDCAOIApBBGoiCygCACALIAstAAtBgAFxQQd2G2osAABHDQAgBSAFKAIAIgxBAWo2AgAgDCAPOgAAIA4gDiAKKAIIIAotAA8iDEH/AHEgDEGAAXFBB3YbQQFrSWohDkEAIQwLIAkgBywAACAJKAIAKAIcEQMAIQsgBSAFKAIAIhBBAWo2AgAgECALOgAAIAdBAWohByAMQQFqIQwMAQsLCwNAAkACQCACIAZNBEAgBiEHDAELIAZBAWohByAGLQAAIgZBLkcNASANIA0oAgAoAgwRAAAhBiAFIAUoAgAiCEEBajYCACAIIAY6AAALIAkgByACIAUoAgAgCSgCACgCIBEGABogBSAFKAIAIAIgB2tqIgU2AgAgBCAFIAMgASAAa2ogASACRhs2AgAgCkEEahC/AhogCkEQaiQADwsgCSAGwCAJKAIAKAIcEQMAIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAAIAchBgwACwALpwUBB38CfyABIQojAEGAAmsiBiQAIAZCJTcD+AEgBkH4AWpBAXJBiMUAIAIoAgQQgAMhCCAGIAZB0AFqNgLMARDJAiEAAn8gCARAIAIoAgghASAGQUBrIAU3AwAgBiAENwM4IAYgATYCMCAGQdABakEeIAAgBkH4AWogBkEwahD4AgwBCyAGIAQ3A1AgBiAFNwNYIAZB0AFqQR4gACAGQfgBaiAGQdAAahD4AgshByAGQdQANgKAASAGQcQBaiIJQQA2AgAgCSAGKAKAATYCBCAGQdABaiIBIQACQCAHQR5OBEAQyQIhAAJ/IAgEQCACKAIIIQcgBiAFNwMQIAYgBDcDCCAGIAc2AgAgBkHMAWogACAGQfgBaiAGEIEDDAELIAYgBDcDICAGIAU3AyggBkHMAWogACAGQfgBaiAGQSBqEIEDCyIHQX9GDQEgCSgCACEIIAkgBigCzAEiADYCACAIBEAgCCAJKAIEEQEACwsgACAAIAdqIgsgAigCBBD5AiEMIAZB1AA2AoABIAZBADYCeCAGIAYoAoABNgJ8AkAgBkHQAWogAEYEQCAGQYABaiEHDAELIAdBAXQQMyIHRQ0BIAYoAnghASAGIAc2AnggAQRAIAEgBigCfBEBAAsgACEBCyAGQewAaiIAIAIoAhwiCDYCACAIIAgoAgRBAWo2AgQgASAMIAsgByAGQfQAaiAGQfAAaiAAEIIDIAAoAgAiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgCiAHIAYoAnQgBigCcCACIAMQqQEhASAGKAJ4IQAgBkEANgJ4IAAEQCAAIAYoAnwRAQALIAkoAgAhACAJQQA2AgAgAARAIAAgCSgCBBEBAAsgBkGAAmokACABDAELENUBAAsL1gEBB38jAEHgAGsiACQAEMkCIQUgACAENgIAIABBQGsiBiAGIAZBFCAFQco9IAAQ+AIiCmoiByACKAIEEPkCIQggAEEQaiIEIAIoAhwiBTYCACAFIAUoAgRBAWo2AgQgACgCEBDzASEJIAQoAgAiBSAFKAIEQQFrIgs2AgQgC0F/RgRAIAUgBSgCACgCCBEBAAsgCSAGIAcgBCAJKAIAKAIgEQYAGiABIAQgBCAKaiIBIAggAGsgAGpBMGsgByAIRhsgASACIAMQqQEhASAAQeAAaiQAIAELkwIBAX8jAEEgayIFJAAgBSABNgIcAkAgAi0ABEEBcUUEQCAAIAEgAiADIAQgACgCACgCGBEHACECDAELIAUgAigCHCIANgIQIAAgACgCBEEBajYCBCAFKAIQEOECIQAgBSgCECIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACwJAIAQEQCAFQRBqIAAgACgCACgCGBECAAwBCyAFQRBqIAAgACgCACgCHBECAAsgBSAFQRBqEPQCNgIMA0AgBUEQahCGAyEAIAAgBSgCDCIBRwRAIAVBHGogASgCABCLAiAFIAUoAgxBBGo2AgwMAQUgBSgCHCECIAVBEGoQ4wIaCwsLIAVBIGokACACC1cBAX8gACgCACAAIAAtAAsiAUGAAXFBB3YbIAAoAgQgASIAQf8AcSAAQYABcUEHdhtBAnRqIQEjAEEQayIAJAAgACABNgIMIAAoAgwhASAAQRBqJAAgAQvjAQEEfyMAQZABayIAJAAgAEIlNwOIASAAQYgBaiIFQQFyQbG5E0EBIAIoAgQQ9wIQyQIhBiAAIAQ2AgAgAEH7AGoiBCAEQQ0gBiAFIAAQ+AIgBGoiByACKAIEEPkCIQggAEEEaiIFIAIoAhwiBjYCACAGIAYoAgRBAWo2AgQgBCAIIAcgAEEQaiIGIABBDGogAEEIaiAFEIgDIAUoAgAiBCAEKAIEQQFrIgU2AgQgBUF/RgRAIAQgBCgCACgCCBEBAAsgASAGIAAoAgwgACgCCCACIAMQiQMhASAAQZABaiQAIAEL9wQBCH8jAEEQayILJAAgBigCABCGAiEKIAtBBGogBigCABDhAiIGIAYoAgAoAhQRAgACQCALKAIIIAstAA8iB0H/AHEgB0GAAXFBB3YbRQRAIAogACACIAMgCigCACgCMBEGABogBSADIAIgAGtBAnRqIgY2AgAMAQsgBSADNgIAAkACQCAAIgctAAAiCEEraw4DAAEAAQsgCiAIwCAKKAIAKAIsEQMAIQcgBSAFKAIAIghBBGo2AgAgCCAHNgIAIABBAWohBwsCQCACIAdrQQJIDQAgBy0AAEEwRw0AIActAAFBIHJB+ABHDQAgCkEwIAooAgAoAiwRAwAhCCAFIAUoAgAiCUEEajYCACAJIAg2AgAgCiAHLAABIAooAgAoAiwRAwAhCCAFIAUoAgAiCUEEajYCACAJIAg2AgAgB0ECaiEHCyAHIAIQ+wJBACEJIAYgBigCACgCEBEAACENQQAhCCAHIQYDfyACIAZNBH8gAyAHIABrQQJ0aiAFKAIAEMsCIAUoAgAFAkAgCCALQQRqIgwoAgAgDCAMLQALQYABcUEHdhtqLQAARQ0AIAkgCCALQQRqIgwoAgAgDCAMLQALQYABcUEHdhtqLAAARw0AIAUgBSgCACIJQQRqNgIAIAkgDTYCACAIIAggCygCCCALLQAPIglB/wBxIAlBgAFxQQd2G0EBa0lqIQhBACEJCyAKIAYsAAAgCigCACgCLBEDACEMIAUgBSgCACIOQQRqNgIAIA4gDDYCACAGQQFqIQYgCUEBaiEJDAELCyEGCyAEIAYgAyABIABrQQJ0aiABIAJGGzYCACALQQRqEL8CGiALQRBqJAAL2wEBBH8jAEEQayIIJAACQCAARQ0AIAQoAgwhBiACIAFrIgdBAEoEQCAAIAEgB0ECdiIHIAAoAgAoAjARBAAgB0cNAQsgBiADIAFrQQJ1IgFrQQAgASAGSBsiAUEASgRAIAAgCEEEaiABIAUQigMiBSgCACAFIAUtAAtBgAFxQQd2GyABIAAoAgAoAjARBAAhBiAFEOMCGiABIAZHDQELIAMgAmsiAUEASgRAIAAgAiABQQJ2IgEgACgCACgCMBEEACABRw0BCyAEQQA2AgwgACEJCyAIQRBqJAAgCQvlAQEEfyAAIQQjAEEQayIFJAACQCABQfD///8DSQRAAkAgAUECSQRAIAQgAToACwwBCyAFQQhqIAFBAk8EfyABQQRqQXxxIgMgA0EBayIDIANBAkYbBUEBC0EBahC5AiAEIAUoAggiAzYCACAEIAUoAgxBgICAgHhyNgIIIAQgATYCBCADIQQLIwBBEGsiBiQAIAYgAjYCDCAEIQIgASEDA0AgAwRAIAIgBigCDDYCACADQQFrIQMgAkEEaiECDAELCyAGQRBqJAAgAUECdCAEakEANgIAIAVBEGokAAwBCxBVAAsgAAviAQEFfyMAQYACayIAJAAgAEIlNwP4ASAAQfgBaiIGQQFyQcU+QQEgAigCBBD3AhDJAiEHIAAgBDcDACAAQeABaiIFIAVBGCAHIAYgABD4AiAFaiIIIAIoAgQQ+QIhCSAAQRRqIgYgAigCHCIHNgIAIAcgBygCBEEBajYCBCAFIAkgCCAAQSBqIgcgAEEcaiAAQRhqIAYQiAMgBigCACIFIAUoAgRBAWsiBjYCBCAGQX9GBEAgBSAFKAIAKAIIEQEACyABIAcgACgCHCAAKAIYIAIgAxCJAyEBIABBgAJqJAAgAQvjAQEEfyMAQZABayIAJAAgAEIlNwOIASAAQYgBaiIFQQFyQbG5E0EAIAIoAgQQ9wIQyQIhBiAAIAQ2AgAgAEH7AGoiBCAEQQ0gBiAFIAAQ+AIgBGoiByACKAIEEPkCIQggAEEEaiIFIAIoAhwiBjYCACAGIAYoAgRBAWo2AgQgBCAIIAcgAEEQaiIGIABBDGogAEEIaiAFEIgDIAUoAgAiBCAEKAIEQQFrIgU2AgQgBUF/RgRAIAQgBCgCACgCCBEBAAsgASAGIAAoAgwgACgCCCACIAMQiQMhASAAQZABaiQAIAEL4gEBBX8jAEGAAmsiACQAIABCJTcD+AEgAEH4AWoiBkEBckHFPkEAIAIoAgQQ9wIQyQIhByAAIAQ3AwAgAEHgAWoiBSAFQRggByAGIAAQ+AIgBWoiCCACKAIEEPkCIQkgAEEUaiIGIAIoAhwiBzYCACAHIAcoAgRBAWo2AgQgBSAJIAggAEEgaiIHIABBHGogAEEYaiAGEIgDIAYoAgAiBSAFKAIEQQFrIgY2AgQgBkF/RgRAIAUgBSgCACgCCBEBAAsgASAHIAAoAhwgACgCGCACIAMQiQMhASAAQYACaiQAIAELgQUBB38CfyABIQkjAEHwAmsiBSQAIAVCJTcD6AIgBUHoAmpBAXJB7eYSIAIoAgQQgAMhByAFIAVBwAJqNgK8AhDJAiEAAn8gBwRAIAIoAgghASAFIAQ5AyggBSABNgIgIAVBwAJqQR4gACAFQegCaiAFQSBqEPgCDAELIAUgBDkDMCAFQcACakEeIAAgBUHoAmogBUEwahD4AgshBiAFQdQANgJQIAVBtAJqIghBADYCACAIIAUoAlA2AgQgBUHAAmoiASEAAkAgBkEeTgRAEMkCIQACfyAHBEAgAigCCCEGIAUgBDkDCCAFIAY2AgAgBUG8AmogACAFQegCaiAFEIEDDAELIAUgBDkDECAFQbwCaiAAIAVB6AJqIAVBEGoQgQMLIgZBf0YNASAIKAIAIQcgCCAFKAK8AiIANgIAIAcEQCAHIAgoAgQRAQALCyAAIAAgBmoiCiACKAIEEPkCIQsgBUHUADYCUCAFQQA2AkggBSAFKAJQNgJMAkAgBUHAAmogAEYEQCAFQdAAaiEGDAELIAZBA3QQMyIGRQ0BIAUoAkghASAFIAY2AkggAQRAIAEgBSgCTBEBAAsgACEBCyAFQTxqIgAgAigCHCIHNgIAIAcgBygCBEEBajYCBCABIAsgCiAGIAVBxABqIAVBQGsgABCPAyAAKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAkgBiAFKAJEIAUoAkAgAiADEIkDIQEgBSgCSCEAIAVBADYCSCAABEAgACAFKAJMEQEACyAIKAIAIQAgCEEANgIAIAAEQCAAIAgoAgQRAQALIAVB8AJqJAAgAQwBCxDVAQALC4YHAQp/IwBBEGsiCyQAIAYoAgAQhgIhCSALQQRqIAYoAgAQ4QIiDSIGIAYoAgAoAhQRAgAgBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCSAGwCAJKAIAKAIsEQMAIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIABBAWohCAsCQAJAIAIgCCIGa0EBTA0AIAgtAABBMEcNACAILQABQSByQfgARw0AIAlBMCAJKAIAKAIsEQMAIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIAkgCCwAASAJKAIAKAIsEQMAIQYgBSAFKAIAIgdBBGo2AgAgByAGNgIAIAhBAmoiCCEGA0AgAiAGTQ0CIAYsAAAhBxDJAhogB0Ewa0EKSSAHQSByQeEAa0EGSXJFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAACEHEMkCGiAHQTBrQQpPDQEgBkEBaiEGDAALAAsCQCALKAIIIAstAA8iB0H/AHEgB0GAAXFBB3YbRQRAIAkgCCAGIAUoAgAgCSgCACgCMBEGABogBSAFKAIAIAYgCGtBAnRqNgIADAELIAggBhD7AiANIA0oAgAoAhARAAAhDyAIIQcDQCAGIAdNBEAgAyAIIABrQQJ0aiAFKAIAEMsCBQJAIA4gC0EEaiIMKAIAIAwgDC0AC0GAAXFBB3YbaiwAAEEATA0AIAogDiALQQRqIgwoAgAgDCAMLQALQYABcUEHdhtqLAAARw0AIAUgBSgCACIKQQRqNgIAIAogDzYCACAOIA4gCygCCCALLQAPIgpB/wBxIApBgAFxQQd2G0EBa0lqIQ5BACEKCyAJIAcsAAAgCSgCACgCLBEDACEMIAUgBSgCACIQQQRqNgIAIBAgDDYCACAHQQFqIQcgCkEBaiEKDAELCwsCQAJAA0AgAiAGTQ0BIAZBAWohByAGLQAAIgZBLkcEQCAJIAbAIAkoAgAoAiwRAwAhBiAFIAUoAgAiCEEEajYCACAIIAY2AgAgByEGDAELCyANIA0oAgAoAgwRAAAhBiAFIAUoAgAiCEEEaiIKNgIAIAggBjYCAAwBCyAFKAIAIQogBiEHCyAJIAcgAiAKIAkoAgAoAjARBgAaIAUgBSgCACACIAdrQQJ0aiIFNgIAIAQgBSADIAEgAGtBAnRqIAEgAkYbNgIAIAtBBGoQvwIaIAtBEGokAAunBQEHfwJ/IAEhCiMAQaADayIGJAAgBkIlNwOYAyAGQZgDakEBckGIxQAgAigCBBCAAyEIIAYgBkHwAmo2AuwCEMkCIQACfyAIBEAgAigCCCEBIAZBQGsgBTcDACAGIAQ3AzggBiABNgIwIAZB8AJqQR4gACAGQZgDaiAGQTBqEPgCDAELIAYgBDcDUCAGIAU3A1ggBkHwAmpBHiAAIAZBmANqIAZB0ABqEPgCCyEHIAZB1AA2AoABIAZB5AJqIglBADYCACAJIAYoAoABNgIEIAZB8AJqIgEhAAJAIAdBHk4EQBDJAiEAAn8gCARAIAIoAgghByAGIAU3AxAgBiAENwMIIAYgBzYCACAGQewCaiAAIAZBmANqIAYQgQMMAQsgBiAENwMgIAYgBTcDKCAGQewCaiAAIAZBmANqIAZBIGoQgQMLIgdBf0YNASAJKAIAIQggCSAGKALsAiIANgIAIAgEQCAIIAkoAgQRAQALCyAAIAAgB2oiCyACKAIEEPkCIQwgBkHUADYCgAEgBkEANgJ4IAYgBigCgAE2AnwCQCAGQfACaiAARgRAIAZBgAFqIQcMAQsgB0EDdBAzIgdFDQEgBigCeCEBIAYgBzYCeCABBEAgASAGKAJ8EQEACyAAIQELIAZB7ABqIgAgAigCHCIINgIAIAggCCgCBEEBajYCBCABIAwgCyAHIAZB9ABqIAZB8ABqIAAQjwMgACgCACIAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyAKIAcgBigCdCAGKAJwIAIgAxCJAyEBIAYoAnghACAGQQA2AnggAARAIAAgBigCfBEBAAsgCSgCACEAIAlBADYCACAABEAgACAJKAIEEQEACyAGQaADaiQAIAEMAQsQ1QEACwveAQEHfyMAQdABayIAJAAQyQIhBSAAIAQ2AgAgAEGwAWoiBiAGIAZBFCAFQco9IAAQ+AIiCmoiByACKAIEEPkCIQggAEEQaiIEIAIoAhwiBTYCACAFIAUoAgRBAWo2AgQgACgCEBCGAiEJIAQoAgAiBSAFKAIEQQFrIgs2AgQgC0F/RgRAIAUgBSgCACgCCBEBAAsgCSAGIAcgBCAJKAIAKAIwEQYAGiABIAQgCkECdCAEaiIBIAggAGtBAnQgAGpBsAVrIAcgCEYbIAEgAiADEIkDIQEgAEHQAWokACABC80FAQN/IwBBEGsiCCQAIAggAjYCCCAIIAE2AgwgCCADKAIcIgE2AgQgASABKAIEQQFqNgIEIAgoAgQQ8wEhCSAIKAIEIgEgASgCBEEBayICNgIEIAJBf0YEQCABIAEoAgAoAggRAQALQQAhAiAEQQA2AgACQANAIAYgB0YNASACDQECQCAIQQxqIAhBCGoQ9QENAAJAIAkgBiwAAEEAIAkoAgAoAiQRBABBJUYEQCAGQQFqIgIgB0YNAgJ/AkAgCSACLAAAQQAgCSgCACgCJBEEACIBQcUARg0AQQAhCiABQf8BcUEwRg0AIAYhAiABDAELIAZBAmogB0YNAyABIQogCSAGLAACQQAgCSgCACgCJBEEAAshASAIIAAgCCgCDCAIKAIIIAMgBCAFIAEgCiAAKAIAKAIkEQsANgIMIAJBAmohBgwBCyAJKAIIIQEgBiwAACICQQBOBH8gASACQf8BcUECdGooAgBBAXEFQQALBEADQAJAIAcgBkEBaiIGRgRAIAchBgwBCyAGLAAAIgJBAE4EfyABIAJB/wFxQQJ0aigCAEEBcQVBAAsNAQsLA0AgCEEMaiAIQQhqEPUBDQICfyAIKAIMIgEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEAAAwBCyACLQAAC8AhASAJKAIIIQIgAUEATgR/IAIgAUH/AXFBAnRqKAIAQQFxBUEAC0UNAiAIQQxqEPcBGgwACwALIAkCfyAIKAIMIgEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEAAAwBCyACLQAAC8AgCSgCACgCDBEDACAJIAYsAAAgCSgCACgCDBEDAEYEQCAGQQFqIQYgCEEMahD3ARoMAQsgBEEENgIACyAEKAIAIQIMAQsLIARBBDYCAAsgCEEMaiAIQQhqEPUBBEAgBCAEKAIAQQJyNgIACyAIKAIMIQAgCEEQaiQAIAALBABBAgtAAQF/IwBBEGsiBiQAIAZCpZDpqdLJzpLTADcDCCAAIAEgAiADIAQgBSAGQQhqIAZBEGoiARCSAyEAIAEkACAAC1MAIAAgASACIAMgBCAFIABBCGogACgCCCgCFBEAACIAKAIAIAAgAC0ACyICQYABcUEHdhsiASABIAAoAgQgAiIAQf8AcSAAQYABcUEHdhtqEJIDC4UBAQJ/IwBBEGsiBiQAIAYgATYCDCAGIAMoAhwiATYCCCABIAEoAgRBAWo2AgQgBigCCBDzASEDIAYoAggiASABKAIEQQFrIgc2AgQgB0F/RgRAIAEgASgCACgCCBEBAAsgACAFQRhqIAZBDGogAiAEIAMQlwMgBigCDCEAIAZBEGokACAAC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABC+AiAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLhQEBAn8jAEEQayIGJAAgBiABNgIMIAYgAygCHCIBNgIIIAEgASgCBEEBajYCBCAGKAIIEPMBIQMgBigCCCIBIAEoAgRBAWsiBzYCBCAHQX9GBEAgASABKAIAKAIIEQEACyAAIAVBEGogBkEMaiACIAQgAxCZAyAGKAIMIQAgBkEQaiQAIAALQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEL4CIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwuDAQEBfyMAQRBrIgAkACAAIAE2AgwgACADKAIcIgE2AgggASABKAIEQQFqNgIEIAAoAggQ8wEhAyAAKAIIIgEgASgCBEEBayIGNgIEIAZBf0YEQCABIAEoAgAoAggRAQALIAVBFGogAEEMaiACIAQgAxCbAyAAKAIMIQEgAEEQaiQAIAELQgAgASACIAMgBEEEEJwDIQEgAy0AAEEEcUUEQCAAIAFB0A9qIAFB7A5qIAEgAUHkAEgbIAFBxQBIG0HsDms2AgALC+cCAQR/IwBBEGsiByQAIAcgATYCDEEAIQFBBiEFAkACQCAAIAdBDGoQ9QENAAJ/IAAoAgAiBSgCDCIGIAUoAhBGBEAgBSAFKAIAKAIkEQAADAELIAYtAAALwCEGQQQhBSADKAIIIQggBkEATgR/IAggBkH/AXFBAnRqKAIAQcAAcUEARwVBAAtFDQAgAyAGQQAgAygCACgCJBEEACEBA0ACQCABQTBrIQEgABD3ASIGIAdBDGoQ9QENACAEQQJIDQACfyAGKAIAIgUoAgwiBiAFKAIQRgRAIAUgBSgCACgCJBEAAAwBCyAGLQAAC8AhBSADKAIIIQYgBUEATgR/IAYgBUH/AXFBAnRqKAIAQcAAcUEARwVBAAtFDQMgBEEBayEEIAMgBUEAIAMoAgAoAiQRBAAgAUEKbGohAQwBCwtBAiEFIAYgB0EMahD1AUUNAQsgAiACKAIAIAVyNgIACyAHQRBqJAAgAQvdDgEDfyMAQRBrIgckACAHIAE2AgwgBEEANgIAIAcgAygCHCIINgIAIAggCCgCBEEBajYCBCAHKAIAEPMBIQggBygCACIJIAkoAgRBAWsiCjYCBCAKQX9GBEAgCSAJKAIAKAIIEQEACwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAGQcEAaw45AAEXBBcFFwYHFxcXChcXFxcODxAXFxcTFRcXFxcXFxcAAQIDAxcXARcIFxcJCxcMFw0XCxcXERIUFgsgACAFQRhqIAdBDGogAiAEIAgQlwMMGAsgACAFQRBqIAdBDGogAiAEIAgQmQMMFwsgByAAIAEgAiADIAQgBSAAQQhqIAAoAggoAgwRAAAiACgCACAAIAAtAAsiAUGAAXFBB3YbIgIgAiAAKAIEIAFB/wBxIAFBgAFxQQd2G2oQkgM2AgwMFgsgB0EMaiACIAQgCEECEJwDIQAgBCgCACEBAkACQCAAQQFrQR5LDQAgAUEEcQ0AIAUgADYCDAwBCyAEIAFBBHI2AgALDBULIAdCpdq9qcLsy5L5ADcDACAHIAAgASACIAMgBCAFIAcgB0EIahCSAzYCDAwUCyAHQqWytanSrcuS5AA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQkgM2AgwMEwsgB0EMaiACIAQgCEECEJwDIQAgBCgCACEBAkACQCAAQRdKDQAgAUEEcQ0AIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBDGogAiAEIAhBAhCcAyEAIAQoAgAhAQJAAkAgAEEBa0ELSw0AIAFBBHENACAFIAA2AggMAQsgBCABQQRyNgIACwwRCyAHQQxqIAIgBCAIQQMQnAMhACAEKAIAIQECQAJAIABB7QJKDQAgAUEEcQ0AIAUgADYCHAwBCyAEIAFBBHI2AgALDBALIAdBDGogAiAEIAhBAhCcAyEBIAQoAgAhAAJAAkAgAUEBayIBQQtLDQAgAEEEcQ0AIAUgATYCEAwBCyAEIABBBHI2AgALDA8LIAdBDGogAiAEIAhBAhCcAyEAIAQoAgAhAQJAAkAgAEE7Sg0AIAFBBHENACAFIAA2AgQMAQsgBCABQQRyNgIACwwOCyAHQQxqIQAjAEEQayIBJAAgASACNgIMA0ACQCAAIAFBDGoQ9QENAAJ/IAAoAgAiAigCDCIDIAIoAhBGBEAgAiACKAIAKAIkEQAADAELIAMtAAALwCECIAgoAgghAyACQQBOBH8gAyACQf8BcUECdGooAgBBAXEFQQALRQ0AIAAQ9wEaDAELCyAAIAFBDGoQ9QEEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQQxqIQECQCAAQQhqIAAoAggoAggRAAAiACgCBCAALQALIgNB/wBxIANBgAFxQQd2G0EAIAAoAhAgAC0AFyIDQf8AcSADQYABcUEHdhtrRgRAIAQgBCgCAEEEcjYCAAwBCyABIAIgACAAQRhqIAggBEEAEL4CIQIgBSgCCCEBAkAgACACRw0AIAFBDEcNACAFQQA2AggMAQsCQCACIABrQQxHDQAgAUELSg0AIAUgAUEMajYCCAsLDAwLIAdBurkTKAAANgAHIAdBs7kTKQAANwMAIAcgACABIAIgAyAEIAUgByAHQQtqEJIDNgIMDAsLIAdBwrkTLQAAOgAEIAdBvrkTKAAANgIAIAcgACABIAIgAyAEIAUgByAHQQVqEJIDNgIMDAoLIAdBDGogAiAEIAhBAhCcAyEAIAQoAgAhAQJAAkAgAEE8Sg0AIAFBBHENACAFIAA2AgAMAQsgBCABQQRyNgIACwwJCyAHQqWQ6anSyc6S0wA3AwAgByAAIAEgAiADIAQgBSAHIAdBCGoQkgM2AgwMCAsgB0EMaiACIAQgCEEBEJwDIQAgBCgCACEBAkACQCAAQQZKDQAgAUEEcQ0AIAUgADYCGAwBCyAEIAFBBHI2AgALDAcLIAAgASACIAMgBCAFIAAoAgAoAhQRBQAMBwsgByAAIAEgAiADIAQgBSAAQQhqIAAoAggoAhgRAAAiACgCACAAIAAtAAsiAUGAAXFBB3YbIgIgAiAAKAIEIAFB/wBxIAFBgAFxQQd2G2oQkgM2AgwMBQsgBUEUaiAHQQxqIAIgBCAIEJsDDAQLIAdBDGogAiAEIAhBBBCcAyEAIAQtAABBBHFFBEAgBSAAQewOazYCFAsMAwsgBkElRg0BCyAEIAQoAgBBBHI2AgAMAQsjAEEQayIAJAAgACACNgIMQQYhAQJAAkAgB0EMaiIDIABBDGoQ9QENAEEEIQEgCAJ/IAMoAgAiAigCDCIFIAIoAhBGBEAgAiACKAIAKAIkEQAADAELIAUtAAALwEEAIAgoAgAoAiQRBABBJUcNAEECIQEgAxD3ASAAQQxqEPUBRQ0BCyAEIAQoAgAgAXI2AgALIABBEGokAAsgBygCDAshACAHQRBqJAAgAAuRBQEDfyMAQRBrIggkACAIIAI2AgggCCABNgIMIAggAygCHCIBNgIEIAEgASgCBEEBajYCBCAIKAIEEIYCIQkgCCgCBCIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEAC0EAIQEgBEEANgIAAkADQCAGIAdGDQEgAQ0BAkAgCEEMaiAIQQhqEIcCDQACQCAJIAYoAgBBACAJKAIAKAI0EQQAQSVGBEAgBkEEaiIBIAdGDQICfwJAIAkgASgCAEEAIAkoAgAoAjQRBAAiAkHFAEYNAEEAIQogAkH/AXFBMEYNACAGIQEgAgwBCyAGQQhqIAdGDQMgAiEKIAkgBigCCEEAIAkoAgAoAjQRBAALIQIgCCAAIAgoAgwgCCgCCCADIAQgBSACIAogACgCACgCJBELADYCDCABQQhqIQYMAQsgCUEBIAYoAgAgCSgCACgCDBEEAARAA0ACQCAHIAZBBGoiBkYEQCAHIQYMAQsgCUEBIAYoAgAgCSgCACgCDBEEAA0BCwsDQCAIQQxqIAhBCGoQhwINAiAJQQECfyAIKAIMIgEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEAAAwBCyACKAIACyAJKAIAKAIMEQQARQ0CIAhBDGoQiQIaDAALAAsgCQJ/IAgoAgwiASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAIoAgALIAkoAgAoAhwRAwAgCSAGKAIAIAkoAgAoAhwRAwBGBEAgBkEEaiEGIAhBDGoQiQIaDAELIARBBDYCAAsgBCgCACEBDAELCyAEQQQ2AgALIAhBDGogCEEIahCHAgRAIAQgBCgCAEECcjYCAAsgCCgCDCEAIAhBEGokACAAC10BAX8jAEEgayIGJAAgBkH4uhMpAwA3AxggBkHwuhMpAwA3AxAgBkHouhMpAwA3AwggBkHguhMpAwA3AwAgACABIAIgAyAEIAUgBiAGQSBqIgEQngMhACABJAAgAAtWACAAIAEgAiADIAQgBSAAQQhqIAAoAggoAhQRAAAiACgCACAAIAAtAAsiAkGAAXFBB3YbIgEgASAAKAIEIAIiAEH/AHEgAEGAAXFBB3YbQQJ0ahCeAwuFAQECfyMAQRBrIgYkACAGIAE2AgwgBiADKAIcIgE2AgggASABKAIEQQFqNgIEIAYoAggQhgIhAyAGKAIIIgEgASgCBEEBayIHNgIEIAdBf0YEQCABIAEoAgAoAggRAQALIAAgBUEYaiAGQQxqIAIgBCADEKIDIAYoAgwhACAGQRBqJAAgAAtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQ4gIgAGsiAEGnAUwEQCABIABBDG1BB282AgALC4UBAQJ/IwBBEGsiBiQAIAYgATYCDCAGIAMoAhwiATYCCCABIAEoAgRBAWo2AgQgBigCCBCGAiEDIAYoAggiASABKAIEQQFrIgc2AgQgB0F/RgRAIAEgASgCACgCCBEBAAsgACAFQRBqIAZBDGogAiAEIAMQpAMgBigCDCEAIAZBEGokACAAC0AAIAIgAyAAQQhqIAAoAggoAgQRAAAiACAAQaACaiAFIARBABDiAiAAayIAQZ8CTARAIAEgAEEMbUEMbzYCAAsLgwEBAX8jAEEQayIAJAAgACABNgIMIAAgAygCHCIBNgIIIAEgASgCBEEBajYCBCAAKAIIEIYCIQMgACgCCCIBIAEoAgRBAWsiBjYCBCAGQX9GBEAgASABKAIAKAIIEQEACyAFQRRqIABBDGogAiAEIAMQpgMgACgCDCEBIABBEGokACABC0IAIAEgAiADIARBBBCnAyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABIGyABQcUASBtB7A5rNgIACwu1AgEEfyMAQRBrIgckACAHIAE2AgxBACEBQQYhBgJAAkAgACAHQQxqEIcCDQBBBCEGIANBwAACfyAAKAIAIgUoAgwiCCAFKAIQRgRAIAUgBSgCACgCJBEAAAwBCyAIKAIACyIFIAMoAgAoAgwRBABFDQAgAyAFQQAgAygCACgCNBEEACEBA0ACQCABQTBrIQEgABCJAiIFIAdBDGoQhwINACAEQQJIDQAgA0HAAAJ/IAUoAgAiBigCDCIFIAYoAhBGBEAgBiAGKAIAKAIkEQAADAELIAUoAgALIgYgAygCACgCDBEEAEUNAyAEQQFrIQQgAyAGQQAgAygCACgCNBEEACABQQpsaiEBDAELC0ECIQYgBSAHQQxqEIcCRQ0BCyACIAIoAgAgBnI2AgALIAdBEGokACABC6gPAQN/IwBBMGsiByQAIAcgATYCLCAEQQA2AgAgByADKAIcIgg2AgAgCCAIKAIEQQFqNgIEIAcoAgAQhgIhCCAHKAIAIgkgCSgCBEEBayIKNgIEIApBf0YEQCAJIAkoAgAoAggRAQALAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZBwQBrDjkAARcEFwUXBgcXFxcKFxcXFw4PEBcXFxMVFxcXFxcXFwABAgMDFxcBFwgXFwkLFwwXDRcLFxcREhQWCyAAIAVBGGogB0EsaiACIAQgCBCiAwwYCyAAIAVBEGogB0EsaiACIAQgCBCkAwwXCyAHIAAgASACIAMgBCAFIABBCGogACgCCCgCDBEAACIAKAIAIAAgAC0ACyIBQYABcUEHdhsiAiACIAAoAgQgAUH/AHEgAUGAAXFBB3YbQQJ0ahCeAzYCLAwWCyAHQSxqIAIgBCAIQQIQpwMhACAEKAIAIQECQAJAIABBAWtBHksNACABQQRxDQAgBSAANgIMDAELIAQgAUEEcjYCAAsMFQsgB0HouRMpAwA3AxggB0HguRMpAwA3AxAgB0HYuRMpAwA3AwggB0HQuRMpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQngM2AiwMFAsgB0GIuhMpAwA3AxggB0GAuhMpAwA3AxAgB0H4uRMpAwA3AwggB0HwuRMpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQngM2AiwMEwsgB0EsaiACIAQgCEECEKcDIQAgBCgCACEBAkACQCAAQRdKDQAgAUEEcQ0AIAUgADYCCAwBCyAEIAFBBHI2AgALDBILIAdBLGogAiAEIAhBAhCnAyEAIAQoAgAhAQJAAkAgAEEBa0ELSw0AIAFBBHENACAFIAA2AggMAQsgBCABQQRyNgIACwwRCyAHQSxqIAIgBCAIQQMQpwMhACAEKAIAIQECQAJAIABB7QJKDQAgAUEEcQ0AIAUgADYCHAwBCyAEIAFBBHI2AgALDBALIAdBLGogAiAEIAhBAhCnAyEBIAQoAgAhAAJAAkAgAUEBayIBQQtLDQAgAEEEcQ0AIAUgATYCEAwBCyAEIABBBHI2AgALDA8LIAdBLGogAiAEIAhBAhCnAyEAIAQoAgAhAQJAAkAgAEE7Sg0AIAFBBHENACAFIAA2AgQMAQsgBCABQQRyNgIACwwOCyAHQSxqIQAjAEEQayIBJAAgASACNgIMA0ACQCAAIAFBDGoQhwINACAIQQECfyAAKAIAIgIoAgwiAyACKAIQRgRAIAIgAigCACgCJBEAAAwBCyADKAIACyAIKAIAKAIMEQQARQ0AIAAQiQIaDAELCyAAIAFBDGoQhwIEQCAEIAQoAgBBAnI2AgALIAFBEGokAAwNCyAHQSxqIQECQCAAQQhqIAAoAggoAggRAAAiACgCBCAALQALIgNB/wBxIANBgAFxQQd2G0EAIAAoAhAgAC0AFyIDQf8AcSADQYABcUEHdhtrRgRAIAQgBCgCAEEEcjYCAAwBCyABIAIgACAAQRhqIAggBEEAEOICIQIgBSgCCCEBAkAgACACRw0AIAFBDEcNACAFQQA2AggMAQsCQCACIABrQQxHDQAgAUELSg0AIAUgAUEMajYCCAsLDAwLIAdBkLoTQSwQKyIGIAAgASACIAMgBCAFIAYgBkEsahCeAzYCLAwLCyAHQdC6EygCADYCECAHQci6EykDADcDCCAHQcC6EykDADcDACAHIAAgASACIAMgBCAFIAcgB0EUahCeAzYCLAwKCyAHQSxqIAIgBCAIQQIQpwMhACAEKAIAIQECQAJAIABBPEoNACABQQRxDQAgBSAANgIADAELIAQgAUEEcjYCAAsMCQsgB0H4uhMpAwA3AxggB0HwuhMpAwA3AxAgB0HouhMpAwA3AwggB0HguhMpAwA3AwAgByAAIAEgAiADIAQgBSAHIAdBIGoQngM2AiwMCAsgB0EsaiACIAQgCEEBEKcDIQAgBCgCACEBAkACQCAAQQZKDQAgAUEEcQ0AIAUgADYCGAwBCyAEIAFBBHI2AgALDAcLIAAgASACIAMgBCAFIAAoAgAoAhQRBQAMBwsgByAAIAEgAiADIAQgBSAAQQhqIAAoAggoAhgRAAAiACgCACAAIAAtAAsiAUGAAXFBB3YbIgIgAiAAKAIEIAFB/wBxIAFBgAFxQQd2G0ECdGoQngM2AiwMBQsgBUEUaiAHQSxqIAIgBCAIEKYDDAQLIAdBLGogAiAEIAhBBBCnAyEAIAQtAABBBHFFBEAgBSAAQewOazYCFAsMAwsgBkElRg0BCyAEIAQoAgBBBHI2AgAMAQsjAEEQayIAJAAgACACNgIMQQYhAQJAAkAgB0EsaiIDIABBDGoQhwINAEEEIQEgCAJ/IAMoAgAiAigCDCIFIAIoAhBGBEAgAiACKAIAKAIkEQAADAELIAUoAgALQQAgCCgCACgCNBEEAEElRw0AQQIhASADEIkCIABBDGoQhwJFDQELIAQgBCgCACABcjYCAAsgAEEQaiQACyAHKAIsCyEAIAdBMGokACAAC4oCACMAQYABayICJAAgAiACQfQAajYCDCAAKAIIIAJBEGoiAyACQQxqIAQgBSAGEKoDIAIoAgwhBiMAQRBrIgQkACMAQSBrIgAkACMAQRBrIgUkACAFIAY2AgwgACADNgIYIAAgBSgCDDYCHCAFQRBqJAAgACgCGCEFIAAoAhwhBiMAQRBrIgMkACADIAE2AgwDQCAFIAZHBEAgA0EMaiAFLAAAEP0BIAVBAWohBQwBCwsgACAGNgIQIAAgAygCDDYCFCADQRBqJAAgACgCECEBIAAgACgCFDYCDCAEIAE2AgggBCAAKAIMNgIMIABBIGokACAEKAIMIQAgBEEQaiQAIAJBgAFqJAAgAAtqAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBi0ADSEEIAYgBi0ADjoADSAGIAQ6AA4LIAIgASACKAIAIAFrIAZBDGogAyAAECAgAWo2AgAgBkEQaiQAC8ADAQJ/IwBBoANrIgckACAHIAdBoANqIgM2AgwjAEGQAWsiAiQAIAIgAkGEAWo2AhwgACgCCCACQSBqIgggAkEcaiAEIAUgBhCqAyACQgA3AxAgAiAINgIMIAcoAgwgB0EQaiIEa0ECdSEGIAAoAgghACMAQRBrIgUkACAFQQxqIAAQ3wIhACAEIAJBDGogBiACQRBqELACIQYgACgCACIABEBBzJkUKAIAGiAABEBBzJkUQdyiFCAAIABBf0YbNgIACwsgBUEQaiQAIAZBf0YEQBDVAQALIAcgBCAGQQJ0ajYCDCACQZABaiQAIAcoAgwhBiMAQRBrIgIkACMAQSBrIgAkACMAQRBrIgUkACAFIAY2AgwgACAENgIYIAAgBSgCDDYCHCAFQRBqJAAgACgCGCEFIAAoAhwhBiMAQRBrIgQkACAEIAE2AgwDQCAFIAZHBEAgBEEMaiAFKAIAEIsCIAVBBGohBQwBCwsgACAGNgIQIAAgBCgCDDYCFCAEQRBqJAAgACgCECEBIAAgACgCFDYCDCACIAE2AgggAiAAKAIMNgIMIABBIGokACACKAIMIQAgAkEQaiQAIAMkACAACwUAQf8ACxAAIABCADcCACAAQQA2AggLJwAjAEEQayIBJAAgAEEBOgALIABBAUEtEJECQQA6AAEgAUEQaiQACwwAIABBgoaAIDYAAAsIAEH/////BwsMACAAQQFBLRCKAxoLNQAgAS0AC0GAAXFBB3ZFBEAgACABKQIANwIAIAAgASgCCDYCCA8LIAAgASgCACABKAIEEHYL8wQBAn8jAEGQAmsiACQAIAAgAjYCiAIgACABNgKMAiAAQdYANgIQIABBmAFqIgcgAEGgAWo2AgAgByAAKAIQNgIEIABBkAFqIgggBCgCHCIBNgIAIAEgASgCBEEBajYCBCAAKAKQARDzASEBIABBADoAjwECQCAAQYwCaiACIAMgCCAEKAIEIAUgAEGPAWogASAHIABBlAFqIABBhAJqELQDRQ0AIABB7uUSKAAANgCHASAAQeflEikAADcDgAEgASAAQYABaiAAQYoBaiAAQfYAaiABKAIAKAIgEQYAGiAAQdQANgIQIABBCGoiA0EANgIAIAMgAEEQaiIEKAIANgIEAkAgACgClAEiASAHKAIAayICQeMATgRAIAJBAmoQMyEEIAMoAgAhAiADIAQ2AgAgAgRAIAIgAygCBBEBAAsgAygCACIERQ0BCyAALQCPAQRAIARBLToAACAEQQFqIQQLIAcoAgAhAgNAIAEgAk0EQAJAIARBADoAACAAIAY2AgAgAEEQakGBwAAgABBpQQFHDQAgAygCACEBIANBADYCACABBEAgASADKAIEEQEACwwECwUgBCAAQfYAaiIBIAFBCmogAi0AABDIAiAAayAAai0ACjoAACAEQQFqIQQgAkEBaiECIAAoApQBIQEMAQsLENUBAAsQ1QEACyAAQYwCaiAAQYgCahD1AQRAIAUgBSgCAEECcjYCAAsgACgCjAIhAiAAKAKQASIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAHKAIAIQEgB0EANgIAIAEEQCABIAcoAgQRAQALIABBkAJqJAAgAguGGAEPfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahD1AQRAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HWADYCTCALQegAaiIBIAtB8ABqNgIAIAEgC0HMAGoiESgCADYCBCALIAEiEygCACIONgJkIAsgDkGQA2o2AmAgEUIANwIAIBFBADYCCCALQUBrIg9CADcCACAPQQA2AgggC0E0aiIMQgA3AgAgDEEANgIIIAtBKGoiDUIANwIAIA1BADYCCCALQRxqIhJCADcCACASQQA2AgggAygCACEBIwBBEGsiAyQAIAsCfyACBEAgA0EEaiICIAEQuAMiASABKAIAKAIsEQIAIAsgAygCBDYAXCACIAEgASgCACgCIBECACANIAIQjAIgAhC/AhogAiABIAEoAgAoAhwRAgAgDCACEIwCIAIQvwIaIAsgASABKAIAKAIMEQAAOgBbIAsgASABKAIAKAIQEQAAOgBaIAIgASABKAIAKAIUEQIAIBEgAhCMAiACEL8CGiACIAEgASgCACgCGBECACAPIAIQjAIgAhC/AhogASABKAIAKAIkEQAADAELIANBBGoiAiABELkDIgEgASgCACgCLBECACALIAMoAgQ2AFwgAiABIAEoAgAoAiARAgAgDSACEIwCIAIQvwIaIAIgASABKAIAKAIcEQIAIAwgAhCMAiACEL8CGiALIAEgASgCACgCDBEAADoAWyALIAEgASgCACgCEBEAADoAWiACIAEgASgCACgCFBECACARIAIQjAIgAhC/AhogAiABIAEoAgAoAhgRAgAgDyACEIwCIAIQvwIaIAEgASgCACgCJBEAAAs2AhggA0EQaiQAIAkgCCgCADYCACAEQYAEcSEWIAsoAhghFCALLQBfIRcgCy0AWyEYIAstAFohGSAOIQRBACECA0ACQAJAAkACQCACQQRGDQAgACALQYwEahD1AQ0AQQAhAQJAAkACQAJAAkACQAJAIAtB3ABqIAJqLAAADgUBAAQDBQkLIAJBA0YNCAJ/IAAoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwCEBIAcoAgghAyABQQBOBH8gAyABQf8BcUECdGooAgBBAXEFQQALBEAgC0EQaiAAELUDIBIgCywAEBCGAQwCCyAFIAUoAgBBBHI2AgBBACEADAkLIAJBA0YNBwsDQCAAIAtBjARqEPUBDQcCfyAAKAIAIgEoAgwiAyABKAIQRgRAIAEgASgCACgCJBEAAAwBCyADLQAAC8AhASAHKAIIIQMgAUEATgR/IAMgAUH/AXFBAnRqKAIAQQFxBUEAC0UNByALQRBqIAAQtQMgEiALLAAQEIYBDAALAAsCQCAMKAIEIAwtAAsiAUH/AHEgAUGAAXFBB3YbRQ0AAn8gACgCACIBKAIMIgMgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAy0AAAvAQf8BcSAMKAIAIAwgDC0AC0GAAXFBB3YbLQAARw0AIAAQ9wEaIAZBADoAACAMIBAgDCgCBCAMLQALIgFB/wBxIAFBgAFxQQd2G0EBSxshEAwGCyANKAIEIgogDS0ACyIBQf8AcSABQYABcUEHdhsEQAJ/IAAoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwEH/AXEgDSgCACANIA0tAAtBgAFxQQd2Gy0AAEYNAyANKAIEIQogDS0ACyEBCwJAIAwoAgQgDC0ACyIDQf8AcSADQYABcUEHdhsiA0UNACAKIAFB/wBxIAFBgAFxQQd2G0UNACAFIAUoAgBBBHI2AgBBACEADAcLIAMgCiABQf8AcSABQYABcUEHdhsiAXJFDQUgBiABRToAAAwFCwJAIAJBAkkNACAQDQAgFg0AIAJBAkYgF0EAR3ENAEEAIRAMBQsgCyAPEPQCNgIQAkAgAkUNACACIAtqLQBbQQFLDQADQAJAIA8Q9QIgCygCECIBRg0AIAcoAgghAyABLAAAIgFBAE4EfyADIAFB/wFxQQJ0aigCAEEBcQVBAAtFDQAgCyALKAIQQQFqNgIQDAELCyAPEPQCIQEgCygCECABayIBIBIoAgQgEi0ACyIDQf8AcSADQYABcUEHdhtNBEAgEhD1AkEAIAFrELoDIQogEhD1AiEDIA8Q9AIhFSMAQRBrIgEkACABIBU2AgggASAKNgIMA0ACQCADIApHIhVFDQAgCi0AACABKAIILQAARw0AIAEgASgCDEEBajYCDCABIAEoAghBAWo2AgggASgCDCEKDAELCyABQRBqJAAgFUUNAQsgCyAPEPQCNgIMIAsgCygCDDYCEAsgCyALKAIQNgIMA0ACQCAPEPUCIAsoAgxGDQAgACALQYwEahD1AQ0AAn8gACgCACIBKAIMIgMgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAy0AAAvAQf8BcSALKAIMLQAARw0AIAAQ9wEaIAsgCygCDEEBajYCDAwBCwsgFkUNBCAPEPUCIAsoAgxGDQQgBSAFKAIAQQRyNgIAQQAhAAwFCwNAAkAgACALQYwEahD1AQ0AAn8gACgCACIDKAIMIgogAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgCi0AAAvAIQoCfyAHKAIIIQMgCkEATgR/IAMgCkH/AXFBAnRqKAIAQcAAcQVBAAsEQCAJKAIAIgMgCygCiARGBEAgCCAJIAtBiARqELYDIAkoAgAhAwsgCSADQQFqNgIAIAMgCjoAACABQQFqDAELIBEoAgQgES0ACyIDQf8AcSADQYABcUEHdhtFDQEgAUUNASAKQf8BcSAZRw0BIAsoAmAgBEYEQCATIAtB5ABqIAtB4ABqELcDIAsoAmQhBAsgCyAEQQRqIg42AmQgBCABNgIAIA4hBEEACyEBIAAQ9wEaDAELCwJAIBMoAgAgDkYNACABRQ0AIAsoAmAgDkYEQCATIAtB5ABqIAtB4ABqELcDIAsoAmQhDgsgCyAOQQRqIgM2AmQgDiABNgIAIAMhDgsgFEEATA0CAkAgACALQYwEahD1AUUEQAJ/IAAoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwEH/AXEgGEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwFCwNAIAAQ9wEhASAUQQBMBEBBACEUDAQLAkAgASALQYwEahD1AUUEQAJ/IAEoAgAiAygCDCIEIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAQtAAALwCEDIAcoAgghBCADQQBOBH8gBCADQf8BcUECdGooAgBBwABxBUEACw0BCyAFIAUoAgBBBHI2AgBBACEADAYLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqELYDCwJ/IAEoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwCEBIAkgCSgCACIDQQFqNgIAIAMgAToAACAUQQFrIRQMAAsACyAAEPcBGiAGQQE6AAAgDSAQIA0oAgQgDS0ACyIBQf8AcSABQYABcUEHdhtBAUsbIRAMAgsgCyAUNgIYAkAgEEUNAEEBIQoDQCAKIBAoAgQgEC0ACyIBQf8AcSABQYABcUEHdhtPDQECQCAAIAtBjARqEPUBRQRAAn8gACgCACIBKAIMIgIgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAi0AAAvAQf8BcSAKIBAoAgAgECAQLQALQYABcUEHdhtqLQAARg0BCyAFIAUoAgBBBHI2AgBBACEADAULIAAQ9wEaIApBAWohCgwACwALQQEhACATKAIAIgEgDkYNAkEAIQAgC0EANgIQIBEgASAOIAtBEGoQxwIgCygCEARAIAUgBSgCAEEEcjYCAAwDC0EBIQAMAgsgDiEEIAkoAgAgCCgCAEcNACAFIAUoAgBBBHI2AgBBACEADAELIAJBAWohAgwBCwsgEhC/AhogDRC/AhogDBC/AhogDxC/AhogERC/AhogEygCACEBIBNBADYCACABBEAgASATKAIEEQEACwsgC0GQBGokACAACyABAX8gASgCABD4AcAhAiAAIAEoAgA2AgQgACACOgAAC9UBAQZ/IwBBEGsiBCQAIAEoAgAhCEEAIAAoAgAiByAAKAIEQdYARiIFG0F/QQEgAigCACAHayIDQQF0IgYgBkEBTRsgA0H/////B08bIgYQNSIDBEAgBUUEQCAAKAIAGiAAQQA2AgALIARB1AA2AgQgACAEQQhqIgAgAzYCACAAIAQoAgQ2AgQgABC7AyEFIAAoAgAhAyAAQQA2AgAgAwRAIAMgACgCBBEBAAsgASAFKAIAIAggB2tqNgIAIAIgBSgCACAGajYCACAEQRBqJAAPCxDVAQAL2AEBBn8jAEEQayIEJAAgASgCACEIQQAgACgCACIGIAAoAgRB1gBGIgUbQX9BBCACKAIAIgMgBmsiB0EBdCADIAZGGyAHQf////8HTxsiBxA1IgMEQCAFRQRAIAAoAgAaIABBADYCAAsgBEHUADYCBCAAIARBCGoiACADNgIAIAAgBCgCBDYCBCAAELsDIQUgACgCACEDIABBADYCACADBEAgAyAAKAIEEQEACyABIAUoAgAgCCAGa2o2AgAgAiAFKAIAIAdBfHFqNgIAIARBEGokAA8LENUBAAsLACAAQdCjFBD0AQsLACAAQcijFBD0AQs2AQF/IwBBEGsiAiQAIAIgADYCDCACQQxqIgAgACgCACABajYCACAAKAIAIQAgAkEQaiQAIAALPgECfyABKAIAIQMgAUEANgIAIAAoAgAhAiAAIAM2AgAgAgRAIAIgACgCBBEBAAsgACABQQRqKAIANgIEIAAL3gcBBX8jAEGQAWsiACQAIAAgAjYCiAEgACABNgKMASAAQdYANgIUIABBGGoiASAAQSBqNgIAIAEgAEEUaiIIKAIANgIEIABBEGoiCSAEKAIcIgc2AgAgByAHKAIEQQFqNgIEIAAoAhAQ8wEhByAAQQA6AA8gAEGMAWogAiADIAkgBCgCBCAFIABBD2ogByABIAggAEGEAWoQtAMEQAJAIAYtAAtBgAFxQQd2BEAgBigCAEEAOgAAIAZBADYCBAwBCyAGQQA6AAAgBkEAOgALCyAALQAPBEAgBiAHQS0gBygCACgCHBEDABCGAQsgB0EwIAcoAgAoAhwRAwAhAyAAKAIUIgdBAWshBCABKAIAIQIgA0H/AXEhAwNAAkAgAiAETw0AIAItAAAgA0cNACACQQFqIQIMAQsLIwBBEGsiCSQAIAYoAgQgBi0ACyIEIgNB/wBxIANBgAFxQQd2GyEDIARBgAFxQQd2BH8gBigCCEH/////B3FBAWsFQQoLIQQCQCAHIAJrIghFDQAgAiAGKAIAIAYgBi0AC0GAAXFBB3YbIgpPBH8gCiAGKAIEIAYtAAsiC0H/AHEgC0GAAXFBB3YbaiACTwVBAAtFBEAgCCAEIANrSwRAIAYgBCADIARrIAhqIAMgAxC9AwsgAyAGKAIAIAYgBi0AC0GAAXFBB3YbaiEEA0AgAiAHRwRAIAQgAi0AADoAACACQQFqIQIgBEEBaiEEDAELCyAEQQA6AAAgAyAIaiECAkAgBi0AC0GAAXFBB3YEQCAGIAI2AgQMAQsgBiACOgALCwwBCyAJQQRqIAIgBxCNAiIEIgIoAgAgAiACLQALQYABcUEHdhshByAEKAIEIAQtAAsiAkH/AHEgAkGAAXFBB3YbIQICQCACIAYtAAtBgAFxQQd2BH8gBigCCEH/////B3FBAWsFQQoLIgggBigCBCAGLQALIgNB/wBxIANBgAFxQQd2GyIDa00EQCACRQ0BIAYoAgAgBiAGLQALQYABcUEHdhsiCCADaiAHIAIQ4QEaIAIgA2ohAgJAIAYtAAtBgAFxQQd2BEAgBiACNgIEDAELIAYgAjoACwsgAiAIakEAOgAADAELIAYgCCACIAhrIANqIAMgA0EAIAIgBxC6BAsgBBC/AhoLIAlBEGokAAsgAEGMAWogAEGIAWoQ9QEEQCAFIAUoAgBBAnI2AgALIAAoAowBIQMgACgCECICIAIoAgRBAWsiBDYCBCAEQX9GBEAgAiACKAIAKAIIEQEACyABKAIAIQIgAUEANgIAIAIEQCACIAEoAgQRAQALIABBkAFqJAAgAwuDAgEDfyMAQRBrIgUkACACQe////8HIAFrTQRAIAAoAgAgACAALQALQYABcUEHdhshBiAFQQRqIAFB5v///wNNBH8gBSABQQF0NgIMIAUgASACajYCBCAFQQxqIgIgBUEEaiIHIAcoAgAgAigCAEkbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEI4CIAUoAgQhAiAEBEAgAiAGIAQQ4QEaCyADIARHBEAgAiAEaiAEIAZqIAMgBGsQ4QEaCyABQQpHBEAgBhA0CyAAIAI2AgAgACAFKAIIQYCAgIB4cjYCCCAFQRBqJAAPCxBVAAv9BAECfyMAQfAEayIAJAAgACACNgLoBCAAIAE2AuwEIABB1gA2AhAgAEHIAWoiByAAQdABajYCACAHIAAoAhA2AgQgAEHAAWoiCCAEKAIcIgE2AgAgASABKAIEQQFqNgIEIAAoAsABEIYCIQEgAEEAOgC/AQJAIABB7ARqIAIgAyAIIAQoAgQgBSAAQb8BaiABIAcgAEHEAWogAEHgBGoQvwNFDQAgAEHu5RIoAAA2ALcBIABB5+USKQAANwOwASABIABBsAFqIABBugFqIABBgAFqIAEoAgAoAjARBgAaIABB1AA2AhAgAEEIaiIDQQA2AgAgAyAAQRBqIgQoAgA2AgQCQCAAKALEASIBIAcoAgBrIgJBiQNOBEAgAkECdUECahAzIQQgAygCACECIAMgBDYCACACBEAgAiADKAIEEQEACyADKAIAIgRFDQELIAAtAL8BBEAgBEEtOgAAIARBAWohBAsgBygCACECA0AgASACTQRAAkAgBEEAOgAAIAAgBjYCACAAQRBqQYHAACAAEGlBAUcNACADKAIAIQEgA0EANgIAIAEEQCABIAMoAgQRAQALDAQLBSAEIABBsAFqIABBgAFqIgEgAUEoaiACKAIAEOgCIAFrQQJ1ai0AADoAACAEQQFqIQQgAkEEaiECIAAoAsQBIQEMAQsLENUBAAsQ1QEACyAAQewEaiAAQegEahCHAgRAIAUgBSgCAEECcjYCAAsgACgC7AQhAiAAKALAASIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAHKAIAIQEgB0EANgIAIAEEQCABIAcoAgQRAQALIABB8ARqJAAgAgv2FgEMfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahCHAgRAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HWADYCSCALQegAaiIBIAtB8ABqNgIAIAEgC0HIAGoiESgCADYCBCALIAEiFCgCACIBNgJkIAsgAUGQA2o2AmAgEUIANwIAIBFBADYCCCALQTxqIg5CADcCACAOQQA2AgggC0EwaiIMQgA3AgAgDEEANgIIIAtBJGoiDUIANwIAIA1BADYCCCALQRhqIhJCADcCACASQQA2AgggAygCACEQIwBBEGsiCiQAIAsCfyACBEAgCkEEaiIDIBAQwgMiAiACKAIAKAIsEQIAIAsgCigCBDYAXCADIAIgAigCACgCIBECACANIAMQwwMgAxDjAhogAyACIAIoAgAoAhwRAgAgDCADEMMDIAMQ4wIaIAsgAiACKAIAKAIMEQAANgJYIAsgAiACKAIAKAIQEQAANgJUIAMgAiACKAIAKAIUEQIAIBEgAxCMAiADEL8CGiADIAIgAigCACgCGBECACAOIAMQwwMgAxDjAhogAiACKAIAKAIkEQAADAELIApBBGoiAyAQEMQDIgIgAigCACgCLBECACALIAooAgQ2AFwgAyACIAIoAgAoAiARAgAgDSADEMMDIAMQ4wIaIAMgAiACKAIAKAIcEQIAIAwgAxDDAyADEOMCGiALIAIgAigCACgCDBEAADYCWCALIAIgAigCACgCEBEAADYCVCADIAIgAigCACgCFBECACARIAMQjAIgAxC/AhogAyACIAIoAgAoAhgRAgAgDiADEMMDIAMQ4wIaIAIgAigCACgCJBEAAAs2AhQgCkEQaiQAIAkgCCgCADYCACAEQYAEcSEVIAsoAhQhEEEAIQIDQAJAAkACQAJAAkAgAkEERg0AIAAgC0GMBGoQhwINAAJAAkACQAJAAkACQAJAIAtB3ABqIAJqLAAADgUBAAQDBQoLIAJBA0YNCSAHQQECfyAAKAIAIgMoAgwiBCADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAEKAIACyAHKAIAKAIMEQQABEAgC0EMaiAAEMADIBIgCygCDBDBAwwCCyAFIAUoAgBBBHI2AgBBACEADAoLIAJBA0YNCAsDQCAAIAtBjARqEIcCDQggB0EBAn8gACgCACIDKAIMIgQgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBCgCAAsgBygCACgCDBEEAEUNCCALQQxqIAAQwAMgEiALKAIMEMEDDAALAAsCQCAMKAIEIAwtAAsiA0H/AHEgA0GAAXFBB3YbRQ0AAn8gACgCACIDKAIMIgQgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBCgCAAsgDCgCACAMIAwtAAtBgAFxQQd2GygCAEcNACAAEIkCGiAGQQA6AAAgDCAPIAwoAgQgDC0ACyIDQf8AcSADQYABcUEHdhtBAUsbIQ8MBwsgDSgCBCIKIA0tAAsiBCIDQf8AcSADQYABcUEHdhsEQAJ/IAAoAgAiAygCDCIEIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAQoAgALIA0oAgAgDSANLQALQYABcUEHdhsoAgBGDQMgDSgCBCEKIA0tAAshBAsCQCAMKAIEIAwtAAsiA0H/AHEgA0GAAXFBB3YbIgNFDQAgCiAEQf8AcSAEQYABcUEHdhtFDQAgBSAFKAIAQQRyNgIAQQAhAAwICyADIAogBEH/AHEgBEGAAXFBB3YbIgRyRQ0GIAYgBEU6AAAMBgsCQCACQQJJDQAgDw0AIBUNACACQQJGIAstAF9BAEdxDQBBACEPDAYLIAsgDhD0AjYCDAJAIAJFDQAgAiALai0AW0EBSw0AA0ACQCAOEIYDIAsoAgwiA0YNACAHQQEgAygCACAHKAIAKAIMEQQARQ0AIAsgCygCDEEEajYCDAwBCwsgDhD0AiEDIAsoAgwgA2tBAnUiAyASKAIEIBItAAsiBEH/AHEgBEGAAXFBB3YbTQRAIBIQhgNBACADaxDFAyEKIBIQhgMhBCAOEPQCIRMjAEEQayIDJAAgAyATNgIIIAMgCjYCDANAAkAgBCAKRyITRQ0AIAooAgAgAygCCCgCAEcNACADIAMoAgxBBGo2AgwgAyADKAIIQQRqNgIIIAMoAgwhCgwBCwsgA0EQaiQAIBNFDQELIAsgDhD0AjYCCCALIAsoAgg2AgwLIAsgCygCDDYCCANAAkAgDhCGAyALKAIIRg0AIAAgC0GMBGoQhwINAAJ/IAAoAgAiAygCDCIEIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAQoAgALIAsoAggoAgBHDQAgABCJAhogCyALKAIIQQRqNgIIDAELCyAVRQ0FIA4QhgMgCygCCEYNBSAFIAUoAgBBBHI2AgBBACEADAYLQQAhCiALKAJUIRYgASEEA0ACQCAAIAtBjARqEIcCDQACfyAHQcAAAn8gACgCACIDKAIMIhMgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgEygCAAsiEyAHKAIAKAIMEQQABEAgCSgCACIDIAsoAogERgRAIAggCSALQYgEahC3AyAJKAIAIQMLIAkgA0EEajYCACADIBM2AgAgCkEBagwBCyARKAIEIBEtAAsiA0H/AHEgA0GAAXFBB3YbRQ0BIApFDQEgEyAWRw0BIAsoAmAgAUYEQCAUIAtB5ABqIAtB4ABqELcDIAsoAmQhAQsgCyABQQRqIgQ2AmQgASAKNgIAIAQhAUEACyEKIAAQiQIaDAELCyAUKAIAIARGDQIgCkUNAiALKAJgIARGBEAgFCALQeQAaiALQeAAahC3AyALKAJkIQQLIAsgBEEEaiIBNgJkIAQgCjYCAAwDCyAAEIkCGiAGQQE6AAAgDSAPIA0oAgQgDS0ACyIDQf8AcSADQYABcUEHdhtBAUsbIQ8MAwsgCyAQNgIUAkAgD0UNAEEBIQoDQCAKIA8oAgQgDy0ACyICQf8AcSACQYABcUEHdhtPDQECQCAAIAtBjARqEIcCRQRAAn8gACgCACICKAIMIgMgAigCEEYEQCACIAIoAgAoAiQRAAAMAQsgAygCAAsgCkECdCAPKAIAIA8gDy0AC0GAAXFBB3YbaigCAEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwGCyAAEIkCGiAKQQFqIQoMAAsAC0EBIQAgFCgCACICIAFGDQNBACEAIAtBADYCDCARIAIgASALQQxqEMcCIAsoAgwEQCAFIAUoAgBBBHI2AgAMBAtBASEADAMLIAQhAQsCQCAQQQBMDQACQCAAIAtBjARqEIcCRQRAAn8gACgCACIDKAIMIgQgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBCgCAAsgCygCWEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwDCwNAIAAQiQIhAyAQQQBMBEBBACEQDAILAkAgAyALQYwEahCHAkUEQCAHQcAAAn8gAygCACIEKAIMIgogBCgCEEYEQCAEIAQoAgAoAiQRAAAMAQsgCigCAAsgBygCACgCDBEEAA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqELcDCwJ/IAMoAgAiAygCDCIEIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAQoAgALIQMgCSAJKAIAIgRBBGo2AgAgBCADNgIAIBBBAWshEAwACwALIAkoAgAgCCgCAEcNACAFIAUoAgBBBHI2AgBBACEADAELIAJBAWohAgwBCwsgEhDjAhogDRDjAhogDBDjAhogDhDjAhogERC/AhogFCgCACEBIBRBADYCACABBEAgASAUKAIEEQEACwsgC0GQBGokACAACx8BAX8gASgCABCKAiECIAAgASgCADYCBCAAIAI2AgALlwEBAn8CQAJAAkACQCAALQALIgNBgAFxQQd2BEAgACgCBCIDIAAoAghB/////wdxQQFrIgJGDQEMAgtBASECIANB/wBxIgNBAUcNAgsgACACQQEgAiACEMcDIAIhAwsgACgCACECIAAgA0EBajYCBAwBCyAAIANBAWo6AAsgACECCyACIANBAnRqIgAgATYCACAAQQA2AgQLCwAgAEHgoxQQ9AELQAAgAC0AC0GAAXFBB3YEQCAAKAIIGiAAKAIAEDQLIAAgASkCADcCACAAIAEoAgg2AgggAUEAOgALIAFBADYCAAsLACAAQdijFBD0AQs5AQF/IwBBEGsiAiQAIAIgADYCDCACQQxqIgAgACgCACABQQJ0ajYCACAAKAIAIQAgAkEQaiQAIAAL5QcBBX8jAEHAA2siACQAIAAgAjYCuAMgACABNgK8AyAAQdYANgIUIABBGGoiASAAQSBqNgIAIAEgAEEUaiIIKAIANgIEIABBEGoiCSAEKAIcIgc2AgAgByAHKAIEQQFqNgIEIAAoAhAQhgIhByAAQQA6AA8gAEG8A2ogAiADIAkgBCgCBCAFIABBD2ogByABIAggAEGwA2oQvwMEQAJAIAYtAAtBgAFxQQd2BEAgBigCAEEANgIAIAZBADYCBAwBCyAGQQA2AgAgBkEAOgALCyAALQAPBEAgBiAHQS0gBygCACgCLBEDABDBAwsgB0EwIAcoAgAoAiwRAwAhAyAAKAIUIgdBBGshBCABKAIAIQIDQAJAIAIgBE8NACACKAIAIANHDQAgAkEEaiECDAELCyMAQRBrIgkkACAGKAIEIAYtAAsiBCIDQf8AcSADQYABcUEHdhshAyAEQYABcUEHdgR/IAYoAghB/////wdxQQFrBUEBCyEEAkAgByACa0ECdSIIRQ0AIAIgBigCACAGIAYtAAtBgAFxQQd2GyIKTwR/IAogBigCBCAGLQALIgtB/wBxIAtBgAFxQQd2G0ECdGogAk8FQQALRQRAIAggBCADa0sEQCAGIAQgAyAEayAIaiADIAMQxwMLIANBAnQgBigCACAGIAYtAAtBgAFxQQd2G2ohBANAIAIgB0cEQCAEIAIoAgA2AgAgAkEEaiECIARBBGohBAwBCwsgBEEANgIAIAMgCGohAgJAIAYtAAtBgAFxQQd2BEAgBiACNgIEDAELIAYgAjoACwsMAQsgCUEEaiACIAcQuAIiBCICKAIAIAIgAi0AC0GAAXFBB3YbIQcgBCgCBCAELQALIgJB/wBxIAJBgAFxQQd2GyECAkAgAiAGLQALQYABcUEHdgR/IAYoAghB/////wdxQQFrBUEBCyIIIAYoAgQgBi0ACyIDQf8AcSADQYABcUEHdhsiA2tNBEAgAkUNASAGKAIAIAYgBi0AC0GAAXFBB3YbIgggA0ECdGogByACEIECGiACIANqIQICQCAGLQALQYABcUEHdgRAIAYgAjYCBAwBCyAGIAI6AAsLIAggAkECdGpBADYCAAwBCyAGIAggAiAIayADaiADIANBACACIAcQuwQLIAQQ4wIaCyAJQRBqJAALIABBvANqIABBuANqEIcCBEAgBSAFKAIAQQJyNgIACyAAKAK8AyEDIAAoAhAiAiACKAIEQQFrIgQ2AgQgBEF/RgRAIAIgAigCACgCCBEBAAsgASgCACECIAFBADYCACACBEAgAiABKAIEEQEACyAAQcADaiQAIAMLhAIBA38jAEEQayIFJAAgAkHv////AyABa00EQCAAKAIAIAAgAC0AC0GAAXFBB3YbIQYgBUEEaiABQeb///8BTQR/IAUgAUEBdDYCDCAFIAEgAmo2AgQgBUEMaiAFQQRqIAUoAgQgBSgCDEkbKAIAIgJBAk8EfyACQQRqQXxxIgIgAkEBayICIAJBAkYbBUEBC0EBagVB7////wMLELkCIAUoAgQhAiAEBEAgAiAGIAQQgQIaCyADIARHBEAgAiAEQQJ0IgdqIAYgB2ogAyAEaxCBAhoLIAFBAUcEQCAGEDQLIAAgAjYCACAAIAUoAghBgICAgHhyNgIIIAVBEGokAA8LEFUAC6AHAQp/IwBBwANrIgAkACAAIAU3AxAgACAGNwMYIAAgAEHQAmoiCzYCzAIgCyAAQRBqEKwCIQogAEHUADYC4AEgAEHYAWoiC0EANgIAIAsgACgC4AE2AgQgAEHUADYC4AEgAEEANgLQASAAIAAoAuABNgLUAQJAAkAgCkHkAEkEQCAAQeABaiEMIABB0AJqIQgMAQsQyQIhCiAAIAU3AwAgACAGNwMIIABBzAJqIApB+z8gABCBAyIKQX9GDQEgCygCACEHIAsgACgCzAIiCDYCACAHBEAgByALKAIEEQEACyAKEDMhDCAAKALQASEHIAAgDDYC0AEgBwRAIAcgACgC1AERAQALIAAoAtABIgxFDQELIAAgAygCHCIHNgLMASAHIAcoAgRBAWo2AgQgACgCzAEQ8wEiECIHIAggCCAKaiAMIAcoAgAoAiARBgAaIApBAEoEQCAILQAAQS1GIQ4LIABBuAFqIg1CADcCACANQQA2AgggAEGsAWoiCEIANwIAIAhBADYCCCAAQaABaiIHQgA3AgAgB0EANgIIIAIgDiAAKALMASAAQcgBaiAAQccBaiAAQcYBaiANIAggByAAQZwBahDJAyAAQdQANgIwIABBADYCKCAAIABBMGoiAigCADYCLAJ/IAAoApwBIg8gCkgEQCAKIA9rQQF0IAcoAgQgBy0ACyIJQf8AcSAJQYABcUEHdhtqIAgoAgQgCC0ACyIJQf8AcSAJQYABcUEHdhtqQQFqDAELIAcoAgQgBy0ACyIJQf8AcSAJQYABcUEHdhsgCCgCBCAILQALIglB/wBxIAlBgAFxQQd2G2pBAmoLIA9qIglB5QBPBEAgCRAzIQkgACgCKCECIAAgCTYCKCACBEAgAiAAKAIsEQEACyAAKAIoIgJFDQELIAIgAEEkaiAAQSBqIAMoAgQgDCAKIAxqIBAgDiAAQcgBaiAALADHASAALADGASANIAggByAPEMoDIAEgAiAAKAIkIAAoAiAgAyAEEKkBIQIgACgCKCEBIABBADYCKCABBEAgASAAKAIsEQEACyAHEL8CGiAIEL8CGiANEL8CGiAAKALMASIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAAKALQASEBIABBADYC0AEgAQRAIAEgACgC1AERAQALIAsoAgAhASALQQA2AgAgAQRAIAEgCygCBBEBAAsgAEHAA2okACACDwsQ1QEAC+8DAQF/IwBBEGsiCiQAIAkCfyAABEAgAhC4AyEAAkAgAQRAIApBBGoiASAAIAAoAgAoAiwRAgAgAyAKKAIENgAAIAEgACAAKAIAKAIgEQIADAELIApBBGoiASAAIAAoAgAoAigRAgAgAyAKKAIENgAAIAEgACAAKAIAKAIcEQIACyAIIAEQjAIgARC/AhogBCAAIAAoAgAoAgwRAAA6AAAgBSAAIAAoAgAoAhARAAA6AAAgCkEEaiIBIAAgACgCACgCFBECACAGIAEQjAIgARC/AhogASAAIAAoAgAoAhgRAgAgByABEIwCIAEQvwIaIAAgACgCACgCJBEAAAwBCyACELkDIQACQCABBEAgCkEEaiIBIAAgACgCACgCLBECACADIAooAgQ2AAAgASAAIAAoAgAoAiARAgAMAQsgCkEEaiIBIAAgACgCACgCKBECACADIAooAgQ2AAAgASAAIAAoAgAoAhwRAgALIAggARCMAiABEL8CGiAEIAAgACgCACgCDBEAADoAACAFIAAgACgCACgCEBEAADoAACAKQQRqIgEgACAAKAIAKAIUEQIAIAYgARCMAiABEL8CGiABIAAgACgCACgCGBECACAHIAEQjAIgARC/AhogACAAKAIAKAIkEQAACzYCACAKQRBqJAALqAcBCX8gAiAANgIAIANBgARxIRUDQCAUQQRGBEAgDSgCBCANLQALIgRB/wBxIARBgAFxQQd2G0EBSwRAIAIgDRD0AkEBELoDIA0Q9QIgAigCABDLAzYCAAsgA0GwAXEiA0EQRwRAIAEgA0EgRgR/IAIoAgAFIAALNgIACwUCQAJAAkACQAJAAkAgCCAUaiwAAA4FAAEDAgQFCyABIAIoAgA2AgAMBAsgASACKAIANgIAIAZBICAGKAIAKAIcEQMAIQ8gAiACKAIAIhBBAWo2AgAgECAPOgAADAMLIA0oAgQgDS0ACyIPQf8AcSAPQYABcUEHdhtFDQIgDSgCACANIA0tAAtBgAFxQQd2Gy0AACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwCCyAMKAIEIAwtAAsiD0H/AHEgD0GAAXFBB3YbRSEPIBVFDQEgDw0BIAIgDBD0AiAMEPUCIAIoAgAQywM2AgAMAQsgBigCCCEPIAIoAgAhFiAEIAdqIgQhEQNAAkAgBSARTQ0AIBEsAAAiEEEATgR/IA8gEEH/AXFBAnRqKAIAQcAAcUEARwVBAAtFDQAgEUEBaiERDAELCyAOIg9BAEoEQANAAkAgBCARTw0AIA9FDQAgD0EBayEPIBFBAWsiES0AACEQIAIgAigCACISQQFqNgIAIBIgEDoAAAwBCwsgDwR/IAZBMCAGKAIAKAIcEQMABUEACyESA0AgAiACKAIAIhBBAWo2AgAgD0EASgRAIBAgEjoAACAPQQFrIQ8MAQsLIBAgCToAAAsCQCAEIBFGBEAgBkEwIAYoAgAoAhwRAwAhDyACIAIoAgAiEEEBajYCACAQIA86AAAMAQtBfyEQIAsoAgQgCy0ACyIPQf8AcSAPQYABcUEHdhsEQCALKAIAIAsgCy0AC0GAAXFBB3YbLAAAIRALQQAhD0EAIRMDQCAEIBFGDQECQCAPIBBHBEAgDyESDAELIAIgAigCACIQQQFqNgIAIBAgCjoAAEEAIRIgE0EBaiITIAsoAgQgCy0ACyIQQf8AcSAQQYABcUEHdhtPBEAgDyEQDAELQX8hECATIAsoAgAgCyALLQALQYABcUEHdhtqLQAAQf8ARg0AIBMgCygCACALIAstAAtBgAFxQQd2G2osAAAhEAsgEUEBayIRLQAAIQ8gAiACKAIAIhdBAWo2AgAgFyAPOgAAIBJBAWohDwwACwALIBYgAigCABD7AgsgFEEBaiEUDAELCwuTAQEDfyMAQRBrIgQkACMAQSBrIgMkACMAQRBrIgUkACAFIAE2AgwgAyAANgIYIAMgBSgCDDYCHCAFQRBqJAAgA0EQaiADKAIYIAMoAhwgAhDoASAAIAMoAhAgAGsQugMhACADIAMoAhQ2AgwgBCAANgIIIAQgAygCDDYCDCADQSBqJAAgBCgCDCEAIARBEGokACAAC8gFAQh/IwBBsAFrIgAkACAAIAMoAhwiBjYCrAEgBiAGKAIEQQFqNgIEIAAoAqwBEPMBIQsgBSgCBCAFLQALIgZB/wBxIAZBgAFxQQd2GwRAIAUoAgAgBSAFLQALQYABcUEHdhstAAAgC0EtIAsoAgAoAhwRAwBB/wFxRiEMCyAAQZgBaiIKQgA3AgAgCkEANgIIIABBjAFqIgZCADcCACAGQQA2AgggAEGAAWoiCUIANwIAIAlBADYCCCACIAwgACgCrAEgAEGoAWogAEGnAWogAEGmAWogCiAGIAkgAEH8AGoQyQMgAEHUADYCECAAQQA2AgggACAAQRBqIgIoAgA2AgwCQAJ/IAUoAgQgBS0ACyIHQf8AcSAHQYABcUEHdhsiByAAKAJ8Ig1KBEAgByANa0EBdCAJKAIEIAktAAsiCEH/AHEgCEGAAXFBB3YbaiAGKAIEIAYtAAsiCEH/AHEgCEGAAXFBB3YbakEBagwBCyAJKAIEIAktAAsiCEH/AHEgCEGAAXFBB3YbIAYoAgQgBi0ACyIIQf8AcSAIQYABcUEHdhtqQQJqCyANaiIIQeUATwRAIAgQMyEHIAAoAgghAiAAIAc2AgggAgRAIAIgACgCDBEBAAsgACgCCCICRQ0BIAUoAgQgBS0ACyIHQf8AcSAHQYABcUEHdhshBwsgAiAAQQRqIAAgAygCBCAFKAIAIAUgBS0AC0GAAXFBB3YbIgUgBSAHaiALIAwgAEGoAWogACwApwEgACwApgEgCiAGIAkgDRDKAyABIAIgACgCBCAAKAIAIAMgBBCpASECIAAoAgghASAAQQA2AgggAQRAIAEgACgCDBEBAAsgCRC/AhogBhC/AhogChC/AhogACgCrAEiASABKAIEQQFrIgM2AgQgA0F/RgRAIAEgASgCACgCCBEBAAsgAEGwAWokACACDwsQ1QEAC6kHAQp/IwBBoAhrIgAkACAAIAU3AxAgACAGNwMYIAAgAEGwB2oiCzYCrAcgCyAAQRBqEKwCIQogAEHUADYCkAQgAEGIBGoiC0EANgIAIAsgACgCkAQ2AgQgAEHUADYCkAQgAEEANgKABCAAIAAoApAENgKEBAJAAkAgCkHkAEkEQCAAQZAEaiEMIABBsAdqIQgMAQsQyQIhCiAAIAU3AwAgACAGNwMIIABBrAdqIApB+z8gABCBAyIKQX9GDQEgCygCACEHIAsgACgCrAciCDYCACAHBEAgByALKAIEEQEACyAKQQJ0EDMhDCAAKAKABCEHIAAgDDYCgAQgBwRAIAcgACgChAQRAQALIAAoAoAEIgxFDQELIAAgAygCHCIHNgL8AyAHIAcoAgRBAWo2AgQgACgC/AMQhgIiECIHIAggCCAKaiAMIAcoAgAoAjARBgAaIApBAEoEQCAILQAAQS1GIQ4LIABB5ANqIg1CADcCACANQQA2AgggAEHYA2oiCEIANwIAIAhBADYCCCAAQcwDaiIHQgA3AgAgB0EANgIIIAIgDiAAKAL8AyAAQfgDaiAAQfQDaiAAQfADaiANIAggByAAQcgDahDOAyAAQdQANgIwIABBADYCKCAAIABBMGoiAigCADYCLAJ/IAAoAsgDIg8gCkgEQCAKIA9rQQF0IAcoAgQgBy0ACyIJQf8AcSAJQYABcUEHdhtqIAgoAgQgCC0ACyIJQf8AcSAJQYABcUEHdhtqQQFqDAELIAcoAgQgBy0ACyIJQf8AcSAJQYABcUEHdhsgCCgCBCAILQALIglB/wBxIAlBgAFxQQd2G2pBAmoLIA9qIglB5QBPBEAgCUECdBAzIQkgACgCKCECIAAgCTYCKCACBEAgAiAAKAIsEQEACyAAKAIoIgJFDQELIAIgAEEkaiAAQSBqIAMoAgQgDCAMIApBAnRqIBAgDiAAQfgDaiAAKAL0AyAAKALwAyANIAggByAPEM8DIAEgAiAAKAIkIAAoAiAgAyAEEIkDIQIgACgCKCEBIABBADYCKCABBEAgASAAKAIsEQEACyAHEOMCGiAIEOMCGiANEL8CGiAAKAL8AyIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAAKAKABCEBIABBADYCgAQgAQRAIAEgACgChAQRAQALIAsoAgAhASALQQA2AgAgAQRAIAEgCygCBBEBAAsgAEGgCGokACACDwsQ1QEAC+8DAQF/IwBBEGsiCiQAIAkCfyAABEAgAhDCAyEAAkAgAQRAIApBBGoiASAAIAAoAgAoAiwRAgAgAyAKKAIENgAAIAEgACAAKAIAKAIgEQIADAELIApBBGoiASAAIAAoAgAoAigRAgAgAyAKKAIENgAAIAEgACAAKAIAKAIcEQIACyAIIAEQwwMgARDjAhogBCAAIAAoAgAoAgwRAAA2AgAgBSAAIAAoAgAoAhARAAA2AgAgCkEEaiIBIAAgACgCACgCFBECACAGIAEQjAIgARC/AhogASAAIAAoAgAoAhgRAgAgByABEMMDIAEQ4wIaIAAgACgCACgCJBEAAAwBCyACEMQDIQACQCABBEAgCkEEaiIBIAAgACgCACgCLBECACADIAooAgQ2AAAgASAAIAAoAgAoAiARAgAMAQsgCkEEaiIBIAAgACgCACgCKBECACADIAooAgQ2AAAgASAAIAAoAgAoAhwRAgALIAggARDDAyABEOMCGiAEIAAgACgCACgCDBEAADYCACAFIAAgACgCACgCEBEAADYCACAKQQRqIgEgACAAKAIAKAIUEQIAIAYgARCMAiABEL8CGiABIAAgACgCACgCGBECACAHIAEQwwMgARDjAhogACAAKAIAKAIkEQAACzYCACAKQRBqJAALuwcBCX8gAiAANgIAIANBgARxIRUgB0ECdCEWA0AgFEEERgRAIA0oAgQgDS0ACyIEQf8AcSAEQYABcUEHdhtBAUsEQCACIA0Q9AJBARDFAyANEIYDIAIoAgAQ0AM2AgALIANBsAFxIgNBEEcEQCABIANBIEYEfyACKAIABSAACzYCAAsFAkACQAJAAkACQAJAIAggFGosAAAOBQABAwIEBQsgASACKAIANgIADAQLIAEgAigCADYCACAGQSAgBigCACgCLBEDACEHIAIgAigCACIPQQRqNgIAIA8gBzYCAAwDCyANKAIEIA0tAAsiB0H/AHEgB0GAAXFBB3YbRQ0CIA0oAgAgDSANLQALQYABcUEHdhsoAgAhByACIAIoAgAiD0EEajYCACAPIAc2AgAMAgsgDCgCBCAMLQALIgdB/wBxIAdBgAFxQQd2G0UhByAVRQ0BIAcNASACIAwQ9AIgDBCGAyACKAIAENADNgIADAELIAIoAgAhFyAEIBZqIgQhBwNAAkAgBSAHTQ0AIAZBwAAgBygCACAGKAIAKAIMEQQARQ0AIAdBBGohBwwBCwsgDkEASgRAIAIoAgAhDyAOIRADQAJAIAQgB08NACAQRQ0AIBBBAWshECAHQQRrIgcoAgAhESACIA9BBGoiEjYCACAPIBE2AgAgEiEPDAELCwJAIBBFBEBBACERDAELIAZBMCAGKAIAKAIsEQMAIREgAigCACEPCwNAIA9BBGohEiAQQQBKBEAgDyARNgIAIBBBAWshECASIQ8MAQsLIAIgEjYCACAPIAk2AgALAkAgBCAHRgRAIAZBMCAGKAIAKAIsEQMAIQ8gAiACKAIAIhBBBGoiBzYCACAQIA82AgAMAQtBfyERIAsoAgQgCy0ACyIPQf8AcSAPQYABcUEHdhsEQCALKAIAIAsgCy0AC0GAAXFBB3YbLAAAIRELQQAhEEEAIRMDQCAEIAdHBEAgAigCACESAkAgECARRwRAIBIhDyAQIRIMAQsgAiASQQRqIg82AgAgEiAKNgIAQQAhEiATQQFqIhMgCygCBCALLQALIhFB/wBxIBFBgAFxQQd2G08EQCAQIREMAQtBfyERIBMgCygCACALIAstAAtBgAFxQQd2G2otAABB/wBGDQAgEyALKAIAIAsgCy0AC0GAAXFBB3YbaiwAACERCyAHQQRrIgcoAgAhECACIA9BBGo2AgAgDyAQNgIAIBJBAWohEAwBCwsgAigCACEHCyAXIAcQywILIBRBAWohFAwBCwsLlgEBA38jAEEQayIEJAAjAEEgayIDJAAjAEEQayIFJAAgBSABNgIMIAMgADYCGCADIAUoAgw2AhwgBUEQaiQAIANBEGogAygCGCADKAIcIAIQ6AEgACADKAIQIABrQQJ1EMUDIQAgAyADKAIUNgIMIAQgADYCCCAEIAMoAgw2AgwgA0EgaiQAIAQoAgwhACAEQRBqJAAgAAvLBQEIfyMAQeADayIAJAAgACADKAIcIgY2AtwDIAYgBigCBEEBajYCBCAAKALcAxCGAiELIAUoAgQgBS0ACyIGQf8AcSAGQYABcUEHdhsEQCAFKAIAIAUgBS0AC0GAAXFBB3YbKAIAIAtBLSALKAIAKAIsEQMARiEMCyAAQcQDaiIKQgA3AgAgCkEANgIIIABBuANqIgZCADcCACAGQQA2AgggAEGsA2oiCUIANwIAIAlBADYCCCACIAwgACgC3AMgAEHYA2ogAEHUA2ogAEHQA2ogCiAGIAkgAEGoA2oQzgMgAEHUADYCECAAQQA2AgggACAAQRBqIgIoAgA2AgwCQAJ/IAUoAgQgBS0ACyIHQf8AcSAHQYABcUEHdhsiByAAKAKoAyINSgRAIAcgDWtBAXQgCSgCBCAJLQALIghB/wBxIAhBgAFxQQd2G2ogBigCBCAGLQALIghB/wBxIAhBgAFxQQd2G2pBAWoMAQsgCSgCBCAJLQALIghB/wBxIAhBgAFxQQd2GyAGKAIEIAYtAAsiCEH/AHEgCEGAAXFBB3YbakECagsgDWoiCEHlAE8EQCAIQQJ0EDMhByAAKAIIIQIgACAHNgIIIAIEQCACIAAoAgwRAQALIAAoAggiAkUNASAFKAIEIAUtAAsiB0H/AHEgB0GAAXFBB3YbIQcLIAIgAEEEaiAAIAMoAgQgBSgCACAFIAUtAAtBgAFxQQd2GyIFIAUgB0ECdGogCyAMIABB2ANqIAAoAtQDIAAoAtADIAogBiAJIA0QzwMgASACIAAoAgQgACgCACADIAQQiQMhAiAAKAIIIQEgAEEANgIIIAEEQCABIAAoAgwRAQALIAkQ4wIaIAYQ4wIaIAoQvwIaIAAoAtwDIgEgASgCBEEBayIDNgIEIANBf0YEQCABIAEoAgAoAggRAQALIABB4ANqJAAgAg8LENUBAAsEAEF/CwkAIAAgBRCyAwvVAQACQCAFLQALQYABcUEHdkUEQCAAIAUpAgA3AgAgACAFKAIINgIIDAELIAUoAgAhBCAFKAIEIQIjAEEQayIDJAACQAJAAkAgAkECSQRAIAAgAjoACwwBCyACQfD///8DTw0BIANBCGogAkECTwR/IAJBBGpBfHEiASABQQFrIgEgAUECRhsFQQELQQFqELkCIAAgAygCCCIBNgIAIAAgAygCDEGAgICAeHI2AgggACACNgIEIAEhAAsgACAEIAJBAWoQgQIaIANBEGokAAwBCxBVAAsLC3UBAn8jAEEQayIDJAAgA0EEaiICIAA2AgAgAiAAKAIEIgA2AgQgAiAAIAFBAnRqNgIIIAIoAgQhASACKAIIIQADQCAAIAFGBEAgAigCACACKAIENgIEIANBEGokAAUgAUEANgIAIAIgAUEEaiIBNgIEDAELCwsMACAAIAAoAgAQ2AMLoAkBCn8jAEEQayIKJAAgASABKAIEQQFqNgIEIABBCGohBCAKQQxqIgkgATYCACACIAAoAgwgACgCCCIAa0ECdU8EfwJAIAJBAWoiACAEKAIEIAQoAgAiA2tBAnUiAUsEQCMAQSBrIgskAAJAIAAgAWsiBiAEKAIIIAQoAgQiAWtBAnVNBEAgBCAGENUDDAELIARBEGohByALQQxqIQACfyAGIAEgBCgCAGtBAnVqIQUjAEEQayIDJAAgAyAFNgIMIAUQ2QMiAU0EQCAEKAIIIAQoAgBrQQJ1IgUgAUEBdkkEQCADIAVBAXQ2AgggA0EMaiADQQhqIAMoAgggAygCDEkbKAIAIQELIANBEGokACABDAELEFcACyEBIAQoAgQgBCgCAGtBAnUhCCMAQRBrIgMkACAAQQA2AgwgACAHNgIQIAACfyABRQRAQQAhAUEADAELIANBCGogACgCECABENoDIAMoAgwhASADKAIICyIFNgIAIAAgBSAIQQJ0aiIHNgIIIAAgBzYCBCAAIAUgAUECdGo2AgwgA0EQaiQAIwBBEGsiAyQAIAMgACgCCDYCBCAAKAIIIQEgAyAAQQhqNgIMIAMgASAGQQJ0ajYCCCADKAIEIQEDQCADKAIIIAFHBEAgAUEANgIAIAMgAygCBEEEaiIBNgIEDAELCyADKAIMIAMoAgQ2AgAgA0EQaiQAIwBBEGsiBiQAIAYgBCgCBDYCDCAGIAQoAgA2AgggBiAAKAIENgIEIAYoAgwhBSAGKAIIIQggBigCBCEMIwBBEGsiByQAIwBBIGsiASQAIwBBEGsiAyQAIAMgCDYCDCABIAU2AhggASADKAIMNgIcIANBEGokACABKAIYIQUgASgCHCEIIwBBEGsiAyQAIAMgDDYCCCADIAU2AgwDQCAFIAhHBEAgAygCCEEEayAFQQRrKAIANgIAIAMgAygCDEEEazYCDCADIAMoAghBBGs2AgggAygCDCEFDAELCyABIAU2AhAgASADKAIINgIUIANBEGokACABKAIQIQMgASABKAIUNgIMIAcgAzYCCCAHIAEoAgw2AgwgAUEgaiQAIAcoAgwhASAHQRBqJAAgACABNgIEIAQoAgAhASAEIAAoAgQ2AgAgACABNgIEIAQoAgQhASAEIAAoAgg2AgQgACABNgIIIAQoAgghASAEIAAoAgw2AgggACABNgIMIAAgACgCBDYCACAGQRBqJAAgACgCBCEDIAAoAgghAQNAIAEgA0cEQCAAIAFBBGsiATYCCAwBCwsgACgCACIBBEAgACgCECABIAAoAgwgACgCAGtBAnUQ2wMLCyALQSBqJAAMAQsgACABSQRAIAQgAyAAQQJ0ahDYAwsLIAQoAgAFIAALIAJBAnRqIgEoAgAiAAR/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAQoAgAgAkECdGoFIAELIAkoAgAhACAJQQA2AgAgADYCACAJKAIAIQAgCUEANgIAIAAEQCAAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACwsgCkEQaiQACyYBAX8gACgCBCECA0AgASACRwRAIAJBBGshAgwBCwsgACABNgIEC0sBA38jAEEQayIAJAAgAEH/////AzYCDCAAQf////8HNgIIIABBCGoiASAAQQxqIgIgASgCACACKAIASRsoAgAhASAAQRBqJAAgAQs2AAJ/AkAgAkEeSw0AIAEtAHgNACABQQE6AHggAQwBCyACELoCCyEBIAAgAjYCBCAAIAE2AgALGgACQCAAIAFGBEAgAUEAOgB4DAELIAEQNAsLDwAgACAAKAIAKAIEEQEACwoAIAAQyQI2AgALGAAgACgCCBDJAkcEQCAAKAIIEK8CCyAACwkAIAAQ3gMQNAvaAQBBmKUULQAABEBBlKUUKAIADwtBmKkULQAARQRAQZipFEEBOgAAC0HwpxRBtOcTEO4DQfynFEHQ5xMQ7gNBiKgUQeznExDuA0GUqBRBjOgTEO4DQaCoFEG06BMQ7gNBrKgUQdjoExDuA0G4qBRB9OgTEO4DQcSoFEGY6RMQ7gNB0KgUQajpExDuA0HcqBRBuOkTEO4DQeioFEHI6RMQ7gNB9KgUQdjpExDuA0GAqRRB6OkTEO4DQYypFEH46RMQ7gNBmKUUQQE6AABBlKUUQfCnFDYCAEHwpxQLyAIAQailFC0AAARAQaSlFCgCAA8LQfCtFC0AAEUEQEHwrRRBAToAAAtB0KsUQYjqExDuA0HcqxRBqOoTEO4DQeirFEHM6hMQ7gNB9KsUQeTqExDuA0GArBRB/OoTEO4DQYysFEGM6xMQ7gNBmKwUQaDrExDuA0GkrBRBtOsTEO4DQbCsFEHQ6xMQ7gNBvKwUQfjrExDuA0HIrBRBmOwTEO4DQdSsFEG87BMQ7gNB4KwUQeDsExDuA0HsrBRB8OwTEO4DQfisFEGA7RMQ7gNBhK0UQZDtExDuA0GQrRRB/OoTEO4DQZytFEGg7RMQ7gNBqK0UQbDtExDuA0G0rRRBwO0TEO4DQcCtFEHQ7RMQ7gNBzK0UQeDtExDuA0HYrRRB8O0TEO4DQeStFEGA7hMQ7gNBqKUUQQE6AABBpKUUQdCrFDYCAEHQqxQLVgBBuKUULQAABEBBtKUUKAIADwtBuK4ULQAARQRAQbiuFEEBOgAAC0GgrhRBkO4TEO4DQayuFEGc7hMQ7gNBuKUUQQE6AABBtKUUQaCuFDYCAEGgrhQLJQBBmKYULQAARQRAQYymFEHExRMQ5ANBmKYUQQE6AAALQYymFAusAQEDfwJAIAEQ7AMhAiMAQRBrIgQkACACQfD///8DSQRAAkAgAkECSQRAIAAgAjoACwwBCyAEQQhqIAJBAk8EfyACQQRqQXxxIgMgA0EBayIDIANBAkYbBUEBC0EBahC5AiAAIAQoAggiAzYCACAAIAQoAgxBgICAgHhyNgIIIAAgAjYCBCADIQALIAAgASACEIECIAJBAnRqQQA2AgAgBEEQaiQADAELEFUACwsKAEGMphQQ4wIaCyUAQbimFC0AAEUEQEGsphRBmMYTEOQDQbimFEEBOgAAC0GsphQLCgBBrKYUEOMCGgslAEHYpRQtAABFBEBBzKUUQfzEExDkA0HYpRRBAToAAAtBzKUUCwoAQcylFBDjAhoLJQBB+KUULQAARQRAQeylFEGgxRMQ5ANB+KUUQQE6AAALQeylFAsKAEHspRQQ4wIaCyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1CxwAQbiuFCEAA0AgAEEMaxDjAiIAQaCuFEcNAAsLtQEBAn8CQCABEOwDIgIgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBAQsiA00EQCAAKAIAIAAgAC0AC0GAAXFBB3YbIAEgAkECdBBLIQECQCAALQALQYABcUEHdgRAIAAgAjYCBAwBCyAAIAI6AAsLIAEgAkECdGpBADYCAAwBCyAAIAMgAiADayAAKAIEIAAtAAsiAEH/AHEgAEGAAXFBB3YbIgBBACAAIAIgARC7BAsLHABB8K0UIQADQCAAQQxrEOMCIgBB0KsURw0ACwscAEGYqRQhAANAIABBDGsQ4wIiAEHwpxRHDQALC84BAEGQpRQtAAAEQEGMpRQoAgAPC0HopxQtAABFBEBB6KcUQQE6AAALQcCmFEHAOhD9A0HMphRBxzoQ/QNB2KYUQaU6EP0DQeSmFEGtOhD9A0HwphRBnDoQ/QNB/KYUQc46EP0DQYinFEG3OhD9A0GUpxRB2D0Q/QNBoKcUQYw+EP0DQaynFEGPwAAQ/QNBuKcUQbHBABD9A0HEpxRBqzsQ/QNB0KcUQd4+EP0DQdynFEHsOxD9A0GQpRRBAToAAEGMpRRBwKYUNgIAQcCmFAuzAgBBoKUULQAABEBBnKUUKAIADwtBwKsULQAARQRAQcCrFEEBOgAAC0GgqRRBjzoQ/QNBrKkUQYY6EP0DQbipFEH3PhD9A0HEqRRByD4Q/QNB0KkUQdU6EP0DQdypFEGpwAAQ/QNB6KkUQZc6EP0DQfSpFEGvOxD9A0GAqhRB5jwQ/QNBjKoUQdU8EP0DQZiqFEHdPBD9A0GkqhRB8DwQ/QNBsKoUQZQ+EP0DQbyqFEHTwQAQ/QNByKoUQYc9EP0DQdSqFEG3PBD9A0HgqhRB1ToQ/QNB7KoUQdw9EP0DQfiqFEG1PhD9A0GEqxRB/T4Q/QNBkKsUQb09EP0DQZyrFEHiOxD9A0GoqxRBpzsQ/QNBtKsUQc/BABD9A0GgpRRBAToAAEGcpRRBoKkUNgIAQaCpFAtWAEGwpRQtAAAEQEGspRQoAgAPC0GYrhQtAABFBEBBmK4UQQE6AAALQYCuFEGAxQAQ/QNBjK4UQfPEABD9A0GwpRRBAToAAEGspRRBgK4UNgIAQYCuFAskAEGIphQtAABFBEBB/KUUQefDABBTQYimFEEBOgAAC0H8pRQLCgBB/KUUEL8CGgsjAEGophQtAABFBEBBnKYUQcE9EFNBqKYUQQE6AAALQZymFAsKAEGcphQQvwIaCyMAQcilFC0AAEUEQEG8pRRB2ToQU0HIpRRBAToAAAtBvKUUCwoAQbylFBC/AhoLJABB6KUULQAARQRAQdylFEGnxAAQU0HopRRBAToAAAtB3KUUCwoAQdylFBC/AhoLHABBmK4UIQADQCAAQQxrEL8CIgBBgK4URw0ACwuHAQECfwJAIAEQLyICIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgNNBEAgACAAKAIAIAAgAC0AC0GAAXFBB3YbIAEgAhBLIAIQkAIMAQsgACADIAIgA2sgACgCBCAALQALIgBB/wBxIABBgAFxQQd2GyIAQQAgACACIAEQugQLCxwAQcCrFCEAA0AgAEEMaxC/AiIAQaCpFEcNAAsLHABB6KcUIQADQCAAQQxrEL8CIgBBwKYURw0ACwsJACAAEIEEEDQLFgAgAEGwxBM2AgAgAEEQahC/AhogAAsHACAAKAIICwcAIAAoAgwLDAAgACABQRBqELIDCwsAIABB0MQTEOQDCwsAIABB5MQTEOQDCwkAIAAQiAQQNAsWACAAQYjEEzYCACAAQQxqEL8CGiAACwcAIAAsAAgLBwAgACwACQsMACAAIAFBDGoQsgMLCgAgAEGKwAAQUwsKACAAQZrAABBTC48EACMAQRBrIgAkACAAIAI2AgwgACAFNgIIAn8gACACNgIMIAAgBTYCCCAAKAIMIQECQANAIAEgA08EQEEAIQIMAgtBAiECIAEoAgAiAUH//8MASw0BIAFBgHBxQYCwA0YNAQJAAkAgAUH/AE0EQEEBIQIgBiAAKAIIIgVrQQBMDQQgACAFQQFqNgIIIAUgAToAAAwBCyABQf8PTQRAIAYgACgCCCICa0ECSA0CIAAgAkEBajYCCCACIAFBBnZBwAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBiAAKAIIIgJrIQUgAUH//wNNBEAgBUEDSA0CIAAgAkEBajYCCCACIAFBDHZB4AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEGdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyAFQQRIDQEgACACQQFqNgIIIAIgAUESdkHwAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQx2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAALIAAgACgCDEEEaiIBNgIMDAELC0EBDAELIAILIQEgBCAAKAIMNgIAIAcgACgCCDYCACAAQRBqJAAgAQu9BAEFfyMAQRBrIgAkACAAIAI2AgwgACAFNgIIAn8gACACNgIMIAAgBTYCCAJAAkADQAJAIAAoAgwiASADTw0AIAUgBk8NACABLAAAIghB/wFxIQICQCAIQQBOBEBBASEIDAELQQIhCiAIQUJJDQMgCEFfTQRAIAMgAWtBAkgNBSABLQABIghBwAFxQYABRw0EIAhBP3EgAkEGdEHAD3FyIQJBAiEIDAELIAhBb00EQCADIAFrQQNIDQUgAS0AAiEJIAEtAAEhCAJAAkAgAkHtAUcEQCACQeABRw0BIAhB4AFxQaABRg0CDAcLIAhB4AFxQYABRg0BDAYLIAhBwAFxQYABRw0FCyAJQcABcUGAAUcNBCAJQT9xIAJBDHRBgOADcSAIQT9xQQZ0cnIhAkEDIQgMAQsgCEF0Sw0DIAMgAWtBBEgNBCABLQADIQsgAS0AAiEMIAEtAAEhCQJAAkACQAJAIAJB8AFrDgUAAgICAQILIAlB8ABqQf8BcUEwSQ0CDAYLIAlB8AFxQYABRg0BDAULIAlBwAFxQYABRw0ECyAMQcABcUGAAUcNAyALQcABcUGAAUcNA0EEIQggC0E/cSAMQQZ0QcAfcSACQRJ0QYCA8ABxIAlBP3FBDHRycnIiAkH//8MASw0DCyAFIAI2AgAgACABIAhqNgIMIAAgACgCCEEEaiIFNgIIDAELCyABIANJIQoLIAoMAQtBAQshASAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACABCwsAIAQgAjYCAEEDC44DAQR/IAIhAANAAkAgACADTw0AIAQgB00NAEEBIQUCQCAALAAAIgFBAE4NACABQUJJDQEgAUFfTQRAIAMgAGtBAkgNAkECIQUgAC0AAUHAAXFBgAFHDQIMAQsgAUH/AXEhBiABQW9NBEAgAyAAa0EDSA0CIAAtAAIhCCAALQABIQECQAJAIAZB7QFHBEAgBkHgAUcNASABQeABcUGgAUYNAgwFCyABQeABcUGAAUcNBAwBCyABQcABcUGAAUcNAwtBAyEFIAhBwAFxQYABRw0CDAELIAFBdEsNASADIABrQQRIDQEgAC0AAyEFIAAtAAIhCCAALQABIQECQAJAAkACQCAGQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NBAwCCyABQfABcUGAAUcNAwwBCyABQcABcUGAAUcNAgsgCEHAAXFBgAFHDQEgBUHAAXFBgAFHDQFBBCEFIAZBEnRBgIDwAHEgAUEwcUEMdHJB///DAEsNAQsgB0EBaiEHIAAgBWohAAwBCwsgACACawsEAEEEC8gFAQF/IwBBEGsiACQAIAAgAjYCDCAAIAU2AggCfyAAIAI2AgwgACAFNgIIIAAoAgwhAgJAA0AgAiADTwRAQQAhBQwCCwJAAkAgAi8BACIBQf8ATQRAQQEhBSAGIAAoAggiAmtBAEwNBCAAIAJBAWo2AgggAiABOgAADAELIAFB/w9NBEAgBiAAKAIIIgJrQQJIDQIgACACQQFqNgIIIAIgAUEGdkHAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyABQf+vA00EQCAGIAAoAggiAmtBA0gNAiAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsCQAJAIAFB/7cDTQRAQQEhBSADIAJrQQRIDQYgAi8BAiIIQYD4A3FBgLgDRw0BIAYgACgCCGtBBEgNBiAAIAJBAmo2AgwgACAAKAIIIgJBAWo2AgggAiABQQZ2QQ9xQQFqIgJBAnZB8AFyOgAAIAAgACgCCCIFQQFqNgIIIAUgAkEEdEEwcSABQQJ2QQ9xckGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiAIQQZ2QQ9xIAFBBHRBMHFyQYABcjoAACAAIAAoAggiAUEBajYCCCABIAhBP3FBgAFyOgAADAMLIAFBgMADTw0BC0ECDAULIAYgACgCCCICa0EDSA0BIAAgAkEBajYCCCACIAFBDHZB4AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEGdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAsgACAAKAIMQQJqIgI2AgwMAQsLQQEMAQsgBQshASAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACABC5oFAQN/IwBBEGsiACQAIAAgAjYCDCAAIAU2AggCfyAAIAI2AgwgACAFNgIIAkACQAJAA0ACQCAAKAIMIgEgA08NACAFIAZPDQAgASwAACIIQf8BcSECIAACfyAIQQBOBEAgBSACOwEAIAFBAWoMAQtBAiEKIAhBQkkNBSAIQV9NBEAgAyABa0ECSA0FIAEtAAEiCEHAAXFBgAFHDQQgBSAIQT9xIAJBBnRBwA9xcjsBACABQQJqDAELIAhBb00EQCADIAFrQQNIDQUgAS0AAiEJIAEtAAEhCAJAAkAgAkHtAUcEQCACQeABRw0BIAhB4AFxQaABRg0CDAcLIAhB4AFxQYABRg0BDAYLIAhBwAFxQYABRw0FCyAJQcABcUGAAUcNBCAFIAlBP3EgCEE/cUEGdCACQQx0cnI7AQAgAUEDagwBCyAIQXRLDQVBASEKIAMgAWtBBEgNAyABLQADIQkgAS0AAiEIIAEtAAEhAQJAAkACQAJAIAJB8AFrDgUAAgICAQILIAFB8ABqQf8BcUEwTw0IDAILIAFB8AFxQYABRw0HDAELIAFBwAFxQYABRw0GCyAIQcABcUGAAUcNBSAJQcABcUGAAUcNBSAGIAVrQQRIDQNBAiEKIAFBDHRBgIAMcSACQQdxIgJBEnRyQf//wwBLDQMgBSAIQQR2QQNxIAFBAnQiAUHAAXEgAkEIdHIgAUE8cXJyQcD/AGpBgLADcjsBACAAIAVBAmo2AgggBSAIQQZ0QcAHcSAJQT9xckGAuANyOwECIAAoAgxBBGoLNgIMIAAgACgCCEECaiIFNgIIDAELCyABIANJIQoLIAoMAgtBAQwBC0ECCyEBIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAIAELowMBBH9BACEBIAIhAANAAkAgACADTw0AIAEgBE8NAEEBIQYCQCAALAAAIgVBAE4NACAFQUJJDQEgBUFfTQRAIAMgAGtBAkgNAkECIQYgAC0AAUHAAXFBgAFHDQIMAQsgBUH/AXEhBiAFQW9NBEAgAyAAa0EDSA0CIAAtAAIhByAALQABIQUCQAJAIAZB7QFHBEAgBkHgAUcNASAFQeABcUGgAUYNAgwFCyAFQeABcUGAAUcNBAwBCyAFQcABcUGAAUcNAwtBAyEGIAdBwAFxQYABRw0CDAELIAVBdEsNASADIABrQQRIDQEgBCABa0ECSQ0BIAAtAAMhByAALQACIQggAC0AASEFAkACQAJAAkAgBkHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBPDQQMAgsgBUHwAXFBgAFHDQMMAQsgBUHAAXFBgAFHDQILIAhBwAFxQYABRw0BIAdBwAFxQYABRw0BIAZBEnRBgIDwAHEgBUEwcUEMdHJB///DAEsNASABQQFqIQFBBCEGCyABQQFqIQEgACAGaiEADAELCyAAIAJrCwkAIAAQlwQQNAshACAAQdjDEzYCACAAKAIIEMkCRwRAIAAoAggQrwILIAALzQUBC38jAEEQayINJAAgAiEBA0ACQCABIANGBEAgAyEBDAELIAEoAgBFDQAgAUEEaiEBDAELCyAHIAU2AgAgBCACNgIAA0ACQAJAAkAgAiADRg0AIAUgBkYNAEEBIQ4gACgCCCEIIwBBEGsiESQAIBFBDGogCBDfAiESIAEgAmtBAnUhDyAGIAUiCGshCkEAIQwjAEEQayIQJAACQCAEKAIAIglFDQAgD0UNACAKQQAgCBshCgNAIBBBDGogCCAKQQRJGyAJKAIAENQBIgtBf0YEQEF/IQwMAgsgCAR/IApBA00EQCAKIAtJDQMgCCAQQQxqIAsQKxoLIAogC2shCiAIIAtqBUEACyEIIAkoAgBFBEBBACEJDAILIAsgDGohDCAJQQRqIQkgD0EBayIPDQALCyAIBEAgBCAJNgIACyAQQRBqJAAgDCEIIBIoAgAiCQRAQcyZFCgCABogCQRAQcyZFEHcohQgCSAJQX9GGzYCAAsLIBFBEGokAAJAAkACQAJAAkAgCEEBag4CAAYBCyAHIAU2AgADQAJAIAIgBCgCAEYNACAFIAIoAgAgACgCCBCZBCIBQX9GDQAgByAHKAIAIAFqIgU2AgAgAkEEaiECDAELCyAEIAI2AgAMAQsgByAHKAIAIAhqIgU2AgAgBSAGRg0CIAEgA0YEQCAEKAIAIQIgAyEBDAcLIA1BDGpBACAAKAIIEJkEIgFBf0cNAQtBAiEODAMLIA1BDGohAiAGIAcoAgBrIAFJDQIDQCABBEAgAi0AACEFIAcgBygCACIIQQFqNgIAIAggBToAACABQQFrIQEgAkEBaiECDAELCyAEIAQoAgBBBGoiAjYCACACIQEDQCABIANGBEAgAyEBDAULIAEoAgBFDQQgAUEEaiEBDAALAAsgBCgCACECCyACIANHIQ4LIA1BEGokACAODwsgBygCACEFDAALAAtVAQF/IwBBEGsiAyQAIANBDGogAhDfAiECIAAgARDUASEBIAIoAgAiAARAQcyZFCgCABogAARAQcyZFEHcohQgACAAQX9GGzYCAAsLIANBEGokACABC4sHAQ5/IwBBEGsiESQAIAIhCQNAAkAgAyAJRgRAIAMhCQwBCyAJLQAARQ0AIAlBAWohCQwBCwsgByAFNgIAIAQgAjYCAANAAkACfwJAIAIgA0YNACAFIAZGDQAgESABKQIANwMIIAAoAgghCCMAQRBrIhMkACATQQxqIAgQ3wIhFCAJIAJrIQxBACEKQQAhDSMAQZAIayIOJAAgDiAEKAIAIhA2AgwgBiAFa0ECdUGAAiAFGyELIAUgDkEQaiAFGyEPAkACQAJAAkAgEEUNACALRQ0AA0AgDEECdiEIAkAgDEGDAUsNACAIIAtPDQAgECEIDAQLIA8gDkEMaiAIIAsgCCALSRsgARCwAiESIA4oAgwhCCASQX9GBEBBACELQX8hCgwDCyALIBJBACAPIA5BEGpHGyIVayELIA8gFUECdGohDyAMIBBqIAhrQQAgCBshDCAKIBJqIQogCEUNAiAIIRAgCw0ACwwBCyAQIQgLIAhFDQELAkAgC0UNACAMRQ0AIAghDSAKIQgDQAJAAkAgDyANIAwgARDLASIKQQJqQQJNBEACQAJAIApBAWoOAgcAAQtBACENDAILIAFBADYCAAwBCyAOIAogDWoiDTYCDCAIQQFqIQggC0EBayILDQELIAghCgwDCyAPQQRqIQ8gDCAKayEMIAghCiAMDQALDAELIAghDQsgBQRAIAQgDTYCAAsgDkGQCGokACAKIQggFCgCACIKBEBBzJkUKAIAGiAKBEBBzJkUQdyiFCAKIApBf0YbNgIACwsgE0EQaiQAAkACQAJAAkAgCEF/RgRAA0ACQCAHIAU2AgAgAiAEKAIARg0AQQEhBgJAAkACQCAFIAIgCSACayARQQhqIAAoAggQmwQiAUECag4DCAACAQsgBCACNgIADAULIAEhBgsgAiAGaiECIAcoAgBBBGohBQwBCwsgBCACNgIADAULIAcgBygCACAIQQJ0aiIFNgIAIAUgBkYNAyAEKAIAIQIgAyAJRgRAIAMhCQwICyAFIAJBASABIAAoAggQmwRFDQELQQIMBAsgByAHKAIAQQRqNgIAIAQgBCgCAEEBaiICNgIAIAIhCQNAIAMgCUYEQCADIQkMBgsgCS0AAEUNBSAJQQFqIQkMAAsACyAEIAI2AgBBAQwCCyAEKAIAIQILIAIgA0cLIQAgEUEQaiQAIAAPCyAHKAIAIQUMAAsAC1kBAX8jAEEQayIFJAAgBUEMaiAEEN8CIQQgACABIAIgAxDLASEBIAQoAgAiAARAQcyZFCgCABogAARAQcyZFEHcohQgACAAQX9GGzYCAAsLIAVBEGokACABC5IBAQF/IwBBEGsiBSQAIAQgAjYCAAJ/QQIgBUEMakEAIAAoAggQmQQiAEEBakECSQ0AGkEBIABBAWsiAiADIAQoAgBrSw0AGiAFQQxqIQEDfyACBH8gAS0AACEAIAQgBCgCACIDQQFqNgIAIAMgADoAACACQQFrIQIgAUEBaiEBDAEFQQALCwshASAFQRBqJAAgAQtjAQJ/IAAoAgghASMAQRBrIgIkACACQQxqIAEQ3wIoAgAiAQRAQcyZFCgCABogAQRAQcyZFEHcohQgASABQX9GGzYCAAsLIAJBEGokACAAKAIIIgBFBEBBAQ8LIAAQngRBAUYLXQECfyMAQRBrIgEkACABQQxqIAAQ3wIhAEEEQQFBzJkUKAIAKAIAGyECIAAoAgAiAARAQcyZFCgCABogAARAQcyZFEHcohQgACAAQX9GGzYCAAsLIAFBEGokACACC64BAQZ/A0ACQCAEIAhNDQAgAiADRg0AQQEhByAAKAIIIQYjAEEQayIJJAAgCUEMaiAGEN8CIQVBACACIAMgAmsgAUH0ohQgARsQywEhBiAFKAIAIgUEQEHMmRQoAgAaIAUEQEHMmRRB3KIUIAUgBUF/Rhs2AgALCyAJQRBqJAACQAJAIAZBAmoOAwICAQALIAYhBwsgCEEBaiEIIAcgCmohCiACIAdqIQIMAQsLIAoLFQAgACgCCCIARQRAQQEPCyAAEJ4ECxIAIAQgAjYCACAHIAU2AgBBAwtEACMAQRBrIgAkACAAIAQ2AgwgACADIAJrNgIIIABBCGoiASAAQQxqIgIgASgCACACKAIASRsoAgAhASAAQRBqJAAgAQslAEEAIQAgAkH/AE0EfyACQQJ0QdC7E2ooAgAgAXFBAEcFQQALC0kBAX8DQCABIAJGRQRAQQAhACADIAEoAgAiBEH/AE0EfyAEQQJ0QdC7E2ooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAILQAADQAJAIAIgA0cEfyACKAIAIgBB/wBLDQEgAEECdEHQuxNqKAIAIAFxRQ0BIAIFIAMLDwsgAkEEaiECDAALAAtBAAJAA0AgAiADRg0BAkAgAigCACIAQf8ASw0AIABBAnRB0LsTaigCACABcUUNACACQQRqIQIMAQsLIAIhAwsgAwsbACABQf8ATQR/IAFBAnRBwK8TaigCAAUgAQsLPAADQCABIAJGRQRAIAEgASgCACIAQf8ATQR/IABBAnRBwK8TaigCAAUgAAs2AgAgAUEEaiEBDAELCyACCxsAIAFB/wBNBH8gAUECdEHAoxNqKAIABSABCws8AANAIAEgAkZFBEAgASABKAIAIgBB/wBNBH8gAEECdEHAoxNqKAIABSAACzYCACABQQRqIQEMAQsLIAILKgADQCABIAJGRQRAIAMgASwAADYCACADQQRqIQMgAUEBaiEBDAELCyACCw4AIAEgAiABQYABSRvACzUAA0AgASACRkUEQCAEIAEoAgAiACADIABBgAFJGzoAACAEQQFqIQQgAUEEaiEBDAELCyACCwkAIAAQrwQQNAsoAQF/IABBnLsTNgIAAkAgACgCCCIBRQ0AIAAtAAxFDQAgARA0CyAACx8AIAFBAE4EfyABQf8BcUECdEHArxNqKAIABSABC8ALOwADQCABIAJGRQRAIAEgASwAACIAQQBOBH8gAEECdEHArxNqKAIABSAACzoAACABQQFqIQEMAQsLIAILHwAgAUEATgR/IAFB/wFxQQJ0QcCjE2ooAgAFIAELwAs7AANAIAEgAkZFBEAgASABLAAAIgBBAE4EfyAAQQJ0QcCjE2ooAgAFIAALOgAAIAFBAWohAQwBCwsgAgsqAANAIAEgAkZFBEAgAyABLQAAOgAAIANBAWohAyABQQFqIQEMAQsLIAILDAAgAiABIAFBAEgbCzQAA0AgASACRkUEQCAEIAMgASwAACIAIABBAEgbOgAAIARBAWohBCABQQFqIQEMAQsLIAILCQAgABC4BBA0C74BAQR/IABBiLsTNgIAIABBCGohAwNAIAIgACgCDCAAKAIIIgFrQQJ1SQRAIAEgAkECdGooAgAiAQRAIAEgASgCBEEBayIENgIEIARBf0YEQCABIAEoAgAoAggRAQALCyACQQFqIQIMAQsLIABBmAFqEL8CGiMAQRBrIgEkACABIAM2AgwgASgCDCICKAIABEAgAhDWAyABKAIMIgJBEGogAigCACIDIAIoAgggA2tBAnUQ2wMLIAFBEGokACAACwMAAAu9AgEDfyMAQRBrIggkACACQe7///8HIAFrTQRAIAAoAgAgACAALQALQYABcUEHdhshCSAIQQRqIAFB5v///wNNBH8gCCABQQF0NgIMIAggASACajYCBCAIQQxqIgIgCEEEaiIKIAooAgAgAigCAEkbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEI4CIAgoAgQhAiAEBEAgAiAJIAQQ4QEaCyAGBEAgAiAEaiAHIAYQ4QEaCyADIAQgBWoiCmshByADIApHBEAgAiAEaiAGaiAEIAlqIAVqIAcQ4QEaCyABQQpHBEAgCRA0CyAAIAI2AgAgACAIKAIIQYCAgIB4cjYCCCAAIAQgBmogB2oiADYCBCAAIAJqQQA6AAAgCEEQaiQADwsQVQALygIBA38jAEEQayIIJAAgAkHu////AyABa00EQCAAKAIAIAAgAC0AC0GAAXFBB3YbIQkgCEEEaiABQeb///8BTQR/IAggAUEBdDYCDCAIIAEgAmo2AgQgCEEMaiAIQQRqIAgoAgQgCCgCDEkbKAIAIgJBAk8EfyACQQRqQXxxIgIgAkEBayICIAJBAkYbBUEBC0EBagVB7////wMLELkCIAgoAgQhAiAEBEAgAiAJIAQQgQIaCyAGBEAgAiAEQQJ0aiAHIAYQgQIaCyADIAQgBWoiCmshByADIApHBEAgAiAEQQJ0IgNqIAZBAnRqIAMgCWogBUECdGogBxCBAhoLIAFBAUcEQCAJEDQLIAAgAjYCACAAIAgoAghBgICAgHhyNgIIIAAgBCAGaiAHaiIANgIEIAIgAEECdGpBADYCACAIQRBqJAAPCxBVAAu7AgEBfyABQb+EPU0EQCABQY/OAE0EQCABQeMATQRAIAFBCU0EQCAAIAFBMGo6AAAgAEEBag8LIAAgARC9BA8LIAFB5wdNBEAgACABQeQAbiICQTBqOgAAIABBAWogAkGcf2wgAWoQvQQPCyAAIAEQvgQPCyABQZ+NBk0EQCAAIAFBkM4AbiICQTBqOgAAIABBAWogAkHwsX9sIAFqEL4EDwsgACABEL8EDwsgAUH/wdcvTQRAIAFB/6ziBE0EQCAAIAFBwIQ9biICQTBqOgAAIABBAWogAkHA+0JsIAFqEL8EDwsgACABEMAEDwsgAUH/k+vcA00EQCAAIAFBgMLXL24iAkEwajoAACAAQQFqIAJBgL6oUGwgAWoQwAQPCyAAIAFBgMLXL24iABC9BCAAQYC+qFBsIAFqEMAECxgAIAFBAXRBwO8TaiIBIAFBAmogABDmAQsbACAAIAFB5ABuIgAQvQQgAEGcf2wgAWoQvQQLHQAgACABQZDOAG4iABC9BCAAQfCxf2wgAWoQvgQLHQAgACABQcCEPW4iABC9BCAAQcD7QmwgAWoQvwQLgAIBAX8jAEEQayIBJABB4uYSQQtBAUG4+xMQLRogAUEANgIMQbj7EyAAQQAQwwEaAkACQEGE/BMoAgAiAEEATgRAIABFDQFBhJkUKAIAIABB/////3txRw0BCwJAQYj8EygCAEEKRg0AQcz7EygCACIAQcj7EygCAEYNAEHM+xMgAEEBajYCACAAQQo6AAAMAgsQLgwBC0GE/BNBhPwTKAIAIgBB/////wMgABs2AgACQAJAQYj8EygCAEEKRg0AQcz7EygCACIAQcj7EygCAEYNAEHM+xMgAEEBajYCACAAQQo6AAAMAQsQLgtBhPwTKAIAGkGE/BNBADYCAAsQHQALCQBBjz8QwQQACxkAIAAEQEH4/hMoAgARCQBBicEAEMEEAAsLCgBBxOYSEMEEAAsLACAAIAFBABDGBAstACACRQRAIAAoAgQgASgCBEYPCyAAIAFGBEBBAQ8LIAAoAgQgASgCBBC3AUULnwEBAX8jAEFAaiIDJAACf0EBIAAgAUEAEMYEDQAaQQAgAUUNABpBACABQaDzExDIBCIBRQ0AGiADQQxqQQBBNBApGiADQQE2AjggA0F/NgIUIAMgADYCECADIAE2AgggASADQQhqIAIoAgBBASABKAIAKAIcEQoAIAMoAiAiAEEBRgRAIAIgAygCGDYCAAsgAEEBRgshACADQUBrJAAgAAu7AgEEfyMAQUBqIgIkACAAKAIAIgNBBGsoAgAhBCADQQhrKAIAIQUgAkIANwIcIAJCADcCJCACQgA3AiwgAkIANwI0QQAhAyACQQA2ADsgAkIANwIUIAJB8PITNgIQIAIgADYCDCACIAE2AgggACAFaiEAAkAgBCABQQAQxgQEQCACQQE2AjggBCACQQhqIAAgAEEBQQAgBCgCACgCFBEMACAAQQAgAigCIEEBRhshAwwBCyAEIAJBCGogAEEBQQAgBCgCACgCGBENAAJAAkAgAigCLA4CAAECCyACKAIcQQAgAigCKEEBRhtBACACKAIkQQFGG0EAIAIoAjBBAUYbIQMMAQsgAigCIEEBRwRAIAIoAjANASACKAIkQQFHDQEgAigCKEEBRw0BCyACKAIYIQMLIAJBQGskACADCzkAIAAgASgCCCAFEMYEBEAgASACIAMgBBDKBA8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBEMAAuaAQAgAEEBOgA1AkAgACgCBCACRw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwuKAgAgACABKAIIIAQQxgQEQAJAIAEoAgQgAkcNACABKAIcQQFGDQAgASADNgIcCw8LAkAgACABKAIAIAQQxgQEQAJAIAIgASgCEEcEQCABKAIUIAJHDQELIANBAUcNAiABQQE2AiAPCyABIAM2AiACQCABKAIsQQRGDQAgAUEAOwE0IAAoAggiACABIAIgAkEBIAQgACgCACgCFBEMACABLQA1BEAgAUEDNgIsIAEtADRFDQEMAwsgAUEENgIsCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCCCIAIAEgAiADIAQgACgCACgCGBENAAsLMwAgACABKAIIQQAQxgQEQCABIAIgAxDNBA8LIAAoAggiACABIAIgAyAAKAIAKAIcEQoAC10BAX8gACgCECIDRQRAIABBATYCJCAAIAI2AhggACABNgIQDwsCQCABIANGBEAgACgCGEECRw0BIAAgAjYCGA8LIABBAToANiAAQQI2AhggACAAKAIkQQFqNgIkCwsaACAAIAEoAghBABDGBARAIAEgAiADEM0ECwtEACAAIAICf0EAIANFDQAaIAFBCHUiAiABQQFxRQ0AGiACIAMoAgBqKAIACyADaiAEQQIgAUECcRsgACgCACgCHBEKAAt6AQJ/IAAgASgCCEEAEMYEBEAgASACIAMQzQQPCyAAKAIMIQUgACgCECAAKAIUIAEgAiADEM8EAkAgAEEYaiIEIABBEGogBUEDdGoiAE8NAANAIAQoAgAgBCgCBCABIAIgAxDPBCABLQA2DQEgBEEIaiIEIABJDQALCwviBAEFfyMAQUBqIgUkAAJAIAFB3PUTQQAQxgQEQCACQQA2AgBBASEEDAELAn8gAC0ACEEYcQRAIAAgAUEBEMYEDAELAkAgAUUNACABQdDzExDIBCIGRQ0AIAAgASAGKAIIQRhxQQBHEMYEIQMLIAMLBEBBASEEIAIoAgAiAEUNASACIAAoAgA2AgAMAQsgAUUNACABQYD0ExDIBCIBRQ0AIAIoAgAiAwRAIAIgAygCACIHNgIACyABKAIIIgMgACgCCCIGQX9zcUEHcQ0AIANBf3MgBnFB4ABxDQBBASEEIAAoAgwiAyABKAIMIgBBABDGBA0AIANB0PUTQQAQxgQEQCAARQ0BIABBtPQTEMgERSEEDAELQQAhBCADRQ0AIANBgPQTEMgEIgEEQCAGQQFxRQ0BAn8CQANAIABFDQEgAEGA9BMQyAQiAEUNASAAKAIIIAEoAggiA0F/c3ENAUEBIAEoAgwiAiAAKAIMIgBBABDGBA0CGiADQQFxRQ0BIAJFDQEgAkGA9BMQyAQiAQ0ACyACQfD0ExDIBCIBRQ0AIAEgABDSBCEECyAECyEEDAELIANB8PQTEMgEIgEEQCAGQQFxRQ0BIAEgABDSBCEEDAELIANBoPMTEMgEIgFFDQAgAEUNACAAQaDzExDIBCIARQ0AIAVBDGpBAEE0ECkaIAVBATYCOCAFQX82AhQgBSABNgIQIAUgADYCCCAAIAVBCGogB0EBIAAoAgAoAhwRCgACQCAFKAIgIgBBAUcNACACKAIARQ0AIAIgBSgCGDYCAAsgAEEBRiEECyAFQUBrJAAgBAtPAQF/AkAgAUUNACABQfD0ExDIBCIBRQ0AIAEoAgggACgCCEF/c3ENACAAKAIMIAEoAgxBABDGBEUNACAAKAIQIAEoAhBBABDGBCECCyACC9YEAQN/IAAgASgCCCAEEMYEBEACQCABKAIEIAJHDQAgASgCHEEBRg0AIAEgAzYCHAsPCwJAIAAgASgCACAEEMYEBEACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQIgAUEBNgIgDwsgASADNgIgIAEoAixBBEcEQCAAQRBqIgUgACgCDEEDdGohB0EAIQMgAQJ/AkADQAJAIAUgB08NACABQQA7ATQgBSgCACAFKAIEIAEgAiACQQEgBBDUBCABLQA2DQACQCABLQA1RQ0AIAEtADQEQEEBIQMgASgCGEEBRg0EQQEhBiAALQAIQQJxDQEMBAtBASEGIAAtAAhBAXFFDQMLIAVBCGohBQwBCwtBBCAGRQ0BGgtBAws2AiwgA0EBcQ0CCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCDCEGIAAoAhAgACgCFCABIAIgAyAEENUEIABBGGoiBSAAQRBqIAZBA3RqIgZPDQACQCAAKAIIIgBBAnFFBEAgASgCJEEBRw0BCwNAIAEtADYNAiAFKAIAIAUoAgQgASACIAMgBBDVBCAFQQhqIgUgBkkNAAsMAQsgAEEBcUUEQANAIAEtADYNAiABKAIkQQFGDQIgBSgCACAFKAIEIAEgAiADIAQQ1QQgBUEIaiIFIAZJDQAMAgsACwNAIAEtADYNASABKAIkQQFGBEAgASgCGEEBRg0CCyAFKAIAIAUoAgQgASACIAMgBBDVBCAFQQhqIgUgBkkNAAsLC0EBAX8gAUEIdSEHIAAgAiADIAFBAXEEfyAHIAQoAgBqKAIABSAHCyAEaiAFQQIgAUECcRsgBiAAKAIAKAIUEQwACz8BAX8gAUEIdSEGIAAgAiABQQFxBH8gBiADKAIAaigCAAUgBgsgA2ogBEECIAFBAnEbIAUgACgCACgCGBENAAupAQAgACABKAIIIAQQxgQEQAJAIAEoAgQgAkcNACABKAIcQQFGDQAgASADNgIcCw8LAkAgACABKAIAIAQQxgRFDQACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQEgAUEBNgIgDwsgASACNgIUIAEgAzYCICABIAEoAihBAWo2AigCQCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsgAUEENgIsCwuhAgEGfyAAIAEoAgggBRDGBARAIAEgAiADIAQQygQPCyABLQA1IQYgACgCDCEIIAFBADoANSABLQA0IQcgAUEAOgA0IAAoAhAgACgCFCABIAIgAyAEIAUQ1AQgBiABLQA1IgpyIQkgByABLQA0IgtyIQcCQCAAQRhqIgYgAEEQaiAIQQN0aiIITw0AA0AgAS0ANg0BAkAgCwRAIAEoAhhBAUYNAyAALQAIQQJxDQEMAwsgCkUNACAALQAIQQFxRQ0CCyABQQA7ATQgBigCACAGKAIEIAEgAiADIAQgBRDUBCABLQA1IgogCXIhCSABLQA0IgsgB3IhByAGQQhqIgYgCEkNAAsLIAEgCUH/AXFBAEc6ADUgASAHQf8BcUEARzoANAscACAAIAEoAgggBRDGBARAIAEgAiADIAQQygQLCxcAIABFBEBBAA8LIABBgPQTEMgEQQBHCwUAQeA9CwYAQbXBAAsFAEHiPgsIACAAEFoQNAsHACAAKAIEC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgCyIBAX4gASACrSADrUIghoQgBCAAERYAIgVCIIinJAEgBacLGQAgASACIAOtIAStQiCGhCAFIAYgABEjAAsZACABIAIgAyAEIAWtIAatQiCGhCAAERQACyMAIAEgAiADIAQgBa0gBq1CIIaEIAetIAitQiCGhCAAERwACyUAIAEgAiADIAQgBSAGrSAHrUIghoQgCK0gCa1CIIaEIAARHQALHAAgACABQQggAqcgAkIgiKcgA6cgA0IgiKcQIQsLv9oTugEAQYAIC3D+gitlRxVnQAAAAAAAADhDAAD6/kIudr86O568mvcMvb39/////98/PFRVVVVVxT+RKxfPVVWlPxfQpGcREYE/AAAAAAAAyELvOfr+Qi7mPyTEgv+9v84/tfQM1whrrD/MUEbSq7KDP4Q6Tpvg11U/AEH+CAvCEPA/br+IGk87mzw1M/upPfbvP13c2JwTYHG8YYB3Pprs7z/RZocQel6QvIV/bugV4+8/E/ZnNVLSjDx0hRXTsNnvP/qO+SOAzou83vbdKWvQ7z9hyOZhTvdgPMibdRhFx+8/mdMzW+SjkDyD88bKPr7vP217g12mmpc8D4n5bFi17z/87/2SGrWOPPdHciuSrO8/0ZwvcD2+Pjyi0dMy7KPvPwtukIk0A2q8G9P+r2ab7z8OvS8qUlaVvFFbEtABk+8/VepOjO+AULzMMWzAvYrvPxb01bkjyZG84C2prpqC7z+vVVzp49OAPFGOpciYeu8/SJOl6hUbgLx7UX08uHLvPz0y3lXwH4+86o2MOPlq7z+/UxM/jImLPHXLb+tbY+8/JusRdpzZlrzUXASE4FvvP2AvOj737Jo8qrloMYdU7z+dOIbLguePvB3Z/CJQTe8/jcOmREFvijzWjGKIO0bvP30E5LAFeoA8ltx9kUk/7z+UqKjj/Y6WPDhidW56OO8/fUh08hhehzw/prJPzjHvP/LnH5grR4A83XziZUUr7z9eCHE/e7iWvIFj9eHfJO8/MasJbeH3gjzh3h/1nR7vP/q/bxqbIT28kNna0H8Y7z+0CgxygjeLPAsD5KaFEu8/j8vOiZIUbjxWLz6prwzvP7arsE11TYM8FbcxCv4G7z9MdKziAUKGPDHYTPxwAe8/SvjTXTndjzz/FmSyCPzuPwRbjjuAo4a88Z+SX8X27j9oUEvM7UqSvMupOjen8e4/ji1RG/gHmbxm2AVtruzuP9I2lD7o0XG895/lNNvn7j8VG86zGRmZvOWoE8Mt4+4/bUwqp0ifhTwiNBJMpt7uP4ppKHpgEpO8HICsBEXa7j9biRdIj6dYvCou9yEK1u4/G5pJZ5ssfLyXqFDZ9dHuPxGswmDtY0M8LYlhYAjO7j/vZAY7CWaWPFcAHe1Byu4/eQOh2uHMbjzQPMG1osbuPzASDz+O/5M83tPX8CrD7j+wr3q7zpB2PCcqNtXav+4/d+BU670dkzwN3f2ZsrzuP46jcQA0lI+8pyyddrK57j9Jo5PczN6HvEJmz6Latu4/XzgPvcbeeLyCT51WK7TuP/Zce+xGEoa8D5JdyqSx7j+O1/0YBTWTPNontTZHr+4/BZuKL7eYezz9x5fUEq3uPwlUHOLhY5A8KVRI3Qer7j/qxhlQhcc0PLdGWYomqe4/NcBkK+YylDxIIa0Vb6fuP592mWFK5Iy8Cdx2ueGl7j+oTe87xTOMvIVVOrB+pO4/rukriXhThLwgw8w0RqPuP1hYVnjdzpO8JSJVgjii7j9kGX6AqhBXPHOpTNRVoe4/KCJev++zk7zNO39mnqDuP4K5NIetEmq8v9oLdRKg7j/uqW2472djvC8aZTyyn+4/UYjgVD3cgLyElFH5fZ/uP88+Wn5kH3i8dF/s6HWf7j+wfYvASu6GvHSBpUian+4/iuZVHjIZhrzJZ0JW65/uP9PUCV7LnJA8P13eT2mg7j8dpU253DJ7vIcB63MUoe4/a8BnVP3slDwywTAB7aHuP1Vs1qvh62U8Yk7PNvOi7j9Cz7MvxaGIvBIaPlQnpO4/NDc78bZpk7wTzkyZiaXuPx7/GTqEXoC8rccjRhqn7j9uV3LYUNSUvO2SRJvZqO4/AIoOW2etkDyZZorZx6ruP7Tq8MEvt40826AqQuWs7j//58WcYLZlvIxEtRYyr+4/RF/zWYP2ezw2dxWZrrHuP4M9HqcfCZO8xv+RC1u07j8pHmyLuKldvOXFzbA3t+4/WbmQfPkjbLwPUsjLRLruP6r59CJDQ5K8UE7en4K97j9LjmbXbMqFvLoHynDxwO4/J86RK/yvcTyQ8KOCkcTuP7tzCuE10m08IyPjGWPI7j9jImIiBMWHvGXlXXtmzO4/1THi44YcizwzLUrsm9DuPxW7vNPRu5G8XSU+sgPV7j/SMe6cMcyQPFizMBOe2e4/s1pzboRphDy//XlVa97uP7SdjpfN34K8evPTv2vj7j+HM8uSdxqMPK3TWpmf6O4/+tnRSo97kLxmto0pB+7uP7qu3FbZw1W8+xVPuKLz7j9A9qY9DqSQvDpZ5Y1y+e4/NJOtOPTWaLxHXvvydv/uPzWKWGvi7pG8SgahMLAF7z/N3V8K1/90PNLBS5AeDO8/rJiS+vu9kbwJHtdbwhLvP7MMrzCubnM8nFKF3ZsZ7z+U/Z9cMuOOPHrQ/1+rIO8/rFkJ0Y/ghDxL0Vcu8SfvP2caTjivzWM8tecGlG0v7z9oGZJsLGtnPGmQ79wgN+8/0rXMgxiKgLz6w11VCz/vP2/6/z9drY+8fIkHSi1H7z9JqXU4rg2QvPKJDQiHT+8/pwc9poWjdDyHpPvcGFjvPw8iQCCekYK8mIPJFuNg7z+sksHVUFqOPIUy2wPmae8/S2sBrFk6hDxgtAHzIXPvPx8+tAch1YK8X5t7M5d87z/JDUc7uSqJvCmh9RRGhu8/04g6YAS2dDz2P4vnLpDvP3FynVHsxYM8g0zH+1Ga7z/wkdOPEvePvNqQpKKvpO8/fXQj4piujbzxZ44tSK/vPwggqkG8w448J1ph7hu67z8y66nDlCuEPJe6azcrxe8/7oXRMalkijxARW5bdtDvP+3jO+S6N468FL6crf3b7z+dzZFNO4l3PNiQnoHB5+8/icxgQcEFUzzxcY8rwvPvPwA4+v5CLuY/MGfHk1fzLj0AAAAAAADgv2BVVVVVVeW/BgAAAAAA4D9OVVmZmZnpP3qkKVVVVeW/6UVIm1tJ8r/DPyaLKwDwPwAAAAAAoPY/AEHJGQsXyLnygizWv4BWNygktPo8AAAAAACA9j8AQekZCxcIWL+90dW/IPfg2AilHL0AAAAAAGD2PwBBiRoLF1hFF3d21b9tULbVpGIjvQAAAAAAQPY/AEGpGgsX+C2HrRrVv9VnsJ7khOa8AAAAAAAg9j8AQckaCxd4d5VfvtS/4D4pk2kbBL0AAAAAAAD2PwBB6RoLF2Acwoth1L/MhExIL9gTPQAAAAAA4PU/AEGJGwsXqIaGMATUvzoLgu3zQtw8AAAAAADA9T8AQakbCxdIaVVMptO/YJRRhsaxID0AAAAAAKD1PwBByRsLF4CYmt1H07+SgMXUTVklPQAAAAAAgPU/AEHpGwsXIOG64ujSv9grt5keeyY9AAAAAABg9T8AQYkcCxeI3hNaidK/P7DPthTKFT0AAAAAAGD1PwBBqRwLF4jeE1qJ0r8/sM+2FMoVPQAAAAAAQPU/AEHJHAsXeM/7QSnSv3baUygkWha9AAAAAAAg9T8AQekcCxeYacGYyNG/BFTnaLyvH70AAAAAAAD1PwBBiR0LF6irq1xn0b/wqIIzxh8fPQAAAAAA4PQ/AEGpHQsXSK75iwXRv2ZaBf3EqCa9AAAAAADA9D8AQckdCxeQc+Iko9C/DgP0fu5rDL0AAAAAAKD0PwBB6R0LF9C0lCVA0L9/LfSeuDbwvAAAAAAAoPQ/AEGJHgsX0LSUJUDQv38t9J64NvC8AAAAAACA9D8AQakeCxdAXm0Yuc+/hzyZqypXDT0AAAAAAGD0PwBByR4LF2Dcy63wzr8kr4actyYrPQAAAAAAQPQ/AEHpHgsX8CpuByfOvxD/P1RPLxe9AAAAAAAg9D8AQYkfCxfAT2shXM2/G2jKu5G6IT0AAAAAAAD0PwBBqR8LF6Cax/ePzL80hJ9oT3knPQAAAAAAAPQ/AEHJHwsXoJrH94/MvzSEn2hPeSc9AAAAAADg8z8AQekfCxeQLXSGwsu/j7eLMbBOGT0AAAAAAMDzPwBBiSALF8CATsnzyr9mkM0/Y066PAAAAAAAoPM/AEGpIAsXsOIfvCPKv+rBRtxkjCW9AAAAAACg8z8AQckgCxew4h+8I8q/6sFG3GSMJb0AAAAAAIDzPwBB6SALF1D0nFpSyb/j1MEE2dEqvQAAAAAAYPM/AEGJIQsX0CBloH/Ivwn623+/vSs9AAAAAABA8z8AQakhCxfgEAKJq8e/WEpTcpDbKz0AAAAAAEDzPwBBySELF+AQAomrx79YSlNykNsrPQAAAAAAIPM/AEHpIQsX0BnnD9bGv2bisqNq5BC9AAAAAAAA8z8AQYkiCxeQp3Aw/8W/OVAQn0OeHr0AAAAAAADzPwBBqSILF5CncDD/xb85UBCfQ54evQAAAAAA4PI/AEHJIgsXsKHj5SbFv49bB5CL3iC9AAAAAADA8j8AQekiCxeAy2wrTcS/PHg1YcEMFz0AAAAAAMDyPwBBiSMLF4DLbCtNxL88eDVhwQwXPQAAAAAAoPI/AEGpIwsXkB4g/HHDvzpUJ02GePE8AAAAAACA8j8AQckjCxfwH/hSlcK/CMRxFzCNJL0AAAAAAGDyPwBB6SMLF2Av1Sq3wb+WoxEYpIAuvQAAAAAAYPI/AEGJJAsXYC/VKrfBv5ajERikgC69AAAAAABA8j8AQakkCxeQ0Hx+18C/9FvoiJZpCj0AAAAAAEDyPwBBySQLF5DQfH7XwL/0W+iIlmkKPQAAAAAAIPI/AEHpJAsX4Nsxkey/v/Izo1xUdSW9AAAAAAAA8j8AQYolCxYrbgcnvr88APAqLDQqPQAAAAAAAPI/AEGqJQsWK24HJ76/PADwKiw0Kj0AAAAAAODxPwBBySULF8Bbj1RevL8Gvl9YVwwdvQAAAAAAwPE/AEHpJQsX4Eo6bZK6v8iqW+g1OSU9AAAAAADA8T8AQYkmCxfgSjptkrq/yKpb6DU5JT0AAAAAAKDxPwBBqSYLF6Ax1kXDuL9oVi9NKXwTPQAAAAAAoPE/AEHJJgsXoDHWRcO4v2hWL00pfBM9AAAAAACA8T8AQekmCxdg5YrS8La/2nMzyTeXJr0AAAAAAGDxPwBBiScLFyAGPwcbtb9XXsZhWwIfPQAAAAAAYPE/AEGpJwsXIAY/Bxu1v1dexmFbAh89AAAAAABA8T8AQcknCxfgG5bXQbO/3xP5zNpeLD0AAAAAAEDxPwBB6ScLF+AbltdBs7/fE/nM2l4sPQAAAAAAIPE/AEGJKAsXgKPuNmWxvwmjj3ZefBQ9AAAAAAAA8T8AQakoCxeAEcAwCq+/kY42g55ZLT0AAAAAAADxPwBBySgLF4ARwDAKr7+RjjaDnlktPQAAAAAA4PA/AEHpKAsXgBlx3UKrv0xw1uV6ghw9AAAAAADg8D8AQYkpCxeAGXHdQqu/THDW5XqCHD0AAAAAAMDwPwBBqSkLF8Ay9lh0p7/uofI0RvwsvQAAAAAAwPA/AEHJKQsXwDL2WHSnv+6h8jRG/Cy9AAAAAACg8D8AQekpCxfA/rmHnqO/qv4m9bcC9TwAAAAAAKDwPwBBiSoLF8D+uYeeo7+q/ib1twL1PAAAAAAAgPA/AEGqKgsWeA6bgp+/5Al+fCaAKb0AAAAAAIDwPwBByioLFngOm4Kfv+QJfnwmgCm9AAAAAABg8D8AQekqCxeA1QcbuZe/Oab6k1SNKL0AAAAAAEDwPwBBiisLFvywqMCPv5ym0/Z8Ht+8AAAAAABA8D8AQaorCxb8sKjAj7+cptP2fB7fvAAAAAAAIPA/AEHKKwsWEGsq4H+/5EDaDT/iGb0AAAAAACDwPwBB6isLFhBrKuB/v+RA2g0/4hm9AAAAAAAA8D8AQZ4sCwLwPwBBvSwLA8DvPwBByiwLFol1FRCAP+grnZlrxxC9AAAAAACA7z8AQeksCxeAk1hWIJA/0vfiBlvcI70AAAAAAEDvPwBBii0LFskoJUmYPzQMWjK6oCq9AAAAAAAA7z8AQaktCxdA54ldQaA/U9fxXMARAT0AAAAAAMDuPwBByi0LFi7UrmakPyj9vXVzFiy9AAAAAACA7j8AQektCxfAnxSqlKg/fSZa0JV5Gb0AAAAAAEDuPwBBiS4LF8DdzXPLrD8HKNhH8mgavQAAAAAAIO4/AEGpLgsXwAbAMequP3s7yU8+EQ69AAAAAADg7T8AQckuCxdgRtE7l7E/m54NVl0yJb0AAAAAAKDtPwBB6S4LF+DRp/W9sz/XTtulXsgsPQAAAAAAYO0/AEGJLwsXoJdNWum1Px4dXTwGaSy9AAAAAABA7T8AQakvCxfA6grTALc/Mu2dqY0e7DwAAAAAAADtPwBByS8LF0BZXV4zuT/aR706XBEjPQAAAAAAwOw/AEHpLwsXYK2NyGq7P+Vo9yuAkBO9AAAAAACg7D8AQYkwCxdAvAFYiLw/06xaxtFGJj0AAAAAAGDsPwBBqTALFyAKgznHvj/gReavaMAtvQAAAAAAQOw/AEHJMAsX4Ns5kei/P/0KoU/WNCW9AAAAAAAA7D8AQekwCxfgJ4KOF8E/8gctznjvIT0AAAAAAODrPwBBiTELF/AjfiuqwT80mThEjqcsPQAAAAAAoOs/AEGpMQsXgIYMYdHCP6G0gctsnQM9AAAAAACA6z8AQckxCxeQFbD8ZcM/iXJLI6gvxjwAAAAAAEDrPwBB6TELF7Azgz2RxD94tv1UeYMlPQAAAAAAIOs/AEGJMgsXsKHk5SfFP8d9aeXoMyY9AAAAAADg6j8AQakyCxcQjL5OV8Y/eC48LIvPGT0AAAAAAMDqPwBByTILF3B1ixLwxj/hIZzljRElvQAAAAAAoOo/AEHpMgsXUESFjYnHPwVDkXAQZhy9AAAAAABg6j8AQYozCxY566++yD/RLOmqVD0HvQAAAAAAQOo/AEGqMwsW99xaWsk/b/+gWCjyBz0AAAAAAADqPwBByTMLF+CKPO2Tyj9pIVZQQ3IovQAAAAAA4Ok/AEHpMwsX0FtX2DHLP6rhrE6NNQy9AAAAAADA6T8AQYk0CxfgOziH0Ms/thJUWcRLLb0AAAAAAKDpPwBBqTQLFxDwxvtvzD/SK5bFcuzxvAAAAAAAYOk/AEHJNAsXkNSwPbHNPzWwFfcq/yq9AAAAAABA6T8AQek0CxcQ5/8OU84/MPRBYCcSwjwAAAAAACDpPwBBijULFt3krfXOPxGOu2UVIcq8AAAAAAAA6T8AQak1Cxews2wcmc8/MN8MyuzLGz0AAAAAAMDoPwBByTULF1hNYDhx0D+RTu0W25z4PAAAAAAAoOg/AEHpNQsXYGFnLcTQP+nqPBaLGCc9AAAAAACA6D8AQYk2CxfoJ4KOF9E/HPClYw4hLL0AAAAAAGDoPwBBqTYLF/isy1xr0T+BFqX3zZorPQAAAAAAQOg/AEHJNgsXaFpjmb/RP7e9R1Htpiw9AAAAAAAg6D8AQek2Cxe4Dm1FFNI/6rpGut6HCj0AAAAAAODnPwBBiTcLF5DcfPC+0j/0BFBK+pwqPQAAAAAAwOc/AEGpNwsXYNPh8RTTP7g8IdN64ii9AAAAAACg5z8AQck3CxcQvnZna9M/yHfxsM1uET0AAAAAAIDnPwBB6TcLFzAzd1LC0z9cvQa2VDsYPQAAAAAAYOc/AEGJOAsX6NUjtBnUP53gkOw25Ag9AAAAAABA5z8AQak4CxfIccKNcdQ/ddZnCc4nL70AAAAAACDnPwBByTgLFzAXnuDJ1D+k2AobiSAuvQAAAAAAAOc/AEHpOAsXoDgHriLVP1nHZIFwvi49AAAAAADg5j8AQYk5CxfQyFP3e9U/70Bd7u2tHz0AAAAAAMDmPwBBqTkL+7MSYFnfvdXVP9xlpAgqCwq9UHJvcGFnYXRlZFBvc2l0aW9uUHJvcGVydHkAcmVtb3ZlRW50aXR5AGluZmluaXR5AGdldFZlbG9jaXR5AFBvc2l0aW9uUmVnaXN0cnkARmVicnVhcnkASmFudWFyeQBKdWx5AFRodXJzZGF5AFR1ZXNkYXkAV2VkbmVzZGF5AFNhdHVyZGF5AFN1bmRheQBNb25kYXkARnJpZGF5AE1heQAlbS8lZC8leQAlMDE2bGx4AGFycmF5X2luZGV4AGVwaGVtZXJpc19zdGFydF9pZHgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABOb3YAVGh1AEF1Z3VzdAB1bnNpZ25lZCBzaG9ydABlcGhlbWVyaXNfc3RhcnQAdW5zaWduZWQgaW50AE9jdABmbG9hdABTYXQAdWludDY0X3QAU3ViY2xhc3MAZ2V0Q292ZXJhZ2VQb3NpdGlvbnMAc2VtaV9taW5vcl9heGlzAHNlbWlfbWFqb3JfYXhpcwBBcHIAdmVjdG9yAGdldFZlbG9jaXR5UG9pbnRlcgBPY3RvYmVyAE5vdmVtYmVyAFNlcHRlbWJlcgBEZWNlbWJlcgB1bnNpZ25lZCBjaGFyAE1hcgBhbHRwAGVwaGVtZXJpc19zdG9wAHVuaXhfdGltZXN0YW1wAGVwaGVtZXJpc19zdGVwAFNlcAAlSTolTTolUyAlcABpbmNsbwBlY2NvAFN1bgBKdW4Ac3RkOjpleGNlcHRpb24AZ2V0UG9zaXRpb24ARW50aXR5Q29sbGVjdGlvbgBNb24AbmFuAEphbgBSZWNlaXZlZDogJXNcbgByYWRpdXNlYXJ0aGttAEp1bABib29sAHJlbW92ZUFsbABBcHJpbABlbXNjcmlwdGVuOjp2YWwARnJpAGJhZF9hcnJheV9uZXdfbGVuZ3RoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nAHRlcm1pbmF0aW5nAHN0ZDo6d3N0cmluZwBiYXNpY19zdHJpbmcAc3RkOjpzdHJpbmcAc3RkOjp1MTZzdHJpbmcAc3RkOjp1MzJzdHJpbmcAaW5mACU0ZC0lMmQtJTJkVCUyZDolMmQ6JWxmACUuMExmACVMZgBzaXplAHRydWUAVHVlAHVwZGF0ZQBmYWxzZQB0YWtlQmFzZQBKdW5lAGdldFBvc2l0aW9uSW5SZWZlcmVuY2VGcmFtZQBnZXROYW1lAGRvdWJsZQB2aXNpYmxlAGFwb2dlZQBwZXJpZ2VlAHBlcmlvZAB2b2lkAG5vcmFkX2NhdF9pZAB0ZXJtaW5hdGVfaGFuZGxlciB1bmV4cGVjdGVkbHkgcmV0dXJuZWQAV2VkAHN0ZDo6YmFkX2FsbG9jAHBlcmlvZF9zZWMARGVjAEZlYgBhbHRhAGY2Y2FlMTZkNjcxNGFlODc5N2RjYzY5NDI0NTgwYzJkMTczYjMyOWJmY2YwNDYyZjQ0MTA3YjlmMzBkNDA4ZTYxY2EyMDYxMjBjZjY1YzI1YWE1OGRiNWIzNWJhNGQ0YWRhNjQwZDIxNzJkYzc5NDU0ODdhNDdhZmIzNzM4ZTEzYjUxY2M5Y2M3NTk4NGRjMTg2N2IyZjgwNTc1MjE2Mzk1MTM4OGE1OTA1YWI2MGE2OTlmY2ZlMzE5NDFhMjZmNzAwODYxZjM1OTlkY2E0NTM4NmMwOTcyMGNlYTI2NTFlYzM5MWFkNDNkMjZkNmQ4YQBFQ0NFTlRSSUNJVFkATUVBTl9BTk9NQUxZACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAE1FQU5fTU9USU9OX0RPVABNRUFOX01PVElPTl9ERE9UAEdNVAAlSDolTTolUwBBUkdfT0ZfUEVSSUNFTlRFUgBCU1RBUgBFTEVNRU5UX1NFVF9OTwBNRUFOX01PVElPTgBJTkNMSU5BVElPTgBOQU4AUE0AYWRkT01NAEdNAEFNAExDX0FMTABSRVZfQVRfRVBPQ0gATEFORwBJTkYARVBIRU1FUklTX1RZUEUAQ0xBU1NJRklDQVRJT05fVFlQRQBSQV9PRl9BU0NfTk9ERQBPQkpFQ1RfSUQATk9SQURfQ0FUX0lEAEMAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4ARmZoYTBmNmRPZENmNWJqZENhQ2JRZElnWGRRZHRlQWNNYUFiVWg1ZU9oRGZrYUhiVGNHZ1ZjMGVVZHdiMWdaZUJhUmhnZGthTWZ6ZllneGJEaGdmSWRQYUdoemhNZzViRGNUZFllOGVLZkJiRWNZY1ZlbGFnZnVoU2FnYU1ndWRWZzFhSWhwY0JnamNWY1NjQWRTZGxiVGVDaFJjWWJHZVZmaWJjaDBkRmgxZU1ocmhOZEJmQWJ4YUZjZ2R4Z1hmTGd5ZkJlUWdXZlNkQmJWaEloQ2VjZm5nTWVSZ01ldWRIZUFlWmJiYVhjQmFNZ1RiTWZpZW9iOGFJY2dic2ZyZURhVWg0ZlVjVWNTZElmTmVNaERoY2JVZEFiMWFNZjVlTWdGYk1iTmRXZFFjVWZZYUpnRGhNZzJiTWdRYzRoQ2REZnhic2N6ZE9lUWIwZjJjUGNDZGdjUmhHZkZjWmdZYkxja2VvY0RlTGJsY2RlU2ZLY1FjWWUxZlVnZ2NFY3BmVWN3Y2tiV2ZCZWxmWWhuY05mQmRkY1RkS2Z6YVFmUWdNaFJiWWZNZlZoeWQ4Y2dnVWFGY2tkZ2NWZ1NiQWJuZUpoemJFYVRnTGJoaHdjR2RXZDFjd2FUZUVhemhJaHFkUGRDaEljTGJLaHdnMWJPaEZnRmdFZ2loRGdUYkFhM2dGZkFjTmJUYk9kVGNCaFRhRGVWYmtoRmVHYkNnUWJ6YU5hamdFYU9hQWRnYjhoYmVNY3pla2JOaE5namV3Zm9lRWVSZGhnV2VXYUNkNWdLZUFieWM1YVhlVWVpZGtoR2NOYlZmSWhCYktnVmhNZEplRmNnZVpkV2VKZ3piUWhYYVVneWVzYjBiRWREZkVkV2FEZEZoY2d2YUlnRmFCaFpmSWRGZ1VoZ2FKZHlmY2d4ZUVheWI0ZGNoQmNsYXRlY2dFZnhoTWR5YUtoamZ3ZWlmQ2Z5YnNhTmhUaGhhUmhSZUlhZ2QwZXdkTmZ4ZVFnRGJVZXpia2R3Z1Vnd2ExYVpiQmhSZGdoa2JNZXpoWWF4Z0RiZ2FJZVBkR2V6ZE1hNWZEZVRmWWQ4Y0tlQmhFaFlmVmJsZWdhdWhTY2doTWV1Y1ZnMWFJZ3BlQmNqYVZiU2dBYlNibGVUaENmUmVZZEdjVmFpaGNmMGdGZjFoTWFyY05kQmdBYXhhRmhnaHhoWGVMZnljQmRRZldhU2hCZVZoSWFDZmNlbmdNZFJoTWV1ZUhkQWhaZWJjWGVCZ01mVGJNZGlkb2Q4aElhZ2ZzYXJjRGVVZTRjVWFVY1NkSWNOZE1nRGNjYlVnQWgxZk1mNWdNY0ZmTWJOZVdjUWNVaFllSmREYk1hMmVNYVFoNGVDZERmeGRzaHplT2ZRaDBkMmdQZENlZ2NSZEdiRmhaY1ljTGJrZm9kRGRMZGxmZGhTZktlUWJZZjFkVWRnaEVocGRVYndia2NXZ0JnbGFZaG5kTmhCZ2RjVGVLZXpiUWRRaE1jUmNZY01kVmZ5YThjZ2RVZ0Zha2dnYVZiU2VBaG5nSmR6ZUViVGdMY2hid2ZHYVdnMWN3aFRkRWV6YklocWNQYUNoSWdMZ0tmd2cxZ09kRmNGZEVmaWNEZVRlQWczZ0ZnQWVOYVRoT2VUZUJkVGZEaFZka2hGZEdjQ2VRZHpoTmRqZEVhT2FBZWdlOGFiZE1memNraE5oTmhqYXdob2hFaFJnaGVXZldhQ2U1YkthQWR5ZTVmWGJVY2lna2JHZE5mVmJJZEJnS2dWZU1iSmRGZGdjWmhXY0poemVRYlhkVWh5ZXNmMGFFaERmRWFXaERlRmVjYnZjSWVGZkJiWmdJYUZiVWdnZEpoeWdjZ3hkRWV5ZjRiY2VCZ2xldGRjZEVjeGdNZ3loS2NqZXdkaWJDYnlmc2ZOZFRiaGVSYVJiSWhnZjBhd2JOZXhnUWJEY1VhemJrZndiVWd3ZDFnWmFCY1JoZ2VrYk1lemJZYnhoRGRnaEloUGdHZnpkTWI1ZkRkVGRZYThnS2FCY0VjWWNWZ2xoZ2d1ZlNoZ2NNYnVkVmIxZElhcGVCY2poVmFTYUFkU2dsZlRoQ2JSaFljR2VWZWlhY2UwZUZiMWJNYXJmTmdCZEFieGhGZGdheGRYZExheWZCZ1FmV2ZTaEJoVmZJZ0NkY2JuZ01iUmdNZ3VkSGRBYlplYmJYY0JoTWVUYU1maWFvZDhoSWdnZ3NlcmJEZFVnNGJVZVVjU2JJZk5iTWVEZWNjVWRBaDFoTWE1ZE1oRmJNZk5hV2FRZ1VmWWhKY0RkTWMyaE1jUWg0Y0NhRGd4aHNkemNPaFFlMGMyaFBlQ2ZnYVJoR2NGZVplWWJMY2tob2NEYUxhbGdkaFNjS2NRZVlmMWJVZ2dmRWFwYVVmd2VrZVdhQmVsZllnbmhOZEJmZGZUaEtnemVRY1FjTWJSZFliTWdWaHlhOGJnZlVhRmFrYWdhVmhTZEFnbmhKYnpoRWFUaExoaGZ3YkdjV2gxY3diVGJFZ3pmSWhxZ1BiQ2hJY0xkS2V3ZzFhT2FGaEZnRWFpZ0RnVGNBaDNhRmhBaE5kVGNPZlRoQmJUYkRnVmZrZEZjR2JDaFFkemdOZWpiRWRPaEFmZ2Y4Z2JnTWF6YWtoTmVOZ2pod2RvZ0VnUmZoYldjV2FDYTVjS2JBZ3lnNWRYY1VjaWRrYkdoTmVWZUlmQmVLY1ZiTWJKYUZiZ2VaZ1dnSmh6Y1FoWGdVZHlkc2YwZUVlRGFFZVdmRGNGYWNhdmdJY0ZoQmVaYklnRmJVYmdmSmh5YmNmeGJFZHloNGdjYkJlbGR0ZGNlRWZ4aE1jeWJLZWpjd2NpZkNneWVzZk5lVGFoaFJlUmNJYmdlMGh3ZU5meGRRaERnVWV6ZWtmd2RVZndhMWRaZ0JiUmVnaGtiTWV6ZVlheGNEY2dkSWdQY0diemZNYzVhRGNUZlllOGZLYUJmRWVZYVZlbGFnZ3VlU2JnZE1ldWNWZjFjSWJwZEJnamJWZFNiQWVTYWxmVGVDZlJnWWJHY1ZmaWFjZzBlRmMxZ01kcmdOaEJiQWR4Z0ZmZ2Z4ZlhjTGV5YkJnUWVXZlNmQmhWZUljQ2ZjZW5kTWRSZU1mdWFIY0FjWmZiZ1hlQmJNYVRnTWFpZG9jOGFJY2dhc2ZyYkRhVWc0YlViVWRTZklkTmVNaERjY2dVZUFoMWZNYjVoTWZGZk1oTmJXZFFmVWNZZ0plRGJNYjJmTWRRYzRjQ2VEZXhkc2R6YU9kUWIwZzJoUGVDaGdjUmJHaEZkWmhZYkxka2dvYkRnTGdsY2RjU2FLYVFmWWgxaFVnZ2JFYXBoVWF3ZmtkV2FCYmxnWWJuZ05lQmNkYlRlS2V6YVFoUWNNYlJkWWdNY1ZheWM4ZGdlVWZGY2tkZ2RWYVNoQWNuaEpkemNFYVRlTGJoZHdhR2hXZDFod2NUZUViemRJZXFjUGVDZklnTGFLYXdmMWFPY0ZlRmRFZWlkRGVUaEFnM2ZGZ0FmTmRUZU9nVGZCZlRhRGJWYmtkRmZHZENjUWV6Z05oamdFZ09lQWZnZzhlYmdNYnpma2NOZ05mamR3YW9lRWVSZ2hmV2ZXZkNjNWdLYkFjeWM1Z1hoVWNpYmthR2VOYlZnSWhCYUthVmZNZEpjRmJnaFpjV2FKZXpjUWNYZVVjeWZzZzBkRWhEYkVhV2JEZEZlY2h2ZElnRmRCaFpjSWVGY1ViZ2JKZHlhY2Z4aEVoeWY0aGNnQmFsZ3RiY2FFYXhhTWR5Z0thamV3YmljQ2Z5ZHNlTmVUZGhmUmhSYUloZ2MwYndmTmF4aFFiRGdVZnpma2R3ZFVld2ExYVplQmNSZmdia2RNYXpjWWN4Y0RiZ2NJZ1BjR2F6ZE1jNWhEZ1RkWWg4Y0tkQmFFZVlnVmVsZ2dodWRTZGdiTWZ1ZFZnMWVJZXBlQmVqZ1ZiU2FBY1NhbGZUZ0NlUmJZY0dkVmJpaGNmMGFGZzFjTWdyZU5lQmdBZnhlRmVnZHhhWGVMYXlkQmVRZldoU2VCZ1ZnSWFDZGNibmFNZlJjTWd1aEhiQWRaYWJkWGhCYk1iVGRNZGlnb2E4YUloZ2JzYnJhRGhVYzRnVWNVZFNnSWJOYU1lRGdjZ1VlQWQxY01kNWhNZUZlTWhOaFdoUWdVZ1lhSmFEY01mMmZNZ1FjNGhDZERjeGJzZXphT2ZRaDBnMmdQZUNkZ2NSYUdkRmJaYVlhTGdrZG9kRGVMZmxjZGZTZEtmUWJZaDFhVWFnYkVmcGVVY3dha2FXZEJlbGRZZG5lTmZCaGRlVGhLY3pkUWVRaE1iUmNZZE1oVmZ5YjhlZ2dVZkZia2FnYlZnU2NBZm5hSmZ6ZUVmVGRMZmhjd2RHZldmMWd3Z1RnRWd6aElncWNQZ0NmSWNMZUtkd2cxYU9oRmRGYkVlaWZEZlRiQWUzYUZhQWdOZVRkT2dUZUJiVGhEY1Zla2NGaEdlQ2dRZnpnTmVqZUVoT2JBZ2diOGRiaE1jemZrZU5hTmNqYXdob2NFZ1JlaGVXZ1diQ2U1ZktkQWd5ZjVnWGRVZWlna2hHZk5iVmhJZEJjS2RWZE1mSmNGYmdlWmFXaEplemFRYlhnVWh5Y3NkMGhFZERkRWZXZERjRmJjaHZjSWJGaEJkWmVJYUZoVWhnZEpkeWVjYXhnRWJ5ZjRmY2RCZGxjdGZjZkVleGdNZ3llS2hqYndlaWFDYnllc2ROY1RmaGdSY1JnSWJnaDBid2JOaHhhUWhEY1ViemNrY3dnVWV3YTFiWmVCaFJjZ2hrZE1oemZZaHhhRGdnZEljUGdHYXphTWQ1ZURnVGZZYThnS2NCZkVjWWdWZGxmZ2V1ZFNhZ2FNZ3ViVmQxYUllcGFCY2piVmRTZUFiU2dsZ1RnQ2ZSY1lmR2FWYWlkY2cwY0ZkMWJNYXJmTmNCZkFoeGRGY2djeGZYZExmeWNCYVFhV2NTZ0JlVmZJZENiY2JuZk1iUmVNY3ViSGJBaFpkYmRYZkJmTWhUYk1haWdvZThkSWJnZHNmcmVEYVViNGVVZlVjU2ZJZ05mTWZEZGNmVWNBYzFmTWY1aE1iRmhNYU5mV2JRZFVlWWFKZURiTWcyYU1iUWI0ZkNhRGJ4YXNnemdPZ1FnMGgyZVBnQ2hnY1JhR2hGYlpkWWZMZWtlb2VEZUxhbGZkZFNjS2RRZ1lmMWNVaGdnRWJwZ1Vjd2JraFdnQmZsaFllbmFOZ0JiZGNUZUtkemNRaFFjTWhSY1lhTWhWZXloOGdnZ1ViRmRraGdoVmJTZ0FlbmJKYXpmRWVUYkxiaGR3ZUdiV2YxZndhVGJFZHpiSWVxZVBmQ2FJZExoS2V3YzFoT2RGY0ZkRWdpZURhVGNBZzNlRmhBY05nVGFPZFRiQmVUY0RlVmdrZEZmR2ZDZ1FhemdOZ2plRWNPY0FhZ2Q4ZmJiTWR6YmtiTmJOZGpod2VvYkVkUmJoaFdiV2NDYzVlS2JBYnllNWVYYVVhaWVraEdkTmJWY0lkQmZLZlZjTWdKYUZhZ2JaaFdlSmV6Y1FoWGZVYnloc2UwZEVhRGRFY1dmRGJGYWNkdmhJZ0ZkQmJaZUlnRmFVY2dhSmR5aGNieGdFY3loNGhjZ0JhbGR0Z2NlRWZ4ZU1ieWVLY2pjd2hpaENheWFzY05mVGJoaFJiUmRJZWdlMGZ3aE5jeGFRYkRkVWh6Y2tkd2hVZXdiMWVaZkJhUmVnZmtmTWR6YVljeGhEZmdlSWRQYUdnemNNZDVnRGdUaFllOGRLYUJmRWJZZlZibGRnZHVoU2dnZ01ndWRWYTFiSWNwZUJlamJWZFNhQWhTZ2xmVGRDZlJhWWhHZlZhaWZjYjBmRmExaE1mcmdOZkJoQWJ4Y0ZmZ2J4ZFhoTGh5ZEJnUWFXZFNhQmZWYklnQ2RjY25jTWFSYU1kdWVIZ0FhWmZiaFhoQmNNYlRjTWNpaG9iOGNJZGdhc2hyY0RkVWM0ZFVmVWJTZkllTmJNYURmY2hVYUFoMWhNZjVhTWdGZk1jTmVXYlFoVWdZaEpoRGFNYjJhTWdRZTRnQ2NEZXhic2d6Y09iUWQwZTJjUGdDZWdlUmJHYUZoWmhZZUxna2JvaERmTGZsZWRoU2ZLYlFiWWgxZVVoZ2RFY3BiVWZ3ZWthV2dCZGxmWWhuY05oQmhkaFRhS2d6YVFhUWFNaFJhWWFNYVZleWM4Z2dhVWRGaGtkZ2ZWZFNoQWRuYkpnemdFYVRhTGdoY3diR2NXZDFld2VUZUVmemhJaHFjUGNDYklhTGhLZXdiMWRPZ0ZkRmNFY2lnRGRUZEFmM2RGZEFhTmdUYU9iVGhCYVRjRGRWYmtkRmhHZkNiUWN6Z05namhFY09oQWVnZDhhYmNNZHpka2ROYk5jamF3Y29iRWZSYWhnV2ZXZUNkNWVLZEFkeWU1ZlhhVWZpY2tmR2JOYVZkSWhCZkthVmhNZkpkRmhnaFplV2NKZ3plUWhYaFVheWFzZDBkRWZEZUVoV2JEYUZjY2N2Y0lhRmZCZFpnSWNGaFVnZ2ZKZ3lhY2V4YkVmeWM0aGNoQmFsZHRlY2dFYXhkTWZ5Y0toamJ3YmliQ2R5aHNkTmNUYWhnUmNSY0llZ2cwaHdmTmN4aFFiRGNVYnpoa2d3Y1Vnd2YxZFpnQmRSZmdma2hNYnpjWWZ4Z0RoZ2JJZlBoR2V6aE1mNWdEY1RiWWQ4ZUtlQmFFYVlmVmdsaGdkdWFTZWdhTWR1YlZkMWNJaHBhQmFqZ1ZlU2RBZVNnbGZUYUNmUmNZaEdhVmJpY2NoMGhGZzFiTWZyYU5nQmJBaHhmRmhnYXhjWGNMYXlkQmdRYldlU2VCZ1ZiSWhDZGNnbmVNY1JnTWd1ZEhkQWNaYWJkWGJCZE1hVGZNaGlob2E4YUlhZ2VzY3JiRGNVZTRkVWJVYVNoSWdOYk1nRGRjY1ViQWMxZ01lNWdNZUZhTWhOZ1dmUWVVYllmSmdEY01nMmdNZlFjNGFDaERoeGVzaHpkT2JRYTBiMmRQZ0NmZ2hSY0djRmhaZ1liTGdraG9lRGRMZmxnZGJTYUtiUWNZZDFkVWJnZkVhcGVVaHdia2hXYkJibGFZZG5mTmZCZ2RnVGNLYXpoUWdRYk1oUmFZYU1jVmh5ZzhiZ2RVZEZia2VnZlZiU2NBYW5mSmJ6ZEVmVGdMZ2hmd2FHZFdlMWd3ZVRjRWF6YklkcWFQZkNoSWVMZEtld2cxZE9mRmFGaEVnaWhEYlRnQWEzYUZhQWdOY1RmT2JUZEJmVGFEZ1Zha2dGZEdkQ2JRYnpmTmRqZEViT2NBZ2dmOGViaE1lemhrZE5oTmVqZXdhb2ZFZ1JlaGVXaFdnQ2M1Y0tmQWd5ZTVhWGZVY2loa2dHZE5hVmZJZUJmS2VWYU1lSmNGYWdnWmNXaEplemJRZVhoVWh5Z3NoMGdFZ0RmRWZXY0RlRmJjY3ZhSWFGZ0JjWmZJZkZkVWNnZEpoeWdjY3hjRWR5YjRlY2dCZmxmdGJjZ0VieGdNZHlnS2NqZ3dnaWVDY3lic2JOYlRjaGFSaFJkSWdnYzBhd2VOYnhhUWdEY1VoemZrZXdhVWd3YzFkWmFCYlJiZ2ZrZE1lemJZZ3hoRGRnaEliUGNHYnpkTWQ1Z0RnVGVZZDhoS2VCaEVnWWVWZGxiZ2Z1aFNiZ2FNY3VhVmUxZkllcGRCYWpnVmVTZUFlU2dsaFRjQ2JSYlloR2NWZGljY2gwZUZlMWhNaHJhTmVCZ0FheGVGZmdoeGZYZExmeWRCYVFjV2hTZkJlVmdJYkNhY2huZ01iUmRNYXVoSGRBYVpjYmFYYUJoTWZUY01naWFvYThoSWNnZHNkcmZEZFVmNGRVY1VlU2NJaE5hTWZEYWNmVWhBZTFoTWM1ZU1nRmFNZE5iV2VRaFVlWWRKZURjTWEyZk1kUWE0ZENmRGV4aHNhemNPZlFlMGIyYlBnQ2VnZ1JjR2NGZFpkWWVMZ2tib2JEYUxmbGFkZ1NjS2RRYlloMWNVaGdhRWhwZ1Vhd2VrYVdmQmhsYVlnbmNOZEJoZGVUZEtnemhRZVFmTWNSaFlnTWRWZnlmOGRnZlViRmZraGdoVmdTY0FmbmdKYXpjRWNUY0xoaGJ3Y0doV2IxZXdkVGFFZ3poSWZxYVBkQ2NJZ0xoS2h3ZTFjT2hGYUZnRWdpZURlVGNBYjNjRmVBY05kVGFPY1RhQmJUZERkVmdrYUZnR2FDYVFiemFOYmpnRWZPZUFlZ2U4YWJlTWJ6ZGtmTmROaGpld2ZvYUVmUmZoZ1dlV2hDZjVlS2NBZXliNWRYY1VhaWZrY0djTmZWYkloQmJLZFZiTWJKYkZlZ2haZldlSmJ6ZFFmWGdVYXlic2EwaEVoRGhFaFdlRGFGY2NhdmZJYkZkQmVaYUljRmFVaGdjSmF5aGNieGRFZnloNGZjYkJnbGd0Z2NiRWJ4Z01meWdLZWpld2VpZENjeWhzYk5oVGNoaFJhUmZJZ2djMGd3aE5leGZRY0RhVWh6Y2tld2RVZ3doMWhaY0JhUmhnZWthTWJ6Z1lieGNEZGdmSWNQZkdkemdNZjVjRGNUYlllOGZLZ0JjRWFZY1ZobGdnaHVmU2JnYU1idWVWZDFhSWJwaEJoamRWaFNiQWVTZ2xmVGJDZFJjWWVHY1ZnaWZjZjBnRmExaE1hcmFOYUJjQWJ4YkZnZ2V4ZFhjTGJ5aEJiUWRXZVNmQmJWZ0loQ2RjaG5oTWdSZU1idWVIaEFhWmhiYlhoQmhNaFRmTWdpYm9iOGdJZmdic2NyZURmVWg0ZFVoVWRTZUlnTmVNZERoY2NVZUFnMWVNZzVoTWRGZU1jTmFXaFFlVWRZZEpmRGdNZDJnTWRRYTRkQ2NEY3hic2Z6Zk9hUWYwZTJkUGJDZGdjUmZHZEZkWmRZZUxka2dvYURlTGhsZGRjU2FLZFFlWWQxaFVjZ2JFZXBjVWJ3Z2tnV2FCZWxkWWVuYU5kQmdkYlRoS2F6ZFFoUWdNYVJlWWVNaFZieWE4YmdnVWZGYmthZ2NWY1NnQWZuZEplemJFZFRjTGRoaHdmR2VXZDFhd2RUY0VoemZJaHFkUGhDY0liTGZLZXdmMWdPYkZmRmdFY2lmRGhUaEFjM2RGaEFhTmdUYk9lVGVCYVRiRGhWZ2tnRmFHZkNiUWJ6Zk5kamdFYk9mQWFnZzhlYmJNZnpma2ROYk5oamR3aG9nRWNSaGhiV2VXY0NjNWRLZEFkeWU1YVhoVWVpYmtjR2ZOZFZjSWNCZktkVmFNZUpnRmFnZVphV2RKZ3plUWhYaFVmeWZzZDBjRWhEYkVkV2ZEZUZhY2Z2Z0lmRmZCY1pkSWhGZlVnZ2FKY3lkY2R4aEVneWg0YmNmQmRsZnRnY2FFZnhhTWZ5ZUtlamR3ZWllQ2V5ZHNjTmFUZGhnUmdSZ0loZ2IwYndoTmV4ZFFoRGdVZHpka2J3YVVjd2UxZFpjQmZSYmdma2ZNYnpiWWV4Y0RiZ2JJZVBlR2J6aE1mNWJEY1RiWWQ4aEthQmhFY1ljVmRsZmdhdWZTY2djTWh1Z1ZlMWdJY3BlQmdqZFZlU2JBZVNjbGVUY0NlUmRZZEdmVmVpaGNlMGhGZDFiTWFyZ05hQmNBZnhhRmRnZXhjWGhMYnlhQmFRYVdmU2FCYlZlSWVDZ2NlbmhNZFJlTWF1ZEhiQWFaYWJnWGJCaE1iVGJNY2ljb2M4aElhZ2JzYXJhRGFVZzRkVWNVaFNjSWNOY01iRGFjaFVhQWQxZU1hNWdNYkZoTWNOYldoUWZVZllhSmdEY01hMmVNZVFoNGFDZURjeGJzYXplT2dRZzBoMmJQZkNjZ2dSZUdnRmFaaFloTGdraG9mRGVMY2xnZGdTZ0thUWdZZTFiVWJnaEVhcGdVZXdoa2NXYkJobGZZZW5jTmhCYWRnVGZLZ3poUWRRY01kUmNZZ01kVmh5aDhlZ2dVYkZoa2JnY1ZoU2ZBZG5nSmR6Z0ViVGRMZGhmd2VHYVdlMWZ3Z1RhRWN6ZkljcWRQY0NmSWJMaEtid2MxZ09hRmFGYkVmaWdEY1RiQWYzY0ZlQWhOaFRkT2FUZkJiVGNEY1Zla2RGZEdmQ2ZRZXpiTmJqZkVlT2JBZ2dmOGdiYU1nemJrYk5nTmZqZHdnb2JFZVJkaGVXY1dlQ2M1ZkthQWF5ZzVjWGdVZ2lha2VHYU5kVmVJaEJhS2hWZk1oSmZGYmdlWmZXZEplemhRYVhiVWJ5Y3NiMGdFYURlRWRXYkRnRmhjZHZhSWVGY0JlWmNJYUZjVWFnZ0pieWFjZXhnRWZ5ZjRmY2NCaGxndGdjZUVmeGdNYnljS2FqZ3dlaWJDZHljc2FOY1RlaGhSZVJhSWFnZTBmd2dOZ3hiUWhEZ1VjemJraHdlVWV3ZTFkWmVCYlJkZ2drZU1hemJZZXhlRGZnZElhUGJHYXplTWQ1ZkRmVGRZYjhkS2VCZkVjWWRWaGxlZ2R1ZVNjZ2NNYnVlVmQxZ0llcGRCZWpoVmRTZ0FoU2FsY1RiQ2FSaFlkR2FWY2lhY2YwZ0ZlMWZNY3JmTmVCZUFleGZGZGdleGJYZkxkeWRCZFFkV2RTaEJjVmFJY0NhY2VuZ01oUmVNaHVnSGRBZ1pjYmNYZEJhTWFUYU1oaWhvYThlSWVnZHNicmFEZVVkNGhVaFVnU2RJZ05lTWhEYmNlVWhBYzFjTWc1ZE1iRmNNaE5mV2hRaFVjWWFKZkRhTWIyZE1nUWE0YkNoRGN4ZXNkemhPY1FoMGQyZVBjQ2ZnZ1JkR2JGYVphWWRMaGtnb2NEZUxkbGFkYlNmS2ZRaFlkMWJVZWdkRWJwaFVmd2NrZ1doQmRsY1ljbmhOZkJjZGJUZUtlemZRZlFoTWZSZVlhTWNWY3ljOGZnZlVjRmdrYWdmVmJTZ0FkbmRKYXpnRWRUYUxmaGV3ZkdlV2MxY3doVGdFZXpjSWRxZlBjQ2VJZkxhS2N3ZzFoT2NGZEZkRWJpYkRmVGdBYzNnRmNBZE5hVGdPZVRhQmVUZkRnVmJrYkZnR2JDZVFhemVOZWpiRWhPYkFnZ2Q4Y2JnTWh6YmtjTmFOZGpmd2JvYkVjUmdoYVdhV2hDZDVkS2JBZ3lmNWRYZVVjaWFrZEdnTmVWZkloQmhLaFZiTWNKZUZkZ2FaZ1dkSmN6ZlFmWGVVZnlkc2IwZUVjRGJFYldoRGFGYmNldmJJY0ZnQmFaZEloRmNVZmdhSmd5YWNneGNFaHliNGVjZUJibGF0ZGNkRWh4Yk1ieWJLZmphd2hpZ0NheWVzaE5kVGFoZFJoUmZJZ2dmMGh3Zk5oeGhRYkRhVWV6YWtld2hVYXdmMWFaZ0JnUmNnYmtkTWh6YVlneGdEZGdlSWNQYUdjemNNaDVhRGNUZlllOGZLZ0JlRWdZZlZmbGdnZ3VkU2FnaE1jdWRWZTFnSWJwZEJlamNWYVNoQWNTYWxiVGdDZFJlWWhHZVZmaWZjZzBjRmUxZ01ocmNOY0JiQWZ4YUZiZ2h4ZFhmTGJ5Z0JiUWNXYlNnQmhWYkliQ2FjZG5lTWFSZE1jdWhIY0FkWmJiZ1hoQmdNZFRoTWZpZ29oOGFJZmdkc2JyZURoVWU0Z1VhVWFTZklkTmZNZERlY2NVYUFjMWFNZzVkTWRGaE1oTmNXZ1FoVWNZaEpnRGdNZjJiTWRRYjRnQ2hEZ3hjc2Z6Y09hUWYwZDJhUGJDZ2dnUmRHZ0ZnWmJZZkxna2VvYkRkTGZsZ2RlU2hLYlFjWWUxZ1VnZ2ZFZHBmVWh3ZmthV2hCZWxlWWhuZU5hQmVkZFRkS2Z6Z1FmUWhNZ1JoWWVNYlZjeWI4aGdlVWVGYWthZ2JWYVNnQWNuZEpjemFFZVRiTGFoYXdjR2VXYzFjd2dUY0ViemNJY3FhUGNDY0liTGZLaHdlMWNPYUZoRmhFYmllRGFUYUFkM2hGZEFmTmFUYk9kVGJCYVRlRGFWY2tiRmhHZENiUWR6Z05hamJFY09lQWNnZDhnYmJNZnpka2JOYk5jamV3ZG9hRWJSYmhiV2JXZUNmNWNLY0FjeWc1ZFhlVWFpY2tnR2dOZVZkSWVCZktiVmJNY0phRmRnY1plV2NKZnpnUWVYY1VheWNzZTBnRWZEYkVnV2dEZkZkY2Z2ZEliRmNCZlphSWNGYlViZ2dKaHliY2Z4Y0VheWg0Z2NhQmhsYnRoY2NFZnhiTWN5ZUtnamF3ZWlmQ2F5YXNlTmRUY2hlUmZSZkloZ2QwZndhTmZ4ZFFnRGRVY3poa2F3YVVnd2IxaFpkQmJSaGdka2RNYXpnWWV4aERmZ2hJY1BoR2N6Z01kNWdEYVRlWWY4YktlQmNFYVliVmdsY2dkdWdTYWdiTWR1Z1ZlMWNJZXBhQmZqY1ZhU2ZBZVNnbGFUZENmUmdZZkdnVmJpZGNiMGFGYzFlTWZyZk5nQmVBZHhoRmhnYXhlWGhMaHliQmRRZVdmU2NCZFZkSWNDYmNkbmRNYVJjTWV1Y0hoQWZaYWJhWGNCYk1nVGNNYmlnb2U4Z0ljZ2NzZXJkRGFVYTRmVWRVZlNnSWZOY01nRGZjZ1VoQWgxZ01nNWhNZkZhTWdOY1dnUWhVaFliSmdEY01kMmdNY1FhNGJDZURkeGJzZnpmT2RRYzBiMmdQaENhZ2JSZUdoRmNaZFliTGZrZG9nRGFMZmxoZGVTYUtmUWVZYzFlVWRnZkVmcGdVZ3dja2FXaEJjbGFZYW5lTmNCaGRjVGFLZHplUWFRYU1iUmJZYk1iVmJ5ZThhZ2ZVYkZma2hnZFZjU2hBZm5mSmd6ZUVmVGZMZmhmd2hHZ1djMWV3ZFRnRWV6ZklhcWRQZUNlSWVMaEtid2ExYU9nRmZGaEVhaWJEaFRjQWUzYkZnQWdOYVRiT2VUYUJmVGVEZFZia2JGY0dlQ2NRZnpiTmhqY0VnT2JBZWdlOGJiZ01jemNrZk5hTmhqZHdmb2RFYVJiaGNXYVdiQ2Q1ZUtnQWF5aDVlWGZVY2lka2RHZk5hVmRJYkJoS2RWZE1lSmJGZGdhWmZXYUpoemZRaFhnVWJ5ZXNiMGJFaERoRWJXYkRoRmhjZ3ZlSWFGZUJmWmNJYkZkVWhnZkpheWhjYXhmRWJ5YTRmY2JCaGxodGZjZUVoeGRNYnlhS2hqYndmaWJDYnlmc2ZOZ1RkaGdSZVJmSWZnYjBmd2NOZ3hjUWREZVViemNrZXdiVWZ3ZjFiWmVCZVJoZ2hrYk1memFZY3hlRGVnYkljUGhHYnpjTWE1YkRiVGhZYzhkS2hCYkViWWRWYmxnZ2d1YlNoZ2VNYXVoVmMxY0lmcGdCZWpoVmZTZEFnU2NsZVRkQ2VSZ1llR2RWZWliY2QwYkZmMWVNZ3JnTmhCZkFieGdGZmdkeGRYZ0xleWVCZVFlV2JTYUJiVmZJYUNnY2VuZU1oUmJNaHVkSGhBYlpnYmVYZEJkTWVUYU1laWZvZDhhSWNnZXNmcmdEYlViNGdVZFVjU2hJYU5lTWREaGNnVWJBZjFjTWI1aE1kRmRNZU5oV2RRaFViWWRKY0RmTWIyZ01iUWI0aENmRGV4YnNlemhPZ1FmMGMyaFBlQ2VnZVJiR2JGYVpoWWhMZWthb2VEY0xibGJkZVNlS2NRYllnMWRVYWdjRWVwZVVkd2ZrYVdlQmNsZ1libmNOZUJoZGNUZktlemdRZlFjTWFSY1lmTWNWZXllOGVnYVVmRmNrZ2dnVmFTaEFjbmNKY3poRWRUaExoaGR3Z0dhV2cxYndoVGdFaHpnSWJxaFBjQ2dJaExjS2R3YTFiT2JGYUZlRWhpYkRkVGhBZzNkRmhBZk5nVGRPaFRkQmNUZURiVmhrYkZmR2VDYVFkemJOaGphRWJPZ0FmZ2c4aGJmTWR6YWtnTmhOZWpkd2RvZ0VnUmJoYldnV2NDYjVkS2JBZXllNWdYYVVkaWRrYUdmTmhWZ0liQmdLYlZlTWdKZUZnZ2VaZldnSmh6ZlFjWGRVZ3lkc2YwZUVoRGVFaFdlRGhGY2NmdmRJZkZiQmFaY0liRmhVaGdmSmN5ZGNieGJFZXlmNGRjYkJhbGR0YWNjRWN4Zk1heWVLZWpld2RpYUNheWVzYk5jVGFoZlJnUmdJZGdkMGR3ZU5jeGhRYURjVWh6Ymtld2FVZHdjMWJaaEJkUmdnZmtjTWh6Z1lieGhEZWdhSWNQaEdhemZNZzViRGVUZVlhOGdLZEJjRWJZYVZnbGZnZnVkU2RnZU1odWVWZzFnSWVwZEJjamZWZlNnQWFTZGxlVGRDYlJkWWJHYVZoaWhjYTBnRmExYk1kcmROZUJiQWF4Y0ZmZ2R4YlhoTGR5Z0JhUWhXZlNhQmNWYUlnQ2JjaG5oTWhSZU1kdWdIZkFhWmFiYlhkQmRNY1RnTWRpZ29iOGZJZmdhc2dyZ0RnVWU0ZVVjVWdTaElmTmZNZ0RiY2VVZEFkMWhNZjVlTWJGZU1mTmNXYVFmVWJZYUphRGFNZDJhTWdRYzRnQ2dEZnhhc2d6aE9nUWQwZzJlUGJDZ2djUmNHZ0ZlWmFZYUxka2VvZERhTGNsY2RlU2hLYVFmWWQxZVVoZ2NFZXBkVWZ3YWtmV2NCZWxnWWFuY05iQmFkYVRmS2h6YlFmUWdNY1JoWWZNZFZheWc4ZmdhVWFGYmtoZ2FWYVNlQWRuY0poemhFaFRhTGdoY3djR2hXYzFnd2dUZkVjemJJZHFnUGVDZElkTGJLZXdmMWNPZ0ZlRmZFY2lhRGZUZUFmM2ZGY0FoTmFUZE9jVGdCaFRjRGRWZmtmRmhHaENmUWF6YU5iamNFYk9kQWdnZDhhYmNNYXpma2JOZk5lamR3aG9nRWNSZmhoV2RXaENnNWdLZ0FheWI1YVhhVWFpZmtkR2JOYlZlSWVCZEtnVmVNaEphRmdnZlpjV2JKZHpiUWZYZVVjeWRzZTBmRWdEYUVmV2NEYUZhY2d2ZElhRmFCYVpjSWNGZ1VoZ2FKZHloY2F4YUVoeWc0YmNlQmNsaHRkY2ZFZnhhTWF5ZkthamR3YmlmQ2J5aHNjTmVUZmhnUmZSZUlkZ2MwZHdhTmF4Y1FjRGhVY3pka2F3Y1Vid2UxZlphQmFSZGdja2dNY3pmWWV4Y0RjZ2dJY1BmR2R6Z01nNWNEZ1RjWWY4ZEtoQmFFYVliVmFsZ2dldWNTZGdoTWF1ZVZjMWZJYXBoQmVqaFZnU2NBYVNkbGFUZ0NiUmFZZkdkVmhpZGNlMGhGZzFhTWhyZU5hQmhBaHhoRmVnZnhkWGdMY3lmQmRRZ1dkU2RCYVZkSWRDY2NkbmNNY1JkTWh1YkhnQWFaYmJiWGJCZU1jVGhNYmlib2g4ZklhZ2ZzZHJiRGJVYTRlVWFVZVNhSWFOYk1jRGVjaFVoQWUxYk1lNWRNZEZjTWVOYVdiUWNVYVlmSmZEY01mMmhNZ1FhNGNDZ0RheGNzZnphT2hRZjBiMmJQZkNlZ2dSY0dkRmFaY1liTGFrZ29kRGFMZ2xiZGhTYkthUWdZZzFjVWNnYkVjcGNVZndma2hXYUJjbGJZaG5nTmFCYWRmVGFLZXphUWFRYk1lUmNZZk1oVmh5ZThkZ2dVZkZla2FnZVZoU2VBYm5oSmN6YkVnVGdMZmhhd2VHZFdoMWJ3ZlRoRWV6ZUljcWVQYUNiSWVMZ0tnd2UxZE9oRmhGY0ViaWJEaFRhQWUzZEZlQWhOYVRkT2JUYUJoVGhEYVZia2VGZkdkQ2JRZ3pjTmNqYUViT2ZBZGdhOGViYk1lemRrZE5lTmZqZXdhb2dFYlJmaGNXYVdhQ2U1YUtlQWN5YTVnWGJVZ2lka2hHZE5iVmJJZEJoS2RWZE1nSmFGZ2dkWmFXZUpnemNRZlhhVWR5YnNiMGNFYURiRWdXY0RoRmFjZnZkSWFGZ0JlWmdJZ0ZhVWFnZkpieWJjZXhhRWR5ZTRmY2RCZmxidGFjZUVmeGRNYnlkS2JqZ3diaWZDZnlkc2ZOZVRiaGFSaFJoSWhnZjBid2VOZ3hhUWZEZVVhemRrZndkVWR3ZzFmWmNCaFJlZ2hrZE1iemhZZnhhRGVnZElnUGNHYnpnTWg1ZURmVGhZZDhlS2hCYUVkWWNWYWxjZ2Z1Y1NjZ2VNYnViVmIxZElocGVCYWpoVmdTYUFhU2hsaFRhQ2FSYVloR2NWZGloY2MwY0ZhMWFNYnJnTmRCaEFoeGFGY2dleGdYYkxheWFCZlFkV2VTY0JmVmRJY0NkY2NuY01nUmJNZXVmSGNBYVpnYmNYY0JoTWVUZU1oaWFvZDhjSWZnZHNjcmNEZFVnNGNVZFVnU2VJaE5jTWREY2NoVWRBYTFnTWQ1ZE1lRmJNaE5iV2VRY1VhWWNKYURlTWUyZU1hUWc0Z0NkRGh4Z3NnemdPYVFiMGYyZVBoQ2hnaFJhR2VGZFpkWWRMaGtnb2hEZExibGFkZ1NoS2hRaFlnMWNVY2dlRWdwZlVnd2RrZldjQmFsZ1lhbmdOZ0JoZGJUY0tjemdRY1FnTWZSY1llTWFWZ3llOGhnaFVnRmRrZmdkVmhTY0FkbmJKZXpoRWFUZ0xlaGR3aEdjV2ExY3dkVGhFY3pjSWVxZFBlQ2RJY0xmS2h3ZjFhT2ZGZ0ZhRWRpZ0RmVGVBZDNlRmdBZk5jVGJPYVRmQmhUY0RoVmNrZ0ZnR2dDZFFiemdOZWpnRWFPaEFnZ2E4YWJhTWR6aGtiTmZOZ2pld2dvYkVoUmdoYldlV2ZDZzVjS2ZBYnlnNWVYYlVnaWhrZkdjTmZWaElnQmhLYlZmTWhKY0ZmZ2haaFdnSmd6ZlFjWGdVaHlnc2MwZUVnRGhFY1diRGhGYmNodmFJaEZhQmdaZklkRmhVZGdhSmF5YmNjeGJFYXliNGJjZ0JlbGh0ZWNoRWF4Y01leWFLaGpid2VpZkNmeWdzYU5mVGhoZlJmUmRJaGdoMGV3aE5oeGdRYkRmVWJ6ZWtid2NVaHdhMWVaYkJlUmRnZmtlTWh6ZFloeGNEZmdjSWdQZ0dnemhNYzVlRGFUYlllOGdLY0JoRWRZZVZibGFnY3VmU2RnaE1ldWZWYjFkSWVwZ0JnamhWYVNkQWJTYmxmVGFDZVJjWWdHZVZmaWJjYzBhRmUxZ01kcmFOZEJiQWN4ZUZnZ2Z4ZVhlTGR5Z0JhUWhXZFNlQmVWY0liQ2ZjZ25lTWFSZU1ndWFIZ0FhWmZiY1hkQmJNZlRmTWRpYW9oOGFJYmdmc2FyYURhVWM0Y1VjVWdTYkllTmhNZkRoY2NVaEFkMWNNZjVhTWJGYk1lTmZXZlFoVWJZYUpkRGJNaDJiTWNRZzRmQ2REY3hmc2F6ZU9oUWcwZzJlUGNDZWdjUmZHaEZlWmdZaExia2hvYkRkTGZsYmRmU2VLY1FlWWQxZVViZ2JFZnBiVWF3YmtlV2JCZmxhWWRuY05oQmFkZVRmS2d6YlFlUWVNYlJlWWhNZlZheWE4ZGdjVWdGYmtnZ2dWZVNmQWFuYkpoemVFZ1RiTGhoaHdhR2JXYzFjd2dUaEVhemNJYXFoUGRDZEllTGVLY3dhMWhPZ0ZjRmFFZWliRGhUZkFkM2JGZ0FlTmJUZk9kVGhCZ1RoRGJWZWtjRmZHZkNkUWR6ZU5hamFFZ09lQWRnZzhjYmhNZXpia2FOZU5namF3ZG9kRWhSZmhjV2RXZENnNWRLZEFoeWQ1aFhmVWFpYWtmR2ZOZlZnSWRCaEthVmRNZEpkRmZnYVpoV2hKY3phUWJYYVVoeWNzZjBoRWhEYUVmV2NEZEZmY2Z2Z0lmRmhCaFpnSWhGZVVkZ2JKYXliY2h4Y0VleWQ0Y2NlQmRsZHRlY2hFYXhoTWh5ZEtjamN3Z2lhQ2d5ZHNjTmZUaGhjUmZSaEljZ2gwZHdnTmJ4ZFFoRGJVZHpja2R3Y1Vid2YxZlpiQmhSYmdja2hNYXpiWWd4YkRmZ2hJY1BoR2F6Zk1jNWJEZ1RnWWY4ZktmQmRFYllkVmFsZGdjdWhTYWdnTWh1Z1ZjMWhJZHBlQmNqYlZkU2NBaFNkbGhUZENmUmZZaEdmVmNpZWNoMGhGYTFjTWVyYk5lQmhBZ3hjRmRnaHhkWGFMY3ljQmVRZ1dkU2JCZVZhSWdDZmNhbmNNY1JjTWJ1YkhkQWRaZmJhWGJCZE1mVGZNY2lmb2g4YUljZ2JzZnJmRGZVZzRhVWFVYlNiSWhOZU1iRGJjZFVnQWYxaE1nNWFNZEZiTWdOY1doUWVVYllhSmNEYU1iMmFNZ1FkNGRDZURneGVzZnpkT2RRYTBoMmdQZ0NjZ2FSaEdlRmJaYVliTGdrYW9iRGJMZmxlZGRTY0thUWZZZzFhVWNnaEVlcGZVYndia2JXYkJlbGdZZm5kTmdCYmRiVGRLZnpoUWVRZk1mUmVZZk1lVmN5ZThiZ2hVYUZka2FnY1ZoU2ZBaG5oSmR6ZEVjVGVMYWhld2JHaFdoMWV3ZlRhRWJ6YkllcWFQZkNlSWNMZ0tmd2MxYk9iRmVGZUVjaWREaFRkQWUzaEZkQWFOY1RlT2dUY0JlVGVEZFZma2ZGZUdhQ2FRY3pmTmdqaEVkT2hBYWdjOGhiYk1iemJraE5mTmZqZndlb2RFYVJmaGdXYVdmQ2Q1Y0thQWF5YjVjWGFVY2lma2NHaE5kVmVJZEJlS2NWZU1nSmFGYWdoWmZXZ0plemNRZVhnVWR5Y3NkMGVFZERoRWJXZkRhRmJjaHZhSWZGY0JmWmNJYUZhVWJnYUpneWFjYXhnRWF5YzRjY2NCaGxndGRjZ0VleGRNZ3lnS2RqZ3diaWNDYnlmc2hOZVRoaGVSZVJnSWhnaDBhd2ZOZHhjUWZEZFVnemNrZ3diVWJ3YTFiWmFCZlJnZ2VrZU1iemJZYXhjRGdnaElnUGJHYnpkTWI1aERjVGdZZzhmS2VCZEViWWFWZ2xmZ2d1ZFNoZ2hNZnVnVmUxZUlocGZCYWphVmRTZ0FlU2ZsYlRkQ2ZSZFljR2VWZmlkY2QwY0ZiMWJNaHJiTmZCYUFneGVGZmdneGhYaExieWVCYlFoV2ZTaEJlVmZJYkNmY2FuZU1lUmNNZXVjSGdBYVpjYmdYZEJkTWJUZk1maWRvZjhjSWJnYnNicmJEZFVhNGdVaFVkU2RJY05jTWFEY2NiVWNBYjFiTWg1aE1iRmJNY05hV2VRYlVkWWNKYURmTWYyZk1oUWM0Y0NnRGN4ZHNjemVPZlFjMGgyYlBjQ2JnZ1JnR2VGaFpkWWZMZWtlb2hEZUxibGNkZlNiS2hRYllmMWNVYWdoRWJwaFVkd2RrYldiQmhsZllobmNOY0JnZGNUZUtoemFRY1FoTWRSZllmTWRWZ3ljOGVnYVVmRmhraGdmVmZTZEFlbmNKYXpjRWhUY0xjaGZ3Y0dlV2QxYndlVGJFZHpnSWZxZVBkQ2ZJZExkS2F3ZDFjT2RGZkZoRWdpYkRnVGVBYjNhRmRBYk5iVGJPZVRlQmNUY0RiVmFrZkZnR2FDZVFiemhOaGpoRWdPY0FiZ2U4Z2JnTWN6ZWtnTmZOYmpnd2hvZEVlUmhoZVdnV2hDZzViS2RBaHlmNWdYZFViaWdrYkdlTmRWYkljQmFLYlZkTWJKYUZoZ2ZaaFdoSmN6ZFFlWGZVZnlnc2cwYkViRGJFaFdlRGdGZ2NhdmZJY0ZnQmdaZklnRmNVaGdjSmN5Y2NheGJFaHlnNGVjZEJibGR0Y2NjRWR4aE1ieWVLZ2pjd2RpZUNkeWdzZU5nVGFoYVJlUmNJYmdoMGd3ZU5heGhRY0RkVWF6Z2tkd2hVYXdnMWZaZ0JlUmdnZ2tnTWJ6Z1lmeGNEYmdlSWZQZkdiemNNZDVlRGZUZ1llOGRLZUJiRWVZZlZnbGZnZXVhU2hnZk1ldWJWYjFnSWVwaEJjamVWYVNjQWJTYmxkVGNDZFJlWWFHYlZlaWVjZDBkRmYxYU1lcmNOYUJmQWh4Y0ZmZ2R4aFhmTGJ5ZUJoUWRXZVNkQmhWZEljQ2JjZm5oTWdSZU1ndWhIYkFkWmRiZlhhQmZNYlRhTWRpaG9jOGVJaGdjc2FyYURnVWc0YVViVWNTYklkTmZNZ0RnY2hVaEFjMWZNYjVkTWdGaE1hTmVXZlFiVWhZYkpkRGJNZjJoTWhRYjRlQ2dEYXhoc2F6ZU9lUWQwYzJjUGJDaGdiUmhHZ0ZkWmVZZUxla2VvYkRlTGFsYmRkU2JLZlFnWWcxZFViZ2JFaHBiVWF3ZWtoV2NCY2xoWWZuZ05kQmVkZFRnS2Z6YlFlUWNNZlJhWWhNZ1ZoeWM4Y2dhVWRGZ2thZ2JWYlNhQWVuaEpnemVFaFRkTGdoZndjR2VXZjFod2RUaEVjemhJZXFlUGZDYUlnTGZLZ3dnMWdPY0ZnRmhFZmlkRGFUYUFiM2ZGaEFkTmNUZU9mVGVCYVRlRGhWYWtmRmVHZENmUWV6ZE5iamZFY09iQWhnZjhoYmVNZXpna2dOZk5namh3Y29jRWJSYmhkV2FXaENmNWVLYkFkeWY1YlhiVWZpYmtoR2JOY1ZoSWJCY0tnVmRNZkpjRmNnY1poV2hKZHplUWdYaFVoeWZzZzBhRWFEZEVlV2dEYUZhY2h2aEllRmJCZVpiSWNGY1VjZ2JKZHliY2N4YkVleWQ0Z2NlQmVsZ3RkY2NFYXhlTWd5ZUtnamd3ZGliQ2Z5Y3NjTmRUaGhkUmNSZElnZ2EwZHdmTmZ4aFFmRGJVZnpha2R3aFVhd2UxZFpmQmVSY2dha2dNY3piWWd4YkRlZ2dJZVBlR2J6Zk1iNWREZVRhWWg4ZUtiQmdFYVlhVmVsZWdkdWRTYWdhTWN1Z1ZhMWZJZXBkQmdqZ1ZnU2JBZVNibGFUaENiUmNZZ0dnVmFpZWNoMGJGYzFiTWVyaE5lQmdBaHhlRmJnZnhnWGZMYnliQmFRZldkU2RCZVZlSWhDZWNhbmNNY1JhTWR1YkhmQWZaZmJiWGdCZE1iVGdNZWljb2Y4YUlhZ2ZzZXJiRGJVYTRjVWVVYlNhSWhOZ01oRGJjZlVnQWgxYU1jNWVNYkZjTWhOY1dhUWdVYllhSmREZU1nMmhNYVFoNGFDY0RjeGZzY3plT2JRZzBlMmJQZ0NhZ2JSYkdlRmhaZlloTGhrZm9iRGNMZmxmZGNTY0tiUWdZZDFjVWdnZ0VicGJVZHdja2hXZEJjbGVZYm5nTmVCaGRoVGVLY3phUWdRYk1iUmFZY01jVmN5YzhkZ2FVZkZma2FnZFZoU2VBZ25kSmF6ZEVlVGRMZ2hid2NHZFdmMWV3YVRiRWZ6YklkcWZQZENiSWVMYktod2QxZk9kRmhGYkVhaWJEYlRmQWYzYUZhQWROZFRjT2JUYUJiVGVEYVZla2hGZEdkQ2JRY3poTmdqYUVkT2VBYWdiOGdiZE1hemFrZU5jTmhqZndjb2hFZlJoaGdXZVdkQ2M1Y0toQWF5aDVnWGFVZGlna2dHYk5hVmNJZkJlS2ZWaE1mSmhGZGdkWmdXZUpnemdRaFhmVWh5aHNiMGRFYURjRWVXYURoRmVjY3ZoSWFGaEJlWmZJZkZmVWNnZ0pieWJjZXhhRWR5YjRhY2ZCY2xndGZjaEVkeGdNZHljS2FqYXdoaWRDaHlmc2NOY1RnaGZSZlJkSWhnYTBod2JOYnhhUWREYlVhemJrZXdhVWJ3YzFjWmdCZlJhZ2RrZU1iemdZY3hoRGNnZklkUGVHZXpmTWQ1ZkRhVGNZYThmS2JCZUVhWWJWZWxmZ2V1YlNjZ2ZNYXVnVmgxZklmcGZCZWpkVmFTYUFjU2dsZ1RhQ2hSaFlkR2NWYWllY2cwaEZhMWJNZXJnTmRCYUFkeGNGZWdkeGdYY0xleWJCYVFmV2FTY0JlVmZJYUNlY2RuZk1jUmNNYXVkSGdBZlplYmZYYUJoTWJUYU1jaWVvZThkSWVnYnNlcmFEZFViNGJVYVViU2RJZ05jTWFEZGNoVWJBZzFmTWI1Zk1iRmdNZE5oV2JRaFVlWWRKZERhTWMyZU1jUWY0YUNlRGJ4ZnNhemRPZlFkMGEyZlBlQ2dnaFJhR2hGZlpjWWNMZ2tmb2JEYkxjbGZkaFNiS2VRY1ljMWFVZmdnRWdwYVVid2hrZVdnQmJsYllobmFOYkJmZGdUZktlemNRaFFkTWFSZFllTWRWZnlnOGFnZVVjRmFrZGdnVmZTY0FlbmJKZ3plRWVUZ0xjaGZ3YUdkV2cxZHdmVGZFZXpkSWZxY1BhQ2RJYkxmS2N3ZjFoT2JGZEZmRWFpZ0RiVGhBZjNoRmVBYk5oVGZPYVRlQmZUZURnVmFrZkZjR2NDY1FoemJOYWpoRWhPZEFmZ2c4ZGJjTWJ6ZGtjTmZOaGphd2JvZ0VoUmhoZVdlV2hDaDVhS2JBaHlmNWdYaFVlaWZrZUdkTmFWYUlkQmVLZFZmTWNKZ0ZlZ2ZaYldhSmN6YVFiWGNVZHloc2YwZEVoRGVFYVdnRGVGY2NldmhJZkZhQmJaYUlmRmhVYWdjSmN5Z2NleGZFY3lkNGFjZUJlbGZ0YmNnRWh4Zk1jeWJLYWpjd2RpZUNjeWZzYU5kVGdoYVJkUmhJYWdoMGh3aE5keGdRZkRmVWN6ZGtjd2VVYndkMWVaZ0JlUmhnY2thTWJ6Z1lieGREZ2dhSWJQZkdkemRNZzVnRGJUYllkOGJLZUJmRWRZZVZmbGZnZnVmU2ZnY01mdWFWZDFlSWNwZ0JlamhWaFNjQWJTZWxmVGZDZFJmWWZHZFZiaWRjZjBoRmQxZU1kcmFOZUJkQWR4ZkZjZ2Z4Y1hmTGF5ZUJlUWVXZlNhQmdWZElnQ2ZjYm5oTWdSaE1idWZIYkFjWmJiZlhmQmVNYVRjTWJpZ29iOGhJZmdoc2hyZ0RkVWM0aFVoVWRTYUlkTmZNZURhY2NVY0FhMWNNYjVoTWVGY01nTmRXZVFoVWFZaEpkRGVNaDJlTWNRZzRhQ2ZEZ3hjc2Z6ZU9jUWgwYTJhUGhDY2doUmRHYUZjWmRZY0xla2hvY0RlTGhsZ2RlU2NLY1FkWWQxZ1ViZ2RFZHBhVWJ3Z2tnV2ZCYWxhWWhuZU5mQmhkY1RjS2R6YVFmUWZNZlJoWWZNaFZleWg4Y2dmVWVGZmtjZ2hWZFNkQWVuZEpoemNFZVRnTGNoY3diR2RXZDFid2NUZ0VjemhJZXFmUGVDZ0ljTGZLYXdiMWFPZ0ZnRmFFYmlmRGhUaEFoM2RGY0FiTmFUZ09iVGVCY1RkRGZWY2thRmFHZUNhUWh6Z05iamRFZk9oQWhnYzhmYmNNaHpla2ROYU5oamJ3Z29jRWRSZ2hmV2hXYkNkNWVLYkFneWE1YVhkVWVpY2tnR2FOYVZnSWhCY0tkVmJNZEpjRmVnYVpjV2FKaHpoUWJYY1VheWRzZzBlRWNEYkVmV2JEZEZkY2h2ZklhRmZCYlplSWZGYlVoZ2FKZXliY2J4aEVoeWE0ZGNkQmFsZ3RjY2dFaHhiTWd5aEthamJ3ZGlhQ2V5aHNiTmdUZWhjUmFSYklhZ2cwaHdiTmd4Z1FiRGdVY3pja2V3ZlVmd2UxZVphQmJSYWdoa2JNYXphWWh4Y0RhZ2JJZlBhR2F6Yk1hNWJEY1RnWWY4ZEthQmZFYllhVmFsZGdkdWVTY2dhTWR1Z1ZiMWRJZHBhQmZqaFZhU2hBZFNjbGNUZUNlUmNZZUdnVmNpZmNoMGVGYzFoTWZyYU5nQmVBZ3hlRmhnZ3hnWGFMYnllQmhRZVdkU2RCYlZhSWNDaGNjbmRNZ1JnTWd1Y0hmQWdaYmJhWGFCZ01oVGFNZmlmb2U4Z0lhZ2JzZnJnRGJVZDRlVWVVZFNlSWFOZE1hRGVjZ1VmQWcxYU1nNWNNZUZkTWdOZ1dhUWhVZllhSmZEZE1oMmFNZ1FiNGdDYkRkeGJzYnpiT2hRYTBhMmhQYkNoZ2hSaEdhRmZaYVloTGNrYm9lRGRMZWxmZGhTY0tkUWFZaDFoVWFnYUVkcGdVZXdia2hXYkJjbGJZZG5hTmNCYmRlVGNLYXphUWhRZE1iUmZZYU1jVmh5YjhkZ2VVYUZoa2JnZFZjU2RBY25kSmF6ZkVoVGNMZWhhd2hHZldkMWV3ZVRnRWd6ZklocWZQaENlSWdMaEtod2UxaE9lRmdGaEViaWREZlRhQWEzYkZnQWdOZlRkT2FUZ0JhVGFEYlZna2hGYkdjQ2FRZnphTmNqY0VnT2hBYmdkOGhiZE1memZrY05kTmZqZXdkb2NFZlJjaGhXaFdiQ2I1aEtjQWV5aDVjWGJVYmlha2FHZ05nVmRJaEJhS2FWZU1lSmNGaGdoWmFXZkpkemZRaFhjVWR5YXNiMGVFYkRjRWRXaERoRmNjZnZoSWJGYUJkWmRJaEZlVWRnY0pneWNjZHhlRWh5YTRoY2ZCYWxidGJjZ0VheGVNZnliS2FqZXdjaWdDZXllc2hOaFRlaGFSaFJnSWRnaDBhd2VOYnhjUWhEYVVkemhrZXdoVWV3YzFnWmhCY1JkZ2JrYU1iemJZYnhoRGVnZElnUGVHaHplTWU1YURnVGJZZThjS2hCZ0VkWWVWY2xoZ2V1ZlNoZ2FNZXVlVmExZElmcGFCYmpjVmdTZ0FjU2NsZ1RoQ2VSZFlhR2NWZmlhY2cwY0ZlMWdNYnJkTmFCZkFoeGVGZWdheGNYYkxjeWVCZVFhV2FTaEJiVmhJZ0NoY2JuZk1hUmRNZXVkSGdBZlplYmZYZEJnTWJUZE1maWJvYjhiSWdnaHNjcmJEZFVhNGFVZlVnU2ZJZE5nTWFEZmNnVWFBYzFoTWI1ZU1mRmFNZ05kV2dRZ1VjWWdKZ0RiTWUyZ01mUWg0YkNiRGd4ZHNmemFPaFFjMGcyZlBoQ2JnZ1JmR2ZGZ1phWWdMZWtjb2NEZExibGdkYVNoS2hRZ1lkMWJVZ2doRWdwZ1Vmd2draFdiQmJsY1ljbmNOZEJoZGZUaEtoemRRYVFjTWJSZFliTWhWYXliOGFnZFVhRmRrYWdoVmVTY0FkbmNKaHpiRWZUaExiaGd3Y0dkV2QxaHdhVGRFY3pmSWFxY1BlQ2JJZExjS2d3YzFoT2NGYkZiRWJpY0RhVGhBZjNnRmRBYk5iVGVPYVRiQmJUZkRiVmJrY0ZiR2VDZVFnemROYWpkRWJPZkFhZ2Y4Z2JnTWF6aGtjTmROZmpod2ZvY0VhUmVoZVdjV2NDYTVmS2RBZXljNWdYaFVhaWhrY0doTmJWZEliQmZLZFZoTWJKYkZnZ2FaZFdoSmR6YlFoWGhVaHloc2QwZ0VmRGJFYldjRGhGYWNmdmNJZkZhQmhaaEljRmJVZGdoSmZ5YWNkeGRFZHlhNGhjY0JjbGJ0ZWNjRWN4ZU1leWhLZWpnd2dpZUNheWVzYk5oVGZoZFJmUmZJYWdjMGV3Zk5leGNRYURoVWd6Zmtod2hVY3dnMWVaZUJnUmFnaGtiTWN6Y1lheGVEZWdkSWdQZUdnemJNZTVlRGJUYllhOGdLYUJnRWJZZlZobGZnZXVkU2RnY01ldWdWYjFnSWFwZkJjamhWZ1NoQWJTYmxlVGJDY1JkWWFHaFZnaWJjZTBiRmQxZk1ncmROZkJjQWN4aEZhZ2d4YVhiTGJ5YUJkUWFXZlNmQmhWZUlhQ2djYm5kTWFSY01idWdIYkFjWmRiZVhiQmZNZlRnTWdpaG9iOGVJZ2djc2VyZkRmVWc0ZlVoVWRTY0lhTmVNZERoY2NVZ0FhMWhNZTVhTWJGZk1iTmJXZFFkVWFZZ0poRGdNYzJlTWdRZjRoQ2REYnhkc2N6YU9iUWgwZjJnUGZDYmdjUmNHYkZjWmhZZkxma2dvZkRlTGhsYWRnU2JLY1FhWWMxY1VoZ2VFY3BmVWh3ZGtjV2RCZmxlWWFuZE5oQmNkZlRnS2V6aFFmUWRNZ1JhWWJNaFZieWQ4Z2dhVWhGZ2tmZ2NWaFNjQWRuZkpiemJFZlRiTGVoY3djR2JXZTFjd2dUaEVkemdJZ3FmUGZDZ0lkTGJLZHdhMWRPZEZjRmRFZ2ljRGVUZkFnM2RGZUFmTmZUZk9lVGNCZlRjRGNWYWtnRmJHZ0NlUWh6Yk5kamFFYU9nQWVnaDhlYmhNZnpka2NOaE5lamh3aG9kRWFSaGhhV2dXY0NoNWZLYkFoeWE1YlhjVWFpZ2tnR2dOZFZmSWFCY0tlVmdNaEpoRmJnZlpiV2JKYXpoUWNYaFVoeWFzYjBlRWhEZ0VmV2dEYkZlY2J2YUlnRmZCaFpkSWhGYlVkZ2dKZnllY2h4aEVjeWM0Z2NmQmNsZHRmY2JFaHhlTWF5Y0tnamd3ZWlmQ2N5ZXNlTmFUZWhhUmZSYUlmZ2EwYXdkTmV4ZlFnRGJVZ3pma2Z3Y1Vnd2cxZFpmQmFSZmdma2NNYXpiWWZ4YkRkZ2ZJZ1BjR2h6YU1hNWJEZlRlWWQ4YktlQmhFaFlkVmNsZ2dhdWJTZmdhTWV1ZlZhMWNJY3BlQmJqaFZnU2JBZlNjbGFUY0NkUmhZYkdhVmNpYmNkMGFGaDFhTWRyYU5mQmhBZ3hiRmFnZHhnWGFMaHloQmdRY1diU2dCYlZkSWVDY2NhbmJNYVJlTWF1ZEhhQWNaYWJlWGVCZU1kVGNNYWlob2g4ZklmZ2JzZnJmRGZVaDRoVWJVYlNkSWVOYk1jRGdjYVVnQWIxZE1hNWFNaEZiTWROZFdhUWZVYVlmSmZEZU1oMmZNZ1FnNGRDaERneGVzZHpoT2dRZjBjMmJQYkNmZ2ZSYUdkRmVaZVlnTGZrY29kRGVMZmxoZGVTZUtmUWdZZTFjVWFnaEVncGNVZXdka2FXZUJkbGVZZW5jTmRCZWRjVGVLaHpiUWNRZU1kUmVZZk1nVmZ5YThiZ2RVZkZha2VnZlZkU2hBaG5jSmN6YkVmVGRMY2hjd2VHZFdhMWF3aFRkRWZ6YUljcWdQYUNiSWhMYktnd2cxZU9mRmZGYUViaWJEYlRhQWgzZEZkQWFOYVRiT2dUYkJhVGNEaFZna2VGYkdiQ2hRaHpkTmRqYkVhT2NBZmdhOGRiZU1jemRrZk5jTmZqZndib2FFZlJiaGVXYVdiQ2M1YktmQWN5ZTViWGhVZGloa2dHY05hVmNJZkJjS2ZWZk1jSmNGY2diWmRXZkphemFRZ1hkVWV5ZHNkMGRFZ0RmRWRXZkRmRmRjYnZiSWZGZ0JlWmVJZkZnVWRnZkpieWRjYXhnRWN5ZDRkY2VCaGxidGdjYUVneGdNY3liS2FqZXdlaWhDZ3lmc2ZOYVRlaGhSY1JjSWNnZTBod2ZOYXhkUWFEYlVmemhrZXdlVWJ3ZDFlWmhCZ1JiZ2hrYU1jemFZZXhnRGhnZElkUGRHYnpiTWc1Y0RhVGRZZjhkS2FCZUViWWVWZGxlZ2R1YlNmZ2ZNYnVmVmQxZ0lhcGFCZmpmVmdTYkFnU2FsZFRlQ2FSYllmR2RWZWloY2IwZkZhMWVNZXJmTmhCaEFmeGZGaGdjeGVYZkxoeWRCY1FmV2VTZUJnVmVJaENkY2ZuY01kUmFNYXVlSGRBaFplYmRYaEJjTWRUYU1naWFvaDhkSWFnYnNkcmJEZlVnNGRVZVVkU2dJaE5nTWNEaGNhVWdBYzFjTWY1aE1mRmdNYU5jV2dRaFVmWWRKYkRlTWgyZk1nUWM0Y0NhRGZ4ZXNjemJPYVFlMGEyY1BiQ2RnZVJmR2RGY1pnWWFMZWtib2FEZkxlbGdkYlNjS2dRY1llMWZVZGdoRWZwZlVkd2FrYldmQmZsaFllbmFOYUJhZGFUaEtnemJRaFFkTWhSZ1lnTWdWaHllOGNnZVVmRmdraGdkVmZTZEFobmRKY3pjRWVUaExjaGZ3ZkdiV2MxaHdlVGZFZXpjSWhxZVBiQ2NJZExoS2h3YjFnT2RGYUZlRWhpaERmVGJBZjNhRmFBYU5jVGdPZFRjQmNUZkRiVmdraEZjR2JDaFFlemhOZmphRWFPZUFjZ2I4YmJnTWZ6aGtjTmdOYWpod2VvZkVkUmRoZVdmV2FDZDVjS2hBZXliNWhYYlVoaWFrZkdlTmVWYklmQmJLZVZiTWNKYkZiZ2FaZFdmSmV6YVFoWGJVZnlnc2UwZ0ViRGhFZVdoRGRGYWNkdmFJZkZhQmFaZEloRmRVY2dnSmd5Y2NleGFFZXliNGZjYkJmbGd0ZWNoRWF4Z01keWdLYmphd2NpZUNoeWRzZU5iVGNoZlJoUmZJaGdkMGh3aE5neGVRZERnVWN6Y2tkd2NVYndoMWhaYUJoUmhnYmtnTWF6ZVloeGJEZGdoSWNQaEdmemdNaDVlRGJUZllhOGJLZUJnRWNZY1ZjbGZnZHVmU2hnZE1jdWZWYjFjSWVwY0JiamNWZVNiQWJTZGxiVGFDY1JlWWZHZlZnaWVjZTBmRmMxY01ocmVOZ0JjQWJ4YkZjZ2Z4ZVhoTGN5Y0JnUWRXYVNiQmVWZ0lmQ2djY25jTWRSYU1mdWJIZ0FiWmFiaFhoQmJNYlRkTWVpYW9hOGZJZmdlc2ZyY0RkVWY0ZFVkVWRTZUloTmFNYURkY2JVZ0FnMWFNZTVoTWhGZU1hTmdXZVFnVWdZZEpiRGhNYjJoTWFRYzRlQ2JEY3hkc2N6Y09jUWQwYjJlUGVDZWdhUmVHYUZhWmVZYkxka2JvZURhTGRsZWRmU2FLZFFiWWYxY1VhZ2JFZ3BoVWJ3Y2tjV2dCaGxjWWRuZE5iQmNkYlRhS2R6Z1FlUWZNYVJiWWFNZFZkeWQ4ZWdhVWdGZWtiZ2ZWaFNnQWduZ0phemVFZVRlTGhoaHdkR2FXZDFjd2dUY0VjemZJYXFmUGFDYklkTGRLZndiMWNPZUZjRmZFZGlmRGNUZ0FhM2ZGZ0FkTmRUaE9kVGNCZVRlRGRWY2tjRmJHZ0NkUWh6Zk5kamFFZ09jQWJnZjhiYmJNZnpoa2NOYU5oamh3YW9iRWVSYmhiV2FXZkNlNWNLZkFieWI1Z1hoVWZpZ2tjR2FOaFZkSWVCaEthVmRNYUplRmJnYlpjV2VKYnpnUWVYYlVkeWJzYTBiRWFEYUVnV2ZEYUZnY2V2Y0lhRmhCZVpkSWhGZVVlZ2VKZXliY2V4ZUVheWc0Z2NlQmRsaHRmY2VFYXhhTWR5ZEtlamd3ZGlhQ2Z5Y3NlTmVUaGhnUmVSYklnZ2IwaHdlTmN4Y1FmRGFVaHpia2N3YVVkd2QxYVpnQmNSZmdja2NNZHphWWZ4ZERjZ2NJZlBlR2d6Y01kNWVEZVRoWWI4aEtnQmJFYVljVmJsaGdhdWFTYWdoTWZ1YVZmMWNJZHBnQmRqZVZnU2JBYVNlbGFUZkNlUmdZaEdjVmJpY2NnMGdGYTFoTWFyZ05oQmdBZHhiRmFnaHhnWGdMZnlmQmdRZVdiU2hCZlZnSWZDYWNobmZNYlJlTWh1aEhkQWJaYmJmWGJCY01iVGdNZmlnb2I4ZUlhZ2hzYXJnRGJVZTRkVWRVZFNhSWFOZk1nRGNjYlVoQWIxZk1nNWNNZ0ZoTWdOZldjUWhVZFlmSmFEYU1mMmhNY1FhNGdDY0RkeGJzY3piT2FRYzBmMmVQZENjZ2JSYkdhRmZaYlljTGdrZW9iRGVMZmxnZGFTYktlUWNZYjFoVWdnY0VlcGVVYndka2VXZEJobGRZZm5jTmJCaGRiVGhLZHphUWVRYk1oUmZZZE1hVmd5ZzhoZ2VVZEZka2ZnYVZlU2JBYm5mSmR6ZEVlVGZMYmhmd2ZHY1dmMWZ3aFRjRWV6ZklncWhQZUNlSWVMY0tid2cxaE9mRmVGZEVhaWFEYlRiQWIzZ0ZmQWVOZVRlT2JUZEJmVGZEaFZma2VGYkdjQ2RRZXpmTmhqYUVmT2dBYWdlOGdiZk1oemFrZk5hTmFqY3dib2JFZFJkaGZXZ1djQ2Y1Z0thQWd5ZDVoWGZVYmlma2JHZU5mVmNJZUJhS2VWYU1mSmFGZWdjWmVXZ0pjemdRY1hkVWJ5ZnNlMGhFaERiRWZXZ0RlRmRjZHZnSWdGaEJoWmZJYkZhVWNnZkpleWRjYnhhRWF5ZjRjY2FCaGxkdGhjZkVkeGVNYnlhS2dqYndoaWJDY3ljc2ROZVRjaGRSZVJkSWZnZjBhd2ROYXhlUWJEY1VlemZrYndiVWh3YjFoWmRCZFJkZ2VraE1nemVZZ3hlRGVnZUlnUGFHZXpjTWI1ZURoVGNZZDhmS2ZCZEVhWWhWZGxnZ2Z1ZlNmZ2VNZnVkVmgxYUlkcGNCZWplVmJTaEFnU2VsY1RnQ2RSYllmR2dWZ2lhY2gwZUZlMWJNZnJlTmVCYkFjeGFGaGdmeGNYYkxjeWdCYlFhV2ZTZ0JoVmZJZ0NiY2huZ01jUmdNZHVhSGFBY1phYmRYZkJlTWVUZk1kaWZvYzhoSWRnZHNmcmdEZlVlNGdVZVViU2RJZ05hTWVEZWNmVWdBaDFkTWM1Yk1mRmJNaE5jV2RRZlVlWWRKZ0RlTWIyZU1oUWM0ZENhRGF4aHNhemNPZFFjMGQyZ1BkQ2hnZlJjR2NGZFpkWWhMY2tlb2REYUxlbGRkZFNkS2RRYllhMWRVaGdiRWRwZlVhd2ZrYldjQmNsYVlmbmZOYkJiZGNUZkthemFRaFFkTWdSYVloTWNWYXlnOGhnZVVmRmFraGdoVmVTZ0FjbmhKaHpjRWdUYkxkaGd3ZkdoV2MxZHdiVGhFZ3pnSWdxaFBkQ2hJY0xoS2R3ZDFiT2RGZ0ZiRWZpaERoVGZBZjNmRmFBZU5mVGRPaFRkQmFUYkRnVmhrZUZhR2JDY1FmemROZWplRWFPZUFiZ2I4ZmJmTWJ6aGthTmVOaGpod2FvYUVjUmNoZldnV2VDYjVkS2VBY3ljNWJYYlVkaWJrY0diTmRWYklnQmJLZ1ZmTWRKZ0ZkZ2JaYldoSmJ6aFFiWGNVaHlmc2IwY0VhRGRFZ1dkRGVGYWNjdmRJYkZmQmFaZElmRmVVYWdlSmh5Y2NneGJFaHlhNGNjY0JnbGh0YmNmRWZ4Zk1heWhLZGpnd2NpZ0NneWZzY05lVGJoaFJjUmJJYWdnMGJ3Z05keGNRYkRlVWZ6aGtkd2dVZXdkMWRaY0JjUmVnZWtjTWJ6ZFloeGJEZ2djSWRQY0djemJNYTViRGNUZFloOGRLZEJoRWVZZFZibGdnZHVkU2FnY01mdWhWYjFjSWFwZUJhamZWaFNhQWRTaGxlVGhDZ1JiWWRHaFZmaWFjZDBiRmQxZk1hcmZOZkJhQWR4Z0ZmZ2d4Y1hhTGN5ZUJjUWNXYVNlQmFWZklhQ2FjZ25jTWhSZ01idWdIYUFhWmNiZlhiQmFNY1RiTWFpZG9jOGRJYmdkc2FyZ0RjVWU0ZFViVWhTYklhTmZNY0RjY2NVZEFmMWFNZzViTWVGY01lTmRXZ1FkVWFZZkpoRGhNZzJoTWJRZTRiQ2VEYnhmc2Z6Y09hUWYwZTJjUGJDZmdlUmFHZ0ZjWmFZaExla2RvZkRnTGFsZ2RiU2FLZ1FlWWUxY1VjZ2VFaHBhVWN3Z2thV2RCZ2xoWWRuYU5jQmZkY1RkS2R6YlFnUWFNZlJiWWFNZ1ZieWc4ZWdnVWRGZGtoZ2hWY1NoQWRuYkpjemVFY1RoTGFoYndhR2VXZTFld2JUYUVhemNJZ3FmUGhDZkloTGNLZHdnMWFPYUZjRmVFZmlnRGVUYkFiM2dGYkFhTmJUZE9oVGVCYVRlRGNWZmtnRmdHZkNhUWF6YU5hamVFY09oQWRnZjhiYmFNZXpja2ROZE5kamV3Zm9kRWJSYmhmV2JXYUNiNWRLYUFieWY1Z1hoVWhpY2tnR2dOYVZnSWRCYktiVmVNZUplRmhnaFphV2VKZ3pnUWNYYVVieWdzaDBkRWhEaEViV2NEZEZmY2d2ZkljRmVCZlpiSWZGYVVkZ2VKYnlhY2J4ZkVieWU0Z2NjQmNsZHRkY2dFYnhhTWR5ZktlamF3ZWloQ2F5ZnNnTmhUaGhjUmFSZkliZ2MwaHdiTmZ4ZlFnRGJVZ3pna2V3Y1Vid2cxY1pkQmNSYmdia2FNZHpjWWh4YkRkZ2ZJaFBiR2F6YU1lNWdEYVRjWWY4ZEtjQmhFYVlnVmZsaGdmdWFTYmdnTWZ1Y1ZlMWJJZXBmQmRqYlZkU2JBZVNjbGdUZkNkUmhZZkdmVmdpZGNkMGVGaDFiTWVyaE5jQmZBZXhkRmRnZHhiWGdMY3lkQmRRZldlU2hCZ1ZkSWRDaGNlbmRNY1JjTWR1ZEhmQWRaZ2JlWGRCYk1hVGZNZGlnb2Y4ZEliZ2VzY3JhRGVVYzRmVWZVZlNlSWhOYk1lRGNjZlVoQWExaE1mNWNNY0ZiTWFOY1dmUWdVZ1lhSmREZE1nMmFNY1FmNGJDY0RleGVzY3plT2RRZzBoMmJQaENmZ2JSZUdoRmJaY1lnTGZraG9lRGRMZGxhZGJTYktiUWVZZDFiVWZnYkVicGZVZndma2dXZUJmbGVZZG5jTmZCZmRkVGJLZHplUWdRZk1oUmRZaE1lVmh5YjhmZ2dVZUZha2JnZ1ZhU2RBaG5lSmF6ZEVkVGVMYmhhd2VHYldnMWF3YVRhRWJ6Y0llcWJQaENhSWRMYUtkd2QxaE9oRmFGYUVjaWZEZ1RkQWQzZ0ZmQWNOZ1RkT2RUZEJjVGVEZlZna2NGYUdiQ2dRZ3piTmVqYkVnT2JBZ2dlOGNiaE1nemFrYU5lTmVqZ3dob2VFYlJmaGFXYldnQ2U1Z0toQWd5YjVnWGVVaGlia2ZHZE5oVmNJZkJjS2VWZk1jSmJGZGdoWmNXY0phemRRYlhhVWd5aHNoMGZFZERhRWZXZkRkRmZjZnZlSWJGZUJlWmFJZUZiVWVnYkpieWNjY3hoRWh5aDRkY2FCZGxjdGZjY0VkeGhNZXlmS2NqZndiaWVDZHloc2NOaFRhaGVSZlJhSWVnZzBid2NOZnhjUWZEY1VhemhrYndlVWJ3YTFhWmdCZFJoZ2FrZk1hemRZZ3hoRGFnZElkUGhHaHplTWU1YURiVGZZaDhnS2dCZ0ViWWhWYWxhZ2J1Z1NhZ2JNYnVjVmcxY0lhcGZCZ2pkVmVTaEFhU2FsZ1RoQ2FSZ1loR2JWYmlhY2cwZUZoMWJNZ3JiTmFCZUFneGJGaGdieGJYZ0xkeWFCZVFoV2JTYkJhVmJJYUNmY2VuYU1nUmRNZnViSGFBYVpkYmhYZ0JkTWNUZk1oaWdvaDhmSWVnYnNjcmREYlVjNGZVYVVoU2FJYU5jTWREZWNnVWVBaDFlTWI1ZU1mRmdNZE5hV2VRY1VhWWZKZURjTWIyaE1nUWE0Z0NiRGZ4ZnNnemRPZlFnMGcyYVBnQ2NnZVJlR2JGaFpnWWFMZmtmb2hEYkxkbGNkYlNkS2JRY1lhMWhVZmdnRWFwZ1Vid2drZ1diQmVsZVlnbmFOZ0JjZGZUY0toemVRZlFoTWhSZFlkTWVWaHloOGFnYVVhRmhrYmdmVmJTZkFmbmZKZnpkRWNUZExmaGN3ZkdoV2IxYndjVGZFZnpjSWFxZVBmQ2ZJZUxiS2Z3ZzFlT2FGYUZlRWRpZ0RmVGJBZDNoRmNBY05lVGdPYlRlQmdUZURkVmNrZEZlR2ZDZ1FkemhOaGpnRWRPZUFmZ2Q4YmJnTWV6Z2toTmVOY2pmd2NvZ0VoUmdoZ1dlV2NDYjVnS2hBYnliNWVYaFVmaWhrZUdiTmZWZUlhQmFLYlZiTWhKZEZkZ2daZ1dkSmh6Z1FiWGZVaHlhc2cwYUViRGZFZ1dmRGJGYmNjdmJJZEZoQmFaYklhRmVVYmdlSmJ5aGNoeGNFaHllNGNjYUJhbGV0ZWNiRWJ4ZU1oeWhLYWpld2RpY0NjeWVzZk5oVGRoZVJoUmdJYWdlMGN3ZE5heGJRZkRkVWV6ZGtld2VVZXdoMWhaYUJiUmhnaGtlTWJ6ZFlleGNEY2doSWVQYkdoemdNYzVkRGZUZllmOGNLZkJoRWhZaFZkbGhnYXVlU2hnZ01ldWdWZDFjSWVwZ0JhamJWYVNlQWVTZ2xkVGRDYVJlWWNHaFZoaWFjZTBmRmIxZU1icmJOY0JnQWZ4aEZnZ2J4Z1hmTGR5Z0JoUWNXZFNkQmNWZEllQ2VjaG5nTWdSZE1odWVIY0FmWmViaFhlQmhNYlRkTWNpZm9kOGRJY2dnc2VyYURoVWI0YVVhVWZTZ0ljTmdNYURkY2ZVY0FnMWVNZTVnTWJGZU1kTmZXYlFjVWZZaEpnRGZNZTJjTWVRZTRnQ2hEYnhlc2R6aE9iUWMwZDJoUGZDZWdjUmVHYkZhWmNZZ0xma2hvY0RlTGhsZ2RhU2hLY1FjWWYxY1VjZ2VFZXBiVWJ3aGthV2JCYmxhWWNuaE5kQmdkY1RnS2N6ZlFhUWVNYVJhWWdNY1ZoeWE4ZGdlVWFGZWtkZ2dWZ1NoQWNuZkphemJFY1RkTGZoYndiR2FXZDFid2dUYUVkemhJYnFiUGZDaElmTGJLY3dhMWNPYUZiRmdFZ2loRGhUZ0FoM2dGZEFhTmNUYk9kVGNCYlRhRGRWaGtmRmJHZENnUWd6YU5iamRFZk9iQWFnZjhiYmhNZnpha2VOZE5hamJ3YW9mRWhSYmhnV2VXZkNnNWdLYUFjeWU1ZFhoVWhpaGtnR2JOY1ZkSWZCYUtlVmVNZ0pmRmFnY1piV2JKaHphUWNYZFVieWNzYjBiRWdEZUVkV2hEZEZnY2V2YUljRmdCYVpoSWhGZFVmZ2dKYnlnY2d4ZEVjeWI0YmNlQmFsaHRjY2hFaHhoTWh5YUtiamF3ZWloQ2Z5YnNkTmdUYWhiUmhSZklkZ2EwZ3dmTmV4Y1FjRGNVZnpia2V3aFVkd2UxaFpnQmFSaGdma2RNY3poWWR4YURjZ2VJZlBmR2d6Z01hNWJEZ1RkWWQ4aEtjQmZFY1lhVmFsZGdmdWhTYmdiTWN1YVZmMWFJZ3BlQmVqY1ZkU2hBYlNhbGhUaENoUmVZaEdiVmZpZ2NoMGdGZDFjTWhyZ05hQmVBYnhjRmZnZHhhWGFMY3liQmhRZ1dkU2FCZ1ZjSWFDZWNmbmVNZ1JnTWF1YUhlQWNaYWJoWGVCZE1kVGZNZ2lmb2g4ZEliZ2FzZnJiRGFVaDRlVWNVZ1NiSWROZE1mRGFjZlVlQWMxZU1mNWNNY0ZiTWZOZVdnUWZVZ1lnSmVEY01oMmdNZ1FkNGhDaERieGJzYnpjT2hRZTBlMmVQZkNmZ2NSZEdhRmdaZllkTGhrY29jRGhMZWxmZGNTYUtmUWNZZTFiVWNnZEVkcGdVZXdoa2dXZkJobGdZZW5iTmNCZmRiVGNLYnpiUWVRaE1hUmhZaE1nVmZ5YzhoZ2FVY0Zoa2NnZlZkU2hBYm5hSmd6Y0VlVGdMaGhld2RHYVdiMWZ3Y1RjRWN6aEljcWdQZUNlSWZMZEthd2cxZ09kRmNGaEVoaWJEaFRmQWgzZEZnQWNOaFRnT2VUYUJlVGJEYVZna2ZGY0diQ2RRZXpjTmJqY0ViT2dBZGdmOGdiYk1memJrZ05iTmNqaHdjb2NFYlJjaGNXZFdmQ2I1aEtnQWN5YTVoWGJVYWlma2RHYk5kVmVJaEJkS2JWaE1kSmRGaGdiWmdXY0pmemJRY1hoVWZ5ZHNmMGFFZ0RoRWdXYkRmRmZjaHZkSWRGYkJkWmdJYUZiVWNnZUpoeWdjYXhoRWZ5ZzRjY2dCYWxjdGNjYUVleGZNZnloS2ZqYndlaWhDZHllc2VOZ1RoaGdSZFJmSWVnYjBhd2JOZnhoUWJEYlVmemVrZXdnVWJ3YjFkWmJCZVJhZ2JrYU1nemFZZ3hjRGVnYUloUGhHZXpmTWg1ZERhVGJZaDhhS2JCYkViWWFWZGxhZ2J1ZFNlZ2RNZnVjVmMxY0lkcGdCaGpiVmdTZ0FmU2FsY1RnQ2ZSYVllR2FWaGljY2UwaEZnMWNNYnJlTmFCZkFleGhGYWdjeGFYZUxkeWhCZlFkV2FTZUJnVmRJZENiY2FuaE1nUmNNaHVhSGdBZlphYmRYZ0JkTWZUZ01maWZvZThkSWdnZnNkcmNEZ1VkNGNVY1VmU2NJY05jTWVEY2NjVWFBZTFjTWI1Z01iRmFNZ05oV2dRYVVkWWFKZ0RlTWgyZ01jUWg0Z0NkRGR4aHNkemhPaFFlMGQyYVBmQ2ZnZ1JiR2JGYlpkWWdMZmtmb2hEYUxobGVkZ1NkS2RRYlllMWZVaGdkRWZwYlVid2JrYVdjQmRsZFlnbmJOY0JkZGhUZUthemRRY1FjTWZSZFlmTWVWZ3liOGJnZVVlRmNrZmdlVmZTYUFmbmFKZXpnRWJUY0xnaGV3ZkdoV2cxZndmVGhFZnphSWFxaFBmQ2RJZExmS2J3aDFmT2JGZ0ZjRWNpaERlVGdBYzNmRmNBYU5kVGhPY1RjQmJUZ0RhVmdrZkZoR2NDZlFlemdOZmpkRWFPZ0FlZ2c4YmJhTWZ6Z2tmTmNOZWpmd2hvZkVoUmdoZ1dmV2FDaDViS2FBZHlkNWdYZFVjaWNraEdhTmZWZ0lnQmdLYlZkTWdKY0ZiZ2VaZldkSmh6YlFoWGZVZnlkc2cwYUVnRGhFZ1dnRGNGYmNmdmNJYUZmQmFaZUlmRmdVYWdhSmh5ZWNmeGRFY3ljNGFjZkJobGh0ZWNnRWF4aE1keWVLYWpnd2ZpYkNleWFzZk5oVGNoZFJjUmhJYWdmMGJ3Zk5oeGNRZURjVWR6Y2tjd2NVaHdkMWVaZkJkUmdnZGtkTWZ6Y1lmeGREZGdnSWJQZEdjemZNZTVjRGZUaFlmOGRLZUJnRWJZaFZobGdnYXViU2ZnZ01hdWhWZjFnSWZwYUJhamdWZVNnQWZTZWxnVGNDYlJkWWNHZFZmaWhjYTBhRmYxYk1kcmdOZ0JhQWV4ZkZhZ2V4Y1hjTGJ5Y0JiUWdXZVNiQmdWY0llQ2RjY25jTWdSZk1idWVIZkFmWmZiZVhmQmVNZlRkTWJpY29hOGFJZ2dhc2JyZkRnVWI0aFVjVWJTZ0lhTmFNaERhY2VVaEFkMWhNaDVjTWVGZk1nTmhXZ1FiVWVZY0poRGZNYTJnTWFRYjRkQ2dEaHhic2F6Zk9kUWgwaDJiUGVDZ2diUmdHYUZoWmdZZ0xoa2ZvZ0RjTGhsY2RnU2RLZ1FmWWgxYVVhZ2hFZHBiVWZ3aGtoV2hCYWxkWWduYk5kQmFkaFRhS2Z6YVFmUWdNZ1JnWWZNY1ZheWg4aGdnVWVGaGthZ2dWZ1NhQWhuZEpmemVFYlRnTGFoYXdnR2dXZjFnd2dUYkViemhJZXFhUGVDYkliTGVLZXdlMWdPZkZjRmhFZ2lnRGFUZkFnM2JGYkFlTmZUYk9kVGhCZlRlRGJWZWthRmhHZENlUWF6YU5kamNFZk9iQWhnYThmYmJNaHpha2dOY05namd3Ym9lRWNSaGhkV2dXZUNoNWNLYkFjeWI1ZlhkVWhpYWtnR2ROZFZjSWVCY0toVmVNZEpoRmJnZFplV2JKZHpjUWRYaFVleWRzZzBoRWNEZ0VmV2VEYUZiY2R2YklnRmhCaFpjSWNGZFVlZ2hKY3loY2V4ZUVoeWI0YWNoQmZsZ3RoY2hFZ3hnTWZ5YUtmamN3Z2lnQ2R5ZXNnTmdUZmhiUmJSZElkZ2IwYndiTmN4ZFFhRGNVYnpha2Z3aFVhd2gxaFpmQmFSZGdha2NNY3pnWWF4Z0RnZ2FJZ1BjR2h6Yk1hNWVEY1RlWWU4ZEtkQmhFZ1lkVmJsZGdodWdTY2dmTWF1YVZmMWNJY3BhQmhqYVZoU2ZBaFNhbGZUZkNmUmdZZkdnVmFpZGNoMGdGYjFmTWFyaE5oQmZBY3hoRmVnY3hkWGRMZ3lkQmZRZVdkU2RCYlZmSWFDY2NkbmZNZVJiTWR1ZUhlQWVaZmJjWGRCZE1hVGRNZWlob2c4ZkllZ2JzZHJjRGVVYjRoVWZVZFNmSWNOZU1hRGNjZFVoQWQxZE1jNWJNZUZjTWVOZVdiUWZVZFlhSmVEZ01iMmVNZ1FjNGVDZURneGRzZnpnT2hRZTBjMmhQZENmZ2hSaEdkRmFaZVllTGFrZm9iRGdMYWxlZGFTaEthUWJZZDFjVWdnY0VncGVVZndma2JXY0JnbGVZY25hTmVCZWRjVGRLYXpiUWZRZk1mUmVZY01oVmh5ZjhkZ2dVYUZha2RnZVZmU2NBZW5kSmV6YkVlVGhMaGhkd2dHZFdiMWR3ZlRkRWF6ZklocWZQZENkSWVMZktid2gxZ09nRmdGYUVnaWhEY1RnQWYzY0ZiQWdOYlRhT2dUaEJnVGREZVZka2NGY0diQ2dRZnphTmRqZEViT2NBYWdkOGRiZE1oemdrZU5lTmNqZ3djb2VFZ1JkaGVXYldiQ2I1ZUtoQWV5ZDVhWGFVYWlka2ZHZk5kVmVJZEJhS2hWaE1oSmNGZGdiWmRXZEpjemJRYVhhVWZ5YnNhMGJFYURjRWRXZkRhRmZjZHZlSWJGZEJlWmNJZkZmVWNnZ0pleWNjYXhjRWN5YzRlY2ZCZ2xldGFjY0VoeGRNZHlmS2FqaHdiaWJDZ3loc2FOYlRiaGNSaFJnSWhnYzBjd2VOZ3hoUWFEY1VjemVrZXdjVWV3YTFlWmFCYVJiZ2FrZ01nemZZZXhjRGdnaElnUGJHYXpnTWM1aERhVGNZYjhoS2ZCaEVkWWZWY2xhZ2F1ZVNjZ2dNZnViVmQxZ0locGNCZmpkVmVTZ0FmU2RsY1RnQ2VSZlliR2RWZmllY2gwZkZoMWVNZnJlTmJCYkFmeGJGZWdneGFYYkxoeWZCY1FoV2RTZUJnVmhJZkNnY2JuZU1jUmhNY3VkSGRBZFphYmhYaEJoTWJUZ01laWhvYjhnSWNnZXNicmJEY1VjNGJVaFVoU2NJZ05mTWJEYmNiVWFBYzFjTWY1Yk1lRmFNY05kV2ZRZlVjWWVKZkRlTWcyYk1oUWM0YkNiRGV4ZXNkemZPZVFjMGEyZVBlQ2NnZVJoR2VGZ1plWWZMaGtkb2REZkxlbGJkaFNkS2RRZVljMWhVZ2dmRWRwZlVid2RrZFdmQmhsYVljbmZOYUJmZGJUYUtnemdRYVFlTWRSYlliTWVWYXlmOGdnZ1VlRmJrZmdnVmNTYkFnbmFKYnphRWZUYUxiaGV3Y0dnV2ExY3dhVGhFZnpiSWZxZVBjQ2VJZkxiS2R3ZjFhT2VGZEZjRWRpY0RoVGVBZzNhRmdBZU5jVGRPYlRhQmFUZ0RlVmFraEZmR2hDZFFoemZOYmpoRWJPZUFnZ2E4YmJnTWN6aGthTmhOYmpjd2dvYkVhUmFoZldiV2dDaDVmS2dBZHlmNWVYZFVkaWZrYkdjTmdWY0llQmNLZVZmTWFKZEZkZ2RaYldkSmN6YlFhWGFVZ3lmc2YwZ0VnRGVFZVdnRGZGYmNjdmhJZUZoQmZaYUllRmNVZGdiSmZ5YmNkeGhFYXlkNGNjZ0JnbGF0Z2NoRWh4Y01ieWdLYmpmd2JpZ0NkeWdzYk5hVGZoaFJoUmZJYmdmMGV3Y05keGhRZERnVWZ6YWtjd2JVZ3dmMWNaYkJoUmZnZWtlTWF6YVlleGdEaGdoSWZQYkdnemJNaDVhRGZUY1lnOGFLYkJmRWNZZlZlbGhnYnViU2hnYU1odWhWYzFlSWFwZ0JhamZWY1NhQWhTZWxmVGRDYVJjWWRHZFZoaWVjYjBiRmQxZU1ocmNOaEJoQWV4ZUZlZ2d4aFhiTGF5Y0JnUWJXZlNoQmNWY0lhQ2ZjYm5jTWFSYU1jdWVIY0FoWmViY1hjQmJNaFRnTWRpaG9kOGNJaGdmc2NyYkRhVWI0Y1VjVWZTZ0liTmVNZURnY2FVZkFlMWFNZjVhTWVGaE1mTmZXZlFlVWdZY0phRGVNZDJiTWNRYTRlQ2dEZnhkc2V6ZE9hUWUwZzJlUGVDYmdnUmRHZkZoWmhZYkxha2ZvZkRjTGZsYmRiU2JLZlFiWWcxZFVoZ2ZFaHBiVWJ3ZWthV2FCYWxkWWVuY05nQmJkaFRiS2R6aFFlUWFNYlJoWWZNZ1ZieWM4ZmdlVWhGY2thZ2FWaFNmQWZuaEphemRFY1RlTGJoZHdiR2FXZjFhd2RUZ0VjemFJYXFnUGZDZUlmTGRLZ3djMWVPaEZiRmVFZ2lmRGJUZUFnM2dGY0FlTmZUZU9iVGRCZFRjRGVWZGthRmRHZkNhUWR6Yk5namJFZE9iQWZnZThkYmJNZnpha2JOaE5lamV3ZG9mRWRSY2hhV2hXZENiNWdLYUFieWQ1YlhkVWNpZGtkR2dOZlZhSWRCaEtnVmhNYkphRmJnZVphV2RKZ3pjUWZYZFVmeWhzYzBkRWFEZUVlV2JEZkZjY2Z2ZUllRmFCaFpmSWVGYVVnZ2NKZXlhY2R4ZUVneWE0YWNoQmJsZnRiY2FFZXhhTWN5YUtlamN3Z2loQ2J5ZHNmTmNUYWhhUmFSYUllZ2cwZXdmTmh4aFFoRGdVY3pka2J3ZlVid2UxZVpnQmRSY2dma2dNZnpjWWJ4ZURjZ2hJZFBlR2J6Zk1hNWZEYVRiWWc4ZUtjQmNFY1liVmhsYmdldWVTYWdmTWZ1Y1ZkMWNJYnBnQmRqaFZhU2hBYlNobGdUZ0NiUmJZY0doVmhpY2NiMGZGYjFoTWRyaE5nQmVBZXhmRmFnZnhkWGFMY3lnQmJRZ1dlU2hCYVZlSWRDZWNlbmVNZVJjTWZ1YkhiQWRaYmJjWGZCY01mVGhNZWllb2c4ZklmZ2NzYXJkRGJVZzRiVWJVY1NnSWFOaE1jRGVjaFVhQWUxZU1mNWVNYUZhTWVOZFdoUWhVYllhSmVEYU1hMmJNZVFjNGdDY0RmeGVzYXpkT2JRYjBjMmJQYkNlZ2NSYkdmRmRaY1llTGVrZG9oRGFMY2xiZGdTZEtoUWhZYzFkVWNnY0VncGhVaHdma2RXZUJnbGRZZW5iTmRCY2RkVGZLZXpoUWRRZk1iUmhZY01oVmh5ZzhiZ2FVaEZia2FnY1ZmU2hBYm5mSmZ6ZkViVGVMaGhmd2dHaFdjMWZ3aFRkRWR6aElocWFQY0NhSWFMaEtjd2ExZ09hRmJGYkVjaWhEZVRkQWczYkZoQWFOZ1RoT2ZUZEJkVGNEYlZka2NGY0doQ2ZRZHphTmFqYkVmT2RBZ2diOGJiY01nemRrY05lTmNqZ3dkb2dFZVJlaGdXYldiQ2c1YUtlQWJ5ZzViWGhVZ2loa2NHaE5mVmZJY0JlS2RWZE1nSmJGYmdkWmRXYkpiemhRZ1hnVWN5ZnNmMGJFZkRjRWVXYkRlRmhjYXZoSWJGaEJjWmVJZ0ZnVWNnaEpjeWVjZnhkRWd5ZzRnY2hCZmxndGZjZEVheGRNYnljS2RqZndmaWJDZXljc2VOaFRnaGVSYlJiSWRnYTBid2ROZnhkUWhEZ1VnemZrZndkVWZ3ZjFnWmJCY1JjZ2FrZ01kemJZY3hoRGZnaEliUGNHZXpjTWE1aERoVGdZYjhjS2NCZEVkWWVWZmxnZ2J1YlNkZ2JNYXVlVmMxZUlkcGdCYmpnVmVTZEFoU2FsZ1RnQ2RSZllhR2RWZ2ljY2UwYUZlMWNNZXJiTmFCY0FoeGFGZWdheGNYY0xleWNCY1FoV2RTaEJiVmRJaENiY2RuZE1lUmJNZXVjSGJBY1pjYmdYZUJjTWRUZk1maWdvYThiSWJnZXNocmVEZVVmNGNVZlVoU2VJZk5kTWFEZGNkVWZBaDFiTWY1ZU1jRmZNYk5jV2ZRZFVkWWZKZERkTWIyYk1kUWM0Y0NlRGh4ZnNhemFPZVFoMGEyY1BnQ2dnZFJoR2dGZ1pjWWNMY2tob2REZUxjbGFkYlNjS2ZRYllmMWZVY2djRWFwYVVod2drZldnQmRsYllnbmZOYUJhZGRUaEtjemdRYVFjTWFSZFlnTWVWYnliOGdnYVVnRmJrYWdhVmNTZEFkbmNKYnpnRWNUYUxhaGd3Z0djV2ExYXdnVGdFYnpnSWdxZFBiQ2ZJZkxiS2V3YzFhT2FGY0ZkRWRpZURhVGFBYzNjRmRBaE5kVGdPZ1RkQmNUYkRlVmRrYkZhR2JDZ1FjemdOZGpnRWhPYkFhZ2c4Y2JiTWd6ZGtoTmVOZWpnd2VvZkVjUmNoZldoV2VDZTVkS2VBZ3llNWFYaFVlaWZrZUdlTmhWaEliQmhLaFZjTWRKYUZlZ2NaYldmSmZ6ZFFjWGNVZnljc2UwZkVkRGNFY1dhRGJGZmNodmhJYkZlQmVaZEllRmNVZ2dkSmZ5YmNoeGNFY3lhNGFjY0JibGF0ZWNlRWJ4YU1heWFLaGphd2VpaENleWdzZU5jVGJoZFJjUmVJZGdlMGR3Zk5meGJRYURhVWh6Zmtmd2FVZHdmMWVaYkJmUmdnYWtoTWN6Y1lneGREY2djSWRQZUdiemhNZTViRGVUYVllOGhLZkJjRWNZZVZobGZnZHVoU2JnZU1kdWJWYTFhSWFwYUJhamVWYlNjQWNTY2xoVGhDZlJhWWZHZ1ZlaWZjYjBkRmgxZE1kcmFOaEJlQWF4ZUZhZ2J4ZlhiTGN5ZEJlUWdXaFNhQmhWYkloQ2djZm5nTWJSZE1hdWZIYUFiWmdiaFhhQmJNZ1RoTWNpYW9oOGdJZ2doc2NyZkRjVWI0YlVkVWdTaEljTmRNZ0RkY2NVYkFoMWhNaDVoTWVGaE1jTmRXaFFhVWVZZkpkRGFNZDJkTWRRZDRiQ2REYXhjc2J6aE9iUWQwYzJnUGdDZGdmUmFHYUZhWmNZaExka2dvY0RnTGZsZmRjU2hLY1FnWWIxZ1VlZ2NFYnBnVWh3Y2tiV2hCYWxoWWJuZU5nQmNkZVRkS2Z6ZlFhUWNNZVJoWWFNaFZkeWc4aGdnVWRGZmtlZ2JWZlNlQWRuYUphemZFYlRjTGVoZndhR2JXYTFod2dUY0VlemdJZnFlUGVDaElkTGhLZHdmMWVPYUZmRmVFZmloRGJUZ0FmM2ZGZ0FiTmVUZ09hVGNCaFRhRGRWaGtnRmVHY0NnUWF6ZU5iamZFZk9mQWNnZThoYmRNZHpha2dOY05jamV3aG9oRWRSaGhkV2dXZENjNWVLYUFleWQ1Z1hjVWFpYmtkR2ZOYVZmSWJCYUtiVmhNaEpiRmVnZFpmV2RKYXpjUWFYaFVneWRzZjBnRWVEZ0VlV2hEZEZlY2N2YklnRmZCZFpoSWdGZFVoZ2NKaHllY2h4Y0VjeWM0YmNkQmdsY3RiY2RFY3hoTWh5aEtiamR3ZGlnQ2V5ZXNmTmhUZGhhUmFSaElkZ2IwZXdmTmF4ZVFkRGFVZHpna2h3YlVkd2MxaFpkQmVSZGdia2dNZ3pjWWR4ZkRoZ2JJZFBjR2V6ZU1lNWdEZlRkWWY4Z0toQmZFZVljVmdsYmdhdWNTZ2dmTWJ1Y1ZnMWJJYXBhQmhqY1ZkU2VBaFNobGRUZ0NiUmZZZEdjVmNpYmNiMGZGYzFkTWRyY05jQmZBZXhlRmhnYXhlWGFMYnlnQmJRaFdhU2JCY1ZjSWVDZmNobmhNZlJlTWV1ZUhmQWZaZmJnWGFCZU1hVGJNaGlnb2U4ZUlnZ2ZzY3JnRGdVZzRnVWZVZ1NmSWZOYk1oRGVjaFViQWMxYU1jNWJNZUZkTWdOZ1djUWdVYVlnSmdEYk1iMmZNYlFjNGhDYkRkeGNzZXpiT2NRZDBlMmNQYkNlZ2ZSZ0doRmVaZVlnTGNrZ29hRGdMZWxlZGVTY0tnUWNZYzFjVWJnZ0VkcGVVZXdna2FXZkJjbGZZYW5iTmJCZGRmVGhLYnpmUWNRZE1mUmZZaE1iVmd5ZzhnZ2RVYkZia2RnZVZjU2ZBZW5oSmR6aEVmVGVMYmhkd2RHYVdjMWJ3ZFRmRWR6Y0ljcWNQZUNoSWdMZEtod2IxYU9iRmJGYUVnaWNEY1RmQWYzZ0ZjQWhOZ1RkT2ZUY0JkVGhEYVZna2VGaEdhQ2JRaHpjTmNqY0VjT2NBZmdmOGViaE1oemZrY05oTmJqYndlb2ZFY1JhaGVXY1dlQ2M1ZEtlQWN5ZTViWGNVZWlla2JHYU5jVmJJYkJjS2FWZ01iSmVGYWdmWmhXZkpiemRRZlhiVWJ5ZXNhMGdFYkRnRWVXYkRlRmdjYXZiSWVGZkJnWmZJZUZiVWRnY0pheWVjZXhmRWN5aDRnY2RCY2xndGFjYkVjeGRNYXllS2dqaHdhaWFDZXlmc2VOZlRjaGNSZFJjSWRnZjBld2ZOYnhiUWFEYlVnemFrZXdhVWR3YzFiWmRCZ1JkZ2FraE1oemNZZHhmRGhnYkllUGVHaHpoTWM1aERjVGRZZThnS2hCZEVlWWVWZWxmZ2d1ZlNnZ2ZNZnVoVmUxYklkcGdCYWpoVmdTY0FhU2ZsZFRiQ2hSaFlnR2hWYmlkY2QwZkZoMWRNY3JmTmFCYUFleGJGZGdneGZYZUxmeWRCZ1FjV2NTZkJiVmNJYUNkY2RuZ01nUmhNYnViSGhBZ1phYmVYZkJiTWhUaE1jaWdvZzhmSWFnZnNkcmNEYVVmNGJVZlVlU2hJZ05oTWJEYWNiVWVBYzFoTWc1Yk1kRmNNZE5kV2NRY1VmWWdKY0RkTWEyYk1lUWY0YUNhRGJ4aHNjemhPZ1FjMGUyY1BiQ2dnY1JhR2NGaFpnWWdMYmthb2VEYkxkbGVkZlNlS2RRZ1loMWRVZ2dhRWJwZ1Vmd2hrZ1djQmRsZllibmJOZEJoZGJUYktnemNRZ1FjTWVSYllnTWFWZ3lmOGhnaFVhRmVrYmdmVmZTZUFnbmFKZXpmRWJUYUxhaGh3Z0dkV2UxZndmVGJFYnpoSWdxZFBmQ2ZJZUxiS2Z3ZTFnT2hGZEZoRWdpaERmVGNBaDNnRmVBZk5kVGNPY1RjQmFUZURlVmhrYUZjR2RDY1FoemVOaGpnRWNPZ0FlZ2I4Z2JkTWd6ZGtlTmZOaGphd2hvZkVnUmVoYVdlV2ZDYTVmS2ZBZXloNWNYZFVoaWRraEdlTmNWZUljQmhLY1ZmTWRKZkZiZ2NaZ1dhSmR6ZFFlWGZVZXlkc2QwZ0VlRGNFYldhRGdGZWNmdmdJZEZjQmZaY0lnRmZVY2dmSmV5ZWNjeGZFaHlnNGJjZkJmbGV0ZGNkRWF4ZU1heWJLZGpjd2hpZ0NjeWhzZk5lVGFoaFJiUmdJaGdnMGd3Zk5oeGVRZERkVWN6Y2thd2FVZ3dmMWRaZkJmUmFnY2tmTWF6Z1loeGdEZmdjSWRQZEdnemFNZTVkRGFUZ1llOGhLYkJnRWZZYlZobGdnY3VjU2JnYk1jdWNWZjFiSWJwaEJoamFWYlNkQWZTYWxnVGFDZ1JiWWJHZ1ZoaWFjaDBhRmUxY01jcmROZEJmQWJ4ZEZiZ2N4ZVhkTGV5Z0JkUWZXYVNlQmFWYUlmQ2NjaG5kTWdSY01odWJIY0FhWmViZlhoQmhNZlRoTWdpYW9oOGdJZGdhc2dyZERhVWE0Z1VoVWNTYklnTmhNY0RhY2VVYUFjMWFNaDVmTWVGYk1kTmFXZlFoVWhZY0poRGVNZzJmTWFRZTRhQ2NEZnhlc2F6aE9oUWUwZjJnUGRDYWdnUmhHaEZnWmRZYkxla2FvY0RhTGVsZmRoU2VLZVFiWWQxZVVjZ2dFYXBlVWd3Z2tjV2VCYWxnWWNuZk5nQmVkZFRoS2J6ZFFiUWhNYVJkWWZNZ1ZmeWQ4ZmdkVWZGZmtjZ2FWZVNoQWFuZEpiemFFaFRhTGFoZHdkR2FXZDFnd2RUZ0VkemhJZnFmUGJDZklnTGdLYXdoMWRPZUZmRmFFY2lnRGRUZEFmM2FGYUFoTmFUYU9oVGhCZFRmRGFWZmtiRmNHYkNoUWV6aE5kamRFY09oQWJnZDhhYmVNZnpia2VOZE5hamR3Zm9jRWhSZWhlV2VXY0NjNWRLaEFmeWY1ZVhjVWFpZGtmR2ZOY1ZlSWZCYUthVmZNYkpjRmNnYlpkV2FKYnpmUWRYY1VleWJzZzBnRWFEZEVjV2REZUZlY2V2YUlhRmJCZ1pkSWhGYVVjZ2FKZHlnY2F4ZUVheWU0Y2NnQmRsYXRmY2NFY3hlTWh5Y0toamR3ZGlhQ2J5Z3NjTmRUZWhlUmNSY0lmZ2IwYndhTmd4aFFjRGhVYXpoa2Z3ZFVkd2gxY1phQmdSZmdka2JNZnpiWWd4Z0RlZ2dJZlBhR2V6Zk1iNWNEYVRlWWY4ZUtmQmRFY1llVmFsYWdmdWZTZGdjTWR1YlZmMWFJYXBhQmhqZlZoU2VBaFNkbGVUYUNnUmdZZUdkVmVpYmNmMGJGZjFjTWRyZk5lQmRBZnhoRmNnaHhjWGRMaHloQmJRaFdmU2JCYVZkSWdDY2NjbmVNYlJiTWV1Y0hmQWVaZGJlWGVCYk1kVGVNZGlnb2Q4ZElhZ2JzZ3JoRGNVYTRnVWRVZFNoSWVOZ01mRGVjaFVjQWYxZk1jNWRNZkZmTWROYldiUWFVZ1loSmNEYU1mMmNNZ1FkNGRDYkRmeGJzY3plT2dRaDBoMmVQZ0NmZ2NSaEdjRmJaYlloTGFrZm9kRGRMZWxnZGhTZUthUWFZYzFiVWNnZkVncGRVZHdna2JXYkJlbGNZZ25oTmFCZGRmVGRLZ3phUWZRYU1jUmRZZ01lVmR5YjhmZ2FVZUZna2ZnaFZkU2JBYW5hSmV6YkVjVGhMZGhjd2NHYVdhMWF3YlRlRWN6Z0locWRQaENhSWJMZktid2IxZU9kRmVGZUVnaWREZlRkQWczZ0ZlQWROYVRnT2JUZkJhVGVEYlZja2RGZkdoQ2NRZnpnTmFqZkVhT2ZBZGdhOGJiZk1jemFrZU5mTmhqZndhb2dFZ1JoaGFXZ1dnQ2E1aEtkQWJ5ZjVkWGNVYmlka2dHaE5kVmVJYkJoS2NWZE1jSmFGYWdlWmVXaEplemZRaFhjVWV5ZXNoMGVFaERmRWdXaERmRmdjZXZoSWhGYUJmWmhJaEZiVWNnY0poeWRjZ3hkRWV5aDRkY2dCZmxkdGNjYUVmeGJNZHlmS2hqZHdjaWRDZXlnc2dOZVRhaGFSYVJjSWZnZjBnd2FOZnhnUWFEZVVkemNrYXdhVWN3ZTFoWmNCZ1JiZ2JrZ01iemNZYnhlRGdnZklhUGhHZHplTWY1ZURhVGhZZjhnS2RCaEVoWWRWZmxmZ2R1aFNiZ2dNYnViVmgxYUlicGdCZGpnVmVTZ0FlU2hsZVRiQ2JSZFlhR2dWYWllY2gwaEZjMWNNZnJoTmdCZ0FoeGRGZGdleGJYaExmeWVCY1FiV2JTZEJiVmNJZ0NmY2duZE1oUmhNZnVkSGNBZlpoYmNYYUJnTWZUZ01haWVvYjhjSWhnZHNlcmdEYlVmNGdVZVVhU2VJYU5lTWFEYWNnVWNBZTFoTWY1aE1iRmJNY05jV2RRYlVmWWRKYkRjTWgyZk1jUWY0ZUNnRGJ4ZXNhemJPYVFiMGUyZlBhQ2ZnaFJlR2JGaFphWWNMYWtlb2JEZUxmbGdkZlNkS2dRZllkMWFVZGdmRWNwZFVjd2RrZ1dlQmhsaFlibmhOZUJlZGJUZUtkemRRZVFkTWRSaFlkTWdWZnlnOGhnZVVlRmFrYmdkVmhTZ0FhbmNKZHpmRWRUaExjaGN3YkdiV2QxZ3dkVGhFZXphSWVxZVBhQ2VJZExlS2J3YTFlT2dGYUZiRWNpZkRlVGFBZDNoRmNBY05nVGhPaFRkQmRUYkRjVmRrYUZhR2RDYVFoemROZGpnRWVPaEFmZ2Q4Z2JiTWR6ZmthTmJOZGpjd2NvZEVhUmRoYldiV2hDYjViS2VBYXlkNWFYY1VkaWFrZkdjTmdWZkloQmJLZ1ZmTWhKYUZiZ2ZaZFdiSmV6ZVFoWGJVZ3lmc2YwaEViRGNFZ1dlRGhGY2NhdmhJZ0ZhQmRaaElmRmhVZmdhSmd5Z2NneGVFYnlkNGJjZUJjbGd0YmNhRWh4YU1jeWZLY2pod2RpaENleWZzYk5jVGhoYlJhUmdJZWdlMGN3ZU5ieGVRaERnVWN6Ymtjd2ZVYndjMWNaYUJhUmFnY2tkTWR6Y1ljeGVEZmdmSWJQYkdnemNNZzVjRGJUZVljOGNLZUJhRWFZYVZhbGVnZHVhU2FnaE1ndWdWYTFmSWJwaEJlamdWYlNkQWhTY2xiVGdDZFJnWWhHZ1ZnaWVjZjBoRmcxZk1ncmROZUJiQWR4Y0ZoZ2d4YVhjTGJ5YUJnUWRXZlNmQmNWZEljQ2ZjYm5iTWdSZ01idWhIY0FoWmhiYlhjQmRNZlRoTWhpYm9hOGFJaGdjc2FyZ0RiVWQ0aFViVWJTZ0liTmJNZERlY2FVZ0FmMWFNYTVjTWFGYU1iTmNXZ1FlVWhZZkpjRGNNYzJlTWVRYTRlQ2NEZHhmc2d6Z09iUWYwZTJjUGNDYmdoUmFHYkZkWmNZYkxma2NvZURjTGdsY2RjU2NLZlFhWWExY1ViZ2dFZXBlVWN3YmthV2dCYWxnWWFuZU5jQmRkZ1RoS2R6ZVFnUWVNaFJkWWJNYVZkeWM4ZGdjVWNGZWtkZ2ZWYVNlQWNuZUpnemVFZVRoTGhoZHdlR2dXZTFld2RUYkVlemZJZnFjUGdDaEloTGRLZ3dmMWhPYkZiRmRFYmllRGFUY0FhM2dGZEFjTmhUZk9kVGJCZ1RiRGhWZmtkRmJHaENlUWN6YU5iamZFYk9oQWJnYzhhYmhNZXpja2VOZU5oamZ3Z29hRWNSZGhhV2NXaENoNWhLaEFkeWc1aFhoVWNpZmtiR2ROZVZkSWdCZktjVmNNZEpmRmVnZlplV2dKZHpiUWZYZ1VjeWRzYjBiRWZEYUVlV2REZEZoY2N2aEliRmJCYVpiSWJGYlVlZ2hKZ3loY2N4ZEVjeWE0YmNnQmVsaHRkY2ZFY3hmTWh5Z0tmamR3Z2llQ2Z5ZnNjTmVUY2hlUmZSaEllZ2MwZHdnTmF4Y1FkRGdVZHpia2F3Z1Vjd2gxYVpiQmZSY2dla2NNZ3pmWWR4YkRoZ2hJZVBoR2V6Zk1iNWNEaFRnWWE4YkthQmVFYVliVmZsYmdhdWZTaGdiTWF1aFZiMWNJY3BiQmdqZ1ZiU2VBYVNibGFUZUNjUmdZaEdlVmRpaGNjMGdGYjFkTWdyZE5lQmVBZnhnRmhnYnhjWGJMZXlmQmRRY1doU2NCZlZkSWVDY2NlbmVNZVJhTWN1Y0hiQWRaZmJmWGJCZk1iVGhNYmlmb2M4aElkZ2VzZHJlRGNVYjRjVWdVYlNhSWNOZE1mRGNjYlVjQWgxZE1lNWFNY0ZnTWJOZFdlUWVVY1liSmZEZ01jMmFNaFFoNGNDZURheGJzZHpjT2RRYzBjMmVQZENmZ2JSaEdkRmdaY1lnTGVrZ29hRGJMaGxjZGZTYUtjUWVZYjFlVWNnZ0VlcGdVY3dka2VXaEJlbGRZaG5mTmFCYWRmVGNLZHpoUWNRZ01jUmRZZU1jVmd5ZDhoZ2VVYkZla2NnZlZiU2ZBY25nSmN6aEVmVGJMZGhid2ZHZ1dlMWZ3Z1RnRWF6ZEljcWhQZkNhSWRMZkthd2UxaE9iRmJGYUVlaWdEZlRmQWgzYkZkQWhOaFRoT2dUY0JmVGVEYlZha2JGZkdlQ2hRYnpkTmZqaEViT2hBZWdkOGRiZ01lemdraE5nTmJqYndob2ZFZFJmaGRXZ1dnQ2E1aEtnQWd5ZzVlWGhVYWloa2JHY05iVmFJZ0JiS2NWZU1oSmJGYWdhWmVXZUpkemRRZFhmVWZ5YXNhMGFFY0RhRWZXaERnRmhjZnZmSWNGZUJnWmNJaEZkVWZnZ0pjeWJjYnhkRWN5aDRoY2dCYmxldGZjZEVneGJNZ3lhS2FqYXdhaWZDZXlnc2dOZ1RnaGRSY1JhSWRnYTBkd2VOZnhhUWhEaFViemdrZXdoVWJ3YjFjWmJCY1JlZ2JrZU1oemZZZXhlRGFnZklkUGdHZHpnTWI1Y0RlVGJZYThmS2FCZkVkWWZWYmxkZ2J1ZlNiZ2JNZHVlVmMxZUlmcGVCZ2poVmhTZkFiU2ZsZFRiQ2JSY1lmR2VWZ2loY2cwZEZjMWdNYXJmTmVCZEFkeGVGZGdjeGhYZkxmeWhCZlFmV2dTaEJkVmFJZkNnY2huZU1hUmVNZHVhSGRBZlpiYmFYZ0JoTWJUZk1jaWRvZzhmSWNnYnNmcmdEZ1VhNGVVaFVnU2hJYU5nTWJEZWNlVWNBYTFoTWI1Z01mRmVNZk5iV2JRZ1VkWWhKaERmTWUyZU1hUWg0YkNhRGV4YnNmemVPZFFjMGgyYlBhQ2RnZ1JnR2ZGYlphWWVMZWtjb2ZEZkxibGdkZVNjS2dRYVlhMWZVaGdiRWZwYlVld2drY1dnQmRsYllobmNOZ0JjZGVUYUtjemdRZlFmTWFSYVljTWFWZXloOGZnaFViRmhrZGdnVmdTZ0FibmRKaHphRWhUYUxiaGh3YkdiV2MxYXdmVGhFZnpjSWZxaFBlQ2dJZkxkS2R3ZjFiT2ZGaEZhRWVpaERmVGdBYzNjRmJBY05nVGhPaFRlQmRUYURmVmdraEZjR2hDYVFiemJOYWpiRWdPZUFnZ2g4Y2JmTWJ6YWtlTmVOaGpnd2FvaEVnUmNoYldoV2VDYzVmS2RBYnlkNWJYZlVoaWNrY0dnTmJWZ0lhQmNLY1ZnTWdKZ0ZmZ2JaY1dhSmZ6YlFnWGZVaHlmc2QwZkVkRGJFZ1dmRGhGZ2NhdmdJYUZoQmdaZElnRmVVZ2dnSmF5aGNmeGRFZ3lkNGdjZ0JmbGV0YmNmRWd4Z01ieWJLZGpld2hpZkNmeWZzYU5oVGVoZFJlUmRJZWdoMGV3aE5jeGVRZERlVWJ6Ymtnd2FVZndnMWRaYUJoUmJnY2thTWF6Y1lieGdEaGdmSWVQZkdmemZNZDViRGFUZ1loOGFLaEJkRWVZZlZjbGNnZ3VmU2dnYU1ldWZWaDFjSWdwZkJoamhWZVNiQWVTZ2xlVGdDY1JnWWFHaFZkaWdjZTBkRmExZ01ncmJOYkJiQWZ4ZUZlZ2F4YVhoTGV5aEJlUWdXZlNhQmJWZklnQ2NjZm5oTWRSaE1kdWJIaEFiWmJiYlhlQmFNZVRnTWdpY29lOGJJZmdhc2FyZ0RjVWc0ZlVmVWNTZklkTmhNZkRjY2ZVYkFhMWdNaDVkTWJGZk1oTmZXYVFlVWhZYkpnRGRNaDJjTWFRYTRhQ2NEYXhhc2h6ZU9nUWgwYzJkUGNDZWdhUmhHZUZlWmFZYUxna2VvY0RiTGFsZ2RmU2RLYVFoWWYxYVVkZ2JFZnBnVWN3YWtoV2hCZWxlWWRuYU5hQmZkZlRlS2J6YVFhUWdNY1JmWWJNYVZjeWg4Z2djVWVGYmtnZ2JWZFNmQWZuZEplemhFYVRiTGRoYndjR2dXZDFid2NUaEVkemdJY3FlUGdDZElmTGJLZHdoMWZPZ0ZoRmdFaGlmRGVUaEFjM2RGZkFiTmNUY09hVGJCYlRhRGdWYWtkRmNHY0NkUWV6Yk5lamdFZE9hQWZnZDhnYmFNZ3pha2NOZ05iamJ3aG9oRWNSY2hiV2RXY0NkNWdLYkFheWg1YlhlVWVpY2toR2dOaFZnSWhCZEtjVmNNaEphRmRnYVpkV2RKY3pmUWFYY1VieWVzYjBoRWhEaEVnV2dEZ0ZhY2Z2YUlhRmVCYlpjSWZGaFVoZ2NKYXloY2R4ZEVleWc0YWNoQmZsZ3RiY2VFaHhlTWF5YUtmamJ3ZmliQ2R5ZnNiTmJUZ2hnUmdSZ0ljZ2EwZ3dmTmZ4YlFlRGJVZHpla2R3Y1Vld2cxaFplQmhSZGdia2RNZnpiWWF4YURoZ2JJYlBnR2J6Z01hNWZEZlRlWWE4YktmQmdFYlliVmFsaGdkdWRTYmdkTWF1ZFZmMWdJYnBiQmVqZ1ZnU2VBZVNlbGNUYkNkUmFZYUdkVmFpaGNjMGFGYTFkTWJyYk5oQmZBZnhlRmJnZ3hjWGZMYnliQmVRYVdoU2dCZFZkSWhDaGNjbmdNZlJlTWZ1YUhiQWhaZmJjWGRCZk1hVGFNYWllb2M4YUlkZ2JzYXJjRGdVYjRkVWJVZlNlSWROYk1nRGJjZVVhQWYxYk1lNWVNYkZiTWROYldnUWJVaFlkSmdEZ01lMmVNZlFiNGVDZkRmeGhzYnplT2ZRYzBmMmVQZENiZ2RSZkdmRmVaZVlnTGJrZm9kRGRMY2xkZGJTYUtkUWdZaDFkVWJnZkVhcGZVYndka2dXY0JibGFZY25jTmVCZGRhVGdLYXplUWdRZE1jUmZZaE1oVmN5ZzhlZ2FVY0Zma2JnYVZmU2ZBZW5iSmd6YkViVGZMZGhkd2RHZldoMWh3Z1RlRWZ6YUlkcWhQYkNiSWZMZktid2ExYU9iRmFGYkVnaWVEYVRjQWgzY0ZnQWVOZlRlT2RUaEJhVGZEZlZoa2NGY0dkQ2JRY3piTmZqYUVmT2ZBZWdjOGFiYU1hemhrY05jTmNqZ3djb2dFZlJhaGJXZVdhQ2Q1YUtkQWZ5ZzVlWGRVZWlha2VHYU5lVmVJZ0JhS2JWZU1lSmNGZ2doWmhXZkpiemJRZFhmVWF5Y3NlMGdFaERhRWRXZkRmRmZjZ3ZiSWZGZkJlWmFJY0ZiVWZnZEpieWZjY3hnRWh5ZzRiY2JCYWxldGFjZUVmeGVNYnlkS2ZqYXdkaWZDYnlmc2ZOaFRhaGVSY1JoSWZnaDBid2dOZ3hhUWFEYVVkemRrY3djVWN3YjFhWmdCZVJmZ2NrY01kemhZZXhhRGdnZkliUGdHYXpoTWg1ZERoVGdZaDhiS2dCZ0VnWWNWY2xnZ2h1YlNkZ2JNY3ViVmIxaElmcGhCZmpoVmVTaEFkU2dsZ1RmQ2NSZVloR2RWZWloY2gwY0ZhMWRNZXJiTmFCZEFkeGdGZmdmeGFYYUxkeWJCYlFmV2RTY0JkVmdJZ0NlY2JuZU1oUmdNY3VjSGFBaFpmYmhYZEJnTWVUaE1naWhvYjhiSWFnY3NmcmVEaFVmNGVVZ1VmU2VJYU5hTWJEaGNoVWRBZTFoTWY1Z01lRmJNaE5iV2FRYVViWWVKYURjTWQyZE1mUWM0aENnRGR4ZHNjemNPY1FoMGMyZlBjQ2FnZ1JoR2ZGaFpoWWRMaGtkb2hEZ0xlbGZkZFNoS2FRY1lnMWVVYmdhRWJwZ1Vkd2VrY1dlQmhsYVlibmhOYkJiZGRUYktmemFRZ1FjTWhSYVliTWVWYnlnOGFnZ1VlRmhrZmdhVmNTZEFjbmNKZ3pnRWZUZExjaGZ3YUdjV2UxZHdlVGdFYXpkSWNxZVBiQ2VJZExkS2N3aDFlT2VGYkZiRWdpZURkVGVBZDNhRmdBaE5iVGRPZlRiQmdUYkRnVmFraEZnR2ZDZFFjemROZGpjRWFPaEFjZ2U4aGJoTWd6Z2thTmVOYmphd2FvY0VjUmdoY1dmV2FDZDVhS2FBZXlkNWRYaFVjaWZrY0diTmFWaElhQmFLYVZhTWJKaEZnZ2haZldmSmZ6Z1FiWGFVaHlkc2IwYUVlRGJFY1dnRGhGaGNkdmJJaEZnQmFaY0ljRmJVZGdlSmd5ZmNleGFFYnllNGFjaEJibGR0ZWNmRWN4Zk1keWNLZWpid2NpZUNleWJzZE5nVGhoaFJnUmRJZGdkMGh3Y05ieGJRZkRiVWd6Y2tmd2NVZndoMWJaZ0JkUmFnYmthTWh6YVlmeGFEZ2dnSWZQaEdlemdNYjVmRGdUaFljOGVLZUJjRWNZYVZhbGNnZ3VhU2JnZ01kdWhWYjFoSWVwYkJmamZWY1NnQWhTZGxmVGdDZ1JoWWVHY1ZjaWhjZjBhRmExY01hcmJOY0JjQWN4ZEZjZ2d4YlhjTGR5Y0JkUWdXaFNnQmdWZkljQ2hjZW5nTWRSZ01idWFIYkFkWmNiYVhiQmFNZ1RhTWhpZG9kOGFJYmdjc2NyZkRnVWU0Z1VjVWNTZ0loTmFNYURhY2NVZEFnMWFNZjVoTWVGYk1oTmhXZVFjVWhZYkpiRGdNZzJlTWhRYTRhQ2FEZHhic2F6YU9iUWQwYjJmUGNDZmdmUmNHYUZkWmVZZUxma2JvYURkTGNsaGRjU2hLZFFkWWMxY1VnZ2ZFZHBlVWV3Z2tjV2FCY2xiWWhuZE5lQmJkaFRoS2F6ZFFkUWFNZ1JiWWRNYVZheWc4Y2djVWhGaGtjZ2FWZlNnQWduZkpoemhFZFRlTGdoZndlR2JXZDFhd2JUZ0ViemhJY3FlUGRDZUlhTGFLYXdlMWdPZEZiRmhFYWlhRGZUYkFmM2hGaEFkTmRUZU9kVGdCZlRlRGFWZWthRmhHZUNkUWV6YU5namNFYU9kQWhnYThnYmVNZHpja2ZOZ05iamR3Ym9hRWNSYmhlV2hXYUNlNWhLYUFjeWg1YVhoVWVpYWtiR2hOYVZmSWJCYkthVmFNZEplRmZnaFphV2dKZnplUWdYY1VheWVzYzBiRWZEZkVhV2JEaEZkY2Z2aEllRmdCaFpoSWRGZVVkZ2ZKaHliY2V4Z0VkeWg0Z2NhQmhsaHRjY2RFZXhoTWN5ZEtiamZ3YWllQ2V5Y3NoTmFUZWhhUmRSY0ljZ2YwaHdmTmV4YVFlRGRVY3pma2h3ZlVjd2UxaFpnQmNSZmdka2JNZHpiWWh4ZURjZ2dJZlBmR2V6aE1hNWhEYVRlWWc4Z0tiQmhFZVllVmNsYWdidWVTZGdkTWF1YlZhMWZJZHBmQmVqYVZhU2ZBY1NibGFUaENiUmJZYkdoVmZpYmNoMGFGZzFkTWVyZ05mQmVBaHhmRmNnZ3hmWGZMYXlmQmNRZFdhU2ZCZFZmSWhDZWNnbmJNZVJnTWF1YUhoQWFaYmJoWGFCZk1iVGRNY2lhb2Q4Y0ljZ2dzZnJnRGNVZzRnVWVVZVNmSWNOZE1kRGZjZFVnQWgxYU1jNWNNYUZmTWZOZVdlUWJVZVlkSmJEZU1nMmRNZVFiNGJDYkRkeGZzZXpmT2RRZDBkMmhQZUNmZ2JSZkdlRmVaaFloTGNrZ29hRGFMZmxlZGFTZUtmUWdZZzFmVWRnY0VjcGJVZHdja2FXZEJmbGRZY25iTmdCZ2RiVGhLYXpoUWhRZE1nUmJZZE1iVmV5ZjhmZ2NVZEZia2ZnYlZkU2VBZm5mSmh6YkViVGRMZWhld2hHY1dkMWR3YVRkRWJ6ZUlncWVQY0NnSWhMYkthd2ExZk9hRmZGZEVkaWFEZlRhQWQzYkZmQWdOYlRmT2JUY0JlVGFEZFZha2FGaEdkQ2hRY3pjTmhqZkVnT2RBYmdiOGFiYk1iemdrZ05lTmFqYndjb2JFYVJmaGNXZ1doQ2g1ZUtmQWV5YzVjWGZVZGlha2NHZU5lVmhJaEJlS2FWYU1hSmhGY2dkWmhXYUpnemRRaFhhVWZ5Y3NkMGZFaERlRWdXZERiRmFjZHZhSWVGZUJiWmRJYUZmVWdnZEpneWhjaHhjRWR5YzRlY2FCZ2xldGVjZEVheGFNZXlkS2ZqZndkaWhDZXljc2ROaFRkaGFSYlJlSWVnZTBjd2ZOZnhoUWhEZVVhemJrZXdoVWZ3YTFlWmNCY1JmZ2hrY01hemdZYnhhRGJnY0lmUGdHZnpmTWY1ZERkVGZZZDhlS2RCY0VnWWZWZ2xmZ2R1ZFNiZ2VNZXVhVmExY0llcGVCYWpjVmVTZEFkU2ZsZFRhQ2RSZVljR2hWYmlmY2MwZ0ZkMWJNZXJhTmFCaEFneGdGZWdheGRYZ0xkeWJCaFFjV2ZTZkJkVmdJZENnY2FuY01mUmZNYnVoSGJBYVphYmJYZEJoTWRUaE1kaWRvZThlSWJnY3NncmZEZVVkNGhVY1VoU2VJZE5kTWREYWNjVWJBZTFhTWI1ZE1lRmJNYk5iV2dRZVVoWWNKY0RlTWcyZk1kUWc0ZUNiRGF4Y3NkemJPZ1FhMGQyZlBiQ2NnY1JjR2JGYlpnWWJMZmthb2NEZExmbGNkYVNoS2RRYlloMWZVYWdkRWRwYVVid2JrZldlQmVsY1ljbmFOZUJmZGZUaEtjemFRYlFhTWJSZ1loTWJWZHloOGhnYVVnRmJrZ2dlVmJTY0FkbmZKZnpjRWJUZUxhaGh3ZkdmV2YxYndkVGNFZXpjSWZxaFBjQ2NJZ0xnS2d3YzFmT2FGZUZlRWRpZERhVGdBZzNkRmhBZE5lVGdPZlRkQmdUZkRhVmFrZkZmR2NDaFFmemNOY2pnRWVPYUFnZ2U4YWJjTWN6aGtiTmJOYWpjd2JvaEVoUmhoY1dnV2JDZjVlS2JBY3llNWhYaFVnaWNraEdiTmhWYkllQmhLY1ZlTWRKZEZmZ2ZaZFdjSmh6YVFlWGZVY3loc2gwZkVjRGdFaFdlRGZGZGNjdmhJZEZmQmFaZ0lkRmRVYmdlSmV5aGNoeGRFYnloNGdjYUJnbGV0Z2NoRWd4Y01oeWNLY2pid2FpZUNjeWhzYU5iVGhoY1JiUmhJaGdhMGV3aE5keGJRZERoVWV6Ymtod2RVZ3dhMWRaYUJnUmZnZ2tiTWd6ZllheGNEYWdkSWNQaEdkemVNYTVmRGRUZ1llOGRLYkJlRWFZZ1ZobGZnY3VoU2RnaE1hdWFWaDFmSWhwY0JlamdWZFNmQWRTZGxiVGJDZlJhWWJHZFZiaWNjaDBiRmgxaE1ocmFOZEJlQWd4ZkZjZ2F4ZlhjTGZ5Y0JoUWhXZFNhQmJWY0loQ2FjaG5kTWFSaE1ndWVIaEFiWmJiZFhnQmdNYVRnTWdpZ29oOGFJZGdic2NyaERoVWE0Y1ViVWFTZUllTmJNZkRoY2ZVZEFoMWVNZzViTWJGY01oTmJXZ1FnVWFZZUpiRGNNZDJoTWNRYjRoQ2JEaHhnc2N6Zk9lUWUwYjJlUGRDYWdkUmZHZUZlWmhZYUxka2FvYURjTGdsZ2RiU2dLZ1FoWWgxY1VmZ2dFZnBkVWN3aGtjV2VCZGxlWWZuYU5jQmNkZ1RiS2N6ZFFkUWNNZlJiWWJNaFZkeWc4ZWdoVWJGZ2thZ2RWZ1NmQWhuZkpnemRFaFRnTGdoZndhR2ZXaDFid2RUZkViemhJZHFiUGRDZkliTGRLYndkMWNPZUZlRmNFZ2llRGJUYkFhM2VGaEFjTmJUYU9kVGhCY1RhRGJWZmtnRmZHaENnUWV6Y05hamJFZE9mQWJnZjhmYmNNZXpka2NOZU5hamJ3Zm9jRWdSZmhmV2dXZ0NkNWJLaEFkeWI1YlhlVWdpY2toR2VOZ1ZhSWdCYUtkVmhNZEpiRmFnYlpjV2ZKZXpmUWdYZ1VjeWFzaDBnRWJEYkVoV2ZEY0ZjY2Z2ZkliRmhCZVpmSWFGZVVkZ2NKZXlhY2F4YUVheWc0YmNmQmZsYXRlY2NFZHhkTWZ5YUtjamR3ZGliQ2N5Y3NmTmZUZ2hnUmRSZkliZ2YwZndmTmh4ZlFmRGNVZXpha2N3YVVid2ExZVpiQmhSYmdoa2JNZnpnWWJ4ZkRjZ2dJaFBnR2F6ZU1iNWREYlRnWWE4ZktkQmZFZFlhVmFsZWdndWZTYWdnTWh1ZFZhMWRJYXBiQmFqaFZjU2hBZ1NibGhUYkNkUmhZZUdjVmJpZGNoMGZGZDFiTWdyY05kQmVBY3hkRmVnZ3hiWGhMZ3loQmJRYldlU2JCZVZkSWdDZmNlbmJNZlJjTWF1YkhlQWhaYmJjWGNCaE1oVGhNZGljb2c4Z0liZ2VzZ3JiRGNVZzRmVWdVYlNlSWJOZU1lRGZjZ1VjQWMxZU1hNWdNYkZkTWJOaFdlUWVVZFllSmJEYU1kMmFNY1FmNGFDYURkeGFzaHplT2VRYzBlMmdQZkNlZ2NSZ0dkRmdaZlljTGRrZm9lRGhMaGxlZGFTZkthUWZZZzFnVWhnZEVkcGJVYndka2ZXYUJjbGdZZ25iTmFCZGRkVGVLZXpoUWRRY01oUmFZZ01mVmZ5ZjhiZ2NVZkZja2FnZlZkU2RBZG5nSmJ6ZUViVGRMZWhjd2FHZVdjMWR3Y1RiRWJ6Y0lmcWZQZkNoSWNMaEthd2ExYU9mRmZGZUViaWREZFRiQWUzZkZhQWZOYVRmT2JUaEJhVGNEZFZoa2hGZ0dhQ2dRZ3piTmNqaEVlT2FBYmdjOGNiZE1hemdrYk5kTmdqZHdnb2hFY1JiaGFXZVdjQ2M1aEtkQWR5aDVjWGdVZGlla2hHZE5nVmZJZ0JoS2FWYk1jSmFGaGdiWmVXY0pmemVRZlhmVWN5YXNmMGdFZURiRWZXaERoRmNjZ3ZhSWVGZ0JjWmNJZUZnVWFnY0pmeWFjaHhoRWN5YjRmY2RCYWxmdGZjY0VkeGVNY3lmS2JqZ3doaWFDY3loc2hOZVRlaGVSZ1JlSWFnZjBnd2FOYXhkUWFEY1VhemNrZHdhVWF3ZjFjWmdCaFJiZ2hrYU1nemFZZHhiRGRnZEloUGFHZHplTWg1Y0RmVGdZYzhiS2NCYUVmWWVWYWxhZ2V1ZlNoZ2FNZHVnVmUxZUlmcGNCZWpnVmFTaEFiU2dsZlRhQ2dSY1ljR2ZWYWlmY2UwZUZlMWZNZ3JiTmdCZkFoeGNGZ2doeGJYYkxleWJCYlFlV2VTZkJiVmhJZkNiY2VuZk1oUmNNYXVkSGZBZlplYmZYZ0JoTWJUZE1kaWFvYzhmSWVnYnNhcmZEZlVmNGRVZVVoU2dJZk5nTWREYWNjVWZBaDFhTWg1Z01lRmFNaE5nV2JRYVVlWWZKaERmTWQyZE1kUWU0YUNlRGR4ZHNmemNPYVFmMGUyaFBhQ2hnYlJiR2VGZVpiWWVMaGtib2VEYUxobGZkZFNmS2hRZllhMWJVZGdkRWNwY1Vod2drYVdhQmJsZVlmbmNOZkJoZGVUZktkemhRaFFiTWVSYVljTWVWZnlkOGNnZVVnRmdrZ2doVmdTYkFkbmFKZ3poRWhUYkxiaGJ3Y0doV2gxZndhVGRFZHpmSWRxY1BnQ2hJZUxnS2J3ZzFlT2NGZkZjRWVpZERkVGdBZjNmRmdBZ05jVGNPYlRoQmhUaERkVmdrZkZoR2FDY1FhemROZGplRWdPYUFoZ2Y4Y2JjTWV6ZWtkTmhOY2pid2ZvYUVjUmRoZFdkV2RDZjViS2VBY3loNWVYZ1VmaWZrZ0dkTmJWZElhQmJLYlZmTWJKZUZkZ2FaaFdkSmF6ZlFiWGhVZ3lkc2gwZEVkRGRFZldmRGZGZWNndmRJYUZhQmVaZ0lnRmhVYmdjSmJ5YmNheGdFZXliNGhjYUJhbGR0ZWNmRWh4Yk1leWRLZmpod2RpYkNheWJzZE5nVGZoYlJhUmhJY2diMGV3Zk5ieGZRaERhVWZ6ZGthd2FVYXdmMWRaYkJhUmJnY2tkTWJ6ZVlleGdEZGdoSWVQZkdjemJNZDVnRGFUYllmOGRLZ0JoRWJZYVZibGRnYnViU2JnYU1kdWJWZDFnSWdwZUJhamNWZVNnQWJTaGxiVGRDZVJjWWNHZFZhaWZjZzBjRmIxYk1hcmJOaEJmQWF4ZkZoZ2J4ZVhlTGJ5Z0JmUWJXaFNnQmVWZklhQ2RjZW5jTWRSYU1mdWVIZEFjWmdiY1hhQmZNZVRnTWRpYm9iOGNJYmdlc2VyZERoVWU0YlVkVWNTZ0lnTmhNY0RkY2dVZkFkMWhNZDVkTWRGY01mTmJXaFFiVWRZaEpoRGdNYzJhTWJRYzRhQ2REYXhhc2d6YU9jUWEwYjJkUGFDaGdmUmNHYUZoWmdZY0xka2ZvaERmTGRsZmRkU2hLaFFoWWYxZ1VhZ2JFZXBhVWJ3YmtlV2VCZ2xoWWFuYU5oQmRkZFRmS2Z6Y1FlUWVNYVJnWWVNYVZmeWE4YWdmVWJGZmtkZ2dWYVNoQWZuZkpoemNFZFRnTGdoZndoR2RXZDFhd2dUY0VjemNJY3FnUGFDYkllTGJLZndkMWZPYUZlRmdFZ2ljRGdUYUFnM2VGZEFiTmdUaE9nVGRCZFRoRGFWZGtmRmRHYkNiUWV6Zk5hamRFYk9oQWZnZThmYmNNaHpma2FOZ05kamZ3ZW9kRWhSZWhnV2FXZENiNWVLaEFleWE1YVhiVWZpZGtnR2VOZFZlSWZCZUthVmFNZ0plRmdnaFpkV2JKZ3plUWhYZFVneWVzaDBlRWhEaEVjV2REZUZjY2N2YklhRmZCY1poSWdGY1VhZ2VKZnllY2V4YkVneWY0YmNmQmhsYXRkY2VFaHhmTWF5Z0toamZ3ZWlmQ2J5aHNiTmdUZmhnUmRSZklnZ2MwYXdmTmJ4YlFhRGZVYXpja2h3YVVld2QxZlpmQmJSaGdna2hNaHpiWWd4ZURhZ2FJYVBmR2N6Y01oNWJEaFRmWWU4Z0tlQmhFZ1lkVmdsaGdndWNTZGdoTWJ1aFZoMWZJZ3BnQmNqZlZjU2VBZFNlbGNUY0NmUmZZYUdoVmZpZ2NoMGVGYTFkTWFyZ05nQmhBZ3hiRmdnZHhlWGFMYnllQmVRZ1dnU2RCaFZiSWdDZ2NnbmNNZ1JnTWJ1YUhjQWdaYmJoWGRCZk1oVGNNYmlob2M4ZUlhZ2RzYnJjRGVVYzRoVWZVZ1NnSWhOYU1iRGdjYVViQWIxYk1iNWNNY0ZmTWhOZldiUWVVZ1liSmFEZU1oMmVNZ1FoNGNDZ0RheGRzYnpkT2FRYjBoMmVQYUNmZ2JSZ0diRmZaaFlnTGJrZ29iRGFMZ2xhZGJTZ0tiUWhZYTFhVWFnZkVhcGVVZ3doa2FXZUJkbGVZZ25iTmFCZmRoVGZLYnphUWdRYk1hUmNZZk1nVmF5YzhhZ2ZVaEZia2JnaFZoU2JBZm5kSmJ6ZUVnVGRMZ2hnd2VHaFdnMWZ3ZVRjRWZ6YUlkcWRQZ0NhSWhMY0tkd2QxZE9lRmhGYUViaWZEYVRhQWMzZ0ZmQWVOYVRiT2RUY0JlVGhEZVZna2NGZ0djQ2NRZ3pnTmZqZkViT2VBY2doOGNiYk1lemNrZk5oTmdqZXdnb2hFZlJoaGhXYldjQ2M1Y0tnQWh5ZDVhWGZVYWlma2FHY05mVmVJYkJoS2FWYk1jSmVGaGdjWmJXZUpjemhRZlhjVWZ5YXNiMGNFaERjRWNXZkRoRmNjaHZoSWdGY0JjWmdJYkZlVWRnaEpieWZjYXhiRWV5ZTRoY2ZCZGxndGhjYkVjeGRNaHllS2dqZ3djaWhDY3lmc2ROZ1RnaGJSZlJoSWZnYTBjd2NOZHhnUWFEZVVoemZrZ3dnVWN3aDFhWmNCY1JhZ2RrYU1hemhZZ3hmRGRnaElmUGJHYXpkTWg1ZURkVGNZYThhS2dCY0VnWWVWY2xlZ2h1ZVNoZ2VNZXVlVmgxZklkcGJCYmpiVmJTZUFkU2JsZFRnQ2ZSZllkR2RWZ2liY2YwZ0ZiMWZNZHJlTmFCYkFleGRGYmdmeGhYY0xkeWdCZ1FkV2ZTZkJkVmNJY0NlY2VuYk1oUmZNZnVoSGVBZFplYmRYZkJoTWVUZE1naWZvZThkSWVnZnNjcmNEY1VlNGVVaFVkU2NJZU5lTWdEZmNjVWNBYTFlTWE1Y01mRmRNZ05jV2VRYVVoWWFKZkRoTWUyZE1jUWg0Y0NhRGZ4ZHNiemNPZ1FjMGQyZ1BiQ2dnZ1JhR2RGY1piWWJMZ2tlb2REZExibGVkYVNlS2FRZFlkMWdVaGdlRWZwZVVkd2NrY1dmQmhsZVlnbmZOZkJkZGVUY0toemRRZFFhTWVSZ1ljTWRWZHliOGhnZ1VoRmNrY2doVmNTYUFjbmFKYXpoRWJUZkxlaGh3aEdlV2MxZndlVGNFY3pkSWhxY1BoQ2JJYUxlS2d3YzFmT2VGZUZkRWhpaERkVGJBZjNkRmhBZ05nVGFPY1RoQmZUaERiVmVraEZmR2VDZlFkemZOaGpiRWZPaEFkZ2E4YmJkTWh6YWtnTmVOZGphd2ZvZEVkUmJoZVdkV2JDZjVoS2FBYnlkNWFYYVVoaWNrZ0dmTmdWZUllQmVLY1ZkTWJKZkZoZ2ZaZFdiSmh6ZlFlWGFVZXloc2IwZEViRGVFZVdkRGhGYmNndmJJaEZkQmZaYkllRmVVY2dmSmh5YmNieGdFZ3ljNGRjZkJobGh0Y2NhRWZ4Yk1leWFLaGpod2VpZENleWZzZ05jVGdoZ1JjUmJJYWdjMGV3Y05keGhRZERiVWh6YWtld2VVaHdkMWJaYkJoUmFnYWtiTWR6YVlneGdEY2dkSWZQY0dhemZNaDVjRGVUYllnOGhLZ0JhRWFZYVZlbGNnZnVkU2RnZU1odWdWYjFjSWRwZEJjamZWZFNoQWZTZ2xoVGdDYVJkWWdHaFZhaWRjZTBoRmExZE1kcmNOaEJjQWV4Z0ZoZ2Z4Z1hhTGZ5ZUJjUWJXY1NhQmVWaElmQ2FjYm5jTWJSYk1odWNIZUFoWmZiZVhmQmFNZVRiTWdpYm9hOGJJYWdmc2dyZURlVWM0YlViVWhTZUloTmdNYURiY2hVY0FjMWVNYjViTWhGZE1hTmNXYVFnVWRZZkpnRGhNZzJhTWJRZTRoQ2VEY3hic2h6Y09nUWEwaDJiUGNDZWdjUmhHZ0ZoWmJZZ0xha2dvZERlTGNsZGRhU2VLaFFmWWcxZlVkZ2RFaHBkVWJ3ZGtiV2RCZGxlWWRuYU5mQmZkYVRmS2N6Y1FnUWJNYlJjWWZNY1ZjeWQ4YWdmVWVGZGtiZ2ZWZ1NkQWJuY0poemZFaFRiTGJoaHdnR2VXYTFhd2dUZEVnemNJZnFmUGRDZUlmTGdLZXdhMWhPYUZmRmVFY2lhRGhUZkFnM2hGaEFkTmVUZ09nVGJCaFRiRGRWYmtjRmNHZENjUWZ6Y05lamRFY09iQWFnYzhoYmRNYnpia2ROZk5kamV3ZW9lRWhSYmhnV2dXY0NkNWVLYUFkeWM1Z1hhVWNpZmtiR2FOZVZhSWdCYktnVmNNaEpoRmdnZlpjV2FKYnphUWJYYVVheWFzYTBmRWdEZEVmV2dEYkZlY2R2aElkRmVCYlpmSWdGaFVhZ2VKYnlmY2J4YkVkeWg0ZGNnQmJsY3RhY2ZFaHhkTWJ5YUtlamN3YmljQ2d5ZnNmTmVUaGhhUmFSaEliZ2IwZ3djTmN4Z1FkRGRVZ3pna2J3ZlVnd2QxaFphQmVSYmdka2NNZHplWWF4ZURmZ2JJZlBnR2Z6Zk1iNWFEY1RiWWY4ZUthQmRFZ1loVmRsYmdndWhTaGdlTWd1ZVZjMWhJZ3BiQmdqYlZjU2FBYlNibGdUYUNhUmJZYUdhVmhpZmNjMGZGaDFiTWFyYk5oQmhBYXhiRmdnZXhjWGNMZHljQmRRYldhU2NCZlZjSWFDZGNjbmhNZ1JhTWZ1YkhmQWdaZGJoWGhCZU1lVGVNYmljb2Y4ZklhZ2VzYXJkRGJVaDRoVWhVZVNkSWROZE1iRGJjYlVnQWIxZU1kNWFNY0ZnTWJOZVdkUWdVaFlhSmNEYk1nMmFNZFFlNGRDaERkeGNzYnpkT2RRZTBhMmdQaENhZ2JSZkdkRmhaZ1ljTGhrYm9kRGdMZmxjZGNTaEtmUWdZZDFnVWZnY0VocGNVaHdja2JXZkJkbGFZY25lTmNCZmRiVGRLZ3pjUWZRaE1lUmZZZU1oVmV5YThnZ2ZVZ0Zja2JnYlZhU2hBYm5hSmJ6YkVhVGNMYWhhd2hHZldiMWJ3aFRjRWR6ZUllcWVQZUNjSWdMZktmd2gxYU9hRmNGZUVlaWVEZFRkQWQzYkZoQWVOZ1RjT2FUZ0JiVGJEY1Zka2hGZkdjQ2hRZHplTmJqYUVhT2RBZGdkOGdiYk1hemhraE5oTmZqYXdmb2NFZlJmaGFXYldkQ2I1aEtoQWd5YjVoWGRVZGlia2VHY05lVmRJaEJnS2VWYU1oSmJGaGdnWmhXaEpnemFRYVhmVWF5aHNoMGNFY0RjRWZXaERoRmRjaHZkSWRGZkJiWmNJaEZlVWJnYkpmeWJjaHhiRWN5ZzRlY2FCZmxhdGJjYUVoeGRNZnlhS2FqZndmaWdDZnlhc2ZOY1RlaGZSaFJnSWZnZDBld2NOZHhkUWVEZlViemVrYndnVWV3YzFjWmNCZVJoZ2drYk1memRZY3hmRGRnZElkUGZHZnpmTWE1ZERkVGVZZDhmS2RCZkVnWWVWYWxkZ2F1aFNnZ2RNZnVjVmExZklhcGRCZ2pkVmhTZ0FhU2hsZVRjQ2NSZ1liR2ZWaGlmY2EwZkZiMWJNZnJiTmZCYkFoeGZGZGdjeGNYaExoeWRCaFFnV2NTYUJkVmNJYkNmY2huZU1kUmdNaHVmSGRBZVpiYmJYYUJjTWZUYk1laWJvYjhjSWdnY3NmcmhEZVVkNGNVaFVjU2JJZk5oTWFEYWNmVWhBYTFoTWQ1ZE1kRmdNZE5jV2JRaFVoWWRKZ0RjTWQyZ01nUWQ0ZkNiRGF4Z3NmemFPYlFiMGUyZlBnQ2NnZlJlR2hGZFpjWWRMYmtib2JEZ0xibGFkYlNiS2VRZ1lhMWFVYWdkRWVwaFVmd2ZrZldhQmFsY1ljbmNOZUJjZGdUZ0tiemZRZlFmTWZSY1lkTWNWYnlkOGNnYlViRmNrY2djVmNTaEFkbmVKZXphRWhUZ0xmaGh3ZkdjV2QxZXdoVGdFYnpnSWhxY1BnQ2NJZUxiS2V3YjFoT2FGZEZiRWFpZkRiVGRBYTNjRmRBZU5lVGhPaFRhQmdUYURnVmRrZ0ZhR2NDaFFkemhOZGpkRWRPYUFoZ2U4aGJnTWN6aGtkTmROYmpid2FvaEVoUmZoZFdhV2hDYTViS2VBZHlmNWdYYlVmaWJrYkdhTmZWY0llQmZLZFZmTWVKZUZhZ2ZaYldiSmh6ZVFkWGhVYXlmc2gwZ0VhRGZFZ1dnRGVGZ2NkdmFJZEZoQmRaZklhRmhVZmdlSmV5ZmNkeGJFYnljNGJjZUJlbGF0ZGNlRWZ4Z01keWhLZWpmd2NpYkNieWdzZk5kVGJoZlJoUmVJY2djMGJ3Yk5neGZRZ0RnVWh6ZWtkd2ZVZXdlMWRaY0JjUmdnZ2tnTWh6aFloeGhEYmdnSWZQYUdlemVNZTVnRGNUZVlnOGdLZkJhRWZZZlZibGFnYXVjU2RnZU1jdWdWYzFlSWRwY0JjamZWZ1NoQWRTYWxlVGNDZVJnWWJHZ1ZjaWFjaDBhRmUxZE1ncmFOYkJlQWJ4aEZlZ2h4Z1hlTGJ5Z0JhUWhXZVNlQmJWZUloQ2JjaG5kTWZSZU1ldWVIZUFmWmJiZFhnQmZNZFRnTWJpY29jOGhJYWdoc2hyZkRmVWI0Y1ViVWdTZUlhTmVNZERlY2hVYkFhMWJNZzVhTWRGZk1jTmdXZFFnVWNZZ0pmRGNNZjJnTWVRZjRjQ2FEZ3hjc2Z6aE9kUWIwZzJhUGNDZWdjUmRHZ0ZoWmdZYUxha2RvYURnTGZsaGRnU2VLZFFhWWIxYVVnZ2hFY3BhVWZ3Y2tiV2VCZ2xoWWRuYU5hQmNkZ1RkS2h6Y1FnUWRNaFJkWWZNYlZoeWY4ZGdlVWdGaGthZ2FWZFNiQWhuZ0pnemFFZ1RmTGJoY3doR2NXYzFnd2JUZ0VlemJJaHFhUGhDZUlnTGFLY3doMWNPZkZkRmFFZmliRGFUZEFoM2JGY0FkTmVUYk9iVGRCY1RmRGRWY2thRmNHZENnUWF6Zk5iamFFZE9nQWFnZjhlYmdNY3pla2NOZU5lamN3YW9nRWdSZ2hnV2ZXaENhNWFLaEFjeWc1YlhnVWNpYWtnR2NOaFZkSWdCZ0tjVmVNYUpjRmFnZ1pnV2RKZHpiUWJYY1VkeWdzaDBmRWhEYkVkV2NEYUZlY2R2ZkloRmZCYlpnSWhGYlVjZ2FKZXliY2d4Z0VjeWg0ZGNjQmVsY3RiY2ZFYnhiTWZ5YktiamV3Z2llQ2V5YnNlTmVUZGhiUmFSYklkZ2cwZ3dhTmV4YlFlRGVVZnpka2d3ZFVod2ExYlpnQmhSZWdka2JNZnpoWWJ4Y0RkZ2NJZlBhR2R6Zk1hNWJEZ1RoWWg4Z0thQmZFYllnVmZsY2dodWdTZ2dlTWV1Z1ZhMWJJaHBmQmJqaFZkU2dBY1NibGZUZUNjUmhZaEdnVmRpYmNnMGNGYjFnTWVyZE5lQmNBZ3hhRmhnY3hnWGdMZXlnQmJRZVdiU2NCaFZhSWNDZWNjbmFNZVJmTWh1ZkhiQWZaZ2JiWGZCYU1kVGdNZGlkb2E4aElkZ2FzY3JlRGJVaDRkVWNVZVNjSWhOZU1lRGFjYlVmQWQxZk1nNWRNZEZiTWJOY1dnUWZVZlllSmNEaE1jMmZNYVFmNGNDYURjeGFzZnplT2RRZDBhMmZQZUNiZ2JSYUdiRmRaY1lmTGhrZW9jRGdMYWxnZGNTaEtiUWJZYzFkVWRnZEVicGdVaHdma2RXYUJhbGdZaG5nTmJCZ2RmVGhLYXpjUWFRYU1iUmRZZU1lVmF5YjhnZ2RVaEZna2ZnZVZoU2FBZ25iSmN6Y0ViVGhMYWhmd2ZHY1dlMWZ3Z1RiRWN6Y0lncWdQY0NjSWdMY0tod2UxZ09hRmRGZ0VkaWNEZFRhQWIzYkZmQWNOY1RjT2hUYkJlVGNEaFZoa2VGZUdkQ2ZRZHpjTmFqZUVlT2dBYmdiOGNiZE1oemVrYk5nTmJqZndhb2NFYVJiaGhXZ1diQ2E1ZktiQWR5ZzViWGVVZGlka2VHZU5nVmNJZUJnS2dWaE1mSmVGaGdiWmFXZ0piemFRZlhhVWF5aHNkMGZFYkRkRWhXaERnRmFjYXZkSWhGYkJoWmVJY0ZhVWJnYUpmeWdjY3hnRWd5ZDRlY2ZCaGxodGNjZUVieGhNYnllS2dqZXdhaWdDaHljc2FOaFRlaGhSZFJlSWFnZzBod2hOaHhmUWdEZFViemdrZndlVWV3YjFhWmNCYVJnZ2ZrY01jemNZYXhlRGVnYUlnUGZHaHpnTWM1Z0RjVGhZaDhhS2hCZEVjWWRWZmxiZ2Z1ZFNiZ2dNYnViVmUxY0lncGFCY2poVmhTZ0FjU2dsYVRlQ2NSaFlnR2JWY2lkY2QwZUZiMWRNZXJiTmdCYUFheGRGYmdheGJYY0xoeWhCZlFoV2JTZkJhVmhJZkNlY2VuYU1iUmFNYXViSGdBYlpiYmNYZEJnTWJUZ01kaWNvZzhlSWZnaHNhcmZEY1VhNGdVZ1VkU2dJZU5kTWdEaGNoVWZBZDFmTWY1ZU1iRmRNY05lV2RRZFVkWWJKYURhTWIyZU1iUWc0YkNiRGF4ZnNmemVPYVFjMGEyZlBjQ2FnYVJkR2hGY1plWWNMZmtmb2REYkxnbGhkZ1NjS2NRZ1llMWJVZmdjRWFwY1Vmd2drYldlQmFsZVlibmFOZkJoZGdUY0tmemFRY1FmTWdSaFlmTWNWZHlnOGRnYVVhRmhrZmdhVmFTZUFobmNKZXpkRWRUZExnaGJ3Z0djV2gxZ3dkVGRFY3phSWZxYlBlQ2ZJZExnS2h3ZTFnT2dGYkZjRWNpZkRjVGZBZDNlRmNBYU5oVGVPYlRkQmVUYURkVmRrZEZiR2RDZVFhemNOZGpjRWRPZkFlZ2M4ZGJnTWJ6ZWtkTmdOZWpkd2NvZEVlUmhoYVdkV2dDZDVkS2dBaHliNWRYZlVoaWJrZUdiTmhWYkllQmVLZFZlTWJKaEZoZ2ZaYVdnSmZ6ZlFkWGNVYnlic2MwZUVnRGNFYldjRGFGYmNmdmVJZkZkQmJaZEloRmZVaGdnSmR5aGNieGdFZ3loNGJjZ0JmbGR0YWNkRWd4Z01jeWRLYWpod2JpZ0NmeWFzYU5mVGFoaFJiUmJJZ2dmMGR3YU5meGhRZ0RjVWV6ZGtld2RVYXdlMWNaYkJlUmZnZ2toTWN6YVlheGREZ2dhSWRQY0dkemZNYzVnRGNUZ1loOGdLaEJoRWdZZ1ZnbGhnYXVhU2NnZk1odWZWZDFiSWJwY0JiamNWYlNkQWJTZGxkVGhDaFJhWWNHZFZmaWhjaDBjRmUxZ01icmZOaEJhQWR4Y0ZiZ2h4ZVhiTGZ5aEJlUWRXZVNnQmVWYklnQ2JjY25iTWZSZU1idWJIYUFnWmZiZVhoQmhNZVRiTWJpZm9jOGJJYmdlc2hyYURoVWU0aFVlVWJTZUloTmJNZkRjY2dVaEFkMWFNYjVnTWhGYk1lTmJXZlFhVWFZZUphRGZNYjJhTWRRZTRiQ2JEYXhkc2R6YU9oUWgwaDJiUGNDZGdoUmFHaEZlWmhZYkxha2hvZkRkTGhsZWRmU2FLY1FoWWgxYlVnZ2NFZXBkVWh3ZWtlV2hCYWxoWWduY05iQmNkaFRkS2R6ZlFmUWJNYlJiWWdNZFZjeWY4ZWdhVWRGY2tlZ2hWY1NoQWVuY0pmemhFYlRjTGZoaHdhR2dXYzFjd2NUZ0VkemdJYnFhUGFDZ0liTGhLZXdhMWZPYkZmRmJFYmljRGdUZEFlM2ZGYkFiTmhUYU9jVGhCZ1RnRGhWY2tiRmVHaENjUWV6Y05mamFFZU9nQWRnZDhhYmFNYnpka2NOZE5kamV3Y29jRWNSYmhnV2ZXZ0NlNWJLZkFmeWY1Y1hjVWhpYmtnR2FOY1ZkSWZCYUtjVmVNZUpoRmVnZFpjV2VKZHpkUWRYZVVneWhzZzBlRWVEY0VnV2REYUZnY2N2ZUloRmRCZ1plSWdGZFVhZ2JKYXlnY2N4Y0VleWc0ZWNmQmJsZHRlY2hFaHhoTWN5Z0tlamJ3Y2ljQ2F5aHNiTmVUaGhkUmhSZ0llZ2cwY3dhTmN4ZlFjRGZVZnpoa2F3ZlVnd2IxZVpkQmNSYmdla2ZNZnpiWWR4ZkRnZ2ZJYVBhR2R6ZU1iNWhEYlRjWWg4Y0tlQmdFaFlhVmFsZWdkdWVTYWdiTWJ1Y1ZiMWZJY3BkQmFqYVZmU2dBYlNobGNUaENmUmNZZkdhVmNpY2NoMGVGZDFlTWRyY05iQmhBYXhoRmFnYnhkWGVMYnljQmhRYVdhU2dCZVZiSWhDYWNibmJNZVJnTWV1Z0hjQWRaYWJlWGhCY01iVGVNY2lnb2g4ZEllZ2NzZXJhRGFVYTRhVWdVYVNiSWFOZ01jRGZjY1VhQWUxY01kNWNNaEZmTWVOaFdmUWZVY1loSmZEZk1oMmZNYlFmNGNDY0RleGJzZXpiT2JRYzBmMmdQZUNmZ2VSZ0dkRmVaYVlkTGhrZm9iRGNMZ2xhZGhTaEtjUWZZaDFhVWFnZUVncGRVZHdka2JXZUJobGVZZW5lTmVCYWRlVGFLZHphUWFRZ01mUmFZaE1lVmN5ZThkZ2VVZ0Zja2VnZlZhU2ZBZW5mSmZ6Y0VlVGNMYWhmd2RHZldlMWR3ZlRoRWJ6ZEllcWVQYUNnSWdMZEthd2gxYk9jRmhGaEVnaWZEZ1RlQWMzYUZnQWhOZ1RlT2FUaEJoVGVEaFZoa2VGZkdiQ2RRY3pmTmhqaEVhT2VBaGdjOGhiYk1hemVrZU5nTmFqY3dkb2VFZ1JmaGJXZFdjQ2Y1YkthQWd5ZzVlWGRVZmlma2hHZU5iVmJJZkJjS2VWZk1mSmNGYWdjWmZXZUpmemZRZlhoVWR5ZnNlMGZFY0RiRWhXY0RoRmNjZ3ZkSWVGZEJhWmNJYUZiVWNnZEpheWFjYnhkRWR5YzRlY2JCZWxodGFjYUVleGhNZHlhS2FqZndhaWdDY3ljc2hOZ1RkaGVSZ1JhSWRnYjBhd2FOYXhiUWZEZVVjemZrYXdiVWh3ZzFnWmRCZlJiZ2ZrYk1lemNZZXhhRGNnaEljUGNHZHpoTWE1YkRmVGJZZThnS2RCZkVkWWhWY2xmZ2h1ZVNmZ2VNY3VoVmQxYUlicGJCYWplVmZTZ0FkU2ZsZFRiQ2JSZlljR2dWaGllY2UwZUZjMWFNZ3JjTmdCY0FheGRGZGdoeGdYYUxieWdCZlFhV2NTYUJlVmZJY0NiY2duYk1iUmhNYXVoSGNBZlplYmZYYUJmTWVUYk1iaWJvYjhlSWZnZ3NhcmFEY1ViNGNVZFVlU2FJaE5jTWFEZWNoVWdBZDFhTWY1Yk1mRmNNY05hV2NRYlVjWWhKYURjTWIyaE1jUWE0Y0NoRGR4YnNlemdPZ1FjMGYyZVBkQ2NnZVJkR2FGZ1phWWdMYWthb2VEYkxobGNkYVNoS2FRZVlhMWdVYmdlRWVwZ1Vmd2ZrZFdjQmZsZVlobmdOZEJiZGhUYUtlemJRYlFoTWFSaFlmTWVWZXlmOGdnYVVhRmNraGdnVmNTaEFjbmFKZXpnRWhUZkxlaGN3aEdjV2QxZHdmVGNFZXplSWhxYlBnQ2dJaExnS2J3aDFjT2FGZEZnRWNpZERhVGRBYjNjRmhBYU5iVGhPaFRoQmVUaERiVmNrY0ZiR2JDaFFkemFOY2pkRWZPYUFiZ2I4aGJkTWV6ZmtlTmVOZGpld2FvZUVnUmJoZVdhV2FDYzVnS2JBYnlnNWdYZlVmaWNraEdmTmRWZEloQmNLZVZhTWVKZEZlZ2VaaFdiSmZ6ZlFmWGFVaHlmc2YwZUVhRGdFYVdiRGZGZWNldmFJY0ZlQmdaZUlkRmhVY2dhSmV5Y2NieGJFYXlmNGFjaEJmbGV0ZGNnRWV4Yk1meWRLY2pld2JpaENoeWJzZU5kVGFoaFJoUmJJZGdoMGJ3YU5leGVRYkRoVWN6ZWtnd2ZVYXdkMWRaZEJjUmFnaGtjTWJ6aFlneGZEZmdnSWhQaEdnemNNYjViRGFUZVljOGVLZEJkRWJZYlZkbGJnZXViU2hnZE1kdWNWYTFiSWNwZEJkamdWZFNnQWVTZ2xjVGVDZFJhWWJHaFZmaWRjZTBhRmQxYk1lcmROZEJhQWJ4ZUZiZ2N4Z1hiTGZ5ZkJlUWFXYlNnQmNWaElhQ2ZjZm5nTWZSZ01idWRIZEFoWmNiZ1hnQmNNZVRjTWJpYm9nOGZJaGdmc2dyZERoVWg0Y1VoVWVTZklkTmZNYURhY2dVY0FjMWJNYjVoTWNGY01kTmhXZFFjVWFZYkpiRGFNZDJhTWJRYTRmQ2FEZnhic2F6Y09nUWgwYTJoUGRDYmdlUmVHZUZnWmVZZkxia2NvZkRnTGdsZGRoU2NLYlFoWWIxZVVoZ2JFYXBlVWV3ZGtmV2JCaGxnWWVuZE5jQmVkZFRkS2d6ZVFmUWZNaFJiWWZNZFZieWI4ZGdiVWJGZWtmZ2VWaFNnQWVuZkphemZFZFRmTGFoZndnR2ZXYTFod2NUZUVlemhJZ3FkUGJDY0lnTGVLY3dnMWZPYUZmRmVFY2llRGNUZUFmM2hGYUFmTmRUZk9hVGJCYlRnRGVWZWthRmVHaENjUWR6ZU5jamFFYk9oQWJnYzhnYmRNaHpia2JOZ05jamh3aG9oRWJSZ2hoV2RXaENnNWVLaEFmeWE1aFhiVWVpYWtiR2NOZlZnSWdCYUtlVmdNaEplRmRnZVphV2JKYXplUWdYYlVneWdzZjBkRWVEaEVlV2JEZ0ZoY2F2Y0ljRmRCZ1plSWJGZ1VnZ2dKY3lhY2h4YUViMmMxZ0JkQWhGYUZjU2FGaHhmTWY0aEhmemVJZ3FhSGdtZ1FoMGNRY0FiSmFWaEtmZ2FrZWtlZGJrZDliQ2dVYWpjUWI1aFViQWFwZVVhTmR4Y0VlcmNJZFhlNGgvYkdnQWZZYkhhSGh5Z2RiamRZYlRoQWcyZEphaGFVZVlkWGdHZzBnZ2FRZWhoWmdoZVhia2dNYnFiQ2hUZ1pjQmRSZDNlVWdWYkVod2MxYWNiT2JrZHdkeGNHYlZnc2c1YUpkbGNFZmphR2NDZmRlUGNEZHllQmFZZVNmMmhZZEpiWmVpaFpjdWZlZGxoOWJGYVdia2QwY2RjZGNCZE5nU2VMaFNiUWV2Z1lod2hVZHJjSGFVZHBmU2RWZXlmc2dZZkloamJNYWNmUWhrZUVnd2VQYTBoRmNMZ1hoZ2JJaExmYmZuYkllN2NQY2diY2RVaFNmUWI0ZWliTmEwaHNmamdNY2lhQWRaaEhna2JNZURnUWZnZ3RmUGRSYlJjRWJaZGJoMWZaYjljRWUwZWNlQmVFZmdiVmJRZURjbGgwZzJiSWJCYk5lR2ZPZFRlY2RWYWVhWGIxYUtmSGZHZGxmemVHZEJoaGdtZllneWU0Y25kTmJUY1VoRGZLZWdjaGJIY1JnRmZJZ0FhQWRIZVFmN2FOY2lnSWJEYU9iVWZ0Z09jQWZGZlZlb2dUaERhOGFpZ1ZoUmZFYlZmTmVqYmxlR2FTZTBkOGJNZENiemNZZjZnY2hEZWtoY2hUZFdhTmJhZmZiMWZKYUxiZmVYZlVhcGVUZ0hoTWU2Y0ZobWVkZkRlRWFUZ3RhQmJRaEhoVmVJYmZlRmRRZ09hUGdGZTBkZGdFZGtkbGhUYktnVGQ5ZFpmUmNTYU1nM2ZBYXljVWVTYUNhUmdrY2piTWNoaHRnQWFQZmxmd2ZuYk5lU2hsY2FiVmNHaGNnY2VFZmxlTmhlZEFkUmhzZzdoSmhYZXBhcmNHYVdoWmNMZlhkVmVzY1FoUGgyYlpoMmFkYWdhWWZRYlFkRGIxZmNnRWdrZHNnWWJRZTBoWmFpYWVkamNjZzhkQmZ3aEVmSWRGZmdhRWV3Y0FkaWhSZzBmSmRnZWNhY2hYZWxkd2I2ZEJoVGNvYnRnUmNGZ1VmcGJEZjJnQWhCaFJnM2VVYlZoR2JsZWhoT2VIYmlhNWFrYlFmaGR4Y0FjY2FsZUZhM2hWZTFoQWRXY2FkeWhkZkRoVmhpZlZoQWdMZHlja2h2YWNobGZWZXlkUmQwZmRiSmNSY0FnVWFYZE9heWgxZTZnSmd3Zmdnc2dBZGtnRWhYYkVmR2VKZEtlZGNqZklhWGZCZEZod2YyZ01leGN3YktnVmRRaGRlemVZZW5oSmh3ZGNmRmJkYURjRGVSZjhiemhNY1FmVWJ5Z2NjaGZJYXFnVmhSZUJjTGRZZ1NlRmFGY2JieGFFZVRhZGNVYmRheGNYaEFhVWVpY1VmQWdzaEViUmdSZUJnN2diZDFhWmNCZU1keWJJZVVoT2JCaEZnS2ZVYnpoRWR4ZldkVWNvY3lnUmEwZXhobWVZaFhkQmFWZmNiRmVwY1BlV2FFZ1VhRmVIYlNnWWUvY0toV2MwaDFhRWZpZ01nUGVUYnhkQWQyYVJhSGQ5ZC9iZWRFY0lhVmRlYkhiWWJJYVNoeGZBY1hlVmZ4Z29nS2RHZkhjQmhWZFFneGZ0ZVNkZmdIY0ZnUWhYZlNhZGFnaFhhd2YxYllmVWREaHNlSGhSYlNkbGZFZVhjU2R3Y1RiT2FsYXdnSmRhYUJoMWRCZlVjQmF3YzZoWmRuY0loRWVVY0RmNGVuZUFiemhsY1hnUWdsYkFiOGZMZTFhVmhNZ0xlMWFzZW9hWmRtaGtia2ZYaEdoOGRCaGJkUmEwYmRmVmdWYklkeWJQZ2plUWRnZ0dnU2JNZUVoUWhWYUpjQ2FiY0FmbGgvZ2RnZ2JsYW9lRmNYZWhlMmVFZWtjc2NZZUNoaGQ5Z2liZWZqZWthTGVEY1RoNWFBZldiaWVjZTlnSGN5aEllb2RKaDFlY2ZRY2FmMWF3ZVZoQmJRZUFjM2JRZFZid2U5ZUVmeWdBYkllYmVXZGdlVmNTaEZoQmNIZEViRGVBaHpoQmhCY1VhbGJjYWtmeGUzaFhld2FOY3RhTGRCZ3diV2VCYVdkWmhQZFpmaWQ5YTdnY2RCYUJlamVXZ2dhc2NIZ0hmVmVSYkRoZWdHaHNnL2VPYXhiMGZsYUdjVmNzZUJoQ2JtZVFmWGhLYzNjWWZQZVNjd2c1ZFNoZGJoYUpoTGdHYUVjTmFaaE1kRGJjZ2tmSmhSYW9mTmhTY1FiNGdPaFBkVGNaYTVnT2JTZmdhYmZGY1JjaGdXZlpla2E0YmRoUGMxaDVkQmdPY3hhUmMvZ0Vjd2RoaGtlRmNRY2RlZWdBY2tnZ2YyZlBjUWVSaEJlT2ZYYzVmUmFKZlZmNWFHY0ZlbWdFYnVjR2VGYlJnbWdDaFdmWmFuYmNkWGFsaFpkYmV4ZFZiSmdXYkVlVWNGYUhkU2ZZZC9oS2FYZGhlbmJhYmtoc2NQaFVla2MxZU9oVGNIZlpoMmVVZmhmUmRVZkthbmZaZWJnU2V3Y1ZkRGhBYWpiOWFwaFdibmVCYUliUWIwYmtiSWdNYkNid2dlaEpjVGJSYXBnWGQzaE1iUWJHaFdhZ2NMYVJhV2U4YVpoUWVXY0VkS2VjZHdiNWVIZVBnQmR4ZEVlZWJraGNiUWdaZ25mSmJXZEZoV2NJY2dnWGh6YVJkWGNWaHhiWWRnYmFjQmJvY3lkWmVoaFJkbWZaYm1mRmV3Z1hkVGcxYVVhQWR4aDBkQWRWZFJhUWRoYkphVGdrYjNmQmFDZlVmRmREYTFjcGNFYWFmRWR3Zi9kZWRsZ0llSGZIYkhiZ2Z0aE9iRWZzYVloUWUxZGxjaWhjZW5iQmV3Ykdoa2gwZEdkVWNpZkZoMGJTZ3phNWR6YWFhUWZzZkZlT2RoZ2xlb2dDYzBlVmF2YUVjUmROZnZlUmQzZU5mOGhCZFNhSmJRZENod2dSZkpnVmFDZ01jMGhIZzFjc2Z2YkFmZ2FNYTRnQmV3YTllRWFQYlRmZ2RlZlRjR2VvYVVmTGcyYnBiaGdLYjNhOWZ2ZFdna2JjaGRhSGhWYlZoU2VkY0dodGM2ZFlmMGgwYXBiQmNFZ0VkVWdXZlNiTWVaY0poRGhjYlFmRGRsYUJiaWVkY2hkTmVhYkZkR2RsZ1piWWFuZ0phd2JjZEVhaGFEZ1NiVmdwZDFlZWFFZnNieWVOYURhd2ZhaEhiRWNKZFllS2hrZWNoQWRkZFJiRWFTZWZoMGZ0YlpiRWIwZGRib2FGYVViaGNRY1JieGdCZm1iY2FsZVlmVmJMYlRlY2NGZ2JoVmVjaFBkR2drYU5kaGNGY2hoaGNtZkZlR2NaZW1jWWdYZkJjVmNNYWxkTmVjY05heGgxaFZoVWRuYlJncmFlaGphNWhFaFpnbWhFZFBjVWVoZUJna2dUaEhkWmQrZkFhRWZ4aGJnZWZHY3NhU2hEYlVkMGJOZkdiamZZYTdhUGZ6ZDViSWVTZ3hmMWhUZmRoU2ROZWhjZGIzYXBocGRWZTFia2hRaEdjV2ZoZ2RnQmJEZTBhUmRXZW1lOWNhZFdnUmROaEhjYWNCZ1ZiSWJVYkVlY2NRZ1pmbmdJZENmRmFXZnhoMGRVYlNoTmNaZ05hV2NraHNhTWJuYnRmWGdJY2tlRWZxYUlkMGV0Y3dmVmVXZTliYWRSYXhlMGRkYlZlVmZKYzBoYWUzZnBiOGNUZ1Nkd2FlZ1FhUmdGYUVhTGZRZU1iNGJkZmxicGhMZEZnU2JOYmNmRWNrY3NoWWNRYjFmbGRpZGNkbmJCYndnU2dFZ05kSmFXYW5lVmM0Z1NneWdVZC9iUGdRYUlnTGRYZGhja2M4YmNkRWhjZXJjVmFGZVVjdWJFYWpmOWVIZVJmUmFVaE9jWWZsZEJlSGRFYkdlWmF5ZVZiaGJWYXFkY2JsZ0ZlM2VWZDBob2RXaE5jRWVzY1dkR2ZHZFlkVWRaaG1nWmVoZGNkRmdWYnZnV2JrY2NkSGFIZ1JlTWZIY09naWFnYXVhS2hnYUlla2VTY3diZGhiaEViRGI5ZG1hZGFuZVpkU2RRaGhlVmg0YmRjaGNKZ0xiR2dFYk5oWmRZZ25kSmR3ZGNiQmVvZ0doSGdRYThnbmVOZWtlc2RqYVloVWVOZFhoV2NSZEFkWmFhZUFndGJGYWJneGdFZFRjYmMwZ2RmemJFZXhhcGR6ZlBiMGhoZ1FmUmd4aEJhbWhjYWxnWWhWYU9iRGdjY0ZjSWFnYVVjRWhGZGpjdGF2YVVnaGhBYnZkR2ZHZ1pma2NJZ0hkSmRaY2JkeGhOZU9iRWFSYTBmY2dTZFZjNWVyZ2VnbWdOZ05nYWNrZnRoU2NXZ3hheGZPaFRkSGZaZDJnVWNrY0liVmZjZkNnUWhjZEJoQmVoZmVmV2FTZFFjbmdQZmpkTWhjZ0NiZ2FZaFVoZGRYaEFiZmFlYzNkb2E3ZlhibGFsYkxlTWIyaGdjTGNSZFdnOGNSYkVlMmU5Y0hlSWZWZlllVGZQYlVlY2NHaFVnQ2FoaFNoTGhEaGNoVmZRZFdoUWdpaEFlemRnaERkQmFVZUlhd2dNaFZkTWdXYkxlbGhVZzFmQ2FUYVljK2FKY1RiMGJWaEZlMWdoZ1BnQWRRYXRkNmVLZURic2R2ZkFlV2RJZ2ZmQWYxYkpoQ2diZlZmZGRjY2RlbGhKZUNjRmJYYWhhMmZUZDBiSWVVZ2FiVmhsZWljY2RuYUJmd2ZTZ0Vjc2JiZVZlQ2FWZjRmVmduZ2RjNGFhYTFjNWJWZk9iaGdsY29lQ2EwZFZhdmVFYVVhRmNuaFRheWNFZmRiRmFHYmdnSWJTZkVlSmVPZEdkVWh4Y3lhVmdoY1ZicWNlaDBjcGNkaFZoMGZwZkxlWWJHY2xmdGVNZG1nWWdVYVpkbWNZY25oSmZSYXNmc2REZGdkNWVTZFVnMWhWYmFiSWhHaGRnNmhNaFVnRmJxZUFnZ2JaZlNjU2IwaDViTWhkZ25oWmRTZFFkaGVWYTZoSWcwZEVhT2RHY0JlQWdOZk1jRGFzYXpiSmdFZHBkWWFZZjFlcGQxaGVoRWh0ZjNkZWFtZEVmUmFEZkZlNWRhYVBiRWdJZktnSWNSYkVkYmNPaDBjNWV6YlNlR2ExYm9oRmNVYmhoUWdSaHhlQmZtZ2NkaGRCY0FmSmJEYUVmRmJQYWhnZ2VFZEZnaWd4Z3BnSGh4Y2dkOWVQaG1lWmZtZFloWGVCZlZiYmgxY3BlSGdIZFJhMGZCYkFiQ2gxY3JhSWZVZWxhTmVhZGtmc2dQZ1VkaGNCZ2tiVGNIZFpjMmRVZmtnSmVEZE9mU2NRZlNiSGZ4ZmhnZWJXaFNhd2UzZEphM2NBYzljQ2dnY2NiT2diZFJia2RaZEpkVGhzZndhWGIwZ2dkWmRBZmtmSWZMZVJoV2E4YVJoRWIyYTliSGJjYXhnTmdIYWFoQmFVY2FmRmFSZE5mRmFOY0RneGRXY0hmVWFCZnlmVWRYaGRiWGRTZWhoWmNwZFllUmVZYlloWmJoZVJnbWRaY21ha2FrZVdmeGFBY2xoRmQwYjlnU2JBY1JoMGZMY0ZmSGFwaCtjVGVUZEZhaGdEaDFlSWhRZVpoRWd4ZTJhZGFsZkpnQ2dGY1hhaGcyaEVma2ZzZFloUWJ5Z1liZGJJY2lnSWIvYkhiQWN3ZjJmSmFXZTlkNGNQY2piNGIwZVBlVWg4ZDRkUWZrZXNlcGFVZmtoc2gvZFFiMWh3ZTdkQ2ZDZ2RlS2ZGaHlnMGhaaFlmbGRCYkhoRWVHZFpneWFWZ2hnVmdxYWNjbGdGZjNlVmgwZm9jV2VhZFdiRmFRaFZneWNrZ09lWmRpY0FlMGZQZ2hjWWc3YUVod2VoaFRlSGRWYjFkYmJkZ0RkQmJRaFlnMGMxYXFoU2Z3ZzlhU2VFZkdiUmNNYmRobmJaaFNkUWNoZ1ZhNGNkZGhjSmJMYVNnZ2JZZU5oTmV5Z0FnK2FjYUZjeGVSYlVnbmNCYzFlZWRFZHRjM2hlYm1jbGdYaFdmUmdBY1plYWRBYnRkRmdiZ3hmRWZUZE1ha2Z0ZlplRWUwZWRob2hGZlVjaGdRYVJneGNCYm1jY2dsYVloVmRhZm5oSWNNZGZlbGV0Y2djRmdtZmxhaGFGZmhhaGFtYUZmR2NaYW1iWWZYZEJnVmNiYzFjcGZUYURjeGMxZUloVGcyZGxmcmZMZm1kMGhMZUpiUWRRYUhnV2h4YUJhaWhTY2xneGIyYlVia2hJZ1ZhZWRIZFloU2RTZHhnaGVEaFdnV2VKYXloY2JIYUJlSWFRZFFmOGZQZ09iemVzZ2ZiUGJqaFVmbmdWZFZma2ZOZUJlR2VoZmZnSGVEYzlnVWJYYkNlbGZIZkpheGUwYlViUGFWaGNoSmhBZWhnVmZSZ1BhM2NKYlFjRWIwYkJieWFVZVhnZGhYZFNnaGVaYXBkWWNSYlliWWdaaGhjUmVtZlpnbWFGYXdjUmNXZjloSGJXYWdmQWdkZUFlVmR3Zm5iUGZqaGdkaWhIYnpmZ2FLaFZnbGNvYkJnYWNFZXhnbmVmYjFmd2RBaFRoQ2J3ZHpiZmVnaDVnV2RCZUFjMGRxYVdjSGZCZXdoU2NFaE5kSmRXZG5oVmQ0ZVNoM2RkZjZmYWdWaDViQ2ZPZ2hkbGNvYkNmMGJWaHZhRWVSYk5idmRSZTNoTmJPZ1JmeWd0aFVoSGZCZ01iUGFFYkdoNGVnaFhneGVVZHhhV2FGZEZhM2NWaDBmb2FXZGFlV2NFZldiR2hHYlloVWRaZWpiUWVrYkpmQWhBZDllRmJFZWNnY2JEYUVkNWg0Y2RhR2d0YTZiWWQwYTFocWdTZ3dkOWFTaEVoRGRsY21jZGFuaFphU2ZRYmhnVmI0Z2RnaGRJZ1dkTWNrYU5mWmhZaG5mSmV3aGNkRWVoY0RlRGd3YjhkN2dPaHhjOGgrZ05jU2ZkZlhhRmVoZ2doUWZhZ0ZlQmV2ZWJieGhFYlRkYmgwZGRoemJFZDBiZGJvY0ZkUmhvZlZoRWEwZFVnMGJQY0ZnWmJiYVpmQWFZY29oQmd6YkljdWhhZ1FoZ2NUYVpnSGRrZGZoYWh4ZlVjVGZFY1FoQWU2aEhiU2g1Y0hiQWRoaDFiSGZRZzJmQmM4Z2JnbmR0YWVkZmNGYThlWWRVaGdicGRrZ1hjV2RaYWhlUWdWaFVjQmRhZFdhNGdBZldlQWhOY3BjV2hXY0pjeWNjaEhmQmdJZlFiMGVrZkhkWGQzYWhnTGhkaDNjcGJwYVZoMWFrZ1FjWGF6YzFhRmJCaGpjdGVZZVhhQ2RGZEhmT2R4YnNmVGVaZ0JjVWhhYVdoVWRkY0xlVGhIYUpmV2RGZVdicGh5ZlVkWGFkYVhmU2NoZlljZ2NKYnhlWWdRZktlUmN4ZHZkWmFuZzFkd2ZCYzJlWmdhYkVlMWJWZVBjR2hnYVZiMGJKZ1RhOGcwZ1RjUmFnZktoUWhSZVZiVmVBZlJlNGFrZU9kUWVCYUtoRmd4Z0ViNGRSY0FkcGZVaENmaGgxYWliSmJpZGtiZ2NEYlFlZGFKaEdleWNjYXFjQ2JpZjVkNmZKZFJkSWFYZFZkMGEwZWdiQ2VVZHhmMGhPZHhjTmN2aFJmM2NNZ1RkUmQyYmdiVmJTYkZjQWZWZFZmVGJJYW5iQmFGY3RocWJlYm5ldGYzZVZkMGVvZFdmYWFXZEVlV2JHZ0dlWWJVYlpjbWNZYnZhZmhpZEVoV2JLZ2loSmI1Y1liamdRZWdlQmVnZG9oRGZIZURiNGFmY09hM2U4YjllWWNoY0JhbWhkY25nWmZTZlFjaGFWZjRoZGdoaEpjTGdHY0VkTmRaYVlobmdKZXZlY2NFZEJnTGNIZFZncGhvZWVlQWdVYXllTGRXZmtiaWNFaEZmNWNOaGNnR2NvZlhoUGVWaEJmS2NaaHhkVmc2ZUdna2V0YW9oSGRSaHhoZWhPaEdiOGEyZEloQmFsZEJmSmdRZjBhdWJkZzBlcGZLaFdiR2JjZXhnUmdGYWNheWFXYXpjSWEvYU1oVGFWYmNlWmFuZUJiSGFIYlJjMWNWYVVnbmJSY3JlZWJtaE5lTmJhaGtic2FQZVViZ2VwZWtnUmREY2dmamVIZWdiNGJWZVplV2ZzYVBjU2gwZ3hkRGNYZTJkUmN5aGVmQ2NSZklmWGNraGtlVWJNYkNnOWJMZk9lWGZJZDdmWGRsZkFnY2RHaFdmQmVmZ1NleWVOZFVjWGVTZWdnVGZPYnhhTmRhZ2FoRWFkY0JmV2NVYnNhNmRaaG5jSmZXZUZnV2NwYnlmVWhYZWRlWGJTYmhlWmRwaE5kVGJ3Z1lhWmdoZlJjbWhaYm1lRmh3ZVZnV2g5YWFlVGFnZllmM2FWZFZiSmgwY2FiM2VwZGplVGRXaG9iV2hKYlZjSWNRZlpoRWZ4ZjJiZGVsZUpjQ2hVY3ljMGQ0ZFVoUmg5YlJmRGJCZ2RjaWVQZkhiZ2drZlJlRWVNZmJiVmRuZlVheGRRaG5mY2hoZVFiMWJkZ1pkRWdCYmxjb2RDZzBoVmV2YUVoUmFNY21iQWNYZk1hYmVSYm1kQmViZlJoaWRRYytnWWJBZ01jV2hLZ1hoUWdZYUFlRGVBYk9mS2NEZWxlamVHZFJoRmQ1Z2FiaGdJYlVlT2VqYXBnaGJKaEJjMGVtYkNhVWRkYVViVWJ3YllkR2ZOYVNhVWU1ZUpoZ2VJZ3NlU2IwYUZnYmhHaFVlNWJNZWRnbmZaYVNoUWZoZFZiNGVkaGhjSmNMZkdhRWNNaExoSmV5Y1llbGRJaGdmWmdEYUJneGQ4ZGlmZWVBZ1ZmL2dMYW1lVmZYZ0NheGJ3ZFpiSWFRYkpjZWNSZVJlRWRUZGJjMGdkYnphRWEwZGRob2RGZlVnZ2ZaZUFjUmZCYnVjY2dCZ2hkQWZKYnplQWFVZkpkVmFWYUtmQ2gzYlJjaGJRY2tjRWIyaFVkU2hraGdnWWNTZ1JmY2NiZ3dlRmh0ZUhkUmYxYlZkVWJuaFJhcmJlaG1oTmROZGFna2VzY1BmR2IxaFpha2VSaEhhUWVsZUJhaGFCY2NhTmZqaEVlUWNTaHdjVmhlYVdnVGhZYXJkSWdEZ1VmSGRCZlVma2NJYWZjRmVKZExmZGgzZ3BkcGZWZjFia2RRaEdkV2JnYkxmUmNXYThnUmZFaHpjc2dQYklmVmF3YlFkYWRGZnNhTmhCZjBoZGcxYk5nQ2hBYlphUmgyZEplWWFVZ1hjZGZYZlNkaGhaZHBnWWdSZVllWWdaYWhlUmhtYVpjbWdGY3djVmJXYjBjemdBYlJhMWdZYUdleGhFZDdiTGh6Yk1ldGdDYm1hb2RDZ1hoRmFKYkRmTmJBZmthMWdQZXhmUWVMZVVhRGJ4ZjJjUmFnZk5lZGNEZFZha2gyYU9lamRWZXdkRGZnY29mYmRDYlNlRmQ0Z0NiaWdVZzlkUGRCZG9jY2NYaGtlMWVvY1JoaGZBZDhnUmZSZk1hdGVBYW5iTmZTYlJnemN0ZUJkR2JoYWtmSmFWYzJlUmJZaFZoaGhWZnFiY2VsZkZhM2VWYTBnb2hXYmFiV2JFZFdlR2dHaFlhZGRmZVVkeGhoYWNlRmVWZXZnV2FrZGNhZGVIZFZiVmdTZ2RjR2dzY29lSmhoYWtnL2JHaFVkRmVTYlZhbWh3YllmUGFqZDhiQmhUYWhlVWdzYmZkd2FsaGhlR2ZFaE5jWmJZZW5mSmN3Y2NhRWZoZERjU2RRZ2RkZmJlZUVjdGMzZGVlbWFsZFhmV2ZSYkFjWmNhYUZia2JBZk9lMGhSZEJkSWVVaGNkZ2RHYnhnTWVnZlhmQmd0YmNjUmEwYlJncWVjY2diUWNaZWFmamR0aFlkYmRIZTFlS2dGZ21obGJoYkZlaGFoZ21iRmZEYXRmTWRZY1hoQmZWZWJkMWVwY0hlSGNSaDBhVGJCZ3pob2NvY0xkaWNvZENnSmhFZHRnY2NXZ2tjUmZvY1RiQ2FSZTZkVWdnZXNnWmVlY0RnTWdiZVNkMGJOZnBiV2NXZkpleWhjYUhnQmNJZlFnMGVsZmFhZGNUZkVoTmNkYjNnSmZyZ0djUWd4ZGRkV2h5ZjFmWmRSYTJiOGhNaERkbWU4YVRjS2VrZU1oQ2ZKYjFjTmFJYkFla2Q0ZTZlWmduYUpmV2hGZVdkcGh5ZVVkWGJkZ1hlU2NoZVpocGJOYlZnNWdLY0toVWdOYm1oS2NDYVFnbmRWZ1Joc2hEZkZnMWNoZjRmQmF3YUFmN2ZPaFhoSmVrZFRlemF3ZEtnUWF3Y2RkVmNaaGtid2IzYUphQmRVaFhiV2REZDBjNGdSY2todGZWZEZhZ2VvYTJiY2hqZjRiL2RIY0VnTWJMZEhhM2hVZDVjU2J6YWthdmJKYkJmVWRjZFFjaGc1YWhiRWRHZzljdmVFZFJoTmV2Y1JoM2ZNaFRnUmcyZmdmVmJHYmhiVWVUaFJkVGVRYThhVmRoYmNkL2ZQZkJlVWV5Z0VjUWJOZlloTGhDZFViVWNHY0djY2NKZVplamZJZDRlSWRCYkFlZ2ZIaEViZGc4ZlRhd2djZ1RiTGRRZ2tmdmJKZFFmc2d2Z0dnUWY5ZlVoRmRtZVFiZWJkZ2pmOGhjZ0VkVWNFaDViT2NGZ0ViT2hWZ3dmVmVaY0FoeWdBaGlhTWVSZ0VjaGNIZUJkd2J6ZVBlUmdsZ2RnZWdtYmxhWGFXZlJoQWRaZmFmQWd0ZkZoYmh4Z0VlVGZjZUVjY2dqZEdneGJOYWtnRmhSYnBkY2NSYjFmbGNxZGNnaGhNY2NmUWNIZUpnUmZkZjFiZGdLZEZibWNsZmhhRmhoY2hkbWhGYkhieGhtaFlheWJNY0JjUGhSYU1nSmhXaGhlOWRWYlRhMmRsZnJkTGFqY29lZGRMYndmUmhKaFVna2VKaE9nVGFIY1pjMmVVZmtiSWhWZWVjSGJZZVNhU2J4YWhmRGZSZ21hSWUrZmViQ2dSaEVmUWZ4YnRnV2ZkZlRkRmJDaFhjWGZwYXBjVmUxZ2tiUWNHZldiZ2FMZlJiV2E4aFJmRWczYVZmSGZQaGhlc2NUYVpiQmFVZGFoV2VWZHdhNmVaZG5jSmdXY0ZhV2NwYXllVWRYZGNiS2ZZZEJnWmJwZlljUmJZYllhWmdoY1JnbWRJZkRlUWgrZkZkamVzaFRmQ2FGZk1jZGdGZkZjb2RnY1libmRvZzRnWmIyaHBhTGhEaDFmSWVRY1phRWJ4ZTJmZGRsZEloTGVVYjNnaGErYkVoQWJWZE5kRGZoaHNhbmJJZUhmSmR3ZFNlVmM1aEpiRGZpY3dib2REYWpmZ2Q4Y2FnUWZOYVFjT2RoZ2xob2ZDZjBjVmh2YkVmUmhOZHZlUmUzZk1nVGNSZnpkeGNkZ0diaGE4Y1FjRWZDYmdnM2JBYlJjVWhlYktod2JFaHloTWVoZWhoRWFKY2pjTWFlZkhhMmFSZUhjTGJ6ZXdha2djZ2xmVWN1Y0NjQWFCYUlkVWJCY0FhY2JJYkdic2EzYU5oaGc0ZCthU2UwaDBnWGJFYkNnVmVNZ09oQ2hNaGZkQWJGZ0FjcWRjZ1JmdGFRY01la2dOZlpoWWhuaEpkd2djY0VmaGhEZlNkVmhvaDhiUGhrY3RiL2JhYm1hbGZKZ1dhVWdRZlFlUWVnZ3RjRmhiYXhhRWhUY2JlMGRkZ3pjRWEwYWRlb2NGZFJid2RZY0ZoVmc4ZXhhY2doYmhmUWRQYlhmSWZqZ05maGhraE5jVWN3aHdmemRSZEZlY2cwYkhoR2VGY2tiTWJqY2tlUGZLZ2xlaGdIZVhhRWQ4YVNoQmN6ZGtldWNOZURnZGROY0pneGE1ZGNlQmNoZ0FhcWFBZXlnSmEyaEVlQWFjZ1ZhTmRqYk5jVmVDZmtod2hLZ0RneWJkaDFlZWVXaHRjaWZRZTBlbGVhZmRhWGJoZ0xiZGEzZm9mMGZmYVZia2NRYkdlV2JnZUxlUmVXYThmUmNWZVRib2dKZU1oRWhjY09mSmUxZnRhSWVCYVVjOWdFY2FibmZJY0VhR2hXY29oN2RYYVhlY2JTY1FjeGRZY3lmU2R4Y1llWWZaYmhkUmFtYlpkbWJGYndiVmVXYjhmSWdBZGtjbGhJZEJkeGF4ZDBlWWcxaEJhamdUZFdjcGdMZURiMWJJYVFnWmVFZnhmMmJkZWxhSWZEZUhjU2ZwZy9lSGhtZUVjWWRRZTFmbGhpZmNobmJCZndmU2VFZ05jSmFXYm5kVmFvYlNhMmhsZW5mYWhRZFZoemVFZUJibGFvYUNoMGRWYnZjRWJSZU5hdmJSZjNlTWZUaFJnMmFnZEtiU2JCZ2hhUGZSY0dhcGR5ZUJmQmR4aEFlY2dsYUZlM2FWYTBib2NXZmFjV2FFYVdjR2RHYVlhVWVaYW1iWmM3ZWNmQWhNaGdkRWR3Z01jZGJEaFZkVmhUZ2FoWGhaYzZkS2VtaGRncWNTZHdlOWhTZUVhR2hSZU1nZGZuaFpkU2hRaGhoVmQ0aGRkZ2ExaExjR2VoYkFnTmhNYURlc2MrZk5lMGJwYURiVmZFYmRlMWNMY0JkSWZuZlBoeWNZZlJkV2VWY1VoemFhYkFndGJGZGJneGdFZ1RlYmgwaGRlemNFYTBiZGJvY0ZnVWdoYlFlUmF3YzllbWVPZWxlNWdCZ1plbmJJZURmZmJsaGtiTWdYaHllVWF0Z0hnbGVGY3FjRmRDYU5idmRTYTNoQmZWZ2JnMWJwZ0hmSGZSaDFiVmRVYm5kUmZyZ2VhbWZOZ05lYWFrZXNlVmZVY2xiaGFzYkdiSGJwZzJkQWJFZXNkYmJQZ2pkOWZlZkJleGhBY0tlVWdFYmhmeWVjYkhlQmRJZFFmMGhsYWFjZGdYY2hlTGJkYTNhcGFwY1ZnMGhNYVFnVWJXYUJoZmZTYldlOWhEY0dka2VWaEhhY2J4Y05oSGNhZUJoVmFJY1ViRWJjaFFlYmUyaGxjOGVGZldkcGF5ZFVkWGZkZ1hlU2RoZ1lhMGhTZHhmWWJZY1phaGZSaG1jWmFtZEZld2dFZ3pib2ZVZ0JnRWVsaFVnR2doYXhhMGVMaFhiSWUzZFFlV2FvZFpnQmFsZ0pjTGFUYWtleGEyaGRmbGNKYkNiRmZYYmhhMmVFZWtjdGZSZ0JkVmRsZnFnZWZqYUZoNGRHZmtjcGNGY1dhbmQwZnNlU2IyaHBlNmhJZ1ZjOGZOZkhiQmRsYTRoQ2IxY3RhdmhRZXhmTmR3Z1JkMmFNZlRhWGNXZmdnRmRTY0FneGVIY1NoV2M0Z2dkWGV4YnhmamZmZGxjRmQyZkdlVWhSZWliRWFCYUZhemhmYUJkbGgxYkZkQmVRY0FkQ2VTYW9hY2ZMYXpoZGZ0aGNnaWRjY21kZmZXZ0piUWFZZTBoMWNxYlNnd2Y5aFNmRWhHY1JjTWNkZm5nWmhTYUJhRmZvaHFoZGVoY29nZGZXYVJkRmNaY0tnM2hKYnRjY2RGYWhlWWZTaFFkaGExYVpja2FzZitmWWNXZ2xlY2VVZGxla2FRYWFmRmc4ZytkSmRtZ3diVGZjZWtlZGRqZUNhR2YxYm9jRmFVZ2hiUWNSZHhkQmNtZmNibGJZZVZmT2ZEaGNjRmRJaGdkVWFFYkZkamcxaDZoUGRCYWhmbWdGZEdmWmJtaFlnWGNCY1ZoTWJuZkJkSGRIZVJnMWFWYlVkbmJSZXJiZWVpaFVkWWNKYUFkaGViZUdoMWI4aHFiVGREaHBoK2dCZWtiNGVWZUtobmhvYlNnQWdoY0ZkRGdBYmtlaGN5YmNjSGNCZ0loUWgwaGxkYWFkZVhnaGNMaFBhamh4Z3BjWGQzaE1iUWdHaFdjZ2hMZ1JiV2E4aFJhRWIyZjllSGRjYXhiTmVQZ1lmQmJjZmJjQmJCZVZoWmVLZkRkVmFVZEZkV2N0ZHZhVWZTYU1nT2JHaGxmTWhtY0pjeGFaYlJnWmhrZGdlNmhaZm1nTmV5ZFZmWGRKYkhmV2hoYTFlVWJYY0ZjSmh5ZWJkWGdwaHJlQmhHZnBoV2FEZDFoQmRGZU1lQWRwZXVnZGRGYnRoT2RQYTNjaGcyYkVia2FzZFllUWUxYWxjaWhjZ25mQmh3ZVNkRWdJZ0hlVmJEaHdlcmNMZWpma2Q1ZEpjaGhNY1FmWGJsYTVjZ2JRYWtheGVtZU9ieGFOZXZoUmczYk1lVGZSZTJkZ2RWZlNmRmJCaE9hT2dtY1pjeWNWZWhjVmhxY2NjbGVGZjNmVmgwZm9iV2FhaFRoVmJlYlNoaWVsaERnWmhpYmdma2hKYzFoVWJiY0FheGdkZ1ljZWhBY2NjQWdPYnpobGd5ZFpmRWU4ZXZlQmVVYXdkZGhWYUNkMGVDZk1iWGFSZVNmRGIwZUFlcmNJYWhkSWVKZ1hhVWNNaFlhWWRpZlFleGNQZ0FjRWRIZFNnUWhrY2hoS2VnYkloNWdQZVdoa2ZTYkZmMWVOZldkTGhFZ0llTGJLYkJmWWFhZWRlR2YxYXpjRWIwYmRlb2RGY1VkaGdRZlJjeGJCZW1hSmFCY2RlSGNhYmpjZGJSZmFibGJkaGFkRmFqZFZjaGNVYWhkQWIwYkdlR2dZaHZiYWFHZ3RjL2RiYTFmcGNIZkhnUmMxY1ZoVWhuaFJlcmJlY2piZGFOZWRhMGJ0ZEhjV2RrZ1Job2NUZ0RnTmQvYVNiV2VnYVZkZWVIY1ljU2JTZHhmaGREZVdnV2NKY3lkSmRqZkVmYWhRZHdhWmRhZWFiSGVnY2ZhZWZTYTBjN2NIZGdiMWNWZUVoVGZvZUhlUmVTYllkWWJDYkVjVmVIZWNneGROY0hmYWRCY1ZnSWFVYUVhY2JRaE5mRGhjZUNiUWhEZmdjOGVVZ1RnaGhYZFNod2F0YjBlWWdWZU1iWWVZZ0JnSmJtYWJjamNWY3djU2VHYzhmT2VTZlVkNWFSaEhmQmVFY3hhWWIyZXBndmhUZVNoVmRDaEJjbGE0aFFnTWhGY2RoY2ZkYmxnSmhDZkZjWGdoZDJjRWFrZ3RmRmFhaFZjbGFpYWNnbmJCZndlU2VFZk5jSmhIYkNoQWEyZENkQ2ZNaHpjSmNoaGxmWmFVZHhmRWE4Z0JoMGVVZTlmR2RCaE1hMGZiZ1hmTWJUYVJoMmFnY1ZlU2dGZEJjSGJFY0dnWWNrY0ZiMGRkZXFoT2gxaEZhcWRWZ3hlZ2VZZkpoU2dSZ1loWGd6YkpiY2RaaG5jcGRoYVlkRmVWZ3dnV2VsYmNjZGdCZTFmVmZDY2RoRGVkYTZnT2drYVVhNGdSZ1VoTWNYYlhnaWZNZllhUGFuYzljSmdhYkJoVmU0ZGRhaGZKZExhR2ZFZk5hWmdZZ25kSWJrZmNlRmdWaERhQWdWYUlhaGhkZUVhc2crZWNnM2FKYTljV2dSY0FoWmJhZ0FjdGVGZ2JieGRFY1RjYmV3YkVoOGhRYlVjZGJnY1Fjd2drZUNhUmgxZ1ZmbWFiZzFmWWZGaGNoWGRJZlllZGEwYWxoS2RVYjNoSmRoY1VjeGZoZXRkQ2JXZVpkM2FhY0hoQWJCYUZiQmY4ZTZkSGFRZ0JmVmVRYkdlRmgrZGVhbWJWZE5kT2FEZEJmS2FMZ3dldGdPZlRhSGJaYzJnVWVrY0llVmhlZkhnWWhTZFNiMGFvYkdlRGhUY2NnZ2JQZm5nQWdjZldoR2hOZmFiZGhYZ2hhTGZkYzNhcGRwZ1Zhd2JRZDZlR2NXY2dmTGNSZVdoOGdSZ0VkMmc4YUJjSmdsZzBnRWVQY0Zkd2VIaEhka2hkZUFiYmhpYVpnYWdGZVRmaGcrZ1VjVGQ1Z2JjU2ZsZE5oZ2dZZVVmMGV5Z1piaGNSYW1kWmhtY0Zkd2FWY1diOWVhaFJjMWFSZWJoVmNWY3BoOGRPZ1hjUWZoYUZmRGM0Y09jWWF4ZGRhZWZJZHhlZ2IrYWVkbGVKY1NhRmRXZVpkMmJXYTBhdGNFZEhlMWFrYndkZmdEYklkcGhIaEFlWWJsY0hlemJzaC9mSGN6YzlhNmNkYlZkY2FRaEdiUmZCZENmQ2MwaFZhdmFFYVJnTmh2Y1JoM2ZNZlRlUmIyYmdlVmFIZkJhZ2JWaFhoemRGZHlnR2VGZEFjOWZjYWlmTWcyYkdiUWMxYVRlRGdEYU5kRWRWaHpmUWRjaFpiR2dFY3VlTmFoY01jOGJIZHhoTWVhZ0hiUmR3ZUJhZGVDY1FkdmROZTBhMGdsZURhUWU4ZlFlWGZ6Y0VhQ2hNaGloVmFRaFNmd2I1aFNoZGRoYkpkTGFHZEVoTmJaZ1lhbmJKZXdiY2JBaEVmRmNTZVZnSWNuZ2RmZ2RrZHVhTGJpZ3dlN2ZIY0ZiNWRlZVBiRWZOZEZlY2R4YUZoYWNiZDBneGh6Zkdld2VKZm9mU2JSZFJkUWZWYnhmbGF2YldiRmRZaFZhYWJuZ0pkUmNkZTFlZGZLZ0ZibWJsZGhnRmFrZHdodWdSZWlha2J4Z1lkVGQ0ZFFjT2ZGY29lMWZYY0ZhTWJTY0ZoeGJFYTViS2FDYndiZmhZaGtla2JJYkhkbGFVYnFoQ2Z5ZklnK2JWZVVjSmhjZ0tnM2JaYmRoSGVrZXhnRGNGaGlmUmR5Y01oamQ4YWRlRGNRYTBlSmZkaDNoRmNRYlhoWGRwYXBjVmIxZGtkUWRHZ1djZ2hMZFJiV2c5YURkVmJqZnNmU2RJZVZkMWRIZllhRGE5ZEljVWZFZmNkUWVaZm5kSmVXZEZlV2FwYXllVWNYY2RlZmdHZUJlWmcwaFNmeGhZYllnWmZoZlJkbWNaYW1nRmV3YlZhV2c5Y2FkUmh4ZTBiZGZBZnhhMGM5Z0xiM2RwYnpnVGNYYmRnV2JFZGxkSmZaZ1piRWJwZndhZGJnZVFoTmNYZERheGgyZ0Fka2NzZEZnWGdrZVJiaWVOYTFncGN3YVNmRWhOaEpoV2JuYlZkNGNTYTNlZGg2YWFkVmRkZ1poRWhCYWxib2FGZUVmVWFoZlZjRWRSZHZmTWJqYnBnZGhFYzNlQmMwY0diZ2NJY0dlU2hXYTRlZ2hYZHplOWVxYmNhbGJGYTNhVmYwYm9kV2ZhYVdjRWFXZUdnR2ZZZ1ViWmdtZ1poaGdhZGxiVWE1Y0ZkUWg1Y1pkSGNVY1ZiU2NhY1hmWmVuYVlnd2hoY0FkU2J3YzliU2RFaEdhUmhNYmRlbmJaZVNkUWVoZ1ZjNGdkY2hlSmJMZkdnRmd4ZVphTGREZ2NhbmdjYURhMGJLZ0Jhd2g1aHRkR2RSZmtlbGNPaHpnQmZmY0NjeGh3Z1phSWZRZkpndmRiY3hnRWZUYmJlMGJkZHpnRWYwZWRob2JGaFVjaGFRY1JneGVCYm1jY2drZndiVmVKZERlY2FHYWRoeWFJYkRlV2VEYTFjNWJkYTBmb2cwZlZkVGI5YXVkTWIzYnhiVmZKaGxjWmJIZVdoQmdSYmNiWGNsaDVocmhlZW1jTmROZGFma2JzY1BhVWRoYkJka2hUY0hlWWc0YlhkRGdaaHNkQ2VCYU5lMmNOYUhla2F4ZEtid2FNYUxkRGd3aE1hOWRNZ3pia2gxZkJkd2V4Y2hjZGQzZXBmcGhWZDFia2FRY0diV2dnZkxnUmFXZjhhUmJFZDJlOWhZZGNoeGZ0YVBmUGRCY1ZnVmVVYkJoVWJaY2FlbmFKaGVlUWRXYVFjTmZMaGljY2dGZkJlVWRJYm1kSGhtYWtnWWJlZXhiUWhvZmFkRGhFZmljR2RqY3NnVmhFZjBhUmNOYUVmRmZ0ZDloUWRYY3BjamFUYVdjcGVMYkRhMWFJYVFnWmNFZHhhMmRkZWxmSmVDYkRmM2FoZCtjUmhrYXNkRmJRY3hncGFxaEpobmN4ZndkR2NrZ3BnQWFWY2xnOWQ0Y1NjM2FkaDZoYWhWYmRhWmRFZEJobGNvZ0NmMGZVZzdkT2Z4YU5ndmRSZDNmTWVUY1JjMmJnZVZhU2RGY0JoT2ZDZDBkeGV5Y1ZhaGRWZ3FlY2JsZkZhM2VWYnhiY2Y4ZWFoV2ZFYldjR2FHYVlhVWNaaG1mWWJuY0pmUmJzYXNhRGZnZDVjU2hVYzFoVWRmY2ZoRGM5ZDJnWWh4ZTliamJTZjFhUmE0YUVoR2ZSZ01nZGhuaFphU2FRZWhjVmI0Z2RibGhzZU5lR2ZFYXNhWGhiZERmc2hqYUVmaGEwZEZhRGN4YzhibmdjY0JnbGcrYmNmMmZrYk1hY2h4Z0FoWmNhZkFhdGJGZ2JoeGJFZFRhYmQwZmRkemFFZnhiRWVwY1JhMGNnYVpmUmR3ZjFnbWNZaGxhWmRKYmFkaWF0ZVpnSmRWZ2tnR2RVZnllY2ZtZ1FlbGhCaHZiRGIwYnhmbWhZYVhhQmdWYWJkMWFwY0hlSGFSYTFjVmhVZ25nUWQ1aFBjemJjZ1lmT2RBY1VlUGhXZGtlUmhrZVVoWGZZYythV2RoY1lhWmVlYkRjOGFiZ1FjaGVSZERkU2ZXZkpodmFiYldiMWZJZkZoMGdjY1dlTWdEZVliTWVJYXpkSmNwY1NiRmdsZkViR2hYYUlkTGhUYlRjMGNmaFVoQ2FBZ1hkS2ZoZXNmVGZaaEJoVmRZZFhkRWJjYkFnYWRuZ0lkZmVIYkdlWmN5ZEJlWGg1Y01lWWVCZlplcGZZZFJlWWJZZVpjaGVSZ21mWmNtaEVjdGVmYzJmOWZhZFJieGIwaGRmVmhWZ0pjMGdhaDNmb2NxYkNjMmdwZERmWGVWYXNnUWFQaDJhWmgyYWRlbGhKZENnRmhYZmhoMmZFYWthc2JZZlFlMWJrY3JhTmRIYUJkNGNZY2tkTmZKYVdjbmFWYjRjU2EzZWRkNmhhZlZjZGNaZUVhQmRsZG9lQWIwZGNhNmdYZTFlY2RxY0FoVGVwYWRnQWZpY3doWGdTaEZjRmZhZkVnRGdJYnJhQmRsY0FjbGhOZUZnRWVXYUJiUmhoaFhmTWFBZE5nRGZYaGlhQmZSZk5kR2RaY25jZGFuZDljdmZXZWtoY2RkZ0hnVmRWaFNkZGNHYnRiNmZZZTBoMWVxYVNhd2U5YlNkUWhtYm9oT2JJZXpiQWdVY0JnMGFkZTRiUGExYXdoWWZUaEFoSWhYZElmVGNjaC9mTmRrZWdmaWJHYXdjZ2UwZElhU2NrYmlhUGdDZThjU2hDZHhma2VaY05kRmdkY3ZjYmJ4Y0VnVGRiZTBlZGV6ZEVhMGVkZG9oRmhVZmhhUWhSZ3hoQmhrZFBhaGFOY2JmTGJTZVloWmJkYlZkY2ZEY1doR2RraHpkUGZCYWhkbWhGYkdoWmJtZlljWGdCZ1ZnYmIxZ3BhSGRIY1JnUmMvaFVobmVSaHJkZWhtYk5hTmJhZGtkc2FQY1VkaGFCYWthVGJIZllla2FGZXhmWmdBaEtkamVnZFNlU2RWYlloV2hGZ0NmQWMzZEljbmJKY0loUWdsaFJmYWNJZVNlRWNiZE1lamVVZXZnVmR3YXNoZWRWZVNjMWZGaEFhamJ0YlpkRWd6YU1iYmZjZjNiaGdQaE9oaGNzaEVlRmhRYWxiWGRNYWpjcGFmZVBnMmVwaHlmVWVYZmRkWGhTYmhkWmRwZllkUmdZZFlmWmJoYlJlbWRaY21kRmZ2ZFZiU2NkaFNnRWF4ZUVjZGhSY1ZkdGRlZ2FnM2FwZ2pnVGFXZnBoTGREYjFlSWNRZFphRWd4YTJhZGdsZkphQ2ZGZVdhSmQyZFVoVWhOZ01kVGUxYWtod2VlaDJmdGRhZlNlRWZOYUpiV2ZuYVZiNGhTZDNjZGQ2aGFkVmhkY1poV2NWZzlob2FBYzBiY2dOaFJjRmNVZ3BiQWFpZEVhUmNSYTNhVWhJYVZlVmVBZ1ZnSGFqYUlkcmZCYWxhQmFxYWRhRmRkZTNjVWMwYjRkZWNPZjJjOWVTZFdkVGJKZVZoYmIyZDliaGRJaGhoQWM3Z0RkeGhWZFRlSGNSZ1phYWJJZUdnZGg2aE1oVWdNZXVhQ2FsaHNlVGJHZFhlOWZtZGRmbmhaZ1NoUWZoY1ZjNGZkZ2hjSmNMZkdnQmQ1ZHpiWWNuYkpjd2ZjY0ViaGhEYlNiVmhwYzFiZWhCaDhnL2ZLZUNiWWFBZldhVmg1ZGNjUGh3YXNmeGVOZ2tmRmRXZ0NnaGRVZ2hkWGJCaFZlZ2ZQZDBnaGdRY1JmeGdCZ21nY2VsZFlmVmRhZG5kSmFSYWRoMWRVYnNjWGZ6YXNkeWRRYmhnZ2NuZ1JkaWFFZ3pjTGdEZ1VmYmVPaDFob2NLZ1NkRWc0ZUJmVWNqYVlndWdlZGloSmROY09oUmQ5ZWRmR2QxZTRjamFRZkhoWWhVYUJhd2ZSYVRnUGJTY1FiZWNTZTNja2VSZkNoeWhNZXJoRWFpZFVkT2hCZ1Fjd2hJYWVoWGFnY3FjSmJTZmdkb2FEZmxkVWVRYlZoamhvZExkQmJEZDFiRGRVZWpoWmNLYlBkMWVvYk1kTGFSYlVjSGRFZmdlMWVWZUpkU2daYVlmRmEwZ0JneWdVYVhnZGJYaFNkaGdaaHBlWWFSZ1liWWJiYndhOWRNY1pkbWZGYXdoVmZXYzllYWZSZnhiMWNBZGZkMWVKZzBjYWIzZHBnamNUZldocGNMZVNiUWJkYWVoSmZ4aGdhL2FPYVJkeGJDZlRhSGVBZGlnR2MwaHRlRGVhZVZhbGhpaGNlbmRCZndmU2RFZk5hSmZXYW5iVWF4YkRmWGJkYnlmUGZWaGRmSGREYlJia2NuYUFlMGd4aG1oT2Z4YU5mdmZSZzNoTWZUZ1JkMmhnZ1ZoU2VGZkJlSGFFZ0RmSWQ2Z0JoRmJvZjliY2NoYjhheWdBZkVicGVrZEtnQ2g5ZVJiWGRRYU5oR2VOYUNma2V6YWVoSGg5ZHZiV2NrYWNiZGFIZVZhVmRTaGRhR2F0YzZiWWcwYzFhcWdTaHdmMGV6Z1JnRGJBaEpiT2R5Y1lhR2ZRaGtkRWEzYmRnbGFNY0hhVmZBZ3doYWVJZ3llWWExZWNiQ2NvY1doRGJ4YXdld2FLZmtjc2g3ZU9oemZzZlFoSGhFZklnWmVQZkVnTWFFZUliUmVGZmVjTGVoZDhlNmZYZ2hiSWVsaEZiUmFzZ1pjSGVWZVZkOGdjY2tnWmROZ2FlSGhKZWFhWGZWZGRjS2VGYm1kbGdoaEZkaGhoZG1oRmNHYVpkbWdZYVhkQmZWZ2JjMWFvZ0loRmVSaFJkYmJCZ2pic2RZaExlamFFZkVhSmdBZndlSGhRYXdhWmZ0YVRmSGExaGNlVWZrYklmVmhlZ0hoWWFTY1NjeGhoYURlV2dXZUpleWVjZUhoQmhJaFFjMGV0Y2FnTmJ5Z0VkZmJNZ2lkbGNyY2ZjVmRrY1FlR2dXYmdhTGNSaFdlOGZSY0VkMmM5ZUhmY2R4ZXBmY2RRZmhiVmhJZVVoRWFjZlFoWmduYUpjV2RGYldib2JnYkZjQ2JNYkNhR2ZGZWhocGRjY1JiWmVFZVpma2hCZDlmVGVHY0Znd2dWZFdoOWdhZ1JjeGIwY2RnQ2hIZmhiMGJhYjNkcGNqZFRjV2hwYkxlRGV4Z1JlRmFLYWdnOGRpZVBoeGQwZE1iRmFRY2RjK2ZSZmtlSWFZYUdoSGFOaGljY2JuZEJmd2dTZ0VkTmJKZFdjbmNWYTRlR2ZUYklodWZQZUFkVWNYYkVlQmNJYThiQ2gwZVJmeWZFYlVlZGd2aFFhWGVVZ1RkVGR6ZndjVmFWY1ZiQmZYYUdlV2NwZHloR2NCYnNocmVQZGhiMGc0ZUZhRWFJYWRhUGFXZWdhTmNNZG1lWWdVaFpkbWRaaGhhY2JGYVZidmRCZDJnMGFkZ0hoVmZWZlNkZGhHYnRjNmJZZHdjc2YvYUJiVWd3aEdjV2FTaHNjQ2hkYmpnSmZhaEZoaGNsZDRmSmVCaHRhTGNRZTJmbGRaYllnbmZKY3dkY2RFaGhlRGFTYVZjcGgxZ01nUWcxZzNiY2dpZWRmWmRFaEVnTmQ3YVBiVWcwZERhS2NraE1kYmZPYjBkNWQ2ZUVoeGZVZ3RkUWRSaDBnQ2VDYVJnQWF5ZmZlQmdwZVFkSmZEaFVnRmNQZDBkeGVnYUZlbWJsZmhhRmFoY2hibWdGaEdmWmhtaFlnVGJraFRhYmgxYUpndGNIYVJhMWNWZ1VibmJSYnJiZWVtaE5hTmJhaGtjc2ZQaFVoRWFVY3FhQ2FEaE1md2JHZ3dieGZRaFBmSGZRY1NkU2hnaFZjRGNEaFRkc2JpZU5hVGE4Yk9oUWd5Z2dkSWVKYnpla2hTZEZkU2U4ZXZlRWVSYnhlQ2NHZVdnNGZOYWJhMmc4Y1JlRWQyZTliSGRjYXhoTmZIY2FiQmhWZUloVWRFZVZmV2RNZ3phd2ZWaFFnU2hNYzlkSGgzZlZjWGFWaHdidGZwZE5hVWQ5Z0lnSWIxZnNhZ2daZ2dnQWdpZ0JheWE0ZERnSmJVaGhkYmNFZ3hjY2FtZ1phVGZNZ3dmT2J5Zk1mT2RXZEZiSWNXY1lkbWNaYTJjZGVsY0piQ2dGZFhkaGcyY0Vha2VzZlliUWQxYmxkcWVFYXllSWhpYkNjUmZvaHJnRGN6Y01lK2NEY2ljVmMwYUlhQWZRZnZlV2RWaHdjL2NBZHhiRmZtZ0ViVWc4aHpkUmZ5aGNlVGVEY2ljWmNHZUhnQmZFZkpoVWN5ZU1kOWRFaEJnVWdMZUljQWVNaDJiRGhpZ2hmRGJMZ3ljZGhUZ1NhbWQ4YSthWmdtY1plaGZjYUZmVmN2ZVdka2NjZmRjSGJWY3hhNGFkZEdmdGc2YlllMGMxZ3FiU2d3ZjlnU2VFZEdhUmNNZ0pnRGRNaEdlRmEwYWNiMmJkY2tlWmJGY1dmaGdvaE5jSmJ4YjRoMWdQYWdiOGJYZkFlVWVGYWZmZWZFZnRhM2dlYm1mbGVYZldkUmFBZFpjYWVBZ2tnV2JPZDBiTmZhY0llUWZCaHhnRWYwZlphMWJGZFJod2ZKZUZkMWZVYnBjTmZGZ1pmQmRhaG5mUmNYY2RoMWQ4YWVnRmZuZFJoaGhGZEJmcGVtYUhnMmdZZXllYWFHY3RhL2NiZzFicGZIY0hhUmcxY1ZhVWZuZ1JkcmNlYWphVWJNYU9nRWN0YkdoVWNnZDFna2VHZUhkZ2Q2YkZod2R4ZlNnTGZEaDRhSmRZaFJhaGhEY1dmV2FKaHliY2dIZUJoSWJRZzBla2dUZ01oM2FoY0RiWmUzY3BmMGFTZGtoUWZRY1VlR2FFZkxoRmd5ZnBjRmJSYWphMGhKZGNjd2FOZGNjUWVoY1ZoSWdVYkViY2RRZ1pibmVKYldmRmdXYm9kMGVIZGlkVmdYZFFha2dBY29lTWZ4YlpmZGVaYmdmbGJtYlpjM2JCZHJlVmdYYVJnYWVUZGpoY2FkaFZjVmZKYjBlYWQzZ3BmamVUZ1docGFMYkRlMWNKZURhTWJ3aFVlaWVOYlJocGRDZ0hnU2NwZy9kRWJoZEFieWZRZzFobGFpZWNjbmVCYXdlU2FFYk5lSmVXZm5jVmg0aFNoM2NjYTVhS2hBY1FiY2VFZ0Jhc2NwZVdhQWhZYm1oV2FCYkZkMWJiZ1hkTWJUZ1JjMmNnZlZmU2RGZEJjSGVFaEdnWmN5YVZoaGFWYnFjTWVSYUFoa2VFZ2tib2dVYUpiU2VCY0NmVWZTYmdjRmdaZkhmeGJMYmNnRmVWYnZoV2FrZWNiZGFIZVZhVmJTaGRjR2N0ZDZlWWMwYjBlcGVDYmxod2JYZEVkR2RZZU9nUGF6Y2dnVGRFYUVjeGQ2YWJmRGVoZUxmR2ZFZ05iWmRZZG5nSmd3YmNiRWdoZERkU2hWZXBnMWZlYUVldGIzYktmQ2Z3Z0RoRGFFaEphWGRhZkVoSmJlZFJoUmZFZlRiYmMwYmRmemJFYzBhZGFvYUZnVWNoZlFnUmZ4ZEJnbWZNYlJkZGNHYkxmM2VKZFRkSWRnZU1iTWVEYW1odGQ3YlBkQmRoYm1nRmZHaFphbWFZY1hmQmFWYmJlMWhwZUhnSGVSaDFlVmdFYVRjVWM0YVBmMmZOZVBmUGR4aDljSmZYZndmaGFtY1ZlbGJ4ZzJlVWZrZUlkVmFlYUhnWWFTZlNieGdoZ0RjV2hXY0pmeWhjYkRkTWFKZ0VkQWR4Y2FhSWZ6ZmNhQ2ZNYjNjcGY1Y1RmWGFNZVFjR2RXYWdhTGNSYVdoOGZSZUViMmY5YkhoY2N4aE5mSGhhYkJhVmdJZ0FkZ2NKY0VlTWF5ZUFmWWVGaFFmSmY2YkJoWGM1YVpjQmFsZE1mbmNKZWtnSmNRYWZmVGg1Y21mWmhtaEZjd2VWYldhOWFhZlJheGcwYWRjVmFWZkpoMGdhZHpla2FpY0hmaWY5aExjRGVRY2RjVGNOZzFlNWEwYWJiSGZoYkNiRmVYYmhoMmVFZmtic2hZZ1FiMWRsY2ljY2JuaEJkd2ZTYUFmQWVJZ0NiVGRCYzRnU2FTYUlkNWRPZmxocGZMZEVoZ2JOaENjQ2YwYVZjdmJFZFJmTmF2Z1JjM2VNYVRkUmgyYmdhVmJTYkZhQWRFZVVnVGNVZTNiVmZoY2NlL2VKZ2hoZGhtYlFnUWRaZFRnYWYzZXNhOGNHZUdmWWNVZVpobWhaZmhoY2JGZ1ZjdmhXYmtjY2NkYkhoVmhVY1JiTmhUZmdiL2ZZZzBhOGgvYkhnMGNsZGZjQWRYY0llQWFNYTNjUmhJZWFkQmVWaDRkZGhoYUphTGFHZ0VoTmJaZlllbmNKZXdlY2dFZ2hjRGRTYVZjb2JuYVBjUmQ4aGlhS2JDYWRnWGZTaHhlQWVUYWFhRWZKZWViUmVSZkVoVGRiaDBjZGV6YUVnMGFkaG9hRmFVY2hiUWdSYXhlQmhtYk1mUmdkZUdjTGgzYUpjVGhQaHhoSWNTYkZjSGJOY0xkRmJoZ2hjbWZGYkdnWmVtZ1lkWGJCZlZnYmUxYnBoSGRIZlJkMWVWZ1VmaWJZY3VnTGJqZFliZmhKYUVodGNHYlViZ2g1ZzZkVWZuZlpmbmJTZldmZ2hWaGVlSGNZZFNhU2F4aGhkRGNXZ1djSmR5Z2NjSGZCY0liUWJ3YW9oYmJKYmpkMWRMYmRnVGJnYm9jQmdCaHdhR2VEY1djb2VSaGJnMmE4Y1JoRWgyYzlkSGhjZnhmTmRIYWFoQmJWZklnVWFFYWNhUWVaZG5oSWRFaFVkRGU0Y25iQWR6ZGxoWGNNYkJoNGE5Y2FiQmRoZVVmSWMxZm9naGhNY2ljbGRyZWZoMmE5Y2FjUmh4YzBiZGNWZlZnSmYwYWFkM2RwY2poVGRXYnBkTGFTZ3hjZGNXZUpnUmJrZjZmSWFrY2hlb2FGaFhjaGgyZEVja2hzYlliUWgxZ2xkaWZjZm5kQmd3ZFNiRWROY0plV2RqZHdjK2dTaDNiOGgvYllhRmZjZkxmVmFVZDBhOWhXY1FkdGZ2YmVjUmJzZDdlVGhuZDFkZmhBYmloWmVTaEhmQmhoaGNhT2RtYlpjeWFWZWhnVmdxZ2NjbGZGYzNmVmQwYW9iV2FhZFdjRWRXZ0diR2hZZGNhTmNHZVpiOGFjY0ZnMWN0aFdmRWhjZFdoSGZRZmRhYmRlYmpjOGMxY0Rmd2NJaDlhRGFsZzBleGZVZVRiY2hKaGZkbmE5aGJnVGhoYlZld2RNZ3hnSmRXYUdiRWFKYUplYWQyYmxmYWZjZUVlaGVEZFNoVmZwYzFnZWJFaHRnM2ZlZm1ibGdYYkJnRGRvZ1plYWNBY3RjRmZiZ3hjRWJUYWJleGdwZ1piRWcwZWRnb2JGaFVnaGdRYlJneGNBZWdlSmN4YmhiV2FQZGpjc2hlY09iVmJjYU5hSGhqZDFkdGdGZGtkcGhxY0ZnQ2c5ZHZoWWdTaHRnL2NiZjFicGJIZkhmUmQxaFZhVWFuZFJhcmJlZGpmVWNNZE9kRWh0YktmVWJnZDFia2dUZFdhZGJ0YWVlRWNJaFZkZWZIaFljU2VTY3hhaGJEaFdjV2VJYTdlTmFuZUJlQWZTYjBkRWdNZU9iamJFZVBjZGIyZHBjcGJTZWtmUWFOZkdnVGVvYkxiR2NUY01oUmhBZzJoOWdaaGNlMGVGZU9nYWZCaE5jT2NVaEVjOWRDZlplbWU5ZFdmQmFXYU5hK2dVYVNhVmZYYVZhQmdZZjlkS2JWZTlhTGdhZkZkZ2FqYktkQ2NZY2tjSGhXYVpmVGVSYTBnOWVZZEFlUWdjZm1oSmFYZnBmaGdUYTNkRmZoZERnMWFJZVFmWmZFZXhmMmJkZ2xlSmJDYUZjVGRFYndjRWFrZE1iUWVTZndjOGJ0Yk9nemZSYndkV2FFZU5mVWNSZzJhaGU0ZEFobmhjaG1kTmZWY2NoUWNFZkFjZGVvZ1hmd2QwZm1kUWVoZjBlamdBZWpmMWNVYkVjeWRBYWNnU2NGY1poQmNFZEdnNGQ3aFZjZ2FoYnFjSmZoZWtiK2JCZUViUmdhaExkQ2U5YlJjVGFDZjRhZGFhZG1mWmV4ZGNoRWZ0YnliV2NnYTRkVWdGYUhnOWhTY2RlR2d0YzZhWWYwZDFkcWNTZndoOWNTYkVnR2dRaGVkTWJ5Y0loSGFFaEZhdGY0ZmRlQmZCaFFmTWZrZU5hWmFZZG5jSmN3Z2NnRWJoZkRkU2VWZG9jOGNQaGtjdGQvYmNobWdFY2ViV2hRaDRiSGFkZWhnWmFGZ2ZleGRnZ2ZkYmgwYThhaGNFZzFlbGMyZENlMWJWY1FhVmJ4ZWxncWNjZ2dmUWZWYWRoR2U5YlJlUGJsZzVlRGdGYWpkc2VrYlFia2EwZTBoV2dtZFpha2dZZTJhdGEvZ2JnMWNwYkhlSGVSaDFhVmhVaG5jUmNyZ2VnaWJVZENlT2VFYXNmSGZCYWhkQWQ0ZEVoSGVaYStmQmNraEliSWRlZkhoUmJIY0hlMWE1Y2JkV2gyZnRmcGFjYUdidGRJYlNobWNOZmFlZGdYZ2hhTGNkaDNocGNwY1ZkMWZrYlFkR2hXZGhlWWFFZ2lmWmJGaFVoQ2hkY0hkZWQwZGRlT2RhaEVjNWRpZFVkRWJjZ1FhWmFuY0pmV2dGaFdocGJ5ZlVjWGhkaFhlU2ZoZlljcWdJZ0VhVmhkZVphaGZZaHVlSWN6ZWxheWdUYjBnVmZhYlJkeGIwZWRoVmNWYkpnMGVhZDNmcGVqaFRiV2JwZ0xmRGYxZUllUWFOaGdia2VpY0lid2ZBY01hRmFTZEpkK2dSYWdnTmNSZEVmRmJWZ2loSWFIYnhmd2FBYVVocGFTZWNmSGRWYzRhU2YzZWRkNmZhZlZhZGZaZkVkQmNsZW9hQ2IwY1ZhdmVVZGxnSWU4ZUFnbmVNZFJoRWZqYnhjVGdVZ0ZoSmJkZU9hbWZaZnllVmRoaFZmcWFjZmxjRmMzZ1ZjMGVvZVdhYWZXZUVoV2NXaHljZGJIaEllMmdaZGpiSmVRZ0VhcGZWZzFoOGJmaEJlM2I5YlNnZGNHY3RnNmdZZDBnMWhxZ1Nod2U5YlNhRWZHZ1JlTWhkY25kWmVTZkVoRmVBZXNjSWYwY0FlRmZHaERmTmVSZk5oamRvZjVkSWgwYVJkRGFHZDFhWmgxY01iVWhKZHNkVWRHaGxnWGVXZVJlQWRaZWFhQWN0ZEZjYmN4Y0VlVGdiYjBhZGZ6YVVoQWdZZzdnVWNFY2hhU2dCZGtmTWhsZU9leGQ4Z1hlY2NGYWhhUmFkaDFoZGZLYUZhbWJsZ2hhRmVoaGhlbWJGZ0dmWmdtZFljWGdCYVZkUGZSZThhVGZTZUVnOGJiYlVmZ2RkZ2poTGJpZnNmRWdPYlVkY2RQZ0FjQmZ4aGtnQmRYZTlodGhlZ0VhSWNWaGVhSGdZZFNkU2J4ZmhmRGZXaFdiSmh5ZGNjSGNCaEllQWhBY2diSmhNZUhkaGRKZU9oemRzZjlkSGFoYmNjQmRHZzNmSWFoZVJnV2Y4ZlJhRWMyZTlnSGNjZHhmTmJIaGFmQmRWaEljVWZFZGRjVGdKYnllRWZUY0ZnV2dnYXdmR2REY2thV2FHZ0VlOWdyZWVmemZ3YVlmWmJoYVJhbWNaYW1hRmd3ZFZjV2M5ZmFmUmN4YTBlZGhWZFZhSmUwaE9lVGU4YzNlR2NEZWdkRmZEY3poc2JZZU1oQWJRYy9oSmRWZzVmQ2RSZzNhUmYyZldlMGNJZURlYWdWYmxmaWdjZG5nQmJ3Y1NjRWdOZUpjV2huZ1ZnNGVTYzNhZGY2Z0thaGhZZktnVmdSZWxicWdTZFFiUWI4Y1ZlQWJWYjdhUmNXaGtjNWFSZDJjZ2ZWYlNkRmZCY0hoRWNHY1pjeWRWZmhiVmFxYWNkbGdGZTNmVmV4aGhjVGJQZFRmUmZFYlZjbWNaaGdnYmZqaElncGZPY1FoWmZqaFdiaGJVY1JjSGNSZ3hhYmhiYjBmRmI2aFllMGYxZXFjU2R3YjliU2RFZUdkUmZNZmRhbmdaZlNnUWVsZVlnNWNKaFZiZGFMaEdmaGJZZGFlTWdXYkJneWJhZW1nSmdEaFNnVmdwZzFnZWNFY3RhM2dlYm1lbGZYY1dlUmRBZlphYWNFZWdoRWNQZkZhUWFUaGJiUmFJZ3dnUWhFY3BkNmhGYjFnSmQ2ZFJheGVCYm1kY2NsY1lhVmZhZW5mSmNSZWRjMWVkY0tnRmJtY2thaWZWYTBjc2RqaEZkR2JRY3piTmNUZ1pnRWdlZVJoWWNDYkhnd2hkYy9lVWhuYVJocmhlZm1jTmZOZGFna2ZzZFBnVWVoY0Jja2FUaEhhWWIxYUVmeGhGZ1FoZWdIYlJmSGRIaDFoNWRPZlNkSGhRYithTmVYZ0pmU2ZhYVVlbGZhYmRjWGNoZ0xoZGczY3BicGdWaDFma2FRYkdjV2NnaExhUmdXZjlmRGdWZ2pmc2VTYUlkVmIxZ0hhRWRSYjBoY2NHZ0FnNWhEYmFibmRJaEVlR2RXZm9oN2dXYkdkeGU5Y1NhaGJaY3BiWWVSYVllWWZaYmhhUmJtZVpobWdGaHdiVmJXZjhnZWFBYWxndGZjYUFhQmY0Y2diY2FWZkJmamNUZFdhcGRMYkRiMWNJZlFjWmhFZXhoMmdkYWxiSmVDZ0ZmWGVoZDJkV2d3ZTBjWWhTY3hmeGFyY2NmaWJRZTRmR2ZnYndoZWRXY2pkc2Q5YUhjSGNjYk9hTWNBaGNhY2FkYlVhc2Y2ZlJmQmFkYm5nRWEyaFlhaGREYURnMWZjZUVkQ2VZZFZiRGhSYjRlRWdYY3ljSWQ3YkdoRmFKZndiY2VsZE5hM2ZYZUVlcGJDaFllSGZvZDhhR2VHZ1lmVWhaZm1lWmFoaGNkRmZWZ3ZmV2JrZWNlZGZIZFZiVmdTYmRoR2dNZ3VmWWgxZUJncWVRaDFkdGNTYkdnMmdSZk9lZGRIYTloY2ZGZmxlb2dVZE9jVWdVZU9nU2JpaEFoWWVNZlRiZGY0aGVhVWZGY1BhU2RWaElmd2hlYUZkWmgzZmVhM2JsZ2VnUWZqYm9hWmFhaEFidGVGZmJieGZFZFRkYmMwZmRiemFFYTBlY2IxYlBkMGZoZVFmUmV4ZUJmbWNjaGxhWWRWYU5iMWVoaFJnZGcxaGRjS2hGZm1ibGRoY0ZibGY0Y3pmV2NpZ1VieWRLYURjOGRiaGJnd2YxY1BiU2RSYUZmVmdBZEhnaGVyY01nMmNwYk5jTWdXZ0VkUGdVZ2hnQmhrZVRoSGJaZjJiVWJraEllVmZMaGpiZGJBYVNlMWMxZERlUmFHYUlhbWhDYXlhSWExaFdiR2ROZ2FkZGFYZ2hlTGVkYTNkcGFwZFZkMWRrZVFmRWdUYXhhd2NGZHhmSWFSZ0RjbWE4YVRoQ2FGZm9mNmVZZVJobGNJZ1djQmVOZHJmTGF3ZTljV2hDZkdnb2QzZFdkR2d4ZzllU2doYVpmcGZZZFJoWWdZY1pnaGRRZzdhVGZHZkZod2VWaFdhOWVhZ1JoeGEwY2RoRWN3YWNjNmZLZUNnNGRxZ0FmaWFSYkxmV2JWZHBiRWdhZ0Vnd2hrZWVobGZJZkxnR2FYaGdmemdIY2thdGFYZVNhbGRraDVoV2FIYUJkd2RTZkVjTmdKY1dhbmJWYjRjU2MzYWNiemdMYjFjZGdSZEFkQmVsZTFkRmdsaGhidmdSYVJmMGFqYkFoamcxZ1VnRWJ5aEFjY2dTY0FkSWhDZ1JkRGRNYWdiR2NCYVZibmhZYjBlcGJkYVZjMGVvZVdiYWZXZ0VhV2ZHZEdkWWhVY1pnaWQ4Ym5lY2ZGaDFoRmVXZGtnY2NkYUhnVmZWYlNjZGFHY3RmNmJZYzBlMWNxYlFod2gwZEJlUmFEZlliRmJPZURoRmdRZFFhZ2ZoZmxkZGZrZVljU2NTZ0FmWWFXaEpmSGhJYzViV2ZrZWhkRGRTYlZjcGIxZWVoRWh0ZzNkZWZtY2xjWGRXY1JmQWhaZ2Rmd2h0ZE5kWmQxY1FhVGFjZGtlY2I2Y0dja2N0Zm9jSGZRYkZlUWdXYWhiQmIyZWVhMWU4YS9kYWJuZEplUmVkZjFnZGFLaEZhbWVsYWhjRmVoZGhkbWhGZ0doWmc4YVlmVGFsZVZnY2JWYXBlVmVEY0FjbGRDaFJnbWZ4ZDRkYmhIZGRhYWVRZEVkc2VQaFVjaGZCYmtoVGFIZFpoMmVVYWtkSWFWZmVhSGNZZlNhVmZCZGhiTGRFY0doSmZ2aGNmR2VKZFpjVmIxaDVkT2FiaFdjdGFkaFlkMmUxZ2dhZmZWZ2toUWZHZFdkZ2dMYlJlV2U4ZlJlRWUyZTliSGVjYnhmTmFIYWNiaGhWZUZnUWNsZVlnRWFjaFdjWmdPZEJnbmJ4ZW1kU2hYZ2RiSmdTYmxiOWNwZlpjeGNBZVllYmhsYTFkbWZlaDJkRmY5ZVJkM2g1Yk9lVWVBYWtlRmRSaGtlUmdnYmNnM2hOYnZjWmQyaHBhTGNEYzFnSWdRYVphRWJ4aDJiZGRsY0pnQ2dGZVhoQWQvaEVmbGFZZFliU2FCaEJmcmFmZ2xmcGh3ZFNkRWNOZkpoV2ZuZ1ZiNGRTZTNkZGU2YWFnVmdjY1FnUWgzZ2NicGNaZVVlMGdtZUdjQmZOY3BmUWJYZU1nYmFEaG1oZ2VJZFNjQmU5ZUhkRGEyZFpnaWNWZmdnOWhxZEpjbGQ4YTdnRWFnZlJhUmVQZlNka2VXYUZoV2hZZUZjYmEyZ3BiTGZjY0ZiVmd2YVdma2hjYmRiSGFWZVZnU2FkYkdndGI2Z2NmMGExZDBhU2QwY1plU2RGYm1jSmZNZGZjamQ5Y1NiWGJ4YlVnc2FlZUZmNGVPYlZlZ2FRY05jS2NuYkphN2ZjYkFmRmZLYlJiWGVCYzFmZWFFYnRhM2JlY21mbGJYZVdkUmNBYVpmYWhBYXNhTWRiY3dkOGNPYmJmeGZOYTloWGd3ZklhbWJVYWhid2ZZY1RmamFwZ21oY2FsZFlkVmFhYW5lSmhSZWRkMWVkZEthSGUyZWtlNmRQZUJkaGNtaEZmR2VaZW1iWWZYY0JmVmhiYTFmcGhIZEhkVmZRaFRkVWhuZHdja2VjZjJjTWRmYkxkeGc5ZGFlQWFGZjVoa2VRaFdiZGF0YmVkRWJJZ1ZiZWNIZ1llU2RTZnhjaGJEZ1dnV2hKZXlhY2NEZ2xhSWJYY2tla2FPYWVmemRRZ09jT2RUZzBoOWdIYjFna2ZkYUdlWGZrZ1FkYmYyYThmUmNFYzJmOWNIZmNmeGdOYUhlYWZCaFVlVmdVYUFoSmVjZE5hVGFkY1dmWGdDaHhmeWRXZ1dhZGNYZlZjQmdZZmdkYWNCZlphRGZUYkJiUmJtZlpkbWRGZHdkVmJXZDlmYWVSZ3hnMGdkYlZoUmVzZHloYWMzZUphaWdBZm1nTmVMZ1hhUmdkYkVjTWFSZDRjNGdkaGxlOWJUYkRhbGVKYzJoRWFrZXNoWWdRZzFjbGdpZmNkbmJCYndlU2JFZk1mQWRXZ21iaGc0YVdmMmh4YVFkYWFWaGRnWmZFYkJmbGRvZ0NmMGZWZ3ZkRWVVYjVhRmZSaDNkTWVUY1JkMmVnZ1ZiU2dGZEJjSGRFYUNiOGMwYVZmaGQxaGlhY2VBY0liamZCZFFkTmNZZUxobWRNaFdnQmhYZHNiVWRNZGpjOGR4Zk5kUmRvZXBhV2hoYVVlZGdHaDFiTmZTYmZmRGZsaDZoZmZrZzBna2dSZVVoa2VBYlhheWJsY0VmSmdIZnBjU2JCZXhleGV4YWVkaGFJYkZhRmJnYW9mS2FBYkNjY2QyYU5oZ2UwZVJkUWFRaGhlOGRjY1VnSmZkZWVmbWVsZ1hmV2hSY0FnWmJhaEFmdGhGZWJkeGJFaFRlUGdRaElibmNSYWhmVWVtZUZhVmhoZVFiV2FnZDFmN2VjaGdoUWhiYkphamRjZmZoTWZBZE1jQ2JGY25mWmFoYUdhd2JsYW1iRGVtZFlmSGZhZlNoUmNaY2Jhd2doZUxnSGdWYVJlWmZVZ2pmRmVuYWVnaWN4aEVkY2NXZUVnUGFVZ2hlQmFrYlRoSGFaZzJmVWFrY0lnVmZNYVRlQWdTZFFjeGVvZk5jRGRDYzhmd2ZOYlNkSmJLZlFhMWVSZkhkZGNTY3dhU2ZKZHpiOGJtYUVkVmFsZUNhRWZFYklkTGFSZFdoOGZSZUVnMmE5aEhlY2Z4ZE5kSGhhZUJjVWRhZ0ZjUmROY0ZoTmJEaHhmV2dIZVVmQmd5ZFVmWGJkYlhoU2NoZFpocGRZaFJkWWNZY1piaGZSaG1kWmRtZGtoaWhWZFhiSmdhZlZiUWJnY0lnVmVWYlJoMGFPY1hhTmR2YVpiMmZwYUxjRGIxYkliUWJaZUVoeGcyZmRhbGJKYUNkRmNYYWhnMmZYYUViVmhzYk9iaWNrY0hhRmZnYzhkUmhPZGpjRWJvaElkd2RvZUxkUGJnaGNiS2NCYmliVWh0ZkVoQmU5Y3VmSWhVZ1ZndmJFZVJmTmd2YVJlM2ZNZFRhUmMyZWdmVmZTaEZjQmhIYUVhaWFBZ25jR2hGZ1lhK2FPZHhlNGQ1Z1ZiVWhvZ0xlZGVHYkZmQ2ZRY1RlWmNSaEtmU2VCYWhoQmRSZXdnaGREYWxoOWI4ZVRhd2VjZlRkTGJXZFVocWhNZFFhSWYrYUJmRmFzYUxhUWZDYkZoQ2RQZXphZ2hXZEJjMGIwZ1hmTWZEZmhjTGRHaEVhTmNaaFljbmZKZXdmY2RFY2hnRGFTYlZlcGcxZ2VmRWR0YTNnWmNXZWtlWWJjZnhkQWJaYmFiQWZ0YUZlYmJ4Y0VjVGJiZjBlZGh6YkVlMGFkYW9lRmJVZWhjUWhSY3dlOWRtZUJmeGQ5YmJiUGhtY29md2VKZlFiVWJMZlRjMmZjZnhhUmNGYWNieWRXZXpkSWEvYk1hVGdWZGJmSmdoY1FhRGNXZEVlVWE2YUZjSGdvZW9hT2d5ZzhhQmRZYWhjOGVEaFVja2RKYW9iVGREZzlkL2ZlYkVoSWZWZWVkSGFZYlNiU2F4ZWhjRGVXYldnSmN5Z2NnSGZCZkloUWIwZGxkYWRkZldkSmVMZEFnamhNZ25oQWMwYkZjeGdTY3pncGRLaEhiR2ZGYkJiUWFTZUFkVGJQZEVkY2JlZE9lRmhCZUdnSGdBZVpkRGdNaGhoc2JZYlVoU2c4YXFmUGZqY0ZkWmdDYlZhY2NsZ0xoUmg1YU1mYWVoZ1FmMGdhYW1mRWU1ZVhnRWdWZGFmUmd4YjBkZGJWYlZmSmcwY2FmM2ZwZWpmVGVXYXBjTGREZDFoSWRRZmZia2F3Z1hkZmhnZVpiT2hGZFFnTWJrZmJhMGdjYVlmQ2VsY1ZkaWJOZzNneGJ3ZkJnMGVwZGpjV2ZuZlZoNGZTYzNiZGg2YWFjVmNkZVpjRWRCYmxib2JBZmxoNWdGZEVlUmFOaHZmUmQzaE1nVGNSYjJjZ2RWYlNkQWhRZlBlUWFpY2thbGhWYWxoc2V2ZkpnVmZFaERoRGNoaHBjVGNEaERhTmdFY1ZlemNRYmNmWmZEZEFmZ2dQY0ZjVWFpYkRleGRSaEpiSGNSY2NhWGJkZURhZ2F1aE1iUWVRZmtkRGVBZE5hU2dYaGplRWZCYU5lRGRNZEFjUWFsZ29hcWhkZ25oQWVlZ1hjZ2JVZ2NjTWNIZ0JmNWVhYzJoSmVEYlNlVmVwZTFhZWRFY3RlM2hlZ2pkUmE5Z1djUmRBYlpnYWVBZXRnRmJiZXhoRmVWZ09hZ2ZrYXdiUmN3YzRjbmhXaDBoZ2V4ZFRiMGRSY3FlY2FnZFFlWmNhZ2pldGRkZmRoeGNKZkdiRmJpYlpkb2NGZ2thTmJNZEZoR2RaaG1nWWVYZkJoVmViYjFncGZIZkhiVmdzYUFhSGFEY2NhL2NNY3lid2REZ2FnZ2ZNZ0hnQmFoYXhoa2NIY25nOWcyZUNiV2dnY1ZkZWNIYVliU2FTYXhkaGNEYldjV2VKY3liY2hIZkFnYWhCZmhkMGJQZ0pkemZaZUxjWmVuY3BlMGRTZmtmUWhRYlZnMmRnYlVmUmJUZ3RicWhRZ1JjSmFIYmFlUmJNZVRlWmRraGNiTmdFZFFmTmVsZERkemR3Z0NjQmdIYXdlUWZOZ0hoOGJGY1NkaGZ4Z3BjTGZ4YjhmRGVUZEJjUmRtZVplbWZGZXdmVmVXZjlhYWZSY3hoMWNBY2ZjMWhKZTBoYWMzYXBjamhUYVdncGdMY0RiMWFKYkdmSmNSZDVhMmRPZkZkSmJmY0ZmV2VsYjZkT2hFaHNiWWFRYjFhbGVpYmNlbmRCZ3doU2FFZU5mSmJXY2liWmQ0YVZlbmVjYnVjWmZ4ZnNnY2FYZ2xjNGI4YVFhMGNsZUZiRWVSZE5odmRSZjNmTWRUYlJjMmhnZVZoU2ZGY0JlSGZVaFdhWmh2YVZna2JkYWtnUGVoaFFkNWNFZUJoNWRlZmNja2hzZVdiR2VHZ1lnVWdaZW1lWmVoZGNhRmJWZ3ZlRWZ3ZUVhZGZGY1hmOWZTZmRiR2V0YjZlWWIwaDFmcWhTZXdkOWJTYUVoR2VRaGFlT2FUYzhhV2NRZGdhVmg0ZGRld2E5ZFdkR2JBY1pkWmVaaEhiUmhhZGNiRWdoZ0RhU2dWZnBhMWdlZkVidGYzYWVjbWNsY1hnVWdSZmhoY2JhYkJlWmhGZUhnRWVWYUJmSmVnaGtoMGFHaHdoSmJoZUdkeGZ3ZmZhS2MxYzhneGFOZHdiUmMyZ0theWFFZlVmZmUxYTVjRGZHYmtlTmRoZ0ZjaGhoYW1nRmhHZFphbWFZYlhlQmdWY2JnMWhwaEZhU2JGYzRiR2JRYUhjWmhyZFphM2M1ZFFhYWdnZzRjUGNEZWtoeGdPYVRnSGdaYTJjVWhrZkljVmdlaEhnWWVTZlNleGJoYkRjV2VXYkphd2dKZVRlTWhiYVRmbGJ0YlliZGhXaFZmV2NhZm5jb2hzYlZjd2RWZ01hTWcyYWdnTGRSaFdlOGVSaEVjMmc5Z0hiY2h4Yk5lSGRhZUJlVmZJYlVhaGRKZkVoSWZHZ05nQWdXYVNiOWh3Y1VoV2dwYktlVmh4aFlkc2VZZ1VhcGZFZFRoQmFSZm1hWmhtZ0Zid2FWZFdjOWRhZFJmeGEwY2RiVmJWY0pnMGVhZ1NhOGYzaENmMmdkYWFnR2dSYTVhVmhaYmtjeGdyaGFhMGI5Z0NiVWRIZUZnY2hFZGtnc2VZZ1FhMWdsZGliY2NuY0Jld2NTZUVhcGVKZEFoVmc5YjRnU2MzY2RkNmJhZ1ZiZGRaZUViQmZsZW9lQ2QwaFVkbWhWZHhjTmFuZUVhM2gxZmZiQWZpY1poU2ZIZUJjaGNIYkRnR2NaZGdhVmVrY2tlMmFjZWdmTmE1Ykdhd2Q5aFllTGRqY1ZnZWNHZ0hhb2dVaGRnR2c5ZWhkSWZoYkFnN2NEYXhkVmJUZEhiVmJoY0RmYmIwYUZlNmRZZDBiMWhxYVNkd2g5YlNiRWFHZ1JlTWdkZW5oWmhhZURmQmNWYmxmZGhnYkJmQ2dGZUVkTmFSYk1lWGdKZy9nYmFVYWhkUmJRY0ZkWmQxZmNhQWdwZzNjZGJYZlJhWGZTaHhha2NWaGFkQWdNYU1oYmR4ZDRiT2ViZjFhVmM2Z0NnR2IxZm9oRmVVZ2hjUWJSYnhoQmJtZ2NlbGdZYVZhTmIxY2hoUmhkZTFkZGRLZEZibWJsYmhnRmFoZGhobWFRaGlhY2YwZlliU2JWYk9iUmRWZHBoSGFIaFJnMWdWaFVlbmNSZ3JkZWVtZ01mRWNMZ0Vlc2RIZUhiUmdsZWtjRmMxZXhkMmVVZGtnSWhWZmVmSGdZYlNlU2F4YmhoRGFXY1djSWdrZ01hU2JKZ0loQmdVYmxkSGdkZVhhVmVhY2JlRmRCY3BoVmUxZmtlUWJHYVdkZ2VMYlJhV2Q4YVJlRWYyYzhiQmZQYkVkRmFIY1ljRWVCY0lkVGdVYmRhWmhmaFhhSWhGZkZoWGNSY3lhQmFHZnhlWGNIY3hlMWZpY2FkRGR3Y1lmWmNoYlJmbWZaYm1kRmR3ZlZiV2E5ZWFlUmd4ZzBjZGJWYVJic2h5Y2FhM2NJZXJhUmJUZjVkSGhEYXdiY2FaZlphRmZGZnJkYWQxaEliS2NIY1NjcGc2YkVja2FZZ0poUWQwZFJkL2FiZTNmQWIyZlNmRmR4YkplU2RuaFZlaWNTYXliSmQ2Y1phRmFjZ2ZiR2ZSZEJib2JVYUdmOWF2YkViUmdOZnZiUmIzYk1hVGVSYjJiZ2hWZlNnRmJCZkhkRWNHY1pneWNIZDFmTmZxZ2VnbGJsZDZmUmNrY29kTGVkZkhnd2JXYlhjbWdZYVNmWWRHaFpicGNOZ2xjVmF5ZldoaGdJaFVlRWVWZVVhSGJkY0djWmc2ZEplVWUxZmhhU2F4aDVkU2VEY1hobGZSZmRkamZkYWJoU2h4ZFVmcWFNZTBoWWNlZFNoZ2YxZlpoSmVIZUpnNmdjZEFjWmRZaFlmMWZwZTFnZWNFZ3RmM2VlY21obGVYZ1dkUmVBY1piYWZBYXRnRmVNaGhkRmdXZElheGdRYTJiRWEwZXBoNWJGZlVkbGZOYldmaGhBZGdhY2JsYkFmVGNhZ25mb2hFY2RlMWFwY1hnRmNqZXhhaGFHZXhnZ2NnZUhiV2VwY21hYWVUY1pnVmhjZ2xmcGhLZERmQmRSYU9oZWZIZFJjcmZlaG1oTmROYWFoa2FzYlBhVWNoZ0FiNWNUaERoTWU2aEFkUWdjYy9hZWFIaFloU2RTZHhnaGJEYldlV2ZKZ3liY2FIZUJoSWJCYVFkWWJJZ2RkWGZBaENmZGEzY0ZlcGJGZGxna2dPZ0dlVGRzZUxlUWQyYWtnUmdHaHlmWmhIY2JkaGJNaFVhYWRCZGhjSWNFZFVnNGNjZFphaWFkZldoQ2hHZW9jN2NTZm5hY2ZDZFNmZ2NoaDBkWWhRY1lhRGJaZmtoRmNyZWFnMmdoY3dkRGRrY1ZlYWFSYnhoMGFkZ1ZjVmRKZzBjYWEzYXBnamhUaFdlcGdMZkRheGVSY2ZjTmZrZHhoK2JJZ0JoTWZRY0ZoVGFSaDJoRGEwaHNjWmZVYzFiVmFpZk1lWGdCaHRnU2dGZ05mU2dXYmpiUmU0ZVZhWGJjYzVkY2RsYWNoYWVHZHhoSmZoZklhVWVWZXZlRWJSZk5jdmRSZzNnTWJUZFJhMmFnZFZoU2ZGaEJkSGRFZUdjWWY3aEVmQmZWY2lnT2RsYmtnamZXZDBhcGZEZ2FoV2hvZFdlV2UyZDhlVWdaZDNodGQ4aGNhQmExZm5nQ2ZFZnNhZGRYZ2xneGViZGRiRGNCZlFnWWUwZjFmcWhTZndjOWNTY0VkR2NSYU1kZGZuZ1plU2dRYWhoVmc0aGRoaGhKZ0xhVmVFYk5nRWZZY25hTmhoZ2FhMmNKY0RnU2NWYXBhMWZlY0VmdGMzZmVnbWZsZFhnV2FSZkFjWmdhaEFkdGNGYmJmeGZGYlJkUGdRZklkeWZXZkZheGVDZkZjVWNoYlFhUmJ4Y0JibWFjZGxkWWNWZmFmbmhKYVJmZGgxZmRkS2RGZ2pkUmJMZUZoaGZoY21oRmNHaFpobWdZZ1hjQmhWZ2JhMWVwaEhmSGJSZjBlY2RGZUhjUmJqaE5kbWNwZk5kT2RBYTVnYmVCaDBiSWRxZ1RmQ2NOZHRiZWRFZElmVmdlZkhlWWVTaFNoeGVoYkRjV2ZXaEpoeWVjYkNjMWhpY1FhMGZsaGFiZGVYZGhiTGNkYzNjcGdwY1Zmd2d0aFZnVGJUYjFlWmdDaDJmOGZjZ0FlbmJSY3RkY2F4ZE5kSGNhZUJoVmdJZVVjRWZkZE5oVGFIY0pmV2JGZ1dhcGF5YVVlWGdkYlhkRGJFZ01obmVJZGtoSmVSY0tkVmhwZG1kQmhXZGtoa2JXZVdjOGJJZlNoeGMxY1ViV2hWZElheGZZZm5hb2Q0aFpiMmdwY0xiRGcxYUljUWRaY0VieGcyZ2RnbGVJY0xnRmZXZlZiMmhmZ0JlNWRWZ0FhUmd3YndhZWdqY2xkNWJTaEJhOGRWZVdnbWhWYWpnWWdYZGRmNmNhZlZlZGJaZUVmQmZsZW9kQ2EwZ1VjNWZVZ0VnRmN2YUNlSGRNYk9nUmh6YXdiYmVCZ0JlVWNKaFZkemFJZzZjVmFoYmhjcWVPZjBkcGJkZ1ZmMGZvYldiYWZXZEVoV2JHZkdlWWhVZFpkaWFOY2hoYmQxZFZkbmVVZ2dnSWRkZUFhRmZVaDhjSWJTZ1lmNGVKY2hnOWhpY0RjZ2ZaYmJkSGRHYVFnSmZkZG1naGdTaERkUmNWZStiY2VCYkplRGRYZVVlTmFFY1lmamQxYjVnZWZVZmhjWmNTZFZlSWJ3ZWVlRmRaZjNiTmNXY0JmTWVjZ3hnQWJaZGFjQWJ0Y0ZkYmZ4YkVnVGViYzBhY2dsZVViaGdWZ29mWGdVZ2hiTmZSZDBiSmNvZFBjaGFOY2JiTGNTaFliWmJiZUhoMWNLYUZobWdsZGhjRmhoZmhhbWJGZkdkWmFtaEtnRGNaYlZlWmh4ZUpoSGFHYUJiMWhIZlVhbmVWaDJkWmMyYk5mZGZZZzBjdGNiYUdia2dJZHJhR2IzZFlnNGVGZHhnVWJWZERnQ2I5Y0NmRGFuYzBoUmRDZnlmMGVnZ2VmSGhJYmhkRGRSYjhnYmFPaFRiRWhQZGRmemFJZ3NiRGMxZmxhRGdUZ1RhcGhDZENoeWhnaFRiR2VuZlJldGhjaHhlTmFIZmFjQmVWZElkVWVFZGNnUWNaZ2pnZGhXZ0NmMmFvZzZkVWFYZGhjWGJXZkJoWmN2ZFpkeGJZZFFkSWd4ZlJnN2NaZmlnbGh3ZVdibWc5aEljVGVnZllnM2ZWZlZoSmMwaGFhM2NwZ2pmVGhXaHBlTGVEZnhhUmNmZ05ia2V4YitmSWFCZ01iUWNGZFRjWmQyZURoMGVzZkljV2dGaGtnbmNjZW1nNWN3Z0JibGRoYkpnVWNYZjRkMmhRZW5mY2RoZFFiMWJkY1pmRWJCZ2xob2hDZTBlVmV2Z0VmUmNOYXZkUmN5ZFZoU2ZGY1dnaGhHZFNhRWExZUhjUWZDY2NjZ2dCZVZjQWNEYlBnQWdWZC9hQmdVYVJhRmVQZENjTmJGYVRnRGdRYWNnZGVHZVpmcmhjZ0JkdGVqYVdjbGZVYlVhRWZWZVZiRGVZYm1nSmJoYlNlVWYxYnFlU2h3YjliU2FFaEdnUmRNZWRjbmhaZVNlUWRsZXdoK2RkZmhmb2ZDZFNoeWQwYVllRGZIYW9mamFlZ1VmRmFEZ0dmeGc4ZGhoTGdSYWtnNWhlZGlkZGVNY2NkeGRBZ1pjYWhBYnRkRmViZnhiRWRUaGJkMGZkZnpmRWF4ZU1nVGNYZ0VnaGdiaFJmMWc0aGJkY2NrZHNnVmdPZVdobGI3Z2RoMWRkaEtkRmZtY2xlaGNGZmhjaGJtY0ZjRGR0ZU1oWWVYZUJnVmNiZzFmcGJIY0hlUmUxZVZlVWJpYllmdWVMaGphWWhmZUpmRWh0ZEJjU2ZUYnBha2FUZEhkWmMyZ1Vna2RJYVZnZWNDYnNoNGhTaHhkaGREZldhV2ZKY3liY2VIZEFnT2VGZmdoY2NaYklkVGdFYUVoT2FYaG9jcmZYYndnMGdjYkdlVGhvYUhkUmdTZ1lnZGhFYXlncGVPZGNoMGVoZnRoYWdCZ1ZlSWFVZ0VjY2NRZFphbmRKZldhRmFUY2djM2dCY1NiSWRGY0JoQmZZaE9mYWNYZjRkUWFOYkJoaGJtZE1hbWY4YzhnRWJDZEVnZGFFZjFoVWhkYVdmRmVJZzlhWWJuY1pnamVHaFdnWmZMZFJlbGc0ZFFkSWZVZ1ZndGhYZkZiSmVDZEZnWGNoZDJkRWhrZHNjWWhIaG5lTmFpZmNhbmZCZXdmU2FFYk5oSmZXYWpnTWd0YUJlVGJRZnVjSWJCYmdiWGdFZEhleGhnY1hoMGRsZXZnUWJ4YjlidmhEYm5hOGhUaEFibWVFY1ZmRWMzZHBiSGFFZ0dlWmJ5aFZnaGRWYnFoY2VsZUZoM2RCY1FnOWJDYlBiRGFOYllnR2JBZEVjY2RFZkdiNGZ6YWVmVmJsaHZmRGhrZ3NiZGRWZ0ZobGRTZ01mV2RKZWhkU2JVaDFkcWZTYndmOWFTaEViR2RSYU1iS2cxZHhhU2dRZ2hhVmQ0ZmRiaGNKZkxkR2JBaFVhTWNMY0RkRWVrYk9jUWFjZ05lU2dTYmhnOWdMY0VnZGgzZktkR2JWZVhnRWdCZndjWmdMZ1FjSmJGY05kRGJzYVRkYmQwZGRmemhFYzBoZGNvaEZiVWJoZVFhRmNWZVVkeWdKZ3dkUmViaGFkaGVkZFpiSWExY3RoS2ZSZUdoVmRoYlhjeGdSZG1kVWJXYzljOWNTYTNlQmVWZGJhMWdwZkhnSGZSaDFoVmJEYjFoNWNyY2VkbWNOZk5kYWNrZHNnUGhVaGxmWWJ4Y0FkamRVZmlmR2R3YzFjYmRlYkNmNGJhaEhmeGdSaERoQ2YyZDVmeWhPZlhleGFJaEJla2JCZ2FiTGhsYUpkTGNkYTNocGZwZlZoMWZrZ1FlR2FXYWdhTGhGZ3licGRGY1JmamIwZEpoY2IzaFJkUGJFaGhiMGFhZldmVWNzZlFnTWhuZzVhV2VYZ0doWmh5YkZiSGU1Z01lWWNCZVphcGJZY1JmWWdZZlpiaGdSaG1hT2YwZnRid2dWZldoOWFhZVJleGcwaGRiVmNSYlFhaGVKYVRja2UzYkJjQ2FVY0ZjRGF6Y0FlWWVNYUVmQmUyZEplRmE1ZENjWGhIZVJjMmdWZzBhSWJZZEdkSGZOYWljY2JuZkJld2dTZ0VmTmRKZ1dnbmhWYTRhR2JUZUlodWhQaEFjVWdYY0VkSGU1aGdlWWNVYzBnOWdIZlJhTWg3Y1NkVGI5YVdmQ2JTZDllQmJBY0ZjQmdLaEVlQ2Q5ZzdoV2JoY1VkK2hmZWxkRWQrZVdoMGNwaFRjWWZIYm9kOGdHZ0diWWJVZ1pjbWhaZ2hnY2ZGZ1VoeWJjY0ViY2NkaEhmVmdWZVNiZGhHZHRkNmVKZ1JnZ2ZrY0NhRmRzZ2JmWGR5YXBmTWZBZm5kNGJHY1RmaGZVYXFkZWJoZUllQ2JFZVVoTWRDZFNhSGZKaHdoY2ZFZ2hjRGNTYVZncGExYWVjRWhzY2xmUGF6ZzBoQ2hDZTFoNGJaZEdlUWVVZkRiUGhWaDViZWFEYVJoNGZuY1ZlaWhZZzZiUmR3aGtmSmNUYXdmQmdtZWJlMGJzaEliYWFpaEJnUmJjaFZiRmFLYVhmMmdsZThlQ2h3ZFZlbWRRZUdhZ2hxZ0pmRGc0ZVNhT2Z4Y0plSGJBZmhiMGZCYlVobWU1Z3JoTGZtYTBoZWVKZWdhSmJNYUZmeGZnaDJjUWhIZlllL2FXYTBmc2VPZlVhbmdZZ1NjU2d4ZWhiRGhXZldmSmV5aExlVmJwY0lnUWIwY2xoYWNkYVhmaGFMZGRjemZ3aDhhR2NSZnBkRWJVaENlZGJGZFJiUmE4ZVplUmIyZ05kSGRJZ1JjOWhIaElmUmV4Y0loQ2YyYjBkUWRaY25kSmNXZUZlV2hwZ3lhVWFYYWRoWGJBYXhhWmUwY1loWGd0aFpjTWhsZHhmb2NLZXlhZ2QrZVhlVGd0ZVVmQ2IxZWhmVGNFYmdjWWU4Z1pmM2NvZ3FmUmJIYUZkaGREZDFmSWNRYlplRWR4ZTJnZGhsaEpoQ2ZGaFRoNGc1ZFFoRWdzZFFkRmhSZ2dkd2FjZmpmVmN3Z1ZoVWhNY3ljSmUzYmxkNGNCZEhmZGhuZmFhUWdWYUNnRWJGY0Jlb2ZGZFVnVWFnY0NoaGJOZm1iUmh5ZGdlNWVSYjJnZ2VWaFNhRmFCYUhiRWJHYVpjeWZWZGhiVmZxY0plQmdBYmxkVmJ3YkljV2FkY0doRmJDZVloeWhsZXBoYWFrZ3hhaGJjZkZmVmF2Zldla2NjYmRmSGNWZlZjU2FkaEdldGU2ZFlkd2hOZXFhVmRnZDhhY2hSY1NiZ2RBaGVnbGF4Y1NoUWdoZVZhNGRkZ2hmSmZMZUdlRWFOaFphWWRuY0pld2RjYUJkdGJEYlZjRmVvYjlnZWNGaFZhM2JhY0hicGhPZVdhUWY4aFpnZmdBZnRjZmRiZDFma2NUYmNoVWVkYmhmQWFWZ1Jhb2JDZGtoaGVEYVJkd2RwYm1lT2JsYlloTGFhZG1kTmdJYlpmbGRkZVZlRmRuYXRkaGNEZkJhaGgzZURnMGV4Y21hWWdYYkJhVmdiZTFncGhIZkhoUmMxY1ZjVWduZlFhaWVQYkdjTmRGZ0lnMGdzZlJnVGJ4ZkFkcmJUaEhjMWMyZEFjVWVzaFZiSWQxY3diU2FTZnhkaGNEaFdmV2JKZHllY2dIYkJiSWNRZzBjbGFhYmRiU2I0ZEtmSmVYZW9hb2FXZDFjbGNGaEZhV2NoYk5kU2hXZjlmZGZDZ0VmVmFIZ2NheGROZ0hkYWJCZVZnSWZVY0VnY2ZRYlpibmZKYldlRmVUZGtlbGZHZENnTWVVaEFkaGRaZ2hkTWJoYjhjWWFQZFRhNWRtYlphbWZGZndnVmJXYjlmYWZSY3hoMGZkYlZnVmdKYTBmYWYzZ3BoamREYWlkc2hZZFNlbGNJZkJjZmVtaFpkMmJkZWxlSmdDZkZoWGFoZDJhRWVrZnNhWWdRYTFjbGJpYmNnbmZCZHdmU2hFaE5iWWJTZ0diMWY0Z1ZkWGhjZXljYWZWaEZoZmNFZ0JhRWJtZ0NnMWZoaHZnV2ZSYnBnMGRiYlhlTWdUZVJnMmVnZ1ZiU2VGY0JhSGVFZ0dkWmh5ZlZlaGJWY3FiY2JsZEZhM2FWaHdnaGFFZ0xmQ2hCZ2RnQWIwZHdhVWZaaG1lWmRoZGNiRmRWZXZkV2FrZ2NhZGhIZlZlVmdTY2RlR2J0ZTZjSWVBYXdjNWNEYmdlOWVBY0Nia2E1Y01jZGduYlphU2RRaGhiVmY0ZWRjaGFKY0xhR2VFZk5iWmdZaG5lSmN3ZWNhRWdoY0xoQ2ZGZXBob2RlZ0JkOGNNZU5jV2ZsZ2NjV2dRaEZka2ZZZVFlZGZ2Z2JleGZFZ1RhYmMwaGRiemZFZjBlZGVvZ0ZoVWZoaFFiUmV4ZEJhbWJjZmxhWWRWZ2FjbmZKYkFkWmRVYTlnS2ZDZTNhUmE4ZkZjaGNCYjNnRGhYYVJlbWdaYzNhQWdVaFpjbGZwZEJkR2V6YmRjVmNVYm5hUmJyZ2VibWJOZU5iYWVrYnNlUGdVZmhkQmZraFRiSGhaZzJkVWhrZUllVmJlZEhjWWNTZ1FieGZBYlBhV2ZYYzljeWRlYkhhaGFiYlVna2FsZGNlZGdUYUJhQ2ZkYTJhWmMxYVZoMGc4YlplR2FUYlFjTGRUYlhla2dDY0VoMmFsZEhjTWRoYXBoT2haaEJoVWZFY1ViRmdrZVFlZGYyZ0JhQmhGY1dneGIwZlVkWGM4Z1pkU2RnZnRocGFMZFJhOGRSZ2ZkVGM1YW1lWmRtaEZnd2VWYldhOWZhaFJneGMwZGRoVmJWZUpiMGNhZzNhcGVqZlRjV2hvZEplWGRSY2RkUmVMZjFiZGRjYmRjbGFKaENkRmZYZGhjMmdFZWtoc2FZYVFoMWhsYWliY2huZEJhd2FTYkFoQWNJYkNhVGFCYzRiV2VHYTFjUWdhZVZmZGRaZ0VoQmFsZ29iQ2gwY1ZkdmZFZ1JmTmd2ZFJjM2NNZVRhUmcyZGdmVmNRZUJjRmZIYkRoV2JZZm1oTGRWZHBjcWZlZVZkRmhtZUtka2JNZWFmUWEyZEVjV2dHZEdnWWZVYlpmbWhaYWhiY2JGZ1ZhdmJXYWtnY2hkY0hmVmVWYlNoZGRHYnRnNmRhZ3hlaGJxZVZjZ2U4ZUdlYWN5Z3RhTWhmaFhjWmJBYlBoeGd4ZzBiWGRCYkpiTGNHY0VoTmdaZ1libmhKZndkY2hFY2hlRGZTY1ZhcGUxZWVmRWd0ZjNoZWJtaGxjWGVTZ0FmSWVCZ2FmQmdaaFlnY2hoZEViYmFmaGxkNWVoYUVlMGVGYm9lVmRFYUZnUWhRYlJjWmRNZGNjbGRZZFZjYWNuZEpiUmNkYzFmZGRLZEZkbWdsZmhiRmNoYmhmbWJGaEdnWmVtZFlhWGdCY1ZmYmYwaHRlVmFCZVJmMWdJZVRnMmhsZnJjY2RuY0piVWFlZEVlc2hKZVVna2RWY3RkVGJIZUJjd2RlZEVhSWNWY2VnSGVZaFNkU2F4ZmhhRGdXZldiSmh5ZGNlSGFCZEllUWEwYWxiYWdkaFhjaGZMaGRlM2RwZWhhWGZ4ZFVlUWJCYkdjZ2ZEZ1RiWGM0ZUVmRWEyYWxlSGdPY3hjcGhIZmRkQWFsZUlkUWZWaFVnWmZaY2liNWVXZEhiV2ZKYWtiUWNuaGRiUmZTZmxjZGhnaFliUWNvYUVjWmhnZkpmdmFaZ2pkMWF3ZVhiWGRsZEpmUmd4ZHNnZGVBYUZjdGU5ZFpiMWhCZ2plVGhXZHBoTGZEZDFiSWRRZFpjRWZ4aDJlZGRsZEplQ2dGZlhhaGUyZkVka2dzYlljUWIxYmxiaWRQaG5iQmV1YVNjRmZGZFpmVGhtY0piNGFUYVhlRmc2Z1lmVWNKZE1lQWNnYkJnK2hDaDFkdGh2ZFhlUmhNZHpiR2IzZE5iZmFSaDNlWWJWaFhoVWNkZFVhQmZIYlZhN2hWYWhjTmZzZ2NkbGRrZTVlVmcxZWNnV2VKZldjZ2RmaEFhMGd3aFVnWmdtYlpmaGhjZUZnVmJ2Y1dia2djaGRlSGdWZVZhU2JkYkdkdGE2aFlnMGIwYm9lR2ZVY29mVGVXZTNoOWJtZWRjbmJaY1NjUWhoYlZiNGRkZGhoSmFMYUdjRWVOaFplWWhuaEpkd2JjYUFnc2VDYUdkaGI5ZTFhYmRGYUZoZGFlZW1nbGFYZldkUmRBaFplYWNBZHRlRmZiaHhkRWdUYWJhMGZkYnphRWYwaGRlb2NIaFFkbGFRZFdhaGRBYXlhQ2VSZWtmVmdZZ1hoSmVBYUNkbGI1YUdlUGJHYWxhaGVGYWhhaGhtZ0ZkR2NaZ21hWWFYYkJmVmZiYzFlcGhIZUhkUmExYlZmVWNuZ1JocmdjZmpiWmFOaGRmMGR0YmJnS2VWYTloa2hSZjNlWmRraExkMGVzaFpoVWRuZlliU2dTZ3hnaGFEZldiV2hKZHlhY2dIaEJhSWJRYjBobGhhYWRjWGNoaExoZGEzaHBncGNYZHhkOGRRYkJmR2VoZ2ZlUGZpYUFmUmJHZEdhOWJVZERiaGVwY0xlUWJoYlZmSWhVYUVoY2ZRZ1pibmRKZldiRmdXaHBoeWVVZFhiZGNYaFNoaGVaaHBmWWJSYVlhWWVkZndoWmcrYlpibmF4YXRnU2dHZjlmU2ZWY2diUWdQaFZmVmdSaDBhS2RuZE5kamVTZDJieGNoZ0RnMWdJaFFiWmJFZ3hhMmhkZWxlSmhDZkZjWGhoZjJhRWRrZ3NmWWFRYzFjbGFpY2NibmVCYXdoU2RGaEphYmdRY25hVmRsZVZjbWRwZzZlWWJVYlpiQWVBZ2hmbGV1aENheGdCY21lRWZSY1ZicGFiZ1hlTWFUZVJiMmRnZVZjU2FGZEJkSGhFY0dhWmh5ZlZlaGhWZHFmY2JsZ0ZlM2FWaDBjb2NXYWFmV2VFY0hlQ2duZzRjVWZlZDNidGI4ZWNnRmgxZytjUWExaFVhZGNHYTFjVWZVYmZnV2h0ZDhnWmNXZGRocWFTYndjOWFTYUVmR2VSZ01lZGduZ1pjU2FRYWhlVmg0ZGRiaGZKaExnR2ZFaE5mWmdZYW5oSmZ3YmVjRWJBZFBhU2dVZmRoZmJlaEVodGIzYWVmbWRsY1hkV2NSZUFjWmdhYUFmdGdGYWJieGNFZ1RkYmYwYmRlemdFZjBjZGRvZkZkVWZoaFFoVGh4Y2hmM2daYzFkWWdUYWFmamJwY1liZGMwYnRhV2RGYm5maGg1Y0hneGhnYzZmUGZtZlplbWRZZ1hkQmFWZ2JmMWdwaEhlSGVSYzFnVmRVZm5nUmFyaGVlbWFOZ05hYWhrY3NiUGFVY2hhQmVrZFRmSGI1YStjUmhGY0VoVmFmYm5jWmRUYVFiaGNoZmZiUmhXY0pmamVZZW5nbGdJZEhjMmVOZGFkZGhYZmhjTGFkZjNocGdwYVZlMWFrZ1FlR2NXZmdjTGZSZldlOGZSY0VlMmQ5YUhlY2F4Y05mSGRhZUJmVmJBaFdnRmNFYURhWmNuZ1JkV2VRZ0doTmF5YlRlV2F0ZVhmWGJCZDljcGJQYlRld2ZZZlpmaGNSZm1mWmdtaEZjd2dWZVdiOWNhY1JheGEwZ2RhVmZWaEpmMGhhYTNocGZqZ1RkV2RwY0xmRGgxZUliWWhjaGxiOWcyYWNiRmhJaEVlSGdIZUZhNmFPZkVic2NZY1FmMWdsY2ljY2JuaEJhd2VTYkVlTmNKZldjbmFWZTRnU2gzZ2RmNmRhaFZjZGZaZ0VoQmNrZGtkQ2gxZ3RmdmNCZXdnWmg2Z1ZnR2VZZFRkUWJXYzRkVmFXaFViRmVXaEJjSGJkY2pnUmRCYVZhMGFjZmhiMWEzZFVhVWZ3YldoWWRTYThmV2VCZVdhWmFZYmJnMmc5YzZnV2dsYlZkdmdXYmtmY2ZkZ0hhVmZWZ1NnZGNHYnRkNmFZaDBoMWJxYkZjaWVWY1NnRWNHYVJoTWhkaG5iWmNTZlFnaGJWYzRhZGdoZ0lhV2JNZ2tnTmNaY1lobmVKZndoY2FFYWhlRGdTZ1ZncGQxZ2ViQWdVZmllTmFpaFZhWGJSZEFkMGNFaGFiRWFWZ3ZiYmR4YUViVGJiZDBoZGJ6ZUVlMGNkYW9oRmRVY2hnUWVSZnhkQmQ1Z2NkbGQ0Z2RhSmhIYUpiTWRkYTBjRmhmY0FoM2FwZXljSGd4YVJjbWJIZERiVmhtYWZhSGdCZ0VnWmZsZ05ldGNIZVJoMWNWZ1VibmhSZnJlZWNtYU5jTmNhY2tmc2VQY1VhaGRCYStnVGJEaGhjMmNUZ0VnSWdEZmJmV2hNYUJnWGNoYWhiRmJYaDBlaGF5Y2NnSGVCZ0lhUWYwYmxmYWVkY1hnaGZMY2RlM2dwZ3BkVmcxZWtiUWVFY1dnQmhGZ1JmV2VJaE1oRWUzZmxmU2RaYWdlQmNSYllnUmRsaGllVWJFY2NiUWNaZG5oSmZXZ0ZkV2JwZnloVWVYY2RhWGFTZ2hhWmNwY1lkVmZNZ1dlTmJrY0VjMWFMZW1jbGU0ZFhmU2RGZ2FiV2dRaE1jRGRWZVVmTmdrZVllbmVwYmxoVGdYZHRiYmVIZ1VhRWhaZ1pnQmRCYTJjWWIwYWRjUWhEY0djNWIvZkhibWFFaFlnUWQxZGxjaWRjZG5jQmZ3Y1NkRWROYUpjV2JuYVZkNGVTZTNlZGU2Y1lnUmRsZVpmRGdSYWxjOWhIZlZhWmY5Y0FiUmFNZHpmUmEzZHNhQ2hWYTNkb2NHZVNlRmJaZ0hmWGRtZDloN2JYZnhibGZBY2NibGFGYTNkVmYwZW9oV2RhZ1dhRWNXZEdkR2JZY1VlWmNtY1loa2VmaGdkVWg2ZENoUWg4Z1ZlVWcxYXhlZWZYZW1ldGI2aFlnMGQxZnFiU2F3ZDlnU2FFZkdmUmZNZGRhbmhaYlNnU2VsYnBoNGdmZlFmOWZMZVNkMGRwYUNhU2VIY0pid2hjZUVjaGNEYVNnVmVwZzFiZWdFZHNlcWJVZ0dhbGhYYldlUmVBZFpiYWdBZnRjRmdiZHhkRmNCYUtjaGdNZ21mUWVRYmxnb2JZYUVlQWhWYVRkZ2R0Z01lY2RsZFlhVmdhYm5kSmJSZGRlMWFjYlhnUGFHY2xhaGRGYmhjaGVtY0ZjR2FaZG1mSmV5ZlVoYmVMZkFiNGdPYlVjbGVOZlZnSmEzZXdkL2hjZzJmTWJXZVFnRWZzZlBhVWhoZUJoa2dUZ0hoWmQyZVVha2hKaERhT2ZTY1FmU2VHY1JmaGVlZldnVGRaYThjUGFEZFVhR2ZCYkJkMGdTZmJkbGNKZkxnZGgzZ3BkcGJWZDFka2hRZEdoV2FnZ0xnRGRDZGtiUmZHZnplc2FUYmNnd2gxZmFkYWNFYmRhQmdVaEJmVmRWYU1laWZjYUVhV2EyYW9oQmVCaFNnVWhlZ0JoRmJGZm5nSmgwY1JoWGRLZTNiY2R1ZkpmemhNY1RmR2ZpZXNhZmdTZ1ZkeGJOZUJnUmc0ZHRmWWd3YWtjM2hIY3lkTWdGYVNkRmc0YlFmTWhFZlZodGNYZEZlSmhDZEZhWGhoYzJjRWRrY3NmWWJRZTFia2hrZFBiU2RKZndmUWVCZlVnSWRDYkhlVWF4aFNnMmNwZjZkYWIxZ1ZhVmJFZUZheGhvZ0Zka2ZWYi9mQ2JoaE1mOWhSZTJjMGZUY0FhbmRNZVZmUWRYZ3BhSGFFYUdiWmZ5ZFZjaGZWZXFjY2hsZEZmM2RWYjBmcGJmYmFiV2hvZkxlR2FCY1ZoQWZOYUNkOGN2Zk5jMWdzZnBjQ2RBY2hhUWJmZmhiMGJUYUpmZ2dnYjFmSmh3Z2hma2hDYmxiOGhDZVhkRGgxZEVlQmFTZUlmQWdDYjFic2IvaGVnaGZJZ2ZlRmNoY0FhVmZLaHphRWIxZmVkQWgxYlBmU2NWZklid2NlaEVoQmdxYmVlamcwZURlVWJCYmtjUWRjZHllRmVGaGJmeGFFZlRmYmYwZWRhemJFYTBoZGRvZVJhd2gwYUVjRWRrZklmb2hjZmhiOGZPZlFhSGdKYlJhZGgxZ2RkS2FGaG1nbGhoZ1NmemVKY21hRmdHYVpnbWJZYVhnQmFWYmJneGh3ZlNmVWExZDRkQmJHZnpoc2VsZGViaGZCZUZoUGhrZmNnUGNBZUJoeGJraEJnWGQ5ZzJlQ2JXaGdkVmRlZUhiWWFTYVNneGdoZ0RjV2hXY0pieWhKZmplRWFhYlFjd2h4ZWFlYWVIZmhnSmRkZVdmRmREZFZiMWNrZFFoR2hXZ2dhTGVSY1dmOGRSYUVmeWVaZ0hlYmRoY01hcWhLZVVjRWFBaFhlZ2dwZVpoS2VIZ29mQ2ZHYXlnWWMzYUhjemhBZkRhQWhoaHBncGdLaEJlOGhEYlRlQmhSZm1nWmVtZ0Znd2hWY1dhOWRhZ1JneGgxY2JlR2NnZUJkMGRZYnlhd2VpYUhmMmRvY0VnRGMwZzhmUWVOY2xmZGYyYVBkMWFKYmNlRmRUY2RodGNFZmtoQWhUYkRiRmRCZ2llTmQzaEJoN2VWZ1VlTWE2YURjaWhjaHhlQmNUYUJlMGRMY3diVWFXZFhnWGhvYWdnU2hoZmNhTWVYYWxiY2FxY1RhMmZJYUJkVWJHYWdiVGVTZ0FoUWg4Z1hkeGR0ZjdnVGdUZDlkcWFjZWxkRmMzY1ZoMGFvYVdjYWhXZEVkV2NTZmlkTmJBYk1kemRRYXZoY2VCZ0JlMGRjZEVjY2ZkZEhoVmJWaFNjZGNHYnRnNmNQZG1kZGJxYVNhd2Q5YVNjRWhHYlJiTWZkZmpjQWJIZ0RoRmZZYXNmUGExZDBlRmNHZ0NlcGJSYU5mbmI1Z3dmSWFrZVJlRGJBY0ZnTmExZkllMmVGZDNoZWNtZWxkWGNXZFJlQWVaZGFjQWJ0Y0ZiT2hWZUJoQmJiY3diSmN6Z0Rja2dkZHFkRmQxY05jNmFSZXhmQmZtYWNibGJZaFZiYWduY0piUmZkY3hoNWNLaENoMmhrZ01jVmQwYndkdWZHZ2lhc2R2Z0xnM2RnZkJnWWJSZFlnQ2dVYTFkb2VCZEdjbmNoZHJnTWcyZHBlV2RRZEVlc2dQZ1VnaGdCZmtiVGdIYVpmMmNVaGtmSmFUYU5keWRRYVNhUWQwYjRiQ2hDYjJkSWI5ZGNiR2ExYkljRWVWZEpkYWJQZ0hmaGdWaGRjemJWY3loVmQxZElmYmFWZ21oRWhMZ0FhR2I4aGFjRGVtYThjMGFKZTBnRWJPaEphbGJKZ0dnRmNoYlZkZmhLY3hhRWdlZFZoRGhnZVJiSGJqZ01lU2hRY2tjSWVTYkxnbWNzY1JmZmdUYzVnbWJaZG1jRmZ3aFZiV2U5ZWFhUmZ4YjBmZGVCYnhjY2ZnZFBiaWJnZnRjVGRTZTliUWFKZVZkSWRRZVpnRWZ4YjJiZGdsYUpnQ2hTZUZlSmUyZUVja2VzaFlmUWUxZGxiaWRjZWplWWVsZEJiZ2VBZGRlRWZ6Ym9oMmVTYXlnMWJ5aFBhVmR0aFpmUWJoaFZjb2dRZWtoeGF2aFNoamdsZnZoUmgzZE1lVGVSYjJiZ2JWZVNiRmhCZEhjUmZpY2NkZ2VWZGxhQmVxYmJlMWFFaGpmV2VRZFpjVGdKaHllWmhDY1VmSGUwaCtmWmFtaFpoaGRjY0ZmVmN2Z1doa2RjZWRhSGJWZjFoVGFKYm1ic2dtYVBjMGYxZDZnU2J4aEZlU2NRaG1hMWZNZmNiSGJCYlNjU2JrZmRnNGJhZXhlSmJiYUViVWM5aFpkYWNuZU1jNWhjZEJjUWFmZlNiVWhwZzFkWmdrZHNjK2NlZGpmVWhMYVdmVmVrZVpoZGVnZHNjQWRaYmhkRWJWaGFmVWFkZDdmV2hraGRiMWRGZFFnMWRaZVhiRGZwYW1lY2RsaFllVmdhZm5mSmJSYmRoMWNkZ0toVWJDZVlhemhGY2hlQWN3ZFZiVGVSYm1nTGduZEJlSWFiZzFhaGFGZ0VmUmYwaGRlVWZtYmxjcmhLYUhkaGNOY0lkMGdzYlJhVWNsYWhmL2RUZUhmMWI5Z0dia2RzZlZjTmYzYVljWmVWZGhlZ2U3ZVVhVGRZZEplT2hBYjFjQmZXZ0dkTmhhZGRiWGNoZkxkZGEzZ3BlcGdWaDFla2VRYlNjeWIxZmZnRWREZTFnZmRFZnllQmZjYldkUmFOYkhnYWVCYVZkSWVVY0VjY2hRZE9jMWZoZ1dmRmFXY3BheWRVY1hiZGhYZ1NibGZBZDhhTGgxYVZjTWVMaDFhc2FvaFphaGdoZDRiQWJXZU5jYWVGZVJjRWVkZkhkRmV0ZjBkTWhGaEJkamJUYldlcGFMZURlMWVJZ1FhWmhFZXhjMmNNY0JiMGZRZ0ZjWGZBZmdmVWZ4ZmtoWWZCaGxmbGEvZWNoaWVSYitlR2V3ZDhiQWJHaFRoQmd3ZUdkWGZ0ZjZoSWhGZTVnVmVFZkZoWmZvZUZha2dWYnRkRWh4ZDlodmJEYzNnTWNPaFJkM2ZnYU9hU2RCZmhmSGFEZ0diWWEzZ1dlRmFraHZiUGNCZ1lkamRIZTFoRWFXaEliV2hFYmRlQmdXYVljR2NiYzBoeGZoZ2NmRmhWY3ZnV2JrYmNmZGdIYlZkVmNTZGRlR2hzYTFkWWUwZFphM2ZTYjNjd2RHZlFoaWQwY0NiTWdYaGdkVWVFYUZmb2YxYkZoVmZvYkthU2RpYkFkV2FKZGpnZGI0Z05nVGNNY0xkTmVGZXBnK2FlY0ZjbGJpY2JkR2dsYWRmV2VWYVZhaWFJZkFndGZPZGJhd2VCZ3VhWmVsZnhmWmhFYTBiZGRvYkZoVWJoZ1FlUmZ4ZkJibWVjaGdnUmRRZVBnaWdjZERkT2RWYWNnRmhEYlVlTmRoZEZhaGFoZm1nRmNHY1phbWVZYVNhMWIvZGJhMWFwZ0hmSGRSZTFnVmZVZm5mUWF0aExneWIwYU9hUGJnYUpnQWJIZkJnQWRKZ1JmQ2RKZDZoVWVoZEFhWmFlZ0RhOGdiY1NiMGROZ3BlV2NXY0pheWhjZEhlQmdJYVFiMGdsZmFhZGdUaEViTmVkYTNkSWU5Y1ZkMWd3ZlFoQ2hHZWdlS2NXYUhkSWRSYUFoMmU4aGJnTGh4aE5mWGhhaEFidGRJZkJlRWM0ZVFhTWJqaG9mRWZXaGpnMWF5aEhlemRJYUFiU2RtYVFhb2dMZDFjRmJkYUFmMGhZaDBmS2FUZE5mNGhWaHllQWFjY0FoVWQ1YllmQWdWaElmOWRPYUhhb2N0YUFoamQ1Z0xhV2FoZXRjZWRNYUVjNWEvYmJhWGhoZENkRmFYZWhhMmhFYWtjc2NZY1FmMWhsY2lhT2Z6Y1pod2ZRY0JnZGdKZ1VlWGNVZHFnU2UyZmxnNmVJYkZkNWh6ZkVoQmFsYm9jQ2IwaFZndmZFZ1JoTmV2aFJkM2NNaFRmRWZ5Z0JhSGhCZHdlZGFIaFhhaWhNZWxiVmVtZGNkcmNQZ0JlWWV5ZE1maGdoZ0VjSmVqZE1jZWdHaGhkSmhHYlBleWc4Y3ZnTmgxYlVmN2FGZFVoZGFjZlhhaGdZY1hhSmZ6YmhkNmJJZlFiZ2J6ZEJjRWFFYldoRWVDZVloWmJNY0RoQWFYZkVkQmVVZTBoTWIxZHdlTWVUYUFndGdiZ2FmMmJsYWFmY2RFZGhlRGZTY1ZkcGYxZWVoRWFzZHFoVWFHYmxoWGFXYVJoQWJaZ2FkQWJ0ZkZhS2FVaFJkZGhMZUJmTWI2aFhmQWZsaG9hZWZVZUFjRWRTZ3hmQWEwZ2ZmbGhaZmNmWmFuZUliVWZlYjFjY2VGZEdobWZrYXBoSGJ4ZmdiOWdQZG1hWmJtZ1llWGdCYlZnYmIxZHBmSGdIYVJjMGNjZkZjSGFSZ2pkZWV5ZzFnRGhJZ3hiaGN0aEJmMWJZYWllQ2VTZlJhK2JCY2thc2hjaFVjbmFZY1NmU2V4aGhiRGJXYVdjSmR5ZmNkSGNCY0lnUWN4aDBoU2JKZXphY2JjZmRkemZRaHNnQWVGZmxoa2dRZERjaGZPYUlmRGExY0RkWGdEYjFhUGJkZEJjRWhGZFBoVmVNZU9mRmdSY1VmU2FaZWpoTWZFZVVlamQ4YS9hRmREYWtlRGNTZ2xic2I4ZE1ja2VJaFljSmdGY0ZlbWJKYzJkRWJTZUFnQ2FrY2NoQWJraDhkZGFIYkJnd2NuaFBjemVzY3RjRGhpZjlkTWdCaGtia2U2ZFpnRWV4aDJnZGNsZkpjQ2FGYlhiaGgyZUVlZ2RKYWViUWgxY0Vnd2NjZ21kNWJ3YkJoMGFNY1ZlQmFuZlVod2ZTYTJjbGY2Zk9mMWM1ZXpnRWRCZ2xmb2ZDYTBiVmd2YkVnUmJOZHZlUmEzY01mVGZFZHljQmZIZ0Jod2VkZ0hlWGRpYk1jbGNWZ21nY2JyY1BnQmdZZHlhTWVoaGhkRWNKYWpnTWZlaEhlMmJSZkNjSmh5Z29kMGROZlZmZGh2YUdheGVWZ2FhU2FCZGdoWGVPY2pkOWU2Z0tiaGQ1Z3FnQmhGZW9mR2ZFZkNnc2FLY2RkamNRY2RnRmcxZnNlOGdKYVJmVmFDZUFjMmhsZFphWWFuaEpod2djZ0VkaGJEZVNnVmVwYTFjTWFRYzFlM2hjYmlnQmdYY1VmaGJCZWNiYWFCY1ZoRmFPZ3hjOWVmYktmZ2NrYTBhUmN3YzlmaGNGY1Jkd2ZZYkZjVmQ4YXhlY2hoYmhlUWFQYVhkSWZqYU5maGFrY05nVWZ3YXdiemJSZkZmY2EwZUhjR2FRZVBlTGN6ZVFlUWROYjFlb2ZJZlNoRWNsYlZiSGJUZUphcmVLZENoSWNEYkxkUWY0Zk5oV2Z3YnRoT2VUZ0hiWmQyaFVma2JJaFZoZWFIYlplUGRZZlJiaGZEZVdjV2RKY3loY2RIaEJkSWJCYVJnd2ZVYU5naWF3ZUNjT2FEYlJicGZPaEZoRmVFZEZiV2JoZlpkU2RXaDllWWhIZDJjOGJDaGVjaGRNZGNhUWJoZlZnSWhVZkVoY2VRY1pobmFKZldhRmZXYXBmaWVVYVdobGdYZkdkQmJaYnZoWmR4aFljUWNOZUJjUmM3aFphbmFkZ2xhUWVIZHhlUGVSZHhkWWJkZEJkMWVKYi9jYWUyZXRhcWdWYmtjQmNMZURoMWdJYlFkWmZFaHhhMmJkZ2xoSmhDZFVmemFjZ2tnRWZrZk5lT2NBYmdodGZpZVBjWGRCZnRmU2hGaE5mRmFXZ2pmMWI0YlZibmNjZ1hiS2hBYk1iUmdIZ2xhUWJoZFJjVWMwZjdhSGIxZzhicWJDYlRhUmdIZURnMmdnZVloU2NCZmxnTGRFYUhjUmQ3ZFRmUmJVZWljY2drYzloM2VHZkZiRWJXYVlobWFwZFpoRWhVaHdmVWdaY21nWmJoYmNmRmhWZXZoV2JraGNmZGNIY1ZkVWVHZ0RieWNKZjZjYWhFaDBnbGdOaGdhOWNQZE9hbWVSZk1lZGZuaFpnU2dRY2hiVmQ0Z2RmaGNKZUxnR2VFZU5jWmZhY2lhQmF3ZWRja2JoZ0xnV2cwYTlkZ2dlYkZhZGVyZGVibWRGZFBlV2hSZm9oWmhZYkVjNWFGY2NjQmZGaGNhYmUxZDFiemJBZmtmZGZsYkZkUWZkZVpjVGRoYWxhdmVjYWtiZ2hMZGRmSGhKYlphYmExZWRlQWZGZG1hRWdrY0ZjZ2ZkZW1iV2YyYlpmOGdZY1doRmJWZFlmbGdvZUloRmhCYVJoT2VlYUhoUmNyZGVhbWNOZk5lYWdrZXNlUGREZHpncGFrZFRlSGFaYjJlVWZrYklkVmFlYURmQmhIYkJoVmVzZFhkRWNDZTBkOGRjZkJiNWFBZUZjMGVWZWFkSmczaFJnTGNQZm5lWmZwaEVibGdBZ1FiUWRrZkliTGNSY1dnOGdSYkViMmU5Y0hkY2N4Zk5iSGJlYkJhVmVXYlVkQmRVZVFmWWVIZ1JnV2hIZFRiaGd5ZFRlSGhkYkRiV2NBYTloOWhlZEFjQWdQZGRhQWYxZHplWmJtYnBld2FCZDJiOWRSZVJmd2F3YlVjVGZuZWhlMGhhYjNlcGFqaFRmV2NwYkxoRGIxZ0lnUWZJZ2djTWJrZmRobGFvZVVkVmFDY3BoMmdYZFVhc2FGY1FlMGJsYXVkY2ZqaGhkd2FWZ1VlTWRrY0dkeWVFZ3doUmNUY29kemdKZzFjOGNOZ0hkbGNVY3RmUmZRaEloN2NXYlJlTmRpZFJnemFvY2ZhUmUzY3djY2JVZTFmQWFQYkVoSGVoY3loR2NRaDVlcWhlZ1Zlb2c0ZFhobWhBYldmYWdXZEVlV2NHZUdhWWZVZ1plbWNaZ2hoY2ZGZlVoN2FJZVFhNGdkaEZjbGJVZWRiQ2RXaHRibmhZZTBnVWM0YVNleGhGZE1kRGhtYVJiRWNiYm5mWmRZZFFkaGEwZDllZGVnZTFhTGhWZTBkTmJEZVlhbWFGaHdjZmVVY2dhTWNRYkZiTmI4aGVkRWMxYzNkYWdIZHhhQ2hRZ2pob2daYWFmQWd0Y0ZhYmN4YUVhVGFiaHhocGdaYkViMGNkaG9oRmZVZmhmUWRSZHhoQWJnZkpmeGZoZldnUGJqY3NmZWZPYlZhY2V1aEhjamExYnRmRmJrZ3BlcWhGZENmOWFxZFllVGZWY2NoYmN3Z0ZhdGRIaFJkMWVWZlVnbmVSZXJoZWVtYU5nTmJhYWdiSmRKY1VnaGRnZHRjVGVIZjFnMmZGZTBhSWdMY2VoQ2hJZGNjQmUxYTBlTmNIZGpkWWE2ZmVoWGhBZmNmQ2J4ZHNlVmdJYm5kZ2NGYU1iaWExZ3BiSmhSYWhhZWFYYmlnMWN1Z0ZiemYxZGVnUWhXZmRkRmhHZmxoMGFEYUxkVWgxY0lmSGR4Z0pkRWhaZ2pnMGFRYkZmVGNnaHpiSGh6YUFmU2FTYkJnOWJ5Z1NoeGJZYlloWmNoZFJkbWRaZW1mRmV3aFZlV2Q4ZlRjQWdSZjBmVmFSY1ZoSmhxZWFkemNOYnFjVGJUYzRlRGZYaFJoMWNIZFphQWNJZ3pnSWFWZElld2dWaERlWWJ4Z1ZieWg1aEtiRWJSYlljd2ZlYm5kSWJaYkJoZ2RjZE1jQWVuZFVlM2RIYmlhTmE2Z0pjaGhGZ1pjUWdsY2dibWNUY0FkQmR0ZkdhQWRoYkZjUmgzZ01lVGNSZTJlZ2hWZ1NoRmNBaGFjT2NtZ1pieWRWY2hnVmhxYWNlbGVGYTNiRWJSZzloWWZLY2poVmVmZVZjeWJnZlVlTGFXZjRhMWRmYUZkVWQ5Z1Zoa2hkYlVjRWVWZlVlWGZlYUdmc2IxYmFma2cwZnhnWWVRZDlmU2FFYUdkUmZNZGRnbmJaaFNjUWZoZlVkcWhNZjBiWWJlaFNkZ2UxYVpkYWZsZmhjd2hjZkVnaGNEZVNmVmFwYTFoZWZFYXRiM2VlZW1oa2JZZFdkVWd4ZEZmYWVHYTlnTmZPZXhkMGhUZVBlVWN0YXpoV2RrZnRnb2RBYVVjUmRRYVZiQmI1ZXliWWNrZFFmTmNlZEdoRmhGZFlkVWdGYVphRGFuZ3hiemREZmdiQmR3YlVmWGhWZitmYmNYYUJiWWNmZUZkUmVUY0RlUWI5Y05oUWNHY2RiL2diZUhjVmhlZGNobGU0ZWRmU2ZnYWhheWFDZVdiVmN1ZFdlMGc0ZS9oZWZIYllnU2dTZHhnaGhEZFdmV2dKZXllY2JIZ0JkSWdOZkViY2VOY0poemZFaGZlTWNuaElhOWVXZTFobGRDZUZoV2NoZ0NhU2VXZzljVWVIZjJhOWRWYlljQmQ5Y0hoZmJCZXhiRWNlYmtmY2dRY1pibmJKYldoRmJXY3BoeWVVZVhiZGJYZFNnbGg5ZnBnYWZoZFlkTWVUYUJiUmVtYVpnbWdGZXdkVmZXYTloYWZSZXhkMGNVYlRkbmNoZjBhYWczZXBmamVUaFdhcGhMY0Rid2Q4aDZhWmhFZHhhMmNkZGxnSmJDZUZhWGNnY3dhUmN3aFZnYmdGY3hmQWN0ZlBnSGdBZDZkUWNCaGRlRmRXaGlkZGUwZlNoemc1ZjJiYWdSYUpoVmhFZ0ZhWmRoZ0NleGE1YkZkRWNSZE5jdmJSZjNhTWJUZFJjMmNnaFZiU2ZBZUlmQ2dSZERhTWRnY0dhQmhWYmllV2NGZ0ZkM2VWaDBjb2ZXZ2FkV2JFYldnR2ZHZllhVWRaZ2llbGhoZExiQWRsYnZlUGZrZDljSmFFZ1ZoVWVBYmVoR2VzZXpkYmgwYjFneWVSZXdkOWFEZEhnbmFOZFZkWWZXZ0JlTGRVZFFjUmZyZFlkZ2hwZ2RoQ2ZsYkJoSWRkYTJiVWgxYllkMWRoY2JkUmNWY3BlNGJhY1VmVmhnY1lnM2c1ZkJhUWdBZk1iSWNlYnhiOWFkYmVlUWVNYUFjZmdsaEpla2FWZmxoUmc0ZERnVWFGY2NoYmFSZkJobWJjYmxlWWZWZGFibmZKY1JiZGExY2RlS2NGZmhoNWh2Y1FoVWNvYXZiUWVDZk5mdWNOZFhleGVWaFBjVmZaY0hjVmdCZEZjVmdGZzNmaGZyYWJnM2RGaEJiYWFsYU1kR2RYaGpjcGJrYVRiSGVaaDJkVWRraEllVmVlYUhhWWRTZFNleGRnZkthV2NXZ2xkeWhhZ0ZmcGVJaFFmMGFsZWFjZGhYY2hoTGdkYTNicGFwZ1hla2ZJaDZkR2VXaGdoTGJSZ1dmOGVSZEVlMmM4ZmFmV2dSY05lSGFhZ0JlVmdJZ1VhRWNjYVFnSWFDYWNjWWZWZGphNGE3ZEhhamFsZ1hnTGJCYzRiOWVhZUJoWmhEZFRnQmVSZW1iWmNtZEZld2dWYVdkOWNhYVJkeGgxZVVlRWYxYUpkOGRZYTNkSWIzaFRoWGNkZkxiWGZsZ3BkRWdiZFViSWVrY01nd2FJYU9kVmNEYXNnemRHZWhmbGdNZlRlMWdsaGdlY2NIaGxnNWNSZ0VhTWVkZVZoRGJrYzllQmZUZEFjdWJJZFZmZGZGZEViQWN0Z2hoQWNrZlVnOWFWY0VjY2g2ZEZoVGYwZVRkUmVXY29nT2JZYmxoQmhIZ0VjR2ZaYnllVmdoYlZicWJjY2xnRWF4ZEdiQmRnZVdoWWdYZW9kV2hUZEdjaGdZYUloeWVnYW1hSmRCYTFjdmFYYjBiY2RKZUhnVmZSZlBlYWRXZXRkcWZlZkVjMWVqZ1NoMWh0YlNkR2MzY2xiTWdkYUdhdGhRZ1djVGg5YzRnZGdoZUpoTGZHZEVhTmVaZVllbmFKY3dnSWJnYjBoWGRIZkFlZ2E3aGVjQmY5ZHNjVWRHYmxiWGdXZVJjQWFaY2FlQWR0YUZnTWJqYXNlVGViZzBiZGF6ZEVkMGNkZm9jRmNRaDRlRmhDaFZkTWd5Zk9neGZsY2JmYWVpZk5lWmJJYTFhNWZLZlRnVWVOYWhiRmhoY2hjbWdGYUdlWmRtZllkWGFCZlZoUGJSYThoVGNTY0VkOGViYlVoaWdCaGxhTGRqZUVnRWhKYjBhc2RRZlVma2ZSY3FoR2VDYlFkL2VIYTBmb2djZmVkR2R3Y1NkSGV4ZlljUmdIY0RoSWcraE1lVGVNYU5oU2UwZllka2hDaFNodGZBYktjd2ZZYTZhWGNGaDBiVWVGaGliOGNIY1JlV2IwZ1RjR2RuZ1JkdGhjZXhnTmFIZWFiQmFWZUlkVWNFZWRkTmhUY0hjSmNXYUZnV2NwZXlhVWhYZWRhWGNEYkViTWNuaElla2FKZVJlS2NWY3BmbWNIZG1oa2VrYVhhR2I4aEJoYmhSZTBlZGRWYVZjSmMwYmFhM2JwZGpmVGRXYW9hWmZTYmdjWmJGZU5iZ2hKZDJoWmQwY1JnQ2FDYjNnZ2hpZ0VkbGJRZ1loUWVVZWxmZ2FjZm5idGd3aEhoRWIwY2RjRmdRYllhc2FHY1RhNGcwYUxlbGU5ZEllQmVoYUJmb2RFYVVoVWU3ZEhhMGRjZ2dkTmFDYmRnQmVEZGlkWmJTZFFmRWZGZVJoR2NYYTFjWWRWaGhoVmhxY2NibGFGaDNhVmYwZnBkTGVRaDJjRWRXZEdiR2NZYlVkWmdtaFpoaGZOY2dhQWJoY0djUmhOYVVmVWRoaHRoU2NIaEdkTWZ1Y2JhMGUwZzRoUWJnZDhhSmdPZ21lUmRNY2RmbmhaZVNnUWZoZVZhNGVkZmhhSWJaZkdmRmY1YVpkTWNIZUloc2RMYUVoaGNTZ1NlVmhWYzFhYWRGZUJmZGFlZm1nbGJYZ1dmUmVBYlpoYWJBY3RiRmJiaDFnZGJjZFBoVWRkYTdkUmRRZFlkNmNGZlFkRmdjaFJoMWZWZm1lYmgxYlpkQmJaZURmNGdVZU9mUmVBZmVmWGNtZlZkaGFXY1JoaGE3aEZmQ2FnaHpoTGdUYXhiWmNiZnhlSmhIYkFhQmgwZnVnTGEzZmhicmJOZ0doTmFRY2FibGJzZlVmVWZsZFZma2hVZW5mWWg0ZlNmVWdJZmVkY2J6aGdjYmZTZzBhTmVwYVdjV2JKZXliY2VIYkJjSWVRYzBlbGRhZGRlWGRoaExoUGZqZ3hlcGdYaDFhRWFZYlVkR2NnZVdnUmZUYnNlZmRVZ0NoY2RHZUliWGdBZElhTGhGZEFlcGVCZ0VlOWNlZGJhM2N0YWFjRmNTY05oeWRUYjNiZGhDY1hod2NSYXdhZGRCYVllZWJZZEJjUmR6YmNoWGJKaGtkUWdXaDlmRWhSZjFjUWJVYVhoRmVJZHZhUWVYZXBiamNUYVdkcGZMYURoMWdJYlFjWmNFZnhlMmdkYWxmSmhDZFhiRGg1aDJiR2drZ3BnWGRTZGxja2g1YldlSGJCYXdkU2dFZ05oSmdXYW5iVmI0ZFNjM2RkZjZkYWZWZ2RmWmNFaEJna2hoYVRkVWVWYm5jV2JCY05jeGFSZzJoWWNGZlZhSGRrZ01hUWFWYkFhY2RPZW1lWmZ5Y1ZhaGhWZnFoY2ZsaEZmM2RWYjBjb2RXYWFkV2dFY1dmR2dHZlloVWRaZ21iNGJ6Z2NlRmVoZnlkV2FsZ1FiVWVIZFVjdGNTZGViWGVwYjZiWmFVZ3RjcWRBZndnRWFDZFJhVGZjZ0VlZmdtZVJnQmRXZXhibGU0ZFpld2Z0aGFiRmdFYU5mSWRlZm1mdGU1Z2FoMmhKaERnU2JWYXBnMWFlZUVodGQzZWVhbWFsYVhkV2JSZEFjWmVhY0FidGNGZGJheGFGZlFhSWJBZmtkbmZXZ2dia2I5ZFViRmdOZzZjUmV4ZkJlbWJjZWxiWWNWaGFnbmVKZFJnZGQxZGRkS2VGZW1ibGRoZ0Zha2NWYU1oRmdHZlpjbWdZYVhjQmJWY2JmMWJwZUhnSGJSaDFnVmRVZW5iUmNyZGViaWhvZUxlYWRraE5mQmJVZmhjdGVrY1hmWGhaZ3JhVGUxZThmVmZQaFhjOGhTZ0VoRGdKaERhV2dXaEpneWJjZUhiQmZJZFFjMGZsYWFoZGhYZmhoTGFkaDNkcGJwY1ZiMWFrZVlmU2QyZWdiR2VXZEdhOGNDZUdobWc5Y1pjY2Z4ZjVkV2FhYkJkTmZPY1VkQWQ4Y2VmTmNpYmNhRmhYYldjSmNnY1FlbWY1YmJjU2hnYmRhd2djZEJib2hZZmRld2Z4Zy9oYmYzaHBjYWRWYVdjOWVhZlJmeGIwYWRkVmZWY0plMGJhZDNjcGRqYlRlV2dwZUxjRGcxaEliUWRKZ3dkTWI0Y0liaGVzYU1jUWVEZzFkdGJPaEVjc2JZY1FhMWRsYmliY2duZUJod2NTaEVkTmFKZldlbmRWYzRkU2IzYWNobmFRYjFjZGZaY0VnQmVsZm9kQ2cwZVZidmNFZFJlTmN2ZFJlM2hNYlRoUmcyZWhlYWVTZkVhMWJIZ1dkWGQxYVlmVmhoaFZkcWhjZGxkRmczaFZoMGFvYldlYWJXZ0VoV2dHZEdkWWVVZ1pkaWZVYnVnUGNnZ0VibWNGYkJkSmVZYkJmbmY5YVNhZGVHZXRmNmhZYjBhMWZxYlNnd2Y5ZFNoRWNHY1JjTWFkYmlidGY0ZFFjaGVWZzRhZGRoYkpjTGdHaEVmTmhaZVllbmFKaHdoY2FFYWdiS2JEZDFncGU5ZmJmVmYxZWtiYWZIaGxoWGhSY3hlQmNRZVlkUWdzZGVhUmFSYkViVGhiZzBjZGF6YkVnMGFkZ29lRmdVZWhhUWNSZ3hoQmNtaGNibGhZZmRoT2dIYUpjY2NhYmxjZGdaYUhiMmNsYy9jRmZoZFZiM2FGY0djQmNnY1lmVGFoYWJiUGF3YjhjVWZWZVJiVmhIZlFkV2IxZ25lZWRuZEpjVWZlaDBjY2JQY1Fhd2hoaDliUmNYY3BhMmhXY2djMGRWYlplWGFaYWJiUWJnZk5kcGZXY1dnSmd5Z2NkSGdCZElhUWIwYmxkYWRkZFhiaGdMY2RoM2FwaHBhVmZ4Y3BoZmVWYnpieGZDZ0NhemRwYVVoQ2hFZFZoSGNjZHhhTmFIaGFmQmNWZEloVWFFZWNhUWNaZm5jSmhXZ0ZkVGJkY1ljVWhYZWRmWGhTZWhmWmFwZFliUmRZY1lkWmFoaFJnbWhaZ21nRWM1ZFZiWGhKZmFlVGR4Z1VnVmFHYmxnSmU1Y2FhMmg5YzJlWGgzaE5lZGVCZ2xmSWVNZWViRWN4Zm5lWmZsZnRoQ2dTaFhiaGIrZldiMGhzZVZoUWgwZ3hnMGJZZVdoSmJnZVFjVWhwZEpkVWdYZVZndWFYZW1lSmVwaGZmMGN4YnpkRWFCYmxob2NDYzBlVmJ2YUVkUmhOZnZhUmIzY01jVGdHZW1naGZRZUJkQWZNYkNjRWdDYWxleWFVZ0JhTmZxYmVjZ2dOYTNlV2ZsZGNlV2FlZW1lZ2ZXYkJlbWVZZFpoZGUyZlpjbmhkZ2xkVWRuYVZlQmRkZUliVGJoYjFjYWNaZW5haGJqZ2JiMGMxZDdjVWZoZjVmZWVFYkhlVmhVZGJlM2c5YUpnYWNCZFZoNGZkaGhnSmZMY0dmRWdOZ1piWWduZ0pnd2RjY0FmRWVGZVNlVmJKZzliY2hBZ1JoM2JaYTJla2daZkRoRmh4ZVZmWWNRZGRiRmNmYWdoTWFMYWJhMWZsYXplV2FrZjVkaGNGZ1JnTmI2ZVJoeGJCZG1kY2ZsZ1lkVmhhZW5oSmJSZ2RhMWdkZ0tnRmdtZGtob2ZVZEJjaGJ1YUhhRGRSZW1kYmZHZzFkVmFmaGxoTmFIaEFhUmYxY0ZjV2czZFFicGZLZ0NkWWFNY0loVmRBZmxnVWFoZEJia2NUZ0hlWmYyY1Via2JJZVZjZWdIZVlnU2hTZHhhZ2NMYlZiemRJZ25nSWh6ZGhmQWNDZGtjQmVCY1hmM2VoZExhZGUzZHBocGVWYzFja2JRZEdoV2NnZ0xoUmVUZ0llUmFWZmllTWhVYk5naGNNYk9mTGZoYVZlQWhRZWxkY2VFYmZnbmZKZUlnRmVTYk5iN2RVZ1NneGY5Y1NhaGVaZ3BkWWhSY1lnWWZaYmhkUmJtYVplbWdGYndoVmFXaDhmVGNBZVJlMGhWYVhlUWNCYjBlWmZtaGRjamJYaDJkTmNMZkVhMWZJZEFnYmZVZ3diMGVKZUJiY2REYlhibWZOYWNjRWhrY3NiWWVRYzFlbGNpZGNhbmRCZXdkU2VFYk5mSmNXYW5nVWd3YVJhU2JjZHZlT2JoZjliUmRHZ0ZhQmRvYkZnVmR0ZHZhQmR4YnBmdmdHZjNmTWVDZVhibmZvZVpnU2RGYWhiUmhBYzJoWmcwZFZibGh4aGpjY2ZnZDFkM2dSZWxnZ2VPYllhSGNvYzhnR2RHYllkVWVaaG1mWmdoZmNjRmdWaHZoV2NrY2NjZGJRYkZlVWVYY09hRGFnYi9hWWh3Y1Fjc2RTaHdoZGJFZEJhWGZGaGZjWWhIY1pkTWhRY2xneGJ4Y2Rla2hsYWhlR2dFZE5jWmJZY25iSmR3aGNiRWhoYURoU2hWZXBnMWhlZ0Vmc2UrYVBhR2JsaGZoVWRVZ0loWmhaYVJiWmhGZWZiQmFnYVRkY2YwZWRkamFHZmthY2RxYlJhd2EwZ1JoRGhBYnRiTWZjZGxhWWRWY2FlbmRKY1JjZGYxZGRoS2dGY21nbGdoZEZnaGhnZXVlR2hqYllmemJNY2pkaGRkZVpieGVOZ0hjQWN3Z05oVmNRYzJnWmJpYmVjamI5Y05mZWFGZGtoYmZYZWhoQmFzYVJmRGE5ZTJiVGhGZ3dnVmViZG5hOGFTZ1RoUmVoYVZkU2FtZnRkeWRMZkhoQmdaZlVkVmVGZldlZGRYYkJjZGhaY0hkcGh2Z1ZneGZBZFpmR2NUZ1FiTGNWZEhlMGhKYkdobmhSYnRoY2F4Z05mSGRhY0JnVmZJYVVlRWdjZVFnWmFuY0plV2NTZUdlb2EzYUhmU2ZRZlNhU2RrZTFnRGhZZFJhWWhZZlphaGNSZW1hWmNtaEZid2dWZFdjOWVhZVJneGUxaFVlRWUxYkpjOGhhZ25oSmN5ZlhhSGV0ZWZlSGZraE1nQ2haZkZoSmgyYVBlMWJ0aExiRmhTYndlK2hRZEFmUmZQZVFleGVjYW5lSmFYaEFoVmJHaGhnRWNHaENkSGQxYjZlSWFqaGtnc2ZLZEJnc2VRZVZkQmVrYXJjUmdBYkVmcWNFZFVhTWNnY0RkamgxYUhoUmdXaEViT2JZY2xjQmNIYUVkR2FaYnllVmRoaFZlcWRjZmxoRmMzY1ZjMGRvZldhSWNDZGNjV2RFYUdjNWdHZlpnbWd0ZzhnY2VFY0ZibWhXZGxic2hkaERjVmZ4aFNlTmZqYmthL2RJZWdlWmJ4Z1lmUWE5YlNoRWNHYVJhTWNkaG5kWmZTaFFnaGdWYTRiZGRoY0plTGdVZkVjMGJKYk5leWhFaDRoZWJHYUpoRGRTZVZjcGMxZ2VhRWN0aDNkZWdtZ2xiWGhXYlJlQWdaZ2FiQWJ0ZUZnWmMxZ2dkVGRjYlZmbGR6ZkFjbGI5ZGhjRmdSZFJiUWdWYVFnUmgyY2ZobmZ3YlZkYWVuZkplUmVkaDFhZGFLaEZmbWFsZGhoRmdoY2hobWFGZUdoWmJtaGFnWGdnZWNmYmEwZFJhWmFIZFFjeGdIZ1dkM2JSYnRmZWVuZVZjZWVZYzBodGZUZVViZ2FGZTJoVmJIZHBoY2NVaGtiSWdWZmVlSGFZaFNiU2d4ZmhiRGFXaFdjSmR5ZWNhSGJCY0loUWUwY0ZlU2NQZUhkaGdWYmFmWGJwZC9kWGZsZGtoV2hHZlhjNGdZZlRnR2E5Y05mRWczYTVlVmJhY3hiOWR0ZGFkQmJWZElkVWVFZGNnUWhaZW5nSmVXZUZlV2ZwZnliVWRYYWRkWGFTZ2hlNWgvZ2NlaGFZY2VmWmZsZDFldmdaYWpoMWh3ZlJhSGQxaENkYmdSaDBlZGdWZFZmSmUwaGFiM2NwZ2phVGdXYnBlTGhEaDFoSWVRYmJmVmRkYmNlZGZsZ0pkQ2ZGYlhnaGQyZ0Via2dzY1llUWExY2xhaWZMaDFkcGN3ZFNmRWFOZ0pjV2duY1ZmNGFTZTNhZGU2aE5oSGQxaFpmRWZCY2xkb2NDZTBiVmV2YkVlUmdOZnZnRmdUaFpkSGdFY2pocGJiZlNmQmFoYWNjT2dtZVpjeWVWZWhhVmRxZ2NmbGZGYzNjQ2VtZEFmV2hhYVdnRWJXZ0dlR2ZZaFViWmRpZEFiMGNQZWhjWWI3YUVid2ZoY1RmSGNTYk5kYWNJZkdjSmY2Yk9lR2NkaHFhU2N3YzllU2dFZEdhUmZNZ2RhbmdaZFNnQmhGZ29hcWFkYmhmb2VkaFdhUmRGZlpiTWFIaEpidGZjYURkTWIrZ1JmVmZvZzhlZWdGaFpjM2NhZG5hSmZYZUViQmVBYUZhYWdGZjljTGFJZzFiUmNkZ0tlQmNNYTdjQ2ZFYmRiamhIZGdjRmFaaGJnUmhCYW1nY2hsYVlnVmdhYW5jSmZSZGRoMWhkaEthRmRqZXRidmhSYWtnMGMxZFhnR2g1aDBnZGdHaFZoVmVhYlZmb2VUY0VhMWY0ZWRnRWV5YllmSWZOZ1NoY2VJaENmeGI4ZEhkR2V4aGxkdGZWYjFheGYyZ1Voa2NJZ1ZlZWRIZ1loU2FTZXhmaGFEaENjeWJjYm1hSmdTZkljR2dRZ3hodGFCYVhjM2NoY0xkZGczZnBncGRWYjFna2ZRaFJiRWhJYUxnUmVXZzhmUmVFYzJhOWJIYmNmMWNVZFNkSmRsZVlhY2JHZVFmaGdlZ1pjaGdoZWVhUWhXaFpieWJBYzNlNWVYYkViVGV4ZnBiWWRSZlljWWZaYmhnUmdtYlpobWJGY3dkRWJ5Z0FlSWJSZ3hmVmFMY0ZjQWdCZTBhSWduYVpnamZDaEdkWmdMaFFoRmU0Z1FhTGVFaHhhcmZkaGlla2gvYkdiWGJnYjRiRWVsZVlmWWFVYTBjSmhpYlBjSGFCZ3NlU2ZCZmRoSGdGZGphQWMyaERiQ2hNYnlmYWNWaEZjZmNFZkJhaGdnaEFleGVkZ3ZhSGNBZjVmdmVWYlhmb2JUZldiMmVnYkZkUWJVYnRkSGNHZTJnMGY4Y1hjemU5aHFkY2JsZkZhM2RWaDBob2JXYmFoV2FFaFdjR2dHYllhY2NMZTJnWmc4Z2NjQWhGZGhiR2dRZTlnY2NUZnpnWWJkZU1kQ2U0aGJhTmIwZFVja2FRZ2dnWmJlZ09hbWdSZk1mZGVuaFpjU2FRaGhlVmE0Y2RiaGFKYUxlR2RFYU5kWmJhZ2plZGZ3YWJmVWhnYUtjU2hVY1JhcmJlYkZkTmIrZmRha2NOZVhiV2dSYkFoWmVhY0FjdGNGZGJheGZFaFRhYmEwZmRnemJFaDBiOGduZUZoVmVWZlFjRGVoZ0JnamNjZ2thUWVBZmZnSGh0ZmRoWGJWZWRmS2ZGZm1obGdoZUZmaGFoYW1hRmNHZlpnbWZZY1hkQmdWZkpkMWVRZVhkU2JFaDRhZGZXZmpodGNpY2Rla2VsaE5oYWZrYXNoUGVVZWhmQmhrZ1RiSGdaZzJmVWRrY0lhVmNlaERhNGRjYkdkMGIwZ1FjRWJXYm9kM2hlZ1dkdGNpaFFjMGNsYWFjZGRYYWhkTGRkZzNocGFwZlZjd2Z0ZFZmVGRUYTFiWmVDYzJlOWhaZ0NnRWhWZkhjY2R4ZU5nSGZhYkJlVmFJYlVjQmJvZTZmWmVuZkpnV2FGZldncGR5Y1VoWGhjaFJjSGYxZGdmcWdOZVZiOWFYYktjQmRRZWNhYmhqYVZkNWhWZlRlUmJ3ZlJjeGYwYmRmVmNWYUpoMGhhZjNlcGJqYlRlVGhnZk9lV2h3aGRnQ2VLYmtid2ZIYWVkQWFZZk5mZGR5aEVhaWdWaHlmcGRLZkVmUmdnZzdlZWZoYlplNGdIZ0VlcGJBZ1FlVmc5ZzRlU2czZWRhNmVhaFZkZGdaZEVjRWdSZUNjQ2gwaFZodmZFY1JmTmh2ZlJoM2ROZ1ZoRWVpYVpkV2ZIYUJma2VJY1hjbWdZYlZiWGFrYkZlbWZjYmdhTmU3ZFZnd2VNZWFmYWNTZlFnZmVHZkRnMGYrYVpkbWFaaGhmY2ZGaFZidmhXZGtnY2dkYUhkUmdNYmRjSmZtaHRieWNOYVFmd2g0Z1NjMGJCYlNmRGRXYlJkY2ViZ1hhWWNYYlFiZ2Z0YzRjT2VSZUpnTmZIYmthTmhZaGFjamYxY3doZWgwZmdkS2hTaFVlUmFvZ2VkQmhsZjVlTmJpZXdhWmFIYWtlUmZSYmFoRmdjYVpiYmMxaDRhVGRjZ1ZjcGh6YlJkMGZrZGtiVWdBZFloWGVFYjFkaGd2ZWFhVmZZYWVjWWZUYzFmWWFYY1ZhZGdLZEZobWdsZGhoRmVoZGhnbWdGY0dhWmJtZ1liU2ZJZHVmSWNGaHBmTWVIZ1ZjUWhvaFVnbWFsaHJkTGdoZGdnQ2JGaDFjQWhsY1VoaGRCZWtlVGZIYlphMmZVZmtkSWdWZ2VlQ2dSZVhjSGQwZjBlUmJGZzJhSWg5Y2FoMWhwYklhUWYwYmxnYWJkYlhjaGNMZ2RleWJkZkRoVmcxaGtlUWJHYldkZ2dMZFJmV2E5YlhkUmRpYUVnRWJKYTFhb2dJaEpoaGZVZGpnV2VCY01mWmVaZGlnbGQ4ZEZmV2RwaHljVWFYZmRlWGRTYWhhWmFwYlllVWdSY2RkTWJrZUVoMGRLZEdiRWdrZFZmV2Q1Z0hiV2NoYTFnSmFUYm5kaGIwY2FoM2VwZ2pjVGdXZ3BoTGdEZHdmOGQ2Z1phRWd4ZjJhZGVsZ0pmQ2hGZFhiZ2VnYlVmeGVrZFlnTWRsaGxmL2ZjYWphbGU0Y1hkVWVwYkZiY2hIYlZjNGdTYzNmZGE2ZmFhVmhkZlpkRWVCY2tmZmNDZzFiaGR2ZFdiQmJ0YTVjVGJuYzhmNWZSYjJoZ2ZWZlNlRmhCYkhkRWRHY1pkeWJWYWhnRmZ1ZmNja2F4ZzNmSGhrY0llQmRZYkhjb2U4Y0diR2ZZYlVmWmVtZVpmaGRjZ0ZlVmNuZENoRWFsZC9oU2FCaE1hVWZNYlRkbGc2ZWZma2UwYWtnUWNnYU5iNGJFY0dhUmJNZGRlbmVaaFNnUWhoYVZnNGZkZWhjb2ZaYkZkamJBYVZmTGVTYVVnU2NKYVFkNGRGYURjQWRoYjFoWmFVaHNoSWRjZTJjVmE5ZFdkUmJBaFpoYWRBaHRkRmRiYXhoRWFUaGJjMGQ4YWhhSGhTYjRiR2RaZGpmZ2UxYUphR2dRYVplSGR6Y2RkdGRGaFJlQWVvZ0FjemFJYjViRmZuZFJlaGRBY3doaGN2ZkdlRWR4Z21mWWRYaEJhVmZiZzFocGhIYUhnUmIxYlZjV2hqZnBnbGFEY2hnb2U5ZERneWc5ZXdmTWYyYklnV2VMYVFkOGJKZklnVGhkYWxkQ2FCYWxoZ2ZQYXhmaGJlY2NoMmdKZnlkY2dIZ0JoSWhRZjBibGVhYmRkWGhoYkxlZGZ5ZndjbWZIZ2hjMGdRZ0NhV2ZnZ0tlV2VIYkliUmJSZjJiRWR6YkNkbWFNYmllRGVHZ29ncGdJY2pnVmF4Ykhnd2cwYWxmWWVCYW9iQ2NQaGdmVWFqZ1NlZ2JsaHBnTmJSZWhkc2hIaDJkUWdEYkFmaGQ0ZFJjSmR4aDBhN2ZQZW1kSmh1YklmQ2hJZUVlQmZBYWdmWGdUZ1hnQmhMYVNmbGFvZ1poYmJVZUJiY2FkYWxnSmNDZUZlWGZoaDJjRWFrYnNkWWhRZDFnRWF3aGZoRGhzaGRnQ2VSZHNhbGZIYXpnc2EvZUhjemY5aDZiZGNGZWNhV2NHaEJkQmRoZUJnMmU5aHZoRWRSZE5ldmdSYzNmTWhUZ1JlMmFnZ1ZlUWdCYTViSmNRaENla2Y5ZkdlbWFZYmpoS2RCZ1JkM2RTY2tjb2NPZGViSGVnZEVoRWhXaG9oK2JaY21nWmRoZGNkRmNWZHZoV2FrZ2NoZGRIYVZjMGhjY2VmaGZRYzdmTmFnZW9lbmVEYWtkRWZHYkVlSGZsY01oTWNDZk1hY2FBaFViRWR4Zk9iVmR4YkxmRWRCZWRiUWNZZWlmbGFhZWNiRWRoZ0RiU2hWaHBmMWJlZkVkdGczZGVnbWVsYlhhQ2UxZFZiTmRQZ1Zja2RMYmJieGNsZkhjWWNUYWdmTWFRZXhkVWJuY1FoUWhjY3ZjT2dCYUJiN2JjZWhnZ2ViZ09jaWJBaGVlSWV4Z2diZWNUaHpha2JrZEhheGJSZm1iUWFIZDFhTWJZZlhjQmZWZGJiMWdwYUhlSGhSZTFjVmRVY2ljbGVpaGRma2JsaE5jYWJrZ3NnUGJVaGhnQmdrYlRkSGNaaDJiV2ZnYXdlYmRQYmljUmVkZkJhaGNoZGVnV2hTZlFjbmVQYWpoTWRjZkNkZ2VZY1VoZGZYZUFhZmhlYjNob2E3Y1djMWJsZVpnRWRHZ2hkUWdiZTJjOGZSY0VlMmU5YUhhY2R4Y05kSGFhYUJlVmdJYVVnQmdWZVZjTWJpYmNkRWJXZDJkb2hoZVdoVGFrZUNoQmVsZ3BjbGFZYVVmSWFVZ1pna2daZnFnWmJpZ2hjNWdUZ2tmVmNhZVJjeGcwZ2RnVmZWY0piMGNhZzNhcGJqZ0VlR2VOY0hnSmNWY0lhUWVaZEVjeGgyZWRibGFKZ0NoRmNYYmdjNGhIZERhOWhoYU1iemd3ZkdiRGNSZkVjQ2NPZWloSWZ3ZkpoUWRZaE5mT2V3ZmNnVmhHZHlhTmNaZ0ZnaGc5YUNkQ2UwY1ZmdmhFYVJnTmN2ZlJhM2dNaFRkUmMyZWdhVmdRZ0ZmZ2hKYkhjamhZZWdhR2hVZkVnbGZKZ2dnZ2RuZUVoa2dSZHBnRmFqZEZiRWdWaHpjSmRiaEdiUmVsZGhlYmJWZFVhYWJFZHdobGVKZEJiVGdRZ0FjSmRpYm9jamdiaFJhMGM0Y0JjRmVzZmRhUmdEZTBkY2VNZTNoOWVlaGFjQmZWaDRnZGJoYUpiTGhHZUVnTmZaZFlhbmFKZXdlY2dFZEFoTmZSYnlnVWJLZEtjQmJrZzRhTGhpY1lob2dKZWhkQWhFZ2FmSGc0YU1hSWRVZVVkTGREZWhnVWJoZVVhaGU1Z2hlR2VXY0pmUWFSY3hiQmdtZWNmbGJZYVZjYWZuYUpiUmVkZzFjZGNJZ1FieWdjYWxnVWMxZDRodmhXY2llTWhpZVlkM2ZCYVVkY2VsZ29kVGJSY0VjMGRRY0hoVGRKYXJmQ2FUZW9kQWJLaEFmUmREY1VjaGVaaGliWmhuY1pnMmVVZmthSWFWYmVoSGFZaFNnU2J4ZmhmRGNXZldhSmd5ZkFjeWNrYUZoQWJRZ1lhV2VlZHlnc2FiZE1namZrYmdkRWRnZ29mUWdIZjJlNGJoZ1JnV2g4Y1JjRWIyYTlhSGFjaHhjTmRIYmFlQmRWZUloVWVFZmRnZWVIY1FmRWRQY1diQ2ZnaDllSGdYY2thRWJHYWxhTWJxZEtoRmhOZkxoR2d4aFJnN2JlYzNmeGV3ZUdkMmE5aGNkUWFUaGNlZGRWaFZjSmYwYmFjM2hwYWplVGZXY3BmTGhEZDFoSWVRYlphQ2ZNZjBjUGVCZWNlQmRRYlhlWWN5YVZld2cxZVJiRGVSZHdhU2RJZkRoOGdnZURiUmNFZWRlQWMzZTBjMmdSYTNnY2NKY01iQmdvZWJlWGcxZVZkbWdXZEJhVWVxZlVmbGVvY3FnRmVIZThiVGhIYUVlSWZWYlNmRmZCZkhnRWRHY1pheWdWY2hmVmdxZGNibGdGYTNoVmMwaG9jV2dQZnllQmZhYlRiU2JNaE9kWmhpY2dnMGNQZUJnbGNqaGNlRWdjZmRjSGRWYVZlU2hkZkdidGY2aFlhMGIxY3FmU2V3YjlhU2hFZEdlUWhQaE9hVGhnYVVjQ2gxY0lldGRKZkZoTWJKY1ZnQWdaYURlWWduaE5oZ2RmY0dhSmJEY1NmVmNwaDFnZWVFZ3RhM2NlZ21jbGJYZldmUmhBZ1pkYWdGaFplTWdaY2hlMGc1YmJnMGFkaHpoRWIwYWRjb2RGZVViaGZRYVJheGZnZ29oZmZCZmRoWmdKZWplMGVTZGRnMGdwYktmVWNEZXdodmVWZFVkd2R2ZldkeWJoaG1mYWhTZVJoWmdiYXdhaGRMZ0hkVmJSZGNoVWNpZDlnQmFlYm1kTmhOYWFka2RzZ1BmVWVoYUJoa2JUY0hiWmEyY0FkQWJkZUJmTGdTY1JlY2JTZTBnMWdMZUZhemhjZStkUGZIZnhkSWZGZDBlVmJhZEpkM2ZSZUxmUGduZk5neWJmZlZla2dRaEdkV2hnZUxhUmFXaDhkUmhFZTJiOGdhY2VjaGU5ZHRjYWVCaFZnSWFVYUVkY2JRYVphbmdKYldlRmhXYUlkOGRYZHplWWZiZUJobGhrZHFoRmNGYmhjTGZKZDFjSWhqZlpmbmN4ZXdhRWF6aG9mVWdCZEVkbGNVZkdjaGF4aDBnWWZ5ZjVlcWVUaFRlRmNoZURnMWhJZlFmWmRFYXhmMmVkaGxnSmdDY0ZjWGdoZTJlUWdBaDVhTWZGZ2dnc2JzZ2NjamRaZTRjQmdoZVlmRmFGYm5nbGQ0aEhjM2g1ZmhlUWYxYWRhWmVFZkJobGFvYkNhMGVWY3ZoRWdSZU1keWZUY25jOGY1ZFJkMmRnYVZhU2VGYUJmSGNFY0diWmN5YVZoaGQwZmtjZmZCZEFlN2ZHZHdlVmFWZEhkQ2M5aEZlV2FTZUJkUmdGY1Nmb2F1YUpjMWdWYXljV2dnZEZkSWFVZnhkWWNHZVBmU2VRZDBlWWEwaFVoK2hRZWdlOGJKZU9lbWVSZk1hZGhuZlphU2hRZGhoVmc0YWRhaGVKYkxjR2JCZ0VoY2NOYWloY2JpZ1Bka2NnZEZoUWJSZFFkZ2JOY0FnZGI3ZWVlamExZ2ViUWZqZm9nWmZhZUFhdGJGYmJmeGhFZlRhYmQwYmRiemZUZWtkNWFraFBmMGZoZFFoUmZ4ZUJnbWJjY2xnWWJWZGFibmhKaFpjT2VWZmtoRGNSZ1Fjc2EwZFVoRmg0Z2pkUmNtY1pnN2dZZlRmWWFBZkljUmVrZlRnVmVGZElnYmFVZm5ld2MvYWNhMmRNY1dnUWJFYXNlUGFVZmhlQmJrYVRhSGJaZzJlVWZrY0lnVmNlYkNmUmdYaEhkMGQwZVJhRmgyZUpnemRlaERnNGdkZURid2dWaGFiYWFHZVZiTGRJaDNkb2ExaENoMWVrYVJlVGFXZVpmMGREZkRleGF6ZFJjaWJrZEJmTmJraEZjT2ZjYnpkOWNJZVVkRWRjYlFoWmZuYkplV2dGZVdncGF5YURlSGM1Z2JoWWVCaFpkcGRZYlJiWWhZaFphaGRSaG1jWmdtY0ZhNGFHZzJiRWJaaENhRmVCZU5jRmZBZkFkeGNhZDJkZGdqY0NjemE4Z0ZlVGhBY1phWmNLZndlSmIyY2ZkZ2NaZE9mRmZTaHBjL2hFZmhjQWJ5ZVFkMWdsZGlkY2duY0Jld2VTYUVjTmZKZFdnbmNWYjRmQWdqYkZjNmNZYlZoWWJYY0hobGRBZDdlYWJSZkFhcGJWYzFoWWQ5ZVRleWNjZWFjUmR6ZFJkSmJTaEZlRWVKZUhnaWg4YWhkTmVFaEFic2ZOZkJlUWNsYlhjeGdnZGZmWWRFZXNkV2RHYUdmWWFVYlpnbWdaZ2hhY2NGZ1ZldmNXZGthY2dkZ0hoUWVFYmFjSmNpaFFhdGFZYndhTWJ2Z0hiQWE4aG1oU2hUY1FhSmNFaHliUWVBZkRoVWZkaHdiZGVIY01mWmVYY3hkWWNVZ0pmemF3YWtlSWMwaGdiT2hIZEFja2RoZWVkQWFrY3lkZWJnZHNiQ2dIaDFhWmFjYk9ibGVoYkhkWmNnYm9kNWhiZjBkZGh6ZEVnMGFkZm9hRmNVYmhmUWFSYnhoQmRtZU9leGRBaFZjWWdpYlphUmVhZWtjcGRYYkZjamJ0Zm9hRmhrY29jamFRYURkTWIwaExkM2ZCY0ZlZGNIZ0JnSGVIYlJjMWVWZFVlbmRSY3JoZWVtZE5kTmFhZWtkdGhKY0hiVWJKZWtoUmJGZXhlMmVVZGtoSWNWaGVlSGVZYlNmU2F4YWhjRGRXYVdoSmZ5ZGNlQ2RZYUpjRWVVZ2tjVGFkYldmVmVMZ0ljM2RRYmxhRWVoYWRjWGVUYVNjQWNIZFJnU2VvZFJoRGFtYjhoVmZmZVZkOGVDZEpobGhJZWNkR2JFZnNiUWdLZlhiSmdMYkZjWGJwYStiVWNUZDlmWGFWZXhjWWZFZkljRWhKYVFhYWdGY2tndmdLY0dia2Q1aFdhV2c4Z2ZmVGhnaFllM2dWY1ZiSmQwZ2FmM2ZwZWpjVGRXZHBoTGdEZDFhSWVRZVpmRWZ3ZStoZGhrZ3hlQ2hXZm1nTmJjY0Vna2hzZ1loUWYxYmxiaWRjZ25iQmd3ZlNoRWJOY0pkV2ZuYVZnemdRY0RnaGZRY2FkVmhkYVplRWdCYWxkb2ZDaDBjVmN2Y0VhUmJOY3ZmVGVsY2tjVGNSZTJmZ2ZWZFNlRmZCZkhmRWdHYVpneWZWZWhjVmNxYmNhaGdnZXhkVmUwYUpjQ2dFYmloNWZyZUdoR2ZjaEpnZWIyY1lhemJDZ3hib2hTZFVnMGFkaEdnTmQxYlZjU2ZkYUdmdGI2ZllhMGcxZnFhU2h3aDllU2NFY0dlUmZNYWRkbmdaZGFkQ2d4YlZhbGhkZ2tiWWN3Z1ZiemU1YlFoYmhuZUphNGJOY1ViaGhlY1NnUWhnZ09nTmd6aFphK2VZZFVlTmRYZ1doUmZBZ1pkYWJBYnRlRmdiYnhiRWFUZWJkMGhkaHpjRWgwYmRlb2dWZ3hlb2FWZ0JobGN0ZDloV2FGZlliVmFhaG5lSmhSZGRnMWdkaEtlRmRtYWxnaGhGY2hnaGNtY1NlVWN4ZG1mWWhYZUJoVmFiZTFjcGFIYkhkUmcxYlZmVWNuZFFnNWFQYnpjY2JZZE9jQWhVZVBoRmN4aEJnNmFUZ0RhOWUyZ1RoVWFJaFloYWRYZllhSWZTZDFmRmJEZlJjMmdJZzNhY2hHYTlkSWNVZGtibGhBYWRkV2doYVFlWGhYaHBkcGJWZDFna2NRZkdnV2VnaExoUmdXZjloTWFHZm1iTmJ0YWNjeGdOaEhjYWVCZVZnSWFVZUViY2hRY1pobmhvY1liR2J5Yk1jaGJOZ0Ria2JVYUJjVmVJZmdnTGYxaEVoWWRlZHhlUWNnYU1jeWY4ZnplQWRTaFlkVmZDaFJjMGhWZUFnVmN0YTBnTWNGZUJjamhUaFdjcGVMZ0RhMWdJZVFmWmFFZXhnMmVkaGxiSWdSZVFjamVFY2ljVWJRZk1mWWRTZ3lib2EyY0llRGZrYytkRGQwaHNhZGVVYzNhc2RzZEJkQmFzZzFkUGRoaEloTGZjZTFjZ2M3ZVRia2ExZG1jR2hCYU1lMGFiYVhiTWZUYVJoMmJnZ1ZkU2VGYUJnSGhFZ0dlWmZ5Z1ZmaGdWZ3FhTWNSZ0Fja2hFZGtkb2dVY0lhU2FSY09lR2RuZHdlK2FaZW1iWmFoaGNoRmdWZnZoV2NrZWNhZGJIYVZmVmZTZWRnR2NzYzVoSWhoZjRodmRTZ3diMGhIZVJnQ2NKaFVjZGFHYnhlNGFRZWhmVmQ0ZmRjaGRKaExkR2NFYU5oWmRZaG5lSmh3YWNiRWhnY0FhQ2VBY2thd2JlaEVoa2NpYkxmaWg5YWFkUWVSaEliRGNRZGdndGRGZmJheGhFZVRjYmYwaGRhemhFZjBiZGZvYUZhVWdoaFFjQmdGYkVoMWdOZzFmWWdYYUtoeWZFZVNjUGdoaDVmSWNEZUVlTmFoZkZkaGFoZm1hRmVHY1phbWVZY1hlQmZWY2JmMWFwaEhmSGVWZjRmVWJBZlRkRmhyaGVmQ2Q4Yk1lUGJnY0poQmRRZnhiSmcrZ1pjbmJaYzJjVWJrZUlmVmNlZUhhWWZTZVNieGhoZ0RnV2VXYkpleWZNZXpjRWRiYkJha2RsaFlnTmd6ZkVhRmNOaGlhZ2V3Z1ZhVWJNZzZjR2ZXZWdkTGZSZVdnOGdSZUVhMmM5aEhlY2F4aE5mSGhhZ0JhVWhMYkViUmRSZlZjWmNuZkFhVWVWYURka2UzY1JmMmZOYlZoVWJEZnhkcGdZYlJjWWFZYVphaGJSZm1oWmhtaEZkd2VWZFdmOWRhY1JlMWI1YmNlQmVoYmRnMGdhYVNlOGFnZ0hjbmVoZEplRmhYZWdmUWhaZUVkeGcyY2RkbGdKYkNoRmVYY2hhMmdFYWtoc2NZaFFneGZvZmpmSWhUZ1Zkd2ZTZGhmWWZLZkNlWGJoZXFkU2dXZjFnUWdhYlZmZGJaY0VoQmFsaG9hQ2IwYlZodmJFYlJiTmh2ZFJnM2ROZ1FlQmVqYXRjUWFTZkZmSWVTYlJiQ2dCZWpoUWhGZ2tjdmZjaEVidGZkZVZnMGZvZFdnYWdXYkVnV2FHYkdoWWZVZlpjbWhaYWhlY2hGZ1Vjc2NHZnhnUmVZZkhlVmVjYkhjSWZDYTFkM2VjY2xhc2FtaERiZ2YxZUlmT2RtZVJnTWZkZG5oWmhTY1FiaGRWZzRlZGFoY0phTGhHZEVkTmRaY1lobmdJYWloTmhSYndjV2dHZHhlUmYxaGVmVmV0aHNlVWRHZmxoWGJXZFJiQWhaZGFiQWN0ZUZlYmN4ZUVoVGRiYTBiZGd6ZFZid2dJYXVlVmRCYTBoY2ZFZ3docGhNYmNibGZZZlZkYWFuaEpmUmdkZDFkZGRLaEZobWdsZ2hoRmVoZmhibWFGZURjUWRqZE5lU2VVY0hiSWZWZ3BoR2VEaEFjWmQvZFVibmdSZXJjZWZtZU5jTmdhYWtlc2VQZlVkaGdCZmthRWVWZXhnMmdVYmtlSWFWZGVkSGNZYVNjU2R4YWhnRGRCYkdkdGgrYldibmRCYUliUWEwYWxjYWNkZVhiaGVMaGRkM2JwZmhnR2hWYmRjVGZWZWlmWmdJZ0JnRGdzYVJkRGZtZThjQmZKaGxkMGZFZFBmRmZ3YkhoSGFrYmNkWWhNYm5oNWNXaFJnMmhOZXlhQ2dsZDFiWGFTYmhlWmNwZFlnUmdZaFlkWmdoZFJibWNaYm1jRWE1YkVkMmU5YVNmUmFoZ2tjWmdYYlFlWmM5ZVljbGZCZ2pkVGRXZXBmTGZEaDFmSWRRZ1pjRWN4ZDJnZGdsaEpjQ2hGYVNjd2YrZVFoQWFSZ1BnUWd4Z2NibmNKZFhiQWVFZEVnUmRNZk1kUGF5aGNkcWhCaENnVmJ5Z1FjMWFkZVpoRWNCZmxnb2hDZTBkVmd2ZEVoUmJOY3ZoUmYzY01mVGRSYjJoZ2dTYlNnaGJ3aE9lUWV6Zkphd2JWYmxjUWM0Yk5kUWJRYjZmRWNnZFJoQ2NhY1NkeGFEZ1NnemVJYVVlSmhDY05maGNNYVJodGh2YU9oeGFWZ1BnWGFBYXhlU2dPZ3lhMWg2YUFiUmhnYnNjRGdVY29hQWdRZTJnTmJtZmRmbmJaZ1NjUWVoZ1ZnNGFkYWhnSmNMZ0dkRWZOY1plWWVuY0piNWZhZjJhSmFEYlNlVmRwaDFnZWZFZXRjM2NlZm1lbGZYYldiUmdCZ1FlTGFnZXRjTmZmY3hiRWJPZGNkbGFwaHphUmYwYmtia2dVY0FkWWZYZkVhMWNoZXZkY2FnZFJhUWRQZWlkY2REZ09lVmFjZEVjR2FDaGdkdGZXY2xiY2NsY0hjSGNaaHZiZWhsZHBnVmdiYjFmcGFIYUhmUmExY1ZmVWduZ1JncmVlZG1nTWNiY0tneGdraFBnR2R3ZHRnT2FUZEhiWmIyY1Via2dJaFZlZWdIY1loU2hTYnhhaGNEYkVmQ2dSaHlmZWhDYlliSGNDZWdkMWVhZ1phWGZoZVdkYWRtZmRmcGVCYVZkQWY2ZUdhV2hnZExhUmJXaDhiUmVFaDJjOWJIZmNmeGNOZkhoYWVCZVVhT2dIaHhoVWJRZ2JkaWNCZFdmQ2NHZ3BiaWNYZ1hkY2FlY1NlZ2N0ZHBiY2hRZDBiWWRMaHhjUmI2YlpoamJWZytmR2ZTaG9mVWVBYkVkbGNWYVRibGJKZC9oWWVEZ05ncWZUYVRkaGFMZ0JmRWc4ZFFoTWJEY2NoL2JDZzFhd2ZPY1VmRGZZZnhmUmZnYU1nRGJhZFZnbGFpZGNibmNCYXdkU2dFYk5iSmVXY25hVmY0aFNjeWdFYTdnT2MxaGNiY2hFZkFlUmhvZFJiVWFzaHVlWGVWZThlZ2VCZkFhWmRkZUZkQ2NsY1RiRGZWaGdkVmZHYVdmcGJZZlZhaGhWY3FkY2JsZ0ZoM2JWZjBlb2hXYWFnV2dFYldmR2JHZVpjYmhaZm5odGRoZ1llRWY1YUZhV2NrZGNiZGZIYlZoVmVTYWRjR2J0YTZkWWcwaDFocWREZ1VmQWZBaEVlR2F3aEZhZGNtZnRhU2FVZmdiNWY0Z1BmeGFKZ1hoR2dCYmRiWGFMYmphY2IrY05leGF3ZkxnVWJsYXBhK2JjZ3diSmQrZmVjamNKZzllV2RSZEFmWmJhZEFjdGFGZGJleGFFY1RjYmcwZmRjemRFYjBnY2grZFZlQmhwYlFlRGJ4YUJiN2djYWdlSmd1Y0ljd2E5ZEtiWGNWaGRmS2ZGYm1ibGRoY0ZmaGFoZW1oRmJHZFphbWJZZ1hnQmRWYkpkaGh4YkhmRmhSZXdoYmZYZERiMGU0aEdhRGRZYUxlTGJBZzVhZGRXYmxnaGh0Z1JnVmV4ZjJmVWVrY0lkVmdlZkhiWWJTYlNheGFoaERnV2VXaEpleWdjYkhlQmRJYkZod2NFZ0lmT2VpZTlmTGhPYVRkOGErZFZheWExZkpkU2dTYjFndWJGaHpjMWdlaFFoV2NkZnRoY2F4Y05nSGVhZUJoVmFJZVVoRWhjaFFkWmduYUplV2hGYldlcGV5Y1VmWGdkYlhnVGJSaFFkbGdLZUVlVmFNZlphQmFRYW5mTmVDY1lnbGdHZkNkb2JVZkVjeGcxaFFmQWRBY0VnZ2JhaHpnZ2ZtaFRiU2JzaEZoRGJ6ZE5hQ2NOaGdnMGR2YWRlaGIwZ0VhRmVSZm9mamNWZ0FlMWZkZkVlUWNwYWxkV2NIZEJnd2NTYUVhTmVKaFdjbmZWZDRlU2YzaGRhNmJhYVZjZGNaZUViQmhsY2hhRWhHZzlldmZFYlJiTmV2aFJiM2VNZFRhUmEyY2dnVmRTYUZoQmFIZEVmQ2I1ZThnRmVWZ29mNmdLZjFia2J5ZVdhMGRwYVpiWWRHZDBlV2VFY0Noa2ZVYmJiWGd0Z2hjT2JGZXNmamJIYXdobGFhY1NmUmgxZWJiYmgwYkZoNmJZZzBnMWJxZlNhd2g5YVNmRWFHZ1JkTWdkZm5hWWNQYmFhQmVWYTRkZGJoY0plTGhHaEViTmZaZVlkbmFKYndoY2dCY29lR2ZIYlFjOGhuY05ia2ZzZ3llWWNVaE5nWGFXZlJmQWdaZWFmQWh0Z0ZmYmR4ZkViVGFNY2tiNWcvZk9lVWVkY29mRmZVZ2hiUWZSYXhoQmdtZWNlbGZZZmRkSmhIZ3diVGRMZGdiTWhQYmVlaWN3ZnZiVWdVZ3dmdWdGaEhmdGVtZkpnWGhsZlpiUmRWY3BoSGJIYVJlMWhWZVVmbmRSaHJoZWdtZ05jRmJKZkVlVmZmZ0FmRmg4ZndkQWF5YklndmFBaGdoY2ViaEJjemM5Z0JoS2NVYzBjRmZIZ3loY2dnZmNhR2ExYkliUWNsZWxlVGRlZlZiSmVMZmRkM2VwY3BhVmExYWtmUWZHY1dmZ2JMY1RkU2FFZmZoUWN6aDBkSWJKZDFod2VUYk1nVWVVYU5lWGdoYlJiSGFKZ3ljSmJIYkFhMmFwZHZmVWFUZEViQ2FCZ0ZlVWE5ZUtnRmdsYVdlWmVoZHhodmZaaGpncGVhYlZlV2g5Z2FjUmd4ZDBhZGhWaFZhSmcwZ2FoM2hwYmpkR2V5ZXNlWmFEZHdkWWJRY2VkVWd3ZmliUGJoYnNiUmhHYXpjUWF6YVhoQWJ4Z01mQ2EwZUpiSWNjYW5iQmN3aFNmRWdOZ0plV2VuYVZoNGJTZzNjZGc2Y0ljQmFGaFpmR2JFZjFnb2REZ2tnVmY5YkVoUmdKaHljV2VuY01nRGZUZWtiSWZWZVNkRmhCZUhkRWNHZ1pmeWRWYWhiVmVxaGNjbGhGZDNkVmd4aDVmZWZPaHlnNWhCZUdlQ2FoZ1JjTWVXZllhVGVNY1Jlc2VvZUhkeWVKY1BoVGh4Z29kQWhmaEdia2RZYk5kZ2JzZHNjRGNsZTFiU2NRYnloMGdXZU1iM2VZY2ZoRmIwaFlmc2dkZmxnQWZPZEdnQWRKZlpoTGd5ZWNhOGVKZkFiRWZUYkJmUmQ5ZDFnTmN3ZjFkM2ZhaDNoOWZhZ0dmMWRsZ05oT2V3ZmxjTWJkYURhc2dUZGJjMGRkZnpkRWUwYWRob2dGaFVoaGNRYlJleGhBZWdmUGdRaFFkVmZZZGlnUWhRYUphVmJjaFlkRmNuYVJoaGRCZ2dnTmhtZlFjR2FaYjRoWWhTZkpiT2diZXdmaGJIY0ZmZ2FCY1ZiUWVIZTFocmhMZldlc2NaYUliZ2VKZWNoWGFoY0FoMmRRYUhiWWhrY1Voa2RrZVZiYWFYZzhoSmJZYlJnaGREZVdlV2RKZnlnY2hIYUJoSWdRZTBlbGJhYmRiU2ZvZE9nSWN5YThoN2dHZFZmbGJFaFVhU2ZGZlloWGJrYVVoUmJFYjJnOWNIaGNleGhOZ0hjYWFCYVZhSWNEYlVjNGNjZ1RlSGRKZldnRmFXZHBieWNVZFhmZGVYZ1NnaGNaZ2hhTGN4ZmhlSWNOaEZkc2d5YktmVGNVY3BjQmRTZXBlVWNGY0VocGdjZUJlVWdGYW1hYWYyaGRoamRDYnpnOGdGaFRkQWhaYVpjS2Z3ZEphMmRmZmxndGFDYVRhbGVKYzJlRWJrZ3NjWWhRZDFibGJpZWNlbmhCY3diU2RFYk1lZmRHZ3lnZGU0YkhhM2VkZm5iYWFRYU1oUmRXZVVicGFtZ1Jkd2hBYWhmVmFrYWNobmhYZkZoa2JUZVJhMmNnYlZkU2dGYUJiSGJFYUdhWmV5ZlZjaGhVZmpoTmNGaEZnL2VBaDBlb2JUYmFhWGNVZFdnR2ZYaHNlSmRaZ25lWmdvZ1dmbGdWZHZmV2hrYWNkZGVIY1ZlVmZTY2RkR2R0aDZiWWcwZDFicWdIZDBmY2JBZFhnemdOZ01iT2ZEZk1lRmJRY21nY2U1ZE9iRmVVZU9lZmVSY0VjTGVMZlNnQmU0YWNmaWRvZldmRGF4YXdhd2RLZ2tmc2NrYk1jemhNZFNoV2FWZjFnTWFPZjFmOWZGY0xmVmJRZlRjTGhrZ2NhK2NSY2dkc2U4Y1hnQmhnZ2NnQWRoZEFmcGJOZUZjWWZHY2VjSGU4ZFRnUGZnZU1kWmhGZUdoQmU2Y1BhQmVoZ21mRmNHZFpobWRZYlhhQmdWaGJkMWRwYUhlSGdWY3NlYWJBY0hmUmZqY0xiQ2NJZGZkYWdoYWtoUGhUaHhhQmIwZ1ZjM2RZYWloVWhsY3dnVmdLYm1jMGFTZ0diUmNoYUliUmJHZ0pibWZlYVZicGNJZ1FnMGdsYmFnZGJYZGhhTGVkYTNmcGRwZlZkMWNrZ1FnR2hUZDhiRGVFZlNlZGdZZVFoR2VOYUhnSWdSYjlkSGVPaGhnVmdEZVVhRmNRZ1plYWRuaEliQmZIZVRoNGc2Z0dhQ2JSYWJlU2FrZ1JocGhhYmhoWWZKZ2FiaGhRZzBlWmJtZHBjd2JSZzJlWmVCZGJjUmcwYWRhVmJWY0piMGVhZDNkcGRqYlRlV2NwYUxnRGZ3YUJoVmZNZUJna2VraE9jRmNJZVdiWGdUY0VibGJDYVdkRWZZZlFlMWhsZmlnY2RuZkJkd2FTaEVmTmNKY0JnM2Z4YjBmWWRYYWRoNmRhY1ZhZGVaY0VmQmhsY29hQ2IwYlZkbmRYZXhoMGcvYUZjVGF4aEhiQ2hEaHhmTWdHZEJiVmVKZFFmemJFZ3pnQmRnaE5oK2RjZmtoeGQzZkVkUmc5Y1lnS2VqZVZnZmdWYnlhZ2dVZmJjbWE5YWhiS2MzYzlhdmZXaGtmY2FkZEhhVmNWZFNjZGJHaHRiNmdZZzBjMGY4aENjbGIxZFNiUmZHZVJnUmhkZ2liSWNhaENoMGZaYjJnT2NsYWNhRmNYZXhhY2hSZmVoVmFoaHdlY2ZFZWhhRGhTZFZjcGgxZGVoRWN0YjNjZWNtY2tnZWRIYXhmQWVSZFBnQWN0aEFoYmh3ZmtkVGNiZmxmcGZ1YUVjMWhkZ2hkUGgwYWhnUWRSY3hjQmdtZ2NkbGdZY1ZkYWVuY0pmUmdkZzFkZGZLYVFlaWZFYnplV2RVaDlmbWNXaGlmTWN4ZFloUWdJZFVoSWJSZDBkQ2JlZ0ViOGhIYUhiU2RaYWplZWRBYUVhWWRMYUFlMWRLYUFlQmJBZjNlQmVTYndhemRVZGdkOWVBZEtheWNJaFNkQ2JWZzFoRGRHZkdjSWQvYkpmVGF3Z2NhQ2VoZ2tnV2RNYUhjZ2hFZE1kWGFwYS9iUWgxZ1JkU2JVY0RkeGZZZVJlMmRZaEtoT2NXZTllSGRjZXhjTmJIaGFnQmhWY0lhVWdFZmNlUWJaYWphUWZaaFJmMmZwZDZjQmJ6Z1lnRmRTY2tmUmZwYWZiQmdZZElkZmNSY1FheWRaY25jOWR3YUJhM2VSZ2FmRmVSZzBkV2dTYkZkSmJzZ1ljbGNCZmpoVGdXY3BiTGFEYzFjSWNRZ1pmRWF4YTJmZGJsZEpkQ2JGY1NkOWMrYVJjZ2dOYlJnRWhGZVZmaWVJZkhoeGJ3ZUdka2ZOYkNkV2htY0pheGFSYzFoMWU2aGFjVmNkYlphRWRCYWxhb2FDYjBmVmV2ZUVmUmdOZHZhUmMzZE1jVGZFYkdiQmhCYUFkQmZrYlVmSGFHZ1liZ2dWYWhnNWFxYVloMWcxaDNnQmJVYW9oZGZhYVhnY2RmYUZnRWJ3YlVlWmdtYVpjaGJjZ0ZhVmh2YVdha2VjaGRjSGJWZVZkU2NkZ0djdGY2YU5nRWhVYitmQWcwZFloQmJIZ0dnUWNlZ2RkbmIxYVNjVWFCZGxoNGdKZUJmSmFBYkdlRmNaYlFlYmJsY2hld2djaEVlaGREY1NmVmdwYjFjZWVFYnRkM2hlZG1lbGdYYldhUmRBZVplUGZ3Z01jUmhKZzFoaGNBaFljMGRjZmhkRWUwY3hkb2NCYmthUmJRY0ZmUmJCZnRiY2drYUljY2JjZlZjaGJSZGRiMWJkZUtmRmNtYmxnaGhGZmhmaGZtZUZkR2RZaDBjSmdDYlFoQWdQZlJkUmRIZ1NoVmFVYWNjQWNXYTllQmRlaG1iTmNOaGFia2dzZlBmVWFoZUJka2JUZ0NjdGcvZFhobWVnZlZoZWJIYlljU2hTZ3hlaGVEYldhV2JKaHlmZWhEYzVnR2NFYnhic2ZWZ0llVGJjZmZmTGdpaG9hc2VXZ1FnMWhmZmFiamJ4Y1plRGdDYUZlV2dFYjNkSmJIZE5mVWRZaEphS2QwY0VnQmJIYndna2ZRZWJlbmJ0YVdmVGNrYUJjeWFVZFhoZGFYZFNmaGZaZHBjWWFSZVloWWdaaGhhUWR3aEplemNOZ3diQWFXZDlkSGhSY3doMGZkYUNmVmVJZWdjSWd6Y01id2ZRY3lkWWdPY1FjUmhWYkVlTGNGYWRjY2NkYWxmSmdDaEZhWGRoaDJjRWNrYnNoWWhRYjFibGdpYklhRGNVZmthSGJSY0VjSGRXY21iVmE0ZlZmbWJwZm5mYWdRZU5nemhFZkJmbGJvaENiMGJWZHZnRWVSYk5mdmdSaDNnTWNUYlJiMmNnZ0tkU2dGZEpmRmVPZG1oWmJ5Z1ZkaGRWZHFnY2RsYkZlM2ZWZjBnb2JXYWFkV2NFZVdmQWZtZ1lnRWVaZm5ndGM4ZWJjVmJVaHVmQ2NBZ0JlSWRVZUJoQWZjZElhRGFoZTBjTGN3aGdna2REZkZkc2VhY09jbWRSYU1hZGVuYlplU2NRaGhhVmI0Y2RjaGNKYUxmR2dFaE5iWmFmZ1hmSWRBY2VmQmR3ZUxlQWFBZ2xmNWdlYkZhdGI3Y2VnamgxaGViY2V4ZEFjWmFhZEFkdGJGZWJjeGZFY1RkYmcwYmRnemFFZzBmZGdvYURnMGhnZFhnU2hWaEVhMmVJY2hocGZNaFljaWdZaFpmUGZnZ1JlR2NGZGllZ2J6YVVnVWQwZHJoVWhTZmdheWdNaG5ibGRPYVJoVmNwZUhlSGNSZzFoVmdVY25jUmJyZWVhbWRNZFFhWWMwZGNjbGZVZ2hlQmRrZFRjSGdaYTJjVWdrZUlmVmNlYkhnNWdjZlJkVWRnaFJhRmNqY1lnOWZKYkNha2VZZkJoa2NjaGZlSmNDZDBiS2dPZ3libGZwY1NjbGhsZFdkVGhDZFpnSWJFYlNoWmdlZ1hlV2c5YlBkSmN4aHBjSGFNZnpmOWJJaFVhRWJjY1FmWmhuYkpiV2hGZldjcGh5YVVkWGhjZGVjRGNCZVpjaGFZYkZlZ2FXZkxiMGVjZUVhTWV5ZGNnMmVFY0RmMWJTZkVkeGFRZlVlZmExYkplMGVhZjNicGRqZVRoV2NwZkxnRGUxaElhUWVaZUVkeGIyZUljaGVvYlFjV2JpaDlhMmRYaEFmNWNQZ1FieWEwZjdnSWNqYVVjVmdHY2hkRWJHZ0NkSGcxZTZoS2NpYVVhOWdQZUJmb2hjYVhja2UxYW9hUmNoZkFhOGVSZFJiTWJ0Y0FjbmNOZVNoUmV3ZHBiQWhEYWhhWWJDZ1FnbWNSZzdjVGVUZDlhcWFjZ2xnRmEzZVZhMGVvaFdmYWhXaEVlV2ZHYkdnWmZHY0ljemdJZzBhSWhoY3RjdmVEaGdlOWRVaFRobGFWY1BnYWhYZ1pjNmZOYTBjMWIxYlNld2g1aENnRWJIYjVhTWFaZW5kWmhQZlhjd2RoZTRhT2JCZXdjSWRWY3diNGhKY0lieWFBZDFjZWdCZXdmTGdBZ0FobGM1ZmVnQmI5YytnWWJVY05oWGVXYVJiQWNaZ2FoQWZ0ZkZnYmR4Z0VkVGZNYmtiNWUvZ09nVWFkYW9nRmdVY2hlUWRSZ3hmQmNtYWNhbGZZaGRkSmdIYXdhQmRKaFJoZ2RlZFdmVGIwZjRoUmdsZTFkb2dYZ1NlZ2cxZk1kVGdVYVdoT2MxYXBkYWVIZVZmc2VBY0hlRGNjYy9iTWd5ZXdoRGZhZGtmTWdHZlVha2J0Yk9jVGNIZVpjMmFVY2thSWRWaGViSGZZYlNhU2d4aGhhRGhEaHljTWdnYWNhQ2NSZUljWGdraGxlWWZkZzNnUmJoYmRiM2VwZ3BiVmQxYWtmUWZHZFdkZ2hMZlJoV2Y4ZVJiRWEyZDhnT2hjZndmNWFIZk9iaGZzYmhoUGVqZ1JnZ2NBaHhkRWNpZGFkZ2NjaFRhS2RRZmdlMWZNZTJhSWdNZkVnZ2gwZnljWmhoZ1JobWNaY21jRmN3YVZkV2M5ZGFmUmR4YTBlZGNCZ3hmY2hnaFBoaWdnZXRhVGdXaEpnaGREaDFiSWZRYlpoRWZ4ZTJlZGFsZUplQ2FGZ1hnaGEyZ0Voa2N0aE1lQ2F4Z0FneGVmZ0Rod2gxZUJjZ2FRZWRlRWNuYlZhbWFTYTJlZGE2Z2JjMWdGYXpmRWNCaGxhb2hDZzBnVmV2YkVoUmVOaHZjUmgzY01mVGNSZjJhZ2FWYVNhRmFoYlBoUmNHaFpndmJWY2tmRWNpY09hd2dKZDVmQWR3Y1ZhbGJQaFRkTmhmYlZjaWNFZ2NoWmRDZjRna2dLYkZiZGdqYVdnbGJjYVJoSGZSZ3hlYmFlaGlmWWg3YU5md2c0ZmloUWN3ZUJiY2ZTZzNmWWZSYWVjVGVGZmJjVGJGZzhmM2RQYzFleGJEZkdma2FOYmJkYWIzZ3RoOGhXZGtmaGdEaFNoVmFwYzFjZWVFZXRnM2ZlZW1lbGJYZFdiUmJBY1plYWZBY3NlUmhKaDFoaGRBZ1liUWFzYzJnWGhRZ0FkOGdYaFVhaGJPZ1JiMWRsZ21hZGhGYkFlVmFZY2llWmhSZWZhRWFwYkthRmVHaGxhdmZHY0JmWmFtY0ZnbWQ5Y3ZoYmJWaHBhVmRiZzFmcGFIYUhhUmIxY1ZkVWNuaFJjcmhlY21jTmdOZGFka2JrYVRkTWhFZVVoaWRDaGplTWRrZlVha2VBZlZoY2UzZlpnR2VTaHhmTmJEaFdnM2d4YXdhV2duYkJlSWhRYjBjbGdhZ2RnWGdoYUxhZGUzZnBjcGZWaDFmQWZMZ01hMmVnZExjUmhXYjhjUmJFZDJmOWNIZ2NheGFNYmFnWWVSY2xmaWJVZEVoY2NRZlpkbmJKY1dmRmdXaHBmeWFVZ1hiOGVaYVJjRWJZZjdmTGhrZkpoWGZNZmtmMGQyZkljMmY4ZXpmR2ZpYklhS2NCYWtiOWhZaFZoVWQ5ZDBmTGhTZThhdGdEaGpoNGNDY1FjQmF3ZFFiYmZCZGhnNmZkZmdoQmFPYkZjVGRGaDZnRWhnZDRhVWJRZnhkWmdyZmNiaWN0ZGFkU2ZFYk5lSmVXYm5lVmM0YVNhM2JkZTZnYWZWYWRjWmZXaFZnOWhvZkFjMGNRZWhkSGExZ29lOGZKYlNkWmNWYkFiU2UxZ0hoUWdBY1JlT2JHYlVleGR5ZlZjaGZWZHFoY2VsZEZkM2dWZjBlb2dXZ2FlV2NFY1djR2JEZEplY2hOaENoa2EyY2NnQmhzYnFhRGJVZWRncGFSY0FnVWVYZ0VkVGRrZG9oTGdCYTljaWVTYldlNGRBZFZiemJFZEJiTWZ6Y2dkR2FRZmxjZ2Z0aEpjVWZaY0xlV2FnYlpjWmZJYTNiSWVTZUpmUWc0ZEZnRGVBZ2hiM2VjaFZmQmJkZGVmbWZsY1hjV2hSZEFkWmVhaEFkdGVGZ2JneGNFYVRiSmZnYUZmemJHYzJhMWNvYkZiVWZoYVFoUmV4Z0JibWdjaGxlWWRWYWFhbmdKZ1JlZGgxYThnY2RXYlNmQWJsYUZhZ2RoYW1jQ2RYZXRkN2JZYVNlSmVWZmFoVmN4ZkhoRmRVZjljVmJUYTNhUmY3ZmNlMmQ5ZG5jYWZrYXNlUGhVYWhhQmZrZlRjSGhaYzJnVWRraElnVmZlY0hiWmVFZkJmRmhFaEhnV2NYaEpheWJiY1doMWNWY1Fkd2dCYmFjY2QzZjVjTGJmYXpiTmRwZVNmbGFsZ0VkR2VYYmNmTGZFZVdlRmRkYVZoaWdFaEFjSmIxaHRjSGNjYWhnVmFZYVdhVWhzZTZkWmduZEplV2dGY1djcGF5aFVjWGZkZFhlU2FoZFplcGZZZFJlWmFPYktmVmcwY2lkWmZuZkZld2dTYUhoSmRIZVJnMWhnYmRhVWIxZFJlMGdZaHplOWFqZlViR2FwYWJoQmFsYTRhNmNaY0VkeGIyaGRmbGdKZUNkRmFYZGhiMmNFZWtnc2NZZ1FkMWJrYTBhUGFUZmtkMGNTaEZnTmRKZFJmMmRoYmxnU2F6aGhnNmRiYTFkRmFaZkdkRmJaaG9jRmRrY1VkN2hXZ1Zhb2Q4Z1NnVGM5Y1dkQ2hTZTloQmRBZEZnbGFMY09mbWFaaHljVmFoZFZncWZjY2xoRmMzYVZnMGhvZldmYWFXaEVoV2NDZkdnWWRLY1piamVSZ2hlTGFBaGxldmRFZTBlY2dEYUhlUWNGZGNoT2dDYzRnMGFKZkJia2RpY1NkMWVNY09iRWdIYlJkTWhhZUhlWWVYZVFna2FraGtkZGRsZjFlTGdCZmthTWhOY0tlamZzY2pmZmNnYlFoR2VCZHhhMGhoYU1mRWZKZGRoZWVtYWxhWGZXZlJoQWhaYWFlQWd0ZEZkYmd4YUVlVGZaYm1mMWN6YkVkMGdkYW9kRmNVZmhlUWhSaHhnQmdtZmNhbGhZZVZlYWFpYlliWmJKYVJjZ2ZkY0ZoaWdjYmtiUWhSZ2dhVWZWZVNkZ2ZoZEpkQmVVaEhjUGNSY1VoVmFGZFJkOGNhZEJleWdCY3JnTmJTZFZnTmFPYkFlcGNCYUZoVmNWaGtkQmFUZ2doeWhGZ3hjb2RYZmNmV2YwZTRlU2R4ZGhoRGNXY1doSmh5Z2NmSGRCZkloUWEwY2xhYWVQY0RiNWRMYmZjemc5ZXBjU2NVY1FmUWRWaG1kZ2JOYVFjMmc5Z0RjRWQzY0ZlYWJjZDFlcGFPZGFiRWNjYU5jQmNCY0piQ2FLYkhlSmhHZERma2FCYXljVWVYZGRkWGFTYmhhWmNwZ1lhUmJZYllnWmRoZVFjdmZJYUdlRmU0ZkViR2E5Y0VlV2JoZDFoU2VYaEZjSWRtZkxlaWI0aDJnSGV5YVJjTGVBZmthTWVMZlRha2d4ZjJlZGhsYkpkQ2JGZ1hnaGUyZkVka2JzZFlkUWV4YUFna2FjYm5iZ2dpY1NlRmYxYVVkV2VqYnhneGdTZnljVWUvZ1BlUWRJZkxmWGdoZGxhNWJFZ0diOWF2Y0VnUmZOZHZoUmQzZU1lVGJSYTJmZ2hWaFNjRmZBaE9iVmZtYVplNmJYZGhnMGI0aGNma2I5ZnBkU2dWZ2NlV2VlZ1diZ2VhZkdoR2U1ZGRkWmVuZWhiL2ZiZmtmaGZ2aFNha2Y0ZlJhSGFWYzBlWGFkYUhiVmRrZmZoVmVCYnFnV2R3Z1pjZWhFZ0djd2VEaGRibWdoaE1lWGRBY2hlNGZaZGhhdGFIY0dlQmVjYVJkS2Z5aEZod2RiaFZkVmFlYVNoUWE1ZThoY2ZXY0ZnM2RlZ21mbGJYZ1dkUmJBY1pmYWFBZXRjRmViZXhmRWRUZmJneGVVZDJnUmF4aEljNmRXYzBlaGdBYlhlRGVwaG1jY2NsYllkVmFhYm5lSmFSZGRhMWdkZktiRmNtZWtobmRXY1VlcGFtYUhoRWh4aG1hWWhYZkJnVmZiYTFkcGVIZkhhUmExaFZiVWZuaFJicmJlaGpiVWdNY09oRWN0aEhkVWdnZDFna2FBYzNnWmc3ZFVmZ2djZFpjVWJuYllkU2dTZXhhaGZEaFdiV2JKZnljY2dIY0JhSWNRYjBjbGJhZ2RiWGVnY1lnZGMyYWRlcGRIZ2xka2RkYUdhVGJvZkhnYmEyYjhoUmhFYzJkOWFIaGNoeGdOZkhlYWhCZFZkSWVVaEViY2hRZFpobmdJYlhoRmFYaGRheWhQZkRkWWFEYkFkaGFnZ2tlS2VGZWdoUWRMZWhiaGhtZ05nV2ZoYThnZmcyZTlnYWRSYnhjMGFkZ1ZjVmRKZzBkYWYzZHBlamhUaFdkcGJMZkRiMWdKZ0ZoWmJGZkZnMmNJZmhjb2FMZlJnbmRZZGxhWGZnaEpoYmhCZWxlRWhuY2ZhbmNBZi9jUWRVaDljamdXaG5oVmY0Y1NlM2hkYjZmYWhWZ2RmWmRFZkJobGhvZ0NiMGVWZ3ZhRWNWZFZidmZXY25mTmhIYlNhVGJ0YlpmQWhSZU1hQ2VHaERiUmgrZlZibGF4ZGpnZmFuZnRmM2hWZTBob2JXZmFnV2JFZFdiR2ZHYVljVWRaYm1oWmhoZ2NhRmVWZHZlRmFrZ2NiQWNIZlVnVmNKZFhibWJ0aDZmWWIwYjFlcWdTaHdhOWJTZUVnR2RSZk1oZGRuZFpmU2RBZXhiVmFtYWRmbGU1aFFlTWFrZE5lWmFZaG5oSmh3YWNmRWVoZURhU2RWaHBnMWdlZkVkdGEzZGNjV2RJaGJkY2h4ZUFjWmNhYkFndGNGY2JkeGdFYVRoYmcwZmRlemFFZjBmNWVDaEZlVWNoZlFjUmh4Y0JlbWZjZWxoWWNWaGFjbmhKY1JlZGYxYWNjRGNVYkdkbGNwZFFiMmFNZHFjYWhXYVpnbmVmZEdiMWdWYktjU2FFYkxiWWVCYVJoVmFDYVZjNWRyYmVmbWROYU5mYWFrZXNhUGhVZ2hlQmdrZ1RlSGRaZDJnVWJrYUloVmdjYkRiNGJTaFZiaGVnZFdkSWhpYzRiUGRlZVhmeGVJY1NmeGZwYmFkYWdIaGdlTmZEY0RoWWhVZVhia2RJaDZjR2hXYWdoTGRSZldiOGFSZ0VmMmM5ZEhkY2h4Y05oSGhhZUJkVmFJaFVmQWVWZkNkSWd6YU1kZGVEZGtjQmF5ZlVkWGNkaFhhU2FoZ1picGhZZ1JlWWNZZ1phaGRSaG1jWmFqYXhoYWhWYldhOWRhaFJmeGQwY2RhVmdWY0plMGFhYTNicGRqZEhoeWM4ZGZlV2RnaEJnZWNaZ0JoOWQyZGFlRmZJY0tkRmhXYmRjMmRIZDFjb2VZZ1dlVmFrZnFlY2JtZTVmd2ZHaDBnTmRXaFdmbWRSZjRlVWVYZ2RicWVjY25jMWFaZ0VmQmhsZG9iQ2IwYlZodmdFZVJnTmZ2YUdkbmVvY2ZhYmNXYmdlVmhTaEZkQmRIYkVjR2NaZ3llVmdoYlZkaWJQY0ZiOGduY0JiUWRWYUNhSmVqaFZlUGhTZ0NiTWZhYkxneWdnYmlnUGJBZkFncmRIZHhoUWhkYUFnRmVVYVVnSWdTZFViNWhOZXdlUWJsYkJmUWU5YWFmUmdHZGhmTWRKY0hmcGNTZENmeGJ4YTRjTGZUZGhmTGNHZEViTmNaZ1lhbmJKY3dkY2JFYmhoRGJTZFZkb2NuZFBjUmE4Y2liS2ZDZGRkWGdWaEFiRWdaZGFoUmVaZVljYmQwZFZoYmNKZ2hiUmU5YldlZ2drZHNoVWVCZEFmL2dBY1JkZ2V5Z2ZibGhaYkhhWmduZUllWWNmZmtmeGVnYUZibWJsaGhiRmNoZ2hlbWVGYUdnWmNtZllnU2UxZGNnWWgzZ0JoSGNIaFJkMWNWZFVmbmhSaHJiZWJtY05oTmVZaGdhVWhCZUFla2ZJYnJlR2dEZ2tiaWVDYnhlSmZRZGRhamM5aGNlRGcxZTBmYmVOYmljUmh5Y2JhWGZBZ09hRmNnZGNkWmdJYlRoRWNFY09nWGVwaGhnQWcxYVVoUWdTZTJoUWVMZURiR2hZZFJjU2RFaFZhSGdjZnhiTmdIZmFoQmRWaElkVWdFY2NoUWJaZ25hSWZFYVVlRGY0aG5iQWJ6Z2xiWGJIZUJnNGg5YUtmVmg5ZExlYWZoZVFneWdhZG1kRWNpaFdoV2g4aFRmU2R4ZzBhY2hSYlZldGR2Y1FnWGdwYmpnVGhXaHBoTGdEZzFkSWNRYlphRWF3YnJjZmgxaDVhb2VGZFhoaGUyYUVoa2hzZlloUWgxZmxkaWhjY25jZ2ErZFJiaGRNZWJkRmNTZkViM2hIZXljNGdxZExmRmFrYlZlVWdVYm9lOGJZZGdkc2ZyZVZiRWNzZkFiQWFYZU1nT2FSZnloNWJBZEJiaGFNYlRnV2NTaGthOGdWZGhoMGIrZmZhbGRFYmxoV2MwaHBhZmJZZkdnRmROYU1nbWRZYlVmWmZtYlpkaGdjZUZhVmh2Y1dna2VjZ2RlSGFRYWNhWGFJZERiNGRvaExkVWIwYzhnUWgxZHNhYWdXYVRkZGhBZmRnaWNKYmVnUWNrZGRnMGFkZGxndGZIZEdmRWhKYUljYWIyY2xnYWdjYkVoaGNEYlNmVmFwaDFmZWVFZnRhM2JlZWpkUmJlZFZlVGVvZVpiYWRBYnRlRmdiZnhnRWVUZGJoMGdkZ3poR2V3Y2xkbWFSYVJlb2dmZ0VoMWc4Z3lkS2F3YlplUWJaZUNiVWJEZ1BhZ2dNZFBnRmduY1JnaGdVZEViMGZvZVZoemZJY3ZoTGVqYzVjVmJaY3dlNWNMZkhlVWY5Y1pmVWFqYzFjbmhlaGloWmhFYmFjaGVBYWxhVWNoZkJoa2ZUZUhiWmYyZ1Via2hJZFZhZWJIY1loU2RBYWxkNWREY1VhVGdRYzllT2FUYVJhSWFVZTBibGdIYWFnR2ZWZExkSmNYY05jcGRYZnhod2VRZ0JoR2dnZEphRWVEZXRlWGZDYjJhMWVPY2ZheGZOZFBjSWRSYlZiVmhVZEJnTmhZYUxleWdGYVlnV2JTYzhiOGFGY2ljTWJmYVFneGZwZ3BlYWRVY1FnWWFlZHhjUmcyY2JlM2NwY2FiVmZXZTloYWhSZ3hiMGFkY1ZiVmhKYjBoYWEzYnBiamFDY0NnWWRZYVNlbGRKYlpmSWNraHhhK2hJZkJnMGZMaFVoWGRoZG1jRWZsZ1lhRmVYYWxoa2hyY2NnbmZaYjJmU2hFYUVoYWZEZGllY2J4ZEJjVGhCYzRjYWJVYXBoRWJFZUVkMGV4Y1dod2RBYWdoVmJ4Z01jOWVUZGxoa2NUZ1JnMmdnYVZlU2JGZEJjSGhFYkdmWmR5ZlZoaGdWZHFkY2ZsZGtkeWNWYzFkY2JXYk9nMmNnYmFoR2RHYTVjZGJaY25jdGJoYkpoQmcwZm1oQ2ZVY2xlUmhXYkJjc2FWZ0lnQ2dOY3phYmIwYzFjaWVHY1FhOWFQYUViSGJSZUZlYmNWZ3hmU2VRZGhnVmM0ZGRmaGFKYUxkR2FFYU5jWmRZZ25nSWgxZ1BlQmRzZkdmU2JRY0ZiZmFlZUVjdGIzYWVobWZsZ1hhV2VSaEFmWmFhYkFjdGdGY2JkeGVGaGFkS2FVaGRhN2FFY2dkNGI3Z2Nkd2hFYWVmRGRrZlFkamFlZ2dnUWRjaFliMWJoaFJkZGIxZ2RjS2dGZW1mbGdoaEZiaGhoZG1jRmZHYVplbWVZZFhjQmRWZU9ieGhJY1ZoVWNrZnBkVmdIZkRmRWE4aGVnZ2NZYmZjT2dBY1JjZGdXYWpncGhrYVRlSGhaYTJnVWJrZklmVmRlZ0hkWWNTZ1NieGFoYURoV2ZXaEpmeWNjZEhhQmNLaEliUmR3ZGNjTWV6YjBhWmVlYVNhMGM3YUhkZ2gxZFZmRWNUZnRiZmJGZHlkWmZmZVZlR2dOYkhhTmFsaDBiRWNKZjFoRWhCYUhiZ2RBYWNlWmVqYjBlUWRVZXpha2EzaEJmUWN4ZWJhU2ZsZW9lc2dMYzFmRmNNZ0xnbWRsY3ZnWmRpZ2djamhWZlNiRWZWaFJhMWNGY1NlR2h4YVVneGFPZlhkb2F3ZkdkRGJvZWJlUWNBZEJhRWdJYlFnaGMwYlhkRmFKZUNkRmNYZ2hlMmJFaGthc2dZZlFjMWRsYmllY2ZuYkJhd2JTZkVhTmRBYVFlVmY5ZjRmU2gzYWRoNmZhZlZoZGNaYUVhQmZsYW9iQ2MwYVZldmNFYlJnc2g5YVJiMmM0YVRkVmUyaGhhSmVTaEFlSmZPZ0hiRWd4Z3liVmNoYVZhcWJjZWxiRmgzZlZiMGNvZFdiYWVXZEVhV2dHaEdjWWhVY0xhemZVZ0hlT2JSZXNibWNEZ2dmSWdWaFZlRmZ4ZTRnZGRHYnRkNmFZYjBoMWRxY1Nid2Q5Z1NjRWFHZVJmTWNkZm5jWmZTZFFkaGhWZjRjYWNSY0pmRGJFZEFhcGhaY2ZlM2RKZGdhY2JCYVJiRGVBYUZhTmY1YmVoQmEwZDRlTWR5YjFlWGVTZFJjQWRFZ2RnUmdaYkZnS2NoZUVnVmZhZFVhZGY3ZlZka2FkZjFhRmFVYm9jRmVFZjFhWmUraGNnRmU4ZmNlUWVIY0pkUmVkYTFkZGRLZkZmbWdsaGhhRmhoY2hjbWVGYkdjWmZtaFlkWGhCZFZhYmEwZEJmSGdGZlJkVWVRY1VjbWNsYXJhTWYyYnBoQmdhYmtnTmZHYVVkZ2IxYWtoR2FqZWtoL2RGYmtlSWNGZWNmWGc4Y0pnWWRSZmhhRGVXYVdmSmJ5ZWNmSGZCZ0llUWgwZGxlYWhkYVNoVmdoZWRkM2RwaHBoVmMxZ2thUWZHY1djZ2hMY1JiV2g4ZVJmUmFTZDRjVmdjaDFheGNIYmRiUmhVZWNoR2JBZTVhRGhhZkRnNGNUZVdmeWQwYm1iR2FYYWRiYWRTZ2thUmR5Y1NheGhZZFlnWmNoYlJhbWZaYW1lRmR3ZVZoV2M5ZmFlUmMxaFJlYmZWZVZkcGdlYWFjM2FwYmpjVGFXY3BkTGJEZjFjSWFRYVplRWd4YjJlZGRsZ0pkS2ZIZFNlNGg1Y1dod2Y4Z1lmVWMxYWxiL2ZiYTJiMWR3ZEFhVWdNZVZmQmVuY1VkeGVTYTJnbGM2YUpnbGM1aFpoRmNoaDlhb2NBZndieGF2aERoQmFNZmdhVGJuYThkNWhSZzJoZ2VWZFNnRmRCZ0hiRWdHZFpjeWFWZGhiVmZxZmNibGFGYy9hQWEwY1JhYWVMZ0NlOWdSaFRkQ2M0YVVhZWRHZFpmeGNjaEZjTmdwZFdma2Y4Zk5mSGVVY3RjU2dQZ1dnc2htYVBjMGgxZjZnU2J4Y0ZlU2NRY21lMWVGaGRhaWNvZE9kUWVrYmRlNGhhZEJkSWFmZFVoQWJvZ0tmYmFEYTRiMWZQY2dhOGFYaEFkVmVOZGZhZWdFaHRnM2dlYW1kbGNYY1dmUmdBZlpmYWVBZHRiRmFaZWpic2hUaGJiMGNkZXpoRWUwYmRmb2hGZFVmaGVRYVJleGNCZW1iY2JnaEpiZGNPZkRoMGhHYWRleGNrYlBjUWZXZWtjVGNWYzFnWWNoY1VoUWdNZTBiTWV6ZjhmSGNaZzFnZ2dtaFNlVWdrZ1FlSGZ5ZFFoL2dlZGphY2RDYWFmaGh4YmRkR2EwaFFiaGRUZ0Ria2JqaEJoaGVGYWNiUGREZU1hU2ZDZFVkMGJGZ0hoeWNjYWdhY2dEYUliSGNGZ2doY2VlZ0pobmZwYkNjYmdGYkJicGdWYzFja2RRY0dkV2hnaExnUmJXZDhlUmVFYTJnOGFDZ2NkMGU4aGJhYWJCZzBmTmRVaEZob2RRZFphQ2VjZ0NmVWQzZkpnd2ZXZUdkeGY5YVNkaGNaaHBnWWRSZFloWWhaZ2hiUmNtY1pnbWNGY3diRWJ5YUFkSWhSaHhnVmhMZkZkQWdCZjBjSWgzZHBlK2RUZldmdGFhZUZhRmdJZkxiWmJFZlZoY2dkYmxmSmRDY0ZkWGRoYjJoRWZrY3NmWWdRaDFkbGNpYWNkbmRBYWpjSGJ3Y29lZGFHZVRoMWE0ZFFmemVKZHpjYWJRYXhmemNFZ0JobGJvZkNmMGJWY3ZjRWFSZ05hdmRSYjNlTWZUYVJkMmJnZlZoU2FCZU1lR2VRYnlkTmZ5ZFZoRmQwZHZiS2hsYU5ndGJmZ1Vjb2FXZWFkV2RFaFdkR2JHYVloVWdaZW1mWmFoY2NiRmFWZHZoV2FrZmNoZGdIZ1FlY2ZYZUlnRGY0aG9hTGhVZzBoSmhRZjFic2hhYVdmVGdkaEFoZGZpZUpoZWdRZGtkZGMwZWRmbGR0Z0NhQWcyZWxmWmJZYm5mSmR3Y2NmRWRoY0RoU2VWYnBmMWNlZ0VndGIzZmVjbWFsZFhhR2VsYUZnS2dMZVFndGhIZE9ka2hWYlZmZGcwY1ZocGFPYVVjZGhvZUZmVWJoYVFmUmJ4Z0JhbWZjYmxkWWVWYWFobmFKZFJjZGgxYmNoSmNWZHpob2hrZEZoaGJvZHpiUWdDY0JncmJlZVhjSmFQZlJoVmZwaEhnSGJSZDFhVmRVYW5iUmhyYWVkbWhOY05oYWdrZXNiUGRVZWhiQmVrZ1RjQ2JRYXpjQmVoYmRkSGZOZm5oWmNRaFFmMGZ3YUxoRWdEZ0ZmK2ZjZ0NlUmZFYlFkeGh0Y1diZGFUY0ZjQ2diY0ZmQmVwYVZjMWRrY1FlR2JXZWdmTGdSZFdjOGdSaEVmMmU5aEhoY2h4ZE5oSGNLZzFoUWdiZkZoVWZjZVNoSmZ5YkViVmVYZkNkTmh3Y1NnMWMxZFhjU2doYVphcGZZZlJkWWhZYlpiaGVSZW1iWmRtY0Zld2JWZVdnOWRhaFJleGUxZlBoRWhBaFlkaGRPZVRjUmZqZUtnR2VJaGZiUmd4ZnRlRGJhYUVod2dpZGVhbGJJY1FkR2VYYWdnL2dHZjFmQWN5Y1FnMWhsaGljY2FuZEJnd2ZTZEVkTmNKZFdhbmJWaDRjU2IzZGRjNmRhZ1JmUWZZY1FoMWV4Z29kQ2NRZGtkdWNSZFZhb2JoYlZnbmdFZUpmYmVXaGdmVmJTZEZjQmNIYUViR2VaZnlnVmFoZlZicWVjYmxiRmUzaFZoMGVwZFZmS2hEYkpkVGdHZkdmUmRXZ0xheWJnZ2dnSWJnYXhodGZRZEdnMGhkY0hlVmVWZFNoZGhHZ3RoNmVZZTBoMWRxYlNhd2c5Z1NiRWdHZlJmTWFkYW5iWWdBZkJhMGNFYXRnSmVGaHhmTGRhYWtic2VOY0tiamdzY2pkZmJFZGdlWGRSY1Zjb2NuZGRlRWZzYStiY2IzY0phOWRXYlJnQWNaZGFkQWJ0ZkZmYmN4YkVhVGFiYTBmZGN6ZUVkMGVkYW9kRmhRaHNmUmVGZUZiVmdtYWNiQmVSY1ViT2RUY2RmSGNZZjFmVmRRZVBkR2hsYmhmRmZoaGhlbWhGY0doWmRtZVljWGRCZVZoYmcxaHBjSGRIZVJkMWRWYVVlaWZZZ3VjTGhqYVlkZmFKaEVidGdYZVdna2JRaHNoQmdTY1ZhNmdVY2hhWWFaZGVjQ2VRYWVoU2UxZ0ZhS2JRaGthaGh5aGNjSGFCZ0lmUWMwYmxhYWZkZ1hkaGFMZWRhM2JwY3BoVmcxZWtjUWZXaGlnbGJZY0FoR2I4Y1RnUmNpZHdmVWdZZlJnRmNkaFFkaGRWZ0lhVWVFZWNkUWFaZG5jSmFXZkZnV2ZwZ3loVWZYZmRoWGdTZWhhWWhxZ0llRWRWYmRjWmZoZ1lhemFKY1RoSmU5Z1JmMmQxZUFlYmdSaDBnZGhWYVZiSmgwYmFhM2hwZ2phVGJXZXBoTGREYzFoSWVRZlpnRWJ3ZTFoTmd3ZkVjSGRGYVhjb2ZqZFJhZ2gwY0pkVmRSZ1VobmNjaEdjcGNhYlNmRWZOZEphV2JuY1ZlNGhTZTNkZGY2ZGFnVmdkZ1pmRWhCZmxmb2FDZndmWWh1ZFFmbGFaZXZnUmhTYVpkSGJBZVdmVWNFZ1hiaGF3YUNnRWRuZXhhWWhWZGhiVmhxZGNnbGNGYTNlVmMwZG9kV2JhaFdiRWJXYkdnR2dZaFVjWmRtYVpnaGJJZGhiQWQ3aERieGZWZlRnSGRUYWRhYWRJZUNnTWN6aE1mRWRGZ3FjSGh3ZU5lU2JRaG1haGdNaFBkM2g5ZkpjYWVCYlZiNGFkYmhiSmhMY0diRWZOZlpmWWJuY0pod2FjZEVoaGJEYlNmVmdvZnhmUGFRYTBoMmFMZ3ljVWhEZlFjemFvZlphYWdBZnRlRmJiZnhkRWVUZ2JjMGFkY3pnRWEwaGRib2NGY1VjaGVRaFJkeGZBZHZmTmVGZFlmZGRJYm5jdGZSY0ljeGM4Y1lkV2VUYjViaGhXY0ZhMGh4YUZoQmZJZS9oTWZUZFVmd2VQYlFnZ2dJYVRheGhWZVhlSmV6aG9iZ2dOZUNhd2VhZ0poRWR0Z0tiSGdGZk1hcmJDZkRkOGI0YUZhVmZnYVZiZWZuZlloWmJTZDFoMWRLZlFha2NoYnloY2dIY0JoSWRRZDBibGJhYWRhWGVoZUxoZGEzZXBhcGNWZTFka2dRZEdoV2JnZERmQWNHZThnTWVFYTJhZGRGYmNkUmdOYk1jYWVGZUJnQmZYZGhmTmJmZ0NmamIwY0JlVWZEZWdjUmRFZENmUWdTY1FiaGU5ZGdkYmVSY1lnUWVMZ2hiUmU3Y1pmbWZCYmdnWGFIZVJld2JSZXhjMGJkZVZjVmVKZTBhYWEzaHBoamJUZFdkcGRMY0RmMWVKZ05oVGFrZnhoMmRkY2xkSmVDZkZmWGZoYjJoRWNrZnRnRmFTZGxnVmRJaGNkbmZCZndiU2hFZU5jSmdXaG5oVmc0Z1NmM2Q4YjBiWmd3Z2NkTGdYYjBoMGNuaFhleGJ3aC9oVmNCZTBmN2ZDaEJmbGFnZktlQWJZYVZnVmdWaEFhQmFSZlNjZ2F4Z0FkbGZ3Y2xjUGFGY0ZjL2ZYZmtocGROaFFhMmRFYldkR2NHZFlmVWhaY21iWmhoZWNoRmRWZXZhV2FoYlZnWWZTYVFhQWVBZU9hbWZzY2hkU2RVYjFlcWdTYXdkOWVTY0VnR2FSZU1iZGRuZlpoU2VRY2hhVmQ0Y0lna2hzZGJmWGdWY2xlWmRZZUJiQWZsZU5iZ2Y0ZkdnR2YxYWhoNWZVaGtjdGMzZWVkbWRsZVhlV2hSZ0FkWmRhYUFodGhGaGJmeGdFY1RkS2J3YllhbmhVYWxkMWZvZWRoQmNvZkNiQmhrYmxhb2ZJY2doUmZhZ1BiamQwaEZkTGFnZmNhUGFHZERlb2J0ZVhjMWhzYWpoR2NpYVVhbmhMY1RjeGNkYk9neGdJYU9kVGNoZE1lcWVFY3ljWWQ1ZWVlamI4aFJhYWJoZjlmSGhHYTBoTmdvYVRnR2ZaYS9kWGdtZGdmVmFlZ0hhWWFTZ1NoeGZoZ0RiV2RXYUpjeWhjZ0hkQWdWZFdnR2FOYWFoZGVYZmhiTGFkYTNicGdwYlZnMWdraFFjUmNHaEVhUWFiZzJlOGhSY0VjMmI5ZEhoY2d4Y05lSGdQZWxnUWFhYVVkQmFOZEVlWmZtZzliV2RBZVhhcGdyY1JjMmN4YjloU2RoY1plcGVZaFJiWWZZY1poaGhSZ3ViS2hHZjhhZ2dCYXlhQWNPaENiRWJsZkVoQmRSYmRjNmZPaERkWWFxY0RiaWg5ZExlRWVsZUpkV2hNYVFjSWQxYklhaGZzYU5jV2EzZGhlK2JSYmthY2NZYUVmVmdCYWlkS2VWYXBhd2dTZUViTmhKY1dlbmFWZjRjU2czYmRiNmRQZnhoWWhMZEVnRmNCZ29kRmhraFVlN2dXZlZhb2Y4YVNmVGY5Z1dkQ2RTZjljQmRBYkVhdGV0aEVmR2RaZ3lhVmRoZVZicWdjZ2xhRmEzZ1ZhMGFKZUNhYWdYZHdoV2VSY2piaGFBY2JnMmFwZUxnY2ZGZ1ZjdmNXZ2tmY2JkY0hmVmVWZVNkZGVHZnRoNmdhYXhmOWRxaFZoZ2Y4aEVhWGN5YTBjSWFkYm1kWmdTZ1hjd2JoZmxjZGJrZEJlTGRCZDBjTWRRZ1lhbWdoaHdhTGZoZ1lkUmJRZEZiWmRmaGVkRWh0YjNjZWVtYWxhWGhXZ1JkQWhaYWFkQWR0ZUZoZmh4YUVlTmdiaHhkTmZ6aERoRWNkZGdnSGdSYXhoUWJUZEFnMWRtZU9mMWU4ZFpoYWJtYkplUmVhZlZoY2FlaEZhbWI5ZW5mRmJoZUFkeWFGZUhhdGZtYmNnWGRsYmNjYmMwZkJhSGdTZ1JhMWVMZVVkamMxYnJnZmRHYlZmTmhZaGhmOGVQZFRneGVBYXRkUmZYZnBmY2RVY2tkSWVWaGVlSGhZZ1NlU2R4ZGhmRGdXYVdlSmd5ZFljSGNCZFdoUWh4YnRoYWRhaG5maGdEZmZmeWFoYnBiWGdFZVFkUWVVYUdkRWNIZ1JoWGM4YlJmRGdXYjhnVmJjZHhjVmNCZ2FjQmEwZWFoVWFGZ29hUWdkYm5odGVmYUZnWGVCZ3lhQWUzZ2RkSmNTYmxkOWVwZlpheGRBYVlnYmJrY1pibWVlZzJkRWI1Z1hkR2hOZndhUmJ4ZzBoZGhWZ1ZlSmYwZ2FnM2RwYWpmVGhXYnBmTGRXYTFmSWNPZVpmQmQ1YzJiY2FGaFJkQ2FIZFNncGgyZkRkMGd0Z01iU2draEplSWZjZG5lQmJ3ZVNhRWhOZkpiV2RuZFZhNGNTZHllRWc3aE9hMWVjYWNkQ2N6Z05kb2JDZzBiVmV2Y0ViUmhOZnZiUmEzZ01mVGdEYmloNGJWZ1FkQmc1YkpjWmdCZzhjQ2hNZDNmRWNWZUVkeWRNZEZiTmdqZE5lcGdHZ2hmUmJtYWFjQWRsZW1mRWZtaDlnTGZjZUZiVmN2Y1dha2JjaGRhSGFWZVZiU2dkZUdhdGE2YmFmd2FoYnFnVmVnZThoR2VXY0NjMGFmZGVoQ2VVZUhnQWNGZVFlcWhKZ0ZkTWhTZ0VjQmFkZ1ZiWWFpZEJmNWRlZVVmUmZEaFFmUmc5YjdoQmV6ZlFlbmZLaENkWWFEYkZjbWE5ZW1hYWFCZlphRmFJYlJhOWNEZlBhUWNnaG5mWGVCZU1meGdSYlFiMWVaY1hkRGRwYW1jY2ZsY1loVmRhaG5oSmFSZmRoMWJkYktmVWh5Z1VheWVVZHhjZ2U5YVBhbWRaZ21iWWhYY0JmVmRiaDFjcGVIZEhoUmQxZlZjVWdpYUlkcWZLYUdjTWRDZGFhbGNZZlBkQWVCZkJlcGVUZUNmSmJ0ZWVmRWJJZFZoZWhIYVljU2dTZ3hhaGVEZ1diV2RKaHljY2FEYVZjSWhYaGtma2ZVY01hQ2E5ZUxiT2dYY0lhbWdXYTFhbGRHZlZnaWJGZFBoUmFYZDhlWWhDZkVlVmFIZ2NoeGNOYUhkYWhCY1ZiSWdVZ0VmY2VRY1pjbmdJZVFjV2RqZGhleWdXY1NoRWRXZUdmQmdZYmhoWWVRZHNoWWhkZWdjOWJtZUtjV2JGY3VjVmhTZ2RmQmFSZ3hhWWVXZUhkVmN0ZTBmTGFnaEVhcmVNY0djcGVXaERid2JaaFlmTGhSZjhlTmhQYmxlSmdKZUZmU2Z3Y0xoQ2ZXZkVmWWhRaDFobGFpYWNobmZCYndnU2NFZE5hSmRCYTFnOWM0ZVNmM2VkYzZlYWFWY2RmWmVFY0JmbGNvZ1dhUWdBYjdjUmNFYUViaGFSZXpnWWJJZmJnV2ZnYVZhU2hGZ0JiSGVFZkdkWmd5YkNneGd4Z21iV2JGZkZkM2hWYTBmb2hXZGFkV2NFYVdmR2JHaFljY2ZLZEdlZ2J4aElnaGFvYTdjRmVSZk5hRWdUYlJlQmdjY0phaWY0YzdnSmF6Z2dnRGNCYVZkc2YrY2RkV2RSZVJmZGRqZUFkSGhEY0ZhWWVzYlBlMWMwZEZnR2FFYXNoTmJiZG5lSWFpY2ZhRWVnaEtmUWhGaG9ldWNVZ2tmdGgzYWVkbWdsY1hoV2NSZ0FhWmVhaEFjdGNGZmJieGJsY0hmYmgxYXBkemVBaDBjY2QwZkZiUmV4Z1pjU2N4Y0JldWhJZUZmWWNJZmFjbWdKYlJiS2gxZWNkWWZIZjJnVmRoZ1hmeGJnaDZjU2JHaFliTGRhZ1NjUmdaZGJmd2JoZUxoSGFVY2tlZGNHZHljZGdsY05laWVZaERmTGJSYjlmSGJXZ3djdGNPZFRjSGJaZjJmVWdraEllVmhlYkhjWWhTaFNjeGdoZ0RiSGd5ZDBkZ2djYUhjZ2VlZEFnaGV0ZmFjTWRIZWhjV2FkY3lmNGhoYUhkZ2FwaHJhVGdSZVVkSGVSYlNjQWFSZURlbWc5ZFdkZmJ4ZU1lUGFhZUFnaGJJY1FiRmF3ZFFkYmNYZWtmZWVGY1hkWmN5aEFnM2hkaFJkVGNCYlphaGFMZGhkWWZTYmVneGZSZzBhY2czYmRlNWVUaG1iOWRUZGJiUmIwaGRiVmZWZ0pjMGdhYjNncGRqYVRkV2RwZUxkRGIxZElkUWhJZVVmeGM5YmFmMWJJYVdhWGVUZEVobGZhYVJhOGhZZFNoRmdrY3FlRGczYUJkNmNTZkFleGFTZmNhSGZWaDRhU2IzZGRoNmVhZVZnZGNaY0VnQmNsZ29iQ2h4YWNocWZSaFVhWWg5Z0NlWGhOYldkWGhFZklmVmFTZ0ZoQmJIZ0VhR2JaY3lkVmhoYlZmcWVMYzFmaGQ3Y2ZnVWNvZldoYWJXaEVjV2VHaEdmWWdVYVpkbWZaZXBlUGZsZ3NlL2dDYUFlaGJKZ1VoZ2ZFZUxiSmFDYjVnMGZNYVFnZ2NyaERlM2JvYjdjWGdqZEFidWRFYTNoWmVQZVFnbGFNYnRjT2VGY0VjZmRVZlFod2hYaFlibmFvY2tjZmVFaGdlUmVSaFZmb2E4aGNkVWNzaHNmVWdHZ2xjWGNXY1JoQWJaaGFiQWh0ZkZjYmR4Y0VmVGdiYjBhOGFuZ0VmMWNwZW9kQmVVY2dkTWdSZjBnUmJ2Z2ZkbGRZZWRhT2FIZkpnTWhkZzBnZGJLZVNmbWZrYXpnSGR4Z1JhbWdYZldoWWM2YlBlWGdBYzRmWmJ3ZDVjTGNIYVVnOWVaZVVnaWdBaGplTWF6YkJnRGNKYWdlNWRCYkZnVWNRY3NlUmZXZTFjY2JVZGtlSWdWZmViSGFZaFNnU2J4YmhkRGFXaFdjSmR5ZU5iamY4aGFhUWMwY0VlTWNOZkNjcGZMZU1kbmhwZTBkVmV3ZzFoWWFVZURldGZ3Y0ViV2Q4ZmFlRWMyZUphS2NJZ1dmNWJMYWFhRmVwZUljVGVVZmNmQmJmaFhiSWNFY0ZoWGRSYnlkUWNYZGRhUmNUZkJhWmJoZ0xiaGNZZlNkZWV4YVJhMGVjYjNoZGI1aFRhbWY5ZFRkYmNSYTBjZGhWaFZkSmQwZGFkM2JwYmpoVGVXZXBnTGZEYjFiSWhRZUloVWF4YjlkYWQxY0lnV2JYZ1RnRWhsZ2FoUmM4ZllmU2FGY2xkdmJmZXlhSWVOaFNjRWhsZ0poRmdXZzVmU2JTZDNhZGc2ZmFjVmdkaFpmRWZCY2xhb2RDZzBiVmJ2YlFoMWdZYzdhRWZpaEZoZGVSYXlnMGRPZVljbGhCaEhhRWJHYVpkeWFWZGhmVmFxZ2NobGFFY3FmWGVrZFliOGJhZVdhRWRXZ0dkR2dZYVVkWmFtZFpkaGhjZUZhMGRoYlZoQmRkYVBiVWZnaEViZGRJYURmSWdxaEpha2RNZTRkRGRrZDRhV2daYVFoMGFDYkllbWc1YVNlWGR4ZlVlK2ZJYTFjd2dJaFRmQWFvZVdlTGdIZkpnNGRKYkVmUmFEZEdnMWhOZTFiSWYyYkZoM2NlYm1hbGVYY1dnUmRBZVpnYWZBYXRkRmJiZnhlRmdCaEtiaGdNYW1jUWVRZWxlb2dSZDBhZ2dNZUdoeGhBZUxnZWFnaElkWmdhZ21iTmRkZWRid2hNZUNjWGV6ZXBjdmRXYWxjMGNvZ1VlemJJYXViYWFIYXhnVmNPZnhiSWFPYVRobWdZaEJhTGgyaDlhQmJlZG1iTmZOaGFla2ZzY1BjVWVoZUJoa2dUZkNodGcvaFhobWNnaFZnZWJIY1lnU2VTZXhjaGREYVdoV2RKZXljZWNEYjVoR2ZFYnhmc2FWYklmVGZjYmZoTGVpZG9oc2ZXZVFjdGJWZ1dhQ2h4YitoTGJDYkZlRmRBY25ja2NyZkZlaGROaGFhYWFGZk1lZGZIZ2doUmJFaExjemYwaFlhRmhXYUljbWVYZlhmY2FGYVFjeGJZYnliU2R4Z1llWWZaaGhnUmdtYlplbWVGYndhVmNXYzlnYWhSZzBhOWZZZUFiUWhjYm1oSmdYZm9meGJUZVRhWWNYaERoemc4YVlnTWhFZUJhMmZaZ0ZmNWJDYVFiVGhBZC9mUWVVY1ZlVWhCZWhnY2dsZUplamRoYjVmUmZFYk1kZGdFZGpid2ZyZU1jQ2JNYUhoYWJRZ3RmWmFHaEVoMGZnYVFoaGdZZVVnUmNSZk5ka2hSZDJnSmZ1ZlJlM2FRYkpiU2ZFYmhkT2hDYjBieGV5aFZkaGVWZ3FoY2NsY0ZjM2ZWYzBhb2hXYk5nR2hnYWFoTWdtaFliVWFaZW1mWmRoY2NmRmhWaHZmV2RrZGNnVmNVZDFoc2hDaEplaWhRZXViTGFCZWthemRHZzBocGRjYlFiaWNFZk5iTWVnaE1hN2NEZkVlRmZwYVliSGVBZ3ViR2JGYzVmWmZKZkNkY2QrZE1ieGh3ZUtjQmVoZlJlMWVjYkJoOWE3ZWVkamN0YWVhV2RVZHNnemNhY0FldGdGYWJoeGhFZ1RmYmEwYmRhemRFaDBmZGVvZVJld2YwY0VjRWRraElnb2djYmdnUWhWYU5iaWI1Y1JjR2hsYThhZWRHaG1lbGZ6ZkdjaGRnZHlhWGFDZjhlMWRiZHpld2dRYUlnUmcwYVRhVmNSY1JmWmFVaG5md2QvY01haWNvZ2VmRWZSZzlleWVVZmdkeGM0aFRlR2E1YS9mVWJoaDRiVmhMYkRhNWNiZUdnR2NNZ1hlV2ZXZGxleWZZZlFjMWFUYWFhVWdsZ2FhZGFYY2hjTGZkZjNmcGdwZFZhMWhsZU5mRWdHZlFjaGFSYldiOGRSZkVmMmE5aEhkY2d4ZU5lSGRhYUJmMGdHZVhhaGVkaENlS2JTYlloWmhRYlRjTWVpZ0ZkSGNrY0ZmRGExZGNmdGZGZUhlOWRXZ01oZ2dkZzBhQ2ZnaFJhd2NTZEdiOGRjZ0VjbGVOZGVjQWNSY3NiN2RKZ1hncGNyZ0dnV2NaYkxlWGNWYXNkUWJQaDJhWmQyaGRmbGFKaENjRmdYZWhmMmdFZGtic2VZYVFlMWJrZ3dmTmh5ZFFlbGhHZ2dhMWNKZlVkbGM5aDRhU2EzYmRkNmdhYVZjZGNaZkVhQmVsZW9iQ2gwY1ZndmRFYVVlRmN2Y0dmeWI4ZVRnS2JtZUJnQmVSY0ZhQmJUYUhjR2dZZ21nSGFsZndlNWVmZUJmMGV5ZkdjUWcxY0NnSWRXYmdhYWhNYW1lWWdVZFplbWhaZmhkY2ZGYlZldmNXYmtnY2RkaEhoVmhWZVNkZmZEaDhheWZLZ2hjNGFSZEhlM2hKYVNjVGdHaFJkRWhJY2pjNGJiYkVnV2I0YnNhZGJoaGxmTGVDZlRhNWNaYmZkbWI1ZXdmYWRFZEZkRGhGZlZjcGM5Y0xoQWhNYStlS2dSaElkRGVXYVJkc2ZaZmVobmRaYkZkY2h3ZzBlVGNmY2xnRmI2Ykdoa2JkZWpoUGcwaGhiUWJSZHhoQmZtZGNibGRZZ1ZoYWFuaEplUmhkZzFhZGFLZkZjbWFsZ3dmQWdBYjlneGRBZzNoUmEzZ2RnM2hCZWZmYmZ3ZzRoUGVWaEVmNGF1aEJjbmZSZGdlZWVuZ0Fmd2dRY0Vkc2VQZlVoaGRCZ2thVGdIY1pjMmRVYWthSWRWZGVjSGY4ZEplWWJSZmhoRGdXZVdnSmF5aGNoSGZCaEllUWQwYWtkSGFmY0hmUmFoY2RmM2dwYnBlVmIxZWtjUWRHYldhZ2ZMZ1JkV2RkY2ZkSGNUZzhoVmhQaEVhY2NJaFBnRWZ3ZllhRmRVZmxjQ2RJYnplTWZTZFlkQWFNZzhkQmRXZ1JoRmNLZEhnTmFwZ2ZlQmRaZGVnTWgxZW9hbGVNZWllZ2UvYUdnMmU5Z1NoRWV4ZEVhZGhCYzFodGQwZU1hRmVCYmplVGJXYXBlTGhEYjFoSWZRZ1piRWV4YTJhZGFsYkliUWRVZUNjd2ZqZ1FhQWNVZlljU2YzZE5laWFjZm5mQmR3ZVNoRWNOZUplV2FuZ1ZmNGhTZzNkZGQ2aGFjUWdWaFpiVGZFZ1Zkb2JaZ2tmMGc3ZkhkUmZOYTdkU2MzZU5nSGFEZ3lnRmFHY1JhaGd3Z0NnWGVpYkVnbWJIaGhheGNtY1dmRmhGZDNkVmEwZG9oV2ZhYVdkRWdXYkdiR2dZY1VlWmFtZVpiaGNZZ1VhTmM0aFRjVmFBY1BlRGVFZ05jU2RmYW1oc2F1ZUtjd2FRZTVmTWRGZ3NndmhFZEdlOWRtZWRhbmFaYVNhUWNoZ1ZnNGNkaGhhSmdMZkdjRWZOZVpmWWhuYUpid2VjZkVlQmNMZ0hjUmZJZThhS2R6Y0FkamhlZG1mSmhYY1NhR2IwaFplZGVCZ2RhRmhmaGdkY2dhZGJheGV0aHphR2V4ZU1oZ2NYZ0Jkc2VyY0VoeGhCYXRoY2drZVJkb2FhZG1nNWdOaGRlMGQ5ZERhRmVqZ1ZmaGNRaGxhQWh2Z1JkeGQwYnljWWdYYXRoVmVmYkNhZGRPaE5meGgxYVZnVWVuZlJmcmJlZ21lTmJOZWFla2NzZVBhVWdoZWxlL2RaZ25jWmMyY1Vha2VJZVZlZWdIZVlkU2NTZXhhZ2hlZVViR2c1ZFlmY2RIYkJlSWJRYjBhbGNhY2RmWGhoZUxiZGEzZklobmRXYVFjbGhDYlZiamV4ZEVjRWdUZlpnQmNWYW1kRWNWZE5jbGZJY0RnQWFWYXNkY2JQZkNkSWVRYmVmM2JJZVFkUWRDZ1FieGRCY1RnNGZZYkJlQmRaYmhmTmdSZG9kWWNOaEJhaGhtZkxnMmFoZ3diRGdrYVZkYWhSY3hkMGNkZlZiVmdKYjBlYWczZHBiamhUaFdicGFEZVdkMWRJY05nWmFGYXhkMmJLaGxiSWdXZ0hhSGNSZTJkR2ZoYWtnWWhYZGxobGV5YmNjaWd4Y3djR2hrYXBnRmJXZmpmeGg0Z0ZneWN0ZjZmQmhGZjhoTmdIYkJna2E2ZEJiMGhVYzdhV2FWZG9oOGRTZFRhOWFXaENjU2Q5ZEJlQWdGZWxoY2NPZ21hWmN5ZFZoaGRWYXFkY2FsYkZhM2NWYjBlb2hXY2FjU2dkaFpnU2NtYVlmY2dNYUNoY2V6aGNlQmdCaHZkUmcwYWRmSmZWZVJkd2JCY0RkemU4YkhnYmgwZzBobGVTY3hhSmNTaEFnV2RoY01iUGZuYVpoUGJRZmdoVmZqZWRmaGJsY0FnVWRFYU5hRmhZYmlhQmV3ZWRna2c1ZURmUWRSZVZhMWJjY2xiWmYzY2FiSGZ4aEJlVWVBZXNoWmVZYlNhRmRGY2JmeGhFY1RiYmYwY2RkemZFYTBoZGdvZkZkVWNoZlFoUmgxaFZhbWNlYVVnc2NWZVBlamdvY1lnSmhDaHdkZWhGYW1hSmJoZFhobWdWaG1jSGNtYVlicGZlaGxocGZWYWJhMWZwaEhiSGRSZzFkVmdVY25kUmFyYWVobWhNY2ZiTGZ4YTloYWNBaEZnNWVrZlJkRGRsaDJnV2hGYThjVmZhZ1dhUWFLZ1FhaGdSZkRjSGZHYkpkc2FiZlhnQWZIaFFlMGQ5YWNlZGRYYUFmT2FkYzNnZGQwZVZiemdSYlJoVGZTYUFnRmJGYlNoQmZHZUdjM2UxZExhY2F3ZHRiSGdZYWhnVWhhYVdiVWc0ZWNiWmhqZWRlTmFQYjJjcGF5YVVjWGhkZlhhU2FoaFpmcGZZYlJmWmJGZ2JkeGZoZE1jWmZtZEZld2hWZVdjOWRhZFJleGYwYmRkVmZWZG9iNmVaYVNjb2d4ZUFlamQ0YUVnV2J3Z3RiQWFJZ1ViSWdrZk1ieGRNZkdhZmVEYllhaWhjYUNjNGdZaFhobGJrZGthSmF6ZDRoemJIZkFib2hHY0ZhSGJWYndhSGMzY3RhNmVPaDFidGJaZ1dhUmFCaG9hVWJHYzlmdmFFYVJoTmN2ZFJjM2JNY1RlUmgyYWdhVmVTZEZmQmdQZVJiR2NaaHZjVmNnZlZkcWZMZ2xlRWNqYVhna2ZZZ1doWWZUY01lV2VCZVdjWWNFYVpjamFwZ2hkSWRsYXhhamdXZmdnNGRkYVFnUWRsYVNiR2VXZk1jdWJiaDBmMGY0YlJld2M4ZkdhV2dDYTBoZmhlaERkb2ZYZERkRmZJZHNmUGNoaHRhUWNNYmtoTmhaZllobmZKYXdhY2RFYWhhRGdTZVZkcGMxZGVmQWYwYTRnS2dHZmxnZmREZTFjRmRMZmFmRWQ1ZEZmY2doY0ZhQmhZZTBoY2Y4Y0VhMWZwYW9hQmhFaFJhUWVEZXhhQmg3ZmNnZ2ZKY2RhSWN5ZEVhcWRJYzFkZGZCZkZlbWFSY3NoVWcyZ1ZkOWFGYUNjTmRtZGZjM2FCZkZlYmQxZXhnQmdIZlJoVWFhZVVhbmg1ZTJlZWFuZEZoWWNmZ0VlSWVVZFVmaGdsYU9iVGNIZFpmMmdVYmtjSWdWY2VhSGNZZFNlU2F4ZWhmRGRXZ1diSWY2Z2NmSGd0ZlZkUWN4YTBjU2VQYUNmc2d3ZkloM2ZwYWljVmYxZVFiZGNYYkJmVWhMaFRmMmg5ZGVkQ2dFZVZhSGNjYXhmTmFIZ2FhQmhWYkloVWhFZWNmUWRaZG5oSWZFaFVmRGQ0Zm5jQWZ6ZGxmWGhRYmxibGJwYWFkd2hzY1ljZGN3Z1pkK2diYTJoMWR3ZUhnV2Y5ZUVjV2VoZDFnU2hWaFZjUmF5Y2FkM2VJZXJjVGdXYmRnV2ZEZHpkOWZSZU1jQWVSYzRnSmVoYzBiVmJIZFdkcGE2Y0VkbGVNZVlhU2dWZGtnd2FlYjNhbGI4Z1NoQWF0YVNhY2ZIYVZmNGNTZTNhZGc2ZGFhVmVkaFpiRWhCYmtlMWRBY2tjbGJGY0VoUmhOaHZhUmgzaE1kVGRSaDJjZ2JWY1NlRmFnYkphSGdqZlloZ2dHZFVkRWVsZEpkZ2JnY25iRWhrZFJlRWdMZ0NnQmNTY2NkU2NoYkFmZmZtZFpoOGZjZEJmTWc2ZkZkQWZSZkpiVmRCZG9hY2FkY0dlTWZ1Z2JiMGEwZDRjUWdnYThmSmNPZ21kUmdNaGRnbmhaY1NhUWZoY1ZjNGdkZ2hmSmJMYkdlQmRFZ2NmTmNpYWNhaWNQZ2tiaGhMZFlhMWVwYTFiZWVFZHRiM2JlYW1kbGVYYldiUmFBZVpoYWdBYnRnRmNQaFJoRmNQZU1lMGhjZGVjR2R4YU5ha2hGZlZjbGdjZlJoMGFRZ3VjT2J3ZlVoYmFKYWpnY2ZmZk1nQWhNY0NoSGUyZFZmTGRGaGhjaGFtY0ZlR2JaZm1oWWRYZUJjVmJiZDFncGhIZEhkUmUxZEVlUWFHY3hocmFmaEdmTWhaaEljZ2hKZWNoS2ZVaFFoWmZUZUdlbGIyZ1hjMWhNZFZiY2VuZVloYWJXYlFlMWFXY1dkV2Y5ZHlhSmNEZ2dlQmhFZERkSWdPZkNiSGZoZkFmZGgyZ3RlZ2FWZTBnTWRRZVRmU2JCZ0NmRmhoYlJjRmJiZWthVmFIZWNoeGhOYUhiYWFCZlZlSWNVZEVmY2VRaFpkbmJKY2ZlRGRrYkJmeWJVYVhjZGZYYlNkaGJaY3BiWWhSYVljWWJPZ3hoMWhxY1RmR2NGZXdhVmdXZjlhYWhSY3hkMGNkZ1ZnVmhKaDhkSmhYZVFlemFIaHlnVWNmZVFjQWVaZUpkTmdBYmxkNGRKaEJoY2FEZ1VhUmdFZTRiUmRsZW9oT2RMYXpieGVpY2JjM2NBZDJiSGJRYzBkS2dEZmpjd2MzY0JjWGVkZHlmUGJWZnRmWmZRZGhhQmFvY1VkR2U5aHZhRWRSYU5odmNSYzNjTWhUZ1JlMmhnZVZoU2ZGY0FlVmRFaERnb2h1ZVZlbmNoaGlmSmZsYzFnM2FSZVVoWWFXYVBjU2hsZWZiU2IyZ2hkWWhJaHlkZ2ZtZEpiQmExZW1nUWdXYTBhZGhIZFZmVmNTZ2RjR2Z0YzZjWWEwZzFkcWRTY3dhOGhFZVVhVGhaZ01nUGYzY1pnUGRRZ2tmRWR3Z1BiMGFFYXdkVGNEZTVoWmdQYW5mSmc0YkplQWZBZEtoR2dpY0VlaGVlZUViQmQzZGFieGRSZlhkUmNRY3dmWmNjZ0FoSmhlaFJnUmdFZ1RnYmgwYWRjemdFZTBoZGZvaEZjVWhoY1FmUmcwY0lkamhKZWdhTmRIZ0phSGRKZUNoWmhVY0JhY2hEYW1hbGduY0ZnbGFGY21lQ2UyY1pmeWRjaDJjbGFCZGRka2ZwYldhQ2FnYnRnRmVVZmloaGZyY01nMmJOZFhjYWVnZUlnVWFlYkJhQmJrYVRnSGRaYzJiVWZrY0lmVmNlYUhiWmFQZFFkaGVSYXBmV2hXaEpmeWFjYUhkQmJJZ1FlMGJsY2FkZGNYY0FoRmhlZFNkb2c3YkdhQWExZ2ZnVGZUYkZkYmRBY0dhRmJEYVZhaWY0ZURoR2hsYTBnVGdlY1FjTWNxZk5oVWhjZk5hWmdqZFFoRGVXYXlna2VtYUdkRGdnZVpnU2JoZzRmOWhiY1JiWmhLZGJoeGVRZzloVGJHZEZmd2RWaFdjOWNhY1JheGYwaGRnVmNWaEpmMGRhaHliaGRqYkViVGJaZ0xmWWRsZXBjRWhhZEVmeGJrY2VkbGdJYVdlWGNUZ0VmbGhIY0FoZGdkZ0RmUmY0YjJiT2JuY2xjcmJZY2tnTmdKaFdibmhWYTRoU2YzYWRmNmJhYlZhZGdaZEVhRWU4ZHBmV2NVaFVjbWJFaFFkNWV2ZUVnemF0ZmFhRmFCZU5hQmZTY0ZndGFIZkFhUmR0YXlhQ2hoZVZlaWhKYWhoa2QraEJmRGhGZENhRmZHY0VhS2VCYUdjWWhNYmJhM2QxZUxoY2JGZlZhdmhXZ2tjY2ZkZUhlVmFWY1NlZGJHaHRkNmdNYVFiZ2YrZUhmbGUwY2NkRWhIYmRlZWNZZVdkQmhLZVFhaGROZjRoUGR4Z0phVWJHY0ZlZGFMZWVjMmZaZnBlWWFGZ2xhVWFYZzBhcGgxZEpiRWZzaCtnZWZuZU5jWGZFZEFhc2d6YWFnQWN0Z0ZlYmN4YkVjVGJiZTBoZGh6YkVleGVwYWhmR2FXaEpjUWhSaHhnQmJtY2NmbGdZZlZhYWJuaEphUmdmY3hnbGVFYVJhamhzZnVmUWJsZ2NkeWJUY1RnWWNqZWJieWJJY1FlTGVoYzRmdWRVYTBnbGRHYVFiQmdnaE9kZWZuZTVnTmZMZkJoNWhCYkVnVWdRZnRmQWR6Y2hkMmFXY2hkWWNaZ2VkQ2dRZGJmU2MwYU5ocGJXYldlSmJ5YmNhSGVCaEloUWEwZ2xmYWZkYVhkaGNMY0phVGc4ZTlhQWdnZHRmZWFHYVdiQWZoYlJhV2I4Z1JmRWMyYjljSGhjY3hiTmRIaGFnQmVWaEllVWhFZWRjQ2JaY2lhNGJLZEZnUWFkZzZlQmhYYnRhWGRYZmhjcGFwZU5nVmI1YlJnTmFSY29kcWRJZ3lnOGMzY0FlU2hkaFRkU2h6Z2NjZGZWZ1ZiSmUwY2FnM2VwYWpiVGZXZHBkTGZEZzFiSWNRYVpkQmFnYStjUGd3ZEVlNWNRZFFnVmUyZlRmbWVFZ1loUWMxZGxhaWZjZm5iQmN3aFNlRWFOZEpnV2FuY1ZmNGNTZzNiZGU2Z1lkUWRNYVJlV2ZVZW9jVGJYZDBlVmFrZkViUWZJYVNoUmIyYjhhUGRSYTNmQWdjaFNjQWV4Y3RnRWRHYVpoeWNWZmhoVmNxZ2NibGRGZDNlVmgwY29nV2hhaFdhRWFXaEdoR2I1Z0FjTGVpYjhmeWJDaHdiRmV2ZFVkVWFjZVBnWWdGY1ZmT2dhY0didGRyZWRkVWZSZnFmRmh5YVZiU2NFZ0dkUmFNZ2RnbmNaZ1NkUWVoY1ZhNGJkZGhmSmdMY0djRWhOY1phYWRpY1lmNGFPaFJkc2Y0ZkhnVmhwZCthZWhGY2djS2NlZW5jVmdMZldiUWRJZE5hWWVTZkZiRmhiZ3hkRWdUaGJjMGhkZHphRWIwZmRhb2JGZ1ViaGFaYlhnRGNwZW1oY2VsZFliVmhhZm5kSmdSZGRmMWVkYUtiU2EyYUJjdGZQZkJoaGNtZEZiR2JaZm1nWWRYZUJnVmNiZDFjcGFQZFVieGJNZkZoQWNEYnNhL2dOZ1RoY2RVZE9mZ2E0Z0JiQWRGaFVnbGdDYUJlOGI0YkJmbGhFZkhoR2FoaE1jU2ZWYWhiZ2FGYURhQ2h3Z3hnSmhEZmtkSGJEZVVjbGRTaEljWGdSZExjSmdYZU5kcGZEaEhoTWVRZkdjV2FnZkxoUmdXYzhoUmhFZTJjOWVIZmNoeGNNYVZoTGdVZ0VmZGFBYmdna2VRZmJkbGNoYVdhRmJXYnBkeWdVYlhmZGRYZ1NiaGFaZ3BhWWhSaFliWWdaY2thWmFtYU9lamMxY3djT2FHY2NkT2RTYXhmMGNKYVdjVmZJZmdmSWh6YU1od2JRZXlhWWJPZ1FiUmFWaEVjTGRFaFZoNmdYY0ZoSmRDZEZoWGJoaDJlRWZraHNnWWZRZzFibGFpYmNibmRCYXdhUWZCZWNiQmRFZXlnWWREZ0hod2VwYjZkZGNVaHRlWmNBZWdmMWFoaENheGZsY0ZnRWNSYU5odmNSaDNjTWFUY1JkMmFnZVZiU2NGaEJhSGNFZUdkWmh5YVZlaGYwYytoT2doYmdka2FMYkJnNGhXZ1lkbWZFZUhnWmJXYVljSWFlYW1lWmV3YlpnbGZ4aHZhQmFtZTBjZGVIaFZoVmVTZmRiR2J0ZDZnWWEwYzFkcWRTZHdiOWhTZkVkR2NSYk1hZmVpZkliYWdDYzBmWWhEZkloaGdKY0FoR2ZGaEVka2NZY21jNWhzYmNiRmhCZ0tjU2dRZFplZmdlZ0VhdGYzYWVnbWFsZFhmV2FSZUFiWmFhZkFjdGFGZ2JjeGJFYVRhYmd4YU1kN2hXYWhkUWFUZFFjVWhoZGJjUmV3YU1iYmZXZEZoWWZWZmFlbmZKaFJnZGUxYWRiS2FGZW1hbGhoaEZlaGZGZDlhUGhtZlpmbWhZY1hiQmhWZ2JmMWFwYkhiSGhSaDBkSWVXZTNiaGRCYmVkbWFOZk5kYWZrY3NnUGRVZWhjQmFrZlRiSGU0YjRnWGJCYkpoSGVOZnlkSmhkYkhjMGRFY1RoSGVHZHdnZ2ZOY1RlRWFNZEpiUWhVZlZlTmRDY3dmbmRFYm5lcGUwYlZmeGQ5YUZkVmh5Y3RkZmZEZkNjQmhmZkVnMmRjZFRkZmh4Yk1kVmFZZFJnVWVUZ2Vma2hjaFFjWmduYUpkV2RGZVdocGV5YlVmWGZkYVhnU2JrYlFnc2NOZVVlTmVLZ0tnQmFRYjBhWmhqZzBkc2FWZVFjSmRTZ0VjeGhFaGRnUWZWYjVkMGFQZnphSWVxZkhlbWZRZkhnU2JoYXhlWGdNYkFiUmUvZ2VobGhJZjFnR2h5Ym9jemZVZXdlOGZRYUZjeGJFZnJkSWNYZ3hhd2FIaEVnOWhKZVdhMmdWZzBiU2IyZlZocGJaZ1ZkZGJOZEdmUWZKZ0NhQ2QwZFZndmRFZVJnTmV2aFJjM2NNZ1RiUmJ6YVVnY2NSZkhncGRIaEVhR2daZHlkVmdoY1ZocWJjYWxjRmEzZFhod2dRY1lmT2VUZ05kWmZUY0NibGJBZ1BoemNZZGtmZmJnYWNkcWZHYXdiTmI3Y1VnUmNvYVRmSWhBZ2toZmJZZDFlQmFxYkRhVmNvZGNhVWF6YkFnRmFPZ1RnaGVTaFNoa2ZGaDBkZGFrZ0JmQ2ZHYUJoaGd6ZFlhbmFKZXdoY2JFYmhnRGZTYlZncGQxY2VkRWV0ZDNlS2NDYXdnRGVEYUVjSmNYYmFhRmdsYUZjTWcwZTBkVGVBYWtnOGNuY0hkMGdkZDhhR2ZVZ2diRWVEaDFla2gxY2ZhQmhwYVFnSmJEZVVlRmRQYzFlNWRHZEZnaGQ1YnZlUmNGZzBobmNVZEdoNGF5YktjVGNrZEdhWWQxZW9oVGdFaFJnMWJVZFFoM2FoaHJjYWFIYkJmQmFhY2xnOGhHZ1NmVGhwZWtkVGFIaFplMmRVZ2toSWZWZGViSGhZZVNoRmNoY0ZnUGVjZDJkSmF5YmNkSGhCYklhUWgwZ2xmYWJkYlhkaGREZU9iWGhRZTVoQmVSYlpkRWFWZGpjeGRTYUZhU2FvZ2ZlUWNTZG9hR2dOZTNkY2RJaFBlVmVjYkVmRmdTYnRiMWNaZ21mOWVXY1VnemQ4ZjhiRWNpZE1nZWFCaFZlaGZwZGFlVWVJY1VoWmVrY1pmdmZaYWpicGFhYVZiV2Y5ZWFlUmV4aDBjZGZWYVZhSmUwYWFhM2RwaGpmSGF5YzhhZmdXaGdnQmdlZFplQmE1YjJmS2JnZzVnQ2dlZEhnQWZpaEhma2RzYkFhVGIxYWtmMmhPaGpoa2ZqZlJhZ2g4Zk1nRmFEYkllc2FBZjNnNWEyZWFkU2VCY1hjUWNsaHdncGhUYzBhMGc3ZVdkVmZvYThhU2IzY05lSGFTZzJnZ2FVZldoRmV4ZEhnQmRYYlJoK2FWZmdnMWVqY2FoWGh0ZjNjVmUwZ29jV2NhZVdmRWRXYUdoR2VZY1VkT2gyZzlidGZXZGxnVmd2Y1dna2ZjaGRiSGdWZ1ZlU2ZkZ0dldGR5ZUxoVWJNYjZoR2ZVZkFnR2ZYZnpnQWZWZ0pmamFOYmNmRWFGY0FmNWFNY25kWWJFYVRlUWRFY1ZhSmh4aEFnVmRjYkZnVmNEY0Rod2g4ZjdjT2h4YThhK2hOYVNlZGFYZ1VkVWdRaFZlYWRGY2xlTWViYjBnb2I1ZmJkMGFkYnplRWgwYWRlb2dGZVVhaGJRYlJieGdCaG1iSWFCZk5lQmFQYnlnQWFmY2Rod2ZWY0tnU2ZqZFZmaGNlY3hkQWR5YUdoR2NaZCtnYmdYY0FmQmVKY3hnTWZVZkVoMWhFaFFhSGNEYU1oL2ZNYm1ncGRCZmFkamd3ZEJoQWJGY1VhbGhDYUhiNGRpYkdoZ2d0ZUdhZGRIZlpjR2hSZXhiaGVDYlNoR2Q1Y3ljWmRXYkphRWNRZTFiRmRUZmJmbGFKYkxkZGEzaHBjcGRWZjFoa2JRYkdlV2RnY0xlR2RHZFllZGFPYldjOWdIY2NoeGNOZ0hlYWJCY1ZiSWFVZEVhY2dZZEtoSGV3YkdkUmJ5ZVVnbWJIZ2ljTWJPaEdhbGROZW5nTmFrZFJiUmRNZWxoRWNUZERjeWY4ZmtlT2JRYnBoYWNXZGhhMWhiYkFmQmF3ZjNnUGN6aE1ic2hBZjJkcGJEZFdiMWM0aFFjTmdrZEJiMmNQZjFnNWFDYVVmSGdGYjJmU2dXYkVnWWFRYjFjbGJpZGNobmRCZHdmU2VFYk5jSmNXZm5kVWZ4aERnWGJkZHlhWWNWYjhnTmFFZkFjUmZvZ0FiQmNGZW1jSGFSZE5hbmdGZ1hmTWJPZVJnM2dnZlZiRmZGZEFoVmZHZ1dmcGd5ZFhkbGJ4Z3FmYmIxYkZlbmdWZXhmWWFXYkliR2VnZWFoR2hHYmRlUmRiYTJnOWZoYUtnM2g5ZXZiV2drYmNkZGhIZFZiVmFTYWRlR2F0ZTZoWWgwZjFlcWFTYjFia2RUZVFhbWhRY0RiZGZtaHRlU2ZMYjFkUWRzZ1BoaGJ3aGJnVmh4YVJnUmRjZEhlNWV3ZWFiRWhoYUplU2FSYU5iOGVlYUVhWmUzY2FlM2JKZTlkV2FSY0FmWmZhYUFndGdGaGJkeGdFYlRmYmUwYmRiemNFZjBmY2FFZEhnUmh3YVlhRGFrYU5mcWVjZ2dmSWFaZ2FiaWJCZWRlZGN4ZzVlR2dGYWljWmR0ZkZjZ2RoaHZhRGUwZ3hhbWFZYlhnQmRWYWJkMWZwZ0hjSGdSZjFlVmJVZm5kUWYyYlVmR2JOZE5lYWJrY3NoUGJVZGhlQmhrY1RiSGFaYzJiVWRoZFJmVWhLaG5hWmNhZVNjd2NWZkRoU2VHZzVjWWNjZEhkQmhJYlFiMGVsaGFmZGVYZGhkTGRkYjNhcGVwZVZlMWFsZGVjR2RYZ1VoTGNWYlhjUWY3ZUVjMmE5aEhkY2J4Y05iSGVhZUJjVmJJaFViRWNjYlFjSWREZzBkRWVGY1djSWVtY0dlVGc0ZEVkTWZVY1FjVWhZY1Fic2JZZWRmQWNGaHplWmhtZ2Rod2RBZVhkUmZhaFRnQmZaaFRhVmVVYTVkMGJJaG5icGJsZVNiMmNwZERlUmYxZUljYWdlZlVkeGNrZlllMGJSZ0xiRGVuY2hmL2NPYkVnc2RZY1FkMWNsZmllY2JuaEJkd2dTYUVkTmZKaFdjbmhWYzRlSGR6ZThiemZPYWlld2hMYUVjQmNKaG9jUmdUZ2hodmhEZUJjTmNuaEVoM2dNY2NhUmF5Z0FoY2hTYUZjWmhIZEFnbmZOY25mVGJUZDlicWRjZGxiRmEzZlZoMGJvZFdkYWZXZUViV2ZHZ0diWmZHY0lhemdJYzBnSWJoZ3RidmFDY0VjY2FXaEhoUmF4ZkpmWGVtZHRjNmdZZDBkMWhxY1Nmd2Y5YVNjRWJHaFFmUmZmYTNjcGc0YlFoaGFWZTRoZGFoY0pmTGNHYUVoTmNaYVlibmVvZythZmNoaGdkUmZCZGdkNGY2Z0xhQmFJYW5iUGEyYmNmQWNDaDFibGROZkxlWGY0aHNkSWdVZ1ZieGFDYWtkZGJ1aEVnd2ZFYjlkV2J3Y3NmRWVEZmxoOGRvY2NobGM1Y0JjWmJuYUllRGdlZDFjY2ZEZEdnbWJrZWtoSGV4ZGdlOWNQZW1mWmVtZVlnWGNCZFZlYmcxZXBiSGVIaFJoMWZWZ1VnamQwZXRoZWVtZXRhRmNZYmhiOGZQZVRoeGVCaHZkR2RIaDlkNmdVZGtocGFIYmVmR2NzaFNkV2Z4YWdlZmVXYVRhQmc3Y2ZjSGJCYUFhQ2drZ2xhSGRkY1dmaGFMZEthM2dvaGdoWGJsZlVlUWVHY0NmMGVDYlRkR2Q5aEthT2dXYTlhSGhjZ3hmTmZIYWFlQmdWYklmVWZFYWNlUWdaY25mSmhXZ1FoeWZzZWdmVWJUaGhhWGNWZnhiWWhFZ0lhRWJKZ1FjYWdFZVFncGhNY1dkbGVpYVdlV2I5Z0NmUmR4YWNjZGdIZUZhdGcwZFphbmVwZ3loVmNrYUJiTGVEZzFlSWVRaFpjRWZ4aDJiZGNsY0poQ2ZGaFhlaGcyY0VlaWFjZlFhRmd4YkVicmRJZVhmeGZ3Y0hmRWM5YkpjQ2NIZ2xoNGhBY25ndGc2YkpibGJ0ZFpjQWNCYkJmemRJY1ViVmR2Y0VmUmZOaHZoUmQzYU1mVGNSYjJlZ2hWZVNoQWgxZHRmRWhHYlpheWhWYWhoVmJxZWNobGZGYzNjVmEwZG9jV2FQZ3lmQmRFZEdjQ2E0aFViZWUyYllob2JjZkZmaGd2ZFNoMGJzYjNhSGhWYVZoU2RkY0dmdGc2Y1lkMGMxYXFnU2F3YjljU2RFZUdnUWZDYmRjbWZ0Y1NmVWd3ZDVnU2NkYWhhSmhMYkdjRWNOY1phWWFuYUpod2FjY0VhaGNEZURmeGFVYm5mZWVFaE1mamJNZGllQWdFaElja2FJZVpkWWR3Y3NkTmNFYmhiRWhPZWJjMWdWYm1jQmJrYWRodWZGaFJleGRMY1JneGcxZXJnT2NsZlloTGZkaDNoSmRCZGRnMWdGaE1lRmdtZEVkdmRGZmhoSmc3ZkZkSGNSaHplZGMzYmxnT2hiaDFmTmd0ZUhkUmgxY1ZjVWZuZ1JkcmVlZW1hTmJOZWFha2dzaFBlVWFoaEFod2JCZ0RkOGVsZEtnUmZBZFZoY2IzaFpmYWNOZWhhaGVlZldiV2VvZ21hY2hIYjliSWZEZFVjQmdhZWNmM2FoYVphWWNtYjlneWNmZVZoa2JRYkdjV2dnYUxnUmhXZjhjUmVFYTJhOWVIY2NjMGJFZkNmUGVFYkFmYWJIZmtlZGdDZlpmbmRsZldjWGNIYUZkWWNVZlhhZGRYaFNlaGVaZ3BlWWJSYVlmWWNaYWtobGV2Y2Fia2h0YndlVmhXYzliYWdSZ3hjMGVkZVZlVmJKYTBjWWd6YlJjdGJIZVRnZ2NFYVdoeGQxZ0VhUGJSZXdlemJlZkFmVWVRZVhoQ2R3ZHphWmR5YUpjV2FGZTBmRmhpZmJiM2hBYTJiSGNRYzBoS2JEZ2pkd2czYkJhWGFkYXljUGFWZHRmWmNRZ2hmVmFvZFFna2F4ZHZmU2NqaGxmdmRSZTNoTWJUZFJnMmNnZlZjU2dGZUJjSGVFZEdlWWhnZEVmMGFFZC9iSWJCYTloM2RYYTJoQWhXZmFiV2JFZ1doR2FHYllmVWZaZW1jWmNoZ2NmRmdWaHZhV2NrZzlmSmZIZlVhaGhTYmZkemg5Z3pkYmEyZ2RncWhTZHdiOWVTZEVoR2NSZk1nZGNuaFpmU2RRY2hmVmc0aGRkaGVvY1pjR2VGaDVmWmhjaG5nSWJzaGNjQmFwYktmUmhYY0JlMWhlZ0VjdGYzZWVibWNsYVhkV2RSZkFhWmZhYUFkdGZGYmJnMWJnZlRoTWV4YnRiemdmYzBhOGQ4ZFhlUWVFZ0RoU2N4YUFieWFmY2xjWmFIZlpobmdKaEFnZWIxaGRhWWFBZTNieGV0Y0ZhZ2VoYXZiR2VFaHhmbWhZZlhkQmJWZWJmMWVwY0hoSGVSZjFoVmVVZ25hUmVyYmVhaWgxZ0RlSGRqZkpoL2FOYzNnUWViY0xoUWhRYUVmTWR6Y3RocWNDZHdiTmZpY09mM2VjY3hiTGNXYklndWJMZ0hhQmZBZUZlMGdsZkhoZGdSZVVjS2NJaHplSmhuaEVnUmJWY2ZjVmJqY29lRGhFZVdjWWZZZUhnMGdWYkhiY2h4ZU5oSGZhaEJiVmhJZ1VoRWJjZVFkWmFuaEpnV2NGYldiSWFtaEdhVGM0ZkViTWRVZlFhVWdZaFFkc2NZZWRhQWNGZnplWmRtZGRod2JBZFdjWmdXaGJkUmUwaGRoVmhWY0phMGRhZjNhcGJqYlRiV2FwaExkRGMxY0ljUWJOZWtjeGc5aGRla2FOZ29hRmRYaGhnMmRFYWtjc2JZZ1FiMWNsZmlkY2RuZUJmd2FRZFZkaGdqZldhbmRWZjRiU2IzaGRkNmZhZ1ZkZGVaYUVmRWdSaGhnQmgyYzlhdmZFZ1JoTmJ2Y1JhM2RNZ1RkUmEyYWdhVmVRZEJiNWRKYlFiRGVRZTllQWZsaG9oK2JLY3dkRWN5YldjUmExYUVnSWhEYlZoVGdiZVFjOWNhYU1lbmNkYzNnSGdEZUJldmRSYzBnZGZiZVNkQmVzaFJhSWNDZ0lhMWJMY1VmMWRpZkhid2ZOZVNhUWFtZGhiTWJQZzNhOWVTZ0dkVGE5ZDRiZGhoaEpoTGhHYUVjTmZaZllnbmVKZndiY2JFZGdiUmNEZ0FkNGFnZ0tkZ2FWYzNnY2NrZE5lWGVXZFJnQWdaZmFnQWF0ZkZiYmd4YUVjVGNiaDBiZGN6Z0VjMGg4ZThhRmZWZFZlUWZUaEViUmJ2ZGZibmZ3Z1ZiYWduYUpmUmhkYzFhZGRLaEZobWdsYWhiRmFoaGhibWZGZ0dnNGUwY1lkV2cxZFZlZmUxZm9iYmRIZ1VkOWNjZlhjbGE1YXJhZWVtY05hTmhhZmtjc2RQYlVnaGhCZmtkVGhIZ1poMmNVYWdlc2hWYkpiQ2hvZlNkSmJ4Y0FmWGNFYlNjc2NoaGZkSGZBZWNkVGEwZGtjSWhlZlhiaGFaZGViM2NwYi9oUWJraHdiRGFEaEdmUWZMYlZlV2RZY2RhT2NXaDljSGVjYXhkTmVIZWFjQmVWY0llVWZFYWNlUWVaYm5oSmJXYVdoMmZRY0dhS2dBYWNmeWFMZm1ja2hJZEVhMmVSaDVlSGQyZHNhVmZFYXhhRWFBYU9kaGcwZHVmYmJSYzBmZGRWYVZlSmYwZWFmM2RwYWphVGVXaHBkTGZEYTFhSWRRZ1pkRWJ4Y3BjZGJsYXBmS2ZRZVRjQWYvaFFoVGNCZktnUGhsZGxnL2djYW1kSmFsZ1hmVWFOYVBoV2dpaEZjeGJSYjNoZGN5ZlBlUmQ4Z1FoUWQyZEljNmVDYzBoNWh2aEFhR2M1ZHZmV2RuYk5kSGRSYjNnWWRMYVZhbGZCZWZhR2FXZjlnWWRWZGhhVmhxY2NkbGVGZTNoVmQwZW9jV2NhY1diRWFXZkdiR2hZZ1VmWmNuYnhmaGhIZjFmMGU3aEVlZ2I1Z09nRWdWYlViR2FlZEdmc2hvZGJiMGIxZnJhV2J3Y1piZWFPZG1nUmdNYmRjbmdaaFNkUWJoZlZmNGRkaGhlSmRMZEdkRWROZlpkTWVIYUpiN2VjYkZkcGJwZ1NjVmFwYjFjZWhFYXRhM2hlaG1mbGJYYVdiUmRBZFpjWWFSYkJidmViZHhmRWRUZmJjMGRkY3pmRWYwYmRib2RGZFJhVmdaaFNhemFwZm1lY2JsYVllVmZhYm5hSmhSZGRnMWZkYUtnSGJpZ2RhdmJSaGthb2NwZlFlQ2FrZXlhT2JDZEFnUWhZYlFmMGZWZlZkRWZrZlFkSmd4ZzBlbGFMZ25jSmJiZUNoQ2I0Z1BmVGF4aEFoaWZHZVRnZ2gxZEJlZ2R0Z2FhTmJuYllnYWhIZ3hiUmNEZUNmMmg1ZnllT2NYaGxlSWNHZkdiTmhhYWRoWGJoYkxhZGMzZnBlcGdWaDFia2ZRaEdnV2VoY1pnQWNEYnRlRWFRZ1NjRmZIYmViemNsYUhlYWFCYVZoSWJVZ0VmY2VRYlpibmZKY1djRmJXaHBjeWhVaFhnOGREZVNoZ2d0ZXBlYWdrZUljUmNhYmpmNWJtZVpkbWdGZXdhVmZXaDlkYWNSZ3hkMGFkZFZlVmRKZzBkYWMzY0lmeGJUZlhiZGdMaEhnMWhKZU1jWmFCaDViL2hlZ25jaGdDZUZkWGJoYTJmRWNrZnNkWWZRZzFlbGNpaGNlbmJCaHdlU2JBYnBhSmFCZ2ljbGU0Y0pkM2g4ZHVjSWJSZTRhS2hIYkJka2Q4YUJjMGdVYjlnSGZSYk5oOWJTZTNkTWNGYlVjbmYwYkdjWGVWZ3hhSGJBYkdjOWcrZGZkQmhWZ3FmY2NsZEZoM2FWYjBnb2RXZ2FjV2RFaFdmR2dHZ1liVWJLaEdiZ2FWaENlU2VVaEtnUGJqZmhjOGFiYXloY2V6YURlUmRRYkpiRmhqYzBiYWZKY0hhMGJtZk9obWdSZE1jZGJuY1piU2NRZ2hlVmI0ZWRiaGRKYUxnR2VFZE5mWmFZZm5iSmh2ZmNoRWVCZUxhSGdSZkloOGdLZXphQWJsZ0JkMmdsZktkV2FVaFFiWmVkZmhlVmhiZGJnd2RraGFmWWIwaGRkN2JSaHdlOGNoaFJoamhNZ0NnUmZ4YnRibWFZY3lic2NWaGRjM2ZKYkRmWWdrZ0phS2ZFZEdna2IxaEhkeGhGYU1mRmdHaFplbWFZZFhiQmRWZGJhMWFwZ0hhSGZSaDFjVmZVZ25hUmRyYWVhbmdsY05iQmNVZE5lYmdHYWxoa2EzYVFnSGhZZGljWGRrY0pmSGRkaEhjWWRUaFdkaGJGaFBlY2gyY0poeWdjZUhhQmFJZVFjMGVsZGFoZGZYZ2hjTGdkYTNmcGZwaEJkVmVrZmJhR2ZYZm9iaGhSYldiOGhSaEVlMmI5YkhjY2d4Yk5oSGZhY0JhVmNJYldnVmZ3ZDZlWmVuYUpjV2RGaFdlcGd5aFVhWGFkaFhkU2drZHRmZ2JiYVRhd2ZZZFpkaGFSYm1oWmhtZ0Zkd2RWZVdjOWRhZ1RoMWVNZ1RhQmRRZkFoN2JQZXplVWQzY0ZnRGFvYk9jQWdRZ1ZlQ2ZMZFJkZ2V6Z0FmemNzZ01lUWhXZXRma2RmYmllNGJZZFhkbGNrY2tnSmN6YjRkemJIZEFkb2hHZ0ZnSGRWYndkSGEzY3RnNmFPZzFmdGJaYVdlUmNCZ29oVWJHZjljdmVFZFJmTmd2ZVJmM2VNaFRnUmUyYmdjVmVTYUZkQWFWZFZjVGdJY25nQmhGZ3RocWRlZG5jdGMzYVZhMGdvYldlYWNXYkVkV2NHZ0djWWJVZVphbWFaYWhjY2hGaDBjN2FXaGxkb2RkZUZhZ2dGYWJlZWNFY0ZiNmZZZzBnMWJxZVNkd2g5YVNkRWZHaFJnTWhkY25jWmNTZ1FlaGMwZHFkZGZnaDlmTGdDZ0VkTWZGZVlhaWNCZDVhZmNHY0phRGJTZlZlcGgxZ2VlRWR0ZjNjZWFtY2xhWGVXY1JjQWdaZGFoRWZKYkZkTWUwYzBmVGRBZDBoOGRuZ1dhd2I0YTdlR2NVZWdhRWNTZnhhQWEwaGZibGRZZEJiWmVuaEpjRmFaZFVhNWZlZERoM2Y5YTJkQmRBZEZhemdHaEdjWmIyYWFjSGN4Yi9iYmgxaHBhSGhIZVJiMWFWY1VobmZSZHJoZWNtZE5lTmJhaGtmdGVCY1hkR2RRZ2RlUGRCYU1jU2dMZlNjTmRuZkNhaGJkaHJhTmJHZHNjMmhLZlJmSWVkZEFhZ2NSZGliUWEwYmxnYWFkYlhlaGFMaGRmM2dwYnBoVmUxY2tiUWhHYVdnZ2JMZVJnWGhBZlJiR2YyZWNnVGhPYjFjb2JVZ0VmMGhkYUlnV2YwZGNiRGZHYTNjSmRMZUZjVGM1ZXlkVGYyZmxlSmdTZGdiUmQ5ZWFkQmdvZnljWmhoY1JmbWZaY21oRmR3ZFZoV2g5aGFjUmh4aDBoZGVWZlZnSmQwZmFoM2RwZWpoUmNUZzRlRGRSZmdhRmVyZE5ia2Z4aDlkZGdrZUFkL2VGYVdhVmgyYVJja2RzY0dhWGhVYWRoaWFZZDJlWmc1Y1JkR2ZsZkpnV2NuYVZoNGhTaDNjZGE2ZWFhVmRkZVpkRWZCZGxib2NDZTBhVmN2YkVlUmFOZ25kRWF6Y3RmYWdGZkJhTmRIZlNjRmZ0Z0hnQWNSYnRneWFTZXhoVWIrZWNha2c5ZnBnU2NVZm9oT2ZZZEdnMGY4YkdmR2ZZZ1VkWmZtaFphaGNjY0ZlVmR2ZFdoa2VjYWRoSGZWZlZhU2JkY0dndGU2Y2FheGJrYWliQWFsZXdjcGdRZWhlbGVNYmFoM2ZaYUFkVmZ3Z0JjNGFjYkJmSWFmaEVkVWhwYXphWWVuZUpld2RjZ0VhaGZEYlNjVmNwYzFjZWRFZ3RjM2hlYm1mbGVYZldjUWFvZ1poQmhnaE1jUmZKYTFmaGdBY1lnMGdjZ25lSGEwYWNnNmZHZlVmaGRSYlZmeGdsYXFhV2JGZlliVmVhY25nSmRSZGRmMWNkaEtkRmZtZGxlaGdGZ2hhaGFtYlJobWFaaHRhWWhXZVJmL2hiZzFjcGdIY0hnUmExZVZjVWhuY1JhcmJlZ21jTmFOY1lnMWZBZmxhVWNoZkJka2hUaEhnWmcyZ1Vna2FJZlZnZWhDY3NkYmhSYXpjSmFEZldlV2FKZXlnY2NIZUJjSWZRZjBhbGRhZGZhVGVaZ0ZiSmR5aGdjbWdBZ3hmWmhFYlFnRGZoY09kU2d6ZWhjRGZXYWphc2JDaEJobmVvZkplUGVBYlphYWFNZ2ljSWRRYmVhM2NJaFFhUWNDYVFieGRCYVRkNGJZZ0JnQmFaZ2hoTmRSYW9hWWVOaEJoaGRtY0xjMmNoY3dmRGJrZVZmYWJSZXhmMGVkZVZkVmhKYTBiYWIzZ3BoamVUZFdkb2daZlNhZ2haZUZhTmdnZEpiMmVmZW5kaGVDZUZkWGFoZDJlRWNrZHNiWWRRZjFhbGdpYmNlbmhCYXdmU2FFaHNhZGhXYm1maGc0ZFFiQ2ROYnpjWmFYYTFhWmhFY0JmbGVvaENmMGJWYXZiRWJSYU5idmZSZDNjTWVUaFJhMmdCYkhmU2ZFYzFoSGNBZUdiWWR1ZFZha2JkYmpoZmVuY3RlM2NWZjBjb2RXZmFjV2hFYldoR2JHYVliVWFaZm1lWmRoZmNnQmN4Y3ZiQmRoZHNoZGdjZVZmMGNHZVBiQ2VJZ3BhYmgwYTBnK2dSZXdkOGRBY0hjR2FSZFloZWVuZlphR2hVZEFjeGhzZWJmd2dSZGNjQ2VsZHBjTWJiZm5kSmFnaGVkVWdSYnBoU2JWYXBkMWJlY0VodGczZGVlbWJsY1hiV2VSYUFoWmVhZkFhc2dMYllnV2FWZnFoSGh5aElhWGFiZ0NiWWNhZlpjeWFrYXBoT2RHZE1mVGFBZmloWmM2YUdlQWZaZTdlZGgxZWRhS2JGYW1mbGRoZEZkaGhoYW1mRmJHY1phbWVZZ1hoQmhWYWJiMGhWaEhlRmJSZFVoQmNHZ2pnMGc0Y0FmVGVFZHdhYWFsZ1lnUGJCZmhiQmU2YVVibWJoZzJkUWNGY1lkY2dkZUZhd2JTZ1NjeGZoZ0RkV2JXYkpneWJjZ0hnQmRJZFFoMGhsY2FkZGNYZmhhTGJkYTNlcGNoZ0FleGJGYlpmU2doYk5nWmNSY1diUWNSZEFjaGJKZUhoYmdoZ01nVGVhZEFmdGJXZ1Rka2FjZkJiY2JIYnRlYWhQYjJlcGZ5ZlVkWGRkZFhhU2ZoZ1picGJZYVJhWWFZYlpnaGJSZm1mWmdtYUZhd2JWYldoY2RPYURmMWNSYU9jTGdnZUJkMGJZZUhkcGJ4ZU1iR2hwZ1diRGZ3YllnUWJlY2xoSmdvZmRia2ZwZUxkR2dWY0poMmNFaGtmc2NZaFFjMWFsY2lhY2JuaEJjd2ZTYUViTmVKZldjbmJWYzRhU2EzZGRkeWZQZVJhOGJRY1FhMmJJZzZhQ2cwZjVldmhBZm1hNWh2Z1dibmdNZEJhVWhuZDBkVmJUZ2xmQWhUY0djV2M5Z1llVmdoaFZicWVjaGxiRmgzZFZoMGhvYldkYWVXZ0VoV2ZHYkdlWWZVZVpjbmJ4ZGhjSGdsYjBmN2JFZWdoNWhPYkVoVmZVZkdlZWJHaHNkb2hiZjBiMWZyYVdiZ2haZGVmT2VtZFJnTWhkY25iWmRTZlFnaGZWYzRkZGhoZ0pnTGRHZEVlTmdaY01kSGZKYTdmY2dGZXhncGJTZlZkcGUxaGVoRWN0YzNjZWRtZmxlWGFXZ1JjQWNaZVllUmNCZ3ZkYmd4YkViVGhiZTBnZGd6ZUVnMGhkZm9oRmZSZ1ZiWmRTYXplcGZtZWNnbGdZYVZnYWZuYkpnUmNkZDFmZGJLZ0hkaWFkY3ZjUmRrYW9jcGNRaENma2F5aE9lQ2FBZVFlWWVRYjBiVmFWaEVha2JRZk9iemNvZC9kRmdnYlpjTmdkZDBidGJKYUJmMWM0Ym5kR2hEZDhoNWJIYkVlSWdkZ0xoSGFvZFNiR2dSY1JkRGhFZ0doNWZ5aE5lWGNsaEljR2dHZk5iYWdkYVhmaGhMZ2RmM2VwY3BiVmMxYWtoUWZHYVdnaGNDZUFmMmg4ZVpkR2cyZWNnVGJjY3dnNWdIZVlhMGVGZ0JoWGhFaGNmWWJOZ0hjSmNMYkZhWGZwZ3lhRGFYY2NhRmFRZHhlcGhwZVllRmZNZ1JjYmV4ZVFiOWFUZ0diRmJ3ZlZiV2E5YWFnUmR4ZjBmZGhWZlZmSmgwZGFjM2ZwZ2piR2V5ZnNnWmdEY3hkMGJRY2VoVWd3Z2JnTmV3aFljS2ZHaHliZ2Y1YlJnVWRNZ0tlVGMxYWxmNmRjZm5icGZ3YUFmVWhOZEVmV2FtYlJneGFVYkZmMWU2ZWFmVmNkY1pjRWdCYmxib2JDZDBmVmV2Y0VjUmNOZXZkUmN4ZjhlYmJFYXlkQmNjZUdkMWV4YkhjUmVHY3BjeWVCZ0JnbGFxZU9lMWIxYTNlR2FFaG9kYmhhYlhlQWhhYUdnR2h0Z2JkYmYzZzFkTGRjY0ZkVmN2Y1dka2JjYmRkSGNWZFZjU2dkY0dndGM2ZlBnbWRkZXFkU2N3YTloU2dFYkdlUmVNZWRkbmJaY1NhUWZoYlVndWROaDBkQmhMYVVjRWFOZkVoWWZtZ0piOGhXaGtmaGZEZ1NoVmhwYjFjZWFFYnRmM2dlZW1lbGRYZFdlUmVBZlplSmVnZHRlWWNiZ3dlQWZmY1JhVWFkY3poRWgwZWRmb2NGZ1VoaGNRZ1JieGJCY21iY2dsZFlnVmdPZ1hlSmFNZmRiMGdkZ1JlUGJHYWxhaGdGZmhmaGdtZ0ZjR2VaYm1nWWFYYUJjVmhiZ3hod2VJZVRmeGExY2RjQmdqYXdjaWVLZFJiZ2dmY0ZmMGZzZ1NmVWJnZEpneGRXY1hlWmN3Z1VoaGhZZU9jZWdIYTBlWmJBZ3hlaGZmYldjU2J0ZnlkZGNuZlplSWZTY3diZGFhZmZlMmVWZExkWmZXaDllL2JYZ2tkSWVRZEVmRWdJZkxnUmJXYzhkUmRFZDJhOWJIZmNheGdOZUhjYWFCZVZnSWhVaEZnY2hRZ2VnSGZJY0NlRmNXZnhmMGZVZVdjZGVYZlZod2Z0ZjBnWWRVYlVkWWFZY0JoSmRtZ2RkbWdGYXhmU2NIZkpnYWZFZzFlVmFVZ0JoaWNrYW1oYWEzZEZkamdCZVdlcGJHZ0RjMGNOaHRkWmdFZnBmd2hkZWxob2ZSaEZmV2dWZzJlQWUwZ0liVWVhZFZkbGhpYmNlbmJCYXdhU2ZFYU5iSmZXZG5nVmc0aFNkM2ZkZTZnYWZWYWRnUmhSZ0ZnRWRoZFdmRGM0YzlmRWFSZWhjdmVEYndiNGRUYVdibWhnYWRhUWdGZmdmVGFFaEdnbGJ5YkdiQmJ4Y3FnYmJFaDlmM2RSZzBmTWdXY1plR2VGYUZnRWdXZFlmU2ZaYW5kUmMwYlpjVmh4aDBoY2ZFYmNkZGJIaFZmVmVTaGRlR2J0YTZhWWYwaDFocWNTZzFlMGNYY1JlRGNFYmVoT2FIY1llQWdRY2hkNWI0Z1Bnd2VsY2hlR2FFYU5jWmJZZW5iSmh3ZmNiRWJoZ0RkU2RRaGRnOGVkZEdlRmMzYmVnbWVsZFhoV2NSY0FiWmFhZUFjdGJGZlplMWg4Y2RnUGZ4YVVkOGhSZXdjZ2g4Z1RjQmRnYlZiU2ZVZmNhMGJPY3doSmRRY0FjemN3aEZjRmFUY0pnS2ZDZzJma2huY1FjMWdZY2xhUWhDZjhocGJMYTNoQmNkY09kMWFaZ0hkVGN4aEZlVmVHZjNnaGVyZVBiMmVwYU5kTWNXZUVjUGVVZGhiQmdraFRhSGNaZzJlVWZrYUljVmVlZEhlWmdiZURkUmVoY0xjVWJXaG9mbWFjY0diMWFJYlNiQmUxZ1RlZWFYZWhmRGVKYVhmcGMwZVZlMGZrZVFmUmRXY2hjWmRUZUdoTWRSZUVhaWFwZ09hZWFoaE1iY2JRZWhkVmVJZFViRWFjYVFnWmRuZEpmV2JGZldkcGN5YlVoWGhkYVhnSGVGZ2NkN2NZZlZla2NZaGVmeGdRZUxoSmF6ZFVlNGNXaHphOGhWZEViQmFVaFBnV2VWZ0pic2NhZDNnQmFqZkJjR2VwY0dnRGIwaE1oWmhmZDJoWmUyZGRkbGhKY0NmRmZYY2hmMmVFZGtmc2dZY1FhMWNsaGlnY2FoZXhnNGRIaEFlc2RBZENoWGVsZDRkSGQzZXRlNmNPaDFjdGZaYldhUmdWZm9mUmRFYlZmaWZFZVFhSmZqYlJlM2U1Z2NkVGFuZ01nL2JTYUZhQmFIZkVjR2NaZHloVmRoaFZncWJjY2xmRmQzZENlbWNBY1dkYWRXZEVjV2VHY0djWWRVZ1pobWVaaGhoY2JGYVVmNWNHZXhkVWFkZlZlVmRWY1BiZGNDZ0pkNmNiZ2tlMWQ3ZFJneWVWaFNkRWRHYVJnTWVkZG5iWmRTZ1FkaGVWZjRjZGdoaEpoTGdHaEFnMWFaZmZjM2NKZ2hiZmNHZkplRGNTYVZhcGExYmVhRWJ0ZjNmZWZtZWxjWGJXZFJoQWhaZGFiRmdoZEZiY2hoYUVmRGZkYUdlMWJ6Z0VoMGdkZW9oRmFVZmhiUWZSZXhiQmdtZGNibGRaZFRmSmNTYUJnUmZmZndoTWNDaFhkemZvZWFhUmhCYmhidGFGZkNhNGdiY1ljV2gxZlZnZmFVYTloU2FIY1JmdGJWaEJlbWQ5YXJhZGQyaDRnRmVhZWxkVWhTYVVoZ2dCZ2tkU2duaEJnMmhXYWdid2ZWZGNnbWZzYlNkV2FRZjFiVmhVZUhmbGh5ZmVoVmRwaElhUWQwY2xjYWRkZVhjaGVMY2RkM2RwZHBoVmExZ2tiUWVHZlhoZ2ZMYldmMmY5aEZkRWYyZWxoQmNjZndlTmdIaGRoUWdoZFZlVWhCZFFhUWZZaEhiUmVXZUJjV2hwZHpmVGJHZ3BkWGFIZmxnNGdnY01mbWMxYUtnWmRoYjlobWNMYW1iRmY3ZlZiWGY0Zm5iUmZ4YXNhYmJWZVZhb2FuZWFjMmdkYmpiWGhHY05lSGZKYlZiSWJRZVpmRWN4ZDJjZGVsYUpmQ2hGY1hiaGUyaEVka2NzYVllUWgxYWxmcWdKZmpnZ2E1YUdiemhnZmJiV2ZuZjVhNGJBY3dmcGY2Z2RmRmVkYVJnR2hCYkVjOGJDZTBncGV2aFhkeGRwaHZkV2JXZDBnVGhWZjJiRWRWZlJjVmRBYVVjR2JXYVpkMGhWZ2diZGUvaFpmMWhoZnNjZmRVYW9lV2RhZldkRWFXZ0dnR2dZYlVoWmFtYVphaGFjY0FiY2dxaERnaGZKYlBoVWcxYVVlQWZkZEdnQmg2YUtjbGRaZkFhU2R3YjlkU2JFZEdlUmdNZ2RjbmFaYVNiUWVrZmhjeGFlZGpiaGNMZEdiRWdOZ1pnWWZuZUpid2JjaEVjaGFEZlFiUmNSYjdhS2RCYmtmNGJMYmliWWNEY0FoRWhCaGNiWmJsZXdmWGVKZ2tkVmRXaEJkZ2drZG5hQ2UwYWRjMWNGYlFoNGZGYUNhVmFNY3llT2d4ZGxiYmVhYW5kb2JGYWVkMWRjZ1lnR2RtZ2tob2RIZnhiZ2Y5ZlBnbWJaZW1lWWdYY0JhVmZiYjFkcGVIZEhlUmgxYVZlVWVpZFlidWZMZGpmWWRmZ0pjRWdzY0hoZWZCY0Jla2dUZEhoWmIyZ1Vka2hJZ1ZkZWNIaFlmU2RTZHhoaGZEYlVkVGVaZ3llYmZYYUJkRGRGYzBhQmRXZ1hiM2JoZkxmZGQzYXBjcGVWaDFka2VRZkdlV2ZnY0xlUmZXZDhhUmhHZXpnMWZIYmJlaGhOZVhkYWZFZWxiSWFBZGtiNGVjYVRhSGFKZ1dlRmVXYnBmeWZVY1hjZGFYZVNnaGNaY3BiWWRSaFlhWWNMZHhmUWE2YU9jbWVFY2NhWGdUaHNkU2JEZ2tiNGRSYVZoUWdaYzRjYWZ5Z2hjdmFUZVhhdGhIYkRmMGRNZENnY2gwZEJoMmhlZjBnTmZRYkRkWGVGYTZmT2ZFZXNiWWRRZDFmbGZpZWNjbmVCYndhU2NFZk5jSmFXZm5oVmM0Z0JhWGhrY09oRWRDZmNhOGZkYkdhWWVKYmVjVGZjZE9nYWRHaHdnY2JNY2diTmVqYktlQmNwYmhkU2RBY3dlYmVFZ0dmNGNtZFZlZ2JoZXFjSGV4Y0FlamNIZjBlUmJRZEpiU2Y1Z1poU2dtYjVnQWdiYjJjOWV0aFdmbGRWZXZoV2NrYmNmZGRIZFZiVmFTZmRoR2N0YzZkWWEwZTFncWdXZ3dkOWdNYUVmRGFCaE1nY2FIYUJoU2hTZ2tjRmQ0YmFmeGFKaFpiRGVWZ1pjWmFhYlhhSWFrYWNnRWJOYkRmV2ZGY05iNWRVZGtjdGgzaGVjbWNsZ1hjV2ZSaEFnWmhhZEFndGhGY2JjeGNFYVRnWmV4Z01oN2dXYWhlUWVUZVJnemRWZVFjV2FoZEJmMGRaZDBlTWhWY2JhSGNJYkZjZmFsZnRnZ2VGaG1hbGdoZ0ZiaGRoYm1jRmdHZVplbWRZaFhkQmhWaGJlMWdvZFZhSGdSaFpoVmNRaDFlNWVyYmVhbWJOZk5lYWFrZXNhUGJVZWhmQmFrYVRlSGJaaC9mU2NXZWdjVmFlZ0hlWWZTY1NmeGhoZERkV2NXZEpoeWZMZFhkbGNFZmFkVWZsZ2FmZGdYZmhoTGFkZTNncGhwZVZnMWJrZlloVmEyZVpoYmFGaHlhQmNGY1hoRGJzaGVmSWYxaFpoSmJQZTBoY2FCYUJiQWVKaDVoS2RDZ1phSGJBYXdmWWNYZFVhV2ZwYVhhRGRFYU1ibmJJYmtjSmVSZUtjVmZwZ21iYmZqY1ZjOGZWZ1RmMWJXZlJlMWFRZ1VhVmRRZmxlZWhhZzNicGZqZFRlV2dwZUxhRGIxZ0lhUWVaYUVmeGQyZ0pkQmNjYldmUWZDZm9nNGNFZmtoTWd5Z1FjMWhsZGloY2NuZEJhd2NTYkVoTmNKZVdmbmRWZDRjU2QzY2RneWJQaFZjZGVFZ0VmQmZJZThjQWZrZGxkRmdFZVJhTmN2aFJiM2RNZFRoUmEyY2doVmRTZ0ZlQmJIaEVjR2NaYjZhQmFCYlZkM2RjZGtjRmQzaENoMGNwYUVnWWdHYTBmOGJHYkdmWWhVYVplbWFaZmhoY2dGZFZldmFXYWtoY2NkZ0hmVmZVZ2JoZGVEZGNibWZZaHlhRmdpYkhnMGZjYmJkUWcyYmhhTWNJY25icGdTY0VoQmFsZDRiWmVCZTVnTGFDYzFhRmFPZ2RiR2FWYThjY2JFZFZkUWJXZTBnMWJqY1lhRWRKaDdhVWdHY2xlWGZXYlJkQWhaZWFkQWh0ZEZkYmF4ZUVkVGFiZzBlZGh6Y1hhVWNrY2NmYmFEZmdjMWdJZzJnOGdIYkFnQ2dSaDBlRWh3ZjBlaWRBZ2ljY2g2aGVlUmRzZFZlUGZCZmhobWVGZEdhWmdtZFlhWGFCYlZjYmMxZnBkSGZIZlJlMWZWaFVhbmNSYTBlZWRtYnRjRmJQYWdjTmZHZEFjV2JzYjJnTWFYYVpjcmFVZ2xnQWJBaGJoWGhZY1VjU2EwZXhoS2hWZVdoSmY2Z0phRGFnaEJoRWFEZklkSWFkaFhlTmFMaFplZ2hkZXBhU2VsZmxiRWRHaFhhWWJWY1dkMmg4aEpnR2ZtZlpmdGNjZXhjTmdIZmFlQmhWYklmVWhFZWNlUWFaYm5mSmhXZ0ZlV2FwaHlmVWZXZTFnWGZKaFJnNGU5YUtkVmM5Z0xlYWVoZlFleWRhY21iRWZpY1diV2M5ZGJnVmN4aFFkUmJmZjFiSmgwYmFhM2JwZmpoVGFXZnBmTGREaDFoSWRRaFpkRWJ4ZzJlSmRGYkpiSmJGY1dmcGhjYUVia2ZzYVljUWYxZ2xoaWFjZW5lQmN3aFNlRWFOZUpmVWYyZzVoU2hTYTNmZGU2YmFhVmhkaFpnRWFCZGxib2FDZ3hkaGhtY0hkVGVsZ3ZjUmIzY01lVGdSaDJnZ2VWYVNiRmNCZkhjR2FDZmhmOGZCZ2tkY2dsZUpjaGI0YWpnRGhoaHBnVGNaYXpiWmRFZFViVGZKZ1JoRGd5ZGdhMWFZY1VlTWNOaFBnMGdjZ0FjSGNSYk1iSGZPaGlnZ2h1Z0tjZ2VJYWtjU2R3aGNhR2hIZkdmUWJlZGVnbmFZYmJmU2V4Z1VjamhYaEJlSmNMZ0dhRWdOZFpnWWduY0pld2NjZEVoaGhEY1NjUWVnZndmTGdCZDRnbGNOYkdkbGhmYWNoeGZBaFphYWRBZXRmRmZiZXhjRWNUZWJhMGRkaHplRWUwYmRnb2FIZFJkeGRRZFdoaGVCYXRiSmFsYjhiWmJRZ0hiSmJSZWRjMWVkZUthRmhtZmxiaGJGZGhjaGRtZUZkR2daaG1kYWZTYUpmVmZjZmxjcGVYZUhnVWFGYVZoQWRIZjFhbmJVZ0doTmdOZWFka2dzaFBkVWNoYkJja2JUZEhoWmYyZlVia2ZJY1ZkTWZYaFphT2FGZnhjZ2h2aFViVGVZYTZhT2dTZU5kRWVRZHhmMWFXaGRiU2ZwZkhiZGIyZWhmbGhWZzBib2FDZERibmY0YmNhU2VXaDhhY2JBY0hlMWJRYlphUWJ0Y09hWmdEaDloSWVVZ0VkY2RRZlpobmNKYldjRmFXZ3BjeWhVYVhnZGhYZVNobGJoZ25nRmJXZDlnb2VBZzNmQWFaYUJoeGJNZkNhTmZCZFljbGZOZ0diaGF0YUpkVGEwZkdoSGExZUJkamFUZldhcGFMZ0RiMWhJY1FjWmFFYXhjMmZkZ2xkSmJDY0ZoWGZoZDJlRGJVY3NhUWhTZXdlMGNxaE9leWhNZ0xoR2dqZjVnSmdSYTNiVWZzYlNmMmRsYWtmZGIxZGRhQmZHY1JoVmhvaEFjeGZFYm5iV2FFZUFnVWJGY1hhTWRZZVJkM2FsZ29nU2FFZjFlSGdBZm5mTmduYVZkaGNOZXFkSmZsY2hoK2ZmYVVlb2dXZ2FhV2hFZ1dlR2ZHZVlhVWVaY21kWmJoZ2NoRmNWYnZnV2hrYmNjSGFIY1RmcGNhY0liQ2RNZ3poTWJFaEZkcWdIY3dmTmVTZFFkbWFoYU1jZGEyYWRiYmRUaGphOWM0aGRnaGdKYUxjR2hFY05mWmhZY25oSmJ3aGNmRWVoZURlU2NRY2hlMWhjYTBmdGVsaFVhR2FsZVhlV2RSZkFjWmdhZkFhdGNGZmJleGZFYlRjYmIwaDVhb2dPZVVnZGdvZUZoVWZoaFFkUmd4YkJmbWVjZmxiWmNJaFljM2c1ZzdnZGYxY2RmS2FGYm1nbGhoZ0ZlaGVoaG1mRmVHZzRjb2RiYnllQWZIZ0ljQWg0ZklmU2VVZFFlRmJGZDNlb2Q4Z0thQ2hvYlplTGZ5ZUpiQmhCZWdiTmgyY0ljQmVOaDJlVGUwY0phVGVMYVRhaGFSZkhiMWVFZU1oRmMyY0plNmRKZUhieGNJZUVhVWJWYWFkUGdIZkZoTGVMYkZlQmFwZFZnMWVrYVFjR2JXYWdoTGhSYVdoOGhSY0VnMmQ4Y1ZiTmFrYWNnU2ZPYWxldGZJaFdlR2gwY1FnWmRuZUpmV2hGZ1djcGJ5Y1VlWGRkZlhnU2NoYVpocGFZZFJoNWdNaFphZ2NsYm1jYmRUZlZhNWhXY1VhVmdhYlJneGYwYmRjVmZWZUpmMGRhYzNlcGZqZlRiV2hwZkxiRGcxaHBkQ2NaYUZiRmcyZ1pnbGNJY2VkRmdTaHBiL2ZIaG1lRWRZY1FnMWRsZWlkY2VuZUJid2FTZEVlTmhKY1dobmdWZDRhU2h6ZzVoNmdOaFFldGdaY2ZhQmFFZzhoUWF3ZndhOGNIYVJiTWI3Z1NhM2JOaEJmU2YyaGdiQmdSZkZhQmJWaEFkWGVKZmxjUWdnZTFiNWFaZEVmVmRnYVdiMGdvY2JiZWgzYUFiQ2ZEaDNiSWRNYWRkWGhCYjFoYWdGZ3hkamRjYUVhY2hkY0hjVmVWZFNjZGdHYXRlNmdZYjBjMWZxZ1Nhd2U5ZVNiWGFtZm9jNGJEYndhWWgzZkpmbWNvZVphQmJHZUFjcWVZZ1Rhd2ZxZ0Zkd2ZJYkFmSGN6aG9oM2FZZTFmcGQxYWVnRWV0ZzNlZWFtZGxlWGJXZ1JlQWNaZmFjQWd0ZUZiYmF4Z0VkTWdiZDBkOWQ3aFJld2c4YmhnUmhqYk1iQ2VPYWhiQmI3YWNla2dRZUFmZmgzZUpkWGNkZXdlTmVEYUdla2NOaGhnRmRoZ2hobWhGYUdlWmJtY1ljWGdCZFZoYmMxY3BjSGVIY1JlMWdWYlVnbmhSZ2pkTGVpaHNkRWNPZFRlQmVkYlViaGV0aGtoWGNRZ3RiMmhUZDBhSmhCYWVlR2dnYk1lVmZSY2hiYmZVYUdnNWJZZmNhSGdCaEllUWUwZ2xjYWRkZFhiaGNMY2RkM2ZwZHBnVmIxaGtnUWZHZVdlZ2VMZVRoVGJ0Y1pmV2RqZ3doOGFJZlJkTmVNaGFmQWFjZzFlVWRGZW9kUWJNZG5jSmdJZ0NlM2dSZnliUWRHZUZkZWNSYmpkeGNwaFlhUmRZZllmWmhoY1JibWRaZG1kRmF3YlZhV2M5ZmFmUmR4ZDBjZGRWY1ZjSmc4ZFBiemhJZHFoSGdoaEVjWmJEaDFja2FRY2RmemdGZDJkYWUxYUlnV2JGY1dkWmRvY0RiRWRzY0tmVmQxYUJkcmhXYUhnQmJ3Z1NmRWROZEpiV2duYlZoNGNTZjNlZGQ2Y2FhVmZkY1pnRWZCYmxjeWNDZnlmdGhuY1JlVmJzZm1oRmRIYjhiVGJFaDJjUWJWZkdkbGN4ZEhjRWRYZ1piN2hXY2pkOWNxY2NibGdGaDNiVmEwY29hV2FhZVdmRWVXZEdjR2JZZFVhWmRqZlJmaGJlZjFmVmY3Y2NiRWFjZGRlSGFWY1ZhU2dkZ0dmdGU2YlljMGIxaHFkU2V3ZVpiSmdPZW1oUmJNYmRobmVaY1NjUWVoZ1ZnNGhkZ2hkSWRXZUVjVWM5Z3piWWNuaEphd2hjY0VjaGREZFNlVmRwYTFoZWZFaE1hNWVkZURka2hGYkZma2RSZldhUGNGZkloVmdLYWhoOWVFY1BhUWg0Zm5kVmRpZzRlbWZRZVZjdGhDY0pkWGJWZG1oYmUxY1pkVGFQYXpkd2JTYUlmeGU0aEZiV2NHY2xocGFRYWhiUmRtYVJhbWJwY21iS2JIYmxlVmZOZkhiQmhIYUhiUmMxY1ZoVWFuZVJkcmJlYm1kTmZOZ2Fka2Z0aGRmRmUwYVFieGhIYWpkaGMyYVdnbWRnZ1ZoZWJIZFloU2ZTY3hkaGVEZ1dnV2FKYnlhY2JIaEJlSWRRZDBmRWRPZmRnV2ZWYUxhZmFDZjVmZ2NXYTNjTWZRZ0dnV2FnZkxnUmNXYThoUmJFZjJmOWFIY2NmeGJOYkhnYWNCYTBjYWNVYUZjb2JRZGRjbmFJZEtjRmRUZGhmN2FYZVZmMWRYYlNkaGdaYXBnWWNSYVlmWWRaYWhlUmZtY1pnbWZGaHdjVmdTZVplYWRHaDBkRWRkZE9mVmFvZmdiSWd6Zk1id2JRaFdjb2JmZEFoMWdKZkNoYWRFZXhmaWJlaGxnSmFRYkJjR2d4ZmhhQmJsaE1mTGJWaFVjMWExZ2ZobmdCYTllV2RsZ0poZGZUaFdnRmhnZldoR2RGZHVoY2RWYzVmVmdPZGhhbGVvYkNmMGJWY3ZkRWJSZE5ldmFSZTNhTWNUZFJiMmdnZlZkV2hGaEJoWmVFZkRkSmR5YVVhQmROZ3FoZWJnaFZhM2FTZWtmb2hDZmVkM2RnYkNoQWhYYUFnRGRkZkhnOWUwZWNnRmM1ZnZlRGZrZWNmV2dIYVViUmJiZmVjRWNGYzZhWWcwYTFlcWFTZXdoOWFTaEVkR2NSZ01lZGJuZlpnU2RRZWxldGcyZEFobWZzaDdoZmdTZWNnbWdBaHdlQWZDZ0VjVGZFZThhT2hpYzhoRmhDY0NiUWNGZERna2FOYlhjV2dSaEFmWmZhZUFjdGRGZWJleGNFY1RhYmYwZ2RmemNFZzBhZGhvaENna2VoY1ljVGcwYlFodWVPZHdjVmR1YU9mQWE5Z1JnYWNsZGNmZWRGY25hZGMvYUNkQmJoYzBiQWZHYzlmcWhTZDNkQmdWYWJlMWdwY0hkSGFSZjFnVmFVaG5hUmJyY2VjbWZOZU5jYWNrZ3NhUGJVYWhiZ2F3YkJoRGQ4YmxmS2VSYUFiVmFjZDNiWWNEZ05laGZoZmVnV2NUYlpleWdiZm1nNWFXZVFhMWFoZE1lZmNIZVJhaGNkaDNicGFwY1ZiMWZrZVFkR2FXZWdoTGZSY1djOGZSZEVjMmE5aEhhY2Z4ZU5lSGNZY0VjRWVBZUdlUmZSZHJmTmZIYkpoZGdGZFhhZ2RQZ1VlV2ZwZ1hjSGVoYlpjM2hmaHdoZ2hZYWZlaGMxZXFlVGJHaEZhd2NWYVdjOWVhZVJkeGUwZmRhVmFWaEpmMGRhYzNocGFqZlRiV2FwY0xnRGcxY3BnRWhMZkFlVWhsaERjUWdCY0NjSGhuZWhlbGNiYTBmc2RGZFFkMGN0ZTNhWmYzZ0JnMmZTY0JnZGdBZ1VhMWQ5ZDRlU2YzY2RlNmNhYlZiZGFaZEVjQmNsY29kQ2UwY1ZhdmVFYVJkTmV2ZFhkWGhOZTlmVGV6aHhkZGRBZ1FhTmdMaEVkRGdKZytlVmhrZ2RibWRjYmxjQmRtZVhka2hZZDhhYWRXZUVjV2dHY0dnWWJVY1pjbWVaZmhnY2VGZlZhdmVXaGtlZGhQZ0hlVmc1aFNkWWRFZ0ZiNmVZaDBhMWNxaFNhd2c5YVNkRWZHY1JjTWFkZ25jWmZiYVdnVGc5YzRjZGZoYUplTGVHY0ViTmdaZ1lobmhKYXdoTGdVZ0ZoUGVZYTFjcGgxZ2VhRWN0YTNlZWdtZWxlWGhXZ1JlQWRSYUpnZ2JVYVZiUGJWYTVmSGJJYUJhTWJxYlFkd2JKZm1lUWhoZW9jWmJFYTFnVWNBY1BhaGRsZlVoUGdoZTRlMGNkZDBncGJLZFVoRGF3ZXZiVmVVYndodmdXaHljaGdtZ2FnU2NSYlpiYmZ3YmhnTGNIZFZoUmhjZ1VnaWU5Z0JnZWRtZE5mTmRhYmtic2hQZFVoaGFCaGtjVGFIZlpnMmFBYkFhZGJCZ0xkU2VSaGNmU2QxYU5iTGVEaFNob2U3Z0lhM2Z4ZEliRmcwZ1ZmYWhKZjNoUmFMY2RmbWVwYmxhVmF4YUFoWmFBZ2tiSWFMZFJnV2Y4YVJnRWMyYzlkSGNjZ3hjTmdIZE5nUmZ4Z0VhZWhrYmNhUWZaYW5hSmRXaEZkV2FwZXlhVWNYZGRnZmRCYkJkZ2c1YU1iMWZsZE1mS2dVZ0FhL2VOZ2liUmUrY0FoamMwYVRnRWMxZGhnN2FHZVJiMGIxaFBneGJnZkdiVGVYZ2RhTGNTYVFjZGFlZ0pleGdnZy9lT2ZSYnhoQ2RIaFNneGI2ZkViaGRrZFVoUWd4Z0JjcmRjaGlkdGhhaFNmRWhOZkpiV2duZlZlNGhTYzNmZGY2Y2FkVmhkZVpkUWdsZHdmOGNYZWhjY2JoYUViVmZoZG5oRWV6ZXRjYWNGZ0dmUWZWaEhhRmR4Z0hmUWJtYnBkeWdWZndnUmRtZmNlaGJoaCthVGFHYkFoV2RhZldoRWRXaEdnR2NZZFVmWmJtYlphaGJMZ1ZkeGdqZWNhRWFjZmRnSGVWZFZoU2hkY0dmdGM2aFljMGYxaGlmQmhRZkVlQ2RRYmlnc2ZZYU9hU2VJYUxkRWRsY0JiMmZJaFVlQWJDZ1RjQWZZYTlkTGdTY2NleWNQYkFmMGR2aExnRmVwZW9nZWFBYjBnaWZOZkNib2VEYkVjRmY5Y1hlYWdBZ01lUmZZZHhoRmdCZVlkMGFjZjZoR2RrY2NiemhQYzBoaGhRZVJoeGJCY21mY2dsZFllVmNhYW5kSmNSaGRjd2NVZ1BlUWZqaHdoemRXZUJnZ2RzY0hiRGFJZXVoS2VDZE5kWmFiZXdoNWNMYUhkVWM5YVpkVWVuZFZhN2hkZ21oTWNFZVlnMWRBY2xkVWNoYkJja2NUZ0hlWmMyZlVoa2ZJY1ZnZWFDZ3NoYmJSY3plSmFEZVdmV2JKZnlnY2NIYUJjSWJRYjBkbGRhY2ZhVGJaZEZhSmZ5Y2dhbWVBZHhoWmJFZlFhRGZoZ09mU2N6aGhhRGVXZWplc2FDZUZlMWZ3ZlNoS2dsY2tlTmFNYWlkSWFRaGVnM2hJZVFjUWFDZVFmeGhCYVRoNGhZY0JhQmdaZ2hoTmVSZW9hWWhOZ0JlaGFtaExiMmZoZXdjRGFrZlZiYWNSZ3hhMGhkZVZnVmhKZjBnYWYzZ3BiamJUYVdob2haZVNnZ2JaZ0ZkTmFnZUpmMmNQYUZlb2VXZFhlVGdFYWxlSGVrZXRnTWJUZTFka2d3ZGZhbmJCYXhiV2VVYjlmSmVFZDNleGdqZ1lkWGhkZjZiYWhWZWRmWmdFaEJkbGdvY0NnMGFVaHlkR2hCZTljRmJSaDNlTWJUY1JlMmJnZFZkU2dGZ0JjSGJFYUdjNGE4ZVdhRWdVYTRiUGZRaFVkNGhBZHhoTmFHZExoR2E5ZVZhVmJ6ZFphTmFaY25ndGZoZU5iZ2dBYmhnR2dSZk5iVWNVYmhhdGRTZmZjRGc5ZTJnWWh4ZjlnbWRTZTBkWmZlZEVnQ2hGYkZjZGhpZzFlNGJRaGhoVmQ0Z2RjaGNKY0xhR2JFYk5hWmNZZ25mSmV3Y09kUWQ1Z0RiUWFYZUJjMWRlZEVkdGUzY2VobWRsaFhoV2hSZ0FkWmJhZkFmdGNGZWJneGJsZmFiYmZ4ZnNodmdFZjBhOGhoaEZiVmRWY1FoVmZ4Z2xmcWRXY0ZjWWhWaGFobmFKaFJhZGUxZmRmS2RGYW1kbGhoYUZhaGJoZm1mVWVXY1loNmhQZ1hkQmhGYmJkMGVkYWFkQWJCYjBjUWZVZmljZ2MzZ2VnbWRzZklmYWVsaFlkUGRCZWxkZ2Z0aEhoM2VnZTZjRmR3Z3hlU2VMY0RlNGRiY1JhemdKZ0RhV2VXYUpmeWhjY0hjQmhJZFFmMGhsaGFiZGNYZmhhTGhkZnliaGNwZFNiVWdRYVFhVGFXZlpiSGhBYUNhRmhXaFJleWJkZ0hoZGdSZVZoSGdZZEVmZGdJYlRjVWJkZUVnYWJEZTRhVGJXYnllMGRtaEdoWGE1YmJoWWZCZlphcGhZaFJiWWVZZFpoaGNSaG1kWmdtYkZnd2hWY1dmOWFhZkZiUmIxZEJhQ2JWaEpiOGJPaFhjcGgrYVRkWGZwZUNiQWMzY2dnUWdaYkVkeGQyYWRjbGNKYkNkRmdYaGhkMmdFYmtoc2FZZ1FleGV4YmlnYmdIZEJlZ2FTY0VlVmJQY1djamZ4ZjRlVmRYYmNnL2FhaFZlRmhmZ0VmQmJFYnRlQ2MxYmhkdmJXYkJmcGNqaGJmWGJNZFRnUmIyaGdhVmhTYUZoQmVIaEViR2JaY3loVmdoYVZhcWVOZjFlRmFxYVNnbGFjZldjSWdHZmdnOGRHZ0dhWWZVZFpibWFaaGhmY2JGYVZmdmhXZWtnY2RkZ0ZmSGg5aFNiZGNHY3RnNmRZYzBjMWNxZlNld2Q5ZlNoRWRHZFJnTWhkZmliUWVYZEZka2dBY3FnT2NCZ0plYmdBYzJnbGVaZVlobmJKYndnY2ZFZmhkRGZTY1ZicGIxZWVkRWNzYitmUGVHYmxjZmZTZ1JkQWhFY2RnUmFaYkZmT2V4ZjloZmVLaGdna2UwY1Jhd2U5aG9nU2NSYlJlUWJWaHhnQmc3ZGJoMGRzYlZkUGNqZ29mWWdKYkZka2RHYlVleWdjZW1jUWJsYkJjdmRGZERlUWdqZ05mU2ZVZUhiSWRWZXBmWGRCZWpoZGRWZVVkbmVSZ3JoZWFtZU5iTmNhaGtoc2VQYlVoaGhBY3RoQ2huZVpoK2ZRY2toSWVMY2ViQ2ZRZGJkU2UwZndlTGJDZ3lkMGNsYWNlRGc0ZU5jRmNFaGtkb2ROZ0RoWWZNZU1jaGc4ZjdkQmJSZFpiQ2hFaFdjcGVmZ0JoRGUxYVdlVmhqZXNmMGhKZTFlSWZWaFBjQmdVZEhmQmNSYk1kUWFLZlRnUmhXY1ZoeWZVYW5iSGh6ZE1nRWRTYkJoOWF5YVNieGhZZFlnWmRoYVJobWNaZW1oRmZ3YVZnV2Q5Y2FlUmExY1JkYmNWZlZkcGFrZ2FiMmhSZ2pnQmRHYm9oWGJVYjFlSmZaZ1pmRmhKZnJoZGZnYllmS2FYYUNidGQ0ZlhkZ2g1ZVdmQmFBZTBocWZlYzFlcGh3YVNjRWhOYUpmV2huZlZmNGFTYjNiZGI2aGFhVmZkY1piRWFFZjBjZ2NXZ1Fjb2U0YkVmVmQwZ3FoRWRIYU5kaGdCZGlkWmNTaERnVGRVaFZhUWRpYmtlZ2RYaGhjY2U1ZVBjUWFRY2xhRmZBYzlhbGJQYVNkQmJFYlRnR2VaZmJoTWV6ZEpmaGVQY3hiTmN2ZUdkQWJoaEloVWJ4aEVhQmhkY21mSmZoZlNjVWUxaHFiU2N3YjlhU2hFYkdoUmhNZGRkbmdaYVNlUWNsZXdiK2JkZ2hlcGhiZUdjRmUxZFpnSmgzYnRod2NKZUFoQWFSZEJkZ2YxZTFkTmVnaDRlZ2RlaGhnc2JXZkZmMWNkZWNmRGZWYWtjWGFJY0VkTWViYmJoUmVRZzhnUmZoZlVkcmdVYkNnMGNlZkFoeGNBZ3BhSmh3ZkljVmFKYVRoUmRSZk5iUmRnY2ZjV2dDYjBjeWRGYUJkRmI5ZVBkbWJaYW1lWWJYYUJnVmRiYTFmcGRIZUhoUmcxYVZoVWJqY0ZncmNaYUdhTWFaZ0lmZ2dKY2NjWGNGY3dlaGZBYmpiRWVpZkdla2dJYVRhZmZuYlljYWREaGhjaGZlZldkVGNZZjZmT2ZTZE5nR2VEZXdid2NVZk1oaWR3Y0RoZmhuZlpmRGRWYjFka2dRY0dnV2VnaExlUmZXYzhkUmRFZTJmOWZIZGNoeGdNYlRiWmhsZmtjTmdIY2diQmNFZ0xlbmRKaGJiRmhUZ2hmeWFUYVhnY2dTYlNlaGJ0Y3BiS2JCaFllZWZZaEJoUmd1ZUloMmFGYXRoVmNUYnRmVWdDZzFoaGVUZUVmZ2VZZDhoYWIzZGRjamNIaDJhcGFBaERieGdzYVpiZmQyYVpjMmZkYmxjSmFDZEZlWGhoZjJhRWRrZXNnWWJRZzFla2EwZU1meWJKY3diQmYwaDlnamRXaG5iVmM0aFNoM2JkZjZhYWVWZGRjWmdFZ0JhbGJvY0NiMGdVZ25kRWhRZjVodmhBZm5iTWVlY1JheWRFZ09lWWdsYkJnSGNFYkdoWmN5YlZmaGFWYXFjY2JsZkZiM2dWaHdjTmhRYWFnV2NsaENlVWZDZzlnSGJaYm5kdGg4ZmJiVmhVZTdkV2hrZEVnYmFIZVFmZGVTYmFlbWJzZXpkWWQwZ3Ric2NTaDBicGJTYURjbWFRYmVnZmUxYnhmU2ZRY2hkVmU0Y2RiaGNKY0xmR2ZFY05iWmhZY25iSmd3ZmNjQWc0ZE1hR2YxZ3BjOWROaDBjdGRxaGVlaWZGZ1hiVmNCY0FiSWRjZndoc2VLZGJmd2Y4Z09lYmExZmRib2RFYTBjcGFsaFdla2FGZ1FnRWUyZXNmcGRjZmxmMGNWaE9nQWE5YlJnYWVsYWNmZWZYZGllQWZ5YmJkVmRkYW1iSGcyZVlidmFIaEdmdGUvZGJoMWVwY0hiSGNSYjFiVmZVaG5mUmhyZ2VlbWdOYk5mTGN3YmRnY2JGYXhjQWJ0ZENibmdaYytnUWJ3aGNoR2FlZUdlZ2JTYUFkeGVnZGZhQmNXaEpmemNQZm5hNGI4ZE9lamRrYy9oRWdRYWNkcWNCY1FnZ2VJYUxnaWRaY2piYmhCZWhnN2RLZWhiMWhsZ0dna2JWaEhjY2F4ZE5mSGVhYkJhVmNJYVVhRWdjYVFkWmZuZUpiV2VGZFNnd2E5YkFhM2ZkZmZmQmNSZlpmMGdZZFFlWWJEaFpmbGd4ZG1mZWFHZEVkL2ZUZG1nOWJSY1RiRmJJYVVoVmhRYVlkUGVKaEhhcGNvZFRnVGNnZTJoRGEwYzhoUWRNZ0FnUWcvZUpkU2VraE5hRmJYZE5lMmFXY3plWWFEaGFhVmRsZmlnY2ZuY0Jkd2VTY0VlTmFKZldlbmhWYzRoU2V6Z0loMmFPY2hmSmFaY1piVmNBZW1hWGUxYjBjT2hRYTBlRWZ1ZEhlbmMxZkRlRmJTYWRlQmVCZXdoUWhlZVFnQ2ZOZThlQmFWZkFkK2VmZEJkSWEyYkdkd2FZZmVlUGNXYzBhV2RUY0NlNWdkZU5hV2VnZnljSmdSaGNhdWVDYUJjVmVjZlJjRmQwaGJiZWRHZnNjemhZZzBjWmZxZ0Fnd2NaZmViRWVEZlpmRmdiZlZoeGRTZVFjaGJWZzRlZGFoZUpjTGZHYUVkTmZaaFlkbmNJZ2loTmZSYndoV2dHZHhhUmYxZk1mRmdCaGRmZWhtZGxjWGNXZlJjQWRaY2FoQWd0aEZjYmYwZHdiYWJZZDJiMWd6YkVmMGNkaG9hRmhVYWhnUWFSY3hhQmZtZWVhaGZnZGJkT2VpaEFmZWVJZnhnZ2hlYVRmemZrYWthR2NGYTRodmRXYUNocGZtZWZjSGVBY1RnT2JoYVFnRWZTaFZlUWRhZ0hlSGZSYmpjTGhtYzliTmVPY0VjY2hQYkdieGd4YmtmQ2ZYaDloMmJDZVdkZ2JWaGVkSGNZYlNmU2R4aGhmRGhXZFdiSmd5YWNlSGhBYkJmQmJVYWxoU2hkaHlkc2VmYkphVGJNY25jRWhGaHNlUWdCZkhlVWdMY0VnVGRaZUJhVmVpZEFlQmFjYjBjZGFPZmFmRWc1YmliVWFFYWNoUWZaZG5hSmVXZUZlV2JwaHlmVWZYYmRjWGVTZGhmWWRnY0poeGNZYVFoVGdCYlJlbWhaZW1hRmJ3ZlZmV2g5ZGFnUmd4ZzBiZGZWYVZhSmIwZWFnM2FwZnJnVGJ6YmtnZmZYY1JhdGVlYUllMGg1ZzJmYWIwZDljQ2RRaFNjRWZtZVZkd2VSZWViUWF3Z3RnSWNjaG5jQmF3YVNhRWdOZkpnV2ZuYVZoNGRTZTNkZGE2Y2FlVmVkZVplRWVCYWxkb2JGaEVmVmZuY0dkVmZaY3ZiV2FuYk5lQmNUZW1kUWVWZlFhQWRKYkhhRGZXYVphaWNYaHhnbGZxaGVlaGNoZTNmU2FrZHBjQ2dJY1NnaGdGZEZnaWFwZVJhS2NDYkVmMWZPYUZjeGJtZ2NmRWFjY2RkSGhWY1ZlU2JkYkdmdGU2aFllMGMxZHFlU2h3YjloU2dFaEdmUmZNZWRkbWJ4YlNiUWdFYllic2RKYkZkc2FGZFhmMGRGYVpmZmEyYjlld2RKYUJjRWdUYkRkQmZVYXplZWdBZkpnM2hmZkdiOWFYYlVnUmdoYmNoYWJCZFpjRmJKaGhoZ2RmYWJiMGQ4YzZkRWQxZnBkb2JRYlFkQWZaY0ZnQmU0ZnFnTmh4Y2hoU2hQaGpocGJZYmZmbGZ0Z2dnRmdtY2xiaGZGZWhjaGZtZEZnR2haYm1lWWZYaEJjVmZiYTFncGRIYUhhUWJ4aFZkVGIyYmxlMmdlZmpiZGREYkpkZ2Q1Z0JkRmVVZlFjc2NSZVZieGYyZFVia2VJYlZjZWRIZVloU2NTYXhlaGdEZVdhV2hKYXlmY2dIZGxiSWVHYUdlTmJhYmRkWGZoZUxlZGEzaHBjcGdWYTFia2FRYkdlV2ZnY0xmUmVXZzhnUmdSaFNhNGJWZWNiMWh4ZUhkZGVSY1VlY2JYZWdmUmFZaEpmeWdBZjFmV2RpZjRiM2NNZENiTmRmZFdjaGM5Z3loU2h4aFloWWRaYmhmUmhtZlphbWFGZ3diVmdXZTllYWJSY3hiMGVkZFZlVmZKaG1nZmhtZHhhamJVZzJhb2JFaERmMWJRZ1doWmFFaFFkaWRkZWtkOWNDaFdnbmNGYnRmT2ZFZ3NhWWFRaDFhbGdpZGNnbmVCZ3djU2dFYU5lSmFXY25nVmg0YkZnbGQxZzZjYWVWaGRlWmhFYUJnbGNvY0NkMGZWYXZhRWVSaE5mdmJSYXpncGhWYlJlMmJCYkRmQmd4aGtmRGhFZkhjWmZ5Y1Znd2hoaDNiY2doZ1JnM2dVaFVjd2RXYWFoemZKZ0NoU2ZpaDljYWdJYVdkUmNoaGNmVWdoY3ZmRGdoaDVmTmZXZUJkb2dVZ2RiQ2M1Z3pmU2VVYzFmcWVTZ3dlOWFTYkVhR2ZSaE1mZGduYVplU2JRZGhlVmU0ZWRoaGNJaGZlVWNCZ0ViV2NOY1hlSWgrZk5lUmE5ZERjUGVRaE1hbGhQZVNhNGhsZktiQ2RZY0ZnVWVSZUpiY2ZKZmtoZ2FLZktjMWdoY2RmS2hFZmNjK2JSYWhoUWY4Z0ZnUWFvZlZhUmgxaEZlbWVJZ1FjSmJIZUliemJ3ZVdnZGNWaDVlUmNQYUdjbGZoaEZoaGFoZG1lRmJHY1pibWFZaFhiQmhWZWJmMWNwaEhlVmRGZXRjVmNXZW5hWWY0YkxhamdFaEVhSmdBZ3dhTmRVYWdkMWI1Z1RhQ2ZJZHZmQWFnZ2RkYWJQZW5lWmVYYlNoeGI1YUZmV2VXZE1jOGRmYWpma2RiaEplZ2djYVpmT2FqZndmQ2ZPYVRlMWNoZEVibGRBYVpoTWMyZGdkTGdSYldoOGVSZEVoMmU5aEhlY2Z4YU5nSGVhZUJoVmZJZVVoRWZkYUVmTGhpZ0FmWmNRYm1jb2E4aEZiQ2JCZlhkUGRrYzhnNWhKZEhjTmRLZU5oRmdzZjBoYmRtZk1kRmhHZ3lhUWdVYkNmRWRwZ1RjVmhSaGNoNmRLZERkVWJuYkJoQ2dRZk1iRmRWZ0lhU2RaYkVjZGUyYU1jMWJ0Y1piUGMzY2hhMmJFZGthc2NZYVFhMWFsZmljY2JuaEJhd2dTaEJlNWRKYkhiemdrYXJiRGJuY2RiNGVKY3dlSWVVZVVkbGZ3ZDZiQ2RVZ1ZoeWNEZUJoTWc3YUhnaWFOZFdoQ2FDZjRoVmZIZ0ZkQmJCZ0ZibWFaYjZiQWVoZFZnM2VjYWtjTmVpZ1Fma2VvZlFmYWJUYVVkZmZBaDBjd2FVZVpjbWhaZmhmY2FGaFZidmhXaGtlY2JkYUhiVmdVYWJoTWhtZHRneWVjYjBiMWgwZ1NnMWUxZVNlVGZEZmhlTWVJYWpnNGViZkVmUmFzYzBhTWIxYXdnTWJUY0FhdGNaZ2ZjbmFJYmlhY2ZCaFFnZmZTaFFmNGY5ZU1hUmhoYzVjTmJpYXdkWmVIYWtnUmVSZWFhQmJkY0ZlSmFoaGdnNWRiZTBlZGh6YkVnMGFkZm9mRmdVYWhiUWVSZ3hnQmFtYWNnbGJaYkJkSWhpZ0FnZWFJZEZhY2dFZVViemc1ZmhhWmRGYmtkb2FVZHlkTWNEZ01jeWZJaGFoUGJWYkpmRmJjZ2tnZ2JCY1VkamVzZXRhZWZqaEVlTWdKY0FheGhLZlVkbGVrZXFkQ2ZEY01ndWVVY0Vkc2dPYVVjbmRZZVNhU2d4Y2hlRGhXY1dmSmR5YmNhSGhCYUlhUWh3YUFoY2NkZFhhQWFaZWRmMmJSYzBmVmZ4ZUFkWmNHaFRmcGZPaEViVGhwYkRlWGhXZThmVGFPZDFib2NVY2Noemc5Z0lkVWZFaGNiUWNaZm5hSmhXaEZjV2RwYnlhVWNYY2RiZmRHYkJmWmIzZmZjd2dnYUZjWmZnZ1JldmFhZ2tmdGZ3YVZlV2Q5ZWFiUmV4ZTBoZGhWYVZjSmUwY2FjM2hwYmphVGJXZ0lkQ2JEZDBmOGdRZU1nZ2NNZi9oTWVsZ0pnU2NGZVdmVmhyZURkMGF0Y1JiUWgwY1plaWdKZGpiZ2Y1aEdnMGcwaEZlSGJ6YXNkL2JIYnpiOWI2ZWNkMWJjZ1FlRWFBZGRoMmhGZlVoVmcvZ0dkQmQ5ZEZhUmgzYk1jVGdSZDJjZ2RWY1NhRmRCZUhmRWJHZlpoeWFWY2hmVWIrZWNiZ2EwZHJoVmUwZUpoQ2RhZlhld2FXZ0NnR2I4YlBnVGNHaFpmaGdjaEZhVmN2ZFdla2RjZGRnSGZWYlZkU2ZkaERhMGQ3Zk1iVWQwYmlnVWhDY1ZlU2VFZUdoUmVNYWRlbmhaY1NkUWVoZlZnNGFkY2hjSWNDZ1hla2hOZ1JjWWNEZXdibGVQY1Fkb2RHZEdhMWdoZzFjWmZWZVpoM2JMZGpmQWFIYUhmRmY5YmZjYWJGYjljTWJiZzFnZGJjZFBkVWRkZDdlV2cwYmRnMWRGYlJmcGJMaFJkMWFsZW1mYmdGYlpoZGRjYVhiSmJhaGZmQmc5ZkRmRmJqZjBncGhYZTBmc2ZkYVhnQmd0aG1hZmFIYkFlQmhkZUhoQmZIaEhhUmMxYVZnVWNuZVJmcmRlY21mTmhOY2Fka2Z0ZEtmSGhrZE1maGdUYkNhMWFjZVVja2JJYlZmZWRIZlllU2JTYnhhaGhEY1dkV2NKY3lmY2hIZEFiZWhBZWhidGhhaEphbmNoaFdhZGV6ZVJjbmhIZ2dmcGV5Y1RjQ2g1ZU5kQWFEZDBjWmdSaDJkWmNIZ2JnQmNNZlRkYWZBZjliSWZPZ0VmOWVlZ0lleWVWZldiV2cyZUlmbWNYZlhkY2FTaFFheGVnZjlkTGhtZlZmTWFOZ0ZmMGhvY0lkV2NsZzVkWGVHaE5jd2VSZHhiMGRkZVZhVmVKZzBiYWMzZXBnamRUYVdkcGRMZERkMWZJZ1FiWmVBYTFoMmNhYzFnSWZSZkdjemNRZ3piWGdBYnhlTWJDYTBiSmRJZWNjbmVCZ3dmU2JFZU5kSmRXZG5oVmc0YlNoM2dkZDZjYWRWZGNmZmVYZDBmdGRvZUFnd2UxZ3ZkRGhCZ05kL2dYZUhmTmVhY1JnMmJVZlZnR2VsaEJlWmdFaENoNWZwaFZoaGY1ZWhiT2RsY2hiM2hBYXdiSmJmZE9naGVwYmVhR2dHYjBnVWVOZkJodGZoZWJnVmJVYThlSWZRZDhmZGdHYkZjVWRUaENnWGZCYlFoWWMwYjFmcWhTZ3diOWVTY0VjR2NSZE1iZGJuaFpiU2ZIZnpoOWM0ZWRiaGZKZkxnR2JFY05kWmVZYW5lSmV3YmNoRWFnZFJjRGZBZzRiZ2dLZWdkVmgzY0xjaWhFYmVkQ2FnY3NjemNhYUFmdGRGYmJjeGhFY1RjYmUwZ2RlemFFYXhlcGRoaERkbWFKYVFiUmF4YkJhbWFjYWxmWWFWYWFnaWZRYVFmSmRWYmNmWWdRaG1ibGI4Y0ZiaGFjZGRnYWFtYjBhYWNiZG1hQmdZaGRlamN0ZEtmWmMxYnhhWWhDYkhja2FVZUJnMmN3YktiY2JXaEVhUGZVY2hkQmRrZVRiSGFZaHJhWGVBaEZhVWNOZkRib2ZhYkdoUmVSZkRjRWNHYXBnbWFlYVhibGZCZldoR2VOZ2FjZGdYZWhlTGNLYm5oWmVEZFZkMWRraFFjR2dTYTVkZWZDYXlmeGdGZVdnaWFBaEphY2d4ZHNoVGRaYkJmVWJhZVhnRWhkY1pmYmUzYUlmTmdQYzJjcGd5ZFVkWGFkZFhlU2NoZjRmN2NiZjJkTmh4YkNjR2NCYzFoZGhHZEZodGNWYlNjWmJTY1hjeGNRZlVjV2RWYkpiOGJPZFhoUWFXZkpnQWFRZi9hR2VVZlliUWZlY1Vod2gvZWZoa2Z0ZUxiSGFHZ05lY2NFZmthc2VZY1Fjd2FSZnVlV2VIYkJhd2ZTYkVlTWdQYURhemZzYzdkSGN6ZjRkMWVKYTFiZGZSZ1JkQmdWYm9oV2hVZWxhdmRXYkJicGh2ZEhlRmRrZFRmUmIyZ2dmVmNTYkZoQWRUZkhkaWVNZXFnQmdsZG9jNGhKZGdnSmQzYVNha2FwZk5nYWNTYWtiRmVDYW5md2NVaExkMmE1Z3lnZWNWZ2xodmhFZGxmRWVKYUJiMWFVYmJkZmJIZHBocWVhY2toMGIzYlVmQ2VWZVNiRWJHYVJhTWhLYjNncGY0YlFoaGZWZDRoZGdsYVFmZWRWZGdnQWROYktiemYwZitjY2RFY0FlWGNSYVZmb2RuZWRnRWFzYytoY2cyZ2tmTWJjYnhmQWdaY2FoQWh0Z0ZkYmJ4aGxoVmJPY2dma2J3ZlJod2E0Z25jV2YwaGhjWWFGZVJhbGdtZ0tiWGR3YlZhYWFuZ0pkUmFkaDFhZGdLY0ZkaWE4ZDBiV2RGZnNmeWJYZ1Nia2RvZ1lhVGdWZWRjT2QxYk5lSGRSaGplZGFWZlVobmRSZ3JoZWFtZE5hTmJhaGtlc2ZQZEZhRmg4ZDJhVGVIaDRiZ2dFY3hlQWJWY0tnbmFZaFBlU2QyYU1jK2ZWYVdoSWM3ZmNmR2ExZUlmVWIwYVZmYWNNZEhmaGJXZGRneWU1YW5mR2Z4YnhiZWJYY2pieGJEZlhhbWg5ZVVkRWYzZUZmSGNPY2dkaGVIYkliUmg1ZkRmV2NVY2RoTGhUaEhjSmFXZUZnV2FwZ3ljVWhYZ2RkWGZTZmhiWmJwY1lhVWdCZlpoTmZCYVFlcGJaZ25meGh3YUFlV2FFYlpmRGcxY3hiUGJOZGhnMGd3ZExhaGdzYjNmUmdTZ05jQ2dGY0hjZ2RRaFpiRWV4aDJjZGVsZEpkQ2dGZVhhaGEyYUVna2dzYUpiVWdVZ0ZoaWViZ0hmQWQvZllja2JOY0piV2duZVZmNGdTZjNiZGc2ZWFmVmdkaFpmRWhCZWxmb2hGYkVmVWM5YkhhMGZNZzZhRmREZ3NnYmRDZ0dmRWIvY1NoRmZCZEhjRWVHY1pieWFWYmhnVmNxY2NjbGhGZTNnVmMwY29oTWRhZVhnTWVHYURmSGg0ZVVjZWNHZ1lhdWRXZmxlVmd2ZVdla2hjZWRlSGFWaFZjU2hkZUdhdGc2ZllkMGYxZHFlVmhBZjhlQWhIZWpnUWJaaEpnVGI1aGFhVWd3Z3hlcWZkZGtlNWRMZkVhQWd4ZlpmZmNHZHhkd2NaZGtkRmFQZ1NmVWh0Y25kWWhFZ3NlcmJlZ21kRmFCY1NlaGJBZ2ZoYWhFY1JjTWRaYmpoc2JUYWJnMGZkaHpkRWEwZmRlb2RGaFVmaGNRZ1JoeGZCYW1mY2hrZHdjVmZmYjJmZGJEYmJna2VGY0tlQ2ZHY2thdWhGZmtjUWQ2ZUZmQ2NsYm1hZmYyZDFjVmVlaGtlMWZVYUNjUWRsYy9mVWduYlJocmZlZW1mTmZOZWFha2NzZVBmVWNoYkJha2NUZ0hoWmNwY1VmaGZBYmJoS2JDZ05lQmNBZXhoQmJSYVNmM2ZaZ3lnTGdIZEJkQWdEYUVmbGZFYmFnM2ZoYWFhWmZYZU5obGZWZTBiZ2RDYkFhV2JoY1hiUmVXaGNoWmVYYUdoOWZaZmJjUmVOYVJjWWdSY1ZhT2ZVZkZlRWFEaGJlM2I1ZldjQmFIZmhicWNVYlNhdGRYYlFmZ2FCaDZmWWdSYkFlWWdLYlJoMWJ2YVRlR2FGYndnVmdXZjljYWhSZ3hiMGVkZVZiVmhKYzBlYWQzZnBkamZWZjJicGFEaFJmbGJraGJjYWVHYVpjMmhkYWxnSmJDY0ZhWGdoZzJnRWZrZXNmWWZRaDFlbGhpaGNjbmhCZXdnUWJBYXhhSmhSZDNhVmV1aFhlbWFKZnBhZmgxZWRhU2RFZ0JlRmZnZEFiMWNSYi9mQWN3ZkJldmFRZ1hhTmNjZ1RhbWhnZUpkVmFGZkJmV2NBaEdjOWZ5ZUNlaGNWYWliWWMwY0ZhbGNSZkVhb2ZRYmFmVGZVZ1lhV2J5YTVjVmVOZEFhVWF1Zk5jQmNBZk9iRGdrZTliVWVGZUZmeGhiYmZlV2FkYVFkWWgwYzFocWFTY3dhOWNTaEVoR2RSZ01mZGVuY1poU2ZRYWhmVmI0Z2Rja2VCZEZoU2RCYVljS2FLaG5icGhhYWNkRWhoYkRiU2JWaHBhMWhlaEVodGMzZ2VnbWRsZlhkV2VSZEFoWmRhYkFkdGFGY2ZmUWhVaERmYmV4ZnRoemZHaHdjaGJvYkNoMWNaY1FlVmdnZWhodmhmZm5od2NWYmFmbmRKY1JkZGQxZGRoS2ZGaG1obGRoYUZnaGJoY21mRmRHZlpnbWRZY1hkQmJFYWZiVWVKYUhoUWRSYzFoZGdXZ2pmdGJyZFpoSGMxZk5jZWUxY2tmR2VVZGhoWmdrYVdhbWFWZi9lWGRtZmdhVmFlZ0hkWWVTZ1NleGJoY0RoV2VXYkpmeWdjZ0hmQmhJZlFmMGhsZGFnZGRYZWhhYWFaZldkSmFwZUNkMWZrY1lhRWJTY2NlTGhXYTNoRWZSZ0JiV2FaY0hmZGVSZk5nUmJlYXhkeGRFY2Voa2djZ1FhWmFuY0poV2hGYVdkcGh5YVVkWGdkZFhhU2doaFpncGFZZFJlWWVZZlpkZ2RWZjBkZmJtYkVic2FWZFdmZGdNZlZnQmYwYWJoVmhSZjFnOWdRZ1hncGFqY1RjV2hwZUxjRGMxZUljUWJaYUVmeGgyaGRmbGZKZUNkRmhYYWhhL2JHZjFoQWR5Y1FoMWhsY2loY2FuY0Jhd2NTZ0VnTmJKZFdkaWFoZVNmU2MzZGRhNmdhYlZlZGRaaEVhQmNsZm9iQ2V4ZWNncWNSYVVnWWY5Y0NmWGZOZmRmQWRqYThnVmNQZVJoa2hKaFJoSGg0Y1RoQmhFZmNjcmZLZzFna2RsaFhnbGNFZzhnYWZXaEVkV2NHYUdoWWZVY1pibWRZZDhkV2ZsZlZkdmhXY2thY2FkZUhkVmVWZVNhTWhqaDRjMGFJaEJla2dqZUJmRWVGY1NjWGQyZnhnRmNkZGlhMWY0Y1FnaGdWYzRoZGRoYkphTGJHY0VmTmRaZlliaWFBYzFhSmRCZDBhUmhCZjFocGduZGVkRmFaZHFoZWNpZWdoRmVIY2tlVmJVZkxkVWJVZFJoUGdCZjliZmNLYWdna2EwYlJid2E5YUNhRmdVYmhkUWhSYnhjQmJtZ2NhbGZZZFZkYWFuYkpjUmZhY0ZoY2FFYVVhemc1Y2hoV2RSZ0FmbmdSZGlmRWR6Y0xmRGJVZ2JhT2d3ZmtiOGhEZkdhQmZjZVhoQ2hFYjdnUGNpaElmWmFMZzBnTmJPZkFhRmJjZ3hnQWNUaE1lNGdCYmhjRmJ1Z2FnQWdzYmJmUmhWYndmS2JIZWllY2FoY0pjSGRoZEJnYWZVZGxnYWNkY1hnaGhMYWRkM2RwZXBlVmgxZWtnUWRHZVhnSWhMZEVjU2FkZVlhUWhHaDhoT2dQYVVoQWhUZUthVmJzYUxiRmRRZ2hoV2VaYmphMWg4YUZhV2JwaHliVWZYYmRoWGZTYWhhWmVwZFllUmdZY1lnZWZSZ1Fhd2dLZFNoZ2EwY1ZmU2hkZlVkQmRGY3hiUmZHZlZib2RnaElkemNNZHdhUWZXY29lS2JYZFJkVmJGaEtoUWZrZjRiSWRnZUVkNWRCZ1FnVmYvaE9kRWRzZFlkUWExYWxoaWRjZm5hQmN3Y1NjRWhOaEpiV2FtaDlnNGJCY1RhSWJ0YmFkUmFoZVJkVWVVYnNkdmdYZ2dhZ2RxYlhjMGJjYjhnUGdHY05ldWdUZm5lTWEvaFNhRmJCZ0hiRWVHYVpieWhWYmhlVWUzaFdoRmZGZjNjVmQwY29iV2hhYldlRWZXYlhmamZOYWFiSmZUYUlnb2JQZHhodGF2YUVla2E5Z0plRmhGaFVoSmJYY21idGc2ZlljMGExYnFiU2Z3YjlnU2NFY0dmUWVlY01leWJJYkhoRWVGZXRoNGJmaGpoaGhMZEdoRWJOYVpnWWFuY0pjd2VjaEVoaGJEZFNiVmRwaDlkTGZBaE1iK2JLZ1doY2VFZEhiRmVWZWRkYWVCYlpiRmdPYnhjRmJhYUlmUmNRZW5iVWVnY2tkcmVVYkFkY2FXaFJkMWM1Zm1iYmNWZlpjQmVaZERoRWdkZ09jQmVrZlBjSGFtZUJhaGVEZ0JjZ2VvZkhoRGdKYXZjYWRIaHhlL2JiaDFmcGZIaEhlUmMxYlZnVWFuZ1JmcmRlYm1oTmdOZ1lhaGY5ZkhnR2MwYk5lcWFHaG1mZGQyYlRoMGZKZUJjTWhEZjllQmVSZlVlc2NHYkhlQ2RaYThnTWN6Y3dkSGhEZVFmeGNTYmZkSGZZYktmTWV6aDVoaGRCZUZjQWdlZVdhQ2R4ZVBlVGhTYTRiWWZHYW1nTmF0Z2NleGdOZkhjYWFCY1ZkSWJVZ0VnY2ZRY1pjbmhKZldjSGhUYjRkNmZHYkNnUmRaY0hmQWhSZXBhZmZCZ1pkTWFMYWxoMGExZ2FkRGRJZjFiRWNDYXRoVWFCY0ZiRmZTYkdkeGFkYjhlWWJuY1FiaWZDZFNlNWhEZlRmbGhzY1pnYWhHZlpkMmVkYWxkSmFDaEZoWGZoYTJoRWZrZXNkWWZRaDFobGJxZkphamNnYzVjR2YwZTBnZmVTYlhhVmhsYlNheWJNZnliSWJBYVJnWGhRZDFid2Z0ZVRoMGFzZHNoWGFWZXdhaGJBZm5lc2VhY1RlbWhRYy9iU2dGYkJlSGdFYkdiWmZ5ZFZhaGhWZnFoY2ZsZEZhM2NYZ3hmNWNlY0lnRGZJZ1lkVGFuY0ljVWJlZDJkWWExYU9iQmV3aDhiVmNCaFJhWWFXYUJmRmVjYk5heWRjZDFjTGVRYmhiaWdRaGdiRWFCZVJkU2NZZ1lnSmREZ2NoUmdGZ2hnMGNyY2ZneGV0aEhiTWRrY05jWmVZZW5lSmF3Z2NnRWVoY0RkU2JWYXBjMWVlYUVlTWNqY01maWhBY0VmVmYwZFJjV2JQaEVjb2VKZEVhRmIxZFdoSWVVZ2RjdWVFYTFhZGdoYUdmV2NKYVFnUmF4ZEJhbWFjZmxoWWVWZ2FlbmZKY1JnZGQxZWRhQ2hRYmllRWhvY1JkUmVZY3JiVWdTY3NmMWJLY0Nlb2FRY2JoMGFkY0hiRGVSZVJnWmVlZ0hjUmRyZWVlbWJOaE5hYWVrYnNjUGRVZGhiQmRrZVRkSGM0YmljR2NnZ3RhR2ZkZmpkdGRYYkJjbGhjaFJlQWNHZEpmdmVjYURoNGhkZERnd2RWYVRkZWdWZEpmTGRkYjNocGFwZVZlMWdrYVFjR2NXY2dkTGdSaFdoOWJGY1dieWNZZ1VnV2FSZE5mSGdhYUJhVmJJZVVhRWZjYVFnWmhuZEpiZmREYWtkQmd5ZFVnWGFkZ1hnU2ZoaFpncGRZYlVic2d5YVpjaGJSZG1mWmVtYkZkd2FWZVdhOGFNaEJla2Y4Y2RhR2QxZUplcGJhaHpoTmhyYVhoR2ROYkZjZWRqaHRlK2dFZ0ZlOWFraGJoWGJoZ0NkRmVYZ2hlMmRFZ2thc2ZZZlFmeGJkZHNhSWFpYUliL2NIZ0Fld2JkYkFkeWVVZjlnUmJTaDhlaWZJYlNlZ2dNZ1FiRmgwYXBnWGN3aEJodmhEYUJnTWhwYkVoamExZlFnRWJ5Y0ZnYWFCZmxiQmdQZVJnR2dwZnlkQmRCY3hjcWRLZFhhdGEzYVZnMGVvYldoYWhXY0VlV2RHZEdjWWhVZE1iQ2hjYXplY2VCaHhiamVjYkVnY2ZkY0hhVmdWYVNiZGZHZHRnNmhZZzBoMWdxYlNkMGdwY2VlT2JtZVJjTWZkaG5mWmZTYVFkaGFWYjRmZGFoZkpoTGFHZ0FoeGJaZmZoM2JJZnhoZmZqYWNmUGhCZWdnMWQ1YlVoa2J0ZDNlZWJtZ2xkWGRXYlJmQWJaY2FjQWh0YUZhYmUxZGtkVGZjZ2tkY2J5YUhoVGJnY2dmWGNBZDhmWWdYY0RhcGRtYmNkbGJZZVZlYWZuZUpoUmhkZzFkZGVLYkhlaWR4ZWhhQ2F4YmdheWhGaEdkeGJtYkxkbmZsZ1pjYmUxaElhT2NIZlFnQmJWYkZiM2dSaDFoWmJIZjFoTmhlZTFjMGNHY1hlaGNCY3NiQmFYZVpmOWJUYTBhSmZIZ2VoSGZ3aFNhQmNCZUZnUGZXZFdlb2Y3ZGNiSGZaZ1ZnUWYxZTllUGdZZEdjdGZlYWZkbmRaaHBoWGJ4ZkFlUWdFZm5mVWVMYkVkV2M4ZmJkRWF5ZWRiT2ZhYURibGNIYmFnQmJWYkljVWNFYmNoUWdaYW5mSmhXZ1FjeWdzYWdiVWhUZGxkWGhWY3hlWWQ5Y0thVmc5ZkxmYWRHaHNmcWZLYVRlWmR3Z1hobWc5YVNnVWNRYWdhSWZSZWtoZGQwZGJlWGZvYW1mUmJHYVpkaGNEZjFmSWVRYVpjRWV4ZTJnZGRsZEpkQ2NGYVhkaGYyY1JkMGRzaEZmUWJ4aGRhaWhiZkdkNWR1Z1NnRmFKZGZlUWhWaDloNGJTZTNmZGQ2YmFiVmNkYVpkRWRCZWxob2dYYmtjVmNrZkRjQmJNZTdlRGN6Z3BjQWVTZlJiZGVkZkFnUmhjZ1BkRWVHZTFheWJYYmdlTmEvYVpmMGJKZGlkVmIwYndnV2hJZUdmZ2hOZE1lbWNZZlVlWmRtYlpiaGZjYkZnVmd2Zldka2NkZUxjWGFBZmRkU2FNYW1odGJuY1lkMGhVZi9iU2N4Z05hT2NFZkhlVmJhaGZlM2dZZE9lUWZoYjFndWZZY3dnZGVZaERmVWVOZWZnWWVqZ3hmNWJhZzJhSmVEY1NiVmNwZzFiZWNFZnRoM2FlaG1mbGFYYVVlVmZZYVpiZGVRYXRjTmJLYlJlRWhQZmNnMGhkaGlhQWhFYTVlb2VTYlVlaGNZZkFkUmJCZDRhYmNFZmdkVmhlYTJldGdZZmZobGZ0Z2dmRmFtZGxiaGVGZ2hoaGZtZUZjR2JaZG1jWWdYYkJnVmZaZXhoUmJIZkFjQmUxYkRhUmEyZkZjNGFiZjJmTmRMZGFhZ2QwYUdjWGZqaHBka2RUZEhhWmgyYlVja2dJZVZnZWVIZFlhU2hTZ3hlaGhMYURjR2dKYXZkY2ZEY1phSWdYY1ZnZGdFZWRnV2RsYWRoZmRuZ1pnRGNWYTFha2VRY0dnV2hnY0xlUmJXZjhlUmRFZzJiOWhIaGVoMWh4ZUhjZGNSZlVhYmZYY2poaGdjZUtjU2ZWZ2ZkR2FVY0JjeWZVZFhiZGFYZlNmaGZaYnBlWWVSYlljWWNaZGhhUmR1ZUxmbWRGZ3RmVmFUYnhjVWhPYUZjVmhVZ0VoaGhwZjllWmMxZUJiamFUYldhcGZMZ0RmMWRJY1FjWmdFZnhkMmRkZ2xnSmRLZ1VkSGFoaHJkRWZnZ1VjWWhTZ1Zha2F0YmVmM2Z4YmFoU2VFZU5jSmZXZm5lVmI0YVNkM2ZkaDZhYWNWZGRmWmdHZUZoQmhvY0Zma2VVYnFoRWJRZzFoeGZXY1hmTWdDZ1VjV2FFZFphWWVsYkJnSGdFY0dmWmJ5Y1ZjaGhWZ3FnY2FsY0ZkM2dWZzBnSmFmYWFnV2JvY0xjR2VEZE1jVWRiYkdkWWZ1YmVkVmVsaEZoV2RraGNhZGhIY1ZnVmhTZWRmR2F0YzZmWWcwYjFmcWhRZjBoWmhTZUZjbmVsZ01iWWZHZU5jSGdVYlFiQmh4Z2ViamJoZUxhR2NFZ05mWmZZZW5oSmd3Y2NmRWFoYURlU2FWZnBoOWVNZ1VmdGQ4ZFpjMmNrZlpnV2dSYW9iWmdJaEFiSmhKYVJkUmhFY1RjYmUwY2RjemFFaDBlZGJvYUZhVWJoY1FhUmF4ZmdneWZPY2hmOWJHZ1pjQWcwaGRlT2dBZEJjS2FDZzJhbGIzZEFhd2UxYzFlQWhXZVphZ2VZZVRmVmFjYlljM2VCZ0hkSGJSZDFmVmhVaG5jUmFyYWVmbWFOZk5mYWZrZnNkSGhCY2xiZ2F0Z0hjM2JnZkpmR2RnZXRoU2FNZ0hnWWdQZlNjd2E1Z1dlVGdIY0ZhbmRjZkhlWmVJY0Nka2hCYkJmWGQzZ2hmTGhkZTNlcGVwYlZjMWJrYlFjUmhIZ01jaGJSaFdmOGFSZEVlMmg5YkhiY2J4Z01kUmdLZlVmZGFJaEFlMGVjY05oWmZqZXhoZWZGYzNjaGRrZVJlR2NOaERhV2NRZk5mK2JkZXdhY2NhYmJjeGVoYU1oWmRtYkZod2dWZVdmOWJhY1JjeGYwYmRmVmRSaE5oMGVkYW5kb2h0YlJoV2JoYVphSGRVYVllR2JmZ0ZoNWRrZFlmMGNOZWJiRmIzZkZmNmVPZkVoc2RZZVFkMWdsY2lkY2JuYUJld2hTZkViTWNjYldmbWVoZjRoQmNYaDlkNGhlY2tiVmJQY0JiZ2cxaHdkRWhsZXhmK2JCZ2hnRmhtZlNmMWVraFRoUmcyY2dkVmRTZEZnQmdIZEVmR2RaYXlnRWVCYVZkM2djZmhmOWUvaFZkVmN3YkFoY2VYZE1hQWREY1hjUWVDZ2RhV2hSYW9iZmJIZTlodmVXZ2tmY2JkZ0hhVmhWaFNjZGNHaHRkNmdMYzBlMWczYlNnMGdGZGFhRWhuaGRnYmNZZG1lRmhFaFVhd2VaZmhiWmhSY0JmQ2RBZTJmbGZaZllibmFKYXdkY2JFZmhoRGhTaFZiSWc2YWRhaGFzY2xkTmdUYzBoWWFEZFVobGZKZExnUWNVZE1jSWRWY2hjSGNiZDFmcGd6YVdlMGI1YmtoUGIwZ2hhUWVSY3hmQmdtZGNnbGRZZFZjYWhuYUpnWmRPY0Zoa2NhZVJhQ2dZZTFjV2hVZHdiL2FSZ0NlTmNvZk5lQ2JBZFJnTGZnYTRlQ2NIZlFjQmZWZUZiQ2RFZWxiT2FUaGNmRWdKZFFnVWFQYVdha2FSaHRjVGNDYjFkY2dVZ2tjSWdWYmVoSGNZZVNiU2J4YWhnRGVXYVdkSmV5ZUpiamJFYWFmUWV3ZkJiV2ZYYjNhaGZMaGRmM2VwZnBoVmIxY2tiUWZHYldhZ2FMZVJkV2I4aFJiWGNHZTljYWRjYXhjRWZVZlBjRWFjZkJiSGFnYkFjU2VaYW1oOWRMaEZkVGM0Z3JhQWRUZElnWWhEYkJiWWE5YWViamh3YlloWmFoY1JmbWdaY21mRmZ3ZlZnV2Q5ZmFnUmZ4ZjFkU2FWYlZnUmZ5ZWFjM2VKZXJhR2JXYnBlV2JEYXhlY2dZYU1kRWRWZy9mZWRsZ0pnS2hXYW5kaGFyZUVia2FvZEpoU2NsaFZoaWdlZWpobGd3ZVZkVWhOYkloU2NuYnhmeGFSYzFhMWI2aGFkVmdkYVpkRWRCYmxib2dDZjBlVmV2ZEVkUmZOZnZnUmczZEZkR2dDYVNheGJRaERjaGZrY0phVmdTYkpnd2VWaGhlUmczZGNhZ2VVYnVnQmZ3aDlkWmdMZDJnRmEzZlNiamZSY1ZoUGh3ZFFnMGJOY2hlTWNxZkNkRWdjZmJlR2QzZjllU2hkYkdmdGI2ZFloMGMxY3FnU2F3ZTlnU2VFY0dmUmJNYWRmbmdaaFNhRmdoZlVleGJPZUVlRWJmZFdjUWUwZGFlSmd6aDBiMmhjYUNla2NSY0dheGhzYXNkR2VoZDRleGFQaENhd2FGaFdhUmZZZGZnUWNnY3RnRmViZ3hoRWdUZWJjMGZkZHpoRWEwZmRmb2NGY1VmaGFRY1JheGNCZHVlZWdoZzhhVmdkZDNnSmdRYVpoMWU1aEdkRmhtZkVhMWdGYWdjVmZtZVdiaWZNaHhjWWRRYlVhY2RJZ1FoNWNmYWZjRWE4Y0hlRWR5aDFhamJMY21hcGNFaFllMWRBZWxiVWJoYkJla2hUZkhkWmEyY1Vla2RJZlZnZWJIaFlhU2dIZFZma2dSZ1dmU2FwZnlnYmJYaEJnWWNUYzJiTmJhaGRlWGVoYkxiZGYzYXBmcGZWYTFha2dRZkdjV2ZnZ0xlUmNTZkVhUmdEZm1lOGJUaGZlVmI4aENmSmJsY0lhY2ZHZkVic2Y2ZlpobmhKZFdoRmJXaHBieWZVYlhnZGFYZ1NnaGFaZXBlWWhSZFpjTGVaZ2dlbGFtZExibWJGZTdkVmZTYUZmQmdiZlJkMGRkZlZoVmFKZTBnYWYzZHBlamFUZVdmcGRMYkRkeGJ0YldoWmdFY1JnbWFkaGtnOWNmZEZlVGZaZS9iRWhoZWxkZGRGZHdnd2V3aFBoSGZBZGtjQWhBaG9jYWJRaFZiOWM0ZFNlM2dkZDZmYWVWZ2RoWmFFaEJmbGRvYUNjMGNVaG1hVmV4aE5hbmJiYlhmTWJUZVJhMmZnYVZnU2NGaEJlSGJFY0doWmR5ZFZlaGFWZ3FkZWNsaGthamVIZ3diTmNGZ1pjemhWaFpjVGhDYmRlWWFHYVNlb2ZrZ1BmbGJWZWtjUmUwYWRoVGFGZUZlbGE0YWRiR2F0aDZoWWMwZTFhcWNTY3dkOWJTYUVmR2VSZ01iZGNuZFplQ2RRYmdnaGhsZmRma2dZYkRoVWFSY0JlWGFMYnpnY2M5ZUlid2JFY1pmRGVGaHBkemVmZG1hRmQzaGVmbWFsYVhoV2VSZ0FoWmRhYUFjdGVGaGJjeGhFY1RiYmQwZWRhemZHZnhlTWFnZ1hjQmR0ZGVjQ2JsZlVjcmFQZFFkUmhNZGFmbWQ5ZlJnT2RGZGRhVmNGY21mdGFqY0ZoZ2FKaG1nWGhXaFpnNWVZaFRmNGRRZk9lRmJvYXlnVmVGZE1mQmRTaGhoVWE1ZktoQ2dJYVVkWWJsY29jWmNXZXhiQmcraFRiRGZnYnpmQmhVZ0phSGVjYUdhY2dFZFFjaGNGZFBhY2gyaEpieWFjZ0hnQmRJYVFiMGRsZ2FnZGVYY2hnTGRkaDNicGJwZkFoeGFGYVpoU2FtaFpjR2hBZkNmSmNDZVdnamVVaENiY2Z4Y2hiSGJKaGhiVmJVZVVoRmJZZ0doYmgxYWhmV2RGaFdkcGN5Y1VjWGhkZVhmU2doZlpocGRZZlJkWWZSZ1RoQmNSYW1kWmhtZ0Zid2FWZ1djOWZhZ1JneGIwZGRhVmhWY0pjMGZPZFRkOGEzaEdmRGNnZ0ZjRGQxZ29mNmZaZEVoeGgyYmRmbGNKZ0NlRmdYY2hnMmVFY2tlc2NZaFFhMWVsZWlhY2ZqZDllYWJTYUVjTmZKYldmbmVWYzRnU2UzaGRmNmdhZ1ZhZGRaY0ViQmZsYW9oQ2UwYVZidmREZWhhTmduZUVnemF0aGFhRmVHZ1poWWREY1JiMGJJaFFmamc5aHloWGhRY2hncWJKYmxiaGVkYlZhMGZvZ1dmYWFXYUVkV2RHY0dnWWhVaFpkbWRaY2hiY2hGZFZldmFXZWtoY2FkZUJiMWdVYWJnWGJtZHRnNmJZZTBiMWZxaFNnd2c5ZFNiRWFHZVJiTWhkYW5iWmdTYVFkaGhWYjRoZGZnZDFkTGFUYkFnc2VRZ01nWGZ3YzljTmFRZ1VkTWFHYXdhTmc3Z0tid2E0ZWpoY2dqYTFiWmdDYWtmVmViY0tiVmJraFhlTGNrZWdmYmJmZDBmdGZ6Z1hlVWE1YmtmRmFSaHdnWWhEZWtoTmNvY1BleGROZVljT2ZUYXNmTGhNYWxlNWZnY0ZibWNsY2hmRmNoZGhjbWRGZkdmWmJtZ1liWGhCZVZiYmMxaHBoSGVIZ1JiMWNWZVNkSGFRZC9nZGJDY0FoQ2NPYWhjSWZIZUJlbGJnZHRhSGUzY2dmN2dGYndlOWZhZEtkaWM4ZmVkU2QwaHdhTGZFY0RlRmM4YlBiVGRVY0ZmRWJBYUFkQWVNZ0hnUmFMZlplM2VaaHBiR2ZWZ0FhY2JNZjJnZ2ZMYVJjV2M4aFJkRWQyZzljSGZjYnhlTmdIZmFhQmVWZEljVWZFYWNmWWhNZGpib2RmYlJibWJRYi9nRmJEZW9mRWZBaDBnd2ZzY1lhUmUwYkZhWmFsYnBldmZhZmthdGV3Y1ZjV2E5Z2FhUmh4ZTBiZGVWZlZnSmgwZWFlM2FwZmphVGVXaHBhTGFXYXhncGJaZk5oMmZaYzJmZGVsY0pmQ2hGaFhoaGYyZEVka2hzZ1lkUWYxYmxjaWZjYm5hbGNyYllna2ROYUpkV2NuZVZiNGhTYjNoZGg2ZmFmVmZkYlplRWNGZUFhdWhDZzBiMGU3aFdoVmFvZjhkU2hUZDVkV2RDZmpndGdjYkVjaGNWZEhhRGRtY1phaWFYYnhlVWZ4YldoRmVGYTNiVmUwY29lV2NhYldlRWRXZUdhR2ZZZVViWmRtZlpnaGVQZzNnOWN2aFdla2RjY2RnSGZWZFZlU2FkYkdndGQ2Y1llMGgxZXFlU2h3YzljU2JEZzJlUmhFaElhamc0ZWJlRWdSZXNiMWNNYTFjOGVFZVNjaGVwZVpjYWZXZTlld2RKZEVkWWhRYUJoUmNNYTJjUGJVYk5kbmZkZm1hbGNHZFRmeGJBZ1ViYWRGZjhjTmZKZGthSWhkaElkZ2RJYitnUWNBYzRjeWRVY0ViRmFaZGJlUmZCZW1jY2RsYllnVmNhaG5nSmFSYWRmMWdkYUtmRmVtZGxnaGVGZWhjaGg4aEZjQ2I5Yk1jWWNYZkJoVmdiZDFhcGNIZUhlUmUxZ1ZhVWRuY1JncmVlZm1lTmZOZmFobGdRZVBnQmJsYmdmdGRIYzNkZ2I3ZkZkd2Q5Z2FiS2NpZjhjY2dHaEZlMGhYZFVhVWhoZXlhY2dIZEJmSWdRZzBlbGFhY2RlWGVoZ0xhZGMzYXBocGRWZTFja2dRYUdjV2JnYUxkUmdUYXNlZmZRZERmb2ZGZU1ka2ZFaFZmS2FVZ3hnQWNRYkVjc2JRYmRmMmhSZldoR2ZHYW9nbWdHYVRkNGVFZlJlRmRzaHNiTGhFZlZnUmVQY0ZlRmN2ZmFoa2h0ZXdhVmhXYzllYWFSYXhoMGZkYVZjVmRKZjBlYWUzaHBhamNUY1dncGZMZURiMWZJZFFhWmRCZGdhK2ZQaHdmRmFNZVdjRGcwYTdkUWRRYkpoQ2NCZW5mTmJpZ2NibmJCZXdoU2ZFaE5nSmVXZ25lVmE0ZlNiM2NkYjZnYWRWYWRlWmhFYUJibGRoaEloVWZWYXZjRWdSYk5ndmNSZzNlTWFUY1JiMmRnaFZmU2hGZkJiSGVFYUdlWmhvZVZma2FGYmtmTWdSYTRkbmNEZ2tiSmRDaElhU2VoaEZoRmdpaHRhUmhLY3lna2J6YUtoVmZsY3ZhRGFnYzlnVWdUY2xic2JmaE1lU2NZZ3BkS2VoZmNkdmRSZndhOWJDY0hjR2FSYmRmWWFIZlpkZmJRaGtiRWR3Z1BoMGJGYkZkVmVRY1lnVWRNZlRnc2FxY05oVWdGZllmWWExZnBlMWdlaEVndGIzY2VobWdsY1hmV2dSY0FiWmFhY0FidGdGZE9kVmdCY0JmYmJ3YlplemREZ2toZGQ0ZURnbWVKaFFnUmZ4ZEJnbWVjYWxkWWVWYWFmbmhKZVJjZGIxZmRlS2VGZGlmWmdMYkZmaGRoYm1kRmVHZ1phbWFZZFhoQmNWYWJhMWZwYUhkSGdSZjFhVmdVYm1hdGVyaGNhamhjZEZiSWV4ZmdhQmhCYUFmRmVxYkZiQ2E0YSthTGJSaGRkRmVQYURoZGhHZURoaGJCZ3BhV2hXYkpkeWhjYkhnQmZJZlFiMGFsZGFnZGRYZWhoTGVkZjNlcGNwZlZlMWRrZ1FhR2JXYmdnRGZFY1NhZGJZY1FkR2dFZ0tkTmNsZTRkSWNPYmtieGZHY0Vmd2Q5YVJnTmFCY0ViWmVVZFNlOGJUYkJhWGg4ZldkU2hoZzFncGVjZkJiOGZZZmVnZ2hoZ21nZmhtZWhjd2dDYVViVmRhYlJjeGEwZmRiVmNWYUpiMGVhZDNocGRqZlRoV2RwaExkRGIxZ0loUWhaZEVoeGUyZWRmbGVKYkNkUWNUZkFmL2FRY1VlVmNWaEJnaGhRZ3RnSWNDYWxhK2dDZ3djc2RJY0NlQmhZZzNhRGR6YUlnYmJQZFZkOGJZaEdoUmFWaENoQ2UwYlZndmhFY1JnTmJ2ZVJhM2FNaFRnUmMyYWdiVmZTYUZjQmJIZEVnR2haY3liVmRoZVZlaWNKZWhia2grZkJhRWFSZGJnTGZDZXhlWmFTY2pnOGhhaEphU2c0YmdoSWhqZVlhZ2JIY2dkSmQ4ZlNnVmYwZ1RhZGVHZUJiNmNjZEVoUmFxYVZheGFOZFNmQ2JHZTFiTWJLZWxleGdTaFFnaGVWaDRoZGVoZkpiTGRHZ0VjTmNaZllnbmdKZXdiY2hFZmhiRGZTYVZicGQxZmVoRWR0YjNjTGhpaEVoZWJDY2hkNWNVYkxkVWRZY0tjUGdVY2dhZGFMZkFoOGF5YlFjU2ZRY25iVWJRZjBmeGdFZHhlZ2ZuYmNmbGcwZlZhZWhIYXRjN2JkYjFlZGhLYkZlbWhsZGhoRmNoZ2hhbWhGZUdmWmFtY1loWGFCaFZlYmUxaHBmSGJGZ0JkRmcvYlVmbmJSZHJkZWNtaE5hTmhhZ2tkc2VQYlVmaGVCZGtiVGNIZVpnMmdVZ2thSWJWaGNnRGdjZlNlUWdBaFZhRGJUY1didGQrYldjbmVCZklhUWEwZWxnYWhkY1hnaGZMZmRoM2dwZnBmVmYxaGtnUWdHaFdlZ2ZMYVJoVGF0ZVpiV2RqZnhhSmhKZ1FmRmJKY01iRWQwZ0FiTGZ4aEplQWFJZ2phTWFDY1VnR2FKYVlnVWZYYWRlWGRTYWhhWmNwYVlmUmNZY1liWmRoY1JkbWFaZ21nRmd3aFZmV2g5YWFnUmZ4ZTBmVmNBY1Jhb2g5ZE9oSGRRYnVoQ2ZDZ2NhRWVYaFFhc2RlY0pmd2VRZTNjSmREaEVlTmZVZ1RlMGNYZ1Jma2FOZFpjUWgxaEpjaWZZZDNlbGR3Z1ZlRmE5aEphUWRuYXhkNGRGYjFoMWI2ZWFhVmVkZ1phRWFCY2xlb2VDZjBmVmJ2YkViUmNOZXZlUmMzZk1kVGFSZDJhZ2hWY1NkRmdCYkhkUmZDYjRkN2NCYlJic2FuaE5meGV3YzRkQmRSYU1iWWhLYWlhbGdYZVNnZ2VWZWJoSWJpZU1hQWNKY0ZnMGN1ZlVkMGFzYzNjSGVWaFZnU2dkY0dkdGU2ZVllMGMxZnFoU2d3ZzlnU2hFaEdhUmhNZGRobmJaYVNlUWVoYVZod2dJZmxmb2FDZFNjMGcwZVVlSmN6YThkL2VJY2hhRmJOYkNmaGNJYjBkS2ZpaGdlNGhQY2lkd2EyY0RmUmhoYllnYWJBZUJiRmJmZEJmZ2FUYWNmMWR0ZHpkQ2UwaDVhb2RTZ1doSmdRaFJjeGJCYW1hY2RsaFllVmFhYm5hSmNSYWRoMWRkYUtlRmNtaGxmaGhGaGhnaGdtYkZiR2FaZm1oTmNUZmdkY2NQZkZnUWNLYVdlRmFBaGFkQWFDaDFlbGNPZ1Nhc2dNaE9jQ2hoYUFkRmFsZlVnRmZHZ0hoNGUzaFVna2VrZVZkYWJuYThnNGNTY3hmaGdEZ1djV2ZKYXljY2VIYkJnSWNRaDBhbGRhYWRmWGJoY0xkZGEzYXBocGVYZmxkVWc2ZkdiV2NnZUxnUmRXZjhlUmRFaDJmOWFIYmNheGVOZkhoYWFCZVZnSWZVZUVhY2FRYmJjamZOZldmSGduZmRkeWVSZ1hjNWdiZllhQmVaZ3BhWWNSZFlnWWdaYmhkUmVtYVpibWNGY3dhVmFXZDlhYWNSY3hmMGdkZVZlUWRZYjhkSWVpZGxodGJHZjNmbGhGZlZkd2ZwZFloR2Z4ZWtmbWRNYmhlTWRXaFVlSGFCY2NjRWVrZHNkWWZRZjFlbGFpYmNkbmRCYndoU2RFYU5kSmdXZm5mVmg0Y1NkM2hkZjZiYWJWZWRmUmFSYUZjRWdoZVdnRWFzZWloVmhGYjRlZ2RGYlNkb2ZkZEJjQ2RCY1VnR2JqZk1nSWdWZ0NoTWVUYkFnaGcwZXJoY2hsaHBlM2dSY2tnTWJXaGRhWGUwY1djQWJHZDhjVWhPY2toeGdoZ2NiRmdWZXZkV2FrY2NiZGRIZVZhVmVTZmRnR2J0YjZjWWIwZzFicWZTZ3doOWJTZEVmR2FSZU1lSWFqYTRiYmRFZFJic2gxZE1jMWM4ZUVjU2JoZnBnWGRJZFRnb2Z4YUlkaWRzY01iRGNSZjhoVWZMZkVhTWIyaGNmMmdWYzllV2NSYUFiWmJhYkFndGhGYWJneGJFYlRhYmcwYmRnemFFYzBhZGdvYkZlVWZoYVFjUmN4YkJodWNKZmhjNWFjZk9mWGN3Y2NoTWRoZm9mRmNSZkRnQmF2YlZnVmZBaG5lUmhnZFVlcGhKZVRlVWUwYU9lMWZJY0dhSGZSZVpkVmFRYVhkMWZyaFpobmc5ZU5lY2JrZ0llUGNEYWpjcGJrYVRoSGVaYTJhVWdrYklmVmJlaEhnWWdTYlNoeGNoYkRiV2JXYUpieWZjZ0hnQmhJYVFjMGZsZGFmSWVUZEFhQ2FKYkhmUWFrYkVnaGRSZmZmU2h6Z0VkRmNCYmlkZGVRaFFlUWh3aElmTmgxZVlmbWJQY0JjMGJKZFVhRWF3YlFoZGdIYnRmOGZGYldjcGR5ZVVnWGhkYVhmU2hoY1pncGZZYlJnWWVZZlpjaGVSZW1jWmNtYUZod2FYYUdmTmJ3YVJjeGYwaGRiVmhWZ0phMGNhZzNmcGhqZVRnV2hwZExiRGExaElnUWhaZUVheGgyZ2ZhaGFOZUNjSGRtZlZmMmNCaGtlSWRVZGFjVmJsZ2liY2FuY0Jmd2FTaEViTmdKaFdmbmdWYTRoU2gzYmRmNmdhY1ZkZGNaYkVmRWEwZWdjUWdoZFpmaGJSYndkZGhoY0hoeWh0aGJiT2ZEYzFmRmdEYkJlRWJUZ1ZnV2c1ZlllVmZoYlZocWZjaGxiRmEzZlZmMGNvZldoYWVXYkVoV2dHaEdmWWhVaFpibWhaYWhlY2VGZFZhbmhEYmdlOWdVYlRnbGhzaGZnTWNTZFloMWJNZVJhUmhrZENkRWNjYlRjUWZnZGNkRGVNY2phTWh6YUZmaGQwaDVkZGhoZWxlTGRDYlVjcGRaZWZmbWY1YndmYWRFZ0ZlRGNGaFhiQmcxZmVkRWN0ZzNlZWdtYmxkWGVXYlJmQWVaZ2FnQWF0Y0ZnYmd4ZkViVGZiaDBmZGN6YUVnMGJkZG9jUWJRYkFlWmRGYUJhNGhyaE5heGJ0YWFoT2VDZHRkZmhOZ0JjOGdMZlJnQWdvYnVlVWhsYjBoSGZRYUdhNGZuYmFhSGZ4Yi9nYmUxZHBnSGRIYVJnMWJWZFVlbmhSZnJnZWdtZU5kTmhhZGtoc2VQZ1VkaGdCY2tkVGdIYVpjK2FCZWdocGFjZUtoM2JoZGZiRGFsZVVnTWhDaHpidGc4ZE1memhnaEplRWVTYW9jVmNNYlRoMGZxYkljM2hJY29kVmcxZElnUWhDZ21hRWJMaFdjWGFNZVJhQ2UyZ1poSGRMaHpnbGJIZWFnQmZWYUliVWhFZ2NjUWdaZG5nSmRXZEZhV2dwYXloVWZYaGRhWGRTZmhoWmZwZFlnUmZZYllhTWFsYndodmdOYldhOGg5YkVlQ2ZJZ1ZmRmJVZFFoVGFGZWhkb2UxYU9lUmZrZ3NmQ2ZTYThkcWdXYjFmcGJSZlpkRWVkYjJmWmNGaHRob2VGaFhoaGgyaEVha2VzaFliUWExZ2xnaWdjZm5oQmV3aFNhRWdOZkpjV2JuZFZmNGZRZm5iNWdRYmFiVmhkYlpkRWJCYmxkb2hDZjBkVmF2ZUVlUmNOYXZmUmQzYk1jVGhSYzNmSWVWZVFnQWVRYVBkV2dUZ1ZlOGZBYkFhUmdrYUtlZ2FrZC9mS2JCZzlnR2FMZVNhQmNDYVhkV2Q0YitnWmFtYVpnaGdjY0ZoVmh2aFdha2JjYmRlSGFWaFZjU2NkZEdldGc2Y1loMGQxZXFnU2h3ZzlnYWNSYkNod2RGZEplWGJnYWZhQmMxZ2doM2VKZkVlc2N3ZldkVWJOYVNiWWdtZU1lTmZjZEZnUmdmZFNhVWZKYzhhZWVCZmRiM2ZMZWlmRWJlZENoaGE1YlVmTGdVaFllS2ZQZ1VnaGdvZExiamJwYy9lT2hVZWRib2ZGYlVjaGJRYlJjeGFCZ21mY2NsYVlnVmNhYW5lSmNSZmRmMWVkY0thRmFtYWxoaGdIZGtmd2F1aFhnVGZWYW9iTGFEZVVlWWZJZUFoZ2hlYVpmbGd4aFZmV2dYaFJjNGRCZTJhTmNSZWRka2VzZlhiV2d4ZkFmNGFUYkNkSWQrY0dheGdFaGJlTmVUZE5iZmZCYkVmb2FhZ0lmaWhOYnllZWIzZ0JmYWhQY21jTmZhZGRmWGNoZ0xiZGQzYnBicGhWZjFoa2RRZEdlV2dnY0xjUmJXYjhnUmRFaDJhOWhPY2ZmemZsYkhjYWJCZVZoSWNVaEVnY2FRZVpkbmJKYVdiRmNXZXBieWRVYlhkZGRYaFNiaGFaYWhlSWZCZllhVGJlYnhjUmV5Y2JjMmcxZGFnVmZXYzllYWZSaHhnMGNkZ1ZnVmRKaDBhYWYzZXBhamVUZ1dncGNMaERkMWhJY1FoTWNBYVFhL2JKYVZld2VVaEJjM2hZYnVkU2ZnZU5mbmhGYWdia2NtY01keWhRYzFlUWdHZmxnSmVXYW5lVmU0Z1NhM2VkYTZmYWVWZGRlWmNFYkJnbGNvZUNoMGFWY3ZoRWFSYU5ldmRSZTNidGhIZURjeWZGYkdhUmJoZzBiQ2dYZVNoa2ZnZ0RhMmM0aHJjY2dsY3BnM2JSYWpnY2VXZ2RkWGMwYVdjQWRHZjhnVWZPZW1oWWcxYk9lQmJ3ZDhmVmhBaHBjWWZVYUJkb2RBYkxmUmVBYTdlSGFrZkZkQWJTZHdkOWVTZUVjR2NSaE1nZGhuZ1piU2VRYWhnVmU0Z2RiaGVKaExlR2FFZE5mWmdZaG5lSmU0ZEpiQWRBY0tiR2NsZlFiNGRQYVFhWWI0Y0tjRGZBaHNkR2VCZ0FlU2RhZUJkZ2E0Z2Jnd2EwZFBlYmgxYjlkNmNFYnhkdGVvZlFlUWRBZ1piRmJCZjRkcmJOY3hjdGVhZE9hQ2dzZnFoTmNsZmRmQmNGZG5mc2ZjZlBnQmVoYm1kRmJHYVpibWZZYlhhQmNWaGJnMWJwZUhkSGRSZzFoVmJVZ25oUmVyYmVibWNwYUJiUWFFYnNoUGRVYmhoQmFrZFRhSGNaZjJiVWNraEllVmJlZUhnWWFTaFNjeGZoY0RoV2VXY29hemVjYUhhdGZWYVFhMWgxaFRmZWNWZkpjTGJkZTNjcGVwYlZjMWRrZ1FlR2dXYWdhTGZSYVdiOGFSYUVjMmY5YUhmY2V4YU1lVGVJZkZld2NiZ1hiaGJFZERjYWFDYm9hT2ZYaFJmVWduYkFkVGdNaFdhSGhsYU5oaGNTZnhmWWJZY1piaGZSYW1mWmhtZEZhd2RWZldoOWdhYlJjeGUwYmRnVmFWZkplMGJhZDNocGJqZlJlVGE0ZERnUmRnYUVjZWdLYlFha2U3aE9lUWZBYWJoYmhqY2xjMmJHaFVoc2hKZFBibGhsYStiYmRuZkJmb2RRY1ViTWFWZFdnaWRFZndhQWRpZFJlMGJKZ0JkSWdVYlhhMGRzY3hnY2FBZlFhU2hIYVRobGZ2Y1JlM2RNZlRhUmEyZmdlVmVTZ0ZkQmZIZEViR2VaZ3ljVmZoZVZjcWJjZGxnRmgzZlZiMGFKZ0NjSWhTZmhmRmVGZWlidGhSZUtkeWRrYnpoS2FTYTRodWJXZWtld2hkY0RjaWNoaFNoYWZIYWRhNmFlYzBmUmFxaEZkd2U4YUdkV2ZDZjBhZmNlaERnc2RYZERmMWRvZHFoTGcyaGtjS2hHY0VlaGFaZ2NmQWQ5Z2FlY2VFZmhiRGNTZlZhcGgxZWViRWR0ZTNnZWJtZmxiWGhXYlJjQWhaaGFlQWZ0YUZhWmhoZTBkNWRiYzBiZGZ6ZUVkMGZkYm9mRmVVZGhoUWhSZnhiQmdtZ2NibGhZZFZjYWNuY0poUmVmY3hhWmhLYUhjWGNSaGhiQWJoY0ZocWRQYm1hWmhtaFllWGNCZVZlYmMxZnBkSGFIZ1JoMWZWaFVobmFSYnJmZWVtY05hTmdhY2hiOWZIZkdnMGVOaHFhR2ZtZ0plNGNDZWhmcGNkaEJjeWZOaENjRGcxZ2toWGFIaEdhcGFZZWNiSGNCaElnUWIwaGxhYWJkYVhoaGRMY2RlM2hwZXBhVmQxYWtlUWNHZ1dkZ2dMZFJiV2c4Y1pnUmN5ZGNkT2dJZEJmMGhLY0xhVmZnaEhkQWRoYTVlcmNKZTNiSmVkZUZoWGhzZlBiVWhXaHRiTGVTY2dnNWVnYVlmVWRvZFloTWhsZ3dkdmROZ1diOGg5aEVlQ2FJaFZjRmhVYlJjbWJGZkNhOWM0aFFkWGFwZmplVGhXaHBmTGNEZTFlSWFRZVpjRWh4YTJhZGFsZEpmQ2hGaFhhaGEyZEVha2FzZ1lnU2R3ZjBncWdPZ3lhTmcrYkJlUWdZYUVnRmRTYWNoaGNNYkRiWmU2YllkbGJkYUtiYmJSYWxkMGZGaDBoVmUzZkdlQmZNZ3pnUmV5YmRoYmFEZGplc2JiYUJnUmZVZUthWGN6Z1FkcmdMaFZoUmhxYmVoVmZGaGxkS2RtZ0FmV2VhYldjRWJXZEdhR2hZaFVoWmhtYlphaGhjZEZkVmh2Yldja2JjaGRoSGRWZFZlYmJmZldmZGRRZllnMGgxY3FmU2N3ZTllU2dFYUdhUmJNZWRjbmFaYlNjUWZoZVZoNGVkYWhkb2REYUdoRWRoZUViWWFtZE5lbWJjZ0VjVmhEZ0hnUmNJZThkS2UwY1VlNmNQZHlhUWhFZEVoRWdwZGNiWWFRZ2RkdmNiZXhlRWVUYWJjMGJkaHpkRWUwZ2Rjb2hGZlVoaGJRYVJkeGZCZm1jY2RsYjViQmJJZmpic2JDZWVnUmVvaFBmV2J6aG9kb2hUYkZjMWJtYUNoV2VaYTJnYWVIZnhlL2ZiZDFicGNIZUhlUmQxZlZhVWJuZlJmcmJlZ21nTmZOZGFka2dzZFBnVWhsZzlla2JTYW5mQmYyZFdkaGZaZWRmTWRTaFVlY2NCZWxlMGVPYkZhamJBYXJoY2FHZjFiSWZRaFVodGNUYWJobGVKYkxjZGMzaHBmcGhWZjFna2RRZEdmV2RnZExlUmRXYjliTWRPZ1dmOWNIZmNheGNOYUhkYWJCY1ZkSWJVY0VoY2NRZlpkamJzZlFiRmVXZElmaGFVaFhmcGFYaFdmd2FCZHBiZmd3ZHNlWWhMZGhoMWVtYVBkVWV0Y3doVmJXZDljYWFSZ3hmMGdkZlZoVmdKYjBjYWYzZHBnamVUZFRid2FLZVhiVmJKaEZoWmNGZ0ZnMmRKZVZnSmFQYkZiV2RsZmdlQ2RXZUViWWZRZTFhbGhpaGNobmFCZHdoU2FFZk5jSmRXZm5iVmU0YlNiemFNYTFoUWIxYmRhWmFFYUJkbGdvZkNoMGhWYnZlRWdSZ05odmJSYzNoTWhUYVJmMmRoYWFkWWNsaEJkSGNFZEdlWmd5aFZnaGFWZHFmY2ZsaEZhM2ZWZjBjb2VXYmFmV2JFZFdnR2VIZGtmVWRiY2pkSWNwY09jUWhaZ2hhRGFGZVlmVGNSYVFnMGdhYUNoemI0YnFoSmR3YndhK2REZWdnZGU0aEVkR2VSZU1oZGRuZFplU2dRZ2hiVmU0YWRoaGNKYUxlR2VFZ05iWmdZZW5hSmh3ZGNoRWhoZURmU2NWaEljaGNkZGdkZ2IvZ09iemFzZjBlRmNsZlJlY2dDaFZnOWVOZEpmeGJFZ1lnYmYxZVpkNmdFYjFodGgwYkZnVmVCZVphUmEwY3hnbWRKZ2xkaGJXZ0lmamNNaERmRmFCaGdlT2VVaHdoZ2ExYUhhbGVCZ3ZjR2JFaHhibWdZZlhlQmFWaGJlMWhwZUhhSGFSZDFkVmNVaG5nUmJyaGVnbWROZU5jYWJraHNmUGNVYWhoQmNrYlJiQ2RKZzRiRWNRYnBnVWdLZ2hmVmNkYURlMWcwYmlnRGRXZm9nNmRjZ0hkdGFJZ1VnRWFCYmFoYWZXZFJiTGhiZjNjTmZwZUNmMWdsaEVlRmR5YnRjRGZCaERhMWV5ZFhnQ2JzYkNmRWVrYmRkUGRJZUJlVmZEYlVkRmNVZFplVGJIY0plV2FGZVdkcGV5Y1VmWGFkZ1hhU2FoY1pocGdZY1JkWWRZY1pmaGdSZG1oWmVtZ0Zmd2RYaEdkTmV3Y1JjeGMwYWRnVmNWZUpnMGNhZTNocGVqZFRoV2JwZkxnRGIxZ0liUWVaYkVjeGUyY2RlbGdKY0thWGNYZ2hkOWNEaDBkc2NNZ1NhbGJWYkliY2VuY0Jkd2hTY0ViTmZKZldjbmFWYjRnU2UzZ2RkNmRhaFZjZGRaZ0ViQmVsZm9kQ2UwaFVlN2ZXZlZnb2c4aFNoU2RVY0JnU2ZUYUJmTmRBYkNiOGdTYlFmQ2NJaHpoQWNsZ0JmaWVXaEZiRmczaFZnMGRvZ1dmYWVXZEVlV2dHYkdjWWJVY1pobWNaZmhhY2VGZFZodmdXZWtlY2JkaEhiVmRWZmFnSWVHY1VoNWhLZHdkd2c0Y0tmRWRBY1dnVmdRZlVkWWJmaGphNWNTZFNhUmVWZXBjZmd4Z0poWGZCZUVoTmdCZWFmM2JJYnNjY2ZCZ3hiTmZDYWhkSWEwY0thaWVnZTRlUGhpYndjMmJEZ1JlaGFSYVlnUWFkaHZhYmJ4YUViVGRiYzBlZGZ6ZUVoMGZkZ29lRmJVZWhjUWJSYXhiQmNtZGNmbGhZZ1ZoYWhuaEphUmVkYTFiOGhlZEdlQ2FvZXBkVmEwaG9oRmJXYnlmSWFqZkFnQ2FSZWRhSmExYXBkTWdIaFFmNWRjZFVhbWhoZjNlZWhuY3RjRWFhZmhnY2ZQZkJiaGg0Ym5mQmNEYWNha2FNZFFhMWNSYVBjUmdkY0dnUWExaEJiRGZVZm1iSmNnZGVnVmJwaElkUWMwaGxoYWRkYlhhaGNMYmRnM2FwY3BkVmcxZGtnUWdHYVdmZ2JMYlJhV2I4Z1JkRWIyZlpkTGdXYVJoTmVIYmFoQmNWYUljVWhFZmNhUWFaaG5jSmNXY0ZnV2dwZXljVWZYYWRnWGdTYWhjWmNwZGFhVmg0ZVlnYmJRZGxjbWFjZG1kaGI4ZGZlMmQ5Y2FnUmh4YTBnZGRWaFZhSmQwZ2FjM2FwaGplVGdXYXBjTGhEZjFoSWJRaFpoRWd4YTJnSWJoY29kTGNSYW5mWWFnaEFkVWNWYkFhR2J4YkVmZGdKaHllQWEwZUNmUmdjaE1oVWdsZjllNGRTYjNiZGY2ZmFlVmRkYVpjRWhCZGxnb2ZDZzBoVmV2Z0VoUmZOY3ZiUmIzZ01lVGVSZjJoZ2JWY1FoQWZSZ0plVWh5ZDRjemZCYkhmWWFsZ05maGJRY1dmQWMwZ0poZWFhZldlb2VXaENjV2M4ZFVhZWZuZXBkaGVhYUZleGJ2ZUJja2dkZ0pkRWh4ZFlmYWhOZlRka2ZaZkxmQWVraHZoS2JsZXRnYWhXZEdkMWNBY1hkSGVaY1NjUWZoYlZnNGJkZGhnSmdMZEdjRWFOY1pmWWduYUpid2NjYUVlaGFEZ1NhVmZwaDFoZWdFZnRiL2VMZG1nY2VVZUVnVmRGZExkQ2UwZVFmQmdLaG5mQmhIZ1pnd2M5Z3phR2hFYWRmN2NIZUViaGhNZ1djeGZCZStoZWcxYlpkSmRhYmljWmhmZ05lQmU4ZExnUmVBaG9ndWdVaGxoMGFIZVFhR2M0ZXVkWWdYZXRhVmJmZVZnTmJ0YUhlUmQxZVZnVWhuYlJlcmJlZm1hTmdOYWFna2ZzYVBkVWJoaEJja2VUYkhiWmYyYlVja2RJYmNmZGFGZHdoU2RTZnhiaGZEZ1dnV2RKZHlmY2RIYUJmSWNRYTBlbGFhY2RkWGVoZkxnZGczZHBmcGRWZTFjRmFZZ0dkV2NNaFdhUmNYYXNhWWFIZjBiVmdIZ2NneGNOZkhmYWFCZFZlSWdVZkViY2dRZVpnbmZKY1diRmhXZHBmeWVVZlhmZGZYZlNoa2ZJY2hkS2FFZFVmV2hNY0FhQmJvYVBjamRraDRoS2RqaG9hS2VBYzFjeGdKYUVoRmdwYWVoYWMzZnBnamZUZldicGRMZkRoMWNJZVFnWmRFYXhlMmZkaGxkSmNDZ0ZjWGVoaDJiRWZrZ3NmWWdRZzFhRWcyYWZmRGhNYTRkQ2RSZkVmcWdGY1RkRWE5ZkthaWFOYnllSWNWZGRlU2ZFYkFmaGNoZUNjMWhsZHpjRWhRZHRkbWJSZ3liOGNUZkVoMmZaZFdnQWRCZ0VnVmhjZHlma2QyZUViM2NRYStnZWRoZWxjK2hXZTJlQWhXZWFlV2hFYVdjR2RHZllnVWFaY21mWmJoYmNnRmJWZ3ZlV2ZrYWNlZGhIYlZmVmhTY2RmR2V0YjZlYWJ4aGxia2NDZEVhY2NUZVFhZ2djYkRnTWZqaE1memNGZmhnMGR3Z2RjaGdsZ0xnQ2gwYnBmWmVmZW1oNWh3YWFjRWNGYURhRmRWYW9oaGhkZWdhZ2QvYk9jemZzYTBkRmVsZVJmY2hDYlZhOWJOYkpjeGJFY1liYmcxYlZnNmVPZFVjZGRvaEZkVWNoYVFlUmh4ZUJibWFjYmxlWWhWZGFmbmJKZFJiZGIxYWRjS2ZGZG1kbGZoYkhkeGZGZk1nRmRHaFpnbWhZZFhoQmJWZ2JkMWVwZkhnSGJSZTFiVmFVZm5jUmFyY2VjbWJOYU5oY2RFYXNkSGJCY2xmZ2d0ZEhjM2dnZmdjUWEwZXhnTmVJYURhNWJ0Z0hha2dnY0hiR2ZEZVlhM2FlaEZhcGNJZFFiMGdsYWFiZGRYYmhlTGNkYzNocGdwY1ZmMWFrZ1FkR2ZXZWdjTGRSYVdmOGNSYkVjMmU5ZEhjZWgwY2NiOGJJaEJoVmJEYlVnRmRaZ3RmWmJtYjVjS2JGaFhhSmg3YVVmU2h0ZlhkSGhtYzBiaGVIZEJib2h5ZlplaGFSZG1mWmVtY0Zkd2dWaFdhOWNhZFJjeGcwYmRhVmNWZ0pmMGNhZjNmcGhqYVRoV2JwYkxmRGIxZHBoRWdIZXdkUmYyaGZnVmZKYlJnYWVIZmhmcWhEYmtoc2hBYlNhbGRrYytjY2ZpaFFmTGRBY0VlTmVDYldmbWJjYUZhWWdYZGRlNmRhYlZkZGNaZUVnQmVsZm9kQ2EwY1ZodmVFYVJoTmR2YlJjM2FNYlRiUmgyZGdoVmFRZFZjeGd0ZkVhR2NaYnlhVmFoZ1ZmcWhjYWxmRmMzYlZnMGhvZ1dmYWZXaEVmV2hHZ0diWWhVZ1pibWZaYnBlT2ZGY1Zma2FSZTBiY2FKZkZhRmNsYzRnZGZHY3RjNmZZZzBlMWRxYVNid2E5ZFNkRWJHZ1JiTWdkZ25kWmVTZ1FnaGRWYzRkZGhoZElmZmFVZ0Fjb2RLYWJkQ2dSY2lmZmJoY0FnYmRBY1NmVWJnZUtkQWg4ZTJjTGZpY3hhZmJjaHhhQWRaY2FhQWF0YkZmYmZ4YUVjVGhiYTBiZGJ6YkVkMGRkZW9lRmZVZmhkUWVSZXhkQmNtZmNobGZZZWRnUGRnY2tlWmFkZjFieGRLYkJieGNSZWhiQ2NnaFJkbWZEZUdkOWVtZVBjWGZBZ0JnRmZCYklmNmhFYVRmZGJWY1VkbmZSZnJhZWdtaE5lTmZhaGtoc2hQZ1VhaGdCZWtmVGVIZVpjMmhVYWtiSWdWZmVlSGhZZ1NnUWEwZ3dkNGZFZFdjSmU1YmNkR2hNYTFlUWgxaFZjR2RkZ1dnQmNDY2RieWdaY3BjQWN5ZUpoWWZHYldlTWVMZ1ZmeGRJYjdhRWgyZjliSGhjZ3hnTmRIZ2FiQmVWYkljVWJFZmNjUWRaZG5mSmNXZkZhV2FwYnlhVWVYZmRkZWRSYWpoeGJwYVlmUmRZaFljWmRoZFJkbWFaYW1oRmN3Y1ZiV2I5Z2FmUmV4YjBmZGVWYlZnSmcwY2FkM2JJZ3JoVGRXZkZhV2JEYTBkWWdaZGFlR2haYzJlZGJsYkpmQ2JGY1hhaGMyYkVja2FzY1loUWcxZmxhaWdjZm5jQmN3Y1NnRWVOZEpjV2VpZ0Vid2VBZmlkUmcwYVBiMGdSZVhmU2NFZUVjZ2hkYUJjQWUvYlZhVmNJZDdnQWFuZXNnNWdSYjJhZ2hWYlNhRmRCZkhkRWFHY1pjeWdWZ2hoVmRxYmNlbGNGYTNjVmYwY29iV2FhZVdmRWdXaEdhR2I1ZUFjSGFTZzVmaGhlYTFoVmUrZkpoMGdjZkJlQWFWYlZjS2FmZFdic2htZ1lmeGdrZ1JnQWYzaEpoZWdPYm1lUmhNaGRkbmRaYlNjUWdoZFZoNGdkZWhmSmNMYkdjRWdOaFpiWWJuYkphd2FjZkVnaGJEaFNnVmFwZTlmTGFEZEFmL2RlYm1hSmJYYVNkbWcwYVpmZGFCZ2RmRmZkYnhkZ2NUZ01mMGhjYm5lYWVBYzlkb2JIYmtlaGhDY09jamRwaG1jY2RsY1lkVmJhaG5hSmFSYmRoMWVkYktoRmNtY2xnaGZGaGhhaGhtZUZhR2daZm1jWWZYaGxhWmRSYVZocGNIYkhjUmgxaFZkVWJuYlJjcmRlZG1iTmROZGFia2dzZlBjVWhoYkJja2hUZkhiWmYyYVdkZ2FvYlZiY2MyaHNlU2RYZXhkRmNQaGNkMmhKYXllY2VIZUJiSWVRZDBkbGFhZ2RlWGRoYkxjZGUzaHBmcGhWYTFia2hRZkdiV2NnZExoRWRTZ2RjWWVRZUdoRWRSZlpneGgwZ2ZlTWdGYTBoM2dCZ1JhZGhVYkpmeWVZYVRkSGNVZUJoeWRVZ1hnZGZYZFNmaGZaY3BhWWFSZ1lhWWVaY2hiUmVtY1phbWhGYndhVmRXYjljYWNSZ3hkMGdkZlhiUWdZZ1BkSWQzZ3Bob2JUZFhhc2cyaERiMGc0Zk1kWmhGYVJhL2hkYmdiNWJDaFFiUWZNYytlYmMwZmNleWRRZzFnbGZpaGNnbmZCZXdnU2hFZU5oSmhXYW5kVmY0ZFNmM2hkaDZjYWVWZWRjWmdFZ0JhbGhvYkNoMGcwYTdoYWJsaHRmdmFUZ0hkTWJBaE9obWhnYkpjVmVGYUJnZmFHZldoWWF1YVZia2FFYlJkT2NsYkZhOGVWZDFjaGFyYlFlMmNFZFdnR2dHY1loVWJaZG1kWmJoZWNlRmVWZXZmV2FrZWNkZGJIYVZiVmhTZWRhR2F0aDZmYWFrYVJlbWNZZVFoOWJTZkVjR2RSZ01hZGFuY1phU2hRZGhlVmg0Z2RnaGhKZkxjR2ZFaE5jWmZZYm5jb2g0Z2NlRWROZGViU2dVZDVmOGJZZTJiRmYzZ2VjbWhsZVhlV2VSYkFiWmhhZ0FkdGdGYmJmeGRFYVRoYmd4Y0FlN2NXYmdlc2F0YkZmVWRBaEZoUmR3ZjVmN2RjYWhmNGdjYWNmVmdoaFJjZGMxY2RmS2FGZm1nbGJoZEZnaGRoYW1iRmdHZVlmN2FTYTNmQmFWZmJnMWZwaEhmSGVSYjFmVmhVZW5kUmVyZGVnamFFZEloUGJoYzVnZGNIZ0JoQmVzZVphbmdaZzJlVWdrZklhVmZlY0hkWWRTZlNieGJoZURkV2RXYUpleWVJYzNoQmdXZlFld2ZGZWFoY2YzZTViaGZkYTNhcGhwZFZmMWhrZFFiR2RXYmdkTGNSY1djOGVSaEVnMmc5ZEhkY2V4Z3NnSWNRY2hnVmVJZlVhRWFjaFFjWmFuZUpmV2JGZVdkcGR5ZlViWGZkYlhjU2JoY1pmcGNZZ1Fja2FZZWJja2FBZnVkTGJ6Z0poK2dHZENkb2hYaENoRWU5ZEVkVmdWaGxlcGRhZXlnNWV0aEhkaWJZZkNkVGNCZ2NhWWNMZkVlVmQvYVhlRmFKYkNlRmFYYWhiMmVFaGtoc2ZZZ1FmMWZsYmljY2RuZkJmd2VTY0VnTmFKY1dkbWU5ZTRiQWJsZDFkNmZhZVZkZGRaZUVhQmRsaG9lQ2EwZlZjdmFFaFJkTmh2ZlJkM2hNYVRhUmEyZ2dnS2hTZkFnUWhQZVdiVGNWaDhnR2gxY0FjbmNQY1FhTWJ1aFdnUmNsZVRkUGhXZmxmQ2ZGY2pnVmJCZUpiQ2FjZXplSWhoY1FlMmZVYWdiOGZSZEhiUWRaZ2JlZWFHZ3NodWNLZndoUWc1ZVJlVWhJZVhnWGNUZ2NiRmhMZURoTmNiYWFnQmNWYzRhZGRoYUpmTGhHZkVjTmdaZFlmbmVKYXdnY2RFY2hkRGNTZ1ZjcGgxZ2VlRmZGYTNjTGNtYmNmVWJGYmtiQmJBYlljRmY4YU5lSmRrZklkZGJJYmdmSWUrYlhlQmNVY3hjR2hVZGdiRWVEZTFla2UxaGZlQmZ0ZVFmSmh5ZUVnWWJMYVJhSmNHYkZnaWNGaHRkRmJrZnRjdmVHYkVleGJtYlloWGdCZFZiYmIxaHBmSGVIZFJkMWRWY1VmbmNSZ3JnZWFtY05nTmZZY2hjOWJIYkdhMGhOZXFoQWhUZE1mN2VBZ1FmdGJQZFBiWGRZYVBjU2UwZ3RoRGhWZUdjSWc2ZmVoWGVsZUVkYWRVaGxjYWRkZ1hjaGZMYWRkM2VwaHBnVmYxaGtmUWVHZFdjZ2ZMYUViU2NkY1liUWhFY1ZjSGFjaHhmTmRIZmFlQmVWZklkVWVFZmNhUWJaZW5nSmZmYURna2dCZXlnVWNYZWRnWGZTaGhlWmJwYVlkUmdZZVloT2N4ZDFkcWJUaEdmRmR3YlZmV2Q5YWFkUmJ4ZTBlZGdWY1ZiSmg4ZkphSGFRZnpoSGN5YVVkZmhRYUFiWmdKZk5iQWFsaDRmTWZoZHNoRmdVYUNkc2JpYUVmbGJZZlllQmNRZ3dmc2NNaFNnUWM1ZUJhd2QxY0poVWJuZ3hiNGRFYUZnMWE2Z2FkVmNkZlpkRWVCaGxmb2FDZDBjVmF2YkVoUmJNZDVkQmhpZkVoVGNFZDJoUWIvZFNjRmJCZ0hiRWJHZFpieWFWZGhjVmdxaGNnbGRGYjNlVmEwYnBkRWNaYlVhc2dXYUdlR2FZaFVlWmhtYVpjaGVjY0ZiVmV2YVdna2RjZGRoSGJSY3hoU2hhZVdnc2Z1ZUtjd2dRZTVjUmNVZklkWGJYaFNkc2NlZ0xiM2JwZTRiUWJoZFZjNGhkY2hnSmNMZEdkRWhOZFpiWWhuZEpjd2NjYkVnZ2VHaFNnVWZkYjFhZWZoZGdhamVLYkNmQWRaZ0hlaGZJYlphZGJSZlpiRmNPZjBhaGZEZEtiZ2VnYTFoRWF3ZDVma2VQZTBoaGNRYVJjeGVCYW1iY2ZsZFlkVmRhZG5oSmRSZGRkMWFkaEtlV2VXYmxkOGZGZ2diaGVxYlBmbWZaZm1lWWdYZUJmVmViYjFjcGFIaEhiUmMxY1ZmVWVuZlJicmNNYm1lTmJRYWFlaGg5ZEhnR2MwY05kcWZBYVRhTWc3ZUFhUWZ0Z1BnUGVYY29oNGJTYXhoaGhEZldjV2NKaHllY2ZIZ0JnSWRRYTBjbGdhZmRlWGRnZUlkZGQyZWRhcGVHaFJoeGJIYUdjU2ZZYURiVGJIZ1FnN2NFYjJkOWhIYmNoeGZOYUhlYWNCZFZhSWRVZUVhY2hRYUlkRGMwZEViRmNXYUphWWVVYlhiZGhYYVNoaGhaZ3BoWWJSZFloWWdaY2hlUmhtZlpmbWhFZmthVmZYY0pid2NSY3hoMGJkaFZjVmVKaDBoYWQzYnBlamNUZldhcGhMZERhMWFJYVFhWmNCY2dkK2dQaHdoRmNNZVFkVGJjYmllVWF3aGRlbmVEYnhnd2RzZGNmbWc1Z3RnU2ZGZ0pnZmVjZEhiVmI0Y1NkM2FkZjZkYWRWYmRlWmdFZEJmbGVvZENiMGVWZXZnRWFSYU5odmRSZDJhd2RUY0VneWFCY2NlR2gxZjRnUmRBZVVjeGR5aFZiaGdWZnFhY2NsY0ZhM2hWaDBlb2VXYWFhV2VFZVdoR2NHZllmVWZaY21nWmFoaGNiRmhWY3ZkVmhCZlZoU2FTaFJhbGFhZVpiV2hKaFFmWWIwYzFncWdTZXdnOWJTaEVnR2dSYU1lZGJuaFpmU2JRYmhlVmM0Z2RlaGhKYUxnR2hFaE5mWmZZY25hd2N4ZU5oQWF4Y0xoWWUxZ3BnMWFlY0VmdGIzYmVibWNsZlhhV2hSZUFjWmNhaEFndGZGYWJneGVFYlRkYmUwZmRjemVFZjBoZGVvZEZjUmR3Y1ljRGdrZU5mb2RKZ0VmUWMvaGFmbmdKY1JiZGExZWRiS2FGZW1jbGFoaEZiaGVoY21nRmVHY1pmbWdZZlhmQmVWZWJlMWhwZUhlSGVSZjFjVmJVaG5jUmNsYktmQ2F3ZlpkSmNrZU1nWWFXZHpjcGRrYlRiSGVaZjJiVWJrZEloVmFlYkhiWWFTYVNleGdoaERiV2NXY0pleWNjZEhlQmJJZVFhMGdsZWFhZGRYZmhoTGZkYTNiUWZvY0VheGYwZFljVGFTaEJmQ2NGaG1nRmdIY0FiR2dFZFZlUGNFZWNoTGZZZEFlUmFhaFdlVWRsYlJlSWdqZVpkZWhRYVNjSWQ3YUFibmhrY0JoWGRoYmdiN2NMZGtjSmhVY2JoZ2ZWZitnYmMyZmhnNWFmZzJnOWJhZVJieGYwYWRmVmVWZUpmMGZhZzNncGdqYVRlV2RwY0xkRGYxaElhUWRaZUVheGYyZGRnbGFKZkxiUGczZ2hoMmhFZ2tkc2VZY1FoMWRsY2lkY2JuYkJhd2NTaEVhTmZKYVdnbmRWZTRlU2EyZTFoNmRQZFJjOGVRYVFleGdjZzdjVGFnY0FicmRIZjFhQWJqY0NlRGUxYVdnVGUyYUViYmJDZFJoUWJEY0dnQ2ZwZDdlV2NqYzlkcWhjZmxnRmczYVZoMGhvZ1dkYWFXZEVhV2FHZUdiWWhVZFpibWdaZWhmSmJGYnNmdWRIZWdkTWhWaFhjbGNzZ1VjSmFpYlFkM2JEY1JlZ2FuZ0NmVWVvZEFkR2REaEFkRWNQZHliVmNjZUZjbGZvaHNiTmExZDRjMGhWYkFoWWhYZmFoM2R0Y3JkV2VrYmhlRGRTaFZjcGQxZGViRWF0ZDNlZWFtYWxjWGhXZ1JkQWZaaEllQWR0ZkloYmJ3Z1VlVGNjZVZocGR6YVhoRmd4ZENhUGUwZ2hnUWFSYnhkQmVtYWNlbGFZZFZkYWJuZUpmUmhkZTFlNWVnaEZhbWFsaGhjRmRoZmhjbWhGYkdhWmZtY1loWGZCYVZoYmYxZm9lQ2FOZHhoMWJWYVVibmZSZ3JoZWNtYk5jTmJhaGtic2NQZ1VlaGVCYWthVGNIaFpmcGVVaGdhRWViaFBhaWVSYWRoQmhuY29kS2dEY1RkRmI2YldobmZCZUlhUWUwZWxjYWJkaFhmaGVMY2RlM2JwZHBnVmcxY2tjUWVHYVdkZ2FMYlJlV2E4Y1JmR2R5YlpiSmRNZEZkc2hHaE9obmFZZkhlRmZBZUpjeGVNY25jb2FaYkZiV2hGZHlkUWdIYTVoWGJWY2dicGVwY2VlUmc4ZVllT2VoZFFkdmZhZUNoSWI0Y0ZiRGMwZjVnQ2hGZ2xkWWJOZkFoWmc4ZkpnSGJOY3ZkWmEyZnBhTGVEaDFoSWdRY1pkRWZ4ZzJmZGVsZUpiQ2NGY1hhaGIyZEVoa2dzYllhUWQxZWxiaWJlZmpjbGIrZUNjd2ZzZUlhQ2hCYllnM2REYnpnSWNiY1BlVmg4aFdhRWVCZEpib2hHZEVleGF2Z0RnUWU5aHZhWGUzYW9lVGRHZzJnaGdjY1JhaGJNZlBkVWJUYVFnUmdHaFZkRWh2Y0Vhd2hWZy9iR2JFZm9iZGFhZFhlTWhmaE1mbWdZYlVkWmVtY1phaGhjYUZoVmN2Z1dia2NjYWRjSGNWYVZkU2JkZUdldGE2ZlllMGRSZ0FiU2N3ZjljU2RFY0djUmNNYWRlbmRaaFNnUWNoZ1ZoNGZkZ2hlSmVMZ0dnRmVsZlpmSWRYZ3doMmZJY2dkY2FPZEtmeGRNYWhkS2YwYk5iZGhlYm1ibGRYYVdnUmJBZVpkYWVBYXRjRmViaHhmRWFUaGJnMGJkYXpmRWcwZmRmb2NGZ1VlaGFZY0RkbWNzZXBlY2RsYzBiVmhlaHdhOWFSY2FnMGZ0ZEtjRGVtZUJoaGNTZmhoZ2J2Y2JmeWZrZmJoYmRWYXBoVmJiZjFicGJIZ0hhUmcxZ1ZjVWJuYlJocmZlZW1hTmJOZWFna2hzaFBjVWhoaEJia2hUZEhmNGcvZUthUWgwZVZmY2YzZllnQmROY2hiaGRmYlJnV2FKZXFkZWhYY0FoVWdRYXdhQWZoZ09hbmNoZEFoZGcyZmdoVWRmZFZka2ZRZkdhV2FnY0xiUmZXaDhlUmNFZDJiOWZIYmNoeGROY0hhYWZCZFZjSWNVZEVmNGRjYlRhSGZKZldiRmhXZHBjeWVVYVhkZGZYYVNiaGNaYXBoWWNSZlljWWRaZWhnUWh5ZWFoQ2RBZTBkRWdXYmNjWmZTZFZhQmNJY0djUWRZZjllT2N6YVlnNmdSY1RjOWFDZUJlbGV4Y0NnS2Z4aGdlNmVmZGtmTmRWaEhkSGRZYTdhUmF3Y2RlTWhDY2dma2d1ZktoM2RnYzJnUWZVZzlhamdXaG5iVmE0ZVNlM2VkZjZhYWJWZGRjWmJFYkJhbGFvYUNhMGNWZXZnRWVSZHNlZ2JSYTNlZ2FPZVJiM2d3ZGNkVWMzYXBnSGVFZkdiWmJ5Y1ZnaGVWZXFhY2RsZUZkM2JWZzBicGJRZUpnamNNZldnRWVIZDBmVWVMaG1jWmMvYWNjQmNwZzBhV2NrYTRjM2VIYlZlVmJTZWRkR2Z0ZTZlWWYwaDFhcWVTZ3dmOWNTYUVkR2RRaFBmZWJEZkFoQWREZVZlZ2JhaFBkMGVZaFloRWRBZlphWmFmYVhhSWI1Y2ZjZ2hzYUxkQ2FBZmdmV2hOaHdmOGN5aEdlemIxY2ZkRmRoZXNmU2FZZFFmdGZmZGJnMWNoZm9hSWRFZnhhNGViZWtldGVvYkJnVWJGYWNjYmRSZEJnbWNjY2xkWWZWY2FibmNKZlJiZGcxYWRmS2FGZm1obGJoZ0ZiaGdnZXlhR2RpZmNlaWNKZVhlZ2hXY1ljUmNjZFNoVWNVZGtoY2JBYmphZ2Z5ZWNhaWE5YUViWWIwY1ZiZGJIaFVmUWZvaFJkR2dkYm5lV2MwaHhlWWFMaFRlcGhHZUFna2hnZVBjQWZHYm9kaGZlZVdkdGNpZ1FmMGJsZWFkZGRYZ2hmTGdkYTNjcGJwaFZlMWJrZVFmU2Z5ZjFlZmVFZkRnMWRmZkVnMmNkYXRnY2F4ZU5oSGZhY0JjVmNJZFVhRWZjZVFlWmJuZUpnV2dGaFdlcGc2Y0FjM2hkaEtmU2ZrY0pjbmdJaGxlcGJYZEtnRmJGZHVlYmEyZzhjamVIZVNjWWZjZEVjMmY5ZlViRWhoZm9lZ2VZaDJmdGUyZVJoR2hOZkhnSmhWY0lnUWNaZkVieGQyZWRmbGVKYkNmRmJYZWhhMmRFYmtlc2RZY0ZjMWdjZDZlUGRTZ0pmNGZHaGtmcGhIZUZkeWNBZjBmSGN6aDRocWhKYlFkNWhSZ1VlUmFCY2tnSWNVZVZndmJFYVJmTmh2Z1JlM2hNYlRhUmcyZWdmVmdTZ0ZiQmZIYUdiRGFSaHlhU2Z4ZFVlK2VmYUJnSWU3ZEdoQWFSZFRkWWRXZGdhWWFTZHliNWVkZ0lkRGVJY1RjT2FSZUllbmVEZmtmOGFNZkRkbGJ4aGJmZWFFaEZjNmFZZDBkMWhxZ1Nmd2Q5YlNjRWhHZFJoTWRkZG5jWmNTZVFna2FGZjJjTGZsZDBkWmZFZEJhRmJRZWJhRGY4ZGxmUGFCZndkS2ZHZFJkWWVzYWNkQmE1ZytoZGhrZ05lWGNXYVJhQWZaZmFkQWN0ZkZlYmd4aEVmVGViYzBjZGR6ZkVhMGY4YTZoRmVWYlZhUWNFZXhoNGFsY1BiaGRsYWJhTGczZXBkWWRlZVFkUWhDZ1hieWY4aDFjWmFGZUVlaGRYaERnSmZ1ZWNoR2VaY2NkWmRsYVpkdGNIZ1JoMWJWY1VlbmhSaHJoZWRtZU5nTmdhZmtkc2dQY1ViaGhBY3doUWFpZDRnNWhBZUVjcGFIaGNhWGVvZTRkU2N4YWhhRGhXZFdmSmJ5YWNhSGVCaEloUWcwZ2xnYWJkY1hhZ2NmZ1BmemhNYzZiV2ZSYkJhZWRVYkRnd2FEYkVhU2NkZFloUWZHZ0VmVWVOZmxjWWVEZFljUmhsYmlhVWdFaGNoUWhaZW5kSmhXaEZnV2ZwZXllVWZYY2RnWGRTZmhkWWU5ZlNneGVZYllhWmhoZFJlbWFaZW1nRmN3aFZhV2c5YWFhUmJ4Y1FiR2ZmZzFkSmUwZGFmM2dwYmplVGRXZnBnTGVEaDFnSmROYWJlVWhCZmNkZGhsaEpmQ2NGaFhnaGcyYUVia2FzaFljUWcxaEViMmZmY0RkVWNvZkdkQWR3Z2JnRGJpZlphNGFWYm5lY2UxaFliRWN4ZnpiRWZCYmxib2NDYzBkVmV2ZlRjQmYwY3NoQmZqZzliZmRUZHpib2JaZ1NnQmFsYlBnQWFHZjlhOGVOZkVhQWNzaE5nQmNRaGxjWGZrY01lTmdRZjJmRWhXZ0doR2RaZkpiYWFrZXhlaGhjYUZlVmZ2ZkhkQmJKZlRlWGVnZkVoYmdPZnllVmY2aGFieGZsZmpkU2UxYlJlNGZFZkdjUmVNZGRhbmJaZlNkRmdGY1FicWJkZ2toQmdRaE1oa2ZOY1piWWVuY0pjd2NjZUJmcGNEZ1ZmRmdwYjlnUGhoZDRlNWRPZlRjMGdlZ0ZkbGQ0ZVpkWWZBYkpiRmNOaERic2RUZ2JnMGNkZXpjRWUwZWRkb2RGY1Jlb2JWYkVhMGdVYjBmUGdGY1plQmNJY2poc2dDZmJmSGgxZUtkRmdtYmxhaGRGZGhlZ2c3Z0hjV2I1ZnZlZWNsY3BlVmRiZzFjcGJIYkhjUmgwYUJiQWdDZjFicmhJZlVhbGhOYmFia2NzYlBmVWVoZUJna2FUZkNjUmMyZlRoMGhKaEhkZWJDaHBhT2NTaDNhNGNXYUZieWFFZW1nT2dUZzhjR2dTZDBmc2ZJZk1kQ2N3Y2VjSmJUZFJicGNBZnhmRmhaZVNibWRvYkNoVGRXZFloUmFUYnpjTmNIZ2Vod2dKY0xnYWFGZkFmZWVFaFFmc2haaGJobmZBZENnWGhTZU1maGJVZjNoNWJNY1ljQmRaY3BmWWVSZlloWWZaYWtobGFtZkpnU2hBZmthRmFpZGRkYWdUZjFkUWNVY1ZjUWFsZGVkYWEzZXBnamNUZldhcGVMY0RiMWZJZ1NkS2R3ZTRhOGZNZHhlRWVXYkZhM2doZnJmRGcwZ3RiTWZHZmdia2duY1BnVGJaYXdoSGF3Y29iSGJIY2pmb2F2Z1NiM2RGYThlYWNWYzhoTGdFYkFoUmVvZlhhQWV3ZmhlVmdWZXdkNGNUZW1lZ2M1ZlJiMmZnZVZnU2NGZkJjSGhUY1VleGZ5ZVZmaGZWZHFhY2JsYkVkamFXZFFkOWFPZ09hU2U1ZEVhVGhEYlVnVWJlZzJoWWJ6YWFjM2E5Y3ZlV2drZmNjZGVRaEZmbGE0Y2RkR2d0ZzZiWWV3ZnNjL2dCaFVld2FHZldkU2ZzaENlZGFuYjRkR2FUZmhiVWFxZ2ZmeGdJaFFkTWFrZU5lWmRZZ25hSmR3YmNhRWJvYVdnR2RoZTliMWJLZ3hoOGRsYk1meWZvYURiV2h3ZHNjemFhYkFkdGZGZmJoeGdFY1RjS2FSZUloOWJVZEJmTWhoY1djZ2daZVFoRGVoZ2doeWFlZjFkWmdPZFFoSGNKZ1JnZGQxYWRjS2dGZ21obGNoZ1FhRmFrYzBiRmREZFJjbWdmZUhhQWNCZlloUmhZZENlVWYxZ29jQmdHY21lOWJCZ2VlbWFOZE5hYWRrZ3NoUGdVZGhlQWV0ZUNmbmVaYytmQWhFZ0liUWhlZEdjSWZTZVZkUmRoZVRmVWdFZWhneWdjZkhjQmNJYlFiMGRsZmFkZGRYY2hnTGZJYnphSWQ3ZUdnQWM0Y1FoVmZ5YTFlY2RSY1FhcGREaFFmU2NBYVZjZWh4ZEVldWFKYWtnTWdKZ0hjQWQ1aFVkWmFpZkVnQ2FSZHllTWg4Z0ZibmZsYVhkSmVsY01obmdKYWtlSmdRZFpobGVraHpjTmdUZFZld2ZGYXlkcGhhZkJlaGIxaFFkQWJCZDRmZ2FJYmlob2N2aENkR2FvY0VhU2FWY0loRWVaYmthVmR0YlhhRmJKaENjRmdYY2hnMmRFZWtnc2VZZkVhUmF3YjJjSmN5YUljK2ZTZ0VmRmNVYVdkSGdWYmxlVmNtY3BmNmZQYVNnd2JMZEVjQmdSYm9hR2JUZmhidmhEYmhnTmY5aFJiMmZrZlRhUmVYZVVlWGJTYUViMWRhZURhV2JZZW1iTGNVZ2RncWFmZDFmRmdtYktka2ZvZ0pnYWJYZ0FoV2FBaG1oWWNFZ2ZjVWJ4YWhlY2NGZFZndmFXaGtmZGFBZU5lMWZWZlNjZGFHZHRlNmhZZHdhc2YvZUJkVWh3ZEdjV2RTZXNjQ2dkYWpiTmhhYUZoaGJ4ZjRjTGhUZ2hhTGdHZkVnTmRaZFlhbmFKZHdnY2RCZG9kR2ZIaFFhOGhuZE5na2V0Zi9lYWdXY2xjZGVXaFVoUWJYYkpoRWI0Z0xkS2RFY1ZiYmVaYmtjZGc4ZkVkMWhOYm9jR2FFZWdmWmZUZzBjUmJ2Y2FhWGF3aFZoYWhuY0pjUmNkZzFhY2VYYlBhR2NsYWhkRmNoY2hnbWhGY0NmQWV6Z0xlemhNZEJhSmJoaFVlSmNIaFZnSmdkZkJnbmYxZ3JnSWJVaGxmTmRhZWtnc2hQY1VhaGZCYWtiVGdDYkFlM2RBZkVoSmJIYmRnRmh3Z1NmU2d4ZWhjRGRXYVdlSmN5Z2NhSGVCZUllQmRrYVZod2RkYVhjaGRMYmRoM2VwY3BkVmcxYWtiUWdHYVNnY2JIYWJoMmg4aFJhRWMyYTlhSGRjZ3hhTmJIZGFoQmRVZ0FlWGVHYjBnUWZaY25kSmRXZUZkV2RwZ3liVWVYaGRhWGRCZUJmcGZEY1lnUmZZZFliWmVoYlJibWZaZm1hRmF3YlZjVGV4YmFkV2doZzFoSmVXaHhoNGN4ZEpoVGcwZDNoQmhYYUZmaGNEYTFoSWRRZ1piRWV4ZzJlZGVsY0pnS2JYaFhoaGZyZkVjZ2dJZ1FlRmIxZkJhcmhmZW5hQmE0aEJha2ZOZFVoV2hqZ3NmOWNIZEhnY2Y4aFlnVmE5ZktnRWJCY05hb2ZXYUVneGJ2Z0hjaGROaDdmUmYzYjRnVGFEZzJhRWZjY1JjRmFCY1BmVmJXYVpidmZWZmxiMWJxYWJoRmRGaG5hVmcxZlVhV2FPY21mRWViZEdhSGdJYlVmZmNHaFlheWZlZVVoNWRGY1dla2FjZGRoSGZWZFZkU2VkZUdic2dzZElhaGE5aHFkQ2RnZDlnUGJFYkhjUmRYZ1hiSGZaYVNiUWZoaFZiNGJkZmhmSmVMZVhnZ2R3YUxiWWVuZW9haWFjY0ZnVmFEZVdiVWVGYTFjUGFVYnRmcGFlZ2pjdGdNZFdjVWZJYlplWWd4YVpmRmRlZXhjZ2c1aGJoMGZkYnpiRWgwY2Rhb2RGYlVjaGVRaFJleGVnYXBoY2hrZXNmL2hhZG5hSmdSaGRhMWNkY0tmRmVtYmxiaGFGYmhlaGFtYkhoRGFNZ2RiTmdYZDRhV2hKZHhmc2NWZGZnbGhJZVJoRmV4aFVlL2JjY2pkRmRFZkZhMGdzZlRkVGZoZUJhMWdWZ0hlOWgyYURkbWNnZFZkZWhIZ1loU2JTZXhiaGdEYldnV2NKZXloY2ZIZ0JnQWdGY2pnSWdPaGVmemhzZERjTmFpY2dnS2NHaEJjMWhWYWVoRGN3Z0RnRmIyZThhYWRFZzNlNWZPZURkaGROZWJjZGZCYVZhWmhRYmtjNGRRaE9hbGNoZldoRmhXZXBneWRVY1hkZGRYYVNiaGRaYXBmWWJSZVlmUWJNZDJlOGN5YWFnQ2hJZjRjRmREZzBnNWRDZUZhbGRZZU5lQWNaZDhnT2FYY3Bhb2hUZlhnaGZDZGNlbGhJaE1hZWFFZXhjZ2hmZTFhSWZlaFBhM2VoZDJiRWdrYXNmWWJRZDFmbGdpZmNobmhCY3dhU2dCYVloeWVEZm5hc2M3ZkFnemhZaG9mQ2ZoZGdkZGRWYVhkZ2U4ZUFieGZkYXZhR2NoaE5oOGJUaGdjNGVhZ1NoMGNJZFZkU2FGYUJhSGRFYkdoWmZ5ZlZkaGZWYXFmY2VsZEZmL2NHYVRnRmhYYVljbWRwY3JhR2dIYnNjVWhiZWlkbGZoaGJla2V0ZXZhU2QxYkVkVWZIZlZlTmRTZlpibmM1Z3ZlYWVrZEZhQWdTZ3doOWdTZ0VjR2FSYk1lZGhuZlpmU2VRZ2hkVmU0aGZnbGF3YndoV2RVZmhkU2hIZjNmSmd0Y2NjRWVBYk1hU2ZVYVJncmVlZ0ZoTmcrZGVobWE5aFhhU2V3YVVoTWdZZVFiZGh2ZmJkeGNFaFRlYmYwYmRiemdFYjBjZGFvaEZnVWRoZVFjVGQxZTRlZGZNYTFoMGhlZkZiM2hKZ01iZGMwZFZlZmFBZzJnbGduZEZobGVkYnZkRGQwYXhkbWJZZFhhQmRWZWJlMWJwYkhkSGZVYThjUWFCZmliRWE1Yk5iR2ROZUZnUWhFaHNlUGRVZ2hkQmZrZlRmSGdaZjJlVWNraElmSGRlY0dkc2JQYVZmaGFnYkxkY2QyZUpjeWJjYkhmQmNJYlFmMGdsaGFjZGRYaGhhTGJkYTJiVmZwaFhiMWVGZmZjR2ZYZlViTGNUYlRhcGRxYVJhMmJFY0VjT2MxaEllVmRDYzFkb2JNaEZkU2VaYkVlYmdpZUJlZmRhYkdhcGN1Z1RiWGVkY0ZhUWF4ZlliMWJZZ1JiNWZOYkhoVWdCY29jSmdTY2theGNCZHdhd2JWZkFjMWJoZzhnQWRWZW9mbWNhYzNhRmZqZlhnR2dNYTJkRGUwZXdiT2VaYkZnaGcvZmZnMWY1ZG9jRmNYZmhmMmRFZmtmc2VZYlFhMWFsaGlhY2ZuYUJid2dTYUVjTmVCaEZoQWg0YzVlUWRIaHdiSGVhYVVmcGNaYUFjZ2F4ZzliQ2gwYU5jdmhYY2hocGVtaGJkWGJNZFRmUmUyaGdlVmRTZEZiQmNIY0VmR2VaY3ljVmFnZjllcWFZYTFhRmNxZ1NlbGRjYVdnSWRXZ0VkUWFIZmtod2RVaFpjbWNaZGhkY2ZGZlZldmRXZGtkY2FkZUhkVmVWaFNmZGVHYU5meWZMaEViMWYzYllnUWY5Y1NkRWVHaFJoTWdkaG5iWmFTYVFkaGVWYTRkZGFoZUplTGZHY0VlTmdSaE5md2FrYmtmZmRnZHNlTGNDYUFlZ2hXZ05nd2U4Z3lmR2Z6ZTFhZmVDYnhobGNrYmFoQmNkZVpiYmh3ZkFmRGVaYWthY2V2Yk9nVWJkZ29mRmVVZ2hlUWNSZHhoQmJtYWNmbGNZZVZnYWVuZUpmUmZkZTFkZGhDZlFmeGFJaDFkR2hGZ3NmdWVWYVRmUWRGZExjamdRZFFlRGFnYTViUGdUZnhlMWRlYlVibWRWZWlnQmIyZU5nUmZkZWtoc2ViZldieGRBYTRmWmduZVpnMmRVZ2tnSWZWZWVmSGZZaFNiU2F4Z2hhRGVXZFdhSmd5YmNhSGJCYkFlRmVqY0loT2RlZ3pkc2hEaE5maWdnZktnR2RCZDFoVmZlZkRkd2hEaEZlMmM4ZWFkRWYzYTFoT2dEZWhkTmJaYmRkaGNWZ2FnV2dVZzRhY2dUY0hmSmhXYUZoV2dwYXliVWNYZ2RjWGVTYmhlWmhwaFllUmVZZVljYmVsaG9hZGFKYzJicGc3ZUtnR2c5ZEhkUmJ4YVZiU2FWYVVjeGFxZWFiMmVKYXFkVGFXYnhnTGFIY1VjY2dGZmJmVWFCZmNmZGRsYkphQ2RGZlhoaGgyZEVma2ZzYVloUWExYWxkaWJjYW5nQmg0Z0JnamFnZ0loVWdYYzRnRmVTZDJhcGQ2ZmVnMGVKZE1hRWJCYjllb2FSZUVmeGNtYUhmVGdsaHZnUmczZE1kVGJSYjJmZ2JWZFNmRmdCYUhoWGRrZ3hieWdWZGhnVmFxYWNnbGJGaDNoVmUwY01nTmFRYjJoRWhXZUdkR2JZZlVoWmFqZnRmTGNjY0ZoVmF2YVdna2JjYWRjV2V3ZEFkY2FOZXpoOGR6ZUxiQWNOZnFjQWR3ZWNnR2RHaFdhUWdYZVhiSGZaY1NiUWFoZFZmNGZkZ2hoSmNMaFNnZ2JZYU5kTmN5Z0FkK2hjYUVkQmdwZFNjVmFwZTFkZWhFZ3RiM2NlY21hbGNYYVdhVmJGYWljWWZGZDloRmJjZFFhOGJUZ2ZobGg5YTZnRWIwYUZjb2dBZjFhc2N0Y1JjeGd0aG1nTWJ5ZjBnZGRQZm5kSmdQZmFnVmZkYmJlQmFHZEJnaGFFZEJjaGJ3YkJoeGJ0ZG1jYWNuZ0FjVWFGZEZmSWZUZ0hmUWNOZExmVWdtY0pkaWRlY21oVmVOZ2ZiRmRoZHlhVWhoZnRia2ZEZVFmMWNnaFFnVWVJYVRoZWVDZEpldmNZZVJhaGNEaFdoV2hKYnlnY2hIZEJmSWJTaGxkSmV3ZGRlWGNoYkxhZGYzZHBncGhDZG5jTWFRYkdmV2dnZkxkUmJXZDlmWGJSZWlkRWVFZ0pnMWhvY0llSmJoZ1ViR2dXaEJmTWFjZ1plaWFCZ2FlRmhTY05jN2VVaFNjeGM5YVNiaGVaYnBmWWRSY1loWWFaZWhjUWdnY0tjVGJOY3dhWGVUZmtmYmVGYVJjMWVZZFdlVmFJYTdlYWMyZWRiamROYmhjZGhIZ0RoeGR3ZFFnZWJVYXdka2ViaFZhSWVMYUZmV2FaYjJlWGVGZEFkWWNEY1ZjbGhwYmJlM2ZCZWpiUWFXY2xlSmFXZm5mVmc0ZVNhM2dkZTZoYWFWaGRhWmVHZ0ZmeGFvZEZia2JWY25oUmVXYWdhaGJPYW5kTWZQaFdhMmZnaEVhWGJsY2xlSGFHYjJkWmE2ZUFhbWM0Y2toY2hsY3BnM2NSaGpjY2NXZWRlWGcwY1doQWdHYThoVWZiZVdmWWMxYkNoeGN0YnZnVWFVZGNiUGdZZUZmeGNlZmRkQ2dSYzBlTWd4ZmdjNWRBZHdjY2FhZ0dhQ2NGZkZhZmYyaDFhNGdRZGhhVmE0ZmRoaGJKYkxnR2hFY01lTGNKZXljWWNsYklkZ2JaZERjQmRsZVFiL2ZOZXdmSWQ1aGNnbWh0ZVZiVWNBYXNoemZhaEFkdGZGY2JkeGZFZVRnTWRtaDFmemNFYTBkZGFvYkZhVWRnZ1dlRWVsZjRmbGVKYWhmOWJhZ0phSGFJYkNoZmh3ZU5kRGdGYmpjSmNMaEZhaGhoZW1lRmhHZVpnbWRZYlhjQWZUYklkQWNoaEhjRmNUaGRkVmFVYW5jUmZyZmVobWROZ05lYWJrYnNmUGJCZkZjRWMyZlRkQ2FSZjZjZWhFYklkVmdlYkhlWWZTZFNoeGhoY0RnV2JXYkpneWVjYURlbGVJYlhja2RrYk9lZWV6ZlFjT2ZPZVRkMGg5ZkhjMWJVZzZhR2dXZWdhTGdSZldoOGFSZUViMmY5Y0hhY2J4Z05jSGVMYVJnVmNWaFVhQWU0YlFlWWczYUplRmZHaFVlQmN5ZVVmWGZkYVhnU2JoZFpncGdZZ1JnWWJZZFpoaGdRYnBnWmZuZHhod2JWZTJhMWVXaGJkUmQwY2RiVmNWaEplMGVhZjNkcGdqZVRkV2FwZUxjRGJ4ZW9nUWdlZlVid2NOZkNhMWg1Y29oRmVYY2hjMmVFZmtnc2RZaFFkMWVsZGlmY2JuZ0Jhd2RHYjBlTmNVaFdlbWZSZ3VlV2JHZTljcGdaYVhlMWRaYUVhQmdsZm9oQ2cwZ1ZldmNFZlJmTmN2aFJhM2FOZEdhUmgzZFVkVmJXaEZkeGR0aEVkR2JaZHlmVmNoZlZocWZjZGxhRmEzZVZjMGNvYldiTGgyZ0VmTGdHZUNjOGdVYWFoMmdZZ2tiYWUzYjlndmJXY2tkY2NkYUhlVmVWZFNhZGFHYXRhNmVKYVVjMWcwZFNhMWFwYUpoT2VtYlJhTWdkZG5jWmVTYVFoaGZWZzRiZGFoYklkZWdHZUVmaGZFYVloaWdGZWFnY2dFaGhhRGJTY1ZjcGgxZWVjRWN0YStoVWVHZGxmWGdXaFJmQWNaZWFkQWN0ZkZnYmZ4YUZmYmJZYVJjY2FtZ1FlQWQ5Y2dnV2MwZEFjRWVTZnhjQWR6ZmZkbGNaaEFoYWFuY2xoUmRKZUZnZGdVaEZlaWQ5YmhhQ2ZSZWdiZ2dGYUhleGZtZ05jSGNCZ2VjYmF3ZGxkT2VGaEFkWmIvY1VkbmNSZ3JmZWVtZk5nTmFhY2tidGZkZUZiMGJRY3hiSGdqZmhnMmVXZG1kZ2RWaGVnSGVZYVNoU2R4Z2hlRGNXZFdoSmR5YllkWGVCaFZjWGhsY1JhYWdNYkZkSmJMZ2RmM2RwYXBiVmMxZGtmUWRHZldlZ2VMY1JlV2U4Z09mRWQyZGRkUGdJYlJjTmdhZGFjRWhFaHpnR2RVYWNmZGhaaG1hTWRyZ0hoR2RaYVljVWhYaGRnWGZTY2hoWmJwZllhUmdZZVlmWmdoYlJobWJaZW1lRmM0Z0dmbWE5ZVJlV2VoaDFoY2NMYWdmQmEwaGRhV2VSYWpiWGN4ZmRnQ2VBYjNiZ2ZRY1piRWV4YjJiZGdsYkpoQ2dGY1hnaGcyZkVla2JzZllhUWExaEVkdGFjZW5hdGd0ZlNjQWJJZ3llVWVpYWRoNGhWZjJhdGE2ZGZoVmI1ZVphRmVoaGxmK2VHZURlaGJtZUhiVGdsaHZkUmQzZU1nVGZSZTJhZ2VWYlNoRmFCZUhnRWFHYVpmeWZWYWhjMGVsZGNibGRwZ3FkVmEwYmdnTGNkZkdmTWZmYUVlVWh3YVVkWmRtZ1piaGNjaEZiVmh2ZVdoa2djYWRiSGRWZVZoSWZkZkhobGU2ZGZobGJCZDNhU2QwY3BiU2hGZG1kSmVtZGRkbmdaYlNnUWFoZFZlNGdkZGhhSmFMaEdiRWJOYVpnWWNuZEplNGNlY0JncGFEaFZmRmFwZjlkTGJEZUFhK2RlZW1oUmRYaFNlMmgwZFpnZGJCaGRjRmdkY3hmZ2hUZlpiRWZjZ25iYWhBZDVjb2RHY0VjaGFCY09laGZsZXFhV2VGY1llVmZhY25jSmdSaGRjMWRkZ0tiRmRtZmxoaGNGYmhmaGhtaEhkQ2VsZ21kYWRtYjFoVmNMZmlkRWdWZkhoUWFOaExmVWFtYVZkN2ZCYTJhcGFCZVFlRWFzYlBiVWFoZEJma2VUZEhhWmYyaFVla2ZJZ1ZlZWdIYlllU2RRYTFlZGVEZVVkbmU5ZnlhTWVRZ3RnQWRFZFVjbGNFZGFlM2NoZmZiZmNuZnBmdmRWZTBkOGZEaFphR2RFYkhmYmUyZjhmUmVFYTJmOWhIaGNieGZOaEhlYWFCZlZhSWJVZkVnY2JRaGJmamcxZldmSGFuYmRjeWJFYkFjeGZmY0dmQmVaYjFnZmNSYVlmS2JiaHhmUmRnZlpnbmhkZGpkS2JHZlphV2hiZ1JkMGFkZVZiVmZKZDBiYWYzZnBoamJUY1dmcGZMZURiMWdJZVFlYmZBZU5iMmFmZ1ViOWJDZkZmMmNWYjBhR2cwYkliVWRhZFZobGVpY2NnbmZCZXdiU2VFYk5kSmVXZ25kVWF3YlJmU2FjZnZnT2ZoZjlmUmZYZnhoQmdrYUllVWFWZnZmRWdSZE5jdmdSYjNlTWhUYlJmMmZoZ2RnUmRoZW9jSWhXaFNmaGM2ZlZmQmhkYWpoV2RGaEZlM2hWZDBlb2VXY2FhV2RFY1dkRWVYaDBlK2haaG1mWmVoYWNkRmRWY3ZiQmcyZjBlZGZIaFZmVmFTY2RoR2Z0Z3llTWZVYU1mb2VFYmxoc2VYZmZmQ2NFYUNoTWdTY0liYWdRYWdhaGc0ZE1jeGF0Y0hhR2NFZnNkTGRiaENjWWgvY0VlaGRFZVhoRGZEY3NlbmFLaGdkb2h1ZGVhbmRSZVhlRmFoZmtjVmdhZUFiTWZYYVliVmNkY0JkSWRBaG9mUmhTY2hjTWN0ZGRoQmVvZENlQmhrZGxlbWhiaDFnWmZHYVlhMmhsZjdoZGIxZGRlS2VGYm1hbGhoZlVhRmFjZzBiRmdHZTVmTWFZZVhlQmVWYWJoMWhwYUhjSGdSZTBoRGVFY3lhWmVyZ09mMmVOZlFnYWhqYkJkeWRYZ2pjcGdrY1RjSGNaYzJiVWRraEllVmhlaEhoWWRTZ0hlaGNoYWVnV2dSZmtkUGdmYkZocGZJY1FmMGZsZGFjZGhYZ2hiTGVkZjNhcGZwZEVlVmdrZE5oR2dXZXBjZWZDY3ljdGNVZVZkU2JZZEplTmZsZmRhRmNhZEJoUmFWY1VoQmZOZkphTmhqY2NiWmJVYjJlb2NIZEdjRGFrZkRkVWhuZ2NiN2FNZTFiZGVCY1pjZ2R0aG1mRWJ5YWdmK2JBZ1hhY2c3ZEZhVWE5Z2NnRGhGZEpmdWhhZXhmc2R4Y0hmeWRzYlNmQWUzZWdlUWVaYkVjeGQyZmRibGNKaENiRmdYZGhhMmRYZmtoc2JGYWFlVmNsaGlkY2RuZ0Jkd2RTZkVjTmVKZldibmNWZDRoU2IzZ1VlYmNDZXphUWY5Y2RoWGI4YVBnWWV5YXdoRmRlZW5mOGNDZ0toUmh4aGphTmdoY3BjbWZQZENiVWh4Z1pkeGQ0ZExoTGRGaFFkb2JNZlJoVWZ5YUVoUWYxZ2VmSWVDZXRnZGVWaENodGRhaEtiVGNZZHdlSWNnZ1lnN2FEZXhmRmRLZlJlUWJ3ZUlnWmdIZXBib2RjZ0ZhbGcvZlhmUmRoaEthQ2RXZzljRGhkZkhncGc0YVFoaGhWaDRjZGFoYUplTGZHZEViTmdaZFlnamJGaHdiYmNVYmhmVGdSZ1hmQmQxYmVmRWJ0YjNjZWZtaGxhWGZXZ1JnQWNaYU9kQWZ0Z1lnYmExZzBnZGVJYndlSWE5ZlZkQmNNYWdiRGJtZ0phUWZSZnhiQmRtY2NlbGRZYlZmYWZpZ0poUmdhaFZlY2NKZURnVWFOZ2hmRmhoZWhibWhGZEdiWmRtZFloWGV0YmVjTGFIYUJhSGhIZVJkMWRWaFVhbmhSZ2ljVWhHY05kTmNhZGtmc2JQYVVkaGVCZGtlUmdEZWNkTmdFYVRkOGFWZ1pmWGJaaGVnTWZGZnNhK2FVZUdnNWZ5Y2VhQ2JVaHpkRGEwZmNkWmZQYVRla2ZaaEZmRGNVZXRiRWFqZmhoRWdFZlNjc2FDZE9nR2I4Zk1oRWd5YnhmT2VhZERibGdIZmFlQmVWaElhVWhFZWNoWWdNZXdobGdVZUdoR2RoYjhnRWNqZDhjV2JHY0hlVWNtZ0pkVmNOYjVhTWJoYnhmMmNiYnhoeGJ3YVNnR2Y5ZE1nVmJSYlFhUmRWZFZnb2hoY0VmSGVnZmNnVGMyaFFlSWNSZXhoTmhDaEJld2ZNZXlkTWF6Y01nV2NIZFdjaGcvZ2JjMGVzZEZlUWcwYzljeGFlZzJidGdhZlNmRWFOYkphV2ZpYmhhMGJZYlhlZGg2YmFnVmVjZmZkUmVWYmNicmdYZndmd2VnZFhieGROZm5lRWYzZjhnVGdGZVdkRWNWY0ViM2RwYkhnRWRHZFpieWRWY2hmVmFpYUlhRmU4Z2xiRWhnYnRhU2JhZFhod2NXZ1hnamFOZWFhSmFUZUlib2dQYnhkdGR2Z1VkaGZNaFJiSGRRZmRhZWVkZENiSmUyZVlnd2FoZG1hU2UwY0JlYmFFZ0RkOWdtZmRibmdaZ1NoUWRoZFZnNGVkYWhmSWVkaFdnUmhGYlpiS2ZuZjVmYWFjZ0VmaGhEY1NnVmdwZjFkZWFFY3RkM2ZlaGloZGNiYWNheGFBYVpoYWFBZ3RiRmRiZ3hhRWRUYWJlMGdjY2dnRWQxaHBhb2REZFVmaGZhaFJlMWE5ZG1iZmMxYlpnUWRhZ25iOWFSY1pjbGV0ZGdlRmdtY2xlaGVGZmhjaGVtaEZnR2daY21iWWdUZkZhVmZjZ2xhcGFQYURmQmUxZEplVGVuaFFiNGdjZTJjTmJBZmFkbGdvY0RnZWRCYkJma2dUZUhnWmQyZ1Via2FJZFZkZWhIYlpmSGdTZ3dmVmZEYUdoR2hKZnNlYmJuZ0JkWmZUZjJnTmFhZmRjWGRoZExmZGgzZ3BjcGZWZTFoa2JRZFhmMmJnY1dmUmJXZklhR2ZIZjBmVmJIZGNieGZOZ0hjYWRCY1ZkSWJVZEVhY2dRYktmbmFKZ0xlRmNTY05ieWdUZG5hY2NZYlNiaGN0Z3BnY2ZCY1lnQ2haZWdlUmVxYlRlR2VGZndjVmRXYTlkYWNSY3hjMGRkY1ZiVmNJZDNnYWUyaGRlamJCaEdocGFVZURoMWU4ZEJjWmRGZ1poMmZaZTFiNWFvY0ZmWGJoYjJjRWFrZHNiWWNRYTFnbGNpZmNmaWZCZXdjVmRVYU1oZGFJZ1NiZGg0ZVFmSGVjZjJnRmdFYXhmemNFZEJjbGhvZENnMGhWZnZkRWZSYU1lcGdDZENmRWdUZlRlMGZJY1ZkU2ZGYUJnSGJFY0diWmN5ZVZjaGVWZnFkUGJsaEZmOGhTY2tncGdWZlpiV2RGY2ViR2hIZXNlVWVOZW1kWmRuZmNiRmExZm5nU2IwZWNmQmRBZlZoVmVmaE1kbWZKZDZjYmdrZTFiN2ZRZWdlTmNTZFFnR2FSZFNjYWhHZHRiU2NUaDFnTmMwaGRhbGVSZUxlRWYxZzViWmdNZ1dhbGNhZ2NkRWJoY0RmU2NWYnBhMWdlZ0VjdGEzaGVnaWg5YlhjUmZ4ZUFkSmFjZ3lhRmdGZGJmeGZFYlRkYmUwaGRlemdFZzBjZGZvZVhmVWdoYU5jUmR3Y0pjemhaY0ZiWWRmYWFiamZwZ1JmZmhGY2NjZWViYlRjdGJoYUhnUmZnZnFkYWZXY3BibWFMY1hiQmNlY2NibGhvY0VoRWRSaDBhVGVVZG5lbGQyY2VobmJ0Ym5nYWdraHNiUGRVY2hhQmdrY1RnSGNaYi9kU2hXYmdkVmNlYkhoWWJTZ1NleGFoY0RiV2ZTYVFlOWVJZm5nQmJBZWFlVWRsaGFhZGRYYmhlTGZkYTNmcGVwZFZoMWNsZWVmR2FYYVVhTGdEY1dhOGhYaEViMmRkY1BkWWFoZ05oYmRkZ0JoVmFGZEZoa2Q0YVFlYWgzZkpmSGRIZkdjWmR5YkdkWGVkY0pkVmFBZHRjcGNiZkZhQWVVYVpibGVKYm1hYmJYYXhjd2NFZUhiUmh3ZFJoeGMwZGRiVmFWZUpnMGFhZDNhcGhqaFRnU2d4ZExlRWhWYUlhQWFmYzJiWmcyaGRmbGJKYkNiRmFYaGhlMmZFY2tmc2FZZkRoVmdsYS9nY2JtZEpobGZYZmthTmdEY1doamd0ZTRhUWhIZGNhdWVFZGdlVmNaZ0dieGdrZmtoZGhrZWxldmVYZFJjTmZrZFdkbmFOZFFoU2UyZWhhVGFTaEZlMWVhZ0VmSGU1YVlnVmNoY1ZncWFjZ2xoRmQzZ1ZkMGdvZ2ZnY2VrY3NjV2RHZkdoWWVVaFpnbWFaZWhhY2NCYndocGdXZ2tkOGNOaEhhVWFoZVBkYWVXYnNoeWZhZGthMGhpZ1NheGhKYlNkQWRXZFJhQmZkZWlkTmFKZGFnQmFWaDRoZGFoZ0phTGNHaEVjTmNaZ0phemY0YWpiTmJVZ2dkWWZZZzFmcGYxZ2VjRWZ0ZDNmZWNtYmxoWGRXYlJmQmRRZUxmZ2J0YU5mSmF4ZkViT2FjZmxjcGh6ZFVja2g1ZG9iUmZ3ZjBhRWNFY2tlSWJvYmNnaGVnYVZjZGhYZEplQmZkYzFiaGJLZ0JnbWRsZjdiRmJoYUFlMmFGY0hlbGhtZGJlR2dGZFZnZGZWaHBlV2JGZ0JjMWRmYVVjbmN4YzZjZWVtaHhlTmdlZWtoSWVVYmVmQmZCY2tlVGNIYVplMmdVZGthSWNWZWVjSGVZZmFnQmZSZWhmSWdSY0dlSWdmZU1nU2ZRYUFnVGdSYmtnVmRJYW5kQmZaY2VlM2hvZXNlWGdsY0FkY2RHaFdkQmREZVJmV2RJZk1lRWV6Y3BlT2FhYURlbGJIYmFlQmRWaElkVWVFYmNoUWZaZ2llOWg4Y0ZhV2VwZnlkVWVYZmRkWGhTaGhiWWQ3YkpiRWJKZU5jTmFGYnBlbWZiZ2phRmZ3Z1NhbWQ5ZVhhVmhoZDBjSGhWZ1VlTmg5aGFnM2hCZGpoQWIyaHBjQmZEYXpmOWFSZk1kQWdSZDRoSmVoYTBjVmZIY1dncGU2aEVhZ2VNZFliVGVsaGthbmVlYjJldGNhaFNkRWFOYkphV2huYVZjNGdGYW5hNWgyYlFkMWdkZVpiRWRCYmxkb2JDaDBhVmF2YUdnVWNGZmhkRWZDZ0ZkYWhFYnlmMGZWZVZkVmJBYkJhUmJTYWdheGhBZWxhd2ZsYlBkRmZGYi9kQWYwY1ljV2ZPZTJnMGhXaFVhV2JvZFVkSWEyYnBoaGZQZzFobGN2aEVna2Q0YmRhUmRuZzlnU2VkYUdkdGc2ZVloMGExZnFjU2R3YzlnU2FSYmlmVWdlYmRlamNoZ2VlYWJCaFZoNGVkYWhkSmRMZUdkRWZOYVplWWhuaEpid2JjZUJndGNQY1llMWFwYjFlZWJFaHRkM2VlYW1kbGZYZVdnUmVBYlpjYWFFY3BhSmRSYlJjRWhUZ2JkMGhkYXpoRWcwY2Rmb2ZGYVVlaGFRYVJlMGFWYW1nYmUxZlllTmVhaG5oaGFSZ1BiMWJkZEhiRmdpZFpnaGhHY3hlaGczYkdjRWF4Z21jWWhYaEJoVmdiZzFncGhIZ0hnUmcxZFZoVWVuYVFldGhlZ25lNWdOYVlobGNvaFBlVGhnaHhna2hHZFhjOWMyZFhmMGNJY0VkZGFGZHdhU2RTaHhnaGVEY1dlV2FKYnlnY2RIaEJmSWZRZDBja2FXZmRnV2ZWZUxkTWNYY3BoM2NTaFZoa2JCY0ZoVWFJZkxlUmZXZzhoUmVFZzJjOWRIZGNieGhOZ0hnYWRCaFVoTGJVYUZob2VRaGRkR2hGYldmQ2NIZmRodmNVaFRhaGNYYVZkUmZZaEVkSWdFZkpiUWJhYkVjUWVwYU1kV2VsYWlhV2NXYTlnWGJWZVFka2NVZlZmVmQ5YjBkQmVqYnNnM2FCZldlUWJiYlFjQWZVYlljZGRrZUJoMmFlYzBoVmJWYUhjSGRoYnNhRWZsZnNoVWJhZ1ZmbGRpYWNlbmRCZndiU2NFZE5nSmFXYW5hVmI0ZVNieWZkZjZiZGNGZWNjY2NFZUFmWmNvY0dhMGNWYTFjRWVWYnRhdmhTZ25nTWZDZFNmMGZJZlZnU2VGYUJlSGVFZ0diWmV5ZVZiaGdWY3FmY2NsY0VnNmhWaDFnY2VXY0xhR2NFYkpiR2JIaGNlVWhmZ0dmWmNzY1lhVmZsaEZoV2NrZmNhZGNIZlZoVmhTZmRiR2V0aDZnWWQwZTFmcWJFZ2doOWNQZEVjSGhSaE1nYWZIaFliQWdRZ2tha2VrZWRkaGNwZ2JhR2dGYTVkRWhmZzNoSWVpY2NnRWU1aEZmU2RVZXBkMWRaZGtkdGJtZGVibWhaZ1hlQ2N4YmthWmJkZndndGdVYWJkd2hzZlRjZmgxYXhlWmhFZjBkZGFvZ0ZkVWJoaFFkUmV4ZUJibWRjYmhnQmdhaE9lSGRKZlpiWGNWYWRnS2hGYW1jbGZoZEZmaGFoZG1lRmVHYVpobWFZZlNjSmdWY2NjbGNvaHFmWGVFY2toZGJYYURiVWdwZUtoV2RzZ2ZoWWYwZGNmbGNVYmhoQmVrZlRkSGRaZzJoVWRrZkliVmhlZUhjWWdTZFNjeGJnZktoQ2VnZ3dlemRIZ25nZ2VhY1Nma2VrZ0diS2NYZWdjWmZkZjJhZGIwZlNibGRrZUJjR2RXZmNiTGVWZVVmVWJSY0VjMmM5ZUhkY2Z4Y05iSGRhYUJiVmNJZVVnRWJjYlFmWmRuZUphV2FDZ21icGY2Y1dmU2NSYlhmVmV4ZFlhZ2NNZW5kaGJaZENhQmh3ZTBiYmQyZUZkdmFWZFhlNWJhY1hjUmgwZU5lWGJGYzVjMGNZY3plUmhqZVVhR2JvYk5lQmdsYXNhNmhaYUVieGEyZmRnbGVKZENmRmVYY2hoMmVFZ2toc2VZZlFnMWZsYWlkY2htaHBid2FRZ0Voc2NIaFdhbWJoZTRhSmFqZVlldWdJZ1Zna2VmZlhnRmNZaG5hV2dVZTBmQ2NVZ0VmY2ZuYVNiVGY5ZGNlQWJHZ0JmSGVRY1ZnQmdJZkVmQWVzZHpmQWZsZzFma2NIZWpiOWVsYlhma2hNaGFiUWcyZ0VhV2FHZEdoWWVVZFpmbWhaZGhkY2VGaFZjdmdXZWtlY2dkYUhjVmFWaFNnZGVEYWxkNmJhaFVlMWNpZENmZ2Y5ZFBiRWVBZ2tiTmdJZ2pnNWJjYUVlbGZvZnZlZmhnY0JnSGVHYUVnNGNYYmFlM2R0YndoYmZFYmhhU2JTY1ZmeGd6YmVoRWZNZzVjZGMyZlJlYmdXZFJmaGNZaGFoQWRGZFlmYmd3Y01jYWNaZmtjdGZaYkVjMGFkZm9kRmhVZ2hkUWNSZHhkQmJtaGNhbGNZYlZoYWZuZEpnUmhkZDFoZGZLYUhkamR0ZGhiSGNRaFZlbWJXYm1oWmV0ZFllVGZ4Y1ZoY2VVZWRjSGdEYkJoMWRLZFVnamNkY3JoZGdXZk1kTWFhaGxiRWVQYUVlUmhCZnViVGdCYnNiM2ZCYmdjb2JiZktlRGVsZ0ZnUWN3ZXBjUGNXZVhoTmR5Z2ZkWGhBZ0VnU2hrZEJmV2FYZjNkaGJMYWRjM2hwYnBlVmMxY2tlUWVHZldjZ2hMY1JlV2M4aFJoRWIyYzllSGFjZzBhRmNIY1lnaGJVZ0pkVWFGY2tkTmNaZW1nQmdXYUVnMmh4ZHljV2JUY2xhY2ZRYlJlcGRwaGFoVmdjZFloYWdRZWxnbWhkY0dlaGI1Y1dnVWdWZmFjUmR4aDBjZGhWZ1ZkSmQwYmFoM2JwaGpkVGdXY3BiTGdEZjFlSWFRZ1phRWV3ZjRjZGZsaGxhQ2dXZ1hoaGNvZERoMGZ0YWVlYWZWYWxoaWdjYm5mQmR3Z1NmRWNOYkphV2FuZlZhNGJTZzNhZGI2Y2FhVmNkZlpmRWJCZmxob2JGYUVmVmJuYkdjVWFCZHZmV2VuaE1nRGRUZW1hUWJWZ1FoQmM1aEhjRGdXaFlnMGJYZ3hieGZBYWNjbGNGaDNmVmIwZ29iV2ZhZVdiRWhXY0dlR2NZZ1VnWmRtaFpiaGNjaEZiVmV2aFdja2NjZUhlSGNSZnRiU2dmYjJkc2EyYlloMWZOZTNlU2N4aDVjNGVFYUdmUmVNZ2RibmRaZVNkUWFoZVZiNGhkZWhnSmdMZEdnRWdOZlphWWRuZEpjd2hjaEVlaGNjYlNmVmNKZjloS2UwZnRmcWZlYW1kRWJGaFdjUmNvYlpkS2JRZXRkSWRiYndnQWNhaGJhMGQxZnpnZmFnYVlmOGRYZ1VhWWFBZkNnRWNkYXVoWWZGYW9oVmhKZVhkdGJZZGViMWJkZ0NhV2FHaGxlcWRDZHhkZ2RxZ0hmV2Q5YU1nWWNYZUJlVmhiZTFkcGJIZEhoUmcxY1ZjVWZuZ1JocmFlaG1nTmZOZmFna2FzZFBhVWRoYUJhK2VUZEhiNWUrZ0FoVWhJZkloZWNDYlFjU2dRYVJmZ2R1Y0dmRGdZZzZhZmFpaEFnSGFGY0ViRmJJZmVjWGZnYkhoZGQzZGRmcGRSZGxjQWZRY0VnMmFoaG1lQmREYnRhWmRIaFRjOGdJZUpoQmd0YlZmWmJCYlVlSGNXZFVlNGVjYlpnbmRvYllmRmdYZGRmeWRRaFhlNWJlZVFod2QxZURjWWVSYllnWWZaYWhkUmdtZFpnbWdGYXdkVmZXYTlnYWVDZUJmMGJEaFNkRmJKZnNlY2VGYUJhamRUZFdjcGRMZkRkMWVJY1FoWmZFZHhnMmJkYWxlSWdXYWJiamVGYjJoR2hVYnRhSWNQYmxjbGMvZGNhbWVKY2xhWGFVZk5mUGJXZmloWmUwYVNoeWVkYzZkWWJraHBlWmVYY1JmVmJvZldhRWFWZmdoRGNCaE5nOWVVZm1hVWJmZVJheWFjYlZnUmhVZDFoSGJDaEVneGF5Z1ZlaGJWYnFkY2dsZUZnM2NWaDBnb2FXY1llSGNvZzhhR2NHZ1ljVWFaZm1mWmJoYWNmRmRWZ3ZoV2JnZkZkU2VUYTFlVmNhYlhjbWN0YTZiWWgwYTFocWhTZXdiOWVTZ0VhR2FSYk1mZGNqZGhkU2dYZnhiVmZ3YU9oQmZKYlhnQmdFaE1jV2dhYjNmSWZzZmNhQmN0ZFBiU2NRaDliMWVjaDFhWmEzaE5jWGRKZjllV2FSaEFjWmJhY0FjdGdGY2JleGRFZ1RiYmQwZ2RoemJSaGtlZGYyYkZoVmhoZUxlYmJSZUJibWFjYWxoWWJWYWFlbmVKYVJkZGgxZ2RhS2dGYWphMGFhZFhjeGJoZnRjRmZEZVlmYmVZYVdnMWRWYmZhVWI5Y1NjSGVSY3RkVmFIYUhiaGhyYktobWROZkdkZGMwaHRkQ2hYaGhoQWJxZ1RjSGJsZnJmVWJsZkFlQWFiZG5kb2RTYUhkaGJoaE9jUmhHaEpocWZXZm5hQmhJZ1FmMGdsY2FiZGdYZ2hhTGFkZzNhcGhnZ1RoSGdNZVFkR2FXYWdnTGZSaFdiOGRSYkVhMmM5ZEhlSmIyZmdjT2NhYUJnNWFJZUFnRWZjZGRiWmJqYzhicmFGYVRkWmd2Y1VkV2FaaEZmVWRoY1phamhZYlVoOGhEZ1RhQmhSY21nWmdtZEZod2VWZ1dnOWRhaEdlaGZRZEdmZmYxaEpmMGNhaDNhb2QrZFFhVWdCYUxkRGUxYklmUWZJYmhka2c0YU5iUWZZYkxnV2VqZlpkMmdHZGhnOGVSYVFid2RKZUlhY2NuY0Jmd2RTZ0VnTmZKZkRoRGZRZXFjU2Z5ZFZoNmhkZUZiY2ZDYlRkUmNjYzhiUmNEYlljN2NRZTFhb2NoZkFmR2ZnYTVnUmYyZ2djVmFTaEZoQmdIZVJiR2ZnZjNhRGhrY1VnbGhJYkFjVWZraFZjMWJjZDhoYWhXZkVlV2FHZkdiWWhVY1pkbWFZYkFiSWZnYWNldWJBYjBjbGFVYlRjamFRZEFkSmhpZG9kamJZYXhlRWYyZFlmUWg5Z1NnRWhHYVJiTWNkZm5jWmVTYkJkRWJBaDJoTmhVY1lnQ2hWY3diMWFaY2FlaWVaZzVmY2FCZE5jcGhTYlZocGYxZmVhRWh0ZjNnZWZtaGxoWGFXZVVnSmNjZFBnRmM0ZVhlSWVSZ0VhUmRGYkFoZ2V4ZldmUWZJYnJiUWJVY2dleGhGZ1VnSWhuaEtleWNzY1hmYWNtYjljTWRkZndjVmNFYVZiU2FnZnRiV2JoZUFoeWJIY1hoMWdNZ1liWGNCZ1ZjYmQxaHBnSGJIZlJkMGdJaFNjVmg1Y3JjZWJtZk5jTmZOYzBjY2RsZFVmaGRCYmtmVGZEZkFhamNIaEFmRmFCZ01mVGhsaGNjU2N4aEFhWGZWZ1dmSWZnaGVhWGVBZVRkYWdVZGxkYWFkZ1hnaGdMZWRneWR3Z29iQmhWYWxhWmRGZldoaGRPZ1hoa2FVZFJhRWMyZzlhSGJjY3hjTmVHYVljRmhNZmRlSGdnZ1JhRWVMY3pjMGVZY0ZnV2RJYTlhV2ZIaGNnTWdZaEJnWmFwY1lhUmRZZFlmWmJoZ1JjbWJJZ0RhUWcrZEZnamZzZFRhQ2VGY01nZGFIYlZob2RnY1pjM2ZvaHhmUmhHY29oUWdKaFZhSWNRZlpjRWR4YTJjZGZsZEpnQ2ZGZVhiZ2RrZFZieGY5YU5kRWRSZWRkaWdKZ2phZ2g1ZEdiMGFNZUFhRmhDZVljc2VDZWpoa2Q1ZExkQmFnZGZhRWJGYkZjQ2ZDYTBjVmV2ZEVjUmdOY3ZlUmEzY01kVGhSZDJmZ2NWZVZhMWhCZlBkR2ZEZUloNmNIZzBnWmZrZURkUmUwZzRkQWFFYm9lTGVhaFhnRWhmZEZiRWJ3Y1ViWmZtZFpoaGZjYUZlVmJ2aFdma2VjaGRiSGJWaFZjU2VkZEdlTWF1Zktkd2VRYTVlUmFYYUFhYWJXYlNoTWhFZGRobWZ0YVNlVWFoZ3hmMGhYYUJoSmNMY0doRWhOYlphWWJuY0phd2RjaEVnaGREYVNnVmRwZDFmY2VCZDhjL2hNZHpmcGNaZENiMWZWZVVmS2ZVYUlmTGZLaDFkUmJCY2JhMWZwZ3piWGNSZElla2VXZVVhRmVjZ2JnUmhCZm1lY2NsZFllVmNhZG5oSmdSYmRhMWFkZktkRmNtZ2xhaGhGY0ViMGhvaFVjQ2hNZGdlS2VEZTRhUWVLZzFlaGRIYUFiQWJCaFZkQmFpZDBmN2dQaHlhd2VMZmFhaGhrZ2xjVWVoaEJla2FUZkhlWmgyZVVna2FJZFZnZWdIY1loU2VTZnhhaGhEZVdmWGYxYXllSWMzZzRhTGhBY2dlVWVXaGZhU2V3Z0RoUGhpYmxobGhWY3dhMGJaZE1kMmFnYkxlUmVXYzhoUmdFYjJkOWNIYmNheGROaEhiYWhCZ1ZmSWNVZEVmY2FLYlphbmhBZkZoUWhUZmdiN2FIY3pkQmVWZFNhZ2N0YjBnWWZVZUpiQmZOYmxkRWNwZ0lmR2hFZWtkZmIyZjliYWhSZnhhMGNkZlZnVmFKaDBkYWYzYnBlamFUZ1dmcGVMY0RjMWNJY1BhWmRBYjFmNGJOYVJiTWVPY1doWGdBZWloV2RnYkpnTGhUaDFja2cyZmZibmhBY2ljUWNXY2xkSmRXY25kVmQ0ZFNjM2NkYjZlYWNWZmRiWmhFZEJibGdvaENnMGhWZnZlQ2J4Zk1oNWVDYkRmcGdYYVJkeWZZY2JhQ2R4ZkVmTGhYYkdhNGJtYkhobGR3ZzVhZmVsZkVoamhXaDBicGRFZFlmR2VnZDhlR2NHY1loVWVaYW1nWmNoZWNiRmdWZnZjV2NraGNjZGhCZzFoVWRjYk1oVGh4ZDZjS2gwZ1VoK2NSYXdiOGZBYUdnWGU5Zm1lZGduY1pnU2JRaGhoVmc0ZWRmaGZJY1djTWhrZE5lWmdZZm5lSmN3ZGNmRWdoZkRnRGh3aDhkN2ZPY3hoOGErZ05mU2FkaFhmRmJ4Y2hlTmFaZEFhc2NYZlpnaGdGaEllUmRVY2RkemhFaDBjZGZvZ0ZlVWNoZ1FiUmZ4ZkFoMGJOYndnSmdBZU9mRGV4YlJnZmJ3aE1nQ2hYZXplcGV2Z2FkVmdRYnBhUWMyZVplN2hZY1dkQmZWY01jMWNvYlRjRmFCZ0ZmVmFXYWllQWVqaE1lemhCYkRoRmhRYk5kR2dGY1ZhaGFrZVVjWGhaY21nVWJoYjRoVmhLaG5kOGJlaFNiMGV3aExiRWZEaEZkcGVXZG5mQmJJZlFjMGdsaGFnZGRYZ2hnTGVLY2xnQmdwZVZmMWFraFFlR2hXZ2dlTGdSZlNjbGFFYlhjU2Z3YVRjT2JsZndhSmhhZUVkWmNBZUJjRWg0aFFiUGZWZmhoV2VGZFdjcGV5Y1ViWGRkaFhoU2NoZ1pncGNNaDFmTmFNY01iMGRZZ29kWmJtaGtoa2hIY1NiWWRKZVNoV2hKYVJmR2RnYVZkMGJkZW5mcGExYVdmSGM5ZlliR2VsYUlnV2RaYUJoaGgvZ2VobGdKYkthUWZUYUFnL2hRY1VjVmFuZ0NmeGRBYWxoT2FuZ0JodGVTZ0JkZGRKZ1JhR2F0Zm1kU2gyZVphc2JZZkZjdGhaaFJjRmFFYmhiV2hGYzVhRmJFYlJiTmh2aFJjM2hNYVRjUmIyZWhiSWFZZ2xoQmZIaEViR2JaY3lhVmZoZ1ZmcWVOYUFiUWc1Y0ZhQmc1ZGZkSmdpYjhjV2JXZldmNWdBZGFibWFZZnplZWdWZlVjMGdjY0ViY2JkY0hkVmhWZ1NnZGFHZ3RjNmZZZDBnMGY4aENkbGgxY1NiV2ZXZFJkUmRkZGlmWWNUYUVnRWRZZzlhSGQxY3dmZmhFYkJnZGVWaFlkaWJCYndoTGdCaFJiRGRXZUVlcGI4YVljMmhGZzNnZWJtZmxkWGRXY1JhQWRaZmFlQWR0YkZiUGdWY1JiSGJPZmhhVWI5YUVhMGQ4YjhkWGJRZEViRGRTY1diOGJxZ1BlUWNFZ1ZhZGczZkphSGFZZWtoSmJaZEFlMmRsZW5hRmhsZUZkdmRHaEdmWmF1YU5oVGhnaGNoUGZGZ1FiNGRWYlZhUWhTaEdmbmhSZjJnZWdpZHBoTmZkZkZmVWRSY1VlZ2dGaHlkUmNYY3BkMmdCYmdicGFjZUtoMmcwZTRoU2Z4ZmhoRGhXZFdiSmF5ZWNnSGZBY1ZhYWVVZWxkYWNkZVhjaGFMZWRhM2FwaHBnWGJ3ZklhNmNHZldlZ2FMY1JnV2U4aFJkRWMyaDloSGRjZXdjQmVSYmNlaGhVYUFkV2RDYnBoUmRNZGpjcGRZYlJnU2JVZGxlV2FXZ1JiQmVSYmhkWmE4Z2FkQmI4aFVjVGNCZ1JnbWdaaG1nRmN3ZVZlV2I5Y2FmUmd4ZTBlTWNRYzBnaGUwZUllM2VJZ09mRGFEZzRmRGVBZlFhSmhmYk1lMGRSYm5jWWRGZzVjQ2RBYm5lRmQvZEhmbWRFY1lmUWgxZWxkaWVjY25hQmh3aFNkRWFOYkpnU2YyZ1ZoaWNTY3piOWd5aEJmQmZZYk5lV2hCZ2NkNGVSY0JmSmRuaEFlQWdOY2pjUmQyZG9hYWZUZW1mUWcvY1NlRmhCZ0hmRWFHY1pleWNWY2hoVmRxZmNoa2JOZnRoVmF3YUlkZWZCZENlQmFDY1ViR2ZoaEVhS2RUZ0ZocGdZZGxkbGd2YVNoVmVjYVVlRmJGY2xkNGNkYUdidGI2Y1llMGIxZ3FhU2h3aDhjUGdIZUVkNWJNY2RibmFaY1NkUWNoYlZjNGhkZ2hhSmVMY1FjMGFOYUtnZGFHY2hmd2ZPZUVhQmJRaFhhMWJOYjVoZWZGZHBjaGVZYUdha2RmY1VlUWZFYlBiWWdRaGRoRmhmYWdlRWRKZmJod2U5ZjdiQWJsZWRiaGNHZFVjaGFDY1hkUmRBZHVhZWRrZlFoY2ZhZmloOWFZZWJhSGgxY0tiRmJtZGxlaGZGZmhhaGJtYUZkR2E0ZHVkYmZ5YkFlSGNJY0FlNGZJaFNnVWNRZEZkRmUzY29ldGRLY0Nid2VBZkNnQWFKZGJkQWdSaEJhNWFUYURoaGIvY1hibWZnZlZkZWNIZVlkU2JTZ3hoaGREZldjV2RKZ3lnZWREaGhkR2ZFZnhmc2dWZUlmVGRjYWZlTGdpaG9hc2NXaFJlOWhDaFZhaWhWYmxiRWFDaEpiVGdWaGpjMWFIZ2JiaGNNaFVmWWVSY2xhaWFVZkVkY2NRYVpibmZKaFdhRmhXYXBkeWZVYVhkOGFmYVJhRWRZZzdoTGFrZkpoWGJNYmtkMGIyYkloMmg4YzJjQmN5Y0FkWGdOZ0VlbGNQZkhoQmJ3Y3poYWMyY2RkamVEY0doTmJIY0pmVmFJYVFkWmFFZHhmMmZkaGxnSmFDYkZlWGdoaCtoV2VrY1ZoSWRFYlJlWWcyZFBjU2FRY3BiR2VBZ1poSGZEYWplb2hXZkhkamJvYTRmTGJBYlZoWmFEZlJka2V1ZVhjZ2RzYnNoUmRWYm9iZ2JDYlhjTWJiZ1RjbWFoZE9kWWFsY0JlSGRFZkdlWmJ5YlZiaGNWaHFnY2FsY0ZkM2dWZXhnaGFUZVBjVGNSZkVoVmRtZ1liQ2VjZTNnTmF5YlpkbGJWZ2xnV2FoYk5kVmJWZUFjWmZjZ0NleWJNZnpkSmhBY1ZhcWNRZ0FjOGVHZFdiQ2gwaGZoZWZBY2tkZWVEYlVkSmVqaFhoQmdKY0xoR2VFZ05lWmVZY25hSmd3YWNiRWNnYmVlUWVGYVpmZmRlZEVjdGMzZWVkbWJsaFhjV2hSZkFoWmhhZkFmTWNOY1lhVWFGYkJlSWhCYU1nOGNSY3hiNGM0ZFVlRWdZaEVhQ2ZHY01oeWdJZkJhOWZiYUxhWGhKYU1kZGJ4Z0VjZmFXYUNib2gxaFhlMWRjY29hRmNHYjRkeWVhYkhmQWFPYVJjVmFwZkhoSGdSYTFlVmhVZ25lUmhyZGVlbWdOZE5jYWNoYmxjS2VCY2tmVWUyZkFobmRZZ2liR2VnZXRiR2JkZWliSmVkY0piVWgwY09iR2Z5Y2NnZ2JlZkhhbGJHZ0Zmd2hZZ3BkSWhTYW9jQ2dPZFRlMWVoZ0FoMWVsZE1nUmZXZ2dkYWRWZVdoWWFLZ09oV2E5YUhoY2F4YU5nSGdhaEJlVmdJZVVlRWFkaE5nYmgzZjVhOGZGZVdlcGZ5ZVViWGNkZ1hkU2FoZVplcGhZYVJjNWdRZ2FiRWVRZTBhS2VUZFVlL2VBZ1RiWWFLYkFiaGJOZmNnRWdSY1pjMGdkY25ib2hsZEdoQ2dRYUlmV2N4Z3RiZmdLY2tmeGErY0lnbGZ0YkNkVGhsZ0pmMmZFZ2tlc2RZZVFhMWFsaGlkY2JuYkJkd2RTZ0VkTWZmZUdkeWFkZzRiR2FYZWRobmRhZ1FkTWJSZFdmVWJwaG1lZGZBaGtnZ2ZSaGhmTmVrZlJkeWVjZWRnT2dDZ1JoYWZIZzFheGJ0aEVnR2ZaZnlmVmdoZ1ZncWRjZmxkRmQzYlZoMGhvY1dmYWVXZkZoZmJHY0hhc2NVYU5iR2RaZC9iYmdrYXRmdmhTZjFmRWVHaE5kMWJWaFNoZGJHaHRmNmZZZDBnMWNxY1Nid2Q5ZVNhRWVEY1lnSmVJZmlmTWVBZURlQmVWZHdhWGVCZ0piTGJHZUVoTmFaY1lobmhKZndjY2dFZmhhRGNTZVZjcGMxZWNoQWNKYTNmY2hYYVJlWGREY1ZiaGVRZU9jd2NVYzZiSmMxZmhlVWRKYjBjZGQ0Y0VneGhOZW1jYWJnaEFlWmJBYUZlaGd2Y2Zmbmh3aFZnYWRuZUpnUmZkZzFhZGhLZEZlbWVsZ2hmRmdoYWhlbWhGZEdhNGZ5YUthVGJrYUdoWWdTYlVoTGZVYWthcGhWYlRhM2NSYjlhYmMzZlplZWdmYzBic2JKZFVka2hKZHRnUWRGYXhnMmNVZmthSWhWYmVmSGhZY1NiU2R4YmhjRGZXZVdlSmd5ZmNoSGJnaGNjQ2N3ZEFjSmRlYndmY2JEYlBkamIwYWhlVmcwY1FhUWREZTNnMGJlZFZibmVvZVJiRmFXYzhmT2JlYmhmOWh0Z2FkQmNWZkliVWNFZGNlUWdaY25oSmZXYkZnV2FwZnlmVWJYYmNnRGNBY2xlOGg2Z1NkeGNZaFliWmZoZVJhbWdaZ21nRmh3ZlZoV2I5YmFnUmd4Y1FiR2FmZjFiSmcwZ2FkM2NwYmplVGNXY3BlTGdEaDFmSmNOY2JiVWFCYWNkZGJsYUpnQ2ZGZ1hkaGEyZEVoa2ZzY1liUWUxY0VlcWNmZENjQWhpZEJheGFjZEdkRGZpZ3dlb2JEZG5ka2hwZVBkQmhVYU5iUWRsYmdmcmhYZDBhVmN5YkVlVmZVZDZkQ2dUY0JkSGVEaGlkZGJiYlNkRmJnY1RmR2VXaFlmcGNmYUJnVmJxZ2NlbGVGZDNnVmYwZG9jV2ZhZVdnRWNXZkdjRGFSZ1JmTWNqYU1kemVQZWxkVWg3Y0VnZ2c1ZU9nRWV4Y1FnV2dNZUdoTWR1ZWJoUWM0aG1nQmZFZEVlWGJHZ0dkMWZDYU9jRGNNaFZlQWgwZkVjOWNmY2hkdGhDYkFoMmNsZVpoWWZuZkpkd2hjaEVhaGNEaFNnVmJwZzFiSmdVZkphN2dVZkdobGFYY1dkUmFBYlpmYWhBaHRkRmViYnhkRWhiY0poMGRrYmphUWJRZ2dmOGdXZ2hld2RKZUZkMWdWZW9iUGh3Zk5jWmhQaGphc2RCYU9ld2g1YUtmQ2cyaGtkbmZRYjFoWWRsaFFmQ2M4Z3BoTGUzZUJhZGNPZTFkTmFIYlJlamhkZVZnVWhuZ1JmcmRlZG1nTmZOYmFla2NzZ1BjVWJoY0FneWREZ1NiUmgyYUFjRWM0Zy9hZWRIZlliU2dTY3hjaGhEYldjV2RKZ3liY2JIZ0JlSWJRYzBla2VUZ2VhVmdKYkxnZGMzYXBkcGhWZDFja2VRZkdnV2RnZUxkUmRXYzhmUmNFZnlmcGNIZ2JkaGFNY1RmSWFGZ3diYmNYY2plaGdZZkxjemRVYWVhR2FVY0JieWZVYlhiZGhYaFNhaGFaZXBoWWRSYlllWWJaaGhiUmVtYVpkaWU1YndoU2JHYzhnT2dEZzFlUmRPYVdneWQwZjRhSmVDYTFmdmdaZjJocGhMY0RhMWFJZ1FhWmhFYnhhMmdkZGxoSmVDaEZiWGRoZjJhV2hrYXNkRmdRYXdhMWNzaERmVGZnZjViRGJ3YnRmRmVjY0hkVmM0YlNlM2FkZzZiYWdWZGRmWmNFaEJlbGFvY0NjMGZWZHZhWGF4Zk5meWRSZXljY2NkZU9hQ2NSYWFjSGQwY3RidGFFY0doWmN5ZFZnaGZWZXFjY2FsYUZoM2VWYjBob2hXZU9keWNSZENnVGJUYlJhYWZaYW1nNWdMZmNoRmNWZXZhV2ZrZmNjZGZIYlZlVmFTY2RmR2J0YTZiWWgwaDFnaWdBYWdlOWVQaEVlQ2F0YU1hZmJIaFljY2FTZnhmbGFTYmRoaGNKZExjR2ZFYk5mWmVZYm5iSmV3ZWNlRWhoZERkU2hWZnBhOWhLZmtodGdxYmViaWhCZFhoUmV3aDRjSGdhYUJocGZUY1poaGgwZjVoYmIwYWRlemVFZzBjZGRvYkZkVWZoZVFiUmN4Z0JkbWJjZ2xjWWJkZ09lSGRKZ2FhYWNsZGNiUGNGaG1lTmVoaFdmQmdGZHFiUGRtZ1pjbWdZaFhkQmNWYmJiMWhwZUhnSGFSZDFlVmdVY25iUmVyY2NoamhGZE5nYmFGZlloUGVSZ0FiVmZ4YlhjMmVOYy9jWGhtYmdnVmhlaEhkWWRTYlNoeGNoZERhV2VXaEpieWJjZkhlQmhJaFFkMGRFZUlnZGNYZk5mV2VkZXplVmFwZFhkVmVsZllmRWRHZFFlaGJSZ1dkOGJSZ0VmMmQ5Y0hoY2N4aE5mSGVhZkJlVmFJYVVlRWdjYVlkTWRqZm9hZmdSaG1jUWhOZkhiVGhnZEFnU2dnYnRlcGFkZHdjTWVOYmRkUWdGZW1mWWFHZUVkNWRYYkdoTmd3YlJneGQwYWRnVmVWZkpiMGZhZjNjcGVqZlRnV2VwaExmRGQxYklmWWRNaEFjUWQvZ0pkVmR3YjlhWGdUZ0VmeGdXZ2toc2ZGYlFoMGQ5ZjNiWmUyYU5jbGZTaEVhVmJKZ0NnSGd4ZTBoWWNYZWRoNmdhYVZjZGVaZ0VjQmVsYm9mQ2YwZFZkdmNFY1JmTmd2ZkVkemF0aGFnRmdFZkloVmRTZ0ZjQmRIZUVmR2VaYnllVmVoZ1ZncWhjY2xoRmgrYlRlR2NBYldmYWVXY0VmV2NHZUdkWWNVaFplbWNaZWhiTGFWZHhoamhjY0VmY2JkY0hnVmFWY1NoZGRHZ3RoNmVZaDBkMWZpYkFid2JFYUNkUWFpZ3NiWWJPaFNhSWVMZEVkbGJCYTJiTWJsZ3NmZGRHaEZoNWJaZUphQ2RjZytoTWF4ZXdjS2FCZ2hkUmUxY2NlQmc5YytlZWRqZkphOWNXZFJnQWNaaGFhQWJ0ZEZnYmV4Y0VoVGViZDBmZGV6Y1dhZ2JGaG9iSGJWaGhhUWFXY2dnMWRtYUpjbGJoaHFjSmhqYTBkR2FkYTFlRmhNZEZhbmZsZWhhQ2N3ZVZkbWhRaEdoZ2haZ0tiVGFrYVNiSmcxY05hSGdTYlZkVWdIY0hnU2ZOZHJiSGJ6aEVhZmhKZ1Jha2NIYVVkRmhRZ3RnR2JqZDhlbGVHZndjMWNiaGVhRGRSZExhU2gwZUloR2hDaHlnMWR3Z2VnV2d0ZGloUWYwZGxkYWNkY1hnaGVMY2RkM2JwaHBiVmgxZ2tmUWJVYkNmNGhMYVRjWGE4ZlJmRGFuY0phSGRKaHhjMGc0YkliRmh3ZFBnR2dFZGNkV2RZZkhhSmJIY0ZmWGhkYXZlVWhTYU5mWmZOZlZmb2dtYk5kaGM4ZXlkWmNoZVJnbWNaZG1jRmR3aFZmV2I5ZWFjUmV4YTBnZGdWZlZjSWNtZExhaWU0YjJoSGh5Z1JlTGdCZ3dnWmFZaExnUmU5ZjRmSmJCZmNoUGFWZ0RiRWU0YVZlZ2U1YUtkUWEwaFJnaWFQYURlVWduZFNnQWJ0ZkJlU2NuaHhoeGNSZDNoY2Z1ZEllUmI0aEtoQ2d6YU5ib2NDZDBhVmh2aEVlUmVOaHZmUmIzZE1mVGFSZzJiaGZjY0RkbGFCZVBlUmdHYWdoMWZBZGhhMGIrY09kaGdnZWthWGdrZ01nOGNhZFdkRWRXY0djR2JZYVVmWmZtZVpmaGdjZ0ZmVmR2Yldma2VkZFBnV2FBZUVjSGNKYmlhVmg2YmFlMmNkY3FiU2N3YzlmU2ZFZ0djUmJNYWRibmJaZlNnUWZoYlZjNGJkYmhjSmhMZEVlQmhjaFJhS2J5ZkZkK2JJZWdiMGVPY0NmQmFNZTdjUGJBYzRjbGZlZW5hUmdYZURkVmVoZFFmT2J3ZFVhR2dJZTFmNWVkYktla2M5ZTZoR2VraHRoQ2ZGZ1VlaGZRYVJleGFCZG1hY2ZsZlllVmRhZ25lSmZSZ2RkMWRkY0tjRmNtYkVnMWRYZmxnRWYxYkdoaGVrZnFjTGRpaGRhVmVjZ2xicGhYYUZmQmZGZi9kVWFuYlJncmRlaG1kTmFOaGFja2JzYVBkVWRoYkJka2ZUZkhkWmEyYlVja2NwZ0JmTWREaDlmQmZSZ1diY2dMZUVkQ2FVaDZlY2NHYjFkSWZVYzBoQmFXZVhkM2JoZ0xjZGczZnBjcGRWZTFia2JRY0dlV2RnYkxmUmVXYjhhUmFFaDJjOGVUY09jMWVvZ1VoUWVoZ1ZnSWJVZkVoY2FRZlpibmNKY1dmRmdXZnBkeWdVYVhjZGhYZ1Fod2cxZkRkWWFSaFlnWWRaaGhjUmNtZVpobWZGZHdlVmRXZDllYWREYWxnc2NkYVhiUWFZYzhkSWdpZmxndGZDZERkdGFEYVdjMWRzZ1piVGZrZ3hnMmhkZ2xhSmRDYkZjWGFoZTJoRWRraHNnWWRRYjFjbGFpZUlmRGhVZmtmSGVSYkVmSGRXZG5nMWZTZVNiM2hkaDZhYWZWZ2RiWmRFZkJnbGVvZ0NnMGRWaHZoRWNSZE5odmJSZjNjdGhIZURneWZGZ0diUmhnZUlnQ2JYY1NkY2Y3YkdkRmNFaHZlSWVGZkZlcWhWZHdlUmRUYVBobWRGZGViRWJIYllhZGRiZjJicGdMYmNoRmFWZnZlV2NrYWNmZGFIZlZnVmZTZ2RiR2h0ZjZhWWIwYzFicWZTaHdjY2RHYVdlQ2QwYWZlZWVBZGthZWJEZ1VmSmM0ZGFieGFKYWFoRWhVaDlmemhZYm5iSmF3YmNoRWVoYURmU2FWY3BkMWZlYkVjdGQzZmVibWVsZlhkV2RSZWhnTmNJZkVhSWdXYlliV2Y1ZWJjSmNnZkFiN2RFZTFmcGJvZ0JiVWdGY2NjYmhSZUJlbWNjY2xnWWFWY2FnbmFKYlJnZGMxZmRhS2hGZW1jbGRoYkZjaGJnY3lmWGRDaDhoMWVTYzNlQmFWYWJhMWNwaEhiSGNSZTFmVmZVYm5iUmRyYmVhbWZOZE5kWWIxZUFibGRVYmhhQmRrZFRlSGNaYjJjVWRrZUllVmFlZEhmWWVTZkRhVmZjYlJkV2ZXZW9oa2dNaFNnSmZJZUVhVWVsY0hlZGJTZnhiRmNOY0RkWWJtZkdlUmF3ZlllRWdHZVFhTGREYkdhOGVNYkViMmJKYVdnYWZCZU5nR2FQZEZhMGJCZUFkMGJsYWNlTWduaG9kRWZIZEhjRmZ5Z1doRmgxYlhmU2ZoZFpicGJZaFJnWWVZaFpjaGRSZm1hWmFtZUZld2VWY1RmMWZVZ0ZkRmNWY1VoRWF3aFliWWVMZWpnd2YzaFJiWGF0ZEhiRGgxY01kQWNiYlViQmcyZFBiMWFsY0plRGZsaEpmMmRFaGthc2FZYVFhMWVsZWliY2VuZ0Jld2VTYkVnTWVQaEZlU2RkZTRoUWMxZTFlNmNhZ1ZhZGVaYUVjQmhsY29lQ2IwZlZjdmFFaFJjTmJ2Y1JieWRkZ2JhRGdqZnNmYmNHZmhlVWVLZFVhU2Q4ZThmRWVsY0FiNGVjZmtleGgzZkFmd2JKYmZnT2ZtYzlmVmhWYUNibGRhY0ljMmU1Z29jZmdGZVVkN2VFYWdkNWVPYkVjeWVvYWVkT2F6ZHhjNmhmZmtlMWY2Z1Jmd2I4ZkdnV2dDYTBkZmZlZkFna2ZhYUNhMWZJY3dnZGNnZTlmTGVDYkZjaGd6ZVljbmFKZ3djY2VFZWhkRGFTZ1ZocGQxaGVoRWF0ZzNnZWVtZWtkZWdXZ1FkNGFFY2FkQmF0Z2VoUmNSZ0VhVGNiaDBoZGd6ZkVlMGNkY29nRmRVZ2hjUWJSYnhjQmdtZ09kMWhzY1ljUWZIZEpoUmRkYjFnZGZLZEZmbWdsY2hiRmFoZ2hnbWFGZEdmOWJNZVlnWGRCYlZiYmQxZXBiSGFIYlJmMWVWZlVnbmhSYXJkZWZtZk1oZmVaZUJnaGhIaEdhMWdZYXdnUGNqaDhkeGRHYWhmWWJkZGFhWGg4ZWVnWWJSY2hoRGNXZldlSmh5ZWNkSGhCZkllUWEwYmxiYWNkZFhhaGZMY2RhM2hvYjlhSGd4aEJiRGJGZ3phcGZPYUNlQ2Q1aFlkWGRTY3NjQ2NJYVJhMGVMZlBnQmEwYWFjV2RVZGRhTWFPZ2xiaGNXZ0ZoV2FwZHllVWJYZWRoWGZTZ2hjWmRwY1liUmhZYVlmWmFoZFJmbWVaZG1hRmQ0Y0FjU2FjYlRkRmRCZk5mUGNFYUJoOGQxaElnamRRY25nQ2JEYmhmRmVYYkFkZGNTZU1mQmg0ZzNmTmhRY1pnS2FSaDNhRmQ2aE9oRWVzZFlkUWUxZmxjaWJjYm5iQmV3YlNmRWJOaEpiV2duZ1ZlNGhTaDNlZGg2aGFmUmE1aFplRGVnZFJnb2JHYmxoTmJGaEViUmVOZHZkUmMzZk1oVGhSZDJoZ2hWZFNlRmdCZEhmRWJHZ1pjeWRWY2hoVmFxZGNjbGVGYm9lVmMwYUpnQ2RJY1NjaGdGYkZoaGZsaGNmTGR5ZEVkcGdjZkFlbGJ5YldkbGZZY2RlQWZVZGxnU2VmaENiSmI2ZWJia2cxYjdmWGVRZVphYmhPZW1nUmZNaGRibmdaY1NiUWNoZlZnNGFkZWhiSmJMYkdmRWhOYVphWWhuZkpid2djZUVmaGhEYlVmMWZwZDlnTGJBZE1kK2dLZ1dnY2dvaEZiVmM5YU9oYWJGYmRnWWViZHdiQWRUZGNmMWF0ZHpiV2ZrYTVmaGREZ21nSmJRaFJjeGZCZm1lY2JsZVllVmRhY25iSmVSZ2RoMWJjZlljVWR6aDBnMGRSZkZiWmJtZlFhQ2M0Y3ZiTWVtZnRiL2RiYjFkcGhIZEhnUmcxZFZjVWZuYVJhcmVlYWpnNWdFZVpnbWdFZ1BmVWNoYUJma2VUZ0hoWmEyYVVoa2FJZlZmY2hEZzRkY2hHaDBlb2NNYURiU2UwaG1lS2NTZ0FiTmRUYlFhY2JmZE1mamZraGZhTWRuY3BhMGJWZnhkOWdGZlZjeWV0aGZhRGRDYkJmZmNFZTJkZGNPZmNhMGRoaHRmYWdCYVZhSWFVZUVoY2dRZ1pnbmRKY1dlRmhXZHBneWVCZ3plWWFGaFNka2VKYXBoZmdCZ1lmUWNjaEFoRmV6ZWRkWGdSZXdoVWYyZjhjRWhFZzFkVmFVY0JkbGZ3aExoSmR6aFVhMGNSZ0dicGZBZ0RkMGVNZExlVGFrY3hoMmVkZmxmSmFDZEZhWGRoYTJlRWhrYnNhWWJRZndnc2VuY0poaWdVYWliQmhrZk5lQmJjY0hnVmM0Y1NnM2VkZjZnYWNWZ2RhWmJFZkJobGdvZ0NhMGJWYnZoR2FVaGNlbmhEZWlmQWJkZU9lQ2hSZWFhSGcxZUJmYWJFZEhlQmZuZVFid2daZi9nY2dsZ2RmM2FBYTBiTWZhaFFmMmNFZldlR2ZHZllmVWNaZm1mWmNoZmNhRmhWaHZnV2JrZGNiZGRGZFFjRWhhY1BnVGVoZzBoSGRBZFVmamZEZEVkZGdTZ0RlV2VSYUViS2RDZ0loYWVDaDBlWmEyZkNiVmNvZkNlWGR3aHRjWmJhZlhmSmY0Y0piRWdoY2RjVmUwYlJiMWVhY1ZkMWIraGNhMmZsYlJmV2hRZVlhTWJmZ1JnaGRRYVpiaGgwZzVjYmcwZmRiemNFYjBoZGFvY0ZhVWNoZlFnUmF4YkJobWFjZWxoWmhCYklhamZzZUNmWGNWaGRiS2hGZW1hbGRoZUZjaGRoZW1mRmNHaFpmbWhZZlhibGJPaFJiVmdwYkhjSGJSZDFoVmJVZm5kUmhyZGVlbWVNZ1FnWWYwZ2NnbGNVYWhkQmZrZlRiSGFaYzJkVWFrZkllVmJlZUhlNWNhZ1JiVWZnZVJjRmVqY1loOWdKZkNja2RZY0Joa2RjY2ZkSmRDYjBiS2FPZXljbGdwZVNobGZsaFliRmF6Y2hkWmVDYWphdGZlYlJoemZZaFhoTmVoYTBjQ2FPZFJmVmNWZlVhQWJGYUZhS2NEaEVhQ2RYY0NmVWU4Y1ViWGg4ZERjUWR4YVlheWNTaHhhWWNZZFphaGVSY21lWmJtYUZid2NWYldoOWRhY1JjMGE5ZlljQWdRY2NibWVKZ1hib2UzZEJnU2JNY1lkQWZTZzFoY2dLZnhjdGQyZmFhMGY5ZkNjUWNYYVljSmVYZGdiUmhQZ1FmMWg5YWtmY2dpZ1FiNGFBY1JhQmhIZ0poVGcwZnhiRGVEYTliNmRkZEVocGRaaFJkQmFjYVhiUWd3ZXdnb2VXYlFmaGVGYVJjM2NNZlRoUmMyZWdiVmRTYUZmQmdIaEViRGR0ZzdjV2dqaDlicWdjZmxmRmQzYlZkMGNvY1diYWdXZkVjV2JFY0NoNGdhYk5oamRRZXVlSmZCZW9hN2VBY3hmZGVZaEVmeGFJYkFmTWJTYW9mdWdKY2hiOGdlYkFhMGQ0ZGNiRWFIZWxiTWZQZm5lZ2hDZ0VmRmdvYXNlT2FVaFlkU2dTZkFmWmFYZ0plU2VaYndjYmRVYmdkRmFIYUJnUWEyYkxlQWZJYjRiTmNHYWxlZmREZFJna2ZaYk1keWJGYUZiYmd4ZEViVGNiZTBiZGN6YUVoMGZkZW9lRmRVaGdlQ2RBY2tlUWh6ZElnQmRnYlZiUGdqZ29hWWZKYUZja2cxY1hiaWZBYW1kWGhoY2hlNGdGZERkSmZvaEhoamVnaGNjS2FCYkpmdGdIZ1JlMWNWaFVmbmNSYXJiZWFtZk5oTmdhY2tnc2hQZlViaGFCZjdoVGJIZGRmbWFlZkVoSWVWYmVoSGRZZFNjU2F4Z2hhRGNXZ1djSmJ5YWNkSGdCZklhV2NVYWtkT2FQaFRoRWJZZ2VjUWJVY2hiSGVoZzViWWRHZFhjUWRMaEVlV2NGYnVoV2d5Z1llQWVPZ3pkbGVIYWFhQmZWZEljVWFFYWNiUWVaY25kSmhXZkZlV2JwaHllVWVXYmhkWGZTYndkZGZEY1lnUmJZY1lkWmFoZlJkbWFaZm1iRmF3aFZkV2I5YmFkUmV4ZjBhSGNWaFFlWWM4Y0loaWdsaHRkTWZpaFlkRWVXZEZjSWFPYlpkQmZoaDRjQ2FSZjRnTmZRYm1hTmRjZEVna2VzZ1lmUWgxYmxjaWhjZm5lQmh3Y1NlQmE1Y0FjVmJsYjlhNGRTYjNjZGE2aGFlVmZkZ1pmRWJCZGxkb2RBZHdoMWdoZVFhVWZFaGdhRWd6aHhiSGFIaGpnaGdRaFJiaGN3ZkNiUWh6Y1VlR2JIZmxhUWdrYWNma2d4YjNkSGcwY1JlR2dPYXliNWJDY1ZhemhKZE5lTmVpZE5idmRQaEFmRmF2ZlJkMGVkY2JmU2dCY3NlUmNJYkNoSWQxZUxnVWgxZWljSGV3Z1phU2RTYzBhNWRNYWRlbmRaZlNjUWVoZ1ZhNGZkZmhmSmZMZUdlRWJNZ0xoSmN5Z1libGJJYmdhWmFEaEhkUmhJZzhjS2YwZlVhSWdNY2loQWFRYkVhUmRBZkZoYWhGaDllTGZFZkZobGFhZEtnQWI5ZVpmRWIwZmRkb2FGaFVoaGhRY1JoeGNCZm1jY2hsYllmVmNhZm5oSmNPZmRiMWJaZWFjUGRHY2xlaGdGZGhkaGhtYkZoR2daZG1kWWRYZkJmVmZiYzFocGFIY0JkeGMwZUJkR2FqZjBlNGVkYkJhd2RGYklmd2h4ZEhoVWdnYzVla2ZHZUhnZ2dKZEdmZ2R0ZlNjTWVGZXdiU2dTYXhkaGFEYldlV2FKZXliY2hIaEJiSWNRZDBmbGdhY2RjV2JkYkxiZGNtYXRmRGVWZDFha2FRZ0dhV2NnYUxoUmhXYzhiUmFFZDJoOWdIZ2NneGNOZWRkYWhFZEVlQWZHYVJmUWdlZkdlVGg0ZFpmUWdtZ3BkdWVVaFNhTmFaaE5oVmVvaG1oTmNnYzBjeWZaZWhoUmhtZ1pibWdGZHdhVmNXYTljYWZSZjBiQWhVYldiWGVoZzBjYWgzYXBhamNUaFdlcGdMYURiMWNJZlFkYmJBYVJiNGJKZGdjQWNOZVFhVGFjaGlhU2h4Z3RnZGdUZlJmWWF3YWNibWgxY3dhRGRoYVlhSGZHYVNiRWZ4ZEJmRGNsYzZhWWNRZ05nUWVFZ0VlSmhDZ0NiMGJWZ3ZnRWVSZU5idmNSZDNnTWJUYlJiMmVnZlZlR2FoZFVoVGJSZlRkUWU4Z1ZoaGgwYytoT2VoZGdia2VXZlRoVmFhYUplamdZZVdmUmdIZHNjVWFNZm1jZ2VlZFBoQmFvZDRnVWQwY3NnZGVGZ1FoRWZhZVBjVGZoYzBmSGhBZFVjamZEY0VnZGhTYlRhSGJsZ01iSWJuYmdjdGZDaGxod2YvZVBnaGZ0ZkhnR2NCYmNkUmRLYXlmRmNyYldja2RoY0RhU2dWZXBnMWdlZkVjdGMzZGVibWNrY0tkVWRCZ3dkemFhY0FjdGVGY2JneGFFZFRiYmYwYWRnemdFZDBoOGRnaEdoeGhnZ0NiQ2RFaFFmcGNKZmdmOWRGZ0xhM2d3ZVFoT2ZSY05lS2RDZjJha2ZuZ1FnMWZZYmxhUWdDYjhmcGRMYjNlQmZkaE9oMWZOYkhnUmNqYWRkVmRVYW5kUmhyZmVobWJOYk5kYWVrYXNiUGRVZ2hiQWcyZUNlU2ZJZmpoQWNBY3dlVmJjZENiSmdhYUFma2Z0Zk5hSmRpaDRnOWhKZTNoQmhPZ1hha2drY09nZWJ3YmNkSGZPY0NlMWNnY1djMWNrZFlnVGJTaEJmQ2ZGZW1hRmh1YVdleWFZYkFkT2F4Yk5hQmJkYlJjVWVjY1hnamNoYVloTGR6YlVmZWVIZEdnWmV5Y0JlVGE4YWVhR2FRZDFlRGdZZVJhWWdZZ1pmaGdSZ21oWmhtZ0Zkd2FWZFRhSmhUZ1NlemNjZ2RoVmZWZkpiMGhhYzNocGRqZ1RiV2dwYkxlQmN4ZG9hZWJOYUJkNGE1YUllaGcwYldhVGdDYmdjemJIY0FkVmZYZEZnMWNsZi9kY2RqZllobGhCY2djQWFkYUVkemNvYjJlU2UzZzlhemRhZFFkeGR6aEVhQmhsZG9iQ2IwYVZidmhFZlJlTmd2ZVJhM2ZNYVRnRmVTZDFiQmNIZ1FhSWdKZEVkR2Y1YVllVmRoYlZjcWdjZWxjRmQzY1ZlMGZvYVdoYWNXY0VhV2NHYUdhWWJjZ01haWQ0Ym9lSWIxZnNoUWNGZWdhaGdLZkhnVWdoYVNjWWduZzVldmdjaEZlaGRxZFRnUWQ4Zk1lUmZDaHdlRmJKZVhiZ2F0YkRmbGZvZnZnZmJ4ZTViaGFHaEVmTmFaYllnbmZKZndiY2FFZ2hlRGRTYlZicGYxZ2VkRWF0ZS9hTGdpYkVmZWNDY2hhNWFtZ0llRWZJaENjSmJ4ZEVoT2diYTFoRmJtZ0JobGdSaDlmRmdVZTViUWZHY1VhUWF1Y09id2dVY2JjRmZUZW9kWWVNZkJlOWVEYUdoa2hOZGhmRmNoZWhmbWJGaEdiWmRtZ1ljWGNCYlZnYmgxZXBiSGFIZlVia2dkaEdheWVkYUJkZWRtYk5jTmRhY2tmc2hQaFViaGVCaGthVGhIZFpoMmJXZjFma2MvYmVhSGFZZFNiU2h4ZmhkRGhXaFdnSmZ5ZmNjQ2IxYkJhVGgyYk5mYWFkY1hoaGRMY2RnM2RwZHBkVmIxaGtmUWJFaFNmQWNGaEZkVGgxZGVmUmN5YUFnVGFLZGthTWRDYVpoa2EwYUhoQWNrZmNjTmNaZmpiUWZEY1dkeWNrZG1mR2REYWdlWmJTY2hoNGU5ZWFjQmJaYkRmVGFCaFJkbWhaZ21mRmR3Y1ZhV2Q5YWFkUmd4YTBjZGhWZVFoQWN4ZlBleWM4ZXhkQWEyZXBlRGhXaHhmcGZaaE5nMGhJZkpmT2NoZTBlVmJGYVFlWmNyZEVjaGU4Y1diUGVCZFVodGdKY1hibGg4Y1NiRWFzYWRmRWdqZXdocmZSYVFiZ2R5Z0liQmRBY1JlRWVHY2RoMWhDaHhiRmRoaGJlbGRzZm1hQWVEYXNhYWNTZTJmaGRCZUFhQmRrZFVnQ2IwZnhieWJWZWhjVmFxY2NhbGZGYTNhVmYwY29kV2ROYkdlZ2JhYk1kbWhZZFVhWmZtaFpnaGRjZkZoVmd2Z1doa2JjZlZmVmVWZHNiQ2ZKYWlkUWd1ZkxhQmNrZHpkR2UwZHBnY2RRaHlid2hGZU1hQ2hJZ2dkQ2ExaElld2FJYmhjSmdXYUdmQWd0Z1hiTWdpY0FhL2ZKZUFiY2JYY0VjQWVvZndoZGFoY2dnL2dNYXloOGJEYkNmeGdBYUVlYWdFYjBoUWZJYlZlSmNIZkphZ2hnZTllRWQwYThnOGFIY0VoZ2VMZ2JnUmZCaG1iY2RsaFllVmhhZW5mSmNSaGRoMWRkZktjRmFqY3Nka2hRYWtoMGMwZFdkbWNaZ3VjU2YzYkJmVmNiYTFncGhIZUhiUmIxYVZjVWhuYVJocmFlZ21oTmhOZlBka2hzY1JmVWNnY0ZmeWhaYW5kWmgyZFVla2ZJY1ZnZWhIZVliU2JTZXhiaGJEYVdnV2ZKYnlhY2hIZEJmWGZRYTBmRmZTZkloVGdBZ0NoSmdIZFFmV2dHYnhlWmhIZ0dkWGRVYUxnRWFTY2RiWWRRYkdjRWE0Yk9jMWdvY0FiSWhCZVZkV2JUY2tmY2VZaE1obmhKZmJlRmdYZnRma2JXZEhlNWhiZVNkaGU0aDlhS2FWYTljTGhhYUdhc2R1Y0xmeWRZYTRkVmNYZ0piYWJWYnhmUWVVYWZhMWZKYjBlYWQzZHBnamdUZldkcGRMZURoMWhJZVFnWmFFaHhlMmJkYmxnSmdZY0ZmV2VsYmdjRWFsY1ljRmhRYndkMWdJY2NobmRCZHdlU2dFY05hSmZXZ25oVmE0ZVNjM2FkYjZmYWNWYmRiWmJFYUFoWmFvYkFjMGYwZjdkV2VWZm9mOGVTZlFheGZmZUNhRGc4YVZhVmRWYkFjVGRXZENiOGdoYVdoR2JvaGllT2V4ZFliL2NYaGtoWWhXaFliVGdWY2VnVWNUZ1VmYWFHZFNiNGJvYk5neGQxYnZnUmYwaGNjTmVGY0ZleGY0YWRoR2R0ZTZlWWMwaDFicWNTZHdkOWFTZUViR2FSZE1kZGZuZFpnU2ZRZGdiOWQ0Y2ZoaGZvZmZkVWFBY29jS2JiZ0FhMGI4Z1BneGg5YkRoVmZIZEJnMWZlY0VidGIzYWVobWNsZFhiV2JSYkFoWmhhYkFhdGhGZWJkeGVFZlRiYmMwYmRhemVFZzBlOGQ4ZVhnUWRFYURoU2ZXYjhncWRQZFFnRWdWY2RhR2h4YVJiSWIxZzVlS2NTZW1kbGRwY0hla2N3aHVkWGdUZVZhb2JIYmpiZ2ZjZEthQmRKZ0hmQWNRZEZnVmVXYW1mVmc5ZWVhbWg1Yk5lUGJrYUlkR2JVYWhnWmFrZVdkbWZOZmplUWhWYWNmY2VjYlhob2I0YVNkeGVoZERhV2ZXY0pleWFjZ0hhQmJJZFFkMGdsaGFoZGJYYWhnTGhkZTNicGZwZlhld2gxY1liVWVEaHNjRmFPZ2llZGhZY1ZmQ2FkaEhoYmhRYzFnYWVhY0VmRmNCYVdoVWVzZTZkWmFuYkpnV2FGZ1dkcGh5ZFVjWGNkZlhmU2NoY1plcGhZZ1JiWmhNZUxhbGgwZzFhVGdHY0Zid2dWZ1djOWFhZlJneGQwYWRkVmJWYkplMGRhZDNoTmM0ZlpnMmNwZExmRGgxZUlmUWVaY0VleGUyY2RibGRJYmZmSGhIYVJmY2dFZ2tmc2ZZZ1FhMWRsaGlkY2RuYkJkd2hTZ0Vic2hCZlZlQ2ZVYXFoQmNDYU1oMWZQaFFjNGdKYVZhUmRjYjdiUWh3aHdlcGhSZFhjOGNxYUFiU2hjZlRkV2htZWhnZGRSYmdhQWhWY1hkemFJYzljQWZrZ3dhNmZOZDFoOGFrZEhld2hOY1FlUGJTYzBiV2NCZldoWmdTaE1jeWJnZGlkSmRCY3dlZ2RGaEVlY2RWY1NhVmVsZVNhSmZtZUpoNmNPZ0dhZGJxZFNjd2U5ZlNnRWNHZFJiTWRkYW5kWmdTZ1FmaGRVYnFhTWcwZFloZWNTZGdhMWhaZWFkbGZoZndnY2JFZ2hoRGZTZFZlcGExYmVoRWR0YjNhZWNtZmxkWGZXYVViUWdaZWRjZ2V0YVVoZWVUZ3NmVGdiZDBhZGd6ZkVjMGNkZ29hRmZVZGhhUWJSaHhiQmNtaGNnbGJZYlZjZGhYZ0poWmFmaHdlTWZDY1hoemhwYnZoYWdWYkFodmdVaHlnNWZtYmZlSGJBaEJjSmR4Y01nVWVFZzJkSWRaY0hkU2FOaHJiWmNuZDlkTmZZYWhnOGhQZlhoeGdCZzFhV2huZjlhL2NYYW1jZ2FWYmVnSGhZZFNiU2J4aGhnRGdXZ1dkSmN5ZmNmSGVCZEliUWcwaGxiYWZkYlhnaGZEZElmemJJZmdmQmNGYWRmdmhWYlNhZGJjYlJjWGJJYlJmQWQyZVplTGFXYVJhTmhIaGFlQmJWZElkVWFFYWNnUWNaYW5oSmdXZEZhV2dwZnliVWZYZGRhWGFTY2toUmFwZlBiVWJvZFloYmNrY0FhdWJMYXphSmQrZUtkaWNjY1RhQWdGZlVjZGZVYTBjOWgwYWZoV2I5ZjJkWGJuZjliQ2FCZm5nZ2NRZFpjRWR4YTJkZGdsY0pnQ2RGY1hmaGUyYkVja2dzaFlhUWQxaGxmaWNhZEhoQmRoZFhla2NOYlVmUmYzZVVmc2dZYlhkZGY2ZWFiVmVkZ1poRWNCY2xob2JDZzBhVmN2YUVjUmZOZnZmUmgzZk1hTWVSYTJlQWFkZkhkQmNnZU9mUWEyZWdkTmVIZmxnd2h0Y09kbGVGYnFnVmZ4ZDViZWFJZERlSWNZYVpjeWFwY2JjTWVXYTlodGhjZkZjMGQ3ZUVkZ2g1Yk9lRWN5Y29jZWVPZnpieGU2YWZna2YxZzZkUWNnY1pmNGhFZUdmUmhNYWRlbmZaY1NjUWRoY1ZmNGRkYmhlSmdMZUdiRWhOYlplWWJtYWhod2hlY0VlQWNYZ0FnUmdNZG1kZGNqYVFmL2FNYXlhNGRmZ1dmUWEwYVpkWWNGYzhnTmZKY2tiSWNkZkVlQWQ4YzZjVmZBYjlib2JDZVZhUmFRaEVieGJsZW1kTGVsaFllZGFQZ2plb2ZZYkpiRmFrYjFjV2FpYVlmMmFGYmdlWmU0ZUZjR2c1ZzNjZGEzaEJmWWRiZXdmNWNPZ0ZmQmFSY1plZWNIaFJncmZlZ21hTmNOZGFoa2dzZlBiVWVoZUJka2ZUZUhoWmUyZ1Vja2RJZlZnZWFIZjVjR2VBZTFmRWRRZ1ZkeGgwZCthUGN5Y2RoSWVYaGtibGdTYUlnVGFBY0NjSmNIZlFjV2ZHYXhlWmZIY0djWGFRaFhlUmVUZXNnWWFFYzJobGFIYVpjUWhaYlNnZWd3ZEJoQmJYYkdjMGdRYVpobmdKaFdlRmZXaHBheWRVZlhiZGVYYlNoaGJaZXBjWWRSY1liWWVaaGhmUWMwYlpkamEwY3NnVmRXY2NhT2ZEYzFoUmdPYldleWMwaDhkSWdqZjBocmRUY1doeGFXaERkMGJRZUZmY2dWaDljamVmaDFjdGZPZ1BhM2FoYjJiRWZraHNoWWdRYzFobGFpYWNlbmRCYndkU2ZFY05oSmREY2plMGV4Z0dmRmgxYjZoYWFWZ2RlWmJFaEJhbGdvYkNjMGhWZnZmRWZSYU5nbWRYY0Zoa2dUY1JkMmJnYlZjU2JGaEJiSGFFZUdoWmd5YUNmeGh4Zm1nV2hGZkZiM2JWZDBob2FXYmFiV2RFZldiR2NHZFljY2NMZG1mZ2V4YUljaGNvYzdhRmVSZE5mRWNUZVJhQmZjZkpoaWZRZnVnSWNoaGtndmZKYTBhb2FVZFJkR2JSY1JjZGJqZzVlY2ZFY2thY2UzZEllbGYwYWZlUWJSZU1mY2ViZENiQWYvZEpmQWVSZURiVmNGZW9kemNMYlFoVWQwZUxjaWZBYVliRmV4Y0FmUmFQYkFnSmhGZE5nRGRzZlRoYmQwZWRnemFFZTBjZGNvYkZoVWFoZVFnUmR4YUFmd2dNY3dmUWVWaE9kSGZKY01oZGQxYjhiZWNYZGlnQWF5YkdkR2RjZHVkWGVTZUVhdWZZYVdleGFKYmJiMGJ0YlJjRmhCYzBhSmJVZGllQWRqZU1iemNCaERhRmJRYWRhQWNCY1FmdGdPZ1RhSGJaYzJmVWhrY0lnVmJlY0hjWWVTZ1NneGZoaERmQ2F5YmNlbWdKYVNiSWZHZ1FkMGNGY3diZGRYaGhnTGFkZTNjcGFwZlZmMWdraFFjR2hXZWdoTGFSZ1dhOGNaaFFnV2I5ZGFoY2F4Z3NnVmhhYkFjbGZVY1VlQmNNZ1pjWmJpZzVoV2VIYlRjaGF5YlRhMmVsZ0pnU2ZoZzVmNmJjZHhiWWVWY1pja2VCZ3ZmYmEyYmhlOGNmZDJkOWhhZlJheGEwYWRhVmFWYUpoMGdhZDNocGJqYVRoV2VwYkxlQmN3YVpmWWVMZ1JoOWQ0aENkUmU0YU5mUWNuY2hocmRFY2xoMGZOZFZha2hwaDNjY2VuY1pjd2VHaGtmcGNGaGNkSGNWYTRiU2QzZ2RlNmNhYVZkZGFaZkVoQmJsZG9lQ2EwaFZmdmNHZVVkY2JuYkRhaWZBYmRjT2FDYkJkY2FEZXhnaGhIaERoV2VZY2dmVmNnZnRkMGJiZ0ZmRmdtZ1FlVWJNYmFlUWcyYUVlV2FHY0djWWVVYVphbWdaZWhmY2dGYlZldmhXZmtlY2FkYVNkUmMwZ2JoSmMwY0ZlNmZZZDBkMWFxYVNld2U5ZlNlRWdHZ1JiTWVkaG5hWmhiaFdnVGI5ZzRlZGJoYkplTGVHZUVlTmJaaFllbmZKZHdiTGJVZEZjUGdZYTFmcGgxYWVoRWF0ZTNhZWVtZGxlWGZXYlJmQWFSZUliQWFVZlZmUGdWYzVkSGFJY0JmTWhxaFFjd2dKZ21hUmd3YWNjRWdCYmtoUWdqZEFiQmM5ZVNjSWZpZ1pmUmZhYmxiY2FDYUdiRGRrYnpoV2dVY3dicGhRY0RlOGMyZ0pkSGc0Z0hlSWFBZzRjVmNIaFFmQmRWaEZiQ2RFZWxnT2dUaGNnRWZKYlFoVWZQZldna2NSY3RhVGZDZzFiY2dVY2tlSWJWZ2VlSGJZZ1NnU2h4ZGhjRGhXZVdhSmZ5ZEpiamZFZGFnUWJ4Y3RhYWRhZ0hjaGVEZkliemVJYWdmQmRGZGRldmRVZFNmRmJNZkRlV2I4Yk5iRGYyYzloV2FaY1JicGFIYU5hQmhVZmNmR2NBYTVkRGFhYkFhMGNhZVdkamMxZXBoZWMzZGRlWGZTZGhjWmZwaFllUmVZYlliWmFoYlJmbWdaYWplTWExYUFoVGhvZkllQ2RSZTBiVmFmZzFkSmMwZ2FiM2ZwZGphVGNXaHBiTGVEZzFiSWJRZFpjRWR4YTJnZmZnaEJnQ2RDZkhlaGMrYVFlRWVzZkdoWGRVZGRlaWVKZW5ibGd3aEZmRWROYkJmQ2RIZlZla2VWaDNhZGd5ZmVia2RWYVpoSGVSZWtoOGFBZ2tieGRtaEhjVGRsZHZlUmEzaE1lVGFSYTJiZ2FWYVNhRmRCZUhnRWJHZ1pheWhWZ2hnMGYrZU9laGFnYmtmV2hUYlZkYWdKZmphWWhXYkJlV2RZZkNoY2YzY05ieWFaYlZhVmJwZldhaGdVZlVjRWRYZzloU2NkY0dndGE2YllnMGIxY3FhU2V3YjlmU2ZFY0dkUmRNZWRnbmU0Z0dhQ2ZsZXdlcmJlaEdlMGNEYVVjUWFRaFJiWWRtYjlid2FJYmtmaGJkZVZkMGNSaDFnYWJWYjFiK2hkZWtiTmdYYVdiUmNBaFpnYWRBYXRlRmNiZXhlRWFUZGJlMGRkZHphRWV4ZE1lZ2dYYUJldGQ2YVJmeGJCZ21oY2VsZ1lmVmZhZG5oSmRSaGRkMWdkZktoSGYzY0pmTGdGZWhlaGJtZ0ZjR2NaY21lWWNYZEJiVmZiZ3dnZGhPYUVlVGJkZFZmVWJuYlJkcmZlaG1jTmJOaGFia2JzYlBiV2FsZGhjcWFIZENjUWU1Y0JnZ2ExY0JhSWhTZVpmWGFSZ1Zlc2RQYUZkaWF3ZzNiY2FHYjFmSWNCY1Jmd2FVZk5haWF3YkNkT2ZEZFJkcGRYYjFnQWJRYlFja2VJZ0xlUmNXaDhhUmdFZzJlOWFIY2NheGdOZUhjYWFCZ1VlYWdGZ1JiTmFGZ05nRGJ4Y1dlV2R5ZDhmbGRVZlRkOWdmY0hobGU0Z2djTWdoZGhlbmVLY2xmc2J4ZWFjbWFFZGthSGRTZVlkSmJTZVdmSmNWYkhoQmNVZjhhWWhtYUZkSmRUYVdhcGFMYURmMWZJZVFkWmdFZ3hmMmRkYmdnOWJMZEdmVmNKZTJmRWNrYXNoWWZRZDFhbGNpYWNlbmNCY3dkUWRBYnBiSmVSaDNiVWdEZk5kbmE1YTJjUWQxZGRiWmNFZ0JkbGZvYUNiMGJWZXZnRWhSaE5mbmZBYW5hTWRPY1JheWM1Z0FhQmJoZ01mVGVXY1Nka2M4ZVZjaGcxZWpiY2JnYXBhZGdWZzBib2NXZGFnV2VFZFdkR2JHaFllVWFaaG1hWmZoZElhaGNBYjdlRGV4Y1ZnVGJIZ1JoMWVKYlhkbWV0aDZkWWEwZTFocWFTZ3dmOWJTYkVoR2JRZFJnZWNEZmNlQ2NFY2xma2RoYWZoa2FCY0hnR2hBZHBoUWRhYjNjNWdhY2NjRWJoY0RlU2VWZHBiMWdlY0VldGIzYmVkbWRoY2ZlRGIxZjliUWFMZ0FndGVWaGJleGNBZ09mY2draGNlMmhFYjBoRmZ1Z0ZjVWdBY0ViU2hWZ1VmK2hJZWhobGdIYVBnaWZGYVJmYWRsZWNiUGFIYzJjQmU2ZFBoQmVoYm1oRmhHZ1pnbWNZaFNlMWJjZ1pld2Y0ZVBiVmRFYTVnY2JTZlZnNWFyZmVobWJOYk5hTmIwaGNhbGFVaGhhQmNraFRoRGJBaGpmSGFBZkZiQmJNZFRjbGVjZ1NmeGdBZFhhVmNXaEllZ2JlZVhmQWhUZWFoVWVsY2FhZGVYZmhoTGVkaHlmd2FvZ0JiVmZsZVpoRmFXZ2hoT2dYYmtlVWRSYUVoMmY5Y0hjY2V4ZE5kR2VZZUZnTWZkY0hjZ2NSZEVkTGV6ZjBjWWFGZldmSWI5ZVdoSGhjY01jWWFCaFplcGNZZlJlWWRZZFplaGhSZG1kSWJEZlFmK2VGZWpnc2RUZ0NlRmhNZmRkSGJWYW9kZ2haZTNnb2J4ZlFhV2NvaENlQWcxaEpjVmJiaFVld2N0ZVhlRmdKZUNkRmJYaGhkMmJFZmtkc2NZYlFoMWZrYndnTmZ5ZFFkbGNHYmdjMWNKYURmamEwZXhnR2hIZmNoemVKZndoUWVOY1VoVmZjY3JmVGVnZG9jcGJFZ1ZjdGhGY1JoM2ZNZlRiUmUyY2doVmdTYUZjQmZIYUVkR2RaY3llU2JSZlZmaWdlY2dkVWEvZkhkaGdrYVlhT2V5ZFJmYmJXZ1NhOWFhYUllaWJNZ3piY2ZFYmhmdmVGZ0JjSmZSY1VkVmF4ZWVlWGZtZ3RhNmNZaDBmMWdxZFNjd2c5YVNiRWhHZVJmTWRkaG5jWmVTYlFnRWdZYXNmSmdGZnNkRmNYYTBhRmFaYmZkMmQ5ZXdkSmhCaEVoVGREY0JmVWd6Y2VlQmY5aGRiZWRtZmxmWGVXZ1JoQWhaZ2FoQWh0ZEZmYmR4ZEVjVGRiYTBhZGF6YkVlMWdoZm9mVmFFZ1loVGNCYmxid2RxZmVkZ2NKaGRoSWR5Z0ZkZGZkZ3dmTmdHYUZmamd0Zm9hUGZCYWhnbWhGZUdiWmJtZFliWGdCaFZhYmgxZnBlSGZIYlJkMWNWYVVhbmJSaHhnZWFtY0VlWWVKZEFkOWVLZ0ZkRmhraHFlQ2FUZkpmMGRVaGxjOGdJZGVmQ2FKYkxnR2QxaDBhTWNIaDJhSWFnZVdibmRCZUlmUWQwZmxnYWRkZ1hhaGFMZGRlM2FwZHBkVmMxZ2tmUWJHY1dhZ2NVYVJhVGF3ZmZnVWZDZzRoTGFQZ3hmc2NUZkljRmd3aGJkWGhFYmRoRWRiYzFmaGJXZkZkV2dwY3lkVWRYY2RnWGRTYWhoWmRwaFliUmZZY1ljWmdoaFJobWdmZkdoRWZtYkdoaWFZY2VoUmIxY01oVGZGZkFiSWhrZkpjeWFOZXJlR2FTZElmQ2VYZEZlNGdRZkpiUmU0ZHhmSWh4ZDhoSGNXZ3ljd2FsZkdjMGhJZ3lmUWExZWxlaWFjZG5mQmV3YVNkRWZOYUpiV2duZVZjNGhVaFhmY2MwYkxhQWJCZ1pmV2RCYUVkOGZCZTBmVWI5ZUhmUmZNY21nU2YzYU5jV2ZUZW5nTWcvaFNoRmVCaEhjRWRHZFpjeWdWYWhhVWczZldkRmNGYzNnVmUwaG9oV2VhZ1dhRWRXYVhhamdOZ2FoSmVUZUlnb2dQZXhldGh2aEZiRWQ5Y0pmRWJWZlVmQWJlYUdic2h6Z2JjMGgwaHZnUWJnYjhmSmVPY21hUmVNZmRjbmRaaFNhUWNoZFZjNGRkZ2hmSWdaY1hoUmJjZ01mTWJEaHhnd2NjY2hnMGNOY0RiUmE4YXpjTWhRYVVleWZQZ21kdGNYZFJmQWIwZlphUGVGZUljVmJLY2xhNWFWYmJod2E1ZlpiRWIwY2Rnb2hGYVVhaGRRY1JoeGFCZW1iY2JsaFlkVmJkZVhlSmZaZGZhd2FNYkNnWGF6aHBldmFhYlZmbGEyYkJiR2NaZDdiWWZXZlpoQWdlY2tmbGNTZEhnUmJ0YlZoQmhuZTFobmFVaEdiTmVOZGFla2VzYVBjVWhoZEJla2dUYkhhWmgyYlVia2NJZFZkY2VDY0pmYWFBZ2thdGJOYkphaWZOZ2pjWmNuY0JnVmJRaHhoMWRhZWFlMmJaZFZjZGUyZXRkL2VYZ2xhVWY2Y0dkV2ZnaExhUmdXYjhmUmFFZDJlOWZIYmNleGFOY0hnYWFCZVZoQWZCZUFnOWZaZE5jWGN3YXBkVmFIYmxhZ2RVaFdlcGVYZVhlQWROZDhiY2NnaE1mWWRZZkJkUWgwYmJhMmYxYWFjVmZXaDljYWJSZHhiMGVkZlZlVmNKZDBmYWYzYnBiamhUZldicGZEYldneGdwY1piTmMwaEliSmdOYTBhWmJhZEZhV2NWZTJoUWRFaHNnR2VYZlVkZGVpZ1loMmdaYzVjUmJHaGxhSmhXYm5mVmM0aFNkM2NkaDZhYWdWZmRmWmRFZEJmbGhvZUNheGFFaG5oV2NFYkJobWdiYlhoTWNUZlJiMmVnYVZoU2FGZEJiSGhFZkdiWmJ5Y1ZkZ2Y5Z3FkZWhsZmtoamFIYXdoTmVGY1pieGY1aFhlQ2ZIZFllVWJlYjJoWmN4ZWNoQWhsZHZlRGFraDRnUmVOYzFiVmZTY2RoR2h0ZTZjWWEwYzFjcWJTY3dkOWVTYkVhR2dSYk1nZmNpY0lmYWJDYjBnWmEyY0NlVmJOYWFhRGRraE5nRWdZY21nSmV3aExnRWdnZFJkUWdGY1phZmdlZkVldGgzYWVnbWFsYVhhV2ZSY0FjWmJhZ0FodGRGY2JleGFFaGJhT2d3ZzhhNmhRYUVma2VYZ1ZlRmR0YUNiUmZ3ZTFlbWNZYWxkWmZKZ2FnamF0YVloZWgzYzFhS2RGZW1nbGhoZUZkaGJoZW1nRmFHZlpkbWdZZFhmQmRWZmJiMWhJYlRkVmdWZlFhR2hYaEFnc2FxYmJhbmJ0aE5nZGgwZHNmZmRVaGtheGZrY0NhWGI5YjZiZWVFZkliVmVlZUhhWWRTZ1NkeGdoY0RjV2NXZEpieWRjZEhmQmNJZ0Zod2VFaFRlSmRuYkZlUWdYZVhmcGhwY1ZkMWhrZ1FnR2hXY2djTGdHYUVhVWNSY0VoMmQ5ZkhoY2h4Zk5mSGJhZEZiTWRkY0hlZ2FSYUVoTGd6YTBhWWZGY1RkbGg2ZEJnWGI1aFhmRWdUaHhhcGVZaFJoWWVZY1pmaGhSYW1oWmVtaEZhd2RCZ3lhb2dPYkVna2c5YlRiVmdWZXBjZWZhYjNmcGdqYVRhV2VwZUxjRGQxYUlmUWVaZkVieGcyY2ZoZ2ZZYktnWGZDZXRlNGZiYlFlb2NJYVVnMWNsaC9nY2FtZVplbGdYZ1ZnQmhjY1dlbmZOYzRnSGIzaDVkMmFRYzFlZGdaY0VmQmRsZG9mQ2MwZFZidmRFZFJnTmN2YVJjM2Z0Z0hoRGZ5ZkZmR2JSYWlmOGdHY0FhWGNCaHljU2J4Y1VhK2JjYmtnOWZwZ1NkVWNvZEhiZmYyZGdjYWdNZG1mWWRVZFpkbWdaZWhhY2ZGZ1ZidmNXZmthY2NkaEhiVmEwYUdmUGRDYklhcGhiZ1RnSWZyZ1doQmIxaFNnRGVXZlJkY2RmYzNmcGc0Z1FnaGZWYjRjZGRoY0piTGFHZkVmTmNaZlljbmZKZXdnZWJCZXdlTGZBY0FnbGQ3ZkJhd2NwYWpoWWhtY2xkS2VXZVFhQWRRYlpiQ2VGZ0ZjYmJ4Y0ViVGJiYzBoZGN6Z0VjMGhkaG9jRmZVZ2diRWNEYjFia2IxZFdoRmNZYlZmYWFuaEpkUmJkZjFkZGRLZUZmbWhsYW9kRGFUZkpibWFGZ0dmWmhtZ1lmWGdCaFZjYmJ3Y2RkdGFIZFJlMWNWYlVmbmNSZ3JnZWRtaE1nTGdQZXdlVmZNaEJnbGdraHJnQWRuY1lmM2dXZ2hnWWhaZWVkQ2dRYmJlU2YwaE5lcGJXY1dlSmF5ZWNnSGRCYkloUWEwYWxoYWZkYVhnQWFaY2RiMmNkaHBmQmJWaGxiTWVSZFdmZ2RhaFZiV2JZZGRlT2VXZzlnSGVjYXhjTmRIYWFmQmhWYUlmVWFFYmNiUWNaZW5ob2hDZVhoU2NNZGhjWGN3YWdmV2JXZGdiWmZwZWZlQmFZZEloYmZ4aGhoTWRaY21iRmV3ZlZiV2g5ZGFhUmR4ZzBlZGZWY1ZjSmQwY1loeWM0ZHJiQmREZWxiRmFjYUJiTWRCaGNla2d4Y3JlZGJrZEpjTGZHZlZkSmEyZ0Vna2FzYVloUWgxZmxjaWJjZW5nQmF3Z1NjRWFOYkJoRGdqZzBieGdHZUhha2VGZEtmRWhSZExlRWVBZVJib2RHYjBjeGJqZk9heGJOZHZiUmczY01mVGJSZzJjZ2RWY1NoRmhCZEhjRWZHZDRibWRIYWxld2g1ZmZiQ2E0YjJkUWYxZUliV2hkYUdnRWdHYkVnWGEwYytnWmhtZ1pkaGJjaEZnVmF2Zldja2djYmRiSGRSZE1iZGJKZW1hdGV5aFNlVWcxY3FnU2d3ZTljU2VFZEdmUmhNYWRlbmRaZ1NmUWRraE1nNWJKY0JoSWJDZEdmRmM1Y1pnTmV3ZGthaWFEZ1VmZ2RmY0ZlVmVvYjdkUGNSZnhnM2hNZW1lRWY2Y0dnRWJSZlJlWmJsYXNkS2ZPYUJlbGhCZFljMGFkYW1nR2NraDVia2dGYlFiMWVRYldoaGhCZTJiZmdsZFpnYWVhYm1oOWZSYklnMWFrZkdiVWF5aGNhbWZRZ2xiQmE5Z1BkbWRaYW1oWWNYZkJhVmdiYzFncGVIZ0hkUmMxZ1ZjVWVqZXRocmNaY0djTWVJaGNmV2NFZVBhVWNoYkJoa2hUZUhoWmUyZFVia2RJZVZlZWZIYVphWGNTZ3hhTmFlYVdjWGVkYVlkY2VIZ0JjSWFRaDBkbGNhZGRoWGhoZExnZGMzZk5kcGVEZkhjTWFRYkdmV2JnYUxjUmVXZjhmUmJFZjJoOWhIZmNneGhNZFJjS2dVYWRnSWRIYWtoY2NOaFplaGI4ZlhiUWhTaEpnOGFIZURhNGhaZlFmZ2ROYmxmWWFWYmtkWWZhZnhkUWNqZ2JnMmcxY2FhVmJXZjlkYWRSYXhnMGhkZFZhVmRKZDBlYWgzY3BjamJUZVdob2ZZaERnMGU4ZVFkTmNBZTBoa2hKY1JiY2ZyZFdkeWV4ZCtiUmdrY1ZmTGdEZHhnQWhoY05iM2VnYTFkUmRFY01mTWNXY25iNWU0Y0JlWGI1YzJkYWhRZlZlUWhDaHpmTmhvZ0NnMGZWZHZnRWJSYk5hdmZSZTNnTWVUYlJnMmRoZkJiQWJCZGthVWdIZ2loc2huYUdoa2VFYmpoSWNoaDBkdWVYaDFoOGJXYWRnMmZGZFliR2NIZ2tiVWNLY0NhTWcyY2NhQmgxaG5jTmZ3Z1pnSmdWYVZoc2JDaE9iemJ4Y3lkTWJVYkZhcWZCaFFhWmFiYUVmSGU1Yk1iUGIzYzljY2JBZzFkRWM4Z2ZlbGN3ZE9mVGMwZ01nUmdhYWllRmg1ZGVlVmhOZXBjU2hWYnBoMWFlaEVmdGMzYWVmbWRsYlhoV2dVYzBoemFhYkFldGJGZWJmeGhFZVRnYmYwZ2RhemdFY3hjVWh0Z1FlUmgwY0NnQ2VSZ0FleWVPZWhjOWFHYWNmVmVoYVJlZGgxZWRiS2dGZG1nbGNoaEZma2RWZ01kRmdHZlpjbWRZZVhoQmVWZWJkMWhvY1JnWGRFZzlnVmJCYzNmUmUyZGVkamJoZW5lYWRrZ3NhUGdVaGhiQmJrZVRoSGRaaDJnVWdrZkloVmdhZ1djQWZJZlNkMWFCYkxnTmZDY01lbWFPYUhmNGhZY0RiQmY1Y1NnWmdHZTViSGNkZTJlOWNnZ1hibGRVYzZiR2VXZGdiTGZSYVdjOGJSY0VlMmc5Y0hhY2N4ZU5hSGhlaFFoVmJTYlVnQWI4Z1liQ2F6Yk1kQ2RYYldlUWhpaEhnaWVCZmZoV2J3ZlpibGRZZlFoTWJSZWJheGFoY01oWmhtYkZkd2NWZFdhOWFhYlJmeGEwZmRjVmFWY0pkMGRlZFdmQmNqYUJjV2RJZG1hVGdnYVpkWWdhYWhhd2E1YkljVmdwYVFhR2VYZmhoamRHZDBiSWVVZ2FjVmNsZ2lnY2VuYkJnd2ZTaEVnTmFKZ1dkbmZVZGxnUmYxYzFlNmJhaFZnZGJaY0VoQmZsZm9oQ2QwZlZmdmhWZ3hhTmR5Z1JleWhnYlRiVmVuZDRoUGJTYkJiaGNQYkFkWGJCZDdlV2hoYlZmN2dZY2tkdGEzY0hnMGdJaEhmZWJXZmdnYWNHZUhkUWZPZ1piaWg1ZHBjWWVsY3hodmRCYjFnd2MzYUhkVmNWZlNkZGVHZ3RlNmJZYzBmMWNpZkFnd2FFaENlUWRpZ3NlWWJPZlNlSWRMY0VlbGJCZDJjTWZFY0FlRWhWYlNoRWhRYU5naWVGZndiYmNVZmdmTmJRZEZlWmFmYmVjRWJ0YTNjZWJtYmxkWGFXYlJkQWZaZWFkQWRNaE5lWWNVYkZmQmRJaEJlTWE4ZVJkeGc0ZDRmVWhFYllnV2ZGYlZoOGNyaEhiQWdOaFllS2dEZGNkRGNkZTBjcGNLZlJmV2hCYXRkUGVCZGhmbWZGY0dmWmRtaFloWGFCYVZiYmQxZHBkUGhWYlJiTWJGaEFkRGRzZi9nTmRUZGNlVWRPZGdoNGJCZEZmRWdJZnJoQWZRaFVmaWdBZkFjdGhiYlBiM2hZZVBhU2QxZWxlS2hWYlVkaGZ5aGNkSGVCY0lnUWUwaGxmYWhkY1hnaGhMaGZnemNKYW5hQmd3Z3RkZmJUYlNjZGRmY0hhRGE5ZFVlSGVUYnNlSWNIZlVmWWdLZkthbGhBYmFoVWdGY29kUWRJZUNmY2NZaFZlamI0ZTdhSGFqZWxlWGhRaGhjOWVwZE9lamF3ZVlkWmdoY1JibWVaaG1hRmV3ZVZhV2c5Y2FhUmJ4ZTFiUGhFZEFhWWFoZk9nVGdSZGplV2YzZTljZWZIZUVoUWdRY2Jia2R3Y2lkUGZoYXNnUmNHZHdnY2gzZEFoMWEwYVljU2VGZGtoMmRPZGpha2dqZVJkamF3ZEljU2FtZ1ZkamdZYlhjZGY2Z2FiVmRkaFpiRWRCY2xkb2RDYzBjVWR5aEdhQmY5YUZnUmYzZk1kVGJSZDJkZ2hWZFNoRmFCYkhnRWJHZTRlNmRXZUVmVWE0ZlBjUWJVZzRiQWR4Z05nR2hMaEdlOWhDZlZkeGRWZkFiTmVDZThodmZOZDFoVmZ5Y1djZ2hGZ0lkVWR4Z1lkR2dQY1NhUWUwaFlnMGZVZStmUWZnZThmSmNPZ21hUmVNZGRjbmNaYVNhUWdoZlZjNGRkYWhiSmFMY0dlQmhkZlpnZmczZ0lha2FjZkJjUWVmY1NmVWZ0YmxnWWEyZUZiM2RlaG1ibGRYZ1dnUmRBZ1plYWVBZHRkRmViYnhmRmVGZExkaGVWY3poUWVVZGRlMWZGYlFjNGhyY0VmMmQxaG1lTGFnZm9lVmdKZ0RnY2dHY2RkeGU5YUNiUWVtZkJlNmJQZkJhaGdtZUZkR2RaZ21oWWZYZEJkVmRiaDFjcGVIYkhlVmRRaFRkVWduZ3hlcWRMaGlhc2NFY09jVWdWY0lmQmJoZWdkMmNSZFhkOWIyZUFkQWVkZkJnTGhTaFJmY2VTYTBmd2JMY0VjRGVGZDhoSmNEYThjbWRGY2dkUWVZZU1nQ2FwZURhZmduZlFiOWVHaENmcGdFZFNkeWFGZkZoQWJtaGRjRmdHYW5hUmR0ZGNneGdOYUhlYWFCZVZiSWhVZ0VmY2JRZVplbmFKYldiVWV5Z1VjZ2dVYlhiOWE5YVNhaGhaZXBhWWVSZFlhWWZaZWhmUmFtYVpibWZGaHdjVmdXaDhhTWVCZGtiOGJkY0hjRmZKYnBjYWh5ZjRocmFCZURjbGJGZVRlQmg1Y2ZhS2ZnZGxlK2FmZzFoNWJDY1VmSGRoYXJhRWNnaFZmZGZGZkZka2dEZUllQ2hJaHhlRWFVZXRlZmRUZ25meGcwYlNnemJoYjZoZGVGYmRnUGVBZXdjSmNDY0NnMGFWY3ZnRWhSYk5hdmRSaDNhTWdUY1JjMmZnZFZlU2ZGZ0FjSWhFaEhoaGd2aFZoZ2VWZ3FjZGRGYmRlZGZWZTBjb2RXaGFhV2VFZVdlR2JHaFlhVWhaZ21nWmVoY2NnRmNWZG5nRWQwZmxmWmFWYUFoTmhhYUpobWZKYTJiWWMwY1VkdmdNZUVlQWR2ZUVnSGZsYU1hUGMzYWdnQWJCYTFmZ2U1Y1BlMWN3ZlBkWGRSY0ZoWGVOYmphMGZlY0pjUWVVZEJnRGdBYmhnOWVjZVVkVWhqaE5nUmdvZURlQ2IxZmxiWGFMZndlTWhSZ1pkaGdnZ2ZnYmh3ZjViOWdWaEJkTmJnZFJkMGdGZVpiWGNEaHBhbWJjY2xlWWVWY2FjbmZKaFJlZGExZmRiS2JGaG1nbGJoYUZmbGhkZ3JmR2hVZXhibWFZZVhiQmNWZGJmMWRwZUhhSGJSaDFmVmZVYW5nUmFpZVlkVWJsZE5kYWNrZXNhUGdVZWhjQmNrZ1RkSGNaYzJoVWRrZ0phSGFQY1NkSmdIZEdhVmJaYkRnVWJTZ2NjSmJQZTNhQmdGaFFiMWNnYW5jZGJXZFZhTGdQZG5kUWY5YUdiRGNkY0ZnVmdDZnBjT2FGYzJmY2hZZ0hjVGhzY0lkQWNFYWNiVmNJZlZkc2hQZldlQmRNZ1poYmUzZjVkV2VVZkdjUWI0YkhjamY0ZlpnUWRoaFJmcmZhaEFnMGZ5YVpnaGdSaG1iWmVtY0Zod2dWaFdlOWNhZFJmMGJBaFVlV2dYYWhmMGJhZDNmcGhqaFRmV2FwaExkRGIxZklmUWRiZEFjUmY0Z0phZ2JBYk5oUWdUZWNlaWVTaHhkdGVkY1RiUmNnZW1kTmhuZEJldGNTZ0FiVWVjZUZnRGJZYXNmQWdqYWdhMGdhZlZoOGdOYkdlUmVrZ3poSWRVZlZidmRFYVJhTmV2aFJoM2VNY1RkUmIyY2diVmVTaEFhWWNHaFFmbWdZZGdlVmVnZmhmcWJKYWhla2YraEJlRWNSZHBlS2dIZEViR2FHZEdiMGNVZE1jbWFnZGVkTWJVYVZoL2VWYm1mMGFkZ0hhVmZWY1NmZGhHY3RoNmZZYTBkMWNxYlNhd2E5ZlNjRWVDZjFjTWJhZzNoWWVBZFFmZ2F0ZW1hYWRCZkpnYWREYmxjaGV6ZlllbmdKZXdmY2VFZmhmRGJTaFZjcGcxaGVjRWV0ZDNhTWUyYmxlY2NSZ0JlQmdOZUlmRWNJZVdjWWdXaDVkU2NmYmxoRmJ6Y0dlRWRjZThkR2Z6aGNhUmhWYmdlWmg5aFdiRmVZZVZjYWRuY0pnUmZkaDFkZGNLaEZobWhsZGhhRmdrZjRmbmRSaG1oWWJqaFlmV2gxYVZhSmJsYnBmWmVBY3dlTmdWYlFlMmhKYndlVWNHaE5iTmRhYmtic2FQaFVkaGZCaGtkVGZIZlplMmZVYWdhY2dWZGNiMmFzZFNjSGUxZ0FmS2ZDZm1od2VOZE1hV2FOZWFhUWUwaEpjYWZJYlhhWWYwZ05hbWFsZzdlVGVIaE1hUWRHYldhZ2RMYlJoV2M4ZVJjRWQyYjllSGFjY3hkTWZSY0tmVWNkY0ljSGUwaGNhTmRaZWplZGVXZ0NlM2VSZHNiVWJXY1pnQmNVZlRheGdwYVlnUmRZZ1liWmJoZlJjbWFaZG1kRmZ3YVZhV2U4YkljQWZrZWxhSWRCZHhleGcwYlllMWJCZGpnVGhXYnBjTGNEZDFjSWhRZ1pjRWZ4ZTJhZGRsZ0pmQ2NGZ1hlQWE1Y0Via2RBZUZiUWZ3YTBncWhPaHlmTmYrYk5id2VKYWRiUWhuZlZmemZTYnlnTmQwY0ZnaGFaZ05jQ2VCZUJia2FJZlViVmJ2Y0VlUmZOY3ZjUmUzYk1jVGZSYzJnZ2NWZlNlRmhCZUhlR2REZUlnNmNIYjBhWmNrY0RkUmZCYW5kUmUwZ29oTGNhZFhlY2JEZkRnWGVVY0JjWmFtZUJlaGVJYmxoeGRqaGNmRWVjaGRkSGZWZlZhU2JkY0didGg2YllmMGIxaHFlU2F3ZDlkU2JHZERiQWhFZlBoeWRWZWNkUGNWYlJjcGJZZEJlSmZXYUdoRmJWYk1lZGgyZkZhbGdjZ0VjNWVEYUFmRmFOYjVkVWJrYXRoM2JlaG1nbGVYZVdlUmJBYVpmYWVBaHRiRmZiaHhnRWdUZFpkeGhNYTdoV2NoZFJibWZhZGdnbGZEZ1ZkUmRCZDdoY2JrYUFoQWRmaDJjRmZFZGRnMWZGZUtjVWgyYUJmdGRQYkJnaGRtYUZnR2ZaZm1nWWRYYUJoVmZiZDFmcGdIZkhiUmgxY1ZoV2JpZEFjamRNaHpkQmJEYUZmUWJvaGJkU2JoaEJhNWZUZ0dlQmVqZ1JoMWVFZkFkZWdIZUFlU2hCZUJkRmVQaGNiMmRKZHljY2RIZ0JoSWJRaDBkbGZhYmRlWGdoZkxnZGUzaHBhcGVBYnhoRmZaZlNha2ZJYUxlUmhXaDhhUmZFYTJiOWdIZmNjeGROYUhkYWdCZlZlQmdTYTJnMGZRZ1pjbmFKZldoRmFXZXBkeWhVZVhhZGdYZUZmeGM5Y2xnU2R4Z1lmWWNaaGhiUmRtZ1pibWdGZ3dnVmZXYjllU2hEaHhiTmJOYkJleGgwZmdnSmVDaDRhNmhIZVNlOWFGaFhoQWJkY1NjTWdCYzRlM2hOZ1FoWmhDZUNhSGVnZXdnUmJ3YlZoYmdGZHhoQWN0YVBhSGZCYjRjSGNFZXBiSmdBaFZjOWY0ZlNjM2dkZjZoYWhWYWRjWmRFZkJnbGNvYkNoMGZVZzllVmRFYmNjNmFGY1RmMGVUY0VneWNCY2NkR2YxYjRjR2dWZENlSmI2YkFiaGJzY3BhUGNoZjRoNWJFZGtiSWZmaFpkeWI5YVRlWGR5ZGRhQWFJaDJlNWVvZmViVWE1YkZjV2draGNjZGZIYVZjVmZTYWRmR2d0ZzZhWWF4YUJlamZSY3liVmZTZEVnR2hSZk1nZGVuZFpoU2RRZWhnVmc0ZWZhbGVwZEZoU2JCZkVkV2NOZmpoMGJrZ0tkUmhnYUdkUmZ4YWNiZ2hOYkJmOGErZUtlaWFVYU9hV2dRZzBlWmRMZmxmNGFMYUxmRWFWYmFhSWNBY2xiemdHY3hkTmNoZkZnUmdOZzZnUmR4YUJobWFjZWxiWWVWZWFlbmZKZlJmZGgxaGRhS2ZRZENjZ2R6Y0Zha2ZwZ21iQ2RXZVlkeWJLYlRha2FHZVliU2JVZ0dhRGFRYjFmWmhlZUhhUmNyZGVnbWhOaE5jYWJrZ3NnUGFVY2hhQmZraFRiSGFaZDJmR2YwZ0ljSWhlZkNiSmdhZEFma2F0Z05jSmVpZU5lamdaaG5leGVpZVFjMGdsYmFiZGVYY2hlTGVkaDNlcGRwZFZkMWhrZVFnR2VXZWhkT2hSYVhnSWNSZFJoeWZjYk9mSWZCZTBjNGFLaFFlWmdhY1hkR2UwY1FlWmFuaEpkV2ZGZ1dlcGd5ZVVnWGRkZVhiU2NoZlpmcGNZYlZka2RZYmVmeGVRZ3lmTGVpZmdhamNXYXhoQWhiY1Vid2hVYlJjZmcxZkpkMGJhaDNjcGVqZ1RhV2hwZUxhRGYxaEllUWhaYkVjeGYyZlBibGJKaGZlRmVTYXhiNGViaFFnb2ZJZVVkMWNWZkloY2JuaEJid2RTZEVjTmhKZ1dlbmRWZzRiU2QzaGRjNmZhYVZkY2dYZ0VlQWJSZm9hWGEwZHNjUWRVaEFmSmY1YVNjMWVrZlRhUmYyZGdjVmdTZ0ZlQmFIZkVjR2FaY3loVmVoZFZkcWVjYWdiSmMzZ1Noa2dwZ0NlWmJ4ZzVmWGZDYzNnUWRZZ1RnR2VaZ2hlY2FGaFZkdmdXZWtnY2hkZUhjVmFWYVNmZGFHZ3RmNmNJY2thMWgzY1NmMWZ0ZWNmYmN5ZVZmWWViaG5mcGQ0ZVFlaGZWZDRnZGFoZUpmTGVHZ0VlTmFaYVlmbmZKZndnY2FFZWdjV2VTZFVjZGYxaEtla2Z0YTlhZWNpZ0ZkYmJjY3hnQWVaZGFmQWF0YUZkYmN4ZUViVGdiYTBkZGR6YkVoMGRkYW9hVWQwYmhiTmFSZTBoVmJtZ2JoRWZnZExkYWFtYU5oSGhiZEhjMWRLZEZobWFsY2hjRmVoYWhjbWhGZUdhWmRtY1liWGZBY1RoYmMxZUZnYWVIZVVlOWhWY1djSGhRZWxmWWVVaGxoTmJhZ2tic2VQZFVkaGdCZmthVGFIY1pnMmVVYWtnSmNEYk9mU2JRZVNhQmV4Z2hlZWRXYlNhUmR5YWJhbWI1ZFdkUWIxZmhnTWJiYmxlSmdMZWRhM2RwaHBkVmgxaGtlUWRHZFdmZ2dMZFJmV2g4YVpjVmNXZzljQmhiY2hiTmhSY2ZlUWZCZmJnUmhVYTRiY2FaZG5ob2VRaEZkV2RGYXZjVWJUYzVoWGVRaEJlWWVoZ2FnQmFvYVlkYmdsYWhobWRiZFhjeGR3ZUVjMmM5YUViV2dRZ01jZGNSaEVoUmM5YlpjM2hwaHJlQWRXaHBnQWNFYmxkSmNDZFpjRWVaYzJhSmFWaHRmWmdQYTNoaGcyZUVma2ZzY1liUWQxYmxlaWJjZm5lQmh3ZVNmQmhVZElnQ2dIYlVmN2RTaDJicGg2ZkpoVmVkYUhhRGNnaGRjb2hHZWxlTmQwY09jeGROZHZkUmczaE1mVGFSZDJkZ2FWYVNjRmZCY0hnRWREYlFnM2hBaGthQWQ0YVBmRmhGYi9iZmZVY29lV2ZhZldkRWJXZEdhR2ZZZVVhWmhtZ1piaGFjZkZoVmJ2ZFVmZ2FzaGRoR2cwY2hnU2FZaG5hNWh2ZGNkRmdoZ2poUmZ5YlZnU2dFY0dlUmdNZ2RmbmVaY1NmUWJoZVZhNGhkZGhmSmFMZEdhRWVzZlZoWWJuZWxidGZjY0FlRmdEYlFhMWFvYTdhY2ZVZGRiZGdlY21hbGdYZVdoUmVBZlpnYWJBZnRhRmNiZnhnRWdUZ2JiMGFkZzdlVWdFYWRhamdDZ0VkZ2djY1Jhd2U1ZDRoYmRGZFllRWRmZUhmdGNkZlhiVmFkaEtmRmNtaGxmaGJGZmhhaGJtY0ZhR2daaG1jWWNYZkJnVmNaZ3hmWmFIY0dhd2JCaFZlUmZHaEZhK2FhaFhhWmJFaFpibWdFYVBiVWVoZUJha2dUZUhlWmYyZFVia2dJYlZhZWVIZFloU2hTZnhoQWFQYVdoV2FsaHZnY2FEZ1ZiSWFTZVVla2VTY2ZkSGZSZmhlZGUzYnBncGZWYjFka2VRYkdiV2JnYkxmUmdXZjhjUmdFYzJlOWFQZE1mQmJOZ01iZGFSaFVhRWdVZEZoa2hPYmVhSGRKZkhhQWMyZk5jK2hlZTNkZGFYYlNmaGhaYXBiWWNSYVllWWdaZWhmUmJtaFplbWZGYndoWGZTYXhkYWdUZ0FiQWJkYkJkMWRKZytmYWd6YXRjcWdRYlVoQmRMZkRiMWJJZlFlWmJFZ3hiMmNkYmxhSmdDY0ZkWGhoZDJmRWJraE5nYmRRYzFhOWgvZWNibWJaZWxkWGVWY0JnY2JVZzNkbGRTY1NnM2FkZDZjYWJWZGRiWmFFY0JkbGZvYUNiMGhWaHZmRWZSZk5kbmhCaEhjTWFZZVdhbWNoYWNkU2RGZnBoSGhRZzJnOWYrZGZmQmNWaHFmY2ZsaEZkM2FWZTBib2dXZGFlV2RFYVdjR2FHaFllVWdiYmliVmdoaGRna2doZnZmVGdGYUliSWREY2tjQmJiZ2ViRWdGZzZhWWIwYTFlcWVTaHdjOWZTYkVnR2ZSZk1hZGNuZlpoU2dRYWhkMGI3ZGRoaGJsZVdmR2hBaFpkWmRhZkhjSWYrZmVoVWhSYnBnU2JWZ3BoMWFlZEVhdGYzZmVjbWVsYVhlV2hSZkFnWmFhYUFndGdOaExmQmFFY1ZiY2RrZ2RhbGhCaGxjSmQ3Y0FjRWhGaGNmYmdSYUJlbWNjZGxlWWFWY2FnbmRKZ1JiZGgxZGRhS2ZGYW1nbGdoZkhnbGF0Z21lSGUzYXRobWdMaG5kQmhmZ2JmeGhKZE9hRWFUZGRoVmJVY25hUmhyaGVobWVOaE5hYWZrYXNiUGdVaGhjQmJrZ1RnSGM0aGliR2ZnZ3RmR2ZkY2dhbGZUZVdnd2FoZkRhUmNHY0pna2JaZFdoVmJiZVZoa2NsZ2NkZGFTYjFkQ2RlYzFkQmhwZlZiMWFrYVFlR2ZXYmdlTGZSZ1dnOGdSZ0VmMmY5Y0hlY2J4ZnNoVGhJYkZjd2RiaFhkamdoZ1JmZGYyY1JoV2hDZkdicGFrZ1JmR2VKYUVoWGN4YlpjdmRZZVZiQWhSZmFmamU1Y21lWmFtY0Zld2FWZFdlOWZhZlJleGMwZGRiVmZWZ0pkMGNhZzNoSWgzaEJlU2FNZ1lmQWdTYTFmUmNkYjFjNWMyY2FnMWNKaFVkQWdHYTFobGdCYTBnc2FlY1FmeGdWZ3JoZmZsY3Bkd2JTaEVnTmJKYldmbmNWaDRjU2MzZWRlNmVhYVZlZGZaaEVmQmRFZzhnUWh3ZHdhOGNIYzJid2h1Y1VlMmNzaFRkV2dtaGdiRGhYZFVjVmZVYkJmV2ZaZzBmVmRsZVpkamZmZm5hdGQzY1ZmMGZvZFdiYWRXZEVlV2FHZ0doWWJVY1phbWFaYWhlY2hBaEVibmFFZ3hhUWgzZEhnVmhWaFNkZGZHZXRjNmJZaDBjMWdxY1Nld2I5ZlNoR2dYZTlibWNkZm5hWmNTZVFmaGNWYjRiZGdoZUpkTGZHYUJnNWZRZGJjbGRoZXdiY2hFYmhmRGhTZlZjcGExZmVjRWZ0YjNhY2ZpZ0ZkWmFDZVVmSmJXY1BlRWRRaFJlTmhrZ0ZmV2NZY1FoTWE2Y1JoVWJkZTFhRmNRZTRlRmdDYlZjTWV5Yk9oeGVsYmJkYWZuYW9kRmFmYmxmY2NSYVBkR2NsY2hiRmhoZmhmbWdGY0dkWmJtY1llWGVCZVZjYmh4Yk1kQmVIZFJmVmRGY1VhbWNsZjJkZWdqZWRnRGZGaFFjb2ZlZVJhQmhCZGloU2huY1phbWZVZmxkOGJJZWVjQ2NJYmNnTmJGZGxkUWFTZDJlSmYwZWRmbmRCY1liUWgxZlJoSGVkYVNleGdGZ0NkRGd0ZjliVGUxZEFmUWFRaGthSWJMYlJjV2g4ZVJiRWEyaDlnSGVjY3hoTmJIZ2FnQmFWZ0lkVWdBZDVkV2haZm5lcGVHaEZoWGFkaHZoVWJTYk5iWmNOY1ZlZGE1Z2NoUmE4Y1loTWFsZHdnMGdLaFRiWmZ3Y01jRGMwYUljQ2hFZjhkVmdWZ3hmWWE5Z1BkVGFNYXdlQmVDYlViRmNEZHhoQmhKZ1pkQmRZZnphSmFCYjFkQWJIZkdoTmFjZUVoa2VzY1lmUWUxaGxmaWFjZm5jQmd3Y1NoRWROYUpmV2ZuZVVieGJEZ1hmZGZ5ZGVkRmdkYkVoRGNSYWtiOGVCZlRmb2R1Y0FjUWhOaG1jUmR5ZUZhV2FFaHpjMWhIYkJobGZCYlBlUmRDaDRlN2FCZVJmc2M0Yk5ieGh3aDJjSGNnZVJkU2FMYURlTWhXY0JjV2haZWFnSWh6aEZlaGhPYUZjMWQvY1VkMGE0ZlJnSGVRYUVnYWNQaFRoaGRoZFNjVWMxYXFiU2V3YjliU2NFZUdjUmVNZGRibmRaYlNnUWhrZ2hmU2FkY2hkSmFMYkdlRWJOYVpkWWNuY0pld2JjYkVjaGFEY0FhQmF4ZjFiY2ZCZjliNWRQYlRlMWdmZERmVmVoZ1FnT2h3Z0piTWVSZlJmRWFUZGJmMGhkZ3pnRWQwY2Rmb2RGZ1VmaGRRYlJieGRCY21mSWdCYk5nQmVQZXljQWRmZWRjMWI5Y2dhRmdtZ2xjaGRGYmhiaGJtYkZmR2ZaZ21lWWhYYUJjVmhiZDFmcGhIYkhoUmJVZkJmR2ZqYzBjNGhkYkRmRWNJYkpjd2ZwZUdhSGJGZFFhaGFIZG5iWmZyYlVoaGRaZ2RhTWFTYVVhY2ZDY0ZlUWJNZkZleWJkYjZiZWFYYWxjRWVhY1VlbGRhZGRlWGRoY0xhZGQzaHBncGZWYzFka2FRYUdiV2hnZUxmUmRXZDhlWmFSaHloY2ZPZkllQmgwYjRkS2hRaFZiWWRVYkZmb2RRZWRobmF0Y2FhUGgyZnBkeWRVY1hoZGdYY1NmaGFaZXBjWWJSYllkWWhaaGhhUmRtZlplbWVGZzRoQWdTYWNiVGdGYUJhTmZpaEZoRWZOZ2lhYWMyZmRkamNYZVdlTmFIYUpmVmNJY1FhWmJFZ3hiMmhkYmxjSmFDZ0ZjWGNoZzJkRWJrYXNiWWJRaDFibGNxaEpoamNnZjVjR2MwYTBiMmNHaDJlWmZxY1NnMmJwZjZnZWRWZzVnVmFPZmhobGRvYkNlMGZWY3ZjRWdSY05ldmZSZzNjTWhUZVJkMmRnZVZnU2NGY0JmUGdSZ0NmNGI3YkJnUmRzaFZmTWIwZ1ZldmdWZDFmY2NXZGVlV2NnaGFhTWZtY1liVWFaYW1iWmdoYWNnRmFWaHZjV2NrYmNoZGdIZVZhVmFTZGRnR2JzZHVoS2Z3YVFoNWdZZFFoOWFTZEVnR2RSYk1mZGZuZFpkU2hRYmhjVmU0ZmRoaGRKYUxnRWJWZWhhemNZaG5kSmJ3ZWNmRWFoYURhU2hWYnBlMWZlYkVkdGUzZU1leWI5Z1hmVWRVZ1JiUmNJZlZiaGVMZ0toa2RBZmJiT2YwYjVoNmRPYlViZGdvY0ZjVWZoaFFmUmJ4ZEJkbWZjY2xkWWZWY2FobmJKYlJmSmdSZElkZWhRY3pic2F2Y0ZlaGdCZk1mRmFHY1pobWdZY1hoQmVWaGJkMWRwYUhhSGJSYzFhVmZVZ25nUmdyZ2VibWdzZ1poSWNnZUpoY2hYZEVoSWFoZUFhVGFjYS9jSGhBZ1poUWhLZm5nWWFQZlNjMWJZZEdhRGZtYUlmNmRlZUdkQmFCaFNna2hWZ3doZGdYZWhmTGhkZjNmcGVwaFZiMWNrZ1FiR2dXZmdnTGJSY1djOGRSY0VmMmJjY1RiT2MxZG9lVWJaYW1kb2hKYlFkRmRjYVFnZWIzZkpmSGVIaEdoWmVZaFVhWGRkZ1hlU2NoaFpmcGZZYVJoWWdZZ1pkaGRSaG1mWmVtZEZmd2JWY1dhY2NPZkRmMWhSZE9kV2V5aDBhMWZlYm1meGhqYVVlR2FwZ2JmQmRsZTRoNmVaaEVheGgyYmRkbGNKYkNlRmdYZGhmMmNFZGtmc2ZZYlFjMWdsZWlkY2VuZGdja2dBZEFkb2VhYlZhQWJvZjVnV2dHZFZnNmJkYkZjZGZKaEdlUmNWZUNmQ2IwZFZhdmNFYVJkTmZ2YlJlM2VNZFRiUmMyZmdiVmhTYkZiQmZIY0ViR2I0Ym1jSGNsZndnNWdmY0NiNGMyZFFhMWhJaFdkZGNHZUVlR2NFZVdib2UrZVpobWhaYmhmY2ZGYVZndmRXaGtmY2RkY0hoVmFWYlNkZGhHZnRjNmFZYXhia2FpY0FkbGN4YzRoRWZHYlJnTWhkZ25jWmdTZFFiaGhWZDRoZGdoZkpkTGRHZ0VnTmZRZmVjVmRoZ3dhY2dFY2hoRGJTaFZmcGIxaGVnRWZ0aDNkZWRtaGtmUmVGZWtkSWZaZlloRmYwaEVhUGJSZUZiQmNiZjFmcGF6aFJjMGZrZXJiV2FRY2NnZWJBZWhnaGd2YmZnbGFaZWNnYWRtYjlkUmVlZmtkWmhSaEZkbWJnYzFhWGdsaEVmMWFHaGllb2R5Y2FoU2FKZ2NkZGRGYXBkT2dOY3hnMWZWZlVkbmZSZnJkZWdtZU5hTmJhYmtic2dQaFVkaGVCZGthSGduY2dmbGRHZGdjdGRUY0xmQmZwY1hkRGNVY3hiTGdTZ0dmNWJ5Z2NiV2dCZkJlVGMwZWtnVGNmY25kTmhRaFhmWGZwYXBiVmcxZWtnUWJHZFdkZ2ZMYVJlV2g4Y1JoRWh5ZWtiSWNJZlJhTmNQZ1FjaGNWZElkVWFFZGNkUWVaZ25jSmNXZkZmV2JwZXlkVWFYYmRhWGZIaGxjNGhnZ01jaGdoZ0toSWgxZGtjbmdMY3ljOGYwZUVhRGYxZGFhV2RoYzFjSmJIZlJmc2huYVphVGdrZHZlQWhpY1FhT2VCYzFnc2hjYlRia2N4aDJlZGVsaEpoQ2JGYVhiaGUyZkVna2dzaFloUWIxY2xnaWRjZm5lQWdrY0FmQWNvaGFoVmhBYW9oNWdXYzJhZGc2ZmRlRmRkZkpoSGFEZE5lb2ZDZTBhVmV2ZUVmUmZOYnZhUmYzZ01kVGZSYTJlZ2dWZFNnRmJCYUhhUmVDYzRjN2ZCZVJlc2dWYk1oMGJCZGhiVmMxYmNkV2NlZ1dhMGQ4YkdmR2FZYlVlWmZtY1pmaGJjZ0ZjVmR2ZVdma2djZ2RlSGNWZ1ZlU2hkZ0RnOGV5ZUtiaGM1YWthTmNFZDVlQmFBZm1mUmFSZmRobWRaY2VkYWZCZVZjNGZkY2hiSmRMZEdiRWFOZlpjWWFuZkpid2JjYkVhaGVEYVNjVmdvZGhoTWNBYklna2hkZkJkWWhXZVRiUWNnY1pmZGhRZHRiVmZkY0Rjc2JUZGJlMGNkaHplRWcwZGRnb2JGZVViaGhRaFJoeGJCYW1mY2FoYzhiVmdkYkdiOWNSZlpjMGF4aGdlRmNtY2xnaGVGYWhnaGNtaEZnR2daZG1nWWVYZkJiVmNiaDFmb2ZPY0VoQmRCYS9iVWRuZFJocmFlZm1iTmJOZGFia2hzYVBoVWhoZkJka2dSYVZleGMyZ1Vha2FJZ1ZnZWZIYlljU2dTYXhkaGhEZFdmV2NKZXliY2hDYkpiR2VFZEFiRWJUZE1ieWZ3ZTVjUGZqaDBiaGNBaDFlRWVCaEViR2FRZ2hmUmhXZThoUmZFZTJoOWNIaGNieGdOY0hoYWhCY1ZkSWFVZEVoY2hRZlpjaWRZYmVoWGZEZWxkOGNBZ3pmSWVhZkNlMWY4Ym5mSmdWZk5nS2FhZkZiZ2J5Y2JmamNOZzVkVmRUY01iR2hiZFJkMGFkaFZnVmRKZTBjYWIzYXBhamJUZldlcGhMZ0RhMWVJZVFiWmJFZnhoMmJkYWxhb2ZXZlhhVGZFZWxjSGJCaGxiZGREZ2hnZ2RyYlBoRGJRZjFkR2RrZzBkYWNEYnpmY2RzZUdmVGVZZDVnUGJWZThhTGhHZVJkVmNDZUNkMGdWZ3ZnRWVSY05idmFSYzNjTWRUZ1JjMmNnY1ZmU2RGaEJjSGZFYUdjWmJ5ZkhieGFWaDBlYmUxYkZlamNUYjJhQWVXZGFhV2VFZldiR2NHZFlnVWFaaG1jWmZoY2NkRmhWZXZlV2VrZmNiZGFIZlZoVmJTY2RoSGVSZDZnYWd4Y2thaWJBY2xheGFjZ2JoeWJWY1loYmNuZFlnT2RYZHhnVmdwZmRiZ2M1ZVhnR2NFYnNmUWVZYm5mOWZ3YlpnRmNCZEtnUWFIZkJlMWhlY0VidGQzYmVobWdsZFhhV2JSaEFlWmZhZkFmdGFGYmJoeGVFYlRjYmMwZ2RkemFFYzFjMWdvaFhiRWFoZU9kV2RoYkJjMWhZYUhjd2RWZ2FobmhKZ1JoZGIxZWRkS2dGZW1obGdoYkZlaGRoZW1nRmdHZFpmbWhZZVhmQmRWZ2JmMGNWYUhhRmVVZ2tnZGhHZnliZGJsZUJjU2ZKYmViZWdFZHRnVGhUZnhlQmUxY1RoR2JwYXFoVWJrZnBkY2FlYUhjc2NTY1dnQWFwYktoVWRFYWhneWdjZkhoQmdJYlFnMGVsYmFhZGhYZmhiTGFkYzNhcGVwYlZoMWJrY1FmR2hXZWdjTGZSYlhjVWZSYVdjbWg5YlphYmhoaE5jV2VmYWpiOWZJY1VmRWNjZVFjWmFuYkpoV2JGaFdmcGd5Y1VkWGJkZlhjU2JoZVpjcGJZZFJlWWhZZlpnZ2N0aG1jYmVqYlVjNGJIaERleGZVZ09jRmN3aE1kUWExYklkb2dkYm5kcGJ5Y1RjWGNaYVhhRGUxYXBnWmFaYkVkRmcyYlpnMGZSZExhSGhGY0pkMmhFZWtoc2FZZFFnMWVsY2lmY2RuZ0Jid2dTYkVlTmhKZVdkbmdWYzRkU2EzYmRoNmFhZlVjMWFaZ0dnRWEwYmdjUWJoZFphaGViYWxmSmEvZlZoM2FOY1BmV2ZtaGdmRWFTaEVneGhiZ0VnQ2I5YjdhWGR3ZDViQWJjZGxlRmYzYlZmMGRvaFdkYWJXaEVoV2hHZ0dlWWFVYU5mQ2FNYTFkSmdRZmNkaGVXZ2hlTmRWZlZlQWRaZ0pjWGhtYXRlNmhZZzBmMWdxaFNnd2Y5Z1NjRWJHYlFmUmFmaDNmcGM0YVFoaGRWYjRkZGNoYkpjTGZHYUVkTmRaYVlnbmJvZzRmZmhoZWdjUmhCY2dnNGg2ZUxlQmJJZW5kUGIyZmNjWmhIY0ZoZGNZZVBjRWg1Y0ZnY2NoZkZhVmZPZmdka2N3aFJid2I0ZW5oV2gwY2hjWWRUYWhmQWg5Y1diRmZZZlZnYWNuaEplUmNkZjFiZGRLZEZnbWRsZmhkRmVrZzRhbmdSYW1mWWR5ZllkV2QxZ1ZnWmcwZ3hoU2ZDY0FkNWZBZlVobmZKY3JjSmhEZmNiRmVJZ3hlZ2VCZUxoVmRGZDBlWGRIYTlkMmNXYlVhSWJFZFloMWh3ZVNjU2R4ZGhmRGVXY1dhSmR5aGNmSGRCZElhUWUwYWtiSWhNY0Nkd2VlZ0pkVGVSYXBnWGUzZ01iUWFHZFdiZ2NMYlJkV2g4ZFJoRWEyZjljSGFjZXhlTmVIaGFlQmYwY2NlR2NBYzVhRGRhZEFiMGFYZkJiWGRwZXllVGFIY2RiQmJYZXdiTmY2aGRlQmRZZGVmWmNrY0JodmRhYWtjdGF3Y1ZmV2c5YWFhUmJ4ZjBlZGdWYlZkSmUwY2FnM2ZwZGpjVGdXYUlnZmZEZjBjOGhRZmJhRmVwYWpjWWUwZUZjWGFGZFhmNWYyYVRmQmM5Y1FkQ2VnYXBlc2VEZVRoRmdoaFhla2VwY0pmVWhYZ1Zid2NIYzNmZGZrZGRjMGJsaFpnQWdRZDlnaGVBYWtjbGNGZkVmUmhOZ3ZmUmYzZk1kVGZSZjJmZ2hWYVNiRmNCZkhiRWJHYlpmNmNBZWxhMGRqaElhVmc4Y0lmRmZsZHNiQWVhZlhkd2FXZ0RjbmFNZ0JkZGdYY05kaGdkZWxoVWI3Z1VmMGZzYTNmSGJWY1ZhU2dkZEdldGQ2ZllnMGExaHFhU2V3YTljU2ZFYUdiUmJFY0lobmRaZFBoUWFoaDFmdWdZaHdlZGFZZ0RlVWROZ2ZiWWJpYXdna2NPaEFhRWhRZlJmeWFVYTBkYWcxYWxlK2JlZ21nSmZYZ1ViVWZRZ1pnZGVoZlZkYmhiZndlQWdGZ1pma2Q1Zy9iT2NVZGRob2hGZFVlaGdRY1JneGNCZW1kY2FsZllkVmZhZW5kSmRSZWZhd2NNZkNhWGR6ZXBkdmJhY1ZnbGExaEJlbWhaYjdoWWRXaFpkQWhlYWtjbGRTYUhiUmF0YVZiQmRuZjFibmNVY0dkTmhOYWFla2NzZFBiVWVoZ0Jia2hUZUhlWmYyY1Vma2NJYlZhY2ZDZkpiYWFBZGtndGZOaEphaWVOZW1mYWhIYUJoVmhRYjBmRWRFZkljVGNBZUNnSmFIZFFmV2JGZWtiMGdJZUdkV2FNaExhVGRUZXNkUmREaFhhRmhaaGNjd2VKYVJmWWFSaHhmSWFWY2tkY2FHZmNiMmJkZkZlQWFHZE5kK2FlYTNlZGdYYVNnaGJaZXBoWWhSYVlmWWFaZ2hiUmRtZ1pibWJGYndhQWdTYmNiVGZGY0RhY2ZkaFZmVmJKZzBkYWUzY3BnamNUaFdicGRMY0RkMWhJZlphZmcyZ1poMmRkZ2xjSmhDZUZlWGRoZDJiRWNrZHNhWWNIYWxoQmJ1ZVdoSGRCZ3doU2dFYU5kSmNXaG5lVmM0Y1NmM2VkYnloSWNWZGtoSmdRaGxjWWg4aFJoQmZFZTJnUWRWaFplaGhBYWloSmJHYkJlaWNSYUdoU2ZFZzFoSGRXYkdlZ2dpZ0JhRmhvYStlUGFRZlVkdWVCZXdoOGhZaExjRGFBZFdiQmFXZ1pjU2RNZnlmZ2JpZkpkQmR3ZGdmRmNFZGNoVmNTYVZjeGNTYUxnMGZGYjZmWWEwZTFicWJTZHdkOWhTYUViR2JSY01hZGhuaFlmQWdCYzBoRWJ0Z0pkRmR4YUxnRWRHZ2xmWmNZaG5lSmV3aGNkRWRoYkRnU2NWaHBoMWFlYkVodGIzZ2VkamUwYWZlRWZFZE1jWGVGZTBhcGZSZmRkeGJFYk9hY2ZrZmNhbmVIZFRhZ2VwY0FjVmVCYVFmUWJSYlpkTWhjYWxlWWVWZWFnbmJKYlJoZGQxaGRkS2JGZm1nbGRoYUZjaGNnaHlkWGNDZzhlMWNiZHdnOGdVYWZnMGNwY0hlQWJBZUJlVmZCZ25mb2VVaE9kM2FOZGRiYWhrZjBhSmZlZUJhQmJrZVRoSGFaYzJjVWZrZkloVmFlY0hiWWVTZVNoeGVoZ0RnRGhTZG9kN2NJZjNhNGczZ0FkbGZwaElmZGFXaFZmV2hkYXliNWhuaEtjQmVnYURmQ2QyZ2diTmVRYjBjVWRSYkVhMmU5aEhhY2N4Yk5oSGhhYkJiVmNJZVVkRWJjZVFkWmRpaFliZWdYYkRhbGY4Z0xnamVaaEdhWGdCY1pkMGNmYUJjWmZNY2FjR2NzZm5hZGYzZmRkYWVWaFdnOWVhZ1JleGEwZWRmVmhWZ0phMGVhaDNocGRqZVJjSGFGYWhnRGIxZkllUWJaZ0VieGQyaGRibGZKZkNnRmhTY1ZkL2ZIZ21oRWdZZFFnMWJsaGlmY2huZEJmd2hTaEViTmRKY1ViamYxYjJhR2R5Y1VjMWZQZFJjZ2ROZVNhVWVrZXRlQmVRZ0lkOWVWaEZiSWE3YUFoaWZGZW5nRGZ5YWxnYmVTZEViMWhIZ1dhR2dnZGlmQmVGYm9hK2RQY1FlVWd1YUJmd2Q4YVljTGRqYVVnV2hCY1djWmdTYU1ieWJnY2ljSmhCYXdiZ2VGZEVjY2VWYVNhVmV4aFNoTGEwYUZjNmNZYjBoMWZxYVNjd2Q5YVNjRWFHaFJiTWRkYm5mWWVBZEJmMGdFYnRkSmZGZHhlTGZUZkFic2dRYU1kWGh3ZFBoTWhWZ3hlYmRTZlVkUmYxZkxmRWdVaEllT2IzYjFmUGFjZ3hhQWZaYWFnQWR0ZEZiYmV4YkViVGJiYzBoZGZ6ZEVoMGhkZW9kQ2drYWhmUmdWY3pkcGRtaGNhbGJZYlZmYWVuY0pmUmZkYjFjZGFLZUZnbWhsZGhoRmZnZkpjbWFRZkNmNGV2aE1nbmU0Z3FoTGNrYTViZmFIY1FhRmNWZkJkbmdvZ1VmT2gzZ2RjVmRRZ0Voc2RQZFVjaGFCZmtmVGRIYlpjMmVVZWtlSWhWaGVlSGFZZlNoVmNCYmhoQ2NTZ0VmaGh5ZGNlSGVCYUliUWYwZWxiYWhkZlhjaGJMZGRlM2RwY3BoVmEwZU1jUWZUaFNlQmNDZ0ZibWdGZXVmVWNuZHhnVmRjZHdiMWZIZVBnQmZzaDNmRWNWaFFjQ2JUYUhnSmJXY0ZlV2JwZ3lkVWVYaGRhWGJTY2hmWmdwZFloUmRZZVloZWhSYVJkbmhkY2tmdGZ3ZFZlV2g5ZGFnUmJ4YzBmZGdWYlZjSmMwZmFhM2hwYmpjVGVYaEJlTGhXZnhjcGhaZ05oMGFJZ0phTmEwZ0ZoUWNGZVdkUmMyZFJka2NWYW5nQWZrZXBnd2FXYkhlQmJ3ZFNkRWFOY0pkV2NuZlZkNGNTZTNjZGE2ZWFmVmVkYVphRGZ4Z2xjcGNHYm1nOWh2aEVoUmNOZnZiUmEzZU1kVGRSZDJkZ2ZWZ1NlRmFCZ0hkRWZIY3hjeWZBaGxhMGNqZUlhVmY4Z0ljRmdsZ3NhQWZhZFhoOGJXaFRjR2RoZ3JjSmQzY2RhM2hXYWxnVmZ2Z1dka2VjaGRlSGNWYlZnU2FkYkdodGY2YVlmMGUxY3FjVmhBZjlhVGZBYkVkNWRNY2RhbmNaaFNlUWFoZ1ZoNGZkaGhnSmdMYUdjRWJOYVpjWWVtYmhkd2dKYUFiQWVLZEdhbGVRaEtiT2hWY3BnaGFlZ25oVmFYZ0RiUmY1Y21kS2hSZ3BhVGdSYVJiRWNUY2JkMGdkZHpmRWIwZWRjb2dGZFViaGRRZVJmeGRCYm1lYmFWY1lkVWdlZDFoaGFSY2RkMWNkY0thRmNtYWxhaGhGaGhnaGVtZkZiR2ZaYW1nWWJXYXBoVmRPZHhmSWZPY1RkaGhNZXFmRWQyZ1JmN2ZlZG5nMWhOY1Bia2ZWY3diRWV3YkJnMGJWZzFieGQyZFVma2NJZ1ZnZWdIYllkU2ZTYnhiaGdEZ0JiR2Z0ZCtnV2NuZ0JoSWZRYTBjbGdhYmRnWGZoZUxhZGQzZXBiaGdIYjFmZGRBZFNheWRkYmZlQ2VqZXRmSWJRaHlmcGZKZFBiMWdZZ1VlT2EyYkVnQWRFY1Fia2dRYWVhM2JJZ2VkR2d6ZG9lZ2dIYmljTWVZYUhha2E4ZzViSmFCY2hnVWZNZGhiUmM3aFpoaWVjYWxkR2J5Z3dkT2VEZmxkSmdUZVZiVmhvaGdlWWZuZG9jNGRaZDJjcGZMYURjMWRJZVFoWmZFY3hmMmFkZGxhSmZDZUZlU2NvZHpnUmFoZDVhS2dEYVZla2YyZk9namhrZmpjUmFqY3djSWFUY21oMWM0ZFZkM2FjZXVkWmZ5Y2djWWhCZEFjRmRDZ0NnMGdWY3ZnRWFSYU5jdmZSYzNjTWdUYVJmMmJnZ1ZmU2hGZEJkWWVFYkdkZGRpZWZmQmFWY3FiY2RsZEZkM2ZWZTBnb2dXaGFiV2dFY1dmR2RHaFlhVWdmYUdlWWYxZ09kQmV3YzhlVmNEZmhoY2JDaFVhMWVTZWFkbWdzZnVkYmJUZUlkcmNYY3hnZGE0ZkViR2VSYU1mZGduY1pkU2JRY2hlVmQ0YWRiaGdKYUxhR2hFZ05jR2JZZm5oTmdoZ1dia2FoZERnU2dWaHBmMWNlY0VldGIzZmVhbWRsZVhkV2hSZUFnWmhjZGdhc2NSYUpiMWRoY0FiWWdUYmdoeWNBZkZkVmZvYUNkVWZnZkVoU2VXYzhnbmNZY1VmUWIvYmFobmVKZlJjZGYxY2RlS2dGZ21kbGhoYkZkaGZoZW1mRmNHZVplNWRZZlhoRmZGY1JmVmZwZEhmSGNSZjFnVmRVZ25kUmVyaGVjbWJOYU5hYWRrZXNoUGVTYUJoQWd3ZUJnRGE4YWxmWGFEaDFlVWRhYTJlUWNTYVZhUmhnZlhlVmV4YzBmemJZYjJjSmhpaFFhMGRsYmFhZGFYYmhiTGFkYjNlcGRwZlZjMWJrZlFjR2JXZGdhVWRSZVdnNGRBY09hV2E5ZUhlY2F4Y05nSGNhZEJjVmdJaFVlRWhjZlFhWmRuYUpkV2NEZDJib2RtZUdjVGI0ZUVkUmZHYWtnb2FjZUFoQWRZZ2VkaGdRZ3lhYWJCZjRneGhSZ0hhbGJ3ZlJkeGUwY2RiVmRWYkpjMGhhYjNocGFqY1RoV2NwYUxoRGIxY0ljUGhaZUVlMWdtY1hkRmJKZENnRmRYYWhjMmhFZ2tmc2hZZ1FmMWJsYmloY2NuZ0Jid2JVZGtjTWZkYkVnamJ3YXJiUmJRZGdlN2dlaEVjRmhaY0RmaGdrYThjQmRUZm9hdWRBZkFkVmRGZFJlM2NNZlRnUmMyZGdjVmdTZkZoQmVIZ0VhR2haY3lhVmZoZFZjMWNjZmxjQmNtZ2ZjVWZvaFdiYWRXYUViV2FHYUdhWWhVZlpibWhaZGhlY2JGYlZidmNRYkVjZGZKaFZiUmZ3aEJoZWZoZ1FiN2JjZzFkMWFxZ1Zid2M4ZEdiSGZoYnNhTmNaZW1kWmVKZGFoQmhWYzRlZGFoYkpiTGVHY0ViTmRaYlllbmRJYnRkZWdVZ1JocGVTZlZhcGgxYmVkRWZ0ZjNlZWNtZWxhWGJXZVJnaGJSY1pjbGFzZVhjSWdFZlZmY2ZPaHhkNGFqZVZha2drZ25hUmgwaGhnTmVSZjFjWWN6Y1BmQmNWYkJmSWJ6ZjBlZmJkZTFjOGFlY0hmMmZraDZjUGNCZmhjbWFGZ0dkWmhtZ1liWGdCZVZnYmUxY3BoSGNIaFVoOGZRZUJkaWJFYjVlTmVHZE5oRmVRY0Vmc2NQY1VlaGRCY2tiVGJIZlpjMmNVZmthSWNWY2VjSGhZYVNoUWIwZndoTGdFZURhRmg4YURnemJGYVlnVWEwZmtnR2NhZ0hiZ2NmY2VhUWdVY29oUmcwYWtmWmVGaFViSWZMaFJoV2Q4aFJoRWMyYzlkSGFjZnhnTmNIZmFiQmhWaElkVWNFZTllRWNMZWpmc2FGaEdmeGZVYXpjUWFHZ0ZjWGhGZWdkdGZwaE5jUmVoYW5oSmF3Z1Zid2ViaDJlMWFhYlZiV2Q5ZGFjUmd4YjBmZGFWZVZlSmUwYWFkM2NwY2poVGVXZXBmRGRXZHhicGRaYU5oMGhJYkpiTmUwZ0ZlUWFGZVNoUmFyZUVlaGY4ZVdnUGhCZ2hleGZZZ0hibGQ4Z1lna2ZOZ0pnV2RuYVZoNGFTZTNlZGU2YmFmVmFkZ1piRWFCYWxib2hBY3hhRWZuYldnRWhCZmhoT2VEY0lhSGhYaDJnaGJKYVZmVmZBYVRoSGNoYmtlemFRaGdjMWhqYmZkbmR0ZjNjVmMwaG9mV2RhZFdiRWJXZ0dlR2FZaFVhWmdtZFpoaGNjZ0FiRWNuZEVmeGZRaDNhSGRWYVZmU2RkYkdmdGE2ZVlkMGQxYnFmU2N3ZjllU2NHZVhkOWVtZGRobmNaaFNhUWNoYlZjNGNkYWhkSmhMZEdlQmY1aFFlYmdsZ2hmd2RjYUViaGVEZFNlVmJwYzFjZWFFZHRnM2hjZWlmRmhaZUNiVWZKZldnUGFFZ1FlUmJOYWthRmVXZVlmUWRZZDlmVmgwaGRiMWhGYlFnNGVGYkNoVmRNY3liT2d4Y2xnYmRhZW5ib2VGZGZnbGZjZlJoUGhHZ2xhaGRGZ2hoaGZtYkZnR2JaYm1iWWNYaEJkVmViZXdkZ2VDaFNnVWZnZkhkSGRIYlJjamFVZUdnTmNOaGFna2dzY1BiVWNoZkJia2JUYkhiWmcyZVVha2RJZVZhY2FDaEpmYWVBY2todGdOZEpmaWJOZWlhWWZIY0JnT2FYaGtma2VPYWVjd2djYktiWmcyY3BoZ2RXYTNjTWhRZEdoV2ZnYkxnUmNXZzhoUmNFZzJkOWNIYmNneGZOZUhlYWhCYzBoY2ZHZUFkNWdEYmFoQWcwZ1hnQmdIZ3hieWdWZDJncGJYZEhmaGdnYVdnSWdBZGNlT2ViZ3hhaGNNZlpnbWZGZ3dlVmVXYTloYWhSY3hjMGdkY1ZiVmZKYzBiYWMzYnBjcmNHYVNoSWNDYVhhRmd4ZXZnSmdWYjloa2VkZ2xiUmFmYkZmU2N4YjRoYmJRaG9nTGFVZFZoQmN1ZVdhSGFCYXdoU2dFaE5iSmdXZW5oVmc0ZFNiM2NkYzZmYWZWY2RjWmRHZ0VkMGZnY1FmaGVaY2hnYmhsYUpjN2VYaDNjTWVWaFdmbWFoZkJmUmRpZjhnR2hCY0hoNWY3ZldmamI5ZnFiY2NsZUZjM2NWYzBnb2VXYWFmV2hFaFdiR2FHYVlhVWFaZGpoSWNwZE9lUWZaY0ZlV2drZmNhZGVIZlZlVmJTYmRkR2V0ZzZjWWQwZTFocWJRZGhkUmM0ZUVhR2hSZU1kZGRuZlpnU2RRZGhnVmM0Z2Rla2I5YkNjRmdHYWxkWmdZaG5iSmN3ZmNiRWZoYURmU2hWY3BlMWZjYkFjTmM1ZUtiamdzZFlhRGVWYjlmTmFNYlZjc2dBZFlhVWVsY2NjUGVVZmRjdWFFaHdkRWg5Y1djd2JzZ0VkRGZsZjhhb2VjY2xhNWNCYlljM2NJZ0tmWGFWaGRjS2FGZG1lbGhoYUZiaGZoY21mRmNHYVplbWNZY1NjSWVRZE9hd2M4Y1ZjVWJ4ZjFnZGdlZEhnUmVyY2VkbWVOZk5oYWhrZHNhUGVVZmhiQmNrZ1RnSGVaYzJmV2FoZ1piZGVNaFNiVWRjZ05nRmVsYlRiU2JXYklmTWFiaFhnQWJjZFRhVGRZZGJoWmRXaGhjQ2NlYTFlQmdwY1ZjMWRrYlFnR2NXY2dhTGRSYVdiOGRSaEVjMmU5ZEhmY2Z4YnNhVGVJYkZhd2RiZFhiamZoZFJoZGMyZFJlV2hhYzNnZGN5Y0JmWGVrYm9mQ2R3Z2RjL2JhaEJlb2N5YlpiaGZSZ21iWmVtZUZhd2ZWYldkOWJhYVJheGIwZ2RkVmVWZUphOGdQaHplSWhxZEhmbWNRYjBmVGJrZ0VlQ2daZURiSmNyY2RhZ2JaYk1nYWZqaGxlbGRBYUVmSWhVZWFoVmJsZGloY2duZEJnd2RTYUVoTmNKaFdmbmdWaDRjU2UzZGRkNmFZaFFlTWFSZFdmVWVwYm1mZGRBYlJoN2dDYVJkTWVSZldhbmhOYkhmU2JSaGRiVWFYaEVjaGhPZUhmRWh4Z3ljVmNoYlZlcWJjY2xhRmMzZlZiMGhvZldjYWFXZEVnV2dHYkRhSmFjZUxjemdWYkxlY2RGZlZldmVXY2tiY2VkY0hoVmJWZVNnZGJHYnRnNmhhZWxoWmFBYVNld2g5YVNkRWNHYVJiTWhkYW5mWmRTZlFma2ZoZ3hoZWJqZWhnTGdHZ0VnTmhaZllibmZKYXdlY2JFaGhnRGNRZFJmSmY3YUtjQmhrZTRhTGFpYVlmRGNBYkVoQmVjaFpma2hVYkthT2J4Z0VkT2hiZXdiRWRtZFhnUWdRYzhkWGRBaGNjZWNSYnhkaGZ2YmNhZ2EwYS9oYWVuZUpkUmFkYjFnZGFLZkZhbWNsZmhnRmdoY2hibWRSY2lmTWJ5ZU5mQ2hJY2JlYmMxZUpodGFIZ1JlMWNWZVVibmNSYXJmZWZtYk5oTmNhaGtmc2NQYlViaGhCYXNjR2ZEYjRmL2RBYVVieGZxY09nV2FZZENmU2R3ZlZiRGRUZzNnZGZuZlllMmdWZUljUmFVZmtiRWFJaFRkQWdDZ0plSGRRZ1dhRmhraGtmQWVFZkdiUWJoZVJiV2I4aFJiRWcyYTlnSGVjZ3hlTmZIaGFnQmNWZklmVWRFZ2NjWWFNaGpob2JmZlJnbWhRZ05oRWJHZlpkQmJTZGdidGhwY2Rod2ZNYU5hZGFRZ0ZibWZZZkdnRWJ1YkFjU2ZjaFRiRmFCY05kaWZGZ0VmTmJpZ1libmRaZEplVGdXYnBnTGFEaDFhSWRRZlpjRWF4ZjJmZGRsaEpiQ2dGYVhmaGQrZFJnZ2dOZlJnRWVGZWNlZGZNZzJlTmJpZFNjRmU1YUpmVGRHZkJndGFXYkdkSmM2Y2JnMWhjYUhnUmRGZUVmaGFXYUVnc2VRZlVjQWFCaDliVGZuZjhkNWdSZDJnZ2JWYVNlRmNCYkhkRWdHaFpoeWVWYWhhVmZxZ2NnbGNGZy9iQWN3Z0poZmNPYm1lOWNwaFdoWGhJYk1oWmZuYXRnaGRaYWtjQmY2ZlNkVmVJYmRkR2MxZlVjTWZJY0NhTWV6ZE1oRWdNZ1ZlQ2doaHRnS2FHZFdkaGVtZmRnbmNaZ1NlUWhoY1ZkNGVkYmhhSmFMYkdkRWVOZVpnWWVuZklla2RPZUFnRWZRZVliMWVwZDFiZWFFZ3RiM2ZlZ21mbGRYZ1diUmZBaFplYWJBYkpoZWFSZFJjRWNUZ2JoMGFkZnplRWQwZ2Rhb2VGZVVlZ2NOZVRlaGF4Yk1nY2FsZFlhVmJhY25jSmFSYmRhMWRkYktkRmFtY0VmcGFHZEVmZ2MwYldiemhJY3BkTmZTYWtoRmVLZmxoUWhVZFZhVmRRZFRmQmJnaFljaWJQYlNoc2NaYmFlbGNZZlBkR2ZoZzRoMGNIaGpja2ZpY0hnUmFaZU1jS2NEYk1nY2ZHZ0ZjQWJLYUhlemRZZGdlY2ZHaDFlSWVCZFJhd2VVaE5haWh3Y0NjT2JEZlJkcGJYYXdnMGNaY0dlVGNNZ2hoUmFXYzhiUmNFYTJhOWJIZGNleGROYUhmYWhCZlZhSWdBY2dnSmVFaE1leWZBY1lhRmRXZEplWWNVYlhiZGJYY1NiaGJaYnBjWWVSYVlnWWhaZWhhUmJtYVpkbWJGZDRmQWFXZzljZmVXZ2hmMGJMYlFiVmZ0aDRnUWZYYnBnamNUYldkcGZMZURmMWRJZ1FoWmJFY3hjMmdkYWxkSmRDZlFiWGdoZ29jRGMwaHNlTWZXYTNlTmJpZ2NobmRCZXdhU2JFZk5jSmFXYm5nVmc0ZlNmM2RkZjZiYWRWZGRmWmNEZnhlbGJnZ0FkeGhFZG5nV2ZFZEJmaGdPYURiSWhEaFZkMmhnYUllU2ZBZ1FnUGJXZVRhVmE4YUtjVmVSZCthYWhsZkZmcGRTZFVib2FlYVBlV2NFaGJoR2VIY0lmTWdiZTJhOWR0YldkbGdWaHZmV2VrZWNmZGZIYVZnVmRTYWRlR2Z0YTZkWWcwYTFlcWNTZ3dlOWRTaEVmR2N3YVlhUGNqZDhoQmJUZEdib2U1Y1phd2dSZUxkQmRVZ05nSmdhZDNiNWJhaGNjRWJoYkRmU2RWYXBmMWJlYUVjdGYzYWVkbWFsYlhmV2VSZEFiWmVhYkFidGNGaFphMGRWYmJnSmJoYVJmOWRiY0FiWmc3YUJmMGJoZE5lUmF3YkJndmJmZ25id2dWYmFobmJKY1JoZGgxYmRmS2dGZm1nbGRoZEZiaGNoZG1mRmJHZVpibWhZaFhmQmJkYk9neGFJZk9kVGRoY01ocWRFZDJhQmN6Y2Vkbmg1ZE5iZWZrZUllR2RlaEJiQmFrZVRhSGNaZjJmVWNrZklnVmNlY0hhWWFTaFNjeGhoYkRkV2NXZ0pob2NjY0NlUmdJZVhkVmNSY2FoWmZtY3BlaGNkYjNicGNwYlZoMWNrYlFmR2NXaGdhTGJSaFdjOGVSZUVhMmM5Z0hlY2J3aHhjSGFZYkJhMGdjY1VlRWVvZE5lWmFtZkZmRWRIY0djWmdZYVVkWGZkZFhiU2FoYVpkcGhZY1JjWWhZYVpiaGhSaG1nWmhtZ0Zid2VWZldhOWRhZlRkMGVsYlZiSGZBYkZiNmFGZURmdGR6ZlhlV2dwZldjSmVWYUliUWVaZUVjeGUyYWRjbGRKZUNmRmhYZGhnMmJFYWtnc2dZZlFnMWhsYmlkY2JuaEJnd2FYaGxjWmdjYlNhV2NCZjRlVGFYaGRoeWhZZFFmTWNSYldiVWZwZG1kZGhBY1JhOGhBY3hjTmd4aFdmWGdOY0hmVGNtZ2hmSmZTY0ZkZ2NUZFdhQ2Y4ZmhmV2FHZm9kcmZaZGtnbGIzZ1NkMWNZaFdlWWVYYkFnQWJHZ0dmc2hVZU1kbWg5ZW9oZWVWY3hiamRjYkVkY2JkZUhmVmJWZ1NiZGJHYnRjNmJZZTBoMWRxZFNid2g5ZVNkRWdHZlJhTWRkYW5jNGNHaENlbGZ3Z3JoZWJHYzBkS2dDZFZnVmNaYWZlM2hKaDRiSmFBZEFmS2dHZmxiUWJLYU9nVmM5ZHZnZWduZWRhSmhXZFViUWdRYmFoQWcxZUZjZWhRZVFoR2VmZEZlSmg2ZkhjMmMxZW9oRmZVZmhmUWVSZnhjQmZtZGNjbGdZZFZhYWJuYUphUmdkYzFkZGZLZ0ZhbWRsZnBjUWJsZ0FjdmFSZzJhZ2haZUllR2ROYkhmYmgwaGRiSGZEaFJhUmZaY2ViSGNSZ3JnZWRtYk5nTmdhYmtic2dQZVViaGNCaGtlVGJIZFpkMmRVY2tkSWFWYWViSGU1Z0doQWExZEVoUWdWZXhoMGd6Z1phR2doY0liWGJrZGxoS2dmZkhmRmJoYmRlM2hwYnBnVmMxYWtnUWZHZVdnZ2JMYlJlV2g4ZFJoRWMyYjloSGhjZ3djbGJIYlBhQmhWYldmVGFVY2NkQmJjYkZoaGRXaEZjV2NwZ3ljVWdYYmRmWGhTaGhoWmVwaFlkUmhZZVlmWmdoZ1JjbWJlaFdmRmc0YVhhVGh0YmFmU2NnYUFhZGhSZUVkUmY5YVpoMWJCZmpnVGhXZXBnTGhEZTFmSWRRZFpkRWV4YTJiZGhsY0phQ2VGY1hhaGIyYkVma2hzYVFlRmd4Z0VlcmFJaFhjNGFQZkNlVmZOZVpiV2RtYmhoU2VTYjNoZGU2ZGFiVmFkYlpnRWVCZWxkb2VDYTBoVmh2ZkVhUmhOZHZiUmgzYk1lVGdSZjJnZ2dEZVhjVWdWaFViQmRXZ1pmMGdWZ2hjMWhpaEplaGZrYitnQmhFZ1JncGFLZ0hjQWZBZ0dlSGZnZEtnWmNqZkphb2djYUFibGJ2Z1VlaGhOZlZlVmRBYlplY2hDYnlmcGJwZGNnVWMxZzJoVmN3ZDllYWJBZVhmSmVNaGVhM2hZaEdnU2J4Z3hleGhmYnhoNWRoZEdlRWVOYVplWWFuaEpid2NjYUVlaGNEZFNhVmVwZDFhZWZFYnRkM2FlYW1kbGRYY1ViVWNSZFJlSWRWZWhiTGVFYUZnQWVDZ2VlVWJkYnVjT2hVY2Rjb2VGYlVkaGRRYVJmeGJCYW1mY2VsZVlmVmZhZm5nSmNSY2RkMWhkaEtjRmdtYmxjaGJBZkFnMWd6ZkJnM2JOYW1kWmQzYkJkZGNaYndhNGNQYlZoRWg1Z2JnTGFUZlZmNGRhZkdiTmNUZmRkRWh0ZmJoV2V4aEFjNGJUZkhiNGJpZEdoZ2N0ZkdhZGhnZ2xiVGJYYndlQmNEYVJkWGU1Y3lkZWRHY0ZhZWNRaDBjUmhhZkliWGVGaENkZmNuZU5hbGdmZVZoa2FRY0dmV2ZnZkxhUmZXYThlUmdFYzJmOWNIZmNneGJOZEhiYWZCYlZmSWVVZEVnOWRFYkxiamNzZkZkR2R4ZVVmemNRY21lVmNYaFZmeGRaZmhiTmZWZTVlUmVOYVJmb2FaaEpoM2ZWZW9mVmNYYUZoRWFSZzBia2dVYlZoVmJSYzBjZmVXZzljMmVYZm5mOWFDZkFiM2RnY1FkWmNFZXhhMmVkZWxnSmZDZUZjWGRoZDJhRWhrZ3NiWWFRZzFlbGNpY2NjbmFCYjRkSGVBYXNmQWhDZlhic2ZIZkNhbWZOZWlkYWNVY3BlWmJBZEJnQmdoZUlmVWZWZnZoRWRSZE5jdmFSZDNkTWhUZFJnMmVnZVZoU2JGZ0JoSGZFZkdoWmNvYVZhaGQxZmloSmNoY2tkK2VCYkVoUmNwZUtiSGdFZUdkR2JIZHNhK2ZaaG1oWmdoY2NhRmdWZ3ZiV2ZrYmNlZGdIZFZkVmJTZGRoR2h0ZTZlWWMwaDFocWVTZndoOWhFZEJkWGFGZGZiWWUzZ1pmVWNRZGhoMWF3ZElkbGNvZUNjU2cwaDBlbWRJYjJnSmRnZGNlRmVaZ2RiU2RRZTVhOGNlYUJjZGUzY2NoamQwYWZjRWFFZ01iWGRGaDBkcGhVZWVlUmFFZ1BhY2gwZGRoN2JBY2xkRmRvaEdlRWhnaEVoVGVoYWxkdmRlYjFkb2cvaGFlbmFKZVJnZGExYmRiS2dGaG1nbGVoZEZlaGhoZG1iRmZHYlpjbWFZYVhlQmdWY1pnd2U0YlBkVmFFZTVhYmNMZlRlVmY2Z2JoR2hOY1FhUWhFZnNjUGJVZGhhQmZrYVRjSGZaZDJnVWFrZUlkVmJlYkhhWWZTZFNleGVoZ0RoV2VXaEpjeWFaYm1kVmhkZ1VoRmR4Y2FkY2czYWhhRGJmYXlmNGJoYkhkZ2dvYmVkWmNpaGtlYWdVZzJoOGNQY0RoV2E4ZlRmZWNoYk1oYmhhaEJjMGhjZUdkQWQ1Z0RoYWdBZzBnWGZCYm5kaGN5Z1RnV2F0Y1hoUWFnY2RhL2NZZVJkc2dZZU1laGYxaHZiYmEyZ2hiOGhmZDJoOWFhYlJmeGcwZmRmVmNWZ0pkMGVhZDNjcGJqZlRiV2ZwYUxiRGYxYklnUWRaYUVlUWNpZ1BiaGVzZFJiR2d3YmNlM2dBZ1Zna2ZZY1hlbmNOY2lnY2huYkJmd2JTYUViTmdKZ1dhbmdWZjRlU2gzYWRjNmFhYVZiZGRaZ0ViQmhsZm9oQ2YxYk5lNmFCZ0FnQmQ2Y1JjM2VVZFRkVGUyZEJiQmJBY0Jma2JVaEhnaGdrY3piUmdRYmRhcWJiZUVlOWUzYkFoMGJNaFdiTmZXYkVnZWNUZUNoNWVkYU5kV2dnZ2ViTWNVZEZhM2dXZ2xjc2JCZUhoVmExZkRkWWRtaHRkM2VZZHhhbGFqZ1FnZ2JaZWJhSGZFYTVlTWJkZW5hWmRTY1FkaGJWZjRnZGRoYkphTGJHZ0VkTmdaZllmbmZKZ3djY2VFZmhlTGhIYlJoSWM4Z0tnMGNVaEloT2MzZjFnUGNXZ1FoMGRaYVlmRmE4ZE5oSmFrZUlhZGFFZEFkWmhuZENkMGJkYzJnQ2YwZGdmRWdUZmhlQmhnYmNia2hBaEFoZmMyZkZmRWdmZmxiNWVHY1BkR2NsZGhoRmdoZ2hhbWZGZEdjWmFtZlljWGVCZlZlYmIxZ3BhSGhTZ1ZiVWFjZEFjVmU1Z3JhZWRtY05oTmFhYmtic2JQZlVhaGJCZWtkVGNIYlphL2NTYldhZ2FWZWViSGFZY1NnU2J4ZmhmRGdXaFdlSmd5YkxjWGNsYUVhYWJVZ2xjYWJkZVhmaGRMY2RoM2dwZnBhVmcxZmtnWWhVZFdiWmdiZ0ZkeWhCY0ZoWGJEaHNiZWZJZjFlWmJKZ09nMWgwaEJjRmZoZE5jOGdJYXphUWVDZ0ZjWGhkZnljR2NYY2tnSGNHZkZla2E5Ykxla2RKaEJnTmRsZEZjb2NOYVNia2E1ZEVhemJzYldiUmd3YUFlZGVFZXdlY2c2YktlQ2I0Z3FkQWRpZlJkTGdCaHdhWWNjZlpoQmg1Yi9hZGRnZWxmb2JGaFhjaGcyZ0Vna2FzZlliUWUxZmxjaWNjaG5jQmd3YkdnZ2RZaGRmRGJ5ZWNkMmJTYTNjOWdRaGFmVmNkZlpmRWJCZ2xib2ZDYjBkVmN2YkVlUmhOYXZhUmYzZk1jYmFFYzJlZ2NRYlZhVmdCZFJjQmFHYTlhK2VmZUJnVmJxaGNibGdGZTNoVmUwZG9lV2JhZ1dkRWhXYkdoR2ZZZVVlTWRtZVpkL2ViY1ZiVmU3Y1FhbWQwYWRjSGdWY1ZkU2ZkYUdjdGI2Z1lhMGIxZXFlU2d3YjlnU2VFZUdjUmNNYWFoWGNaYWFkU2hrZEVld2ZQZDBhRmNGY1pnd2VKY05lZWduZEpkdGdjZUJmd2FMZUFiQWRsYzdjQmN3YnBlbmVhZW1hbGdMZ1JmUmJBZFJkUGdBaHRiSWFiZHdlVWdMZVpna2E1ZS9mT2dVZWRmb2dGYlVmaGJRZlJoeGRCZW1lY2hsYVlkVmZhZG5kSmhSYmRnMWFkaEtjRmFtZ0VmMWRYZGxmRWUxYUdkaGFraG5kY2FtaEpkVmNjZmxhcGhYY0ZhQmNGZy9jVWduaFJncmZlY21lTmNOY2Fja2dzZVBlVWFoZ0Jla2ZUZ0hhWmEyZFVja2hJY1ZjY2VDYkplYWVBYWtjdGJOYUpoaWJOZGplWmRuZkJoVmRRZzFkbGFUYWVoVmhKZkxmZGUzZ3BkcGNWZzFoa2VRZkdkV2dnZkxjUmRXZDhiUmFFYjJkOWNIZWNjeGROZVBlUGVGYzBiQmFBYzBlbGZ2YUpnMmhKYkdiRmVYZ2RheWZRYlhnNWZlZFllQmNaYXBlWWNSZ1liWWNaYmhmUmhtZVpnbWFGZ3doVmJXaDlmYWJSY3hiMGJIZVZmUWNaYjBnZGdXY2RjamFYZG5iaGhoaERkMWhJY1FmWmVFZXhhMmhkZGxiSmVDZ0ZiWGVoYjJnRWNrZXNmWWZRaDBhWmFpYmVmbmFnaGtnU2JFYjVoVWRXYm1hWmRxZVFjbmV0Z1FmYWNWYWRhWmNFY0JkbGhvZ0NlMGRWZnZmRWRSZU5idmJSYTNlTWdUYVJjMmhnZlZkUWhBYVFoUGJXZlRnVmM4ZEtjVmRSaCtiYWJsZkZlcWNWaDBkSmVDZUloU2ZoYkZhRmJoYWxmVmRkYjNmQmJoY2JkRWRsY3ZoRGJrZDRhZGRRaFZoVmhhY0lhQ2NNYnpkTWFFYU1hVmdDaGhjOWdDYUVjSGJwYVNhZGZuZzVjRGJWZUJnVmMxZ2Rna2RaY0NnRWJVZnBkVmRTY0hnSmF3YmNnRWdoYkRhU2RWaHBmMWVlaEVidGUzY2VlbWdsYlhkV2VSZ0FlWmJhZUFmTWVSYkpmMWJoY0FmWWZUZGdneWVBYUZmVmdvaENjRWNoaFlhRWYxZ2djdmdJZ1ZoaGJxaEtmMmVKaEJnZGYwYXRjV2JGZ2pmMWZvZEZoaGY1Y21jQWRuY05jemJjY21hVmJjYlliM2JCaEhmSGhSZjFlVmdVZ25nUmVyZWVmbWFOZU5nYWdrYXNkUGhVY2hoQmRraFRnSGdaZythQmJnaHBkY2FLYTNjaGR0ZkNoZ2ZsZFZhV2RYZzlleWNZZUhibGJFYmFjVWNsZ2FoZGdYZGhjTGVkZTNkcGhwYVZlMWdrZVFnR2NXZGdnTGRSY1djOGNSY0VkMmdjYlRhT2UxZW9jVWRaZW1kb2ZKaFFlRmVjZVFlZWMzaEpkR2VIaEdoTmRZaFVhWGdkZlhjU2JoYlplcGhZYVJlWWhZYlpkaGZSaG1kWmVtY0Znd2RWYVhnVmhhYkVneGgwYkRjU2RGZkphbGhmY1ZmQmZqY1RiV2JwZUxhRGUxY0liUWZaYkVleGYyZ2RkbGhKYUNnRmRYZ2hiMmVEZFVlc2FRZ1Nkd2gxZWlkZmUyYzFnd2VXaFZiVmRBYVZkbGM5YjRmU2MzY2RhNmRhZ1ZkZGVaZEVoQmRsZW9jQ2MwZlZkdmRFZVJhTmR2ZVJlM2JNaGJiRWF5ZkJjY2RHZDFiNGY0ZlViWGVKYnFiVmFnZmhjcWdlZGdnVWcvaEhmaGVrZVlkRmRpZkFlRmFDZG1jWWdJZWVkbWVZaDFnZWZWZlViemhXZGtnOWJKZFZnUmZ3aEJnZWhoZlFhN2FjYWxidGZxaFZiUmhGZlNlR2hIZ1ZnYWdkZG5jdGFTZEZkaGN4YnhhZmd4aDViaGJHYkViTmdaY1lnbmJKZXdjY2dFZ2hhRGZTaFZicGExZ2VkRWF0YjNiZWdtYWxoWGRVZFVlUmFSY0liVmRoY0xkRWJGYUFoQWNmaFVhZGF1Z09mVWVkZ29kRmNVYmhlUWZSZHhnQmJtZmNlbGVZY1ZhYWZuZkpnUmRkZzFkZGdLZ0ZobWZsYmhiQWJBZTFjemNCYzNoTmdtaFphM2RCYmRlWmF3aDRiUGVWaEVlNWFiY0xoVGFWZDZnYmJHZ05hUmdkYmtkdGhiZ1doeGNBZTRmVGhIYzRmaWVHZWdldGJHZWRnZ2JsZ1RhV2d3ZGhnRGRSYjNheGZ5YWVlR2hGZGVjUWUwZlJkYWZJaFhiRmhDZ2ZhbmdOZGxlZmRWZmtoUWFHZldmZ2hMY1JmV2M4Y1JkRWYyZzlhSGRjZ3hmTmVIYmFjQmFWY0lhVWhFZjljRWhMZ2poc2hGZUdieGhVYXphUWdHY0ZkWGNWZnhoWmJoZk5hVmI1YVJhTmJSYW9iWmRKYzNmRmZnY1ZlWGVOYUdhUmIwaGtlVWRWZFZlUmYwaGZhV2U5ZjJhWGRuZjlhQ2VBYTNhZ2ZRYVphRWd4ZzJoZGZsY0plQ2RGYVhmaGEyY0Vla2ZzY1lnUWcxZGxoaWhjYm5mQmU0ZkhiQWhzZEFlQ2JYZnNoSGJDaG1hZGFxaGFjVWhwZ1pnQWFCZkJlaGJJZVVjVmF2YUVlUmVOZnZhUmIzZU1hVGNSaDJmZ2JWZ1NhRmRCY0hhRWJHZ1pob2dWYWhnMWRpZkpiaGVrYStiQmNFYlJncGVLZEhkVWhPY0dnSGFzaFVmYmZqZklmcGVPYVFlWmRoZ0phUWZZZUpiQmhWZ1ZnT2JhaEdic2J1YWFna2MwYjJkU2Z3Y2NiR2ZXZUNoMGhmZ2VhQWZrYVRlVWdRYWRlNGRhYUFmeGNMZkVhRmVKZFBoWWRuZzlod2FKYUVlRmZLZVFhRmRaaGZiZWVFYXRiM2NlYW1lbGVYaFdjUmVBY1phYWVBaHRnRmFiaHhmRWhUY2JhMGJkYXpjR2Z4ZE1iZ2RYZ0JkdGJlZk9oRmdGYjFlWWRGZllkSWhRaEhnSmRSZmRkMWFkYktkRmRtYWxiaGdGaGhiaGNtZ0ZoR2ZaaG1iWWhYY0JjVmNiZTFmcGNIaENhd2doZ0FhUWNXZUZjcmFmY0diTmJGZFllaGQ5YUhhR2QwZ05ncWdNZHpkZGFsZlFhRWFJYUpjWmVIZFpkR2ZRYmhiZ2FmZFdhV2RvZ21oT2VEY2toYmNUZ1RkWWdiZVpiR2Q1Z0xjYWVXZlJocGZYYzBnZ2dHZkdjV2JVaExoRWZXZ1llWWFHYm1nWmZMYldmUmJOZkhhYWJCZFZjSWFVZ0VkY2ZRZVphbmhKYVdiRmdXZnBmeWdVaFhlZGhYZVNiaGU0ZTljS2NWZzlmTGZhY0dic2duZ2RiM2FkY3dkU2NFZlZlYWVSY3hjMGdkY1ZkVmFKZzBnYWIzYnBkamdUYVdlcGFMZERnMWVJZFFmWmVFaHhiMmJkZWtlUmVYY0FjR2Z0YWpoRWZrYzBlWWRTZTFnRWcyZU9lamJrZmpoUmJqaHdiSWJTZjJnTmc0ZVZiMmN0ZzZjUGJWYjVhWmhUZkJhbGdnZlhjd2QwZm1hUWhoZDBjUWRCaG1iTWhEYlJhM2hZaExmU2JGZ2hmV2JCZW1hWmEvZFZoa2JGZmpiZWExY2hkK2JXYjJlQWFXY2FmV2VFZldnR2RHZ1loVWFaYm1jWmVoYmNkRmZWYnZoV2NrZWNhZGVIY1ZhVmZhY0llQ2FNZnpjTWNFZ01lVmZDaGhkOWFDZkVlSGFsZk1hZmNpYUlmYWZDYTBhWmIyZ0NhVmVOaGJhQ2RFY05kRmhmYW5kSWJrZmVoVWRoYkZoU2hVaHhkZ2RiZ1ZmaGdpYmNoMmZCZ2JmY2F4ZUFmWmFhZUFldGhGZmJneGVFZ1RjYmcwZmRnemdFaDBmZGJvY1JkMGJnY01lR2V4Y0JjdWdKaGhiNWZjYU9nWGN3ZnVmTmZrZE5iU2dGY21jOWI4aEZkZ2g1Y3pmQWVYYlZoemJhY0hmeGYvaGJjMWRwZEhnSGJSZjFoVmJVYm5nUmdyYmVobWdOYU5hYWNrZXRhYmRHZmxla2gzZlpmbmZaYzJnVWVrZUljVmdlZUhlWWhTY1NneGJoZERjV2dXY3RncGFXZG5nQmhJZVFhMGVsZWFmZGFYYWhlTGRkYjNlb2QwaFhobGhVYzZlR2FXYmdmTGdSZldnOGFSYUVlMmc5Y0hkY2d4ZHNlUGRaaGtlVWVhY0hoeGhOZmZiTWVpYnNmR2JVZ0dkUWhnZEhkaWNNZFdoSGdsZE1kRmFKZUZiQmJNZ1pkZ2dsYm1iTGJtYjhkZ2JCZnljQWdPY0NmRWFsZEVlQmZSZmRiNmdPZ1RnVWczZ0FoV2JwY1dlRGd4YVJhRmVLYWdlOGZpYlBoeGUwY01oRmVYYkFnaWZHZDBjdGdEZWFlVmFsY2lhY2NuZ0Jjd2VTZUVnTmVKaFdhbmhWZjRnU2d6ZTRlOGZhZVZkOWJSZUdnRWYxZG9kRGJsZGhldmZCaHdhZGZtYlNoM2dNYURiUmczaFVmSWJTZkFmUmFPZ0diV2ZZZmdhRWYwZ0VlL2NJZUJoOWEzY0Fnd2dKZ2ZlT2NuY29jOGZHZEdmWWdVYlpibWJaaGhmY2VGZ1ZhdmRXY2tiY2ZkY1ZkQmROY1NmZmREZDlnNmNmZlZnQmhxZVdjQmExZWJkRWNEaDlnbWdkaG5mWmRTZ1FoaGZWaDRoZGNoZkpkTGZHY0VmTmJaZVlobmVJZm1iTWNSZXBnRGhHZjFocGhvY2VhQmM4Zi9lTWN6ZHBmWmFKZ2xhRWZKZGVmQmhCYnZiYmV4Y0VmVGJiZzBiZGV6aEVnMGJkYm9kRmVVYWhoUWNSZnhnQWh2Yk5hRmhZZWRjUWNIZEpoUmNkZDFhZGZLY0ZkbWhsZWhkRmVoZmhjbWdGZUdnWmNtZVljWGFCYmRlWmd3YjRlUGdWZ0VkNWNiYkxkVGdWYjdiYWFtaE5iUWVhZWhhOWFIY0dmMGdOYnFiTWJ6ZWRkbGhRaEVhc2daY1VjbmRZYlNmU2R4YmhlRGVXYldlSmF5YWNiSGZCZkliUWMwaGxoYWNkZ1hhaGFEYklnemdJZWdhQmRGZmRidmdXYUhhc2RaZlJmWGhJZFJhUWRXYVpoTGRXY1JjTmZIZWFoQmdWZ0llVWFFYWNoUWFaZ25iSmNXZEZnV2JwaHlkVWFYZ2RjZmFHZ0JnWmEwaFlhVWdKZ1FjTGQwaGRjb2hHaFNkQmdrYVRnV2FaaFdkYmFSYTBiZGhWYVZmSmQwZ2FkM2VwZ2phVGFXaHBkTGVEaDFjSWNRYlphRWF4aCtnSWVoYW9lTGZSaG5hWWJKZlVmMWI4ZEFjUWcwZFJnaWRKZ2piZ2M1ZUdiMGEwYzJmR2YyY1JkdWJRZ25mdGRRZ2FjVmdkaFpjRWFCZGxmb2dDYzBjVmJ2YkVlUmVOaHZjUmEzaE1lVGhSaDJlQmFCY0FoQmdrZlViSGZoYmtkemFSY3djTmhxYmJoMWZFZmxmWGJraFljOGFhaFdmRWVXZkdhR2FZaFVkWmFtYVpiaGdjZ0ZjVmd2ZFdla2VjY2RnSGNVZlpnQWhkY0hmWmhuaFlleGhsYmpoWWdRZDlhU2hFZkdkUmJNYWRkbmRaZlNjUWhoaFZiNGFkaGhhSmdMZ0ViV2RsZFplWWhuY0pod2NjYUViaGVEY1NhVmJwYTFkZWVFZnRhM2RlYW1lbGhYY0NjMWVWZk5mUGhWZ2thTGJiZzBkVmZiZUpoaGVSYm9nT2FVYmRmb2JGYVViaGdRaFJjeGFCY21hY2hsYVloVmdhY25nSmVSZ0llMWVkaEhnQ2UyYWxneWRCYUFkTmFNZUZnR2ZaZW1nWWRYZ0JkVmdiZjFocGRIZEhoUmgxY1ZnRGcxZjVhcmhlYm1kTmJOZGFka2NzZlBiVWVoYkJja2JUZUhjWWhnYkVneGhBZlZhTWNYZVloUGVTaHhhQWJYZkVjU2FzaGhoZmJnZDhoSmRWZjFjRmhhZmFjV2NSYkxmWmJtYnhmZ2hWZHdhVWZRZlRlU2JCZkNiRmVtYUZkdWVVY25keGVWY2ZkemZsZEhnYWJCaFZhSWVVYkVnY2JRYlphbmRKZVdjRmZXYnBleWRVZ1RoSmRYZVZneGFaZGhmTmRWZTVhUmVOZ1Jkb2ZaY0pkM2NCZ21nVmdYZk5iR2ZSaHdid2VMZ1hoRmRJaG9iYWR5ZzRjcmNCZURmbGJGZGNkQmJNZUFnZGJFZ0JhY2dkZ2xjSmhDYkZiWGZoZDJmRWFrY3NmWWVRYzFlbGdpYmNlbmJBZi9oU2hGZTVlSmFVY2pneGY0ZlZjMmh0ZjZiUGZWYjVnWmVUYkJkbGJnaFRka2ZWYXhmRGh3YTFmdmRUYzJnQWVCZVJnMmhVY1ZnSGVGZWxlT2ZIY0VleGF5Y1ZkaGNWYXFhY2ZsZEZnM2hWZTBib2VXY2FlV2ZFZFdnR2JDZjRjVWhlZTJmWmdwYU5mVmNWaHpkUmRrZ2RmSmZGZUZlVWZPZmRoR2FNaHpkWWcxYU5oMGNWYVFkOWhhY0FoM2RaYk1iZWMzZllkR2VTZHhoeGdqYlhlQmdKZExhR2RFY05kWmFZZW5jSmJ3Z2NiRWhoZ0RkU2NRZ2dmd2VMZEJjNGRsaE5iR2FsZGZjY2h4ZEFnWmJhY0FldGVGZmJjeGFFZ1RjYmIwZWRhemZFYjBlZGVvYUhoUmJ3YlliRGNrZk5jb2VEZFJnY2ZGaGVhbmJKZU1iZGYwYkZoZmdBYjNhcGEwZkZlaGQ1ZW1iWGNHZTlocWJTZjNhQmVWYWJlMWRwZUhmSGJSZTFiVmFVZW5kUmRyaGVmbWROYU5jWWhoYjlnSGhHZDBiTmdxYk1kemVkYm5oUmZFZkllSWRlZERjNGZTZVZnUWRaZWRiV2ZYY05ia2hlYlhkeGNpaFFkMGZsZWFjZGVYZ2hnTGJkZTNhcGJwZ1ZoMWdraFFnR2FXZmdlRGZFZlNkZGRZY1FnR2ZFaDRhTWZnZUJjVmNhZ0FjaGdJZlJhbGJJYUZlZGhXYWRiV2hFYjJnb2U5ZldlSGJ0YzljU2JoaFplcGhZZFJoWWVZZVpkaGVSZW1hWmVtZ0Zld2JWYVdiOWZTY0VkMWhWYVVnQmhsZHdjTGNLYm1jNWI3YVRnWGRkYUxnUWVGYkloT2hlZGxoSmgyYlpoMGZSZExiR2hWY0poMmZFZ2tic2RZYVFkMWJsYWljY2NuaEJnd2dTZkVlTmNKY1diaWJFYndiQWRpZ1JiUWNhaFZjZGhaZ0VkQmdsZm9iQ2cwYVZndmFFaFJjTmh2YlRnbWNnZjVmUmYyZGdmVmZTZkZnQmFIY0VmR2haZHliVmhrY2hhamVmY25idGMzYlZnMGJvYldhYWRXZkVnV2hHYkdjWWNVY2JjaWI1ZHZjSWRBaGNmZ2FEY2dmaGJKZlJjQWVVYlhiZWJqYWtoMWFOZ3djd2crZURkbmMwZ2JiVmN5YndmWWZkY21mdGFTZUNmaGhzY29kSmJGZzBjZmhWYXhiY2ZBYU1kamZkZStlSWRnYWNkWGdHZDFicGZvaGVlQWMwZWljTmFDYW9jRGhFZ0ZjOWdYZ2FmQWdNaFJnWmRoZEZlSWFSZFVnZGN6YkVlMGdkZG9mRmZVZGhkUWdSaHhiQmVtYWNoaGQ5Z1RlYWduaHBiWmhmYndhTmFLZ0VoM2RSZWhiQWRBaHhkdmNHaEdhWmUyZlllV2MxZklhYmN3ZTVmT2hGYUJnMGhIZEZieWhBZStoS2hDZzFkTmJQZmdjTmZHaEFmUWd0aE9iVGhIYVpjMmdVZGtkSWZWZGVhSGNZZFNmU2R4YWhkRGZFZUNiUmZ5ZmVmQ2JSZUlnWGZWYlJhYWhaaG1icGZDZ2RieWZGY0RkVmYxZGtjUWRHYldnZ2hMYlJnV2Q4ZVJjRWgyZjljSGNjZXhjTWVSaEtnVWJkZUloQWNrZWNiTmVaYmlmWWZlZVhjRGNsYjhlTGFqZVpoSGRXYWdiMWJEYVlnUmdZZFllWmRoZVJkbWFaaG1lRmJ3ZFZjV2Y5YmFoUmR4YzFoVWZFYjFnSmE4YVFiWGhwZ2pjVGNXZXBlTGVEYjFoSWdRZVpjRWZ4aDJlZGNsZUpkQ2dGZlhjaGErYkdjaGQ5Z1FkQ2dnaHBhc2NEYlRiRmZnYldhRWJOY1VjV2RpYUVod2JBZmliUmgwZUZlaGFaZ0thQWVoZkJla2dJZ1VkVmV2ZkVnUmJOYnZnUmEzZU1jVGdSZzJnZ2RWZVNiRmJCY0hmRWdHZ1pjNmdBaGxiMGhqYkljVmI4ZEloRmRsY2tkRWhhaFhmd2RXZVNhbWY4ZlliVGhHaFplaGNjZ0ZoVmR2aFdha2NjaGRlSGNWYVZjU2dkZkdmdGM2YVlmMGExYWliR2dRZDliUGFFaERoQWNFY1BheWdWZmNjUGhWZFJhc2diZ2hkdGdIZ01la2ROZVphWWRuYkpld2djYUVkaGhEZ1NhVmVwZTFoZWdFZHRkM2FlZW1jbGJmYkRkVmZoZFFoT2Z3ZFVmNmNMZmdlVWRMZWJmMWdwYnpkUmZ3YThiaGdSZWtkWWh2Z0JmZ2NGY3dmZWIxZG9oL2JhZG5iSmhSYmRlMWRkZUtmRmJtYWxjaGRGaGhlaGJtZkZmR2FaZm1kWWZYaGdoQmJKaHhmTWhVZ0VmMmRJZ1VoUWEyaEpjcmJaZzJoTWhmYlloMGZjaGxiVWVoY0Joa2NUZUhkWmcyZlVia2NJZlZoZWhIY1loU2hTZ3hkaGZEZ1djWGJGY2doY2FHZjFhVmZRYXhiMWJUYVhiM2JoZ0xhZGEzZnBhcGZWYzFha2NRZ0dkV2RnYkxjUmFXYzhkUmJHZGtiVmhIaGNneGROYkhiYWhCaFZhSWZVaEVnY2FRYVpjbmJKZVdnRmZXZnBmeWFBZ3phSWVEZEhhMGhRYm5nWWVVZkpiUWVMZDBnZGQ5aFRjR2VGZ3dhVmVXaDlmYWVSZXhjMGVkY1ZlVmVKaDBlYWQzaHBlamJHaFdicGdHZUVhbGVJZkRjZGhsYWRjY2FkYmxlSmRDaEZiWGVoZjJlRWZrZ3NmWWhRYjFlbGJpZ0xjMWNwY3diU2FFYU5lSmdXZG5lVmQ0ZFNmM2VkZDZiYWFWZGNkUGZVZ1VhdGhvZlFna2dWYXljRWhSaHNmN2REaHpjcGFBYlNlUmJkZlVlWGZFYWhiSGdEYUhjcGh5Y1Jmd2FOZ2phY2NnZzFhM2FBaHdnSmNmZE9kbWI5YnBoV2RYYlVnR2RhY2tjeGVoZmNnRmdWaHZiV2RrZmNjZGRIZlZlVmZTZ2RhR2V0YjZkWWZ3YWhocWFWYWdiOWVhZlJoQ2h3aEZjSmFYY2dkdGRBY3dhUmh1YmRnZ2c1ZlhlR2VGZUpjUGZhZTNkSWJzZ2NiQmF3YkxkQWJBYmxmN2dCYXdhcGJuY2FmbWhWZzliV2NSY0FkWmhhYkFjdGRGZ2JjeGFFZFRoYmUwYmRhemdFZjBnY2ZuZkZoVmNWYVFnVGIxZWxkbWNiYUVoZ2JMZWFmaWNaaFllZGh3aHRiS2RIYWljeGFoYUNnZ2VSZ21oSGhIYlZhMGRZY1hjMWNWY09jMWVOZU9kRWFUZ2RhVmZVYm5jUmFyZ2VnbWROaE5iYWNrZHNnUGdVY2hmQmNrZVRmRGQ1aDJkVGQwZklkZGNQZVhiWWhNYVZoUWdaZkRnRGFXY3RheWRMaEhmQmNBZUNma2hsaEdjYWVYYmhmRGZaZEdlaGVwaFdnbGFsZ0VjRWRHZEViUWViZDJkOGRSZkVjMmM5ZEhhY2V4YU5jSGRhYkJnVmdJZlViQmVWZ1ZoTWFpZWNjRWNXaDJkcGY2ZmVnM2ZkYVhjU2FoZVplcGFZaFJiWWRZZ1pmaGhSZW1kWmNtZ0Zid2NYZlRlc2RTZkRna2Y0ZVRoS2FoY05ma2JlYTNhcGErYVRiWGV4Z2VnR2ZrZ0VlRmJaYUVhcGYyZFBkbGN0Zk9iUGMzZWhlMmRFYWtlc2JZZlFoMWVsaGlkY2VuYkJkd2dTZUVkTmZKZ1VnaWVFZHdnQWNpY1JmMGZGZGhmWmJJZ0JmaGVsYTFjQ2h3ZzFkdmVEaHdoMWh4ZVJjMmNJYkZkVGZtY1FoL2ZTYkZiQmNIZkVjR2VaZnlkVmZoY1ZlcWVjaGxiRmMzaFZlMGhvZGVmUGFTZWxiZmVTZjJnaGNyZkpmM2VWZHplY2dFZGhhdmRUY0ZoSWVJZ0Rla2RCYVNiY2FtZXNhMWJhYmthRmNBZFNjd2Y5ZFNhRWRHZ1JhTWdkYm5lWmFTaFFmaGhWZzRlZGNoYkpoRGJUZkFjc2hRY01mWGd3YVBnTWNWZnhiYmhTYlVlZGcxY05jMGN0ZXBjWmRIZGRhWGRTZ0FmWWNRZVplQ2ZGZkZoYmJ4YkVjVGFiZjBnZGd6YUViMGhkYm9jRmJVaGhiUWFSYjBiUWN1ZE9hd2dVZC9jYWFuZEpkUmNkZjFjZGhLYkZmbWhsYmhjRmFoZmhnbWFIaFhkMWRNY1ljWGJCZlZlYmExYnBjSGZIYlJkMWFWaFVkaWFsZ2lmZGRrZ2xnTmNhYWtkc2NQY1VmaGJCZGtjVGJIZ1pmMmhXZWdob2FiYUtnQ2hSZGRnSGUxZWNlWGdBY0RmSWMzaGZhamdNZUVjRGdBZmNjZmdkaFdlVmFMYU1kU2Q4Y25lRmZBaDFhWmdWZWlkWWRMYlRmV2NZZlJlU2dFZVZmSGFjY3hlTmJIZ2FkQmRWY0lnVWRFZWNnUWdaZ25hSWZFZVVnRGU0Zm5nQWN6aGxoWGhCZEZnTWYrYlllVmg0ZFFiTWFsYXdodmNOaFdnOGhQYkZjSGY5ZEthU2d4aDFmSmNIZ1Jic2huaFpoUWdVYWlnWGJIYXhnSGNEZHdlWmJZaExmUmM5ZDRlQ2dSZk5kUmdCYTNlUmYyZFJiZ2JOYVJjRWdGY2NhZGFNZzJjUmVvaFFnVmRoY2pmV2RuYlZkNGNTaDNmZGI2YWFhVmhkZlpoRWVFYlJoaGhCYzJhOWd2aEVkUmNOYnZhUmUzZE1hVGVSYTJoZ2RWZ1FhQmJsZEhhRGRXaFlnSmRLaHhieGhtZFdkRmZGYjNiVmQwZG9mV2FhZFdhRWNXZkdlR2NZaGNkSWIyYVpiOGRjYUJmTWE2ZEZkQWdSYUpjVmhCYm9mY2VkZEdlTmR6YVlkeGFaZkFoU2R3YTllU2ZFZ0djUmRNaGRmbmJaZlNjUWFoZFZhNGZKZUZkY2ZmaFRnUmJFY1hnWWhqYXBhcmdXZmtkaGNEZ1NkVmZwYzFnZWVFZHRhM2RlZW1ma2hLZFZhMWZGaEpmT2RFZmNnY2haZDBoTWdmY2Jld2g1ZjZlR2hraHRhQ2hGYVViaGJRZVJieGVCZm1hY2dsY1lnVmVhaG5oTmRaZUllUmVnaERlVWdtYWxleGNGaGhnbGU3Y0NmV2NZZ2phWWZYZlpoVGZiYzFkSWNUZUVhMWFnYU5iQWNqY3NiNWZMaGpkQmNOY2RiMGF0ZktoV2F4ZmxlL2JaY25lWmIyZVVha2VJYVZiZWFDY3NnYmhRZDBld2FMYUVoRGhGZDdlYWYxZHBkSWZRYTBjbGRhZktmSGdSaGhkZGQzYXBlcGJWY3hhOWRGY1ZoeWh0aGZiRGdDY0JoZmNFYzJnY2VUYWZheGhNYlZiWmRCY1ViQmFXZVVlZGFMZ1RkSGVKYldjRmhXZXBheWhVYVhnOGNSYkhjMWVnYnFoTmdWZjlkWGNLZkJmUmN1YU5nR2ZoZndiRGNrYlZmYWNSY3hiMGhkZ1ZjVmdKYjBnYWh6Y3dnMmZBY3lia2JmYlJnaGMxYWVmWmJBYWxiK2JJZ2xkdGRDaFRobGVKZjJlRWZrZHNiWWFRaDFnbGFpYWNlbmNCZndhRGhnZ3doYmZXZG5lMGR1YUNhaWRWZzZmT2cxYmRhRWdFaEdjSWFWYkJlMGhVY21mRWdRYzVidmFWZjNkOGFUYkFhbWNnYkliU2NBZlJnSmhYZENoTWU4YUVmVWRFY2lkYWJWYUVneWJWYTFoUWhXZUllSGFvY1dmVWNXaDBoZmViZTJmWWU2YVdkbGdWZ3ZlV2FrZGNjZGFIYlZjVmRTZGRhR2R0YzZkWWF4aHNicmJHZFFmOGdkZUViSGJsZk1mSWNuaGdoUmFDZWxkUWVxaEZkVmUwaFBnWGNTY0lnTmZhZGpkdGg1YWFlMmJKZ0RkU2VWY3BoMWZlZkVmdGQzZGVobWRsY1hmV2NSY0FiSWZlZ2hlTmhGZ2NlUmRGaGNmUmdVaGRjemNFYjBkZGRvY0ZiVWJoZ1FjUmd4ZUJmbWVjaGxmWWhWZGRhWGJJZERoZWVRZWNhZmdSZ1NhRmNwZFdoUmJGZE1iRmNHZVpjbWNZZ1hiQmFWYmJmMWJwYUhmSGZSZDFkVmhVZG5jUmV4Y2VlbmRGZWRmZmNsZU1iUGVUYUJmQWhyaFpkbmJaZzJhVWZrYklkVmFlZkhjWWNTZ1NneGZoY0RmV2JXYkpheWRiaDNlQWdhaFRnUmFrZ1BkSmdqZ0JiRGdaYm1iTmc3ZVZhd2FVZFFhRWNTYWNmTGVXZDNnRWZSZUJkV2haaExlY2N3YkpjVmVjZUJnVWdVYlVoRWc4aEdiZGRYY0pkUWVGZFNiVmI3ZVdoRmUxZFhlU2doYlphcGZZYlJhWWhZZFpnaGhSZ21hWmdtZ0Zid2hWY1hoVmZhZVVjZ2FnaFBnVGRFYVJnMGJkY1hmb2NzaFRlVGVZZ1hhRGd4ZzBhUWVlaGxlRmUyZ1lmMGhWZFJnQWdXZnhiY2VFaGtkc2VZYVFlMWZsYmljY2FuZkJod2VTZEVoTmRKZFdmbmZWZG5jU2R5Z1ZlMGVPZlFkSWhLY1djQmhGZjZmR2JWYUZkdmJUZ1JhTmJuZ0NnSGRNaE5hV2RXYWdoRWRXY2xkbGhMY0ViSGRkYWdkVGJoZlViMmRjY2xkbGUvYkdoRWVvYkloZGQyZEViQWdFaFdkWWNTZlpmbmJCaHliZWRWYmxidmVTZDFhVWZGZkhkUWVsZVNlZmdIYjFncGJZZDBidGJxZUJoQWFaZ2JlT2htZlJhTWJkYm5iWmJTYVFoaGhWaDRoZGdoYUpkTGhHYkVjTmFaZGVoSGhKYTRhT2ZVY05jSWRSZFhiQmMxaGVkRWJ0YzNhZWJtYWxmWGZXZFJhQWFaZWFkQWJ0ZEZkYmh4Z0VoVGVaZndnaGJ6Y0Rma2VkZCtoQWNGZjFoRGhVYlJiQmF0Y2NibGM0ZmRoWWhtZk5oQmZaZlVkUmNLZEVoR2ZrZXVnSGZ4Z2hnNmZDaEdoWmgzZ2NhWGdsYVZlTWYxZ3BnUGREZUFoMWdIYlFiWGdSYXRhZWVqY2RnRGdLaFFmTmFPZkFlSGFNYnJlQ2JEZE1jWGJCZ2tmcGRjYWNmWGY4YWJkUWNoYlJmcGNXYldoSmh5YWNoSGFCZkliUWcwYWxjYWdkYVhjaGNMaGRkM2ZwZnBhVmR3ZHNlZWFTaFRlMWNZYURmV2RjYjdlRWEyZDliSGdjZXhnTmZIaGFhQmdWYUloVWZFaGNiUWRaZ25lSmNXZ0ZhV2JwZXliUWcyZE5oSGJTZWtocGRwYmFmVmFrYVliZWRBYXBkbWJkZTNibGE1Y1dmVWJWaGFmUmN4ZTBjZGhWZFZmSmEwY2FoM2FwZWpiVGVXZ3BkTGNEYzFmSWNRY1poRWV4YW5kWmJFZXBmQ2RTZ1hnaGErZEdnZ2JRZllnWGZVaGRiaWVZaDJjSmM1YVNkRWZWaEpkVGRHZlpieGdSaDFiMWI2aGFoVmZkZ1plRWZCZ2xmb2JDYTBiVmZ2YUVhUmFOYnZkUmYzYk1kVGZSYTJkZ2NFZFdka2hoZkhmVGZHZFpiNmFYZWxjcGVxaGJkRWU5ZzNnUWVVZk1mV2JiZjJnRWVBY0NiMmI4YlloVGJHaFpjaGVjaEZnVmR2aFdla2RjaGRiSGhWYlZoU2JkZ0dldGY2YlloMGExZXFlU2d4ZjVoQWJDY0dmUWFRZ2RmbmI1ZEVnVWdSYVZmK2VkYmxnMWNDYU1ka2VOZ1pkWWRuaEpmd2NjYUViaGVEY1NkVmFwYjFlZWdFZHRmM2FlaG1kbGNlYlVnQWJzZXpmYWRBaHRiRmZiYnhoRWFUYmJhMGhkYnphRWZ4ZHBhQ2FGYlVhaGRRZVJoeGFCZG1mY2RsZFlnVmdhZmlhQWdVZklkd2ZJY1lmV2NHZGtidmFVYjBiOWFtZ1lmU2U4Y29oTmhXZGdnMGdQZ1FiZ2hHYVJoQmJVaEhnV2gyZjloQmJlYW1kTmZOZWFla2hzZ1BkVWZoYkFlNWVaZ25hWmEyZFVoa2NJaFZoZWFIaFlhU2dEZlVoMGVOZEdjamNZZDdjUGF6ZjVoSWVEZ0VhRmhUZWRmU2VOYmhkZGMzY3BicGZWZDFka2dRZkdmV2JnZkxlUmFUZTFnVWVSY3pkb2VWY1BmUmROZlZhYWRBZ2hoVmNVZkFnWmJDaElhU2FjYmJlVWhDYlFobWNBZm5ma2RiZERjMWJnYnVhTmNWZTRkeWJaY2hiUmRtZFpobWZGYXdjVmZXYzlmYWdSYnhjMGFkZlNnbGdJZjZnTGdpZjFlamZBZG1mSWRLZlhlUmNWZEZjS2FRYmtmNGdJY2dkRWE1YkJkQWVWaC9kSGZCZDViSWNCZXhmZ2IyYU5nM2RnZXhnR2RnZVFiY2NGaHpkQWYyYkhneWVRZkJlZWdTZnBlUWRIZGxiMGJoY1RhQWFBZzhlUmJSYnRibWJiY1hjTWdUZFJlMmhnZlZnU2VGZUJoSGFFZ0diWmd5YlZlZ2U5YnFhSmZoYmtkK2RCZ0VjcGVmYkplemFKYUNiV2hTZ2hmWGNJZ3lja2duZ2NnQmVwaEZhV2hraGNmZGJIY1ZkVmJTYmRkR2d0ZzZjWWMwZzFlcWFWZ0FkOGRFYlhneWMwY0llZGZqYjVlY2RBaFZiUWYwaE9laGNvYWZmVWRBY29jS2diYm5jSWV4YklhZ2Q4ZFdkQmhCZDhkN2FMZEJhZ2JNYWFhaGRSZWVnY2N4Y0FkWmdhYkFjdGJGaGJjeGhFYlRlYmgwZGRkemZFZTFhMWNvZ1dld2MwZUhkUmMxYzlndWJNYXdkUmNTZ1BhemI4ZlVlT2RRYk1iWmhiYlhna2djaEhmd2hOYk1iRmVHZVpjbWVZYVhhQmJWYmJjMWRvZmFlTmh4ZDFnVmhVZW5iUmVyZGVmbWVOYk5lTGFCZDVnQmdFZFVhUWR0aEFlemZoZTJmR2VrZ3BnQmRjZVhmWmhKZlliUmFoY0RmV2dXY0poeWhjYkhoQmVJZFFmMGFraElkTWhDZXdlZWNKYVRoUmZwaFhlM2hNZlFhR2dXaGdjTGZSZldhOGNSY0VnMmM5ZkhlY2Z4Z05iUGFQaEZhMGRCYkFnMGVsYURlSWN6ZWNkU2FGZFhoZGZ5aEJlWGNjY2VmQmhFaFVhOWJJZ0ZhaGFiZEloMWhzZmdoWmVpZjlhd2NTZG1lOGRPZVNmVmc1YVJoR2JoZHdheGFZZDNhTmhqY1ZlMmNvYkZkQmV3Z1loWmViYlVnQmdjaGRjbGNKY0NoRmVYZGhnMmFFaGtjc2FZaFFlMWFsZmlhZWdpY1FnNGNBZVJjQmFIY0RhR2RSZzRnVmNuZmNhdWFJZ1JkNGhLYUhla2NvYnRoVGdnZ0ZhaGVVZWxoOGFnY0NmVGhZY2JnVGFtYlpoVWhEYkJiUmRQYlFjMmg5ZjhkRmgxZkVndWRlZWhiQmYrZ1hja2ZZYThjYWhXZ0VkV2dHZEdiWWdVY1pnbWhaZWhlY2VGYlZodmhVZGhjTmJWaFZiQWNaZ2NnSWhuZ2xmNmhmaGtmMGErZ0FiMGJZZkJnSGJqZGNjSmhNYXpjSmhjaEFlVmVrZzNjT2NGaGRnRGFFYlVkMGZZYkpnamNaYjRjTWVVZ0ZhS2VSZFhhQmYxY2VoRWN0YzNmZWJtYWxnWGZXZlJlQWZaY2FhQWF0ZE5iT2IxZmxnYWJQZkVia2NsY0FnRWFkYzFhRmhSY3dnWWVEZ2toTmJvZ0llUmROZFFiTGhuZndnU2dPZ3hiZ2VFZVViMmFGZm9hSGF4aFJiTWJGYkdjWmZtZllhWGZCYVZnYmgxZXBlSGhIYlJkMWNWZFdmaWNBZWpmTWh6ZUJmRGRQYUZhOGNQZ1RheGFBZHdkQmdEZThkbGhYYUJhRmhRZVBlVGNJZGNhQ2hGaFFiTWVGY3llZGI2Z2ViWGc0ZWJoRmFnZnNiT2hKZXpoa2JJaEljM2NJZjZiWGRsYUFmY2JNaDJmZ2hMaFJmV2U4YVJoRWYyYTllSGJjY3hkTmVIaGFjQmMwY2NoR2ZBZjVlRGNhYkNiWWRaZlFjU2ZzZCtnTGRqY3NoU2RCZkJlWmMwZFlhUWRZZ1JkYWZqYTVobWhaYW1iRmV3Y1ZiV2E5ZWFjUmJ4YjBnZGJWY1ZjSmQ4Y1BoemFJYnFiSGdtaFFiR2hTYmhmOWNEaExmUmdZYXpoZGZraDllQ2hCZFhmRmE2Zk9nRWJzYVlnUWYxaGxlaWFjaG5nQmR3ZlNiRWJOZUpjV2RuZTBic2JBZ3plNGFwZVpkeGNvZmNoWGNWYVloNmRVZmtlVmZ5ZkVkVmUwZjZnQ2d6YjhmYWdTaDBnSWJWZVNnRmVCYUhkRWRHZ1poeWNWaGhkVmZxZ2NnbGFFY2phSGV3ZU5jRmhRZDJmRWNXYkdkR2dZZVVjWmNtZ1phaGRjY0ZhVmNtY1FlV2gwYWRoSGRWYVZoU2hkZ0dkdGI2YVloeGhCYUFoU2N3aDlkU2JFZEdjUmdNZmRlbmFZYkVkQWYwYmRhNGdPY0JmSmNXZkdoQWRwYlJnY2QzZ3RjK2dCY1NoRWF0ZlBiVWR4Y2hmZGVHaEZmM2ZlZm1jbGJYY1dnUmhBaFpiYWVBYnRlRmRQaEJhRWdPYWJkd2ZsZzdhRWRWYVplNWdBYlZiaGJBaFVjQWhGZHliWmRVZjRhQWZlZW1nVmRGZFljVWI1ZGVkQWRYYkJid2RGZEJlRmVxZFBjbWdaY21nWWhYYkJmVmJiYzFicGVIZkhiUmIwYlVmVWNtZGxhcmVOZ0didGJQYWViMWU4Z2ZnUWVBZmxjd2FXYm1lRmNsZFJhRmhRaE5hWWFXZ0VnQ2hXYWdoRmdVYVNlM2JWZndmZWdYYXhlaWRRaDBibGZhYmRoWGZoaExoZGgzZnBmcGdWZXdod2VRZUJoR2ZoZEZnVGZXZzBmQWVCaFhlOWJlYlplZ2V0YlFmY2RRYmRiUmNRYzFiNGJDYmZjbWVGYVBkQmdIY3hmamRVZTNiNWJiZVlhQmhaaHBjWWdSY1ljWWNaZmhjUmJtZlpmbWdFZjJmVmJYZUpnYWZDYVJoVWFmZVRoRWRSaGhjZWgyZXBheGZWZ0hhaGdmZEhoVWFBZklmY2UxZFJla2diaGtiZGhWZERiSGVwYS9kSGJtYUVnWWNRZTFobGJpYmNibmhCZXdmU2dFYk5mSmVGZW5iVmRsYVNjemFsYXlhYWEwZFZoQmFCaHdobGM1YUhnRmNKZDdmQmFBZU5lL2hWZG1kRWRGYVZoM2NnZ0hhWGJrYUZlRmFHY1hmMWhZZlZmaGdWYnFiY2hsYUZoM2VWYTBob2FlZEpmbWM5aEdiU2RpZGxnQWdLYVRoSWM0YkliQmRCaGhhRWZ3YmxkVWJTY1ZlVmZQZWRnQ2FOZnphYmUyZ2RhcWdTY3dmOWZTY0VmR2FSZk1hZGduZFpnU2hTY2xocGUyYUpoa2NBZUVnVGhBaHdmTmVPZHlkSWMxaGZoaGQwYVRlRGhSaHNoaGdQYlVhdGVxZmVhaWM4Y0NjRmIxaE5jTmVJYVVhUWNMZWJjeGhsY0hoWmNrYmNob2NPYVVkZGFvZkZhVWVoZlFhUmd4ZkJobWdjaGxlWWRWY2FnaWFRYlFhSmNWZ2NoRGZHZmtnTmhoYkZjaGNoaG1mRmZHZVplbWZZaFhhQmJWaGJkMWRwYkhlSGJWZEpmVmZUYzNiUmNwY0thVGZjZGZnSWZ3ZlZhSWRVZ0JlQmM1ZlViWGNZaGliQ2J4YkplUWROY3pmQWNTYUhnd2FOYnBmV2JXZkpheWJjYkhkQmdJYVFhMGJsaGFiZGJYZmhnTGVPZUhocGZ2Z1VnVmFrZVllRWVUZXdnTGNXZEdjOWJVZkdiemd0ZE9lZWJoZTlmSGdZZ0ZocGNJY1RjVWNjY1JiZGEzZHRkYWZGYVdkSWQ3ZlVjV2hwYVhjU2Z3YlpmZ2JhYUJlb2V5YVpiaGNSYW1kWmhtZkZjd2ZWZ1dhOWFhZ1JkeGgwZWRiVmJWZ0phMmRQY2pmUWhuY0NiQ2d3ZUNkUWNSZmRlVWRaZmtmeGgzZWFlMWRJZVdoVGhDaGdhemJYaFFmMGZZZ0ljZ2dzZHdoTWh5aGtiU2NIY1FhVWRQYkhleWJkZzRkVGhYZ0ZjUWdhZVZlZGdaYUVlQmZsZG9oQ2gwYVZhdmVFZ1JjTmV2YVJkM2dNZFRmUmd6ZndhVmRBYVJkNGVVZVJlQ2NjZjhlRmhWYUFibGhOZ0ZiRWJXZEJjUmVoZVhiTWFBYk5nRGRYZGliQmFSaE5mR2NaZG5oZGNuZTljdmdXZWthY2VkZkhmVmRWYlNiZGJHZ3RnNmhZYTBhMWZxZFNnd2U5ZVNmR2RHYndnRmZkZm1hdGNTZ1Fnd2ZWYnhoZWNoZUpjRGdUZkVjTmRFaFlkamh3YzFkSmMwZWdoMmZBYkJiUWVoZFliQ2FvZGxiS2JDYmdhT2RVaFVmUWRRYVloUWJKZWVnUmRSZEVjVGRiZDBiZGd6YUVjMGRkaG9kRmhVZWhlUWRSaDBhWWVuY0llRmdaYmRmYWZtYzljUmdaZjFhdGVnZEZkbWhsYmhjRmZoYWhjbWFGYkdhWmRtYVloWGdCZFZoYmMxY29nU2NIZ1FjQmRWaEJnbmRvYW5oUGF5ZzBnS2RQZmdjTWJEZGVmQmdCZWtiVGNIZ1plMmdVZmtoSWdWZmViSGhZYVNnU2d4ZWhkRGNIZDJoSmV2ZmNoRGVoY0liU2VFZ2tlUGdiYWxiSmNMZmRlM2NwYXBoVmgxZ2tmUWZHY1dhZ2dMY1JkV2E5ZFllVmZXYzljUGhZaHhkTmhhYmRjUmhVYmRhV2NVZWRoQ2JJY3lmWWhEY1JheWJSYnljQmhUYThkZWJHaFFiMWJEZlloUmRZaFlmWmZoZlJibWNaZm1kRmV3aFZiV2E5ZGFkRGNsZ3NkZGFYZ1hoaGgwaGFnM2NwYWpmVGJXaHBjTGVEYTFjSWRRZlpkRWV4aDJlZGhsYXBnS2VRY1RkQWgvaFFmVWVWZU1lRGNBZzBiamFQZ2dhOGM4Y0RlUWMxY0phVWZXZ2hhNGdIYW5hNWEyYVFhMWFkZFpkRWZCZGxkb2FDZDBiVmh2ZkVmUmhOZXZmUmczZU1iVGdWZjJnZ2VJY1ZoVmZBYlRmV2dDZThnaGhXYUZnZ2J2ZFBod2VJZCtjRGZRaDhnV2JiZDJoY2M4ZUdhR2FZYVVlWmZtZVplaGZjZEZkVmh2ZFdma2JjY2RiSGFWaFZlU2VkYUdnTWZ1Yktld2NRYzVmUmVVZ0lhWGVYZ1Nkc2hlZ0xoM2JaZlBiUWZsZnBhNGNhaFJhSmJKZkdka2JOY0RjWWdqZ3Rmd2NiZDBiZ2ROZ0RnQWExZTFlRGhRZUlmNWdMZ25mRWMyZUNkMGRKZ1loTWZRZE5oV2JmZFJlZ2VUYWRkVWZjZTloVmNoYkJkb2dSYTBlQmdEYlZlUmVsZnZmZmVuZndnVmNhZ25mSmZSZWRnMWFkZEtkRmFtYmxhaGZGZGhhaGNtZUZjRGFJZnVoS2NDYk5lYmFJZmhnOGdLYVRhbGJRZ1BmRmUzaFJhZ2VlZGpoWmdOZGRna2VzZGNmUWNCYmxlT2VUZkhmWmYyZ1Vna2RJZ1ZiZWhIZ1lnU2ZTZHhiaGREZ1VnRWFoZ3loY2VIY0JnSWVRYjBibGdhaGRiWGFoZ0xkZGIzZ3BjcGNWZHdkdGRWZlRnVGQxYVpkQ2YyZzhhWmFPYVdiOWdIaGNmeGhOYUhiYWZCZVZmSWhVZEVhY2RRZlplbmRKZFdlRmNXZm9iOWRlZDNnZGFYZVNkaGRaYXBlWWNSZlliWWJaY2hiUmNtYlpibWdGaHdmVmRXZTlnYWJSZHdoSWdkY1hjUWNZZThjSWNpaGxidGdBYkNmOGZHZFFkQWRCZkpoWmRFZWRicmdkZmdjWmZMYVBhM2FoZTJnRWRraHNoWWFRZDFibGJpZGNlbmhCZndjU2RFZU5hSmhXZ25nVmE0YlNjMmIxYTZiSWdIZzFhWmRFaEJmbGFvYUNnMGJWZ3ZlRWNSYk5odmJSZjNkTWZUZFJiMmRnZVZlU2ZGZEJnWWJFZURmSWM2ZEhkMGZaZWtoUGJ4ZFFiNmFHZ0JoaGdQZlpnemhKY1RhVGNHZDVoQWZhZkRiVWIwZE1haGFRaDlhQ2VBZlpoRWJGZFVmVmNlZmRiRGg1aHpnYmIwaDBnK2ZBZTBmWWNCYUhlaWdrYkpnT2N5ZVViYmZHZkZhQmh4ZFhkQmdKY0xhR2VFY05hWmJZZW5mSmd3Z2NjRWNoY0RhU2ZWaHBoMWZlZ0VidGYzY2VjbmdOZ1hnRGFSZjVlYWRKaDFhc2VjZFpiMGNWYWJmSmRoZVJoOWRYZGdlSWJsYVdmaGZvZUpjU2R4ZEFkeWRPZWhlOWhHaFpnRGQ4YVVjT2FnY1FmRGVUY0NoeGJ0ZEZlZ2doZXFhRmVEYk5ldmJiaFZhcGFWaGJiMWFwZkhmSGNSYjFhVmJVaG5iUmdyZ2VlbWZOZE5lYWhrZnNmUGJXZmtiUWRzY0JoU2VWZjRnSGJ3ZGRjWWhLZXplOWRJZkRjaGZoZkliUmdHY0ljbmZlYVhieGZpZFFlMGJsZGFhZGFYY2hlTGVkZjNlcGZwZlZlMWNraFFlR2hXZWdiTGZSYVRhdGJaY1dkamN4YnRhY2d4Y05jSGVhZUJkVmhJZ1VlRWNjYVFlWmhuZEpoV2RGZ1dmcGI3ZlNkbGcxZVhnU2VoZVpicGZZYVJmWWRZZFplaGhSZ21lWmFtZUVhNWFFYzJoOWRTY0ViMWVWY1VnQmFsZndhNWFMZmpoY2h3Y0JkRGdBZU9mRGcwY3djUWRkaEVlVmUyYUxnWGZoY0NlRmJYZWhlMmhFaGthc2ZZZVFmMWJsZ2loY2RuZkJhd2NTaEFjeGFqZldlbmZWaDRmU2QzYWRoNmdhZVZhZGFaZ0VkQmdsYW9jQ2YwYlZndmdFYlFieGN2ZVRkeWdkZWJiRGdqZXNnYmhCaFJnVWdLYVhjemZRYXJlVmFoZDVhM2FjZmdnVmY1ZkJmQWJaZmZnS2NpZ1FoZWRDYUdob2RVZGRmWGdSY2hjZmhWY1VlN2NFZmdhNWFPZkVheGRnaFhkT2ZUZGdkemZPZFFiaGJqY1FjaWJWY1NiRWRHZFJiTWRkZW5mWmNTaFFmaGNWZjRmZGNoZkpmTGJHZUVlTmRaZGViSGJJZjVmV2RrZ2hnRGhTY1ZicGgxZ2VkRWd0ZjNlZWFtYmxmWGNXaFJlQWFaZmFnQWF0Y2FnYmgwY1ZhYmhKZ2hhUmE5ZFhhZ2FJZ2xmV2hoY29hSmFTZFVoTWNqaEphbGQ0YS9nYWduYkpkUmJkaDFhZGhLY0ZhbWJsZmhoRmVoYWhobWVGZEdhWmhtYlljWGhCZ1ZiYmMxZG9oVGFFZTBkNGhBYkVkRGVVYjVoS2hDY0llVWFZYWxkc2VEYlVmZ2NOZTJkVGJIYXRmMmFCZGdicGJjZktkM2ZoZ2ZhRGRsYVViUWRFYURmZ2QzY2VjWGF4ZmliUWUwZWxnYWhkZ1hoaGNMZ2RkM2NwZHBoVmQxaGtnUWRHZldmZ2VMaFJnV2g4ZlJoRWIyYzhnVGRPYTFnb2NVaFplbGRnaE5kSGdSYlJnWmJQYURnZGQ4YkZnV2dwZXlhVWJYZGRiWGRTZWhkWmVwZVliUmJZZlllWmRoaFJibWdaZ21nRmF3ZVhoRWJWZGFkUmh4YTBkZGFWZFZoSmYwYmFiM2hwY2poVGNXYXBiTGZEYTFhSWVRYWZha2Z3ZmlnZWVCZUViTmZSYlNiRmQrYlJkZ2JOaFJoRWNGYmNidmFOYXpoMGgvYkdnaGZwZUZjV2NpZUVld2hBaGljUmQwZEpiQmNJYVVkUWExaEFleWRUYmtkbGF2ZkFoUmg5aHZkVmJHZEVhVGNTZ21oaGFCYUFnQmZrZFViSGNpZXNjM2dHZjBlWWZqYktiQmJSZCtlVGZHYkFkV2dhaFdoRWhXZkdjR2ZZZFVnWmNtYVpmaGFjY0ZjVmN2aFdhaGdGY2NmVGExZlVjZWJkY0hjWmI2YmNlMWNaYkFoU2R3YzlmU2VFZ0dkUmNNZWRjbmdaZFNhUWNoZlZjNGFkYWhlSWVDZVhia2ZOZFJjTGZYZ3Rhd2hLZjJlSmdEZ1NlVmVwZTFiZWNFYXRjM2hlYm1kbGdYaFdiUmNBZFplYWVBZHRhRmNPZlZkQmVCY2Jkd2RSY29lT2hVZGRkb2ZGY1VjaGRRYVJoeGhCYW1jY2FsZFlkVmJhaG5mSmVSZWRkMWZkZ0NnVmVXZ2xnOGhGYmxkWmd1ZlBhbWFaY21hWWJYYkJiVmRiZzFocGJIZkhhUmMxZVZkVWNuZFJhcmFlZm1nTmNOYmFoa2hOZ2JhR2RsZWtnM2NRYmphc2V6Z0hhd2cxY0hnSWNYZmhkUmZBZTFka2hSZk9haWEwYjJkTmVSYUVlY2dTZHdlVmJhZ2ZhbmNoYWFkZmhuZHBmMWJTYTFna2NJYkVoR2JoaFhnYmgyYzhmUmdFYzJoOWNIY2NheGVOZUhoYWRCY1ZnSWVVYkViY2JRZlpobmVKaFdnRmNXZnBheWFCYlRkOGFlZUdjUmZnZmtoSmRGZXRjWGROZkVoMWhvZkpmU2hrYnhhQmV3ZHdiVmRBZTFkaGg4ZUFjVmZvYzRoWWVuZlpmSmJUZFdhcGZMZkRkMWVJY1FhWmZFZXhoMmVkZWxkSmZDYkZiWGZoZDJmRWNrZXNjWWNTaHdiMGRxYU9ieWNOZitlQmJRYVloRWVGaFNmY2FoZVJmVGhRaHljS2NBYlVhNmZYYTFlMGN0ZWFiaGZGYW5nWGZSZE5la2dSZjJoQWZhY1JhM2VRZkpoU2FFZGhkT2FFZkRkcGJZYVZlaGVWZnFnY2ZsZkZmM2JWZjBob2dXYmFmV2VFZFdjR2dHZVlmVWRaYW1kWmNoZ2NoRmVVaDdmRWRnYTVlT2FFZ3hoZ2VYYU9oU2JRZ29iT2JrY01hcGFBZTBoNGFBYmNmeWdzZUlmTWN4YWNnR2dTaGxlbGY0aGZmUmVKZFphRWdVaDllemdZYW5oSmh3YWNlRWNoZERiU2FWZ3BiMWRlZ0VodGIzZGVibWRsZ1hhV2ZSY0FnWmNZZ0ZlOGNOaEpia2FJY2RnSWJnZ0lmK2JYYkJmVWF4Ykdjd2RzZVlnQmZrYUloRmFQaFJmSmFRaENoeWdaYVplT2IxY2RoQmFGZG5meGRvZkZkZ2VSZjZoRmZIYjVodmNZYVNleGUvZWJmMWRwYkhmSGRSZjFnVmJVZ25mUmFyY2VibWJOZE5iYWhrYnNlUGRVYWhkQmhrZlRlSGdZZmlnR2ZnYXRhR2hkYmpldGNYZUJjbGJjYVJkQWRHZHdieGdPY0RjRWVhY0lmQWZZYWVlTWVCYmtnZmRmZHplWmhwY1hiRmdrZkVnRWZHYlFoaGhSaFdoOGZSaEVoMmQ5ZEhlY2V4Yk5mSGRhaEJnVmVJZVVlRWdjZ1FnWmVuZEpjV2FIZ1RiNGc2Y0djQ2FSaFphQmQxZk1ma2NMZGtiUmZCYWFnRmFjYnVhSmV6YU1jVGRHZ2lic2JmZ0pma2VrZ1ZnR2ZWYkpkL2JhZzJiMWFxZVRjWGRaY1hiRGQwaG9mWmdaYkJhQmVjZGRhbGJKY0NlRmJYaGhmMmhFZmthc2NZaFFhMWFsZmlnY2duZUJkd2FTZUVjTmRKZ1djbmVVZXNjQWd6YjRlcGVaaHhjb2FjY1hkVmhZZzZoVWhrYXNjc2VXZVZnSWU5ZUpkRGF4Y1hjQWZnYmxkQmZRZkJheGdIaEdlMmdaYmtkWGV6YTlmcWhjZmxmRmQzY1ZkMGNvYVdlYWFXYkVjV2dHZkdlWWFVZ1plbWRaYWhoZWhWY3hhamhjY0ViY2NkZUhjVmVWZlNiZGZHZXRkNmFZZzBjMWhxY1Nhd2g5ZVNoRWdHZFJmTWVkZ2lnSWdhYUNmMGFaaDJnSWdBZU5iRmhXZVFjY2NkY2FiamNGaCtjUGNSYjBnUGRIZlJhTWVsZk5nQmZKYS9iT2YyZEJoZWVWZTBmSmFXZ1BjRWVkYk5kZmRBZ0FiYWdZZFFib2FtZlhheGVNZGhoUmFRZFFkSmFUZTBnTmV2Y2ZkbmF3ZVZkYWNuYUpiUmFkaDFlZGFLZ0ZmbWJsZWhhRmNoZmhobWZGYkdjWmRtZ1loWGNCaGRhSWQxZ3BlTWJBZEJlMWhOaFdlM2FoZUJhZWhtaE5oTmdhY2tjc2NQYVVhaGNCYmtnVGdIaFpkMmVVYmtjSWZWZWVkSGZZYVNiUWQxZ3RjRGdSY0djSWU4ZmVmRmVwYUlhUWgwZGxkYWdkZFhiaGdMZmRkM2dwaHBoVmMxZmtkUWZHaFdiZ2RMaFJiV2U4aFJnRWIyYWNmVGdPaDFhb2ZVYVpobGFnYU5iSGFRZmhjQ2dQYTNod2dWaFhkU2ZzZGdmTWJqZWdnVGdEaDNnY2E5YWFiVmFvZlloYmRSYVJnM2diZDJjRmhzZ1NiV2c5ZkNkVGNoZTFiQmRmaDFiSmYwZ2FhM2RwZmplVGNXZ3BkTGJEZjFiSWJRZ1pjRWR4ZTJoZGVsZ0pnQ2RGYVhkaGgyZEVia2Z0Yk1iQ2F4Z0FjeGRmZkRoMGcxZ0JlUWJ3YmJoQWczZHNoN2hBYnpkWWVvYkNlaGZnYWRjVmdYYWdkOGNBZXdjbGFtaEhjVGNsZnZkUmQzZE1lVGZSZDJjZ2NWY1NkRmJCZkhnRWVHZVpmeWhWYWhlVmJxZmNjbGZGYTNnVmMwZ0poQ2RJaFNnaGJGaEZkaWJ0Y1JiS2h5ZmtiemFLZ1Znc2NzZEVkZ2haYVBoZmdoaG9kV2NNZFFnb2d1Y2Fhd2ZGZnFkUWdBYjloQmVHZ1djUmFRYmFibmRaZ0tnU2Z4ZlVoa2dYYkJiSmFMaEdlRWROYlpkWWduZ0pid2hjYUVlaGNEZ1NhVmRwZjFiZWFFaHRoM2NlaG1mbGNYaFdkUmhCYk5lSWJFZElnV2NZaFZmeGNXY0llZ2hnY2hkU2FraGtocmFYZ1Fha2VDZUpiRmY4Y2lhTmd6Z2RnQmhZZ2pjNWZSYmZoRmhkZ1lnSGMyY1ZoTGJGZ2hnaGVtZEZnR2VaZ21lWWJYZ0JiVmZiZTFncGVIYUhkUmYxZFZnVWhuZVJicmRlYW1jTmFGZFBnZ2JOZ0dnQWNSZjRlcGJDZ1Ric2Y1ZEFkQmJzYWJmT2Z6aDVoVGFHYVhnc2dNZUhiU2VjZVRlSmFIYWdnRWVRZjBnSmRhYVlmSGhGaExmYWMyY1plcGRUYjFiQWJRZVJlVWJJZkxjUmVXYThiUmNFYTJoOWRIZGNoeGJOaEhiYWVCZ1ZoSWZVaEVkY2ZRZlpmbmdKY1djRmhXZXBoeWRCYlRmOGdlZUdmUmdnZGtiSmRGZXRkWGNOZkVlMWJvZEpmU2ZrZXhiQmh3ZXdkVmZBZjFlaGI4YkFkVmNvZzRjYWIzY0ZiamJXYVdoTmFIaEpkVmhJY1FnWmdFYnhkMmJkZ2xlSmdDZkZlWGdoYTJiRWZrY3NkWWNRYzFkbGZpZ2NibmhCZHdjUWJCaGNkQmRFZ3ljWmgyZkJlamRJZDNiSmhnYVViQWZIZmxnb2RnYVNnaGRjZU1jWGFsZWNncWZKaGljY2JiZUNkMmZnZWViU2JFZGRoT2FFYkhicGJ1ZlZmZ2MxY2pmY2ZnZjFmZGFWYTBjb2NXZ2FlV2NFZVdoR2VHaFlnVWVaYm1jWmZoZGNkRmdWY3ZjV2FrZ2NhZGJIaFZjVmJTY2RiRGE4YnlmS2NoaDVka2dCZ2tmb2ZmZlhkemZZY1ZoZWdEY1VhYWFBaDBhY2diZU9oVmdZZ09mZWVSYmRjUmdMZW5mSmY3ZmNiRmc1Z0toWWUxYnBnMWdlYkVldGczYmVibWRsYVhlV2FSZkFlWmdhZEFidGhGY2JmeGRFZFRmYmUwYjVhNmRIaDJoMWNvZ0ZkVWhoYlFmUmJ4YkJmbWNjYmxmWWRWYWFnbmNKYVJmZGUxZmRiS2dGZW1ma2cxZFhmbGNFYTFmR2ZqZUJjMGRiYnpnRWVSZ0tnMWdJZEVmRWcxZ0FnQWFIZmljQWZpYktmaWc4ZlVhWWhnYm9iR2hXY3hmNGEyZEFmeWhJYjZiV2RsYUVlRWhjZ1hkaGdmaEhkbGdRYlhhRWREYUlnK2RLZlhjZ2ViZVNha2JWYXdlZGZYZGhoTGVkZzNjcGdwZFZjMWdrYVFnR2dXZmdoTGFSZFdkOGNSZkViMmI5Z0hlZWIxYzloSGdZZndmaGJJZFNoRWE0ZWNhVGhIZ0pkV2NGZFdocGN5YlVnWGhkYVhiU2RoYVpocGFZaFJiWWRZZlpjaGVSaG1nWmJtaGtjemVWZFhoSmNhY0NoUmhVYjNhVmFWZEpjMGFhYzNhcGZqZVRlV2hwY0xmRGcxYkllUWVaZkVleGYyYWRkbGRKYUNiRmJYYWhmK2JSaGdoTmdSYkVhRmVjZ3ZkTmZ6YzBhL2hHZmhocGhIaEdnVGgwZzVjR2RSY1FkMWNMZVJlSWE0ZFJhQmVFYmtkQ2gwaDVndmRBYkJncGJ2Z1doMmY4ZVRkWGYyZkVmVmZGZEhncGVIY0VlR2VaZ3loVmFoZ1ZjcWhjY2xlRmEzY1ZhMGFvYVdmYWVXZ0VoV2RHZUdnWWJVYVpmbWdaaGhlSmVCZjBmbWdDYlVmbGhRaFdkQmJnYWRjSmdqZ0piMGNJaEFiVWdyaEdhV2h3ZWRiVmVDZ0VjdGdJYm5hNGZlaFNjeGJsYVNkZGRoYkpmTGdHZUViTmZaZVlnbmVKYndnY2hFYWhjRGRTYlZocGYxZWVoRWJ0ZDNiZWJtZ2xiZmREY1ZhaGNRZU9jd2JVZkloS2dsZnhmY2JQZ1JlNWc5ZlVlQWc4ZXBjUmJ5Y3NlZmZBZTFoVWdIY0phbGQ1Z1piYWhuY2xhUmJaY0ZjNWRLY0NjbmFWY2hiRGhoZ0ZkbWVTY0VleGFtYllmWGdCZ1ZmYmUxZXBlSGdIZlJiMWZWZlVmbmJSZXJmZWVtYU5lTmJhaGtkc2NQZVVoaGFCY2tkR2NEYTRhL2FBZFVoeGJZZ1BmVGh0aGRnR2RVY0ZoTmJHZWlib2R6ZUllaGdNZkhoQmN3ZndjN2RJY1hkQWFIZWRhM2dGZXBhUmJWZkFlY2VNZjJnZ2ZMZlJnV2M4YlJhRWcyYzljSGVjaHhjTmVIZ2FhQmVWY0lmVWhFZGNhUWZaY25iSmFXZkhhVGQ0ZjZhR2ZDZVJlWmhCYjFhTWNraExha2VSZ0JkYWNGYWNodWdKYXpmTWVUY0dmaWZzaGZlSmNrZGtlVmZHZVZoSmYvYmFjMmY5ZXFnVGJYaFpiWGREYzBmb2NaZ1poQmdCaGNiZGdsaEphQ2FGZlhhaGIyZUVha2JzZllmUWMxYmxhaWdjYW5iQmZ3Z1NoRWhOZ0poV2RuZFZoNGNTZnliTWJ5Y0ljQWFSZ1hnWGZWaHdmbGdSYkJnY2QyY0hmMWJBaG5iQmJpYkZkd2JDZUNneGhRZ0tnUWZSY1BjWGFHYVphNWdWZmdhRmhqZ2ZibmR0ZDNkVmIwYm9jV2dhYldhRWFXaEdlR2NZZlVoWmJtaFphaGVjY0ZkVmV2ZFdma2JjZGRoSGNWaDBnR2dQYkNjSWZwaGJkUWNBYnZhQmZrZkFlQWFTY1dhb2NQZFBhamZjZEFkSWhWaG9hOGFNZzNlTWNmY0VlQWE5Y1poYWhYYkpobmJlZ1VjaGNmZlZiVmFwZ3RmY2NVY3NhcmdVZ0djbGZYYVdnUmJBaFpiYWhBY3RiRmRiZnhiRWVUZGJlMGhkaHplRWYwYWRib2ZGZ1VmaGZRYlJneGRBYnloT2NoZzljR2JaZkRnOGZVaE9jaGVnZllkVGQyaGNjaWZYYmxha2MwaGRjeWRrYmliSmNCaEVnQmJaZXhiWmdIaEZlaGgxaERlV2YxYjVjcmFlYW1jTmROYmFia2ZzaFBoVWdoYkJha2FUaEhiWmMyZFVna2ZJY1ZkZWhIY1lnYmdRY2hjUmRwYVdkV2JKYnloY2dIZEJiSWdRZjBhbGNhZmRiWGFoZExnZGczZXBlcGVWZjFia2NRYlRmU2ZCZUNhRmFtYkZlSGRBZ0djRWFHZU5nMWRkaFBoS2N4YXNoRmFCZlFmdGRFYUxleWNJZWFkVGRHZEliemRXZEhnNWJaZUdjRmFraDlhTGNSYjRoTGZkYnhjMWZvZUtiemdRZjhoQWZTZVljS2FDZjBlUWFWZ0JjbGV0ZTRoUWVYZHBkamFUZFdmcGhMYURiMWhJZ1FkWmJFYnhlMmZkYWxlSmdDaEZkWGFoZTJkRWZrY05iVWRRZTFnSmYvY2NmbWFoaDVkUmNHZmxiSmhXZW5nVmc0ZVNnM2dkZjZlYWZWZGRhWmJFZEJlbGVvZkNhMGdWaHZlRWVSZ05ibmFCaEhiTWdPZ1JkeWRZYmRkWWhsZEJjSGRFYkdiWmV5ZFZhaGhWZ3FhY2VsZUZlM2FWZTBnb2VXYmFoV2NFZ1doR2VHaFljVWJiZ2pjSWJwZU9hUWRaZ2hoRmd3YkpiUWFVY2djY2dMZGVjaWJnaHljSWRoZjhhSmJCZ0Vnc2VYYWNjVGhCZ0VnT2FuZFplWmFRaGdoUmV4ZWRjZ2E1Y1hjR2NGZXRkUWZZYmlhNWJhYmNhRWZoZ0RkU2hWZnBmMWFlYkVmdGQzYmVjbWdsZ1hjV2NSYUFjWmdhY0FjdGVGZmJheGdFY1RhYmJ4aE1iN2VXYmhoUmdtZVdmQWQwZGRlQ2dFY0lkL2RmZ0JmVmJkZUtkeWNBaHlkT2ZCaE1nUGdkZ3pnMWVwZ1diaGdGZnFjUGZtaFphbWhZZVhoQmdWZmJnMWVwZkhhSGFSYTFlVmVVZW5lUmhyaGVhbWVOZk5nYWhrYXNkUGhXY2thUWRzZEJmU2FWYjRhSGd3ZGRlWWdOYnlmUmFMZVJkVmVzY0xkR2JEY0FmUmdQZXplUWJOY0ljaGMxZFNiT2NYYmhoQWRkYTJmbGVnZVZkMGdVYk1oR2FYZkFjQ2NSZFRlTWY3aEVjMmg5YkhlY2F4aE5iSGNhYkJiVmJJYVVlRWNjZFFoWmJuZEplV2NGY1dkcGF5aFViWGJkZVhiU2NrYkljaGVLYUVkVWdXY0tnMWhFYXJjS2ZUY01lcGdXYnlnd2NTY0Joa2E5ZCtoR2RoY1loeGdDZ2ljNWdyYkFnV2hwZ0FjRGQwaEFnWmhhYkdiWmYyYWRjbGNKY0NkRmRYZGhmMmFFYWtlc2NZZ1FoMWJsYWlkY2VuZ0Jjd2NTY0VnTmdKZ1dhbmMwYnNmQWJ6YTRmcGNaYXhhb2hjZlhiVmhZZTZnVWNrZXNkc2ZXZFZiSWU5ZkplRGZ4Y1hnQWdnZWxoQmZRYUJleGdIY0dhMmVaZW5iWGd4aFZlMmRiY2xkRmV2aFhla2JwYUtiUWYyZ0VnV2NHY0dmWWRVZVpjbWVaYWhoY2VGZ1ZldmZXY2tnY2VkY0hiVmhWY1NkZGRHY3RhNmVZZzBkMGErZUFmMGdZZUJiSGZpZGthSmNPZHpia2ZBY0dleGZzZzdiUGVsZ01iWmVlYndjd2ZkYkpjeGFNZGtlZWZBYlJnRGhRYmxocGdoZGNiVWRkYmRjZWFtZGxjWGFXYVJkQWZaYWFhQWN0Z0ZkYmF4Z0ViVGZiZDBnZGh6Y0VoMGJkYm9jRmdVZGhlWWRFZzFoZ2V2YklmVmJoZ1lhTGh6aDhjZWRKY1FnNWdFaFZhU2RFYWdmUmRIYnNlcGJVYkNmTWJIYk5lWGhnZlplYmUxZkZiSGRDYmhoUmRWZFRibWhoZHJjWWNtYXBkTmJOY21mRWVQZFVnaGVCY2tlVGNIZVphMmRVaGtlSWNWZ2VoSGdZZFNmU2F4aGhlRGNXZldlSmR5ZGNkSGNCY0lmRmJ3ZkVkVGdKYW5oWWZHY01jamhjY21iQmRRZEFoZWRXYWlmQmRLZ0Zmd2Z4Z2VmVmR5ZG9obWFKYnhjc2hMYmFkQmU1ZUlkUmRrZDRiNmdaZW5lSmdXY0ZmV2FwZXlhVWFYYmRlWGJTYmhiWmFwYVliUmJZZFlmWmRoY1JjbWViaDJnaGE4Y2ZiMmI5ZGFmUmN4aDBiZGRWZVZmSmUwY2FiM2VwYmphVGNXZHBoTGJEZTFhSWhRZ1pmQmhnZStkUGV3Y0ZoTWNRYzJneGg0Y1Vmd2Y5Y2NlU2V4ZXBic2RQZ3liVWQ4YkhnQWVvaFpiRmJpYXhod2dDZW5mNWd6YVpid2hVaFdkUmNGZFZkZ2hHZEZnUmZtZUhmMWE0YzZoQ2V5aGRnYWVGZHlmUmJNaFFkQWFOYk9nQ2IwZ3hheWJWYWhmVmVxaGNnbGdGaDNlVmIwZ29kV2FhY1dlRWZXYkdmRGNzYVVlSWF5Y29heWJOZ1ZlVWYwZmNnRWZjZGRiSGRWYVZjU2RkZ0dmdGE2ZFlnMGIxZHFkU2Z3YzlmU2ZFYkdlUWNhZ05keWFSZlNiQWNRZjVlU2hkaGhnSmhMY0djRWROZ1piWWNuZUpjd2djYkVlaGZEaFNkVmVwZDFkZWJFZk1iMGhlaG5hUmFYYkZkeGZnZXpnYWdBaHRiRmZiYnhnRWJUZGJiMGNkY3poRWcwYWRjb2dGZFVmaGZRYlJleGdCYm1jZWZnaEpmZGZJZXloRmNmYk9kaGNJZkhnV2NUZnNlNGZiZVZnUmNtZ0hmMmNaZDNlSGNIZUJkSmFjaDFicGhmZkZiQmMwZEpiVWJpZEFkamVNY3plQmREZkpod2g1aENjSGRVY0lnOWFOaHpkb2VMZlhobWhnYlZiZWhIZVljU2JTYXhhaGREYVdmV2hKYnllY2NIZ0JkSWdRYzBjbGRhYWRiWGZoZ0RnSWJ6YUlnZ2RCaEZmZGJkZ1hkQ2hWZUVhRmJ6ZVpjcWdYZzJlOWZNZWNkd2RBYTZkYWFBY2xkVWRVYkZjOGRaZlpjaWY1ZldhUWVTYklnN2NBZG5ma2NhZERmMWZzZm1lTWQwaDlkamJLY2hiUmN0ZlphbmJNaE5iV2hVZ1ZnYWdSZXhiMGJkZ1ZmVmhKZTBhYWYzYXBkamFUYldmcGdMaERnMWZJZ1FhWmFFY3hlK2dJY2hlb2NMZ1JjbmZZZDdjVmN3ZlpnWGVFZFFjQWVaZFBjbmdCYjdjU2dGZ1lkMGFXaG1jbGFraFNiMmM5ZXpjYWdRZXRkWmdSZUZkRWVoZldnRWZzZWlnVmNGYzRmZ2RGY1NhcGVvaENoMmVnaGVlU2dFYVFmNmZIYkVkeGZ5YlZkaGRWZnFkY2RsYkZiM2FWYTBob2ZXZmFiV2hFYldjR2FHY1loVWFaZ21mWmZwZEpnQmcwZ21kQ2JVaGxoUWJXYUJkZ2NkYUpnamdJYkJhTGIwZjFhaGZTYnhhZ2V2Z0VjSGNoYVFlZGNtYzVnYmJRZ2tjbGE0Z0lmbGZvZkNoU2EwaDBhVWFKaHplOGUvZ0lkaGFFYjRnQmhWY3BkK2dlZ0ZmMGhLZ1VkR2RsY1hiV2hSaEFoWmdhZEFodGRGZGJoeGRFZFRmYmIwaGRoemFFZTBoZGJoY0hhRWNSYjZhUmJ4aEJkbWZjZ2xlWWdWaGFobmdKZFJlZGYxZWRmS2NGYW1obGVoZEZkaGRoYm1nUWZDYzRhdmNNaG5oNGhEY2ZibGhRZEdiV2RWaGxiZGZFZVhmb2FtYUxkeWc4YVpiSWN4YnRiRGVDZXhmZ2VsZlJlWGI5ZzRhQWZBZzFiQmFOY0hlNGNCZldjaGJGZ05hRmJEZGNkK2ZKZERha2FZY0RheGJCZVNmSmZuY0ZjSGZYaFhicGdwYlZmMWZrY1FoR2NXZWdlTGNSYVdlOGJSZEVoMmY5YUhhY2h4aE5iSGZhZEJoMGFFYlVoRWF3Zk5nWmZtYXBhZmhHYVVkQmh5ZlVkWGVkYVhnU2FoY1pocGhZZlJkWWFZYlpmaGhSZW1kWmhtYUZmd2FWaFdlOWRTZ0JjQmUwYUFjVmZSZnhkOGRRZFhlcGZqZ1RmV2hwYUxmRGExZUloUWFaaEVoeGYyaGRobGVKaENiRmVYZWhnMmhFZWtlc2VZY1Nnd2MwaHFoT2N5Zk5hK2RCZ1FoWWFFYkZkU2djZWhkTWFEYnRnNmFZYmxhZGNJZWJnUmdsYjBoRmMwY1ZmM2hHYUJmTWZ6ZlJneWRkZ2JoRGdqYXNiYmJCZlJnVWFLY1hoemhRY3JmTGRWZWthWGVmZG5hdGQzaFZlMGdvZldlYWFXZ0VlV2dHZUdjWWhVaFpibWVaYmhhY2dGYVZldmdXYmtmY2dkZUhoVmQwZUdnUGdDY0llcGFiY1FkQWd2ZkJoa2ZBaEFhU2ZSYThjQWhkZ25hMWhTZFViV2JoZDRmYWFnaDVlTGVBZkVmcGZaY1BkbmNJZGtmT2hBYkVnUWNSY3hmY2d3YU5lUWdRY2xiSWJ4Z0lhYmdXZVJic2ZaaGVhbmJaZEpmUmVSY0VhVGRiYjBlZGd6YUVnMGRkZm9hRmFVY2hoUWhSYnhjQmRtZ2NkbGJZY1ZlYWZuYUpiUmhmaHdnTWNDaFhoemRwY3ZjV2YxYjBjcmRXY3piUWYvZ0diamd4Z1ZhWmFGZ3BkU2NZZEJkMWZKZVRkbmhSYnpjY2cyY01iUmdhZWhoOWVIaEdiMGROZHFnQWVUaE1kN2ZIZFJlQmhNYUFkemRvZ1NlUWVCZ2hlWGRKYUdoNWhZYmNnSGRCaEliUWUwYmxlYWJkaFhoaGVMZ2RmM2dwZHBoVmgxZ2tnUWZHZldkZ2RMZVJkV2Y4ZVplUmd5ZGNkT2RJY0JjMGNLYkxmVmdnYUhmQWdoYjVjcmJLZm5hSmVkZkZoWGYwaFBkVWNXZ3RhTGNTY2dnNWJnY1lhVWRvZllnTWNsYXdidmhOYVdkOGc5Z0VjQ2FJYVZkRmVVZVJkbWRHYlZmSmYvYmFjMmh3aGVoWmgyZXBhTGNEYjFhSWNRYlpkRWR4ZzJnZGNsZEpkQ2dGYVhoaGUyYkVja2dzY1lkUWYxaEJlcmJmYmxmcGJ3ZFNiRWhOZUpmV2ZuZVZjNGZTZjNnZGY2ZWFiVmdkYVpmRWJCYmxhb2VDYjBlVWY3aFdnVmNvYzhhU2JTYVVoQmJTZ1NhbGFSaERoRmhnYUVnSGNpaHNjbmVHYWtmRWJqY0llaGIwYXVmWGJ3ZXNnZmhZYUdkOWRFZlZkemJKZVlkYmhuYVZmd2NlZlZlc2JpaERhd2V0Z0pjVmZBaFViZWVMZldmTWhwZWFla2FGZ0FjU2Z3ZTloU2NFZEdiUmFNZWRnbmRaZ1NmUWNoZ1ZnNGJkYWhoSmNMZEdlRWROY1phYWJqYzVhd2JlYzFiVmREZ1ViVmZOYzVlVWNraHRhM2hlZm1jbGFYZldlUmNBZ1pnYWZBY3RnRmViZXhjRWZUZGJmMGJkZnpmRWgwYzhhcmZGZFZmVmdRZUNoUmFoZk1nY2hsYllhVmJhY25mSmhSZ2RhMWFkY0tnRmNtYmxjaGhGYWhmaGhtZ0ZmR2NaYm1hWWRYZUJlZGdPZnhmSWdPZVRmaGhNaFliRmF6Ymtla2RLY0Rob2UyZEpha2VzZ0VnVWNnYUVkWmdUYUdjcGVxZFVibGJvY2NjZWRDZm9hU2FIYTFmQWNLZ0NobWZ3aC9lTmFUYzBmSGRFZlJnQWRoYk9nUWRWZUhiWGRYZXBocGhWZzFja2VRZ0diV2NnY0xoUmVXZDhoUmJFYzJiOWhIYWNmeGFOYUhhYWdCYlZjSWRXYkJhTmZZYkxheWFGaFloV2NDYzhmL2NIY2lkVWVPY01oVmFwY3BnYWZoYllhTGZHaHhmUmM2Y2VobWdGZm9oWGhHZjhhR2FSZDBjbGJWZkhiQWNGZjZiSmZqYzhidWhBZGpnZ2NTYmRoQmg0ZFFnYmgwZ3hia2VDZzFmNWJvZUZiWGdoaDJmRWVrY3NkWWVRYTFhbGZpaGNibmdCZndjU2dFZk5oSmRXZG5jVmU0YlNiM2hkYXliUGdSZjhmUWJRZHhmY2NsZ1RnZ2hnZ2djUWIwY29oVWhDaDNnTWNZZlJlM2UxZG9mU2VFY3hhYmdFYkhkNWM3Z1Zla2dsY3FnSmdoY2tkK2VCYkVlUmJiZkxnQ2V4ZVplU2dqZzljdmNLYm1nWmZxZGNlRWVFZlNhVmNtYjBnZGZIZ1ZjVmhTaGRiR2Z0ZTZlWWQwYjFmcWJTZndoOWJTZ0VkR2JSYU1iZGFuYVphU2dRYmhoMGhzZVBhbGhzZFlnRmNnYTRnY2hMYXpkMGdpYktmVGNNY1BhU2VWY0ZnMWRiZXpjWmUzZVpibmFWZ1hkUWhSZGtoWmhOZEFhc2NSaEpnMWdoZEFoWWFRZm9mMmZYYmdnZ2Q2ZlRnRGZNaGNjUmR4aHRmbWhaZUNnc2UvY2FibmJKZlJnZGIxaGRlS2ZGZ21kbGVoY0ZhaGNoYm1kRmhHYVpmbWFZYlhiQmhWZ1pibGdOZkxhTmJ4YTFlVmZVZG5kUmhyZmVlbWVOY05kYWVrZ3NoUGZVZWhnQmJrYVRkSGJaZTJlVWdoZ1poZGNNYVNlVWVjY0hlUWN0ZE5iR2NDZllnMmdlZERlTmdHYkRjaGZ3Y1dkSWNUZEVhYmdPZnljTmhoaEZlbGhBZ1pnRmF6ZXBiRWdFZlNhTWhaZkFmSGY1Zk9oZmZWYjRnU2dKZ0VmRWVCZEFjQWJ0YkpoYmJpaEZmZmNHY1ViQmZ5YVVlWGdkYlhmU2doaFplcGJZaFJhWWNZZ1pkaGZSZG1iWmNtY0Zhd2ZWY1dmOWFTYUNmeGYwZldlU2dGaEpmc2ZZZW5kWmRKZFRiV2RwZ0xoRGQxYUlkUWdaaEVieGcyaGRnbGFKZkNlRmZYYmhlMmdFZWtkc2ZZYlNneGZwYWloYmIzZUFjK2hRYkdobGJKaFdibmFWYTRoU2MzY2RnNmhhY1ZlZGdaY0VoQmRsaG9iQ2QwZlZodmFFZlJiTmZ2ZVJhM2R0ZUhlRGN5aEZoR2FSY2hmMGVDZVhjU2JrZmdkRGUyZTRkbWZjaGxncGczYlJoamhjYldmZGhYZzBiV2RBYkdhOGJVZE9hbWJZZDFhT2JCZ3dlOGdWY0FicGJZYlViQmhvY0FmTGFSYkFnMmFIZmtnRmJBZ1Nid2Y5aFNnRWVHZ1JkTWRkZm5iWmdTYlFnaGJWZTRkZGFoZEpoTGVHaEVhTmFaZVlibmdKYTRmSmNBY0FjS2FHYmxkUWI0aFBmUWVZYTRiS2hEZkFlc2hGY1JkQWNTZmFmQmJnZjRiYmR3ZTBmUGZiZjFiOWc2Y0VoeGZ0ZW9oUWJRZkFoWmZGZkJhNGVyZE5meGh0YWFjT2VDZXNocWhPZjFiZGNCZEZnbmVzZWNnR2VqZ0pjbWVGY0dlWmFtZFljWGVCZVZkYmcxaHBlSGFIYlJnMWFWaFVnbmdSYXJnZWhtYU5hTmZhYmtlTmhiZUdibGJrZzNoUWRqaHNnemNIYndhMWNIYkloUWUxYWVnU2F4aE5lRGRUZEJkOWJ5ZmJjR2d4ZklhV2IwYkJoYWdLYVhnZ2FmYlBhemJNYTZmV2NSY1JjVmRWYUNjZGZaYUhiQmJSaGRhRWUyZFJiSGdaZTJnNWJMZVFoaGdWZEljVWhFaGNoUWRaaG5iSmRXZ0ZnV2ZwZXllVWRYY2RhWGhTYWhhWmJwZ1loUmRZZVlnYmJraEFkdWRMYnpkSmYrZkdkQ2ZvZ1hiQ2JFZjlhRWZMYWhnNWIwaFlnSGRwYTBlTWRHZnBoWGNFZzFnSWdJaGJkVWF3YnFlZGdnY1lkS2hYYkNkdGI0ZVhod2Y1Z1ZiRGJBZHNnN2JDYlRneGJ3ZFFlMGROZmZjSmgxYzljNGRTZDNoZGQ2ZGFhVmZkYlphRWVCZ2xjb2RDaDBnVmF2ZkVkUmVOZHZiUmQzZ01nYWZUY21jUWMvYVNnRmRCZ0hkRWdHaFpneWRWZ2hjVmFxYmNnbGdGYzNlVmIwY29iV2FhYVdjRWZXZFRmQ2I1ZWRkTmJXY2diM2daZkZic2d1YkhlZ2hNYlZmWGFsZ3NoZmJJZlNmY2Z1ZUtkaGYwY21jRWhnZWNnVGVHZ1dnMWFDZEphRGRrZ0djRGFoYzFncmhaZXhhdGVGZVZoUmNZYVZiTmVqaHNnZ2ZQaEJlRmZMYkdhbGZOYXVhVWNrZXRkM2VlY21jbGdYZFdjUmdBYVpkYWNBYXRmRmdiZXhiRWZUZE1jbWgxaHpkRWIwZ2Rib2ZGY1VkaGRRZlJkeGhCZ21kY2JsZFlnVmNhaG5mb2VaZGRiMWJ4ZVhoRmduYnBlemFGZWhhVmNtZVFiQ2M0ZXZoTWduZjRhWWVLYWhmY2hVYVZnRWhjZlFhV2MzaGhhQmZlZm1oTmhOZmFja2ZzY1BkVWVoYUJka2NUZkhhWmgyZVVma2FJYlZmZWVIaDVnR2FBaDFmRWZRYVZjeWI4ZTNoUGdTaE1iQmJHaFFneGRhYmFlSGVoZGJiZmduZlpjRGNWZzFma2ZRYUdmV2hnZExiUmhXaDhjUmZFaDJjOWFIYmNmeGROZkhhYWVGZXBoSWNWZWtjRWFRaGJoaWhZZmVoWGREY2xoOGhIZERiSWVhYUJmVWRRYndjWWJRZHNnWWNaYkJiWmZ2ZWZlVWR0YXdlVmJXYTloYWZSYnhmMGJkZVZlVmJKYTBlYWQzZG9mK2FaYjJkcGdMZ0RnMWhJY1FmWmhFZXhiMmFkYWxlSmNDZkZiVGVFZndkRWRrYU5iZWdRYjFnUmZpZ1lhV2NKZ3djVmZsaDVlSmdFZG5oeGM0YUVlRmUxZDZjYWdWY2RoWmFFaEJkbGJvYUNiMGNWZ3ZkRWNSYk5kdmVSZHloVmdTY0ZjV2VoZEZhU2FFYTFkSGdWaG1jWmYvZVZkZ2VaYzRkYWZYYXRiM2JWZDBib2FXYmFhV2NFZVdjR2JHZVljVWRaaG1oWmVoY2NmQmFFZWdiV2VoZHdmM2JIYVZhVmhTZmRjR2F0ZzZiWWYwYzFlcWdTY3diOWdTZkVoR2ZSY01nZGhqYzhoVWZRZGhhMGgzZGZkeGNJZlFlTWdrYk5jWmNZYW5mSmd3YmNlRWFoZkRhU2hWZHBjMWZlZUVjdGIzaGVnbWVsYlhhV2NVYVplWWNPaGdic2RHYWRjRGNzZVRkYmUwZmRlemNFaDBnZGhvYkZnVWJoZFFmUmF4ZUJnbWZjZmxiWWZWaGFmbmZKZlpiTmdGYmRhWGZGYWllZGNwY1BkQmVoZm1iRmRHYVplbWdZZVhnQmJWY2JhMWdwYUhhSGhSZTFmVmhVYm5oUmJyZmVmbWZOYU5oWWVoZDhlQmhFY1ZjZ2dsZEhkaGZVZjVoRmFnZGRjMGJMZEhlNWFhZFNoeGROZ0RnU2hHZXRieWViZ0dneGZJZ1dlMGNCZWFiS2FYY2dkZmZlY1Rka2doYUZkZ2V0YXphVmJpYXhjT2FKZ0Rlc2RaaFdnMmNaYUxjV2RSZ05nSGNhZ0JoVmRJaFVhRWFjYVFoWmhuZUpmV2JGZldlcGJ5ZlVkWGZkZVhhU2VoZlpncGNhZ1VjSWZXZUphVmd3Ym5hTmRBZ0liL2ZFYVNlb2Q3YkVheGJWYlZiVmdWaGxhMGFlZUhnTmdqaFVnWGNaY0xmRmYxZ3NjUWRPZEVjd2JpZGVmQmJFaEtnVmRDZm9kVmRYZFFoOWhkYklkZ2MxZXFjT2VuaEJkN2FTYUZhRmRBaFZhbGQ5YjRoU2QzYmRjNmFhY1ZhZGVaaEVjQmFsY29kQ2EwZlZjdmFFZlJkTmF2ZFJhM2JNY1RkUmEyYkJhQmNSYmhmTWVQYVVnVGZRYlJlR2dWY0VhdmVFZHdoVmEvYUhlMGZvYWRiYWdYZlFlZmVHZUhkb2dJZVpmbmE1YW9iY2VBY2xidmJEYWtibGhlZVZnUmhRaEFkRmR5ZVFmK2JKYWlld2MrZVFiMGdkZVNlR2IyaFJhWWZmaDNhcGU0ZVFiaGZWZzRoZGRoYUplTGFHY0VoTmZaYVllbmVKYXdiY2dFaGhoRGhTZ1ZocGcxaGVoRWF0Yy9nTGRtZ2NnVWJFYVZmRmRMZENiMGZRZEJjS2RuaEJiSGNaZXdlOWd6aEdoRWNkYy9iSGhFYWhmTWFXZXhlQmMrY2VkMWVaZUpkYWVpY1poZmZOZEJhOGhMYVJkQWRvYnVhVWFsaDBjSGhRZEdmNGR1ZllmWGZ0ZFZkZWRWYU5mdGVIYlJhMWRWZFVmbmNSZnJlZWRtYk5kTmFhaGtnc2FQZ1VlaGdCYWtiVGhIYVpnMmdXZjBic2FaZFVkbmRZYlNjU2V4YWhkRGNXZldnSmF5ZWNlSGZCZklkUWYwaGxlYWdkYlhkaGNMYWRhM2FwYXBnQWV4YkZjWmJTY21lWmdkY1ZnR2ZGYVFkVmJ5Z3RlUGZNYUJhMGhLaFBnVmZrZWNjR2RSYmRmY2RQZjNjb2dYaEhoR2ZOYzhlQWJ6aGdlRGdCY2hmNWU2ZmNlQmI4ZldjS2MwY0VjcWFNZ2lnZ2VnYkdjVGdaYVNhRmdCZlFhUmdmZDFlSmgwYWFoM2dwZWpiVGJXZnBlTGREZjFoSWVRZFpoRWJ4YzJoZGdsYUpmQ2ZGYVhmaGIyY0djZ2hNZ1llU2FFYVJhaWVhYW5mbGU4YVlka2hOYUpnV2NuZVZmNGJTZjNlZGQ2YmFjVmdkaFphRWJCZmxjb2VDYjBoVmF2ZEVoUmdOZ3ZnVGd6aEFiVGhXZW1kaGRiY1FmSGZwY0hnRWRHY1pheWZWYWhnVmRxaGNkbGdGYTNmVmEwZ29jV2JhZ1doRWJXYkdkR2RZZFVmWmZtZlpiaGhlY0FjRmVoaEdlUWE5ZGNoVGJ6Y1lnZGdNaENhNGFiaE5iMGFVY2lnU2d3ZVJiU2VBYVdjMWVNY2FhbWZwZlNlV2hoYnhmNGRLYmhmSWdmYkZhZ2RBYVJlSWd5ZUFjVGNQZ3dod2dHY0thQWI1YTljTWNFZUpkN2FVZEdnbGNYZFdmUmFBZVpmYWZBZ3RhRmhiYnhnRWZUYWJjMGJkaHpjRWUwYmRnb2RGZ1VmaGhRYlJjeGhCaHVkSmFsYWhhV2RJYWplTWJEYkZnQmhnZk9mVWh3ZWdiMWhIZ2xhQmVtZ0hiMmNaZzFnYWFIaEJlSmdjZzFicGJmZ0ZiQmUwZEpjVWFpZkJmbGZPYlNhc2FNZU9iQ2ZoY0FlRmFsZ1VnRmVHZUhnNGUrZ1Vha2drZFZnYWduZzhnZWVZY1JhaGdEZFdkV2RKZHlhY2hIZ0JoSWhRaDBhbGZhY2RjWGhoaExlZGgzZnBncGVWYzFia2VRZEdlV2RnZERkRWhXZ0ZmU2hXZnlnNGZWZEVhRmF3Y0RiTGZYY1FjY2NXZUFiOGNRZmJnWGZKZERnSGRHZnBndWNUaFhlZGVQZFFmeGFZYTFjWWFVZUliV2JKaFZkd2huYk5oQWVJZC9jRWNTZG9lN2VFaHhmVmVWZlZkVmFsYjBhZmQzYk5odmFaYTJhcGdMYkRnMWFJaFFjWmhFYXhkMmJkZWxjSmFDYUZlWGJoZDJhRWhraHNlWWhRZDFnbGdpZmNobmNCYzRkSGNFaDBlS2VFaGpjUWZxZ0tjRGVnZStiTGREaFlhTmdHaEZiRmVvY0FhRWRWYTRnR2NCZ05oemFXZzNnTWNMZ1RjbWNoZUpkU2ZBYVJiSmVVZ3lkNGh6aEJjSGFZY2xmTmRoZFFhV2RBaDBkSmFlZGFjV2RvYldiRGhtYThjK2JaZ21jWmVoZGNkRmNWYXZnV2JraGNnZGRIaFZhVmRTZ2RjR2F0ZTZmWWIwZTFlcWdTZXdmOWJiYkdkV2hoZG1iZGNuY1plU2FRZWhnVmc0Y2RjaGZKaExnR2RFY05oWmZZZG5lSmd3aGNmRWJoZURoU2JWY29haGFNZEFkSWFrY2RhRGg5ZUZmVmExYUZlZGFMZkFlTWhHZFliVmF4YkdiSWd4Yk1jNmVRaHdkc2d4Z0hhUWVsY1pjVGNoaDRhMGNQZlFhSmZaaFlmbWhGZEFnZmFsYmtnSGRRYXlmVWYxZlhoMGNnYnFhVGJXYzRoMWVhZkhleGQvaGJlMWZwaEhoSGNSYTFkVmhVZW5oUmZyYWVmbWVOZ05kYWFraHNhUGdVY2hhQmJrZFRjSGhaZStmR2drZklnZWVaYVhhWWJLY1FmaGFSYnBoV2RXY0pleWdjYUhmQmFJZVFmMGJsYWFmZGdYZmhoTGdkaDNlcGdwaFZmMWFrYlFhR2dXYWdhRGNCYW1jOGFNZEVkeWJGZVBkV2hSYU5jSGJhZ0JlVmZJaFVmRWdjYlFjWmZuZUplV2JGYVdkcGd5ZFVlWGJkZlhnU2RoZFpkcGNZYlJkWWNRaE1naGZvZ2xjTGdpZUFkaWdOYmliQWJlY0FkbmV4YkpkWGdSZ3BjMGNZY0hicGV5YVJhR2hwZ1hjRWcxZEliSWhiYlVld2dxY2RoZ2JaZ01kVmdqZUFiM2NRaENiaGRYZEJleGV3YkRjSmduZmdmNGFRYVVmOWhqZVdhbmFWaDRhU2MzZWRjNmNhY1ZhZGFaZUVjQmVsZG9iQ2EwaFZkdmVFaFJlTmh2Z1JlM2dNYlRiUmUyYUJlQmhSZmhmTWRQY1VhVGRRZVJkR2hWZkVjdmVFZndnVmIvYkhiMGRvZWRiYWdYZUlnZmJHZ0hnb2ZJZlpobmg1Zm9mY2ZBZmxndmFEZWtmbGJlYlZmUmRRY0FnRmF5ZFFjK2hKZGljd2IraFFoMGRkZVNoR2UyZlJnZWNmZjNhcGI0ZVFoaGFWYjRkZGFoZUpkTGZHZEViTmVaZllobmRKZXdiY2NFZmhlRGNTYVZicGMxYWVlRWJ0ZzNkZWVtYUVnRGJWZDFkTmJSYkthVmRrYm1jSWNGaFZnV2REY2hkTmg3aFdkMGNkYmpjRmdWZjFnWmdSZ3dleGQ2aGNja2Q0YWNmYWNpYjVoUmNJYjFma2VKaFhkaWhnZ3piZGFWZWNmaWdVYlFhY2N5YmFiVGJoZFZoWmFGZXBlVGRGZkJoRmEvZVVnbmhSYnJjZWhtYU5nTmZhYWtlc2FQYlVhaGdCZ2tkVGhIZFpnMmNVaGtlSWdWaGViSGFZYVNkU2F4aEFhWGRWYnlmRWc2Z01nU2hJYnJkRGNBZjBmZmFGaENoeGdEY1BiM2hwY2ljVmYwYzRkWmNHZVhjUWdYYVJkWGdjZ1lmRWR6ZU5lSGNKZ3hnMGNFZklnRmhRYmFnTWF3YWhiVWZJZ3hkTWRDZ0hkU2hKZnliV2RuZGRmQmVRZnpmeGNwaFlnUmNZZllhWmFoaFJkbWNaZG1nRmh3YlZiV2U5ZWFiUmh4ZTBjZGZWYVZkSmQwZ2FlM2hOZnFkUWFVZ0JoTGFEYTFkSWNRZVplRWd4ZTJhZGNsYUpjQ2JGYlhiaGEyYkVna2hzY1lhUWIxZWxiaWNjY2lkUWY0Z0FiUmVCYkhjRGRHZVphMmhDZGpmTWErYVllUmNSY1hlWGNVZHdla2JYY3dkd2cvZVhhVWVwaG5hQmduaG9nYWVTYlRncGFhZEhnQmN4Z1BiQWYzaGRlN2JXaEZmZ2IvZVBkZ2NVaCtkQmF3ZlpkUGhZZlRoSWhmZ0ZnRWJ3ZVVnWmdtYVplaGVjYkZiVmZ2ZFdoa2hjYWRmSGNWZ1ZkU2dkZ0dodGg2YlllMGQxZXFlU2d3ZmNlYWJFZ0dlOWFSYWRnbWE1ZmJnVGJqYTlhNGNkZWhkSmVMYkdkRWdOZ1poWWZuZkpkd2JjZ0ViaGNEZFNoVmVwYzFnZWdFZHRkM2JlY21kRWNVaFdhUWYwYVpiSmhnYk5odmViYXhkRWdUYWJiMGVkZnpkRWQwY2Rhb2dGaFVjaGVRYlJneGJCYm1oY2hsZ1llVmRhY25mSmhSZWRoMWQ4YmVjR2VDY29kcGhWaDBhb2JGZ1dleWZJaGpoQWJDZlJmZGVKZDFmcGhNY0hjUWN4Z2NnVWJtYWhlM2VlY25hdGRFZGFjaGZjZlBjQmNoZTRnbmJCZ0RhY2RrZU1kUWUxYlJlUGJSZ2RhR2NRYjFhQmRLZlZjVWdoY3liY2VIZ0JoSWZRaDBobGhhZWRhWGZoZ0xoZGczYXBhcGdWYTFha2ZRaEdkV2hnZ0xkUmVXZzhiUmZHZXpndGdKZE1kRmhzZ0diT2FuaFlnSGVGZUFnSmF4Y01jbmNvY2VhRmJXZ0ZmeWdRZW5mNWdYYVZjZ2NwZnBkZWhSaDhoWWNPZWhlUWN5YmFnQ2NJZzRoRmREaDBiNWJDY0ZmbGZZaE5jQWJaZjhnSWMzYnBhb2hUZlhiaGFDZEFlM2FnYVFnWmNFZHhlMmVkY2xmSmdDZ0ZnWGFoYTJkRWNrZ3NmWWFRZTFhbGZpY2NibmZCY3dmU2FFYU5jSmhVZWljRmgyaENlRGE4YzdjT2V6Y1FkV2JWZUZod2FKYVhjMGQwZW5lRWRSZmhidmhVYW5mb2ZUZVdiM2ZRZ1ZlVWRGYmxoSGdUZ0doWWFtZldnRmJZYWlmTWJ3Y01mVWhHYUFhNWRUYkNkRGZVY2ViVWFHZllnZmFaYm5mSmJvY2ZjSGc5ZXZiV2ZraGNlZGRIZFZmVmZTaGRoR2h0ZjZjWWMwZTFncWJTYXdoOWhTZUVjR2RSZk1mZGduZFpnU2NTYWthRmMyZU5lVmJvZ0tlU2FpaEFnV2NKZ2phY2FSZkpnRWZBZUxnU2dWZUZlMWJiZTBmSmMzZVpmbmhWYlhjUWRSY2thWmhOY0Flc2dSZ1lnVmZKYWJhTGNoY1ViUWFYZEFkTWd0aGRnQmR4YllhRGh4Z0JndGdjZmtoQWZjZFFlSGdKYVJhZGcxY2RkS2hGZm1jbGVoYkZkaGNoYW1kRmRHZ1pobWJZYlhmQmNWaGJjMWVwZkhmRmJCaFJoWmJlZ0hkUmJyY2VjbWdOZU5mYWVrYnNkUGJVaGhlQmdrZlRnSGVaZDJiVWVraEllVmJlYUhhWWJTY0hiMWRBYUtoQ2FtZndna2VaZ0hjNGhKaEJid2gxY1NmTmduYVloR2NJYmphWWM5Y0hhZ2dsYWNkUWdHZkJmS2ZUZEdnWWRmZVFjU2JBZFRmUGZ4ZnRnVWdlZFJleGNHYUhnUmhKZmNmTWhqY3NoR2ZXYlRhTmU2ZUFhbmI1Zk1lWWZCZlpkcGVZZFJoWWhZZ1plaGFSZW1hWmRtZEZnd2VWY1dlOWhhYVJheGYxY0FnVmdSY2NiNGJPYURoOWdqaEZla2NCZUxoRGMxZ0lmUWNaZkVjeGMyY2RlbGdKaENkRmRYZGhhMmVFYWtjc2RZaFFlMWFrYjBlTWN5ZEpjd2hDYTFiaGhqZVdnbmNWYzRjU2YzZGRhNmZhZVZlZGJaYUVoQmRsaG9nQ2IwZFZmdmJFZlJlTmh2Y1RnemJBYlRkV2htZmhlYmhRZEhmcGJIZUViR2FaZnlmVmhoZ1ZmcWZjY2xkRmYzYlZlMGNvYldiYWVXYUVnV2JHZ0dhWWNVYlplbWI0ZTFmQ2N4YjFkdmFVYlVoY2JNZVlkRmhWY09kYWFHY3RkaWJhY2toMGgyYlNmMWRzYnBlV2hCZmxjQWVYZkhoWmdTYlFoaGVWZDRkZGdoZkplTGNHY0VjTmFaZ1lnbmNKaHdmY2ZFYWhiRGRTYVZmcGYxaGNjQmY4Y01jTWJtZmxnY2JXaFFhTmhrYmFiQmJkYlpmYmd3aGthYWJiaHhmdGN6Z1JiemF3Y2dlRmNVZU5mUWNWZldiMWdxYVdoRmdZZlZkYWVuZEplUmVkZzFmZGFLaEZibWJsY2hnRmhoaGhnbWJGZEdkWmdtZFlmWGhCZFZiWmF3YzRhOGRWZFJiMWRlZVVhbWdFZFdhZWhuYTlhUmFhY2xoTWVHYlVoa2Z4aGtiR2NBZDBiK2hVZGtja2dWZWJmQWdzZWVkWWRSaGhjRGZXZVdoSmd5ZGNiSGRCZklhUWYwZGxmYWhkZVhkaGVMZmRmM2hwaHBnVmYxZWtoUWFFYlRjeGJ3Z0RiV2Q4aGFhRWEzY2djNmJjZ3dmOWZiZWFkQWQxZEJoVWRCZXNoUWNNZGdia2hlZEZoV2dGaHlkUmF3aHBmOWhTZGhiWmVwZFloUmNZY1lhWmhoYVJibWJaZ21hRmR3aFZiV2I5ZmFiUmV4ZzBhZGhYaEZmdGg0Y1FjWGNwYmpnVGVXYnBoTGFEYTFlSWJRZFpkRWR4ZjJmZGVsYkpkQ2FGYVhnaGUyZUVla2hzYlljRmN4ZEVkcmNJZ1hjNGFtY1dhVWEwZElnSGZqYUZmd2FDYkhoa2IzZFBoQmRzY05lV2NVY2tma2NVaGtjMGd1ZkdhQmhwZWhhRmRUZnhoSGNDZjJhQWVHaFdnVmZsYUpiWGJUZ01lK2JBaGxnd2c2Y1BmZ2VoYi9kQmRFY01iYWNRZzJiRWFXaEdiR2hZZlVmWmZtYlpnaGVjZUZmVmh2ZFdia2djaGRmSGhWYVZjU2RkZkdhdGg2YWFmd2ZWZXFkUWhCZUpnU2JDYUdlMWdBZlhoSGFaY1NjUWZoYVZnNGZkZGhlSmdMZEdiRWFOaFphWWRuYUphd2NjZUVlaGREZ1NmVmZwZDFnY2JBZWhjM2daaDJla2VaY1VmVGRvZ1poYWRBZ3RkRmFiZ3hiRWNUY2JmMGdkYnpnRWEwZ2Rob2RGZ1VoaGRRaFJleGdCaG1mY2RsZ1llVmFZZGlkWWFxZlBmMWNkZkJiRmZuZ2dmY2dGY2dmUmQ2ZUZhSGc1aHZjWWdTYXhnVmhPYXlnRWNQY1lkQmRGYS9nVWVuZlJocmFlaG1nTmJOYWFma2ZzaFBjVWdoaEJia2hUY0hnWmEyYVVja2ZJYVZhZWZIY1lnU2VTZnhoQWRYZkllaWdwYXlmZWUzZUJnYmZQYWtkbGVHZGFmWGRoYVRiZmZuYm9kMWRWYndmMWZyaFVoV2FnZUFhUmVYYzFkc2hIYTBiVmJIYWNoeGFOYkhnYWVCZ1ZhSWhVaEVhY2VRZlplbmNKY1dnRmJXZnBoeWRVZFhlZGFYYlNhaGhaYnBiYWRVaEpjamVMY2hnUmJ0ZlpjbmJRaE5mVmNYYk5mR2hSY3djVWFVY1ZoUWg1ZDBnUGJ3aEVjcmJUYldnRmdMZkdoeWU4Y2NmVGVrZXhiMmFkZGxmSmhDZUZkWGNoYTJnRWVrZXNjWWVRaDFhbGVpZGNmbmRCZHdiU2ZFYU5mSmZXY25lVmd3Ykhmd2Z3ZXloYWJWYnhlWmRCYjJiUmVvZkZoMWJsaHZkQ2JSY3BidmVHYTNiTmNIY1BoQ2JBZlZiUWYxYkJkUmdiaFVjeGR5Y1ZjaGRWY3FoY2VsYUZkM2hWZjBib2FXZmFhV2hFZ1dlR2RHZ1lmVWJaYW1nWmJoaGNkRmF4Y21lVmdtZTBjZGZIZ1ZlVmZTZGRmR2h0ZjZnWWcwZzFhcWdTY3diOWVTZEViR2RSZE1nZGhuZFpnU2dRZWthRWh3Z1BiMGdGaEZoVGRsZUZlWGNJYnpkWWcwaGVjQWF0Yk5kQmZBZDhlNWNMZ0FmSWJuY05iamJCZWZmR2hCZWtjUWhaZGxia2VLZ09oMWMwYmJiZmJGZFpnNmJIYVFkb2I5ZVdmUmR3ZFpkRmYxZ3doL2dlZWdmVWJjZFpjbGZoYVJkZGUxZWRkS2hGZ21lbGRoYkZnaGdoaG1iRmdHYVplbWVZY1hiQmVWZmJkMWFwaEhlSGFSZFVlZGJVZm5iOWEyZWVnbmd0YkVhWmdtYkVjUGRVY2hjQmNrYlRoSGNaZTJhVWFrYklnVmJlZUhkWWFTZVNieGZoZURjV2RXZEpkeWNjZkhnZ2JMY1FnMWdSZ2FhT2gzYUJoaGdkZDNkcGZwYlZhMWhrY1FhR2VXZGdoTGVSY1dkOGZSZkVhMmI5ZUhkY2N4ZE5iSGZhY0JhVmRJZlVnRWQ5Y0VnSGRUaHBiV2RIYm1lcGVqY0xmSGZkYkxhVmVoZlpoeGJhYUJmWmRFaFpla2JBZWRiTGRoZXhjOGVmZjJoOWdhZlJheGMwZWRlVmRWZEplMGhhYTNlcGNqZFRmV2NwaExmRGcxZklhUWNaZUVneGYyZmRnbGFKYUtlUWVRZ01lK2JFZmtmQWRZZlVkQ2hSZWljYmVtZHhld2ZVaEVjcGdKZEJlbmNVYnNlTWJEZzloNmhZZmxhZGhMZGJnUmNWZENlQ2YwZFZldmdFYlJhTmh2YVJhM2RNZFRiUmgyZGdlVmRTaEZnQmhIaEVhR2FaYXlhVmFoYlZkcWFjZmxka2ZqZUxoQWZJYVdlWWZtYUVkRGZaZ1dkWWhJZ2VibWFaZjVhZWRWZ1VoemJXZGhkTmFtY1ZjVmVWaFphZGJIZThmSGViZjJlZGJxaFNld2Q5ZlNkRWJHYlJkTWZkZm5kWmVTZ1FjaGZWYTRnZGRoYUpjTGRHYUVnTmZaZllhbmZKZndmZWVCY3dkNGJBaFZhcGgraGViRmV3Z0tnZWVuY1ZiTGhXYlFoZ2RRZmFlRmRkYkZjT2QyYnBlYmFiYjBkeGN6Y0JkVGdwZ0NiRmhVYWhlUWFSZnhoQmhtaGNjbGZZYlZnYWRuZ0piUmdkYTFjZGhLZkZmbWNsZGhhRmNoY2hmdmdIY1dhcGRNZllhWGFCY1ZnYmcxZnBmSGRIaFJmMWFWYVVobmFSZnJmZWJtZ05kTmRhYWtmc2RQYVVnaGhBYndiQmVEZjhibGhYYkJlUWhHYWRjamNkY1dkRGV4YUFkQWhWZHlmOGFuZ1BkQ2ZRZUJjRWJ3YlVkRGNmYlRlbGhDZWZmbmJRZjdjR2hBYzFoY2JFY1hlc2dhYVRjR2hGZ2NiUmhpZ01lVGdPY2tlTWFMYk1lUmMwYmJmV2RVZnNhNmZaYW5nSmdXZkZoV2ZwZXljVWhYY2RjWGVTaGhlWmVwZ1lmUmJZaFljWmZoY1JobWhaZ21jRmU0YkhlV2g5YlJjV2doZTBnRmFYZ0ZlNWhlYWFjM2dwYWplVGZXZHBjTGhEYTFmSWRRYlpkRWR4ZTJmZGFsZEpjQ2NGYlhiaGQyYUVha2ZzZFFmQWdGY2xoL2RjZ2pmNWM0ZVlka2dOYUphV2huY1ZoNGhTZDNnZGI2YWFkVmhkZ1plRWJCYmxnb2RDZDBiVmF2ZkVjUmVOZnZkUmgzZU1hYmdFZHhjTmJkZVNlRmh0Z0hnQWdSY3RleWZTYmdmbGFxYWFmbGRoZDNiQ2MwZnBhQ2NFZWljbGNyZkZiRWR3Y1VjWmRtY1pkaGNjYUZmVmN2Z1dma2djZWRlSGdWZ1ZiU2ZkYUdndGQ2ZFlnMGQxZXFlU2F3ZzlmU2FHY0RlQWczZFBobmFaYVpiUWRnZVlhRmVkYmdnNWVYaEdjRmd0aFFiWWFpZzVld2RKZ0RlTWdMZ1NlVmdGaDFiYWhqYlphN2ZVZEdnbGJYYVdiUmdBZFpjYWhBYXRoRmJiYXhlRWFUZWJnMGhkZXplRWgwY2Rjb2VGZ1ViaGNRY1JneGZCYnVnSmVpYTFhZGVhZG5hbGRSZFlhaWZwZEtoQ2VuYVZjaGZEZGhmRmJtYlNiR2ZZYnlkR2FqaGhlVmZaYkZicGZUZllmQmFGZS9lVWJuZFJmcmdlYW1kTmROZmFka2VzY1BlVWVoYkJma2JUZEhlWmYyYVVna2ZJYlZjZWVIZ1loU2hTYnhnQWJYZUlnaWRwY3lnZWMzZEJnZmNQZmtobGRHZmFjWGFoYVRoZmFuZm9jMWdWZHdoMWZyZ1VjV2ZnZEFlUmVYZGxoc2RPY1diOWNIZWNieGROY0hlYWRCZFZmSWVVZ0VnY2dRZ1phbmdKaFdlRmNXY3BheWZVYVhnZGRYZVFleGU5YmxjU2F4Z1lmWWdaYWhkUmdtZFpjbWFGZHdkVmNXZTloYWFSYXhoMGZkZVZkVmRKZTBjYWQzZnBmamZHZFNlSWNDYVhiRmN4Z0doY2dFYUljM2ZNY2hiWmZLZ1ZhbmFZYTdhUmd3YmRjTWVDZWdma2N1ZEtjM2RnYnhhUWVVYnBhSGRDaERmb2RzZ0JjM2U5ZHBnZWhGYjVjWGhYYlVkd2VrZlhjd2R3Zy9iWGhVYnBobmZGaEhkb2JJZWJnV2ZnZVZkU2RGZUJoSGVFaEdmWmZ5Y1ZlaGRWZHFiY2JsZEZhM2JWYTBocGFMYVFmMmNFYVdoR2hHaFllVWFaY21oWmFoYWNoRmFWZHZmV2JraGNnZGdIYlZnVWRhYmRiR2RCZW5nWWIxZFZoeGJZY1FhOWZTZ0VoR2hSaE1jZGFuYlpiU2ZRZmhiVmg0aGRlaGFKY0xjUmZVY01hT2VLaGplc2M4Y05iVWNoZkxkR2FWYXBncmZaYVVoc2UvYmNnM2ZKZDlnV2FSY0FmWmNhZUFldGFGYWJleGhFZFRiYmUwaGRkemNUZ21oMWNvZkZmVWNoY1FjUmV4aEJobWhjZWxmWWNWaGFkbmFJZERiTWFnZ01jZmNSZUNmZGRoY0hhamFKYW1oRmRHaFpobWRZZFhmQmRWY2JkMWdwZUhlSGFSYjFjVmRVYmpnSmZyYlpmR2VNZEZoYWNrZDBlSmJlZUJhQmVraFRjSGZaZzJjVWRrY0lmVmZlZUhhWWNTZVNjeGJoY0RjV2ZXY0pkNmJQZzFjcGhJZlFiMGZsZ2FjZGRYZWhlTGNkZTNncGRwYVZnMWZrZ1FjR2dXaGdmTGdSZ1diOGNPY0VnMmVjaFRmT2IxYW9kVWRaY2xnZ2ZOYkhoUWdoZkNjUGIzY0plZGRDYkdlb2dtYVhoeWZRaGJnQWgxZlVic2NhZ1ZmNGZSZ2Jhemc1Z21hWmFtY0Zjd2hWYVdoOWhhYlJheGMwYWRkVmdWY0phMGdhZzNhcGdqZFRhV2FwY1JlRGN4aHNkNmVaZkVkeGEyZ2RhbGVKZUNlRmNYY2hiMmFFZGthc2JZYVFnMWVsaGlmY2NuZ0Jid2dWYzBmTWZkZUVkamJ3Z3JnUmhUaG9kL2RKaEJnZ2dMZlNnUmVjZzdoVGhoY0ZnbmNSZ1JoMGc4ZkVoamNGZ1NmRmNUZnBlVWhFYVZnZ2FQZEhiR2dZZTBkWGN4YmxmcWZKZmhka2UraEJhRWVSZWJmTGVDaHhkRmdVY1RjeGVSYmJjMGh4aGhjY2NGYVZhdmVXZGtjY2ZkZ0hhVmdWY1NkZGhHZ3RkNmRZZDBmMWJxZVNkd2I5ZUliRWJEZ0JhQ2FOZVRja2dDZ0djeGQwZXNnUGZsYXNiWWJGYmdjNGZjZkxnemUwZmlhS2VVYlJjRGRIZVJoSWI4YUtkMGRVZDZjUGF5ZVFmRWhFZEVkcGhjZlpnQWVzYk5hWWJ4ZkZnVmRaZGthdGhaZ0VmMGVkZm9iRmdVZGhoUWNSYnhiQmRtY2NlbGNZaFZkYWNuZ0pnUmdkYjFjOGhlYVhmaWJBaHliR2hGYlViamZXZFRlVWR2Z09kemNWZlZhY2VsZ29nQmJIZ1JlQmhWZUdjbmgxYmlnZGNrYWxnTmFhYmtic2ZQZlVjaGZCZ2tnVGRIZ1piMmJVY2tiSWFWZGVoQ2dKY2FiQWRraHRncGJXZFdjSmJ5ZGNjSGRCZUljUWcwaGxjYWNkZ1hmaGFMY2ZobWhGZ0RiVmgxZmtmUWJHZFdjZ2hMaFJnV2U4ZVJoRWJ6ZUplT2VmY3pjbGNIZmFkQmhWZElkVWNFaGNoUWdaaG5kSmFXZ0hnU2RWYThoQWNTY1VlWWdIaGxna2E5Yk9lRWZaZmRjYWVGZkFndmJJZ1NiUWNqY0FjV2Q5ZUhjUmExZnRmSWZHY3hiRWJnZ0liamVVaHRiVGFXZUpiQ2hEZndka2Q2ZlphRWd4YzJoZGVsZEpoQ2VGZ1hhaGQyZkVna2ZzYllnRmZSY2dhd2FjYWllUmQ4Y1lia2JOZUpmV2RuaFZnNGFTaDNiZGc2ZWFmVmNkZFpkRWhCZ2xnb2hXY1VibGJGYUVmUmROZXZlUmczZU1hVGhSaDJjZ2FWYVNhRmJCYkhlRWdHZFloN2VWZGdjaGJxaEpjaGhrYStnQmdFYlJoYmNMZENoeGZaYVNoamQ4ZlliVGhHZFplaGJjZEZiVmJ2ZFdia2VjYWRmSGFWZVZlU2JkZkdodGE2ZUpoa2ExZDNmU2J3ZzBhQmFSZkRnWWdGY09iRGJGZ1FmUWFnYmhlbGRkYWthWWRTZVNmQWVZZFdoSmVIaEloNWRmZEdiSmNEYlNkVmJwaDFmZWRFYXRnM2dlY21nbGNYYVdnUmNBZ1poYWhFYlJjRmFjZ2hkRWNEY1loMmcxaHplRWgwYmRhb2JGYVVkaGVRYVJkeGVCY21jY2VsYlloVmVhaGpjcGNSaGFjbGVjYmVnWGdpZUFheWVHZ0ZiVWdqZVdnVGRVZXZiT2Z6ZVZkWmdSZlZmcGNIYUhhUmcxZFZiVWRuZFJkcmhlZG1jTmJOYWFia2FzY1BkRWFSaEJnNWVUZkRhZ2R6YkJmVWFKYmJhY2ZIYThkSmZZYlJoaGREYldiV2RKYXliY2FIaEJmSWJRZjBnbGdhYmRoVGY0Y0ViSmhYZ3BmaGFmaFZha2hRZkdiV2NnZUxnUmVXZjhnUmVFZTJoOWVIYmNoeGNOYkhnUGNGZjBlQmJBZTBnbGVFZktlU2FZZlhmV2NSaFVkK2RGY0RibGFYZ1ZhQWh0aHBiY2JnZVFkeWZaaGhjUmRtZVpibWZGY3doVmNXZjllYWFSY3hiMGRkYVZmVmZKYjBkYWUyaFZhamJSaFdlSWZmY0RhMGQ4ZVFhTWZBY1FkL2ZKaFZhd2FVY0JiSGNZZDFoWGhnY1JlV2RCZGxjRmNyZ2ZnQ2ZJYy9nSGFBYjljQmFTaDNieGR4ZlJoMWExaDZnYWdWZGRmWmFFYUJkbGNvaENiMGdWY3ZjRWVSYU5mdmdSYzNmTWVUZ1JoMmFoYUJkUmVoY0VoRGdWZUdnNGVtYUhibGV3YzVlZmhBaGRibGJXYlFhbGJhZkplaWQ5ZVRhRWJHZThkYWZOYkNha2YxZFBiRmQxYjRnVWUwYjRnUmVOZTFkVmJTY2RmR2h0YzZhWWEwaDFmcWRTYXdkOWZTZ0VmR2RSZk1lZGVuZVphU2JRY2tnRmgyZU5oMWVZZVBlRWJCaGNnUmVLZnljRmIrZUpnbGZ0Y05nQ2VoZllnNmdOZmdmNWgvaGNlMmRjY0ZhRmRrZFJmVmdZY0JncGdYZVpiaGFnaGZhUmZVY2RkemRFZDBlZGRvZkZiVWFoaFFjUmZ4ZkJjbWdjZWxiWWRWZmFnbmZKYlJnZGJ3Zk5iRWZWZ3lmMGVsZkhha2Z3YXVkWGZUZFZhb2dOYTJoUmViY0xiQmdZYUloVWQxaGhnZGhXZDNnb2M1Y05mVGRjZkJkWWJsaG9mWGRXaHhibGZvaFpnbmRaYTJnVWRrYklhVmNlZEhoWWNTY1NmeGZoaERlV2NXaEpjeWdjYUhnQmNJZ1FkeGIxZVVmTGhUaGNnWmFmZXllNGVoY0hlZ2VvZmVkVGczY2tlRmhDZkRhcGRkZVJjeWhZZlhiUGEwYnBoUGFLZlJjeGVHZ0FiZ2NoZEVkS2JuZ3BmRmhCZ0dhTmE4ZUhoQ2NJZGJnSGdsYzhhNWRMaFVlOGdRY05jUmgxZHZhYWdrZnRod2RWZldhOWFhZVJjeGQwZWRmVmFWZUpiMGZhaDNkcGNqY1RlV2hwZUxhRGcxZ0pmRWFhZmdmRWFqY09nZ2hZZUxlUmZUZ1FkdmZHYmhnZ2hSZFRkUmhnZW1lTmZuYmdkMmFRZFVnOWdqaFdobmFWZTRnU2gzZ2RlNmFhZFZnZGNaYUViQmFsZG9iQ2YwY1ZldmRFYlJhTmR2aEVkM2IxYUxlQ2VEYm9mZGVIYkJoZ2ZPZlFkMmhnZmtoUmVCZHNhbmFKYXhjMGhqaEhnaGVwZWFnTWJHY2xhWGdFYldjaGFHZ0tiVGNJYXRhZWNFZ1pmK2hVZDBnbGJRaFNoQmZrZEdoUGdUY3NiMmhPY2toVWc1ZVFkZ2daY2VlT2JtZVJmTWdkYW5iWmNTZFFlaGZWYzRmZGRoYUplTGhHZkVoTmRaZFlhbmhKZndjY2RCZHhkTmFCZEFmOGU1Z0xlQWVJY25jTmRqaEJnZmVDaGhia2hYZ0tjVWg4YUJiWmIxaGNlYWVZYjJkMWZ6YUVnMGZkYm9nRmNVaGhmUWZSaHhoQmJtYmNlbGFZYVZmYWNuaEpoUmRkZTFiY2JlZEdjRGJFZXViUmdCYUFneWhYYkNiOGYxZ2JneWRaY0doWWJSZmNnU2NVYVVoa2NjY0FkamJnYnliY2NpZkpjRWZaYkJkbGhBY0JkbGN4YnNmWGMyaGRhL2ZYY0FkOWVBYU5kQ2ZKaGJiR2QxaFFkYWJVZlRjRmg3YWVkWGR4YWliUWUwaGxjYWVkZVhjaGNMYWRnM2FwZXBjVmgxYmtmUWFHZldiZ2hMZVJlV2U4ZFJlUmEyZkVlS2NKZWxmOGhUYUloVWJVaEVkQ2hVYTlkRGNiZjNld2hYaFVlU2c1ZjZkRmYzZDVlYmJZZ0JoWmNwZVljUmFZY1lkWmVoZ1JkbWVaYm1mRmV3YVZkV2c5YmFiUmh4ZzBoZGhWaFFkWmI2YU1lemdVZnhiUmdUYzRmRGNSY2dhRWJlYU1nbGRoYjRiT2d3ZGNkT2VRY1RnRWZtYlhhaGRJZlFiQWdsZkJic2JJZERoOGZrY0JmRWJ0Z2FlU2YzY3hmMmdCY2llSWMyYVBnUmg0aEpjWGJFYkJhZ2VXZ0VleGVtZUhjVGNsZ3ZjUmMzZk1jVGJSZzJmZ2dWYVNhRmhCY0hkRWNHYVpoeWJWYWhjVmdxZmNjbGFFZ2plV2JRaGRhRGNKZlRjVmdmYVNiQ2ZwZ05kYmFqZ1Zhb2ZmZGhmUWRyYkhla2U5ZmJnRmZGaHhhNGNkZEdndGI2ZFlmMGUxYnFnU2F3YjloU2ZFZkdoUmhNYmRmbmFaaFNlUWJnaDljNGJmZGtnWmFMY0JmVWVNZU5hS2FqYnNhamZmYmhoc2hHY0RhQmM1ZDdkT2V3YWNiNGJOZkNieGRmYVVnQmY1YVloTGVFYTllTmRJYXhiZ2FhYllhMmMxYnpmRWMwZmRkb2RGZ1VjaGNRZVJkeGJCZW1hY2NsY1lkVmdhYm5kSmJSYUlhMWFrYUxhVWVpZDFocGVWYVJnWWhnYVJoaWhrYXJjRGF5ZlVlWWJMYVJiOGZWZ0ZhVWZrYmRoR2J5ZWRkbGVMZWlid2JaYUtnd2RkYXdhSGdsYlVocWRSZFhoOWd0Y2VjRWRJYlZkZWJIaFllU2NTaHhkaGFEYldkV2VKZnloY2VIY0JlSWJDaDBjbGdYZ2RnV2NCaExoYWJXYWRkcGFHZ0ViSWc2ZE1jMmJnZkxkUmVXYzhjUmZFYjJmOWFIZGNheGNOZEhoYWFCY3hiaWhVZUVmY2ZRZVphbmdKY1dlRmRXYnBheWJVY1hnZGNYZlNiaGdZZnNhU2F4ZFljWWNaaGhmUmRtZlphbWdGYXdiVmdXZjlnYWRSaHhjMGJkYVZlVmZKY3JiYWd6Z2xodGVDZXpoZ2FFYlFjamZCaFpkTWFCZTloK2ZYZ0ZjSmdDZUZjWGRoYTJkRWdrYnNhWWJRZDFhbGVpYWNnbmVCZXdoU2hFZE5mSmdXZG5hVmU0ZlFnemc1YjBlS2NoZjhhWWRRZW5nb2VuaFRnd2NBYU9kUmFSZnNiZ2VSYjNmZ2dUYlZjbWRFZVZjVmRFYnhjSGdDY0djOWJ5ZUNnaGZVZ2pmZmJCZUlkL2VGZ2hlaGcxY0poaWZWZVRjZWRUZ0loY2JLZFdjOWR0ZVdnbGVWZnZmV2FraGNlZGdIZlZmVmRTZmRnR2Z0ZDZiWWYwZTFocWJTZXdkOWdTZEViR2ZSYU1iZmJqaDlhY2NBY1ZkMGQ1YUpkSGFFaEVoWGJBYlljNGdOYW5ib2IvZWNoRWROZ0RnV2FsYk5lMWZaYUZkZGIzZVlmbWNCaFhoQmZSY0JjUWRaZmtmZ2FOZ0xoa2ROZXdlSWZBZ01nMmNjZGhhTmJnZ1dna2ZoZWJkUmh3Y0pndmRmYm5md2VWZ2FlbmRKaFJlZGYxZ2RnS2RGaG1hbGNoZEZlaGJoZ21jRmVHZlphbWhZYlhnQmdWZmJoMWJJZE9hRWQxYjRnZGVFYnlmWWNJY05hU2djZEljQ2N4YThjSGJIZ1JoQmh2Y1RkR2hOZi9jVWZsaDRhSmJlaEdkNGhiZlNlMGRSaERiRWhHaHdmeGNPYkRoRWFhZUlhQWdZZGVoTWFCY2tmZmFmZHpjVmRwZlhmRmNrZ0VlRWFHYVFjaGdSZVdiOGFSYkVlMmQ5YkhhY2R4Y05kSGZhZkJjVmNJYVVhRWRjYVFlWmJuYkpoV2VGY1docGU2aEdjSGJrZFVhQWJsZ2NkN2VBZGxlbGdjZ0llM2VVZ3lnYmFpZTVkd2NYZ21jOWZOY1RoaGUwY0JlU2hWZ0pnc2FZY25jb2EvYlRnU2dOZEZoVGdCY3BnUmNOaGlhOGY1Yk1jaGRjZ2poUWhYZUFlNWNFZ2tlQWJZZFZjVmZCZ0lnY2JuYUJmd2FTaEVmTmNKZVdhbmVWZzRhU2IzZ2RnNmJhaFZiZGFaYkVnQmRsYW9hQWNtaDlidmJFZVJnTmN2YVJiM2RNYlRkUmgyY2doVmFTZ0ZoQmJIZ0VhR2RaZHloVGNCZVVjcGZmZkJnY2JsZEdjQWVkZzBkSWNEZVZiRmNFaEVmd2RVYlpnbWJaZGhjY2dGYVZmdmJXZ2tmY2dkZ0hnVmZWZlNoZGhHZ3RmNmRZZjBlMWhxZVNod2VjaGJiYWR5ZXRkTWNmYVhiWmJEaFBkeGJWZ2tmYWdoYkpjVGFFZlVjTWVGZ1lmamRzZ0xiUGJ6Z1ZhUGJZYzFocGcxZWVkRWF0ZDNhZWVtZmxoWGFXYlJhQWRaYmFlQWd0YkZnYmR4ZEVoVGdiZTBkZGV6YUdod2Y0Z1RnV2RrYWhhYmRSaHdmTWFiaGNja2hvZkphYWNtZ3BnWWhkZHdmdGFLZ1hoeGNJYXVlRmhoaE5mbWJCaGhkdGRxZFNiM2dCZ1ZjYmYxZ3BjSGhIYlJlMWZWaFVnbmZSY3JjZWVtZ05iTmJhZWtkc2VQZFVoaGVCZWtmUmZEYzhiTmNIZ1VnSWZlaGVkR2hOY3ZlU2Z3Z1JiZmNXYlhmcGQ3Z2NiQ2F4Y0ljQ2FqZEllVmNkZ1hhTmhMZllkd2ZkYmxlZmVWaGthUWJHYldjZ2NMZVJlV2I4ZlJoRWQyYzllSGZjY3hnTmhIY2FmQmhWYUlnVWhFZGNiUWJiYmpjc2J0YldobWhwYjVoVWRXZEFncWJTY2dmcGExZ1lmUWY0ZFJkWmVrYmhjbWJMY3hlb2gvZ1ZhV2ZSYmFmVWJXY0FhM2FWYlZnSmgwaGFlM2dwaGpkVGdXZHBmTGFEZTFmSWZRZFpmRWJ4YzJoZGNsZ0plQ2RIaEhmUmVjYkVna2dzZFllUWUxYWxnaWVjYm5oQmF3ZlNlRWhOZ0pmV2JuYlZjNGhTaHpiUmYwZ0plQWZJaFZhUmNGZEFjNGRSY3hoeGduZVVoQmFwaGhhRmZUZXhjSGdDYjJjQWRHYVdiVmVsYUpjWGVUZk1nK2NBYmxjd2Q2Y1BnZ2VoYy9nQmhFZ01oYWJRZTJmRWFXZ0dmR2dZYlVmWmRtZVpmaGdjZkZoVmd2aFdma2VjZ2RjSGJWaFViR2dlaGpkTWYxZE1oVWZVYXBkUWhnYkVhQWdYYXphQWdBZWZibWhSYkZhU2R4aHNoMWhJYjFkNGVmZlViUmFNYVZlT2czaG9lamVlZVVhWWhDZURhUmc1aDlhUGZraEpnN2hVaEdkbGdYY1dmUmVBaFphYWZBZHRiRmNiZnhiRWNUYWJmMGJkZXpiRWIwaGRkZ2ZXZ2thaGZiZVdmaGRCYitjZWIwZDBhL2ZhYm5lSmdSZWRmMWhkYktoRmNtZGxjaGFGZ2hkaGFtZlVmaWNrZjBmWWdYZGhmL2diYTFlcGRIYkhmUmMxY1ZkVWJuZlJocmhlZm1oTmZOZGFoa2Z0aEhoVWNnZDVjNWdUZERmbGUyY1djVWNJZkJmZWhIZ0FhVWhZYlJjaGhEZ1dnV2FKYXljY2RIZkJhSWFRZDBjbGJhZGRhWGFoYkxlZmN6YTlkRGhWZzFla2dRZ0dhV2hnZ0xmUmVXYzhjUmVFZjJnOWFIZGNkeGROZ0hoYWVBYnBmSWVFZzBlbGZXZE5hRGgwZWJlZGR5Zk1jbWNBZm5mOWI5ZVNiaGJaY3BmWWNSZ1liWWNaZGhkUmNtZVpkbWRGYndmVmJXYTljYWJSYXhjMGdkYVZkVmRKYjhmSWRuY1FlZ2RCZFNkc2ZaY2JoQmMxZlVjSWJTYzBkaWRmZWhhMWdDaEhjbmhoaG5jR2UwY3NiRWFYZDFhbGY2ZGVkM2RBZ3NnU2VBYnBhSGFHZVRhMGc1ZkdmUmhRYjFoTGhSZEloNGJSZUJnRWNuZEFha2JsaEZoRWJSY05mdmZSZDNiTWRUZ1JlMmJnZVZoU2NGZ0JlSGZFZ0dnWmF5Z1ZlaGdWZnFkY2hsYUZhL2ZIZ2tiUmdWZkllU2dCaEVoZWR5Z2xiUWRJaHdjY2ExZmVjQmJwYnZhVWVVZWNiT2dGZEZmVmNPY2FnR2V0Y2lnYWVrZTBjMmZTZzBmWmJjY1VieWV3Yk5iSmVCaFViZGZCZ2xnQWFaZUlnaGdvaEVhR2hFY2hiWmRjZkhhdGg4ZFdka2VoZURoU2JWZ3BnMWVlYkVhdGEzZWVobWhsZFhjV2dSZkFiWmdhY0FjdGhGZWJkeGZFZlRnZmUwaHRiWmVFaDBkZGNvZEZjVWJoZlFoUmZ4ZEJibWhjY2xlWWdWYWFlbmRKZVJoZGYxZGRhS2dGZG1hbGN4YlBkQmZoZ21kRmJHY1pjbWJZY1hmQmZWY2JlMWZwY0hnSGVSYzFnVmFVYW5nUmdyZmVjbWVwZG5hYWdraHNhUGVVZGhiQmRrY1RjSGdaZTJoVWRrYkljVmFlZUhjWWdTZVNld2VKaERlR2NtaHdnMGNJZGplOGJGY0lmUWNBYk9jSmJuZ0JnaGVkYTNncGFwYVZkMWVrZVFmR2RXZ2dkTGVSZVdlOGZSaEVoMmM5Z0hjY2F4ZU5iSGNhZkJoVmRBYUdjVGh4aGZiWmNuZGxlV2JCYkJhZGV5YVRjV2V0YVhjVWZoZTlhcGhQYVJjWmZSY0hlVmJzZWJoYWJrYXRod2JWZldkOWRhaFJjeGcwZ2RkVmRWaEplMGVhZTNlcGRqaFRoV2JwZUxlRGUxZ0liUWZaZEVoUWEvYURmUmMxY0NmSGduaGhobGhiYjBoc2FFYVhnMWdsZjZnZWMzZUFkc2JTYkFkb2V5ZEZoWGNWYnpiU2QyZlViSGVaYVhiMWhaYkVhQmJsaG9kQ2MwYlZodmhFY1JlTmJ2Y1JmM2NNYlRoUmQyZWdnVmNTYkZlQmdIZ0VjSGZaZythZmVCZ1ZjcWVjaGxmRmgzYVZkMGFvY1dkYWJXZUVlV2hHYUdlWWdVYlpkbWdaZGhkY2FGYlZkdmFTZm1oMGNkZEhlVmJWaFNmZGJHaHRmNmhZYjBiMWRxZ1Nld2g5Y1NlRWNHZ1JkTWhkYm5mWmFiZ1RlamY5ZDRiZGdoY0pjTGNHaEVhTmFaZFljbmZKZndkY2NFZWhjRGNTZVFhNWc3YklhQWFRYWxjY2NpZnBkWmFGaEVnVmJWYVBhRWNJZFZnSWUwYmdlYmZQZkVjNWc2ZUhiUmNVZm5oUWZRZlJnWWFWaFFmTmh2ZmZiQmN0Y0FlSmZpZ1llWWJKZXhnc2hUZkhhaWFoZW9kR2VGZ2tlaWVVZ0dhNGV6Y2FiSGV4aC9jYmcxZ3BiSGdIZ1JjMWRWZFVobmhSaHJkZWhtZk5iTmhhY2toc2dIYkhjUmdCZ3ZhVWdYYlplaWFXYzBic2VPY1VnbmZZZlNkU2N4ZmhkRGNXZldjSmV5ZmNmSGZCYkliUWEwZmxnYWJQZ1hlaGdWZGRhemJWYXlmZmRYZk1lUWZHZldhZ2NMY1JlV2U4YlJoRWQyaDlhSGNjZ3hoTmNPZFFnaGNWaEllVWJFY2NiUWJaaG5hSmdXZUZiV2dwZ3llVWdYZmRkWGVDZFJjZ2h2Yk1lMWNsaFZlQmNGZjBoeWZOZ1dia2QxZlZnWGNCY2FhRGJoZk5lZWZIY1JjTWRtZkNlRGhVYW5iQ2RBaHNiZmVCYXhmMGJiZmJnMGhWYzJnYmhGZklhTGhiaGphZGU5ZEdmVGRZZ1VlUWEwYmxhdWJjYm1lQmY4ZlNoRmJOYUFjVmhsZDljNGVTZzNnZGE2Y2FiVmJkYVpiRWNCZWxob2JDYjBjVmh2Z0VkUmFOZXZkRWczZjFkTGVDZURkb2ZkYUNhMWY0YktlUmZTY29jbWhIZDBkVWFtZUtoMWZraDdmWGNrZE1lWWZPYXllNWhDYVZiR2g0ZEZmZGQyYjlkdmZQZFFoQWJqaERnZ2Q1Y05oVWNRY3hjYWJKZDJjSmVoY1NlVWExZ3FoU2V3ZjllU2NFYUdnUmFNZmRmbmFaZ1NmUWVraGNjOWdJZ2thY2VaZ1Zma2dOZlJjU2dIZUpjd2JjaEVjaGJEZlNoVmRwZTFjZWNFZHRhM2dlZm1kbGJYYlVhVWVJYlphZGJRZHNoUmNZY1ZiSmdmZklkQWRrYTJhR2cwZDVlbWdSZ2diQWJaYUFiVWZRYlVjT2J4Y0ZnZGNQaG5kcGhDaFpiRmQ1ZERiR2hrYU5maGhGZmhiaGhtYkZjR2JaZm1oWWZYZ0JoVmdiYzFmcGRIZ0hkVWVsaGJoQ2RqaHNkNWJjZGpjRmhFZ1pkQWNaZmFkSGFrZFFhdGFIZkRob2V2ZldhZ2NNZ2NoZGRGYndkU2FTYnhmaGZEZldlV2FKYXljY2VIZEJnSWdRZDBkbGFhZ2RnWGZBZ1plZGQyZmRocGFBZDFhZGJUZVZjU2RkYkZlQWVHZmNnWWJIYlRod2RQYU9obGNVZVRjR2NsaHdiUGRHZkJkTWFZZ2RlR2d0Z2ZiSGNHZVpnWWZVYlhoZGVYYlNhaGVaZnBnWWNSZVloWWdaYmhnUmNtaFpjbWRFaGtmV2Z6aGNlVmZGY1JiVmhQYVhlRmh3ZDVnUGFqZFloM2VCaERmb2JIZ1ZhbGNwZUZmYmRVYUJjY2VkY2xjSmJDZkZoWGJoaDJoRWNrZnNiWWRRZTFibGZpY2NibmJCaDRlR2JrZk5hVWZXY2ljRmEyZUNhRGFzZDFlSmF4Z0plUmFHZVJjY2Y3YlFnd2N3YnBmUmJXZ0VhbWFBZERodGFIZFRkM2FzY0hhUWZWZWxiTGFPZW1kWmN5YlZoaGdWZHFlY2NsZEZnM2FWZTBlb2ZXZGFoV2hFYldnVGJHYmhmTWFLZVRmUmJwY0lkbGN4YmpmY2hFY2NmZGZIYlZiVmZTYmRmR2d0ZTZnWWEwYTFmcWZTZHdhOWFTZlJlQ2h3ZEZmSmhYZmdnYmhEYkZmd2RzZGZha2RZZ0RlVWVSZUJhWGJNZ1RlY2IxY05kRWRGZlBjWWUxY3BlMWRlZUVkdGUzYWVnbWhsY1hmV2JSYkFnWmFhZ0FidGdGYU9lemhzYlRmYmMwYmRjemZFZDBmZGNvZkZlVWRoYlFiUmR4aEJkdmJhYlhod2VWZWFobmRKY1JhZGMxZGRnS2RGZG1mbGFoZFNkeGZGZXFoUGVtY1pibWNZZ1hnQmVWaGJkMWNwYUhiSGJSZTFlZGhCaG5hb2V1ZElhamVNY0NkT2RCZzlkY2ZVZ2djMWJrYkFhM2E5YXRiZWVFZUliVmRlaEhiWWZTaFNjMGhWZE5iR2hpaE1nK2hQZEhmZ2FhZVRoMGJrZlRkZmdXZGhkQ2ZlYVJkZ2E4Z0VhUmQ5ZlZnU2gyaEVnQ2ZYZmtmVWVSaEVkMmc5YUhmTGNoZzljdGNhY0JkVWgxZFdlVmh3YzZiT2gzY3RnTmVQZTBmQWIrZEZiQ2ROY1hjQWdsaGthNmVOZVZoaGNaZ0thMWFGZ21mZWgyZEZoM2hVaG5hUmh3ZERmbGZzZ2RlWGRRZ1lodGJPZ3pkOGdzYUNkMmdvY2NoUmVoZXhhVWVLZXhhdGQyZ2FnMGI5aGZhRmhYaDhjamhYZUFjOWJkYkJnUmNBYnNiTmZ6Z1JkM2ZTaEJiOGhWZVdoaWFzZzBnQmdEZ1FkN2VQZlJiNGhXaFhnaGFjZWdiV2JRYkFhcGdIZDFkb2VoZUFkemNaZUxnS2FDYjRjZGdTY2hhSWVMaFhoeWFSY29hVmhCZnhlamRjaGdicGJkYVZoMGJwaGVlSmZqYUpjQ2RWZWlhZGNaZkloMmdaZzhnY2RGZmNoNGhGaFJiVmZXZVdmQWNkZVFiYmIwZkVjbmNZZXdmZ2NtaEdoRWNwaFNmU2UwYjViTWhkaGlhSWhBY0dheGZVZ2plWGZCaEpkTGFHZ0ViTWVSYkxkU2ZFZmtnUGNnYWtkT2VEY0ZocGhvaGVhRWdNZDVhUGZ6ZDVmWGhMaEdoSmUxaFlnRWVjZUtnTGNGYkJlSGVKZWdlZ2Q5YkhoUWc4ZTZmVWJBZTVoWmhUZ2hhNGJ1aFBiUWJWY0JiSmZEYU1mY2FNZ2xjY2hXZFNobWdsYmphVmRGY2toaWdGZG5mMWVNY1ljWGRBYkllYmR4ZGtmR2VTZFZmNGRkYVVibmV3Y3ViY2gyZk1hV2hRZUVjc2NQY1VlaGJBYnNoQWh5YlVmaWZIZkFjTmVZY1BlWGdZZlBnU2V4Y29mVWRGYWpjQWc1Zk5kU2JKZUtiV2JHYU5jYWJkZFNoVmFoaEtmbGNCY0RmR2R4Z3hjRWhHY1RoeGFmZFJhWGVJZlJjRWVtYzRhQWZQYzFid2VGYktkVmhrYThiR2RBZDVoRGRhZURmY2VBY1ZkQ2VZZEphSWdpaE1iRmJBZDFmZ2V1Z2JmMWRCYktkS2hWYmtnRmdLZVNkVWMxYkpoU2dBaFRmQ2dVZ2tlVmhUYVVjTmd0ZmZjbmFNZWVmVGVYZFZlTGFTYkJmNWJmY0pnZ2UwYjZhQWNoZ29hTGVSZm5lWWNaaFlnQ2hsZW9mTWVUYllmZGdHY1JjVWZKZlNiQmg4ZFZnV2VqaDBnM2hHY0NmTWgwY0tiQmNvYWNhRWJBaE5hb2NBaHdkSWFqYlhmbGhFaHVmQ2F3Z2RjYmdEZGpic2NiZkpheWJJYmxoWWJCaFFiZGFLYlhiNGZQZ0NoMWVFaHJjQ2cwYXBhZWZKYmpnSmVDY1ZjaWhkZVpnSWYyZzllaGZlYTFlVmF0Y1dka2FVZ0dmTmd4ZVljZGRPZGpiZ2V1Z1lhd2FzZXNoU2Z4YkpjU2JWY3ljZ2FEZk5nRGJjZ2VjTmJsYzBmeGNKZVJod2VFZlNjQWhZY1hhSmJ5ZkJiK2JEZ3dib2ZXZkRleGV3aDliYWcxZmxjL2FhYW1kQmVaaERmRWJCY2RjS2hWYThjQWFaaDBhVmZIY1pja2RrZjNiV2hnZUFhdGhSZWhkeGhZaFRhaGc0YXllUGFTZlZoQmJPY0Ric2NmZU1oRmg5Y2JjQWZHYUJjdmZSZ2xna2NpYVpiemFJZm5iTWd5aFJiZGZmaGtmeGNMYUhiUWMxZWNmWGdDY0Fja2dGYWljd2FhZkxieGVsY3NhRWIwZk1oaGhSZUhoOWh0YmVoQWZWZlpiTmZ6YlJhVGRCZzJod2dMY0VmRGFGZzhjUGd5ZEFiTmhEZ1Fkd2dJaGRmV2ZWYUxmTWNEYVljbWNGZFJhaGFjYmJhU2hCZENlRmZtYUZndWdYYkRlOGVDZlBnVmJZaFZmY2V6ZDhiTWJGZFFidGhWY01namZkY1dlVWRpZ1lkOWZFYnpmWWdiZFBjbGU0YmdjTWZoZmhiZGJNZkZkVWVxYUhiUmhJY2tnQmJ5Y1loVWdBaEJiTmFiaEJjeGYwZTViQ2JEZFVhbmFDZUJlb2NFZFJlaGR4YUVnYmVGaFJobmRiZDBiZGZMZmFmR2hOYmNnR2VnYjFjTmJEZFJjb2UyZU9jemQ4YytkUWdEaHhmWmFBYm1oZGh2ZldiRGhRYjdiZmZWaHNkbWNBYUViRmM3ZEVhbGRGaCtiVWcxY1phbWVIYkNkVmJTZ0ZoV2RoZ3FkV2VBY2hiVmZWZWlkUmNtZlRkbGVCZzNmRGJVZkVjdmJSYWxla2ZFaGNlV2QxZHBhQ2dEZjRkQWZKZ0NnTWdsZU5nRWVCaHliSmFWY2RlRmNEYzBhSmdCZE5heWRwaHVoYWgwZFJkeGNIZ0VjY2JiZ1hmQ2NGYUVlZGEzZGNlcGdQYnhnd2hqaElia2ZBaFNlUWR4Y1VhWWNNZEhjSWFQY1lhQmNCZ1dmV2IwZTVka2RiZGxnaGVxY0tmaWdnY0ZiQ2NsZVZid2FKY2xlOWJOZEViQWRGZkxlZmRRZEVmeGhCZTFiOGd0Z0hmVmFnZkloVmhnZk5jMGVlZDFhOGdhaGViaWZwYkFjZmhWaDhnYWRWYXpnc2V5YlVmM2hFZm9kUWdHZDRnWmJjaFNiaGNIY0tjUmVoZ1RjQmRWZWhkZGVRYWlneGM2Y2FkQ2dCaEVhWWQwZlFhZmNDZWdmSmR0aFJieWhZZjNiQWNCYkZoUWFFY1RiaGRHZlFiMmRkZFRhQWVYaEFlMGJNYW1mUmNRZUJka2JGZUtjTGJXZ2xoWWdZYm5kTmZnYldoRWJsZEljQ2VtY0lkRGhTYURkOWNRYlFoVGV3ZUNoR2dsZzBnVGNZZkdncGhZaENjRmdWZldkSmZHaFphT2dVaEdnSmFpYkNmV2FaYkVhWGZoZTllZ2hiZmdlWmFBZmNnaGMxZnRiTmVpYUFhaWRCZGlhb2F6YkNoVWNrZFZkS2drZEloc2JlZVRnd2doZ1dnWGJJaE9nQmcwYkpkSWFkZlZlNGgwZmZnMWh0ZE5mQmNTZUJiamFHYUVnTmhJZkFlZ2hzZHhlTmF4ZGtlK2VIY0Vhc2YyYVNoaWUxZ3FkRGJUZFZmdWdjYlJhSmRSaEFkRWRGZDVnR2dGYkpkbWZHZEJneGIvZEhkMmFVYWFhVGZHZlZmRmJDYlFhSWhVaFZoUWM4ZDhnQWZoYjBnVmZZYmdmbGNsZUVmUWNnaENoY2FTY1FoZWhDZ0RhNGVGZ2RmQ2JOZW9hZWdWY3BnL2FBYmxlQWhXYUVlQWJVZlRoSmhqZmdkL2JDZGdhTWcrYVFlM2ZCYkNnU2RIZlliS2VOYkdkSmRLY0JieGUxZm9iTGNnY05kWWdDZTBjcGhRaGJiV2ZJY29mYWRFY01hVGNDYUFoZ2VtZ1BlU2RJYzVjTGNtZUVkb2JTZ1ViZ2NMYkxla2VsYVJjZGIxZFFmYmRmZXhkOWVpZEFoUWJOY2hoSGhFY2RkQWNIZXdjbGVzZGVhbGF0YUZjS2d5YUFmQ2JNZWplNGZFaFFibWhFYWVjQmhrZ0JiMGFVZGlkUmd5YWVmVGdWY2RkZmN3aEpkV2hEYjFjdGNjZ1dnM2h0ZzdlSWJpZ0poRWFZaFJodGFPaEFoRWFNZ2hiSmVUZGdiaWVXZGpnMGVGaElkR2dSZFVkQ2VRaHhoYmVIZEdlcGFpYktoR2FGYmJiVWVrY0JlVGZlYW1lZ2NUZ05jV2RFYmdnRWRWaEZodmZDYlRkQWdlYVZoM2VzYUFmQmZYZHhjYWRiYmdoNGU0YWVkRWcxaGJoU2hWZE1mQmVKZURkZGJmYlZjemZnZjNjRWZEZ3hlTWREYjFob2E2ZEplQmJaY25iZGNrYnhieWNKZENiUWMwYkVjWGJvZmhlUWZFYjFiSWRCaGhicGZ6ZEZmbmhJaGNhWGFUY0pkZmRUY1JiZGFVYkloRmVrYU5jY2NRZkVhS2FYZURjNGFpZkZoVGZZZVFlU2ZsYUJkNWNMY3piTWR4ZEhhQWVBZ0JnVWNnY3Blb2ZFZTJnUmF0Z2VjeGhNZVlmVWd4ZkFiemJkYkZnVWEzZ0JnVmdFZ3FiQWZ6Y2NjR2VQZkdoOWJGaEhhUWVNZFBmRmh4ZnRnNmVLYlFoVWF5ZVplaGhNaHliRWZ3YTRiRGVFZW1iWmFGY1VhQ2M5aFNkTWRtYkVlY2NlZkZjeGRtY1FmUmNwaEFiUWZGZjBkdGRaZURmTmh2ZElhVmJ4aHpmUmR4ZThoS2dBYWllVWZJZ1lnV2hKZGJiU2Z3YzRnK2FJaDFkd2ZJZlRiQWFvZldoTGZIZEllb2VLZ0JkQWRSYkNiQWVrZnhoUGJnYVZja2NjZm1lQWdNZkJkRmJaYU1oSmFrZmdnUmJKZmxiNWRkY2JjemZoY2plU2MxY0lncWVCaEZiRmhZZFRha2NzZHdiTWZ3aFFhVmdGZ1dhSWNKY01hMGVVZU9jQWhIZGxmemhDZDJlTmNoY0JmbmhKYS9oZGhtZUZnTmhlZHloQWMxYWRjbWdRZW1jRmVuY05ibmVmYlhjQmJVYmZiRmJOYmlnSGVuY3NkbGVDY2dkOWN4aFhia2FVZEhjYmYyaFZmYmVNZVVnb2JraEtiU2h4ZzFnZmJIYWNlZ2dCZWdnVWFXZk9jZ2RRZFRjWmZXZW9lZWZHYkFmdGdjY1hoV2hrYk1iU2JXYmdhQ2RBYW5nY2drZE1lRmVrZUNkR2IyZ1ZnUGNYZ0VnQWJDZWNoMmhKZEFmQmJRYTBja2dJZFJoVWVFY0RjUmRGZ2xmWmFnYWNiS2dkaFFkSWZsYkVieGdJYWdkSWZnYk5nZGJTZHhhb2FKaFFkVWJSYXRlZmV4YzhlcmFIZ2hkZ2ZOZGFkMWRVY2NjWWcxaDVobWJaY0VicGdhZUJiMmN3YWNmV2h6YXRjV2FGY0FodGFsY2ZnbmdkY2lkWGRsYU1lemhFYkFlRWF1aE1oUmdWZjlnWmdWZ0FmVmRYZjFnNWh2YkJhMGZKZjRiQ2dBZ1poN2VYZ21hSWZIYkNmQmRCZTljTGREZU1jZWFGZDJicGQxYlJid2JZZVpoR2JoZVViVmVQZWljWWNSZ0ZlSGNwZHBkQ2VEYTRlQmZKYkhkZGE0Z2JjUmJNZjZiRmZBZlJkSmZWY0Jlb2ZjYWZnR2VJZmhnTWZRYWdmK2FIZmxkMGRjZ0VlQmZ0YWNjTGhqY0pjQWJCZGdkTmVvYVpoQWNrZFdkQWd4YkVlY2ROZWlkY2VpZ1Bja2RnZjhkV2ZRaEpkZ2VPZGxhcGh1YmNobWVCaE1kQmhGYlplTWhKY2thZ2RSZEpnbGE1ZWRhYmJ6ZGhnamVTZDFnWmQ3Y0JoMWRCZ1llT2hBY0FjK2FZYlVmVWhDZmNnMmdjaFNkZWF5YmhmYWRUaG5nd2JsYkFiVmUxaDNjQmJHZDhjOWFOYnpmRWZIZGJieWFWYVhnUmhRZGdoWGFRZTJkMGV2ZFBoSGU0aHlhZWJoaE1hYWdFY0FoRmE5ZVJjSGc5ZXRiQWhBZ2RkQmJMZVNjUmhjZVNjMmhkZ1RnQWRYZU5maGhZZW1iaGFWYUJjUmZ3ZFViTmVpZ3dmQ2FPZ0RkUmNoYUtmRWJsY0liQ2dIZ3NoWmRYZ1hjY2JCZ0hjeGZCaFhlS2R3YlpjV2hmZkZoRWNPY1JoRWM1ZkxmR2RXaElnT2FCZUhhbGFnYlNkV2E5Y0hnVmgyZ2xmNWhPZVFnY2RMaGRiQWV4aCtjZGZtY3hhZ2dEZlhkNWdJYkJnUWZaYUxiRmFBYkJiMGFGYUdob2U3Z1hhM2NJZk5kR2hVYWNkRWRlYlRhTmRtZUxja2ZjZEFmQmNHZEVheWhWZ0RoQmJuZVVnd2RGYnpoWWhXZ0pib2FVYUZhTWcwY1FjU2djYzliSGN5Ykllb2ZKZTFmY2htY0FjRWRGZzZmRWh3Y05jNWhCZEFmZGcwZUdmbmQ5ZHNoVmZ6YkFiRWFXYTBiSmFmZEdhQmVsZ2lmRGZnYlpkNWJaaFVhaGhpYUZmRWZaaHBkZWVUZmtnRGRYaEhlRmVSY2RoM2NaZG9lYWd3YWdoM2VBZWhjOWJQZVhoQWZZYVdnTWVpY1ZicGZhZjBkUmJ4YllmVWNFZVhkUmIyZlFkdGFKZUNnUWdUYUdieGExYnVoWWhoZXRiRmRVZ2dod2FRZkxkSGRvZzJlTmNrZkZlWWRTZVZhcGY2YmRmMGdzZkRmTWNpYUFiRWVXYlVlZGZRZkpkRWNkYkZoTGNWaFFlVGVPZHdnOGUyZ0VoeGVFZnBjV2NSZTBiVmdSZTBhSWZqY0plZ2FOYkhkSmNEaGNmVmhkZ3hmVWNUZ0ZjaWZ3ZjNmVmMxY1JkTWRQZmdmPWc9AHVyVEtaQ21Kay9yMERsVlZyYjVYVjJrOGN5QlJQUGhjaXpVWGtXWkl3eTA5SCtlTzEzT2dTM2dINWhwZzBGUnY1SlJxV3dqNklBNjhGNEZGQVB1T3pnPT0AMDEyMzQ1Njc4OQBDLlVURi04AEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8ALgAobnVsbCkAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAbGliYysrYWJpOiAAAAAAAAAAnLMEAGUAAAAyNlByb3BhZ2F0ZWRQb3NpdGlvblByb3BlcnR5AAAAAGz9BAB8swQA2LYEAFAyNlByb3BhZ2F0ZWRQb3NpdGlvblByb3BlcnR5AAAANPwEAKizBAAAAAAAnLMEAFBLMjZQcm9wYWdhdGVkUG9zaXRpb25Qcm9wZXJ0eQAANPwEANizBAABAAAAnLMEAMizBAAw+wQAyLMEAKS4BABpaWlpAGRpaQB2aWlkAFAxNkVudGl0eUNvbGxlY3Rpb24AAAA0/AQAJrQEAAAAAADotQQAUEsxNkVudGl0eUNvbGxlY3Rpb24AAAAANPwEAEy0BAABAAAA6LUEADy0BABgtwQAAAAAANi2BABmAAAAMTZQb3NpdGlvblByb3BlcnR5AFBLMTZQb3NpdGlvblByb3BlcnR5ADT8BACbtAQAAQAAANi2BADgtgQAZPsEAOC2BACU+wQANEJhc2UAAAAs/QQA0LQEAFA0QmFzZQAANPwEAOC0BAAAAAAA2LQEAFBLNEJhc2UANPwEAPi0BAABAAAA2LQEAHYAAADotAQAAAAAANi0BABnAAAAaAAAAGkAAABgtwQAALUEADhTdWJjbGFzcwAAAGz9BAA0tQQA2LQEAFA4U3ViY2xhc3MAADT8BABMtQQAAAAAAEC1BABQSzhTdWJjbGFzcwA0/AQAaLUEAAEAAABAtQQAWLUEADD7BAAAAAAAQLUEAGcAAABqAAAAawAAAGC3BAB0tQQA0PoEANi0BAAAAAAA8LUEAGwAAABtAAAAaQAxNlBvc2l0aW9uUmVnaXN0cnkAMTZFbnRpdHlDb2xsZWN0aW9uACz9BADVtQQAbP0EAMK1BADotQQAAAAAAOi1BABuAAAAbwAAAFAxNlBvc2l0aW9uUmVnaXN0cnkANPwEAAy2BAAAAAAA8LUEAFBLMTZQb3NpdGlvblJlZ2lzdHJ5AAAAADT8BAAwtgQAAQAAAPC1BABpaQB2aQAAACC2BABgtwQAaWlpAGT7BABItgQA0PoEACC2BABQ+wQAdmlpaQAAAADQ+gQAILYEAHZpaQBk+wQAILYEAJT7BABpaWlkAEGw7RILgwhk+wQAILYEAOC2BACU+wQA6PoEAFAxNlBvc2l0aW9uUHJvcGVydHkALP0EAIi0BAA0/AQAxLYEAAAAAADYtgQAaWlpaWRpAABk+wQAILYEAND6BAAw+wQAMPsEAJT7BAAw+wQAMPsEAHZpaWlkaWkATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAACz9BAAgtwQATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUAACz9BABotwQATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAACz9BACwtwQATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAAAs/QQA+LcEAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAALP0EAES4BABOMTBlbXNjcmlwdGVuM3ZhbEUAACz9BACQuAQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAAAs/QQArLgEAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAALP0EANS4BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAACz9BAD8uAQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAAAs/QQAJLkEAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAALP0EAEy5BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAACz9BAB0uQQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAAAs/QQAnLkEAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAALP0EAMS5BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAACz9BADsuQQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAAAs/QQAFLoEAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAALP0EADy6BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAACz9BABkugQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAAAs/QQAjLoEAEHA9RILYE+7YQVnrN0/GC1EVPsh6T+b9oHSC3PvPxgtRFT7Ifk/4mUvIn8rejwHXBQzJqaBPL3L8HqIB3A8B1wUMyamkTwYLURU+yHpPxgtRFT7Iem/0iEzf3zZAkDSITN/fNkCwABBr/YSC+gVgBgtRFT7IQlAGC1EVPshCcADAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAGcRHAM1nwwAJ6NwAWYMqAIt2xACmHJYARK/dABlX0QClPgUABQf/ADN+PwDCMugAmE/eALt9MgAmPcMAHmvvAJ/4XgA1HzoAf/LKAPGHHQB8kCEAaiR8ANVu+gAwLXcAFTtDALUUxgDDGZ0ArcTCACxNQQAMAF0Ahn1GAONxLQCbxpoAM2IAALTSfAC0p5cAN1XVANc+9gCjEBgATXb8AGSdKgBw16sAY3z4AHqwVwAXFecAwElWADvW2QCnhDgAJCPLANaKdwBaVCMAAB+5APEKGwAZzt8AnzH/AGYeagCZV2EArPtHAH5/2AAiZbcAMuiJAOa/YADvxM0AbDYJAF0/1AAW3tcAWDveAN6bkgDSIigAKIboAOJYTQDGyjIACOMWAOB9ywAXwFAA8x2nABjgWwAuEzQAgxJiAINIAQD1jlsArbB/AB7p8gBISkMAEGfTAKrd2ACuX0IAamHOAAoopADTmbQABqbyAFx3fwCjwoMAYTyIAIpzeACvjFoAb9e9AC2mYwD0v8sAjYHvACbBZwBVykUAytk2ACio0gDCYY0AEsl3AAQmFAASRpsAxFnEAMjFRABNspEAABfzANRDrQApSeUA/dUQAAC+/AAelMwAcM7uABM+9QDs8YAAs+fDAMf4KACTBZQAwXE+AC4JswALRfMAiBKcAKsgewAutZ8AR5LCAHsyLwAMVW0AcqeQAGvnHwAxy5YAeRZKAEF54gD034kA6JSXAOLmhACZMZcAiO1rAF9fNgC7/Q4ASJq0AGekbABxckIAjV0yAJ8VuAC85QkAjTElAPd0OQAwBRwADQwBAEsIaAAs7lgAR6qQAHTnAgC91iQA932mAG5IcgCfFu8AjpSmALSR9gDRU1EAzwryACCYMwD1S34AsmNoAN0+XwBAXQMAhYl/AFVSKQA3ZMAAbdgQADJIMgBbTHUATnHUAEVUbgALCcEAKvVpABRm1QAnB50AXQRQALQ72wDqdsUAh/kXAElrfQAdJ7oAlmkpAMbMrACtFFQAkOJqAIjZiQAsclAABKS+AHcHlADzMHAAAPwnAOpxqABmwkkAZOA9AJfdgwCjP5cAQ5T9AA2GjAAxQd4AkjmdAN1wjAAXt+cACN87ABU3KwBcgKAAWoCTABARkgAP6NgAbICvANv/SwA4kA8AWRh2AGKlFQBhy7sAx4m5ABBAvQDS8gQASXUnAOu29gDbIrsAChSqAIkmLwBkg3YACTszAA6UGgBROqoAHaPCAK/trgBcJhIAbcJNAC16nADAVpcAAz+DAAnw9gArQIwAbTGZADm0BwAMIBUA2MNbAPWSxADGrUsATsqlAKc3zQDmqTYAq5KUAN1CaAAZY94AdozvAGiLUgD82zcArqGrAN8VMQAArqEADPvaAGRNZgDtBbcAKWUwAFdWvwBH/zoAavm5AHW+8wAok98Aq4AwAGaM9gAEyxUA+iIGANnkHQA9s6QAVxuPADbNCQBOQukAE76kADMjtQDwqhoAT2WoANLBpQALPw8AW3jNACP5dgB7iwQAiRdyAMamUwBvbuIA7+sAAJtKWADE2rcAqma6AHbPzwDRAh0AsfEtAIyZwQDDrXcAhkjaAPddoADGgPQArPAvAN3smgA/XLwA0N5tAJDHHwAq27YAoyU6AACvmgCtU5MAtlcEACkttABLgH4A2genAHaqDgB7WaEAFhIqANy3LQD65f0Aidv+AIm+/QDkdmwABqn8AD6AcACFbhUA/Yf/ACg+BwBhZzMAKhiGAE296gCz568Aj21uAJVnOQAxv1sAhNdIADDfFgDHLUMAJWE1AMlwzgAwy7gAv2z9AKQAogAFbOQAWt2gACFvRwBiEtIAuVyEAHBhSQBrVuAAmVIBAFBVNwAe1bcAM/HEABNuXwBdMOQAhS6pAB2ywwChMjYACLekAOqx1AAW9yEAj2nkACf/dwAMA4AAjUAtAE/NoAAgpZkAs6LTAC9dCgC0+UIAEdrLAH2+0ACb28EAqxe9AMqigQAIalwALlUXACcAVQB/FPAA4QeGABQLZACWQY0Ah77eANr9KgBrJbYAe4k0AAXz/gC5v54AaGpPAEoqqABPxFoALfi8ANdamAD0x5UADU2NACA6pgCkV18AFD+xAIA4lQDMIAEAcd2GAMnetgC/YPUATWURAAEHawCMsKwAssDQAFFVSAAe+w4AlXLDAKMGOwDAQDUABtx7AOBFzABOKfoA1srIAOjzQQB8ZN4Am2TYANm+MQCkl8MAd1jUAGnjxQDw2hMAujo8AEYYRgBVdV8A0r31AG6SxgCsLl0ADkTtABw+QgBhxIcAKf3pAOfW8wAifMoAb5E1AAjgxQD/140AbmriALD9xgCTCMEAfF10AGutsgDNbp0APnJ7AMYRagD3z6kAKXPfALXJugC3AFEA4rINAHS6JADlfWAAdNiKAA0VLACBGAwAfmaUAAEpFgCfenYA/f2+AFZF7wDZfjYA7NkTAIu6uQDEl/wAMagnAPFuwwCUxTYA2KhWALSotQDPzA4AEoktAG9XNAAsVokAmc7jANYguQBrXqoAPiqcABFfzAD9C0oA4fT7AI47bQDihiwA6dSEAPy0qQDv7tEALjXJAC85YQA4IUQAG9nIAIH8CgD7SmoALxzYAFO0hABOmYwAVCLMACpV3ADAxtYACxmWABpwuABplWQAJlpgAD9S7gB/EQ8A9LURAPzL9QA0vC0ANLzuAOhdzADdXmAAZ46bAJIz7wDJF7gAYVibAOFXvABRg8YA2D4QAN1xSAAtHN0ArxihACEsRgBZ89cA2XqYAJ5UwABPhvoAVgb8AOV5rgCJIjYAOK0iAGeT3ABV6KoAgiY4AMrnmwBRDaQAmTOxAKnXDgBpBUgAZbLwAH+IpwCITJcA+dE2ACGSswB7gkoAmM8hAECf3ADcR1UA4XQ6AGfrQgD+nd8AXtRfAHtnpAC6rHoAVfaiACuIIwBBulUAWW4IACEqhgA5R4MAiePmAOWe1ABJ+0AA/1bpABwPygDFWYoAlPorANPBxQAPxc8A21quAEfFhgCFQ2IAIYY7ACx5lAAQYYcAKkx7AIAsGgBDvxIAiCaQAHg8iQCoxOQA5dt7AMQ6wgAm9OoA92eKAA2SvwBloysAPZOxAL18CwCkUdwAJ91jAGnh3QCalBkAqCmVAGjOKAAJ7bQARJ8gAE6YygBwgmMAfnwjAA+5MgCn9Y4AFFbnACHxCAC1nSoAb35NAKUZUQC1+asAgt/WAJbdYQAWNgIAxDqfAIOioQBy7W0AOY16AIK4qQBrMlwARidbAAA07QDSAHcA/PRVAAFZTQDgcYAAQaOMEwt+QPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNRkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEGxjRMLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBB640TCwEMAEH3jRMLFRMAAAAAEwAAAAAJDAAAAAAADAAADABBpY4TCwEQAEGxjhMLFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB344TCwESAEHrjhMLHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBoo8TCw4aAAAAGhoaAAAAAAAACQBB048TCwEUAEHfjxMLFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBjZATCwEWAEGZkBML/wIVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUb/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAANF0ngBXnb0qgHBSD///PicKAAAAZAAAAOgDAAAQJwAAoIYBAEBCDwCAlpgAAOH1BRgAAAA1AAAAcQAAAGv////O+///kr///wBBvJMTCwFSAEHkkxMLCP//////////AEGslBML+AmEzAQAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAAAAAAAADM4EAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAACLAAAAjAAAAI0AAACOAAAAjwAAAJAAAACRAAAATlN0M19fMjliYXNpY19pb3NJY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yOWJhc2ljX2lvc0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTViYXNpY19zdHJlYW1idWZJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfaXN0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yMTNiYXNpY19vc3RyZWFtSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzI4aW9zX2Jhc2VFAAAAAACMzAQAdgAAAJIAAACTAAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAlAAAAJUAAACWAAAAggAAAIMAAABOU3QzX18yMTBfX3N0ZGluYnVmSWNFRQAs/QQA0soEAGz9BABszAQAhMwEAAgAAAAAAAAAwMwEAJcAAACYAAAA+P////j////AzAQAmQAAAJoAAADY+wQAA8sEAAAAAAABAAAA6MwEAAP0//8AAAAA6MwEAJsAAACcAAAAbP0EAKjKBAAEzQQAAAAAAATNBACdAAAAngAAACz9BAAazAQAAAAAAGjNBAB2AAAAnwAAAKAAAAB5AAAAegAAAHsAAAChAAAAfQAAAH4AAAB/AAAAgAAAAIEAAACiAAAAowAAAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSWNFRQAAAABs/QQATM0EAITMBAAEAAAAAAAAAJzNBACkAAAApQAAAPz////8////nM0EAKYAAACnAAAA2PsEADLLBAAAAAAAAQAAAOjMBAAD9P//AAAAABTOBACEAAAAqAAAAKkAAACHAAAAiAAAAIkAAACKAAAAiwAAAIwAAACqAAAAqwAAAKwAAACQAAAAkQAAAE5TdDNfXzIxMF9fc3RkaW5idWZJd0VFACz9BACLywQAbP0EAPTNBAAMzgQACAAAAAAAAABIzgQArQAAAK4AAAD4////+P///0jOBACvAAAAsAAAANj7BAC8ywQAAAAAAAEAAABwzgQAA/T//wAAAABwzgQAsQAAALIAAABs/QQAYcsEAATNBAAAAAAA2M4EAIQAAACzAAAAtAAAAIcAAACIAAAAiQAAALUAAACLAAAAjAAAAI0AAACOAAAAjwAAALYAAAC3AAAATlN0M19fMjExX19zdGRvdXRidWZJd0VFAAAAAGz9BAC8zgQADM4EAAQAAAAAAAAADM8EALgAAAC5AAAA/P////z///8MzwQAugAAALsAAADY+wQA68sEAAAAAAABAAAAcM4EAAP0//8AQbCeEwsU3hIElQAAAAD///////////////8AQdCeEwtXTENfQ1RZUEUAAAAATENfTlVNRVJJQwAATENfVElNRQAAAAAATENfQ09MTEFURQAATENfTU9ORVRBUlkATENfTUVTU0FHRVMAMM8EABQAAABDLlVURi04AEHEoxML+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AEHErxML+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AEHAtxMLgwICAADAAwAAwAQAAMAFAADABgAAwAcAAMAIAADACQAAwAoAAMALAADADAAAwA0AAMAOAADADwAAwBAAAMARAADAEgAAwBMAAMAUAADAFQAAwBYAAMAXAADAGAAAwBkAAMAaAADAGwAAwBwAAMAdAADAHgAAwB8AAMAAAACzAQAAwwIAAMMDAADDBAAAwwUAAMMGAADDBwAAwwgAAMMJAADDCgAAwwsAAMMMAADDDQAA0w4AAMMPAADDAAAMuwEADMMCAAzDAwAMwwQADNsAAAAAMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRnhYKy1wUGlJbk4AbAAlSTolTTolUyAlcCVIOiVNAEHQuRMLgQElAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAACUAAABZAAAALQAAACUAAABtAAAALQAAACUAAABkAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AQeC6EwtlJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAA1OYEALwAAAC9AAAAvgAAAAAAAAA05wQAvwAAAMAAAAC+AAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAAxwAAAMgAQdC7Ewv9AwQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAUCAAAFAAAABQAAAAUAAAAFAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAwIAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAKgEAACoBAAAqAQAAKgEAACoBAAAqAQAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAAAyAQAAMgEAADIBAAAyAQAAMgEAADIBAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAAIIAAACCAAAAggAAAIIAAAAEAEHUwxML7QKc5gQAyQAAAMoAAAC+AAAAywAAAMwAAADNAAAAzgAAAM8AAADQAAAA0QAAAAAAAABs5wQA0gAAANMAAAC+AAAA1AAAANUAAADWAAAA1wAAANgAAAAAAAAAkOcEANkAAADaAAAAvgAAANsAAADcAAAA3QAAAN4AAADfAAAAdAAAAHIAAAB1AAAAZQAAAAAAAABmAAAAYQAAAGwAAABzAAAAZQAAAAAAAAAlAAAAbQAAAC8AAAAlAAAAZAAAAC8AAAAlAAAAeQAAAAAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAAAAAAAAlAAAAYQAAACAAAAAlAAAAYgAAACAAAAAlAAAAZAAAACAAAAAlAAAASAAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAWQAAAAAAAAAlAAAASQAAADoAAAAlAAAATQAAADoAAAAlAAAAUwAAACAAAAAlAAAAcABBzMYTC/8KdOMEAOAAAADhAAAAvgAAAE5TdDNfXzI2bG9jYWxlNWZhY2V0RQAAAGz9BABc4wQAMPkEAAAAAAD04wQA4AAAAOIAAAC+AAAA4wAAAOQAAADlAAAA5gAAAOcAAADoAAAA6QAAAOoAAADrAAAA7AAAAO0AAADuAAAATlN0M19fMjVjdHlwZUl3RUUATlN0M19fMjEwY3R5cGVfYmFzZUUAACz9BADW4wQA2PsEAMTjBAAAAAAAAgAAAHTjBAACAAAA7OMEAAIAAAAAAAAAiOQEAOAAAADvAAAAvgAAAPAAAADxAAAA8gAAAPMAAAD0AAAA9QAAAPYAAABOU3QzX18yN2NvZGVjdnRJY2MxMV9fbWJzdGF0ZV90RUUATlN0M19fMjEyY29kZWN2dF9iYXNlRQAAAAAs/QQAZuQEANj7BABE5AQAAAAAAAIAAAB04wQAAgAAAIDkBAACAAAAAAAAAPzkBADgAAAA9wAAAL4AAAD4AAAA+QAAAPoAAAD7AAAA/AAAAP0AAAD+AAAATlN0M19fMjdjb2RlY3Z0SURzYzExX19tYnN0YXRlX3RFRQAA2PsEANjkBAAAAAAAAgAAAHTjBAACAAAAgOQEAAIAAAAAAAAAcOUEAOAAAAD/AAAAvgAAAAABAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAABOU3QzX18yN2NvZGVjdnRJRHNEdTExX19tYnN0YXRlX3RFRQDY+wQATOUEAAAAAAACAAAAdOMEAAIAAACA5AQAAgAAAAAAAADk5QQA4AAAAAcBAAC+AAAACAEAAAkBAAAKAQAACwEAAAwBAAANAQAADgEAAE5TdDNfXzI3Y29kZWN2dElEaWMxMV9fbWJzdGF0ZV90RUUAANj7BADA5QQAAAAAAAIAAAB04wQAAgAAAIDkBAACAAAAAAAAAFjmBADgAAAADwEAAL4AAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAATlN0M19fMjdjb2RlY3Z0SURpRHUxMV9fbWJzdGF0ZV90RUUA2PsEADTmBAAAAAAAAgAAAHTjBAACAAAAgOQEAAIAAABOU3QzX18yN2NvZGVjdnRJd2MxMV9fbWJzdGF0ZV90RUUAAADY+wQAeOYEAAAAAAACAAAAdOMEAAIAAACA5AQAAgAAAE5TdDNfXzI2bG9jYWxlNV9faW1wRQAAAGz9BAC85gQAdOMEAE5TdDNfXzI3Y29sbGF0ZUljRUUAbP0EAODmBAB04wQATlN0M19fMjdjb2xsYXRlSXdFRQBs/QQAAOcEAHTjBABOU3QzX18yNWN0eXBlSWNFRQAAANj7BAAg5wQAAAAAAAIAAAB04wQAAgAAAOzjBAACAAAATlN0M19fMjhudW1wdW5jdEljRUUAAAAAbP0EAFTnBAB04wQATlN0M19fMjhudW1wdW5jdEl3RUUAAAAAbP0EAHjnBAB04wQAAAAAAPTmBAAXAQAAGAEAAL4AAAAZAQAAGgEAABsBAAAAAAAAFOcEABwBAAAdAQAAvgAAAB4BAAAfAQAAIAEAAAAAAACw6AQA4AAAACEBAAC+AAAAIgEAACMBAAAkAQAAJQEAACYBAAAnAQAAKAEAACkBAAAqAQAAKwEAACwBAABOU3QzX18yN251bV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5X19udW1fZ2V0SWNFRQBOU3QzX18yMTRfX251bV9nZXRfYmFzZUUAACz9BAB26AQA2PsEAGDoBAAAAAAAAQAAAJDoBAAAAAAA2PsEABzoBAAAAAAAAgAAAHTjBAACAAAAmOgEAEHU0RMLywGE6QQA4AAAAC0BAAC+AAAALgEAAC8BAAAwAQAAMQEAADIBAAAzAQAANAEAADUBAAA2AQAANwEAADgBAABOU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzI5X19udW1fZ2V0SXdFRQAAANj7BABU6QQAAAAAAAEAAACQ6AQAAAAAANj7BAAQ6QQAAAAAAAIAAAB04wQAAgAAAGzpBABBqNMTC98BbOoEAOAAAAA5AQAAvgAAADoBAAA7AQAAPAEAAD0BAAA+AQAAPwEAAEABAABBAQAATlN0M19fMjdudW1fcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEljRUUATlN0M19fMjE0X19udW1fcHV0X2Jhc2VFAAAs/QQAMuoEANj7BAAc6gQAAAAAAAEAAABM6gQAAAAAANj7BADY6QQAAAAAAAIAAAB04wQAAgAAAFTqBABBkNUTC78BNOsEAOAAAABCAQAAvgAAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEkBAABKAQAATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX3B1dEl3RUUAAADY+wQABOsEAAAAAAABAAAATOoEAAAAAADY+wQAwOoEAAAAAAACAAAAdOMEAAIAAAAc6wQAQdjWEwubCzTsBABLAQAATAEAAL4AAABNAQAATgEAAE8BAABQAQAAUQEAAFIBAABTAQAA+P///zTsBABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAATlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjl0aW1lX2Jhc2VFACz9BADt6wQATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJY0VFAAAALP0EAAjsBADY+wQAqOsEAAAAAAADAAAAdOMEAAIAAAAA7AQAAgAAACzsBAAACAAAAAAAACDtBABbAQAAXAEAAL4AAABdAQAAXgEAAF8BAABgAQAAYQEAAGIBAABjAQAA+P///yDtBABkAQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAATlN0M19fMjh0aW1lX2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0VFAAAs/QQA9ewEANj7BACw7AQAAAAAAAMAAAB04wQAAgAAAADsBAACAAAAGO0EAAAIAAAAAAAAxO0EAGsBAABsAQAAvgAAAG0BAABOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTBfX3RpbWVfcHV0RQAAACz9BACl7QQA2PsEAGDtBAAAAAAAAgAAAHTjBAACAAAAvO0EAAAIAAAAAAAARO4EAG4BAABvAQAAvgAAAHABAABOU3QzX18yOHRpbWVfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAADY+wQA/O0EAAAAAAACAAAAdOMEAAIAAAC87QQAAAgAAAAAAADY7gQA4AAAAHEBAAC+AAAAcgEAAHMBAAB0AQAAdQEAAHYBAAB3AQAAeAEAAHkBAAB6AQAATlN0M19fMjEwbW9uZXlwdW5jdEljTGIwRUVFAE5TdDNfXzIxMG1vbmV5X2Jhc2VFAAAAACz9BAC47gQA2PsEAJzuBAAAAAAAAgAAAHTjBAACAAAA0O4EAAIAAAAAAAAATO8EAOAAAAB7AQAAvgAAAHwBAAB9AQAAfgEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMUVFRQDY+wQAMO8EAAAAAAACAAAAdOMEAAIAAADQ7gQAAgAAAAAAAADA7wQA4AAAAIUBAAC+AAAAhgEAAIcBAACIAQAAiQEAAIoBAACLAQAAjAEAAI0BAACOAQAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIwRUVFANj7BACk7wQAAAAAAAIAAAB04wQAAgAAANDuBAACAAAAAAAAADTwBADgAAAAjwEAAL4AAACQAQAAkQEAAJIBAACTAQAAlAEAAJUBAACWAQAAlwEAAJgBAABOU3QzX18yMTBtb25leXB1bmN0SXdMYjFFRUUA2PsEABjwBAAAAAAAAgAAAHTjBAACAAAA0O4EAAIAAAAAAAAA2PAEAOAAAACZAQAAvgAAAJoBAACbAQAATlN0M19fMjltb25leV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfZ2V0SWNFRQAALP0EALbwBADY+wQAcPAEAAAAAAACAAAAdOMEAAIAAADQ8AQAQfzhEwubAXzxBADgAAAAnAEAAL4AAACdAQAAngEAAE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEl3RUUAACz9BABa8QQA2PsEABTxBAAAAAAAAgAAAHTjBAACAAAAdPEEAEGg4xMLmwEg8gQA4AAAAJ8BAAC+AAAAoAEAAKEBAABOU3QzX18yOW1vbmV5X3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjExX19tb25leV9wdXRJY0VFAAAs/QQA/vEEANj7BAC48QQAAAAAAAIAAAB04wQAAgAAABjyBABBxOQTC5sBxPIEAOAAAACiAQAAvgAAAKMBAACkAQAATlN0M19fMjltb25leV9wdXRJd05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SXdFRQAALP0EAKLyBADY+wQAXPIEAAAAAAACAAAAdOMEAAIAAAC88gQAQejlEwu5CDzzBADgAAAApQEAAL4AAACmAQAApwEAAKgBAABOU3QzX18yOG1lc3NhZ2VzSWNFRQBOU3QzX18yMTNtZXNzYWdlc19iYXNlRQAAAAAs/QQAGfMEANj7BAAE8wQAAAAAAAIAAAB04wQAAgAAADTzBAACAAAAAAAAAJTzBADgAAAAqQEAAL4AAACqAQAAqwEAAKwBAABOU3QzX18yOG1lc3NhZ2VzSXdFRQAAAADY+wQAfPMEAAAAAAACAAAAdOMEAAIAAAA08wQAAgAAAFMAAAB1AAAAbgAAAGQAAABhAAAAeQAAAAAAAABNAAAAbwAAAG4AAABkAAAAYQAAAHkAAAAAAAAAVAAAAHUAAABlAAAAcwAAAGQAAABhAAAAeQAAAAAAAABXAAAAZQAAAGQAAABuAAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVAAAAGgAAAB1AAAAcgAAAHMAAABkAAAAYQAAAHkAAAAAAAAARgAAAHIAAABpAAAAZAAAAGEAAAB5AAAAAAAAAFMAAABhAAAAdAAAAHUAAAByAAAAZAAAAGEAAAB5AAAAAAAAAFMAAAB1AAAAbgAAAAAAAABNAAAAbwAAAG4AAAAAAAAAVAAAAHUAAABlAAAAAAAAAFcAAABlAAAAZAAAAAAAAABUAAAAaAAAAHUAAAAAAAAARgAAAHIAAABpAAAAAAAAAFMAAABhAAAAdAAAAAAAAABKAAAAYQAAAG4AAAB1AAAAYQAAAHIAAAB5AAAAAAAAAEYAAABlAAAAYgAAAHIAAAB1AAAAYQAAAHIAAAB5AAAAAAAAAE0AAABhAAAAcgAAAGMAAABoAAAAAAAAAEEAAABwAAAAcgAAAGkAAABsAAAAAAAAAE0AAABhAAAAeQAAAAAAAABKAAAAdQAAAG4AAABlAAAAAAAAAEoAAAB1AAAAbAAAAHkAAAAAAAAAQQAAAHUAAABnAAAAdQAAAHMAAAB0AAAAAAAAAFMAAABlAAAAcAAAAHQAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABPAAAAYwAAAHQAAABvAAAAYgAAAGUAAAByAAAAAAAAAE4AAABvAAAAdgAAAGUAAABtAAAAYgAAAGUAAAByAAAAAAAAAEQAAABlAAAAYwAAAGUAAABtAAAAYgAAAGUAAAByAAAAAAAAAEoAAABhAAAAbgAAAAAAAABGAAAAZQAAAGIAAAAAAAAATQAAAGEAAAByAAAAAAAAAEEAAABwAAAAcgAAAAAAAABKAAAAdQAAAG4AAAAAAAAASgAAAHUAAABsAAAAAAAAAEEAAAB1AAAAZwAAAAAAAABTAAAAZQAAAHAAAAAAAAAATwAAAGMAAAB0AAAAAAAAAE4AAABvAAAAdgAAAAAAAABEAAAAZQAAAGMAAAAAAAAAQQAAAE0AAAAAAAAAUAAAAE0AQazuEwtcLOwEAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFoBAAAAAAAAGO0EAGQBAABlAQAAZgEAAGcBAABoAQAAaQEAAGoBAABOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUAQaTvEwsDmM8EAEHA7xMLyAEwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQBBmPETC44KCgAAAAAAAABkAAAAAAAAAOgDAAAAAAAAECcAAAAAAACghgEAAAAAAEBCDwAAAAAAgJaYAAAAAAAA4fUFAAAAAADKmjsAAAAAAOQLVAIAAAAA6HZIFwAAAAAQpdToAAAAAKByThgJAAAAQHoQ81oAAACAxqR+jQMAAADBb/KGIwAAAIpdeEVjAQAAZKeztuANAADoiQQjx4os/QQAcPcEAAAAAAAw+QQArQEAAK4BAACvAQAATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAbP0EAEz5BABc/QQATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAbP0EAHz5BABw+QQATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAbP0EAKz5BABw+QQATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAbP0EANz5BADQ+QQATjEwX19jeHhhYml2MTIwX19mdW5jdGlvbl90eXBlX2luZm9FAAAAAGz9BAAM+gQAcPkEAE4xMF9fY3h4YWJpdjEyOV9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvRQAAAGz9BABA+gQA0PkEAAAAAADA+gQAsQEAALIBAACzAQAAtAEAALUBAABOMTBfX2N4eGFiaXYxMjNfX2Z1bmRhbWVudGFsX3R5cGVfaW5mb0UAbP0EAJj6BABw+QQAdgAAAIT6BADM+gQARG4AAIT6BADY+gQAYgAAAIT6BADk+gQAYwAAAIT6BADw+gQAaAAAAIT6BAD8+gQAYQAAAIT6BAAI+wQAcwAAAIT6BAAU+wQAdAAAAIT6BAAg+wQAaQAAAIT6BAAs+wQAagAAAIT6BAA4+wQAhPoEALHcBABQbAAANPwEAEz7BAAAAAAARPsEAG0AAACE+gQAYPsEAHgAAACE+gQAbPsEAHkAAACE+gQAePsEAGYAAACE+gQAhPsEAGQAAACE+gQAkPsEAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAABs/QQAnPsEAKD5BAAAAAAAIPwEALEBAAC2AQAAswEAALQBAAC3AQAAuAEAALkBAAC6AQAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAGz9BAD4+wQAoPkEAAAAAAAA+gQAsQEAALsBAACzAQAAtAEAALwBAAAAAAAAjPwEAE0AAAC9AQAAvgEAAAAAAAC0/AQATQAAAL8BAADAAQAAU3Q5ZXhjZXB0aW9uAFN0OWJhZF9hbGxvYwAAAGz9BAB9/AQAjP0EAFN0MjBiYWRfYXJyYXlfbmV3X2xlbmd0aAAAAABs/QQAmPwEAIz8BAAAAAAA5PwEAAIAAADBAQAAwgEAAFN0MTFsb2dpY19lcnJvcgBs/QQA1PwEAIz9BAAAAAAAGP0EAAIAAADDAQAAwgEAAFN0MTJsZW5ndGhfZXJyb3IAAAAAbP0EAAT9BADk/AQAAAAAAKD5BACxAQAAxAEAALMBAAC0AQAAtwEAAMUBAADGAQAAxwEAAFN0OXR5cGVfaW5mbwAAAAAs/QQATP0EAAAAAADE+wQAsQEAAMgBAACzAQAAtAEAALcBAADJAQAAygEAAMsBAAAs/QQAcPwEAAAAAACM/QQATQAAAMwBAADNAQBBqPsTCxFAGQYAAAAAAI2XbhIj6rhABQBBxPsTCwFwAEHc+xMLC3EAAAByAAAANAQFAEH0+xMLAQIAQYT8EwsI//////////8AQcj8EwsJuP0EAAAAAAAFAEHc/BMLAXMAQfT8EwsOcQAAAHQAAABYCAUAAAQAQYz9EwsBAQBBnP0TCwX/////CgBB4P0TCwlQ/gQAAAAAAAkAQfT9EwsBcABBiP4TCxJ1AAAAAAAAAHIAAABIBAUAAAQAQbT+EwsE/////wBB+P4TCwKwAQ==",Ct(xe)||(xe=u(xe));function oo(x){if(x==xe&&C)return new Uint8Array(C);var D=pm(x);if(D)return D;if(G)return G(x);throw"both async and sync fetching of the wasm failed"}function ea(x){return Promise.resolve().then(()=>oo(x))}function gs(x,D,j){return ea(x).then(lt=>WebAssembly.instantiate(lt,D)).then(lt=>lt).then(j,lt=>{g("failed to asynchronously prepare wasm: "+lt),_t(xe)&&g("warning: Loading from a file URI ("+xe+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),We(lt)})}function is(x,D,j,lt){return gs(D,j,lt)}function ja(){var x={env:XN,wasi_snapshot_preview1:XN};function D(Zt,yt){var Yt=Zt.exports;return Q=Yt,Y=Q.memory,V(Y,"memory not found in wasm exports"),H(),nt=Q.__indirect_function_table,V(nt,"table not found in wasm exports"),qt(Q.__wasm_call_ctors),ue("wasm-instantiate"),Yt}ke("wasm-instantiate");var j=n;function lt(Zt){V(n===j,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),j=null,D(Zt.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(x,D)}catch(Zt){g("Module.instantiateWasm callback failed with error: "+Zt),o(Zt)}return is(C,xe,x,lt).catch(o),{}}var qn,ae;function fe(x,D,j=!0){Object.getOwnPropertyDescriptor(n,x)||Object.defineProperty(n,x,{configurable:!0,get(){let lt=j?" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)":"";We(`\`Module.${x}\` has been replaced by \`${D}\``+lt)}})}function ge(x){Object.getOwnPropertyDescriptor(n,x)&&We(`\`Module.${x}\` was supplied but \`${x}\` not included in INCOMING_MODULE_JS_API`)}function Ze(x){return x==="FS_createPath"||x==="FS_createDataFile"||x==="FS_createPreloadedFile"||x==="FS_unlink"||x==="addRunDependency"||x==="FS_createLazyFile"||x==="FS_createDevice"||x==="removeRunDependency"}function Ke(x,D){typeof globalThis<"u"&&Object.defineProperty(globalThis,x,{configurable:!0,get(){Go("`"+x+"` is not longer defined by emscripten. "+D)}})}Ke("buffer","Please use HEAP8.buffer or wasmMemory.buffer");function An(x){typeof globalThis<"u"&&!Object.getOwnPropertyDescriptor(globalThis,x)&&Object.defineProperty(globalThis,x,{configurable:!0,get(){var D="`"+x+"` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line",j=x;j.startsWith("_")||(j="$"+x),D+=" (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='"+j+"')",Ze(x)&&(D+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),Go(D)}}),si(x)}function si(x){Object.getOwnPropertyDescriptor(n,x)||Object.defineProperty(n,x,{configurable:!0,get(){var D="'"+x+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)";Ze(x)&&(D+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),We(D)}})}var da={327548:()=>{console.log("no show")}};function _a(x){this.name="ExitStatus",this.message=`Program terminated with exit(${x})`,this.status=x}var bl=x=>{for(;x.length>0;)x.shift()(n)},na=x=>(V(typeof x=="number"),x>>>=0,"0x"+x.toString(16).padStart(8,"0")),Go=x=>{Go.shown||(Go.shown={}),Go.shown[x]||(Go.shown[x]=1,g(x))};function Ao(x){this.excPtr=x,this.ptr=x-24,this.set_type=function(D){P[this.ptr+4>>2]=D},this.get_type=function(){return P[this.ptr+4>>2]},this.set_destructor=function(D){P[this.ptr+8>>2]=D},this.get_destructor=function(){return P[this.ptr+8>>2]},this.set_caught=function(D){D=D?1:0,E[this.ptr+12>>0]=D},this.get_caught=function(){return E[this.ptr+12>>0]!=0},this.set_rethrown=function(D){D=D?1:0,E[this.ptr+13>>0]=D},this.get_rethrown=function(){return E[this.ptr+13>>0]!=0},this.init=function(D,j){this.set_adjusted_ptr(0),this.set_type(D),this.set_destructor(j)},this.set_adjusted_ptr=function(D){P[this.ptr+16>>2]=D},this.get_adjusted_ptr=function(){return P[this.ptr+16>>2]},this.get_exception_ptr=function(){var D=s8(this.get_type());if(D)return P[this.excPtr>>2];var j=this.get_adjusted_ptr();return j!==0?j:this.excPtr}}var Xs=0,Es=0;function wl(x,D,j){var lt=new Ao(x);lt.init(D,j),Xs=x,Es++,V(!1,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")}function ka(x,D,j,lt,Zt){}function Wa(x){switch(x){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${x}`)}}function Ju(){for(var x=new Array(256),D=0;D<256;++D)x[D]=String.fromCharCode(D);yl=x}var yl=void 0;function Bi(x){for(var D="",j=x;I[j];)D+=yl[I[j++]];return D}var sd={},zi={},js={},ca=void 0;function $n(x){throw new ca(x)}var mr=void 0;function hr(x){throw new mr(x)}function pr(x,D,j){x.forEach(function(Dt){js[Dt]=D});function lt(Dt){var pe=j(Dt);pe.length!==x.length&&hr("Mismatched type converter count");for(var Se=0;Se{zi.hasOwnProperty(Dt)?Zt[pe]=zi[Dt]:(yt.push(Dt),sd.hasOwnProperty(Dt)||(sd[Dt]=[]),sd[Dt].push(()=>{Zt[pe]=zi[Dt],++Yt,Yt===yt.length&<(Zt)}))}),yt.length===0&<(Zt)}function hs(x,D,j={}){var lt=D.name;if(x||$n(`type "${lt}" must have a positive integer typeid pointer`),zi.hasOwnProperty(x)){if(j.ignoreDuplicateRegistrations)return;$n(`Cannot register type '${lt}' twice`)}if(zi[x]=D,delete js[x],sd.hasOwnProperty(x)){var Zt=sd[x];delete sd[x],Zt.forEach(yt=>yt())}}function ma(x,D,j={}){if(!("argPackAdvance"in D))throw new TypeError("registerType registeredInstance requires argPackAdvance");return hs(x,D,j)}function Ed(x,D,j,lt,Zt){var yt=Wa(j);D=Bi(D),ma(x,{name:D,fromWireType:function(Yt){return!!Yt},toWireType:function(Yt,Dt){return Dt?lt:Zt},argPackAdvance:8,readValueFromPointer:function(Yt){var Dt;if(j===1)Dt=E;else if(j===2)Dt=B;else if(j===4)Dt=_;else throw new TypeError("Unknown boolean type size: "+D);return this.fromWireType(Dt[Yt>>yt])},destructorFunction:null})}function BW(x){if(!(this instanceof rh)||!(x instanceof rh))return!1;for(var D=this.$$.ptrType.registeredClass,j=this.$$.ptr,lt=x.$$.ptrType.registeredClass,Zt=x.$$.ptr;D.baseClass;)j=D.upcast(j),D=D.baseClass;for(;lt.baseClass;)Zt=lt.upcast(Zt),lt=lt.baseClass;return D===lt&&j===Zt}function Rc(x){return{count:x.count,deleteScheduled:x.deleteScheduled,preservePointerOnDelete:x.preservePointerOnDelete,ptr:x.ptr,ptrType:x.ptrType,smartPtr:x.smartPtr,smartPtrType:x.smartPtrType}}function $b(x){function D(j){return j.$$.ptrType.registeredClass.name}$n(D(x)+" instance already deleted")}var Zp=!1;function Lu(x){}function QW(x){x.smartPtr?x.smartPtrType.rawDestructor(x.smartPtr):x.ptrType.registeredClass.rawDestructor(x.ptr)}function tR(x){x.count.value-=1;var D=x.count.value===0;D&&QW(x)}function kW(x,D,j){if(D===j)return x;if(j.baseClass===void 0)return null;var lt=kW(x,D,j.baseClass);return lt===null?null:j.downcast(lt)}var YW={};function pg(){return Object.keys(Mu).length}function MU(){var x=[];for(var D in Mu)Mu.hasOwnProperty(D)&&x.push(Mu[D]);return x}var lh=[];function Vp(){for(;lh.length;){var x=lh.pop();x.$$.deleteScheduled=!1,x.delete()}}var lm=void 0;function _U(x){lm=x,lh.length&&lm&&lm(Vp)}function DU(){n.getInheritedInstanceCount=pg,n.getLiveInheritedInstances=MU,n.flushPendingDeletes=Vp,n.setDelayFunction=_U}var Mu={};function eR(x,D){for(D===void 0&&$n("ptr should not be undefined");x.baseClass;)D=x.upcast(D),x=x.baseClass;return D}function ug(x,D){return D=eR(x,D),Mu[D]}function bp(x,D){(!D.ptrType||!D.ptr)&&hr("makeClassHandle requires ptr and ptrType");var j=!!D.smartPtrType,lt=!!D.smartPtr;return j!==lt&&hr("Both smartPtrType and smartPtr must be specified"),D.count={value:1},kr(Object.create(x,{$$:{value:D}}))}function Rp(x){var D=this.getPointee(x);if(!D)return this.destructor(x),null;var j=ug(this.registeredClass,D);if(j!==void 0){if(j.$$.count.value===0)return j.$$.ptr=D,j.$$.smartPtr=x,j.clone();var lt=j.clone();return this.destructor(x),lt}function Zt(){return this.isSmartPointer?bp(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:D,smartPtrType:this,smartPtr:x}):bp(this.registeredClass.instancePrototype,{ptrType:this,ptr:x})}var yt=this.registeredClass.getActualType(D),Yt=YW[yt];if(!Yt)return Zt.call(this);var Dt;this.isConst?Dt=Yt.constPointerType:Dt=Yt.pointerType;var pe=kW(D,this.registeredClass,Dt.registeredClass);return pe===null?Zt.call(this):this.isSmartPointer?bp(Dt.registeredClass.instancePrototype,{ptrType:Dt,ptr:pe,smartPtrType:this,smartPtr:x}):bp(Dt.registeredClass.instancePrototype,{ptrType:Dt,ptr:pe})}var kr=function(x){return typeof FinalizationRegistry>"u"?(kr=D=>D,x):(Zp=new FinalizationRegistry(D=>{console.warn(D.leakWarning.stack.replace(/^Error: /,"")),tR(D.$$)}),kr=D=>{var j=D.$$,lt=!!j.smartPtr;if(lt){var Zt={$$:j},yt=j.ptrType.registeredClass;Zt.leakWarning=new Error(`Embind found a leaked C++ instance ${yt.name} <${na(j.ptr)}>. +`;var Ppe=Er.SHOW_INDEX,set=Er.POSITION_INDEX,CUt=Er.COLOR_INDEX,vpe=Er.OUTLINE_COLOR_INDEX,Kpe=Er.OUTLINE_WIDTH_INDEX,zpe=Er.PIXEL_SIZE_INDEX,IUt=Er.SCALE_BY_DISTANCE_INDEX,NUt=Er.TRANSLUCENCY_BY_DISTANCE_INDEX,yUt=Er.DISTANCE_DISPLAY_CONDITION_INDEX,jpe=Er.DISABLE_DEPTH_DISTANCE_INDEX,ret=Er.NUMBER_OF_PROPERTIES,nc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepth:5};function lV(t){t=f(t,f.EMPTY_OBJECT),this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(ret),this._maxPixelSize=1,this._baseVolume=new Ft,this._baseVolumeWC=new Ft,this._baseVolume2D=new Ft,this._boundingVolume=new Ft,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=f(t.show,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=L.clone(L.IDENTITY),this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.blendOption=f(t.blendOption,wa.OPAQUE_AND_TRANSLUCENT),this._blendOption=void 0,this._mode=Vt.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW,ce.STATIC_DRAW];let e=this;this._uniforms={u_maxTotalPointSize:function(){return e._maxTotalPointSize}}}Object.defineProperties(lV.prototype,{length:{get:function(){return det(this),this._pointPrimitives.length}}});function BUt(t){let e=t.length;for(let n=0;n0&&(t._shaderDisableDepthDistance=!0,d===Number.POSITIVE_INFINITY&&(d=-1)),a(o,s,l,d)}function $pe(t,e,n,i){QUt(t,e,n,i),kUt(t,e,n,i),YUt(t,e,n,i),xUt(t,e,n,i),XUt(t,e,n,i)}function aet(t,e,n,i,o,a){let s;i.mode===Vt.SCENE3D?(s=t._baseVolume,t._boundingVolumeDirty=!0):s=t._baseVolume2D;let l=[];for(let r=0;r0){this._vaf=qpe(r,n,this._buffersUsage),l=this._vaf.writers;for(let C=0;C0){let C=nVe;C.length=0,(a[set]||a[Kpe]||a[zpe])&&C.push(QUt),(a[CUt]||a[vpe])&&C.push(kUt),(a[Ppe]||a[NUt])&&C.push(YUt),a[IUt]&&C.push(xUt),(a[yUt]||a[jpe])&&C.push(XUt);let y=C.length;if(l=this._vaf.writers,o/n>.1){for(let Y=0;Yn*1.5&&(i.length=n),!c(this._vaf)||!c(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,Ft.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,u=L.IDENTITY;t.mode===Vt.SCENE3D?(u=this.modelMatrix,h=Ft.clone(this._baseVolumeWC,this._boundingVolume)):h=Ft.clone(this._baseVolume2D,this._boundingVolume),eVe(this,t,h);let R=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,R&&(this._blendOption===wa.OPAQUE||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=he.fromCache({depthTest:{enabled:!0,func:pt.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===wa.TRANSLUCENT||this._blendOption===wa.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=he.fromCache({depthTest:{enabled:!0,func:pt.LEQUAL},depthMask:!1,blending:Pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||t.minimumDisableDepthTestDistance!==0;let V,F;(R||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(V=new Ze({sources:[FJ]}),this._shaderScaleByDistance&&V.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&V.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&V.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&V.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===wa.OPAQUE_AND_TRANSLUCENT&&(F=new Ze({defines:["OPAQUE"],sources:[GF]}),this._sp=xn.replaceCache({context:r,shaderProgram:this._sp,vertexShaderSource:V,fragmentShaderSource:F,attributeLocations:nc}),F=new Ze({defines:["TRANSLUCENT"],sources:[GF]}),this._spTranslucent=xn.replaceCache({context:r,shaderProgram:this._spTranslucent,vertexShaderSource:V,fragmentShaderSource:F,attributeLocations:nc})),this._blendOption===wa.OPAQUE&&(F=new Ze({sources:[GF]}),this._sp=xn.replaceCache({context:r,shaderProgram:this._sp,vertexShaderSource:V,fragmentShaderSource:F,attributeLocations:nc})),this._blendOption===wa.TRANSLUCENT&&(F=new Ze({sources:[GF]}),this._spTranslucent=xn.replaceCache({context:r,shaderProgram:this._spTranslucent,vertexShaderSource:V,fragmentShaderSource:F,attributeLocations:nc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let U,G,A,S,g=t.commandList;if(d.render||m){let C=this._colorCommands,y=this._blendOption===wa.OPAQUE,Y=this._blendOption===wa.OPAQUE_AND_TRANSLUCENT;U=this._vaf.va,G=U.length,C.length=G;let Q=Y?G*2:G;for(S=0;S>4;if(o!==cet)throw new Error(`Got v${o} data when expected v${cet}.`);let a=JUt[i&15];if(!a)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(e,2,1),[l]=new Uint32Array(e,4,1);return new t(l,s,a,e)}constructor(e,n=64,i=Float64Array,o){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;let a=JUt.indexOf(this.ArrayType),s=e*2*this.ArrayType.BYTES_PER_ELEMENT,l=e*this.IndexArrayType.BYTES_PER_ELEMENT,r=(8-l%8)%8;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,GJ,e),this.coords=new this.ArrayType(this.data,GJ+l+r,e*2),this._pos=e*2,this._finished=!0):(this.data=new ArrayBuffer(GJ+s+l+r),this.ids=new this.IndexArrayType(this.data,GJ,e),this.coords=new this.ArrayType(this.data,GJ+l+r,e*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(cet<<4)+a]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=e)}add(e,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=e,this.coords[this._pos++]=n,i}finish(){let e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return het(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:a,coords:s,nodeSize:l}=this,r=[0,a.length-1,0],d=[];for(;r.length;){let m=r.pop()||0,h=r.pop()||0,u=r.pop()||0;if(h-u<=l){for(let U=u;U<=h;U++){let G=s[2*U],A=s[2*U+1];G>=e&&G<=i&&A>=n&&A<=o&&d.push(a[U])}continue}let R=u+h>>1,V=s[2*R],F=s[2*R+1];V>=e&&V<=i&&F>=n&&F<=o&&d.push(a[R]),(m===0?e<=V:n<=F)&&(r.push(u),r.push(R-1),r.push(1-m)),(m===0?i>=V:o>=F)&&(r.push(R+1),r.push(h),r.push(1-m))}return d}within(e,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:a,nodeSize:s}=this,l=[0,o.length-1,0],r=[],d=i*i;for(;l.length;){let m=l.pop()||0,h=l.pop()||0,u=l.pop()||0;if(h-u<=s){for(let U=u;U<=h;U++)LUt(a[2*U],a[2*U+1],e,n)<=d&&r.push(o[U]);continue}let R=u+h>>1,V=a[2*R],F=a[2*R+1];LUt(V,F,e,n)<=d&&r.push(o[R]),(m===0?e-i<=V:n-i<=F)&&(l.push(u),l.push(R-1),l.push(1-m)),(m===0?e+i>=V:n+i>=F)&&(l.push(R+1),l.push(h),l.push(1-m))}return r}};function het(t,e,n,i,o,a){if(o-i<=n)return;let s=i+o>>1;MUt(t,e,s,i,o,a),het(t,e,n,i,s-1,1-a),het(t,e,n,s+1,o,1-a)}function MUt(t,e,n,i,o,a){for(;o>i;){if(o-i>600){let d=o-i+1,m=n-i+1,h=Math.log(d),u=.5*Math.exp(2*h/3),R=.5*Math.sqrt(h*u*(d-u)/d)*(m-d/2<0?-1:1),V=Math.max(i,Math.floor(n-m*u/d+R)),F=Math.min(o,Math.floor(n+(d-m)*u/d+R));MUt(t,e,n,V,F,a)}let s=e[2*n+a],l=i,r=o;for(AJ(t,e,i,n),e[2*o+a]>s&&AJ(t,e,i,o);ls;)r--}e[2*i+a]===s?AJ(t,e,i,r):(r++,AJ(t,e,r,o)),r<=n&&(i=r+1),n<=r&&(o=r-1)}}function AJ(t,e,n,i){met(t,n,i),met(e,2*n,2*i),met(e,2*n+1,2*i+1)}function met(t,e,n){let i=t[e];t[e]=t[n],t[n]=i}function LUt(t,e,n,i){let o=t-n,a=e-i;return o*o+a*a}function Qu(t){t=f(t,f.EMPTY_OBJECT),this._enabled=f(t.enabled,!1),this._pixelRange=f(t.pixelRange,80),this._minimumClusterSize=f(t.minimumClusterSize,2),this._clusterBillboards=f(t.clusterBillboards,!0),this._clusterLabels=f(t.clusterLabels,!0),this._clusterPoints=f(t.clusterPoints,!0),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new It,this.show=f(t.show,!0)}function _Ut(t,e){t.x-=e,t.y-=e,t.width+=e*2,t.height+=e*2}var iVe=new Fe;function DUt(t,e,n,i,o){if(c(t._labelCollection)&&i._clusterLabels?o=cF.getScreenSpaceBoundingBox(t,e,o):c(t._billboardCollection)&&i._clusterBillboards?o=Na.getScreenSpaceBoundingBox(t,e,o):c(t._pointPrimitiveCollection)&&i._clusterPoints&&(o=Er.getScreenSpaceBoundingBox(t,e,o)),_Ut(o,n),i._clusterLabels&&!c(t._labelCollection)&&c(t.id)&&HUt(i,t.id.id)&&c(t.id._label)){let a=i._collectionIndicesByEntity[t.id.id].labelIndex,s=i._labelCollection.get(a),l=cF.getScreenSpaceBoundingBox(s,e,iVe);_Ut(l,n),o=Fe.union(o,l,o)}return o}function oVe(t,e){if(t.clusterShow=!0,!c(t._labelCollection)&&c(t.id)&&HUt(e,t.id.id)&&c(t.id._label)){let n=e._collectionIndicesByEntity[t.id.id].labelIndex,i=e._labelCollection.get(n);i.clusterShow=!0}}function OUt(t,e,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=e.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=t,i._clusterEvent.raiseEvent(n,o)}function HUt(t,e){return c(t)&&c(t._collectionIndicesByEntity[e])&&c(t._collectionIndicesByEntity[e].labelIndex)}function pet(t,e,n,i,o){if(!c(t))return;let a=t.length;for(let s=0;s0){let X=new SJ(A.length,64,Uint32Array);for(let _=0;_=m)for(OUt(_.position,E,Z,t),u.push(_),g=0;g=m){let H=p.multiplyByScalar(z,1/E,z);for(OUt(H,E,Z,t),u.push({position:H,width:w.width,height:w.height,minimumWidth:y.width,minimumHeight:y.height}),g=0;g0?(l=d.shift(),r=a.get(l)):(r=a.add(),l=a.length-1),s[i]=l;let m=this;return Promise.resolve().then(function(){m._clusterDirty=!0}),r}}function Zet(t,e){let n=t._collectionIndicesByEntity[e];!c(n.billboardIndex)&&!c(n.labelIndex)&&!c(n.pointIndex)&&delete t._collectionIndicesByEntity[e]}Qu.prototype.getLabel=uet("_labelCollection",sR,"_unusedLabelIndices","labelIndex");Qu.prototype.removeLabel=function(t){let e=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!c(this._labelCollection)||!c(e)||!c(e.labelIndex))return;let n=e.labelIndex;e.labelIndex=void 0,Zet(this,t.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};Qu.prototype.getBillboard=uet("_billboardCollection",yh,"_unusedBillboardIndices","billboardIndex");Qu.prototype.removeBillboard=function(t){let e=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!c(this._billboardCollection)||!c(e)||!c(e.billboardIndex))return;let n=e.billboardIndex;e.billboardIndex=void 0,Zet(this,t.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};Qu.prototype.getPoint=uet("_pointCollection",JC,"_unusedPointIndices","pointIndex");Qu.prototype.removePoint=function(t){let e=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!c(this._pointCollection)||!c(e)||!c(e.pointIndex))return;let n=e.pointIndex;e.pointIndex=void 0,Zet(this,t.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function Vet(t){if(!c(t))return;let e=t.length;for(let n=0;n0&&this._labelCollection.get(0)._glyphs.length===0&&(e=t.commandList,t.commandList=[],this._labelCollection.update(t),t.commandList=e),c(this._billboardCollection)&&this._billboardCollection.length>0&&!c(this._billboardCollection.get(0).width)&&(e=t.commandList,t.commandList=[],this._billboardCollection.update(t),t.commandList=e),this._enabledDirty&&(this._enabledDirty=!1,dVe(this),this._clusterDirty=!0),this._clusterDirty&&(this._clusterDirty=!1,this._cluster()),c(this._clusterLabelCollection)&&this._clusterLabelCollection.update(t),c(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(t),c(this._clusterPointCollection)&&this._clusterPointCollection.update(t),c(this._labelCollection)&&this._labelCollection.update(t),c(this._billboardCollection)&&this._billboardCollection.update(t),c(this._pointCollection)&&this._pointCollection.update(t)};Qu.prototype.destroy=function(){this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),c(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var Yh=Qu;function Ret(t){this._name=t,this._clock=void 0,this._changed=new It,this._error=new It,this._isLoading=!1,this._loading=new It,this._entityCollection=new gr(this),this._entityCluster=new Yh}Object.defineProperties(Ret.prototype,{name:{get:function(){return this._name},set:function(t){this._name!==t&&(this._name=t,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(t){this._clock!==t&&(this._clock=t,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(t){ml.setLoading(this,t)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(t){this._entityCollection.show=t}},clustering:{get:function(){return this._entityCluster},set:function(t){this._entityCluster=t}}});Ret.prototype.update=function(t){return!0};var hR=Ret;var bet=class extends hR{constructor(e){if(!(e.sdc instanceof hR)||!e.sdc._wasmModule)throw new Ut("Invalid SpaceCatalogDataSource");super(`${e.sdc.name}_coverageGroup`),this.objectList=[],this.sdc=e.sdc,this.sdc.entities.collectionChanged.addEventListener((n,i,o,a)=>{for(let s=0;s{this.ph.positionsArray=[],this.ph.positions=[];for(let o=0;o!0,set:()=>{}}})}}getById(e){return this.objectList.filter(n=>n.id===e)}push(e){this.objectList.filter(n=>n.id===e.id).length||(this.objectList.push(e),this.createGeometry())}remove(e){this.objectList=this.objectList.filter(n=>n.id!==e.id),Object.defineProperties(e,{show:{configurable:!0,get:()=>e._show,set:n=>{e._show=n}}}),this.createGeometry()}},TJ=bet;var HVi=b(W(),1);var rVi=b(W(),1);var Hpi=b(W(),1);var wUt={};wUt.computePositions=function(t,e,n,i,o){let a=t*.5,s=-a,l=i+i,r=o?2*l:l,d=new Float64Array(r*3),m,h=0,u=0,R=o?l*3:0,V=o?(l+i)*3:i*3;for(m=0;m0){let F=Math.min(a,o);d=Math.round(o/F),r+=F}let m=re.createTypedArray(s,r*2),h=0,u;for(u=0;u0)for(u=0;u0){for(r=0;r=3e4)e=rt.now(e),this._lastSystemClockUpdate=t;else{let i=this._multiplier;if(n===ya.TICK_DEPENDENT)e=rt.addSeconds(e,i,e);else{let l=t-this._lastSystemTime;e=rt.addSeconds(e,i*(l/1e3),e)}let o=this.clockRange,a=this.startTime,s=this.stopTime;if(o===pl.CLAMPED)rt.lessThan(e,a)?e=rt.clone(a,e):rt.greaterThan(e,s)&&(e=rt.clone(s,e),this.onStop.raiseEvent(this));else if(o===pl.LOOP_STOP)for(rt.lessThan(e,a)&&(e=rt.clone(a,e));rt.greaterThan(e,s);)e=rt.addSeconds(a,rt.secondsDifference(e,s),e),this.onStop.raiseEvent(this)}}return this._currentTime=e,this._lastSystemTime=t,this.onTick.raiseEvent(this),e};var ku=Tet;function cS(){this._definitionChanged=new It,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(cS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:gm("startTime"),stopTime:gm("stopTime"),currentTime:gm("currentTime"),clockRange:gm("clockRange"),clockStep:gm("clockStep"),multiplier:gm("multiplier")});cS.prototype.clone=function(t){return c(t)||(t=new cS),t.startTime=this.startTime,t.stopTime=this.stopTime,t.currentTime=this.currentTime,t.clockRange=this.clockRange,t.clockStep=this.clockStep,t.multiplier=this.multiplier,t};cS.prototype.equals=function(t){return this===t||c(t)&&rt.equals(this.startTime,t.startTime)&&rt.equals(this.stopTime,t.stopTime)&&rt.equals(this.currentTime,t.currentTime)&&this.clockRange===t.clockRange&&this.clockStep===t.clockStep&&this.multiplier===t.multiplier};cS.prototype.merge=function(t){this.startTime=f(this.startTime,t.startTime),this.stopTime=f(this.stopTime,t.stopTime),this.currentTime=f(this.currentTime,t.currentTime),this.clockRange=f(this.clockRange,t.clockRange),this.clockStep=f(this.clockStep,t.clockStep),this.multiplier=f(this.multiplier,t.multiplier)};cS.prototype.getValue=function(t){return c(t)||(t=new ku),t.startTime=f(this.startTime,t.startTime),t.stopTime=f(this.stopTime,t.stopTime),t.currentTime=f(this.currentTime,t.currentTime),t.clockRange=f(this.clockRange,t.clockRange),t.multiplier=f(this.multiplier,t.multiplier),t.clockStep=f(this.clockStep,t.clockStep),t};var Yu=cS;var xui=b(W(),1);var UVe=v.WHITE,GVe=.1,AVe=new K(8,8),SVe=new K(0,0),TVe=new K(1,1);function DC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=t.color,this.cellAlpha=t.cellAlpha,this.lineCount=t.lineCount,this.lineThickness=t.lineThickness,this.lineOffset=t.lineOffset}Object.defineProperties(DC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._cellAlpha)&&et.isConstant(this._lineCount)&&et.isConstant(this._lineThickness)&&et.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),cellAlpha:ft("cellAlpha"),lineCount:ft("lineCount"),lineThickness:ft("lineThickness"),lineOffset:ft("lineOffset")});DC.prototype.getType=function(t){return"Grid"};DC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,UVe,e.color),e.cellAlpha=et.getValueOrDefault(this._cellAlpha,t,GVe),e.lineCount=et.getValueOrClonedDefault(this._lineCount,t,AVe,e.lineCount),e.lineThickness=et.getValueOrClonedDefault(this._lineThickness,t,TVe,e.lineThickness),e.lineOffset=et.getValueOrClonedDefault(this._lineOffset,t,SVe,e.lineOffset),e};DC.prototype.equals=function(t){return this===t||t instanceof DC&&et.equals(this._color,t._color)&&et.equals(this._cellAlpha,t._cellAlpha)&&et.equals(this._lineCount,t._lineCount)&&et.equals(this._lineThickness,t._lineThickness)&&et.equals(this._lineOffset,t._lineOffset)};var OC=DC;var Oui=b(W(),1);function HC(t){this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this.color=t}Object.defineProperties(HC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color")});HC.prototype.getType=function(t){return"PolylineArrow"};HC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,v.WHITE,e.color),e};HC.prototype.equals=function(t){return this===t||t instanceof HC&&et.equals(this._color,t._color)};var wC=HC;var qui=b(W(),1);var gVe=v.WHITE,EVe=v.TRANSPARENT,CVe=16,IVe=255;function PC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=t.color,this.gapColor=t.gapColor,this.dashLength=t.dashLength,this.dashPattern=t.dashPattern}Object.defineProperties(PC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._gapColor)&&et.isConstant(this._dashLength)&&et.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),gapColor:ft("gapColor"),dashLength:ft("dashLength"),dashPattern:ft("dashPattern")});PC.prototype.getType=function(t){return"PolylineDash"};PC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,gVe,e.color),e.gapColor=et.getValueOrClonedDefault(this._gapColor,t,EVe,e.gapColor),e.dashLength=et.getValueOrDefault(this._dashLength,t,CVe,e.dashLength),e.dashPattern=et.getValueOrDefault(this._dashPattern,t,IVe,e.dashPattern),e};PC.prototype.equals=function(t){return this===t||t instanceof PC&&et.equals(this._color,t._color)&&et.equals(this._gapColor,t._gapColor)&&et.equals(this._dashLength,t._dashLength)&&et.equals(this._dashPattern,t._dashPattern)};var vC=PC;var sZi=b(W(),1);var NVe=v.WHITE,yVe=.25,BVe=1;function KC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=t.color,this.glowPower=t.glowPower,this.taperPower=t.taperPower}Object.defineProperties(KC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),glowPower:ft("glowPower"),taperPower:ft("taperPower")});KC.prototype.getType=function(t){return"PolylineGlow"};KC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,NVe,e.color),e.glowPower=et.getValueOrDefault(this._glowPower,t,yVe,e.glowPower),e.taperPower=et.getValueOrDefault(this._taperPower,t,BVe,e.taperPower),e};KC.prototype.equals=function(t){return this===t||t instanceof KC&&et.equals(this._color,t._color)&&et.equals(this._glowPower,t._glowPower)&&et.equals(this._taperPower,t._taperPower)};var zC=KC;var VZi=b(W(),1);var QVe=v.WHITE,kVe=v.BLACK,YVe=1;function jC(t){t=f(t,f.EMPTY_OBJECT),this._definitionChanged=new It,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=t.color,this.outlineColor=t.outlineColor,this.outlineWidth=t.outlineWidth}Object.defineProperties(jC.prototype,{isConstant:{get:function(){return et.isConstant(this._color)&&et.isConstant(this._outlineColor)&&et.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:ft("color"),outlineColor:ft("outlineColor"),outlineWidth:ft("outlineWidth")});jC.prototype.getType=function(t){return"PolylineOutline"};jC.prototype.getValue=function(t,e){return c(e)||(e={}),e.color=et.getValueOrClonedDefault(this._color,t,QVe,e.color),e.outlineColor=et.getValueOrClonedDefault(this._outlineColor,t,kVe,e.outlineColor),e.outlineWidth=et.getValueOrDefault(this._outlineWidth,t,YVe),e};jC.prototype.equals=function(t){return this===t||t instanceof jC&&et.equals(this._color,t._color)&&et.equals(this._outlineColor,t._outlineColor)&&et.equals(this._outlineWidth,t._outlineWidth)};var AF=jC;var UZi=b(W(),1);function J0(t,e){this._value=void 0,this._definitionChanged=new It,this._eventHelper=new rl,this._referenceFrame=f(e,ri.FIXED),this.setValue(t)}Object.defineProperties(J0.prototype,{isConstant:{get:function(){let t=this._value;if(!c(t))return!0;let e=t.length;for(let n=0;n0){n=new Array(e);for(let i=0;ir&&t!==Object}let V=typeof t.unpack=="function"&&t!==rV;if(!R&&!u){h?e[n]=new Ii(V?t.unpack(d,0):d):e[n]=nGt(t,s,i);return}let F=e[n],U,G=i.epoch;if(c(G)&&(U=rt.fromIso8601(G)),R&&!u){F instanceof ql||(e[n]=F=new ql(t)),F.addSamplesPackedArray(d,U),XP(i,F);return}let A;if(!R&&u){l=l.clone(),h?l.data=V?t.unpack(d,0):d:l.data=nGt(t,s,i),c(F)||(e[n]=F=h?new _m:new ec),h&&F instanceof _m?F.intervals.addInterval(l):F instanceof ec?(h&&(l.data=new Ii(l.data)),F.intervals.addInterval(l)):(e[n]=F=rGt(F),h&&(l.data=new Ii(l.data)),F.intervals.addInterval(l));return}c(F)||(e[n]=F=new ec),F instanceof ec||(e[n]=F=rGt(F));let S=F.intervals;A=S.findInterval(l),(!c(A)||!(A.data instanceof ql))&&(A=l.clone(),A.data=new ql(t),S.addInterval(A)),A.data.addSamplesPackedArray(d,U),XP(i,A.data)}function fGt(t,e){if(t instanceof ql){t.removeSamples(e);return}else if(t instanceof _m){t.intervals.removeInterval(e);return}else if(t instanceof ec){let n=t.intervals;for(let i=0;ir),!V&&!u){h?t[e]=new jl(p.unpack(d),R):t[e]=yJ(a,n.reference);return}let F=t[e],U,G=n.epoch;if(c(G)&&(U=rt.fromIso8601(G)),V&&!u){(!(F instanceof Bs)||c(R)&&F.referenceFrame!==R)&&(t[e]=F=new Bs(R,l)),F.addSamplesPackedArray(d,U),XP(n,F);return}let A;if(!V&&u){s=s.clone(),h?s.data=p.unpack(d):s.data=yJ(a,n.reference),c(F)||(h?F=new _0(R):F=new cl(R),t[e]=F),h&&F instanceof _0&&c(R)&&F.referenceFrame===R?F.intervals.addInterval(s):F instanceof cl?(h&&(s.data=new jl(s.data,R)),F.intervals.addInterval(s)):(t[e]=F=dGt(F),h&&(s.data=new jl(s.data,R)),F.intervals.addInterval(s));return}c(F)?F instanceof cl||(t[e]=F=dGt(F)):t[e]=F=new cl(R);let S=F.intervals;A=S.findInterval(s),(!c(A)||!(A.data instanceof Bs)||c(R)&&A.data.referenceFrame!==R)&&(A=s.clone(),A.data=new Bs(R,l),S.addInterval(A)),A.data.addSamplesPackedArray(d,U),XP(n,A.data)}function FGt(t,e){if(t instanceof Bs){t.removeSamples(e);return}else if(t instanceof _0){t.intervals.removeInterval(e);return}else if(t instanceof cl){let n=t.intervals;for(let i=0;i. version format.");let i=e._documentPacket;c(t.name)&&(i.name=t.name);let o=t.clock;if(c(o)){let a=i.clock;c(a)?(a.interval=f(o.interval,a.interval),a.currentTime=f(o.currentTime,a.currentTime),a.range=f(o.range,a.range),a.step=f(o.step,a.step),a.multiplier=f(o.multiplier,a.multiplier)):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function Fue(t,e,n,i){let o=e.ellipse;if(!c(o))return;let a=Qs(o.interval),s=t.ellipse;c(s)||(t.ellipse=s=new jG),Bt(Boolean,s,"show",o.show,a,i,n),Bt(Number,s,"semiMajorAxis",o.semiMajorAxis,a,i,n),Bt(Number,s,"semiMinorAxis",o.semiMinorAxis,a,i,n),Bt(Number,s,"height",o.height,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(Number,s,"extrudedHeight",o.extrudedHeight,a,i,n),Bt(Ge,s,"extrudedHeightReference",o.extrudedHeightReference,a,i,n),Bt(rV,s,"rotation",o.rotation,a,i,n),Bt(rV,s,"stRotation",o.stRotation,a,i,n),Bt(Number,s,"granularity",o.granularity,a,i,n),Bt(Boolean,s,"fill",o.fill,a,i,n),Jh(s,"material",o.material,a,i,n),Bt(Boolean,s,"outline",o.outline,a,i,n),Bt(v,s,"outlineColor",o.outlineColor,a,i,n),Bt(Number,s,"outlineWidth",o.outlineWidth,a,i,n),Bt(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,a,i,n),Bt(Vi,s,"shadows",o.shadows,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n),Bt(Ji,s,"classificationType",o.classificationType,a,i,n),Bt(Number,s,"zIndex",o.zIndex,a,i,n)}function Uue(t,e,n,i){let o=e.ellipsoid;if(!c(o))return;let a=Qs(o.interval),s=t.ellipsoid;c(s)||(t.ellipsoid=s=new qG),Bt(Boolean,s,"show",o.show,a,i,n),Bt(p,s,"radii",o.radii,a,i,n),Bt(p,s,"innerRadii",o.innerRadii,a,i,n),Bt(Number,s,"minimumClock",o.minimumClock,a,i,n),Bt(Number,s,"maximumClock",o.maximumClock,a,i,n),Bt(Number,s,"minimumCone",o.minimumCone,a,i,n),Bt(Number,s,"maximumCone",o.maximumCone,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(Boolean,s,"fill",o.fill,a,i,n),Jh(s,"material",o.material,a,i,n),Bt(Boolean,s,"outline",o.outline,a,i,n),Bt(v,s,"outlineColor",o.outlineColor,a,i,n),Bt(Number,s,"outlineWidth",o.outlineWidth,a,i,n),Bt(Number,s,"stackPartitions",o.stackPartitions,a,i,n),Bt(Number,s,"slicePartitions",o.slicePartitions,a,i,n),Bt(Number,s,"subdivisions",o.subdivisions,a,i,n),Bt(Vi,s,"shadows",o.shadows,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n)}function Gue(t,e,n,i){let o=e.label;if(!c(o))return;let a=Qs(o.interval),s=t.label;c(s)||(t.label=s=new au),Bt(Boolean,s,"show",o.show,a,i,n),Bt(String,s,"text",o.text,a,i,n),Bt(String,s,"font",o.font,a,i,n),Bt(Pa,s,"style",o.style,a,i,n),Bt(Number,s,"scale",o.scale,a,i,n),Bt(Boolean,s,"showBackground",o.showBackground,a,i,n),Bt(v,s,"backgroundColor",o.backgroundColor,a,i,n),Bt(K,s,"backgroundPadding",o.backgroundPadding,a,i,n),Bt(K,s,"pixelOffset",o.pixelOffset,a,i,n),Bt(p,s,"eyeOffset",o.eyeOffset,a,i,n),Bt(to,s,"horizontalOrigin",o.horizontalOrigin,a,i,n),Bt(hi,s,"verticalOrigin",o.verticalOrigin,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(v,s,"fillColor",o.fillColor,a,i,n),Bt(v,s,"outlineColor",o.outlineColor,a,i,n),Bt(Number,s,"outlineWidth",o.outlineWidth,a,i,n),Bt(ln,s,"translucencyByDistance",o.translucencyByDistance,a,i,n),Bt(ln,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,a,i,n),Bt(ln,s,"scaleByDistance",o.scaleByDistance,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n),Bt(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,a,i,n)}function Aue(t,e,n,i){let o=e.model;if(!c(o))return;let a=Qs(o.interval),s=t.model;c(s)||(t.model=s=new Jb),Bt(Boolean,s,"show",o.show,a,i,n),Bt(QJ.default,s,"uri",o.gltf,a,i,n),Bt(Number,s,"scale",o.scale,a,i,n),Bt(Number,s,"minimumPixelSize",o.minimumPixelSize,a,i,n),Bt(Number,s,"maximumScale",o.maximumScale,a,i,n),Bt(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,a,i,n),Bt(Boolean,s,"runAnimations",o.runAnimations,a,i,n),Bt(Boolean,s,"clampAnimations",o.clampAnimations,a,i,n),Bt(Vi,s,"shadows",o.shadows,a,i,n),Bt(Ge,s,"heightReference",o.heightReference,a,i,n),Bt(v,s,"silhouetteColor",o.silhouetteColor,a,i,n),Bt(Number,s,"silhouetteSize",o.silhouetteSize,a,i,n),Bt(v,s,"color",o.color,a,i,n),Bt(Kd,s,"colorBlendMode",o.colorBlendMode,a,i,n),Bt(Number,s,"colorBlendAmount",o.colorBlendAmount,a,i,n),Bt(Wn,s,"distanceDisplayCondition",o.distanceDisplayCondition,a,i,n);let l,r,d=o.nodeTransformations;if(c(d))if(Array.isArray(d))for(l=0,r=d.length;l-1;r--)n[r](s,t,e,i)}Eet=void 0}function Que(t){let e,n=t._documentPacket.clock;if(!c(n)){if(!c(t._clock)){let o=t._entityCollection.computeAvailability();if(!o.start.equals(be.MINIMUM_VALUE)){let a=o.start,s=o.stop,l=rt.secondsDifference(s,a),r=Math.round(l/120);return e=new Yu,e.startTime=rt.clone(a),e.stopTime=rt.clone(s),e.clockRange=pl.LOOP_STOP,e.multiplier=r,e.currentTime=rt.clone(a),e.clockStep=ya.SYSTEM_CLOCK_MULTIPLIER,t._clock=e,!0}}return!1}c(t._clock)?e=t._clock.clone():(e=new Yu,e.startTime=be.MINIMUM_VALUE.clone(),e.stopTime=be.MAXIMUM_VALUE.clone(),e.currentTime=be.MINIMUM_VALUE.clone(),e.clockRange=pl.LOOP_STOP,e.clockStep=ya.SYSTEM_CLOCK_MULTIPLIER,e.multiplier=1);let i=Qs(n.interval);return c(i)&&(e.startTime=i.start,e.stopTime=i.stop),c(n.currentTime)&&(e.currentTime=rt.fromIso8601(n.currentTime)),c(n.range)&&(e.clockRange=f(pl[n.range],pl.LOOP_STOP)),c(n.step)&&(e.clockStep=f(ya[n.step],ya.SYSTEM_CLOCK_MULTIPLIER)),c(n.multiplier)&&(e.multiplier=n.multiplier),e.equals(t._clock)?!1:(t._clock=e.clone(t._clock),!0)}function GGt(t,e,n,i){n=f(n,f.EMPTY_OBJECT);let o=e,a=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new on(s)),t._credit=s,typeof e=="string"||e instanceof te){e=te.createIfNeeded(e),o=e.fetchJson(),a=f(a,e.clone());let l=t._resourceCredits,r=e.credits;if(c(r)){let d=r.length;for(let m=0;m1;--Z){if(G=k.PI_OVER_TWO-(Z-1)*U,C=oI(-G,a,V,R,r,m,d,h,u,C),y=oI(G+Math.PI,a,V,R,r,m,d,h,u,y),e){for(S[g++]=C.x,S[g++]=C.y,S[g++]=C.z,I=2*(Z-1)+2,E=1;E1;--s){for(e[n++]=i++,e[n++]=i,e[n++]=a,o=2*s,l=0;lk.PI&&(h.north=h.north>0?k.PI_OVER_TWO-k.EPSILON7:h.north,h.south=h.south<0?k.EPSILON7-k.PI_OVER_TWO:h.south,h.east=k.PI,h.west=-k.PI),h}function uR(t){t=f(t,f.EMPTY_OBJECT);let e=t.center,n=f(t.ellipsoid,mt.WGS84),i=t.semiMajorAxis,o=t.semiMinorAxis,a=f(t.granularity,k.RADIANS_PER_DEGREE),s=f(t.vertexFormat,ee.DEFAULT),l=f(t.height,0),r=f(t.extrudedHeight,l);this._center=p.clone(e),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=mt.clone(n),this._rotation=f(t.rotation,0),this._stRotation=f(t.stRotation,0),this._height=Math.max(r,l),this._granularity=a,this._vertexFormat=ee.clone(s),this._extrudedHeight=Math.min(r,l),this._shadowVolume=f(t.shadowVolume,!1),this._workerName="createEllipseGeometry",this._offsetAttribute=t.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}uR.packedLength=p.packedLength+mt.packedLength+ee.packedLength+9;uR.pack=function(t,e,n){return n=f(n,0),p.pack(t._center,e,n),n+=p.packedLength,mt.pack(t._ellipsoid,e,n),n+=mt.packedLength,ee.pack(t._vertexFormat,e,n),n+=ee.packedLength,e[n++]=t._semiMajorAxis,e[n++]=t._semiMinorAxis,e[n++]=t._rotation,e[n++]=t._stRotation,e[n++]=t._height,e[n++]=t._granularity,e[n++]=t._extrudedHeight,e[n++]=t._shadowVolume?1:0,e[n]=f(t._offsetAttribute,-1),e};var _Gt=new p,DGt=new mt,OGt=new ee,VR={center:_Gt,ellipsoid:DGt,vertexFormat:OGt,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};uR.unpack=function(t,e,n){e=f(e,0);let i=p.unpack(t,e,_Gt);e+=p.packedLength;let o=mt.unpack(t,e,DGt);e+=mt.packedLength;let a=ee.unpack(t,e,OGt);e+=ee.packedLength;let s=t[e++],l=t[e++],r=t[e++],d=t[e++],m=t[e++],h=t[e++],u=t[e++],R=t[e++]===1,V=t[e];return c(n)?(n._center=p.clone(i,n._center),n._ellipsoid=mt.clone(o,n._ellipsoid),n._vertexFormat=ee.clone(a,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=l,n._rotation=r,n._stRotation=d,n._height=m,n._granularity=h,n._extrudedHeight=u,n._shadowVolume=R,n._offsetAttribute=V===-1?void 0:V,n):(VR.height=m,VR.extrudedHeight=u,VR.granularity=h,VR.stRotation=d,VR.rotation=r,VR.semiMajorAxis=s,VR.semiMinorAxis=l,VR.shadowVolume=R,VR.offsetAttribute=V===-1?void 0:V,new uR(VR))};uR.computeRectangle=function(t,e){t=f(t,f.EMPTY_OBJECT);let n=t.center,i=f(t.ellipsoid,mt.WGS84),o=t.semiMajorAxis,a=t.semiMinorAxis,s=f(t.granularity,k.RADIANS_PER_DEGREE),l=f(t.rotation,0);return MGt(n,o,a,l,s,i,e)};uR.createGeometry=function(t){if(t._semiMajorAxis<=0||t._semiMinorAxis<=0)return;let e=t._height,n=t._extrudedHeight,i=!k.equalsEpsilon(e,n,0,k.EPSILON2);t._center=t._ellipsoid.scaleToGeodeticSurface(t._center,t._center);let o={center:t._center,semiMajorAxis:t._semiMajorAxis,semiMinorAxis:t._semiMinorAxis,ellipsoid:t._ellipsoid,rotation:t._rotation,height:e,granularity:t._granularity,vertexFormat:t._vertexFormat,stRotation:t._stRotation},a;if(i)o.extrudedHeight=n,o.shadowVolume=t._shadowVolume,o.offsetAttribute=t._offsetAttribute,a=Oue(o);else if(a=Mue(o),c(t._offsetAttribute)){let s=a.attributes.position.values.length,l=t._offsetAttribute===zn.NONE?0:1,r=new Uint8Array(s/3).fill(l);a.attributes.applyOffset=new jt({componentDatatype:it.UNSIGNED_BYTE,componentsPerAttribute:1,values:r})}return new _e({attributes:a.attributes,indices:a.indices,primitiveType:le.TRIANGLES,boundingSphere:a.boundingSphere,offsetAttribute:t._offsetAttribute})};uR.createShadowVolume=function(t,e,n){let i=t._granularity,o=t._ellipsoid,a=e(i,o),s=n(i,o);return new uR({center:t._center,semiMajorAxis:t._semiMajorAxis,semiMinorAxis:t._semiMinorAxis,ellipsoid:o,rotation:t._rotation,stRotation:t._stRotation,granularity:i,extrudedHeight:a,height:s,vertexFormat:ee.POSITION_ONLY,shadowVolume:!0})};function Hue(t){let e=-t._stRotation;if(e===0)return[0,0,0,1,1,0];let i=Om.computeEllipsePositions({center:t._center,semiMajorAxis:t._semiMajorAxis,semiMinorAxis:t._semiMinorAxis,rotation:t._rotation,granularity:t._granularity},!1,!0).outerPositions,o=i.length/3,a=new Array(o);for(let r=0;r0){let V=Math.min(d,r);R=Math.round(r/V);let F=Math.min(R*d,r);for(u=0;u0&&(g=!0,G+=r-1),s0&&m!==F-1&&h!==0&&h!==U-1&&(M[$]=!0),$++;u=0;let dt,q;for(m=1;m=zt&&m1||C>1))for(let E=0;E0;m-=d)kt=m*3,nt=uI(nt,st,kt,u,U),st+=6,o.st&&(q=ZI(q,Et,m*2,C),Et+=4),n&&(Qt+=3,$[Qt++]=y[kt],$[Qt++]=y[kt+1],$[Qt++]=y[kt+2]),at&&(dt[Wt++]=1,Wt+=1);if(I){let zt=Nt;for(kt=zt*3,m=0;m<2;m++)nt=uI(nt,st,kt,u,U),st+=6,o.st&&(q=ZI(q,Et,zt*2,C),Et+=4),n&&(Qt+=3,$[Qt++]=y[kt],$[Qt++]=y[kt+1],$[Qt++]=y[kt+2]),at&&(dt[Wt++]=1,Wt+=1)}else for(m=d-1;m>=0;m--)kt=m*3,nt=uI(nt,st,kt,u,U),st+=6,o.st&&(q=ZI(q,Et,m*2,C),Et+=4),n&&(Qt+=3,$[Qt++]=y[kt],$[Qt++]=y[kt+1],$[Qt++]=y[kt+2]),at&&(dt[Wt++]=1,Wt+=1);let Mt=mRe(nt,o,l);o.st&&(Mt.attributes.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:q})),n&&(Mt.attributes.extrudeDirection=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:$})),Q&&(Mt.attributes.applyOffset=new jt({componentDatatype:it.UNSIGNED_BYTE,componentsPerAttribute:1,values:dt}));let qt=re.createTypedArray(H,P*6),ie,oe,He,rn;R=nt.length/3;let de=0;for(m=0;m0)for(s=new Array(o),i=0;i0)for(l=new Array(o),i=0;i0)for(s=new Array(o),i=0;i0)for(l=new Array(o),i=0;i{i.raiseEvent(l)}),n[a]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=t.definitionChanged.addEventListener(TS.prototype._onEntityPropertyChanged,this)}TS.prototype._onEntityPropertyChanged=function(t,e,n,i){let o=this.updaters;for(let a=0;a0){c(i)&&(c(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let r;c(this.depthFailAppearanceType)&&(c(this.depthFailMaterialProperty)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial)),r=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Wi({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:r,shadows:this.shadows}),o.add(i),e=!1}else{c(i)&&(o.remove(i),i=void 0);let r=this.oldPrimitive;c(r)&&(o.remove(r),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(c(i)&&i.ready){i.show=!0,c(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),c(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Cn)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,l=s.length,r=this.waitingOnCreate;for(a=0;a=0;i--){let o=t[i];if(o.remove(e))return o.updaters.length===0&&(t.splice(i,1),o.destroy()),!0}return!1}WI.prototype.remove=function(t){vAt(this._solidItems,t)||vAt(this._translucentItems,t)};function KAt(t,e,n){let i=!1,o=e.length;for(let a=0;a0)for(a=0;a=0;a--){let s=e[a];if(s.invalidated){e.splice(a,1);let l=s.updaters.values,r=l.length;for(let d=0;d0){c(n)&&(c(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=Ua.getValue(t,this.materialProperty,this.material);let l;c(this.depthFailMaterialProperty)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial),l=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Wi({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:l,shadows:this.shadows}),i.add(n),e=!1}else{c(n)&&(i.remove(n),n=void 0);let l=this.oldPrimitive;c(l)&&(i.remove(l),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(c(n)&&n.ready){n.show=!0,c(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=Ua.getValue(t,this.materialProperty,this.material),this.primitive.appearance.material=this.material,c(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Cn)&&(this.depthFailMaterial=Ua.getValue(t,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,l=s.length;for(a=0;a=0;i--){let o=e[i];if(o.remove(t)){o.updaters.length===0&&(e.splice(i,1),o.destroy());break}}};fI.prototype.update=function(t){let e,n=this._items,i=n.length;for(e=i-1;e>=0;e--){let a=n[e];if(a.invalidated){n.splice(e,1);let s=a.updaters.values,l=s.length;for(let r=0;r0)c(i)&&(c(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Nc({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),e=!1;else{c(i)&&(o.remove(i),i=void 0);let r=this.oldPrimitive;c(r)&&(o.remove(r),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(c(i)&&i.ready){i.show=!0,c(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,l=s.length,r=this.waitingOnCreate;for(a=0;a=0;--e){let s=o[e];s.isDirty&&(i=o[e].update(t)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(e,1)}return i};FI.prototype.getBoundingSphere=function(t,e){let n=this._batches,i=n.length;for(let o=0;o0)c(n)&&(c(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=Ua.getValue(t,this.materialProperty,this.material),n=new Nc({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),e=!1;else{c(n)&&(i.remove(n),n=void 0);let l=this.oldPrimitive;c(l)&&(i.remove(l),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(c(n)&&n.ready){n.show=!0,c(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=Ua.getValue(t,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,l=s.length;for(a=0;a=0;i--){let o=e[i];if(o.remove(t)){o.updaters.length===0&&(e.splice(i,1),o.destroy());break}}};GI.prototype.update=function(t){let e,n=this._items,i=n.length;for(e=i-1;e>=0;e--){let a=n[e];if(a.invalidated){n.splice(e,1);let s=a.updaters.values,l=s.length;for(let r=0;r0)c(i)&&(c(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Wi({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new jn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),e=!1;else{c(i)&&(o.remove(i),i=void 0);let r=this.oldPrimitive;c(r)&&(o.remove(r),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(c(i)&&i.ready){i.show=!0,c(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,l=s.length,r=this.waitingOnCreate;for(a=0;a0)for(h=!0,e=0;e0)for(h=!0,e=0;e-1;l--)r=s[l],d=r.id,m=this._updaterSets.get(d),m.entity===r?m.forEach(function(F){h._removeUpdater(F),h._insertUpdaterIntoBatch(t,F)}):(o.push(r),n.push(r));for(l=o.length-1;l>-1;l--)r=o[l],d=r.id,m=this._updaterSets.get(d),m.forEach(this._removeUpdater.bind(this)),m.destroy(),this._updaterSets.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(l=n.length-1;l>-1;l--)r=n[l],d=r.id,m=new gS(r,this._scene),this._updaterSets.set(d,m),m.forEach(function(F){h._insertUpdaterIntoBatch(t,F)}),this._subscriptions.set(d,m.geometryChanged.addEventListener(Hm._onGeometryChanged,this));e.removeAll(),i.removeAll(),a.removeAll();let u=!0,R=this._batches,V=R.length;for(l=0;l-1;s--)r=n[s],l=r.id,i.remove(l)||(o.set(l,r),a.remove(l));for(s=e.length-1;s>-1;s--)r=e[s],l=r.id,o.remove(l)?a.set(l,r):i.set(l,r)};var dL=Hm;var gCi=b(W(),1);var lbe=1,rbe="30px sans-serif",dbe=Pa.FILL,cbe=v.WHITE,mbe=v.BLACK,hbe=1,pbe=!1,Vbe=new v(.165,.165,.165,.8),ube=new K(7,5),Zbe=K.ZERO,Rbe=p.ZERO,bbe=Ge.NONE,Wbe=to.CENTER,fbe=hi.CENTER,Fbe=new p,Ube=new v,Gbe=new v,Abe=new v,Sbe=new K,Tbe=new p,gbe=new K,Ebe=new ln,Cbe=new ln,Ibe=new ln,Nbe=new Wn;function tSt(t){this.entity=t,this.label=void 0,this.index=void 0}function NF(t,e){e.collectionChanged.addEventListener(NF.prototype._onCollectionChanged,this),this._cluster=t,this._entityCollection=e,this._items=new qe,this._toRemove=[],this._onCollectionChanged(e,e.values,[],[])}NF.prototype.update=function(t){let e=this._items.values,n=this._cluster;for(let i=0,o=e.length;i-1;o--)a=e[o],c(a._label)&&c(a._position)&&s.set(a.id,new tSt(a));for(o=i.length-1;o>-1;o--)a=i[o],c(a._label)&&c(a._position)?s.contains(a.id)||s.set(a.id,new tSt(a)):(vet(s.get(a.id),a,l),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],vet(s.get(a.id),a,l),s.remove(a.id)};function vet(t,e,n){c(t)&&(t.label=void 0,n.removeLabel(e))}var cL=NF;var KCi=b(W(),1);var ybe=1,Bbe=0,Qbe=!0,kbe=!0,Ybe=Vi.ENABLED,xbe=Ge.NONE,Xbe=v.RED,Jbe=0,Lbe=v.WHITE,Mbe=Kd.HIGHLIGHT,_be=.5,Dbe=new K(1,1),Obe=new L,Hbe=new L,eSt=new v,nSt=new Array(4),wbe=new p;function yF(t,e){e.collectionChanged.addEventListener(yF.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._modelHash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])}async function Pbe(t,e,n,i){let o=t._primitives,a=t._modelHash;try{let s=await Au.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:t._scene});if(t.isDestroyed()||!c(a[e.id]))return;s.id=e,o.add(s),a[e.id].modelPrimitive=s,s.errorEvent.addEventListener(l=>{c(a[e.id])&&(console.log(l),l.name!=="TextureError"&&s.incrementallyLoadTextures&&(a[e.id].loadFailed=!0))})}catch(s){if(t.isDestroyed()||!c(a[e.id]))return;console.log(s),a[e.id].loadFailed=!0}}yF.prototype.update=function(t){let e=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)Ket(this,t[i],e,n);return At(this)};var iv=new p,vbe=new gt;yF.prototype.getBoundingSphere=function(t,e){let n=this._modelHash[t.id];if(!c(n))return ve.FAILED;if(n.loadFailed)return ve.FAILED;let i=n.modelPrimitive;if(!c(i)||!i.show)return ve.PENDING;if(!i.ready||!n.modelUpdated)return ve.PENDING;let o=this._scene,a=o.globe,s=f(a?.ellipsoid,mt.WGS84);if(i.heightReference!==Ge.NONE){let r=i.modelMatrix;iv.x=r[12],iv.y=r[13],iv.z=r[14];let d=s.cartesianToCartographic(iv,vbe),m=o.getHeight(d,i.heightReference);return c(m)&&(Np(i.heightReference)?d.height=m:d.height+=m),Ft.clone(i.boundingSphere,e),e.center=s.cartographicToCartesian(d),ve.DONE}return Ft.clone(i.boundingSphere,e),ve.DONE};yF.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._modelHash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._model)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._model)&&c(a._position)?(Kbe(a,l),s.set(a.id,a)):(Ket(this,a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],Ket(this,a,l,r),s.remove(a.id)};function Ket(t,e,n,i){let o=n[e.id];c(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[e.id])}function Kbe(t,e){let n=e[t.id];c(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var mL=yF;var gIi=b(W(),1);var nIi=b(W(),1);function BF(t){this._definitionChanged=new It,this._value=void 0,this._removeSubscription=void 0,this.setValue(t)}Object.defineProperties(BF.prototype,{isConstant:{get:function(){return et.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return c(this._value)?this._value.referenceFrame:ri.FIXED}}});BF.prototype.getValue=function(t,e){return this.getValueInReferenceFrame(t,ri.FIXED,e)};BF.prototype.setValue=function(t){this._value!==t&&(this._value=t,c(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),c(t)&&(this._removeSubscription=t.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};BF.prototype.getValueInReferenceFrame=function(t,e,n){if(c(this._value))return n=this._value.getValueInReferenceFrame(t,e,n),c(n)?mt.WGS84.scaleToGeodeticSurface(n,n):void 0};BF.prototype.equals=function(t){return this===t||t instanceof BF&&this._value===t._value};BF.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var vc=BF;var zbe=60,jbe=1,sSt=new ai,zet=new ai,jet=new ai;function iSt(t){this.entity=t,this.polyline=void 0,this.index=void 0,this.updater=void 0}function oSt(t,e){let n=Math.sin(t)*Math.sqrt(1-Math.pow(e,2))/(1+e*Math.cos(t)),i=(e+Math.cos(t))/(1+e*Math.cos(t)),o=Math.atan2(n,i),a=o-e*Math.sin(o);return a<0&&(a=a+2*Math.PI),a}function qbe(t){t._timeSegments={segments:[],globalIndex:null,splitInterval:null,settings:null}}function lSt(t){t._timeSegments.segments.length=0}function $be(t,e,n,i,o,a,s,l,r){let d=l,m;m=t.getValueInReferenceFrame(e,a,r[d]),c(m)&&(r[d++]=m);let h=!c(o)||rt.lessThanOrEquals(o,e)||rt.greaterThanOrEquals(o,n),u=!1;if(s.method){let C=rt.secondsDifference(n,e);if(i.length0&&!G){let C=i[R+1],y=rt.secondsDifference(C,F);G=y>s,G&&(A=Math.ceil(y/s),S=0,g=y/Math.max(A,2),A=Math.max(A-1,1))}if(G&&S1&&(F=1);let U;if(r._timeSegments.splitInterval)U=r._timeSegments.splitInterval;else{let q;for(q=0;q=I)lSt(r);else if(_>0)r._timeSegments.segments.splice(0,_);else if(_<0){r._timeSegments.segments.splice(_,-_);for(let q=0;qz&&(d=av(t,nt,$,i,o,m,d-1,l,r,h),dt=!0),l.splice(d-1,r._timeSegments.segments[at].length,...r._timeSegments.segments[at]),d+=r._timeSegments.segments[at].length-1}return P.length&&(l.splice(d-1,P.length,...P),d+=P.length-1),t._property._refFrame!==o&&(t._property._refFrame=o),l.length=d,u&&(t._property._samples=l.length),l.length}function av(t,e,n,i,o,a,s,l,r,d){let m=a.method==="trueAnomaly",h=s;return m&&m!=="constant condition"?h=n0e(t,e,n,i,o,a,s,l,d):h=t0e(t,e,n,i,o,a,s,l,d),h}var Dh=new p,TI=new p,hL=new p,sv=new p,IS=new p;function n0e(t,e,n,i,o,a,s,l,r){let d=rt.lessThanOrEquals(n,e),m,h=s,u=e,R=a.samplesPerPeriod||360,V=a.period||rt.secondsDifference(n,e),F=a.extraEpochSamples||0,U=a.resolutionAtEpoch||1,G=a.extraSamples||3,A=rt.addSeconds(i,-(Math.floor(F/2)*U),new rt),S=!1,g=rt.clone(e),C=t._property._samples||void 0,y=null;for(;!d;){m=t.getValueInReferenceFrame(u,o,Dh,!0),rt.greaterThanOrEquals(u,g)&&(l[h++]=p.clone(m)),IS=t.getValueInReferenceFrame(u,ri.TEME),sv=t._velocity.getValueInReferenceFrame(u,ri.TEME),Dh=p.cross(IS,sv,Dh),TI=p.cross(sv,Dh,TI),Dh=p.divideByScalar(TI,k.GRAVITATIONALPARAMETER,Dh),TI=p.divideByScalar(IS,p.magnitude(IS),TI),hL=p.subtract(Dh,TI,hL);let Q=p.magnitude(hL),J=p.dot(hL,IS)/(p.magnitude(hL)*p.magnitude(IS)),M=p.dot(IS,sv),Z=Math.acos(J);M<0&&(Z=2*Math.PI-Z);let E=2*Math.PI/R;y!==null&&(E=2*E-Math.abs(Z-y));let I=Z+E;I>2*Math.PI&&(I-=2*Math.PI),y=Z;let B=oSt(Z,Q),X=oSt(I,Q),_=Math.abs(X-B);_>Math.PI&&(_=2*Math.PI-_);let P=V*(_/(2*Math.PI));if(u=rt.addSeconds(u,P,new rt),!S&&rt.greaterThanOrEquals(u,A)){for(let w=0;w0){let V=u.pop();r=this._polylineCollection.get(V),e.index=V}else e.index=this._polylineCollection.length,r=this._polylineCollection.add();r.id=n,e.polyline=r,qbe(e.polyline)}let m=et.getValueOrDefault(i._resolution,t,zbe);r.show=!0;let h=[];if(c(n._localReferenceEntity)){let u=l0e(a,s,m),R=n._localReferenceEntity;for(let V=0;V=1/this._maxFPS))return!0;this._lastUpdate=i}let e=this._updaters;for(let i in e)e.hasOwnProperty(i)&&e[i].update(t);let n=this._items.values;if(!n.length&&c(this._updaters)&&Object.values(this._updaters).length){for(let i in this._updaters)this._updaters[i]&&this._scene.primitives.removeAndDestroy(this._updaters[i]._polylineCollection);this._updaters={}}for(let i=0,o=n.length;i-1;o--)a=e[o],c(a._path)&&c(a._position)&&l.set(a.id,new iSt(a));for(o=i.length-1;o>-1;o--)a=i[o],c(a._path)&&c(a._position)?l.contains(a.id)||l.set(a.id,new iSt(a)):(s=l.get(a.id),c(s)&&(c(s.updater)&&s.updater.removeObject(s),l.remove(a.id)));for(o=n.length-1;o>-1;o--)a=n[o],s=l.get(a.id),c(s)&&(c(s.updater)&&s.updater.removeObject(s),l.remove(a.id))};QF._subSample=dSt;var VL=QF;var i1i=b(W(),1);var MIi=b(W(),1);var kIi=b(W(),1);var NIi=b(W(),1),d0e={};var r0e=(()=>{var t=d0e.url;return function(e={}){var n=e,i,o;n.ready=new Promise((x,D)=>{i=x,o=D}),["_getCoveragePositions","_inflateEllipsoid","_malloc","_free","_memory","_fflush","__embind_initialize_bindings","___indirect_function_table","___start_em_asm","___stop_em_asm","onRuntimeInitialized"].forEach(x=>{Object.getOwnPropertyDescriptor(n.ready,x)||Object.defineProperty(n.ready,x,{get:()=>We("You are getting "+x+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>We("You are setting "+x+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})}),globalThis.__dirname=globalThis.__dirname||"";var a=Object.assign({},n),s=[],l="./this.program",r=(x,D)=>{throw D},d=!0,m=!1,h=!1,u=!1;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var R="";function V(x){return n.locateFile?n.locateFile(x,R):R+x}var F,U,G,A;if(u){if(typeof process=="object"&&typeof Og=="function"||typeof window=="object"||typeof importScripts=="function")throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");typeof read<"u"&&(F=read),G=x=>{if(typeof readbuffer=="function")return new Uint8Array(readbuffer(x));let D=read(x,"binary");return Z(typeof D=="object"),D},U=(x,D,j)=>{setTimeout(()=>D(G(x)))},typeof clearTimeout>"u"&&(globalThis.clearTimeout=x=>{}),typeof setTimeout>"u"&&(globalThis.setTimeout=x=>typeof x=="function"?x():We()),typeof scriptArgs<"u"?s=scriptArgs:typeof arguments<"u"&&(s=arguments),typeof quit=="function"&&(r=(x,D)=>{throw setTimeout(()=>{if(!(D instanceof _a)){let j=D;D&&typeof D=="object"&&D.stack&&(j=[D,D.stack]),g(`exiting due to exception: ${j}`)}quit(x)}),D}),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)}else if(d||m){if(m?R=self.location.href:typeof document<"u"&&document.currentScript&&(R=document.currentScript.src),t&&(R=t),R.indexOf("blob:")!==0?R=R.substr(0,R.replace(/[?#].*/,"").lastIndexOf("/")+1):R="",!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");F=x=>{var D=new XMLHttpRequest;return D.open("GET",x,!1),D.send(null),D.responseText},m&&(G=x=>{var D=new XMLHttpRequest;return D.open("GET",x,!1),D.responseType="arraybuffer",D.send(null),new Uint8Array(D.response)}),U=(x,D,j)=>{var lt=new XMLHttpRequest;lt.open("GET",x,!0),lt.responseType="arraybuffer",lt.onload=()=>{if(lt.status==200||lt.status==0&<.response){D(lt.response);return}j()},lt.onerror=j,lt.send(null)},A=x=>document.title=x}else throw new Error("environment detection error");var S=n.print||console.log.bind(console),g=n.printErr||console.error.bind(console);Object.assign(n,a),a=null,n8(),n.arguments&&(s=n.arguments),fe("arguments","arguments_"),n.thisProgram&&(l=n.thisProgram),fe("thisProgram","thisProgram"),n.quit&&(r=n.quit),fe("quit","quit_"),Z(typeof n.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),Z(typeof n.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),Z(typeof n.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),Z(typeof n.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),Z(typeof n.read>"u","Module.read option was removed (modify read_ in JS)"),Z(typeof n.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),Z(typeof n.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),Z(typeof n.setWindowTitle>"u","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),Z(typeof n.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),fe("asm","wasmExports"),fe("read","read_"),fe("readAsync","readAsync"),fe("readBinary","readBinary"),fe("setWindowTitle","setWindowTitle"),Z(!m,"worker environment detected but not enabled at build time. Add 'worker' to `-sENVIRONMENT` to enable."),Z(!h,"node environment detected but not enabled at build time. Add 'node' to `-sENVIRONMENT` to enable."),Z(!u,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.");var C;n.wasmBinary&&(C=n.wasmBinary),fe("wasmBinary","wasmBinary");var y=n.noExitRuntime||!0;fe("noExitRuntime","noExitRuntime"),typeof WebAssembly!="object"&&We("no native wasm support detected");var Y,Q,J=!1,M;function Z(x,D){x||We("Assertion failed"+(D?": "+D:""))}var E,I,B,X,_,P,w,z;function H(){var x=Y.buffer;n.HEAP8=E=new Int8Array(x),n.HEAP16=B=new Int16Array(x),n.HEAP32=_=new Int32Array(x),n.HEAPU8=I=new Uint8Array(x),n.HEAPU16=X=new Uint16Array(x),n.HEAPU32=P=new Uint32Array(x),n.HEAPF32=w=new Float32Array(x),n.HEAPF64=z=new Float64Array(x)}Z(!n.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),Z(typeof Int32Array<"u"&&typeof Float64Array<"u"&&Int32Array.prototype.subarray!=null&&Int32Array.prototype.set!=null,"JS engine does not provide full typed array support"),Z(!n.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),Z(!n.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");var nt;function $(){var x=qW();Z((x&3)==0),x==0&&(x+=4),P[x>>2]=34821223,P[x+4>>2]=2310721022,P[0]=1668509029}function dt(){if(!J){var x=qW();x==0&&(x+=4);var D=P[x>>2],j=P[x+4>>2];(D!=34821223||j!=2310721022)&&We(`Stack overflow! Stack cookie has been overwritten at ${na(x)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${na(j)} ${na(D)}`),P[0]!=1668509029&&We("Runtime error: The application has corrupted its heap memory area (address zero)!")}}(function(){var x=new Int16Array(1),D=new Int8Array(x.buffer);if(x[0]=25459,D[0]!==115||D[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"})();var q=[],at=[],st=[],Et=!1,Qt=0;function Wt(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Mt(n.preRun.shift());Rl(q)}function Nt(){Z(!Et),Et=!0,dt(),!n.noFSInit&&!ht.init.initialized&&ht.init(),ht.ignorePermissions=!1,Ai.init(),Rl(at)}function kt(){if(dt(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)ie(n.postRun.shift());Rl(st)}function Mt(x){q.unshift(x)}function qt(x){at.unshift(x)}function ie(x){st.unshift(x)}Z(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),Z(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),Z(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),Z(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var oe=0,He=null,rn=null,de={};function zt(x){for(var D=x;;){if(!de[x])return x;x=D+Math.random()}}function ke(x){oe++,n.monitorRunDependencies&&n.monitorRunDependencies(oe),x?(Z(!de[x]),de[x]=1,He===null&&typeof setInterval<"u"&&(He=setInterval(()=>{if(J){clearInterval(He),He=null;return}var D=!1;for(var j in de)D||(D=!0,g("still waiting on run dependencies:")),g("dependency: "+j);D&&g("(end of list)")},1e4))):g("warning: run dependency added without ID")}function Ve(x){if(oe--,n.monitorRunDependencies&&n.monitorRunDependencies(oe),x?(Z(de[x]),delete de[x]):g("warning: run dependency removed without ID"),oe==0&&(He!==null&&(clearInterval(He),He=null),rn)){var D=rn;rn=null,D()}}function We(x){n.onAbort&&n.onAbort(x),x="Aborted("+x+")",g(x),J=!0,M=1;var D=new WebAssembly.RuntimeError(x);throw o(D),D}var Vn="data:application/octet-stream;base64,";function Ct(x){return x.startsWith(Vn)}function _t(x){return x.startsWith("file://")}function Je(x){return function(){Z(Et,`native function \`${x}\` called before runtime initialization`);var D=Q[x];return Z(D,`exported native function \`${x}\` not found`),D.apply(null,arguments)}}var xe;xe="data:application/octet-stream;base64,AGFzbQEAAAABtgRHYAF/AX9gAX8AYAJ/fwBgAn9/AX9gA39/fwF/YAZ/f39/f38Bf2AEf39/fwF/YAV/f39/fwF/YAN/f38AYAAAYAR/f39/AGAIf39/f39/f38Bf2AGf39/f39/AGAFf39/f38AYAABf2AHf39/f39/fwF/YAd/f39/f39/AGAFf35+fn4AYAF8AXxgBH98f38Bf2AFf39/f34Bf2ACfHwBfGADf35/AX5gC39/f39/f39/f39/AX9gCn9/f39/f39/f38AYAR/fn5/AGAFf39/f3wBf2ACf3wBf2AEf398fwF/YAZ/f39/fn4Bf2AHf39/f39+fgF/YAN/f38BfGACfH8BfGABfABgBX9/fH9/AGADfHx/AXxgBn98f39/fwF/YAV/f35/fwBgA39/fwF+YAR/f39/AX5gDH9/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAl/f39/f39/f38AYAABfGAEfn5+fgF/YAN+fn4Bf2ABfgF/YAJ+fgF8YAJ/fABgAn5+AX1gAn9/AXxgA39/fABgBH98f38AYAR/f3x8AGADf398AX9gAX4BfmAFf39/fH8Bf2AGf39/fH9/AGACfH8Bf2ACfn8Bf2ACf34AYAJ/fwF+YAN/f34AYAJ/fgF/YAR/f39+AX5gA39/fwF9YAl/f39/f39/f38Bf2AKf39/f39/f39/fwF/YAR/f35+AAKxCCUDZW52HGVtc2NyaXB0ZW5fcnVuX3NjcmlwdF9zdHJpbmcAAANlbnYLX19jeGFfdGhyb3cACANlbnYNX2VtdmFsX2RlY3JlZgABA2VudhZfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzACsDZW52Il9lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IADANlbnYfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbgAsA2Vudh9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX3Byb3BlcnR5ABgDZW52E19lbXZhbF9nZXRfcHJvcGVydHkAAwNlbnYSX2VtdmFsX25ld19jc3RyaW5nAAADZW52CV9lbXZhbF9hcwAfA2VudhZfZW12YWxfcnVuX2Rlc3RydWN0b3JzAAEDZW52GV9lbWJpbmRfcmVnaXN0ZXJfZnVuY3Rpb24AEANlbnYYZW1zY3JpcHRlbl9hc21fY29uc3RfaW50AAQDZW52FV9lbWJpbmRfcmVnaXN0ZXJfdm9pZAACA2VudhVfZW1iaW5kX3JlZ2lzdGVyX2Jvb2wADQNlbnYbX2VtYmluZF9yZWdpc3Rlcl9zdGRfc3RyaW5nAAIDZW52HF9lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcACANlbnYWX2VtYmluZF9yZWdpc3Rlcl9lbXZhbAACA2VudhhfZW1iaW5kX3JlZ2lzdGVyX2ludGVnZXIADQNlbnYWX2VtYmluZF9yZWdpc3Rlcl9mbG9hdAAIA2VudhxfZW1iaW5kX3JlZ2lzdGVyX21lbW9yeV92aWV3AAgDZW52E2Vtc2NyaXB0ZW5fZGF0ZV9ub3cALQNlbnYgX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWMADhZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxB2ZkX3JlYWQABhZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGZkX3dyaXRlAAYWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQhmZF9jbG9zZQAAA2VudhVlbXNjcmlwdGVuX21lbWNweV9iaWcACANlbnYJX3R6c2V0X2pzAAgDZW52FmVtc2NyaXB0ZW5fcmVzaXplX2hlYXAAAANlbnYFYWJvcnQACRZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxEWVudmlyb25fc2l6ZXNfZ2V0AAMWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQtlbnZpcm9uX2dldAADA2VudgpzdHJmdGltZV9sAAcDZW52F19lbWJpbmRfcmVnaXN0ZXJfYmlnaW50ABAWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQdmZF9zZWVrAAcDZW52Cl9ta3RpbWVfanMAAANlbnYKX2dtdGltZV9qcwAIA84EzAQJDgABBAAEBAYJACARAAABAwIuLxkRGRERAAEJDg4ODgEAEREVMAQVMQIyAjMBAgAJAQkBAAACCQAAAQAOAwQ0NQMIAQQSEhU2AhMCIQMBATcDBQIBCQEDAAMICAABCQEOAwgbOAACAwgTOQIEBAEJDgMDAAIBAQICCQAAAgECGxw6HAABAAk7IgkSEhIhCQAJEgAEBBYACQQAFgMjPCAHDwgACj0NAwQkAggAAD4ABhEZCj9ABgQEAwlBAAABAAECBCUKBAQAAAMEBAoKAwABAAEAAQICAAMAAAAAAQABAAADAAEEBAAEAAEBAAMAAAACAgQCAggEAAMBCAIIAgIAAgAEAwIAAwADAgQDAgADAAMDAAMBBkIKBwoEBwoEAgAEBQAPAAABBQAIFwYKBA4mAgUnBQYmBQYFJwUNKEMFHwUKBQQDBQAPAAUDCBcEBQUFBQUNKAUFBQcAAAcKBwQQAhQHFBoEBhAdBwcABxAFBBQHFBoQHQcLAAUFBQwFDAUNBwsLBQUFDAUMBQ0HCw8MDwACAgIAAgIPFwIICAAAAwMPDQ8XAgIAAgADDw0eGCkEBR4YKQQFBAwMAgEIAg4ICAEBAAEAAAAAAgEAAQABAAEAAQIBAQAAAAABAAEAAQABAQIBAQEAAAACAgIBAAAAAgICCwsHBwALCwcBAAsECwcHAAAHAAsHBAYGBgMEAwQGBAcBAAMEAwQGBAcBAAEqKgMDAwMDAQkBCQQEBAMMCg0KCAoNCgQDDRAMDQwMAAAAAAEAIxUHEA9ERUYEBwFwAc4DzgMFBwEBgAyAgAIGFwR/AUGAuRgLfwFBAAt/AUEAC38BQQALB50EGwZtZW1vcnkCABFfX3dhc21fY2FsbF9jdG9ycwAlBm1hbGxvYwAzBGZyZWUANBBpbmZsYXRlRWxsaXBzb2lkALIBFGdldENvdmVyYWdlUG9zaXRpb25zAK0BBmZmbHVzaAC3AQ1fX2dldFR5cGVOYW1lALQBG19lbWJpbmRfaW5pdGlhbGl6ZV9iaW5kaW5ncwC1ARBfX2Vycm5vX2xvY2F0aW9uACYZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC3NldFRlbXBSZXQwAD8VZW1zY3JpcHRlbl9zdGFja19pbml0AEAZZW1zY3JpcHRlbl9zdGFja19nZXRfZnJlZQBBGWVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2Jhc2UAQhhlbXNjcmlwdGVuX3N0YWNrX2dldF9lbmQAQwlzdGFja1NhdmUARAxzdGFja1Jlc3RvcmUARQpzdGFja0FsbG9jAEYcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudABEIl9fY3hhX2luY3JlbWVudF9leGNlcHRpb25fcmVmY291bnQAzQQVX19jeGFfaXNfcG9pbnRlcl90eXBlAOMEDGR5bkNhbGxfamlqaQDrBA5keW5DYWxsX3ZpaWppaQDsBA5keW5DYWxsX2lpaWlpagDtBA9keW5DYWxsX2lpaWlpamoA7gQQZHluQ2FsbF9paWlpaWlqagDvBAnrBgEAQQELzQNSWlxdXl5fYGFiY2RlZmd6XXt8fX5/gwFdhAFghQGGAYcBiAGJAYoBiwGMAY0BVpMBlAFde2CVAZYBXV5ee5cBmAGWAZkBmgGeAV1eXnt8nwGgAYwBoQGNAaIBowGkAYkBpQGmAaUBpwGoAYwBqwGsAa0BXrMB3AHNAc4B2wGeAjTLAij6A/kD9wPvA/ED8wP1A4kEiASGBP8DgQSDBIUEb44BXpsBnQGbAZwBqgGpAYEBggG7AbkBugG+Ab8BuAHjAeQB5QHmAecB6AG+Ab4B6QHrAewB7QHuAe0BhwKIAuUB5gHnAegBvgG+AYkC6wGLAu0BjALtAeQBsQKyArQCtQL1AfYB9wH4AeAB4gHhAeIB5AGuAqYCrwKwAoACgQKCAoMCiAKpAqoCrAKtAvUB9gH3AfgB4AHiAYgCpQKmAqcCqAKAAoECggKDAsIEwQTmA7kEuAS6BLsEvAS9BPIBvgS/BMAEoQSgBKIEpASmBKcEvgGpBKoEkgSRBJMElASVBJYElwSLBIoEjASNBI4EjwSQBF6bAZsBrQSuBK8EsASxBLIEswS0BPIBtQS2BLcEmwGrBKsEmgQnJ6wEJ5sBnQSeBJoEvgG+AZ8EnASbAZ0EngSaBL4BvgGfBJwEmwGYBJkEmgS+Ab4BmwScBJsBmASZBJoEvgG+AZsEnARemwG9Ar4CvwJemwHAAsECxQKbAcYCzALWAtgC2wLbAt0C3wLjAuUC5wKbAeoC7gLzAvQC9QL1AvYC9wL6AvsC/AKbAf0CgAOGA4cDiAOJA40DjgObAY8DkQOVA5YDlwOYA5oDmwNemwGdA54DnwOgA6IDpAOnA/sD/AP9A/4DgASCBIQEXpsBnQOpA6oDqwOtA68DsgPqA+sD7APtA/AD8gP0A+gD6QOzA+gD6QO1A5sBtgO2A7cDtwO3A7gDvgG5A7kDmwG2A7YDtwO3A7cDuAO+AbkDuQObAboDugO3A7cDtwO7A74BuQO5A5sBugO6A7cDtwO3A7sDvgG5A7kDmwG9A8YDmwHIA9ADmwHSA9YDmwHXA9sDmwHcA90D5QGbAdwD3gPlAV7DBM4EzARemwEoKM8EmwHRBOEE3QTaBJsB2wSbAeUEmwHmBOcE6ATnBJsB4gTgBNgEmwHTBNUE1gSbAeQECpSrCswEwSEDEX8DfgJ8QYC5GCQDQYC5FCQCQbyoFC0AAEUEQCMAQRBrIgIkAEHcpRQQ8wEaQYymFEF/NgIAQYSmFEGUphQ2AgBB/KUUQfiEFDYCAEHcpRRBxJ8TNgIAQZCmFEEAOgAAIAJBDGoiAEHgpRQoAgAiATYCACABIAEoAgRBAWo2AgRB3KUUIABB3KUUKAIAKAIIEQIAIAAoAgAiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgAkEQaiQAQbygFEGMoRM2AgBBvKAUQfCgEzYCAEG8oBRByKATNgIAQbSgFEG0oBM2AgBBuKAUQQA2AgBBvKAUQdylFBCjAkGcphRB4IMUQcymFBCfAkHkoRRBnKYUEKACQdSmFEHIghRBhKcUEJ8CQYyjFEHUphQQoAJBtKQUQYyjFCgCAEEMaygCAEGkoxRqKAIAEKACQbSgFCgCAEEMaygCAEG0oBRqQeShFDYCSEGMoxQoAgBBDGsoAgBBjKMUaiIBIAEoAgRBgMAAcjYCBEGMoxQoAgBBDGsoAgBBjKMUakHkoRQ2AkgjAEEQayICJABBjKcUEI0CGkG8pxRBfzYCAEG0pxRBxKcUNgIAQaynFEH4hBQ2AgBBjKcUQcyiEzYCAEHApxRBADoAACACQQxqIgBBkKcUKAIAIgE2AgAgASABKAIEQQFqNgIEQYynFCAAQYynFCgCACgCCBECACAAKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAJBEGokAEGUoRRBjKETNgIAQZShFEH4oxM2AgBBlKEUQdCjEzYCAEGMoRRBvKMTNgIAQZChFEEANgIAQZShFEGMpxQQowJBzKcUQeCDFEH8pxQQoQJBuKIUQcynFBCiAkGEqBRByIIUQbSoFBChAkHgoxRBhKgUEKICQYilFEHgoxQoAgBBDGsoAgBB+KMUaigCABCiAkGMoRQoAgBBDGsoAgBBjKEUakG4ohQ2AkhB4KMUKAIAQQxrKAIAQeCjFGoiASABKAIEQYDAAHI2AgRB4KMUKAIAQQxrKAIAQeCjFGpBuKIUNgJIQbyoFEEBOgAACyMAQRBrIgIkAAJAIAJBDGogAkEIahAeDQBBwKgUIAIoAgxBAnRBBGoQMyIBNgIAIAFFDQAgAigCCBAzIgAEQEHAqBQoAgAiASACKAIMQQJ0akEANgIAIAEgABAfRQ0BC0HAqBRBADYCAAsgAkEQaiQAQbSKFEIANwIAQbyKFEEANgIAEBUaQcSKFEEDNgIAQciKFEEANgIAEFxByIoUQbCOFCgCADYCAEGwjhRBxIoUNgIAQcyKFEEQNgIAQdCKFEEANgIAQfjyEkHM7xJB9O8SQQBB6PMSQRFBoPESQQBBoPESQQBB+z1B6/MSQRIQA0H48hJBAkGE8BJB+PMSQRNBFBAEQQQQVCIAQQQ2AgBBBBBUIgFBBDYCAEH48hJBhsEAQfD1EkH48xJBFSAAQfD1EkGQ9BJBFiABEAZB0IoUQbCOFCgCADYCAEGwjhRBzIoUNgIAQdSKFEEXNgIAQdiKFEEANgIAEIMBQdiKFEGwjhQoAgA2AgBBsI4UQdSKFDYCACMAQdAAayIDJABCwOKosAYQjwFCgIDf7afiAXwhEiMAQRBrIgEkACABIBJCwIQ9fzcDCCABKQMIIRIgAUEQaiQAIAMgEjcDSBC8ASADKQNIIhGnIBFCIIinQcCOFBAkQeiOFEGywgA2AgBB4I4UQgA3AgBBwI4UQgA3AgBByI4UQQA2AgAQvAFBwI4UECOtIwGtQiCGhELoB34hESMAQTBrIgckAAJAIAdBEGoiCCIBIAdBJGoiBUYNACARQgBZDQAgAUEtOgAAIAFBAWohAUIAIBF9IRELIAcCfyAFIAFrIgJBE0wEQEE9IAJBwAAgEUIBhHmna0HRCWxBDHYiACAAQQN0QaD4E2opAwAgEVhqSA0BGgsCfyARQv////8PWARAIAEgEacQxgQMAQsgEUKAyK+gJVoEfyARQoDIr6AlgCITQoC40N9afiARfCERIAEgE6cQxgQFIAELIBFCgMLXL4AiE6cQxwQgE0KAvqjQD34gEXynEMoECyEFQQALNgIMIAcgBTYCCCADQTBqIgEgCCAHKAIIEJcCGiAHQTBqJAAgA0E8aiABEFsgAywAO0EASARAIAMoAjAQNAsCQAJAAkBBwIoULQAARQRAQeCgEhBUQZ3JAEHXoBIQKyIQQQA6ANegEiADQQA2AjggA0IANwMwA0AgBEEBcUUEQCADQTBqIAQgEGosAAAQkAELIARBAWoiBEHXoBJHDQALQQAhBEGwihQtAABFBEBBpIoUQdAAEFQiATYCAEGoihRCwICAgICKgICAfzcCACABQZrtEikAADcAOCABQZLtEikAADcAMCABQYrtEikAADcAKCABQYLtEikAADcAICABQfrsEikAADcAGCABQfLsEikAADcAECABQersEikAADcACCABQeLsEikAADcAACABQQA6AEBBsIoUQQE6AAALQYAIEFRB/wFBgAgQKSEKQaSKFEGkihQoAgBBr4oULAAAQQBOGyEAA0AgCiAAIARqLAAAQQJ0aiAENgIAIAogACAEQQFyIgFqLAAAQQJ0aiABNgIAIAogACAEQQJyIgFqLAAAQQJ0aiABNgIAIAogACAEQQNyIgFqLAAAQQJ0aiABNgIAIARBBGoiBEHAAEcNAAsCQCADKAI0IAMtADsiASABwEEASCIAGyIBRQRAQQAhBEEAIQEMAQsgAygCMCADQTBqIAAbIg4gAWohB0F4IQtBACEEQQAhAQNAIAogDi0AAEECdGooAgAiAEF/Rg0BIAAgCUEGdGohCQJ/IAtBBmoiACALQXpIDQAaIAkgAHUhCCAEIAZJBEAgBCAIOgAAIARBAWohBCALQQJrDAELIAQgAWsiDEEBaiIFQQBIDQRB/////wcgBiABayICQQF0IgAgBSAAIAVLGyACQf////8DTxsiDQR/IA0QVAVBAAsiDyAMaiICIAg6AAACfyACIAEgBEYNABogAUF/cyAEaiEIQQAhBiACIQUgDEEDcSIABEADQCAFQQFrIgUgBEEBayIELQAAOgAAIAZBAWoiBiAARw0ACwsgDyAIQQNJDQAaA0AgBUEBayAEQQFrLQAAOgAAIAVBAmsgBEECay0AADoAACAFQQNrIARBA2stAAA6AAAgBUEEayIFIARBBGsiBC0AADoAACABIARHDQALIA8LIQAgAQRAIAEQNAsgDSAPaiEGIAJBAWohBCAAIQEgC0ECawshCyAOQQFqIg4gB0cNAAsLIAoQNCADLAA7QQBIBEAgAygCMBA0CyAQEDQgBCABayICQfD///8HTw0CAkAgAkEKTQRAIAMgAjoAOyADQTBqIQUMAQsgAkEPckEBaiIAEFQhBSADIABBgICAgHhyNgI4IAMgBTYCMCADIAI2AjQLAkAgASAERg0AIAFBf3MgBGohCAJAIAJBB3EiAkUEQCABIQAMAQtBACEGIAEhAANAIAUgAC0AADoAACAFQQFqIQUgAEEBaiEAIAZBAWoiBiACRw0ACwsgCEEHSQ0AA0AgBSAALQAAOgAAIAUgAC0AAToAASAFIAAtAAI6AAIgBSAALQADOgADIAUgAC0ABDoABCAFIAAtAAU6AAUgBSAALQAGOgAGIAUgAC0ABzoAByAFQQhqIQUgAEEIaiIAIARHDQALC0EAIQQgBUEAOgAAQeAAEFRB9ekSQdgAECsiDEEAOgBYIANBADYCKCADQgA3AyAgAygCNCADLAA7Ig1B/wFxIA1BAEgiABsiAgR/IAMoAjAgA0EwaiAAGyEAA0AgA0EgaiAMIARB2ABwai0AACAAIARqLQAAc8AQkAEgBEEBaiIEIAJHDQALIAMoAiAgA0EgaiADLQArwEEASBsFIANBIGoLEAAhAiADLAArQQBIBEAgAygCIBA0CyACEC8iBUHw////B08NAgJAIAVBCk0EQCADIAU6ACsgA0EgaiEGDAELIAVBD3JBAWoiABBUIQYgAyAAQYCAgIB4cjYCKCADIAY2AiAgAyAFNgIkCyAGIAIgBRBLIAVqQQA6AAAjAEEQayIIJAAgCEEQNgIMIANBIGoiAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAQQBJBEAQ3gEACyACKAIAIAIgAi0AC0GAAXFBB3YbIQUgCCAANgIIIANBCGoiBiEAIAhBCGogCEEMaiAIKAIIIAgoAgxJGygCACEHIwBBEGsiBCQAAkAgB0Hw////B0kEQAJAIAdBC0kEQCAAIAc6AAsMAQsgBEEIaiAHQQtPBH8gB0EQakFwcSICIAJBAWsiAiACQQtGGwVBCgtBAWoQmAIgACAEKAIIIgI2AgAgACAEKAIMQYCAgIB4cjYCCCAAIAc2AgQgAiEACyAAIAUgBxDqASAHakEAOgAAIARBEGokAAwBCxBVAAsgCEEQaiQAIANBFGogBhBbIAYsAAtBAEgEQCAGKAIAEDQLQZACEFRB4eoSQYACECsiAkEAOgCAAkHAihQgAygCGCADLQAfIgAgAMBBAEgiBhsiCQR/IAJBgAJqIgAhBAJAIAlBgAJKDQAgAygCFCADQRRqIAYbIgcsAAAhCEGAAiEEIAIhBgNAAkAgBCAJa0EBaiIFRQ0AIAYgCCAFEJEBIgRFDQAgBCAHIAkQkgFFDQIgACAEQQFqIgZrIgQgCU4NAQsLIAAhBAsgACAERyAEIAJrQX9HcQVBAQs6AAAgAhA0IAMsAB9BAEgEQCADKAIUEDQLIAMsACtBAEgEQCADKAIgEDQLIAwQNCANQQBIBEAgAygCMBA0CyABBEAgARA0CyADKQNIIRILIwBBMGsiAiQAQbyOFC0AAEUEQEG9jhQQFjoAAEG8jhRBAToAAAsgAgJ+EBUiFUQAAAAAAECPQKMiFJlEAAAAAAAA4ENjBEAgFLAMAQtCgICAgICAgICAfwsiETcDGCACAn8gFSARQugHfrmhRAAAAAAAQI9AokQAAAAAAECPQKIiFJlEAAAAAAAA4EFjBEAgFKoMAQtBgICAgHgLNgIgIAIgAikDGDcDECACIAIoAiBB6AdtrDcDCCACKQMQIREjAEEQayIAJAAgACAREN8BIQEgACACKQMIIAEpAwB8NwMIIAApAwghESAAQRBqJAAgAiARNwMoIAIpAyghESACQTBqJABBwIoULQAAIQEgAywAR0EASARAIAMoAjwQNAtB6IsUQeSLFDYCAEHkixRB5IsUNgIAQdiLFCABRSASEI8BIBFTcjoAAEHsixRBADYCACADQdAAaiQADAILEFcACxBVAAtB3IsUQSY2AgBB4IsUQQA2AgAQlAFB4IsUQbCOFCgCADYCAEGwjhRB3IsUNgIAQfiMFEE1NgIAQfyMFEEANgIAEJ4BQfyMFEGwjhQoAgA2AgBBsI4UQfiMFDYCAEGgjRRBygA2AgBBgI0UQcCCFCsDAEQfDHuliOTvP6I5AwBBpI0UQQA2AgBBgjxBBkGQ9RJBqPUSQcsAQcwAQQAQC0GkjRRBsI4UKAIANgIAQbCOFEGgjRQ2AgBBtI4UQc4ANgIAQbiOFEEANgIAELMBQbiOFEGwjhQoAgA2AgBBsI4UQbSOFDYCAEHEnxRBKjYCAEGMoBRBnKkUNgIACwYAQbCGFAsEAEEBCwMAAQvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAtZAQF/IAAgACgCSCIBQQFrIAFyNgJIIAAoAgAiAUEIcQRAIAAgAUEgcjYCAEF/DwsgAEIANwIEIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhBBAAuABAEDfyACQYAETwRAIAAgASACEBogAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALwAEBA38CQCABIAIoAhAiAwR/IAMFIAIQKg0BIAIoAhALIAIoAhQiBWtLBEAgAiAAIAEgAigCJBEEAA8LAkAgAigCUEEASARAQQAhAwwBCyABIQQDQCAEIgNFBEBBACEDDAILIAAgA0EBayIEai0AAEEKRw0ACyACIAAgAyACKAIkEQQAIgQgA0kNASAAIANqIQAgASADayEBIAIoAhQhBQsgBSAAIAEQKxogAiACKAIUIAFqNgIUIAEgA2ohBAsgBAtAAQF/IAEgAmwhBCAEAn8gAygCTEEASARAIAAgBCADECwMAQsgACAEIAMQLAsiAEYEQCACQQAgARsPCyAAIAFuC4wBAQJ/IwBBEGsiACQAIABBCjoADwJAAkBB2IIUKAIAIgEEfyABBUHIghQQKg0CQdiCFCgCAAtB3IIUKAIAIgFGDQBBmIMUKAIAQQpGDQBB3IIUIAFBAWo2AgAgAUEKOgAADAELQciCFCAAQQ9qQQFB7IIUKAIAEQQAQQFHDQAgAC0ADxoLIABBEGokAAt6AQN/AkACQCAAIgFBA3FFDQAgAC0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawuoAQACQCABQYAITgRAIABEAAAAAAAA4H+iIQAgAUH/D0kEQCABQf8HayEBDAILIABEAAAAAAAA4H+iIQBB/RcgASABQf0XThtB/g9rIQEMAQsgAUGBeEoNACAARAAAAAAAAGADoiEAIAFBuHBLBEAgAUHJB2ohAQwBCyAARAAAAAAAAGADoiEAQfBoIAEgAUHwaEwbQZIPaiEBCyAAIAFB/wdqrUI0hr+iC8YGAgR/A34jAEGAAWsiBSQAAkACQAJAIAMgBEIAQgAQN0UNAAJ/IARC////////P4MhCgJ/IARCMIinQf//AXEiBkH//wFHBEBBBCAGDQEaQQJBAyADIAqEUBsMAgsgAyAKhFALCyEGIAJCMIinIghB//8BcSIHQf//AUYNACAGDQELIAVBEGogASACIAMgBBA8IAUgBSkDECICIAUpAxgiASACIAEQOiAFKQMIIQIgBSkDACEEDAELIAEgAkL///////////8AgyIKIAMgBEL///////////8AgyIJEDdBAEwEQCABIAogAyAJEDcEQCABIQQMAgsgBUHwAGogASACQgBCABA8IAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB//8BcSEGIAcEfiABBSAFQeAAaiABIApCAEKAgICAgIDAu8AAEDwgBSkDaCIKQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAJQgBCgICAgICAwLvAABA8IAUpA1giCUIwiKdB+ABrIQYgBSkDUCEDCyAJQv///////z+DQoCAgICAgMAAhCELIApC////////P4NCgICAgICAwACEIQogBiAHSARAA0ACfiAKIAt9IAMgBFatfSIJQgBZBEAgCSAEIAN9IgSEUARAIAVBIGogASACQgBCABA8IAUpAyghAiAFKQMgIQQMBQsgCUIBhiAEQj+IhAwBCyAKQgGGIARCP4iECyEKIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAogC30gAyAEVq19IglCAFMEQCAKIQkMAQsgCSAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAEDwgBSkDOCECIAUpAzAhBAwBCyAJQv///////z9YBEADQCAEQj+IIQEgB0EBayEHIARCAYYhBCABIAlCAYaEIglCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIAlC////////P4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxA8IAUpA0ghAiAFKQNAIQQMAQsgCUL///////8/gyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC1IBAn9BuIIUKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQHEUNAQtBuIIUIAA2AgAgAQ8LQbCGFEEwNgIAQX8LyCgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBBtIYUKAIAIgZBECAAQQtqQXhxIABBC0kbIgVBA3YiAHYiAUEDcQRAAkAgAUF/c0EBcSAAaiICQQN0IgFB3IYUaiIAIAFB5IYUaigCACIBKAIIIgRGBEBBtIYUIAZBfiACd3E2AgAMAQsgBCAANgIMIAAgBDYCCAsgAUEIaiEAIAEgAkEDdCICQQNyNgIEIAEgAmoiASABKAIEQQFyNgIEDA8LIAVBvIYUKAIAIgdNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBB3IYUaiICIABB5IYUaigCACIAKAIIIgRGBEBBtIYUIAZBfiABd3EiBjYCAAwBCyAEIAI2AgwgAiAENgIICyAAIAVBA3I2AgQgACAFaiIIIAFBA3QiASAFayIEQQFyNgIEIAAgAWogBDYCACAHBEAgB0F4cUHchhRqIQFByIYUKAIAIQICfyAGQQEgB0EDdnQiA3FFBEBBtIYUIAMgBnI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQciGFCAINgIAQbyGFCAENgIADA8LQbiGFCgCACILRQ0BIAtoQQJ0QeSIFGooAgAiAigCBEF4cSAFayEDIAIhAQNAAkAgASgCECIARQRAIAEoAhQiAEUNAQsgACgCBEF4cSAFayIBIAMgASADSSIBGyEDIAAgAiABGyECIAAhAQwBCwsgAigCGCEJIAIgAigCDCIERwRAQcSGFCgCABogAigCCCIAIAQ2AgwgBCAANgIIDA4LIAJBFGoiASgCACIARQRAIAIoAhAiAEUNAyACQRBqIQELA0AgASEIIAAiBEEUaiIBKAIAIgANACAEQRBqIQEgBCgCECIADQALIAhBADYCAAwNC0F/IQUgAEG/f0sNACAAQQtqIgBBeHEhBUG4hhQoAgAiCEUNAEEAIAVrIQMCQAJAAkACf0EAIAVBgAJJDQAaQR8gBUH///8HSw0AGiAFQSYgAEEIdmciAGt2QQFxIABBAXRrQT5qCyIHQQJ0QeSIFGooAgAiAUUEQEEAIQAMAQtBACEAIAVBGSAHQQF2a0EAIAdBH0cbdCECA0ACQCABKAIEQXhxIAVrIgYgA08NACABIQQgBiIDDQBBACEDIAEhAAwDCyAAIAEoAhQiBiAGIAEgAkEddkEEcWooAhAiAUYbIAAgBhshACACQQF0IQIgAQ0ACwsgACAEckUEQEEAIQRBAiAHdCIAQQAgAGtyIAhxIgBFDQMgAGhBAnRB5IgUaigCACEACyAARQ0BCwNAIAAoAgRBeHEgBWsiAiADSSEBIAIgAyABGyEDIAAgBCABGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0G8hhQoAgAgBWtPDQAgBCgCGCEHIAQgBCgCDCICRwRAQcSGFCgCABogBCgCCCIAIAI2AgwgAiAANgIIDAwLIARBFGoiASgCACIARQRAIAQoAhAiAEUNAyAEQRBqIQELA0AgASEGIAAiAkEUaiIBKAIAIgANACACQRBqIQEgAigCECIADQALIAZBADYCAAwLCyAFQbyGFCgCACIETQRAQciGFCgCACEAAkAgBCAFayIBQRBPBEAgACAFaiICIAFBAXI2AgQgACAEaiABNgIAIAAgBUEDcjYCBAwBCyAAIARBA3I2AgQgACAEaiIBIAEoAgRBAXI2AgRBACECQQAhAQtBvIYUIAE2AgBByIYUIAI2AgAgAEEIaiEADA0LIAVBwIYUKAIAIgJJBEBBwIYUIAIgBWsiATYCAEHMhhRBzIYUKAIAIgAgBWoiAjYCACACIAFBAXI2AgQgACAFQQNyNgIEIABBCGohAAwNC0EAIQAgBUEvaiIDAn9BjIoUKAIABEBBlIoUKAIADAELQZiKFEJ/NwIAQZCKFEKAoICAgIAENwIAQYyKFCAKQQxqQXBxQdiq1aoFczYCAEGgihRBADYCAEHwiRRBADYCAEGAIAsiAWoiBkEAIAFrIghxIgEgBU0NDEHsiRQoAgAiBARAQeSJFCgCACIHIAFqIgkgB00NDSAEIAlJDQ0LAkBB8IkULQAAQQRxRQRAAkACQAJAAkBBzIYUKAIAIgQEQEH0iRQhAANAIAQgACgCACIHTwRAIAcgACgCBGogBEsNAwsgACgCCCIADQALC0EAEDIiAkF/Rg0DIAEhBkGQihQoAgAiAEEBayIEIAJxBEAgASACayACIARqQQAgAGtxaiEGCyAFIAZPDQNB7IkUKAIAIgAEQEHkiRQoAgAiBCAGaiIIIARNDQQgACAISQ0ECyAGEDIiACACRw0BDAULIAYgAmsgCHEiBhAyIgIgACgCACAAKAIEakYNASACIQALIABBf0YNASAFQTBqIAZNBEAgACECDAQLQZSKFCgCACICIAMgBmtqQQAgAmtxIgIQMkF/Rg0BIAIgBmohBiAAIQIMAwsgAkF/Rw0CC0HwiRRB8IkUKAIAQQRyNgIACyABEDIhAkEAEDIhACACQX9GDQUgAEF/Rg0FIAAgAk0NBSAAIAJrIgYgBUEoak0NBQtB5IkUQeSJFCgCACAGaiIANgIAQeiJFCgCACAASQRAQeiJFCAANgIACwJAQcyGFCgCACIDBEBB9IkUIQADQCACIAAoAgAiASAAKAIEIgRqRg0CIAAoAggiAA0ACwwEC0HEhhQoAgAiAEEAIAAgAk0bRQRAQcSGFCACNgIAC0EAIQBB+IkUIAY2AgBB9IkUIAI2AgBB1IYUQX82AgBB2IYUQYyKFCgCADYCAEGAihRBADYCAANAIABBA3QiAUHkhhRqIAFB3IYUaiIENgIAIAFB6IYUaiAENgIAIABBAWoiAEEgRw0AC0HAhhQgBkEoayIAQXggAmtBB3EiAWsiBDYCAEHMhhQgASACaiIBNgIAIAEgBEEBcjYCBCAAIAJqQSg2AgRB0IYUQZyKFCgCADYCAAwECyACIANNDQIgASADSw0CIAAoAgxBCHENAiAAIAQgBmo2AgRBzIYUIANBeCADa0EHcSIAaiIBNgIAQcCGFEHAhhQoAgAgBmoiAiAAayIANgIAIAEgAEEBcjYCBCACIANqQSg2AgRB0IYUQZyKFCgCADYCAAwDC0EAIQQMCgtBACECDAgLQcSGFCgCACACSwRAQcSGFCACNgIACyACIAZqIQFB9IkUIQACQAJAAkADQCABIAAoAgBHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQELQfSJFCEAA0AgAyAAKAIAIgFPBEAgASAAKAIEaiIEIANLDQMLIAAoAgghAAwACwALIAAgAjYCACAAIAAoAgQgBmo2AgQgAkF4IAJrQQdxaiIHIAVBA3I2AgQgAUF4IAFrQQdxaiIGIAUgB2oiBWshACADIAZGBEBBzIYUIAU2AgBBwIYUQcCGFCgCACAAaiIANgIAIAUgAEEBcjYCBAwIC0HIhhQoAgAgBkYEQEHIhhQgBTYCAEG8hhRBvIYUKAIAIABqIgA2AgAgBSAAQQFyNgIEIAAgBWogADYCAAwICyAGKAIEIgNBA3FBAUcNBiADQXhxIQkgA0H/AU0EQCAGKAIMIgEgBigCCCICRgRAQbSGFEG0hhQoAgBBfiADQQN2d3E2AgAMBwsgAiABNgIMIAEgAjYCCAwGCyAGKAIYIQggBiAGKAIMIgJHBEAgBigCCCIBIAI2AgwgAiABNgIIDAULIAZBFGoiASgCACIDRQRAIAYoAhAiA0UNBCAGQRBqIQELA0AgASEEIAMiAkEUaiIBKAIAIgMNACACQRBqIQEgAigCECIDDQALIARBADYCAAwEC0HAhhQgBkEoayIAQXggAmtBB3EiAWsiCDYCAEHMhhQgASACaiIBNgIAIAEgCEEBcjYCBCAAIAJqQSg2AgRB0IYUQZyKFCgCADYCACADIARBJyAEa0EHcWpBL2siACAAIANBEGpJGyIBQRs2AgQgAUH8iRQpAgA3AhAgAUH0iRQpAgA3AghB/IkUIAFBCGo2AgBB+IkUIAY2AgBB9IkUIAI2AgBBgIoUQQA2AgAgAUEYaiEAA0AgAEEHNgIEIABBCGohAiAAQQRqIQAgAiAESQ0ACyABIANGDQAgASABKAIEQX5xNgIEIAMgASADayICQQFyNgIEIAEgAjYCACACQf8BTQRAIAJBeHFB3IYUaiEAAn9BtIYUKAIAIgFBASACQQN2dCICcUUEQEG0hhQgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDCADIAA2AgwgAyABNgIIDAELQR8hACACQf///wdNBEAgAkEmIAJBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyADIAA2AhwgA0IANwIQIABBAnRB5IgUaiEBAkACQEG4hhQoAgAiBEEBIAB0IgZxRQRAQbiGFCAEIAZyNgIAIAEgAzYCAAwBCyACQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQQDQCAEIgEoAgRBeHEgAkYNAiAAQR12IQQgAEEBdCEAIAEgBEEEcWoiBigCECIEDQALIAYgAzYCEAsgAyABNgIYIAMgAzYCDCADIAM2AggMAQsgASgCCCIAIAM2AgwgASADNgIIIANBADYCGCADIAE2AgwgAyAANgIIC0HAhhQoAgAiACAFTQ0AQcCGFCAAIAVrIgE2AgBBzIYUQcyGFCgCACIAIAVqIgI2AgAgAiABQQFyNgIEIAAgBUEDcjYCBCAAQQhqIQAMCAtBsIYUQTA2AgBBACEADAcLQQAhAgsgCEUNAAJAIAYoAhwiAUECdEHkiBRqIgQoAgAgBkYEQCAEIAI2AgAgAg0BQbiGFEG4hhQoAgBBfiABd3E2AgAMAgsgCEEQQRQgCCgCECAGRhtqIAI2AgAgAkUNAQsgAiAINgIYIAYoAhAiAQRAIAIgATYCECABIAI2AhgLIAYoAhQiAUUNACACIAE2AhQgASACNgIYCyAAIAlqIQAgBiAJaiIGKAIEIQMLIAYgA0F+cTYCBCAFIABBAXI2AgQgACAFaiAANgIAIABB/wFNBEAgAEF4cUHchhRqIQECf0G0hhQoAgAiAkEBIABBA3Z0IgBxRQRAQbSGFCAAIAJyNgIAIAEMAQsgASgCCAshACABIAU2AgggACAFNgIMIAUgATYCDCAFIAA2AggMAQtBHyEDIABB////B00EQCAAQSYgAEEIdmciAWt2QQFxIAFBAXRrQT5qIQMLIAUgAzYCHCAFQgA3AhAgA0ECdEHkiBRqIQECQAJAQbiGFCgCACICQQEgA3QiBHFFBEBBuIYUIAIgBHI2AgAgASAFNgIADAELIABBGSADQQF2a0EAIANBH0cbdCEDIAEoAgAhAgNAIAIiASgCBEF4cSAARg0CIANBHXYhAiADQQF0IQMgASACQQRxaiIEKAIQIgINAAsgBCAFNgIQCyAFIAE2AhggBSAFNgIMIAUgBTYCCAwBCyABKAIIIgAgBTYCDCABIAU2AgggBUEANgIYIAUgATYCDCAFIAA2AggLIAdBCGohAAwCCwJAIAdFDQACQCAEKAIcIgBBAnRB5IgUaiIBKAIAIARGBEAgASACNgIAIAINAUG4hhQgCEF+IAB3cSIINgIADAILIAdBEEEUIAcoAhAgBEYbaiACNgIAIAJFDQELIAIgBzYCGCAEKAIQIgAEQCACIAA2AhAgACACNgIYCyAEKAIUIgBFDQAgAiAANgIUIAAgAjYCGAsCQCADQQ9NBEAgBCADIAVqIgBBA3I2AgQgACAEaiIAIAAoAgRBAXI2AgQMAQsgBCAFQQNyNgIEIAQgBWoiAiADQQFyNgIEIAIgA2ogAzYCACADQf8BTQRAIANBeHFB3IYUaiEAAn9BtIYUKAIAIgFBASADQQN2dCIDcUUEQEG0hhQgASADcjYCACAADAELIAAoAggLIQEgACACNgIIIAEgAjYCDCACIAA2AgwgAiABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyACIAA2AhwgAkIANwIQIABBAnRB5IgUaiEBAkACQCAIQQEgAHQiBnFFBEBBuIYUIAYgCHI2AgAgASACNgIADAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhBQNAIAUiASgCBEF4cSADRg0CIABBHXYhBiAAQQF0IQAgASAGQQRxaiIGKAIQIgUNAAsgBiACNgIQCyACIAE2AhggAiACNgIMIAIgAjYCCAwBCyABKAIIIgAgAjYCDCABIAI2AgggAkEANgIYIAIgATYCDCACIAA2AggLIARBCGohAAwBCwJAIAlFDQACQCACKAIcIgBBAnRB5IgUaiIBKAIAIAJGBEAgASAENgIAIAQNAUG4hhQgC0F+IAB3cTYCAAwCCyAJQRBBFCAJKAIQIAJGG2ogBDYCACAERQ0BCyAEIAk2AhggAigCECIABEAgBCAANgIQIAAgBDYCGAsgAigCFCIARQ0AIAQgADYCFCAAIAQ2AhgLAkAgA0EPTQRAIAIgAyAFaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBUEDcjYCBCACIAVqIgQgA0EBcjYCBCADIARqIAM2AgAgBwRAIAdBeHFB3IYUaiEAQciGFCgCACEBAn9BASAHQQN2dCIFIAZxRQRAQbSGFCAFIAZyNgIAIAAMAQsgACgCCAshBiAAIAE2AgggBiABNgIMIAEgADYCDCABIAY2AggLQciGFCAENgIAQbyGFCADNgIACyACQQhqIQALIApBEGokACAAC/ULAQd/AkAgAEUNACAAQQhrIgIgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUEDcUUNASACIAIoAgAiAWsiAkHEhhQoAgBJDQEgACABaiEAAkACQEHIhhQoAgAgAkcEQCABQf8BTQRAIAFBA3YhBCACKAIMIgEgAigCCCIDRgRAQbSGFEG0hhQoAgBBfiAEd3E2AgAMBQsgAyABNgIMIAEgAzYCCAwECyACKAIYIQYgAiACKAIMIgFHBEAgAigCCCIDIAE2AgwgASADNgIIDAMLIAJBFGoiBCgCACIDRQRAIAIoAhAiA0UNAiACQRBqIQQLA0AgBCEHIAMiAUEUaiIEKAIAIgMNACABQRBqIQQgASgCECIDDQALIAdBADYCAAwCCyAFKAIEIgFBA3FBA0cNAkG8hhQgADYCACAFIAFBfnE2AgQgAiAAQQFyNgIEIAUgADYCAA8LQQAhAQsgBkUNAAJAIAIoAhwiA0ECdEHkiBRqIgQoAgAgAkYEQCAEIAE2AgAgAQ0BQbiGFEG4hhQoAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECACRhtqIAE2AgAgAUUNAQsgASAGNgIYIAIoAhAiAwRAIAEgAzYCECADIAE2AhgLIAIoAhQiA0UNACABIAM2AhQgAyABNgIYCyACIAVPDQAgBSgCBCIBQQFxRQ0AAkACQAJAAkAgAUECcUUEQEHMhhQoAgAgBUYEQEHMhhQgAjYCAEHAhhRBwIYUKAIAIABqIgA2AgAgAiAAQQFyNgIEIAJByIYUKAIARw0GQbyGFEEANgIAQciGFEEANgIADwtByIYUKAIAIAVGBEBByIYUIAI2AgBBvIYUQbyGFCgCACAAaiIANgIAIAIgAEEBcjYCBCAAIAJqIAA2AgAPCyABQXhxIABqIQAgAUH/AU0EQCABQQN2IQQgBSgCDCIBIAUoAggiA0YEQEG0hhRBtIYUKAIAQX4gBHdxNgIADAULIAMgATYCDCABIAM2AggMBAsgBSgCGCEGIAUgBSgCDCIBRwRAQcSGFCgCABogBSgCCCIDIAE2AgwgASADNgIIDAMLIAVBFGoiBCgCACIDRQRAIAUoAhAiA0UNAiAFQRBqIQQLA0AgBCEHIAMiAUEUaiIEKAIAIgMNACABQRBqIQQgASgCECIDDQALIAdBADYCAAwCCyAFIAFBfnE2AgQgAiAAQQFyNgIEIAAgAmogADYCAAwDC0EAIQELIAZFDQACQCAFKAIcIgNBAnRB5IgUaiIEKAIAIAVGBEAgBCABNgIAIAENAUG4hhRBuIYUKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiABNgIAIAFFDQELIAEgBjYCGCAFKAIQIgMEQCABIAM2AhAgAyABNgIYCyAFKAIUIgNFDQAgASADNgIUIAMgATYCGAsgAiAAQQFyNgIEIAAgAmogADYCACACQciGFCgCAEcNAEG8hhQgADYCAA8LIABB/wFNBEAgAEF4cUHchhRqIQECf0G0hhQoAgAiA0EBIABBA3Z0IgBxRQRAQbSGFCAAIANyNgIAIAEMAQsgASgCCAshACABIAI2AgggACACNgIMIAIgATYCDCACIAA2AggPC0EfIQMgAEH///8HTQRAIABBJiAAQQh2ZyIBa3ZBAXEgAUEBdGtBPmohAwsgAiADNgIcIAJCADcCECADQQJ0QeSIFGohAQJAAkACQEG4hhQoAgAiBEEBIAN0IgdxRQRAQbiGFCAEIAdyNgIAIAEgAjYCACACIAE2AhgMAQsgAEEZIANBAXZrQQAgA0EfRxt0IQMgASgCACEBA0AgASIEKAIEQXhxIABGDQIgA0EddiEBIANBAXQhAyAEIAFBBHFqIgdBEGooAgAiAQ0ACyAHIAI2AhAgAiAENgIYCyACIAI2AgwgAiACNgIIDAELIAQoAggiACACNgIMIAQgAjYCCCACQQA2AhggAiAENgIMIAIgADYCCAtB1IYUQdSGFCgCAEEBayIAQX8gABs2AgALC4gIAQt/IABFBEAgARAzDwsgAUFATwRAQbCGFEEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEFIABBCGsiBCgCBCIIQXhxIQMCQCAIQQNxRQRAQQAgBUGAAkkNAhogBUEEaiADTQRAIAQhAiADIAVrQZSKFCgCAEEBdE0NAgtBAAwCCyADIARqIQYCQCADIAVPBEAgAyAFayICQRBJDQEgBCAIQQFxIAVyQQJyNgIEIAQgBWoiAyACQQNyNgIEIAYgBigCBEEBcjYCBCADIAIQNgwBC0HMhhQoAgAgBkYEQEHAhhQoAgAgA2oiAyAFTQ0CIAQgCEEBcSAFckECcjYCBCAEIAVqIgIgAyAFayIDQQFyNgIEQcCGFCADNgIAQcyGFCACNgIADAELQciGFCgCACAGRgRAQbyGFCgCACADaiIDIAVJDQICQCADIAVrIgJBEE8EQCAEIAhBAXEgBXJBAnI2AgQgBCAFaiIHIAJBAXI2AgQgAyAEaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAQgCEEBcSADckECcjYCBCADIARqIgIgAigCBEEBcjYCBEEAIQILQciGFCAHNgIAQbyGFCACNgIADAELIAYoAgQiB0ECcQ0BIAdBeHEgA2oiCSAFSQ0BIAkgBWshCwJAIAdB/wFNBEAgBigCDCICIAYoAggiA0YEQEG0hhRBtIYUKAIAQX4gB0EDdndxNgIADAILIAMgAjYCDCACIAM2AggMAQsgBigCGCEKAkAgBiAGKAIMIgNHBEBBxIYUKAIAGiAGKAIIIgIgAzYCDCADIAI2AggMAQsCQCAGQRRqIgIoAgAiB0UEQCAGKAIQIgdFDQEgBkEQaiECCwNAIAIhDCAHIgNBFGoiAigCACIHDQAgA0EQaiECIAMoAhAiBw0ACyAMQQA2AgAMAQtBACEDCyAKRQ0AAkAgBigCHCICQQJ0QeSIFGoiBygCACAGRgRAIAcgAzYCACADDQFBuIYUQbiGFCgCAEF+IAJ3cTYCAAwCCyAKQRBBFCAKKAIQIAZGG2ogAzYCACADRQ0BCyADIAo2AhggBigCECICBEAgAyACNgIQIAIgAzYCGAsgBigCFCICRQ0AIAMgAjYCFCACIAM2AhgLIAtBD00EQCAEIAhBAXEgCXJBAnI2AgQgBCAJaiICIAIoAgRBAXI2AgQMAQsgBCAIQQFxIAVyQQJyNgIEIAQgBWoiAiALQQNyNgIEIAQgCWoiAyADKAIEQQFyNgIEIAIgCxA2CyAEIQILIAILIgIEQCACQQhqDwsgARAzIgJFBEBBAA8LIAIgAEF8QXggAEEEaygCACIEQQNxGyAEQXhxaiIEIAEgASAESxsQKxogABA0IAILtgsBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkACQAJAIAAgAmsiAEHIhhQoAgBHBEAgAkH/AU0EQCACQQN2IQQgACgCCCIDIAAoAgwiAkcNAkG0hhRBtIYUKAIAQX4gBHdxNgIADAULIAAoAhghBiAAIAAoAgwiAkcEQEHEhhQoAgAaIAAoAggiAyACNgIMIAIgAzYCCAwECyAAQRRqIgQoAgAiA0UEQCAAKAIQIgNFDQMgAEEQaiEECwNAIAQhByADIgJBFGoiBCgCACIDDQAgAkEQaiEEIAIoAhAiAw0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBvIYUIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyADIAI2AgwgAiADNgIIDAILQQAhAgsgBkUNAAJAIAAoAhwiA0ECdEHkiBRqIgQoAgAgAEYEQCAEIAI2AgAgAg0BQbiGFEG4hhQoAgBBfiADd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAI2AgAgAkUNAQsgAiAGNgIYIAAoAhAiAwRAIAIgAzYCECADIAI2AhgLIAAoAhQiA0UNACACIAM2AhQgAyACNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEHMhhQoAgAgBUYEQEHMhhQgADYCAEHAhhRBwIYUKAIAIAFqIgE2AgAgACABQQFyNgIEIABByIYUKAIARw0GQbyGFEEANgIAQciGFEEANgIADwtByIYUKAIAIAVGBEBByIYUIAA2AgBBvIYUQbyGFCgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgAkH/AU0EQCACQQN2IQQgBSgCDCICIAUoAggiA0YEQEG0hhRBtIYUKAIAQX4gBHdxNgIADAULIAMgAjYCDCACIAM2AggMBAsgBSgCGCEGIAUgBSgCDCICRwRAQcSGFCgCABogBSgCCCIDIAI2AgwgAiADNgIIDAMLIAVBFGoiBCgCACIDRQRAIAUoAhAiA0UNAiAFQRBqIQQLA0AgBCEHIAMiAkEUaiIEKAIAIgMNACACQRBqIQQgAigCECIDDQALIAdBADYCAAwCCyAFIAJBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAwDC0EAIQILIAZFDQACQCAFKAIcIgNBAnRB5IgUaiIEKAIAIAVGBEAgBCACNgIAIAINAUG4hhRBuIYUKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgMEQCACIAM2AhAgAyACNgIYCyAFKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsgACABQQFyNgIEIAAgAWogATYCACAAQciGFCgCAEcNAEG8hhQgATYCAA8LIAFB/wFNBEAgAUF4cUHchhRqIQICf0G0hhQoAgAiA0EBIAFBA3Z0IgFxRQRAQbSGFCABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0EfIQMgAUH///8HTQRAIAFBJiABQQh2ZyICa3ZBAXEgAkEBdGtBPmohAwsgACADNgIcIABCADcCECADQQJ0QeSIFGohAgJAAkBBuIYUKAIAIgRBASADdCIHcUUEQEG4hhQgBCAHcjYCACACIAA2AgAgACACNgIYDAELIAFBGSADQQF2a0EAIANBH0cbdCEDIAIoAgAhAgNAIAIiBCgCBEF4cSABRg0CIANBHXYhAiADQQF0IQMgBCACQQRxaiIHQRBqKAIAIgINAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsL2wECAX8CfkEBIQQCQCAAQgBSIAFC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBRGw0AIAJCAFIgA0L///////////8AgyIGQoCAgICAgMD//wBWIAZCgICAgICAwP//AFEbDQAgACAChCAFIAaEhFAEQEEADwsgASADg0IAWQRAQX8hBCAAIAJUIAEgA1MgASADURsNASAAIAKFIAEgA4WEQgBSDwtBfyEEIAAgAlYgASADVSABIANRGw0AIAAgAoUgASADhYRCAFIhBAsgBAvAAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFJxDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAIAEgAlIgASACU3ENASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIgASAEhiEBCyAAIAE3AwAgACACNwMIC6kPAgV/D34jAEHQAmsiBSQAIARC////////P4MhCyACQv///////z+DIQogAiAEhUKAgICAgICAgIB/gyENIARCMIinQf//AXEhCAJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAhB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQ0MAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhDSADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCADIAJCgICAgICAwP//AIWEUARAQgAhAUKAgICAgIDg//8AIQ0MAwsgDUKAgICAgIDA//8AhCENQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAQgAhAQwCCyABIAyEUARAQoCAgICAgOD//wAgDSACIAOEUBshDUIAIQEMAgsgAiADhFAEQCANQoCAgICAgMD//wCEIQ1CACEBDAILIAxC////////P1gEQCAFQcACaiABIAogASAKIApQIgYbeSAGQQZ0rXynIgZBD2sQOUEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIHG3kgB0EGdK18pyIHQQ9rEDkgBiAHakEQayEGIAUpA7gCIQsgBSkDsAIhAwsgBUGgAmogC0KAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQPSAFQZACakIAIAUpA6gCfUIAIARCABA9IAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAED0gBUHwAWogBEIAQgAgBSkDiAJ9QgAQPSAFQeABaiAFKQP4AUIBhiAFKQPwAUI/iIQiBEIAIAJCABA9IAVB0AFqIARCAEIAIAUpA+gBfUIAED0gBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQPSAFQbABaiAEQgBCACAFKQPIAX1CABA9IAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI/iIRCAX0iAkIAED0gBUGQAWogA0IPhkIAIAJCABA9IAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIgwgBSkDmAF8IgQgDFStfCAEQgFWrXx9QgAQPSAFQYABakIBIAR9QgAgAkIAED0gBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIMQiCIIgsgECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig5WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL/////D4MiFCAKfiIRIAIgC358Ig8gEVStIA8gDyATIAxC/v///w+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiALIBR+fCILQiCIIAIgC1atQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL/////////AFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhA9IAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+/wBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASED0gAUIwhiAFKQNofSAFKQNgIgxCAFKtfSEKQgAgDH0hCyABIQwgBkH//wBqCyIGQf//AU4EQCANQoCAgICAgMD//wCEIQ1CACEBDAELAn4gBkEASgRAIApCAYYgC0I/iIQhCiAEQv///////z+DIAatQjCGhCEMIAtCAYYMAQsgBkGPf0wEQEIAIQEMAgsgBUFAayACIARBASAGaxA7IAVBMGogDCAVIAZB8ABqEDkgBUEgaiADIBIgBSkDQCICIAUpA0giDBA9IAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgQgAUIBhiIBVK19IQogBCABfQshBCAFQRBqIAMgEkIDQgAQPSAFIAMgEkIFQgAQPSAMIAIgAiADIAJCAYMiASAEfCIDVCAKIAEgA1atfCIBIBJWIAEgElEbrXwiAlatfCIEIAIgAiAEQoCAgICAgMD//wBUIAMgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgJWrXwiBCACIARCgICAgICAwP//AFQgAyAFKQMAViABIAUpAwgiA1YgASADURtxrXwiASACVK18IA2EIQ0LIAAgATcDACAAIA03AwggBUHQAmokAAtQAQF+AkAgA0HAAHEEQCACIANBQGqtiCEBQgAhAgwBCyADRQ0AIAJBwAAgA2uthiABIAOtIgSIhCEBIAIgBIghAgsgACABNwMAIAAgAjcDCAvDCgIFfw9+IwBB4ABrIgUkACAEQv///////z+DIQwgAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiDUIgiCEOIARCMIinQf//AXEhBwJAAkAgAkIwiKdB//8BcSIJQf//AWtBgoB+TwRAIAdB//8Ba0GBgH5LDQELIAFQIAJC////////////AIMiC0KAgICAgIDA//8AVCALQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQOUEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQOSAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg0IAUgRAIAZBAWohBgwBCyALQj+IIQMgBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgAyABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0H/AE0EQCAFQTBqIAsgASAGQf8AaiIGEDkgBUEgaiACIAQgBhA5IAVBEGogCyABIAcQOyAFIAIgBCAHEDsgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhCyAFKQMoIAUpAxiEIQEgBSkDACECIAUpAwgMAgtCACEBDAILIARC////////P4MgBq1CMIaECyAKhCEKIAtQIAFCAFkgAUKAgICAgICAgIB/URtFBEAgCiACQgF8IgFQrXwhCgwBCyALIAFCgICAgICAgICAf4WEQgBSBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC3UBAX4gACABIAR+IAIgA358IANCIIgiAiABQiCIIgR+fCADQv////8PgyIDIAFC/////w+DIgF+IgVCIIggAyAEfnwiA0IgiHwgASACfiADQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAumAQEBfwJ/AkAgACgCTCIBQQBOBEAgAUUNAUHEnxQoAgAgAUH/////e3FHDQELIAAoAgQiASAAKAIIRwRAIAAgAUEBajYCBCABLQAADAILIAAQ0QEMAQsgACAAKAJMIgFB/////wMgARs2AkwCfyAAKAIEIgEgACgCCEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAENEBCyEBIAAoAkwaIABBADYCTCABCwsGACAAJAELDgBBgLkYJANBgLkUJAILBwAjACMCawsEACMDCwQAIwILBAAjAAsGACAAJAALEAAjACAAa0FwcSIAJAAgAAvFCQIEfwV+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEQgBSDQAgASEDIAIhBAwBCyADIAEgASADVCAJIApWIAkgClEbIggbIQogBCACIAgbIgtC////////P4MhCSACIAQgCBsiAkIwiKdB//8BcSEHIAtCMIinQf//AXEiBUUEQCAGQeAAaiAKIAkgCiAJIAlQIgUbeSAFQQZ0rXynIgVBD2sQOSAGKQNoIQkgBikDYCEKQRAgBWshBQsgASADIAgbIQMgAkL///////8/gyEEIAdFBEAgBkHQAGogAyAEIAMgBCAEUCIHG3kgB0EGdK18pyIHQQ9rEDlBECAHayEHIAYpA1ghBCAGKQNQIQMLIARCA4YgA0I9iIRCgICAgICAgASEIQEgCUIDhiAKQj2IhCEEIAIgC4UhDQJ+IANCA4YiAiAFIAdGDQAaIAUgB2siB0H/AEsEQEIAIQFCAQwBCyAGQUBrIAIgAUGAASAHaxA5IAZBMGogAiABIAcQOyAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQkgBEKAgICAgICABIQhDCAKQgOGIQoCQCANQgBTBEBCACEDQgAhBCAJIAqFIAEgDIWEUA0CIAogCX0hAiAMIAF9IAkgClatfSIEQv////////8DVg0BIAZBIGogAiAEIAIgBCAEUCIHG3kgB0EGdK18p0EMayIHEDkgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAx8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgC0KAgICAgICAgIB/gyEBIAVB//8BTgRAIAFCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahA5IAYgAiAEQQEgBWsQOyAGKQMAIAYpAxAgBikDGIRCAFKthCECIAYpAwghBAsgAqdBB3EiBUEES60gBEI9hiACQgOIhCICfCIDIAJUrSAEQgOIQv///////z+DIAetQjCGhCABhHwhBAJAIAVBBEYEQCAEIANCAYMiASADfCIDIAFUrXwhBAwBCyAFRQ0BCwsgACADNwMAIAAgBDcDCCAGQfAAaiQAC0QBAX8jAEEQayIFJAAgBSABIAIgAyAEQoCAgICAgICAgH+FEEcgBSkDACEBIAAgBSkDCDcDCCAAIAE3AwAgBUEQaiQAC4EMAwV8A34GfyMAQRBrIg0kAAJAAkAgAb0iCEI0iKciDEH/D3EiDkG+CGsiD0H/fksgAL0iB0I0iKciCkH/D2tBgnBPcQ0AIAhCAYZCgICAgICAgBB8QoGAgICAgIAQVARARAAAAAAAAPA/IQIgB0KAgICAgICA+D9RDQIgCEIBhiIJUA0CIAlCgYCAgICAgHBUIAdCAYYiB0KAgICAgICAcFhxRQRAIAAgAaAhAgwDCyAHQoCAgICAgIDw/wBRDQJEAAAAAAAAAAAgASABoiAHQv/////////v/wBWIAhCAFlzGyECDAILIAdCAYZCgICAgICAgBB8QoGAgICAgIAQVARAIAAgAKIhAiAHQgBTBEAgApogAiAIEEpBAUYbIQILIAhCAFkNAiMAQRBrIgpEAAAAAAAA8D8gAqM5AwggCisDCCECDAILIAdCAFMEQCAIEEoiC0UEQCAAIAChIgAgAKMhAgwDCyAKQf8PcSEKIAtBAUZBEnQhCyAHQv///////////wCDIQcLIA9B/35NBEBEAAAAAAAA8D8hAiAHQoCAgICAgID4P1ENAiAOQb0HTQRAIAEgAZogB0KAgICAgICA+D9WG0QAAAAAAADwP6AhAgwDCyAMQYAQSSAHQoGAgICAgID4P1RHBEAjAEEQayIKRAAAAAAAAABwOQMIIAorAwhEAAAAAAAAAHCiIQIMAwsjAEEQayIKRAAAAAAAAAAQOQMIIAorAwhEAAAAAAAAABCiIQIMAgsgCg0AIABEAAAAAAAAMEOivUL///////////8Ag0KAgICAgICAoAN9IQcLAnwgCEKAgIBAg78iBSANIAdCgICAgNCqpfM/fSIIQjSHp7ciA0H4GCsDAKIgCEItiKdB/wBxQQV0IgpB0BlqKwMAoCAHIAhCgICAgICAgHiDfSIHQoCAgIAIfEKAgICAcIO/IgAgCkG4GWorAwAiBKJEAAAAAAAA8L+gIgIgB78gAKEgBKIiBKAiACADQfAYKwMAoiAKQcgZaisDAKAiAyAAIAOgIgOhoKAgBCAAQYAZKwMAIgSiIgYgAiAEoiIEoKKgIAIgBKIiAiADIAMgAqAiAqGgoCAAIAAgBqIiA6IgAyADIABBsBkrAwCiQagZKwMAoKIgAEGgGSsDAKJBmBkrAwCgoKIgAEGQGSsDAKJBiBkrAwCgoKKgIgAgAiACIACgIgKhoDkDCCACvUKAgIBAg78iA6IhACABIAWhIAOiIA0rAwggAiADoaAgAaKgIQECQCAAvUI0iKdB/w9xIgpByQdrQT9JDQAgCkHJB0kEQCAARAAAAAAAAPA/oCIAmiAAIAsbDAILIApBiQhJIQxBACEKIAwNACAAvUIAUwRAIwBBEGsiCkQAAAAAAAAAkEQAAAAAAAAAECALGzkDCCAKKwMIRAAAAAAAAAAQogwCCyMAQRBrIgpEAAAAAAAAAPBEAAAAAAAAAHAgCxs5AwggCisDCEQAAAAAAAAAcKIMAQtBgAgrAwAgAKJBiAgrAwAiAqAiAyACoSICQZgIKwMAoiACQZAIKwMAoiAAoKAgAaAiACAAoiIBIAGiIABBuAgrAwCiQbAIKwMAoKIgASAAQagIKwMAokGgCCsDAKCiIAO9IginQQR0QfAPcSIMQfAIaisDACAAoKCgIQAgDEH4CGopAwAgCCALrXxCLYZ8IQcgCkUEQAJ8IAhCgICAgAiDUARAIAdCgICAgICAgIg/fb8iASAAoiABoEQAAAAAAAAAf6IMAQsgB0KAgICAgICA8D98Ige/IgEgAKIiAyABoCIAmUQAAAAAAADwP2MEfCMAQRBrIgogCkQAAAAAAAAQADkDCCAKKwMIRAAAAAAAABAAojkDCCAHQoCAgICAgICAgH+DvyAARAAAAAAAAPC/RAAAAAAAAPA/IABEAAAAAAAAAABjGyICoCIFIAMgASAAoaAgACACIAWhoKCgIAKhIgAgAEQAAAAAAAAAAGEbBSAAC0QAAAAAAAAQAKILDAELIAe/IgEgAKIgAaALIQILIA1BEGokACACC04CAX8BfgJ/QQAgAEI0iKdB/w9xIgFB/wdJDQAaQQIgAUGzCEsNABpBAEIBQbMIIAFrrYYiAkIBfSAAg0IAUg0AGkECQQEgACACg1AbCwvoAgECfwJAIAAgAUYNACABIAAgAmoiBGtBACACQQF0a00EQCAAIAEgAhArDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkEBayECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkEBayICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQQRrIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AA0AgAyABKAIANgIAIAFBBGohASADQQRqIQMgAkEEayICQQNLDQALCyACRQ0AA0AgAyABLQAAOgAAIANBAWohAyABQQFqIQEgAkEBayICDQALCyAAC5AEAgR+An8CQAJAIAG9IgRCAYYiA1ANACABvSECIAC9IgVCNIinQf8PcSIGQf8PRg0AIAJC////////////AINCgYCAgICAgPj/AFQNAQsgACABoiIAIACjDwsgAyAFQgGGIgJaBEAgAEQAAAAAAAAAAKIgACACIANRGw8LIARCNIinQf8PcSEHAn4gBkUEQEEAIQYgBUIMhiICQgBZBEADQCAGQQFrIQYgAkIBhiICQgBZDQALCyAFQQEgBmuthgwBCyAFQv////////8Hg0KAgICAgICACIQLIQICfiAHRQRAQQAhByAEQgyGIgNCAFkEQANAIAdBAWshByADQgGGIgNCAFkNAAsLIARBASAHa62GDAELIARC/////////weDQoCAgICAgIAIhAshBCAGIAdKBEADQAJAIAIgBH0iA0IAUw0AIAMiAkIAUg0AIABEAAAAAAAAAACiDwsgAkIBhiECIAZBAWsiBiAHSg0ACyAHIQYLAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCwJAIAJC/////////wdWBEAgAiEDDAELA0AgBkEBayEGIAJCgICAgICAgARUIQcgAkIBhiIDIQIgBw0ACwsgBUKAgICAgICAgIB/gyECIAZBAEoEfiADQoCAgICAgIAIfSAGrUI0hoQFIANBASAGa62ICyAChL8L0QMCAn4CfyMAQSBrIgQkAAJAIAFC////////////AIMiA0KAgICAgIDAgDx9IANCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEDIABC//////////8PgyIAQoGAgICAgICACFoEQCADQoGAgICAgICAwAB8IQIMAgsgA0KAgICAgICAgEB9IQIgAEKAgICAgICAgAhSDQEgAiADQgGDfCECDAELIABQIANCgICAgICAwP//AFQgA0KAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgA0L///////+//8MAVg0AQgAhAiADQjCIpyIFQZH3AEkNACAEQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiAiAFQYH3AGsQOSAEIAAgAkGB+AAgBWsQOyAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwt+AgJ/AX4jAEEQayIDJAAgAAJ+IAFFBEBCAAwBCyADIAEgAUEfdSICcyACayICrUIAIAJnIgJB0QBqEDkgAykDCEKAgICAgIDAAIVBnoABIAJrrUIwhnwgAUGAgICAeHGtQiCGhCEEIAMpAwALNwMAIAAgBDcDCCADQRBqJAAL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgNC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQQgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCADQjyGIQQgA0IEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgA6dnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahA5IAUpAwAhBCAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAQ3AwAgACACIANCgICAgICAgICAf4OENwMIIAVBEGokAAtjAgF/AX4jAEEQayICJAAgAAJ+IAFFBEBCAAwBCyACIAGtQgAgAWciAUHRAGoQOSACKQMIQoCAgICAgMAAhUGegAEgAWutQjCGfCEDIAIpAwALNwMAIAAgAzcDCCACQRBqJAALtAMCA38BfiMAQSBrIgMkAAJAIAFC////////////AIMiBUKAgICAgIDAwD99IAVCgICAgICAwL/AAH1UBEAgAUIZiKchBCAAUCABQv///w+DIgVCgICACFQgBUKAgIAIURtFBEAgBEGBgICABGohAgwCCyAEQYCAgIAEaiECIAAgBUKAgIAIhYRCAFINASACIARBAXFqIQIMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQhmIp0H///8BcUGAgID+B3IhAgwBC0GAgID8ByECIAVC////////v7/AAFYNAEEAIQIgBUIwiKciBEGR/gBJDQAgA0EQaiAAIAFC////////P4NCgICAgICAwACEIgUgBEGB/gBrEDkgAyAAIAVBgf8AIARrEDsgAykDCCIAQhmIpyECIAMpAwAgAykDECADKQMYhEIAUq2EIgVQIABC////D4MiAEKAgIAIVCAAQoCAgAhRG0UEQCACQQFqIQIMAQsgBSAAQoCAgAiFhEIAUg0AIAJBAXEgAmohAgsgA0EgaiQAIAIgAUIgiKdBgICAgHhxcr4LGABBv4oULAAAQQBIBEBBtIoUKAIAEDQLC2oBA38gARAvIgJB8P///wdJBEACQCACQQpNBEAgACACOgALIAAhAwwBCyACQQ9yQQFqIgQQVCEDIAAgBEGAgICAeHI2AgggACADNgIAIAAgAjYCBAsgAyABIAIQSyACakEAOgAADwsQVQALNgEBf0EBIAAgAEEBTRshAAJAA0AgABAzIgENAUHwuBQoAgAiAQRAIAERCQAMAQsLEB0ACyABCwgAQag/EFgACxgAQa+KFCwAAEEASARAQaSKFCgCABA0CwsIAEG7PBBYAAthAQN/QQgQWSIBQayCFDYCACABQdiAFDYCACAAEC8iAkENahBUIgNBADYCCCADIAI2AgQgAyACNgIAIAEgA0EMaiAAIAJBAWoQKzYCBCABQYiBFDYCACABQaiBFEECEAEACw4AIABB0ABqEDNB0ABqCzIBAn8gAEHYgBQ2AgAgACgCBEEMayIBIAEoAghBAWsiAjYCCCACQQBIBEAgARA0CyAAC/QLAgV/BX4jAEEwayIFJAACQEHYABAzIgRFDQAgBEEEay0AAEEDcUUNACAEQQBB2AAQKRoLIARC1uuC7ur9ifXgADcDCCAEQvnq0NDnyaHk4QA3AyAgBELP1tO+0ser2UI3AxACfgJAIAEoAgAgASABLQALIgPAQQBIIgYbIgJFDQAgBCABKAIEIAMgBhsiAa0iCzcDAAJAIAFBH00EQCAEQShqIAIgARArGiAEIAQoAkggAWo2AkhC1uuC7ur9ifXgACEIQs/W077Sx6vZQiEJQvnq0NDnyaHk4QAhCgwBCyABIAJqIQMCQCABQSBIBEBC1uuC7ur9ifXgACEIQs/W077Sx6vZQiEJQvnq0NDnyaHk4QAhCgwBCyADQSBrIQFC1uuC7ur9ifXgACEIQvnq0NDnyaHk4QAhCkLP1tO+0ser2UIhCQNAIAIpABhCz9bTvtLHq9lCfiAKfEIfiUKHla+vmLbem55/fiEKIAIpABBCz9bTvtLHq9lCfiAHfEIfiUKHla+vmLbem55/fiEHIAIpAAhCz9bTvtLHq9lCfiAJfEIfiUKHla+vmLbem55/fiEJIAIpAABCz9bTvtLHq9lCfiAIfEIfiUKHla+vmLbem55/fiEIIAJBIGoiAiABTQ0ACyAEIAo3AyAgBCAHNwMYIAQgCTcDECAEIAg3AwgLIAIgA08NACAEQShqIAIgAyACayIBECsaIAQgATYCSAsgC0IgVA0AIAlCB4kgCEIBiXwgB0IMiXwgCkISiXwgCELP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAJQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAdCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gCkLP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfQwBCyAHQsXP2bLx5brqJ3wLIQcgBEEoaiECIAcgC3whBwJAIAunQR9xIgFBCEkEQCACIQMMAQsDQCACKQAAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef34gB4VCG4lCh5Wvr5i23puef35CnaO16oOxjYr6AH0hByACQQhqIgMhAiABQQhrIgFBB0sNAAsLIAFBBE8EQCADNQAAQoeVr6+Ytt6bnn9+IAeFQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCEHIANBBGohAyABQQRrIQELAkAgAUUNAAJ/IAFBAXFFBEAgAyECIAEMAQsgA0EBaiECIAMxAABCxc/ZsvHluuonfiAHhUILiUKHla+vmLbem55/fiEHIAFBAWsLIQMgAUEBRg0AA0AgAjEAAULFz9my8eW66id+IAIxAABCxc/ZsvHluuonfiAHhUILiUKHla+vmLbem55/foVCC4lCh5Wvr5i23puef34hByACQQJqIQIgA0ECayIDDQALCyAEEDQgBSAHQiGIIAeFQs/W077Sx6vZQn4iB0IdiCAHhUL5893xmfaZqxZ+IgdCIIggB4U3AwAjAEEQayIEJAAgBCAFNgIMIAVBEGohAkEAIQMjAEGQAWsiASQAA0AgASADaiADQaiaE2otAAA6AAAgA0EBaiIDQZABSQ0ACyABIAI2AiwgASACNgIUIAFB/////wdBfiACayIDIANB/////wdPGyIDNgIwIAEgAiADaiIGNgIcIAEgBjYCECABQeI6IAUQzwEgAwRAIAEoAhQiAyADIAEoAhBGa0EAOgAACyABQZABaiQAIARBEGokACACEC8iAkHw////B0kEQAJAIAJBCk0EQCAAIAI6AAsMAQsgAkEPckEBaiIDEFQhASAAIANBgICAgHhyNgIIIAAgATYCACAAIAI2AgQgASEACyAAIAVBEGogAhArIAJqQQA6AAAgBUEwaiQADwsQVQALuggBAn9BrO4SQdjuEkGI7xJB6PQSQejzEkEEQejzEkEFQejzEkEGQbg5QevzEkEHEANBrO4SQQFBmO8SQejzEkEIQQkQBEEIEFQiAEEANgIEIABBCjYCAEGs7hJBhcMAQQNBnO8SQajvEkELIABBAEEAEAVBBBBUIgBBIDYCAEEEEFQiAUEgNgIAQazuEkHwwABBpP4TQa3vEkEMIABBpP4TQbHvEkENIAEQBkEEEFQiAEEoNgIAQQQQVCIBQSg2AgBBrO4SQcTBAEGk/hNBre8SQQwgAEGk/hNBse8SQQ0gARAGQQQQVCIAQTA2AgBBBBBUIgFBMDYCAEGs7hJBpzxBpP4TQa3vEkEMIABBpP4TQbHvEkENIAEQBkEEEFQiAEE4NgIAQQQQVCIBQTg2AgBBrO4SQZc8QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBBwAA2AgBBBBBUIgFBwAA2AgBBrO4SQZ89QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBByAA2AgBBBBBUIgFByAA2AgBBrO4SQcU7QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBB0AA2AgBBBBBUIgFB0AA2AgBBrO4SQZA9QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBB2AA2AgBBBBBUIgFB2AA2AgBBrO4SQa49QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBBkAE2AgBBBBBUIgFBkAE2AgBBrO4SQeHAAEGk/hNBre8SQQwgAEGk/hNBse8SQQ0gARAGQQQQVCIAQYgBNgIAQQQQVCIBQYgBNgIAQazuEkHowABBpP4TQa3vEkEMIABBpP4TQbHvEkENIAEQBkEEEFQiAEHgADYCAEEEEFQiAUHgADYCAEGs7hJB18EAQaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBB6AA2AgBBBBBUIgFB6AA2AgBBrO4SQYs9QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBB8AA2AgBBBBBUIgFB8AA2AgBBrO4SQdM9QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBB+AA2AgBBBBBUIgFB+AA2AgBBrO4SQc09QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBBgAE2AgBBBBBUIgFBgAE2AgBBrO4SQac+QaT+E0Gt7xJBDCAAQaT+E0Gx7xJBDSABEAZBBBBUIgBBmAE2AgBBBBBUIgFBmAE2AgBBrO4SQfY6QcD9E0H48xJBDiAAQcD9E0GQ9BJBDyABEAZBBBBUIgBBnAE2AgBBBBBUIgFBnAE2AgBBrO4SQfzAAEHA/RNB+PMSQQ4gAEHA/RNBkPQSQQ8gARAGCw0AIAAoAgBBBGsoAgALBAAgAAvQAQEDfyAABEAgAEGI7hI2AgAgACgCGBBoIABBlPASNgIAAkBB6IsUKAIAIgJB5IsURg0AIAIhAQJAA0ACQCABKAIEIQMgASgCCCAARg0AIAMiAUHkixRHDQEMAgsLIAEoAgAiAiADNgIEIAEoAgQgAjYCAEHsixRB7IsUKAIAQQFrNgIAIAEQNEHoixQoAgAhAgsgAkHkixRGDQBBACEBA0AgAigCCCABNgIQIAFBAWohASACKAIEIgJB5IsURw0ACwtB8IsUQQE6AAAgABA0CwsHACAAEQ4AC4MBAQN/QfgIEFQiAUEBOgAEQQwQVCIAQeSLFDYCBCAAIAE2AgggAEHkixQoAgAiAjYCACACIAA2AgRB5IsUIAA2AgBB7IsUQeyLFCgCACIAQQFqNgIAIAEgADYCEEHwixRBAToAACABQRhqIgBCADcDACABQYjuEjYCACABIAA2AhQgAQveTQIIf1V8IwBB8AhrIgIkACABKAIAQeHDABAIIgMQByEHIAMQAgJAAn8gB0Hw9RIgAkEYahAJIgpEAAAAAAAA8EFjIApEAAAAAAAAAABmcQRAIAqrDAELQQALIgkoAgAiBkHw////B08NACACKAIYIQUCQCAGQQpNBEAgAiAGOgCTCCACQYgIaiEDDAELIAZBD3JBAWoiBBBUIQMgAiAEQYCAgIB4cjYCkAggAiADNgKICCACIAY2AowICyADIAlBBGogBhArIAZqQQA6AAAgBRAKIAcQAiABKAIAQaDDABAIIgMQByEHIAMQAgJ/IAdB8PUSIAJBGGoQCSIKRAAAAAAAAPBBYyAKRAAAAAAAAAAAZnEEQCAKqwwBC0EACyIJKAIAIgZB8P///wdPDQAgAigCGCEFAkAgBkEKTQRAIAIgBjoAhwggAkH8B2ohAwwBCyAGQQ9yQQFqIgQQVCEDIAIgBEGAgICAeHI2AoQIIAIgAzYC/AcgAiAGNgKACAsgAyAJQQRqIAYQKyAGakEAOgAAIAUQCiAHEAIgASgCAEHmwgAQCCIDEAchBCADEAIgBEGk/hMgAkEYaiIFEAkhGyACKAIYEAogBBACIAEoAgBB3MEAEAgiAxAHIQQgAxACIARBpP4TIAUQCSEgIAIoAhgQCiAEEAIgASgCAEHywgAQCCIDEAchBCADEAIgBEGk/hMgBRAJISsgAigCGBAKIAQQAiABKAIAQdLDABAIIgMQByEEIAMQAiAEQaT+EyACQRhqEAkhFyACKAIYEAogBBACIAEoAgBBv8IAEAgiAxAHIQQgAxACIARBpP4TIAJBGGoQCSEQIAIoAhgQCiAEEAIgASgCAEHpwQAQCCIDEAchBCADEAIgBEGk/hMgAkEYahAJISMgAigCGBAKIAQQAiABKAIAQYzDABAIIgMQByEEIAMQAiAEQaT+EyACQRhqEAkhUSACKAIYEAogBBACIAEoAgBBr8MAEAgiAxAHIQQgAxACIARBwP0TIAUQCSERIAIoAhgQCiAEEAIgASgCAEG+wwAQCCIDEAchByADEAICfyAHQfD1EiAFEAkiCkQAAAAAAADwQWMgCkQAAAAAAAAAAGZxBEAgCqsMAQtBAAsiCSgCACIIQfD///8HSSEDAn8gEZlEAAAAAAAA4EFjBEAgEaoMAQtBgICAgHgLIQYgA0UNACACKAIYIQUCQCAIQQpNBEAgAiAIOgD7ByACQfAHaiEDDAELIAhBD3JBAWoiBBBUIQMgAiAEQYCAgIB4cjYC+AcgAiADNgLwByACIAg2AvQHCyADIAlBBGogCBArIAhqQQA6AAAgBRAKIAcQAiABKAIAQevDABAIIgMQByEEIAMQAiAEQcz9EyACQRhqIgUQCSEkIAIoAhgQCiAEEAIgASgCAEHXwgAQCCIDEAchBCADEAIgBEHM/RMgBRAJISwgAigCGBAKIAQQAiABKAIAQZnDABAIIgMQByEEIAMQAiAEQaT+EyAFEAkhDiACKAIYEAogBBACIAEoAgBB0cIAEAgiAxAHIQQgAxACIARBpP4TIAUQCSEYIAIoAhgQCiAEEAIgASgCAEGRwgAQCCIDEAchBCADEAIgBEGk/hMgBRAJIREgAigCGBAKIAQQAiABKAIAQaHCABAIIgEQByEDIAEQAiADQaT+EyAFEAkhCiACKAIYEAogAxACAn8gJEQAAAAAAADwQWMgJEQAAAAAAAAAAGZxBEAgJKsMAQtBAAshCEHYixQtAABFBEAgAigC/AchByACLACHCCEJIAIoAogIIQUgAiwAkwghBCACKALwByEDIAIsAPsHIQEgAkEANgKkCCACQQA2AiQgAiAINgIYIAIgAyACQfAHaiABQQBIGy0AADoAuAYCQAJAIAJBuQZqIgMgBSACQYgIaiAEQQBIGyIEc0EDcQRAIAQtAAAhAQwBCyAEQQNxBEADQCADIAQtAAAiAToAACABRQ0DIANBAWohAyAEQQFqIgRBA3ENAAsLIAQoAgAiAUF/cyABQYGChAhrcUGAgYKEeHENAANAIAMgATYCACAEKAIEIQEgA0EEaiEDIARBBGohBCABQYGChAhrIAFBf3NxQYCBgoR4cUUNAAsLIAMgAToAACABQf8BcUUNAANAIAMgBC0AASIBOgABIANBAWohAyAEQQFqIQQgAQ0ACwsgAgJ/ICxEAAAAAAAA8EFjICxEAAAAAAAAAABmcQRAICyrDAELQQALNgLIBiACIAbANgLEBiACIBg5A/gFIAIgCjkD6AUgAiAROQPwBSACAn8gDplEAAAAAAAA4EFjBEAgDqoMAQtBgICAgHgLNgLMBiACIBs5A7AGIAIgIzkDqAYgAiAQOQOgBiACICA5A5gGIAIgFzkDkAYgAiArOQOIBiACIAJBlAhqNgIQIAIgAkGoCGo2AhQgAiACQaQIajYCACACIAJBoAhqNgIEIAIgAkGcCGo2AgggAiACQZgIajYCDCAHIAJB/AdqIAlBAEgbQeM/IAIQaRogAiACKAKYCLdEAAAAAAAgrECiIAIoApQIt0QAAAAAAABOQKIgAisDqAigoEQAAAAAABj1QKMiGTkD4AUgAiACKAKgCCIBQZMCbLdEAAAAAAAAIkCjnCACKAKkCLciCkQAAAAAAPB2QKIgAUEJardEAAAAAAAAKECjnCAKoEQAAAAAAAAcQKJEAAAAAAAA0D+inKGgIAIoApwIt6BEAAAAgLVCOkGgIhs5A9gFIBmZRAAAAAAAAPA/ZARAIAIgGSAZnCIKoSIZOQPgBSACIAogG6AiGzkD2AULIAJBADYCLCACKwOwBiErIAIrA5AGIRcgAisDiAYhECACKwOoBiEjIAIrA+gFIRggAisDmAYhHSACKwOgBiERIAIrA/AFIQogAigCGCEBIAIrA/gFITMgAkEwakEAQcwBECkaIAJBgAJqQQBBuAMQKRogAkKBuZCSzLbC2T83A6gHIAJCja+6k7HEutzAADcDoAcgAkKAgICAoISVjMEANwOYByACQrCrt/WkoMqxv383A8gHIAJChIaG4Lnkwd2+fzcDwAcgAkLB4K7unbjP4r5/NwO4ByACQtGNisuRnO+oPzcDsAcgAkL9wvzRmpm5lcAANwOQByACQekAOgAoIAIgMzkD+AUgAiABNgIYIAIgCkRiJI7CniQUQaM5A/AFIAIgEUQ5nVKiRt+RP6IiJTkDoAYgAiAdOQOYBiACIBhEKuOXQX9TvEGjOQPoBSACICNEOZ1SokbfkT+iIiw5A6gGIAIgEEQ5nVKiRt+RP6IiPDkDiAYgAiAXRDmdUqJG35E/oiImOQOQBiACICtE+MFjGtylbECjIhE5A7AGIAJCADcD8AYgAkIANwPoBiACQgA3A+AGIAJCADcDiAcgAkIANwPYBiACQgA3A4AHIAJB+dwBOwApIAJBADYCJCACIDwQaiIaIBqiIhREAAAAAAAAFMCiRAAAAAAAAPA/oCIQmiAUoSAUoSItOQM4IAIgGyAZoEQAAADAgJBCwaAiI0QAAADAgJBCQaBEAAAAgCy0QsGgRAAAAACg1eFAoyIKRAADGkedk+dBoiAKIApEzsnmBTMB2r6ioiAKoiAKIApE63Qg66nVtz+ioqCgRG2QScbobvBAoEQ5nVKiRt+RP6JEAAAAAAAAbkCjRBgtRFT7IRlAEEwiCkQYLURU+yEZQKAgCiAKRAAAAAAAAAAAYxs5A6gEIAIgESAURAAAAAAAAAhAokQAAAAAAADwv6BEOsoTplGbSj+iRAAAAAAAAPA/IB0gHaIiDaEiLiAunyJJoqMiCkSBHETCtAmzPyARo0RVVVVVVVXlPxBJIhFEAAAAAAAA8D8gCiARIBGioyIKIAqioSAKIAogCkQAAAAAAMBgQKKiRAAAAAAAQFRAo0RVVVVVVVXVP6CioaIiCiAKoqNEAAAAAAAA8D+goyITOQPQBiACIBNEfSE/qsnkKkCiRFVVVVVVVeW/EEkiCjkDuAUgAiAKIB1EAAAAAAAA8D+gokQAAAAAAADwv6A5A8gFIAIgCkQAAAAAAADwPyAdoSIYokQAAAAAAADwv6A5A8AFRIEcRMK0CbM/IBOjRFVVVVVVVeU/EEkhHiA8EGshFQJAIC5EAAAAAAAAAABmIBNEAAAAAAAAAABmckUNACAuIB6iIgogCqIhESACIBggHqIiCkSb1r9aSI3wP2M2AiwCfCAKRAAAAAAAAPC/oESNl24SI+q4QKIiCkQAAAAAAIBjQGNFBEBEAAAAAACAU0AhIUSMNMG8xSYgPgwBC0QAAAAAAABeQEQAAAAAAAA0QCAKRAAAAAAAgFPAoCAKRAAAAAAAgFhAYxsiIaFEjZduEiPquECjIgogCiAKIAqioqILIQogAiAeIB2iRAAAAAAAAPA/IB4gIUSNl24SI+q4QKNEAAAAAAAA8D+gIlKhoyI3oiIvOQN4IAIgEyAKIDdEAAAAAAAAEEAQSaIiDkQAAAAAAADwPyAvIC+iIhyhmSIbRAAAAAAAAAxAEEmjIjCiIB4gLyAdoiIiIBxEAAAAAAAAEECgoiAcRAAAAAAAAPg/okQAAAAAAADwP6CgoiAcRAAAAAAAAAhAoiAcRAAAAAAAACBAoKJEAAAAAAAAIECgIC0gN0Q6yhOmUZs6P6IgG6OioqCiIDOiIiA5A0AgAiAlEGoiPSAdRC1DHOviNho/ZCIBBHwgFSATIDcgDkQAAAAAAAAAwKKiRLDVrU4CKWO/oqKiIB2jBUQAAAAAAAAAAAsgM6KiOQOIASACICIgHKIgHCAioEQAAAAAAAAGQKJEAAAAAAAA8D+goCAuIB4gMCAwoKKiojkDUCACIElEAAAAAAAA8D8gEaMiJCATICREOsoTplGbWj+ioiIrRAAAAAAAAOA/oiIKRNGGYhnhvFE/oqIiGEQAAAAAAACwP6IiEaIgFCAUoiIXRAAAAAAAIGFAoiAURAAAAAAAgFPAokQAAAAAAAAqQKCgoiBJIAqiIC2iIBOgoDkD0AEgAkQAAAAAAADwPyAUoSIKOQPAASACIC4gHiATIBOgIDCioqIgN0TRhmIZ4bxRv6IgHiAboqMgLUQAAAAAAAAIwKIgHCAiRAAAAAAAAOC/okQAAAAAAAD4P6CiRAAAAAAAAPA/ICIgIqChoKIgJSAloBBqIApEAAAAAAAA6D+iIBwgHKAiCiAcRAAAAAAAAPA/oCAioqGioqCiIC8gHEQAAAAAAADgP6JEAAAAAAAAAECgoiAKRAAAAAAAAOA/oCAdoqCgojkDSCACIBMgJCAkRNRqQWKxVqk+oqKiIgogF0QAAAAAAIBIQKIgFEQAAAAAAABCwKJEAAAAAAAACECgoKIgK0QAAAAAAADgv6IgEKIgF0QAAAAAALB4QKIgFEQAAAAAAIBcwKJEAAAAAAAAHECgoCARoqCgIlo5A4ABIAIgGEQAAAAAAADgP6IgFEQAAAAAAAAzwKJEAAAAAAAAEECgoiAURAAAAAAAABzAokQAAAAAAAAIQKAgCiAKoKKgIBqiIBogK5qiIgqgIls5A9gBIAIgDkRVVVVVVVXlv6IgM6IgIqNEAAAAAAAAAAAgARs5A+gBIAIgIEQAAAAAAAD4P6I5A6ABIAIgLBBrOQOQASACIBVEsNWtTgIpUz+iOQMwIAIgFEQAAAAAAAAcQKJEAAAAAAAA8L+gOQPIASACIC5EAAAAAAAADECiIAqiICCiOQPwASACIBpEAAAAAAAAFECiRAAAAAAAAAhAoCAVRLDVrU4CKUM/oqIgGkQAAAAAAADwP6AiPkQa38RBZmN6PSA+mUQa38RBZmN6PWQbozkD4AEgAiAvICwQaqJEAAAAAAAA8D+gIgogCiAKoqI5A3ACQEQYLURU+yEZQCATo0QAAAAAACBsQGZFDQAgAkEBNgIsIAJB5AA6ACpEChQtUL1b7T8hTERnw3FLcXbZPyEcICNEAAAAAGDV0UCgIk1EBKK99etITr+iRBR7aB8rGBJAoEQYLURU+yEZQBBMIhAQayIYRGfDcUtxdtk/okQAAAAAAADwPyAQEGoiCkSya5RYxkSiv6JEd+xOFHQ97T+gIiQgJKKhnyIso0QAAAAAAADwPyAYRNxGvKJ/9bY/oiAsoyIXIBeioZ8iESAKoiAYIBdEChQtUL1b7T+ioqAQbCEKIAJCADcDwAMgAkIANwO4AyACQgA3A7ADIAJCADcDqAMgAkIANwOgAyAmEGohJyAmEGsiGSARoiAXICeioSEjIBEgJ6IgFyAZoqAhGCAdRAAAAAAAAC7AoiFcRAAAAAAAAPA/IBOjIV0gFZohU0SzBQgPaGPvvyE0RHRfzmxX6Mg/ISFEcY4AlGoNyT4hVEEAIQEgJRBrIT8gCiBNRHc8Kz5F218/okSf1bjtMVcXQKAiXqAgEKEiChBrIREgChBqIQpBASEDA0AgLiAZICEgTKIiEKIgNCAnoqEiQCA9oiA/IBogNCAZoiAnIBCioCIooiAVICEgHKIiJaKgIkGioCI1RAAAAAAAAChAoiA1oiA9IEGiIEAgP6KhIjggOEQAAAAAAAAIwKKioCJKoiBAIECiIEEgQaKgRAAAAAAAAAhAoiANIEqioCIQIBCgoCEiIC4gISAnoiAZIEwgNKIiEKKgIkIgPaIgPyAaICcgEKIgISAZoqEiLaIgFSAcIDSiIiaioCJDoqAiOUQAAAAAAAA4QKIiMCA1oiA4ID0gQ6IgQiA/oqEiREQAAAAAAAAYwKIiOqKgIi+iIEIgQKIgQSBDoqBEAAAAAAAAGECiIA0gL6KgIhAgEKCgIQ4gLiA5RAAAAAAAAChAoiA5oiBEIEREAAAAAAAACMCioqAiS6IgQiBCoiBDIEOioEQAAAAAAAAIQKIgDSBLoqAiECAQoKAhMyA1IDiiIhcgOSBEoiIQoSEbIDUgRKIgOCA5oqAhICAQIBegISsgQSBTIC2iIBogJqKgIkWiIFMgKKIgGiAloqAiRiBDoqBEAAAAAAAAGECiIA0gNSA/IEWiIk6iID8gRqIiKSA5oqBEAAAAAAAAOECiIDggPSBFoiIxoiA9IEaiIiggRKKgRAAAAAAAABjAoqCioCEXIEIgRqIgQCBFoqBEAAAAAAAAGMCiIA0gNSAxoiAoIDmioEQAAAAAAAA4wKIgRCApoiBOIDiioEQAAAAAAAAYwKKgoqAhECBBRAAAAAAAABhAoiBGoiANIDVEAAAAAAAAOECiICmiICggOEQAAAAAAAAYwKIiJqKgoqAhJSBDRAAAAAAAABhAoiBFoiANIDAgTqIgMSA6oqCioCEtIEBEAAAAAAAAGMCiIEaiIA0gNUQAAAAAAAA4wKIgKKIgKSAmoqCioCEwIEJEAAAAAAAAGMCiIEWiIA0gOUQAAAAAAAA4wKIgMaIgTiA6oqCioCEmIFwgSSBdIFSiIjqiIjGiISggOkQAAAAAAADgv6IgSaMhKSADQQFxBEBESxmT52wYoD4hVCAxITsgKyFPICAhKiAbIRIgMyFVIA4hFiAiIVYgJiFXIBAhDyAwITIgLSFYIBchDCAlIVkgSyEfIEohNiA6IUcgKSFIICghUCARITQgJCFMIBghJyAsIRwgCiEhICMhGSAvIQsLIAFBAXEhBEEAIQNBASEBIARFDQALIAIgViBVoSBHRAAAAAAAAADAoiIKojkDmAQgAiAWIAqiOQOQBCACIDIgV6EgSCBIoCIWojkDiAQgAiAPIBaiOQOABCACIBIgUCBQoCIPojkD0AMgAiAqIA+iOQPIAyACIFkgWKEgSEQAAAAAAAAAwKIiD6I5A/gDIAIgDCAPojkD8AMgAiA7RAAAAAAAADLAokT0/dR46SaRP6I5A+gDIAIgOyA7oCIMIDYgH6GiOQPgAyACIAwgC6I5A9gDIAIgKCAooCIMICCiOQOYAyACIDpEAAAAAAAAAMCiIg8gIiAzoaI5A/gEIAIgDyAOojkD8AQgAiApICmgIgsgMCAmoaI5A+gEIAIgCyAQojkD4AQgAiAMIBuiOQOQAyACIE1E9vCQImWdkT+iRCi/oOC9BhlAoEQYLURU+yEZQBBMOQOYBSACIE1EUIvBw7RvzT+iRFHF6BQ/4RJAoCBeoUQYLURU+yEZQBBMOQOQBSACIA1EAAAAAAAAIsCiRAAAAAAAADXAoCILIAqiRPT91HjpJpE/ojkDoAQgAiALIA+iRAfOGVHaG6w/ojkDgAUgAiApRAAAAAAAAADAoiILICUgLaGiOQPYBCACIAsgF6I5A9AEIAIgMUQAAAAAAAAywKJEB84ZUdobrD+iOQPIBCACIDEgMaAiCyBKIEuhojkDwAQgAiALIC+iOQO4BCACIBNEgKzwvlRydT9jIBNETwsrA3GYbD9kcUECIB1EAAAAAAAA4D9mRSATRCZw626e6oA/ZkUgE0SxM4XOa+yCP2VFcnIiAxsiATYC+AEgAisDmAYhDiACKwPYASERIAIrA5AGISAgAisD0AYhFyACKwPQASEQIAIrA6gGISogAisDqAQhEiACKwOgBiEWIAIrA6gHIQ8gAiApRMgpY95qwSQ/oiAwICagoiBXIDKgIEhE3jWJ/mcN6T6ioqA5A/ACIAIgKETIKWPeasEkP6IgK6IgTyBQRN41if5nDek+oqKgOQPQAiACIDpEyClj3mrBJL+iIA1EAAAAAAAAGMCiIgsgIiAzoEQAAAAAAAAswKCgoiALIFUgVqBEAAAAAAAALMCgoCBHRN41if5nDem+oqKgIkc5A/gCIDFEyClj3mrBJD+iIEogS6BEAAAAAAAAGMCgoiEMRAAAAAAAAAAAITIgO0TeNYn+Zw3pPqIgHyA2oEQAAAAAAAAYwKCiIBoCfAJAIDxEoNes7unOqj9jDQAgPES6eYmsv7YIQGQNACBYIFmgIEhE3jWJ/mcN6b6iogwBC0QAAAAAAAAAAAsgFUQAAAAAAADwPyAVRAAAAAAAAAAAYhujIhuioSELAkAgPESg16zu6c6qP2MNACA8RLp5iay/tghAZA0AIClEyClj3mrBJL+iICUgLaCiITILIAIgGzkDgAMgAiAMIAugIhk5A4gDIBVEAAAAAAAAAABiBEAgAiAbIDIgFaOgIhs5A4ADIAIgGpogFaMgMqIgGaAiGTkDiAMLIBJEAAAAAAAAAACgRBgtRFT7IRlAEEwhGCABRQ0AIFogW6AhDCATIA+jRFVVVVVVVeU/EEkhHwJ8IANFBEAgDSAOoiEMIA5EexSuR+F65L+gRClcj8L1KNy/oiELAnwgDkTNzMzMzMzkP2UEQCANRArXo3A9SjBAoiAORFg5tMh2firAokQhsHJoke0MQKCgIRIgDEQK16Nwve2QQKIgDUSTGARWDnSZwKIgDkTXo3A9Ck+KQKJEGy/dJAZNYsCgoKAhIyAMRGiR7Xw/n3NAoiANRC/dJAaBcX3AoiAORJHtfD81Vm5AokRWDi2ynY9EwKCgoCEnIAxEUWuad5xSYkCiIA1EKqkT0ETUasCiIA5EguLHmLtyW0CiREcDeAsk6DLAoKCgIRkgDET0/dR46ZJjQKIgDUTFILByaI1swKIgDkQpXI/C9VhdQKJEWmQ7309NM8CgoKAhNCAMRGQ730+N+KxAoiANRHnpJjEIbLbAoiAORGIQWDn0k6dAokT0/dR46aCAwKCgoAwBCyAMRPYoXI9CQ8hAoiANRHsUrkex49fAoiAOREjhehQOmc9AokR7FK5HYfurwKCgoCEjIAxEi2zn++mHrECiIA1EokW28/0ZvMCiIA5EDi2yna+WskCiRKabxCAwc5DAoKCgIScgDETZzvdT4/+SQKIgDUQ1XrpJzH2iwKIgDkQSg8DKoUuYQKJEj8L1KFxpdcCgoKAhGSAMRMuhRbZzeJNAoiANRJqZmZnZ36LAoiAORJZDi2xnu5hAokQv3SQGga11wKCgoCE0IAxE3SQGgZWrcECiIA1EK4cW2c7Lf8CiIA5EyXa+nxq9dECiRHWTGARWBlLAoKCgIRIgDERxPQrXI5feQKIgDURSuB6F62jqwKIgDkQUrkfhOjzdQKJEXI/C9agdtMCgoKAgDkThehSuR+HmP2QNABogDUThehSuR2etQKIgDkQAAAAAwDiywKJEKVyPwvXilkCgoAshCiALRC/dJAaBldO/oCEWAnwgDkRmZmZmZmbmP2MEQCAMRGZmZmZm3bRAoiANRPYoXI9i2MDAoiAORAAAAABAUrJAokQX2c73U62KwKCgoCEhIAxEGy/dJIbZtECiIA1EduCcEbWVwMCiIA5E0m9fB57YsUCiROik942vtYnAoKCgITsgDEQpXI/CNaa1QKIgDUT2KFyPYrTBwKIgDkSPwvUonHyzQKJEZapgVNK5jMCgoKAMAQsgDETsUbgeXTn8QKIgDURxPQrXW6ANwaIgDkTsUbgeN88EQaJEj8L1KPyK48CgoKAhISAMRMP1KFxr3QFBoiANRD0K16Nw4xLBoiAORJqZmZkPuQpBokTZzvdTA0XpwKCgoCE7IAxEpHA9Ch+0+kCiIA1EmpmZmXEODMGiIA5Ej8L1KIS6A0GiRFyPwvV4jeLAoKCgCyFPIAIgICAqICCgoCAYoSAYoUQYLURU+yEZQBBMIjI5A4gFIAIgFSAVoiI2RAAAAAAAAPg/oiATIBOiRAAAAAAAAAhAoiAfIB+ioiIPRF3k++hqBL4+oiIMoiASojkDiAIgAiAaIBqgIhJEAAAAAAAA8D+gIgsgFKBEAAAAAAAA6D+iIiogDKIgFqI5A4ACIAIgFUQAAAAAAAD+v6IgFEQAAAAAAAAIwKIiDCALoCIWoiAfIA+iIg9EG/1KXTQYmT6iIguiIBmiOQOYAiACIBVEAAAAAAAA/j+iIAxEAAAAAAAA8D8gEqEiDKCiIAuiIDSiOQOQAiACIBUgNkSVlQ0IALATQKIgFEQAAAAAAAAkQKIiEiAaRAAAAAAAABDAokQAAAAAAAAAwKCgoiAWRJWVDQgAQBpAoqCiIB8gHyAPoiIPoiIYRIniam+zrX4+oiILoiAhojkDuAIgAiAVRAAAAAAAsCNAoiA2IBREAAAAAAAAFMCiIAygoiAURAAAAAAAABhAoiAaRAAAAAAAABBAokQAAAAAAAAAwKCgRNoSwVFVVdU/oqCiIAuiIAqiOQOwAiACIDYgNkQAAAAAALBDQKKiIA8gD6BEveCL9negPz6iIguiICOiOQOoAiACIDZEAAAAAACAQUCiICqiIAuiICeiOQOgAiACIBVEAAAAAACIPUCiIhYgFCAURAAAAAAAACTAoiAaRAAAAAAAACBAoiIPRAAAAAAAAChAoKCiIBpEAAAAAAAAIMCiIgxEAAAAAAAAAMCgoKIgGCAYoES39EvHWbIiPqIiC6IgT6I5A8gCIAIgFiAUIBIgD0QAAAAAAAAowKCgoiAMRAAAAAAAAABAoKCiIAuiIDuiOQPAAiARIBugRFetTlrN63G/oCILIAugIEcgEKCgDAELIAIgFiAqICCgoCAYoUQYLURU+yEZQBBMIjI5A4gFIAIgDSANRAAAAAAAAOo/okQAAAAAAAAEwKCiRAAAAAAAAPA/oCA+ID5EAAAAAAAA6D+iIguiIB8gEyATRAAAAAAAAAhAoqIgH6KiIg8gD6CiokRd5PvoagS+PqI5A+ACIAIgHyANIA2gRAAAAAAAAPA/oCAVIBVEAAAAAAAA7j+ioiAaRAAAAAAAAAhAokQAAAAAAADwP6CiIAuhIA+iokS1tiwZqQDCPqKiOQPYAiACIB8gDSANRHKndLD+bxpAokQAAAAAAAAYwKCiRAAAAAAAAPA/oCA+ID4gPkQAAAAAAAD+P6KioiAPRAAAAAAAAAhAoqKiRAAzjfposY0+oqI5A+gCIEcgDCAQoERXrU5azetxv6CgIBmgIBugCyELIAIgMjkDqAUgAkIANwOgBSACIBc5A7AFIAIgCyAXoTkDsAQLIAIoAixBAUYNACACIB5EAAAAAAAAEECiIDeiIAIrA0AiFiAWoiIPoiISOQNYIAIgDyAPoCASoDkDqAEgAiAeRAAAAAAAADFAoiBSoCAWIDcgEqKiRAAAAAAAAAhAoyILoiIMOQNgIAIgDEQAAAAAAAAIQKIgFiASRAAAAAAAAChAoiAPRAAAAAAAACRAoqCioEQAAAAAAADQP6I5A7ABIAIgFiAeRAAAAAAAoGtAoiBSRAAAAAAAAD9AoqAgNyAeIAtEAAAAAAAA4D+ioqKioiILOQNoIAIgD0QAAAAAAAAuQKIgEiASoCAPoKIgEkQAAAAAAAAYQKIgEqIgC0QAAAAAAAAIQKIgFkQAAAAAAAAoQKIgDKKgoKBEmpmZmZmZyT+iOQO4AQsgAkEYakQAAAAAAAAAACACQdAIaiACQbAIahBtIAJB7gA6ACkLIAAgAisD2AUgAisD4AWgRAAAAMDFnkLBoEQAAAAAcJmUQaIiKjkDQCAARBgtRFT7IRlAIAIrA7AGo0QAAAAAAABOQKJEAAAAAABAj0CiIgs5AyAgACALRAAAAAAAQI9AoyILOQMoIAIgCzkD2AcgACACKwPIBSIPOQNgIAAgAisDwAUiDDkDaCAAIAIrA5gGIhY5A3AgACACKwOIBjkDeCACKwOgByESIAAgCDYCnAEgACASOQOAASAAQgA3A0ggACBRRABU2ltmqPZCIFFEAAAAAAAAAABkGyALRBgtRFT7IRlAoyILIAuiokRVVVVVVVXVPxBJIgtEAAAAAAAA8D8gFiAWoqGfojkDOCAAIAs5AzAgAEIANwNQIABCADcDWCAAIA8gEqJEAAAAAABAj0CiOQOQASAAIAwgEqJEAAAAAABAj0CiOQOIASAAQRhqIgQhAQJAAkAgACgCGCIDRQ0AA0AgAyIBKwMQIgsgKmQEQCABIgQoAgAiAw0BDAILIAsgKmNFDQIgASgCBCIDDQALIAFBBGohBAtB8AcQVCIDICo5AxAgA0EYakEAQdgHECkaIAMgATYCCCADQgA3AgAgBCADNgIAIAMhASAAKAIUKAIAIgUEQCAAIAU2AhQgBCgCACEBCyAAKAIYIAEQbiAAIAAoAhxBAWo2AhwLIANBGGogAkEYaiIBQdgHECsaIABBoAFqIAFB2AcQKxogAiwA+wdBAEgEQCACKALwBxA0CyACLACHCEEASARAIAIoAvwHEDQLIAIsAJMIQQBIBEAgAigCiAgQNAsgAkHwCGokAEEADwsQVQALXQECfyMAQRBrIgMkACABIAAoAgQiBEEBdWohASAAKAIAIQAgBEEBcQRAIAEoAgAgAGooAgAhAAsgAyACNgIMIAEgA0EMaiAAEQMAIQAgAygCDBACIANBEGokACAACw0AIAEgACgCAGorAwALDwAgASAAKAIAaiACOQMACw0AIAEgACgCAGooAgALDwAgASAAKAIAaiACNgIACxkAIAAEQCAAKAIAEGggACgCBBBoIAAQNAsLKAEBfyMAQRBrIgMkACADIAI2AgwgACABIAIQvQEhACADQRBqJAAgAAvHAQECfyMAQRBrIgEkAAJ8IAC9QiCIp0H/////B3EiAkH7w6T/A00EQEQAAAAAAADwPyACQZ7BmvIDSQ0BGiAARAAAAAAAAAAAEOoEDAELIAAgAKEgAkGAgMD/B08NABoCQAJAAkACQCAAIAEQwgFBA3EOAwABAgMLIAErAwAgASsDCBDqBAwDCyABKwMAIAErAwhBARDpBJoMAgsgASsDACABKwMIEOoEmgwBCyABKwMAIAErAwhBARDpBAshACABQRBqJAAgAAvLAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAwPIDSQ0BIABEAAAAAAAAAABBABDpBCEADAELIAJBgIDA/wdPBEAgACAAoSEADAELAkACQAJAAkAgACABEMIBQQNxDgMAAQIDCyABKwMAIAErAwhBARDpBCEADAMLIAErAwAgASsDCBDqBCEADAILIAErAwAgASsDCEEBEOkEmiEADAELIAErAwAgASsDCBDqBJohAAsgAUEQaiQAIAALqAMCBX8BfiAAvUL///////////8Ag0KBgICAgICA+P8AVCABvUL///////////8Ag0KAgICAgICA+P8AWHFFBEAgACABoA8LIAG9IgdCIIinIgJBgIDA/wNrIAenIgVyRQRAIAAQsQEPCyACQR52QQJxIgYgAL0iB0I/iKdyIQMCQCAHQiCIp0H/////B3EiBCAHp3JFBEACQAJAIANBAmsOAgABAwtEGC1EVPshCUAPC0QYLURU+yEJwA8LIAJB/////wdxIgIgBXJFBEBEGC1EVPsh+T8gAKYPCwJAIAJBgIDA/wdGBEAgBEGAgMD/B0cNASADQQN0QZD9EmorAwAPCyAEQYCAwP8HRyACQYCAgCBqIARPcUUEQEQYLURU+yH5PyAApg8LAnwgBgRARAAAAAAAAAAAIARBgICAIGogAkkNARoLIAAgAaOZELEBCyEAAkACQAJAIAMOAwQAAQILIACaDwtEGC1EVPshCUAgAEQHXBQzJqahvKChDwsgAEQHXBQzJqahvKBEGC1EVPshCcCgDwsgA0EDdEGw/RJqKwMAIQALIAALryACMXwEfyMAQTBrIjUkACAAIAE5A4ABIABBADYCDCAAKwPYASABIAGiIgWiIQggACsDwAEgAaIgACsD+AWgIQogBSAAKwOIAaIhEiAAKwPgBSIGIAArAzCiIAGiIRhEAAAAAAAA8D8gACsDKCABoqEhDyAAKwNoIicgAaIgACsDiAYiKKAhDCAAKwO4ASABoiAAKwOQBqAhBCAAKwOQByEdIAArA4gHIR8gACgCFEEBRwRAIAUgAaIiCSABoiIHIAEgACsDoAGiIAArA5gBoKIgACsDkAEgCaIgEqCgIRIgDyAAKwNAIAWioSAAKwNIIAmioSAAKwNQIAeioSEPIAArA2AhBSAEEGohCSAMIAArA3AgAaIgACsD0AEgBSAJokQAAAAAAADwP6AiBSAFoiAFoiAAKwNYoaKgIgWhIQwgACsDeCEJIAQgBaAiBBBrIQUgBiAAKwM4oiAFIAmhoiAYoCEYCyAIIAqgIQggACsD8AUhCSAAKwOABiETQQIhNgJAAkACfCAAKwO4BiIQIAAtABIiOEHkAEcNABogACsD4AIhBSAAKwPoAiABoiAIoCEIIAArA/ACIAGiIAygIQwgACsD2AIgAaIgCaAhCSAAKwO4AiABoiAToCETIAArA/AEIQogACsDmAQhGSAAKwPQAiEVIAArA8gCIREgACsDwAIhFiAAKwOwAiEaIAArA6gCIRsgACsDoAIhHCAAKwOYAiEgIAArA5ACISEgACsDiAIhIiAAKwOAAiEjIAArA/gBISQgACsD8AEhJSAAKwPoASEmIAAoAuABITcgAURXrU5azetxP6IgACsDkASgRBgtRFT7IRlAEEwhFCA3RQRAIAUgAaIgBKAhBCAQDAELAkACQCAAKwOIBSIFRAAAAAAAAAAAYQ0AIAUgAaJEAAAAAAAAAABlDQAgAZkgBZljRQ0BCyAAIBA5A5gFIABCADcDiAUgACAKOQOQBUQAAAAAAAAAACEFC0QAAAAAAICGQEQAAAAAAICGwCABRAAAAAAAAAAAZBshDSAAKwOYBSEGIAArA5AFIQQCQCA3QQJGBEADQCAERGCkYUIWExfAoCIREGohCyAEICcgBaIgKKAiCiAKoCIOoERgpGFCFhMXwKAiFRBqIRYgCiAEoCIHRPSIsGUieu6/oCIXEGohKSAEIAqhIh5E9IiwZSJ67r+gIioQaiErIAdEzOuIQzbQ8L+gIiwQaiEtIB5EzOuIQzbQ8L+gIh4QaiEuIAQgBKAiB0Q3Akx08dL8v6AiLxBqITAgDiAHoEQ3Akx08dL8v6AiMRBqITIgCiAHoEQ4CrVLwKQRwKAiMxBqITQgBiAZoCIOIBogByAKoUQ4CrVLwKQRwKAiChBqoiAbIDSiICIgMqIgMCAhoqCgoCIHIAegIBwgLqIgICAtoiAjICuiICQgKaIgJiAWoiALICWioKCgoKCgoiELIBEQayEHIBUQayERIBcQayEVICoQayEWIDEQayEXIC8QayEpICwQayEqIB4QayEeIDMQayErIBogChBroiAbICuiIBwgHqIgICAqoiAhICmiICIgF6IgIyAWoiAkIBWiICYgEaIgByAloqCgoKCgoKCgoCEKIAEgBaEiB5lEAAAAAACAhkBmRQ0CIAAgDSAFoCIFOQOIBSAAIAtEAAAAAACkD0GiIAogDaIgBqCgIgY5A5gFIAAgCkQAAAAAAKQPQaIgDiANoiAEoKAiBDkDkAUMAAsACyAVRAAAAAAAAAhAoiEaIBEgEaAhGwNAIARE1UgiZrzOwL+gIgcQayEKIAREYKRhQhYTB8CgIg4gDqAiDhBrIQsgFSAERA0raJx+99e/oEQAAAAAAAAIQKIiHBBroiAWIAqiIAsgEaKgoCEKIAcQaiEHIA4QaiELIAYgGaAiDiAaIBwQaqIgFiAHoiAbIAuioKCiIQsgASAFoSIHmUQAAAAAAICGQGZFDQEgACANIAWgIgU5A4gFIAAgC0QAAAAAAKQPQaIgCiANoiAGoKAiBjkDmAUgACAKRAAAAAAApA9BoiAOIA2iIASgoCIEOQOQBQwACwALIBQgFKAgByAKIAeiIgWiRAAAAAAAAOA/oiAOIAeiIASgoCIEIAggCKChoCAUIAQgCKEgDKGgIDdBAUcbIQQgByALIAeiokQAAAAAAADgP6IgBSAGoKAgEKEgEKALIgVEAAAAAAAAAABlDQAgDyAPIB0gBaNEVVVVVVVV5T8QSaKiIgpEAAAAAAAA+D8QSSEGQQEhNiATIBihIgVEAAAAAAAA8D9mDQAgBUT8qfHSTWJQv2MNACAAIB0gBqMiGDkD8AYgACAJOQPQBiAAIAo5A8AGIAAgDEQYLURU+yEZQBBMIgY5A+AGIAAgCEQYLURU+yEZQBBMIgc5A9gGIABEje21oPfGsD4gBSAFRI3ttaD3xrA+YxsiBTkDyAYgACAQIBKiIASgIAygIAigRBgtRFT7IRlAEEwgBqEgB6FEGC1EVPshGUAQTCIEOQPoBiA1IAk5AxggNSAFOQMoIDUgBjkDICA1IAc5AwggNSAEOQMQAkAgOEHkAEcEQCAAKwPIASEGIAArAxghASAJEGshCCAJEGohDAwBCyAAKwP4AiEHIAArA4ADIQ0gACsDiAMhECAAKwOQAyEPIAArA5gDIQ4gACsDoAMhDCAAKwOoAyELIAArA7ADIRIgACsDuAMhEyAAKwPAAyERIAArA8gDIRQgACsD0AMhGSAAKwPYAyEVIAArA+ADIRYgACsD6AMhCCAAKwPwAyEaIAArA/gDIRsgACsDgAQhHCAAKwOIBCEgIAArA6AEISEgACsDqAQhIiAAKwOwBCEjIAArA7gEISQgACsDwAQhJSAAKwPIBCEFIAArA9AEIQYgACsD2AQhJiAAKwPgBCEnIAArA+gEISggACsD+AQhCSAALAAQITYgAUTeNYn+Zw3pPqIgACsDgAWgIgQQa0T0/dR46SahP6IgBKAiFxBrIQQgFxBqIRcgNSAFIAFEyClj3mrBJD+iIAmgIgEQa0QHzhlR2hu8P6IgAaAiCRBrIgFEAAAAAAAA4D+iIAGiRAAAAAAAANC/oCIFoiAJEGogAUQAAAAAAADgv6KiIgkgBqKgIAggBCAERAAAAAAAAOA/oqJEAAAAAAAA0L+gIgiiIBcgBEQAAAAAAADgv6KiIgYgGqKgoCAMoSIMIDUrAxigOQMYIDUgDSAFoiAJIAeioCASIAiiIAYgE6KgoCAQoSA1KwMooDkDKCAkIAWiIAkgJaKgIBUgCKIgBiAWoqCgIA6hIQcgIyABoiAhIAWiIAkgIqKgoCAZIASiIBEgCKIgBiAUoqCgoCAPoSENICggAaIgJiAFoiAJICeioKAgICAEoiAbIAiiIAYgHKKgoKAgC6EhCSA1KwMYIgUQaiEBIAUQayEEAkAgBUSamZmZmZnJP2YEQCA1IA0gASAHIASjIgGioSA1KwMgoDkDICA1IAEgNSsDCKA5AwggNSAJIDUrAxCgOQMQDAELIDUgNSsDCCIGRBgtRFT7IRlAEEwiBUQYLURU+yEZQKAgBSAFRAAAAAAAAAAAYxsgBSA2QeEARiI2GyIFOQMIIAYQayEIIAYQaiEGIDUrAyAhECA1KwMQIQ8gNSAEIAiiIAcgBqIgCCAMIAGiIg6ioKAgBCAGoiAOIAaiIAcgCKKhoBBsIghEGC1EVPshGUCgIAggCEQAAAAAAAAAAGMbIAggNhsiCEQYLURU+yEZQEQYLURU+yEZwCAFIAhkG0QAAAAAAAAAgCAFIAihmUQYLURU+yEJQGQboDkDCCA1IAkgNSsDEKAiCDkDECA1IAEgBaIgDyAQoKAgCSANoCAFIAyiIASioaAgCKEgASA1KwMIoqE5AyALIDUrAxgiCUQAAAAAAAAAAGMEQCA1IDUrAwhEGC1EVPshCUCgOQMIIDUgNSsDIEQYLURU+yEJwKA5AyAgCZohCQtBAyE2IDUrAygiBUQAAAAAAAAAAGMNASAFRAAAAAAAAPA/ZA0BIAArA7AHIQQgACAJEGsiCCAERAAAAAAAAOC/oqIiATkDGCAJEGoiDEQAAAAAAAAUQKJEAAAAAAAACECgIAggBEQAAAAAAADQv6KioiEEIAACfCAMRAAAAAAAAPA/oCIGmUQa38RBZmN6PWQEQCAEIAajDAELIAREGt/EQWZjej2jCyIGOQPIAQsgBSA1KwMgIgQQa6IgAUQAAAAAAADwPyAKRAAAAAAAAPA/IAUgBaKhoqMiAaKgIgeaIQ5BASE2IAEgBqIgBSAEEGqiIgGiIAQgNSsDEKAgNSsDCCIPoKAgD6FEGC1EVPshGUAQTCIGIQQDQERmZmZmZmbuP0RmZmZmZmbuvyABIAQQayINoiILIA4gBBBqIhCiIhIgBqCgIAShRAAAAAAAAPA/IBAgAaIiE6EgDSAHoiIRoaMiBUQAAAAAAAAAAGQbIAUgBZlEZmZmZmZm7j9mGyIFmUQR6i2BmZdxPWYEQCAEIAWgIQQgNkEKSSE3IDZBAWohNiA3DQELC0EEITYgCkQAAAAAAADwPyABIAGiIAcgB6KgoSIEoiIORAAAAAAAAAAAYw0AIB8gHaJEAAAAAAAATkCjIQUgCiAKRAAAAAAAAPA/IBMgEaChoiIGoyITIA0gB6EgASALIBKgIgsgBJ8iEkQAAAAAAADwP6CjIg2ioaIiBCATIAcgDaIgECABoaCiIgEgAaCiIQ0gBEQAAAAAAAAAwKIgBKJEAAAAAAAA8D+gIRAgCp8gC6IgBqMhEyAOnyAGoyERIAQgARBsIRREAAAAAAAA8D8gDqMiASABIAArA5gHRAAAAAAAAOA/oqIiDqIhCwJAIDhB5ABHBEAgACsDsAEhBCAAKwOoASEKIAArAyAhBwwBCyAARAAAAAAAAPA/IAwgDKIiAaEiCjkDqAEgACABRAAAAAAAABxAokQAAAAAAADwv6AiBDkDsAEgACABRAAAAAAAAAhAokQAAAAAAADwv6AiBzkDIAsgC0QAAAAAAADQv6IgBKIgDaIgFKAiBBBqIQEgDCALRAAAAAAAAPg/oiILoiIUIA2iIA+gIg8QaiEMIA8QayEPIAIgHyAGRAAAAAAAAPA/IBIgC6IgB6KhoiAQIA5EAAAAAAAA4D+iIAqioqAiBiAIIBSiIBCiIAmgIgkQaiIIIA+aoiILIAQQayIEoiAMIAGioCISoqI5AwAgAiAAKwOIByAGIAQgDCAIoiIUoiAPIAGioCIfoqI5AwggAiAGIAQgCRBrIhmiIgiiIAArA4gHojkDECADIAUgEyANIBggDqIiDSAKoqIgHaOhIgkgCKIgESANIAogEKIgB0QAAAAAAAD4P6KgoiAdo6AiCCAZIAGioqCiOQMQIAMgBSAJIB+iIAggFCABoiAEIA+ioaKgojkDCCADIAUgCSASoiAIIAsgAaIgBCAMoqGioKI5AwBBBiE2IAZEAAAAAAAA8D9jRQ0BCyAAIDY2AgwLIDVBMGokAAuUBAEDfyABIAAgAUYiAjoADAJAIAINAANAIAEoAggiAi0ADA0BAkAgAiACKAIIIgMoAgAiBEYEQAJAIAMoAgQiBEUNACAELQAMDQAMAgsCQCABIAIoAgBGBEAgAiEBDAELIAIgAigCBCIBKAIAIgA2AgQgASAABH8gACACNgIIIAIoAggFIAMLNgIIIAIoAggiACAAKAIAIAJHQQJ0aiABNgIAIAEgAjYCACACIAE2AgggASgCCCIDKAIAIQILIAFBAToADCADQQA6AAwgAyACKAIEIgA2AgAgAARAIAAgAzYCCAsgAiADKAIINgIIIAMoAggiACAAKAIAIANHQQJ0aiACNgIAIAIgAzYCBCADIAI2AggPCwJAIARFDQAgBC0ADA0ADAELAkAgASACKAIARwRAIAIhAQwBCyACIAEoAgQiADYCACABIAAEfyAAIAI2AgggAigCCAUgAws2AgggAigCCCIAIAAoAgAgAkdBAnRqIAE2AgAgASACNgIEIAIgATYCCCABKAIIIQMLIAFBAToADCADQQA6AAwgAyADKAIEIgAoAgAiATYCBCABBEAgASADNgIICyAAIAMoAgg2AgggAygCCCIBIAEoAgAgA0dBAnRqIAA2AgAgACADNgIAIAMgADYCCAwCCyAEQQxqIQEgAkEBOgAMIAMgACADRjoADCABQQE6AAAgAyIBIABHDQALCwumDAIIfwN8IwBBEGsiCCQAIAEgACsDQKFEUmLNhAN68T6iIQ4gACgCHEECTwRAAnwCQAJAIABBGGoiBygCACIGRQRAIAchBANAIAQoAggiBSgCACAERiEGIAUhBCAGDQALDAELIAchBSAGIQQDQCAFIAQgBCsDECABYyIJGyEFIARBBGogBCAJGygCACIEDQALIAUgB0cNAQNAIAYiBSgCBCIGDQALCyAFKwMQDAELAkACQCAAKAIUIAVHBEAgBSgCACIGDQEgBSEGA0AgBigCCCIEKAIAIAZGIQkgBCEGIAkNAAsMAgsgBSsDEAwCCwNAIAYiBCgCBCIGDQALCyAEKwMQIgwgBSsDECINIAEgDKEgDSABoWMbCyEMQcrtEkEREHAgDBBxQdztEkEFEHAgACgCnAEhCSMAQRBrIgQkAAJAIARBCGpB5KEUEHYiCy0AAEUNACAEQeShFCgCAEEMaygCAEGAohRqKAIAIgU2AgQgBSAFKAIEQQFqNgIEIAQoAgQQhAIhBiAEKAIEIgUgBSgCBEEBayIKNgIEIApBf0YEQCAFIAUoAgAoAggRAQALIARB5KEUKAIAQQxrKAIAQfyhFGooAgA2AgBB5KEUKAIAQQxrKAIAQeShFGoiBRCFAiEKIAYgBCgCACAFIAogCSAGKAIAKAIQEQcADQBB5KEUKAIAQQxrKAIAQeShFGpBBRD5AQsgCxB5IARBEGokACAIQeShFCgCAEEMaygCAEGAohRqKAIAIgQ2AgggBCAEKAIEQQFqNgIEIAgoAghBhKsUEHIiBEEKIAQoAgAoAhwRAwAhBSAIKAIIIgQgBCgCBEEBayIGNgIEIAZBf0YEQCAEIAQoAgAoAggRAQALIAUQc0HkoRQQdEHu7RJBDhBwIAciBiEEAkACQCAAKAIYIgVFDQADQCAFIgQrAxAiDSAMZARAIAQhBiAEKAIAIgUNAQwCCyAMIA1kRQ0CIAQoAgQiBQ0ACyAEQQRqIQYLQfAHEFQiBSAMOQMQIAVBGGpBAEHYBxApGiAFIAQ2AgggBUIANwIAIAYgBTYCACAFIQQgACgCFCgCACIJBEAgACAJNgIUIAYoAgAhBAsgACgCGCAEEG4gACAAKAIcQQFqNgIcCyAFKwP4BRBxIAhB5KEUKAIAQQxrKAIAQYCiFGooAgAiBDYCDCAEIAQoAgRBAWo2AgQgCCgCDEGEqxQQciIEQQogBCgCACgCHBEDACEFIAgoAgwiBCAEKAIEQQFrIgY2AgQgBkF/RgRAIAQgBCgCACgCCBEBAAsgBRBzQeShFBB0AkAgDEQAAAAAAADwv2EEQCAAKAIUIQUMAQsCQCAHIgQoAgAiBUUNAANAIAUiBCsDECINIAxkBEAgBCEHIAQoAgAiBQ0BDAILIAwgDWRFDQIgBCgCBCIFDQALIARBBGohBwtB8AcQVCIFIAw5AxAgBUEYakEAQdgHECkaIAUgBDYCCCAFQgA3AgAgByAFNgIAIAUhBCAAKAIUKAIAIgYEQCAAIAY2AhQgBygCACEECyAAKAIYIAQQbiAAIAAoAhxBAWo2AhwLIABBoAFqIAVBGGpB2AcQKxoLIABBoAFqIA5BoIsUQcCLFBBtAkAgACgCrAEiBEEASgRAIAJFDQEgAkIANwMAIAJCADcDECACQgA3AwggACgCrAEhBAwBC0EAIQRBoIsUQeCKFCABRAAAAABwmZRBo0QAAADAxZ5CQaBBiIwUKwMAoCIBRAAAAIAstELBoEQAAAAAoNXhQKMiDCABEHVBwIsUQYCLFCAMIAEQdUHwihRB8IoUKwMARAAAAAAAQI9AojkDAEHgihRB4IoUKwMARAAAAAAAQI9AojkDAEGAixRBgIsUKwMARAAAAAAAQI9AojkDAEHoihRB6IoUKwMARAAAAAAAQI9AojkDAEGIixRBiIsUKwMARAAAAAAAQI9AojkDAEGQixRBkIsUKwMARAAAAAAAQI9AojkDACACQfCKFCkDADcDECACQeiKFCkDADcDCCACQeCKFCkDADcDACADQYCLFCkDADcDACADQYiLFCkDADcDCCADQZCLFCkDADcDEAsgCEEQaiQAIAQLmAIBCH8jAEEQayICJAACQCACQQRqQeShFBB2IgUtAABFDQAgACABaiIGIABB5KEUKAIAQQxrKAIAIgFB6KEUaigCAEGwAXFBIEYbIQcgAUHkoRRqIQMgAUH8oRRqKAIAIQggAUGwohRqKAIAIgFBf0YEQCACIAMoAhwiATYCDCABIAEoAgRBAWo2AgQgAigCDEGEqxQQciIBQSAgASgCACgCHBEDACEBIAIoAgwiBCAEKAIEQQFrIgk2AgQgCUF/RgRAIAQgBCgCACgCCBEBAAsgAyABNgJMCyAIIAAgByAGIAMgAcAQdw0AQeShFCgCAEEMaygCACIAQeShFGogAEH0oRRqKAIAQQVyEHgLIAUQeSACQRBqJAAL7gEBBX8jAEEQayICJAACQCACQQhqQeShFBB2IgUtAABFDQAgAkHkoRQoAgBBDGsoAgBBgKIUaigCACIBNgIEIAEgASgCBEEBajYCBCACKAIEEIQCIQQgAigCBCIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyACQeShFCgCAEEMaygCAEH8oRRqKAIANgIAQeShFCgCAEEMaygCAEHkoRRqIgEQhQIhAyAEIAIoAgAgASADIAAgBCgCACgCIBEaAA0AQeShFCgCAEEMaygCAEHkoRRqQQUQ+QELIAUQeSACQRBqJAALQwAgARDKAiEBIAEgACgCDCAAKAIIIgBrQQJ1SQR/IAAgAUECdGooAgBBAEcFQQALRQRAEN4BAAsgACABQQJ0aigCAAtwAQN/IwBBEGsiASQAAkAgAUEIakHkoRQQdiICLQAARQ0AIAFBBGoiA0HkoRQoAgBBDGsoAgBB/KEUaigCADYCACADIAAQhgIoAgANAEHkoRQoAgBBDGsoAgBB5KEUakEBEPkBCyACEHkgAUEQaiQAC3YBA38jAEEQayIBJAAgACAAKAIAQQxrKAIAaigCGARAAkAgAUEIaiAAEHYiAi0AAEUNACAAIAAoAgBBDGsoAgBqKAIYIgMgAygCACgCGBEAAEF/Rw0AIAAgACgCAEEMaygCAGpBARD5AQsgAhB5CyABQRBqJAAL/wUCA38BfCMAQaABayIEJAAgA0QAAACALLRCwaBEAAAAAKDV4UCjIgdEAAMaR52T50GiIAcgB0TOyeYFMwHavqKiIAeiIAcgB0TrdCDrqdW3P6KioKBEbZBJxuhu8ECgRDmdUqJG35E/okQAAAAAAABuQKNEGC1EVPshGUAQTCIHRBgtRFT7IRlAoCAHIAdEAAAAAAAAAABjGyEHIANEAAAAwAiyQkFkBEAgAkT8qfHSTWKAP6IgAqIgAqIgAkTb+X6iso9awaIgAkRSuB6F69EdQKIgAqKgoEQAAAAAACCsQKNEGra5c9lCX0CgRAAAAAAAgHZAEExEOZ1SokbfkT+iIgIQayEDIAIgAqAQa0Trg8Q6Ov30PaIgA0Tl9eiJXnxLPqIgB6CgIQcLIARCADcDeCAEQgA3A4ABIARCADcDiAEgBEKAgICAgICA+D83A5ABIAQgB0QYLURU+yEZQBBMIgIQaiIDOQNwIARCADcDYCAEIAIQayICOQNoIAQgAzkDUCAEIAKaOQNYA0AgBCAGQRhsaiAEQdAAaiAGQQN0aisDADkDACAGQQFqIgZBA0cNAAsDQCAEIAVBGGxqIAVBA3QgBGorA2g5AwggBUEBaiIFQQNHDQALQQAhBQNAIAQgBUEYbGogBUEDdCAEaisDgAE5AxAgBUEBaiIFQQNHDQALIAFCADcDACABIAQrAwAgACsDAKJEAAAAAAAAAACgIgI5AwAgASAEKwMIIAArAwiiIAKgIgI5AwAgACsDECEDIAQrAxAhByABQgA3AwggASAHIAOiIAKgOQMAIAEgBCsDGCAAKwMAokQAAAAAAAAAAKAiAjkDCCABIAQrAyAgACsDCKIgAqAiAjkDCCAAKwMQIQMgBCsDKCEHIAFCADcDECABIAcgA6IgAqA5AwggASAEKwMwIAArAwCiRAAAAAAAAAAAoCICOQMQIAEgBCsDOCAAKwMIoiACoCICOQMQIAEgBEFAaysDACAAKwMQoiACoDkDECAEQaABaiQACz4AIAAgATYCBCAAQQA6AAAgASABKAIAQQxrKAIAaiIBKAIQRQRAIAEoAkgiAQRAIAEQdAsgAEEBOgAACyAAC7gCAQR/IwBBEGsiBiQAAkACQCAARQ0AIAQoAgwhByACIAFrIglBAEoEQCAAIAEgCSAAKAIAKAIwEQQAIAlHDQELIAcgAyABayIBa0EAIAEgB0gbIgFBAEoEQCABQfD///8HTw0CAkAgAUELTwRAIAFBD3JBAWoiCBBUIQcgBiAIQYCAgIB4cjYCDCAGIAc2AgQgBiABNgIIDAELIAYgAToADyAGQQRqIQcLQQAhCCAHIAUgARApIAFqQQA6AAAgACAGKAIEIAZBBGogBiwAD0EASBsgASAAKAIAKAIwEQQAIQUgBiwAD0EASARAIAYoAgQQNAsgASAFRw0BCyADIAJrIgFBAEoEQCAAIAIgASAAKAIAKAIwEQQAIAFHDQELIARBADYCDCAAIQgLIAZBEGokACAIDwsQVQALIQAgACAAKAIYRSABciIBNgIQIAAoAhQgAXEEQBDeAQALC2ABAn8CQCAAKAIEIgEgASgCAEEMaygCAGoiASgCGCICRQ0AIAEoAhANACABLQAFQSBxRQ0AIAIgAigCACgCGBEAAEF/Rw0AIAAoAgQiACAAKAIAQQxrKAIAakEBEPkBCwt7AQJ/QfjyEkHM7xJB9O8SQQBB6PMSQRFBoPESQQBBoPESQQBB+z1B6/MSQRIQA0H48hJBAkGE8BJB+PMSQRNBFBAEQQQQVCIAQQQ2AgBBBBBUIgFBBDYCAEH48hJBhsEAQfD1EkH48xJBFSAAQfD1EkGQ9BJBFiABEAYLFAAgAARAIAAgACgCACgCBBEBAAsLoQEBBH8jAEEQayICJAAgASgCACIDQfD///8HSQRAAkAgA0EKTQRAIAIgAzoADyACQQRqIQQMAQsgA0EPckEBaiIFEFQhBCACIAVBgICAgHhyNgIMIAIgBDYCBCACIAM2AggLIAQgAUEEaiADECsgA2pBADoAACACQQRqIAARAAAhACACLAAPQQBIBEAgAigCBBA0CyACQRBqJAAgAA8LEFUAC6IBAQV/IwBBEGsiAiQAQRAQVCEBIAAoAgQhBCAAKAIAIQMgAiAALQAKOgAOIAIgAC8BCDsBDCAAQgA3AgAgACwACyEFIABBADYCCCABQZTzEjYCAAJAIAVBAE4EQCABIAM2AgQgASAENgIIIAEgAi8BDDsBDCABIAItAA46AA4gASAFOgAPDAELIAFBBGogAyAEEIABIAMQNAsgAkEQaiQAIAELRQECfyABIAAoAgBqIgAoAgQgAC0ACyIBIAHAQQBIIgMbIgFBBGoQMyICIAE2AgAgAkEEaiAAKAIAIAAgAxsgARArGiACC68BAQR/IwBBEGsiAyQAIAIoAgAiBEHw////B0kEQAJAIARBCk0EQCADIAQ6AA8gA0EEaiEFDAELIARBD3JBAWoiBhBUIQUgAyAGQYCAgIB4cjYCDCADIAU2AgQgAyAENgIICyAFIAJBBGogBBArIARqQQA6AAAgASAAKAIAaiIALAALQQBIBEAgACgCABA0CyAAIAMpAgQ3AgAgACADKAIMNgIIIANBEGokAA8LEFUAC5wBAQJ/IwBBEGsiBCQAAkACQCACQQtJBEAgACACOgALDAELIAJB8P///wdPDQEgBEEIaiACQQtPBH8gAkEQakFwcSIDIANBAWsiAyADQQtGGwVBCgtBAWoQmAIgACAEKAIIIgM2AgAgACAEKAIMQYCAgIB4cjYCCCAAIAI2AgQgAyEACyAAIAEgAkEBahDqARogBEEQaiQADwsQVQALHwAgAEGU8xI2AgAgACwAD0EASARAIAAoAgQQNAsgAAshACAAQZTzEjYCACAALAAPQQBIBEAgACgCBBA0CyAAEDQL7QEBAn9B6PQSQfD0EkHA8BJBAEHo8xJBGEGg8RJBAEGg8RJBAEHCOUHr8xJBGRADQej0EkEBQdDwEkHo8xJBGkEbEARBBBBUIgBBBDYCAEEEEFQiAUEENgIAQej0EkHZwABB+PwTQfjzEkEcIABB+PwTQZD0EkEdIAEQBkEIEFQiAEEANgIEIABBHjYCAEHo9BJB7z1BA0HU8BJBsPQSQR8gAEEAQQAQBUEIEFQiAEEANgIEIABBIDYCAEEIEFQiAUEANgIEIAFBITYCAEHo9BJB6jpBwP0TQfjzEkEiIABBwP0TQZD0EkEjIAEQBgvAAQEDfyAABEAgAEGU8BI2AgACQEHoixQoAgAiAkHkixRGDQAgAiEBAkADQAJAIAEoAgQhAyABKAIIIABGDQAgAyIBQeSLFEcNAQwCCwsgASgCACICIAM2AgQgASgCBCACNgIAQeyLFEHsixQoAgBBAWs2AgAgARA0QeiLFCgCACECCyACQeSLFEYNAEEAIQEDQCACKAIIIAE2AhAgAUEBaiEBIAIoAgQiAkHkixRHDQALC0HwixRBAToAACAAEDQLC28BA39BFBBUIgFBAToABCABQZTwEjYCAEEMEFQiAEHkixQ2AgQgACABNgIIIABB5IsUKAIAIgI2AgAgAiAANgIEQeSLFCAANgIAQeyLFEHsixQoAgAiAEEBajYCACABIAA2AhBB8IsUQQE6AAAgAQsNACABIAAoAgBqLQAACw8AIAEgACgCAGogAjoAAAseACAAIAEgACgCCEEAIAAoAgAoAgAREwAaIAAoAggLNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEbAAsHACAAKAIQCwkAIAAgATYCEAs1AQF/IAEgACgCBCICQQF1aiEBIAAoAgAhACABIAJBAXEEfyABKAIAIABqKAIABSAACxEAAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALEQIACwQAQQALQwEDfyMAQSBrIgEkACABQQhqIgMgADcDACABQRhqIgIgAUEQaiADKQMAEN8BKQMANwMAIAIpAwAhACABQSBqJAAgAAuUAQECfwJAAkACQAJAIAAtAAsiA0GAAXFBB3YEQCAAKAIEIgMgACgCCEH/////B3FBAWsiAkYNAQwCC0EKIQIgA0H/AHEiA0EKRw0CCyAAIAJBASACIAIQxwMgAiEDCyAAKAIAIQIgACADQQFqNgIEDAELIAAgA0EBajoACyAAIQILIAIgA2oiACABOgAAIABBADoAAQvjAQECfyACQQBHIQMCQAJAAkAgAEEDcUUNACACRQ0AIAFB/wFxIQQDQCAALQAAIARGDQIgAkEBayICQQBHIQMgAEEBaiIAQQNxRQ0BIAINAAsLIANFDQECQCAALQAAIAFB/wFxRg0AIAJBBEkNACABQf8BcUGBgoQIbCEDA0AgACgCACADcyIEQX9zIARBgYKECGtxQYCBgoR4cQ0CIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELIAFB/wFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQALgQEBAn8CQAJAIAJBBE8EQCAAIAFyQQNxDQEDQCAAKAIAIAEoAgBHDQIgAUEEaiEBIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELA0AgAC0AACIDIAEtAAAiBEYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyADIARrDwtBAAtjAQJ/AkBB7IsUKAIARQ0AQeiLFCgCACIAKAIAIgFB5IsUKAIAIgIoAgQ2AgQgAigCBCABNgIAQeyLFEEANgIAIABB5IsURg0AA0AgACgCBCEBIAAQNCABIgBB5IsURw0ACwsL8QEBAX9B6PASQfjwEkGQ8RJBAEHo8xJBJ0Gg8RJBAEGg8RJBAEGkwABB6/MSQSgQA0Ho8BJBAUGk8RJB6PMSQSlBKhAEQQgQVCIAQoiAgIAQNwMAQejwEkHKwABBAkG88RJB+PMSQSsgAEEAQQAQBUHQ8RJB6PESQYTyEkHo8BJB6PMSQSxB6PMSQS1B6PMSQS5B+TtB6/MSQS8QA0HQ8RJBAkGU8hJB+PMSQTBBMRAEQQgQVCIAQoiAgIAQNwMAQdDxEkHKwABBAkGw8hJB+PMSQTIgAEEAQQAQBUGgwABBAkG48hJBoPQSQTNBNEEAEAsLEwEBf0EEEFQiAEGw8RI2AgAgAAuTAQEFfyMAQRBrIgIkACAAKAIAIQMgAkEEaiIEIAEgACgCBCIAQQF1aiIBIABBAXEEfyABKAIAIANqKAIABSADCxECACACKAIIIAItAA8iACAAwCIDQQBIIgUbIgBBBGoQMyIBIAA2AgAgAUEEaiACKAIEIgYgBCAFGyAAECsaIANBAEgEQCAGEDQLIAJBEGokACABCykBAX8jAEEQayICJAAgAiABNgIMIAJBDGogABEAACEAIAJBEGokACAACxEAQQQQVCIAQaTyEjYCACAACwkAIAEgABEBAAtyAQJ/IwBBEGsiASQAIAFBBGoiAiAAIAAoAgAoAggRAgAgASABKAIEIAIgASwAD0EASBs2AgAjAEEQayIAJAAgACABNgIMQeCDFEGYPiABEM8BIABBEGokACABLAAPQQBIBEAgASgCBBA0CyABQRBqJAALBgAgABA0CyAAIABBADoACCAAQtPqiZvGrdi58wA3AgAgAEEIOgALCxsAIABBADoABCAAQcLCzasGNgIAIABBBDoACwu8AwEBf0GA8xJBsPMSQdjzEkH48hJB6PMSQTZB6PMSQTdB6PMSQThB9TlB6/MSQTkQA0GA8xJBAkHw8xJB+PMSQTpBOxAEQQgQVCIAQQA2AgQgAEE8NgIAQYDzEkGFwABBAkH88xJB+PMSQT0gAEEAQQAQBUEIEFQiAEEANgIEIABBPjYCAEGA8xJB0zlBA0GE9BJBkPQSQT8gAEEAQQAQBUEIEFQiAEEANgIEIABBwAA2AgBBgPMSQb4+QQJBmPQSQaD0EkHBACAAQQBBABAFQQgQVCIAQQA2AgQgAEHCADYCAEGA8xJBk8AAQQNBpPQSQbD0EkHDACAAQQBBABAFQQgQVCIAQQA2AgQgAEHEADYCAEGA8xJB7z1BBUHA9BJBgPUSQcUAIABBAEEAEAVBCBBUIgBBADYCBCAAQcYANgIAQYDzEkGuwABBBUHA9BJBgPUSQcUAIABBAEEAEAVBCBBUIgBBADYCBCAAQccANgIAQYDzEkHpOUEFQcD0EkGA9RJBxQAgAEEAQQAQBUEIEFQiAEEANgIEIABByAA2AgBBgPMSQcI8QQJBiPUSQfjzEkHJACAAQQBBABAFC9UCAQV/IwBBEGsiASQAQSAQVCECIAAoAgQhAyAAKAIAIQQgASAALQAKOgACIAEgAC8BCDsBACAAQgA3AgAgACwACyEFIABBADYCCAJAAkACQCAFQQBOBEAgASABLQACOgAOIAEgAzYCCCABIAQ2AgQgASABLwEAOwEMIAEgBToADyACQZTzEjYCACACQQRqIQAMAQsgAUEEaiAEIAMQgAEgASwADyEDIAJBlPMSNgIAIAJBBGohACADQQBIDQELIAAgASkCBDcCACAAIAEoAgw2AggMAQsgACABKAIEIAEoAggQgAEgASwAD0EATg0AIAEoAgQQNAsgAkHI8hI2AgAgAkEYEFQ2AhBBGBBUIQAgAkIANwIYIAIgADYCFEGQjBRCADcDAEGIjBRCADcDAEHQjBRCADcDAEHYjBRCADcDACAFQQBIBEAgBBA0CyABQRBqJAAgAgsJAEHsixQoAgALnwUBCH8jAEEQayIDJABB6IsUKAIAIQIgAyADQQRqIgA2AgggAyAANgIEIAJB5IsURwRAQeyLFCgCACEHIANBBGohBQNAAn8gAigCBCIAIAEgAigCCEcNABpB5IsUIQQCQCAAQeSLFEYEQEEBIQkMAQsDQCAAKAIIIgQgAUYhCSABIARHBEAgACEEDAILQeSLFCEEIAAoAgQiAEHkixRHDQALCyACIARHBEBBACEAIAIhBkHsixQgByACIAQoAgAiBUYEf0EBBQNAIAAiB0EBaiEAIAYoAgQiBiAFRw0ACyAHQQJqCyIAayIHNgIAIAIoAgAiBiAFKAIENgIEIAUoAgQgBjYCACADKAIEIgYgAjYCBCACIAY2AgAgAyAFNgIEIAUgA0EEajYCBCAAIAhqIQgLIAQgCQ0AGiAEKAIECyICQeSLFEcNAAsCQCAIRQ0AIAMoAggiACgCACICIAUoAgQ2AgQgBSgCBCACNgIAIANBADYCDCAAIANBBGpGDQADQCAAKAIEIQIgABA0IAIiACADQQRqRw0ACwtB6IsUKAIAIQILIAEEQCABQZTwEjYCAAJAIAJB5IsURg0AIAIhAAJAA0ACQCAAKAIEIQQgACgCCCABRg0AIAQiAEHkixRHDQEMAgsLIAAoAgAiAiAENgIEIAAoAgQgAjYCAEHsixRB7IsUKAIAQQFrNgIAIAAQNEHoixQoAgAhAgsgAkHkixRGDQBBACEAA0AgAigCCCAANgIQIABBAWohACACKAIEIgJB5IsURw0ACwtB8IsUQQE6AAAgARA0QeiLFCgCACECCyACQeSLFEcEQEEAIQADQCACKAIIIABBAWoiADYCECACKAIEIgJB5IsURw0ACwtB8IsUQQE6AAAgA0EQaiQAC+sCAQV/QeiLFCgCACIEQeSLFEcEQANAIAQoAggiBQRAIAVBlPASNgIAQeiLFCgCACIBIQICQCABQeSLFEYNAAJAA0ACQCACKAIEIQMgAigCCCAFRg0AIAMiAkHkixRHDQEMAgsLIAIoAgAiASADNgIEIAIoAgQgATYCAEHsixRB7IsUKAIAQQFrNgIAIAIQNEHoixQoAgAhAQtBACECIAFB5IsURg0AA0AgASgCCCACNgIQIAJBAWohAiABKAIEIgFB5IsURw0ACwtB8IsUQQE6AAAgBRA0CyAEKAIEIgRB5IsURw0ACwsCQEHsixQoAgBFDQBB6IsUKAIAIgEoAgAiAkHkixQoAgAiAygCBDYCBCADKAIEIAI2AgBB7IsUQQA2AgAgAUHkixRGDQADQCABKAIEIQMgARA0IAMiAUHkixRHDQALC0HwixRBAToAACAAKAIYIgMEQCADEDQLIAAoAhwiAARAIAAQNAsLNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRAQAL/wEBBX8jAEEQayIDJAAgACgCGCECAkBB8IsULQAABEAgACACQeyLFCgCAEEYbBA1NgIYIAAgACgCHEHsixQoAgBBGGwQNTYCHEHwixRBADoAAAwBCyACDQAgAEHsixQoAgBBGGwiAhAzNgIYIAAgAhAzNgIcC0EAIQJB6IsUKAIAIgRB5IsURwRAA0ACQCAEKAIIIgUtAARFBEAgA0HkADYCAEGMhhRB0PISIAMQDBoMAQsgBSABIAJBGGwiBiAAKAIYaiAAKAIcIAZqIAUoAgAoAgAREwAaCyACQQFqIQIgBCgCBCIEQeSLFEcNAAsLIAAoAhghACADQRBqJAAgAAseACABIAIgACgCEEEAIAEoAgAoAgAREwAaIAAoAhALOwEBfyABIAAoAgQiBUEBdWohASAAKAIAIQAgASACIAMgBCAFQQFxBH8gASgCACAAaigCAAUgAAsRHAALHgAgASACQQAgACgCFCABKAIAKAIAERMAGiAAKAIUCwcAIAAoAhwLCQAgABCqARA0C2IBAX8gAEHI8hI2AgAgACgCECIBBEAgARA0CyAAKAIUIgEEQCABEDQLIAAoAhgiAQRAIAEQNAsgACgCHCIBBEAgARA0CyAAQZTzEjYCACAALAAPQQBIBEAgACgCBBA0CyAACxkAQYI8QQZBkPUSQaj1EkHLAEHMAEEAEAsLEQAgASACIAMgBCAFIAARIgAL6i4DKnwHfwF+RAAAAAAAAPA/IAArAwBE/Knx0k1iUD+iIiUgJaIgACsDCET8qfHSTWJQP6IiJiAmoqAgACsDEET8qfHSTWJQP6IiJyAnoqCfoyEFQYiNFCsDAEQAAAAAAAAAAGEEQEGIjRRCrYbx2K7cjY0/NwMAC0GAjRQrAwAhFEHAghQrAwAhDyAFICaiIAUgJaIQbCIJEGohBwJ8IAUgJ6IiCL0iNkIgiKdB/////wdxIgBBgIDA/wNPBEAgCEQYLURU+yH5P6JEAAAAAAAAcDigIDanIABBgIDA/wNrckUNARpEAAAAAAAAAAAgCCAIoaMMAQsCQCAAQf////4DTQRAIABBgIBAakGAgIDyA0kNASAIIAggCKIQtgGiIAigDAILRAAAAAAAAPA/IAiZoUQAAAAAAADgP6IiDZ8hBiANELYBIQUCfCAAQbPmvP8DTwRARBgtRFT7Ifk/IAYgBaIgBqAiBSAFoEQHXBQzJqaRvKChDAELRBgtRFT7Iek/IAa9QoCAgIBwg78iCCAIoKEgBiAGoCAFokQHXBQzJqaRPCANIAggCKKhIAYgCKCjIgUgBaChoaFEGC1EVPsh6T+gCyIFmiAFIDZCAFMbIQgLIAgLIQVB6I0UIAc5AwBB8I0UIAkQazkDAEHgjRQgBRBqOQMAQfiNFCAFEGuaOQMAAkACQAJAAkAgAw4CAwABC0EIEFQiMEIANwMADAELRAAAAAAAAAAAIQYCQAJAAkACQAJAIAO3RAAAAAAAAPC/oCIJRAAAAAAAAAAAZEUNAEQYLURU+yEJQCAJoyEFQQAhAANAIAUgBqJEAAAAAAAAAACgIQcCQCAAIC9JBEAgACAHOQMAIABBCGohAAwBCyAAIDFrQQN1IjVBAWoiNEGAgICAAk8NA0H/////ASAvIDFrIjJBAnUiMCA0IDAgNEsbIDJB+P///wdPGyIvBH8gL0GAgICAAk8NBiAvQQN0EFQFQQALIjQgNUEDdGoiMiAHOQMAIDIhMCAAIDFHBEADQCAwQQhrIjAgAEEIayIAKwMAOQMAIAAgMUcNAAsLIC9BA3QgNGohLyAyQQhqIQAgMQRAIDEQNAsgMCExCyAJIDNBAWoiM7ciBmQNAAsgACAvRg0AIABCmNqQorW/yITAADcDAAwECyAvIDFrIjNBA3UiMEEBaiIyQYCAgIACSQ0BCxBXAAtB/////wEgM0ECdSIAIDIgACAySxsgM0H4////B08bIgAEfyAAQYCAgIACTw0BIABBA3QQVAVBAAsgMEEDdGoiMEKY2pCitb/IhMAANwMAIC8gMUcEQANAIDBBCGsiMCAvQQhrIi8rAwA5AwAgLyAxRw0ACwsgMUUNASAxEDQMAQsQrgEACyADQQBMDQELIAJEGC1EVPshCUCiRAAAAAAAgGZAoyEoRAAAAAAAAPA/IBQgFKIgDyAPoqOhnyIFIAWaoiEuIAFBAUchM0EAIS8DQEH4jRQrAwAhDUHwjRQrAwAhDyAwIC9BA3RqKwMAIgUQaiEGQeiNFCsDACEIIA8gBRBrIgmiIAYgCCANoqKgIAhB4I0UKwMAIgeiRAAAAAAAAAAAoiAIIAkgDaIiBaIgBiAPoqFEAAAAAAAAAACioKAiHiAloiAGIA8gDaKiIAkgCKKhIAcgD6JEAAAAAAAAAACiIAYgCKIgDyAFoqBEAAAAAAAAAACioKAiHyAmoqAgBiAHoiAJIAeiRAAAAAAAAAAAoiANRAAAAAAAAAAAoqGgIh0gJ6KgIgYgHUGAjRQrAwAiDSANokHAghQrAwAiBSAFoiIJo6KiIB0gLqIgHaIiB0QAAAAAAADwP6AiCKMhKyAfIAaiIAijISwgHiAGoiAIoyEtIAVEAAAAAAAA8D8gBiAGoiIFIAkgCKKjoZ+iIRIgDSAHRAAAAAAAAPA/IAUgCaOhoJ+iIAijIRwCfAJAIB5EAAAAAAAAAABhIB9EAAAAAAAAAABhcSIARQ0AIB1EAAAAAAAA8D9iDQBBiI4UQgA3AwBBgI4UQoCAgICAgID4PzcDAEGQjhRCADcDAEQAAAAAAADwPyEiRAAAAAAAAAAAISNEAAAAAAAAAAAhJEQAAAAAAADwPyEgRAAAAAAAAAAAISFEAAAAAAAAAAAMAQsgAEUgHUQAAAAAAADwv2JyRQRAQYiOFEIANwMAQYCOFEKAgICAgICA+D83AwBBkI4UQgA3AwBEAAAAAAAA8L8hIEQAAAAAAADwPyEiRAAAAAAAAAAAISNEAAAAAAAAAAAhJEQAAAAAAAAAACEhRAAAAAAAAAAADAELQZCOFEQAAAAAAADwPyAeIB6iIB8gH6KgIgWfoyIHRAAAAAAAAAAAoiIjOQMAQYiOFCAHIB6aoiIkOQMAQYCOFCAfIAeiIiI5AwAgHSAfoiAHoiEgIAUgB5qiISEgHSAeoiAHogshKUGojhQgITkDAEGgjhQgIDkDAEGYjhQgKTkDACAdICcgK6EiCaIgHiAlIC2hIgeiICYgLKEiBSAfoqCgIRoCQCASIBIgIyAJoiAiIAeiIAUgJKKgoCIKIAqgICEgCaIgKSAHoiAFICCioKAiC6IgEiASoiIMIAogCqIiFKEiBaMiCZogCSAJoiAcIByiIhYgCyALoiIPoSAFo0QAAAAAAAAQwKKgnyIFoSIHIAUgCaEiBSAKIAuiRAAAAAAAAAAAZiIAG0QAAAAAAADgP6IiDSALIA0gCqKhIgmaoqKiIBYgDSAMIA2ioqCjIgYgBSAHIAAbRAAAAAAAAOA/oiIHIBIgEiAHIAsgByAKoqEiBZqioqIgFiAHIAwgB6KioKMiB6IgBaAiBaIgDSAGoiAJoCINIAeioUQAAAAAAAAAAGNFBEAgBiEJIA0hCCAHIQYgBSENDAELIAchCSAFIQgLIBogGqIiGiAKIAogBqEiBqIgCyALIA2hIgeioKAgFCAPoCAaoJ8iBSAaIAYgBqIgByAHoqCgn6KjEK8BIQ0gGiAKIAogCaEiEKIgCyALIAihIgeioKAgBSAaIBAgEKIgByAHoqCgn6KjEK8BIQYgCyAKEGwhEwJAIDNFBEAgBkRSuo7OIUi9vqAgKCAGIChjGyEaIA1EUrqOziFIvb6gICggDSAoYxshFAJAIBNEAAAAAAAAAABmRQ0AIBNEGC1EVPsh+T9lRQ0AIAsgEyAUoRCwASIOIAqioSIJIBIgDiAOoCASoqKiIA4gDKIgDqIgFqAiBaMiDyAPoiASIBKaoiAcoiAcoiIHIAkgCSAMoqKgIAWjRAAAAAAAABDAoqAhCCALIBMgGqAiDRCwASIRIAqioSIJIBIgESARoCASoqKiIBEgDKIgEaIgFqAiBaMiBiAGoiAHIAkgCSAMoqKgIAWjRAAAAAAAABDAoqAhCSAOmiEHIBGaIQUgDUQYLURU+yH5P2UEQCALIA4gCJ8gD6FEAAAAAAAA4D+iIheiIAogB6KgoCEZIAsgESAJnyAGoUQAAAAAAADgP6IiGKIgCiAFoqCgIRULIA1EGC1EVPsh+T9kRQ0AIAsgESAGmiAJn6FEAAAAAAAA4D+iIhiiIAogBaKgoCEVIAsgDiAInyAPoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkLAkAgE0QYLURU+yH5P2RFDQAgE0QYLURU+yEJQGVFDQAgCyATIBShIggQsAEiDiAKoqEiCSASIA4gDqAgEqKioiAOIAyiIA6iIBagIgWjIg8gD6IgEiASmqIgHKIgHKIiByAJIAkgDKKioCAFo0QAAAAAAAAQwKKgIQ0gCyAaIBOgELABIhEgCqKhIgkgEiARIBGgIBKioqIgESAMoiARoiAWoCIFoyIGIAaiIAcgCSAJIAyioqAgBaNEAAAAAAAAEMCioCEJIA6aIQcgEZohBSAIRBgtRFT7Ifk/ZQRAIAsgDiANnyAPoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkgCyARIAaaIAmfoUQAAAAAAADgP6IiGKIgCiAFoqCgIRULIAhEGC1EVPsh+T9kRQ0AIAsgESAGmiAJn6FEAAAAAAAA4D+iIhiiIAogBaKgoCEVIAsgDiAPmiANn6FEAAAAAAAA4D+iIheiIAogB6KgoCEZCwJAIBNEGC1EVPshCcBmRQ0AIBNEGC1EVPsh+b9lRQ0AIAsgEyAUoRCwASIOIAqioSIJIBIgDiAOoCASoqKiIA4gDKIgDqIgFqAiBaMiDyAPoiASIBKaoiAcoiAcoiIHIAkgCSAMoqKgIAWjRAAAAAAAABDAoqAhCCALIBogE6AiDRCwASIRIAqioSIJIBIgESARoCASoqKiIBEgDKIgEaIgFqAiBaMiBiAGoiAHIAkgCSAMoqKgIAWjRAAAAAAAABDAoqAhCSAOmiEHIBGaIQUgDUQYLURU+yH5v2UEQCALIA4gD5ogCJ+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGSALIBEgBpogCZ+hRAAAAAAAAOA/oiIYoiAKIAWioKAhFQsgDUQYLURU+yH5v2RFDQAgCyARIAmfIAahRAAAAAAAAOA/oiIYoiAKIAWioKAhFSALIA4gD5ogCJ+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGQsgE0QYLURU+yH5v2RFDQEgE0QAAAAAAAAAAGNFDQEgCyATIBShIggQsAEiESAKoqEiCSASIBEgEaAgEqKioiARIAyiIBGiIBagIgWjIg8gD6IgEiASmqIgHKIgHKIiByAJIAkgDKKioCAFo0QAAAAAAAAQwKKgIQ0gCyAaIBOgELABIhQgCqKhIgkgEiAUIBSgIBKioqIgFCAMoiAUoiAWoCIFoyIGIAaiIAcgCSAJIAyioqAgBaNEAAAAAAAAEMCioCEJIBGaIQcgFJohBSAIRBgtRFT7Ifm/ZQRAIAsgESAPmiANn6FEAAAAAAAA4D+iIheiIAogB6KgoCEZIAsgFCAJnyAGoUQAAAAAAADgP6IiGKIgCiAFoqCgIRULIAhEGC1EVPsh+b9kRQ0BIAsgFCAJnyAGoUQAAAAAAADgP6IiGKIgCiAFoqCgIRUgCyARIA2fIA+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGQwBC0GwjRQgBkT1YbcDcZhcv6AiCTkDAEGojRQgDUT1YbcDcZhcv6AiDTkDAEGIjRQrAwAiEUQAAAAAAADwP2NFDQAgE0QAAAAAAAAAAGMgE0QYLURU+yH5v2RxITEgE0QYLURU+yEJwGZFIBNEGC1EVPsh+b9lRXIhMiATRBgtRFT7Ifk/ZEUgE0QYLURU+yEJQGVFciEBIBNEAAAAAAAAAABmRSATRBgtRFT7Ifk/ZUVyIQAgHJohGiAMmiEqA0ACQCAADQAgCyATIA2hELABIgYgCqKhIgggDCAGIAagoqIgDCAGoiAGoiAWoCIFoyIbIBuiICogFqIiByAIIAwgCKKioCAFo0QAAAAAAAAQwKKgIRQgCyATIAmgIg8QsAEiECAKoqEiCCAMIBAgEKCioiAMIBCiIBCiIBagIgWjIg4gDqIgByAIIAwgCKKioCAFo0QAAAAAAAAQwKKgIQggBpohByAQmiEFIA9EGC1EVPsh+T9lBEAgCyAGIBSfIBuhRAAAAAAAAOA/oiIXoiAKIAeioKAhGSALIBAgCJ8gDqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyAPRBgtRFT7Ifk/ZEUNACALIBAgDpogCJ+hRAAAAAAAAOA/oiIYoiAKIAWioKAhFSALIAYgFJ8gG6FEAAAAAAAA4D+iIheiIAogB6KgoCEZCwJAIAENACALIBMgDaEiFBCwASIGIAqioSIIIAwgBiAGoKKiIAwgBqIgBqIgFqAiBaMiGyAboiAqIBaiIgcgCCAMIAiioqAgBaNEAAAAAAAAEMCioCEPIAsgEyAJoBCwASIQIAqioSIIIAwgECAQoKKiIAwgEKIgEKIgFqAiBaMiDiAOoiAHIAggDCAIoqKgIAWjRAAAAAAAABDAoqAhCCAGmiEHIBCaIQUgFEQYLURU+yH5P2UEQCALIAYgD58gG6FEAAAAAAAA4D+iIheiIAogB6KgoCEZIAsgECAOmiAIn6FEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyAURBgtRFT7Ifk/ZEUNACALIBAgDpogCJ+hRAAAAAAAAOA/oiIYoiAKIAWioKAhFSALIAYgG5ogD5+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGQsCQCAyDQAgCyATIA2hELABIgYgCqKhIgggDCAGIAagoqIgDCAGoiAGoiAWoCIFoyIbIBuiICogFqIiByAIIAwgCKKioCAFo0QAAAAAAAAQwKKgIRQgCyATIAmgIg8QsAEiECAKoqEiCCAMIBAgEKCioiAMIBCiIBCiIBagIgWjIg4gDqIgByAIIAwgCKKioCAFo0QAAAAAAAAQwKKgIQggBpohByAQmiEFIA9EGC1EVPsh+b9lBEAgCyAGIBuaIBSfoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkgCyAQIA6aIAifoUQAAAAAAADgP6IiGKIgCiAFoqCgIRULIA9EGC1EVPsh+b9kRQ0AIAsgECAInyAOoUQAAAAAAADgP6IiGKIgCiAFoqCgIRUgCyAGIBuaIBSfoUQAAAAAAADgP6IiF6IgCiAHoqCgIRkLAkAgMUUNACALIBMgDaEiFBCwASIGIAqioSIIIAwgBiAGoKKiIAwgBqIgBqIgFqAiBaMiGyAboiAqIBaiIgcgCCAMIAiioqAgBaNEAAAAAAAAEMCioCEPIAsgEyAJoBCwASIQIAqioSIIIAwgECAQoKKiIAwgEKIgEKIgFqAiBaMiDiAOoiAHIAggDCAIoqKgIAWjRAAAAAAAABDAoqAhCCAGmiEHIBCaIQUgFEQYLURU+yH5v2UEQCALIAYgG5ogD5+hRAAAAAAAAOA/oiIXoiAKIAeioKAhGSALIBAgCJ8gDqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVCyAURBgtRFT7Ifm/ZEUNACALIBAgCJ8gDqFEAAAAAAAA4D+iIhiiIAogBaKgoCEVIAsgBiAPnyAboUQAAAAAAADgP6IiF6IgCiAHoqCgIRkLIAYgFyAaIBwgGUQAAAAAAAAAAGYboiAMRAAAAAAAAPA/IBcgEqMiBSAFoqGfoqMiBaEgBSAGokQAAAAAAADwP6CjELEBIQcgGCAaIBwgFUQAAAAAAAAAAGYboiAMRAAAAAAAAPA/IBggEqMiBSAFoqGfoqMiBSAQoSAFIBCiRAAAAAAAAPA/oKMQsQFE+MFjGtylTECiIQggAiAHRPjBYxrcpUxAoiIFZARAQaiNFCANRJqZmZmZmbm/oCINOQMACyACIAhkBEBBsI0UIAlEmpmZmZmZub+gIgk5AwALIAIgBaEgEWQNACACIAihIBFkDQALC0HAjRQgHUQAAAAAAAAAAKIiCSAjIBeiIBkgIaKgoCAroDkDAEG4jRQgH0QAAAAAAAAAAKIiByAkIBeiIBkgIKKgoCAsoDkDAEHIjRQgHkQAAAAAAAAAAKIiBSAiIBiiICkgFaKgoCAtoDkDAEHQjRQgLCAHICQgGKIgICAVoqCgoDkDAEHYjRQgKyAJICMgGKIgISAVoqCgoDkDACAEIC9BGGxqIgAgBSAiIBeiICkgGaKgoCAtoEQAAAAAAECPQKI5AwAgAEG4jRQrAwBEAAAAAABAj0CiOQMIIABBwI0UKwMARAAAAAAAQI9AojkDECAEIAMgL2pBGGxqIgBByI0UKwMARAAAAAAAQI9AojkDACAAQdCNFCsDAEQAAAAAAECPQKI5AwggAEHYjRQrAwBEAAAAAABAj0CiOQMQIC9BAWoiLyADRw0ACwtBkI0UQZCNFCsDAEQAAAAAAIBmQKJEGC1EVPshCUCjOQMAQZiNFEGYjRQrAwBEAAAAAACAZkCiRBgtRFT7IQlAozkDACAwBEAgMBA0CwsvAQF/QQQQWSIAQayCFDYCACAAQeD/EzYCACAAQfT/EzYCACAAQcSAFEHNABABAAuuAgMBfAF+AX8gAL0iAkIgiKdB/////wdxIgNBgIDA/wNPBEAgAqcgA0GAgMD/A2tyRQRARAAAAAAAAAAARBgtRFT7IQlAIAJCAFkbDwtEAAAAAAAAAAAgACAAoaMPCwJ8IANB/////gNNBEBEGC1EVPsh+T8gA0GBgIDjA0kNARpEB1wUMyamkTwgACAAIACiELYBoqEgAKFEGC1EVPsh+T+gDwsgAkIAUwRARBgtRFT7Ifk/IABEAAAAAAAA8D+gRAAAAAAAAOA/oiIAnyIBIAEgABC2AaJEB1wUMyamkbygoKEiACAAoA8LRAAAAAAAAPA/IAChRAAAAAAAAOA/oiIAnyIBIAAQtgGiIAAgAb1CgICAgHCDvyIAIACioSABIACgo6AgAKAiACAAoAsLhAEBAn8jAEEQayIBJAACQCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEAgAkGAgIDyA0kNASAARAAAAAAAAAAAQQAQwQEhAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCyAAIAEQwgEhAiABKwMAIAErAwggAkEBcRDBASEACyABQRBqJAAgAAv+AwMDfAJ/AX4gAL0iBkIgiKdB/////wdxIgRBgIDAoARPBEAgAEQYLURU+yH5PyAApiAAvUL///////////8Ag0KAgICAgICA+P8AVhsPCwJAAn8gBEH//+/+A00EQEF/IARBgICA8gNPDQEaDAILIACZIQAgBEH//8v/A00EQCAEQf//l/8DTQRAIAAgAKBEAAAAAAAA8L+gIABEAAAAAAAAAECgoyEAQQAMAgsgAEQAAAAAAADwv6AgAEQAAAAAAADwP6CjIQBBAQwBCyAEQf//jYAETQRAIABEAAAAAAAA+L+gIABEAAAAAAAA+D+iRAAAAAAAAPA/oKMhAEECDAELRAAAAAAAAPC/IACjIQBBAwshBSAAIACiIgIgAqIiASABIAEgASABRC9saixEtKK/okSa/d5SLd6tv6CiRG2adK/ysLO/oKJEcRYj/sZxvL+gokTE65iZmZnJv6CiIQMgAiABIAEgASABIAFEEdoi4zqtkD+iROsNdiRLe6k/oKJEUT3QoGYNsT+gokRuIEzFzUW3P6CiRP+DAJIkScI/oKJEDVVVVVVV1T+goiEBIARB///v/gNNBEAgACAAIAMgAaCioQ8LIAVBA3QiBEHQ/BJqKwMAIAAgAyABoKIgBEHw/BJqKwMAoSAAoaEiAJogACAGQgBTGyEACyAACzIAQcCCFCAARPyp8dJNYlA/okHAghQrAwCgIgA5AwBBgI0UIABEHwx7pYjk7z+iOQMAC6MEAEHg/BNB98AAEA1B+PwTQbk+QQFBAUEAEA5BhP0TQYI9QQFBgH9B/wAQEkGc/RNB+zxBAUGAf0H/ABASQZD9E0H5PEEBQQBB/wEQEkGo/RNBvztBAkGAgH5B//8BEBJBtP0TQbY7QQJBAEH//wMQEkHA/RNB3jtBBEGAgICAeEH/////BxASQcz9E0HVO0EEQQBBfxASQdT9E0GKP0EEQYCAgIB4Qf////8HEBJB9P0TQYE/QQRBAEF/EBJBgP4TQfE7QoCAgICAgICAgH9C////////////ABDwBEGM/hNB8DtCAEJ/EPAEQZj+E0HmO0EEEBNBpP4TQdLAAEEIEBNB8PUSQbU/EA9BuPYSQfLHABAPQYD3EkEEQZs/EBBBzPcSQQJBwT8QEEGY+BJBBEHQPxAQQbT4EkHOPhARQdz4EkEAQa3HABAUQYT5EkEAQZPIABAUQaz5EkEBQcvHABAUQdT5EkECQfrDABAUQfz5EkEDQZnEABAUQaT6EkEEQcHEABAUQcz6EkEFQd7EABAUQfT6EkEEQbjIABAUQZz7EkEFQdbIABAUQYT5EkEAQcTFABAUQaz5EkEBQaPFABAUQdT5EkECQYbGABAUQfz5EkEDQeTFABAUQaT6EkEEQYzHABAUQcz6EkEFQerGABAUQcT7EkEIQcnGABAUQez7EkEJQafGABAUQZT8EkEGQYTFABAUQbz8EkEHQf3IABAUCyQBAn8gACgCBCIAEC9BAWoiARAzIgIEfyACIAAgARArBUEACwskAQF/QbCOFCgCACIABEADQCAAKAIAEQkAIAAoAgQiAA0ACwsLjQEAIAAgACAAIAAgAEQJ9/0N4T0CP6JEiLIBdeDvST+gokQ7j2i1KIKkv6CiRFVEiA5Vwck/oKJEfW/rAxLW1L+gokRVVVVVVVXFP6AgAKIgACAAIAAgAESCki6xxbizP6JEWQGNG2wG5r+gokTIilmc5SoAQKCiREstihwnOgPAoKJEAAAAAAAA8D+gowvLAQEEfwJAA0AgAEUEQEEAIQFB8IQUKAIABEBB8IQUKAIAELcBIQELQdiDFCgCAEUNAiABIANyIQNB2IMUKAIAIQAMAQsLIAAoAkxBAE4hAgJAAkAgACgCFCAAKAIcRg0AIABBAEEAIAAoAiQRBAAaIAAoAhQNAEF/IQEgAg0BDAILIAAoAgQiASAAKAIIIgRHBEAgACABIARrrEEBIAAoAigRFgAaC0EAIQEgAEEANgIcIABCADcDECAAQgA3AgQgAkUNAQsLIAEgA3IL4wEBBH8jAEEgayIEJAAgBCABNgIQIAQgAiAAKAIwIgNBAEdrNgIUIAAoAiwhBSAEIAM2AhwgBCAFNgIYAkACQCAAIAAoAjwgBEEQakECIARBDGoQFyIDBH9BsIYUIAM2AgBBfwVBAAsEf0EgBSAEKAIMIgNBAEoNAUEgQRAgAxsLIAAoAgByNgIADAELIAQoAhQiBSADIgZPDQAgACAAKAIsIgM2AgQgACADIAYgBWtqNgIIIAAoAjAEQCAAIANBAWo2AgQgASACakEBayADLQAAOgAACyACIQYLIARBIGokACAGC84CAQd/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQYgA0EQaiEBAn8DQAJAAkACQCAAKAI8IAEgBiADQQxqEBgiBAR/QbCGFCAENgIAQX8FQQALRQRAIAUgAygCDCIHRg0BIAdBAE4NAgwDCyAFQX9HDQILIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwDCyABIAcgASgCBCIISyIJQQN0aiIEIAcgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAHayEFIAYgCWshBiAEIQEMAQsLIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgBkECRg0AGiACIAEoAgRrCyEAIANBIGokACAAC1YBAX8gACgCPCEDIwBBEGsiACQAIAMgAacgAUIgiKcgAkH/AXEgAEEIahAiIgIEf0GwhhQgAjYCAEF/BUEACyECIAApAwghASAAQRBqJABCfyABIAIbCwkAIAAoAjwQGQs0AAJAQZifFC0AAEEBcQ0AQZifFC0AAEEBcQ0AQZyfFEGgnxRBpJ8UEBtBmJ8UQQE6AAALC5gfAg9/BX4jAEGQAWsiAyQAA0AgAyASp2pBADoAACASQgF8IhJCkAFUDQALIANBfzYCTCADIAA2AiwgA0HPADYCICADIAA2AlQgAiEOQQAhACMAQbACayIGJAAgAygCTBoCQAJAAkACQCADKAIEDQAgAxDQARogAygCBA0ADAELIAEtAAAiBUUNAgJAAkACQAJAA0ACQAJAIAVB/wFxIgJBIEYgAkEJa0EFSXIEQANAIAEiBUEBaiEBIAUtAAEiAkEgRiACQQlrQQVJcg0ACyADQgAQ0gEDQAJ/IAMoAgQiASADKAJoRwRAIAMgAUEBajYCBCABLQAADAELIAMQ0wELIgFBIEYgAUEJa0EFSXINAAsgAygCBCEBIAMpA3BCAFkEQCADIAFBAWsiATYCBAsgASADKAIsa6wgAykDeCAUfHwhFAwBCwJ/AkACQCACQSVGBEAgAS0AASICQSpGDQEgAkElRw0CCyADQgAQ0gECQCABLQAAQSVGBEADQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQ0wELIgUiAkEgRiACQQlrQQVJcg0ACyABQQFqIQEMAQsgAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAhBQwBCyADENMBIQULIAEtAAAgBUcEQCADKQNwQgBZBEAgAyADKAIEQQFrNgIECyAFQQBODQ1BACEHIA8NDQwLCyADKAIEIAMoAixrrCADKQN4IBR8fCEUIAEhBQwDC0EAIQggAUECagwBCwJAIAJBMGtBCk8NACABLQACQSRHDQAjAEEQayIFIA42AgwgBSAOIAJBMGsiAkECdEEEa0EAIAJBAUsbaiICQQRqNgIIIAIoAgAhCCABQQNqDAELIA4oAgAhCCAOQQRqIQ4gAUEBagshAUEAIQIDQCABLQAAIgRBMGtBCkkEQCABQQFqIQEgAkEKbCAEakEwayECDAELC0EAIQwgBEHtAEYEQEEAIQogCEEARyEMIAEtAAEhBCABQQFqIQFBACEACyABQQFqIQVBAyEJIAwhBwJAAkACQAJAAkACQCAEQf8BcUHBAGsOOgQMBAwEBAQMDAwMAwwMDAwMDAQMDAwMBAwMBAwMDAwMBAwEBAQEBAAEBQwBDAQEBAwMBAIEDAwEDAIMCyABQQJqIAUgAS0AAUHoAEYiARshBUF+QX8gARshCQwECyABQQJqIAUgAS0AAUHsAEYiARshBUEDQQEgARshCQwDC0EBIQkMAgtBAiEJDAELQQAhCSABIQULQQEgCSAFLQAAIgFBL3FBA0YiBBshEAJAIAFBIHIgASAEGyILQdsARg0AAkAgC0HuAEcEQCALQeMARw0BQQEgAiACQQFMGyECDAILIAggECAUENkBDAILIANCABDSAQNAAn8gAygCBCIBIAMoAmhHBEAgAyABQQFqNgIEIAEtAAAMAQsgAxDTAQsiAUEgRiABQQlrQQVJcg0ACyADKAIEIQEgAykDcEIAWQRAIAMgAUEBayIBNgIECyABIAMoAixrrCADKQN4IBR8fCEUCyADIAKsIhIQ0gECQCADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQMAQsgAxDTAUEASA0GCyADKQNwQgBZBEAgAyADKAIEQQFrNgIEC0EQIQECQAJAAkACQAJAAkACQAJAAkACQCALQdgAaw4hBgkJAgkJCQkJAQkCBAEBAQkFCQkJCQkDBgkJAgkECQkGAAsgC0HBAGsiAUEGSw0IQQEgAXRB8QBxRQ0ICyAGQQhqIAMgEEEAENcBIAMpA3hCACADKAIEIAMoAixrrH1SDQUMDAsgC0EQckHzAEYEQCAGQSBqQX9BgQIQKRogBkEAOgAgIAtB8wBHDQYgBkEAOgBBIAZBADoALiAGQQA2ASoMBgsgBkEgaiAFLQABIgFB3gBGIgRBgQIQKRogBkEAOgAgIAVBAmogBUEBaiAEGyEHAn8CQAJAIAVBAkEBIAQbai0AACIFQS1HBEAgBUHdAEYNASABQd4ARyEJIAcMAwsgBiABQd4ARyIJOgBODAELIAYgAUHeAEciCToAfgsgB0EBagshBQNAAkAgBS0AACIEQS1HBEAgBEUNDyAEQd0ARg0IDAELQS0hBCAFLQABIgdFDQAgB0HdAEYNACAFQQFqIQ0CQCAHIAVBAWstAAAiAU0EQCAHIQQMAQsDQCABQQFqIgEgBkEgamogCToAACABIA0tAAAiBEkNAAsLIA0hBQsgBCAGaiAJOgAhIAVBAWohBQwACwALQQghAQwCC0EKIQEMAQtBACEBC0IAIRJBACEEQQAhB0EAIQ0jAEEQayIJJAACQCABQQFGBEBBsIYUQRw2AgAMAQsDQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQ0wELIgJBIEYgAkEJa0EFSXINAAsCQAJAIAJBK2sOAwABAAELQX9BACACQS1GGyENIAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAAIQIMAQsgAxDTASECCwJAAkACQAJAAkAgAUEARyABQRBHcQ0AIAJBMEcNAAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQ0wELIgJBX3FB2ABGBEBBECEBAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxDTAQsiAkHRlxNqLQAAQRBJDQMgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgA0IAENIBDAYLIAENAUEIIQEMAgsgAUEKIAEbIgEgAkHRlxNqLQAASw0AIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIANCABDSAUGwhhRBHDYCAAwECyABQQpHDQAgAkEwayIEQQlNBEBBACEBA0AgAUEKbCAEaiIBQZmz5swBSQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQ0wELIgJBMGsiBEEJTXENAAsgAa0hEgsCQCAEQQlLDQAgEkIKfiETIAStIRUDQCATIBV8IRICfyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AAAwBCyADENMBCyICQTBrIgRBCUsNASASQpqz5syZs+bMGVoNASASQgp+IhMgBK0iFUJ/hVgNAAtBCiEBDAILQQohASAEQQlNDQEMAgsgASABQQFrcQRAIAJB0ZcTai0AACIHIAFJBEADQCAHIAEgBGxqIgRBx+PxOEkCfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADENMBCyICQdGXE2otAAAiByABSXENAAsgBK0hEgsgASAHTQ0BIAGtIRMDQCASIBN+IhUgB61C/wGDIhZCf4VWDQIgFSAWfCESIAECfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADENMBCyICQdGXE2otAAAiB00NAiAJIBNCACASQgAQPSAJKQMIUA0ACwwBCyABQRdsQQV2QQdxQdGZE2osAAAhESACQdGXE2otAAAiBCABSQRAA0AgBCAHIBF0ciIHQYCAgMAASQJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQ0wELIgJB0ZcTai0AACIEIAFJcQ0ACyAHrSESCyABIARNDQBCfyARrSITiCIVIBJUDQADQCAErUL/AYMgEiAThoQhEiABAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxDTAQsiAkHRlxNqLQAAIgRNDQEgEiAVWA0ACwsgASACQdGXE2otAABNDQADQCABAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxDTAQtB0ZcTai0AAEsNAAtBsIYUQcQANgIAQn8hEkEAIQ0LIAMpA3BCAFkEQCADIAMoAgRBAWs2AgQLIBIgDawiE4UgE30hEgsgCUEQaiQAIAMpA3hCACADKAIEIAMoAixrrH1RDQcCQCALQfAARw0AIAhFDQAgCCASPgIADAMLIAggECASENkBDAILIAhFDQEgBikDECESIAYpAwghEwJAAkACQCAQDgMAAQIECyAIIBMgEhBROAIADAMLIAggEyASEE05AwAMAgsgCCATNwMAIAggEjcDCAwBC0EfIAJBAWogC0HjAEciDRshAgJAIBBBAUYEQCAIIQQgDARAIAJBAnQQMyIERQ0HCyAGQgA3AqgCQQAhAQNAIAQhAAJAA0ACfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADENMBCyIEIAZqLQAhRQ0BIAYgBDoAGyAGQRxqIAZBG2pBASAGQagCahDUASIEQX5GDQBBACEKIARBf0YNCyAABEAgACABQQJ0aiAGKAIcNgIAIAFBAWohAQsgDEUNACABIAJHDQALQQEhByAAIAIiAUEBdEEBciICQQJ0EDUiBA0BDAsLC0EAIQogACECIAZBqAJqIgQEfyAEKAIARQVBAQtFDQgMAQsgDARAQQAhASACEDMiBEUNBgNAIAQhAANAAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxDTAQsiBCAGai0AIUUEQEEAIQIgACEKDAQLIAAgAWogBDoAACABQQFqIgEgAkcNAAtBASEHIAAgAiIBQQF0QQFyIgIQNSIEDQALIAAhCkEAIQAMCQtBACEBIAgEQANAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxDTAQsiACAGai0AIQRAIAEgCGogADoAACABQQFqIQEMAQVBACECIAgiACEKDAMLAAsACwNAAn8gAygCBCIAIAMoAmhHBEAgAyAAQQFqNgIEIAAtAAAMAQsgAxDTAQsgBmotACENAAtBACEAQQAhCkEAIQILIAMoAgQhBCADKQNwQgBZBEAgAyAEQQFrIgQ2AgQLIAMpA3ggBCADKAIsa6x8IhNQDQIgDSASIBNRckUNAiAMBEAgCCAANgIACwJAIAtB4wBGDQAgAgRAIAIgAUECdGpBADYCAAsgCkUEQEEAIQoMAQsgASAKakEAOgAACyACIQALIAMoAgQgAygCLGusIAMpA3ggFHx8IRQgDyAIQQBHaiEPCyAFQQFqIQEgBS0AASIFDQEMCAsLIAIhAAwBC0EBIQdBACEKQQAhAAwCCyAMIQcMAwsgDCEHCyAPDQELQX8hDwsgB0UNACAKEDQgABA0CyAGQbACaiQAIANBkAFqJAAgDwsEAEEACwQAQgALTQECfyABLQAAIQICQCAALQAAIgNFDQAgAiADRw0AA0AgAS0AASECIAAtAAEiA0UNASABQQFqIQEgAEEBaiEAIAIgA0YNAAsLIAMgAmsLqAMDAnwDfwF+IAC9IghCIIinIgVB+P///wdxQaiolv8DSSIGRQRARBgtRFT7Iek/IAAgAJogCEIAWSIHG6FEB1wUMyamgTwgASABmiAHG6GgIQAgBUEfdiEFRAAAAAAAAAAAIQELIAAgACAAIACiIgSiIgNEY1VVVVVV1T+iIAQgAyAEIASiIgMgAyADIAMgA0RzU2Dby3XzvqJEppI3oIh+FD+gokQBZfLy2ERDP6CiRCgDVskibW0/oKJEN9YGhPRklj+gokR6/hARERHBP6AgBCADIAMgAyADIANE1Hq/dHAq+z6iROmn8DIPuBI/oKJEaBCNGvcmMD+gokQVg+D+yNtXP6CiRJOEbunjJoI/oKJE/kGzG7qhqz+goqCiIAGgoiABoKAiA6AhASAGRQRAQQEgAkEBdGu3IgQgACADIAEgAaIgASAEoKOhoCIAIACgoSIAmiAAIAUbDwsgAgR8RAAAAAAAAPC/IAGjIgQgBL1CgICAgHCDvyIEIAMgAb1CgICAgHCDvyIBIAChoaIgBCABokQAAAAAAADwP6CgoiAEoAUgAQsLuxgDFH8EfAF+IwBBMGsiCCQAAkACQAJAIAC9IhpCIIinIgNB/////wdxIgVB+tS9gARNBEAgA0H//z9xQfvDJEYNASAFQfyyi4AETQRAIBpCAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhY5AwAgASAAIBahRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk/oCIARDFjYhphtNA9oCIWOQMAIAEgACAWoUQxY2IaYbTQPaA5AwhBfyEDDAQLIBpCAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhY5AwAgASAAIBahRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIWOQMAIAEgACAWoUQxY2IaYbTgPaA5AwhBfiEDDAMLIAVBu4zxgARNBEAgBUG8+9eABE0EQCAFQfyyy4AERg0CIBpCAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhY5AwAgASAAIBahRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIWOQMAIAEgACAWoUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAVB+8PkgARGDQEgGkIAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiFjkDACABIAAgFqFEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhY5AwAgASAAIBahRDFjYhphtPA9oDkDCEF8IQMMAwsgBUH6w+SJBEsNAQsgACAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIhdEAABAVPsh+b+ioCIWIBdEMWNiGmG00D2iIhihIhlEGC1EVPsh6b9jIQICfyAXmUQAAAAAAADgQWMEQCAXqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgF0QAAAAAAADwv6AiF0QxY2IaYbTQPaIhGCAAIBdEAABAVPsh+b+ioCEWDAELIBlEGC1EVPsh6T9kRQ0AIANBAWohAyAXRAAAAAAAAPA/oCIXRDFjYhphtNA9oiEYIAAgF0QAAEBU+yH5v6KgIRYLIAEgFiAYoSIAOQMAAkAgBUEUdiICIAC9QjSIp0H/D3FrQRFIDQAgASAWIBdEAABgGmG00D2iIgChIhkgF0RzcAMuihmjO6IgFiAZoSAAoaEiGKEiADkDACACIAC9QjSIp0H/D3FrQTJIBEAgGSEWDAELIAEgGSAXRAAAAC6KGaM7oiIAoSIWIBdEwUkgJZqDezmiIBkgFqEgAKGhIhihIgA5AwALIAEgFiAAoSAYoTkDCAwBCyAFQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgGkL/////////B4NCgICAgICAgLDBAIS/IQBBACEDQQEhAgNAIAhBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3IhY5AwAgACAWoUQAAAAAAABwQaIhAEEBIQMgAiEEQQAhAiAEDQALIAggADkDIEECIQMDQCADIgJBAWshAyAIQRBqIAJBA3RqKwMARAAAAAAAAAAAYQ0ACwJ/IAhBEGohD0EAIQQjAEGwBGsiBiQAIAVBFHZBlghrIgNBA2tBGG0iBUEAIAVBAEobIhBBaGwgA2ohBUHU/RIoAgAiCSACQQFqIgpBAWsiB2pBAE4EQCAJIApqIQMgECAHayECA0AgBkHAAmogBEEDdGogAkEASAR8RAAAAAAAAAAABSACQQJ0QeD9EmooAgC3CzkDACACQQFqIQIgBEEBaiIEIANHDQALCyAFQRhrIQxBACEDIAlBACAJQQBKGyEEIApBAEwhCwNAAkAgCwRARAAAAAAAAAAAIQAMAQsgAyAHaiEOQQAhAkQAAAAAAAAAACEAA0AgDyACQQN0aisDACAGQcACaiAOIAJrQQN0aisDAKIgAKAhACACQQFqIgIgCkcNAAsLIAYgA0EDdGogADkDACADIARGIQIgA0EBaiEDIAJFDQALQS8gBWshE0EwIAVrIQ4gBUEZSCERIAVBGWshFCAJIQMDQCAGIANBA3RqKwMAIQBBACECIAMhBCADQQBMIg1FBEADQCAGQeADaiACQQJ0agJ/An8gAEQAAAAAAABwPqIiFplEAAAAAAAA4EFjBEAgFqoMAQtBgICAgHgLtyIWRAAAAAAAAHDBoiAAoCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAs2AgAgBiAEQQFrIgRBA3RqKwMAIBagIQAgAkEBaiICIANHDQALCwJ/IAAgDBAwIgAgAEQAAAAAAADAP6KcRAAAAAAAACDAoqAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLIQcgACAHt6EhAAJAAkACQAJ/IBFFBEAgA0ECdCAGaiICIAIoAtwDIgIgAiAOdSICIA50ayIENgLcAyACIAdqIQcgBCATdQwBCyAMDQEgA0ECdCAGaigC3ANBF3ULIgtBAEwNAgwBC0ECIQsgAEQAAAAAAADgP2YNAEEAIQsMAQtBACECQQAhBCANRQRAA0AgBkHgA2ogAkECdGoiFSgCACENQf///wchEgJ/AkAgBA0AQYCAgAghEiANDQBBAAwBCyAVIBIgDWs2AgBBAQshBCACQQFqIgIgA0cNAAsLAkAgEQ0AQf///wMhAgJAAkAgFA4CAQACC0H///8BIQILIANBAnQgBmoiDSANKALcAyACcTYC3AMLIAdBAWohByALQQJHDQBEAAAAAAAA8D8gAKEhAEECIQsgBEUNACAARAAAAAAAAPA/IAwQMKEhAAsCQAJAIABEAAAAAAAAAABhBEBBACEEIAMhAiADIAlMDQIDQCAGQeADaiACQQFrIgJBAnRqKAIAIARyIQQgAiAJSg0ACyAERQ0CIAwhBQNAIAVBGGshBSAGQeADaiADQQFrIgNBAnRqKAIARQ0ACwwBCwJAIABBGCAFaxAwIgBEAAAAAAAAcEFmBEAgBkHgA2ogA0ECdGoCfwJ/IABEAAAAAAAAcD6iIhaZRAAAAAAAAOBBYwRAIBaqDAELQYCAgIB4CyICt0QAAAAAAABwwaIgAKAiAJlEAAAAAAAA4EFjBEAgAKoMAQtBgICAgHgLNgIAIANBAWohAwwBCwJ/IACZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyECIAwhBQsgBkHgA2ogA0ECdGogAjYCAAtEAAAAAAAA8D8gBRAwIQAgA0EATgRAIAMhAgNAIAYgAiIEQQN0aiAAIAZB4ANqIAJBAnRqKAIAt6I5AwAgAkEBayECIABEAAAAAAAAcD6iIQAgBA0ACyADIQQDQEQAAAAAAAAAACEAQQAhAiAJIAMgBGsiBSAFIAlKGyIMQQBOBEADQCACQQN0QbCTE2orAwAgBiACIARqQQN0aisDAKIgAKAhACACIAxHIQogAkEBaiECIAoNAAsLIAZBoAFqIAVBA3RqIAA5AwAgBEEASiECIARBAWshBCACDQALC0QAAAAAAAAAACEAIANBAE4EQCADIQIDQCACIgRBAWshAiAAIAZBoAFqIARBA3RqKwMAoCEAIAQNAAsLIAggAJogACALGzkDACAGKwOgASAAoSEAQQEhAiADQQBKBEADQCAAIAZBoAFqIAJBA3RqKwMAoCEAIAIgA0chBCACQQFqIQIgBA0ACwsgCCAAmiAAIAsbOQMIIAZBsARqJAAgB0EHcQwCC0EBIQIDQCACIgRBAWohAiAGQeADaiAJIARrQQJ0aigCAEUNAAsgAyAEaiEEA0AgBkHAAmogAyAKaiIHQQN0aiADQQFqIgMgEGpBAnRB4P0SaigCALc5AwBBACECRAAAAAAAAAAAIQAgCkEASgRAA0AgDyACQQN0aisDACAGQcACaiAHIAJrQQN0aisDAKIgAKAhACACQQFqIgIgCkcNAAsLIAYgA0EDdGogADkDACADIARIDQALIAQhAwwACwALIQMgCCsDACEAIBpCAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEMMBIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLxgIBBH8jAEHQAWsiBSQAIAUgAjYCzAEgBUGgAWoiAkEAQSgQKRogBSAFKALMATYCyAECQEEAIAEgBUHIAWogBUHQAGogAiADIAQQxQFBAEgEQEF/IQQMAQsgACgCTEEATiEGIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhByAAIAU2AiwMAQsgACgCEA0BC0F/IAAQKg0BGgsgACABIAVByAFqIAVB0ABqIAVBoAFqIAMgBBDFAQshAiAHBEAgAEEAQQAgACgCJBEEABogAEEANgIwIAAgBzYCLCAAQQA2AhwgACgCFCEBIABCADcDECACQX8gARshAgsgACAAKAIAIgAgCEEgcXI2AgBBfyACIABBIHEbIQQgBkUNAAsgBUHQAWokACAEC50TAhN/AX4jAEHQAGsiCCQAIAggATYCTCAIQTdqIRggCEE4aiESAkACQAJAA0BBACEHA0AgASENIAcgEUH/////B3NKDQIgByARaiERAkACQAJAIA0iBy0AACILBEADQAJAAkAgC0H/AXEiAUUEQCAHIQEMAQsgAUElRw0BIAchCwNAIAstAAFBJUcEQCALIQEMAgsgB0EBaiEHIAstAAIhCSALQQJqIgEhCyAJQSVGDQALCyAHIA1rIgcgEUH/////B3MiGUoNCCAABEAgACANIAcQxgELIAcNBiAIIAE2AkwgAUEBaiEHQX8hEAJAIAEsAAEiCUEwa0EKTw0AIAEtAAJBJEcNACABQQNqIQcgCUEwayEQQQEhEwsgCCAHNgJMQQAhDAJAIAcsAAAiC0EgayIBQR9LBEAgByEJDAELIAchCUEBIAF0IgFBidEEcUUNAANAIAggB0EBaiIJNgJMIAEgDHIhDCAHLAABIgtBIGsiAUEgTw0BIAkhB0EBIAF0IgFBidEEcQ0ACwsCQCALQSpGBEACfwJAIAksAAEiAUEwa0EKTw0AIAktAAJBJEcNACABQTBrIQECfyAARQRAIAQgAUECdGpBCjYCAEEADAELIAMgAUEDdGooAgALIQ8gCUEDaiEBQQEMAQsgEw0GIAlBAWohASAARQRAIAggATYCTEEAIRNBACEPDAMLIAIgAigCACIHQQRqNgIAIAcoAgAhD0EACyETIAggATYCTCAPQQBODQFBACAPayEPIAxBgMAAciEMDAELIAhBzABqEMcBIg9BAEgNCSAIKAJMIQELQQAhB0F/IQoCf0EAIAEtAABBLkcNABogAS0AAUEqRgRAAn8CQCABLAACIglBMGtBCk8NACABLQADQSRHDQAgCUEwayEJIAFBBGohAQJ/IABFBEAgBCAJQQJ0akEKNgIAQQAMAQsgAyAJQQN0aigCAAsMAQsgEw0GIAFBAmohAUEAIABFDQAaIAIgAigCACIJQQRqNgIAIAkoAgALIQogCCABNgJMIApBf3NBH3YMAQsgCCABQQFqNgJMIAhBzABqEMcBIQogCCgCTCEBQQELIRQDQCAHIRVBHCEOIAEiFywAACIHQfsAa0FGSQ0KIBdBAWohASAHIBVBOmxqQa+TE2otAAAiB0EBa0EISQ0ACyAIIAE2AkwCQCAHQRtHBEAgB0UNCyAQQQBOBEAgAEUEQCAEIBBBAnRqIAc2AgAMCwsgCCADIBBBA3RqKQMANwNADAILIABFDQcgCEFAayAHIAIgBhDIAQwBCyAQQQBODQpBACEHIABFDQcLQX8hDiAALQAAQSBxDQogDEH//3txIgsgDCAMQYDAAHEbIQxBACEQQYo7IRYgEiEJAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgFywAACIHQV9xIAcgB0EPcUEDRhsgByAVGyIHQdgAaw4hBBQUFBQUFBQUDhQPBg4ODhQGFBQUFAIFAxQUCRQBFBQEAAsCQCAHQcEAaw4HDhQLFA4ODgALIAdB0wBGDQkMEwsgCCkDQCEaQYo7DAULQQAhBwJAAkACQAJAAkACQAJAIBVB/wFxDggAAQIDBBoFBhoLIAgoAkAgETYCAAwZCyAIKAJAIBE2AgAMGAsgCCgCQCARrDcDAAwXCyAIKAJAIBE7AQAMFgsgCCgCQCAROgAADBULIAgoAkAgETYCAAwUCyAIKAJAIBGsNwMADBMLQQggCiAKQQhNGyEKIAxBCHIhDEH4ACEHCyASIQ0gB0EgcSELIAgpA0AiGkIAUgRAA0AgDUEBayINIBqnQQ9xQcCXE2otAAAgC3I6AAAgGkIPViEOIBpCBIghGiAODQALCyAIKQNAUA0DIAxBCHFFDQMgB0EEdkGKO2ohFkECIRAMAwsgEiEHIAgpA0AiGkIAUgRAA0AgB0EBayIHIBqnQQdxQTByOgAAIBpCB1YhDSAaQgOIIRogDQ0ACwsgByENIAxBCHFFDQIgCiASIA1rIgdBAWogByAKSBshCgwCCyAIKQNAIhpCAFMEQCAIQgAgGn0iGjcDQEEBIRBBijsMAQsgDEGAEHEEQEEBIRBBizsMAQtBjDtBijsgDEEBcSIQGwshFiAaIBIQyQEhDQsgFEEAIApBAEgbDQ8gDEH//3txIAwgFBshDAJAIAgpA0AiGkIAUg0AIAoNACASIQ1BACEKDAwLIAogGlAgEiANa2oiByAHIApIGyEKDAsLIAgoAkAiB0Gl7RIgBxsiDSIHQQBB/////wcgCiAKQf////8HTxsiCRCRASIMIAdrIAkgDBsiByANaiEJIApBAE4EQCALIQwgByEKDAsLIAshDCAHIQogCS0AAA0ODAoLIAoEQCAIKAJADAILQQAhByAAQSAgD0EAIAwQygEMAgsgCEEANgIMIAggCCkDQD4CCCAIIAhBCGoiBzYCQEF/IQogBwshC0EAIQcCQANAIAsoAgAiCUUNAQJAIAhBBGogCRDLASIJQQBIIg0NACAJIAogB2tLDQAgC0EEaiELIAcgCWoiByAKSQ0BDAILCyANDQ4LQT0hDiAHQQBIDQwgAEEgIA8gByAMEMoBIAdFBEBBACEHDAELQQAhCSAIKAJAIQsDQCALKAIAIg1FDQEgCEEEaiANEMsBIg0gCWoiCSAHSw0BIAAgCEEEaiANEMYBIAtBBGohCyAHIAlLDQALCyAAQSAgDyAHIAxBgMAAcxDKASAPIAcgByAPSBshBwwICyAUQQAgCkEASBsNCUE9IQ4gACAIKwNAIA8gCiAMIAcgBREkACIHQQBODQcMCgsgCCAIKQNAPAA3QQEhCiAYIQ0gCyEMDAQLIActAAEhCyAHQQFqIQcMAAsACyARIQ4gAA0HIBNFDQJBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhDIAUEBIQ4gB0EBaiIHQQpHDQEMCQsLQQEhDiAHQQpPDQcDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAcLQRwhDgwFCyAKIAkgDWsiCyAKIAtKGyIKIBBB/////wdzSg0DQT0hDiAPIAogEGoiCSAJIA9IGyIHIBlKDQQgAEEgIAcgCSAMEMoBIAAgFiAQEMYBIABBMCAHIAkgDEGAgARzEMoBIABBMCAKIAtBABDKASAAIA0gCxDGASAAQSAgByAJIAxBgMAAcxDKAQwBCwsLQQAhDgwCC0E9IQ4LQbCGFCAONgIAQX8hDgsgCEHQAGokACAOCxcAIAAtAABBIHFFBEAgASACIAAQLBoLC10BA38gACgCACECA0AgAiwAACIDQTBrQQpJBEAgACACQQFqIgI2AgAgAUHMmbPmAE0Ef0F/IANBMGsiAyABQQpsIgFqIAMgAUH/////B3NKGwVBfwshAQwBCwsgAQvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAgALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC4UBAgN/AX4CQCAAQoCAgIAQVARAIAAhBQwBCwNAIAFBAWsiASAAQgqAIgVC9gF+IAB8p0EwcjoAACAAQv////+fAVYhAiAFIQAgAg0ACwsgBaciAgRAA0AgAUEBayIBIAJBCm4iA0H2AWwgAmpBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC3EBAX8jAEGAAmsiBSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbECkaIAFFBEADQCAAIAVBgAIQxgEgA0GAAmsiA0H/AUsNAAsLIAAgBSADEMYBCyAFQYACaiQACxIAIABFBEBBAA8LIAAgARDdAQsRACAAIAEgAkHQAEHRABDEAQuzGAMSfwF8A34jAEGwBGsiDCQAIAxBADYCLAJAIAG9IhlCAFMEQEEBIRFBlDshEyABmiIBvSEZDAELIARBgBBxBEBBASERQZc7IRMMAQtBmjtBlTsgBEEBcSIRGyETIBFFIRULAkAgGUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABBICACIBFBA2oiAyAEQf//e3EQygEgACATIBEQxgEgAEGQPkH+wgAgBUEgcSIFG0HfP0GrwwAgBRsgASABYhtBAxDGASAAQSAgAiADIARBgMAAcxDKASADIAIgAiADSBshCQwBCyAMQRBqIRICQAJ/AkAgASAMQSxqEMMBIgEgAaAiAUQAAAAAAAAAAGIEQCAMIAwoAiwiBkEBazYCLCAFQSByIg5B4QBHDQEMAwsgBUEgciIOQeEARg0CIAwoAiwhCkEGIAMgA0EASBsMAQsgDCAGQR1rIgo2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQsgDEEwakGgAkEAIApBAE4baiINIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAHQQRqIQcgASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgCkEATARAIAohAyAHIQYgDSEIDAELIA0hCCAKIQMDQEEdIAMgA0EdThshAwJAIAdBBGsiBiAISQ0AIAOtIRpCACEZA0AgBiAZQv////8PgyAGNQIAIBqGfCIbQoCU69wDgCIZQoDslKMMfiAbfD4CACAGQQRrIgYgCE8NAAsgGaciBkUNACAIQQRrIgggBjYCAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyAMIAwoAiwgA2siAzYCLCAGIQcgA0EASg0ACwsgA0EASARAIAtBGWpBCW5BAWohDyAOQeYARiEQA0BBCUEAIANrIgMgA0EJThshCQJAIAYgCE0EQCAIKAIAIQcMAQtBgJTr3AMgCXYhFEF/IAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCACEHIANFDQAgBiADNgIAIAZBBGohBgsgDCAMKAIsIAlqIgM2AiwgDSAIIAdFQQJ0aiIIIBAbIgcgD0ECdGogBiAGIAdrQQJ1IA9KGyEGIANBAEgNAAsLQQAhAwJAIAYgCE0NACANIAhrQQJ1QQlsIQNBCiEHIAgoAgAiCUEKSQ0AA0AgA0EBaiEDIAkgB0EKbCIHTw0ACwsgCyADQQAgDkHmAEcbayAOQecARiALQQBHcWsiByAGIA1rQQJ1QQlsQQlrSARAQQRBpAIgCkEASBsgDGogB0GAyABqIglBCW0iD0ECdGpB0B9rIQpBCiEHIA9Bd2wgCWoiCUEHTARAA0AgB0EKbCEHIAlBAWoiCUEIRw0ACwsCQCAKKAIAIhAgECAHbiIPIAdsIglGIApBBGoiFCAGRnENACAQIAlrIRACQCAPQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cNASAIIApPDQEgCkEEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAURhtEAAAAAAAA+D8gECAHQQF2IhRGGyAQIBRJGyEYAkAgFQ0AIBMtAABBLUcNACAYmiEYIAGaIQELIAogCTYCACABIBigIAFhDQAgCiAHIAlqIgM2AgAgA0GAlOvcA08EQANAIApBADYCACAIIApBBGsiCksEQCAIQQRrIghBADYCAAsgCiAKKAIAQQFqIgM2AgAgA0H/k+vcA0sNAAsLIA0gCGtBAnVBCWwhA0EKIQcgCCgCACIJQQpJDQADQCADQQFqIQMgCSAHQQpsIgdPDQALCyAKQQRqIgcgBiAGIAdLGyEGCwNAIAYiByAITSIJRQRAIAdBBGsiBigCAEUNAQsLAkAgDkHnAEcEQCAEQQhxIQoMAQsgA0F/c0F/IAtBASALGyIGIANKIANBe0pxIgobIAZqIQtBf0F+IAobIAVqIQUgBEEIcSIKDQBBdyEGAkAgCQ0AIAdBBGsoAgAiDkUNAEEKIQlBACEGIA5BCnANAANAIAYiCkEBaiEGIA4gCUEKbCIJcEUNAAsgCkF/cyEGCyAHIA1rQQJ1QQlsIQkgBUFfcUHGAEYEQEEAIQogCyAGIAlqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsMAQtBACEKIAsgAyAJaiAGakEJayIGQQAgBkEAShsiBiAGIAtKGyELC0F/IQkgC0H9////B0H+////ByAKIAtyIhAbSg0BIAsgEEEAR2pBAWohDgJAIAVBX3EiFUHGAEYEQCADIA5B/////wdzSg0DIANBACADQQBKGyEGDAELIBIgAyADQR91IgZzIAZrrSASEMkBIgZrQQFMBEADQCAGQQFrIgZBMDoAACASIAZrQQJIDQALCyAGQQJrIg8gBToAACAGQQFrQS1BKyADQQBIGzoAACASIA9rIgYgDkH/////B3NKDQILIAYgDmoiAyARQf////8Hc0oNASAAQSAgAiADIBFqIgUgBBDKASAAIBMgERDGASAAQTAgAiAFIARBgIAEcxDKAQJAAkACQCAVQcYARgRAIAxBEGoiBkEIciEDIAZBCXIhCiANIAggCCANSxsiCSEIA0AgCDUCACAKEMkBIQYCQCAIIAlHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAGIApHDQAgDEEwOgAYIAMhBgsgACAGIAogBmsQxgEgCEEEaiIIIA1NDQALIBAEQCAAQaPtEkEBEMYBCyAHIAhNDQEgC0EATA0BA0AgCDUCACAKEMkBIgYgDEEQaksEQANAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsLIAAgBkEJIAsgC0EJThsQxgEgC0EJayEGIAhBBGoiCCAHTw0DIAtBCUohAyAGIQsgAw0ACwwCCwJAIAtBAEgNACAHIAhBBGogByAISxshCSAMQRBqIgZBCHIhAyAGQQlyIQ0gCCEHA0AgDSAHNQIAIA0QyQEiBkYEQCAMQTA6ABggAyEGCwJAIAcgCEcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAAgBkEBEMYBIAZBAWohBiAKIAtyRQ0AIABBo+0SQQEQxgELIAAgBiANIAZrIgYgCyAGIAtIGxDGASALIAZrIQsgB0EEaiIHIAlPDQEgC0EATg0ACwsgAEEwIAtBEmpBEkEAEMoBIAAgDyASIA9rEMYBDAILIAshBgsgAEEwIAZBCWpBCUEAEMoBCyAAQSAgAiAFIARBgMAAcxDKASAFIAIgAiAFSBshCQwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRgDQCAYRAAAAAAAADBAoiEYIAZBAWsiBg0ACyAILQAAQS1GBEAgGCABmiAYoaCaIQEMAQsgASAYoCAYoSEBCyARQQJyIQsgBUEgcSENIBIgDCgCLCIHIAdBH3UiBnMgBmutIBIQyQEiBkYEQCAMQTA6AA8gDEEPaiEGCyAGQQJrIgogBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQYgDEEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdBwJcTai0AACANcjoAACABIAe3oUQAAAAAAAAwQKIhAQJAIAVBAWoiByAMQRBqa0EBRw0AAkAgBg0AIANBAEoNACABRAAAAAAAAAAAYQ0BCyAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0AC0F/IQlB/f///wcgCyASIAprIgZqIg1rIANIDQAgAEEgIAIgDSADQQJqIAcgDEEQaiIHayIFIAVBAmsgA0gbIAUgAxsiCWoiAyAEEMoBIAAgCCALEMYBIABBMCACIAMgBEGAgARzEMoBIAAgByAFEMYBIABBMCAJIAVrQQBBABDKASAAIAogBhDGASAAQSAgAiADIARBgMAAcxDKASADIAIgAiADSBshCQsgDEGwBGokACAJCygAIAEgASgCAEEHakF4cSIBQRBqNgIAIAAgASkDACABKQMIEE05AwALEAAgACABIAJBAEEAEMQBGgt8AQJ/IAAgACgCSCIBQQFrIAFyNgJIIAAoAhQgACgCHEcEQCAAQQBBACAAKAIkEQQAGgsgAEEANgIcIABCADcDECAAKAIAIgFBBHEEQCAAIAFBIHI2AgBBfw8LIAAgACgCLCAAKAIwaiICNgIIIAAgAjYCBCABQRt0QR91C0EBAn8jAEEQayIBJABBfyECAkAgABDQAQ0AIAAgAUEPakEBIAAoAiARBABBAUcNACABLQAPIQILIAFBEGokACACC0cBAn8gACABNwNwIAAgACgCLCAAKAIEIgNrrDcDeCAAKAIIIQICQCABUA0AIAIgA2usIAFXDQAgAyABp2ohAgsgACACNgJoC9QBAgN/An4CQCAAKQNwIgRCAFIgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIAAQ0QEiA0EATg0BIAAoAiwhAiAAKAIEIQELIABCfzcDcCAAIAE2AmggACAFIAIgAWusfDcDeEF/DwsgBUIBfCEFIAAoAgQhASAAKAIIIQICQCAAKQNwIgRQDQAgBCAFfSIEIAIgAWusWQ0AIAEgBKdqIQILIAAgAjYCaCAAIAUgACgCLCIAIAFrrHw3A3ggACABTwRAIAFBAWsgAzoAAAsgAwu/AgEEfyADQbCgFCADGyIFKAIAIQMCQAJ/AkAgAUUEQCADDQFBAA8LQX4gAkUNARoCQCADBEAgAiEEDAELIAEtAAAiA8AiBEEATgRAIAAEQCAAIAM2AgALIARBAEcPC0GMoBQoAgAoAgBFBEBBASAARQ0DGiAAIARB/78DcTYCAEEBDwsgA0HCAWsiA0EySw0BIANBAnRB0L4TaigCACEDIAJBAWsiBEUNAyABQQFqIQELIAEtAAAiBkEDdiIHQRBrIANBGnUgB2pyQQdLDQADQCAEQQFrIQQgBkGAAWsgA0EGdHIiA0EATgRAIAVBADYCACAABEAgACADNgIACyACIARrDwsgBEUNAyABQQFqIgEtAAAiBkHAAXFBgAFGDQALCyAFQQA2AgBBsIYUQRk2AgBBfwsPCyAFIAM2AgBBfgs1ACAAIAE3AwAgACACQv///////z+DIARCMIinQYCAAnEgAkIwiKdB//8BcXKtQjCGhDcDCAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQPCAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABA8Qf3/AiADIANB/f8CThtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORA8IAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORA8QeiBfSADIANB6IF9TBtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhA8IAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAvUMgMPfwd+AXwjAEEwayIMJAACQCACQQJNBEAgAkECdCICQZyaE2ooAgAhDyACQZCaE2ooAgAhDgNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARDTAQsiAkEgRiACQQlrQQVJcg0AC0EBIQoCQAJAIAJBK2sOAwABAAELQX9BASACQS1GGyEKIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAQsgARDTASECCwJAAkADQCAFQeA5aiwAACACQSByRgRAAkAgBUEGSw0AIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAQsgARDTASECCyAFQQFqIgVBCEcNAQwCCwsgBUEDRwRAIAVBCEYNASADRQ0CIAVBBEkNAiAFQQhGDQELIAEpA3AiE0IAWQRAIAEgASgCBEEBazYCBAsgA0UNACAFQQRJDQAgE0IAUyECA0AgAkUEQCABIAEoAgRBAWs2AgQLIAVBAWsiBUEDSw0ACwtCACETIwBBEGsiAiQAAn4gCrJDAACAf5S8IgNB/////wdxIgFBgICABGtB////9wdNBEAgAa1CGYZCgICAgICAgMA/fAwBCyADrUIZhkKAgICAgIDA//8AhCABQYCAgPwHTw0AGkIAIAFFDQAaIAIgAa1CACABZyIBQdEAahA5IAIpAwAhEyACKQMIQoCAgICAgMAAhUGJ/wAgAWutQjCGhAshFCAMIBM3AwAgDCAUIANBgICAgHhxrUIghoQ3AwggAkEQaiQAIAwpAwghEyAMKQMAIRQMAgsCQAJAAkAgBQ0AQQAhBQNAIAVBkD5qLAAAIAJBIHJHDQECQCAFQQFLDQAgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABENMBIQILIAVBAWoiBUEDRw0ACwwBCwJAAkAgBQ4EAAEBAgELAkAgAkEwRw0AAn8gASgCBCIFIAEoAmhHBEAgASAFQQFqNgIEIAUtAAAMAQsgARDTAQtBX3FB2ABGBEAjAEGwA2siAiQAAn8gASgCBCIFIAEoAmhHBEAgASAFQQFqNgIEIAUtAAAMAQsgARDTAQshBQJAAn8DQCAFQTBHBEACQCAFQS5HDQQgASgCBCIFIAEoAmhGDQAgASAFQQFqNgIEIAUtAAAMAwsFIAEoAgQiBSABKAJoRwR/QQEhCSABIAVBAWo2AgQgBS0AAAVBASEJIAEQ0wELIQUMAQsLIAEQ0wELIQVBASEIIAVBMEcNAANAIBZCAX0hFgJ/IAEoAgQiBSABKAJoRwRAIAEgBUEBajYCBCAFLQAADAELIAEQ0wELIgVBMEYNAAtBASEJC0KAgICAgIDA/z8hFAJAA0ACQCAFQSByIQQCQAJAIAVBMGsiB0EKSQ0AIAVBLkcgBEHhAGtBBUtxDQQgBUEuRw0AIAgNAkEBIQggEyEWDAELIARB1wBrIAcgBUE5ShshBQJAIBNCB1cEQCAFIAZBBHRqIQYMAQsgE0IcWARAIAJBMGogBRBOIAJBIGogGCAUQgBCgICAgICAwP0/EDwgAkEQaiACKQMwIAIpAzggAikDICIYIAIpAygiFBA8IAIgAikDECACKQMYIBUgFxBHIAIpAwghFyACKQMAIRUMAQsgBUUNACALDQAgAkHQAGogGCAUQgBCgICAgICAgP8/EDwgAkFAayACKQNQIAIpA1ggFSAXEEcgAikDSCEXQQEhCyACKQNAIRULIBNCAXwhE0EBIQkLIAEoAgQiBSABKAJoRwR/IAEgBUEBajYCBCAFLQAABSABENMBCyEFDAELC0EuIQULAn4gCUUEQAJAAkAgASkDcEIAWQRAIAEgASgCBCIGQQFrNgIEIANFDQEgASAGQQJrNgIEIAhFDQIgASAGQQNrNgIEDAILIAMNAQsgAUIAENIBCyACQeAAaiAKt0QAAAAAAAAAAKIQTyACKQNgIRUgAikDaAwBCyATQgdXBEAgEyEUA0AgBkEEdCEGIBRCAXwiFEIIUg0ACwsCQAJAAkAgBUFfcUHQAEYEQCABIAMQ2AEiFEKAgICAgICAgIB/Ug0DIAMEQCABKQNwQgBZDQIMAwtCACEVIAFCABDSAUIADAQLQgAhFCABKQNwQgBTDQILIAEgASgCBEEBazYCBAtCACEUCyAGRQRAIAJB8ABqIAq3RAAAAAAAAAAAohBPIAIpA3AhFSACKQN4DAELIBYgEyAIG0IChiAUfEIgfSITQQAgD2utVQRAQbCGFEHEADYCACACQaABaiAKEE4gAkGQAWogAikDoAEgAikDqAFCf0L///////+///8AEDwgAkGAAWogAikDkAEgAikDmAFCf0L///////+///8AEDwgAikDgAEhFSACKQOIAQwBCyAPQeIBa6wgE1cEQCAGQQBOBEADQCACQaADaiAVIBdCAEKAgICAgIDA/79/EEcgFSAXQoCAgICAgID/PxA4IQEgAkGQA2ogFSAXIAIpA6ADIBUgAUEATiIBGyACKQOoAyAXIAEbEEcgE0IBfSETIAIpA5gDIRcgAikDkAMhFSAGQQF0IAFyIgZBAE4NAAsLAn4gEyAPrH1CIHwiFKciAUEAIAFBAEobIA4gFCAOrVMbIgFB8QBOBEAgAkGAA2ogChBOIAIpA4gDIRYgAikDgAMhGEIADAELIAJB4AJqRAAAAAAAAPA/QZABIAFrEDAQTyACQdACaiAKEE4gAkHwAmogAikD4AIgAikD6AIgAikD0AIiGCACKQPYAiIWENUBIAIpA/gCIRkgAikD8AILIRQgAkHAAmogBiAGQQFxRSAVIBdCAEIAEDdBAEcgAUEgSHFxIgFqEFAgAkGwAmogGCAWIAIpA8ACIAIpA8gCEDwgAkGQAmogAikDsAIgAikDuAIgFCAZEEcgAkGgAmogGCAWQgAgFSABG0IAIBcgARsQPCACQYACaiACKQOgAiACKQOoAiACKQOQAiACKQOYAhBHIAJB8AFqIAIpA4ACIAIpA4gCIBQgGRBIIAIpA/ABIhQgAikD+AEiFkIAQgAQN0UEQEGwhhRBxAA2AgALIAJB4AFqIBQgFiATpxDWASACKQPgASEVIAIpA+gBDAELQbCGFEHEADYCACACQdABaiAKEE4gAkHAAWogAikD0AEgAikD2AFCAEKAgICAgIDAABA8IAJBsAFqIAIpA8ABIAIpA8gBQgBCgICAgICAwAAQPCACKQOwASEVIAIpA7gBCyETIAwgFTcDECAMIBM3AxggAkGwA2okACAMKQMYIRMgDCkDECEUDAYLIAEpA3BCAFMNACABIAEoAgRBAWs2AgQLIAEhBSACIQYgAyEJQQAhAyMAQZDGAGsiBCQAQQAgD2siECAOayESAkACfwNAAkAgBkEwRwRAIAZBLkcNBCAFKAIEIgEgBSgCaEYNASAFIAFBAWo2AgQgAS0AAAwDCyAFKAIEIgEgBSgCaEcEQCAFIAFBAWo2AgQgAS0AACEGBSAFENMBIQYLQQEhAwwBCwsgBRDTAQshBkEBIQ0gBkEwRw0AA0AgE0IBfSETAn8gBSgCBCIBIAUoAmhHBEAgBSABQQFqNgIEIAEtAAAMAQsgBRDTAQsiBkEwRg0AC0EBIQMLIARBADYCkAYgBkEwayECIAwCfgJAAkACQAJAAkACQCAGQS5GIgENACACQQlNDQAMAQsDQAJAIAFBAXEEQCANRQRAIBQhE0EBIQ0MAgsgA0UhAQwECyAUQgF8IRQgCEH8D0wEQCALIBSnIAZBMEYbIQsgBEGQBmogCEECdGoiASAHBH8gBiABKAIAQQpsakEwawUgAgs2AgBBASEDQQAgB0EBaiIBIAFBCUYiARshByABIAhqIQgMAQsgBkEwRg0AIAQgBCgCgEZBAXI2AoBGQdyPASELCwJ/IAUoAgQiASAFKAJoRwRAIAUgAUEBajYCBCABLQAADAELIAUQ0wELIgZBMGshAiAGQS5GIgENACACQQpJDQALCyATIBQgDRshEwJAIANFDQAgBkFfcUHFAEcNAAJAIAUgCRDYASIVQoCAgICAgICAgH9SDQAgCUUNBEIAIRUgBSkDcEIAUw0AIAUgBSgCBEEBazYCBAsgEyAVfCETDAQLIANFIQEgBkEASA0BCyAFKQNwQgBTDQAgBSAFKAIEQQFrNgIECyABRQ0BQbCGFEEcNgIAC0IAIRQgBUIAENIBQgAMAQsgBCgCkAYiAUUEQCAEIAq3RAAAAAAAAAAAohBPIAQpAwAhFCAEKQMIDAELAkAgFEIJVQ0AIBMgFFINACAOQR5MQQAgASAOdhsNACAEQTBqIAoQTiAEQSBqIAEQUCAEQRBqIAQpAzAgBCkDOCAEKQMgIAQpAygQPCAEKQMQIRQgBCkDGAwBCyAQQQF2rSATUwRAQbCGFEHEADYCACAEQeAAaiAKEE4gBEHQAGogBCkDYCAEKQNoQn9C////////v///ABA8IARBQGsgBCkDUCAEKQNYQn9C////////v///ABA8IAQpA0AhFCAEKQNIDAELIA9B4gFrrCATVQRAQbCGFEHEADYCACAEQZABaiAKEE4gBEGAAWogBCkDkAEgBCkDmAFCAEKAgICAgIDAABA8IARB8ABqIAQpA4ABIAQpA4gBQgBCgICAgICAwAAQPCAEKQNwIRQgBCkDeAwBCyAHBEAgB0EITARAIARBkAZqIAhBAnRqIgEoAgAhBQNAIAVBCmwhBSAHQQFqIgdBCUcNAAsgASAFNgIACyAIQQFqIQgLIBOnIQcCQCALQQlODQAgByALSA0AIAdBEUoNACAHQQlGBEAgBEHAAWogChBOIARBsAFqIAQoApAGEFAgBEGgAWogBCkDwAEgBCkDyAEgBCkDsAEgBCkDuAEQPCAEKQOgASEUIAQpA6gBDAILIAdBCEwEQCAEQZACaiAKEE4gBEGAAmogBCgCkAYQUCAEQfABaiAEKQOQAiAEKQOYAiAEKQOAAiAEKQOIAhA8IARB4AFqQQAgB2tBAnRBkJoTaigCABBOIARB0AFqIAQpA/ABIAQpA/gBIAQpA+ABIAQpA+gBEDogBCkD0AEhFCAEKQPYAQwCCyAOIAdBfWxqQRtqIgFBHkxBACAEKAKQBiICIAF2Gw0AIARB4AJqIAoQTiAEQdACaiACEFAgBEHAAmogBCkD4AIgBCkD6AIgBCkD0AIgBCkD2AIQPCAEQbACaiAHQQJ0QciZE2ooAgAQTiAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhA8IAQpA6ACIRQgBCkDqAIMAQsDQCAEQZAGaiAIIgFBAWsiCEECdGooAgBFDQALQQAhCwJAIAdBCW8iA0UEQEEAIQIMAQtBACECIANBCWogAyAHQQBIGyEDAkAgAUUEQEEAIQEMAQtBgJTr3ANBACADa0ECdEGQmhNqKAIAIghtIQlBACEGQQAhBQNAIARBkAZqIAVBAnRqIg0gBiANKAIAIg0gCG4iEGoiBjYCACACQQFqQf8PcSACIAZFIAIgBUZxIgYbIQIgB0EJayAHIAYbIQcgCSANIAggEGxrbCEGIAVBAWoiBSABRw0ACyAGRQ0AIARBkAZqIAFBAnRqIAY2AgAgAUEBaiEBCyAHIANrQQlqIQcLA0AgBEGQBmogAkECdGohDQJAA0ACQCAHQSRIDQAgB0EkRw0CIA0oAgBB0On5BE0NAEEkIQcMAgsgAUH/D2ohCEEAIQMDQCABIQYgA60gBEGQBmogCEH/D3EiCUECdGoiATUCAEIdhnwiE0KBlOvcA1QEf0EABSATQoCU69wDgCIUQoDslKN8fiATfCETIBSnCyEDIAEgE6ciATYCACAGIAYgBiAJIAEbIAIgCUYbIAkgBkEBa0H/D3EiBUcbIQEgCUEBayEIIAIgCUcNAAsgC0EdayELIAYhASADRQ0ACyACQQFrQf8PcSICIAFGBEAgBEGQBmoiBiABQf4PakH/D3FBAnRqIgEgASgCACAFQQJ0IAZqKAIAcjYCACAFIQELIAdBCWohByAEQZAGaiACQQJ0aiADNgIADAELCwJAA0AgAUEBakH/D3EhBiAEQZAGaiABQQFrQf8PcUECdGohCQNAQQlBASAHQS1KGyEIAkADQCACIQNBACEFAkADQAJAIAMgBWpB/w9xIgIgAUYNACAEQZAGaiACQQJ0aigCACICIAVBAnRB4JkTaigCACINSQ0AIAIgDUsNAiAFQQFqIgVBBEcNAQsLIAdBJEcNAEEAIQVCACETQgAhFANAIAEgAyAFakH/D3EiAkYEQCABQQFqQf8PcSIBQQJ0IARqQQA2AowGCyAEQYAGaiAEQZAGaiACQQJ0aigCABBQIARB8AVqIBMgFEIAQoCAgIDlmreOwAAQPCAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhBHIAQpA+gFIRQgBCkD4AUhEyAFQQFqIgVBBEcNAAsgBEHQBWogChBOIARBwAVqIBMgFCAEKQPQBSAEKQPYBRA8IAQpA8gFIRRCACETIAQpA8AFIRUgC0HxAGoiCCAPayIGQQAgBkEAShsgDiAGIA5IIgkbIgJB8ABMDQIMBQsgCCALaiELIAEhAiABIANGDQALQYCU69wDIAh2IQ1BfyAIdEF/cyEQQQAhBSADIQIDQCAEQZAGaiADQQJ0aiIRIAUgESgCACIRIAh2aiIFNgIAIAJBAWpB/w9xIAIgBUUgAiADRnEiBRshAiAHQQlrIAcgBRshByAQIBFxIA1sIQUgA0EBakH/D3EiAyABRw0ACyAFRQ0BIAIgBkcEQCAEQZAGaiABQQJ0aiAFNgIAIAYhAQwDCyAJIAkoAgBBAXI2AgAMAQsLCyAEQZAFakQAAAAAAADwP0HhASACaxAwEE8gBEGwBWogBCkDkAUgBCkDmAUgFSAUENUBIAQpA7gFIRggBCkDsAUhFyAEQYAFakQAAAAAAADwP0HxACACaxAwEE8gBEGgBWogFSAUIAQpA4AFIAQpA4gFEDEgBEHwBGogFSAUIAQpA6AFIhMgBCkDqAUiFhBIIARB4ARqIBcgGCAEKQPwBCAEKQP4BBBHIAQpA+gEIRQgBCkD4AQhFQsCQCADQQRqQf8PcSIFIAFGDQACQCAEQZAGaiAFQQJ0aigCACIFQf/Jte4BTQRAIAVFIANBBWpB/w9xIAFGcQ0BIARB8ANqIAq3RAAAAAAAANA/ohBPIARB4ANqIBMgFiAEKQPwAyAEKQP4AxBHIAQpA+gDIRYgBCkD4AMhEwwBCyAFQYDKte4BRwRAIARB0ARqIAq3RAAAAAAAAOg/ohBPIARBwARqIBMgFiAEKQPQBCAEKQPYBBBHIAQpA8gEIRYgBCkDwAQhEwwBCyAKtyEaIAEgA0EFakH/D3FGBEAgBEGQBGogGkQAAAAAAADgP6IQTyAEQYAEaiATIBYgBCkDkAQgBCkDmAQQRyAEKQOIBCEWIAQpA4AEIRMMAQsgBEGwBGogGkQAAAAAAADoP6IQTyAEQaAEaiATIBYgBCkDsAQgBCkDuAQQRyAEKQOoBCEWIAQpA6AEIRMLIAJB7wBKDQAgBEHQA2ogEyAWQgBCgICAgICAwP8/EDEgBCkD0AMgBCkD2ANCAEIAEDcNACAEQcADaiATIBZCAEKAgICAgIDA/z8QRyAEKQPIAyEWIAQpA8ADIRMLIARBsANqIBUgFCATIBYQRyAEQaADaiAEKQOwAyAEKQO4AyAXIBgQSCAEKQOoAyEUIAQpA6ADIRUCQCASQQJrIAhB/////wdxTg0AIAQgFEL///////////8AgzcDmAMgBCAVNwOQAyAEQYADaiAVIBRCAEKAgICAgICA/z8QPCAEKQOQAyAEKQOYA0KAgICAgICAuMAAEDghASAEKQOIAyAUIAFBAE4iAxshFCAEKQOAAyAVIAMbIRUgEyAWQgBCABA3IQUgEiADIAtqIgtB7gBqTgRAIAkgAiAGRyABQQBIcnEgBUEAR3FFDQELQbCGFEHEADYCAAsgBEHwAmogFSAUIAsQ1gEgBCkD8AIhFCAEKQP4Ags3AyggDCAUNwMgIARBkMYAaiQAIAwpAyghEyAMKQMgIRQMBAsgASkDcEIAWQRAIAEgASgCBEEBazYCBAsMAQsCQAJ/IAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAADAELIAEQ0wELQShGBEBBASEFDAELQoCAgICAgOD//wAhEyABKQNwQgBTDQMgASABKAIEQQFrNgIEDAMLA0ACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABENMBCyICQcEAayEGAkACQCACQTBrQQpJDQAgBkEaSQ0AIAJB3wBGDQAgAkHhAGtBGk8NAQsgBUEBaiEFDAELC0KAgICAgIDg//8AIRMgAkEpRg0CIAEpA3AiFkIAWQRAIAEgASgCBEEBazYCBAsCQCADBEAgBQ0BDAQLDAELA0AgFkIAWQRAIAEgASgCBEEBazYCBAsgBUEBayIFDQALDAILQbCGFEEcNgIAIAFCABDSAQtCACETCyAAIBQ3AwAgACATNwMIIAxBMGokAAuGBAIEfwF+AkACQAJAAkACQAJAAkACfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAENMBCyICQStrDgMAAQABCyACQS1GIQUCfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAENMBCyIDQTprIQQgAUUNASAEQXVLDQEgACkDcEIAWQ0CDAULIAJBOmshBCACIQMLIARBdkkNASADQTBrIgRBCkkEQEEAIQIDQCADIAJBCmxqIQECfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAENMBCyIDQTBrIgRBCU0gAUEwayICQcyZs+YASHENAAsgAqwhBgsCQCAEQQpPDQADQCADrSAGQgp+fEIwfSEGAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABDTAQsiA0EwayIEQQlLDQEgBkKuj4XXx8LrowFTDQALCyAEQQpJBEADQAJ/IAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQ0wELQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAZ9IAYgBRsPCyAAIAAoAgRBAWs2AgQMAQsgACkDcEIAUw0BCyAAIAAoAgRBAWs2AgQLQoCAgICAgICAgH8LQwACQCAARQ0AAkACQAJAAkAgAUECag4GAAECAgQDBAsgACACPAAADwsgACACPQEADwsgACACPgIADwsgACACNwMACwu1AQICfwF+IwBBoAFrIgQkACAEIAAgBEGeAWogARsiBTYClAEgBCABQQFrIgBBACAAIAFNGzYCmAEDQCAEIAanakEAOgAAIAZCAXwiBkKQAVQNAAtBfyEAIARBfzYCTCAEQdIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQCQCABQQBIBEBBsIYUQT02AgAMAQsgBUEAOgAAIAQgAiADEMwBIQALIARBoAFqJAAgAAuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC1QBAn8gASAAKAJUIgEgAUEAIAJBgAJqIgMQkQEiBCABayADIAQbIgMgAiACIANLGyICECsaIAAgASADaiIDNgJUIAAgAzYCCCAAIAEgAmo2AgQgAguJAgACQCAABH8gAUH/AE0NAQJAQYygFCgCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAg8LIAFBgEBxQYDAA0cgAUGAsANPcUUEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQPCwtBsIYUQRk2AgBBfwVBAQsPCyAAIAE6AABBAQsFABAdAAswAQF/IwBBEGsiAiQAIAIgAULAhD1+NwMIIAIpAwghASACQRBqJAAgACABNwMAIAALBwAgABDhAQuMAQECfyAAQYyhEzYCACAAKAIoIQEDQCABBEBBACAAIAFBAWsiAUECdCICIAAoAiRqKAIAIAAoAiAgAmooAgARCAAMAQsLIAAoAhwiASABKAIEQQFrIgI2AgQgAkF/RgRAIAEgASgCACgCCBEBAAsgACgCIBA0IAAoAiQQNCAAKAIwEDQgACgCPBA0IAALCQAgABDhARA0CzgBAn8gAEHAmxM2AgAgACgCBCIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACyAACwkAIAAQ4wEQNAsDAAELBAAgAAsQACAAQn83AwggAEIANwMACxAAIABCfzcDCCAAQgA3AwAL2AEBBH8jAEEQayIEJAADQAJAIAIgBUwNAAJ/IAAoAgwiAyAAKAIQIgZJBEAgBEH/////BzYCDCAEIAYgA2s2AgggBCACIAVrNgIEIAEgAyAEQQRqIgEgBEEIaiIDIAEoAgAgAygCAEgbIgEgBEEMaiIDIAEoAgAgAygCAEgbKAIAIgMQ6gEhASAAIAAoAgwgA2o2AgwgASADagwBCyAAIAAoAgAoAigRAAAiA0F/Rg0BIAEgA8A6AABBASEDIAFBAWoLIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsRACABIAEgAmogABDvARogAAsEAEF/CywAIAAgACgCACgCJBEAAEF/RwR/IAAgACgCDCIAQQFqNgIMIAAtAAAFQX8LCwQAQX8LsQEBBH8jAEEQayIFJAADQAJAIAIgBEwNACAAKAIYIgMgACgCHCIGTwR/IAAgAS0AACAAKAIAKAI0EQMAQX9GDQEgBEEBaiEEIAFBAWoFIAUgBiADazYCDCAFIAIgBGs2AgggAyABIAVBCGoiAyAFQQxqIgYgAygCACAGKAIASBsoAgAiAxDqARogACADIAAoAhhqNgIYIAMgBGohBCABIANqCyEBDAELCyAFQRBqJAAgBAsrAQF/IwBBEGsiAyQAIANBCGogACABIAIQ8AEgAygCDCEAIANBEGokACAAC3IBAn8jAEEgayIEJAAjAEEQayIFJAAgBSACNgIMIAQgATYCGCAEIAUoAgw2AhwgBUEQaiQAIARBEGogBCgCGCAEKAIcIAMQ8QEgBCgCECEBIAQgBCgCFDYCDCAAIAE2AgAgACAEKAIMNgIEIARBIGokAAs6AQF/IwBBEGsiBCQAIAQgAyABIAIgAWsiARBLIAFqNgIMIAAgAjYCACAAIAQoAgw2AgQgBEEQaiQACwQAIAELKgAgAEHAmxM2AgAgAEEEahD0ASAAQgA3AhggAEIANwIQIABCADcCCCAAC4wSAQJ/IAACf0H0qhQtAAAEQEHwqhQoAgAMAQtB7KoUAn9B6KoULQAABEBB5KoUKAIADAELQcy3FEEANgIAQci3FEHQ+RM2AgBByLcUQeDNEzYCAEHItxRBmMITNgIAIwBBEGsiASQAQdC3FEIANwMAQdi3FEEANgIAQdi4FEEAOgAAIAFB0LcUNgIMIwBBEGsiACQAEOMDQR1NBEAQVwALIABBCGpB4LcUQR4Q5ANB1LcUIAAoAggiAjYCAEHQtxQgAjYCAEHYtxQgAiAAKAIMQQJ0ajYCACAAQRBqJABB0LcUQR4Q3wMgAUEQaiQAQeC4FEH4wwAQU0HQtxQQ4ANBhLUUQQA2AgBBgLUUQdD5EzYCAEGAtRRB4M0TNgIAQYC1FEG01hM2AgBByLcUQYC1FEG4qRQQygIQ4QNBjLUUQQA2AgBBiLUUQdD5EzYCAEGItRRB4M0TNgIAQYi1FEHU1hM2AgBByLcUQYi1FEHAqRQQygIQ4QNBlLUUQQA2AgBBkLUUQdD5EzYCAEGQtRRB4M0TNgIAQZy1FEEAOgAAQZi1FEEANgIAQZC1FEGswhM2AgBBmLUUQeDCEzYCAEHItxRBkLUUQYSrFBDKAhDhA0GktRRBADYCAEGgtRRB0PkTNgIAQaC1FEHgzRM2AgBBoLUUQZjOEzYCAEHItxRBoLUUQfyqFBDKAhDhA0GstRRBADYCAEGotRRB0PkTNgIAQai1FEHgzRM2AgBBqLUUQazPEzYCAEHItxRBqLUUQYyrFBDKAhDhA0G0tRRBADYCAEGwtRRB0PkTNgIAQbC1FEHgzRM2AgBBsLUUQejKEzYCAEG4tRQQ0wI2AgBByLcUQbC1FEGUqxQQygIQ4QNBxLUUQQA2AgBBwLUUQdD5EzYCAEHAtRRB4M0TNgIAQcC1FEHA0BM2AgBByLcUQcC1FEGcqxQQygIQ4QNBzLUUQQA2AgBByLUUQdD5EzYCAEHItRRB4M0TNgIAQci1FEGo0hM2AgBByLcUQci1FEGsqxQQygIQ4QNB1LUUQQA2AgBB0LUUQdD5EzYCAEHQtRRB4M0TNgIAQdC1FEG00RM2AgBByLcUQdC1FEGkqxQQygIQ4QNB3LUUQQA2AgBB2LUUQdD5EzYCAEHYtRRB4M0TNgIAQdi1FEGc0xM2AgBByLcUQdi1FEG0qxQQygIQ4QNB5LUUQQA2AgBB4LUUQdD5EzYCAEHgtRRB4M0TNgIAQei1FEGu2AA7AQBB4LUUQZjLEzYCAEHstRRCADcCAEH0tRRBADYCAEHItxRB4LUUQbyrFBDKAhDhA0H8tRRBADYCAEH4tRRB0PkTNgIAQfi1FEHgzRM2AgBBgLYUQq6AgIDABTcCAEH4tRRBwMsTNgIAQYi2FEIANwIAQZC2FEEANgIAQci3FEH4tRRBxKsUEMoCEOEDQZy2FEEANgIAQZi2FEHQ+RM2AgBBmLYUQeDNEzYCAEGYthRB9NYTNgIAQci3FEGYthRByKkUEMoCEOEDQaS2FEEANgIAQaC2FEHQ+RM2AgBBoLYUQeDNEzYCAEGgthRB6NgTNgIAQci3FEGgthRB0KkUEMoCEOEDQay2FEEANgIAQai2FEHQ+RM2AgBBqLYUQeDNEzYCAEGothRBvNoTNgIAQci3FEGothRB2KkUEMoCEOEDQbS2FEEANgIAQbC2FEHQ+RM2AgBBsLYUQeDNEzYCAEGwthRBpNwTNgIAQci3FEGwthRB4KkUEMoCEOEDQby2FEEANgIAQbi2FEHQ+RM2AgBBuLYUQeDNEzYCAEG4thRB/OMTNgIAQci3FEG4thRBiKoUEMoCEOEDQcS2FEEANgIAQcC2FEHQ+RM2AgBBwLYUQeDNEzYCAEHAthRBkOUTNgIAQci3FEHAthRBkKoUEMoCEOEDQcy2FEEANgIAQci2FEHQ+RM2AgBByLYUQeDNEzYCAEHIthRBhOYTNgIAQci3FEHIthRBmKoUEMoCEOEDQdS2FEEANgIAQdC2FEHQ+RM2AgBB0LYUQeDNEzYCAEHQthRB+OYTNgIAQci3FEHQthRBoKoUEMoCEOEDQdy2FEEANgIAQdi2FEHQ+RM2AgBB2LYUQeDNEzYCAEHYthRB7OcTNgIAQci3FEHYthRBqKoUEMoCEOEDQeS2FEEANgIAQeC2FEHQ+RM2AgBB4LYUQeDNEzYCAEHgthRBkOkTNgIAQci3FEHgthRBsKoUEMoCEOEDQey2FEEANgIAQei2FEHQ+RM2AgBB6LYUQeDNEzYCAEHothRBtOoTNgIAQci3FEHothRBuKoUEMoCEOEDQfS2FEEANgIAQfC2FEHQ+RM2AgBB8LYUQeDNEzYCAEHwthRB2OsTNgIAQci3FEHwthRBwKoUEMoCEOEDQfy2FEEANgIAQfi2FEHQ+RM2AgBB+LYUQeDNEzYCAEGAtxRBwPUTNgIAQYC3FEGc3hM2AgBB+LYUQezdEzYCAEHItxRB+LYUQeipFBDKAhDhA0GMtxRBADYCAEGItxRB0PkTNgIAQYi3FEHgzRM2AgBBkLcUQeT1EzYCAEGQtxRBpOATNgIAQYi3FEH03xM2AgBByLcUQYi3FEHwqRQQygIQ4QNBnLcUQQA2AgBBmLcUQdD5EzYCAEGYtxRB4M0TNgIAQaC3FBDnA0GYtxRB4OETNgIAQci3FEGYtxRB+KkUEMoCEOEDQay3FEEANgIAQai3FEHQ+RM2AgBBqLcUQeDNEzYCAEGwtxQQ5wNBqLcUQfziEzYCAEHItxRBqLcUQYCqFBDKAhDhA0G8txRBADYCAEG4txRB0PkTNgIAQbi3FEHgzRM2AgBBuLcUQfzsEzYCAEHItxRBuLcUQciqFBDKAhDhA0HEtxRBADYCAEHAtxRB0PkTNgIAQcC3FEHgzRM2AgBBwLcUQfTtEzYCAEHItxRBwLcUQdCqFBDKAhDhA0HgqhRByLcUNgIAQeiqFEEBOgAAQeSqFEHgqhQ2AgBB4KoUCygCACIANgIAIAAgACgCBEEBajYCBEH0qhRBAToAAEHwqhRB7KoUNgIAQeyqFAsoAgAiADYCACAAIAAoAgRBAWo2AgQLDQAgAEEIahDhARogAAsJACAAEPUBEDQLEwAgACAAKAIAQQxrKAIAahD1AQsTACAAIAAoAgBBDGsoAgBqEPYBCwkAIAAgARD6AQsOACAAIAAoAhAgAXIQeAsKACAAQYSrFBByCxAAIAAQ/QEgARD9AXNBAXMLSwECfyAAKAIAIgEEQAJ/IAEoAgwiAiABKAIQRgRAIAEgASgCACgCJBEAAAwBCyACLQAAC0F/RwRAIAAoAgBFDwsgAEEANgIAC0EBCw0AIAAoAgAQ/wEaIAALMQEBfyAAKAIMIgEgACgCEEYEQCAAIAAoAgAoAigRAAAPCyAAIAFBAWo2AgwgAS0AAAsNACAAQQRqEOEBGiAACwkAIAAQgAIQNAsTACAAIAAoAgBBDGsoAgBqEIACCxMAIAAgACgCAEEMaygCAGoQgQILCgAgAEHYqRQQcguIAQEDfyAAKAJMIgJBf0YEQCAAIAAoAhwhACMAQRBrIgEkACABIAA2AgwgACAAKAIEQQFqNgIEIAEoAgwQ+wEiAEEgIAAoAgAoAhwRAwAhAiABKAIMIgAgACgCBEEBayIDNgIEIANBf0YEQCAAIAAoAgAoAggRAQALIAFBEGokACACNgJMCyACwAteAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABQf8BcSACKAIAKAI0EQMADAELIAIgA0EBajYCGCADIAE6AAAgAUH/AXELQX9HDQAgAEEANgIACyAACzgBAn8gAEGAnBM2AgAgACgCBCIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACyAACwkAIAAQhwIQNAvfAQEEfyMAQRBrIgQkAANAAkAgAiAFTA0AAn8gACgCDCIDIAAoAhAiBkkEQCAEQf////8HNgIMIAQgBiADa0ECdTYCCCAEIAIgBWs2AgQgASADIARBBGoiASAEQQhqIgMgASgCACADKAIASBsiASAEQQxqIgMgASgCACADKAIASBsoAgAiAxCKAiEBIAAgA0ECdCIGIAAoAgxqNgIMIAEgBmoMAQsgACAAKAIAKAIoEQAAIgNBf0YNASABIAM2AgBBASEDIAFBBGoLIQEgAyAFaiEFDAELCyAEQRBqJAAgBQsqAQF/IwBBEGsiAyQAIANBCGogASABIAJBAnRqIAAQ8AEgA0EQaiQAIAALMgEBf0F/IQEgACAAKAIAKAIkEQAAQX9HBH8gACAAKAIMIgBBBGo2AgwgACgCAAVBfwsLuwEBBH8jAEEQayIFJAADQAJAIAIgBEwNACAAKAIYIgMgACgCHCIGTwRAIAAgASgCACAAKAIAKAI0EQMAQX9GDQEgBEEBaiEEIAFBBGohAQUgBSAGIANrQQJ1NgIMIAUgAiAEazYCCCADIAEgBUEIaiIDIAVBDGoiBiADKAIAIAYoAgBIGygCACIDEIoCGiAAIANBAnQiBiAAKAIYajYCGCADIARqIQQgASAGaiEBCwwBCwsgBUEQaiQAIAQLKgAgAEGAnBM2AgAgAEEEahD0ASAAQgA3AhggAEIANwIQIABCADcCCCAAC/wBAQJ/IwBBEGsiAiQAIAAgACgCAEEMaygCAGooAhgEQCACIAA2AgwgAkEAOgAIIAAgACgCAEEMaygCAGoiASgCEEUEQCABKAJIIgEEQCABEI4CCyACQQE6AAgLAkAgAi0ACEUNACAAIAAoAgBBDGsoAgBqKAIYIgEgASgCACgCGBEAAEF/Rw0AIAAgACgCAEEMaygCAGoQjwILAkAgAigCDCIAIAAoAgBBDGsoAgBqIgAoAhgiAUUNACAAKAIQDQAgAC0ABUEgcUUNACABIAEoAgAoAhgRAABBf0cNACACKAIMIgAgACgCAEEMaygCAGoQjwILCyACQRBqJAALCQAgAEEBEPoBCwoAIABB/KoUEHILEAAgABCSAiABEJICc0EBcwtLAQJ/IAAoAgAiAQRAAn8gASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAIoAgALQX9HBEAgACgCAEUPCyAAQQA2AgALQQELDQAgACgCABCUAhogAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEEajYCDCABKAIAC1QBAn8CQCAAKAIAIgJFDQACfyACKAIYIgMgAigCHEYEQCACIAEgAigCACgCNBEDAAwBCyACIANBBGo2AhggAyABNgIAIAELQX9HDQAgAEEANgIACws6ACAALQALQYABcUEHdgRAIAAoAgAQNAsgACABKQIANwIAIAAgASgCCDYCCCABQQA6AAsgAUEAOgAAC8gBAQR/IAAhAyMAQRBrIgYkAAJAIAIgAWsiBEHw////B0kEQAJAIARBC0kEQCADIAQ6AAsMAQsgBkEIaiAEQQtPBH8gBEEQakFwcSIFIAVBAWsiBSAFQQtGGwVBCgtBAWoQmAIgAyAGKAIIIgU2AgAgAyAGKAIMQYCAgIB4cjYCCCADIAQ2AgQgBSEDCwNAIAEgAkcEQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohAQwBCwsgA0EAOgAAIAZBEGokAAwBCxBVAAsgAAsYAQF/IAEQVCECIAAgATYCBCAAIAI2AgAL/QEBAn8CQCAAKAIEIAAtAAsiAkH/AHEgAkGAAXFBB3YbIgIgAUkEQCABIAJrIgIEQCACIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgMgACgCBCAALQALIgFB/wBxIAFBgAFxQQd2GyIBa0sEQCAAIAMgAiADayABaiABIAEQxwMLIAAoAgAgACAALQALQYABcUEHdhsiAyABaiACQQAQmwIaIAEgAmohAQJAIAAtAAtBgAFxQQd2BEAgACABNgIEDAELIAAgAToACwsgASADakEAOgAACwwBCyAAIAAoAgAgACAALQALQYABcUEHdhsgARCaAgsLLgACQCAALQALQYABcUEHdgRAIAAgAjYCBAwBCyAAIAI6AAsLIAEgAmpBADoAAAtDAQF/IwBBEGsiAyQAIAMgAjoADyAAIQIDQCABBEAgAiADLQAPOgAAIAFBAWshASACQQFqIQIMAQsLIANBEGokACAACwoAIABBjKsUEHILfAEDf0F/IQMCQCAAQX9GDQAgASgCTEEATiEEAkACQCABKAIEIgJFBEAgARDQARogASgCBCICRQ0BCyACIAEoAixBCGtLDQELIARFDQFBfw8LIAEgAkEBayICNgIEIAIgADoAACABIAEoAgBBb3E2AgAgAEH/AXEhAwsgAwscAEHkoRQQdEG0pBQQdEG4ohQQjgJBiKUUEI4CC5UBAQN/IwBBEGsiAyQAIAAQ8wEiACABNgIgIABBpKETNgIAIAMgACgCBCIBNgIMIAEgASgCBEEBajYCBCADKAIMEJwCIQEgAygCDCIEIAQoAgRBAWsiBTYCBCAFQX9GBEAgBCAEKAIAKAIIEQEACyAAIAI2AiggACABNgIkIAAgASABKAIAKAIcEQAAOgAsIANBEGokAAs0AQF/IABBBGoiAkGMoRM2AgAgAkHwoBM2AgAgAEGQohM2AgAgAkGkohM2AgAgAiABEKMCC5UBAQN/IwBBEGsiAyQAIAAQjQIiACABNgIgIABBlKQTNgIAIAMgACgCBCIBNgIMIAEgASgCBEEBajYCBCADKAIMEKQCIQEgAygCDCIEIAQoAgRBAWsiBTYCBCAFQX9GBEAgBCAEKAIAKAIIEQEACyAAIAI2AiggACABNgIkIAAgASABKAIAKAIcEQAAOgAsIANBEGokAAs0AQF/IABBBGoiAkGMoRM2AgAgAkH4oxM2AgAgAEGApRM2AgAgAkGUpRM2AgAgAiABEKMCC0oAIABBADYCFCAAIAE2AhggAEEANgIMIABCgqCAgOAANwIEIAAgAUU2AhAgAEEgakEAQSgQKRogAEEcahD0ASAAQoCAgIBwNwJICwoAIABBlKsUEHILMQAgACAAKAIAKAIYEQAAGiAAIAEoAgAQpAIiATYCJCAAIAEgASgCACgCHBEAADoALAuEAQEFfyMAQRBrIgEkACABQRBqIQQCQANAIAAoAiQiAiAAKAIoIAFBCGoiAyAEIAFBBGogAigCACgCFBEHACEFQX8hAiADQQEgASgCBCADayIDIAAoAiAQLSADRw0BAkAgBUEBaw4CAQIACwtBf0EAIAAoAiAQtwEbIQILIAFBEGokACACC2UBAX8CQCAALQAsRQRAIAJBACACQQBKGyECA0AgAiADRg0CIAAgASgCACAAKAIAKAI0EQMAQX9GBEAgAw8FIAFBBGohASADQQFqIQMMAQsACwALIAFBBCACIAAoAiAQLSECCyACC4cCAQV/IwBBIGsiAiQAAkACQAJAIAFBf0YNACACIAE2AhQgAC0ALARAQX8hAyACQRRqQQRBASAAKAIgEC1BAUYNAQwDCyACIAJBGGoiBTYCECACQSBqIQYgAkEUaiEDA0AgACgCJCIEIAAoAiggAyAFIAJBDGogAkEYaiAGIAJBEGogBCgCACgCDBELACEEIAIoAgwgA0YNAiAEQQNGBEAgA0EBQQEgACgCIBAtQQFGDQIMAwsgBEEBSw0CIAJBGGoiA0EBIAIoAhAgA2siAyAAKAIgEC0gA0cNAiACKAIMIQMgBEEBRg0ACwsgAUEAIAFBf0cbIQMMAQtBfyEDCyACQSBqJAAgAwtJACAAIAEoAgAQpAIiATYCJCAAIAEgASgCACgCGBEAADYCLCAAIAAoAiQiASABKAIAKAIcEQAAOgA1IAAoAixBCU4EQBDeAQALCwkAIABBABCrAgufAwIGfwF+IwBBIGsiAiQAAkAgAC0ANARAIAAoAjAhAyABRQ0BIABBADoANCAAQX82AjAMAQsgAkEBNgIYIABBLGoiBCACQRhqIgMgAygCACAEKAIASBsoAgAiBEEAIARBAEobIQYDQCAFIAZHBEBBfyEDIAAoAiAQPiIHQX9GDQIgAkEYaiAFaiAHOgAAIAVBAWohBQwBCwsCQAJAIAAtADUEQCACIAIsABg2AhQMAQsgAkEYaiEDA0ACQCAAKAIoIgUpAgAhCAJAIAAoAiQiBiAFIAJBGGoiBSAEIAVqIgUgAkEQaiACQRRqIAMgAkEMaiAGKAIAKAIQEQsAQQFrDgMABAEDCyAAKAIoIAg3AgAgBEEIRg0DIAAoAiAQPiIGQX9GDQMgBSAGOgAAIARBAWohBAwBCwsgAiACLAAYNgIUCwJAIAFFBEADQCAEQQBMDQJBfyEDIARBAWsiBCACQRhqaiwAACAAKAIgEJ0CQX9HDQAMBAsACyAAIAIoAhQiAzYCMAwCCyACKAIUIQMMAQtBfyEDCyACQSBqJAAgAwsJACAAQQEQqwIL8QEBA38jAEEgayICJAAgAC0ANCEDAkAgAUF/RgRAIAMNASAAIAAoAjAiAUF/RzoANAwBCwJAIANFDQAgAiAAKAIwNgIQAkACQAJAIAAoAiQiAyAAKAIoIAJBEGogAkEUaiIEIAJBDGogAkEYaiACQSBqIAQgAygCACgCDBELAEEBaw4DAgIAAQsgACgCMCEDIAIgAkEZajYCFCACIAM6ABgLA0AgAigCFCIDIAJBGGpNDQIgAiADQQFrIgM2AhQgAywAACAAKAIgEJ0CQX9HDQALC0F/IQEMAQsgAEEBOgA0IAAgATYCMAsgAkEgaiQAIAELMQAgACAAKAIAKAIYEQAAGiAAIAEoAgAQnAIiATYCJCAAIAEgASgCACgCHBEAADoALAtlAQF/AkAgAC0ALEUEQCACQQAgAkEAShshAgNAIAIgA0YNAiAAIAEtAAAgACgCACgCNBEDAEF/RgRAIAMPBSABQQFqIQEgA0EBaiEDDAELAAsACyABQQEgAiAAKAIgEC0hAgsgAguIAgEFfyMAQSBrIgIkAAJAAkACQCABQX9GDQAgAiABwDoAFyAALQAsBEBBfyEDIAJBF2pBAUEBIAAoAiAQLUEBRg0BDAMLIAIgAkEYaiIFNgIQIAJBIGohBiACQRdqIQMDQCAAKAIkIgQgACgCKCADIAUgAkEMaiACQRhqIAYgAkEQaiAEKAIAKAIMEQsAIQQgAigCDCADRg0CIARBA0YEQCADQQFBASAAKAIgEC1BAUYNAgwDCyAEQQFLDQIgAkEYaiIDQQEgAigCECADayIDIAAoAiAQLSADRw0CIAIoAgwhAyAEQQFGDQALCyABQQAgAUF/RxshAwwBC0F/IQMLIAJBIGokACADC0kAIAAgASgCABCcAiIBNgIkIAAgASABKAIAKAIYEQAANgIsIAAgACgCJCIBIAEoAgAoAhwRAAA6ADUgACgCLEEJTgRAEN4BAAsLCQAgAEEAELMCC58DAgZ/AX4jAEEgayICJAACQCAALQA0BEAgACgCMCEDIAFFDQEgAEEAOgA0IABBfzYCMAwBCyACQQE2AhggAEEsaiIEIAJBGGoiAyADKAIAIAQoAgBIGygCACIEQQAgBEEAShshBgNAIAUgBkcEQEF/IQMgACgCIBA+IgdBf0YNAiACQRhqIAVqIAc6AAAgBUEBaiEFDAELCwJAAkAgAC0ANQRAIAIgAi0AGDoAFwwBCyACQRhqIQMDQAJAIAAoAigiBSkCACEIAkAgACgCJCIGIAUgAkEYaiIFIAQgBWoiBSACQRBqIAJBF2ogAyACQQxqIAYoAgAoAhARCwBBAWsOAwAEAQMLIAAoAiggCDcCACAEQQhGDQMgACgCIBA+IgZBf0YNAyAFIAY6AAAgBEEBaiEEDAELCyACIAItABg6ABcLAkAgAUUEQANAIARBAEwNAkF/IQMgBEEBayIEIAJBGGpqLQAAIAAoAiAQnQJBf0cNAAwECwALIAAgAi0AFyIDNgIwDAILIAItABchAwwBC0F/IQMLIAJBIGokACADCwkAIABBARCzAgvyAQEDfyMAQSBrIgIkACAALQA0IQMCQCABQX9GBEAgAw0BIAAgACgCMCIBQX9HOgA0DAELAkAgA0UNACACIAAoAjDAOgATAkACQAJAIAAoAiQiAyAAKAIoIAJBE2ogAkEUaiIEIAJBDGogAkEYaiACQSBqIAQgAygCACgCDBELAEEBaw4DAgIAAQsgACgCMCEDIAIgAkEZajYCFCACIAM6ABgLA0AgAigCFCIDIAJBGGpNDQIgAiADQQFrIgM2AhQgAywAACAAKAIgEJ0CQX9HDQALC0F/IQEMAQsgAEEBOgA0IAAgATYCMAsgAkEgaiQAIAELLAEBfyMAQRBrIgIkACACIAE2AgwgAEHkAEH7PyABENoBIQAgAkEQaiQAIAALmAMBCn8gAAJ/AkAgACIBQQNxBEADQCABLQAAIgJFDQIgAkE9Rg0CIAFBAWoiAUEDcQ0ACwsCQCABKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQADQCACQb369OkDc0GBgoQIayACQX9zcUGAgYKEeHENASABKAIEIQIgAUEEaiEBIAJBgYKECGsgAkF/c3FBgIGChHhxRQ0ACwsDQCABIgItAAAiA0E9RwRAIAJBAWohASADDQELCyACDAELIAELIgFGBEBBAA8LAkAgACABIABrIgZqLQAADQBBwKgUKAIAIgRFDQAgBCgCACIBRQ0AA0ACQAJ/IAAhAiABIQNBACEHQQAgBiIIRQ0AGgJAIAItAAAiBUUNAANAAkAgBSADLQAAIglHDQAgCUUNACAIQQFrIghFDQAgA0EBaiEDIAItAAEhBSACQQFqIQIgBQ0BDAILCyAFIQcLIAdB/wFxIAMtAABrC0UEQCABIAZqIgEtAABBPUYNAQsgBCgCBCEBIARBBGohBCABDQEMAgsLIAFBAWohCgsgCgvwAgEDfwJAIAEtAAANAEGSwwAQtwIiAQRAIAEtAAANAQsgAEEMbEHgpRNqELcCIgEEQCABLQAADQELQabDABC3AiIBBEAgAS0AAA0BC0HZ6hIhAQsCQANAAkAgASACai0AACIERQ0AIARBL0YNAEEXIQQgAkEBaiICQRdHDQEMAgsLIAIhBAtB2eoSIQMCQAJAAkACQAJAIAEtAAAiAkEuRg0AIAEgBGotAAANACABIQMgAkHDAEcNAQsgAy0AAUUNAQsgA0HZ6hIQwAFFDQAgA0GLwgAQwAENAQsgAEUEQEGophMhAiADLQABQS5GDQILQQAPC0HEqBQoAgAiAgRAA0AgAyACQQhqEMABRQ0CIAIoAiAiAg0ACwtBJBAzIgIEQCACQRQ2AgQgAkHApRM2AgAgAkEIaiIBIAMgBBArGiABIARqQQA6AAAgAkHEqBQoAgA2AiBBxKgUIAI2AgALIAJBqKYTIAAgAnIbIQILIAILLgAgAEEARyAAQZz2E0dxIABBtPYTR3EgAEHIqBRHcSAAQeCoFEdxBEAgABA0CwuyCAEFfyABKAIAIQQCQAJAAkACQAJAAkACQAJ/AkACQAJAAkAgA0UNACADKAIAIgZFDQAgAEUEQCACIQMMAwsgA0EANgIAIAIhAwwBCwJAQYygFCgCACgCAEUEQCAARQ0BIAJFDQwgAiEGA0AgBCwAACIDBEAgACADQf+/A3E2AgAgAEEEaiEAIARBAWohBCAGQQFrIgYNAQwOCwsgAEEANgIAIAFBADYCACACIAZrDwsgAiEDIABFDQMMBQsgBBAvDwtBASEFDAMLQQAMAQtBAQshBQNAIAVFBEAgBC0AAEEDdiIFQRBrIAZBGnUgBWpyQQdLDQMCfyAEQQFqIgUgBkGAgIAQcUUNABogBS0AAEHAAXFBgAFHBEAgBEEBayEEDAcLIARBAmoiBSAGQYCAIHFFDQAaIAUtAABBwAFxQYABRwRAIARBAWshBAwHCyAEQQNqCyEEIANBAWshA0EBIQUMAQsDQCAELQAAIQYCQCAEQQNxDQAgBkEBa0H+AEsNACAEKAIAIgZBgYKECGsgBnJBgIGChHhxDQADQCADQQRrIQMgBCgCBCEGIARBBGohBCAGIAZBgYKECGtyQYCBgoR4cUUNAAsLIAZB/wFxIgVBAWtB/gBNBEAgA0EBayEDIARBAWohBAwBCwsgBUHCAWsiBUEySw0DIARBAWohBCAFQQJ0QdC+E2ooAgAhBkEAIQUMAAsACwNAIAVFBEAgA0UNBwNAAkACQAJAIAQtAAAiBUEBayIHQf4ASwRAIAUhBgwBCyADQQVJDQEgBEEDcQ0BAkADQCAEKAIAIgZBgYKECGsgBnJBgIGChHhxDQEgACAGQf8BcTYCACAAIAQtAAE2AgQgACAELQACNgIIIAAgBC0AAzYCDCAAQRBqIQAgBEEEaiEEIANBBGsiA0EESw0ACyAELQAAIQYLIAZB/wFxIgVBAWshBwsgB0H+AEsNAQsgACAFNgIAIABBBGohACAEQQFqIQQgA0EBayIDDQEMCQsLIAVBwgFrIgVBMksNAyAEQQFqIQQgBUECdEHQvhNqKAIAIQZBASEFDAELIAQtAAAiBUEDdiIHQRBrIAcgBkEadWpyQQdLDQECQAJAAn8gBEEBaiIHIAVBgAFrIAZBBnRyIgVBAE4NABogBy0AAEGAAWsiB0E/Sw0BIARBAmoiCCAHIAVBBnRyIgVBAE4NABogCC0AAEGAAWsiB0E/Sw0BIAcgBUEGdHIhBSAEQQNqCyEEIAAgBTYCACADQQFrIQMgAEEEaiEADAELQbCGFEEZNgIAIARBAWshBAwFC0EAIQUMAAsACyAEQQFrIQQgBg0BIAQtAAAhBgsgBkH/AXENACAABEAgAEEANgIAIAFBADYCAAsgAiADaw8LQbCGFEEZNgIAIABFDQELIAEgBDYCAAtBfw8LIAEgBDYCACACC4cEAgd/BH4jAEEQayIIJAACQCAALQAAIgVFBEAgACEEDAELIAAhBAJAA0AgBcAiBkEgRiAGQQlrQQVJckUNASAELQABIQUgBEEBaiEEIAUNAAsMAQsCQCAFQf8BcSIFQStrDgMAAQABC0F/QQAgBUEtRhshByAEQQFqIQQLAn8CQCACQRByQRBHDQAgBC0AAEEwRw0AQQEhCSAELQABQd8BcUHYAEYEQCAEQQJqIQRBEAwCCyAEQQFqIQQgAkEIIAIbDAELIAJBCiACGwsiCq0hDEEAIQIDQAJAQVAhBQJAIAQsAAAiBkEwa0H/AXFBCkkNAEGpfyEFIAZB4QBrQf8BcUEaSQ0AQUkhBSAGQcEAa0H/AXFBGUsNAQsgBSAGaiIGIApODQAgCCAMQgAgC0IAED1BASEFAkAgCCkDCEIAUg0AIAsgDH4iDSAGrSIOQn+FVg0AIA0gDnwhC0EBIQkgAiEFCyAEQQFqIQQgBSECDAELCyABBEAgASAEIAAgCRs2AgALAkACQAJAIAIEQEGwhhRBxAA2AgAgB0EAIANCAYMiDFAbIQcgAyELDAELIAMgC1YNASADQgGDIQwLAkAgDKcNACAHDQBBsIYUQcQANgIAIANCAX0hAwwCCyADIAtaDQBBsIYUQcQANgIADAELIAsgB6wiA4UgA30hAwsgCEEQaiQAIAMLfwICfwJ+IwBBoAFrIgQkACAEIAE2AjwgBCABNgIUIARBfzYCGCAEQRBqIgVCABDSASAEIAUgA0EBENcBIAQpAwghBiAEKQMAIQcgAgRAIAIgASAEKAIUIAQoAogBaiAEKAI8a2o2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAteAQN/IAEgBCADa2ohBQJAA0AgAyAERwRAQX8hACABIAJGDQIgASwAACIGIAMsAAAiB0gNAiAGIAdKBEBBAQ8FIANBAWohAyABQQFqIQEMAgsACwsgAiAFRyEACyAACwwAIAAgAiADEJcCGgtAAQF/QQAhAAN/IAEgAkYEfyAABSABLAAAIABBBHRqIgBBgICAgH9xIgNBGHYgA3IgAHMhACABQQFqIQEMAQsLC1QBAn8CQANAIAMgBEcEQEF/IQAgASACRg0CIAEoAgAiBSADKAIAIgZIDQIgBSAGSgRAQQEPBSADQQRqIQMgAUEEaiEBDAILAAsLIAEgAkchAAsgAAsMACAAIAIgAxDCAhoLywEBBH8gACEDIwBBEGsiBiQAAkAgAiABa0ECdSIEQfD///8DSQRAAkAgBEECSQRAIAMgBDoACwwBCyAGQQhqIARBAk8EfyAEQQRqQXxxIgUgBUEBayIFIAVBAkYbBUEBC0EBahDDAiADIAYoAggiBTYCACADIAYoAgxBgICAgHhyNgIIIAMgBDYCBCAFIQMLA0AgASACRwRAIAMgASgCADYCACADQQRqIQMgAUEEaiEBDAELCyADQQA2AgAgBkEQaiQADAELEFUACyAACxkBAX8gARDEAiECIAAgATYCBCAAIAI2AgALGQAgAEGAgICABE8EQBCuAQALIABBAnQQVAtAAQF/QQAhAAN/IAEgAkYEfyAABSABKAIAIABBBHRqIgBBgICAgH9xIgNBGHYgA3IgAHMhACABQQRqIQEMAQsLC/QCAQJ/IwBBIGsiBiQAIAYgATYCHAJAIAMtAARBAXFFBEAgBkF/NgIAIAAgASACIAMgBCAGIAAoAgAoAhARBQAhAQJAAkACQCAGKAIADgIAAQILIAVBADoAAAwDCyAFQQE6AAAMAgsgBUEBOgAAIARBBDYCAAwBCyAGIAMoAhwiADYCACAAIAAoAgRBAWo2AgQgBigCABD7ASEHIAYoAgAiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgBiADKAIcIgA2AgAgACAAKAIEQQFqNgIEIAYoAgAQxwIhACAGKAIAIgEgASgCBEEBayIDNgIEIANBf0YEQCABIAEoAgAoAggRAQALIAYgACAAKAIAKAIYEQIAIAZBDHIgACAAKAIAKAIcEQIAIAUgBkEcaiACIAYgBkEYaiIDIAcgBEEBEMgCIAZGOgAAIAYoAhwhAQNAIANBDGsQyQIiAyAGRw0ACwsgBkEgaiQAIAELCgAgAEG8qxQQcgv4BQELfyMAQYABayIKJAAgCiABNgJ8IApB1AA2AhAgCkEIaiIBQQA2AgAgASAKQRBqIgkoAgA2AgQgASENAkACQCADIAJrQQxtIgtB5QBPBEAgCxAzIglFDQEgDSgCACEBIA0gCTYCACABBEAgASANKAIEEQEACwsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoQ/AFBASALGwRAIAAgCkH8AGoQ/AEEQCAFIAUoAgBBAnI2AgALDAULAn8gACgCACIHKAIMIgEgBygCEEYEQCAHIAcoAgAoAiQRAAAMAQsgAS0AAAvAIQ4gBkUEQCAEIA4gBCgCACgCDBEDACEOCyAQQQFqIQhBACERIAkhByACIQEDQCABIANGBEAgCCEQIBFFDQIgABD+ARogCSEHIAIhASALIAxqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgECABKAIEIAEtAAsiCEH/AHEgCEGAAXFBB3YbRg0AIAdBADoAACAMQQFrIQwLIAdBAWohByABQQxqIQEMAQsACwAFAkAgBy0AAEEBRw0AIBAgASgCACABIAEtAAtBgAFxQQd2G2otAAAhDwJAIA5B/wFxIAYEfyAPBSAEIA/AIAQoAgAoAgwRAwALQf8BcUYEQEEBIREgCCABKAIEIAEtAAsiD0H/AHEgD0GAAXFBB3YbRw0CIAdBAjoAACAMQQFqIQwMAQsgB0EAOgAACyALQQFrIQsLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgASgCBCABLQALIghB/wBxIAhBgAFxQQd2G0UiCBs6AAAgCCAMaiEMIAsgCGshCyAHQQFqIQcgAUEMaiEBDAELAAsACxDeAQALAkACQANAIAIgA0YNASAJLQAAQQJHBEAgCUEBaiEJIAJBDGohAgwBCwsgAiEDDAELIAUgBSgCAEEEcjYCAAsgDSIAKAIAIQEgAEEANgIAIAEEQCABIAAoAgQRAQALIApBgAFqJAAgAwsaACAALQALQYABcUEHdgRAIAAoAgAQNAsgAAvOAQEFfyMAQRBrIgUkACAFQQRqIgFB1QA2AgQgASAANgIAIAFBADYCCCMAQRBrIgMkACAAKAIAQX9HBEAgA0EMaiIEIAE2AgAgA0EIaiICIAQ2AgADQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAIoAgAoAgAiASgCACABKAIIIgRBAXVqIQIgASgCBCEBIAIgBEEBcQR/IAIoAgAgAWooAgAFIAELEQEAIABBfzYCAAsLIANBEGokACAAKAIEIQAgBUEQaiQAIABBAWsLHAAgAEH4qhRB+KoUKAIAQQFqIgA2AgAgADYCBAvlBAECfyADKAIEIQAgAygCHCEGIwBB4AFrIgMkACADIAI2AtgBIAMgATYC3AEgABDNAiEHIANByAFqIAYgA0HXAWoQzgIgA0G8AWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGNgK4ASADIANBEGo2AgwgA0EANgIIA0ACQCADQdwBaiADQdgBahD8AQ0AIAMoArgBIAYgAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAakYEQCACIABBAXQQmQIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCZAiADIAIoAgAgAiACLQALQYABcUEHdhsiBiAAajYCuAELAn8gAygC3AEiACgCDCIBIAAoAhBGBEAgACAAKAIAKAIkEQAADAELIAEtAAALwCAHIAYgA0G4AWogA0EIaiADLADXASADKALMASADLQDTASADQRBqIANBDGpBoMATEM8CDQAgA0HcAWoQ/gEaDAELCyADKAIMIQACQAJAIAMoAswBIAMtANMBIgFB/wBxIAFBgAFxQQd2G0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAK4ASAEIAcQ0AI2AgAgA0HIAWogA0EQaiABIAQQ0QIgA0HcAWogA0HYAWoQ/AEEQCAEIAQoAgBBAnI2AgALIAMoAtwBIQAgAhDJAhogA0HIAWoQyQIaIANB4AFqJAAgAAsrAAJAIABBygBxIgAEQCAAQcAARgRAQQgPCyAAQQhHDQFBEA8LQQAPC0EKC3oBAX8jAEEQayIDJAAgAyABNgIMIAEgASgCBEEBajYCBCACIAMoAgwQxwIiASABKAIAKAIQEQAAOgAAIAAgASABKAIAKAIUEQIAIAMoAgwiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgA0EQaiQAC9gCAQN/AkACQCADKAIAIgsgAkcNAEErIQwgAEH/AXEiDSAKLQAYRwRAQS0hDCAKLQAZIA1HDQELIAMgAkEBajYCACACIAw6AAAMAQsCQAJAIAYgB0H/AHEgB0GAAXFBB3YbRQ0AIAAgBUcNAEEAIQcgCSgCACIAIAhrQZ8BSg0BIAQoAgAhASAJIABBBGo2AgAgACABNgIADAILQX8hByAKIApBGmogABDSAiAKayIAQRdKDQACQAJAAkAgAUEIaw4DAAIAAQsgACABSA0BDAILIAFBEEcNACAAQRZIDQAgAiALRg0BIAsgAmtBAkoNASALQQFrLQAAQTBHDQEgBEEANgIAIAMgC0EBajYCACALIABBoMATai0AADoAAEEADwsgAyALQQFqNgIAIAsgAEGgwBNqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQcLIAcPCyAEQQA2AgBBAAviAQICfwF+IwBBEGsiBCQAAn8CQCAAIAFHBEACQEGwhhQoAgAhBUGwhhRBADYCABDTAhogACAEQQxqIAMQ1AIhBgJAQbCGFCgCACIABEAgBCgCDCABRw0CIABBxABHDQEgAkEENgIAQf////8HIAZCAFUNBRoMBAtBsIYUIAU2AgAgBCgCDCABRg0ADAELIAZC/////3dXBEAgAkEENgIADAMLIAZCgICAgAhZBEAgAkEENgIAQf////8HDAQLIAanDAMLCyACQQQ2AgBBAAwBC0GAgICAeAshACAEQRBqJAAgAAvaAQEDfyAAKAIEIAAtAAsiBEH/AHEgBEGAAXFBB3YbIQQCQCACIAFrQQVIDQAgBEUNACABIAIQ1QIgAkEEayEEIAAoAgQgAC0ACyICQf8AcSACQYABcUEHdhsgACgCACAAIAJBgAFxQQd2GyICaiEGAkADQAJAIAIsAAAiAEH/AGshBSABIARPDQAgBUH/AXFBggFPBEAgASgCACAARw0DCyABQQRqIQEgAiAGIAJrQQFKaiECDAELCyAFQf8BcUGCAUkNASAEKAIAQQFrIABJDQELIANBBDYCAAsLMgAgAkH/AXEhAgNAAkAgACABRwR/IAAtAAAgAkcNASAABSABCw8LIABBAWohAAwACwAL1AIBA39B3KoULQAABEBB2KoUKAIADwsjAEEgayIBJAACQAJAA0AgAUEIaiAAQQJ0aiAAQfjDAEH87RJBASAAdEH/////B3EbELgCIgI2AgAgAkF/Rg0BIABBAWoiAEEGRw0AC0Gc9hMhACABQQhqQZz2E0EYEJIBRQ0BQbT2EyEAIAFBCGpBtPYTQRgQkgFFDQFBACEAQfioFC0AAEUEQANAIABBAnRByKgUaiAAQfztEhC4AjYCACAAQQFqIgBBBkcNAAtB+KgUQQE6AABB4KgUQcioFCgCADYCAAtByKgUIQAgAUEIakHIqBRBGBCSAUUNAUHgqBQhACABQQhqQeCoFEEYEJIBRQ0BQRgQMyIARQ0AIAAgASkCCDcCACAAIAEpAhg3AhAgACABKQIQNwIIDAELQQAhAAsgAUEgaiQAQdyqFEEBOgAAQdiqFCAANgIAIAALFgAgACABIAJCgICAgICAgICAfxC7Ags/AQF/AkAgACABRg0AA0AgACABQQRrIgFPDQEgACgCACECIAAgASgCADYCACABIAI2AgAgAEEEaiEADAALAAsL5QQBAn8gAygCBCEAIAMoAhwhBiMAQeABayIDJAAgAyACNgLYASADIAE2AtwBIAAQzQIhByADQcgBaiAGIANB1wFqEM4CIANBvAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCZAiADIAIoAgAgAiACLQALQYABcUEHdhsiBjYCuAEgAyADQRBqNgIMIANBADYCCANAAkAgA0HcAWogA0HYAWoQ/AENACADKAK4ASAGIAIoAgQgAi0ACyIAQf8AcSAAQYABcUEHdhsiAGpGBEAgAiAAQQF0EJkCIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgYgAGo2ArgBCwJ/IAMoAtwBIgAoAgwiASAAKAIQRgRAIAAgACgCACgCJBEAAAwBCyABLQAAC8AgByAGIANBuAFqIANBCGogAywA1wEgAygCzAEgAy0A0wEgA0EQaiADQQxqQaDAExDPAg0AIANB3AFqEP4BGgwBCwsgAygCDCEAAkACQCADKALMASADLQDTASIBQf8AcSABQYABcUEHdhtFDQAgACADQRBqa0GfAUoNACADIABBBGoiATYCDCAAIAMoAgg2AgAMAQsgACEBCyAFIAYgAygCuAEgBCAHENcCNwMAIANByAFqIANBEGogASAEENECIANB3AFqIANB2AFqEPwBBEAgBCAEKAIAQQJyNgIACyADKALcASEAIAIQyQIaIANByAFqEMkCGiADQeABaiQAIAALrQECAn8BfiMAQRBrIgQkAAJAIAAgAUcEQEGwhhQoAgAhBUGwhhRBADYCABDTAhogACAEQQxqIAMQ1AIhBgJAQbCGFCgCACIABEAgBCgCDCABRw0BIABBxABHDQMgAkEENgIAQv///////////wBCgICAgICAgICAfyAGQgBVGyEGDAMLQbCGFCAFNgIAIAQoAgwgAUYNAgsLIAJBBDYCAEIAIQYLIARBEGokACAGC+UEAQJ/IAMoAgQhACADKAIcIQYjAEHgAWsiAyQAIAMgAjYC2AEgAyABNgLcASAAEM0CIQcgA0HIAWogBiADQdcBahDOAiADQbwBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArgBIAMgA0EQajYCDCADQQA2AggDQAJAIANB3AFqIANB2AFqEPwBDQAgAygCuAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCZAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgK4AQsCfyADKALcASIAKAIMIgEgACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgAS0AAAvAIAcgBiADQbgBaiADQQhqIAMsANcBIAMoAswBIAMtANMBIANBEGogA0EMakGgwBMQzwINACADQdwBahD+ARoMAQsLIAMoAgwhAAJAAkAgAygCzAEgAy0A0wEiAUH/AHEgAUGAAXFBB3YbRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArgBIAQgBxDZAjsBACADQcgBaiADQRBqIAEgBBDRAiADQdwBaiADQdgBahD8AQRAIAQgBCgCAEECcjYCAAsgAygC3AEhACACEMkCGiADQcgBahDJAhogA0HgAWokACAAC+EBAgN/AX4jAEEQayIEJAACfwJAIAAgAUcEQAJAAkAgAC0AACIFQS1HDQAgAEEBaiIAIAFHDQAMAQtBsIYUKAIAIQZBsIYUQQA2AgAQ0wIaIAAgBEEMaiADENoCIQcCQEGwhhQoAgAiAARAIAQoAgwgAUcNAiAAQcQARg0BIAdC//8DVg0BDAQLQbCGFCAGNgIAIAEgBCgCDEcNASAHQoCABFQNAwsgAkEENgIAQf//AwwDCwsgAkEENgIAQQAMAQtBACAHpyIAayAAIAVBLUYbCyEAIARBEGokACAAQf//A3ELDQAgACABIAJCfxC7AgvlBAECfyADKAIEIQAgAygCHCEGIwBB4AFrIgMkACADIAI2AtgBIAMgATYC3AEgABDNAiEHIANByAFqIAYgA0HXAWoQzgIgA0G8AWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGNgK4ASADIANBEGo2AgwgA0EANgIIA0ACQCADQdwBaiADQdgBahD8AQ0AIAMoArgBIAYgAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAakYEQCACIABBAXQQmQIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCZAiADIAIoAgAgAiACLQALQYABcUEHdhsiBiAAajYCuAELAn8gAygC3AEiACgCDCIBIAAoAhBGBEAgACAAKAIAKAIkEQAADAELIAEtAAALwCAHIAYgA0G4AWogA0EIaiADLADXASADKALMASADLQDTASADQRBqIANBDGpBoMATEM8CDQAgA0HcAWoQ/gEaDAELCyADKAIMIQACQAJAIAMoAswBIAMtANMBIgFB/wBxIAFBgAFxQQd2G0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAK4ASAEIAcQ3AI2AgAgA0HIAWogA0EQaiABIAQQ0QIgA0HcAWogA0HYAWoQ/AEEQCAEIAQoAgBBAnI2AgALIAMoAtwBIQAgAhDJAhogA0HIAWoQyQIaIANB4AFqJAAgAAveAQIDfwF+IwBBEGsiBCQAAn8CQCAAIAFHBEACQAJAIAAtAAAiBUEtRw0AIABBAWoiACABRw0ADAELQbCGFCgCACEGQbCGFEEANgIAENMCGiAAIARBDGogAxDaAiEHAkBBsIYUKAIAIgAEQCAEKAIMIAFHDQIgAEHEAEYNASAHQv////8PVg0BDAQLQbCGFCAGNgIAIAEgBCgCDEcNASAHQoCAgIAQVA0DCyACQQQ2AgBBfwwDCwsgAkEENgIAQQAMAQtBACAHpyIAayAAIAVBLUYbCyEAIARBEGokACAAC+UEAQJ/IAMoAgQhACADKAIcIQYjAEHgAWsiAyQAIAMgAjYC2AEgAyABNgLcASAAEM0CIQcgA0HIAWogBiADQdcBahDOAiADQbwBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArgBIAMgA0EQajYCDCADQQA2AggDQAJAIANB3AFqIANB2AFqEPwBDQAgAygCuAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCZAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgK4AQsCfyADKALcASIAKAIMIgEgACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgAS0AAAvAIAcgBiADQbgBaiADQQhqIAMsANcBIAMoAswBIAMtANMBIANBEGogA0EMakGgwBMQzwINACADQdwBahD+ARoMAQsLIAMoAgwhAAJAAkAgAygCzAEgAy0A0wEiAUH/AHEgAUGAAXFBB3YbRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArgBIAQgBxDeAjcDACADQcgBaiADQRBqIAEgBBDRAiADQdwBaiADQdgBahD8AQRAIAQgBCgCAEECcjYCAAsgAygC3AEhACACEMkCGiADQcgBahDJAhogA0HgAWokACAAC8IBAgN/AX4jAEEQayIEJAACfiAAIAFHBEACQAJAIAAtAAAiBUEtRw0AIABBAWoiACABRw0ADAELQbCGFCgCACEGQbCGFEEANgIAENMCGiAAIARBDGogAxDaAiEHAkBBsIYUKAIAIgAEQCAEKAIMIAFHDQIgAEHEAEcNASACQQQ2AgBCfwwEC0GwhhQgBjYCACAEKAIMIAFGDQAMAQtCACAHfSAHIAVBLUYbDAILCyACQQQ2AgBCAAshByAEQRBqJAAgBwuMBQEDfyADKAIcIQAjAEGAAmsiAyQAIAMgAjYC+AEgAyABNgL8ASADQcABaiAAIANB0AFqIANBzwFqIANBzgFqEOACIANBtAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCZAiADIAIoAgAgAiACLQALQYABcUEHdhsiBjYCsAEgAyADQRBqNgIMIANBADYCCCADQQE6AAcgA0HFADoABiADLQDOAcAhASADLQDPAcAhBwNAAkAgA0H8AWogA0H4AWoQ/AENACADKAKwASAGIAIoAgQgAi0ACyIAQf8AcSAAQYABcUEHdhsiAGpGBEAgAiAAQQF0EJkCIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgYgAGo2ArABCwJ/IAMoAvwBIgAoAgwiCCAAKAIQRgRAIAAgACgCACgCJBEAAAwBCyAILQAAC8AgA0EHaiADQQZqIAYgA0GwAWogByABIANBwAFqIANBEGogA0EMaiADQQhqIANB0AFqEOECDQAgA0H8AWoQ/gEaDAELCyADKAIMIQACQAJAIAMoAsQBIAMtAMsBIgFB/wBxIAFBgAFxQQd2G0UNACADLQAHRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArABIAQQ4gI4AgAgA0HAAWogA0EQaiABIAQQ0QIgA0H8AWogA0H4AWoQ/AEEQCAEIAQoAgBBAnI2AgALIAMoAvwBIQAgAhDJAhogA0HAAWoQyQIaIANBgAJqJAAgAAusAQEBfyMAQRBrIgUkACAFIAE2AgwgASABKAIEQQFqNgIEIAUoAgwQ+wEiAUGgwBNBwMATIAIgASgCACgCIBEGABogAyAFKAIMEMcCIgEgASgCACgCDBEAADoAACAEIAEgASgCACgCEBEAADoAACAAIAEgASgCACgCFBECACAFKAIMIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAVBEGokAAu+BAACQAJAIAAgBUYEQCABLQAARQ0CQQAhBSABQQA6AAAgBCAEKAIAIgBBAWo2AgAgAEEuOgAAIAcoAgQgBy0ACyIAQf8AcSAAQYABcUEHdhtFDQEgCSgCACIAIAhrQZ8BSg0BIAooAgAhASAJIABBBGo2AgAgACABNgIAQQAPCwJAIAAgBkcNACAHKAIEIActAAsiBUH/AHEgBUGAAXFBB3YbRQ0AIAEtAABFDQJBACEFIAkoAgAiACAIa0GfAUoNASAKKAIAIQEgCSAAQQRqNgIAIAAgATYCACAKQQA2AgBBAA8LQX8hBSALIAtBIGogABDSAiALayILQR9KDQAgC0GgwBNqLAAAIQYCQAJAAkACQCALQX5xQRZrDgMBAgACCyADIAQoAgAiAEcEQCAAQQFrLAAAIgFB3wBxIAEgAUHhAGtBGkkbIAIsAAAiAUHfAHEgASABQeEAa0EaSRtHDQQLIAQgAEEBajYCACAAIAY6AABBAA8LIAJB0AA6AAAMAQsgBkHfAHEgBiAGQeEAa0EaSRsiACACLAAARw0AIAIgAEEgciAAIABBwQBrQRpJGzoAACABLQAARQ0AIAFBADoAACAHKAIEIActAAsiAEH/AHEgAEGAAXFBB3YbRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhBSALQRVKDQAgCiAKKAIAQQFqNgIACyAFDwtBfwu2AQIDfwJ9IwBBEGsiAyQAAkACQAJAIAAgAUcEQEGwhhQoAgAhBUGwhhRBADYCABDTAhojAEEQayIEJAAgBCAAIANBDGpBABC8AiAEKQMAIAQpAwgQUSEGIARBEGokAEGwhhQoAgAiAEUNASADKAIMIAFHDQIgBiEHIABBxABHDQMMAgsgAkEENgIADAILQbCGFCAFNgIAIAMoAgwgAUYNAQsgAkEENgIAIAchBgsgA0EQaiQAIAYLjAUBA38gAygCHCEAIwBBgAJrIgMkACADIAI2AvgBIAMgATYC/AEgA0HAAWogACADQdABaiADQc8BaiADQc4BahDgAiADQbQBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2ArABIAMgA0EQajYCDCADQQA2AgggA0EBOgAHIANBxQA6AAYgAy0AzgHAIQEgAy0AzwHAIQcDQAJAIANB/AFqIANB+AFqEPwBDQAgAygCsAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCZAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgKwAQsCfyADKAL8ASIAKAIMIgggACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgCC0AAAvAIANBB2ogA0EGaiAGIANBsAFqIAcgASADQcABaiADQRBqIANBDGogA0EIaiADQdABahDhAg0AIANB/AFqEP4BGgwBCwsgAygCDCEAAkACQCADKALEASADLQDLASIBQf8AcSABQYABcUEHdhtFDQAgAy0AB0UNACAAIANBEGprQZ8BSg0AIAMgAEEEaiIBNgIMIAAgAygCCDYCAAwBCyAAIQELIAUgBiADKAKwASAEEOQCOQMAIANBwAFqIANBEGogASAEENECIANB/AFqIANB+AFqEPwBBEAgBCAEKAIAQQJyNgIACyADKAL8ASEAIAIQyQIaIANBwAFqEMkCGiADQYACaiQAIAALtgECA38CfCMAQRBrIgMkAAJAAkACQCAAIAFHBEBBsIYUKAIAIQVBsIYUQQA2AgAQ0wIaIwBBEGsiBCQAIAQgACADQQxqQQEQvAIgBCkDACAEKQMIEE0hBiAEQRBqJABBsIYUKAIAIgBFDQEgAygCDCABRw0CIAYhByAAQcQARw0DDAILIAJBBDYCAAwCC0GwhhQgBTYCACADKAIMIAFGDQELIAJBBDYCACAHIQYLIANBEGokACAGC6MFAgN/AX4gAygCHCEAIwBBkAJrIgMkACADIAI2AogCIAMgATYCjAIgA0HQAWogACADQeABaiADQd8BaiADQd4BahDgAiADQcQBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2AsABIAMgA0EgajYCHCADQQA2AhggA0EBOgAXIANBxQA6ABYgAy0A3gHAIQEgAy0A3wHAIQcDQAJAIANBjAJqIANBiAJqEPwBDQAgAygCwAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCZAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgLAAQsCfyADKAKMAiIAKAIMIgggACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgCC0AAAvAIANBF2ogA0EWaiAGIANBwAFqIAcgASADQdABaiADQSBqIANBHGogA0EYaiADQeABahDhAg0AIANBjAJqEP4BGgwBCwsgAygCHCEAAkACQCADKALUASADLQDbASIBQf8AcSABQYABcUEHdhtFDQAgAy0AF0UNACAAIANBIGprQZ8BSg0AIAMgAEEEaiIBNgIcIAAgAygCGDYCAAwBCyAAIQELIAMgBiADKALAASAEEOYCIAMpAwAhCSAFIAMpAwg3AwggBSAJNwMAIANB0AFqIANBIGogASAEENECIANBjAJqIANBiAJqEPwBBEAgBCAEKAIAQQJyNgIACyADKAKMAiEAIAIQyQIaIANB0AFqEMkCGiADQZACaiQAIAALsgICBH4FfyMAQSBrIggkAAJAAkACQCABIAJHBEBBsIYUKAIAIQxBsIYUQQA2AgAjAEEQayIJJAAQ0wIaIwBBEGsiCiQAIwBBEGsiCyQAIAsgASAIQRxqQQIQvAIgCykDACEEIAogCykDCDcDCCAKIAQ3AwAgC0EQaiQAIAopAwAhBCAJIAopAwg3AwggCSAENwMAIApBEGokACAJKQMAIQQgCCAJKQMINwMQIAggBDcDCCAJQRBqJAAgCCkDECEEIAgpAwghBUGwhhQoAgAiAUUNASAIKAIcIAJHDQIgBSEGIAQhByABQcQARw0DDAILIANBBDYCAAwCC0GwhhQgDDYCACAIKAIcIAJGDQELIANBBDYCACAGIQUgByEECyAAIAU3AwAgACAENwMIIAhBIGokAAuMBQECfyMAQYACayIAJAAgACACNgL4ASAAIAE2AvwBIABBxAFqIgdCADcCACAHQQA2AgggAEEQaiIGIAMoAhwiATYCACABIAEoAgRBAWo2AgQgACgCEBD7ASIBQaDAE0G6wBMgAEHQAWogASgCACgCIBEGABogACgCECIBIAEoAgRBAWsiAjYCBCACQX9GBEAgASABKAIAKAIIEQEACyAAQbgBaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgACACKAIAIAIgAi0AC0GAAXFBB3YbIgM2ArQBIAAgBjYCDCAAQQA2AgggAyEBA0ACQCACIABB/AFqIABB+AFqEPwBBH8gAwUgAyABIAIoAgQgAi0ACyIGQf8AcSAGQYABcUEHdhsiBmpGBEAgAiAGQQF0EJkCIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgACACKAIAIAIgAi0AC0GAAXFBB3YbIgEgBmo2ArQBCwJ/IAAoAvwBIgMoAgwiBiADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAGLQAAC8BBECABIABBtAFqIABBCGpBACAHKAIEIActAAsgAEEQaiAAQQxqIABB0AFqEM8CRQ0BIAAoArQBCyABaxCZAiACKAIAIAIgAi0AC0GAAXFBB3YbIQEQ0wIhAyAAIAU2AgAgASADIAAQ6AJBAUcEQCAEQQQ2AgALIABB/AFqIABB+AFqEPwBBEAgBCAEKAIAQQJyNgIACyAAKAL8ASEBIAIQyQIaIAcQyQIaIABBgAJqJAAgAQ8LIABB/AFqEP4BGiAAKAK0ASEDDAALAAtiAQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIAEQ6QIhASAAQco9IAMoAgwQvQEhAiABKAIAIgAEQEGMoBQoAgAaIAAEQEGMoBRBnKkUIAAgAEF/Rhs2AgALCyADQRBqJAAgAgs4AQF/QYygFCgCACECIAEEQEGMoBRBnKkUIAEgAUF/Rhs2AgALIABBfyACIAJBnKkURhs2AgAgAAv0AgECfyMAQSBrIgYkACAGIAE2AhwCQCADLQAEQQFxRQRAIAZBfzYCACAAIAEgAiADIAQgBiAAKAIAKAIQEQUAIQECQAJAAkAgBigCAA4CAAECCyAFQQA6AAAMAwsgBUEBOgAADAILIAVBAToAACAEQQQ2AgAMAQsgBiADKAIcIgA2AgAgACAAKAIEQQFqNgIEIAYoAgAQkAIhByAGKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAYgAygCHCIANgIAIAAgACgCBEEBajYCBCAGKAIAEOsCIQAgBigCACIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAGIAAgACgCACgCGBECACAGQQxyIAAgACgCACgCHBECACAFIAZBHGogAiAGIAZBGGoiAyAHIARBARDsAiAGRjoAACAGKAIcIQEDQCADQQxrEO0CIgMgBkcNAAsLIAZBIGokACABCwoAIABBxKsUEHIL8QUBC38jAEGAAWsiCiQAIAogATYCfCAKQdQANgIQIApBCGoiAUEANgIAIAEgCkEQaiIJKAIANgIEIAEhDQJAAkAgAyACa0EMbSILQeUATwRAIAsQMyIJRQ0BIA0oAgAhASANIAk2AgAgAQRAIAEgDSgCBBEBAAsLIAkhByACIQEDQCABIANGBEADQCAAIApB/ABqEJECQQEgCxsEQCAAIApB/ABqEJECBEAgBSAFKAIAQQJyNgIACwwFCwJ/IAAoAgAiBygCDCIBIAcoAhBGBEAgByAHKAIAKAIkEQAADAELIAEoAgALIQ4gBkUEQCAEIA4gBCgCACgCHBEDACEOCyAQQQFqIQhBACERIAkhByACIQEDQCABIANGBEAgCCEQIBFFDQIgABCTAhogCSEHIAIhASALIAxqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgECABKAIEIAEtAAsiCEH/AHEgCEGAAXFBB3YbRg0AIAdBADoAACAMQQFrIQwLIAdBAWohByABQQxqIQEMAQsACwAFAkAgBy0AAEEBRw0AIBBBAnQgASgCACABIAEtAAtBgAFxQQd2G2ooAgAhDwJAIAYEfyAPBSAEIA8gBCgCACgCHBEDAAsgDkYEQEEBIREgCCABKAIEIAEtAAsiD0H/AHEgD0GAAXFBB3YbRw0CIAdBAjoAACAMQQFqIQwMAQsgB0EAOgAACyALQQFrIQsLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgASgCBCABLQALIghB/wBxIAhBgAFxQQd2G0UiCBs6AAAgCCAMaiEMIAsgCGshCyAHQQFqIQcgAUEMaiEBDAELAAsACxDeAQALAkACQANAIAIgA0YNASAJLQAAQQJHBEAgCUEBaiEJIAJBDGohAgwBCwsgAiEDDAELIAUgBSgCAEEEcjYCAAsgDSIAKAIAIQEgAEEANgIAIAEEQCABIAAoAgQRAQALIApBgAFqJAAgAwsgACAALQALQYABcUEHdgRAIAAoAggaIAAoAgAQNAsgAAvqBAEDfyMAQdACayIGJAAgBiACNgLIAiAGIAE2AswCIAMoAgQQzQIhByADKAIcIAZB0AFqEO8CIQIgBkHEAWogAygCHCAGQcQCahDwAiAGQbgBaiIAQgA3AgAgAEEANgIIIAAgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBCgsQmQIgBiAAKAIAIAAgAC0AC0GAAXFBB3YbIgM2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAIAZBzAJqIAZByAJqEJECDQAgBigCtAEgAyAAKAIEIAAtAAsiAUH/AHEgAUGAAXFBB3YbIgFqRgRAIAAgAUEBdBCZAiAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEJkCIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDIAFqNgK0AQsCfyAGKALMAiIBKAIMIgggASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgCCgCAAsgByADIAZBtAFqIAZBCGogBigCxAIgBigCyAEgBi0AzwEgBkEQaiAGQQxqIAIQ8QINACAGQcwCahCTAhoMAQsLIAYoAgwhAgJAAkAgBigCyAEgBi0AzwEiAUH/AHEgAUGAAXFBB3YbRQ0AIAIgBkEQamtBnwFKDQAgBiACQQRqIgE2AgwgAiAGKAIINgIADAELIAIhAQsgBSADIAYoArQBIAQgBxDQAjYCACAGQcQBaiAGQRBqIAEgBBDRAiAGQcwCaiAGQcgCahCRAgRAIAQgBCgCAEECcjYCAAsgBigCzAIhASAAEMkCGiAGQcQBahDJAhogBkHQAmokACABC3MBAn8jAEEQayICJAAgAiAANgIMIAAgACgCBEEBajYCBCACKAIMEJACIgBBoMATQbrAEyABIAAoAgAoAjARBgAaIAIoAgwiACAAKAIEQQFrIgM2AgQgA0F/RgRAIAAgACgCACgCCBEBAAsgAkEQaiQAIAELegEBfyMAQRBrIgMkACADIAE2AgwgASABKAIEQQFqNgIEIAIgAygCDBDrAiIBIAEoAgAoAhARAAA2AgAgACABIAEoAgAoAhQRAgAgAygCDCIAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyADQRBqJAAL3AIBAn8CQAJAIAMoAgAiCyACRw0AQSshDCAAIAooAmBHBEBBLSEMIAooAmQgAEcNAQsgAyACQQFqNgIAIAIgDDoAAAwBCwJAAkAgBiAHQf8AcSAHQYABcUEHdhtFDQAgACAFRw0AQQAhByAJKAIAIgAgCGtBnwFKDQEgBCgCACEBIAkgAEEEajYCACAAIAE2AgAMAgtBfyEHIAogCkHoAGogABDyAiAKayIFQdwASg0AIAVBAnUhAAJAAkACQCABQQhrDgMAAgABCyAAIAFIDQEMAgsgAUEQRw0AIAVB2ABIDQAgAiALRg0BIAsgAmtBAkoNASALQQFrLQAAQTBHDQEgBEEANgIAIAMgC0EBajYCACALIABBoMATai0AADoAAEEADwsgAyALQQFqNgIAIAsgAEGgwBNqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQcLIAcPCyAEQQA2AgBBAAsqAANAAkAgACABRwR/IAAoAgAgAkcNASAABSABCw8LIABBBGohAAwACwAL6gQBA38jAEHQAmsiBiQAIAYgAjYCyAIgBiABNgLMAiADKAIEEM0CIQcgAygCHCAGQdABahDvAiECIAZBxAFqIAMoAhwgBkHEAmoQ8AIgBkG4AWoiAEIANwIAIABBADYCCCAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEJkCIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDNgK0ASAGIAZBEGo2AgwgBkEANgIIA0ACQCAGQcwCaiAGQcgCahCRAg0AIAYoArQBIAMgACgCBCAALQALIgFB/wBxIAFBgAFxQQd2GyIBakYEQCAAIAFBAXQQmQIgACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCZAiAGIAAoAgAgACAALQALQYABcUEHdhsiAyABajYCtAELAn8gBigCzAIiASgCDCIIIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAgoAgALIAcgAyAGQbQBaiAGQQhqIAYoAsQCIAYoAsgBIAYtAM8BIAZBEGogBkEMaiACEPECDQAgBkHMAmoQkwIaDAELCyAGKAIMIQICQAJAIAYoAsgBIAYtAM8BIgFB/wBxIAFBgAFxQQd2G0UNACACIAZBEGprQZ8BSg0AIAYgAkEEaiIBNgIMIAIgBigCCDYCAAwBCyACIQELIAUgAyAGKAK0ASAEIAcQ1wI3AwAgBkHEAWogBkEQaiABIAQQ0QIgBkHMAmogBkHIAmoQkQIEQCAEIAQoAgBBAnI2AgALIAYoAswCIQEgABDJAhogBkHEAWoQyQIaIAZB0AJqJAAgAQvqBAEDfyMAQdACayIGJAAgBiACNgLIAiAGIAE2AswCIAMoAgQQzQIhByADKAIcIAZB0AFqEO8CIQIgBkHEAWogAygCHCAGQcQCahDwAiAGQbgBaiIAQgA3AgAgAEEANgIIIAAgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBCgsQmQIgBiAAKAIAIAAgAC0AC0GAAXFBB3YbIgM2ArQBIAYgBkEQajYCDCAGQQA2AggDQAJAIAZBzAJqIAZByAJqEJECDQAgBigCtAEgAyAAKAIEIAAtAAsiAUH/AHEgAUGAAXFBB3YbIgFqRgRAIAAgAUEBdBCZAiAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEJkCIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDIAFqNgK0AQsCfyAGKALMAiIBKAIMIgggASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgCCgCAAsgByADIAZBtAFqIAZBCGogBigCxAIgBigCyAEgBi0AzwEgBkEQaiAGQQxqIAIQ8QINACAGQcwCahCTAhoMAQsLIAYoAgwhAgJAAkAgBigCyAEgBi0AzwEiAUH/AHEgAUGAAXFBB3YbRQ0AIAIgBkEQamtBnwFKDQAgBiACQQRqIgE2AgwgAiAGKAIINgIADAELIAIhAQsgBSADIAYoArQBIAQgBxDZAjsBACAGQcQBaiAGQRBqIAEgBBDRAiAGQcwCaiAGQcgCahCRAgRAIAQgBCgCAEECcjYCAAsgBigCzAIhASAAEMkCGiAGQcQBahDJAhogBkHQAmokACABC+oEAQN/IwBB0AJrIgYkACAGIAI2AsgCIAYgATYCzAIgAygCBBDNAiEHIAMoAhwgBkHQAWoQ7wIhAiAGQcQBaiADKAIcIAZBxAJqEPACIAZBuAFqIgBCADcCACAAQQA2AgggACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCZAiAGIAAoAgAgACAALQALQYABcUEHdhsiAzYCtAEgBiAGQRBqNgIMIAZBADYCCANAAkAgBkHMAmogBkHIAmoQkQINACAGKAK0ASADIAAoAgQgAC0ACyIBQf8AcSABQYABcUEHdhsiAWpGBEAgACABQQF0EJkCIAAgAC0AC0GAAXFBB3YEfyAAKAIIQf////8HcUEBawVBCgsQmQIgBiAAKAIAIAAgAC0AC0GAAXFBB3YbIgMgAWo2ArQBCwJ/IAYoAswCIgEoAgwiCCABKAIQRgRAIAEgASgCACgCJBEAAAwBCyAIKAIACyAHIAMgBkG0AWogBkEIaiAGKALEAiAGKALIASAGLQDPASAGQRBqIAZBDGogAhDxAg0AIAZBzAJqEJMCGgwBCwsgBigCDCECAkACQCAGKALIASAGLQDPASIBQf8AcSABQYABcUEHdhtFDQAgAiAGQRBqa0GfAUoNACAGIAJBBGoiATYCDCACIAYoAgg2AgAMAQsgAiEBCyAFIAMgBigCtAEgBCAHENwCNgIAIAZBxAFqIAZBEGogASAEENECIAZBzAJqIAZByAJqEJECBEAgBCAEKAIAQQJyNgIACyAGKALMAiEBIAAQyQIaIAZBxAFqEMkCGiAGQdACaiQAIAEL6gQBA38jAEHQAmsiBiQAIAYgAjYCyAIgBiABNgLMAiADKAIEEM0CIQcgAygCHCAGQdABahDvAiECIAZBxAFqIAMoAhwgBkHEAmoQ8AIgBkG4AWoiAEIANwIAIABBADYCCCAAIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQoLEJkCIAYgACgCACAAIAAtAAtBgAFxQQd2GyIDNgK0ASAGIAZBEGo2AgwgBkEANgIIA0ACQCAGQcwCaiAGQcgCahCRAg0AIAYoArQBIAMgACgCBCAALQALIgFB/wBxIAFBgAFxQQd2GyIBakYEQCAAIAFBAXQQmQIgACAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCxCZAiAGIAAoAgAgACAALQALQYABcUEHdhsiAyABajYCtAELAn8gBigCzAIiASgCDCIIIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAgoAgALIAcgAyAGQbQBaiAGQQhqIAYoAsQCIAYoAsgBIAYtAM8BIAZBEGogBkEMaiACEPECDQAgBkHMAmoQkwIaDAELCyAGKAIMIQICQAJAIAYoAsgBIAYtAM8BIgFB/wBxIAFBgAFxQQd2G0UNACACIAZBEGprQZ8BSg0AIAYgAkEEaiIBNgIMIAIgBigCCDYCAAwBCyACIQELIAUgAyAGKAK0ASAEIAcQ3gI3AwAgBkHEAWogBkEQaiABIAQQ0QIgBkHMAmogBkHIAmoQkQIEQCAEIAQoAgBBAnI2AgALIAYoAswCIQEgABDJAhogBkHEAWoQyQIaIAZB0AJqJAAgAQuJBQEDfyADKAIcIQAjAEHwAmsiAyQAIAMgAjYC6AIgAyABNgLsAiADQcwBaiAAIANB4AFqIANB3AFqIANB2AFqEPgCIANBwAFqIgJCADcCACACQQA2AgggAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCZAiADIAIoAgAgAiACLQALQYABcUEHdhsiBjYCvAEgAyADQRBqNgIMIANBADYCCCADQQE6AAcgA0HFADoABiADKALYASEBIAMoAtwBIQcDQAJAIANB7AJqIANB6AJqEJECDQAgAygCvAEgBiACKAIEIAItAAsiAEH/AHEgAEGAAXFBB3YbIgBqRgRAIAIgAEEBdBCZAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGIABqNgK8AQsCfyADKALsAiIAKAIMIgggACgCEEYEQCAAIAAoAgAoAiQRAAAMAQsgCCgCAAsgA0EHaiADQQZqIAYgA0G8AWogByABIANBzAFqIANBEGogA0EMaiADQQhqIANB4AFqEPkCDQAgA0HsAmoQkwIaDAELCyADKAIMIQACQAJAIAMoAtABIAMtANcBIgFB/wBxIAFBgAFxQQd2G0UNACADLQAHRQ0AIAAgA0EQamtBnwFKDQAgAyAAQQRqIgE2AgwgACADKAIINgIADAELIAAhAQsgBSAGIAMoArwBIAQQ4gI4AgAgA0HMAWogA0EQaiABIAQQ0QIgA0HsAmogA0HoAmoQkQIEQCAEIAQoAgBBAnI2AgALIAMoAuwCIQAgAhDJAhogA0HMAWoQyQIaIANB8AJqJAAgAAusAQEBfyMAQRBrIgUkACAFIAE2AgwgASABKAIEQQFqNgIEIAUoAgwQkAIiAUGgwBNBwMATIAIgASgCACgCMBEGABogAyAFKAIMEOsCIgEgASgCACgCDBEAADYCACAEIAEgASgCACgCEBEAADYCACAAIAEgASgCACgCFBECACAFKAIMIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAVBEGokAAvGBAACQAJAIAAgBUYEQCABLQAARQ0CQQAhBSABQQA6AAAgBCAEKAIAIgBBAWo2AgAgAEEuOgAAIAcoAgQgBy0ACyIAQf8AcSAAQYABcUEHdhtFDQEgCSgCACIAIAhrQZ8BSg0BIAooAgAhASAJIABBBGo2AgAgACABNgIAQQAPCwJAIAAgBkcNACAHKAIEIActAAsiBUH/AHEgBUGAAXFBB3YbRQ0AIAEtAABFDQJBACEFIAkoAgAiACAIa0GfAUoNASAKKAIAIQEgCSAAQQRqNgIAIAAgATYCACAKQQA2AgBBAA8LQX8hBSALIAtBgAFqIAAQ8gIgC2siC0H8AEoNACALQQJ1QaDAE2osAAAhBgJAAkAgC0F7cSIAQdgARwRAIABB4ABHDQEgAyAEKAIAIgBHBEAgAEEBaywAACIBQd8AcSABIAFB4QBrQRpJGyACLAAAIgFB3wBxIAEgAUHhAGtBGkkbRw0ECyAEIABBAWo2AgAgACAGOgAAQQAPCyACQdAAOgAADAELIAZB3wBxIAYgBkHhAGtBGkkbIgAgAiwAAEcNACACIABBIHIgACAAQcEAa0EaSRs6AAAgAS0AAEUNACABQQA6AAAgBygCBCAHLQALIgBB/wBxIABBgAFxQQd2G0UNACAJKAIAIgAgCGtBnwFKDQAgCigCACEBIAkgAEEEajYCACAAIAE2AgALIAQgBCgCACIAQQFqNgIAIAAgBjoAAEEAIQUgC0HUAEoNACAKIAooAgBBAWo2AgALIAUPC0F/C4kFAQN/IAMoAhwhACMAQfACayIDJAAgAyACNgLoAiADIAE2AuwCIANBzAFqIAAgA0HgAWogA0HcAWogA0HYAWoQ+AIgA0HAAWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAMgAigCACACIAItAAtBgAFxQQd2GyIGNgK8ASADIANBEGo2AgwgA0EANgIIIANBAToAByADQcUAOgAGIAMoAtgBIQEgAygC3AEhBwNAAkAgA0HsAmogA0HoAmoQkQINACADKAK8ASAGIAIoAgQgAi0ACyIAQf8AcSAAQYABcUEHdhsiAGpGBEAgAiAAQQF0EJkCIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgYgAGo2ArwBCwJ/IAMoAuwCIgAoAgwiCCAAKAIQRgRAIAAgACgCACgCJBEAAAwBCyAIKAIACyADQQdqIANBBmogBiADQbwBaiAHIAEgA0HMAWogA0EQaiADQQxqIANBCGogA0HgAWoQ+QINACADQewCahCTAhoMAQsLIAMoAgwhAAJAAkAgAygC0AEgAy0A1wEiAUH/AHEgAUGAAXFBB3YbRQ0AIAMtAAdFDQAgACADQRBqa0GfAUoNACADIABBBGoiATYCDCAAIAMoAgg2AgAMAQsgACEBCyAFIAYgAygCvAEgBBDkAjkDACADQcwBaiADQRBqIAEgBBDRAiADQewCaiADQegCahCRAgRAIAQgBCgCAEECcjYCAAsgAygC7AIhACACEMkCGiADQcwBahDJAhogA0HwAmokACAAC6AFAgN/AX4gAygCHCEAIwBBgANrIgMkACADIAI2AvgCIAMgATYC/AIgA0HcAWogACADQfABaiADQewBaiADQegBahD4AiADQdABaiICQgA3AgAgAkEANgIIIAIgAi0AC0GAAXFBB3YEfyACKAIIQf////8HcUEBawVBCgsQmQIgAyACKAIAIAIgAi0AC0GAAXFBB3YbIgY2AswBIAMgA0EgajYCHCADQQA2AhggA0EBOgAXIANBxQA6ABYgAygC6AEhASADKALsASEHA0ACQCADQfwCaiADQfgCahCRAg0AIAMoAswBIAYgAigCBCACLQALIgBB/wBxIABBgAFxQQd2GyIAakYEQCACIABBAXQQmQIgAiACLQALQYABcUEHdgR/IAIoAghB/////wdxQQFrBUEKCxCZAiADIAIoAgAgAiACLQALQYABcUEHdhsiBiAAajYCzAELAn8gAygC/AIiACgCDCIIIAAoAhBGBEAgACAAKAIAKAIkEQAADAELIAgoAgALIANBF2ogA0EWaiAGIANBzAFqIAcgASADQdwBaiADQSBqIANBHGogA0EYaiADQfABahD5Ag0AIANB/AJqEJMCGgwBCwsgAygCHCEAAkACQCADKALgASADLQDnASIBQf8AcSABQYABcUEHdhtFDQAgAy0AF0UNACAAIANBIGprQZ8BSg0AIAMgAEEEaiIBNgIcIAAgAygCGDYCAAwBCyAAIQELIAMgBiADKALMASAEEOYCIAMpAwAhCSAFIAMpAwg3AwggBSAJNwMAIANB3AFqIANBIGogASAEENECIANB/AJqIANB+AJqEJECBEAgBCAEKAIAQQJyNgIACyADKAL8AiEAIAIQyQIaIANB3AFqEMkCGiADQYADaiQAIAALiwUBAn8jAEHAAmsiACQAIAAgAjYCuAIgACABNgK8AiAAQcQBaiIHQgA3AgAgB0EANgIIIABBEGoiBiADKAIcIgE2AgAgASABKAIEQQFqNgIEIAAoAhAQkAIiAUGgwBNBusATIABB0AFqIAEoAgAoAjARBgAaIAAoAhAiASABKAIEQQFrIgI2AgQgAkF/RgRAIAEgASgCACgCCBEBAAsgAEG4AWoiAkIANwIAIAJBADYCCCACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAAgAigCACACIAItAAtBgAFxQQd2GyIDNgK0ASAAIAY2AgwgAEEANgIIIAMhAQNAAkAgAiAAQbwCaiAAQbgCahCRAgR/IAMFIAMgASACKAIEIAItAAsiBkH/AHEgBkGAAXFBB3YbIgZqRgRAIAIgBkEBdBCZAiACIAItAAtBgAFxQQd2BH8gAigCCEH/////B3FBAWsFQQoLEJkCIAAgAigCACACIAItAAtBgAFxQQd2GyIBIAZqNgK0AQsCfyAAKAK8AiIDKAIMIgYgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBigCAAtBECABIABBtAFqIABBCGpBACAHKAIEIActAAsgAEEQaiAAQQxqIABB0AFqEPECRQ0BIAAoArQBCyABaxCZAiACKAIAIAIgAi0AC0GAAXFBB3YbIQEQ0wIhAyAAIAU2AgAgASADIAAQ6AJBAUcEQCAEQQQ2AgALIABBvAJqIABBuAJqEJECBEAgBCAEKAIAQQJyNgIACyAAKAK8AiEBIAIQyQIaIAcQyQIaIABBwAJqJAAgAQ8LIABBvAJqEJMCGiAAKAK0ASEDDAALAAuUAgEBfyMAQSBrIgUkACAFIAE2AhwCQCACLQAEQQFxRQRAIAAgASACIAMgBCAAKAIAKAIYEQcAIQIMAQsgBSACKAIcIgA2AhAgACAAKAIEQQFqNgIEIAUoAhAQxwIhACAFKAIQIgEgASgCBEEBayICNgIEIAJBf0YEQCABIAEoAgAoAggRAQALAkAgBARAIAVBEGogACAAKAIAKAIYEQIADAELIAVBEGogACAAKAIAKAIcEQIACyAFIAVBEGoQ/gI2AgwDQCAFQRBqEP8CIQAgACAFKAIMIgFHBEAgBUEcaiABLAAAEIYCGiAFIAUoAgxBAWo2AgwMAQUgBSgCHCECIAVBEGoQyQIaCwsLIAVBIGokACACCzoBAX8gACgCACAAIAAtAAtBgAFxQQd2GyEBIwBBEGsiACQAIAAgATYCDCAAKAIMIQEgAEEQaiQAIAELVAEBfyAAKAIAIAAgAC0ACyIBQYABcUEHdhsgACgCBCABIgBB/wBxIABBgAFxQQd2G2ohASMAQRBrIgAkACAAIAE2AgwgACgCDCEBIABBEGokACABC90BAQR/IwBBQGoiACQAIABCJTcDOCAAQThqIgVBAXJBwcATQQEgAigCBBCBAxDTAiEGIAAgBDYCACAAQStqIgQgBEENIAYgBSAAEIIDIARqIgcgAigCBBCDAyEIIABBBGoiBSACKAIcIgY2AgAgBiAGKAIEQQFqNgIEIAQgCCAHIABBEGoiBiAAQQxqIABBCGogBRCEAyAFKAIAIgQgBCgCBEEBayIFNgIEIAVBf0YEQCAEIAQoAgAoAggRAQALIAEgBiAAKAIMIAAoAgggAiADEHchASAAQUBrJAAgAQusAQEBfwJAIANBgBBxRQ0AIANBygBxIgRBCEYNACAEQcAARg0AIAJFDQAgAEErOgAAIABBAWohAAsgA0GABHEEQCAAQSM6AAAgAEEBaiEACwNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn9B7wAgA0HKAHEiAUHAAEYNABpB2ABB+AAgA0GAgAFxGyABQQhGDQAaQeQAQfUAIAIbCzoAAAtjAQF/IwBBEGsiBSQAIAUgBDYCDCAFQQhqIAIQ6QIhAiAAIAEgAyAFKAIMENoBIQEgAigCACIABEBBjKAUKAIAGiAABEBBjKAUQZypFCAAIABBf0YbNgIACwsgBUEQaiQAIAELYQAgAkGwAXEiAkEgRgRAIAEPCwJAIAJBEEcNAAJAAkAgAC0AACICQStrDgMAAQABCyAAQQFqDwsgASAAa0ECSA0AIAJBMEcNACAALQABQSByQfgARw0AIABBAmohAAsgAAvuBAEIfyMAQRBrIgskACAGKAIAEPsBIQogC0EEaiAGKAIAEMcCIgYgBigCACgCFBECAAJAIAsoAgggCy0ADyIHQf8AcSAHQYABcUEHdhtFBEAgCiAAIAIgAyAKKAIAKAIgEQYAGiAFIAMgAiAAa2oiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAIAooAgAoAhwRAwAhByAFIAUoAgAiCEEBajYCACAIIAc6AAAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAgCigCACgCHBEDACEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAKIAcsAAEgCigCACgCHBEDACEIIAUgBSgCACIJQQFqNgIAIAkgCDoAACAHQQJqIQcLIAcgAhCFA0EAIQkgBiAGKAIAKAIQEQAAIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtqIAUoAgAQhQMgBSgCAAUCQCAIIAtBBGoiDCgCACAMIAwtAAtBgAFxQQd2G2otAABFDQAgCSAIIAtBBGoiDCgCACAMIAwtAAtBgAFxQQd2G2osAABHDQAgBSAFKAIAIglBAWo2AgAgCSANOgAAIAggCCALKAIIIAstAA8iCUH/AHEgCUGAAXFBB3YbQQFrSWohCEEAIQkLIAogBiwAACAKKAIAKAIcEQMAIQwgBSAFKAIAIg5BAWo2AgAgDiAMOgAAIAZBAWohBiAJQQFqIQkMAQsLIQYLIAQgBiADIAEgAGtqIAEgAkYbNgIAIAtBBGoQyQIaIAtBEGokAAs/AQF/AkAgACABRg0AA0AgACABQQFrIgFPDQEgAC0AACECIAAgAS0AADoAACABIAI6AAAgAEEBaiEADAALAAsL4AEBBX8jAEHwAGsiACQAIABCJTcDaCAAQegAaiIGQQFyQcU+QQEgAigCBBCBAxDTAiEHIAAgBDcDACAAQdAAaiIFIAVBGCAHIAYgABCCAyAFaiIIIAIoAgQQgwMhCSAAQRRqIgYgAigCHCIHNgIAIAcgBygCBEEBajYCBCAFIAkgCCAAQSBqIgcgAEEcaiAAQRhqIAYQhAMgBigCACIFIAUoAgRBAWsiBjYCBCAGQX9GBEAgBSAFKAIAKAIIEQEACyABIAcgACgCHCAAKAIYIAIgAxB3IQEgAEHwAGokACABC90BAQR/IwBBQGoiACQAIABCJTcDOCAAQThqIgVBAXJBwcATQQAgAigCBBCBAxDTAiEGIAAgBDYCACAAQStqIgQgBEENIAYgBSAAEIIDIARqIgcgAigCBBCDAyEIIABBBGoiBSACKAIcIgY2AgAgBiAGKAIEQQFqNgIEIAQgCCAHIABBEGoiBiAAQQxqIABBCGogBRCEAyAFKAIAIgQgBCgCBEEBayIFNgIEIAVBf0YEQCAEIAQoAgAoAggRAQALIAEgBiAAKAIMIAAoAgggAiADEHchASAAQUBrJAAgAQvgAQEFfyMAQfAAayIAJAAgAEIlNwNoIABB6ABqIgZBAXJBxT5BACACKAIEEIEDENMCIQcgACAENwMAIABB0ABqIgUgBUEYIAcgBiAAEIIDIAVqIgggAigCBBCDAyEJIABBFGoiBiACKAIcIgc2AgAgByAHKAIEQQFqNgIEIAUgCSAIIABBIGoiByAAQRxqIABBGGogBhCEAyAGKAIAIgUgBSgCBEEBayIGNgIEIAZBf0YEQCAFIAUoAgAoAggRAQALIAEgByAAKAIcIAAoAhggAiADEHchASAAQfAAaiQAIAELgAUBB38CfyABIQkjAEHQAWsiBSQAIAVCJTcDyAEgBUHIAWpBAXJB/O0SIAIoAgQQigMhByAFIAVBoAFqNgKcARDTAiEAAn8gBwRAIAIoAgghASAFIAQ5AyggBSABNgIgIAVBoAFqQR4gACAFQcgBaiAFQSBqEIIDDAELIAUgBDkDMCAFQaABakEeIAAgBUHIAWogBUEwahCCAwshBiAFQdQANgJQIAVBlAFqIghBADYCACAIIAUoAlA2AgQgBUGgAWoiASEAAkAgBkEeTgRAENMCIQACfyAHBEAgAigCCCEGIAUgBDkDCCAFIAY2AgAgBUGcAWogACAFQcgBaiAFEIsDDAELIAUgBDkDECAFQZwBaiAAIAVByAFqIAVBEGoQiwMLIgZBf0YNASAIKAIAIQcgCCAFKAKcASIANgIAIAcEQCAHIAgoAgQRAQALCyAAIAAgBmoiCiACKAIEEIMDIQsgBUHUADYCUCAFQQA2AkggBSAFKAJQNgJMAkAgBUGgAWogAEYEQCAFQdAAaiEGDAELIAZBAXQQMyIGRQ0BIAUoAkghASAFIAY2AkggAQRAIAEgBSgCTBEBAAsgACEBCyAFQTxqIgAgAigCHCIHNgIAIAcgBygCBEEBajYCBCABIAsgCiAGIAVBxABqIAVBQGsgABCMAyAAKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAkgBiAFKAJEIAUoAkAgAiADEHchASAFKAJIIQAgBUEANgJIIAAEQCAAIAUoAkwRAQALIAgoAgAhACAIQQA2AgAgAARAIAAgCCgCBBEBAAsgBUHQAWokACABDAELEN4BAAsL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLtgEBA38jAEEQayIEJAAgBCADNgIMIARBCGogARDpAiEGIAQoAgwhAyMAQRBrIgEkACABIAM2AgwgASADNgIIQX8hBQJAQQBBACACIAMQ2gEiA0EASA0AIAAgA0EBaiIDEDMiADYCACAARQ0AIAAgAyACIAEoAgwQ2gEhBQsgAUEQaiQAIAYoAgAiAARAQYygFCgCABogAARAQYygFEGcqRQgACAAQX9GGzYCAAsLIARBEGokACAFC/YGAQp/IwBBEGsiCiQAIAYoAgAQ+wEhCSAKQQRqIAYoAgAQxwIiDSIGIAYoAgAoAhQRAgAgBSADNgIAAkACQCAAIggtAAAiBkEraw4DAAEAAQsgCSAGwCAJKAIAKAIcEQMAIQYgBSAFKAIAIgdBAWo2AgAgByAGOgAAIABBAWohCAsCQAJAIAIgCCIGa0EBTA0AIAgtAABBMEcNACAILQABQSByQfgARw0AIAlBMCAJKAIAKAIcEQMAIQYgBSAFKAIAIgdBAWo2AgAgByAGOgAAIAkgCCwAASAJKAIAKAIcEQMAIQYgBSAFKAIAIgdBAWo2AgAgByAGOgAAIAhBAmoiCCEGA0AgAiAGTQ0CIAYsAAAhBxDTAhogB0Ewa0EKSSAHQSByQeEAa0EGSXJFDQIgBkEBaiEGDAALAAsDQCACIAZNDQEgBiwAACEHENMCGiAHQTBrQQpPDQEgBkEBaiEGDAALAAsCQCAKKAIIIAotAA8iB0H/AHEgB0GAAXFBB3YbRQRAIAkgCCAGIAUoAgAgCSgCACgCIBEGABogBSAFKAIAIAYgCGtqNgIADAELIAggBhCFAyANIA0oAgAoAhARAAAhDyAIIQcDQCAGIAdNBEAgAyAIIABraiAFKAIAEIUDBQJAIA4gCkEEaiILKAIAIAsgCy0AC0GAAXFBB3YbaiwAAEEATA0AIAwgDiAKQQRqIgsoAgAgCyALLQALQYABcUEHdhtqLAAARw0AIAUgBSgCACIMQQFqNgIAIAwgDzoAACAOIA4gCigCCCAKLQAPIgxB/wBxIAxBgAFxQQd2G0EBa0lqIQ5BACEMCyAJIAcsAAAgCSgCACgCHBEDACELIAUgBSgCACIQQQFqNgIAIBAgCzoAACAHQQFqIQcgDEEBaiEMDAELCwsDQAJAAkAgAiAGTQRAIAYhBwwBCyAGQQFqIQcgBi0AACIGQS5HDQEgDSANKAIAKAIMEQAAIQYgBSAFKAIAIghBAWo2AgAgCCAGOgAACyAJIAcgAiAFKAIAIAkoAgAoAiARBgAaIAUgBSgCACACIAdraiIFNgIAIAQgBSADIAEgAGtqIAEgAkYbNgIAIApBBGoQyQIaIApBEGokAA8LIAkgBsAgCSgCACgCHBEDACEGIAUgBSgCACIIQQFqNgIAIAggBjoAACAHIQYMAAsAC6YFAQd/An8gASEKIwBBgAJrIgYkACAGQiU3A/gBIAZB+AFqQQFyQZfDACACKAIEEIoDIQggBiAGQdABajYCzAEQ0wIhAAJ/IAgEQCACKAIIIQEgBkFAayAFNwMAIAYgBDcDOCAGIAE2AjAgBkHQAWpBHiAAIAZB+AFqIAZBMGoQggMMAQsgBiAENwNQIAYgBTcDWCAGQdABakEeIAAgBkH4AWogBkHQAGoQggMLIQcgBkHUADYCgAEgBkHEAWoiCUEANgIAIAkgBigCgAE2AgQgBkHQAWoiASEAAkAgB0EeTgRAENMCIQACfyAIBEAgAigCCCEHIAYgBTcDECAGIAQ3AwggBiAHNgIAIAZBzAFqIAAgBkH4AWogBhCLAwwBCyAGIAQ3AyAgBiAFNwMoIAZBzAFqIAAgBkH4AWogBkEgahCLAwsiB0F/Rg0BIAkoAgAhCCAJIAYoAswBIgA2AgAgCARAIAggCSgCBBEBAAsLIAAgACAHaiILIAIoAgQQgwMhDCAGQdQANgKAASAGQQA2AnggBiAGKAKAATYCfAJAIAZB0AFqIABGBEAgBkGAAWohBwwBCyAHQQF0EDMiB0UNASAGKAJ4IQEgBiAHNgJ4IAEEQCABIAYoAnwRAQALIAAhAQsgBkHsAGoiACACKAIcIgg2AgAgCCAIKAIEQQFqNgIEIAEgDCALIAcgBkH0AGogBkHwAGogABCMAyAAKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAogByAGKAJ0IAYoAnAgAiADEHchASAGKAJ4IQAgBkEANgJ4IAAEQCAAIAYoAnwRAQALIAkoAgAhACAJQQA2AgAgAARAIAAgCSgCBBEBAAsgBkGAAmokACABDAELEN4BAAsL1QEBB38jAEHgAGsiACQAENMCIQUgACAENgIAIABBQGsiBiAGIAZBFCAFQco9IAAQggMiCmoiByACKAIEEIMDIQggAEEQaiIEIAIoAhwiBTYCACAFIAUoAgRBAWo2AgQgACgCEBD7ASEJIAQoAgAiBSAFKAIEQQFrIgs2AgQgC0F/RgRAIAUgBSgCACgCCBEBAAsgCSAGIAcgBCAJKAIAKAIgEQYAGiABIAQgBCAKaiIBIAggAGsgAGpBMGsgByAIRhsgASACIAMQdyEBIABB4ABqJAAgAQuTAgEBfyMAQSBrIgUkACAFIAE2AhwCQCACLQAEQQFxRQRAIAAgASACIAMgBCAAKAIAKAIYEQcAIQIMAQsgBSACKAIcIgA2AhAgACAAKAIEQQFqNgIEIAUoAhAQ6wIhACAFKAIQIgEgASgCBEEBayICNgIEIAJBf0YEQCABIAEoAgAoAggRAQALAkAgBARAIAVBEGogACAAKAIAKAIYEQIADAELIAVBEGogACAAKAIAKAIcEQIACyAFIAVBEGoQ/gI2AgwDQCAFQRBqEJADIQAgACAFKAIMIgFHBEAgBUEcaiABKAIAEJUCIAUgBSgCDEEEajYCDAwBBSAFKAIcIQIgBUEQahDtAhoLCwsgBUEgaiQAIAILVwEBfyAAKAIAIAAgAC0ACyIBQYABcUEHdhsgACgCBCABIgBB/wBxIABBgAFxQQd2G0ECdGohASMAQRBrIgAkACAAIAE2AgwgACgCDCEBIABBEGokACABC+MBAQR/IwBBkAFrIgAkACAAQiU3A4gBIABBiAFqIgVBAXJBwcATQQEgAigCBBCBAxDTAiEGIAAgBDYCACAAQfsAaiIEIARBDSAGIAUgABCCAyAEaiIHIAIoAgQQgwMhCCAAQQRqIgUgAigCHCIGNgIAIAYgBigCBEEBajYCBCAEIAggByAAQRBqIgYgAEEMaiAAQQhqIAUQkgMgBSgCACIEIAQoAgRBAWsiBTYCBCAFQX9GBEAgBCAEKAIAKAIIEQEACyABIAYgACgCDCAAKAIIIAIgAxCTAyEBIABBkAFqJAAgAQv3BAEIfyMAQRBrIgskACAGKAIAEJACIQogC0EEaiAGKAIAEOsCIgYgBigCACgCFBECAAJAIAsoAgggCy0ADyIHQf8AcSAHQYABcUEHdhtFBEAgCiAAIAIgAyAKKAIAKAIwEQYAGiAFIAMgAiAAa0ECdGoiBjYCAAwBCyAFIAM2AgACQAJAIAAiBy0AACIIQStrDgMAAQABCyAKIAjAIAooAgAoAiwRAwAhByAFIAUoAgAiCEEEajYCACAIIAc2AgAgAEEBaiEHCwJAIAIgB2tBAkgNACAHLQAAQTBHDQAgBy0AAUEgckH4AEcNACAKQTAgCigCACgCLBEDACEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAKIAcsAAEgCigCACgCLBEDACEIIAUgBSgCACIJQQRqNgIAIAkgCDYCACAHQQJqIQcLIAcgAhCFA0EAIQkgBiAGKAIAKAIQEQAAIQ1BACEIIAchBgN/IAIgBk0EfyADIAcgAGtBAnRqIAUoAgAQ1QIgBSgCAAUCQCAIIAtBBGoiDCgCACAMIAwtAAtBgAFxQQd2G2otAABFDQAgCSAIIAtBBGoiDCgCACAMIAwtAAtBgAFxQQd2G2osAABHDQAgBSAFKAIAIglBBGo2AgAgCSANNgIAIAggCCALKAIIIAstAA8iCUH/AHEgCUGAAXFBB3YbQQFrSWohCEEAIQkLIAogBiwAACAKKAIAKAIsEQMAIQwgBSAFKAIAIg5BBGo2AgAgDiAMNgIAIAZBAWohBiAJQQFqIQkMAQsLIQYLIAQgBiADIAEgAGtBAnRqIAEgAkYbNgIAIAtBBGoQyQIaIAtBEGokAAvbAQEEfyMAQRBrIggkAAJAIABFDQAgBCgCDCEGIAIgAWsiB0EASgRAIAAgASAHQQJ2IgcgACgCACgCMBEEACAHRw0BCyAGIAMgAWtBAnUiAWtBACABIAZIGyIBQQBKBEAgACAIQQRqIAEgBRCUAyIFKAIAIAUgBS0AC0GAAXFBB3YbIAEgACgCACgCMBEEACEGIAUQ7QIaIAEgBkcNAQsgAyACayIBQQBKBEAgACACIAFBAnYiASAAKAIAKAIwEQQAIAFHDQELIARBADYCDCAAIQkLIAhBEGokACAJC+UBAQR/IAAhBCMAQRBrIgUkAAJAIAFB8P///wNJBEACQCABQQJJBEAgBCABOgALDAELIAVBCGogAUECTwR/IAFBBGpBfHEiAyADQQFrIgMgA0ECRhsFQQELQQFqEMMCIAQgBSgCCCIDNgIAIAQgBSgCDEGAgICAeHI2AgggBCABNgIEIAMhBAsjAEEQayIGJAAgBiACNgIMIAQhAiABIQMDQCADBEAgAiAGKAIMNgIAIANBAWshAyACQQRqIQIMAQsLIAZBEGokACABQQJ0IARqQQA2AgAgBUEQaiQADAELEFUACyAAC+IBAQV/IwBBgAJrIgAkACAAQiU3A/gBIABB+AFqIgZBAXJBxT5BASACKAIEEIEDENMCIQcgACAENwMAIABB4AFqIgUgBUEYIAcgBiAAEIIDIAVqIgggAigCBBCDAyEJIABBFGoiBiACKAIcIgc2AgAgByAHKAIEQQFqNgIEIAUgCSAIIABBIGoiByAAQRxqIABBGGogBhCSAyAGKAIAIgUgBSgCBEEBayIGNgIEIAZBf0YEQCAFIAUoAgAoAggRAQALIAEgByAAKAIcIAAoAhggAiADEJMDIQEgAEGAAmokACABC+MBAQR/IwBBkAFrIgAkACAAQiU3A4gBIABBiAFqIgVBAXJBwcATQQAgAigCBBCBAxDTAiEGIAAgBDYCACAAQfsAaiIEIARBDSAGIAUgABCCAyAEaiIHIAIoAgQQgwMhCCAAQQRqIgUgAigCHCIGNgIAIAYgBigCBEEBajYCBCAEIAggByAAQRBqIgYgAEEMaiAAQQhqIAUQkgMgBSgCACIEIAQoAgRBAWsiBTYCBCAFQX9GBEAgBCAEKAIAKAIIEQEACyABIAYgACgCDCAAKAIIIAIgAxCTAyEBIABBkAFqJAAgAQviAQEFfyMAQYACayIAJAAgAEIlNwP4ASAAQfgBaiIGQQFyQcU+QQAgAigCBBCBAxDTAiEHIAAgBDcDACAAQeABaiIFIAVBGCAHIAYgABCCAyAFaiIIIAIoAgQQgwMhCSAAQRRqIgYgAigCHCIHNgIAIAcgBygCBEEBajYCBCAFIAkgCCAAQSBqIgcgAEEcaiAAQRhqIAYQkgMgBigCACIFIAUoAgRBAWsiBjYCBCAGQX9GBEAgBSAFKAIAKAIIEQEACyABIAcgACgCHCAAKAIYIAIgAxCTAyEBIABBgAJqJAAgAQuBBQEHfwJ/IAEhCSMAQfACayIFJAAgBUIlNwPoAiAFQegCakEBckH87RIgAigCBBCKAyEHIAUgBUHAAmo2ArwCENMCIQACfyAHBEAgAigCCCEBIAUgBDkDKCAFIAE2AiAgBUHAAmpBHiAAIAVB6AJqIAVBIGoQggMMAQsgBSAEOQMwIAVBwAJqQR4gACAFQegCaiAFQTBqEIIDCyEGIAVB1AA2AlAgBUG0AmoiCEEANgIAIAggBSgCUDYCBCAFQcACaiIBIQACQCAGQR5OBEAQ0wIhAAJ/IAcEQCACKAIIIQYgBSAEOQMIIAUgBjYCACAFQbwCaiAAIAVB6AJqIAUQiwMMAQsgBSAEOQMQIAVBvAJqIAAgBUHoAmogBUEQahCLAwsiBkF/Rg0BIAgoAgAhByAIIAUoArwCIgA2AgAgBwRAIAcgCCgCBBEBAAsLIAAgACAGaiIKIAIoAgQQgwMhCyAFQdQANgJQIAVBADYCSCAFIAUoAlA2AkwCQCAFQcACaiAARgRAIAVB0ABqIQYMAQsgBkEDdBAzIgZFDQEgBSgCSCEBIAUgBjYCSCABBEAgASAFKAJMEQEACyAAIQELIAVBPGoiACACKAIcIgc2AgAgByAHKAIEQQFqNgIEIAEgCyAKIAYgBUHEAGogBUFAayAAEJkDIAAoAgAiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgCSAGIAUoAkQgBSgCQCACIAMQkwMhASAFKAJIIQAgBUEANgJIIAAEQCAAIAUoAkwRAQALIAgoAgAhACAIQQA2AgAgAARAIAAgCCgCBBEBAAsgBUHwAmokACABDAELEN4BAAsLhgcBCn8jAEEQayILJAAgBigCABCQAiEJIAtBBGogBigCABDrAiINIgYgBigCACgCFBECACAFIAM2AgACQAJAIAAiCC0AACIGQStrDgMAAQABCyAJIAbAIAkoAgAoAiwRAwAhBiAFIAUoAgAiB0EEajYCACAHIAY2AgAgAEEBaiEICwJAAkAgAiAIIgZrQQFMDQAgCC0AAEEwRw0AIAgtAAFBIHJB+ABHDQAgCUEwIAkoAgAoAiwRAwAhBiAFIAUoAgAiB0EEajYCACAHIAY2AgAgCSAILAABIAkoAgAoAiwRAwAhBiAFIAUoAgAiB0EEajYCACAHIAY2AgAgCEECaiIIIQYDQCACIAZNDQIgBiwAACEHENMCGiAHQTBrQQpJIAdBIHJB4QBrQQZJckUNAiAGQQFqIQYMAAsACwNAIAIgBk0NASAGLAAAIQcQ0wIaIAdBMGtBCk8NASAGQQFqIQYMAAsACwJAIAsoAgggCy0ADyIHQf8AcSAHQYABcUEHdhtFBEAgCSAIIAYgBSgCACAJKAIAKAIwEQYAGiAFIAUoAgAgBiAIa0ECdGo2AgAMAQsgCCAGEIUDIA0gDSgCACgCEBEAACEPIAghBwNAIAYgB00EQCADIAggAGtBAnRqIAUoAgAQ1QIFAkAgDiALQQRqIgwoAgAgDCAMLQALQYABcUEHdhtqLAAAQQBMDQAgCiAOIAtBBGoiDCgCACAMIAwtAAtBgAFxQQd2G2osAABHDQAgBSAFKAIAIgpBBGo2AgAgCiAPNgIAIA4gDiALKAIIIAstAA8iCkH/AHEgCkGAAXFBB3YbQQFrSWohDkEAIQoLIAkgBywAACAJKAIAKAIsEQMAIQwgBSAFKAIAIhBBBGo2AgAgECAMNgIAIAdBAWohByAKQQFqIQoMAQsLCwJAAkADQCACIAZNDQEgBkEBaiEHIAYtAAAiBkEuRwRAIAkgBsAgCSgCACgCLBEDACEGIAUgBSgCACIIQQRqNgIAIAggBjYCACAHIQYMAQsLIA0gDSgCACgCDBEAACEGIAUgBSgCACIIQQRqIgo2AgAgCCAGNgIADAELIAUoAgAhCiAGIQcLIAkgByACIAogCSgCACgCMBEGABogBSAFKAIAIAIgB2tBAnRqIgU2AgAgBCAFIAMgASAAa0ECdGogASACRhs2AgAgC0EEahDJAhogC0EQaiQAC6cFAQd/An8gASEKIwBBoANrIgYkACAGQiU3A5gDIAZBmANqQQFyQZfDACACKAIEEIoDIQggBiAGQfACajYC7AIQ0wIhAAJ/IAgEQCACKAIIIQEgBkFAayAFNwMAIAYgBDcDOCAGIAE2AjAgBkHwAmpBHiAAIAZBmANqIAZBMGoQggMMAQsgBiAENwNQIAYgBTcDWCAGQfACakEeIAAgBkGYA2ogBkHQAGoQggMLIQcgBkHUADYCgAEgBkHkAmoiCUEANgIAIAkgBigCgAE2AgQgBkHwAmoiASEAAkAgB0EeTgRAENMCIQACfyAIBEAgAigCCCEHIAYgBTcDECAGIAQ3AwggBiAHNgIAIAZB7AJqIAAgBkGYA2ogBhCLAwwBCyAGIAQ3AyAgBiAFNwMoIAZB7AJqIAAgBkGYA2ogBkEgahCLAwsiB0F/Rg0BIAkoAgAhCCAJIAYoAuwCIgA2AgAgCARAIAggCSgCBBEBAAsLIAAgACAHaiILIAIoAgQQgwMhDCAGQdQANgKAASAGQQA2AnggBiAGKAKAATYCfAJAIAZB8AJqIABGBEAgBkGAAWohBwwBCyAHQQN0EDMiB0UNASAGKAJ4IQEgBiAHNgJ4IAEEQCABIAYoAnwRAQALIAAhAQsgBkHsAGoiACACKAIcIgg2AgAgCCAIKAIEQQFqNgIEIAEgDCALIAcgBkH0AGogBkHwAGogABCZAyAAKAIAIgAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAQALIAogByAGKAJ0IAYoAnAgAiADEJMDIQEgBigCeCEAIAZBADYCeCAABEAgACAGKAJ8EQEACyAJKAIAIQAgCUEANgIAIAAEQCAAIAkoAgQRAQALIAZBoANqJAAgAQwBCxDeAQALC94BAQd/IwBB0AFrIgAkABDTAiEFIAAgBDYCACAAQbABaiIGIAYgBkEUIAVByj0gABCCAyIKaiIHIAIoAgQQgwMhCCAAQRBqIgQgAigCHCIFNgIAIAUgBSgCBEEBajYCBCAAKAIQEJACIQkgBCgCACIFIAUoAgRBAWsiCzYCBCALQX9GBEAgBSAFKAIAKAIIEQEACyAJIAYgByAEIAkoAgAoAjARBgAaIAEgBCAKQQJ0IARqIgEgCCAAa0ECdCAAakGwBWsgByAIRhsgASACIAMQkwMhASAAQdABaiQAIAELzQUBA38jAEEQayIIJAAgCCACNgIIIAggATYCDCAIIAMoAhwiATYCBCABIAEoAgRBAWo2AgQgCCgCBBD7ASEJIAgoAgQiASABKAIEQQFrIgI2AgQgAkF/RgRAIAEgASgCACgCCBEBAAtBACECIARBADYCAAJAA0AgBiAHRg0BIAINAQJAIAhBDGogCEEIahD8AQ0AAkAgCSAGLAAAQQAgCSgCACgCJBEEAEElRgRAIAZBAWoiAiAHRg0CAn8CQCAJIAIsAABBACAJKAIAKAIkEQQAIgFBxQBGDQBBACEKIAFB/wFxQTBGDQAgBiECIAEMAQsgBkECaiAHRg0DIAEhCiAJIAYsAAJBACAJKAIAKAIkEQQACyEBIAggACAIKAIMIAgoAgggAyAEIAUgASAKIAAoAgAoAiQRCwA2AgwgAkECaiEGDAELIAkoAgghASAGLAAAIgJBAE4EfyABIAJB/wFxQQJ0aigCAEEBcQVBAAsEQANAAkAgByAGQQFqIgZGBEAgByEGDAELIAYsAAAiAkEATgR/IAEgAkH/AXFBAnRqKAIAQQFxBUEACw0BCwsDQCAIQQxqIAhBCGoQ/AENAgJ/IAgoAgwiASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAItAAALwCEBIAkoAgghAiABQQBOBH8gAiABQf8BcUECdGooAgBBAXEFQQALRQ0CIAhBDGoQ/gEaDAALAAsgCQJ/IAgoAgwiASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAItAAALwCAJKAIAKAIMEQMAIAkgBiwAACAJKAIAKAIMEQMARgRAIAZBAWohBiAIQQxqEP4BGgwBCyAEQQQ2AgALIAQoAgAhAgwBCwsgBEEENgIACyAIQQxqIAhBCGoQ/AEEQCAEIAQoAgBBAnI2AgALIAgoAgwhACAIQRBqJAAgAAsEAEECC0ABAX8jAEEQayIGJAAgBkKlkOmp0snOktMANwMIIAAgASACIAMgBCAFIAZBCGogBkEQaiIBEJwDIQAgASQAIAALUwAgACABIAIgAyAEIAUgAEEIaiAAKAIIKAIUEQAAIgAoAgAgACAALQALIgJBgAFxQQd2GyIBIAEgACgCBCACIgBB/wBxIABBgAFxQQd2G2oQnAMLhQEBAn8jAEEQayIGJAAgBiABNgIMIAYgAygCHCIBNgIIIAEgASgCBEEBajYCBCAGKAIIEPsBIQMgBigCCCIBIAEoAgRBAWsiBzYCBCAHQX9GBEAgASABKAIAKAIIEQEACyAAIAVBGGogBkEMaiACIAQgAxChAyAGKAIMIQAgBkEQaiQAIAALQAAgAiADIABBCGogACgCCCgCABEAACIAIABBqAFqIAUgBEEAEMgCIABrIgBBpwFMBEAgASAAQQxtQQdvNgIACwuFAQECfyMAQRBrIgYkACAGIAE2AgwgBiADKAIcIgE2AgggASABKAIEQQFqNgIEIAYoAggQ+wEhAyAGKAIIIgEgASgCBEEBayIHNgIEIAdBf0YEQCABIAEoAgAoAggRAQALIAAgBUEQaiAGQQxqIAIgBCADEKMDIAYoAgwhACAGQRBqJAAgAAtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQyAIgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC4MBAQF/IwBBEGsiACQAIAAgATYCDCAAIAMoAhwiATYCCCABIAEoAgRBAWo2AgQgACgCCBD7ASEDIAAoAggiASABKAIEQQFrIgY2AgQgBkF/RgRAIAEgASgCACgCCBEBAAsgBUEUaiAAQQxqIAIgBCADEKUDIAAoAgwhASAAQRBqJAAgAQtCACABIAIgAyAEQQQQpgMhASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASBsgAUHFAEgbQewOazYCAAsL5wIBBH8jAEEQayIHJAAgByABNgIMQQAhAUEGIQUCQAJAIAAgB0EMahD8AQ0AAn8gACgCACIFKAIMIgYgBSgCEEYEQCAFIAUoAgAoAiQRAAAMAQsgBi0AAAvAIQZBBCEFIAMoAgghCCAGQQBOBH8gCCAGQf8BcUECdGooAgBBwABxQQBHBUEAC0UNACADIAZBACADKAIAKAIkEQQAIQEDQAJAIAFBMGshASAAEP4BIgYgB0EMahD8AQ0AIARBAkgNAAJ/IAYoAgAiBSgCDCIGIAUoAhBGBEAgBSAFKAIAKAIkEQAADAELIAYtAAALwCEFIAMoAgghBiAFQQBOBH8gBiAFQf8BcUECdGooAgBBwABxQQBHBUEAC0UNAyAEQQFrIQQgAyAFQQAgAygCACgCJBEEACABQQpsaiEBDAELC0ECIQUgBiAHQQxqEPwBRQ0BCyACIAIoAgAgBXI2AgALIAdBEGokACABC90OAQN/IwBBEGsiByQAIAcgATYCDCAEQQA2AgAgByADKAIcIgg2AgAgCCAIKAIEQQFqNgIEIAcoAgAQ+wEhCCAHKAIAIgkgCSgCBEEBayIKNgIEIApBf0YEQCAJIAkoAgAoAggRAQALAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAZBwQBrDjkAARcEFwUXBgcXFxcKFxcXFw4PEBcXFxMVFxcXFxcXFwABAgMDFxcBFwgXFwkLFwwXDRcLFxcREhQWCyAAIAVBGGogB0EMaiACIAQgCBChAwwYCyAAIAVBEGogB0EMaiACIAQgCBCjAwwXCyAHIAAgASACIAMgBCAFIABBCGogACgCCCgCDBEAACIAKAIAIAAgAC0ACyIBQYABcUEHdhsiAiACIAAoAgQgAUH/AHEgAUGAAXFBB3YbahCcAzYCDAwWCyAHQQxqIAIgBCAIQQIQpgMhACAEKAIAIQECQAJAIABBAWtBHksNACABQQRxDQAgBSAANgIMDAELIAQgAUEEcjYCAAsMFQsgB0Kl2r2pwuzLkvkANwMAIAcgACABIAIgAyAEIAUgByAHQQhqEJwDNgIMDBQLIAdCpbK1qdKty5LkADcDACAHIAAgASACIAMgBCAFIAcgB0EIahCcAzYCDAwTCyAHQQxqIAIgBCAIQQIQpgMhACAEKAIAIQECQAJAIABBF0oNACABQQRxDQAgBSAANgIIDAELIAQgAUEEcjYCAAsMEgsgB0EMaiACIAQgCEECEKYDIQAgBCgCACEBAkACQCAAQQFrQQtLDQAgAUEEcQ0AIAUgADYCCAwBCyAEIAFBBHI2AgALDBELIAdBDGogAiAEIAhBAxCmAyEAIAQoAgAhAQJAAkAgAEHtAkoNACABQQRxDQAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EMaiACIAQgCEECEKYDIQEgBCgCACEAAkACQCABQQFrIgFBC0sNACAAQQRxDQAgBSABNgIQDAELIAQgAEEEcjYCAAsMDwsgB0EMaiACIAQgCEECEKYDIQAgBCgCACEBAkACQCAAQTtKDQAgAUEEcQ0AIAUgADYCBAwBCyAEIAFBBHI2AgALDA4LIAdBDGohACMAQRBrIgEkACABIAI2AgwDQAJAIAAgAUEMahD8AQ0AAn8gACgCACICKAIMIgMgAigCEEYEQCACIAIoAgAoAiQRAAAMAQsgAy0AAAvAIQIgCCgCCCEDIAJBAE4EfyADIAJB/wFxQQJ0aigCAEEBcQVBAAtFDQAgABD+ARoMAQsLIAAgAUEMahD8AQRAIAQgBCgCAEECcjYCAAsgAUEQaiQADA0LIAdBDGohAQJAIABBCGogACgCCCgCCBEAACIAKAIEIAAtAAsiA0H/AHEgA0GAAXFBB3YbQQAgACgCECAALQAXIgNB/wBxIANBgAFxQQd2G2tGBEAgBCAEKAIAQQRyNgIADAELIAEgAiAAIABBGGogCCAEQQAQyAIhAiAFKAIIIQECQCAAIAJHDQAgAUEMRw0AIAVBADYCCAwBCwJAIAIgAGtBDEcNACABQQtKDQAgBSABQQxqNgIICwsMDAsgB0HKwBMoAAA2AAcgB0HDwBMpAAA3AwAgByAAIAEgAiADIAQgBSAHIAdBC2oQnAM2AgwMCwsgB0HSwBMtAAA6AAQgB0HOwBMoAAA2AgAgByAAIAEgAiADIAQgBSAHIAdBBWoQnAM2AgwMCgsgB0EMaiACIAQgCEECEKYDIQAgBCgCACEBAkACQCAAQTxKDQAgAUEEcQ0AIAUgADYCAAwBCyAEIAFBBHI2AgALDAkLIAdCpZDpqdLJzpLTADcDACAHIAAgASACIAMgBCAFIAcgB0EIahCcAzYCDAwICyAHQQxqIAIgBCAIQQEQpgMhACAEKAIAIQECQAJAIABBBkoNACABQQRxDQAgBSAANgIYDAELIAQgAUEEcjYCAAsMBwsgACABIAIgAyAEIAUgACgCACgCFBEFAAwHCyAHIAAgASACIAMgBCAFIABBCGogACgCCCgCGBEAACIAKAIAIAAgAC0ACyIBQYABcUEHdhsiAiACIAAoAgQgAUH/AHEgAUGAAXFBB3YbahCcAzYCDAwFCyAFQRRqIAdBDGogAiAEIAgQpQMMBAsgB0EMaiACIAQgCEEEEKYDIQAgBC0AAEEEcUUEQCAFIABB7A5rNgIUCwwDCyAGQSVGDQELIAQgBCgCAEEEcjYCAAwBCyMAQRBrIgAkACAAIAI2AgxBBiEBAkACQCAHQQxqIgMgAEEMahD8AQ0AQQQhASAIAn8gAygCACICKAIMIgUgAigCEEYEQCACIAIoAgAoAiQRAAAMAQsgBS0AAAvAQQAgCCgCACgCJBEEAEElRw0AQQIhASADEP4BIABBDGoQ/AFFDQELIAQgBCgCACABcjYCAAsgAEEQaiQACyAHKAIMCyEAIAdBEGokACAAC5EFAQN/IwBBEGsiCCQAIAggAjYCCCAIIAE2AgwgCCADKAIcIgE2AgQgASABKAIEQQFqNgIEIAgoAgQQkAIhCSAIKAIEIgEgASgCBEEBayICNgIEIAJBf0YEQCABIAEoAgAoAggRAQALQQAhASAEQQA2AgACQANAIAYgB0YNASABDQECQCAIQQxqIAhBCGoQkQINAAJAIAkgBigCAEEAIAkoAgAoAjQRBABBJUYEQCAGQQRqIgEgB0YNAgJ/AkAgCSABKAIAQQAgCSgCACgCNBEEACICQcUARg0AQQAhCiACQf8BcUEwRg0AIAYhASACDAELIAZBCGogB0YNAyACIQogCSAGKAIIQQAgCSgCACgCNBEEAAshAiAIIAAgCCgCDCAIKAIIIAMgBCAFIAIgCiAAKAIAKAIkEQsANgIMIAFBCGohBgwBCyAJQQEgBigCACAJKAIAKAIMEQQABEADQAJAIAcgBkEEaiIGRgRAIAchBgwBCyAJQQEgBigCACAJKAIAKAIMEQQADQELCwNAIAhBDGogCEEIahCRAg0CIAlBAQJ/IAgoAgwiASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAIoAgALIAkoAgAoAgwRBABFDQIgCEEMahCTAhoMAAsACyAJAn8gCCgCDCIBKAIMIgIgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAigCAAsgCSgCACgCHBEDACAJIAYoAgAgCSgCACgCHBEDAEYEQCAGQQRqIQYgCEEMahCTAhoMAQsgBEEENgIACyAEKAIAIQEMAQsLIARBBDYCAAsgCEEMaiAIQQhqEJECBEAgBCAEKAIAQQJyNgIACyAIKAIMIQAgCEEQaiQAIAALXQEBfyMAQSBrIgYkACAGQYjCEykDADcDGCAGQYDCEykDADcDECAGQfjBEykDADcDCCAGQfDBEykDADcDACAAIAEgAiADIAQgBSAGIAZBIGoiARCoAyEAIAEkACAAC1YAIAAgASACIAMgBCAFIABBCGogACgCCCgCFBEAACIAKAIAIAAgAC0ACyICQYABcUEHdhsiASABIAAoAgQgAiIAQf8AcSAAQYABcUEHdhtBAnRqEKgDC4UBAQJ/IwBBEGsiBiQAIAYgATYCDCAGIAMoAhwiATYCCCABIAEoAgRBAWo2AgQgBigCCBCQAiEDIAYoAggiASABKAIEQQFrIgc2AgQgB0F/RgRAIAEgASgCACgCCBEBAAsgACAFQRhqIAZBDGogAiAEIAMQrAMgBigCDCEAIAZBEGokACAAC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDsAiAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLhQEBAn8jAEEQayIGJAAgBiABNgIMIAYgAygCHCIBNgIIIAEgASgCBEEBajYCBCAGKAIIEJACIQMgBigCCCIBIAEoAgRBAWsiBzYCBCAHQX9GBEAgASABKAIAKAIIEQEACyAAIAVBEGogBkEMaiACIAQgAxCuAyAGKAIMIQAgBkEQaiQAIAALQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEOwCIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwuDAQEBfyMAQRBrIgAkACAAIAE2AgwgACADKAIcIgE2AgggASABKAIEQQFqNgIEIAAoAggQkAIhAyAAKAIIIgEgASgCBEEBayIGNgIEIAZBf0YEQCABIAEoAgAoAggRAQALIAVBFGogAEEMaiACIAQgAxCwAyAAKAIMIQEgAEEQaiQAIAELQgAgASACIAMgBEEEELEDIQEgAy0AAEEEcUUEQCAAIAFB0A9qIAFB7A5qIAEgAUHkAEgbIAFBxQBIG0HsDms2AgALC7UCAQR/IwBBEGsiByQAIAcgATYCDEEAIQFBBiEGAkACQCAAIAdBDGoQkQINAEEEIQYgA0HAAAJ/IAAoAgAiBSgCDCIIIAUoAhBGBEAgBSAFKAIAKAIkEQAADAELIAgoAgALIgUgAygCACgCDBEEAEUNACADIAVBACADKAIAKAI0EQQAIQEDQAJAIAFBMGshASAAEJMCIgUgB0EMahCRAg0AIARBAkgNACADQcAAAn8gBSgCACIGKAIMIgUgBigCEEYEQCAGIAYoAgAoAiQRAAAMAQsgBSgCAAsiBiADKAIAKAIMEQQARQ0DIARBAWshBCADIAZBACADKAIAKAI0EQQAIAFBCmxqIQEMAQsLQQIhBiAFIAdBDGoQkQJFDQELIAIgAigCACAGcjYCAAsgB0EQaiQAIAELqA8BA38jAEEwayIHJAAgByABNgIsIARBADYCACAHIAMoAhwiCDYCACAIIAgoAgRBAWo2AgQgBygCABCQAiEIIAcoAgAiCSAJKAIEQQFrIgo2AgQgCkF/RgRAIAkgCSgCACgCCBEBAAsCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBkHBAGsOOQABFwQXBRcGBxcXFwoXFxcXDg8QFxcXExUXFxcXFxcXAAECAwMXFwEXCBcXCQsXDBcNFwsXFxESFBYLIAAgBUEYaiAHQSxqIAIgBCAIEKwDDBgLIAAgBUEQaiAHQSxqIAIgBCAIEK4DDBcLIAcgACABIAIgAyAEIAUgAEEIaiAAKAIIKAIMEQAAIgAoAgAgACAALQALIgFBgAFxQQd2GyICIAIgACgCBCABQf8AcSABQYABcUEHdhtBAnRqEKgDNgIsDBYLIAdBLGogAiAEIAhBAhCxAyEAIAQoAgAhAQJAAkAgAEEBa0EeSw0AIAFBBHENACAFIAA2AgwMAQsgBCABQQRyNgIACwwVCyAHQfjAEykDADcDGCAHQfDAEykDADcDECAHQejAEykDADcDCCAHQeDAEykDADcDACAHIAAgASACIAMgBCAFIAcgB0EgahCoAzYCLAwUCyAHQZjBEykDADcDGCAHQZDBEykDADcDECAHQYjBEykDADcDCCAHQYDBEykDADcDACAHIAAgASACIAMgBCAFIAcgB0EgahCoAzYCLAwTCyAHQSxqIAIgBCAIQQIQsQMhACAEKAIAIQECQAJAIABBF0oNACABQQRxDQAgBSAANgIIDAELIAQgAUEEcjYCAAsMEgsgB0EsaiACIAQgCEECELEDIQAgBCgCACEBAkACQCAAQQFrQQtLDQAgAUEEcQ0AIAUgADYCCAwBCyAEIAFBBHI2AgALDBELIAdBLGogAiAEIAhBAxCxAyEAIAQoAgAhAQJAAkAgAEHtAkoNACABQQRxDQAgBSAANgIcDAELIAQgAUEEcjYCAAsMEAsgB0EsaiACIAQgCEECELEDIQEgBCgCACEAAkACQCABQQFrIgFBC0sNACAAQQRxDQAgBSABNgIQDAELIAQgAEEEcjYCAAsMDwsgB0EsaiACIAQgCEECELEDIQAgBCgCACEBAkACQCAAQTtKDQAgAUEEcQ0AIAUgADYCBAwBCyAEIAFBBHI2AgALDA4LIAdBLGohACMAQRBrIgEkACABIAI2AgwDQAJAIAAgAUEMahCRAg0AIAhBAQJ/IAAoAgAiAigCDCIDIAIoAhBGBEAgAiACKAIAKAIkEQAADAELIAMoAgALIAgoAgAoAgwRBABFDQAgABCTAhoMAQsLIAAgAUEMahCRAgRAIAQgBCgCAEECcjYCAAsgAUEQaiQADA0LIAdBLGohAQJAIABBCGogACgCCCgCCBEAACIAKAIEIAAtAAsiA0H/AHEgA0GAAXFBB3YbQQAgACgCECAALQAXIgNB/wBxIANBgAFxQQd2G2tGBEAgBCAEKAIAQQRyNgIADAELIAEgAiAAIABBGGogCCAEQQAQ7AIhAiAFKAIIIQECQCAAIAJHDQAgAUEMRw0AIAVBADYCCAwBCwJAIAIgAGtBDEcNACABQQtKDQAgBSABQQxqNgIICwsMDAsgB0GgwRNBLBArIgYgACABIAIgAyAEIAUgBiAGQSxqEKgDNgIsDAsLIAdB4METKAIANgIQIAdB2METKQMANwMIIAdB0METKQMANwMAIAcgACABIAIgAyAEIAUgByAHQRRqEKgDNgIsDAoLIAdBLGogAiAEIAhBAhCxAyEAIAQoAgAhAQJAAkAgAEE8Sg0AIAFBBHENACAFIAA2AgAMAQsgBCABQQRyNgIACwwJCyAHQYjCEykDADcDGCAHQYDCEykDADcDECAHQfjBEykDADcDCCAHQfDBEykDADcDACAHIAAgASACIAMgBCAFIAcgB0EgahCoAzYCLAwICyAHQSxqIAIgBCAIQQEQsQMhACAEKAIAIQECQAJAIABBBkoNACABQQRxDQAgBSAANgIYDAELIAQgAUEEcjYCAAsMBwsgACABIAIgAyAEIAUgACgCACgCFBEFAAwHCyAHIAAgASACIAMgBCAFIABBCGogACgCCCgCGBEAACIAKAIAIAAgAC0ACyIBQYABcUEHdhsiAiACIAAoAgQgAUH/AHEgAUGAAXFBB3YbQQJ0ahCoAzYCLAwFCyAFQRRqIAdBLGogAiAEIAgQsAMMBAsgB0EsaiACIAQgCEEEELEDIQAgBC0AAEEEcUUEQCAFIABB7A5rNgIUCwwDCyAGQSVGDQELIAQgBCgCAEEEcjYCAAwBCyMAQRBrIgAkACAAIAI2AgxBBiEBAkACQCAHQSxqIgMgAEEMahCRAg0AQQQhASAIAn8gAygCACICKAIMIgUgAigCEEYEQCACIAIoAgAoAiQRAAAMAQsgBSgCAAtBACAIKAIAKAI0EQQAQSVHDQBBAiEBIAMQkwIgAEEMahCRAkUNAQsgBCAEKAIAIAFyNgIACyAAQRBqJAALIAcoAiwLIQAgB0EwaiQAIAALiwIAIwBBgAFrIgIkACACIAJB9ABqNgIMIAAoAgggAkEQaiIDIAJBDGogBCAFIAYQtAMgAigCDCEGIwBBEGsiBCQAIwBBIGsiACQAIwBBEGsiBSQAIAUgBjYCDCAAIAM2AhggACAFKAIMNgIcIAVBEGokACAAKAIYIQUgACgCHCEGIwBBEGsiAyQAIAMgATYCDANAIAUgBkcEQCADQQxqIAUsAAAQhgIaIAVBAWohBQwBCwsgACAGNgIQIAAgAygCDDYCFCADQRBqJAAgACgCECEBIAAgACgCFDYCDCAEIAE2AgggBCAAKAIMNgIMIABBIGokACAEKAIMIQAgBEEQaiQAIAJBgAFqJAAgAAtqAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBi0ADSEEIAYgBi0ADjoADSAGIAQ6AA4LIAIgASACKAIAIAFrIAZBDGogAyAAECAgAWo2AgAgBkEQaiQAC8ADAQJ/IwBBoANrIgckACAHIAdBoANqIgM2AgwjAEGQAWsiAiQAIAIgAkGEAWo2AhwgACgCCCACQSBqIgggAkEcaiAEIAUgBhC0AyACQgA3AxAgAiAINgIMIAcoAgwgB0EQaiIEa0ECdSEGIAAoAgghACMAQRBrIgUkACAFQQxqIAAQ6QIhACAEIAJBDGogBiACQRBqELoCIQYgACgCACIABEBBjKAUKAIAGiAABEBBjKAUQZypFCAAIABBf0YbNgIACwsgBUEQaiQAIAZBf0YEQBDeAQALIAcgBCAGQQJ0ajYCDCACQZABaiQAIAcoAgwhBiMAQRBrIgIkACMAQSBrIgAkACMAQRBrIgUkACAFIAY2AgwgACAENgIYIAAgBSgCDDYCHCAFQRBqJAAgACgCGCEFIAAoAhwhBiMAQRBrIgQkACAEIAE2AgwDQCAFIAZHBEAgBEEMaiAFKAIAEJUCIAVBBGohBQwBCwsgACAGNgIQIAAgBCgCDDYCFCAEQRBqJAAgACgCECEBIAAgACgCFDYCDCACIAE2AgggAiAAKAIMNgIMIABBIGokACACKAIMIQAgAkEQaiQAIAMkACAACwUAQf8ACxAAIABCADcCACAAQQA2AggLJwAjAEEQayIBJAAgAEEBOgALIABBAUEtEJsCQQA6AAEgAUEQaiQACwwAIABBgoaAIDYAAAsIAEH/////BwsMACAAQQFBLRCUAxoLNgAgAS0AC0GAAXFBB3ZFBEAgACABKQIANwIAIAAgASgCCDYCCA8LIAAgASgCACABKAIEEIABC/MEAQJ/IwBBkAJrIgAkACAAIAI2AogCIAAgATYCjAIgAEHWADYCECAAQZgBaiIHIABBoAFqNgIAIAcgACgCEDYCBCAAQZABaiIIIAQoAhwiATYCACABIAEoAgRBAWo2AgQgACgCkAEQ+wEhASAAQQA6AI8BAkAgAEGMAmogAiADIAggBCgCBCAFIABBjwFqIAEgByAAQZQBaiAAQYQCahC+A0UNACAAQdXqEigAADYAhwEgAEHO6hIpAAA3A4ABIAEgAEGAAWogAEGKAWogAEH2AGogASgCACgCIBEGABogAEHUADYCECAAQQhqIgNBADYCACADIABBEGoiBCgCADYCBAJAIAAoApQBIgEgBygCAGsiAkHjAE4EQCACQQJqEDMhBCADKAIAIQIgAyAENgIAIAIEQCACIAMoAgQRAQALIAMoAgAiBEUNAQsgAC0AjwEEQCAEQS06AAAgBEEBaiEECyAHKAIAIQIDQCABIAJNBEACQCAEQQA6AAAgACAGNgIAIABBEGpBgcAAIAAQaUEBRw0AIAMoAgAhASADQQA2AgAgAQRAIAEgAygCBBEBAAsMBAsFIAQgAEH2AGoiASABQQpqIAItAAAQ0gIgAGsgAGotAAo6AAAgBEEBaiEEIAJBAWohAiAAKAKUASEBDAELCxDeAQALEN4BAAsgAEGMAmogAEGIAmoQ/AEEQCAFIAUoAgBBAnI2AgALIAAoAowCIQIgACgCkAEiASABKAIEQQFrIgM2AgQgA0F/RgRAIAEgASgCACgCCBEBAAsgBygCACEBIAdBADYCACABBEAgASAHKAIEEQEACyAAQZACaiQAIAILhhgBD38jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQ/AEEQCAFIAUoAgBBBHI2AgBBACEADAELIAtB1gA2AkwgC0HoAGoiASALQfAAajYCACABIAtBzABqIhEoAgA2AgQgCyABIhMoAgAiDjYCZCALIA5BkANqNgJgIBFCADcCACARQQA2AgggC0FAayIPQgA3AgAgD0EANgIIIAtBNGoiDEIANwIAIAxBADYCCCALQShqIg1CADcCACANQQA2AgggC0EcaiISQgA3AgAgEkEANgIIIAMoAgAhASMAQRBrIgMkACALAn8gAgRAIANBBGoiAiABEMIDIgEgASgCACgCLBECACALIAMoAgQ2AFwgAiABIAEoAgAoAiARAgAgDSACEJYCIAIQyQIaIAIgASABKAIAKAIcEQIAIAwgAhCWAiACEMkCGiALIAEgASgCACgCDBEAADoAWyALIAEgASgCACgCEBEAADoAWiACIAEgASgCACgCFBECACARIAIQlgIgAhDJAhogAiABIAEoAgAoAhgRAgAgDyACEJYCIAIQyQIaIAEgASgCACgCJBEAAAwBCyADQQRqIgIgARDDAyIBIAEoAgAoAiwRAgAgCyADKAIENgBcIAIgASABKAIAKAIgEQIAIA0gAhCWAiACEMkCGiACIAEgASgCACgCHBECACAMIAIQlgIgAhDJAhogCyABIAEoAgAoAgwRAAA6AFsgCyABIAEoAgAoAhARAAA6AFogAiABIAEoAgAoAhQRAgAgESACEJYCIAIQyQIaIAIgASABKAIAKAIYEQIAIA8gAhCWAiACEMkCGiABIAEoAgAoAiQRAAALNgIYIANBEGokACAJIAgoAgA2AgAgBEGABHEhFiALKAIYIRQgCy0AXyEXIAstAFshGCALLQBaIRkgDiEEQQAhAgNAAkACQAJAAkAgAkEERg0AIAAgC0GMBGoQ/AENAEEAIQECQAJAAkACQAJAAkACQCALQdwAaiACaiwAAA4FAQAEAwUJCyACQQNGDQgCfyAAKAIAIgEoAgwiAyABKAIQRgRAIAEgASgCACgCJBEAAAwBCyADLQAAC8AhASAHKAIIIQMgAUEATgR/IAMgAUH/AXFBAnRqKAIAQQFxBUEACwRAIAtBEGogABC/AyASIAssABAQkAEMAgsgBSAFKAIAQQRyNgIAQQAhAAwJCyACQQNGDQcLA0AgACALQYwEahD8AQ0HAn8gACgCACIBKAIMIgMgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAy0AAAvAIQEgBygCCCEDIAFBAE4EfyADIAFB/wFxQQJ0aigCAEEBcQVBAAtFDQcgC0EQaiAAEL8DIBIgCywAEBCQAQwACwALAkAgDCgCBCAMLQALIgFB/wBxIAFBgAFxQQd2G0UNAAJ/IAAoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwEH/AXEgDCgCACAMIAwtAAtBgAFxQQd2Gy0AAEcNACAAEP4BGiAGQQA6AAAgDCAQIAwoAgQgDC0ACyIBQf8AcSABQYABcUEHdhtBAUsbIRAMBgsgDSgCBCIKIA0tAAsiAUH/AHEgAUGAAXFBB3YbBEACfyAAKAIAIgEoAgwiAyABKAIQRgRAIAEgASgCACgCJBEAAAwBCyADLQAAC8BB/wFxIA0oAgAgDSANLQALQYABcUEHdhstAABGDQMgDSgCBCEKIA0tAAshAQsCQCAMKAIEIAwtAAsiA0H/AHEgA0GAAXFBB3YbIgNFDQAgCiABQf8AcSABQYABcUEHdhtFDQAgBSAFKAIAQQRyNgIAQQAhAAwHCyADIAogAUH/AHEgAUGAAXFBB3YbIgFyRQ0FIAYgAUU6AAAMBQsCQCACQQJJDQAgEA0AIBYNACACQQJGIBdBAEdxDQBBACEQDAULIAsgDxD+AjYCEAJAIAJFDQAgAiALai0AW0EBSw0AA0ACQCAPEP8CIAsoAhAiAUYNACAHKAIIIQMgASwAACIBQQBOBH8gAyABQf8BcUECdGooAgBBAXEFQQALRQ0AIAsgCygCEEEBajYCEAwBCwsgDxD+AiEBIAsoAhAgAWsiASASKAIEIBItAAsiA0H/AHEgA0GAAXFBB3YbTQRAIBIQ/wJBACABaxDEAyEKIBIQ/wIhAyAPEP4CIRUjAEEQayIBJAAgASAVNgIIIAEgCjYCDANAAkAgAyAKRyIVRQ0AIAotAAAgASgCCC0AAEcNACABIAEoAgxBAWo2AgwgASABKAIIQQFqNgIIIAEoAgwhCgwBCwsgAUEQaiQAIBVFDQELIAsgDxD+AjYCDCALIAsoAgw2AhALIAsgCygCEDYCDANAAkAgDxD/AiALKAIMRg0AIAAgC0GMBGoQ/AENAAJ/IAAoAgAiASgCDCIDIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAMtAAALwEH/AXEgCygCDC0AAEcNACAAEP4BGiALIAsoAgxBAWo2AgwMAQsLIBZFDQQgDxD/AiALKAIMRg0EIAUgBSgCAEEEcjYCAEEAIQAMBQsDQAJAIAAgC0GMBGoQ/AENAAJ/IAAoAgAiAygCDCIKIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAotAAALwCEKAn8gBygCCCEDIApBAE4EfyADIApB/wFxQQJ0aigCAEHAAHEFQQALBEAgCSgCACIDIAsoAogERgRAIAggCSALQYgEahDAAyAJKAIAIQMLIAkgA0EBajYCACADIAo6AAAgAUEBagwBCyARKAIEIBEtAAsiA0H/AHEgA0GAAXFBB3YbRQ0BIAFFDQEgCkH/AXEgGUcNASALKAJgIARGBEAgEyALQeQAaiALQeAAahDBAyALKAJkIQQLIAsgBEEEaiIONgJkIAQgATYCACAOIQRBAAshASAAEP4BGgwBCwsCQCATKAIAIA5GDQAgAUUNACALKAJgIA5GBEAgEyALQeQAaiALQeAAahDBAyALKAJkIQ4LIAsgDkEEaiIDNgJkIA4gATYCACADIQ4LIBRBAEwNAgJAIAAgC0GMBGoQ/AFFBEACfyAAKAIAIgEoAgwiAyABKAIQRgRAIAEgASgCACgCJBEAAAwBCyADLQAAC8BB/wFxIBhGDQELIAUgBSgCAEEEcjYCAEEAIQAMBQsDQCAAEP4BIQEgFEEATARAQQAhFAwECwJAIAEgC0GMBGoQ/AFFBEACfyABKAIAIgMoAgwiBCADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAELQAAC8AhAyAHKAIIIQQgA0EATgR/IAQgA0H/AXFBAnRqKAIAQcAAcQVBAAsNAQsgBSAFKAIAQQRyNgIAQQAhAAwGCyAJKAIAIAsoAogERgRAIAggCSALQYgEahDAAwsCfyABKAIAIgEoAgwiAyABKAIQRgRAIAEgASgCACgCJBEAAAwBCyADLQAAC8AhASAJIAkoAgAiA0EBajYCACADIAE6AAAgFEEBayEUDAALAAsgABD+ARogBkEBOgAAIA0gECANKAIEIA0tAAsiAUH/AHEgAUGAAXFBB3YbQQFLGyEQDAILIAsgFDYCGAJAIBBFDQBBASEKA0AgCiAQKAIEIBAtAAsiAUH/AHEgAUGAAXFBB3YbTw0BAkAgACALQYwEahD8AUUEQAJ/IAAoAgAiASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAItAAALwEH/AXEgCiAQKAIAIBAgEC0AC0GAAXFBB3Ybai0AAEYNAQsgBSAFKAIAQQRyNgIAQQAhAAwFCyAAEP4BGiAKQQFqIQoMAAsAC0EBIQAgEygCACIBIA5GDQJBACEAIAtBADYCECARIAEgDiALQRBqENECIAsoAhAEQCAFIAUoAgBBBHI2AgAMAwtBASEADAILIA4hBCAJKAIAIAgoAgBHDQAgBSAFKAIAQQRyNgIAQQAhAAwBCyACQQFqIQIMAQsLIBIQyQIaIA0QyQIaIAwQyQIaIA8QyQIaIBEQyQIaIBMoAgAhASATQQA2AgAgAQRAIAEgEygCBBEBAAsLIAtBkARqJAAgAAsgAQF/IAEoAgAQ/wHAIQIgACABKAIANgIEIAAgAjoAAAvVAQEGfyMAQRBrIgQkACABKAIAIQhBACAAKAIAIgcgACgCBEHWAEYiBRtBf0EBIAIoAgAgB2siA0EBdCIGIAZBAU0bIANB/////wdPGyIGEDUiAwRAIAVFBEAgACgCABogAEEANgIACyAEQdQANgIEIAAgBEEIaiIAIAM2AgAgACAEKAIENgIEIAAQxQMhBSAAKAIAIQMgAEEANgIAIAMEQCADIAAoAgQRAQALIAEgBSgCACAIIAdrajYCACACIAUoAgAgBmo2AgAgBEEQaiQADwsQ3gEAC9gBAQZ/IwBBEGsiBCQAIAEoAgAhCEEAIAAoAgAiBiAAKAIEQdYARiIFG0F/QQQgAigCACIDIAZrIgdBAXQgAyAGRhsgB0H/////B08bIgcQNSIDBEAgBUUEQCAAKAIAGiAAQQA2AgALIARB1AA2AgQgACAEQQhqIgAgAzYCACAAIAQoAgQ2AgQgABDFAyEFIAAoAgAhAyAAQQA2AgAgAwRAIAMgACgCBBEBAAsgASAFKAIAIAggBmtqNgIAIAIgBSgCACAHQXxxajYCACAEQRBqJAAPCxDeAQALCgAgAEGQqhQQcgsKACAAQYiqFBByCzYBAX8jAEEQayICJAAgAiAANgIMIAJBDGoiACAAKAIAIAFqNgIAIAAoAgAhACACQRBqJAAgAAs+AQJ/IAEoAgAhAyABQQA2AgAgACgCACECIAAgAzYCACACBEAgAiAAKAIEEQEACyAAIAFBBGooAgA2AgQgAAveBwEFfyMAQZABayIAJAAgACACNgKIASAAIAE2AowBIABB1gA2AhQgAEEYaiIBIABBIGo2AgAgASAAQRRqIggoAgA2AgQgAEEQaiIJIAQoAhwiBzYCACAHIAcoAgRBAWo2AgQgACgCEBD7ASEHIABBADoADyAAQYwBaiACIAMgCSAEKAIEIAUgAEEPaiAHIAEgCCAAQYQBahC+AwRAAkAgBi0AC0GAAXFBB3YEQCAGKAIAQQA6AAAgBkEANgIEDAELIAZBADoAACAGQQA6AAsLIAAtAA8EQCAGIAdBLSAHKAIAKAIcEQMAEJABCyAHQTAgBygCACgCHBEDACEDIAAoAhQiB0EBayEEIAEoAgAhAiADQf8BcSEDA0ACQCACIARPDQAgAi0AACADRw0AIAJBAWohAgwBCwsjAEEQayIJJAAgBigCBCAGLQALIgQiA0H/AHEgA0GAAXFBB3YbIQMgBEGAAXFBB3YEfyAGKAIIQf////8HcUEBawVBCgshBAJAIAcgAmsiCEUNACACIAYoAgAgBiAGLQALQYABcUEHdhsiCk8EfyAKIAYoAgQgBi0ACyILQf8AcSALQYABcUEHdhtqIAJPBUEAC0UEQCAIIAQgA2tLBEAgBiAEIAMgBGsgCGogAyADEMcDCyADIAYoAgAgBiAGLQALQYABcUEHdhtqIQQDQCACIAdHBEAgBCACLQAAOgAAIAJBAWohAiAEQQFqIQQMAQsLIARBADoAACADIAhqIQICQCAGLQALQYABcUEHdgRAIAYgAjYCBAwBCyAGIAI6AAsLDAELIAlBBGogAiAHEJcCIgQiAigCACACIAItAAtBgAFxQQd2GyEHIAQoAgQgBC0ACyICQf8AcSACQYABcUEHdhshAgJAIAIgBi0AC0GAAXFBB3YEfyAGKAIIQf////8HcUEBawVBCgsiCCAGKAIEIAYtAAsiA0H/AHEgA0GAAXFBB3YbIgNrTQRAIAJFDQEgBigCACAGIAYtAAtBgAFxQQd2GyIIIANqIAcgAhDqARogAiADaiECAkAgBi0AC0GAAXFBB3YEQCAGIAI2AgQMAQsgBiACOgALCyACIAhqQQA6AAAMAQsgBiAIIAIgCGsgA2ogAyADQQAgAiAHEMQECyAEEMkCGgsgCUEQaiQACyAAQYwBaiAAQYgBahD8AQRAIAUgBSgCAEECcjYCAAsgACgCjAEhAyAAKAIQIgIgAigCBEEBayIENgIEIARBf0YEQCACIAIoAgAoAggRAQALIAEoAgAhAiABQQA2AgAgAgRAIAIgASgCBBEBAAsgAEGQAWokACADC4MCAQN/IwBBEGsiBSQAIAJB7////wcgAWtNBEAgACgCACAAIAAtAAtBgAFxQQd2GyEGIAVBBGogAUHm////A00EfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAVBDGoiAiAFQQRqIgcgBygCACACKAIASRsoAgAiAkELTwR/IAJBEGpBcHEiAiACQQFrIgIgAkELRhsFQQoLQQFqBUHv////BwsQmAIgBSgCBCECIAQEQCACIAYgBBDqARoLIAMgBEcEQCACIARqIAQgBmogAyAEaxDqARoLIAFBCkcEQCAGEDQLIAAgAjYCACAAIAUoAghBgICAgHhyNgIIIAVBEGokAA8LEFUAC/0EAQJ/IwBB8ARrIgAkACAAIAI2AugEIAAgATYC7AQgAEHWADYCECAAQcgBaiIHIABB0AFqNgIAIAcgACgCEDYCBCAAQcABaiIIIAQoAhwiATYCACABIAEoAgRBAWo2AgQgACgCwAEQkAIhASAAQQA6AL8BAkAgAEHsBGogAiADIAggBCgCBCAFIABBvwFqIAEgByAAQcQBaiAAQeAEahDJA0UNACAAQdXqEigAADYAtwEgAEHO6hIpAAA3A7ABIAEgAEGwAWogAEG6AWogAEGAAWogASgCACgCMBEGABogAEHUADYCECAAQQhqIgNBADYCACADIABBEGoiBCgCADYCBAJAIAAoAsQBIgEgBygCAGsiAkGJA04EQCACQQJ1QQJqEDMhBCADKAIAIQIgAyAENgIAIAIEQCACIAMoAgQRAQALIAMoAgAiBEUNAQsgAC0AvwEEQCAEQS06AAAgBEEBaiEECyAHKAIAIQIDQCABIAJNBEACQCAEQQA6AAAgACAGNgIAIABBEGpBgcAAIAAQaUEBRw0AIAMoAgAhASADQQA2AgAgAQRAIAEgAygCBBEBAAsMBAsFIAQgAEGwAWogAEGAAWoiASABQShqIAIoAgAQ8gIgAWtBAnVqLQAAOgAAIARBAWohBCACQQRqIQIgACgCxAEhAQwBCwsQ3gEACxDeAQALIABB7ARqIABB6ARqEJECBEAgBSAFKAIAQQJyNgIACyAAKALsBCECIAAoAsABIgEgASgCBEEBayIDNgIEIANBf0YEQCABIAEoAgAoAggRAQALIAcoAgAhASAHQQA2AgAgAQRAIAEgBygCBBEBAAsgAEHwBGokACACC/YWAQx/IwBBkARrIgskACALIAo2AogEIAsgATYCjAQCQCAAIAtBjARqEJECBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQdYANgJIIAtB6ABqIgEgC0HwAGo2AgAgASALQcgAaiIRKAIANgIEIAsgASIUKAIAIgE2AmQgCyABQZADajYCYCARQgA3AgAgEUEANgIIIAtBPGoiDkIANwIAIA5BADYCCCALQTBqIgxCADcCACAMQQA2AgggC0EkaiINQgA3AgAgDUEANgIIIAtBGGoiEkIANwIAIBJBADYCCCADKAIAIRAjAEEQayIKJAAgCwJ/IAIEQCAKQQRqIgMgEBDMAyICIAIoAgAoAiwRAgAgCyAKKAIENgBcIAMgAiACKAIAKAIgEQIAIA0gAxDNAyADEO0CGiADIAIgAigCACgCHBECACAMIAMQzQMgAxDtAhogCyACIAIoAgAoAgwRAAA2AlggCyACIAIoAgAoAhARAAA2AlQgAyACIAIoAgAoAhQRAgAgESADEJYCIAMQyQIaIAMgAiACKAIAKAIYEQIAIA4gAxDNAyADEO0CGiACIAIoAgAoAiQRAAAMAQsgCkEEaiIDIBAQzgMiAiACKAIAKAIsEQIAIAsgCigCBDYAXCADIAIgAigCACgCIBECACANIAMQzQMgAxDtAhogAyACIAIoAgAoAhwRAgAgDCADEM0DIAMQ7QIaIAsgAiACKAIAKAIMEQAANgJYIAsgAiACKAIAKAIQEQAANgJUIAMgAiACKAIAKAIUEQIAIBEgAxCWAiADEMkCGiADIAIgAigCACgCGBECACAOIAMQzQMgAxDtAhogAiACKAIAKAIkEQAACzYCFCAKQRBqJAAgCSAIKAIANgIAIARBgARxIRUgCygCFCEQQQAhAgNAAkACQAJAAkACQCACQQRGDQAgACALQYwEahCRAg0AAkACQAJAAkACQAJAAkAgC0HcAGogAmosAAAOBQEABAMFCgsgAkEDRg0JIAdBAQJ/IAAoAgAiAygCDCIEIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAQoAgALIAcoAgAoAgwRBAAEQCALQQxqIAAQygMgEiALKAIMEMsDDAILIAUgBSgCAEEEcjYCAEEAIQAMCgsgAkEDRg0ICwNAIAAgC0GMBGoQkQINCCAHQQECfyAAKAIAIgMoAgwiBCADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAEKAIACyAHKAIAKAIMEQQARQ0IIAtBDGogABDKAyASIAsoAgwQywMMAAsACwJAIAwoAgQgDC0ACyIDQf8AcSADQYABcUEHdhtFDQACfyAAKAIAIgMoAgwiBCADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAEKAIACyAMKAIAIAwgDC0AC0GAAXFBB3YbKAIARw0AIAAQkwIaIAZBADoAACAMIA8gDCgCBCAMLQALIgNB/wBxIANBgAFxQQd2G0EBSxshDwwHCyANKAIEIgogDS0ACyIEIgNB/wBxIANBgAFxQQd2GwRAAn8gACgCACIDKAIMIgQgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBCgCAAsgDSgCACANIA0tAAtBgAFxQQd2GygCAEYNAyANKAIEIQogDS0ACyEECwJAIAwoAgQgDC0ACyIDQf8AcSADQYABcUEHdhsiA0UNACAKIARB/wBxIARBgAFxQQd2G0UNACAFIAUoAgBBBHI2AgBBACEADAgLIAMgCiAEQf8AcSAEQYABcUEHdhsiBHJFDQYgBiAERToAAAwGCwJAIAJBAkkNACAPDQAgFQ0AIAJBAkYgCy0AX0EAR3ENAEEAIQ8MBgsgCyAOEP4CNgIMAkAgAkUNACACIAtqLQBbQQFLDQADQAJAIA4QkAMgCygCDCIDRg0AIAdBASADKAIAIAcoAgAoAgwRBABFDQAgCyALKAIMQQRqNgIMDAELCyAOEP4CIQMgCygCDCADa0ECdSIDIBIoAgQgEi0ACyIEQf8AcSAEQYABcUEHdhtNBEAgEhCQA0EAIANrEM8DIQogEhCQAyEEIA4Q/gIhEyMAQRBrIgMkACADIBM2AgggAyAKNgIMA0ACQCAEIApHIhNFDQAgCigCACADKAIIKAIARw0AIAMgAygCDEEEajYCDCADIAMoAghBBGo2AgggAygCDCEKDAELCyADQRBqJAAgE0UNAQsgCyAOEP4CNgIIIAsgCygCCDYCDAsgCyALKAIMNgIIA0ACQCAOEJADIAsoAghGDQAgACALQYwEahCRAg0AAn8gACgCACIDKAIMIgQgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBCgCAAsgCygCCCgCAEcNACAAEJMCGiALIAsoAghBBGo2AggMAQsLIBVFDQUgDhCQAyALKAIIRg0FIAUgBSgCAEEEcjYCAEEAIQAMBgtBACEKIAsoAlQhFiABIQQDQAJAIAAgC0GMBGoQkQINAAJ/IAdBwAACfyAAKAIAIgMoAgwiEyADKAIQRgRAIAMgAygCACgCJBEAAAwBCyATKAIACyITIAcoAgAoAgwRBAAEQCAJKAIAIgMgCygCiARGBEAgCCAJIAtBiARqEMEDIAkoAgAhAwsgCSADQQRqNgIAIAMgEzYCACAKQQFqDAELIBEoAgQgES0ACyIDQf8AcSADQYABcUEHdhtFDQEgCkUNASATIBZHDQEgCygCYCABRgRAIBQgC0HkAGogC0HgAGoQwQMgCygCZCEBCyALIAFBBGoiBDYCZCABIAo2AgAgBCEBQQALIQogABCTAhoMAQsLIBQoAgAgBEYNAiAKRQ0CIAsoAmAgBEYEQCAUIAtB5ABqIAtB4ABqEMEDIAsoAmQhBAsgCyAEQQRqIgE2AmQgBCAKNgIADAMLIAAQkwIaIAZBAToAACANIA8gDSgCBCANLQALIgNB/wBxIANBgAFxQQd2G0EBSxshDwwDCyALIBA2AhQCQCAPRQ0AQQEhCgNAIAogDygCBCAPLQALIgJB/wBxIAJBgAFxQQd2G08NAQJAIAAgC0GMBGoQkQJFBEACfyAAKAIAIgIoAgwiAyACKAIQRgRAIAIgAigCACgCJBEAAAwBCyADKAIACyAKQQJ0IA8oAgAgDyAPLQALQYABcUEHdhtqKAIARg0BCyAFIAUoAgBBBHI2AgBBACEADAYLIAAQkwIaIApBAWohCgwACwALQQEhACAUKAIAIgIgAUYNA0EAIQAgC0EANgIMIBEgAiABIAtBDGoQ0QIgCygCDARAIAUgBSgCAEEEcjYCAAwEC0EBIQAMAwsgBCEBCwJAIBBBAEwNAAJAIAAgC0GMBGoQkQJFBEACfyAAKAIAIgMoAgwiBCADKAIQRgRAIAMgAygCACgCJBEAAAwBCyAEKAIACyALKAJYRg0BCyAFIAUoAgBBBHI2AgBBACEADAMLA0AgABCTAiEDIBBBAEwEQEEAIRAMAgsCQCADIAtBjARqEJECRQRAIAdBwAACfyADKAIAIgQoAgwiCiAEKAIQRgRAIAQgBCgCACgCJBEAAAwBCyAKKAIACyAHKAIAKAIMEQQADQELIAUgBSgCAEEEcjYCAEEAIQAMBAsgCSgCACALKAKIBEYEQCAIIAkgC0GIBGoQwQMLAn8gAygCACIDKAIMIgQgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBCgCAAshAyAJIAkoAgAiBEEEajYCACAEIAM2AgAgEEEBayEQDAALAAsgCSgCACAIKAIARw0AIAUgBSgCAEEEcjYCAEEAIQAMAQsgAkEBaiECDAELCyASEO0CGiANEO0CGiAMEO0CGiAOEO0CGiAREMkCGiAUKAIAIQEgFEEANgIAIAEEQCABIBQoAgQRAQALCyALQZAEaiQAIAALHwEBfyABKAIAEJQCIQIgACABKAIANgIEIAAgAjYCAAuXAQECfwJAAkACQAJAIAAtAAsiA0GAAXFBB3YEQCAAKAIEIgMgACgCCEH/////B3FBAWsiAkYNAQwCC0EBIQIgA0H/AHEiA0EBRw0CCyAAIAJBASACIAIQ0QMgAiEDCyAAKAIAIQIgACADQQFqNgIEDAELIAAgA0EBajoACyAAIQILIAIgA0ECdGoiACABNgIAIABBADYCBAsKACAAQaCqFBByC0AAIAAtAAtBgAFxQQd2BEAgACgCCBogACgCABA0CyAAIAEpAgA3AgAgACABKAIINgIIIAFBADoACyABQQA2AgALCgAgAEGYqhQQcgs5AQF/IwBBEGsiAiQAIAIgADYCDCACQQxqIgAgACgCACABQQJ0ajYCACAAKAIAIQAgAkEQaiQAIAAL5QcBBX8jAEHAA2siACQAIAAgAjYCuAMgACABNgK8AyAAQdYANgIUIABBGGoiASAAQSBqNgIAIAEgAEEUaiIIKAIANgIEIABBEGoiCSAEKAIcIgc2AgAgByAHKAIEQQFqNgIEIAAoAhAQkAIhByAAQQA6AA8gAEG8A2ogAiADIAkgBCgCBCAFIABBD2ogByABIAggAEGwA2oQyQMEQAJAIAYtAAtBgAFxQQd2BEAgBigCAEEANgIAIAZBADYCBAwBCyAGQQA2AgAgBkEAOgALCyAALQAPBEAgBiAHQS0gBygCACgCLBEDABDLAwsgB0EwIAcoAgAoAiwRAwAhAyAAKAIUIgdBBGshBCABKAIAIQIDQAJAIAIgBE8NACACKAIAIANHDQAgAkEEaiECDAELCyMAQRBrIgkkACAGKAIEIAYtAAsiBCIDQf8AcSADQYABcUEHdhshAyAEQYABcUEHdgR/IAYoAghB/////wdxQQFrBUEBCyEEAkAgByACa0ECdSIIRQ0AIAIgBigCACAGIAYtAAtBgAFxQQd2GyIKTwR/IAogBigCBCAGLQALIgtB/wBxIAtBgAFxQQd2G0ECdGogAk8FQQALRQRAIAggBCADa0sEQCAGIAQgAyAEayAIaiADIAMQ0QMLIANBAnQgBigCACAGIAYtAAtBgAFxQQd2G2ohBANAIAIgB0cEQCAEIAIoAgA2AgAgAkEEaiECIARBBGohBAwBCwsgBEEANgIAIAMgCGohAgJAIAYtAAtBgAFxQQd2BEAgBiACNgIEDAELIAYgAjoACwsMAQsgCUEEaiACIAcQwgIiBCICKAIAIAIgAi0AC0GAAXFBB3YbIQcgBCgCBCAELQALIgJB/wBxIAJBgAFxQQd2GyECAkAgAiAGLQALQYABcUEHdgR/IAYoAghB/////wdxQQFrBUEBCyIIIAYoAgQgBi0ACyIDQf8AcSADQYABcUEHdhsiA2tNBEAgAkUNASAGKAIAIAYgBi0AC0GAAXFBB3YbIgggA0ECdGogByACEIoCGiACIANqIQICQCAGLQALQYABcUEHdgRAIAYgAjYCBAwBCyAGIAI6AAsLIAggAkECdGpBADYCAAwBCyAGIAggAiAIayADaiADIANBACACIAcQxQQLIAQQ7QIaCyAJQRBqJAALIABBvANqIABBuANqEJECBEAgBSAFKAIAQQJyNgIACyAAKAK8AyEDIAAoAhAiAiACKAIEQQFrIgQ2AgQgBEF/RgRAIAIgAigCACgCCBEBAAsgASgCACECIAFBADYCACACBEAgAiABKAIEEQEACyAAQcADaiQAIAMLhAIBA38jAEEQayIFJAAgAkHv////AyABa00EQCAAKAIAIAAgAC0AC0GAAXFBB3YbIQYgBUEEaiABQeb///8BTQR/IAUgAUEBdDYCDCAFIAEgAmo2AgQgBUEMaiAFQQRqIAUoAgQgBSgCDEkbKAIAIgJBAk8EfyACQQRqQXxxIgIgAkEBayICIAJBAkYbBUEBC0EBagVB7////wMLEMMCIAUoAgQhAiAEBEAgAiAGIAQQigIaCyADIARHBEAgAiAEQQJ0IgdqIAYgB2ogAyAEaxCKAhoLIAFBAUcEQCAGEDQLIAAgAjYCACAAIAUoAghBgICAgHhyNgIIIAVBEGokAA8LEFUAC58HAQp/IwBBwANrIgAkACAAIAU3AxAgACAGNwMYIAAgAEHQAmoiCzYCzAIgCyAAQRBqELYCIQogAEHUADYC4AEgAEHYAWoiC0EANgIAIAsgACgC4AE2AgQgAEHUADYC4AEgAEEANgLQASAAIAAoAuABNgLUAQJAAkAgCkHkAEkEQCAAQeABaiEMIABB0AJqIQgMAQsQ0wIhCiAAIAU3AwAgACAGNwMIIABBzAJqIApB+z8gABCLAyIKQX9GDQEgCygCACEHIAsgACgCzAIiCDYCACAHBEAgByALKAIEEQEACyAKEDMhDCAAKALQASEHIAAgDDYC0AEgBwRAIAcgACgC1AERAQALIAAoAtABIgxFDQELIAAgAygCHCIHNgLMASAHIAcoAgRBAWo2AgQgACgCzAEQ+wEiECIHIAggCCAKaiAMIAcoAgAoAiARBgAaIApBAEoEQCAILQAAQS1GIQ4LIABBuAFqIg1CADcCACANQQA2AgggAEGsAWoiCEIANwIAIAhBADYCCCAAQaABaiIHQgA3AgAgB0EANgIIIAIgDiAAKALMASAAQcgBaiAAQccBaiAAQcYBaiANIAggByAAQZwBahDTAyAAQdQANgIwIABBADYCKCAAIABBMGoiAigCADYCLAJ/IAAoApwBIg8gCkgEQCAKIA9rQQF0IAcoAgQgBy0ACyIJQf8AcSAJQYABcUEHdhtqIAgoAgQgCC0ACyIJQf8AcSAJQYABcUEHdhtqQQFqDAELIAcoAgQgBy0ACyIJQf8AcSAJQYABcUEHdhsgCCgCBCAILQALIglB/wBxIAlBgAFxQQd2G2pBAmoLIA9qIglB5QBPBEAgCRAzIQkgACgCKCECIAAgCTYCKCACBEAgAiAAKAIsEQEACyAAKAIoIgJFDQELIAIgAEEkaiAAQSBqIAMoAgQgDCAKIAxqIBAgDiAAQcgBaiAALADHASAALADGASANIAggByAPENQDIAEgAiAAKAIkIAAoAiAgAyAEEHchAiAAKAIoIQEgAEEANgIoIAEEQCABIAAoAiwRAQALIAcQyQIaIAgQyQIaIA0QyQIaIAAoAswBIgEgASgCBEEBayIDNgIEIANBf0YEQCABIAEoAgAoAggRAQALIAAoAtABIQEgAEEANgLQASABBEAgASAAKALUAREBAAsgCygCACEBIAtBADYCACABBEAgASALKAIEEQEACyAAQcADaiQAIAIPCxDeAQAL7wMBAX8jAEEQayIKJAAgCQJ/IAAEQCACEMIDIQACQCABBEAgCkEEaiIBIAAgACgCACgCLBECACADIAooAgQ2AAAgASAAIAAoAgAoAiARAgAMAQsgCkEEaiIBIAAgACgCACgCKBECACADIAooAgQ2AAAgASAAIAAoAgAoAhwRAgALIAggARCWAiABEMkCGiAEIAAgACgCACgCDBEAADoAACAFIAAgACgCACgCEBEAADoAACAKQQRqIgEgACAAKAIAKAIUEQIAIAYgARCWAiABEMkCGiABIAAgACgCACgCGBECACAHIAEQlgIgARDJAhogACAAKAIAKAIkEQAADAELIAIQwwMhAAJAIAEEQCAKQQRqIgEgACAAKAIAKAIsEQIAIAMgCigCBDYAACABIAAgACgCACgCIBECAAwBCyAKQQRqIgEgACAAKAIAKAIoEQIAIAMgCigCBDYAACABIAAgACgCACgCHBECAAsgCCABEJYCIAEQyQIaIAQgACAAKAIAKAIMEQAAOgAAIAUgACAAKAIAKAIQEQAAOgAAIApBBGoiASAAIAAoAgAoAhQRAgAgBiABEJYCIAEQyQIaIAEgACAAKAIAKAIYEQIAIAcgARCWAiABEMkCGiAAIAAoAgAoAiQRAAALNgIAIApBEGokAAuoBwEJfyACIAA2AgAgA0GABHEhFQNAIBRBBEYEQCANKAIEIA0tAAsiBEH/AHEgBEGAAXFBB3YbQQFLBEAgAiANEP4CQQEQxAMgDRD/AiACKAIAENUDNgIACyADQbABcSIDQRBHBEAgASADQSBGBH8gAigCAAUgAAs2AgALBQJAAkACQAJAAkACQCAIIBRqLAAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgIAYoAgAoAhwRAwAhDyACIAIoAgAiEEEBajYCACAQIA86AAAMAwsgDSgCBCANLQALIg9B/wBxIA9BgAFxQQd2G0UNAiANKAIAIA0gDS0AC0GAAXFBB3YbLQAAIQ8gAiACKAIAIhBBAWo2AgAgECAPOgAADAILIAwoAgQgDC0ACyIPQf8AcSAPQYABcUEHdhtFIQ8gFUUNASAPDQEgAiAMEP4CIAwQ/wIgAigCABDVAzYCAAwBCyAGKAIIIQ8gAigCACEWIAQgB2oiBCERA0ACQCAFIBFNDQAgESwAACIQQQBOBH8gDyAQQf8BcUECdGooAgBBwABxQQBHBUEAC0UNACARQQFqIREMAQsLIA4iD0EASgRAA0ACQCAEIBFPDQAgD0UNACAPQQFrIQ8gEUEBayIRLQAAIRAgAiACKAIAIhJBAWo2AgAgEiAQOgAADAELCyAPBH8gBkEwIAYoAgAoAhwRAwAFQQALIRIDQCACIAIoAgAiEEEBajYCACAPQQBKBEAgECASOgAAIA9BAWshDwwBCwsgECAJOgAACwJAIAQgEUYEQCAGQTAgBigCACgCHBEDACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwBC0F/IRAgCygCBCALLQALIg9B/wBxIA9BgAFxQQd2GwRAIAsoAgAgCyALLQALQYABcUEHdhssAAAhEAtBACEPQQAhEwNAIAQgEUYNAQJAIA8gEEcEQCAPIRIMAQsgAiACKAIAIhBBAWo2AgAgECAKOgAAQQAhEiATQQFqIhMgCygCBCALLQALIhBB/wBxIBBBgAFxQQd2G08EQCAPIRAMAQtBfyEQIBMgCygCACALIAstAAtBgAFxQQd2G2otAABB/wBGDQAgEyALKAIAIAsgCy0AC0GAAXFBB3YbaiwAACEQCyARQQFrIhEtAAAhDyACIAIoAgAiF0EBajYCACAXIA86AAAgEkEBaiEPDAALAAsgFiACKAIAEIUDCyAUQQFqIRQMAQsLC5MBAQN/IwBBEGsiBCQAIwBBIGsiAyQAIwBBEGsiBSQAIAUgATYCDCADIAA2AhggAyAFKAIMNgIcIAVBEGokACADQRBqIAMoAhggAygCHCACEPEBIAAgAygCECAAaxDEAyEAIAMgAygCFDYCDCAEIAA2AgggBCADKAIMNgIMIANBIGokACAEKAIMIQAgBEEQaiQAIAALxwUBCH8jAEGwAWsiACQAIAAgAygCHCIGNgKsASAGIAYoAgRBAWo2AgQgACgCrAEQ+wEhCyAFKAIEIAUtAAsiBkH/AHEgBkGAAXFBB3YbBEAgBSgCACAFIAUtAAtBgAFxQQd2Gy0AACALQS0gCygCACgCHBEDAEH/AXFGIQwLIABBmAFqIgpCADcCACAKQQA2AgggAEGMAWoiBkIANwIAIAZBADYCCCAAQYABaiIJQgA3AgAgCUEANgIIIAIgDCAAKAKsASAAQagBaiAAQacBaiAAQaYBaiAKIAYgCSAAQfwAahDTAyAAQdQANgIQIABBADYCCCAAIABBEGoiAigCADYCDAJAAn8gBSgCBCAFLQALIgdB/wBxIAdBgAFxQQd2GyIHIAAoAnwiDUoEQCAHIA1rQQF0IAkoAgQgCS0ACyIIQf8AcSAIQYABcUEHdhtqIAYoAgQgBi0ACyIIQf8AcSAIQYABcUEHdhtqQQFqDAELIAkoAgQgCS0ACyIIQf8AcSAIQYABcUEHdhsgBigCBCAGLQALIghB/wBxIAhBgAFxQQd2G2pBAmoLIA1qIghB5QBPBEAgCBAzIQcgACgCCCECIAAgBzYCCCACBEAgAiAAKAIMEQEACyAAKAIIIgJFDQEgBSgCBCAFLQALIgdB/wBxIAdBgAFxQQd2GyEHCyACIABBBGogACADKAIEIAUoAgAgBSAFLQALQYABcUEHdhsiBSAFIAdqIAsgDCAAQagBaiAALACnASAALACmASAKIAYgCSANENQDIAEgAiAAKAIEIAAoAgAgAyAEEHchAiAAKAIIIQEgAEEANgIIIAEEQCABIAAoAgwRAQALIAkQyQIaIAYQyQIaIAoQyQIaIAAoAqwBIgEgASgCBEEBayIDNgIEIANBf0YEQCABIAEoAgAoAggRAQALIABBsAFqJAAgAg8LEN4BAAupBwEKfyMAQaAIayIAJAAgACAFNwMQIAAgBjcDGCAAIABBsAdqIgs2AqwHIAsgAEEQahC2AiEKIABB1AA2ApAEIABBiARqIgtBADYCACALIAAoApAENgIEIABB1AA2ApAEIABBADYCgAQgACAAKAKQBDYChAQCQAJAIApB5ABJBEAgAEGQBGohDCAAQbAHaiEIDAELENMCIQogACAFNwMAIAAgBjcDCCAAQawHaiAKQfs/IAAQiwMiCkF/Rg0BIAsoAgAhByALIAAoAqwHIgg2AgAgBwRAIAcgCygCBBEBAAsgCkECdBAzIQwgACgCgAQhByAAIAw2AoAEIAcEQCAHIAAoAoQEEQEACyAAKAKABCIMRQ0BCyAAIAMoAhwiBzYC/AMgByAHKAIEQQFqNgIEIAAoAvwDEJACIhAiByAIIAggCmogDCAHKAIAKAIwEQYAGiAKQQBKBEAgCC0AAEEtRiEOCyAAQeQDaiINQgA3AgAgDUEANgIIIABB2ANqIghCADcCACAIQQA2AgggAEHMA2oiB0IANwIAIAdBADYCCCACIA4gACgC/AMgAEH4A2ogAEH0A2ogAEHwA2ogDSAIIAcgAEHIA2oQ2AMgAEHUADYCMCAAQQA2AiggACAAQTBqIgIoAgA2AiwCfyAAKALIAyIPIApIBEAgCiAPa0EBdCAHKAIEIActAAsiCUH/AHEgCUGAAXFBB3YbaiAIKAIEIAgtAAsiCUH/AHEgCUGAAXFBB3YbakEBagwBCyAHKAIEIActAAsiCUH/AHEgCUGAAXFBB3YbIAgoAgQgCC0ACyIJQf8AcSAJQYABcUEHdhtqQQJqCyAPaiIJQeUATwRAIAlBAnQQMyEJIAAoAighAiAAIAk2AiggAgRAIAIgACgCLBEBAAsgACgCKCICRQ0BCyACIABBJGogAEEgaiADKAIEIAwgDCAKQQJ0aiAQIA4gAEH4A2ogACgC9AMgACgC8AMgDSAIIAcgDxDZAyABIAIgACgCJCAAKAIgIAMgBBCTAyECIAAoAighASAAQQA2AiggAQRAIAEgACgCLBEBAAsgBxDtAhogCBDtAhogDRDJAhogACgC/AMiASABKAIEQQFrIgM2AgQgA0F/RgRAIAEgASgCACgCCBEBAAsgACgCgAQhASAAQQA2AoAEIAEEQCABIAAoAoQEEQEACyALKAIAIQEgC0EANgIAIAEEQCABIAsoAgQRAQALIABBoAhqJAAgAg8LEN4BAAvvAwEBfyMAQRBrIgokACAJAn8gAARAIAIQzAMhAAJAIAEEQCAKQQRqIgEgACAAKAIAKAIsEQIAIAMgCigCBDYAACABIAAgACgCACgCIBECAAwBCyAKQQRqIgEgACAAKAIAKAIoEQIAIAMgCigCBDYAACABIAAgACgCACgCHBECAAsgCCABEM0DIAEQ7QIaIAQgACAAKAIAKAIMEQAANgIAIAUgACAAKAIAKAIQEQAANgIAIApBBGoiASAAIAAoAgAoAhQRAgAgBiABEJYCIAEQyQIaIAEgACAAKAIAKAIYEQIAIAcgARDNAyABEO0CGiAAIAAoAgAoAiQRAAAMAQsgAhDOAyEAAkAgAQRAIApBBGoiASAAIAAoAgAoAiwRAgAgAyAKKAIENgAAIAEgACAAKAIAKAIgEQIADAELIApBBGoiASAAIAAoAgAoAigRAgAgAyAKKAIENgAAIAEgACAAKAIAKAIcEQIACyAIIAEQzQMgARDtAhogBCAAIAAoAgAoAgwRAAA2AgAgBSAAIAAoAgAoAhARAAA2AgAgCkEEaiIBIAAgACgCACgCFBECACAGIAEQlgIgARDJAhogASAAIAAoAgAoAhgRAgAgByABEM0DIAEQ7QIaIAAgACgCACgCJBEAAAs2AgAgCkEQaiQAC7sHAQl/IAIgADYCACADQYAEcSEVIAdBAnQhFgNAIBRBBEYEQCANKAIEIA0tAAsiBEH/AHEgBEGAAXFBB3YbQQFLBEAgAiANEP4CQQEQzwMgDRCQAyACKAIAENoDNgIACyADQbABcSIDQRBHBEAgASADQSBGBH8gAigCAAUgAAs2AgALBQJAAkACQAJAAkACQCAIIBRqLAAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgIAYoAgAoAiwRAwAhByACIAIoAgAiD0EEajYCACAPIAc2AgAMAwsgDSgCBCANLQALIgdB/wBxIAdBgAFxQQd2G0UNAiANKAIAIA0gDS0AC0GAAXFBB3YbKAIAIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAILIAwoAgQgDC0ACyIHQf8AcSAHQYABcUEHdhtFIQcgFUUNASAHDQEgAiAMEP4CIAwQkAMgAigCABDaAzYCAAwBCyACKAIAIRcgBCAWaiIEIQcDQAJAIAUgB00NACAGQcAAIAcoAgAgBigCACgCDBEEAEUNACAHQQRqIQcMAQsLIA5BAEoEQCACKAIAIQ8gDiEQA0ACQCAEIAdPDQAgEEUNACAQQQFrIRAgB0EEayIHKAIAIREgAiAPQQRqIhI2AgAgDyARNgIAIBIhDwwBCwsCQCAQRQRAQQAhEQwBCyAGQTAgBigCACgCLBEDACERIAIoAgAhDwsDQCAPQQRqIRIgEEEASgRAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIBI2AgAgDyAJNgIACwJAIAQgB0YEQCAGQTAgBigCACgCLBEDACEPIAIgAigCACIQQQRqIgc2AgAgECAPNgIADAELQX8hESALKAIEIAstAAsiD0H/AHEgD0GAAXFBB3YbBEAgCygCACALIAstAAtBgAFxQQd2GywAACERC0EAIRBBACETA0AgBCAHRwRAIAIoAgAhEgJAIBAgEUcEQCASIQ8gECESDAELIAIgEkEEaiIPNgIAIBIgCjYCAEEAIRIgE0EBaiITIAsoAgQgCy0ACyIRQf8AcSARQYABcUEHdhtPBEAgECERDAELQX8hESATIAsoAgAgCyALLQALQYABcUEHdhtqLQAAQf8ARg0AIBMgCygCACALIAstAAtBgAFxQQd2G2osAAAhEQsgB0EEayIHKAIAIRAgAiAPQQRqNgIAIA8gEDYCACASQQFqIRAMAQsLIAIoAgAhBwsgFyAHENUCCyAUQQFqIRQMAQsLC5YBAQN/IwBBEGsiBCQAIwBBIGsiAyQAIwBBEGsiBSQAIAUgATYCDCADIAA2AhggAyAFKAIMNgIcIAVBEGokACADQRBqIAMoAhggAygCHCACEPEBIAAgAygCECAAa0ECdRDPAyEAIAMgAygCFDYCDCAEIAA2AgggBCADKAIMNgIMIANBIGokACAEKAIMIQAgBEEQaiQAIAALywUBCH8jAEHgA2siACQAIAAgAygCHCIGNgLcAyAGIAYoAgRBAWo2AgQgACgC3AMQkAIhCyAFKAIEIAUtAAsiBkH/AHEgBkGAAXFBB3YbBEAgBSgCACAFIAUtAAtBgAFxQQd2GygCACALQS0gCygCACgCLBEDAEYhDAsgAEHEA2oiCkIANwIAIApBADYCCCAAQbgDaiIGQgA3AgAgBkEANgIIIABBrANqIglCADcCACAJQQA2AgggAiAMIAAoAtwDIABB2ANqIABB1ANqIABB0ANqIAogBiAJIABBqANqENgDIABB1AA2AhAgAEEANgIIIAAgAEEQaiICKAIANgIMAkACfyAFKAIEIAUtAAsiB0H/AHEgB0GAAXFBB3YbIgcgACgCqAMiDUoEQCAHIA1rQQF0IAkoAgQgCS0ACyIIQf8AcSAIQYABcUEHdhtqIAYoAgQgBi0ACyIIQf8AcSAIQYABcUEHdhtqQQFqDAELIAkoAgQgCS0ACyIIQf8AcSAIQYABcUEHdhsgBigCBCAGLQALIghB/wBxIAhBgAFxQQd2G2pBAmoLIA1qIghB5QBPBEAgCEECdBAzIQcgACgCCCECIAAgBzYCCCACBEAgAiAAKAIMEQEACyAAKAIIIgJFDQEgBSgCBCAFLQALIgdB/wBxIAdBgAFxQQd2GyEHCyACIABBBGogACADKAIEIAUoAgAgBSAFLQALQYABcUEHdhsiBSAFIAdBAnRqIAsgDCAAQdgDaiAAKALUAyAAKALQAyAKIAYgCSANENkDIAEgAiAAKAIEIAAoAgAgAyAEEJMDIQIgACgCCCEBIABBADYCCCABBEAgASAAKAIMEQEACyAJEO0CGiAGEO0CGiAKEMkCGiAAKALcAyIBIAEoAgRBAWsiAzYCBCADQX9GBEAgASABKAIAKAIIEQEACyAAQeADaiQAIAIPCxDeAQALBABBfwsJACAAIAUQvAML1QEAAkAgBS0AC0GAAXFBB3ZFBEAgACAFKQIANwIAIAAgBSgCCDYCCAwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAJBAkkEQCAAIAI6AAsMAQsgAkHw////A08NASADQQhqIAJBAk8EfyACQQRqQXxxIgEgAUEBayIBIAFBAkYbBUEBC0EBahDDAiAAIAMoAggiATYCACAAIAMoAgxBgICAgHhyNgIIIAAgAjYCBCABIQALIAAgBCACQQFqEIoCGiADQRBqJAAMAQsQVQALCwt1AQJ/IwBBEGsiAyQAIANBBGoiAiAANgIAIAIgACgCBCIANgIEIAIgACABQQJ0ajYCCCACKAIEIQEgAigCCCEAA0AgACABRgRAIAIoAgAgAigCBDYCBCADQRBqJAAFIAFBADYCACACIAFBBGoiATYCBAwBCwsLDAAgACAAKAIAEOIDC6AJAQp/IwBBEGsiCiQAIAEgASgCBEEBajYCBCAAQQhqIQQgCkEMaiIJIAE2AgAgAiAAKAIMIAAoAggiAGtBAnVPBH8CQCACQQFqIgAgBCgCBCAEKAIAIgNrQQJ1IgFLBEAjAEEgayILJAACQCAAIAFrIgYgBCgCCCAEKAIEIgFrQQJ1TQRAIAQgBhDfAwwBCyAEQRBqIQcgC0EMaiEAAn8gBiABIAQoAgBrQQJ1aiEFIwBBEGsiAyQAIAMgBTYCDCAFEOMDIgFNBEAgBCgCCCAEKAIAa0ECdSIFIAFBAXZJBEAgAyAFQQF0NgIIIANBDGogA0EIaiADKAIIIAMoAgxJGygCACEBCyADQRBqJAAgAQwBCxBXAAshASAEKAIEIAQoAgBrQQJ1IQgjAEEQayIDJAAgAEEANgIMIAAgBzYCECAAAn8gAUUEQEEAIQFBAAwBCyADQQhqIAAoAhAgARDkAyADKAIMIQEgAygCCAsiBTYCACAAIAUgCEECdGoiBzYCCCAAIAc2AgQgACAFIAFBAnRqNgIMIANBEGokACMAQRBrIgMkACADIAAoAgg2AgQgACgCCCEBIAMgAEEIajYCDCADIAEgBkECdGo2AgggAygCBCEBA0AgAygCCCABRwRAIAFBADYCACADIAMoAgRBBGoiATYCBAwBCwsgAygCDCADKAIENgIAIANBEGokACMAQRBrIgYkACAGIAQoAgQ2AgwgBiAEKAIANgIIIAYgACgCBDYCBCAGKAIMIQUgBigCCCEIIAYoAgQhDCMAQRBrIgckACMAQSBrIgEkACMAQRBrIgMkACADIAg2AgwgASAFNgIYIAEgAygCDDYCHCADQRBqJAAgASgCGCEFIAEoAhwhCCMAQRBrIgMkACADIAw2AgggAyAFNgIMA0AgBSAIRwRAIAMoAghBBGsgBUEEaygCADYCACADIAMoAgxBBGs2AgwgAyADKAIIQQRrNgIIIAMoAgwhBQwBCwsgASAFNgIQIAEgAygCCDYCFCADQRBqJAAgASgCECEDIAEgASgCFDYCDCAHIAM2AgggByABKAIMNgIMIAFBIGokACAHKAIMIQEgB0EQaiQAIAAgATYCBCAEKAIAIQEgBCAAKAIENgIAIAAgATYCBCAEKAIEIQEgBCAAKAIINgIEIAAgATYCCCAEKAIIIQEgBCAAKAIMNgIIIAAgATYCDCAAIAAoAgQ2AgAgBkEQaiQAIAAoAgQhAyAAKAIIIQEDQCABIANHBEAgACABQQRrIgE2AggMAQsLIAAoAgAiAQRAIAAoAhAgASAAKAIMIAAoAgBrQQJ1EOUDCwsgC0EgaiQADAELIAAgAUkEQCAEIAMgAEECdGoQ4gMLCyAEKAIABSAACyACQQJ0aiIBKAIAIgAEfyAAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyAEKAIAIAJBAnRqBSABCyAJKAIAIQAgCUEANgIAIAA2AgAgCSgCACEAIAlBADYCACAABEAgACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsLIApBEGokAAsmAQF/IAAoAgQhAgNAIAEgAkcEQCACQQRrIQIMAQsLIAAgATYCBAtLAQN/IwBBEGsiACQAIABB/////wM2AgwgAEH/////BzYCCCAAQQhqIgEgAEEMaiICIAEoAgAgAigCAEkbKAIAIQEgAEEQaiQAIAELNgACfwJAIAJBHksNACABLQB4DQAgAUEBOgB4IAEMAQsgAhDEAgshASAAIAI2AgQgACABNgIACxoAAkAgACABRgRAIAFBADoAeAwBCyABEDQLCw8AIAAgACgCACgCBBEBAAsKACAAENMCNgIACxgAIAAoAggQ0wJHBEAgACgCCBC5AgsgAAsJACAAEOgDEDQL2gEAQdirFC0AAARAQdSrFCgCAA8LQdivFC0AAEUEQEHYrxRBAToAAAtBsK4UQcTuExD4A0G8rhRB4O4TEPgDQciuFEH87hMQ+ANB1K4UQZzvExD4A0HgrhRBxO8TEPgDQeyuFEHo7xMQ+ANB+K4UQYTwExD4A0GErxRBqPATEPgDQZCvFEG48BMQ+ANBnK8UQcjwExD4A0GorxRB2PATEPgDQbSvFEHo8BMQ+ANBwK8UQfjwExD4A0HMrxRBiPETEPgDQdirFEEBOgAAQdSrFEGwrhQ2AgBBsK4UC8gCAEHoqxQtAAAEQEHkqxQoAgAPC0GwtBQtAABFBEBBsLQUQQE6AAALQZCyFEGY8RMQ+ANBnLIUQbjxExD4A0GoshRB3PETEPgDQbSyFEH08RMQ+ANBwLIUQYzyExD4A0HMshRBnPITEPgDQdiyFEGw8hMQ+ANB5LIUQcTyExD4A0HwshRB4PITEPgDQfyyFEGI8xMQ+ANBiLMUQajzExD4A0GUsxRBzPMTEPgDQaCzFEHw8xMQ+ANBrLMUQYD0ExD4A0G4sxRBkPQTEPgDQcSzFEGg9BMQ+ANB0LMUQYzyExD4A0HcsxRBsPQTEPgDQeizFEHA9BMQ+ANB9LMUQdD0ExD4A0GAtBRB4PQTEPgDQYy0FEHw9BMQ+ANBmLQUQYD1ExD4A0GktBRBkPUTEPgDQeirFEEBOgAAQeSrFEGQshQ2AgBBkLIUC1YAQfirFC0AAARAQfSrFCgCAA8LQfi0FC0AAEUEQEH4tBRBAToAAAtB4LQUQaD1ExD4A0HstBRBrPUTEPgDQfirFEEBOgAAQfSrFEHgtBQ2AgBB4LQUCyUAQdisFC0AAEUEQEHMrBRB1MwTEO4DQdisFEEBOgAAC0HMrBQLrAEBA38CQCABEPYDIQIjAEEQayIEJAAgAkHw////A0kEQAJAIAJBAkkEQCAAIAI6AAsMAQsgBEEIaiACQQJPBH8gAkEEakF8cSIDIANBAWsiAyADQQJGGwVBAQtBAWoQwwIgACAEKAIIIgM2AgAgACAEKAIMQYCAgIB4cjYCCCAAIAI2AgQgAyEACyAAIAEgAhCKAiACQQJ0akEANgIAIARBEGokAAwBCxBVAAsLCgBBzKwUEO0CGgslAEH4rBQtAABFBEBB7KwUQajNExDuA0H4rBRBAToAAAtB7KwUCwoAQeysFBDtAhoLJQBBmKwULQAARQRAQYysFEGMzBMQ7gNBmKwUQQE6AAALQYysFAsKAEGMrBQQ7QIaCyUAQbisFC0AAEUEQEGsrBRBsMwTEO4DQbisFEEBOgAAC0GsrBQLCgBBrKwUEO0CGgsjAQJ/IAAhAQNAIAEiAkEEaiEBIAIoAgANAAsgAiAAa0ECdQscAEH4tBQhAANAIABBDGsQ7QIiAEHgtBRHDQALC7UBAQJ/AkAgARD2AyICIAAtAAtBgAFxQQd2BH8gACgCCEH/////B3FBAWsFQQELIgNNBEAgACgCACAAIAAtAAtBgAFxQQd2GyABIAJBAnQQSyEBAkAgAC0AC0GAAXFBB3YEQCAAIAI2AgQMAQsgACACOgALCyABIAJBAnRqQQA2AgAMAQsgACADIAIgA2sgACgCBCAALQALIgBB/wBxIABBgAFxQQd2GyIAQQAgACACIAEQxQQLCxwAQbC0FCEAA0AgAEEMaxDtAiIAQZCyFEcNAAsLHABB2K8UIQADQCAAQQxrEO0CIgBBsK4URw0ACwvOAQBB0KsULQAABEBBzKsUKAIADwtBqK4ULQAARQRAQaiuFEEBOgAAC0GArRRBwDoQhwRBjK0UQcc6EIcEQZitFEGlOhCHBEGkrRRBrToQhwRBsK0UQZw6EIcEQbytFEHOOhCHBEHIrRRBtzoQhwRB1K0UQdg9EIcEQeCtFEGMPhCHBEHsrRRBj8AAEIcEQfitFEGxwQAQhwRBhK4UQas7EIcEQZCuFEHePhCHBEGcrhRB7DsQhwRB0KsUQQE6AABBzKsUQYCtFDYCAEGArRQLswIAQeCrFC0AAARAQdyrFCgCAA8LQYCyFC0AAEUEQEGAshRBAToAAAtB4K8UQY86EIcEQeyvFEGGOhCHBEH4rxRB9z4QhwRBhLAUQcg+EIcEQZCwFEHVOhCHBEGcsBRBqcAAEIcEQaiwFEGXOhCHBEG0sBRBrzsQhwRBwLAUQeY8EIcEQcywFEHVPBCHBEHYsBRB3TwQhwRB5LAUQfA8EIcEQfCwFEGUPhCHBEH8sBRB08EAEIcEQYixFEGHPRCHBEGUsRRBtzwQhwRBoLEUQdU6EIcEQayxFEHcPRCHBEG4sRRBtT4QhwRBxLEUQf0+EIcEQdCxFEG9PRCHBEHcsRRB4jsQhwRB6LEUQac7EIcEQfSxFEHPwQAQhwRB4KsUQQE6AABB3KsUQeCvFDYCAEHgrxQLVgBB8KsULQAABEBB7KsUKAIADwtB2LQULQAARQRAQdi0FEEBOgAAC0HAtBRBj8MAEIcEQcy0FEGCwwAQhwRB8KsUQQE6AABB7KsUQcC0FDYCAEHAtBQLJABByKwULQAARQRAQbysFEH2wQAQU0HIrBRBAToAAAtBvKwUCwoAQbysFBDJAhoLIwBB6KwULQAARQRAQdysFEHBPRBTQeisFEEBOgAAC0HcrBQLCgBB3KwUEMkCGgsjAEGIrBQtAABFBEBB/KsUQdk6EFNBiKwUQQE6AAALQfyrFAsKAEH8qxQQyQIaCyQAQaisFC0AAEUEQEGcrBRBtsIAEFNBqKwUQQE6AAALQZysFAsKAEGcrBQQyQIaCxwAQdi0FCEAA0AgAEEMaxDJAiIAQcC0FEcNAAsLhwEBAn8CQCABEC8iAiAALQALQYABcUEHdgR/IAAoAghB/////wdxQQFrBUEKCyIDTQRAIAAgACgCACAAIAAtAAtBgAFxQQd2GyABIAIQSyACEJoCDAELIAAgAyACIANrIAAoAgQgAC0ACyIAQf8AcSAAQYABcUEHdhsiAEEAIAAgAiABEMQECwscAEGAshQhAANAIABBDGsQyQIiAEHgrxRHDQALCxwAQaiuFCEAA0AgAEEMaxDJAiIAQYCtFEcNAAsLCQAgABCLBBA0CxYAIABBwMsTNgIAIABBEGoQyQIaIAALBwAgACgCCAsHACAAKAIMCwwAIAAgAUEQahC8AwsLACAAQeDLExDuAwsLACAAQfTLExDuAwsJACAAEJIEEDQLFgAgAEGYyxM2AgAgAEEMahDJAhogAAsHACAALAAICwcAIAAsAAkLDAAgACABQQxqELwDCwoAIABBisAAEFMLCgAgAEGawAAQUwuPBAAjAEEQayIAJAAgACACNgIMIAAgBTYCCAJ/IAAgAjYCDCAAIAU2AgggACgCDCEBAkADQCABIANPBEBBACECDAILQQIhAiABKAIAIgFB///DAEsNASABQYBwcUGAsANGDQECQAJAIAFB/wBNBEBBASECIAYgACgCCCIFa0EATA0EIAAgBUEBajYCCCAFIAE6AAAMAQsgAUH/D00EQCAGIAAoAggiAmtBAkgNAiAAIAJBAWo2AgggAiABQQZ2QcABcjoAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAADAELIAYgACgCCCICayEFIAFB//8DTQRAIAVBA0gNAiAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBUEESA0BIAAgAkEBajYCCCACIAFBEnZB8AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEMdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBBGoiATYCDAwBCwtBAQwBCyACCyEBIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAIAELvQQBBX8jAEEQayIAJAAgACACNgIMIAAgBTYCCAJ/IAAgAjYCDCAAIAU2AggCQAJAA0ACQCAAKAIMIgEgA08NACAFIAZPDQAgASwAACIIQf8BcSECAkAgCEEATgRAQQEhCAwBC0ECIQogCEFCSQ0DIAhBX00EQCADIAFrQQJIDQUgAS0AASIIQcABcUGAAUcNBCAIQT9xIAJBBnRBwA9xciECQQIhCAwBCyAIQW9NBEAgAyABa0EDSA0FIAEtAAIhCSABLQABIQgCQAJAIAJB7QFHBEAgAkHgAUcNASAIQeABcUGgAUYNAgwHCyAIQeABcUGAAUYNAQwGCyAIQcABcUGAAUcNBQsgCUHAAXFBgAFHDQQgCUE/cSACQQx0QYDgA3EgCEE/cUEGdHJyIQJBAyEIDAELIAhBdEsNAyADIAFrQQRIDQQgAS0AAyELIAEtAAIhDCABLQABIQkCQAJAAkACQCACQfABaw4FAAICAgECCyAJQfAAakH/AXFBMEkNAgwGCyAJQfABcUGAAUYNAQwFCyAJQcABcUGAAUcNBAsgDEHAAXFBgAFHDQMgC0HAAXFBgAFHDQNBBCEIIAtBP3EgDEEGdEHAH3EgAkESdEGAgPAAcSAJQT9xQQx0cnJyIgJB///DAEsNAwsgBSACNgIAIAAgASAIajYCDCAAIAAoAghBBGoiBTYCCAwBCwsgASADSSEKCyAKDAELQQELIQEgBCAAKAIMNgIAIAcgACgCCDYCACAAQRBqJAAgAQsLACAEIAI2AgBBAwuOAwEEfyACIQADQAJAIAAgA08NACAEIAdNDQBBASEFAkAgACwAACIBQQBODQAgAUFCSQ0BIAFBX00EQCADIABrQQJIDQJBAiEFIAAtAAFBwAFxQYABRw0CDAELIAFB/wFxIQYgAUFvTQRAIAMgAGtBA0gNAiAALQACIQggAC0AASEBAkACQCAGQe0BRwRAIAZB4AFHDQEgAUHgAXFBoAFGDQIMBQsgAUHgAXFBgAFHDQQMAQsgAUHAAXFBgAFHDQMLQQMhBSAIQcABcUGAAUcNAgwBCyABQXRLDQEgAyAAa0EESA0BIAAtAAMhBSAALQACIQggAC0AASEBAkACQAJAAkAgBkHwAWsOBQACAgIBAgsgAUHwAGpB/wFxQTBPDQQMAgsgAUHwAXFBgAFHDQMMAQsgAUHAAXFBgAFHDQILIAhBwAFxQYABRw0BIAVBwAFxQYABRw0BQQQhBSAGQRJ0QYCA8ABxIAFBMHFBDHRyQf//wwBLDQELIAdBAWohByAAIAVqIQAMAQsLIAAgAmsLBABBBAvIBQEBfyMAQRBrIgAkACAAIAI2AgwgACAFNgIIAn8gACACNgIMIAAgBTYCCCAAKAIMIQICQANAIAIgA08EQEEAIQUMAgsCQAJAIAIvAQAiAUH/AE0EQEEBIQUgBiAAKAIIIgJrQQBMDQQgACACQQFqNgIIIAIgAToAAAwBCyABQf8PTQRAIAYgACgCCCICa0ECSA0CIAAgAkEBajYCCCACIAFBBnZBwAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgAUH/rwNNBEAgBiAAKAIIIgJrQQNIDQIgACACQQFqNgIIIAIgAUEMdkHgAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAADAELAkACQCABQf+3A00EQEEBIQUgAyACa0EESA0GIAIvAQIiCEGA+ANxQYC4A0cNASAGIAAoAghrQQRIDQYgACACQQJqNgIMIAAgACgCCCICQQFqNgIIIAIgAUEGdkEPcUEBaiICQQJ2QfABcjoAACAAIAAoAggiBUEBajYCCCAFIAJBBHRBMHEgAUECdkEPcXJBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgCEEGdkEPcSABQQR0QTBxckGAAXI6AAAgACAAKAIIIgFBAWo2AgggASAIQT9xQYABcjoAAAwDCyABQYDAA08NAQtBAgwFCyAGIAAoAggiAmtBA0gNASAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAALIAAgACgCDEECaiICNgIMDAELC0EBDAELIAULIQEgBCAAKAIMNgIAIAcgACgCCDYCACAAQRBqJAAgAQuaBQEDfyMAQRBrIgAkACAAIAI2AgwgACAFNgIIAn8gACACNgIMIAAgBTYCCAJAAkACQANAAkAgACgCDCIBIANPDQAgBSAGTw0AIAEsAAAiCEH/AXEhAiAAAn8gCEEATgRAIAUgAjsBACABQQFqDAELQQIhCiAIQUJJDQUgCEFfTQRAIAMgAWtBAkgNBSABLQABIghBwAFxQYABRw0EIAUgCEE/cSACQQZ0QcAPcXI7AQAgAUECagwBCyAIQW9NBEAgAyABa0EDSA0FIAEtAAIhCSABLQABIQgCQAJAIAJB7QFHBEAgAkHgAUcNASAIQeABcUGgAUYNAgwHCyAIQeABcUGAAUYNAQwGCyAIQcABcUGAAUcNBQsgCUHAAXFBgAFHDQQgBSAJQT9xIAhBP3FBBnQgAkEMdHJyOwEAIAFBA2oMAQsgCEF0Sw0FQQEhCiADIAFrQQRIDQMgAS0AAyEJIAEtAAIhCCABLQABIQECQAJAAkACQCACQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NCAwCCyABQfABcUGAAUcNBwwBCyABQcABcUGAAUcNBgsgCEHAAXFBgAFHDQUgCUHAAXFBgAFHDQUgBiAFa0EESA0DQQIhCiABQQx0QYCADHEgAkEHcSICQRJ0ckH//8MASw0DIAUgCEEEdkEDcSABQQJ0IgFBwAFxIAJBCHRyIAFBPHFyckHA/wBqQYCwA3I7AQAgACAFQQJqNgIIIAUgCEEGdEHAB3EgCUE/cXJBgLgDcjsBAiAAKAIMQQRqCzYCDCAAIAAoAghBAmoiBTYCCAwBCwsgASADSSEKCyAKDAILQQEMAQtBAgshASAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokACABC6MDAQR/QQAhASACIQADQAJAIAAgA08NACABIARPDQBBASEGAkAgACwAACIFQQBODQAgBUFCSQ0BIAVBX00EQCADIABrQQJIDQJBAiEGIAAtAAFBwAFxQYABRw0CDAELIAVB/wFxIQYgBUFvTQRAIAMgAGtBA0gNAiAALQACIQcgAC0AASEFAkACQCAGQe0BRwRAIAZB4AFHDQEgBUHgAXFBoAFGDQIMBQsgBUHgAXFBgAFHDQQMAQsgBUHAAXFBgAFHDQMLQQMhBiAHQcABcUGAAUcNAgwBCyAFQXRLDQEgAyAAa0EESA0BIAQgAWtBAkkNASAALQADIQcgAC0AAiEIIAAtAAEhBQJAAkACQAJAIAZB8AFrDgUAAgICAQILIAVB8ABqQf8BcUEwTw0EDAILIAVB8AFxQYABRw0DDAELIAVBwAFxQYABRw0CCyAIQcABcUGAAUcNASAHQcABcUGAAUcNASAGQRJ0QYCA8ABxIAVBMHFBDHRyQf//wwBLDQEgAUEBaiEBQQQhBgsgAUEBaiEBIAAgBmohAAwBCwsgACACawsJACAAEKEEEDQLIQAgAEHoyhM2AgAgACgCCBDTAkcEQCAAKAIIELkCCyAAC80FAQt/IwBBEGsiDSQAIAIhAQNAAkAgASADRgRAIAMhAQwBCyABKAIARQ0AIAFBBGohAQwBCwsgByAFNgIAIAQgAjYCAANAAkACQAJAIAIgA0YNACAFIAZGDQBBASEOIAAoAgghCCMAQRBrIhEkACARQQxqIAgQ6QIhEiABIAJrQQJ1IQ8gBiAFIghrIQpBACEMIwBBEGsiECQAAkAgBCgCACIJRQ0AIA9FDQAgCkEAIAgbIQoDQCAQQQxqIAggCkEESRsgCSgCABDdASILQX9GBEBBfyEMDAILIAgEfyAKQQNNBEAgCiALSQ0DIAggEEEMaiALECsaCyAKIAtrIQogCCALagVBAAshCCAJKAIARQRAQQAhCQwCCyALIAxqIQwgCUEEaiEJIA9BAWsiDw0ACwsgCARAIAQgCTYCAAsgEEEQaiQAIAwhCCASKAIAIgkEQEGMoBQoAgAaIAkEQEGMoBRBnKkUIAkgCUF/Rhs2AgALCyARQRBqJAACQAJAAkACQAJAIAhBAWoOAgAGAQsgByAFNgIAA0ACQCACIAQoAgBGDQAgBSACKAIAIAAoAggQowQiAUF/Rg0AIAcgBygCACABaiIFNgIAIAJBBGohAgwBCwsgBCACNgIADAELIAcgBygCACAIaiIFNgIAIAUgBkYNAiABIANGBEAgBCgCACECIAMhAQwHCyANQQxqQQAgACgCCBCjBCIBQX9HDQELQQIhDgwDCyANQQxqIQIgBiAHKAIAayABSQ0CA0AgAQRAIAItAAAhBSAHIAcoAgAiCEEBajYCACAIIAU6AAAgAUEBayEBIAJBAWohAgwBCwsgBCAEKAIAQQRqIgI2AgAgAiEBA0AgASADRgRAIAMhAQwFCyABKAIARQ0EIAFBBGohAQwACwALIAQoAgAhAgsgAiADRyEOCyANQRBqJAAgDg8LIAcoAgAhBQwACwALVQEBfyMAQRBrIgMkACADQQxqIAIQ6QIhAiAAIAEQ3QEhASACKAIAIgAEQEGMoBQoAgAaIAAEQEGMoBRBnKkUIAAgAEF/Rhs2AgALCyADQRBqJAAgAQuLBwEOfyMAQRBrIhEkACACIQkDQAJAIAMgCUYEQCADIQkMAQsgCS0AAEUNACAJQQFqIQkMAQsLIAcgBTYCACAEIAI2AgADQAJAAn8CQCACIANGDQAgBSAGRg0AIBEgASkCADcDCCAAKAIIIQgjAEEQayITJAAgE0EMaiAIEOkCIRQgCSACayEMQQAhCkEAIQ0jAEGQCGsiDiQAIA4gBCgCACIQNgIMIAYgBWtBAnVBgAIgBRshCyAFIA5BEGogBRshDwJAAkACQAJAIBBFDQAgC0UNAANAIAxBAnYhCAJAIAxBgwFLDQAgCCALTw0AIBAhCAwECyAPIA5BDGogCCALIAggC0kbIAEQugIhEiAOKAIMIQggEkF/RgRAQQAhC0F/IQoMAwsgCyASQQAgDyAOQRBqRxsiFWshCyAPIBVBAnRqIQ8gDCAQaiAIa0EAIAgbIQwgCiASaiEKIAhFDQIgCCEQIAsNAAsMAQsgECEICyAIRQ0BCwJAIAtFDQAgDEUNACAIIQ0gCiEIA0ACQAJAIA8gDSAMIAEQ1AEiCkECakECTQRAAkACQCAKQQFqDgIHAAELQQAhDQwCCyABQQA2AgAMAQsgDiAKIA1qIg02AgwgCEEBaiEIIAtBAWsiCw0BCyAIIQoMAwsgD0EEaiEPIAwgCmshDCAIIQogDA0ACwwBCyAIIQ0LIAUEQCAEIA02AgALIA5BkAhqJAAgCiEIIBQoAgAiCgRAQYygFCgCABogCgRAQYygFEGcqRQgCiAKQX9GGzYCAAsLIBNBEGokAAJAAkACQAJAIAhBf0YEQANAAkAgByAFNgIAIAIgBCgCAEYNAEEBIQYCQAJAAkAgBSACIAkgAmsgEUEIaiAAKAIIEKUEIgFBAmoOAwgAAgELIAQgAjYCAAwFCyABIQYLIAIgBmohAiAHKAIAQQRqIQUMAQsLIAQgAjYCAAwFCyAHIAcoAgAgCEECdGoiBTYCACAFIAZGDQMgBCgCACECIAMgCUYEQCADIQkMCAsgBSACQQEgASAAKAIIEKUERQ0BC0ECDAQLIAcgBygCAEEEajYCACAEIAQoAgBBAWoiAjYCACACIQkDQCADIAlGBEAgAyEJDAYLIAktAABFDQUgCUEBaiEJDAALAAsgBCACNgIAQQEMAgsgBCgCACECCyACIANHCyEAIBFBEGokACAADwsgBygCACEFDAALAAtZAQF/IwBBEGsiBSQAIAVBDGogBBDpAiEEIAAgASACIAMQ1AEhASAEKAIAIgAEQEGMoBQoAgAaIAAEQEGMoBRBnKkUIAAgAEF/Rhs2AgALCyAFQRBqJAAgAQuSAQEBfyMAQRBrIgUkACAEIAI2AgACf0ECIAVBDGpBACAAKAIIEKMEIgBBAWpBAkkNABpBASAAQQFrIgIgAyAEKAIAa0sNABogBUEMaiEBA38gAgR/IAEtAAAhACAEIAQoAgAiA0EBajYCACADIAA6AAAgAkEBayECIAFBAWohAQwBBUEACwsLIQEgBUEQaiQAIAELYwECfyAAKAIIIQEjAEEQayICJAAgAkEMaiABEOkCKAIAIgEEQEGMoBQoAgAaIAEEQEGMoBRBnKkUIAEgAUF/Rhs2AgALCyACQRBqJAAgACgCCCIARQRAQQEPCyAAEKgEQQFGC10BAn8jAEEQayIBJAAgAUEMaiAAEOkCIQBBBEEBQYygFCgCACgCABshAiAAKAIAIgAEQEGMoBQoAgAaIAAEQEGMoBRBnKkUIAAgAEF/Rhs2AgALCyABQRBqJAAgAguuAQEGfwNAAkAgBCAITQ0AIAIgA0YNAEEBIQcgACgCCCEGIwBBEGsiCSQAIAlBDGogBhDpAiEFQQAgAiADIAJrIAFBtKkUIAEbENQBIQYgBSgCACIFBEBBjKAUKAIAGiAFBEBBjKAUQZypFCAFIAVBf0YbNgIACwsgCUEQaiQAAkACQCAGQQJqDgMCAgEACyAGIQcLIAhBAWohCCAHIApqIQogAiAHaiECDAELCyAKCxUAIAAoAggiAEUEQEEBDwsgABCoBAsSACAEIAI2AgAgByAFNgIAQQMLRAAjAEEQayIAJAAgACAENgIMIAAgAyACazYCCCAAQQhqIgEgAEEMaiICIAEoAgAgAigCAEkbKAIAIQEgAEEQaiQAIAELJQBBACEAIAJB/wBNBH8gAkECdEHgwhNqKAIAIAFxQQBHBUEACwtJAQF/A0AgASACRkUEQEEAIQAgAyABKAIAIgRB/wBNBH8gBEECdEHgwhNqKAIABUEACzYCACADQQRqIQMgAUEEaiEBDAELCyACC0AAA0ACQCACIANHBH8gAigCACIAQf8ASw0BIABBAnRB4MITaigCACABcUUNASACBSADCw8LIAJBBGohAgwACwALQQACQANAIAIgA0YNAQJAIAIoAgAiAEH/AEsNACAAQQJ0QeDCE2ooAgAgAXFFDQAgAkEEaiECDAELCyACIQMLIAMLGwAgAUH/AE0EfyABQQJ0QdC2E2ooAgAFIAELCzwAA0AgASACRkUEQCABIAEoAgAiAEH/AE0EfyAAQQJ0QdC2E2ooAgAFIAALNgIAIAFBBGohAQwBCwsgAgsbACABQf8ATQR/IAFBAnRB0KoTaigCAAUgAQsLPAADQCABIAJGRQRAIAEgASgCACIAQf8ATQR/IABBAnRB0KoTaigCAAUgAAs2AgAgAUEEaiEBDAELCyACCyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAgsOACABIAIgAUGAAUkbwAs1AANAIAEgAkZFBEAgBCABKAIAIgAgAyAAQYABSRs6AAAgBEEBaiEEIAFBBGohAQwBCwsgAgsJACAAELkEEDQLKAEBfyAAQazCEzYCAAJAIAAoAggiAUUNACAALQAMRQ0AIAEQNAsgAAsfACABQQBOBH8gAUH/AXFBAnRB0LYTaigCAAUgAQvACzsAA0AgASACRkUEQCABIAEsAAAiAEEATgR/IABBAnRB0LYTaigCAAUgAAs6AAAgAUEBaiEBDAELCyACCx8AIAFBAE4EfyABQf8BcUECdEHQqhNqKAIABSABC8ALOwADQCABIAJGRQRAIAEgASwAACIAQQBOBH8gAEECdEHQqhNqKAIABSAACzoAACABQQFqIQEMAQsLIAILKgADQCABIAJGRQRAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBDAELCyACCwwAIAIgASABQQBIGws0AANAIAEgAkZFBEAgBCADIAEsAAAiACAAQQBIGzoAACAEQQFqIQQgAUEBaiEBDAELCyACCwkAIAAQwgQQNAu+AQEEfyAAQZjCEzYCACAAQQhqIQMDQCACIAAoAgwgACgCCCIBa0ECdUkEQCABIAJBAnRqKAIAIgEEQCABIAEoAgRBAWsiBDYCBCAEQX9GBEAgASABKAIAKAIIEQEACwsgAkEBaiECDAELCyAAQZgBahDJAhojAEEQayIBJAAgASADNgIMIAEoAgwiAigCAARAIAIQ4AMgASgCDCICQRBqIAIoAgAiAyACKAIIIANrQQJ1EOUDCyABQRBqJAAgAAsDAAALvQIBA38jAEEQayIIJAAgAkHu////ByABa00EQCAAKAIAIAAgAC0AC0GAAXFBB3YbIQkgCEEEaiABQeb///8DTQR/IAggAUEBdDYCDCAIIAEgAmo2AgQgCEEMaiICIAhBBGoiCiAKKAIAIAIoAgBJGygCACICQQtPBH8gAkEQakFwcSICIAJBAWsiAiACQQtGGwVBCgtBAWoFQe////8HCxCYAiAIKAIEIQIgBARAIAIgCSAEEOoBGgsgBgRAIAIgBGogByAGEOoBGgsgAyAEIAVqIgprIQcgAyAKRwRAIAIgBGogBmogBCAJaiAFaiAHEOoBGgsgAUEKRwRAIAkQNAsgACACNgIAIAAgCCgCCEGAgICAeHI2AgggACAEIAZqIAdqIgA2AgQgACACakEAOgAAIAhBEGokAA8LEFUAC8oCAQN/IwBBEGsiCCQAIAJB7v///wMgAWtNBEAgACgCACAAIAAtAAtBgAFxQQd2GyEJIAhBBGogAUHm////AU0EfyAIIAFBAXQ2AgwgCCABIAJqNgIEIAhBDGogCEEEaiAIKAIEIAgoAgxJGygCACICQQJPBH8gAkEEakF8cSICIAJBAWsiAiACQQJGGwVBAQtBAWoFQe////8DCxDDAiAIKAIEIQIgBARAIAIgCSAEEIoCGgsgBgRAIAIgBEECdGogByAGEIoCGgsgAyAEIAVqIgprIQcgAyAKRwRAIAIgBEECdCIDaiAGQQJ0aiADIAlqIAVBAnRqIAcQigIaCyABQQFHBEAgCRA0CyAAIAI2AgAgACAIKAIIQYCAgIB4cjYCCCAAIAQgBmogB2oiADYCBCACIABBAnRqQQA2AgAgCEEQaiQADwsQVQALuwIBAX8gAUG/hD1NBEAgAUGPzgBNBEAgAUHjAE0EQCABQQlNBEAgACABQTBqOgAAIABBAWoPCyAAIAEQxwQPCyABQecHTQRAIAAgAUHkAG4iAkEwajoAACAAQQFqIAJBnH9sIAFqEMcEDwsgACABEMgEDwsgAUGfjQZNBEAgACABQZDOAG4iAkEwajoAACAAQQFqIAJB8LF/bCABahDIBA8LIAAgARDJBA8LIAFB/8HXL00EQCABQf+s4gRNBEAgACABQcCEPW4iAkEwajoAACAAQQFqIAJBwPtCbCABahDJBA8LIAAgARDKBA8LIAFB/5Pr3ANNBEAgACABQYDC1y9uIgJBMGo6AAAgAEEBaiACQYC+qFBsIAFqEMoEDwsgACABQYDC1y9uIgAQxwQgAEGAvqhQbCABahDKBAsYACABQQF0QdD2E2oiASABQQJqIAAQ7wELGwAgACABQeQAbiIAEMcEIABBnH9sIAFqEMcECx0AIAAgAUGQzgBuIgAQxwQgAEHwsX9sIAFqEMgECx0AIAAgAUHAhD1uIgAQxwQgAEHA+0JsIAFqEMkEC4ACAQF/IwBBEGsiASQAQeLtEkELQQFByIIUEC0aIAFBADYCDEHIghQgAEEAEMwBGgJAAkBBlIMUKAIAIgBBAE4EQCAARQ0BQcSfFCgCACAAQf////97cUcNAQsCQEGYgxQoAgBBCkYNAEHcghQoAgAiAEHYghQoAgBGDQBB3IIUIABBAWo2AgAgAEEKOgAADAILEC4MAQtBlIMUQZSDFCgCACIAQf////8DIAAbNgIAAkACQEGYgxQoAgBBCkYNAEHcghQoAgAiAEHYghQoAgBGDQBB3IIUIABBAWo2AgAgAEEKOgAADAELEC4LQZSDFCgCABpBlIMUQQA2AgALEB0ACwkAQY8/EMsEAAsZACAABEBBiIYUKAIAEQkAQYnBABDLBAALCwoAQaztEhDLBAALCwAgACABQQAQ0AQLLQAgAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyAAKAIEIAEoAgQQwAFFC58BAQF/IwBBQGoiAyQAAn9BASAAIAFBABDQBA0AGkEAIAFFDQAaQQAgAUGw+hMQ0gQiAUUNABogA0EMakEAQTQQKRogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgA0EIaiACKAIAQQEgASgCACgCHBEKACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQAgA0FAayQAIAALuwIBBH8jAEFAaiICJAAgACgCACIDQQRrKAIAIQQgA0EIaygCACEFIAJCADcCHCACQgA3AiQgAkIANwIsIAJCADcCNEEAIQMgAkEANgA7IAJCADcCFCACQYD6EzYCECACIAA2AgwgAiABNgIIIAAgBWohAAJAIAQgAUEAENAEBEAgAkEBNgI4IAQgAkEIaiAAIABBAUEAIAQoAgAoAhQRDAAgAEEAIAIoAiBBAUYbIQMMAQsgBCACQQhqIABBAUEAIAQoAgAoAhgRDQACQAJAIAIoAiwOAgABAgsgAigCHEEAIAIoAihBAUYbQQAgAigCJEEBRhtBACACKAIwQQFGGyEDDAELIAIoAiBBAUcEQCACKAIwDQEgAigCJEEBRw0BIAIoAihBAUcNAQsgAigCGCEDCyACQUBrJAAgAws5ACAAIAEoAgggBRDQBARAIAEgAiADIAQQ1AQPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRDAALmgEAIABBAToANQJAIAAoAgQgAkcNACAAQQE6ADQCQCAAKAIQIgJFBEAgAEEBNgIkIAAgAzYCGCAAIAE2AhAgA0EBRw0CIAAoAjBBAUYNAQwCCyABIAJGBEAgACgCGCICQQJGBEAgACADNgIYIAMhAgsgACgCMEEBRw0CIAJBAUYNAQwCCyAAIAAoAiRBAWo2AiQLIABBAToANgsLigIAIAAgASgCCCAEENAEBEACQCABKAIEIAJHDQAgASgCHEEBRg0AIAEgAzYCHAsPCwJAIAAgASgCACAEENAEBEACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQIgAUEBNgIgDwsgASADNgIgAkAgASgCLEEERg0AIAFBADsBNCAAKAIIIgAgASACIAJBASAEIAAoAgAoAhQRDAAgAS0ANQRAIAFBAzYCLCABLQA0RQ0BDAMLIAFBBDYCLAsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQEgASgCGEECRw0BIAFBAToANg8LIAAoAggiACABIAIgAyAEIAAoAgAoAhgRDQALCzMAIAAgASgCCEEAENAEBEAgASACIAMQ1wQPCyAAKAIIIgAgASACIAMgACgCACgCHBEKAAtdAQF/IAAoAhAiA0UEQCAAQQE2AiQgACACNgIYIAAgATYCEA8LAkAgASADRgRAIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgACgCJEEBajYCJAsLGgAgACABKAIIQQAQ0AQEQCABIAIgAxDXBAsLRAAgACACAn9BACADRQ0AGiABQQh1IgIgAUEBcUUNABogAiADKAIAaigCAAsgA2ogBEECIAFBAnEbIAAoAgAoAhwRCgALegECfyAAIAEoAghBABDQBARAIAEgAiADENcEDwsgACgCDCEFIAAoAhAgACgCFCABIAIgAxDZBAJAIABBGGoiBCAAQRBqIAVBA3RqIgBPDQADQCAEKAIAIAQoAgQgASACIAMQ2QQgAS0ANg0BIARBCGoiBCAASQ0ACwsL4gQBBX8jAEFAaiIFJAACQCABQez8E0EAENAEBEAgAkEANgIAQQEhBAwBCwJ/IAAtAAhBGHEEQCAAIAFBARDQBAwBCwJAIAFFDQAgAUHg+hMQ0gQiBkUNACAAIAEgBigCCEEYcUEARxDQBCEDCyADCwRAQQEhBCACKAIAIgBFDQEgAiAAKAIANgIADAELIAFFDQAgAUGQ+xMQ0gQiAUUNACACKAIAIgMEQCACIAMoAgAiBzYCAAsgASgCCCIDIAAoAggiBkF/c3FBB3ENACADQX9zIAZxQeAAcQ0AQQEhBCAAKAIMIgMgASgCDCIAQQAQ0AQNACADQeD8E0EAENAEBEAgAEUNASAAQcT7ExDSBEUhBAwBC0EAIQQgA0UNACADQZD7ExDSBCIBBEAgBkEBcUUNAQJ/AkADQCAARQ0BIABBkPsTENIEIgBFDQEgACgCCCABKAIIIgNBf3NxDQFBASABKAIMIgIgACgCDCIAQQAQ0AQNAhogA0EBcUUNASACRQ0BIAJBkPsTENIEIgENAAsgAkGA/BMQ0gQiAUUNACABIAAQ3AQhBAsgBAshBAwBCyADQYD8ExDSBCIBBEAgBkEBcUUNASABIAAQ3AQhBAwBCyADQbD6ExDSBCIBRQ0AIABFDQAgAEGw+hMQ0gQiAEUNACAFQQxqQQBBNBApGiAFQQE2AjggBUF/NgIUIAUgATYCECAFIAA2AgggACAFQQhqIAdBASAAKAIAKAIcEQoAAkAgBSgCICIAQQFHDQAgAigCAEUNACACIAUoAhg2AgALIABBAUYhBAsgBUFAayQAIAQLTwEBfwJAIAFFDQAgAUGA/BMQ0gQiAUUNACABKAIIIAAoAghBf3NxDQAgACgCDCABKAIMQQAQ0ARFDQAgACgCECABKAIQQQAQ0AQhAgsgAgvWBAEDfyAAIAEoAgggBBDQBARAAkAgASgCBCACRw0AIAEoAhxBAUYNACABIAM2AhwLDwsCQCAAIAEoAgAgBBDQBARAAkAgAiABKAIQRwRAIAEoAhQgAkcNAQsgA0EBRw0CIAFBATYCIA8LIAEgAzYCICABKAIsQQRHBEAgAEEQaiIFIAAoAgxBA3RqIQdBACEDIAECfwJAA0ACQCAFIAdPDQAgAUEAOwE0IAUoAgAgBSgCBCABIAIgAkEBIAQQ3gQgAS0ANg0AAkAgAS0ANUUNACABLQA0BEBBASEDIAEoAhhBAUYNBEEBIQYgAC0ACEECcQ0BDAQLQQEhBiAALQAIQQFxRQ0DCyAFQQhqIQUMAQsLQQQgBkUNARoLQQMLNgIsIANBAXENAgsgASACNgIUIAEgASgCKEEBajYCKCABKAIkQQFHDQEgASgCGEECRw0BIAFBAToANg8LIAAoAgwhBiAAKAIQIAAoAhQgASACIAMgBBDfBCAAQRhqIgUgAEEQaiAGQQN0aiIGTw0AAkAgACgCCCIAQQJxRQRAIAEoAiRBAUcNAQsDQCABLQA2DQIgBSgCACAFKAIEIAEgAiADIAQQ3wQgBUEIaiIFIAZJDQALDAELIABBAXFFBEADQCABLQA2DQIgASgCJEEBRg0CIAUoAgAgBSgCBCABIAIgAyAEEN8EIAVBCGoiBSAGSQ0ADAILAAsDQCABLQA2DQEgASgCJEEBRgRAIAEoAhhBAUYNAgsgBSgCACAFKAIEIAEgAiADIAQQ3wQgBUEIaiIFIAZJDQALCwtBAQF/IAFBCHUhByAAIAIgAyABQQFxBH8gByAEKAIAaigCAAUgBwsgBGogBUECIAFBAnEbIAYgACgCACgCFBEMAAs/AQF/IAFBCHUhBiAAIAIgAUEBcQR/IAYgAygCAGooAgAFIAYLIANqIARBAiABQQJxGyAFIAAoAgAoAhgRDQALqQEAIAAgASgCCCAEENAEBEACQCABKAIEIAJHDQAgASgCHEEBRg0AIAEgAzYCHAsPCwJAIAAgASgCACAEENAERQ0AAkAgAiABKAIQRwRAIAEoAhQgAkcNAQsgA0EBRw0BIAFBATYCIA8LIAEgAjYCFCABIAM2AiAgASABKAIoQQFqNgIoAkAgASgCJEEBRw0AIAEoAhhBAkcNACABQQE6ADYLIAFBBDYCLAsLoQIBBn8gACABKAIIIAUQ0AQEQCABIAIgAyAEENQEDwsgAS0ANSEGIAAoAgwhCCABQQA6ADUgAS0ANCEHIAFBADoANCAAKAIQIAAoAhQgASACIAMgBCAFEN4EIAYgAS0ANSIKciEJIAcgAS0ANCILciEHAkAgAEEYaiIGIABBEGogCEEDdGoiCE8NAANAIAEtADYNAQJAIAsEQCABKAIYQQFGDQMgAC0ACEECcQ0BDAMLIApFDQAgAC0ACEEBcUUNAgsgAUEAOwE0IAYoAgAgBigCBCABIAIgAyAEIAUQ3gQgAS0ANSIKIAlyIQkgAS0ANCILIAdyIQcgBkEIaiIGIAhJDQALCyABIAlB/wFxQQBHOgA1IAEgB0H/AXFBAEc6ADQLHAAgACABKAIIIAUQ0AQEQCABIAIgAyAEENQECwsXACAARQRAQQAPCyAAQZD7ExDSBEEARwsFAEHgPQsGAEG1wQALBQBB4j4LCAAgABBaEDQLBwAgACgCBAuZAQEDfCAAIACiIgMgAyADoqIgA0R81c9aOtnlPaJE65wriublWr6goiADIANEff6xV+Mdxz6iRNVhwRmgASq/oKJEpvgQERERgT+goCEFIAMgAKIhBCACRQRAIAQgAyAFokRJVVVVVVXFv6CiIACgDwsgACADIAFEAAAAAAAA4D+iIAUgBKKhoiABoSAERElVVVVVVcU/oqChC5IBAQN8RAAAAAAAAPA/IAAgAKIiAkQAAAAAAADgP6IiA6EiBEQAAAAAAADwPyAEoSADoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAiACoiIDIAOiIAIgAkTUOIi+6fqovaJExLG0vZ7uIT6gokStUpyAT36SvqCioKIgACABoqGgoAsiAQF+IAEgAq0gA61CIIaEIAQgABEWACIFQiCIpyQBIAWnCxkAIAEgAiADrSAErUIghoQgBSAGIAARJQALGQAgASACIAMgBCAFrSAGrUIghoQgABEUAAsjACABIAIgAyAEIAWtIAatQiCGhCAHrSAIrUIghoQgABEdAAslACABIAIgAyAEIAUgBq0gB61CIIaEIAitIAmtQiCGhCAAER4ACxwAIAAgAUEIIAKnIAJCIIinIAOnIANCIIinECELC8/hE7oBAEGACAtw/oIrZUcVZ0AAAAAAAAA4QwAA+v5CLna/OjuevJr3DL29/f/////fPzxUVVVVVcU/kSsXz1VVpT8X0KRnERGBPwAAAAAAAMhC7zn6/kIu5j8kxIL/vb/OP7X0DNcIa6w/zFBG0quygz+EOk6b4NdVPwBB/ggLwhDwP26/iBpPO5s8NTP7qT327z9d3NicE2BxvGGAdz6a7O8/0WaHEHpekLyFf27oFePvPxP2ZzVS0ow8dIUV07DZ7z/6jvkjgM6LvN723Slr0O8/YcjmYU73YDzIm3UYRcfvP5nTM1vko5A8g/PGyj6+7z9te4NdppqXPA+J+WxYte8//O/9khq1jjz3R3IrkqzvP9GcL3A9vj48otHTMuyj7z8LbpCJNANqvBvT/q9mm+8/Dr0vKlJWlbxRWxLQAZPvP1XqTozvgFC8zDFswL2K7z8W9NW5I8mRvOAtqa6agu8/r1Vc6ePTgDxRjqXImHrvP0iTpeoVG4C8e1F9PLhy7z89Mt5V8B+PvOqNjDj5au8/v1MTP4yJizx1y2/rW2PvPybrEXac2Za81FwEhOBb7z9gLzo+9+yaPKq5aDGHVO8/nTiGy4Lnj7wd2fwiUE3vP43DpkRBb4o81oxiiDtG7z99BOSwBXqAPJbcfZFJP+8/lKio4/2Oljw4YnVuejjvP31IdPIYXoc8P6ayT84x7z/y5x+YK0eAPN184mVFK+8/XghxP3u4lryBY/Xh3yTvPzGrCW3h94I84d4f9Z0e7z/6v28amyE9vJDZ2tB/GO8/tAoMcoI3izwLA+SmhRLvP4/LzomSFG48Vi8+qa8M7z+2q7BNdU2DPBW3MQr+Bu8/THSs4gFChjwx2Ez8cAHvP0r401053Y88/xZksgj87j8EW447gKOGvPGfkl/F9u4/aFBLzO1KkrzLqTo3p/HuP44tURv4B5m8ZtgFba7s7j/SNpQ+6NFxvPef5TTb5+4/FRvOsxkZmbzlqBPDLePuP21MKqdIn4U8IjQSTKbe7j+KaSh6YBKTvByArARF2u4/W4kXSI+nWLwqLvchCtbuPxuaSWebLHy8l6hQ2fXR7j8RrMJg7WNDPC2JYWAIzu4/72QGOwlmljxXAB3tQcruP3kDodrhzG480DzBtaLG7j8wEg8/jv+TPN7T1/Aqw+4/sK96u86QdjwnKjbV2r/uP3fgVOu9HZM8Dd39mbK87j+Oo3EANJSPvKcsnXayue4/SaOT3Mzeh7xCZs+i2rbuP184D73G3ni8gk+dViu07j/2XHvsRhKGvA+SXcqkse4/jtf9GAU1kzzaJ7U2R6/uPwWbii+3mHs8/ceX1BKt7j8JVBzi4WOQPClUSN0Hq+4/6sYZUIXHNDy3RlmKJqnuPzXAZCvmMpQ8SCGtFW+n7j+fdplhSuSMvAncdrnhpe4/qE3vO8UzjLyFVTqwfqTuP67pK4l4U4S8IMPMNEaj7j9YWFZ43c6TvCUiVYI4ou4/ZBl+gKoQVzxzqUzUVaHuPygiXr/vs5O8zTt/Zp6g7j+CuTSHrRJqvL/aC3USoO4/7qltuO9nY7wvGmU8sp/uP1GI4FQ93IC8hJRR+X2f7j/PPlp+ZB94vHRf7Oh1n+4/sH2LwEruhrx0gaVImp/uP4rmVR4yGYa8yWdCVuuf7j/T1Aley5yQPD9d3k9poO4/HaVNudwye7yHAetzFKHuP2vAZ1T97JQ8MsEwAe2h7j9VbNar4etlPGJOzzbzou4/Qs+zL8WhiLwSGj5UJ6TuPzQ3O/G2aZO8E85MmYml7j8e/xk6hF6AvK3HI0Yap+4/bldy2FDUlLztkkSb2ajuPwCKDltnrZA8mWaK2ceq7j+06vDBL7eNPNugKkLlrO4//+fFnGC2ZbyMRLUWMq/uP0Rf81mD9ns8NncVma6x7j+DPR6nHwmTvMb/kQtbtO4/KR5si7ipXbzlxc2wN7fuP1m5kHz5I2y8D1LIy0S67j+q+fQiQ0OSvFBO3p+Cve4/S45m12zKhby6B8pw8cDuPyfOkSv8r3E8kPCjgpHE7j+7cwrhNdJtPCMj4xljyO4/YyJiIgTFh7xl5V17ZszuP9Ux4uOGHIs8My1K7JvQ7j8Vu7zT0buRvF0lPrID1e4/0jHunDHMkDxYszATntnuP7Nac26EaYQ8v/15VWve7j+0nY6Xzd+CvHrz079r4+4/hzPLkncajDyt01qZn+juP/rZ0UqPe5C8ZraNKQfu7j+6rtxW2cNVvPsVT7ii8+4/QPamPQ6kkLw6WeWNcvnuPzSTrTj01mi8R1778nb/7j81ilhr4u6RvEoGoTCwBe8/zd1fCtf/dDzSwUuQHgzvP6yYkvr7vZG8CR7XW8IS7z+zDK8wrm5zPJxShd2bGe8/lP2fXDLjjjx60P9fqyDvP6xZCdGP4IQ8S9FXLvEn7z9nGk44r81jPLXnBpRtL+8/aBmSbCxrZzxpkO/cIDfvP9K1zIMYioC8+sNdVQs/7z9v+v8/Xa2PvHyJB0otR+8/Sal1OK4NkLzyiQ0Ih0/vP6cHPaaFo3Q8h6T73BhY7z8PIkAgnpGCvJiDyRbjYO8/rJLB1VBajjyFMtsD5mnvP0trAaxZOoQ8YLQB8yFz7z8fPrQHIdWCvF+bezOXfO8/yQ1HO7kqibwpofUURobvP9OIOmAEtnQ89j+L5y6Q7z9xcp1R7MWDPINMx/tRmu8/8JHTjxL3j7zakKSir6TvP310I+KYro288WeOLUiv7z8IIKpBvMOOPCdaYe4buu8/Muupw5QrhDyXums3K8XvP+6F0TGpZIo8QEVuW3bQ7z/t4zvkujeOvBS+nK392+8/nc2RTTuJdzzYkJ6BwefvP4nMYEHBBVM88XGPK8Lz7z8AOPr+Qi7mPzBnx5NX8y49AAAAAAAA4L9gVVVVVVXlvwYAAAAAAOA/TlVZmZmZ6T96pClVVVXlv+lFSJtbSfK/wz8miysA8D8AAAAAAKD2PwBByRkLF8i58oIs1r+AVjcoJLT6PAAAAAAAgPY/AEHpGQsXCFi/vdHVvyD34NgIpRy9AAAAAABg9j8AQYkaCxdYRRd3dtW/bVC21aRiI70AAAAAAED2PwBBqRoLF/gth60a1b/VZ7Ce5ITmvAAAAAAAIPY/AEHJGgsXeHeVX77Uv+A+KZNpGwS9AAAAAAAA9j8AQekaCxdgHMKLYdS/zIRMSC/YEz0AAAAAAOD1PwBBiRsLF6iGhjAE1L86C4Lt80LcPAAAAAAAwPU/AEGpGwsXSGlVTKbTv2CUUYbGsSA9AAAAAACg9T8AQckbCxeAmJrdR9O/koDF1E1ZJT0AAAAAAID1PwBB6RsLFyDhuuLo0r/YK7eZHnsmPQAAAAAAYPU/AEGJHAsXiN4TWonSvz+wz7YUyhU9AAAAAABg9T8AQakcCxeI3hNaidK/P7DPthTKFT0AAAAAAED1PwBByRwLF3jP+0Ep0r922lMoJFoWvQAAAAAAIPU/AEHpHAsXmGnBmMjRvwRU52i8rx+9AAAAAAAA9T8AQYkdCxeoq6tcZ9G/8KiCM8YfHz0AAAAAAOD0PwBBqR0LF0iu+YsF0b9mWgX9xKgmvQAAAAAAwPQ/AEHJHQsXkHPiJKPQvw4D9H7uawy9AAAAAACg9D8AQekdCxfQtJQlQNC/fy30nrg28LwAAAAAAKD0PwBBiR4LF9C0lCVA0L9/LfSeuDbwvAAAAAAAgPQ/AEGpHgsXQF5tGLnPv4c8masqVw09AAAAAABg9D8AQckeCxdg3Mut8M6/JK+GnLcmKz0AAAAAAED0PwBB6R4LF/Aqbgcnzr8Q/z9UTy8XvQAAAAAAIPQ/AEGJHwsXwE9rIVzNvxtoyruRuiE9AAAAAAAA9D8AQakfCxegmsf3j8y/NISfaE95Jz0AAAAAAAD0PwBByR8LF6Cax/ePzL80hJ9oT3knPQAAAAAA4PM/AEHpHwsXkC10hsLLv4+3izGwThk9AAAAAADA8z8AQYkgCxfAgE7J88q/ZpDNP2NOujwAAAAAAKDzPwBBqSALF7DiH7wjyr/qwUbcZIwlvQAAAAAAoPM/AEHJIAsXsOIfvCPKv+rBRtxkjCW9AAAAAACA8z8AQekgCxdQ9JxaUsm/49TBBNnRKr0AAAAAAGDzPwBBiSELF9AgZaB/yL8J+tt/v70rPQAAAAAAQPM/AEGpIQsX4BACiavHv1hKU3KQ2ys9AAAAAABA8z8AQckhCxfgEAKJq8e/WEpTcpDbKz0AAAAAACDzPwBB6SELF9AZ5w/Wxr9m4rKjauQQvQAAAAAAAPM/AEGJIgsXkKdwMP/FvzlQEJ9Dnh69AAAAAAAA8z8AQakiCxeQp3Aw/8W/OVAQn0OeHr0AAAAAAODyPwBBySILF7Ch4+Umxb+PWweQi94gvQAAAAAAwPI/AEHpIgsXgMtsK03Evzx4NWHBDBc9AAAAAADA8j8AQYkjCxeAy2wrTcS/PHg1YcEMFz0AAAAAAKDyPwBBqSMLF5AeIPxxw786VCdNhnjxPAAAAAAAgPI/AEHJIwsX8B/4UpXCvwjEcRcwjSS9AAAAAABg8j8AQekjCxdgL9Uqt8G/lqMRGKSALr0AAAAAAGDyPwBBiSQLF2Av1Sq3wb+WoxEYpIAuvQAAAAAAQPI/AEGpJAsXkNB8ftfAv/Rb6IiWaQo9AAAAAABA8j8AQckkCxeQ0Hx+18C/9FvoiJZpCj0AAAAAACDyPwBB6SQLF+DbMZHsv7/yM6NcVHUlvQAAAAAAAPI/AEGKJQsWK24HJ76/PADwKiw0Kj0AAAAAAADyPwBBqiULFituBye+vzwA8CosNCo9AAAAAADg8T8AQcklCxfAW49UXry/Br5fWFcMHb0AAAAAAMDxPwBB6SULF+BKOm2Sur/IqlvoNTklPQAAAAAAwPE/AEGJJgsX4Eo6bZK6v8iqW+g1OSU9AAAAAACg8T8AQakmCxegMdZFw7i/aFYvTSl8Ez0AAAAAAKDxPwBBySYLF6Ax1kXDuL9oVi9NKXwTPQAAAAAAgPE/AEHpJgsXYOWK0vC2v9pzM8k3lya9AAAAAABg8T8AQYknCxcgBj8HG7W/V17GYVsCHz0AAAAAAGDxPwBBqScLFyAGPwcbtb9XXsZhWwIfPQAAAAAAQPE/AEHJJwsX4BuW10Gzv98T+czaXiw9AAAAAABA8T8AQeknCxfgG5bXQbO/3xP5zNpeLD0AAAAAACDxPwBBiSgLF4Cj7jZlsb8Jo492XnwUPQAAAAAAAPE/AEGpKAsXgBHAMAqvv5GONoOeWS09AAAAAAAA8T8AQckoCxeAEcAwCq+/kY42g55ZLT0AAAAAAODwPwBB6SgLF4AZcd1Cq79McNbleoIcPQAAAAAA4PA/AEGJKQsXgBlx3UKrv0xw1uV6ghw9AAAAAADA8D8AQakpCxfAMvZYdKe/7qHyNEb8LL0AAAAAAMDwPwBBySkLF8Ay9lh0p7/uofI0RvwsvQAAAAAAoPA/AEHpKQsXwP65h56jv6r+JvW3AvU8AAAAAACg8D8AQYkqCxfA/rmHnqO/qv4m9bcC9TwAAAAAAIDwPwBBqioLFngOm4Kfv+QJfnwmgCm9AAAAAACA8D8AQcoqCxZ4DpuCn7/kCX58JoApvQAAAAAAYPA/AEHpKgsXgNUHG7mXvzmm+pNUjSi9AAAAAABA8D8AQYorCxb8sKjAj7+cptP2fB7fvAAAAAAAQPA/AEGqKwsW/LCowI+/nKbT9nwe37wAAAAAACDwPwBByisLFhBrKuB/v+RA2g0/4hm9AAAAAAAg8D8AQeorCxYQayrgf7/kQNoNP+IZvQAAAAAAAPA/AEGeLAsC8D8AQb0sCwPA7z8AQcosCxaJdRUQgD/oK52Za8cQvQAAAAAAgO8/AEHpLAsXgJNYViCQP9L34gZb3CO9AAAAAABA7z8AQYotCxbJKCVJmD80DFoyuqAqvQAAAAAAAO8/AEGpLQsXQOeJXUGgP1PX8VzAEQE9AAAAAADA7j8AQcotCxYu1K5mpD8o/b11cxYsvQAAAAAAgO4/AEHpLQsXwJ8UqpSoP30mWtCVeRm9AAAAAABA7j8AQYkuCxfA3c1zy6w/ByjYR/JoGr0AAAAAACDuPwBBqS4LF8AGwDHqrj97O8lPPhEOvQAAAAAA4O0/AEHJLgsXYEbRO5exP5ueDVZdMiW9AAAAAACg7T8AQekuCxfg0af1vbM/107bpV7ILD0AAAAAAGDtPwBBiS8LF6CXTVrptT8eHV08BmksvQAAAAAAQO0/AEGpLwsXwOoK0wC3PzLtnamNHuw8AAAAAAAA7T8AQckvCxdAWV1eM7k/2ke9OlwRIz0AAAAAAMDsPwBB6S8LF2Ctjchquz/laPcrgJATvQAAAAAAoOw/AEGJMAsXQLwBWIi8P9OsWsbRRiY9AAAAAABg7D8AQakwCxcgCoM5x74/4EXmr2jALb0AAAAAAEDsPwBByTALF+DbOZHovz/9CqFP1jQlvQAAAAAAAOw/AEHpMAsX4CeCjhfBP/IHLc547yE9AAAAAADg6z8AQYkxCxfwI34rqsE/NJk4RI6nLD0AAAAAAKDrPwBBqTELF4CGDGHRwj+htIHLbJ0DPQAAAAAAgOs/AEHJMQsXkBWw/GXDP4lySyOoL8Y8AAAAAABA6z8AQekxCxewM4M9kcQ/eLb9VHmDJT0AAAAAACDrPwBBiTILF7Ch5OUnxT/HfWnl6DMmPQAAAAAA4Oo/AEGpMgsXEIy+TlfGP3guPCyLzxk9AAAAAADA6j8AQckyCxdwdYsS8MY/4SGc5Y0RJb0AAAAAAKDqPwBB6TILF1BEhY2Jxz8FQ5FwEGYcvQAAAAAAYOo/AEGKMwsWOeuvvsg/0SzpqlQ9B70AAAAAAEDqPwBBqjMLFvfcWlrJP2//oFgo8gc9AAAAAAAA6j8AQckzCxfgijztk8o/aSFWUENyKL0AAAAAAODpPwBB6TMLF9BbV9gxyz+q4axOjTUMvQAAAAAAwOk/AEGJNAsX4Ds4h9DLP7YSVFnESy29AAAAAACg6T8AQak0CxcQ8Mb7b8w/0iuWxXLs8bwAAAAAAGDpPwBByTQLF5DUsD2xzT81sBX3Kv8qvQAAAAAAQOk/AEHpNAsXEOf/DlPOPzD0QWAnEsI8AAAAAAAg6T8AQYo1Cxbd5K31zj8RjrtlFSHKvAAAAAAAAOk/AEGpNQsXsLNsHJnPPzDfDMrsyxs9AAAAAADA6D8AQck1CxdYTWA4cdA/kU7tFtuc+DwAAAAAAKDoPwBB6TULF2BhZy3E0D/p6jwWixgnPQAAAAAAgOg/AEGJNgsX6CeCjhfRPxzwpWMOISy9AAAAAABg6D8AQak2Cxf4rMtca9E/gRal982aKz0AAAAAAEDoPwBByTYLF2haY5m/0T+3vUdR7aYsPQAAAAAAIOg/AEHpNgsXuA5tRRTSP+q6Rrrehwo9AAAAAADg5z8AQYk3CxeQ3HzwvtI/9ARQSvqcKj0AAAAAAMDnPwBBqTcLF2DT4fEU0z+4PCHTeuIovQAAAAAAoOc/AEHJNwsXEL52Z2vTP8h38bDNbhE9AAAAAACA5z8AQek3CxcwM3dSwtM/XL0GtlQ7GD0AAAAAAGDnPwBBiTgLF+jVI7QZ1D+d4JDsNuQIPQAAAAAAQOc/AEGpOAsXyHHCjXHUP3XWZwnOJy+9AAAAAAAg5z8AQck4CxcwF57gydQ/pNgKG4kgLr0AAAAAAADnPwBB6TgLF6A4B64i1T9Zx2SBcL4uPQAAAAAA4OY/AEGJOQsX0MhT93vVP+9AXe7trR89AAAAAADA5j8AQak5C4u7EmBZ373V1T/cZaQIKgsKvVByb3BhZ2F0ZWRQb3NpdGlvblByb3BlcnR5AHJlbW92ZUVudGl0eQBpbmZpbml0eQBnZXRWZWxvY2l0eQBQb3NpdGlvblJlZ2lzdHJ5AEZlYnJ1YXJ5AEphbnVhcnkASnVseQBUaHVyc2RheQBUdWVzZGF5AFdlZG5lc2RheQBTYXR1cmRheQBTdW5kYXkATW9uZGF5AEZyaWRheQBNYXkAJW0vJWQvJXkAJTAxNmxseABhcnJheV9pbmRleABlcGhlbWVyaXNfc3RhcnRfaWR4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgATm92AFRodQBBdWd1c3QAdW5zaWduZWQgc2hvcnQAZXBoZW1lcmlzX3N0YXJ0AHVuc2lnbmVkIGludABPY3QAZmxvYXQAU2F0AHVpbnQ2NF90AFN1YmNsYXNzAGdldENvdmVyYWdlUG9zaXRpb25zAHNlbWlfbWlub3JfYXhpcwBzZW1pX21ham9yX2F4aXMAQXByAHZlY3RvcgBnZXRWZWxvY2l0eVBvaW50ZXIAT2N0b2JlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIARGVjZW1iZXIAdW5zaWduZWQgY2hhcgBNYXIAYWx0cABlcGhlbWVyaXNfc3RvcAB1bml4X3RpbWVzdGFtcABlcGhlbWVyaXNfc3RlcABTZXAAJUk6JU06JVMgJXAAaW5jbG8AZWNjbwBTdW4ASnVuAHN0ZDo6ZXhjZXB0aW9uAGdldFBvc2l0aW9uAEVudGl0eUNvbGxlY3Rpb24ATW9uAG5hbgBKYW4AUmVjZWl2ZWQ6ICVzXG4AcmFkaXVzZWFydGhrbQBKdWwAYm9vbAByZW1vdmVBbGwAQXByaWwAZW1zY3JpcHRlbjo6dmFsAEZyaQBiYWRfYXJyYXlfbmV3X2xlbmd0aABNYXJjaABBdWcAdW5zaWduZWQgbG9uZwB0ZXJtaW5hdGluZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlNGQtJTJkLSUyZFQlMmQ6JTJkOiVsZgAlLjBMZgAlTGYAc2l6ZQB0cnVlAFR1ZQB1cGRhdGUAZmFsc2UAdGFrZUJhc2UASnVuZQBnZXRQb3NpdGlvbkluUmVmZXJlbmNlRnJhbWUAZ2V0TmFtZQBkb3VibGUAdmlzaWJsZQBhcG9nZWUAcGVyaWdlZQBwZXJpb2QAdm9pZABub3JhZF9jYXRfaWQAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAFdlZABzdGQ6OmJhZF9hbGxvYwBwZXJpb2Rfc2VjAERlYwBGZWIAYWx0YQBFQ0NFTlRSSUNJVFkATUVBTl9BTk9NQUxZACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAE1FQU5fTU9USU9OX0RPVABNRUFOX01PVElPTl9ERE9UAEdNVAAlSDolTTolUwBBUkdfT0ZfUEVSSUNFTlRFUgBCU1RBUgBFTEVNRU5UX1NFVF9OTwBNRUFOX01PVElPTgBJTkNMSU5BVElPTgBOQU4AUE0AYWRkT01NAEdNAEFNAExDX0FMTABSRVZfQVRfRVBPQ0gATEFORwBJTkYARVBIRU1FUklTX1RZUEUAQ0xBU1NJRklDQVRJT05fVFlQRQBSQV9PRl9BU0NfTk9ERQBPQkpFQ1RfSUQATk9SQURfQ0FUX0lEAEMAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4ARGVsY1lhWWVKZ3plcGcyZ05iaWJFY0ZiTmVVZzlmQ2NHY0Rkd2ZGYVhnamJrYUJlVWZtYjFjWWNBaHlna2ZqY0lnQ2ZoZ1NmTWN3aGdjeWFWZ2dhMGVMZkVmQWg5ZlVmQ2VDaGdneWJXZlRhWWNBYk1oaGNBaE1mRGN6Zk5hUWNOZlFoMGdYaE9kVGdZZlhjTWhrYTRhdGFFZDFjSWR3Z0FlRmFJYytnRWRnZmtmbGNMY0JjSmZmZVVhamRaZ0tiSGJ4ZmRiVWJPZXdiRWVsaEJjeWM4Yk1hSmhUYThhS2FVaGphQmdiZVhoQWN0Y1ljRWdEYlVib2FOZnplVWJ1aEFjQ2NaY1FiVWh3ZG9jMGJEZkZhRWRVZUJkVWQwZ3hnSGFBZE1kcGNJZXlmQWhvY1ViamJNZElmTWhsYllhTmRDZ3hlQWRQYlZoQWZnYW9oTWVsaGtoMmJBaERnSWJRaERjQWc4Z3phVWhEaFVkTmhGZHpka2QyYkZiemFKY09kTGZSaE5hU2NNY0FmQmVTZlBhaGRJaEphSmRTYndmU2FYZTFlSWgyaFNiaGM4YlhmVmVEYnNnQmZKZFFjY2h2Y0RjQ2ZVZS9jQ2hsYklmd2dXYjFid2FMYldkQmNBZzFlS2REZWNmMWFMaGdnQWVtZFVlRmNNZUtjTmZBYnhjUmVGZUFjVmJOYk1oUmV3Z0RoS2NTaE1lZ2VLZEZoSWN6ZENlRGhKZFdnRGZRZnNlUWFEYzFoUWhJZktoRGdKZFplTmFnYkFoeWJFaEFid2dQY01mMWFBYTFhRGNSYWNiNWhOaGhoY2N5YVRmaWQwZ1RjVWdqY0FlQWNVaGpkNGJTZUNiU2NVZnNjRWhsZjlhU2FOZmtib2JmaEZoMWZRaDdhQWRTYlVjSGFMZXdjd2hsZ1Bld2VwZlNiTWRGaHRnY2ZDZDFhZ2RRZk5jU2hnaDNjTmVTZTRlQWRKaGxoQmZUYUNiamFRYk1hVWdSZVFiRmhUZFRoRWJjaEFkeWJrZ2pnSWNDYmhnU2ZNZHdnZ2V5aFZkZ2cwY0xoRWFBYzlhVWRDZUNoZ2N5ZldhVGRZY0FlTWZoZEFlTWREZHpjTmdRZ05jUWQwY1hhT2hUaFlnWGZNYmtmNGR0YUVnMWhJYXdnQWJGaEljK2JFaGdha2ZsZExoQmVKZWZhVWNqYlpnS2VIYXhnZGJVaE9hd2NFZWxoQmR5YjhhTWdKY1RnOGNLYVVoamRCZmJnWGFBYXRoWWFFaERoVWVvZU5oemRVaHVkQWJDYVpkUWJVY3dob2YwY0RkRmFFZlVkQmdVZzBoeGVIaEFiTWhwZ0lkeWFBZm9jVWZqY01lSWJNZmxoWWZOZENkeGhBZlBjVmdBYmdhb2dNZmxoa2UyZ0FoRGJJZlFjRGVBZDhlemVVY0RmVWdOZ0ZmemRrYTJjRmh6ZUphT2FMZVJoTmJTZ01kQWVCZFNjUGZoZUllSmZKaFNmd2ZTYlhkMWZJZjJiU2VoYThjWGhWZ0Rmc2RCY0poUWRjZXZkRGdDY1VhL2FDYWxkSWN3YldnMWR3YUxiV2NCYkFmMWFLYURnY2cxYUxoZ2NBZ21oVWFGZE1iS2hOZkFheGFSZkZlQWZWZk5iTWFSY3dnRGhLZ1NlTWhnZ0tjRmdJaHpkQ2VEZUpoV2ZEaFFkc2FRZERnMWhRY0lkS2ZEYUphWmZOZWdlQWh5YkVoQWd3ZlBhTWIxaEFnMWZEZVJkY2Q1Y05oaGhjYnlhVGhpYjBkVGFVZmpkQWVBYVVmamQ0ZlNiQ2NTYlVoc2NFZmxkOWdTYk5ia2NvZmZnRmExZlFlN2hBYVNhVWVIYkxmd2J3Y2xlUGV3YnBjU2RNZkZldGZjZkNjMWVnZ1FlTmFTZGdjM2hOY1NiNGhBaEpibGdCY1RiQ2dqZVFmTWJVYVJlUWRGYlRjVGFFYWNiQWV5ZGtmamFJaENlaGNTZU1kd2JnZXloVmdnYzBlTGZFZUFnOWFVZENjQ2ZnaHliV2hUZVloQWJNZWhlQWJNYkRhemZOZVFoTmJRaDBkWGFPZVRmWWFYYk1ka2g0YXRoRWExZElkd2NBZ0ZnSWgrZ0VhZ2hrYWxhTGJCYkpmZmJVYmphWmdLY0hoeGFkYlVmT2F3ZUVnbGFCYnlhOGVNaEpjVGE4YktjVWVqZkJjYmdYZkFldGhZZkVhRGJVZW9iTmR6Z1VidWJBaENkWmZRYVVld2dvZDBnRGRGYkVnVWdCZVVhMGJ4YkhhQWVNZnBkSWd5Z0Fob2ZVYmpnTWZJZE1obGZZZ05kQ2F4ZUFjUGNWZkFiZ2VvZU1mbGFrYzJoQWZEYUlhUWJEYkFiOGZ6aFVkRGhVZU5hRmd6ZWtoMmZGYXpjSmJPYkxmUmZOZVNoTWRBZUJlU2FQZWhlSWNKZEpjU2Z3ZFNmWGMxY0liMmdTYmhmOGdYYVZhRGVzZUJjSmhRZmNndmJEYkNlVWMvaENkbGRJY3diV2QxYndnTGRXY0JhQWgxYktjRGRjYzFnTGhnYUFnbWNVYkZhTWJLZk5iQWN4ZFJkRmZBaFZjTmJNaFJod2JEZ0tlU2RNZmdiS2RGYUljemZDZERiSmdXaERmUWdzaFFlRGQxZVFiSWhLYURlSmdaZk5nZ2JBZnlmRWJBZ3doUGVNZjFnQWYxY0RmUmFjZjViTmRoZWNkeWZUYmloMGFUZVViamRBYkFhVWdqZzRiU2ZDZVNlVWdzYUVmbGE5ZlNoTmVrZ29hZmVGYTFiUWU3ZEFkU2ZVaEhiTGR3ZndlbGZQYndjcGJTYU1iRmJ0ZmNmQ2UxYmdkUWFOZ1NlZ2czZk5iU2Q0aEFoSmVsYUJiVGRDaGplUWNNZlVnUmFRY0ZlVGVUZ0VnY2RBaHlma2JqZUljQ2NoZ1NlTWZ3YWdieWJWYmdmMGdMaEVlQWg5Y1VlQ2RDZWdjeWJXYlRnWWNBaE1kaGhBaE1jRGJ6aE5kUWhOZVFiMGNYZk9iVGRZaFhnTWJrZjRjdGFFYzFiSWZ3aEFhRmdJZCtjRWVnZmtnbGVMZUJnSmRmYlVmamhaY0tlSGF4ZmRnVWdPZXdiRWJsaEJneWg4Z01mSmJUYzhmS2JVYWphQmdiaFhiQWF0YVliRWdEZFVhb2NOaHpiVWJ1YUFjQ2JaY1FnVWR3Y29jMGVEYkZmRWdVZEJnVWEwZHhoSGJBaE1mcGZJZXliQWhvZFVnamRNY0llTWZsaFlmTmZDZXhoQWdQY1ZjQWFnZW9jTWhsZGtmMmZBZURlSWhRYkRlQWE4Z3phVWdEYVViTmVGYnpha2EyZkZlemFKZU9lTGhSZ05mU2ZNZUFlQmhTYVBkaGdJYUpkSmhTY3dlU2dYZzFkSWYyZlNjaGU4Z1hoVmREYXNhQmFKZlFjY2d2Y0RjQ2RVaC9jQ2FsZElld2ZXZTFnd2VMZ1doQmhBZDFkS2VEZWNhMWJMZmdlQWVtZlVoRmFNaEtjTmdBZHhoUmJGYUFiVmROZ01jUmV3Y0RjS2ZTZE1iZ2NLZUZmSWV6ZENkRGRKZVdiRGNRYXNiUWVEZjFnUWVJYktjRGZKYlpmTmZnZEFoeWZFZUFmd2hQZk1lMWNBYjFnRGFSaGNkNWJOY2hjY2N5ZFRkaWEwY1RiVWVqZkFlQWJVZGpjNGFTaENhU2VVaHNiRWJsZjljU2dOZGthb2dmZkZhMWFRZjdkQWhTY1VkSGJMYndjd2RsZVBhd2FwYVNmTWRGZXRoY2JDZzFnZ2RRZU5nU2JnYjNkTmZTYjRlQWVKZWxiQmJUZUNiamFRZ01mVWFSYlFhRmZUZVRiRWRjZ0FjeWJrZ2piSWJDZWhmU2JNZXdjZ2Z5ZFZjZ2IwYkxoRWFBZDloVWJDZUNlZ2h5YVdjVGZZaEFjTWNoZEFjTWVEZ3pkTmVRYU5mUWEwZlhoT2FUZFlnWGJNZWtmNGZ0YkVlMWZJZXdoQWdGZklmK2dFZmdha2JsZUxmQmNKY2ZmVWNqYlpiS2hIaHhhZGZVZE9ld2JFaGxlQmF5ZzhiTWJKY1RlOGVLZlVhamhCZGJnWGVBZHRmWWVFY0RlVWVvYU5jemVVY3VhQWFDZFpkUWFVY3dlb2IwZ0RmRmRFZlVoQmhVZzBmeGNIYkFmTWZwZklheWJBZm9lVWhqZE1iSWZNYmxlWWhOYUNoeGVBZFBjVmdBZ2dkb2hNY2xoa2cyYkFnRGNJZVFkRGZBYjhiemZVYkRmVWROYUZlemFrZDJmRmV6aEphT2VMZFJmTmRTZ01nQWNCaFNoUGVoZklnSmJKYlNkd2NTYVhmMWdJYTJjU2ZoYjhjWGFWaERlc2NCZkpoUWVjYXZjRGNDZFVjL2JDZmxmSWR3Y1dhMWR3ZExoV2ZCY0FhMWdLY0RhY2IxZ0xjZ2ZBZG1nVWhGZk1hS2FOYUFieGRSYkZmQWVWY05lTWRSaHdjRGVLZlNlTWJnaEthRmFJY3pjQ2hEZ0piV2FEZFFkc2FRZ0RkMWJRZUlnS2VEZUpkWmFOYWdnQWV5aEVhQWN3Z1BoTWgxZUFlMWJEaFJjY2Q1aE5maGhjY3ljVGZpYTBhVGJVYWpjQWRBZVVmamU0Y1NkQ2hTYVVhc2hFYWxhOWVTZk5ha2hvZGZjRmExZlFmN2ZBZlNjVWdIY0xkd2Z3YmxiUGR3Y3BmU2FNY0ZkdGVjZUNoMWVnYVFhTmVTZmdmM2FOYVNmNGJBY0phbGZCZVRmQ2hqY1FkTWRVZlJkUWRGYVRnVGJFZ2NoQWh5ZGthamZJaENkaGhTZU1id2RnY3lnVmVnZTBlTGNFYkFnOWVVZ0NiQ2RnYXllV2FUYllkQWVNYmhjQWdNZURhemFOZFFkTmhRZTBhWGhPZ1RiWWdYZE1ja2Q0Z3RiRWQxYklod2VBZUZnSWYrYkVnZ2FrY2xnTGJCYUpoZmRVZmpmWmdLYUhheGVkYlViT2Z3ZkVlbGZCZnlnOGZNZ0poVGU4ZEtlVWZqYUJkYmVYZUFodGRZYkVnRGNVaG9jTmZ6ZlVndWVBYUNlWmVRZFVld2ZvaDBoRGVGYkVjVWNCZ1VhMGJ4ZkhlQWRNZHBmSWV5ZEFib2JVYmplTWNJZE1obGVZZ05iQ2Z4ZkFoUGdWZ0FhZ2ZvY01nbGNrZDJjQWVEY0lkUWdEYkFhOGJ6aFVjRGZVaE5jRmR6ZWtmMmJGY3poSmZPYUxkUmJOaFNlTWNBZUJoU2JQaGhiSWJKYkpiU2J3YlNiWGYxZElmMmZTZ2hoOGVYYVZjRGZzZkJlSmZRZGNkdmREZENmVWMvY0NhbGVJZHdhV2IxZ3dkTGVXZEJoQWExYktkRGZjZDFkTGFnZ0FnbWNVZEZnTWRLZU5nQWR4ZVJkRmZBYlZlTmRNY1Jmd2dEZEtjU2dNZGdmS2dGZElmemhDY0RkSmZXY0RiUWhzY1FiRGExZlFnSWZLZURmSmZaZE5lZ2FBYnljRWVBZHdmUGdNYzFjQWUxYURjUmhjZjVjTmZoZ2NoeWVUZWlnMGNUY1VnamRBZUFmVWNqYjRjU2ZDY1NkVWJzZ0VmbGM5YVNhTmNrZ29oZmJGZjFjUWM3aEFoU2NVYkhiTGd3ZndobGZQZ3dicGdTZ01lRmJ0ZWNoQ2IxY2doUWVOZlNnZ2QzZE5kU2Y0YUFjSmhsaEJhVGRDZGplUWdNYVVmUmNRYkZoVGZUZEVkY2VBYXlka2hqaEloQ2NoYlNkTWh3YWdkeWdWZ2dnMGNMZkVmQWc5ZFViQ2ZDYmdoeWFXYVRjWWhBYk1haGNBZU1mRGh6Yk5hUWNOZFFhMGdYYk9hVGRZY1hmTWRrZjRidGdFZTFlSWh3Z0FkRmRJYitkRWJnZWtibGdMYkJoSmJmZVVkamFaaEtjSGF4Z2RkVWhPZ3dlRWdsYUJheWE4aE1oSmFUZjhoS2VVaGpmQmNiYlhmQWR0Y1lnRWdEZVVib2FOZXphVWR1ZkFmQ2haZVFnVWV3YW9mMGREZ0ZkRWNVYkJiVWQwZnhlSGdBZ01mcGNJZ3ljQWhvY1VmamRNZ0ljTWhsYVlmTmJDYXhhQWJQZVZlQWFnZG9hTWhsYWtkMmdBZURnSWhRZURmQWc4YXpnVWdEZlVkTmVGZHpka2MyaEZlemZKZU9lTGZSZk5oU2FNZ0FjQmhTYlBjaGJJZ0pjSmFTZndjU2JYZDFjSWUyYVNlaGc4YlhkVmJEY3NnQmRKY1FhY2R2Z0RoQ2JVYy9nQ2JsZklid2ZXYzFld2VMYldkQmJBYzFjS2FEZWNiMWFMY2dmQWNtZVVjRmVNaEtmTmFBYnhlUmFGY0FkVmNOZU1mUmF3ZkRhS2VTZ01kZ2FLZkZhSWN6aENkRGNKYldmRGFRZ3NiUWNEYjFoUWhJYUtmRGFKZFpkTmVnaEFoeWJFYkFod2RQYU1hMWFBYjFiRGdSZ2NkNWdOZWhhY2h5ZVRoaWcwZ1RkVWZqZUFnQWhVZmplNGJTZkNoU2FVYXNkRWRsZzllU2ROY2tjb2hmZEZhMWZRYTdmQWFTY1VhSGFMZ3dod2dsYlBld2FwYVNnTWVGY3RmY2NDZTFnZ2NRYk5nU2JnYTNjTmNTZDRmQWJKYmxjQmhUYUNoamZRaE1lVWRSY1FkRmVUY1RhRWdjYkFieWVraGpoSWVDZmhjU2dNYndlZ2R5Z1ZlZ2MwY0xmRWFBZjliVWdDaENlZ2Z5ZFdhVGdZYUFiTWdoZUFiTWFEaHpiTmZRZU5jUWgwZVhoT2NUY1lhWGJNZGtiNGZ0aEVmMWZJZHdkQWZGZUlkK2RFZmdha2hsZUxmQmVKZWZiVWZqaFpnS2ZIYXhlZGJVZ09od2hFYmxiQmZ5ZDhoTWZKaFRmOGFLZVVmamNCZ2JmWGFBZXRhWWJFYkRlVWVvZ05jemNVY3VnQWZDY1pjUWVVYndob2cwYURiRmJFZFVmQmhVYzBleGRIZ0FoTWdwZEljeWhBZ29hVWVqaE1mSWJNZGxlWWJOZUNoeGVBYlBmVmRBZ2dib2VNZ2xna2gyZkFoRGdJZFFmRGVBYThjemJVaERlVWROYUZiemVrZzJnRmJ6Z0pjT2RMZ1JlTmJTYU1kQWNCaFNmUGhoaElhSmZKYlNkd2hTYlhhMWRJYjJhU2NoYjhoWGJWZURhc2ZCY0phUWhjZ3ZhRGhDYVVmL2ZDaGxhSWJ3Z1doMWR3YkxiV2NCZ0FiMWhLY0RnY2UxZ0xoZ2dBY21oVWRGYk1nS2JOYkFneGJSYUZjQWRWaE5jTWJSZHdmRGFLY1NhTWFnY0tiRmVJYXpoQ2VEZUpiV2ZEZVFhc2RRYkRoMWhRZ0llS2dEZ0plWmdOaGdiQWZ5aEVjQWJ3YlBhTWUxaEFjMWNEaFJiY2I1aE5naGZjYnlmVGJpYzBmVGdVYWpkQWVBZ1VjamQ0Z1NnQ2NTZVVjc2hFZmxjOWdTZE5oa2JvZGZhRmUxZlFhN2RBZVNhVWNIYUxid2h3aGxhUGZ3ZHBlU2FNY0ZndGZjYkNmMWRnZ1FkTmVTZmdjM2JOYVNhNGJBYkpkbGRCZlRjQ2ZqaFFnTWJVYlJmUWFGZVRoVGNFY2NnQWJ5Z2thamNJYkNoaGdTZk1ld2hnZHljVmRnYjBmTGNFaEFkOWJVZUNlQ2hnaHlmV2JUY1lmQWZNZGhjQWFNaERmemFOYlFhTmVRYTBmWGJPZlRlWWZYY01na2c0YnRjRWgxZUlid2FBZEZlSWgrYUVnZ2drY2xhTGFCaEpoZmdVZmpjWmFLZ0hheGdkYVViT2F3Z0VlbGZCY3lhOGZNZEpoVGc4ZEtlVWhqZEJlYmFYYUFjdGNZZ0VhRGdVZG9kTmF6Z1VodWJBZENhWmFRZVVhd2NvYjBlRGFGZUVmVWJCZlVhMGZ4Y0hkQWNNY3BoSWd5ZkFjb2VVZmpkTWZJaE1jbGVZYU5lQ2d4YkFlUGdWZkFiZ2dvZU1obGNrZTJhQWVEZklhUWhEZkFmOGR6Y1VhRGJVY05oRmh6ZmthMmZGaHpmSmVPZ0xiUmZOaFNiTWFBYUJiU2VQYWhkSWFKYkpiU2F3ZFNnWGExY0lkMmhTYmhiOGZYZVZmRGhzZkJlSmVRZmNkdmJEaENhVWIvYUNlbGFJaHdmV2UxY3dlTGVXaEJoQWQxZEtmRGdjYzFoTGhnZkFibWNVaEZjTWFLaE5iQWZ4aFJnRmFBYVZkTmNNYlJhd2VEYktoU2RNZmdmS2RGZElhemhDZURkSmNXaERnUWRzZlFnRGgxZ1FkSWhLZ0RmSmRaaE5oZ2dBaHlkRWJBYndnUGhNaDFoQWcxZ0RkUmFjYTViTmVoZWNleWVUYmlhMGFUZ1ViamhBZ0FhVWNqYjRmU2VDZFNnVWZzYkVkbGY5aFNjTmJrYW9oZmhGZTFlUWM3YkFmU2VVYUhhTGF3Z3djbGVQY3dncGNTZU1iRmZ0aGNkQ2QxZWdkUWZOZVNnZ2gzZU5kU2Y0Y0FmSmdsYUJnVGFDZWpjUWNNaFVkUmNRZkZmVGdUZ0VmY2hBY3lma2JqZklhQ2RoaFNjTWJ3Y2dleWVWZGdmMGNMZ0VmQWc5ZFVlQ2RDaGdheWFXaFRmWWdBZU1kaGRBZ01lRGZ6Z05jUWFOZVFjMGFYYU9kVGhZYlhkTWVrYzRmdGZFZjFmSWV3YUFnRmdJYStoRWRnYWtnbGZMYkJiSmFmZFVlamNaaEtiSGZ4ZmRiVWdPZndjRWdsaEJheWE4Z01jSmJUaDhjS2VVYWpkQmhiZFhmQWR0Y1lhRWVEYVVjb2JOaHpjVWN1Y0FmQ2VaY1FmVWJ3aG9lMGhEZEZnRWNVZ0JlVWgwZXhoSGJBZE1kcGZJY3loQWFvZVVkamdNY0lnTWhsZFloTmdDZHhkQWJQYVZoQWVnYW9kTWVsZ2thMmRBZ0RlSWhRZERmQWE4Z3pmVWdEY1VnTmJGZHpla2UyZUZkemRKaE9iTGFSZk5lU2FNYUFhQmdTYVBmaGJJY0phSmZTaHdmU2dYYTFmSWcyZFNiaGY4Z1hmVmhEYXNjQmhKYVFnY2J2Z0RjQ2RVYy9hQ2RsYklnd2RXaDFmd2VMZVdjQmRBYTFoS2NEZWNlMWJMZGdlQWJtZ1VlRmZNaEtkTmZBYnhmUmJGYkFhVmhOYk1oUmd3Y0RlS2hTaE1lZ2RLZkZoSWd6ZkNiRGFKZ1dnRGZRY3NhUWhEZDFiUWdJZktkRGFKZlpjTmZnZ0FoeWFFZkFod2dQYU1nMWJBYjFiRGFSYWNiNWJOZWhlY2h5YVRhaWQwZlRjVWZqYUFiQWRVZ2poNGNTZENlU2RVYXNmRWJsZjlhU2hOZWtib2RmYUZlMWdRYzdjQWZTZ1VnSGZMaHdjd2RsaFBhd2VwYlNjTWhGYXRjY2RDZjFnZ2VRYU5hU2dnYTNjTmFTYjRlQWhKYmxhQmZUaENiamNRY01mVWZSZVFiRmFUZ1RiRWJjYUFkeWJraGpiSWRDaGhjU2JNaHdlZ2R5Z1ZhZ2EwYUxoRWZBaDlnVWZDY0NjZ2V5ZldmVGhZYkFoTWNoYkFiTWJEZHpoTmNRZU5mUWYwYlhhT2dUZFlmWGFNYmtkNGh0Z0VlMWRJYXdjQWJGZkljK2hFYmdja2FsZkxiQmhKZGZkVWhqY1pnS2dIZHhnZGdVYU9hd2VFYmxkQmR5YzhlTWRKZFRhOGJLZVVjamRCYWJmWGZBZXRlWWFFaERkVWdvZE5nemdVZHVoQWJDZlpiUWNVYndjb2QwY0RmRmZFY1VlQmdVZTBoeGZIYkFkTWhwYklkeWhBY29hVWRqZk1kSWNNZmxiWWVOZUNieGNBZ1BhVmRBZWdjb2FNY2xia2IyZ0FiRGFJY1FoRGJBYThlemFVZURlVWROZkZiemdrZTJkRmV6ZUpkT2hMYVJmTmFTY01mQWJCY1NlUGJoZklhSmdKZ1Nod2JTZFhhMWdJYzJjU2ZoYzhiWGRWaERkc2FCaEplUWVjYnZiRGdDZ1VnL2FDZGxkSWR3Z1dkMWV3YUxkV2FCYkFnMWJLaERiY2MxZUxlZ2RBZ21jVWhGZk1nS2ZOYUFheGJSYkZkQWNWZE5oTWdSZ3djRGFLYlNoTWhnYktoRmhJaHpmQ2dEYUphV2ZEYlFic2FRYkRmMWRRZkljS2NEZ0plWmFOZWdjQWR5Z0VkQWF3Z1BhTWUxYUFlMWVEYVJoY2I1Yk5haGFjaHliVGFpYjBhVGVVZGpoQWdBZFVnamg0Y1NoQ2dTaFVmc2FFYWxiOWJTaE5ka2dvY2ZkRmUxY1FjN2ZBZlNnVWRIaExid2N3YWxhUGF3Z3BkU2JNZUZldGhjY0NmMWVnZVFnTmNTYWdlM2VOZ1NnNGFBZ0phbGFCYVRjQ2hqZFFiTWZVYlJlUWZGZlRoVGZFZWNjQWh5YWthamNJZkNiaGFTZU1hd2VnZnlhVmdnZzBlTGJFZkFkOWFVYUNjQ2dnY3lkV2dUZFlnQWJNZWhoQWRNY0RlemJOYVFkTmFRYjBjWGFPYVRkWWFYY01ma2c0aHRoRWUxZklld2hBY0ZiSWMrZ0VmZ2ZrZWxoTGdCYkpjZmVVZWpnWmRLZ0hmeGVkZVVjT2V3aEVlbGNCYnlmOGFNZkpiVGM4YUtoVWhqaEJjYmRYZUFjdGdZYkVmRGFVZm9kTmF6YlVndWFBZkNiWmRRY1Vid2ZvYzBhRGhGaEVnVWhCZ1VoMGV4YUhmQWhNZXBoSWR5aEFkb2JVY2phTWNJZk1jbGRZZU5iQ2N4ZkFkUGNWYkFjZ2FvZE1kbGJrZDJlQWVEaEloUWhEYkFjOGJ6ZFVoRGVVZk5nRmh6Z2tjMmRGYnplSmVPY0xmUmFOZlNlTWZBZEJjU2VQaGhiSWJKZkpkU2N3Y1NkWGcxYUljMmRTaGhlOGFYZlZiRGhzZUJnSmNRYWNodmNEZENnVWUvYkNmbGNJZndnV2IxYXdlTGhXZkJiQWExYktiRGdjYzFjTGNnYUFibWRVYUZkTWhLaE5hQWN4ZlJiRmhBZVZjTmZNY1Jld2JEYktjU2RNZ2doS2JGY0llemZDYURhSmZXZ0RlUWRzY1FmRGYxZFFkSWhLYkRhSmdaZ05mZ2JBY3lhRWRBZHdnUGRNZDFmQWYxZURmUmdjaDVkTmhoZ2NjeWRUY2ljMGhUY1VmamhBaEFkVWNqYjRoU2NDZlNnVWdzZ0VkbGc5Z1NiTmJrZm9jZmVGZTFnUWg3aEFmU2RVaEhiTGN3Z3dlbGRQZXdocGZTY01iRmJ0ZGNlQ2MxZWdjUWZOYVNoZ2QzZ05iU2I0ZkFmSmNsZ0JkVGNDZmpkUWRNZVVjUmRRYUZlVGZUY0ViY2JBZHlja2JqZEliQ2NoZFNnTWF3Y2dheWNWY2dkMGhMZkVhQWM5ZlVmQ2RDZ2dleWhXZVRmWWNBYk1maGhBZU1jRGd6Yk5kUWNOZVFoMGNYZ09nVGFZYVhkTWRrZzRjdGFFYzFlSWJ3Z0FlRmJJZCtmRWhnY2tkbGVMZEJhSmRmZVVhamVaY0toSGN4Y2RmVWJPZHdkRWFsYUJheWg4Z01kSmRUZjhoS2hVZmpoQmRiZFhnQWN0Z1ljRWVEZ1Vjb2JOYXpnVWd1Z0FlQ2RaZVFnVWZ3Y29kMGhEZkZkRWhVZ0JoVWcwaHhjSGFBZE1lcGZJZ3lnQWNvZFViamZNY0loTWZsaFllTmZDZHhjQWNQZVZlQWhnZW9jTWdsZmtoMmNBYkRlSWdRZURjQWg4Z3pkVWVEZVViTmhGZnpha2cyZkZjemhKZE9nTGNSYU5oU2ZNZkFoQmhTZVBoaGNJY0pkSmFTYXdlU2FYZzFoSWIyYlNlaGc4YVhhVmVEZnNjQmRKZVFiY2Z2YURoQ2NVZi9mQ2dsZklld2RXZTFod2hMaFdoQmRBZjFlS2dEaGNjMWJMYWdjQWRtYlVoRmNNZktlTmRBZ3hiUmZGaEFmVmdOaE1jUmF3ZkRlS2RTZk1kZ2hLY0ZkSWR6ZkNnRGJKZVdnRGFRZnNlUWZEZDFiUWdJZkthRGRKYlpkTmVnaEFoeWdFYUFhd2RQZU1oMWFBYjFiRGZSYWNhNWNOYWhhY2h5ZFRiaWYwZ1RmVWJqaEFoQWRVZmpiNGFTZ0NlU2FVZnNhRWVsaDliU2ZOZmtob2ZmYUZiMWVRYTdiQWhTY1VkSGRMZHdod2NsZ1Bkd2dwZ1NkTWNGZ3RnY2ZDaDFjZ2ZRZE5lU2NnYjNnTmNTZjRhQWJKZmxjQmdUYkNmamdRZ01lVWJSZlFiRmVUYlRnRWNjZ0FneWFrYWpnSWdDY2hkU2VNY3dhZ2R5Y1ZkZ2UwZ0xnRWJBYzllVWJDY0NnZ2h5ZVdmVGVZZkFkTWNoZEFiTWdEZnphTmNRZE5iUWYwZ1hoT2hUZFlhWGVNZGtmNGF0Z0VhMWJJZHdmQWhGZUliK2NFZ2dja2NsZExlQmVKY2ZlVWZqYVpkS2RIZnhkZGdVZU9id2FFaGxoQmV5aDhjTWVKYVRnOGNLYlVnamFCZmJnWGNBZnRmWWVFZERhVWNvZU5lemdVYnVjQWJDY1poUWhVY3dmb2UwaERiRmdFaFVmQmFVZDBheGZIZUFiTWNwaEloeWhBZ29oVWhqYk1oSWhNYmxlWWdOaENleGdBZVBmVmhBY2dlb2dNZGxla2YyY0FmRGNJYVFkRGhBZjhkemZVY0RhVWJOZkZmemFrZDJlRmJ6ZEpiT2hMZVJkTmZTZU1iQWJCYlNiUGVoaElnSmVKZlNkd2NTYVhhMWFJZzJnU2FoZDhnWGVWZkRkc2JCZEpkUWJjZ3ZiRGRDZVVnL2JDY2xjSWV3YldjMWZ3YkxmV2NCaEFoMWZLaERiY2cxYkxiZ2NBZW1kVWVGaE1hS2hOZkFoeGdSYkZiQWZWZk5hTWFSZ3dkRGFLZ1NmTWZnZEtmRmdJY3piQ2dEYkpoV2FEYlFhc2hRYURkMWZRZElkS2REY0plWmNOY2dkQWd5ZkVhQWd3ZlBjTWMxYkFkMWhEYlJlY2Q1YU5kaGVjZ3lnVGFpYTBlVGZVZGpjQWRBZ1VjamI0Y1NoQ2VTY1Vkc2JFZmxnOWNTYU5ha2hvYWZoRmIxZFFoN2VBYVNoVWVIaExid2h3aGxlUGJ3ZnBiU2NNaEZldGRjYkNlMWZnYVFiTmhTZGdjM2dOZ1NhNGhBZUpnbGFCYVRmQ2JqZ1FlTWNVZ1JoUWhGZ1RnVGVFZ2NhQWh5Z2tnamRJYUNkaGJTZ01md2dnZ3ljVmRnZDBiTGdFZEFoOWJVZUNjQ2ZnaHloV2hUZVllQWRNYmhlQWFNYURkemNOZVFkTmVRYzBlWGdPZFRhWWFYZE1ha2I0ZHRnRWgxaElid2ZBZUZkSWErZUVhZ2RraGxmTGhCZEplZmRVYWplWmRLYkhneGhkYlVhT2N3Z0VnbGhCZHlmOGhNY0pnVGY4YUtnVWJqZkJnYmFYYkFodGJZZUVlRGFVaG9jTmZ6ZVVkdWNBYkNlWmJRaFVid2JvYTBoRGJGZkVnVWRCZVVlMGR4aEhlQWhNYnBkSWd5ZUFhb2JVZ2pnTWhJZk1hbGRZaE5lQ2h4aEFkUGhWZUFhZ2hvZE1ibGRrYTJkQWdEaElnUWhEZEFnOGR6Z1VlRGNVZE5mRmR6YmthMmVGZXpkSmVPZkxiUmNOZ1NmTWNBYUJkU2hQY2hkSWZKZ0pmU2V3Y1NoWGQxZElnMmhTaGhjOGFYZVZhRGNzYUJmSmJRaGNodmFEY0NoVWYvZ0NlbGVJZXdmV2cxZ3dlTGNXZUJmQWQxZktlRGhjaDFkTGFnZEFobWhVYkZjTWFLZU5iQWZ4aFJmRmJBaFZnTmhNZ1Jld2REYUtoU2NNYmdkS2NGZklkemFDZERnSmNXZURhUWZzZVFnRGYxZFFoSWNLZ0RkSmZaZE5oZ2VBaHllRWFBYXdnUGdNZjFnQWQxZERmUmVjaDVnTmhoZmNoeWVUYmljMGVUZlVmamVBZEFkVWFqYjRoU2RDY1NiVWJzZEVlbGM5YVNhTmhrYm9iZmFGaDFiUWc3YUFiU2hVaEhlTGF3Z3dlbGNQZHdlcGdTZE1jRmJ0YmNiQ2YxZGdoUWROaFNjZ2gzYU5nU2Y0YUFkSmVsYUJkVGZDZmpoUWNNZFViUmZRZkZmVGVUZEVkY2FBZnlja2hqZkljQ2ZoY1NjTWF3aGdneWdWZ2diMGNMZUViQWg5ZlVmQ2ZDaGdieWNXZlRjWWhBZU1iaGJBZk1oRGR6Z05nUWJOYlFkMGZYYk9hVGZZZlhhTWdrYTRjdGNFZzFiSWZ3ZUFnRmhJZytkRWhnYWtnbGhMZEJiSmRmYlViamJaZUtoSGV4aGRhVWZPYXdnRWNsZkJieWY4ZU1iSmNUYjhiS2ZVZmphQmJiZVhlQWJ0aFloRWhEY1Vhb2ROZHpjVWR1Z0FiQ2FaZVFlVWV3Z29nMGFEZ0ZlRWFVZkJiVWgwZXhmSGFBYk1kcGNJYXliQWRvZ1VoamNNYUlmTWFsZ1liTmFDYXhhQWJQYlZhQWhnZW9nTWhsaGtmMmFBYURkSWVRZERoQWQ4ZnpkVWREZFVoTmJGaHpka2YyYUZmemdKY09nTGJSZ05hU2JNZkFoQmRTZlBoaGJJY0poSmFTZ3dmU2NYYTFkSWQyZ1NhaGU4ZFhnVmREZXNiQmdKaFFkY2F2YkRoQ2JVZi9nQ2JsY0lid2ZXZzFkd2ZMZFdnQmFBYzFhS2JEZ2NoMWZMZmdkQWdtZFVmRmZNZktmTmRBZnhhUmVGZkFnVmROY01nUmV3Y0RoS2FTY01lZ2dLZEZlSWh6YkNiRGhKZFdiRGZRY3NhUWVEZzFmUWhJYUtoRGhKZFpjTmFnZkFneWFFZ0Fnd2NQZ01kMWhBZTFlRGdSaGNnNWJOZmhjY2R5aFRoaWEwZFRlVWhqZUFnQWNVaGphNGZTZkNoU2RVYnNjRWFsYTloU2hOZ2thb2JmaEZoMWNRYTdhQWVTZlVoSGVMZHdhd2NsZ1Bhd2JwYVNlTWJGYXRkY2JDYzFkZ2hRZ05iU2RnZDNiTmhTYTRoQWhKZWxmQmRUZ0NjamNRZE1hVWFSZlFoRmFUYVRmRWdjZUFoeWRrZWpmSWRDZmhjU2VNYndiZ2F5ZVZhZ2gwaExmRWVBYjloVWJDZkNmZ2Z5aFdlVGVZY0FnTWZoaEFoTWREY3pnTmNRYk5nUWgwZlhoT2JUZVljWGhNYmthNGF0YUVnMWhJaHdhQWZGZ0liK2dFZmdla2RsZUxlQmNKZ2ZoVWdqZVplS2hIZnhhZGZVZE9md2dFaGxnQmZ5YThkTWhKYlRkOGNLYVVmamRCZ2JmWGZBZHRiWWZFaERnVWdvZU5hemRVZXVnQWRDYlpoUWdVZXdmb2cwZURoRmNFYlVlQmFVZDBheGRIY0FhTWVwY0lheWVBaG9jVWhqY01lSWJNZGxhWWJOYkNoeGJBYlBnVmZBZmdib2FNZ2xna2EyZUFnRGJJaFFoRGdBYzhiemRVZkRnVWROaEZiemhrYjJiRmJ6ZkpoT2ZMY1JhTmdTYk1mQWdCZlNmUGVoZUlnSmRKZlNjd2JTZ1hlMWZJZzJmU2VoYzhhWGdWYURoc2JCYUpoUWZjZHZiRGNDZVVlL2RDYmxhSWR3ZldjMWR3ZExoV2hCaEFjMWdLYURmY2IxZUxjZ2FBZG1lVWdGYk1mS2FOYUFkeGhSY0ZhQWNWZ05kTWFSY3doRGVLaFNnTWNnYktlRmNJYXpoQ2ZEZEpjV2ZEY1Foc2dRZERkMWVRaElhS2ZEZEplWmZOaGdkQWF5Y0VoQWR3ZlBhTWgxY0FmMWZEZ1JmY2E1YU5laGdjYXlnVGJpYzBlVGZVaGphQWJBZFVoamU0ZFNlQ2NTZVVkc2JFZWxkOWdTaE5ma2NvYmZkRmQxYVFnN2hBaFNoVWJIaExld2R3YmxjUGR3ZXBlU2RNZ0ZmdGdjZkNnMWdnZlFiTmNTZGdiM2NOYVNnNGVBZ0pnbGhCaFRkQ2VqY1FlTWRVaFJoUWdGZ1RiVGZFZ2NmQWR5Z2tlamZJY0NnaGdTaE1nd2ZnZHlmVmVnYzBhTGhFZkFkOWVVZENiQ2VnYnliV2FUYllhQWZNaGhhQWJNaERmemdOYlFjTmFRaDBjWGNPZlRnWWdYZ01oa2I0YXRlRWQxZklhd2RBZUZlSWIrZkVkZ2ZrY2xmTGNCYUpjZmRVZWpoWmJLYUhleGVkYlViT2F3ZEVhbGRCaHloOGNNZUpiVGU4YktlVWFqY0JiYmJYZUFhdGJZZUVhRGhVaG9jTmd6Z1VldWNBZkNlWmRRY1Vod2JvZTBiRGJGYUVnVWNCY1VkMGd4ZUhiQWRNY3BnSWd5Z0Fib2NVZWpnTWRJYU1ibGVZaE5hQ2Z4ZkFmUGNWYkFnZ2dvZ01hbGVrZDJjQWhEZ0llUWJEYkFmOGZ6ZVVjRGFVZE5hRmh6ZmtiMmhGZHphSmhPYkxoUmdOZlNmTWFBYkJiU2dQZWhoSWdKZ0poU2J3ZlNoWGExY0loMmdTZ2hnOGZYZVZjRGFzZEJiSmVRZWNhdmFEYUNhVWIvZ0NibGZJZHdoV2UxYXdjTGFXZ0JoQWExYUtjRGVjYzFiTGhnZEFjbWJVZEZnTWVLYU5lQWN4ZlJlRmdBYlZiTmJNZVJkd2NEZktmU2NNZGdmS2RGY0llemhDZkRnSmJXZkRnUWVzZlFnRGIxZVFmSWFLYURoSmFaYU5kZ2NBaHljRWhBZXdkUGZNaDFkQWMxZkRjUmVjaDVoTmRoZWNoeWFUYWlhMGVUZ1VjamNBZ0FlVWhqYzRkU2dDaFNiVWdzZEVjbGY5aFNhTmVrYm9iZmRGaDFiUWQ3Y0FiU2RVZkhmTGd3ZndlbGVQZXdjcGVTZU1oRmZ0ZWNkQ2ExZGdhUWdOaFNkZ2YzZk5jU2g0ZkFjSmRsaEJmVGVDZmpmUWFNYVVmUmJRZEZnVGFUYUVnY2RBZnlia2ZqaEljQ2hoZFNlTWZ3aGdjeWRWY2dkMGZMYUVlQWY5aFVlQ2FDZWdkeWVXY1RlWWJBaE1maGFBZE1iRGZ6Yk5jUWFOZ1FoMGFYZ09hVGNZZ1hoTWJrYzRhdGVFZTFmSWZ3ZUFmRmVJYitlRWVnYWtkbGdMZEJjSmhmYVVkamdaaEtkSGV4ZmRmVWNPZHdjRWNsZEJoeWU4ZE1iSmZUaDhjS2JVZmpmQmFiYVhiQWV0ZFloRWdEZVVib2dOYXpnVWR1aEFiQ2JaZFFiVWh3YW9lMGJEZUZiRWhVZkJhVWMwZXhiSGdBZE1hcGNJZXlhQWJvYlVmamdNZ0lmTWVsaFliTmVDZHhoQWNQaFZhQWdnaG9oTWJsaGtnMmFBYURoSWNRaERnQWY4aHpjVWJEZFVkTmRGZ3pia2YyZ0ZmemZKaE9kTGNSZU5oU2NNZkFkQmJTZlBiaGZJZEpkSmhTYXdmU2NYZTFiSWEyY1NnaGQ4Y1hnVmNEZXNhQmdKZlFmY2N2Y0RhQ2FVYS9kQ2NsZUlhd2VXZTFid2dMYVdoQmZBZzFkS2JEYmNkMWhMZWdhQWVtZ1VnRmJNZUtlTmNBYnhlUmVGZEFoVmFOY01lUmZ3YURiS2NTY01hZ2JLYUZmSWN6aENkRGZKYldnRGhRZHNoUWVEYjFnUWZJZUtlRGRKYlpmTmhnaEFmeWRFZkFld2dQZk1jMWRBZjFmRGZSZGNkNWVOaGhlY2d5ZlRmaWgwZFRoVWhqY0FhQWFVZ2pnNGZTZ0NiU2hVYnNlRWdsZTlkU2FOYWtmb2FmZkZlMWZRYjdmQWhTaFVnSGdMZHdmd2FsZlBkd2JwZlNnTWVGaHRmY2NDZTFkZ2hRZk5jU2RnYTNhTmVTZDRjQWFKY2xkQmNUZkNmamRRZk1iVWVSaFFnRmJUYVRiRWRjY0FjeWhrZ2pmSWVDY2hkU2VNYXdiZ2h5aFZiZ2IwZkxlRWJBZjlnVWRDZ0NkZ2R5ZldhVGRZZ0FhTWdoaEFjTWZEY3plTmdRZ05jUWMwZVhmT2hUY1liWGRNZWtmNGh0ZEViMWRJZndlQWFGY0loK2FFY2dha2VsZUxlQmFKYWZhVWNqZ1pjS2VIZ3hhZGZVZk9ld2RFY2xhQmF5YThlTWdKaFRkOGhLZlVhamdCZ2JhWGJBaHRjWWFFY0RmVWRvY05lemJVY3VhQWdDZVpkUWNVZHdhb2QwaERhRmVFaFVjQmJVYjBoeGZIZ0FoTWRwZUljeWRBZm9iVWJqZ01nSWhNYWxoWWVOYkNleGNBZFBkVmdBY2dib2RNYmxma2QyY0FhRGdJZFFoRGNBZDhnemdVYURnVWFOYkZmemFrYzJhRmZ6ZUplT2dMaFJlTmhTYU1jQWhCaFNiUGhoZElkSmdKYlNld2FTZVhkMWRJYjJiU2doZzhiWGVWYURlc2VCYUpjUWVjZ3ZmRGRDZVVkL2NDY2xiSWJ3ZVdjMWd3Z0xnV2VCZEFmMWJLYkRlY2MxYUxjZ2FBYW1oVWVGZU1jS2dOZ0FoeGhSZUZiQWZWY05iTWVSZ3djRGVLZlNkTWVnYUthRmZJZ3pmQ2VEY0piV2dEZlFic2FRYURiMWJRZEliS2REZkphWmdOZGdiQWZ5Y0ViQWd3Z1BiTWIxZEFmMWFEZFJlY2c1Zk5jaGVjZXloVGVpYTBhVGVVaGplQWhBaFVjamI0YVNnQ2ZTaFVlc2NFaGxjOWJTZE5ia2JvY2ZnRmUxYVFhN2RBaFNjVWdIZExid2h3aGxoUGJ3ZXBmU2ZNY0ZkdGdjZ0NnMWJnY1FoTmZTaGdoM2dOaFNiNGJBY0pmbGJCYlRkQ2ZqaFFkTWVVZFJjUWdGZlRkVGdFY2NiQWd5Z2toamFJYkNkaGJTZk1kd2VnZXlnVmJnZjBkTGRFaEFmOWdVY0NnQ2RnYnloV2FUZFljQWVNYWhnQWNNZ0RiemhOZlFkTmJRZjBnWGRPYlRhWWdYZ01oa2c0ZXRiRWgxaElmd2RBYUZoSWUrYkVmZ2ZrZmxmTGNCYUpjZmdVZWpiWmhLZUhneGNkYlVnT2R3ZUVjbGNCaHllOGNNZ0pjVGQ4ZEtlVWFqYkJlYmZYYUFjdGNZaEVhRGJVY29oTmN6ZVVhdWhBZ0NmWmNRZVVld2JvYTBnRGRGYUVnVWVCaFVlMGJ4ZkhiQWFNZXBoSWZ5aEFnb2RVYWpiTWhJZE1mbGZZYk5hQ2Z4ZkFkUGhWZUFlZ2VvZE1kbGZrYTJhQWREZEloUWhEYkFiOGh6YVVjRGVVYk5jRmd6Y2tnMmZGZHplSmVPZ0xmUmFOZVNnTWdBZEJoU2NQYWhjSWRKZEpjU2Z3ZFNmWGExYklnMmZTYWhoOGVYZFZoRGhzaEJiSmZRY2NndmZEZ0NnVWYvY0NlbGNJZ3dmV2IxYndiTGhXYkJlQWIxYUtmRGhjZDFhTGNnZkFmbWhVYUZiTWhLYk5lQWN4ZFJnRmJBZlZkTmFNYVJnd2ZEaEtkU2RNZWdnS2hGaEliemVDYURiSmRXYkRkUWNzZVFnRGExY1FkSWhLZkRkSmdaZE5nZ2NBZXlkRWVBZXdlUGFNYzFnQWgxZURkUmVjZjVlTmhoYmNmeWVUZ2lkMGZUZVVjamNBZEFoVWRqYTRoU2RDZ1NhVWRzZkVnbGQ5aFNjTmFrYm9lZmdGZzFkUWE3Z0FnU2dVYUhkTGV3Z3djbGFQZ3dkcGVTYU1hRmh0aGNhQ2IxYWdjUWhOY1NnZ2YzZU5oU2I0ZEFlSmJsY0JmVGNDZ2piUWFNY1VkUmRRY0ZnVGdUaEVnY2NBYXlja2RqZEllQ2ZoZVNjTWh3ZWdkeWVWZ2dmMGVMYUVhQWc5Y1VmQ2dDZ2dneWNXZ1RlWWFBaE1oaGRBZk1kRGZ6aE5hUWVOaFFlMGZYZU9nVGNZYVhjTWVrYTRjdGRFZDFhSWN3Z0FmRmhJYStjRWVnYmthbGJMaEJmSmJmaFVmamRaZUtmSGR4ZWRkVWVPYXdkRWZsYkJneWc4ZU1jSmJUZjhmS2hVaGpkQmFiZFhlQWZ0YVloRWNEZFVhb2ZOZHpkVWJ1ZUFlQ2VaYlFoVWF3Ym9hMGJEYUZoRWVVYUJlVWQwaHhjSGNBZ01mcGhJZHlnQWdvYVVnamhNY0lhTWdsYlliTmVDZnhmQWFQY1ZjQWNnZG9iTWNsY2thMmJBYURjSWFRYkRlQWU4Z3plVWNEYVVmTmZGYXpna2MyYUZmemRKY09kTGRSZ05hU2JNZkFjQmhTaFBiaGJJaEpmSmFTZndhU2JYZjFhSWIyaFNlaGE4Y1hnVmFEYnNoQmRKZ1FjY2Z2ZkRjQ2VVYS9jQ2RsZElid2ZXaDFkd2hMZldkQmFBZjFhS2VEZWNiMWVMY2dlQWNtY1VmRmdNaEthTmdBaHhhUmVGYUFkVmhOZk1kUmR3Y0RoS2dTZU1nZ2hLZ0ZlSWJ6aENmRGdKYVdjRGNRZ3NlUWVEZTFiUWNJZEtlRGJKZVpoTmFnZUFieWdFZEFnd2NQZk1jMWFBYTFiRGdSZWNjNWdOZ2hjY2V5YlRlaWQwZVRiVWZqYkFkQWFVYmpmNGJTZUNlU2RVZnNjRWdsZDlmU2hOZ2tib2VmZUZjMWJRYTdiQWNTaFVoSGNMY3dkd2dsYVBnd2JwZFNlTWdGZXRjY2JDZzFlZ2JRZ05mU2FnYjNiTmFTZzRoQWJKZGxjQmJUZkNjamFRaE1lVWVSZFFjRmFUYlRoRWhjZkFieWVraGpnSWdDZGhiU2hNY3doZ2d5YVZiZ2QwY0xjRWZBYzljVWhDZENiZ2h5YldkVGVZZ0FhTWFoaEFnTWJEZnpiTmNRYU5nUWUwZlhhT2NUZllnWGdNYmtmNGh0Y0VlMWZJYndmQWJGZ0liK2RFZWdoa2NsYUxoQmZKZGZkVWhqZFphS2NIYnhjZGdVZk9nd2dFZWxiQmR5ZDhhTWZKY1RhOGRLZ1VmamJCYWJiWGNBZHRmWWdFZkRiVWNvYU5kemdVaHVoQWRDZlpnUWRVZ3dkb2gwZkRkRmJFaFVoQmZVYTBleGRIZEFmTWVwZUlneWdBZm9lVWdqYk1mSWdNZmxkWWZOZkNleGhBYlBnVmhBaGdnb2VNaGxla2YyYUFkRGNJYVFoRGRBYThmemRVYURmVWhOYUZkemRrZzJoRmR6ZkphT2dMaFJkTmRTYU1hQWFCZ1NiUGFoYUloSmVKZ1Nld2hTZVhnMWdJZjJjU2RoYjhnWGFWZkRkc2VCaEplUWdjaHZoRGZDZlVhL2VDaGxoSWN3Y1dlMWN3ZExlV2RCYkFhMWNLYkRmY2YxYUxoZ2dBYW1jVWVGY01oS2dOZ0FjeGNSY0ZlQWNWZU5iTWNSZndkRGRLZlNnTWNnYkthRmVJZHphQ2hEZ0plV2FEZ1Fnc2ZRY0RoMWNRYUliS2NEYkpkWmROZWdhQWR5Y0VlQWN3ZFBjTWMxaEFmMWFEYVJoY2I1YU5kaGJjZnlhVGJpYzBhVGRVYmphQWdBYlVjamg0Z1NlQ2NTY1Vhc2ZFZmxnOWRTYk5oa2FvaGZmRmMxZVFmN2JBYlNmVWFIZkxod2N3Z2xlUGV3YnBoU2VNY0ZjdGdjYkNoMWJnZlFoTmFTZGdiM2hOZlNnNGdBYkpjbGZCaFRhQ2ZqYlFiTWRVYlJiUWdGY1RiVGZFY2NhQWF5ZmtoamZJYkNhaGNTaE1kd2FnZXlmVmRnaDBnTGdFY0FiOWJVZ0NhQ2ZnZ3lnV2JUY1lnQWFNZGhhQWNNYURoemhOY1FkTmhRZTBiWGFPZFRnWWZYZE1ma2U0Z3RlRWUxZklnd2NBZ0ZlSWIrZ0VkZ2FrZWxnTGNCYkplZmVVYWpoWmNLZkhneGVkaFVoT2J3Y0VlbGJCZnllOGFNZUpoVGM4YUthVWZqaEJlYmJYaEFldGZZZEVkRGZVYm9lTmd6ZlVldWdBYUNnWmVRaFVid2hvZTBoRGZGZ0VmVWJCY1VoMGZ4Z0hlQWNNaHBhSWV5Z0Fhb2hVYmpjTWFJZE1ibGJZY05nQ2h4ZUFoUGRWYkFiZ2FvZ01mbGhrZDJkQWJEYUloUWhEZEFnOGd6Y1VhRGFVZk5lRmJ6aGtkMmVGZXpkSmFPZ0xjUmNOaFNjTWZBZEJhU2FQZ2hlSWZKY0plU2N3Y1NhWGQxYUljMmJTZmhnOGdYZlZhRGNzaEJnSmhRZGNmdmJEZkNlVWYvY0NobGVJZXdjV2IxY3dhTGFXZEJlQWMxZEtoRGNjZDFmTGRnYUFobWdVYUZkTWdLYU5oQWZ4ZVJiRmNBaFZoTmVNYlJod2FEZktmU2ZNZGdnS2RGZ0loemVDZkRoSmFXaERjUWJzYVFhRGQxaFFlSWFLZkRnSmJaaE5kZ2JBY3lnRWRBZXdoUGNNZDFjQWcxY0RnUmVjZjViTmFoZ2NoeWhUZmlnMGJUZ1VhamhBYUFjVWhqYzRnU2ZDZ1NkVWVzaEVhbGY5Z1NhTmRrY29hZmVGZzFkUWc3ZUFhU2NVZ0hlTGV3ZXdobGJQZXdhcGhTY01nRmd0ZGNlQ2QxYmdhUWdOYlNlZ2UzYk5lU2M0YUFjSmVsZkJnVGJDZWpnUWFNZFViUmVRY0ZiVGVUaEVnY2FBZHlia2VqZUllQ2hoYlNkTWV3ZWdneWJWZ2dmMGZMZ0VkQWI5aFVlQ2hDYWdheWRXaFRmWWRBY01maGJBY01iRGJ6ZE5lUWNOYlFkMGVYZk9kVGFZZlhoTWRrYTRndGRFaDFnSWV3ZUFhRmNJZSthRWhnZ2tkbGRMaEJmSmZmaFVoamJaZUtnSGd4YWRnVWZPYndnRWhsZUJmeWQ4Zk1nSmFUYzhkS2NVYmpjQmRiZVhlQWV0Z1loRWREZlVnb2JOYnpnVWd1aEFjQ2daZFFnVWF3Ym9hMGNEaEZkRWVVYUJlVWIwZHhiSGhBZk1ocGZJaHllQWFvYVVoamdNY0lmTWRsZVlmTmdDZ3hoQWNQZlZoQWZnZm9kTWFsZGthMmhBYkRnSWFRaERhQWc4ZnplVWZEZVVmTmFGZ3pma2QyZUZmemVKZ09kTGNSaE5nU2NNZEFnQmNTYlBhaGZJY0piSmVTYndlU2JYYzFjSWMyY1NoaGM4Y1hiVmNEZ3NjQmhKY1FlY2Z2YURhQ2ZVZC9oQ2ZsY0ljd2JXZDFmd2ZMaFdmQmRBYTFmS2VEYmNoMWRMZGdnQWVtZlVlRmNNZEtoTmJBZnhhUmRGZEFiVmVOYU1kUmh3aERkS2hTZU1iZ2dLYUZnSWN6ZUNhRGdKZ1diRGNRZnNnUWdEZzFmUWJJY0tkRGdKZFpnTmRnaEFheWJFZEFhd2hQYU1lMWZBZjFoRGhSZmNhNWNOZGhiY2h5aFRnaWYwZlRhVWNqYkFmQWNVaGphNGNTZkNhU2VVZ3NnRWVsZjlkU2dOZWtjb2hmZUZnMWJRZTdlQWdTYlVhSGdMaHdjd2RsaFBhd2RwaFNoTWdGYXRnY2RDYTFlZ2ZRZk5jU2FnZjNnTmhTYTRlQWdKY2xmQmFUY0NnamhRY01nVWJSYlFiRmNUaFRjRWZjZkFneWVrZ2pnSWVDZWhmU2dNY3dmZ2d5Z1ZjZ2cwY0xmRWFBZTlnVWNDY0NjZ2h5Z1diVGFZZUFmTWFoaEFoTWREZ3plTmJRY05jUWgwaFhiT2JUZVlmWGRNZmtnNGV0ZEViMWJJYXdnQWJGYkllK2NFYWdoa2ZsZExiQmZKZ2ZnVWhqaFpiS2NIZnhkZGdVZ09od2dFZmxlQmN5YThlTWFKaFRmOGNLaFVkamZCY2JnWGNBZnRnWWhFY0RlVWVvYk5kemdVZ3VnQWRDY1pjUWVVYXdkb2gwY0RoRmZFaFViQmhVaDBleGdIZkFlTWRwYklkeWRBZW9iVWdqYk1iSWdNYmxhWWhOZUNheGVBYlBlVmVBYmdlb2RNYmxma2YyZUFjRGZJZ1FnRGdBZzhhemhVZURkVWNOZkZkemVrZzJnRmV6ZEpnT2NMYlJlTmZTYU1oQWRCZFNoUGRoZUliSmNKYlNid2VTYlhmMWRJYjJhU2FoYzhlWGJWZERmc2NCZUpiUWVjY3ZhRGNDY1VhL2NDYWxnSWJ3ZFdnMWJ3ZkxoV2NCZ0FkMWVLYkRoY2cxZExiZ2VBY21nVWJGZk1nS2VOZUFneGNSaEZnQWdWZU5kTWdSZXdoRGNLaFNjTWVnYktiRmNJYnphQ2hEYUpjV2ZEY1Flc2ZRaERiMWJRZEllS2dEZkphWmROYmdnQWF5Z0VkQWZ3ZFBlTWcxZ0FlMWVEZVJmY2g1Y05laGNjY3liVGdpZjBhVGNVZGpjQWNBYlVjamg0ZlNoQ2NTZlVnc2RFZmxiOWFTZE5ha2JvZ2ZmRmQxZFFhN2NBYlNiVWRIYkxid2d3YWxiUGJ3ZXBmU2hNYkZndGdjYUNlMWZnaFFhTmRTZmdiM2ROZlNoNGFBZUpmbGFCYlRhQ2FqYVFjTWFVYlJmUWNGYlRhVGRFY2NlQWh5Y2tmamRJYUNoaGVTYU1kd2FnYXlhVmdnZjBoTGdFZUFhOWZVYUNiQ2FnY3lmV2NUYVljQWNNaGhlQWFNZkRlemNOZFFoTmVRYjBlWGRPZVRhWWJYZ01ia2E0ZXRoRWMxaElkd2FBY0ZmSWMrZkVnZ2RrZmxiTGhCYUpnZmdVZGpmWmhLZ0hoeGdkZlVhT2R3ZEVmbGZCZ3lkOGNNY0poVGE4ZktiVWdqaEJoYmdYZEFkdGhZaEVnRGJVYm9kTmZ6Z1VidWVBYkNhWmdRYlVkd2ZvYzBiRGRGaEVmVWhCYVViMGN4ZUhiQWhNY3BoSWZ5YUFhb2RVZWpnTWNJZk1obGdZaE5mQ2F4aEFlUGNWZkFmZ2ZvaE1hbGRrZzJlQWdEY0loUWJEZ0FlOGJ6ZlViRGVVYk5nRmV6ZmtoMmRGY3poSmJPY0xkUmROY1NhTWhBaEJmU2FQZGhoSWZKY0phU2J3ZFNhWGMxYkloMmdTYmhjOGRYYlZnRGFzaEJlSmZRY2NjdmZEYkNiVWUvY0NibGhJZXdhV2gxYXdlTGRXZkJhQWQxZUtnRGVjZzFlTGZnZkFhbWdVZ0ZnTWRLZ05oQWN4YlJjRmNBaFZnTmJNYVJmd2NEYUtmU2RNaGdkS2JGZkllemFDZERlSmZXZURmUWVzZVFlRGgxZVFkSWdLaERlSmZaY05kZ2ZBYnllRWZBYXdkUGRNZDFkQWYxY0RkUmJjZzVlTmdoYmNieWFUYWllMGVUZVVmamNBY0FoVWdqYjRkU2JDYVNjVWhzZUVlbGE5ZVNjTmdrZG9kZmRGZjFnUWM3Z0FhU2NVaEhhTGV3ZHdjbGVQZ3docGdTYU1mRmR0ZWNnQ2cxZmdiUWdOYVNjZ2QzYU5nU2Y0ZkFiSmNsYUJoVGRDZmphUWNNaFVhUmdRaEZoVGdUY0VmY2FBYXloa2dqZ0ljQ2NoZFNkTWF3YWdkeWRWZWdnMGNMZEVoQWM5YlVnQ2hDZmdoeWNXZVRiWWVBZk1maGVBZU1lRGJ6Yk5jUWdOZlFnMGJYZE9mVGhZZFhiTWhrZzRodGNFaDFjSWR3ZkFlRmZJZCtlRWNnZGtkbGRMYUJjSmZmZFViamRaZktkSGV4Y2RiVWRPYXdoRWFsaEJieWU4ZE1mSmVUYjhjS2VVaGpiQmViaFhmQWZ0aFlkRWdEZlVob2ROYnplVWF1ZkFoQ2JaZ1FjVWZ3Z29iMGJEYkZlRWJVaEJiVWcwY3hoSGRBZk1mcGdJYXlnQWNvZ1VmamJNZ0liTWFsY1lkTmVDZ3hjQWRQaFZiQWdnZG9oTWRsZGtjMmdBY0RnSWFRYURoQWc4YnplVWVEZ1VhTmNGZnpoa2UyY0ZkemFKZU9kTGRSY05oU2dNZkFnQmJTYVBnaGFJZUpkSmhTZHdmU2JYZDFoSWMyYlNmaGY4ZFhiVmFEY3NlQmdKaFFmY2R2aERhQ2JVZS9oQ2FsZklhd2RXZTFhd2FMY1dlQmdBZzFkS2hEYWNmMWhMYWdnQWVtYVVmRmZNYktmTmVBY3hoUmRGaEFkVmJOYk1kUmd3ZURkS2JTaE1jZ2NLYkZoSWh6ZUNhRGNKZVdjRGJRYnNlUWREZDFmUWdJYktlRGFKaFpkTmNnYUFleWVFYkFid2ZQZU1lMWhBYTFnRGJSZ2NhNWNOZWhlY2R5YlRnaWEwZ1RhVWFqY0FiQWRVY2poNGhTYUNkU2RVYXNlRWhsYzlhU2FOZmtkb2dmZ0ZlMWhRYzdoQWNTY1VoSGRMYndnd2JsYVBld2VwZVNmTWZGZXRjY2FDYTFnZ2RRZ05hU2JnYTNiTmFTaDRnQWhKaGxkQmVUYkNhamNRZU1nVWZSYlFiRmFUYVRhRWdjYUFheWZrZGplSWZDYWhjU2JNYXdiZ2Z5Y1ZkZ2gwZExhRWRBYzljVWFDZ0NlZ2F5aFdlVGZZZEFjTWRoZ0FjTWFEYXpmTmhRaE5iUWMwZFhiT2RUZ1liWGNNaGtmNGh0YUVlMWJJYXdjQWNGY0lmK2hFZ2dla2RsaExhQmNKZmZmVWFqZFphS2dIZ3hoZGVVZ09jd2VFZGxlQmh5ZDhmTWJKZFRmOGVLaFVhamZCZGJjWGRBYnRjWWhFZ0RnVWZvZE5memJVZHVjQWJDZ1pjUWJVZXdib2UwaERjRmNFYlVlQmZVYjBheGNIZkFhTWdwZElkeWRBZG9nVWRqZk1lSWNNaGxhWWdOY0NjeGdBY1BmVmhBYWdjb2VNZWxia2QyZEFiRGhJZFFjRGhBZThiemdVZURhVWFOZUZoemNrYzJmRmN6Y0pjT2RMZlJlTmVTY01lQWVCYlNmUGZoaElnSmVKZFNjd2FTY1hmMWFJYzJiU2NoYzhhWGdWYkRnc2FCYkphUWNjZnZoRGFDZVVnL2hDZ2xnSWZ3ZldlMWd3ZkxkV2NCZ0FhMWJLZkRoY2ExZkxnZ2hBZm1iVWZGZU1kS2ROaEFneGdSZUZjQWdWZU5iTWdSZHdiRGZLaFNiTWVnYktnRmNJY3pkQ2NEZ0pkV2VEZ1Fkc2FRY0RhMWFRZklhS2hEYkpmWmFOZmdiQWJ5YkVhQWh3ZFBjTWQxZUFlMWhEZFJmY2E1YU5iaGNjY3liVGdpaDBkVGNVZWpoQWVBZlVkamQ0ZFNoQ2JTY1Vkc2VFZmxmOWdTZ05ka2VvZGZjRmgxZ1FiN2dBaFNlVWFIYUxjd2N3ZGxjUGF3Z3BiU2VNYUZkdGFjaENjMWhnZlFoTmZTaGdhM2hOY1NnNGRBZ0pmbGFCYVRmQ2ZqZ1FoTWdVZFJjUWdGZ1RmVGhFY2NkQWh5ZGtkamZJYkNkaGRTY01jd2dnZXlnVmJnYzBnTGNFZkFlOWVVZENmQ2dnYnloV2NUYlllQWJNZ2hkQWZNZURnemROZ1FnTmdRYjBkWGJPaFRnWWRYYk1ma2g0aHRnRWUxY0ljd2FBYUZjSWErZUViZ2VrYmxiTGRCaEpjZmhVZmpkWmhLZEhmeGZkYlVmT2R3ZEVlbGZCZ3lmOGRNYkpoVGY4YktiVWdqZkJjYmZYaEFndGFZaEVjRGRVY29nTmV6ZVVhdWhBYUNnWmNRaFVmd2RvZTBmRGZGZEVhVWdCaFViMGF4YkhlQWhNZ3BlSWJ5ZUFib2hVZmpmTWdJZk1hbGdZZU5jQ2N4YUFoUGVWZkFjZ2NvZk1kbGZrZTJlQWVEaElhUWREYUFmOGV6ZlVoRGZVaE5iRmd6ZWtlMmVGaHphSmJPZ0xhUmROY1NmTWZBYUJkU2FQaGhoSWFKY0piU2F3ZFNiWGQxZUliMmdTYmhjOGJYYlZnRGRzZ0JoSmRRaGNmdmNEYUNmVWEvY0NhbGVJaHdnV2cxZ3dmTGRXZkJkQWcxZUtiRGNjZDFkTGRnYkFnbWRVZEZnTWFLY05lQWh4ZFJlRmZBZlZiTmJNZFJod2hEZktiU2VNZWdjS2JGYkloemdDYURjSmJXZkRhUWRzZVFoRGIxY1FjSWVLZ0RnSmdaZE5mZ2NBZHliRWZBZHdmUGdNZjFiQWQxZURjUmVjZjVhTmJoaGNleWVUZ2ljMGVUZVVlamZBYkFhVWJqZDRkU2VDZFNmVWhzY0VobGI5ZFNiTmhrYW9jZmZGYzFjUWQ3Y0FlU2VVY0hiTGV3ZndmbGFQZXdlcGdTYk1lRmh0Y2NkQ2QxY2dlUWVOY1NiZ2gzY05lU2c0ZkFjSmRsZkJmVGZDYmpiUWVNaFVkUmdRZUZhVGdUaEVoY2RBZXlka2ZqY0lmQ2JoZ1NmTWV3aGdheWJWZGdlMGFMZkVoQWY5YlVnQ2ZDYWdmeWdXZlRkWWZBYU1iaGJBYU1nRGF6Z05jUWZOYVFlMGhYYk9oVGFZaFhmTWVrYzRkdGJFZTFiSWN3aEFhRmFJZitlRWRnaGtobGVMZUJoSmZmZVViamFaaEtnSGJ4aGRmVWFPZ3dlRWJsZEJleWY4ZU1kSmRUZDhnS2JVZWpmQmViaFhkQWZ0ZFlmRWNEYlVob2dOaHpjVWh1ZEFlQ2JaZFFmVWF3Ym9oMGZEZkZlRWVVYkJiVWYwZHhhSGdBYk1mcGVJYXljQWNvZlVjamdNYUliTWhsY1lhTmRDZHhlQWhQZFZnQWNnaG9mTWhsZ2tmMmVBZkRjSWRRZURkQWg4ZHplVWdEYVViTmRGY3pna2UyZ0ZjemVKZ09oTGZSZE5oU2RNZkFkQmJTZlBmaGNJY0pjSmFTYXdoU2FYaDFmSWgyaFNkaGY4ZVhiVmVEYXNhQmFKYlFjY2Z2Y0RjQ2dVYS9iQ2RsY0lkd2hXYzFkd2RMYVdnQmNBZjFmS2dEZ2NiMWhMYWdjQWRtYVViRmNNZEtlTmVBZnhhUmNGYUFjVmhOZU1iUmR3Y0RnS2hTYU1lZ2FLZkZhSWJ6ZENoRGJKaFdnRGFRYnNoUWNEZzFoUWhJZUthRGVKZFplTmhnZEFjeWNFZEFid2VQZU1kMWVBaDFlRGZSZmNmNWhOYWhmY2N5ZVRmaWQwZVRlVWJqYkFiQWVVZGplNGNTZUNhU2RVaHNhRWNsYTlkU2ROZmtjb2VmZkZiMWhRZTdnQWhTZlVlSGRMYXdkd2FsZ1Bkd2ZwYVNmTWhGZHRoY2NDZDFjZ2NRZ05lU2JnYzNlTmNTYTRkQWVKYWxhQmNUY0NlamdRZ01iVWZSY1FjRmNUZFRjRWdjZUFoeWRraGpkSWVDZWhiU2VNZHdnZ2R5ZlZkZ2gwY0xnRWRBZjlmVWJDaENoZ2F5ZVdoVGNZYUFiTWFoZEFhTWhEYnpnTmFRZU5mUWEwYlhnT2hUaFloWGRNZWtmNGh0ZUVnMWhJZ3dnQWNGYklkK2RFZ2dha2RsZ0xmQmZKZGZnVWRqZVplS2JIZXhmZGdVZE9od2JFYWxmQmV5aDhoTWhKYlRkOGhLZ1VjamVCYmJjWGRBZ3RlWWZFY0RlVWVvZk5hemhVZnVmQWhDYlpoUWNVYXdlb2YwZURoRmdFYlVmQmZVYjBneGdIZUFlTWNwZUlkeWFBYm9oVWhqYU1oSWdNZ2xiWWZOZUNieGVBZFBoVmhBY2dmb2JNZmxka2MyZEFiRGVJYVFhRGVBYzhmemRVZ0RhVWFOZ0ZmemJrYzJkRmd6YUpjT2hMYlJkTmhTYU1oQWFCZVNkUGdoZElmSmZKZVNnd2VTaFhnMWZJYjJnU2FoZzhoWGdWZURnc2RCaEphUWFjaHZmRGVDZlVjL2VDZGxiSWJ3ZVdjMWZ3Y0xjV2VCY0FiMWRLaERlY2IxYkxjZ2JBY21hVWVGYk1jS2hOaEFjeGZSZ0ZkQWZWZU5lTWNSYXdjRGJLYlNlTWJnYUtjRmNJaHpoQ2dEZ0plV2FEZFFnc2hRYURlMWVRaEljS2hEYUplWmROY2dmQWN5YUVnQWd3YlBnTWYxZkFmMWNEZlJkY2g1ZE5iaGNjY3llVGNpZzBlVGNVZ2plQWZBaFVnamU0Y1NkQ2NTY1Vic2dFZmxjOWhTY05na2ZvZmZmRmMxZ1FoN2JBZFNiVWRIaExkd2h3YWxlUGh3Y3BhU2FNaEZmdGFjZ0NjMWdnaFFkTmVTaGdoM2hOZlNjNGFBZ0pibGJCYVRjQ2NqYVFiTWdVYVJmUWVGYlRoVGRFY2NkQWN5ZGthamFJYkNiaGVTYU1nd2dnZnljVmNnaDBjTGFFYkFjOWFVZkNlQ2JnY3lhV2hUZ1loQWFNYmhkQWhNYkRlemJOZlFhTmFRZzBlWGVPZVRiWWNYZ01ja2g0ZnRmRWExY0lnd2RBZEZlSWYrYUVhZ2hrZmxlTGRCaEpkZmVVYmpmWmNLZUhheGdkZ1VjT2J3ZEVlbGNCaHliOGRNYkphVGE4ZEtjVWZqZ0JjYmNYZEFldGdZY0VmRGRVZG9kTmV6Y1VndWdBZkNlWmJRZVVid2NvYzBjRGJGYUVoVWFCaFVkMGN4Y0hnQWNNZnBiSWh5YkFhb2RVYWphTWNJZ01ibGhZY05nQ2d4ZUFlUGVWYkFhZ2NvZU1hbGZrZTJlQWVEZUloUWhEaEFoOGJ6ZlVlRGdVZU5iRmZ6Z2tlMmdGY3pmSmRPZUxkUmFOZFNmTWJBZkJhU2NQYmhnSWFKaEpjU2J3YlNnWGQxYUloMmJTZmhhOGFYZFZjRGZzZkJmSmZRZWNmdmZEYkNlVWMvZ0NhbGZJZndnV2QxYndiTGZXYkJhQWExYktjRGhjZzFnTGRnZkFjbWJVY0ZjTWRLYU5lQWh4ZFJnRmNBZVZhTmJNYlJjd2REYktmU2hNZWdjS2ZGZUlkemFDZkRoSmFXZ0RiUWJzZFFiRGQxY1FiSWNLZkRmSmdaZE5hZ2VBZHllRWdBaHdkUGZNaDFoQWcxZERoUmZjZTVjTmdoY2NheWRUZGlhMGdUYVVnamNBYkFjVWJqZjRkU2NDZ1NkVWZzYkVobGc5ZFNmTmRrYm9kZmNGaDFjUWU3ZkFnU2FVYUhlTGh3Y3dkbGJQYXdncGJTZ01lRmd0ZGNmQ2ExY2dnUWJOZFNnZ2QzZU5jU2I0YkFiSmdsZ0JoVGFDY2phUWZNZFVoUmNRaEZkVGhUZUViY2hBZHlha2dqZUljQ2FoZVNoTWZ3ZmdieWJWZmdnMGZMY0VnQWc5aFVnQ2JDZGdheWZXZ1RoWWZBZU1naGJBY01jRGJ6Yk5kUWVOZ1FoMGRYY09lVGdZZFhlTWdrYjRhdGRFYTFiSWZ3ZEFiRmhJZitjRWZnYWthbGJMYUJjSmRmYVVlamhaY0toSGZ4Z2RkVWZPaHdkRWRsYUJheWQ4Z01kSmRUZzhhS2hVZGpiQmNiZVhlQWZ0ZVllRWJEZVVlb2ROZ3phVWh1Z0FoQ2JaZ1FhVWN3aG9mMGZEYUZmRWNVZkJjVWUwZnhhSGNBZU1ncGFJZnlmQWVvYlVoamJNYklnTWRsaFlkTmZDZnhiQWJQZlZiQWJnZm9mTWRsYWtmMmVBY0RhSWVRZkRlQWE4Y3pkVWZEYlVnTmdGZHpka2cyYkZmemZKZE9hTGNSY05hU2VNZ0FlQmZTZVBmaGFJaEphSmdTY3doU2VYZjFjSWYyaFNkaGU4ZFhlVmNEaHNnQmNKZVFmY2Z2YkRlQ2dVaC9oQ2ZsY0lhd2dXYzFjd2dMYldoQmNBZTFhS2NEZ2NjMWZMYWdmQWVtaFVjRmZNZktmTmZBYnhjUmZGYUFlVmdOYk1iUmJ3ZkRiS2FTZU1mZ2FLYkZhSWV6ZUNhRGhKZFdiRGRRY3NoUWREZDFmUWVJYktnRGZKaFphTmdnY0FleWVFZ0Fnd2JQZE1lMWZBZzFnRGRSZmNjNWhOY2hiY2Z5ZlRoaWgwZVRnVWJqZ0FoQWFVYWphNGhTY0NiU2ZVYXNkRWZsZzliU2ROZ2tmb2NmZUZiMWVRZTdkQWZTZ1VmSGNMYXdmd2dsZVBod2ZwYlNnTWZGY3RjY2JDZzFoZ2dRY05kU2JnYzNoTmJTYTRnQWJKY2xhQmZUaENnamJRZk1hVWJSYVFhRmZUZlRnRWRjaEFkeWZrYmpmSWVDYmhoU2ZNZndoZ2d5ZFZiZ2gwZUxlRWFBYjlkVWhDY0NlZ2J5Z1dnVGNZYUFjTWhoZEFkTWVEZHpmTmdRaE5oUWYwY1hkT2JUYVlhWGdNZWtkNGV0ZEVjMWdJYndjQWRGYUlnK2JFZmdha2RsZUxhQmhKY2ZnVWVqY1phS2ZIaHhiZGRVZk9kd2RFaGxkQmV5ZDhjTWNKZlRoOGdLZ1VlamVCZ2JiWGZBZHRhWWhFZkRlVWVvaE5oemVVZXVhQWNDY1pjUWNVYXdob2gwZERjRmZFY1VjQmVVZjBheGFIY0FmTWVwZElleWFBZG9iVWFqZ01lSWhNZmxoWWZOaENieGdBZVBkVmNBaGdjb2VNZGxma2EyYUFhRGNJY1FmRGJBZjhiemNVZkRjVWdOaEZlemhrYTJoRmJ6aEpkT2hMY1JmTmJTZ01jQWJCZVNnUGFoYklnSmVKZVNnd2ZTYlhoMWdJZjJlU2hoZDhiWGFWZ0Rmc2FCZkpmUWVjZHZjRGZDZlVkL2JDZWxjSWZ3YVdkMWR3ZkxjV2JCZkFkMWhLZkRjY2IxaExkZ2FBYW1hVWdGZE1kS2ZOYUFneGRSYUZjQWhWY05lTWFSZndkRGNLZVNmTWZnYUthRmhJaHpiQ2hEZ0poV2JEZ1Fkc2VRaERlMWZRZkllS2ZEYUphWmdOYWdmQWd5Z0VkQWN3ZVBjTWIxYkFjMWZEZVJhY2Y1YU5naGRjYXliVGNpZjBiVGZVZGpkQWZBaFVmamc0Y1NjQ2RTZ1Vhc2hFZWxhOWFTZU5ja2FvZmZnRmQxYlFlN2NBYlNiVWVIZUxod2R3YmxhUGd3ZnBkU2hNZkZjdGNjYkNoMWNnZ1FhTmJTYWdkM2NOZlNkNGZBYkplbGhCZlRkQ2NqZ1FlTWZVZFJkUWdGZVRiVGRFY2NoQWd5ZmtjamhJaENjaGhTZ01nd2ZnY3lmVmhnYzBjTGZFY0FoOWZVZkNlQ2NnYXlmV2RUZFllQWFNZ2hmQWRNY0RiemVOYlFoTmNRYzBjWGhPaFRhWWVYZU1na2E0aHRlRWYxZ0lmd2NBZUZmSWgrZkVlZ2drZWxiTGVCYkphZmJVYWphWmRLY0hleGVkaFVkT2V3Y0VkbGRCaHllOGhNZkplVGY4ZEtjVWFqZUJlYmZYZkFjdGhZYUVkRGNVZG9iTmh6ZVVndWdBZkNjWmJRZFVld2JvZDBnRGZGZkVjVWZCZFVhMGh4aEhmQWdNYnBiSWN5ZUFlb2hVZmpiTWFJaE1ibGJZYU5nQ2F4Z0FhUGJWYUFnZ2FvY01kbGhrYjJnQWJEYklkUWZEZ0FmOGZ6aFVoRGJVYk5mRmN6ZWtoMmhGZHplSmNPaExkUmNOZ1NkTWZBZkJlU2dQZmhjSWRKZkpnU2J3ZFNnWGMxZklkMmJTYmhmOGFYaFZoRGRzaEJiSmdRY2NldmhEYUNmVWEvZENlbGFJZHdoV2IxaHdiTGFXZUJiQWIxZ0tnRGdjZDFiTGRnZUFkbWhVZUZjTWVLaE5oQWd4YlJhRmhBZ1ZiTmZNZlJod2ZEY0tlU2dNYmdnS2JGZ0liemVDZkRoSmZXZ0RjUWJzZ1FnRGQxZ1FlSWZLY0RhSmdaZE5nZ2JBZXljRWhBZ3dkUGZNYjFkQWIxZkRlUmFjaDVjTmZoY2NieWdUYWljMGZUZFVnamRBYUFjVWRqaDRkU2RDaFNmVWFzYUVobGU5Z1NnTmhrZW9hZmFGZDFlUWg3ZkFlU2NVZ0hkTGN3YndmbGZQZXdlcGJTYU1nRmN0YmNoQ2UxYWdhUWVOY1NjZ2MzYU5kU2M0Z0FiSmZsZUJhVGdDYmpnUWVNZFVoUmhRaEZjVGVUY0VhY2ZBZXlla2dqZElhQ2VoZVNiTWh3ZGdleWZWZWdjMGJMYUVoQWU5Z1ViQ2NDYmdoeWRXYVRiWWVBY01haGNBZ01jRGd6Yk5iUWVOYVFjMGhYZE9hVGhZYVhhTWVrYzRndGFFYzFiSWR3ZUFjRmhJZCtiRWFnYmtibGZMZkJhSmdmZ1VnamRaY0tlSGd4ZmRiVWdPZHdjRWZsZkJneWc4Yk1iSmVUZjhoS2FVYmpnQmZiY1hmQWd0YllnRWdEYVVnb2dOZXpkVWN1Z0FoQ2RaZVFiVWh3Y29hMGJEZUZkRWhVaEJjVWgwZ3hmSGRBZU1mcGJJYnlmQWVvZVVoamhNY0lnTWFsZ1lhTmFDZXhiQWVQZlZoQWhnZG9jTWFsYWtiMmVBZERmSWNRaERlQWc4aHpmVWJEY1VoTmJGY3pka2EyYkZnemdKYU9lTGFSZE5jU2dNZ0FkQmNTZFBkaGJJZEpiSmdTZ3dhU2FYZzFnSWEyY1NhaGE4YVhjVmZEYnNhQmVKYVFmY2Z2Y0RlQ2dVZS9jQ2hsYUlod2hXYjFjd2RMYVdkQmZBZzFlS2JEZ2NoMWVMaGdmQWNtaFVmRmVNZEtjTmNBZHhlUmFGZUFkVmROZU1hUmZ3ZERlS2dTYk1kZ2hLYUZiSWR6ZUNjRGRKY1djRGVRZ3NoUWNEYjFjUWNJZ0thRGZKZFpnTmdnYUFmeWhFZUFnd2VQY01kMWdBZjFkRGVSaGNoNWROZ2hiY2R5Z1RjaWMwaFRoVWhqZUFkQWJVZmpiNGVTZENkU2VVYnNkRWdsYTlhU2ROYWtnb2VmYkZnMWVRZDdjQWdTaFViSGhMZndmd2JsaFBid2dwaFNkTWdGZHRnY2dDZDFlZ2ZRZk5jU2FnZjNhTmdTYTRmQWdKYWxmQmdUYkNnamhRaE1nVWNSZlFiRmNUYlRjRWhjZEFheWVrZmpmSWdDYWhoU2ZNYndoZ2V5Z1ZjZ2gwZExlRWRBYjliVWhDYkNmZ2F5YldlVGJZZkFlTWVoZUFlTWNEYXpiTmJRZE5mUWEwYlhhT2hUaFlkWGJNZmtiNGh0Z0VoMWJJZXdhQWJGZEllK2VFYmdoa2JsZUxmQmhKY2ZkVWRqZVpoS2ZIZHhoZGJVZU9jd2RFYWxjQmN5aDhlTWFKYVRnOGJLZ1VnamJCYmJoWGNBYXRjWWNFZERjVWZvYk5hemFVZXVlQWJDYlpjUWFVZndhb2MwZURoRmJFZVVnQmJVYjBoeGhIaEFhTWJwZ0lmeWZBZG9hVWVqYU1mSWNNYmxiWWVOY0NkeGFBYlBnVmVBaGdkb2NNY2xja2UyYkFhRGFJY1FnRGZBZzhkemRVaERkVWdOZ0ZnemRrYTJnRmd6ZEpmT2dMZFJoTmVTZU1mQWZCaFNmUGFoZ0lkSmFKY1Nid2FTZVhhMWNJZzJoU2RoZDhkWGFWZ0Roc2JCZEphUWVjZnZoRGdDYVVnL2JDZWxlSWN3Z1doMWV3YkxjV2ZCZ0FmMWdLZ0RhY2MxYUxjZ2NBZG1hVWdGYU1mS2NOaEFieGNSYkZiQWVWY05iTWJSZHdiRGZLZ1NjTWZnZktkRmVJZnpmQ2VEYkpmV2hEaFFmc2dRYURhMWZRY0lmS2hEYkplWmZOZ2doQWR5Y0VkQWN3ZFBoTWIxYUFoMWdEZVJlY2I1Zk5haGFjYnljVGRpYTBjVGZVaGpiQWhBaFVmamE0Y1NnQ2dTZlVic2hFZGxlOWNTY05na2hvZmZhRmcxYlFmN2RBZVNlVWRIZUxnd2h3Z2xmUGR3YnBnU2dNYkZodGhjY0NkMWdnZ1FjTmZTYWdnM2FOZFNiNGRBZEpkbGVCZFRoQ2FqaFFnTWdVYVJnUWNGYVRlVGNFaGNhQWJ5aGtnamRJYkNhaGhTYk1ld2NnZnliVmhnZTBmTGRFYkFlOWFVY0NlQ2VnYnljV2ZUZlliQWVNZGhhQWZNZkRoemJOYVFhTmhRaDBnWGdPZVRiWWFYZ01la2M0Y3RoRWMxY0lmd2RBZkZiSWErZEVoZ2VrYWxlTGJCZEplZmVVYmpnWmVLYUhieGJkaFVjT2Z3Y0VkbGRCZXloOGhNZ0plVGQ4aEtmVWFqYUJhYmdYZ0FidGJZaEVmRGFVY29kTmd6ZVVndWJBZ0NhWmFRZFVnd2JvZzBkRGdGZEVhVWdCZFVjMGF4Z0hlQWdNZXBoSWV5YUFib2RVYmpkTWJJYU1mbGdZZU5mQ2V4Z0FlUGRWY0FoZ2JvaE1nbGFrZDJhQWNEZkllUWREY0FlOGJ6Y1VhRGZVYU5hRmh6ZWtmMmhGZ3poSmZPZkxiUmROYVNlTWFBY0JmU2RQYmhmSWRKZkpjU2J3YlNhWGYxYUloMmdTZ2hlOGZYZlZjRGdzYUJmSmVRZ2NkdmhEYUNlVWgvZkNkbGNJZndhV2cxYXdnTGJXZkJnQWgxZktkRGhjYzFhTGJnYUFmbWdVaEZoTWZLZk5mQWJ4Y1JiRmhBZFZlTmdNY1Jnd2JEYktlU2dNaGdhS2JGaEljemFDZERiSmdXYkRiUWJzaFFjRGMxYlFkSWZLY0RmSmRaZU5nZ2JBYnloRWdBYXdjUGhNYTFlQWUxaERnUmVjaDViTmVoZWNleWJUYWloMGFUZFVlamZBZ0FnVWFqZzRlU2NDY1NiVWZzZ0VnbGQ5aFNlTmdraG9oZmJGYTFnUWM3ZUFjU2NVZUhhTGV3ZXdhbGZQY3dlcGhTYk1kRmV0Y2NmQ2cxYWdlUWhOZVNlZ2gzZ05lU2M0YkFhSmNsZUJhVGJDZ2plUWFNZVViUmhRY0ZnVGdUaEVlY2dBZXlma2hqYUlhQ2NoYVNlTWZ3aGdheWhWYWdkMGVMYkVkQWQ5YVViQ2RDZmdieWFXZlRiWWRBY01jaGJBaE1mRGV6Yk5iUWZOZFFiMGVYZU9iVGNZY1hhTWNrYzRldGJFYzFmSWJ3Y0FkRmRJYythRWdnY2tlbGRMaEJoSmRmYlVlamdaZUtkSGN4ZmRlVWhPZHdoRWZsZ0JleWE4aE1nSmdUYjhkS2RVZ2piQmJiZ1hmQWh0YVlkRWdEaFVib2dOZ3poVWd1YUFlQ2haZFFmVWh3Y29mMGVEaEZoRWhVYkJjVWMwYXhmSGNBZE1hcGZJYXliQWhvY1VkamVNYklhTWVsY1lnTmhDYnhoQWRQY1ZnQWhnY29iTWNsYmtiMmhBaERkSWZRZ0RkQWY4ZHphVWNEZlVmTmVGY3pha2QyZkZhemdKZU9lTGdSZk5mU2dNY0FnQmFTZ1BjaGZJYUpoSmNTY3diU2FYYjFnSWQyZFNjaGE4ZFhjVmdEYXNnQmVKZ1FoY2N2aERhQ2hVZC9jQ2NsY0ljd2VXZTFid2RMY1djQmJBYzFmS2dEYmNkMWZMZGdhQWZtYlVlRmdNZUtjTmJBZXhnUmFGZEFjVmVOY01iUmV3YkRnS2VTYU1mZ2RLY0ZhSWV6Z0NmRGRKZ1dhRGZRYXNoUWNEZjFoUWdJZUtmRGJKZ1poTmdnYUFheWJFZUFkd2hQZ01oMWFBZTFnRGRSZ2NkNWFOZmhlY2d5Z1RnaWgwZVRkVWNqZkFoQWdVZWpkNGhTZ0NoU2dVZnNnRWdsYzlmU2ROZmtkb2JmYkZlMWVRZTdkQWdTZVVmSGZMZndod2NsYVBod2hwZVNmTWNGY3RnY2JDYTFhZ2NRYk5lU2dnYzNlTmRTaDRhQWhKZ2xiQmNUZENiamhRYk1hVWRSY1FhRmRUaFRnRWJjY0FneWZrY2piSWdDZGhjU2dNYXdmZ2F5Y1ZkZ2MwYkxkRWhBZjlmVWVDYkNoZ2V5YVdkVGJZZUFhTWJoYkFoTWFEYXpjTmNRZE5jUWYwZFhnT2VUZllmWGJNYWtmNGh0ZUVlMWVJZ3dhQWJGZUllK2ZFaGdja2VsYUxoQmVKYWZjVWdqYVpnS2RIZHhnZGFVZE9nd2VFYmxlQmN5YjhnTWZKY1RjOGFLZ1ViamZCZmJjWGJBaHRnWWdFZkRkVWJvZE5hemdVZ3VoQWJDZ1phUWRVYndib2UwZERmRmdFYlVmQmFVZzBheGdIY0FhTWNwY0lneWNBaG9kVWJqY01lSWRNaGxoWWROZ0NoeGNBZFBnVmJBZmdhb2FNYWxla2EyZ0FmRGdJaFFjRGFBZzhjemZVZERnVWVOZEZiemFrZTJiRmR6aEpmT2hMaFJhTmdTZ01nQWhCYlNlUGZoZkllSmJKYlNkd2JTZ1hkMWFJYzJoU2hoYzhjWGZWYkRoc2NCZ0pkUWdjZHZiRGNDYVVnL2ZDYWxnSWd3YVdoMWN3ZExoV2RCYUFkMWNLY0RjY2QxYkxnZ2RBY21oVWJGZE1lS2ZOaEFleGdSZEZiQWJWaE5mTWhSZ3doRGZLYVNiTWNnaEtmRmJJYXpjQ2VEZkpnV2dEZVFkc2VRZkRhMWZRZElnS2hEZkpoWmZOZ2dhQWN5YUVoQWV3ZlBlTWIxZEFkMWNEY1JiY2E1aE5kaGVjYXlkVGhpZTBiVGRVYWpjQWRBZFVhamE0YlNkQ2hTZlVoc2ZFZmxhOWJTYk5ma2hvZGZiRmcxZVFhN2FBZ1NmVWVIZExnd2J3Z2xkUGJ3YnBmU2JNZkZldGNjZ0NjMWFnY1FoTmhTY2dhM2hOZVNiNGZBaEphbGhCZlRoQ2RqZ1FnTWFVZVJmUWhGaFRoVGNFZmNjQWF5YWtnamRJaENmaGJTaE1md2ZnYnlmVmVnZjBnTGZFZUFjOWRVaENlQ2RnZ3liV2dUZ1lnQWZNZmhkQWNNZURkemVOZlFjTmFRaDBnWGZPYlRnWWFYaE1oa2M0YXRnRWMxZUlhd2dBZUZnSWcrYUViZ2drY2xjTGRCYUplZmRVY2phWmFLYkhjeGZkZlVkT2F3Y0VnbGdCYnlmOGhNYkpjVGM4Z0toVWVqYkJiYmRYZkFhdGFZZUVlRGNVZG9oTmN6aFVjdWZBZkNlWmFRZlVjd2dvYzBoRGJGZkViVWRCY1ViMGh4ZUhhQWdNZnBhSWd5ZEFhb2ZVZ2pjTWJJYU1kbGVZYU5oQ2Z4ZUFhUGRWZUFoZ2hvZk1jbGNrZTJjQWNEYUlkUWJEZEFiOGZ6aFVjRGVVZE5mRmJ6ZGtiMmZGZHpoSmZPYUxnUmZOZ1NoTWZBaEJnU2hQZ2hkSWdKZEpjU2Z3ZFNlWGExYklmMmdTYmhiOGRYYVZlRGVzYkJjSmFRY2NjdmdEaENiVWgvYUNobGFJYndkV2cxaHdjTGVXZ0JlQWMxZktnRGhjYzFmTGVnZUFmbWhVYkZmTWJLYk5nQWZ4ZFJhRmRBYlZoTmdNYVJjd2REZ0tjU2dNZGdmS2hGZkllemZDY0RjSmdXYkRhUWdzYlFlRGUxZFFkSWRLaERoSmNaYk5jZ2VBZnljRWhBY3dlUGNNYjFnQWExYURlUmNjYzVhTmJoZmNieWVUY2lmMGdUZlVmamhBaEFoVWFqZDRmU2VDYVNnVWhzYkVhbGY5Y1NoTmNrZ29lZmhGYjFoUWY3YUFnU2FVZUhiTGd3aHdjbGNQY3dlcGNTZ01mRmV0YWNlQ2UxY2diUWdOZFNmZ2YzZE5mU2M0aEFiSmhsZUJnVGVDYmpoUWRNZlViUmFRYkZkVGdUYkVkY2VBYnlna2ZqZ0lnQ2ZoZ1NoTWh3aGdheWRWZmdhMGFMZ0VhQWY5aFVhQ2dDYWdkeWhXZlRoWWdBZk1naGNBY01jRGF6Yk5mUWVOY1FlMGdYYU9lVGFZZlhoTWRrYzRhdGdFZTFmSWN3aEFjRmNJaCtiRWZnYWthbGhMZ0JoSmhmY1ViamNaYUtmSGJ4YWRkVWdPYndnRWNsZEJkeWM4Yk1mSmhUYjhjS2JVaGpmQmRiZVhiQWJ0Y1ljRWdEZ1Vob2ZOZ3phVWJ1Z0FhQ2RaaFFkVWh3ZG9oMGVEZkZlRWVVY0JoVWIwZXhmSGRBaE1kcGFJZ3liQWhvYVVkamJNYkllTWFsY1loTmVDZXhmQWhQZFZkQWZnaG9mTWdsaGtkMmhBYURlSWFRZ0RmQWM4aHpoVWJEZVVlTmNGaHpoa2IyZkZoemJKaE9hTGFSYk5iU2ZNZ0FmQmJTZFBmaGdJZUpjSmNTZndjU2ZYZDFhSWMyYlNmaGQ4Y1hlVmVEZHNjQmdKYVFmY2R2ZURiQ2JVYy9hQ2JsZElkd2NXZTFkd2RMaFdmQmhBYTFnS2ZEYWNkMWFMZWdiQWNtZlVhRmRNYUtkTmdBYnhnUmVGZ0FkVmNOZk1mUmN3ZkRnS2hTYk1nZ2JLZkZhSWh6ZkNjRGdKZFdiRGFRY3NhUWVEYzFnUWVJZ0tmRGdKZlpoTmRnY0FieWhFYkFmd2FQaE1kMWVBZjFhRGdSYWNkNWJOYmhmY2Z5YVRlaWEwZVRlVWJqYkFiQWdVaGpkNGhTY0NmU2JVaHNlRWZsYjlmU2ROY2tlb2hmZkZmMWJRaDdnQWZTZFVhSGJMZHdjd2dsaFBkd2dwZ1NhTWhGYnRiY2dDZTFiZ2hRZU5jU2hnYTNjTmVTYzRhQWNKZmxjQmZUY0NiamRRZk1nVWZSaFFjRmJUaFRnRWRjYUFjeWNrZWplSWhDZmhiU2JNZHdlZ2h5Y1ZhZ2gwZ0xhRWhBZDlhVWVDaENiZ2J5aFdhVGJZY0FlTWNoYkFjTWJEYnpiTmRRZ05nUWMwZlhiT2ZUZVlmWGJNZ2tjNGd0ZkVnMWNJZHdkQWNGZ0loK2ZFaGdla2dsYUxlQmdKZWZnVWFqZlpmS2dIaHhjZGRVYk9od2dFZmxlQmJ5ZzhiTWFKZFRnOGFLY1VhamVCYmJjWGRBYXRmWWZFZ0RkVWJvZ05lemVVYnVkQWNDZlpiUWNVYndjb2EwZ0RlRmRFZVVkQmZVaDBoeGNIZEFoTWdwZkljeWFBY29nVWVqZE1lSWJNYmxlWWJOZUNheGRBZVBkVmdBZmdmb2VNYmxna2YyZEFiRGJJZFFoRGZBaDhlemdVZURnVWROZEZjemVrYTJkRmV6aEpoT2hMZVJmTmdTZU1lQWNCZVNlUGhoY0lkSmZKYVNjd2RTaFhlMWFJYjJmU2NoYThjWGNWZkRlc2dCYUpjUWJjZnZjRGNDZlVlL2NDZ2xjSWV3ZFdlMWN3ZkxiV2hCYUFoMWdLYkRnY2cxZkxmZ2NBZm1kVWVGY01hS2VOZkFheGFSYUZmQWFWYU5iTWdSZXdoRGJLaFNiTWhnZUtjRmhJZHpnQ2hEZUpkV2dEZlFlc2JRYkRlMWhRZUlmS2hEZkpoWmNOY2dkQWJ5YUVmQWV3aFBoTWUxZEFlMWNEYVJmY2M1YU5naGZjaHllVGdpZDBoVGRVZmpmQWJBZ1Voamg0aFNjQ2hTYlVic2NFZGxjOWdTZU5la2dvZGZoRmIxYVFkN2hBaFNjVWRIZUxhd2J3aGxhUGJ3aHBjU2NNaEZjdGRjY0NkMWdnaFFhTmVTZ2dmM2NOY1NnNGVBaEpnbGFCaFRlQ2ZqaFFhTWFVY1JkUWRGYlRnVGJFY2NnQWd5YWtnamNJYkNkaGJTaE1od2JnYnllVmNnYjBnTGJFZEFhOWdVYkNnQ2VnYXlkV2ZUZlliQWhNaGhmQWFNaERmemVOYlFnTmJRYzBhWGNPZ1RoWWNYZ01la2I0ZnRhRWcxYklod2JBaEZiSWMrZUVmZ2NraGxoTGNCY0plZmRVZ2pjWmhLZ0hleGJkZ1VmT2V3ZkVjbGdCYXljOGhNZUphVGE4YktoVWNqZUJiYmhYYUFkdGVZaEVoRGZVaG9oTmZ6ZlVhdWFBZUNiWmVRYlVod2JvYTBhRGZGaEViVWFCY1VnMGh4ZkhoQWJNZHBiSWZ5Y0Fjb2VVY2piTWVJaE1ibGZZY05lQ2h4ZkFlUGhWZkFmZ2JvZU1mbGNrYzJnQWVEYUlmUWZEZEFhOGF6YVVkRGFVZk5kRmN6YmtiMmNGYnplSmZPZkxiUmVOZlNjTWNBZEJnU2hQaGhnSWFKYkplU2F3YlNoWGUxYkliMmNTY2hkOGRYZ1ZjRGRzY0JhSmdRZGNidmdEYkNiVWUvZUNmbGZJZ3dmV2YxZ3doTGVXYUJmQWExaEtlRGdjZTFkTGJnaEFhbWNVaEZoTWhLY05kQWJ4Y1JiRmJBaFZoTmNNZVJjd2REZEtjU2NNYWdlS2NGZUliemFDaERoSmRXaERhUWhzZVFkRGcxYlFoSWdLYkRjSmNaZ05hZ2RBZnloRWhBZHdlUGZNYjFnQWcxY0RmUmJjZTVjTmhoZ2NmeWJUY2loMGNUY1VjamVBYUFlVWVqYjRjU2FDY1NmVWhzZUVmbGI5Z1NhTmdrZG9nZmFGYjFmUWc3Y0FjU2NVZ0hoTGh3ZHdkbGdQaHdkcGhTaE1iRmh0Z2NhQ2gxaGdhUWFOZlNmZ2EzYk5nU2Y0aEFmSmNsZ0JkVGVDYmpkUWFNZlVnUmdRYUZmVGRUY0VkY2ZBZHloa2NqZklnQ2doaFNkTWV3YmdoeWNWZ2dmMGdMZkVnQWE5YlVlQ2hDaGdjeWdXaFRlWWNBYU1naGJBaE1mRGN6aE5hUWVOY1FjMGNYYU9jVGRZZlhlTWNrYTRmdGNFYjFiSWh3ZkFnRmhJZytlRWRnZWtjbGFMY0JlSmdmYlVlamJaZEtoSGV4ZGRiVWZPY3dmRWVsZUJheWg4ZU1lSmRUZzhoS2hVZmpkQmFiZVhiQWZ0aFljRWdEZVVkb2NOaHpjVWV1Z0FoQ2haZFFmVWN3Y29oMGREYUZhRWJVZkJmVWMwaHhiSGdBZ01icGRJZ3liQWZvaFVnamJNZElhTWNsZVlhTmNDZ3hmQWVQZlZkQWZnYm9kTWdsZWtoMmNBY0RlSWJRZkRiQWE4YnpnVWFEZVVlTmFGZnpoa2gyZ0ZjemVKYk9lTGNSY05nU2VNZEFiQmFTYlBiaGJJYkpmSmhTaHdmU2ZYZDFjSWQyYVNlaGU4YVhhVmhEaHNnQmVKZlFkY2Z2YURlQ2VVZy9jQ2RsZUlod2ZXYzFid2NMaFdoQmJBYjFhS2JEZGNjMWZMYmdiQWNtZFVoRmVNaEtmTmRBZHhiUmFGYkFlVmZOZ01jUmZ3ZERkS2NTYk1nZ2VLY0ZiSWJ6ZENiRGFKY1dhRGJRZ3NnUWNEZjFoUWZJYUtkRGRKYlpmTmJnYkFleWRFZkFnd2JQYU1iMWFBYjFjRGNSYmNiNWROaGhnY2V5ZlRnaWYwZVRhVWhqYUFjQWRVYmphNGJTZ0NhU2dVY3NoRWNsYTlhU2ZOY2tib2ZmZkZoMWNRYTdlQWhTZVVoSGJMZHdid2dsZFBod2VwY1NlTWVGZXRoY2RDaDFoZ2FRZU5iU2FnaDNmTmNTZTRmQWVKYWxmQmdUYkNkamZRY01jVWdSaFFmRmJUZlRmRWFjYUFkeWNrY2pjSWFDY2hhU2hNYndjZ2F5Z1ZjZ2QwaExmRWhBZjlkVWJDaENoZ2V5ZldnVGJZZUFmTWNoY0FjTWhEZ3poTmNRaE5oUWEwZVhoT2FUZlljWGJNZ2tnNGN0ZEVjMWdJZHdhQWFGaElhK2RFaGdja2JsZ0xoQmZKYWZlVWVqY1pnS2FIZHhmZGZVY09md2JFZGxnQmd5ZjhkTWRKYlRjOGhLZVVjamhCaGJnWGdBZ3RhWWVFZkRiVWRvYk5jemhVZ3VhQWhDaFpoUWRVZndib2gwZkRhRmNFaFVnQmJVYTBoeGhIaEFkTWhwY0lheWJBZW9hVWhqYk1nSWFNYWxhWWNOZENoeGZBY1BnVmZBY2djb2hNYmxia2gyZUFkRGVJZlFjRGFBZjhiemdVZERnVWVOYUZlemVrYTJjRmV6aEpiT2ZMaFJmTmdTZk1nQWJCZVNmUGdoZUllSmVKYVNod2ZTZ1hmMWVJZjJlU2NoZjhnWGNWZ0Rkc2NCZUpnUWJjYXZlRGNDZlVoL2FDaGxoSWh3Y1doMWJ3ZExiV2dCZ0FnMWVLZERlY2gxYUxhZ2hBYm1hVWNGYU1kS2ROZ0FmeGhSZEZmQWZWZ05nTWRSZHdmRGdLZFNiTWJnaEtlRmRJaHphQ2ZEYkplV2NEZlFjc2dRYkRlMWNRY0lnS2ZEYkpoWmZOZ2diQWJ5aEVnQWN3YlBmTWExaEFlMWZEaFJmY2Q1Z05laGdjaHloVGZpaDBhVGFVZ2pmQWRBZVVhamE0YVNjQ2RTZFVhc2dFY2xjOWJTYk5oa2JvZmZoRmMxZFFiN2ZBYlNhVWVIYUxod2R3YmxlUGZ3Z3BiU2dNZkZkdGRjY0NkMWFnaFFkTmJTYmdkM2JOaFNoNGhBZUpnbGJCYlRiQ2dqYVFjTWJVYVJkUWNGY1RiVGNFZ2NjQWF5aGtmamFJaENkaGhTZE1hd2RnZXljVmRnZDBoTGhFZ0FmOWdVZENnQ2RnZnlnV2JUZlliQWdNY2hoQWFNZ0RjemhOZ1FnTmZRZDBmWGhPZVRlWWhYYk1na2E0ZHRnRWcxYUlkd2dBZ0ZoSWQrY0VjZ2FrZWxhTGdCZkplZmNVYmpiWmJLaEhheGdkZ1VlT2J3aEVhbGdCZ3lhOGRNZUpjVGE4ZEtjVWNqYkJnYmRYZkFmdGZZZ0VmRGVVY29oTmV6Z1VmdWRBYUNoWmRRZ1Vid2FvYjBiRGNGYkVoVWVCZlVkMGh4ZkhjQWFNYnBmSWd5Y0Fnb2ZVZGpkTWNJYk1ibGNZYU5jQ2V4ZUFlUGFWZ0FnZ2RvZE1hbGNrYTJmQWZEYklhUWVEaEFnOGJ6ZFVmRGdVZU5kRmF6aGtiMmhGZnplSmNPZUxoUmZOZ1NkTWRBZEJhU2JQZGhiSWdKZUpkU2d3aFNlWGIxY0llMmFTY2hjOGdYYlZnRGNzZkJoSmZRZGNkdmREZkNoVWIvY0NkbGRJZHdlV2gxZ3dnTGFXYkJkQWMxZ0tnRGZjYjFkTGZnY0FobWRVZ0ZiTWVLZ05hQWN4Z1JkRmRBY1ZnTmFNY1Jhd2FEY0tlU2VNaGdkS2ZGY0llemRDZURjSmFXZkRnUWdzYlFnRGcxYlFnSWhLZURmSmVaYU5hZ2ZBZ3lhRWRBaHdnUGZNYzFhQWUxaERnUmhjZDVlTmJoYmNieWhUZ2lmMGdUZ1VmamNBaEFiVWNqYzRmU2dDZlNjVWRzZkVnbGg5Z1NlTmFrYm9oZmhGYzFkUWM3ZUFhU2ZVZ0hiTGJ3ZXdmbGNQZ3dlcGRTZ01kRmZ0Z2NhQ2MxZmdoUWJOYlNnZ2MzaE5jU2Q0YkFlSmhsZEJjVGdDZmpoUWFNYlVnUmZRaEZnVGhUZEVhY2JBZHlla2dqaElnQ2JoYlNiTWh3ZmdieWhWYWdoMGJMZkVmQWE5ZVVlQ2FDYWdoeWVXZVRoWWRBZ01oaGJBZU1nRGJ6Zk5lUWROZlFlMGFYY09mVGFZaFhlTWRrYzRhdGdFZTFiSWF3aEFmRmRJaCtlRWRnY2tlbGJMZEJnSmNmY1ViamFaZ0toSGh4Y2RlVWRPYXdlRWhsZ0JmeWQ4Yk1hSmdUYzhjS2VVYmphQmViYVhhQWd0YVllRWNEYVVmb2ROYnplVWV1aEFoQ2ZaZlFiVWd3Zm9oMGREYkZmRWJVYUJlVWEwZnhjSGVBZk1hcGhJZXliQWhvY1VjamhNZUlnTWFsZ1loTmZDZnhoQWFQYlZlQWJnaG9kTWVsZ2tmMmhBZkRlSWVRZURlQWY4aHpoVWZEY1VnTmNGaHpna2UyYUZmemRKZE9lTGFSZk5hU2JNY0FnQmRTZ1BlaGhJY0pjSmNTYXdlU2RYYTFoSWMyYVNkaGM4ZlhnVmNEaHNlQmRKZVFiY2Z2ZkRoQ2ZVZS9oQ2hsZElmd2JXZTFkd2dMY1diQmFBZjFiS2REZWNmMWhMaGdiQWVtYlVjRmRNZktnTmFBYXhhUmdGaEFiVmROZ01mUmR3YkRjS2ZTYk1kZ2VLaEZoSWN6YUNiRGRKY1dkRGZRZXNjUWdEZzFkUWdJZUtiRGNKY1plTmZnZEFheWZFY0Fhd2JQZk1kMWZBaDFiRGRSY2NoNWFOY2hmY2Z5YlRoaWYwZFRkVWZqY0FkQWFVZmphNGNTY0NiU2NVYXNkRWVsZDloU2ROZGtmb2JmZkZnMWJRaDdhQWdTaFVmSGJMY3dkd2JsYlBnd2VwYlNkTWRGZXRiY2hDZDFoZ2JRYU5nU2VnYzNlTmhTZjRiQWNKZmxmQmJUZENjamNRYU1lVWZSZ1FnRmFUZVRnRWdjYkFleWZrYWpmSWZDYWhmU2RNZHdnZ2d5aFZoZ2EwZkxkRWJBZTliVWhDYUNoZ2Z5ZVdnVGNZY0FlTWRoZ0FjTWFEaHpmTmhRZU5mUWQwZVhlT2dUY1lkWGZNYWtnNGR0Y0VmMWhJZndjQWRGaElkK2FFaGdja2NsZUxjQmFKaGZmVWdqZ1plS2dIZXhmZGRVaE9kd2NFY2xlQmh5YThjTWdKZ1RjOGhLZ1VkamVCZ2JnWGNBY3RkWWhFaERmVWhvZU5kemFVZ3VhQWFDZVphUWJVY3dob2QwY0RoRmJFY1VkQmhVZDBjeGRIY0FnTWRwYklieWdBYW9mVWRqYk1mSWJNaGxoWWhOZENieGJBZVBiVmVBZmdlb2ZNYWxja2IyZkFkRGVJaFFoRGZBZThnemJVZURoVWROZEZhemNrZjJoRmR6aEpiT2ZMYVJhTmhTY01kQWZCYlNlUGJoYklkSmhKY1Nid2RTZlhhMWhJYzJmU2NoZThhWGdWYURhc2NCaEplUWJjZXZhRGVDYlVnL2FDY2xoSWd3YVdnMWR3YkxmV2hCaEFkMWdLY0RmY2IxaExoZ2hBYm1hVWZGZU1lS2NOZUFoeGZSYkZjQWZWZ05iTWNSZndhRGdLaFNhTWJnZkthRmRJZnpkQ2JEZUpnV2JEYVFmc2ZRZERoMWRRZ0loS2ZEYkphWmFOZmdiQWN5YkViQWd3YVBlTWIxZkFiMWFEZFJmY2c1aE5laGFjZnljVGhpZTBiVGZVZGpjQWFBYlVoamc0YVNkQ2FTY1Vkc2ZFaGxkOWNTYk5la2RvY2ZkRmYxY1FiN2JBZVNoVWVIZkxid2N3ZmxhUGh3Y3BhU2JNZEZndGhjYUNoMWVnYlFoTmFTZWdlM2VOY1NjNGhBZEpobGRCZVRkQ2ZqY1FiTWZVYVJhUWhGZ1RhVGNFY2NmQWR5YmtlamhJZENiaGRTZk1od2RnaHljVmVnZDBiTGZFZEFhOWNVZ0NkQ2RnZHlnV2RUYVlhQWhNZGhhQWFNZ0RhemdOY1FlTmRRYjBmWGhPYlRjWWVYYU1oa2M0ZnRhRWgxZ0lhd2JBZEZkSWMrY0VoZ2hrZmxkTGdCZUphZmRVYWpmWmdLZ0hkeGZkY1VoT2Z3Z0VnbGNCZ3lnOGZNZ0pnVGE4ZEtnVWZqYkJkYmNYaEFidGFZZUVlRGRVYm9nTmJ6aFVidWhBYkNlWmZRZFVid2JvZjBlRGNGaEVjVWFCZ1VjMGZ4Z0hnQWhNZ3BlSWh5ZUFib2FVZWplTWVJZ01kbGNZaE5mQ2Z4aEFnUGhWZ0FkZ2FvYk1mbGFraDJmQWNEZklnUWZEZEFlOGZ6Z1ViRGZVYk5hRmR6ZmtjMmhGYnpiSmdPYUxmUmdOZFNkTWNBYUJoU2ZQYWhmSWdKaEpoU2V3Y1NnWGQxZElmMmRTZ2hiOGhYaFZoRGdzY0JmSmZRZmNldmVEYUNlVWQvZUNnbGRJZHdkV2cxYndmTGNXZkJmQWMxY0tkRGFjZzFlTGVnZkFobWFVZ0ZjTWVLZk5lQWJ4ZVJnRmhBZ1ZnTmNNYVJhd2JEZkthU2FNaGdhS2RGYklhemFDZURnSmdXZ0RmUWFzZVFmRGgxZlFlSWJLZ0RiSmdaYU5oZ2NBZnljRWFBZndnUGVNZTFhQWgxYURiUmVjaDViTmNoZGNneWJUZGljMGZUZVVoamJBYUFkVWdqZTRnU2VDZFNjVWdzZEVjbGY5YVNhTmRrY29iZmJGZzFmUWY3Y0FlU2NVZkhmTGF3Y3dibGNQZndhcGJTZk1nRmh0ZGNoQ2UxZWdiUWZOZFNkZ2IzZU5iU2c0YUFoSmhsY0JoVGJDY2pjUWVNZ1VnUmVRYUZlVGhUZEVnY2JBZHlha2FqYUlmQ2JoaFNiTWJ3ZWdneWJWZWdoMGRMZUVkQWY5YlVmQ2JDZmdkeWNXYVRmWWdBZE1maGdBaE1hRGN6Zk5iUWNOaFFmMGNYYk9mVGNZaFhhTWFrZjRhdGdFZTFhSWd3Z0FnRmhJZitkRWZnZ2tlbGZMZkJjSmRmZVVoamZaZktnSGV4aGRhVWhPaHdhRWZsZUJneWQ4Yk1mSmRUZjhiS2ZVZWpkQmFiYVhjQWd0YVlnRWdEY1Vhb2ROZnpmVWd1Z0FhQ2FaYVFiVWJ3aG9kMGNEY0ZoRWFVaEJiVWQwY3hlSGhBZE1kcGNJZXlkQWVvZlViamJNYUlnTWVsZllmTmFDaHhmQWdQZlZlQWNnZG9iTWhsZWtoMmFBZURkSWhRYkRjQWQ4YnpjVWJEY1ViTmdGaHpma2MyYUZnemhKY09jTGZSY05iU2ZNYUFjQmNTZ1BjaGdJYkpnSmhTYndnU2dYaDFiSWIyZVNhaGE4YlhkVmJEYnNjQmRKY1FhY2N2YURmQ2NVYy9mQ2hsZ0lmd2dXYzFhd2NMZ1dmQmhBZDFoS2ZEZGNlMWdMZ2dhQWhtYlVnRmdNaEthTmdBYnhhUmFGYkFmVmROaE1nUmF3ZkRlS2ZTZk1iZ2ZLY0ZmSWZ6YUNlRGFKYldmRGNRYnNiUWhEaDFjUWhJZktlRGJKZFphTmNnY0FjeWJFYkFid2VQYU1nMWVBaDFoRGdSZWNjNWdOZ2hlY2J5Z1RjaWYwZ1RkVWZqaEFiQWNVZWphNGVTZ0NlU2RVZ3NlRWNsZDlmU2hOZWtjb2dmZ0ZnMWhRZjdlQWNTZFVnSGRMZ3dmd2JsZlBod2JwZlNnTWdGZ3RmY2hDYTFlZ2hRYk5jU2dnaDNoTmFTZTRlQWVKZGxnQmZUYUNiamVRZE1mVWJSZ1FmRmZUZFRkRWdjZkFneWdrZWpkSWFDaGhoU2JNYndkZ2R5aFZmZ2EwY0xjRWZBYjliVWdDaENjZ2V5ZVdmVGhZYkFhTWdoYkFkTWFEY3pkTmdRY05mUWQwZVhkT2ZUaFlkWGdNYWtnNGd0YUVjMWFJY3diQWVGZUlmK2NFZ2dia2RsaExlQmhKYWZnVWRqYlpnS2dIY3hoZGJVaE9id2NFY2xjQmZ5YjhnTWJKY1RkOGhLaFVmamhCYmJmWGJBZXRkWWFFaERhVWRvZ05oemVVZHVnQWRDZVpnUWZVZndlb2UwYURlRmFFaFVoQmNVYjBoeGVIYUFoTWZwZElleWVBaG9hVWVqZk1hSWRNYWxlWWJOZENmeGJBZ1BkVmJBYmdkb2NNY2xka2EyZ0FiRGNJY1FjRGNBYThhemdVZURkVWVOYUZjemVraDJlRmZ6Y0pmT2ZMYlJmTmJTYU1oQWVCYlNiUGRoYklhSmZKYlNld2JTZ1hoMWFJZDJmU2RoZThkWGJWYkRmc2ZCYkplUWJjZHZiRGVDYVViL2VDYWxhSWZ3YVdkMWh3ZUxjV2hCZUFiMWFLZkRhY2MxY0xlZ2NBaG1nVWVGYk1mS2FOY0FjeGNSaEZkQWFWZU5hTWVSYndlRGVLYlNjTWVnYkthRmJJZnpoQ2NEZ0piV2FEYVFoc2RRZkRhMWRRZElkS2FEZkpoWmROY2dhQWF5ZUVnQWN3ZFBkTWYxaEFlMWdEZVJiY2U1ZE5kaGZjYnloVGdpaDBlVGJVY2poQWJBZFVhamU0ZVNoQ2dTZ1Vnc2NFZGxmOWJTZU5na2RvZGZoRmUxZFFmN2VBYVNiVWJIYUxod2V3ZmxnUGZ3Z3BjU2JNaEZkdGJjZ0NhMWhnaFFhTmNTZ2dnM2NOZlNlNGFBaEpmbGRCaFRoQ2dqZlFmTWhVYVJiUWNGZlRmVGNFaGNhQWJ5Y2tjamZJZUNmaGVTYk1md2ZnZnllVmZnZTBhTGVFY0FjOWdVYkNhQ2RnZ3lhV2VUZFlnQWNNYWhhQWVNZ0RoemNOYlFlTmRRYzBnWGdPaFRmWWRYZ01ma2I0ZnRjRWcxZElhd2NBYkZlSWYrZUVoZ2drZWxnTGJCZUpnZmRVZGpoWmhLZkhmeGRkaFVjT2N3ZUVkbGZCY3ljOGVNaEpjVGc4aEthVWNqYkJiYmFYZ0FidGRZZUVkRGhVZW9jTmh6YVVhdWZBZENmWmNRZ1Vod2NvZTBiRGRGYUVoVWdCZ1VnMGN4Z0hhQWVNZnBoSWN5ZEFmb2FVYmpiTWZJYU1nbGZZY05hQ2F4ZUFkUGhWZUFmZ2FvZ01jbGJrZTJkQWJEZUlkUWJEY0FnOGN6aFVoRGZVZE5kRmV6Z2toMmJGZnphSmRPaExmUmVOYlNoTWRBY0JkU2RQYmhjSWJKZUpoU2N3YlNnWGMxY0liMmdTZGhiOGRYYlZmRGVzaEJkSmNRZGNndmVEYkNjVWIvaENmbGNJYXdiV2YxaHdoTGNXYkJoQWQxaEtkRGhjYjFjTGdnYkFkbWhVZkZlTWFLZE5mQWR4ZVJiRmVBZlZhTmhNYVJid2dEYUtjU2RNYWdmS2ZGZklkemFDZURjSmFXZkRiUWJzYVFhRGExZVFoSWVLZkRhSmhaZk5nZ2JBZ3lkRWJBYndiUGFNZjFhQWIxZURnUmdjZjViTmRoZGNoeWNUaGlmMGRUY1VmamJBYkFhVWRqZDRjU2FDaFNmVWdzYkVkbGg5Y1NhTmJrZG9jZmNGZjFlUWg3YUFhU2ZVYkhiTGJ3Y3dlbGdQaHdmcGNTZE1nRmh0ZmNoQ2cxYWdhUWZOZ1NkZ2EzY05iU2U0YUFlSmRsZUJkVGVDZGpoUWRNYVViUmRRZEZlVGdUYUVhY2RBY3lma2FqYUliQ2hoYVNmTWR3ZmdheWVWZWdmMGJMYUVhQWM5ZVVoQ2RDZ2dheWRXZVRmWWFBY01laGdBZU1lRGZ6ZE5oUWJOYlFhMGdYZU9hVGNZYVhhTWVrZzRodGJFZjFmSWN3YUFmRmFJZitjRWdnZ2tjbGNMZkJlSmVmYlVjamZaYktmSGV4Y2RkVWVPZndhRWhsaEJieWI4YU1lSmdUZThhS2RVZWpoQmViYlhnQWV0YVljRWdEYVVib2ZOYXpiVWJ1ZEFmQ2ZaZ1FoVWd3Y29iMGNEZUZnRWVVYUJmVWcwZnhjSGZBZU1ncGdJZHllQWNvZFVjamVNYUlmTWNsaFlkTmJDaHhmQWVQZFZiQWFnY29lTWhsY2tnMmhBY0RoSWZRZ0RlQWI4YnplVWVEZFVhTmZGYnpma2UyaEZhemdKZ09kTGZSY05nU2RNaEFlQmNTZlBnaGFJZ0pmSmNTZXdiU2NYZjFkSWIyYVNmaGQ4Y1hiVmhEZXNjQmVKYlFnY2R2Z0RmQ2dVZS9mQ2FsZklhd2FXYTFmd2dMZVdoQmVBZDFhS2hEYWNoMWNMY2dkQWdtY1VkRmRNYUtiTmNBZ3hiUmFGY0FkVmdOZ01kUmd3ZERoS2ZTY01nZ2ZLaEZlSWJ6ZUNkRGJKZVdnRGZRZHNiUWZEYzFkUWVJY0tkRGVKZVpnTmFnaEFjeWNFYkFod2JQZU1jMWFBYTFlRGdSYmNiNWVOY2hnY2d5YlRnaWQwYVRlVWVqYUFlQWRVZWplNGVTYUNmU2hVY3NnRWJsYjlmU2VOYmtib2ZmZUZlMWJRZjdlQWdTZVVjSGFMY3dnd2FsYlBmd2FwaFNnTWZGZ3RjY2NDZDFoZ2JRYk5mU2JnYTNkTmRTaDRiQWZKZ2xkQmdUaENmamFRZE1jVWRSZlFjRmFUaFRmRWJjY0FmeWRrYmphSWRDZWhhU2VNZHdkZ2J5YlZkZ2YwZExhRWNBYjllVWNDY0NlZ2V5Y1dmVGVZYUFnTWFoZ0FoTWREZXpiTmNRZk5nUWQwZFhnT2JUY1lkWGhNYmtkNGZ0YUVmMWJJYXdlQWJGYklhK2VFYmdja2JsYkxnQmVKZGZnVWJqYlpnS2dIYnhhZGZVZU9hd2dFaGxiQmR5ZThoTWZKYlRjOGZLZ1VlamJCYWJjWGJBZ3RiWWRFZERkVWNvY05nemRVZHVlQWZDYVpiUWhVZHdob2UwZkRiRmRFYlViQmVVYTBoeGdIZkFhTWdwZUlmeWRBaG9lVWFqYk1hSWVNY2xnWWdOaENneGNBZFBiVmdBZGdmb2FNYWxoa2YyZkFhRGVJaFFhRGhBZzhlemhVaERjVWhOZEZiemNrZjJhRmh6YUpnT2FMYVJnTmNTYk1lQWhCaFNhUGZoZklhSmZKYlNnd2JTZ1hoMWJJYzJoU2VoYjhoWGVWZkRic2NCZEpjUWRjYnZjRGhDZVVjL2ZDZWxoSWd3YldkMWd3ZExiV2dCZEFnMWNLYkRlY2UxZ0xmZ2RBZG1nVWFGYk1jS2hOYUFoeGRSZEZjQWJWYU5nTWNSZHdlRGNLaFNiTWVnY0tkRmdJaHpiQ2hEYUpkV2ZEaFFic2RRYURhMWJRY0loS2VEY0pmWmFOaGdoQWV5aEVlQWd3ZlBhTWgxZkFkMWJEZlJlY2Q1YU5haGhjY3liVGFpZjBhVGNVYWpoQWFBYVVmamI0ZFNmQ2RTYlVmc2RFY2xoOWdTZ05la2VvaGZkRmYxaFFhN2FBZlNhVWhIZUxnd2d3ZmxlUGZ3ZHBlU2hNZUZhdGNjZkNiMWFnZFFoTmZTZGdoM2ZOZFNoNGFBYUpjbGFCY1RnQ2FqZVFiTWRVY1JkUWVGYlRmVGdFZ2NoQWV5ZWtoamZJZENiaGZTZ01od2FnZXlhVmFnYTBnTGVFZ0FkOWVVZENnQ2dnY3liV2VUZFlmQWFNYWhiQWZNY0RoemROYVFiTmRRZTBnWGNPYlRiWWRYZE1la2I0Z3RkRWExYUlld2NBYUZlSWIrY0VhZ2JrZGxiTGVCYUplZmRVYmpoWmZLY0hleGJkZVVoT2N3ZUVjbGVCYnlhOGRNZUpiVGQ4YktiVWJqZ0JiYmZYYkFodGJZaEVhRGhVaG9hTmN6Z1VjdWJBZUNlWmVRZFVld2NvZTBnRGRGZUViVWFCZVVjMGh4ZEhnQWhNYXBjSWR5ZEFnb2NVZGpiTWhJZU1obGJZZ05hQ2Z4Z0FjUGRWYUFkZ2NvYU1jbGdrZjJkQWNEZElhUWFEYUFmOGZ6ZFVhRGdVZU5oRmd6ZmtjMmJGaHphSmVPaExkUmROZlNlTWVBYkJhU2NQaGhoSWhKZUpoU2R3aFNmWGQxZElmMmNTZGhnOGVYaFZjRGVzZUJjSmZRYWNidmZEY0NoVWMvZkNhbGVJZndnV2cxYXdhTGNXY0JiQWYxZktmRGRjYzFnTGVnZEFobWNVaEZoTWdLZ05kQWF4ZVJoRmJBaFZhTmdNY1Jid2hEaEtmU2dNZGdmS2VGZUlhemVDZURoSmdXZURjUWZzZVFoRGExYlFoSWdLYkRiSmRaZU5iZ2RBZ3lmRWFBZXdkUGFNZDFlQWgxZ0RjUmNjYTVjTmRoaGNieWJUZWlnMGRUYlVkamFBZ0FiVWVqZDRhU2hDYVNiVWdzZkVkbGE5ZlNkTmVrY29hZmdGYTFiUWY3YkFiU2dVZ0hoTGN3YndlbGNQaHdncGNTZU1oRmh0ZGNmQ2gxZGdnUWNOZVNnZ2QzYk5iU2M0aEFlSmZsY0JjVGRDYWpnUWZNZ1VmUmFRZUZmVGVUYUVoY2VBZ3lna2RqZklmQ2RoZFNhTWF3ZWdjeWVWZmdkMGVMY0VlQWQ5aFVhQ2VDZGdkeWRXYVRmWWZBZ01oaGNBZk1hRGJ6ZU5hUWNOYVFlMGJYYU9lVGdZZlhkTWNrZDRodGJFYjFiSWd3ZUFhRmFJYStkRWdnaGtibGFMZUJkSmJmYlVkamdaZEtiSGd4Z2RnVWdPZXdjRWhsYUJleWg4aE1oSmNUZzhmS2JVZmpoQmViYVhhQWJ0aFllRWNEZlVlb2hOZXplVWd1Y0FkQ2ZaaFFhVWZ3YW9lMGhEZEZmRWFVZ0JhVWIwYXhiSGJBZ01kcGNJYXllQWhvZlVoamNNY0loTWZsY1lnTmZDZnhkQWRQZVZoQWNnYW9jTWFsZmtoMmdBZkRiSWRRZ0RkQWQ4YXplVWdEZFVlTmZGaHpia2QyZkZnemZKZ09iTGFSZE5hU2hNZ0FlQmhTaFBjaGFJZ0pmSmFTaHdoU2VYaDFoSWUyZVNhaGg4ZVhnVmNEaHNjQmZKYVFhY2h2Z0RnQ2FVYi9hQ2RsZ0lnd2hXYTFod2hMZFdjQmdBZzFiS2NEZmNlMWRMZmdnQWhtYlVlRmdNZEtoTmZBYXhoUmRGZ0FmVmZOZk1hUmJ3ZkRlS2FTaE1iZ2VLZEZlSWZ6aENkRGZKaFdoRGhRaHNlUWZEZjFmUWJJYktlRGRKY1phTmVnZEFneWdFYkFhd2ZQYU1nMWhBaDFkRGdSZWNmNWFOYmhlY2J5ZFRnaWMwZ1RmVWhqaEFjQWhVZ2pkNGdTY0NoU2VVZHNoRWhsYjllU2ROYmthb2RmYkZmMWVRYjdjQWFTZlVoSGFMY3dhd2VsZlBod2dwZFNkTWVGZHRmY2ZDYjFlZ2NRZU5oU2FnZDNlTmdTYTRlQWVKYWxlQmRUZ0NmamFRZk1oVWRSZVFlRmhUZ1RiRWJjY0FneWZrZ2piSWhDaGhnU2hNaHdkZ2V5Z1ZhZ2YwZExjRWJBZDlnVWZDZkNkZ2F5ZFdnVGZZY0FhTWhoZkFhTWdEZnphTmRRZE5oUWEwZVhnT2FUYllnWGZNZWtkNGh0Y0VmMWhJZ3dnQWhGZklmK2FFZmdja2hsZExmQmJKZ2ZjVWJqZlpkS2FIYXhjZGNVZ09jd2NFZGxjQmJ5YjhlTWhKZ1RnOGFLY1VhamdCYmJmWGZBZnRjWWNFZERlVWhvYk5hemFVaHVhQWVDZlpjUWZVZ3dob2MwZURkRmhFaFVjQmJVZzBneGdIYUFnTWZwY0ljeWZBYm9lVWdqYk1kSWZNZWxiWWdOZENkeGJBZVBkVmhBaGdmb2NNY2xja2gyZkFhRGJJaFFoRGFBaDhjemhVaERjVWhOYkZhemhraDJkRmF6Y0poT2dMZlJiTmNTZE1jQWVCaFNiUGJoZElkSmRKYlNkd2FTZ1hjMWZJZjJjU2NoaDhlWGRWYURhc2RCY0piUWZjYXZnRGZDaFVmL2ZDY2xmSWh3aFdmMWR3ZUxiV2FCaEFnMWJLZERkY2IxYUxnZ2VBaG1oVWdGYk1lS2hOZkFkeGJSZEZkQWFWZE5jTWVSY3doRGFLZlNjTWNnYUtlRmRJZXpiQ2dEaEpmV2FEYlFmc2JRZkRhMWNRaEllS2hEZUpoWmVOY2dhQWN5YUVmQWd3ZlBkTWExYkFlMWFEZVJnY2Y1ZU5naGVjZHljVGJpZDBkVGJVZGpoQWZBZVVoamU0ZVNiQ2dTYlVlc2hFZGxjOWVTZ05ja2dvYWZnRmUxZlFkN2RBYlNlVWVIZUxhd2J3aGxlUGJ3aHBnU2dNZEZmdGFjZ0NmMWVnZFFiTmVTaGdhM2FOZVNlNGFBYkpobGdCYVRiQ2JqZ1FoTWdVYVJjUWVGZ1RoVGJFaGNoQWV5YmtlamdJZUNoaGhTY01od2NnY3ljVmRnaDBhTGNFYkFhOWNVYkNoQ2FnYnljV2VUZlllQWNNZmhoQWRNaERhemdOY1FmTmZRZTBmWGFPZVRnWWVYYU1la2c0ZXRnRWgxY0lnd2hBZUZlSWIrZEVjZ2drYmxmTGdCY0phZmVVYmpkWmhLYUhheGZkZlVjT2N3Z0VobGNCZnlmOGhNZ0phVGg4ZEtkVWZqZkJhYmZYZ0FhdGFZYkVmRGJVZW9mTmV6Z1VndWFBYUNlWmhRY1Vid2JvYTBoRGFGaEVlVWhCY1VlMGN4aEhlQWJNZnBjSWN5Z0Fnb2JVYWpjTWhJYU1jbGJZZU5lQ2N4YkFiUGZWY0FoZ2NvZU1jbGZrZjJjQWJEZEloUWJEaEFoOGd6ZlVkRGZVY05mRmN6ZmtlMmdGaHpmSmFPYUxkUmVOZVNoTWdBZUJlU2FQZWhoSWZKaEpmU2R3Y1NkWGExYkljMmdTYWhnOGFYZFZmRGVzZ0JkSmJRaGNndmZEZUNkVWMvYUNlbGJJZ3dmV2MxaHdoTGJXZ0JmQWUxZEtoRGFjYzFhTGNnZUFjbWdVZEZjTWNLZE5jQWJ4Z1JiRmRBYVZoTmJNZFJod2VEZ0tjU2ZNZmdkS2ZGZ0lkemNDZkRjSmFXZURiUWVzZFFnRGUxZlFhSWRLYkRhSmZaYk5mZ2FBZXlmRWdBaHdiUGhNaDFkQWMxaERkUmFjZzVmTmFoYWNmeWdUZ2ljMGRUaFVhamdBZ0FiVWRqYjRlU2JDZVNmVWhzY0VjbGI5ZFNiTmhrZG9oZmRGaDFmUWY3aEFmU2RVZ0hiTGF3YXdmbGVQYXdmcGhTaE1mRmh0Y2NiQ2UxZ2diUWhOZVNjZ2UzZk5jU2Q0YkFlSmFsYkJiVGVDZ2pjUWRNaFVkUmZRZUZlVGVUZkVhY2NBZ3lia2NqZkllQ2VoZFNlTWV3aGdieWNWZmdlMGZMYkVjQWg5ZlViQ2RDZWdleWJXZFRjWWVBZU1naGNBZE1kRGN6YU5oUWVOaFFlMGhYZE9kVGJZYlhoTWNrZTRjdGdFZjFiSWJ3YkFoRmVJZythRWZnYWtmbGFMZ0JlSmhmZVVjamJaYUtoSGF4ZGRoVWhPZXdhRWJsaEJieWY4Yk1kSmRUZjhjS2RVZmphQmFiYVhkQWF0ZVlmRWNEZ1Vhb2FOaHphVWd1Z0FjQ2RaZFFmVWV3Ym9nMGVEYkZhRWJVaEJkVWgwYXhhSGNBaE1hcGJJZ3liQWhvZlVhamZNZ0liTWJsZFloTmNDYXhjQWFQZVZnQWFnZm9oTWVsZGtjMmhBaERkSWhRYkRhQWI4Z3pnVWdEZ1VmTmJGYXpha2cyYUZjemZKZ09iTGFSYk5hU2JNYUFlQmRTaFBlaGJJYkphSmhTZXdkU2RYaDFnSWcyZ1NmaGU4Y1hoVmREZXNjQmJKZVFlY2d2Y0RnQ2ZVYS9lQ2JsaElld2NXYzFld2dMaFdjQmhBYTFnS2ZEZWNhMWdMZ2diQWJtZVVkRmRNaEtiTmZBYnhnUmNGY0FjVmdOY01mUmV3YkRmS2NTZk1oZ2RLZkZhSWR6YkNkRGVKYldjRGNRaHNjUWJEYjFhUWJJZ0tkRGdKYVpkTmdnZkFleWVFY0Fod2hQZU1oMWZBYzFnRGdSZGNoNWNOZmhnY2Z5aFRiaWMwZVRkVWRqZkFnQWNVZ2plNGZTZkNmU2RVZ3NhRWJsZTlnU2JOaGtmb2ZmaEZkMWhRYjdiQWZTZVVoSGNMZHdld2NsYVBkd2ZwZVNkTWJGZXRmY2ZDZTFoZ2hRZk5oU2VnZzNnTmFTaDRoQWNKZWxnQmJUZkNiamRRaE1iVWFSZFFoRmJUZ1RkRWFjZUFkeWVrYmpmSWJDY2hoU2RNZXdjZ2J5ZVZnZ2MwZExhRWFBYjlkVWZDaENkZ2F5Y1dhVGRZZ0FlTWRoY0FjTWNEZHpnTmdRZU5lUWYwaFhjT2NUZFlkWGFNZ2tnNGJ0YUVlMWdJaHdkQWFGZUlhK2dFZ2dna2FsY0xmQmFKYmZiVWVqZ1pnS2ZIYXhjZGdVY09id2RFYmxkQmJ5ZDhoTWhKZ1RoOGhLYVVnamdCZGJnWGNBaHRjWWFFYURmVWRvZE5iemFVZXVlQWdDY1pjUWFVZHdjb2IwZERjRmNFYlVkQmZVaDBjeGJIZUFmTWZwZEloeWNBZG9nVWdqYU1iSWRNaGxjWWdOYUNmeGVBY1BnVmJBYWdib2dNYWxma2MyYUFmRGVJY1FjRGRBYThmemVVZkRlVWNOZkZnemVrZDJiRmZ6Z0piT2FMZVJhTmRTYU1mQWVCYlNoUGJoZUliSmJKYlNnd2RTZVhhMWhJaDJiU2RoYjhlWGNWZURlc2JCZ0phUWdjZ3ZhRGZDaFVoL2VDY2xlSWh3Z1dkMWJ3Z0xjV2JCZkFkMWdLYURjY2IxZExnZ2RBYm1kVWdGaE1jS2ZOaEFneGRSYkZlQWdWZU5kTWVSaHdnRGJLYlNlTWJnYkthRmhJYnpjQ2VEYkpkV2NEYlFlc2FRaERjMWNRY0lnS2ZEZkpoWmROY2diQWN5ZUVmQWJ3Z1BlTWQxZUFoMWZEZFJnY2I1Yk5iaGRjYnliVGRpZzBnVGZVZWphQWdBY1VjamQ0ZlNlQ2JTaFVkc2ZFY2xmOWVTY05ja2FvYWZnRmgxZ1FnN2FBaFNmVWVIYUxod2h3aGxoUGN3ZnBhU2hNYUZjdGNjZENhMWZnaFFmTmNTZGdjM2dOZlNlNGJBaEplbGNCaFRlQ2VqaFFhTWdVZlJnUWRGaFRkVGNFYmNnQWF5Z2tmamdJYUNlaGZTY01nd2VnYXlnVmVnYzBjTGhFYUFmOWFVZkNjQ2NnZ3llV2hUZVlhQWdNZ2hiQWJNYURmemdOZ1FhTmdRYzBhWGdPY1RjWWJYYk1na2g0ZXRhRWExaElkd2JBZEZnSWgrZEVjZ2FrYWxhTGRCYkpmZmJVZWpjWmZLY0hkeGFkZ1ViT2d3aEVnbGRCZXlkOGJNaEplVGg4YktoVWRqY0JmYmhYYUFhdGZZY0VoRGhVZG9mTmd6Z1VidWZBY0NkWmRRaFVhd2VvYTBoRGVGYUVlVWRCZlVlMGJ4Z0hhQWVNZXBjSWR5ZUFob2FVZmpkTWFJZk1mbGdZZU5hQ2Z4aEFhUGdWYkFnZ2VvZU1mbGVrZjJoQWJEYkliUWREZ0FlOGJ6Z1VkRGFVZU5kRmh6Y2tnMmVGY3pjSmZPZUxhUmZOYVNnTWFBZkJoU2hQY2hlSWFKZkplU2V3YlNlWGIxZklkMmRTZWhjOGZYaFZmRGJzZEJjSmVRZGNidmdEYUNoVWMvZkNmbGZJZHdhV2gxZHdmTGZXZEJiQWYxZUtnRGZjYTFmTGFnZUFobWFVY0ZoTWRLYU5jQWN4Z1JhRmZBZFZoTmdNY1Jnd2hEZ0toU2hNYmdoS2dGYUllemdDY0RmSmhXaERjUWJzZFFkRGIxYlFlSWdLZERmSmhaY05nZ2ZBZnljRWVBZXdiUGdNZzFjQWcxYURhUmVjZDVjTmZoZ2NkeWdUYmllMGhUZFViamdBY0FhVWVqZzRoU2dDaFNmVWVzYkVmbGE5ZVNoTmhrZ29hZmJGZDFhUWc3YUFlU2dVZEhlTGR3Z3dmbGdQY3dkcGdTZk1jRmh0ZGNoQ2UxY2dmUWFOZlNiZ2QzY05iU2Q0ZEFhSmNsaEJjVGVDYmpkUWFNZ1VhUmhRZUZjVGRUZUVnY2JBYXlna2dqZ0loQ2RoZ1NlTWN3ZmdleWNWYmdoMGFMZEVlQWI5YlVjQ2JDZGdneWFXY1RhWWVBYk1maGhBZE1iRGd6Y05lUWZOYVFmMGFYZ09kVGNZZlhnTWhrYzRjdGdFYzFnSWh3YUFlRmFJZCthRWNnZGtkbGdMY0JjSmVmaFVhamVaYktlSGh4Z2RnVWdPZ3dmRWJsYUJmeWI4Zk1iSmJUYThmS2hVZWpjQmZiZVhhQWV0ZlloRWVEYVVmb2FOYnpoVWJ1aEFmQ2haaFFjVWN3Y29jMGREY0ZnRWdVZUJhVWEwY3hkSGFBZ01ncGhJZnlkQWNvZFViamFNZElkTWdsZ1lmTmZDZHhiQWFQY1ZkQWdnYW9lTWJsaGtjMmRBZURiSWFRYURoQWU4aHpiVWdEaFVoTmZGY3pha2YyZ0ZjemJKZ09hTGNSZU5mU2VNZ0FlQmZTZlBlaGVJZUphSmVTZHdmU2FYZTFjSWgyYVNiaGI4Y1hhVmdEYnNnQmVKZ1FiY2N2aERlQ2RVaC9jQ2ZsZklmd2NXZTFid2NMY1dhQmVBZTFhS2JEYWNjMWdMYWdlQWNtZVVhRmRNYktmTmFBYnhoUmhGZkFnVmROYU1hUmR3ZURkS2dTZU1mZ2hLZkZjSWd6aENhRGhKY1dnRGZRaHNlUWJEaDFkUWNJYktnRGFKYlphTmRnZUFmeWZFaEFod2JQaE1nMWNBYTFhRGhSZmNkNWZOYWhkY2Z5ZlRkaWQwaFRiVWRqY0FkQWVVYWpnNGRTZENjU2ZVZ3NlRWVsYTlkU2NOZ2tmb2ZmYkZiMWNRaDdlQWNTZFVmSGVMY3dod2hsYVBkd2dwY1NoTWJGZHRnY2FDYTFoZ2JRYU5kU2FnYzNoTmFTYjRjQWhKZWxoQmdUZENnamZRZE1hVWdSZFFmRmNUYVRlRWFjZ0FieWFrYWpiSWVDYWhnU2dNZXdnZ2R5Z1ZjZ2cwZkxlRWhBZDlkVWFDZENmZ2d5ZFdiVGFZZEFiTWhoZUFjTWVEaHpnTmdRZU5jUWIwZ1hlT2ZUYllkWGFNZGtkNGh0aEVoMWhJYXdnQWFGZklhK2dFYmdma2ZsZkxnQmFKZmZnVWdqZFplS2VIZnhoZGFVZ09hd2VFaGxmQmh5YjhnTWdKaFRkOGhLZ1VmamRCZmJjWGNBYXRkWWFFZURlVWJvaE5jemZVYnVjQWdDZVpkUWJVY3dhb2EwZkRiRmdFZFVoQmZVZzBkeGRIZ0FnTWVwYklkeWhBZG9nVWhqZk1kSWdNYmxhWWROZkNjeGRBYVBjVmVBZWdlb2FNZWxna2cyYUFnRGFJaFFoRGVBZjhiemRVZERkVWdOZkZoemVrZjJmRmZ6Y0plT2ZMZ1JhTmdTZk1jQWZCZFNhUGNoYUllSmNKZlNjd2NTY1hlMWZJZTJhU2doZjhoWGFWZkRmc2VCZ0phUWNjZnZnRGZDaFViL2NDaGxhSWJ3YldmMWJ3ZExkV2RCaEFhMWJLY0RhY2gxZExmZ2VBZW1hVWJGZE1nS2dOaEFoeGhSZkZkQWRWYU5iTWNSZndjRGZLZFNmTWZnYktjRmNJZ3pmQ2dEYkpoV2ZEYlFmc2JRYkRiMWRRYkljS2hEZUpiWmNOaGdjQWR5ZkVkQWd3Y1BiTWcxZUFjMWREYlJjY2E1Yk5haGNjY3loVGVpZTBmVGZVYmpiQWRBYlViamg0Y1NlQ2RTZlVkc2FFZWxmOWJTY05ha2ZvYWZhRmUxYlFiN2VBZlNlVWFIZUxmd2h3aGxkUGd3ZXBiU2ZNZUZidGZjY0NjMWFnY1FkTmhTY2diM2hOY1NoNGFBYUpjbGJCZlRoQ2FqY1FoTWVVZVJkUWJGZ1RnVGNFYWNnQWR5YWthamJJaENoaGdTZE1nd2RnZXllVmhnYjBjTGVFYUFlOWhVZENhQ2dnYXliV2dUZllhQWRNZ2hnQWFNZkRmemNOZVFiTmhRYTBnWGdPZVRhWWdYYk1ia2c0ZHRkRWcxZklhd2hBY0ZoSWMrZkVhZ2hrZGxkTGZCZUpmZmRVZWpoWmRLYkhneGJkZVVhT2h3ZUVkbGdCZXlkOGZNZ0poVGI4aEtiVWVqZ0JhYmVYZEFndGNZaEViRGhVYW9oTmF6ZVVhdWFBZUNmWmRRaFVid2FvZTBiRGdGaEVhVWhCYVVnMGZ4Y0hiQWFNYnBmSWd5ZkFkb2NVZWpmTWhJZU1ibGdZYU5jQ2Z4Z0FoUGVWZ0FmZ2VvZ01mbGFrYzJhQWVEZ0lhUWNEYkFlOGN6YlVoRGFVYU5mRmN6Y2toMmNGZXpmSmZPZkxnUmNOYlNoTWdBZEJlU2FQYWhnSWRKaEpkU2J3aFNkWGQxaEljMmRTY2hoOGNYZ1ZjRGFzY0JhSmFRZWNhdmhEYUNhVWMvZ0NkbGFJZXdiV2ExZHdiTGFXZkJiQWgxZUtkRGVjYjFoTGZnZUFlbWhVYkZhTWVLZ05kQWd4ZFJoRmRBYlZiTmFNZFJod2ZEZktkU2NNZGdjS2JGYkllemVDZURnSmRXZ0RkUWdzYVFkRGcxZ1FoSWRLYkRlSmFaZE5lZ2VBYXloRWVBZHdiUGdNZDFiQWIxaERnUmdjYTVoTmNoYWNleWZUaGliMGRUYlVhamRBYkFmVWJqZjRnU2ZDY1NoVWdzYUVkbGY5Z1NmTmJrZW9lZmZGZjFiUWU3Y0FjU2RVY0hnTGR3aHdjbGJQY3dhcGFTaE1jRmZ0YmNoQ2cxZmdhUWZOZ1NoZ2IzZU5lU2M0ZEFoSmZsZUJoVGVDaGpnUWVNZVVmUmRRZ0ZhVGdUYUVlY2NBYnlha2NqZ0ljQ2hoZ1NnTWV3aGdjeWRWZGdkMGJMZ0VlQWU5YVVjQ2dDZ2doeWVXZlRiWWVBZk1laGVBZk1hRGF6ZU5nUWJOY1FkMGVYZk9hVGhZZ1hoTWZrZjRodGRFaDFlSWh3ZkFjRmFJaCtkRWFnZGthbGVMZEJoSmZmY1ViamRaZUtmSGF4ZGRmVWZPZ3dhRWFsZkJleWc4ZE1iSmNUZjhiS2ZVZWphQmNiY1hmQWF0Z1lnRWFEYlVlb2JOaHpiVWV1aEFkQ2daaFFnVWZ3aG9oMGdEZUZjRWVVZUJjVWgwZXhoSGdBZk1icGVJZ3llQWVvaFVnamNNZ0llTWVsZVliTmZDZ3hmQWNQZFZnQWRnZG9hTWhsZWtjMmNBaERnSWdRYkRjQWE4aHpkVWFEZVVjTmNGZ3pha2MyZ0ZkemFKYU9oTGVSZk5nU2dNZkFnQmhTZVBmaGJJaEpnSmNTaHdoU2hYZjFmSWEyY1NlaGI4YVhoVmREZnNoQmNKZlFnY2Z2ZURiQ2JVaC9jQ2JsZElkd2hXZTFod2VMZ1dmQmZBZDFmS2VEZ2NnMWhMYWdlQWdtZVVhRmFNaEtlTmZBZ3hoUmdGYkFjVmJOZE1oUmR3Y0RoS2RTZE1hZ2NLZkZjSWN6ZENiRGNKZVdhRGRRY3NiUWhEZDFlUWNJZ0toRGRKYVpnTmhnYkFheWJFYUFkd2hQYk1lMWZBZzFkRGRSY2NjNWNOZ2hjY2N5aFRjaWYwZ1RkVWFqZ0FlQWFVZmphNGZTY0NlU2JVZnNlRWdsZzllU2JOYmtmb2hmaEZiMWdRYTdnQWhTaFVjSGdMaHdnd2RsZFBid2FwZlNiTWVGZXRkY2hDaDFkZ2VRYk5iU2FnYjNmTmRTZjRkQWJKZ2xiQmVUY0NjamJRZk1kVWNSZ1FhRmhUY1RmRWZjZEFjeWhrZGpiSWdDZ2hlU2hNaHdnZ2Z5ZVZjZ2gwaExnRWdBZDlkVWFDZUNjZ2V5YVdjVGZZaEFmTWhoYkFiTWFEY3pnTmdRZk5mUWIwZ1hjT2dUZlljWGFNZGtmNGd0ZkVmMWFJZndkQWVGYkliK2VFZWdla2dsaExmQmVKZ2ZnVWRqaFpnS2VIZXhmZGhVZU9nd2hFYWxlQmZ5YThhTWZKYlRoOGFLaFVlamhCZ2JiWGFBZHRlWWJFZkRlVWZvaE5iemdVZXVnQWZDZ1pjUWFVYXdjb2YwaERnRmFFZFVnQmVVZTBheGVIZ0FlTWZwY0lheWRBYm9lVWVqZ01lSWdNZGxnWWdOZ0NleGhBaFBjVmZBZmdjb2ZNZmxma2UyY0FnRGRJY1FkRGNBaDhoemFVZERmVWVOZEZhemVrZzJlRmV6Y0pkT2FMZ1JkTmFTYU1mQWdCYVNjUGdoZEllSmRKZVNnd2NTZVhjMWJJaDJhU2JoYzhjWGZWZ0Rjc2ZCZUpkUWVjZ3ZnRGRDZVVlL2hDaGxjSWF3YldiMWJ3ZUxjV2JCY0FnMWVLZkRiY2gxZ0xkZ2FBYW1nVWNGYU1nS2JOZ0FneGFSZkZoQWVWYk5iTWRSYndmRGdLZVNkTWhnYktiRmJJYnpjQ2NEZ0phV2hEZ1Foc2RRZkRoMWJRYklhS2hEYkpmWmJOZ2dkQWN5ZUVnQWJ3aFBlTWMxYUFoMWREYVJmY2Y1Yk5kaGhjaHliVGZpYjBnVGFVZGplQWFBYlVmamE0Z1NoQ2RTZVVic2dFZ2xnOWNTY05oa2ZvZGZlRmUxYVFnN2NBYlNmVWZIYUxjd2V3Z2xlUGV3Z3BnU2ZNaEZodGVjZ0NhMWJnYlFnTmVTaGdoM2ZOZ1NiNGZBZkpkbGdCYlRjQ2FqY1FhTWNVaFJoUWVGYVRjVGNFZWNoQWZ5ZGtnamhJZkNjaGdTY01md2VnYXljVmRnZTBkTGdFZUFnOWNVZENhQ2JnZnljV2RUZ1ljQWVNZmhhQWVNY0RkemdOY1FjTmJRYzBhWGdPZFRoWWFYZ01ja2U0Y3RnRWgxZUlod2ZBY0ZkSWgrZUVmZ2RrZmxnTGJCY0pkZmRVZGpnWmFLaEhheGhkZlVnT2J3ZEVnbGRCZ3liOGhNYUpiVGI4YktmVWdqY0JoYmNYY0FjdGNZZ0VjRGhVZ29iTmJ6YVVldWdBYUNkWmhRYlVhd2ZvZTBoRGVGZkVmVWVCZFVmMGR4YUhmQWFNZXBlSWZ5ZkFob2NVYWpiTWRJZk1obGJZZU5oQ2J4YUFiUGZWY0FlZ2VvZE1ibGRrZDJoQWNEZ0lnUWZEY0FlOGJ6aFVnRGRVZU5lRmF6Z2thMmVGZXpjSmFPZExmUmhOZVNoTWRBZ0JjU2JQZWhjSWRKZEpnU2V3YVNoWGYxaEljMmVTZmhiOGFYZlZmRGZzZEJjSmVRaGNldmVEY0NjVWYvZkNhbGRJZndkV2YxaHdiTGRXaEJoQWYxYkthRGNjZTFnTGFnYkFhbWFVaEZhTWFLZ05kQWJ4ZFJmRmhBY1ZmTmVNZFJhd2VEaEtjU2RNYmdjS2JGaEljemdDZ0RmSmhXZkRnUWdzZFFhRGUxYVFnSWNLZERhSmhaZU5hZ2FBYXlhRWNBZHdiUGJNYTFiQWIxaERhUmZjZzVnTmJoZ2NneWVUZmlmMGhUZVVmamRBZUFoVWZqZjRiU2NDYVNlVWRzY0VhbGY5ZFNkTmFraG9iZmFGYTFoUWY3aEFmU2JVZ0hoTGV3YXdobGVQaHdmcGNTYU1iRmN0Z2NhQ2IxY2diUWhOYVNoZ2gzZE5kU2E0YUFmSmdsZUJoVGdDZGpoUWVNZ1VlUmRRZUZnVGJUZUVmY2VBZHlha2ZqZklkQ2FoZFNiTWZ3YmdieWhWY2diMGJMaEVmQWI5aFVmQ2FDZGdheWVXYlRiWWdBY01haGdBaE1nRGZ6YU5mUWhOZFFoMGZYZU9hVGVZZlhhTWdrZjRidGFFaDFnSWN3aEFmRmNJZStoRWFnYWtobGRMYUJiSmJmZ1VhamRaYUtmSGF4Z2RoVWZPaHdkRWRsZ0JjeWU4ZE1lSmFUYThnS2hVYWpiQmFiZ1hlQWZ0YlljRWVEYVVhb2FOZHplVWN1aEFmQ2JaYlFjVWJ3YW9oMGNEYkZoRWdVY0JoVWEwZHhhSGRBZ01jcGRJYnlmQWdvY1VkamZNZklkTWZsaFlnTmJDZnhmQWJQYVZiQWVnZ29mTWJsZGtoMmJBZ0RlSWhRZkRjQWI4Y3phVWdEYlVkTmZGYnpja2EyYkZjemFKY09hTGhSZE5lU2JNZEFhQmdTZlBlaGZJYkpnSmJTZXdnU2NYZjFoSWEyZlNjaGU4ZlhiVmVEaHNoQmNKYlFmY2J2Z0RhQ2NVZC9kQ2RsYklnd2NXYzFod2NMYVdiQmVBYTFnS2FEYmNiMWRMY2dmQWJtZlVhRmdNaEtkTmNBZHhhUmVGY0FiVmVOY01nUmJ3YkRiS2ZTYU1mZ2NLZ0ZiSWd6Y0NhRGVKZldoRGZRZ3NkUWNEZDFkUWFJZUtnRGdKZ1pkTmNnZkFmeWdFY0Fid2JQaE1kMWRBYzFlRGVSZmNjNWFOYWhnY2F5YlRhaWQwYVRkVWNqZEFnQWZVZWpmNGhTYkNmU2VVYXNiRWZsYzlnU2NOZmtmb2JmYUZjMWNRYjdmQWhTYVViSGRMaHdid2hsZFBid2VwYVNiTWVGZHRkY2NDZjFkZ2dRYU5hU2NnYTNmTmJTYzRkQWFKZGxhQmZUY0NkamdRZE1mVWZSZFFlRmNUZ1RoRWZjaEFoeWZrZGpmSWRDZGhlU2FNYndoZ2F5Y1ZiZ2YwaExmRWFBYTlnVWdDaENjZ2V5ZldlVGhZY0FkTWVoYUFoTWVEZnplTmVRZk5oUWUwZlhjT2JUY1lhWGdNY2tlNGJ0Z0ViMWdJY3dlQWZGaElnK2RFYmdja2FsZUxoQmNKZWZoVWFqY1pmS2dIZnhoZGFVZ09nd2JFZGxmQmR5aDhoTWVKYVRnOGhLZlVmamRCZGJoWGRBY3RoWWNFZ0RmVWFvYk5kemhVZHVnQWVDaFplUWJVZXdlb2MwY0RoRmNFZ1VkQmhVYjBieGNIYUFhTWFwZklneWdBaG9hVWFqZ01oSWRNY2xnWWhOY0NmeGFBZFBlVmhBZWdmb2NNZmxja2EyYUFkRGhJYVFkRGdBZDhmemZVY0RlVWNOaEZiemJrZTJnRmd6YUphT2FMYlJmTmJTYU1hQWRCaFNlUGVoZEllSmhKZVNid2dTZVhmMWdJYzJlU2doYzhiWGNWaERkc2FCY0pjUWJjY3ZkRGZDZ1VlL2FDZ2xkSWF3ZVdlMWV3YUxhV2hCYkFnMWFLZURiY2IxY0xkZ2hBZW1jVWRGaE1oS2JOZkFleGdSZEZiQWZWYk5hTWNSZHdiRGVLZlNjTWNnYUtkRmdJZ3phQ2ZEZ0phV2REZ1Fhc2JRZkRiMWRRYklhS2hEYkpkWmNOY2dmQWN5YUVmQWJ3YlBiTWIxYkFlMWJEZlJkY2Q1Z05naGhjaHlmVGJpYTBiVGRVZWpmQWNBaFViamc0ZlNmQ2JTaFVoc2VFY2xoOWdTZE5oa2NvaGZnRmExZVFoN2hBYlNlVWdIZExnd2R3YmxlUGd3ZHBlU2VNZUZkdGRjZENiMWVnZFFoTmhTZWdjM2NOZVNhNGVBYkpjbGdCaFRiQ2JqYVFlTWdVYlJhUWJGaFRmVGJFZ2NmQWF5aGtkamhJYUNjaGVTZ01id2dnY3loVmZnYzBnTGNFZ0FjOWVVZkNoQ2hnYnlmV2RUYVliQWhNYmhnQWdNaERiemdOYlFlTmFRYTBnWGJPYlRoWWFYZk1oa2I0ZnRiRWUxYklmd2NBYkZlSWMrZEVjZ2hrYWxhTGJCYUplZmRVZGpoWmFLaEhjeGFkY1VmT2N3Y0VlbGNCYXloOGVNYkpmVGU4ZkthVWJqYkJlYmVYY0FjdGVZZkVnRGVVZ29jTmF6YlVjdWRBYkNmWmdRYVVod2hvYjBoRGVGYkVjVWRCYlVhMGV4YkhjQWRNY3BiSWh5Z0Fnb2hVZmpnTWFJaE1lbGVZZk5nQ2V4ZkFiUGVWZUFkZ2dvYU1mbGFrYzJlQWdEYUliUWNEZ0FnOGN6Z1ViRGhVZ05kRmJ6ZWtmMmhGaHplSmVPYkxkUmROZFNkTWFBZEJmU2FQZmhhSWVKaEpkU2R3YVNhWGYxZElkMmJTYmhoOGVYZ1ZlRGNzZkJhSmNRYmNndmFEZ0NlVWEvaENnbGRJY3djV2gxYndhTGNXaEJiQWgxZ0tiRGNjYTFmTGJnY0FnbWhVYUZiTWJLZ05nQWZ4Y1JnRmFBZ1ZmTmdNYVJjd2VEZUtkU2NNZ2dkS2VGZUlmemVDYURlSmNXZERlUWNzZ1FnRGIxY1FmSWNLY0RlSmdaZE5kZ2VBaHllRWZBZXdlUGZNYzFiQWcxY0RmUmhjYjVnTmhoZmNoeWVUYmljMGFUYVVoamRBZ0FjVWNqZzRhU2FDZFNhVWVzY0VmbGM5Z1NoTmVraG9lZmhGaDFlUWI3ZkFkU2ZVYkhlTGF3YndjbGFQYndhcGZTYk1lRmR0ZWNjQ2gxZWdkUWhOYVNhZ2MzY05lU2Q0YkFoSmhsYUJnVGVDZ2pmUWNNYVVnUmFRZ0ZlVGRUZkVnY2hBZXlka2VqZklkQ2RoYVNkTWV3ZWdieWdWYWdlMGNMZ0VkQWI5YVVkQ2hDaGdieWhXaFRiWWFBaE1laGRBaE1iRGF6ZE5oUWROZlFkMGdYYk9hVGdZY1hnTWdrZTRodGRFYTFnSWN3Y0FnRmVJZitoRWdnYmtlbGNMY0JnSmZmZFVhamhaZ0tiSGV4Y2RoVWNPY3diRWhsY0JkeWM4Yk1oSmVUZzhoS2NVaGphQmZiZlhiQWZ0ZFloRWdEaFVjb2JOZ3pkVWJ1ZEFjQ2JaZFFlVWN3Zm9nMGdEYkZmRWFVZEJiVWcwZnhjSGVBYU1jcGRJYnllQWFvYlVnamRNZUlkTWJsaFljTmNDZXhoQWVQZFZiQWNnZm9hTWRsYmtlMmFBY0RmSWhRaERkQWM4ZXpkVWVEYVVlTmFGZXpoa2gyZUZlemFKZE9mTGRSZE5nU2RNZkFiQmVTYVBnaGFJZUpoSmZTY3dnU2VYYTFlSWUyZlNkaGM4ZlhmVmFEZnNiQmJKY1FkY2F2ZERhQ2dVaC9lQ2FsY0lmd2RXZDFmd2dMZldlQmVBaDFoS2ZEaGNnMWRMZ2dnQWNtYlVmRmFNYktlTmZBYXhlUmNGZkFiVmROZk1hUmF3Z0RiS2hTZE1oZ2dLZ0ZmSWZ6aENhRGhKZFdmRGVRZXNiUWdEZjFkUWdJZ0tlRGZKZ1plTmFnZ0FheWJFYUFkd2dQZ01jMWdBYjFiRGhSaGNiNWdOaGhlY2J5YlRnaWQwaFRiVWhqY0FnQWZVYmpoNGdTZENoU2JVY3NoRWdsZDlmU2dOZWthb2FmaEZjMWRRaDdoQWFTZVVoSGNMZXdhd2NsZ1Bkd2ZwYlNnTWFGYXRlY2RDYzFkZ2NRaE5jU2dnYTNmTmZTZzRmQWFKZmxlQmVUZ0NkamhRZU1iVWVSaFFlRmdUY1RoRWRjaEFjeWNraGpnSWZDZmhkU2JNY3dkZ2d5ZlZoZ2QwZ0xiRWRBZTloVWZDY0NiZ2J5Z1dkVGNZZ0FhTWVoZUFkTWZEZnpjTmVRZ05mUWYwZVhkT2FUZFllWGZNaGthNGh0ZUVkMWhJaHdiQWVGY0ljK2FFZmdoa2dsZ0xmQmhKZWZnVWFqYVpnS2hIZnhoZGFVaE9ld2NFZGxlQmZ5ZzhhTWZKaFRmOGVLYlVoamZCZ2JoWGJBYnRnWWdFYURkVWJvaE5nemFVZnVhQWFDY1piUWNVaHdib2gwZURlRmRFY1VjQmVVYjBkeGZIY0FoTWhwZ0lneWVBY29iVWRqYk1iSWZNZmxlWWJOZUNoeGVBZFBkVmdBZ2dob2hNZGxia2UyaEFnRGhJYVFnRGdBZjhiemhVZkRoVWZOZkZlemVrYTJhRmF6Z0pjT2FMZFJiTmdTZE1nQWdCZFNmUGdoZklnSmJKZVNmd2FTZlhoMWVJZjJiU2doYThhWGJWY0Rkc2JCY0pmUWJjYXZhRGNDYlVkL2RDaGxlSWN3ZVdoMWd3aExlV2FCZ0FnMWJLZ0RoY2QxZExiZ2hBY21iVWRGYk1hS2JOYkFjeGRSaEZhQWdWZE5mTWdSZ3doRGhLYVNiTWVnZktjRmdJZ3pkQ2ZEZUpjV2NEaFFjc2VRaERiMWZRY0liS2NEaEpoWmFOZGdhQWd5ZkVoQWR3Z1BjTWMxZEFkMWJEZlJiY2Q1Z05oaGNjZHlnVGJpYjBiVGhVYmpjQWJBZ1VnamY0ZlNjQ2JTZVVnc2dFZGxlOWRTY05na2JvZmZhRmQxZlFoN2dBZlNoVWVIYkxjd2N3ZWxjUGJ3ZXBkU2NNZEZldGZjZUNhMWVnY1FnTmVTaGdiM2ROYVNjNGZBZEplbGRCY1RiQ2ZqZVFjTWZVYlJoUWdGaFRkVGJFZmNjQWh5ZWthamVJYkNiaGRTZk1ld2JnZXlkVmJnaDBiTGNFYkFmOWNVaENlQ2RnZnlkV2VUZVlmQWNNZmhmQWFNZ0RlemhOZ1FjTmhRYjBoWGdPaFRnWWJYZ01ia2M0ZnRlRWExZ0lkd2JBYkZnSWQrYkVoZ2JrYWxmTGRCY0pkZmJVZmpjWmNLZ0hjeGFkaFViT2J3YkVibGRCZXloOGdNZEphVGE4aEtnVWhqZkJmYmNYaEFkdGdZZEVnRGJVZG9hTmV6ZlVmdWhBaENlWmFRZlVld2JvZTBhRGJGZUVlVWRCYlVmMGd4YUhjQWJNZXBmSWh5YkFib2dVY2pmTWdJZE1ibGVZYU5kQ2h4ZEFnUGhWYUFoZ2VvZk1nbGJrZDJiQWJEZUliUWFEZUFnOGd6ZVViRGJVY05jRmJ6Z2tkMmJGaHpjSmVPZExlUmZOZ1NkTWJBY0JoU2JQZWhlSWNKZEphU2R3Z1NlWGYxZ0ljMmdTZGhoOGhYZFZmRGJzZ0JoSmJRY2NjdmZEZ0NnVWcvZ0NkbGZJYXdkV2UxZXdlTGVXY0JlQWExY0thRGVjaDFkTGFnYkFjbWZVY0ZlTWVLZ05hQWF4aFJiRmVBYVZmTmdNZlJkd2REZ0thU2RNZmdoS2hGYklhemJDaERiSmhXZkRkUWhzYVFhRGIxaFFoSWJLZERlSmRaZU5nZ2FBZnliRWhBYXdnUGhNYjFnQWIxaERoUmdjYzVlTmNoYmNoeWJUZ2llMGJUZVVlamRBZEFiVWZqYTRmU2FDYVNoVWZzZUVmbGI5Z1NoTmVrZG9kZmZGZzFjUWE3ZEFjU2ZVZkhjTGd3ZndlbGFQZXdlcGVTaE1oRmZ0aGNlQ2gxZ2dmUWdOaFNnZ2IzZk5nU2M0ZEFnSmNsZUJoVGRDYmpnUWFNZ1VjUmRRYkZoVGJUaEVkY2JBYnlna2FqYkllQ2JoaFNlTWN3ZWdoeWNWaGdoMGdMZEVnQWQ5ZVVlQ2hDaGdjeWFXYlRmWWZBYk1kaGdBZk1jRGR6Zk5nUWhOZ1FnMGRYY09oVGdZZlhhTWhrYzRjdGJFYjFkSWR3ZEFmRmdJaCtnRWFnZ2tmbGVMaEJnSmNmZlVnamVaaEtnSGR4Y2RlVWhPaHdmRWNsZUJmeWU4Yk1nSmFUZThkS2FVY2pnQmNiaFhiQWF0aFliRWJEY1Vmb2hOYXpoVWV1ZkFkQ2haZlFkVWF3aG9kMGdEZ0ZoRWRVaEJjVWgwZXhlSGhBZk1jcGZJY3liQWNvYlVjamdNZ0lmTWZsZVliTmhDYXhjQWdQZVZjQWVnZG9kTWRsaGtoMmdBZ0RjSWRRZkRkQWc4Z3plVWJEZFVkTmZGZnpia2gyZUZkemZKY09lTGhSZE5oU2JNY0FmQmhTZ1BnaGVJZUphSmFTZXdiU2dYZDFnSWcyYVNoaGE4YVhlVmhEZ3NnQmhKY1FiY2V2ZkRkQ2hVYS9nQ2dsaElhd2ZXYjFnd2VMZVdkQmRBZTFoS2ZEYWNoMWdMZGdjQWVtZlVmRmRNaEthTmRBYXhoUmZGZUFkVmJOYk1jUmV3Z0RjS2JTZU1mZ2dLZUZjSWF6Z0NkRGFKYVdoRGZRYXNnUWVEZjFkUWVJZEthRGZKZlphTmZnY0FieWFFY0Fhd2FQZE1hMWNBYjFhRGhSZWNjNWJOZWhoY2F5ZVRkaWMwaFRjVWFqZ0FlQWdVYmpmNGZTYkNoU2FVYnNjRWVsaDlmU2dOaGtlb2NmYUZiMWdRaDdjQWJTZFVmSGdMYndnd2RsY1BiMGRrZlBhTmNsYkZoU2FEZjFhZ2FhZ0FkQ2hZYi9lSWdHaEVhNWFLZUVlWmNYY0FjamFBZ1lmRWdFYjlnRWhUYkRhd2VWYkFmQ2c0YXVmRWRpZEZoZGhJZVVlQWc4ZFFhQWdrYURnRmhCZXNkT2daZUNoNGU0aFZoemRJZEFmT2RDZFVhQ2hCYnlhWWhmYlBnQmZ3ZFVmTmZqY1VjRWhkYUJhSmdyZENiVWJsZHFjYmZEZWtkN2VIYkFhRWMzYlBlbGdOYU5kWGdCaDFnU2FQZ3hkZGFjZktkVWVkZTVnUWZTZDVjRmRiYW5jTmFoaEZoSGZzaGRnZGdBZ3NoWmJEaHplc2I3YWRiamZzZ3VhRWRDZ0loV2dWZVFmTWNoZEhobGJVZ2NiUmZGZDhjNGRFZ3hlRmJ2ZEpjQ2NjaDdlR2hIZUlkRmdQZFZjOGNiaFRlUWZVaGVkV2draDRnOWhQZkZkRWMrZUJlaWJkaExmWWhFZzVoL2JPZDNkTmRHaFVkV2NsZCtmVmJuZVJobWJiaEJmOGdVZ09oQWd0ZURmS2doZ1lnY2NOY3liOGJYY0ZoemVsZHdmQWdWYWxiRWRIYUhkcGRIaEVjd2NrZHZiSGNpaEVkdmNEaGtnWmh4Y1JiRmFJaFljU2MxZ1lja2dJY2pjY2M5YVBiRWJZY21iUmhGZ2RlQWhkZVFhTmVFZFZoUmJjYkxnUGFoYVVkV2diZ3pjVWFwZE9oMGhBZTZhVGhqZXBiRWVRZm1oZGhSZFFiemE5Yk9lWWIzZHRlWWFhZDJodGhlZlhma2ZVZkdhSWVVZlVlamVIZDBkdGgzYWZkeGNFaDlkV2J5ZE1jSGhWY25oOGRGYVhnRGJWY2NmSGh5YTBidmZBaFVndGZXZE1ld2RRYVRlQmZSaDhoaWdIZXlod2RBZlBmUWZKYk9lZWVFZk5iU2hKYkZoTmVlY0dhVmdBZlpkT2JtZzViK2JKZzJhTmhHZE5nUmQ4Z1NhRmMxZjlmS2FFZUFiWWNXYVhiamdWY3dnUWdtaDloaWFaZG5nWWhVZ2VlZ2drZC9oWGF3YzRhTWRIZFRhMWVkY0JhemRwaDZhVmR5YUFhRWZPYmhhUWFZaFFkQWhwZVRkSmZnZm9jWGhNY0dnTmdFYmRmQmNKYnJoQWVCaHhiNGhTZ0ZkdGF1Z1JmMGFaZE9jYWdsaE1oWmJFZTJjb2hMYVdkeGJCaEhkTmNBY1Fjd2ZDYkNiRWNFZ1pkbmRsaFdkQ2FYZ0ZiSmRSY0JoMWJjZUdnVGdKY3VlTWFqYllhcGhEaHlkbGNUZEVoa2dwZnpkU2RsaFFkWGVBZGtnSWIrZUhmMGV3aHVkTGZ5ZUpiRGdGZUhnSmVPZmNhd2Y5aE1mQ2RSZ1FlUGdYYkFlQWZzYmZlR2ZNYU5iVGRYYVFkRGdRaDJoUmgxZUVmWGFOY01oU2czY2hleWRHZlRnWmFGYUxmaGZGYkFoY2gwY1ljT2haZlZoTWdiYlBjVGRvZldoVmhsZlZjd2dUZ2dlRWdHaFhkU2ZnZlRjTmMyaHRldWVTZm1oUmg1ZVZkQmVSaDVkV2VFZlVjZGRWaGdlUWhnZVBmWGRnY0xiRmJ5YjVkbmNDaHhlSWNlZWZnVWVNZFpoZWdFYVFhTGZjZEZkcGRZZ2JnMmhvZHlkWmUyZ3dlS2hKaG5mTWZOZ1RlQmc5ZlpiUWRCZXhlVmhRZHlia2hSZmVmQmNVZThjR2dCYmxkQ2FkY1ZnY2NtZkFhaGJJZ3NhT2RSYWthNmZEZzJoTmdiZkZnQ2VwZnNmRWgzYmdiQmdDZWpmQWcvZEFiVmNjZ1RjZWhFaDBhTWdHY0ZmRWZ1YURjaWJzaFBkYmNrZUlod2JjY0VkdGZQZFdkeGIwY2RkVGFSZWtlUWVJZlNiQWUxYUpneWZZZkphS2NSZFplQWZSZERhQmJEZkVmQWNsaHVjQ2UzaEJlYWRRaG1iOWdpZkxoeWE4Y1VoZWRnYmNkSWZWaFRoRmRFZ1VhUmZ0aFFjR2ZqaHdhbWdWZW5oQWhJY0RoeGhRYjNoUWVEYkJnSmhJYndhTWFEaExjQ2FOZ05mWGhnYTlocmFVZWhhUmZ4YVJha2JVZTVjQWhVYjhhcmJhY2tnNGNaZ0diemJsaHdnSGFDYnNhU2NaYTBiY2IvZVFhU2NkYVFkWmVEYXhoSGJGY0RiMGhIYkhkVWN3ZElhV2NuZFFmcmdMY2loTWJnY0ZlRGVOZUZlQ2VFY3djdWVGYXhoQWVQaFRoUmhCYWFkV2ZrYkphdmFZZ21kWmJwaFJoamRjZmFmSmNrZElmQ2NUZ1FmVWJ5Z1VmRGdOYW5jTmcxZWtoOGVEZlhjd2FlZFJmQWRzZ3RjUWVUZ3diZWNCYVNkdGI4Y1ZoamNzY0RnYWN4ZTBhYWZOaEJhNWNEZE5md2VFaGJiTmcyZFpkVGZTYnhkcGY4Y0NiMWRFaFpoSGdEY1piSGhlaFViRmh2ZVdmbWQxYzFiU2MxaHRoL2ZXZEVkVWhkY1ZmZ2NRaGdmUGFXaDFhWmJiZjBhWmFuZUZia2Q5Zm1kZGJVY29nUWZVZ2hmSmZLZklnbGhvZExlYmYzYjlmbWhNZGtkbGNwZ1piSGRNYVFoVGFFYjBhRGJEaEVlRWJiaE9memVvY1lnZWJHaHRiMGZVYlVocGNPYmRhUmdGYzdoSGhsYThjMWdjZUVkdGUwZldhMmNKYmVhUGZuYUZhR2hFYjNhaGhUYVRlMmJ3ZTRkWGdWZW9jVGZiZFFlc2JRaFhkeGI1YlFiUmMyZ1JlQmZiZmthcGhraGNoUmRrZGFjTmdSYTBmQWFUZlZnOGZEYk9oaWcwZWlhT2dpZEFoSWNaZXhoNWhHYlFhSGNVZERmSGdGZklmQmZBYW5lQWdCYmFmR2c5ZGloWmJtaGtjVWVjZ2tiNWZ6aFFja2FJaENjV2RSYzBlWmFUZ2lhQmM5ZkdkQ2V3ZGRkWGNsYkZhS2FUYm5iVWFSYmNnMGh4ZFJiZWhIZ0FjNWVOY2thVWd1Y0VkVWFCYi9lQWVsZFloK2JHYWdkRWhoZ0djZ2ZGaFdkUWN6Z1ZkWmNEZ1FjOGRhZ0xia2J0ZmtlQ2hHYUpoS2FQaDFmTmVMY0ZnSGJFZ2RkSGNVYzBkWmRWY25kUmZ1ZGRhbmVNYXNiQ2JTYWxoUWRXYXdic2RnZUdiRmFFZVFoQ2FFZjVlcWJXY2tmTmIrY2Jja2N4Z3BnRmdIYkpmT2djZXhlQmRNZlRjVmZGaEplRmdVZzRhc2RPY2thMGI5ZkJmQ2ZZZVFhQ2FBY0lnd2dDZTNkTmhOY1FjWGFSaGFlVmVuZlFjUGZhYjFiSWhVZWNlVWRZZlRiZWJGZ05iUGhJaHliOGVIYkFieGRNZTFkQmMzZE5nV2NFYm5kcGVIZ1piRWhGYnVhU2ZtZlJiNWNGaGhoMWFxZk5ieGExYU5mR2VWY1plMGNiYWljdGQ2YVllMmN4ZG5iRmJoZkpkTWJkZVVjb2dZYkFlRWRwaEZlY2ZFZ2RjQ2ZLY1RoY2VvaEtma2ZBZDdjQWhUZjBhUWRSZUJibGJZYlNlVWM1YWthYWFYYlFlWWVjYkVnRmgwYlVmVWJvZ1loTmVFYU5jemhCZ1ZiRmRsY1dmbGVaYTBiRGEyYXRoU2VGZkhkRmVHY0VmM2hnZ0hmVGgyYkplc2RVYzBmMGFkZkRiM2ZRZWNlQmRYZjhiMWhBYnpmRWZOYktkMmNCZ2tkZWVVZ3NhVWRjZFJhMGVkZlRnUmNsZFdnZGZHZzVlcGZjYXlja2dUY0tiVmFWYUdlQmNUY29jRWNFYkZjcGNOaENkeWZ0ZndiUWNtZjljaWVaY21ka2VVY2Nia2c1ZHpkRWhFYnhkTmZVZ1Vha2RWZFRmamFzY3hiVGdDZlVnVGRPYWxoRWRlaE5iWGdkYVZoTmNnYW9mUWNMY1Rhd2RDZWRkbmdKZndlZWJCaFJleGFSaGhnTmM0YlVjMGg5Z2tnYWFsYU1oWmZFYjNoQWVMY0JnSGh3ZlNoZWdrZGRha2FRYVdkNWFLZlpjSGJsZkxoRmNIZEVlSGNIYVFhdGJNYkdmRGJjZTZlUGd6ZHdiaGRSaG1hOGJmZkVoaGhkZGZjU2RoYUJkU2dSYkFhdGR3Y1dia2JKY3ZjWWVtZlpicGhGYUhhSmRPY2NiMGdJYUpnR2ZRZ1FoYmhXZTBhNGM5aGJhemJKZndoUWVYYlJhUmVTZGtkNWMxaEVnWGhOZE1lVWFYZmhkd2RWYWlka2JVYVFiVmhJZ1VjY2FVZVlhVGFlY0ZmTmZQY05iaWg4YkhnVGRFYUVoK2dDYndjdGFZZVZnbmNJaE9kYWNFY0Znc2hDaDJmWmIxZlNhMWYxZTRoRWVSYTBmRWNBaG5meGcwaGJlbmJaZ3pmYmcwZFlhNmJIYnhiNWFtZWRiVWJvZ1FmVWRrYVFnTGVlZ0FiaGVNZkloR2hKYTdjYWhWZEllbmFBZ0RhQmZFZEJiUWZJYWZkU2VSZDBlYWJaZlhlUmJLY2VmVWVFaHZhZWYwZnBhT2hkaFJjRmJ6ZVRmRmNGZTRiSWFoYU1mZ2VXZ2poa2VjY0ZmQmQ0Y0VkV2FUZDBhUWdHYTJib2M2YkFnVmhaZEhiUGQxYzhmQWRCZmxlZGUwaERkeWhVaFNhQWZSZTBncWRDY1JnbGhiZUlkVmFoZFBhR2hVZUJiWWROaHliOGU2YlBiMmhjZlNoYWZ4YVplQWRSZldkNWZnZUVjRmhKZUVmQ2gzaEJkYWhIZjJhWmF1Y1RmR2ZrZVVkY2FraDVjemZFZkVoUWFmZlhneGFrZFZjVWUyYmxnMmNHYW5ibGROYlhibGNGYUtjVGVuYVVlUmJjZHhhNWZaZmNkQ2VKZFloSmR3aDlkMmRVaGdkWmc0YVRhemJsaDRmVWcwaDlma2FZZDBlZ2N6ZkVjM2hCYVdhVWNGYjVjcGZVZEViZGJrZ1FjV2E0Zk1kTWhUZWNkSWdRYURnaGRTY1ViMGIwY1JkQWduYWhndWhKZkhiOWV2ZkRkMmU0YVdhU2dXaFpmMWVTY2hiQmFTZ1JoQWh0YXlhRGJ4ZkVocWFZYWphVWM5YlJkamJzYU5mSmZ4YkphWGNaYzFnRmVKZkZhVWE1ZHBkZGhCaEFmMmVGZ0Rob2JTZEhlZ2FjYzZlWGIzYU5kRWdCZFhnRmN3ZURlVmg0YVBiYWMxaElnVWVjaFVhWWNUY2VlQmdVYWFjS2NpYWtjSGZVaEZnd2IrYUNjeGV4ZWVnR2UzYW9jY2hUZGthRmh1ZlNhbWZSaDViU2R4ZlJkeGdIZ1JmMGRaYlNld2E5aDBjTmdWZ3hiemhiYzBhWmFuZUZlaGRKaE1nZGFVaG9lUWFVZmtkUmVkZk1oUWhoZENiT2UyZUphN2dhZVZhb2QzZkdkWGVOZWxlQmRRY01hRmNVYVhkUWZjYU9lemZWYkJkZWJGZkJmOWNTY21jQmRPY2RkUmNGaHpnVGFGZ0ZjNGRjY0ZkWmMwZERjMmNzYkFhVWRTZ1VjVGJRZ1RlWmFUZlJhMGQ1aHFjVWh4ZWtkVGFjYUFidGRaYlZhaGFKZTZlUmYyZ1JiQmhiZ2thSWZ3ZWRhemVSZ3JhSWZVZzloU2VHaFZlWWVwYUNlMmg1ZXJoY2R6ZFJjc2RaY3hjWWdTY1RkSGZWZUtkRWJGZUpoRWZDZzNjQmNhZlFnbWc5ZGlnWmhoZ1pkcmFJYmhjd2g4YlJiQWJNZnlnTGVsaE1lVmJPYnloQWg2Z1RiR2FnZmdiSmNnZU1lTGRGYjNidGJCZUllUWNNaEZhTmN5Y1FiUGdKY0VkcGhuYmVjQmFSZHhiUmFoaE5iNGZVYzBoOWFrYmFnbGFNZVpkRWYzZkFlTGFXY1ZlWmhVZE5mUWJoZytoUWNTZmdoZmVLaGpob2FmZFhoVGM1ZFRkSGFVZ1VmUWRWY2lhOWFFY2RhbmZOaHZmUmNtY2NoV2FFY2toeGIxZ1NjaGRCZlNiUmVBZ3Rid2FXZ2thSmV2YU1jQ2FNZzlnUWJTZkFlQWJjYXdnUmdlZlZobmJ0YkpjRmFVZDVkcGdkZkJmaGJ3ZFFhWGVSZVJnU2RrZzVkMWFFY1hjTmNNY0RkSGhSZGFmVmNuZFFkUGZhYzFhSWZVZGNnVWFZYlRlZWFGYk5mUGVaY0dhb2dPZUVnQmc5Y2FiQ2cxYmxlV2dFY25ncGdIZVplRWFGaHViU2VtZ1JlNWVTZ3hjUmZsZkRheGcxZVFhQmRFZ3RiMGFPYm5mZ2UxYklnQWNsZHZkSGh4ZUpkS2RjZzJjQWVRZlVoa2FRYUxnY2VGaHBoQ2RiaDJlSmhtZGFiUmFSZnlhVGVuYU1kUWdUY2dhc2ZFYUJoMWFZZmFmSWNEY3RoV2JjZmthRmVwaFRiRWNvaGFjTGRFY0ViMmJBYXhiZGM0aEpmRmRnZm5iV2VpaGtiVGJSYWlkTWFIZ1NhbmVoZ1ZoU2RVaDVncWVVZHhla2FUYWNlQWV0YVphVmZoZkpoNmFSYTJkUmJCZmJja2ZwY2tnYWJVZnNhSmViYUFoQWRkaEdmUmZjZ0ZnSWZTZHdnM2ZJYlRjMGRIY1BjaGY0ZkRkUWZIaFZoYmdHZVZmd2FHYVVhaWdRZmZmTGdpZm9lc2dJZFRoMWJjaFdhRWc1Z3pjRWFFYnhmTmdVZlVia2NWYlRobWdsZDBmR2ZIY2xjYWRYZWxhRmdLYVRnbmVVYVJmY2IwaHhmUmNlZUhlQWFMYmRlRWh3ZHFhQmdsY2NlNWFSZGhkc2RxaFdha2Q4Zy9lUWdGYk1hWmFFaDNkQWVMYVdjVmZZYlNlZWNrZWRna2dRZVRjd2hQZE1kQ2F3ZVpnV2VuYkVhY2VEYkZlWWR6ZlZkbmVSYnVnZGNuaE5idmVSZW1nY2JXZUVnaGVGaGZkU2ZoZkJkU2hSZUFndGZ3Zldka2NJZnljU2RHYlphcGJGYkhiSmZPZmNheGJCZk1oQ2F3ZFFlSGRWYWhnb2dnZE9lMWZaYndjRGJuZHhiWWJTYmhkVmRmaEVjWGNOYU1oVWNYZmhid2NWZm5lUWZQYmFkd2RCZFJiSmhSaE5iQmdOY2xkTWFCY2FmaGY0ZXFnYWdYYVlmVWVkY0RmZ2drZVllQmJzYitkR2V6ZUljYmNPYWhoUWJXaE9oV2dCZnhlQWVoYTFkZmNDZUVhSmNqY2VkbWc1aGdkZWdWZ0pkd2hGYmdnaGFNZFphRmZvZUhhUWJWZ01kZmdZaFVlSmRRZmZoSGFsZE1jYWJSZVJieWVUYm5nTWZRaFRmRWEwZ01kWWh4ZFZoT2JhYlhnUWJZZ2NkRWdGZzBoRmN4ZThhQWJOZGtjVWM2Y0FjeGU5ZDRnT2NGZTRlZ2dBZzJoc2NBZ0hnWGFFZmRjT2ZYZWhkVGJUZjJmUmFxZFVheGRrY1RnY2RBZ3NmUWRFZkJhSmd5aENjR2d4YUloYmNsZFpka2ZLZTBoSWNVYUpjVmdWZFBhQWdrYTVkV2RPZGljc2VoYmNheGQwY0hiS2ZWZEZjWGNLZlNiY2RZY1hkd2RCYU1lQ2NSZGthVWVGYkNjNGV1YkxmeWQwZFVoSmJoYWNmamNWYlFoaGZOZEViQmR0ZEhjRGN6Y0JlMGJWYkRjVWNQY01nd2JVY0NkVGJIYndhS2NXZFVneGJSZWVnSGJCaFdiZGJBaDllcmZVaGhnUWhqaEFmMGJjZXRhQWRRY0Zia2FZZG5ha2JaZUVkM2RBYkxkV2dWZ1lnU2VlYWthZGJrZFFlV2c0YUVkYWNnZzBheWdaaEJjUmg1aFliaWJ4YXJoSmdCZFVhWGdDY1FhQWNhZU5iaGdkZjVkWWFEZWhlZmVTaGhnQmdTZlJkQWF0ZHdhV2hrZUpjdmRZZ21oWmZwY0ZjSGhKY1JoY2V4ZGhlRWVHYlZlRmJVZEZnUWdBYnNjSWZ4ZmdkRmhDaERnb2FGZFVoaWQ4Ym5iUWN6ZUlnVmZXZlNhcGE1ZVhmM2hnZ1BhWWN3YVlkYWZEZmpibGFEY0tlaGZ3YWJkS2R4ZlVhc2JHZVFhNWN3aFJoVmNjZEdlUWhEYVVnVGhLZHhiVWIzZ0dnaWRGZHdnUWFqZjVkeGFIZVJjMWZOZUdlVmVaZTBiYmFuZFpiemRiZzBoWmduZkZlZ2RoaE1jZmJRY1JjRmJIZGdmZ2VMZmJiVWVkZmZoYmZ6YVpjbWhiZXhmSmd5ZVJkaWhjYVFjVWVVZjBjZmFEYkVnSmVPYkpiM2J4Z0toZWRVY2hoNGZVaFVlSWNhYWVmMWgwYTJoQWVoZVloc2FPY0ZkWmVwYkRlemVsYWJhSGJYZzFkc2RFYjNlaGhUYVRoMmhSY3FkVWh4ZWtjVGFjZUFidGRaZEFoamNoZjZnUmcyZFJlQmRiYWthcGdrZmVnVWhzZlVlZWFBYVlmM2ZUYVJobGdXZGRjR2E1ZDJlY2gyZDhnYmZUYVJlWWVTZ1RiSGNWYktoRWVGZUpnRWhUZlNoVWZVaEFnVGZzZ3JoS2NTY2NnVWhQZkVnWWduZ0hnRWV3YWZlWGJVZ2xlY2dSaDJia2R2Y01ibmVCZ0JlZGRGZkZjS2hUaG5nVWNSZ2NmMGJ3ZFlmUGZuYkJiZWRkYVFnY2hsZlhoR2RBYUlmTmFuY1llY2JMZ0NjNGRXZUdnRGNKYWdhYmdBYU5oK2ZLYVNoWmI5aENhRGhOYmtlSGZUY0pnS2FNYkRhRWJDZVJiM2FGaFVjVWR4YzVnTmRGZXpjb2V0Z01kemN3ZXBmUmNpYWthZmNHZjJkWmcxYVNhaGRCZlNiUmZBYXRod2JXZGtjSmJ2Z1libWdZZjdnVWhTYVljYmRJYlZnNWRNY0FleGNRZmVlRmVRZ0JhaGdJY0JiUmN3YUVkM2VoYlJmQWcwZ2RjdWRPaDNmTmJNaFVmWGhoZXdhVmhuZlFmUGdhYTFhSmFkYk5jMGJZZmJhZWZoZDBoYWZLZlNnZ2VXZVNoeGVGZ3djRmFrYVJlV2NSYmlmTWVYaEllUWI0YW9kU2JqZEJld2RTYzBnOWZiYkhmUmMxZk5lR2NWY1phMGhiZ25oWmJ6Z2JlMGJaYm5iWGIxZVJiTWhmY1VmaGNEY0JoaGZaYkNmUGNoZTFlQWZiYzNnOWQ3Z2FiVWVBY3JnSGVqZVpiZmVDYmtnMGJEZVFkRGQ5YU9nYWFYaFFnWWhjaEVhRmYwYlVjVWJwZU9mZGNSYkZjemVUY0FmVWF3Z0lnaGJrZ2plRGV5YVVkWGNRYTNmRWJqZVFmU2FvY2NjSGhXaHhkQWNVaHhja2hUYWNnQWh0YVpoVmZoaEphNmRSaDJjUmVCZWJoa2hwZWtmZWJVZmxoOWhOYnhjMWNZY0FjMWhvY1pkTWRDaGNnNGNOZ0dmOGhQZk5oQmNaaEJmSGVEZ0FkSmhXZFJoUWVOZFRjamRSZWFhRmdpZ2NobmVLZ0djbGZBZk9nZ2J0ZHpnVmVnZlVoZmVBZWhjMGZWYkRmemJzaHpmVGVUZTBiRWdPY2dlVmRLaEFkeWJCZUNmSmUwY3dmVGFQY1hlQWVYZWRlRmN3YS9hQWVGaDBkL2NBZ1JhRmRTZlViMGU5aGtjYWFsZU1mWmFFZTNjQWhMY1djVmZZZlNnZWhraGRldGVXY2tlUmhLYlphSGZsaExkRmNIYUVlZGNIYlVoMGFaYlZobmdRYjhoTWN5Z2NoNmNGZENha2JXaFZnRWRRZ2hiQWVsYWtmQmdTZ0Flc2JrYVVlMWhsZkZkWWdtY1pmcGJGZkhjSmFPZ2NheGdCYk1oVGdRZXhjamNGYlVhNWZwaGRoQmZoZndnUWRYY1JoUmhTZWhhd2N3Z1JlU2RZY2VjSGEzZ2dmamVYZ2ljQmJIaElmZ2RFZllnY2JSY0lkZmhlYkFnRmJEZlpoQ2ROaGFjQWZqYWxhd2ZDYzFmbGZXYUVkbmJwZEhkWmZCYXhhRWJTZm1nUmc1ZlNkeGRSaHhoSGVSZDBmTGFUZkJlZ2EzaE9hamI4ZjhiSWFVYlloMGJIY2tmWmFBZ2RkUmVnZWNiVWJnZzBnSGRjYUJhOWVMaGJhemZsZE1iYWJSZVJleWZUZW5lTWFRZlRhRWcxZVJoU2FWZXdnSWRhZ1hid2VhYlBkaGJRYTVhRWN3YjhjY2dkZXhiRmJ1ZVVoVmVFZnNoS2NRY1lmeGhRY0NiMWZTYVJlbmhoZXNlRWUzYmhkVGRUZjJnUmdxZlVheGZrZ1RkY2hBZHRkWmNBZWxlb2dvZENmRGdOZUJiSWVBaDhmemJlZVRkOWVOYUliVmNoZDRkSGQwaHNkWmFKYm1mWmJ4ZGNlVGJrZEhiS2MwZE5nWGZUZW5iVWFMZFFiaGhVY1JjUmNqYVVoVWZGYm1hOGJ2YU1oemZwYkFlY2JnZ0FlOGNSaEVmd2RQYkZjRWNsYlVjVGVpZ2NnaGdWaFRoSWNFZkpobGRaYkRoVmRWZThoUmJjYjBjeGJSZ2VjSGVCZFdkZGFBZDlkcmhBZEZlRWdsZkVoMGhFYjJmVWYwYzBmeGFKYUJoZGdjYVZkVGZsY0ZnSGJCZklnUWJlY2tnWmg1aFFoVGZvYlRiTmdEZHdnRWZVYW5oRmE4Y1RkeGY5YVlnRGF4Y1ljN2NNYURiVWZxZkZhR2RjYlFjRmVFY3dobmZTY2xna2VjZEZjMWI4aHhlRmRBZEVicWJMY1NoQmJwaGRlU2dBZGNkTWhrZWtldWhHYUJoY2VQZlVjQmF4YURnZGFCZmhod2JRZlhiUmFSZVNna2Q1ZTFhRWhYYU5iTWVUZG5hZ2FnYlhoaWRBZ0RjYWN3aEFiWWdjY1FhOGRmZmVlQmdaYUdnVGRtaHBkVGdHZVJkTmJ3ZENmMWJsZVdmRWduZ3BnSGVaaEZodGd1YVNnRGJjZnRnR2dWYzBiL2RXZmhmOWVOY0JlRWd0YjBnT2hpaDhnamdLZ2dma2FoZUZha2NCY21kZGFVZ29jUWdVZGtmUWJMYmNiRmZwZENoYmUyZkpmbWJkYWhjUWIrZlJkaWVjY2NmVGhCZTljZGdTZVZleGdIaFFhM2ZRaFloY2dFZkZlMGhVY1VlcGVPZGRnUmZGZHplVGhFaHRlNGJQYlZlNGhnYkFjMmJzZ0FlSGZXZHBkc2NFZzNjaGdUZFRnMmVSZXFoVWF4ZGxiT2ZXaGdidGdaZ1ZiaGdKYTZnUmYyZFJiQmZLZEJkOGdxZE9haGM5Z2RjUGFsZU1oZGFEYUJmRWRDYmZmV2I0ZHRlV2NXZzljR2FaYXhjWWRTZ1RmSGdWaEtjRWNGZ0liTmVUZVhiQmVTZVFoQ2NFYzNiS2d5aHRkUmVJaEVmeGh6YkVoVmRGZU5jQmJSZUJjRmRDZHloWWJ5Z0dkQ2NSZ0liWGdsZUZlS2VUZW5lVWFSZWNhMGV4YVJhZWRIY0JiV2FkZUZlc2hqZUFiRmVzaG1kUmJsZzBjOWVCZkVoOGhRYU1kd2ZOZWNiZGdpZkpnWmVGY2doUWFhY2ZiVWVVYTNnQ2JEY1FnUGFaYm5ha2RLaFJhamFaZUlhVWFBYmhjWGhBZG5hUWZqZEljeWNBYTdkUmRpZFZjVGFFY2dhMWYxZkJkRWdVY2ZmQmVraDRhaWNYZFVodGEwYVNoR2ZaY3BiRmFIaEphT2JjZ3hnQmVNY1RkVmNFZEFoVWUwZjVmaGVaZUJoaGR1ZVFkU2dCZllnWWFFYzVnMWVFYlhoTmdNZ1VjWGdoY3dlVmJuYVFkUGRhY3dhWmhjYUljd2FsY0VmZWdCYjBjS2NNYjJhb2NoZldhRmgwYjNoVGRqZXdnRWJRY0RoVWRWYWJiRWZaY3NnR2NTYzBjamdEZ2hnWmF4YlhjRWU4aEtjVGJCZHNieGhJZUNlSmR6ZUloaGJNZTBlUWdoaEloQ2dPZ2hhNGJRYUVlQWNFY0xmUGVoaDhkRmVMY2phWWF2YlBkMWRGZDFlUmEyYmdhNmFUZ0VkMWFSY1NoUmhWZE9jYWhYY1JkRmRXYmtoRmQwZVVkVWFwYU9lZGRSYkZhemFDYmdmUWcyZU1nd2FJZzloUWZDaFZlU2JRY1hja2RTYUhlM2FnYUJjUWYyZlFnamhYYnhobGZXYWVmUWZzY0NoZmRCY0plNmNSZjJnUmFCaGJla2VwY2tmZWhVZXRhR2ROZUVjbGdJaEhiMWJkYldiZmNFZ1JoMmFjZDJjOWRHZVpleGdZY1NnVGdIZlZjS2dFYkZnSWhGZkFneWNKZlRlVGRrZFZmaWNaYm1ma2hVaGNma2Y1ZnpnRWdFZHhjTmVVY1Vka2ZGYlRkbmNkZnBjR2JDZkplcmFkYUZhRmNLZlRmbmRVZFJkY2YwZXhiUmNlZEhiQmhXYWRlQWU5YzBkVWNsZXhhNWdFYmhhOWY0YkFkVWFaZk9nYWVsZE1iWmVFZzNhQWFMZVdoVmRZZ1NnZWVrZmRoa2ZRZVdiNWRRZ1plQ2g4ZEVkWGJUYlViZGhEZ1VmMGVZZ1NjMmZsZnVkUGgxYmxmdmVSaG1mY2dXYkVia2d4ZDFkU2NoZEJmU2ZSY0FidGd3ZFdmbGMxYnZoWWJEZ1VoOWNSYmphc2VBYU5oQmFKYk1oVWJFZXhkSmRRYVJkY2I1Y01oVmJjZTJlUWZUZEZlN2VTYmtnNWUxYUVjWGZOZ01jVWJYZGhmd2hWYW5mUWNQZmFoMWJJY1VmY2RWYmtjVGFNaEZjc2ZiY2FiR2dvYkJoRWdCZzBmMmZRaGhmVWJhZ0dnamhOZUxnWmhBZ1JibmJZZEdoUmY1ZFNheGdSZ3hkSGdSZjFmTmJHaFZoWmEwZ2JjbmNaYnpoYmUwZlphOWVGZWxmcGJFZ0liVWNZZlFhQWVFYzBnRmJOZ2hnTWZPZ0lnMmZvYnZjWWREYTVleWRUZG5hTWNRZVRiRWYxZlJnU2ZSZ1ZlT2NhZFhnUWJZaGNlRmN0aDBhR2dVZkljYWFlZVJhRWRoY1JoWGR0YTRhY2hGZlplMGFEZTJkdGFTYUZmSGJGaEdoR2htZ05kNWVUaDJlUmFxZVVjeGFrY1RjY2NBYnNiRWJmYUJjSmg2aFJkMmRSY0JmYmNrYXBna2FQZXhlNWdhZk1ka2RsYVVoQWNsZGRoV2NNaG1mWWFpZGZhMmU4YlVkYmRoYVpkSmJaaG5jVmdLZUViRmhKZEVoQ2EzY0JkYWZRaG1jOGRyaEliR2FrYmNiZWZnZzlkN2VRZ2tlVmRCYlViVWRGZ0JkVGJuYVJmMGNVZkhmZ2RWZmVoRmNGY2FjVGRtZXNhUmZJaFVneGNPY2ViR2ZCYVdoYmZnYTliN2hVaGtiaGZ4aEhleGJzZnFlV2FraFpidGNaZGxjTWZZYlhoWGU1Zy9hSWFDZVpnM2hIaGpjZ2hGYU1heGJ3YnJlSGFRZllhNGdZZFFmRmd0ZWNjamc5YnRoWGgzZzFmRWZkYW5kTmN2Y1JhbWZjZ1dlRWJrZXhoMWRTZGhiQmZTZUFna2RRYWljV2NrZ29jNWJJZHplUmNwYlhmWGRKY1RmY2V3ZkJjWGNUZ1FlTmJKaENiMGY0Z2dmYmZ4ZmhkN2hTZmpmMWNZYVNoaGhvZ09kV2JBYzVnTWVUZkhnaGJnZlRmVmU0ZlBkYWUxYklmVWdjZlVoWWZUZ2VlRmROYVBjTmZpZDhnSGVUZkVlRWMrY0Nid2QxY05hT2ZIZ3BiSGNaYUVlRmN1Y1NibWJSYjVhRmFqYzVneGNIZ1JnMWhOYkdoVmdaZzBkYmZqZEFkbWdJYlFoVWJ6Z1hkMWYwZENmZGFRZ1liWWZCZWtkZ2FMaEllbGVaaENjSmNtYnRmbWNNZGpoNWV5ZlRmbmRNYlFiVGRFZDFlUmFTYVJoVmJPZkljRGRJZFlkZWFHZHRhMGhVaFVjcGJPZ2RjUmRGYXphVGRGYUZhNGdjZkZoWmc4YUJnMmJrZUJnUWJDYU1iUGJYYVRmOWhSY1RiMmNWYzNnVWUwaDFoS2dJY0VnNGRXZ0VhQmVJZXpjUmZ6ZmdnZGRiYmtjaGRtZ2VlVmRZaEphYmZCYzFjVWdSYUJkbGZRZWNibWE1ZytkT2ZtYjlhYmdaZ3hoUmRIZkdkRGdOZVNiRWNsZHRhSWFJaFhlQmhhaFFhbWc5YWllWmZtZWtmVWdjYmthNWd6aEVhRWYwYkRoWGJ3Y0JiR2VLY3lnY2IzZ1ZjemFRZElnT2hoZlpnQ2hCaDNjd2dZZ1dkVWd4Y1JhZWhIZEJlV2JkY0FhOWdyYVVjaGZSaDRlYmVCaE5kNGJVZzBoOWdrYmFhbGhNY1phRWMzaEFmTGVXYVFnSmFhZEtiQWVnZXplUWNTaEFnUGFNZjNla2cvYVRmU2hGYVllZWdCZTljTGhHZVNlWmZtZGNjWGVFY3FmQ2ZDYVJoWmVWYWdmVWE3Z0RhUmdKZlNoQ2RWaDRjamVEZWtnSWd0ZEphMmhZZm9nRmZDZFFlUGZQYjFha2dJZ1RiUWdJYWRmUmN3YWNobmFNZ3hnZ2gxY0RmemRjYWVoRGdnaGNhN2NWZ25jUmJGYVNmbGVKYXdiVmhuaFFkUGVhYzFmSWJVaGNmVWZZY1RmTGJoaEliZGZaaENmOWZUY0JhQmFOZGdiQ2J3YVZkV2ZWYm5iSWRWZGFlRWRFaG5hUWQzYjloVGdTZHhoUmR4YkhiUmMxZU5hR2NWZ1plMGZiYmlkSmR6Y2Nma2VZYXZoSGVrZlpoQWJkYVFoOGdaZVNlV2M0ZExiY2RGZXBkQ2ZiZzJiSmJtZ2FoUmhSZXliR2NEZUplQ2FUY0FjSmRSZVZhQmdVZmFlWmZ5Yk5iS2dPZ1JnVWJ4Y1doUmFoZ0NnZGhWaGhnNmVWYTNkdGU0ZmNkRmFaYjBjRGMyZXRjU2hGZUhiRmJHZlFiVGgwZ0hjR2RqZllja2JVZjFnWWhUaGNhUmZaZUVlVmdsZ2RlNmZRZ1dnSmZCY1pnaGQ1YWtkWmNFZ3RmQWVmZzBhNWZSZUJoRmVvZVRoZmFIZDVhNmFjZHlkQmFQZ2JmaGdvaFNiR2RHZDVlZ2NFZ0ZmSmZFYUNoM2RCYWFhUWVtZzhmL2VUaEdia2VVZmNma2E1ZXpiRWRFZXhnTmRGZnhjeGFiZ0RhVGYwZzljVmZ6YzVhQmVOaDFoa2FlaFFnbmVWaERoZWhrYndmS2JVZW5lQmZXaGRhQWU5YXJoVWhoZlJieGRSY2hkTWd1ZkVhaGIxZmtoSWUxZU1nRWVFY3liSWRGaEZjUmROYmNjUGdSYk1lc2dRYlhlSmJLY2RnSGNsZlVkRmdHZkVhZGVCaDBiMGJKZlZhaWNoZXVkTGUzYXNoOWhTZENjdGdUZlhlQWZzYmhjQWRoZGxmSmdiYWdodGh3Yldja2dKYXZjWWNtY1pmcGVGY0hmSWZhaGNmd2YxZU1iQmhWZ2tkZGRHYlVoNGJnY2ZnUWROZGFmUWZYZFJhUmFTZGtnNWIxZUVhWGFOZk1mVWdUYjRlL2VCYUhlUWJIZ1BlUmJOaEdkY2FRZ01hVGJaZlZiTmRmaGZhMmhvZ2FoR2dRZjFkd2hUZWtkSmRXZFZlM2dwaE1kZWRVaEZlL2RRZDJkUWd0YU1nRmhFZ01lSGVRaEJmTmhDYjBnTmRoYWJhbmdCYXpjUGJUYjBmaWZhZ3dnbGRtZ2RhVWFvZlFoVWFrZ1FlTGJjZEZlcGZDZmJkemZBZ2piUGZVZ0VhZ2dBZ0hkTmJFaFZkMmFkYlJnU2JSY1ZmT2dhY1hoUWFZaGNjQmd4YmVkVWZVZXBhT2ZkYlJmRmF6YVRkRmNFZCtoSmdSaGdlM2ZXZXlmSWNkZFdhbmhFZ1dmR2h5YXhmZmNUYXpkWmFtZ1VoMWdBYWZmY2NFYzVkUWRWZ2tmbGRRY1JoMmZSZEJkYmhrYXBha2JlZlVnc2NVZmNmVmdSaGJiVGRSZEZmZWJKYW1hQWYwZ0thamdzYURlQ2IxZk5kY2JDZnloRWJDZ0hnRmdKZlVkQ2MyYjVlYWJDZjJhOGIrY09obWJsZEdmZmNBaHdocWRSYkFla2NoaEZlQWFkZ1NhR2NpZkZkMGZCaEhlQWRJY2ZnVmRoYWdkVGJuZFVjUmhjYTBkeGdSaGVlSGJCYldjZGRBZjlkcmVCZ2xjd2FqZ0NlVWVSZTRkSGRRYm9oemVhYWlmRmRZZVhmVGZkY09jUGVBZ1JoQWNOZ1JiVmJzaFFnMmhrZUZhSWZqYThmWWRVZFNoVWdhZkhjUWVSYUtmVmhqZ3NnN2JJaG5hTWNnYkFiR2FkZ1VkWGFSZGthN2dEYmtlTmZRYVRiUmdCYWFiV2drYkpldmJZY21mWmFwZkZnSGFKYk9hY2IxZWtnS2JUaFZma2FiZUdod2N3YXdmSWhGYjBkY2NCZURlb2dXZkhnZ2NaYzFnRGZYYU1jRmdVZlhoTmV3Y1hoamRFZ1BmTmJ3YTRlVWhZZlVhOGRhZVVlbGJOYVBnWmdHY3BkVGFHZ1JoTmJ3aENnMWdsZFdoRWFpZjRnUGdOZGdmNGI1aFNlaWNvYjhmSGZCZ1FoRGVYZEZnTWZLZVhlRGdNZm1jUGREY2tmaGJaZTBlUmhnZVdnbGZjZUNkTWZoYjVhWWVWZVVnUmFDY0lmMWdvZk5iT2RqZFpobWVKZmxiSmh5YkRlRGh4YkZiQWhnZGtiQ2JTaHhkeGJWZ1FnM2ZRZVlnY2FFYUZiMGJVaFVkcGJPYmRhUmZFZ2hmQ2hRZ1VjdGZJZ2hnaGgwZkJhMGJGZ1NhRmdIaEZoR2JFZjNoaGJUZVRkMmNSZHFmVWZ4Z2tmYmZJZ2dkdGJFYmZlQmVKYTZoUmcyZ1JjQmFiZmtocGhrZ2ViVWdzYlVkY2JSZzBiZGFHYjFkWWJmZ01oR2Q1Z21jY2YzZUphYmZlZmhmWmViYlRnSGZOYk1mRWVBYVFkTGJRaGpkUmVhY1VobWU5Zy9mZWQzZ1FiVWFOYzJoUmR6Y0VoRWJ4ZE5oVWNVYWtiVmJUY21lbGMwZEdkSGZCZkJmZGdGYUZlS2JVYVhhVmdmZU5kaGF0Y1JmRGZUZmthWWVJZEJkY2NLaEFmRWRZZndnSGR4ZnNncWRXYm1iVmNrZGFmbGVNZlpoRWczYUFkTGFXYlZjWWNTYmVma2hkaGtkUWRXYTVmS2JmZ25ha2VkZFdjemZoaFpjSGNWZjBnWmZTZjJjbGF6ZWRhamVaYkZlUmNtZWNnV2ZFYmtkeGQxaFNlaGNCaFNkUmRBZnRhd2NXZmthSmN2ZFlibmhsZHBlV2dqYWNiWmdjYzJlVWFGZ0Fkd2dWZFJiZGJCZXdoN2JOZlVjRmU0Z0VhM2FoZlJlQWEwYmRlZmJFY1hmTmJNYVVlWGNoYXdmVmVuaFFlUGVhZTFmSWdVZWNkVWNZYVRkZWFFZWxlUGJLYmloOGZFY0dlV2RZZDVnUmdRaDFhT2JjZHloZ2dWZ0phUmhoYm1oR2RHYWhiNWRBaGhnaGN4aFdoQmNSYUVkRmZYZnhkMGJiZ25oWmZ6YmJhMGNaZ25mRmZoZ0pkTWdkZ1VicGNlYVhkRGFCYXlnQWZEaDhjbWVFYkFmTWNVZUdmM2RVaExoTWJRZUJhbGJQZERlMGMrZk9oMmdGZmtjYWFYZVFjWWhjaEVkRmYwZFVmVWJwYU9kZGhSY0ZmemhUZUZjRmZuZGNkRmM1ZjhlV2cyZHRiUGFGZENlTmdQaEhkM2hoZWJiR2EyZm9iVmFMZEVibGVCZlBjMWg4ZVdjS2JXaDFmNmZXZW1hUWZQYVliQmJvaDJoTmZoYjlmYmVKZ1VmUmVOY0NlQmdCaGZmWGFtZzVlMmRjZjJlOWNHZlpheGFZZ1NhVGdIaFZlS2hFZ0ZoSmVFZEVmWGhCZVNkRmVtaDliL2JaYWlnb2ZjaEpka2VKZHplUWRraFZhRWJYZ1dhTWFWYlRobWZsYzBnR2hIZUJjQmVkYUZiRmJLZVRjbmFWY0ZiV2hVaHhhUmJlZ0hnQmRXYWRiQWg5ZXJhVWdoYlJkNGdYYlRkbGE0ZVViMGY5Z2tnYWhsYU1oWmdFZHlkMGNoYVdlVmVZZFNoZWVrZmRna2dRYVdnNGVNZE1oVGZjZ0lmUWVEaGhkU2RVYjBhMWdVZVhlaWhCY2lmZGNpZkZjbWhSZ2pnd2Q4YUVna2h4ZjFjU2ZoZEJhU2FSZUFmdGV3Z1dnZ2dzZXBlWWNtYTRkbmFHZ2pnc2ZkY0VjVWNVYktjQ2N4aFFlYmZIYlJmeGhnZ2ZoUmJnZnJjYWczZlJnUmRTYWtlNWQxaEVlWGVOZU1iVWdYZGhjd2NWZWlnSmhPYU9hVmFKZmRoY2RWYnNoVGdhZ0ZhTWZUZVpmRGhOYmJnU2R4YTBhOGhUaGhmY2NSY1JmamRKZ09jZmUyZnRndWZTZG1nUmQ1Z1NoeGZSZXhnSGdSZzFlTmdHZlZlWWFtZ0theWhJZW1iUGRRYmhhbmFIYWtoWmZNYWFmRWJwaFlhV2doY0FjSGdjZkJoTmdMZ1pnbWU1Z21nZWhSYlJjdmNVaDJiNGVRYkdnRWVNZGRnRGhGZnNkSmhQZ1Rld2VZZmJnMGdFYmdjVWdWYkJiT2JmYVVjTmQ5YkRmeGY0ZG9mS2RWaDRmZ2JBZjJidGhDYUdkSGZGZldoSGMzY2dlYWhSY21jaGdxZkJkeGNBY0ljV2ZnY3RhWmdWZmhnSmI2aFJhMmNSYUJnYmFrYm9kNWFVaDBkc2hVZ2NlUmcwYWRhVGVSZGxjV2ZkY0doNGcvZU5jV2Q5Yk9iTmRSZThlU2dGYzFiOWVLZUVmRmFKZUViQ2EzZEJkYWhRZW1kOWJpYVphbWhsZ2RiTmJFYTVhN2NPaGtleGhOaFVnVWRrZlZoVGFtZGxjMGJHZkhkQmRCZWRiRmVGYktiUmVuaGRkRWhQaFFlZ2NVZlBlamhrY1ljTWNVZHRlcGhVZmhiVmZzZlJla2NjYmhkQWZ3Zm9hcmdMYUZnTmU0YVFjU2JKYUtoQWFEZFJkSGFQZkFiRWJoZ0VoMmI1ZU1mWWVsYk5iTGJGYkhhRWFkYkhoVWIwY1pkVmRuaFJidWJkYW5mTmF2Y1JibWVjZVdjUWZFaEllM2RIaDFlWWhVYkFnVmdsZXdlRWd3YXdnOGZOaGljY2JuZVZjemhjY0JkTmdSaEFndGhIZndoTWdJZFRoQ2V3YThoTWdsZDRmMWNFYzNoMWVSY0ZiaGhKZGZnRWNYZE5iTWZVYlhnaGh3YVZobmRRZlBlYWcxZ0lnVWJjZVVjWWVSZU5kQmNZZEJmSWR6ZTRnYmFHZHhkTWQ1aFJhVmhrZUVhT2JIZHBkSGJaaEVhRmJ1Z1NibWRSYzVhU2V4ZVJleGVIZ1JkUmVuYkdnVmJaZTBkYmZuaFpmemFiYjBnWmVuZEZnaGhKYk1oZGhVYXBnQ2ZGZnhjQmdlZEllaGFSYUNlYmhTZXdkemNKZ0ZkWWYzaEhhSGZFZVFmVGdWZ0JnUmVIaFVnd2NlZ0xoRGV0YmVmY2dCYk5iNmRIZlFhOGVBZE1ha2RVZjdlVGZBYTBoa2djYkRjMWU4Z1hmV2JVZmVkVWJUYThnQmNSYXpiQmZhZVphV2hSZXFnVWZ4YmtmVGZjZEFidGFaZFZmaGhKYzZoUmEyZFJiQmhiYmtlcGI3aGVmUWRNZmNlSmhSZkVhZGdYY1JoQmc4Z2RoR2U1YjJoY2cyYjljR2JaZXhjWWJTZFRjSGRWaEtjRWFGYkphRWNDZDJocGVhZ0FhV2hjZTJkYWVtYWxnR2NlYzFhVmNaZEVhRWF4Zk5hVWdVYmtiVmdUYm1lbGEwaEdhSGFCY0JnUGVSZWRlS2JSZW5jZGh6YUpmZ2hvZ1hnUGNTaEplVWdkaEJlSmEyZ1RneGdRY2plU2VFYmNjaGZBYndhcGNrZGJiRmNVY1pnRmMzYVFlRGJDZTFkaGZXYU9ieGNNZGxiU2VHY2RlS2JOYWpmd2ZmY1FlU2NOZlRhSGZRZzRmUmdBZ25kaGV1YkplSGgwY3JoQmd6aE5oWGNHZTFoZGhmZlNiaGJCZFNkUmZBZ3Rnd2VXZWtoSmJ2ZVljamN0ZERmRmFIYkpkT2NjZnhjQmJNZFRnVmZGZUpjRmJSYW9iaGJKaGxnY2huZ1FhVGVvZ1VmSGNVZzRlQmdTZENnTWRKYk5jQ2VvaGlnR2VTZFlhSGhRY1ZhSWJVY2NoVWVZY1RlZWVGY05iUGFaZ0dhcGVUZUdoUmZFYVdnUWZnZ3NjRmJSZ25kb2ZHYU5lZ2FZZDdkQmV5ZkVjM2NIY3hhUWY4ZVNjRWY0ZlpkR2hSZFFoeGNiYWpoZGh6ZVBnQmFJZzFnWGYxZndhTGhlZVVkcGh5ZkJmd2FKZU5nTmNRYmhlT2RiY3dlTWIwY09jMWNVYXJiTGhDZ1piV2FDY2diZ2REYlJmUmNVZHZlT2V5ZVpkWmFLZVVkMWIwZ0hjaGhoZU9iTmFFYk1kaGVEY1FoaGcxY1BhQmU4Zi9jU2RtZXNoZGhWY2phc2hEYVViQ2h4ZmRnVGJVZzVmcWJVZnhma2VUaGNlQWh0YVpnVmdoZ0poNmZUYW5nOWdyZmJia2FwZWtlZWJVZXNlVWhjZlJjMWdBZFpmeGRsY1doZGZHYjVnMmJjYjJoOWFHZkllVWVOYmNiRGV5Z0VjRGJYY3hmeGNFZlVobmFnYU9jU2UyZjhhNWRUZ0dna2VVZGNia2M1ZXpnRWdFY3hjTmNVZFVlbGRjYUNhR2dsYjhhVGNIYkJnZmFhYVZoRWFGZVJkbmJ3YVljV2ZVaHhlUmFlYkhjQmVXZWRoQWQ5YXJmVWRoYlJkeGJSaGtmY2Z3ZEFnUWZBZHpkYWJoZjFkY2JSaEhhQmY1YkdnQmVoaFZjUGR5Z0lkMmVFYnljRWZZZ2JjRmJOaExlRmRIY0VjZGFIY1VlMGFaYlZlbmdSZXVkZGNuYU5ndmhSZG1hVmczY1JoaGNnZHdnQmIwZkFkR2FSaEZoOGgvY1dnZ2VNYWphTGdpZWthcWNWZ1NoWWdMZGNhM2hJZVpmQ2h4YWNkTWNSZjBnNGNsZE5mVWJvZzNjQmJDZlpiUmJIaGdhWWMwZ1hhM2VNYkJhRWFDZUFnNWZHZXljRmJDZ2Fnd2FGZ2RhS2V3Zk1iSmZlZEVhTWFYYlpibWJwaFlnTWZ4Y05md2FDZzFkbGZXZEVibmVwaEhjWmZFZEZidWhTYW1iUmQ1YVNoeGRRZytoRmhSY1JoRGNUYlJoa2FIZE9oaWFRYjZhSWNRaEZldmZCYXdhUmdGZ2RhVWFFZDZlVWdrZVFoTGRjYkZocGFDZmJmMmNKZG1iYWVSY1JoeWFUYW5lTWJRaFRiRWc5aFJjQ2gwY3dkYWVMZkNhY2RhZ1dka2VGZDBnVWZVZXBhT2hkZVJkRmd6ZFRiRmhGZzRhY2NGZTlldmdKYldldGFTY0ZmSGVGZUdiRWIzZGhmVGdUZjJjUWI0YUZma2MxZUdkSWFrY1ZlWmNSY2hoSWhtYlJmemhCZ2FmUmdFYnBla2NlYlVoc2VVZmNmUmMwYWRjRWFEY05jV2hkZEdhNWcyY2NkMmI5YkdiWmUxZUJmSGJBYWplWWVlZVdhUmcwZEtlQ2V3aDlnU2JGYm1nWmhpZ1BoVWJNY1VoY2NrYTViemJFZUVheGFOZlVnVWVrZFZkSGNDZHdoZ2hUaFNhSWJQYmRjRmNvYmVoVGFuYlFlTWRjZ3hlaGdSZWZobmVaZldhZmZGZXRncmFUYXhhUmJoZVRjeGI5ZjRoSGRVY0VmbGZKZmhhOWJXaFVjSGJnY0FiRGRWYjhoSmZVYkVoZGdrYlFjV2c1YktlWmRIaGxhTGFTYlZnc2VkZUhnVWcwaFpkVmhuYlJjdWZkZmplVWI2aENoQ2JSaENkV2N3Z01jN2RTY2xhUmJhZUViQWdkZXdoQ2RFZ3RhdmVPZlVoeGRwaEZhSGZKY09jY2F4YkJmTWVUaFZoRmFKZ1hoQWZoYXBlZmNGZ1plK2FDZENiY2J6aEhjd2RnZXpoVmNDYUZkRWdCYVhnRmI1Y1ZoaWdaZUtiUGV3ZmRoR2VQYzBkWmhIYmRmaGc4ZUthS2ZpYTBhSGdVYVFoaGRhZENjMWFsZldlRWZuaHBkSGhaZEVjRmF1ZlNiaWcwZy9nU2h4ZnhmYmRIYVJmMWdOZ0dkVmRaYzBhYmhuZVpiemdiYzBiWmRuZkZkRWFjYkNnTWRRZjlkV2VHaHdjcGhPYU5mRmdoZ0NiYmRuYzlkbWdQZ1VoMGZpY0Nhemd4Y1dhVGhDaHdlRGJHZDFiUWFYY0NneWNGYmVmTmZnYVFjbWFVZVVkeGhJZlhoeGFGYnpiVGdGZEZkNGVjZUZnWmYwaERjMmF0ZFNmRmNIYU1nQWNSZ2phWWZRZ0dleWgwZWxnSGRSZnNoVGZiZVJnWmdaaEFia2RzZ3FiQWJpY3NjSGNiZmloc2QyZEtid2VwY05hRWgwZWhjYmhDZzFld2NFZ2VjaWFjaGxmQmJTYVljRGZNaEJnWWVVYVNobGg5aEtlRWJGaEpiRWFDZTNnQmFhYVFhbWI5Y2lmWmdtY2toY2NFY3hld2NoYVVmUmNVZ3ZlQmNBZTlhVGhDZnpmdGQ2Y1ViU2JNZDNlUGFSYVFoZGJSYmllRWZZZWNleGRBZ05oZWFDaFJiV2ZQZFViRWc0aEJmbGFVZy9nQmZWZlliM2FGYVVnOGFGYU9nQWZGZFlmU2FoYUpjZWVIY3hlQmJYZ0tiRWE1ZU9kUWdXaDViS2JaY0hibGFMZkZmSGFFYWRiSGRVZFFmemNWZm5jUmR1Y2RmbmhOYXZoUmRtZ2NjV2RFZGtoeGUxY0doRmZVZkdkRWdWYmthK2dXaGhjWmVoZkljRGQ4ZTloVWNSZTRkTGZQYlZoY2FZZ0JkVWdwY2piRmZVZjVocGRkY0JiaGZ3YVFoWGZSZ1JhU2JrZHdlbWFSZFNjRWdGY0hjemY5YXlnVmNuYlVkU2ZhZndhWmdOY0llUWZOY2NoUGFsY01lYmVaZUdkeGhWYUdlUmdzZmtkQ2YwZ1JkV2hFaEhlaGZIY2JlMGRFZzZhUWIzZjllVGNTZHhnUmh4ZEhoUmExZE5kR2FWZVpjMGdiZGlkQWh5Z1BiVWFZaHVhRmVnZzlhTWZJYVVmUmdjZ0Zjd2ZwZU1oSmNCYkpoWmNSZFdnSmVtYmFlUmJSZXlnVGFuZ01lUWhUaEViMGdZYURieGZWZUdiZWRYZ1FnRmNiaFZleGcwYkdkRWJOaE9mSmcxYlFnbmNHZlFkTWIyZWNiRWVaaHZnSmJXZ3RnU2RGZkhnRmZHYkVoM2VoZFRmVGIyY1Foc2dIZEVmc2hUZGVjRmIwZlljQmNCZklhL2FSZDNmbGdCYmJoMWN0Zi9iZWZWZUFjVWRlYURmY2VkZ1RkUmhsYldiZGNHYzVoMmFjYTJiOWhHaFpoeGJaZkJiR2Z6ZHdkZWhVZXhlcGRFaEFneWdKYVRlUWJqZFJnSWJaaG1ia2NVZmNha2g1ZHpnRWNFaHhlTmNVZFVma2dWaFRkbWVrYjNoV2hTZE1hRWNkY0ZiTWZMY0hhVGFaZFlkT2VrYjVlTGFVZG5oQmhXYWRoQWQ5Z3JlVWVoZ1JneGRSZGhkTmE0ZVViMGM5YmtmS2VSY0piS2dWaG5jQWhKZkZiUmhkYkdjTWF3YWxoMWNRaDNiUmFnZFpiSGFsYUxiRmNIZUVhZGVIZlVnMGdaY1ZhbmZSZnVkZGVuYU1hc2dCY3pmUmVUZkVoa2Q0YjNlQWgxZTRlVGJGaGxiSmh5YlFhR2VoZnZjWWFtZVpicGZGZkhmSmhPYmNheGZCZU1hVGFWaEZmSmdGZFVlNWNwZkpobGEwYWtmRmZDYVljZmFTZWdhZGR1ZU9mM2dOYk1oVWZYYWhld2ZWZ25iUWFQYWFoMWFJZVVoY2RVaFlmVGJPYXhhSWZjY0lnV2VwYlJhVGhFZWNmMmRFaDFndGJNY09mSGJwY0hnWmFFZkZkdWhTaG1hUmE1YlNleGRSYnhoSGVSZTFmTmhXaGhjY2ZuZ0thM2FaZXhoT2NoYUljaGhHZXdicGZPY2JlMmRBaFFlVWRrZVFjTGVjaEZncGRDZ2JiMmZKZG1hYWJSY1JjeWVUYWpnQmhSY0hod2RoaFJkSGgxaG9jSGdMaFhlUWNJZGFkbWd0YTBhVWFVZHBnT2FkaFJkRmJ6ZVRiRmNGZjRkY2hGYVpiMGNEZzJhdGdTZVJiamNRYlNhUmVpZm9oZGVUaHdieGFpYUJleGFBZWRlUGhFZDRmWGJFaFVmWWZ5YVhlRWE1ZkJhYmVrZXBia2NlZFVoc2hVYmNkUmMwZmRnVGFSYmxoV2JkYkNkMGYzZUllQ2ZwZ0dkWmZVZE5lUmFIaDJoZGZJYkNnbmdoaEViQ2UzZUJiYWFRZ21nOWZpYlpmbWJrZFVjY2RrYjVjemZFZ0FnOGVNZ0FjZ2V3Y1ZhVGdEZHdiM2hTYjNkMWJUZGRka2R0ZWdkVGFuYlVlUmRjYzBneGJSYmViSGhCZFdkZGFBZDlicmRVZmhiUWZ5Z0JnMGNBZzlnVWYwZjBjeGFQaGhkVWRJZkJkVGN4ZU9mV2QwZHdnNGVlZWtnZGhraFFlV2M1ZktjWmJIZWxjTGJGYUhlRWRkY0hkVWMxYWFoRmZ5aGNncmdkaG5nRWE2YUVmaWRFZGJoQWUxY29nNWhEZHhoSmdJZGJiZ2N0ZHdkV2hraEpndmFZZ21oWmZwZEZjSGdKZk9nY2J4ZkJkTWRUYVZlRWhiY1VnQmNvYjhmSmVsZFpld2JVZzNjUmZiZVNhZ2JkZXVjT2czY05mTWhVYVhkaGJ3aFZlbmVRZlBhYWQxaElmVWdjYlVkWWFUZU9keGRJZWNnSWVXZXBkUmZVY1ZjWWVvYUNlVWJOYThiRWNuZXBiSGNaZ0VmRmd1ZVNibWhSaDVlU2h4YlJjeGhIZlJkMWROY0dkUWZRZnhhT2ZpZk1kaGVJYVVjWWh1YkZlZ2R4Z1NlYWQwaG9nQmNTY1diNGZMYmNmRmhwZENkYmgyZkphbWRhZ1JoUmF5Z1RibmNNZVFiVGVBZTRlUWJHYWxhQmVPZ2FoemJaZFpkSWd3aFJhaWhSZ1VjaGFVZ1hieGJGaHpkVGNGZEZhNGhjYUZjWmcwaERiMmd0aFNoRmVIZUZlR2dFZjNjZ2FCY0NiamhBZC9jQWdWZWNiVGVDYmdjTWVOY1hoeGF3YTJlQWhpZ29iR2VPaGdiSmEvYlVhMGdzYVVhY2dSaDBiZGRUZ1JibGFXZmRoR2c1ZTJnY2cyZzlhR2JJZjFoTmdVZkRoU2JBYUdjUmZFZGhkdWFDZTNoQmZhYlFlbWM5ZmlhWmJtY2tlVWRjYmtkNWN6YUVmRWR4ZE5kVWFRZUJiVGJUY21hRWJ4aEVlWGJBaFRhTWVRZVViZmdIY0Roc2RSY0doMGFRZEZnY2FYaDRkYWRNY1VhRWVzZ0JlbGh4YnFmYmhCYk5kNGVVaDBmOWFrZ2FhbGJNaFpjRWUzZEFlTGdXZlZhWWNTYmVla2hkZHNkRWYyZjVjWGhaZEhnRmNKaEZkbmhFYVdmSGhSZjhiUWdXZkNkQWRoZkdlamR3YzRoQWh6aFZjMWRVY3hhOGZ3YVFmaGZsZGJjU2dBYnRoNGNIYzBmSmR5ZFlobWZkZjVmSGhXZWxka2JjY3hlQmVNZVRnVmhGaEpnRmdVZjVmcGNkaEJoaGh3ZUhhRmc1Y1JoU2RrYTVjMWNFZlhjTmdNYVVmU2VWZmFkVmhuYlFiUGhhaDFhSWNVY2NkVWJaZFZlTGNSYzBkTWVNZkNjTWNjY1ZieGdNYjNiQWF3YTFkYWNFYmlkaGVMYVpmQWFoZW5nU2JqZTlmVGhTY3hnUmd4aEhhUmgxZU5lR2FWaFpiMGdiY2lhQWd5ZlBmVWVZYmlnRmhnZjllTWJkaEZlc2VMZGVnRWFRaExnY2ZGZXBjQ2ViaDJoSmRtZmFiUmVRZTdhQ2VIYU1jWWFSZEVhVWZIY0JnbGV3aEtkYWZXZFFiWWFiY1ZleGVwZFVnUmdoYU9nS2hVYzFhemZYaEZnRmZtYWNmQWRSZzlmRGgyYjFnVWVGZEhma2FVZUViMmFWYlRiWGMyZjFlbWFVYjBoc2FUY2JlZ2NzY05mSGdsYnNicGdTY1NmZ2VFaEllQWIwZ3dlTWNVaElnZGRjZVViOWFZZkdkVWF3ZkVlT2JtYzVhMGVjaFhhUmFzZ1pieGhZYlNiVGhIZ1ZhS2dFYUZoSmZFY0NlemFrYWNlUWhtZmRocWZiZGpoOWhiZ09od2FwZXphQWJFYXhoUWRUY0ZkUWhWZUJjMmFraG9jUmFIaEFlSWJkYkVlOWJLZkdmamYxZ1ljSWdFZ0lmZGJQZFRjNGdSYklnRWNkZGlnVWFoaEpjM2FSZmhic2F4aFVoMWdKZGtoUGVoZHRnUWhRYkhnNWNIYUhoQmNoZ1ZhTGVnZDljdGFUYldiNWJhZ1pkR2NkZFdkRmJEYmdjVWhGZkdoY2VaZlZkbmVSZXVnZGVuYU5ldmRSZG1mY2FXYkVja2Z3YW5jRGcwZ1FhSGJGZmtkVmZ3Z1dhRWZCZzBlU2RHZ1pocGNGYkhnSmhPaGNieGhCZU1kVGVWY0VlQWNVYjBiNWJoZ2ZoQmRBYzVjUWJXaHBiUGhWZkZnTmYxY0FlWGFwZUFhVWNYZUFkaWFWZm1ob2JSZ2RhVWY4ZFVkWWNVZzhlZmRlY0FiRmRQZWVnbmdkYVRlVWNCYXBjNWVDZHdoc2ZUZ1JmaWg4YlZoS2NrYkZlc2RTZEhoOWRUZFNjeGZSZHhlSGJSZjFiTmRHYlZlWmMwZWJlamhBZjhmUGFVZlphdmhRY2hoSWZRZEtmVWdvY1lmQmZrZ1FhV2NjYkZhZ2VYYU9oeWZSYitjYWd4YzFhcGFUZm1lZ2RRaFJnV2FkaFJmU2JSYVZmT2dhaFhhUWVZaGNlRWRGZjBhVWJVZG9nZGVJZmxiZ2RuY0RleGJsYzRiZWFBZUphOWdEZnpoQmE0Z0ZlSGNGZUdmRWczZGhkVGhUYzJlUmVxZlVieGJrY1RhY2dBZHNkYWdGZzBmRWgvZlJmMmVZZUplS2V4Z0plbWFZaDJlRWJVYWNoUmEwYWRhVGdSZWxiV2RkZkdjNWcyYmNjMmY5Y0doWmN4ZFlmU2ZIYmpoQWFlZlJmUWdBZEthQ2V5Z3BnU2dGZmllY2ZyZk5nV2dVaFVjSWdFaEpoemdXZFVhVmFXZGVoMGFrYVZnVGJtZWxjMGhHaEhnQmVCZmRmRmZGZktnVGVuY1ViUmZNaEFoMGNDY1BhWGFCZFVjSWdWYXNhdGFTaGhlWmVyYmJhQmROZTRmVWcwZTlma2hhZWxmTWZaaEViM2NBYUxiV2VWaFlkU2dPaFFnWWczZ0JiR2c1ZUlnTWNTaDBkTmJHYldna2ZmY0JnMmZjY1poVmVuY1JodWRkaG5nTmR2Z1JjbWJjYldnRWJraHhiMWdTaGhoQmZTZUZoa2I0ZmthRGJ4Z0FhaGVZYWhoWmhoZVFjRGVvYUhhSWhCYnhhTWNIZTFmMWJKYlhnRWNkYnlmWGhoYmhkd2FRYVhjUmRSZFNja2Q1YTFkRWVYaE5nTWZVYlhmaGd3aEZoVGVWZWNlTGJsZUliV2RNYUJlVmVRYU1nUmVwZ05jZmRrZEJmVGdHY1JjTmh3Z0NnMWZsYldhRWJuZ3BjSGNaaEViRmh1Z1NkbWVSZTVjR2JWZUVmbGFTYUVoOGJEaEdjU2FWYzhjT2NqZDRiNmJQYUVjcGFuZlJiQmU1Y01kUGVFZk1lTGFlaEVhUWFMYWNhRmRwZENjYmMyY0plbWNhaFJiUmF5YVRibmNNZVFjRGV3YndmQ2dEZUJnVmZNYkpjVGVWZ01jT2hRYTlhbGFVaDFnQmdrZWRhUmdGYnpkVGRGYkZoNGZjZEZnWmEwYkRkMmR0ZFNoRmNIYUVhRmNVZmlhc2VXZFRkMmdZZW9oR2NsYmRoU2ZJYmxiSmhiZVRiRGhoYTZmUmQyYVJmQmRiZ2tmcGJrYWVjVWFzYVVlY2NSaDBnZGdUYlJkbGZXZkpiaWVzY2lmSmhqYzBnSWhaZzNmOGhhZEdnRGUwZ0RoUWMxZzVhRWVXZlhjeGZhZkNlMmFaYzVoVGJHaGtkVWFjaGtlNWV6Z0VkRWZ4Y05kVWVVYWthVmVUZW1ibGMwZFdlemJFZlNiTWZWY0ZoSWhEYkRiUmJDZU5obGNwZkZkZWZtYXBiOGNkaEFhOWZyY1VmaGFSYnhhUmJoZE5lNGRVZTBnOWhrZWFjbGJNZVpjRWJ5aEplT2REY1FmTmhBZU5oRWFjZVFkU2dUaG9hQ2dMYVNmcGFIZUZoQ2RNYlJoSGZRYVFoUWZUZ1ZjNWZ1YmRobmROZXZnUmJtZWNiV2JFZmtieGQxZVNjaGRCYVNiUmJFZWdoeGdDaFFnZGh2ZllkRGRNZHFmUmIyY0JnTWdhY1RncGZNYVRjVmVGYkpjRmhVYjVncGNkZUJiaGd3ZFFhWGdSZVJkU2hnYjBmMGhRYWpnWmJNZlVmeWIwY3poQmNYY2thZGFhYVVoZ2grZWNjVWJZYVRhZWVGZ05nUGRaaEdicGhUZ0dnUmNOZndoQ2UxaGtoVmNVYnlna2JDYlpkRWNNZDdlSGNpY0pkb2RYZVZjZ2cwZ0hod2VkZG5oR2RWZFpkMGdiaG5lWmR6ZWJkMGNaZW5kRmNoZ0pnTWRkZVVhcGhUY0VmeGFkZE9hY2JGYWdoWGVPZnlhUmRyZ2ViQWRJZStjQ2UzZEViS2RaZ2tjMWRSYlNoUmNWZk9mYWVYZFFjWWhjZ0ViRmQwZFVhVWdwZk9iZGVSY0VlaGJDaFFoVWh0YkliaGRoYjBlZGFtYU1nR2dYZURoZ2dWYUhoM2dnaEJnUWEyZlFmamhXaGdkSWg1Z2NnQWR0ZlphVmJoZUpiNmdSYTJjUmJCY2Jma2FwaGtiZWRVZnRiUWZOaEZmdGNjZkdkRmhVYkNnYmZrY1JmMmhjZjJlOWVHYVpneGVZY1NlVGdIaFZlS2ZFZkZiSmZFYkNjM2dCY2FiQ2J5ZWxnaWRiZGlnd2VkYWNhaGdvYTdlUWNnZ01lYWdVaFFjZGhRZEdmV2RrZ0FnUWdTZkFiRWNFaFFoTWNZYUFiU2ZjZVpoY2RUYmtlZmNNZnpkNGZaYUljMGNGaHJhRmQxZW9oeWJDZVZkY2Z4ZEhmUWVoYStjYWZsYUVjWmRHY0hjQmdmZVVjRWIwZzRhZWNrY2Rha2NRZVdkNWhLYVpnSGdsZExjRmRIY0VlZGhIY1ViMGVaY1Zibmh3ZzZoZGZtYjVidmFUZGplTWNXY0djVWZ4ZzNjU2NCZWxjY2hFZUVjUWRjaEZmUmZVYnFiTWVBZFVhb2RSYXpiZGFHZGVmaGZsYUFnVGNWYWtoTWZGZ1ZoTmdwaGRhUWdoYzVoV2FsYTViUmJTZ2tjNWYxYkVhWGROYU1nVWZYZ2hod2VWZG5oUmhTY1FhVmJJaFVhY2RVYVllVGRlYUZjTmdQZk9iVWdCZVRjR2FSZE5jd2RDZTFhbGJXaEVhamJ3ZFNhS2NnYkljNmdBaHlnc2QzYVNjMGFOZjVmU2RSYkZjTmJTaDFocGMwaEpmM2Q5ZnpjTmFHZ3hjbmhGZGhkSmJNZ2RkVWdvYVFjVWNrZVFmTGFKZWhmc2NRaGJleWZkYW1oZGVCY1FjbWhOY1NnRmR0aFZoMmJkZlJlU2FSZlZhT2dhZ1hkUWdZaGNhRWRGZjBhV2RSYTRkMWRKYzJieGJ6ZVVjVmZFaHNkQ2F4ZjhkSmFCaG1hZGhTY0hlQ2dVYzlkV2NnZlZnVGJVZG1kUWJ2ZldjZ2ZJZTVjY2FBYnRoWmJWZmhkSmY2YlJnMmFRYWNiUmJFZHBja2VlZ1Voc2NVaGNjUmgwaGRmQ2EwZXdhWWROYnpkb2MvZFBiQ2dGY0dlTWRSZjVkR2VRY0hnVWVZZkhjRmdJYU5hQmUzY0FiZmRUZW1jOGZ0ZWJhMmFsaFBmV2ZFZzVoemRFZkVmeGJOZVVmVWFrZVZnVGRtZWtoOWFYZm5nQmZKY1plRmJGZVhlVWYyYWdlUmFKaDBiSWZkaFBoVGQ0Z1JjSWRFZGRmaWNVZGtjWWEwZEVja2dZZ3FoSGNVYzllcGVlaDBiZ2J6ZkViM2ZBYUxlV2JWYlloU2RlYWtnZGZraFFnU2hjaE1kWmJIY0ZlaGNGZkhnRWFkZ0hhVWEwZlpmVmduZVJhdWJkYW5jTmd2YlRjbWdWZEZnUmhoYTRnOGdCZkZlZGJRY1JhQmVaZXRlV2ZoaFllMmNNaGljTWdtZVVhbmhJZEhoV2VSaEJmTWNUaFZhRmFKZkZlVWU1Z3BkZGJCYmhod2RRaFhiUmFSZFZlVWE1YjllR2NUY1phTWZUZEhlZ2U1aFhmM2VnaFBiWWV4ZHNmVWViYkVhWWNEZ2NkVmRwZWxlWmRHYnBoVGZHZlJoTmV3ZUNkMWRsY1dmRWJuZnBhSGdaZ0VoRmgwZ1NnaWMxYzVhVmVSYlJmamNEZkFjbGJhY0RiVWc1YW5kZWRHZkpja2ZSY1VhWmhuY0ZoaGNKYk1mZGJVYW9oUWFVZWtmUWRMY2NiRmJwaENmY2hHZUpmdWdJZUJhUmF2ZFRlbWhFZUJnV2NGaHBkRmVVZ1FnWmZZYmZiV2VNZFJhV2ZrZUZkMGZVY1VncGZPYWRnUmZGaHpiVGZGYkZmNGVjZEZjWmUwZ0ZkV2R0aGZiQmdtZ0JoU2NCaEdjeGVMaFhiSGRKZStnU2R4Y2toTmNjaEVjSmNaaFVjQmRSZTZmVGJ5YjFiQmRjYjBicGFwaGFkMWJvZEFnWmZnZ2tiRmNYZGdkOWhDY2JnR2ZkZjZnV2dXZTlnR2NaY3hkWWRTZFRlSGZWYUthRWNGZUpjRWRDaDNjZ2ZUaFFibmZKZGllYmdTZUFiZGFmZG1iUmF6aEVjRWJ4aE5nVWFVYmtnVmVUZW1nbGcwY0dmSGVBZElhSmJ6ZjhhTGFJYUhoMWFZZ2Vka2J4ZVhmZmhuYUJjZWRQYVFjOWgyZ1VmbGJ0YXhmV2hSZk5jb2VVZTFoVmRrZFBhbGYxY1ZiVmZqZjVjTWJEY1JjNGhTZWRmMGVkYTFoU2hHY0phZ2RaZ0hobGVMZEZlSGNFZGRjSGNVZjBkWmhWZW5kUmR1YVpmbmFOZXhjUmNpZjRlV2RGZEVocGIxY1FnbGFsZVNjV2NRZXNia2RWZEFnNGRxYUxiQ2hFZTllWGVIY0pkRmRjZTFibGJGYlFiWGV0Z0phRmJVZDVhcGdkYUJlaGd3Z1FkWGJSZlJlU2hraDRnOGRFYVdiMWVSY1VnU2F4ZCthR2RqaEZjQmFMZ0FkWmFjZGVmR2R3ZFRnZWVGaE5iUGNaY0djcGFUZUdiUmVOYXdoQWRsZGtnTmRPZ0hmcGVIZVpkRWdGZHViU2RtZFJjNWJTYXhjUmV4Z0hkVmZRZExjR2hWYTRkN2RaaDNlWWhoYktjaGNJYnlnUmRGZXhoTWRlY0Znc2JMaGVnRWVRYkxjY2FGY3BnQ2NiZjJoSmZtZmFjUmNSaHloVGZqaG9jUWRVZVViMGFGZFJlMWVrZExnSmJ6Z05lTWhPYUVjRmE1Z1VlVmR0YVZlWGR4ZEZkemdUZkZiRmU0ZWNmRmhaYzBhRGEyY3NoUGZGY0RjUWFLZlFjRGYxaFRhQmRpZUpkcWRXZ3dja2hUZmJhZ2FzZ1FlWGF4ZUljaGFiY1diUmZCaGJka2hwY2toZWFVZXNiVWdjZ1JjMGJkaFRkVmdBY1FjZGFHZ1poM2FQZ0dnWmZHaE5oVmVOZUdkR2JTYWNhRWhFZ0ZoOWNWY0VmRmNwZ2FlUWJtYjllaWRaY21oa2hVZWNja2I1aHpjRWhFYXdnRWJVZFZjUWhWZlhmbmFKYWVoR2RIYkJmQmRkYUZhRmVLY1RkbmNVZ1JnY2R4aEZkN2dlZEhiQmhXZ2RiQWY5Z3JiVWNoZVJieGFSZGxkb2craFVmMGJkZnNlYWdBZkJoTmFRZVRmbGhGY0hibGFRYlNiWmYxYXBia2dGZFRoY2FhY0lhVGJZZU5lRmZDZE1iZGZHZzBnc2JaZlhnaWRaZnVkYWgzZE1laGNTZUNhRmdFZ1hkUWRGZTlhR2FCaHhlU2NBZ1FlSmg1Y1Zka2FJZ2hoYmJDZjhiNmNkZ2lnY2NJYk5lVmFVaGVmUmFRY05lQWFIZ0VnZGhEZ2RnQmJoZHdkUWdYYVJjUmJTZmtoNWgxY0VhWGROYU1lQWh6ZzBma2RBYXlhWmdCZGFjMGNJZFVjYmVGYXNlT2FlZ0FjRmJCZUthQ2c4ZWRkWGdrZGNmNGVDZzBmWmNXZkhoMmR0YUhhZmFrZkVjUGhRYWpmQmcxYVNhMGVaYTljSGJWYVJiQmhHZVJnTmQ0aGJmamdsaDZhZGdHZHhhbmhGYWhnSmdNYmRkVWVvY1FiVWJrY1FoTGhPYlJmeGFDYlpiMmFBZm9oUGhGYWtmd2ZDYnljRWFTY1RnRmVCYk1jU2NVY0VhWGFPZFRnRmRYZU5ja2ZFYm1oV2NHYUJmT2ZkY1JmRmJ6Y1RoRmNGaDRnY2NGaFplMGZEZjJlc2JBY1VnU2VVZlRiUWRUZlplVGVSZTBkNWVxZVVjeGVrYVRnY2FBaHRkWmdWZmhnSmU2ZVJlMmZSY0JoYmFrZkliMmFlYVZoWWdVZ1lhd2JnaEliVGhSZzlnV2JKYW1jZGM2YVdmV2I5aEdlWmF4Z1liU2FUYkhnVmVLZEVhRmVKZkVjQ2IzZ0JoYWFEYkdlRWNXYkhneGhsY3hkRmZqZUVlU2VZZWpjNGRzaEthRGZaZm1jT2V4ZmtmRWFkYndlSWUxY2RoRmhkYU1hWmNIZlVmUmFjaDBieGFSY2VmSGNCY1dmZGFBZDlicmRVYmhjUmh4aFJkRmhVZXRhSGdRaHdkd2FJZHhjeGdYZ0ViWGVBYldnUmVGYlpiR2hJZnhoY2NoYkRmaWdoZ0tiRWdUZEFmRmRRZ0dibGI4Z1RieGI5Z1ljRGMzZm9lK2FKYkRld2g3ZUNjVGhOY1BiUWJnaGxlN2VBZDFnNGhXZkFkVmNNZGZjSGJHaGhndmFZZW1mWmNwZUZkSGdKZE9hY2J4ZkJiTWJUZVZhRmJKYkZiVWc1ZHBlYWF4Y2dmL2dhZDNkUmZSZVNja2g1YjFhRWRYYU5iTWRVZ1hkaGJ3YlZibmdRaFBlYWUxaEljVWdjZVZha2NUZkRmUmdvZ0JmTWFIaElieWVTZzBkRWR4aFVlbGdjZkdlUWZEY1VnVGNLZ3hkVWUzZ0dnaWdGZzNmQWRsYW9oMWhXYUVjVWdpZlhjMWhnZzNiTGN6ZG9nL2haZnhoSmFyYkZoa2VCZkFiZGVRYk1kWmZlZEViUWhMZGNlRmVwZUNjYmgyZUpkbWdhZlJoUmh5aFRmbmFNaFFnVGZFZjFoUmdTYlFkOWVPZkhnRGUxZldjSmFGYWtmVmRBZ3hjZ2dQYkxiQmY4Z2poSGZoYzRjc2NQYXdhSWV0ZlhleWg1ZmNlV2NEYkFmVmVSZHhjRWZkYUNmeWNFZ3lkUGZGYThkZGRNYzBlb2ZWZEdmaGdvaHVjU2gyZ1FhVGNZZ2thb2F0ZmNiR2VFZ1VhY2VSYzBhZGRUYVJibGhXYmRlR2Y1ZDJnY2IyYzljR2haaHhmWWRTZFZnbmdVZnJoR2ZBaFplSWZDaHdoc2FJZlBnMmdOYWljTGgyYVViVWZOYjBiSmN6YVhmMGRWZW5kVWFVZWtlVmZUYm1lbGQwY0dlSGVCYkJhZGNGZUZiS2dSZDJoNGM3YWNkMGJ4Y1JkZWdIZ0JoV2NkYUFmOWFyZ1Vha2dBYjVoRmVGZ3dodmJVZndiRWVoYlBmVmFOY3RkU2JpZUJoT2hQY0FiUmJBZE5jUmhWZ3NlUWd6ZmdmTGJLaEhia2FHZVFlU2hKaEpmSGZRZDlhY2RWZ2liY2Q2aEplRGRvZ2hiQWNXaHNmV2NYY0Jja2I0ZkNlRmJVZEFhUmRFZlFnaWJXYWlkQWg2Y0piQ2ZBaHNoUmVuZUJnSGNhY0RncGJNZVRhVmdGYkplRmVVZzVncGFkZkVkVmJhZVFhWGFSYlJlU2FrZTVmMWRFZFhnTWZLZEJiRGNZY3pjQWVqZzFjQWZKZVZnSmQxZWVkUmJJZWZnZWRBZ0ZnRGFaY0NoTmVmZUdiVmFaZzhoQ2R4YlpmZmFFZWlnRmd0YVpjRWNGYnVlU2ZtYVJhNWFTYXhlUmR4aEhoVmhzYllkVmR4aFVlZ2hKaHpla2Y5ZmJld2g1ZHZmUWJoZTVjTWVKZDBnTWJRYkNhV2M0ZkxiY2RGZ3BkQ2FiaDJnSmFtZ2FoUmhSZHlhVGNuaE5oQ2NDY1Jka2dFY0diMWN0YU9nZWFIZVFiRmViYVZjeGgwZEhjMGJwYlJkZGNVYlVoSWFIZ2lkeGg0ZGFhbGVZZWdnQWFUYmtlWGVWYlRiVWd6ZGVnamJZY0hkWGRuaElnSWFOaGhoRmZCY2NhQWJGZFpiR2RCaHRkaGViY1dkUmRCYWJna2hwYWtoZWNVZ3NmVWdjY1JlMWZBYlpkeGhsZ1djZGVHZjVkMmFjZTJiOWFHZ1pieGJaaEViRGVTZmRiS2VYY2xkSmhaZ0NoMmJGZldjYWRHZDliaWVaZm1ka2JVZWNla2M1Y3plRWVFYXhnTmJVZFJob2hWYlVmMmNrZ2dlRmRqZndmRWJPYmhmWWFlaEJlbmZrYzdlY2UwaHhlUmZlYUhnQmNXY2RlQWg5ZXJlVWFoY1JheGZCZXhiTmhsYVVjeGcxaHFjSmZoY1pnWGRWZUNmUmhEY1FkbmR3Y1NmZWVrZGRha2JRYldmNWVLaFpkSGVsYUxiWGZUYWNiZGhGZ1doY2haaFZjbmdSYnVhZGhuZE5jdmdSZm1nY2FXZUVoa2V3ZWpmQmRWY2toV2hSYUJidGN3YldnMWg5ZXlmWWhpYk5hcGZFZG5hUmRrZGNkeGFCYU1hVGVWYkZhSmNGZFVkNWNwY2RmQmhoaHdmU2NYYndiVWFTYWxjTmcxZFloaWJjYmVoR2VEZ1llM2JYYWpkRWJHaFpoUWFaZWJoSGVRZGxnRWNQYVFoRWhzZkplVGNrZldhRWJSZnBkNWVCZzNnTmhXYUVibmNwYUhjWmZFZ0ZodWFTZm1nUmY1aFNoeGVSZHplU2ZGZjRiZWNDaDFhUmYwZmNlMmh0Z3ViYmZ3Zk5kbmZTYmtnNWZtZmRlVWdvZVFnVWRraFFnTGRjZEZkcGNDZGJnMmFKZm1lYWdSZlJkd2hHYXpkQmREaFFkVmU5ZFRjU2VRaGhiVGJkZUhnUmNkZmNiQmEwYm9lZWUwYnBmT2RkZVJiRmZ6ZlRiRmVGZjRlY2dGZFpiMGREZzJhdGNTZkZmaWZRaFNjVmVXZ2xiRmdBZ3lmRmhvYlVld2ZRYk9iYmFRZ3NhY2RWYWthNGhtZGJlV2FSZUJlYmNrY3Bha2FlZVVjc2ZVZ2NoUmUwZGRoVGJSY2xhV2dkaGpoc2RpaE5lV2ZKaFhhY2NWZHBiWGNUaG5hVmZYZERmVWQ5ZUVhVGRuZWxod2VRZG1nOWdpZFpnbWRrZFViY2FrYzVhemJFZUVnVmJOZUNobWFNZFZiVGdtYWxhMGFHYUhjQmVCY2RmRmdGY0tnVGZuZlZiWWZOZlVjeGJaYkxkSGU0ZGFhTWNVZ0Vic2RCZGxheGZ4ZldlaGROaHFkVWR4aE1hNGhhYmdnRWRYZ1hkemRWZEZiSGVnZ0pkYWhlZGxldGNrZFVjMmRkYUtjTmFqYXdmZmhRZVNkTmZUY0hlVWJBY0liVGRWZjVhdWRkYm5jTmJ2YVJlbWhjYVdjRWVrZHhhMWNTZGhhQmZhZ0NmZ2J0YnRnV2RsY0JhbWViZ21nWmhoaFJkM2hKYUJiYmNoZUJmZWhSZUZoMWRKY0hkUWI5ZnBkZWR3Y1Zld2ZVYjNhMWNkZlNla2dZZjhjRWhYY3hjUmJVZFdncGU1Y1RhVmI0YVBoYWcxYkllVWVjaFVlWWRUZ2VhRmhOY1BmT2JVZkJiVGdHZFJjTmR3aENkMWVsY1diRWFuYnBmSGZNZGdmQWE4aFNkamVGYmllWWdSY1JheGRIZVJlMWROYUdlVmhaYzBoYmhuaFlmNmFLY1VjWmZ2Z1dnUmF0aE1jTGRtZkFiUWhVZGtmUWVMaGNmRmFwZUNnYmMyZUphbWFhZ1JlUWFrYkRjeWVFYVFoQ2RrZjFoTWFTZVJiaGhmZ2NkbGg0ZllhY2JFY0ZjMGVVaFVlcGVPaGRiUmJGY3pjVGFGYUVmK2NQZ3dlUmEwZUJkemg1aFNoQ2JYZ0ViUGNDaEhjZ2dBZFRnM2NwaHFmQmhnYkllVGJKZ1FiQmhTYVhkemZoYTZhUmMyaFJlQmhiaGtmcGRrZmVnVWFzaFVnY2NSYTBkZGFUZ1ZkQWRRYWRhR2ZZaCtlZWF6ZnRmS2VaZzBiTWJiY1RhR2FoZlhhRGNWZklmTWJBaHlkSmRXY1FkbWNKY3pmWmNuZ1FnSmJiYTBmNGcxZUVhRmFOZU5nUWZVZmtoUGJUZGpkeGIwYUZiWGZBaEhjZmRWZ2hnS2JGY1ZmOGdSaGNiMGR4YVJjZWRIYkJjV2NkZ0FnOWJyZFVjaGNSZ3hmUmFoZE5nNGNHYmdnbGJrYllibGdzYlVjQWhuZUFkV2VSY0Vic2JTY1BoRWZkYmliUmYyZjVkQ2FJZ25kbGFXaEZoQ2RRZVVlRWVVZTFjTWNWYm5mbGV1aE1jSGZOZmtkUmhuYllmV2FEYTFiRmhvYlNnbGJGZ2JnVGZRYnNjaWhIZ3hjWWU2aE1jQ2doaHBlVWVuZUpjRWNjZjFoNWZYZlpoMWVGZEpmRmhVYTVhcGdkZkJmaGN3Z1FhWGhSZ1JkU2FrZjVhMWVUY0hlTWRKaEhiU2NzZTFmVmduZGtiZWhhaDFhTWJKaGJjRWdaZlZjZWVGY1ZoSmZaYkdjSWVHYkdjUmU1ZnRlQ2h3ZnhiV2FIaDNlb2NCYmJlVWMxZ3VkUWdpYkpnNWFWaGhkUmY4ZURlQmNSZFdoTWcxYlphMGViY25mWmF6ZGJlMGFaZG5mRmVoaElkUmVkY1FiOWVjYUFhUWdFZWhlY2JGaHBnQ2ZiZTJnSmJtYWFoUmZSYXloVGZuY01nUWRDYWdhSWJEZlNmUmcwZ0hiYWdYZDhnWWJNZ1VhRmJxYVVjUmFsZk9kY2N4YWRmemRSYUJnaGI0aGJhVmZZZG5jRGQyYlpjU2FWZ1hjaGNLY0VoeWExaFRiVWZtYVFiamdTYkJobGVHY2NiQmVWYkViVmJnZkphaGFSaHpnRmFNYllmMGROYWtiSWZtZkVmVWdjYVJjMGVkZVRlUmJsZ1doZGRHZTVnMmNjZTJiOWdHY1phMWZCZmRlSGhuY1ZmQ2FSZGhkTWFXZENkemJ4Z2FoWGcyYzlhamdkZ21mVWNVaE1hVWU1Z3VoRWJGYnhlV2hVY1FmZ2FWYVVkR2hrYjNoQWUzYUFnQ2RmYTFicGZEZFpmSGFVZ1JiY2gwaHhnUmhlZ0hoQmFXYmRoQWE5YnJnVWZoYlJoeGZSZ2hlTWh4Z0ZnVWY5Y3NoSWVsZnRkTmNIZTNoQmdlZVdnVmUwZVNmT2RVZTVma2JRZkhoTmNYYVplRGRGY0RmUmFuYzBjZGFYZ2tkUWhRZFZjaWM5Y0ViZGhuYU5kdmZSZm1kY2NXaEVia2d4YzFiU2hoZ0JkU2JSYkFmdGN3ZVdia2dKZHZhTGVtaFpiMGhGZkhoTmdmZ2FoRGdwY01jVGNWYkZlSmhGY1VoNWVwZmRiQmRoYndjUWdYaFJiUmRTY2tkNWMxaEVjWGhNYU9mQWF6YTBieGZIYldoOGVsYWFmMWRJZlVoY2VVZFlmVGVlY0ZnTmdQY1pmR2ZwZ1RoR2RSZk5hd2FDYndmUmU4aEVlbmFwYkhmWmdFZ0ZidWNTZG1nUmI1ZVNmeGNSZnhnSGhSYTBjRWVYZzFnWmI4Z0llbmc5ZnplUGVRZE1hemRRZTBnQWFDYWRjUmM4aExjZWJFZlFjTGFjZUZicGZDZWJkMmNKZW1nYWVSZlJleWdUZ2ljNGQ2ZVRiRWIxZFJhU2ZSYlZoT2NhY1hkUWRZaGNmQmFNaHhmQmFSaDhkY2NPaHhlRmEraFhlVWhwaFNiY2dGYVpiMGNEYjJmdGZTY0ZmSGJFYWJnT2VYY2hmVGhUZDJiUmZxY1VkeGFrYVRiTmdsZDRlWGVGZlVlWWh6aENiQ2dwaEJlRGNVZ0lhd2JkYlVidGFHYWZmUmcxZ1ViUWFSaGtiVGFmYVdjNGN0Z1dnV2I5ZEdoWmR4aFlmU2ZUYkhjVmhLZ0VhRmJJYk5hQ2IyYzFoYWdMZERnb2R2YkpkQ2d4aEdhZWNnY2RnNmVFZ0JhQWhSZVVoVmNrZE9nWmZHZ2xhMGNHaEhnQmRCZmRhRmJGZUtmVGJuYVZoSGFNY2hoNWVSYU5kM2JCYUxiZGhGYnRibGFIZGxiRWEvaEFiVWRjZndnVWYwYUpja2FJYzBkZ2J6Z0VjM2ZBZUxnV2VWZlliU2JlZGtiZGFrYVFjU2V0ZUtmZWUzYWxjRGRIZkRmUWFkYUFjRWYxYzNnQWZ6Y2tnc2ZNZHljRmFuZUFoMmI0YmZlSGZrYndjd2JTZ2diNWhTaENld2Z0ZTJhWGFFaEplbmJKZTJkWmUwZ0ZnRGYxZkhlZWNoYkJjV2dUYVZma2dNaEZkVmVOYnBjT2F4aEZkcmFhYTNlUmhSYVNia2U1YjFiRWJYZU5oTWFVZFhmZ2NtZ0ZheWFZZ1BnSWExZUlkSmhjaFJlUWhkYk5nQmNZY0JhSWV6aDRlYmNBYWpibGV3YUNnMWhsZldlRWhuYnBmSGNaZEViRmR1aEFneWVKYzVoUWUxZHhoeGJHZ0JkMWFmZ0dlVmVkZ3BiY2gzZVpnamJaZ2tiWWV6Ylhma2NBYURkSWZrZHBiZWNGZ3hkTWRMYUJjQWFNYVNoS2RnaGNlMGZPYjFmc2NnY1JjbmhGYjVoQWFoYnNoUWZCaFZod2RLaGFmVGZ4Z2RjS2NFZkVmbmFCaFJlZ2dIY09nMWJaZ3hoUmVVYnBoU2FjaEZmWmcwZURoMmZ0ZlNlRmNIaEZkR2RFZ3pnMWZUZFVkV2RRZ2lnVWF4aFljVGJZZWdkdGRmZFViQmRKZnlkQWRtZVJmY2ZiYWdkSmVraGRia2ZzZUdnZWFBaFlkM2FUaFJmbGZXZ2RoR2g1ZzJiY2EyZDloR2daZjFnQmFkYkhkbmRWZUNhUmNoaE1jV2NDZXpjNWVhY1hnMmE5ZnllZmdXZ2xjUmZjYmxkQmh6YVhobGhkZk5kV2RrYUpjYmdSZjJha2F2Y01mbmRCZ0JnZGFGYUZiS2JUZG5jVWRSZ2NhMGJ4ZVJkZWNDY1ljWGZKZWdjOGM0YVVmZ2VsZXhiRmJsY0lmcWRBaEFkb2ZOYUpmQWhjZFJjUWFYZTVmWWdEZEJkUmNCaExjaGdWYnNiVWEyZTVlQWFaZ0RoZGFIY0ZnR2hNaFVoRWNVZzBoSWZRZEhkMWgxYlhnSGJOZXZnUmNtZmNhV2NFYWtieGExYlNkaGZCYVNlUmJFZUloMmFXZGtib2ZtY01lUWdnZG9mZWhuaG9nZGdlYWhlbGFNaEhmeGFRZGRoUWRCYndlbmNkZEZkWmVyaGFiM2NSY1JnU2JrZDVlMWZFYlhkTmJNZ1VnWGRoaHdoVmNpaEJnMGJJZWxlSWRmZmNlUWFoYnVkZWJFZzVnUGFOZDNnRmE1ZUdmUmdOYndmQ2YxZmxiV2FFaG5kcGhIY1pjQmN4ZEViU2dtZVJiNWNTZ3hnUmd4ZkhnUmMxaE5nR2ZRZVFheGRPZmlkTWFoZ0lhVWFZaHBoRGVUZ2hoTWJkY1Vlb2FRZ1Vna2ZRZ0xjY2FBY2Rmb2NiZjJjSmhtYmFlUmhSZnljVGZuY05hV2NHZlFnTWNTZEhjVmR3ZUJlSmUzZlJoYWJlZkJmVmE0ZFVhUmZoYkNhZGJWZWhlL2VUYUJlUmN4Y2NkQWcxZmVmRGYyZHRmU2NGYUhkRmNHY0VhM2FoYlRjVGF6ZFlhdmFCYTBieGRCZ1BnZ2VzaCtoWGJuZ3BmeWVGZldoaGZCZk9ka2ZRZG9nUGRBYVZjVGVKY1ZnVWRkY1FnQmhrY2ZjZmFXZUpoMmVKZTJmTmJHZ0xhaGRvYVNhQ2dYYnhiUmdPYmxmSmFFZENjM2VCYmFhUWRtZDllaWNPZjBoTWdVY2Nia2c1ZHphRWVFZnhoTmZVZlFkOWZBYkFiQ2ZvZ2doVWNUaDhlUGNkZkRlUmZDYkdibmJrZlJiSWhVZUJmUmRNY1hmeGNXYU1hUWRaYXJkQ2VUYjVneGZSYWhoTmc0aFVjMGc5ZWtnYWZsYU1nWmRRY1RmVmhmY0RmQWJSZGNmZWJpZUJoc2hOYjJmWWNZZmJmWGhWZ0xkUWNIYzBnZGNWaEVnRWRaZ0VkM2UxZTFmWGZIaE5mdmNSY21hY2VXaEVla2R4ZjFhRmh6aHBoU2JSYUFndGV3aFdoa2RKZ3ZlWWhpZEFmOGdXaGpmRWFhaE9nbGE4ZENnVGNTY05oQmhRZVVjSmFwYkpmaGhSaHdmQ2VIYmhnUmhEYzBhZGcxaFNobGdsaE1jVWVYZ2hid2VWY25iUWdQZmFlMWdJY1VjSWd3aE5oSGFMYVFmRWdCYlplQWc5YWJjVGRSYTlhd2VXY1ZlVmJXY1dmM2ZaZkhiSWJVZ2hiMWhZZkdoUmg1ZVNkeGdSYXhhSGRSYjFlTmRSZ0hieGIwY2JibmNaZHphYmIwZ1plbmdGZ2xoUWJaY09od2dsY0VkR2N3Y3RnRmJjZ0FjSmJLYU9hMmg1YW1lT2h4ZmhjeWZCZDNoOGZRYkNhVWVSZFJnRWFqYTliT2FhY1hhUWNZYWNhRWZGYjBoVWdVZXBiT2FKYzFnUWNuaEdiUWFNZjJlY2VEYUZjOGJkZFdlTWNBaEhhWGYxaEdkUmUzYlJjVGZCaG1maGFxZkZoaGVBZUllV2RnaHRiWmJWaGhiSmg2ZlJkMmRSYUJiTWgyZ0Jka2RlY1Vmc2hVZGNjUmgwYWRhVGdWYjhoRGVPaGliMGZpZk9maWZBaElmWmIzZ1FlYWZHY0hjbGhLYVFkbGY1YUVlUWZuZnhnYWJCZzJlWmNpaFBlVWJNZlVjY2RrZTVlemVFZUVneGdOY1VkVWNrZFZiSGhDZ3dhZ2ZUYVNmSWFQZ2RiRGNaaENjSmJIZzFkRGNmZjBld2NGZGRoamh3Z1RnT2RrZmdlL2FHaGhiUmM4Z1JnbGdwYnhkWGcwZDhmd2haYWxlTmJRYkhhM2JCZU9oVWRFYjBkNGFlZGtjZGFrZFFlV2Y1YktnWmVIY2tlV2RQY25mRWhkZkhiVWEwaFpkVmRuYVJldWhNaENlWWZoZUJmVGJOaGZjWGFRZkpjMWVQZGhmZ2FHYlNmQWVzY2lnVmRraElhbWhhYTJnWWN5Z1BlbmFKaE9hY2R4ZUJmTWFUY1ZnRmhKYkZnVWE0YzdkTWhVYXdobGZFZnpmcGNSZk9oMGhBYnpmUWV6ZndhQmJNYnllRWdraEVieGVWZ2RoT2FSaE5oTmFlY1ZmWWVUZ1piVWE1ZFNnWmFEZ2hoVGFIZnhjVmR3ZFFmbGZsZExkRGEyZWRjSGdNZEVkOGJpZkRleWRvaCtmSGgxZ3hjeGdBZWhjMGJaYUdiVWZ4ZzBoT2huZ2dnZ2ZJZ3dhOGZrY1VheGFvZ2VkZWFVaHBkWmFXZDBjMGNRZldkbGdwY0NhYmQyYUphbWRhYlJjUmd5ZkVmMWJrZ1FmVGFFZzFnUmJTZVJnVmNPZ2FlVGFKZE5mUGFnYUlnZ2VHZ0FmVWdBaGRiV2dGYTdkR2FGYzFoNGZJaGxlcGUwZ1JkbWdKZVNnVGQxZ3RkR2VFZjNlaGhUaFRlMmFSZnFnVWN4ZmtnVGFPY1FhdGZFaFZibmc4ZzdhRWJ5Y3hlUGdJaHdiTWVxZ2NmUmM4aGFiUGRWYmhoVGVDYWtnMGVlZWVmR2c0ZC9lZWNuY1Jlc2FaaHhlWWdTYVRmSGNWZktjRWVGYkpmRWVDYnplWWNWYkVmR2g5ZnFiTWhDY2hjR2djaGdidGZ6YkRmVWN3aDJkTGJFYlViVmhBZldibGNwYkdjQ2hKaGFlZGVCZGhnS2dVYkhkVmRlYmFhRWR4ZVloZWNDZXRjOGRkY0FhOWhyZlVkaGNSaHhhUmhoYk5nNGFVYjBlOWVrYlBlQmhKY0xjRWR6ZmdhTGhSY0ZlWmdHYUFnUWZnaFpkVGdVZVJjS2JaYkhibGRMaEZjSGFFZGRlSGVVZDBjWmhWY25iUmd1ZmRhamcxZHZkV2QyYmRjWWZSY3dhQWE1YVJhamNwZlNjUmVBZHRod2FXZWtiSmh2ZVlmbWRaZ3BoRmJIZUpoT2ZjYjBhTmJNZlVnRmVFZEJjRmhWYUJjcGhaY2didGNwZVFnV2d0ZlJkWGVrYTVhdmdFZ1RjdGVNYlRoM2JoZ2lnUmRHYmNlUGdkY0ZkSWdIYWNnVmh3YlRjTWFGYU5iUmdaZ0hhdGdLZ0NhQmhOZnZlQ2UwZXRjV2hDZ0hocGZXYWZoMmR0aHVlU2ZtYlJkNWZTZnhiUmR4ZkhjUmIxZU5hR2dWZFlhOWVLZ0hoWmg3ZUpka2daYTVlQ2R4YkljRGVkYVVlRWNRYkFmVWQwYUxiS2czaEJoQ2NiZTJkSmNtZWFmUmJSZXlkVGduZE1mUWhUZUVoMWNSZFNkVWZNYlBnT2MzZFJlWmFmYkVjRWVoZ1hnVWJvYUloZWdSZ0VhL2VWYjNidGE0aGNnRmdaYzBnRGUyaHRhU2RGZUhmRmVHY0VnM2ZoZVRlVGd6YWNjOWZHZ2thMWZRYk9iQWZ0YlJjQmdSZnRiNmFIZEVoNWRCZ2Jma2dwYmtlZWNVaHNnVWJjYVJmMGZkZVRlUmVsY1djZGFHYzVoMmNNY0NiNGdWY0loaGRZYkRiVmNsYjlhS2NFZUZhSmdFZENmM2FCZGFhUWFtYjlhaWZaaG1ia2dVZ2Noa2M1Y3pnRWRFZHhlY2dRZzFmRWZWZVVlR2ZrZjhlR2JIYlpmSGFkZUZia2ZFZFRnbWdnYVJjT2EwYVZlS2ZVYW5jQmNXYmRoQWY5aHJjVWVoZlJneGNSZGhkTmY0ZFVlMGg5ZWtmYWhsY01mWmVFZXpjSmFaaEhnQmVkaFpnWWdXYTFla2hRZldjNWhLZFpoSGNsZExoRmdIZUVhZGhIaFVlMGRaaFZmbmNSY3VmTmdUYUloOGhBZDJmY2FFZUNhR2ZaYzFiU2FoZkJhU2FSYkFldGZ3ZVdma2JKZnZlWWJtZFpncGFGZEhoSmJPZGNmeGFCaEViRGdGYUZnVWJGZ1Jmb2NTZ09ieGVoYjdoUWJXZVVlc2dRZTBhSmhmYkVhWGdOY01kVWNYY2hod2VWaG5oUWJQaGFoMWNJZFViY2dVZ1ljVGZlY0ZlTmhQaFpnR2VwZkNlQ2R3YXRid2FGZWtiUmZMY0VkbmNKaFdlZmZWZk5jdWZUYkdhUWg0Y1FmaGFSYjNmR2h6YmRkTmJHZFZhWmEwYmJjbmRaaHpkYmMwYVpjbmNGZ2hiSmNNY2RmVWdvYlFlVWVrZlFnTGdjaEZocGJDZVplMmhvYnFiYWZRYWxheWFSZm5jc2NEaFhlVWcxZVhjU2RWZDFlSGZhaFdmZ2NFZGNlRmZkYjlkVWhSZFpoT2NmYVFkZGZnZ1RjRmFkZTRlTWNWZTlkOWdBZjJic2RlaEZmR2Q5Z0dlQWVtZHBkRWFUYTJmSmNzYVVheGNGZWRkY2dCZFpiWmRHZ2hmdGd6Z1hmRWQ1Z0JmYmJrZXBna2FlYVVjc2ZVZGNjUmcwY2RoVGhSZWxkV2FkZEdhNWgyZGNlMmE4Z0VnTmhWY05hVGNCZzJlNWFnYkVjRmZKaEVmQ2EzZ0JnYWFRY21nOWNpZlpibWVrZ1VjY2hrYzViemVFZEFnOGJNZEFmZ2h3YlZnWGNYYU5hZWNHYUhhQmJCZWRjRmhGZktiVGJuYlVmUmFjYjBieGdSZmVlSGZCY1doZGJBYTlmcmFXZ2xlVmR4Z1dleGFNYXNoS2RBaEJma2VZY1ZoTWZJZWJobmhrZUhhY2cxZFllU2VlZ2tjZGRrZVFnV2M1YUtjWmJIYWxnTGdGaEhnRWVkZUhiVWgwZlpoVmduZVJldWVmYWliWmF2YldoMmhkY0NjYWdRZU5nMWhRZlJlQmFBYU9jUWdKYThiY2RFYkpmdmhZZG1nWmJwYUZjSGNKaE9oY2J4ZEJiTWFUY1ZhRmdKZkZiVWM1Y3BhZGhCY2hhd2JVYkdjWmFKZFNhbGJOYW9hRGRIaE5oRWdRZEdiRmRpYlZjbmhJZVBmS2RsYnNiVWZkZzBmQWM1YWVoRmROZFBjWmFHZXBkVGdHZ1JlTmh3YUNnMWRsY1dlRWJuZnBkSGhaYUVkRmF1ZVNhbWdSZDVlU2h3YVZoamhCZVJlMWVRZkJhRWJ0aDBlWmdtZmRkcWZmZ1VjWmRoZUZka2FkZEZjZGRVY3dhV2JlZEVjUWRMZGNhRmFwZUNjYmEyYkpnbWFhaFJmUmN5Z1RjbmRNYlFlVGZFYzFjUmRTYVJhVmZPZmFoWGFRZVFiZWJBZTFjMGZUYUVmcGJHY2ZoUWZCZG1mVGNGYmRoNGVPZEZoOWQwZEVnM2JkaFNiQmRXY05hUGNFZHlmUmRUY1JlMmh4YThmUWhCZ2tjVmRjZUVncGRRZlZlZ2c1Z21nUmQzZkpiSWFiZWhhWmRraGNmVmIwY0hlY2NSZXNlZGdHZkJmQmZmaGVlRWRSZTJmY2YyYzljR2daYnhjWWFTZlRmSGNWYktkRWZGZEpnRWRDYzNmQmJhZ1FlbWg5Z2lnWmFtY2thVWRQaGthNWd0YUVnRmU1aGRnUmFWaDRiVmVTZ0diOWMwZEViR2hWYlVnWmVrZWhjY2hUY21jc2FSZ1BkMGJ3ZE5jSmRIY0FoYWZkZ0JmRmhyZFJkd2JOYmlhVWFnaEJieGZVZTBkbGVpZmFjbGV0aFhnRWcyZjBoTGVGY1ZjOGZiZFljV2gxYWtiUWJXYTVlS2ZaaEhjbGdMYkZnSGFFZ2RhSGdVYjBoWmNWZm5oUmF1YmRibmZNaHRjRmhDYUpoWGJXYVZmZGdmY1NhaGdCYlNkUmFBZXRjd2ZXZ2tiSmd2ZVlibWNaYnBkRmVIaEpnT2NjZzFnTWZOZEhoaGVSZUpiQWdWZVJmRGdkZUJnaGR3Y1FoWGFSaFJnU2drZjVlMWJFaFhkTmJNZ1VjWGJoZ3dhVmNuYVFmUGFZYXhkTWhVZWJjRWhaaEhiQWh4ZnhmUGZiZjJkcGFDYVpkQmNwZDhiSWFWZ2xoV2JFYm5ocGFIZFpjRWdGZHVnU2VtZFJmNWJTY3hhUmF4Z0hiUmExYU5oR2JWZlpkMGJaYWllTmV6ZmNma2FZY3poYmRWZzFjTWNmZWtob2FDYkxiMGIwYkhlV2RsYXBlQ2ViYTJhSmJtY2FmUmJSaHliVGRuaE1oUWNUZ0VoMWhSY1NlUmdWZU9hYWZYZVFjWWNlZ0FmZGUwY1RmRWhvZmFiRGhsYzVlemRSZjFlRmdyZkRkVmI5YTRoSmhXZnRkU2FGaEhiRmZHYUVjM2JoZFRlVGcyZVJkcWRVZ3hla2hUZGNmQWF0ZVplVmFoY0plNmdWZ25mWmdaZWJobGFkZzVhWmJFYnNlY2RZY0FnUWVQZlRlUmE5Y1diTmhXYWRkMmNkaFdibGdzZVpjeGNZaFNnVGdIZ1ZoS2VFZ0ZiSmRFZENnM2JCYWFhUWNtYjljaWJaZ21ia2VVZGNna2c1ZXpnRWNGZjFlZmZTZVVha2RJZVViM2VSZzBnRWdHY0ZhWWRaZmxkRmVNYVRlaWVBZ1liY2EwaHBiWGVVYW5lQmZXZmRoQWg5Z3JjVWJoZlJneGVSZWhlTmI0YlVmMGg5Y2toYWRsZk1oWmhFaDNmQWRMZFdoVmVZYURiYWZGYjlha2NYYUhmTmRYZ1poSGNGY2FnRGNXZE1lZGRHaDBhMWRmYlhiM2NSaG9iY2VGZGxhdmFSYW1nY2JXZkVna2d4YzFmU2hoZUJoU2NSZkFkdGh3ZVdoa2FKYXZoWWVtY1picGRGYUhkSmZPaGVmeGZnY0FlVGNVZHhkamhGZFVmNWFwYmRkQmZoYndmUWNYZlJlUmdTYWtnNWcxYkViWGNOZ01lVWNYYWhld2hWZ25oUWZQZmFjMWNJZFVmZWdVYjRhQ2NiYVZoTmVKZlpjQ2ZKYWFkR2RRYjloc2JDYzBhaGNPY0dnM2FvYWJiVGRrZkZkdWVTaG1hUmY1YVNjeGVSYnhnSGZSZjFiTmZHZ1ZoWmYwZ2JkbmhaYXplYmcwaFplbmRGaGhnSmZNZGRoVWRJY1ljUmNGZWNkTGNkYmxhb2hEZlpnbWdKZzZhZGRSZlJlamNYZkhhb2NRZUVoR2VkZFJhU2JSZ1ZkT2NhY1hiUWhZZ2NhRWNGYzBlVWdVZHBiT2ZkaFJkRmV6ZFRhRmZGaDRhY2JGZVpiMGhEaDJmdGVhZkhiR2RkZ1ZmRWczZDVoVGNHZ21lMWFxZ1Rjd2NVZVRkWmFnYkpoWmhDYmpkaGM2Z1JjMmZSZkJhYmFrZnBna2ZlYVVlc2ZVZ2NiUmYwYmRjVGZSY2xmV2FkaEdoNWcyZ2NlMmY5ZkdjWmR4Y1lnYWVXY21nWmRLaEZobGRJZ0NiQWJuZGxoV2NhYkdhOWVpZlpobWFrYlVmY2FrZjViemRFaEVjeGZOZFVkVWVraFZkVGdtZ2xjMGVHZkhoQmRCYWRiRmNFaEdlVGdtZnNhUmVaZVZnbGNFYmFkMmdWZFdlY2VnZWxjcmRRYXdmVmFnZlVlZ2ZKYXBiUWRVZDloNmhhZGhlOGVaaEZnWGdZYkxkVWZSZGdmU2VaYTBhY2hvZlNkR2VkZlJoVGJuZmxhTGdGY0hnRWFkZkhlVWEwZFphVmRuYVJmdWVkZm5iTmJ2YkdoMGcwZFdhRWRrZ3hjMWVTZ2hoQmRTZlJlQWF0YndhV2RrZklleWVTZUdhWmdwYUZjSGNKZE9lY2h4YkJjTWZUZlZlRmRKZUZhUWRBYzhhT2RGZ1Jhd2RYZkdibGFNZFNlZ2ZCYmZmRWRYZE5mTWdVYVhoaGZ3ZVZmbmRRZlBlYWYxYUlmVWJjY1VnWWFNZ2VnRmZ0ZkhiS2ZtYXBlT2JHZFFjVmZsYkhma2RwYkZiR2czYlpoSGZiZUJnSmd1aFZnMmdSZG9hUWNoZjFoYmhIZVJkMWhOYUdiVmJaZjBmYmRuZFphemZiYjBlWmVuZ0ZiaGVKYVdoZGdRYVFoUWdUZ0VlUWFkYVpmVWU5Z1JkZWNtY0pkZ2RiZnpjNWR5YlRobmRNZVFlVGdFYTFnUmJTYVJkVmJPZGFoWGNRZFlhY2JFaEZhMGJXZVVlSWhBZmRjUmF4ZXVmVGhFYWRodGNaYlViVmdpZkJjbWdkZzRlRmhIY0ZiR2JFaDNiaGFUY1RkMmRSZ3FnVWN4YmtoVGdjZEFjdGZaZ1ZjbGNkYjBhRmF6Z0ViU2FKY2tlSmFzYmNnUWhVZFVhYmZ3YU1mRGFUZlFlaGhHZWZhV2Q1aHdhY2EzZDVhV2FkZlFlVWhiY1RiQ2ZsaEtmQmJVZ2RjV2RFYm1iWmZUZVRla2hWZGllWmdtaGtiVWRjYmthNWd6aEVoRWh4Zk5kVWZVaGtmVmhUZ21obGYwYUVnRGI1Y0JoYWNWY0ZhZmdXYkdjWWJEZVllMGd3Zk5iZWdIYmhiSGJaZkJjMWQ0aFVmaGdKZ3hhQ2hCZnBoeGJXZWtmTmhPZmFmbGJNZlphRWgzYUFoTGdXY1ZhWWRTYWVka2hkY2tlUWFXZTRlUGdhYWlna2ZlY1JoemFraFZjVWMwZlFiVmFmZkhkUmR1YmRjbmROYXZmUmhtY2NiV2RFYWtheGIxYlNjaGdCY1NjVGVFZFJld2hVYlZmOWh2YU1nV2c5ZXliUGFuZEpmT2VjYnhlQmNNZFRmVmRGY0pnRmJVYzRkMGVYZmhnaGR3ZFFkWGdSYlJkU2FrZTVhMWJFYVhoTWZlY0ZhQ2F3YmxhQmZEZm9nUGRIYmxncGZSZ2VlRmgwZjVlZWhGZE5jUGZaZkdncGdUYkdjUmFNYnRhSWdWYmxoV2ZFYm5ocGdIYlpiRWJGZHVnRGREZ0VjM2RDYkVkQWU0YVVmbGdOY05lYmFGaDRhZ2JaZDNoWWVvYlJiVWVaaG5kRmVoZkplTWRkZVVkb2hRZlVka2RSYmRmTWhRYmhoQ2hQYVdmSmI3Y2FnVWJCYzhkQWFqZVplZWdDZnhna2NaZFVlamE5Yk9hYWFYaFFkWWdjZ0ViRmEwY1VhVWFwaE9iUGZGYWRmemFSZ0FkVWRzYWNlRWJoZHBhRGh6Y2xkYmhGY0NkTWJEYVJieWgwZ0JnQWVXaFFhWmZCZzBidGJhYlBja2J4aFhjRWNFZ0FoMWJDaGdhY2FKZExleGZnZUhiTmZnZTliUmZmZDFneGJOYkhiVmRVZVBjZmNCZDBoaWRJZ1NlWWNJaEliQmdvZlNoR2hIZHhnUmVPaGxkSmNFYkNiM2NCZ2FlUWJtZjlmaWFaaG1jbGZTZVBnUmZ4Y3pnR2ZCY29jTWZBaDBhbGNjZFRlbmdSZzBiR2FuZEpnTmJkZ0JkUmJLZVViM2ZVZkJiYWdFYXdnRGNlZkdnNWhXZU1iUmFSYXJjV2F6ZTVneGFSZWhjTmE0Z1VjMGM5Y2tlYWNsaE1nWmZFZzNoQmdDZldiVmEwaFBhZWdqZFFld2NFZnliY2NFZkllM2djZE5iUmRqZzVnUWRmYWdmVmFZY0JoQmJjZGhhTWVqYVpjaGZCY3pjZGFHYlhjaGZWaDloT2FVY1FjQWhEaFVlVWQzZFZja2RJZzdiYmhEZVVnbGNYYlRnRWdMZmVoMWVWYUFmVGZWY2tjTWdGZVVlVmUwZ2RlRWJ3Y2tiU2RIZDFhWWNVaFdoUmQxZ0VkWGVOYk1kVWFYZWhid2VWZm5iUWdQYk9jUmFkY0FhSmJCYlJmZGNlYkJmcGdVZFRhbWRwYVRjR2ZSZE5id2RDYzFnbGNXaFRoMWVCY0hoWmJFZEZndWNTYm1lUmc1ZFNmMWVJZmtiVWExYTRmWmhVZ0Jja2Y2ZmJiZ2dWYzdiT2IwZnBibmRSaEJiNWRNaFBjRWNNZFFhQ2VXYTRiTGhjZUZncGFDZ2JjMmVKZG1hYWhSYlJheWVHYURjSmFDYlRkQWRoZVJnVmFCZ1ZoTWdhZjJkOGZ5ZmNiRWhGYzBnVWVVYXBnT2NkZFJkRmJ6ZVRoQmRoZDRhYmdWYVlnWmJUYmpoOGdhZ0doamZ3ZVBkWGVYYUFlSGhRY1NkZ2V2YkhkVmg1YUhhT2ZBZGRhWmRIZ3hmdGNoZGJlV2NSYUJnYmFrY3Bla2ZlYlVmc2RVYmNjUmIxZGJlQWdraHRlV2NmYURiZ2UzYUlnV2Q4Y0poWmF3Z3NlU2hIZ21oNWdLZVdjVmJKZGFhQ2R6YTlkQmZRZ21kUmVwYUthV2ZBaFVoTmgwYzVoNGFEZlVld2YrYUJkUmR0ZGNjQWVDaDVoNmVYYWlnSWdPZU9kVGdJZkNmRGN5Y2RieWFQZkFlZ2JVaGNiR2VGY0VnWWh3YTlmdGJVZGtkQWhLZ0NoV2Y1YnhnU2RHZVZna2ZhZmxjTWdaaEVkM2RBZUxhV2VWZVliU2RLY0FjSWR3YkZkRGd3ZUVlWmdEY3hjUWNQY25mRWRkZEhnVWgwZVpnVmJuZVJjdWJLaDFlbGV2ZFJlbWdjZ1dmRWZrZnhmMWVTZGxmWWVIYUNka2ZnYWtlRWJ3aDBoaGFZYWdhOWVoZFFhSGE1Zk9hSWNSYXhoTWdCZkZiaGJKY1RibWhSYXBlZGFCZmhld2NRZ1hlUmRSZlNoa2U1ZDFjUmN6ZElkZWVVZFRnMWF3YlNhM2FRZU5nYWNVaGtjK2RjZFViWWdUaGVoRmVOaFBiWmNHaHBkVGNHZVZhcGJ3ZUZlbGJrZjdoVWd5YjRjUGFhZWdhd2JuZ0JiR2R3ZHRnUmNWYWdmMGZVZTFib2ZaaFVoVmdwYjBjSmQzZDljb2NSaFVjWmFuZEZmaGVKYk1kZGRVZm9lUWhVYmtiUmdOY1Bid2NoaENhWmJ6ZFFjbmVPZnhhUWc5YVRmbWQ0aFFiSGRsZlpoUmJBYkJkVmJRZmFoVGVzY0RmY2NFZXBhL2NIaGtlTmVPYk1nQmFGZzRlVWdWZ0ViTGhKZUFoUWI5ZFFkU2Z4ZGNkVWVpZ01kSmJYYWhhc2NiaERnamhZZ0pjSGRGaDFiV2hlZUZoOGZpYUdmV2U5YnpnWGVFZDVhQmhiZGtlcGZrYWVkVWZzZlViY2ZSYTBhZGJIYzFnd2dDZUlkVGh3YzRoY2J5ZnBkZGVUZVJkWWFTZ1RoSGRWZUthRWVGZEpkRWVWZmxkcGVhY1FobWg5Y2lkWmhtZGtiVWJjYWdnZ2VtY1hhZ2U4Y1pkR2FBaFpmYmhUZGpiTmY4aFRnSGV4YkJnSmdsZTFoS2hCaDNod2NSYktlR2NaZVJoZWJIYUJjV2JkZUFoOWJyZFVoaGZSY3hnRWZGYklocWFVZHdncGFrZmRoMWVOY05oSGNUYXhnT2dGYXhoRmhHYk1mbGV4Zk9lUWNXYTVnS2FaZUhkbGJMY0ZkSGNFZmRlSGJVYlVhWWNCY0hhUWd5YUtnbmFOYi9oUmFuZWtkV2RRYUVnVmUxZVRoQmVaZlNoVGZGYWxhd2VSZjBjSmEvYmFiMmRwZnBoSGZIZk1lSGFjZDBjd2RRZFRkVWRGYUpjQ2MwYTRmZ2NkZ0VmUWVzaFFoVGcxYVJoVmRFZzRld2FHYUhhTmRLZlZkM2hoYTRlSGYzZ1FlU2dhYXhlY2hkZGFhbWF3ZVRjZWZGaE5oUGNaZ0dicGhUZ0dmUmVOY3dmVGJSYVljRWNFY25iSWZSZ0poUmROZXVhQmhXYVJia2ZTYnhmWmV6ZEVoUmgwYUZnR2hVY3RiMGZQYUdnMWZ6aEpma2VaZjVoRmJsY3BmWGVkYVVlRWNiY0dia2MwYkxlUGgxZ3BoSmJjY21kSWdlYVlnVWVBZ0plQmNnZjRjWmNWYzJoZGhSZlNjUmRWY09hYWZYYlFkWWdjZkVoRmgwZUFmd2g4ZGFmSWZFY01kOWFUZUJiNWFqY1djbGhaZTBkRGgyY3RjU2ZGY0hhRmJHZFRkbGRKYVRlVGcyaFJkcWhVZnhia2VUY2NoRWYwZ01hR2FGZkVodWVEZWlmc2VQYmJoamFOYnNoTGZVZmNkVWNJZHhhRWhkYUJhQmZCZ1diTGUwY1JmMmZjZDJjOWhHZ1pheGRZZlNjVGRIZlZlS2RWY2hoMGhXZ0NmM2hnY01nQWN6ZjFkaWhJYTJia2VKYWNlaGJwYzljUWJ3ZEFjRWRFaGdnd2RkZEhoR2dWYjBmVWhYZ2xnTmVkYkJiNWVLZFVoM2NVYVRnY2VVZkJmUmFNZkhhQmFMYWRlQmE5ZXdlVWVsYnhjeGdXZ2hkTWY5aFhiUWVNZGhkSmZCYlJjTmFXZjJnc2ZMZkVlVmZZZ1phWmMwaGRiMmZTY0VnUmhLZVpoSGhsYUxmRmFIaEVnZGRIZFVlMGhaZ1ZibmNRZWhmZGVuZGhleWNSYmhnUmRDZ1FhQWJVaDdoRGZSaDRoVWRGYWthUWI5Yk9kUWRvaHVoTWdBZVVlbWdVYkRkZGFHZ05jbWZzZ0VnTWVGZkZoQ2NGYVZleGY4aFlhaGJoYTZjUWJUZEVjcWdBZ2tkNWMrYUVkV2NJYXhjV2FHY05nYWFWZG5iUWVQZ2FhMWJJZlVhY2VVZFlhVGRlZkFnRWVLYU1hRGE4ZkJhVmF4ZU1hL2dFZkhhTmVXZEVkbmVwaEhlWmhFYUZkdWJTZ2pkbGFUZlNjeGNSaHhkSGdSZzFjTmdHZlZlWWh5ZU9memFnZ3dlT2N3YThnb2NXZ0JlSWhoaGZkUmM0YmNhVWZoZVliSGhjYUJmTmFMYWJiemRsZ01oYWFSZlJjeWJUZW5iTWdRZ1RiRWMxYlJiU2ZWYXdnSWFhZlhleGVNZGNlRWRSaDBlUWNFZ3BoUGNhZ0FkeGZ6ZVhhRmZFZWtiTGZGaFpia2REYTNhVmhTY1FjSGZoaEdkUmd6Z0FnQmdBZ0RkTmFxYUhhVmV4ZUVoY2VIY2tnWWJHYkZhVWUvY0loamFZZVRmSWFSYmhic2dlaHdmUmRTZE5jMGE1ZlljR2FSZmtnZmFKaDJkNGg0ZFBiRGV0Y0djTWRsYzlhY2hHYkhnZGdEZENmM2hoZ0VjQ2QzZEJmYWJRaG1iOWNpYlplbWhrZlVmT2d3aGhkemRHZ0JjaGJOYVdna2JsZUhhVGJuaGRlMGVVYVhibGJyYmRoRmJGY0tiVGRuY1VmUmZjZDBmeGJSY2VlSGNCYVdhSWhFZmNjNWFIZFVkTmR4Z0NiRmFZaHZiVWZ6aDBnbGhKYUJnUmNjYmRiaWdKY1pkRmJnZlFoYWdlaERnTWEyZUdmQ2ZjYUVoSWEzZmtmZmRXYTNmRmZjaFhiZ2c1ZmNhQmJTZ2RndWJOZURjWWcyZkNnU2JsYVNlRWVnYjRmZ2dEYkZhWWZYZUZoZ2hzYThnSGV3aHdkb2dOZGlkNWNyZkhkV2FsZGtmY2d4YkJkTWNUaFZjRmZKZkZkVWg0ZTBjWGhoaGhjd2ZRZFhoUmJSYlNja2Q1ZzFjVmV5Z1ljQ2dFaGlkd2U1Y0diVGRvaFBjQmIxZHBjQWJmaFVmWmZCZGRhRmRNZ0dhYWVHYW9nV2FGZFJnTWMvZkJoMWhrY2VjR2EzZm9kY2hUaGtjRmN1ZVNibWFSZjVhU2J4ZVJkeGJIZFJoMGdFaFhoMWNaYzhhYmR6ZWhoOWdKYWhmVWdGZVFmMWZRZEtoTWRCY2dnWWdCaGtmMGdDYldmbGZwYkNnYmIyaEpkbWZhY1JnUmN5ZlRibmdNZlFnVGdCZGtmWmZHYzFmb2haY2FlVGZwZ2RoSmIwYUVmQWRDZUJnb2ZMY0ViRWdNZmhhQWJ3YU5ld2VkZDFmUWQyZVdlaWMwZVVkVWJTYk5oRWhFaHpha2ZCYUNkRGNFYm5lRmRsZWRoSGZjZ0VhWWdNaEJiVWdaYzZmQmhTY0ZlQmFMZDBmb2FHY0xhQWcxY1NmTmJFZjhiZGdCYkZhY2dGaElhQ2g4YTRlTWNDZHBhQmJiYmdiMGQ0Z1RhSGZWZktkRWFGYUpjRWdDYzNjQmRhZFFhaWdZYWtkWmVtY0ZlR2RjY2xoQmd6Y1hnMGJ3ZFJjRGNVY2xlZGZUZW5kZGUwY1NobmFsZHJkZGNGZkZlS2JUY25lVWFSYmNlMGd4aFJhZWhIZ0JiV2ZJaEVkY2E1YkhiVWFOZHhkQ2VGZFlodmVVZ3poMGZsYkpkQmVSYmNkZGRpZEpjWmVGYmdmUWFhZ2ZlVWFVYXlhQWFDZkliZmFJZ1hkdGdMZFZjU2ZOaGFnU2VBZUJnY2ZHZ0NhQmF1YVBheWNCY3ZhQ2NUZEpiQ2ZFYWdlTWF6Z1NhbGJJYmRkRWRVZVVmMGJDYVVmVmZtY2VkVWZ4YnBjRmhIY0phT2NjYnhkQmRNY1RoVmFGZEpoWGhBZWhhcGNmZEZlRmJ3Z1NmbmhRZVVoU2RsZUJoMWRSZlhlMGVBaEZlRGRZZDNiQWVqZHdoR2hhYXdmWmhjZElkd2NsZ0VjZWJCaDBoS2dNYTJlb2RoZldiRmgwYzNmVGZqZHdoRWFRZURoVWRWYmJjRWdNYkhoQmRDYUFlOGJFZXhlUWcrYVNhRWVsaE5mVmRoYkJkMGVQY0RnY2Y5YUtlQWROYWxhSGh3ZGxjbWZkYlVmb2RRYVVla2RRaExkY2JGZm9nZmFSZldmSmNtY2FoUmZSYnllVGhuYk1hUWRDaGhlZ2NmZUNma2FFZEhmSmFqZW9hWWRIYzBja2JnZ1hlVWZvZmNlZWFSYUVoNmZRZ0ZlRWg5ZmVnVmRZYXZkSmhXZXRnU2JGZ0hmRmNHZ0ViM2FoZFRkVGgyaFJoNmVVZ3doY2RUZklkZ2F0ZWZiVWhCZEpoeWRGZVdjUmhjYWJkbGR4YXhnYmhGZWdkQmdjZFJlWWhkYkhheGVsZGRiZGRIaDloL2hhZkVkVmZHYlpkeGNZY1NnVGhIZ1ZjS2ZFYkZjSmJFY1RnVGM4ZklmUWZtZ2NlMGRKYXphc2FVY1BkVWg1ZHVhRWVGZ3hiQmNVZFFjRWVWZVVmMmNrY1poV2RTZlFnSmVlYmhhd2dEaEFkSGQxZ0ZoZmNRYUFiVWdOZGpoY2dDZlBlQWU5Y21lVWJsZTFhOWFSZ2diRmJ4YVNmRWg4ZHNnYWZrYjBiWmFYYkdhc2JMYVVkbGExYmRhY2QyZjFha2RRYVdmNWJLY1pnSGZsaExmRmZIZ0VjZGFIYlVnMWhOZ0xhVGExaHVkZmVYYk1mZ2hPZjJiY2NMYU9oRWZ4ZjFnU2doZEJnU2hSYUFkdGJ3YVdla2RKZ3ZlWWZtZlpocGVIZkNkQmhPZWRoUmVCZUVjWGYwYVJmY2VGZ1ZiSmQxY2RhQmVCZG9jUWZYYzVkUmdRZGdhdGYxYURibmNNZkRoVWhXYUpnd2dSZDNlUWZDZ2FjeGEwZGRiZWNFZDhjYWhlZEVlMWJSY2VjbWFwYmJjQWNSZ05oNmJDZjFlRWRUY0VnbWRWZkhkS2cwYkZnMGJTZm5nVmY1ZFJmaGVRZStmRmNCYlJiV2hNaDFhWmgwYWJhbmdaZXpmYmgwZ1phbmJTZnpoaGdNYWRlVWRvYVFiVWRrZFFjTGVjaEJid2hYZklhU2NFZnljSWhGYXNnOGJUZWhiMGhZZ0dmRWVGZlJnR2F4YmxjT2NJZ0hlZ2ZZaE5mVWZoZzBkQ2ZtZkJjT2FkY1JiRmh6aFRnRmhGZTRlY2FGZVpmMGdIYzJhdGRNZEZlQ2dOZEdoRmFYZDVnVGVSYXpkWmZxYVRkaGVrZkhiWWVoYkpoTmdUaHdkUmh0aFZmWGExaFVmYmFrY0Zla2VLaDBhc2VmZGNlUWd3Y1VkVmRqZk5iV2RkaEdlNWMyaGNnMmY5aEdkWmd4aFloU2RDYmpmb2JZZEVjRmJvYlNnU2JpZ0pmYWZEYldhOWIvZFpmbmZrZVllY2NnZlphemZEZlVhd2VnYkVoQmcxZ2RmUWNDYlFoOWZWaG5kZ2VWZWVoaGYwaFBmQWdEZEplRmhPZjBleGhjaGVnRGJsaGFhZGhCZ3RhaWFTYVJoUWc1Z1JoZ2UxaDRlSGRGaFJna2ZZaFZjaGdXYUdnbGFvZ0xmV2VWYlllU2hlY2tiZGRrZFFkV2I1YUtiWmZIZmthZmZiZXpmZ2JkZUZka2cxY1dhS2QzZlJjemRkZ25ic2c5YlJjbmVrZElhRGhFZHhkOWFVY2hhQmJZY1JlQWRNYzFkV2JsZzFkdmVMaFdkWmV6YUZjR2VGZE9mZmhoYUFlRGZSZkZlaGZBY0ZiVWhoZ3BiWmJnZTFibGFXYmxoNWhSYVNka2g1ZTFoRWJYZE5kTWFVZFNmVmdhaFZobmZRZ1BhYWgxZkljVWNjZ1ViWmRWaExjUmEwYk1oTWNDaE1jY2NWaHhmTWZVYkFjd2UxZmFmRWZpZ2hjTGRaZUFiaGdpaFNjaWNGZXdnU2EwYzllYmRIYVJkMWhOYUdiVmVaYjBjYmJuaFpiemNiYXdnOGNoZUZnaGZvYkZmZGhVYkVoUWJGYTBnUWZWZWNkQWc1ZU1hSWN5ZGNob2ZMY2tiQWE2YlJiM2VOZUVjQmFCZjhmZWVIY2hlVWZBZkxhQ2JNZVliQWVnZ0FjNmhGZmdjOGdyZUpmMGdNZjhmSGVsZWxiNmJHZ1JjZ2F3Z1NiamFOYlNnV2N5ZVFkU2JFZHplY2dWY1RjemRZY3JkSGNWZzVmV2NjYWdlSmhDaGZnQmFKYjZnUmYyY1JhQmViZWtocGFraGVnVWV0aGRoTmZ4ZjBlVmhYZVJmbGNJZmRjQ2RkaC9mY2F6aHNjT2ROZFZhbGJGZFRiRGZzZlBjUmMxZklmMmFTZmpoNGdkZkJkd2ZvZXdnTmZDaFpoR2ZlZ2tld2VhYlhkZ2ZnYklnQ2dVYWxlYWZHZHpoMWYwYVZjemNaYUJiSmFoZ0FiRWRDY1RnQWVUaGVkbGVkZzdnZWZIZUJiV2FkZEFoOWJyY1VjaGNRZnNjYmRCZ05nNGZVaDBiOWZrYWFlbGNNZFpkVmdTY1ZiRmZHY2djSmNiaE5kUWRsY2tmQ2VtYlljZWhhaEhka2RaZEdhSGZGYVVjRWVVZzFnY2RXZ25oUWZoZmZiM2dNYjBhYmRHZ2NiV2JFYmtjeGIxY1NoaGJCZVNkUmNBaHNhaWFIaHhhWWU2Yk1oQ2NoZnBmSGhGYWhoT2RjZ3hnQmZNYVRnVmJGY0pmRmRVYTVlcGhkZ0JmZ2UvYlFoU2VnZU5hU2JpYnBjOWhSaFhjOWJNYUFmM2ZSYndoSGMzZ2dhUGFmYzFlNGdVYVlka2ZnaEhlYWdFZkZoWGJkYW5jbGJIZ0Rjd2dWaGplRWYwZXhmRWFDZG1iSmdSZUlhVmhKZjJhUmNtZVJiMGFXZEJmcGJsYkRkUWg5aFZjQ2QwZ1ZmZ2FlYUdiQmRnZmRnMWVOZjFoRGZnY3BjYWVNZ0Zoa2dJZldmMGNnZ2hjY2VGYnBmQ2NiYjJjSmRtY2FkUmZSYXliVGJuY01jUWRPYTBiTWJHZkdhMWV3Y2FmTGZIZHhjTWdmaEVmRWVtZVhnVWRvYUhnZWRSY0ViMmdRYUZiRmhxZVloMWZwZzBkR2QyaEpnZWdQYW5hRmVHY0VjM2VoYVRiVGIyZlJhcWVVYXhja2ZUaGNiRWhKaFpmWGhSZUpidWdiZVdlUmdCaGJia2ZwY2tjZWdVYnNlVWdjYlJjMGNVaFZiamNOZ1dlZGhHYTVlMmVjYjJmOWdHYVpmMGZzYjRoVGZIY1ZoS2RFZkZlSmFFYUNkM2NBYmNnRmh5aEVoaGJNZWlhQmViZlBiRWQ0aDVmR2NCYmhhQmJVYlJoc2RaZFRmaWVCZzRjR2NEZFZoTmRkYUJkNWFEYlRiaWg0ZDdoY2IwaHhnUmhlYUhnQmhXZmRoQWc5ZHJoVWVrZFlkMGZFY2tnWWdxZEhoVWI5YnNoUWhGZk1mWmNFYTNoQWZMYldmVmJZZVNjZWZrZGRka2ZRYlNiRmFLaE9iQ2NWZkxlY2JIYmxiSmVFZ1VhMWFMZFdhbmJRZG5jZWFuZU5hM2dTYm1jY2NIZEhjRmN0YXNjWGNRYlphTGVWY3hkcGFqYVRhbGRwZDVhY2VIYlZlNGVBZFdmVWRMZFliQWFCZFVjUWhWYkZkRWNCZEVoQmYrYWJnUWQ5ZW1oV2dHZmRoQWZXYVZjcGN0YkJjMmdGZGZoUWRHZDFlbmdFYjJmY2ZmYmNhMWRzZlljV2IwZ1liVGJlZ0ZoTmJQYlpiR2JwZlRoR2ZSZU5od2JDZHlkNWRZYVJlU2FnYk9mTWhBZVJobWdIZ21oaGI1ZkdnUmJoYXhoVmNCY0ZoTmNYZkZmcGIwY2VnMmFSYy9nYmQxYTVidWNHZ2pkaGNNYmRmVWZvYlFjVWJrYlFoTGVjaEZlcGhDYmJoMmRJZ3ZnYWhSYjloeWdWaGxia2hRZFRmRWMxY1JnU2RSZlZlT2JhYVhiUWFZZmVlVmVwZWViVWFVZHBhT2FkZVJmRmd6YlRoRmhFaGxiV2hsYVpoMGJEZzJndGZTZ0ZmSGVGZ0doVmNTZDBmZGNEZ0RjQWRqaEhnRmZjYlRhRmRnaE1lTmVYZXhiSWdoaGJjV2FSZEJmYmVrZ3Bla2RlZlVic2NVYmNkUmcxaFVnQ2Z4Y2xiZWJmZkdkWWZpZmNoM2ZKaEdkTmZoYzVkR2dSaFhjc2dZZlZkUWJJYkllU2JqZ01oZmVTaGplMGcyZmFhbWFrZ1dnY2JFYWRkNmhIZUVhd2daZVhkd2dWYlFmQWJDZzRmZ2VVYkhjQmZkZmRhRWFOYURiUmgzY1ZoRGhOZ2hlZ2RFYktkamg1YVdnZGVnYjFmd2ZlZkJkUmJ4YVJiaGROZDRjVWUwZDlha2VhZmxkTmFmZ1hhQ2NJYkxmVWJVaDBoU2RMZmtja2ZvZkJnQ2RBYk5iTWNEaEZhTGFFYlhoRWhKY0hoVWd3YkVoU2YzZlJmK2NiaFhhTmNtYlJmamRNYldoR2VWZUZmMWNTY0FjMWNRY1hheWZGaHdoV2FrZEpidmFZY21lWmdwZ0ZiSGVKZ09mSWJWY1VhWWZHY0FlTWZIY0ZiUmFwY3lmWGNoYmhhd2hRYlhmUmJSZVNka2c1YjFoVGVGY2xhTWZVYlhiaGF3YVZkbmFRZ1BnYWN4ZlJkQmZQY3dmVmdIYk1mUmR3YkJhWmFEYnRmYmNUZVJlcGJ3ZVVkSGZOZldiRWRuZnBkSGdaZ0VkRmh1ZVNmbWZSYTVhR2hWZ0VibGRTZUVoOGVEYkdmUWRKZjZkT2JpZlFlNmFJYmtnWmY0aEZja2daZUNkSWJSZmhnWmRIYzBnd2RDZGNiRWRCZkNnT2MyaHdkMGhMYUViUWQrZERhemhCZFZkUmRFZElldmNOY1VkWmdGYU5nUWJoYkxnZWMwYlZkd2dYZmdiMWhDY2RlUmNOZHhoUmhVZHBiU2RjYUZmWmYwZURnMmJ0YlNmRmZIZEVlYmdPZlhoaGZUYlRnMmVSZ3FjVWd4Z2toVGNOZmxnNGdYY0ZhVWZZZXpnQ2JDZHBmQmdGZWtoSWd3ZmNmRWN0YlBmV2Z4ZTBmZGNUYlJmbGhXYWRiR2M1ZTJkY2IyYjhjVWNJY2thSmVIaEhiamd0Y0tnQWdVYVJmRWRGaFhoQWFPZFFhbmRCZWloWmJIZGtjV2ZjaGtlVmh6Z1JoRWZJaFpkSGVqYXBjQmdIYkNjQWY2ZVhnM2VoZlFlWWNsYWhjS2JWZEhhVmdGZGZhUmJnY2VlQ2J5Z1FnRWdQZ1VnRWRzZVdmZ2ZWYW5hVGR3ZWhnU2dVZDBjOWdrYWFmbGNNYlpoRWMzZkJkV2FjZDFlWWNTZGVla2NkY2tmUWNXZzVlS2VJYmlmd2ZGY1ZoeWJWZFVoVWdnZU1nWmZQZW5md2g2Z2VlbmRNaDliVGEyaGRiTmVPZ0VkeGUxYVNhaGFCaFNiUmdBYXRid2NXZmtnSWE5Yllobmh0YnBlUmNuZ0liU2dMZ3hlQmhkYVRnVmQ1YkphQmFWYlZmRGNkYkJjaGZ3Z1FmWGhSZ1JhU2NrZDVjMWFFaFRnVWNEYUFjM2FoZDRjQWVEZ1ZjZGFhY3hmc2VZZ2NhUWNNYVRjWmZWZU1kYmZhaGliWWNXYlZjMWhRZ2thUWUxYlZlV2dYYVhlcGJhZlphQWE4YTdkQmVpY2hkMWNTZTFjeGF4YUFoQmQwZjJjWmVGZ3BjMGZJZUhnWmd1Z2JjMWFaaDhkRmNsZGRmTWNhYjBlcGZlZVNnVWdRZ0FiZWd4YVJhTGdiYXplbGZNaGFmUmdSaHlnVGZuY01lUWNUYkVkMWFSZFNlUmJWZ09lSWNEaEllWWVlYkVlbGI4ZkdoRWRwZlRjZGNVYlZnOWVEY3hja2I1YUlhamFVZzdkU2V5ZjRhemhRaEhja2dJZ0dibmNGY2ZlVGN5YTFmcWdUZlJja2ZHaFpiUmRsZUFmUWh4Z0pnOGVRYldnUmFVaGViVmdsZHdkYmhVaHNoS2hjZFZjUWZVZVJnQmRrZU5oWGJtYzVkMmFjYjJoOWRHZ1pkeGNZZFNhVGJIZ1ZhS2ZFaEZiSmRFZFFhamRaZmFoU2JtZDRndGdiZzJobGZQY1dhRWE1Z3pjRWVFZXhiTmFVZFVoa2FWYVRhbWRsYjBnR2FIZkJoQmdkaEZjRWdEYkNlSGFVZFpnT2hrZHhlUGhlY0dmVmdBYVpleGM1ZHllV2V4Y1FmcWRiZEJlTmc0aFVoMGI5ZWtmYWdsYU1kWmRFZzNkQWJMZldiVmFZZlNiZWRrZWRma2JRZldiWWRZZVpiSGVSYldjRmVHYUlkVWdIZ1ZoTWFaZldkMmdWZHVmY2VIY1ZidmFEZW1hbGVHZVJkeGg4YTlmUWhnYkpiQmdYZFFmZGd3YlNoMWN0ZithYmFtY1poNGFEZ0didGRIaGFnRGRwYk1nVGdWZEZnSmVGaFVlNWZwY2RkQmVoYXdoUWdYZlJmUmdTaGtlNWcxZ0VkWGJNZFBmSGZqZVlla2FIYXphcGVhZ0xha2RrZStlY2ZVYllkVGdlZEZlTmRQaFpkR2JwaFRjR2ZSZE5hd2JDYzFibGZXaEVkaWRkZ3RkWmRFYUZodWRTZW1lUmY1ZVNmeGNSY3hoSGVSYjFlTmJHYlZmWmcwZWJoamU4YzFkYmcwYzRlcGNGYWhmbGRNZ1pmRWVvZE5jVGQxYmtnTGdOZlZmTmFDZk5kRWhoZ21jYWhSZVJkeWJUZW5iTWZRYVRiRWExZVJoU2hSY1ZlT2ZhZVhkUWdZZmNmRWNGYzhjQWYwZHBhRGFhYkJhRmNnYlJlVmVGZW1lY2NGaHRjbGhEZTJoMWJVZkZhRGdsaEliUWh5YzBmQWJCYjJkeGQ0ZlFmQWdBZGZhY2hCZXBoQWVSYXhlNWc2aFZmbmd4Z1lnWmQxYUZnT2ZlYVVnc2dVaGNlUmUwaGRjVGRSZWxmV2ZkYUdmNWcyaGNlMmE5aEdiWmF4aFljU2NEYnpob2ZFZlJlQmNzZEtiWGNqZ1ZjQmVhaEdjOWJpZFpibWZrYVVhY2ZrZDVmemZFY0VmeGdOYlVjVWhrZVZiVGNtZGthcGdNZm5hQmNCY2RkRmhGaEtoVGFuaFVkUmFjZzBmeGNSYWVoSGVCZVdnZGRBYzhka2dVZmdkbGV4ZERkd2ZoYlNlVWgwYzlna2ZhaGxlTWFaYUVmM2FBZ0xiV2NWZVloU2dlZWtkZGRrZ1FjU2MwZUZoS2JpZzBiQ2NXYmlnUmVZZEJobWNjaFpjVmNuaFJidWNkZW5oTmV2aFJhbWZjZVdlRWZrZnhoMWZTY2thMWY0ZlJjQWJ0Z3diV2RrZ0pjdmZZYW1oWmJwZEZhSGRKYk9kY2J4Z0FmRmdDZTFjRmhCY0FlRmRoZDZlWmhnYmhid2hYZTNmUWhZZlFkMGg0YXVnT2czZk5oTWNVYlhlaGN3YlZlbmJRaFBmYWIxZ0liVWZjYVVnWWNUZ2VlRmVOaEhjTmNtY3BmZWJCaEJmTmFqZ0FlbGdsY0lkRWduY2RiV2ZaZkVjZGZvaFNiaWF4YjNhR2YwY0VlaWdWaFJoVmJmY0Nma2E5YzRmYmRtYmRicWJmZWticGVuZUJld2NwY1ZmZmNFZllkUWhXZ2dlc2RMZmJlVmNvYkxiWmNuZGxjTWVhYlJjUmN5ZFRnbmVNZFFmVGFFYzFjUmdTaFJoVmJPY2FkWGZRZVllY2hBZ0ljN2NIZHhkNGhIZk9nMGNRZTJoVmMzY3RnNGFjZ0ZhWmYwY0RjMmJ0Z1NiRmdIYkZlR2RFZTNmaGFUaFRoemdsYUFiVWV4ZWtjVGZjY0FkdGJaZVZiaGJKZzZjUmQyZ1JmQmFiZWtlb2F0aGVhVmNZYVVoZWVSZFVlVmJBYmhnbGJiZWRmSGJ0ZWplWWNYYVphUWViZmhhWWRPaFVjSGhWZmJiQWJGZnRjRWNWaDNiQmZTYkNiMmU5Z3ZmWmNuYXdkQ2dZZVZneGRqZkdlVWRWZE5mV2VrZWtoRGJXYzNleGduY0RjbWd0aHJoZGZGZEZnS2RUZG5kVWFSZmNlMGR4YVJiZWNIY0JhV2ZLYVFoOGd1ZUhha2NjZzBlUmJsY3hhNGFWZVVibGdrZFliZ2ZFaFpnSGhtaDBjTGdTYmxhOGRTYVpmRWNkaHBmVWZHZzVmTWVZZG5ka2hEZ0djaWhGYUliVGFnYlVjUmZSZUdhZGgzYmVkbmZOYStjWGIzYllmYWFFY2xnMWd0YlVieGhsaEpkYmNnZHRid2hXY2tnSmZ2ZVlkbWdaYXBjRmJIZUpoT2NjZDFja2VLZ1RiVmNsZkJhSGJRZEZncGJhZVJmZ2MrZkZiRGdnYWRkUWgwaEpmMWVBZ0djRmFVZ1VmV2FaZndhSGQzZzBhR2JhaHdja2UrZmNhVWhZYlRmZWFGZE5nUGhaZEdocGhUY0diUmFOZndiQ2YxZWtkZmZWZ0hhcGdQYWJiQmhOYXVmUmUzYmxiNWRXZmhmMWd4aEFlUmQxZmRmRWVGZ1lhMmZQZERjTWN5ZUpoRmQxaE5nRmNoZ0plTWNkYVVhb2dRZ1Vja2FRZUxjY2NGZHBoQ2NiYTJlSWh1ZlpkMGVRYW5jSGNUY3NjWWZCYVVkUmRLY1lneGhWYU9kYWZYZ1FkWWRjaEVhRmMwZlVmVWhwZk9mZGhVZXhlemVDZVJnMGFyYU5lVmhZZzliU2VXZHRkYWFCYm1hRmhTYUNkM2doaE5nVGR5ZDFnamZVZzBjSWg1aGNjQWZ0Z1poVmRoZ0poNmNSYzJkUmVCZ2Joa2VwY2tmZWdVZ3RnZGJOYXhhMGFWZlJjVWN0ZVdoZWJYY05lMmdZY1dmWmFHaGVmeGVZY0NiUmZYYlVlSWZRYWhmY2JGZlFnR2Z0ZXdjUWVtZDloaWFaZ21la2JVZmNna2U1Y3piRWNFYXhhTmRVYlVmbGhkYVFiRGZrY2hiU2F6ZGhiSmVmYkJiaGFLYVVnR2NzZlJjWmJVYVZoUmNKZEhlQmFIZmJiUmMxZ25mVWFoYnhkbmNWaFJiTmcrZVVmd2VaZXRkYWFnZThjWmJBYm1mSWJUY1VlRWUwZjRmZWFrZmRha2FRaFdoNWFLZlpoSGFsYkxhRmVIYUVoZGRRZ0VhMWRjZkdhaWhjYnJmZGNqZm9ncGZSY21hOGRBZUJlMWFsY21mWGJCY0JlTWJSZEVkSmI1ZldjaGRsY0ZiWWVtZFpkcGRGZkhjSmZPZGNmeGJCY01mVGZWYUZiSmhGY1VnNGhnZE1jaGRoaDRlU2hTaFpmUmFSYjFhTmcxaEFjbmVwZE1hVGdYZGhiZ2NYZTNlUmVOZE9jUmJkY1ZoT2hsZjBkNWRlYkZoTmhQZFpkR2RwZVRnR2dSZ05md2ZDYTFjbGZXaEVobmVvYVBiYWRoZEVlN2FHaFNneGV4YVFiMWQxZnhhQWd3YU5kTmZDZkViUmI5ZWJjaWVwZ3phZmZWYlJmemdHZmhnSmNFYmZiUWVNZlFoVGhGZm9lTGFaYmxmTmhDY2FlV2VKZXdnZWFoaDFheWhFaG5iTWJCZVhmbGNWaGRoU2hSZzFoWWRlaG5kUWhlaGNjQWhoZTllVWhSZFpoT2NaZkFlTmRyYVJnVWZwZ1NnY2VGaFpnMGREYjJhdGFTZ0ZjSGFGZUdnRWgzYmhnVGFFYm1kUWR2YkhjMGFwZVdmY2JGZ0JhemVWZGhnSmU2ZVJnMmFSZEJjYmdrY3Bla2hlaFVlc2VVaGNnUmUxaFVjQ2N4aGxjZWhkYldlWmZuYVlkbmI1aFNhZGJnY2NoQWVUY0didGJLZldnVmZ0Y05mQ2J5Y1FkU2FFZUNhQWIxY1pmaWJkZlJiSmhVYzRkV2JRZmhkNGRDYUFkMGNFZ1hhSmh5YWNmaWVXZVRkd2JJZk1lRmdFZkpkQWJUY0ZlVWRjZ3hod2FlaE1nVGU0aENnZGhnYlpmd2VlY0JjUmd4aFJhaGFOZDRoVWMwZDlla2NhaGxmTWJaZ0VoM2FBaExlRWFCY0FhU2ZjZ2tnOGQyYlFiV2VOYlhjWmNHYTFmQ2dGZ0dkMGdkYkRkVWRRZFpoRmZDZlllcmZOZ3plaGYwYmJlR2FjZldhRWZraHhjMWFTYmhlQmVTZ1JhQWF0YndhV2VrYkpodmFLYW1jZ2Y1Y1FhU2VFYUdnZWd6aHBlTWFUZFZiRmVKZ0ZkVWY1Y3BlZGZCYmhod2FRaFhmUmNSY1Noa2U1YTFjR2hUYnBmTWhUaDJiWmN3Y1JjMmJ3Z0dlYWR3YzRnVWZZZzFkSWZEY2RmSGJsY1BhWmJHZXBiVGJHYVJoTmJ3YkNmMWFsaFdoRWhuaHBmSGhaZkVjRmV1Y1FlbWd3ZndiU2R3ZXBldmdIaFFheGVmYkViRmVaYnliYmhtZUJoZ2NaZGthWWM3YUZnZ2hOZGViYmVVZ1lmNmhVZmtmUWNMY2NhRmJwY0NhYmgyZkpnbWhhZ1JjUmh5ZlRnbmVNY1FkVGJFYVZkWmRBZkJnVmVRYmRmM2FRZ09nZWVVYkZleWVVYVZheGJkZGZjQmFFZXZhVGZFZEJicWJhYkZocGJlYkRnMmh0YVNoRmhIY0ZmR2JFYTNlaGVUaFRnMmNSZnFlVWJ4YmthVGZjZ0FhTmhQYlJlUmVKZThjUmN5ZDFlSWViZWhnWmNrZGFkRmNrZk1kV2d4YzBnZGZUZ1JkbGNXZGRmR2E1aDJnY2EyZDloR2FaZnhhWWRTY1JjV2c1Y2dmRWVGYkplRWRDYTNlQmdhZFFkbWU5ZmlnWmNtZ2tnVWJMYjJmUmJ6YUVlRWJ4Z05jVWhVYWtkVmVUZ21ibGcwZFJkVmJwYUJoZGdGYUZjS2FUZm5jVWhSZmNmMGd4ZlJnS2NqYVViQ2ZJZVZnMGJsZ1VlbGJ4ZXFiYmRCaE5kNGJVZzBhOWdrYWFmbGVNZlpiVGNsZ29nTGdXZVZjWWhTZmVna2hkYWtmUWhTZmdoZmdLaGpob2FmYlhjVGU1aFRoSGFUZnNiUmJBZm5nMWZ1ZkxmVmdsaHZiUmhtaGNiV2NFaGtjeGYxZ1NnaGZCaFNnQWdrZ1FhaWZXYmtmb2I1YkliemRSZnBoUmNuY0poVGRjZTJkc2h4aFFhVmNFZUFiRmhWaE5ncGRaY0FnTmd3YUNjSGhSZk5mU2doZnBhN2hYYVRkWWVDaEZiaWh3ZTRoVGVYY1FnRWJZZUJlc2dkZldkMGZZaFRkZWdGZU5jUGdaYUdicGNUZEdnUmdOYndnQ2d3ZnRhWWJRZGliOGVVZkxlRWVsaDhiWGEzY0ZmNWZUZVJjUWRsYkVlMWY0Z0ZnV2JBYlFnWGJJaFRiSWMyYkRjaGJKYnZoWGR4ZnRkRmNiZG1nQWFRYlVna2FRZkxhY2dGZXBjQ2ViZzJhSmJtZU9kMWJFY21nR2J5ZkZnZWVUYUJnOWRLY1lkeGVWY09kYWZYYlFlWWJjY0VkRmQwZURoR2FCYk9iZGhSZEZoemhUY0ZoRmE0YWNlQmJBZ2hiUWNTY2dmR2ZYZ1RkNGhJYkVkeGZKYmJlR2YyYWhjcWdBZlJmQWJUYUtjeWNGaFphVmVoZEpiNmRSYTJoUmFCZGJia2JwYmtjUGN3aFJkR2hjZVJhVmhMZURiRWV0ZldlUGVXZUpjMmZOaG1kTmNHZEtiQmNvYlNnQmJIZFZkWGFFYkNia2M1Z0JiM2FBZ1VnUWJuYUpkaWVkYm5jSWJVZ1BmRWg1aHZiRWZCZWhnRGhIaFFheGViY0NnVGQwYzhkR2ZIZ1plSGJkZUZiQmJDZFJhaWFjZlJlZmVsYUZjUmRhY25jbGZXaGFlQWg5YTdhV2F3YjlleGhUYVJiZ2gyZFdjbWJWZWtjYWJsZU1iWmRFZzNiQWZMZldlVmVZZlNiZWFrY2Roc2JDZkdnNWNYYlpkQ2MxYUZnVmh6ZWxoY2hUYXllNWRXY0VjamJFZ1BoSWduZ3NoaGRUZTJiNGdhaE9iRWd4ZjFlU2RoZUJoU2ZSY0FodGZ3Z1dja2RKY3ZlWWFtZlpkcGZIaERmZGZPYmJmaGRBY0ZhVGZVYzlkWGZGYlZhWmhnZ2VlRGhKYXdmUWhYZlJhUmRTYWtlNWgxZEVhWGVOYU1oVWdYZGhod2FWZW5leGVBZWFhMGE4YVVmT2VFYVlmV2dlYUViRmZhZWNkbWdOaGZhTWJ4YU5kd2RDZDFobGVXZEVlbmNwYUhjWmdFYkZidWZTYW1hUmY1ZkFleGVvZWhkU2JFZTRmRmFFZVJhbGY5ZlljbGF4ZXplYmEwaFpobmJGYWhnSmVNYWRlVWVvZFFnVWRrZ1FhTGFjZUJnSmdNYVBjemNjZTFnSWVSY3djM2RSZTJnZ2Q2ZVRmRWgxZFJkU2RSZFZlT2hhZlhnUWhZZWNhQmVNYXhoQmNSZzhoY2NPZ3hkRWU3YVZiM2Z0aDRmY2dGYlpoMGFEYTJidGNTYUZoQ2Z4Z3NjRWUzY2hmVGRUZzJoUmNxZVVjeGRsY1ZoSmhVaFVmYWRBY2xjc2ExY0NiV2RRYzdnWmNoYzVndGNlZFJoQWgrZmNnUmUwaGRoVGdSYmxjV2VkZ0djNWIyZmNmemIwZ0RmTWYwYk5iQWNBZm5mVWY3YkhmZ2FZaExlYWRTZmtkT2FCZndhNGZ3Y05hQ2NoZ05oZWZpZmhkN2hSYUVlVmhFYVNjbWRNYlZoVGhtY2xmMGNHZUhoQmdCaGRiQWN4ZGdkVGduYVVkUmdjYTBmeGFSZ2VkSGJBY1FiSWdVZkVkb2NCZ2xlMGMraENoQmdNZWZkV2R4YXRib2FhZWdlRWhWYUVjemNrZ0hhV2FSaE1mYmZlYmhleGhPZVFkV2g1ZkthWmVIaGxoTGVGZ0hoRWVkYkhnUWR0ZFdnQmJIZVJhbWRJaERhSWc5Z1JnaWdnZ1dnRGgwaHhmbGhVZFJjQWJYaFJnQmRWaHdlRmdVZEphcGNaZ0dmWmZvZ0hjRGgxZk9lZWhCZEFjRmRUZVVlOWRVZkZlUmN4Z25mT2VGYTBjK2JCZGlkQWNaZVNlaGhJYnBlRWNUaHhjTWhUYzJnVmN3ZUFkbmNwZURjTGdoYXhkVGZKZVFjNGFhZFlkMWFOaEVnYmR5YlZiYWVNZXhjTmF3Y0NjMWVsZFdmRWduYXBjSGFaZUVkRmR1YlNnamRZYkNlQmFCYlJjNmdIZ1ZnUWJ3aEdhVWR0YjBhT2hnaDBiOGFFZWxjMWJOY0ZnaGVKZk1mZGdVZm9kUWdVZGtjUWJMZWNlQWdnYkhkT2N6ZWNlMGNKZnhhUWU5YlZoVmVrYVFhVGJFZjFoUmFTZVJmVmNPZGFjU2FrZnliY2hFZEZnMGFVaFVocGNPZ2RiUmhFYjFjR2hSZDhkN2hKYUJoOGQ3ZFFhV2hzYzVkSGhDZFZhUGhFYXlhTmQ1ZVRjMmFSZnFiVWJ4Y2tkVGRjYkFhdGRaYVZoa2hBZi9nRWR6ZkVlVGhJYkVkb2d3Z2VjVWhvZ0piYmZCZDFkSmVWZGpiTmRXaGRnR2E1YjJjY2IyaDlkR2daZTBhc2U0Z1RhSGFWY0tnRWNGY0piRWRDaDNkQWNNY0FiemMxZGljRmUyZWtoSmdjZGdjZGc3ZUJkVWZWZEJiZWYwZGtlVmNUYm1jbGgwaEdhSGVCYkJoZGNGZEVjOWNUZm1jZ2NSZE9ma2dSZEhhY2FYY3hoOGZkYUFoOWFyZlViaGRSZXhhUmhoZE5oNGZVZTBodGNnaGFia2c0ZFpmV2RuZ2dkY2FVY0VjMGY0YWVja2VkZmtlUWJXZDVoS2daZUhjbGFEZFJkbmQ5Yi9iU2NBYnRoZmRFaHliWmZ1aGFiM2RNYWhiVGYyZXNhOGJFZmtmeGExYlNmaGhCY1NnUmFBZXRld2hXZ2thb2c5ZWJjQmNVZWxoV2F5ZlVnc2hKYmxnWWZLZUNmQWNOZUpjQ2FFaDRmV2hmaFJiUmdhZlFhWGFSZFJiU2VrZjVjMWZFZFhiTmRNaFVkWGJBZ2lmV2FCYTFhaGJHaENjSmR4aEVhamVKaHNmRmJUZ0lmM2JHZHdhZ2NxY2JjWGRZZkRlQ2QwZlJoV2RCZTJjcGJPYWFmR2F0ZHVlU2FtZ1JmNWhTYnhjUmJ4ZUhlUmQxY05lRWZSaGhlNmRHYWdoOGVEZkNiaWZJY1lkZGIyaEFiK2FGZURjTmN2aEllVGRGZzdkQWhEYVVkd2FHYjJlSmI3ZVFheGVSZ3lmVGJuZU1lUWhUZEVlMWhSZ1NnUmFWZk9oYWhTZEpmWGNPYVFmVmgwZ1FjVWFwY1BiYWNBZ3hnemVHZkZiOGVNZENnU2VZaFJlYWN4ZFFnemhaZ2dkTWZuZmFkZ2VjZ2dlT2RoZ1FkYWdQZ0dmdGhuYmNiQmVSZlpmQWdoZndiT2hQYWhoUWdrYUNlamVVYUZoQ2h6ZGxjMWhDYkdmSmN1aE9hR2drY21nR2V4YXdiQ2VjZjNiVmRHY0lhaGU0YWJkUmZYZWxnZ2dFZkZlSmhFZkNlM2RCZmFlUWFtYTllaWhaYW1nRmhHZmZnQWZVZWVkVWhSY1FiaGRGYUFjZGRTZUdmaWVGZTBnQmZYZkFnT2ZmY0ZnaGhEZVFkbGQ4Z1JmY2UwZnhiUmhlZ0hkQmFXY2RlQWE5YXJnV2FsYXBlL2VGZWxid2czaEhlemF3ZHRmTWZCZllmWmREYm5lQWNUY1NnRWY4aEFoY2UwZnRlT2JRY1dlNWRLZFplSGZsZUxkRmhIZkVoZGVIZlVhVmRYZVdoQWJzY3ZlSWV6YlFhaWVBZnlibGdDYUVkbGhGYTFkRGZFYVVhY2FCZTFoOGM1ZkZhUWV4YnZjYWdqYUpoZ2VGZ0NobGFrZWNleGVCYk1lVGJWZEZkSmhGZ1VjNWVwZGRhQmVoYndhRWN6Z0VjRmFIaHhjd2U3ZkVnWGdzZ1lmWGN3ZmNnUGRCYWllWmFBYVBkeGIxZnJmRGVrY1lmT2FlZ0JjMWVCZk5oRGdnZGNmVGNWYXdja2hVZ2doa2VUYUdlM2daZ0hhTWVGY3BoRWJTYm1nUmI1ZFNjeGRSYXhkSGFSYjFlTmRHYlFhdGI5YllobGd4aHpiYmEwZVpobmRGZWhkSmJNaGRhVWFvZlFnV2ZnY29kRmVOZGdhZ2NOYUlkbWJKYTdnYWJWY0libmVBY0RlQmRFYkJiUWdJY2ZlU2JSZTBoYWNaZ1hkUmdLZ2ZkRWFFZTloV2RFZG9jVmVYZXhkRmV6ZFRiRmRGZDRoY2FGYVpmMGZEYjJldGFTYkZnQ2VNaERiUmF5ZDBnQmdBaFdmUWY1Y1dkMWVkZUdlUGJFY2RmVmVWaGtiWmcyaFJlemhaZk5kYmJnYk5hdGVZZW1iRWJVZ2NiUmIwZWRlVGFSZ2xlV2FkYkdlNWcyZ0xmbWJaZktmVGZSZllhU2NUZEhhVmhLZkViRmFKZEVoQ2IzYUFlVWFUaEJoc2diZEZnZ2h4YndiRGZTZDhnQmRZY2lkMGMwZ0xiamZwaGdlUGVoYWthYmZhZWdjUmJCZWNhbGVkY2dmVGNuaFViUmhjYjBheGNSYmVhSGNCZVdoZGdBYzljcmRXZmhhd2EvaFNiRWRNZXFiSGhCY3NicmRQZ2dlcGNKZFZmbmY1YjBiSmhnZ1pjQWhOZlJjTWhyZVBkaGZGZEtiZWVYZmtjK2FYZFRmOWFKaEJhU2Z4YkxhQmREY1VlM2hlYkNnTWY5ZENlVGdOZlpiUmFoY1VjbGREZHhjbGJlZ2JnZ2F0Z3dmV2ZrZ0pmdmJZZm1nWmJwYkZoSGVKZE9oY2Z4Z2doQ2ZRY3lhNGEyZ1JiUmR3Z21hSWFGaGNoUGhQYm5mUmFNYlNjamdzZThjWGJ5Z2RjVWJNZ0Njb2JpYUZneWQwYUdmWmgzZmdoVWhjZFVnWWRUZGVjRmNOZ1BjWmVHaHBmVGVHZVJoTmd5ZlhoaGZjZ1NoVmR6Z3doT2hLaGdhUWdxY1NkR2hSYjRkVmFoZFFhbGFSYUVkMGNJZlZlaGJCZDBkSGFTYzhjK2dMaFFia2FyaEZlaGVSZktkWGIwZW9jUWFVZ2tiUWJMY2NkRmJwZkNoYmUyZ0pobWFhaFJjUmJ5YVBhU2VwaGRjRGVnZUloZGRSYjBiWWFlZExoRGVkZ1JiTmFSYUphMGNWYTBheGhrZ2RmUmFGYnpnVGVGYUZhNGhjZEZnWmgwYURmMmV0Y1NoRmFIZ0VoSWVhZkFhc2dLZUFkaWZZY2xnSGh4ZGRkQWZJZkVkNGNhZUhnMWdjZHBlT2RtaFJlY2RjZjFmZGZrYk5mMGJzY1NnZGN6ZGNkZGhUYlJnbGdXYmRlR2M1YzJmY2QyZzloR2VaZnhiWWFTZ1RhQmZvZEloV2NoZWNkSGNYZDNkNGNlYkJieWJraHJjS2FDYnhna2FJZUFnRWhqZVZlUmI0Y1poQ2VFY0ZoYmdRZ21la2VIZFFhVGMwYURiT2J4YjFhRWVIZFNjVmZVYU1jQWdVYlViS2gzZXhoV2dMYnloVmFyZFVnaGJSZnhiUmFoZk5lNGFVZDBjOWdrZ2FnbGRNaFpkRWgzZUFmTGJEYXhjZGZlZ0xjd2NKYitjUWJTY0FjZmNLZ0RmVmFIY1BjbmdFaGRjSGRVYzBjWmhWZ25mUmd1aGRibmVOZHZhUmhtZ2NnV2dFY2tid2IyZUJmVmg0Y1VkRGhVaHdmbGFDZ0FmTWd0ZkxoaWROaHpoRmNIZU5lZWhmYXphcGZNZFRiVmFGYkphRmFVZDVhcGZkaEJmaGR3ZlFiWGNSaFJnU2FoZ05jOGFHYkhoOWZtZlVmWGVoZ3dnVmRuZ1FhUGJhZzFiSWFVZ2NkVWQ1Y2RkZGdoY0ljRGhLaENkVWRRZ0dkUWg1ZXdlVGRRZndkWWdVZVNmNGdPZEtmd2g5Y3VlUWFqaEJlMWJTZDBiWmM5ZUhnVmRSZ0VkR2VRZjFoZWFiZ25oWmJ6ZmJoMGRaZ25kRmVoZEpoTWVkY1Vmb2NRZUFiQWFGZ2ZmSmFRZ2diTWdiZHpoZGJ1Z0plMGJFYStlQWduZThoUWVHY0VhRmhSZ0dmeGRsZU9iSWNIaDBmRGNXYmtnRmcwYVVmVWJwaE9hZGZSYUZlemdUY0ZjRWVsYmVnVmdwZGVmRGEyYnRoU2JGaEhlRmJHZ0ViM2ZoZVRhVGIyZndla2JYZVZlaGhmYVBhRWFRYWFhSWcxZXdhcGVCaGloSWJFY2JobGVkY2thUGd4ZjViYWVNYWtkbGhVZkFnbGZkaFdiZmVEZnBiL2hjZnpjUmZzZlpmeGdZYlNhVGVIYVZlS2dFZUZnSmhFZkNjM2ZCYWFoRWNDaG9jMmhNY3podGVhaGNlZ2NoYzdiWGdoZWtjQmVIZ1VnVWNWZkdobWFCZHZmTWduZUJlQmNkaEZnRmZLZFRobmRVYVJiY2UwZHdjTWNjaFhjeGU4Z2RlQWI5YnJiVWFoZlJieGFSZ2hkTmM0aFVmMGRjYnFnWmhCZ0pnVmhYYXplOWhJY0xkQmhoaEJhT2R3ZUVjaGNNZmlkSWdGZ01hM2NsZFdoRmVEaGRnSWJVZXdoNWZOYkhiemZzZGdiZGZuZ3NmN2JUZTJlZGdOaE9hRWZ4ZjFjU2FoYUJmU2NSZUFhdGh3Z1dja2hKZXZhWWFqZ1Flc2ZRYkNmY2VjY1BoUmNBZ0toUmRSZDhnY2dXZlFhSmVsYmRhRWJ4ZTVkV2JsZDVjUmJTYmtlNWgxYUVoWGNOZk1lVWhYZGhjd2VDZTNjMGNEZ1FkVmRJYlVnY2VVYlllVGVlYUZoTmJQYlpkR2VwZ2JiVmN4YjBkNWVXZkRnc2JEaFZoRGd3YkNkTmZrYUZiemdTZmliSWNzZkJjVmdjZ2xiVmdGZklkRGdHZ1ZmNGJnYVpoM2FZY29nUmhVYVpmbmhGZ2hoSmdNZmRjVWRvaFFmVWdrZVFlTGZjaEFlZ2FIZU9kemZjaDBjSmZ4ZlJjemRSYmpmMWNGaEFnQWRGZVJiVmZBaGhnT2hQaFhjUmJFZkxjRWJGZjFiQmVVZVFneGhQYUVlSWZSZkdlUmRjZytjTmRRYlJjOWRGYUVjRmRTZEZjSGdGY0djRWczZGhhVGJUYTJnUmdxZERmaGVBYmZjV2VnYXRhWmRWZGhnSmQ2ZVJjMmhSYUJnYmdrZnBoc2hOZDBoVmVYZ1BkbGRCZ05jRGJFZXNoVGJkYkhnTmUyYk5nVGFvZ0lkSmdFZ0poYmJBZ3pmdGVLZ0dnQWNaYUlnQ2R5ZkpjVGFRZ2pjUmFJYVphbWVrYVVjY2JrYTVoemVFYUVkeGhOaFVoVWRrZlZnQmZ5ZzlnMGhFYUhkRWRQZmVlaGdnZVpmTGdDYkJnWGdOZVFka2REZmNmQ2NSZmZmZGNGZE1kM2VVY2hhVWYvYlNnRmFvZHJkTWZSZm9naWZMZEJlWmVMaEdheWZJZENmVWRIZndoU2NlYmthZGFrYVFiV2M1YktjWmJIZmxnTGVGZEhiRWFkZ0hlUmJsaFJiQmZEZ3NiNWZkZGphMGRxZUVhV2hkZ2ljU2d4ZXdod2JMYzBhSWRBZUNnMWJsYjRlV2NDY01kOWFKZlRjTWhraFVlVGd3Z2FmSWNCYkFjQmhHY0FhSWNkY0ZmUWd3YXNhZGZIYW9nbGJCYXpnSWNVYkdnQmIxYTNkR2dHZWhlbWRVZFhnaGd3ZVZmbmJRYlBlYWgxZ0llVWNjZFViWWJUZ01kUmVWZVBnYmdEZjViVGNCY0FkNWN0ZUNid2J0YWZhRWNpZmdmQ2NNZ0JoUWY4ZUJkR2ZSZnBnVWFEYzVoeGRIaFJnMWhOZkdkVmdaYTBlYmFuYlphemZiZDBjWWJoaFdiVWRCaE1kZmZXZUFiUWFVY2tiUWNMZ2NmRmZwYUNhYmIyYkpnbWVhYVJmUmF5ZlRiaWNWZ1JiSGFrYzBhWWZTZVFhaGFPY1BoWGVwYVVnTmRRaDhhemJCYVFmSmZDaGRmVmZSZHpnVWdWYkVncWdmZ2hjb2N4ZFFiU2h3Y0diWGZIZzFiR2hYY0hoaGhPYVRlM2dSaG1kVWQxZEVmVGZiZVFkc2MwZ0ZmMGFZZ3lhU2dTaGtlSWVJZ0ViSWN0Z2RmVWR0ZVJnZWdBY1lmM2RUaFJmbGJXaGRoR2U1ZDJhY2cyYTljR2ZaYXhhWWVTZlRjSGFVZUNjRWNFY3hlRWVSY0didGF3Y1FhbWY5ZGloWmFtaGtlVWdjZmthNWh6YkVkRWh4Z05lVWNVYmtiZWRSZ1NhWmFlYUdnSGJCZkJiZGZGZEZlS2VUaG5iVWZSZ2NkMGR4ZFJmY2VWZnBoV2dkZ0FoOWJyZlVlaGRSYnhoUmFoZE5iNGdVaDBiOWFrY2FiaGJwaGZnRWIzZ2hnZmVJZ2hobGd2aGVoa2FaZzVkWGVHZDRoWWVIZHpkWWUyY0hnWGdGYkdiTmUwYjBlWmJWZG5mUmZ1ZmRmbmJOYnZhUmVtYWNkV2hFYmtieGgxZlNjaGdCYmFkRGFRaHRjdGNXYWhhWWZVZ0xmUmV0YmdjR2dIY0plR2VOYWhiQmVSZVRmUWNNYXlkV2JqZU5kZ2diZ3pnSmd3ZlFmWGNSY1JmU2ZrYzVmMWRFZVhoTmRNZFVjWGhoY3dlVmZuZVFjUGRLYVFjQmdSZU1oQWMwZkljVWVsZU5lUGNaZUdlcGhUZkdoUmNOYXdiQ2UxY2xmV2hFZW5icGJIaE9iV2Z0ZHVmU2ZtaFJoNWJTaHhmUmF4YUhlUmYxZU5lR2ZWYllibWZLY3loSWJtaFBoUWVoZm5nVWd4ZkpiU2NkYVFmTWZRY1RoVWZRYUdmWWhWZHBkWWhiZHlkdGhtYmRneGZRZTNjVGRtYXdoUWRYZ1VjMWZMY1NjUWZWZVZjUWIzZFFkWWJjaEVjRmIwZlVmVWZwYk9iZGRSZkVhdWZSZlZoMWhTYWNkRmRaZzBjRGEyZXRoU2ZGZEhhRmNHaEVoM2hBYWRhUWJTZDBlNWJOaGxkZGFRZVBoMGc4ZFFmR2NGZFZoNmZXY21oUWVIZ09kd2JRZm5oTGVRaEpnYmhQYnhlMGdWaEdnUmNCaFdkTGgwYVJnMmhjaDJhOWFHZ1pjeGVZZ1NjVGRIZVZnS2hFYkZkSWhYZVhkRGNrZU9jQWFTZmRmaWRiZGhkcGdBZ0lhQWFjZTlkVmQwYVFiWmRXY0ViZGZCZ0FlUWVVZjdnVGh6YlVmVGhGY3hjQWFaZkNkM2IwZFlkZWFrZndiS2ZVZG5hQmZXZ2RoQWM5YnJkVWJoYVJleGFSZWhlTmg0aFVjMGU5YWtmS2hSZ0pnS2hWYW5kQWVKYUVlUmJOaEtjZWhGYTFnT2JRYldlNWZLYVpmSGdsZkxiRmZIYkVhZGJIY1VhMGhaYlZmbmNRY3RmTmF5Y0FjcWFSZW1kVmNEYlJiZ2ZwZ3RlU2VBZHBiNGhSaEFhdGF3Z1dia2JKZXZiWWZtYlpicGVGYkhmSmhPZWNmeGdBYVBmRGNBZ0lhTWRGYVVmd2U4YkloRmE1ZjllV2JYY1poTGZZZEVoNWUxZkVjWGNOaE1oVWNYZWhjd2RWZm5kUWFQYWFjMWRJZlVnTWdnZGRjQWdQZ1ZhTmROaEpmVGFrZFFoVWJGY3BkeWNFY1hkTmRXZkVnbmdwZ0hmWmdFaEZkdWdTYm1kUmU1YVNmeGVSaHhmSGNWYjRjTWdTZ2hiTmEwZ2JkRGZvZHlkT2R3ZjhmcGhCYXhhQmVXZFhkMGNvYVFmVWVrY1FiTGdjY0ZjcGNDYWJnMmZKYm1jYWVSZlJjeWJEZ1RjSmREYkNoVWExZVRkQ2QxZHdoQWJLaENhWmFCaGNlbGZ0Z2VjVWRVZnBjT2NkZlJkRmF6ZlRmRmRGZzRkY2FGY1pkMGREZDJjc2JSYVZoU2RJY0RkRWYzZ29kUmFEZ2pjY2h2aFJlUWEwYVJlYWNpZUZmWmVWZWhhSmg2YlJnMmZSY0JoYmFrY3Bla2FlaFVjc2FVZGNjVmc1ZWNmSGNsZnhhV2dkZGpnc2QxYUlnSGIxaEVkZmVUZndiU2FUZEhlVmRLY0VkRmJKYUVkQ2gzY0JoYWZRYm1lOWhpYVplaWdwZFZmSWZRZHRoemdFYWhoa2dPYUFla2NRZkhiVGNIYU5nZWVHZEhiQmhCYWRiRmNGZ0tnVGhuZlVoUmNjYjBneGNSZGVoSGVBaFZmTmFWY3djdWRVZWhhWWhrYkVnbGdWZ3BiUmVRaE1kaGVhZkVoa2V6ZEVoM2FBYUxlV2RWZVllU2ZlYWtlZGVrYlFlV2Q1ZUtjWmJIYmtnSWNWZ1NnSmFZaEhkVWU5Z01jQWdqYkpjamVaZTJmVWVqZEFlMmFVaE1iT2hFaHhoMWdTYWhkQmdTZ1JhQWh0ZXdnV2RrZ0pldmNZZm1oWmZwY0ZjSGNJZmNmTmVrZVFiWmNIaHhkOWFKY0ZmRmU1ZnlnWGNoYmhhd2ZRY1hhUmhSZ1Nka2c1ZzFjRWdYZU5lTWNVaFhkaGF3YkVjamdGZUpnS2FnYWRoWWdKZ1Zhd2c1aGVmRmdOY1BhWmFHYXBjVGhHZVJkTmN3YUNjMWZsZldoRWNuYnBlSGVaaEJiTWRyZUhnamVFZ3JiQmVSYVJid2JEZ0FkWmduZkdoVmdaZTBnYmFuZ1plemRiaDBkWmZuZ0ZhaGdKZk1mS2VHZUFoUWRVZWtmUWhMY2NnRmNwY0NlYmQyY0phbWdOYkJkMWgrZ1pnSGNNYVFiVGJFZDFjUmRTY1JjVmZPYmFiWGdRZ1FiUGFrYzhlM2ZIY2dkUWROY05mRWZWYXpoVWJWZEVmK2FKY1JiZ2QzZVdleWZJZ2RiV2FuYkZlT2dSYzNmUmdUYUhkV2QxY3FhQ2VEY01iVGZjY0FldGNaZ1ZmaGdKaDZmUmEyZFJkQmNiaGtlb2V0YVBlMGRzZWNoY2JCZGthWmRSY1VjMWZmZ2ZlVWVSZTJnY2EyZTlnR2daY3hoWWJTYVRhSGdWZUtjRWNGZUpiRWRDZ3llUWFTZ0VoQ2dBYTFlWmhpaGRjUmFKaFVlNGhIZVNnUmR3YkllTmhCZHRiSGZBY1RldGM4aE1ibmJCaEJoZGFGaEZiS2dUZG5iVWhSaGNkMGV4Y1JlZWVIY0JoV2RkZ0FkOWdzZlVnRmVnYjRmRmRVaGRiNmFVZHdlNGYyaExnUWhaYlViVmRqYzVlZmJXYlJidGdIZ0thUmROaGtnQWF5YXRiS2JKYlRiZGFMZ2RmU2ROZVBmWGFCZlFiWmFHZFRhSmN1ZkZkQ2JZZHBnQWFDYUpoRWdRZ1VkdGNmZVNkaGJCZlNmUmVBZHRld2hXYWtlSmR2Z1libWdaZXBoRmFIZUplSGNhZURicGJNY1RiVmZGZkpkRmhVZTVncGRkaEJkaGN3YlFnWGNRYlljRGFFZDVlOWdBYVhlTmZSYlRlR2JWZXdmQWZuYXBlRGRMZmhoeGdUZEpmUWI0YWFjZWhBZEVlS2NNZERhOGdCaFZneGJNZytnQmVSYWdoYWRYYWpkVWFFZ2JmRmVGaG5kVWhVZjViNWhTY3hjUmd4aEhnUmIxYU5mR2VWaFpkMGdiZG5iWWNsYUxkaGdSY25mWGF3Y2xkbWdkZVVnb2VRYlVia2ZRYkxmY2NGYnBlQ2JiZjJiSmJtZUlmRmNKZ3lkUmRpYVZkZmVCYVFhbGNSYldoUmZWY1RhZGRHYWtoWWVJaGthaGFlY1VoVWZwZE9hZGhSZEZoemVUY0ZhRmg0aGNnRmVaYzBmRGYyYnNnVWFXaHljTmhHaEdneWFwZFRjVWVtY1JnNmdYY3hjbGhhYmNiQmZaYlplUmRnY2xoNmJEaG1jUmVkYmJkaGg1Y3FoTmRRZTVhYWdOY2tobGFWZVZnaGVsZWRoZmN5Y2RkL2djYnpnMWNHYmJmQWJzY1NjR2hBaDRhRGFiaFZkd2NJZlRmamY0aGRjRmVpYmRjNWVUYUdma2JVYmNoa2Y1ZHpjRWRFZHhoTmJVaFVha2VWZ1RnamQ4aDFiU2JuaEFoRWRkYkVjeGNLaEFiSGJ0Z1FlUGV3YkFjZWZPZ3dnVWFZZkpiMGY0aHRhRmh4YndiamRUZnhlOWdTZlVjMGE5YWtlYWdsZE1kWmNFYjNnQWdMZldmVmZZZlNjZWdrY2NjcmhRZFhlTmhLY2RhR2NKaGhoRmVIZEVlZGdIYlViMGdaZFZibmJSZ3ViZGZuYk5odmJBZENnaGVFZkVna2FRYzhnU2hnYTFjU2ZWZ0JmQmR3ZkViMGRKZHphWWJqZ0phbmVXaERkY2VBY05kRWFRZUVlVmJsZ0ZlQ2FIZmdhZGFnaGRiRWJOZGFhUWNYZVJnUmVTYmtiNWcxYUVjWGROYk1mVWhYZGhnd2RWZ25oUmhaZEtlZ2NBYVVhT2NVZ1ljT2NlZ0FhY2MwZExhUmVkYkljTWZ4Y05kd2RDZDFlbGJXYkVlbmVwZEhhWmNFYUZjdWFTZ21oUmY1ZEFibGVKY3hkRmdSY3diRGZGaHhkOGJuZURiQ2JNYTFiS2FRZE1mMWRIZ2xmcGFGZ2ZnR2NBZFFiVWJraFFhTGFjYUZicGNDYmJkMmNKYm1lYWFSZVJjeWJUYW5mTWNRaEdiQWFVaERhQmhrYUpkT2ZKYnplRmJQYmNiRGNVZ3RkQWJRZThjcmhKYzBkTWM4Y0hlbGhsY1NjY2dGaFpoMGREZzJhdGRTaEZoSGdGZEdiRWgzZGhoVGRUYjJlUmdxZlVmeGZrY1RoZGZ3Z2tlVmZIaDBiRWV1YVJlV2ZRYkFmUGRBYzBoeGJOYUFiNWVhZ0plUmcxZ1FoR2dFZ29mQ2NkYkNld2Z6ZWNkeWc0ZUloWmYzaGRnQWJIZ2pnUWVUY0VnQmQwaENmQ2F4YUlmUGVCZkNna2VuZU5hRGNvYVRkV2NFZDVoemVFaEVkeGhOZlVjVWNrZlZkVGRtY2xmMGJHYUhkQmhCZmRhRmRGZkRiVmRWYzhiUmVjZjBheGVSZ2VjSGZCZFdjZGdBZjljcmJVZmhiUmV4ZVJjbGh0aDJnRWZBZEFhMGNNZzFkdGFjZEhkM2JCYkVoVWFGZ29hU2VjYmdnaGFrZVNmbmFOZ0toTGNIZ2NiSGhVY1RoOWNhYlNlUWRVZ1FmVGVWZTVodWNkZG5lTmd2ZVJjbWJjZ1dlRWRrZXhmMWFTZWhjQWdQY2JiZ2V0YndnV2FrYkpldmJZaG1iWmhwaEZhSGFKYU9oY2EwZ0lnSmZHZFFiUWhiZVdmMGc0ZXNoYmJ6ZEpid2NRZlhjUmVSYlNha2Y1YTFiRWNYYk5lTWhEZ0hmRmY4aGZkSGdRaFBiYWIxZkloVWdjZlVnWWNUZmVoRmdOY0hlS2RtZlFjUmVRYkVlY2ExZlpmeGJ3ZFlmVmFTZTRmUGZaYUZoeGR1YURibWgxZzFnWWFSYlJleGVIYVJmMWhOZEdlVmZaZzBiYmhuZ1pmN2RJYVVhZ2gzY1JkRmQwY1lnT2ZoaDVjSmZBYWdkRWJGaERleGdNZlJoRGNUZ2NiZ2NMYTFlRWNnZVRhbWg0ZlFoVGJWYzFjWWZSZFRhOWRPaGFiWGZRZVlnY2JFZ0ZjMGJVYlVlcGFPZ2ZjVmI5ZjlkSGRBZE1mM2hKZUJoa2dnZFZjamZzY1hiR2JpaElhUmRVZ2lkaGhDaFdjV2NSaDNnVWcxZjlhR2FQYWtjZ2hOZkhnMWIwZjBhUmUyYXhkSWJiaGhoRmNPZ2VlVWdzZVVnY2VSZzBnZGJUZ1JjbGVXZGRlR2g1YTJkSmRTaDRkVWJaYzBoSWJTZlVhWGRVZmVhV2ZCYXNiWGZCZVRld2JmaERkQ2JnYjJjTGhuaEloK2FjZGtlNWd6YUVkRWF4Y05jVWFVYmtmVmVUYW1mbGgwY1VmVGhaZEJnZmJBZlZmS2NTZDNkVWJEZGNiMGcxZk1jWmNYY0JlR2FmZlNmVmdyZFVlaGFSZnhhUmdoaE5jNGRVYTBoOWdrZmFlbGZNYVpjRWN5ZFJhRGhDZXhnbGZGYmVhZ2FrYmhoRmZtZDRkNGFKZlRnY2RNZVVmUmhSaFBmVGJ3Z0pkTGJYYW5hWWVNZUlkemFVZnBkQWd6Z1VmV2ZRYlFiVWJ2ZkRieGJBY2ZhRWRWZ2dja2dXaGdiQWRxZFljaWZkZXBmV2JTaGNoQ2RKaDFha2NjZEFjUmVSZ0pnV2NnY2hhcGRaYlFhNWU5YUFlemEwZkZjR2JVZ3hhOGhDZWxjbGNNZVVmWGdoYXdkVmFuY1FlUGRhZDFoSWRVZGNiVWhaYlZiTmR3ZEZmUGZiYURjd2JTZ1NmeGhNZmloQ2cwZ1JmV2hBYm1hRmRIZU1hRWdGZHdjU2ZqYlpmaWNTYzBmWmN4ZUZnZ2ZCZk5jQ2QxZjlkMGJPYVhhNGduY0pid2M4YTBmR2VoY0llZWVlaFVocGJDYlVha2U4YUxjWWZWYU5hWmZSZFdoSmRtZmFlUmNSZHllVGRuYU1iUWZUY0VkMWVSYlNlVWZjZUxhUGZTYUZiS2VQYmtoRWZnZkdkUWZNZ2RoYmVqYnRlemJUaEZkRmE0ZWNhRmdaYjBoRGYyZXRlU2NTZ1hnaGFLZk9jWGZoY1RkVGcyZlJkcWZVZnhna2dUY2NhQWN0ZlJnR2RCaHdmcWhGaFNkc2JWYUlhUmE0ZzlmS2VRYjRkYWZJY2tkcGRjYkhkUWdwYkVhZGNIY05kMmJOaFRlb2RJY0pnRWZKZGJnQWV6ZXRhS2NHZ0ZodGNFZFVjRmRwaGFoUWFtZDliaWVaZm1ia2VVZGNla2c1aHpnRWVFZHdkYmRFaEJoc2ZWaEdkbWdsYXBkR2RDZFFiSmNQZ1FlSmJFZkFhamhCaGZoTmhCY2dlWmZZZTFicGRXZGRkQWY5ZXJlVWdoYlJkeGZSZ2hlTmM0Y1VlMGg4YnRnTGJGZ01lUmRSZzNlQWZPYldmVWFJZFNhZWIxY3BlNWRRYVhlNWJEYVRmbmFsY0xiRmdIZUVjZGVIY1VjMGhaYVZhbmVSY3ViZGNuZE5ndmdFaGlkOWJFZlhmUmR0ZTFkQmVGZVViRmNSYUhha2R4YkZmQWFVaHFiQmN6ZVFnN2ZXZnljQmVHZWNoWGZJYlpmQ2N4ZmNlTWJSZDBkNGQ2YlBjVWdJYzFnUWRUZWtlRWFHYVJjcGcxZ1VoemhaZ01iRWJIY2djOWJBZXpnaGJiZElmZ2VKY1loTmhFZ1poY2ZQaGxkTmFjZWRnbWJjZlJhVWRFYmNmamdDZlZmQmJOZU9nSGRwZUhlWmNFY0ZjdWZTYW1nUmU1ZVNmeGhSZXhlSGFWZnNiQ2hTYTFkWmM4Y09mRGJjaGhiYmR4Z1JjbmhDZXhkSmhjZWJoa2dwZkVoVWFsZ29nTGFJZ2tlRmRDaFBhV2NKZXRmZGJCaFJlbWFSaDFia2RRaFRlRWYxZ1JkU2JSZlZhT2VhZ1hhUWdZZ2NiRWZGZzBhVWVSYTFiR2FJaFZja2Q2ZEhmMWQxYjRkSWNsYXBnMGJYZVdldGRaYkZiR2ZKZFBiSGUzZmdkRWRSZ3pnQWJpaEdma2hvYWZnY2dGZGxoWmVYaFJjSmNyaFNoMmhRYVRlYmNrZEZoa2VhYjBmSWhQZ1dkeGEwY2RlVGFSZmxiV2VkY0doNWcyZGNhMmc5aEdkWmMwZlJmWGJHZUNmQWNZZ1hnbGRJYVFoUWd6YWtiSmNXZFVmVmFpZ1plbWJraFVkY2JraDVoemdFYUVkeGVOZURhRWhBaFpjWmRHaGxnMGJHZEhnQmJCaGRnRmVGZEtmVGduY1VhWmdQYlViSWJCZEtnamM4ZUNoT2IxZ3NkeWNBZmxoRmUvZUZjVWNRYTVnQWExY2xhd2FhZ2tmNGVaY1ZlU2FWZEZnR2ZnZEpjYmFOZVFlbGhrY1NiV2FkZktjUGUxYk5hTGFGaEhhRWdkYUhmVWgwY1phVmVuZlJmdWNkY25nTWQ1ZkJlemFVYldjUmJrZ3hjb2VTZ2tjUWFhY0RhVmRoZStiRmNnY2NkaGhKYVRlSWNoaERmMWdoYk9jY2J4ZUJiTWFUaFZhRmVKaEZjVWU1aHBkZGRCZ2doNWdCYzNkUmRaYkhna2Q1ZXdiRWdXYXRmTWZVaEdnVmh0Y1ZibWRRY0dkUWhWY0llVWhjZFVkWWdUZWVhRmVOZFBmWmNHZXBhVGRHYVJiTmF3ZlhneGNFZUVnWGFTYzFnSGhLZWdiUWU1ZVNkaGFZZzRiQmVWYk1hMGZlYUVhOGNmaFZnZ2FSZDhiYmJCYlFkbWhLY1FoQWZpaFJlQmVJZmZmUGJCZ0JkVmVVYmdnbGFlZElmd2E1ZkNnTGJTZWRkbWVLZ0JhUWIvYUdmemI5ZEViQmZSYzBmZGVEZkJhVWNCaExoM2NRaE9mWmdFaHdlMmZHY0JnNGNkYmRmeGFoYm9iWmJsY0ZnNGVjZkZmWmQwaERmMmF0Z1NkRmRIaEZhR2RFY3pnNGRjaEhiV2JSYmlnQmNWZWhnQmRjZkZlbGRaZ1NieGRKY3FhWGFHYVFoVmNiY2xnUmFrYUtnMWFBY1VkSWh4aDBmV2JVaEJkbGRPYmZnVWhSZTJkY2MyZTlnR2JaZHhhWWNTYVRnSGZWZUtkRWJGZUpjRWJDZXlkZGNTYkZoaWNjY3JnTmRXZ1VkVWJJY0VkSmZ6Z1Foa2F4ZEdoVWdWZDRhY2FRZGthTmcwZEdmSGVCZkJoZGdGZkZnS2VUaG5kVWJSYWNiMGZ4ZFJnZWZIYkJlV2VJZHdkY2YvaEdlbGIwY2llU2NoYU1mcWRVYzBnUmZrZGVmMWg4Z1pnUWRYZkFhQWJXYlVnQWZiZWRjbWIxYWtkUWhXZjVkS2NaaEhibGdMZEZjSGNFaGRjSGZVaDBnWmRWYW5hUmV1ZklnWGVzYjdoRGFpZDViRmRIZGtkd2VuZVNoaGR0YlNoVmNnZ2Rjd2RDY0VnSmhrZ1ljbmVOZGdmR2JGZ2hlT2djZnhoQmhNYVRlVmFGZUpjRmNVZTVjcGFkZUJnaGN3ZlFmWGZSZ1JjSGRVZVlmaGFXZFRkb2NmYVhkWGRnYmllVmJuYThnUGFlYkZhNGhVZUlhMGFZZFllZWdFZGRnR2hmZjBoQmdUZ0dkUmVOY3dmQ2MxaGxjV2VFZW5ocGJIYlpoRWZFaDhkRGN6YkFoc2NHYlZkcGF4aFNhVmVVZkVhU2JrZDFnZWRiaG5mWmd6ZWJhMGJaY25iRmRoZEphTWdkYVJnY2RaZVhkbWQ0ZkxiY2RGZXBmQ2ZiZjJkSmRtYmFhUmJSZXljUmhqYTBnZWhIZkJoOGdlZEhjVmNvZWFjTWNDZlJhZGdmYmhiVWM3aElnaGI0ZmNlUGFGZDhjMGFUYUVleGI0ZE5iZ2RNZzZnVGFEaDhnYmhXZ3pkOWdHZUdjM2JGZ1RhRmJFZDVocWNVaHhma2JUYWNmQWh0ZVphVmRoYUplNmJSZTJjUWdYZExheGdoYWtiTGJVZXNoSmJjZVFjMGNkYUVmUmRrY0NhUGNDaGNlbGJmZ1NjTWNEY0tiVmNGYUdkQmhHYjVlZ2RFYUZnSmZFaENiM2JCYWFiUWZtaDlkaWVaaG1ka2JVZUljQWFzZ25mUmRSZTRmRGRVYlZla2hWYlVnM2ZSZXBiR2NDZlJncmhkY0ZjRmdLY1RnbmFVZ1JiY2YwaHhnUmdlZkhkQmZXaGRnQWg5aDBkVWVoZ1pmemdiZUJjTmQ0aFViMGQ5Y2toYWFsYk1nWmNFaDNmQWhMZ1dkVmFZZVNkWWdFZ2RlMGhRYVhkTmhYYmVmWGJrZ0thUmZqaFpoSWNVZUFmaGRYaEFhaWdkZ2dkT2JqY1loaGhBaFRnTmVlZU9jRWV4ZDFiU2RoZkJjU2VSZ0FidGR3ZVdna2RKY3ZhWWFtYlpkcGFDYjNhSWUrZWVlMGVRZEVoQmJBZ0poRmFGYlZmNWhsZWRjRWd4YjVjYWIzZ1JoUmJTYmtnNWcxZEVmWGFOaE1hVWVYZ2hmd2FWZW5mUWNQY2NoVmJKZlRoZmJ3Z2RjRGNLZUJlOGdXZGJjRGQ0YmJkVWJFaEJoOGJDZHhlZ2FFZ1ZlU2Y4aEtjSWZRYzhiNmRHYldmMWhpZllnUmdSZXhjSGdSYjFnTmZHYVZhWmYwZGJjbmNZYnVmWmJrZ3BhTmRGZ2hiSmFNZmRoVWVvYlFlVWZrZlFnTGFjYUZhSWFNZVljVGFJZjBoSmZrY0FjOWFHZWlkcGdBZ0NkVWVNZ1VjR2RFZEFiUGFKZlNhY2FZY2JmVWFFYXlhQmZBYlFiTmhJZlZlZ2U4ZkFlbGhGZndkSmFGZDljMGJWYUVnRmVTZkZhSGdGaEdjRWQzYWhnVGNUYzJiUmhxaFVjeGJsZmFiTmRnYnRjUmdWZzFneGUwZURkamVjaGpmT2N3Z3dnaWRQZUJja2ZjYUpiUmRRaFVoWmR4ZWxkV2dkYkdmNWEyaGNiMmY5YUdnWmV4Y1loU2RUZEhoVmhLZFJhQmVvaFdhUmVDZGRiYWNEaENob2UxaFpkaGYxYU5kSWJnYnNlV2VRYWhmNGhDYkFnMGNFZ1hnTGR6ZHNkemdUYVRhMGRFYk9oZ2dWZUtnQWJ5YkJiQ2hKaDBkd2FUYVBjWGFBZ1hiZGRHYzBiK2RGZkZmSWMwZkZjQmVGZ3hjU2dHZVZja2hhZWxmTWRaYUVjM2FBZ0xhV2NWZlllU2FlY2tmY2MyYUJlRGZvZGZiTmNqZ2RnTGRRZURhbGZVY1Rja2UwYkVnU2EyZmxndWhJYm5hTmV3Y1JobWNZYUdoRWVsZlpiMWJXZmhoQmdQaFdmUmNaaHdlRmRFYndkc2VMZ1Nic2g1Z1ZkU2ZBZExjZWYwZlFlRWFCYkFhSmFGYUZnUmhwZmdnYmN6Zkpmd2NRYlhjUmhSY1Nla2c1YzFhRWJYZE5iTWdEaEhoRmE4YWZjSGdRaFBnYWQxY0ljVWRjZFVmWWNUZ2VjRmdOY0hiS2dtZ1FiRGZTZDFhd2drY1JkQWYwZVBnUWVqZjlnSmRMZVFhOGc5ZkdnaWVFZzZjSGd4YVJoc2FIYlZic2FZaFZkeGNVaGdnSmF6ZGthOWZiZDBhNWh1YUZna2NsYm1jZGFVZG9nUWVVY2tlUWFMYWNmRmNwZkNlYmYyY0pkbWVQaDFkVWFnYVRoaWVjaFFhVWdVYjFlVGJTYnhmbGNrY2FlWGVRZllhY2JFYUZkMGNVYlVmcGdPaGRlUmFGZ3pjVGZGYUVmeGFjZUVndGQwYlhlV2NVYTdlZWJnZUliMmFkZWhnc2duYk1hQWdrZkxmS2cyZFpmeGZDZFhlOGM4Y0pnUWhsZ1FlUmYyZ1JnQmdiZGtkcGJrZ2VmVWhzZVVjY2JSYTBjZGZIaDFid2hDZkliVGN3ZTRkY2gyYmRhc2ZaY3hhWWJTZ1RoSGdWZ0tjRWRGYUpiRWZDZTNkQmNhZVFlbWQ4YTJlTGJpZkJiSGRmY0FmSWMyZlhlZ2VzZlpiR2JVZmtkTGJUZW5hbGIwYUhjbmNaZHJjZGhGZEZjS2FUZW5mVWZSaGNmMGJ4Z1JnZWVIaEJmV2RkYUFnOWZyZlVoaGZ4ZTVhRWFoYU5obGhVY3hic2JzZ0lid2ZBaFhjUmJ6ZTllNGREaFFlUmhiZk5iQWJCYnNjUWN5YVliUGhQYUhjdGRIZ0ZiR2dFZVJjSGNRZ1FlUWRXZURka2h2aElmamhBZm5oVGNtY2doWWJTY1ZiNGdvY1JjVmhkZWJiU2drY0VhL2NFZHdleGFuZ1lnR2RaZHJhSGhYYXRmQ2dXZ1JjQmJNY1RhVmhGZ0pjRmdVZTVmcGZkZ0JlaGZ3YlFmWGRSY1JiU2NrYzRkaGdXY1Rmb2ZmZVhiemdRZDFoR2ZEZk5nYmdJZTFoSWNLYmNiUWE4YVRhZmVsY1ZjUGhiZERnNWFUZkViZ2g1Y3dhQ2hWZWxoWWZIZUhkUmZIY1pka2doZW5iUmRrZjVhNWZTaHhjUmV4ZUhnUmExYk5kR2FWYVplMGZiaG5hWmV6aGJmMGVSYTdnZGhFZmNkS2JNZXdjOWRDZ1Via2NZY0xnZWIxZ29hV2RiZzJlbGZtZmFjd2RwZndnWmdIZU1nUWdUZEVkMWhSYVNkUmJWZk9nYWRYZ1FlWWZjYkVkaGF2YWVmMGNwYU9kZGJSYkZlemJUZ0ZoRmU0aGNkRmZZY3BlQmJtYWRhNGdGaEhjRmZHYkVmM2NoZ1RmVGUyZlJhcWZVY3hmRmZkZGZnbGZzYUxlR2dVZFlnMWJFYnpnMGRSY0tkMGdRZm5jTmVnY1phRWJNYkVmOWNZY1RoUWhSZldlTWFqZHNoNGRNYURlc2JQY0tkRmdnZFNnUmRDYUZlR2hFaEFhQmFJY0NjemhsaFdhUWFpY3BidWVaYWloWWNkZWNnaGRWZFpoRWZFZXhlTmVVYVVia2RWZ1RjbWRsYzBiR2RIYkJiQmRQYVJjZGFLYlJkbmJSYmZkZmFRY1VkQ2RHZGlkVWRRY01na2hvYjViV2VrY0JoNGZUZ3plbGU0Y1VoMGg5ZmtlYWJsZk1hWmRFYjNoQWZMZldhVmZZYlNjZWFoYk1hc2JFZHljRWFkZVplRGJjYU9lUWEzaEZicGZSY0JjMWhjZE1heWhZaDhkT2RTZEZmbmZSaEFmWmZFY1ZjUmNraDRjRGcxZjRnR2RSZUVjWWJsaENjUmdaZ3ZnSWZDYU5lcGFWY1hnSWZzaEpibGJZYktmQ2dBZU5kTGdIZ0ZiVmREZ2RoQmRoYndoUWNYY1JhUmZTZmtnNWIxYkVhWGdOY01kR2VEYzVkd2hYZmxoNGhQZGFkMWdJZFVkY2FVYlllVGNlaEZkTmRQaFpkR2FwZVRkR2JSZnNibWRSZ0JjQWdTZkVhbWVwZUhjZWFWY3hhemRTY2pjWmU1aFRjUmNKYXhmRmRVYTlnTmNCYkZiWmRrYVplM2NwY1piYmQwZVpmbmFGY2hjSmRNYmRjVWdvaFFiVWhrY1FlTGRjZkZnb2FVaEllQ2ZzYmliYWNRZlJheWVVYjJkNGdOaFRoQWNSZlJjVGN4ZE5jT2JZYVRkMGVZaGJkVWJFZWdlVWdWYVZnT2dJZFJmOGEvZUNnUmM4Zy9iSmZCZjVhMGVGZFdidGZDZkhiWGgxZXNhRWczaGhmVGhUZjJlUmdxZVVoeGJrZVRjY2VBZ3RkWmNWY2hlSWJzZUNlQ2IwZkZjYmVsaHBka2daZ0ZnWWFKZGNmVmZnYmRmU2h4aDljV2NmaENidGMyZmJhbWc5ZldoYmdoZW9kNGdUY0hnVmJLZEVjRmVKZkVoQ2UzaEJjYWhRZG1kOWZpY1pibWFsZENhUGNRZGNjM2JFaEZheGROZFRhRmdRYkloVGdpZVphMGVIaG5oWmFCaGZnQmI1Y0tnVWQzZVZkRmJPZHdhVWFDYWRkamF3Y1RhT2VrZWdoL2VHY2hhMWc5aGJoQmZOZDRlVWcwYTlja2hhYWxkTWdaY0VoM2FBZUxnV2ZWYlliU2dhZWtlZGE2YlFnVGF4aEtjT2RDZ1ZoTGRYYVhhRWREY0hoUmhraFhhR2ZqZUVlZ2VNZVNiY2NuZlJiamV0YktkRWRsZHhhMWRWYUJnQWZYYlJlRmFjYXNjV2RnZDFkdmRmZ0dkWWI5Y1hhRGVzYWRnZmZWZHdhSmdBZnhmWWJkZlhkVWNkZERkZGRCY2hld2dRZVhnUmFSY1Nja2M1ZjFjRWNYY05lTWNXZ0ZoSmV3aFZlbmNRZlBjYWYxYklhVWhjZ1VjWWhUYmViRmhOZFBlWmNEZjRhYmhTZDFnd2huZUNleGFjZ1RiUmhYYW9jMWVKYlFkOGFwY0Rhd2FFZHJjR2JWZ3NmamRGZ1JhOGJDY1RmQWFKYzBmSWVUYkJmemJQZ1FnY2ZwZ1VlVmhkZE1iUGZBZlJiVWZGZXhnd2hKZmVmVWRGZ29nYmIyYUpnbWVhZ1JoUmZ5YlRibmZNZVFjVGZFYjFnUmFBaEZmTmFPZVljVGVFZ1lhYmVsZ3hlMGRIZWtmcGJJaGNkeGZFYmhnVGdFYTllbGVjYUJhOWU5ZkRmemJrZVhkUWRDaFFlVWNYZlhoaGJEZFZlRWM1ZXFjVWN4YWtlVGVjZUFodGVaaFZlaGRKZzZnUmgyZFFnSWdLZUVjcGFzZlBoRWNzY0thYmVCYjFnU2ZSYUJma2RFaE1iVGdvZGpjSWZTZkZkR2hhZ2dhY2ZKZVpmbmFWYUtjRWVGZkpoRWJDYjNjQmJhZVFjbWQ5Z2loWmhpaEJoU2hjZWtjWWJoZ0VkRmRKZlFkVWRRZkFkY2VUZGpkc2d4YlRnQ2ZVZFRjT2NsZEZnYmNWZVZmOGhSZmNhMGN4YVJkZWFIZEJiV2dkZ0FlOWFyaFVhaGNRYzRlQWVCZE5kd2NXZjBnY2MyZmFla2QwZ0hnRGdXZDBnTGFTaFZkOGVlYWVja2g4YnRhUWdYYUJoVWRlaG1oUmVMZkJmSGJnZ1JmSGZVZVZhY2VWY21kcGZ3YWFiR2U1Y3ZoVmNtZjRlYWNFYmtiUWU2Y1NlZ2E1YU1nV2FoY1pld2RTZ2tjdGRqaFliamZJYWhkWGdTYUZnT2hiZGdmMWFSZ1RlUWVWaEFmSGdHZVJjcGRkZ0JnaGJ3Z1FnWGRSZVJkU2JrYzVhMWdFZ1hmTmhNYlVmU2RvZjFhQWZpZkZiZGNKY1ZoSWZFYmFhbWF3ZlRnZWNGYk5lUGNaYUdhcGJUZkdhUmFOaHdjQ2gxY2tlUWVYZVNlaGVIYWJlR2F0ZXVnU2htZ1JiNWRTZXhjUmR4ZEhjUmcxZU5iR2ZWZlpoMGdiZ2ljQWh5Y1BlVWdZaHZhRmVnaDlnTWZPYWthb2dkYlVmZ2dFYUhhV2RsYnBiQ2RiZjJlSmJtZWFnUmFSaHloVGVuZU1iUWhUZkVoMWFSZlNjUmNVZmRnYWRXYmthWWVPYVVnRmU1aFVmUmdoZkNhWGV4Y0ZhemVUZ0ZhRmE0ZWNnRmZaYjBhRGEyYnRhU2VGZEhoRmRHaEVmM2ZnZVNjVGMzZWxocWhQZWxnaGNIZE9mQWVVYlVjSGQxZHhjeWVEYTJoaGFCY1BiVWFOZG9mVWEwaHNjVWNjZVJiMGFkZlRiUmJsaFdhZGNHZzVkMmFjYjJlOWNHZVpmeGdaaEhjVGRHaGhiS2ZSZ0Jlb2VOY1djSGQ0YUpmRGRpZFloaGVJZzJmRmVSaGZma2g0YjhnR2JVY0JmbmhVY1Vja2RWZVRobWFsZDBlR2ZIZUJjQmdkYkZlRmVLZlRibmhVZFJhY2J3Y3BnUmJaZlhlQWRDY2VibGN3aG5oR2gxY2NhMGVUZ2tlRmgwYlVnd2JaaHRmWmduZGtmWmZFaDNmQWJMZVdiVmRZZ1NmZWRrY2Rma2JRZ1dkNWdLZVpkSGdsY0xkV2VIYkVhQWNIYVZkMGRDYmZiSGFSYnVjZGVuZU5ldmRSYW1nY2JXYUVka2R4YzFjU2RoZEJiU2dCY1FidGJ1ZFdkZ2Q1YjBlU2ZHY1pmcGhGZEhlSmdPaGNieGJCYk1kVGVWZkZmSmRGZVVkNWVwZWZheGhNZjhnYWczaFJoUmFTaGthNWUxZEVlWGVOYU1kVWJYYWhjd2NWZm5lMGNsZ2FjMWVJZlVhY2NVYVlnVGRlZ0ZmTmNQaFphR2RwYVRmR2NSYU1nNWZUYVZmbGZlZ1Jld2NFYUxnR2JVYUZndmdWZzNkbGI1ZURoV2g4YTljWWNCZ1JoTmJRZm5leGgwZWJlbmNaZXphYmQwYVpmbmdGZWhiSmJNZ2RjVWRvZ1FhVWRrZVFkTGRlZEJmSmNDZWNmbWFJYXplRWVsZGdkUGFSYTNjOGdRY1JjQmQ1Z1JhVmRCYVVoSWhFaGpmaGJsZmVkVmNwZGVhVWVVZnBhT2FkaFJlRmh6Y1RkRmJGZzRoY2VGZlphMGNEZjJidGFTZkZoRGZNZVVkVmZqZWtnWWNWY0VnNWhxYlVjeGRrZlRiY2ZBY3RiWmdWY2hnSmU2ZFJnMmNSYUJkYmdoZ2RnT2dlZVVmc2dVZWNlUmIwY2RhVGRSZmxiV2dkaEdiNWgyYUlnU2hvZlNoTWVrYlJoY2NUY0NkWmJLaERnbGRJZU1oQ2UyZDljYWNUYzNnNWVpZ2ZnR2JsZ2NkY2VsZUJjemdRYTBoeGZTZlVkVmJnZVZhVmFHZmxka2VBZjFncGVCYmRkRmJGaEtoVGhuYlVhUmFjYzBieGRSZkplWGVsZGFoWGNnZjllcmZVYmhiUmN4YlJoaGZOYzRhVWUwZzloc2JKZEZoMWNKaFFlVGQ5aGZkRmNnZUpjTGVLZWdjSmZxZkNnQ2ZBYUphS2JDZXdkUGZVYlNnSWRkY0FmRWUxZ2ZoQWd6ZG9odGhJaGplb2FnYkNoR2djZ2VnUmZrZ0JmMWdHZ0JmeGJTZURkUWNKZHdnQWNXY2hidmNZZW1nWmNwZEZkSGFKZ09mY2V4aEJnTWdUZlZnRWRiZVVkQmJvZThnSmdsaFpod2VUZ0diVmVSZlNoMWJOZ29hRWRTYWNnRWVHY0NidGIrZEhkemZwYUxjTGVnZXBhN2ROZDBjNWRIY2RoRmhNZ2RjYWVHZm9oYWZFZUFjaGJhZ0NkMWZsaFdkRWhuY3BlSGdaaEVhRmF1YVNnamRsZndmUmF6YzVheGhIYVJlMWhOY0dhVmNaYTBmYmFuY1pnemZaYXdoaGVwY1Jja2JBaERkSWhRZ1ZnRWNDY3hkUmVPZWZkaGNNYk1kS2R5ZGNmK2NCZWxiSmR5YlVmM2VOYldhR2FRYk1jU2JIYVZmd2RCZUpnM2RRZVFjSmhFZTFnMGJBYTBnWmRPZFBiQmVoZHpmRmQzZHRoNGdjZEZnWmUwZ0RjMmF0ZFNlRmNIaEZjR2JFZjNoZ2RCZUNhamVBaC9jQWNWZmNlVGVKY2dkTWFOYUhlbGJzZ3BnU2YyZlFoVmJZZmtnb2cyZGRjVWR0ZmRmZmNSZzBoY2FYZFJoQmJOYlhlbWY1ZjJhY2YyYzlnR2VaY3hiWWZTaFRjSGRVY1hlR2RWZDVndWFDYTNoQmVhaFFjbWM5ZGljWmhtZGtlVWJjZWthWWE5ZUhoaGF3aGZkSGZoaDFjYWRHZGpnQWRrZlhkWGg0Yk5jTmVRY0lkZWZKZ3pkdGVWaE5laGRRaCtkUGJuaEJlTGdkYUVoa2crYUhnRmJjZGxiRGIxZHdhMmRVZjBkY2h3ZVpmbGFOYUxnSGgzYkJoQ2NVZUZkWmdKZlVmRWRkYmthUWZXZDVnS2FaY0hobGRMYkZhSGNFY2RjSGVSYjllY2VBZmlkRWM4ZE9hSGJNYTVoVGFqZU5oZWhXYXhhOWM1ZVNka2VSZGVlUmNGZGxnOGRXYmdidGRqZVlkbWdkYTRiSGZXYWxma2VjZHhmQmJNZVRiVmhGaEpnRmNVYzVncGFkZ0VoVmc1ZFRlVmM1aFJhU2drZzVnMWFFYlhmTmFNYVViWGRoZ3dkWGNqY29nQmJPaHdlQmViYUphUWVsYUhlSWdRaE1nS2dhZmpjMGFCZ1ViRWFjYjFiQ2EwZFJjV2NWYUNoOGNKaEpmeGRVZm5nQmRTZXBjNWJRZjBmQmI5YkhnVWM5aEJnR2FSZDloNGhiY2plTmQ2ZGJleGQxYk5mRmhoYUpkTWNkZlVlb2JRZlVka2FRYUxkY2ZGaHBiQ2ZKZmlkUmVtYVlmVWZJYTlnQmN6Y2NjUWVYYkVkMWZNaFZmQWRoY09oT2IzYzBoWWZlYkFiUmYwZlRjRWhwaE1nSWJFaFVmMWVWYUZnTmZ4Y2ZhRmRaZzhhUmNtZ3RnUGJGaENiVWNPYldhaWV0ZGRoQWR5YkVla2JGZUViMWFiYWVhUWFkYVpkWGJrYUJhNmFXZ21hUmNSZFplMWFGY09jZWVVY3NjVWhjZFJkMGhkYVRiUmVsZFdkZGdHZDVhMmJOYWlkTWVWZUllaGRaZmJnQ2NuaFZiQ2RSYWhjMGNOZFRnM2VCZUtnUWNuZUpoL2NlYzJhbGFkY2Nla2hoZDFhRWhFZDRmZWhCYVJmdGNjZkFiQ2c1aDJmR2hHaDFnY2dkZUFkVWJUYUhnamFCaGVlTmZVYndiRGNjZ1ZlcGRXZWRmQWI5ZHJiVWZoZlJieGRSY2hoTmI0ZlViMGY5aGthYWhsY3RjY2hFZjJhMGFMYUNmMWU4YWVlZWhrYzhmdGVRZVhhTmhLYk1nRGhFZENnUmIzYTllUmNXYkFkTmNlZkFlamR4Ym5oZWhuYk5lbmVGZUdmY2RMZ0VnbGd4ZDhnVWVUY3BmU2NSZkFmdGN3ZFdna2NKZ3ZiWWRtY1pkcGFGZEhoSWRMZ1BiMGZNZEphVGdRZXBlamJGZFVkNWZwY2RnQmhoaHdmUWhYZVJlUmVTY2toNWMxZkVlWGFNY0ZnRmczYWhiNGdWaHpnMWRjZkRmUmF0ZmFlT2FCZ0phV2RjaEFiRmdHZGJmVWZCYVRlR2hSZ05md2hDYjFjbGRXYkVobmdwYUhoWmJFZ0ZmdWdTZG1kUmU1ZEhhMWN3YmplVWFrZnBlTmVWZHhoTWZqZGJnaGhNY2hnUGRRY2tiMWdIaGpkaGNNaGRjVWdvaFFhVWFrZ1FhTGNjYkZhcGZDYmJhMmZKYW1mYWNSZ1JjeWRUZW5mTWJTYkxlaGdnY1hnRGgxZ0FlY2ZaYnllTmdLZU9lUmNVZ3hoV2hSZmtlYWNKYzFiZ2E5YUNoMWgxYzRnTmFSZ2doM2ZRaENiOGViZldoamVaZEtmRWd6Z2NkVmNDYVRoY2V2ZEJmMmdJZGZoY2VFY2NnY2hHZkZkVWR1ZkRieGVsZklhYmFnYU1oM2RlYVFkVmZiZmNjVmRGZlNhQWIxYzRoVGhKYm1iNGRsaEpjamI4ZVdhS2NFZFJmR2JDZVRlRmRJZE9obGdKZUVkQ2EzY0JmYWNRZG1mOWJpZVpmbWdrZFVhY2ZrZjVkemRFZEVieGRFY1NkbWJNZFZnVGZtYmxnMGdHZUhiQmVCZWRnRmVGYUtiVGRuaFVnUmNjYTBkUWREYmVjR2UxZFdmWmJBZThoM2FVZGtlWmQ0Y1NmamdsZjRiVWEwYjlia2hhY2xhTWZaZ0VnM2VBZ0xhV2RWZFlmU2FlZWthZGZrZUNoRGEwZHNkTGFUZWNkQ2JRZERjUWRWZ1ZmRWJRZnpiVmVuZVJkdWRkZm5oTmN2YlJobWZjaFdjRWRrZ3hlMWRTZGhiQmJTZVJoQWh0Z3djUmhVYkpkbmRhYWlkOWZwZUNhWGVKZmVoY2UwZ3hhTWVCYUZiaGVGZ0ZmUmFnYm1mUGdWYXhid2dVZFhkUmhNYVZoMWJOZDFlVmZIaE5hS2VWYTNkaGQ0ZEVhM2ZRYlNnYWcxZEJlQmZKZlFlQWRMZGVkbGRwZkdkVGVtY3BkVGVHYVJhTmZ3Z0NjMWFsZldlRWVuYnBkSGhaYUVnRmZ1YlNkbWJSZzVhU2V3ZjVheGZGaFJhVWVJZkdnVWd0aDBjSmEzYzlkL2JiZjBoNGJ1ZUZiZ2U5Zk1lSWd3ZlZiWmdGZ2tmUWFiYWVnVmZOZlpmUmNXYUplbWFhZFJjUmZ5YVRkbmNNZFFoVGNFYzFmUmFTaFVoaGRrZ2FoWGZRYVlnY2FFY0ZjMGZVYVVicGNPYWRlUmFGYXpnR2NoZkFmcWRjZEJnbGIwZUVhbWNzaEdmWGVEYmdiVmZIZVRkUWFXZkFnU2NNYytkR2R4Y2tmZWFjZUZhbGJDaGZiQmVKYzZlUmYyZFJhQmZiYmthcGVrZ2ViVWdzZ1VmY2dWY1JhYmZUY1JmRmE4ZGRkR2Y1YTJoY2cyZzlmR2RaZnhnWWdTZlRnSGRWZUtmRWJGZUpoTWdBZ3lnWWRWYkNmeWh0Y2lhZGFtZWtjSmRiYTFmTmd6aFdiVWV3YlJkRGFVY2xnY2JUY25lZGYwZlZiM2ZsZUJnY2FsZWRkS2ZSYmpld2JSaGJka2V3YmVmY2VYYXhjOGJkYkFnOWFyaFVoaGZSZnhhUmZoZ05nNGNVZjBkOWVraGFhbGZNYVJkUmMzZTVoSGJIZUJoaGdWZkxiZ2E5ZmtoWGEyYjVnYWFaZ0hiOWdOZkZnSGZrZU5nSGFWaE1oWmJIYzNmUWh5ZEtjbmFOZS9iUmZuZWtmV2ZRZEVjVmE4Y1Nna2Z3Yk9mUmRGZGxkd2dSYkVjSWU3ZEtoaWM4YTZnR2FqYjRiTGNQY1ZkY2FZZkJhVmNoZGphRmFVZTVicGVkZEJmaGJ3ZFFjWGVSYVJlU2ZrZTVoMWVHYkZnbGdNYVVmWGFoaHdmVmJuYVFiUGZhZjFkSWJVY2NiVWNZYlRhZWVBYmNhSGNOYmlnVWVFY0dmVmEwYzFkWGdGaGtoa2FVZnphUWRBZkllU2hRYzhmR2RDYXNmcmdRYnhmWWJRYVNiVWZraEllVmJBYVlkZ2RiYWlhSWM4YmJieGFFZTFiWGgwZFlhSmhkZFFiVmRGYkJiaGNkZENkTmNCZTliQ2JMaFRhY2FnZUxhMWhFaGdmVGVqYkZmZmVHYlFkTWZWY0dnaGJkZkhkY2dsZzRmWWJjYkVoRmEwaFVjVWVwY09hZGJSYkZmemNUYUZmRWY5ZGNhQWVvYm9nRGMyY01hWGJGYkdheGNHYkVjU2cwYkhkQ2FYZ3hmb2dXY2diSWg1YWNnQWV0aFpjVmJoY0pjNmdSYzJlUmVCYmJna2ZwYmtjUGR3Y1JmR2djaFJlVmNMaERoRWF0YldnUGNHYzVicmRjZDJkNWFYYWZkQmVZZUpnVGJIYXhhZ2NFZEZlSmVFYkNhM2dCY2FlUWRtZTlmaWVaZm1la2RVaGNna2E0Z2diUmh3ZlViWmJFZmdjRWJWZVJmaWd4ZTlhR2FDZXRncmRkZ0ZmRmhLYlRlbmVVZFJjY2EwZHhlUmhlYkhjQmhXY2RjQWM5YXJhVWVsYmNhd2FGZVZkWmQ0YVVhUWRjYmhhTWRsYUVoRGNPYlhiQWFMaFdmVmVZYVNmZWVrZ2Roa2RRYldmNWhLZFpnSGhsYUxiRmRIZEVlZGFIZFJjOWdjZUFlaWhFYjhoT2dIYk1jTWFUYWphTmhlaFdoeGc5YTVlU2NrYlJmZWJSYUZlbGY4aFdhZ2N0aG1oZWZVZnhkcGZGYUhnSmdPZWNleGZCZU1lVGJWaEZkSmdGY1VoNWJwZGRoQmFoY3diQWFqZlVkQ2FEZjBoNWgzY1JmQ2ZjY0tjU2RYZ3BocWdmZkhhUWJQYmFiMWVJaFVjY2FVZVlkVGZlZkZnTmJQZFpiR2FwZFRiR2RSZk1jemdTaGdkb2dUZ0VobmhnZFNkTWVBaGRkamdVY21jWmRqYVljUmVSY3hjSGNSZzFkTmJHZVZoWmMwZ2JnbmFaY3piYmgwZFphbmRGY2hmSmZNY2RoUmRoYlZmQmJoZEZlWmNQYWxob2FBYVpoemVZZnViSWJFaGRlK2hUaGllY2RjZlRoQmE5Z2RmU2dWY3hhSGNjZGxhNGRZZWNlRWdGaDBjVWZVZXBjT2dkYlJoRmh6ZlRhRmJGYzRnY2ZGYlpmMGZUZkNob2dCZ1VhWGJGZkViVWFpZnNlUWhCaGllMWNvZ1NoVGRNaFRkY2JBYXRkWmNWZ2hkSmM2YVJjMmRSYUJjYmNrYnBia2RlYVVjc2hVZGNnUmExYVBhQ2ZFZjBlRGJKZ2liQmUyaEZjbWRjZFNlTGUxYzlkQmNRZkhmVWFlYkhhRmZJaFdhQmQzZ0FjVGZTYTNlUmhJZFplbWZrZlVnY2hrZTVlemhFY0VieGFOZFVoVWFraFZiVGdtY2xlMGVHY0RhTWNBZUpieGFSZktkVGJEaGxnUWZKY3djVWJmYmFkWGhKZ01lWGFnYjlhcmhVZmhnUmh4ZlJoaGdOZTRlVWYwYjlma2RhZmxmTWdaZ0VhM2ZCZUlmR2hBZlZjWGNlYWtnVWVtZ0NlQ2hBZUxiTmZpZUJoSmVEZGxoc2dkZUhnVWgwZlphVmhuZ1JhdWRkYW5hTmF2ZVJhbWVjZldiRWZrZXhhMWdTZWhmQWVBZUFiVmY4ZGxkQ2RBY3hmdmFFaEdhNGg5ZFhlRGZzaGRiZmd4Y0FmWWdRY1ZmRWViaEdjVWQ0ZGdkZmFRZk5lYWFRaFhnUmZSYVNka2g1YTFmRWdYY05hTWdVZVhnaGJ3Y1ZmbmFRYlBjYWh4Y0ZlVmVJZWdoTWFUZWVhaGZFZk9mTmJ5ZzlhRmFEYVJiRmJxZ0lmVmFsaFdjRWVuaHBlSGdaZ0VkRmV1Z1NhbWRSaDVnU2R4aFJleGdIaFJiMWFOYkdlUWVRZnhkT2ZpYk1iaGVJYVVnWWYvYUhia2JZaEVjUGdCaGtiY2RVY2hlQWZIYmNoQWNoZk9mYmV5Z3RldmRjYWpoNWJ5ZlRjbmNNYlFiVGRFZDFmUmJTYlJkVmZPZWFiWGRRYlliY2hFZkZiMGNFaGdlc2VkZk1iQmNGZnhiR2ZSYklmcmJZZGxlUmZ1Z0piV2Z0YVNjRmRIZ0ZnR2hFZzNiaGhUYlRoMmdSY3FjVWh4YWtiVGhjYkFjc2NhZUZnMGNFZi9hUmUyYVlnVWRMYVJnbGJwZWFnMGZrZU9jV2d4YjBjZGJUZlJmbGRXZmRkR2c1ZzJjY2MyZTljR2RaaHhlWWFTZ1RiSGNVZ0phVWdRZEVnQmdDYTNhSWJQZ0ZnaWhsZnpoY2FDYlZoUmVjZ0ZjUmhaY0VlRWd4ZU5oVWJVaGtlVmZUYm1hbGgwaEdnSGZCZUJoZGRGZEZiS2FUZmpjWmhRaElkQWNsZlJiZWZpaFVnQ2dNaGdmSmM2ZlJjRmNnZzBjUmhBYWxmU2FVaDBkOWVrYmFjbGNNZVpoRWczZkFhTGJXZFZoWWZTZWVma2FkY2tiUWNXZTViS2ZOZmpkd2dmY1FnU2FOZVRiSGhTZThlUmVBaGpnd2huYUplWGM5YnZlRWdtZXNjV2RRY0VhQmIxZkFoeGNsZUpjYmhnZHRld2FXZGtmSmV2Z1lnbWNaY3BoRmNIaEpkT2RjZnhkQmFNZFRjVmZFYk5jVWdBZWdlb2VJYlZoUWJrZ1diMWE1ZFJjU2drYzVmMWRFY1hiTmVNZlVjWGRoYXdhVmNuaFFiUGNhZjFiSWdVZmNmVWVaZmFmUGRsYU5lSGFMZ0djTmJUYlRhVmdzaGlkUmhBZDVoV2VYaERhOGJRYlpjRGJVYTNjR2JpYUVjY2VHYVVoWWQrYVRkeGhWYVBlYmJCZWdoL2RJYURma2NrYUlnVWRZZWlmV2hGZUVlRGhNZlFiTmdlY0ZiVmM0ZkxiY2NsZnBmSmNiZXlhZGd2ZWNlamM1ZnlhVGduZE1hUWZUYkViMWJSYlNnUmhWY09mYWFYZVFkWWhjZEVmRmUwZFVmVWRwYUdlTWdCZUZndWJUZEZjbGE2ZGNmbGhaYi9iRGZ5ZTVoYmRHZWliVWVKYWZkemJjYUVoQ2dqZFllSmJFZWticGRXZ2ViQWVKZ1FhV2VoaEpleWFEaDJnUmdjY2Jha2J0YjBoY2hGZUFmK2RjY1JnMGZkaFRnUmdsY1dnZGNHZzVmMmVjZjJmOWJHaFpkeGZaY1BjWmNuYVZiS2NFYkZjSmFFaENjM2FCYWFhUWdtYjhoL2ZiZzJlVWErZmNoa2Y1ZXpkRWNFYXhiTmhVYVVla2ZWaFRnbWRFYzZiRmZpaEFlVGhPY3djVWFGaEdkaWR4YkJhTmRrY0lhRmhOZXhib2FsZ0dhMmNGZ3JiVGJ4YlFjM2JFYTFjMGM3Z0Jod2hZZXJjSmVGaE1oUmNHZW5mQmFRZWNhMWhZYVNkZWhrY2Rma2NRYVdjNWdLY1pjSGNsaExjRmFDZE5iWWRTYlJjaGRMaEdmSGVRZjFnWGJIZE5kdmZSYm1mY2hXYUVla2V4ZTFmU2NoZEJhU2NSZEFldGF3aERjaGVzYi9lSmczZnhmcGdGZGhkQWdiYU5iVmJZYUpnSGYxZE5jRmNQYzBhNWdwYWRkQmhoaHdnUWRYaFJjUmFTYWtmNWUxZkViWGJOZU1oRmRUY2tma2FGYjJlNGdQY0NnZ2NCaEdjTWVCYzhoZGhLYUFkRWFBZE1iQ2NVYkhjUWJFZk1hMWJCY1Fkb2NhYVdmemJrY0NnYWdnYklndmZCZGljaGZ4Y0hmMWd3ZzRjVGRoYU1ieWdXaEFhUWZtYmJnaWRvYnZkYmh4ZkljdmNYYzBiRmRBY2RkVmRvaFpjWGhtYjRmTGVjY0ZjcGJDZWJiMmZKZG1jYWhSZlJkeWRUZG5mTmVOZ1ZnMmNkZlJoU2ZSZVZjT2hhYVhmUWNZZ2NoRWdGZTBoRGRFZE5nVmZYZXhiRmN6YlRnRmhGZjRkY2RGZFplMGhXYlNhb2VBaEZmQ2hVZ1NoRWQyY1ZlVGZXZzNiUmd6YlJhUWJJZjVhY2VBY3RmWmVWZGhmSmg2Z1JmMmFSYUpjSWFFZlFmMGhLZXdnUmFBZVBma2JsYkViSGhWaHhoWWJKY3lmSWYvaE1hQ2NwYkdhZWdoYVplVWNHZFRic2RKZFJkQmFzZkxhUmJYZEJkU2NGaG1jTmFpYU5iR2FBZFVoS2ZXZ1JlemRFZkVoeGROYlVlVWdrZ1ZhVGFtYmxmMGdUZ2poRWZUZWRlQmZoZEtmVWQzY1ZoRmRPaHdjVWFDY2RjamJ3Z1RlT2NrZ2dhL2ZHZmdkOWdiaFJmaGJOZzRoVWgwYTloa2dhYmxnTWhaZUVoM2hoZmZoV2dVZnNmU2JKZ0Jna2F3ZVNiR2JKaGdjWmFIaGxlTGhGY0hkRWZkZEhmVWcwZVphVmduZ1JidWhmYmloRmZ2YVdmMmhkYUFnWGFRY1VoeGFTZ2dnQmZTYldjUmdaZXRiV2ZoZUJldmZmZFdhWWFnaEZiR2hoZ09mTGNVYjRmZWVSYUZoMWJqZ0ZnVWc1YnBlZGZCZWhod2FRYlhoUmRSY1Nia2M1YzFnQWhYZk5hU2hVYlNmeGR3aFNoWGhRYkhnWWR3Z1ljVWhlY2xoc2ZUZE1kVmZwZkRhWmhIaHBnVGdCYXhhTWNrZ0NjMWQ5ZlFhRWRuYkllVGNaZkZkeGJ1Y1dkbWcxZ3dkU2Z3YjVneGhTZlJlMWhUaEdlUmM5ZTBlYWJIYkJhemdaYnhlSmZuY0NjeGhJZ0ZhZmZFZ1llNmRVaGtjUWFMYWNkRmNwZENkYmgyYUphbWhhZVJnUmJ5Z1hjbmFNYk9nVGNCZDlmUmJWYmhnVmFHYlliU2dZZVlmZWExZnhiMGNHYUVnTmJDYWRnUWNGZnpiVWdsZ0VmcWhjYUZkQmh5YURmMmhNZ0FmRmRHZHhjR2VBZzNhRmRhZ1RmM2g1Z3FmQWdSZGtkTmRjZEVhSmVaZlVmQmJSYzZoVGF6ZlpiQmhjZTBob2Z0YmNnRWZjYytmY2NSZzBjZGdUZ1JhbGNXZmRoR2U1ZjJnY2UyZjlmR2RNaHhnWWNNYVRnQ2RkZ0tiRmJsY1JhRWVBZHloSmRhZFhjMmI4aDJoYmgzYkljK2djZ2tmNWJ6aEVnRWh4Zk5oVWZVYmtnVmVUYmplOGQxZFNjbmNBYkViYmEzZHRhS2dUYm5hVWVSZWNnMGV4YVJnZWFIYkJiV2dQZlVkbGFyY1dobGFwYS9hTWVtZG9jSWROZ2lnc2ZiaENneWNGZXJoY2RnZGxjMGVLaGllTmJpZkNmaWZnZFdoTmRXZGRlZ2FaZ0hibGVMYUZkSGZFZGRiSGdVZTBhWmVWZ25lUmF1Z2ZoamhaYXZhV2YyZGRhQ2JXYWdiVWNtYlJkRWdNZEhnQmRrZ29oaWVDY0FoTWMyY2FlamJKYWxkRmVDYUJnSGRlY2hjeGNNYlJoUmNSZ0hnYWFqZ0VhNWhKY2xiY2hrYkRlZ2ZzZXVhU2RsZ05mMWVYZDNjMGJjY0FnemVjZGtmR2FTZ0JhV2dPY3hmY2VkZ2FjbWd3Y1RkZWhGYU5oUGVaZkdkcGNUZUdhUmNOZndiVGVoaFVkRmdWZTNlb2JjY1Rka2ZGaHVmU2NtZVJkNWdTZnhjUmh4Z0hoUmgxZE5lR2RRZUFmMWJQZEhiWWg4Z2JlMWR0Ym5jUmJCZ0poQmZkY1JkNGZMZGVhRWdRZkxiY2RGYXBmQ2diYzJkSmhtZWFlUmRSZXlnVGZqZVljUWZVZlVkMGNmZURlRWZKY09iSmMzYnhlWGdmaEVkRWJpZ0hjZ2JNYktoZGZRYkZhNmFWZDNjdGU0ZGNjRmFaZzBnRGQyYnRoU2FGZUhoRmNHZEVjM2RnYVZnQWhEZVpicWRXZTBmOWJTYkliZ2ZzZ1JiVmZnZjlnNmJWYzNiOWhCYUlnVWFwYTZmZWNRYU1lUGhjZVJmWWNXYkJhUmJCZ1dkTWVSZ1ViK2ZEZW1nOWFiZFphMGhKZ2FjQmVTYVlmeGFXZEZjSmVQaENjeWdRYm5iV2JVZ1ZjaWVaZG1ma2FVZmNna2I1ZXpoRWdFZHhjTmdEZ0dkTWZWaFRibWdsZjBiR2hIY0JmQmZkZ0ZjRmNLY0hlRGRCY0ZhSmVoaDRhZmNlZURlVmNOZFhkZ2U5aHJmVWdoZFJmeGVSZWhjTmc0ZURia2haZW9nUWRGYU1hWmhFaDNmQWZMZ1dhVmFZY1NnZWZrY2Rnc2NEaDJiQWJhZU5mamZZZ2ZjV2h5ZFZmRWFUaFFhZ2VYZ0JnRGJFZXZkTWJnZlloR2ZDYURjTmE2ZWRhMGF4ZW9mU2JsZ1liSGdDZ2thZ2ZrZ0Vod2UwZWhmWWRtZDRmOWRHZEhoSWNjaGZleGdBZEZlUmNGZ0VhU2JQYzBhNWZwZGRlQmNoaHdlUWFYZ1JmUmFTZGtoNWIxY0VoWGVzaFlhVWRXYlZhd2ZSZm5jUmFUZGFnd2hZZWRkZmFVaFliYmdLYWxiTmhTYlpiSGVwZlRkUmNSY01laWFBZ2xkVmJXY1diM2RvYmJnT2ZFYUVkRGJRYmphQmQxZVNnMGNaYjloSGJVY2thRmVVZ0FiVmI2ZUljamVNYjliS2hCZUlldmNIY3dibGZtZmRlVWZvZVFmVWJrYlFnTGRjYkZkcGFDaGJnMmVKZW1oTGUxYnNhZ2NUaG5ndGZHZURjUmY5ZlJmRGdCZ1ZiVGNhZ1NlQmhRZE9hUmdJYVBlQmZUZmRhQ2NkZ1ZkNWd6Z1VjVmRGaHBmZmRGaFloOGZEYjNkWmRTZUJhR2hwZ0dmR2NIZ01mYmZUYzNoaGVxYUFhUmRrZFZiZGFnY3RkUmZHYVJhSmF3ZldobWdSZlRiZWIxZXhhdGFZYWtkc2FkZ1djeGYwZmRjVGJSYmxkV2dkZEdoNWEyZGNjMmQ5YkdoWmF4ZFloU2FDY1hlVmRCYkRnVmdJZVFmUWV6aGtoSmFPZVRjdGVpY2JoV2NsYmNiRGMwZDVlNWdFYUFnTmVXaGVmMGFrZlZjVGJtYmxjMGhHYkhnQmhCZmRlRmZGY0tkVGFpZ2RlVWFKY3hka2JEZU5hbmdBYlRiYmN5ZlZhcmdVZ2hhUmZ4YVJlaGFOYjRjVWYwZTlla2ROZjFkb2NWZ09mWGZBY0xiV2dWZ1liU2RlZGtjZGJrYlFnV2c1ZUNlS2RuZWNhYmhSZmpmNWVKaFVoaGNsZ0FjQmdqYUZmZ2JKaERiWWZ1ZkFjaGNKZy9iWGFCZGdkWGRMaHhoQmVQYlJkRWIwZ2xkRmhBYkVoN2NLZXlla2RuZ0ZmSGVvZWFjZmV4Y0FkZWNRZ1ZiRWNBY0hjRWI0ZXljWGFoZmhod2ZRZlhiUmJSZVNka2c1ZjFlRWJYYU5mTWJVY1hoQWZraFZmbWZrZ1BiZWgxYUpnSWFjYlJkSWNhY2RlRmhOZ0hiTmdtYXBhT2ZHYlFhTmV3Y1ZoMWhrZ0ViR2YzZ1pmSGhMZ1VjRWh5ZUZjbWZRaFVmUWQwYkJlOWJIZlVnOWdCaEdoUWhJZDhiSmJ5ZlZjOWZJY3djTWRwZlVmVWJZZ0VoZmRGYUViNmFVY2tnUWZMZ2NoRmVwZENhYmYyYUpkbWVhZVJlUmJ5aENnRGR4ZENoVGhFYVVmSGNDZEVnZGhPYkxoSGhRaEZmY2ZCZFVlOGVHaEJna2IxZUliUmhGZDRiVGJGZnhnMWNJaGljdGE0aERkeWJSYlNlQ2JYZEZoWGRDZkhlZ2VCaFRnM2hwZXFoUWF4ZWtoVmNkZ2dmdGVSZ0dhUmRKZ3djV2JtZVJlVGZlZzFleGd0ZVlka2VzY2RlV2J4ZjBkZGNUYlJnbGhXYmRlR2U1ZDJjY2YyYTlnR2daZnhhWWhTZUNmWGhWaEJjRGFWaElnUWRRY3pna2NKYk9nVGV0Y2ljYmhXZGtoWmhmYnhid2VPZEVkRWFaYU5hSGRsZUlnL2FUZm1jbGUwZUdiSGVCaEJlZGVGZUZmS2JUYW5nVWdSaElhUWNrYUZlTGdTaEliWWJkaEVhcGd3ZWVnQmZSY3hmUmdoYk5oNGNVZDBlOWFrZGFhbGNOZUVjR2NuaHdkaGNXZFZlWWNTZ2Vma2hkZWtoUWJXZDVoS2VaZ0hjRWVGYkdnaWNGZlBoVWNoY2xiV2FBY2llMGIraE1hM2gwZjlnQWJ5Z1piU2ZaYnljVWc3ZkhjZ2ZoYVNnV2FRZHNnMmFEZndjd2hzYU5kaWQ4Zm1lV2FuZUpmR2VKZ3hheGhNZUhjMWhoYkpiVGNtYVJncGhkZUJmaGd3Z1FoWGhSZFJlU2JrZjVoMWdFZ1hnTWJlZ0ZoQ2d3YWxoQmFEZG9kUGJPY1ZlSmJJYUxiVWZaYytmY2FBZWRmRGJaYkhhdGVmZUdmVWdjZDRmUWhnYnBlWWZYYmpkOGVKYUlheGNVYm1mUWMyaGhmNWJIaDFnd2U0ZVRnbWJZYVpkWmJFZzFoZWViaG5hWmh6YWJiMGhaYW5kRmRoYUpjTWNkZ1JmY2VaZVhnbWE0YkxoY2hGZnBnQ2JiZzJnSmFtZ2FkUmVSZnllUmVqZTBmZWNIZUJmOGVlYUhlVmZvZmFjTWJDZVJmZGVmZmhiTWJ4YkVjQWQ0ZzdmSGJGZzhhbmhYYlVnY2dVZkZlVmVaaHBkRGd5ZDBhSGVXZmphSWJTZFdoamhjZWRmVGIyZHdjK2NYZHhobGVCZWVjUWZzYkNnZmZCZkpjNmJSZzJmUmdCZmJla2FwZ2thZWRVaHNlVWJjZ1VoOWJZZUdmVWV3YkVoT2htZTRka2NjZXplTWNhYVpjM2RzYWFoR2JIZGxjS2dBY2xlNWhFZVhjemdnZlRoRWZXZEVldWZJY3loZGJUYUpoZ2ZaYzZiSGFFYndiWmhHYVFlQmJHYU5iVGcwYkpoR2NDZnhjQmZmZ0FkVWhDaEJieWVaZ3FhSmQwZXhjYWVlZEdkRWJyY2RiQmROYTNmVWVnZHhkNGNYYlRjbGU0YlVhMGY5ZWtnYWVsZE1hWmRFZDNoQWZMZ0JjRmI4ZGVnVWRFZmRna2ZRYldhNWZLYVpiSGVsZExhRmVIaEViVmJVYzBjTmdKZ0JnRGhzZzZjT2hTZGNkMmFGZWlmSWJZZ1FkQWFrYjBoRGdtaFViN2RDZWxjOWJoZFRkQ2FBYUtmWWRuZ3RjcGdVZWlnY2hBYk1oRWRRYkZmQWZoZTliSmNIaFJlcGdsYWRoRWRwZDViUWZTZDloN2ZTZWtiNWgxZkVhWGdOaE1jVWVYZWhld2JWZG5iUWRQYU9oUmdkZkFoSmNCZlJoZGJlZUFmRmZQZE9kRGNaZVRiZGVCYXNoa2ZCZTFmbGFFY0hjbmVvaFRiTGZBYWdhOWNSYkNnZ2c4Y0JmVmNNYmxmVmhSZlJmQmZHZFZmNGdnYkpkamg4ZGdmRmNCZ0ljYWdGaGdjNWNRZWRnVmZJZVpiVWdoaGdiTGRKZEJoSWFMZVBnQmRrZnlmYWJSZjlieWRYZndmNGFMY1pia2ExZ1JmU2dSaFZkT2FhZlhlUWRZaGNkRWJFZXBnV2ZFYVpha2VkaFJkRmN6aFRhRmhGaDRkY2ZGZ1pmMGREaDJlTWRjaEdjaWVFYVVmWGNDaHdnY2hHZ3pjMGI2Z0ZhaGdkY0JlTmVVYW9mZGJJYjNic2UwZ0VjM2dkZVRnQWdpZjlia2JaZUVodGJTaEphRmFOYWVhR2ZWZkFiWmVPaG1iNWUrYUpmMmNOYUdmTmRSYzhhU2VGZTFiOWZLZEVnRmJKYkVhQ2EzZkJmYWRRY21jOWNpYVphbWJsZEdlTmh4ZW9nbWZRZWdlSmdOZ1dhV2RNY1ZkVGdtaGxlMGRHZEhoQmFCY2RmRmZGZktjVGVuYlViUmNjZHhjNWZSYkpoQ2F4aFdlR2VRZ2NkL2hYaGhoUmhsYVNkaGRNaHNkR2R3Y1ljM2RaYUJiOWZjY1hiVGNkYWZjRWJWYThmZWRVZEVlZGNrZ1FlV2U1Y0tiWmNIZGxiTGRGZkhlRWJkaEhoVWIwY1pkWGVpZ0FkbWJQYXlmQWdVZ0VlaGZvYVdiVGFrY3hkOWZIYWxoZ2diYkZjM2JBZmthV2JrY2xldmRjZ3hodGFwZ0NjR2I1Zk9hYWF4ZmxmTWZFY1ZjRmZCY1FoUWJZaGdoSmcyZU1ka2FRZ1hkOWhSY1doRGROYjFjRGhXYzllTWJRZEdmNWQ1Y1hjM2FRYUVmUWZWZElnVWVjYVVlWWhUZ2VoRmFOaFBoWmJHYXBlVGJHYVJlTmd3Z0NjMWFsY0hnQmJHYzFjUWZjZjFhTmMvZ1hnR2ZSZXpjU2gwZUFnNWNWYUVnNGYyY1RiVmZaYi9mYmZtYVVlT2JSZ1ViWmFuYkZlaGZKYk1hZGZVY29hUWFVYmtjUWRMYWNnRmJOZFphUmZXZEpkbWFhYlJlUmd5YVRmbmVNYVFkVGhFYTBjTWdRYkJkbGdrY2FnWGhRZllhY2hFZ0ZiMGNVYVVjcGFPYmRjUmZraDlnUWVnYUVncWZQZ3diSWQ3YVdmemJJZUNjVWNYZDhlVWFWY2pha2JYZE9jZ2EwZmtjQmZ3Zm9oQmhFZm1hNWZaYVNkeGhJZDhoRWhpZG9mQ2VPZGdkTWRyZk5kMGhzYWNoSmRSYkViZGVIZ3hlQmZXZExjMGVSYjJkY2gyYTloR2VaZXhkWWdTZ1RoSGFWY0toRWRGY0lmV2JUY2lkUWhQZ0VhQ2ZGaGlnYmdraE1jVWZjYmtmNWV6YUVlRWd4Z05mVWFVZ2tjVmFUYW1mbGcwaEdmQ2VKYUJiS2VBZzFlS2ZJYjNjMWRGZ2ZlMGd4YkZhZGhIYUFjQ2NQZkVnWWU0ZVhhRmRnZzBmQ2dGYVFhc2ZHZjBiWmNvZVFoRmJNaFplRWIzZEFnTGZXaFZoWWZTZ2Vka2JkZWtiUWFXZjVnS2VkZ1diOWNjY0FjMmVZZ1BjRGRGY3NiWmJYZUhjUWY2Z1BoamhvaDhjUGFUZ05kcmNFYWthZGVmZ1NmaGFCaFNjUmFBZnRid2NXZWtkSmh2ZVllbWFaY3BiRmVIaEplT2hjaHhiaGJFZUdjUmZrZEFmUmRqYlVnOWFkY0JlTmF3Y1VkQWVsZFJoVmhsYkpmMWZBZUdoVmdGY1ViU2hSYndkWGNpYUJoSGVJZ2doRmZ2Y0poVWhZZllmZWRFYkVmeWJaaEhmWmNQY0djUWZ0aDVmQ2J3YVZjV2hSYmplSWVPZk5jemJvaDZoU2VtaDlmNWhXZ0dlbGQ0aE5meGExZU5mR2RWZlpmMGdiZm5jWmJ6ZmJlMGdaY25lRmhoZXRiWGJYYTBlb2RRYlVia2NRYkxoY2ZGaHBlQ2ZiYjJlSWg3ZFlhQmNoZ1loVGVuZk1hUWZUZ0VmMWNSYlNiUmhWYk9hYWNYY3hlV2NmZmhiRWdtYkhjaGE0YUJhSWNVYmdjamNDZVZlOGFxYk5lUmFjZ3dnWmNpZlVkR2NlZ0JnUmZHY0RkbmhnaFZlR2JpZW9ocGhCZTFmQmdjZVBlZ2R0Z1JoQWZoYzVkNmdGZldlaGRCZEpmMGROYmtmSWJtaEVlVWhjZlJkMGNkZlRkUmVsYVdmZGFHZjVlMmJjZzJkOWdPZU1ieGRZYlBnVGNHYlZmS2RUaEZnSWhRZUFlbmF4ZmFiU2JqZTFhaWFlYzJla2FFYWNmaGJKZ3piUWRraFZkQmJVYVFmQWZWYUVmamdWYTBnZGRYY2dkVmVlZ0ZiRWFZaFFmbmVWZEZlT2N3Z1ViQ2ZkZmpjd2hUYk9oa2dnZC9hR2ZoZjFkcWZiZkJhTmY0Y1VjMGI5ZGtjYWFsZU1hWmNFYjNkQWJMYldlUmFCYWRnS2ZFZ2Rjc2NGaHllOGVZY1poRGJ4YUxmQ2RYYUZhSmdWZlFlUmFLZExhU2RBYVRlZWJuZE1mZ2FSZW5ob2dXZUFkMGRCYTFhQWFoZ0JhUGdSZEJhdGNyZFdna2RsZWtmS2dtYVpkMWFGZUNjQmhPY2RkUmdaZE1nUmZSZzVmSmVIZTFhTmRwZlpjZ2MxYW1oU2JHYjlhUmRRZzJnUmcxZUViWGROZk1kVWRYZWhhd2JWaG5oUWJQZGFnMWdJZlVhY2dRaE1hVGdjYzBiNWdQYU1jQ2VJZGFnU2ZtZWdna2VDYTFoSmRXYldiZ2hkZEhjYmZraEViaGdVZlVnNWQ1ZVNheGFSZXhmSGZSYTFlTmdHY1ZlWmMwZmJlbmhZYWhmS2ZoaElneWNSYUZheGhNZ2ZkUWdVZFFjV2hGZmtiTGdZZlViaGFhZ1pobWI1YW1mTGJCZFJnc2FVZTNkTmNmYVRjRWR0ZFhhU2VSaDBoTGVhYlhna2JGYWNlQ2N3ZDFmQmFRY0poQWFKY1ZoNGJrZlJlRWFOZjBmY2VFYzVnMGhCZ1dmc2JBZEhkWGFoZktiRWR6YzFjSWJaZldlUmNxYVVmeGJrYVRlY2ZBZXRnWmdWZGhiSWhuaFRjbWVoZnJoYmhrZXBla2JlZFVlc2FVaGNhUmMwYmRkVGdSZUVoWWRlZWphNGRraFBkRGNzZEpjTWEwYjloQ2JDZlhic2dZZFZhUmZNZEFoWWJqZjRnT2dJZUFicGdpZ2VhMmJsYVNkSmJ3ZEFld2FSYUFiVWZDaEhlMGFrYWRmR2NtYVZlMGhTZW5keGVCZFBhVmNoYkthRmJWaDhlUmhjYzBoeGZSZ2VjSGRCYldoZGVBYjlmcmhVZmhhUmQ1YkVkaGZOZWxiVWExZjlma2JOaGxmTmROZkdkbmF3YkxhVWZRaFFlU2ZaZDBjZGcwaFFoVGNKZkthTmduaEJhSGRGY0RoZ2VkZVFhUmdFY1plT2QzYndnNmdlYW5iTWM5Z1NibWVkYkNkV2VnZlVobWVSYUZjd2JYYkNka2F3Y2tmRWdrZXRmMGVTY0dnWmNwY0ZmSGdKYk9lY2J4YUJjTWdUZVZlRmFKY0ZlUWRnaG1hSmhoZWhiNGdGYXphVWJEaFNiZ2N0ZjFnRGFIY01jZWNYZFhoZ2MvZFZmbWhrZlBkZWFsZjRnVWRPYVVlWWFPY2VkQWdjYUhnTGhUZGtkb2RUZVJmTmc3ZUNoMWNSZmJoVmh3Z2RmY2RaZEFkUmh1ZFZiR2JSYXBjU2R4Y0piM2hIZlJhVWZDZkdnVmV4aHBkYmFtYVJibWRlZlVkOWc4Z0ZnaGd0ZW1lZGVVYm9jUWhVZWtiUWVMYWNnRmRwYUNmYmUyYkplbWhhaFJmUWg2Y1RlbmNnYk5jVGFCaGtmWmZBaEVlWWYxZlBjWGNRYVRmY2NFYXhmNWdGY0RkZGVPZmZheGVFZjhoVmczZnRiNGhjY0ZhWmIwaERnMmR0ZlNiRmFIZ0ZmR2JFZjNhZ2RCYUNiamRBYS9nQWdWZ2NiVGdlZkVhUmdaYVhjQWc5YjZoVmJuZ1poWmdaZzBnWmZrYk1hVWNzZ0tnYmJCZzFjU2ZUZFJjOWdRYWRjR2RZYythY2MyZkphYmdaZTNodGZUYkdhRGQxZ0VjUWJCZzBlVGdBZTJiSmZXZlFkbmVkZmloYmFHZGxhR2ZlYjBjZGMvZUVhQWZSZFdoZWMwZWtoVmFUZ21hbGQwZUdhSGRCZ0JiZGVGYUVkWGZSYjNha2E3ZmNjMGd4Z1JkZWNIZkJiV2RkZUFjOWhyY1VmaGd3Yi9lU2FFZE1hcWZIZEJoc2VyYVBkZ2FwZUpiVmRuZzVkWmFIY0JiZGNXZ0Vid2FrZndkV2VXaDVjWGNaZERiOGdlYldlamNKYUpnVmVBY0poWGZWZG5ld2M2aGVmbmFNZTlnVGQyZ2RiTmFPZEVjeGYxZlNmaGJCZ1NnUmVBY3Rkd2hXaGthSmh2aFliamRRZnNnUWNDZGNkY2VQYVJjQmJFYlplMWRGYUpjRmFVZjVlcGRkaEJnaGF3ZFFnWGNSZlJlU2VrYTVhMWFRZjNnTWVRYkRjWGhnZ2RlWGdpaEFkRGhhZjBoTWVZZ2NoUmRKY2JlTWNRY0JjQmJLZUNjOGVkZlhja2djYjRmQWJsZlZoOGRFZm5ncGRIYVpnRWNGZHVkU2NtYlJnNWZTZnhhUmR4YkhjUmYxZmNoQ2YwZzVlMGVhZUhmWWRuYUpjd2E4ZTBkYmFVaFlkeGVkZlZkVWdRZlhjMWNVZ0xjZWZsYnBlS2RmYVhmZGZ6Y2FlUmNsYXljR2VqYXRoWmNIZ3pmWWNGZ05lQmFWY0ZmYWJXYlVmUmNjYUZidGUwZkJjUWdJaEhnSmNtYW9ibmJNZ1hidGY0ZGNhRmFaZzBkRGgyZHRhU2dGYkhhRmVHaEVjM2doYmFnVmNFZjVmcWZVYXhna2JUZGNoQWh0YlpjVmJoZkpkNmdHZm1kMWhOYlJiRWVwZ2tmZWdVZXNoVWRjZ1JhMGFkZFRlUmRsaGVmT2htZkFlbWFJZ1NoQWVTaEtlRWdKZkxiSGFEY0JoRWNRaGhmY2dGYVRneGVrZ1VlRmFuYzVlMGdDZmdld2VVZmJoMGQ0YTFoUmVRZkllT2RCY1FlQmJhYkFhR2VsYThhVGhIaHhhQmVKaGxoaGNLZkZhVmI4ZFJlY2cwZXhjUmVlZEhnQmFXZWRoQWQ5YnJhVWFoZ1FmamJSYmtnOGJrYlVheWhKZHNjUGhsZjhiWmdBYVhkd2hMaERlUmY1ZWJnS2NVZGthb2dCZkNiQWVOYk1kRGdGYUNkRGMxYnNlZGdIZlVkMGVaYlZibmdSZXVoZGFuZ05ndmFSY21iZGhBYlVneGY1ZzFnQWF4YUJnUGZSaEZkOGM0Y0VoeGJFZVVoTmNoZHRlcGFTY0hkSmJHY0pkMWhnZEZhSGRpaG9kZGhGZlVkVmJwZVpnV2NWZXdjWGZXaGhkUmdVZ2toZGN1Z09mM2ROZU1mVWRYZGhnd2FWZW5oUWVQYWFoMWVJZVVjY2NSYVJiV2RMZEFnWWVkY0tibWNwYUFoQ2Z3YlJnbWNFZjFjbGNRZ0VmamhOZ0hmZWUwY0ZnNmFXZUhmMWh0Y1VoZ2ZSYWdoQ2VnY3RjZGJHZlFocGMwYUphM2RaZ3BmYmd3YzljOGhQZUJhSmhNZWRkVWRvY1FhVWhrZFFmTGZjY0Zjb2dmZlpmbWc1aE1lYWJSYVJheWVUYm5mTWhRZlRoRWgxYVJnU2dSZzBiQWRaY3ljUmZLZFBieGFVYzdmQmhSZE1iZWVNYkJmOGRoZ0NjUmJBYThmR2VSZWdoZ2JIYm5kMGJ3YWNjWGRGaGJoRWF6YjRkR2ZBZFNmY2MrZ0dobGZaYmRjY2dBY01iTmVXZWhoSWZvYlRmbWJRZ2FlUmFFY3Boa2RlYlVmc2NVaGNjUmcwZWRiVGhSZGxnV2dkaERjeGQyZExjemROZ0dnQ2NoZzVnR2hRZkhmVmFZYkhjRmFJYlFoUWR6ZWtkSmRUaENmTWFuYktjQ2U1Y0FnT2RrZWRob2FPYWtkeGVOZVVoVWRrYVZiVGdtZWxnMGZHZEhnQmdCZ2RhQWJjY0xlSGZIaFZmWWFjZTFnRmVSZUxiRGJnYmZoSmczaFFjL2dVYWhoOWJ4YlZlMmQ1ZjRjRGUwYTlnc2ZQY2hldGZRaFFhQWV0ZmZmSmVGYVlhT2ZaY2tmZGc4ZVNlSGNWYmdlWmdIZGxkTGVGZkhmRWNkY0hhVWEwZVphVmNuYlJodWhKY0RlWWU3Y0VnemdWYVlkRWJsZzlmbmZYY1FlWmZLZ1JmQWMxaHdoRWYwZkpmd2RZZm5iSmg3Y0RjV2FaZFhiWWV3Y0ZiYmdXZTBlRmRKZFNkVWM0ZWdoZGZBYkpmd2ZDY0diOWc3YlNla2c1YzFhRWZYY05kTWhVaFhjaGh3Z1ZiaWVrZ0djWmEzZ2dkVWhjZ1VnWWFUYWVnRmZOZlBjWmRHZ3BlVGdFYVZlMWgrZVdnd2JzZFphUmZqY1VlVGFQY1JoRWZyYlJnRGRZZzhhQ2FsYkFnWWhVZzBibGJlYUNhemJvZVJiYmZtY3RjemVLY1JiTWdwYlZiVWJZYUZoT2NnZlFnUWNXYWhkQWVIZmNjQWZoYUxkYmF6aGxkTWRhZ1JlUmZ5ZlRlbmJNY1FiVGJFZjFmUmdTZ1JiVmFPY09nemVGZE1iSmNSYU1hNmNVYlViSmZraGRoUmhGZnplVGRGYUZlNGFjaEZoWmUwZERkMmZ0ZVNoRmNIY0VkVWZFYXljUWdQY1Rnd2JsZWliQmJ4YVViVGRaYkFjZGFaZkFnbGJvYXpiRmdHYW9jTmhLZndiUWJqYUxjUWNNY2RiZmhUZ2NiZGFUaFJobGdXYmRoR2E1YjJnY2IyYzlkR2NaYXhlWWRTaFRiQ2ZFZ0NoV2JRYkViL2RYZ3doMWNhZ0hma2NWZGlkWmRtYWtmVWFjYWtkNWd6ZkVjRWF4Yk5nVWhVZWthVmhUZ21lbGUwZEVhQ2NRYUpnUGRRZ0lheGNHZG5kVWJhZ2NhMWIwY3NjZWVHYnhmS2ZkZ0JnZGRpZFVma2NoaGJnUmdoaE5oNGhVaDBkOWJrZmFjbGhNZVpmRWIzZUFoTGdXY1ZlWWRTaGVna2E4YndmQ2JTYmNoWmRIZXloMWJMZkhjM2hFYlBkWWdFYjBjRmNTaG5jUmUvZFljSGVwaHZkR2ZrZDBnV2hFYmtmeGExZ1NlaGJCY1NnUmRBZHRjd2hXZWtjSmd2ZVlnbWdaZXBoSGVDZ1lkR2FPZmtiTWUzZUdmVmRGZkNhRmZWZTBnVWNkaEFoUmFzaFFoV2VaY0ZoUWcyY1JnMWFFaFhhTmZNZlVoWGRoZndlVmRuYlFjUGNhYzFlSWFkZGFjbWN3ZFRjZWZGaE5jUGRaaEdhcGFUY0dnUmNOY3diVmRsZ0JhYWNPYUhhcGRIYlpmRWNGZHVhU2FtZFJlNWZTYnhkUmI1YlVheGRNZmRoU2h4ZmtkZ2hJYVNnSWRxZ1Bhd2FOY3BmUmZGZmNiTmVNY1NjTmdlYkJnbGNjZ1poRWNqaDliQ2VjZW1kSWJnZlBnRmVvZXhnR2hqZ3BjZmNBZGtkMWNaYkhkUmNsaE9nT2QzZDBmWWJLaDJldGgwaFVoVWhwZ09mZGJSYkZoemJUYUZoRmg0Z2NhRmJZYm1kU2JqYThhSGJSY2phOWFHZ0doMWdKZFRoVGgyZFJlcWFVaHhla2NUZ2NiQWJ0aFpmVmdoYUpkNmZSY3pkWmRCaE1iaGdaY2thRmdFY05nQWJmZlJoMGdKYVFiUmhrZUNkUGhDZWNibGhmZlNkTWVEYktjVmRGZkdmQmFIZXhmR2JPaGxmSmJFZkNnM2ZCYmFmUWRtYTliaWJaZ21ia2VVYWNha2M1Z3pkR2VCaGdoRmJHZkJhcGV1Z0dhaGhSZzBoQmRHZ3hnQmVaZmtoVmNEZlRjaWZrYjdnY2UwY3hjUmRlYkhmQmZXZmRhQWM5ZHJnVWFoZlJoeGVSZ2hhTmY0YlVnMGhjYndnSWRoaHBnS2ZhZ0NkUWVMZlVkbGRZZURkQmMwZ2RjNGFYZ1doNWdiZ2NjbmNCZkxjU2VGZXNhZGZIZVVjMGJaY1ZnbmVSY3VnZGduYk5ldmFSZW1kY2ZXZkVka2V4ZzFnUWhrYVFoYWdEZ1ZhZ2hMaERja2NKZ2tjWWhuZlFiVWhGYUdkNWVTYmNid2RoZkZmVGVRaDFhamFGZ1VnNWhwZ2RlQmZoYndhUWJYZVJhUmFTYWtnNWgxYkVjWGROZk1nVWNTZ3diNGdIaHlkZGIwY1BiMWRJZ2ZoY2dWZVZkdWZVZ2xoTmFQZ1piR2ZwY1RjR2RSYU5kd2dDYTFobGFXYkVibmJOZ2NhVGZrZUZhdWZTY21oUmc1ZlNjeGhSY3hhSGRSZjBjUWhFYkZjcGNlYmJibmVaZHpiYmEwaFpkbmZGZGhnSmhNYWRmVWVKZ2ViWGVCaFJnWmdQY3djNGdOYk9memJzYTJjTGJCZW9jZ2VDZ3piSmVVYUtmZ2dFYWVhQ2VFZ0VjaWNEYkhoUWVGZWNiQWhjZWhlSGR3ZWtlYWFQZ0ZhNGI5YlRlRmhrZ3NlZmZGaFlmbWJCZG1hc2FKZFBlbmJGZ0dnRWczYWhlVGVUYzJiUmJxYlVoeGRrZ1RiY2ZGZmtkY2JBY2thY2NvYkNkV2FRY1RhYmRoYVloNGRlZVNmWWhjZkpkUmZFZWRiV2VSZ1ZlV2JJaENjWWUvY0llR2FFY0tnSWhsaGhoVmdHZURhMWVEZUhmRmRJZnpkQmFTZ0lmZmJBZ3lndGRxZU1naWFGYmRmSWFVZ0plemRSYUVkQmhOYlVlRmZrZFpiVGRuYnRkbmRGYkhjQmFWZ2ZkVWhwZWdoVGhuZlVkUmJjZTBjeGNSYmVoSGRCZVdkZGRGZ0pjaWFYY2pnNWZ4YVJhaGJOYTRlVWgwYjlma2dhZWxiTWRaZUdkemI0ZEZkQ2hRYVJmZGhMaGdiZ2F3Y0dkRGM0ZVBiYWRpaHNlT2dWYVRoVmc3YlVhUWJKZVloQWdoZ1ljTGZkaG1jNWd2Z0FjRGVKZFlnVWNSZWdlOGVCaFZnNWFTZ1RoRmY5YThhV2FoYkJobWdZYmphMWJEaEZjSGFKaE9mY2Z4ZEJoTWZUZ1ZlRmZKYUZoVWU1YXBjSmdsZzBha2dGY0NoWWdmYlNoaGJ4YzFhVGhTZTlmTWVQYUhhQWZrZVdhbmdRZ2JjWmgxY0poQWNPYlFiOWZBZGRnaGc4ZUtjS2RpZjBoSGRVYlJkcGc4Y0NheWE1Y1liUWREaDhhR2JJZ0Vha2g2YUFnaWMwYnFhUmV4ZFFnbGhFY1JlMWNNYUNnRmRwaDBhZmdHYlZiL2JiZzFhSmN1Y0RmVGFoYk1mZGhVYW9lUWRVYWtiUWJMYWNjRmFwZkNnTWdtZXRkcWFRYnhmUmN5aFRlbmVNZFFkVGZFZTFjUmhTYVJiVmdHZ0pjM2RwZEloSWJnZTRlZ2NIZmhnNGFYZkpiVmNSZDljSGVoaFFjNWhOYURlSWg3YldmaWhrY2VnVWFSZzBjamZFZzJoVmRUaENoVGFFZ2tjRWhFaDFiYWNQYTBnVmFaYVhoa2FaZzJiUmJ6Y1pjSWRiaGhhRmVPZmVhVWFzZFVkY2NSaDBnZGdUaFJnbGFXYmRmR2g1YzJmSWdTZW9oU2hNZGtnUmVjZFRoQ2VkY0tmVGZBYzVoRWNaYm5lZ2dPZlRjbWY5YzZlYWhtZmxiQWVPY2dlY2dnZEhmZ2VBZUlkSGF3YTVoQmhCYW1jQmY0ZUdiQWNkZ1BnSmZoZVFlTGhDZm5mMWRGZk9kd2FVZ0NnZGdIYUFiQ2NlZkFoOWRxZlFnaGJoaHhkVWZ3Z0ZoMGJVYTFiZGZ0ZGNiWGJrY1pkRWgzZUFnTGVXZFZjWWZTZWVja2ZkZWtmSGdHZmRkR2ZUZm5lbGNMaEZnSGJFYmRoSGdVZDBjWmRWYW5nUmdtZE9iSGgwYS9jRmVDYmhnQ2FYZVJmZ2RzYkdmbGFWYmNnRmZrYjRleGZIZ2liWWhnZ05heWRRaGxjVWRSYUFocmNjYndkMWZNaENid2FRYUhhVmNoZW9mZ2dPYzFkWmN3ZVNoU2RCZGRkU2FoZHhkOGRFZ1NkaGVtYVVlWGNoZXdjVmhuYlFjUGJhYjFlSWRVZ2NjVWFZZ1RlS2doaFlmYmdNZFRoZ2FkYUdoVWJGY3djVmF3ZVZmV2NmYjNnSWFUY2FhRWdGZDJjUmNtZVFldGFBYzFkMGRpYkViMWRFYUliVmR4ZkViZ2FKZ25hOWMvZ2JhemdGZ3BhUmhGZ2NmTmNNY1VhSmhFZUdhZ2gxYVlmZmhGaG9jV2VZYzJhSmJuaGVmQmVoYXlnV2UyaEVhY2NUZEZiVmdZaFViamM5aE9kYWhYZVFhWWhjYkVmRmIwY1VlVWVwY09lS2ZCYmhiL2daZmxjRmM0Z2NnRmFaZDBnRGMyZXRmU2RGYkhlRmdPZVhkWGNZaERmSGJTY3NmK2hIZ0VmMWVLYklmRWY1ZlhmQWVVY0FhemRFYnljRWgwaEJkd2FRY3dlRmNTYjRnVWViYUJmMWNiZEdmRmRjZVZhSWNDZmNkNWFQZFdmOWNPaE1meGNvYVNiSGRuZmxhS2RXaFZkNWNFaFRobmFsaGFmR2RVZFZkaWFaY21ma2ZVZmNma2I1ZHpjRWhFZXhnTmdVZFVibGFjYUNjR2VsYzhkRWRIaGdjVmFkZUVjeGVLZ1JiU2NFYlllZmUwYnhlWmRLZm5nQmVMYmRnQmQ5YnJlRGZoYlFkamJUZnhjOWI0ZFdnd2haYWtiZGQxZE1mSmhFZnlhd2ZMYUVkRmI4ZWVhZWVrZ1lkaGFTZ0diZGZLaFBoMWhOZExiRmhIZ0VlZGVIZVVmMGJaZFZjbmVSYXVlZGZuZ05kdmZSZmplRmRYaFFoRWh3ZjZhU2FnZzFlU2dLZVVnb2hrYUVoa2h3aC9lTGRUY0ZmaGhCZG5jNWhPYmFleGNCZkdmVGZSZmhmQWhGYlVmTmNwaFpjUWJOZ2FmUWVYZFJoUmJTZmtnNWgxZEVkWGZOZU1nVWJYY2hhd2RWZW5oUmJqaFljd2ZaZWNlT2FCZ1VoZmFlZkFkZGJEZ1poRGhoZWZhR2VWYnBkOGhDYXhlWmJhZEVmbWRwZ09jZmcyZHRodWVTaG1mUmc1aFNieGVSZ3hhSGNSYTFjTmFHZlZoWWZwY1JoSGhaZ3pmYmIwZlpnbmRGYmhlSmFNZWRlVWJvYVFkVWJoYkpkS2JJZ2xhb2RLZWJoM2U5Y21hZWVCZmhhWWFUYW5oTWhRYVRlRWIxYlJoU2RSY1ZhT2hhZlhjUWFZZmNlRWhFZzZnVWZWYmRhT2ZaZ1FhcGZaYVRkRmFGZjRkY2dGZlplMGZEZzJndGNTY0ZkSGJGY0dlVmFUaGNmQmVUYjJld2QrZ0dlMWVCYkFmQ2ExY2tia2dWY2dmOWI2ZVZoWGJGY1ViYmhraHhja2dMY1ZoQWFVYmVhaGhaYlRhVGVRZFZnV2JQZFdjNWd3Z2RnV2U5Z09jTGd4Y1lhWWZVaFhjVmdZZEJmVWNSYk5iRWFIZEJjVGZhZkdkOWdpaFpjbWZrYlVjY2RrZjVmemhFaEVheGJOZ1VjVWhrZVZlR2RpYUVmOWRTZndic2hUY2RiRmFwZEtjQWRBZWdoUmViYWtkeGNaZExjSGhCZFplZGVFYWRkaWFVYWhoSmh4Z1ZoQWFaZnRjU2dHZ1Zna2NhYWxiTWNaaEViM2RBYUxhV2hWZVlnU2NlZWtlY2gyZUJiRGZvZmZiTmFqYmRkTGdSZG5lRWFXYkhmUWdRZENhZmRIYlJldWdkYm5jTmN2YlJmbWJjZ1dhRWRrYndnb2FRYnhneGQ0ZlJlQWZ0YXdlV2VrZ0pmdmFZZW1jWmRwZkZiSGVvaEFkZmNVaEFmZWhBYWdiVWFHYlFjUmdjZzVmTWZSZ1libmVFaHplMGFGZURjemJzaGNoWGF5YmNidWNOZUhlaGJ0ZVZmamhKZmFhSmdSZkZjQWRPaEFnbGhkaGVmRmRzZWJjYWVHYm9jQmNGZVJnTWU1ZEJhMWNrY1RnR2gzZ29hY2FUYWtnRmN1ZFNobWZSZTVlU2J4aFJoeGJIaFJiMWVOYUdkUmE4Y3llYmduaDVnN2ZaYnhnSmFuZUNieGdKaEhmSWZVZE1hY2NVZ2tneGRaYWNiRWJkY0NmZmIyaEloNmNhZ1VjWmU3aFFkbmRNZFloQmNVYTFlTWNTZlFkVmNPY05nWGJSY1JhZWNVYzFjMGdVY0FkOWNIY2ZlQmhFZG9oWmdsZ0ZlNGVjZUZjWmgwY0RjMmN0ZlNmRmhIaEZnR2ZFZTNnaGRUZEdmU2VVZTRjVWUxY1liVGViZlFic2QwaEZnMGVZYXljU2NUZ1FmT2dPZlVhSmEyZWRkVWJzYU1iY2VSaGNoZGNCZEJiQmFXZWVhV2Y1Y25hYWJFYlZkR2daZnhmWWNTZVRmSGhWYUtnRWNGZEpnRWZDaDNkQmNhYlFnZ2FOaHFiTWNpZEZoZGhJZ1VmSmN6YlJiRWhCYk5jQWQwY1VlVmFCZzJkVmQwZ1ZoM2d4YUJhWmZGYmhkUmdaZkhkVWJSZWNmMGF4aFJiZWFIZUJmV2FkY0FnOWhyZlVka2hsZGJmUmNoZ05hNGZVYzBhOWJrYmFlbGhNY1pmRWEzZUFjTGJEaHhnZGhBYmVlZ2M5ZGthWGZHZjRmRGVaZUhoUmRMaEJkWGIwYTNlSGdVYTBnWmVWYm5kUmd1Z2RjbmJOZHZlUmVtaGNkV2dFYmtod2I3Y1NkZ2ExYlNjVmRSaEJhYWFXZ2tkSmF2YllmbWZaaHBiRmFIZUplT2hjZnhlQmZNZENheGc0aGJkRmdVZFlmOWJQYUZjRWFqYk9laWhaaFJiUWZVZzRkOWFiZ0hjTmFSZFViV2dwYWxjUWUzYVFlSmdhYndjWWhQZGNmVWVzZWVmTWNGaE5lUmFlZldjcGNEY0dmUmFWZzJhQ2IxY0VnWWFFY25iQmFhYlpmRmFOZjdiWGZHZDFnaWRTZXhoMWFiZ0hnUmcxZk5iR2ZWZVpiMGJiZW5mWmF6YmJiMGFaZ25nRmdoZElmWWJQZlFmTmJEZ0toUmdZZ0xjZWYxZW9jS2FFZG1nSmQ3Z2FjUmZ3Ym1kVGVuaHdnUWhBZmthUmRSZ1RieGhWZ2NmZmRHZkVoRGVXZmtnRmYwY1VnVWZwYU9hZGJSZkZkemJUYkZjRmg0ZGNkQWhRYnhmV2J6YjRlQWJXYW5jRWFVZkVlM2NOYlRnQmFuaDljQWhVYnhoa2RUZGNkQWJ0ZVpiVmhoaEpoNmVSaHphbGNJY1lnbWdCZWtjZWRVZnNjVWFjZlJkMGNkZ1RlUmhsZ1dmZmhDZ0JoNGFJZnpiMGhKYU1nMWRsY0djRmdTZFVlUGVIYmdoVWFXZ1FoaWhRY2ZjTmN3aFljc2hNZW5nRWRVY2JhMGE0ZTFnUmVRYUlnT2dCZFFnQmVhZUFkR2ZsYjhkVGdIYXhnQmNKYWxnMWZLYkJmM2h3ZVJnS2ZHZlplUmVlZEhkQmVXYWRjQWE5aHJmVWVoYlJneGZSYWhjTWZxYUZiaGJzYnhoT2JCZjBkWmVHYzFnb2dMYldoVmZZZVNiZWZrY2Rha2JRZVdnNWVLZlpjSGZsYUxlRmNIYWxmSmVIaFZjQWZaZ1hoU2NCZG5nZWhsZ2xmdmhSaG1kY2VXZEVia2Z4ZTFjU2NoYkJmU2ZSY0FjdGh3Y1dna2FvYjlhWWFuZnRkcGRCY0hlSWVTZGNoMGVKYkZoUWRYYXRiSmhGZlVkNWJwaGRlQmJoZ3dhUWVYYVJmUmNTZGtlNWExaEVjVGdwZk1nRGFTZ1Jkd2RPYm5ieGhiYkloeGZ0YUhjZmFVYlpoSGFkZUZlTWVkZGFnR2ZwZkNmRmJSZE5iaWhIZGtoeGNhY0VhbWVwZk9iYWFHY3RmdWRTY21oUmQ1Y1NjeGFSZXhnSGdSYzFhTmFHZ1ZoWmMwYmJkamFoZTljR2d6ZDhlWGFjYjNmWWV6YkZhRGFoZ2lmTWV6YzFoMGhBYXllOGR5Ykhld2QwYVVkSGZSY1FldWFFYW5hTWdZZkdiRWIxaE1kU2dYaGdnUGZQaFRhd2JXYk5hZ2EwaDdiSGdoZ2hjR2dJYVJnaGY2Y1FjSGV0ZzRkY2JGYVpnMGhEZTJldGdTYkZjSGhGZ0dnRWYzZGhoVGhUZDJmd2IrYkdjMWZCYkFkQ2UxYWtma2JWZmdhOWc2YlZiWGZGaFVlYmdrZHhja2FMYlVhSWdZYVdmeGMwZ2RmVGNSaGxlV2VkYkdiNWgyZ2NiMmg5YkdiWmN4aFljU2NIZW5hVmZCZUVjRWFOZ3VlQ2YzZ0JkYWFRYm1nOWdpZ1pmbWhrZVVoY2drYTVnemJHZlZjZGNuaFVoVWdrZFZhVGhtYWxkMGVHYkhoQmNCZWRiQWZ4Z0RjUWVsZzhnUmJjaDBheGdSZGViSGZCZVdoZGdBYzllcmJXZ2xlcGgvY0Zia2VFZTNnQmF3ZEFld2JNZ3dhTmFjZEhhU2RkY1pnRWRBZ0pnWGhEY3llNGdxaEZkWGg5YmNjQ2VCZXhnTGNDZVhmRmdiaFNmQWROaGFoQWFqZDBjaGFPZUhjTmduaEVnbWVzYldmUWVFZEJiMWNBZHhnbGZTZUhneWFGY3dnV2NrY0pkdmhZYW1hWmZwZkZoSGNKaE9lY2F4YkFiZWRDZ0FiVWhjZ1Jld2VCaHBjZmVEY0pod2dRYVhmUmdSYVNna2Y1YTFmRWRYaE5hTWVVZ1hnaGN3YVZnbmh4ZGJmYWUwYzhjVWRlZWhkSWJhZWRhSGJsY1BlWmdHYnBjVGFHZ1JkTmV3Z0NmMWRsY1doRWRuZ3BhSGdaZkVma2Y4ZFNjbmdsYTViV2V4ZVFhdGJIYlViOWRFYUZjWGd4ZzBoYmVuZVpiemRiaDBhWmRuZkZkaGNKY01kZGdVaG9hUWVVYWdiMGVMZExmQWRaaENmQWQyZm9neWNJZlZmMGJoZ1FkbmFOZUVlUWJFZzBiRGZSaFJnVmJjYlpkWGFRYU9hWmZWY1JlbmJSZUVhWmFPYVpiUmNoZi9nWmNsaEZnNGZjZ0ZhWmUwZkRkMmh0Z1NmRmRIZkZjR2dFYzNiaGZUY0FhV2ZvZ2ViS2FtYmxlMmVGZUhiUWg0aEpoR2JBYmJnUGdoZHNmeWdHYXpnb2VVZ0ZoamFsaGdmV2N4YjBnZGRUZlJhbGFXZGRiR2M1aDJiY2cyZTlhR2FaYXhoWWhTZVRlSGNWZ1ZmRWZGYnBjTWdYYnpiZ2JUZUVnUmVRZXdnR2IyYWtiSmdjZ2xoeGhtYUJoVWV4YkxjVWNSYTBnY2ZRZm1nbGI4YlRmRGhnYkliSmN5Ym9oWWZUYm5jNGZSYllnamNGZ1JhWmZYYUFmQ2VkZUJoRmIxYVRoQmVSYXBnVGh4ZHBiU2RVZjBlOWJrYWFjbGFNZlpnRWEzYUFiTGJXZVZhWWRTZGVna2ZkaGtlUWNYZ1JkS2RDZTNkRWJmZlhnRGZoY09lRWNVYTFnTmFXY25oUWE4aGVkbmhOY3VlVmNtZzRiYWhPZEVieGUxZlNoaGhCY1NmUmZBYnRod2dXZGthSmd2Z1ljbWZaaHBiUmRuYkpmRmNjY3dkSmFtZ1RnVmZGaEpiRmNVYzVocGNkZ0JoaGh3Z1FiWGhSYVJmUWIxZ1ZnZmRFYVhnTmFNZVVnWGNoYndlVmduY1FjUGJhZ3diOGRkZmZlV2F3aFRkZWdGZk5jUGhaZEdncGhUY0doUmVOZndkQWZ4Z2RoWWJRYmljZ2NJaE1hQWQ0ZzZoRWR6YVFlOGhSaFVoTWNqZVZkRWVrYkljYmREYjhnNmdPYW1lZGNsZ0RkU2FOYW5lQ2R4YUlhS2NJY0FlUmFUZUJmZ2UxZUViUGRsYnBmS2hPYTJiNWRtZE9jeGhoZ3ljQmUzYm9jUWRGZDJjZGhSZ1NkUmJWZU9iYWZYZFFnWWNjZkVoRmgwYVVhVWJvZ2NlTWZFZFVmbWdIYmhhOWI0ZmVnSGN4aDBkRGEyY3RhU2hGZUhhRmNHZUVhM2ZoYVRoVGMyZlJjcWhVYnhoRmhIZmNnQmJaZ1pjWGJVZFpjemdTZTBmNWdCZ2Jha2RwaGtjZWRVYXNoVWdjZ1JkMGRkYVRmUmFsZVdnZGZHaFloa2JjYzNlSmNHYmRleGhaZE9kVGNDZGRiRGFIaEhnaGdFaENoM2hCaGFoUWVtZzlmaWdaZW1ma2hVaGNma2Y1aHpkRWFBZFZmTmREYVJnVWdWZUlnbWVFZWdlVWNEY2toU2JlZUZlRWZlZFFibmRWZ0RiZmEwaHhoRGFkY0hmQmJBYlloUmFwZzRiUmJ4Y2hkeGdWYmhlcGQwY2VjVWg5ZmtmYWVsZk1kWmFFZzNnQWhMZFdjVmhZZVNhZWhrZWRia2dEaDJhQWIrZ0hmUWZrZXVoY2JBYzVhOGhiZnpnOWE0Ykxmd2hzYWRnQWV3Yk1mZmJLZFJkVmRpZE9nRWJ4YzFiU2hoZ0JkU2dSYUFndGV3Zldma2JKZnZlWWFtZlpmcGdGZUhiSmNSZmNheGVoaEVoR2NSY2toQWJSZGpjVWM3ZUNmUmJoZ3RlUWZTY0JiUmJWZ0ZoQmhyaEVhV2h0Z0ZhWGFYaGhnNGVBY2poeGNHYU9iQ2RsaEdkY2RVYjBiVGdhZlNkNWJQaGVhV2ZwYUJlRGVBZFpld2VEZVZna2ZDZkdjM2hOY3RhWmRFZUZldWRTZG1iUmE1YVNjeGdSYnhlSGFSZTFmTmdHZlZjWmgwYWJhbWN4ZnpoQWRFZzRkemFYZ2xlc2RmZmVkVWZwYkVnWGdrY1JmWmJmZUZjcGFEZWZlbWZ0YXFiUWh4ZVJjeWZUYW5hTWVRYVRoRWExZVJlU2NSZVZhT2VhY1hoUWVZY0lka2hGYS9nVWVWY2hna2RkY1JnRmF6ZVRnRmJGYzRjY2JGZVpjMGFEYTJhdGJTYkhhV2VwZ3NjRWgzZmhmVGdUZTJlUmFxZFVoeGZrZ1RoY2VGZVplUWNXZWpjaGI2ZlJmMmZSYUJiYmNrY3Bma2hlZVVkc2JVZWVlVmVNYlRjSGZVZXNnWmNJZ0NnRWNpY0tkamI4YkRiYWdVZkZjQWNCYVNmRWNQYlplVGJzYktnWGMyZk5nSWFMYmdmcGNpZGVkMmdsZ1NhSmJ3ZUFld2dSZUFmVWNDYUhlMGFrZmRjR2VtZlZnMGVTaG5leGZCY1BnVmRoYUtkRmdWYzhiUmVjZDBkeGFSZ2VoSGZCZldhZGVBYjllcmFVYWhnUWFqZUFoMGRjZXRiQWRRZkZia2dZaG5oa2JaY0VhM2FBaExmV2ZWYlllU2VlY2thZGJrYlFhV2M1ZEtoWmVIZEVjZmFGY0did2VkZUZjaGVrZVFhV2VsZDVjdWdkZ25hTmZ2ZVJlbWNjaFdjRWJrZXhmMWhTZWhiQmZTYlJjQWdNZmljV2JsZzlkdmZjYW1kWWExYkZkQ2FCYkhnZmZ6ZnBmTWVUZVZmRmVKYkZjVWY1ZnBoZGhCYmhkd2hRZlhkUmJSYlNiZ2ZkZDFhVGhTYjlnTWRQY1hkQWJrZ0hnamMxZmNoWmMxYUpmQWJmZlVhWmFCZGRoRmJOYmJhYWZHZXBlSGZDY3dncGFrZUVja2Q5Y0JnQWVHYU5hU2JhZ0ViRmcrZlFnMmFoYVRnU2N4YVJheGhIZlJnMWJOZ0dhVmNaYTBjYmJuZlpiemdiYjBnWWVwZ0doR2FZaDFlQmVTYTljMGJMaFNiVmU1aEFiamNzZjdmRWRCY0VnVGVHZVdjUWJkaFBlQWVjaDZiVGVFYzFmUmVTaFJjVmZPZ2FjWGFRZ1liY2JFY0ZlMGdVZFVhcGJPYmRjUWQ1Z3pmUmdGaGtoc2dPZUJmOGJuZGRhRGFsYVNmSGQzaEZjVmhiYm5oaGZPYlRoemZCYnFiVGFRZWNnTmRjY0JnbGdOaFhieGQ1ZVFiUmMyZVJiQmNiZWtocGdrZmVoVWJzaFVmY2FSZTBhZGNUYVJkbGVXZGRmR2M1YzJlZWd6ZHNmT2RMZGtmVmRwZ0hibmRWYUJiRWVFZ0FmNWJDZjJiMWdhaEZnbWU5ZzhlZWJIZ2NhVWhZYjFiaGY2ZkhiR2JaYU5hVWVVYmtmVmRUZG1kbGMwZ0dlSGhCY0JoZGhGZUZiS2dUZm5jVWNSZGNiMGR4YVpjTGJEZWdoZmhKaDNoUWY1YlViaGU5aHhmVmMyZDVnNGVUZGtjOGV3Y2Fka2MwYkhjRGFYYkFmVGJVYkZjb2U0Z2Vja2NkYWtlUWJXZDVhS2RaY0hjbGNMYkZjSGFFYmRoSGFVZDBlWmhWZW5kUmV1ZGZlaWVjZG5iRGh6ZVJjdGhRZkRkRmYxYVZjeGFCY0FjVWVSYzVkd2FYZkVmSWI3YWFhMmE5ZERmRmhIYkpnT2NjZXhkQmRNZlRjVmJGYUpmRmZVYzVjcGdkYUJnaGV3Y1FnV2I1Z1JmSmZFaFlhaGZXYlRnb2ZmY1hkWGNnZmtmV2duZ1JkZGFaZDFjSWRWZ1lhVWM4Z2ZhVWJsY05lUGVaY0docGdUaEdmUmhOZ3djQ2gxZGxnV2RFYW5jcGdIY05ka2VGZ2xlU2FuZUJkVGJTaHhiUmV4aEhmUmIxZ05kR2VWZVpoMGNiZm5hWmJ6Y1pnbGIxZ05hRmhoZUplTWNkZFVob2NRaFVka2ZRY0xlY2RBYmRmTGRZZTBhaGRtZGFnUmhSZ3lmVGVuYU1hUWhUaEVoMWdSZFFoVmF0ZEFhT2FTZ1pnWGJKZkFhNGhnY0NlQmJvZ0xlZWcwZVlkaGhCZ1FkVWI5ZkJlVGM4ZzZhV2gzY2hnQWdkZGhoUmFHZURmbmJnY1ZjR2hpYm9lcGFCZjFlQmZjZlBoZ2h0YVJiQWRoZTVoNmRGZldmaGRCZkpmMGZOZWtlSWhtaEVjVWVjYlJlMGZkY1RkUmJsaFdmZGNHZDVkMmJjYjJkOGZVaElna2JKYkhnSGJqZXRoS2FHYkhnaGFFYUNhM2FCaGFjUWdtZzlnaWdaaG1ma2NVaGNha2c1ZXpiRWhFY1FiWmhVY1ZkUWdWYlJlVGgxZDlhRmFGaHBmQmRkYkZmRmNLYlRlbmVVZVJmY2UwZHhmUmdlZ0hnQmVXYWRiQWFjYzVhVWZnZGxneGRWZ2hiTWZrYlVoeGMxZXRhWmNuZGtlWmdFZDNlQWRMYldlVmhZYVNmZWFrYmRja2VRYVdnNWdLZ1pmRGZCY0xlU2NDZzBoZGJjYlVjVmVOZUhhamUwYTliZWZuZE1lN2RTYm1kZGNFYkhma2Z4ZWhlUmNoYkJjR2NWYWhjSmRrZlFmMWhSZTRiY2ZIYzllOGdHZEhmSmZlZmVnaGR4YW1iVGZWZkZlSmVGZFVlNWhwZ2RiQmZoYndkUWdYZlJkUmRTYWtiNGc3aEhod2ZjZTFjSWNSZjBlVWZLaFJmVmM5YkdkVGdOZHRmRGhqZ1ZhbWFDZ0NmTWRnaEZlaGE1YTVnR2hSZ05id2dDZzFkbGdXZ0VlbmhwZEhiWmhFYkZjdWZTZW1hUmQ1ZVNjd2J0YnhhRmhSZVVmWmJVZFJhOGJuaEZlU2dRZE9nYmUxZ3RmbmJRaGhlSmFTZ2FkMWVRYlFoUWVGY0FnQ2RmZ0hhQmhDYmJhMmdKYW1mYWVSZ1JoeWNUYm5hTWhRZVRiRWgxZ1JiU2hSYlZoT2ZhaFhjUWZRZEpoQWFrYTlmQWhqZ0VjY2hkY1JlcGZ6YVhkU2h4YjRhYmFWZFlnZ2REZjNoVmdNY0NnbmNGaFhnQmNYaEZkZmFaZ1doUmJxYlVmeGhrZVRiY2ZBZnRjWmRWZGhkSmE2ZFJlMmZSYUJhYmZrZXBja2hlYlVnTmFBYk9oVmVSYk9iTmJraHRiV2dmZzJmNWdrY0RibWI5aGJhWmQwZ0lkU2RVZG1odGVVZEVjRWRwZE5mQmYxaHBlYWNRZ21mOWRpYVplbWRrZ1ViY2ZrZzViemhFaEVkeGZOZVVhVWRraFZoVGJtZ2xhOGRUZ0RmZ2JJY0pjeWZvZllhVGJuYjRiUmJZYkRnRmZSY1poWGZCaEVhWWdSYnBkcmhWZEJmUWVsZFRmeGdwYVNkVWYwYzlla2ZhYmxhTWdaZEVjM2dBaExiV2RWYVlhU2RlZ2thZGhrZ1FoWGFSZkthQ2huY0VkZmNYZURmaGVPZEVhVWgxZU5oV2JuZVFoOGFlZ25jTmd1YVZhMmE0aGFhT2ZFYnhkMWdTYWhnQmNTaFJmQWZ0aHdoV2VrZUpodmRZYm1hWmRwYVJnbmNKZkZhY2V3Z1JlbWVUaFZmRmRKYUZmVWQ1YXBiZGZCZ2hjd2RRZ1hmUmRSaFFiMWhWYmZjRWNYZE5jTWNVZVhnaGR3Y1ZibmhRaFBmYWJ3YzhmZGdmaFdjd2NUY2VoRmhOZVBkWmVHYXBmVGhHYVJjTmd3YUFieGJkZ1lkUWVpZWdhSWNNZUFiNGc2ZUVjemVRZDhoUmFVZk1iamZWZEVla2hJZmNlQmJnaGdmQWRoZU5jemJjYmtjWWFoYlFhMWR3ZlBjSWVRZE5kZmFIZUVkUWREYUplRmhaZENhUGVXZjVibWJJaEJiaGF5ZENnM2dvZlFjRmMyY2RoUmNTYVJlVmJPZWFkWGZRZFlhY2dFZ0ZoMGdVaFVhb2NIZ01jeGhGZjdkUmNGY2toc2ZjZkVidGQwYkJnRGU5ZmJmR2ZIZ0ZhT2dRZ1hlaGdPYVRjM2hSYXFiRGR4YWxkQmZlY1FkZGdaZVZiMWJkZXplVGFtYVFiYWhSY0VkcGFrZGVoVWJzZ1ViY2ZSaDBoZGhUZlJhbGRXZWRnR2U1YTJhSmJTZzRmVWFaZjFna2JTZFViWGFVZG5hVWZRZllnTWNCYVNhQWNWaEZiV2hkZ3doYWVtaGtiTWhjZWthUmZ6ZldhVWN4ZUFiVWhWaGdmY2ZWYVVhTmMwZUdoSGFCaEJmZGdGZkZiS2FUZm5mVWdSZ2NnMGR4YVJhZWdCaHhoZWhJZUVhY2NpYkFjUmNoY3hiRWRoZjljNGFBYlVhTmNrZEloMWE4ZVpkWGZIYkFhR2ZXZlVmY2JlaGVoa2hvZnJhU2JIYlZhZ2JaYUhhbGdMaEZkSGNFaGRnSGVVYTBhWmFWZW5kUmN1Y0tlMWFsYnZmUmJtaGNmV2FFYmtneGIxYVNhaGFCY1NhUmdBZHNibWhHY3hiQmh2ZUtmbWNaZDBiRmNHZUpoQ2FXZVJmQmNNZ1RjVmZGZEpnRmhVYzVicGJkZ0JhaGF3ZFFjWGNSaFJkQmZFYTVkb2FFYVdnSmFBZ2VhM2VoYndjVmVuZFFoUGJhYjFnSWhVYmNkVWdZYVRnZWhGZU5jUGROaDJmcGVPaEdjUWhOYXJiSWFWZGxiV2FFY25jcGFIZFpkRWJGYnVoU2JtZ1JjNWhTYzFnSWcrZlRieGMxY0ZnVGdSYzRjOWZQZ1FkMGNoY0Vka2daaDZlRmVnaEJjWmVZZkVib2VXZlVlaGNBZ1FiY2VGZEZhSmFKYzJlSmQ2Z2FnVmIxZ3lhU2NIY1VjUWVSZkFjTmFSYlFid2hoYU9nZWcyZkVnT2VlZ1ZkcGUwYldkR2FCZk9hZGJSaEZhemNUZ0ZoRmE0YmNhRmJaZzBkRGQyY3RjU2RGZUdnRmJHaERlWGFnZUhnVGUyZEpoc2hVY3dka2ZUYWJoUmdaYUVnVmJrYUZiNmhRY1djSmVCYmZia2hwYWxlWmdGZllkVWNKZ1ZoVmJVZUhkbWVJZUVkZGJHYVZmMmJPZTJkOWFMZlpid2FkY3ZjVGRIaE5jTWdFZUZkb2dYZ0NmMmIxaGFnVWcyYlpmdWVUY0dia2dVaGNha2I1YXplRWhFZ3hoTmVVY1Vja2RWYlRobWNsZjBjR2JIZ0JjSmJJZEJka2VEaEhoUWI1Z0RiY2cwZmRmUmFNZEFoMWhXYmFlUWE5ZGphV2doZHdmbGdSZ2hkeGc0YkhnVWNaZmtlZGNFYTBnWmNBZTNma2NMYVZkRmFaZ0JlY2UwYmRhaWhRZFhmeGNmYmNnWGRCYlFlUGZuZEVnZGNIaFVnMGFaaFZkbmZSZ3VhZGhuYk5mdmVSZ2pmVmVUYlJkaGZrZm5jQmRCZ0FnQWZSZUFkQmh3ZUViMWJsYkZkWWZtaFpocGdGY0hnSmNPZWNleGJCY01mVGFRYnhhQWZHZldiUmdwZWRhQmFoaHdnUWVYZ1JkUmhTZGthNWMxYkdlVGExZ0NjQWdTZW9mL2hBY2podGFiZ01hZ2JKZ1JkZmd4Y0ZlQmZNYVFmY2FLZ0RlU2JRZkhhZWIzZFpjd2JGZmxha2hRaFJjemVRZUViTWVBYmdoaGJCZEdlUmN4YUhieGhoaHhnVGV4ZkZhTmNVZkZicGUwYktoM2E5Y3plTmhHZ3hhbmRGZmhmSmZNYmRhVWhvaFFoVWFrY1FjTGFjY0Zmb2hMZEtlV2RKaHVnWWJSYXdkbWFUY21nNGRRZVJjeGdsZVloUmJSaFZmR2hPaDNlUWFGY2NkRmJGYTBlRGdVaG9hY2hmYUJkMWh6ZlRjUmJSZHhiZWJWZFlmdmJKYldmdGVTZEZoSGVGaEdhRWYzZGhjVGRUYzJiUmZxZFVneGVrZFRoSmdrZ29lTGRWYWxjMWI2ZFdkbWZRZ3NhTGN4ZDRjc2hkZnhldGdiaEpnaGZVZlBhUWFSYmxlT2dkZ0dhUmQyZk9ibWg5ZExjWmV3ZGNiYmVWZjFhOWdLYUVnRmNKY0VhQ2gzZkJlYWJRYW1lOWdpYlplbWdraFVnY2hpZUpjN2dSZEFhUWNFZ0Fla2VVZVZoR2htYlZmMGRTZG5jeGZCZ1BoVmExZUtjQWZYZlVjY2VjZTFnMWdkaGVkSGEwYlpiZmdSYlJhQmFVZGhkUmV4ZFJmaGVOZDRnVWIwYjlla2JhYmxiTWZaZlRnbGNvY0xkV2ZWZlljU2dlaGtiZGJrZ1FjV2g1Y0tjWmZIYWtoZGRWYlNiTWdkZFZkVWMwZUVjVmRqZjFndWNlZjNnTmQrZVNha2IwYldhRWhrYnhjMWdTZmhoQmJTYlJjQWZ0aHdhV2drZEpmdmNZZ2lmaGJwZkNnWGVKZWZmZmF6ZHBnTWhUZVZlRmhKZkZlVWc1YnBoZGVCZmhod2dRZVhkUmVSZ1NhaGMxZDFmRGFIZk5nY2hTaGxnSmZ3Z1ZkbmRRZ1BiYWQxYkljVWFjZFVlWWZUYmVnRmNNY0plS2V6ZmhiVGJFYlVhY2c0ZFFoZ2NvZXRlUWdIaHBiTWRaZEFna2NUZFNlbmFsaDVoV2dRaEZma2FIYlJldGROZVRiVWYxYzBmWWQzZXNlN2FiZTFiaGU2YUZkZ2ZKYU1lY2YwaHdkUWNXZGdmb2ZMZ2Voa2RkZENhZmhYZ2Rid2FZYUFoOWR5ZVJnMWNrZlFiVGVFYzFlUmRTZ1JhVmFPZGFlWGFRZ1lkY2ZFZkZhMGJVZVZhcGJPZWFieGVFaG5kVGhGZWRnK2VjaEVkWmYwYkVlbmhaZFBhRmZDaEpnR2ZGaFhoNWVUZlhhMmhSY3JkVGRnZVFlVGJKYkViTWRRZEJoV2hrYW9lUmIyZTlnQmhKZmthcGd2Z2VlVmFwYnBjY2NSY3NoYmhUZlJmRWNGY2RlSGZOYTJnWWhtZ1pkS2FUaFJkWWFTZFRkSGFWZktoRWRGZEpiRWZDYTNkQmNhZVFnbWQ5YmljWmFtZ2tiY2FKaGdjWWc2ZVFnemdjY2ZnVWRVZEliVmVCYWhlUmUwYUJnWGhCZ0pnZmJGZWtnZWNUY25kb2JSZFBlVWRWYlJoWmFtZTViV2RaYkFiWmRyaFhmeGVRZmllVGh4aE5kK2ZVaDFmMWh4YWZlMWVvZkNkT2NYZEFiTGVXY1ZhWWZTaGVha2NkZ2tmUWZXYzVhS2haYUNnc2VPY1FnQ2FSZVBoVWMwZTFkTGJWZ25lOWV1ZVBhMmhoZ0ZmUmNtaGNlV2ZFZ2toeGExZlNnaGJCY1NmUmFGZ1plNWJWaG1maGR2aFlhbWdaZHBmRmhIZkpnT2FjZnhmQmRNZ1JnUmU5Z0hjUmJSaHdnbWdJZkZmY2drZkdoQ2ZRZVVkUmJCY2tmbmRXYUNnY2FKaE9mRGZZYmtlVGZuaFFkU2JhYXhkUmVCYVBhd2ZWY0hkTWJSZ3dlQmZaaEdlSWVIZ0ZjUmFNZ2lhQmIxZGtkZmZHYzNkb2RjYlRka2NGaHVoU2FtZVJnNWJTZnhkUmd4YUhhUmMxYk5iR2VRaFFieGRPY2lkTWdoaEliVWNaY3ZmUGNCYkphTWhkZFVkb2RRY1Vka2VRYkxnY2VGZXBjQ2hiZjJnSmJtYlllVWhCZXloVWMzZE1lYmFHZUVnUmVkaFljeGZWZU9kYWZYYVFoWWVjYUVjRmcwYVVjVWZwZU9mZGNSZkZoemFSaEFnTmg0Y2JkVmVaYWtiRGV6Z2RjU2ZSZW5naGRLYk9oWGFoZFRiVGgyaFJicWhVYnhia2NUZWNnQWd0Z1pnVmFoYkpnNmVEZG1iUWJkZk1ia2JvaElmY2hSYTlhY2dPZkVmNGNSYlRmVWIxZmFhZGdEZXhlNmJjZDNkNWhLZFpjd2VjYkFoV2czZmxnS2hIaFVhTmNXZUVnM2JsYldhYWFHZjliaWdaZ21ka2NVYWNia2U1YnpjRWdFZHhmTmRVY1Vla2ZWZ0FhR2ZjYkFoWWVRY0Fka2FFaENmNGVyaFBnQWdkZ3dlQ2hqaE1haWREYlFoQWJtYUdmM2cwZ2ZiVWVrYWdldGNSZWhlc2dzZVVjMWZKYWtmQmJ4aEpmTmVXZTNkNWNOYkZiUmFsZWRhS2ZFYjhid2RTZ0dkZGJHZlRlbmJsY0xkRmNIZEVnZGhIaFVoMGZaZVZmbmVSZ3ViZGduZE5hdmdWYW1lY2dJZ0VmaGdoYzFkVGhCY1pnU2hUZkZoOWV3Y1JlMGVKZjlmZGUzaE5ocGFIaDNjSWVhZWNieGh0ZU1iWGNGZGhiRmZQZDBlNWdwZmRiQmdoZ3diUWJYZVJiUmdTZWtkNWgxZ0VhWGZOZ01jV2RTaHdlNGJIYnlhZGcwYU9hU2g4YVVoYmVFZ1llQmNiZVVlWmdQaFlobWhvYUhhRWFCZjlkYWhDZTFlbGVXYUVobmRwYUhiWmVFYkZidWFTZm1lUmQ1Z1NieGdRY2piSGdSYlpjTmRDZ0hieGIwZGJlbmJaY3pnYmcwY1pjbmNGY2hjSmhNZGRoVWJvYlpoU2VXYjRlTGNjZEZlcGFDZWJmMmJKZm1jYWRSY1JneWRFYzNkb2ZjYlpia2MxaFJmU2JSZlZkT2JhZVhjUWFZaGNnRWhGYjhlSGcwZVFiZWdKZzFnNGFuZUFkd2NVYmhnSWVCYU5oNmRXZURoa2JiaFFnRGRRZXZiWGVTYnhhQ2FXZlFkZ2NQYVVid2RRZFRkTmJsZTRmWGJGZVVjWWV6Z0NiQ2VwZ0JjWmdoZTVnb2dlZVJma2NZYmNlVmRRZlVoVGNVYkpoOGRkYUdnNWMyZmNkMmg5YkdmWmF4Z1lhU2FUaEhjVmNLZFFnaGdjY1FlWGRpZkllVWFRZG1iZGNJZ1pjbWNrYVVmY2JrZjViemVFYUVieGhOYlVmVWZrY1ZkVGFtYWxkOGZUYkhnQmhjZWRjRmVvZmVoUmMzZGtlN2ZjaDBieGFSZGVhSGNCYVdmZGNBZzlicmRVZmhoUmd4Y1JmaGNOY3doQWJVZTljNWVhYmthTWhaY1RhM2NCZlpjVWhGZG9mNGhlaGtnZGNrZ1FjV2E1Z0tjWmNIYmxlTGhGY0hkRWJkZ0hjVWExZ1FmVmZpaGdieWRkYmhhOWRuYkVmaWU5ZWZmUWFVaEJmMWdIZWhkeGVTYUZhZ2hkYXdkU2dFZDVkdmVjZlhnUmErZUFnbWNWYUNoY2Z4aDFoZmZYZzBjWmRmZkRmVWVkZWxnWGNoZGhjd2ZRYlhkUmRSYVNma2c1ZjFhRWVYYk5oTWNVZFhjaGJ3Y0djSGJwYTdmRWRpYkpkeGJGYVRjbGh5Y0NhaWZFZ3ViSGFSZFVjZ2ViYUdkTWNBZ1pmQ2RzZmliT2VIY3BoSGJaY0VmRmR1Y1NmbWdSZTVnU2d4ZFJkeGFIaFJhMWNOZkdhVmhaZXJoYmJuZzViN2RPYXdjNGV1YlJiV2NrZmVjQ2NFZ29kTmZVZ2xnWWFlYVpkVmNwYkVjYmJ6YVphdmVaaFJiUmU2aEdnamh0ZlpnSGh6YVllRGhTaFJlNWFPYWViQWNrYVlnYmNVaEViZ2JVZlZiUmVRY2FieGNGZHJhUmZWZWhkU2hjY0ZkWmMwYURhMmJ0Z1NhRmVIaEZmR2VFYzNlaGZUZlRoMmhSZHFlVWR3Y01oVGZIYXdkTWZOY0hibGdzYXBoU2QyYVFjVmVZYmtib2IyY2RlVWFzY1ZjWWhSZVFiUmhaYXhjbGVXZGRkR2c1YzJlY2cyYTllR2RaZ3hlWWNTZFRoSGVWY0toUWZsYkpoUGdDYzJlSmJ3ZVFnbWY5ZGljWmVtZmtkVWRjZGtkNWF6ZEViRWZ4Zk5kV2FGZUlhL2FUZW1lbGQwZUdjSGRCZUJkZGNGZUZiS2FUZWlhZ2RZaGZlMmFaZFJhZWZIYUJmV2VkY0FiOWdyY1ViaGhSY3hhVGFsYjFoMmRBZXhlMGhyaFBoaGh4Y05mU2hpYkJkT2ZWaHdjRmFBaE1neGRNYmhiS2NDYkFoZWFkaFdoOGZwZWNhWGFFZkFkSGhRYnRnTWFHaERnY2Q2YVBkemV3Y2hjUmVtaDlkQ2ZIYWtnd2ZuZVJiaGVBZGJnVGJRZnNkcmNjY0VlSmR2YllmbWVaZ3BlRmFIYkpiT2VjYXhkQmdNZVRkUWdNZU1lUWJSY3NhN2NPZmhiaGc0ZGFnM2FSZ1JiU2NrZTVjMWFFY1hlTmVNYlVlWGVoZndkVmduZ1FoUGRZaHdoWWRVYWJmRWFZaFlkTGVGZXBmRGdUZW1icGZUZUdjUmFOaHdmQ2QxZ2xiV2hFZ25icGdIYVplRWRGaHVkUWhqZVpmNWRWZ2hoUmdoZUhiVWhGZk5oU2UxYjljNGFSYUhjWmd6aGJmMGZaYm5oRmJoYkpmTWRkZ1Vob2JRZlVka2hRYkxnT2dWZm9oZWJNZzJkSWJLZ1lhVWhBZzZlQmF5YkFnY2hUaEJjbGVkaFNhVWZkZkNhYWZXYVlhVWFjZUZiSmRtZFJlbGN4Y1pnZWhSaEZlK2FYZjBmTmR2Zlpka2M1ZTliQWQwZkZjU2FGZ0hiRmdHYUVnM2JoYlRiVGQyZFJncWFVZ3hna2dUZWNnRWhWZlhlSWRtZ3NoS2ZJZ2dmQWYraERnemhnY1dnR2ZEY0pocmVBZ21laGV0ZVBjWGdZZmtoQWFFaFJmMmFjZDJhOWZHZlpieGVZaFNlVGJIYVZhS2RFY0ZhSmFFY0NkM2VCZ2FhWGFXZzlmcWRiYWpnMWdjY09ieGEwaEliUWdqZEZnTmJUZ0VhbGhCY1RmbmhkZnFnQmZuY0JlWmNmZFZhMWZLYlJmaWNGZFpiT2ZoYzhmcWFLZG5nQmZkZmRhQmU0Z1doVWdnZWxleGZWYkFnWmF0Y1VhMGVsYmtiUGNsY29lUWRPZFhnQWhMZ1djVmdZZ1NnZWhrYWRna2NRaFdoNWhLZ1pnSGZsZkxkRmFIZEVhSGFIaFNmSWdSZ0FjamZ3Y25mSmRYYzlmdmRFZG1jc2dXYlFmRWZCZjFoU2V3YUZlYmVTZUNkRmJ3ZVdja2FKaHZlWWNtaFpocGdGZEhnSmZPZ2NmeGRCZE1oVGFRaE5kSmRIZGtjNWc3YlhjaGNoZndkUWJYYlJnUmRTY2tiNWcxZkVhWGROY01oVWJYZEZicmhmY0hiUWNQYmFlMWNJY1VnY2dVZFloVGVlYUZnTWhTYmJlV2daZzViR2RSY05ld2NDYTFjbGRXY0VnbmhwZkhiWmFFZWtlZ2JSYkRnUWJyY0JhRWdBZytkU2NVZlFhZGJYYkZjZ2ZqZlBmRGM4aG5oS2FpZThocGFRZmdoRmJlZkdjU2E4YVFjVGYwYVJmTmRKZVJiUWJCYk9neWVzZnBjSmR4Z1JnNmdHYW5hOGFRZkhka2dGYlJoQWZCYnhhT2ZNY2xiNGhZZWNlRWhGZzBhVWNVZXBkT2FkYVJjRmh6YlRmRmNFZHFnTmFRaEllaGFYYlNkVmFTYkhhRmN0YUdjRWUzYWhoVGZUYjJnUmNxYlVoeGFrZVRjY2NBYXRnWmZWZWhkb2N1aFJjM2ZsYkJlWmdSYjVkdGdkZldlRWZVZ2NoUmQwZWRjVGNSaGxmV2ZkYkdlNWcyYWNhMmI5Y0dkWmV4YTViQWVUY0djaGZLZkFjRmVJYVloQ2h5Y0poVGRUZGtlVmdpYVpibWdrYlVmY2RraDVkemNFZEVkeGhOZVVnVWhrYlZlVGNpY0JjMGRSZUNkeGNCZUdkRmNrZWVnQmdqZ3hjQ2ZmZDBod2JGaGRkSGhBZEVnZWhBZjloL2RYaGhlUmZqY1Zhd2ZkZXZoUmMxYWRjM2NmaEVkY2hPY0hhM2NBZUdoU2IwaGNoR2ViYVZkTmI4ZlVhbmZoYmVmZmZIZUJmSGRQZG5nRWdkZEhhVWYwZlpjVmNuZVJldWhkaG5nTmF2YVJkbWRjZVdmWGdFZUliQmJNYTJnQWQzaEloSGVRaFJlS2REZkFiT2ZHYXhna2ZhYlllUWdJZCthSGFHYkliNGJaYTFlRmFKaEZjVWQ1ZHBnZGRCZ2hld2FRZVhiUmNSZ1Nia2c1ZDFlRWRYZU5lVGNVZFhkQmQ0Z0FlamR4YUdkT2NDZ2xnR2hEZkVkWWVPYWVlRWdGY2FjY2RXZHBoVmZHZVVhZGc1ZkJhM2JOZldmRWJuZHBjSGVaZkVjRmd1YlNjbWNSZzVlU2d4YlJmeGNIYlJlMWNOYUdhVmhaZzhmT2dqYzRlNmVQaERmMGMxYkZmaGFsZ01nWmdEaGNnUWdUYjBkUmNmaGNkRWdSZGNlY2NXZUphK2RZY0JjaGdZY1RmbmVNZVFlVGZFaDFjUmFTY1JnVmRPZGFkWGFRYlliY2ZFZkZmMGdVYlVmcGFPZWZmVWhVYTdjQmZRZElhRGFJZGxoWmQvYURlM2VrY3ZnRmFHZHhnR2NSaDNiaGVOYlVkWGhwZHFiUWhnYzhjYWVmY0NiRmVaZVZnaGZKZzZiUmgyY1JnQmdiZGtlcGNraGVjVWRzaFVhY2VSZDBkZGJUZ1JlbGJlYkliQ2NZZS9mSWNCZlFoVWJaYXhoMGRTY1hjd2JoZEtlRGJWZklhUWNDZTJoNWZFZlhoR2M5ZHdkY2htY0FhZGhXZUVhNWh6ZEVmRWd4ZU5jVWVVaGtmVmhUZG1obGQwY0diSGJCZUJmZGFGY0ZhUWhUZGhmc2NaaEpmd2VRZlljS2YzY3hiV2VJZkFoTmdyZEFlQmZoZHhjUmh3ZU5oeGJYYTJnVmZrY2FhbGdNZ1pkRWUzaEFnTGdXYlZkWWFTZ2Vla2ZkZmtjUWVUYXhiS2RiYTNibGFmY1BjbmZFZGRiSGJVZzBjWmJWYm5kUmd1YmRhbmFOY3ZmUmJtYzRnTmRPZUVkeGUxZFNkaGRCZFNnUmFBZnRnd2JXY2tlSWd5ZmFnMmZwZURkRmZIZEpnT2VjZ3hhQmVNaFRnVmdGZEpmRmNVY1libmNlYmthZ2JpYURnaWZBaGVnSGFoZGNnbGZWYkhhMGFiY0FjemJFY2tiRWZ4aDFlQmZQYzBhRWRHaEVheWFNYlRiWmZWZE1kSmFNYVNmUWFRYlRnVmVvYS9jUmdWZWxoZWdSZ25kWmZIZ05la2YxY3VjQWIyYTFkNWZFZ0RlNWV4YkhiUmMxZk5jR2NWYVpnMGNiZm5kWmh6ZmJjMGJZYjFhVWQwaFljWmFKZndnUWhRZ1dibWU0ZUxhY2RGZHBnQ2RiYjJnSmFtZWFmUmZSY3lkVGNuZk1mUWNUZUVnVWJGZFNhUWFoYk9kWWZpZEFhUmJmaEdldGIwY1VnVWRwYU9nZGFSZ0ZnemRUZUZiRmY0ZmNoRmRaZjBhRGQyZk1kQWhGYUdoeGRHZkFoM2VnZlBkVGR6YVpjamZYYnpkTWhUaGNkQWF0ZVplVmdoZkpiNmFSYjJnUmVCYmJla2dwaGtjZWFRZUlkVWVMZlVkRWdkYklkUmhFYUNmUGNDZ2NkbGVmYTJoOGdTZ2FheGhaYUFjUWdIZVZhZWFIZ0ZnSmFXYkdkbWRSYk5oVmhuYWRkeGFjZ0hnMGhEZGZja2E1YytlQWRsaDFnWmFSZGxnMGhOZlhoWGE5YmdhQWRIaGxoTmdYZ2xkRmRLZVRobmJVZ1JnY2IwZHhjUmVlYUhoQmRXZWRmQWg5YnJhUWJoYlJodmJSZ2tlZGY0YlZoVWFsaGtkWWdnZ2NjWmJEY25nQWJmYVNiMGg4Y0djWWQxYUZkemRVYTNmZGRmZlphSGNKYUxiUWhIZkVnV2hIYlZid2dRZVdibGM1Y3VlZGFuZ05mdmVSYW1jY2JXY0Vna2J4YjFhU2VoaEJmU2hSYUVoVmQrY0xhamJzZmZlQmV3ZklhV2hkY1FmQWI4ZkVhbWVraHphUGJpYVFkNWFaYVNmRWJiZkFiRGZKZ3diUWhYYVJjUmJTYmtkNWgxZEVmWGVOZk1kVWRYZWhmd2RWZm5lUWRQZ2RjRmJJYWNkZWdSZUpmYmVNZFFiQWgwaE5iaGJkZFRmQmhCYk1ka2JDZjBiZGVJYkRiSGNwZFZmY2ZFZGhmaWFZZkdhUmQ1Y1NmeGdSZ3hnSGJSZTFmTmNHYlZoWmEwZ2JhbmZaaHphYmUwaFpobmdGaGhlb2JZZVBnUWJOZERkS2NSYlliTGFlZDFncGdUY0VibWFKYzdoYWFVaEJkeWdVYUdlMGJPZFRlRmV4aEhjUWVCYWxoa2dhaFhmUWVZZWNjRWJGYjBoVWFVaHBnT2hkaFJmRmN6YlRiRmFGZTRjY2NGYVpoMGJCaHpoOGNhZlhkU2ZJZjlmUWhYaGhiWWhUZTNkWWRYYVVod2ZRY1RlSmRBZHRjSGhTZUFleGc2YVhhMmIxaE5nUmJFYXBna2dlaFVkc2NVY2NjUmMwYWRnVGNSZWxiV2RkZUdoNWUyYWNjMmc5ZEdlWmR4aDVhR2NCZERod2VaZGFld2FCZEVlQWNIYkJmSmZQZzJiOWUvZFpjbmRzZ0JiWmgwZzVnMWZFZ0JmaGRFZVdkR2RNZlZhVGVtZGxoMGdHYkhnQmZCY2RmRmRGZ0tlVGRuZVVlUmVjZzBheGhSYllibmhBaDRlZmVGZXNmamFHZDBhZGc5Y1Jha2dkZDBnVWJ4YjFib2dhaGxkSWdJYUdnbmN3Y2hhV2FWaFlhU2NlY2thZGZrZFFlV2Y1YktmWmFIZGxoTGRGY0hiRmNQZ0hiVWZZY1pjUWRsZDVjdWFkYW5iTmJ2ZFJjbWdjZ1djRWFrZ3hkMWFTaGhiQmJiZFhneWVGZXdiV2FrZ0pidmNZYW1iWmFwYkZhSGFKZE9nTGZoYWxjQWVaZzFmRmhKZEZmVWE1YXBoZGZCY2hod2FRaFhkUmNaYkJjRWJBYWxjUWh6Y3diWWhIaGlhd2JwZkJnamJFZUJiUGdBY0JkZGNKZ1FiTmYxZU5nQmh3Y09nTWVBZllkMmFHY1FmNWV3Z1RnUWZ3ZFliVWhTZDRmT2FLY3dmOWN1Z1FnamVCYzFoU2MwaFpjOWdIZVZhUmhFZUdkUWcxYmVjYmZuY1pkemdiYjBoWmhuZ0ZoaGNKZU1jZGNVZ29mUWNBaEFoRmNmaEpnUWVnZ01jYmJ5Y2xidWRQY1Zhd2E3ZUhjWGE4Z1FnR2NFaEZjUmVHZXhlbGdPaGFnR2dRZlVhY2NBYmhkOWVTaG1iQmJPaGRiUmRGaHplVGZGZEZnNGJjZEZnWmgwZlVnbWVKY2VmUGFuYUZnR2hFZDNiaGJUZVRnMmRSZ3FnVWN4ZWtjYmZQZGdmVWJKZUJhRmcwYXViQ2NEZkFhWWdQaGdiOWRxZkxkaGRsZmRmSmZWZWhjN2hBZ1ZhWWJYYUlhQWR3Y1RnY2IzZEpnR2VJZ1VhTmVjYkRoeWZFaERmWGR4ZXhnRWdBZ3lhUmJXYlFmamYxY3VmWmZpZUFiZGZjYmhlVmFaY0VhRWh4YU5iVWhVYmthVmFUaG1hbGIwaEdiSGRCaEJkSmNoZlFmZWNHaHljZGZmY2Nod2FkYlpkTGhEaGdkZmVKaHdoTmdyaEJnaGVoZnhhRmJCZjlmNGFVYmxnNWdvY2FjaGVvYVFkQ2ZGZW9mTGRXYlZlWWhTZ2Vja2VkZmtmUWFXYzVoS2hPZVhjQmZIZFBmbmVFZmRhSGVVZTBnWmNWZG5nUmV1ZmRibmhOZ25iQ2hHaGxnR2VRZkFoTWdoY0JkVWhRY0xiRmFFYzVhK2NEZFJlQWZtYk5haWJNZE5hV2Z5Y2NiTWRQZzFnVWdnZEtkRmRGZlVlRmRRY2dkOGVPYWxnc2ZrYkNjRGJzZmZnU2VrZ1lnaGNIaFhmTWVlYVhiWGFnYzVkWGczYlJhVWJRZFZnSWhVYWNkVWNZaFRhZWRGY05nUGRaYUdmcGdUYkdnVWJFZjFoWGh3aHdmRWVYaEhkb2JOYWJoQmhVYW1oQWJ6ZmRmMWhTYTBmQmI5Y0hjVWg5ZEJnR2JWZWRia2RZaG5oWWE2ZFpibGcxZU5jRmJoZkphTWhkZFVib2FRZlVha2VRZ0xmY2VBZWRoTGdZZjBlaGhtYWFiUmZSZ3lkVGNuZE1oUWNUZUVhMWZSZFFnVmV0YkFmT2ZTZFpnWGVKZ0FmNGVnaENkQmFvZUxlZWcwZ1lnaGhCZFFoVWI5Y0ZkQmNrYmhlVGZTZmNmWGRkY2hlUmZHZERhbmNnZlZhR2RpZ29ncGVCYzFnQmZjZlBkZ2N0aFJkQWdoZDViNmFGYVdnaGFCZEpkMGROZGtiSWNtZ0VhVWNjYVJhMGFkZ1RoUmZsY1diZGRHZjVoMmRjZDJmOGZVZUlja2dKZkhoSGFqZ3RnS2FXZGxmb2FRYlFmemdrZEpnVGRtZDhhMmJhY21lbGNHaGZha2g1aHlkQWhVaEJoTmNHYUVjQWZPZFpoR2dsYzBiR2NIaEJiQmNkYkZnRmFLYlRnbmFWZE1mZWFraEJjN2RlaEhnQmFXZmRhQWM5Z3JjVWhoZVJheGhSZ2hjc2MyZVhnUmQ4aDJlSmZRZ2RmV2JSYnljbGZiZEhkRmhoY1JnTmJSZGNoOWhRY1hnTmhLYklmaWR3ZEZkVmF5aFZmVWRVYWdmTWhaaFhnaWZCZmlhZGJpYUZjamRSYmliNGZhYUVoZ2VsYjhmU2hrZnRoNGVSZUFldGF3YVdka2RKZHZkWWNtYlphcGFGZEhlSmNPZ09hbGVaZ01kUmhYYnRoSmFGYVVjNWJwZWRiQmdoY3dmUWNYYlJjUmZTZWtnNWMxaEVoWGNzYUZjVWRTZlFjc2JWZm5jeGZHYmFjMGE4YlViWWJVZThjZmZVZGxjTmFQYlpnR2VwY1RkR2NSYU5od2JDZTFjbGdXZ0VhbmVwYUhlSWNVY0VleWFGaG1hUmNwZVNid2FsaHNlQWVCZjBoSWZHY1Fnb2VvZWJjbmU0YjJhYmYxaHRhbmVRZGxhb2FGYkpna2hSYWNmRmZ3ZXBjTWNKZkJlSmhMYllnMGhoYW1iYWJSZlJoeWZUY25mTWRRZFRjRWIxZlJmU2dSYVZhT2FhZFNoWWVZZWJhbGZ4aDBnQmhVYlFiQ2ZNZEZmOGYwZkdjQmVsZzRjZGVsZEJkMGhCZHpobGZTY0NnWGRFYVNjSGRUaFFjV2RBZ1NlTWErYkdkeGhBYWZlV2ZnZ3RnWmNWY2hkSmI2ZlJmMmNSZEJnYmhraHBma2FlZVVhc2JVYUlieGIxZEJkRWdSZGxnZWVKYm1hNWNyYWNoM2Y5ZlBmYWR6Y3doU2VUY0hkVmNLZkVjRmZKaEViQ2EzaEJkYWdRZm1jOWNpaFplaWZ3Y1VkYmRFaDVoamdFZkVicGJMZ1VjUWJBaFZjVWNHZ2toeGRHYUhkWmdIYmRiRmhrZFBnVGhtaGdjUmJPYmtmVmJkZlVjbmVCYldkZGdBaDlocmRVZGhkUmN4YlJnaGVOaDRkVWcwYjlja2hMYzFkTWJFZURkbWMwYkxhRWFGZzhhNGJlYWtiZGFrZFFkV2I1ZEthWmhIaGxlTGdGYkhjRWhkZkZlR2djYVpjVmJuY1JodWJkZG5jTmZ2ZVJnbWRjZ1dnRWhrZHhlMWZTZWtlSWVYY0VnRmc0Y2ljRmdFYUpiL2NlZ1VleGhwY0ZoSGNKaE9jY2J4ZkJhTWZUYlZkRmRKY0ZoVWQ0Y2dkTWVoaGhnNGhVYVhnUmFNZlZoMWVOZDFjUmJYYTBjQWJGYURmWWEzZUFoamh3aFBlTmR3ZTRmVWZZYVVoWWVPZlpoVWI1ZFBoTWhDY0lnYWdTY2hhMGU4ZFRiaGJjZFJlUmhqYUpkT2haZUJjTWJyaEhkamhFZnJjQmFSZlJlaGRCYWplZGdOZ0dlVmhaYzBhYmRuZlpmemFiYTBnWmduZ0ZmaGdJYkZlTWEwaG9jWWFRYmtkUWdWZ2NnQWRoZkxjYmd6YllidWZPZTFmc2NsZlRiamIxZVZoR2MwYzBhamFDY0Zmc2RKYUxoQmNGYUtiSWVnYjRobWRXYVVhZ2JhZU5mRWZNZDBkQ2JRZlVhTGdKaEJiY2FtZ1djMmhzYWRmUWNTYVZmR2dYY0RmNWhUY0RnU2JzZS9lSGNWYTFnQWVjYmdnSmRDY2ZhQmFKaDZlUmgyZ1JlQmdiZ2tocGZrZmVhVWFzZ1VmY2VWYVJjYmRUYlJhRmhHYmRmSGZCaDJhT2ZtZDhnYWhPYnhjWmViaFRnR2Z0ZVhkRWJBZ1liTWVRZWloTmNVYkRnaWhvZHNnSWVUYzFjY2RlYTJjUmN6Z0VkRWF4Y05kVWRVY2toVmZUY21kbGgwYUdkSGVCZEJnZGZBaFVhQ2dIZ0RjcGdHZ2Nmd2FJZ1VnTGEzaEFka2JOZFViRWZzaEZhM2JFYWpmRmJGZXdhcWJXYzBhMGMzZEphUWJaZkxhVWNEYlZnNGZEZFJhZGdBZExka2djZHJoRmJEZ3BnS2JLZXpnOWNMYVZjamU1ZklnVWJ3YmxhS2JWYUhhMWUxZlhoSGROZ3ZhUmdtYmNnV2hFZWtneGQxZFNiaGJCaFNoUmFFZ0lkMmFXZGtncGIvYlllbmNoY3BlVWNYYnRkT2dKZDFoZ2RlZEFjZ2RaaEpkV2V3ZHNmK2hkaEdmb2d4ZERjemZNY1VoTGV4ZHdibmRYYmloRmRFYVVleWdzZS9kQWN5ZVpmTWFMZGpmZGZhZE5mVWhaYWNhTGZRZGRoUGFLY3ljeGRUYVdoMWZ3Y2xlUmhSYTBhRmhFZEhoTmVjZ1Rja2JGYXVmU2RtYlJnNWdTZXhhUmF4ZkhkUmExZ05iR2ZSZE5kMGZjZkhhWWhuY0pmd2c4ZzBmR2JGZDRjSmVPZndhMWZFZ0dia2NRZU5kZGVsZ3BiS2JLY21mSmQ3ZmFlVWJBZTZoQmR5Y0FjZWFBZEFkZ2dmZERoa2JFZEdoWWVIZ2djeWdjaEVmRmgwZVVjVWdwYk9nZGhSZEZlemFUZEZhRmI0Y2NjRmJZaGdiQWZTZGNlWGVXY2poWWJTY1dhM2VoaGVmVGV6ZFpmcWRUY3hnbGhXZWNmQWFaYVplSGh4Z0pmOGdRZ1dkUmNKY0tnMGhwYzVlZWVSYjhmYWdQYVZiaGJUZENka2QwYmVoZGRHYU5hMmRJZVdnOWVOaFpjMWU4ZmJnVmgxaDlmS2NFZUZoSmZFYkNmM2FCaGFjUWJtZTlkaWVaYm1hbGVDY01keGV4YnpkWGcwaEJhbmJVY1Vja2VWZ1RhbWNsYzBlR2hIY0JkQmZkZ0ZkRmhLaFRobmhWYVpiY2QxaEZoUmRQZ1hmQmhiYWRkRWFaYXdiZWRCY1JleGZSY2hmTmI0ZVViMGQ5YmtkYWhsaE1oWmdFZHpibGZOYldhVmU1YkdnTWdnZDRiM2NRYlhjTmdYYmVoWGFrZWZnRmhIZmNoYmRIaFJlOGNaaFNhSGZRaG5nZGNuZ1ZncGNSaGllSWZXYURnRWh3Zm5hUWV6Z3BiU2hSYkFidGJ3ZFdoa2RKZHZoWWFtaFplcGNGZEhkSmJPYWNoMWdZY0RhSGIxZUZnQmJXY2tmNWQwYWRnRmhCY3dlVGFIZlJlQWJVZ1VkNGQ2Y0VlV2IxZlJmVWdXZ2hicmNWaG5ka2hDZUpkRmFzZlVhSmZUZDFjY2NlZEZiaGdQaE5oaGNkZ1RiQmRCY01na2dRZXhlQWRGZGFkVGZWZEhkYmMwYUVibmROZDNkOWFUYVNoeGdSY3hmSGJSZzFoTmdHZ1ZlWmcwaGJhbmhaZHpoS2JnY29mMGNVY3hjSWVGaE1lMGNvZ1lnUWh3Y0VoWWNjZkVoUmhDZ0plMmJJZzZkTmhSZVJjemdBaEhiMWVraE5hVGcwZDBnTGVXYW9mdmFHY3dhWmM1YUNkVGc0aEhiSmVEZW9iK2hHZG1iTWFIZlJlWGZ0ZDRmY2NGaFphMGhEZjJmdGhTYkZnSGNGYkdiRWUzYWhnVGRUYnloSWdsYkFkUmNrYmJmUGV3YnRnRWFWYWdoSmhoY1JneWN4YkJlY2VFaG9jcmRZY2thc2hmZGVkbGVJZ1VlVGJVaDBjdGFPYzJoNWY5aGNlemcwYjdoWmV3YnNmU2hHY0RjMGFEZlFleWVrYkxlQ2YzY3RoYWNDZHhoSmg1ZVRkR2hrZ1VhY2ZrYTVoemZFZkVjeGROY1VoVWdrY1ZlVGZpYndmNGVTZHphVmNCY0FiUmZnaEVjR2htZDFhd2hJYVJjNGVRZklnWGg0ZEdhSmJrZ0FjL2ZIYlVoQWZvaEZkbGhaYzJhQWFBZ29id2NaZkJmQmFZY1hnemF3ZkRkRGNWZG9hU2RMY2dkOGF0Y0VkbWVBZFpnTWJUZnNhS2JSZGliTmdjY1JiRWZWZlFnV2VuYlFlbmhkZW5laGN2Y0RmbWQ0ZmFkRWZoZDViOGhVaFRicGZTYVJhQWd0Z3dhV2drYUpodmZZYm1oWmJwZEZnSGJJYWNkTmVrYVFoWmZIYXhnOWdKYVhlVmZWaERmZGhCY2hjd2ZRZlhlUmZSZ1Noa2E1ZTFmRWNTYTVoRmRYZ1ZkSmJ3Y1ZibmNRZVBiYWMxYklnVWJjYlVhWWVUYmNiQmcxY0JiTmJEZ2dnY2FUaFZkd2JraFVnZ2VraFRmSGNEZHdoT2hLZEFkMWJ1Z1ZiMmdRZC9jSGdsYm9heWhTZlZmUWZDYlZmMWdaYzhhT2JuZ3BmemZQZ1VmcGJuaFhjeGM1ZE1jTWJFYk1oUWVDZldkNGJMYmNnRmZwZENlYmYyZ0pibWhhZVJlUmh5Z1RmbmVOZlpkQ2VrZDFjWmRTYjBiWWVhYU9hemExZVdnTmUwZE5hMGRUZUZiZGJPY0lnVWdnZWpmQ2FSYTRjK2JjY0FiSmQ5ZkRhemRCaDRnRmVIZEZiR2RFZDNoaGhUaFRmMmdSZ3FmVWh4Y2tiVGNjYkFic2ZRZ0VjQmVKYnljYmdXaFJjQmNiaGthcGJrZGVlVWZzZVVjY2FSZzBnZGZUZ1JhbGhXYmRoR2Q1ZCtiY2ZUYndhU2ZOYVZnOWJjZENhM2JkaEtmRGNVaDlnRWhYYnlja2dLZEJieWFBZGtkWmdqZXNkK2NjY2thNWV6YUVjRWR4Zk5mVWhVaGtkVmVUZW1ibGEwYUdnSGhCaEJnZGZGZkZhS2ZVZVhoVWJaZWVld2NsZFJmWmVYZkFjRWdmYlFlTmJyY1dma2RaYXhnV2F4Yk5lb2VXZGtoTmhrYVlmaGVvZVpiRGFuY0JnZmVFaFJjOWVCaGRlQWhzYWhjRGZ5Z2tnZWNMZUhkQmJDZFBibmZFYmRlSGFVYTBkWmdWY25nUmF1ZGRkbmhOYXZkUmZtZ2NkV2FFZWtneGExY1NkZ2NwY1NlUmFsZmdma2hDZ0Fkc2FoZkpkV2NSY3BjQ2FXYTlkT2NKZzBia2djYUNkQmE0YVBiRmJRZWRlcGRjZWhjNWV3Y1NnWGN3Z1VmU2JsZk5iMWZXaEhkcGJBYlVkWGFBYzVoVmdtY2tiUGRQY3hmcGdkYUlja2RoZmZjUGhSZzBmSWhNYkNhSmdhaEVoQmI5ZWFhQ2QxZmxkV2ZFYm5ocGhIZVplRWVGZ3VkU2VtZ1JiNWhTZ3hjUmN4ZEhkUWd4Z05oQmRFYXRhcGdiZ2lhSmQ5ZUlmd2dNZnBjVWZVZlliRWRmZ0dhQWJRZVVna2JRYUxlY2RGZ3BmQ2FiYTJkSmNtY2FkUmFSZnllVGZuZW9nUWhGZzJkZGFSYVNhUmJWYk9hYWdYZlFmWWRjZEVlRmEwZVViVWNwaE9nZGhSZEZkemJHZmhiQWRxaGNnQmNsZDBmRWJtZ3NnR2dHZGpmSWdPZFVlaWdvZndhQWRDYkFidmVNY2thMGNiZFliQWJKZUNhZmRCZ0pjNmFSZDJiUmNCYWJna2NwZmtmZWRVZnNnVWZjY1JkMGJkZVRiUmNsYUVkWWhYZmhlMmJiZFdhOGNKaFpmeGJBZVVjVGZIYTBiZWRFZUVoOWNFZ1JiSGVsZEJlYWZHZjloaWdaZW1ha2RVYWNha2c1ZHpkRWNFYXhjTmdVZ1Via2NWaEVkMGVOZjBnR2ZIYUJkQmJkYkZmRmhLZFRmbmZVZlJnY2MwZnhlUmVlZkRna2VRYmRhQWhjZTlhSGZWYTBnMWJSYWdoTmM0ZVVibGJKaDVkYWVoZlllWmFGYlhhWWFMaFdkd2RWYUdoS2dBZDRicWZCZ21neGRLYlplV2FSZ0xjUWhDaGhjTmhXYkFjSmFmZVZjamhGZm5hWGFIZU5kdmRSYW1jY2hXY0Vja2d4YTFoU2ZoY0JlU2RSaEFhdGd3aFdka2FJZjdnS2dqYlFkbWFRYTNlSWhBZE5ja2dkZU1nT2NRZWdkWmJVYkNic2g3ZkphbGJjZ2lhU2NYY1lkVWdCYUFnMGQ2ZlZoVGdvYUNkRmhuYWdnOWhBY3lkZGFiZGFleGNCZFJkY2ZRZWNlVGRLYndlY2NkaExmU2hRZlVmR2d4Z3BlcmhJZVZibGRXYkVkbmVwYUhkWmVFZ0ZidWFTZG1nUmU1ZVNieGhSZ3hhVmFGY3RkTmNFZ1ZjUWhuZU9kaWNRYjZnSWFRZkZhbGhGZ2diOWFSYmRjUmI1Z0phQWRnYUZhRWJOYmxlb2RIYmJlMmZSYWdlYWJSYVVmOGdRaERhcGdEZktjUWVNZlNjQmJsY0VnSGdKY3pmTWdRaE5hVWdoZzljZWUwYXBoT2NkZ1JoRmd6YlRlRmZGaDRkY2dGYVplMGVEZDJidGJTZEZkSGdFZ1NmV2d5YW9kY2dHaEdkUWNrZ0Zla2g0YlRjQmVGZUljSmVFZDNkY2ZvYkZhU2VzaFRjWmZrZ2dlUmJOYndnQmZhZFBka2FwZFRhVGVWZHdhWWdOZnljRWV5Z09iaWhFYUJmZmNSZFloUWZUZEhmNWRLZFZmVmh0aGZnSWVYYkJmYWJRaG1kOWhpaFpnbWNrZlVjY2hrYTViemdFZkJjRmZOZ0ZoQWVWYkdlQ2IyZGxhMmdWZGloVWFNYk5naGJRZFloVGdIYVVmTWRiYWtnd2ZGYUljU2FBZFRnT2UwZ2xocmRCZmhiUmgzZFFoQmNOaHdlQmUwZzlhNWhhZmthRWhNZkJobmJBYk5oV2FRYUliYmVZZFdhMWZrYlFhV2Q1Z0tnWmFIZ2xnTGVGYUhoRWRkYUhmVWcxY1FlRWVIZFJobWJaYW5hTmN4YVJhamRVZldjVGZoaEJkMWVIYWxjZ2NiYUZhd2dVZThoSGV3Y3dib2VOZGliNWFwY0NoSGRJYWNoY2MwZndnUWdUZlFhVWVCZVhnQmQxZm5lT2VGYTBmK2ZCYWliQWJaY1NhbGdKaDFlV2hIY3BibWZVYlhkaGd3Z1ZnbmVRaFBnYWExYkliVWFjZFVhWWhUZWVlRmFNZGJoTGdEY2dhY2JUY2hoTWQraFRlZ2I1Y1dmWWJEZHNmSmZJZ3doUWZMZkdoRGhZaDJiR2hSZnhnemJjZ2tjZ2ZaYUdiUmhrZ3lmYmhpaFFleWhJaFFmRWhpaEZobGNzZUNmTWhRZjloSWZVZ0VjMGFRZFdlbGZwY0NiYmEyaEpnbWZhYVJmUmZ5aFRobmdNZlFoVGVBZlFkWGVTZ1JiMGJjYmFiV2ZvaEZkY2FBY2hjOWZVZVJnZ2RMZUlnVWJRYWhmQWVsZ0Vic2ZPaEJmOGFuZEZlRWdGZ1NiRmVIZ0ZjR2dFaDNoaGFUYlRiMmVSYXFhVWF4ZGtkYmhJZGdndGVIaFNkQWd4ZW5jUmYzYlJjSWZZaG1nQmhrZGVnVWdzYVVlY2hSZzBmZGNUaFJhbGFXYWRhR2g1ZDJoY2gyZWNiUGNaaHdmc2RTZEdnamFvY0RlVmhGaEpmVWFDYjJnMWVIZVhlMmY4Y3JnWmRuYVlnVWJKaGdnWWQ2Z1FoMGVJZEJmRmhBaGRkU2RHYmloRmIwaEFjbmhBYkloZGFFYzljVWdVZUhiVWJCZ2Vka2hCYTdoZWFIaEJoV2RkaEFjOWdyZFVlaGNSZ3hoUmNoYU5nNGZVZDBhOGV3Y2FmZ2Q5Z0ZiRWczY2hhZmFXaFVlc2hTZmFla2Y1Yi9oYWYyZTViS2NaZkhlbGZMZEZlSGhFYWRmSGRVYzBhWmNWYWlhSWZ2YUpiSGRNYW5kWGhVYTBjV2dFZmtoeGIxY1NlaGdCYlNhUmNBZ3Rod2JXZ2tkSWdtZkpjR2NaYWhiRmZqYndiYmNQaGxnSWNKZ0hmMWJOYkpnQ2JGYk5lcGJJZUViRWVnZEJlRGNzYVhmU2RoY3BlOGNFY1RkVWFEY0FjM2doZTRoSGJuY1FkU2ZhZndkQWNQYmNnUWc4YlRiWmdsZU1iSGJmYzJjcGFZZUVmbGV0ZzVjQ2N3YTBnZWNXaHlja2Y4ZExjRGJ4ZHVhVmMyY1FidGdVY0RkNWF4YUhmUmcxZU5kR2FWY1pkMGJiY25lWmF6ZmJoMGVZYmllV2VrY0ViSmRkYlJhRWM2aFVma2dRaExhY2hGaHBhQ2RiaDJhSmJtYmFmUmVSZ3lnVGZuZ05iR2hEYVJkOWhSZ0dlaGRWZlRmYWhUYm9kV2NPZVJoSWZXZ0JiQWZ3ZElkTWdFYk5iN2ZHY0ZhaGc0ZGJnMWJZZGdoRGYzY0ZoU2RmY0hna2JJZFZoaWM5YlRoQWhXaHdiK2RYZXhibGFXZmVlUWVVZ05iR2hXYkVjdWJGaFNoMGNQZ0tmVWdKY3RjY2JFZmNjK2hjY1JjMGRkZlRmUmJsZ1diZGZHaDVjMmhjZTJjOWFHZFpleGdZYVNiVGdEY1JnS2hEYVZmSWRYYUJkVGN3Z2ZmRGhDYmdoMmJMY25kSWYraGNma2U1ZHpoRWZFZHhjTmNVZlVha2JWZlRkbWZsZDBnR2ZIYUFiSGVPYndjTmFLZVJmamEwZlJoYmRrYnhjQmNZZjNkQWJmZ2RnQWdKZnJoQWdCZlJidmRSZGxndGVqYVVmMGdSZXZjSWVsZG9oWmRSaHpmaGVDZUNnaWMxZGFhZWZrZnhia2dFZXhhTmJLY2ViWGhrZ1liYmZ6ZGtmZGZHYkVkMWVZZUtoMmQ5Z0VhZGVuZU5mdmhSZ21nY2ZXYkVja2V4aDFiU2RoZEJmU2FHZVNlRmR3Y1dka2JKYnZjWWZtaFplcGZGaEhiSmZPY2NneGRBaGVmQ2dBZVVjY2hSYXdoQmZwY0loRmZBZzVnRWFtZTlkN2JTZmtkNWQxZUViWGJOY01oVWVYZ2hld2dWZmlka2NHZmNjSGRnZlVkY2ZVYlljVGJlYkZmTmJQYlplRGJ3YVNiU2V4Z01naWFYZzFlbGNMZUVibmZVYjhhR2drY29jU2RSaFhoUmYwY1VhbmNWYThhWmIxZHhjQWFRaDFnc2hMaEVhM2NrZjBoZGJHYnhibmFGYWhnSmVNZ2RnVWZwY05nWGNBYmRmS2dQYkJhWmdLZVBiV2E1Ym1kSWVCZHhobWRSYTNmb2daYlZjMmNkZFJmU2ZSZ1ZmT2ROYkhnZ2R5YmNjRWZGZTBiVWRRZ3doYmRPaDFmSWduZ0JjUmY0ZzJhY2NGYTRmZ2FBYTJmc2hBZ0dnSGFFY1BiR2ZuYmdmSWZaZ1diUmNxYlVjeGNrY1RhY2RBY01oTGNXZkdkY2dUY0thUmRCYlNnZmhFZnBjNWZlZFFoSWZjZWFoUmRRZVViUWVSaGxlZWZKYW1iQWhEYUdkZ2NFZnlkY2RRZEloU2NVZVhkVWREaEdkRWJ0ZU5kQWRtZnRkd2hRZW1iOWNpYVpkamNRZFllV2hFZTVhemFFYUVid2hMYkJjQWJkZ1dmR2ZpZkFlN2RWYm5mQmhKZElnRmgxZEtkSGNIYmtiUmZPZ2tlVmVSaEliMWdwY1dhZGRBYjlhcmVVZ2hlUWhsZFNiRmVZZGdlQWN3YUFhMmFQaGdiQWVaZ0RjbmJCY1FnV2ZSaDRoQmNhYUZjMWdrZkNoR2daZ1plYmJYY1ZkTGhYY0djY2FKZ0JiMGIxYlFjWGRtY1ZlK2RmZTNnTWV5ZlhkVWIwZldoRWhrZ3hlMWdGYXhjeGQ0Z1JhQWd0ZXdoV2dnYlFhNmNMYkNmVWI5ZVhjVGUwYUFmY2h4aGdlWWRRZlZiRWFiZ0dkVWg0Z2djZmdSaGdmcmhhZTNkUmVSaFNha2c1ZzFnRWhYZ3NiS2NCZkRlWWR6YUFjamcxYUFhSmFWY0lhY2NJYjBhOGNUYUlnM2JsZ1BnWmZHZHBoVGNHZ1JmTmV3YUNjeGY4Y0RoWGJEYmtiVGJMZ1FnNGRnZVNjaWZGaHhjSGZ4YjFjeGhSaGpmZGJOZEdkVmRaZjBmYmNuY1pjemhiaDBmWmJuZ1VhRmUwaGVoZGdVY0pmR2hFYXhjWWdMaElhbGZwYWZiYmF4YmtlYmFaZVJkUWM3ZlRobWI0YVFoWGZFYkZnUmdEZUJmVmFUZWFiU2hBYVdhUGRBZ1FkNmdGZ2hhNGJHY2JiaGdFYzJmVGNFZDljNGhPZVViMWYwaFJkbWJCZ1plSGhYY0VhZGNPZ1hoaGRUY1RjMmVSYnFnVWR4Y2tnVGJjZUFmdGJaY1Zna2NRYjdlRmZXYVFnT2NiYmxhZGhrZExjVWVWZFhlT2RWYnhiUGRMZ2xiWWNTYk1kUWM4ZGlhZWV5Z1pnUGVmZkRmd2hTZVRkSGVWZUtiRWVGYkpiRWJDZDNmQmZhYVFlbWQ5YXpnZGNIaEVoVWNiZEViNGY4Yk9ja2F4aE5kVWdVZmtoVmNUY21kbGIwZUdjSGRCYUJlZGFGYUZlS2dVZlhkVmJEaGZiUmh3YUVhS2Z6Z2hhZWVPZ3dhWmhCY1VlaGRSZ3hiUmJoaE5hNGFVZjBkOWJrYWFlbGRNYlpnRWgzY0FiUmhXaFViUWZDZWJnbGI5ZmthWGUyZTRiRmdUZG5hbGVMaEZhSGVFZWRmSGFVZzBlWmFWaG5oUmR1ZWRmbmNOZ3ZoV2JXZWRmRWNIZkJnd2RnaEdkVmNoYmFnVmJSaEpnaWJXZmhhNWR2ZmFnaWZsYXBlQ2FtZ3hhT2daYlJhbGFBZVRjVWFCaGJkRGdVaDRhMWRkaEJjQmNtaFVhbmdSYlhnU2FnZ0ZhOGNHZUZlbGdNY1VjWGdoYndkVmVuY1FjUGVhYjFkSWVVZWNoVWZZZVRnZWZFYWxjUGhjZlhhOWNCaEFjQWNWYndmRmNWZmtkWmdFaGloWWdiY1poQWY1ZXVkVmZIZWxoNWJYZGdoTmJpYkNjUWNsY25mR2FWY1piMGhiZW5iWmF6aGJlMGVaZm5hRmVoYUpmTWJkY1Vnb2hQZFViaGhZZkZnSWNBZzhoUmNKYzJkcGUwZ2Vkd2JCZXliRWduZk1kWWJBZDBlMWNQYVZleGhWYWZlZWUzYTBoVWJjYkZmQmVtYlNlVWZvYVNnZGhSYmxiN2VBZzFoRmdtZWJibGVaZWlnQmVtaHRhVWNGZkdkZGZWZEdjbmVSYVRnWGJuZFpneWRVZjBkVWFUY2VjQmUxY0toVmVoYVJoNmFDY0doMWJJY1JjRWVwYmtjZWdVY3NjVWNjYlJhMGhkZVRiUmJsY1doZGhHYzVjMmZhZldnOWNPZUxkaGYwZVpoUWVGZzllS2FFY0ZnSmNFZ0NjM2ZCZGFjUWVtZjlnaWRaY21ja2NVY2Nka2Q1ZXpkR2dBZk5hTmRUZUVka2REZldhM2F4ZW5iRGRuYUJjS2FkZkZibGVDZlJnbWdRZUJjWWZWZjlhUmhmYW5oQWNaY2ZjUWE5aDNnVGNoZVJiZ2ZWY2hocGQ0aERhMGM5Y3NlZWcwZk1oTGJBYUhlQWJOY1dnUWJJZGNiT2FRYjhkbGhFZHdoMGhGaElkRGF3Z3FlUWZIZmxoVWNGY0VnUWFRZVhiM2hoYUVmZGJuaE5mdmVSYW1jY2RXY0Vka2V4YjFmU2FoYUJnU2RSY0FmdGZ3ZVdhaGZCaGhlTWVqYU1nNmVYZ0hlcGJraGNneGJCYk1lVGNWYkZmSmFGZFVjNWNwZmRlQmhoY3dmUWRYaFJjUmZTZGtnNWQxYkFkMmVkZGNlVWJTZVJmd2FYZWpic2ZQY2RjVWV3aFVlWWZGYjRnYWZkZ0hmbGJQY1pnR2hwYVRlR2NSY05od2ZDYTFhbGZXaEVmbmdwZ0hlWmNFYUZidWhTYm1mUmJvaFdkUWN4ZnhjUWZSZjFiRmNFZFJjbGMwZGNoR2JoaHpoZmRsY1JldWNGY2hnUmZNZ1loMWRrYVpkWGFtZTRjTGFjY0ZmcGNDaGJmMmNKaG1hYWdSYlJoeWhUYW5hTWFRZFRkRWIxZlJkU2VSYlZjZmNlYjJjd2JZYUxiRWdGYThoV2NRZ1ZoT2hhYndlOWd6aFdnbGJoZDRiZGdsZVpmaWdIYkdjSmhlZlBhbmdGY0diRWYzZGhnVGhUZDJiUmRxYlVieGJrZFRoY2dBZnRjWmRWZmhnSmc2YVJjM2VWZFRiZGhrZG9mNGVlaFVoTWNDZ1lmaGMwY2JhVGFWZFpkZmdYZW1jNWEyY2NjMmY5YUdhWmF4aFllU2RUZEhkVmFLYUViRmZKYkVmQ2EzY0JjVGdTaDNkUmdJY1pkbWVrY1VjY2VrYTVlemFFYkVmeGhOaFVmUmJRZy9mVGVtZ2xoMGRHZkhlQmFCZGRkRmZGZ0tlVGVpaGRlVWVKZHhoa2VEY05nbmRBY1llTWFWZWhncmNKYTFmMGIvYkVlZ2hzY1phQWRSZzBnbGZNZDFjdGNMZUdmbWNzZGhiV2hWaFlnU2dlY2tkZGFrYlFmV2g0ZFhhVGhuZGxiTGZGYkhmRWNkZkhhVWgwY1plRWdDaEVjZ2ROZVNlY2NtZUNoU2NrZ1dkWGRVYlJhOGdTYmtkdGI0aFJiQWd0ZXdiV2draEpmdmZZYm1lWmRwZUZoQ2RBZExlSmUwZVVlZWZBZzFkRmFiZUZnVmNOZzBkZGZGaGthaWVCYWllRWZjYkRjd2ZBYmhoUWduYzBiQWNGZURmWWgzYkFlamZ3aGxhYWMxZklhVWNjY1ViWWNUZGVmRmNOaFBlWmFHYXBhVGNCY2hoTWMrZlRkZ2g1ZldoWGFYaElhR2hOZmdhWWg3aEJjeWJFYzNiSGcwY2NnS2hEY0dhQmVFYUZmd2FNYmtnS2RqaGNlbmVLYWtjNGFtYVJhRmdVZlplT2dBYTljZWNCYmhkZGd3ZVloQ2FkYUxoWWdTZVlodmZMY2xlRWhoZEdobmdzYVpiWmdrYjFjUmNTYlJhVmVPZWFjWGNRYVlkY2hFYkZoMGVVZFZiQmdPZkljVmFraDZlSGExYUVmeGNQYmdjVWRnY1RiaWhVZVJhVWZUZDRkQWRFZ3plZGc1Y1RnMmZSYnFkVWN4aGtnVGNjYUFmdGdaYlZoaGVKZTZkV2JHZVFlWGFJYlFhTWVnYWVnUWZNZ2FkTWNsZHhmUmNBZVJoRWZDaFBlQ2JjYmxnZmQyZThoSGdOYlZjRmJIaEFiVGJBY0VoUmdBY0VkL2NHZndoMWVUZmFkR2Y5Y2lkWmRtZWtjVWFjYWtoNWV6ZEVoRWR4ZU5kVWFWZE1nVmRBZkNkd2dqZUdoRGg5YUplTmVRZU1iTmVHY3poaGZVZlBoUmVnY0NkQWcyYkFocmVmZVJoUmJCYVVkaGNSZ3hjUmZoaE5lNGNVYzBkOGE1ZlFlRmRNZlphRWczZUFhTGFXZlZnWWFTY1BlQmdJZ3FjQWJqZG9hRGhLaHpmZGdMZlhhSGJsZUpiRmRFYTFoQ2dmZkhjUmF1Y2RhbmJOZHZlUmNtZGNjV2dFZmtmd2FuZ0RjMGZRYUhoRmRrYVZid2hVZm1naGh2aFlobWhaYXBjRmFIYUphT2JjZXhkQmNNZ1RlVmNGZUJhUWFRYlljZ2dKZnhkWWdqZkJkRGRFZlZoU2RsYU5kMWFSaFhoTWJGYkhmeWFzY2tnRmN6YnBlTWRMYWhlMWVTZGNoUWNnZlRoWmUxaE1lYmRhYmlha2RmYVZjbGcwZDFnQWcxZkJlV2NDYUhmb2hKZ2JmQmhWZW5nUWIyY2hjVGVTYXhiUmh4ZkhhUmExY05nR2RWZ1phMGdiYm5mWmV6Z1pleGRJYXZhWGMwZUZlQ2dJYTFkc2RRZlRmMGNSZGZkT2dCZ01mUmVZZ1RlRWRqYkxmRmFCYThlRGdUZjllZmZBaGdhaGdaY1FkQmVzZFBkTGNUaEFmUWRJYjBiaGE2aEVjQWE0ZEtiZmVWZUJkNmRSY1ZiMWdTZ2NnRmRaYzBoRGUyYnRoU2dGZEhmRmFHYUVmM2doZVRlUmV6Y0FmaWJHYmtnb2dkZUphaGVsZlpkU2h4YklmdWREYXliMGVTZFloQmNrZWhhUGJBYThmYWNNZmxhRmNTZkFjMWh4ZWVmZmFXZ0FiM2ROY3lodGhPaEphaGc4YmJnUWhGYjljS2hFZEZmSmJFZkNhM2RCY2FiUWNtaDlhaWhaZW1na2djYUphZ2JZZjZoUWYwY0ljYmdRZmtoa2NJZVRhamEwZzhhVWJTYU5lUGFKY3hlUWNQZ0NobmJ0YVNjUGF3ZE1oZmJQZlhiaGRmZmZiUWdOZ0JiVWJoY1JjeGdSYmhjTmU0YlVkMGI5Y2tlYWRsZU1iWmVHZ3llUmVEZEVnQWFVYWNmTGJGZ05ia2RYZEdnNGhlYkxkRGZBZlljR2JpZUpoWWZXZkFoa2FYZkZlVGVnYmhoT2REYVpibmVUaDJnbGNGaFJkd2U0Z2hiR2VGZ0VhUmRFZkFmTWVqZVVjMGR0ZmpiU2hHZFphcGJGaEhhSmVPZWNjeGVCZk1oVGRWZUZnSmJGYlVkWWY5ZlBkRmhFZ2pjVGd5ZkFkZWRIaGdkOGc1ZWJjamQ4ZEplSGUzaGhldGhWY21mUWVHZVplM2hnZlVjY2JVYllmVGFlZ0ZlTmdQYVpkR2JwZFRkR2ZSY05lNGVYY3hkRWdmYlFjWGdRZktnSWNRZ3dkOWJBaHpnNGM4YVNnd2NsZ3hnRGRSY1JjQmFNZTFlWmIwaGJkbmJaYnpnYmMwZ1pjbmhGZGhoSmZNYmRmVWFKYkVjR2hnYzFiWWZmZWhmY2VIYUllaWMwZTBhTWNCZlJjdmZUYmpmMWVGZ0FhQWRGZlloUmNUYzlhT2FhZVhlUWVZZmNhRWhGZTBoVWVVY3BnT2VkZ1JkRWJuY0JkQmZnY3JmV2NsZ1plMGZEZTJndGdTaEZkSGFGZEdoRWYzZmhlYWZWZ0VmNWFxZVVkeGVrY1RoY2dBY3RhWmVWYmtkOWZRYlJnMmZSZEJkYmZrYXBla2hlZFVjdGZDZE1nRWQ4YmRoQWJ4ZGxoTGRkZkNoZGMrY1lhbWZaZ0lnRWVuYTliOGFPZ0dnWmhZZkNlM2NoZ0ViQ2IzYUJjYWJRYm1oOWZpZ1plaWdjYWFlSWdoZ3doOGhSYUFhTWNaZUNlQmRsY1FoUWJEZ0Vnc2VVYUFkOGNVZUplQmJVYkxkR2FqZ0FlUmFiY2tid2RYZ0xhVGE0ZVZjSWFFZFlia2NIZUJhUmE1ZUVlaGU5YzRhQWZVZVpka2dNZ1hma2VaY0VlM2dBaExlV2FWYVlkU2RlY2thZGZrZUZkeWI4ZVllWmNEZ0JkSGZQZG5jRWhkZ0hkVWYwaFphVmhuaFJidWVkZ25lTmR2Y1JlaWNJYmFiT2RFYnhmMWJTZGhlQmdTY1JmQWZ0Y3dmV2drZ0pjdmNZZGlobGdwZkNkWGJJZFBmZmFXZThlQWdBYWdhWmFGY1BkMGU1aHBoZGVCY2hmd2FRaFhkUmVSaFNla2I1ZzFnRWdUYXRiTWFUaEhoZ2V4ZldnQWh0ZEhnSWVoYVZkY2FhYW1jd2JUZWVnRmVOZFBiWmNHaHBhVGFHYlJiTmh3ZkFneGZ4ZFdhRGYzYm9iVGNaZEVidGd1Y0JiV2MxaDFiU2J4Y3dnNGhIYlFnQmdOZVhoRmZaYXFmY2RHZGhmemFmZ2xjQmh1ZUdkaGJKZUVlUGZFYW9mYmRUYzBiUmFaZWNmRmNCYUNmSWJHZXRncWZhYVJmd2g3ZVRhbmhVYU5jVGNGY3RoRWJYZkFiWmdiZllmSGVnZ1ljZWVBY2hjMGNXYmxmZGJPZUljUmdGZjVmVGhCYWxieGRhYjNneGUwYkRoMmJ0ZVNkRmVIY0ZjR2JFaDNmaGZUYkdnU2VVZzRkVWgxaGNhVGViaFFlc2JOZ0hlbGhzYnBiU2dSZnNnTmZJYlJoMWdraGNna2dzY2NjWmF3ZmdmSWFYYmdieGhXY2NibWM0ZnpnZWNtZ05lc2VaYnhnWWJTY1RlSGhWZEtoRWZGZUpoRWhDYjNmQmFhZEZkMmE5YS9oWmVpZmNoVWRiYkZlQmZ0ZEVhRmIxZGJoU2ZtZk1hVmZUZG1ibGQwZ0dkSGVCYkJjZGhGZkZoS2VHZjNhVWJhZ2Jja2Z3YUZkTWREY2tkRmVlYm5nQWJqZUdhMWVNZDVhUmZoYWhiNGdXZjFibGZ4Z2ZkMGNBZk1mRWQzZllmTGdFZ0ZhOGFKZ1VjRWhkYmtiUWdXZTVnS2ZaYkhlbGZMZkZoSGhGZ0xkWGJCZzhlWmhFY0hoUmd6ZmRmbmZzZzZnUmFuaHNlS2FFZWxkMWdqZlFleGRBYU9lUmVBY05ibWVUYjFhZGg4ZGRjMmVaY3ZhRmhEZnhnSGFhZERkcGFNZVRnVmFGY0plRmNVYTVjcGdkY0JmaGh3ZlNhVGNKYVJiVmUwZDVjOWdWYjNoTmZRZlRlWGhoYWhkUmZYaDBoUGZOYjFlSWhjYk5iMGdZZk5mWmFrZjFjUGJkYVhiTmJhY0ViQmg5Z2FkQ2gxZ2xoV2NFY25kcGNIZVpmRWZGaHVlU2dtY1JlNWZRZzFjcGN4ZUFlQmgxZmJoRGhFYk5kbmhlZDNmWmUxaGJod2FCZ3VjR2VqZ2hhTWZkYVVhb2dRZFVka2RRZ0xiY2RGZnBiQ2ZiZTJoSmh1Y1BiQmNSZ3ZjVGhqZFVjUWFVZ2xhTmVQZVNoUWFSaFlnWWdIY2dneWZjYUVkRmQwZFVkVWFwYU9kZGRSZkZmemVUZ0ZjRmI0Y2VlQmdsYjBmRWJtZHNoQmVHaGdjNGJLZlhiQ2g5ZmFjUWEwaDVocWRVY3hia2ZUY2NjQWd0ZFpjVmJoY0phNmRSZTJoUmhKZUpia2RwZjVnZWJSY2diYWFEYWxoVmVVZENjbGhGZmZlZWRFZFJjMmNjZTJhOWdHYlpneGZZY1NkVGhIaFZjS2RFZUZjSmZNZ1RibmJCYkhkUWVpaEZmaWViY0dkbGdiZWVhMGJKYVpnRWhFY3hoTmZVZlVka2RWZ1RhbWNsZjBkR2RIZkJiQmJmYkJiaGRLY1VnM2RWZFVoY2YxZEpoUGJaY25hQmRIY1llZ2JaYm5mZWRCZlJjeGVSYWhjTmc0YlVmMGg5ZmtkYWdsYk1hWmdFZzNhaGZDZVdnVmEwZlBjZWZoY0pha2RTZTJnNGhGZWJkWGNWZ2hnRmdIYUVnZGJIZVVlMGZaaFZjbmdSY3VkZGhuZk5idmZUYmlmNGZXY0ZlRmhGZjFjWGhBYVZhSGJWYXhiNWU1Y1ZlbWdoZHZiWWdtZVpmcGZGZUhoSmJPZ2NieGFCZk1hVGdWZUZiQmJYYkVnNWRpZWFoUmVnZCtjUWFYYTVjUmFBZ2toZGg1Z09nM2VOYU1oVWRYYWhkd2RWZG5lUWVQYWFjMWRJZFVhY2VVZTVnSGJNZUJjb2hjZmFkaGhVaGZlVmJrYlJid2dGZWxmbGhBZEJmMmc5YVVoY2ZVYkZib2FTYmlmRmJ3YVJiemQ1YnhlSGFSYjFhTmJHYVZnWmEwaGJkbmZaZnpoYmUwYVpkdmFRZGxkb2ZGZEpla2dSZnZkR2hnZTFnTWdPYUZjcGJmZGJhM2JSaHpkZmNBYWRnbmJUZm5hVWZRZ0JkVWdSYUtmWWN4ZFZnT2VhZVhkUWNZY2NhRWRGZDBmRGRGYUZka2VkY1JhRmh6Z1RmRmNGYzRnY2NGZFlnaWRUZ2pmbGJTZ1JhM2VGY2JjRWJ6Z1pnYmFUZFhnWmE4Y1JkZ2IwYkhnWWh4ZzVnT2dRYUFiTmI0ZFRmbWJoZnJhYmFrYnBoa2JlZ1Vhc2dVaGNiUmYwZ2RlVGVWY2hoV2ZhZVdjNGY0ZGVhMmYxYVVjZGZRZklhRWdWaEdkZGFZY0JoVWROYmRlQ2hYZmxiV2VhYUdlOWRpZVpjbWdrZ1VlY2NrZDViemVFZ0Vld2JZZlVhVmNRYVZiQWRHYkZmMmNDZDJhSmJYY1lna2VWZFNnVmEyZ3dhQWZaY0ViNWhZZWRlRmJwYldiZGZBYTlmcmJVZWhjUmZ4ZlJmaGROYzRkRmVVYjliNWhhYWhiMGhSY0VmV2VZYWRoUWNVY1FlRWFiaDFoVmZ5YlVlbWF4aERnYWZGZU5oTGJGZ0hoRWJkYUhiVWQwYVpoVmVuY1JodWVPZm5kTmR5YVJjaWFrZmVkRWZGZzlnaWRYaGdnZGRFZVZlUmRoY3BhU2NVaEJkbWFlZVVleGNwY0ZjSGFKYk9kY2R4aEJoTWVUZVZma2hHZ0dkeGg0ZTdnT2EwZXdhL2hGZlNhMGhCZURjMGhBaDhlWGV6ZW9kWWhVaFdnVmd3ZUhibmIwaERoUWdWZUllVWFjYlVhWWZUYmVhRmVOZVBjWmZHZnBiYmZWZ2hiMGVnYVdoUmJZZENkWGFTYzRkZWROZ0FmUmFnZkhlemhRZzliQ2JrZkFiMGNIZFFjQmhOYVhkd2JNYjZkTGFTYkliNmNJZEFiaGRuY0hja2ZaZUZkZGFSYUVkNmFVZWtjUWZMY2NjRmZwY0NnYmYyZEpobWdhZVJkUmJ5ZUdoRGdKYkNmVGNBYlJmZGJZZXhkVmNPZGFnWGJRZ1llY2VFZEZnMGFVYVVlcGRPZ2RkUmNGYXpnQWIxZkZobGNjZkZmUWFuYVdnemdraGJlV2NqYlpjRWdFZDJlVmZPaFRlemNBZXpoQWYxYXhhY2dOZWdic2JOY1RhVGRoZjZkUmIyZ1JiQmdiZWtkcGJrZGVmVWhzYVVkY2hSZDFoU2FUZ1JjOWRRZ2RnR2FaYytmSmMyZzloYmRaYzFhTWRhZ0diSGh4YkRkSGhGaEpiTWhSZkhlQmdIY1FnbWY1ZnplYmQyaFVoVWVlYWdoZGN6Y0RiVWh4YU1iUWZVZEFjY2hRYWtkTmMwZUdjSGFCaEJkZGVGY0ZmS2FUY25hVWJSZWNkMGR4YlJlZWVIZ0liRGhPYWtlc2V1YkZnRmQwZS9kQWcxZWRiNmhVZDBhNWQ1YWFlZ2hkY0FhUWh6Y1ZnRWVIZzFkWmd6aEtoQmVVaGxjR2FBaHdkZmJJaGpiOGRPZFJobmNFY2JnR2MyY2NmWmRWYm5mUmV1ZGRobmZOYnZoUmdtYWNmV2dFZGtoeGIxZFNlaGNCZ1NmRWNBYnNnNWJGZkJhRWY3YUloeWhnY3FkVWJUZTBhSWhjYzNhRWJlYUhneGFBYlFkZGN4Y3NidmJNYWxhMGVpYVFmWGNKYlhlWWZFZTVnMWVFYVhnTmdNY1VjWGhoaHdlVmhuZlFoUGVhZzFnSWFVZWNhVWNZY2JhY2NCY3BjUGJlYVdhcGFTZkNmUmNwaDhhQ2UxYkVlQ2NFZm1mZGVIZ0tiZ2NRZjVhU2RoZUVnd2ZCY1VlQmZwYWZiRWM4Y2ZlV2dBZDliOGNPZW5nOWc2ZVpjbGMxY05hRmZoZEpiTWdkYVVib2VRZFVha2hRZExjY2FGYnBnQ2VPZ1NlTWQwaGFmVmd4ZnlnVWczYk1lQWRRaEdlZGhSYVNiUmFWZE9mYWdYYVFnWWVjYUViRmQwZVVmVWNwZk9iZGFWYTliemZVZlZlRWRzaGZiaGRvZ3hoUWFTZHdjR2hYZkhmMWZzZ0VlM2VoaFRoVGgyaFJlcWRVaHhha2NUYWNlQWN0YlplVmhoYklmcGhSZDNobGRCYUpla2JwZ3ZnZWNRY1VjUGdXYnhnMGNkYVRkUmZsaFdkZGFHZzVoMmFjZjJmOWZHY1piMWE5YlVmVGNIZDFlYWdFZEViOWNaaENmemQ1YlRmUWJqYzBhbmhNYmpleGZHZFBlRWc0Y25iV2RBaFVjZWNTZ21nTWdWZ1RobWRsZTBhR2hIZkJhQmJkY0ZnRmhLZlRkbmFWZ1lhTmhVZHhoWmNVY25nQmdXaGRlQWg5Y3JiVWVoZlJoeGdSZWhnTmU0YVVoMGQ5ZGtlWWJsZ3RiTmFXZnpnbGNZZ1Zld2ZKYmRkTGZnZllmb2FQZWlhSWNQZUthbmRsYkFhQ2FYZEZlVGdGZ0VjRWZ6ZVZnbmZSYXViZGduZU5idmhSYW1nY2hXZ0Vja2d4ZTFjU2ZoZUJoQ2FSaEJoWmh0ZVdjaGJZZm5jS2V6Y1ZlbmRXYVRjY2FEZUlnRmhrYldlQ2FGYkZjUGJFaDJoUmJwY2RiQmJoaHdnUWdYZFJjUmJTaGtkNWUxYkVmWGdOZ01kVWhYYmhod2JYYmljQmFIYkllZ2dFYWFhUGJBZk5jZWZOZXdiRWdXYVphSGNkZ1RkVmZoY05ndmdDYjFodGhVZkVkbWVCZ0hjTGRVZ0ZheGRTY2lnb2Q4YkhkQmhRZEViVmdGYk1jWmdBZFRjY2NtY1BmRGNjYXFiWmIxY2RkeGRIZXhlSmRXZmRmUWhSYlZoQmhVYlJkWmFlaEVkdGZVZVpmbWR0Z3FoUWR4ZVJieWVUYm5oTWNRZ1RhRWcxYlJiU2FSY1ZjT2VhZ1hnUWhZZ0phQWFraDliQWhrZVFoRGVNZkZmd2hnZkJlUWZzYTlnY2NGYzFhMGRRYVdjdGZPZEZlR2VCZ1FjR2FsZEpjVGhUaDJlUmFxZFVneGRrZlRnY2RBZ3RjWmRWaGhnSmN6ZWJiV2hSZUJnYmNraHBja2VlYVVnc2NVZ2NkUmcwZWRkVGNSZGxmV2ZKZGlkc2NpY0pnamcwYklkWmN4YjRiNGhUZEhjVmdLY0VmRmdKYUVhQ2QzY0JhYWFRZ21nOWRpYVplbWFrZ1VhY2JnYUZjWmdFY0VoeGNOZlVlVWdrZlZjVGJtZWxiMGVHZkhnQmNCaGRlRmJGYUtkVGFuYlVhUmRiZEVjeGRaYUxhRGVnYmZkSmh3YUVibWhGZzFha2QrZkZoRWRwZzRkV2dGY0pla2dQaGxkb2V6ZkVjM2NBY0xjV2RWZVlkU2hlY2thZGJrZlFhV2U1Z0tnWmZIaGxoTGRGZ0hiRWNkZ0JiMGMxZFFiZmNIZ1JidWhkYm5hTmR2YVJibWZjZFdoRWVraHhjMWRTYmhjQmJTaFJhQWd0ZHdmV2NsYzFndmFOZGlhNGRnYlJjM2Z3YkRmTmNsYzBhRGJIYndoaGJIaFJnZ2JzZzlmZmJFZ3hnK2hFY2llRWVUY0NjeGF3aG5oVWVDYXBkRWZRZ1hiUmd3YkdlSGcwYkRoYWR3YlplY2ZPZEJkVWhkY05lUmNZZkNhTmJ5ZU1kSmhYYUJmcGNhZUNjMWdsaFdlRWJuaHBkSGRaYUVnRmd1YVNkbWFSYzVnU2d4ZVJleGFIY1JjMWROYkFjMWVZYmdnWWNEZlVkOGdQY3hmOWZ2YlFhbGJvZkZhSmhrZ1JoZGFGZ3dibGVFY0llZ2ZOZk9iYmZ6ZVlhdWhJZEVoZGE4ZkFhemhaZmRoSGd3Z1FmTGdEY0JjbGhPZGVoWGRnZFllUGVraGhhNGJlaDBlcGFPZWRnUmFGY3piVGFGZkZhNGdjZEZlWmYwZERhMmV0ZlNlRmVIZUZkT2ZSYnphQWJhZkhnR2hvYm5nRmJsY1JkQWFPY1ZhRWNjZlZnaGZsYW5oUmV5YnBhSWhZZW1kQmVrYmVjVWVzZ1VlY2NSYjBmZGhUZ1JobGRXZGRlR2Y1YzJlY2IyYjljR2NNYTFiNWFiaEhhMWU5ZktoRWhGZUpmRWdDaDNlQmhhZ1FnbWI5ZGlnWmRtZGthVWRjZWtjZGJvZ09ha2J4ZU5kVWFVYWtoVmVUZm1jbGMwZkdkSGdCZEJoZGhCZmdjTWdUaG5mMWFGZ09jd2ZVZENoZGFqYzBiVGZPZVZid2RpY0NiRmJGZXhhV2ZCZk5ib2NXYWtjOGYvZlFlRmFNZlpkRWYzZEFiTGFXZFZkWWdTZ2Vma2VkZ2tkUWZXYTVlS2FLZjFnTmRMY0ZhSGRFZmRoSGJVYTBhWmhWZW5iUmV1ZmRibmVOZ3ZoUmdtYmNlV2VEYlVieGc5Y0hibGdnZ2JnRmF3aFVlOWRIZXdnOGFnYk1jRGU5ZXBkSGMyYzlmT2ZKZnhlNGRmZkFnUmFnZUtlVWhFaFplNWRlaEJiaGNoZVZmM2RSYWNhU2NoYW9kOWNXaENhQmhDZUhmRGMwYTlnQmJUZDFhVmFMYWxnc2VkZVdkMGJZZlRmZWFGYU5kUGFaZEdmcGZUZEdoUmJOZXdhQ2MxZGxiV2ZFYm5icGFkYlplQWdoZUVkU2dtY1JjNWdTZnhkUmF4YkhlUmIxaE5oR2VWYVpjMGhiY25nWmZ6Z2JjMWFsY25jUWdsZW9kRmFKYmtiUmFkaEZkd2FsZ0VmSWVnY05jTWFQZUNjY2J5YllnVGQ1ZnlmVGFuZE1jUWdUYUVjMWhSZVNoUmZWaE9jYWVYZVFnWWhjaEVnRmUwYVVhVWRwYk9hZGhVY1ZkOWdIY3doUWU2YU1iUWJRZ21oVGFqZ0phYWhCZUhnMWJHY0FkbWI1Y1RnUWhtZVFmK2hHYzFlQmRBaGZia2VZY2NhR2EwZ0VhemVIaFNmRmdJYVlobWdCZWthZWhVYXNkVWVjaFJiMGFkZ1RlUmRsZVdnZGRHYzViMmdjYjJmOWRHYlpmeGdZZFNnVGhDZkVoQ2hXYlFkRmVLZ1JiamJVY1hkRWFTZ1lkNGFJaDBjTWhVaGNia2U1YnpkRWFFZnhnTmRVYVVka2FWYVRkbWRsYTBmR2NIZkJnQmVkYUZhRmdEY1plSGhVZFJkY2UwY3hkUmhlY0hhQmJXYmRlQWg5ZXJhVWJoYlJheGhSYWhmTmFpYlVmeGh0Y3FnS2VSYXhmSmFTaG5jaGNmaEVmUmQ5Z0JhZGJBZW9haGhEZENlRWNZY1BlWGNWaExjUWVEYWxlVWFUZWthTmZVYkVnemRrZjlkUGN5aGtjcWRTZW1hY2NHZkhia2N4ZGtkWGRCYUJoZmdSY0ZmOGI0YUVheGRGYmhoTGV5Zk1na2FSaHplc2VVZU5oaGFsZVhmWmExZ0ZkSmZGaFViNWJwZmRoQmFoZ3diUWVYY1JkUmJTYWtoNWUxYlJjemhJYWVjVWdUZGxmd2FTZjNjUWhmZmNmSGdnaFVmY2ZVZlliVGRlYUZmTmZQZ1poR2NwYVRnR2ZSZ05kd2NDYnhnWmc4YkVnbmZwZ0hnWmZFaEZidWNTYm1kUmY1Y1NieGJSZnhkSGNSYjFkTmVHYVVkbGUwZlpmaWdJZjdiSmVoYlZlcGhRYkFhTmJDZExjUmZKZ1liTGJSZEZiYmdOYUJic2ZXYUtnbWNwY01lYWFSZlJneWVUYW5mTWRRYVRnRWUxZVJjU2hSYlZjT2hhYlhlUWJZZGNiRWNGYTBlVWdVZXBjR2VJYVZla2I2YUhoMWE4aDFiTmFSaHNlN2JYZlRmSmJjZVZkemdraEhlUWRSYnNkY2JDaHlhRWNMaEJmeGRGYlNhY2VBZkJmWmRSZ3hldGg2ZFdnM2JoYUJhZGVrZk5ma2VKZVdhRWhVY2NhUmgwYmRmVGJSYmxmV2hkZEdhNWgyaGNoMmc5ZkdiWmV4Z1lnU2ZUYkhmVmNLZkVkRmRKZEVhWGJ6ZWdhVGRFZVdkRWJ2aElkeWdSaGJoSWJCZWRkOWhVZXdjUWNNZEFneWZwZGFkQ2dpZXdiVmJUZkhkZ2NBYWZlVmUxZWdmVGVuY1VlUmNjaDBkeGhSY2VnSGdCZldiZGZBZzlncmFVZ2hnUmh4ZVJnaGhOYTRkVWMwZTllc2ZQYmhodGdRYlFmSGE1ZkdiSGFCYnRiZGRLZUJoNWRxZEFhaWZZZUxiTmRoYm9iRWVVYkRlUmI4Z1NiVWZWZVljVmZuZDlidWZaaFhicGN2aFdjbmRzaFdkQ2VraFZjMWZGaGpncGJTZlJhQWh0ZndkV2RrZkpidmZZYW1kWmFwYUZhSGRKZE9lY2d4ZkJiTWVUaFZjRmZKZUZhVWE1aHBnSWNGZkFlNWRFZ25hb2ZjZURnd2ZNZjZhUWZ5Z3BoQ2VFY2pkQWV4Y0JnQmhkZUFjTGN4ZWRiMWhKaFVnNWhTZmVlRmVoY1BlZGFtZE5mNWZHYlJkTmZ3YkNjMWRsY1djRWZuYXBoSGJaY0VjRmR1Y1NjbWRSZjVoU2V4YlJleGZGZkJiRmVuaEdnVmRaYTBnYmRuYVpjemNiYzBmWmZuZUZoaGZKZ01kZGFVYm9mUWJVZ2tnUWJMZ2VjQmd0ZUNjWmdIYjlnbWRmaFJhMWErYVpkSGFNYVFiVGdFZDFmUmNTZlJoVmJPYmFoWGFRYVllY2FFY0ZoMGVVZ1VjcGVPaGRlVWRVZDdmQmFRYkpnMmdKY2tiUmE2YVZjemNNY2FkYWJ5ZVFiV2ZWYnpja2RIZkNibWR4Y0FjVWh4YWthVGRjaEFjdGJaYVZoaGFKYTZlUmMyYlJoQmhiZGtkcGdrZGVoVWFzZFVkY2dSZzBlVmVHZVZlRWZmaEpjMmRBZDdjTmNpYUliSmVOaFVjOGZjZ0RhemIwYUxjUWFqZ0VnTGFUZ3pjVWU3YUZmbWFjY2pmWmVtZUlkVWNZZDBoZGd6aERiRmVCZU5mU2dVYUFlVmVFY2toTmMwZEdiSGhCZUJhZGRGZUZlS2VUaG5iVWNSZmNlMGZ4YVJhZWNIZkJmV2FkZ0FnOWNyYVVlaGNSZ3hnRWNsYXNjeGhBaEVnRWZwZ0xjeGE1YldhUWJTZWtmRmFHZmhmNWRUYktkQ2RRZnJmQmdTY3NhcmhNaEhlRWZLZkhoWGQwYTNnSGNVZzBmWmdWYm5iUmJ1YmRobmhOZXZmUmZtZGNkV2JFYWtoeGQxZVNhaGNCZ1NoUmJBZ3RjNGZEYmdjb2RtYk1nV2RnZGtiVWJUYThlQmRJZ1VibGdDZURmaGFrZUlhUmF5ZzBobWNNaEZlMGhSYkZlWGN3YVFkU2VrZlZjMWNBYm5ncGRNZ1RmV2RSY3dlVGZuZTBiUGFOaDNnZ2hVYmNoVWNZaFRnZWJGZ05iUGRaZEdicGZUZUdoUmdOaHdmQ2ExYWxlV2VFZG5kcGhIYVpjRWZGYXVkSGJpYXdod2FHZUJjb2Q4ZVdoRmhBaENnU2R3YTlhNmdMY1RiNGN5aFBoU2dVYm9hVWVsYWNidGhJZVVoSmFSYlVka2Y4ZkxmWWJsZ05kb2diZzJoSmNtYWFkUmNSYXllVGRuZU1lUWdUYUVoMWRSYlNlUmJWY09hYWJYYVFoWWRlZ1VhMWhlZlVhVWhwY09jZGRSYUZiemZUaEZiRmc0ZWNiRmdaYjBlRGQyZ3RnU2hGZ0hlRmZHZEdkemFsY1RmUmRIZmxlcWhSZXhoQWZmZ1diZ2d0ZFpmVmNoaEpmNmFSYzJkUmNCYWJna2JwZ2toZWdVZnNiVWVjYlJnMGJkY1RhVWEwYWVoUGhUZzFiNGZKZVhheGZJaFBnMGY1ZWFoTWh5ZkFlYWFWaEJmTWNRZlRobmhoYndlUWFtZzllaWZaZG1na2VVZ2Nla2I1YXphRWhFZ3hjTmJVZ1Vha2dWYVRibWRsZTBlR2JIYUJmSmZJY0Joa2NEYkhnWGF0ZGNoTmJnZUVlZWVLaGlobGFZY05nMGFjYnFkQWNIYWNoK2hBYmxjWWhaZ0JkMGFjY2xiYWVsZ2diWmdBY25ma2ZMZlJhVWNvZ1NnWWNrZTVla2hIZFVoUmJLaFplSGFsZExnRmRIY0VjZGJIaFVlMGJaYVZkbmNSZHVoZGduZE5jdmRSYm1lY2VXYkVia2Z4YzFnSGFsZGdiYmhGYXdoVWU5YUhod2Y4Z2djTWZEYjlnbmNWZHpib2RQY0lkWGdNYkRmQ2FSYVFhb2NRYVVoWWVvZGZiUmhSaGFlUWRYZVJiUmFTY2tkNWIxZ0VmWGVOZk1nVWJYYWhld2FWZW5kUWZQYWFlMWVJYVVjY2ZVYllkYmNMaEJnc2JHYU5mMmFRZGVkWGZGZDRnL2VXYlFlQmhZZVVnVGdJY0dmTmhpYklkaGdEYmlkRWNZZkhneGN3ZndmSGdSYlplTmFDYWxjOWMwZWNjbWNwZXpoZGYwYTlmbmdTZmpjaGRNYWRnVWFvZ1FhVWNrYVFoTGRjZUZjcGZDZGJmMmNKZW1kYWNSaFJheWRUZG5lTWhRY1RhRWUxZVJlSGRWZDBhSGdPZG5icGVWZE5iUWF3ZzdmQWZ4Y05hQWJOYWxma2N5ZkhmamVJZzNlTmJCZE1oVmRXYTJmTWJUaEZiSGZwYkdnQWNYZUZkNWZUZTJjUmJxZlVleGFrY1RnY2JBZnRjWmVWZWhjSmc2Z1JoMmZSZ0JkYmdrZHBha2FjYkVhY2graGNkUmYwZ2RiVGVSZWxlV2NkaEdnNWUyZGNlMmg5Z0dnWmR4ZlliU2RUZEhoVmhLZUdhQmZOZkViQWRHZzFiYWJWZm1lWmh1YlRmR2FrZFVlY2NrYjVoemNFZEVheGhOY1VjVWNrZVZmVGJtZGxlMGRHZEhmQmFCZmRmQWdVaENjQmd5ZFlkZmhKZVZjaGZmZ0lkQ2RnY2VjQ2QxY29oN2JGZ2xmVWFsaEFneGd0Z1NlVWMwaDlja2ZhYWxmTWZaYkVlM2hBZExiV2FWY1llU2ZlZWtjZGRrZFFmV2E1ZktoWmFIY2xjRGNRZERhbGNVZ1Ria2FOZ1ViRWN6YWthaGVKYUNlcGRoZUJhU2U5ZlhiUWZDaDhiNmJEZmxkVWZ6YUViQWFNYXhlV2FrZ2xjdmFjZzJjOWRwZENmR2g1Yk9nYWF4Z2xnTWNFZVhldGRKY0ZlVWc1Y3BnZGNCaGhnd2VRZlhlUmJSZFNma2Y1ZjFkRWZYYk5iTWhVY1hoaGR3ZFZlbmNRZVBmUGh4ZXBhZGVJY2tiaGZlY1BiUmc0Z0FhTmVqYU5hZGNXY2xoc2N4YVdlVGhvZFpjVmNqYzhnbWFNY0Vha2V2YVFhMmFoZFRnU2d4ZVJneGJIZVJiMWZOY0dmVmhaZzBoYmFuZVpmemZiYzBlWmduZ0ZhaGVKYk1hZGRVZ29nWWNCZmdkeGNDYUlnMWhRZVBhS2FpZjhhcGRPZzBkMWI4ZkRhVGF0Y1JjSGNpYjRlZWVEYVZhQWh2Z1BlWGR4YlpkY2NFY3BlMGZRYmtkTmFPZmFiUWUxY3pmVmJGZGhkNGNMYUhleGYwZ0RnMmh0Y1NkRmZIYUZiR2RFYTNlaGZUY1RhMmNSZXFkVWV4ZWtlVGRjZkFodGhaZlZhaGhKYTZoRWd5Z3doSWRQY1VoUWRwY1BjQWVaZWJoSWgwYlFlVGFEZGxjRWRYZkpkZ2YwZjVmTmd5YW9jbmRNZHhjNWFUZlRiSGQ1Y0tiQWJsZXRndWdDYzNoQmVhaFFmbWQ5ZmlhWmVtZWtkVWVjYWthNWV6Y0VmRWV4ZU5kVWZVY2tlVmhSZDJkQmZlZUdoSGJCZEJhZGNGZkZoS2ZUYW5hVWFSY2NhMGh4Y1JiZWJIaEJjV2hkaEJhVmZyYldma2VBYjVkRGQwaEJiMmNCZlZmNWVxZU1kZ2h0Z1JhYmZDZ1ZhYmVIaFJmZGFHZ1BnMGU5Yk9iUWFXZjVkS2ZaZEhlbGRMYUZoSGhFZ2RjSGNVZTBmWmRWYW5hUmh1ZGRkbmdOZHZoUmFtZ2NhZWVSYmdoUWU4ZkdhUmc0Y2ZhQWNVYllkL2hDaEJlc2ZVYUlkMmVaZmloRmVHZk1jemJjYXdmeGJRZVRjVWVsaEFkRmJSYkplcGVJYkZmQWQ1YkVkbmdvZmNkRGN3Z01jNmdRZXlib2QzZEVoQWJWZjhhZmJIZlFjUGVhZjFiSWRVZmNjVWhZYlRkZWhGY05lUGhaY0dlcGdUaEdoUmdOaHdkQ2UxYWxmV2ZHZWlhNGdQZExmUmhKZmdnQmF5ZUVoMGVCZEViWWhvY1pobGJ4Y05kRWFsaFpmbmhFYTNiWmd2ZWNoMGZaZC9kSGh4Y0lmUWdkaFJkNWZZY0dkeGVjaEZhUGdSZzhiUGJJZ0RmQWcvZUVhbGRWZ3lhUmZYY01lQ2dNaFdlZGdSZFNlUmZWYk9lYWdYYVFlWWZjaEVjRmIwZFViVWZwY09oZGJSaEZoemJUZ0ZoRmJ4Y2ZiSGV4aDBlRGUyaHRlU2NGY0hnRmFHZkVhM2NoY1RkVGgyY1JjcWdVYnhja2dUYmNlQWF0YlJoRmh4YUpoeGNXZm1jUmhWZFpmMGNaZk9hZWZVY3NjVWZjZFJlMGhkZ1RjUmdsZFdlZGVHYjVkMmFjYjJnOWZHZVpieGNZYlNjR2FEZTBoRGZRYTFid2FTY0dmWGg0ZENhR2VpY2NiZGhNaHplbGRRZ01heGFvZTJkR2dHZ1plTmJVYVVma2FWZFRibWVsZTBkR2ZIYUJoQmJkZUZkRmFLZ1RmbmJVZlJhY2YwY3hlUmhlZ0hhZ2hDYVBoRWdZZjRiWGhGZmtkMGRDZDFhd2RxY0NoamdRZmxjYWhsZ2doWmhBYmdiMGdMZ1JmVWVvYVNlWWdrZzVoa2NIZVdoNGdlZ0xhRGNBZ1lmR2hqY3hjWWNVZEFoSmhMY0Rid2c4Y3ZnQ2czYzlkRmhSZW1kY2dXZUVja2d4ZjFnU2FoZUJmU2ZSZkFjdGd3Z1dma2hKYXZoWWZtY1pkcGJGY0hmSmhHY0poMWNnZEZmSGdsYzhhRWJVZkFiTWJtZkpma2dFZUxnQWJIZ1JmYWZTYWxhMGZJYUVmV2c5Y1FiVWRXZUJiNWJWYmlkZ2VQZlBneGZwZGRjSWJraGhoZWhQZlJlNGRBY05hamRNY29jV2dCZU5iN2JDZjBnc2dyYk9mSGJwZUhiWmFFZUZjdWhTaG1lUmc1YlNneGRSZ3hiSGJSZTFmTmVHZFZnWmUwY2Jjbmc5Zi9kUmFVZFpnbmFGY2hnSmhNY2RlVWZvZVFiVWVrZ1FkTGVjZUZlcGNDZmJiMmNKZm1nYWhSY3diemNUZ25iZ2VOY1RlRmNsY1lkUmNUZjllT2ZhYVhjUWhZZmNkRWFGZjBmVWdVZnBlT2FkZFJjRmJ6aFRkRmhGZDRhY2NGY1lnZ2JSZHllSWdCZ0dlaWNkZlZiSGNTZUFkTGhCZnhoc2EvZEFkMWcxZlNiSmFFYTVkUmVmZEJnSmM2aFJoMmJSYUJiYmdrYnBoa2hlY1Vlc2NVYWNjUmQwZWRkVGRSY2xiV2FkZ0dmNWgyZ2VjemNzZk9jTGhrYlVhY2RBYVRmQWVIZVhod2RBYmRjY2ZEY0ZjYWFTaFdjOWh6YUdoMmFrZUlkYmRrZTVlcmVHYVVjd2FSZFVlUmcxZWRnQmZ6Z3BoNmdWZ1RnVWNNYk9nd2hNZVRlTmNUZFJlc2ZmYTJiWmFSaGViSGVCZVdmZGdBYTllcmZVYWhkUmV4ZlJlaGFOYzRnVWQwYzlja2dhZWxjTWdaYkVlM2doZGZoRWRSZzlhQmVkYkFib2ZoZ0RmQ2ZFYVlmUGFRZklhS2NGZkhlb2NkZERiamhBYlphU2VtZ2hndWZiaG5lcGd2YkdnbWVkY0NkV2RnYVVjbWJSYkZlMGNYZkNmVWRRYmlnQWZ6ZGthdWhZY21mMWZwZ0JkZ2I5aGtlY2h4ZEJiTWdUZVZjRmNKY0ZmVWY1ZnBkZGVCYWhnd2NRYlhjUmNSZ1Nla2g1aDFlR2hIaDlibWNVZlhoaGR3aFZnbmNRYlBiYWQxY0lhVWdjYlVmWWNUZGVhRmNOaFBoWmNHZ3BnVGdFY1ZnSmF3YUFnRWRSYldnQmZuYU5hTGhUZmtoRmN1Y1NibWZSZjVhU2d4Z1JneGVIZFJnMWhOZEdlVmdaZTBmYmJuYVphemViZnhkSWd2aFhhMGRGZENlSWYxYzRlZWJDZGhoeGhEaERod2Y4Y1NjS2R5ZU1keWVMY0JoeGRZZ1RobmdNZ1FoVGdFYzFhUmNTaFJmVmJPZWFjWGhRaFlkY2hFaEZiMGRVYlVocGhPYmRiUmFGZTdmR2RCZ2toeGFJZTFjZ2Q1Z1NjaWZZYmRiUmFpZWdoOWRVZW5iaGZZYlRkM2FVZFhoVWd3Z1ViUGRjYUJiTmVRZVZoa2U1ZjZhRWV5YndmSWVQY1VkUWJwZlBiQWRaZGJjSWgwYlJlbWFEYkdiUmNhZ1hnbWU1ZDJhY2gyZTllR2haZXhiWWJTZFRmSGZWZktkRWJGZ0pjRWhDYTNhQmhhaFFmbWY5ZmlnYmFqZzFhY2VPZXhjMWY5Z1hhUWdrZUFkSGNoZXRhTWVOY1NjaGcwYkVmM2JCZFNkQ2RWYkZnV2RVZG5hVWRKZGVma2Z3ZU5hZWhDYlFkZWhQZlZjeGhsZUhlMWFFZDhlQ2dVYUVkaGVLZEFiNWdrY1llVmRNaExhYmdsZW9mTGNXZVZjWWZTY2Voa2RkYWtjUWVXZjVjS2NaaEhnbGhMYkZmSGFFYmRnSGVVZDBlUWJYZTNiaGRFZGRibmVOY3ZnUmhtYmNmV2ZFZWtleGMxZlNkaGhCZlNnUmVBYnRhd2JXZmthb2huZVlhbWQxaDBlRmJHYk5hWWZjY3hiMWRNZUdiUmRrZ0FmUmZrZEFia2RNY1ZlVWVqY0NjQ2I0ZlViUWYwZEpkZmdFYVhlTmNNZVVjWGJoZHdjVmduZFFhUGJhZzFjSWdVZmNlVWJZZVRhZWdGZnNhYmRMZENjTWRBaEZnMWY0ZjFmUmZnY29oZmhTY0RiOWNIY2VnVWNGYitlUWQyZmhmVGRTY3hiUmd4ZkhnUmMxaE5hR2ZWZFpkMGFiZm5hWmd6ZWJoMGhaYW5lRmNsZDFhTWJjYTBkd2VRYldlaGRCaERoT2VRZ2xkTWNJZmllY2dyZUpha2VZaHJnVGhtZDRiUWdUZmtiOWFZYVVjamc5Yk9hYWZYZVFjWWdjZUVoRmgwYlVkVWZwZk9nZGZSZkVmdWRaZWxiRmY0ZmNjRmhaZjBkRGgyY3RmU2hGYUhmRmNHaEVhemhFYVZkVGgyYXdkNWRVZXhnUWJUZ1loUmQxZlpjU2FBZDlmNmZEYzJmMWhCYU5jV2dCZWthZWRVZnNjVWJjZFJmMGdkaFRnUmFsZVdnZGNHZjVlMmFjaHpoa2ZIYk5oUmhaYUhnVGhHYWhmS2JRZjFoSmNKYUNmMmdGZ01iV2VVZlZjaWJaZ21la2hVZmNma2M1ZHpmRWNFYnhhTmNVZVVoa2VWZVRlaWgwaDdjTWJuYkJiQmFkZ0ZjRmRLYlRkbmJVYlJjY2UwZnhoUmJlaEhhQmJXZGRiQWU4aGthZWdCaFJneGdSZWhmTmM0aFVjMGI5ZWtiYWZsYU1lWmRFYTNjQWVMZFdjVmVZZFNiZWVsZ2hja2VTZlRob2VDZUxhU2JwZkZiUWVtZEFnVGhSZlJlVmNSZUtiU2VFYytkTWRqYklnN2JBaDJoOGU4Y0Vma2Z4ZzFjU2RoYUJkU2FSaEFhdGR3YVdka2VKY3ZiWWhtZlplcGZGYkhkSmhPZmNoeGVCaE1lVGNWZWtiZGZHZ3dnMGRoYU5jVWJvZlRlRGRqZ0FhVWRLZXhncGc5aFdlWGFOYUhhVWJXaGxlNWNWYm1lZ2NUaGFkMGRvYWRlY2JSZW9jVGJMZEZiMGhNYkxoQ2ZzYUJkZWRsZHdkMGJUYWphZ2NDYkdmamRKZU9iYWRHY3RldWVTYW1nUmM1Y1NjeGZSYnhjSGNSZzFlTmFHZVZlWmMwaGJmbmFaZXpjYmgwYVpmbmdGY2hjSmZNYWZhUmg0ZWVlRWFRaHhmS2JJZWpja2ROZEtieWRjYkhoUGJSaHdnNmdUaG5hZ2VRYlhnMGdSYlJoVmRRYWxjT2FjaFhiMGFZZ0xjRWRFYWdmWGd3Z2tlR2dOY0VnTWJRaEFleGFVYjlhRWZRZEpmOGNSYzJodGVaaEZlR2hOYlBkT2dYY2hmVGVUYzJjUmdxYlVmeGdrZlRmY2VBZXRiWmhWZmhhSmc2ZVJlMmJSZEJlYmNrZHBoa2NjYUVnY2crYWNnUmYwY2RkVGFSZWxnV2dkZkdiNWEyZGNjMmI5Z0dmWmF4YlliU2hUZkhkVmVLYUVlRmVKZk1oUWMzZkJkUmRYZTJhOWQyYWJoMmNVYythY2ZrZTVhemZFYUVjeGZOZFVmVWNrYVZlVGZtaGxhMGFHYkhhQmRCZGRiRmhGY0toVGNuZVZlRmVPZndnVWNDZWRnaWZaYkVlZWRsZ2NjemdHZm1kc2drYUZobGZjYjVhQmZ3ZHBjc2FRYUZoTWZaZUVhM2dBZ0xhV2JWaFloU2RlYmtoZGVrYlFmV2E1YUtjWmdIYWxnTGFGZkhoRWNkYUhmVWgwZVJhQWNuYm9ldGdQZWphSWg5Z0poU2JoZFNmVmF5YjBnaGFRZWxnaGhTYVRid2F0YWhiVWIwZkpmemVmZW1iWmV4Y0hjWGFJZlNkY2gwY1JhQ2NEZWhoa2VJZFJheWQwY21iTWVGYTBnUmFGZFhjd2VaZFFjMGZKYWZkRWZYY05iTWFVZlhlaGV3YVZhbmJRYlBkYWgxY0loVWJjYlVlWWhUYmVlRmdOaFBhWmNHaHBoVGVHZFJnc2hrY0JhUmZvZ2ViVWd5aGdha2RLZ3dmVWhyZktjemVCZHhhQWV4YlJmNmVIZFFnNWNFZkdhVWVwZW9lYmdtZzVkNmhiZ3hmcGFuZFFhaGN3Y1BnUGJRY3RoQ2FNZVFndGFQaE5mVGJzZ1dlWmZ5YnBobWNZZGhiUmFnZVJjMWhrYlFlVGJFaDFkUmJTZFJhVmZPY2FhWGVRYVlhY2NFZkZiMGFVY1VncGhPZmRiUmRGZ3plVGdGZ2hlMGRXYmxoWmUwYkRjMmF0Y1NnRmRIZUZjR2VFZzNnaGZUYVRjMmZSZHFoVWZ4Y2tkVGNjYkFidGdaZ1hobGhwZjZoVGFIZmxiQmdlaGtmTmhvYlVmMGhzZ1VoY2JSZzBmZGZUYlJhbGVXZGRnR2Y1aDJiY2IyYzliR2VaaHhmWWhTZ1RoSGJWZ0tlUmJCZ29kTmNXZUhoNGJNY1ViV2JFZTZmUGVpZ0ZicmRKZHhkNGEzZ1VoUmZnZUlnV2RXZE1jVmhUYm1kbGcwZEdkSGNCYUJhZGZGZEZhS2RUY25lVWJSYWNiMGN4YVJoZWhIY0JjV2ZkYUFoOWNyZ1dja2NCYS9jQmdWZXNmNWNBZVNld2JyYUxoaGhaZjRmUmgzYmhoRGNXYVZiMGdTYWFjMGM1Z2tiWGRYY0piS2JmZkhkQmRMZVNiSGNGZUplRWZ3YTViUmJGZ3lmWWJOZk9kVGNjZnFkSmR6Yk1iZWRXZWtkVmg1Y1lmQmFCZVNkUmVBZXRld2dXY2tiSmh2Y1lobWFaYnBnRmFIYkpmT2NjZ3hjQmVNZ1RjVmJGY0pmRmNVYzVnaGdJY0JlWWd6YkNhVGJVZkRiS2ZRYkVjeGRWZEJlSWJZZ1dkVGFCYndmWGdYYlFiY2JZZ2xhSWJJZGJiVWRZZExiY2VWZ01kVGVaZERiNWhkZFdobGhzZXhkV2ZUYm9jWmhWZmpnOGNtY01lRWVrYm1nU2dtaDllNWhXZlJiMWViZEhjUmcxY05hR2RWYVpiMGJiYW5oWmV6ZWJnMGNaZm5kRmNoZkpnTWNkZVVnb2FRZVVha2JRZ0NoZmRIYUJhQ2ZiZjJlSmNtY2FlUmZSZ3lkVGRuY01iUWhUaEVnMWZSY1NlUmJWZ09hYWZYaFFkWWZjY0Vha2E4Z1ViVWFGZ1RmZGVRYlZoNmhRYkhidGI0YmNkRmZaZDBjRGIyZ3RoU2hGZUhmRmdHZ0ViM2FoZlRmVGUyYlJncWFVZ3hia2ZUZmNiRmU4YlJoSGYwYkZlMGNFZFhlQmdQaE5oaGRJZnNiQmRoZTVjRWFOZlZleGhKY0NoQmNGZDhiZGZHaDVhMmNjaDJhOWFHYVpjeGVZYlNlVGVIYVZnS2RFYkZlSmRFYUNoM2RCZ2FmUWZtZTloaWhaZm1kRmdBYWZoQWMwYzdiVWRSYjRldWVIYmdlMWNRYUxlemIxYjhjVWNIZ0JiS2NkZUVjQmNEYlRjbWRrZU5kY2QxZ1JoWWZlY0NmeGdXZklhQWRFZW9mR2NsY1VmamNKZ1Zmd2U4Z0ZhaWU0Z3djWWRoZ3NkUWJIYzFjb2dMY1dkVmRZZFNlZWJraGRha2JRaFdjNWZLZFphSGdsYUxiRmRIYkVhZGNIZFVjMGhaZFZibmRSZHVmZmNpYmRkaGRCY1NjOWJYZVFnQ2c4YTZkRGRsaFVkemFFZUFhTWc0aFdka2NsYXZoY2NXYjljcGNDZEdmNWNPYWFieGFsYk1hRWNWZEVkZGVHaHdoMGRoY05jVWFvZFRiRGhqZEFlVWZLYXhmcGM5ZFdiWGJOYkhkVWZXY3BoNWhmYkhkUWVQZ2FmMWJJZlVhY2ZVY1lhVGhlYkZiTmdQYlpkR2dwZ1RkR2dSZ05od2dDYjFhbGhXYUdiM2dOZXRiWmJFYUZjdWNTYm1lUmc1YlNieGJSY3hoSGhSYzFnTmVHaFZhWmYwZGJhbmNaYXpnZGZVYlpjdmFRZGxib2hGYUpla2NSYUdmUWQwaHBhVGRLYkJmSWg5ZU9mamhJYmliS2JFaEFoM2VSZmxma2JRaFRiRWExaFJkU2ZSYVZoT2RhZ1hoUWRZYmNhRWFGZTBnVWVVYnBkT2VkZlJhRmJ6YlRnRmVGYTRmZWNBZklmUGNSZTJjdGVaaEZkR2VBZzdkRWcyZ1JlUGRUaDNleGJqZFVhMGJVZlRiSmJIZUFjUmZLZXhjNWNRY1JkMmFSZUJhYmFrZXBla2NlZ1Vnc2ZVZGNhUmQwYmRoVGhSZWxiV2FkZUdkNWQyZGNhMmc5YkdiWmF4ZjViR2ZOY3poMWVLZ0dmMWRKaFhnZGFuYUJjR2RYaG1iOWg2ZmJjMmFsYUllY2JoYW9oSWJXZUVleGdHZFVmVmR0YW9jWmhHYWxlMGFHY0hlQmNCY2RmRmZGZ0tlVGhuYVVhUmFjZzBneGJSZmVnSGJCZldhZGRBZTlicmJXYnhnaGZiaFJhaGROZTRnVWMwYjlla2JhaGxoTWFaaEVjM2RBaExmV2RWaFlkU2VlYWtmZGVrZlFjV2U1YkNhTGFIZmxnQWdDYlhnRWNKaEZhRWRFYXpnVmduZlJhdWhkZW5kTmF2Z1JnbWNjYldnRWdrYXhjMWRTY2hjQmFTaFJhQWh0YXdkV2FrZUlkN2ZLZWlnOGM2ZkdmaWdSZmNjZmFVY2dnVWhCZFNnNGdjaFJlUWZvYW9lSWRGYzFoNGNhYTNnUmdSY1Nia2g1ZTFnRWZYZ05lTWJVYVhnaGR3Y1ZlbmNRZVBjYWMxZ0lhVWhjZVVhWWRUZGVhRmFOZUhjTWFCZEVlYmJHYVJjaGR3YkdjaWdSZVdjRGZtY1poSGVmZEVjaGN1YUZlbWhRZnRkTWZGZ3dmTWNFZlRhZGFOY0dkVmdaYjBkYmFuYlplemZiYzBkWmduZUZhaGVKZU1jZGdVaG9oUWJVZWtlUWRMYWNnRmRwZkNmWmZ6ZlloZGdJZlJnUmg1Y1RibWZCZXRhVGZGZUZmTmhTZFFjMWVIY2FkU2ZnZ1lhSmVEY29jOGZVZ1VmRmdPY1piMmh4YVpoVGdGZ0ZlNGdjZ0ZnWmIwYkRjMmN0YVNjRmZIZkZkR2FFZzNjaGVUYlRkMmVSYXFnVWN4aGtiYWRmYUNoRmZaZ1ZlaGJKYTZlUmQyYVJjQmRiaGtmcGFrYWViVWRzZFVkY2ZSYzBhZGVUYlJlbGNXZ2RoR2JZaCtiY2EyaFJmYmdaYndoSWhiZVFlRmE5ZEtnRWdGZkpkRWNDaDNoQmZhYVFhbWU5YWljWmNtYWtnVWRjZ2tjNWV6YUVnRWJ4ZE5oVWdSZTFhZGRCZXpicGU2ZVRnbWFOZFBiTGJBYWtmQ2RNZ1NiQmdCZE5id2EwaEZnUGVYZmhmOGdkYUFhOWVyZlVkaGFSYnhnUmJoaE5kNGFVZTBoOWhrZ2FjbGJNZVphRWczY0FnTGZXYVZmWWVTY2Voa2Y4YXdjT2hpY1pmS2FiYTNlbGFhaGFoWGdFY0JiQWZVYzBoQmVYZzNoUWh5ZWRkaWJjYVVlRGJoZm9kYWNPZEVneGYxYVNlaGRCYVNoUmhBYXRkd2hXYmtlSmd2ZVlobWZaZHBoRmVIZkpiT2JjYXhkQmhNZVRiVmdGZUJkUWZUZlVmaGJkZEJkTmF3ZFVlZ2JsYVJoVmVsZkphMWhDZVhkcGhNZkRiWGZnaGtiTGNUY3diUGFZZ0ZmSWdHYURmR2F3YlRjZWhGY05mUGNaaEdocGVUY0doUmJOaHdhQ2cxaGxhV2VFYm5jcGFIYlpiRWNGZ3VoU2NtZTFhMWJZZ1JmUmZ4YkhjUmQxYk5kR2NWZVpnMGRiZG5nWmd6ZWJlMGNaZ25lRmJoYkpkTWFkZFVjb2dRYVdnZ2R3YUxoZWYwZWRnQ2hlYzJldGNxY1FleGRSZXljVGJuZU1kUWdUZ0VlMWZSZVNnUmJWZk9oYWhYYVFhWWdjaEVkRmEwZVVhVWhwZE9lSWNWZ2tkNmRIZTFmOGh1Z1plRmdnaHNnVmh5YU1ldGhRZFNjRWFDaFVlaWZ3ZldoUmIwZjVlcWNVZXhja2VUZWNmQWZ0Z1pkVmVoaEpiNmJSYTJlUmZCYmJha2NwaGtkZWhVZnNoVWRjYVJjMGNkY1JoVWcwYXRmUGNHZzVkOWFjZjNjNGc3ZFpkd2JvZk9kVGNHZzFoRGRFYUFlNWRFZVhmd2dzY1NiUGUyaE5lSWJaZm1ha2hVZGNoa2I1Z3pkRWJFY3hoTmNVYlVna2hWZVRkbWdsZjBjR2JIY0JlQmFkY0ZhRmFLYVRmbmExaEZkQ2hBZVJhUmNjYjNmQmZGZENlUWU5ZTNkVGRoZVJicGJUZHhoTWJrZVVjeGNzZ2ZmSWRsZ01iU2ZFZTJoSmMyYWNkMWhZYVNkZWdrYWRha2ZRZ1dlNWVLZ1pkSGFsZExiRmFIYUViZGFIY1VkMGRaYlZnbmhSZHVjZmUzYnBjamJiYkdoY2hXZ0Vha2h4ZTFmU2hoZUJlU2VSZkFndGd3ZFdka2FKY3ZiWWdtZlpicGFGYkhlb2RHY2NjeGd0YVJiVGZVYVZkQWREZG1jUmZwYmRnQmFoY3djUWFYZlJoUmVTaGtlNWcxYUVjWGhOZ01jVWVTZjhlNGVIYnpjaGVLZ2FkMWhwZUJkY2NWaGdoT2JlZUJidGZHZ2ZoMGZCZFRjR2JSaE5hd2VDZDFjbGJXZUVmbmZwZEhoWmdFYkVjemVZYkdnUmg1YlNoeGhSZ3hiSGhSZDFnTmNHZ1ZmWmMwZWJnaWNRYzJnT2h4aE1kMWZXYkJhSmFFaFhkMGFvYVFiVWNraFFnTGVjZEZicGhDY2JhMmhKYW1mYWJSYlJleWRIZFhlTWFPYVRnQWJWaFJhVGh4YU5oa2RhYVhoUWVZZmNmRWVGZjBoVWhVZHBmT2dkZFJoRmZ6YlRiRmVGZzRiY2FGYjRlN2RKZ1dldGFTaEZoSGhGY0dmRWEzZ2hnVGFUYzJjUmVxY1VleGdrZ1RiY2ZBY3RlWmdWYWdmMWI2Z1RlemJBZ0phSmV4ZGxicWJOZkFoNWJaZVBja2c5ZUVkVGNSaEpoTGdkaERkcGg0ZElhQ2FNYlBiSmJGY01kYWNCaEhneGVEZE9lbGJKZ0ViQ2MzZEJiYWVRZm1nOWFpZVphbWVrZFVmY2FrZTVmemJFZEVleGVOZFViVmVNZlZjQmUwY05kMGNHYkhiQmVCYmRhRmFGZUtiVGFuZlVkUmJjYzBoeGhSY2VlSGdCYVdkZGRBZTlkMGhVZWtoQWc1Z0RmMGNCZTJnSGZnZm9icGFKZ1FoRmZBY0hkU2FOY09mRGVWYzVlR2ZkYkJmUWF4Y0FoeWU4YlliTmJqZGdlU2ZIZ0Rha2JSY0hjUmI0ZVFhV2duYVFiNmFQZWphb2E4Z1NiQ2RwZlRlWGh4ZzhnOGRFaEZjVmJiY2JoZ2Z0YXdnV2JrZEpodmZZY21hWmJwZEZiSGdKY09nY2J4YUJlTWZUZlZoRmZKaEZiVmRSZXBkSWRCaFlkemZEaGlhUWRJZlFkaGRvZjlnV2JDZkJlQ2JIZ0RiMGg5ZUdjU2JaaFdhWmIxY0plQWJPY1FiOWZBY2RhaGY0ZEtkS2NUZmtiYWRRYTFhWmI4ZENmeGRGZ2FlRWVpZWxjT2VhZEdhdGd1Z1NnbWJSYjVnU2J4ZlJjeGRIYlJkMWNOZUdkVmNaYTBnYmNuZ1pmemhaYXhnSWN2ZlhoMGJGZkNmT2RBZDliZGVBZlFkMWRSZU5mVmZwZ2ZkYmJ6ZUZmbWZaYUJhUWg2ZVJhM2ZvZGNlWmJraDFkUmdTZ1JlVmdPZmFnWGJRZVlkY2VFYUZiMGVVZ1VicGNPZElnVmJraDZoSGQzZ3RnNGhjY0ZmWmcwaERlMmF0Z1NlRmJIZUZoR2ZFZjNkaGhhY1ZkRWI1aHFnVWZ4ZWtlVGVjY0FmdGZaZFZkaGFKaDZiR2htZDFlTmNSZUVocGZrZWVoVWFzZFVhY2JSZDBiZGhUaFJkbGVlYU9lMmVBYm1oSWNTaEFkU2RLZ0ViSmZMY0hmRGRCZEVoVmhCYnNhRGNUZGloTWhPZVFnbmNKYWlmSWZEZnhkYWVNZlJib2I2Ylhod2ZKZ05oV2FVZ0FiVmZGYVVhTmIwZkdiSGFCYkJhZGhGYkZjS2VUaG5lVWVSY2NlMGN3ZUhnT2dTYkpnV2JJaEFlTmFCYVViaGNSaHhoUmhoaE5mNGFVZDBmOWFrZWFkbGhNZFpoRWUzZkJnWmVWZlhod2FTYWVia2RkZmtoUWJXZDVoS2NaZEhobGNMYkZhSGJFYWRkSGdRZVFmWmZTZTNiUWY2Z1BlamJvZDhlU2FDYXBnVGdYYndlTWduZ0VjeGh4YzRkUmNBZ3Rjd2dXZWtkSmJ2aFlkbWNaZnBoRmZIY0phT2VjZnhnQWNKZFRnVWZ4Y0piRmF4YjBjOWZKaGxlRWgrYkJkbmNaY1JjVmQxYU5kMWZSZFNib2djZUZmRGJjZjJlVmZqZzBjRGFRYlZjSWhVZmNnVWdZZVRmZWdGZE5jUGZaY0dlcGNUaEdhUmJOYndhUmdGY2xoTGVFZW1hcGNMYlRha2RGYXVjU2RtZVJnNWRTaHhiUmF4Y0hlUmExYU5kR2FWaFplMGdKY25oWmN1YWJieGhJZXZiWGgwY0ZoQ2JPZkFnOWJkZUFkUWMxZlJoTmJWZlpmb2ZiZTJlSmJtYmFlUmRSZHllVGFuaE1nUWJUZ0VjMWNSY1NhUmRVYU5kYWhXZWtlWWNQY2djUWVqZFVlUWJSZkdiZmdBY3BjWmRUYUZmRmQ0Z2NnRmRaZDBjRGYyaHRmU2dGZkhiRmhHY1ZjVGVjZ0JhVGUyYnhlQWdVZ3hma2NUZWNhQWN0YlpnVmRoYUpmNmRSaDJjUmhCZmJka2hvZ3dmZWJWZ1lkK2FjaFJiMGZkYVRjUmFsZVdiZGhHZDVoMmdjYzJoOWFHZVpieGNZZVNjVGhDZkVmQ2ZXaFFiRmRLZVhjemg4Zk9mQWd5Z01mZGhLYmlmeGFhYmNmbGJCZHVhRWFGZDFiYmFlaDBla2RWZlRobWdsYzBiR2hIZUJjQmVkZUZiRmRLZFRibmJVZlJnY2UwaHhoUmFlZkdlOWdXY0liRWRjY2lmQWFSZm9jbmRWaHphbGE0ZFVjMGc5ZGtiYWdsZE1lWmdFZTNkQWNMaFdoVmVZZ1NlZWZrY2Rja2FRZ1djNWVLYVpmSGNsZkxoR2NpYU5hU2hTZVFmRWFSYlJlM2QxZUVlZGRuaE5idmhSZG1lY2RXY0Voa2F4ZDFkU2FoaEJlU2hSZkFidGZ3Yldla2VKZXZnWWZtY1pocGdGY0hjd2RQZk5nMWRSaEViWmQxYUZnSmZGYVVhNWRwZWRoQmhoZ3djUWVYZVJlUmNTZmtkNWQxYUVhWGVOZk1iVWRYYmhnd2JWaG5nUWRQZ2Fjd2ZaZ2NlT2ZCYVVoZGhMZ2toRmNsYlpmR2hwYVRjR2ZSZU5od2FDYzFkbGFXZEVjbmRwZEhmWmhFY0ZldWhTaG1lUmE1aFNheGdSZHhnSGZSaDFoTmVHZVZkWmQ2ZVBkRGZraG5mSWEwZTVhd2VIY3pmaGFNYmRlVWVvaFFiVWZrZVFnTGdjZ0ZicGdDZWJoMmFKYm1mYWFSZlJneWJUZG5nTWhRZFRmRWYxZFJlU2NSZVZmT2VhYlhmcGFaZE5oQWZWaDhiQmhRZkljSGdKZWhoOGdsZFhkMWM4Y3FmUGh3ZUlkNGZCYTNocGFBaEhjWGg4YkhnVmZ6Z3hmYmdHZXlld2VqZUFiQmVkYUZoWmdBZ1VkTGVHZVViWWMyaFRkM2ZWZlplWmYwYk5ldGJVaDBkc2dVZmNiUmcwaGRkVGNSZ2xlV2dkZUdhNWUyaGNkMmU5Y0dhWmh4Y1lmU2NUaEhlVmdLY0VkRmdKaE5jSWZYY0JjYWJRZ21iOWVpY1pnbWZrZFVoY2ZrYjVoemhFYUVkeGFOZVVnVWRrZlZjVGNuY05jMGdUYURmZ2JJZUpnMWY4aFpnQ2d6aEJnVmhmZVFoOGVkZE5hemE0aFRoZmJBZlpmbGdFYzFmQWYxYVRobGg5ZHhnWGQyZFZoa2RhaGxhTWFaaEVnM2hBYkxlV2RWYVlnU2NlYWtiZGNrZ1FjV2g1ZEtoTWJIaGNiS2JVYURkVWFWZVhma2NOZmZnQmJEZXNkamFHYUNlWWNpaEJiQ2hKZUVlR2NoYWdiOWNBZzBhTmFjZ0VoRWJRaGtnR2h3ZDRnUWZMZGliTWVuZkhiWGJ0YVZkV2VSYUJhTWdUaFZoRmdKZEZjVWg1Z3BkZGFCZGhkd2dRaFhkUmNSZEFka2E1ZDRkRWdXZ2RoTWhUZDJjVmh3ZkdoV2c4ZGxoUWJWZEliVWRjY1VkWWdUZmVoRmNOYVBjWmhHYXBiVGVHZVJjcGJhZ0NmMWNsYldlRWduZXBmSGFaYUVjRmh1YlNnbWRSZjVlU2R4aFFkMGhOYXhoMWNOaEdlVmRaZjBiYmFuY1phemFiZDBlWmNuZ0ZmaGhKYk1kZGJVY29kUGNVZGdkY2ZGZU5lZ2dnZk5nSWNnYUFldmVQZlViZGQ2Y1pmSGZNYVFiVGZFZDFmUmZTZFJkVmZPZmFjWGZRZlliY2ZFY0ZjMGdVY1VkcGVPZWRiUmhGaHphUmhCZGhiMmhNZHhlNGMxZ1hlUWdnYmRlVWJEYlFlbmVSZzNjQWNjYVRnMmQ5ZnFkUWVoZkFoVGhiZkJlZGhaY1RlaGJ0YzZhR2YyYlFoSWJZZkFla2JzZk9oQmFsZjNmUGNsZGxjWWdMZEVoMWNlZE9nMmJkYTZhV2ZXYjliR2VaZ3hnWWhTZVRoSGdWZ0tjRWZGZkpoRWZDZjNnQmFhY1FkbWY5ZmliWmFtYmtmVWVlaGdnZGU5aFVmd2VRY01oQWd5aHBhYWNDY2lkd2hWaFRhSGRnZE9jZGRGZ3BoS2dYYlhjd2ZSZmJoMWhCYlJnWWhIYWxjV2VLZUFjOGJpZ1hmRmZjYzVmQmYwZEVkYmhIYUFlc2NoYkNod2hjYlJmWGZIYkFlQWNXYVVkUWZiZFVoRWdkYWtlUWNXYjViS2RaaEhobGJMZUZmSGVFYWRkSGVVYTBhWmdWZW5hUmN1Z2RkbmZwZEZhUmZtY2NoV2FFY2toeGgxZFNkaGdCZ1NhUmFBYXRkd2RXYmtlSmN2YVlmbmh4Z3BjVmYzYXdjSWNJYlZoOGJCYkxneGhnY2RnUmNrYlpiRGFkYkJjaGV3Y1FlWGVSY1JlU2RrYjVlMWJFYlhkTmRNYVVoWGNoZHdlVmFuZ1FnUGFhZjFnSWRjZE9jRGgxYmNjZWhGZGhnUGNkY1JkZGdUZkJmUWY5aHdkRWIxaEJlV2VUZW5jb2ZPZkhmd2M0ZFRjUmRrZDVjNWVTZHhmUmh4ZUhmUmQxYk5jR2ZWZFphMGRiZm5oWmR6ZWJiMGVaYm5hRmJoZkpoTWVkZVVoSmJaZUtnUWRzZkxmZWExZXBhUmZFZW1nSmE2ZWRjUmZSYXFmUmgzZk5lTWRUZEFnUWdxZkJjaGhWYUZhYWFXZlpkbGJXZmtlRmYwYlViVWRwZk9lZGJSY0ZkemRUZEZiRmc0aGNnRmhaZTBnRGYyYnRmU2RGY0hnaGZLYk9mWGNoZFRoVGcyZFJjcWhVYXhoa2RUYmNkQWR0ZlplVmJoZEpkNmZSZzJlUWNWaFlnQWZzZWdlUGhVZ05hWGZmZDFoQmhJaEFnVWIwaGZlSmVDZElhdmRlYnpocGdQZmJoaGNoaEFlQWd5YkVlR2dHZUVhTmhUY0FhbmE0Z1hlRmJ5ZU1iMmNMY3plbGhZZ0tlMGFZZTFhR2NVZEJobmVVZ1Vja2VWaFRobWZsYzBnR2dIZUJjQmZkYkZmRmdLYlRobmNVYVJlY2YwY1FmZWFlZEhndGRMZWRnQmV0Y2llU2dUZzVjeGZSZWhhTmU0aFVoMGc5ZWtmYWRsYk1iWmFFYTNlQmZOZEZhZ2NRZVNiY2dsYXhja2NDZ1dmNWNVYlpiRGJaZ1FkRmJIY2dnM2RIZ1VhMGhaZFZhbmRSY3VkZGFuaE5mdmVSaG1mY2hXZ0Vla2d3YzJnUmZGYlloQWhDZTBnWWJTYkVieGRZZzhnYWZpYU5ocGdDYTNhSWRIaGZmVmdNZEVhRGdBZE1ocWRXaGdob2ZzY0ZhVWd4aDRoRGhuYzlmYWJRZTBnNWV2Z0VmVGRvZjNkSGZuZU5iN2FLZTNnZ2NQZWViMWNzaFlkV2gwYVllVGdlZUZkTmNQZlpjR2dwZFRjR2VSY05kd2RDaDFnbGZXZUVkbmVvYVRiYWRnY0FocWdEZW1jd2U2ZlJjVmhrYWtoVWJVaGtnRWJTYlJmb2V0ZFpkamRwYzZnWmFrYmdoMWJXYlVmWWVBYWZlVmhzYkJhV2EwaHBhR2NKZFJnWWJXZEplamZJZnFlTWhCY3djaGRSYjJoZ2g2YVRkRWUxYlJiU2NSZlZmT2JhZlhhUWRZZ2NnRWdGZTBkQWF3aDhhYWhJYkVnTWY5YVRmRmhsZlNoY2RGZ1pmMGFEaDJidGJTY0ZhSGFGYUdiRWUzaGhkVGVUZjJmUmhpZkFjUmRrZU9lY2JGZjljWGhGZ1ZjNGMxY0NjU2FGYUpnWmUwZlFiM2dNZlFiSmRTZ0pkV2U5Z1VnQ2ZsY0VoQ2JmYkhiOWdqZ2VhbWJaZEtiVGZSZFlmU2dUZ0hoVmhLYUVhRmRKY0VoQ2gzZEJmYWJRZm1nOWJpYk1hbWdkZ01lUGVSZnhiN2FRYmthVmVEZEhnQmh4ZlplR2JpY0Fia2VWYkNkbGFKZk5nVmJoYUdnWmNIZVVmUmZjZDBneGdSYWVoSGRCZVdmZGRBaDlicmZVZmhoUmF4YVRla2hGZTRjVGFrZThld2NaZUJmQmRWZlhhRGY1YU9kVWhWZThhY2NLYVFnOGJ0ZUJhemhvYzRkTGRUZzRkRGJRZ0hha2VNZkRia2NRY1FoV2dsYzVldWVkZG5iTmN2ZVJibWdjaFdnRWFrZnhkMWVTYmhmQmVTZVJnRmU5aCtlQWVnZTBnOWRhY2poUmNnYkdiamY4ZmJnUGgwZFFiRmVIYVJkMGFRaEhkUmd0YmdoZWVEZEpid2RRZVhlUmdSYVNla2U1ZTFhRWRYYk5lTWdVYVhjaGd3ZVZlbmd4Y2RnYWEwYThoVWRKZVVnaGRRZk5nQmh3Z0JjSWRXZ0pkYWRGYjBoQWU0ZVFkaGc4ZkNhWWVEaE1iQWZMY0JlVmJtZ1diM2VKZndlUWhoYWhlYmVIZVJkMWhOZEdkVmhaZzBlYmhuZVpkemViZzBhWmVuZ0ZjaGJJZllmZWZ4YkphZmFBZUVheGVaZ2VhVmZaY29oYmgyYUplbWJhYlJkUmN5ZFRlbmhNZlFhVGhFYjFnUmJTZ1JjVWVhY0ljVGMxZ0xmZmdnZmdoNmFHY0JiNWhHZkliVmJrYzZjSGYxYjhkcmJOYVJhTWR3YUJmbWJkZjRkRmdIZEZnR2NFZjNkaGNUZlRnMmRSaHFlVWZ4Y2tlVGRjYUFnc2hOYmZmQmVKYzZnUmMyaFJlQmhiY2ticGhrYWVoVWZzZVVhY2JSaFFhR2JaZXhkbGdXaGRiR2c1YzJlY2EyZTlnR2haZHhjWmVQZVJhWGZsZWdkRWhGZkplRWFDYzNiQmVhZlFjbWY5aGlhWmVtZEZkQWhmZEFjc2NyYlFnQWdNY2ZiQmRSZG9mVmdVYzJka2M3YkVjV2h0YXJiZGZGZEZoS2VUZ25nVWZSY0xla2VJY1NnT2FUZXdoYWFmYUZjMWJuZVVhbGQxYjVmVmNoZnBoMmFNYVJhb2dpYkxlQmhaZUxoR2NuY2tiUWVjYjFjWWhTZmVha2NjaDVkVGFVZFJjS2ZaYkhmbGRMaFViaWZSZFRkWGdoZmxhUWJHZ1RncGh1Y2ZhaWNkZ21mUmJqYXdkOGNFYWtheGYxZVNkaGJCZVNhRWFrYW9naWdXY2hoQmgwZlNlR2FaZnBoRmZIZEpiT2JjYjBhSmFNZlVjRmJGZ0JhVWh4Y3NnbmZOYzBnd2Q1ZERhamJwZ1JmUWJrYmRjMWdTY2xmbGNNaFVkWGNoY3djVmFuYlFoUGFhZ3dnQmFSZkphUmJOZUJmTmJsY01nYmZMZ0NjTWVBYUFjamhsZndnQ2UxYWxkV2NFZ25jb2RhYmJiVWJsZ25kVWJVZzViNWNTY3hoUmF4ZEhjUmUwYlpiU2J3ZzlhMGZOZFZleGV6ZmJoMGNaZ25iRmdoZUpiTWJkaFJkZ2NRZFRkMGFSYlpoY2dBZVljZWRiYndoUWN6Z0phMWhjZ21oQmV6aHhjZWNSYUVmOGdEZ0RhRWhFZ2JjT2F6ZG9kWWRKYUFia2c5Z0Fia2JoY0hnZmRSY2hkemFFaEFnMWc0ZmVmRWFkYTRoRGh5YzRjRWZWZ1RhMWZQZUdnM2RvYUhkQmR5ZDBhNWRVY1JjQWRJY1dkZ2F0Y1pkVmZoZ0pnNmVSaHpibGhCZkxhUWdzZ3doT2hnaE1hVWZlYVZhUWZVZ1RkVWVKYThlZGdHaDVlMmNjYjJlOWFHYlpneGhZaFFoQWd6ZWNkQWFWZlJhRWRRZUNkWGVCZ0hiWGEyZThkMmhQYnplbGRSZFBhUWNoYXpjUmF3YlVhRGRGZlFoWmZDaFRmbWQ5Y3lnR2RIZGdiVGVkZ0VmeGVLYkdiVGd4YWZkTmZ3ZE1mR2VjZldodGc4Z2RoQWE5ZHJiVWVoYVJoeGJHYXpjbGg0YlVkMGY5aGtmYWJsYk5hTmJIZlRmVmhUYUNoUmVsZEFnTGhoY1Jna2JYZEdlNGRZYmZkMWNOZ0xmRmhIYkVjZGNRaEVoRWd6ZlZibmZSaHVlZGdqZ1ViNmVDYkNjUmNDZVdkd2hNZzdoU2JoZ2dkR2NTZUFnc2RpYlVnMGRJaDBkU2FHZVphcGJGY0hiSmVPYmNoeGNJZ1pkSGZoY1JiSmVSY2hib2c3Z1BoVmFzZWtjUWQyZTlhN2JTaGthNWUxZEVlWGdOZ01lRmN5ZzBlK2RGZVNmQmZHZ0pnQmJ3YlVjT2RFYTVmSGNjZlZhTWVVZFRnbWhwZ1RhR2ZSZE5ld2hDZzFmbGhXZVJiRGhzZVZkWmVCY05idWdWZTJnUWZ0YlJjVmVnZTBmVWcxZW9kWmdVZFVmMWdlYWJkbmFaYXpiYmEwZlpjbmVGZ2hiSWhGZ01jMGdvYVlkQWFFZlFoT2FjZkVjNWRDYWNiV2FKaDJkWWJEZzVmeWRUZW5iTWdRY1RnRWIxYVJhU2ZSaFZoT2RQY1RneGZLZlBleGVaZjBkSGF3aDhjWmVkZVhlUWJoY0hlaGg0aHFiZWNGaFFmZGhRZFRoMGZUaFdhRGNnZkNmRWJ5YnNmSGJIZlNiMGFrYUZnQmNjYlRoSGRFZTRhWGdFaFVnWWh5ZlJheWVrYVVkUGRSZDVka2ZPZ3dmNGNVZE1nQmQxZFFoR2FGY1VoQ2VQYVRmNGY2Z05lbWI4ZkpoSWVSY1lhR2dUYW5jeGRSYU9hbGNKZEVlQ2MzYUJnYWRRaG1nOWNpZU5iQ2N4YkFhSmN4aHdhOWVFYkVkNWNRYlVlMGZraEloVWYzYVJkMGRUZkFmc2JUYmRjRmV4Z0tiWGRBYmdiUmdiZ0VieGVEYmVlR2VwZldiZGZoY0pocGVVZ2dobGNzZVdleGFNY3NmS2dCZzFka2haYjFhTWNJZ2JobmdBZFVnV2dVYmNoU2JZZ0VlZGUwYldia2NSZktnWmZIaGxoTGZGZUhiRmdBYk5kMGYwZlpjVmRuZlJodWdkZGplVWg2YUNkQ2RSZ0NmV2N3ZE1oN2RTZmxnVmRhZUViQWRKZHdiQWJXYWhkdmVZZW1nWmZwZkZhSGFKYU9kY2gwYUliSmdHZVFhUWdiY1dhMGY1ZGhkWmd4YmhlNmZRaFNjQmRmaEJoZ2FzYzdjVmhpZmNjRWhXZEhmaGIvaFZkbWNBY1BkWmZsZEpoZGhlY1JkSWRhaFlkM2hsZlBjWmRHZXBoVGRHZVJkTWJ0Z0ljVmFsZldkRWRuZ3BoSGZaZ0FiY2Q3ZUJjQ2ZjY3RiQWVsaHNmL2ZIZVZmSmJGZVRiVmY5ZDBkTmJWaHhmemdiaDBmWmFuaEZlaGdKZE1oZGdSZ3hnUmFBZUVnUmdaYWZlSGhCYUNoYmEyZkpmbWRhY1JmUmd5aFRkbmRNYlFiQ2ZVZ0ZjN2JTZlJnVmNPaGFmWGRRYVlmY2hFYkZjMGZVYVFnVmRDZlhjeGVGYXpoVGNGZEZmNGhjZEZmWmcwYkRoMmhzZ2FnR2VGY3RlR2JFYTNjaGdUZlRkMmRSZXFlVWF4aGtnVGVQZmdiZGV6Y1ZhaGVKaDZjUmgyY1JkQmJiZ2tkcGRrZWVkUmFnYVVjYmNCZjFiSmJRYTFmVWNUZk9oaWdrY2lnT2czZFJnc2haYnhoWWdTZFRiSGVWaEtjRWdGZEpoTWRRYjNkQmNIaFFiaWdaaHFjTWZtYkFhZGNmZWtkNWg3YVhia2V4ZVFiVWhRZ2RmUWdHZ1dla2V5ZEVhSGFoZ1NhZGJGZnRlS2VIZVhod2JSZGZkRWV4YUZhZWhIaDFjV2FQZEFlWmNpZlhmaGNSZzVnQWN4Zk5hbGJVZndjZGRrZ2RiRmhNYkpjRWEyaDhkTGhDY2xjWWRmZ2VlbGJOYWtiV2IyZjRiWmJiZldmSmFoZ0ZnSGZFYmRjSGJVYzBmWmhWYm5lUWc0ZE5meWFGYXZlQmEyYmNjTGRFZmxheGZ1ZFljQmRCY1NhUmhBY3Rod2JXY2toSmh2YkpnQ2hrYjdoRmVIZ29kY2ZjY3dlMWRNYVhjVWRwYUpoVWZFYTVnM2VkZkVocGNyYVFiU2FaZ1JkUWFWYk5hMWdCYVhmcGZtY1VmWGZoZXdhVmFuY1FmUGdhZzFiSWRVYmNjVWc1aGNlZWNFYzVmbGNaY0dkcGdUaEdmUmhOaHdkQ2YxY2xjV2NFZm5jcGZIY2JjQmJRY1ZhSGJtY29oNmFBZTFjVWZqZGZjbGFJZEpoWGREZ2NkZ2JaYmlmUmQ2ZkVja2haZDdnQ2FoYUpnZGViYlVhTWdRY0RobWY0Y0xjY2VGZnBjQ2FiZTJnSmZtZWFmUmFSYXlkVGZuZE1oWWNHYlRhWWNGZVJnMWRZZkdkS2hDZlpoN2ZQY3diVWR4ZE1hQmg1YUdoSmR4YkZkNGFUYUVmQmJ4ZERhVmZaZW9jRWQyZHRoRGhCYm5jaGdHYlRlMWZKZFRkVGEyZVJocWZVYnhoa2dUYmNjQWF0ZVpiVmJoaEpneWVFZmhjOGVWZ1lnQWdraHNjT2hCYmxlM2RQYWxmbGZZZExhRWQxYmVkSmZtYTVhOWRjYzNmMWdQY0diaGJZZU9kVWZIYlZnY2dHYVZkSWNZaElhWGZCaGFiUWZtYjlkaWNaYm1ia2VVZmNka2U1aHpiRWhCZmtmMmhCYlVkZGdXZkJiaWFnZW1nZWJ6ZjhhRmRNZVRmQWJlZVJhaWNjYlJlZWVFZHhiQ2FjZFFhMWNmYWVoQ2FWYnJjVWdoY1JmeGVSZWhjTmQ0YVVnMGY5YmthYWFsZk1oUmFYZlFjdGJLY1VibGcxYnZmZWFsaHBna2JTYVNiRmZLYWVhbWJkZkxmQmVXaGNhVWhIZVVlc2daZFJiR2JGYzdmZmMzZDliRmNSZG1kY2NXZ0Vja2J4YTFnU2NoZUJkU2ZSZkFidGN3ZVVhZ2R3ZlVkSWUyZDFhaWVhYVhkSmFUZmNkeGRnZ0RiVGJVYzljWGVGZFZmWmdnZWRmQmE1ZXdhVWUyZUZoRWFRZjBiSmhmZEVkWGJOZk1kVWNYYWhod2JWYW5hUWZQYWFkMWRJZ1VkZWZRZ2hnb2FPaFZiaGRFZ0dhV2RwY09oR2VRYUZibGJIaGxhbGRRZ0VjamhWZU9hZmMyaHRldWZTY21jUmM1Z1NmeGJSZ3hjSGJVYThoSWZUZlFiTWhtZ0llSGZaZTdjUmdVZVphbmRGYmhlSmRNaGRoVWZvZFFnVWJrYlFjWmNjYkVhZGdmYWNhbWZJZXVjUWJ4ZFJkeWNUZW5kTWdRYVRlRWgxZ1JmU2FSYlZiT2RhZVdjc2hZZGVmRWdraDdhVWNWaGRhT2dmaFViUWNJaEdnRmE4aDdmT2FCaGNjbWViYUNjUWZXZVVhUmZBYVNoR2R5ZXBoYWZNYm1oUmUyZlRjeGhraEJhZWZRZXNhRmJWZWhib2h2Y1BlRGJCZ1BnTGJRYUlibGFLaHloaGFiaE5mVmRoYjhmR2VSaEVjRWNkYUdiVmMyYllkbWRZYjdmWmN3ZWdiTWJUaEdlRmhEZEdkVmg1YnVmQ2UzaEJkYWRRZm1hOWZpZFpibWVraFViY2hrZzVjemNFZEVkeGVGaEhkemFKY1VmUmdXYkliSmVHZEdiMWZCaFpla2FSZWZhVGVuY01kUmdQZEViVmFZZVVkbmZCaFdlZGFBYjllcmVVZmhlUmV4ZFJiaGJOZTRkVWYxZlZka2VlYTFoTWdFZkRibWEwZkxiRWJWaFljVWRmZ0diMWFrZFFmV2Y1Y0tnWmZIZ2xmTGVGaEhkRWhkZUhmVWIwYVpkVmVuaHhnbWNPY1hkTmR5aGJoR2NjZFdmRWhrYnhmMWJTY2hlQmVTZFJiQWJ0YndoV2FraEpldmdZYW1mWmJoY1FlUWFrZ2FhZmhWZU1kRWZEZ0FiTWVxZVdoZ2FvaHNjRmVVZ3hoNGRFZzNnMGRzaFNibGZKZXBhRWZXZ0pnY2ZXZUhkZ2dzYWZlSGJRY1BnYWExaElmVWJjYVVnWWVUaGVkRmFOZFBhWmFHZ3BjVGdHZFJiTmc0ZlhlaWhJYkNmSGREYmtmUGZKYlJoTWhOaEJnU2VBZjhiS2JrYUJkNWNUZHhlMWRHZkdoVWZkYzllRWgzZFpidmRjZzBnWmN6Y0hieGdJaFFiWGUwYW9hUWdVZGtmUWVMZGNhRmdwZUNlYmYyYkpkbWRhZlJmUmN5Z1RhbmVNYVlhR2RUZllmRmFSZTFmWWRHY0tnQ2haZzdmUGF3YlVmeGVNZUJoNWZHZUpkeGRGZTRmVGVFZk5neGVEYVZnWmVxZEVkV2R0Y0FkSGJYY2hmS2JPZFhjaGdUaFRmMmVSZnFkVWN4Y2tmVGFjaEFldGZaYVZoaGVKYTZlVGh5Y29mNmhMaDBhRmV2ZkJnRWNzaEpnY2ZSYlZmU2RUZlFjZGZJYmRjSGJaZi9iY2UyYmxhR2JkYVFoTWdIZFJnWGJsaGdhRWhGZkpiRWdDZjNnQmFhZFFjbWE5aGlkWmFtaGtmVWJjZ2tmNWQ3aFhmamVjZ01lV2FrYUpmb2dUZ25oUmQwYkNibWJWYlVoZGhGZGRjS2NBZ1hjd2ZZZGZiMmVaZFJkZWRIZUJkV2RkZUFlOWZyYlVnaGhSaHhkQ2hEZGxoNGRVYjBkOWZrYmFhbGhNYlpmRWczY2tjUWJjaDFoWWZTZ2Vha2dkZWtnUWJUYk5oZ2JaZUhnbGJMZUZnSGFFZGRiV2F4ZmhoWGVGYVNiQWJuYk9jVGUxZXZmRGhtZTlnQ2NHZzBod2d1YllhQmhCYVNiUmRBZ3Rnd2hXZGtkSmJ2ZE1jQ2FNaDlkUWFTZUFoQWFjaHhhaGRtYlRiVmNGZ0pkRmhVZjVicGVkYkJlaGJ3Y1FoVGhVZ3FkUWJoY3BkMWFEZTJlMWdNY1FkR2RCYTVoVmRuYklhUGJmYlVhRmhwaGNmVWMwZFRmT2RTZ2hiSGhNYUdocGhOaEJjeGFOZ2hoR2dWZEJjV2VGYkhkcGNSZmRkemZ4ZHVmUWZXZVFkNGdNY0Jld2RsZkhjUWVOZVRlR2FVYkJnOWZiZ25oQmN6Z2VnVmJVZGFnRmFoZGxiTWNOYURhRWNHYVFkVWNRY05iY2FBZDRmL2VSZFdoSmFtZWFoUmdSYnlkVGVuZE1kUWJSZ1ZlWmI3ZVNhUmNWYk9iYWNYYlFjWWdMZldldGYwZ1VjVWFwZU9lZGVSYUVmMWdHZFJnOGg3ZEphQmc4ZTdnUWFXYnNnY2FIZkNlVmRLY0VneWJwaGZlVGV5ZjFnamFVZjBkSWY1YmNmQWZ0ZlpkVmRoZEpoNmNSaDJoUWRIYUliUmFoYmtnY2dSaDFiVmVJY3hjMWFZaFFnUmNrY1pjZGJIZk5hMmZDZUJnSmNLZFpmMWVnZlNoVWdYZlVmWWFDZzFkSWNOZUNjMmY1ZGFmRGZIYlJhaWJLZUdha2dmZGJmMGM1ZmdmR2JXYlpoTmJVaFVha2hWZlRnbWdsZTBjR2RIaEJjQmVmZUJmUmVLYlVoM2VVZlpnSmd6YmNjZmNCYlhnQmVLZWFoQWU5ZTZkUmRCZDFmeGFUZFJjTmR3ZEJnemRRaHFjYWFsZGdlWmRBaGdnMGhMZ1JnVWhvZlNnWWJraDVla2dTYm1mNGFlY0hnemFkaExiSGIzZEVkUGhZY0VjUWVWZ1Znamh0ZGdhSmVpYVlhOGZEYW1kOWdlYUdmZ2hsZzhnUWh3ZHRnNGJSYUFidGd3Zldna2ZKZnZnWWdtaFlkN2ZVYVNhWWNiY0lhVmg1Y01kQWJsZDhjRGZXYmdoY2huZGZkQmRwZnlhU2dHZzllN2dTZ2tkNWUxZkVnWGVOaE1jRGZGYUphd2ZWZW5lUWNQZWFoMWVKZ1NoSmdBZ2hkUWdMZUJob2dBYUtobWRvY0FlRWNVY2RkNWJDaHdlSmY4Z0VobmhwYkhiWmhFZkZodWhTYW1iUWQvZUJnRWhaZHhoRmZUZmRhTmNHZFZlWmIwZGJlbmdaZnplYmEwZFphbmhRZEZjTWZlZmRiUmRnZWNjZWhFYVFkTGhjYkZocGNDZmJmMmJKYW1oYWFSYlJjeWFUZWplb2NRZVVjVWMwZ0ZiUmgxZmtoTGdKZnpiTmNNZk9kRWIxZ2VjVWdVaHBnT2JkY1JmRmV6Z1RnRmdGZDRnY2FGZVpjMGhTZW1ndGhQY0ZkRGRoZ0doRmVuYmhnQWZRaDBnNWFxaFVleGdrYVRmY2JBaHRhWmNWYWhiSmU2YVJlMmdRZU9hYmdsaGRla2JlYTBna2RZaFdheGQwY2RiVGhSY2xhV2RkaEdlNWgyZ2NiMmY5Z0dmWmYxYjRkU2VVYlhkVWV4aGJhVmM1YXVoQ2IzZ0JkYWZRYm1lOWVpZFpibWdrZlVlY2drYzVhemJRZjBneGRRZVViVmRnZkRhWGdYZEZjbmNGZUZjcGVCY2RlRmhGYktiVGhuZVVjUmFjYjBkeGRSZWVjSGRBY0RkZGNCY0pjcmNRYmhiaGNiYVJmaGZOZzRkVWQwZjlia2NhYWxhTWNaaEViM2dBZkxnSGUxZVlmUGhlY2dmNWVrYlRnR2g0Z1BlZmUxaE5kTGVGYUhhRWVkZEhjVWcwY1phVmRuaFJidWZNZEhoTmF4YlJkamJJYk5nT2NFYnhkMWNTZWhoQmJTY1JmQWZ0Z3dlV2VrZElhNmNZYW1oMWMwaEZnQ2FGYWtlY2J4YkJlTWZUYVZjRmRKYUZjVWQ1YmdiWGFoaGhkd2NRZlhiUmhSZVNka2I1ZjFnRWhYaE1jRWZYZHlkZ2NsaEJjVGF3aEhkSmdWZXBlQWFmZFVoWmhHZmRmRmZNZ2FlWmZHZkZjVGNTZWhiTmN1YUNjeGQ5ZVdkRGZYZW9mQmNaZUZjdGJ1aEhmMmJSYXlhU2UwaGRhNGVGaEFoWmNuYUdhVmJaYTBjYmNuYlpmemFiYTBlWWYxY1VkMGZZY1pkSmV3ZFFoUWZXYW1hNGVMZmNiRmhwZUNmYmUyaEpmbWVhZFJkUmF5ZVhkM2VNZ05hVWhWZEJhUmFEZERmOWZPZ2FkWGdRZlloY2JFZ0ZoMGZVZlVlcGhPYmRmUmFGYXNnVGVGY2xjd2FJZ2xnWmFwaERjemM4Y3BoWGVYZUZlTGFFZzJma2R1Y1JnbWVoYUFoVWV4YWtjVGVjY0FmdGFaYlZkaGdKYzZnUmQyYVJiQmZiZ2tocGFzYk5na2NzZ2ZiYmNCYTFmY2JOZmtndGJXZ2FnbmhCaDJjWWRSZ0plUGNhZ3pid2FTY1RlSGVWYktnRWVGZ0plRWFDaDNlQmdhYVFnbWI5ZmloWmhtZkZjYmNjZ2tnVmV1YUVoQWcwZDJiV2RSY3NnVmJVZW5mVmYwZURoSGdsZkJkY2dsYUZnY2NYY1FjZ2ZZYWZjMmhaZlJmZWRIZkJnV2dkZUFoOWRyYVVmaGFSYnhmUmhoYU5kNGhVZDBmY2FyYmFjbGVnZEVoRWUzY0liV2JSZUZjUWViaGNhMmcxYmtlUWVXZDViS2JaY0hhbGNMZkZhSGdFaGRmSGRVZjBlRGVWZG1oWmZ1Y2FjMmQ1ZXlnUmVpZkllV2VGZUVicGZmY1NlaGhCZFNiUmFBY3Rhd2ZXYWtiSmJ2aFlobWJaZ3BkRmVIYkpjR2NlYjBhSmVNYVVoRmVGYkJlUWVUZlVjZ2VkZUJiVmR3ZVVkd2FsYlJlVmVsZkpnMWVDYVhkcGFNYldhbmVnY2tiTGJUZDBiUGZaYWxlSWFGaERhRWE4YWZlVWJsYU5iUGRaZUdmcGRUYUdnUmVOZndhQ2ExZ2xjV2dFZG5mcGNIaGJnQWQ1aHVhUWdYZmxmNWRDZW1mOGFqYkhkUWdOY1RhR2ZVZ2Rla2VFZTNhOWUvZVJhVWJaZW5oRmNoYkpmTWdkYlVhb2hRaFVia2dRYkxiY2dGaHBiQ2RaYnljMWdtYVlmZ2RsaHlhRGh3Z2dmWWdIYWtkMWdQYlZieGJWZWFhWWFIYVFmZWdjZkZiZGVuaExoRWdOZUNjWGN4ZkZhemRUaEZkRmg0ZGNnRmRaZzBhRGcyYXRiU2ZGY0hiRmFHYUdkemRkY1RkUmVIY2xmcWNFaG1lSWNiaEloZ2Z0ZEZhU2FoaEplb2NUYm1mUmFIZWJlbGN4aDNhQmhFaEljWWNXZnhnMGJkY1RnUmhsZldoZGdHaDViMmVjZDJjOWNHZFpieGJZZVNlUmhEZHBlS2NHYzBhOWdFZ0NnV2ExZVllU2gyYVpidWVUYUdia2dVZGNma2E1Y3phRWVFZ3hnTmVVZlVibGJkYlFiRGFrYmhlU2d6Y2hiSmJPZTFoaGJHZlpoSGNVZVJnY2IwYnhiUmRlZkhjQmhXYWRjQWU4ZGpnWGNGZzRiK2dEYjFmMWF3YlVjVWMxZHRhUWhGZ01kWmRFaDNlQWdMZ1dkVmdZZlNmY2ExZHhnT2VRZFdjNWdLZVphSGRsZUxnU2RWZHNoZGJIZlVhMGJaZVZibmJSZ21jSmVIYzBkdGhIZXpkTmFUaGZkZ2ZrZzdkRGNVZlFjYWhSZUJoWmZ3Z0hkMGh0aGpmWWNtYjRmN2RHZWliWWdCYkVhVWRrYlllQ2JEYkFhYmZSZndmOGJ3ZmRoQWFWaHdmRGhuYjFiZGJTY2tlWWJuY0hlemFVZmVmSGNqZVVhU2VEZXllQmNLZENlZ2NCYUdnTWFCZDhhVGNaZFZlTWdjZmJiWGNGaDVhR2RSY05od2ZDZTFkbGhXZ1ZlRGdVYVZhWmhFYmxkRWJTZ21oUmc1ZlNoeGRSYXhmSGNSYzBhYmRXYUFhUmgwZExiM2RaZ3VkYmZ6ZDBjYWhHaGpjaGRNYWRmVWZvYlFnVWJrY1FlTGRjYkZhcGRDYU9nbWNKYzdhYWZXZDhlUGJRYmxha2FRYlRnRWExZVJlU2dSZFZiT2RhZ1hnUWNZZk5na2ZGY3BkVWRVY2dlYmZPZzFkVWIyYkNnaGhnYzJmTmJSYkplMmJEYzJocGRQZ0ZjQ2hVZmZiUWR6ZTBkY2JDYVdiUWVmZkdlbGRkYkhoYWFHZW9lTGFCaEZjTWhqYlJmM2d0ZkJnR2d3ZU1lcWZMZlZnTmQxaEllMGM5Y2NlRmdCZ2xjTWZkZUFkOGhraElkU2I0Z2ZiYWN6Y3doU2NUYkhkVmNLYkVjRmdKaEVoQ2QzZUJoYWREZ21kOWEvZ1RjR2hrZFVmY2JrYjVmemhFYUVoeGdOZ1ViVWZrZlZhVGFtY3NkVmZlY2hnTWhsZUVoVGRjY3RnSmhoZXhmN2NHZkNhQWM4YUZkaGI4aG1oQmhYZjBnWWJKaG1iRWRIaE1iV2ZzZ0JlS2FRZjRjbWFLYlJoZGZjZFZoVGJkZkRkRWVCYnhiWmhOZWdob2JxYURoamU0Y2JiTmJpZ29nZmVRZ1NnZGNLaFJlUmFSY0RiUmhtY1ZoOGZaaFdjZGg2YlVlSGhBY09jQ2gwYmRhNmFTY0JneGE0Z1JiQWd0Y3dlV2VrYkpodmJZZ21hWmhwYkZjRGNGZU9iYmFoZUJiY2NRZFhndGNKZEZjVWc1Y3BhZGZCYWhmd2dRYlhlUmJSYkdna2Y1ZG9kRWVUYTljQ2FIZ1RkMGUrYkVjU2ZCZkhjY2FIZ2dmVWFjZlVhWWhUZ2VjRmVOZlBkWmVEZHBiVGZCZ3hnTWh6aEVjSGVOZ1dmRWNuZnBmSGFaZkVnRmh1aFNobWI5YXlhQ2ZEZTVheGNIYVJiMWhOZ0dnVmRaaDllUmRIYlpmemhiZDBlWmZuZkZlaGJKZk1iZmFRYnRlcmZFaFRja2NMZWJhVmdvZ09oRmRDZkVkYmNZZkJjaGJ5aFJnaWZaZ3JhQWJFZU1jU2VBY1ZmUWNjZENiamd0Z2NkTmFTYkFkZ2ZXZVFlbGZIYkNmQmRGZHVoVGVCYUpmeGNhZTNjeGYwYkRmMmZ0Y1NjRmdIYUZlT2hSYmdmTmZSZlFobWdaaGtlRWVGYkZnU2NJY21jZ2NXY0VlbGdjYWJlRWIyYXhkUmVaZ3phZGZrZlphRWZzZENiWWV4ZFFmUmhUY1JhRWhEaERkMmh3YUpjY2RXZ0VkRmdMZzFnZGdBZExmemRvZ09mVmJUY01kUWFBZzJlQmJUZVBkMmE5Zy9hWmJuYThiSGVlZjFhVmhaYUVoRWZ4Y05lVWdSZVFkWmFaZEdkbGUwYUdhSGFBYkhiSWZSYjhmSmJHaGpoeGhlaFBoVWV4YlpjTGZIY3hnV2JKYWdjWmFyZUNkVGg1YnhmUmRoZk5mNGdVYTBlOWFzYU9kRmExZExlVmVqaEZkUGZXYlVlc2RTYVBkQmJJZ3FjQWVqaG9mRGZLZ3piZGhMZUhhQ2hVYVJoSGFSaDhlVmdWYmpmMWRpaGRiamNaYWplUmFpYWdhZmZFZWhhZGhmZlNkaGhCZVNjUmVBZXRjd2dXYmtlSWE1aEliemZSZ3BkWGRIYTVka2VjYnhhQmZNYlRjVmRGZ0pjRmNVaDVmcGdkZ0ZhWmc4YmFjM2FSY1JoU2RrZjVjMWdFZVhiTmRNaFVoWGRnY2pjVmhtaGtiUGZjZzFlSWZlZmNjUWRrZlRiZGJWZk1lS2NaZEdoZGZUZENhQmQ5Y2FmQ2IxZ2xiV2hFY25ocGJIZFpoRWRGZnVnU2RpZFZkNWNWZWhhUmU1aERnQmIxaFJkQmhWaFlobmNaYTNhWmUraGJiMWFkYXJkUGZCYkpjTWNkZlVkb2NRZVVma2dRY0xhY2RGaG9lWGZiaDNiOWJtZEtmQmZSY3NhVWVIZk1hQmNRZ0djZGRSY1NhUmRWYk9jYWFYZlFkWWRjaEVoRmQwYkZnMGdwZlRlZGJSZHhka2NRY0hodGE0ZWNmRmhaZjBkRGYyY3RiU2hGZEhoRmdHYVhkM2hoaE9oVGR5ZzFhcWVUY0JibGhjZmNiQWdaZFpmUmJ4Z0pnZ2hSZzNhUmdOZFJnRWNwYmtmZWJVY3NnVWdjY1JoMGRkZ1RjUmVrZFZkZGVIZ05kMmVPZG1iOWNaY1pjeGdzYkRjVGJHZjllS2ZBZFZjNWF1Y0NhM2dCZWFmUWJtaDliaWdaYm1ka2hVZ2NjaGE1YnplRGJVZHdhWmVLZWhmc2RWYVJlV2FrZjRnWmFXZHRocmhkY0ZmRmJLYlRnbmZVaFJlY2IwZ3dlWGhOZnlmSmVXYWZoQ2ZWY3JiVWhoY1JjeGhSY2hoTmY0Y1ViMGI5Z2tlSmdsZU1oU2VEYW5oQmJJZlZlVmdaZ2FoZWhsY3Bia2NFZ1dkNWJNZlpiSGdGZ0RhQmdYZUVnQmZBZVVjMGdVY0VkSGYxY3VjZWczZE5jK2hUYTJjc2NXaFFla2h4ZnJiVmdBYTFnU2RTZVVlMWY4ZVdjZ2FSZHZlYWdYYXRlcGZSZjJmbGJrZWNheGFCaE1kVGZWYkZmSmhGZVVkNWhwYWRnRmU1ZndmWGMzZ1JmQmFVZVdiUmIxYUVoWGNOYU1nVWRYaGhhd2hWZG5kUWNQY0llMWZJY0pmY2hWZFFjR2JiZGxnTmZGYVphQ2ZKZFRmRWhoYk1ia2FjZEFjdGdXZ0dkWGRvY0xhR2dVYzFldWVCZG1lUmN5ZVZmaGhRY3liRWVSZDBkTGhHZVZjdGJwaGJhbWU1YVpnYmYwZlphbmZGZmhoSmhNY2RhVWJvYlpnU2RXZzRiTGNjYkZncGdDYmJjMmdKZ21iYWRWY0ljOWRIY0hjTWFZZVpha2IxZFJnU2ZSYVZoT2JhZVhkUWhZZWNmRWZFaDZhVWRWYmRkT2hQYVJmRmIxYVRoRmhsZHdkWWZWaFpjb2RFZjJmdGZmYlVibmFoYkdjSGhuZmhnQ2hSZG1naGNxZUdheGJraE5oYmFoZlplWmZXYzFoUmQyZFJieWRKYkJiWmRWZmRia2dQZEZnQWgrZGNhUmIwZ2RjVGRSYWxlV2hkaEdlNWEyZGNoeWdsZ0doZWVSYVliQ2RWYTFjOWFLZkVmRmdKY0VmQ2EzZ0JnYWFRZ21iOWRpaEtnR2VrYkpmY2ZsaHhkbWNCYWtmeGhIZ1VoUWRjYlZjUmNXZWthZ2NZaHllSmZCZWZlMWhFYkdhTWIzZWtmUmJQaDBkeGdhYlpnWGhBZVZhZWJBZjhhdGVVY2hhbGVzZVJoZ2Z0aFNjVWMwaDlla2hhaGxnTWVaYUVmM2VBZkNnUWduYXdjU2ZlYWtjZGFrY1FhV2Q1YUtlWmJEYUFlTmJGYUhja2NOY0hjVmJBYUVmU2IzZ1FkbWFmYTNkTWNuZlJnbmNvaFdnQWYwZ3hhNGJTZmthVmNKZmJiZ2J0YXdjV2JrZEpndmJZZG1kWmZwY1VjVGY0ZmRnTmFoaEFmWGdaZDFnRmFKaEZlVWg1YXBhZGRCZ2hnd2VRZlhjUWZZZkRmRWY1aDliV2RYY05iUmVUZ0dnVmV3YUZoM2cwZ1BlT2ZSZ2RmQWRKZEJmUmZkZGVkQmgxZ1BnZWQyYnBhRGRHYlJneGZ3YUdhMWRsZk1lRWhuZklkWGJaZkZkNWV1ZVJjM2JWZzViVWZSaFJlZ2FGYkJjMWJIYUdjVmQ1YmxoYmZuZmxjemZmaDBkOWI4Z1BiQmVKZ01mZGhVZG9mUWNVZmtoUWhMZWNlRmNwYktlSWJXaEpldGhkY0JhUWhmZURieWVkZllnUWFoZTBmZWJIYmhoMWZjY1piWGVSYmRiZWVVZWhiNGFVY1VnSWNHZGRkUmd4ZHVjVGVBZlJjeGVhYjNoeGMwYkRjMmN0YVNkRmJIYkZoR2hFZ3lhVmQ1ZlRmMmhSZHFmVWd4ZGtlVGVjY0Flc2JMYkVmMGJZYXZjRmdTY3BnQmhaaGhncGdrZVpia2VzYlpmWWhCYTBkSGhUZFFnaGJmZ2RjR2JSZzJhUGJXYjliTWNaYTNjdGNUZkdnRGYxZ0VjUWZCYjBlVGJBaDJmSmNXYVFlaWRkZmlkYWUyaGxjUmNlaDFiVmVaY0VjRWZ4ZE5hVWFVY2tlVmVFZjJnQmI0YU1ibmRCY0JhZGFGY0ZjS2FUYm5jVWVSZ2VheGE1aGZmTGN5aElhZmZJYkVmcGRyYVRieGJRZjNoRWMxZDBjN2JCZndhWWZyZUpjRmZNY1JnUmEzY3dmTGZDYjFlb2ZTZE1kMGV0ZWtiQmhHZkpiS2NLZTNjVmJMY1hiSGVnZWRhUmdtZGNjWmdWYW5hUmR1YmRmbmJOYnZiUmVtZWNjV2JSY0FnMGduZFNobGQ1aGVoYmVnZ3Rjd2RXY2thSmh2ZFljbWhaZHBlRmhIZUplT2NjZDBhTmdBYlpoMWhGZUpiRmNVZTVhcGJkZEJnaGJ3Y1FkWGFSYVJiU2dnYzloNWJPZTNjTmVNYlVkWGdoYndkVmFuaFFjUGNhYTFhSWNVYmNnUmhNYlRjWmJWZk5nWGJaZkdkQmdUYVVoUmFOZTllQ2Z4aFpjV2FIZjNhcGhXaGFlR2Z0Y3VlU2NtZlJjNWFTaHhkUmJ4ZkhiUmcxZk5lR2RWYVlkeWRiY21hdGV6ZFpoMWJkZm5oQ2hnZzVjTWdJZUVjTWVRaFhmMGRRYmFjZmhIZ0JiQ2RiZjJiSmJtaGFiUmZSY3lmVGduZ01oUWdUZUVnMGRkZFNjUWJoZU9mTGQzaFFoR2hiZGtlRmVsY1hjV2RCYU9kZGVSYkZhemVUZUZlRmY0ZmNoRmRaYTBhRGcyZnNhUmJGZUdieGZHYkFkV2d0Z1RnVWFuZWxjM2FVZDFiWWhUYmJod2RzaDBnRmEwZllheWhTYVRkUWdPZE9mVWFKYjJjZGZVYnNoWmRZZHdoa2ZVZFRiUmVSaFdmR2NTYjhkaWRPYTJiRWZXY0tlRWhFZ2FlWGRuYWxhS2RIZVVhVmJUZUFnbmZCaEFkUWNuYTlidWZUaEdoa2hVZWNha2c1aHplRWhFZ3hoTmVVZFVma2hWZFRkamdsYzBnQmRYZEFkRWFkY0VnNWJLYlhhbmRVY0xmY2V3YVJlUmJkYVhlQmRIY2VoQ2ZWZXJkVWRoY1JjeGFSY2hnTmI0Y1VkMGM5YWtlYWdsZE5hVWJFYjJoMGNMaEhmRmNZaE5mZWZsZ1pla2ZXYjJhNWFIYWRoWGZWZGhiRmRIZUVmZGNIZFVjMGdaaFZnbmVSZnVnZGNuZE5jdmJIaDJjY2NMZEVnbGd4YTFnVmdCZ0FjQWhSZ0ZlY2RzZVdha2ZwZy9oWWduYXRiMGJDZlhiSWRjZ2NkeGZaY0tiVGZVZUZiSmRDZDBmNWg0ZGRmQmJkaHdnRWUzYjFhUmFWYlVoNWVrZ0ViV2JsYU1lUWhXZk5oYWVWY25kUWZQZWFmMWVJaFVlY2hVYVljVGZlYUJkVWRBYk5nbWdwY2JhTWF4Z05md2dDYzFlbGNXZkVibmNwYkhnWmFFYkZjdWhTY2pkWmM1YVZjaGVRZGNhWGFFZGtlRmFGYnhlY2QyaFBnWGM0Z2hiWmZrZ3BhTmhGY2hjSmdNY2RkVWVvZlFmVWFrZVFnTGNjZ0ZkcGNDZWJoMmZJY3ZlT2RuYW9oemZJZUhidGVDZ1JjVWYwYk5hRmJSZlVjY2JhYVdoa2FGZGJoVWZGZ2xoVWdVZVZmT2VaZFRmdGF6YlRmRmNGYjRhY2JGY1poMGFEYzJodGNTY0ZkSGRGYkdhRWUzYWhjVGFVaEdmUmhpYVdnMGJvZlRjYmZRaHNlUWJCZlhid2Q3ZEtjV2F3ZFRkWmMwY3BlN2FlYlZkb2hVYmFkeGQwZk5kUmVCZFZoV2FmZENoQmYyYmJnbWI4Z0FjYmhoYThkNGJUZEhkVmFLZkVmRmRKY0VlQ2gzZEJiYWhRaG1oOWJpZFpkbWJrZ1VmY2NsYVJmemNHZ0VoUWVEZlVnVmVRZFZjSWd5Y2djZ2FVY0hkNGNIY09kQmQ0Z0ZnSGdIYjFkOGdNYWhkZ2VaY2RiamJ3Y1pmTWJ3aGNlNWVXZ3hlUmcrZVJobmg0aDVkQmV3ZGRhcWRCYmpiMGJMZUdkbmFrY0hhY2YxaFlkU2ZlZ2tlZGFrYlFjV2Y1aEtjWmFIYmxoTGVGZ0hlRWhkZUhkVWcwYVphVmdpZlpidWhmaEhmTmRuY0JlMmdjZUxnRWdpZUVjMGRIY2xiaGJjYUZnRWZRY25jVWdsZUJhamVZYm1kc2duaEhjWGd0Z09kYmh4ZUJiZGFUYVZjZGFQZUZmVWNZZ25kZWNSZVZoOGZRZVhkd2VRY1Nma2JSYW9hRWdXZEZkRmNXZUhlUmdhaFZjbmNRZVBoYWgxYkljVWVjY1VjWWVUZWVnRmFOZVBnWmZHZnBoVGhHYVJkTmN3ZkFld2R0ZldjR2JXZmRkSGZLZGtoRmZsZlNjaWVoYzVhVmVRaGxoeGdEYUJiMWJTY0dlUmRWZTBiWWZYaFlheWJiYzFkeGhuaFZkUmRKaEdhZGNTaGRoUmNCaGdid2VGZUlhQmVVY1ZkWmYzY0JocWFhYlFoVmh5aFFoM2ZOaGNnUmVVZ1JkZGZZZ3hnVmNPaGFoWGhRZ1lnY2NFZEZmMGhVYlVjcGNPZWRjUmVGZHpiVGdGaEZoNGZjZEFhUmgwYUJjV2RzYVRiRmZHZDloYmVFZjJhcGRUaFNnV2VKZHFiV2MxZmNhWWdlZndkZGNaY1hnbGVOZDZnU2dIZGxiQmRmY0VkTmd0ZWRiV2hFZlVjY2JSZzBoZGdUZFJlbGFXYWRoR2U1YTJlY2MyZTljR2haY3hoWWdTZlRhSGRVaEVhRWdGaGxoRWVSZjNhQmdFYlhjMmc4ZWthVGJHZ2tlVWZjaGtoNWd6Z0VnRWh4Z05nVWhVY2tlVmJUY21jbGMwZEdiSGRCY0JjZGhGZUZhS2NVZFhoVWhaaGVkeGc5Z1JlWmJYZkJmR2ZmZ1FkTmhyZVdibGdwZ3hoV2J4YU1mK2FXYWthWmFPZ2FlbGFNZlpjRWUzZUFnTGVXZFZkWWRTZWVma2FkZ2toUWFXYzVlS2ZaY0hkbGFMaEZkSGZFZUhkSGZRYk1jWmNYYlhiUWJpaGRnbWQxZXlmUmFuZVliOGRFZmtjeGMxZ1NjaGVCaFNnUmFBZXRnd2VXYWthSmZ2ZVljbWdaYXBkRmNIYkpjT2RjZ3hjQmVUaFRiVmJsaEJlUmRrZjViMGJkZ0JjQWhpZ1FoWGE1ZFJnQ2MwZzVkNGZFaFdlSmZGYVViWGhKaHdoT2F6ZVZjYmFJYjFieGRFYlBkaGhFZ2JnYWFsYzlkUGRLZzJmTmJhZEZoUmdOYjRjUmJWYWxlZGREZTNlb2JMYWJlVWVoZ0VmU2VtYVJjNWJTaHhlUmN4Y0hnUmMxZk5lR2NWZVplMGZiYW5iWmN6YmJlMGZaZG5mRmRoYkpiV2FkYVVnSWJZZkFoVWZRYVdkY2hBZGhnQ2RaZVdnSWdMZUtlRWRBZDZlUWJDYU5oZmFHYjBiVmZEZVJlUmFVY0NkYWFYaGtnWWFZZVVmaGQwZVdoMGFvaGphTmhFZlVjN2ZRYWdmRWEzaEpmMWI1ZG1oQWgyZnNhZGFIZlhkaGRLY0VnM2NBaGRkVGIzY2xicWhRY3hjQWhhY2VhUmJCZ3pjVmFoYUpkNmhSZDJoUmdCZGJla2ZwZ2tjZWJVYXNiVWFQZmhnMGZEZVVkQmNsY09lYmEwY1JlMmNjZjJkOWJHZVpjeGZZY1NjVGZIZVZmS2NFYUZkSWRRZmNoRGVsYWFjU2dXYThleWJHZDJna2NKaGNjbGR4Ym1oQmZVZnhmTGJVZVJmb2ZaYlRkamRsYTBmRWYyZzFhQmVPY1ZnMWJLYUhjWGhVZWVhYmhrYXhjRGhiZldiWmRhY2RjRWNCY3JhWGR3YmxkeGFYYmpmbGY0Y1VkMGU5ZmtkYWdsZE1oWmhFZjNoQWhMaFVoRWgwYzRoZWhrZWRha2NRZVdiNWNLYlplSGdsZkxlRmhEaGRjU2hUYjBkMGJSZWZiSGVSZXViZGNuZk5idmdSYm1lY2hXZ0Vja2d4ZjFnU2JsYTVoU2NXY1FhdGg0Z0ZkRWVKZ3pnZmJtZVljbWFIZlhmSWhTaGNkMGhOYUFjVGJRY1JkSmZIZ2xiTmRwZ09kd2dOaGFlUWJYZlJmUmFTaGtmNWYxY0VlWGFOZk1lVWZYYWhjd2JBYTNoUWdSY2FlMGVJZlBmV2MwaFlnVGNlZEZmTmFQZVpnR2RwZFRhR2RSZE5kd2hDY3dlMGR0YldhM2RwZE1lWmVCYkVkVGhTZ25kbGE1ZldkUWZGZ2thSGVSZXRjTmJWZTFjcGUwYlBjbmVaaDRhY2JrY1locWZHYmhjSWZDY2RoVWFVZE5kVWZsaFllZWNaZmxkWmRDYk9hbWVKZHJlZGVCYVJlcWNaZUhmTWZRZFRmRWcxZ1JnU2ZSZFZnT2JhYVhmUWJSZGFhMmd0aDBnVWFVZnBkT2RkaFJmRmR6aFRiRmdGYTRkSmFDaDBhOWJEYzJlQmZTYlJlSGVGY0xiRWh6aFVmdWhUZnpnaGQzZ1Vod2ZnYUJmYWdBYXRjVGRWY2tndGdoZWJjV2VSY0JhYmZrY3Bka2NlY1Vlc2JVYkxiQmVRYkdiWmR4ZmxnV2VkaEdmNGNyZGZjMGhWZkdlWmF4ZllhU2FDZmlhQWZFY1Vkd2VZZE5oUmJEZDVkYWRTaGpkdGFyY1pnamdJYStnY2RraDVhemdFZ0VieGdOaEJld2ZoYkhiVGFqYXRlMGFCaFhmQWFhYUtjVmE4ZWVhQWFRZFpjRmJJY1FlVWJmZ1BkMmd0ZjhoZGFBZjllcmRVZWhoUmh4Y0VoaGMwYTliQ2Z4YjhhcmhPYkFmZGNLZ0VkMmYwZGhhV2ZWaFlhU2RlZ2thZGZrZFFiV2U0YnJmTmNpYXNiS2hUZVhjOWhVYVRjaWF4ZkxnQmREYlVhM2hkaGljOGR6ZWJmR2NjYVdnRWhrZ3hjMWRTYWhkQmJTZUFibGE0ZCtoR2hSaFljbWVMZFNnaGZwYkhlQ2NaZUhmY2YwYXRjbWRUaFZoRmJKZ0ZiVWQ1aHBlZGFCY2hod2hRZ1NkWWJVZkhjaGZzZW5oWGEzYU5hT2ZLY2plY2Z5YkhlRGhGZU1mUGQxZ0pkMWVJYXhiUmFTYklmU2E1Z05lWmdIYmRiT2NHYVVoRmQraFNhQmFnZWFkWGVuaElhVGZiZFZicGZFZFNobWJSaDVnU2Z4Z1JoeGFIZVJmMGdRZkFobmR4aDBoYmduYVpjemZNZGticGVOZ0ZmaGhKaE1lZGdRZHhlRmFIaEFoZGhmY09lUmRVZU1oYmcyZW9meWRaaFJoUWVnZlJjM2ROaExmWmNrYzFnUmZTZFJmVmhPYmFiU2FKZFplSWRrYkVlOWNYYVVnb2NMZmJiamN0ZnpkVGdGZ0ZkNGRjZEZjWmYxZkJjeWIwZ0hhV2JqaElmU2RXZWphY2NkaFRjMmZ3ZGxmV2doZ2xhSWZXYWdodGhaZlZmaGFKYTZoUmYyZVJnQmZLYkJjOGNxZ09maGg5ZWRmUGRsZE1nZGRCZFJnRWNDaGViR2c0Z2tiZWVtZDhjZGhUZ1JmWWhTaFRmSGdWZktjRWdGY0pmRWRDZTNnQWdJYUJnemRzZjNiTmRDYmNhVWFKYmdkWWY2ZlFhMGJ3ZkVkSGN4ZnBnQmhEYnliY2YzYlhhVGg4YkhhZGhCaGxoZ2FUZ25lVWFSZmNiMGN4Z1JmZWFIY0JoV2FkZEFmOWhyZVRhUmdSZTViVGhrY2Nid2hHZmhneGFxZEZjUmY5ZldlUmhIaEFiV2JXYlVmWWViY2RhbWMxZmthUWVXaDViS2daZ0hnbGRMYUZmSGZFZWRlSGFVZjBiWmdWaG5md2U2Z1BnamRvaDhmU2dCYWhjZWZXZXdhc2U5Z1NnZ2QxZVNkVmNBYkpjOGNjYkVjSmV2ZllobWRaZHBoRmhIaEpmT2hjZXhlQmdNZVRhVmZGY0poSGhSaG9naGhQZlVldGIrZkVnemNFY2NjQ2R3ZGNlN2VWZVRmWWNlaFViV2NWYXdlR2dDYkZoRGZKYzFoc2dZZFdiMGJZYlRlZWNGZE5iUGdaZ0dlcGdUY0djUmJOaHdlQ2ExY2xkV2dFYkNhOGFKaEloQWFRZW9oQWZ5Zm9nOGdEYXhmWmh4ZEFjQWhCYU5oVGFRYThha2NLYXpha2ExZ2JheGVSYU5iRmNoZEpiTWdkY1Vlb2FRZFVla2dRZkxmY2VGZ3BiQ2hiYTJkSmFtY2FoUWJ0aHlkSGdYaDFnVGFEYVFmRWFkY1FlVWVFY0dkSWFDZ2NjVWRjZkJmVmM5YWVoMGRwYU9hZGRSZUZmemRUZkZlRmQ0ZGNkRmNaYzBlRGUyYXRiU2ZGZkhlRmZjZEVkM2hvYkFhR2N6Z1liamVIZVZlNGdSZGNmQmZaZEViVmNrYllkamhGZHliRWRPZEtkRWhvaHdhVWcwaHNoVWJjaFJmMGRkaFRiUmdsYVdoZGFHYjVoMmJjYzJhOWRHZ1poeGRZY05kVGREY1JiRWhVYXhkTWZJY1JnM2ZnY09mQ2RpZVloeGJhYm1mbGVBZmZja2g0ZmhoR2hXZ1pjTmdVZFVia2JWYlRkbWRsYjBhR2ZIZEJkQmNkYkZlRmRLaFRkbmNVZVJnYWdVZndkSGJOZnpoa2FTZmRhRWhGZ2xjRWdWYlVhOWhDY2hnc2dzY0dod2dZYTNnWmVsYk5lTmdIYTNoQmFaY1VnRmY4YjRiZWZrZGRja2VRaFdkNWFLZlpkSGVsZkxhRmVIY0VhZGhCZzBkMWNYZEVleWZOZXVjUGVuaHNhN2dTZm1kZGNFYkdkMWVkZWZmU2hoZ0JlU2VSZ0FkdGN3Yldia2ZJZ3loU2RHYVpjcGNGY0hlSmJPYWNheGFCYU1hQ2R3ZVFiSGFWYmhjb2ZnZ09mMWVaZndoRGczYndhRmNSY2tjNGFuYUdoSGFNZVhiZWYzZmhjd2ZWZW5kUWVQZ2FmMWRJZlViY2JVZlpmQmhQZFFjY2hhaE5jaWdSYlRmRWVVYmNjNGRRY2dmcGNZYWJnVGFZYUloTWUwZ0ZlemVTaG5kUmQ1YkZkeGVRZWxjRmhCZkZkTmhFYlFmSWU4Z0pneWJWaDlhRWhBZjRmdWZVY1ZocGhNZ2FmRWZvaEFhVWZoZWdkTGhJYWxhTmZPZGJhemVZaHViSWNFZ2RmcGhaZEhjTWdRY1RmRWIxZVJoU2FSZlZjT2NOYUZoNGdZaGNhRWNGYzBmVWFVYXBhT2RkY1ZlY2VtYkFoaGRJYXNjT2ZSZ2tnNmhEZXpnaGFhZ1FhSGhoaEdoU2FGaEpkVGZUZDJjUmVxZ1VmeGJrZlRnY2dBY3RjWmRCY0ZmY2J1YUViamVZZlBoYmNrY0lnd2dNYVFoSmVIYmZmMmdKZ1JnQWZrZjVnV2dhaFdjNWVnZ1phbmVwZlZmY2NoaFlmVWdUZkNoRmVEaEhkRmFKZE1nWGZ6ZmdiVGJFZ1dkRWRkZExjaWhCYVRhT2FrYjVodWRFYUJmaGdOY1RkMWRjYkxhVGRuZ2hiaWdFYlhmeGVCYUloQmRrZURmSGZXZzRlN2JjaDBmeGJSYWVlSGZCYldhZGZBaDhkMmZlZ0JkUmJ4Y1JnaGZOZjRkVWQwZDloa2RMZEFoWmhYZ1ViQ2RSZUNhRmVoYmdiU2NPYzBoOGV3ZFRhV2M0YVljYmJYYWtmUWRQaG5kRWZkZUhoVWMwZFpiVmduYVJldWFkYm5kTWU1YkJjemRVY1djV2EwY3hhb2RTYmtnQWJUZ0ZlbGNnZzFkTWJ3aHdjN2FhZWphSmJsYUZoQ2NCZU9nTGEwZHhhTWRYY0VhRmZBZERnbWhSZnBnZGFCZGhhd2NRZlhoUmVSZ1Nma2g1aDFjUWN6Y1llWWVCY0Nhb2crYVZobmR4Z2JkSWF4aHRiSGVmZXpkbGhmZ05nd2NSZ1BnZWhXY3BlRmREZ0FoWmZqZUhhbGFsZVFoRWZqYU5hT2VhZkVjRmdtZUhiaWJ3YndiR2hCYW9jT2dWYVZkUWFLYVVjVmZaZHBmYmVqYjloemZjYlZnaGE1ZUZiZ2FOZWFiZmJFZVlnUWRCZGdheGRDaElmMGRGYm9mYmYyYkpmbWRhYlJoUmd5Z1RjbmhOY05kWmFrYzFmUmdTZVJoVmVPYmFmWGRRYlloZWVCZXBoZWNVYVVicGNPZGRnUmJGZXpoVGFGYUZkNGNjYkVlVmdpZ0ZjV2NzaGFjSGZCaHdoSGZSaHpoQmZkZEhkeWNzZTlmV2d3YW9lRmdmZEFhdGdNZFhkeGF0ZDJoYmFXaFJoQmViYWtjcGdraGVoVWRzaFVkY2dSYjBmTWFXZXdhTmJXZ1BlR2VZZ2JhTWFqZHNhT2ZhaFViWmhkZkdoM2MxY2JmQmdsZDVhRWRIYUhkbGZUZVRha2FWaGljWmJtYmtnVWJjYmtjNWR6ZEVkRWZ4Z05nUWVGYmthUGFUZWlmRmQ4aGRhVGRFYVZkUGZGZjhiYWJBZ1NjSWhaZ1libGR4ZWRjZWdHZ2xmZmRmZFFlTmZCZFVnaGNSZ3hjUmZoYU5iNGJVaDBhOWdrZ2Fja2RFYURoRWF6ZGdmRGJOZkJjZGVHZk1ha2RrYjBmRGNqaGxiQ2ZkZW5nVmRMZ0JlMmFFZlVhRmdFYUVhemNWZ25iUmN1YWRkbmhOZXZlUmFtZGRlTGJIaG1kWmcxZVNjaGFCZVNiUmJBY3Rnd2ZXYmthSmd2Y09nV2RaYTZoQWdtYmhmT2dPZHhmaGNmZldoMWVoZUZlRmNWaDloL2JiYWhlZ2M0ZVNlV2ZWaEhjUWQwZkplMWJBZEdiTmdXY1VlVGRCYzRiUmMyZVFoR2RaaDFjSWhHZGFhMGJaZWJnY2JFZ0ZmR2daYURoZGJhY0FiamJsYXdiQ2QxZ2xhV2RFZW5lcGJIYlphRWJrZm1iUmVEYVFocmRCZUViQWUrY1NoVWFRaGRkWGZGZGdmeWNQYURja2EraERoUWc4Y3pkUmhSZUpoUmhkZFFlUWNaaFhmbWU0ZExjY2VGZHBnQ2diZDJiSmZtYmFjUmZSZHljUmRqZ3NlZWRIYUJhOGVlZ0hiVmJvYmFhTWZDZVJoZGZmYWdmY2ZtZEhlZ2VjYmdoSWNGZ3dheGRDZVFlTmg0YWJjVmZZaG5jQmhtZmRkNGFGYUhnRmFHYUViM2VoZFRkVGcyZ1JhcWRVYnhkRmFiYmZmbGRzZ0xhR2FVZlliMWVFYnpjMGRSZktjMGNRZWljS2Z3ZlJnWmRBZ2tibGVQY0JoRmRjYVJoZGhIZ05iMmhNYW1kWmdLaFRjUmJZYVNoVGVIYlZlS2hFZEZhSmhFZENjM2NCZFNkQ2JtZEVieWdOZUNnWmhBY1BnUmZvZnFoUWZBZmxlRGJCY1FmWmc3ZUdheWhRZDJiWGJTYkplQmZhY1ZhRWhNaEdhemh0ZFNjSmR3aFVhZWFOZ25kQmVlY2ZmUWU4YXdkZWFCaFJleGJSYmhjTmc0ZlVjMGY5aGthYWJsYk1nWmRFYnlhSmFPZERmUWNOYUFlTmJFZ2RoeWNWYUhkdGRaZGNnbmRsZUJnRmhDYVZkVmVWZUJlNGRYYkthVGh3Y25nTWhUZ3RkdmhUZVdjZGdDZ1dkZ2NVaG1iUmhHZThhZWZDaDFmeGhyZmNkRWJKYXZhWWdtaFpjcGVGZkhhSmVPZGNjeGFBZVJkUmZGZTFiamJGZFVoNWJwYmRlQmFoYXdlUWFYZFJoUmhTZ2tnWWc5ZkhjeWFNYWVmSGJpZHdoL2FBYWliMWFmZExibGV4Y0FhUGVqZVZkSGFLYWhmb2JCYUlnMmNwY09kR2RWZlVmbGJSY1Jmb2hDZldjemFVaEpjWmdFZ2tkNmNRYjJlUWVpZ1lnUmZSYXhjSGhSYzFmTmhHZ1ZjWmIwZ2JhbmJaaHpkYmN4Z1FoaWNRZ2tmY2JlZU9hMGZwYUVlR2hnZjFiWWJmZmdkNGNOY0FkVGZjaHJhS2YxZ0VlZ2NSZ25mb2ZlZEdlQWVJaGljSGRVYmNiSGJKZHpnTWRRY0pmRWVFY29lRGVVZXBnZmZaZVJnaGdvaFpnbGZGYzRiY2dGYlpiMGFEZjJidGRTZEZlSGdFY2JhR2FuYVJhNWRUYTJkUmRxY1VkeGVrYlRiY2ZBZ3RhWmdWZWhib2V5Z1NnVGhRZlRkSWZSaDRjcmRMZlJlSmhFaE5mQmZOZ2NoQ2dWZzFjV2FhZldnNGJ3ZUpmaWRFY0ZjTWgxZjlhZGVBYW5iVmNDZVJlRmJ0YUVmVWJGZ3BlYWdRYW1mOWdpZVpmbWJraFVhY2FrZjVhemdFZkVnd2RiZ0VnQmRzaFZnSGdHZ2xlcGZHZ0NjUWFKYVBkUWRKZ0VjTWJUZmxiZWJKYUVoeGVhZmVmQ2JSZVljQ2gwYU1ia2dCZlJiaGhiaFJlaGNOYjRlVWEwZDlka2FhYWxiTWJaYkVlM2dBY0xjV2NWZlphYmNlZ2xncGdrYUVmMmQ1Y1ViZWRtYWRmTGFCYldiY2hHZU5oMGgwYVphVmJuZFJkdWNkZ25hTmJ2ZVJobWRjY1dnRWNoZTRhd2VIY2tmVWVBZkNoZ2N0ZDRkY2ZFaEpmdmJZZ21iWmFwYkZhSGJKZU9lY2h4Y0JlTWJUYVZkRmZKY0hmUWJkYnBiZmd3YlZkd2hGZFRid2hZZkdlVWhBZEtoV2FUZW9iTGNHYVhnaGI3YVZoaWVBZ0JiRmZCZ3BiZGNOYWdmNGVhYWRiSGZsYlBhWmJHZHBjVGdHZFJiTmR3Y0NmMWZsZldoRWZuY3BiSGhaZUVna2E2Y0FoaWgwYnFoUmZXZHNlOWdVYmtkcGJOZEJkRmdaZGlnZWIyaE5lZ2JlZGtlWmRoZUZha2JCYkZjZWJXZEFiUWhVZ2tiUWdMYWNjRmZwY0NnYmEyZUpjbWVhZFJiUmF5Y1RlbmF0ZEVnQmFBZlFkQ2ZSZjJjb2RHZEllRGJOaFFkY2VGYXhhMGVSZTFoOWZiZFpoZ2RSaHpjU2dsYkVkeGNlZlZicGVlZ0RlMmV0YlNjRmVIZEZkR2RFZTNmaGZUZlRiMmZSZHFhVWN4YWxkSGhPZEVmSWVLZGZlQmJKYzZlUmgyYVJoQmViYmtmcGRrY2ViVWVzY1VhY2hSZVFmR2VaZXhnbGZXZmRjR2M1ZTJnY2IyYzljR2haYXhhWmRQZVJmWGFsY2dmRWRGZEpjRWRDYjNmQmVhYlFhbWg5YmlkWmhtZkZiY2FmZkJhNGVoZFhoeGJnZENnQmZSZ0JjRmRDYjJmY2JuZ1RjVGFJZlZnSmFoZEFlSmRHZG5hVWRNZmNld2dvaEVlTmZqZk1kQ2ZQZVVnQWdsaFVoaGh3YWxkVGd4Yk1iamdlaFVkOWFraGFkbGZNZVphRWQzYkFoTGZXZVZjWWJTaGVlaGJVY2hiRmdUY3NnWWVLYW5ja2VmY1hoRGJoYk9lRWd3ZnhlZGJFZm5kd2M2YWVjRGNBYmpoQ2ZTZGxoVGhHZWtoVmU3ZUJoRmRVZFZiQmhWZDhmMWZVYmthdGVtYmVhVWV4YnBmRmFIZUphT2FjZXhoQmdNY1RlVmJGaEpnU2FFZWRlbGNYZGhkaGV3ZlFkWGJSYlJiU2drZjVnMWdFYlhmTmJFaEdnWGJZZmdjQmREZ3RnYmhKZEFmWmFOZ0ljUWVNZ2RnTmJRY1lmRGZNZ0NmTWJEZ1ZoVWZwY3dnRmZsYmtjUWZSYnpnUWVFZk1mQWNnZ2hoQmhHYVJheGFIY3hhMWF4ZlJjamhkYU5kR2JWZlpjMGNiZG5iWmZ6ZWJmMGdaZ25kRmRoYklnYWhOYUJkZ2VRYkFmRWNnZWhhY2hGZnBhQ2JiZzJmSmJtZmFoUmRSZXlhVGduZ01nUWdUZUVlMGdZYlJjVGU5aE9nYWNYZ1FiWWdjaEVnRmcwYlVjVWdwZ09nZGNSZEZoemVUZEJmUmY0aGJnVmFZYWdoUmV5Z0ljQmZHZmdhNGFPYVdmamc4Y2JlUWIwZzVncWZVZXhla2NUaGNmQWF0aFplVmRoZ0phNmZSZDJiUmNCYWJhZ2ZWZGtoWmdFZ3RmQWhPZ1ZiUmVPZVFnMmNZYmFoT2N6aGxlNmZXZldjOWZHYVpjeGdZYlNmVGJIY1ZkS2ZFZUZjSmFFaENnM2dCZmFmQ2VtZDlnL2JaYmpkMGhhZURkUWhZYjZhVmV3ZVJlQmRlYjBha2ZWZ1RkbWNsZjBhR2FIZEJoQmNkZUZmRmNLZlRnbmNVZlJnUGJVaHhmTWRlZUNoUmdZZUNkMGVNY2tkQmJRZDliYmhSYmhjTmU0Y1VnMGE5aGtjYWhsZk1jWmFFZDNlQWVMaENkeGdOY0dmTGN4YVVncWJRY1dkWmJnY1pnSGZsY0xoRmhIaEVhZGVIYVVkMGhaZFZjbmdSZXVmZGRuZk5lbmhEZjJmY2JMZkVjZ2dOaDFnUWJCZUFjY2RUY1FjZGhhZFdoa2RKY3ZiWWFtZVpicGZGaEhlSmdPY2NjeGNCZ01kVGNWaEZlQmdSYjBjNWIwZ2RiRmdGZHdhWGQyYnBoUGdTYmxhOWZqY0dkSGE5Ym1mVWdYZGhod2ZWY25lUWdQZmFiMWhJY1VmY2NVZFloVGFlZUZmTmVIYk5mbWRwYlloQmFCYk1iMWdDZDFlTmdXZFhmSGNOYUxiVGRraEZkdWhTZW1iUmU1Y1NieGhSZXhoSGJSZjFmTmJHZFZnWmIwZFplaWZSYnpkYWdWZXRibmJBYUFlZGNaZlphbGc4YlpiWGVtZzRiTGdjaEZjcGhDZWJjMmdKYm1kYWVSYlJjeWJUZ25hTWFRY1RmRWVVZkRmU2FSaDVlVGdhZVRjc2hZYWVla2FFYjhmV2FFYVpma2JkZlJoRmV6ZVRjRmhGZTRiY2FGY1poMGFEYjJidGFTYUZiSGdGZ09kUmd6aEFoYWVIY0dib2JWYUhmMWRaZEVmY2RCZFplWmdRZkFkZGJ2ZVZnSGVGY0JlYWVFYW9ldGVjY0VnY2ErZWNkUmQwZGRkVGFSYmxlV2JkaEdjNWUyZGNnMmQ5ZUdjWmJ4ZFlnYWhHZkRoMGFEZFFkMWN3ZzdkUWh6Z2thZGRDYm1mOWcvYlpmbmQ4YUJmWmUxZjFmbWFFZEVlcGVOZEFiMGJBZlplWmZHYmxlMGVHaEhnQmhCY2RhRmNGYUtnVGhuY1VlUmFjZzBjeGJSZExiRGRnYWZhSmF5Z1ZhcmZVZWhmUmV4ZlJkaGFOYTRoVWMwYzlla2VhZWxkTWZRYkNlRmJvZExlV2JWZVlkU2ZlZmthZGFrYVFiV2M1ZUtlT2FYZ0JiSGhQYm5nRWVkZEhoVWIwZFpoVmNuaFJodWhkaG5mTmNuaERibWRsY0diUWhBZE1maGJCZFVmUWRMZ0ZiRWM1YytlSGdnYXNmNWFZYm5kdGFwZ1VjaWZjZEFjTWJFZ1FlRmNBZGhoOWJKYkhmUmJwY2dlZGNFYU5hYWhRYlhhUmRSZFNma2E1aDFnRWFYaE5jTWdVZFhoaGd3Y0hiemJJY1BjWWYwZ0lkVWdiYkZhc2JUYUxkRmgwYndnS2NDZlVhRWJHYVJhVmEyYUNoMGJsaFdjRGcyZ2RiSGdNYUVlOGFSaEFlaWIwZythQWJ4ZzFmeGFTZVZmVWZmZVZiZ2NGZjBoQ2h5ZlFkaGhJYkJnUmJ2aEZmRmhZY0ZhSWF3Zk5oRGJHaHdhdGJGZ2NhQmVnZGJjYmN6Z2dhamdPZjFidGZ3Y1JlMmZnZjZnVGdFZDFjUmhTaFJlVmhPaGFmWGFRYVlhY2FFaEZlMGdHZ0FmeGJPZmZhUWRGYnpiVWJVZnhiNGVKaEZkZ2ZMZVJheWdJYlZnWGVIYUZlQWhGaFhlaGJDYVRmM2VsYTNmVWQwZzBkZGREZDBmY2hXZEFlUmZ0YVFjUmgyYlJlQmRiZmtocGRrY2VnVWVzY1VmY2JSaDBhZGNUYVJja2JFYk1jVGRvZGpoSWVTaEZhR2hiZTBlSmNhZ0JiU2JaZUVlUWJoY2NjSmFTY2pja2hVYkJhaWFvaHdnWmhuZVFoVWdQZkFlc2RrYkVnQWdSZ0ZlUWJVZUFlY2JRZm1ja2VnY1VhRGdrYlNmYmMzaHRoS2VUYW5kVWRSaGNnMGd4YVJnZWVIYkJnV2dkYUFmOGhpZkZkQmZSYzVjRWhoYzBhL2hCYTBkY2F3YUlmaGdwYktjR2ZuZ2tiaGhXZVZoWWRTZmVia2VkZ2tkUWdXZjVmS2haYkhmbGJMZUZlSGRGaFBnV2ZCaGxkTWRCZ0RncGJ1YmZkbGVsZHZkUmNtZmNnV2RFZmtoeGgxZlNnaGNCYVNkUmFBZHRkd2FXaGtkSmh2Y2FoamhJY2hoWGhTYkZjQWVJZlZnVWZCYkRhQmZnZkhiVWRRaHNhN2hkZEFjVmV3ZUZkVGR3YlliR2FVYkFjMmVYZFRid2ZDZ0ZmSGRCYzVjWGczYmdnbGVhYjFlSWZVZGNnVWdZaFRlZWVGY05hUGVaYkdhcGNUZ0djUmJOZ3dlQ2QxaEVjQ2ZXZmpkTWZVaGFiamI0YWlhQmJUZU5iNWNWYWhjUmRoZEZhQmRGaG5nR2JWYlplMGJiaG5hWmN6YmJnMGdaY25oRmZoYkpjTWhkZlVmb2dRZVVka2N4Y2ZnT2FCZU1mUmJZZlJhMGV1YUlkRmRNZjZhVGRtaDRhUWNYZ0VhUmNkZllkeGVWYU9hYWRYYVFmWWdjaEVnRmMwaFVkVWVwZU9lZGJSZEZnemZUYUZoRWNzZ09lQmM4Zm5iSmJXZ3RnU2hGaEhlRmJHZEVmM2ZoZVRjVGgyY1JjcWRVYnhma2VUZ2VlUmZCY3phVmFoZUpmNmRSYzJoUmFCZGJoa2ZwaGtjZWFVZ3NoVWJPYUZoc2FkZ1JnVWEwaGViUGJUZzFnNGNOY2pmNWNPYk1ieGg4YWJkWmVuZlZjS2dFZkZmSmNFY0NhM2ZCZGFkUWRtZjloaWhaZ21na2dVZEllQWZzYm5lUmNSZjRmRGJVYVVoRWMvZVRobWRsZzBjR2ZIZkJlQmZkZUZmRmFLYlRhbmJVZlJkY2QwZnhnUmRlaEhoZ2JDZlBjRWZZaDRoWGRFY1ljMGNDZTFoSWV4Y0hoUWdzYmhlT2JGaE1nRWFFZnplNWJPaERibGVaZmFkY2ZsaGRmdGZTZ0dlSmZnY1phSGJsY0xkRmFIZkVhZGJIZFVjMGVaZVZmbmVSZ3ViZGJuY05ldmVSYW1iOWZDYVdlZ2ZVYW1iUmdHZzhkZWdDZTFleGd3ZVJoMGhKZitjYWEyaHBmRGFGZkhiSmdPYWNheGdCaE1oVGhWZUZkSmFGY1VkNWhwYWRoQmFoZ3dhUWNYaHdoRmFBZ2dkY2ZtY0hod2Z3ZUVjR2NEZThiNGdWaG1ma2RQY2VhMWhzZFllV2EwZ1llVGNlaEZhTmdQZlpmR2NwZVRjR2RSaE5ld2NDYTFnbGVXZkVhbmhvZlRiTGdBZWdiOWRZZUdjUmE1YlNneGFSZXhnSGJSZTFhTmhHZFZlWmMwZWJlbmZaZnpkWmFsZTFnTmVGZmhoSmZNYmRhVWZvZ1FjVWVrZVFjTGZjZkZhcGdDaEtiU2gwaDBnYWdSYXdna2JEZnlnRWhRZUhoa2ExZU1hU2RVZUZjQWRLZ2pnaGZYY1BhZ2ZSZzhkV2NFY1pkT2FQZkJoRmF1ZFRiRmZ4Y3BnYWUxZlplMWJXZHljTWhiYlJiM2E4YktmUmUzY0FnQmFSYm5kOWhxZFdoamRNZFRnY2VBZHRlWmNWYmhnSmg2aFJjMmdSZEJoYmNrZXBia2NlZlJja2JhZElkbGZWZ1VoQ2EwZjBoNmRNZ1NhZ2JpaGVnM2I1YktiWmh4ZGNkQ2NSZ1hnbGhLYVdhVmNsZlBhRWVGZnBoYWFRY21jOWhpY1phbWNrYlVkY2RrYzVoemRFYUVmd2VMZ0hiaGVzYVZhUmhrZE5kMGFHZEhjQmZCYWRoRmVGYUtlVGZuYlVkUmdjZTBoeGZSZGVkQ2VRaGVkUGNWZnhmbGJBZkZlRWM4ZEJlMWVvYTJmRmh3ZW9kMmVhaGtmNGRaZVJhemhoZkNkQ2NsZWhnUmdOaGdkZ2FxZ0JnR2VaZkRkYWVIY2toZmVYYkRoaGRPZ0VmemRKY1ZiR2JTZ05kdWJhYTNkTmMvYlNhbWdkZENiV2FnYlVibWRSZUdmOGRhaERoVWd3ZTRlV2hsZTlldmVjaG5lMWREYUZjSGFKYU9oY2V4YkJjTWNUZlZiRmNKZkZhVWM1ZXBnZGZCZ2dnNWVRYldlcGVNZFNlbGY1ZHViT2YzZ05nTWVVZFhnaGJ3YlZnbmhRaFBlYWIxZkliVWNjY1VkWWhUY01hVmM1Y0NoVGZtYXBiVGFHaFJoTmN3Y0NnMWdsZ1dnRWFuZnBlSGhaZUVjaGRFYVNlbWRSZTVkU2J4YVJieGZIZ1JlMWdOY0doVmRaYzBhYmRuZllmaGNZZlJlVWV2ZVhkMWNRZ1lkQmh3Yk5lWGdHZWhmQWNEZFlmVmJOZk9oUmZXY0pkbWZhaFJhUmR5YlRnbmZNZFFlVGFFaDFlUmRTZFJmVmVPZ2FjWGFSZ01kT2ZBYWdlbmNYYnhmZ2FMY09kRmVBYjZiQWVoZlVkOWZJZmxnZ2I0YVdiMmhNaEFkSGFYZkVkYWZUaDFjSmVUYlRoMmJSZXFlVWV4ZmtlVGhjY0FndGRaY1ZoaGFKYjZnUmYyZlJkQmNiZmticGJzYUxiUWhOYmRkSWJoZU5hUGJDYkZjUWhYZVBkU2dBaHliTmRqZjFhSWhOZUVlTmdRZkdnQ2RjZUxiVWV3Z1piTWVXYlhibGNXZGFoR2I5ZWlkWmZtZ2tnVWJjZWtmNWR6Y0ViRWR4aE5jVWFVZmtmVmdUYm1lbGIwZUdmRGRsZEJoYWJrYXhkS2NYZDJkTWU3Y2NmMGN4ZVJjZWdIaEJhV2JkZEFoOWJyY1VkaGdSZ3hkUmdoaE5iNGNVZjBmOWZrZmFhbGJNYUdmRWUzaGhnZmVFZFJiOWVCaGRiRGFnZHNkQ2dDZWtkQ2ZaZUNhVmhXaEZmR2FBZmRoQWZWYkVoWmNYaGphMWR1ZWViM2ZOaCtiVWJHYTRkZmZPY0VkeGYxZFNlaGNCZ1NnUmdBYnRjd2hXaGtlSmN2YlljbWJaZHBoRmJIZEphT2VjZnhiQmZNZFZnMWVGaEJlUWZRZVljZ2JKYnhnWWdQYURjVGNzZ0dhU2hoZEpob2dFYldlSmJNaFRkV2ZSZndhSGEzYjBmR2JjYkhiZ2ZVZmNjVWNZYlRmZWNGY05mUGZaZUdkcGhUaEdnUmNNYmlkVGRnZDBnRGZRaERkUmdIZk1lQWJrYm5hR2VYZDlkVGJTZ3hnUmV4Y0hiUmcxZU5mR2RWZVphMGhiYWlodGU2Z1lkMmJ4Z25lRmdoZkpkTWhkZFVlb2RRZVVma2hRZkxnZWhCZEplTWRQZXpjQWhwYVBlVmNzY21mRmV5Y05lVmNRYmdoTWhVZkRnbGdRaGFkTGZIZVFkRmRjZEFlY2JoZkhld2RrY2FlUGZGYjRlOWRUYUZobGh4ZmNoQWgxY2VoRGIyZHRjU2dGY0hmRmhHYkViM2hoZ1RoVGEyYlJhcWNCYVZiaGRCZGNlRmc5Y1piU2J4aEpmeWJVZFhhRmJVYWZlVmQ5ZWtoZmQwaHRmS2RKYVZnVmJVZkhhaGZjZnBiT2hDaEViaGJlY21mOWhOZ1pkd2VjYUpnWmVuaFZkS2JFYkZiSmhFZUNjM2hCYWFnUWhtYTloaWFaaGphdGJSZkpjaGFzZ2hjWGVraHhiRmVlZjBla2FWY1RhbWVsYzBnR2ZIZEJjQmFkZUZoRmVLZVRmbmVVYlJjZWF4Z2dhWmdNZ1NmTmdZYkNjMGJNYmtlQmVSYlJoc2FSaGdmVmJ0aFJobGZ4aHhlYWNsYVVoWmZSZzNha2JIY2NkMWNZYVNjZWVrYWRka2dRYldjNWVLZ1pkSGZsaExlRmRIZUVkZGVGYVJobGFSaEhleWZkZ2dmQ2NUZHNnbWhBZ1NnOGNXaERjMGN4ZDlnRmNFZlFoYWFEZVZnaGgrZEpjUWhvZm1lSmNTZzVicGFIZTNkSmVHYkpneGZCaFNnVWEwYzllSmZCYkZlaGRnZ2ZmUmZoZTJnUWJXZkphRWFYYzFhMWFnYkdiSGY5aG1jVWhYZmhnd2ZWZ25lUWVQYmFiMWJJaFVoY2hVZVlkVGhlY0ZoTWZiYkxjQ2FNaEFkTWh4YU5ld2VDZDFibGRXaEVhbmdwZEhoWmRFZkZhdWVTZW1nMWRpZ1lhUmhSYnhiSGJSYTFmTmZHZVZkWmMwY2JmbmZZZnVlWmRrZ3BlTmRGYWhkSmNNZmRlVWdvZlFkVWhrZlFmTGZjaEZjSWhLZ1llVGNJZzBjSmdrYkFoOWFHYWljcGNBZkNhVWZNZVVmR2RFZEFoUGVKYlNoY2hZYWJnVWhFaDhnWGd4Y29oY2dPZWtlVWQ4ZEdlQWFnZW9jTmhWZ2dmeGRYZ21idGdQZkZlRGNjYlRjWGVUaHNhSGhCY2lnc2JrZFVheGZGZkhjZWRRY3NlQ2RmZUJmSmE2Y1JmMmRSY0JlYmJrZXBka2NlYlVkc2JVZGNjVWg5aFlhR2ZVZHdoRWJPZW1jNGNpZ09oeWJZaFZoYWFXZWxkZWVBaHlmSmJLZURiVWY5aEVhWGYzZzRkbGhEZWljQWgxZlpkbWE4Y1NlY2NoYm9oN2ZXZlJhOWFEZExoZ2hGZmNoQ2JTZkZjMGFCaFdiMWVCaElkRmc4YTFkQmVqYnhlV2ZPZDFjZGI3YWVnSGdCZVdmZGdBYTljcmJVZGhkUmh4Y1Jia2E1ZXhnWGgyZVZna2VhYmxnTWNaZ0VhM2hBZ0xkV2VWZFljU2VjZ2dlOWVxZUVjVGR3ZkZjTWVEaFliZmhUZFNlRmFZZEVhd2FwZ0xiRWR6Y1VkNmdNaHloRWRiY0RiaWNaZFliRWJsYkZiMWhBZmhkNGRDY0Zna2dRYmtlRmRSZVllMmFNYmlhTmJuYlVmeWJaZ09lYmVoYUFoS2NHaEJnOGdLYVFmUWJjY21nT2ZoY2hiNGhGZVhoMWdSZEVoV2VSYjFoRWdYYk5jTWdVZlhlaGJ3ZVZlbmFRaFBkYWMxYkplR2NOZEJkSmRHZ0tjaGMxZlBmTWhDY0lmYWVTZWhnMGJQaFFheGdBZlJhV2duZHBkWmJaZEJiVmFnZE5kU2d3YndhRGJGZ3hiYmFIY1JnMWZOaEdnVmVaZDBmYmFuY1pnemRiZjBiWmNuZ0ZoaGVKZVRmZGZVY3NmQWFlY0VjUWVMZGNjRmVwaENiYmQyZ0pnbWNhYlJmUmN5Z1RjbmdNZVFiVmVrYjBkRmRBYVZkd2ZkZ1pmd2Z0Y1FlT2VRZFlmOGhVZlZjWmZPZkljUmY4aE1kQmVCZWdmL2RPZUhjeGMwZkRnMmZ0ZlNoRmJIY0ZhR2hFaDNjaGJUZVRmMmdSYXFjVWZ3YVliVGJjYVJocGR6YVZjaGhKZjZkUmQyY1JmQmViZ2tkcGdrZGViVWhzY1VoY2NSYTBlSGVUZFVlMGNlZFBnVGQxZDRhRGZDZk1jSmZNY0JoWWhNZVRoQ2FGZEVhYmN4ZjRkTGNYYUdjdGF3YVFibWI5ZmloWmRtZWtmVWVjZWtiNWN6YkVjQmhGY0VlWGRXYk1nVmFUaG1kbGYwYkdmSGdCY0JjZGhGZEZnS2NSYWphMGNmYkljeGQ0YWVkTGdEYThhQ2RMZFZlOGV1YlhkRmdnYjBjRmhVaEFnTWJHZHdlNGVxaGFla2g0ZlphV2UzZzVhYmdDZXhjbGhHZE5lUmRNZDlhRWRTZHRmRWdLZENhMWRMZkNjWGZGYmJoU2VBZE5iYWhBZ2pkMGdoZk9hSGROZW5nRWFtZDRjV2hTZFdlWmExYVNiaGRCZ1NnUmRBZnRnd2FXYmtkSmV2ZllnbWVZYjdmVWFTY1ljYmhJZVZiNWRNZkdkUmRrZkFjUmVrZEFmV2FQYUZoRWgzYkNkWGFSY05jU2VoY3BlN2hiYWpic2JGZkZmamdCZ2FjVmNuYVFhUGhhYzFnSWhVZWNkVWJZY1RnZWNGYU5hUGZaaEdocGNNY0diUmVKZ2dkSWdWZGxhV2RFZG5jcGZIZlpnRWNGZnVnU2NtZVJiNWRTYnhjUmZ4aEJmeGYwY1pnVWVSZzhkbmVZZEFja2g3ZUplZ2hFaHZoRmVnY3hiTWdJYVVjUmN2ZkdjZ2cxYk1kT2VIZ0JhQ2FiaDJiSmZtYWFoUmdSZXlnVGVuZ01hUWRUZEVlMWFSZVNlUWJwY09lYWdHYVVmeWdjZEViRmMwaFVkVWJwaE9nZGNSZkZnemhUYUZhRmI0ZWNiRmRaYnViRGR6YjhnYWJYY1NkSmVJYWJoRGNRZmNnR2NHZFJoMmVVYTBnMGNkZERmMGdjYldiQWFRZmxjUWVSYzJhUmNCYWJla2NwZWthZWZVZXNlVWRjY1VkQWdVYVFmVGFOZFdiZGhHYzVjMmNjZjJhOWdHY1pheGJZZFNkUmJEZzFjRWZRYkFoQWNMZ1hkemE4aE9jR2d6YzhjbmFhZUNiWmVHZWNmbGZOZHpmVmhoZ2tjRGVFZ2hnMWZjZkFnU2JkZzBmRWRDYVJkSWVkYkFkcGdnZFRkbmNVZ1JnY2IwYnhlUmdlYUhmQmRXYWRoQWc5YXJnQWJGaEVibGFFYzBnRWIyZ1VjMGNjZXdlSWdoY3BkS2ZIYVFkOWJIZkZhZ2NFYVNhSmNsYXBna2hGZ1doQWgxZUthRGFZYWNmSGFYYTBkZGhGZlJkbGRSY0hieWFkZmdnQ2dUYXNlbWVBZ1NjOGVXZ1RibGJGZDFnSGJoaDRkdGhEY0VlSWEzYkVka2d0Y2phWWRqZ0lhaGFYZFNmRmNWZFdmUmRCZk1kVGdWYUZnSmhGZ1VnNWhwZGRjQmhnaHRiU2dIZ2hhN2hTYmtiNWIxYUVmWGZOYk1nVWNYZ2hid2FWZ25ieGZIY1pjUWZKZEdnUGNoZEpnY2JMZ0Fob2FmY0llV2JRaFNoVmQxYmRid2JGYWxla2hRZFJmemZRY0VoTWJBYmdhaGJCZEdnUmN4ZEhjeGgxZnhmUmFqY2RmTmRHZVZoWmYwZmJmbmVaZHpmYmgwaFpnbmNGY2hoSWJlaE1mQmY1YkZnQWZBZ29hTGRlZkFjNGNLZEpnamhGaG9mRmRsZ2dnOWRHZ1hhTWZXZVVmVWUwZUZiUmYyZG9mQ2NKZWlnTWZSYWZoRWNGZjhjQmNRaElmSGFKZWhlOGFNZ0JoQmdnYS9hT2VGZFpmeWFFY21hc2ZHaEdhZ2I0Zk9oV2JqZDhnYmhSZW1haGhxYkJnMWVGZmFoSWh4ZUJnemVWYWhmSmQ2aFJjMmFSZkJhYmNrZHBka2hlYVJjWWVkY2ZkVGVjZWRjVGFSaGxkV2NkZ0dmNWUyYmNnMmM5ZUdkYmcxYTRhY2hIZ0NhY2JGYlJjQmcwZlFlVWVpaEFiZmRUZ0NhRWJ0ZE1nbWRrZ0phY2VnY2dnbWJYYmdlOGJaZUdkQWNaZGJmVGRtaEZoOWZHZ0NodGNyY2RkRmVGY0tjVGduZFVnUmZjZDBjeGFSYWVnSGdCZ1dmSmdraG9mL2VCYjBoWWEvY1JhaGd0Z1NjVWcwaDloa2ZhYWxoTWdaZUVoM2JBZExkV2RWZ1lnU2JlZGtmZGFzY0ZmU2dZZURkTmQzZWNiMGRXaERhNWZLY0hoVmRBY1pmUWZHYUZhN2daZVdjWmR2ZlFnR2RkZkljUmNnZ1FiOGdHZ1JiNGR0ZENjRWRRZW5jVWgwZTVoRmNZZ21hWmRwY0ZjSGVKZk9nY2V4YUJjTWRUZFZjRmFKYkZoVWI1ZmhhSWhGYUFlNWVFZ25hb2Z1ZUFiZ2ZjZXljV2dYYk5jUmJVZldjNWVsaFFiMmVjY2FlYWYxZVFlVWhMY3hjSmRiYk1mUWhCZ0JhR2h5ZElmYWRYaGxodGM1Z0JlM2JOY1dnRWVuZXBhSGdaY0VmRmZ1ZVNobWJSYzVjU2F4ZVJieGVIZVVja2ZGZlViQWVWYmVoYmJuZ1poemdiaDBhWmhuZEZjaGhKZ01hZGJVY29hUWdXZDFmOGhoY2NmRmJwZ0NoYmcyYUpibWVhZlJnUmR5aFRnaWU0aFphUWhHY2RmUmFTYVJiVmNPY2FoWGZRZFlmY2VFYUZhMGhXYlFjSmJBaEpnVWZNaDhoR2NCZDRnc2hLaFFoWWR4YUFmVGJNZWRnUmVuZ0ZiYmhFYXpoNGZHZkFjU2ZjaCtmR2ZsaFphZGNjaEFmTWdOZ1hkeGZJYmhiYmNXYlJoQmJiY2tncGJrZGVkVWFzZ1VmY2RSZjBlZGFUYVVlc2ZUZklmRGZzZGthUGVXYzllT2VNZTFkNWJiZkhlM2NzZTFnWGhCZTBiVGJDZXdjNWFIYlFhamd0ZnNmR2VTYVZkYmFKZVVlZGUvZUVoRWhRZ1poR2dRY0JhR2NRYUJlWWg4YlVjVGJjZkpkZGZDZzliWGFUYWlhRWhmaERoQWNRYlloUGd6Z2hhZmZlZUFjOGMvYUdjbGcwZ2ljWGdUaGxhNGJVZDBhOWVrZ2FjbGFNYlpnRWYzYUFmTGZCZ0ZlOGNlZFVmRWNkZmthUWVXZDVnS2VaYUhmbGFMYkZhSGhFZFZnVmRVZk5jSmNCY0Rkc2I2aE9hU2VjZDJiRmdpaElhWWRRZFFlUWM4YkRmRWNRY2dmRGJVZXdiNGVEY2tjSmJ5Y1lkaWg1ZG5nUmdDZ0FiQmZKZjFhOGdZYUZlQWdFZ01nR2h4ZTBhaGFQY1ZnNGFrZEVmM2ZSZU1oU2FnYWdiZ2dYaHpoQWVZYUdkRGVjYStnVmFuZXhnYmRZaGxlSmZQZFdoMGVZZ1RmZWFGY05mUGJaYkdkcGNUaEdlUmVOaHdiQ2d3ZXNhVGRSZGljOGZWaEtma2dGZm1hWWJHZ1JkNWRTZHhlUmZ4ZkhhUmcxYU5oR2VWYVphMGJiY25jWmF6ZE9kMGdaaDVlRmFnYU5jYWdYZTBob2FRZVVha2dRZUxjY2dGY3BkQ2JiYjJkSmRtYmFjUmZSZHlmVGFuZk1kUGhUZEVnVmJaZEhjVmIwZ0hoT2ZuaHBnbmZQZUFoNGdqZ1VnVmVkZE9lSWhWZGthNmJIYzFiOGVIYk9mQmQ4ZXpjUmYyY3RkTWRDYm5oRmFPYVJlM2doYWVkVGYzZlZnOGNXZWhjQWhmZGNiQWdNY05nSGZsYXNicGZTZlJjc2hKZkpmd2cwZHNkZWNWY1ljVWRZYVJoUWVVaFpieGNsZ1dmZGZHYzVjMmNjZzJhOWFHZFpjeGdZZVNoVGFIaFZmS2JFZUZnSmFlaENiMmNGYU1nUWVuY0pkL2FaZGpoMGQraGNia2M1ZnpiRWZFYnhmTmFVYlVma2JWZlRlbWRsZjBlR2hIY0JnQmJkZkVjNWZLaFJjbmUxZkZiT2J3Y1ViQ2NkaGdkOGFhZk9mMWZoYnJhVGN4Z1FobGhEYmxmb2ZyaFhkVGNBZnNnSWF4ZlJiUmhHY25kd2NMYVVkUWJKZWFlTWV4Z1JkcWRQZWliWWVEY0llemZGYkxhQ2FYZEVmTmhGYkVoUWR6ZFZkbmJSZ3VkZGVuaE5kdmFSY21lY2RXaEVla2F4ZTFnU2RoZkJoU2hSZEJjRmF3Y1Voa2hvZzdiS2JpaDhiNmVHZ2dlMGhDaFBiRWNkYk1oVWdIaHRhSmRGZ1VoNWJwZGRiQmNoYXdjUWFYY1JmUmhTaGtiNWMxZkVjWGNOYU1nVWJYYmhmd2dWZW5jeGFiaElieGJ0Y0hhZmd6YmxjZmJOZXdlUmhQZWVlbmNSYlRjVGRSY3Bod2ZWYTFhbGZlYkdoaWE0aFBkTGhSZEpnZ2NOZFNnd2J3ZkRoRmZ4Y3hiQWVRZEZoTmVFY1VkZGZpYmJibmd0Z3plT2EwZzlmdWFGZmhhUmdNZVlmMWE4YkZjUWRWaEVjQ2dlYlZhWmRvZWJiMmdKY21kYWJSY1JjeWRUaG5kTWVRY1RhRWExY1JkU2JSYVZiT2NhZFhkUWVZYWVoQmFVYjhjR2VCYWxkQWRDZ2xla2M2YkNleGJsYzRnYmRraGhlcGdEZHphOWNiaEhoWGYxYXNhRWgzY2hjVGFUZTJjUmRxaFVheGNrZVRhY2JBaHRoWmZWZmhmSWd1aERmeWEwZVNjUmdFZ3Boa2RlYlVnc2hVZmNjUmUwZmRkVGdSYmxjV2JkYkdkZGZ0ZVdiV2g5ZUdnWmF4Z1lhU2NUYUhlVmFLYkVhRmZJaFpmQWZuYXhod2RRZ21nOWZpZVpnbWhraFVoY2ZrYTVoemZFZUVkUWFGYlhmeGVsYUhoQWZUYTBmN2hUY0Nla2RSZ01mVmc4YVpkQmFqaHhoWGdKZnlkQWZVaFBiaWJSYVdmYWVRZjhnamNYYUVnUWdqYUNmVWZjYTNnQmh4ZFlmMGNMZzFmMWFLZldkemJsZE5jRGdSZ29lU2JaZjBhY2hpZ0ZiQ2ZBZ0piTWVEZEFhRWJXZ25oRWRWY1NhVWFFZlpjQmVIZTFkdWJMY1ZobGh2ZVJobWNjZVdhRWJrZHhoMWhTZGhjQmRTZlJkQWhzZ2ljSGJ4Z1ljNmZNY0NiaGNwZ0hmRmhoZU9oY2J4Z0JoTWNUZFZlRmFKZEZlVWE1Z3BkZGdCYWhld2VRY1NmQmFSZFZhRWc1ZGtkQmMxaGxiTWZVZFhnaGF3ZFZnbmZRYlBhYWYxZEloVWVjZ1VnWWdUY2ViRmVOZ1BhZWgyZ3BoYmRFYlVjY2g0ZVFnZ2ZwY1ljYmRUaEljT2FJZ3dlbGR1YVZlMmJRZnRoQWcxYTBhaWRFZTJhSWNCZlZkZ2ZGYjBlY2htZXBnemdaYnhnSmhuZ0djeGZKZ2RjWWUwYU1hWmJYYW1mNGVMY2NjRmZwYkNmYmYyZEphbWNhZFJoUmV5Z1RobmJNZVFmVGFFYTFjUmdTZFJlVmZHaFBjVGF4ZlJjSWIwYThiTGdIYVFlVWNaYmRiUWN4ZHplWGJGYWhlMGJXYmxoWmMwZURkMmF0YlNnRmFIZUZlR2RFYjNhaGVUY1RkMmRSZXFjVWd4Z2toVGFjZ0ZjbGNaY0Nja2c1aDZjVGR6ZkFlSmhKZXhobGdxZkJoZ2NOZGRjTmZsY1VkZGFTYndnUmVXZFlobmR0YWphWWFIY3BlUGJiZWpld2FTYVRoSGZWZ0tjRWVGY0pmRWZDZTNiQmdhaFFlbWU5ZmlmWmFtY2tkVWZhZ0ViNWhpYUJka2R4ZlFjVGZFYWxnQmZaZUdlbGMwZUdnSGVCZkJnZGNGYUZiS2hUZW5kVWNSZmNnMGF4ZFJlZWNIZUJnSmFkZEFmZGNqZkJjbGZ3YzRlRmdSZTBlSGRHZ3dhWWhqYklhbGVNaEVjRWJ5Z1JoRGVFZkFiVWdjZkJmUWVzZnJhRmZtZmRkR2VaZ0hiRWNmZlhlRGZoYk9oRWZ6YkphVmhHZlNkTmN1Z2FoM2VOZy9iVGEyZzRlOGRFaGtkeGMxYVNoaGFCaFNiUmNBZXRid2RXYmtlSmZ2Y1lhbWFaY3BlRmVHY2hjT2FlZHhmZ2JZZkJkUmhnYWFmR2h6ZEVoaGJQY1ZoOGM0aFFjV2hsZVJhUWNoZm9mOWJXY0NiQmdDZUxnamNBZTViRWNUaHdjUGhkZzBmNGhVYUpjVWM4aFRiSmVGYk5mSGhNZkNnSWNhYVNiaGYwYlBmUmF4ZlljQmRFYm1nUmRaZlpoRWFsZC9iWGFHZ1JkMGNTYjBmQmc0YkZjQmhSZ0JmTWIxZlphMGFiY25jWmV6ZmJoMGZaY25mRmhoZkpmTWJkZ1Vnb2RRYVVja2JRZ0xmY2FGYUljV2NKaHlnc2QxZ1plMmdzZitlQWJTYVFhUWdVZ1ViMWJaZkhjVmYwaEhlT2duZHBmbmJQYkFmNGRqYVVkVmFaZFNkZGJVaFZhNmVUaEZoZGM0Z1poa2ZOaGhlSGVIYjVmYmZHZkZidGRHY0VjM2JoZVRkVGcyaFJhcWFVY3hna2ZUZmNoQWR0ZFpiVmVoY0pmNmZSaDJmUWVUZmJkaGRZYjRkZWZVYk5nQWNPYlZhUmVPaFFkMmRZY2ViUGRTaGtiK2hjaDJkbGRiaFpod2RBZkhnV2ZXZVpkZmhHYlZmdGNJYklmWGZCZmFjUWVtYTlmaWdaYW1ja2JVYWNja2Q1Y3pkRWhFaHhhTmNCY1FmRmZjYUhoVWVOYTBoR2FIYkJlQmJkZEZiRmdLZlRmbmhVZVJoY2cwYnhhWWNZZzFlcGhXYmRkQWI5aHJiVWFoYlJmeGhSZGhjTmg0Z0Rja2FaYm9kUWdGZU1kWmJFZDNhQWFMZldiVmZZZlNnZWhraGRjc2dDYVdlQWRhZU5oamZZaGZlV2d5ZFZjRWVUYVFkZ2NYYkJkRGNzaDZkTmd5ZWNjcWdLYmliSmRRYlJha2J4Y29lU2NsZmhmY2ZGaEZoa2EvaERkZ2cwaDdlT2F6YVlnc2NHYWljQWRCYkpnMWJ4Yk1hVWdGZEVhUGRRZUFiQWdxZUljRmZFZy9nRGgzYlJmWmZIY2tmZGMxYVNnbGRsZ01mVWNYY2hod2FWYW5nUWhQYmFhMWFJYlVnY2JVZlplRmNPZ1FhRmdQZk5ibWNwaE9mR2VSaHNoa2RRZ3hjQWhGZ0hnQWNVZ1BjTGhRZFlhbWRTZ25kaGZsZlNhd2JWZm5jRmJCYzBjUmZHY1FiSWM4ZUpieWRWZDloRWJBZm9lb2FRYVFibGVtYWRnVWZvZVFhVWVrY1FnTGFjZkZncGZDaGJlMmVKZ21oT2cxYkVnbWNHZXlkRmJlY1RnRWFWYTdoU2FSYlZlT2dhZFhhUWNZYmNjRWNGZzBoVWVVaHBlT2NkZVJoRmM3Z0hmbGdGZGxlY2RGZzRjbWFEYjNlZGFPZkZhQ2NWZFBjRWZ5ZlJnVGhSZXpoWmFxZlRiUWhjY05iY2hBYU5jS2FSZEJlSmUzYVJnemFCaEljWmMwZ05ib2VVaDBlc2NVZGNmUmEwaGRjVGJSZGxkV2hkZUdkNWMyZGNoMmc5ZkdlYmMwZ0plYWRCZlNjWmJFYWJoeGM0Y0xkWGdIYUJmSGhRZ25nbGEzaGNoM2dvZkJnY2JrZ2hnemhRYWtkVmdCYWVnMGZrZlZlVGZtYmxlMGJHZkhjQmdCYWRiRmZGY0thVGZuYVVoUmdlaHhnZ2VaZU1nU2ROYVlkQ2YwYWNhaWdGYVZleGV4aFdmeGFNaHFlVWMxZkZiNmdkZ0ZkTWNJZkJlWGJrZEhlY2gxYllhU2dlaGtoZGhraFFnV2c1Y0tkWmVIYWxnTGVGZkhnRWZkYlNhUWFWZVFkQmdWYTVndWZkZ25oTmF2YlJobWFjYVdnRWRrYnhhMWFTYWhhQmFiZFhjeWJGaHdnV2hrZEpndmFZZG1kWmFwY0ZoSGFKZ09lTGNoYmxmQWJaYjFoRmNKZEZoVWE1YnBiZGVCYWhkd2FRZVhnUmJaY0Fia2ZBYWxhUWV6Y3dlWWVIY2lhd2ZwZ0JmamRFY0JmT2RSZzFoQWZNY0JmSmhXYUNmaGhvZEljTGNEZzVkVGVCYkJmTWI0Y0JiUWJrZEVlWGFTYTRmSWNNZ0JhZ2craERlMmJvaHJoQmNFYkFnamdIZFFkQmdOYlhhd2NNYjZnTGZTY0lhNmhJZ0FjaGRuYUhma2FaYUZlZGdSYUViNmdVYWtjUWdMaGNjRmNwY0NoYmYyYkpkbWFhZFJoUmh5Y0dkRGNKYkNoVGRCZjliUmhWZkJjVmNHaFBlVGN4ZlJjSWMwZzhkTGNHY1FiTWVKYlBkUmZGZ3ZnVWNGZUZlcGRaZWxoOWQwZlVmMmZzaEdiWGFEaGdlVmdIYVFnY2FmY0FoRGZOZXhmZWZSaGtkVGRjYUFkdGVaYlZiaGhKZzZmUmEyZFJhQmdiZWhjZ2doYkxmUmM1aEdkUGZ4ZzBiVmdaaHhlbGZXZGRmR2I1YzJjY2gyYjloR2NaYnhnWWdTYlRmSGhWYktjR2ZBaEJhRWVGZm5hQmNTaEViR2c5aDhhZWFIZWNiVWJKaGtoZGN6ZlRoRWN4YUZoQWcwZWtjSmJVaG1ibGU4ZENhMmNKZEJhZWJWY0VlZWFSZDNhd2FZY2ZnMmdaZ1JmZWdIZkJjV2VkZEFjOWZyZVViaGRSZnhiUmdoZk5jNGZVZTBkY2F3Z0liaGhwZktoSGNRZDloSGZGYWdmRWdTY1pnMGZkYnllVmNIZnRiWmdjZlhkbGFOaEZiQ2ZNY1VlRWJXZmNlWmNWYm5kUmN1Z2RkbmNOZ3ZmUmNtaGNkV2ZFZGtheGUxZ1NoaGNnZEdiRGVFZ0llamdWY0RlMGduY0tmeWNFZ2hkRmNHYTljT2dJY1JiQmJTZFVmMGI5Y0piQmhGZ2hlZ2hlYURnSmJ3aFFlWGVSZ1JhU2NrZjVhMWNFYlhnTmFNZVViWGNoYXdiVmVpaEJmSGRJaGdlRWUrZ2NlVWZZZ1RjZWRGYU5lUGFaZUdncGVUZEdkUmdOYXdnQWhrY0plOGJFaG5mcGdIYlphRWNGYXVjU2RtY1JiNWhTZzBibGQ0YUVnVGdkaE5hR2hWZFpmMGRiZ25hWmR6Z2JnMGRaZ25nSGFsaHBiQ2JKZVJkaGFmYkJmZ2h0ZGZlS2dRZ29oSGRZZFNiRWVxZkpnbGdvaDNkVGVtYTRiUWNDZmhlZ2hmaENna2FFZkhoSmNqZm9mWWZlZUViaGcwZ0NhbWJCZU9lZGZSY0ZhemdUYkZiRmc0YmNhRmFaZzBjRGUyY3NlQWFVZVNjVWZUZVFiVGFaZFRnQWFTaEVhOWVVZzFjRWJiZUpmRWFNaFFmQmFSYXdlRmFDZnllc2hXaFlna2JvYXdmTWFRZkphSGdmYjJlSmJWYkJmRmU0aGVlZmdYYVZmY2ZjZDJhOWdHZ1pmeGZZZlNlVGNIaFZkS2JFYkFhOWdOY0JoMWRwZGFmUWZtZDlhaWhaYW1na2NVZWNla2E1YnpjR2hBZVZhTmJUZkVnbGF1Zk1kMmJCZDRhTWRuYkJoQmNkZUZoRmNLY1RhbmFVaFJlY2MwY3hkWmRQY1hkQmNMaGRjRWRrYStnSGZGZWNmbGdEZTFnd2EyZVVhMGJkYXRnYWhnY2djemhFYjNmQWFMZFdlVmhZaFNhZWNrYWRja2hRaFdhNWVLZE5lamV3aGZhUWJTZk5mVGJIYVFiVWhDY2ZjSGZSYnVnZGhuY05odmJSYW1iY2JXZUVma2J3ZG9oUmVGY0VjQ2RGZUVnY2RwYVVnaGRCYmphWWNpZzljZ2VIYVhjNWZrZWNieGdCZE1oVGVWZUZmSmRGYlVjNWZwZ2RnQmJsYTRnRmh6ZXNmWWNEY2tnNWFsZ0VmWGRKYVJiVGNIY2dkMWNWZG5iSWRKZWFmMWRwYkFnZmh3Yk5jTGZLZUJkd2ZkZE1iRGVsZVRkQmNCZ01kMWNBaGxkQmJOaE9oSGdwY0hhWmhFZUZhdWJTZmplbGF3Z1FhMGFBZzVlVmJFYjVoRWVBYm5neGIwaGJobmZaZHpjTWRrZnBhTmFGYWhjSmNNZ2RjUWR4aEZmSGNBYWRmZmJPZVJhVWFNZmJjMmVvYXloWmZSZ1FiZ2hSZzNhTmRMZ1pla2cxZlJmU2dSYVZnT2JhYlNkSmRaaElia2NFZjliWGdVY29jTGViY2pmdGV6YVRjRmZGZDRkY2ZGZlpiMWdCZnliMGFIZ1dkamVJZFNjV2NqZ2NmZGNUYzJhd2dsZFdhaGhsaElhV2NnZHRlWmVWZ2hiSmI2Y1JjMmVSZUJhS2hCaDhicWdPZGhhOWZkZFBmbGFNZGRkQmdSZkViQ2hlZ0dkNGRrZ2ZmMmE4Z1BjYWF4ZlpkWGJSYVhhVWZSZ09hbGRKZ0VkQ2czY0JoYWdRZm1mOWRpZVpkbWVsYUdiTmV4YW9nbWVRZ2doSmhOaEJkUWhGZGNjSGNXYWtlOWFWYWlmTWVWaE5oUmM4Y0pjQ2J6Y3BoWGhjZHdkUmY3YWVnSGFCZFdjZGJBZDlncmVVZ2hmUmN4YlJhaGNOZDRhVGJFYzlhc2NZZGdmZGNSZFdkaWFNZ0ZhQ2F4YU5jZmVPaHdnNGVxZkJlU2hzaFljWmZHY1JmTGRXZmllUmhSYVVnVWFRZFZmZmdIZVJmdWhkY25oTmd2YlJjbWVjZ1diRWJrYnhkMWhTaGhnQmJTY1JnbGFnZmthQ2JBYXNlaGFKYldoUmhwY0NnV2I5Yk9hSmcwZ2tnY2ZDaEJhNGFQZ0ZoUmRwaERmZGRCaGhmd2JRY1hlUmhSZVNoa2I1ZTFoRWhYZ05jTWNVYVhkaGh3Y1ZlbWdzZ1BhS2ZsaHhnWGhNZUFmcGNmY2NhQWJjZkhkTGFUYmxmZmhHZVVkZGY4Z0Njd2R0ZmZjT2hIYnBlSGZaZ0VmRmF1Y1NhbWNSYzVoU2V4YVJjeGNIZVJoMWZOYkdlVmhaYXVoYmFuZVFlbWZJZFFmSWdpY1VjRmNzZkNhTWJBZDRlU2FVaGxma2VXZmNiQWI0YmJhUGd5YWNhcGFMYnhmUWJnZ1pnSGhNZFFiVGNFYjFiUmJTZVJhVmFPYWFnWGZRZFlmY2FFY0ZjMGFVY1VicGVSaGRhVWVKYjlhRGJ4ZUFiMGVQY0ZlNGJnZlJneWRJYkJkR2NIY0VnU2JHZGxmSmZUYlRkMmNSZXFoVWR4ZmtmVGJjY0FldGdaZ1ZjaGJKZjZlUmUyZ1JhQmFkZkVib2R5ZE5lZ2JKYVFkY2dWZk1nVGdEZ0Vna2hHZk9iRGZkZytmSmN5Y2NhUGFOaEJjb2FTZ0RhU2RjaE5jUmJSaDhoQmRSZlNjUWdKZVNnMmdaY0lmWmdtY2tnVWVjZGtmNWR6Y0VhRWF4YU5oVWFVZ2thVmZWZ0dka2U2aFhoU2JkYkJoUGFGZmtnZWhRZG5iVmFEY2ZoMGd3aFliZGVIYUFiVGZmZlJlUmdCZFVlaGhSZHhoUmJoZ05kNGJVZTBlOGg1ZlFlRmNNZ1piRWQzYkFhTGdXZVZlWWJTZlBkQmZJYXFhQWFqaG9lRGVLYnpoZGRMY1dobmFsZ0pnRWVVYjFmTGhXY25iUWNuaGVibmJNZnFiVGcyZ2RiTmNPaEVjeGUxY1NnaGFCZVNnUmNBYXRhd2FXaGtjSWU5ZkpoemhJZDhnUmRqYnhoT2NjaFVjVWNDZkNhUmNRaFBkWGJBYkFlc2RNYkJlcGN3ZlhmR2NsaFJhSGVoYWNjbGFWZURjd2FLaFVnVGNGZWFkVmduZlFmUGJhZTFhSWFVYmNkVWNZYVRjZWRGY05nUGdlZDJocGFiYUVnVWhjaDRoUWNnaHBkWWFiY1RndGVYZmRkRWNGaHpoU2JuZ0pic2dYY2doZGRrZkhmUmR0Y05jVGNWYzloNGRSYUhnWmF6Y2JiMGNaYW5iRmdoaEpiTWRkZ1Vnb2NRZFVma2RRZUxoZWVBYTRoS2FKYmpkRmFvZUZobGhWaGpjV2JIZE1lTmNUZkJkbGNSYVZod2d0Y1FnYWhXY1VlT2NlZlVhMWhlZVVmVWdwY09hZGRSZEZnemRUZ0ZnRmU0Y2NmRmJaYzBhRGUyYnRiYWZRZ0Rka2FQY1FiSGVZZXNhRGZuYmRlNGhVYXdkUWRUZVphaGg1Yk1lUmVRYmRiNmNRaFdkUWZUaFpiMGZaZU9oZWVVZ3NiVWFjZVJkMGFkZ1RiUmNsY1dnZGRHZzVnMmZjZDJiOWhPYU1lMWQ1YmJoSGQzYXNkMWZVYVVjWmJjYkNhMmgxaGFhRWhHZjlhOGJlZEhmY2JVY1loMWNoZzZlSGdHZVplTmRVZFVla2JWYVRibWZsZDBoR2VIZEJiQmFkZUZlRmVLZlRlaWhGZFpoT2ZoaDlhWWNVYm5mQmFXY2RkQWM5ZXJiVWVoY1JneGJSY2hhTmc0ZVVjMWRWZmtiWWRsYXRnTmJXYnpkbGFZYVZneWNsaFRmYWFsYmRia2JYZkdlNWJhZ1plQ2FWY0xjUWRIZWdmUmVOYjBhMGJaYVZibmRSaHVjZGNuZE5ndmVSYW1hY2NXZUVoa2Z4ZjFmUWNrYVFiYWhEZ1ZmaGYrZEpnUWROZCtoZGhHZlphMGRGZEdmSmJPaExheGNBYmVjUmRGYTFlamJGZlViNWJwY2RkQmNoYndmUWVYaFJlUmVTZGtoNWUxaEVlWGZOZ0VhQmdUY0FhNWFCY1hlcGN3Yktka2JFZEdhY2ZWZXNjVGFhY0ZhTWFUYVpoQ2hOZGFjRmFUY2xmd2ZDaDFnbGVXZEVlbmZwYkhoWmhFYkZhdWFTZG1lUmQ1YlNheGN3YmxkVmRWYVFlZWhGZ3lka2MxY2VnbWE1ZHplY2JrYlplM2RGaGtmNWVNZ01lRWhNYWNmZWZFaFFjTGJjZUZkcGVDY2JkMmFKZG1lYWJSY1JneWFUZW5kTWRRZUdhQWJVZ1ljR2hoYnhiVmJRYjNkUWZZZmNmRWRGYzBkVWFVYnBkT2FLZERhdGV6Y1RiRmVGZzRoY2ZGYlpiMGJEYnliMGhIZVdkamhJZVNjV2hqYWNlZGdUZnpiZGRpZkJjeGZBYVRiS2Z5Y0ZoWmNWZGhkSmE2ZlJmMmNSZUJkYmNrZHBna2VLY3dkNWRBZkpnRWQ5YVRlVGdSZ0ZlOGNkZUdiNWYyZGNhMmc5YkdiWmN4ZVlnU2ZUZUhlVmRLZ0djQWNZYU1lUWRpYk5jVWJQY1NoNWF5YWRhbWRrZEphY2dsZmhmbWVCY1ZiOWdZYlVnVWI4ZVZhR2dtZUJhNGFNZm5hQmFCaGRhRmZGZUtjVGNuYlVmUmNjZzBneGZSaGVjSGRnZ0NkUGJFY1lmNGRYZEdic2J3aFZmd2NWYjRnVGRrZThhd2NhY2tnMGZIZ0RkWGNBaGFjVGExYjhoZWVVYUVoZGZrY1FnV2E1YUtkWmFIZ2xhTGhGZkhiRWhkZkhhVWFWY05mSGRqaDBmOWFlZ0Fid2F1YlZoWGNVYVdiRGIwYXhobGJRZXhmeGM0ZFJhQWV0Z3dnV2ZrZEpodmJZaG1oWmhwY0ZmSGhKY09hZWMwY1FjRWdCY0FnSmJIaGFmZ2I5YzllYmVCYWhndGJRY1dnUmdZYVJhbWJSYTFhRWFYZE5hTWVVYlhkaGZ3YVZhbmZRZlBoYWgxZkpjQWdPZVFlOWRBYVVhbGFOZlBnWmNHYXBlVGFHYlJiTmJ3ZENmMWdsZ2ZmQ2hWYkJoSGZaZkVjRmJ1YVNlbWNSZzVlU2YwY2xhYmdIZVJmMWJOY0dnVmhaYTBiYmhuaFlnMWdPaGdoZ2NrYlFkbGVzZkRkT2YwaHBhUmJXYmhlQWNIZGNmQWFoaExlYmR6Y2xhTWVhYVJkUmJ5ZFRnbmdNZ1FhVGhFZDFkUmZTY1JnMGFjYmFoV2JrZ1liSWdrZUVob2VEY1VlcGFmYVpkUmdoZy9iWmVsYUZoNGVjZUZmWmgwYkRjMmR0aFNhRmVIYUZkR2NFYjNiQWdIZ0JieWQwZzViWGdXY1pjU2NZZEJkdGRaZVNkeGVKZXFnVGdtZmhjcmRiZmtkcGRrZ2VlVWJzYlVnY2VSaDBmZGJUZFJhbGhXY2ZmRGdvYytjT2ZqY3hhSWVHZkZmY2FEYVdobmhWYlhnRWJFZEpmTmVCZDFjcGJhYVFjbWU5Z2loWmFtZGtmVWVjZGtnNWR6ZUVkRWR4Y0ZiQmJRY0ZoY2hIaFdmY2RMZVdjV2dOZ1RiZGRFZ3hiS2ZYZm5kd2VkY1dlVWJ4Y1JlZWFIY0JhV2RkYkFiOWJyZFVlaGVSaHhmUmZoZHNnc2dHYndiWWIzZVpmQ2V4ZVloQmMyZWdhTGhSYUZiWWdDYmNnMWR4Yk9jUWVXZjVoS2NaYkhhbGZMYkZlSGNFZGRiSGhRaHRoV2JCZUhoUmZtaFhmSGVOZ3ZjUmRtZWNjV2NFZ2tmeGIxZVNlaGZCZFNjUmJGZzBleGJDaEVhSWVtZVlnbmN0ZHBoUWNRZ2toY2NEZGhoQWhRZUVmVmdFZ0hmVWJCYmxlcGNQZkJjQWJkYkFnQ2VBYlplUmZCZjRlNmNSYm5oc2dlYlhmWGdoZWxlWGczZDBoRGdhZHhkY2JVZ2JiRWdZYkRhZGZGYU1hQWhaZ0hnZGFUaFRlUmUwZjhjVGJoZ2NoUmNSYmpoSmZjZFRoa2VGY3VlU2htYlJjNWhTZHhkUmV4aEhhUmUxZU5oR2hSYWxhMGhjYkhlWWEyZGRmR2N4aG5hRmZoZEpmTWNkYlVob2RRZ1Vja2hRZkxhY2dGYW9oSGhiYzJlbGE3aGFhUWJGZVlhVGNuYk1iUWhUZUVkMWVSYVNoUmJWYk9mYWRYYTBhWWdLZjJkdGMwZFViVWVwaE9kZGhSYUZkemVUZUZnRmQ0YmNlRmNZZGlmVGJqaGxlU2NXZ25mRmFiYkVkeGJVZ1NlR2h5aHhna2RIYmxnQmZkaGVhQmY1Y1ZoVmhsaDFiNmJTZG1jUWJFYlpnMGZaZE9jZWFVYnNhVWVjYVJnMGZkZ1RhUmRsYldhZGVHaDViMmhjZjJlOGdWZFpod2VzZVNiSGhEYlFiWWZRZHhhY2V0ZVJjU2hSYlNnRmhtZ0VneGRLYmllQmJYYk5nMGFZaDJlSGdFY3diSWhVaFVjSWVWZkFnR2RCYjRjR2hDZEpjSWNiZTNkdGZLYlRlbmRVYVJiY2gwZXhjUmJlZkhnQmZXZWRiQWY4aC9jR2ZsYzBoaWJTYkZiNGZ0YUhleGVzYXRmT2VoZzllQWdHZzJiVWVMY1JmMWdaZ2NnZWZsY2hoa2JEY3lic2VkZVpkRGFGZURlZWdUYUJhSmdWZlVhTmNKYUdmU2hOZm1nSmdIYjljdmJDYkdlNGFmY0VibGNaZzFlQWF4ZGxnY2FCYVViOGcwYlVmZ2V3aHFoTmJXZFljaGhIZ0NlRmJIZmVjZ2Z0Y21hVGdWZ0ZnSmhGYVVhNWZwY2RoQmFoY3dkUWJTYmxlN2RTYmtkNWYxZkVhWGJOYk1nVWhYY2hld2FWY2lmWmFLZFBkd2ZkY0dlUGgwZ1pjSGJNZEJib2djZGZiMGhCZ1RiR2FSZ05hd2dDZDFjbGZXZ0VmaWFkYXRmWmJFYUZidWRTZm1oUmQ1Z1NieGRRZG5oWGFFaDllTmNUZkZkWmVwZmJkaWQxZFphYmgwYlpmbmhGZGhjSmNNZGRkVWJvZFFlVWZrYlFkTGRZZlVneGNZYmJkeWZwaHViQmJGYlVibWZCaG5hMWdBYkFieGVwZFpnV2dBZ05mQ2FhZVdkRWdSYWVnVWIxYWViVWVVYXBmT2JkYlJhRmR6ZFRmRmNGZDRmY2ZGZ1pmMGdIYW5jdGZJZEZkRGJsZU9oZmRqaGtlSGNCZTJhb2E2ZkhmRWc0ZGJhWWVSYnRnVmNWY2dlZGR6YlRobWZoYXJoYmdrZHBka2hlYVVmc2RVZ2NhUmEwY2RnVGZSZWxiV2NaZW5jUmYyaE9lMmVjZnJiSmVrZUpoYWdRY2llVWZGYlJmMWJwYVdjQmQzaEJmUGhTZTJnWmd1Y1RkR2drYVVnY2RrYTVoemVFYkVkeGROYVVmVWNsaEllUWNrZU5hMGdHZ0hmQmdCZ2RiRmVGZUtnVGhuY1VoUmJOZFVheGhNYmVjQ2h0YVdkWmFSY2xheGhVZ2xneGE1YlZjd2ZWZXhiWGcwaDlhMWRlZGtma2daZldhM2FnYmFmU2FWYThmZWhlZWxlVmUrYVFkU2ZaZ0NjZGRuY0JnTGhTZldhb2gzZkhlVWYwZFpiVmduY1JkdWdkZG5jTmduZERkbWNsaEdmUWJBZU1naGJCYlVnUWVMZUZlRWc1aCtlSGNCZUFnZ2ZMZHdmUWRnZFFmQ2FGYk9kYmdoYkFlQ2ZSYkZmMWJqZEZmVWU1ZXBlZGNCZWhod2NRZ1hmUmhSZlNka2ZZYzlhSGV5YU1oZWhIYWlid2IvaEFoaWMxZWZmTGhsZHhoU2dJYndjbGNlZEZlZ2NZYUNoSmZpYzhiQmVHZFFhNWJ3Y1dnRmFCY2FiT2JIYXBnSGhaYUVnRmR1Y1NhbWJSaDVoU2N4ZVJjNWhWaFJiTWJkZFNleGNrZWdnSWhTYUlocWZQYXdlTmJwZ1ViRWNBZ0RnT2REZmxhRWRBY0FlMWdGaE5mMWhwZmZoYmN5Y05jdmVaZlRnNWd5ZVRobmhNYVFnVGFFaDFoUmVTZlJlVmFPaFlkVGZ3aFdiSWJCYU1iN2ZCZ1FhVWNhZ0xkRWRFYTJiUWdnZ1VjM2VIYWdlTWQ1aFRnU2Q0ZEFkRmhHZXhoR2NWYVNoMGRkZ0RkRGRBZ2pjSGhGY2NoVGZlZkFhSmNaZERiVGVoaDZoUmIyY1JnQmRiZ2tkcGJrZWVmVWhzY1VmY2NSZzFjUGJDZEVlMGNEYUpoaWdCYTJlWmRYZnBjVGhkZUFkQWNTZVJnbmZVaGVoV2NCZnNkWGZCYlFnOGViaFVlM2VsZ2loYmhXaGxlQWRPYmdiY2JnYUhnamNNaE1lUWRWY2tkT2VaZEdobGIwZkdhSGRCYkJkZGFGY0ZlS2VUZ25mVmVNZWVha2FCYTdhZWJIZEJlV2VkYUFkOWhyaFVlaGdSYnhkUmVoYnNld2ZYYVJlOGIyYUphUWNkZVdjUmd5Z2xoYmNIZUZjaGZHZk5nVGJRaHdiRWN5ZWNkRWNJZzNmbGNXY0ZmRGhkZ0lnVWF3YjVlTmJIZHphc2ZnZ2RobmFzZjdjVGMyZWRoTmFPYUVieGcxZ1NoaGNCYVNhUmFBZHRmd2hXY2tmSmR2ZlliamVKaHBmQ2NYaEllYWhjYzBjd2VRY1RnVWJCY1pkRGJtYlJicGhkY0JiaGZ3YlFhWGdSaFJkU2FrYTVjMWNFZVhnTWZhYUVmQ2FwZXdjQmFIY1FmU2JhZnhnUmN2YUpiVGRzYVRoSmZBZzllUGJLZWlkOGRFY0dkVmN0ZTRlWGcxY0JlTmZPZUhlcGRIZFpnRWVGYnVlU2JtZFJhNWdTYXhkUmR4ZUhjVmFRaExiR2ZWaDVhMWhPY2pkNGU2Y1BnRWVnZ2dnUWRoZW9oZWRmaEVoTWNRaEFhQWhGZGZhSmJRZGdmTWJiZnphWWd1ZUlnRWNkYjhkR2NqYXhlK2JHaFFiQWdUYURoRWNkZEdjWWdIY3BhTWFQZnpjSWNnZ0Fod2RNYkFnTWVoZWtlbmRSZ1VncGNTZmNkRmZaYjBoRGcyYnRiU2JGYUhiRmNHZEVoM2doaFRmQ2NTZnNnNGFVaHhmRWQ1Z2NhQWF0ZlpjVmdoYkphNmhSYzJlUmNCZGJka2JwZWtkZWZVYXRoQ2ZNZkVoOGZkZEJkQmJsYUxmZGhEaG9lK2RPZ2pkeGJJaEpjRmVwYmRmQWdqZUJkQ2RHY1ZhNWVFY1RkbmNCY0hhUWZpZkVlbmJNYldjbGIxZUlnQmd3aHljU2dVY1JjYmhSYlVlQWRaZlRlaWNaZjBoQmFYZEJkWGdaYTBjcGhnZVRlbmFVZVJnY2cwZ3hoUmZlY0hiQmdXZ2RnQWc5Y3JiVWJoZVFmK2JSYWdnMWRsZVVoMWE5YmtnYmFGY1VjemJFZjNoQWFMZldiVmRZYVNoZWJraGRka2RRZldhNWVLYVphSGZsaERlWGFYYTloWmdWZ0Jlc2JSY0JjSGQxYWloZGhuZ3NhcWNQYlNnaGNyY0VnbGRGZzFmQWR4YjRjQWZBZlVlWWV4YkVkd2J3YnJlSmR6Z1JkbmJRaERkMGZnZUpjbGIwZ09lQ2FBZE5jQmZIZkVnQWM5ZU9jMmhzZGtmRWZ6YzBlZmZEZVVjWWdoZkdoSGdwZ0FmVWRUZkZhK2RFYVNjQWNIaE9hVmNzYWRmYWRtZ3dkVGJlYUZnTmRQYVpkR2VwY1RnR2hSZ05jd2FDZDFnbGFXYkVnamRWZEtoYWFXYXRmdWhTY21oUmg1YVNheGFSY3hhSGNSZTFjTmRHZlZnWmg5Y2RhVmF4ZnpoYmQwZlpmbmFGZ2hiSmRNZGRiVWhvZVFjVWVrYlJmWmVOZFFmNGNYZ1BiU2N4YW1kWWNWZkVnSmNBZFhjTWFkY1RkRmR3YXNlU2VRYWhkT2JJYkhkcGdNYVBheWQ4ZWhmSGRBY2djTGZKY3hnbGI2ZVFlZ2RVZjNnQWd3ZUllbWFSY2lmVWdWZkhkQ2JWYlBiR2FuYlJjVGdDZm1nb2ZnYkhoRmNCZmRmZWhBZ2xkYmNYZndhbGJRaFJjMmJSYkJnYmRrZXBka2JlYVVnc2VVZ2NnVWhBaFVmUWFUYU5lV2hkZ0dnNWMyZGNlMmM5ZUdmWmh4YVllU2RSZ0RmMWZFY1FkQWJBYkxkWGF6ZzhjT2VHZnpiOGhuZ2FlQ2NoZVFoTmNrYTVkdWNFY0Fob2FZYUhhd2FwZ0JhQmR5YVliNmdHY0hnZ2FWYmZmVmJFZFJiWmVIY1VmUmdjYjBoeGRSZmVkSGRCZ1diZGFBYjllcmdVZmtlSWR3Y0ZhQmRNZHFlVWIxZ0poa2NQZ2hhdGZRZVFoSGc1ZTBnR2dFZ1loQ2hlZ2tkeGRrZ0ZkV2hBaDFmSmhXZmxjYmZHZkZic2NkZEhiVWcwZ1plVmFuYlJidWVkaG5kTmV2aFJkbWdjZVdhRWVnYVZjMWJWZXhhQWdBZlJkQmFWaHVjUmVFY0pnK2VkZUhoMWVEY0ZjSGhKZU9mY2V4aEJlTWZUZ1ZnRmNKZ0ZoVWg1ZXBkUGFSYmhjN2VYZ0hjUWFGZ0FoZ2JjYm1jSGR3ZndlTmVRaEdoNWh3ZVhoWGJSZWJmWmJTZTFhVmhZZkZiQWZJZFVmbGFOZVBoWmNHZHBhVGVHZFJlTmd3Z0NnMWZsYVdlRWJpZHdkR2dOZGtjRWRyYVNibmZsYzVkQWRoZlJodmhBZ3dhTmhOY0NlRWNCZHZmUmFIZ1pmemRiYzBjWmVuZEZiaGJKYk1mZGVVYm9lUWNVaGdnRWZMZ2VhMGFkYkNjT2V5ZW9kdmVPYmhob2ROaERkMmVBZkNoVGVFZVpiUmdIZ1Jkc2d4Y0tnR2JjYktjYWIyaHRkMGhVY1VlcGNPYWRoUmZGZHpiVGhGZkZnNGNjaEZoWWZpZFRmamJsYlNkV2EzY0ZmYmRFZHpnMWNUY1VmWGJwYTBlVWZ3Z2dhRmJhYnliRmRaZ1ZkaGRKZTZnUmcyZFJkQmJiYmthcGJraGVmVWd0YUdiTmNFZWxiSWNIYzFmZGFXYWZkRWVSZjJoY2EyZDloR2FaaHhoWWFTZlRiSGJWZEtlRWJGZkpkRWFDaDNlZ2hWZVFkbWNSZi9iWmRqZzFmY2FPZHhjMWY5aGJjd2gxYlplU2ZVY2tkZWRUZ2plMWU2ZVpkemNGYVZmYmRGZ2hmR2FaYUhiVWhSY2NmMGV4Z1JiZWRIYUJlV2VkZkFmOWFyYlVkaGdSZ3hlVGFrZ2Nnd2RHZGhjeGhxYUZkUmRJZkpjQWMzY0FkV2RXZVVjQWhIZ2JoMWFSZXhhUWVXYWhjS2dOYW5lQmZIaFBhbmNFY2RkSGRVYTBnWmRWZG5iUmR1aGRobmZOZnZkUmJtY2NjV2JHYWhlZ2Y5ZUFmMGROaGNiT2gwYXBoaGNUZkVmSmh5YllibmRCZjhmQWRXYUZiYmdjaHhjWmhNY0JiRmhoZEZkUGQwaDVlcGhkZUJmaGJ3YVFoWGJSZlJmU2JrZjVjMWFFZVhnTmJNYldnU2Z3ZTRmSGh5aGNlQmVGaEJlTWNIZFljMGRZZU9hZWFFYVZnYWNjYVhhbGJHZEdnUmJWYndhVGFsaEJjYWZPZkhicGRIYlpoRWhGZXVmU2ZtY1JoNWFTZHhmUmR4YkhhUmIxYU5jRWJRYklkOGJKZnljVmI5Y0VmQWhkYnpoRGJoZ0pjUmVkZFZmd2VGYVJkMWhjaGVnY2RGaHhkQ2FJZkdndGFxZ1FneGFSZ3loVGduZE1mUWhUY0VmMWhSZ1NoUmNWYU9mYWFYYlFiWWZKZUFla2U5Z0FibWFCaE9lZGNSaEZkemNUYUZiRmI0ZWNlRmdaYzBiRGQyYXRlYmNEaDFkdGRHYkVkM2FoYVRjVGUyYVJmcWdVZnhla2ZUaExnUWFKY1ZmZmFCaEphNmRSYjJoUmJCZ2Joa2NwZmtnZWRVY3NnY2FPZVJoTmJOYUhlMWhZYUNoT2R6Y29odmJJZnllcGJJZk5lRWVOZFFlR2ZDZmNkTGNVY3djWmZFZ0ZhbmZBYWNkRmN5YkVhaGNNY2liQmViZFBoRWY1aDdlUmJFZ1ZkTmRDZG1jTWJWZ1RmbWZsaDBmR2ZIY0JjQmVkZUZoRmFLYVRmbmFWY0RmTmZoY2dlRWNLZ2phNWdXYUliRWFjZWljQWJSZm9od2ZBZGxoZGF3YkJmMGZFZm5lSmFoYXhmWGVWZm5iZ2JDY1ZkeGhoZlhiUGdRYVlmd2RCYUdhWmNEY2JmV2dKY2hlRmFIZUVoZGNIZFVhMGJaYlZibmRSZXViZGJpZDVobWRTZWtkMGRXZ0Vja2Z4YzFnU2VoaEJmU2NSYUFldGR3ZlVjZ2RwaGhkTWhqaFFkbWhRZ0RnMGZhYUtia2NBaEpjUWF4YndjY2JXY1Jlb2FnZUpkRmZRZXBhUWNXZGxlUmREYkJkc2U3Z1VjaWVjZkZoSGRqZ1pod2FYZGlnQWVHZWFod2NrZithY2dVYVlkVGRlY0ZkTmFQZVpnR2FwZlRhR2FSY05kd2NYZVJkZ2hFZkVnaWVoYUhoZWdVZEVoNmhBZWliMGFxaFJhV2VzZ3diRGJRZTFoQmVNaDFjWmgwZWJlbmZaYnpjYmYwaFpjbmVGZmhmSmRNZWRhVWRvYVFhR2gwZ1FmV2NjaEFjNGZLZkpoamRGY29nRmVsZlZoamVXZEhmOGY2Y1RnRWMxZ1JhU2NSYlZmT2RhZVhlUWRZaGNjRWhGZTBoVWZVZG9lTGJkZVFoeGd6YUdlQmRrZnhlSWExZWdiTGNUYW5oaGFBZkdmRmJ0YkdmRWEzYWhoVGdUYjJnUmRxY1VheGdrYlRhY2NBY3RhWmVWYmxhMWg2Z1dnbWJRY1ZoSmZnYk1iM2JkZXpjUmZWY1pjUWZVYVJnWmJ4ZWxlV2VkY0dnNWMyZGNlMmg5Z0doWmR4Z1lnU2NUYkhmVmRLZldjRmZKZFpoQ2R5YlJlVWJQY1NiNWd5Z2RjbWdVaCtnY2RrZDVjemFFaEVneGdOYVVmVWhrY1ZjVGFtYWxjMGVHZkhiQWZQaGRiRWJ4YUtlR2VuZHRldWRNYWxnMWFIaGRhRmVwZ1doZGhBZTlhcmRVZWhkUmR4ZlJiaGNOZjRmVWUwaDloa2FhYWdoQWJaaERibmJCZ2ZlVmN5ZWxlVGdhaFZoVmZvZWFnMmQ1ZUtmWmNIZmxoTGVGZkhjRWRkZkhiVWMwYVpjVmZuaFJndWFOZTNjTmR5YlJlamNNYVlmYmVRYzFjaGVVYWhheGM0YlJnQWd0aHdkV2RrZEpndmJZZ21nWmZwYUZnSGdKYU9hY2N4ZkFjWmRUYlVkeGVKY1JoMGc1YmpjZGFGaEJoOGVhZjNmUmJSYVNoa2Y1YTFhRWhYZ05kTWdVaFhoaGF3ZFZlbmZRYVBnTGhWaElkSmZjZVJjTWJUaFpoa2MxZFJhWmFIZHRhRmhBYWpkbGh3Z0NjMWFsZ1diRWZuY3BoSGNaaEVmRmF1Y1NhbWdRYi9jU2d4ZTlic2NIZVVjOWJOZ0VlMWJZZDZlZGNWZ3hnemNiYjBlWmFuZUZhaGRKZE1hZGVVZW9hUWFVYmtnUmZkZ01kUWRoYkNhSWgyaEpnN2JhaFZoSmZ5aFViR2cwY09mVGJGZnhmSGRVY2plOWJPYWFlWGFRaFloY2hFYUZoMGFVZVVhcGdPaGRkUmZGYTdnQ2dsYUZlK2RiZFZkWmNpZkdjbmM1ZkJlQWZYY2hoS2NFYzNiQWRWYVRoMmg5YjNlVWMxaEFiVGFlY2dmc2NSYlhneGM1ZDZhVGN5Z2hjQmdaYVZkZGZrYlBoMGJzZktmYmd3YU1oZGNYaEFlOWZmYmVhR2c1ZStnUGQyZzliTmZlZGhiWmdBZFRlSGI5YUtlUWgxZ3RmZmdJaFhhQmVhZFFjbWc5aGljWmZtYmtoVWNjZ2tnNWh6Y0VkQmNvZU1lQWgwZGxhV2VUYW5nUmYwZ1ZlSGhCZWZoYWNrZjliS2FYYTJmTWRLYldoVWZ4aFJhZWhIaEJlV2JkaEFiOWFyZVVhaGNSZnhiUmNrYkVlOWFCZ3hlb2cyZ0plRmRNaFJkT2hYYkFkTGNXZFZhWWNTZ2Via2JkZWthUWFXZTVoS2RaYkhhbGJMYUhoRGgwZWRiR2UxYkFkWmJRZUdiRmc3ZVpiV2haYm1oU2RrZDBoV2hFZ2tmeGQxZVNnaGJCYVNjUmdBZHRld2JXZ2tmSmF2aFlkbWQ0YWxjRmdIZ2xmVGZjZjFjbGFNY1JnMWhFYkhlSGdFYkpmRGFkZEJhaGh3aFFhWGhSYlJjU2NrZzVkMWZFY1hoTmVNZ1VoWGVoYjRjRmdYZ1FnRWRkY2xjSmNZY2NnVmhnYU5iWmdsZ05iZWNjaG1lTmdmYU1neGhOZndmQ2QxZmxiV2ZFYm5icGdIYlpnRWRGZnVjU2htYlJiNWJRYjFnaGJ4Z0did2ZCYU5lRGgwYk5iaGJmY1dhTmc2ZVljMmF4aG5iRmFoZ0pnTWVkYVVhb2NRYlVia2FRZExnY2JGZHBlQ2diZDJkb2RxY2FmUmg5aHZkVGFqYllmUWJSYmtmMGhaZVFjQmNsYWthYWdYYVFiWWNjY0VhRmUwZlVhVWVwZE9iZGZSY0ZiemJUZ0ZoRmJ3aE1oMWZaZy9nRWZtYnNkZWZGYUdkOWhZYURiWGdoYUNhV2JXaDFibWdlYVJha2dUZmNnQWF0ZFpkVmZoaEpjNmRSZjJlUmRCZWJma2VwaGtoY2hRY2dkVWZlZGdiQWdkYkhneGRsZGNjZGRDaDlnL2RmYzBkVmhHZVpjeGZZZ1NnVGFIZlZlS2ZFZkZnSmVFZ0NnM2NCYmFlUWFtYWNjaGdaZW1mOGhKY2NjbGhoZm1iQmVWaDllWWdXZ0VmVWEvY1RjbWNsZjBoR2hIY0JhQmNkYUZkRmZLY1RnbmZVZ1JnY2cwZHhoWmJPYjNjQmZkZGFhUWI4Z2llVWNoZzVleGJGaFJncGMwZmVnVWU5YmthYWVsZ01oWmNFZzNlQWFMZVdoVmVZZVNhZWRrZGRma2hTY1NlMWVLYVlkbWdSZExnQWdtY1FnSWZEY2xnZ2hRZVdmbGI1aHVoZGJuYk5kdmRSZG1jY2hXZEVna2V4YzFkU2doY0JoU2JSaEFmTWZ6ZFdia2NsY3ljWWRpYU5ocGJIY25iSWVBZ2VjaGF4Zm1kVGNWaEZnSmRGZVVoNWRwZGRnQmVoZHdnUWRYZVJnUmJTZmtnNWI5ZVVobmROZEtiVGdIZGhjbWhRZDJmRWdjYWZnbGFzaFlkV2IwZlljVGdlZUZhTmhQZVpjR2JwZVRnR2JSZ05md2RDaDFjbGJXZ0doamFsYkhoYmIxYXhjdWJCY1djUmV6aFNlMWN4ZDRnRWZUY2RiTmhHYlZhWmEwY2JjbmRaZHpnYmEwZFpobmRGY2hoSmFNZWRjVWRKZ0VlR2FnZTFjWWZmYWlnVWdEZGZhM2NKYm1nZGRCZlJla2RXZjJlWWdEZFdiVWMxZFhhU2FVZUJmSGVaYlZjNGhZYWNjRWVGaDBiVWVVaHBkT2VkZVJiRmF6Z1RlRmdGZTRoY2dGYjRkZ2JSZHlkSWVCZkdmZ2U0ZEhmQWJtYjVkVGRVZm1mUmM4YVJjZ2h3ZkFhWmNRZXRjZmZWZ2xjUmF6ZVNjMGg1ZkJkYmRrYnBja2hlZlVlc2VVZmNoUmUwZWRkVGFSZWxkV2dkaEdnWWNpZU9ieWVZZVZnYWhXZmxoVGdYZjJhZGhLYURkVmFKaFNjSGNtYVZmSmdWZjJlOWZrZlpkaWFVZWRiZmhtYlJoemNFZkVieGFOZVViVWVrZFZjVGZtZ2xjMGVHZEhkQmRCZmRiRmFrZGVmQmFqZHhmQ2JmZ1RkTWZRZ2JlR2VoZFdhYWJRZTlkOWNSZXdlRmdpZFVheGFOYSthVWh3YnhhdGhaaG5ha2FaZUViM2dBZkxiV2dWZ1lkU2ZlZmtiZGJrZlFnV2Q1ZUtnWmRDZjBlRGJYaFNnSWMzaEhhVWYwYlpiVmJuZlJkdWdkaG5kTmR2YlJlbWJjZVdhR2QxZ2RiZmRTZ2hjQmVTZ1JiQWR0Y3djV2hrZUphdmVZYmpidGRnYUdmRmJoaE9hY2Z4YUJkTWVUZ1ZhRmNKYUZkVWI1ZXBhZmJGZ0JiK2hFZlNiWWVlaEhnZ2FFaGhhU2dDZ01iSmVYYnpnd2E1Y0FkSGVRaFNnYWh4ZlJkQmJQZHdkVmVIY01lUmN3YkJiWmhHZUlnSGNFZ0JhTWNyY0llVmZsY1doRWVuZHBhSGZaZUVhRmJ1YlNkbWJSYTViU2gxYjBlM2dIZFJiVmRkYUdhVWN0YnBoYmFpYkphOWVFZkFiZGIyZ0FoQmdKZktkY2gwYW9mQWZVZ2xha2hXZWNkQWE1ZU1lRWJDZU5lMWVlZHhlUmIwZFNnSGhNYUFkVGVGZUJlTWVTZ1VmRmNBZEZoamZVYk1hYWVFaGhoMGhDZG1kQmhPZmRiUmNGY3poVGRGY0ZjNGNjZUZlWmYwZkRjMmV0Z1NkRmZEZmdoQWhFaDNiQmdEYlRlM2JsZTNkVWMwYTBhZGZEYTBlcGFKYlJkaGJ0YTZoRWZ5YndlVGdJY1JjMWNrZEhiQmdsYkdnUGdrZjhlVmFUZTFlMGVmaEloaWNjY2xmT2ZpYUFoSWJaZjFmUmZMaFRhQ2U4ZVBkUWZoYjFhR2hBZW1ldGF3ZFFhbWQ5YmlhWmRtY2tkVWZjYWtiNWF6Z0VnRWF4ZE5lVWFVZmxhY2RDYkdjbGI4YkNnWGVCaGNmYWJWYUViZWZRZEFkcGVRZVlnMWF4YVljZWhDYUlhVGJJYUZnb2E1Y0hjQmZSZTViRWVsZ3NneGZBaEVmRWYyZExleGc1aFlnV2ZqYzVnUGJIZUFlUWZTY1pnMGRjaHFmQmJEZGxiS2NMZEhkRmNiaEhkWGZnY1JmSGNSZGxjUmNIZHlmZGMxYVhmSGVOZHZlUmNtY2NkV2NFaGtoeGQxZlNjaGRCY1NmUmhGZ1pjYWhXZ2tiSmZ2aFlnbWNaY3BnRmJIYUpoT2JjZHhlQmJNZUJkQmZkY0piSGNSY3BnbmNNZzBjeGE0YUZkVGJ3Y1lhR2FVZmRmOGdPZjNjTmZNY1VjWGVoYndhVmNuYVFlUGFhZjFkSWhVZWNmVWNZYlRoS2VoZFliYmhNZ1RjZ2VkZ0dmUmJ0Y2FiQ2ExZWxlV2hFYm5kcGFIZFpiRWZGZnVnU2FtaFJnNWJTZ3hnUmV4YkhnUmdVY1plVWhSZDhibmhZaENoUWEyY0lnZ2hjYXVoV2RGZ1ljSmhKZTBob2ROaFVoaGZCZURkT2VRZ2xiTWRMZ0NnNGRwZEpnMWRGZzZhUmczZW9nY2ZaY2thMWNSZVNjUmVWaE9mYWhYZFFoWWhjYkViRmEwZVVkVWFwYk9jZGVSZkZiN2ZHZkJia2Z4Y0ljMWdnZExiVGRuYXRkQ2JGY0dneGFHaEFhM2dGaGZhWmdXY1JncWhVZ3hja2ZUYWNoQWJ0Z1pjVmNoZEpjNmVSZzJoUmFCaGJha2dwaHNiTGdRZE5nZGdJYWhjTmVpY0RlQWNoZ0FmZGZIZ05jMmJZaDJkWmhLYVRmUmRZZ1NjVGFIYVZjS2hFZUZjSmFFaENiM2FCZ2FkUWNtYzlnaWJaZ21ha2VjY0pjZ2ZZYzZnUWQwY0lneWZFYkZnb2NIZ1RkbmNSZjBkQ2VIZWxhTmNYYWxhRmNLZFRnbmFVZFJnY2YwaHhoUmFlYUhiQmdXY2RlQWQ5Y3JoVWFoYVJiNWVFZWxic2J4ZUFlRWJFZ2JkS2YwYWNiQmZFZzJnMGdMZlNiVmc4YmVhVWFFYmRia2RRZ1dkNWZLY1poSGFsY0xoRmJIZkVmZGJIaFVlMGdaZlZhbmNRYjZiUGZqZW9lOGNiZ0dhY2NXZ0Via2J4YjFnU2RoZEJjU2VSZUFmdGJ3Y1dka2JKZHZkYWQzYzFlRGZGYkhkSmRPZ2NleGNCZE1oVGdWYkZmSmNGZFVlNWVwYVBhVmc1ZXdhU2VTYkFkWmNBZnhmMWE3ZFZkQ2NKZkVnQmNYZkZoNWJmZ0hjUWJQZGFiMWJJYlVhY2dVZ1liVGZlZkZiTmJQZlpkR2FwZVRnU2MxYVlna2JYaGdkc2RZZkVibmVKYXRhWmNFZ0ZhdWJTY21mUmY1ZlNjeGdSY3hjSGVSZjFoTmZHY1ZmWmQwYmJobmI0Z25oSmd3aDhjMGVHaEVhQWZKZU9nQWR0ZVpnSGJBYUJiT2FJaGxncGJmY2JneWR3aGpoUGZoYVFlNmhSYm1mTWFaZlJnVWFGYzdkU2NSYlZjT2dhYVhkUWVZZmNlRWVGYzBkVWZVZHBmT2JkZVJmRmd6ZVRiRmNrZHNnT2JCZThnbmFBZFJnUWJUYUJkR2hGaEdjRGduZGhkQ2ZSZ21naGRBZFVjeGRrZVRkY2dBZXRhWmVWZWhnSmQ2Y1JlMmhSZEJkYmVrY3Boa2VlYVVjTmhBaE9nVmNSYU9lUWcyY1lnWGRaZVhkaGIyYmJibWg5ZVdiYmJoYW9hNGFUYUhiVmRLZUVhRmJKaEVhQ2gzY0JhYWdRY21jOWhpaFplbWNrYlVhY2NraFlobmVXaEFhVWJlZVhjemZaZlViWGdYYnRnMGNCYlhnQmVSZ2ZiVmIxYWdmVGduZ1VmUmNjZTBkeGhSZWVkSGhCYldhZGhBYjljcmFVYmhmUmd4ZFJkaGNzZnNjR2Z3YVlnM2RaaENoeGdZYUJmMmZnaExmUmdGY1loQ2FjYTBmdGhPYlFnV2I1aEtiWmhIZmxmTGRGY0hoRWhkZUhlVWIwaFphVmJuaFJndWhkZmlkY2VuYURnemZRYzhhRWZrZHhoMWZTYWhmQmZTZlJoQWF0ZHdiV2ZrYkpkdmJZZG1oWmZnZERlMWVoZ09kY2d4YUJjTWRUY1ZkRmRKaEZnVWQ1ZnBiZGhCZGdhMmFEZWlmWmNSYlFmaGNnZjBlUWQzY01kZWNVY1dlVmN3Y0FmbmNwYU1mSmF4YzFoYWZOZUVlNGVhaGRiRmFNYUdhWmZIYmRhVGVGZEFhSmNyYkNkMWFnZkNjV2JqY01jVWNhZGdjMGE2ZFFmamFaYndjVWVCZFJlNGROZ3hlMWhOYkdmVmVaZjBnYmduaFphemhiYjBnWmJuZ0ZnaGRKZE1kSmgwZFJlRGFHZWdlMWZOYkphRGNZYkhlS2VUZ1pndWVlZEJlaGF5YVRhMmJNY1piUWRFZDBnWWZRZWhlNWNWZlFiM2RRZVlmY2NFZ0ZmMGVVYVVhcGRPZmRkUmNGYnpnVGNCY2NoM2hJZ2xmWmY4YUpmV2d0aFNlRmVIY0ZjR2VFYzNlaGZUZFRjMmJSZHFmVWJ4ZWtkVGZKZEVmTWJRY0JnUmh3Z29jQWRpZ2tlQWVKZHdmUWFnZFBmQmhrY1VnYmNCYTFnSmVCYlZjQWRGZGVhaWEwYTZoUGNDaEViRGJiYXhoOGJlZFpnbmFWZUtkRWZGY0piRWVDZDNhQmJhYVFlbWg5aGllWmhtZmthVWRjYmthNGRuZVdoQWNVYmVjWGN6YVpiVWhYYW5kbGEwZUJmWGZCZVJnZWZIaHRnS2dUYW5oVWhSY2NoMGV4Z1JmZWVIYkJjV2FkY0FlOWJyZlVlaGNSaHhiRWJsYnNleGVBYkViRWhiYUtoMGdJZlBlRWcyYjBhTGNTYlZob2c0ZWVha2ZkZWthUWZXaDVhS2RaZUhlbGdMZkZnSGdFY2RhSGJVZDBjWmJWZWlnQWdtY1BkeWhCYWhjT2FTZVlhRmJBaEVmeGZvZ1NnZ2RCZWVlYmdnZXRjd2FXYmtkSmV2ZFllbWFaZ3BoRmZIYkphT2NjYXhiQmRNYlRlVmZFaGRmWGFRZmNoNmRlaG1iY2V4YVZiV2R4Z1JlVmUwZzVkbGdDYWxjbGFNZ1VmWGhoY3djVmFuZVFhUGFhZTFmSWdVZGNhVWdZZVRhZWZCZ3BmUGdlZm5oZGVUZkNnUWNoY2FmQ2MxZWxmV2FFZ25mcGVIaFpiRWZGZXVnU2VtZVJhNWJTZHhmUWI0YkVhQmVCY25iR2RWZlpoMGFiZm5oWmd6ZmJhMGJaaG5kRmhoZUpkTWhmaEdoQWFRZlVia2FRaExkY2dGZHBjQ2ZiYjJjSmFtZmFjUmFSY3lkVGFpZkVhZWZIZ3doVWRZZkRhMGdFZzhhSWJEZU5mUWVKZ0VibGdsYVdmRWZaZ2tnZGRSYkZjemNUY0ZoRmY0Z2NoRmNaZTBnRGcyZnRnU2RGZkhiRmdHY0VmeWZ3ZGJjQmNqYmRka2hBaFZoeGZlZE1lVWhJZVhlRWVsYWNkb2FTY1NmZ2NWZVpnaGdoY3RhZWNSYmRkSWZXZXhmMGdkY1RoUmJsYVdhZGdHaDVlMmVjZTJkOWVHaFpheGFZYlNoVGdIZVZmS2dFY0Znb2ZRZlFlemNrZ0pnVGREYzBhbmNLZ3lkaGRkYlBnQWFvaDJhUWRraElnZWZCY0FidGhCYkhnQ2RnZDNlVGNIZ2dnVGdmZlZoMWZnYlRmbmJVZVJjY2MwYnhoUmRlZEhkQmRXYWRkQWM5aHJkVWJoaFJkeGdSaGhlTmY0Y0dha2c5ZzZoZGQxYU1lTmVDaDFob2JMYVdiVmdZYVNoZWdrYmRma2dRaFdhNWNLYVpjSGFsZ0xlRmNIZkVjZGdIZlVlMGdaYlZlbWJ0ZXVmZmhpaGNmbmNEZ3pkUWZZZWJjUWcxYWhhVWhoYUFiT2dXaFFldGFoYldjbGM1aHplWWFtZTRmZ2hGaEhnOWhPaFpld2FoZUZmUmZIZHRjSmFGZ1VoNWdwZGRlQmhoYXdkUWVYZ1JlUmZTY2tlNWcxY0VjWGFOZ01kVWRYY2hkd2NWY21nNGdQY0llbGhJZEthYmRFaFloQWhhaG5obGhQZFpmR2JwYVRoR2RSZE5jd2ZDZjFkbGNXZEVnbmhwYUhhWmhFYUZjdWdTYW1hUmY1ZFNhd2F0Y3hkRmhVZWtoRmRVZ0FnVmg2aEVlVGFkZ2djZmZVZVlkN2VDZHhnSmdkZWRkVmZZaE1mVWZrY3hjQ2hjYUZlZGJDYmZoSGNCY3ZmWWVEZzVmeWFUY25kTWFRZ1RoRWgxY1JhU2hSZFZmT2NhYlhlUWZZYmNnRWVGYjBmVWNVZXBkT2ZkZFFndGh6YkJkVmVGZm1nYmNWZFphbGZHaFVmRmJTY0ZnSGFGaEdiRWIzZWhhVGNUZTJmUmNxYVVleGJrZVRkY2dBZ3RiWmNWYmhkSmg2YVJhM2h0ZEJnWmFoZzRmc2hNZ0JoZ2FhYURnbGN3Y01iV2V4ZGtnS2dhZFdoNWNuaGNhM2NOZ2FiWmR4ZzVmYmFUZ0hiaGJLYUFmVWVSZk5nQWhsZXBoYWJRYm1kOWdpaFpjbWZrZlVnY2hrZDVkemFFaEVoeGROZlVjVWhrYVZkVGJtZmxjMGdHZUdmcGJCZWZiQWVVZENjQmJ5ZVlhZmdEZUFlMWZCZWFnSGFBaEtmYWRRYTloNmFVYWdhaGJ0YVJjbGJwaHhjV2VsZlJhT2JhYWxhTWZaaEVlM2FBYkxhV2FWZ1lnU2RlY2tlZGdraEVleWVzZGViTWNTZXNjRmJGYkNoVmFWZVZhQmI0Y0NhZmNIZFJidWFkaG5oTmJ2aFJjbWZjaFdmRWNrY3dhb2FRY3hmeGc0ZFJmQWd0Z3dhV2drY0pldmRZaG1kWmNwYUZiSGJvY0dhZmJVZ0FmZWZBZGdnVWZHZVFkUmVjaDVmTWZSZFliK2RCZ0RoTWRRYkhnZ2d0YzFoRGNIaE1jS2VCY0RjWWF6aEFiamUxYUFnSmNWZElmY2JlZkVnWmZJZ1VmbGdOZFBkWmNHYnBiVGNHZVJmTmZ3YkNkMWhsaFdjRWhpYXdnR2ROYmtiRWU2ZFNjbmJsZzVkUWd3Y0pia2dDZkFmNWFZZUdhVmdCaDBkTWZDaEllN2NKYWhkVmdwYWFnVmROZmNnWmRVY01mUWVXZlVnUWVhZmFlM2JCY0NjYmQyZUpobWRhaFJlUmR5aFRhbmRNZFFoVGJFZjBmRGNEZ0ViRWJiZ09iemZvZFliZWFHZ3RhMGhVYVVncGFPZmRiUmVGYnphVGVGZkZnNGJjZ0ZmWmQwYkRjMmhNZUdlWGZEYmdhVmZIY1FoY2JTZlhmM2FSZHFjVGRoaGtkRmJaZ1JoNWJLZFFkeGdKZDhoUmJ6aEJjSWZZYm1hQmZrZ2VkVWVzaFVjY2NSYTBhZGdUY1JmbGJXY2RoR2Q1ZzJiY2IyaGNoU2daYndnc2ZTZlJlR2FOZ2ZnQmFVY0ZkUmRDYjNhWmJhY0hjRGVzZHFmTGR6ZW9iYWVEYlFoOWhpZUJha2JWZk5jV2FraGtnZGRHaG1mbGhxY0JjbWg1ZUJkWmVVZ2RhRGRSaDNha2Q3aGNlMGN4ZVJjZWdIYkJiV2FkZ0FjOWRyYlVoaGVSZ3hoUmVoYk5nd2VCZXdlY2V0ZE9kVmgxZG1iVWNtZkVhZGFXZFVnc2hTZGJiRmRKZ3hjVWNuZXRlS2RZZG5ia2RmYUhkWGMwZjNiSGZVZzBnWmRWZG5lUmd1YmRmbmhOYnZoUmFtZmNmV2ZFZGtneGU5Z0hmaGdCaFBoUmZBZU5jbWRUZDFmZGE4YmRnMmNaY3ZmRmRDY3dmYWRPYjFha2NmaFFkeWM0ZklnQmdsY3hmZ2JkaEJiTmR3Y1NhU2VCZVJiVmdGZ0JjcmZFYVdnSmFhZVdoSGNGZzhiZmRIZFFjUGhhYTFnSWZVaGNkVWhZZVRjZWFGZE5kUGdaZUdmcGNUYkViVWVjaDRnUWFnYXBkWWhiaFRldGNVZWRma2hGZHpiU2FuZkpoc2FYYWdiZGZraEhhUmh0Z05oVGhWaDllNGZSY0hlWmF6ZmJkMGdaZ25iRmNoZkpoTWRkYVVib2ZRZVVja2NRYUxjZWVBYjRhS2hKYWpnRmVvZ0ZkbGhWYm1oVmZuZk1oTmdUZEVhVWNQZUhmVmYwZUhoT2RuYXBhbmNNZ1ZnVmJzYVVhVWFGZ09iZmJVYVZjemFVZ2tnOWJtYmNjRWRkY2ljQmhtZkpnU2NFZ25iRmVRZ0JhbWQxZUFkV2ZtYTFnbWJlZVJna2ZUYmNnQWR0ZlpmVmNoZEpiNmhSYTJlUmVCaGJna2dwYmthTGJRaE5lZGFJaGphY2dkZlRnUmhsZldmZGFHYjVmMmhjaDJkOWFHZ1pkeGNZYWJoVmcxaDlmS2hFZkZiSmNFZkNlM2VCY2FiUWNtZzlnaWhPYjJkQWNZZVdnRWQ1ZHplRWJFYXhnTmhVYlVha2VWZ1RjbWJsZjhhVWNIZTRoUmdKZGhoNGhlYUFoU2NGaEljSWF3Y2xkZmFQYVNmRWREYU5mVWhNYTRjVWVnYmxmeGZEYmhhMGZvaEFkUWhBYXdmSmJRY2RiQWFRZHplVWJGYUhjQWZjaFNkWmYwZGNmaWNGZUNjQWhKZk1iRGdBYkVoV2JuZUVoVmVTZ1VlUWVaY0RmVmc1aHVlZGVuZE5ldmJSZm1nY2RXY0Vma2J4ZzFiU2RoZkFkQWhBZFZnOGdsYkNoQWV4ZHZiYWhrZ3hkcGVGZ0hmSmhPZ2NmeGNCZk1lVGJWYUZmSmRGaFVjNWRwZ2RlRWZ3ZDRnQ2JDZGRjZmZOYVFmOWNoZ0NhWGhOYlJlVGJIZmdia2RXZUFjdGZPYmZkMGVvY1ViZGIwZUFiNWFlZ0ZiTmZQZ1poR2ZwZ1RiR2RSZk5ld2hDYjFjbGNXZUVjbmNvZFRhTGVBZGdlOWJSZEJoc2g0ZVdod2dSY3hhQWJBZkJjTmVUYVZiZ2hMYkxlMmJaaGphYmQwZ0JiaGVQZ0JkSmFNZmRkVWRvY1FiVWFrZVFnTGRjYkZkcGhDZGJiMmdKZW1kUGJWY3djN2RIY1hnMWV2ZkRlVmI1YkRoU2ZRZmhmVGRhZFNjQWFXY0Rmd2JCY25lUWIwZHBkSWRjaHpidGd6ZVRkRmFGZzRiY2hGZFplMGNEZTJidGFTZkZmSGdGY0diRWR5ZHdjYmVCZmpiZGRrYkxoRmNnZENnWmNnaHRjRWZTZ3hoSWR1Y1NhUmRzY0FlZmgxZHhnT2FlZVVic2VVZ2NkUmMwZmRjVGRSZmxlV2FkYkdhNWgyZWVlbmJSZXNoWmF4ZFljU2ZUYUhkVmJLZEVnRmFKYkVmQ2h5YTFmVGJUZGtnVmZpYlphbWRrZFVhY2NraDVhemdFZ0VleGdOZ1diUWZFZGJjSGdqYXNoN2dUZ0RiOGVWY0xhUWZFY1BmUWJEZUphRGZOYWdoMGNGZFBnU2hJZmloUGFFYzRibGRVYWdlbGV4ZkRmaGcwYm9kQWhRZ0Fod2FKY1FoZGVBZ1FlemdVY0ZmSGRnZElhU2haYzBhY2VpZEZkQ2NBYUplTWFEZEFmRWRXZG5mRWdWZFNiVWNRaFpkRGJWZDVldWJkZ25iTmZ2YVJobWhjaFdlRWRrZnhkMWhTZ2hmQWJBY0FmVmM4Y2xoQ2hBZXhmdmJOZWloNGhnY1JiM2N3aHhhTWNnaFJjVWZUZFVkOWFKY1FkVWNBZ1dnTmJRYnhjb2RhZTNoUmVSZVNha2g1ZDFnRWhYaE5iTWhVYlhjaGV3YlZnbmJRZFBiZGRGYkloVmFZZFdod2FUY2ViRmNOYlBlWmdHZHBnVGhHY1JjTmh3ZUNjMWZsZldmRWhtY0JiSGhNY0Fna2FuZkdiV2hvZ0dmQ2RnY0JocGJIZFFhRmJOY1RoVmFnZkxhTGUyaEplcmhSZFVmWmRuYUZhaGJKYU1iZGRVZm9nUWJVZWtlUWNMZmNiRmZwZENiY2VHZUplbmZlYkRiNWV5ZlRlbmhNZlFmVGdFYzFkUmZTYVJoVmFPYWFlWGFRZ1lnY2VGZnRhMGNCZ1FoSWJIZkphaGM4ZE1kRGRVZUplcWJjYkVjaGUwZVdmMmFVZnRjVmVXYkpkVWNPYlhhaGRUZVRmMmVSY3FnVWd4YWtmVGNjYUFidGRaZFZmaGZKYzZlV2FHYlJhQWFmZW1oQmhrZmVoVWVzYVVmY2VSYzBiZGZUY1JhbGdXZWRlR2E1ZDJhY2QzYlZkR2RNYTFkNWRiZkhhM2FzaDFkVWRVZUZiV2VDYzJheGdhZ0ZjbWhFZmRjSmQzZG9oR2dXZUVkNWV6Y0VmRWR4Yk5lVWZVZ2tiVmVUZm1jbGIwaEdiSGFCYUJjYWUxZkZiTGZYZDFlOGZSY2NnMGR4aFJkZWdIZkJnV2hkZUFlOWJyZVVhaGRSZHhhUmJnZWxkNGFCaHdjY2N0ZE9hVmIxZG1lVWZtaEVkZGZXYlVkZ2NTY0xka2NrZmJlQWhIYzllY2NUaG5mbGZMYUZiSGJFZmRhSGNVZjBkWmZWZm5mUmR1ZmRmbmFOYnZjV2VXZmNoWGdBaG1jWmExZFNjaGRCZVNkUmhBZXRid2JXY2tkSmR2ZVlnbWNaYXBnRmJHZ2hiT2FKZzFkZ2ZGZEhhbGE4YzJhVmFGaDliL2NkZUFoUmJ3YkZhWGNvZHVkQ2IxYzliamRPaDNnTmRNZVVhWGhoYXdmVmFuY1FjUGVhZTFlSWFVYmNmVWVZZ1RjWmUxaE5oT2NkaFVmQmJUZ0dnUmJOZXdkQ2IxZmxjV2ZFZm5ncGRIYlpjRWdGaHViU2JuYzVkNWRIZTFmd2I0Z1RlaGdNZHlmV2RFZVpia2FiY21maGR6Z09iMGJnaFlkVmd3aEpoY2hiZm1mQWRRYVVha2FRZUxkY2FGaHBnQ2FiYTJnSmdtYk5lQmIxZCthWmdIYU1kUWNUZ0VjMWRSYVNjUmdWYU9kYWhYZFFjUWhPZEVlOGVrY0Fhd2ZVZGFmT2FrZFVkcWdIZEJiUmUyY1BkQmFNaG5mWGhCYThlYWFWZVRoOWdHZURmbmdnZGJoUWRUZFFkNGFIZUVhMWhjY0poRmZJY0pjRWR4Y3doMmFFYjJnUmhjYWJhZ2R3YXhhTmZ3aGhlQWJPYUZmSmFUY1RmUmZFZENlZmZXYzRndGhXZFdoOWFHZFpheGVZZlNjVGFIZlZnS2hFZkZoSmhFZENkeWNJYWZhRmJqY29kd2RLaEdnbGRBYk9lZ2djYmdkSGJqY01oTWhSZlZiRWVWaFVkbWZrZmdhRmFnZjhlQWRZYkVkbGdnYlRmbmdVaFJmY2QwZHhhUmRlY0hoQmJXZWRmQWQ5Y3JjVWJoZ1JndWZSaGhhSmRvZGVjVWI5YWthYWJsZU1kWmFFaDNkQWFMYVdjVmRZaFNmZWdrYmRna2hXZTJjNGNlaExjRGJBZ1llR2JnZTVjY2dDYlZkVWFaZ1NkSGJRYTZiZWVBaHdndWdVYm5hOGE4ZkVha2F4aDFmU2ZoZ0JmU2VSZEFldGZ3ZFdma2FKY3ZiWWJtZ1pmMmNGY0hoTmVmaFdjUmFCYU1mVGdWYkZiSmNGaFVkNWFwZWRiQmdoaHdkUWVYZ1JlUmZVYkVlNGNoZVdmVGVvYmZnWGF3ZmNjeGRSZFdmWWhQY2RlMWVKZ0FjZmh6aGxoU2dhaDBjRmFsZVpjR2RwY1RkR2VSYk5ld2JDYTFibGVXYUVhbmNwZkhjWmhFZEZjeGdTZ21mVmVwY1llUmVSY3hiSGVSaDFnTmFHZFZjWmgwZGJjbmdaZ3pmYmEwYVpnbmJEYUJhSWFZZlBkUWZOaERkWGJEY3RiS2NZZjBmaGZDaGNhV2NJZnllWmYyZHNkemJYZVdhRWc2Y1RjRWIxYVJlU2VSaFZoT2FhYVhoUWFZY2NnRWNGaDBhVWhVZHBkUmFkZlJoQmNpaFphbGJGaDRnY2hGYVphMGFEZzJidGZTaEZnSGhGZ0diRWgzZWhlVGFWZVdiUWIrZUdlMWNCYUFnZmduZVFlWWNSY3doUmE2aFdkMmhRY1ZjWWFEZFVhbGZhZ0ZmMGMrYmNoUmIwYmRiVGZSZ2xhV2JkZkdjNWcyYWNlMmQ5YUdnWmN4Y1lkTmJUaEhmUmNhZ09jbGZKYUVjQ2EzYUJnYWZRYW1nOWRpaFplbWRrYVVnY2VrZjVmemJDYWthd2NaY0djUWhCZ0dnUWFCYVliMWhDY1djWmFCZGFnbGhFZGVlUWFBZnBnUWJZZmxlcGY3YmVlSGdCZVdiZGJBZDlicmFVY2hnUmZ4Z1JlaGJOZDRhVWUwZDlkN2JhZGxnSWVJZU9hWGhBYUxiV2JWZFllU2NlZmtmZGdrYlFlV2Q1YUthWmRIZGxoTGdEZG5kRmFKYVZkUWZSZEtnV2RBZXNhdmZaZG1lTmR2Z1dobWFkZ0NnSGREYU1jMGNXaGdjQmNKaGJiZ2Z0ZndiV2JrYkphdmRZZm1iWmVwZEZiSGRJY1RhZWFoY3hobWRUY1ZlRmVKZEZoVWg1Z3BmZGdCYWhkd2RRZlhnd2daZ1JoQmc0ZG5kWGdpZWNmRGdCYVNkRWJnaEViM2RwZUFkT2NWaElnSmFjZVFkQmdHaE5haGVBZWJmTGNTZFVjZGJHZ1Joc2hraEFobGhrYU5lT2FIZXBoSGRaYUVlRmZ1ZlNibWVSaDVlU2h4ZFJheGRIZlVoOGRJaFRoUWRNYW1lSWZIYlpkN2RSYVVmWmNuYkZhaGFKYU1mZGdVZm9kUWRVYmtjUWhMZGNoRmdwZ0NiWmh6YllndWNJZkVjZGQ4aE1kVGNJYkFjWGZFYTBmTmNWaEJhVWZhaFpnd2h0Y1pkWWRGY0ZjOWNYZFdlQmdPZ2RiUmhGZ3pjVGNGZ0ZlNGRjZUZjWmgwZ0RmMmd0YVNiRmVIYWtoU2hXZHpmRWZBZ1FiUmRzY3JjUWJnZjhkVGdMaEJjWmJaYkFkaGF3YkZlQmduZFZnWGhaZTBkWmNPYmViVWZzaFViY2ZSZzBhZGFUZ1JmbGFXZmRjR2E1ZjJnY2EyZDlmT2FNYjFjNWFiY0hiM2VzZzFjVWRVYkZjV2JDZ3ljeGZIYlFhamZ0ZXNnR2JTY2dkSGNZZEVmZGMvZE9ja2h4Z05kVWdVYmthVmNUYm1hbGEwYkdkSGNCZkJkZGJGZUZkS2ZSaGlhRmJaYk9oaGQ5ZmZmQmV6Y0ZnQ2ZiYUFlOGYzZlRneGVRY2xoU2dHZ3dlNWFSZTFiZGR0Y1pibmVrYlpjRWgzY0FhTGRXYVZiWWVTZmVoa2VkZmtnUWJXYjVlS2NaZUNmMGZEYlhmU2hJZDNoSGRVZTBkWmNWaG5jUmJ1Z2RlbmROY3ZkUmhtY2NnV2VHZDFhZGZmYVNhaGNCaFNoUmNBY3Rkd2VXaGtiSmd2ZFljamV0YmdoR2hGZGhmT2djY3hmQmVNYlRoVmNGaEpnRmVVYzVkcGVmY0ZmQmcrZkViU2ZZZmVmSGFnaEVlaGZTZENhTWZKaFhhemRrYythRWVuZ1FlU2JhYnhjUmNCZlBid2dWZUhoTWNSZndhQmRaZEdkSWhIYkVoQmRNZHJnSWFWY2xoV2FFYW5jcGJIZlpiRWdGZXVlU2NtZlJlNWRTZjBhWWcwZFNlVWJnZmZnVmIxZlpiOGZSZEhoWmR6aGJmMGhaZG5kRmhoZkpjTWhkZVVhb2NRYVVja2hRYkxmZWZBZzRoS2ZKZWpoRmFvZEZobGhWYmljWGRuZE1hV2hVaFVoMGJGZ1JjMmVvY1BoZWRXZVFnUmRmaEdmdGQwZlVnVWJwYU9iZGhSZkZiemRUY0ZlRmI0YWNlRmJaYjBhRGUyZk1mR2hYY0RmZ2JWaEhmUWVjZlNiWGZuY0phcWhWYVFnUWFUZ0phQWRVYm1jRmJ3aE5ic2ZUYW1iaGFyZGJoa2hwZGtkZWRVZ3NlVWZjZlJiMGVkZFRmUmdsY1dkZGZHZDVlK2dKaHljY2dQYk5jQmhoZHRkRGRXYVpkWWFFZUZjUmNaYUNkeWRSZVVlUGdTZTVieGNkZ0doQWVZZldjRWE1YXpkRWNFYXhjTmFVY1Via2hWYlRjbWVsYjBoR2ZIYUJjQmRmZ0FoVWZDYkJkeWNZZ2ZoRGFBZTFiRmhZaEhkQmdRYmFoUWQ4ZS9kWGhHZ3Njd2hVYmdmdGh4Y1hmMmdWZmthYWZsaE1kWmNFZDNlQWVMZVdoVmNZZFNoZWhrY2Rja2VRZFRnb2VDY0xjU2FwZmhnRmhIYUVlZGRIZlVmMGFaY1ZibmVSZnVkZGZuaE5kdmNUYTNmd2U4YkVja2J4YjFiU2hoaEJiU2VSaEFkdGh3Y1dlaGM5ZW1jYmVrYXhlcGZGZUhhSmRPY2NneGRCZk1kVGJWZkZkSmJIYlFjWmVuYUpoRWZvZS9jRmFUZnNiRmNFZHhhNGN3YkhneWZzYkRhQWYzYmhodGdWY2phSmZhZUpnUmhGY0FnT2JBZGxmZGVlaEZic2RiZGJoV2ZvYkloTWh4Yk5od2FDZzFjbGhXYUVmbmJwYkhmWmNFY0ZjdWdTZGphWWM4YUhjMGVFZ2pjVWJ4ZTFjRmdNYjFiWmQwZWJjbmhaZ3plYmcwYlphbmFGZmhjSmFNaGRmVWRvY1FhV2RoY0JlRGJPYlFlbGNNZEVlQ2ZOaDJhZWVSZVFnTWFVYzNkTmVFYVFkamFJZVFhV2NRZFZiSGZaY1ZnNGRZZ2NiRWFGYzBjVWZVZnBhT2JkYlJhRmN6YlRoRmJGYzRnY2FGZDRmZ2hSZHlmSWNCZ0dnZ2Q0YkhmQWdtZjVmVGdNYlhhbGNxYkJoeGVkaHNnTWZSaHBnUGJYYXhnNWZRZVJnMmhSYUJnYmhraHBna2ZlZFVnc2JVYmNkUmQwYmRlVGVSaGxhZWNJZ0NnWWQvZ0lkR2RFZzViSmdnZVVnQWZUaEFhdGhYYUVnQWFaYktlZGVEZkZoSmJVZkdkWmJ1ZVRhR2FrY1VhY2NrZDVmemFFZkVoeGFOY1VjVWFrZFZmVGhtZmxlMGJFYkNhUWFKYlBiUWJKaEVhTWdUZlFhRmRhYjBkd2Z2aFpoWGdBZ0NnZWduZkFjcWJSY2dleGE0ZFNnamFsYzRjVWQwZDlja2ZhZWxhTWNaY0VnM2NBYkxkV2FWaFlhU2dlZWhnTWVzZENiRGExYWdnWmNIZGxiTGVGYkhmRWJkY0hkVWIwZ1phVmRuY1JidWVmYjJnaGNGZ1JibWRjZ1dhRWFrYXhlMWNTZGhkQmJTZVJkRmJaYzVjVmFtaGhjdmZZYW1jWmJwZkZjSGRKZ09nY2V4Z0JlTWZSZ1JlbGRIZlJlUmV3Y21jSWhGZ2Nja2dHZENlUWhVZ1JmQWVBZDZhUmFYaE5lUmVVaFRhNGhsZ0doRGdkZ2JmSWNoYzFkYWNjaFVlNGhhZmVoQWFoZGxkWmJHaHBlVGNHYlJlTmh3YkNjMWZsYldmRWhuZHBhSGdOaGdjUWY2ZkhoemNZZTNjU2N4ZnhlYmhIaFJkMWVOaEdjVmVaYjBiYmFuY1poemhiYjBmWmRuZkZhaGJKZUVhSWFRZ0pkWmRBYlVjcGUwZE1lVWFwZlNhYmczYTlobWRmaHdoRmVuZ1hlV2hZZ1FhU2RrZzBhUGVIZlZmMGZIZE9obmZwZ25mTWhWZkZka2FXZEViWmVrZmRkUmNGYXplVGFGYkZoNGJjYkZlWmYwY0RhMmV0ZFNjRmJIY0ZnT2ZSY3pjQWNhZEhkR2dvZ1ZoRWhnYWdnRmJjYkJlWmdaZ1FoQWNkZXZnVmZIYUZjQmVhZ0Vob2U2ZUxmUWFOY2RmSWhoYk5kaWREYkFkaGVBYmZlV2RKZmNoY2cyZzlnR2RaaHhjWWFTYVRhSGFWaEtlRWhGaEpkRWdDZjNhQmJTYUZnaWdjYnJmTmVXZWRicmRNZzFhMWdoZEVkRmRGYk5mUmExZXdmQWdYZ1hoeGQwY0hmbmVBYmZmSWhCY2tiRGFIYVhjdGN1YU1ibGE5YkRoY2hYZ3hkOGJkY0FiOWJyZVVoaGRSZnhmUmNoY05nNGFVYjBiOWVrZ2FibGJNZ1JmUmR6ZmhkQ2JDZGxnaGV0YU9iMWdOZThoUWVYZE5jS2FjYm1heGhlZkJnMmFRaGRiR2IwYjFoSGJBaGpid2JuY0phWGEwZ1FkQmgzaE1oT2ZHYzBkQmVmaFNiaGFCZ1NlUmRBZ3Rid2ZXaGtoSmd2YllobWNaZnBmRmJIZEljYWFPYTFma2JmZVpjMWFGZkpoRmJVYTVocGhkZ0JlaGF3YlFlWGRSZlJnU2JrZWRldWRPZjNlTmJNYlVnWGhoYndmVmJuY1FiUGZhZjFhSmhKYmVoRWNvZTVjZWdGYk5lUGhaZEdlcGRUYUdkUmhOZXdhQ2UxYkVkZWVIaENlb2VWZEtneGhVYWhlSGNqaDBocGdEaGhjb2RpY1ZjVmJRZ0xoVGFTYVFkOWZLY1RoNGJuZ2JoMWZ0ZW5kWGNoZ3djY2dKZXdiVmNFYkhiUmJCZ1NnSWZCYTlmTWZQZUNib2V2Y0xiMGdBZWdnVGRtYTRmUWhDZ2hjZ2FmY0Nha2RFaEhlSmVqaG9kWWhlYUJhVmg5ZlVkUmNGYmtkZGhSYUZmemhUZkZhRmY0ZWNmRmRaZjBhRGEyZHRoU2VSZWpkUWRTZlJkaWdvaGRoVGUyZnhjQWhVZnhma2RUZ2NhQWZ0aFphVmdoZUphNmNSZjJmUmNCaGJoa2hwZXNiTGNVY3NjUmFiZUJhMGNMZ1dnUmRCZmFhWGJtYjVnMmNjaDJlOWVHYlpieGdZY1NlVGFIZVZmS2hFY0ZkSmhFY1hnM2JCaEVoWGcyZTlkMmVmZWtmTWFVZ2Noa2g1Y3piRWVFY3hmTmNVZVVja2FWZFRibWZsZDBlR2VIaEJoQmZhZzFkRmJDZFJlaWdGYlpjT2hoZDloZmhCZXpjRmVHY1plQWE5ZTJiVWFraEFiNWREZDBnQmMyZExnQWU1YndmY2JsZk1oSGFEY1hnQWZEZkRjVmRZaGZlZWhsYU5kOGNTZEdiZGhHZFRibmRsZkxlRmdIY0VnZGNIZ1VmMGdaZ1ZhbmdSZ3VnZGhuY05mdmZSYW1iY2FXZ0Vna2dRZmhnQWdsYWthQmZTZ25nUWh4ZVNkMWNSaHZjZmYyY1poNWNIZ1hlNWhrZWNoeGZCZU1nVGFWZkZhSmdGZlVmNWZwY2RoQmFoZXdjUWVYZVJlUmJTZWtiNWgxZ0dhU2hjZkVjR2JDYXRmK2FLYlRiVWFjYmVkVmdJY0pkY2dWZ1liYWFkZEhjbGJQZVpoR2NwYVRiR2ZSY05od2ZDZDFhbGhXZ0VlbmNwZ0hmWmFFZEZmdWRTZ21hUmV4ZUhhMWh3ZzRjVGhoZk1heWZXYUVhSmVzYWJobWF0YXplZmQwZTlidWdQZEJnSmhNYWRlVWZvaFFkVWVrZFFoTGdjYUZocGFDZ2JiMmdKZW1nYWRSZVJnb2RUZGlnY2JRY1VobGRCYVJhV2NnZWRha2FhZFhhUWNZY2NhRWNGZDBlVWdVZHBnT2FkZVJoRmd6YVRmRmJGYzRlY2NFZ2xoMGVCYjJkTWVHZEZnSGV4Y2JiRWEyaHRjQmdSY21haGFBY1VieGhrYlRjY2VBaHRmWmJWY2hiSmY2ZFJmMmZSYUJnYmdrZHBna2JlZVVmc2FVZGVkVWVsYVZiQmRFaHBjWWhDaHlhOWZtZFlkMmc5Z2JnVGJSZllhU2RUY0hnVmdLYUVkRmhKY0ViQ2MzZkJjYWRRaG1kOWhpZFpibWhrZFVlY2hrYTVkemRCYWxkbGNZZ1FmbGZ3ZVZjU2RHYmxlOGZFZENlUWFKZlBkUWRKaEVkTWdUZ1FmQ2ZZY1VkeGNQZ1pibmVBYUNnZmJRZThmM2JVZWhjd2hsZkRmbGFvZnJhWGJUaEFjbGFmY2tnc2daaERoMmZ3YUxmVWFVZWNjRWNlaGtjcGNrZ0ZiV2ZkZkRjYmZYaEJoSGRQY25jRWJkZEhkVWgwZVphVmZuZ1JkdWhkYm5mTmh2Z1JkbWJjaFdhRWZrZXhoMWhTZGhiZ2RHZURiRWJJZGplVmZEYjBkdWZjZjNjQmJwZUNoWGVKZkdhSmUxaGdiRmVIaGxmOGMyZVZlRmZwYnhjZGZBZVpmdWhRaFNiQmJZZVNoa2RoaDFoQmIyZlpnWmJRZG1hMWc1YldhbGI0aFBmYWcxZkljVWRjaFVnWWRUZmVnRmFOY1BmWmNHZXBnVGdHY1JhTmJ3ZENoMWFsY2VhUmdqZEliT2NOZTBnOGJSZ0NjM2RkYnJmU2R3ZWxheGFEaFJjUmZCZE1jMWZaZTBkYmFuYVpjemZiZzBhWmduaEZmaGZKaE1mZGhVZG9lUWNVZ2tkUWVMZWNiRmhJYldnSmJ5ZXNhMWRaYjJmc2Z6aFdnbWhzYVFlVWRVZTFmQmZRZEJneGJrYmFoWGhRYllmY2hFZEZoMGRVZ1VkcGZPZmRjUmZGZXpkVGZGZEZlNGFjZEVoeGgwaFdlMmV0Y01mQ2JYYkZoWGVCYVZoSmVUY1RnMmJSZXFhVWF4Z2thVGRjYkFkdGRaZVZnaGNKYTZmUmcyaFJkQmJjYlVicGVzZGNoUmc4Y1VoZmFBY0FhZGNYZkFmOWNmaGVmRWVSYjJlY2MyYzljR2JaYnhhWWVTZFRmSGNWZUtmRWRGZEpmRWFDYTNjQmhhZFFobWI5ZnFjTWRpYkZhZGJJZVVhQWFNZ1VnVmd4YWRoVWJWZVFjL2JUZm1lbGQwYkdmSGFCYUJhZGRGYkZmS2NUYm5hVWFSYmNiMGF4aFJmZWdIYUJlV2hkZUFiOWg5YlJnd2FGZ2loVWV4Yk5lK2hVYTBhZGVzZVBiaGJ0ZFFnUWFIZTVoMGFHZ0VmY2dFaGVlbGJsYTZnUWFUZXBlRGNaYkNnVmNMZkhkQ2FWY1ZmVmJCZTRhWGFLY1RmVmY5YVphSGJOZnpoV2htaGNmZWdBYjFncGExYlJneGZBZUdnVGJRaEpjNWhVZDBhNWRGZllibWRaYXBmRmNIaEpkT2hjZHhmQmhNaFRlVmJGZUpmRmZVaDVjcGRkYkJhaGV3ZlNlU2hBYlpmQWd4ZzFjN2NiZGphSmJkZ1JkM2NoaHRhZmNIaFFoUGFhZjFoSWRVaGNoVWhZZlRkZWVGYU5kUGJaZkdncGNUZUdoUmNOZndjQ2IxYmxkV2VCZEdhOWJTYmRlMWJSYnVlVGFHYVJieGRRYjBlQWE1ZFZiRWM1YURiWmhoaGRnbmNmZEhhWmR0ZGNoVWFZZXpnSGN4ZEloUWRkZlVnSmJFZ0dkZ2YxZVljZmFpZ1VkRGdlYjNhcGZtZWRkUWRoaHljUmNtYklhR2ZUYUVmQmRSYUhoUmN4Y0hnWWhIZjBhVWNXYWthRmIwaFViVWZwYk9jZGhSYUZjemNUaEZhRmc0ZWNhRmNaaDBnRGQyZHRjU2FGZkhka2RTYldoemNFYUFhUWFSY3NocmZRY0Fic2dUZWJlUWZ0ZVJkQWFsZG9oemVGZkdkb2QrZ0xjMWc1ZzhoZWVWZFViS2JjYlVia2NVZFRlUmM5ZFdmWWFuYnRjamhZYkhlcGhQZmFhemZ3aFNjVGdIYlZlS2FFZ0ZiSmJFY0NmM2RCZWFjUWFtZTlmaWhaZW1ma2dVY2Nka2Y1YTdkUmNBZFFkRWhBYmtlZGFxZURhM2ExYXNiR2NHZDFoQmhaZEZkaGVEZlpiSGFVYVJmY2MwY3hiUmdlZ0hjQmdXZ2RnQWI5YnJhVWVoZFJoeGVSZmhnTmJpYVViMGhkY3NoUGZoYnRiUWNRZUhiNWIwZUdnRWhZY0NnZWhsZnBnT2FRZFdmNWJLY1piSGhsZExmRmRIaEVlZGNIYVViMGFaaFZnbmJSY3VlZGVuZE5kdmRSZ21nY2dBZ0JlMWNsYW1mWGd4ZUJjVWVSZ0FjTmQ0YkRiZ2NvZ21lTWFXY2diV2JWZFdoSmFlZmNid2I1aFNhVGJRZlZlQWdGaFJoSmhwaGZoRWF3aDRnQ2VDZWRiZmdOaFFiOWRrYkJiM2VOaFFkVGNYZWhiNGRSaDJkSWhQZFphbGFKaEFkZWdFYThjYWhjYVZhOWhsYlpoR2RwYVRoR2dSZU5hd2VDYzFkbGZXZkVnbmFwYUhiWmFFY0ZodWJTaG1iUmM1ZFFkMGhBZTVlVmFFZzViRGhaZGhkZGZsZmViSGhaZHVkUmJVY1plbmFGYmhiSmZNZ2RmVWhvY1FkVWVrYVFjTGJjY0ZicGNDY2JkMmRKaG1mYWFSYlJmeWJXZEdjWWNGaFhkMWRoZlJoVGh4aFZiR2JZZ1NhQmRRY09mUmVKYTZnTGdnYXRjZmJZY3hkRmh0Y1VhbGVFaHNnZWVWYllkb2JEZzJlTWFHYVhiRGFnYVZnSGJRZmNiU2dYZ0hkWmFxYlRod2hVZFRhZWVCZnBmUGFWY2hoOWY2YUVnMmExYkloWmMwZ05kb2RVZDBoc2JVY2NnUmcwYmRmVGFSaGxmV2dkYUdjNWYyYmNkMmY5ZEdjWmJ4Z1ljU2FUZEhnMGFlZ1dhQmFzZFhiQmVRYThhYmhVY1hlMWJpZGVoMGZNYVVlY2NrZjVhemRFY0VjeGNOZlVhVWVrY1ZhVGRtZWxmMGdHZ0hoQmVCZGRoRmhGYktlVGdtZ01oRWhaZGxjOWVFaGVlSGFaYVdiZmdBYWNiL2VHY2xhMGVpZ1NlR2R3ZjVkUWVGZjFla2NkZ0VnMGNaZlJjM2JrYkxlQmRWZFlmYWVMY2doOGZ0Y0VibWZBZTFmSmdXYTFkVGdGYkdlMGdCaEhmVWhVZkljUWZIaFJoamdkYmlmZGZtYlRhMmI0Z2ZoSGFtY1phMWhTY2hoQmhTZlJjQWJ0ZndjV2VrZkpodmVZZG1jWmhwZ0ZoSGFKZU9lY2V4Z0JnRWFHZlJja2VBZVJoa2ZBZVdmTmhRaHhib2FRY1dhbGVSaFFjaGZvZzljV2hDYkJiQ2hMZWpjbGhrZFRibmNRZlJjZGJWZkpiQWhlYUVmWWRWZ2ViRWVWZGFmY2dYZmxkR2dFYUJocGI4Y0lkVmFsYldjRWVuZnBnSGVaZ0VkRmd1YVNmbWdSYzVnU2h4ZFJheGhTYVZlVWRFaFNnbmZ4YzBoYmJuYVpjemhiZDBmWmNuYUZlaGNKZ01lZGhVZ29hWmhTZVdiNGVMZWNlRmdwYUNiYmMyZUpibWNhYVJkUmN5ZUVhM2dvZWNiWmJrYjFlUmdTYVJiVmRPY2FnWGhRaFljY2RFZEZmOGdHZ1VoUWRlZUpiMWE0ZG5oQWJ3ZVVhaGVJYUJmTmE2YVhoQ2ZNaGJhVWdpYVVmcWdWZGpiNGZIZFRjM2VsY3FnR2V4Y2RkRGNJZ2tiUWdOZEdnVWhZY2pjRmZ5ZUZnUGJQYVFjSWJ0YVBjeGU5YlllY2dRZUFmZGRDZDBod2ZZYk5nemRvYy9jUGNDZ0ZhR2diYTBmSWNlYlRhQ2hkZkRlRWRBYmxhdWFDZTNoQmhhZVFjbWc5aGliWmhtaGtnVWJjaGtkNWV6ZFFmZ2JrZlpmQmNCZHRnYmRUZm1lRmZlaEdoSGhCZkJlZGFGZUZiS2VUZm5hVWdSZmNhMGF4ZlJiZWhIY0JnZWhJZUFnOWZ1Y1RmeGFSZ25oVWRoZ3BnMGVlZVVnOWdrZGFlbGdNZVpkRWMzZEFmTGNXZ1ZjWWZTYWVla2JkY2tmRmNXYTVoVWJlZ1hjbGhmYURkRmVzYWRlSGFVZjBhWmhWaG5nUmV1aGRlbmZOZnZjUmRtYmNlV2dFaGtjeGQxY1ZmUmJCZGFmVGFGZDhjNGdFaHhkRmVoY0hhU2dkYzliRGJIaEplVGhjYzBoUWJFZEJmQWJKZUhoYWFnYjliNWdaZUJlaGhzZFhiWGFSZlpiSGJrZjVhNGFFYVdiZGVVYVdkSGVGZThkZmdIYVFoUGhhZzFoSWJVZmNjVWJZZFRiZWNGYU5hUGFaYUdlcGVUZEdhUmhOY3dnQ2gxYkVjQ2VXaGpmTWhVYmFlamY0YnZlV2RYYVpkNWdWZGhmUmJoZkZhQmFGZG5hR2dWYVplMGJiaG5jWmF6ZGJkMGRaYm5lRmFoYUplTWhkYlVob2FRY1Vla2NRZ0xmZWNBYjRlS2hKYWpiRmNvZUZjbGhWY2pkV2hIZU1iTmNUZkZjMWhZZlJiVGE5aE9mYWZYZlFjWWJjYkVmRmcwYVVmVWVwZ09lZGJSZ0ZkemFUY0ZkRmU0YWNoRmRaZThkV2N5Z01iYmZSZDNmOGI1YlVlbWJoYkRjVGYzZWxkcWRRZ3hnQWdhZ1dnZ2h0Z1pkVmNoZUpkNmdSZDJlUmhCYmJja2VwY2tmZWJVY3NjVWVjYlJnMGNIZlRhVWgxY1dhYWhuYk5hMmVZZ0hlMWFzYlpneGdZaFNjVGNIZ1ZnS2VFYkZmSmVFYkNjM2dCZmFiUWFtZzloaWRaZG5mWWJVYmVna2RZaG5oRWRFYkZkUWRVZ1Zkb2ZIZVJkMmdWY2VoR2JIaEJjQmhkaEZlRmdLZVRibmVVZFJmY2cwZnhjUmhlY0hjQmVXY2RnQWI5Y3JhV2hrZEFjNWFEZDBlQmEyaExlQWc1aHdiY2RsYU1jRWFFZDNoaGVmYUViUmQ5ZkJiZGNEZ2dkbGhVYkhhaGFLYmVmR2RWYUxkUWVIZGdkZGNRYlVkMGhSZUFiamJ3aG5mSmdYZzBjUWZCYjNjY2NHZkVjbGZKY3JlU2JoZGhmRGFVZmdkdGc5aFdjaGJaZG1oYWMyYTljbGNQZ25kSmhPYmNleGFCZU1kVGFWZ0ZkSmNGZ1VoNWRwZmRlQmNoYndmUWdYZVJnUmhTZ2tmWWhoaFdoVGZvY2ZoWGV3ZmNleGVSZVdmWWFQYmRlbGNJYWNkSmRRYjVnYWZLZTFnMGR3ZEpoWGhwY0RoR2hRaDlic2JDY3doMWZmZEVobmF4aEhmY2FsZlJmN2hXY1hiRmR3YVJnemY1Y3hoSGdSZTFiTmVHYlZhWmMwY2JhbmhaZnpkYmUwaFpjbmdGZ2hhSmJNZmRoVWJvZ1llQmFnYnhnQ2JJYzFhUWE5ZUxhbmROYndiYWVRZWxheWVYZm5kb2hjaFpha2IxYVJiU2RSY1ZiT2NhZFhjUWVZZ2NmRWJGZDBkVWVVYXBlT2dkaFJjRmd6ZlRhRmhrZXNoT2RCYjhmbmFBZ1JjUWFUY0JnR2JGaEdhRGVuY2hjRGVSYm1jMWdBYVVneGJrZ1RhY2VBZHRiWmRWY2hkSmQ2Y1JlMmRSZ0JjYmdrZXBha2hlYlZjRWNVZ0pnUmMwZERnVWJCZ2xoSGJZZmtoUmMyZWNoMmg5ZEdjWmR4ZFlhU2VUZEhmVmZLY0VmRmFKY0VkQ2gzYUJhYWZYY1djOWRxYmJlamYwYlVjZmMxYk5kemVBaFZocGVFZ1hlV2VNYVZoVGdtYWxnMGhHYkhjQmZCZ2RmRmJGY0toVGVuZFViUmdjYzBneGVSZWVkSGFCZWVmSWVFZmNnaWZBZlJib2VPZkJkd2dkZWdnVWIxYkpka2dZZGdiZGhSZldnaWJNZkZlSmdoaGNlQmRhYkVmZGc0ZlhnV2Y0ZGVoYmhYYmtkWGhGY0hhbGdKaFZmUWFSZEtiV2RBZ3NodmFaZjJhVmd2Y1diSGdrZFdiR2VsYjFhamFTZGhiMWFTYUVkQWNKZTVmVWYwZDVmRmNZZm1kWmZwaEZiSGhKZE9oY2F4YUJmTWVUYVZnRmRKY0ZiVWE1ZnBkZGNCZGhld2JTZ1NhQWJaZkFleGQxZTdkYmNqZ0pkZmRRZDNkaGh0aGZlSGRRY1BiYWQxZUlmVWFjZFVjWWJUZmVoRmROYlBmWmZHY3BjVGZHZFJiTmh3ZkNjMWJsYldiQmZHZzliU2VkYzFkUmd1Y1RkR2VSZ3hjUWcwZ0FmNWhWY0VlNWVEYlpmaGhkaGxiZWZIZ1pidmVjZDBoWWZ6YUhoeGNJYVFhZGFVZkplRWFHY2dkMWVZY2ZoaWZVYURlZmQzY0pmbWVkYndhcGF5Y1JobWJJZkdiVGZFZUJnUmJIZlJleGVIaFliSGUwY1VhV2hrZkZiMGRVaFVlcGVPZGRhUmdGZHpnVGJGZ0ZiNGRjZ0ZkWmIwaERkMmd0Y1NmRmRIZ2tlU2JXZnpoRWNBaFFiUmJzaHJlUWVnYzhlVGJiZVFmdGJSZkFobGNvaHphRmFHZG9mK2RMZDFmcGEwYmVhVmRjYUlnY2dVZmthVWhUYlJhOWFXZVlhbmJ0YmplWWJIYXBhUGJhYnpjd2RTYlRnSGVWZUtmRWZGZEphRWNDYjNjQmVhZ1FibWI5Y2llWmVtZGthVWJjZmtmNWE3Y1JnQWZRZ0VlQWFrZmRocWdEYzNobGdraEdoR2YxZUJhWmJGZmhhRGhaYUhmVWdSaGNiMGF4YVJmZWhIY0JkV2JkZkFoOWZyZlVoaGdSZXhhUmVoYU5haWFVZzBkZGFzY1BnaGh0Y1FkUWFIYTViMGJHYkVhSWJLZmVjbGJwaGtjU2ZUZm9lQ2ZMZlNjcGhGYWFhemNBZkplQmhVZTBjRmJTY25iUWE2aGZoM2hNZHpkUmNtYjlmQ2FXZmdiVWdtZVJkR2E4YlRjVmJ4ZGxod2NSaEZleGJ2Y2FobmVkYS9nRmNIYzljT2JKZ3hnbGhGZlJhRmYxY2piRmJVZTVhcGFkYkJnaGF3Y1FiWGdSYVJnU2FrZzVjMWNFZlhnTmNNZVVkWGRoZndmWGhpYkJmSGJJZWdjRWNhZ0RlZ2hjYkFoYWRsZk5jU2ZUZG1lcGJUaEdoUmhOaHdmQ2IxaGxnV2FFY25jcGNIZVphRWFGZXVmU2RtZlJlNWRTZnhoUmN4Z0Nid2NoZVllQ2drZU5kMGZhZEhiWmE3Z1poeGRJYnZkWGYwY0ZhQ2hDZWdic2JEZVFoRWVRaFhnYmVGaG9hV2NaaG1kSWQ2ZWFjUmJ3Y21nQmZqaHBlRGNRZ2poSWVRZ1dkQWFOZk9nZGIyZG9kWWVlZEZhQmZpaFVkVWNkY09mSWJSY2hiNmhSZ1ZlaGMwZ1dibGVaZzBiRGYyZXRiU2dGaEhmRmhHZEVhM2FoZVRoVGIyYlJocWJVaHhha2dUYWNmQWJNZk5lSGdsZnNjcGZTZFJhc2dBYmZlMWd4YmthWmNHYUVhVWdjaFJiMGNkZVRmUmFsYVdjZGNHYTViMmJjYTJjOWZHaFpleGJZZVNiVGNIYlZiS2RFZEVmUmJSZEhnbWdOYVBiUWFtZmxhaWFiZm1mRmJBYk9oZ2hjZ2doSGJqZ01oTWJRZUZiOGNWZVVnbmNWZDBhVGNIYWxhQmhLYUZmRmVDZ0dkamgxZFlkSWhFZklmdWZPZldkQmNHaGRlQmVGZDFlVWZoaHhiZ2VVYkJkTmQxaFVmeGJ0aHRoWWcxZ29nUWZIYjFkb2NMZVdoVmRZZVNhZWRrZ2Rha2VRYVdiNWFLY1piSGNsaExmRmRIZ0VhZGRIYlVnMGZSZkFjamN3YW5oSmZYaDBjUWhCYzNoY2FHZEVobGVGYjFnUWJraFFiYWJEaFZoaGQraEpoUWhOYS9iY2htaFplMWRDZUhhSWZhYmVmaGhCZktnVGNVZ2RkY2NBZkZkMWY4ZmZhUmZGZThjYWgzZVJoUmVTYmtkNWMxYkVoWGNOY01mVWRYYmhjd2RWaG5nUWNQZk9oVmdKaEllTGFVYllkYmZMaEJhc2FHZk5nMmVRZHNoV2dBaGRob2JDYjFoOWJMYkVnbWN4aFNlY2FWaEpiN2VRZDJhaGJUaFNheGFSaHhiSGFSaDFmTmFHZlZmWmQwY2JnbmNaYXpoYmMwYllmemNYYWxkc2dmY1hkMGVvYlFhVWFrYVFnTGhjZUZicGVDaGJjMmZKaG1iYWhSZTFjcGdaYkhhTWNRaFRiRWMxZlJhU2VSZ1ZoT2hhYVhkUmhGaGVjVWcxZGVoVWNVaHBjT2RkZVJlRmN6YlRkRmZGaDRjY2dGZDRhOGFBYVRkc2RBZldleWdVZEphUmh5ZEViRGFDYm1ib2M0YUhlRWUxYlNoSmhFZjRlMWJFYzFiUWN1Z1JoM2ZsY0JjSmZrZ1FiMGdLZHdjUmVBZlBoa2NsaEVnSGNWY3hoWWFKZGljRWRpZFBnMmg5Z2JnWmcxZ0JmSGVBZmpkWWRlY1djUmMwaEtlQ2QzYmdhT2VTZzJkOGI1YlRiR2FrZFVhY2NrYjVkemhFY0VheGROYlVhVWZraFZhVGhpY0FieWJHYUhjaGJKZmZmQWNWYktnU2YyY2dhUmhaYVZjaGNZYWRmSGhCZkdlZGZCYUphMmZVaGtjQmU0aFRjeGVNYnFmRmVoZHNneGNPY0JlMGRaZFJnemFoaENiQ2VrYzBhNGhlYmtnZGdrY1FlV2E1YUtnWmFIY2xnTGdGYUhhRWRkYlZnQWVzY1plWGhpZUJndWJhZ0dmNWd2YlZkWGJVZWZjRWNoZ2RmZmNTZ2hnQmhTZVJnQWV0ZXdmV2FrZUpndmhZZm1jWmdwYkZmSGJJZFlkTWVrYUpkTWdIZjFlRmVVaEZoUmVvZWhhUGdVYXRnK2NQY2pjVmFCZFdobGVWZGZmRWZYaE5jTWZVYVhkaGN3Z1ZnbmhRZ1BlYWIxYkliVWVjYVVnWmVhaFBmbGVOYUhlVGVtaHBlVGdHYlJnTmN3ZkNjMWJsZldnRWduY3BlSGhaZUVmRmJ1Y1NkbWdSZHhnUWIwZUFiNWVWY0VhNWdEZ1piaGVkYWtoZmRuaFpjdWZiZnhlSWN2YlhnMGFGZkNiQ2ZnY3NiRGNRYkVkMGRIZVdjbGZwZENnYmIyYkplbWZhY1JlUmF5ZFRjbmRNZ1FmVGRFZDFoUmhTZFJmVmdHYlBlVGF4YVJiSWgwaDhmTGFFZEZnbGhjZWRnUWR4YXpiSGRsY2hkMGdXaGxlWmEwYURmMmd0Y1NnRmFIZEZnR2hFYjNkaGZUZ1RhMmJSZHFlVWN4aGtlYmZJZGdodGFFY1Zna2ZZZXloRGVqY2RjUGNFZVFndGh3Z1lhVWNJYVljV2V4ZTBmZGJUZlJnbGFXZmRhR2Q1aDJjY2EyZDllR2daYnhhWWZTY1RmSGNWaENiUmhCZ29kTmdXY0hjNGVsZkFhM2F0ZjZjWmZuZlFnVWZKYmdhWWE2YVFmMGNJaHlmRWZGZWdiRGJSYjJjVmZlY0dnSGVCY0JoZGhGZUZhS2hUYW5mVWZSZmNiMGV4ZFJlZWZIY0JjV2VkZEFkY2UvZEdmbGUwaGlkU2ZHYndmNWZRZWxmbGRrZWRhMWZOZExmR2ZuZndhaGVXYlZmWWhTZmVla2dkYWthUWZXYjVkS2FaZUhibGhMYkZlSGVFYmRkSGNWYjRhTGNWaG1kbGh6YmRlaWNkZG1hYmVHZGNlV2FFZmtoeGgxZ1NmaGNCZ1NjUmJBaHRod2FXYmthSmJ2YWFlMGJ4Y3BlRmRIYkpiT2FjZHhkQmRNaFRkVmJGaEpoRmZVZDVhcGZkZEJjaGF3Y0VmemNFZ0ZoSGJ4Y3dlN2RFYlNkY2RFZkdhQ2Z0ZXJoZmdIZlFjUGVhYzFkSWdVY2NhVWhZY1RnZWZGYk5mUGZaZkdlcGZUaFRnUmZOYzllRmNsZ2xkRmFBZ0dmRmN0Y1poRWZGYXVhU2htZVJhNWJTYnhhUmh4Y0hnUmgxZk5oUmJIaHhjMGViYW5jWmd6YWJjMGdaY25iRmFoYUpkTWJkZ1VhcGhHZkVmeGhZZExmT2JWaHBjZmFiZDJnb2J5YUljVmIwaGhiUWhBY3hnUmhXYUZlVmdSZ1ZkUWNsY09jZWdHZElmUmhjYUJlMWIwaEJoUWNJaEhhSmVoZzhjTWNEZVVkSmVxYWZoSGh4ZzBiRGUyZHRkU2JGZkhkRmZHYkVkM2ZoZ1RjVGcyYlJicWhVaDFhd2VUZmJhUWd0ZFJhQWVsYW9hemNGZUdmb2YrZ0xmMWF0aHljZWFWYWNiSWNjZVFjd2RMY1JkQmJrYktiZGFEZW9jK2dPZWpjeGhJZUdjRmdjaENiWGZIZWxiZ2hFaEZiSmhFZ0NiM2RCYmFjUWJtYzlmaWJaYm1ia2hVYWNla2c0ZDhmRWFGaEZmTmNXaFFnQWRWYlVjbmJWZjBlVGVIZWxhQmZLY0ZoRmFDYkNkM2VVZlBmYmFWZkpoUmRjZkdmTmJFYWRkQWFKaHJmQmVoZjFoNGRTYWpkbGY0Y1VlMGU5ZGtiYWZsYk1jWmNFZDNkQWJMZldoVmdZYVNjZWFnZTlla2ZYYUdiNWVDYUliWGZsYVhjQ2FIY0ZhSmdGZ0VjMWhGZVZlbmZ3Zm5nZGJtZTFoeGNXZUdlY2FlZkFlVmY1ZjFnUmR4Y0FnR2JUYVFkSmRyZGNoRWdKYXZoWWNtaFpocGJGZEhjSmdPYmNieGJCZk1jVGJRY01hTWRRaFJhc2Y3Zk9kaGhoZDRhYWUzaFJmUmdTZGtiNWgxZ0VoWGJOZE1nVWRYaGhid2hWY25kUWNQZllld2JaYWNoT2JCYlVjZGFCZXhhSmZmaGRiR2RwY09jR2FRaFZnbGZIZ2thcGZEZkVjbmF4ZEhlTGVFYmhnaWVZZEdkUmU1ZVNkeGdSaHhiSGVSYTFnTmFHaFZkWmUwYmJmbmNaZXpnWmZ4YUlidmNYYzBnRmNDYkNlZ2NzaEJoUmNFZVFiV2hjZUJoSmNDZGNjWGV4YzRnYWFRZVZka2dSZDNmOGU2YlRkRWExY1JmU2RSaFZoT2VhYVhlUWVZZGNhRWdGZzBmVWJVYnBmR2FJZFZha2M2aEhnMWQ4Y0hoTWFVYVZhbWhEZDNjWmdTZEFmbWRSZVRoQWhHZzFnVGZTZFdnUWdsZldmaGJVYjVjY2FBY3RhWmJWaGhnSmU2aFJoMmJSZ0JiYmVrZnBoa2hlZVVlc2hjZUpmVmdWaFVoSGRoY2NmcGNOZVhmcGh1Y2NiM2FKYkdlS2hCZVliTWRVZ21idGZLZUFnVWhSaE5nQmgxYXBmYWhRZG1kOWJpZVpibWhrZlVmY2ZrZDVoemdFZEVieGJOZFVjUmUxYmRmQmd6ZXBhZWRHY0hkQmZCZWRiRmNGY0tiVGduYVVkUmVjYzBheGRSYmNoV2d0aDhhZGNBYzlkcmdVZ2hjUmF4Z1JoaGdOYzRkVWJ4YkpjdGhaZ25na2FaYkVjM2ZBYkxjV2hWY1llU2NlaGtjZGRrZFNnU2NaYkVkTmRDZ3NiRWRRZERoNWVKZlJjQmIxaGNlV2NDaFlnaGNJYWpnSWg3ZUFleGZWYWZiVmhRZlFnaGNTZWdkMWJTY0RnQWNVZ2dnQ2RBZzBoN2NMY1RnSWh3ZVJmRGZkZkFoSWJWaDhiWWVIYTFhRmVVZEZlUWRnZDhiT2VsZ3Nha2FDYURic2VmaFNna2ZZYmhkR2dIYk1lWGZlYTNkaGF3YVZlbmdRaFBmYWMxYUlnVWFjYlVnWWdUZWVkQmNvZkpiWmVHY0pjYmdFaFVjZGR3YURna2hSYldhQmFHZTVjT2JhZ0VhRmYrZ1NkbmhsZ2tmU2gwZ0JiNGRGZkJiMGdmZ1hmQWNJZ2hkUGFEYmhhemNPZXdhNGJ1Y1JjUWVsZ21lZGRVZ29hUWZVZ2tjUWdMZmNmRmdwYUNlYmYyZEpjbWNJY0ZnSmF5Z1JkaWhjZFFjVWZsYkJoUmdXYWdmZGVIaGFkU2U4Y3llY2RFZUZjMGZVYlVhcGhPZmRmUmdGZ3pkVGNGaEZnNGJjaEZmWWNpZFRoamRsYVNjUmRuZUZmYmRFZnlhd2NiYkJoamFkYmtkTGdGZ2dmRGFZZkJlQmR6ZVZnaGRKYjZiUmgyaFJmQmRiYWtocGhrZmVhVWNzY1VjY2VSZzFhVWZDZHhnbGVlYVhibWQ1YTJnY2YyZDlkR2ZaaHhhWWdTZlRhSGFWYUtkRWRGY0pjRWNDZjNnQmRTYVNmamJzaHFjTGd6YW9oYWFEZVFkOWVqZEFoRWN4ZlFnVWNSZzFoZGFCYnpkcGQ2YVpjemhGZVNoWmFsYmhkR2NaYUhmVWFSZmNoMGd4ZFJkZWdIY0JmV2JkYUFmOWVyaFVnaGZSZXhmUmVoZU5od2RCYXdjY2R0Yk9iVmUxYW1oVWFtZ01oWmhXYlVjc2ZTaEtjRWc1Ym9nYWYyYzVnS2daZkhhbGFMaEZoSGFFY2RmSGRVYTBkWmRWYW5mUmZ1aGRobmZOYW5kRmhHZmNkTGFFZmhiZ2I5ZEFnMGhOYWNjT2MwZXBla2ZRZmthdGdqYlNkR2JaY3BnRmZIZ0pkT2djaHhmQmRNYlRmVmNGZkpnRmhVYjVjcGNkZ0JnaGQ0YkZoVGF3ZFljR2hVZUFjS2FVZEdoZGhVZVVoV2hWaHdkQWRqY3hkR2RPZUZheGJyZU1lRmFjZ0ZiY2JWYzllbGZaaEdlcGdUZUdhUmJOYXdnQ2IxZ2xmV2NFaG5jcGJIZlpnRWNGZHVnU2ZtYndhdGNBYTFmMGhpaEViMmFJYU1hQ2JFZkJmMGdjZDNoWWVoaFpna2JwZk5kRmJoaEpjTWVkYVVob2NRZVVma2JRaExjY2hGZ3BhQ2NiYTJnSmNtaGFiUWFkY2dlVGVtZTRoTmhUZ0JhbGZZZVlieGNWYk9nYWZYZVFlWWJjY0VjRmcwYVVkVWRwYk9oZGFSYUZnemhSZ1hodGQ0Y2NiRmhaYjBiRGUyZHRnU2NGZ0hoRmZHY0VmM2hoYlRlVGQyYlJmcWZBaFZneGRIZ0piVmZrZVhnVmdrY1ljeWJEZ2pjZGVhZ1JlRWZwZ2tmZWNVYnNjVWhjZFJjMGFkZFRhUmNsZldmZGdHaDVjMmhKZzJiOWhMY2ViaGFZY0JhWGhtZDVjZ2dFaEZnSmVFZENoM2VCaGFjUWFtYjlhaWFaaG1oa2NVYkxkMmZSaHpjRWZFZnhoTmFVZlVma2FWZVRlbWZsYzBmR2ZIZEFoWGVOY1FkTmFLYUJmM2RVY01hY2YwaFFhRmdNaERoa2FGZWVobmRBaHFjUmdnZ3hmeGFXY2dhOWU0Y1FmbGNsZHRoYWZnZDhiWmRSZ3pmaGZDZENhbGhoYXRhT2QxZlJlMmZUZFVkUmJLZlpmSGhsY0xkRmNIZ0ViZGJIYVVjMGhaYVZnbmNSY3VnZGhqZlpkdmJXYjJnY2hlaFJlZ2VRaDhjR2FSYTRodGhCZFJocGRtY1dkbGI1ZXplWWVuY2RjL2dIZVhiSWJTYWNiMGRRZkVjQmVBYUpiSGFhYWdlOWQ1Y1pkQmdSZmFnUWZYaFJoUmFTYWtmNWExaEVhWGZOY01hVWFYZ2hmd2JWZG5oUmFBZmFhMGQ4ZVVjZWVRZThoVGhaYmtoMWVSZVpjRGU1ZGFjR2RVYjlnd2RBYnhheGJXZERnbWdaZEhhYmVGaEpiOGJTaG1jbGU1ZUhleGUxZjRlRWdUYmRjTmJHYlZnWmYwZ2JobmNaZXpmYmcwYVpibmVGZ2hmSmFNYmRkUWVJYVFnVGYwZFFkRGhOaFZjcGRjYmNiWGh4ZG1lUGJSYjFheWZFZ25jTWRZYkJjVWQxY05oVmZSY1ZmR2FlZW1nWWhZZGZiVWJFYWdhV2VFY05mVmdYZ3hlRmF6YlRmRmZGZTRlY2hGZFpmMGJEYjJodGZTZUZoQ2ZNZURlUmN5YTBjQmZBZldnUmhpYmVkUmNrZFRoY2FBZ3RlWmNWZWhlSmM2aFJkMmVSaEJiYmNrZ3Bka2JjYVJnOWJjYk9nRWQ0Y1RjTWNsZGhnR2VaZEdoNWdyZmNmM2dsZVRjY2hnaFVoSGdUZkhlTmFLY1diRmJ0ZUljSWNYZ0JiYWVRZW1mOWZpZlplbWNrYVVhY2draDViemNFaEVjeGJOaFdjUmgxZmRoQmZ6Z3BlNmFaYnpjRmZRZVlibGJGZVhlVGhqYzBjUmJiZFZmSmhQY2VoR2dGZkFmZmNRYU5mQmVVZWhiUmR4YVJmaGROYzRjVWMwYzlka2ZhZ2xkTWVaZkVlM2JBY0RkRGZSZzVhYmRLYVVja2ViY0FlSGQxZFlmWmJHaFJnTGdBZ21oUWdJZkRibGFnaFpoVWFIaFFkaGRmZjNiOWdGZ1JmbWVjaFdnRWhrZHhnMWJTYWhiQmRTY1JlQWR0ZndhV2VrZEpibmNOYmljNGhnZFJiM2J3ZnhnTWJnZ1JhVWhUZVVkeGhKYldma2U1YzNiYWFnY1pid2JVaEdkSmVZYVJhbWhSZTFiRWNYYk5iTWZVZFhoaGJ3ZlZmbmFRYVBlYWYxYkllVWVjYVJiSmdiZU1oUWVCZGxoWmRHZXBhVGZHZlJnTmV3Y0NiMWhsaFdnRWFuaHBnSGhiaFZncGJFaFNibWdSZzVkU2Z4YlJkeGZIZFJnMWFOaEdnUWV0YjloWWFsYXhlemhiYzBmWmVuaEZmaGJKZE1nZGJVYm9kUWFXY2dmd2RGaElmQWFnZE5nT2N5ZjBkeWVNYUVoUWczZFFoRGJCY2NmQWN3Y01kVWFTYlFjaGFPYkxkeWJGZVdkTWZ4aFVoOWhIZWdnUmNPZWZlUmJoYnpiRmQzZ3RhNGRjaEZhWmUwY0RhMmh0ZlNmRmRIaEZnR2NFZjNhZ2JCZENoamVBaC9oQWNWZGNhVGVQY2thNGNPZ1ZhbGZwZXlkRWd5YndoSWhQaFVlUWJiZE9hRmJzYUVkZmZSZzFhSmhCZ1ZlQWFGYmVkaGdFZzNlWWNuY2xkS2NaYTBkSmNhYUJoU2RaZkVkYmh4Zk5nWGJHYVhkeGJhZkZmaWFjaHJhTmdXY2RkcmNNaDFicGNyYkdiVmRkY25lVWdVaGtnVmdUaG1jbGIwZEdmSGFCZEJhZGNBYnhmRGFRZGxhOGVSZGNmMGh4ZVJoZWVIZkJkV2VkZkFkOWRyZldmbGIxZHhnV2J4Yk1kRGRMZ2tlWmhvZlFoRmZNZVpnRWMzZEFjTGhXYVZiWWVTYWVla2FkZXNoQmdHZDVkWGJaZkRoOGdlaFdlamhKZUpoVmdBYUpmWGdWZW5neGhuZGRmaWRoZkZiUmVtZWNlV2JFZmtjeGgxZVNmaGJCZlNmUmVBZnRkd2NDZEFnY2g3Y05nemhRaG5oRmhEYnBiVmVXZVJhQmhNYVRnVmRGZEphRmJVYjVicGhkYkJhZ2N0aFRmemZVZUJlR2RnZUlnc2RHYlNkRmJBZ1VnVGdGZzVlWGgzYmdlbGJhZjFjSWhVZmNhVWdZZVRjZWRGZk5jUGFaYkdndGhiZVRjMWZ3aDVmVGgxaGxiR2RFYm5hdGdhZmViVWdFYnJmU2ZtZUpkL2JTZ3hid2FsaEVhMWVnYVZmU2FSaGtobWRPYmlhVmR6aGNia2NZYmlmSGR4aHRmWGNYaDBjb2RRYlVna2ZRZkxoY2hBZWRkTGhaY3pkWWV1Z0llRWRkYjdoVmFWY2tiUWNUaEViMWdSY0ZhQmFsZmtiYWhYZlFlWWhjZUFiY2JoaEhkd2ZrY2FiUGVGaDRhOWRUZkZja2dzYWZnRmJZaG1jQWcyZ3NkYmRIYVhjRWVkZk9mWGFoYVRlVGMyYVJlcWZVZnhiRmVWaEphVWVVZGFnQWNsYXNhMWVDY1dlUmFKZVBnRWNOZGtkSWFtaEVmVWVjYlJjMGRkZVRiUmJsYldiZGJDZWdhamZQYlNld2FTZExnbGdsY2NkVGZEY0JlQ2dSYUZldGZFZVVnRmZwZ2FjUWdtZjllaWVaZm1la2FVY2Nha2M1aHpmVmRnZk1kZmVVY1ViRmREY0RhemF0ZDBkU2NuaEJiY2FkZUNjb2QzY1FjbmdWYllhY2QxZ0ZlUmFhaEhleGVXZU1kUWI5YzJoVWRrYkJjL2VDZmxlWWIyaEZkQmNzZ3NmY2hWZk5oY2FFYTJnNGVMZkVnRWMwaFNmTWQwZXhjdmFTZ0dlNGRSZFRjbmZsZ0xoRmhIZkVoZGJIZFVoMGZaaFZnbmNSZHVhZGJpY1VndWZGYkdkZGdaY0VibGVGaDFkSGNoZTRhUmhEYUVkb2FpY09hUWEwZ3JjSmR3YWNmOWJIZERjdGdIYWFoRGJwZ01iVGRWY0ZkSmZGYVVjNWFwZWRkQmRoaHdmUWFYY1JkQWRXY0ZhWmIxZkRjM2RNYkRhZWIzY2hhd2hWZm5lUWNQZ2FiMWJJY1VnY2VVY1liVGNlZkZnTmFQZWVjMmhvZUJlRmcwZE1kbGhXYkJoRmNlZlhmWGFOaHRmWmRFY0ZhdWNTZW1lUmQ1aFNneGdSZnhiSGRSZDFmTmJHaFZhWmJ1ZGJhbWNSY2plZWExYzVibmFDZEJmSWZEZVhmMGFvY1FoVWZrZ1FiTGhjaEZncGJDYWJmMmZKaG1hYWRSZFJieWRVY1hkTmhDYVFiaGUwZUVnR2NsZzFlR2JlaEdkMGVLaGNkQmUxYTBmV2RRZlZoT2VhaHdjOWd6aFdlbGJoZDBkY2VFYWRkbWhGYTJmc2VPZ0ZoSGJsZlFiQWNIZGhkVmNUZXljdGNqZFdlamZNZlRoY2RBZXRiWmJWZGhnSmg2ZlJjMmRSZkJmYmJrZXBka2hlaFZmRWNVaFpiQWVnaFBoVmJBYjllV2ZhaG1mNGg1YmNoemVNZWFlWmQxYWthU2JVZW1jaGNLYUJlVWZWYlhnSGIyY1Jmd2NRZm1iOWNpZFpmbWdrZVVlY2RrZDVkemFFY0VkeGhOYlVhVWZrY0thVGhqY3RjNmJTYkNiVWVTY1BkRmFsY1lnWGhHYkVmUmZMYzBoeGhaYU5nM2NCY0liYWdnZTliNmVRYUJnMWQ5ZFJjZ2RKZHFlU2QwZzhkNGNhZ2xkc2ZSZlhlSGZBYlZmUmIxZVlkRWFjZDBmZGRpYlFnWGNoYVpmYmdYZlZoTGJCaFdoTWNGaEhjUmRFYVpmWGJtYkphOWJkZG5lVmV2Z0NlV2g0Y2ZoT2ZFZ3hjMWVTZ2hjQmJTZ1JkQWd0YXdjV2VrZUpmdmNZY21iWmdwYkRmbmNKZ0dnT2VoZHRjSGRRY1hidGVKZEZlVWY1ZnBnZGRCZmhjd2hRYVhiUmFSY1Nla2E1YzFoRWNYYU5iTWRXaFRlZGJ3YVNjM2VRZVpjZmhraGNkSGhaYjBnWWZZY2VhRmJ0Y0hiYmdIZHRmRGVDY3djQmJ3ZERmVmdrYVphR2gzZnBnYmdlZEVmRmIvaFdhbWUxYzVkRmV4Z1JoNWNEYkFiMWRmYkNmbGRaY3liYmJpY0piOWVMZUFnNGdtYVJhSGNFZkRiTWVRZDlleGVCZWtheGVDYWVhVmVOZUxoWmFtaDVmTWVhYlJjUmZ5Y1RjbmNNZFFiVGJFZTFnUmFTZVJmVmRPYmFjWGZRZFlnY2VCYk5oNmNBZlJlOGVkaFBkUmJsZVphVGdGYUZmNGJjZ0ZjWmcwY0RlMmV0aFNiRmZIZ0ZjR2dFYTNlaGdUYlRiMmdSYnFlUWhRZTBoRGhjYkZkZGhaZ1hmbGgxZDZjV2FYZ3BkQmNmYzFiSmV0Y2RiV2NFYlVhY2ZSaDBoZGNUZlJjbGdXaGRjR2Y1YTJoY2YyZDlhR2daZnhkWWFTZFRhSGRWZWJlQWdrZnBjRWhWYTNoQmJTYlNiaWVCZWljZWJIYWNnVWdZZDFjeGQ2YUVkRWVwYk5hUmcxZW9hY2VRZWtlTmUwZkdoSGFCYkJkZGVGY0ZmS2ZUZ25oVWhSY2NlMGh4Z1JhZWhIZ0JlV2VkZUFiOWI2Y1FjQWZ4ZnhkR2VoZE5od2NXYndhQmFrZGRiRWgwYlpoQmNYaGtiTGJYZjFkWWFFZWFoVWc1Zm9nYWgyaDVnS2haYUhobGZMZEZhSGRFZmRiSGhVZzBkWmJWaG5oUmJ1Z2RnbmdOaHZlUmVuY1ljRWFDZGtid2ZwZ1NhaGJoZ0VhVmJ3ZXRhMmVXYmdnMWZtYlNmR2JaY3BiRmhIZkpjT2VjY3hoQmJNYlRjVmZGZ0pnRmhVZDVjcGhkZEJlaGY1ZlNnR2M5ZzdnU2FraDVnMWJFZlhoTmhNZ1VmWGFoaHdnVmJpYWtjbGZhZDFoSWZVaGNlVWdZZlRjZWRGZ05nUGZaZkRjZ2ZXZFRiVWdZZGljUmdWZmtjWWhWZ3liMWVIZUVlUWJnZWdoSGNuZXdiWWVHaFVnWWZ3YVJmQmNVZGZoRWhFZzFoZWhiZ25mWmR6YmJkMGNaYW5mRmFoZ0lkUmVYZDBkb2RRYVVma2JRZ0xoY2hGZnBlQ2FLaFRnY2dvYktia2ZBYTdmQWNUYTBhUWdBZDBlVmNZY1NkVWI1ZmtlYWJYYVFiWWdjYkViRmcwZVVmVWNwaE9lZGZVZk1iMmZHZUFiUWJxZlBkbGRaZG1lRGEzY1pmUGhGZURlQWRVZVZoQ2gwYmViQ2ZpZW9nK2hBZUJlZGRmZk5lVWFVZWVmQWZsaHBhUWZSYzJmUmFCZWJoa2NwYWtkZWJVaHNlVWFjZVJlMGJkY1ViaGhrZFllTWZUYWxkMmRQaEdmY2RIYk5lVmdGZEhmQWJUYUFnRWZSaEFhRWcvYUdjZ2cxYlRkVGNEZW9meWhJZWlhaGRBZE5kMGVZZnlmUWJnZXNhWWhIYkFkeGViZUdlamVvZlBlQ2hBYzFlSWRlZWhiVWREZUNlVGVCYUNkSmUwZ1JjWWZVZW5lQmJXZ2RmQWU5aHJoVWRoYVJleGhSaGhkTmQ0ZFVlMWVWZ2tjUGhoY3RiUWhRZ0hjQmFDZEZid2RWZUdkT2F3aGtmbmRCZUNjRWZNZVpkRGdaZWhoRmJIZEVlZGZIYlVkMGhaZFZnbmZSZnViZGRuZ05jdmJXZVdhZGhBZlhoUWdVYnhiU2RsZ2hoY2RCZDBnb2U4aEZha2FvYTdnS2hpYjhmNmFHZEhnSWhQaEllVmhjY1plQWhCZFFkSGdRZVJhMGhTZlpmR2FWZzVhYWEzZVJiUmRTY2tnNWcxZEViWGVOY01iVWJYY2hld2hWZW1kNGhQZkpnUmhkYkRlY2VRYWtmYmNPaFFmRWVJYk1jU2VjY1diVmMwaGNlamVjYkVha2dyYUdoMmFGZ3RiWmhFZEZmdWJTZW1mUmI1YVNmeGJRZXNlTmd4YzFnTmFHZlZoWmgwZ2JjbmJaaHpiS2FSaE1kcGFWZ1VlWWdGZE9lZ2ZRaFFjR2drZnhoZmRlYlZlb2NaZFJmV2dKaG1iYWRSZ1JkeWhUZ25nTWFRZ1RlRWcwYkRkRGFFZUVhYmFPZ3phb2ZZYmVhR2N0ZjBkVWJVZ3BmT2hkZFJnRmZ6Z1RnRmVGYTRlY2FGYlpnOGVXYXloTWRiZFJkM2U4YlZoVmdqaDBhWGhUYTNhbGNxZkJmeGVsZWFkUGNsZGdmTmhGZTFkd2g1YUFnaWhzYkhjYmJnZVJia2RaZmtldGZBY2ZjMWg1ZVJjQWhsZGNlVGJmYUdkZGQyYmFoV2Q4ZUlmYmUwZUlmYmRSaFhlbGFnZ0VhRmdKYUVmQ2QzZ0JjYWVRY21mOWJpZ1pjbWJrYlVhZWFoYW9nN2ZXZ1JjOWhEYUJnMWdnY1ZkVWUyYWtoZ2dVZERha2hTYmVmZ2hJYlBlQ2V6aEVkZmRNZUFkQWhlZ05iamVWaGVhZmVRZUVjcWhGZWxoQmY1ZUZkUmRwYTJjRWZnZ3NoZ2FZZWhmSWFRYUdibmN3Y2hiV2FWZFlkU2hlZWtjZGZraFFhV2g1Y0thWmZIaGxjTGRIZENkVmNWZVZkQmM0Z1hjQWhHZVpkdWRhZzNmTWU3ZURjaWg1YkZnSGhCZThld2ZEYTFiUmZjZkJlMGJjZi9jRmFBaGRmbmJhZDJjZ2hvZFVoRGZaYkdiTWFoZWxoRmZRYlhldGJKZkZlVWE1ZHBjZGhCYWhnd2ZRYlhiUmNSZlNla2g1YjliUmZUYnNhRmdBYW5iWWJtYVJmWGZRZlNlYWJ3ZVpmY2FPZ0JlVWZkZktheGhZaEtoSWVHaFFkUWdWY1Znd2ErZlRlbGZGYWZnR2MzZFpmdGNaaEVjRmZ1ZlNhbWNSZTVoU2h4ZFJleGFIZVJkMWNOZkVnUWNJZDhkSmN5YVZiOWRPaFZkSmNuZENheGJJZFlhUGFRZk5oRGNYZ0JlZGdPZk5mUmI1YU1iTGhDYTRjcGFKZzFiRmg2Z1JjM2UxaERkR2RRYThmRmdHZDFhUWZOYVBlWGZ4Z0xiZWVVYmhoNGJlaDBkcGFPZmRjUmdGZnpkVGVGaEZjNGhjY0ZiWmEwZkRjMmJNYUdmWGJEY2diVmRIY1Nod2djYUdjeWFVaG1jTGdGYVZhV2ZQZ2dldGNFY1ZlZ2hKZXpiU2cwZzVoQmJiYmthcGZrYmVlVWVzYlVjY2JSZjBhZGJUZlJnbGhlaEllQ2hZYi9oSWdHY0ViTGZJZ2xkdGRCYkJiU2Q4Z1BkRWNFYjlmRWJHZzNobGJXZmFhR2Q5ZmlhWmdtaGtmVWFjYWthNWF6ZkVnRWV4ZE5mVWJVZkZlQmNCZ2loQWRuY0ZjamgwZUVnT2dSZzRkWWVGZjNkVWFNZWNld2ZJZkVmTmVEZ3hmZmhlZ0NlVmRyZlVjaGVSZHhhUmRoY05jNGFVZjBlOWdrZGFlbGJOYk5jV2V6ZGxjWWVjaDFlWWhTZmVha2hkaGtiUWNXZTVmS2FaZUhlbGdDZ0RjMWZzYmRiSGVVYzBnWmVWY25hUmN1YmRnaWI1Y0ZlUmhtZ2NkV2FFZmtjeGYxZVNjaGNBZUVhQmZWYmxld2RGZkVoSmN5ZVlkaWM5ZWhnQmRYYnRjQWVCY25ka2NpZk9hVWhkaGRjR2RXZFJocGZkZEJkaGF3ZVFoWGVSZ1JlU2RrYjVmMWRRaG5iTmJSaFVlVGNaZjRlVmhHZ1VjZWNmZzBnSWZFaFpibGNjaEhhYmcwZ3RkYWhkYUhmMWhIZ0Rjd2FwYWtmSGJFZkJjSGRFYUhlTmVMZFRka2JGY3VkU2VtYVJhNWFTY3hhUmF4ZUhiUmYwZk1oR2NVZXRoMGdJZEhjNWN4YmZhbGVKZDNnQmRBYnRjWWNZZjFkMGhEaFJoRmFJZVRmYWJVZDFjU2hmY25hdGF4ZmVod2VOYndlUmgzZzhoNmRUYUVoMWVSZ1NoUmNWZ09jYWJYaFFoWWNjYkJoUmMwZlRmRWVvYUFiZmRSY05iaWZXYmtjRmdoYlplVWg1aGpoRmRuZGxlTGNCYjJnaGdVZ0NjMmN0ZkthWGhuZ0pkN2VVZ1JoQWRmZldjZ2d0Y1pnVmFoYUplNmhSZzJkUmFCYWJka2ZvYmliZWJWZ1llVWZQY3hnVWRmYlZlQWI5YURoWmdIZzVia2RhYm5iMWFTZGRjUWNRZ0toV2YyZDFiWWRDYUVlZGhUZ0VhbmdKYVRhVGJrYlZlaWVaZG1ia2JVYmNja2Y1YnplRWNFZXhnTmVIZlVia2hJaFRnaWFkZzhoR2RtZUpmWmZZaDBiRmNiaFdnV2JJaEZnWmJsZnhhQmdhZldlSmZBZVpiQmM5YTVmUmNBZVZnemJUYXdnaGRTaFVhMGQ5Y2tiYWdsZ01jWmZFZTNhQWJEYkZlbGNoZENnS2FBaGdjd2dEYWpkb2NUY05iRGF4ZkZkWGNUZjlkVWdTZ1VjMGRFZVZmamN4Zm5mZWdsYWxjdmFSYW1oY2JXZEVla2F4ZTFmU2NoaEJnU2JUY0VhUmYrZENkaGJBY2diTmZpZ2tlOWZUZ1NmSWdMaGZmVWdVZ2NnQ2JSZ0FkZGJVaEVnNWEwZGRnRmg0aGxkRGV6Z2NkRmJBZndiRWI3ZUVoWGJzY1llV2ZIaGdocmRmYUhoUWZQY2FjMWNJZVVmY2dVaFlnVGhlYUZlTmJQYlpiRGR3YVNoU2R4aE1kNWNCYTNlTmZXYUVmbmFwZ0hlWmZFZEZmdWJTaG1lUmY1YVNieGZSYXhnSGJWYUpjTmRCZkZnWmQyaFBjU2hJYWhlSmRnZWdkZ2ZGY0JlSmRSY2FjRWNwZ0VlQ2d4Z1JhT2dQYnhheGJDZk9hM2ZsYk1lYWNSZ1JheWZUYm5kTWVRY1RnRWgxZ1JlU2ZSYVZnT2ZKZ25jUWFlZWRna2RGZzhkV2VSYzViT2FhaEJoRWIyZ1JnQWVWZ3hoZWhWZnBiMGRCZ3lnUmdTZUNmWGJGYkhhQWFuZkZjZmFUYTJhd2RqZlVld2NRYlRhY2VSaHRnUWdYZXhmNWRRZlJlMmFSZUJmYmVrZ3Bna2ZlZVVlc2FVYmNiUmEwaGRmVGVSZ2xoVWNJZ1NjQWR5Z05jaWJrYlBlS2dWZU5hV2dUZm5oVmJMaERmVmZJYlFoVWNpY0FlZmdEY1NkbGVpZEJiemh0Y0dlTWF4aGNkUmJSaFFkb2FMZ0ZhQmZzYVZiU2VHaDljZWZHZ0hmQmdCaGRiRmdGYUtjVGJuY1ViUmNjaDBkeGVSYmVlSGNCZ1dnZGZGZXRlcmVHZTFkb2ZpYUVmbGNJYjJiRWVBYm9lcmJMZ0ZlTmU0Y1FkU2RKYUtiQWdEZlJjSGhQY0FjRWRoZ0VmMmU1YU1kWWVsZE5jTGRGY0hkRWdkZkhhVWYwZFpjVmRuZ1JidWhkaG5mTmJ2ZFJibWVjaFdnR2RrZFFoOGVTaGdiMWZTYlJkUmd0aDVnVmhrYUplbmFOY21nWmIwYUZjRGh3Y0xmSmZCZ0FkNWNCYUJjOGNkZERmU2U4ZDdmSmdsZmtmcGNTZVNhQmhZYVFjMGJkZnVlT2UzaE5hTWRVY1hoaGN3Y1ZhbmRRZ1BlYWMxZklnVWRjY1JkQmFTZUtnbGRNYkhiWmFIZmRjVGdDZlJnOWJhZENmMWNsaFdkRWhuZnBhSGRaZkViRmd1ZFNmbWNSZDVjU2R4YlFha2ZIYVFlQmZOZVRoVmRnYTRoS2V6ZWdkMGVPYndjNWNyYVBiQmhKZE1hZGRVYW9jUWFVY2tlUWFMYWNnRmNwZkNhYmgyYkpnbWZMZnhhUmZ2ZlRkamFzZFFlUmcwYjBkRWJVZWpmOWVPZ2FlWGZRaFloY2dFZEZjMGVVaFVncGdPYWRiUmdFYTZmQ2RsYkZld2NZY0ZoWmRwY0VobWJzYkhiSGZYZUVoVWRWaGlld2ZHZ0hoU2NwZHFlQmgxZEZkYWhJZnhkQmd6ZVZhaGdKZzZmUmgyZVJjQmdiZmtjcGdrYWVnVWZzZVViT2VGYnNoZGhSZFRkTmFXYWRhR2I1ZDJiY2EyYTlhR2FaZnhlWWRTY1RmSGhWYUtiRWhGYXBmTWNYaHpkZ2dUY0VhV2FFYzJlS2RUZjFmVmVQZGplRWUvZ1ZlUWRKZ05kV2RsZFFjVmJHYjJnQmU0Y01jbmVCYkJjZGRGYUZkS2hUaG5jVWZSYmNnMGR4YlJoZWdIY0JhV2NaYUFlOWcyZVRoeGJRZWxjRGdsZm9icmRYYVFnSWNoZUpld2dCaFFmU2RUZ1VjTGZYZjFiQWc0ZWVha2NkaGtkUWZXZDVhS2NaZEhibGZMY0ZjSGRFYWRjSGJVYzBnWmRWYW5ld2Q2YVBnamZvaDhmU2JDZXBoVGJYZndhTWduZ0VoeGFCZVBjUmZFYlJod2FSZFVmSmN0ZVlmR2ZaZ3pmRmhEZHRkT2ViaEJkQWVDZENoQWdaaEphWWRBaGNjbmNJZEFkQWVSYUVneWNZZFFhRWgwZ1pibWNBYTNkcGJNaFNoM2FnYytnRWR5ZU1mUGNPZFZjb2ZIY1lhMGE4Z2FmZGRIZ2xoUGVaZUdlcGVUZEdhUmhOZ3doQ2IxYmxnV2JFY25jcGJIZ1pkQmJVZ21nQWF6ZWRoM2JCaGxlRWc4Y1RhbGRRYlhiWGZGZFpoL2NiYmliTmN6YWNlMGVaZDBmQmRCZXRobWhkZ1Vmb2FRZlVha2RRZUxnY2JGZ3BmQ2FiZjJkSmdtaFljRGM1YXljVGJuaE1jUWhUYUViMWZSYlNoUmJWY09iYWJYYlFlWWhjaEJoTWd4Z0JmUmE4ZGNoT2Z4YkZhN2FaZWxjRmc0ZmNjRmhaYTBhRGQyZ3RiU2NGZEhlRmJHZ0VnM2ZoYVRkVGYyYVFkbGZlYlJna2ZUZWNoQWN0aFpnVmRoZ0poNmNSYzJjUmJCZGJoa2ZwY2tmZWJVYXNoVWhjZVFnSWVkYVJmVWUwaGViUGVUZzFiNGhQYmlib2JMYktmRWJSYkxhVGhIaDVlWGhFZUFlWmhOYUlmWGJCY2FoUWJtZDlkaWNaaG1ha2ZVaGNia2Y1YnphRWdFZHhjTmdVYlVna2hWZVRlbmdOYTBnVWZWZHBmQmhkZEZjRmNLZVRibmVVYVJiY2YwZ3hnUmhlZkhlQmdXYWRnQWU5Y3JiVWhoZlJndWdSZGtlY2F3ZUdkaGd4aHFkSmZ4YlpiVWNYYUNkSmJTYVZld2NWZlhmTGFrZDhod2RUYXphMGVmZEpiamRnZVpmUmdqYUJnRWJGZFZkMGZWYVZlaWRGYm5hZWZuYU1oN2FEaGllNWRGY0hlQWdFZndmQmQwZk1iYmdIZ2tmNWQ1ZGNiRWdKZXZmWWZtZVpjcGhGZEhhSmdPZGNkeGFCZ01kVGhWZUZnSmZGZlVnNWdwYmRhQWJKYXdoRmFYYm9nU2dCZFJkNGFzZkdhU2VjaEVlR2FDYnRnK2ZHY3piRmFDY0pkQWRCYk5kZmdVZlpiSGZNaEJob2NjZmFjaWNjZldlVmFFZUFnNWdVYlJoeGVhZEVobWNwYkxnWmhCZ1JjbmFSY2tkNWQ1YlNmeGhSYXhoSGFSaDFmTmRHYVZnWmYwY2JobmRaZnphYmEwZFpobmdIZWtlWWZFaFBoQmJrZmViSGh3ZEZlR2ZJaHhnTWVZY0tkbWZKaHRkZGZCYlFmbmJSYzNhOGg2YlRiRWcxZ1JiU2VSYlZmT2ZhZFhlUWhZZGNiRWFGZjBlVWhVY3BjT2VkYlVlVWE3YUJhUWFKYVNlY2FGaFpiMGJEZTJldGNTYUZiSGNGaEdjRWgzY2hlVGNUZDJlUmVqaFNnRGRNZlRjY2ZBZXRmWmFWYmhlSmE2ZFJhMmdSaEJkYmVrZm9ndGNQZzBoc2djZ0poVmZWZ1VnSGhoY2NnYmZNYlNmTWNsY09oamNVY0RkWmJ3YWdnU2ZYYUhheGRLZVNoM2FoYkVoQ2MzZEJlYWJRaG1mOWVpZFpobWVrZFVhY2JrZzViemFFZUFiTmFuZlViVWVraFZiVGFtZWxhMGFHYUhmQmFCZmRkRmdGYUtlVGVuZ1VoUmNjZTFkTmJSYWNoQ2ZRYmVjUGZWYXhnbGNIYTFhRWY4YkNoVWVFY2hkVWYwZ1JlNWhhYmdjY2JYZlFiRGR4ZkNlR2JoaE1oYWZhZWtodGdrZ1Vibmd4ZEtoYWJYYWtoZmRYZkRhaGFPYkVod2ZCZmNjR2Z5YWNlbmFMYURkWmhtZ1RiMGEwaFdmRWNrYXhiMWdTYWhoQmZTZVJhQWh0YndiV2drYkphdmVZZ21iWmJwaERnbmFJYkhoV2NSZEJhTWNUY1ZjRmRKZkZlVWQ1ZXBlZGJCZWhld2ZRaFhoUmdSYlNha2Y1aHFkRWVTaGNoRWZHYkNldGMrZkdlemVGY0NiSmFBYkJkTmNmaHhhVmVXZ0xoRmJ0ZWxhWmFHaHBmVGVHY1JoTmN3Y0NlMWdsZFdoRWhuYXBiSGdaYUVnRmZ1ZlNmbWdSZzVlU2F4ZVFjbGFFYzBnNGRZZldleGRjYm1lUGFEZGNhcWJaZjFnWmJyZkZmZ2JGZGVhZGdVZmNjUWVCZGdleGdDY0lhMWVRZFBhS2JpaDhlMWdJZEVkNGczZVJkM2E4ZDZiVGdFYzFkUmhTZVJkVmhPaGFhWGJRY1lmY2dFYkZhMGhVYVVicGhPYWRjUmdGY3pjVGdGZEVlc2VPZUJkOGFuZkFkU2FZY1hkV2RTY0lmUGFTaFRlMWQ1Z1RmMmVSYnFkVWZ4aGtnVGFjZkFodGRaZFZlaGRKZzZnUmQyY1JiQmJiaGtlcGRrYWNiR2hFZFVnY2dSZjBlZGJUYlJibGhXY2RhR2U1ZzJoY2EyaDliR2NaYXhiWWdTY1ZibmhVZ2VkSGZoZkViTGhXZnllbGFTYkZlaWFjZHJoTmZXaGRoWmVOY3djTWg4aFFmaGZWY0JhVWFSZzFmZGVCZnpicGI2YVZhVGZVaE1lSmV4ZGdkUWFDaDNka2VSZlliMGZCZFJkYWUyZUpkV2FlYlFoOGUvY0djbGIwZ2llU2JGZzRoOWRIZWhid2V0aE1oQmdZZVFkQ2FGZm9lTGhXYVZkWWJTaGVha2hkY2toUWNXYTVjS2haZEhmbGhMY0ZkQ2RkYWNoVGEwZzFlVmJWaG1jbGV1ZFphbWJoZ0ZnUmNtYmNjV2NFZmtmeGgxZ1NhaGdCZFNiUmJBZ3Rkd2ZXZmtnSWhtZkplR2VaYmhnV2YzY3RnT2JLY0RmcGZNZVRkVmhGZEpkRmJVaDVlcGRkYUJhaGV3YVFhWGZSYVJiU2RrYzVkMWdSZXphSWRlZlVkVGh0ZHJhZmZIaFFkUGdhYTFnSWNVZGNkVWNZY1RkZWNGaE5kUGRaZEdmcGVUYUdmUmFOaDRnU2NGZ2xiTGdFYWpiUmdQZ1Rha2hGZnVnU2VtZ1JiNWhTZXhnUmR4ZkhhUmMxZE5lR2RWaFpoMGJiZG5jWmZ6ZGJkMGc0Z3pjWGhsZXNmZmhlYndlZGVWYkhld2V0aFpkS2NWZVFhQmFKZXloTWUwZENnbGZzZzJiQ2d4YkplRWZSaEFjRmVSZFFjaGFWaGZoWWJIZ1FjRWFiZ0VmRmVzY1diRWVvZlNnWGh4aEZjemhUZ0ZiRmc0ZmNnRmNaZDBiRGEyZXRoU2NGaEhhRmRHZ0VmM2JoY1RoVGUyYVJocWFCYzFjRmhhYUljd2VVZVVhRWYxaDhmMWRGZVRkMWhQYUxhUWdJZ2xiS2N5YmhjYmdOZVZmaGI4ZkdkUmhFZ2FkZmhXZUpkY2RjYzJlOWdHZVpmeGdZaFNmVGFIYlZlS2dFYUZkSmFFYkNnM2FCY2FiUWFtYjllaWViZmpoMWdjaE9ieGExYzllWGZRZGtkQWNIaGhkdGVNZ1FjQ2ZvYzhnV2FTZklhaWhPaHhhVWhQZUxneWRFZ1pmUGEwZXhoYWdlY0dlTmJmZGRhQmdOZzNiVWNnaHhjNGNSZWtoOWRTZVVoMGY5Z2tkYWNsZE1hWmhFZjNjQWNMYVdoVmRZaFNmZWhrYmRla2ZRY1dnNWRLZlpoSGZrYWZmWGJEZmhmT2NFY3doQmFjZUdnemRzZjhhTGIzYzBic2hEZWlnWmFFZWNiUWhNY3hjRGIzaEVmR2dUZEVkZGd3Y1VhVWZKYTljYWEyaHBjRGRGYkhhSmRPY2NkeGhCZE1jVGdWYUZmSmRGYlVmNWhwaGRnQmVoZXdiUWFYZVJlUmZRY2hkb2E5ZVdhQ2NCYkNoSGNEYTBjOWFHY1NjWmFXaFphUmhGaGNkTWVCZlJod2ZOYnhjY2dLYUJhVGI1ZWJmVmZSYU5iN2FDZDBkeGVmZ0VkbWdaZGJnWmRGYWxhbmZTZGpmaGVUYlNoeGJSZnhjSGhSZjFoTmFHY1ZiWmYwZ2JobmNaZHphYmgwaFplbmFGY2hoSmdNYmRmVWZwYUVnR2NnZjFlWWJmY2hiY2NIZklkaWgwZDBlTWVCYm9leGRCZWpoSmZDZ0xod2RJaFZmRGFIY1FkYWRZZlRnZ2JZY2VnMGNGY2diV2ZFYVpoa2JkZVJlRmV6ZVRlRmRGZTRoY2FGaFplMGhEZjJjdGVTYkZkSGJGY0dmRWIzZGhjVGVSaHplQWVpaEdha2RvZ2RiUGhVYTRoVWdHZVVoQWNqZVNiU2ZjZUpjTGd4ZWdlSGVOZmdjOWFSZEViRWVrZVZjQWVSZ2xhZGVkZUhjbGYvYmNoM2ZOZ2FoWmd3ZzRoYmNUZ0NjbGZnZ0VmRmFKZEVkQ2czZEJhYWdRYW1jOWhpYlplbWZrY1VoY2ZrZTVmemdFZEVieGROYlVnVWhsYkJlQmZpYUFobmJGZWplMGFFZU9oUmM0ZlloRmQzaHRoU2hPaHdjMGZEZ0dnemE4YlNhTWRXZTRlL2hXZmxnaGZ4ZFRhUmROZHVhV2RtZFZia2NhZmxiTWhaYkVhM2JBY0xhV2dWZllkU2dlY2tiZGRrYlFnV2c1ZktlYmVYYkJnSGhQZm5kRWhkYkhiVWMwaFpmVmJuZFJidWFkZm5hTmF2ZlJobWhjZFdoRWhrZHhjMWVTaGtnUWNhaERjVmRoYitjRGFGaE5haGZJZXljSWR0Y0hnRGdGZEFnUGdrYlVhQWJHYlJnZ2FaYldlUmhkY2hoTmNSY0ZiNWZUYnljWWhlYkhhZ2VKYzloQWFtZkpnRmZYY3pkVWdsYkdmaWNCaEdmT2J4YTVoTmVlZ1JoVWRhZGRoSGZsYVBkWmRHZHBkVGdHZVJjTmN3YkNnMWRsaFdoRWFuZnBoSGNaY0VjRmZ1ZlNhbWNSYnhjQmN4Y1JhNmFBZEJkMWVWYkVoRmZwZWVnYmRuYlpkemRiaDBmWmFuYUZiaGVKZk1hZGZVZm9mUWRVaGtiUWdMYWNmRmRwZ0NjWmV5ZEZkbWNkZUJnUWg4YVJobGNrY1FjVGRFZjFkUmhTYVJkVmNPZWFhWGZRZ1lkY2FFZkZlMGhVaFVocGJPY2RmUmNGZHplVGFGY2tlc2NPZ0JoOGFuZEFnU2JZZFhjV2ZUYjRiVWdTZ25kWWZRZUJneWFVZjRjTWZGZFpoWGVOY1dnb2ROZlhibGU1ZjZoVGNHYVJoUWRaZjBocGc0aFphVWFzZU1oZWhCYTFhQmJaY3hkbGRXZ2RoR2E1aDJiY2EyYjlhR2NaZHhlWWhTZVRjSGhWZ0tlRWVGZ0plRWhDZDNkQmhhZVFibWI4ZTJnTGNpY0JiSGVmaEFkTWQyYVhmUWVNZWZnQ2NFZWRjV2dCaGloZ2NtZWVhemE4Y0ZoTWJUZUFhZWZSY2pma2FZYWZkMmFaZFJmZWJIaEJjV2RkZUFlOWdyZ1VlaGJSZHhoUmRoZE5jNGFVYjBjOWJrZWFmbGhNYlphRWQzZ2hmZmFFZlJlOWVCZGRoQWVvY2hhRGdDZkVjWWVQYVhoY2FJY1hlRGdCZlBlZmdnZEphZGVFZnhjVWU2ZWZkamI5ZXZjVGJXaGNoRmJHaDBheGVwYVZlaGFCYUtnVGNRYnNkc2FjZUVjSmh2YVlibWFaYnBkRmhIaEpkT2VjY3hhQmhNZVRiVmZGZUpiRmJVZTVjcGJkZkJkaGZ3ZlFkWGNRaEZjQWRnZGNlbWFIY3pjNGFKZUhjRGFjaGlnRGMzZ3BlTWhJZnhmTmVHZEVoZ2FsY1hjUGVUaElhYmFiY0NiWmNUaEVhaGNOZGllQWVsYVZmOGFFYm5jcGZIYVpnRWJGZHVoU2dtY1JoNWVTZ3hkUmd4ZEhkUmcxZk5oR2ZWaFpnMGZiYW5oWmU3Z09jd2U0YnVkUmNSYXdiQmhNZEFnZGFmaEFhQmEwZ0ZjTWZ4Y0lkRGhQZlFnRWFwZUxlVmZFaFRnR2RuZ3RjY2NUYkVjWmJSZ1hlQmd4YU9hZGhXZ2diWWhhYUVnaGMwZkRkV2ZCZ09lZGdSZEZiemJUZEZlRmc0aGNiRmhaZzBiRGQyaHRmU2VGZEhhRmNHZ0VjM2JoZlRnVGYyYlJicWdCZTFmRmZhYUlmd2JVZ1VnRWIxZjhhMWJGY1RmMWFQYkxoUWJJZGxiS2d5ZWhjYmFOZFZnaGg4ZkdjUmhFaGFmZGFHaFZlMmVaZDJlWmdLYlRhUmZZYlNoVGRIZ1ZiS2VFZ0ZjSmhFYUNhM2hCY2FiUWZtZTlkaWZaZG1na2JVYmNma2I1ZXpkR2FCZGdhRmFHYkJhb2hiY0FkeWh3ZDVnVmJ5Y0llWWdlYmhjSWNDZURneWFkZnllUGNBYmdlVWRHaFNhUmZlYU9lQWc5ZWdmVWhnZE5kNGFSY2dmOWZrYlVoMWZkZXRjYWNnZzhoemZFZzNjQWNMZFdhVmRZZ1NhZWJrYWRia2RRZ1dlNWdLZFpmSGdsaExkRmVIZEVoZGFIaFVlMGZaZ1ZiaWFBY21hUGh5ZEJmaGZDZXlmSmViZ1hiUmM0aHNlUmVGYU1jYWFCY1Zka2ZUYkZmUWZZaHFkQWJ6aEplaGNXZEhlSmJGZWNmd2JaaEZnWmgxZkZkSmJGZ1VoNWZwZWRlQmRoZHdnUWFYZ1JiUmJTZ2tmNWcxZkVkWGJOZE1oVWVYZkZhNWFXZ2xiNGdQZmFnMWdJZFViY2dVZ1lkVGhlY0ZhTmRQZlpmR2RwZlRiR2dSZk5od2VDZjFoa2FDZldjamJNYVVnYWVoZGRiOGRSYUNkVWE5aERmeGN3ZHlnRWUxY0FkWWFWZ1FmSWQ5ZlBlamNvYXFlWmd3ZGRldWRIYXhmd2RlZ09iaGg1ZGNoV2VsZ2NiYWFlY1ZhUWJQZ09laWc0ZXllSWFFZlFjK2JGZTNmdGJEYVJiVWVGZTdoU2NSYlZhT2hhZFhhUWNZZGNlRWVGYjBmVWFVaHBoT2JkZFJhRmJ6Y1RoRmhGYzRiZWNCZ3BiMGZCY0hhWmJTYURkSGRoY0tnT2NYaGhiVGZUYzJjUmdxaFVheGJrZFRoY2ZBZHRiWmhWZWhlSmg2aFJiMmVSZkJmYmdrYUlibmJlY1ZiWWVVZlBkeGNVZTNiVGZSZmxnV2NkYUdkNWIyZGNnMmg5Z0dlWmR4Y1lnU2FUYUhjVmhLZkViRmdKZEVoQ2QzYUJhU2ZGZmllY2dyZk5iV2NkY1pkTmh3Y01lOGFRY2hoVmZEYkVlZ2VGZ1VhSGRBYm9iN2dYZURiVWNnZkllRmZrZkdhVGFuZzRoUmhZZ2tmVmRSY1phR2V4ZFdoYmhBY1pmcmZEZWphNWd4Y1JnaGFOZjRoVWgwYjlja2NhZGxkTWJaaEVhM2FBY0xkV2JWYlloU2FlYWtjZGFraFFlV2Y1aEtoTWNEZUVhQ2FSaDNnOWdRZFdhQWJCaFdnQmFDYTFmZ2dOYlRlc2J1YkZmQWRSZVpjVmZnZmtmVWJIZ2hhZ2dlaFRhUWVkYmFmV2NrY0pndmZZZ21mWmVwYUZhSGJKaE9kY2d4ZEJmTWFUYVZmRmVKZUZoVWE1ZXBiZGFCaGhnNGhGYVRmd2dZZkdoVWJBZzRhVmZEYjRnRGFBYnllRmcraEZiVGd4aE9kT2JUZUZnYmJOYVFlTmF5ZkxiRmJzZkRoWmNHYUZiVGRDYWhmcGF3ZEZoMGhWZFdnQ2VuaE5oSGZPZUdhdGZ1Z1NlbWFSZzViU2d4YlJoeGZIZVJlMWdOYkdoVmdaZDBhYmNuZVpoemZiYjBiWmZuZEZhaGRKZk1jSWRRaEpjWmFBY1VocGNHZ05nUmVjZ05nUGVUZHRjb2VLZGxnd2h6Y0hmQmdCZ2ZmQ2VBZGdhd2VIZVJmMGZDYmFmWGc4Z1lhWWFrZGhnNGJlYjBicGdPZGRiUmRGaHpkVGFGZEZoNGJjaEZoWmgwZERlMmZ0YlNoRmdIZUZjR2dFZjNkaGNUYlJlemRBY2liR2drZ29mZGNQaFVmNGVVYUdlVWJBYmpkU2RTYmNlSmhMYXhiZ2ZIZE5jZ2g5Z1JoRWdFZ2tlVmNBaFJnbGVkZ2RnSGV0Zy9hY2UzYk5oYWNaYXdiNGViaFRkQ2FsYWdjRWhGYkpmRWJDYjNoQmFhYlFibWU5Z2lnWmdtY2toVWdjYWtiNWV6Z0VlRWZ4Zk5jVWNVZmtiVmNUZ2poMGY4YVVlU2NOZlBlT2ZSZVFlSGZBZFNkZGZJZGZkUWQ4Z1pkT2ZTZ0llMWdPZTBmc2J1Yk1kMGJCYzViQ2JoY05lemFVYzFndGh0ZlpobmhrY1pkRWYzZ0FnTGFXZFZhWWdTZmVla2NkYmtiUWhXZTVnS2JaZ0hmbGNMZEZmSGVFY2RoSGNVZFZjTmVIYmpmMGM5aGVmRGQ0ZnFmQ2Z5YmhnRWVTZjBjSWUyZkFkbGNFZUFhSmMwYlFkMGNIYnloTWI3aGFmaWFwYXBlSGYzY0pkWmNlZ2hjQmhRaFVoVmdGZVJiSGhFZjRmMWRYZGhiaGh3Z1FmWGZSYVJjU2ZrZzVhMWFFZlhoTmVNZFVjWGRoYndiVmduYlFjUGJhYzFlSWhVY2NmVWhaZUhhTWdCZ29mY2hhYWllY2ZXZ1ZoRmh3aGllVWJsZ2NhVmJXYWphc2FWYUJhd2M0ZnFnRGR3YVVodGZRZzFmaGR4ZUZoaGQxYWJhRWJIZXhlMGViZm5oWmh6Y2JhMGdaZW5oRmdoZEpkTWJkY1Vjb2JRZVVia2hRY0xkY2ZGZ3BnTGFaaG1nNWZNZ2FkUmVSZXliVGFuZ01nUWdUZ0VjMWFSYVNnUmJWZU9nYWdYYlFlWWdjZkVmRmUwY0JoUWRJZkhlSmhoZDhhbGhYYzFoOGU1YU5oQmhKZThhVGZHZFViZmRRYVRnMGhTY1dhaWhnZWZlRmFtY3dhcmJXZWhmQWVkYklla2JRZU5jR2doYnBicGhWZG1mMWNQYUlieGU4YW9kTGdRYkpiRWZQYlViUWFWaEhmaGZCZmFiWGVtZTVoMmhjaDJmOWdHYlpleGVZZVNnVGRIaFZmS2hFZEZiSmRFZ0NmM2dCaGFiUWFtZ2NndWJaY21mSWNKZmNmbGZaYjZmSGZHYVpjTmVVY1Vla2VWZVRobWFsZjBhR2JIY0JjQmRkaEZhRmZLZVRlbmNVaFJmY2gwYnhlWmZPYTNlQmZMZmRiRWdGZGpiZWNCZ1JleGhSY2hiTmY0Y1VlMGg5ZmthYWVsYk1kWmdFZDNkQWdMZldnVmVZZ1NjZWNrYmRia2NTZFRlb2NDZUxkU2RwYUZkV2FUZ1JjUWRVYWhlOWFBZFdnRGdjZW1hTmh5ZkVnTWVDY1NoTmNUaGNieGVoYTlkQmFoYUJjWmJSaEJkcGE1Y1dobGg1Y3pmWWJuZTVoZ2NGZUNjNWVrZGNneGZCZE1hVGJWZkZlSmFGZVVnNWhwZWRoQmZoZ3dmUWRYYlJmUmFTZmtiNWIxZUVhWGVOZU1jVWhTZXdoNGRIZnlmY2JCZUplaGhkYVphUGNoZVJkS2dkZ2hnQWdIZUpiVGVnY3dlVmdsaGNkMWVhaGdhMWZlY1hobmVOYkxnVGZrZ0ZjdWdTZm1iUmc1Y1NkeGdSZ3hhSGNSYTFoTmFHZlZiWmUwZWJlbmRaZXpiYmEwYVphbmJIYmtnWWJFY1BlQmhrY2VoSGR3ZEZiR2dQZXdoZ2ViYllnU2NFZXVnS2dFaFlnUmZBYlRnZGRWZkxhUmJsYVpkQmdSZlZiRmVhaFdiY2RSY2NiRmUxY29oVWFWYkpjSGFkZVViMWNaZlRhRmRGaDRhY2VGY1pmMGVEYzJodGVTZEZoSGdGZEdoRWEzaGhiVGJUaDJkUmJxY1VoeGhrYVRoY2FGZjhjUmZIZzBlRmUwZENnaWdFY01lSWJSZWdjOWJkZ3dnaGhjYk1kRWE5ZStoQWdsZDBoVGZGY1RlcGgrZFBkMmc5Yk5iWmF3ZlFiYmRRY0ZjOWRLZEVkRmRKZ0VlQ2czY0JjYWhRZ21lOWNpZlpjbWhrZFViY2hrYTVhemNFYkVmeGNOZlVnVWJGZUJoQmNpYkFobmFGZGpmMGNFYk9hUmM0aFllRmQzYnRjU2FPZ3dhMGZEY0doemQ4ZFNmTWRXaDRnL2ZXYWxhaGZ4YlRnUmROZ3RoV2NrZTlmNGdkYWxnTWFCZkdobmNCYlhjY2IxaFllU2FlZWtjZGNrZFFnV2Y1aEtiWmVIYmxjTGFGZEhiRWVkZkhnVWUwZVpnVmhuZVJkdWhkZ25kTWc3ZURhaWM1YUZiSGhBaEVld2ZCaDFlOGFBY0hlUWNVY3pjRWJnZE1nOWZBZVNoa2J0ZFVlUmdNZmFjZWcxZHhjTWRSZmxkRmVkY0hlRWRKZkRhZGVCZWhld2RRaFhlUmhSZlNja2Q1ZzFhRWZYZE5iTWFVY1hkaGR3aFZibmVRZVBnYWUxYklmY2ZKYVFoNWJhZktiMWQwYUNlSWZTZWNnY2NTYjBicGIrZ1NjQmdFaFhjUWVCY2toSWRJYUFlUWdQaEhibWN3YzFlU2N4aDloeGJDZmhnUmdOZUJjVWdwZjBhZGVuZzlkemNNaDJoeGhuZUZoaGNKY01iZGZVYm9lUWhVYWtiUWhMZmNiRmJwZ0NkYmIyYUpjbWJhZlJlUmV5aFRnbmVNY1FhR2FBYVVoWWVHaGhkc2dEZ0xlRGFsYlhkSWRoY2hlNmZFYmdmSWRQYUpoM2ZJZDhoQ2hCaFFjWmRKY0ZiNGI0Y0RiMmdCZFNoQWRuYmhic2NFaDNmaGVUaFRnMmNSYnFnVWZ4ZGtiVGhjZkFjdGRaY1ZkaGRKZTZoUmYyYlJkQmNaZTBlTmRvZ1VkMGFzYlVlY2ZSYjBlZGdUY1JnbGVXZ2RmR2c1ZTJlY2cyZzlmR2ZaZHhoWWdTYVRlQ2FFZkNhV2dRY0ZjS2dYZFdhUmdVY0FheWNzZG1oYmhpaG9mYWFQYnhmc2IvYlJoQWZVaGRnSGFSYkFoZGJEYzJoQmU5ZUZkaWhJZ09oSWhCZDFmQ2RYY1djUWRZaGZnUWVFZEVmTmFDZlFnZmFKZEVhTWJ5Y1dka2RkYzRjWGdUZWxlNGVVZTBhOWJrY2FhbGZNY1pnRWYzZ0FnTGFXZVZnWWZTYmVmaGdwY2toQmhDZ0lnWmdJZVhia2VRZ1BjbmdFYmRiSGRVZDBhWmZWaG5iUmZ1Z2RmbmFOZnZjUmFtYWNnV2ZFZWtmd2NqZENmMGhKYVNkQmN4YUJkYWVXZmtjSmZ2ZVlmbWNaZ3BnRmRIZEplT2FjYXhlQmJNYlRoVmJGZUphRmRVZllkcWVkZkFiVmd3Y0RjM2d4ZjdlU2RrZjVjMWNFYVhkTmFNaFVjWGRoY3dkVmVuZ1FoUGNhaDFoSWdVZWNiVWFZYVRiY2VBYWNhSGVMY1RnbGhkZVZhRmdZYTliUmdBY3NnUGhhZVRhWmVIYWJnMGdGZC9nTmcyZFJibGRWYnhkUmhwYkZiQmEwZVJiR2NRZklnOGdKYnloVmQ5YklhZ2NNZ3FkV2hVaEFoVmFEY2dhWmJ0ZVhhbWc0Y0xoY2hGZHBiQ2diZDJkSmRtZmFhUmRSZHljVGVuZ01iUWVUZEVmMWFSZFNmUmhWZkdhUGVUZHhoUmVJZDBnOGQ1YUZkQWZjZ0JiSmgwZ2dmSWJBaEZoRmV6ZGNlRWFVY0pmRGEzZmRiT2ZGaEdmbGRQZ0VheWhSZFRjR2V5YXdkamZBZ0JhZGFlZk5kVWVZZFdkQmhFZ3NmQmdDZTJoUmRLZWJkbGdnZVpkZGVXY0VhVWFjZlJjMGRkY1RiUmdsYldiZGNHYTVhMmNjZTJkOWNHZlpleGNZZlNkVGhIZFZoQ2RSYkJob2dOYVdnSGY0ZVhhQmh5aElmdGdOaERhQmh2ZlBka2Q1ZDRjRWdGYmtld2VVaFZlVWNKZ1RlbmRGZDliR2ZDaHhhQmZJYUJha2NEZUhjWGJ0Z2NjTmVnY0VkZWFLaGlja2V0Yk9mQWI5Z2dhVWhnZ0FnTWZTZWpmbGU0ZVVlMGY5ZmtlYWdsaE1jWmFFYjNjQWdMZldmVmFZYlNoZWJrZmRha2VRZFdnNWhDY01jRGRFZkNkUmczZzllUWZXZUFjQmVXZUJnQ2EwY1ZiT2ZuZ05ka2NSaG5oQmVyY0VjbGZCYnBoU2JnYmhmYmFSY0ZlZGd3Y0RhZ2NvZW1jTWNXZWdla2JVaFRhOGVCY0lhVWNrZTNiQWZWaEZjQ2NGaFZkZ2JVaFhkaGJoaHdjUWdYY1JoUmJTYWtlNWMxaEVlWGhOZk1mVWZYZ2hid2FWZG5lUWhHYVllbGc0YitmY2NVaFljVGhlY0ZoTmJQZFphR2RwaFRoR2VSYk5kd2dDYzFobGJXZkVhbmZwYUhkTWVBZWthbmJHaFdib2F2YVdiaGZvZndoV2dWYWxiRmZXaGxmZ2U1Zk9nemVvYW5oSmRoaFlmcmJUZnhob2dOYWZoRWFNYWVkQWNBY3RkZmhQY0ZkSmZSYmZlbWJ0YW9nSmFFYUVnK2dHY2plcGhBZEFjQmhSZlpmR2JoZXhlQ2VRYjNkUWhZZWNkRWRGYTBjVWdVZHBhT2ZkaFJkRmF6ZVRmRmdGZTRnY2ZGZlpoMGZEZTJkTWZlZ0ZjSGhwYWJiRWgyYUJmYWRRZTBkNWdxaFVneGVrYlRkY2ZBYnRnWmNWYmhkSmI2YlJlMmZSZkJkYmVrYnBoa2hlZVVoc2ZjZU1jaGgwZEFnVGJWY2RmZWhYZG1iNWMyYmNjMmU5YUdjWmh4Y1loU2NUY0hiVmJLYkVnRmFKaEVlQ2UzZEJnYWNRYm1iOWRpZ2JiamYxZmNmT2J4aDFkOWJYZFFna2NBYUhnaGV0ZE1lTmVTY1ZlMGdFZzNkQmVRY0NkVmdGYldlVWZuZFVhSmFlZmtod2hOY2ViQ2NRZGVhUGhWZXhobGJIYjFlRWc4YkNkVWNFZWhnS2JBZ01nWmRaY25oa2JaY0VoM2NBZ0xhV2JWaFlmU2NlZGthZGNrYVFkV2I1YktoWmZIZ2xlTGRGZ0hmRWFkZEhhVWZWY05nSGhqZzBoOWhlZkRlNGdxZENoeWVoZkVjU2F6YmNjNWhTaGhndGVTY1ZkM2ZaaHdnUmVsYjVidmdlZG1nOWdwZ1NmSGRJZmFoT2gxYmtnZmhRZ3hod2JNZVdhQWdFZTdkTGRXY01oOGFRaFhjOWNSZFdkRGNOZzViT2gzZ05mTWRVZVhkaGV3aFZjbmJRZ1BnYWExaEliVWFjZlVlWWZUZGVjRmROZ1BlWmZHYXBjVGdFZ1VlY2I0ZFFnZ2dwY1lkWGF6ZjhkS2NLYnhiTWYzZk1mU2JoYjVjUWNCZ1Jha2dZZkJnMWNSYUJiVmZaaHNjWmUzZ1lkdmdiY3hkSWd2ZlhiMGJGY0NkT2hBZTlkZGRIaFJnWmVTZkNjeGFaaENiWmFHZ0pneWRGZUJmaGNZZVRkbmdNZFFnVGZFZzFmUmVTY1JoVmdPYmFlWGJRZVliY2FFZkZjMGdVYVVlcGFPYWRmUmhGZTdnR2FCZWtieGZJYzFoZ2Y1ZFNhaWVZYmRlUmhpZmdoOWFYYzNhaGdZZFRkM2RNZVhkVWN3YlVkUGFjZ0JkTmNRZlZoa2E1ZDZjRWZ5aHdmSWJQaFVjUWhwaFBkQWhaZGJoSWgwaFJibWFBZFJkbGNkYmRiSGdnY0xkV2VXZjlhR2haZHhlWWhTZlRjSGRWY0tkRWZGY0phRWRDYTNhQmNhZlFmbWE5ZWllWmVtZUFjZGFmYm1hUmZ6YkVmRWF4Z05kVWFVZ2tkVmdUaG1obGIwYkdoSGZCZ0JkZGJGZUZmS2dUZ25lVmdGZE9hd2VVZENoZGRpZ1pjRWZlaGtoNGh2ZUZjaGN3ZHliU2hGZzRjdGJIZHhlc2d0YU9maGY5Z0FoR2F6YkVkQ2NVZ0ZoaGJBZ05mUmZNZm9nU2FYYjFnYmFiaFhhY2JHZVFjVGUxY0phVmJCZzFoVmZEZDNkd2c5aGZkM2c5YkZoUmJtYWNiV2dFaGtjeGgxZ1NoaGRCZlNmUmJBYnRjd2VXaGtkSmV2YllhbWZaZnBkSGhEZDVjT2JlZUFmMWJNZFZnVmFoZEZiUGUwaDVncGVkZEJjaGd3YVFkWGVSaFJmU2RrZTVnMWFFaFhiTmhNY1ViWGNoZ3dhVmduaHhhTWFhYTBnOGhVZ1BmMGY0YzVlZWNGZk5mUGRaYUdicGhUYkdmUmZOZ3dkQ2IxZmxjV2NFZ25jcGdIYlpkRWFGY3VkU2dtaFJheGRIZjFld2Q0ZlRmaGRNYUFiWGFCYXNhN2NQaENhOGdJZEllMGJaYnNiRmhnZ01ieGhkY1ZlWWRNYVVhbGZ3YkNkY2JBYlphQ2VPZHlmb2N2ZE9laGFvZi9lQ2h6ZzVkZmZIYmhoUWZxYUJhV2JoZkNoUWczYVFoWWhjZEVoRmQwZVVoVWJwZk9nZGdSZUZmemFUYkZmRmE0Y2NmRmZaZTBhRGgyY3RjU2hIY0NlVWdPYVdjaWF0Z2RhQWVpZEVobmJIZkVhdGJLYkNnMGNkZlpmWGRSaEpmcGNPY21hUmhkY2Nma2ZwYzhnY2dFZ3RhSWZjZ1VkbGhWZUJiRWJwZlloT2VTZnNiN2JQYURnMGdmZkhlRmVvZlNmUmQzYlZlWWNiZ1ZmNWd1YkNmM2RCZ2FiUWdtYTlhaWdaZ21ka2NVZ2Noa2Q1ZXplRWRFZHhiTmhVaFVna2JWZ1RibWVsZjhjVGdEZGdkSWdKaDFlOGFIZENlemdoY2VoSWRSZlVhcWVOYkhmQmFkYmRmQmJvZFdjVWdnZWhkdGZSZ2dhdGZ4ZlVheGhOYWtnUGhoYnRoUWNRYkhhNWhHYUhmQmh0aGRlS2dCZDRoZmZEZVdnNWhCZFplR2IwYjJhR2JGY3NmZGJIYlVjMGhaZ1ZibmZSZ3VoZGZuZU5hdmNSYm1nY2VXY0Vka2Z4YjFmU2RoZEJlU2ZSY0FoTWdrZkViZ2hzYThmYmdDZXNjc2ZXZ1RjMGNjY0tjbWdzaEFoVGdWYnBoSmdBZGpjTmRwY2FiQWNSY3dhV2dYZDFiUmVGYWtjNGNoY1dhVGhvYWZhWGh6aFVkMWhHZ3pjdGNkZk1kaWJsaFljY2FVYzBoVGdiZGlmNWhsYlpoR2FwZVRiR2VSZE5jd2JDZzFlbGdXZ0VibmhwZEhjWmZFY0ZjdWdTZW1oUmg1ZVFlaGgxZDlhTmh4ZjFjTmVHY1ZmWmUwZmJibmJaYnpkYmYwY1plbmFGaGhhSmVNZ2RjVWNvY1FnVWFoYkJoRGNPaFFobGZNZk9nWGVGYm9mS2JGZEFlMmVSYmpnQWNlYkFhUmFnaGRoSGJWZHdoZWFKZlNjMGhRZ01nVWhoZjlkWGN4YWdlQmRJZ1ZnMWc3YlhoMGRCaHhjZmRoY3NnaGRRY3pnOGdiZlJmRGIwZ2ZiR2V5YnRjYWhRYzBnNWZxZVVkeGFrYVRnY2JBYnRnWmVWZmhhSmE2YlJkMmhSZkJiYmRrYnBla2JlZ1Vnc2NjYVBmUmUwZ1doVWdCZWxjT2JmZ1dhSmVjZWNiMmU5YUdhWmN4ZVlkU2RUZUhlVmJLZEVlRmVKYkVkQ2UzZkJjYWhRZW1hOWRpZ2JmaWJvaFVkYmgwZTRkOWRHZUdhWmNOZ1VhVWVrYlZmVGVtZGxlMGFHY0hlQmdCZ2RmRmZGZEtiVGFuZlVlUmFjZTBheGRSZWVkSGdnZUNoUGRFZVlhNGVYYUZia2YwZkNhMWR3aHFoQ2VqZlFkb2dhZGxmZ2VaZ0FjZ2EwYUxmUmdVZG9jU2ZZZ2tjNWNrZ0hhV2Y0YWVjTGZEZUFlWWdHZWpoeGNZaFVhQWhKYkxlRGJ3YjhjaWhDZDNkOWZGY1JibWdjZldjRWNrY3hmMWZTYmhmQmZTY1JlQWd0ZXdnV2NraEphdmJZY21jWmFwZEZmSGJKYUdlSmgxZmdoRmhIZmxlOGFFZFViQWVNY21jSmdrZUViTGNEYVhhUmhhZlNlbGgwZkloRWNXZTlhUWhVZldkQmE1ZlZnaWZnZVBkUGV4aHBhZGJJaGtoaGhlZlBhUmc0YkFmTmFqZ01lb2hWaFJiTmY3YUNjMGRzZ3JlSGdsYUJoSGZaYkViRmF1ZlNobWNSYzVmU2R4ZlJheGRIY1JlMWZOZ0dkVmZaYTBkYmhuZ1pjemViYzBhNGd6YlhnbGNzYWZhZWF3YmRoVmdIYXdmdGhaaEtlU2VFY09jYmUyY2xibWJmaEdobGd5Y1VnbWc4ZFFnVmZFaFJoUmFGY1JjVWVhYUlhVGUxY0xmZmVnZXdmeGFIZUFmVWRjY0xoR2JvYy9jVGJGaHBhNGZaaENhdGU0YUpjV2h0Y1NkRmZIZUZjR2dFYzNkaGFUY1RkMmRSZnFnVWF4YmtnVGdjZ0FjdGJaZFZmaGhKZzZjVGR6Z0FlSmZKZXhnbGdxZU5hQWI1Y1pkUGNrZjllRWhOZmxnVmhXY2ZhMmE1ZmhnRGFtZzlkYWhlaHhlWWdLZ1JoWGRVZVdiRWNBZ1lkTWNRaGloTmZVZERjeWFvZHZoS2hUYnRiTmhDZFFmSmN6aEdlMGV4ZmJhTGFHZ01hVmRUY21jbGUwZUdiSGdCZUJmZGZGYkZkS2dUZm5iVWhSYmNiMGF4Y1JhZWRIZ0JlZmZmZ1FhTmFCZlVhaGNSZHhjUmhoYk5iNGNVZjBmOWJrY2FnbGRNZ1pnRWEzZUFlTGVXZFZiWWVTY0xkZ2c4YnRjRWJtYUFhY2RjZ0hlY2RLaFVhRGJVZFZkWGVrY05jVWFBY3pjZ2I2ZFBneWVNY2pmSGgyZDloWGdHZzBmVmY3ZEdlRmM4ZUdhQ2hBZE5iamRTYzBidGJoZ0xiemZNZ2xmUWZEYnNnZWFQZzBnbGhFZEhkbGRoY1NjUGUwZTVjcGdkZkJmaGZ3ZVFlWGJSYlJiU2hrZDVlMWRFY1hoTmdNZ0RnRmNKYXdnVmJuZ1FoUGRhZzFkSWRVZWNiVWhZZlRlZWdGY05iUGJaZEdiSWRiZEdmUmFoZnRjQ2cwYnBlRWZFYW5oZGNIaE1jQWZrZ25oR2JXZ29mMGFEaGxna2ZpYlZnRWdjZklhRWRGZnBmZWNiZW5oWmR6ZGJmMGFaY25nRmNoZUphTWJkY1Vob2ZRZ1Vha2RRZExiY2VGYUlhV2VKYnllc2YxZFpiMWdraDNlQWJ5Y0JnWmFGZmdlaGJSY1ZiQmZWYWViWWZIZmdoeWVjYUVhRmIwYlVjVWRwZ09jZGJSYkZkemFUYkZjRmE0ZmNoRmhaYjBhRGR5aFJhU2RFZG5jZGhHY0dmeWJ3Z2JkQmdqZ2Rha2RIYWxjeGVlZlBiMWVrZEFoVmFnZzljNmRSZldiWmRJYmRkV2dCZGthZWhVYnNkVWJjaFJjMGRkZVRnUmZsZVdlZGJHZjRhcmRXYldlOWNHZlpkeGRZZVNoVGFIZVZlS2hFZ0ZlSmZFaENmemFraGNmUWVtZmNka2NaaG1hUWVVaFlkVmJ4YnpnRGVsYkZjTmNHZFViQWNWZEZiVWhOZjBnR2VIZ0JkQmhkZ0ZkRmdLZVRhbmRVY1JnY2MwYXhlUmhlZENhWWVYaEplZ2c4ZzdhVWdnZGxkeGdBZEJlTmExYVVmMWV4YjJiY2FYZWtoWmdFYzNiQWNMZldiVmNZY1NkZWVrYWRoa2dRaFdnNWVLY1phRGYwZUVlRmRDYW9lM2FIZVVmMGZaYlZlbmhSZnVkZGJuZE5odmhSZG1iY2VXZUVna2Z4ZjFoU2hsZWtmVWhSZEFhTWYvaFVnMGJJZDBmU2NHZlpkcGVGZUhhSmNPaGNkeGJCYk1hVGNWY0ZhSmdGZFVhNWhwZmRoQmZoYXdmUWZTZEljUWJHaEVjNGgyZ0NkbGJsY01oVWVYY2hmd2hWaG5hUWVQZmFiMWZJZ1VnY2VVZFlmVGZlZEZlTmNQZ1pnR2dwZGJkV2hoYU5ldGdDZHhoZGVlaE9kSGJwZkhoWmNFYUZjdWhTY21lUmc1YVNheGJSYXhoSGVSYzFjTmZHYlZiWmcwYmJhbmNaYXpoWmN4Z0pmcGdWZlZhb2ZOYkpleWVsZmZmRmdnY0ZncWRKYUZhSWRLZWJjMmdsZm1mZWhCZDFleWJVZ21jOGNRYlZhRWRSZlJnRmFSZVViYWNaZ3pjZGhRZ01oUmFNZ1hiSGVnYjRkTGJGYkVnVmM3ZEJiRmJoZDBoV2JsYlphMGNEZTJjdGNTYUZlSGhGaEdiRWczaGhnVGJUZDJhUmRxaFVleGdrZ1RjY2JBZ3RiWmJYZmtjWmcwZkJkQ2J3YUFkUGdDZWtncmdQZVFjNWExY0phUmFWYVZmVGJSYUphV2ZaZzJlZGEyZWJiM2FOZUdjZmN4ZThkU2dFYkhlVWFlYUhmaGhFZE1iU2dpaEllNWhEZVNjc2NuZEJnemcwZWNlT2JrYTVoNGdFaEZjNWVFZFhoV2hNZlZoVGVtYWxnMGJHYUhoQmNCZWRiRmdGZktiVGhuZ1VkUmJjaDBoeGNSZ2VjSGVCYVdkZGVBaGNhL2ZYaEZnY2c1Z0JiMGJFaGJoSGVBZXNhaGdDYndnY2ZSYVdkM2ZBYUFmV2ZVZk1lYmJlY2xhdGU0ZlFmWGNaYkRnWmNDY1ZiTGVRZEhhOWJlYlZmUWR4Y0xlTmdUYXNkcWNNZHhmSWc3YlRkaWU4Y1dkR2VVZXhmaGRRZXhleGE0Y1JhQWZ0ZXdkV2RrYUpldmJZZm1nWmNwZ0ZkSGZKZU9mY2F4ZkJlTWhUZFZhRmhKYUZlVWQ1ZWhnSWdCYVloemJDY1RnVWhEZUtkUWJFYXhmVmVCZUliWWFXaFRoQmZ3ZVhhWGVRY1lmWWZsZ0lkSWFiaFVnWWhMY2NhVmFNaFRhWmVEZDVoZGVXY2xic2V4YVdoVGNvZFpkVmRqZDhibWVNZkVka2dtZlNhbWY5ZzVmWGJSZDFkYmJIZ1JoMWNOY0dhVmdaYjBhYmVuZlpjemFiZTBoWmhuZEZhaGhKY01hZGdVYW9nUWJXZjBhMGZIY1dhbGFwaENiYmEyZ0phbWdhZlJjUmJ5aFRlbmFNZlFiVGZFYjFhUmJTY1JkVmVPZWFmWGRRZVlhSmVBYmtnOWRBZ2tmUWdZZlpnQmE4YXlhQ2hCY1Zmd2VNZjFnZ2E1aFdiaWRjZEdoWGJTYkVoS2RTYm5oQWFTZlJobWMxYmtiQWRWYVpkSGdQZ0FkTmFLZ1JleGZ0YTBnQ2FqYkVjTmFPZ2diTWMwZ05nUmZJZ2NnSWVoZVFoUmRaY3hnbGJXZWRjR2Q1ZTJkY2IyZDllR2FaZnhoWWRTYlRoSGdWZEtmRWZGY0pjRWZDZzNoQmhhZVNmaWNkZ2ljYmdYZlFoVWhhYmtkZGcvZ09ja2N4Y05hVWhVZmtoVmdUY21ibGIwZUdkSGRCYUJiZGdGYUZlS2VUZm5nVWFSZWNoMGh4ZlJjY2FEY05iV2hhaFFjOGFsY1dhamI1ZnhnUmdoYU5mNGZVZzBnOWFrZGFnbGNNY1pkRWgzZEFmTGFXZlZnWWZTZGVoa2ZkaGtoUWJXZDVjS2ViY0NmMWZGZFZoemdsZWNmVGN5YzVlV2JFY2pkRWdQYklmbmNzZG5mUmhtYndjV2VBZjBlVmYxYVZhZ2R4YVNoWGNBZUpmd2NCZGtkSWg3ZWJlQ2VVYmhnVmFTYUFhdGNQYUZoUWNKZUxhQWFWaEJkWGhVaGRibGRYZ2hmaGd3YlFmWGFSY1JoU2hrYjVjMWJFZlhlTmhNZFVoWGVoYXdkVmNuaFFkUGFhYzFlSWNVY2NkVWdZZmJlTGhGYjBmTWhMZUNjc2NCYWVlbGh3aDBmVGZqaGdmQ2VHZWpjSmhIZ2JhMGhGZDlnUWMyZlJhbGRWZ3hlUmNwYUZjQmcwZFJkR2ZRYkpjNmdMZ1RiNGR5ZVBhU2FVZm9mVWRsY2NmdGRJZVVhSmNZYlVma2M4ZUxkWWhsZk5mT2hSZVdmSmdtY2FiUmhSZHlhVGFuZU1iUWhUaEVhMWZSYVNhUmRWZE9mYWVYZlFiWWdjZEViRmcwZFVhVWVwY0dnSWJSaDhmd2ZCYUJiQWdxZEVleGNrY3dmU2FnY29iR2ZIZkRmbGJHZEdiSGRoY0diUmRtYlJmMmhUZ3hha2NMY2VmUWdzaEZmVmRrZ1poMGRCYUNod2RBYVBlQ2drYnJjUGdRaDVoMWJKZVJlVmJWZlRoUmFKZFdjWWRHZ2RoNmdXZldoOWZHYlpheGNZZlNlVGZIZFZlS2NFY0ZiSmRFZ0NjM2ZCZ2FmUWFtYzloaWFaZm1na2VVZWNia2g1YzdhUmFFZkljT2VHaFFjaGdIY0xjU2JZY3dhWGhSY0VoVmJmY0JmbGdLZVJoWGhVZEdmZWJrZXhoTmJaZkhlQmdPY2ZoUWg4ZTNhVWNrZkJiL2RCZVZjc2E1Y0FhU2d3YXJmTGVoY1piNGdSaDNiaGJEYldmVmMwY1NhYmdFZDVjT2RRY1dnNWRLZ1piSGRsZkxnRmRIZ0VoZGFIZ1VnMGRaZlZibmNSZXVkZGduZ05idmZSZG1hY2ZmZUdjMGhCYmZiU2hoYUJoU2VSYUFkdGh3Y1dka2FKYnZnWWhtZVplcGdGZUhhSmFPZmNheGFCY01lVGFWZkVjZGJYZFFiY2g2YmVha2I1YmlmVGh6aFVnVmZEaGtlWWMyYUhhemQ0YlpnSGJTZHdnNWFCYmpnaGVXZ1lneGhNZWRlZWJFYmhoQmhOZHdnY2VEZmJiSGdsZkNoRWRCZDBjOWRYYmhmVWVDZldieWJvZkxlUGNVZWtlOWdRZjJiaGdUaFNheGFSZHhiSGhSYzFmTmNHaFZhWmEwYmJibmFaYnplYmUwZlplbmJGYmhlSmJNZWRkVWZvZVllR2FrZ1FjQWFiZFZlcGVhYVpibWc1ZE1hYWFSYVJleWJUYW5lTWZRY1RkRWcxZlJlU2ZSY1ZmT2dhZFhnUWJZYWNjRWNGaDBhVWVVYXBmR2ROZGhmRmd1ZlRiQmM5ZXdlV2VsZVplMGREZjJjdGZTaEZjSGJGaEdkRWEzZmhlVGNUZzJhUmZxZFVjeGRrZVRiY2JBZHRnWmdWZ2hkSmV5YkVoMmVvYUNlSmVnZnNoMmVHY2diUmVRZk5jSGF4ZkplUmFWYkZiV2NmZTJhNWJuZGVlbWQ5YmFoZWR4aFloS2dSaFhoVWRXZEVkQWNaZUtlU2NEY2diYmdFZkFnd2h0aEloaWF4YzFiSmRrZlliN2JHZ1VkQmVuZVVoVWNraFZjVGVtZGxoMGdHZUhlQmFCZWRkRmNGZUthVGVuYVViUmRjZzBkeGRSZWVnSGhCYVdnZGdBZGNiL2dYZUZmY2E1ZkJhMGNFaGJhSGFBZXNoaGJDYXdjY2JSZldmM2hBY0FkV2dVZFVlYmRlZWxodGg0Y1FmWGVaZURkWmJDY1ZlTGVRZ0hjOWhlYlZmUWV4YUxhTmZUYXNlcWFNYXhlSWY3ZVRiaWM4YldjR2dVZnhobmRRYnhheGU0aFJkQWF0YndmV2NrZkpkdmhZZm1nWmVwZkZoSGFKYU9lY2F4ZUJkTWVUYlZiRmZKYkZiVWE1YnBiZGhCYUFka2ZUY3poY2FaaENleGd3Z1diWGNqZ2NhSmRNaENheGI0ZkhlbmFRZUVlYWcwZmNoZGNjY1Zib2hQY2VkRWh0YUdhWmREYlpiVGRUZVJoMGR6ZlFkeGFnZkVjY2RUZFVkRGdJYlNhQWM2ZVFiaWd4ZDVhUWZCYlJibGVGaEJiRmRuYUdmVmhaZjBnYmVuZFpiemFiZzBoWmFuZ0ZjaGFKaE1jZGJVY29nUWJVZWthUWRMZmNlRmhwY0NiYmYyY29meWFaZDFkY2g2ZURmeWhGY3pnQWF3Z2toVWFLaEVoRmNHaElkWGNRY1RmY2NGYlplOWFVZVZiWmNTZmRnUWRsYjZnVGVBYTFmNGVKaEZkZ2UzZlJieWJvZUFmZGV6YjRhQ2JWYmhma2RIZ1JneWN4aHFkV2NCZmtoRmFlY1NiRmRaYVZlaGhKYzZjUmQyY1JiQmJiZWtmcGFrZmVlVWZzaFVnY2JSaDBoZGhUY1JmbGJXaGRlR2VkZy9jZmUwYVZiR2haZnhmWWhTY1RmSGdWaEtiRWRGYUpkRWNDZjNjQmdhYlFhbWQ5YWlkWmRtZGtjVWJjY2hib2I3YVdnUmE5ZkRmQmMxYm9kYmZEZHloMGF3Y0VmRGFOY1BiT2dRYlFlR2dHZmpjeGNCYlBoeGFWZ1pmT2VYZmxlZmFlZ2xoMGZrZEJjbGdoYTVnVmNRZEpoeGNYZFFhSWd4ZUphZ2dkZFFiUWN6ZXhmU2FVY1FjVWhiZmRkbWUxY2tlUWZXZjVjS2JaZEhlbGhMZUZlSGFFZWRhSGhVZDBoWmhWYW5oUmR1ZWRibmJOYnZkUmNtZDlhZWdFYmtlZGRvZ1NhZ2VoZWJnU2ZDZEZod2FXaGtkSmZ2ZFlmbWRaY3BoRmRIZUpkT2ZjYXhnQmRNYlRnVmJGZ0pjRmZVaDVicGRkYkJjQWZ6ZlFmV2VsYVJnQmhFYVplZmZFaFhjTmNNZVVmWGRoYXdmVmZuZVFmUGdhZDFnSWdVZWNhVWZZZVRnZWdGZ05kUGNaZUdlcGFUYUdhUmZzaGtiQmRSZm9nZWFVY3loZ2ZrYktkd2NVZ3JmS2F6ZkJheGdBZ3hnUmU2Y0hiUWN4ZEVnR2RVZHBjb2JiYW1iNWM2ZGJmeGRwZm5lUWVoZXdhUGVQZFFjdGJDY01lUWh0YVBoTmNUY3NiV2NaZHlkcGR2ZlplVGM1aHllVGFuaE1hUWVUYkVjMWFSZVNjUmZWZU9lYWdYZ1FjWWVjY0VlRmcwaFVhVWNwZk9oZGdSaEZoemVSaEFlVmIyZk1jeGU0aDFmWGJRaGdjZGFVY0RlUWRuYVJmM2FBY2JnVGcyZzlhcWdRZEJmQWJUYWJmQmJkaFpkVGVoYXRmNmRHYjJhUWhWZlliQWhrZnNkT2RCYmxiM2ZQYmxkbGNZZExhRWIxZGVnUGFHZDVoOWVjZzNhMWRQZWFoemd3YVNkVGNIaFZnS2ZFZ0ZjSmJFZkNhM2ZCYmFkUWZtZTloaWRaZG1la2ZVYWNna2I1YnpmRWZFZXhmTmRXYlJoMGJiY0RmU2FFYzFoU2RoY01jT2hNYkJlUWRyYkdjbmgxYlphY2UwY2RnUmdiaFhjbGNXYWFiQmVOY3JmU2NoZjFmeGNHYWhkTWZzZlhlUWF3aHNlS2V3YkZkNmJYYURkUmZPZE9mQWhJZmFjTWZrZmRhdmRRYVhmcGdEYmFlRmVOYkxnRmFIZUVoZGhIYVVmMGVaY1ZibmJSZXVoZGRuYk5ndmZSZm1mY2NXZkVka2Z4ZDFnU2FoZ0JjU2FUZUZjOWIrYUdnUWNvaHVkTWNBYlVjbWZVaERjY2h2ZUpkeGVnYkVkVGhWaHBiSmZBZ2tkZGVwZ2FkQWJSYndiV2dYZjFjUmhGY2tnNGhoZ0hlemZBaEVnRWVDZG9kVGRHYlRkQmZLZUNhZ2FZZmNjT2hVYllkWWFlY0VoVmVHZ1RkbWRwY1RhR2dSZE5hd2JDZDFnbGZXYUVmbmZwZEhoWmdFZUZhdWZTaG1lUmI1YlNoeGdSY3hlRmNCZ1JkQmRNYTFmWmQwYmJmbmdaYnpnYmYwZlpkbmJGaGhhSmdNYWRjVWNvZ1FiVWJrY1FiTGZjZEZncGZDaE9jeWZvZXZnT2JoZ29ma2ZXZm5oMWFSZkNhQWJsZlpkQ2doZXNhRGdQZkRlaGRNZU9iUmJFYzRoQ2ZFYkloUGFmY0JnaGE5ZkhoaGQ0ZnNhUGhGZzVkbmRIZW1mSmRjZFdkU2VRZEtnUmZ6ZEVjRGFBZHpjMWRpZ0FjQmhBZElkV2FnZHRjWmRWZWhlSmI2ZVJiMmZSaEJiYmNrZ3Bma2ZlY1Vlc2dVY2NkUmYxYUFkVGhWYXdhYWdKZHlodGYyYUtnRWJWZkdiWmZ4Z1lmU2hUZ0hiVmZLaEVlRmdKZEVnQ2UzZEJiYWVRZm1oOWZpZFpmbWRsZUNoTWJ4Y3hiemZVYzFiZGhuY1VkVWJrZlZlVGVtaGxkMGNHZEhhQmZCaGRlRmJGZ0tlVGFuaFVlUmZjZDBkeGRSZWNiRGhOaFdhYWdRaDhobGRXYWpiNWd4Y1JmaGZOZzRjVWYwZjlna2hhZGxkTWhaZEVjM2RBaExoV2NWYllmU2dlZWtjZGdrZ1FnV2JZZmVhSGJ6Z0ZnTGFIYTNoRWdNZ1lkRWIwZ0ZjU2ZuZVJnMmdmZDNkTWV6Z1JjamROaHRjV2NqY0ZoNWNZYkJkQmZTZVJnQWh0aHdmV2hrY0pkdmdZaG1mWmZwZkZjSGRKZk9mY2d4ZEJmTWZUZlZhRmJKYUhkUmZvZ1NnUGJCaGhoN2FRZldlY2RzZ1NjbGRKZHBjRWRXYXRjRmFVY1NnUmF3YkFnZ2c5ZEhnYWgxYWtkVWZZYXpoc2hmZ1VkbGFOZFBlWmdHaHBoVGFHZ1JjTmN3Y0NlMWJsaFdhRWFuZHBjSGVaYUVmRmR1ZVNmbWNSaDViUWUwYkFjS2ZWZFJnMWdHYkdiVWNNZEpnYmVtY3BkdmdiZTFmNWV1YUZka2E1ZU1mSWVUYUZjWWVVY2tiOGNMZ1phQ2hkZk9lUmJXZEpibWJhZ1JoUmd5ZlRlbmhNYVFjVGZFZzFhUmRTZ1JlVmJPYmFjWGNRZFlkY2FFZkZiMGJXZlJlNGQxaFBhUmZGZDRhVGFFaFlnRmJjZUVmcGVvY0RkM2dOZWJhRmhDYTFjR2FSZndlTWZiZlRlMmU5YXFmUmRXZ1FnNWJjYUFmdGhaZ1ZiaGNKZzZiUmYyZ1JiQmhiYWtlcGdrZmViVWdzZVVkY2JSYjBjZGdSaEJoQmVhZVhlbWM1aDJkY2MyZjljR2VaZXhlWWFTYVRoSGNWZ0tmRWNGZ0poRWVDZjNhQmNhYlFhbWQ5YWlnTWdpYUZjZGhJZ1VhQWZsYkFhVWZJZU1lRmFRZTBhZGVEZVdhY2g1ZVRjVGV3ZVZmUGFRY0VlR2ZGZzNhMWVRY2Vja2RWZGZhS2ZqZzhlQ2ZPYkFhZGM0aFFjeGcxZC9kQ2QwYVlmMGFCZXdjWWgwYUpnZ2dvZlJiUWhIZGtlSGFjZzFlWWFTYmVma2FkYWtkUWhXZDVhS2VaYUhkbGNMYUZiSGdFZWRhSGRVYzBoWmJWZG5iUmh1YWZhamh0Z3ZmVGdYZG9jV2FDZmthVmQ1YVloQmFCZVNkUmVBZnRod2RXY2tjSmR2YllkbWhaZXBnRmRIZ0plT2VjZXhlQmRNYVRiVmFGaEpiSGVRZDFncGdhYlJkZ2crZVNhVmE1Y1JlU2hrZTVnMWFFaFhoTmNNYVVoWGFoaHdlVmZuYlFiUGZhZzFiSWFVZWNnVWFZZVRoZWhGYk5jUGFiY0RoNGNvaFVlUmZOYTdlQ2YwYWdjcmRFaG1kWmRiYVplRmdsY25iU2dqZ2hoNWRIYjJhOGg1YVlkQmJGZG5nR2VWY1pkMGNiaG5iWmF6Z2JmMGZaZW5lRmZoZUpiTWRkY1Vnb2RRZlVna2ZRYkxiY2FGaHBnQ2hiZjJlb2F5Y0VjbGZ4Z3lkUmFYZk1iRGhNaFVhMWdOYlZlUmJWaFdlWWRIYVJkRWVjZEJkVWZQZEdkVWJwZkZhZGJRZU1iT2NRZUhndGQ0YmNmRmZaZDBhRGcyaHRjU2FGZkhoRmJHZUVhM2JoZVRiVGUyZ1JicWdVYXhia2ZUZGNkQWR0ZFplWGVrYVlhQmdEYTJnUmNLYWJkbGI4Y1pmZWFWY2NmSWNjZlFnVWdVZlRhVWFWY1diSWZCZFVlK2ZjYjJoUmJHYmNlMmRzaGVoWmRuYVZkS2hFY0ZjSmFFYkNnM2hCaGFoUWZtZDljaWNaZm1ja2FVZmNna2I1aHpmRWVFZnhiTmFVaFVoa2ZkZkdiaGZJYzhjR2RIY3RlQmhZaHlkeGJLYlVlbWdrZFJnYWMwZVZmUmdKaEhkQWNDYURiMGNkZ3JkV2ZSaFJnbmRPZXphbGU0ZVVhMGg5aGtnYWRsYU1iWmdFZTNnQWZMZFdlVmVZZFNnZWZrYWRka2FRYVdlNWNLZFpkSGJCZUNiR2ZGYXNlZGhIZFVhMGVaYVZhbmRSY3VjZGZuY05jdmRSaG1mY2NXYkVoa2Z4ZjFnU2ZoZEJhU2FSYkZiOGM0YUVmeGRGZGhlTmRIZVJjbmdWY1RnWWFLZWVjMWFOYUNiQWJBaFFoRmhRY1FnY2Q1Y09mRWRGaDRlQWFIZjFjWWZSZkJkd2Y2Z1JlVGQ5YUVnUWFtYmxjNWdXYURjbGFhZ0pkd2RaaGRkSWZRZHBiS2NjY0FhQmdHYmFlRWZCZlRiR2NSZU5od2JDaDFlbGRXYUVmbmdwY0hkWmRFYUZidWNTYW1nUmI1ZFNjeGRSZXhnSGFSZVVlRmRHY1ZiMWVwYWJjbWM1YTZkWWQyZ3hhbmVGYmhoSmNNaGRjVWdvZVFkVWNrYVFnTGRjZkZkcGZDZ2JlMmRKaG1lYWFSYlJieWFUZ25ldGVUYlRlRmVCZVJhQmR4ZjFja2VhZFhmUWdZY2NkRWVGYjBjVWRVY3BhT2FkZ1JhRmV6ZVRnRmdGZTRlY2FGaFpiMGNEYzJjdGZTYUZlSGRrYVNmYWFEY0JkVGVSZkdhUmU3Z0xkaGJrY1BkYmJBYXRlQmRYYnhnSWFtZFJmemRBaDZiSmJqZWRnb2VVaDBic2NVYmNoUmgwZ2RnVGJSaGxkV2ZkZEdkNWUyZ2NkMmg5Z0dnWmh4Y1liU2hUY0hoVmdLZ0VmRmVKYU1oWGN3ZHNkU2NRZm1mUmdpYWRlUmFRZlVnYmZsY0pkemhDYUVkVmNOZkRoVWRsZUJmTmNTaEZhMGNFZzNlQmRUY0NmVmQxYWdhVGhuaFVkUmdjYzBleGJSZWVnSGRCYVdoZGZBaDllcmFVZmhmUmV4Z1JmaGZOaDRjVWQwYzlna2JhZGxidGVOY2FkRGZnaExoVWFsY1ljSGZCYTBjZGQ0ZlhjV2U1Y1NoYmVYY2tlWGJGYkNnVmRtZ1ZjVWQwZlNoVmNtZ0FkVGNlYmxobGZ2YVJkbWNjYVdmRWJrZXhkMWhTZWhlQmhTZlJoQWJ0Z3dlV2NraEpidmdZYW1nWmRwYkZlSGVKYU9oZWMwZ1FoM2VCZVZhRmZDY0ZnVmRrYlVkZGVBYVJkc2hRaFdkeGFZaFNiaGFKZDFjUmZRY2dmRWdVZlhjTmZ3YVFhQWhrZGxoYWIxY0lmVWJjZ1ViWWhUYmVjRmdOYVBhWmNHZHBoVGJHZVJmTmV3ZUNjMWdsZldlRWZuY3BlT2FiZ1VoMWJFZ1NmbWNSYTViU2F4YVJkeGdIaFJjMWdOZEdjVmNaZjBlYmFuZ1plemFiYjBnWmhuYUZiaGhJZFlhUGVRZU5oRGdYZUJoSWdZYmZlaGJzZEdhS2IyZG9jbGJaZzFla2ZuaEFoaWNkYVpoSGZBaEVhSWdRZlZiUmRIZ1lnSGJwZktoUGh4Y1VhNGdXZVZobGZmZGZnQmc4ZitiR2NSYzBkc2VPY1FjWWE0Y1ZnbWRNYUJhSGNYYTFmc2VFZzNnaGdUYlRnMmhSZ3FhVWV4ZWtnVGNjZEFndGFaaFZkaGRKaDZlUmIyaFJjQmRiYmthcGRzZ01hVWVzZ2ZlYmhCZDBjRmRSZUJmVmM4aGRoR2M1ZzJmY2IyZjllR2RaZ3hhWWJTY1RlSGNWYUtoRWNGYkphRWZDZjNiQmNhaFFjbWQ5ZHFmSmFXaGthSmFjaGdoQmQ3aE9oa2F4Zk5hVWJVZWtnVmRUZG1hbGcwZUdoSGdCY0JoZGVGYkZiS2ZUZ25mVWZSYmNlMGJ4ZVJkZWhIY0JmZWhJZEhhUWJqaFVkaGM5YXhnVmIyYjVjNGVUZDFnTmVrZGNmbGRvZlpnVGMzYUJoZmdJZmhoNWh2ZmRobWcxYmtnUWRXZDViS2NaZUhhbGJMZ0ZlSGdFZmRkSGRVZjBlWmFWaG5kUmN1Y2RkbmVOZHZkUmhtY2NjV2RHY2hmZ2dPaEFlaGRCZlpoUmZCaGdnTmNXZ2xkNWR6Yllnbmg1ZmdhRmJDaDVoT2FKZTJjc2ZFY1RoVmNwYkpnQmd6aE5lbGJYY2hkaGh3Y1FiWGRSYVJlU2FrZzVhMWRFYVhiTmdNYlVjWGVoZndhVmZuY1FhUGFhaDFmSWZVZWNoVWJZaGJiTGdDZmdhSGFaYUdjRmdUY0RjR2c1ZHdoRmIwZlZlV2RDY25lTmZIYk9hRWdFYjZiTWRTYXhlNWFRZEJmUmFsZVloQmVGZG5mR2ZWYVpmMGRiY25nWmV6ZWJjMGJaZ25mRmZoZUpmTWJkY1Vob2hRYVVka2NRY0xjY2RGaHBhQ2ZiYjJlb2F5ZEVjbGF4ZHllUmVYY01mSGJNYlVoMWFOZlZoUmVWaFdjWWJIY1JhRWhjZEJhVWdQYkdoVWNwZkZiZGNRZmNjT2JaZGxjRmQ0YmNiRmdaYTBjRGUyZHRkU2FGYkhiRmdHaEVlM2FoYlRmVGMyZFJocWdVaHhma2RUYmVjUWJKY1ZiZmNCYUpoNmdSYzJkUmRCY2Joa2JwZGtkZWZVYnNiVWNjZ1JhMGFkZ1RlUmFsZVdhZGdHYTVlMmhKYXloY2NQYk5nQmdoZEVoV2FIZnNjTGNWYUJmWmVNaFNnSGM0aFhoRmh5Y01mMmhMZnpobGhZaEtiMGJZZ3liR2JVZlZnRGZBaHdhWmdCYkFobWJGYW5mQ2VYY2xoUGFPZ1FnUWNHZ0doamV4ZEJhUGh4ZVZkWmJLaDNkbGNOZVhjZ2Y5Y3JlVWNoZVJjeGhSY2hnTmQ0ZFVjMGI5YWtoYWNsYk1jWmRFYzNoQmFXY2NkMWdZYlNmZWZrYWRka2FRaFdlNWRLaFpjSGdsY0xkRmFIZEVhZGNIZVVmMWRSZ1ZnbmQ5Y3pkZGNtZHRnMGdiYkdnY2FXYUVla2J4YzFmU2VoZ0JjU2hSZkFkdGF3Yldma2VKY3ZnUGUyZ1liK2ZYZERkc2JDY05oaGFCYkVjSGZWZEZlWGhDZUVmNGZoY2ZlUWFOYmFhUWJYYVJiUmdTZGtnNWExaEVnWGFOZk1iVWRYY2hjd2VDYjFnNGFQaGFnMWNJZVVlY2NVZFliVGNlZEZlTmdQaFpnR2dvYkJmWGdFZWNlbGRXY1JhZGFXZEdlbGdCZ0hnWmhFYUZkdWRTZ21nUmc1YlNoeGVSZHhiSGFSYjFkTmFHZVJlQmEwZGNiSGNZaDdhYmgwY0JhaGFQZ0JkSmhNY2RiVWhvYlFlVWFrZFFiTGdjaEZmcGNDYWJnMmJKZ21iYWFSYVJjNmNBZFZma2dRY1RlRWIxZ1JoU2FSZlZnT2FhZlhjUWZZZ2NiRWZGaDBlVWZVZHBmT2RkZFJnRmhzaFRhRmVrZ3NlT2dCZThkbmdBZlNoWWFYZ1dlVGU0ZlVnU2VuaGhlWWhVZW1oUWQrZVhoVWNwZmZkT2dVZ2dlY2VYZ2xncGZ6YVRja2I1ZUJlYmNrZXBla2JlaFVic2RVZmNlUmcwZmRkVGNSZ2xiV2JkZkdoNWcyY2NoMmE5ZmNnWmIxaDhjNGZUYkhiVmZLYUVmRmZKZ0VkQ2gzY0JmYWNRZW1kOWRpYlpjbWVrYlVkY2drYTViemdEYTBhd2JaZkdlUWhCZUdoUWJDZlFoeGJWZlRjOGhUZ0xhVmY4Y1pnQ2F5ZUVoWmJKaDBiSWZDY0xlVGRJYlhiSmdsYjBkcWdDaHhkd2g1aFNjaGRNZitlV2VraE5ha2RQY2hodGJRZFFjSGg1Z0doSGVCZ3RhQmRNZnhoMGFoYlNiRWZSZUtnWmJIYmxhTGZGZUhoRWdkZEhmVWUwZFpkVmVuY1JndWRkZm5jTmd2YVJlbWhjYk1oRWVoYmhmN2hDaFZkOGZDY0hoUWZNZWthRWhnYXNkOGNiaENmc2RzYldkVGMwY2NmS2doZ3hhTWVHY1Jja2FBYVJna2dBZWthTWNWYVVmamhDYUNoNGVVZVJja2Q0ZDlhSGZYZU1hS2RXZkhhUmRhYVZhbmFRZVBkYWMxY0lhVWRjYVViWWFUZWViRmJOZFBnWmRHZnBoVGRHZVJhc2drZlFieGhBaEZkSGNEZmNhQ2RLZlJkSWJuYUVoQ2dGYTVoVmJoZVFoM2VIZFJnQmROY1VnVmE5ZzlmWWdsY3hhemhiYjBiWmduZ0ZkaGhKYk1iZGFVY29lUWRVYWtiUWNMZ2NmQWY0ZktkSmRqZ0ZoTWhhZ1JkUmd5Z1RibmJNZ1FkVGdFZzFnUmdTZlJjVmNPYVljR2I4aHljY2NFaEZoMGdVYVVicGNPZGRhUmRGYnpjVGhBYXhleGVmZUhieGYwaERiMmR0Z1NnRmRIYUZmR2VFYjNmaGFUYVJieWF0ZWtjQWEwYXRjY2NKZUVnUWZOYURiMGhJYS9jU2RTZEFjSWRLY1FkOGgzYkxjVWRzaEpnY2JWaHRmSWFBYzFjb2hDZFBlU2hFZDRmY2MyZGRlUGRaZzBlMGc0Z1RiSGJWaEtoRWZGZEpoRWNDaDNiQmdhYVFlbWI5YmljTWRDYmhhR2FjZ2hicGIvZE9ia2V4aE5mVWFVZ2tlVmZUZG1obGUwZEdkSGVCZUJiZGdGZEZmS2JIZEhia2Q3YmNmMGF4YVJiZWVIYkJlV2FkaEFoOWNyYVVkaGNSZ3hiUmhoYU1heGFVZjFjSmdrZVBiaGR0YVFlUWZIZDViR2FIZEJjdGJkaEthQmI1Ym9iYWMyaDVlS2NaYUhjbGRMZUZlSGJFZ2RhSGJVZDBjWmJWYW5nUmV1YU1oM2hOZ3lhUmZtYlZiRmVSYmhjNGU4Y0JmRmJkZ1FkUmRCZFpodGZXY2hjWWYyZE1oaWdNZm1kVWFuZkloSGVmaHpicGZNY1RhVmNGZkpjRmhVaDVkcGNkZ0JiaGd3ZlFjWGNSaFJoU2hnaEZlMWJEY0hjTmJjZVhhVmZKZHdiVmduZ1FlUGJhZzFiSWRVZ2NmVWRZZlRoZWdGZ05hUGVaY0NjSmZUYUJjQmRNaGtoUWN4aEFiRmNIaERkY2RDZktoUmVJYm5jRWNDZEZnMWJZZVJlUmd4Y0hhUmUxZ05mR2VWZlpiMGJiYW5mWmF6YWJlMGhaZG5kVmFSYkpiUmRkZ1FmUmdWY0JjVWZSZkZlZWVGZU5oWmNSYldiSmJtZGFoUmJSY3lkVGRuZU1hUWVUZ0ViMWhSY1NiVmdNYkJjT2czY1FmUWNXYWtkRmQwYlVoVWFwaE9mZGRSZEZoemNUZ0ZlRmM0Z2NnRmJaZTBoV2N5aE1mYmNSZTNmOGVTY1hnQ2R3ZFNkQWN4aHNmbWZGYmxjY2NUaGJmaGJaaFpmUmVRY0JjUWdSYjJoUmdCZmJka2dwZ2tkZWRVZXNiVWdjZ1JjMGhkYlRiUmVsZFdnZGFIZEZiMmFlZDJlY2hTaFpjd2NzY1NiR2hEaDBnRGRRYzFnd2hTZEdhbmU0ZVpnRGdpZkFnc2hJZjJiRWJkYmZmQmd3ZThiUmZBZ0JiRmRRYkViQWRjYlFia2NOYjBhR2JIZ0JmQmFkZEZhRmFLYVRhbmVVZlJhY2IwZXhiUmNlYUhlQmZXaGRmQWE4Yy9jWGhGY1VkMWdBZ2hkc2NzY0dhd2NZYzNhWmhBYlVmTGRIYVRiTmVIZEZiaGVoaFhjY2ZraDVocWFFaHllRWhlZUtlSGdGY2NjSGVYaGdnUmJOZDBkMGRaY1ZibmNSZXVoZGZuZU5ldmhSZG1mY2NXZEVla2Z4ZDFoU2RoYkJkU2RSY0ZmOWIraEdod2NZZ3JhYWFqYUllaGFYZlNjRmFBZUpiUWJOZkNkRGNoYTBiR2NXYndjdGJoZWZjUmNZaGliRGhpYkFiZGVRZ2xiOWJuY0dkSGhwZ0FhZWgzZWhid2hWZG5iUWRQZ2FkMWNJaFVnY2ZVYVliVGZlYkZhTmJQZlpoR2FwaFRnR2hVZ2RoK2dTaGhoMGZTYkdlaWg0aFBkTGJSZ0phZ2dIZEhkQmIzY0NmRmFnYSthVWgxYWhoRmVFYkZjZ2htY0llU2FJYy9kWmcxZGRlL2NIaHhmdGFBYVhlMGhvZVFnVWNraFFhTGhjZkZlcGhDYWJhMmVKZW1mYWNSY1JieWZUY25iTWVRYVRjQmNsY2ZlRWFWZG9nY2VZZ1NkQmdRZE9oUmVKZzZlQmYxZ3RlQWZPaEVoUWUvYUdhQmdnYm9kUGZBaDlnOGJUZm1jSmJjY1JkamM0ZlNkWGgzZkJjQWdYZG1nMWVrZEhia2J4YWZjSmNFZkliSmhHZGtkdGF5ZkZjR2cxYUlmWWJtY0Jia2ZlaFVoc2RVaGNlUmMwZWRlVGhSZWxhV2hkZUdoNWUyaGNkMmE5Y0diWmN4YVpnR2dRZWplZ2ZmaFhmQWVZY05nV2d6Z3dnRGZTZWpieGJyZmFmQ2ZoYVFhTmhrZVlkMWRHZ1VlQmFuZlVlVWRrZlZiVGJtZGxnMGZHZUhoQmNCYmRlRmFGY0tnVGZuZlVmUmZjaDBneGVSZUxnSGY0Z09hT2IxYzFmamVCaGxid2Y0ZkZkUmEwaHVhUWNVZEVicGhQZnhjOWdOZFdlaWZCaEhjQWJGaDVhVGRjZjBna2cyZERiamNvZEdmYmNHYnBkYWJIYVhhOWRRZ1NoQWhGZk5mSGJ5ZlFjaWVMZDNkc2I4YlRnMmc0YmFhT2dFYnhmMWdTaGhkQmFTYVJkQWV0Z3dkV2drZEpldmdZZm1jWmZwZkZjSGRKZU9jY2UwZFJjQ2hBYkFnUWVGZ1FnUWdjZDVkT2hFY0ZlNGRFYm5mMWVmZ0Nld2JvY3hoR2NUZ1ZiRmhYZlZmSmR3aFZlbmNRaFBlYWExZUljVWRjaFVhWWVUYWVkRmNOY1BjWmVHaHBoVGNHZlJjTWRrY0JhUWVFY1pmUWJIYUloVGhMYkFhZ2c5YlJiRGZKaHFkUmJWaGtna2JVZFVna2JFYlNlUmJvZXRlWmVqZ2RnNmhZYVJnUWJvYlFmbGU1ZEVkWmJsYXNkWmhYZEFnbGFlZVBhQWg0ZExmUGd5aDRjL2VZZ1VmZGc3Z1JhM2I4ZjZnVGdFaDFjUmdTY1JjVmRPY2FjWGRRYVljY2JFYkZkMGZVZVVjcGVPZWRhUmhGZHplR2RGYThhMWZKZVJkb2ZnZlJnamJzYWVoVGZYaGthVmhHYm5nWWRTZENieWNCZWloRmFSZkFnZmhXYmdhdGJaaFZkaGFKZzZiUmUyZ1JjQmRiY2tlcGJrZWVjVWJzY1VnY2VSZjBjZGJUZ1VoMWNZZkxiQ2dFZmtnZWZ6Y3NnT2hMY2thVWFjYUdlbWJGZEVkWGhRZ2NkSWZYZ3pna2dLZkRkamVaaHFlSmgyYkFjYWRJYkFhRWFuZlhmRWVSZWVoUWhFYUFlYmhBYXpkd2U0aFRmRGJrZ1JnT2NBaGhnQ2ZIY1hhd2JZZ2ZhMmRaZ1JiZWNIaEJoV2dkZEFkOWNyYlVmaGhSYXhhUmdoZU5iNGdVYzBkOWVrYWFmbGhOaE5mSGJUZzFhZWRGYlFhSmRiaEtoZ2NzYTliU2JUZDFhRGVhZmphZ2dQaFVhSGFsY2JnRmZFYlFnemhWY25iUmN1YmRkbmFOZnZnUmRtYWNoV2hFaGtkeGgxaFNkaGVCZ1NjUmNCYUZmd2RVZmhoWmd2ZGZhMmJZZjlnWGZEYnNkZGNmZFVmTWdKYkNlQmFWZUhjVmNnY0ljbWZPZGxkMWM0YlNhSGZvZVFnRGdnZ3BhOWRYYVhocGZGYlhoVmRKZ3dlVmZuYlFnUGJhaDFlSWhVZGNlVWNZZlRjZWFGZ05oUGdaZUdncGdUZlRkUmIwYXhnVGh4ZTFnZWhVY1hnUWVCZ05hZ2c0ZGplSmNEYUVkMGNDZVZjRWJqZUZkVWZrZ0ZlVWRBYVZmNmdPZmpia2ZuZkxmZ2ZvYVllV2VsY2NkQ2hmYUVoTWVMYmVjRWhRZ0xoY2RGaHBoQ2JiYjJjSmJtZ2FoUmRSY3loVGRuYU1lUWNCZkVoMWdjZ1NjUWExZ09iZGQyZmtiWWVQZTFocGZlYmVoMGhwZ09oZGVSZ0ZjemNUZkZkRmY0Y2NoRmhaZjBkRGgyY0pmNGVGYUhmRmFHaEVnM2JoZFRkVGUyZFJicWJVZHhha2RUZ2NhQWNzZ2NnZmFCZkpoNmNSZDJjUmFCYmJha2NwZWtkZWZVYnNlVWZjY1JlMGhkaFRiUmZsZUpoZGdDZzFkNGVOY1RhMGhKZEtjbmNSaGJnR2hDYlpiQ2RPaGxmSmRFZkNhM2NCYWFhUWRtZzliaWVaZ21ma2JVZGNia2E1YXpjRWZFZnhoTmZVZ1Via2hWZ1JiaWNCYTZkV2N6YmdkQWhKZGphSWFGY0NkamhCZXdmSmUwZFFmZWZlZEhkdGFXZVpoUWRaZHJmVGNnYWhieGJYZWhjcGY0Y0RlMGg4ZnRmWmVCZUJkUmNVYWlmSmRvaEZkaGVKY1hoR2N4Zk5lc2ZEZm1lZGZHYlRobmRsY0xoRmhIZ0VnZGZIZFVnMGJaZVZhbmVSZHVoZGFuaE5idmVSYm1kY2JXZ0Vka2Z4ZTFoUWJsaGxhY2ZCYTBkTWh4ZENlQ2ZFY2dkSmVpYk1hSWhRaEhib2dCYWNoeGJ0aE1mWGVsY2hlSmZDZVZhSmdwZWJhQmJGY3dhSGRYaFFkWWFSYkFiMGU5ZFVkQ2hFYnZmSGFqZXdnMWNOZnljQWFIZEplRmNJZmZhY2ZWZlFiYWVkYkhobGRQaFplR2NwZFRiR2ZSY05md2hDZTFkbGRXY0VlbmRwYUhoWmJFYkZkdWVTaG1hUmE1YlNieGR3ZTRlRWQxZTRiRmVXZkFkUWRYZElmVGZJYTJnRGRoaEpmdmJXY1JjSmhIZmRoVmM4ZVpiVWdsZmdjWGFjYUVoSmVMYmJmemg1Z21mSWZCZW9jeGFCYWpnSmFDYkxmd2ZJY1ZkRGhIaFFhYWJZYlRoc2ZZYmViMGFGYmdiV2ZFZlpna2hkZFJmRmZ6ZFRjRmZGZjRoY2RGaFphMGJEZzJldGJTYkZoSGJGZUdhRWIzY2hlVGNUYjJhUmFpZUdiaGFkZlFnT2hFY29oTGZOY1ZhMGErY0FlZ2dVZlZoWmZnYlZka2JjZWtoc2JEY2VkQmEwYkJoVWNSY2xnT2ZmaFdnNGhxY2NieWVaZkloSmZGYTVoVGJIYmhjWWJGZ1ZjQmFjaGxjWGMzZWdlVmhRZ21nUmVpaGNlR2RBYytjY2RrYTViemFFZ0VleGZOZVVlVWNrY1ZoVGdtZmxkMGJHYUhjQmZCYWRiRmFGZEtkUmQxYThnUmNjYTBieGNSaGVoSGZCaFdiZGdBZTlicmdVY2hnUmJ4ZVJkaGFOYzRlU2RVZThmbmZaZEJiVmNMYVhiRGYxZ3BiRWhBZEpiQmdjaG1iMWVrZlFoV2U1Y0tmWmRIZWxjTGNGZUhhRWhkZ0hkVWYwYVplVmFuaFJndWNkZW5kTmF2ZFJobWM5Z2ZiYWZRYU5hMWFRYlJoQmdEYU9oUWh0Z3NjUmNrZkpoM2hhZTJjWWExYUZhRGRzaDFmUGNHYjFoQWJaZTFmRmNKZUZmVWg1Z3BnZGZCYWhhd2FRZlhnUmVSYVNia2g1YzFlRWJYYk5nTWhVZ1hiaGN3YVhoamIxYzBjSmhGYklmZmRjZ1ZlVmF1ZGVhRWM5YVRnWmNIZUpiYWZHZVVmOWd3aFFnaWVJY1pkRWFuYkZnSGJkZWpkeGdpZ1llR2RSYjVkU2V4Y1JieGJIZFJkMWNOZEdiVmdaYjBiYmJuZVpjemJiZDBnWmVuaEZiaGhKaE1jZmJRYU5ocmZIZlViUWZBYmNiRWQ4aC9nYmUzZzVhNmdhZVFkeGE3YVRjaWU4Z1FkQmFUZ1loZWdTZlJkNWdPY2ZhUWdrYlViV2JrYUZjMGZVZlVhcGZPYmRlUmZGZnpiVGNGY0ZlNGNjZkZoWmgwY0RoMmN0YlNhRmFIZ0ZiR2dHZ3pjRWRvZUFjR2ZSY2hlVWF3aDVkdWJjYkJkZGJGY1ZoZ2NwaHpjUmF6YmhlQmZKY3pnRWJyaGVjVWhBYlVkWmIyY0FiM2FUY1JmbGNXZWRiR2I1YTJhY2QyZDlnR2RaYXhlWWVTYVRnSGVWZktiRWhGYUpjRWhBaG5leGZ3Z1FlbWg5aGllWmVtZWtnVWZjaGtlNWN6YUViRWF4Yk5jVWNVYmtnVmRUaGllcGI2ZFZlU2RVYU5nSWVCZ2diYWRBaGlid2ZaZE1ha2ZWZGZoS2VqZzhlQ2NPZ0FiZGM0ZlFheGQxaC9oQ2UwYllnMGZCYXdiWWIwZkpkZ2FvYVJnUWZIaGtoSGZjaDFoWWNTaGVia2hkZWtiUWVXYjVnS2RaYkhobGhMZUZlSGhFYmRlSGdVZTFiTmhXZENhd2RoYkpnSGhzYnNiVGQyZmxlRWdYaFJmZ2Q1ZFFoZ2VKYkZiVGNRY1VlOWFEZ3dlNGc3YktkemRZZWxmVGVYY29iZGNlZmhhNGNOY0NmUmZWYkJmVWIwY2RkbGNYZmhmaGJ3Z1FoWGFSYlJhU2NrZDVoMWFFZlhlTmJNY1VnWGZoaHdoVmRuZFFhSGJKYkZmSWFmZmJkRWJZZ0xiY2JVZ2hjbGJaZUdmcGVUZ0dkUmVOZXdoQ2cxY2xnV2FFZ25mcGdIaEloZ2c0YThnU2FtZnhmVGNTZXhhUmV4YkhnUmMxZU5hR2VWZFphMGhiZm5lWmN6ZmJkMGdZZ3ZhRmJnYXhnUmZkZFFnVWNRY1dkVWdRZmZjY2VGZnhoRWFSYldnSmdtaGFhUmFSYXlhVGhuZU1hUWhUZkVmMWFSZ1NiUmFWZE9kWWdUZEVoeWdjZEViRmMwZVVlVWJwaE9mZGdSZEZkemhUYkZlRmg0ZGNlRmhaZzBkRGQzaFJnU2VWYjNmOGZBYVFkVGRjZWVnTGJTYjBjK2NBZkJnRWE1aGNiQWd0ZFpoVmhoY0phNmNSZDJkUmVCY2Jka2hwaGtkZWZVZ3NmVWZjY1JlMGRkZVRjUmVsYmVoUGZXZEFmMWJPZXlmNGFVaEJoRmZsZ1dkQ2dSZ1FjZWhHaEJlMWZFaEFhSGNCYkxkU2QyZzlhK2NlaG1oa2ZNaGVlMGU0aHZmRWRBZVZoRGZFaGdiRmVVY0hkQWNvZDdoWGJEZlVnZ2VJY0Zha2VGZlJjM2FraDdmY2gwZ3hhUmZlZ0hhQmRXYWRjQWQ5aHJjVWhoZVJheGRSZGhkTmU0ZFVoMGM5Y2tmYWRsaE1lUmhXZ25hNWFJZkVjUmZkYkFoR2RRY2diZ2VCZ0FkOGVlZ2JkRGhaZkxkSGYzZ0VlT2FGYkVhMGVGZVNibmJSaDJhZmIzYU1kemJSZ2lhNGFZYlVoUWRRZjBlR2dIZk1mZGRBZkVkNGNSZERia2hvZmdnWWVtYjFicGVCY25ndGhDZFdoUmNCZE1kVGhWY0ZoSmhGaFVkNWFwaGRmQmdoZ3djUWJYYlJoUmVTZmtlNWQxZEViWGVOYU1lUWJYZ1JjYWJWYm5iUWhQYWFhMWRJYlVlY2FVZVlmVGRlYUZoTmJQZlpiR2VwZFRoR2RSY05od2VDZjFkbGRHYk9hSGVwZEhoWmhFY0ZjdWdTZW1nUmE1YVNheGFSZHhkSGZSZDFoTmRHZFZiWmMwY2JobmM5Z1pnYmcwY1plbmNGZWhnSmhNZWRmVWdvYlFhVWVrZFFhTGdjYUZlcGhDaGJoM2doY21kS2VoZG9hMGhIaERoeGdkZ0xiZ2RRYkZkR2NoYjFia2dhZlhmUWFZZGNhRWVGZDBjVWRVZXBmT2hkZlJmRmV6aFRoRmFGYjRhY2FGYVpnMGFEaDJldGNhaFhoUWJvYUphRWgzaE5jVGJYZGhhbGdxZFRmd2FVYlRiYWdBYUpjWmdDaGhiSWJ6ZlBiQ2hzYzhlWWJtZUJja2hlZlVoc2NVYWNlUmUwZmRkVGJSaGxjV2dkZUdlNWIyYmNjMmM5YUdoWmd4ZFliU2NUYUhlMGZEZWFieGcxZEViQWJIYkJmSmVQYzJlOWYrZWVlbWZrZU1nZWYwYjRldmFFY0FmVWMyZ0hoa2ZraGVnVGRuY3NlSmhGZEZlcGdCZ2RnRmJGY0thVGNuYVViUmdjZzBkeGFSZWVnSGdCZ1dhZGFBYjljcmRVY2hlUmR4ZFJkZ2FOZzBkZWVVZzlja2FhZ2xkTWRaZ0VmM2NBaExoV2hWZllkU2hlZWtnZGVrZVFnV2Y1ZUtjWmRIaGxjTGdCZkZic2hkZ0hoVWUwZVpoVmhuYlJjdWFkZG5lTmZ2aFJmbWRjZldoRWJrYXhkMWhTYmhhQmhiY1NnQ2NGZHdnV2JraEpndmdZYW1hWmdwYkZkSGJKYk9lY2N4Y0JoTWhUZ1FkVmRIZFRjUWNFYzdmZmRGZ3RnK2REaENiRWRkZEhiZ2FjZmxoWGdTZXBkRWNBZG5hRmQ1ZVdiQ2JaZEFiUGd4aDRkY2hZYTFnVWVhY2RmaGM0ZmFiS2NEYjRkYWNTaFZhOGZwY0FmeGRoZmZiSGhEY3NmRGZJYUVha2c3ZFFjMmRoZVRhU2h4YlJoeGhIYlJnMWdOYUdmVmFaZjBiYmNuY1pmemViZzBjWmJ2aFdkUmVKaEhnYWZFZ29nRWRXYzBhMGVRZldnbGZwZENjYmEyZkpibWhhZVJkUmd5YlRlbmFNYlFiVGZFZzFkUmFBZlJkVmZRZGFoVGVzYkRlV2NtZXRnMGdVZlVocGFPZGRnUmJGZ3pnVGFGYUZnNGRjZkZnWmM5ZUpiV2F0ZVNoRmVIYkZlR2ZFaDNiaGhUYlRoMmVSZ3FoVWN4aGtnVGJNYndlVWVmaEJlRmUwYzNnSmNTaDBmVmRQZFVoSWhoZWVnVmdRZVViT2hCZU5hZWdCZ1ZlZ2JFYkZjeWVFZnllTmRnZDRoU2ViaDFoa2daZVJnM2h4ZEtlQ2ZsZkljTmVjZ0RhOWdSZlNjUmZKZ3VhWmJuZWtkWWVjZ2xmNWUvaEVhRmF4aEVhWGVXZU1mVmVUZG1obGEwYkdiSGhCZUJoZGZGZUZjS2FUZW5mVWVSY2NhMGV4aFJmTGhIYjRiT2JPYTFnMWNqZUVnUmVvaDhnRWgxYzhkc2FHY2hmOGZvaE1kMWV0YlZjR2FuYmtnRmdDZHhibGNHYk5la2U5YTFmVWRHZGRmRWNLaFNnd2NIZVFkRGdoYk5iVWVSY1FkUmhCZlhlMWIxZlhjSGJOYXZiUmJtYmNiV2dFaGtmeGgxZ1NnaGNCZlNkUmFGZGtkMWdEaGhlY2M5YkxjR2haY2hkUGVuY0pmT2FjY3hiQmRNYVRhVmNGY0poRmZVYTVncGVkYUJlaGJ3YlNnU2JaYlJjVmQwZzRnaGRIZnpjQWZBY0hnamFZYzFjWGRuYzBhQmZPZUJhcGhkZE5meGRKaGhlTWFSZlFoSGRNZUdjSmNBZ0NkaGhwYTVlQmYzZ05hV2RFY25jcGRIZVpmRWNGZXVnU2FtZFJlNWZTYXhhUmh4Y0hjVWFsZ0RmUWZSZmthbWRaZmlnUmQ2Z1loUWZzZ3liV2VrY1liRmRKYVFiWmhKYldmZ2hVY0NnZmdIYUJkQ2NiZTJlSmVtYmFlUmRSY3lhVGRuZk1hUWhUY0VkMWZSZVNjUmIwYmNhYWFXYWtkWWhKZkVlOGEzYkhoUWhVZUFlTWZCYWxnNmJRZmdoSWd3YU9iUmdBaGdoZmRTaElmVmVYYUNjVmRPYkFlV2FGYWFoUmNtYWhlQWNVYXhna2dUZGNnQWN0YVpmVmFoaEpkNmFSYjJoUmRCYWJna2dvZXdjZGh4ZE5kYmdJaHhhVmZQZFJmQmNjZmJmSWFTYklnaWRPYWpkOGVLaFBjaGg1ZEhkUmZYYWxlZ2hFYUZnSmdFY0NhM2VCaGFmUWJtZzloaWdaYm1ia2JVZGNma2Q1aDdmUWJrZXhlUWNVaFJhMGRiZERhU2NVZzdlVmJqYlZlSmRmYVZjOGdaZkJoamZ4ZVhkSmF6ZDRnWWVQYnphZ2NDZWZiQmR4ZTViV2N4aDFmOWdiZkJnTmY0ZlVnMGM5ZmtnYWFsZk1nWmFFaDNoQWZMaFdnVmFZZ1NlTGFrZWtjOGhEZ2pleGNDY05ibmNCaEhlUGJuYkVoZGdIZ1VhMGZaYlZhbmVSYXVnZGZuaE5odmNSY21lY2NXYlJhZ2hRaDhoR2dSYjRoYmFDZmtlSWdrZlVmaGJZZm5lS2Z6ZlZlbmFSZXpkY2VMZ05leGJsYUFoWmgxYkZhSmVGYVVnNWNwYmRiQmJoYndlUWRYZlJiUmNTaGtnNWMxaFJiVmVsZk1lVWFYYWhjd2JWZm5kUWhQYmFmMWFJY1VhY2ZVaFlkYWVZYjNibGRQYlphR2RwY1RkR2NSZ05hd2hDZzFhbGhXaFRlM2hOaExlVGNraEZndWJTY21hUmM1YVNneGdSYXhjSGZSYzFiRmJUZlZlZ2N4Zk5iaWhZZDhnUGFSYklnMGRGY2dhOWNNZ09ja2ZNYkxkZWZFY1FlTGZjZ0ZicGhDaGJmemM5Zm9mS2VsaFVhK2VBaG5idGdDZFFjRWIwZllhUWRRZFZlSGVaZnhmWmVOaE5iZ2FjZ3hhQWgwYU5hSGViY2pmdGh6YVRmRmFGYzRmTGFWZ3BnZWZEZTJkc2h2ZEhjV2JwY3NlVGNuZUZjSWRaZVVmNGVtYkZla2cwaFRiT2JFZFFkS2dBY2xmd2E3ZUNnaWRGYkJoY2IwYXBjamhmZGxlQWQrZE9iRmJzZGRkUmJVZzBlUGNKY0Nhc2Y1Zk5oV2g4Z1JmTGNsYmhoV2hBZHllSmVLYkRoVWM5YVpjQ2IzYmNhUGZEY0Nmc2RuZ0liQ2hCYmFjTmR3Z3BlMGVFZUJnQWFSaFVlUmRkYlphQWFTZ29iMWdUY0Ria2RPaE9lbGY4ZkNnSGhEZ0JmWGdmY1FhVWJmY1BhRGVVZ09iR2cwY2xoamVVZkZiWWY5Z0NjVmhGZmlhVWdVZVpidGFhZ2doZ2V6ZkVoM2ZCZERlRmNnZVZhR2JOYkFlWWVwYUJmR2M1ZFhoWmFIZ3NnY2RXYXlkTmVXZ1dkQmc4ZGJnVGNWZzRnemNkZWpnWWJqYkZkU2ZJaFdnU2JXYVpnMWVTYmtoUWNBZ0hmUWFzYnJkY2JFaEpkdmdZaG1oWWFoZFdheWJFY2FlUGVWZEVoQmZDaEZjRmdVZkZjVWdZaG5hTWZVZDlkd2ZOYkFhWWI5YlFoZ2JJZjZmVWdqZkliWWJHZURoY2MrZldjRGZ4Z2RmTGJoYlFkZGdlYkVkaGRiZk5nd2RBZWJlS2hpYXNiZWhYaEJnTWFzZFZnMWdsZFVlVWhEZ3NlRGdaZmxicGJFYVNmbWRRZ2tlU2IxaGNjd2ZTaFZnNGhGaEdkVmQ0aHhnWmUzYlljb2dSZVVkWmhuZUZkaGRJYkVkT2RoYWxlRWZIYkFhVmFHZE5lVmhwYmZlYmYyY0FoeGdKY2tmWWM1YkNheWRFZVNhVmQyY2RmUmZTZFVnaGJraE5nRmU0aHloUGJBYVFkZ2FVZVFmOGdLZkljSGNVYjhhQWZSYkFmeGVQaGxmWmhwYURkeWhNYmRiUmR5ZlViSWZVY2piVWNXZ1FhU2FFaGtiRmcwYXBma2JPZ1ZnOGJSZVhjaGRWaDBnQWVpZ0FkVWFhYVVnTmQvaFVkMmNGZ1lnTmdFZGtnZGVHYVViMWZOZFhka2dSZDVoZmNHZzhobmZOZkVkVmRiY0NkemN0ZUtkUmNBYlpoRWFYZURia2RPZ0NkbWE4YzJnTGVpYndlVWNJZVJob2doZVdnUWZJYUthVWVVZjRiYmdDY3lnMGRoYkhiM2FBZkljTWdsZEVhZWdCaGpnQWdSZU5nd2ZNYmNkT2RUYmthWWNkZEVnb2RsZEZha2JkZnhoRWFWZG9jc2dHZzBjOWhqaFpiQmRaZWRhUmJuY2NlSGVXZ1JhbGdHZ01mZ2FJaDJlRmVpYmNlWmhJaFhha2ZOYldlemIxYVJiVWdoYm9lWmVHYlNkWWZuZk1oVGdvZGhoQmJ5YXNjV2RYYWdiTWV5YUFlMWJOYTRjRGJVZjFld2ZVYWdjY2ZyYU5md2NJY21lV2NUYk1jSGhQZFJnbGdNZ0Zlbmh0ZkpjRmFSYW9lOWdkZEFkVmh3ZlJjbmRvaFVnRGNoYXRneWJDaGxja2dSYlVoVGEwZjhiQmZUYkVhUGhNYkhmZ2ZVZWNoUmhKYUhoZWZFZzVkUGhaYldoc2NVZ1ZmVmJ3Y3liU2doZlVnaWJXY2pjTWRVYWFiZ2NRZjRnQ2J5ZWdjQ2RPZUVoQWVqYVZiRmJNYUtkRmJ4YkFjbWVJYlRlc2FRZkloQWFJaGlnWmNsZzBmRmFPZnhoNGVZZ1NhbGJVZFNjWmVWZU1mL2diZTNoMWJtZ0xmbGZnZTliRGREZ0piY2dPZ0FmVWZZZ0diaGFzYWhkR2d4YVplb2ZBZ2ljNGVMYU9kaWM4ZTNmZGNVaDBidmdUYkJka2MzYklnd2VJZzZiVGNpZllnWGdGZkdmdGFHaEdnemI4aGZiQWRDZVlicmNIZDJiMWhiZE9jVmNoYVhiT2RXY0FjWWJOZHhhWWJ1ZUVoU2FFYkJjQWFFZ3RhSWhMZFJjMWJWZ0Fha2JvYUNjT2dpYThjN2hOZG1oWmNHY2JlQmJZYlFkVGVIY2RiUmVPY2djOWF1YUlmVGRNYlZkRGVEZndlMmRaYWliOWVTaGNkbGdOZ3pnVmh3YUFiQ2VFYndkaGRaZk9naWdFYTlmU2gzYTRmT2NKY0JmUWdFYUNleWVjZGZkRGdBYzRhRWdQaGplWWVlYVpoeGUxZmpoUWNoYjFoL2dFYTBmTWI4YUVoaGRzaGhmWWVnYmRkTmdHYm5oNWZQYkVoQmdGYVhiS2VSaE5ic2FTZkdiQWJlYktnd2JvZGZnUmJqZWhkVGJXYWtnVWdJZ1FkSGUxaGdiSmhqZklncmZOY1RnTmZYZ1FkQmZoZjloV2V3YlphZWZSY0JhdGQ1YVZiQmVZZ2djRGRpZmtjK2dVYVNnQWJ0Z01oa2ZNY0pnUmdWY2hiU2dQYXdma2JsZE9lMWVvZHhmRGVRYUFoWmFBYXhmMWQ3Z1hnaWFNZUpnSGZ6ZDBmaWdWYW1ha2NQYUxnQmM1YmJkTWR3Z2RjZmJEYkJic2VHY05nMmJRZnNhVmNraE1mMWNSZFJnd2FFZkNnVmhBZ0RmSWhRYjBocmJIY2liRmU1aERhRmNnZitkWGQxYXdkQmViZlJkNGc5Y1BjWGJnZTJlT2NRZmNjcmNiYldjRWVZZEpjd2dOZ2ViRmNVZXBlTmdJZWhkVWRQZkRnQ2MwYmljTGhHZ1FlOWFCY3phMWZFZ1JiRmNWYUFiVWVBYUJjSGVGZUdoOGN5ZWVjQWhjZWhnSGZ3ZmtmYWRQaEZhNGg5YVJkQ2I1ZW9nS2RFY1JmamdIYkNmZ2JUaEFmSGcxYkdhYmZHaGdnTGRYZUhmMWgrZFFibGR0ZldlZWdRYXNjQ2FWZWtmUWQ3aEZhV2ZRYStjZmZoY0pkMmdQYXdla2hBZWFoVmNnaGRoVWVCaGtjcGNaaERlWmJuY1lnSGQxY2VhYWF4YVpodGJYZENjMWRlZ1VhaGNjZUFkVGUyZlZiYWRYaDJjOGVkZWRoamdFYUdjWmZWZzBkd2hVY1ZlaGFGYVdhRmhJZFZkR2FTYkVkOWNWZERoVmhCYmZnRmJCY0xiTmRRZ2dlWWVjaHhkZGJSZkxiQ2RJZ1BoZGhGZlJocmdCYkZiVWZqZVJibWR4aG9lQ2IxZXBnMmNmY2tlSWhQZEFmSGVBZldlV2VRYlpmVGhLZkJmUWJoZUtkQ2ZBY2VoYmVBZlpiYmNUaEdmTmNiY1hiMWFrYkJnRWYzZ3hoK2VMZG1jSmg4ZlZjR2M0Y2ZlRWRrZk5mMWRXZmtmaGVEZ1JoQWFGZXdmVWdoY0lndWRNaERmVWdzZmZoVGF3ZmFjZWcyYjllY2RGZFVkTWJQZ1ZmMWJwYnhoTWZSY0JnZ2RHYldlVmhEZUNiVWJkYzhhRWNYZXhoTWZRaFNiQmdpZlhnM2JRaEVoYWF3Z0plVmNJZXhhVmVXZkVmUmMwaGJnYmhCZ1ZiRGJRYlFkRWQyY1NkVWIxZU9kVmEzaEpkWGJQZUZlQmQ5YVhhMmUxZHdnU2J4YnRleGREZ1VhVmdlY0doVmd4YzBiWmZuZHNoamdMZ2hjUWYwZlVnM2VzY0NlSWFVYkpldmdRaGhkd2FaY05naGFoZFdoZGF5ZmRmdWJlY1VieGZqYlhkV2hjYlpmUmFVYzFhZWRTY1FhVWJXY2ZjWGYwY1lhZWQwaEVma2RFYUJkZ2JkZ01oSGdnZzlkR2JGYWtnSGhZYkFmNWRtZlNkU2NsYkdkRGdEYlJoT2hBZ3llQmNDYlhkU2FaY2pmV2JoZGtjY2VjYUJic2FCaFFoeGdKYXdnUmcyY3djUmNMZXhiZ2IzYVBoQ2FKZmFlSmVSZlZlaWNYZlVjRmNFZU1maWJ4ZWlnYWF5Y3BkT2hkZDBmNGNEZFhnMmVKaERkR2VWYUpmTGJDaDJiQWZDZlZnR2haZ2lhYmVXZGtjWmNJY2djOGRoY1Fnd2RraGtoSGZ4ZDBiZGFNZFhla2ZzZUNjamFZYURoWWdFY2toUGNSYW1mVmRKZVllbGg0YlVoY2NYY2xkV2NlY3dnOWM3YUNiZ2FOaHhjVGRSZ05kMWdBaHdmNGQyaE9iUmNaZXdiWGVTZVFoRGNKaGtiWmdLZmFnQWFFaG1jVmZYYVloUGdiZUdla2FUZUJkV2VJaE9mRmJFZ1FnWmJXZFhhUmMrY0xnbWF0YXZmVGNXYWRjR2dVZXhjNGdtYURkM2hrYmNlRWJBZE1jUGVTaGhkcGc5Z0phQ2FSYzloRGhEYWRmR2hZYjBkaGJkYlhjeGVWZEFmSGJFZDVkbWNkYUFlZ2JvYldkSGFSYWJoU2hrZVpjNGNRYlRjSWVlZEFnamYwZlphR2RDaEFjSGhGZEVoSmFNZFlmd2VCYlJoYmdFYXNiS2JiaEhnb2JMYkNlQWVFZjJkQWhsZ0JmV2NIaFhlcGJYZ1BhQWZCZm5iU2NtZzlhNWFHaDFkVWVqZVRnbGhnYWtlVmR3ZkpkOGFFZVdoWWhyZWZjUWRBZ2xlQWZnZm9lSmNmZVZocGhJYVFnMWVjYWFkZWRWYU5iQ2VZZkdjSmgyZE1jVmVaYnBjVGVqYnBmV2FUaEVoVWF1Y1diVWQxZ2JjZWUyZUFiSmZaaGxoSmYwZVRhRmJkY1RlZGhXYzVjamJGY0VjSmdoY1pnRWJjZzJnU2htZUphU2dWY2lhTWJEaFVlamROaElmVGN5aEVhbWRBaEZld2VUZURneGRzZUJiUWNsYUFoL2dBZ3loQmRVZkZnVWEwZTBjTGdCZWhnY2ZkZW1lQWdWY01kZ2RrYU9jWWRDZ3djemZOYnlkdGhUZEhjQmFGZEJjQmJEZndlTWdSZ0ZkVWE1ZkFiM2dsaFRlV2VXZjhjL2NaY2locGJWZUpiZ2MwYjdjRWVFYlFmeWJRZ1JoRWRHY1diWGhzYndoV2FUY05oSWRkZ0FjcGJLY01iV2NWYUpmWmJ3aDRlVWJQaERkUmdEZURhd2RnZjdnQmMwYWNiNWNRY1djNWJ3ZkxoRmI4ZDhlZmhoZ0ZnY2RWZnpnUWVlZEllbGdGZkJmTWhnZTRkaWhGYVdja2EzZWJjSGVCZkNmRGgzZEZoQWRIZFJhQWZaY0NoM2R3Z1JiWmNpaHRhNmJCaEhmWWFQYkhha2R4YmxhRWZnZ0lkVGJBYUJjeGFrYVVmMGN0YjBoWWNpaEFkOGVXaGphRWVhZ09kbGE4ZUNnVGRRZ2tmUmhUZlJkd2FvZ0pmMWZ3YTJoRGQyZmRmWmZRZDBoNGV1ZEVmU2g1ZE1kRmZ5ZzBjK2NGaFNiQmRHY0pnQmR3YVVjRGFsZlpjTGdiY1JiRmRlY2ZnV2ZKZGFjR2FVZ2hjd2FYYVJlZ2FFZkViZ2ZWY1hhUGJBYVZkOGREYm5nSmJwZldjUmJSZHNkSGJXZlpnS2RDZTBiSmN0Y2VoV2FkYnJiZWZ6Z3djVmFmZFdic2MvZk1hVWEwYmNlVWJrZE1lWWZhYlVkeGdhZkFiaWQ0Zk5nS2RGYUlhTGFTZ1hiOGhRYlNjMWY5ZkdkV2hsZndkMGhPY3hlTmJvaFBka2NaZDRlVWJVZzBibWZNZ0ZnMGgvZEFoeWMwZmdjWWVrYlliRGZRaERha2hlZ1VnSGFCZEJnSGQzZGhlVWFYaEhiVmN5ZE1mRmhwZVpmTmFYaGdicGFVYVJhNWI2aFFlSGdaYlVnZmRsZ3hkMGNIZmhnMWZrYkVkMGI1Z2FoU2hoZFZlV2VjaDNlOWRrYVlnSGJrZUZoRWdtZFZlQ2dPYnhkbGVOYUhoRmRKYURnSGMyZFJmTWFXaDNnc2ZIZ0xmamJwZG1lTmJDZHBnMGhIaEVoeGZLZVFoMWRrYUhhVmFuYkZhbWVEZEJhb2dJZEJkQmM4YmRkSGZIZUloZGRjaDBodGhEZWJlbWJBYXNoUGZuZHNiOWdLYUhhWmEyY1NhaGJOaC9mSGN3YkFkamhiZVZhOGRaYUZnR2FjZ1NhVGhFaEloTGhhaDFlTWdyYk9oUWZZYXViQmN5YkJkTWZHZ0hoRWFhZERnRmU1YXFmUGdqYUFkTWZIY3hiOWdvZ09lM2Z3Z1dmYmZWY3dmdGNYYjFjSmNEYlhkUWh0ZHRkV2VnaFFiNmdMY0NjVWU5ZVhiVGgwY0FlZWh4ZmxlTWFGY2xhRWhiYVVlQmdvZDhnSmVsZFpnd2NQYW1lUWZKYkRibGV3aHhlQmcyZk5iZWZTZG5jZ2V0ZFRoWGNSYmRkTGdnZFpmQmhJaHdnZ2NUZkJjMGJNZ1hiY2ZTZ2hkQ2dBYUJldGc1ZEVhRmVraExmRWRqZndkU2NLaGdiSWM2Y0FjeWZzZzNjU2QyYnRoaGZSY1FleGdlY0NiMGY1ZDhmRWNXZFlhcmFmZUZhVmF3ZURhd2FjYVBkZWdVZ3BndmFRYmhnd2ZlY05hRWIwY0hlZmhuaEpkdmFhZFVlOWh5ZEdiRGZKZENoVGVEZUpmQmhFZlFjQWRNZmVmR2gxYmNlTmZrZkZlcGVVY1RkVmFlaExiUWhRZXhnWGVVZ2hid2JlaFViMWcwZ1hoU2g0YUdoUWVTYk1mSWJFZndhZGdEaEZoM2VWaDVhUWNRY0VlVGhiYVFnc2hmZkFjMWd3aDVkRWN5ZjBiT2RJYkVlSWdiZ2FiUmRNYkZhWWhnaDhkRmZWYVFkbGRhaGRkQmdGYm1lS2czZ3BiWGJjYzFhSmhVZ1diSGh4aEtnU2UxZ0lkN2NHZXlhaGJMY1VoWGMxZzZhZmduZGtnVWJiaDBmNGVNZ0FhQmNSZGNlUWZsaHNlTmRWZ25ibGgwZUZiWGhCZ1JhTGhFZEJhWWZEaEdkNGRSYUpnUWgwYURhZWhBZTlkR2hMaEJjMWh6YUZkQWNKYWthVWVoY05mbGFVZXpnQmIwZ01ka2RaZmJnQWNtZ2xiUGhIYXlhMWN0YmFmaGI5ZDFlVWZuZ3hnU2VmY0doa2YyZ0RoM2JGYlBiV2hCZGxlTWRCY0RkcGV1YkNkV2FNaDNkVmZIYjlmUWVCaEZjbGVoYlVnUmJBZVBkU2ZBYnNlUGZTY2hhcGcrZmNhWGFSYnhiSGhBYzFoZWFLZndjTmNmaFdna2ZoaGNjVmJrZUpjcGRDZXdnZ2dvYlZnRGJCZUdkRGUxZDllbGJHZUdlaGNNY0RjSGdnZW9nRGFpYXhkZGRLYmdiRmdRYk5od2FnY0FnY2NGZnBiVWFUZ2toQWNkZVhjRWhSY3dhYWFnYXNhRWNVZnllTmhQZ2NibGhWZW5hUmRDYzRiMmRBZ2xmcGc1ZldhMWR0Y0VnQWdsZVpjMGJZZlhkbGR6aEdod2c0YnViUmFSZEljYmFQY0FjWmhjZ1VnZ2VaZE9mY2dBaDRiS2FLYm1mSWF3YUtoRmRnZG5jQ2czY05oQ2FDaFJla2VFYUdkMWJzYkxkTGNYZlJhYWZLY1VoRWF4aEJhd2NzaENhWGN3ZD1hPQBtOXZUTlZTT2ZHNjJsVWowcmQrUHpiT0JGSTRSblMwbG1xaTVuSVQ4UGFUcWpuVTFTbHFYUHZUL0tyNFFmM1hzb0RKczkzUCt5djJaZ0RhTmpEWWs0UT09ADAxMjM0NTY3ODkAQy5VVEYtOABmNmNhZTE2ZDY3MTRhZTg3OTdkY2M2OTQyNDU4MGMyZDE3M2IzMjliZmNmMDQ2MmY0NDEwN2I5ZjMwZDQwOGU2MWNhMjA2MTIwY2Y2NWMyNWFhNThkYjViMzViYTRkNGE1NzMxOWJkZDI4MzhjODQ4ZGE2NDBkMjE3MmRjNzk0NTQ4N2E0N2FmYjM3MzhlMTNiNTFjYzljYzc1OTg0ZGMxODY3YjJmODA1NzUyMTYzOTUxMzg4YTU5MDVhYjYwYTY5OWZjZmUzMTk0MWEyNmY3MDA4NjFmMzU5OWRjYTQ1Mzg2YzA5NzIwY2VhMjY1MWU1ZTU3ZTAwM2YwOGY1YzczAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8ALgAobnVsbCkAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAZmluZFNhdHJlY0luZGV4OiAAZm9yOiAAbGliYysrYWJpOiAAU0FUUkVDIEJTVEFSOiAAAAAAAAAAACy3BABlAAAAMjZQcm9wYWdhdGVkUG9zaXRpb25Qcm9wZXJ0eQAAAAD8AAUADLcEAGi6BABQMjZQcm9wYWdhdGVkUG9zaXRpb25Qcm9wZXJ0eQAAAMT/BAA4twQAAAAAACy3BABQSzI2UHJvcGFnYXRlZFBvc2l0aW9uUHJvcGVydHkAAMT/BABotwQAAQAAACy3BABYtwQAwP4EAFi3BAA0vAQAaWlpaQBkaWkAdmlpZABQMTZFbnRpdHlDb2xsZWN0aW9uAAAAxP8EALa3BAAAAAAAeLkEAFBLMTZFbnRpdHlDb2xsZWN0aW9uAAAAAMT/BADctwQAAQAAAHi5BADMtwQA8LoEAAAAAABougQAZgAAADE2UG9zaXRpb25Qcm9wZXJ0eQBQSzE2UG9zaXRpb25Qcm9wZXJ0eQDE/wQAK7gEAAEAAABougQAcLoEAPT+BABwugQAJP8EADRCYXNlAAAAvAAFAGC4BABQNEJhc2UAAMT/BABwuAQAAAAAAGi4BABQSzRCYXNlAMT/BACIuAQAAQAAAGi4BAB2AAAAeLgEAAAAAABouAQAZwAAAGgAAABpAAAA8LoEAJC4BAA4U3ViY2xhc3MAAAD8AAUAxLgEAGi4BABQOFN1YmNsYXNzAADE/wQA3LgEAAAAAADQuAQAUEs4U3ViY2xhc3MAxP8EAPi4BAABAAAA0LgEAOi4BADA/gQAAAAAANC4BABnAAAAagAAAGsAAADwugQABLkEAGD+BABouAQAAAAAAIC5BABsAAAAbQAAAGkAMTZQb3NpdGlvblJlZ2lzdHJ5ADE2RW50aXR5Q29sbGVjdGlvbgC8AAUAZbkEAPwABQBSuQQAeLkEAAAAAAB4uQQAbgAAAG8AAABQMTZQb3NpdGlvblJlZ2lzdHJ5AMT/BACcuQQAAAAAAIC5BABQSzE2UG9zaXRpb25SZWdpc3RyeQAAAADE/wQAwLkEAAEAAACAuQQAaWkAdmkAAACwuQQA8LoEAGlpaQD0/gQA2LkEAGD+BACwuQQA4P4EAHZpaWkAAAAAYP4EALC5BAB2aWkA9P4EALC5BAAk/wQAaWlpZABBwPQSC4MI9P4EALC5BABwugQAJP8EAHj+BABQMTZQb3NpdGlvblByb3BlcnR5ALwABQAYuAQAxP8EAFS6BAAAAAAAaLoEAGlpaWlkaQAA9P4EALC5BABg/gQAwP4EAMD+BAAk/wQAwP4EAMD+BAB2aWlpZGlpAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAAC8AAUAsLoEAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAAC8AAUA+LoEAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAAC8AAUAQLsEAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAAvAAFAIi7BABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAALwABQDUuwQATjEwZW1zY3JpcHRlbjN2YWxFAAC8AAUAILwEAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAvAAFADy8BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAALwABQBkvAQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAAC8AAUAjLwEAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAvAAFALS8BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAALwABQDcvAQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAAC8AAUABL0EAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAvAAFACy9BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAALwABQBUvQQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAAC8AAUAfL0EAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAvAAFAKS9BABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAALwABQDMvQQATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAAC8AAUA9L0EAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQAAvAAFABy+BABB0PwSC2BPu2EFZ6zdPxgtRFT7Iek/m/aB0gtz7z8YLURU+yH5P+JlLyJ/K3o8B1wUMyamgTy9y/B6iAdwPAdcFDMmppE8GC1EVPsh6T8YLURU+yHpv9IhM3982QJA0iEzf3zZAsAAQb/9EgvoFYAYLURU+yEJQBgtRFT7IQnAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A/CkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7/lwAPmAUAES/vAApaiwBtH20Az342AAnLJwBGT7cAnmY/AC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7/EYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj/ACdzTQAGBjEAylYVAMmocwB74mAAa4zAABnERwDNZ8MACejcAFmDKgCLdsQAphyWAESv3QAZV9EApT4FAAUH/wAzfj8AwjLoAJhP3gC7fTIAJj3DAB5r7wCf+F4ANR86AH/yygDxhx0AfJAhAGokfADVbvoAMC13ABU7QwC1FMYAwxmdAK3EwgAsTUEADABdAIZ9RgDjcS0Am8aaADNiAAC00nwAtKeXADdV1QDXPvYAoxAYAE12/ABknSoAcNerAGN8+AB6sFcAFxXnAMBJVgA71tkAp4Q4ACQjywDWincAWlQjAAAfuQDxChsAGc7fAJ8x/wBmHmoAmVdhAKz7RwB+f9gAImW3ADLoiQDmv2AA78TNAGw2CQBdP9QAFt7XAFg73gDem5IA0iIoACiG6ADiWE0AxsoyAAjjFgDgfcsAF8BQAPMdpwAY4FsALhM0AIMSYgCDSAEA9Y5bAK2wfwAe6fIASEpDABBn0wCq3dgArl9CAGphzgAKKKQA05m0AAam8gBcd38Ao8KDAGE8iACKc3gAr4xaAG/XvQAtpmMA9L/LAI2B7wAmwWcAVcpFAMrZNgAoqNIAwmGNABLJdwAEJhQAEkabAMRZxADIxUQATbKRAAAX8wDUQ60AKUnlAP3VEAAAvvwAHpTMAHDO7gATPvUA7PGAALPnwwDH+CgAkwWUAMFxPgAuCbMAC0XzAIgSnACrIHsALrWfAEeSwgB7Mi8ADFVtAHKnkABr5x8AMcuWAHkWSgBBeeIA9N+JAOiUlwDi5oQAmTGXAIjtawBfXzYAu/0OAEiatABnpGwAcXJCAI1dMgCfFbgAvOUJAI0xJQD3dDkAMAUcAA0MAQBLCGgALO5YAEeqkAB05wIAvdYkAPd9pgBuSHIAnxbvAI6UpgC0kfYA0VNRAM8K8gAgmDMA9Ut+ALJjaADdPl8AQF0DAIWJfwBVUikAN2TAAG3YEAAySDIAW0x1AE5x1ABFVG4ACwnBACr1aQAUZtUAJwedAF0EUAC0O9sA6nbFAIf5FwBJa30AHSe6AJZpKQDGzKwArRRUAJDiagCI2YkALHJQAASkvgB3B5QA8zBwAAD8JwDqcagAZsJJAGTgPQCX3YMAoz+XAEOU/QANhowAMUHeAJI5nQDdcIwAF7fnAAjfOwAVNysAXICgAFqAkwAQEZIAD+jYAGyArwDb/0sAOJAPAFkYdgBipRUAYcu7AMeJuQAQQL0A0vIEAEl1JwDrtvYA2yK7AAoUqgCJJi8AZIN2AAk7MwAOlBoAUTqqAB2jwgCv7a4AXCYSAG3CTQAtepwAwFaXAAM/gwAJ8PYAK0CMAG0xmQA5tAcADCAVANjDWwD1ksQAxq1LAE7KpQCnN80A5qk2AKuSlADdQmgAGWPeAHaM7wBoi1IA/Ns3AK6hqwDfFTEAAK6hAAz72gBkTWYA7QW3ACllMABXVr8AR/86AGr5uQB1vvMAKJPfAKuAMABmjPYABMsVAPoiBgDZ5B0APbOkAFcbjwA2zQkATkLpABO+pAAzI7UA8KoaAE9lqADSwaUACz8PAFt4zQAj+XYAe4sEAIkXcgDGplMAb27iAO/rAACbSlgAxNq3AKpmugB2z88A0QIdALHxLQCMmcEAw613AIZI2gD3XaAAxoD0AKzwLwDd7JoAP1y8ANDebQCQxx8AKtu2AKMlOgAAr5oArVOTALZXBAApLbQAS4B+ANoHpwB2qg4Ae1mhABYSKgDcty0A+uX9AInb/gCJvv0A5HZsAAap/AA+gHAAhW4VAP2H/wAoPgcAYWczACoYhgBNveoAs+evAI9tbgCVZzkAMb9bAITXSAAw3xYAxy1DACVhNQDJcM4AMMu4AL9s/QCkAKIABWzkAFrdoAAhb0cAYhLSALlchABwYUkAa1bgAJlSAQBQVTcAHtW3ADPxxAATbl8AXTDkAIUuqQAdssMAoTI2AAi3pADqsdQAFvchAI9p5AAn/3cADAOAAI1ALQBPzaAAIKWZALOi0wAvXQoAtPlCABHaywB9vtAAm9vBAKsXvQDKooEACGpcAC5VFwAnAFUAfxTwAOEHhgAUC2QAlkGNAIe+3gDa/SoAayW2AHuJNAAF8/4Aub+eAGhqTwBKKqgAT8RaAC34vADXWpgA9MeVAA1NjQAgOqYApFdfABQ/sQCAOJUAzCABAHHdhgDJ3rYAv2D1AE1lEQABB2sAjLCsALLA0ABRVUgAHvsOAJVywwCjBjsAwEA1AAbcewDgRcwATin6ANbKyADo80EAfGTeAJtk2ADZvjEApJfDAHdY1ABp48UA8NoTALo6PABGGEYAVXVfANK99QBuksYArC5dAA5E7QAcPkIAYcSHACn96QDn1vMAInzKAG+RNQAI4MUA/9eNAG5q4gCw/cYAkwjBAHxddABrrbIAzW6dAD5yewDGEWoA98+pAClz3wC1yboAtwBRAOKyDQB0uiQA5X1gAHTYigANFSwAgRgMAH5mlAABKRYAn3p2AP39vgBWRe8A2X42AOzZEwCLurkAxJf8ADGoJwDxbsMAlMU2ANioVgC0qLUAz8wOABKJLQBvVzQALFaJAJnO4wDWILkAa16qAD4qnAARX8wA/QtKAOH0+wCOO20A4oYsAOnUhAD8tKkA7+7RAC41yQAvOWEAOCFEABvZyACB/AoA+0pqAC8c2ABTtIQATpmMAFQizAAqVdwAwMbWAAsZlgAacLgAaZVkACZaYAA/Uu4AfxEPAPS1EQD8y/UANLwtADS87gDoXcwA3V5gAGeOmwCSM+8AyRe4AGFYmwDhV7wAUYPGANg+EADdcUgALRzdAK8YoQAhLEYAWfPXANl6mACeVMAAT4b6AFYG/ADlea4AiSI2ADitIgBnk9wAVeiqAIImOADK55sAUQ2kAJkzsQCp1w4AaQVIAGWy8AB/iKcAiEyXAPnRNgAhkrMAe4JKAJjPIQBAn9wA3EdVAOF0OgBn60IA/p3fAF7UXwB7Z6QAuqx6AFX2ogAriCMAQbpVAFluCAAhKoYAOUeDAInj5gDlntQASftAAP9W6QAcD8oAxVmKAJT6KwDTwcUAD8XPANtargBHxYYAhUNiACGGOwAseZQAEGGHACpMewCALBoAQ78SAIgmkAB4PIkAqMTkAOXbewDEOsIAJvTqAPdnigANkr8AZaMrAD2TsQC9fAsApFHcACfdYwBp4d0AmpQZAKgplQBozigACe20AESfIABOmMoAcIJjAH58IwAPuTIAp/WOABRW5wAh8QgAtZ0qAG9+TQClGVEAtfmrAILf1gCW3WEAFjYCAMQ6nwCDoqEAcu1tADmNegCCuKkAazJcAEYnWwAANO0A0gB3APz0VQABWU0A4HGAAEGzkxMLfkD7Ifk/AAAAAC1EdD4AAACAmEb4PAAAAGBRzHg7AAAAgIMb8DkAAABAICV6OAAAAIAiguM2AAAAAB3zaTUZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBwZQTCyEOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQfuUEwsBDABBh5UTCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQbWVEwsBEABBwZUTCxUPAAAABA8AAAAACRAAAAAAABAAABAAQe+VEwsBEgBB+5UTCx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQbKWEwsOGgAAABoaGgAAAAAAAAkAQeOWEwsBFABB75YTCxUXAAAAABcAAAAACRQAAAAAABQAABQAQZ2XEwsBFgBBqZcTC/8CFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVG/////////////////////////////////////////////////////////////////wABAgMEBQYHCAn/////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP///////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAQIEBwMGBQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AQcyaEwsBUgBB9JoTCwj//////////wBBvJsTC/gJFNAEAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAAAAAAJzRBACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAACKAAAAiwAAAIwAAACNAAAAjgAAAI8AAACQAAAAkQAAAE5TdDNfXzI5YmFzaWNfaW9zSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxNWJhc2ljX3N0cmVhbWJ1ZkljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRQBOU3QzX18yMTNiYXNpY19pc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFAE5TdDNfXzIxM2Jhc2ljX29zdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFRUUATlN0M19fMjliYXNpY19pb3NJd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjE1YmFzaWNfc3RyZWFtYnVmSXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFAE5TdDNfXzIxM2Jhc2ljX2lzdHJlYW1Jd05TXzExY2hhcl90cmFpdHNJd0VFRUUATlN0M19fMjEzYmFzaWNfb3N0cmVhbUl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRQBOU3QzX18yOGlvc19iYXNlRQAAAAAAHNAEAHYAAACSAAAAkwAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAJQAAACVAAAAlgAAAIIAAACDAAAATlN0M19fMjEwX19zdGRpbmJ1ZkljRUUAvAAFAGLOBAD8AAUA/M8EABTQBAAIAAAAAAAAAFDQBACXAAAAmAAAAPj////4////UNAEAJkAAACaAAAAaP8EAJPOBAAAAAAAAQAAAHjQBAAD9P//AAAAAHjQBACbAAAAnAAAAPwABQA4zgQAlNAEAAAAAACU0AQAnQAAAJ4AAAC8AAUAqs8EAAAAAAD40AQAdgAAAJ8AAACgAAAAeQAAAHoAAAB7AAAAoQAAAH0AAAB+AAAAfwAAAIAAAACBAAAAogAAAKMAAABOU3QzX18yMTFfX3N0ZG91dGJ1ZkljRUUAAAAA/AAFANzQBAAU0AQABAAAAAAAAAAs0QQApAAAAKUAAAD8/////P///yzRBACmAAAApwAAAGj/BADCzgQAAAAAAAEAAAB40AQAA/T//wAAAACk0QQAhAAAAKgAAACpAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAqgAAAKsAAACsAAAAkAAAAJEAAABOU3QzX18yMTBfX3N0ZGluYnVmSXdFRQC8AAUAG88EAPwABQCE0QQAnNEEAAgAAAAAAAAA2NEEAK0AAACuAAAA+P////j////Y0QQArwAAALAAAABo/wQATM8EAAAAAAABAAAAANIEAAP0//8AAAAAANIEALEAAACyAAAA/AAFAPHOBACU0AQAAAAAAGjSBACEAAAAswAAALQAAACHAAAAiAAAAIkAAAC1AAAAiwAAAIwAAACNAAAAjgAAAI8AAAC2AAAAtwAAAE5TdDNfXzIxMV9fc3Rkb3V0YnVmSXdFRQAAAAD8AAUATNIEAJzRBAAEAAAAAAAAAJzSBAC4AAAAuQAAAPz////8////nNIEALoAAAC7AAAAaP8EAHvPBAAAAAAAAQAAAADSBAAD9P//AEHApRMLFN4SBJUAAAAA////////////////AEHgpRMLV0xDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTAMDSBAAUAAAAQy5VVEYtOABB1KoTC/kDAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwBB1LYTC/kDAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAAJQAAACYAAAAnAAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAAAA5AAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAASQAAAEoAAABLAAAATAAAAE0AAABOAAAATwAAAFAAAABRAAAAUgAAAFMAAABUAAAAVQAAAFYAAABXAAAAWAAAAFkAAABaAAAAWwAAAFwAAABdAAAAXgAAAF8AAABgAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAAB7AAAAfAAAAH0AAAB+AAAAfwBB0L4TC4MCAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAADAxMjM0NTY3ODlhYmNkZWZBQkNERUZ4WCstcFBpSW5OAGwAJUk6JU06JVMgJXAlSDolTQBB4MATC4EBJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAlAAAAWQAAAC0AAAAlAAAAbQAAAC0AAAAlAAAAZAAAACUAAABJAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAIAAAACUAAABwAAAAAAAAACUAAABIAAAAOgAAACUAAABNAEHwwRMLZSUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAAAAAAGTqBAC8AAAAvQAAAL4AAAAAAAAAxOoEAL8AAADAAAAAvgAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAEHgwhML/QMEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAgAABQAAAAUAAAAFAAAABQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMCAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAACoBAAAqAQAAKgEAACoBAAAqAQAAKgEAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAMgEAADIBAAAyAQAAMgEAADIBAAAyAQAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAACCAAAAggAAAIIAAACCAAAABABB5MoTC+0CLOoEAMkAAADKAAAAvgAAAMsAAADMAAAAzQAAAM4AAADPAAAA0AAAANEAAAAAAAAA/OoEANIAAADTAAAAvgAAANQAAADVAAAA1gAAANcAAADYAAAAAAAAACDrBADZAAAA2gAAAL4AAADbAAAA3AAAAN0AAADeAAAA3wAAAHQAAAByAAAAdQAAAGUAAAAAAAAAZgAAAGEAAABsAAAAcwAAAGUAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAQdzNEwv/CgTnBADgAAAA4QAAAL4AAABOU3QzX18yNmxvY2FsZTVmYWNldEUAAAD8AAUA7OYEAMD8BAAAAAAAhOcEAOAAAADiAAAAvgAAAOMAAADkAAAA5QAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAE5TdDNfXzI1Y3R5cGVJd0VFAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAAC8AAUAZucEAGj/BABU5wQAAAAAAAIAAAAE5wQAAgAAAHznBAACAAAAAAAAABjoBADgAAAA7wAAAL4AAADwAAAA8QAAAPIAAADzAAAA9AAAAPUAAAD2AAAATlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFAE5TdDNfXzIxMmNvZGVjdnRfYmFzZUUAAAAAvAAFAPbnBABo/wQA1OcEAAAAAAACAAAABOcEAAIAAAAQ6AQAAgAAAAAAAACM6AQA4AAAAPcAAAC+AAAA+AAAAPkAAAD6AAAA+wAAAPwAAAD9AAAA/gAAAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUAAGj/BABo6AQAAAAAAAIAAAAE5wQAAgAAABDoBAACAAAAAAAAAADpBADgAAAA/wAAAL4AAAAAAQAAAQEAAAIBAAADAQAABAEAAAUBAAAGAQAATlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUUAaP8EANzoBAAAAAAAAgAAAATnBAACAAAAEOgEAAIAAAAAAAAAdOkEAOAAAAAHAQAAvgAAAAgBAAAJAQAACgEAAAsBAAAMAQAADQEAAA4BAABOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFAABo/wQAUOkEAAAAAAACAAAABOcEAAIAAAAQ6AQAAgAAAAAAAADo6QQA4AAAAA8BAAC+AAAAEAEAABEBAAASAQAAEwEAABQBAAAVAQAAFgEAAE5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFAGj/BADE6QQAAAAAAAIAAAAE5wQAAgAAABDoBAACAAAATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAAAAaP8EAAjqBAAAAAAAAgAAAATnBAACAAAAEOgEAAIAAABOU3QzX18yNmxvY2FsZTVfX2ltcEUAAAD8AAUATOoEAATnBABOU3QzX18yN2NvbGxhdGVJY0VFAPwABQBw6gQABOcEAE5TdDNfXzI3Y29sbGF0ZUl3RUUA/AAFAJDqBAAE5wQATlN0M19fMjVjdHlwZUljRUUAAABo/wQAsOoEAAAAAAACAAAABOcEAAIAAAB85wQAAgAAAE5TdDNfXzI4bnVtcHVuY3RJY0VFAAAAAPwABQDk6gQABOcEAE5TdDNfXzI4bnVtcHVuY3RJd0VFAAAAAPwABQAI6wQABOcEAAAAAACE6gQAFwEAABgBAAC+AAAAGQEAABoBAAAbAQAAAAAAAKTqBAAcAQAAHQEAAL4AAAAeAQAAHwEAACABAAAAAAAAQOwEAOAAAAAhAQAAvgAAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEljRUUATlN0M19fMjE0X19udW1fZ2V0X2Jhc2VFAAC8AAUABuwEAGj/BADw6wQAAAAAAAEAAAAg7AQAAAAAAGj/BACs6wQAAAAAAAIAAAAE5wQAAgAAACjsBABB5NgTC8sBFO0EAOAAAAAtAQAAvgAAAC4BAAAvAQAAMAEAADEBAAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA4AQAATlN0M19fMjdudW1fZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yOV9fbnVtX2dldEl3RUUAAABo/wQA5OwEAAAAAAABAAAAIOwEAAAAAABo/wQAoOwEAAAAAAACAAAABOcEAAIAAAD87AQAQbjaEwvfAfztBADgAAAAOQEAAL4AAAA6AQAAOwEAADwBAAA9AQAAPgEAAD8BAABAAQAAQQEAAE5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjlfX251bV9wdXRJY0VFAE5TdDNfXzIxNF9fbnVtX3B1dF9iYXNlRQAAvAAFAMLtBABo/wQArO0EAAAAAAABAAAA3O0EAAAAAABo/wQAaO0EAAAAAAACAAAABOcEAAIAAADk7QQAQaDcEwu/AcTuBADgAAAAQgEAAL4AAABDAQAARAEAAEUBAABGAQAARwEAAEgBAABJAQAASgEAAE5TdDNfXzI3bnVtX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjlfX251bV9wdXRJd0VFAAAAaP8EAJTuBAAAAAAAAQAAANztBAAAAAAAaP8EAFDuBAAAAAAAAgAAAATnBAACAAAArO4EAEHo3RMLmwvE7wQASwEAAEwBAAC+AAAATQEAAE4BAABPAQAAUAEAAFEBAABSAQAAUwEAAPj////E7wQAVAEAAFUBAABWAQAAVwEAAFgBAABZAQAAWgEAAE5TdDNfXzI4dGltZV9nZXRJY05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzI5dGltZV9iYXNlRQC8AAUAfe8EAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSWNFRQAAALwABQCY7wQAaP8EADjvBAAAAAAAAwAAAATnBAACAAAAkO8EAAIAAAC87wQAAAgAAAAAAACw8AQAWwEAAFwBAAC+AAAAXQEAAF4BAABfAQAAYAEAAGEBAABiAQAAYwEAAPj///+w8AQAZAEAAGUBAABmAQAAZwEAAGgBAABpAQAAagEAAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAE5TdDNfXzIyMF9fdGltZV9nZXRfY19zdG9yYWdlSXdFRQAAvAAFAIXwBABo/wQAQPAEAAAAAAADAAAABOcEAAIAAACQ7wQAAgAAAKjwBAAACAAAAAAAAFTxBABrAQAAbAEAAL4AAABtAQAATlN0M19fMjh0aW1lX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUATlN0M19fMjEwX190aW1lX3B1dEUAAAC8AAUANfEEAGj/BADw8AQAAAAAAAIAAAAE5wQAAgAAAEzxBAAACAAAAAAAANTxBABuAQAAbwEAAL4AAABwAQAATlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUAAAAAaP8EAIzxBAAAAAAAAgAAAATnBAACAAAATPEEAAAIAAAAAAAAaPIEAOAAAABxAQAAvgAAAHIBAABzAQAAdAEAAHUBAAB2AQAAdwEAAHgBAAB5AQAAegEAAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQBOU3QzX18yMTBtb25leV9iYXNlRQAAAAC8AAUASPIEAGj/BAAs8gQAAAAAAAIAAAAE5wQAAgAAAGDyBAACAAAAAAAAANzyBADgAAAAewEAAL4AAAB8AQAAfQEAAH4BAAB/AQAAgAEAAIEBAACCAQAAgwEAAIQBAABOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUUAaP8EAMDyBAAAAAAAAgAAAATnBAACAAAAYPIEAAIAAAAAAAAAUPMEAOAAAACFAQAAvgAAAIYBAACHAQAAiAEAAIkBAACKAQAAiwEAAIwBAACNAQAAjgEAAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQBo/wQANPMEAAAAAAACAAAABOcEAAIAAABg8gQAAgAAAAAAAADE8wQA4AAAAI8BAAC+AAAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFAGj/BACo8wQAAAAAAAIAAAAE5wQAAgAAAGDyBAACAAAAAAAAAGj0BADgAAAAmQEAAL4AAACaAQAAmwEAAE5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X2dldEljRUUAALwABQBG9AQAaP8EAAD0BAAAAAAAAgAAAATnBAACAAAAYPQEAEGM6RMLmwEM9QQA4AAAAJwBAAC+AAAAnQEAAJ4BAABOU3QzX18yOW1vbmV5X2dldEl3TlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUATlN0M19fMjExX19tb25leV9nZXRJd0VFAAC8AAUA6vQEAGj/BACk9AQAAAAAAAIAAAAE5wQAAgAAAAT1BABBsOoTC5sBsPUEAOAAAACfAQAAvgAAAKABAAChAQAATlN0M19fMjltb25leV9wdXRJY05TXzE5b3N0cmVhbWJ1Zl9pdGVyYXRvckljTlNfMTFjaGFyX3RyYWl0c0ljRUVFRUVFAE5TdDNfXzIxMV9fbW9uZXlfcHV0SWNFRQAAvAAFAI71BABo/wQASPUEAAAAAAACAAAABOcEAAIAAACo9QQAQdTrEwubAVT2BADgAAAAogEAAL4AAACjAQAApAEAAE5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQBOU3QzX18yMTFfX21vbmV5X3B1dEl3RUUAALwABQAy9gQAaP8EAOz1BAAAAAAAAgAAAATnBAACAAAATPYEAEH47BMLuQjM9gQA4AAAAKUBAAC+AAAApgEAAKcBAACoAQAATlN0M19fMjhtZXNzYWdlc0ljRUUATlN0M19fMjEzbWVzc2FnZXNfYmFzZUUAAAAAvAAFAKn2BABo/wQAlPYEAAAAAAACAAAABOcEAAIAAADE9gQAAgAAAAAAAAAk9wQA4AAAAKkBAAC+AAAAqgEAAKsBAACsAQAATlN0M19fMjhtZXNzYWdlc0l3RUUAAAAAaP8EAAz3BAAAAAAAAgAAAATnBAACAAAAxPYEAAIAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAEG89RMLXLzvBABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAAAAAAKjwBABkAQAAZQEAAGYBAABnAQAAaAEAAGkBAABqAQAATlN0M19fMjE0X19zaGFyZWRfY291bnRFAEG09hMLAyjTBABB0PYTC8gBMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTkAQaj4EwuOCgoAAAAAAAAAZAAAAAAAAADoAwAAAAAAABAnAAAAAAAAoIYBAAAAAABAQg8AAAAAAICWmAAAAAAAAOH1BQAAAAAAypo7AAAAAADkC1QCAAAAAOh2SBcAAAAAEKXU6AAAAACgck4YCQAAAEB6EPNaAAAAgMakfo0DAAAAwW/yhiMAAACKXXhFYwEAAGSns7bgDQAA6IkEI8eKvAAFAAD7BAAAAAAAwPwEAK0BAACuAQAArwEAAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAAAAPwABQDc/AQA7AAFAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAAPwABQAM/QQAAP0EAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQAAAPwABQA8/QQAAP0EAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAPwABQBs/QQAYP0EAE4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQAAAAD8AAUAnP0EAAD9BABOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UAAAD8AAUA0P0EAGD9BAAAAAAAUP4EALEBAACyAQAAswEAALQBAAC1AQAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAPwABQAo/gQAAP0EAHYAAAAU/gQAXP4EAERuAAAU/gQAaP4EAGIAAAAU/gQAdP4EAGMAAAAU/gQAgP4EAGgAAAAU/gQAjP4EAGEAAAAU/gQAmP4EAHMAAAAU/gQApP4EAHQAAAAU/gQAsP4EAGkAAAAU/gQAvP4EAGoAAAAU/gQAyP4EABT+BABB4AQAUGwAAMT/BADc/gQAAAAAANT+BABtAAAAFP4EAPD+BAB4AAAAFP4EAPz+BAB5AAAAFP4EAAj/BABmAAAAFP4EABT/BABkAAAAFP4EACD/BABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAA/AAFACz/BAAw/QQAAAAAALD/BACxAQAAtgEAALMBAAC0AQAAtwEAALgBAAC5AQAAugEAAE4xMF9fY3h4YWJpdjEyMV9fdm1pX2NsYXNzX3R5cGVfaW5mb0UAAAD8AAUAiP8EADD9BAAAAAAAkP0EALEBAAC7AQAAswEAALQBAAC8AQAAAAAAABwABQBNAAAAvQEAAL4BAAAAAAAARAAFAE0AAAC/AQAAwAEAAFN0OWV4Y2VwdGlvbgBTdDliYWRfYWxsb2MAAAD8AAUADQAFABwBBQBTdDIwYmFkX2FycmF5X25ld19sZW5ndGgAAAAA/AAFACgABQAcAAUAAAAAAHQABQACAAAAwQEAAMIBAABTdDExbG9naWNfZXJyb3IA/AAFAGQABQAcAQUAAAAAAKgABQACAAAAwwEAAMIBAABTdDEybGVuZ3RoX2Vycm9yAAAAAPwABQCUAAUAdAAFAAAAAAAw/QQAsQEAAMQBAACzAQAAtAEAALcBAADFAQAAxgEAAMcBAABTdDl0eXBlX2luZm8AAAAAvAAFANwABQAAAAAAVP8EALEBAADIAQAAswEAALQBAAC3AQAAyQEAAMoBAADLAQAAvAAFAAAABQAAAAAAHAEFAE0AAADMAQAAzQEAQbiCFAsRgBwGAAAAAACNl24SI+q4QAUAQdSCFAsBcABB7IIUCwtxAAAAcgAAAHQHBQBBhIMUCwECAEGUgxQLCP//////////AEHYgxQLCUgBBQAAAAAABQBB7IMUCwFzAEGEhBQLDnEAAAB0AAAAmAsFAAAEAEGchBQLAQEAQayEFAsF/////woAQfCEFAsJ4AEFAAAAAAAJAEGEhRQLAXAAQZiFFAsSdQAAAAAAAAByAAAAiAcFAAAEAEHEhRQLBP////8AQYiGFAsCsAE=",Ct(xe)||(xe=V(xe));function oo(x){if(x==xe&&C)return new Uint8Array(C);var D=pm(x);if(D)return D;if(G)return G(x);throw"both async and sync fetching of the wasm failed"}function ea(x){return Promise.resolve().then(()=>oo(x))}function gs(x,D,j){return ea(x).then(lt=>WebAssembly.instantiate(lt,D)).then(lt=>lt).then(j,lt=>{g("failed to asynchronously prepare wasm: "+lt),_t(xe)&&g("warning: Loading from a file URI ("+xe+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),We(lt)})}function is(x,D,j,lt){return gs(D,j,lt)}function ja(){var x={env:XN,wasi_snapshot_preview1:XN};function D(ut,yt){var Yt=ut.exports;return Q=Yt,Y=Q.memory,Z(Y,"memory not found in wasm exports"),H(),nt=Q.__indirect_function_table,Z(nt,"table not found in wasm exports"),qt(Q.__wasm_call_ctors),Ve("wasm-instantiate"),Yt}ke("wasm-instantiate");var j=n;function lt(ut){Z(n===j,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),j=null,D(ut.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(x,D)}catch(ut){g("Module.instantiateWasm callback failed with error: "+ut),o(ut)}return is(C,xe,x,lt).catch(o),{}}var qn,ae;function fe(x,D,j=!0){Object.getOwnPropertyDescriptor(n,x)||Object.defineProperty(n,x,{configurable:!0,get(){let lt=j?" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)":"";We(`\`Module.${x}\` has been replaced by \`${D}\``+lt)}})}function ge(x){Object.getOwnPropertyDescriptor(n,x)&&We(`\`Module.${x}\` was supplied but \`${x}\` not included in INCOMING_MODULE_JS_API`)}function ue(x){return x==="FS_createPath"||x==="FS_createDataFile"||x==="FS_createPreloadedFile"||x==="FS_unlink"||x==="addRunDependency"||x==="FS_createLazyFile"||x==="FS_createDevice"||x==="removeRunDependency"}function Ke(x,D){typeof globalThis<"u"&&Object.defineProperty(globalThis,x,{configurable:!0,get(){Go("`"+x+"` is not longer defined by emscripten. "+D)}})}Ke("buffer","Please use HEAP8.buffer or wasmMemory.buffer");function An(x){typeof globalThis<"u"&&!Object.getOwnPropertyDescriptor(globalThis,x)&&Object.defineProperty(globalThis,x,{configurable:!0,get(){var D="`"+x+"` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line",j=x;j.startsWith("_")||(j="$"+x),D+=" (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='"+j+"')",ue(x)&&(D+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),Go(D)}}),si(x)}function si(x){Object.getOwnPropertyDescriptor(n,x)||Object.defineProperty(n,x,{configurable:!0,get(){var D="'"+x+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)";ue(x)&&(D+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),We(D)}})}var da={328460:()=>{console.log("no show")}};function _a(x){this.name="ExitStatus",this.message=`Program terminated with exit(${x})`,this.status=x}var Rl=x=>{for(;x.length>0;)x.shift()(n)},na=x=>(Z(typeof x=="number"),x>>>=0,"0x"+x.toString(16).padStart(8,"0")),Go=x=>{Go.shown||(Go.shown={}),Go.shown[x]||(Go.shown[x]=1,g(x))};function Ao(x){this.excPtr=x,this.ptr=x-24,this.set_type=function(D){P[this.ptr+4>>2]=D},this.get_type=function(){return P[this.ptr+4>>2]},this.set_destructor=function(D){P[this.ptr+8>>2]=D},this.get_destructor=function(){return P[this.ptr+8>>2]},this.set_caught=function(D){D=D?1:0,E[this.ptr+12>>0]=D},this.get_caught=function(){return E[this.ptr+12>>0]!=0},this.set_rethrown=function(D){D=D?1:0,E[this.ptr+13>>0]=D},this.get_rethrown=function(){return E[this.ptr+13>>0]!=0},this.init=function(D,j){this.set_adjusted_ptr(0),this.set_type(D),this.set_destructor(j)},this.set_adjusted_ptr=function(D){P[this.ptr+16>>2]=D},this.get_adjusted_ptr=function(){return P[this.ptr+16>>2]},this.get_exception_ptr=function(){var D=s8(this.get_type());if(D)return P[this.excPtr>>2];var j=this.get_adjusted_ptr();return j!==0?j:this.excPtr}}var Xs=0,Es=0;function wl(x,D,j){var lt=new Ao(x);lt.init(D,j),Xs=x,Es++,Z(!1,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")}function ka(x,D,j,lt,ut){}function Wa(x){switch(x){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${x}`)}}function JV(){for(var x=new Array(256),D=0;D<256;++D)x[D]=String.fromCharCode(D);yl=x}var yl=void 0;function Bi(x){for(var D="",j=x;I[j];)D+=yl[I[j++]];return D}var sd={},zi={},js={},ca=void 0;function $n(x){throw new ca(x)}var mr=void 0;function hr(x){throw new mr(x)}function pr(x,D,j){x.forEach(function(Dt){js[Dt]=D});function lt(Dt){var pe=j(Dt);pe.length!==x.length&&hr("Mismatched type converter count");for(var Te=0;Te{zi.hasOwnProperty(Dt)?ut[pe]=zi[Dt]:(yt.push(Dt),sd.hasOwnProperty(Dt)||(sd[Dt]=[]),sd[Dt].push(()=>{ut[pe]=zi[Dt],++Yt,Yt===yt.length&<(ut)}))}),yt.length===0&<(ut)}function hs(x,D,j={}){var lt=D.name;if(x||$n(`type "${lt}" must have a positive integer typeid pointer`),zi.hasOwnProperty(x)){if(j.ignoreDuplicateRegistrations)return;$n(`Cannot register type '${lt}' twice`)}if(zi[x]=D,delete js[x],sd.hasOwnProperty(x)){var ut=sd[x];delete sd[x],ut.forEach(yt=>yt())}}function ma(x,D,j={}){if(!("argPackAdvance"in D))throw new TypeError("registerType registeredInstance requires argPackAdvance");return hs(x,D,j)}function Ed(x,D,j,lt,ut){var yt=Wa(j);D=Bi(D),ma(x,{name:D,fromWireType:function(Yt){return!!Yt},toWireType:function(Yt,Dt){return Dt?lt:ut},argPackAdvance:8,readValueFromPointer:function(Yt){var Dt;if(j===1)Dt=E;else if(j===2)Dt=B;else if(j===4)Dt=_;else throw new TypeError("Unknown boolean type size: "+D);return this.fromWireType(Dt[Yt>>yt])},destructorFunction:null})}function BW(x){if(!(this instanceof rh)||!(x instanceof rh))return!1;for(var D=this.$$.ptrType.registeredClass,j=this.$$.ptr,lt=x.$$.ptrType.registeredClass,ut=x.$$.ptr;D.baseClass;)j=D.upcast(j),D=D.baseClass;for(;lt.baseClass;)ut=lt.upcast(ut),lt=lt.baseClass;return D===lt&&j===ut}function bc(x){return{count:x.count,deleteScheduled:x.deleteScheduled,preservePointerOnDelete:x.preservePointerOnDelete,ptr:x.ptr,ptrType:x.ptrType,smartPtr:x.smartPtr,smartPtrType:x.smartPtrType}}function $R(x){function D(j){return j.$$.ptrType.registeredClass.name}$n(D(x)+" instance already deleted")}var up=!1;function LV(x){}function QW(x){x.smartPtr?x.smartPtrType.rawDestructor(x.smartPtr):x.ptrType.registeredClass.rawDestructor(x.ptr)}function tb(x){x.count.value-=1;var D=x.count.value===0;D&&QW(x)}function kW(x,D,j){if(D===j)return x;if(j.baseClass===void 0)return null;var lt=kW(x,D,j.baseClass);return lt===null?null:j.downcast(lt)}var YW={};function pg(){return Object.keys(MV).length}function MU(){var x=[];for(var D in MV)MV.hasOwnProperty(D)&&x.push(MV[D]);return x}var lh=[];function Zp(){for(;lh.length;){var x=lh.pop();x.$$.deleteScheduled=!1,x.delete()}}var lm=void 0;function _U(x){lm=x,lh.length&&lm&&lm(Zp)}function DU(){n.getInheritedInstanceCount=pg,n.getLiveInheritedInstances=MU,n.flushPendingDeletes=Zp,n.setDelayFunction=_U}var MV={};function eb(x,D){for(D===void 0&&$n("ptr should not be undefined");x.baseClass;)D=x.upcast(D),x=x.baseClass;return D}function Vg(x,D){return D=eb(x,D),MV[D]}function Rp(x,D){(!D.ptrType||!D.ptr)&&hr("makeClassHandle requires ptr and ptrType");var j=!!D.smartPtrType,lt=!!D.smartPtr;return j!==lt&&hr("Both smartPtrType and smartPtr must be specified"),D.count={value:1},kr(Object.create(x,{$$:{value:D}}))}function bp(x){var D=this.getPointee(x);if(!D)return this.destructor(x),null;var j=Vg(this.registeredClass,D);if(j!==void 0){if(j.$$.count.value===0)return j.$$.ptr=D,j.$$.smartPtr=x,j.clone();var lt=j.clone();return this.destructor(x),lt}function ut(){return this.isSmartPointer?Rp(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:D,smartPtrType:this,smartPtr:x}):Rp(this.registeredClass.instancePrototype,{ptrType:this,ptr:x})}var yt=this.registeredClass.getActualType(D),Yt=YW[yt];if(!Yt)return ut.call(this);var Dt;this.isConst?Dt=Yt.constPointerType:Dt=Yt.pointerType;var pe=kW(D,this.registeredClass,Dt.registeredClass);return pe===null?ut.call(this):this.isSmartPointer?Rp(Dt.registeredClass.instancePrototype,{ptrType:Dt,ptr:pe,smartPtrType:this,smartPtr:x}):Rp(Dt.registeredClass.instancePrototype,{ptrType:Dt,ptr:pe})}var kr=function(x){return typeof FinalizationRegistry>"u"?(kr=D=>D,x):(up=new FinalizationRegistry(D=>{console.warn(D.leakWarning.stack.replace(/^Error: /,"")),tb(D.$$)}),kr=D=>{var j=D.$$,lt=!!j.smartPtr;if(lt){var ut={$$:j},yt=j.ptrType.registeredClass;ut.leakWarning=new Error(`Embind found a leaked C++ instance ${yt.name} <${na(j.ptr)}>. We'll free it automatically in this case, but this functionality is not reliable across various environments. Make sure to invoke .delete() manually once you're done with the instance instead. -Originally allocated`),"captureStackTrace"in Error&&Error.captureStackTrace(Zt.leakWarning,Rp),Zp.register(D,Zt,D)}return D},Lu=D=>Zp.unregister(D),kr(x))};function fV(){if(this.$$.ptr||$b(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var x=kr(Object.create(Object.getPrototypeOf(this),{$$:{value:Rc(this.$$)}}));return x.$$.count.value+=1,x.$$.deleteScheduled=!1,x}function xW(){this.$$.ptr||$b(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$n("Object already scheduled for deletion"),Lu(this),tR(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function XW(){return!this.$$.ptr}function OU(){return this.$$.ptr||$b(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$n("Object already scheduled for deletion"),lh.push(this),lh.length===1&&lm&&lm(Vp),this.$$.deleteScheduled=!0,this}function nR(){rh.prototype.isAliasOf=BW,rh.prototype.clone=fV,rh.prototype.delete=xW,rh.prototype.isDeleted=XW,rh.prototype.deleteLater=OU}function rh(){}var HU=48,Js=57;function ld(x){if(x===void 0)return"_unknown";x=x.replace(/[^a-zA-Z0-9_]/g,"$");var D=x.charCodeAt(0);return D>=HU&&D<=Js?`_${x}`:x}function iR(x,D){return x=ld(x),{[x]:function(){return D.apply(this,arguments)}}[x]}function wU(x,D,j){if(x[D].overloadTable===void 0){var lt=x[D];x[D]=function(){return x[D].overloadTable.hasOwnProperty(arguments.length)||$n(`Function '${j}' called with an invalid number of arguments (${arguments.length}) - expects one of (${x[D].overloadTable})!`),x[D].overloadTable[arguments.length].apply(this,arguments)},x[D].overloadTable=[],x[D].overloadTable[lt.argCount]=lt}}function PU(x,D,j){n.hasOwnProperty(x)?((j===void 0||n[x].overloadTable!==void 0&&n[x].overloadTable[j]!==void 0)&&$n(`Cannot register public name '${x}' twice`),wU(n,x,x),n.hasOwnProperty(j)&&$n(`Cannot register multiple overloads of a function with the same number of arguments (${j})!`),n[x].overloadTable[j]=D):(n[x]=D,j!==void 0&&(n[x].numArguments=j))}function JW(x,D,j,lt,Zt,yt,Yt,Dt){this.name=x,this.constructor=D,this.instancePrototype=j,this.rawDestructor=lt,this.baseClass=Zt,this.getActualType=yt,this.upcast=Yt,this.downcast=Dt,this.pureVirtualFunctions=[]}function FV(x,D,j){for(;D!==j;)D.upcast||$n(`Expected null or instance of ${j.name}, got an instance of ${D.name}`),x=D.upcast(x),D=D.baseClass;return x}function vU(x,D){if(D===null)return this.isReference&&$n(`null is not a valid ${this.name}`),0;D.$$||$n(`Cannot pass "${aR(D)}" as a ${this.name}`),D.$$.ptr||$n(`Cannot pass deleted object as a pointer of type ${this.name}`);var j=D.$$.ptrType.registeredClass,lt=FV(D.$$.ptr,j,this.registeredClass);return lt}function Zg(x,D){var j;if(D===null)return this.isReference&&$n(`null is not a valid ${this.name}`),this.isSmartPointer?(j=this.rawConstructor(),x!==null&&x.push(this.rawDestructor,j),j):0;D.$$||$n(`Cannot pass "${aR(D)}" as a ${this.name}`),D.$$.ptr||$n(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&D.$$.ptrType.isConst&&$n(`Cannot convert argument of type ${D.$$.smartPtrType?D.$$.smartPtrType.name:D.$$.ptrType.name} to parameter type ${this.name}`);var lt=D.$$.ptrType.registeredClass;if(j=FV(D.$$.ptr,lt,this.registeredClass),this.isSmartPointer)switch(D.$$.smartPtr===void 0&&$n("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:D.$$.smartPtrType===this?j=D.$$.smartPtr:$n(`Cannot convert argument of type ${D.$$.smartPtrType?D.$$.smartPtrType.name:D.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:j=D.$$.smartPtr;break;case 2:if(D.$$.smartPtrType===this)j=D.$$.smartPtr;else{var Zt=D.clone();j=this.rawShare(j,dh.toHandle(function(){Zt.delete()})),x!==null&&x.push(this.rawDestructor,j)}break;default:$n("Unsupporting sharing policy")}return j}function Vg(x,D){if(D===null)return this.isReference&&$n(`null is not a valid ${this.name}`),0;D.$$||$n(`Cannot pass "${aR(D)}" as a ${this.name}`),D.$$.ptr||$n(`Cannot pass deleted object as a pointer of type ${this.name}`),D.$$.ptrType.isConst&&$n(`Cannot convert argument of type ${D.$$.ptrType.name} to parameter type ${this.name}`);var j=D.$$.ptrType.registeredClass,lt=FV(D.$$.ptr,j,this.registeredClass);return lt}function oR(x){return this.fromWireType(_[x>>2])}function SN(x){return this.rawGetPointee&&(x=this.rawGetPointee(x)),x}function Cd(x){this.rawDestructor&&this.rawDestructor(x)}function KU(x){x!==null&&x.delete()}function bg(){rm.prototype.getPointee=SN,rm.prototype.destructor=Cd,rm.prototype.argPackAdvance=8,rm.prototype.readValueFromPointer=oR,rm.prototype.deleteObject=KU,rm.prototype.fromWireType=Rp}function rm(x,D,j,lt,Zt,yt,Yt,Dt,pe,Se,en){this.name=x,this.registeredClass=D,this.isReference=j,this.isConst=lt,this.isSmartPointer=Zt,this.pointeeType=yt,this.sharingPolicy=Yt,this.rawGetPointee=Dt,this.rawConstructor=pe,this.rawShare=Se,this.rawDestructor=en,!Zt&&D.baseClass===void 0?lt?(this.toWireType=vU,this.destructorFunction=null):(this.toWireType=Vg,this.destructorFunction=null):this.toWireType=Zg}function Rg(x,D,j){n.hasOwnProperty(x)||hr("Replacing nonexistant public symbol"),n[x].overloadTable!==void 0&&j!==void 0?n[x].overloadTable[j]=D:(n[x]=D,n[x].argCount=j)}var LW=(x,D,j)=>{V("dynCall_"+x in n,`bad function pointer type - dynCall function not found for sig '${x}'`),j&&j.length?V(j.length===x.substring(1).replace(/j/g,"--").length):V(x.length==1);var lt=n["dynCall_"+x];return j&&j.length?lt.apply(null,[D].concat(j)):lt.call(null,D)},Id=[],MW=x=>{var D=Id[x];return D||(x>=Id.length&&(Id.length=x+1),Id[x]=D=nt.get(x)),V(nt.get(x)==D,"JavaScript-side Wasm function table mirror is out of date!"),D},Wg=(x,D,j)=>{if(x.includes("j"))return LW(x,D,j);V(MW(D),`missing table entry in dynCall: ${D}`);var lt=MW(D).apply(null,j);return lt},fg=(x,D)=>{V(x.includes("j")||x.includes("p"),"getDynCaller should only be called with i64 sigs");var j=[];return function(){return j.length=0,Object.assign(j,arguments),Wg(x,D,j)}};function dm(x,D){x=Bi(x);function j(){return x.includes("j")?fg(x,D):MW(D)}var lt=j();return typeof lt!="function"&&$n(`unknown function pointer with signature ${x}: ${D}`),lt}function Da(x,D){var j=iR(D,function(lt){this.name=D,this.message=lt;var Zt=new Error(lt).stack;Zt!==void 0&&(this.stack=this.toString()+` -`+Zt.replace(/^Error(:[^\n]*)?\n/,""))});return j.prototype=Object.create(x.prototype),j.prototype.constructor=j,j.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},j}var Zn=void 0;function Kt(x){var D=i8(x),j=Bi(D);return us(D),j}function De(x,D){var j=[],lt={};function Zt(yt){if(!lt[yt]&&!zi[yt]){if(js[yt]){js[yt].forEach(Zt);return}j.push(yt),lt[yt]=!0}}throw D.forEach(Zt),new Zn(`${x}: `+j.map(Kt).join([", "]))}function ti(x,D,j,lt,Zt,yt,Yt,Dt,pe,Se,en,Vn,bn){en=Bi(en),yt=dm(Zt,yt),Dt&&(Dt=dm(Yt,Dt)),Se&&(Se=dm(pe,Se)),bn=dm(Vn,bn);var Rn=ld(en);PU(Rn,function(){De(`Cannot construct ${en} due to unbound types`,[lt])}),pr([x,D,j],lt?[lt]:[],function(Xn){Xn=Xn[0];var vi,Ea;lt?(vi=Xn.registeredClass,Ea=vi.instancePrototype):Ea=rh.prototype;var Oo=iR(Rn,function(){if(Object.getPrototypeOf(this)!==Le)throw new ca("Use 'new' to construct "+en);if(kn.constructor_body===void 0)throw new ca(en+" has no accessible constructor");var _s=kn.constructor_body[arguments.length];if(_s===void 0)throw new ca(`Tried to invoke ctor of ${en} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(kn.constructor_body).toString()}) parameters instead!`);return _s.apply(this,arguments)}),Le=Object.create(Ea,{constructor:{value:Oo}});Oo.prototype=Le;var kn=new JW(en,Oo,Le,bn,vi,yt,Dt,Se);kn.baseClass&&(kn.baseClass.__derivedClasses===void 0&&(kn.baseClass.__derivedClasses=[]),kn.baseClass.__derivedClasses.push(kn));var fa=new rm(en,kn,!0,!1,!1),Ya=new rm(en+"*",kn,!1,!1,!1),Nd=new rm(en+" const*",kn,!1,!0,!1);return YW[x]={pointerType:Ya,constPointerType:Nd},Rg(Rn,Oo),[fa,Ya,Nd]})}function Hi(x,D){for(var j=[],lt=0;lt>2]);return j}function Rl(x){for(;x.length;){var D=x.pop(),j=x.pop();j(D)}}function Pl(x,D){if(!(x instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof x} which is not a function`);var j=iR(x.name||"unknownFunctionName",function(){});j.prototype=x.prototype;var lt=new j,Zt=x.apply(lt,D);return Zt instanceof Object?Zt:lt}function Bl(x,D,j,lt,Zt,yt){var Yt=D.length;Yt<2&&$n("argTypes array size mismatch! Must at least get return value and 'this' types!"),V(!yt,"Async bindings are only supported with JSPI.");for(var Dt=D[1]!==null&&j!==null,pe=!1,Se=1;Seup.unregister(D),kr(x))};function fZ(){if(this.$$.ptr||$R(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var x=kr(Object.create(Object.getPrototypeOf(this),{$$:{value:bc(this.$$)}}));return x.$$.count.value+=1,x.$$.deleteScheduled=!1,x}function xW(){this.$$.ptr||$R(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$n("Object already scheduled for deletion"),LV(this),tb(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function XW(){return!this.$$.ptr}function OU(){return this.$$.ptr||$R(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$n("Object already scheduled for deletion"),lh.push(this),lh.length===1&&lm&&lm(Zp),this.$$.deleteScheduled=!0,this}function nb(){rh.prototype.isAliasOf=BW,rh.prototype.clone=fZ,rh.prototype.delete=xW,rh.prototype.isDeleted=XW,rh.prototype.deleteLater=OU}function rh(){}var HU=48,Js=57;function ld(x){if(x===void 0)return"_unknown";x=x.replace(/[^a-zA-Z0-9_]/g,"$");var D=x.charCodeAt(0);return D>=HU&&D<=Js?`_${x}`:x}function ib(x,D){return x=ld(x),{[x]:function(){return D.apply(this,arguments)}}[x]}function wU(x,D,j){if(x[D].overloadTable===void 0){var lt=x[D];x[D]=function(){return x[D].overloadTable.hasOwnProperty(arguments.length)||$n(`Function '${j}' called with an invalid number of arguments (${arguments.length}) - expects one of (${x[D].overloadTable})!`),x[D].overloadTable[arguments.length].apply(this,arguments)},x[D].overloadTable=[],x[D].overloadTable[lt.argCount]=lt}}function PU(x,D,j){n.hasOwnProperty(x)?((j===void 0||n[x].overloadTable!==void 0&&n[x].overloadTable[j]!==void 0)&&$n(`Cannot register public name '${x}' twice`),wU(n,x,x),n.hasOwnProperty(j)&&$n(`Cannot register multiple overloads of a function with the same number of arguments (${j})!`),n[x].overloadTable[j]=D):(n[x]=D,j!==void 0&&(n[x].numArguments=j))}function JW(x,D,j,lt,ut,yt,Yt,Dt){this.name=x,this.constructor=D,this.instancePrototype=j,this.rawDestructor=lt,this.baseClass=ut,this.getActualType=yt,this.upcast=Yt,this.downcast=Dt,this.pureVirtualFunctions=[]}function FZ(x,D,j){for(;D!==j;)D.upcast||$n(`Expected null or instance of ${j.name}, got an instance of ${D.name}`),x=D.upcast(x),D=D.baseClass;return x}function vU(x,D){if(D===null)return this.isReference&&$n(`null is not a valid ${this.name}`),0;D.$$||$n(`Cannot pass "${ab(D)}" as a ${this.name}`),D.$$.ptr||$n(`Cannot pass deleted object as a pointer of type ${this.name}`);var j=D.$$.ptrType.registeredClass,lt=FZ(D.$$.ptr,j,this.registeredClass);return lt}function ug(x,D){var j;if(D===null)return this.isReference&&$n(`null is not a valid ${this.name}`),this.isSmartPointer?(j=this.rawConstructor(),x!==null&&x.push(this.rawDestructor,j),j):0;D.$$||$n(`Cannot pass "${ab(D)}" as a ${this.name}`),D.$$.ptr||$n(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&D.$$.ptrType.isConst&&$n(`Cannot convert argument of type ${D.$$.smartPtrType?D.$$.smartPtrType.name:D.$$.ptrType.name} to parameter type ${this.name}`);var lt=D.$$.ptrType.registeredClass;if(j=FZ(D.$$.ptr,lt,this.registeredClass),this.isSmartPointer)switch(D.$$.smartPtr===void 0&&$n("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:D.$$.smartPtrType===this?j=D.$$.smartPtr:$n(`Cannot convert argument of type ${D.$$.smartPtrType?D.$$.smartPtrType.name:D.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:j=D.$$.smartPtr;break;case 2:if(D.$$.smartPtrType===this)j=D.$$.smartPtr;else{var ut=D.clone();j=this.rawShare(j,dh.toHandle(function(){ut.delete()})),x!==null&&x.push(this.rawDestructor,j)}break;default:$n("Unsupporting sharing policy")}return j}function Zg(x,D){if(D===null)return this.isReference&&$n(`null is not a valid ${this.name}`),0;D.$$||$n(`Cannot pass "${ab(D)}" as a ${this.name}`),D.$$.ptr||$n(`Cannot pass deleted object as a pointer of type ${this.name}`),D.$$.ptrType.isConst&&$n(`Cannot convert argument of type ${D.$$.ptrType.name} to parameter type ${this.name}`);var j=D.$$.ptrType.registeredClass,lt=FZ(D.$$.ptr,j,this.registeredClass);return lt}function ob(x){return this.fromWireType(_[x>>2])}function TN(x){return this.rawGetPointee&&(x=this.rawGetPointee(x)),x}function Cd(x){this.rawDestructor&&this.rawDestructor(x)}function KU(x){x!==null&&x.delete()}function Rg(){rm.prototype.getPointee=TN,rm.prototype.destructor=Cd,rm.prototype.argPackAdvance=8,rm.prototype.readValueFromPointer=ob,rm.prototype.deleteObject=KU,rm.prototype.fromWireType=bp}function rm(x,D,j,lt,ut,yt,Yt,Dt,pe,Te,en){this.name=x,this.registeredClass=D,this.isReference=j,this.isConst=lt,this.isSmartPointer=ut,this.pointeeType=yt,this.sharingPolicy=Yt,this.rawGetPointee=Dt,this.rawConstructor=pe,this.rawShare=Te,this.rawDestructor=en,!ut&&D.baseClass===void 0?lt?(this.toWireType=vU,this.destructorFunction=null):(this.toWireType=Zg,this.destructorFunction=null):this.toWireType=ug}function bg(x,D,j){n.hasOwnProperty(x)||hr("Replacing nonexistant public symbol"),n[x].overloadTable!==void 0&&j!==void 0?n[x].overloadTable[j]=D:(n[x]=D,n[x].argCount=j)}var LW=(x,D,j)=>{Z("dynCall_"+x in n,`bad function pointer type - dynCall function not found for sig '${x}'`),j&&j.length?Z(j.length===x.substring(1).replace(/j/g,"--").length):Z(x.length==1);var lt=n["dynCall_"+x];return j&&j.length?lt.apply(null,[D].concat(j)):lt.call(null,D)},Id=[],MW=x=>{var D=Id[x];return D||(x>=Id.length&&(Id.length=x+1),Id[x]=D=nt.get(x)),Z(nt.get(x)==D,"JavaScript-side Wasm function table mirror is out of date!"),D},Wg=(x,D,j)=>{if(x.includes("j"))return LW(x,D,j);Z(MW(D),`missing table entry in dynCall: ${D}`);var lt=MW(D).apply(null,j);return lt},fg=(x,D)=>{Z(x.includes("j")||x.includes("p"),"getDynCaller should only be called with i64 sigs");var j=[];return function(){return j.length=0,Object.assign(j,arguments),Wg(x,D,j)}};function dm(x,D){x=Bi(x);function j(){return x.includes("j")?fg(x,D):MW(D)}var lt=j();return typeof lt!="function"&&$n(`unknown function pointer with signature ${x}: ${D}`),lt}function Da(x,D){var j=ib(D,function(lt){this.name=D,this.message=lt;var ut=new Error(lt).stack;ut!==void 0&&(this.stack=this.toString()+` +`+ut.replace(/^Error(:[^\n]*)?\n/,""))});return j.prototype=Object.create(x.prototype),j.prototype.constructor=j,j.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},j}var un=void 0;function Kt(x){var D=i8(x),j=Bi(D);return Vs(D),j}function De(x,D){var j=[],lt={};function ut(yt){if(!lt[yt]&&!zi[yt]){if(js[yt]){js[yt].forEach(ut);return}j.push(yt),lt[yt]=!0}}throw D.forEach(ut),new un(`${x}: `+j.map(Kt).join([", "]))}function ti(x,D,j,lt,ut,yt,Yt,Dt,pe,Te,en,Zn,Rn){en=Bi(en),yt=dm(ut,yt),Dt&&(Dt=dm(Yt,Dt)),Te&&(Te=dm(pe,Te)),Rn=dm(Zn,Rn);var bn=ld(en);PU(bn,function(){De(`Cannot construct ${en} due to unbound types`,[lt])}),pr([x,D,j],lt?[lt]:[],function(Xn){Xn=Xn[0];var vi,Ea;lt?(vi=Xn.registeredClass,Ea=vi.instancePrototype):Ea=rh.prototype;var Oo=ib(bn,function(){if(Object.getPrototypeOf(this)!==Le)throw new ca("Use 'new' to construct "+en);if(kn.constructor_body===void 0)throw new ca(en+" has no accessible constructor");var _s=kn.constructor_body[arguments.length];if(_s===void 0)throw new ca(`Tried to invoke ctor of ${en} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(kn.constructor_body).toString()}) parameters instead!`);return _s.apply(this,arguments)}),Le=Object.create(Ea,{constructor:{value:Oo}});Oo.prototype=Le;var kn=new JW(en,Oo,Le,Rn,vi,yt,Dt,Te);kn.baseClass&&(kn.baseClass.__derivedClasses===void 0&&(kn.baseClass.__derivedClasses=[]),kn.baseClass.__derivedClasses.push(kn));var fa=new rm(en,kn,!0,!1,!1),Ya=new rm(en+"*",kn,!1,!1,!1),Nd=new rm(en+" const*",kn,!1,!0,!1);return YW[x]={pointerType:Ya,constPointerType:Nd},bg(bn,Oo),[fa,Ya,Nd]})}function Hi(x,D){for(var j=[],lt=0;lt>2]);return j}function bl(x){for(;x.length;){var D=x.pop(),j=x.pop();j(D)}}function Pl(x,D){if(!(x instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof x} which is not a function`);var j=ib(x.name||"unknownFunctionName",function(){});j.prototype=x.prototype;var lt=new j,ut=x.apply(lt,D);return ut instanceof Object?ut:lt}function Bl(x,D,j,lt,ut,yt){var Yt=D.length;Yt<2&&$n("argTypes array size mismatch! Must at least get return value and 'this' types!"),Z(!yt,"Async bindings are only supported with JSPI.");for(var Dt=D[1]!==null&&j!==null,pe=!1,Te=1;Te0?", ":"")+bn),Rn+=(en||yt?"var rv = ":"")+"invoker(fn"+(bn.length>0?", ":"")+bn+`); -`,pe)Rn+=`runDestructors(destructors); -`;else for(var Se=Dt?1:2;Se0?", ":"")+Rn),bn+=(en||yt?"var rv = ":"")+"invoker(fn"+(Rn.length>0?", ":"")+Rn+`); +`,pe)bn+=`runDestructors(destructors); +`;else for(var Te=Dt?1:2;Te0);var Yt=Hi(D,j);Zt=dm(lt,Zt),pr([],[x],function(Dt){Dt=Dt[0];var pe=`constructor ${Dt.name}`;if(Dt.registeredClass.constructor_body===void 0&&(Dt.registeredClass.constructor_body=[]),Dt.registeredClass.constructor_body[D-1]!==void 0)throw new ca(`Cannot register multiple constructors with identical number of parameters (${D-1}) for class '${Dt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Dt.registeredClass.constructor_body[D-1]=()=>{De(`Cannot construct ${Dt.name} due to unbound types`,Yt)},pr([],Yt,function(Se){return Se.splice(1,0,null),Dt.registeredClass.constructor_body[D-1]=Bl(pe,Se,null,Zt,yt),[]}),[]})}function ps(x,D,j,lt,Zt,yt,Yt,Dt,pe){var Se=Hi(j,lt);D=Bi(D),yt=dm(Zt,yt),pr([],[x],function(en){en=en[0];var Vn=`${en.name}.${D}`;D.startsWith("@@")&&(D=Symbol[D.substring(2)]),Dt&&en.registeredClass.pureVirtualFunctions.push(D);function bn(){De(`Cannot call ${Vn} due to unbound types`,Se)}var Rn=en.registeredClass.instancePrototype,Xn=Rn[D];return Xn===void 0||Xn.overloadTable===void 0&&Xn.className!==en.name&&Xn.argCount===j-2?(bn.argCount=j-2,bn.className=en.name,Rn[D]=bn):(wU(Rn,D,Vn),Rn[D].overloadTable[j-2]=bn),pr([],Se,function(vi){var Ea=Bl(Vn,vi,en,yt,Yt,pe);return Rn[D].overloadTable===void 0?(Ea.argCount=j-2,Rn[D]=Ea):Rn[D].overloadTable[j-2]=Ea,[]}),[]})}function Ql(x,D,j){return x instanceof Object||$n(`${j} with invalid "this": ${x}`),x instanceof D.registeredClass.constructor||$n(`${j} incompatible with "this" of type ${x.constructor.name}`),x.$$.ptr||$n(`cannot call emscripten binding method ${j} on deleted object`),FV(x.$$.ptr,x.$$.ptrType.registeredClass,D.registeredClass)}function Wp(x,D,j,lt,Zt,yt,Yt,Dt,pe,Se){D=Bi(D),Zt=dm(lt,Zt),pr([],[x],function(en){en=en[0];var Vn=`${en.name}.${D}`,bn={get(){De(`Cannot access ${Vn} due to unbound types`,[j,Yt])},enumerable:!0,configurable:!0};return pe?bn.set=()=>{De(`Cannot access ${Vn} due to unbound types`,[j,Yt])}:bn.set=Rn=>{$n(Vn+" is a read-only property")},Object.defineProperty(en.registeredClass.instancePrototype,D,bn),pr([],pe?[j,Yt]:[j],function(Rn){var Xn=Rn[0],vi={get(){var Oo=Ql(this,en,Vn+" getter");return Xn.fromWireType(Zt(yt,Oo))},enumerable:!0};if(pe){pe=dm(Dt,pe);var Ea=Rn[1];vi.set=function(Oo){var Le=Ql(this,en,Vn+" setter"),kn=[];pe(Se,Le,Ea.toWireType(kn,Oo)),Rl(kn)}}return Object.defineProperty(en.registeredClass.instancePrototype,D,vi),[]}),[]})}function zU(){Object.assign(Fg.prototype,{get(x){return V(this.allocated[x]!==void 0,`invalid handle: ${x}`),this.allocated[x]},has(x){return this.allocated[x]!==void 0},allocate(x){var D=this.freelist.pop()||this.allocated.length;return this.allocated[D]=x,D},free(x){V(this.allocated[x]!==void 0),this.allocated[x]=void 0,this.freelist.push(x)}})}function Fg(){this.allocated=[void 0],this.freelist=[]}var Ls=new Fg;function Ug(x){x>=Ls.reserved&&--Ls.get(x).refcount===0&&Ls.free(x)}function lO(){for(var x=0,D=Ls.reserved;D(x||$n("Cannot use deleted val. handle = "+x),Ls.get(x).value),toHandle:x=>{switch(x){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ls.allocate({refcount:1,value:x})}}};function dO(x,D){D=Bi(D),ma(x,{name:D,fromWireType:function(j){var lt=dh.toValue(j);return Ug(j),lt},toWireType:function(j,lt){return dh.toHandle(lt)},argPackAdvance:8,readValueFromPointer:oR,destructorFunction:null})}function aR(x){if(x===null)return"null";var D=typeof x;return D==="object"||D==="array"||D==="function"?x.toString():""+x}function Wc(x,D){switch(D){case 2:return function(j){return this.fromWireType(w[j>>2])};case 3:return function(j){return this.fromWireType(z[j>>3])};default:throw new TypeError("Unknown float type: "+x)}}function y4(x,D,j){var lt=Wa(j);D=Bi(D),ma(x,{name:D,fromWireType:function(Zt){return Zt},toWireType:function(Zt,yt){if(typeof yt!="number"&&typeof yt!="boolean")throw new TypeError(`Cannot convert ${aR(yt)} to ${this.name}`);return yt},argPackAdvance:8,readValueFromPointer:Wc(D,lt),destructorFunction:null})}function cm(x,D,j,lt,Zt,yt,Yt){var Dt=Hi(D,j);x=Bi(x),Zt=dm(lt,Zt),PU(x,function(){De(`Cannot call ${x} due to unbound types`,Dt)},D-1),pr([],Dt,function(pe){var Se=[pe[0],null].concat(pe.slice(1));return Rg(x,Bl(x,Se,null,Zt,yt,Yt),D-1),[]})}function B4(x,D,j){switch(D){case 0:return j?function(Zt){return E[Zt]}:function(Zt){return I[Zt]};case 1:return j?function(Zt){return B[Zt>>1]}:function(Zt){return X[Zt>>1]};case 2:return j?function(Zt){return _[Zt>>2]}:function(Zt){return P[Zt>>2]};default:throw new TypeError("Unknown integer type: "+x)}}function cO(x,D,j,lt,Zt){D=Bi(D),Zt===-1&&(Zt=4294967295);var yt=Wa(j),Yt=Vn=>Vn;if(lt===0){var Dt=32-8*j;Yt=Vn=>Vn<

>>Dt}var pe=D.includes("unsigned"),Se=(Vn,bn)=>{if(typeof Vn!="number"&&typeof Vn!="boolean")throw new TypeError(`Cannot convert "${aR(Vn)}" to ${bn}`);if(VnZt)throw new TypeError(`Passing a number "${aR(Vn)}" from JS side to C/C++ side to an argument of type "${D}", which is outside the valid range [${lt}, ${Zt}]!`)},en;pe?en=function(Vn,bn){return Se(bn,this.name),bn>>>0}:en=function(Vn,bn){return Se(bn,this.name),bn},ma(x,{name:D,fromWireType:Yt,toWireType:en,argPackAdvance:8,readValueFromPointer:B4(D,yt,lt!==0),destructorFunction:null})}function UV(x,D,j){var lt=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Zt=lt[D];function yt(Yt){Yt=Yt>>2;var Dt=P,pe=Dt[Yt],Se=Dt[Yt+1];return new Zt(Dt.buffer,Se,pe)}j=Bi(j),ma(x,{name:j,fromWireType:yt,argPackAdvance:8,readValueFromPointer:yt},{ignoreDuplicateRegistrations:!0})}var _W=(x,D,j,lt)=>{if(V(typeof x=="string"),!(lt>0))return 0;for(var Zt=j,yt=j+lt-1,Yt=0;Yt=55296&&Dt<=57343){var pe=x.charCodeAt(++Yt);Dt=65536+((Dt&1023)<<10)|pe&1023}if(Dt<=127){if(j>=yt)break;D[j++]=Dt}else if(Dt<=2047){if(j+1>=yt)break;D[j++]=192|Dt>>6,D[j++]=128|Dt&63}else if(Dt<=65535){if(j+2>=yt)break;D[j++]=224|Dt>>12,D[j++]=128|Dt>>6&63,D[j++]=128|Dt&63}else{if(j+3>=yt)break;Dt>1114111&&Go("Invalid Unicode code point "+na(Dt)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),D[j++]=240|Dt>>18,D[j++]=128|Dt>>12&63,D[j++]=128|Dt>>6&63,D[j++]=128|Dt&63}}return D[j]=0,j-Zt},DW=(x,D,j)=>(V(typeof j=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),_W(x,I,D,j)),Ta=x=>{for(var D=0,j=0;j=55296&<<=57343?(D+=4,++j):D+=3}return D},_u=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,GV=(x,D,j)=>{for(var lt=D+j,Zt=D;x[Zt]&&!(Zt>=lt);)++Zt;if(Zt-D>16&&x.buffer&&_u)return _u.decode(x.subarray(D,Zt));for(var yt="";D>10,56320|Se&1023)}}return yt},OW=(x,D)=>(V(typeof x=="number"),x?GV(I,x,D):"");function gN(x,D){D=Bi(D);var j=D==="std::string";ma(x,{name:D,fromWireType:function(lt){var Zt=P[lt>>2],yt=lt+4,Yt;if(j)for(var Dt=yt,pe=0;pe<=Zt;++pe){var Se=yt+pe;if(pe==Zt||I[Se]==0){var en=Se-Dt,Vn=OW(Dt,en);Yt===void 0?Yt=Vn:(Yt+="\0",Yt+=Vn),Dt=Se+1}}else{for(var bn=new Array(Zt),pe=0;pe>2]=yt,j&&Yt)DW(Zt,pe,yt+1);else if(Yt)for(var Se=0;Se255&&(us(pe),$n("String has UTF-16 code units that do not fit in 8 bits")),I[pe+Se]=en}else for(var Se=0;Se{V(x%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var j=x,lt=j>>1,Zt=lt+D/2;!(lt>=Zt)&&X[lt];)++lt;if(j=lt<<1,j-x>32&&mO)return mO.decode(I.subarray(x,j));for(var yt="",Yt=0;!(Yt>=D/2);++Yt){var Dt=B[x+Yt*2>>1];if(Dt==0)break;yt+=String.fromCharCode(Dt)}return yt},k4=(x,D,j)=>{if(V(D%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),V(typeof j=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),j===void 0&&(j=2147483647),j<2)return 0;j-=2;for(var lt=D,Zt=j>1]=Yt,D+=2}return B[D>>1]=0,D-lt},hO=x=>x.length*2,Gg=(x,D)=>{V(x%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var j=0,lt="";!(j>=D/4);){var Zt=_[x+j*4>>2];if(Zt==0)break;if(++j,Zt>=65536){var yt=Zt-65536;lt+=String.fromCharCode(55296|yt>>10,56320|yt&1023)}else lt+=String.fromCharCode(Zt)}return lt},HW=(x,D,j)=>{if(V(D%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),V(typeof j=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),j===void 0&&(j=2147483647),j<4)return 0;for(var lt=D,Zt=lt+j-4,yt=0;yt=55296&&Yt<=57343){var Dt=x.charCodeAt(++yt);Yt=65536+((Yt&1023)<<10)|Dt&1023}if(_[D>>2]=Yt,D+=4,D+4>Zt)break}return _[D>>2]=0,D-lt},Y4=x=>{for(var D=0,j=0;j=55296&<<=57343&&++j,D+=4}return D},pO=function(x,D,j){j=Bi(j);var lt,Zt,yt,Yt,Dt;D===2?(lt=Q4,Zt=k4,Yt=hO,yt=()=>X,Dt=1):D===4&&(lt=Gg,Zt=HW,Yt=Y4,yt=()=>P,Dt=2),ma(x,{name:j,fromWireType:function(pe){for(var Se=P[pe>>2],en=yt(),Vn,bn=pe+4,Rn=0;Rn<=Se;++Rn){var Xn=pe+4+Rn*D;if(Rn==Se||en[Xn>>Dt]==0){var vi=Xn-bn,Ea=lt(bn,vi);Vn===void 0?Vn=Ea:(Vn+="\0",Vn+=Ea),bn=Xn+D}}return us(pe),Vn},toWireType:function(pe,Se){typeof Se!="string"&&$n(`Cannot pass non-string to C++ string type ${j}`);var en=Yt(Se),Vn=Ms(4+en+D);return P[Vn>>2]=en>>Dt,Zt(Se,Vn+4,en+D),pe!==null&&pe.push(us,Vn),Vn},argPackAdvance:8,readValueFromPointer:oR,destructorFunction:function(pe){us(pe)}})};function uO(x,D){D=Bi(D),ma(x,{isVoid:!0,name:D,argPackAdvance:0,fromWireType:function(){},toWireType:function(j,lt){}})}var EN=!0,CN=()=>EN;function ZO(x,D){var j=zi[x];return j===void 0&&$n(D+" has unknown type "+Kt(x)),j}function x4(x,D,j){x=dh.toValue(x),D=ZO(D,"emval::as");var lt=[],Zt=dh.toHandle(lt);return P[j>>2]=Zt,D.toWireType(lt,x)}function IN(x,D){return x=dh.toValue(x),D=dh.toValue(D),dh.toHandle(x[D])}var NN={};function X4(x){var D=NN[x];return D===void 0?Bi(x):D}function VO(x){return dh.toHandle(X4(x))}function fc(x){var D=dh.toValue(x);Rl(D),Ug(x)}function Ag(x,D){return V(x==x>>>0||x==(x|0)),V(D===(D|0)),D+2097152>>>0<4194305-!!x?(x>>>0)+D*4294967296:NaN}function jU(x,D,j){var lt=Ag(x,D),Zt=new Date(lt*1e3);_[j>>2]=Zt.getUTCSeconds(),_[j+4>>2]=Zt.getUTCMinutes(),_[j+8>>2]=Zt.getUTCHours(),_[j+12>>2]=Zt.getUTCDate(),_[j+16>>2]=Zt.getUTCMonth(),_[j+20>>2]=Zt.getUTCFullYear()-1900,_[j+24>>2]=Zt.getUTCDay();var yt=Date.UTC(Zt.getUTCFullYear(),0,1,0,0,0,0),Yt=(Zt.getTime()-yt)/(1e3*60*60*24)|0;_[j+28>>2]=Yt}var wW=x=>x%4===0&&(x%100!==0||x%400===0),bO=[0,31,60,91,121,152,182,213,244,274,305,335],J4=[0,31,59,90,120,151,181,212,243,273,304,334],L4=x=>{var D=wW(x.getFullYear()),j=D?bO:J4,lt=j[x.getMonth()]+x.getDate()-1;return lt},M4=function(x){var D=(()=>{var j=new Date(_[x+20>>2]+1900,_[x+16>>2],_[x+12>>2],_[x+8>>2],_[x+4>>2],_[x>>2],0),lt=_[x+32>>2],Zt=j.getTimezoneOffset(),yt=new Date(j.getFullYear(),0,1),Yt=new Date(j.getFullYear(),6,1).getTimezoneOffset(),Dt=yt.getTimezoneOffset(),pe=Math.min(Dt,Yt);if(lt<0)_[x+32>>2]=+(Yt!=Dt&&pe==Zt);else if(lt>0!=(pe==Zt)){var Se=Math.max(Dt,Yt),en=lt>0?pe:Se;j.setTime(j.getTime()+(en-Zt)*6e4)}_[x+24>>2]=j.getDay();var Vn=L4(j)|0;return _[x+28>>2]=Vn,_[x>>2]=j.getSeconds(),_[x+4>>2]=j.getMinutes(),_[x+8>>2]=j.getHours(),_[x+12>>2]=j.getDate(),_[x+16>>2]=j.getMonth(),_[x+20>>2]=j.getYear(),j.getTime()/1e3})();return JN((qn=D,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)),D>>>0},RO=x=>{var D=Ta(x)+1,j=Ms(D);return j&&DW(x,j,D),j},_4=(x,D,j)=>{var lt=new Date().getFullYear(),Zt=new Date(lt,0,1),yt=new Date(lt,6,1),Yt=Zt.getTimezoneOffset(),Dt=yt.getTimezoneOffset(),pe=Math.max(Yt,Dt);P[x>>2]=pe*60,_[D>>2]=+(Yt!=Dt);function Se(Xn){var vi=Xn.toTimeString().match(/\(([A-Za-z ]+)\)$/);return vi?vi[1]:"GMT"}var en=Se(Zt),Vn=Se(yt),bn=RO(en),Rn=RO(Vn);Dt>2]=bn,P[j+4>>2]=Rn):(P[j>>2]=Rn,P[j+4>>2]=bn)},PW=()=>{We("native code called abort()")},Tg=[],D4=(x,D)=>{V(Array.isArray(Tg)),V(D%16==0),Tg.length=0;var j;for(D>>=2;j=I[x++];){var lt=String.fromCharCode(j),Zt=["d","f","i"];V(Zt.includes(lt),`Invalid character ${j}("${lt}") in readEmAsmArgs! Use only [${Zt}], and do not specify "v" for void return argument.`),D+=j!=105&D,Tg.push(j==105?_[D]:z[D++>>1]),++D}return Tg},yN=(x,D,j)=>{var lt=D4(D,j);return da.hasOwnProperty(x)||We(`No EM_ASM constant found at address ${x}`),da[x].apply(null,lt)},WO=(x,D,j)=>yN(x,D,j);function AV(){return Date.now()}var qU;qU=()=>performance.now();var O4=(x,D,j)=>I.copyWithin(x,D,D+j),H4=()=>2147483648,w4=x=>{var D=Y.buffer,j=x-D.byteLength+65535>>>16;try{return Y.grow(j),H(),1}catch(lt){g(`growMemory: Attempted to grow heap from ${D.byteLength} bytes to ${x} bytes, but got error: ${lt}`)}},vW=x=>{var D=I.length;x>>>=0,V(x>D);var j=H4();if(x>j)return g(`Cannot enlarge memory, asked to go up to ${x} bytes, but the limit is ${j} bytes!`),!1;for(var lt=(pe,Se)=>pe+(Se-pe%Se)%Se,Zt=1;Zt<=4;Zt*=2){var yt=D*(1+.2/Zt);yt=Math.min(yt,x+100663296);var Yt=Math.min(j,lt(Math.max(x,yt),65536)),Dt=w4(Yt);if(Dt)return!0}return g(`Failed to grow the heap from ${D} bytes to ${Yt} bytes, not enough memory!`),!1},mm=x=>{var D=(globalThis.eval["\u2003"]=globalThis.eval)(OW(x));if(D==null)return 0;D+="";var j=mm,lt=Ta(D);return(!j.bufferSize||j.bufferSizel||"./this.program",$U=()=>{if(!$U.strings){var x=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",D={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:x,_:P4()};for(var j in Sg)Sg[j]===void 0?delete D[j]:D[j]=Sg[j];var lt=[];for(var j in D)lt.push(`${j}=${D[j]}`);$U.strings=lt}return $U.strings},v4=(x,D)=>{for(var j=0;j>0]=x.charCodeAt(j);E[D>>0]=0},Sa={isAbs:x=>x.charAt(0)==="/",splitPath:x=>{var D=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return D.exec(x).slice(1)},normalizeArray:(x,D)=>{for(var j=0,lt=x.length-1;lt>=0;lt--){var Zt=x[lt];Zt==="."?x.splice(lt,1):Zt===".."?(x.splice(lt,1),j++):j&&(x.splice(lt,1),j--)}if(D)for(;j;j--)x.unshift("..");return x},normalize:x=>{var D=Sa.isAbs(x),j=x.substr(-1)==="/";return x=Sa.normalizeArray(x.split("/").filter(lt=>!!lt),!D).join("/"),!x&&!D&&(x="."),x&&j&&(x+="/"),(D?"/":"")+x},dirname:x=>{var D=Sa.splitPath(x),j=D[0],lt=D[1];return!j&&!lt?".":(lt&&(lt=lt.substr(0,lt.length-1)),j+lt)},basename:x=>{if(x==="/")return"/";x=Sa.normalize(x),x=x.replace(/\/$/,"");var D=x.lastIndexOf("/");return D===-1?x:x.substr(D+1)},join:function(){var x=Array.prototype.slice.call(arguments);return Sa.normalize(x.join("/"))},join2:(x,D)=>Sa.normalize(x+"/"+D)},K4=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return x=>crypto.getRandomValues(x);We("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")},Du=x=>(Du=K4())(x),vt={resolve:function(){for(var x="",D=!1,j=arguments.length-1;j>=-1&&!D;j--){var lt=j>=0?arguments[j]:ht.cwd();if(typeof lt!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!lt)return"";x=lt+"/"+x,D=Sa.isAbs(lt)}return x=Sa.normalizeArray(x.split("/").filter(Zt=>!!Zt),!D).join("/"),(D?"/":"")+x||"."},relative:(x,D)=>{x=vt.resolve(x).substr(1),D=vt.resolve(D).substr(1);function j(Se){for(var en=0;en=0&&Se[Vn]==="";Vn--);return en>Vn?[]:Se.slice(en,Vn-en+1)}for(var lt=j(x.split("/")),Zt=j(D.split("/")),yt=Math.min(lt.length,Zt.length),Yt=yt,Dt=0;Dt0?j:Ta(x)+1,Zt=new Array(lt),yt=_W(x,Zt,0,Zt.length);return D&&(Zt.length=yt),Zt}var Jn=()=>{if(!Te.length){var x=null;if(typeof window<"u"&&typeof window.prompt=="function"?(x=window.prompt("Input: "),x!==null&&(x+=` +`),bn+=`} +`,vi.push(bn),Pl(Function,vi).apply(null,Ea)}function Yr(x,D,j,lt,ut,yt){Z(D>0);var Yt=Hi(D,j);ut=dm(lt,ut),pr([],[x],function(Dt){Dt=Dt[0];var pe=`constructor ${Dt.name}`;if(Dt.registeredClass.constructor_body===void 0&&(Dt.registeredClass.constructor_body=[]),Dt.registeredClass.constructor_body[D-1]!==void 0)throw new ca(`Cannot register multiple constructors with identical number of parameters (${D-1}) for class '${Dt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Dt.registeredClass.constructor_body[D-1]=()=>{De(`Cannot construct ${Dt.name} due to unbound types`,Yt)},pr([],Yt,function(Te){return Te.splice(1,0,null),Dt.registeredClass.constructor_body[D-1]=Bl(pe,Te,null,ut,yt),[]}),[]})}function ps(x,D,j,lt,ut,yt,Yt,Dt,pe){var Te=Hi(j,lt);D=Bi(D),yt=dm(ut,yt),pr([],[x],function(en){en=en[0];var Zn=`${en.name}.${D}`;D.startsWith("@@")&&(D=Symbol[D.substring(2)]),Dt&&en.registeredClass.pureVirtualFunctions.push(D);function Rn(){De(`Cannot call ${Zn} due to unbound types`,Te)}var bn=en.registeredClass.instancePrototype,Xn=bn[D];return Xn===void 0||Xn.overloadTable===void 0&&Xn.className!==en.name&&Xn.argCount===j-2?(Rn.argCount=j-2,Rn.className=en.name,bn[D]=Rn):(wU(bn,D,Zn),bn[D].overloadTable[j-2]=Rn),pr([],Te,function(vi){var Ea=Bl(Zn,vi,en,yt,Yt,pe);return bn[D].overloadTable===void 0?(Ea.argCount=j-2,bn[D]=Ea):bn[D].overloadTable[j-2]=Ea,[]}),[]})}function Ql(x,D,j){return x instanceof Object||$n(`${j} with invalid "this": ${x}`),x instanceof D.registeredClass.constructor||$n(`${j} incompatible with "this" of type ${x.constructor.name}`),x.$$.ptr||$n(`cannot call emscripten binding method ${j} on deleted object`),FZ(x.$$.ptr,x.$$.ptrType.registeredClass,D.registeredClass)}function Wp(x,D,j,lt,ut,yt,Yt,Dt,pe,Te){D=Bi(D),ut=dm(lt,ut),pr([],[x],function(en){en=en[0];var Zn=`${en.name}.${D}`,Rn={get(){De(`Cannot access ${Zn} due to unbound types`,[j,Yt])},enumerable:!0,configurable:!0};return pe?Rn.set=()=>{De(`Cannot access ${Zn} due to unbound types`,[j,Yt])}:Rn.set=bn=>{$n(Zn+" is a read-only property")},Object.defineProperty(en.registeredClass.instancePrototype,D,Rn),pr([],pe?[j,Yt]:[j],function(bn){var Xn=bn[0],vi={get(){var Oo=Ql(this,en,Zn+" getter");return Xn.fromWireType(ut(yt,Oo))},enumerable:!0};if(pe){pe=dm(Dt,pe);var Ea=bn[1];vi.set=function(Oo){var Le=Ql(this,en,Zn+" setter"),kn=[];pe(Te,Le,Ea.toWireType(kn,Oo)),bl(kn)}}return Object.defineProperty(en.registeredClass.instancePrototype,D,vi),[]}),[]})}function zU(){Object.assign(Fg.prototype,{get(x){return Z(this.allocated[x]!==void 0,`invalid handle: ${x}`),this.allocated[x]},has(x){return this.allocated[x]!==void 0},allocate(x){var D=this.freelist.pop()||this.allocated.length;return this.allocated[D]=x,D},free(x){Z(this.allocated[x]!==void 0),this.allocated[x]=void 0,this.freelist.push(x)}})}function Fg(){this.allocated=[void 0],this.freelist=[]}var Ls=new Fg;function Ug(x){x>=Ls.reserved&&--Ls.get(x).refcount===0&&Ls.free(x)}function lO(){for(var x=0,D=Ls.reserved;D(x||$n("Cannot use deleted val. handle = "+x),Ls.get(x).value),toHandle:x=>{switch(x){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ls.allocate({refcount:1,value:x})}}};function dO(x,D){D=Bi(D),ma(x,{name:D,fromWireType:function(j){var lt=dh.toValue(j);return Ug(j),lt},toWireType:function(j,lt){return dh.toHandle(lt)},argPackAdvance:8,readValueFromPointer:ob,destructorFunction:null})}function ab(x){if(x===null)return"null";var D=typeof x;return D==="object"||D==="array"||D==="function"?x.toString():""+x}function Wc(x,D){switch(D){case 2:return function(j){return this.fromWireType(w[j>>2])};case 3:return function(j){return this.fromWireType(z[j>>3])};default:throw new TypeError("Unknown float type: "+x)}}function y4(x,D,j){var lt=Wa(j);D=Bi(D),ma(x,{name:D,fromWireType:function(ut){return ut},toWireType:function(ut,yt){if(typeof yt!="number"&&typeof yt!="boolean")throw new TypeError(`Cannot convert ${ab(yt)} to ${this.name}`);return yt},argPackAdvance:8,readValueFromPointer:Wc(D,lt),destructorFunction:null})}function cm(x,D,j,lt,ut,yt,Yt){var Dt=Hi(D,j);x=Bi(x),ut=dm(lt,ut),PU(x,function(){De(`Cannot call ${x} due to unbound types`,Dt)},D-1),pr([],Dt,function(pe){var Te=[pe[0],null].concat(pe.slice(1));return bg(x,Bl(x,Te,null,ut,yt,Yt),D-1),[]})}function B4(x,D,j){switch(D){case 0:return j?function(ut){return E[ut]}:function(ut){return I[ut]};case 1:return j?function(ut){return B[ut>>1]}:function(ut){return X[ut>>1]};case 2:return j?function(ut){return _[ut>>2]}:function(ut){return P[ut>>2]};default:throw new TypeError("Unknown integer type: "+x)}}function cO(x,D,j,lt,ut){D=Bi(D),ut===-1&&(ut=4294967295);var yt=Wa(j),Yt=Zn=>Zn;if(lt===0){var Dt=32-8*j;Yt=Zn=>Zn<
>>Dt}var pe=D.includes("unsigned"),Te=(Zn,Rn)=>{if(typeof Zn!="number"&&typeof Zn!="boolean")throw new TypeError(`Cannot convert "${ab(Zn)}" to ${Rn}`);if(Znut)throw new TypeError(`Passing a number "${ab(Zn)}" from JS side to C/C++ side to an argument of type "${D}", which is outside the valid range [${lt}, ${ut}]!`)},en;pe?en=function(Zn,Rn){return Te(Rn,this.name),Rn>>>0}:en=function(Zn,Rn){return Te(Rn,this.name),Rn},ma(x,{name:D,fromWireType:Yt,toWireType:en,argPackAdvance:8,readValueFromPointer:B4(D,yt,lt!==0),destructorFunction:null})}function UZ(x,D,j){var lt=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],ut=lt[D];function yt(Yt){Yt=Yt>>2;var Dt=P,pe=Dt[Yt],Te=Dt[Yt+1];return new ut(Dt.buffer,Te,pe)}j=Bi(j),ma(x,{name:j,fromWireType:yt,argPackAdvance:8,readValueFromPointer:yt},{ignoreDuplicateRegistrations:!0})}var _W=(x,D,j,lt)=>{if(Z(typeof x=="string"),!(lt>0))return 0;for(var ut=j,yt=j+lt-1,Yt=0;Yt=55296&&Dt<=57343){var pe=x.charCodeAt(++Yt);Dt=65536+((Dt&1023)<<10)|pe&1023}if(Dt<=127){if(j>=yt)break;D[j++]=Dt}else if(Dt<=2047){if(j+1>=yt)break;D[j++]=192|Dt>>6,D[j++]=128|Dt&63}else if(Dt<=65535){if(j+2>=yt)break;D[j++]=224|Dt>>12,D[j++]=128|Dt>>6&63,D[j++]=128|Dt&63}else{if(j+3>=yt)break;Dt>1114111&&Go("Invalid Unicode code point "+na(Dt)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),D[j++]=240|Dt>>18,D[j++]=128|Dt>>12&63,D[j++]=128|Dt>>6&63,D[j++]=128|Dt&63}}return D[j]=0,j-ut},DW=(x,D,j)=>(Z(typeof j=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),_W(x,I,D,j)),Sa=x=>{for(var D=0,j=0;j=55296&<<=57343?(D+=4,++j):D+=3}return D},_V=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,GZ=(x,D,j)=>{for(var lt=D+j,ut=D;x[ut]&&!(ut>=lt);)++ut;if(ut-D>16&&x.buffer&&_V)return _V.decode(x.subarray(D,ut));for(var yt="";D>10,56320|Te&1023)}}return yt},OW=(x,D)=>(Z(typeof x=="number"),x?GZ(I,x,D):"");function gN(x,D){D=Bi(D);var j=D==="std::string";ma(x,{name:D,fromWireType:function(lt){var ut=P[lt>>2],yt=lt+4,Yt;if(j)for(var Dt=yt,pe=0;pe<=ut;++pe){var Te=yt+pe;if(pe==ut||I[Te]==0){var en=Te-Dt,Zn=OW(Dt,en);Yt===void 0?Yt=Zn:(Yt+="\0",Yt+=Zn),Dt=Te+1}}else{for(var Rn=new Array(ut),pe=0;pe>2]=yt,j&&Yt)DW(ut,pe,yt+1);else if(Yt)for(var Te=0;Te255&&(Vs(pe),$n("String has UTF-16 code units that do not fit in 8 bits")),I[pe+Te]=en}else for(var Te=0;Te{Z(x%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var j=x,lt=j>>1,ut=lt+D/2;!(lt>=ut)&&X[lt];)++lt;if(j=lt<<1,j-x>32&&mO)return mO.decode(I.subarray(x,j));for(var yt="",Yt=0;!(Yt>=D/2);++Yt){var Dt=B[x+Yt*2>>1];if(Dt==0)break;yt+=String.fromCharCode(Dt)}return yt},k4=(x,D,j)=>{if(Z(D%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),Z(typeof j=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),j===void 0&&(j=2147483647),j<2)return 0;j-=2;for(var lt=D,ut=j>1]=Yt,D+=2}return B[D>>1]=0,D-lt},hO=x=>x.length*2,Gg=(x,D)=>{Z(x%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var j=0,lt="";!(j>=D/4);){var ut=_[x+j*4>>2];if(ut==0)break;if(++j,ut>=65536){var yt=ut-65536;lt+=String.fromCharCode(55296|yt>>10,56320|yt&1023)}else lt+=String.fromCharCode(ut)}return lt},HW=(x,D,j)=>{if(Z(D%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),Z(typeof j=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),j===void 0&&(j=2147483647),j<4)return 0;for(var lt=D,ut=lt+j-4,yt=0;yt=55296&&Yt<=57343){var Dt=x.charCodeAt(++yt);Yt=65536+((Yt&1023)<<10)|Dt&1023}if(_[D>>2]=Yt,D+=4,D+4>ut)break}return _[D>>2]=0,D-lt},Y4=x=>{for(var D=0,j=0;j=55296&<<=57343&&++j,D+=4}return D},pO=function(x,D,j){j=Bi(j);var lt,ut,yt,Yt,Dt;D===2?(lt=Q4,ut=k4,Yt=hO,yt=()=>X,Dt=1):D===4&&(lt=Gg,ut=HW,Yt=Y4,yt=()=>P,Dt=2),ma(x,{name:j,fromWireType:function(pe){for(var Te=P[pe>>2],en=yt(),Zn,Rn=pe+4,bn=0;bn<=Te;++bn){var Xn=pe+4+bn*D;if(bn==Te||en[Xn>>Dt]==0){var vi=Xn-Rn,Ea=lt(Rn,vi);Zn===void 0?Zn=Ea:(Zn+="\0",Zn+=Ea),Rn=Xn+D}}return Vs(pe),Zn},toWireType:function(pe,Te){typeof Te!="string"&&$n(`Cannot pass non-string to C++ string type ${j}`);var en=Yt(Te),Zn=Ms(4+en+D);return P[Zn>>2]=en>>Dt,ut(Te,Zn+4,en+D),pe!==null&&pe.push(Vs,Zn),Zn},argPackAdvance:8,readValueFromPointer:ob,destructorFunction:function(pe){Vs(pe)}})};function VO(x,D){D=Bi(D),ma(x,{isVoid:!0,name:D,argPackAdvance:0,fromWireType:function(){},toWireType:function(j,lt){}})}var EN=!0,CN=()=>EN;function uO(x,D){var j=zi[x];return j===void 0&&$n(D+" has unknown type "+Kt(x)),j}function x4(x,D,j){x=dh.toValue(x),D=uO(D,"emval::as");var lt=[],ut=dh.toHandle(lt);return P[j>>2]=ut,D.toWireType(lt,x)}function IN(x,D){return x=dh.toValue(x),D=dh.toValue(D),dh.toHandle(x[D])}var NN={};function X4(x){var D=NN[x];return D===void 0?Bi(x):D}function ZO(x){return dh.toHandle(X4(x))}function fc(x){var D=dh.toValue(x);bl(D),Ug(x)}function Ag(x,D){return Z(x==x>>>0||x==(x|0)),Z(D===(D|0)),D+2097152>>>0<4194305-!!x?(x>>>0)+D*4294967296:NaN}function jU(x,D,j){var lt=Ag(x,D),ut=new Date(lt*1e3);_[j>>2]=ut.getUTCSeconds(),_[j+4>>2]=ut.getUTCMinutes(),_[j+8>>2]=ut.getUTCHours(),_[j+12>>2]=ut.getUTCDate(),_[j+16>>2]=ut.getUTCMonth(),_[j+20>>2]=ut.getUTCFullYear()-1900,_[j+24>>2]=ut.getUTCDay();var yt=Date.UTC(ut.getUTCFullYear(),0,1,0,0,0,0),Yt=(ut.getTime()-yt)/(1e3*60*60*24)|0;_[j+28>>2]=Yt}var wW=x=>x%4===0&&(x%100!==0||x%400===0),RO=[0,31,60,91,121,152,182,213,244,274,305,335],J4=[0,31,59,90,120,151,181,212,243,273,304,334],L4=x=>{var D=wW(x.getFullYear()),j=D?RO:J4,lt=j[x.getMonth()]+x.getDate()-1;return lt},M4=function(x){var D=(()=>{var j=new Date(_[x+20>>2]+1900,_[x+16>>2],_[x+12>>2],_[x+8>>2],_[x+4>>2],_[x>>2],0),lt=_[x+32>>2],ut=j.getTimezoneOffset(),yt=new Date(j.getFullYear(),0,1),Yt=new Date(j.getFullYear(),6,1).getTimezoneOffset(),Dt=yt.getTimezoneOffset(),pe=Math.min(Dt,Yt);if(lt<0)_[x+32>>2]=+(Yt!=Dt&&pe==ut);else if(lt>0!=(pe==ut)){var Te=Math.max(Dt,Yt),en=lt>0?pe:Te;j.setTime(j.getTime()+(en-ut)*6e4)}_[x+24>>2]=j.getDay();var Zn=L4(j)|0;return _[x+28>>2]=Zn,_[x>>2]=j.getSeconds(),_[x+4>>2]=j.getMinutes(),_[x+8>>2]=j.getHours(),_[x+12>>2]=j.getDate(),_[x+16>>2]=j.getMonth(),_[x+20>>2]=j.getYear(),j.getTime()/1e3})();return JN((qn=D,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)),D>>>0},bO=x=>{var D=Sa(x)+1,j=Ms(D);return j&&DW(x,j,D),j},_4=(x,D,j)=>{var lt=new Date().getFullYear(),ut=new Date(lt,0,1),yt=new Date(lt,6,1),Yt=ut.getTimezoneOffset(),Dt=yt.getTimezoneOffset(),pe=Math.max(Yt,Dt);P[x>>2]=pe*60,_[D>>2]=+(Yt!=Dt);function Te(Xn){var vi=Xn.toTimeString().match(/\(([A-Za-z ]+)\)$/);return vi?vi[1]:"GMT"}var en=Te(ut),Zn=Te(yt),Rn=bO(en),bn=bO(Zn);Dt>2]=Rn,P[j+4>>2]=bn):(P[j>>2]=bn,P[j+4>>2]=Rn)},PW=()=>{We("native code called abort()")},Sg=[],D4=(x,D)=>{Z(Array.isArray(Sg)),Z(D%16==0),Sg.length=0;var j;for(D>>=2;j=I[x++];){var lt=String.fromCharCode(j),ut=["d","f","i"];Z(ut.includes(lt),`Invalid character ${j}("${lt}") in readEmAsmArgs! Use only [${ut}], and do not specify "v" for void return argument.`),D+=j!=105&D,Sg.push(j==105?_[D]:z[D++>>1]),++D}return Sg},yN=(x,D,j)=>{var lt=D4(D,j);return da.hasOwnProperty(x)||We(`No EM_ASM constant found at address ${x}`),da[x].apply(null,lt)},WO=(x,D,j)=>yN(x,D,j);function AZ(){return Date.now()}var qU;qU=()=>performance.now();var O4=(x,D,j)=>I.copyWithin(x,D,D+j),H4=()=>2147483648,w4=x=>{var D=Y.buffer,j=x-D.byteLength+65535>>>16;try{return Y.grow(j),H(),1}catch(lt){g(`growMemory: Attempted to grow heap from ${D.byteLength} bytes to ${x} bytes, but got error: ${lt}`)}},vW=x=>{var D=I.length;x>>>=0,Z(x>D);var j=H4();if(x>j)return g(`Cannot enlarge memory, asked to go up to ${x} bytes, but the limit is ${j} bytes!`),!1;for(var lt=(pe,Te)=>pe+(Te-pe%Te)%Te,ut=1;ut<=4;ut*=2){var yt=D*(1+.2/ut);yt=Math.min(yt,x+100663296);var Yt=Math.min(j,lt(Math.max(x,yt),65536)),Dt=w4(Yt);if(Dt)return!0}return g(`Failed to grow the heap from ${D} bytes to ${Yt} bytes, not enough memory!`),!1},mm=x=>{var D=(globalThis.eval["\u2003"]=globalThis.eval)(OW(x));if(D==null)return 0;D+="";var j=mm,lt=Sa(D);return(!j.bufferSize||j.bufferSizel||"./this.program",$U=()=>{if(!$U.strings){var x=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",D={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:x,_:P4()};for(var j in Tg)Tg[j]===void 0?delete D[j]:D[j]=Tg[j];var lt=[];for(var j in D)lt.push(`${j}=${D[j]}`);$U.strings=lt}return $U.strings},v4=(x,D)=>{for(var j=0;j>0]=x.charCodeAt(j);E[D>>0]=0},Ta={isAbs:x=>x.charAt(0)==="/",splitPath:x=>{var D=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return D.exec(x).slice(1)},normalizeArray:(x,D)=>{for(var j=0,lt=x.length-1;lt>=0;lt--){var ut=x[lt];ut==="."?x.splice(lt,1):ut===".."?(x.splice(lt,1),j++):j&&(x.splice(lt,1),j--)}if(D)for(;j;j--)x.unshift("..");return x},normalize:x=>{var D=Ta.isAbs(x),j=x.substr(-1)==="/";return x=Ta.normalizeArray(x.split("/").filter(lt=>!!lt),!D).join("/"),!x&&!D&&(x="."),x&&j&&(x+="/"),(D?"/":"")+x},dirname:x=>{var D=Ta.splitPath(x),j=D[0],lt=D[1];return!j&&!lt?".":(lt&&(lt=lt.substr(0,lt.length-1)),j+lt)},basename:x=>{if(x==="/")return"/";x=Ta.normalize(x),x=x.replace(/\/$/,"");var D=x.lastIndexOf("/");return D===-1?x:x.substr(D+1)},join:function(){var x=Array.prototype.slice.call(arguments);return Ta.normalize(x.join("/"))},join2:(x,D)=>Ta.normalize(x+"/"+D)},K4=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return x=>crypto.getRandomValues(x);We("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")},DV=x=>(DV=K4())(x),vt={resolve:function(){for(var x="",D=!1,j=arguments.length-1;j>=-1&&!D;j--){var lt=j>=0?arguments[j]:ht.cwd();if(typeof lt!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!lt)return"";x=lt+"/"+x,D=Ta.isAbs(lt)}return x=Ta.normalizeArray(x.split("/").filter(ut=>!!ut),!D).join("/"),(D?"/":"")+x||"."},relative:(x,D)=>{x=vt.resolve(x).substr(1),D=vt.resolve(D).substr(1);function j(Te){for(var en=0;en=0&&Te[Zn]==="";Zn--);return en>Zn?[]:Te.slice(en,Zn-en+1)}for(var lt=j(x.split("/")),ut=j(D.split("/")),yt=Math.min(lt.length,ut.length),Yt=yt,Dt=0;Dt0?j:Sa(x)+1,ut=new Array(lt),yt=_W(x,ut,0,ut.length);return D&&(ut.length=yt),ut}var Jn=()=>{if(!Se.length){var x=null;if(typeof window<"u"&&typeof window.prompt=="function"?(x=window.prompt("Input: "),x!==null&&(x+=` `)):typeof readline=="function"&&(x=readline(),x!==null&&(x+=` -`)),!x)return null;Te=me(x,!0)}return Te.shift()},Ai={ttys:[],init:function(){},shutdown:function(){},register:function(x,D){Ai.ttys[x]={input:[],output:[],ops:D},ht.registerDevice(x,Ai.stream_ops)},stream_ops:{open:function(x){var D=Ai.ttys[x.node.rdev];if(!D)throw new ht.ErrnoError(43);x.tty=D,x.seekable=!1},close:function(x){x.tty.ops.fsync(x.tty)},fsync:function(x){x.tty.ops.fsync(x.tty)},read:function(x,D,j,lt,Zt){if(!x.tty||!x.tty.ops.get_char)throw new ht.ErrnoError(60);for(var yt=0,Yt=0;Yt0&&(T(GV(x.output,0)),x.output=[])},ioctl_tcgets:function(x){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(x,D,j){return 0},ioctl_tiocgwinsz:function(x){return[24,80]}},default_tty1_ops:{put_char:function(x,D){D===null||D===10?(g(GV(x.output,0)),x.output=[]):D!=0&&x.output.push(D)},fsync:function(x){x.output&&x.output.length>0&&(g(GV(x.output,0)),x.output=[])}}},ia=x=>{We("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},ni={ops_table:null,mount(x){return ni.createNode(null,"/",16895,0)},createNode(x,D,j,lt){if(ht.isBlkdev(j)||ht.isFIFO(j))throw new ht.ErrnoError(63);ni.ops_table||(ni.ops_table={dir:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr,lookup:ni.node_ops.lookup,mknod:ni.node_ops.mknod,rename:ni.node_ops.rename,unlink:ni.node_ops.unlink,rmdir:ni.node_ops.rmdir,readdir:ni.node_ops.readdir,symlink:ni.node_ops.symlink},stream:{llseek:ni.stream_ops.llseek}},file:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr},stream:{llseek:ni.stream_ops.llseek,read:ni.stream_ops.read,write:ni.stream_ops.write,allocate:ni.stream_ops.allocate,mmap:ni.stream_ops.mmap,msync:ni.stream_ops.msync}},link:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr,readlink:ni.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr},stream:ht.chrdev_stream_ops}});var Zt=ht.createNode(x,D,j,lt);return ht.isDir(Zt.mode)?(Zt.node_ops=ni.ops_table.dir.node,Zt.stream_ops=ni.ops_table.dir.stream,Zt.contents={}):ht.isFile(Zt.mode)?(Zt.node_ops=ni.ops_table.file.node,Zt.stream_ops=ni.ops_table.file.stream,Zt.usedBytes=0,Zt.contents=null):ht.isLink(Zt.mode)?(Zt.node_ops=ni.ops_table.link.node,Zt.stream_ops=ni.ops_table.link.stream):ht.isChrdev(Zt.mode)&&(Zt.node_ops=ni.ops_table.chrdev.node,Zt.stream_ops=ni.ops_table.chrdev.stream),Zt.timestamp=Date.now(),x&&(x.contents[D]=Zt,x.timestamp=Zt.timestamp),Zt},getFileDataAsTypedArray(x){return x.contents?x.contents.subarray?x.contents.subarray(0,x.usedBytes):new Uint8Array(x.contents):new Uint8Array(0)},expandFileStorage(x,D){var j=x.contents?x.contents.length:0;if(!(j>=D)){var lt=1024*1024;D=Math.max(D,j*(j>>0),j!=0&&(D=Math.max(D,256));var Zt=x.contents;x.contents=new Uint8Array(D),x.usedBytes>0&&x.contents.set(Zt.subarray(0,x.usedBytes),0)}},resizeFileStorage(x,D){if(x.usedBytes!=D)if(D==0)x.contents=null,x.usedBytes=0;else{var j=x.contents;x.contents=new Uint8Array(D),j&&x.contents.set(j.subarray(0,Math.min(D,x.usedBytes))),x.usedBytes=D}},node_ops:{getattr(x){var D={};return D.dev=ht.isChrdev(x.mode)?x.id:1,D.ino=x.id,D.mode=x.mode,D.nlink=1,D.uid=0,D.gid=0,D.rdev=x.rdev,ht.isDir(x.mode)?D.size=4096:ht.isFile(x.mode)?D.size=x.usedBytes:ht.isLink(x.mode)?D.size=x.link.length:D.size=0,D.atime=new Date(x.timestamp),D.mtime=new Date(x.timestamp),D.ctime=new Date(x.timestamp),D.blksize=4096,D.blocks=Math.ceil(D.size/D.blksize),D},setattr(x,D){D.mode!==void 0&&(x.mode=D.mode),D.timestamp!==void 0&&(x.timestamp=D.timestamp),D.size!==void 0&&ni.resizeFileStorage(x,D.size)},lookup(x,D){throw ht.genericErrors[44]},mknod(x,D,j,lt){return ni.createNode(x,D,j,lt)},rename(x,D,j){if(ht.isDir(x.mode)){var lt;try{lt=ht.lookupNode(D,j)}catch{}if(lt)for(var Zt in lt.contents)throw new ht.ErrnoError(55)}delete x.parent.contents[x.name],x.parent.timestamp=Date.now(),x.name=j,D.contents[j]=x,D.timestamp=x.parent.timestamp,x.parent=D},unlink(x,D){delete x.contents[D],x.timestamp=Date.now()},rmdir(x,D){var j=ht.lookupNode(x,D);for(var lt in j.contents)throw new ht.ErrnoError(55);delete x.contents[D],x.timestamp=Date.now()},readdir(x){var D=[".",".."];for(var j in x.contents)x.contents.hasOwnProperty(j)&&D.push(j);return D},symlink(x,D,j){var lt=ni.createNode(x,D,41471,0);return lt.link=j,lt},readlink(x){if(!ht.isLink(x.mode))throw new ht.ErrnoError(28);return x.link}},stream_ops:{read(x,D,j,lt,Zt){var yt=x.node.contents;if(Zt>=x.node.usedBytes)return 0;var Yt=Math.min(x.node.usedBytes-Zt,lt);if(V(Yt>=0),Yt>8&&yt.subarray)D.set(yt.subarray(Zt,Zt+Yt),j);else for(var Dt=0;Dt0||j+D{var Zt=lt?"":zt(`al ${x}`);U(x,yt=>{V(yt,`Loading data file "${x}" failed (no arrayBuffer).`),D(new Uint8Array(yt)),Zt&&ue(Zt)},yt=>{if(j)j();else throw`Loading data file "${x}" failed.`}),Zt&&ke(Zt)},BN=n.preloadPlugins||[];function z4(x,D,j,lt){typeof Browser<"u"&&Browser.init();var Zt=!1;return BN.forEach(function(yt){Zt||yt.canHandle(D)&&(yt.handle(x,D,j,lt),Zt=!0)}),Zt}function hm(x,D,j,lt,Zt,yt,Yt,Dt,pe,Se){var en=D?vt.resolve(Sa.join2(x,D)):x,Vn=zt(`cp ${en}`);function bn(Rn){function Xn(vi){Se&&Se(),Dt||ht.createDataFile(x,D,vi,lt,Zt,pe),yt&&yt(),ue(Vn)}z4(Rn,en,Xn,()=>{Yt&&Yt(),ue(Vn)})||Xn(Rn)}ke(Vn),typeof j=="string"?Oa(j,Rn=>bn(Rn),Yt):bn(j)}function gg(x){var D={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},j=D[x];if(typeof j>"u")throw new Error(`Unknown file open mode: ${x}`);return j}function QN(x,D){var j=0;return x&&(j|=365),D&&(j|=146),j}var KW={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},zW={};function Eg(x){return Go("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),x}function ga(x){var D=/\b_Z[\w\d_]+/g;return x.replace(D,function(j){var lt=Eg(j);return j===lt?j:lt+" ["+j+"]"})}var ht={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(x,D={})=>{if(x=vt.resolve(x),!x)return{path:"",node:null};var j={follow_mount:!0,recurse_count:0};if(D=Object.assign(j,D),D.recurse_count>8)throw new ht.ErrnoError(32);for(var lt=x.split("/").filter(Vn=>!!Vn),Zt=ht.root,yt="/",Yt=0;Yt40)throw new ht.ErrnoError(32)}}return{path:yt,node:Zt}},getPath:x=>{for(var D;;){if(ht.isRoot(x)){var j=x.mount.mountpoint;return D?j[j.length-1]!=="/"?`${j}/${D}`:j+D:j}D=D?`${x.name}/${D}`:x.name,x=x.parent}},hashName:(x,D)=>{for(var j=0,lt=0;lt>>0)%ht.nameTable.length},hashAddNode:x=>{var D=ht.hashName(x.parent.id,x.name);x.name_next=ht.nameTable[D],ht.nameTable[D]=x},hashRemoveNode:x=>{var D=ht.hashName(x.parent.id,x.name);if(ht.nameTable[D]===x)ht.nameTable[D]=x.name_next;else for(var j=ht.nameTable[D];j;){if(j.name_next===x){j.name_next=x.name_next;break}j=j.name_next}},lookupNode:(x,D)=>{var j=ht.mayLookup(x);if(j)throw new ht.ErrnoError(j,x);for(var lt=ht.hashName(x.id,D),Zt=ht.nameTable[lt];Zt;Zt=Zt.name_next){var yt=Zt.name;if(Zt.parent.id===x.id&&yt===D)return Zt}return ht.lookup(x,D)},createNode:(x,D,j,lt)=>{V(typeof x=="object");var Zt=new ht.FSNode(x,D,j,lt);return ht.hashAddNode(Zt),Zt},destroyNode:x=>{ht.hashRemoveNode(x)},isRoot:x=>x===x.parent,isMountpoint:x=>!!x.mounted,isFile:x=>(x&61440)===32768,isDir:x=>(x&61440)===16384,isLink:x=>(x&61440)===40960,isChrdev:x=>(x&61440)===8192,isBlkdev:x=>(x&61440)===24576,isFIFO:x=>(x&61440)===4096,isSocket:x=>(x&49152)===49152,flagsToPermissionString:x=>{var D=["r","w","rw"][x&3];return x&512&&(D+="w"),D},nodePermissions:(x,D)=>ht.ignorePermissions?0:D.includes("r")&&!(x.mode&292)||D.includes("w")&&!(x.mode&146)||D.includes("x")&&!(x.mode&73)?2:0,mayLookup:x=>{var D=ht.nodePermissions(x,"x");return D||(x.node_ops.lookup?0:2)},mayCreate:(x,D)=>{try{var j=ht.lookupNode(x,D);return 20}catch{}return ht.nodePermissions(x,"wx")},mayDelete:(x,D,j)=>{var lt;try{lt=ht.lookupNode(x,D)}catch(yt){return yt.errno}var Zt=ht.nodePermissions(x,"wx");if(Zt)return Zt;if(j){if(!ht.isDir(lt.mode))return 54;if(ht.isRoot(lt)||ht.getPath(lt)===ht.cwd())return 10}else if(ht.isDir(lt.mode))return 31;return 0},mayOpen:(x,D)=>x?ht.isLink(x.mode)?32:ht.isDir(x.mode)&&(ht.flagsToPermissionString(D)!=="r"||D&512)?31:ht.nodePermissions(x,ht.flagsToPermissionString(D)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var x=0;x<=ht.MAX_OPEN_FDS;x++)if(!ht.streams[x])return x;throw new ht.ErrnoError(33)},getStreamChecked:x=>{var D=ht.getStream(x);if(!D)throw new ht.ErrnoError(8);return D},getStream:x=>ht.streams[x],createStream:(x,D=-1)=>(ht.FSStream||(ht.FSStream=function(){this.shared={}},ht.FSStream.prototype={},Object.defineProperties(ht.FSStream.prototype,{object:{get(){return this.node},set(j){this.node=j}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(j){this.shared.flags=j}},position:{get(){return this.shared.position},set(j){this.shared.position=j}}})),x=Object.assign(new ht.FSStream,x),D==-1&&(D=ht.nextfd()),x.fd=D,ht.streams[D]=x,x),closeStream:x=>{ht.streams[x]=null},chrdev_stream_ops:{open:x=>{var D=ht.getDevice(x.node.rdev);x.stream_ops=D.stream_ops,x.stream_ops.open&&x.stream_ops.open(x)},llseek:()=>{throw new ht.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,D)=>x<<8|D,registerDevice:(x,D)=>{ht.devices[x]={stream_ops:D}},getDevice:x=>ht.devices[x],getMounts:x=>{for(var D=[],j=[x];j.length;){var lt=j.pop();D.push(lt),j.push.apply(j,lt.mounts)}return D},syncfs:(x,D)=>{typeof x=="function"&&(D=x,x=!1),ht.syncFSRequests++,ht.syncFSRequests>1&&g(`warning: ${ht.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var j=ht.getMounts(ht.root.mount),lt=0;function Zt(Yt){return V(ht.syncFSRequests>0),ht.syncFSRequests--,D(Yt)}function yt(Yt){if(Yt)return yt.errored?void 0:(yt.errored=!0,Zt(Yt));++lt>=j.length&&Zt(null)}j.forEach(Yt=>{if(!Yt.type.syncfs)return yt(null);Yt.type.syncfs(Yt,x,yt)})},mount:(x,D,j)=>{if(typeof x=="string")throw x;var lt=j==="/",Zt=!j,yt;if(lt&&ht.root)throw new ht.ErrnoError(10);if(!lt&&!Zt){var Yt=ht.lookupPath(j,{follow_mount:!1});if(j=Yt.path,yt=Yt.node,ht.isMountpoint(yt))throw new ht.ErrnoError(10);if(!ht.isDir(yt.mode))throw new ht.ErrnoError(54)}var Dt={type:x,opts:D,mountpoint:j,mounts:[]},pe=x.mount(Dt);return pe.mount=Dt,Dt.root=pe,lt?ht.root=pe:yt&&(yt.mounted=Dt,yt.mount&&yt.mount.mounts.push(Dt)),pe},unmount:x=>{var D=ht.lookupPath(x,{follow_mount:!1});if(!ht.isMountpoint(D.node))throw new ht.ErrnoError(28);var j=D.node,lt=j.mounted,Zt=ht.getMounts(lt);Object.keys(ht.nameTable).forEach(Yt=>{for(var Dt=ht.nameTable[Yt];Dt;){var pe=Dt.name_next;Zt.includes(Dt.mount)&&ht.destroyNode(Dt),Dt=pe}}),j.mounted=null;var yt=j.mount.mounts.indexOf(lt);V(yt!==-1),j.mount.mounts.splice(yt,1)},lookup:(x,D)=>x.node_ops.lookup(x,D),mknod:(x,D,j)=>{var lt=ht.lookupPath(x,{parent:!0}),Zt=lt.node,yt=Sa.basename(x);if(!yt||yt==="."||yt==="..")throw new ht.ErrnoError(28);var Yt=ht.mayCreate(Zt,yt);if(Yt)throw new ht.ErrnoError(Yt);if(!Zt.node_ops.mknod)throw new ht.ErrnoError(63);return Zt.node_ops.mknod(Zt,yt,D,j)},create:(x,D)=>(D=D!==void 0?D:438,D&=4095,D|=32768,ht.mknod(x,D,0)),mkdir:(x,D)=>(D=D!==void 0?D:511,D&=1023,D|=16384,ht.mknod(x,D,0)),mkdirTree:(x,D)=>{for(var j=x.split("/"),lt="",Zt=0;Zt(typeof j>"u"&&(j=D,D=438),D|=8192,ht.mknod(x,D,j)),symlink:(x,D)=>{if(!vt.resolve(x))throw new ht.ErrnoError(44);var j=ht.lookupPath(D,{parent:!0}),lt=j.node;if(!lt)throw new ht.ErrnoError(44);var Zt=Sa.basename(D),yt=ht.mayCreate(lt,Zt);if(yt)throw new ht.ErrnoError(yt);if(!lt.node_ops.symlink)throw new ht.ErrnoError(63);return lt.node_ops.symlink(lt,Zt,x)},rename:(x,D)=>{var j=Sa.dirname(x),lt=Sa.dirname(D),Zt=Sa.basename(x),yt=Sa.basename(D),Yt,Dt,pe;if(Yt=ht.lookupPath(x,{parent:!0}),Dt=Yt.node,Yt=ht.lookupPath(D,{parent:!0}),pe=Yt.node,!Dt||!pe)throw new ht.ErrnoError(44);if(Dt.mount!==pe.mount)throw new ht.ErrnoError(75);var Se=ht.lookupNode(Dt,Zt),en=vt.relative(x,lt);if(en.charAt(0)!==".")throw new ht.ErrnoError(28);if(en=vt.relative(D,j),en.charAt(0)!==".")throw new ht.ErrnoError(55);var Vn;try{Vn=ht.lookupNode(pe,yt)}catch{}if(Se!==Vn){var bn=ht.isDir(Se.mode),Rn=ht.mayDelete(Dt,Zt,bn);if(Rn)throw new ht.ErrnoError(Rn);if(Rn=Vn?ht.mayDelete(pe,yt,bn):ht.mayCreate(pe,yt),Rn)throw new ht.ErrnoError(Rn);if(!Dt.node_ops.rename)throw new ht.ErrnoError(63);if(ht.isMountpoint(Se)||Vn&&ht.isMountpoint(Vn))throw new ht.ErrnoError(10);if(pe!==Dt&&(Rn=ht.nodePermissions(Dt,"w"),Rn))throw new ht.ErrnoError(Rn);ht.hashRemoveNode(Se);try{Dt.node_ops.rename(Se,pe,yt)}catch(Xn){throw Xn}finally{ht.hashAddNode(Se)}}},rmdir:x=>{var D=ht.lookupPath(x,{parent:!0}),j=D.node,lt=Sa.basename(x),Zt=ht.lookupNode(j,lt),yt=ht.mayDelete(j,lt,!0);if(yt)throw new ht.ErrnoError(yt);if(!j.node_ops.rmdir)throw new ht.ErrnoError(63);if(ht.isMountpoint(Zt))throw new ht.ErrnoError(10);j.node_ops.rmdir(j,lt),ht.destroyNode(Zt)},readdir:x=>{var D=ht.lookupPath(x,{follow:!0}),j=D.node;if(!j.node_ops.readdir)throw new ht.ErrnoError(54);return j.node_ops.readdir(j)},unlink:x=>{var D=ht.lookupPath(x,{parent:!0}),j=D.node;if(!j)throw new ht.ErrnoError(44);var lt=Sa.basename(x),Zt=ht.lookupNode(j,lt),yt=ht.mayDelete(j,lt,!1);if(yt)throw new ht.ErrnoError(yt);if(!j.node_ops.unlink)throw new ht.ErrnoError(63);if(ht.isMountpoint(Zt))throw new ht.ErrnoError(10);j.node_ops.unlink(j,lt),ht.destroyNode(Zt)},readlink:x=>{var D=ht.lookupPath(x),j=D.node;if(!j)throw new ht.ErrnoError(44);if(!j.node_ops.readlink)throw new ht.ErrnoError(28);return vt.resolve(ht.getPath(j.parent),j.node_ops.readlink(j))},stat:(x,D)=>{var j=ht.lookupPath(x,{follow:!D}),lt=j.node;if(!lt)throw new ht.ErrnoError(44);if(!lt.node_ops.getattr)throw new ht.ErrnoError(63);return lt.node_ops.getattr(lt)},lstat:x=>ht.stat(x,!0),chmod:(x,D,j)=>{var lt;if(typeof x=="string"){var Zt=ht.lookupPath(x,{follow:!j});lt=Zt.node}else lt=x;if(!lt.node_ops.setattr)throw new ht.ErrnoError(63);lt.node_ops.setattr(lt,{mode:D&4095|lt.mode&-4096,timestamp:Date.now()})},lchmod:(x,D)=>{ht.chmod(x,D,!0)},fchmod:(x,D)=>{var j=ht.getStreamChecked(x);ht.chmod(j.node,D)},chown:(x,D,j,lt)=>{var Zt;if(typeof x=="string"){var yt=ht.lookupPath(x,{follow:!lt});Zt=yt.node}else Zt=x;if(!Zt.node_ops.setattr)throw new ht.ErrnoError(63);Zt.node_ops.setattr(Zt,{timestamp:Date.now()})},lchown:(x,D,j)=>{ht.chown(x,D,j,!0)},fchown:(x,D,j)=>{var lt=ht.getStreamChecked(x);ht.chown(lt.node,D,j)},truncate:(x,D)=>{if(D<0)throw new ht.ErrnoError(28);var j;if(typeof x=="string"){var lt=ht.lookupPath(x,{follow:!0});j=lt.node}else j=x;if(!j.node_ops.setattr)throw new ht.ErrnoError(63);if(ht.isDir(j.mode))throw new ht.ErrnoError(31);if(!ht.isFile(j.mode))throw new ht.ErrnoError(28);var Zt=ht.nodePermissions(j,"w");if(Zt)throw new ht.ErrnoError(Zt);j.node_ops.setattr(j,{size:D,timestamp:Date.now()})},ftruncate:(x,D)=>{var j=ht.getStreamChecked(x);if(!(j.flags&2097155))throw new ht.ErrnoError(28);ht.truncate(j.node,D)},utime:(x,D,j)=>{var lt=ht.lookupPath(x,{follow:!0}),Zt=lt.node;Zt.node_ops.setattr(Zt,{timestamp:Math.max(D,j)})},open:(x,D,j)=>{if(x==="")throw new ht.ErrnoError(44);D=typeof D=="string"?gg(D):D,j=typeof j>"u"?438:j,D&64?j=j&4095|32768:j=0;var lt;if(typeof x=="object")lt=x;else{x=Sa.normalize(x);try{var Zt=ht.lookupPath(x,{follow:!(D&131072)});lt=Zt.node}catch{}}var yt=!1;if(D&64)if(lt){if(D&128)throw new ht.ErrnoError(20)}else lt=ht.mknod(x,j,0),yt=!0;if(!lt)throw new ht.ErrnoError(44);if(ht.isChrdev(lt.mode)&&(D&=-513),D&65536&&!ht.isDir(lt.mode))throw new ht.ErrnoError(54);if(!yt){var Yt=ht.mayOpen(lt,D);if(Yt)throw new ht.ErrnoError(Yt)}D&512&&!yt&&ht.truncate(lt,0),D&=-131713;var Dt=ht.createStream({node:lt,path:ht.getPath(lt),flags:D,seekable:!0,position:0,stream_ops:lt.stream_ops,ungotten:[],error:!1});return Dt.stream_ops.open&&Dt.stream_ops.open(Dt),n.logReadFiles&&!(D&1)&&(ht.readFiles||(ht.readFiles={}),x in ht.readFiles||(ht.readFiles[x]=1)),Dt},close:x=>{if(ht.isClosed(x))throw new ht.ErrnoError(8);x.getdents&&(x.getdents=null);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(D){throw D}finally{ht.closeStream(x.fd)}x.fd=null},isClosed:x=>x.fd===null,llseek:(x,D,j)=>{if(ht.isClosed(x))throw new ht.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new ht.ErrnoError(70);if(j!=0&&j!=1&&j!=2)throw new ht.ErrnoError(28);return x.position=x.stream_ops.llseek(x,D,j),x.ungotten=[],x.position},read:(x,D,j,lt,Zt)=>{if(V(j>=0),lt<0||Zt<0)throw new ht.ErrnoError(28);if(ht.isClosed(x))throw new ht.ErrnoError(8);if((x.flags&2097155)===1)throw new ht.ErrnoError(8);if(ht.isDir(x.node.mode))throw new ht.ErrnoError(31);if(!x.stream_ops.read)throw new ht.ErrnoError(28);var yt=typeof Zt<"u";if(!yt)Zt=x.position;else if(!x.seekable)throw new ht.ErrnoError(70);var Yt=x.stream_ops.read(x,D,j,lt,Zt);return yt||(x.position+=Yt),Yt},write:(x,D,j,lt,Zt,yt)=>{if(V(j>=0),lt<0||Zt<0)throw new ht.ErrnoError(28);if(ht.isClosed(x))throw new ht.ErrnoError(8);if(!(x.flags&2097155))throw new ht.ErrnoError(8);if(ht.isDir(x.node.mode))throw new ht.ErrnoError(31);if(!x.stream_ops.write)throw new ht.ErrnoError(28);x.seekable&&x.flags&1024&&ht.llseek(x,0,2);var Yt=typeof Zt<"u";if(!Yt)Zt=x.position;else if(!x.seekable)throw new ht.ErrnoError(70);var Dt=x.stream_ops.write(x,D,j,lt,Zt,yt);return Yt||(x.position+=Dt),Dt},allocate:(x,D,j)=>{if(ht.isClosed(x))throw new ht.ErrnoError(8);if(D<0||j<=0)throw new ht.ErrnoError(28);if(!(x.flags&2097155))throw new ht.ErrnoError(8);if(!ht.isFile(x.node.mode)&&!ht.isDir(x.node.mode))throw new ht.ErrnoError(43);if(!x.stream_ops.allocate)throw new ht.ErrnoError(138);x.stream_ops.allocate(x,D,j)},mmap:(x,D,j,lt,Zt)=>{if(lt&2&&!(Zt&2)&&(x.flags&2097155)!==2)throw new ht.ErrnoError(2);if((x.flags&2097155)===1)throw new ht.ErrnoError(2);if(!x.stream_ops.mmap)throw new ht.ErrnoError(43);return x.stream_ops.mmap(x,D,j,lt,Zt)},msync:(x,D,j,lt,Zt)=>(V(j>=0),x.stream_ops.msync?x.stream_ops.msync(x,D,j,lt,Zt):0),munmap:x=>0,ioctl:(x,D,j)=>{if(!x.stream_ops.ioctl)throw new ht.ErrnoError(59);return x.stream_ops.ioctl(x,D,j)},readFile:(x,D={})=>{if(D.flags=D.flags||0,D.encoding=D.encoding||"binary",D.encoding!=="utf8"&&D.encoding!=="binary")throw new Error(`Invalid encoding type "${D.encoding}"`);var j,lt=ht.open(x,D.flags),Zt=ht.stat(x),yt=Zt.size,Yt=new Uint8Array(yt);return ht.read(lt,Yt,0,yt,0),D.encoding==="utf8"?j=GV(Yt,0):D.encoding==="binary"&&(j=Yt),ht.close(lt),j},writeFile:(x,D,j={})=>{j.flags=j.flags||577;var lt=ht.open(x,j.flags,j.mode);if(typeof D=="string"){var Zt=new Uint8Array(Ta(D)+1),yt=_W(D,Zt,0,Zt.length);ht.write(lt,Zt,0,yt,void 0,j.canOwn)}else if(ArrayBuffer.isView(D))ht.write(lt,D,0,D.byteLength,void 0,j.canOwn);else throw new Error("Unsupported data type");ht.close(lt)},cwd:()=>ht.currentPath,chdir:x=>{var D=ht.lookupPath(x,{follow:!0});if(D.node===null)throw new ht.ErrnoError(44);if(!ht.isDir(D.node.mode))throw new ht.ErrnoError(54);var j=ht.nodePermissions(D.node,"x");if(j)throw new ht.ErrnoError(j);ht.currentPath=D.path},createDefaultDirectories:()=>{ht.mkdir("/tmp"),ht.mkdir("/home"),ht.mkdir("/home/web_user")},createDefaultDevices:()=>{ht.mkdir("/dev"),ht.registerDevice(ht.makedev(1,3),{read:()=>0,write:(lt,Zt,yt,Yt,Dt)=>Yt}),ht.mkdev("/dev/null",ht.makedev(1,3)),Ai.register(ht.makedev(5,0),Ai.default_tty_ops),Ai.register(ht.makedev(6,0),Ai.default_tty1_ops),ht.mkdev("/dev/tty",ht.makedev(5,0)),ht.mkdev("/dev/tty1",ht.makedev(6,0));var x=new Uint8Array(1024),D=0,j=()=>(D===0&&(D=Du(x).byteLength),x[--D]);ht.createDevice("/dev","random",j),ht.createDevice("/dev","urandom",j),ht.mkdir("/dev/shm"),ht.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ht.mkdir("/proc");var x=ht.mkdir("/proc/self");ht.mkdir("/proc/self/fd"),ht.mount({mount:()=>{var D=ht.createNode(x,"fd",16895,73);return D.node_ops={lookup:(j,lt)=>{var Zt=+lt,yt=ht.getStreamChecked(Zt),Yt={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>yt.path}};return Yt.parent=Yt,Yt}},D}},{},"/proc/self/fd")},createStandardStreams:()=>{n.stdin?ht.createDevice("/dev","stdin",n.stdin):ht.symlink("/dev/tty","/dev/stdin"),n.stdout?ht.createDevice("/dev","stdout",null,n.stdout):ht.symlink("/dev/tty","/dev/stdout"),n.stderr?ht.createDevice("/dev","stderr",null,n.stderr):ht.symlink("/dev/tty1","/dev/stderr");var x=ht.open("/dev/stdin",0),D=ht.open("/dev/stdout",1),j=ht.open("/dev/stderr",1);V(x.fd===0,`invalid handle for stdin (${x.fd})`),V(D.fd===1,`invalid handle for stdout (${D.fd})`),V(j.fd===2,`invalid handle for stderr (${j.fd})`)},ensureErrnoError:()=>{ht.ErrnoError||(ht.ErrnoError=function(D,j){this.name="ErrnoError",this.node=j,this.setErrno=function(lt){this.errno=lt;for(var Zt in zW)if(zW[Zt]===lt){this.code=Zt;break}},this.setErrno(D),this.message=KW[D],this.stack&&(Object.defineProperty(this,"stack",{value:new Error().stack,writable:!0}),this.stack=ga(this.stack))},ht.ErrnoError.prototype=new Error,ht.ErrnoError.prototype.constructor=ht.ErrnoError,[44].forEach(x=>{ht.genericErrors[x]=new ht.ErrnoError(x),ht.genericErrors[x].stack=""}))},staticInit:()=>{ht.ensureErrnoError(),ht.nameTable=new Array(4096),ht.mount(ni,{},"/"),ht.createDefaultDirectories(),ht.createDefaultDevices(),ht.createSpecialDirectories(),ht.filesystems={MEMFS:ni}},init:(x,D,j)=>{V(!ht.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),ht.init.initialized=!0,ht.ensureErrnoError(),n.stdin=x||n.stdin,n.stdout=D||n.stdout,n.stderr=j||n.stderr,ht.createStandardStreams()},quit:()=>{ht.init.initialized=!1,UO(0);for(var x=0;x{var j=ht.analyzePath(x,D);return j.exists?j.object:null},analyzePath:(x,D)=>{try{var j=ht.lookupPath(x,{follow:!D});x=j.path}catch{}var lt={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var j=ht.lookupPath(x,{parent:!0});lt.parentExists=!0,lt.parentPath=j.path,lt.parentObject=j.node,lt.name=Sa.basename(x),j=ht.lookupPath(x,{follow:!D}),lt.exists=!0,lt.path=j.path,lt.object=j.node,lt.name=j.node.name,lt.isRoot=j.path==="/"}catch(Zt){lt.error=Zt.errno}return lt},createPath:(x,D,j,lt)=>{x=typeof x=="string"?x:ht.getPath(x);for(var Zt=D.split("/").reverse();Zt.length;){var yt=Zt.pop();if(yt){var Yt=Sa.join2(x,yt);try{ht.mkdir(Yt)}catch{}x=Yt}}return Yt},createFile:(x,D,j,lt,Zt)=>{var yt=Sa.join2(typeof x=="string"?x:ht.getPath(x),D),Yt=QN(lt,Zt);return ht.create(yt,Yt)},createDataFile:(x,D,j,lt,Zt,yt)=>{var Yt=D;x&&(x=typeof x=="string"?x:ht.getPath(x),Yt=D?Sa.join2(x,D):x);var Dt=QN(lt,Zt),pe=ht.create(Yt,Dt);if(j){if(typeof j=="string"){for(var Se=new Array(j.length),en=0,Vn=j.length;en{var Zt=Sa.join2(typeof x=="string"?x:ht.getPath(x),D),yt=QN(!!j,!!lt);ht.createDevice.major||(ht.createDevice.major=64);var Yt=ht.makedev(ht.createDevice.major++,0);return ht.registerDevice(Yt,{open:Dt=>{Dt.seekable=!1},close:Dt=>{lt&<.buffer&<.buffer.length&<(10)},read:(Dt,pe,Se,en,Vn)=>{for(var bn=0,Rn=0;Rn{for(var bn=0;bn{if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(F)try{x.contents=me(F(x.url),!0),x.usedBytes=x.contents.length}catch{throw new ht.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(x,D,j,lt,Zt)=>{function yt(){this.lengthKnown=!1,this.chunks=[]}if(yt.prototype.get=function(Rn){if(!(Rn>this.length-1||Rn<0)){var Xn=Rn%this.chunkSize,vi=Rn/this.chunkSize|0;return this.getter(vi)[Xn]}},yt.prototype.setDataGetter=function(Rn){this.getter=Rn},yt.prototype.cacheLength=function(){var Rn=new XMLHttpRequest;if(Rn.open("HEAD",j,!1),Rn.send(null),!(Rn.status>=200&&Rn.status<300||Rn.status===304))throw new Error("Couldn't load "+j+". Status: "+Rn.status);var Xn=Number(Rn.getResponseHeader("Content-length")),vi,Ea=(vi=Rn.getResponseHeader("Accept-Ranges"))&&vi==="bytes",Oo=(vi=Rn.getResponseHeader("Content-Encoding"))&&vi==="gzip",Le=1024*1024;Ea||(Le=Xn);var kn=(Ya,Nd)=>{if(Ya>Nd)throw new Error("invalid range ("+Ya+", "+Nd+") or no bytes requested!");if(Nd>Xn-1)throw new Error("only "+Xn+" bytes available! programmer error!");var _s=new XMLHttpRequest;if(_s.open("GET",j,!1),Xn!==Le&&_s.setRequestHeader("Range","bytes="+Ya+"-"+Nd),_s.responseType="arraybuffer",_s.overrideMimeType&&_s.overrideMimeType("text/plain; charset=x-user-defined"),_s.send(null),!(_s.status>=200&&_s.status<300||_s.status===304))throw new Error("Couldn't load "+j+". Status: "+_s.status);return _s.response!==void 0?new Uint8Array(_s.response||[]):me(_s.responseText||"",!0)},fa=this;fa.setDataGetter(Ya=>{var Nd=Ya*Le,_s=(Ya+1)*Le-1;if(_s=Math.min(_s,Xn-1),typeof fa.chunks[Ya]>"u"&&(fa.chunks[Ya]=kn(Nd,_s)),typeof fa.chunks[Ya]>"u")throw new Error("doXHR failed!");return fa.chunks[Ya]}),(Oo||!Xn)&&(Le=Xn=1,Xn=this.getter(0).length,Le=Xn,T("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=Xn,this._chunkSize=Le,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!m)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var Yt=new yt;Object.defineProperties(Yt,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var Dt={isDevice:!1,contents:Yt}}else var Dt={isDevice:!1,url:j};var pe=ht.createFile(x,D,Dt,lt,Zt);Dt.contents?pe.contents=Dt.contents:Dt.url&&(pe.contents=null,pe.url=Dt.url),Object.defineProperties(pe,{usedBytes:{get:function(){return this.contents.length}}});var Se={},en=Object.keys(pe.stream_ops);en.forEach(bn=>{var Rn=pe.stream_ops[bn];Se[bn]=function(){return ht.forceLoadFile(pe),Rn.apply(null,arguments)}});function Vn(bn,Rn,Xn,vi,Ea){var Oo=bn.node.contents;if(Ea>=Oo.length)return 0;var Le=Math.min(Oo.length-Ea,vi);if(V(Le>=0),Oo.slice)for(var kn=0;kn(ht.forceLoadFile(pe),Vn(bn,Rn,Xn,vi,Ea)),Se.mmap=(bn,Rn,Xn,vi,Ea)=>{ht.forceLoadFile(pe);var Oo=ia(Rn);if(!Oo)throw new ht.ErrnoError(48);return Vn(bn,E,Oo,Rn,Xn),{ptr:Oo,allocated:!0}},pe.stream_ops=Se,pe},absolutePath:()=>{We("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{We("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{We("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{We("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{We("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{We("FS.standardizePath has been removed; use PATH.normalize instead")}},Ou={DEFAULT_POLLMASK:5,calculateAt:function(x,D,j){if(Sa.isAbs(D))return D;var lt;if(x===-100)lt=ht.cwd();else{var Zt=Ou.getStreamFromFD(x);lt=Zt.path}if(D.length==0){if(!j)throw new ht.ErrnoError(44);return lt}return Sa.join2(lt,D)},doStat:function(x,D,j){try{var lt=x(D)}catch(Dt){if(Dt&&Dt.node&&Sa.normalize(D)!==Sa.normalize(ht.getPath(Dt.node)))return-54;throw Dt}_[j>>2]=lt.dev,_[j+4>>2]=lt.mode,P[j+8>>2]=lt.nlink,_[j+12>>2]=lt.uid,_[j+16>>2]=lt.gid,_[j+20>>2]=lt.rdev,ae=[lt.size>>>0,(qn=lt.size,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+24>>2]=ae[0],_[j+28>>2]=ae[1],_[j+32>>2]=4096,_[j+36>>2]=lt.blocks;var Zt=lt.atime.getTime(),yt=lt.mtime.getTime(),Yt=lt.ctime.getTime();return ae=[Math.floor(Zt/1e3)>>>0,(qn=Math.floor(Zt/1e3),+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+40>>2]=ae[0],_[j+44>>2]=ae[1],P[j+48>>2]=Zt%1e3*1e3,ae=[Math.floor(yt/1e3)>>>0,(qn=Math.floor(yt/1e3),+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+56>>2]=ae[0],_[j+60>>2]=ae[1],P[j+64>>2]=yt%1e3*1e3,ae=[Math.floor(Yt/1e3)>>>0,(qn=Math.floor(Yt/1e3),+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+72>>2]=ae[0],_[j+76>>2]=ae[1],P[j+80>>2]=Yt%1e3*1e3,ae=[lt.ino>>>0,(qn=lt.ino,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+88>>2]=ae[0],_[j+92>>2]=ae[1],0},doMsync:function(x,D,j,lt,Zt){if(!ht.isFile(D.node.mode))throw new ht.ErrnoError(43);if(lt&2)return 0;var yt=I.slice(x,x+j);ht.msync(D,yt,Zt,j,lt)},varargs:void 0,get(){V(Ou.varargs!=null),Ou.varargs+=4;var x=_[Ou.varargs-4>>2];return x},getStr(x){var D=OW(x);return D},getStreamFromFD:function(x){var D=ht.getStreamChecked(x);return D}},Cg=(x,D)=>{var j=0;return $U().forEach(function(lt,Zt){var yt=D+j;P[x+Zt*4>>2]=yt,v4(lt,yt),j+=lt.length+1}),0},j4=(x,D)=>{var j=$U();P[x>>2]=j.length;var lt=0;return j.forEach(function(Zt){lt+=Zt.length+1}),P[D>>2]=lt,0};function q4(x){try{var D=Ou.getStreamFromFD(x);return ht.close(D),0}catch(j){if(typeof ht>"u"||j.name!=="ErrnoError")throw j;return j.errno}}var $4=(x,D,j,lt)=>{for(var Zt=0,yt=0;yt>2],Dt=P[D+4>>2];D+=8;var pe=ht.read(x,E,Yt,Dt,lt);if(pe<0)return-1;if(Zt+=pe,pe>2]=yt,0}catch(Yt){if(typeof ht>"u"||Yt.name!=="ErrnoError")throw Yt;return Yt.errno}}function TV(x,D,j,lt,Zt){var yt=Ag(D,j);try{if(isNaN(yt))return 61;var Yt=Ou.getStreamFromFD(x);return ht.llseek(Yt,yt,lt),ae=[Yt.position>>>0,(qn=Yt.position,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[Zt>>2]=ae[0],_[Zt+4>>2]=ae[1],Yt.getdents&&yt===0&<===0&&(Yt.getdents=null),0}catch(Dt){if(typeof ht>"u"||Dt.name!=="ErrnoError")throw Dt;return Dt.errno}}var Ng=(x,D,j,lt)=>{for(var Zt=0,yt=0;yt>2],Dt=P[D+4>>2];D+=8;var pe=ht.write(x,E,Yt,Dt,lt);if(pe<0)return-1;Zt+=pe,typeof lt<"u"&&(lt+=pe)}return Zt};function fO(x,D,j,lt){try{var Zt=Ou.getStreamFromFD(x),yt=Ng(Zt,D,j);return P[lt>>2]=yt,0}catch(Yt){if(typeof ht>"u"||Yt.name!=="ErrnoError")throw Yt;return Yt.errno}}var yg=(x,D)=>{for(var j=0,lt=0;lt<=D;j+=x[lt++]);return j},kN=[31,29,31,30,31,30,31,31,30,31,30,31],YN=[31,28,31,30,31,30,31,31,30,31,30,31],Bg=(x,D)=>{for(var j=new Date(x.getTime());D>0;){var lt=wW(j.getFullYear()),Zt=j.getMonth(),yt=(lt?kN:YN)[Zt];if(D>yt-j.getDate())D-=yt-j.getDate()+1,j.setDate(1),Zt<11?j.setMonth(Zt+1):(j.setMonth(0),j.setFullYear(j.getFullYear()+1));else return j.setDate(j.getDate()+D),j}return j},xN=(x,D)=>{V(x.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),E.set(x,D)},tG=(x,D,j,lt)=>{var Zt=_[lt+40>>2],yt={tm_sec:_[lt>>2],tm_min:_[lt+4>>2],tm_hour:_[lt+8>>2],tm_mday:_[lt+12>>2],tm_mon:_[lt+16>>2],tm_year:_[lt+20>>2],tm_wday:_[lt+24>>2],tm_yday:_[lt+28>>2],tm_isdst:_[lt+32>>2],tm_gmtoff:_[lt+36>>2],tm_zone:Zt?OW(Zt):""},Yt=OW(j),Dt={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var pe in Dt)Yt=Yt.replace(new RegExp(pe,"g"),Dt[pe]);var Se=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],en=["January","February","March","April","May","June","July","August","September","October","November","December"];function Vn(Le,kn,fa){for(var Ya=typeof Le=="number"?Le.toString():Le||"";Ya.length0?1:0}var Ya;return(Ya=fa(Le.getFullYear()-kn.getFullYear()))===0&&(Ya=fa(Le.getMonth()-kn.getMonth()))===0&&(Ya=fa(Le.getDate()-kn.getDate())),Ya}function Xn(Le){switch(Le.getDay()){case 0:return new Date(Le.getFullYear()-1,11,29);case 1:return Le;case 2:return new Date(Le.getFullYear(),0,3);case 3:return new Date(Le.getFullYear(),0,2);case 4:return new Date(Le.getFullYear(),0,1);case 5:return new Date(Le.getFullYear()-1,11,31);case 6:return new Date(Le.getFullYear()-1,11,30)}}function vi(Le){var kn=Bg(new Date(Le.tm_year+1900,0,1),Le.tm_yday),fa=new Date(kn.getFullYear(),0,4),Ya=new Date(kn.getFullYear()+1,0,4),Nd=Xn(fa),_s=Xn(Ya);return Rn(Nd,kn)<=0?Rn(_s,kn)<=0?kn.getFullYear()+1:kn.getFullYear():kn.getFullYear()-1}var Ea={"%a":Le=>Se[Le.tm_wday].substring(0,3),"%A":Le=>Se[Le.tm_wday],"%b":Le=>en[Le.tm_mon].substring(0,3),"%B":Le=>en[Le.tm_mon],"%C":Le=>{var kn=Le.tm_year+1900;return bn(kn/100|0,2)},"%d":Le=>bn(Le.tm_mday,2),"%e":Le=>Vn(Le.tm_mday,2," "),"%g":Le=>vi(Le).toString().substring(2),"%G":Le=>vi(Le),"%H":Le=>bn(Le.tm_hour,2),"%I":Le=>{var kn=Le.tm_hour;return kn==0?kn=12:kn>12&&(kn-=12),bn(kn,2)},"%j":Le=>bn(Le.tm_mday+yg(wW(Le.tm_year+1900)?kN:YN,Le.tm_mon-1),3),"%m":Le=>bn(Le.tm_mon+1,2),"%M":Le=>bn(Le.tm_min,2),"%n":()=>` -`,"%p":Le=>Le.tm_hour>=0&&Le.tm_hour<12?"AM":"PM","%S":Le=>bn(Le.tm_sec,2),"%t":()=>" ","%u":Le=>Le.tm_wday||7,"%U":Le=>{var kn=Le.tm_yday+7-Le.tm_wday;return bn(Math.floor(kn/7),2)},"%V":Le=>{var kn=Math.floor((Le.tm_yday+7-(Le.tm_wday+6)%7)/7);if((Le.tm_wday+371-Le.tm_yday-2)%7<=2&&kn++,kn){if(kn==53){var Ya=(Le.tm_wday+371-Le.tm_yday)%7;Ya!=4&&(Ya!=3||!wW(Le.tm_year))&&(kn=1)}}else{kn=52;var fa=(Le.tm_wday+7-Le.tm_yday-1)%7;(fa==4||fa==5&&wW(Le.tm_year%400-1))&&kn++}return bn(kn,2)},"%w":Le=>Le.tm_wday,"%W":Le=>{var kn=Le.tm_yday+7-(Le.tm_wday+6)%7;return bn(Math.floor(kn/7),2)},"%y":Le=>(Le.tm_year+1900).toString().substring(2),"%Y":Le=>Le.tm_year+1900,"%z":Le=>{var kn=Le.tm_gmtoff,fa=kn>=0;return kn=Math.abs(kn)/60,kn=kn/60*100+kn%60,(fa?"+":"-")+("0000"+kn).slice(-4)},"%Z":Le=>Le.tm_zone,"%%":()=>"%"};Yt=Yt.replace(/%%/g,"\0\0");for(var pe in Ea)Yt.includes(pe)&&(Yt=Yt.replace(new RegExp(pe,"g"),Ea[pe](yt)));Yt=Yt.replace(/\0\0/g,"%");var Oo=me(Yt,!1);return Oo.length>D?0:(xN(Oo,x),Oo.length-1)},sR=(x,D,j,lt,Zt)=>tG(x,D,j,lt);function Qg(x){var D=n["_"+x];return V(D,"Cannot call unknown function "+x+", make sure it is exported"),D}var t8=x=>{var D=Ta(x)+1,j=AO(D);return DW(x,j,D),j},FO=function(x,D,j,lt,Zt){var yt={string:Xn=>{var vi=0;return Xn!=null&&Xn!==0&&(vi=t8(Xn)),vi},array:Xn=>{var vi=AO(Xn.length);return xN(Xn,vi),vi}};function Yt(Xn){return D==="string"?OW(Xn):D==="boolean"?!!Xn:Xn}var Dt=Qg(x),pe=[],Se=0;if(V(D!=="array",'Return type should not be "array".'),lt)for(var en=0;en(rR=Q.emscripten_stack_init)(),nG=()=>(nG=Q.emscripten_stack_get_free)(),iG=()=>(iG=Q.emscripten_stack_get_base)(),qW=()=>(qW=Q.emscripten_stack_get_end)(),$W=Je("stackSave"),o8=Je("stackRestore"),AO=Je("stackAlloc"),a8=()=>(a8=Q.emscripten_stack_get_current)(),rdt=Je("__cxa_increment_exception_refcount"),s8=Je("__cxa_is_pointer_type"),LN=n.dynCall_jiji=Je("dynCall_jiji"),Yg=n.dynCall_viijii=Je("dynCall_viijii"),l8=n.dynCall_iiiiij=Je("dynCall_iiiiij"),bt=n.dynCall_iiiiijj=Je("dynCall_iiiiijj"),oG=n.dynCall_iiiiiijj=Je("dynCall_iiiiiijj");function xg(x){try{for(var D=atob(x),j=new Uint8Array(D.length),lt=0;lt0||(d8(),Wt(),oe>0))return;function x(){Xg||(Xg=!0,n.calledRun=!0,!J&&(Nt(),i(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),V(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),kt()))}n.setStatus?(n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),x()},1)):x(),dt()}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return SV(),e.ready}})(),lv=r0e;globalThis.Buffer=globalThis.Buffer||{};var cTt=(lv.hasOwnProperty("then")?lv:Promise.resolve(lv())).then(t=>{let e={find_nearby_indices:{rval:"boolean",params:["number","number"]},getCoveragePositions:{rval:null,params:["number","number","number","number","number"]},inflateEllipsoid:{rval:null,params:["number"]}},n={wasm:t};return Object.keys(e).forEach(i=>{n[i]=e[i].params?t.cwrap(i,e[i].rval,e[i].params):t.cwrap(i,e[i].rval)}),n});var{FinalizationRegistry:c0e}=globalThis,K0={_previousLoad:!1,_instance:void 0,_wasmModule:void 0,_positionPointer:-1,_precisionMode:75,async initInstance(){let t="default";if(!this._previousLoad)try{this._wasmModule=(await cTt).wasm,this._previousLoad=!0}catch(e){throw new Ut(`Failed to load the WASM module: ${e.message}`)}if(!this._instance){let{PositionRegistry:e}=this._wasmModule;this._instance=new e(t)}return{instance:this._instance,wasmModule:this._wasmModule}},get instance(){return this._instance},get wasmModule(){return this._wasmModule},get positionPointer(){return this._positionPointer},update(t){if(!this._instance)return 0;let e=Math.round(t/this._precisionMode)*this._precisionMode;return this._lastUpdate!==e&&(this._lastUpdate=e,this._positionPointer=this._instance.update(e)),this._positionPointer||0},updateJulianDate(t){if(!this._instance)return 0;if(!(t instanceof rt))throw new TypeError("Expected julianDate to be an instance of JulianDate");let e=rt.toDate(t).getTime();return this.update(e)},get precisionMode(){return this._precisionMode},set precisionMode(t){if(typeof t!="number"||t<=0)throw new TypeError("Precision mode must be a positive number.");this._precisionMode=t}},mTt={},JIi=new c0e(t=>{let e=mTt[t];e&&(K0._wasmModule.wasm.removePosition(e),delete mTt[t],console.log(`Entity with ID ${t} has been garbage collected, pointer ${e}`))});var hTt=v.WHITE,pTt=v.BLACK,uTt=0,ZTt=1,VTt=0,bTt=new v,m0e=new p,RTt=new v,WTt=new ln,fTt=new ln,FTt=new Wn,UTt=null,qet=null;function GTt(t){this.entity=t,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function z0(t,e){e.collectionChanged.addEventListener(z0.prototype._onCollectionChanged,this),this._cluster=t,this._cluster._isReallyDirty=!0,this._entityCollection=e,this._items=new qe,this._wasmItems=[],this._dynamicItems=[],this._onCollectionChanged(e,e.values,[],[]),this._fps=[!1,!1],this._fpsLastUpdate=[Oi(),Oi()]}z0.prototype.needsUpdate=function(t){let e=this._fps[t];if(e){let n=Oi(),i=(n-this._fpsLastUpdate[t])*xi.SECONDS_PER_MILLISECOND>=1/e;return i&&(this._fpsLastUpdate[t]=n),i}return!0};z0.prototype.update=function(t){if(!this.needsUpdate(this._entityCollection?.ThrottleType?.MAX))return!0;let e=this._items.values,n=this._cluster,{wasmModule:i,instance:o,updateJulianDate:a}=K0,s=this._entityCollection.owner?this._entityCollection.owner._wasmModule:null;s&&(s._wasmSatelliteCatalog=this._entityCollection.owner._wasmSatelliteCatalog);let l=this._wasmItems,r=this._dynamicItems;if(!e.length&&!l.length)return!0;if(s&&l.length&&!n._isReallyDirty&&n&&n._pointCollection&&n._pointCollection._pointPrimitives){let m=K0.updateJulianDate(t);m!==qet&&(qet=m,UTt=new Float64Array(s.HEAP8.buffer,qet,l.length*3));let h=new p;for(let Z=0,b=l.length;Z-1&&(p.fromArray(UTt,l[Z].array_index*3,h),l[Z].pointPrimitive&&(l[Z].pointPrimitive.position=h),l[Z].billboard&&(l[Z].billboard.position=h))}let d=this.needsUpdate(this._entityCollection?.ThrottleType?.DYNAMIC)&&r.length;if(!l.length||d||n._isReallyDirty){let m=!n._isReallyDirty&&d?r:e;for(let h=0,Z=m.length;h-1&&(b.array_index=u.array_index);let F=u._point,U=b.pointPrimitive,G=b.billboard,A=et.getValueOrDefault(F._heightReference,t,Ge.NONE),T=u.isShowing&&u.isAvailable(t)&&et.getValueOrDefault(F._show,t,!0);U&&(U.show=T);let g=U&&u.array_index?U.position:void 0;if(T&&!g&&(g=et.getValueOrUndefined(u._position,t,m0e),T=c(g)),!T){ZL(b,u,n);continue}et.isConstant(u._position)||(n._clusterDirty=!0);let C=!1,y=!1;if(A!==Ge.NONE&&!c(G)?(c(U)&&(ZL(b,u,n),U=void 0),G=n.getBillboard(u),G.id=u,G.image=void 0,b.billboard=G,C=!0,y=p.equals(G.position,g)&&G.heightReference===A):A===Ge.NONE&&!c(U)&&(c(G)&&(ZL(b,u,n),G=void 0),U=n.getPoint(u),U.id=u,b.pointPrimitive=U),c(U))U.show=!0,U.position=g,U.scaleByDistance=et.getValueOrUndefined(F._scaleByDistance,t,WTt),U.translucencyByDistance=et.getValueOrUndefined(F._translucencyByDistance,t,fTt),U.color=et.getValueOrDefault(F._color,t,hTt,bTt),U.outlineColor=et.getValueOrDefault(F._outlineColor,t,pTt,RTt),U.outlineWidth=et.getValueOrDefault(F._outlineWidth,t,uTt),U.pixelSize=et.getValueOrDefault(F._pixelSize,t,ZTt),U.distanceDisplayCondition=et.getValueOrUndefined(F._distanceDisplayCondition,t,FTt),U.disableDepthTestDistance=et.getValueOrDefault(F._disableDepthTestDistance,t,VTt);else if(c(G)){G.show=!0,G.position=g,G.scaleByDistance=et.getValueOrUndefined(F._scaleByDistance,t,WTt),G.translucencyByDistance=et.getValueOrUndefined(F._translucencyByDistance,t,fTt),G.distanceDisplayCondition=et.getValueOrUndefined(F._distanceDisplayCondition,t,FTt),G.disableDepthTestDistance=et.getValueOrDefault(F._disableDepthTestDistance,t,VTt),G.heightReference=A;let Y=et.getValueOrDefault(F._color,t,hTt,bTt),Q=et.getValueOrDefault(F._outlineColor,t,pTt,RTt),J=Math.round(et.getValueOrDefault(F._outlineWidth,t,uTt)),M=Math.max(1,Math.round(et.getValueOrDefault(F._pixelSize,t,ZTt)));if(J>0?(G.scale=1,C=C||J!==b.outlineWidth||M!==b.pixelSize||!v.equals(Y,b.color)||!v.equals(Q,b.outlineColor)):(G.scale=M/50,M=50,C=C||J!==b.outlineWidth||!v.equals(Y,b.color)||!v.equals(Q,b.outlineColor)),C){b.color=v.clone(Y,b.color),b.outlineColor=v.clone(Q,b.outlineColor),b.pixelSize=M,b.outlineWidth=J;let V=Y.alpha,E=Y.toCssColorString(),I=Q.toCssColorString(),B=JSON.stringify([E,M,I,J]);G.setImage(B,XA(V,E,I,J,M))}y&&G._updateClamping()}}this._cluster._isReallyDirty=!1}return!0};z0.prototype.getBoundingSphere=function(t,e){let n=this._items.get(t.id);if(!c(n)||!(c(n.pointPrimitive)||c(n.billboard)))return ve.FAILED;if(c(n.pointPrimitive))e.center=p.clone(n.pointPrimitive.position,e.center);else{let i=n.billboard;if(!c(i._clampedPosition))return ve.PENDING;e.center=p.clone(i._clampedPosition,e.center)}return e.radius=0,ve.DONE};z0.prototype.isDestroyed=function(){return!1};z0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(z0.prototype._onCollectionChanged,this);let t=this._entityCollection.values;for(let e=0;e{let F=s.get(u.id);if(F&&r.indexOf(F)===-1)if(!u._position.isConstant&&l.indexOf(F)===-1)r.push(F);else for(let U in u._point)u._point[U]?.isConstant===!1&&r.push(F)},h=u=>{r=r.filter(F=>F.entity.id!==u.id)},Z=u=>{let F=s.get(u.id);F&&u.wasmSchema&&l.indexOf(F)===-1&&l.push(F),m(u)},b=u=>{l=l.filter(F=>F.entity.id!==u.id),h(u)};for(o=e.length-1;o>-1;o--)a=e[o],c(a._point)&&c(a._position)&&(s.set(a.id,new GTt(a)),Z(a));for(o=i.length-1;o>-1;o--)a=i[o],Z(a),c(a._point)&&c(a._position)?s.contains(a.id)||s.set(a.id,new GTt(a)):(ZL(s.get(a.id),a,d),s.remove(a.id),b(a));for(o=n.length-1;o>-1;o--)a=n[o],ZL(s.get(a.id),a,d),s.remove(a.id),b(a);this._cluster._isReallyDirty=!0};function ZL(t,e,n){if(c(t)){let i=t.pointPrimitive;if(c(i)){t.pointPrimitive=void 0,n.removePoint(e);return}let o=t.billboard;c(o)&&(t.billboard=void 0,n.removeBillboard(e))}}var VL=z0;var kNi=R(W(),1);var tNi=R(W(),1);var G1i=R(W(),1);var ETt=[];function h0e(t,e,n,i,o){let a=ETt;a.length=o;let s,l=n.red,r=n.green,d=n.blue,m=n.alpha,h=i.red,Z=i.green,b=i.blue,u=i.alpha;if(v.equals(n,i)){for(s=0;s0?new Array(o):void 0;for(i=0;i0){let X=0,_=h[0];i=i.filter(function(P,w){let z=!1;return o?z=w===_||w===0&&_===1:z=w+1===_,z?(X++,_=h[X],!1):!0})}let b=Z.length;if(b<2||e<=0)return;if(a===Ln.GEODESIC||a===Ln.RHUMB){let X,_;a===Ln.GEODESIC?(X=k.chordLength(s,l.maximumRadius),_=xo.numberOfPoints):(X=s,_=xo.numberOfPointsRhumbLine);let P=xo.extractHeights(Z,l);if(c(i)){let w=1;for(r=0;r0)return Ft.fromPoints(e.positions,t),ve.DONE}return ve.FAILED};RL.prototype.isDestroyed=function(){return!1};RL.prototype.destroy=function(){let e=this._geometryUpdater._scene.id+this._primitives._guid,n=rv[e];c(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete rv[e])),c(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),At(this)};var WL=DZ;var bNi=R(W(),1);var F0e=new v,U0e=new Wn,G0e=new Wn;function OZ(t,e,n,i,o){let a;n instanceof Cn?a=Ul:a=zl,this.orderedGroundPrimitives=t,this.classificationType=e,this.appearanceType=a,this.materialProperty=n,this.updaters=new qe,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new qe,this.material=void 0,this.updatersWithAttributes=new qe,this.attributes=new qe,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(OZ.prototype.onMaterialChanged,this),this.subscriptions=new qe,this.showsUpdated=new qe,this.zIndex=i,this._asynchronous=o}OZ.prototype.onMaterialChanged=function(){this.invalidated=!0};OZ.prototype.isMaterial=function(t){let e=this.materialProperty,n=t.fillMaterialProperty;return n===e||n instanceof Cn&&e instanceof Cn?!0:c(e)&&e.equals(n)};OZ.prototype.add=function(t,e,n){let i=e.id;if(this.updaters.set(i,e),this.geometry.set(i,n),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!et.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,e);else{let o=this;this.subscriptions.set(i,e.entity.definitionChanged.addEventListener(function(a,s,l,r){s==="isShowing"&&o.showsUpdated.set(e.id,e)}))}this.createPrimitive=!0};OZ.prototype.remove=function(t){let e=t.id;if(this.createPrimitive=this.geometry.remove(e)||this.createPrimitive,this.updaters.remove(e)){this.updatersWithAttributes.remove(e);let n=this.subscriptions.get(e);return c(n)&&(n(),this.subscriptions.remove(e)),!0}return!1};OZ.prototype.update=function(t){let e=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,a;if(this.createPrimitive){if(o.length>0)c(n)&&(c(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new Gh({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===zl&&(this.material=Ua.getValue(t,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),e=!1;else{c(n)&&(i.remove(n),n=void 0);let l=this.oldPrimitive;c(l)&&(i.remove(l),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(c(n)&&n.ready){n.show=!0,c(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===zl&&(this.material=Ua.getValue(t,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,l=s.length;for(a=0;a=0;i--){let o=e[i];if(o.remove(t)){o.updaters.length===0&&(e.splice(i,1),o.destroy());break}}};EI.prototype.update=function(t){let e,n=this._items,i=n.length;for(e=i-1;e>=0;e--){let a=n[e];if(a.invalidated){n.splice(e,1);let s=a.updaters.values,l=s.length;for(let r=0;r-1;l--)r=s[l],d=r.id,m=this._updaters.get(d),m.entity===r?(BTt(this,m),QTt(this,t,m)):(o.push(r),n.push(r));for(l=o.length-1;l>-1;l--)r=o[l],d=r.id,m=this._updaters.get(d),BTt(this,m),m.destroy(),this._updaters.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(l=n.length-1;l>-1;l--)r=n[l],d=r.id,m=new WL(r,this._scene),this._updaters.set(d,m),QTt(this,t,m),this._subscriptions.set(d,m.geometryChanged.addEventListener(Rb._onGeometryChanged,this));e.removeAll(),i.removeAll(),a.removeAll();let h=!0,Z=this._batches,b=Z.length;for(l=0;l-1;s--)r=n[s],l=r.id,i.remove(l)||(o.set(l,r),a.remove(l));for(s=e.length-1;s>-1;s--)r=e[s],l=r.id,o.remove(l)?a.set(l,r):i.set(l,r)};var FL=Rb;function wm(t){Nc.initializeTerrainHeights(),Gh.initializeTerrainHeights();let e=t.scene,n=t.dataSourceCollection;this._eventHelper=new rl,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(e.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=e,this._visualizersCallback=f(t.visualizersCallback,wm.defaultVisualizersCallback);let i=!1,o=new Dm,a=new Dm;n.length>0&&(e.primitives.add(o),e.groundPrimitives.add(a),i=!0),this._primitives=o,this._groundPrimitives=a;for(let d=0,m=n.length;dnew o(t,i))]};Object.defineProperties(wm.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});wm.prototype.isDestroyed=function(){return!1};wm.prototype.destroy=function(){this._eventHelper.removeAll();let t=this._dataSourceCollection;for(let e=0,n=t.length;eI0e*s.maximumRadius?(h=XTt,p.normalize(r,h),p.negate(h,h),b=p.clone(p.UNIT_Z,tnt),Z=p.cross(b,h,dv),p.magnitude(Z)>k.EPSILON7&&(p.normalize(h,h),p.normalize(Z,Z),b=p.cross(h,Z,tnt),p.normalize(b,b),d=!0)):p.equalsEpsilon(r,g,k.EPSILON7)||(b=XTt,p.normalize(Q,b),p.normalize(J,J),Z=p.cross(b,J,tnt),m&&(Z=p.multiplyByScalar(Z,-1,Z)),p.equalsEpsilon(Z,p.ZERO,k.EPSILON7)||(h=p.cross(Z,b,dv),ot.multiplyByVector(Y,h,h),ot.multiplyByVector(Y,Z,Z),ot.multiplyByVector(Y,b,b),p.normalize(h,h),p.normalize(Z,Z),p.normalize(b,b),d=!0))}}c(t.boundingSphere)&&(r=t.boundingSphere.center);let U,G,A;i&&(U=p.clone(e.position,ent),G=p.clone(e.direction,JTt),A=p.clone(e.up,LTt));let T=C0e;d?(T[0]=h.x,T[1]=h.y,T[2]=h.z,T[3]=0,T[4]=Z.x,T[5]=Z.y,T[6]=Z.z,T[7]=0,T[8]=b.x,T[9]=b.y,T[10]=b.z,T[11]=0,T[12]=r.x,T[13]=r.y,T[14]=r.z,T[15]=0):Pe.eastNorthUpToFixedFrame(r,s,T),e._setTransform(T),i&&(p.clone(U,e.position),p.clone(G,e.direction),p.clone(A,e.up),p.cross(G,A,e.right))}if(n){let d=l===ut.SCENE2D||p.equals(t._offset3D,p.ZERO)?void 0:t._offset3D;e.lookAtTransform(e.transform,d)}}function GL(t,e,n){this.entity=t,this.scene=e,this.ellipsoid=f(n,mt.WGS84),this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new p,this._defaultOffset3D=void 0,this._offset3D=new p}Object.defineProperties(GL,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(t){this._defaultOffset3D=p.clone(t,new p)}}});GL.defaultOffset3D=new p(-14e3,3500,3500);var UL=new Zu,y0e=new p;GL.prototype.update=function(t,e){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ut.MORPHING)return;let a=this.entity,s=a.position;if(!c(s))return;let l=a!==this._lastEntity,r=o!==this._mode,d=n.camera,m=l||r,h=!0;if(l){let Z=a.viewFrom,b=c(Z);if(!b&&c(e)){UL.pitch=-k.PI_OVER_FOUR,UL.range=0;let u=s.getValue(t,y0e);if(c(u)){let F=2-1/Math.max(1,p.magnitude(u)/i.maximumRadius);UL.pitch*=F,UL.range=p.magnitude(u)*.05}d.viewBoundingSphere(e,UL),this.boundingSphere=e,m=!1,h=!1}else(!b||!c(Z.getValue(t,this._offset3D)))&&p.clone(GL._defaultOffset3D,this._offset3D)}else!r&&this._mode!==ut.SCENE2D&&p.clone(d.position,this._offset3D);this._lastEntity=a,this._mode=o,N0e(this,d,m,h,s,t,i)};var AL=GL;var qBi=R(W(),1);var gyi=R(W(),1);function SL(){this._cache={}}SL.prototype.fromColor=function(t,e){return cv(void 0,void 0,t,e,this._cache)};SL.prototype.fromUrl=function(t,e,n){return cv(t,void 0,e,n,this._cache)};SL.prototype.fromMakiIconId=function(t,e,n){return cv(Dn(`Assets/Textures/maki/${encodeURIComponent(t)}.png`),void 0,e,n,this._cache)};SL.prototype.fromText=function(t,e,n){return cv(void 0,t,e,n,this._cache)};var B0e=new v;function Q0e(t,e,n){t.save(),t.scale(n/24,n/24),t.fillStyle=e.toCssColorString(),t.strokeStyle=e.brighten(.6,B0e).toCssColorString(),t.lineWidth=.846,t.beginPath(),t.moveTo(6.72,.422),t.lineTo(17.28,.422),t.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),t.lineTo(19.577,10.973),t.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),t.lineTo(14.386,14.008),t.lineTo(11.826,23.578),t.lineTo(9.614,14.008),t.lineTo(6.719,13.965),t.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),t.lineTo(4.422,3.416),t.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),t.closePath(),t.fill(),t.stroke(),t.restore()}function MTt(t,e,n){let i=n/2.5,o=i,a=i;e.width>e.height?a=i*(e.height/e.width):e.width${i}${wTt(o)}`:n+=`${i}${o}`)}return n.length>0&&(n=`${n}
`),n}function M0e(t,e,n){let i;return function(o,a){return c(i)||(i=t(e,n)),i}}function _0e(t,e){return new Th(M0e(wTt,t,e),!0)}function pv(t,e,n){let i=t.id;if(!c(i)||t.type!=="Feature")i=Si();else{let s=2,l=i;for(;c(e.getById(l));)l=`${i}_${s}`,s++;i=l}let o=e.getOrCreateEntity(i),a=t.properties;if(c(a)){o.properties=a;let s,l=a.title;if(c(l))o.name=l,s="title";else{let d=Number.MAX_VALUE;for(let m in a)if(a.hasOwnProperty(m)&&a[m]){let h=m.toLowerCase();if(d>1&&h==="title"){d=1,s=m;break}else d>2&&h==="name"?(d=2,s=m):d>3&&/title/i.test(m)?(d=3,s=m):d>4&&/name/i.test(m)&&(d=4,s=m)}c(s)&&(o.name=a[s])}let r=a.description;r!==null&&(o.description=c(r)?new Ii(r):n(a,s))}return o}function pnt(t,e){let n=new Array(t.length);for(let i=0;i2?d.perPositionHeight=new Ii(!0):o.clampToGround||(d.height=0);let Z=pv(e,t._entityCollection,o.describe);Z.polygon=d}function oSt(t,e,n,i,o){iSt(t,e,i,n.coordinates,o)}function aSt(t,e,n,i,o){let a=n.coordinates;for(let s=0;se&&(n==null?(n="…",i=3):i=n.length,t=t.substring(0,e-i)+n),t}function cs(t,e){for(var n=t.length-1;n>=0;n--)t[n]===e&&t.splice(n,1)}function xF(t,e){for(var n=t.length-1;n>=0;n--)e(t[n])===!0&&t.splice(n,1)}function XF(t){throw new Error("Unhandled case for value: '".concat(t,"'"))}var FQi=R(W());var rQi=R(W());var aQi=R(W()),JF=/[A-Za-z]/,Ir=/[\d]/;var Hh=/\s/,uv=/['"]/,mSt=/[\x00-\x1F\x7F]/,hSt=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,w0e=/\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/.source,P0e=/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,v0e=hSt+w0e+P0e,pSt=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,iQi=new RegExp("[".concat(hSt+pSt,"]")),unt=v0e+pSt,HZ=new RegExp("[".concat(unt,"]"));var Zv=function(){function t(e){e===void 0&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return t.prototype.setTagName=function(e){return this.tagName=e,this},t.prototype.getTagName=function(){return this.tagName||""},t.prototype.setAttr=function(e,n){var i=this.getAttrs();return i[e]=n,this},t.prototype.getAttr=function(e){return this.getAttrs()[e]},t.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},t.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},t.prototype.setClass=function(e){return this.setAttr("class",e)},t.prototype.addClass=function(e){for(var n=this.getClass(),i=n?n.split(Hh):[],o=e.split(Hh),a;a=o.shift();)i.indexOf(a)===-1&&i.push(a);return this.getAttrs().class=i.join(" "),this},t.prototype.removeClass=function(e){for(var n=this.getClass(),i=n?n.split(Hh):[],o=e.split(Hh),a;i.length&&(a=o.shift());){var s=i.indexOf(a);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},t.prototype.getClass=function(){return this.getAttrs().class||""},t.prototype.hasClass=function(e){return(" "+this.getClass()+" ").indexOf(" "+e+" ")!==-1},t.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},t.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},t.prototype.getInnerHTML=function(){return this.innerHTML||""},t.prototype.getInnerHtml=function(){return this.getInnerHTML()},t.prototype.toAnchorString=function(){var e=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",e,n,">",this.getInnerHtml(),""].join("")},t.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),n=[];for(var i in e)e.hasOwnProperty(i)&&n.push(i+'="'+e[i]+'"');return n.join(" ")},t}();var cQi=R(W());function uSt(t,e,n){var i,o;n==null?(n="…",o=3,i=8):(o=n.length,i=n.length);var a=function(A){var T={},g=A,C=g.match(/^([a-z]+):\/\//i);return C&&(T.scheme=C[1],g=g.substr(C[0].length)),C=g.match(/^(.*?)(?=(\?|#|\/|$))/i),C&&(T.host=C[1],g=g.substr(C[0].length)),C=g.match(/^\/(.*?)(?=(\?|#|$))/i),C&&(T.path=C[1],g=g.substr(C[0].length)),C=g.match(/^\?(.*?)(?=(#|$))/i),C&&(T.query=C[1],g=g.substr(C[0].length)),C=g.match(/^#(.*?)$/i),C&&(T.fragment=C[1]),T},s=function(A){var T="";return A.scheme&&A.host&&(T+=A.scheme+"://"),A.host&&(T+=A.host),A.path&&(T+="/"+A.path),A.query&&(T+="?"+A.query),A.fragment&&(T+="#"+A.fragment),T},l=function(A,T){var g=T/2,C=Math.ceil(g),y=-1*Math.floor(g),Y="";return y<0&&(Y=A.substr(y)),A.substr(0,C)+n+Y};if(t.length<=e)return t;var r=e-o,d=a(t);if(d.query){var m=d.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);m&&(d.query=d.query.substr(0,m[1].length),t=s(d))}if(t.length<=e||(d.host&&(d.host=d.host.replace(/^www\./,""),t=s(d)),t.length<=e))return t;var h="";if(d.host&&(h+=d.host),h.length>=r)return d.host.length==e?(d.host.substr(0,e-o)+n).substr(0,r+i):l(h,r).substr(0,r+i);var Z="";if(d.path&&(Z+="/"+d.path),d.query&&(Z+="?"+d.query),Z)if((h+Z).length>=r){if((h+Z).length==e)return(h+Z).substr(0,e);var b=r-h.length;return(h+l(Z,b)).substr(0,r+i)}else h+=Z;if(d.fragment){var u="#"+d.fragment;if((h+u).length>=r){if((h+u).length==e)return(h+u).substr(0,e);var F=r-h.length;return(h+l(u,F)).substr(0,r+i)}else h+=u}if(d.scheme&&d.host){var U=d.scheme+"://";if((h+U).length0&&(G=h.substr(-1*Math.floor(r/2))),(h.substr(0,Math.ceil(r/2))+n+G).substr(0,r+i)}var hQi=R(W());function ZSt(t,e,n){if(t.length<=e)return t;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var a=e-o,s="";return a>0&&(s=t.substr(-1*Math.floor(a/2))),(t.substr(0,Math.ceil(a/2))+n+s).substr(0,a+i)}var ZQi=R(W());function VSt(t,e,n){return cSt(t,e,n)}var bSt=function(){function t(e){e===void 0&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return t.prototype.build=function(e){return new Zv({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},t.prototype.createAttrs=function(e){var n={href:e.getAnchorHref()},i=this.createCssClass(e);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=0;b--){var u=m[b];switch(u.state){case 11:y(u,Z);break;case 12:Y(u,Z);break;case 0:G(u,Z);break;case 1:A(u,Z);break;case 2:T(u,Z);break;case 3:g(u,Z);break;case 4:C(u,Z);break;case 5:Q(u,Z);break;case 6:J(u,Z);break;case 7:M(u,Z);break;case 13:V(u,Z);break;case 14:E(u,Z);break;case 8:I(u,Z);break;case 9:B(u,Z);break;case 10:X(u,Z);break;case 15:_(u,Z);break;case 16:P(u,Z);break;case 17:w(u,Z);break;case 18:z(u,Z);break;case 19:H(u,Z);break;case 20:nt(u,Z);break;case 21:$(u,Z);break;case 22:dt(u,Z);break;case 23:q(u,Z);break;case 24:at(u,Z);break;case 25:st(u,Z);break;case 26:Et(u,Z);break;case 27:Qt(u,Z);break;case 28:Wt(u,Z);break;case 29:Nt(u,Z);break;case 30:kt(u,Z);break;case 31:Mt(u,Z);break;case 32:ie(u,Z);break;case 33:oe(u,Z);break;case 34:He(u,Z);break;case 35:rn(u,Z);break;case 36:de(u,Z);break;case 37:qt(u,Z);break;case 38:zt(u,Z);break;case 39:ke(u,Z);break;case 40:ue(u,Z);break;case 41:We(u,Z);break;default:XF(u.state)}}}for(var F=m.length-1;F>=0;F--)m.forEach(function(Ct){return un(Ct)});return r;function U(Ct){if(Ct==="#")m.push(GWe(h,28));else if(Ct==="@")m.push(AWe(h,30));else if(Ct==="/")m.push(Ant(h,11));else if(Ct==="+")m.push(Tnt(h,37));else if(Ct==="(")m.push(Tnt(h,32));else{if(Ir.test(Ct)&&(m.push(Tnt(h,38)),m.push(FWe(h,13))),gSt(Ct)){var _t=Ct.toLowerCase()==="m"?15:22;m.push(UWe(h,_t))}Vv(Ct)&&m.push(Gnt(h,0)),HZ.test(Ct)&&m.push(Ant(h,5))}}function G(Ct,_t){_t===":"?Ct.state=2:_t==="-"?Ct.state=1:bnt(_t)||cs(m,Ct)}function A(Ct,_t){_t==="-"||(_t==="/"?(cs(m,Ct),m.push(Ant(h,11))):bnt(_t)?Ct.state=0:cs(m,Ct))}function T(Ct,_t){_t==="/"?Ct.state=3:_t==="."?cs(m,Ct):$0(_t)?(Ct.state=5,Vv(_t)&&m.push(Gnt(h,0))):cs(m,Ct)}function g(Ct,_t){_t==="/"?Ct.state=4:Rnt(_t)?(Ct.state=10,Ct.acceptStateReached=!0):un(Ct)}function C(Ct,_t){_t==="/"?Ct.state=10:$0(_t)?(Ct.state=5,Ct.acceptStateReached=!0):cs(m,Ct)}function y(Ct,_t){_t==="/"?Ct.state=12:cs(m,Ct)}function Y(Ct,_t){$0(_t)?Ct.state=5:cs(m,Ct)}function Q(Ct,_t){_t==="."?Ct.state=7:_t==="-"?Ct.state=6:_t===":"?Ct.state=8:Rv(_t)?Ct.state=10:bv(_t)||un(Ct)}function J(Ct,_t){_t==="-"||(_t==="."?un(Ct):$0(_t)?Ct.state=5:un(Ct))}function M(Ct,_t){_t==="."?un(Ct):$0(_t)?(Ct.state=5,Ct.acceptStateReached=!0):un(Ct)}function V(Ct,_t){_t==="."?Ct.state=14:_t===":"?Ct.state=8:Ir.test(_t)||(Rv(_t)?Ct.state=10:HZ.test(_t)?cs(m,Ct):un(Ct))}function E(Ct,_t){Ir.test(_t)?(Ct.octetsEncountered++,Ct.octetsEncountered===4&&(Ct.acceptStateReached=!0),Ct.state=13):un(Ct)}function I(Ct,_t){Ir.test(_t)?Ct.state=9:un(Ct)}function B(Ct,_t){Ir.test(_t)||(Rv(_t)?Ct.state=10:un(Ct))}function X(Ct,_t){Rnt(_t)||un(Ct)}function _(Ct,_t){_t.toLowerCase()==="a"?Ct.state=16:dt(Ct,_t)}function P(Ct,_t){_t.toLowerCase()==="i"?Ct.state=17:dt(Ct,_t)}function w(Ct,_t){_t.toLowerCase()==="l"?Ct.state=18:dt(Ct,_t)}function z(Ct,_t){_t.toLowerCase()==="t"?Ct.state=19:dt(Ct,_t)}function H(Ct,_t){_t.toLowerCase()==="o"?Ct.state=20:dt(Ct,_t)}function nt(Ct,_t){_t.toLowerCase()===":"?Ct.state=21:dt(Ct,_t)}function $(Ct,_t){Wv(_t)?Ct.state=22:cs(m,Ct)}function dt(Ct,_t){_t==="."?Ct.state=23:_t==="@"?Ct.state=24:Wv(_t)?Ct.state=22:cs(m,Ct)}function q(Ct,_t){_t==="."?cs(m,Ct):_t==="@"?cs(m,Ct):Wv(_t)?Ct.state=22:cs(m,Ct)}function at(Ct,_t){$0(_t)?Ct.state=25:cs(m,Ct)}function st(Ct,_t){_t==="."?Ct.state=27:_t==="-"?Ct.state=26:bv(_t)||un(Ct)}function Et(Ct,_t){_t==="-"||_t==="."?un(Ct):bv(_t)?Ct.state=25:un(Ct)}function Qt(Ct,_t){_t==="."||_t==="-"?un(Ct):$0(_t)?(Ct.state=25,Ct.acceptStateReached=!0):un(Ct)}function Wt(Ct,_t){fnt(_t)?(Ct.state=29,Ct.acceptStateReached=!0):cs(m,Ct)}function Nt(Ct,_t){fnt(_t)||un(Ct)}function kt(Ct,_t){Fnt(_t)?(Ct.state=31,Ct.acceptStateReached=!0):cs(m,Ct)}function Mt(Ct,_t){Fnt(_t)||(HZ.test(_t)?cs(m,Ct):un(Ct))}function qt(Ct,_t){Ir.test(_t)?Ct.state=38:(cs(m,Ct),U(_t))}function ie(Ct,_t){Ir.test(_t)?Ct.state=33:cs(m,Ct),U(_t)}function oe(Ct,_t){Ir.test(_t)?Ct.state=34:cs(m,Ct)}function He(Ct,_t){Ir.test(_t)?Ct.state=35:cs(m,Ct)}function rn(Ct,_t){_t===")"?Ct.state=36:cs(m,Ct)}function de(Ct,_t){Ir.test(_t)?Ct.state=38:Unt(_t)?Ct.state=39:cs(m,Ct)}function zt(Ct,_t){Ct.acceptStateReached=!0,fv(_t)?Ct.state=40:_t==="#"?Ct.state=41:Ir.test(_t)||(_t==="("?Ct.state=32:Unt(_t)?Ct.state=39:(un(Ct),Vv(_t)&&m.push(Gnt(h,0))))}function ke(Ct,_t){Ir.test(_t)?Ct.state=38:_t==="("?Ct.state=32:(un(Ct),U(_t))}function ue(Ct,_t){fv(_t)||(_t==="#"?Ct.state=41:Ir.test(_t)?Ct.state=38:un(Ct))}function We(Ct,_t){fv(_t)?Ct.state=40:Ir.test(_t)?cs(m,Ct):un(Ct)}function un(Ct){if(cs(m,Ct),!!Ct.acceptStateReached){var _t=Ct.startIdx,Je=t.slice(Ct.startIdx,h);if(Je=fWe(Je),Ct.type==="url"){var xe=t.charAt(Ct.startIdx-1);if(xe==="@")return;var oo=Ct.matchType;if(oo==="scheme"){var ea=Vnt.exec(Je);if(ea&&(_t=_t+ea.index,Je=Je.slice(ea.index)),!USt(Je))return}else if(oo==="tld"){if(!GSt(Je))return}else if(oo==="ipV4"){if(!ASt(Je))return}else XF(oo);r.push(new TSt({tagBuilder:n,matchedText:Je,offset:_t,urlMatchType:oo,url:Je,protocolRelativeMatch:Je.slice(0,2)==="//",stripPrefix:i,stripTrailingSlash:o,decodePercentEncoding:a}))}else if(Ct.type==="email")ESt(Je)&&r.push(new CSt({tagBuilder:n,matchedText:Je,offset:_t,email:Je.replace(SSt,"")}));else if(Ct.type==="hashtag")ISt(Je)&&r.push(new ySt({tagBuilder:n,matchedText:Je,offset:_t,serviceName:s,hashtag:Je.slice(1)}));else if(Ct.type==="mention")BSt(Je,l)&&r.push(new kSt({tagBuilder:n,matchedText:Je,offset:_t,serviceName:l,mention:Je.slice(1)}));else if(Ct.type==="phone"){if(Je=Je.replace(/ +$/g,""),YSt(Je)){var gs=Je.replace(/[^0-9,;#]/g,"");r.push(new xSt({tagBuilder:n,matchedText:Je,offset:_t,number:gs,plusSign:Je.charAt(0)==="+"}))}}else XF(Ct)}}}var WWe=/[\(\{\[]/,XSt=/[\)\}\]]/,JSt={")":"(","}":"{","]":"["};function fWe(t){for(var e={"(":0,"{":0,"[":0},n=0;n=0;)if(a=t.charAt(o),XSt.test(a)){var s=JSt[a];if(e[s]<0)e[s]++,o--;else break}else if(FSt.test(a))o--;else break;return t.slice(0,o+1)}function Gnt(t,e){return{type:"url",startIdx:t,state:e,acceptStateReached:!1,matchType:"scheme"}}function Ant(t,e){return{type:"url",startIdx:t,state:e,acceptStateReached:!1,matchType:"tld"}}function FWe(t,e){return{type:"url",startIdx:t,state:e,acceptStateReached:!1,matchType:"ipV4",octetsEncountered:1}}function UWe(t,e){return{type:"email",startIdx:t,state:e,acceptStateReached:!1}}function GWe(t,e){return{type:"hashtag",startIdx:t,state:e,acceptStateReached:!1}}function AWe(t,e){return{type:"mention",startIdx:t,state:e,acceptStateReached:!1}}function Tnt(t,e){return{type:"phone",startIdx:t,state:e,acceptStateReached:!1}}var C2i=R(W());function MSt(t,e){for(var n=e.onOpenTag,i=e.onCloseTag,o=e.onText,a=e.onComment,s=e.onDoctype,l=new Fb,r=0,d=t.length,m=0,h=0,Z=l;r"?(Z=new Fb(Nr(Nr({},Z),{name:dt()})),nt()):!JF.test(at)&&!Ir.test(at)&&at!==":"&&z()}function G(at){at===">"?z():JF.test(at)?m=3:z()}function A(at){Hh.test(at)||(at==="/"?m=12:at===">"?nt():at==="<"?H():at==="="||uv.test(at)||mSt.test(at)?z():m=5)}function T(at){Hh.test(at)?m=6:at==="/"?m=12:at==="="?m=7:at===">"?nt():at==="<"?H():uv.test(at)&&z()}function g(at){Hh.test(at)||(at==="/"?m=12:at==="="?m=7:at===">"?nt():at==="<"?H():uv.test(at)?z():m=5)}function C(at){Hh.test(at)||(at==='"'?m=8:at==="'"?m=9:/[>=`]/.test(at)?z():at==="<"?H():m=10)}function y(at){at==='"'&&(m=11)}function Y(at){at==="'"&&(m=11)}function Q(at){Hh.test(at)?m=4:at===">"?nt():at==="<"&&H()}function J(at){Hh.test(at)?m=4:at==="/"?m=12:at===">"?nt():at==="<"?H():(m=4,q())}function M(at){at===">"?(Z=new Fb(Nr(Nr({},Z),{isClosing:!0})),nt()):m=4}function V(at){t.substr(r,2)==="--"?(r+=2,Z=new Fb(Nr(Nr({},Z),{type:"comment"})),m=14):t.substr(r,7).toUpperCase()==="DOCTYPE"?(r+=7,Z=new Fb(Nr(Nr({},Z),{type:"doctype"})),m=20):z()}function E(at){at==="-"?m=15:at===">"?z():m=16}function I(at){at==="-"?m=18:at===">"?z():m=16}function B(at){at==="-"&&(m=17)}function X(at){at==="-"?m=18:m=16}function _(at){at===">"?nt():at==="!"?m=19:at==="-"||(m=16)}function P(at){at==="-"?m=17:at===">"?nt():m=16}function w(at){at===">"?nt():at==="<"&&H()}function z(){m=0,Z=l}function H(){m=1,Z=new Fb({idx:r})}function nt(){var at=t.slice(h,Z.idx);at&&o(at,h),Z.type==="comment"?a(Z.idx):Z.type==="doctype"?s(Z.idx):(Z.isOpening&&n(Z.name,Z.idx),Z.isClosing&&i(Z.name,Z.idx)),z(),h=r+1}function $(){var at=t.slice(h,r);o(at,h),h=r+1}function dt(){var at=Z.idx+(Z.isClosing?2:1);return t.slice(at,r).toLowerCase()}function q(){r--}}var Fb=function(){function t(e){e===void 0&&(e={}),this.idx=e.idx!==void 0?e.idx:-1,this.type=e.type||"tag",this.name=e.name||"",this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing}return t}();var TWe=function(){function t(e){e===void 0&&(e={}),this.version=t.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=SWe(e.urls),this.email=Oh(e.email)?e.email:this.email,this.phone=Oh(e.phone)?e.phone:this.phone,this.hashtag=e.hashtag||this.hashtag,this.mention=e.mention||this.mention,this.newWindow=Oh(e.newWindow)?e.newWindow:this.newWindow,this.stripPrefix=gWe(e.stripPrefix),this.stripTrailingSlash=Oh(e.stripTrailingSlash)?e.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=Oh(e.decodePercentEncoding)?e.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=e.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&QSt.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&NSt.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=EWe(e.truncate),this.className=e.className||this.className,this.replaceFn=e.replaceFn||this.replaceFn,this.context=e.context||this}return t.link=function(e,n){var i=new t(n);return i.link(e)},t.parse=function(e,n){var i=new t(n);return i.parse(e)},t.prototype.parse=function(e){var n=this,i=["a","style","script"],o=0,a=[];return MSt(e,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,l){if(o===0){var r=/( | |<|<|>|>|"|"|')/gi,d=s.split(r),m=l;d.forEach(function(h,Z){if(Z%2===0){var b=n.parseText(h,m);a.push.apply(a,b)}m+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(s){},onDoctype:function(s){}}),a=this.compactMatches(a),a=this.removeUnwantedMatches(a),a},t.prototype.compactMatches=function(e){e.sort(function(r,d){return r.getOffset()-d.getOffset()});for(var n=0;na?n:n+1;e.splice(l,1);continue}if(e[n+1].getOffset()/g,">"));for(var n=this.parse(e),i=[],o=0,a=0,s=n.length;a{let i=new FileReader;i.addEventListener("load",function(){e(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(t)})}function Snt(t,e){let n=IL(t,"id");return n=c(n)?n:Si(),e.getOrCreateEntity(n)}function gnt(t){let e=PSt(t,"lon"),n=PSt(t,"lat"),i=EL(t,"ele",va.gpx);return p.fromDegrees(e,n,i)}function PSt(t,e){if(!c(t))return;let n=t.getAttribute(e);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function IL(t,e){if(!c(t))return;let n=t.getAttribute(e);return n!==null?n:void 0}function LF(t,e,n){if(!c(t))return;let i=t.childNodes,o=i.length;for(let a=0;a${h.text}: ${h.value}

`)}if(!c(i)||i==="")return;i=CWe.link(i),CL.innerHTML=i;let s=CL.querySelectorAll("a");for(n=0;n',d+=`${CL.innerHTML}`,CL.innerHTML="",d}function tgt(t,e,n,i){let o=gnt(e),a=Snt(e,n);a.position=o;let s=c(i.waypointImage)?i.waypointImage:t._pinBuilder.fromMakiIconId("marker",v.RED,Uv);a.billboard=qSt(s);let l=Pm(e,"name",va.gpx);a.name=l,a.label=yWe(),a.label.text=l,a.description=Cnt(e,a),i.clampToGround&&(a.billboard.heightReference=Ge.CLAMP_TO_GROUND,a.label.heightReference=Ge.CLAMP_TO_GROUND)}function BWe(t,e,n,i){let o=Snt(e,n);o.description=Cnt(e,o);let a=Ent(e,"rtept",va.gpx),s=new Array(a.length);for(let l=0;l0?(l=l.concat(r.times),m.addSamples(l,s),d=d&&!0):d=!1;if(d){let h=c(i.waypointImage)?i.waypointImage:t._pinBuilder.fromMakiIconId("marker",v.RED,Uv);o.billboard=qSt(h),o.position=m,i.clampToGround&&(o.billboard.heightReference=Ge.CLAMP_TO_GROUND),o.availability=new ys,o.availability.addInterval(new ai({start:l[0],stop:l[l.length-1]}))}o.polyline=$St(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function kWe(t){let e={positions:[],times:[]},n=Ent(t,"trkpt",va.gpx),i;for(let o=0;onew Array(e).fill(n,0,e)))}function Iv(t){return t.reduce((e,n)=>e.concat(Array.isArray(n)?Iv(n):n),[])}var ngt=[0,1,2,3].concat(...Cv([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function ks(){let t=this;function e(o){let a=t.dyn_tree,s=t.stat_desc.static_tree,l=t.stat_desc.extra_bits,r=t.stat_desc.extra_base,d=t.stat_desc.max_length,m,h,Z,b,u,F,U=0;for(b=0;b<=15;b++)o.bl_count[b]=0;for(a[o.heap[o.heap_max]*2+1]=0,m=o.heap_max+1;m<573;m++)h=o.heap[m],b=a[a[h*2+1]*2+1]+1,b>d&&(b=d,U++),a[h*2+1]=b,!(h>t.max_code)&&(o.bl_count[b]++,u=0,h>=r&&(u=l[h-r]),F=a[h*2],o.opt_len+=F*(b+u),s&&(o.static_len+=F*(s[h*2+1]+u)));if(U!==0){do{for(b=d-1;o.bl_count[b]===0;)b--;o.bl_count[b]--,o.bl_count[b+1]+=2,o.bl_count[d]--,U-=2}while(U>0);for(b=d;b!==0;b--)for(h=o.bl_count[b];h!==0;)Z=o.heap[--m],!(Z>t.max_code)&&(a[Z*2+1]!=b&&(o.opt_len+=(b-a[Z*2+1])*a[Z*2],a[Z*2+1]=b),h--)}}function n(o,a){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--a>0);return s>>>1}function i(o,a,s){let l=[],r=0,d,m,h;for(d=1;d<=15;d++)l[d]=r=r+s[d-1]<<1;for(m=0;m<=a;m++)h=o[m*2+1],h!==0&&(o[m*2]=n(l[h]++,h))}t.build_tree=function(o){let a=t.dyn_tree,s=t.stat_desc.static_tree,l=t.stat_desc.elems,r,d,m=-1,h;for(o.heap_len=0,o.heap_max=573,r=0;r=1;r--)o.pqdownheap(a,r);h=l;do r=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(a,1),d=o.heap[1],o.heap[--o.heap_max]=r,o.heap[--o.heap_max]=d,a[h*2]=a[r*2]+a[d*2],o.depth[h]=Math.max(o.depth[r],o.depth[d])+1,a[r*2+1]=a[d*2+1]=h,o.heap[1]=h++,o.pqdownheap(a,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],e(o),i(a,t.max_code,o.bl_count)}}ks._length_code=[0,1,2,3,4,5,6,7].concat(...Cv([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));ks.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];ks.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];ks.d_code=function(t){return t<256?ngt[t]:ngt[256+(t>>>7)]};ks.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];ks.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];ks.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];ks.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function fd(t,e,n,i,o){let a=this;a.static_tree=t,a.extra_bits=e,a.extra_base=n,a.elems=i,a.max_length=o}var HWe=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],wWe=Cv([[144,8],[112,9],[24,7],[8,8]]);fd.static_ltree=Iv(HWe.map((t,e)=>[t,wWe[e]]));var PWe=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],vWe=Cv([[30,5]]);fd.static_dtree=Iv(PWe.map((t,e)=>[t,vWe[e]]));fd.static_l_desc=new fd(fd.static_ltree,ks.extra_lbits,257,286,15);fd.static_d_desc=new fd(fd.static_dtree,ks.extra_dbits,0,30,15);fd.static_bl_desc=new fd(null,ks.extra_blbits,0,19,7);var KWe=9,zWe=8;function Ub(t,e,n,i,o){let a=this;a.good_length=t,a.max_lazy=e,a.nice_length=n,a.max_chain=i,a.func=o}var ogt=0,gv=1,yT=2,wZ=[new Ub(0,0,0,0,ogt),new Ub(4,4,8,4,gv),new Ub(4,5,16,8,gv),new Ub(4,6,32,32,gv),new Ub(4,4,16,16,yT),new Ub(8,16,32,32,yT),new Ub(8,16,128,128,yT),new Ub(8,32,128,256,yT),new Ub(32,128,258,1024,yT),new Ub(32,258,258,4096,yT)],Gv=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Vu=0,Av=1,BL=2,Tv=3,jWe=32,Int=42,Sv=113,QL=666,Nnt=8,qWe=0,ynt=1,$We=2,zs=3,Ev=258,wh=Ev+zs+1;function igt(t,e,n,i){let o=t[e*2],a=t[n*2];return o=3&&P[ks.bl_order[ae]*2+1]===0;ae--);return t.opt_len+=3*(ae+1)+5+5+4,ae}function Mt(ae){t.pending_buf[t.pending++]=ae}function qt(ae){Mt(ae&255),Mt(ae>>>8&255)}function ie(ae){Mt(ae>>8&255),Mt(ae&255&255)}function oe(ae,fe){let ge,Ze=fe;st>16-Ze?(ge=ae,at|=ge<>>16-st,st+=Ze-16):(at|=ae<=8&&(Mt(at&255),at>>>=8,st-=8)}function ke(){oe(ynt<<1,3),He(256,fd.static_ltree),zt(),1+q+10-st<9&&(oe(ynt<<1,3),He(256,fd.static_ltree),zt()),q=7}function ue(ae,fe){let ge,Ze,Ke;if(t.dist_buf[$]=ae,t.lc_buf[$]=fe&255,$++,ae===0?X[fe*2]++:(dt++,ae--,X[(ks._length_code[fe]+256+1)*2]++,_[ks.d_code(ae)*2]++),!($&8191)&&V>2){for(ge=$*8,Ze=C-G,Ke=0;Ke<30;Ke++)ge+=_[Ke*2]*(5+ks.extra_dbits[Ke]);if(ge>>>=3,dt8?qt(at):st>0&&Mt(at&255),at=0,st=0}function Ct(ae,fe,ge){un(),q=8,ge&&(qt(fe),qt(~fe)),t.pending_buf.set(r.subarray(ae,ae+fe),t.pending),t.pending+=fe}function _t(ae,fe,ge){oe((qWe<<1)+(ge?1:0),3),Ct(ae,fe,!0)}function Je(ae,fe,ge){let Ze,Ke,An=0;V>0?(w.build_tree(t),z.build_tree(t),An=kt(),Ze=t.opt_len+3+7>>>3,Ke=t.static_len+3+7>>>3,Ke<=Ze&&(Ze=Ke)):Ze=Ke=fe+5,fe+4<=Ze&&ae!=-1?_t(ae,fe,ge):Ke==Ze?(oe((ynt<<1)+(ge?1:0),3),We(fd.static_ltree,fd.static_dtree)):(oe(($We<<1)+(ge?1:0),3),de(w.max_code+1,z.max_code+1,An+1),We(X,_)),Qt(),ge&&un()}function xe(ae){Je(G>=0?G:-1,C-G,ae),G=C,e.flush_pending()}function oo(){let ae,fe,ge,Ze;do{if(Ze=d-Y-C,Ze===0&&C===0&&Y===0)Ze=a;else if(Ze==-1)Ze--;else if(C>=a+a-wh){r.set(r.subarray(a,a+a),0),y-=a,C-=a,G-=a,ae=b,ge=ae;do fe=h[--ge]&65535,h[ge]=fe>=a?fe-a:0;while(--ae!==0);ae=a,ge=ae;do fe=m[--ge]&65535,m[ge]=fe>=a?fe-a:0;while(--ae!==0);Ze+=a}if(e.avail_in===0)return;ae=e.read_buf(r,C+Y,Ze),Y+=ae,Y>=zs&&(Z=r[C]&255,Z=(Z<i-5&&(fe=i-5);;){if(Y<=1){if(oo(),Y===0&&ae==0)return Vu;if(Y===0)break}if(C+=Y,Y=0,ge=G+fe,(C===0||C>=ge)&&(Y=C-ge,C=ge,xe(!1),e.avail_out===0)||C-G>=a-wh&&(xe(!1),e.avail_out===0))return Vu}return xe(ae==4),e.avail_out===0?ae==4?BL:Vu:ae==4?Tv:Av}function gs(ae){let fe=J,ge=C,Ze,Ke,An=Q,si=C>a-wh?C-(a-wh):0,da=B,_a=l,bl=C+Ev,na=r[ge+An-1],Go=r[ge+An];Q>=I&&(fe>>=2),da>Y&&(da=Y);do if(Ze=ae,!(r[Ze+An]!=Go||r[Ze+An-1]!=na||r[Ze]!=r[ge]||r[++Ze]!=r[ge+1])){ge+=2,Ze++;do;while(r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&r[++ge]==r[++Ze]&&geAn){if(y=ae,An=Ke,Ke>=da)break;na=r[ge+An-1],Go=r[ge+An]}}while((ae=m[ae&_a]&65535)>si&&--fe!==0);return An<=Y?An:Y}function is(ae){let fe=0,ge;for(;;){if(Y=zs&&(Z=(Z<=zs)if(ge=ue(C-y,A-zs),Y-=A,A<=M&&Y>=zs){A--;do C++,Z=(Z<=zs&&(Z=(Z<4096)&&(A=zs-1)),Q>=zs&&A<=Q){Ze=C+Y-zs,ge=ue(C-1-T,Q-zs),Y-=Q-1,Q-=2;do++C<=Ze&&(Z=(Z<KWe||Ze!=Nnt||ge<9||ge>15||fe<0||fe>9||An<0||An>2?-2:(ae.dstate=t,s=ge,a=1<9||ge<0||ge>2?-2:(wZ[V].func!=wZ[fe].func&&ae.total_in!==0&&(Ze=ae.deflate(1)),V!=fe&&(V=fe,M=wZ[V].max_lazy,I=wZ[V].good_length,B=wZ[V].nice_length,J=wZ[V].max_chain),E=ge,Ze)},t.deflateSetDictionary=function(ae,fe,ge){let Ze=ge,Ke,An=0;if(!fe||n!=Int)return-2;if(Zea-wh&&(Ze=a-wh,An=ge-Ze),r.set(fe.subarray(An,An+Ze),0),C=Ze,G=Ze,Z=r[0]&255,Z=(Z<4||fe<0)return-2;if(!ae.next_out||!ae.next_in&&ae.avail_in!==0||n==QL&&fe!=4)return ae.msg=Gv[4],-2;if(ae.avail_out===0)return ae.msg=Gv[7],-5;if(e=ae,An=o,o=fe,n==Int&&(Ze=Nnt+(s-8<<4)<<8,Ke=(V-1&255)>>1,Ke>3&&(Ke=3),Ze|=Ke<<6,C!==0&&(Ze|=jWe),Ze+=31-Ze%31,n=Sv,ie(Ze)),t.pending!==0){if(e.flush_pending(),e.avail_out===0)return o=-1,0}else if(e.avail_in===0&&fe<=An&&fe!=4)return e.msg=Gv[7],-5;if(n==QL&&e.avail_in!==0)return ae.msg=Gv[7],-5;if(e.avail_in!==0||Y!==0||fe!=0&&n!=QL){switch(si=-1,wZ[V].func){case ogt:si=ea(fe);break;case gv:si=is(fe);break;case yT:si=ja(fe);break;default:}if((si==BL||si==Tv)&&(n=QL),si==Vu||si==BL)return e.avail_out===0&&(o=-1),0;if(si==Av){if(fe==1)ke();else if(_t(0,0,!1),fe==3)for(ge=0;gen&&(o=n),o===0?0:(i.avail_in-=o,t.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),e),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let t=this,e=t.dstate.pending;e>t.avail_out&&(e=t.avail_out),e!==0&&(t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out,t.dstate.pending_out+e),t.next_out_index),t.next_out_index+=e,t.dstate.pending_out+=e,t.total_out+=e,t.avail_out-=e,t.dstate.pending-=e,t.dstate.pending===0&&(t.dstate.pending_out=0))}};function sgt(t){let e=this,n=new agt,i=efe(t&&t.chunkSize?t.chunkSize:64*1024),o=0,a=new Uint8Array(i),s=t?t.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=a,e.append=function(l,r){let d,m,h=0,Z=0,b=0,u=[];if(l.length){n.next_in_index=0,n.next_in=l,n.avail_in=l.length;do{if(n.next_out_index=0,n.avail_out=i,d=n.deflate(o),d!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?u.push(new Uint8Array(a)):u.push(a.subarray(0,n.next_out_index))),b+=n.next_out_index,r&&n.next_in_index>0&&n.next_in_index!=h&&(r(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(m=new Uint8Array(b),u.forEach(function(F){m.set(F,Z),Z+=F.length})):m=u[0]?new Uint8Array(u[0]):new Uint8Array,m}},e.flush=function(){let l,r,d=0,m=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,l=n.deflate(4),l!=1&&l!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(a.slice(0,n.next_out_index)),m+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),r=new Uint8Array(m),h.forEach(function(Z){r.set(Z,d),d+=Z.length}),r}}function efe(t){return t+5*(Math.floor(t/16383)+1)}var Pki=R(W(),1);var Ph=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Sgt=1440,nfe=0,ife=4,ofe=9,afe=5,sfe=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],lfe=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],rfe=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],dfe=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],cfe=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],mfe=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],MF=15;function Ynt(){let t=this,e,n,i,o,a,s;function l(d,m,h,Z,b,u,F,U,G,A,T){let g,C,y,Y,Q,J,M,V,E,I,B,X,_,P,w;I=0,Q=h;do i[d[m+I]]++,I++,Q--;while(Q!==0);if(i[0]==h)return F[0]=-1,U[0]=0,0;for(V=U[0],J=1;J<=MF&&i[J]===0;J++);for(M=J,VQ&&(V=Q),U[0]=V,P=1<X+V;){if(Y++,X+=V,w=y-X,w=w>V?V:w,(C=1<<(J=M-X))>g+1&&(C-=g+1,_=M,JSgt)return-3;a[Y]=B=A[0],A[0]+=w,Y!==0?(s[Y]=Q,o[0]=J,o[1]=V,J=Q>>>X-V,o[2]=B-a[Y-1]-J,G.set(o,(a[Y-1]+J)*3)):F[0]=B}for(o[1]=M-X,I>=h?o[0]=192:T[I]>>X;J>>=1)Q^=J;for(Q^=J,E=(1<257?(A==-3?G.msg="oversubscribed distance tree":A==-5?(G.msg="incomplete distance tree",A=-3):A!=-4&&(G.msg="empty distance tree with lengths",A=-3),A):0)}}Ynt.inflate_trees_fixed=function(t,e,n,i){return t[0]=ofe,e[0]=afe,n[0]=sfe,i[0]=lfe,0};var Nv=0,lgt=1,rgt=2,dgt=3,cgt=4,mgt=5,hgt=6,Bnt=7,pgt=8,yv=9;function hfe(){let t=this,e,n=0,i,o=0,a=0,s=0,l=0,r=0,d=0,m=0,h,Z=0,b,u=0;function F(U,G,A,T,g,C,y,Y){let Q,J,M,V,E,I,B,X,_,P,w,z,H,nt,$,dt;B=Y.next_in_index,X=Y.avail_in,E=y.bitb,I=y.bitk,_=y.write,P=_>=J[dt+1],I-=J[dt+1],y.win[_++]=J[dt+2],P--;continue}do{if(E>>=J[dt+1],I-=J[dt+1],V&16){for(V&=15,H=J[dt+2]+(E&Ph[V]),E>>=V,I-=V;I<15;)X--,E|=(Y.read_byte(B++)&255)<>=J[dt+1],I-=J[dt+1],V&16){for(V&=15;I>=V,I-=V,P-=H,_>=nt)$=_-nt,_-$>0&&2>_-$?(y.win[_++]=y.win[$++],y.win[_++]=y.win[$++],H-=2):(y.win.set(y.win.subarray($,$+2),_),_+=2,$+=2,H-=2);else{$=_-nt;do $+=y.end;while($<0);if(V=y.end-$,H>V){if(H-=V,_-$>0&&V>_-$)do y.win[_++]=y.win[$++];while(--V!==0);else y.win.set(y.win.subarray($,$+V),_),_+=V,$+=V,V=0;$=0}}if(_-$>0&&H>_-$)do y.win[_++]=y.win[$++];while(--H!==0);else y.win.set(y.win.subarray($,$+H),_),_+=H,$+=H,H=0;break}else if(!(V&64))Q+=J[dt+2],Q+=E&Ph[V],dt=(M+Q)*3,V=J[dt];else return Y.msg="invalid distance code",H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,-3;while(!0);break}if(V&64)return V&32?(H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,1):(Y.msg="invalid literal/length code",H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,-3);if(Q+=J[dt+2],Q+=E&Ph[V],dt=(M+Q)*3,(V=J[dt])===0){E>>=J[dt+1],I-=J[dt+1],y.win[_++]=J[dt+2],P--;break}}while(!0)}while(P>=258&&X>=10);return H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,0}t.init=function(U,G,A,T,g,C){e=Nv,d=U,m=G,h=A,Z=T,b=g,u=C,i=null},t.proc=function(U,G,A){let T,g,C,y=0,Y=0,Q=0,J,M,V,E;for(Q=G.next_in_index,J=G.avail_in,y=U.bitb,Y=U.bitk,M=U.write,V=M=258&&J>=10&&(U.bitb=y,U.bitk=Y,G.avail_in=J,G.total_in+=Q-G.next_in_index,G.next_in_index=Q,U.write=M,A=F(d,m,h,Z,b,u,U,G),Q=G.next_in_index,J=G.avail_in,y=U.bitb,Y=U.bitk,M=U.write,V=M>>=i[g+1],Y-=i[g+1],C=i[g],C===0){s=i[g+2],e=hgt;break}if(C&16){l=C&15,n=i[g+2],e=rgt;break}if(!(C&64)){a=C,o=g/3+i[g+2];break}if(C&32){e=Bnt;break}return e=yv,G.msg="invalid literal/length code",A=-3,U.bitb=y,U.bitk=Y,G.avail_in=J,G.total_in+=Q-G.next_in_index,G.next_in_index=Q,U.write=M,U.inflate_flush(G,A);case rgt:for(T=l;Y>=T,Y-=T,a=m,i=b,o=u,e=dgt;case dgt:for(T=a;Y>=i[g+1],Y-=i[g+1],C=i[g],C&16){l=C&15,r=i[g+2],e=cgt;break}if(!(C&64)){a=C,o=g/3+i[g+2];break}return e=yv,G.msg="invalid distance code",A=-3,U.bitb=y,U.bitk=Y,G.avail_in=J,G.total_in+=Q-G.next_in_index,G.next_in_index=Q,U.write=M,U.inflate_flush(G,A);case cgt:for(T=l;Y>=T,Y-=T,e=mgt;case mgt:for(E=M-r;E<0;)E+=U.end;for(;n!==0;){if(V===0&&(M==U.end&&U.read!==0&&(M=0,V=M7&&(Y-=8,J++,Q--),U.write=M,A=U.inflate_flush(G,A),M=U.write,V=MF.avail_out&&(G=F.avail_out),G!==0&&U==-5&&(U=0),F.avail_out-=G,F.total_out+=G,F.next_out.set(n.win.subarray(T,T+G),A),A+=G,T+=G,T==n.end&&(T=0,n.write==n.end&&(n.write=0),G=n.write-T,G>F.avail_out&&(G=F.avail_out),G!==0&&U==-5&&(U=0),F.avail_out-=G,F.total_out+=G,F.next_out.set(n.win.subarray(T,T+G),A),A+=G,T+=G),F.next_out_index=A,n.read=T,U},n.proc=function(F,U){let G,A,T,g,C,y,Y,Q;for(g=F.next_in_index,C=F.avail_in,A=n.bitb,T=n.bitk,y=n.write,Y=y>>1){case 0:A>>>=3,T-=3,G=T&7,A>>>=G,T-=G,i=Qnt;break;case 1:J=[],M=[],V=[[]],E=[[]],Ynt.inflate_trees_fixed(J,M,V,E),m.init(J[0],M[0],V[0],0,E[0],0),A>>>=3,T-=3,i=Bv;break;case 2:A>>>=3,T-=3,i=Vgt;break;case 3:return A>>>=3,T-=3,i=BT,F.msg="invalid block type",U=-3,n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U)}break;case Qnt:for(;T<32;){if(C!==0)U=0;else return n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);C--,A|=(F.read_byte(g++)&255)<>>16&65535)!=(A&65535))return i=BT,F.msg="invalid stored block lengths",U=-3,n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);o=A&65535,A=T=0,i=o!==0?Zgt:h!==0?Qv:yI;break;case Zgt:if(C===0||Y===0&&(y==n.end&&n.read!==0&&(y=0,Y=yC&&(G=C),G>Y&&(G=Y),n.win.set(F.read_buf(g,G),y),g+=G,C-=G,y+=G,Y-=G,(o-=G)!==0)break;i=h!==0?Qv:yI;break;case Vgt:for(;T<14;){if(C!==0)U=0;else return n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);C--,A|=(F.read_byte(g++)&255)<29||(G>>5&31)>29)return i=BT,F.msg="too many length or distance symbols",U=-3,n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);if(G=258+(G&31)+(G>>5&31),!l||l.length>>=14,T-=14,s=0,i=bgt;case bgt:for(;s<4+(a>>>10);){for(;T<3;){if(C!==0)U=0;else return n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);C--,A|=(F.read_byte(g++)&255)<>>=3,T-=3}for(;s<19;)l[ugt[s++]]=0;if(r[0]=7,G=u.inflate_trees_bits(l,r,d,Z,F),G!=0)return U=G,U==-3&&(l=null,i=BT),n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);s=0,i=Rgt;case Rgt:for(;G=a,!(s>=258+(G&31)+(G>>5&31));){let P,w;for(G=r[0];T>>=G,T-=G,l[s++]=w;else{for(Q=w==18?7:w-14,P=w==18?11:3;T>>=G,T-=G,P+=A&Ph[Q],A>>>=Q,T-=Q,Q=s,G=a,Q+P>258+(G&31)+(G>>5&31)||w==16&&Q<1)return l=null,i=BT,F.msg="invalid bit length repeat",U=-3,n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);w=w==16?l[Q-1]:0;do l[Q++]=w;while(--P!==0);s=Q}}if(d[0]=-1,I=[],B=[],X=[],_=[],I[0]=9,B[0]=6,G=a,G=u.inflate_trees_dynamic(257+(G&31),1+(G>>5&31),l,I,B,X,_,Z,F),G!=0)return G==-3&&(l=null,i=BT),U=G,n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);m.init(I[0],B[0],Z,X[0],Z,_[0]),i=Bv;case Bv:if(n.bitb=A,n.bitk=T,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,(U=m.proc(n,F,U))!=1)return n.inflate_flush(F,U);if(U=0,m.free(F),g=F.next_in_index,C=F.avail_in,A=n.bitb,T=n.bitk,y=n.write,Y=y15?(t.inflateEnd(n),-2):(t.wbits=i,n.istate.blocks=new pfe(n,1<>4)+8>s.wbits){s.mode=_F,n.msg="invalid win size",s.marker=5;break}s.mode=fgt;case fgt:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,a=n.read_byte(n.next_in_index++)&255,((s.method<<8)+a)%31!==0){s.mode=_F,n.msg="incorrect header check",s.marker=5;break}if(!(a&ufe)){s.mode=kL;break}s.mode=Fgt;case Fgt:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=Ugt;case Ugt:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=Ggt;case Ggt:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Agt;case Agt:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=knt,2);case knt:return s.mode=_F,n.msg="need dictionary",s.marker=0,-2;case kL:if(o=s.blocks.proc(n,o),o==-3){s.mode=_F,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Tgt;case Tgt:return n.avail_in=0,1;case _F:return-3;default:return-2}},t.inflateSetDictionary=function(n,i,o){let a=0,s=o;if(!n||!n.istate||n.istate.mode!=knt)return-2;let l=n.istate;return s>=1<0&&n.next_in_index!=Z&&(r(n.next_in_index),Z=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return d.length>1?(h=new Uint8Array(u),d.forEach(function(F){h.set(F,b),b+=F.length})):h=d[0]?new Uint8Array(d[0]):new Uint8Array,h}},e.flush=function(){n.inflateEnd()}}var nYi=R(W(),1);var Kki=R(W(),1);var BI="/",xnt=new Date(2107,11,31),Xnt=new Date(1980,0,1),Ka=void 0,vh="undefined",tW="function";var jki=R(W(),1);var YL=class{constructor(e){return class extends TransformStream{constructor(n,i){let o=new e(i);super({transform(a,s){s.enqueue(o.append(a))},flush(a){let s=o.flush();s&&a.enqueue(s)}})}}}};var Wfe=64,Cgt=2;try{typeof navigator!=vh&&navigator.hardwareConcurrency&&(Cgt=navigator.hardwareConcurrency)}catch{}var ffe={chunkSize:512*1024,maxWorkers:Cgt,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:Ka,CompressionStreamNative:typeof CompressionStream!=vh&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=vh&&DecompressionStream},OF=Object.assign({},ffe);function xL(){return OF}function kv(t){return Math.max(t.chunkSize,Wfe)}function QI(t){let{baseURL:e,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:a,useWebWorkers:s,Deflate:l,Inflate:r,CompressionStream:d,DecompressionStream:m,workerScripts:h}=t;if(DF("baseURL",e),DF("chunkSize",n),DF("maxWorkers",i),DF("terminateWorkerTimeout",o),DF("useCompressionStream",a),DF("useWebWorkers",s),l&&(OF.CompressionStream=new YL(l)),r&&(OF.DecompressionStream=new YL(r)),DF("CompressionStream",d),DF("DecompressionStream",m),h!==Ka){let{deflate:Z,inflate:b}=h;if((Z||b)&&(OF.workerScripts||(OF.workerScripts={})),Z){if(!Array.isArray(Z))throw new Error("workerScripts.deflate must be an array");OF.workerScripts.deflate=Z}if(b){if(!Array.isArray(b))throw new Error("workerScripts.inflate must be an array");OF.workerScripts.inflate=b}}}function DF(t,e){e!==Ka&&(OF[t]=e)}var oYi=R(W(),1);var zYi=R(W(),1);var MYi=R(W(),1);var XYi=R(W(),1);var dYi=R(W(),1);var sYi=R(W(),1),Igt=[];for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e&1?e=e>>>1^3988292384:e=e>>>1;Igt[t]=e}var eW=class{constructor(e){this.crc=e||-1}append(e){let n=this.crc|0;for(let i=0,o=e.length|0;i>>8^Igt[(n^e[i])&255];this.crc=n}get(){return~this.crc}};var XL=class extends TransformStream{constructor(){let e,n=new eW;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),e.value=i}}),e=this}};var EYi=R(W(),1);var hYi=R(W(),1);function Yv(t){if(typeof TextEncoder==vh){t=unescape(encodeURIComponent(t));let e=new Uint8Array(t.length);for(let n=0;n0&&e&&(t[n-1]=Kc.partial(e,t[n-1]&2147483648>>e-1,1)),t},partial(t,e,n){return t===32?e:(n?e|0:e<<32-t)+t*1099511627776},getPartial(t){return Math.round(t/1099511627776)||32},_shiftRight(t,e,n,i){for(i===void 0&&(i=[]);e>=32;e-=32)i.push(n),n=0;if(e===0)return i.concat(t);for(let s=0;s>>e),n=t[s]<<32-e;let o=t.length?t[t.length-1]:0,a=Kc.getPartial(o);return i.push(Kc.partial(e+a&31,e+a>32?n:i.pop(),1)),i}},JL={bytes:{fromBits(t){let n=Kc.bitLength(t)/8,i=new Uint8Array(n),o;for(let a=0;a>>24,o<<=8;return i},toBits(t){let e=[],n,i=0;for(n=0;n9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let a=new Uint32Array(n),s=0;for(let l=e.blockSize+i-(e.blockSize+i&e.blockSize-1);l<=o;l+=e.blockSize)e._block(a.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),e}finalize(){let t=this,e=t._buffer,n=t._h;e=Kc.concat(e,[Kc.partial(1,1)]);for(let i=e.length+2;i&15;i++)e.push(0);for(e.push(Math.floor(t._length/4294967296)),e.push(t._length|0);e.length;)t._block(e.splice(0,16));return t.reset(),n}_f(t,e,n,i){if(t<=19)return e&n|~e&i;if(t<=39)return e^n^i;if(t<=59)return e&n|e&i|n&i;if(t<=79)return e^n^i}_S(t,e){return e<>>32-t}_block(t){let e=this,n=e._h,i=Array(80);for(let d=0;d<16;d++)i[d]=t[d];let o=n[0],a=n[1],s=n[2],l=n[3],r=n[4];for(let d=0;d<=79;d++){d>=16&&(i[d]=e._S(1,i[d-3]^i[d-8]^i[d-14]^i[d-16]));let m=e._S(5,o)+e._f(d,a,s,l)+r+i[d]+e._key[Math.floor(d/20)]|0;r=l,l=s,s=e._S(30,a),a=o,o=m}n[0]=n[0]+o|0,n[1]=n[1]+a|0,n[2]=n[2]+s|0,n[3]=n[3]+l|0,n[4]=n[4]+r|0}};var Jnt={};Jnt.aes=class{constructor(t){let e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();let n=e._tables[0][4],i=e._tables[1],o=t.length,a,s,l,r=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(e._key=[s=t.slice(0),l=[]],a=o;a<4*o+28;a++){let d=s[a-1];(a%o===0||o===8&&a%o===4)&&(d=n[d>>>24]<<24^n[d>>16&255]<<16^n[d>>8&255]<<8^n[d&255],a%o===0&&(d=d<<8^d>>>24^r<<24,r=r<<1^(r>>7)*283)),s[a]=s[a-o]^d}for(let d=0;a;d++,a--){let m=s[d&3?a:a-4];a<=4||d<4?l[d]=m:l[d]=i[0][n[m>>>24]]^i[1][n[m>>16&255]]^i[2][n[m>>8&255]]^i[3][n[m&255]]}}encrypt(t){return this._crypt(t,0)}decrypt(t){return this._crypt(t,1)}_precompute(){let t=this._tables[0],e=this._tables[1],n=t[4],i=e[4],o=[],a=[],s,l,r,d;for(let m=0;m<256;m++)a[(o[m]=m<<1^(m>>7)*283)^m]=m;for(let m=s=0;!n[m];m^=l||1,s=a[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[m]=h,i[h]=m,d=o[r=o[l=o[m]]];let Z=d*16843009^r*65537^l*257^m*16843008,b=o[h]*257^h*16843008;for(let u=0;u<4;u++)t[u][m]=b=b<<24^b>>>8,e[u][h]=Z=Z<<24^Z>>>8}for(let m=0;m<5;m++)t[m]=t[m].slice(0),e[m]=e[m].slice(0)}_crypt(t,e){if(t.length!==4)throw new Error("invalid aes block size");let n=this._key[e],i=n.length/4-2,o=[0,0,0,0],a=this._tables[e],s=a[0],l=a[1],r=a[2],d=a[3],m=a[4],h=t[0]^n[0],Z=t[e?3:1]^n[1],b=t[2]^n[2],u=t[e?1:3]^n[3],F=4,U,G,A;for(let T=0;T>>24]^l[Z>>16&255]^r[b>>8&255]^d[u&255]^n[F],G=s[Z>>>24]^l[b>>16&255]^r[u>>8&255]^d[h&255]^n[F+1],A=s[b>>>24]^l[u>>16&255]^r[h>>8&255]^d[Z&255]^n[F+2],u=s[u>>>24]^l[h>>16&255]^r[Z>>8&255]^d[b&255]^n[F+3],F+=4,h=U,Z=G,b=A;for(let T=0;T<4;T++)o[e?3&-T:T]=m[h>>>24]<<24^m[Z>>16&255]<<16^m[b>>8&255]<<8^m[u&255]^n[F++],U=h,h=Z,Z=b,b=u,u=U;return o}};var ygt={getRandomValues(t){let e=new Uint32Array(t.buffer),n=i=>{let o=987654321,a=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&a,i=18e3*(i&65535)+(i>>16)&a,(((o<<16)+i&a)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i>24&255)===255){let e=t>>16&255,n=t>>8&255,i=t&255;e===255?(e=0,n===255?(n=0,i===255?i=0:++i):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=i}else t+=1<<24;return t}incCounter(t){(t[0]=this.incWord(t[0]))===0&&(t[1]=this.incWord(t[1]))}calculate(t,e,n){let i;if(!(i=e.length))return[];let o=Kc.bitLength(e);for(let a=0;a>5)+1<<2,a,s,l,r,d,m=new ArrayBuffer(o),h=new DataView(m),Z=0,b=Kc;for(e=JL.bytes.toBits(e),d=1;Z<(o||1);d++){for(a=s=t.encrypt(b.concat(e,[d])),l=1;lo&&(t=new n().update(t).finalize());for(let a=0;athis.resolveReady=s),password:Jgt(e,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,l){let r=this,{password:d,strength:m,resolveReady:h,ready:Z}=r;d?(await Nfe(r,m,d,bu(s,0,ML[m]+2)),s=bu(s,ML[m]+2),a?l.error(new Error(nW)):h()):await Z;let b=new Uint8Array(s.length-PF-(s.length-PF)%kI);l.enqueue(xgt(r,s,b,0,PF,!0))},async flush(s){let{signed:l,ctr:r,hmac:d,pending:m,ready:h}=this;if(d&&r){await h;let Z=bu(m,0,m.length-PF),b=bu(m,m.length-PF),u=new Uint8Array;if(Z.length){let F=DL(Gb,Z);d.update(F);let U=r.update(F);u=_L(Gb,U)}if(l){let F=bu(_L(Gb,d.digest()),0,PF);for(let U=0;Uthis.resolveReady=a),password:Jgt(e,n),strength:i-1,pending:new Uint8Array})},async transform(a,s){let l=this,{password:r,strength:d,resolveReady:m,ready:h}=l,Z=new Uint8Array;r?(Z=await yfe(l,d,r),m()):await h;let b=new Uint8Array(Z.length+a.length-a.length%kI);b.set(Z,0),s.enqueue(xgt(l,a,b,Z.length,0))},async flush(a){let{ctr:s,hmac:l,pending:r,ready:d}=this;if(l&&s){await d;let m=new Uint8Array;if(r.length){let h=s.update(DL(Gb,r));l.update(h),m=_L(Gb,h)}o.signature=_L(Gb,l.digest()).slice(0,PF),a.enqueue(_nt(m,o.signature))}}}),o=this}};function xgt(t,e,n,i,o,a){let{ctr:s,hmac:l,pending:r}=t,d=e.length-o;r.length&&(e=_nt(r,e),n=kfe(n,d-d%kI));let m;for(m=0;m<=d-kI;m+=kI){let h=DL(Gb,bu(e,m,m+kI));a&&l.update(h);let Z=s.update(h);a||l.update(Z),n.set(_L(Gb,Z),m+i)}return t.pending=bu(e,m),n}async function Nfe(t,e,n,i){let o=await Xgt(t,e,n,bu(i,0,ML[e])),a=bu(i,ML[e]);if(o[0]!=a[0]||o[1]!=a[1])throw new Error(wF)}async function yfe(t,e,n){let i=xv(new Uint8Array(ML[e])),o=await Xgt(t,e,n,i);return _nt(i,o)}async function Xgt(t,e,n,i){t.password=null;let o=await Bfe(Ufe,n,Tfe,!1,Sfe),a=await Qfe(Object.assign({salt:i},Mnt),o,8*(LL[e]*2+2)),s=new Uint8Array(a),l=DL(Gb,bu(s,0,LL[e])),r=DL(Gb,bu(s,LL[e],LL[e]*2)),d=bu(s,LL[e]*2);return Object.assign(t,{keys:{key:l,authentication:r,passwordVerification:d},ctr:new Cfe(new Efe(l),Array.from(gfe)),hmac:new Ife(r)}),d}async function Bfe(t,e,n,i,o){if(Bgt)try{return await OL.importKey(t,e,n,i,o)}catch{return Bgt=!1,HF.importKey(e)}else return HF.importKey(e)}async function Qfe(t,e,n){if(Qgt)try{return await OL.deriveBits(t,e,n)}catch{return Qgt=!1,HF.pbkdf2(e,t.salt,Mnt.iterations,n)}else return HF.pbkdf2(e,t.salt,Mnt.iterations,n)}function Jgt(t,e){return e===Ka?Yv(t):e}function _nt(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function kfe(t,e){if(e&&e>t.length){let n=t;t=new Uint8Array(e),t.set(n,0)}return t}function bu(t,e,n){return t.subarray(e,n)}function _L(t,e){return t.fromBits(e)}function DL(t,e){return t.toBits(e)}var yYi=R(W(),1);var YI=12,Mv=class extends TransformStream{constructor({password:e,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:e,passwordVerification:n}),Dgt(this,e)},transform(o,a){let s=this;if(s.password){let l=Lgt(s,o.subarray(0,YI));if(s.password=null,l[YI-1]!=s.passwordVerification)throw new Error(wF);o=o.subarray(YI)}i?a.error(new Error(nW)):a.enqueue(Lgt(s,o))}})}},_v=class extends TransformStream{constructor({password:e,passwordVerification:n}){super({start(){Object.assign(this,{password:e,passwordVerification:n}),Dgt(this,e)},transform(i,o){let a=this,s,l;if(a.password){a.password=null;let r=xv(new Uint8Array(YI));r[YI-1]=a.passwordVerification,s=new Uint8Array(i.length+r.length),s.set(Mgt(a,r),0),l=YI}else s=new Uint8Array(i.length),l=0;s.set(Mgt(a,i),l),o.enqueue(s)}})}};function Lgt(t,e){let n=new Uint8Array(e.length);for(let i=0;i>>24]),o=~t.crcKey2.get(),t.keys=[n,i,o]}function Ogt(t){let e=t.keys[2]|2;return Hgt(Math.imul(e,e^1)>>>8)}function Hgt(t){return t&255}function _gt(t){return t&4294967295}var wgt="deflate-raw",Dv=class extends TransformStream{constructor(e,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:a,encrypted:s,useCompressionStream:l,zipCrypto:r,signed:d,level:m}=e,h=this,Z,b,u=Pgt(super.readable);(!s||r)&&d&&(Z=new XL,u=Ab(u,Z)),a&&(u=Kgt(u,l,{level:m,chunkSize:n},o,i)),s&&(r?u=Ab(u,new _v(e)):(b=new Jv(e),u=Ab(u,b))),vgt(h,u,()=>{let F;s&&!r&&(F=b.signature),(!s||r)&&d&&(F=new DataView(Z.value.buffer).getUint32(0)),h.signature=F})}},Ov=class extends TransformStream{constructor(e,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:a,encrypted:s,signed:l,signature:r,compressed:d,useCompressionStream:m}=e,h,Z,b=Pgt(super.readable);s&&(a?b=Ab(b,new Mv(e)):(Z=new Xv(e),b=Ab(b,Z))),d&&(b=Kgt(b,m,{chunkSize:n},o,i)),(!s||a)&&l&&(h=new XL,b=Ab(b,h)),vgt(this,b,()=>{if((!s||a)&&l){let u=new DataView(h.value.buffer);if(r!=u.getUint32(0,!1))throw new Error(QT)}})}};function Pgt(t){return Ab(t,new TransformStream({transform(e,n){e&&e.length&&n.enqueue(e)}}))}function vgt(t,e,n){e=Ab(e,new TransformStream({flush:n})),Object.defineProperty(t,"readable",{get(){return e}})}function Kgt(t,e,n,i,o){try{let a=e&&i?i:o;t=Ab(t,new a(wgt,n))}catch{if(e)try{t=Ab(t,new o(wgt,n))}catch{return t}else return t}return t}function Ab(t,e){return t.pipeThrough(e)}var zgt="message",jgt="start",qgt="pull",Ont="data",$gt="ack",Hnt="close",Pv="deflate",vv="inflate";var Hv=class extends TransformStream{constructor(e,n){super({});let i=this,{codecType:o}=e,a;o.startsWith(Pv)?a=Dv:o.startsWith(vv)&&(a=Ov);let s=0,l=0,r=new a(e,n),d=super.readable,m=new TransformStream({transform(Z,b){Z&&Z.length&&(l+=Z.length,b.enqueue(Z))},flush(){Object.assign(i,{inputSize:l})}}),h=new TransformStream({transform(Z,b){Z&&Z.length&&(s+=Z.length,b.enqueue(Z))},flush(){let{signature:Z}=r;Object.assign(i,{signature:Z,outputSize:s,inputSize:l})}});Object.defineProperty(i,"readable",{get(){return d.pipeThrough(m).pipeThrough(r).pipeThrough(h)}})}},wv=class extends TransformStream{constructor(e){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,a){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>e?(a.enqueue(o.slice(0,e)),i(o.slice(e),a)):n=o}}};var HYi=R(W(),1);var nEt=typeof Worker!=vh;var xI=class{constructor(e,{readable:n,writable:i},{options:o,config:a,streamOptions:s,useWebWorkers:l,transferStreams:r,scripts:d},m){let{signal:h}=s;return Object.assign(e,{busy:!0,readable:n.pipeThrough(new wv(a.chunkSize)).pipeThrough(new Pnt(n,s),{signal:h}),writable:i,options:Object.assign({},o),scripts:d,transferStreams:r,terminate(){return new Promise(Z=>{let{worker:b,busy:u}=e;b?(u?e.resolveTerminated=Z:(b.terminate(),Z()),e.interface=null):Z()})},onTaskFinished(){let{resolveTerminated:Z}=e;Z&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),Z()),e.busy=!1,m(e)}}),(l&&nEt?Yfe:iEt)(e,a)}},Pnt=class extends TransformStream{constructor(e,{onstart:n,onprogress:i,size:o,onend:a}){let s=0;super({async start(){n&&await wnt(n,o)},async transform(l,r){s+=l.length,i&&await wnt(i,s,o),r.enqueue(l)},async flush(){e.size=s,a&&await wnt(a,s)}})}};async function wnt(t,...e){try{await t(...e)}catch{}}function iEt(t,e){return{run:()=>xfe(t,e)}}function Yfe(t,e){let{baseURL:n,chunkSize:i}=e;if(!t.interface){let o;try{o=Lfe(t.scripts[0],n,t)}catch{return nEt=!1,iEt(t,e)}Object.assign(t,{worker:o,interface:{run:()=>Xfe(t,{chunkSize:i})}})}return t.interface}async function xfe({options:t,readable:e,writable:n,onTaskFinished:i},o){try{let a=new Hv(t,o);await e.pipeThrough(a).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:l,outputSize:r}=a;return{signature:s,inputSize:l,outputSize:r}}finally{i()}}async function Xfe(t,e){let n,i,o=new Promise((Z,b)=>{n=Z,i=b});Object.assign(t,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:a,options:s,scripts:l}=t,{writable:r,closed:d}=Jfe(t.writable),m=Kv({type:jgt,scripts:l.slice(1),options:s,config:e,readable:a,writable:r},t);m||Object.assign(t,{reader:a.getReader(),writer:r.getWriter()});let h=await o;return m||await r.getWriter().close(),await d,h}function Jfe(t){let e,n=new Promise(o=>e=o);return{writable:new WritableStream({async write(o){let a=t.getWriter();await a.ready,await a.write(o),a.releaseLock()},close(){e()},abort(o){return t.getWriter().abort(o)}}),closed:n}}var tEt=!0,eEt=!0;function Lfe(t,e,n){let i={type:"module"},o,a;typeof t==tW&&(t=t());try{o=new URL(t,e)}catch{o=t}if(tEt)try{a=new Worker(o)}catch{tEt=!1,a=new Worker(o,i)}else a=new Worker(o,i);return a.addEventListener(zgt,s=>Mfe(s,n)),a}function Kv(t,{worker:e,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:a,readable:s,writable:l}=t,r=[];if(a&&(a.byteLength!G.busy);if(U)return aEt(U),new xI(U,t,e,F);if(kT.lengthvnt.push({resolve:G,stream:t,workerOptions:e}))}function F(U){if(vnt.length){let[{resolve:G,stream:A,workerOptions:T}]=vnt.splice(0,1);G(new xI(U,A,T,F))}else U.worker?(aEt(U),_fe(U,e)):kT=kT.filter(G=>G!=U)}}function _fe(t,e){let{config:n}=e,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(t.terminated?t.terminated=!1:t.terminateTimeout=setTimeout(async()=>{kT=kT.filter(o=>o!=t);try{await t.terminate()}catch{}},i))}function aEt(t){let{terminateTimeout:e}=t;e&&(clearTimeout(e),t.terminateTimeout=null)}var txi=R(W(),1);var Dfe="Writer iterator completed too soon",Ofe="text/plain";var Hfe="Content-Type";var wfe=64*1024,jnt="writable",XI=class{constructor(){this.size=0}init(){this.initialized=!0}},jv=class extends XI{get readable(){let e=this,{chunkSize:n=wfe}=e,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:a=0,size:s,diskNumberStart:l}=i,{chunkOffset:r}=this;o.enqueue(await Fd(e,a+r,Math.min(n,s-r),l)),r+n>s?o.close():this.chunkOffset+=n}});return i}},Knt=class extends XI{constructor(){super();let e=this,n=new WritableStream({write(i){return e.writeUint8Array(i)}});Object.defineProperty(e,jnt,{get(){return n}})}writeUint8Array(){}};var qv=class extends Knt{constructor(e){super(),Object.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){let n=this,i=0,o=n.pending,a=n.pending.length;for(n.pending="",i=0;i2?n.data+=btoa(o):n.pending=o}getData(){return this.data+btoa(this.pending)}},iW=class extends jv{constructor(e){super(),Object.assign(this,{blob:e,size:e.size})}async readUint8Array(e,n){let i=this,o=e+n,s=await(e||on&&(s=s.slice(e,o)),new Uint8Array(s)}},HL=class extends XI{constructor(e){super();let n=this,i=new TransformStream,o=[];e&&o.push([Hfe,e]),Object.defineProperty(n,jnt,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},$v=class extends iW{constructor(e){super(new Blob([e],{type:Ofe}))}},tK=class extends HL{constructor(e){super(e),Object.assign(this,{encoding:e,utf8:!e||e.toLowerCase()=="utf-8"})}async getData(){let{encoding:e,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((a,s)=>{Object.assign(o,{onload:({target:l})=>a(l.result),onerror:()=>s(o.error)}),o.readAsText(i,e)})}}};var znt=class extends jv{constructor(e){super(),this.readers=e}async init(){let e=this,{readers:n}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(e.lastDiskOffset+=i.size),e.size+=i.size})),super.init()}async readUint8Array(e,n,i=0){let o=this,{readers:a}=this,s,l=i;l==-1&&(l=a.length-1);let r=e;for(;r>=a[l].size;)r-=a[l].size,l++;let d=a[l],m=d.size;if(r+n<=m)s=await Fd(d,r,n);else{let h=m-r;s=new Uint8Array(n),s.set(await Fd(d,r,h)),s.set(await o.readUint8Array(e+h,n-h,i),h)}return o.lastDiskNumber=Math.max(l,o.lastDiskNumber),s}},eK=class extends XI{constructor(e,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,a,s,l=new WritableStream({async write(m){let{availableSize:h}=i;if(s)m.length>=h?(await r(m.slice(0,h)),await d(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(m.slice(h))):await r(m);else{let{value:Z,done:b}=await e.next();if(b&&!Z)throw new Error(Dfe);o=Z,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await Sb(o),a=Z.writable,s=a.getWriter(),await this.write(m)}},async close(){await s.ready,await d()}});Object.defineProperty(i,jnt,{get(){return l}});async function r(m){let h=m.length;h&&(await s.ready,await s.write(m),o.size+=h,i.size+=h,i.availableSize-=h)}async function d(){a.size=o.size,await s.close()}}};async function Sb(t,e){if(t.init&&!t.initialized)await t.init(e);else return Promise.resolve()}function nK(t){return Array.isArray(t)&&(t=new znt(t)),t instanceof ReadableStream&&(t={readable:t}),t}function iK(t){t.writable===Ka&&typeof t.next==tW&&(t=new eK(t)),t instanceof WritableStream&&(t={writable:t});let{writable:e}=t;return e.size===Ka&&(e.size=0),t instanceof eK||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}function Fd(t,e,n,i){return t.readUint8Array(e,n,i)}var Vxi=R(W(),1);var axi=R(W(),1);var nxi=R(W(),1),sEt="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Pfe=sEt.length==256;function lEt(t){if(Pfe){let e="";for(let n=0;nthis[n]=e[n])}};var cit="File format is not recognized",qfe="End of central directory not found",$fe="End of Zip64 central directory locator not found",tFe="Central directory header not found",eFe="Local file header not found",nFe="Zip64 extra field not found",iFe="File contains encrypted entry",oFe="Encryption method not supported",cEt="Compression method not supported",mEt="Split zip file",hEt="utf-8",pEt="cp437",aFe=[[iit,4294967295],[oit,4294967295],[ait,4294967295],[oK,65535]],sFe={[65535]:{getValue:Ol,bytes:4},[4294967295]:{getValue:sK,bytes:8}},pK=class{constructor(e,n={}){Object.assign(this,{reader:nK(e),options:n,config:xL()})}async*getEntriesGenerator(e={}){let n=this,{reader:i}=n,{config:o}=n;if(await Sb(i),(i.size===Ka||!i.readUint8Array)&&(i=new iW(await new Response(i.readable).blob()),await Sb(i)),i.size<22)throw new Error(cit);i.chunkSize=kv(o);let a=await mFe(i,101010256,i.size,22,65535*16);if(!a){let M=await Fd(i,0,4),V=jr(M);throw Ol(V)==134695760?new Error(mEt):new Error(qfe)}let s=jr(a),l=Ol(s,12),r=Ol(s,16),d=a.offset,m=zr(s,20),h=d+22+m,Z=zr(s,4),b=i.lastDiskNumber||0,u=zr(s,6),F=zr(s,8),U=0,G=0;if(r==4294967295||l==4294967295||F==65535||u==65535){let M=await Fd(i,a.offset-20,20),V=jr(M);if(Ol(V,0)==117853008){r=sK(V,8);let E=await Fd(i,r,56,-1),I=jr(E),B=a.offset-20-56;if(Ol(I,0)!=101075792&&r!=B){let X=r;r=B,U=r-X,E=await Fd(i,r,56,-1),I=jr(E)}if(Ol(I,0)!=101075792)throw new Error($fe);Z==65535&&(Z=Ol(I,16)),u==65535&&(u=Ol(I,20)),F==65535&&(F=sK(I,32)),l==4294967295&&(l=sK(I,40)),r-=l}}if(r>=i.size&&(U=i.size-r-l-22,r=i.size-l-22),b!=Z)throw new Error(mEt);if(r<0)throw new Error(cit);let A=0,T=await Fd(i,r,l,u),g=jr(T);if(l){let M=a.offset-l;if(Ol(g,A)!=33639248&&r!=M){let V=r;r=M,U+=r-V,T=await Fd(i,r,l,u),g=jr(T)}}let C=a.offset-r-(i.lastDiskOffset||0);if(l!=C&&C>=0&&(l=C,T=await Fd(i,r,l,u),g=jr(T)),r<0||r>=i.size)throw new Error(cit);let y=vm(n,e,"filenameEncoding"),Y=vm(n,e,"commentEncoding");for(let M=0;MV.getData(kt,Wt,Mt),A=H;let{onprogress:Nt}=e;if(Nt)try{await Nt(M+1,F,new vF(V))}catch{}yield Wt}let Q=vm(n,e,"extractPrependedData"),J=vm(n,e,"extractAppendedData");return Q&&(n.prependedData=G>0?await Fd(i,0,G):new Uint8Array),n.comment=m?await Fd(i,d+22,m):new Uint8Array,J&&(n.appendedData=h>>8&255:Z>>>24&255),signature:Z,compressed:d!=0,encrypted:C,useWebWorkers:vm(o,i,"useWebWorkers"),useCompressionStream:vm(o,i,"useCompressionStream"),transferStreams:vm(o,i,"transferStreams"),checkPasswordOnly:V},config:m,streamOptions:{signal:M,size:Q,onstart:I,onprogress:B,onend:X}},P=0;try{({outputSize:P}=await zv({readable:J,writable:E},_))}catch(w){if(!V||w.message!=nW)throw w}finally{let w=vm(o,i,"preventClose");E.size+=P,!w&&!E.locked&&await E.getWriter().close()}return V?Ka:e.getData?e.getData():E}};function ZEt(t,e,n){let i=t.rawBitFlag=zr(e,n+2),o=(i&1)==1,a=Ol(e,n+6);Object.assign(t,{encrypted:o,version:zr(e,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:a,lastModDate:hFe(a),filenameLength:zr(e,n+22),extraFieldLength:zr(e,n+24)})}async function VEt(t,e,n,i,o){let{rawExtraField:a}=e,s=e.extraField=new Map,l=jr(new Uint8Array(a)),r=0;try{for(;re[o]==a);for(let o=0,a=0;o=5&&(a.push(JI),s.push(aK));let l=1;a.forEach((r,d)=>{if(t.data.length>=l+4){let m=Ol(i,l);e[r]=t[r]=new Date(m*1e3);let h=s[d];t[h]=m}l+=4})}async function mFe(t,e,n,i,o){let a=new Uint8Array(4),s=jr(a);pFe(s,0,e);let l=i+o;return await r(i)||await r(Math.min(l,n));async function r(d){let m=n-d,h=await Fd(t,m,d);for(let Z=h.length-i;Z>=0;Z--)if(h[Z]==a[0]&&h[Z+1]==a[1]&&h[Z+2]==a[2]&&h[Z+3]==a[3])return{offset:m+Z,buffer:h.slice(Z,Z+i).buffer}}}function vm(t,e,n){return e[n]===Ka?t.options[n]:e[n]}function hFe(t){let e=(t&4294901760)>>16,n=t&65535;try{return new Date(1980+((e&65024)>>9),((e&480)>>5)-1,e&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function mit(t){return new Date(Number(t/BigInt(1e4)-BigInt(116444736e5)))}function LI(t,e){return t.getUint8(e)}function zr(t,e){return t.getUint16(e,!0)}function Ol(t,e){return t.getUint32(e,!0)}function sK(t,e){return Number(t.getBigUint64(e,!0))}function pFe(t,e,n){t.setUint32(e,n,!0)}function jr(t){return new DataView(t.buffer)}var Axi=R(W(),1);var bFe="File already exists",RFe="Zip file comment exceeds 64KB",WFe="File entry comment exceeds 64KB",fFe="File entry name exceeds 64KB",WEt="Version exceeds 65535",FFe="The strength must equal 1, 2, or 3",UFe="Extra field type exceeds 65535",GFe="Extra field data exceeds 64KB",Sit="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",fEt=new Uint8Array([7,0,2,0,65,69,3,0,0]),Ait=0,FEt=[],VK=class{constructor(e,n={}){e=iK(e);let i=e.availableSize!==Ka&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==Ka&&e.maxSize>0&&e.maxSize!==1/0;Object.assign(this,{writer:e,addSplitZipSignature:i,options:n,config:xL(),files:new Map,filenames:new Set,offset:e.writable.size,pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async add(e="",n,i={}){let o=this,{pendingAddFileCalls:a,config:s}=o;AitFEt.push(r));let l;try{if(e=e.trim(),o.filenames.has(e))throw new Error(bFe);return o.filenames.add(e),l=AFe(o,e,n,i),a.add(l),await l}catch(r){throw o.filenames.delete(e),r}finally{a.delete(l);let r=FEt.shift();r?r():Ait--}}async close(e=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:a}=this,{writable:s}=a;for(;o.size;)await Promise.allSettled(Array.from(o));return await BFe(this,e,n),ms(i,n,"preventClose")||await s.getWriter().close(),a.getData?a.getData():s}};async function AFe(t,e,n,i){e=e.trim(),i.directory&&!e.endsWith(BI)?e+=BI:i.directory=e.endsWith(BI);let o=ms(t,i,"encodeText",Yv),a=o(e);if(ta(a)>65535)throw new Error(fFe);let s=i.comment||"",l=o(s);if(ta(l)>65535)throw new Error(WFe);let r=ms(t,i,"version",20);if(r>65535)throw new Error(WEt);let d=ms(t,i,"versionMadeBy",20);if(d>65535)throw new Error(WEt);let m=ms(t,i,JI,new Date),h=ms(t,i,wL),Z=ms(t,i,PL),b=ms(t,i,rit,!0),u=ms(t,i,sit,0),F=ms(t,i,lit,0),U=ms(t,i,"password"),G=ms(t,i,"rawPassword"),A=ms(t,i,"encryptionStrength",3),T=ms(t,i,"zipCrypto"),g=ms(t,i,"extendedTimestamp",!0),C=ms(t,i,"keepOrder",!0),y=ms(t,i,"level"),Y=ms(t,i,"useWebWorkers"),Q=ms(t,i,"bufferedWrite"),J=ms(t,i,"dataDescriptorSignature",!1),M=ms(t,i,"signal"),V=ms(t,i,"useCompressionStream"),E=ms(t,i,"dataDescriptor",!0),I=ms(t,i,dit);if(U!==Ka&&A!==Ka&&(A<1||A>3))throw new Error(FFe);let B=new Uint8Array,{extraField:X}=i;if(X){let Mt=0,qt=0;X.forEach(ie=>Mt+=4+ta(ie)),B=new Uint8Array(Mt),X.forEach((ie,oe)=>{if(oe>65535)throw new Error(UFe);if(ta(ie)>65535)throw new Error(GFe);ar(B,new Uint16Array([oe]),qt),ar(B,new Uint16Array([ta(ie)]),qt+2),ar(B,ie,qt+4),qt+=4+ta(ie)})}let _=0,P=0,w=0,z=I===!0;n&&(n=nK(n),await Sb(n),n.size===Ka?(E=!0,(I||I===Ka)&&(I=!0,w=_=4294967295)):(w=n.size,_=QFe(w)));let{diskOffset:H,diskNumber:nt,maxSize:$}=t.writer,dt=z||w>=4294967295,q=z||_>=4294967295,at=z||t.offset+t.pendingEntriesSize-H>=4294967295,Et=ms(t,i,"supportZip64SplitFile",!0)&&z||nt+Math.ceil(t.pendingEntriesSize/$)>=65535;if(at||dt||q||Et){if(I===!1||!C)throw new Error(Sit);I=!0}I=I||!1,i=Object.assign({},i,{rawFilename:a,rawComment:l,version:r,versionMadeBy:d,lastModDate:m,lastAccessDate:h,creationDate:Z,rawExtraField:B,zip64:I,zip64UncompressedSize:dt,zip64CompressedSize:q,zip64Offset:at,zip64DiskNumberStart:Et,password:U,rawPassword:G,level:!V&&t.config.CompressionStream===Ka?0:y,useWebWorkers:Y,encryptionStrength:A,extendedTimestamp:g,zipCrypto:T,bufferedWrite:Q,keepOrder:C,dataDescriptor:E,dataDescriptorSignature:J,signal:M,msDosCompatible:b,internalFileAttribute:u,externalFileAttribute:F,useCompressionStream:V});let Qt=gFe(i),Wt=CFe(i),Nt=ta(Qt.localHeaderArray,Wt.dataDescriptorArray);P=Nt+_,t.options.usdz&&(P+=P+64),t.pendingEntriesSize+=P;let kt;try{kt=await TFe(t,e,n,{headerInfo:Qt,dataDescriptorInfo:Wt,metadataSize:Nt},i)}finally{t.pendingEntriesSize-=P}return Object.assign(kt,{name:e,comment:s,extraField:X}),new vF(kt)}async function TFe(t,e,n,i,o){let{files:a,writer:s}=t,{keepOrder:l,dataDescriptor:r,signal:d}=o,{headerInfo:m}=i,{usdz:h}=t.options,Z=Array.from(a.values()).pop(),b={},u,F,U,G,A,T,g;a.set(e,b);try{let Q;l&&(Q=Z&&Z.lock,C()),(o.bufferedWrite||t.writerLocked||t.bufferedWrites&&l||!r)&&!h?(T=new TransformStream,g=new Response(T.readable).blob(),T.writable.size=0,u=!0,t.bufferedWrites++,await Sb(s)):(T=s,await y()),await Sb(T);let{writable:J}=s,{diskOffset:M}=s;if(t.addSplitZipSignature){delete t.addSplitZipSignature;let E=new Uint8Array(4),I=Ud(E);$o(I,0,134695760),await gb(J,E),t.offset+=4}h&&EFe(i,t.offset-M),u||(await Q,await Y(J));let{diskNumber:V}=s;if(A=!0,b.diskNumberStart=V,b=await SFe(n,T,b,i,t.config,o),A=!1,a.set(e,b),b.filename=e,u){await T.writable.getWriter().close();let E=await g;await Q,await y(),G=!0,r||(E=await NFe(b,E,J,o)),await Y(J),b.diskNumberStart=s.diskNumber,M=s.diskOffset,await E.stream().pipeTo(J,{preventClose:!0,preventAbort:!0,signal:d}),J.size+=E.size,G=!1}if(b.offset=t.offset-M,b.zip64)yFe(b,o);else if(b.offset>=4294967295)throw new Error(Sit);return t.offset+=b.size,b}catch(Q){if(u&&G||!u&&A){if(t.hasCorruptedEntries=!0,Q)try{Q.corruptedEntry=!0}catch{}u?t.offset+=T.writable.size:t.offset=T.writable.size}throw a.delete(e),Q}finally{u&&t.bufferedWrites--,U&&U(),F&&F()}function C(){b.lock=new Promise(Q=>U=Q)}async function y(){t.writerLocked=!0;let{lockWriter:Q}=t;t.lockWriter=new Promise(J=>F=()=>{t.writerLocked=!1,J()}),await Q}async function Y(Q){ta(m.localHeaderArray)>s.availableSize&&(s.availableSize=0,await gb(Q,new Uint8Array))}}async function SFe(t,e,{diskNumberStart:n,lock:i},o,a,s){let{headerInfo:l,dataDescriptorInfo:r,metadataSize:d}=o,{localHeaderArray:m,headerArray:h,lastModDate:Z,rawLastModDate:b,encrypted:u,compressed:F,version:U,compressionMethod:G,rawExtraFieldExtendedTimestamp:A,extraFieldExtendedTimestampFlag:T,rawExtraFieldNTFS:g,rawExtraFieldAES:C}=l,{dataDescriptorArray:y}=r,{rawFilename:Y,lastAccessDate:Q,creationDate:J,password:M,rawPassword:V,level:E,zip64:I,zip64UncompressedSize:B,zip64CompressedSize:X,zip64Offset:_,zip64DiskNumberStart:P,zipCrypto:w,dataDescriptor:z,directory:H,versionMadeBy:nt,rawComment:$,rawExtraField:dt,useWebWorkers:q,onstart:at,onprogress:st,onend:Et,signal:Qt,encryptionStrength:Wt,extendedTimestamp:Nt,msDosCompatible:kt,internalFileAttribute:Mt,externalFileAttribute:qt,useCompressionStream:ie}=s,oe={lock:i,versionMadeBy:nt,zip64:I,directory:!!H,filenameUTF8:!0,rawFilename:Y,commentUTF8:!0,rawComment:$,rawExtraFieldExtendedTimestamp:A,rawExtraFieldNTFS:g,rawExtraFieldAES:C,rawExtraField:dt,extendedTimestamp:Nt,msDosCompatible:kt,internalFileAttribute:Mt,externalFileAttribute:qt,diskNumberStart:n},He=0,rn=0,de,{writable:zt}=e;if(t){t.chunkSize=kv(a),await gb(zt,m);let ue=t.readable,We=ue.size=t.size,un={options:{codecType:Pv,level:E,rawPassword:V,password:M,encryptionStrength:Wt,zipCrypto:u&&w,passwordVerification:u&&w&&b>>8&255,signed:!0,compressed:F,encrypted:u,useWebWorkers:q,useCompressionStream:ie,transferStreams:!1},config:a,streamOptions:{signal:Qt,size:We,onstart:at,onprogress:st,onend:Et}},Ct=await zv({readable:ue,writable:zt},un);rn=Ct.inputSize,He=Ct.outputSize,de=Ct.signature,zt.size+=rn}else await gb(zt,m);let ke;if(I){let ue=4;B&&(ue+=8),X&&(ue+=8),_&&(ue+=8),P&&(ue+=4),ke=new Uint8Array(ue)}else ke=new Uint8Array;return IFe({signature:de,rawExtraFieldZip64:ke,compressedSize:He,uncompressedSize:rn,headerInfo:l,dataDescriptorInfo:r},s),z&&await gb(zt,y),Object.assign(oe,{uncompressedSize:rn,compressedSize:He,lastModDate:Z,rawLastModDate:b,creationDate:J,lastAccessDate:Q,encrypted:u,size:d+He,compressionMethod:G,version:U,headerArray:h,signature:de,rawExtraFieldZip64:ke,extraFieldExtendedTimestampFlag:T,zip64UncompressedSize:B,zip64CompressedSize:X,zip64Offset:_,zip64DiskNumberStart:P}),oe}function gFe(t){let{rawFilename:e,lastModDate:n,lastAccessDate:i,creationDate:o,rawPassword:a,password:s,level:l,zip64:r,zipCrypto:d,dataDescriptor:m,directory:h,rawExtraField:Z,encryptionStrength:b,extendedTimestamp:u}=t,F=l!==0&&!h,U=!!(s&&ta(s)||a&&ta(a)),G=t.version,A;if(U&&!d){A=new Uint8Array(ta(fEt)+2);let P=Ud(A);Ra(P,0,39169),ar(A,fEt,2),bK(P,8,b)}else A=new Uint8Array;let T,g,C;if(u){g=new Uint8Array(9+(i?4:0)+(o?4:0));let P=Ud(g);Ra(P,0,21589),Ra(P,2,ta(g)-4),C=1+(i?2:0)+(o?4:0),bK(P,4,C);let w=5;$o(P,w,Math.floor(n.getTime()/1e3)),w+=4,i&&($o(P,w,Math.floor(i.getTime()/1e3)),w+=4),o&&$o(P,w,Math.floor(o.getTime()/1e3));try{T=new Uint8Array(36);let z=Ud(T),H=Tit(n);Ra(z,0,10),Ra(z,2,32),Ra(z,8,1),Ra(z,10,24),Km(z,12,H),Km(z,20,Tit(i)||H),Km(z,28,Tit(o)||H)}catch{T=new Uint8Array}}else T=g=new Uint8Array;let y=2048;m&&(y=y|8);let Y=0;F&&(Y=8),r&&(G=G>45?G:45),U&&(y=y|1,d||(G=G>51?G:51,Y=99,F&&(A[9]=8)));let Q=new Uint8Array(26),J=Ud(Q);Ra(J,0,G),Ra(J,2,y),Ra(J,4,Y);let M=new Uint32Array(1),V=Ud(M),E;nxnt?E=xnt:E=n,Ra(V,0,(E.getHours()<<6|E.getMinutes())<<5|E.getSeconds()/2),Ra(V,2,(E.getFullYear()-1980<<4|E.getMonth()+1)<<5|E.getDate());let I=M[0];$o(J,6,I),Ra(J,22,ta(e));let B=ta(A,g,T,Z);Ra(J,24,B);let X=new Uint8Array(30+ta(e)+B),_=Ud(X);return $o(_,0,67324752),ar(X,Q,4),ar(X,e,30),ar(X,A,30+ta(e)),ar(X,g,30+ta(e,A)),ar(X,T,30+ta(e,A,g)),ar(X,Z,30+ta(e,A,g,T)),{localHeaderArray:X,headerArray:Q,headerView:J,lastModDate:n,rawLastModDate:I,encrypted:U,compressed:F,version:G,compressionMethod:Y,extraFieldExtendedTimestampFlag:C,rawExtraFieldExtendedTimestamp:g,rawExtraFieldNTFS:T,rawExtraFieldAES:A,extraFieldLength:B}}function EFe(t,e){let{headerInfo:n}=t,{localHeaderArray:i,extraFieldLength:o}=n,a=Ud(i),s=64-(e+ta(i))%64;s<4&&(s+=64);let l=new Uint8Array(s),r=Ud(l);Ra(r,0,6534),Ra(r,2,s-2);let d=i;n.localHeaderArray=i=new Uint8Array(ta(d)+s),ar(i,d),ar(i,l,ta(d)),a=Ud(i),Ra(a,28,o+s),t.metadataSize+=s}function CFe(t){let{zip64:e,dataDescriptor:n,dataDescriptorSignature:i}=t,o=new Uint8Array,a,s=0;return n&&(o=new Uint8Array(e?i?24:20:i?16:12),a=Ud(o),i&&(s=4,$o(a,0,134695760))),{dataDescriptorArray:o,dataDescriptorView:a,dataDescriptorOffset:s}}function IFe(t,e){let{signature:n,rawExtraFieldZip64:i,compressedSize:o,uncompressedSize:a,headerInfo:s,dataDescriptorInfo:l}=t,{headerView:r,encrypted:d}=s,{dataDescriptorView:m,dataDescriptorOffset:h}=l,{zip64:Z,zip64UncompressedSize:b,zip64CompressedSize:u,zipCrypto:F,dataDescriptor:U}=e;if((!d||F)&&n!==Ka&&($o(r,10,n),U&&$o(m,h,n)),Z){let G=Ud(i);Ra(G,0,1),Ra(G,2,ta(i)-4);let A=4;b&&($o(r,18,4294967295),Km(G,A,BigInt(a)),A+=8),u&&($o(r,14,4294967295),Km(G,A,BigInt(o))),U&&(Km(m,h+4,BigInt(o)),Km(m,h+12,BigInt(a)))}else $o(r,14,o),$o(r,18,a),U&&($o(m,h+4,o),$o(m,h+8,a))}async function NFe(t,e,n,{zipCrypto:i}){let o;o=await e.slice(0,26).arrayBuffer(),o.byteLength!=26&&(o=o.slice(0,26));let a=new DataView(o);return(!t.encrypted||i)&&$o(a,14,t.signature),t.zip64?($o(a,18,4294967295),$o(a,22,4294967295)):($o(a,18,t.compressedSize),$o(a,22,t.uncompressedSize)),await gb(n,new Uint8Array(o)),e.slice(o.byteLength)}function yFe(t,e){let{rawExtraFieldZip64:n,offset:i,diskNumberStart:o}=t,{zip64UncompressedSize:a,zip64CompressedSize:s,zip64Offset:l,zip64DiskNumberStart:r}=e,d=Ud(n),m=4;a&&(m+=8),s&&(m+=8),l&&(Km(d,m,BigInt(i)),m+=8),r&&$o(d,m,o)}async function BFe(t,e,n){let{files:i,writer:o}=t,{diskOffset:a,writable:s}=o,{diskNumber:l}=o,r=0,d=0,m=t.offset-a,h=i.size;for(let[,C]of i){let{rawFilename:y,rawExtraFieldZip64:Y,rawExtraFieldAES:Q,rawComment:J,rawExtraFieldNTFS:M,rawExtraField:V,extendedTimestamp:E,extraFieldExtendedTimestampFlag:I,lastModDate:B}=C,X;if(E){X=new Uint8Array(9);let _=Ud(X);Ra(_,0,21589),Ra(_,2,5),bK(_,4,I),$o(_,5,Math.floor(B.getTime()/1e3))}else X=new Uint8Array;C.rawExtraFieldCDExtendedTimestamp=X,d+=46+ta(y,J,Y,Q,M,X,V)}let Z=new Uint8Array(d),b=Ud(Z);await Sb(o);let u=0;for(let[C,y]of Array.from(i.values()).entries()){let{offset:Y,rawFilename:Q,rawExtraFieldZip64:J,rawExtraFieldAES:M,rawExtraFieldCDExtendedTimestamp:V,rawExtraFieldNTFS:E,rawExtraField:I,rawComment:B,versionMadeBy:X,headerArray:_,directory:P,zip64:w,zip64UncompressedSize:z,zip64CompressedSize:H,zip64DiskNumberStart:nt,zip64Offset:$,msDosCompatible:dt,internalFileAttribute:q,externalFileAttribute:at,diskNumberStart:st,uncompressedSize:Et,compressedSize:Qt}=y,Wt=ta(J,M,V,E,I);$o(b,r,33639248),Ra(b,r+4,X);let Nt=Ud(_);z||$o(Nt,18,Et),H||$o(Nt,14,Qt),ar(Z,_,r+6),Ra(b,r+30,Wt),Ra(b,r+32,ta(B)),Ra(b,r+34,w&&nt?65535:st),Ra(b,r+36,q),at?$o(b,r+38,at):P&&dt&&bK(b,r+38,16),$o(b,r+42,w&&$?4294967295:Y),ar(Z,Q,r+46),ar(Z,J,r+46+ta(Q)),ar(Z,M,r+46+ta(Q,J)),ar(Z,V,r+46+ta(Q,J,M)),ar(Z,E,r+46+ta(Q,J,M,V)),ar(Z,I,r+46+ta(Q,J,M,V,E)),ar(Z,B,r+46+ta(Q)+Wt);let kt=46+ta(Q,B)+Wt;if(r-u>o.availableSize&&(o.availableSize=0,await gb(s,Z.slice(u,r)),u=r),r+=kt,n.onprogress)try{await n.onprogress(C+1,i.size,new vF(y))}catch{}}await gb(s,u?Z.slice(u):Z);let F=o.diskNumber,{availableSize:U}=o;U<22&&F++;let G=ms(t,n,"zip64");if(m>=4294967295||d>=4294967295||h>=65535||F>=65535){if(G===!1)throw new Error(Sit);G=!0}let A=new Uint8Array(G?98:22),T=Ud(A);r=0,G&&($o(T,0,101075792),Km(T,4,BigInt(44)),Ra(T,12,45),Ra(T,14,45),$o(T,16,F),$o(T,20,l),Km(T,24,BigInt(h)),Km(T,32,BigInt(h)),Km(T,40,BigInt(d)),Km(T,48,BigInt(m)),$o(T,56,117853008),Km(T,64,BigInt(m)+BigInt(d)),$o(T,72,F+1),ms(t,n,"supportZip64SplitFile",!0)&&(F=65535,l=65535),h=65535,m=4294967295,d=4294967295,r+=76),$o(T,r,101010256),Ra(T,r+4,F),Ra(T,r+6,l),Ra(T,r+8,h),Ra(T,r+10,h),$o(T,r+12,d),$o(T,r+16,m);let g=ta(e);if(g)if(g<=65535)Ra(T,r+20,g);else throw new Error(RFe);await gb(s,A),g&&await gb(s,e)}async function gb(t,e){let n=t.getWriter();try{await n.ready,t.size+=ta(e),await n.write(e)}finally{n.releaseLock()}}function Tit(t){if(t)return(BigInt(t.getTime())+BigInt(116444736e5))*BigInt(1e4)}function ms(t,e,n,i){let o=e[n]===Ka?t.options[n]:e[n];return o===Ka?i:o}function QFe(t){return t+5*(Math.floor(t/16383)+1)}function bK(t,e,n){t.setUint8(e,n)}function Ra(t,e,n){t.setUint16(e,n,!0)}function $o(t,e,n){t.setUint32(e,n,!0)}function Km(t,e,n){t.setBigUint64(e,n,!0)}function ar(t,e,n){t.set(e,n)}function Ud(t){return new DataView(t.buffer)}function ta(...t){let e=0;return t.forEach(n=>n&&(e+=n.length)),e}QI({Deflate:sgt,Inflate:Egt});var xxi=R(W(),1);function kFe(t){return typeof t=="string"&&(t=document.getElementById(t)),t}var Ui=kFe;var Jxi=R(W(),1);function YFe(t,e){this.position=t,this.headingPitchRange=e}var zL=YFe;var Dxi=R(W(),1);function RK(t,e){this.id=e,this.name=t,this.playlistIndex=0,this.playlist=[],this.tourStart=new It,this.tourEnd=new It,this.entryStart=new It,this.entryEnd=new It,this._activeEntries=[]}RK.prototype.addPlaylistEntry=function(t){this.playlist.push(t)};RK.prototype.play=function(t,e){this.tourStart.raiseEvent();let n=this;AEt.call(this,t,e,function(i){n.playlistIndex=0,i||GEt(n._activeEntries),n.tourEnd.raiseEvent(i)})};RK.prototype.stop=function(){GEt(this._activeEntries)};function GEt(t){for(let e=t.pop();e!==void 0;e=t.pop())e.stop()}function AEt(t,e,n){let i=this.playlist[this.playlistIndex];if(i){let o=xFe.bind(this,t,e,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,t.scene.camera,e);else{let a=this;i.play(function(){a.entryEnd.raiseEvent(i);let s=a._activeEntries.indexOf(i);s>=0&&a._activeEntries.splice(s,1)}),o(t,e,n)}}else c(n)&&n(!1)}function xFe(t,e,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let a=this._activeEntries.indexOf(o);a>=0&&this._activeEntries.splice(a,1),this.playlistIndex++,AEt.call(this,t,e,n)}}var jL=RK;var sXi=R(W(),1);var tXi=R(W(),1);var jxi=R(W(),1),Jo=Object.freeze({Linear:Object.freeze({None:function(t){return t},In:function(t){return this.None(t)},Out:function(t){return this.None(t)},InOut:function(t){return this.None(t)}}),Quadratic:Object.freeze({In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}}),Cubic:Object.freeze({In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}}),Quartic:Object.freeze({In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}}),Quintic:Object.freeze({In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}}),Sinusoidal:Object.freeze({In:function(t){return 1-Math.sin((1-t)*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return .5*(1-Math.sin(Math.PI*(.5-t)))}}),Exponential:Object.freeze({In:function(t){return t===0?0:Math.pow(1024,t-1)},Out:function(t){return t===1?1:1-Math.pow(2,-10*t)},InOut:function(t){return t===0?0:t===1?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(-Math.pow(2,-10*(t-1))+2)}}),Circular:Object.freeze({In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}}),Elastic:Object.freeze({In:function(t){return t===0?0:t===1?1:-Math.pow(2,10*(t-1))*Math.sin((t-1.1)*5*Math.PI)},Out:function(t){return t===0?0:t===1?1:Math.pow(2,-10*t)*Math.sin((t-.1)*5*Math.PI)+1},InOut:function(t){return t===0?0:t===1?1:(t*=2,t<1?-.5*Math.pow(2,10*(t-1))*Math.sin((t-1.1)*5*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin((t-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(t){var e=1.70158;return t===1?1:t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return t===0?0:--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)}}),Bounce:Object.freeze({In:function(t){return 1-Jo.Bounce.Out(1-t)},Out:function(t){return t<.36363636363636365?7.5625*t*t:t<.7272727272727273?7.5625*(t-=.5454545454545454)*t+.75:t<.9090909090909091?7.5625*(t-=.8181818181818182)*t+.9375:7.5625*(t-=.9545454545454546)*t+.984375},InOut:function(t){return t<.5?Jo.Bounce.In(t*2)*.5:Jo.Bounce.Out(t*2-1)*.5+.5}}),generatePow:function(t){return t===void 0&&(t=4),t=t1e4?1e4:t,{In:function(e){return Math.pow(e,t)},Out:function(e){return 1-Math.pow(1-e,t)},InOut:function(e){return e<.5?Math.pow(e*2,t)/2:(1-Math.pow(2-e*2,t))/2+.5}}}}),qL=function(){return performance.now()},XFe=function(){function t(){this._tweens={},this._tweensAddedDuringUpdate={}}return t.prototype.getAll=function(){var e=this;return Object.keys(this._tweens).map(function(n){return e._tweens[n]})},t.prototype.removeAll=function(){this._tweens={}},t.prototype.add=function(e){this._tweens[e.getId()]=e,this._tweensAddedDuringUpdate[e.getId()]=e},t.prototype.remove=function(e){delete this._tweens[e.getId()],delete this._tweensAddedDuringUpdate[e.getId()]},t.prototype.update=function(e,n){e===void 0&&(e=qL()),n===void 0&&(n=!1);var i=Object.keys(this._tweens);if(i.length===0)return!1;for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o1?a(t[n],t[n-1],n-i):a(t[o],t[o+1>n?n:o+1],i-o)},Bezier:function(t,e){for(var n=0,i=t.length-1,o=Math.pow,a=MI.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-e,i-s)*o(e,s)*t[s]*a(i,s);return n},CatmullRom:function(t,e){var n=t.length-1,i=n*e,o=Math.floor(i),a=MI.Utils.CatmullRom;return t[0]===t[n]?(e<0&&(o=Math.floor(i=n*(1+e))),a(t[(o-1+n)%n],t[o],t[(o+1)%n],t[(o+2)%n],i-o)):e<0?t[0]-(a(t[0],t[0],t[1],t[1],-i)-t[0]):e>1?t[n]-(a(t[n],t[n],t[n-1],t[n-1],i-n)-t[n]):a(t[o?o-1:0],t[o],t[n1;i--)n*=i;return t[e]=n,n}}(),CatmullRom:function(t,e,n,i,o){var a=(n-t)*.5,s=(i-e)*.5,l=o*o,r=o*l;return(2*e-2*n+a+s)*r+(-3*e+3*n-2*a-s)*l+a*o+e}}},TEt=function(){function t(){}return t.nextId=function(){return t._nextId++},t._nextId=0,t}(),git=new XFe,SEt=function(){function t(e,n){n===void 0&&(n=git),this._object=e,this._group=n,this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Jo.Linear.None,this._interpolationFunction=MI.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=TEt.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1}return t.prototype.getId=function(){return this._id},t.prototype.isPlaying=function(){return this._isPlaying},t.prototype.isPaused=function(){return this._isPaused},t.prototype.getDuration=function(){return this._duration},t.prototype.to=function(e,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=e,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},t.prototype.duration=function(e){return e===void 0&&(e=1e3),this._duration=e<0?0:e,this},t.prototype.dynamic=function(e){return e===void 0&&(e=!1),this._isDynamic=e,this},t.prototype.start=function(e,n){if(e===void 0&&(e=qL()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._group&&this._group.add(this),this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=e,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var a in this._valuesEnd)o[a]=this._valuesEnd[a];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},t.prototype.startFromCurrentValues=function(e){return this.start(e,!0)},t.prototype._setupProperties=function(e,n,i,o,a){for(var s in i){var l=e[s],r=Array.isArray(l),d=r?"array":typeof l,m=!r&&Array.isArray(i[s]);if(!(d==="undefined"||d==="function")){if(m){var h=i[s];if(h.length===0)continue;for(var Z=[l],b=0,u=h.length;b"u"||a)&&(n[s]=l),r||(n[s]*=1),m?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},t.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._group&&this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},t.prototype.end=function(){return this._goToEnd=!0,this.update(1/0),this},t.prototype.pause=function(e){return e===void 0&&(e=qL()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=e,this._group&&this._group.remove(this),this)},t.prototype.resume=function(e){return e===void 0&&(e=qL()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=e-this._pauseStart,this._pauseStart=0,this._group&&this._group.add(this),this)},t.prototype.stopChainedTweens=function(){for(var e=0,n=this._chainedTweens.length;es)return!1;n&&this.start(e,!0)}if(this._goToEnd=!1,ed)return 1;var U=Math.trunc(l/r),G=l-U*r,A=Math.min(G/i._duration,1);return A===0&&l===i._duration?1:A},h=m(),Z=this._easingFunction(h);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,Z),this._onUpdateCallback&&this._onUpdateCallback(this._object,h),this._duration===0||l>=this._duration)if(this._repeat>0){var b=Math.min(Math.trunc((l-this._duration)/r)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=b);for(a in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[a]=="string"&&(this._valuesStartRepeat[a]=this._valuesStartRepeat[a]+parseFloat(this._valuesEnd[a])),this._yoyo&&this._swapEndStartRepeatValues(a),this._valuesStart[a]=this._valuesStartRepeat[a];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=r*b,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var u=0,F=this._chainedTweens.length;uthis._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&t&&this._process(!0)};function _Fe(t){let e=t.slice(0,Math.min(4,t.size)),n=kd(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(e),n.promise}function DFe(t){let e=kd(),n=new FileReader;return n.addEventListener("load",function(){e.resolve(n.result)}),n.addEventListener("error",function(){e.reject(n.error)}),n.readAsText(t),e.promise}function xEt(t){let e={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,a;for(let s in e)e.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),a=`xmlns:${s}=`,o.test(t)&&t.indexOf(a)===-1&&(c(n)||(n=t.substr(0,t.indexOf("",e),i,o,a;for(;e!==-1&&e0?(zm.maximumRed=a,zm.red=void 0):(zm.maximumRed=void 0,zm.red=0),o>0?(zm.maximumGreen=o,zm.green=void 0):(zm.maximumGreen=void 0,zm.green=0),i>0?(zm.maximumBlue=i,zm.blue=void 0):(zm.maximumBlue=void 0,zm.blue=0),zm.alpha=n,v.fromRandom(zm)):new v(a,o,i,n)}function YT(t,e,n){let i=Gi(t,e,n);if(c(i))return Bit(i,Gi(t,"colorMode",n)==="random")}function HFe(t){let e=Lo(t,"TimeStamp",se.kmlgx),n=Gi(e,"when",se.kmlgx);if(!c(e)||!c(n)||n.length===0)return;let i=rt.fromIso8601(n),o=new ys;return o.addInterval(new ai({start:i,stop:Re.MAXIMUM_VALUE})),o}function wFe(t){let e=Lo(t,"TimeSpan",se.kmlgx);if(!c(e))return;let n,i=Lo(e,"begin",se.kmlgx),o=c(i)?rt.fromIso8601(i.textContent):void 0,a=Lo(e,"end",se.kmlgx),s=c(a)?rt.fromIso8601(a.textContent):void 0;if(c(o)&&c(s)){if(rt.lessThan(s,o)){let l=o;o=s,s=l}n=new ys,n.addInterval(new ai({start:o,stop:s}))}else c(o)?(n=new ys,n.addInterval(new ai({start:o,stop:Re.MAXIMUM_VALUE}))):c(s)&&(n=new ys,n.addInterval(new ai({start:Re.MINIMUM_VALUE,stop:s})));return n}function LEt(){let t=new Mr;return t.width=KF,t.height=KF,t.scaleByDistance=new ln(gEt,EEt,CEt,IEt),t.pixelOffsetScaleByDistance=new ln(gEt,EEt,CEt,IEt),t}function Xit(){let t=new sZ;return t.outline=!0,t.outlineColor=v.WHITE,t}function MEt(){let t=new aZ;return t.translucencyByDistance=new ln(3e6,1,5e6,0),t.pixelOffset=new K(17,0),t.horizontalOrigin=to.LEFT,t.font="16px sans-serif",t.style=Pa.FILL_AND_OUTLINE,t}function Jit(t,e,n,i,o){let a=Gi(t,"href",se.kml);if(!c(a)||a.length===0)return;if(a.indexOf("root://icons/palette-")===0){let l=a.charAt(21),r=f(io(t,"x",se.gx),0),d=f(io(t,"y",se.gx),0);r=Math.min(r/32,7),d=7-Math.min(d/32,7);let m=8*d+r;a=`https://maps.google.com/mapfiles/kml/pal${l}/icon${m}.png`}let s=xit(a,n,i);if(o){let l=Gi(t,"refreshMode",se.kml),r=Gi(t,"viewRefreshMode",se.kml);l==="onInterval"||l==="onExpire"?Gn(`kml-refreshMode-${l}`,`KML - Unsupported Icon refreshMode: ${l}`):(r==="onStop"||r==="onRegion")&&Gn(`kml-refreshMode-${r}`,`KML - Unsupported Icon viewRefreshMode: ${r}`);let d=f(Gi(t,"viewBoundScale",se.kml),1),m=r==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=f(Gi(t,"viewFormat",se.kml),m),Z=Gi(t,"httpQuery",se.kml);c(h)&&s.setQueryParameters(Tc(UK(h))),c(Z)&&s.setQueryParameters(Tc(UK(Z)));let b=e._ellipsoid;return Mit(s,e.camera,e.canvas,d,e._lastCameraView.bbox,b),s}return s}function PFe(t,e,n,i,o){let a=io(e,"scale",se.kml),s=io(e,"heading",se.kml),l=YT(e,"color",se.kml),r=Lo(e,"Icon",se.kml),d=Jit(r,t,i,o,!1);c(r)&&!c(d)&&(d=!1);let m=io(r,"x",se.gx),h=io(r,"y",se.gx),Z=io(r,"w",se.gx),b=io(r,"h",se.gx),u=Lo(e,"hotSpot",se.kml),F=zF(u,"x"),U=zF(u,"y"),G=sr(u,"xunits"),A=sr(u,"yunits"),T=n.billboard;c(T)||(T=LEt(),n.billboard=T),T.image=d,T.scale=a,T.color=l,(c(m)||c(h)||c(Z)||c(b))&&(T.imageSubRegion=new Fe(m,h,Z,b)),c(s)&&s!==0&&(T.rotation=k.toRadians(-s),T.alignedAxis=p.UNIT_Z),a=f(a,1);let g,C;c(F)&&(G==="pixels"?g=-F*a:G==="insetPixels"?g=(F-KF)*a:G==="fraction"&&(g=-F*KF*a),g+=KF*.5*a),c(U)&&(A==="pixels"?C=U*a:A==="insetPixels"?C=(-U+KF)*a:A==="fraction"&&(C=U*KF*a),C-=KF*.5*a),(c(g)||c(C))&&(T.pixelOffset=new K(g,C))}function FK(t,e,n,i,o){for(let a=0,s=e.childNodes.length;a:clampToSeaFloor is currently not supported, using :clampToGround."),Ge.CLAMP_TO_GROUND):e==="relativeToSeaFloor"?(Gn("kml-gx:altitudeMode-relativeToSeaFloor","KML - :relativeToSeaFloor is currently not supported, using :relativeToGround."),Ge.RELATIVE_TO_GROUND):(c(t)?Gn("kml-altitudeMode-unknown",`KML - Unknown :${t}, using :CLAMP_TO_GROUND.`):Gn("kml-gx:altitudeMode-unknown",`KML - Unknown :${e}, using :CLAMP_TO_GROUND.`),Ge.CLAMP_TO_GROUND)}function zFe(t,e,n){return n==="relativeToSeaFloor"||e==="absolute"||e==="relativeToGround"?t:((c(e)&&e!=="clampToGround"||c(n)&&n!=="clampToSeaFloor")&&Gn("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${f(e,n)}`),new vc(t))}function jFe(t,e,n,i){if(!c(t))return;if(n==="relativeToSeaFloor"||e==="absolute"||e==="relativeToGround")return t;(c(e)&&e!=="clampToGround"||c(n)&&n!=="clampToSeaFloor")&&Gn("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${f(e,n)}`);let o=t.length;for(let a=0;a0&&Gn("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let b=Math.min(l.length,d.length),u=[],F=[];for(let G=0;G0&&i.availability.addInterval(new ai({start:F[0],stop:F[F.length-1]})),h&&m&&Lit(e,i,o),!0}function kEt(t,e,n,i,o,a,s,l,r){let d=t[0],m=t[t.length-1],h=new Bs;h.addSamples(t,e),n.intervals.addInterval(new ai({start:d,stop:m,isStartIncluded:r,isStopIncluded:r,data:zFe(h,s,l)})),i.addInterval(new ai({start:d,stop:m,isStartIncluded:r,isStopIncluded:r})),o.intervals.addInterval(new ai({start:d,stop:m,isStartIncluded:r,isStopIncluded:r,data:a}))}function eUe(t,e,n,i,o){let a=vZ(n,"interpolate",se.gx),s=PZ(n,"Track",se.gx),l,r,d,m=!1,h=new _m,Z=new ys,b=new cl,u=t._ellipsoid;for(let F=0,U=s.length;F0)){for(u='',a=0;a`;u+="
${f(F.displayName,s)}${f(F.value,"")}
"}if(!c(u))return;u=LFe.link(u),Ba.innerHTML=u;let U=Ba.querySelectorAll("a");for(a=0;a1&&(Kh(Ba,"a","href",i),Kh(Ba,"link","href",i),Kh(Ba,"area","href",i),Kh(Ba,"img","src",i),Kh(Ba,"iframe","src",i),Kh(Ba,"video","src",i),Kh(Ba,"audio","src",i),Kh(Ba,"source","src",i),Kh(Ba,"track","src",i),Kh(Ba,"input","src",i),Kh(Ba,"embed","src",i),Kh(Ba,"script","src",i),Kh(Ba,"video","poster",i)),zh(Ba,"a","href",o),zh(Ba,"link","href",o),zh(Ba,"area","href",o),zh(Ba,"img","src",o),zh(Ba,"iframe","src",o),zh(Ba,"video","src",o),zh(Ba,"audio","src",o),zh(Ba,"source","src",o),zh(Ba,"track","src",o),zh(Ba,"input","src",o),zh(Ba,"embed","src",o),zh(Ba,"script","src",o),zh(Ba,"video","poster",o);let G='
',G+=`${Ba.innerHTML}
`,Ba.innerHTML="",e.description=G}function TK(t,e,n){let i=n.entityCollection,o=n.parentEntity,a=n.sourceResource,s=n.uriResolver,l=JEt(e,i,n.context),r=l.kml,d=vFe(t,e,n.styleCollection,a,s),m=Gi(e,"name",se.kml);l.name=m,l.parent=o;let h=wFe(e);c(h)||(h=HFe(e)),l.availability=h,Dit(l);function Z(T){return T?T.show&&Z(T.parent):!0}let b=vZ(e,"visibility",se.kml);l.show=Z(o)&&f(b,!0);let u=Lo(e,"author",se.atom),F=r.author;F.name=Gi(u,"name",se.atom),F.uri=Gi(u,"uri",se.atom),F.email=Gi(u,"email",se.atom);let U=Lo(e,"link",se.atom),G=r.link;G.href=sr(U,"href"),G.hreflang=sr(U,"hreflang"),G.rel=sr(U,"rel"),G.type=sr(U,"type"),G.title=sr(U,"title"),G.length=sr(U,"length"),r.address=Gi(e,"address",se.kml),r.phoneNumber=Gi(e,"phoneNumber",se.kml),r.snippet=Gi(e,"Snippet",se.kml),oUe(e,l),aUe(e,l,d,s,a);let A=t._ellipsoid;return vEt(e,l,A),PEt(e,l,A),c(Lo(e,"Region",se.kml))&&Gn("kml-region","KML - Placemark Regions are unsupported"),{entity:l,styleEntity:d}}function wEt(t,e,n,i){i.addNodes(e.childNodes,n),i.process()}function sUe(t,e,n,i){let o=TK(t,e,n),a=be(n);a.parentEntity=o.entity,wEt(t,e,a,i)}function lUe(t,e,n,i){let o=TK(t,e,n),a=o.entity,s=o.styleEntity,l=!1,r=e.childNodes;for(let d=0,m=r.length;dk.PI_OVER_TWO?k.PI_OVER_TWO:d}function l(d){return d>k.PI?d-k.TWO_PI:d<-k.PI?d+k.TWO_PI:d}let r=bG(t.queryParameters);if(r=r.replace(/%5B/g,"[").replace(/%5D/g,"]"),c(e)&&e._mode!==ut.MORPHING){let d,m;if(o=f(o,uUe),c(n)&&(Nit.x=n.clientWidth*.5,Nit.y=n.clientHeight*.5,d=e.pickEllipsoid(Nit,a,ZUe)),c(d)?m=a.cartesianToCartographic(d,_I):(m=Gt.center(o,_I),d=a.cartographicToCartesian(m)),c(i)&&!k.equalsEpsilon(i,1,k.EPSILON9)){let G=o.width*i*.5,A=o.height*i*.5;o=new Gt(l(m.longitude-G),s(m.latitude-A),l(m.longitude+G),s(m.latitude+A))}r=r.replace("[bboxWest]",k.toDegrees(o.west).toString()),r=r.replace("[bboxSouth]",k.toDegrees(o.south).toString()),r=r.replace("[bboxEast]",k.toDegrees(o.east).toString()),r=r.replace("[bboxNorth]",k.toDegrees(o.north).toString());let h=k.toDegrees(m.longitude).toString(),Z=k.toDegrees(m.latitude).toString();r=r.replace("[lookatLon]",h),r=r.replace("[lookatLat]",Z),r=r.replace("[lookatTilt]",k.toDegrees(e.pitch).toString()),r=r.replace("[lookatHeading]",k.toDegrees(e.heading).toString()),r=r.replace("[lookatRange]",p.distance(e.positionWC,d)),r=r.replace("[lookatTerrainLon]",h),r=r.replace("[lookatTerrainLat]",Z),r=r.replace("[lookatTerrainAlt]",m.height.toString()),a.cartesianToCartographic(e.positionWC,_I),r=r.replace("[cameraLon]",k.toDegrees(_I.longitude).toString()),r=r.replace("[cameraLat]",k.toDegrees(_I.latitude).toString()),r=r.replace("[cameraAlt]",k.toDegrees(_I.height).toString());let b=e.frustum,u=b.aspectRatio,F="",U="";if(c(u)){let G=k.toDegrees(b.fov);u>1?(F=G,U=G/u):(U=G,F=G*u)}r=r.replace("[horizFov]",F.toString()),r=r.replace("[vertFov]",U.toString())}else r=r.replace("[bboxWest]","-180"),r=r.replace("[bboxSouth]","-90"),r=r.replace("[bboxEast]","180"),r=r.replace("[bboxNorth]","90"),r=r.replace("[lookatLon]",""),r=r.replace("[lookatLat]",""),r=r.replace("[lookatRange]",""),r=r.replace("[lookatTilt]",""),r=r.replace("[lookatHeading]",""),r=r.replace("[lookatTerrainLon]",""),r=r.replace("[lookatTerrainLat]",""),r=r.replace("[lookatTerrainAlt]",""),r=r.replace("[cameraLon]",""),r=r.replace("[cameraLat]",""),r=r.replace("[cameraAlt]",""),r=r.replace("[horizFov]",""),r=r.replace("[vertFov]","");c(n)?(r=r.replace("[horizPixels]",n.clientWidth),r=r.replace("[vertPixels]",n.clientHeight)):(r=r.replace("[horizPixels]",""),r=r.replace("[vertPixels]","")),r=r.replace("[terrainEnabled]","1"),r=r.replace("[clientVersion]","1"),r=r.replace("[kmlVersion]","2.2"),r=r.replace("[clientName]","Cesium"),r=r.replace("[language]","English"),t.setQueryParameters(Tc(r))}function VUe(t,e,n,i){let a=TK(t,e,n).entity,s=n.sourceResource,l=n.uriResolver,r=Lo(e,"Link",se.kml);if(c(r)||(r=Lo(e,"Url",se.kml)),c(r)){let d=Gi(r,"href",se.kml),m,h;if(c(d)){let Z=d;if(d=xit(d,s,n.uriResolver),/^data:/.test(d.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(Z=s.getDerivedResource({url:Z}));else{if(Z=d.clone(),m=Gi(r,"viewRefreshMode",se.kml),m==="onRegion"){Gn("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=f(Gi(r,"viewBoundScale",se.kml),1);let U=m==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",G=f(Gi(r,"viewFormat",se.kml),U),A=Gi(r,"httpQuery",se.kml);c(G)&&d.setQueryParameters(Tc(UK(G))),c(A)&&d.setQueryParameters(Tc(UK(A)));let T=t._ellipsoid;Mit(d,t.camera,t.canvas,h,t._lastCameraView.bbox,T)}let b={sourceUri:Z,uriResolver:l,context:a.id,screenOverlayContainer:n.screenOverlayContainer},u=new gr,F=_it(t,u,d,b).then(function(U){let G=t._entityCollection,A=u.values;G.suspendEvents();for(let C=0;C0||T==="onExpire"||m==="onStop"){let C=Lo(U,"NetworkLinkControl",se.kml),y=c(C),Y=rt.now(),Q={id:Si(),href:d,cookie:{},lastUpdated:Y,updating:!1,entity:a,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:Y},J=0;if(y&&(Q.cookie=Tc(f(Gi(C,"cookie",se.kml),"")),J=f(io(C,"minRefreshPeriod",se.kml),0)),T==="onInterval")y&&(g=Math.max(J,g)),Q.refreshMode=jF.INTERVAL,Q.time=g;else if(T==="onExpire"){let M;if(y&&(M=Gi(C,"expires",se.kml)),c(M))try{let V=rt.fromIso8601(M),E=rt.secondsDifference(V,Y);E>0&&E0;)this._screenOverlays.pop().remove()};function Dit(t){let e=t.parent;if(c(e)){let n=e.availability;if(c(n)){let i=t.availability;c(i)?i.intersect(n):t.availability=n}}}function WUe(t,e,n,i,o){return function(a){if(!i.contains(e.id))return;let s=!1,l=Lo(a,"NetworkLinkControl",se.kml),r=c(l),d=0;if(r){if(c(Lo(l,"Update",se.kml))){Gn("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),e.updating=!1,i.remove(e.id);return}e.cookie=Tc(f(Gi(l,"cookie",se.kml),"")),d=f(io(l,"minRefreshPeriod",se.kml),0)}let m=rt.now(),h=e.refreshMode;if(h===jF.INTERVAL)c(l)&&(e.time=Math.max(d,e.time));else if(h===jF.EXPIRE){let Y;if(c(l)&&(Y=Gi(l,"expires",se.kml)),c(Y))try{let Q=rt.fromIso8601(Y),J=rt.secondsDifference(Q,m);J>0&&Jm.time&&(Z=!0):m.refreshMode===jF.EXPIRE?rt.greaterThan(n,m.time)&&(Z=!0):m.refreshMode===jF.STOP&&(a&&(m.needsUpdate=!0,m.cameraUpdateTime=n),m.needsUpdate&&rt.secondsDifference(n,m.cameraUpdateTime)>=m.time&&(Z=!0)),Z){o(h),m.updating=!0;let b=new gr,u=m.href.clone();u.setQueryParameters(m.cookie);let F=f(i._ellipsoid,mt.WGS84);Mit(u,i.camera,i.canvas,m.viewBoundScale,s.bbox,F),_it(i,b,u,{context:h.id}).then(WUe(i,m,b,r,u)).catch(function(U){let G=`NetworkLink ${m.href} refresh failed: ${U}`;console.log(G),i._error.raiseEvent(i,G)}),d=!0}}r.set(m.id,m)}}),d&&(this._networkLinks=r,this._changed.raiseEvent(this)),!0};function fUe(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}jh._DeferredLoading=Cb;jh._getTimestamp=Oi;var iM=jh;var OJi=R(W(),1);var tCt=R(zEt(),1);var{abs:OI,min:Oit,max:jEt,ceil:SK,PI:gK,round:Hit}=Math,{toDegrees:qEt,toRadians:eCt}=k,HI=[.00675,.0125,.025,.05,.1,.2,.5,1,2,5,10].map(eCt),FUe=15,UUe=FUe,$Et=eCt(3),{MAX_VALUE:EK}=Gt,GUe=(t,e)=>{let n=new $e({geometry:new kR({positions:t,width:1}),attributes:{color:En.fromColor(e)}});return new Gh({geometryInstances:n,appearance:new zl({material:eo.fromType("Color",{color:e})})})},wit=class{constructor(e){this.viewer=e,this.lastRefresh=0,this.debounce=50,this.showLabels=!0,this.labelSettings={font:"12px Arial",outlineColor:v.BLACK,outlineWidth:4,style:Pa.FILL_AND_OUTLINE,eyeOffset:p.ZERO,scale:1,scaleByDistance:new ln(1,.85,8e6,.4)},this.ellipsoid=e.scene.globe.ellipsoid;let{scene:n}=e;this.labelEntities=[],this.polylines=new Mc,this.groundPolylines=[],n.primitives.add(this.polylines),this.currentExtent=this.getExtentView(),this.render=(0,tCt.debounce)(()=>{if(this._destroyed)return;this.viewer.scene.camera.percentageChanged=.1;let i=this.lastRefresh;if(new Date().getTime()-i{this.render()}),this.resizeObserver.observe(e.container),this.cameraChangedEventListener=i=>{this.render()},e.scene.camera.changed.addEventListener(this.cameraChangedEventListener),this.boundRender=this.render.bind(this),e.container.addEventListener("resize",this.boundRender),this._destroyed=!1,this.render()}removeAllLabels(){this.labelEntities.forEach(e=>{this.viewer.entities.remove(e)}),this.labelEntities=[]}destroy(){if(this._destroyed){console.error("destroy has already been called.");return}this.resizeObserver&&this.resizeObserver.disconnect(),this.cameraChangedEventListener&&this.viewer.scene.camera.changed.removeEventListener(this.cameraChangedEventListener),this.boundRender&&this.viewer.container.removeEventListener("resize",this.boundRender),this.removeAllLabels(),this.removePolylines(),this._destroyed=!0}isCameraCloseToGround(){return this.viewer.camera.positionCartographic.height<455983}hasTerrainProvider(){return!(this.viewer.terrainProvider instanceof Ru)}lineGraphicsObj(e,n,i){let o;if(i)return o=this.ellipsoid.cartographicArrayToCartesianArray(e),GUe(o,n);let a=e.map(s=>new gt(s.longitude,s.latitude,this.hasTerrainProvider()?this.viewer.camera.positionCartographic.height/90+1e9/this.viewer.camera.positionCartographic.height:10));return o=this.ellipsoid.cartographicArrayToCartesianArray(a),{positions:o,width:.5,material:eo.fromType("Color",{color:n})}}removePolylines(){this.polylines.removeAll();for(let e=0;e=Math.PI/2-s,r=e.south<=-Math.PI/2+s,m=l||r?0:UUe;for(a=0;aEK.east?G=e._east-(Y-EK.east):G=Y;let Q=[];for(U=Z;U=0?"N":"S":e>=0?"E":"W"}`}},Pit=wit;var t5i=R(W(),1);var __i=R(W(),1);var aLi=R(W(),1);var zJi=R(W(),1);var vit=class{constructor({name:e=null,orientation:n=new wt(0,0,0,1),inheritParentOrientation:i=!0}){this._id=Si(),this._name=e,this._inheritParentOrientation=i,this._setOrientation(n)}_setOrientation(e){e instanceof et?this._orientation=e:this._orientation=new Ii(e)}get id(){return this._id}get orientation(){return this._orientation}set orientation(e){this._setOrientation(e)}get inheritParentOrientation(){return this._inheritParentOrientation}set inheritParentOrientation(e){this._inheritParentOrientation=e}},oW=vit;var xT=class extends oW{constructor(e){super(e),this._minimumClockAngle=void 0,this._minimumClockAngleSubscription=void 0,this._maximumClockAngle=void 0,this._maximumClockAngleSubscription=void 0,this._innerHalfAngle=void 0,this._innerHalfAngleSubscription=void 0,this._outerHalfAngle=void 0,this._outerHalfAngleSubscription=void 0,this._lateralSurfaceMaterial=void 0,this._lateralSurfaceMaterialSubscription=void 0,this._intersectionColor=void 0,this._intersectionColorSubscription=void 0,this._intersectionWidth=void 0,this._intersectionWidthSubscription=void 0,this._showIntersection=void 0,this._showIntersectionSubscription=void 0,this._radius=void 0,this._radiusSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._definitionChanged=new It,this.merge(f(e,f.EMPTY_OBJECT))}};Object.defineProperties(xT.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},minimumClockAngle:ft("minimumClockAngle"),maximumClockAngle:ft("maximumClockAngle"),innerHalfAngle:ft("innerHalfAngle"),outerHalfAngle:ft("outerHalfAngle"),lateralSurfaceMaterial:la("lateralSurfaceMaterial"),intersectionColor:ft("intersectionColor"),intersectionWidth:ft("intersectionWidth"),showIntersection:ft("showIntersection"),radius:ft("radius"),show:ft("show")});xT.prototype.clone=function(t){return c(t)||(t=new xT),t.show=this.show,t.innerHalfAngle=this.innerHalfAngle,t.outerHalfAngle=this.outerHalfAngle,t.minimumClockAngle=this.minimumClockAngle,t.maximumClockAngle=this.maximumClockAngle,t.radius=this.radius,t.showIntersection=this.showIntersection,t.intersectionColor=this.intersectionColor,t.intersectionWidth=this.intersectionWidth,t.lateralSurfaceMaterial=this.lateralSurfaceMaterial,t};xT.prototype.merge=function(t){if(!c(t))throw new Ut("source is required.");this.show=f(this.show,t.show),this.innerHalfAngle=f(this.innerHalfAngle,t.innerHalfAngle),this.outerHalfAngle=f(this.outerHalfAngle,t.outerHalfAngle),this.minimumClockAngle=f(this.minimumClockAngle,t.minimumClockAngle),this.maximumClockAngle=f(this.maximumClockAngle,t.maximumClockAngle),this.radius=f(this.radius,t.radius),this.showIntersection=f(this.showIntersection,t.showIntersection),this.intersectionColor=f(this.intersectionColor,t.intersectionColor),this.intersectionWidth=f(this.intersectionWidth,t.intersectionWidth),this.lateralSurfaceMaterial=f(this.lateralSurfaceMaterial,t.lateralSurfaceMaterial)};var XT=xT;var RMi=R(W(),1);var zLi=R(W(),1);var lLi=R(W(),1),wI=`#version 300 es +`)),!x)return null;Se=me(x,!0)}return Se.shift()},Ai={ttys:[],init:function(){},shutdown:function(){},register:function(x,D){Ai.ttys[x]={input:[],output:[],ops:D},ht.registerDevice(x,Ai.stream_ops)},stream_ops:{open:function(x){var D=Ai.ttys[x.node.rdev];if(!D)throw new ht.ErrnoError(43);x.tty=D,x.seekable=!1},close:function(x){x.tty.ops.fsync(x.tty)},fsync:function(x){x.tty.ops.fsync(x.tty)},read:function(x,D,j,lt,ut){if(!x.tty||!x.tty.ops.get_char)throw new ht.ErrnoError(60);for(var yt=0,Yt=0;Yt0&&(S(GZ(x.output,0)),x.output=[])},ioctl_tcgets:function(x){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(x,D,j){return 0},ioctl_tiocgwinsz:function(x){return[24,80]}},default_tty1_ops:{put_char:function(x,D){D===null||D===10?(g(GZ(x.output,0)),x.output=[]):D!=0&&x.output.push(D)},fsync:function(x){x.output&&x.output.length>0&&(g(GZ(x.output,0)),x.output=[])}}},ia=x=>{We("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")},ni={ops_table:null,mount(x){return ni.createNode(null,"/",16895,0)},createNode(x,D,j,lt){if(ht.isBlkdev(j)||ht.isFIFO(j))throw new ht.ErrnoError(63);ni.ops_table||(ni.ops_table={dir:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr,lookup:ni.node_ops.lookup,mknod:ni.node_ops.mknod,rename:ni.node_ops.rename,unlink:ni.node_ops.unlink,rmdir:ni.node_ops.rmdir,readdir:ni.node_ops.readdir,symlink:ni.node_ops.symlink},stream:{llseek:ni.stream_ops.llseek}},file:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr},stream:{llseek:ni.stream_ops.llseek,read:ni.stream_ops.read,write:ni.stream_ops.write,allocate:ni.stream_ops.allocate,mmap:ni.stream_ops.mmap,msync:ni.stream_ops.msync}},link:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr,readlink:ni.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ni.node_ops.getattr,setattr:ni.node_ops.setattr},stream:ht.chrdev_stream_ops}});var ut=ht.createNode(x,D,j,lt);return ht.isDir(ut.mode)?(ut.node_ops=ni.ops_table.dir.node,ut.stream_ops=ni.ops_table.dir.stream,ut.contents={}):ht.isFile(ut.mode)?(ut.node_ops=ni.ops_table.file.node,ut.stream_ops=ni.ops_table.file.stream,ut.usedBytes=0,ut.contents=null):ht.isLink(ut.mode)?(ut.node_ops=ni.ops_table.link.node,ut.stream_ops=ni.ops_table.link.stream):ht.isChrdev(ut.mode)&&(ut.node_ops=ni.ops_table.chrdev.node,ut.stream_ops=ni.ops_table.chrdev.stream),ut.timestamp=Date.now(),x&&(x.contents[D]=ut,x.timestamp=ut.timestamp),ut},getFileDataAsTypedArray(x){return x.contents?x.contents.subarray?x.contents.subarray(0,x.usedBytes):new Uint8Array(x.contents):new Uint8Array(0)},expandFileStorage(x,D){var j=x.contents?x.contents.length:0;if(!(j>=D)){var lt=1024*1024;D=Math.max(D,j*(j>>0),j!=0&&(D=Math.max(D,256));var ut=x.contents;x.contents=new Uint8Array(D),x.usedBytes>0&&x.contents.set(ut.subarray(0,x.usedBytes),0)}},resizeFileStorage(x,D){if(x.usedBytes!=D)if(D==0)x.contents=null,x.usedBytes=0;else{var j=x.contents;x.contents=new Uint8Array(D),j&&x.contents.set(j.subarray(0,Math.min(D,x.usedBytes))),x.usedBytes=D}},node_ops:{getattr(x){var D={};return D.dev=ht.isChrdev(x.mode)?x.id:1,D.ino=x.id,D.mode=x.mode,D.nlink=1,D.uid=0,D.gid=0,D.rdev=x.rdev,ht.isDir(x.mode)?D.size=4096:ht.isFile(x.mode)?D.size=x.usedBytes:ht.isLink(x.mode)?D.size=x.link.length:D.size=0,D.atime=new Date(x.timestamp),D.mtime=new Date(x.timestamp),D.ctime=new Date(x.timestamp),D.blksize=4096,D.blocks=Math.ceil(D.size/D.blksize),D},setattr(x,D){D.mode!==void 0&&(x.mode=D.mode),D.timestamp!==void 0&&(x.timestamp=D.timestamp),D.size!==void 0&&ni.resizeFileStorage(x,D.size)},lookup(x,D){throw ht.genericErrors[44]},mknod(x,D,j,lt){return ni.createNode(x,D,j,lt)},rename(x,D,j){if(ht.isDir(x.mode)){var lt;try{lt=ht.lookupNode(D,j)}catch{}if(lt)for(var ut in lt.contents)throw new ht.ErrnoError(55)}delete x.parent.contents[x.name],x.parent.timestamp=Date.now(),x.name=j,D.contents[j]=x,D.timestamp=x.parent.timestamp,x.parent=D},unlink(x,D){delete x.contents[D],x.timestamp=Date.now()},rmdir(x,D){var j=ht.lookupNode(x,D);for(var lt in j.contents)throw new ht.ErrnoError(55);delete x.contents[D],x.timestamp=Date.now()},readdir(x){var D=[".",".."];for(var j in x.contents)x.contents.hasOwnProperty(j)&&D.push(j);return D},symlink(x,D,j){var lt=ni.createNode(x,D,41471,0);return lt.link=j,lt},readlink(x){if(!ht.isLink(x.mode))throw new ht.ErrnoError(28);return x.link}},stream_ops:{read(x,D,j,lt,ut){var yt=x.node.contents;if(ut>=x.node.usedBytes)return 0;var Yt=Math.min(x.node.usedBytes-ut,lt);if(Z(Yt>=0),Yt>8&&yt.subarray)D.set(yt.subarray(ut,ut+Yt),j);else for(var Dt=0;Dt0||j+D{var ut=lt?"":zt(`al ${x}`);U(x,yt=>{Z(yt,`Loading data file "${x}" failed (no arrayBuffer).`),D(new Uint8Array(yt)),ut&&Ve(ut)},yt=>{if(j)j();else throw`Loading data file "${x}" failed.`}),ut&&ke(ut)},BN=n.preloadPlugins||[];function z4(x,D,j,lt){typeof Browser<"u"&&Browser.init();var ut=!1;return BN.forEach(function(yt){ut||yt.canHandle(D)&&(yt.handle(x,D,j,lt),ut=!0)}),ut}function hm(x,D,j,lt,ut,yt,Yt,Dt,pe,Te){var en=D?vt.resolve(Ta.join2(x,D)):x,Zn=zt(`cp ${en}`);function Rn(bn){function Xn(vi){Te&&Te(),Dt||ht.createDataFile(x,D,vi,lt,ut,pe),yt&&yt(),Ve(Zn)}z4(bn,en,Xn,()=>{Yt&&Yt(),Ve(Zn)})||Xn(bn)}ke(Zn),typeof j=="string"?Oa(j,bn=>Rn(bn),Yt):Rn(j)}function gg(x){var D={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},j=D[x];if(typeof j>"u")throw new Error(`Unknown file open mode: ${x}`);return j}function QN(x,D){var j=0;return x&&(j|=365),D&&(j|=146),j}var KW={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},zW={};function Eg(x){return Go("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"),x}function ga(x){var D=/\b_Z[\w\d_]+/g;return x.replace(D,function(j){var lt=Eg(j);return j===lt?j:lt+" ["+j+"]"})}var ht={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(x,D={})=>{if(x=vt.resolve(x),!x)return{path:"",node:null};var j={follow_mount:!0,recurse_count:0};if(D=Object.assign(j,D),D.recurse_count>8)throw new ht.ErrnoError(32);for(var lt=x.split("/").filter(Zn=>!!Zn),ut=ht.root,yt="/",Yt=0;Yt40)throw new ht.ErrnoError(32)}}return{path:yt,node:ut}},getPath:x=>{for(var D;;){if(ht.isRoot(x)){var j=x.mount.mountpoint;return D?j[j.length-1]!=="/"?`${j}/${D}`:j+D:j}D=D?`${x.name}/${D}`:x.name,x=x.parent}},hashName:(x,D)=>{for(var j=0,lt=0;lt>>0)%ht.nameTable.length},hashAddNode:x=>{var D=ht.hashName(x.parent.id,x.name);x.name_next=ht.nameTable[D],ht.nameTable[D]=x},hashRemoveNode:x=>{var D=ht.hashName(x.parent.id,x.name);if(ht.nameTable[D]===x)ht.nameTable[D]=x.name_next;else for(var j=ht.nameTable[D];j;){if(j.name_next===x){j.name_next=x.name_next;break}j=j.name_next}},lookupNode:(x,D)=>{var j=ht.mayLookup(x);if(j)throw new ht.ErrnoError(j,x);for(var lt=ht.hashName(x.id,D),ut=ht.nameTable[lt];ut;ut=ut.name_next){var yt=ut.name;if(ut.parent.id===x.id&&yt===D)return ut}return ht.lookup(x,D)},createNode:(x,D,j,lt)=>{Z(typeof x=="object");var ut=new ht.FSNode(x,D,j,lt);return ht.hashAddNode(ut),ut},destroyNode:x=>{ht.hashRemoveNode(x)},isRoot:x=>x===x.parent,isMountpoint:x=>!!x.mounted,isFile:x=>(x&61440)===32768,isDir:x=>(x&61440)===16384,isLink:x=>(x&61440)===40960,isChrdev:x=>(x&61440)===8192,isBlkdev:x=>(x&61440)===24576,isFIFO:x=>(x&61440)===4096,isSocket:x=>(x&49152)===49152,flagsToPermissionString:x=>{var D=["r","w","rw"][x&3];return x&512&&(D+="w"),D},nodePermissions:(x,D)=>ht.ignorePermissions?0:D.includes("r")&&!(x.mode&292)||D.includes("w")&&!(x.mode&146)||D.includes("x")&&!(x.mode&73)?2:0,mayLookup:x=>{var D=ht.nodePermissions(x,"x");return D||(x.node_ops.lookup?0:2)},mayCreate:(x,D)=>{try{var j=ht.lookupNode(x,D);return 20}catch{}return ht.nodePermissions(x,"wx")},mayDelete:(x,D,j)=>{var lt;try{lt=ht.lookupNode(x,D)}catch(yt){return yt.errno}var ut=ht.nodePermissions(x,"wx");if(ut)return ut;if(j){if(!ht.isDir(lt.mode))return 54;if(ht.isRoot(lt)||ht.getPath(lt)===ht.cwd())return 10}else if(ht.isDir(lt.mode))return 31;return 0},mayOpen:(x,D)=>x?ht.isLink(x.mode)?32:ht.isDir(x.mode)&&(ht.flagsToPermissionString(D)!=="r"||D&512)?31:ht.nodePermissions(x,ht.flagsToPermissionString(D)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var x=0;x<=ht.MAX_OPEN_FDS;x++)if(!ht.streams[x])return x;throw new ht.ErrnoError(33)},getStreamChecked:x=>{var D=ht.getStream(x);if(!D)throw new ht.ErrnoError(8);return D},getStream:x=>ht.streams[x],createStream:(x,D=-1)=>(ht.FSStream||(ht.FSStream=function(){this.shared={}},ht.FSStream.prototype={},Object.defineProperties(ht.FSStream.prototype,{object:{get(){return this.node},set(j){this.node=j}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(j){this.shared.flags=j}},position:{get(){return this.shared.position},set(j){this.shared.position=j}}})),x=Object.assign(new ht.FSStream,x),D==-1&&(D=ht.nextfd()),x.fd=D,ht.streams[D]=x,x),closeStream:x=>{ht.streams[x]=null},chrdev_stream_ops:{open:x=>{var D=ht.getDevice(x.node.rdev);x.stream_ops=D.stream_ops,x.stream_ops.open&&x.stream_ops.open(x)},llseek:()=>{throw new ht.ErrnoError(70)}},major:x=>x>>8,minor:x=>x&255,makedev:(x,D)=>x<<8|D,registerDevice:(x,D)=>{ht.devices[x]={stream_ops:D}},getDevice:x=>ht.devices[x],getMounts:x=>{for(var D=[],j=[x];j.length;){var lt=j.pop();D.push(lt),j.push.apply(j,lt.mounts)}return D},syncfs:(x,D)=>{typeof x=="function"&&(D=x,x=!1),ht.syncFSRequests++,ht.syncFSRequests>1&&g(`warning: ${ht.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var j=ht.getMounts(ht.root.mount),lt=0;function ut(Yt){return Z(ht.syncFSRequests>0),ht.syncFSRequests--,D(Yt)}function yt(Yt){if(Yt)return yt.errored?void 0:(yt.errored=!0,ut(Yt));++lt>=j.length&&ut(null)}j.forEach(Yt=>{if(!Yt.type.syncfs)return yt(null);Yt.type.syncfs(Yt,x,yt)})},mount:(x,D,j)=>{if(typeof x=="string")throw x;var lt=j==="/",ut=!j,yt;if(lt&&ht.root)throw new ht.ErrnoError(10);if(!lt&&!ut){var Yt=ht.lookupPath(j,{follow_mount:!1});if(j=Yt.path,yt=Yt.node,ht.isMountpoint(yt))throw new ht.ErrnoError(10);if(!ht.isDir(yt.mode))throw new ht.ErrnoError(54)}var Dt={type:x,opts:D,mountpoint:j,mounts:[]},pe=x.mount(Dt);return pe.mount=Dt,Dt.root=pe,lt?ht.root=pe:yt&&(yt.mounted=Dt,yt.mount&&yt.mount.mounts.push(Dt)),pe},unmount:x=>{var D=ht.lookupPath(x,{follow_mount:!1});if(!ht.isMountpoint(D.node))throw new ht.ErrnoError(28);var j=D.node,lt=j.mounted,ut=ht.getMounts(lt);Object.keys(ht.nameTable).forEach(Yt=>{for(var Dt=ht.nameTable[Yt];Dt;){var pe=Dt.name_next;ut.includes(Dt.mount)&&ht.destroyNode(Dt),Dt=pe}}),j.mounted=null;var yt=j.mount.mounts.indexOf(lt);Z(yt!==-1),j.mount.mounts.splice(yt,1)},lookup:(x,D)=>x.node_ops.lookup(x,D),mknod:(x,D,j)=>{var lt=ht.lookupPath(x,{parent:!0}),ut=lt.node,yt=Ta.basename(x);if(!yt||yt==="."||yt==="..")throw new ht.ErrnoError(28);var Yt=ht.mayCreate(ut,yt);if(Yt)throw new ht.ErrnoError(Yt);if(!ut.node_ops.mknod)throw new ht.ErrnoError(63);return ut.node_ops.mknod(ut,yt,D,j)},create:(x,D)=>(D=D!==void 0?D:438,D&=4095,D|=32768,ht.mknod(x,D,0)),mkdir:(x,D)=>(D=D!==void 0?D:511,D&=1023,D|=16384,ht.mknod(x,D,0)),mkdirTree:(x,D)=>{for(var j=x.split("/"),lt="",ut=0;ut(typeof j>"u"&&(j=D,D=438),D|=8192,ht.mknod(x,D,j)),symlink:(x,D)=>{if(!vt.resolve(x))throw new ht.ErrnoError(44);var j=ht.lookupPath(D,{parent:!0}),lt=j.node;if(!lt)throw new ht.ErrnoError(44);var ut=Ta.basename(D),yt=ht.mayCreate(lt,ut);if(yt)throw new ht.ErrnoError(yt);if(!lt.node_ops.symlink)throw new ht.ErrnoError(63);return lt.node_ops.symlink(lt,ut,x)},rename:(x,D)=>{var j=Ta.dirname(x),lt=Ta.dirname(D),ut=Ta.basename(x),yt=Ta.basename(D),Yt,Dt,pe;if(Yt=ht.lookupPath(x,{parent:!0}),Dt=Yt.node,Yt=ht.lookupPath(D,{parent:!0}),pe=Yt.node,!Dt||!pe)throw new ht.ErrnoError(44);if(Dt.mount!==pe.mount)throw new ht.ErrnoError(75);var Te=ht.lookupNode(Dt,ut),en=vt.relative(x,lt);if(en.charAt(0)!==".")throw new ht.ErrnoError(28);if(en=vt.relative(D,j),en.charAt(0)!==".")throw new ht.ErrnoError(55);var Zn;try{Zn=ht.lookupNode(pe,yt)}catch{}if(Te!==Zn){var Rn=ht.isDir(Te.mode),bn=ht.mayDelete(Dt,ut,Rn);if(bn)throw new ht.ErrnoError(bn);if(bn=Zn?ht.mayDelete(pe,yt,Rn):ht.mayCreate(pe,yt),bn)throw new ht.ErrnoError(bn);if(!Dt.node_ops.rename)throw new ht.ErrnoError(63);if(ht.isMountpoint(Te)||Zn&&ht.isMountpoint(Zn))throw new ht.ErrnoError(10);if(pe!==Dt&&(bn=ht.nodePermissions(Dt,"w"),bn))throw new ht.ErrnoError(bn);ht.hashRemoveNode(Te);try{Dt.node_ops.rename(Te,pe,yt)}catch(Xn){throw Xn}finally{ht.hashAddNode(Te)}}},rmdir:x=>{var D=ht.lookupPath(x,{parent:!0}),j=D.node,lt=Ta.basename(x),ut=ht.lookupNode(j,lt),yt=ht.mayDelete(j,lt,!0);if(yt)throw new ht.ErrnoError(yt);if(!j.node_ops.rmdir)throw new ht.ErrnoError(63);if(ht.isMountpoint(ut))throw new ht.ErrnoError(10);j.node_ops.rmdir(j,lt),ht.destroyNode(ut)},readdir:x=>{var D=ht.lookupPath(x,{follow:!0}),j=D.node;if(!j.node_ops.readdir)throw new ht.ErrnoError(54);return j.node_ops.readdir(j)},unlink:x=>{var D=ht.lookupPath(x,{parent:!0}),j=D.node;if(!j)throw new ht.ErrnoError(44);var lt=Ta.basename(x),ut=ht.lookupNode(j,lt),yt=ht.mayDelete(j,lt,!1);if(yt)throw new ht.ErrnoError(yt);if(!j.node_ops.unlink)throw new ht.ErrnoError(63);if(ht.isMountpoint(ut))throw new ht.ErrnoError(10);j.node_ops.unlink(j,lt),ht.destroyNode(ut)},readlink:x=>{var D=ht.lookupPath(x),j=D.node;if(!j)throw new ht.ErrnoError(44);if(!j.node_ops.readlink)throw new ht.ErrnoError(28);return vt.resolve(ht.getPath(j.parent),j.node_ops.readlink(j))},stat:(x,D)=>{var j=ht.lookupPath(x,{follow:!D}),lt=j.node;if(!lt)throw new ht.ErrnoError(44);if(!lt.node_ops.getattr)throw new ht.ErrnoError(63);return lt.node_ops.getattr(lt)},lstat:x=>ht.stat(x,!0),chmod:(x,D,j)=>{var lt;if(typeof x=="string"){var ut=ht.lookupPath(x,{follow:!j});lt=ut.node}else lt=x;if(!lt.node_ops.setattr)throw new ht.ErrnoError(63);lt.node_ops.setattr(lt,{mode:D&4095|lt.mode&-4096,timestamp:Date.now()})},lchmod:(x,D)=>{ht.chmod(x,D,!0)},fchmod:(x,D)=>{var j=ht.getStreamChecked(x);ht.chmod(j.node,D)},chown:(x,D,j,lt)=>{var ut;if(typeof x=="string"){var yt=ht.lookupPath(x,{follow:!lt});ut=yt.node}else ut=x;if(!ut.node_ops.setattr)throw new ht.ErrnoError(63);ut.node_ops.setattr(ut,{timestamp:Date.now()})},lchown:(x,D,j)=>{ht.chown(x,D,j,!0)},fchown:(x,D,j)=>{var lt=ht.getStreamChecked(x);ht.chown(lt.node,D,j)},truncate:(x,D)=>{if(D<0)throw new ht.ErrnoError(28);var j;if(typeof x=="string"){var lt=ht.lookupPath(x,{follow:!0});j=lt.node}else j=x;if(!j.node_ops.setattr)throw new ht.ErrnoError(63);if(ht.isDir(j.mode))throw new ht.ErrnoError(31);if(!ht.isFile(j.mode))throw new ht.ErrnoError(28);var ut=ht.nodePermissions(j,"w");if(ut)throw new ht.ErrnoError(ut);j.node_ops.setattr(j,{size:D,timestamp:Date.now()})},ftruncate:(x,D)=>{var j=ht.getStreamChecked(x);if(!(j.flags&2097155))throw new ht.ErrnoError(28);ht.truncate(j.node,D)},utime:(x,D,j)=>{var lt=ht.lookupPath(x,{follow:!0}),ut=lt.node;ut.node_ops.setattr(ut,{timestamp:Math.max(D,j)})},open:(x,D,j)=>{if(x==="")throw new ht.ErrnoError(44);D=typeof D=="string"?gg(D):D,j=typeof j>"u"?438:j,D&64?j=j&4095|32768:j=0;var lt;if(typeof x=="object")lt=x;else{x=Ta.normalize(x);try{var ut=ht.lookupPath(x,{follow:!(D&131072)});lt=ut.node}catch{}}var yt=!1;if(D&64)if(lt){if(D&128)throw new ht.ErrnoError(20)}else lt=ht.mknod(x,j,0),yt=!0;if(!lt)throw new ht.ErrnoError(44);if(ht.isChrdev(lt.mode)&&(D&=-513),D&65536&&!ht.isDir(lt.mode))throw new ht.ErrnoError(54);if(!yt){var Yt=ht.mayOpen(lt,D);if(Yt)throw new ht.ErrnoError(Yt)}D&512&&!yt&&ht.truncate(lt,0),D&=-131713;var Dt=ht.createStream({node:lt,path:ht.getPath(lt),flags:D,seekable:!0,position:0,stream_ops:lt.stream_ops,ungotten:[],error:!1});return Dt.stream_ops.open&&Dt.stream_ops.open(Dt),n.logReadFiles&&!(D&1)&&(ht.readFiles||(ht.readFiles={}),x in ht.readFiles||(ht.readFiles[x]=1)),Dt},close:x=>{if(ht.isClosed(x))throw new ht.ErrnoError(8);x.getdents&&(x.getdents=null);try{x.stream_ops.close&&x.stream_ops.close(x)}catch(D){throw D}finally{ht.closeStream(x.fd)}x.fd=null},isClosed:x=>x.fd===null,llseek:(x,D,j)=>{if(ht.isClosed(x))throw new ht.ErrnoError(8);if(!x.seekable||!x.stream_ops.llseek)throw new ht.ErrnoError(70);if(j!=0&&j!=1&&j!=2)throw new ht.ErrnoError(28);return x.position=x.stream_ops.llseek(x,D,j),x.ungotten=[],x.position},read:(x,D,j,lt,ut)=>{if(Z(j>=0),lt<0||ut<0)throw new ht.ErrnoError(28);if(ht.isClosed(x))throw new ht.ErrnoError(8);if((x.flags&2097155)===1)throw new ht.ErrnoError(8);if(ht.isDir(x.node.mode))throw new ht.ErrnoError(31);if(!x.stream_ops.read)throw new ht.ErrnoError(28);var yt=typeof ut<"u";if(!yt)ut=x.position;else if(!x.seekable)throw new ht.ErrnoError(70);var Yt=x.stream_ops.read(x,D,j,lt,ut);return yt||(x.position+=Yt),Yt},write:(x,D,j,lt,ut,yt)=>{if(Z(j>=0),lt<0||ut<0)throw new ht.ErrnoError(28);if(ht.isClosed(x))throw new ht.ErrnoError(8);if(!(x.flags&2097155))throw new ht.ErrnoError(8);if(ht.isDir(x.node.mode))throw new ht.ErrnoError(31);if(!x.stream_ops.write)throw new ht.ErrnoError(28);x.seekable&&x.flags&1024&&ht.llseek(x,0,2);var Yt=typeof ut<"u";if(!Yt)ut=x.position;else if(!x.seekable)throw new ht.ErrnoError(70);var Dt=x.stream_ops.write(x,D,j,lt,ut,yt);return Yt||(x.position+=Dt),Dt},allocate:(x,D,j)=>{if(ht.isClosed(x))throw new ht.ErrnoError(8);if(D<0||j<=0)throw new ht.ErrnoError(28);if(!(x.flags&2097155))throw new ht.ErrnoError(8);if(!ht.isFile(x.node.mode)&&!ht.isDir(x.node.mode))throw new ht.ErrnoError(43);if(!x.stream_ops.allocate)throw new ht.ErrnoError(138);x.stream_ops.allocate(x,D,j)},mmap:(x,D,j,lt,ut)=>{if(lt&2&&!(ut&2)&&(x.flags&2097155)!==2)throw new ht.ErrnoError(2);if((x.flags&2097155)===1)throw new ht.ErrnoError(2);if(!x.stream_ops.mmap)throw new ht.ErrnoError(43);return x.stream_ops.mmap(x,D,j,lt,ut)},msync:(x,D,j,lt,ut)=>(Z(j>=0),x.stream_ops.msync?x.stream_ops.msync(x,D,j,lt,ut):0),munmap:x=>0,ioctl:(x,D,j)=>{if(!x.stream_ops.ioctl)throw new ht.ErrnoError(59);return x.stream_ops.ioctl(x,D,j)},readFile:(x,D={})=>{if(D.flags=D.flags||0,D.encoding=D.encoding||"binary",D.encoding!=="utf8"&&D.encoding!=="binary")throw new Error(`Invalid encoding type "${D.encoding}"`);var j,lt=ht.open(x,D.flags),ut=ht.stat(x),yt=ut.size,Yt=new Uint8Array(yt);return ht.read(lt,Yt,0,yt,0),D.encoding==="utf8"?j=GZ(Yt,0):D.encoding==="binary"&&(j=Yt),ht.close(lt),j},writeFile:(x,D,j={})=>{j.flags=j.flags||577;var lt=ht.open(x,j.flags,j.mode);if(typeof D=="string"){var ut=new Uint8Array(Sa(D)+1),yt=_W(D,ut,0,ut.length);ht.write(lt,ut,0,yt,void 0,j.canOwn)}else if(ArrayBuffer.isView(D))ht.write(lt,D,0,D.byteLength,void 0,j.canOwn);else throw new Error("Unsupported data type");ht.close(lt)},cwd:()=>ht.currentPath,chdir:x=>{var D=ht.lookupPath(x,{follow:!0});if(D.node===null)throw new ht.ErrnoError(44);if(!ht.isDir(D.node.mode))throw new ht.ErrnoError(54);var j=ht.nodePermissions(D.node,"x");if(j)throw new ht.ErrnoError(j);ht.currentPath=D.path},createDefaultDirectories:()=>{ht.mkdir("/tmp"),ht.mkdir("/home"),ht.mkdir("/home/web_user")},createDefaultDevices:()=>{ht.mkdir("/dev"),ht.registerDevice(ht.makedev(1,3),{read:()=>0,write:(lt,ut,yt,Yt,Dt)=>Yt}),ht.mkdev("/dev/null",ht.makedev(1,3)),Ai.register(ht.makedev(5,0),Ai.default_tty_ops),Ai.register(ht.makedev(6,0),Ai.default_tty1_ops),ht.mkdev("/dev/tty",ht.makedev(5,0)),ht.mkdev("/dev/tty1",ht.makedev(6,0));var x=new Uint8Array(1024),D=0,j=()=>(D===0&&(D=DV(x).byteLength),x[--D]);ht.createDevice("/dev","random",j),ht.createDevice("/dev","urandom",j),ht.mkdir("/dev/shm"),ht.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ht.mkdir("/proc");var x=ht.mkdir("/proc/self");ht.mkdir("/proc/self/fd"),ht.mount({mount:()=>{var D=ht.createNode(x,"fd",16895,73);return D.node_ops={lookup:(j,lt)=>{var ut=+lt,yt=ht.getStreamChecked(ut),Yt={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>yt.path}};return Yt.parent=Yt,Yt}},D}},{},"/proc/self/fd")},createStandardStreams:()=>{n.stdin?ht.createDevice("/dev","stdin",n.stdin):ht.symlink("/dev/tty","/dev/stdin"),n.stdout?ht.createDevice("/dev","stdout",null,n.stdout):ht.symlink("/dev/tty","/dev/stdout"),n.stderr?ht.createDevice("/dev","stderr",null,n.stderr):ht.symlink("/dev/tty1","/dev/stderr");var x=ht.open("/dev/stdin",0),D=ht.open("/dev/stdout",1),j=ht.open("/dev/stderr",1);Z(x.fd===0,`invalid handle for stdin (${x.fd})`),Z(D.fd===1,`invalid handle for stdout (${D.fd})`),Z(j.fd===2,`invalid handle for stderr (${j.fd})`)},ensureErrnoError:()=>{ht.ErrnoError||(ht.ErrnoError=function(D,j){this.name="ErrnoError",this.node=j,this.setErrno=function(lt){this.errno=lt;for(var ut in zW)if(zW[ut]===lt){this.code=ut;break}},this.setErrno(D),this.message=KW[D],this.stack&&(Object.defineProperty(this,"stack",{value:new Error().stack,writable:!0}),this.stack=ga(this.stack))},ht.ErrnoError.prototype=new Error,ht.ErrnoError.prototype.constructor=ht.ErrnoError,[44].forEach(x=>{ht.genericErrors[x]=new ht.ErrnoError(x),ht.genericErrors[x].stack=""}))},staticInit:()=>{ht.ensureErrnoError(),ht.nameTable=new Array(4096),ht.mount(ni,{},"/"),ht.createDefaultDirectories(),ht.createDefaultDevices(),ht.createSpecialDirectories(),ht.filesystems={MEMFS:ni}},init:(x,D,j)=>{Z(!ht.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),ht.init.initialized=!0,ht.ensureErrnoError(),n.stdin=x||n.stdin,n.stdout=D||n.stdout,n.stderr=j||n.stderr,ht.createStandardStreams()},quit:()=>{ht.init.initialized=!1,UO(0);for(var x=0;x{var j=ht.analyzePath(x,D);return j.exists?j.object:null},analyzePath:(x,D)=>{try{var j=ht.lookupPath(x,{follow:!D});x=j.path}catch{}var lt={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var j=ht.lookupPath(x,{parent:!0});lt.parentExists=!0,lt.parentPath=j.path,lt.parentObject=j.node,lt.name=Ta.basename(x),j=ht.lookupPath(x,{follow:!D}),lt.exists=!0,lt.path=j.path,lt.object=j.node,lt.name=j.node.name,lt.isRoot=j.path==="/"}catch(ut){lt.error=ut.errno}return lt},createPath:(x,D,j,lt)=>{x=typeof x=="string"?x:ht.getPath(x);for(var ut=D.split("/").reverse();ut.length;){var yt=ut.pop();if(yt){var Yt=Ta.join2(x,yt);try{ht.mkdir(Yt)}catch{}x=Yt}}return Yt},createFile:(x,D,j,lt,ut)=>{var yt=Ta.join2(typeof x=="string"?x:ht.getPath(x),D),Yt=QN(lt,ut);return ht.create(yt,Yt)},createDataFile:(x,D,j,lt,ut,yt)=>{var Yt=D;x&&(x=typeof x=="string"?x:ht.getPath(x),Yt=D?Ta.join2(x,D):x);var Dt=QN(lt,ut),pe=ht.create(Yt,Dt);if(j){if(typeof j=="string"){for(var Te=new Array(j.length),en=0,Zn=j.length;en{var ut=Ta.join2(typeof x=="string"?x:ht.getPath(x),D),yt=QN(!!j,!!lt);ht.createDevice.major||(ht.createDevice.major=64);var Yt=ht.makedev(ht.createDevice.major++,0);return ht.registerDevice(Yt,{open:Dt=>{Dt.seekable=!1},close:Dt=>{lt&<.buffer&<.buffer.length&<(10)},read:(Dt,pe,Te,en,Zn)=>{for(var Rn=0,bn=0;bn{for(var Rn=0;Rn{if(x.isDevice||x.isFolder||x.link||x.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(F)try{x.contents=me(F(x.url),!0),x.usedBytes=x.contents.length}catch{throw new ht.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(x,D,j,lt,ut)=>{function yt(){this.lengthKnown=!1,this.chunks=[]}if(yt.prototype.get=function(bn){if(!(bn>this.length-1||bn<0)){var Xn=bn%this.chunkSize,vi=bn/this.chunkSize|0;return this.getter(vi)[Xn]}},yt.prototype.setDataGetter=function(bn){this.getter=bn},yt.prototype.cacheLength=function(){var bn=new XMLHttpRequest;if(bn.open("HEAD",j,!1),bn.send(null),!(bn.status>=200&&bn.status<300||bn.status===304))throw new Error("Couldn't load "+j+". Status: "+bn.status);var Xn=Number(bn.getResponseHeader("Content-length")),vi,Ea=(vi=bn.getResponseHeader("Accept-Ranges"))&&vi==="bytes",Oo=(vi=bn.getResponseHeader("Content-Encoding"))&&vi==="gzip",Le=1024*1024;Ea||(Le=Xn);var kn=(Ya,Nd)=>{if(Ya>Nd)throw new Error("invalid range ("+Ya+", "+Nd+") or no bytes requested!");if(Nd>Xn-1)throw new Error("only "+Xn+" bytes available! programmer error!");var _s=new XMLHttpRequest;if(_s.open("GET",j,!1),Xn!==Le&&_s.setRequestHeader("Range","bytes="+Ya+"-"+Nd),_s.responseType="arraybuffer",_s.overrideMimeType&&_s.overrideMimeType("text/plain; charset=x-user-defined"),_s.send(null),!(_s.status>=200&&_s.status<300||_s.status===304))throw new Error("Couldn't load "+j+". Status: "+_s.status);return _s.response!==void 0?new Uint8Array(_s.response||[]):me(_s.responseText||"",!0)},fa=this;fa.setDataGetter(Ya=>{var Nd=Ya*Le,_s=(Ya+1)*Le-1;if(_s=Math.min(_s,Xn-1),typeof fa.chunks[Ya]>"u"&&(fa.chunks[Ya]=kn(Nd,_s)),typeof fa.chunks[Ya]>"u")throw new Error("doXHR failed!");return fa.chunks[Ya]}),(Oo||!Xn)&&(Le=Xn=1,Xn=this.getter(0).length,Le=Xn,S("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=Xn,this._chunkSize=Le,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!m)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var Yt=new yt;Object.defineProperties(Yt,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var Dt={isDevice:!1,contents:Yt}}else var Dt={isDevice:!1,url:j};var pe=ht.createFile(x,D,Dt,lt,ut);Dt.contents?pe.contents=Dt.contents:Dt.url&&(pe.contents=null,pe.url=Dt.url),Object.defineProperties(pe,{usedBytes:{get:function(){return this.contents.length}}});var Te={},en=Object.keys(pe.stream_ops);en.forEach(Rn=>{var bn=pe.stream_ops[Rn];Te[Rn]=function(){return ht.forceLoadFile(pe),bn.apply(null,arguments)}});function Zn(Rn,bn,Xn,vi,Ea){var Oo=Rn.node.contents;if(Ea>=Oo.length)return 0;var Le=Math.min(Oo.length-Ea,vi);if(Z(Le>=0),Oo.slice)for(var kn=0;kn(ht.forceLoadFile(pe),Zn(Rn,bn,Xn,vi,Ea)),Te.mmap=(Rn,bn,Xn,vi,Ea)=>{ht.forceLoadFile(pe);var Oo=ia(bn);if(!Oo)throw new ht.ErrnoError(48);return Zn(Rn,E,Oo,bn,Xn),{ptr:Oo,allocated:!0}},pe.stream_ops=Te,pe},absolutePath:()=>{We("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder:()=>{We("FS.createFolder has been removed; use FS.mkdir instead")},createLink:()=>{We("FS.createLink has been removed; use FS.symlink instead")},joinPath:()=>{We("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc:()=>{We("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath:()=>{We("FS.standardizePath has been removed; use PATH.normalize instead")}},OV={DEFAULT_POLLMASK:5,calculateAt:function(x,D,j){if(Ta.isAbs(D))return D;var lt;if(x===-100)lt=ht.cwd();else{var ut=OV.getStreamFromFD(x);lt=ut.path}if(D.length==0){if(!j)throw new ht.ErrnoError(44);return lt}return Ta.join2(lt,D)},doStat:function(x,D,j){try{var lt=x(D)}catch(Dt){if(Dt&&Dt.node&&Ta.normalize(D)!==Ta.normalize(ht.getPath(Dt.node)))return-54;throw Dt}_[j>>2]=lt.dev,_[j+4>>2]=lt.mode,P[j+8>>2]=lt.nlink,_[j+12>>2]=lt.uid,_[j+16>>2]=lt.gid,_[j+20>>2]=lt.rdev,ae=[lt.size>>>0,(qn=lt.size,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+24>>2]=ae[0],_[j+28>>2]=ae[1],_[j+32>>2]=4096,_[j+36>>2]=lt.blocks;var ut=lt.atime.getTime(),yt=lt.mtime.getTime(),Yt=lt.ctime.getTime();return ae=[Math.floor(ut/1e3)>>>0,(qn=Math.floor(ut/1e3),+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+40>>2]=ae[0],_[j+44>>2]=ae[1],P[j+48>>2]=ut%1e3*1e3,ae=[Math.floor(yt/1e3)>>>0,(qn=Math.floor(yt/1e3),+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+56>>2]=ae[0],_[j+60>>2]=ae[1],P[j+64>>2]=yt%1e3*1e3,ae=[Math.floor(Yt/1e3)>>>0,(qn=Math.floor(Yt/1e3),+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+72>>2]=ae[0],_[j+76>>2]=ae[1],P[j+80>>2]=Yt%1e3*1e3,ae=[lt.ino>>>0,(qn=lt.ino,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[j+88>>2]=ae[0],_[j+92>>2]=ae[1],0},doMsync:function(x,D,j,lt,ut){if(!ht.isFile(D.node.mode))throw new ht.ErrnoError(43);if(lt&2)return 0;var yt=I.slice(x,x+j);ht.msync(D,yt,ut,j,lt)},varargs:void 0,get(){Z(OV.varargs!=null),OV.varargs+=4;var x=_[OV.varargs-4>>2];return x},getStr(x){var D=OW(x);return D},getStreamFromFD:function(x){var D=ht.getStreamChecked(x);return D}},Cg=(x,D)=>{var j=0;return $U().forEach(function(lt,ut){var yt=D+j;P[x+ut*4>>2]=yt,v4(lt,yt),j+=lt.length+1}),0},j4=(x,D)=>{var j=$U();P[x>>2]=j.length;var lt=0;return j.forEach(function(ut){lt+=ut.length+1}),P[D>>2]=lt,0};function q4(x){try{var D=OV.getStreamFromFD(x);return ht.close(D),0}catch(j){if(typeof ht>"u"||j.name!=="ErrnoError")throw j;return j.errno}}var $4=(x,D,j,lt)=>{for(var ut=0,yt=0;yt>2],Dt=P[D+4>>2];D+=8;var pe=ht.read(x,E,Yt,Dt,lt);if(pe<0)return-1;if(ut+=pe,pe>2]=yt,0}catch(Yt){if(typeof ht>"u"||Yt.name!=="ErrnoError")throw Yt;return Yt.errno}}function SZ(x,D,j,lt,ut){var yt=Ag(D,j);try{if(isNaN(yt))return 61;var Yt=OV.getStreamFromFD(x);return ht.llseek(Yt,yt,lt),ae=[Yt.position>>>0,(qn=Yt.position,+Math.abs(qn)>=1?qn>0?+Math.floor(qn/4294967296)>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],_[ut>>2]=ae[0],_[ut+4>>2]=ae[1],Yt.getdents&&yt===0&<===0&&(Yt.getdents=null),0}catch(Dt){if(typeof ht>"u"||Dt.name!=="ErrnoError")throw Dt;return Dt.errno}}var Ng=(x,D,j,lt)=>{for(var ut=0,yt=0;yt>2],Dt=P[D+4>>2];D+=8;var pe=ht.write(x,E,Yt,Dt,lt);if(pe<0)return-1;ut+=pe,typeof lt<"u"&&(lt+=pe)}return ut};function fO(x,D,j,lt){try{var ut=OV.getStreamFromFD(x),yt=Ng(ut,D,j);return P[lt>>2]=yt,0}catch(Yt){if(typeof ht>"u"||Yt.name!=="ErrnoError")throw Yt;return Yt.errno}}var yg=(x,D)=>{for(var j=0,lt=0;lt<=D;j+=x[lt++]);return j},kN=[31,29,31,30,31,30,31,31,30,31,30,31],YN=[31,28,31,30,31,30,31,31,30,31,30,31],Bg=(x,D)=>{for(var j=new Date(x.getTime());D>0;){var lt=wW(j.getFullYear()),ut=j.getMonth(),yt=(lt?kN:YN)[ut];if(D>yt-j.getDate())D-=yt-j.getDate()+1,j.setDate(1),ut<11?j.setMonth(ut+1):(j.setMonth(0),j.setFullYear(j.getFullYear()+1));else return j.setDate(j.getDate()+D),j}return j},xN=(x,D)=>{Z(x.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),E.set(x,D)},tG=(x,D,j,lt)=>{var ut=_[lt+40>>2],yt={tm_sec:_[lt>>2],tm_min:_[lt+4>>2],tm_hour:_[lt+8>>2],tm_mday:_[lt+12>>2],tm_mon:_[lt+16>>2],tm_year:_[lt+20>>2],tm_wday:_[lt+24>>2],tm_yday:_[lt+28>>2],tm_isdst:_[lt+32>>2],tm_gmtoff:_[lt+36>>2],tm_zone:ut?OW(ut):""},Yt=OW(j),Dt={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var pe in Dt)Yt=Yt.replace(new RegExp(pe,"g"),Dt[pe]);var Te=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],en=["January","February","March","April","May","June","July","August","September","October","November","December"];function Zn(Le,kn,fa){for(var Ya=typeof Le=="number"?Le.toString():Le||"";Ya.length0?1:0}var Ya;return(Ya=fa(Le.getFullYear()-kn.getFullYear()))===0&&(Ya=fa(Le.getMonth()-kn.getMonth()))===0&&(Ya=fa(Le.getDate()-kn.getDate())),Ya}function Xn(Le){switch(Le.getDay()){case 0:return new Date(Le.getFullYear()-1,11,29);case 1:return Le;case 2:return new Date(Le.getFullYear(),0,3);case 3:return new Date(Le.getFullYear(),0,2);case 4:return new Date(Le.getFullYear(),0,1);case 5:return new Date(Le.getFullYear()-1,11,31);case 6:return new Date(Le.getFullYear()-1,11,30)}}function vi(Le){var kn=Bg(new Date(Le.tm_year+1900,0,1),Le.tm_yday),fa=new Date(kn.getFullYear(),0,4),Ya=new Date(kn.getFullYear()+1,0,4),Nd=Xn(fa),_s=Xn(Ya);return bn(Nd,kn)<=0?bn(_s,kn)<=0?kn.getFullYear()+1:kn.getFullYear():kn.getFullYear()-1}var Ea={"%a":Le=>Te[Le.tm_wday].substring(0,3),"%A":Le=>Te[Le.tm_wday],"%b":Le=>en[Le.tm_mon].substring(0,3),"%B":Le=>en[Le.tm_mon],"%C":Le=>{var kn=Le.tm_year+1900;return Rn(kn/100|0,2)},"%d":Le=>Rn(Le.tm_mday,2),"%e":Le=>Zn(Le.tm_mday,2," "),"%g":Le=>vi(Le).toString().substring(2),"%G":Le=>vi(Le),"%H":Le=>Rn(Le.tm_hour,2),"%I":Le=>{var kn=Le.tm_hour;return kn==0?kn=12:kn>12&&(kn-=12),Rn(kn,2)},"%j":Le=>Rn(Le.tm_mday+yg(wW(Le.tm_year+1900)?kN:YN,Le.tm_mon-1),3),"%m":Le=>Rn(Le.tm_mon+1,2),"%M":Le=>Rn(Le.tm_min,2),"%n":()=>` +`,"%p":Le=>Le.tm_hour>=0&&Le.tm_hour<12?"AM":"PM","%S":Le=>Rn(Le.tm_sec,2),"%t":()=>" ","%u":Le=>Le.tm_wday||7,"%U":Le=>{var kn=Le.tm_yday+7-Le.tm_wday;return Rn(Math.floor(kn/7),2)},"%V":Le=>{var kn=Math.floor((Le.tm_yday+7-(Le.tm_wday+6)%7)/7);if((Le.tm_wday+371-Le.tm_yday-2)%7<=2&&kn++,kn){if(kn==53){var Ya=(Le.tm_wday+371-Le.tm_yday)%7;Ya!=4&&(Ya!=3||!wW(Le.tm_year))&&(kn=1)}}else{kn=52;var fa=(Le.tm_wday+7-Le.tm_yday-1)%7;(fa==4||fa==5&&wW(Le.tm_year%400-1))&&kn++}return Rn(kn,2)},"%w":Le=>Le.tm_wday,"%W":Le=>{var kn=Le.tm_yday+7-(Le.tm_wday+6)%7;return Rn(Math.floor(kn/7),2)},"%y":Le=>(Le.tm_year+1900).toString().substring(2),"%Y":Le=>Le.tm_year+1900,"%z":Le=>{var kn=Le.tm_gmtoff,fa=kn>=0;return kn=Math.abs(kn)/60,kn=kn/60*100+kn%60,(fa?"+":"-")+("0000"+kn).slice(-4)},"%Z":Le=>Le.tm_zone,"%%":()=>"%"};Yt=Yt.replace(/%%/g,"\0\0");for(var pe in Ea)Yt.includes(pe)&&(Yt=Yt.replace(new RegExp(pe,"g"),Ea[pe](yt)));Yt=Yt.replace(/\0\0/g,"%");var Oo=me(Yt,!1);return Oo.length>D?0:(xN(Oo,x),Oo.length-1)},sb=(x,D,j,lt,ut)=>tG(x,D,j,lt);function Qg(x){var D=n["_"+x];return Z(D,"Cannot call unknown function "+x+", make sure it is exported"),D}var t8=x=>{var D=Sa(x)+1,j=AO(D);return DW(x,j,D),j},FO=function(x,D,j,lt,ut){var yt={string:Xn=>{var vi=0;return Xn!=null&&Xn!==0&&(vi=t8(Xn)),vi},array:Xn=>{var vi=AO(Xn.length);return xN(Xn,vi),vi}};function Yt(Xn){return D==="string"?OW(Xn):D==="boolean"?!!Xn:Xn}var Dt=Qg(x),pe=[],Te=0;if(Z(D!=="array",'Return type should not be "array".'),lt)for(var en=0;en(rb=Q.emscripten_stack_init)(),nG=()=>(nG=Q.emscripten_stack_get_free)(),iG=()=>(iG=Q.emscripten_stack_get_base)(),qW=()=>(qW=Q.emscripten_stack_get_end)(),$W=Je("stackSave"),o8=Je("stackRestore"),AO=Je("stackAlloc"),a8=()=>(a8=Q.emscripten_stack_get_current)(),rdt=Je("__cxa_increment_exception_refcount"),s8=Je("__cxa_is_pointer_type"),LN=n.dynCall_jiji=Je("dynCall_jiji"),Yg=n.dynCall_viijii=Je("dynCall_viijii"),l8=n.dynCall_iiiiij=Je("dynCall_iiiiij"),Rt=n.dynCall_iiiiijj=Je("dynCall_iiiiijj"),oG=n.dynCall_iiiiiijj=Je("dynCall_iiiiiijj");function xg(x){try{for(var D=atob(x),j=new Uint8Array(D.length),lt=0;lt0||(d8(),Wt(),oe>0))return;function x(){Xg||(Xg=!0,n.calledRun=!0,!J&&(Nt(),i(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),Z(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),kt()))}n.setStatus?(n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),x()},1)):x(),dt()}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return TZ(),e.ready}})(),lv=r0e;globalThis.Buffer=globalThis.Buffer||{};var cSt=(lv.hasOwnProperty("then")?lv:Promise.resolve(lv())).then(t=>{let e={find_nearby_indices:{rval:"boolean",params:["number","number"]},getCoveragePositions:{rval:null,params:["number","number","number","number","number"]},inflateEllipsoid:{rval:null,params:["number"]}},n={wasm:t};return Object.keys(e).forEach(i=>{n[i]=e[i].params?t.cwrap(i,e[i].rval,e[i].params):t.cwrap(i,e[i].rval)}),n});var{FinalizationRegistry:c0e}=globalThis,K0={_previousLoad:!1,_instance:void 0,_wasmModule:void 0,_positionPointer:-1,_precisionMode:75,async initInstance(){let t="default";if(!this._previousLoad)try{this._wasmModule=(await cSt).wasm,this._previousLoad=!0}catch(e){throw new Ut(`Failed to load the WASM module: ${e.message}`)}if(!this._instance){let{PositionRegistry:e}=this._wasmModule;this._instance=new e(t)}return{instance:this._instance,wasmModule:this._wasmModule}},get instance(){return this._instance},get wasmModule(){return this._wasmModule},get positionPointer(){return this._positionPointer},update(t){if(!this._instance)return 0;let e=Math.round(t/this._precisionMode)*this._precisionMode;return this._lastUpdate!==e&&(this._lastUpdate=e,this._positionPointer=this._instance.update(e)),this._positionPointer||0},updateJulianDate(t){if(!this._instance)return 0;if(!(t instanceof rt))throw new TypeError("Expected julianDate to be an instance of JulianDate");let e=rt.toDate(t).getTime();return this.update(e)},get precisionMode(){return this._precisionMode},set precisionMode(t){if(typeof t!="number"||t<=0)throw new TypeError("Precision mode must be a positive number.");this._precisionMode=t}},mSt={},JIi=new c0e(t=>{let e=mSt[t];e&&(K0._wasmModule.wasm.removePosition(e),delete mSt[t],console.log(`Entity with ID ${t} has been garbage collected, pointer ${e}`))});var hSt=v.WHITE,pSt=v.BLACK,VSt=0,uSt=1,ZSt=0,RSt=new v,m0e=new p,bSt=new v,WSt=new ln,fSt=new ln,FSt=new Wn,USt=null,qet=null;function GSt(t){this.entity=t,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function z0(t,e){e.collectionChanged.addEventListener(z0.prototype._onCollectionChanged,this),this._cluster=t,this._cluster._isReallyDirty=!0,this._entityCollection=e,this._items=new qe,this._wasmItems=[],this._dynamicItems=[],this._onCollectionChanged(e,e.values,[],[]),this._fps=[!1,!1],this._fpsLastUpdate=[Oi(),Oi()]}z0.prototype.needsUpdate=function(t){let e=this._fps[t];if(e){let n=Oi(),i=(n-this._fpsLastUpdate[t])*xi.SECONDS_PER_MILLISECOND>=1/e;return i&&(this._fpsLastUpdate[t]=n),i}return!0};z0.prototype.update=function(t){if(!this.needsUpdate(this._entityCollection?.ThrottleType?.MAX))return!0;let e=this._items.values,n=this._cluster,{wasmModule:i,instance:o,updateJulianDate:a}=K0,s=this._entityCollection.owner?this._entityCollection.owner._wasmModule:null;s&&(s._wasmSatelliteCatalog=this._entityCollection.owner._wasmSatelliteCatalog);let l=this._wasmItems,r=this._dynamicItems;if(!e.length&&!l.length)return!0;if(s&&l.length&&!n._isReallyDirty&&n&&n._pointCollection&&n._pointCollection._pointPrimitives){let m=K0.updateJulianDate(t);m!==qet&&(qet=m,USt=new Float64Array(s.HEAP8.buffer,qet,l.length*3));let h=new p;for(let u=0,R=l.length;u-1&&(p.fromArray(USt,l[u].array_index*3,h),l[u].pointPrimitive&&(l[u].pointPrimitive.position=h),l[u].billboard&&(l[u].billboard.position=h))}let d=this.needsUpdate(this._entityCollection?.ThrottleType?.DYNAMIC)&&r.length;if(!l.length||d||n._isReallyDirty){let m=!n._isReallyDirty&&d?r:e;for(let h=0,u=m.length;h-1&&(R.array_index=V.array_index);let F=V._point,U=R.pointPrimitive,G=R.billboard,A=et.getValueOrDefault(F._heightReference,t,Ge.NONE),S=V.isShowing&&V.isAvailable(t)&&et.getValueOrDefault(F._show,t,!0);U&&(U.show=S);let g=U&&V.array_index>-1?U.position:new p;if(S&&!g&&(g=et.getValueOrUndefined(V._position,t,m0e),S=c(g)),!S){uL(R,V,n);continue}et.isConstant(V._position)||(n._clusterDirty=!0);let C=!1,y=!1;if(A!==Ge.NONE&&!c(G)?(c(U)&&(uL(R,V,n),U=void 0),G=n.getBillboard(V),G.id=V,G.image=void 0,R.billboard=G,C=!0,y=p.equals(G.position,g)&&G.heightReference===A):A===Ge.NONE&&!c(U)&&(c(G)&&(uL(R,V,n),G=void 0),U=n.getPoint(V),U.id=V,R.pointPrimitive=U),c(U))U.show=!0,U.position=g,U.scaleByDistance=et.getValueOrUndefined(F._scaleByDistance,t,WSt),U.translucencyByDistance=et.getValueOrUndefined(F._translucencyByDistance,t,fSt),U.color=et.getValueOrDefault(F._color,t,hSt,RSt),U.outlineColor=et.getValueOrDefault(F._outlineColor,t,pSt,bSt),U.outlineWidth=et.getValueOrDefault(F._outlineWidth,t,VSt),U.pixelSize=et.getValueOrDefault(F._pixelSize,t,uSt),U.distanceDisplayCondition=et.getValueOrUndefined(F._distanceDisplayCondition,t,FSt),U.disableDepthTestDistance=et.getValueOrDefault(F._disableDepthTestDistance,t,ZSt);else if(c(G)){G.show=!0,G.position=g,G.scaleByDistance=et.getValueOrUndefined(F._scaleByDistance,t,WSt),G.translucencyByDistance=et.getValueOrUndefined(F._translucencyByDistance,t,fSt),G.distanceDisplayCondition=et.getValueOrUndefined(F._distanceDisplayCondition,t,FSt),G.disableDepthTestDistance=et.getValueOrDefault(F._disableDepthTestDistance,t,ZSt),G.heightReference=A;let Y=et.getValueOrDefault(F._color,t,hSt,RSt),Q=et.getValueOrDefault(F._outlineColor,t,pSt,bSt),J=Math.round(et.getValueOrDefault(F._outlineWidth,t,VSt)),M=Math.max(1,Math.round(et.getValueOrDefault(F._pixelSize,t,uSt)));if(J>0?(G.scale=1,C=C||J!==R.outlineWidth||M!==R.pixelSize||!v.equals(Y,R.color)||!v.equals(Q,R.outlineColor)):(G.scale=M/50,M=50,C=C||J!==R.outlineWidth||!v.equals(Y,R.color)||!v.equals(Q,R.outlineColor)),C){R.color=v.clone(Y,R.color),R.outlineColor=v.clone(Q,R.outlineColor),R.pixelSize=M,R.outlineWidth=J;let Z=Y.alpha,E=Y.toCssColorString(),I=Q.toCssColorString(),B=JSON.stringify([E,M,I,J]);G.setImage(B,XA(Z,E,I,J,M))}y&&G._updateClamping()}}this._cluster._isReallyDirty=!1}return!0};z0.prototype.getBoundingSphere=function(t,e){let n=this._items.get(t.id);if(!c(n)||!(c(n.pointPrimitive)||c(n.billboard)))return ve.FAILED;if(c(n.pointPrimitive))e.center=p.clone(n.pointPrimitive.position,e.center);else{let i=n.billboard;if(!c(i._clampedPosition))return ve.PENDING;e.center=p.clone(i._clampedPosition,e.center)}return e.radius=0,ve.DONE};z0.prototype.isDestroyed=function(){return!1};z0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(z0.prototype._onCollectionChanged,this);let t=this._entityCollection.values;for(let e=0;e{let F=s.get(V.id);if(F&&r.indexOf(F)===-1)if(!V._position.isConstant&&l.indexOf(F)===-1)r.push(F);else for(let U in V._point)V._point[U]?.isConstant===!1&&r.push(F)},h=V=>{r=r.filter(F=>F.entity.id!==V.id)},u=V=>{let F=s.get(V.id);F&&V.wasmSchema&&l.indexOf(F)===-1&&l.push(F),m(V)},R=V=>{l=l.filter(F=>F.entity.id!==V.id),h(V)};for(o=e.length-1;o>-1;o--)a=e[o],c(a._point)&&c(a._position)&&(s.set(a.id,new GSt(a)),u(a));for(o=i.length-1;o>-1;o--)a=i[o],u(a),c(a._point)&&c(a._position)?s.contains(a.id)||s.set(a.id,new GSt(a)):(uL(s.get(a.id),a,d),s.remove(a.id),R(a));for(o=n.length-1;o>-1;o--)a=n[o],uL(s.get(a.id),a,d),s.remove(a.id),R(a);this._cluster._isReallyDirty=!0};function uL(t,e,n){if(c(t)){let i=t.pointPrimitive;if(c(i)){t.pointPrimitive=void 0,n.removePoint(e);return}let o=t.billboard;c(o)&&(t.billboard=void 0,n.removeBillboard(e))}}var ZL=z0;var kNi=b(W(),1);var tNi=b(W(),1);var G1i=b(W(),1);var ESt=[];function h0e(t,e,n,i,o){let a=ESt;a.length=o;let s,l=n.red,r=n.green,d=n.blue,m=n.alpha,h=i.red,u=i.green,R=i.blue,V=i.alpha;if(v.equals(n,i)){for(s=0;s0?new Array(o):void 0;for(i=0;i0){let X=0,_=h[0];i=i.filter(function(P,w){let z=!1;return o?z=w===_||w===0&&_===1:z=w+1===_,z?(X++,_=h[X],!1):!0})}let R=u.length;if(R<2||e<=0)return;if(a===Ln.GEODESIC||a===Ln.RHUMB){let X,_;a===Ln.GEODESIC?(X=k.chordLength(s,l.maximumRadius),_=xo.numberOfPoints):(X=s,_=xo.numberOfPointsRhumbLine);let P=xo.extractHeights(u,l);if(c(i)){let w=1;for(r=0;r0)return Ft.fromPoints(e.positions,t),ve.DONE}return ve.FAILED};bL.prototype.isDestroyed=function(){return!1};bL.prototype.destroy=function(){let e=this._geometryUpdater._scene.id+this._primitives._guid,n=rv[e];c(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete rv[e])),c(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),At(this)};var WL=Du;var RNi=b(W(),1);var F0e=new v,U0e=new Wn,G0e=new Wn;function Ou(t,e,n,i,o){let a;n instanceof Cn?a=Ul:a=zl,this.orderedGroundPrimitives=t,this.classificationType=e,this.appearanceType=a,this.materialProperty=n,this.updaters=new qe,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new qe,this.material=void 0,this.updatersWithAttributes=new qe,this.attributes=new qe,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(Ou.prototype.onMaterialChanged,this),this.subscriptions=new qe,this.showsUpdated=new qe,this.zIndex=i,this._asynchronous=o}Ou.prototype.onMaterialChanged=function(){this.invalidated=!0};Ou.prototype.isMaterial=function(t){let e=this.materialProperty,n=t.fillMaterialProperty;return n===e||n instanceof Cn&&e instanceof Cn?!0:c(e)&&e.equals(n)};Ou.prototype.add=function(t,e,n){let i=e.id;if(this.updaters.set(i,e),this.geometry.set(i,n),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!et.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,e);else{let o=this;this.subscriptions.set(i,e.entity.definitionChanged.addEventListener(function(a,s,l,r){s==="isShowing"&&o.showsUpdated.set(e.id,e)}))}this.createPrimitive=!0};Ou.prototype.remove=function(t){let e=t.id;if(this.createPrimitive=this.geometry.remove(e)||this.createPrimitive,this.updaters.remove(e)){this.updatersWithAttributes.remove(e);let n=this.subscriptions.get(e);return c(n)&&(n(),this.subscriptions.remove(e)),!0}return!1};Ou.prototype.update=function(t){let e=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,a;if(this.createPrimitive){if(o.length>0)c(n)&&(c(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new Gh({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===zl&&(this.material=Ua.getValue(t,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),e=!1;else{c(n)&&(i.remove(n),n=void 0);let l=this.oldPrimitive;c(l)&&(i.remove(l),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(c(n)&&n.ready){n.show=!0,c(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===zl&&(this.material=Ua.getValue(t,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,l=s.length;for(a=0;a=0;i--){let o=e[i];if(o.remove(t)){o.updaters.length===0&&(e.splice(i,1),o.destroy());break}}};EI.prototype.update=function(t){let e,n=this._items,i=n.length;for(e=i-1;e>=0;e--){let a=n[e];if(a.invalidated){n.splice(e,1);let s=a.updaters.values,l=s.length;for(let r=0;r-1;l--)r=s[l],d=r.id,m=this._updaters.get(d),m.entity===r?(BSt(this,m),QSt(this,t,m)):(o.push(r),n.push(r));for(l=o.length-1;l>-1;l--)r=o[l],d=r.id,m=this._updaters.get(d),BSt(this,m),m.destroy(),this._updaters.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(l=n.length-1;l>-1;l--)r=n[l],d=r.id,m=new WL(r,this._scene),this._updaters.set(d,m),QSt(this,t,m),this._subscriptions.set(d,m.geometryChanged.addEventListener(bR._onGeometryChanged,this));e.removeAll(),i.removeAll(),a.removeAll();let h=!0,u=this._batches,R=u.length;for(l=0;l-1;s--)r=n[s],l=r.id,i.remove(l)||(o.set(l,r),a.remove(l));for(s=e.length-1;s>-1;s--)r=e[s],l=r.id,o.remove(l)?a.set(l,r):i.set(l,r)};var FL=bR;function wm(t){Nc.initializeTerrainHeights(),Gh.initializeTerrainHeights();let e=t.scene,n=t.dataSourceCollection;this._eventHelper=new rl,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(e.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=e,this._visualizersCallback=f(t.visualizersCallback,wm.defaultVisualizersCallback);let i=!1,o=new Dm,a=new Dm;n.length>0&&(e.primitives.add(o),e.groundPrimitives.add(a),i=!0),this._primitives=o,this._groundPrimitives=a;for(let d=0,m=n.length;dnew o(t,i))]};Object.defineProperties(wm.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});wm.prototype.isDestroyed=function(){return!1};wm.prototype.destroy=function(){this._eventHelper.removeAll();let t=this._dataSourceCollection;for(let e=0,n=t.length;eI0e*s.maximumRadius?(h=XSt,p.normalize(r,h),p.negate(h,h),R=p.clone(p.UNIT_Z,tnt),u=p.cross(R,h,dv),p.magnitude(u)>k.EPSILON7&&(p.normalize(h,h),p.normalize(u,u),R=p.cross(h,u,tnt),p.normalize(R,R),d=!0)):p.equalsEpsilon(r,g,k.EPSILON7)||(R=XSt,p.normalize(Q,R),p.normalize(J,J),u=p.cross(R,J,tnt),m&&(u=p.multiplyByScalar(u,-1,u)),p.equalsEpsilon(u,p.ZERO,k.EPSILON7)||(h=p.cross(u,R,dv),ot.multiplyByVector(Y,h,h),ot.multiplyByVector(Y,u,u),ot.multiplyByVector(Y,R,R),p.normalize(h,h),p.normalize(u,u),p.normalize(R,R),d=!0))}}c(t.boundingSphere)&&(r=t.boundingSphere.center);let U,G,A;i&&(U=p.clone(e.position,ent),G=p.clone(e.direction,JSt),A=p.clone(e.up,LSt));let S=C0e;d?(S[0]=h.x,S[1]=h.y,S[2]=h.z,S[3]=0,S[4]=u.x,S[5]=u.y,S[6]=u.z,S[7]=0,S[8]=R.x,S[9]=R.y,S[10]=R.z,S[11]=0,S[12]=r.x,S[13]=r.y,S[14]=r.z,S[15]=0):Pe.eastNorthUpToFixedFrame(r,s,S),e._setTransform(S),i&&(p.clone(U,e.position),p.clone(G,e.direction),p.clone(A,e.up),p.cross(G,A,e.right))}if(n){let d=l===Vt.SCENE2D||p.equals(t._offset3D,p.ZERO)?void 0:t._offset3D;e.lookAtTransform(e.transform,d)}}function GL(t,e,n){this.entity=t,this.scene=e,this.ellipsoid=f(n,mt.WGS84),this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new p,this._defaultOffset3D=void 0,this._offset3D=new p}Object.defineProperties(GL,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(t){this._defaultOffset3D=p.clone(t,new p)}}});GL.defaultOffset3D=new p(-14e3,3500,3500);var UL=new uV,y0e=new p;GL.prototype.update=function(t,e){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===Vt.MORPHING)return;let a=this.entity,s=a.position;if(!c(s))return;let l=a!==this._lastEntity,r=o!==this._mode,d=n.camera,m=l||r,h=!0;if(l){let u=a.viewFrom,R=c(u);if(!R&&c(e)){UL.pitch=-k.PI_OVER_FOUR,UL.range=0;let V=s.getValue(t,y0e);if(c(V)){let F=2-1/Math.max(1,p.magnitude(V)/i.maximumRadius);UL.pitch*=F,UL.range=p.magnitude(V)*.05}d.viewBoundingSphere(e,UL),this.boundingSphere=e,m=!1,h=!1}else(!R||!c(u.getValue(t,this._offset3D)))&&p.clone(GL._defaultOffset3D,this._offset3D)}else!r&&this._mode!==Vt.SCENE2D&&p.clone(d.position,this._offset3D);this._lastEntity=a,this._mode=o,N0e(this,d,m,h,s,t,i)};var AL=GL;var qBi=b(W(),1);var gyi=b(W(),1);function TL(){this._cache={}}TL.prototype.fromColor=function(t,e){return cv(void 0,void 0,t,e,this._cache)};TL.prototype.fromUrl=function(t,e,n){return cv(t,void 0,e,n,this._cache)};TL.prototype.fromMakiIconId=function(t,e,n){return cv(Dn(`Assets/Textures/maki/${encodeURIComponent(t)}.png`),void 0,e,n,this._cache)};TL.prototype.fromText=function(t,e,n){return cv(void 0,t,e,n,this._cache)};var B0e=new v;function Q0e(t,e,n){t.save(),t.scale(n/24,n/24),t.fillStyle=e.toCssColorString(),t.strokeStyle=e.brighten(.6,B0e).toCssColorString(),t.lineWidth=.846,t.beginPath(),t.moveTo(6.72,.422),t.lineTo(17.28,.422),t.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),t.lineTo(19.577,10.973),t.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),t.lineTo(14.386,14.008),t.lineTo(11.826,23.578),t.lineTo(9.614,14.008),t.lineTo(6.719,13.965),t.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),t.lineTo(4.422,3.416),t.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),t.closePath(),t.fill(),t.stroke(),t.restore()}function MSt(t,e,n){let i=n/2.5,o=i,a=i;e.width>e.height?a=i*(e.height/e.width):e.width${i}${wSt(o)}`:n+=`${i}${o}`)}return n.length>0&&(n=`${n}
`),n}function M0e(t,e,n){let i;return function(o,a){return c(i)||(i=t(e,n)),i}}function _0e(t,e){return new Sh(M0e(wSt,t,e),!0)}function pv(t,e,n){let i=t.id;if(!c(i)||t.type!=="Feature")i=Ti();else{let s=2,l=i;for(;c(e.getById(l));)l=`${i}_${s}`,s++;i=l}let o=e.getOrCreateEntity(i),a=t.properties;if(c(a)){o.properties=a;let s,l=a.title;if(c(l))o.name=l,s="title";else{let d=Number.MAX_VALUE;for(let m in a)if(a.hasOwnProperty(m)&&a[m]){let h=m.toLowerCase();if(d>1&&h==="title"){d=1,s=m;break}else d>2&&h==="name"?(d=2,s=m):d>3&&/title/i.test(m)?(d=3,s=m):d>4&&/name/i.test(m)&&(d=4,s=m)}c(s)&&(o.name=a[s])}let r=a.description;r!==null&&(o.description=c(r)?new Ii(r):n(a,s))}return o}function pnt(t,e){let n=new Array(t.length);for(let i=0;i2?d.perPositionHeight=new Ii(!0):o.clampToGround||(d.height=0);let u=pv(e,t._entityCollection,o.describe);u.polygon=d}function oTt(t,e,n,i,o){iTt(t,e,i,n.coordinates,o)}function aTt(t,e,n,i,o){let a=n.coordinates;for(let s=0;se&&(n==null?(n="…",i=3):i=n.length,t=t.substring(0,e-i)+n),t}function cs(t,e){for(var n=t.length-1;n>=0;n--)t[n]===e&&t.splice(n,1)}function xF(t,e){for(var n=t.length-1;n>=0;n--)e(t[n])===!0&&t.splice(n,1)}function XF(t){throw new Error("Unhandled case for value: '".concat(t,"'"))}var FQi=b(W());var rQi=b(W());var aQi=b(W()),JF=/[A-Za-z]/,Ir=/[\d]/;var Hh=/\s/,Vv=/['"]/,mTt=/[\x00-\x1F\x7F]/,hTt=/A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source,w0e=/\u2700-\u27bf\udde6-\uddff\ud800-\udbff\udc00-\udfff\ufe0e\ufe0f\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0\ud83c\udffb-\udfff\u200d\u3299\u3297\u303d\u3030\u24c2\ud83c\udd70-\udd71\udd7e-\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01-\ude02\ude1a\ude2f\ude32-\ude3a\ude50-\ude51\u203c\u2049\u25aa-\u25ab\u25b6\u25c0\u25fb-\u25fe\u00a9\u00ae\u2122\u2139\udc04\u2600-\u26FF\u2b05\u2b06\u2b07\u2b1b\u2b1c\u2b50\u2b55\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\udccf\u2935\u2934\u2190-\u21ff/.source,P0e=/\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F/.source,v0e=hTt+w0e+P0e,pTt=/0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19/.source,iQi=new RegExp("[".concat(hTt+pTt,"]")),Vnt=v0e+pTt,Hu=new RegExp("[".concat(Vnt,"]"));var uv=function(){function t(e){e===void 0&&(e={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=e.tagName||"",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||""}return t.prototype.setTagName=function(e){return this.tagName=e,this},t.prototype.getTagName=function(){return this.tagName||""},t.prototype.setAttr=function(e,n){var i=this.getAttrs();return i[e]=n,this},t.prototype.getAttr=function(e){return this.getAttrs()[e]},t.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},t.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},t.prototype.setClass=function(e){return this.setAttr("class",e)},t.prototype.addClass=function(e){for(var n=this.getClass(),i=n?n.split(Hh):[],o=e.split(Hh),a;a=o.shift();)i.indexOf(a)===-1&&i.push(a);return this.getAttrs().class=i.join(" "),this},t.prototype.removeClass=function(e){for(var n=this.getClass(),i=n?n.split(Hh):[],o=e.split(Hh),a;i.length&&(a=o.shift());){var s=i.indexOf(a);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},t.prototype.getClass=function(){return this.getAttrs().class||""},t.prototype.hasClass=function(e){return(" "+this.getClass()+" ").indexOf(" "+e+" ")!==-1},t.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},t.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},t.prototype.getInnerHTML=function(){return this.innerHTML||""},t.prototype.getInnerHtml=function(){return this.getInnerHTML()},t.prototype.toAnchorString=function(){var e=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",e,n,">",this.getInnerHtml(),""].join("")},t.prototype.buildAttrsStr=function(){if(!this.attrs)return"";var e=this.getAttrs(),n=[];for(var i in e)e.hasOwnProperty(i)&&n.push(i+'="'+e[i]+'"');return n.join(" ")},t}();var cQi=b(W());function VTt(t,e,n){var i,o;n==null?(n="…",o=3,i=8):(o=n.length,i=n.length);var a=function(A){var S={},g=A,C=g.match(/^([a-z]+):\/\//i);return C&&(S.scheme=C[1],g=g.substr(C[0].length)),C=g.match(/^(.*?)(?=(\?|#|\/|$))/i),C&&(S.host=C[1],g=g.substr(C[0].length)),C=g.match(/^\/(.*?)(?=(\?|#|$))/i),C&&(S.path=C[1],g=g.substr(C[0].length)),C=g.match(/^\?(.*?)(?=(#|$))/i),C&&(S.query=C[1],g=g.substr(C[0].length)),C=g.match(/^#(.*?)$/i),C&&(S.fragment=C[1]),S},s=function(A){var S="";return A.scheme&&A.host&&(S+=A.scheme+"://"),A.host&&(S+=A.host),A.path&&(S+="/"+A.path),A.query&&(S+="?"+A.query),A.fragment&&(S+="#"+A.fragment),S},l=function(A,S){var g=S/2,C=Math.ceil(g),y=-1*Math.floor(g),Y="";return y<0&&(Y=A.substr(y)),A.substr(0,C)+n+Y};if(t.length<=e)return t;var r=e-o,d=a(t);if(d.query){var m=d.query.match(/^(.*?)(?=(\?|\#))(.*?)$/i);m&&(d.query=d.query.substr(0,m[1].length),t=s(d))}if(t.length<=e||(d.host&&(d.host=d.host.replace(/^www\./,""),t=s(d)),t.length<=e))return t;var h="";if(d.host&&(h+=d.host),h.length>=r)return d.host.length==e?(d.host.substr(0,e-o)+n).substr(0,r+i):l(h,r).substr(0,r+i);var u="";if(d.path&&(u+="/"+d.path),d.query&&(u+="?"+d.query),u)if((h+u).length>=r){if((h+u).length==e)return(h+u).substr(0,e);var R=r-h.length;return(h+l(u,R)).substr(0,r+i)}else h+=u;if(d.fragment){var V="#"+d.fragment;if((h+V).length>=r){if((h+V).length==e)return(h+V).substr(0,e);var F=r-h.length;return(h+l(V,F)).substr(0,r+i)}else h+=V}if(d.scheme&&d.host){var U=d.scheme+"://";if((h+U).length0&&(G=h.substr(-1*Math.floor(r/2))),(h.substr(0,Math.ceil(r/2))+n+G).substr(0,r+i)}var hQi=b(W());function uTt(t,e,n){if(t.length<=e)return t;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var a=e-o,s="";return a>0&&(s=t.substr(-1*Math.floor(a/2))),(t.substr(0,Math.ceil(a/2))+n+s).substr(0,a+i)}var uQi=b(W());function ZTt(t,e,n){return cTt(t,e,n)}var RTt=function(){function t(e){e===void 0&&(e={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||""}return t.prototype.build=function(e){return new uv({tagName:"a",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},t.prototype.createAttrs=function(e){var n={href:e.getAnchorHref()},i=this.createCssClass(e);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate&&this.truncate.length&&this.truncate.length=0;R--){var V=m[R];switch(V.state){case 11:y(V,u);break;case 12:Y(V,u);break;case 0:G(V,u);break;case 1:A(V,u);break;case 2:S(V,u);break;case 3:g(V,u);break;case 4:C(V,u);break;case 5:Q(V,u);break;case 6:J(V,u);break;case 7:M(V,u);break;case 13:Z(V,u);break;case 14:E(V,u);break;case 8:I(V,u);break;case 9:B(V,u);break;case 10:X(V,u);break;case 15:_(V,u);break;case 16:P(V,u);break;case 17:w(V,u);break;case 18:z(V,u);break;case 19:H(V,u);break;case 20:nt(V,u);break;case 21:$(V,u);break;case 22:dt(V,u);break;case 23:q(V,u);break;case 24:at(V,u);break;case 25:st(V,u);break;case 26:Et(V,u);break;case 27:Qt(V,u);break;case 28:Wt(V,u);break;case 29:Nt(V,u);break;case 30:kt(V,u);break;case 31:Mt(V,u);break;case 32:ie(V,u);break;case 33:oe(V,u);break;case 34:He(V,u);break;case 35:rn(V,u);break;case 36:de(V,u);break;case 37:qt(V,u);break;case 38:zt(V,u);break;case 39:ke(V,u);break;case 40:Ve(V,u);break;case 41:We(V,u);break;default:XF(V.state)}}}for(var F=m.length-1;F>=0;F--)m.forEach(function(Ct){return Vn(Ct)});return r;function U(Ct){if(Ct==="#")m.push(GWe(h,28));else if(Ct==="@")m.push(AWe(h,30));else if(Ct==="/")m.push(Ant(h,11));else if(Ct==="+")m.push(Snt(h,37));else if(Ct==="(")m.push(Snt(h,32));else{if(Ir.test(Ct)&&(m.push(Snt(h,38)),m.push(FWe(h,13))),gTt(Ct)){var _t=Ct.toLowerCase()==="m"?15:22;m.push(UWe(h,_t))}Zv(Ct)&&m.push(Gnt(h,0)),Hu.test(Ct)&&m.push(Ant(h,5))}}function G(Ct,_t){_t===":"?Ct.state=2:_t==="-"?Ct.state=1:Rnt(_t)||cs(m,Ct)}function A(Ct,_t){_t==="-"||(_t==="/"?(cs(m,Ct),m.push(Ant(h,11))):Rnt(_t)?Ct.state=0:cs(m,Ct))}function S(Ct,_t){_t==="/"?Ct.state=3:_t==="."?cs(m,Ct):$0(_t)?(Ct.state=5,Zv(_t)&&m.push(Gnt(h,0))):cs(m,Ct)}function g(Ct,_t){_t==="/"?Ct.state=4:bnt(_t)?(Ct.state=10,Ct.acceptStateReached=!0):Vn(Ct)}function C(Ct,_t){_t==="/"?Ct.state=10:$0(_t)?(Ct.state=5,Ct.acceptStateReached=!0):cs(m,Ct)}function y(Ct,_t){_t==="/"?Ct.state=12:cs(m,Ct)}function Y(Ct,_t){$0(_t)?Ct.state=5:cs(m,Ct)}function Q(Ct,_t){_t==="."?Ct.state=7:_t==="-"?Ct.state=6:_t===":"?Ct.state=8:bv(_t)?Ct.state=10:Rv(_t)||Vn(Ct)}function J(Ct,_t){_t==="-"||(_t==="."?Vn(Ct):$0(_t)?Ct.state=5:Vn(Ct))}function M(Ct,_t){_t==="."?Vn(Ct):$0(_t)?(Ct.state=5,Ct.acceptStateReached=!0):Vn(Ct)}function Z(Ct,_t){_t==="."?Ct.state=14:_t===":"?Ct.state=8:Ir.test(_t)||(bv(_t)?Ct.state=10:Hu.test(_t)?cs(m,Ct):Vn(Ct))}function E(Ct,_t){Ir.test(_t)?(Ct.octetsEncountered++,Ct.octetsEncountered===4&&(Ct.acceptStateReached=!0),Ct.state=13):Vn(Ct)}function I(Ct,_t){Ir.test(_t)?Ct.state=9:Vn(Ct)}function B(Ct,_t){Ir.test(_t)||(bv(_t)?Ct.state=10:Vn(Ct))}function X(Ct,_t){bnt(_t)||Vn(Ct)}function _(Ct,_t){_t.toLowerCase()==="a"?Ct.state=16:dt(Ct,_t)}function P(Ct,_t){_t.toLowerCase()==="i"?Ct.state=17:dt(Ct,_t)}function w(Ct,_t){_t.toLowerCase()==="l"?Ct.state=18:dt(Ct,_t)}function z(Ct,_t){_t.toLowerCase()==="t"?Ct.state=19:dt(Ct,_t)}function H(Ct,_t){_t.toLowerCase()==="o"?Ct.state=20:dt(Ct,_t)}function nt(Ct,_t){_t.toLowerCase()===":"?Ct.state=21:dt(Ct,_t)}function $(Ct,_t){Wv(_t)?Ct.state=22:cs(m,Ct)}function dt(Ct,_t){_t==="."?Ct.state=23:_t==="@"?Ct.state=24:Wv(_t)?Ct.state=22:cs(m,Ct)}function q(Ct,_t){_t==="."?cs(m,Ct):_t==="@"?cs(m,Ct):Wv(_t)?Ct.state=22:cs(m,Ct)}function at(Ct,_t){$0(_t)?Ct.state=25:cs(m,Ct)}function st(Ct,_t){_t==="."?Ct.state=27:_t==="-"?Ct.state=26:Rv(_t)||Vn(Ct)}function Et(Ct,_t){_t==="-"||_t==="."?Vn(Ct):Rv(_t)?Ct.state=25:Vn(Ct)}function Qt(Ct,_t){_t==="."||_t==="-"?Vn(Ct):$0(_t)?(Ct.state=25,Ct.acceptStateReached=!0):Vn(Ct)}function Wt(Ct,_t){fnt(_t)?(Ct.state=29,Ct.acceptStateReached=!0):cs(m,Ct)}function Nt(Ct,_t){fnt(_t)||Vn(Ct)}function kt(Ct,_t){Fnt(_t)?(Ct.state=31,Ct.acceptStateReached=!0):cs(m,Ct)}function Mt(Ct,_t){Fnt(_t)||(Hu.test(_t)?cs(m,Ct):Vn(Ct))}function qt(Ct,_t){Ir.test(_t)?Ct.state=38:(cs(m,Ct),U(_t))}function ie(Ct,_t){Ir.test(_t)?Ct.state=33:cs(m,Ct),U(_t)}function oe(Ct,_t){Ir.test(_t)?Ct.state=34:cs(m,Ct)}function He(Ct,_t){Ir.test(_t)?Ct.state=35:cs(m,Ct)}function rn(Ct,_t){_t===")"?Ct.state=36:cs(m,Ct)}function de(Ct,_t){Ir.test(_t)?Ct.state=38:Unt(_t)?Ct.state=39:cs(m,Ct)}function zt(Ct,_t){Ct.acceptStateReached=!0,fv(_t)?Ct.state=40:_t==="#"?Ct.state=41:Ir.test(_t)||(_t==="("?Ct.state=32:Unt(_t)?Ct.state=39:(Vn(Ct),Zv(_t)&&m.push(Gnt(h,0))))}function ke(Ct,_t){Ir.test(_t)?Ct.state=38:_t==="("?Ct.state=32:(Vn(Ct),U(_t))}function Ve(Ct,_t){fv(_t)||(_t==="#"?Ct.state=41:Ir.test(_t)?Ct.state=38:Vn(Ct))}function We(Ct,_t){fv(_t)?Ct.state=40:Ir.test(_t)?cs(m,Ct):Vn(Ct)}function Vn(Ct){if(cs(m,Ct),!!Ct.acceptStateReached){var _t=Ct.startIdx,Je=t.slice(Ct.startIdx,h);if(Je=fWe(Je),Ct.type==="url"){var xe=t.charAt(Ct.startIdx-1);if(xe==="@")return;var oo=Ct.matchType;if(oo==="scheme"){var ea=Znt.exec(Je);if(ea&&(_t=_t+ea.index,Je=Je.slice(ea.index)),!UTt(Je))return}else if(oo==="tld"){if(!GTt(Je))return}else if(oo==="ipV4"){if(!ATt(Je))return}else XF(oo);r.push(new STt({tagBuilder:n,matchedText:Je,offset:_t,urlMatchType:oo,url:Je,protocolRelativeMatch:Je.slice(0,2)==="//",stripPrefix:i,stripTrailingSlash:o,decodePercentEncoding:a}))}else if(Ct.type==="email")ETt(Je)&&r.push(new CTt({tagBuilder:n,matchedText:Je,offset:_t,email:Je.replace(TTt,"")}));else if(Ct.type==="hashtag")ITt(Je)&&r.push(new yTt({tagBuilder:n,matchedText:Je,offset:_t,serviceName:s,hashtag:Je.slice(1)}));else if(Ct.type==="mention")BTt(Je,l)&&r.push(new kTt({tagBuilder:n,matchedText:Je,offset:_t,serviceName:l,mention:Je.slice(1)}));else if(Ct.type==="phone"){if(Je=Je.replace(/ +$/g,""),YTt(Je)){var gs=Je.replace(/[^0-9,;#]/g,"");r.push(new xTt({tagBuilder:n,matchedText:Je,offset:_t,number:gs,plusSign:Je.charAt(0)==="+"}))}}else XF(Ct)}}}var WWe=/[\(\{\[]/,XTt=/[\)\}\]]/,JTt={")":"(","}":"{","]":"["};function fWe(t){for(var e={"(":0,"{":0,"[":0},n=0;n=0;)if(a=t.charAt(o),XTt.test(a)){var s=JTt[a];if(e[s]<0)e[s]++,o--;else break}else if(FTt.test(a))o--;else break;return t.slice(0,o+1)}function Gnt(t,e){return{type:"url",startIdx:t,state:e,acceptStateReached:!1,matchType:"scheme"}}function Ant(t,e){return{type:"url",startIdx:t,state:e,acceptStateReached:!1,matchType:"tld"}}function FWe(t,e){return{type:"url",startIdx:t,state:e,acceptStateReached:!1,matchType:"ipV4",octetsEncountered:1}}function UWe(t,e){return{type:"email",startIdx:t,state:e,acceptStateReached:!1}}function GWe(t,e){return{type:"hashtag",startIdx:t,state:e,acceptStateReached:!1}}function AWe(t,e){return{type:"mention",startIdx:t,state:e,acceptStateReached:!1}}function Snt(t,e){return{type:"phone",startIdx:t,state:e,acceptStateReached:!1}}var Cki=b(W());function MTt(t,e){for(var n=e.onOpenTag,i=e.onCloseTag,o=e.onText,a=e.onComment,s=e.onDoctype,l=new FR,r=0,d=t.length,m=0,h=0,u=l;r"?(u=new FR(Nr(Nr({},u),{name:dt()})),nt()):!JF.test(at)&&!Ir.test(at)&&at!==":"&&z()}function G(at){at===">"?z():JF.test(at)?m=3:z()}function A(at){Hh.test(at)||(at==="/"?m=12:at===">"?nt():at==="<"?H():at==="="||Vv.test(at)||mTt.test(at)?z():m=5)}function S(at){Hh.test(at)?m=6:at==="/"?m=12:at==="="?m=7:at===">"?nt():at==="<"?H():Vv.test(at)&&z()}function g(at){Hh.test(at)||(at==="/"?m=12:at==="="?m=7:at===">"?nt():at==="<"?H():Vv.test(at)?z():m=5)}function C(at){Hh.test(at)||(at==='"'?m=8:at==="'"?m=9:/[>=`]/.test(at)?z():at==="<"?H():m=10)}function y(at){at==='"'&&(m=11)}function Y(at){at==="'"&&(m=11)}function Q(at){Hh.test(at)?m=4:at===">"?nt():at==="<"&&H()}function J(at){Hh.test(at)?m=4:at==="/"?m=12:at===">"?nt():at==="<"?H():(m=4,q())}function M(at){at===">"?(u=new FR(Nr(Nr({},u),{isClosing:!0})),nt()):m=4}function Z(at){t.substr(r,2)==="--"?(r+=2,u=new FR(Nr(Nr({},u),{type:"comment"})),m=14):t.substr(r,7).toUpperCase()==="DOCTYPE"?(r+=7,u=new FR(Nr(Nr({},u),{type:"doctype"})),m=20):z()}function E(at){at==="-"?m=15:at===">"?z():m=16}function I(at){at==="-"?m=18:at===">"?z():m=16}function B(at){at==="-"&&(m=17)}function X(at){at==="-"?m=18:m=16}function _(at){at===">"?nt():at==="!"?m=19:at==="-"||(m=16)}function P(at){at==="-"?m=17:at===">"?nt():m=16}function w(at){at===">"?nt():at==="<"&&H()}function z(){m=0,u=l}function H(){m=1,u=new FR({idx:r})}function nt(){var at=t.slice(h,u.idx);at&&o(at,h),u.type==="comment"?a(u.idx):u.type==="doctype"?s(u.idx):(u.isOpening&&n(u.name,u.idx),u.isClosing&&i(u.name,u.idx)),z(),h=r+1}function $(){var at=t.slice(h,r);o(at,h),h=r+1}function dt(){var at=u.idx+(u.isClosing?2:1);return t.slice(at,r).toLowerCase()}function q(){r--}}var FR=function(){function t(e){e===void 0&&(e={}),this.idx=e.idx!==void 0?e.idx:-1,this.type=e.type||"tag",this.name=e.name||"",this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing}return t}();var SWe=function(){function t(e){e===void 0&&(e={}),this.version=t.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=TWe(e.urls),this.email=Oh(e.email)?e.email:this.email,this.phone=Oh(e.phone)?e.phone:this.phone,this.hashtag=e.hashtag||this.hashtag,this.mention=e.mention||this.mention,this.newWindow=Oh(e.newWindow)?e.newWindow:this.newWindow,this.stripPrefix=gWe(e.stripPrefix),this.stripTrailingSlash=Oh(e.stripTrailingSlash)?e.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=Oh(e.decodePercentEncoding)?e.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=e.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&QTt.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&NTt.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=EWe(e.truncate),this.className=e.className||this.className,this.replaceFn=e.replaceFn||this.replaceFn,this.context=e.context||this}return t.link=function(e,n){var i=new t(n);return i.link(e)},t.parse=function(e,n){var i=new t(n);return i.parse(e)},t.prototype.parse=function(e){var n=this,i=["a","style","script"],o=0,a=[];return MTt(e,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,l){if(o===0){var r=/( | |<|<|>|>|"|"|')/gi,d=s.split(r),m=l;d.forEach(function(h,u){if(u%2===0){var R=n.parseText(h,m);a.push.apply(a,R)}m+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(s){},onDoctype:function(s){}}),a=this.compactMatches(a),a=this.removeUnwantedMatches(a),a},t.prototype.compactMatches=function(e){e.sort(function(r,d){return r.getOffset()-d.getOffset()});for(var n=0;na?n:n+1;e.splice(l,1);continue}if(e[n+1].getOffset()/g,">"));for(var n=this.parse(e),i=[],o=0,a=0,s=n.length;a{let i=new FileReader;i.addEventListener("load",function(){e(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(t)})}function Tnt(t,e){let n=IL(t,"id");return n=c(n)?n:Ti(),e.getOrCreateEntity(n)}function gnt(t){let e=PTt(t,"lon"),n=PTt(t,"lat"),i=EL(t,"ele",va.gpx);return p.fromDegrees(e,n,i)}function PTt(t,e){if(!c(t))return;let n=t.getAttribute(e);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function IL(t,e){if(!c(t))return;let n=t.getAttribute(e);return n!==null?n:void 0}function LF(t,e,n){if(!c(t))return;let i=t.childNodes,o=i.length;for(let a=0;a${h.text}: ${h.value}

`)}if(!c(i)||i==="")return;i=CWe.link(i),CL.innerHTML=i;let s=CL.querySelectorAll("a");for(n=0;n',d+=`${CL.innerHTML}`,CL.innerHTML="",d}function tgt(t,e,n,i){let o=gnt(e),a=Tnt(e,n);a.position=o;let s=c(i.waypointImage)?i.waypointImage:t._pinBuilder.fromMakiIconId("marker",v.RED,Uv);a.billboard=qTt(s);let l=Pm(e,"name",va.gpx);a.name=l,a.label=yWe(),a.label.text=l,a.description=Cnt(e,a),i.clampToGround&&(a.billboard.heightReference=Ge.CLAMP_TO_GROUND,a.label.heightReference=Ge.CLAMP_TO_GROUND)}function BWe(t,e,n,i){let o=Tnt(e,n);o.description=Cnt(e,o);let a=Ent(e,"rtept",va.gpx),s=new Array(a.length);for(let l=0;l0?(l=l.concat(r.times),m.addSamples(l,s),d=d&&!0):d=!1;if(d){let h=c(i.waypointImage)?i.waypointImage:t._pinBuilder.fromMakiIconId("marker",v.RED,Uv);o.billboard=qTt(h),o.position=m,i.clampToGround&&(o.billboard.heightReference=Ge.CLAMP_TO_GROUND),o.availability=new ys,o.availability.addInterval(new ai({start:l[0],stop:l[l.length-1]}))}o.polyline=$Tt(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function kWe(t){let e={positions:[],times:[]},n=Ent(t,"trkpt",va.gpx),i;for(let o=0;onew Array(e).fill(n,0,e)))}function Iv(t){return t.reduce((e,n)=>e.concat(Array.isArray(n)?Iv(n):n),[])}var ngt=[0,1,2,3].concat(...Cv([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function ks(){let t=this;function e(o){let a=t.dyn_tree,s=t.stat_desc.static_tree,l=t.stat_desc.extra_bits,r=t.stat_desc.extra_base,d=t.stat_desc.max_length,m,h,u,R,V,F,U=0;for(R=0;R<=15;R++)o.bl_count[R]=0;for(a[o.heap[o.heap_max]*2+1]=0,m=o.heap_max+1;m<573;m++)h=o.heap[m],R=a[a[h*2+1]*2+1]+1,R>d&&(R=d,U++),a[h*2+1]=R,!(h>t.max_code)&&(o.bl_count[R]++,V=0,h>=r&&(V=l[h-r]),F=a[h*2],o.opt_len+=F*(R+V),s&&(o.static_len+=F*(s[h*2+1]+V)));if(U!==0){do{for(R=d-1;o.bl_count[R]===0;)R--;o.bl_count[R]--,o.bl_count[R+1]+=2,o.bl_count[d]--,U-=2}while(U>0);for(R=d;R!==0;R--)for(h=o.bl_count[R];h!==0;)u=o.heap[--m],!(u>t.max_code)&&(a[u*2+1]!=R&&(o.opt_len+=(R-a[u*2+1])*a[u*2],a[u*2+1]=R),h--)}}function n(o,a){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--a>0);return s>>>1}function i(o,a,s){let l=[],r=0,d,m,h;for(d=1;d<=15;d++)l[d]=r=r+s[d-1]<<1;for(m=0;m<=a;m++)h=o[m*2+1],h!==0&&(o[m*2]=n(l[h]++,h))}t.build_tree=function(o){let a=t.dyn_tree,s=t.stat_desc.static_tree,l=t.stat_desc.elems,r,d,m=-1,h;for(o.heap_len=0,o.heap_max=573,r=0;r=1;r--)o.pqdownheap(a,r);h=l;do r=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(a,1),d=o.heap[1],o.heap[--o.heap_max]=r,o.heap[--o.heap_max]=d,a[h*2]=a[r*2]+a[d*2],o.depth[h]=Math.max(o.depth[r],o.depth[d])+1,a[r*2+1]=a[d*2+1]=h,o.heap[1]=h++,o.pqdownheap(a,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],e(o),i(a,t.max_code,o.bl_count)}}ks._length_code=[0,1,2,3,4,5,6,7].concat(...Cv([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));ks.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];ks.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];ks.d_code=function(t){return t<256?ngt[t]:ngt[256+(t>>>7)]};ks.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];ks.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];ks.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];ks.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function fd(t,e,n,i,o){let a=this;a.static_tree=t,a.extra_bits=e,a.extra_base=n,a.elems=i,a.max_length=o}var HWe=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],wWe=Cv([[144,8],[112,9],[24,7],[8,8]]);fd.static_ltree=Iv(HWe.map((t,e)=>[t,wWe[e]]));var PWe=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],vWe=Cv([[30,5]]);fd.static_dtree=Iv(PWe.map((t,e)=>[t,vWe[e]]));fd.static_l_desc=new fd(fd.static_ltree,ks.extra_lbits,257,286,15);fd.static_d_desc=new fd(fd.static_dtree,ks.extra_dbits,0,30,15);fd.static_bl_desc=new fd(null,ks.extra_blbits,0,19,7);var KWe=9,zWe=8;function UR(t,e,n,i,o){let a=this;a.good_length=t,a.max_lazy=e,a.nice_length=n,a.max_chain=i,a.func=o}var ogt=0,gv=1,yS=2,wu=[new UR(0,0,0,0,ogt),new UR(4,4,8,4,gv),new UR(4,5,16,8,gv),new UR(4,6,32,32,gv),new UR(4,4,16,16,yS),new UR(8,16,32,32,yS),new UR(8,16,128,128,yS),new UR(8,32,128,256,yS),new UR(32,128,258,1024,yS),new UR(32,258,258,4096,yS)],Gv=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],ZV=0,Av=1,BL=2,Sv=3,jWe=32,Int=42,Tv=113,QL=666,Nnt=8,qWe=0,ynt=1,$We=2,zs=3,Ev=258,wh=Ev+zs+1;function igt(t,e,n,i){let o=t[e*2],a=t[n*2];return o=3&&P[ks.bl_order[ae]*2+1]===0;ae--);return t.opt_len+=3*(ae+1)+5+5+4,ae}function Mt(ae){t.pending_buf[t.pending++]=ae}function qt(ae){Mt(ae&255),Mt(ae>>>8&255)}function ie(ae){Mt(ae>>8&255),Mt(ae&255&255)}function oe(ae,fe){let ge,ue=fe;st>16-ue?(ge=ae,at|=ge<>>16-st,st+=ue-16):(at|=ae<=8&&(Mt(at&255),at>>>=8,st-=8)}function ke(){oe(ynt<<1,3),He(256,fd.static_ltree),zt(),1+q+10-st<9&&(oe(ynt<<1,3),He(256,fd.static_ltree),zt()),q=7}function Ve(ae,fe){let ge,ue,Ke;if(t.dist_buf[$]=ae,t.lc_buf[$]=fe&255,$++,ae===0?X[fe*2]++:(dt++,ae--,X[(ks._length_code[fe]+256+1)*2]++,_[ks.d_code(ae)*2]++),!($&8191)&&Z>2){for(ge=$*8,ue=C-G,Ke=0;Ke<30;Ke++)ge+=_[Ke*2]*(5+ks.extra_dbits[Ke]);if(ge>>>=3,dt8?qt(at):st>0&&Mt(at&255),at=0,st=0}function Ct(ae,fe,ge){Vn(),q=8,ge&&(qt(fe),qt(~fe)),t.pending_buf.set(r.subarray(ae,ae+fe),t.pending),t.pending+=fe}function _t(ae,fe,ge){oe((qWe<<1)+(ge?1:0),3),Ct(ae,fe,!0)}function Je(ae,fe,ge){let ue,Ke,An=0;Z>0?(w.build_tree(t),z.build_tree(t),An=kt(),ue=t.opt_len+3+7>>>3,Ke=t.static_len+3+7>>>3,Ke<=ue&&(ue=Ke)):ue=Ke=fe+5,fe+4<=ue&&ae!=-1?_t(ae,fe,ge):Ke==ue?(oe((ynt<<1)+(ge?1:0),3),We(fd.static_ltree,fd.static_dtree)):(oe(($We<<1)+(ge?1:0),3),de(w.max_code+1,z.max_code+1,An+1),We(X,_)),Qt(),ge&&Vn()}function xe(ae){Je(G>=0?G:-1,C-G,ae),G=C,e.flush_pending()}function oo(){let ae,fe,ge,ue;do{if(ue=d-Y-C,ue===0&&C===0&&Y===0)ue=a;else if(ue==-1)ue--;else if(C>=a+a-wh){r.set(r.subarray(a,a+a),0),y-=a,C-=a,G-=a,ae=R,ge=ae;do fe=h[--ge]&65535,h[ge]=fe>=a?fe-a:0;while(--ae!==0);ae=a,ge=ae;do fe=m[--ge]&65535,m[ge]=fe>=a?fe-a:0;while(--ae!==0);ue+=a}if(e.avail_in===0)return;ae=e.read_buf(r,C+Y,ue),Y+=ae,Y>=zs&&(u=r[C]&255,u=(u<i-5&&(fe=i-5);;){if(Y<=1){if(oo(),Y===0&&ae==0)return ZV;if(Y===0)break}if(C+=Y,Y=0,ge=G+fe,(C===0||C>=ge)&&(Y=C-ge,C=ge,xe(!1),e.avail_out===0)||C-G>=a-wh&&(xe(!1),e.avail_out===0))return ZV}return xe(ae==4),e.avail_out===0?ae==4?BL:ZV:ae==4?Sv:Av}function gs(ae){let fe=J,ge=C,ue,Ke,An=Q,si=C>a-wh?C-(a-wh):0,da=B,_a=l,Rl=C+Ev,na=r[ge+An-1],Go=r[ge+An];Q>=I&&(fe>>=2),da>Y&&(da=Y);do if(ue=ae,!(r[ue+An]!=Go||r[ue+An-1]!=na||r[ue]!=r[ge]||r[++ue]!=r[ge+1])){ge+=2,ue++;do;while(r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&r[++ge]==r[++ue]&&geAn){if(y=ae,An=Ke,Ke>=da)break;na=r[ge+An-1],Go=r[ge+An]}}while((ae=m[ae&_a]&65535)>si&&--fe!==0);return An<=Y?An:Y}function is(ae){let fe=0,ge;for(;;){if(Y=zs&&(u=(u<=zs)if(ge=Ve(C-y,A-zs),Y-=A,A<=M&&Y>=zs){A--;do C++,u=(u<=zs&&(u=(u<4096)&&(A=zs-1)),Q>=zs&&A<=Q){ue=C+Y-zs,ge=Ve(C-1-S,Q-zs),Y-=Q-1,Q-=2;do++C<=ue&&(u=(u<KWe||ue!=Nnt||ge<9||ge>15||fe<0||fe>9||An<0||An>2?-2:(ae.dstate=t,s=ge,a=1<9||ge<0||ge>2?-2:(wu[Z].func!=wu[fe].func&&ae.total_in!==0&&(ue=ae.deflate(1)),Z!=fe&&(Z=fe,M=wu[Z].max_lazy,I=wu[Z].good_length,B=wu[Z].nice_length,J=wu[Z].max_chain),E=ge,ue)},t.deflateSetDictionary=function(ae,fe,ge){let ue=ge,Ke,An=0;if(!fe||n!=Int)return-2;if(uea-wh&&(ue=a-wh,An=ge-ue),r.set(fe.subarray(An,An+ue),0),C=ue,G=ue,u=r[0]&255,u=(u<4||fe<0)return-2;if(!ae.next_out||!ae.next_in&&ae.avail_in!==0||n==QL&&fe!=4)return ae.msg=Gv[4],-2;if(ae.avail_out===0)return ae.msg=Gv[7],-5;if(e=ae,An=o,o=fe,n==Int&&(ue=Nnt+(s-8<<4)<<8,Ke=(Z-1&255)>>1,Ke>3&&(Ke=3),ue|=Ke<<6,C!==0&&(ue|=jWe),ue+=31-ue%31,n=Tv,ie(ue)),t.pending!==0){if(e.flush_pending(),e.avail_out===0)return o=-1,0}else if(e.avail_in===0&&fe<=An&&fe!=4)return e.msg=Gv[7],-5;if(n==QL&&e.avail_in!==0)return ae.msg=Gv[7],-5;if(e.avail_in!==0||Y!==0||fe!=0&&n!=QL){switch(si=-1,wu[Z].func){case ogt:si=ea(fe);break;case gv:si=is(fe);break;case yS:si=ja(fe);break;default:}if((si==BL||si==Sv)&&(n=QL),si==ZV||si==BL)return e.avail_out===0&&(o=-1),0;if(si==Av){if(fe==1)ke();else if(_t(0,0,!1),fe==3)for(ge=0;gen&&(o=n),o===0?0:(i.avail_in-=o,t.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),e),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let t=this,e=t.dstate.pending;e>t.avail_out&&(e=t.avail_out),e!==0&&(t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out,t.dstate.pending_out+e),t.next_out_index),t.next_out_index+=e,t.dstate.pending_out+=e,t.total_out+=e,t.avail_out-=e,t.dstate.pending-=e,t.dstate.pending===0&&(t.dstate.pending_out=0))}};function sgt(t){let e=this,n=new agt,i=efe(t&&t.chunkSize?t.chunkSize:64*1024),o=0,a=new Uint8Array(i),s=t?t.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=a,e.append=function(l,r){let d,m,h=0,u=0,R=0,V=[];if(l.length){n.next_in_index=0,n.next_in=l,n.avail_in=l.length;do{if(n.next_out_index=0,n.avail_out=i,d=n.deflate(o),d!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?V.push(new Uint8Array(a)):V.push(a.subarray(0,n.next_out_index))),R+=n.next_out_index,r&&n.next_in_index>0&&n.next_in_index!=h&&(r(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return V.length>1?(m=new Uint8Array(R),V.forEach(function(F){m.set(F,u),u+=F.length})):m=V[0]?new Uint8Array(V[0]):new Uint8Array,m}},e.flush=function(){let l,r,d=0,m=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,l=n.deflate(4),l!=1&&l!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(a.slice(0,n.next_out_index)),m+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),r=new Uint8Array(m),h.forEach(function(u){r.set(u,d),d+=u.length}),r}}function efe(t){return t+5*(Math.floor(t/16383)+1)}var P2i=b(W(),1);var Ph=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Tgt=1440,nfe=0,ife=4,ofe=9,afe=5,sfe=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],lfe=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],rfe=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],dfe=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],cfe=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],mfe=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],MF=15;function Ynt(){let t=this,e,n,i,o,a,s;function l(d,m,h,u,R,V,F,U,G,A,S){let g,C,y,Y,Q,J,M,Z,E,I,B,X,_,P,w;I=0,Q=h;do i[d[m+I]]++,I++,Q--;while(Q!==0);if(i[0]==h)return F[0]=-1,U[0]=0,0;for(Z=U[0],J=1;J<=MF&&i[J]===0;J++);for(M=J,ZQ&&(Z=Q),U[0]=Z,P=1<X+Z;){if(Y++,X+=Z,w=y-X,w=w>Z?Z:w,(C=1<<(J=M-X))>g+1&&(C-=g+1,_=M,JTgt)return-3;a[Y]=B=A[0],A[0]+=w,Y!==0?(s[Y]=Q,o[0]=J,o[1]=Z,J=Q>>>X-Z,o[2]=B-a[Y-1]-J,G.set(o,(a[Y-1]+J)*3)):F[0]=B}for(o[1]=M-X,I>=h?o[0]=192:S[I]>>X;J>>=1)Q^=J;for(Q^=J,E=(1<257?(A==-3?G.msg="oversubscribed distance tree":A==-5?(G.msg="incomplete distance tree",A=-3):A!=-4&&(G.msg="empty distance tree with lengths",A=-3),A):0)}}Ynt.inflate_trees_fixed=function(t,e,n,i){return t[0]=ofe,e[0]=afe,n[0]=sfe,i[0]=lfe,0};var Nv=0,lgt=1,rgt=2,dgt=3,cgt=4,mgt=5,hgt=6,Bnt=7,pgt=8,yv=9;function hfe(){let t=this,e,n=0,i,o=0,a=0,s=0,l=0,r=0,d=0,m=0,h,u=0,R,V=0;function F(U,G,A,S,g,C,y,Y){let Q,J,M,Z,E,I,B,X,_,P,w,z,H,nt,$,dt;B=Y.next_in_index,X=Y.avail_in,E=y.bitb,I=y.bitk,_=y.write,P=_>=J[dt+1],I-=J[dt+1],y.win[_++]=J[dt+2],P--;continue}do{if(E>>=J[dt+1],I-=J[dt+1],Z&16){for(Z&=15,H=J[dt+2]+(E&Ph[Z]),E>>=Z,I-=Z;I<15;)X--,E|=(Y.read_byte(B++)&255)<>=J[dt+1],I-=J[dt+1],Z&16){for(Z&=15;I>=Z,I-=Z,P-=H,_>=nt)$=_-nt,_-$>0&&2>_-$?(y.win[_++]=y.win[$++],y.win[_++]=y.win[$++],H-=2):(y.win.set(y.win.subarray($,$+2),_),_+=2,$+=2,H-=2);else{$=_-nt;do $+=y.end;while($<0);if(Z=y.end-$,H>Z){if(H-=Z,_-$>0&&Z>_-$)do y.win[_++]=y.win[$++];while(--Z!==0);else y.win.set(y.win.subarray($,$+Z),_),_+=Z,$+=Z,Z=0;$=0}}if(_-$>0&&H>_-$)do y.win[_++]=y.win[$++];while(--H!==0);else y.win.set(y.win.subarray($,$+H),_),_+=H,$+=H,H=0;break}else if(!(Z&64))Q+=J[dt+2],Q+=E&Ph[Z],dt=(M+Q)*3,Z=J[dt];else return Y.msg="invalid distance code",H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,-3;while(!0);break}if(Z&64)return Z&32?(H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,1):(Y.msg="invalid literal/length code",H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,-3);if(Q+=J[dt+2],Q+=E&Ph[Z],dt=(M+Q)*3,(Z=J[dt])===0){E>>=J[dt+1],I-=J[dt+1],y.win[_++]=J[dt+2],P--;break}}while(!0)}while(P>=258&&X>=10);return H=Y.avail_in-X,H=I>>3>3:H,X+=H,B-=H,I-=H<<3,y.bitb=E,y.bitk=I,Y.avail_in=X,Y.total_in+=B-Y.next_in_index,Y.next_in_index=B,y.write=_,0}t.init=function(U,G,A,S,g,C){e=Nv,d=U,m=G,h=A,u=S,R=g,V=C,i=null},t.proc=function(U,G,A){let S,g,C,y=0,Y=0,Q=0,J,M,Z,E;for(Q=G.next_in_index,J=G.avail_in,y=U.bitb,Y=U.bitk,M=U.write,Z=M=258&&J>=10&&(U.bitb=y,U.bitk=Y,G.avail_in=J,G.total_in+=Q-G.next_in_index,G.next_in_index=Q,U.write=M,A=F(d,m,h,u,R,V,U,G),Q=G.next_in_index,J=G.avail_in,y=U.bitb,Y=U.bitk,M=U.write,Z=M>>=i[g+1],Y-=i[g+1],C=i[g],C===0){s=i[g+2],e=hgt;break}if(C&16){l=C&15,n=i[g+2],e=rgt;break}if(!(C&64)){a=C,o=g/3+i[g+2];break}if(C&32){e=Bnt;break}return e=yv,G.msg="invalid literal/length code",A=-3,U.bitb=y,U.bitk=Y,G.avail_in=J,G.total_in+=Q-G.next_in_index,G.next_in_index=Q,U.write=M,U.inflate_flush(G,A);case rgt:for(S=l;Y>=S,Y-=S,a=m,i=R,o=V,e=dgt;case dgt:for(S=a;Y>=i[g+1],Y-=i[g+1],C=i[g],C&16){l=C&15,r=i[g+2],e=cgt;break}if(!(C&64)){a=C,o=g/3+i[g+2];break}return e=yv,G.msg="invalid distance code",A=-3,U.bitb=y,U.bitk=Y,G.avail_in=J,G.total_in+=Q-G.next_in_index,G.next_in_index=Q,U.write=M,U.inflate_flush(G,A);case cgt:for(S=l;Y>=S,Y-=S,e=mgt;case mgt:for(E=M-r;E<0;)E+=U.end;for(;n!==0;){if(Z===0&&(M==U.end&&U.read!==0&&(M=0,Z=M7&&(Y-=8,J++,Q--),U.write=M,A=U.inflate_flush(G,A),M=U.write,Z=MF.avail_out&&(G=F.avail_out),G!==0&&U==-5&&(U=0),F.avail_out-=G,F.total_out+=G,F.next_out.set(n.win.subarray(S,S+G),A),A+=G,S+=G,S==n.end&&(S=0,n.write==n.end&&(n.write=0),G=n.write-S,G>F.avail_out&&(G=F.avail_out),G!==0&&U==-5&&(U=0),F.avail_out-=G,F.total_out+=G,F.next_out.set(n.win.subarray(S,S+G),A),A+=G,S+=G),F.next_out_index=A,n.read=S,U},n.proc=function(F,U){let G,A,S,g,C,y,Y,Q;for(g=F.next_in_index,C=F.avail_in,A=n.bitb,S=n.bitk,y=n.write,Y=y>>1){case 0:A>>>=3,S-=3,G=S&7,A>>>=G,S-=G,i=Qnt;break;case 1:J=[],M=[],Z=[[]],E=[[]],Ynt.inflate_trees_fixed(J,M,Z,E),m.init(J[0],M[0],Z[0],0,E[0],0),A>>>=3,S-=3,i=Bv;break;case 2:A>>>=3,S-=3,i=Zgt;break;case 3:return A>>>=3,S-=3,i=BS,F.msg="invalid block type",U=-3,n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U)}break;case Qnt:for(;S<32;){if(C!==0)U=0;else return n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);C--,A|=(F.read_byte(g++)&255)<>>16&65535)!=(A&65535))return i=BS,F.msg="invalid stored block lengths",U=-3,n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);o=A&65535,A=S=0,i=o!==0?ugt:h!==0?Qv:yI;break;case ugt:if(C===0||Y===0&&(y==n.end&&n.read!==0&&(y=0,Y=yC&&(G=C),G>Y&&(G=Y),n.win.set(F.read_buf(g,G),y),g+=G,C-=G,y+=G,Y-=G,(o-=G)!==0)break;i=h!==0?Qv:yI;break;case Zgt:for(;S<14;){if(C!==0)U=0;else return n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);C--,A|=(F.read_byte(g++)&255)<29||(G>>5&31)>29)return i=BS,F.msg="too many length or distance symbols",U=-3,n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);if(G=258+(G&31)+(G>>5&31),!l||l.length>>=14,S-=14,s=0,i=Rgt;case Rgt:for(;s<4+(a>>>10);){for(;S<3;){if(C!==0)U=0;else return n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);C--,A|=(F.read_byte(g++)&255)<>>=3,S-=3}for(;s<19;)l[Vgt[s++]]=0;if(r[0]=7,G=V.inflate_trees_bits(l,r,d,u,F),G!=0)return U=G,U==-3&&(l=null,i=BS),n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);s=0,i=bgt;case bgt:for(;G=a,!(s>=258+(G&31)+(G>>5&31));){let P,w;for(G=r[0];S>>=G,S-=G,l[s++]=w;else{for(Q=w==18?7:w-14,P=w==18?11:3;S>>=G,S-=G,P+=A&Ph[Q],A>>>=Q,S-=Q,Q=s,G=a,Q+P>258+(G&31)+(G>>5&31)||w==16&&Q<1)return l=null,i=BS,F.msg="invalid bit length repeat",U=-3,n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);w=w==16?l[Q-1]:0;do l[Q++]=w;while(--P!==0);s=Q}}if(d[0]=-1,I=[],B=[],X=[],_=[],I[0]=9,B[0]=6,G=a,G=V.inflate_trees_dynamic(257+(G&31),1+(G>>5&31),l,I,B,X,_,u,F),G!=0)return G==-3&&(l=null,i=BS),U=G,n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,n.inflate_flush(F,U);m.init(I[0],B[0],u,X[0],u,_[0]),i=Bv;case Bv:if(n.bitb=A,n.bitk=S,F.avail_in=C,F.total_in+=g-F.next_in_index,F.next_in_index=g,n.write=y,(U=m.proc(n,F,U))!=1)return n.inflate_flush(F,U);if(U=0,m.free(F),g=F.next_in_index,C=F.avail_in,A=n.bitb,S=n.bitk,y=n.write,Y=y15?(t.inflateEnd(n),-2):(t.wbits=i,n.istate.blocks=new pfe(n,1<>4)+8>s.wbits){s.mode=_F,n.msg="invalid win size",s.marker=5;break}s.mode=fgt;case fgt:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,a=n.read_byte(n.next_in_index++)&255,((s.method<<8)+a)%31!==0){s.mode=_F,n.msg="incorrect header check",s.marker=5;break}if(!(a&Vfe)){s.mode=kL;break}s.mode=Fgt;case Fgt:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=Ugt;case Ugt:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=Ggt;case Ggt:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Agt;case Agt:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=knt,2);case knt:return s.mode=_F,n.msg="need dictionary",s.marker=0,-2;case kL:if(o=s.blocks.proc(n,o),o==-3){s.mode=_F,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Sgt;case Sgt:return n.avail_in=0,1;case _F:return-3;default:return-2}},t.inflateSetDictionary=function(n,i,o){let a=0,s=o;if(!n||!n.istate||n.istate.mode!=knt)return-2;let l=n.istate;return s>=1<0&&n.next_in_index!=u&&(r(n.next_in_index),u=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return d.length>1?(h=new Uint8Array(V),d.forEach(function(F){h.set(F,R),R+=F.length})):h=d[0]?new Uint8Array(d[0]):new Uint8Array,h}},e.flush=function(){n.inflateEnd()}}var nYi=b(W(),1);var K2i=b(W(),1);var BI="/",xnt=new Date(2107,11,31),Xnt=new Date(1980,0,1),Ka=void 0,vh="undefined",tW="function";var j2i=b(W(),1);var YL=class{constructor(e){return class extends TransformStream{constructor(n,i){let o=new e(i);super({transform(a,s){s.enqueue(o.append(a))},flush(a){let s=o.flush();s&&a.enqueue(s)}})}}}};var Wfe=64,Cgt=2;try{typeof navigator!=vh&&navigator.hardwareConcurrency&&(Cgt=navigator.hardwareConcurrency)}catch{}var ffe={chunkSize:512*1024,maxWorkers:Cgt,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:Ka,CompressionStreamNative:typeof CompressionStream!=vh&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=vh&&DecompressionStream},OF=Object.assign({},ffe);function xL(){return OF}function kv(t){return Math.max(t.chunkSize,Wfe)}function QI(t){let{baseURL:e,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:a,useWebWorkers:s,Deflate:l,Inflate:r,CompressionStream:d,DecompressionStream:m,workerScripts:h}=t;if(DF("baseURL",e),DF("chunkSize",n),DF("maxWorkers",i),DF("terminateWorkerTimeout",o),DF("useCompressionStream",a),DF("useWebWorkers",s),l&&(OF.CompressionStream=new YL(l)),r&&(OF.DecompressionStream=new YL(r)),DF("CompressionStream",d),DF("DecompressionStream",m),h!==Ka){let{deflate:u,inflate:R}=h;if((u||R)&&(OF.workerScripts||(OF.workerScripts={})),u){if(!Array.isArray(u))throw new Error("workerScripts.deflate must be an array");OF.workerScripts.deflate=u}if(R){if(!Array.isArray(R))throw new Error("workerScripts.inflate must be an array");OF.workerScripts.inflate=R}}}function DF(t,e){e!==Ka&&(OF[t]=e)}var oYi=b(W(),1);var zYi=b(W(),1);var MYi=b(W(),1);var XYi=b(W(),1);var dYi=b(W(),1);var sYi=b(W(),1),Igt=[];for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e&1?e=e>>>1^3988292384:e=e>>>1;Igt[t]=e}var eW=class{constructor(e){this.crc=e||-1}append(e){let n=this.crc|0;for(let i=0,o=e.length|0;i>>8^Igt[(n^e[i])&255];this.crc=n}get(){return~this.crc}};var XL=class extends TransformStream{constructor(){let e,n=new eW;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),e.value=i}}),e=this}};var EYi=b(W(),1);var hYi=b(W(),1);function Yv(t){if(typeof TextEncoder==vh){t=unescape(encodeURIComponent(t));let e=new Uint8Array(t.length);for(let n=0;n0&&e&&(t[n-1]=Kc.partial(e,t[n-1]&2147483648>>e-1,1)),t},partial(t,e,n){return t===32?e:(n?e|0:e<<32-t)+t*1099511627776},getPartial(t){return Math.round(t/1099511627776)||32},_shiftRight(t,e,n,i){for(i===void 0&&(i=[]);e>=32;e-=32)i.push(n),n=0;if(e===0)return i.concat(t);for(let s=0;s>>e),n=t[s]<<32-e;let o=t.length?t[t.length-1]:0,a=Kc.getPartial(o);return i.push(Kc.partial(e+a&31,e+a>32?n:i.pop(),1)),i}},JL={bytes:{fromBits(t){let n=Kc.bitLength(t)/8,i=new Uint8Array(n),o;for(let a=0;a>>24,o<<=8;return i},toBits(t){let e=[],n,i=0;for(n=0;n9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let a=new Uint32Array(n),s=0;for(let l=e.blockSize+i-(e.blockSize+i&e.blockSize-1);l<=o;l+=e.blockSize)e._block(a.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),e}finalize(){let t=this,e=t._buffer,n=t._h;e=Kc.concat(e,[Kc.partial(1,1)]);for(let i=e.length+2;i&15;i++)e.push(0);for(e.push(Math.floor(t._length/4294967296)),e.push(t._length|0);e.length;)t._block(e.splice(0,16));return t.reset(),n}_f(t,e,n,i){if(t<=19)return e&n|~e&i;if(t<=39)return e^n^i;if(t<=59)return e&n|e&i|n&i;if(t<=79)return e^n^i}_S(t,e){return e<>>32-t}_block(t){let e=this,n=e._h,i=Array(80);for(let d=0;d<16;d++)i[d]=t[d];let o=n[0],a=n[1],s=n[2],l=n[3],r=n[4];for(let d=0;d<=79;d++){d>=16&&(i[d]=e._S(1,i[d-3]^i[d-8]^i[d-14]^i[d-16]));let m=e._S(5,o)+e._f(d,a,s,l)+r+i[d]+e._key[Math.floor(d/20)]|0;r=l,l=s,s=e._S(30,a),a=o,o=m}n[0]=n[0]+o|0,n[1]=n[1]+a|0,n[2]=n[2]+s|0,n[3]=n[3]+l|0,n[4]=n[4]+r|0}};var Jnt={};Jnt.aes=class{constructor(t){let e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();let n=e._tables[0][4],i=e._tables[1],o=t.length,a,s,l,r=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(e._key=[s=t.slice(0),l=[]],a=o;a<4*o+28;a++){let d=s[a-1];(a%o===0||o===8&&a%o===4)&&(d=n[d>>>24]<<24^n[d>>16&255]<<16^n[d>>8&255]<<8^n[d&255],a%o===0&&(d=d<<8^d>>>24^r<<24,r=r<<1^(r>>7)*283)),s[a]=s[a-o]^d}for(let d=0;a;d++,a--){let m=s[d&3?a:a-4];a<=4||d<4?l[d]=m:l[d]=i[0][n[m>>>24]]^i[1][n[m>>16&255]]^i[2][n[m>>8&255]]^i[3][n[m&255]]}}encrypt(t){return this._crypt(t,0)}decrypt(t){return this._crypt(t,1)}_precompute(){let t=this._tables[0],e=this._tables[1],n=t[4],i=e[4],o=[],a=[],s,l,r,d;for(let m=0;m<256;m++)a[(o[m]=m<<1^(m>>7)*283)^m]=m;for(let m=s=0;!n[m];m^=l||1,s=a[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[m]=h,i[h]=m,d=o[r=o[l=o[m]]];let u=d*16843009^r*65537^l*257^m*16843008,R=o[h]*257^h*16843008;for(let V=0;V<4;V++)t[V][m]=R=R<<24^R>>>8,e[V][h]=u=u<<24^u>>>8}for(let m=0;m<5;m++)t[m]=t[m].slice(0),e[m]=e[m].slice(0)}_crypt(t,e){if(t.length!==4)throw new Error("invalid aes block size");let n=this._key[e],i=n.length/4-2,o=[0,0,0,0],a=this._tables[e],s=a[0],l=a[1],r=a[2],d=a[3],m=a[4],h=t[0]^n[0],u=t[e?3:1]^n[1],R=t[2]^n[2],V=t[e?1:3]^n[3],F=4,U,G,A;for(let S=0;S>>24]^l[u>>16&255]^r[R>>8&255]^d[V&255]^n[F],G=s[u>>>24]^l[R>>16&255]^r[V>>8&255]^d[h&255]^n[F+1],A=s[R>>>24]^l[V>>16&255]^r[h>>8&255]^d[u&255]^n[F+2],V=s[V>>>24]^l[h>>16&255]^r[u>>8&255]^d[R&255]^n[F+3],F+=4,h=U,u=G,R=A;for(let S=0;S<4;S++)o[e?3&-S:S]=m[h>>>24]<<24^m[u>>16&255]<<16^m[R>>8&255]<<8^m[V&255]^n[F++],U=h,h=u,u=R,R=V,V=U;return o}};var ygt={getRandomValues(t){let e=new Uint32Array(t.buffer),n=i=>{let o=987654321,a=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&a,i=18e3*(i&65535)+(i>>16)&a,(((o<<16)+i&a)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i>24&255)===255){let e=t>>16&255,n=t>>8&255,i=t&255;e===255?(e=0,n===255?(n=0,i===255?i=0:++i):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=i}else t+=1<<24;return t}incCounter(t){(t[0]=this.incWord(t[0]))===0&&(t[1]=this.incWord(t[1]))}calculate(t,e,n){let i;if(!(i=e.length))return[];let o=Kc.bitLength(e);for(let a=0;a>5)+1<<2,a,s,l,r,d,m=new ArrayBuffer(o),h=new DataView(m),u=0,R=Kc;for(e=JL.bytes.toBits(e),d=1;u<(o||1);d++){for(a=s=t.encrypt(R.concat(e,[d])),l=1;lo&&(t=new n().update(t).finalize());for(let a=0;athis.resolveReady=s),password:Jgt(e,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,l){let r=this,{password:d,strength:m,resolveReady:h,ready:u}=r;d?(await Nfe(r,m,d,RV(s,0,ML[m]+2)),s=RV(s,ML[m]+2),a?l.error(new Error(nW)):h()):await u;let R=new Uint8Array(s.length-PF-(s.length-PF)%kI);l.enqueue(xgt(r,s,R,0,PF,!0))},async flush(s){let{signed:l,ctr:r,hmac:d,pending:m,ready:h}=this;if(d&&r){await h;let u=RV(m,0,m.length-PF),R=RV(m,m.length-PF),V=new Uint8Array;if(u.length){let F=DL(GR,u);d.update(F);let U=r.update(F);V=_L(GR,U)}if(l){let F=RV(_L(GR,d.digest()),0,PF);for(let U=0;Uthis.resolveReady=a),password:Jgt(e,n),strength:i-1,pending:new Uint8Array})},async transform(a,s){let l=this,{password:r,strength:d,resolveReady:m,ready:h}=l,u=new Uint8Array;r?(u=await yfe(l,d,r),m()):await h;let R=new Uint8Array(u.length+a.length-a.length%kI);R.set(u,0),s.enqueue(xgt(l,a,R,u.length,0))},async flush(a){let{ctr:s,hmac:l,pending:r,ready:d}=this;if(l&&s){await d;let m=new Uint8Array;if(r.length){let h=s.update(DL(GR,r));l.update(h),m=_L(GR,h)}o.signature=_L(GR,l.digest()).slice(0,PF),a.enqueue(_nt(m,o.signature))}}}),o=this}};function xgt(t,e,n,i,o,a){let{ctr:s,hmac:l,pending:r}=t,d=e.length-o;r.length&&(e=_nt(r,e),n=kfe(n,d-d%kI));let m;for(m=0;m<=d-kI;m+=kI){let h=DL(GR,RV(e,m,m+kI));a&&l.update(h);let u=s.update(h);a||l.update(u),n.set(_L(GR,u),m+i)}return t.pending=RV(e,m),n}async function Nfe(t,e,n,i){let o=await Xgt(t,e,n,RV(i,0,ML[e])),a=RV(i,ML[e]);if(o[0]!=a[0]||o[1]!=a[1])throw new Error(wF)}async function yfe(t,e,n){let i=xv(new Uint8Array(ML[e])),o=await Xgt(t,e,n,i);return _nt(i,o)}async function Xgt(t,e,n,i){t.password=null;let o=await Bfe(Ufe,n,Sfe,!1,Tfe),a=await Qfe(Object.assign({salt:i},Mnt),o,8*(LL[e]*2+2)),s=new Uint8Array(a),l=DL(GR,RV(s,0,LL[e])),r=DL(GR,RV(s,LL[e],LL[e]*2)),d=RV(s,LL[e]*2);return Object.assign(t,{keys:{key:l,authentication:r,passwordVerification:d},ctr:new Cfe(new Efe(l),Array.from(gfe)),hmac:new Ife(r)}),d}async function Bfe(t,e,n,i,o){if(Bgt)try{return await OL.importKey(t,e,n,i,o)}catch{return Bgt=!1,HF.importKey(e)}else return HF.importKey(e)}async function Qfe(t,e,n){if(Qgt)try{return await OL.deriveBits(t,e,n)}catch{return Qgt=!1,HF.pbkdf2(e,t.salt,Mnt.iterations,n)}else return HF.pbkdf2(e,t.salt,Mnt.iterations,n)}function Jgt(t,e){return e===Ka?Yv(t):e}function _nt(t,e){let n=t;return t.length+e.length&&(n=new Uint8Array(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function kfe(t,e){if(e&&e>t.length){let n=t;t=new Uint8Array(e),t.set(n,0)}return t}function RV(t,e,n){return t.subarray(e,n)}function _L(t,e){return t.fromBits(e)}function DL(t,e){return t.toBits(e)}var yYi=b(W(),1);var YI=12,Mv=class extends TransformStream{constructor({password:e,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:e,passwordVerification:n}),Dgt(this,e)},transform(o,a){let s=this;if(s.password){let l=Lgt(s,o.subarray(0,YI));if(s.password=null,l[YI-1]!=s.passwordVerification)throw new Error(wF);o=o.subarray(YI)}i?a.error(new Error(nW)):a.enqueue(Lgt(s,o))}})}},_v=class extends TransformStream{constructor({password:e,passwordVerification:n}){super({start(){Object.assign(this,{password:e,passwordVerification:n}),Dgt(this,e)},transform(i,o){let a=this,s,l;if(a.password){a.password=null;let r=xv(new Uint8Array(YI));r[YI-1]=a.passwordVerification,s=new Uint8Array(i.length+r.length),s.set(Mgt(a,r),0),l=YI}else s=new Uint8Array(i.length),l=0;s.set(Mgt(a,i),l),o.enqueue(s)}})}};function Lgt(t,e){let n=new Uint8Array(e.length);for(let i=0;i>>24]),o=~t.crcKey2.get(),t.keys=[n,i,o]}function Ogt(t){let e=t.keys[2]|2;return Hgt(Math.imul(e,e^1)>>>8)}function Hgt(t){return t&255}function _gt(t){return t&4294967295}var wgt="deflate-raw",Dv=class extends TransformStream{constructor(e,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:a,encrypted:s,useCompressionStream:l,zipCrypto:r,signed:d,level:m}=e,h=this,u,R,V=Pgt(super.readable);(!s||r)&&d&&(u=new XL,V=AR(V,u)),a&&(V=Kgt(V,l,{level:m,chunkSize:n},o,i)),s&&(r?V=AR(V,new _v(e)):(R=new Jv(e),V=AR(V,R))),vgt(h,V,()=>{let F;s&&!r&&(F=R.signature),(!s||r)&&d&&(F=new DataView(u.value.buffer).getUint32(0)),h.signature=F})}},Ov=class extends TransformStream{constructor(e,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:a,encrypted:s,signed:l,signature:r,compressed:d,useCompressionStream:m}=e,h,u,R=Pgt(super.readable);s&&(a?R=AR(R,new Mv(e)):(u=new Xv(e),R=AR(R,u))),d&&(R=Kgt(R,m,{chunkSize:n},o,i)),(!s||a)&&l&&(h=new XL,R=AR(R,h)),vgt(this,R,()=>{if((!s||a)&&l){let V=new DataView(h.value.buffer);if(r!=V.getUint32(0,!1))throw new Error(QS)}})}};function Pgt(t){return AR(t,new TransformStream({transform(e,n){e&&e.length&&n.enqueue(e)}}))}function vgt(t,e,n){e=AR(e,new TransformStream({flush:n})),Object.defineProperty(t,"readable",{get(){return e}})}function Kgt(t,e,n,i,o){try{let a=e&&i?i:o;t=AR(t,new a(wgt,n))}catch{if(e)try{t=AR(t,new o(wgt,n))}catch{return t}else return t}return t}function AR(t,e){return t.pipeThrough(e)}var zgt="message",jgt="start",qgt="pull",Ont="data",$gt="ack",Hnt="close",Pv="deflate",vv="inflate";var Hv=class extends TransformStream{constructor(e,n){super({});let i=this,{codecType:o}=e,a;o.startsWith(Pv)?a=Dv:o.startsWith(vv)&&(a=Ov);let s=0,l=0,r=new a(e,n),d=super.readable,m=new TransformStream({transform(u,R){u&&u.length&&(l+=u.length,R.enqueue(u))},flush(){Object.assign(i,{inputSize:l})}}),h=new TransformStream({transform(u,R){u&&u.length&&(s+=u.length,R.enqueue(u))},flush(){let{signature:u}=r;Object.assign(i,{signature:u,outputSize:s,inputSize:l})}});Object.defineProperty(i,"readable",{get(){return d.pipeThrough(m).pipeThrough(r).pipeThrough(h)}})}},wv=class extends TransformStream{constructor(e){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,a){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>e?(a.enqueue(o.slice(0,e)),i(o.slice(e),a)):n=o}}};var HYi=b(W(),1);var nEt=typeof Worker!=vh;var xI=class{constructor(e,{readable:n,writable:i},{options:o,config:a,streamOptions:s,useWebWorkers:l,transferStreams:r,scripts:d},m){let{signal:h}=s;return Object.assign(e,{busy:!0,readable:n.pipeThrough(new wv(a.chunkSize)).pipeThrough(new Pnt(n,s),{signal:h}),writable:i,options:Object.assign({},o),scripts:d,transferStreams:r,terminate(){return new Promise(u=>{let{worker:R,busy:V}=e;R?(V?e.resolveTerminated=u:(R.terminate(),u()),e.interface=null):u()})},onTaskFinished(){let{resolveTerminated:u}=e;u&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),u()),e.busy=!1,m(e)}}),(l&&nEt?Yfe:iEt)(e,a)}},Pnt=class extends TransformStream{constructor(e,{onstart:n,onprogress:i,size:o,onend:a}){let s=0;super({async start(){n&&await wnt(n,o)},async transform(l,r){s+=l.length,i&&await wnt(i,s,o),r.enqueue(l)},async flush(){e.size=s,a&&await wnt(a,s)}})}};async function wnt(t,...e){try{await t(...e)}catch{}}function iEt(t,e){return{run:()=>xfe(t,e)}}function Yfe(t,e){let{baseURL:n,chunkSize:i}=e;if(!t.interface){let o;try{o=Lfe(t.scripts[0],n,t)}catch{return nEt=!1,iEt(t,e)}Object.assign(t,{worker:o,interface:{run:()=>Xfe(t,{chunkSize:i})}})}return t.interface}async function xfe({options:t,readable:e,writable:n,onTaskFinished:i},o){try{let a=new Hv(t,o);await e.pipeThrough(a).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:l,outputSize:r}=a;return{signature:s,inputSize:l,outputSize:r}}finally{i()}}async function Xfe(t,e){let n,i,o=new Promise((u,R)=>{n=u,i=R});Object.assign(t,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:a,options:s,scripts:l}=t,{writable:r,closed:d}=Jfe(t.writable),m=Kv({type:jgt,scripts:l.slice(1),options:s,config:e,readable:a,writable:r},t);m||Object.assign(t,{reader:a.getReader(),writer:r.getWriter()});let h=await o;return m||await r.getWriter().close(),await d,h}function Jfe(t){let e,n=new Promise(o=>e=o);return{writable:new WritableStream({async write(o){let a=t.getWriter();await a.ready,await a.write(o),a.releaseLock()},close(){e()},abort(o){return t.getWriter().abort(o)}}),closed:n}}var tEt=!0,eEt=!0;function Lfe(t,e,n){let i={type:"module"},o,a;typeof t==tW&&(t=t());try{o=new URL(t,e)}catch{o=t}if(tEt)try{a=new Worker(o)}catch{tEt=!1,a=new Worker(o,i)}else a=new Worker(o,i);return a.addEventListener(zgt,s=>Mfe(s,n)),a}function Kv(t,{worker:e,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:a,readable:s,writable:l}=t,r=[];if(a&&(a.byteLength!G.busy);if(U)return aEt(U),new xI(U,t,e,F);if(kS.lengthvnt.push({resolve:G,stream:t,workerOptions:e}))}function F(U){if(vnt.length){let[{resolve:G,stream:A,workerOptions:S}]=vnt.splice(0,1);G(new xI(U,A,S,F))}else U.worker?(aEt(U),_fe(U,e)):kS=kS.filter(G=>G!=U)}}function _fe(t,e){let{config:n}=e,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(t.terminated?t.terminated=!1:t.terminateTimeout=setTimeout(async()=>{kS=kS.filter(o=>o!=t);try{await t.terminate()}catch{}},i))}function aEt(t){let{terminateTimeout:e}=t;e&&(clearTimeout(e),t.terminateTimeout=null)}var txi=b(W(),1);var Dfe="Writer iterator completed too soon",Ofe="text/plain";var Hfe="Content-Type";var wfe=64*1024,jnt="writable",XI=class{constructor(){this.size=0}init(){this.initialized=!0}},jv=class extends XI{get readable(){let e=this,{chunkSize:n=wfe}=e,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:a=0,size:s,diskNumberStart:l}=i,{chunkOffset:r}=this;o.enqueue(await Fd(e,a+r,Math.min(n,s-r),l)),r+n>s?o.close():this.chunkOffset+=n}});return i}},Knt=class extends XI{constructor(){super();let e=this,n=new WritableStream({write(i){return e.writeUint8Array(i)}});Object.defineProperty(e,jnt,{get(){return n}})}writeUint8Array(){}};var qv=class extends Knt{constructor(e){super(),Object.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){let n=this,i=0,o=n.pending,a=n.pending.length;for(n.pending="",i=0;i2?n.data+=btoa(o):n.pending=o}getData(){return this.data+btoa(this.pending)}},iW=class extends jv{constructor(e){super(),Object.assign(this,{blob:e,size:e.size})}async readUint8Array(e,n){let i=this,o=e+n,s=await(e||on&&(s=s.slice(e,o)),new Uint8Array(s)}},HL=class extends XI{constructor(e){super();let n=this,i=new TransformStream,o=[];e&&o.push([Hfe,e]),Object.defineProperty(n,jnt,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},$v=class extends iW{constructor(e){super(new Blob([e],{type:Ofe}))}},t3=class extends HL{constructor(e){super(e),Object.assign(this,{encoding:e,utf8:!e||e.toLowerCase()=="utf-8"})}async getData(){let{encoding:e,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((a,s)=>{Object.assign(o,{onload:({target:l})=>a(l.result),onerror:()=>s(o.error)}),o.readAsText(i,e)})}}};var znt=class extends jv{constructor(e){super(),this.readers=e}async init(){let e=this,{readers:n}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(e.lastDiskOffset+=i.size),e.size+=i.size})),super.init()}async readUint8Array(e,n,i=0){let o=this,{readers:a}=this,s,l=i;l==-1&&(l=a.length-1);let r=e;for(;r>=a[l].size;)r-=a[l].size,l++;let d=a[l],m=d.size;if(r+n<=m)s=await Fd(d,r,n);else{let h=m-r;s=new Uint8Array(n),s.set(await Fd(d,r,h)),s.set(await o.readUint8Array(e+h,n-h,i),h)}return o.lastDiskNumber=Math.max(l,o.lastDiskNumber),s}},e3=class extends XI{constructor(e,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,a,s,l=new WritableStream({async write(m){let{availableSize:h}=i;if(s)m.length>=h?(await r(m.slice(0,h)),await d(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(m.slice(h))):await r(m);else{let{value:u,done:R}=await e.next();if(R&&!u)throw new Error(Dfe);o=u,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await TR(o),a=u.writable,s=a.getWriter(),await this.write(m)}},async close(){await s.ready,await d()}});Object.defineProperty(i,jnt,{get(){return l}});async function r(m){let h=m.length;h&&(await s.ready,await s.write(m),o.size+=h,i.size+=h,i.availableSize-=h)}async function d(){a.size=o.size,await s.close()}}};async function TR(t,e){if(t.init&&!t.initialized)await t.init(e);else return Promise.resolve()}function n3(t){return Array.isArray(t)&&(t=new znt(t)),t instanceof ReadableStream&&(t={readable:t}),t}function i3(t){t.writable===Ka&&typeof t.next==tW&&(t=new e3(t)),t instanceof WritableStream&&(t={writable:t});let{writable:e}=t;return e.size===Ka&&(e.size=0),t instanceof e3||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}function Fd(t,e,n,i){return t.readUint8Array(e,n,i)}var Zxi=b(W(),1);var axi=b(W(),1);var nxi=b(W(),1),sEt="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Pfe=sEt.length==256;function lEt(t){if(Pfe){let e="";for(let n=0;nthis[n]=e[n])}};var cit="File format is not recognized",qfe="End of central directory not found",$fe="End of Zip64 central directory locator not found",tFe="Central directory header not found",eFe="Local file header not found",nFe="Zip64 extra field not found",iFe="File contains encrypted entry",oFe="Encryption method not supported",cEt="Compression method not supported",mEt="Split zip file",hEt="utf-8",pEt="cp437",aFe=[[iit,4294967295],[oit,4294967295],[ait,4294967295],[o3,65535]],sFe={[65535]:{getValue:Ol,bytes:4},[4294967295]:{getValue:s3,bytes:8}},p3=class{constructor(e,n={}){Object.assign(this,{reader:n3(e),options:n,config:xL()})}async*getEntriesGenerator(e={}){let n=this,{reader:i}=n,{config:o}=n;if(await TR(i),(i.size===Ka||!i.readUint8Array)&&(i=new iW(await new Response(i.readable).blob()),await TR(i)),i.size<22)throw new Error(cit);i.chunkSize=kv(o);let a=await mFe(i,101010256,i.size,22,65535*16);if(!a){let M=await Fd(i,0,4),Z=jr(M);throw Ol(Z)==134695760?new Error(mEt):new Error(qfe)}let s=jr(a),l=Ol(s,12),r=Ol(s,16),d=a.offset,m=zr(s,20),h=d+22+m,u=zr(s,4),R=i.lastDiskNumber||0,V=zr(s,6),F=zr(s,8),U=0,G=0;if(r==4294967295||l==4294967295||F==65535||V==65535){let M=await Fd(i,a.offset-20,20),Z=jr(M);if(Ol(Z,0)==117853008){r=s3(Z,8);let E=await Fd(i,r,56,-1),I=jr(E),B=a.offset-20-56;if(Ol(I,0)!=101075792&&r!=B){let X=r;r=B,U=r-X,E=await Fd(i,r,56,-1),I=jr(E)}if(Ol(I,0)!=101075792)throw new Error($fe);u==65535&&(u=Ol(I,16)),V==65535&&(V=Ol(I,20)),F==65535&&(F=s3(I,32)),l==4294967295&&(l=s3(I,40)),r-=l}}if(r>=i.size&&(U=i.size-r-l-22,r=i.size-l-22),R!=u)throw new Error(mEt);if(r<0)throw new Error(cit);let A=0,S=await Fd(i,r,l,V),g=jr(S);if(l){let M=a.offset-l;if(Ol(g,A)!=33639248&&r!=M){let Z=r;r=M,U+=r-Z,S=await Fd(i,r,l,V),g=jr(S)}}let C=a.offset-r-(i.lastDiskOffset||0);if(l!=C&&C>=0&&(l=C,S=await Fd(i,r,l,V),g=jr(S)),r<0||r>=i.size)throw new Error(cit);let y=vm(n,e,"filenameEncoding"),Y=vm(n,e,"commentEncoding");for(let M=0;MZ.getData(kt,Wt,Mt),A=H;let{onprogress:Nt}=e;if(Nt)try{await Nt(M+1,F,new vF(Z))}catch{}yield Wt}let Q=vm(n,e,"extractPrependedData"),J=vm(n,e,"extractAppendedData");return Q&&(n.prependedData=G>0?await Fd(i,0,G):new Uint8Array),n.comment=m?await Fd(i,d+22,m):new Uint8Array,J&&(n.appendedData=h>>8&255:u>>>24&255),signature:u,compressed:d!=0,encrypted:C,useWebWorkers:vm(o,i,"useWebWorkers"),useCompressionStream:vm(o,i,"useCompressionStream"),transferStreams:vm(o,i,"transferStreams"),checkPasswordOnly:Z},config:m,streamOptions:{signal:M,size:Q,onstart:I,onprogress:B,onend:X}},P=0;try{({outputSize:P}=await zv({readable:J,writable:E},_))}catch(w){if(!Z||w.message!=nW)throw w}finally{let w=vm(o,i,"preventClose");E.size+=P,!w&&!E.locked&&await E.getWriter().close()}return Z?Ka:e.getData?e.getData():E}};function uEt(t,e,n){let i=t.rawBitFlag=zr(e,n+2),o=(i&1)==1,a=Ol(e,n+6);Object.assign(t,{encrypted:o,version:zr(e,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:a,lastModDate:hFe(a),filenameLength:zr(e,n+22),extraFieldLength:zr(e,n+24)})}async function ZEt(t,e,n,i,o){let{rawExtraField:a}=e,s=e.extraField=new Map,l=jr(new Uint8Array(a)),r=0;try{for(;re[o]==a);for(let o=0,a=0;o=5&&(a.push(JI),s.push(a3));let l=1;a.forEach((r,d)=>{if(t.data.length>=l+4){let m=Ol(i,l);e[r]=t[r]=new Date(m*1e3);let h=s[d];t[h]=m}l+=4})}async function mFe(t,e,n,i,o){let a=new Uint8Array(4),s=jr(a);pFe(s,0,e);let l=i+o;return await r(i)||await r(Math.min(l,n));async function r(d){let m=n-d,h=await Fd(t,m,d);for(let u=h.length-i;u>=0;u--)if(h[u]==a[0]&&h[u+1]==a[1]&&h[u+2]==a[2]&&h[u+3]==a[3])return{offset:m+u,buffer:h.slice(u,u+i).buffer}}}function vm(t,e,n){return e[n]===Ka?t.options[n]:e[n]}function hFe(t){let e=(t&4294901760)>>16,n=t&65535;try{return new Date(1980+((e&65024)>>9),((e&480)>>5)-1,e&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function mit(t){return new Date(Number(t/BigInt(1e4)-BigInt(116444736e5)))}function LI(t,e){return t.getUint8(e)}function zr(t,e){return t.getUint16(e,!0)}function Ol(t,e){return t.getUint32(e,!0)}function s3(t,e){return Number(t.getBigUint64(e,!0))}function pFe(t,e,n){t.setUint32(e,n,!0)}function jr(t){return new DataView(t.buffer)}var Axi=b(W(),1);var RFe="File already exists",bFe="Zip file comment exceeds 64KB",WFe="File entry comment exceeds 64KB",fFe="File entry name exceeds 64KB",WEt="Version exceeds 65535",FFe="The strength must equal 1, 2, or 3",UFe="Extra field type exceeds 65535",GFe="Extra field data exceeds 64KB",Tit="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",fEt=new Uint8Array([7,0,2,0,65,69,3,0,0]),Ait=0,FEt=[],Z3=class{constructor(e,n={}){e=i3(e);let i=e.availableSize!==Ka&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==Ka&&e.maxSize>0&&e.maxSize!==1/0;Object.assign(this,{writer:e,addSplitZipSignature:i,options:n,config:xL(),files:new Map,filenames:new Set,offset:e.writable.size,pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async add(e="",n,i={}){let o=this,{pendingAddFileCalls:a,config:s}=o;AitFEt.push(r));let l;try{if(e=e.trim(),o.filenames.has(e))throw new Error(RFe);return o.filenames.add(e),l=AFe(o,e,n,i),a.add(l),await l}catch(r){throw o.filenames.delete(e),r}finally{a.delete(l);let r=FEt.shift();r?r():Ait--}}async close(e=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:a}=this,{writable:s}=a;for(;o.size;)await Promise.allSettled(Array.from(o));return await BFe(this,e,n),ms(i,n,"preventClose")||await s.getWriter().close(),a.getData?a.getData():s}};async function AFe(t,e,n,i){e=e.trim(),i.directory&&!e.endsWith(BI)?e+=BI:i.directory=e.endsWith(BI);let o=ms(t,i,"encodeText",Yv),a=o(e);if(ta(a)>65535)throw new Error(fFe);let s=i.comment||"",l=o(s);if(ta(l)>65535)throw new Error(WFe);let r=ms(t,i,"version",20);if(r>65535)throw new Error(WEt);let d=ms(t,i,"versionMadeBy",20);if(d>65535)throw new Error(WEt);let m=ms(t,i,JI,new Date),h=ms(t,i,wL),u=ms(t,i,PL),R=ms(t,i,rit,!0),V=ms(t,i,sit,0),F=ms(t,i,lit,0),U=ms(t,i,"password"),G=ms(t,i,"rawPassword"),A=ms(t,i,"encryptionStrength",3),S=ms(t,i,"zipCrypto"),g=ms(t,i,"extendedTimestamp",!0),C=ms(t,i,"keepOrder",!0),y=ms(t,i,"level"),Y=ms(t,i,"useWebWorkers"),Q=ms(t,i,"bufferedWrite"),J=ms(t,i,"dataDescriptorSignature",!1),M=ms(t,i,"signal"),Z=ms(t,i,"useCompressionStream"),E=ms(t,i,"dataDescriptor",!0),I=ms(t,i,dit);if(U!==Ka&&A!==Ka&&(A<1||A>3))throw new Error(FFe);let B=new Uint8Array,{extraField:X}=i;if(X){let Mt=0,qt=0;X.forEach(ie=>Mt+=4+ta(ie)),B=new Uint8Array(Mt),X.forEach((ie,oe)=>{if(oe>65535)throw new Error(UFe);if(ta(ie)>65535)throw new Error(GFe);ar(B,new Uint16Array([oe]),qt),ar(B,new Uint16Array([ta(ie)]),qt+2),ar(B,ie,qt+4),qt+=4+ta(ie)})}let _=0,P=0,w=0,z=I===!0;n&&(n=n3(n),await TR(n),n.size===Ka?(E=!0,(I||I===Ka)&&(I=!0,w=_=4294967295)):(w=n.size,_=QFe(w)));let{diskOffset:H,diskNumber:nt,maxSize:$}=t.writer,dt=z||w>=4294967295,q=z||_>=4294967295,at=z||t.offset+t.pendingEntriesSize-H>=4294967295,Et=ms(t,i,"supportZip64SplitFile",!0)&&z||nt+Math.ceil(t.pendingEntriesSize/$)>=65535;if(at||dt||q||Et){if(I===!1||!C)throw new Error(Tit);I=!0}I=I||!1,i=Object.assign({},i,{rawFilename:a,rawComment:l,version:r,versionMadeBy:d,lastModDate:m,lastAccessDate:h,creationDate:u,rawExtraField:B,zip64:I,zip64UncompressedSize:dt,zip64CompressedSize:q,zip64Offset:at,zip64DiskNumberStart:Et,password:U,rawPassword:G,level:!Z&&t.config.CompressionStream===Ka?0:y,useWebWorkers:Y,encryptionStrength:A,extendedTimestamp:g,zipCrypto:S,bufferedWrite:Q,keepOrder:C,dataDescriptor:E,dataDescriptorSignature:J,signal:M,msDosCompatible:R,internalFileAttribute:V,externalFileAttribute:F,useCompressionStream:Z});let Qt=gFe(i),Wt=CFe(i),Nt=ta(Qt.localHeaderArray,Wt.dataDescriptorArray);P=Nt+_,t.options.usdz&&(P+=P+64),t.pendingEntriesSize+=P;let kt;try{kt=await SFe(t,e,n,{headerInfo:Qt,dataDescriptorInfo:Wt,metadataSize:Nt},i)}finally{t.pendingEntriesSize-=P}return Object.assign(kt,{name:e,comment:s,extraField:X}),new vF(kt)}async function SFe(t,e,n,i,o){let{files:a,writer:s}=t,{keepOrder:l,dataDescriptor:r,signal:d}=o,{headerInfo:m}=i,{usdz:h}=t.options,u=Array.from(a.values()).pop(),R={},V,F,U,G,A,S,g;a.set(e,R);try{let Q;l&&(Q=u&&u.lock,C()),(o.bufferedWrite||t.writerLocked||t.bufferedWrites&&l||!r)&&!h?(S=new TransformStream,g=new Response(S.readable).blob(),S.writable.size=0,V=!0,t.bufferedWrites++,await TR(s)):(S=s,await y()),await TR(S);let{writable:J}=s,{diskOffset:M}=s;if(t.addSplitZipSignature){delete t.addSplitZipSignature;let E=new Uint8Array(4),I=Ud(E);$o(I,0,134695760),await gR(J,E),t.offset+=4}h&&EFe(i,t.offset-M),V||(await Q,await Y(J));let{diskNumber:Z}=s;if(A=!0,R.diskNumberStart=Z,R=await TFe(n,S,R,i,t.config,o),A=!1,a.set(e,R),R.filename=e,V){await S.writable.getWriter().close();let E=await g;await Q,await y(),G=!0,r||(E=await NFe(R,E,J,o)),await Y(J),R.diskNumberStart=s.diskNumber,M=s.diskOffset,await E.stream().pipeTo(J,{preventClose:!0,preventAbort:!0,signal:d}),J.size+=E.size,G=!1}if(R.offset=t.offset-M,R.zip64)yFe(R,o);else if(R.offset>=4294967295)throw new Error(Tit);return t.offset+=R.size,R}catch(Q){if(V&&G||!V&&A){if(t.hasCorruptedEntries=!0,Q)try{Q.corruptedEntry=!0}catch{}V?t.offset+=S.writable.size:t.offset=S.writable.size}throw a.delete(e),Q}finally{V&&t.bufferedWrites--,U&&U(),F&&F()}function C(){R.lock=new Promise(Q=>U=Q)}async function y(){t.writerLocked=!0;let{lockWriter:Q}=t;t.lockWriter=new Promise(J=>F=()=>{t.writerLocked=!1,J()}),await Q}async function Y(Q){ta(m.localHeaderArray)>s.availableSize&&(s.availableSize=0,await gR(Q,new Uint8Array))}}async function TFe(t,e,{diskNumberStart:n,lock:i},o,a,s){let{headerInfo:l,dataDescriptorInfo:r,metadataSize:d}=o,{localHeaderArray:m,headerArray:h,lastModDate:u,rawLastModDate:R,encrypted:V,compressed:F,version:U,compressionMethod:G,rawExtraFieldExtendedTimestamp:A,extraFieldExtendedTimestampFlag:S,rawExtraFieldNTFS:g,rawExtraFieldAES:C}=l,{dataDescriptorArray:y}=r,{rawFilename:Y,lastAccessDate:Q,creationDate:J,password:M,rawPassword:Z,level:E,zip64:I,zip64UncompressedSize:B,zip64CompressedSize:X,zip64Offset:_,zip64DiskNumberStart:P,zipCrypto:w,dataDescriptor:z,directory:H,versionMadeBy:nt,rawComment:$,rawExtraField:dt,useWebWorkers:q,onstart:at,onprogress:st,onend:Et,signal:Qt,encryptionStrength:Wt,extendedTimestamp:Nt,msDosCompatible:kt,internalFileAttribute:Mt,externalFileAttribute:qt,useCompressionStream:ie}=s,oe={lock:i,versionMadeBy:nt,zip64:I,directory:!!H,filenameUTF8:!0,rawFilename:Y,commentUTF8:!0,rawComment:$,rawExtraFieldExtendedTimestamp:A,rawExtraFieldNTFS:g,rawExtraFieldAES:C,rawExtraField:dt,extendedTimestamp:Nt,msDosCompatible:kt,internalFileAttribute:Mt,externalFileAttribute:qt,diskNumberStart:n},He=0,rn=0,de,{writable:zt}=e;if(t){t.chunkSize=kv(a),await gR(zt,m);let Ve=t.readable,We=Ve.size=t.size,Vn={options:{codecType:Pv,level:E,rawPassword:Z,password:M,encryptionStrength:Wt,zipCrypto:V&&w,passwordVerification:V&&w&&R>>8&255,signed:!0,compressed:F,encrypted:V,useWebWorkers:q,useCompressionStream:ie,transferStreams:!1},config:a,streamOptions:{signal:Qt,size:We,onstart:at,onprogress:st,onend:Et}},Ct=await zv({readable:Ve,writable:zt},Vn);rn=Ct.inputSize,He=Ct.outputSize,de=Ct.signature,zt.size+=rn}else await gR(zt,m);let ke;if(I){let Ve=4;B&&(Ve+=8),X&&(Ve+=8),_&&(Ve+=8),P&&(Ve+=4),ke=new Uint8Array(Ve)}else ke=new Uint8Array;return IFe({signature:de,rawExtraFieldZip64:ke,compressedSize:He,uncompressedSize:rn,headerInfo:l,dataDescriptorInfo:r},s),z&&await gR(zt,y),Object.assign(oe,{uncompressedSize:rn,compressedSize:He,lastModDate:u,rawLastModDate:R,creationDate:J,lastAccessDate:Q,encrypted:V,size:d+He,compressionMethod:G,version:U,headerArray:h,signature:de,rawExtraFieldZip64:ke,extraFieldExtendedTimestampFlag:S,zip64UncompressedSize:B,zip64CompressedSize:X,zip64Offset:_,zip64DiskNumberStart:P}),oe}function gFe(t){let{rawFilename:e,lastModDate:n,lastAccessDate:i,creationDate:o,rawPassword:a,password:s,level:l,zip64:r,zipCrypto:d,dataDescriptor:m,directory:h,rawExtraField:u,encryptionStrength:R,extendedTimestamp:V}=t,F=l!==0&&!h,U=!!(s&&ta(s)||a&&ta(a)),G=t.version,A;if(U&&!d){A=new Uint8Array(ta(fEt)+2);let P=Ud(A);ba(P,0,39169),ar(A,fEt,2),R3(P,8,R)}else A=new Uint8Array;let S,g,C;if(V){g=new Uint8Array(9+(i?4:0)+(o?4:0));let P=Ud(g);ba(P,0,21589),ba(P,2,ta(g)-4),C=1+(i?2:0)+(o?4:0),R3(P,4,C);let w=5;$o(P,w,Math.floor(n.getTime()/1e3)),w+=4,i&&($o(P,w,Math.floor(i.getTime()/1e3)),w+=4),o&&$o(P,w,Math.floor(o.getTime()/1e3));try{S=new Uint8Array(36);let z=Ud(S),H=Sit(n);ba(z,0,10),ba(z,2,32),ba(z,8,1),ba(z,10,24),Km(z,12,H),Km(z,20,Sit(i)||H),Km(z,28,Sit(o)||H)}catch{S=new Uint8Array}}else S=g=new Uint8Array;let y=2048;m&&(y=y|8);let Y=0;F&&(Y=8),r&&(G=G>45?G:45),U&&(y=y|1,d||(G=G>51?G:51,Y=99,F&&(A[9]=8)));let Q=new Uint8Array(26),J=Ud(Q);ba(J,0,G),ba(J,2,y),ba(J,4,Y);let M=new Uint32Array(1),Z=Ud(M),E;nxnt?E=xnt:E=n,ba(Z,0,(E.getHours()<<6|E.getMinutes())<<5|E.getSeconds()/2),ba(Z,2,(E.getFullYear()-1980<<4|E.getMonth()+1)<<5|E.getDate());let I=M[0];$o(J,6,I),ba(J,22,ta(e));let B=ta(A,g,S,u);ba(J,24,B);let X=new Uint8Array(30+ta(e)+B),_=Ud(X);return $o(_,0,67324752),ar(X,Q,4),ar(X,e,30),ar(X,A,30+ta(e)),ar(X,g,30+ta(e,A)),ar(X,S,30+ta(e,A,g)),ar(X,u,30+ta(e,A,g,S)),{localHeaderArray:X,headerArray:Q,headerView:J,lastModDate:n,rawLastModDate:I,encrypted:U,compressed:F,version:G,compressionMethod:Y,extraFieldExtendedTimestampFlag:C,rawExtraFieldExtendedTimestamp:g,rawExtraFieldNTFS:S,rawExtraFieldAES:A,extraFieldLength:B}}function EFe(t,e){let{headerInfo:n}=t,{localHeaderArray:i,extraFieldLength:o}=n,a=Ud(i),s=64-(e+ta(i))%64;s<4&&(s+=64);let l=new Uint8Array(s),r=Ud(l);ba(r,0,6534),ba(r,2,s-2);let d=i;n.localHeaderArray=i=new Uint8Array(ta(d)+s),ar(i,d),ar(i,l,ta(d)),a=Ud(i),ba(a,28,o+s),t.metadataSize+=s}function CFe(t){let{zip64:e,dataDescriptor:n,dataDescriptorSignature:i}=t,o=new Uint8Array,a,s=0;return n&&(o=new Uint8Array(e?i?24:20:i?16:12),a=Ud(o),i&&(s=4,$o(a,0,134695760))),{dataDescriptorArray:o,dataDescriptorView:a,dataDescriptorOffset:s}}function IFe(t,e){let{signature:n,rawExtraFieldZip64:i,compressedSize:o,uncompressedSize:a,headerInfo:s,dataDescriptorInfo:l}=t,{headerView:r,encrypted:d}=s,{dataDescriptorView:m,dataDescriptorOffset:h}=l,{zip64:u,zip64UncompressedSize:R,zip64CompressedSize:V,zipCrypto:F,dataDescriptor:U}=e;if((!d||F)&&n!==Ka&&($o(r,10,n),U&&$o(m,h,n)),u){let G=Ud(i);ba(G,0,1),ba(G,2,ta(i)-4);let A=4;R&&($o(r,18,4294967295),Km(G,A,BigInt(a)),A+=8),V&&($o(r,14,4294967295),Km(G,A,BigInt(o))),U&&(Km(m,h+4,BigInt(o)),Km(m,h+12,BigInt(a)))}else $o(r,14,o),$o(r,18,a),U&&($o(m,h+4,o),$o(m,h+8,a))}async function NFe(t,e,n,{zipCrypto:i}){let o;o=await e.slice(0,26).arrayBuffer(),o.byteLength!=26&&(o=o.slice(0,26));let a=new DataView(o);return(!t.encrypted||i)&&$o(a,14,t.signature),t.zip64?($o(a,18,4294967295),$o(a,22,4294967295)):($o(a,18,t.compressedSize),$o(a,22,t.uncompressedSize)),await gR(n,new Uint8Array(o)),e.slice(o.byteLength)}function yFe(t,e){let{rawExtraFieldZip64:n,offset:i,diskNumberStart:o}=t,{zip64UncompressedSize:a,zip64CompressedSize:s,zip64Offset:l,zip64DiskNumberStart:r}=e,d=Ud(n),m=4;a&&(m+=8),s&&(m+=8),l&&(Km(d,m,BigInt(i)),m+=8),r&&$o(d,m,o)}async function BFe(t,e,n){let{files:i,writer:o}=t,{diskOffset:a,writable:s}=o,{diskNumber:l}=o,r=0,d=0,m=t.offset-a,h=i.size;for(let[,C]of i){let{rawFilename:y,rawExtraFieldZip64:Y,rawExtraFieldAES:Q,rawComment:J,rawExtraFieldNTFS:M,rawExtraField:Z,extendedTimestamp:E,extraFieldExtendedTimestampFlag:I,lastModDate:B}=C,X;if(E){X=new Uint8Array(9);let _=Ud(X);ba(_,0,21589),ba(_,2,5),R3(_,4,I),$o(_,5,Math.floor(B.getTime()/1e3))}else X=new Uint8Array;C.rawExtraFieldCDExtendedTimestamp=X,d+=46+ta(y,J,Y,Q,M,X,Z)}let u=new Uint8Array(d),R=Ud(u);await TR(o);let V=0;for(let[C,y]of Array.from(i.values()).entries()){let{offset:Y,rawFilename:Q,rawExtraFieldZip64:J,rawExtraFieldAES:M,rawExtraFieldCDExtendedTimestamp:Z,rawExtraFieldNTFS:E,rawExtraField:I,rawComment:B,versionMadeBy:X,headerArray:_,directory:P,zip64:w,zip64UncompressedSize:z,zip64CompressedSize:H,zip64DiskNumberStart:nt,zip64Offset:$,msDosCompatible:dt,internalFileAttribute:q,externalFileAttribute:at,diskNumberStart:st,uncompressedSize:Et,compressedSize:Qt}=y,Wt=ta(J,M,Z,E,I);$o(R,r,33639248),ba(R,r+4,X);let Nt=Ud(_);z||$o(Nt,18,Et),H||$o(Nt,14,Qt),ar(u,_,r+6),ba(R,r+30,Wt),ba(R,r+32,ta(B)),ba(R,r+34,w&&nt?65535:st),ba(R,r+36,q),at?$o(R,r+38,at):P&&dt&&R3(R,r+38,16),$o(R,r+42,w&&$?4294967295:Y),ar(u,Q,r+46),ar(u,J,r+46+ta(Q)),ar(u,M,r+46+ta(Q,J)),ar(u,Z,r+46+ta(Q,J,M)),ar(u,E,r+46+ta(Q,J,M,Z)),ar(u,I,r+46+ta(Q,J,M,Z,E)),ar(u,B,r+46+ta(Q)+Wt);let kt=46+ta(Q,B)+Wt;if(r-V>o.availableSize&&(o.availableSize=0,await gR(s,u.slice(V,r)),V=r),r+=kt,n.onprogress)try{await n.onprogress(C+1,i.size,new vF(y))}catch{}}await gR(s,V?u.slice(V):u);let F=o.diskNumber,{availableSize:U}=o;U<22&&F++;let G=ms(t,n,"zip64");if(m>=4294967295||d>=4294967295||h>=65535||F>=65535){if(G===!1)throw new Error(Tit);G=!0}let A=new Uint8Array(G?98:22),S=Ud(A);r=0,G&&($o(S,0,101075792),Km(S,4,BigInt(44)),ba(S,12,45),ba(S,14,45),$o(S,16,F),$o(S,20,l),Km(S,24,BigInt(h)),Km(S,32,BigInt(h)),Km(S,40,BigInt(d)),Km(S,48,BigInt(m)),$o(S,56,117853008),Km(S,64,BigInt(m)+BigInt(d)),$o(S,72,F+1),ms(t,n,"supportZip64SplitFile",!0)&&(F=65535,l=65535),h=65535,m=4294967295,d=4294967295,r+=76),$o(S,r,101010256),ba(S,r+4,F),ba(S,r+6,l),ba(S,r+8,h),ba(S,r+10,h),$o(S,r+12,d),$o(S,r+16,m);let g=ta(e);if(g)if(g<=65535)ba(S,r+20,g);else throw new Error(bFe);await gR(s,A),g&&await gR(s,e)}async function gR(t,e){let n=t.getWriter();try{await n.ready,t.size+=ta(e),await n.write(e)}finally{n.releaseLock()}}function Sit(t){if(t)return(BigInt(t.getTime())+BigInt(116444736e5))*BigInt(1e4)}function ms(t,e,n,i){let o=e[n]===Ka?t.options[n]:e[n];return o===Ka?i:o}function QFe(t){return t+5*(Math.floor(t/16383)+1)}function R3(t,e,n){t.setUint8(e,n)}function ba(t,e,n){t.setUint16(e,n,!0)}function $o(t,e,n){t.setUint32(e,n,!0)}function Km(t,e,n){t.setBigUint64(e,n,!0)}function ar(t,e,n){t.set(e,n)}function Ud(t){return new DataView(t.buffer)}function ta(...t){let e=0;return t.forEach(n=>n&&(e+=n.length)),e}QI({Deflate:sgt,Inflate:Egt});var xxi=b(W(),1);function kFe(t){return typeof t=="string"&&(t=document.getElementById(t)),t}var Ui=kFe;var Jxi=b(W(),1);function YFe(t,e){this.position=t,this.headingPitchRange=e}var zL=YFe;var Dxi=b(W(),1);function b3(t,e){this.id=e,this.name=t,this.playlistIndex=0,this.playlist=[],this.tourStart=new It,this.tourEnd=new It,this.entryStart=new It,this.entryEnd=new It,this._activeEntries=[]}b3.prototype.addPlaylistEntry=function(t){this.playlist.push(t)};b3.prototype.play=function(t,e){this.tourStart.raiseEvent();let n=this;AEt.call(this,t,e,function(i){n.playlistIndex=0,i||GEt(n._activeEntries),n.tourEnd.raiseEvent(i)})};b3.prototype.stop=function(){GEt(this._activeEntries)};function GEt(t){for(let e=t.pop();e!==void 0;e=t.pop())e.stop()}function AEt(t,e,n){let i=this.playlist[this.playlistIndex];if(i){let o=xFe.bind(this,t,e,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,t.scene.camera,e);else{let a=this;i.play(function(){a.entryEnd.raiseEvent(i);let s=a._activeEntries.indexOf(i);s>=0&&a._activeEntries.splice(s,1)}),o(t,e,n)}}else c(n)&&n(!1)}function xFe(t,e,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let a=this._activeEntries.indexOf(o);a>=0&&this._activeEntries.splice(a,1),this.playlistIndex++,AEt.call(this,t,e,n)}}var jL=b3;var sXi=b(W(),1);var tXi=b(W(),1);var jxi=b(W(),1),Jo=Object.freeze({Linear:Object.freeze({None:function(t){return t},In:function(t){return this.None(t)},Out:function(t){return this.None(t)},InOut:function(t){return this.None(t)}}),Quadratic:Object.freeze({In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}}),Cubic:Object.freeze({In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}}),Quartic:Object.freeze({In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}}),Quintic:Object.freeze({In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}}),Sinusoidal:Object.freeze({In:function(t){return 1-Math.sin((1-t)*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return .5*(1-Math.sin(Math.PI*(.5-t)))}}),Exponential:Object.freeze({In:function(t){return t===0?0:Math.pow(1024,t-1)},Out:function(t){return t===1?1:1-Math.pow(2,-10*t)},InOut:function(t){return t===0?0:t===1?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(-Math.pow(2,-10*(t-1))+2)}}),Circular:Object.freeze({In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}}),Elastic:Object.freeze({In:function(t){return t===0?0:t===1?1:-Math.pow(2,10*(t-1))*Math.sin((t-1.1)*5*Math.PI)},Out:function(t){return t===0?0:t===1?1:Math.pow(2,-10*t)*Math.sin((t-.1)*5*Math.PI)+1},InOut:function(t){return t===0?0:t===1?1:(t*=2,t<1?-.5*Math.pow(2,10*(t-1))*Math.sin((t-1.1)*5*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin((t-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(t){var e=1.70158;return t===1?1:t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return t===0?0:--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?.5*(t*t*((e+1)*t-e)):.5*((t-=2)*t*((e+1)*t+e)+2)}}),Bounce:Object.freeze({In:function(t){return 1-Jo.Bounce.Out(1-t)},Out:function(t){return t<.36363636363636365?7.5625*t*t:t<.7272727272727273?7.5625*(t-=.5454545454545454)*t+.75:t<.9090909090909091?7.5625*(t-=.8181818181818182)*t+.9375:7.5625*(t-=.9545454545454546)*t+.984375},InOut:function(t){return t<.5?Jo.Bounce.In(t*2)*.5:Jo.Bounce.Out(t*2-1)*.5+.5}}),generatePow:function(t){return t===void 0&&(t=4),t=t1e4?1e4:t,{In:function(e){return Math.pow(e,t)},Out:function(e){return 1-Math.pow(1-e,t)},InOut:function(e){return e<.5?Math.pow(e*2,t)/2:(1-Math.pow(2-e*2,t))/2+.5}}}}),qL=function(){return performance.now()},XFe=function(){function t(){this._tweens={},this._tweensAddedDuringUpdate={}}return t.prototype.getAll=function(){var e=this;return Object.keys(this._tweens).map(function(n){return e._tweens[n]})},t.prototype.removeAll=function(){this._tweens={}},t.prototype.add=function(e){this._tweens[e.getId()]=e,this._tweensAddedDuringUpdate[e.getId()]=e},t.prototype.remove=function(e){delete this._tweens[e.getId()],delete this._tweensAddedDuringUpdate[e.getId()]},t.prototype.update=function(e,n){e===void 0&&(e=qL()),n===void 0&&(n=!1);var i=Object.keys(this._tweens);if(i.length===0)return!1;for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o1?a(t[n],t[n-1],n-i):a(t[o],t[o+1>n?n:o+1],i-o)},Bezier:function(t,e){for(var n=0,i=t.length-1,o=Math.pow,a=MI.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-e,i-s)*o(e,s)*t[s]*a(i,s);return n},CatmullRom:function(t,e){var n=t.length-1,i=n*e,o=Math.floor(i),a=MI.Utils.CatmullRom;return t[0]===t[n]?(e<0&&(o=Math.floor(i=n*(1+e))),a(t[(o-1+n)%n],t[o],t[(o+1)%n],t[(o+2)%n],i-o)):e<0?t[0]-(a(t[0],t[0],t[1],t[1],-i)-t[0]):e>1?t[n]-(a(t[n],t[n],t[n-1],t[n-1],i-n)-t[n]):a(t[o?o-1:0],t[o],t[n1;i--)n*=i;return t[e]=n,n}}(),CatmullRom:function(t,e,n,i,o){var a=(n-t)*.5,s=(i-e)*.5,l=o*o,r=o*l;return(2*e-2*n+a+s)*r+(-3*e+3*n-2*a-s)*l+a*o+e}}},SEt=function(){function t(){}return t.nextId=function(){return t._nextId++},t._nextId=0,t}(),git=new XFe,TEt=function(){function t(e,n){n===void 0&&(n=git),this._object=e,this._group=n,this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Jo.Linear.None,this._interpolationFunction=MI.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=SEt.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1}return t.prototype.getId=function(){return this._id},t.prototype.isPlaying=function(){return this._isPlaying},t.prototype.isPaused=function(){return this._isPaused},t.prototype.getDuration=function(){return this._duration},t.prototype.to=function(e,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=e,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},t.prototype.duration=function(e){return e===void 0&&(e=1e3),this._duration=e<0?0:e,this},t.prototype.dynamic=function(e){return e===void 0&&(e=!1),this._isDynamic=e,this},t.prototype.start=function(e,n){if(e===void 0&&(e=qL()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._group&&this._group.add(this),this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=e,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var a in this._valuesEnd)o[a]=this._valuesEnd[a];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},t.prototype.startFromCurrentValues=function(e){return this.start(e,!0)},t.prototype._setupProperties=function(e,n,i,o,a){for(var s in i){var l=e[s],r=Array.isArray(l),d=r?"array":typeof l,m=!r&&Array.isArray(i[s]);if(!(d==="undefined"||d==="function")){if(m){var h=i[s];if(h.length===0)continue;for(var u=[l],R=0,V=h.length;R"u"||a)&&(n[s]=l),r||(n[s]*=1),m?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},t.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._group&&this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},t.prototype.end=function(){return this._goToEnd=!0,this.update(1/0),this},t.prototype.pause=function(e){return e===void 0&&(e=qL()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=e,this._group&&this._group.remove(this),this)},t.prototype.resume=function(e){return e===void 0&&(e=qL()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=e-this._pauseStart,this._pauseStart=0,this._group&&this._group.add(this),this)},t.prototype.stopChainedTweens=function(){for(var e=0,n=this._chainedTweens.length;es)return!1;n&&this.start(e,!0)}if(this._goToEnd=!1,ed)return 1;var U=Math.trunc(l/r),G=l-U*r,A=Math.min(G/i._duration,1);return A===0&&l===i._duration?1:A},h=m(),u=this._easingFunction(h);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,u),this._onUpdateCallback&&this._onUpdateCallback(this._object,h),this._duration===0||l>=this._duration)if(this._repeat>0){var R=Math.min(Math.trunc((l-this._duration)/r)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=R);for(a in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[a]=="string"&&(this._valuesStartRepeat[a]=this._valuesStartRepeat[a]+parseFloat(this._valuesEnd[a])),this._yoyo&&this._swapEndStartRepeatValues(a),this._valuesStart[a]=this._valuesStartRepeat[a];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=r*R,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var V=0,F=this._chainedTweens.length;Vthis._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&t&&this._process(!0)};function _Fe(t){let e=t.slice(0,Math.min(4,t.size)),n=kd(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(e),n.promise}function DFe(t){let e=kd(),n=new FileReader;return n.addEventListener("load",function(){e.resolve(n.result)}),n.addEventListener("error",function(){e.reject(n.error)}),n.readAsText(t),e.promise}function xEt(t){let e={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,a;for(let s in e)e.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),a=`xmlns:${s}=`,o.test(t)&&t.indexOf(a)===-1&&(c(n)||(n=t.substr(0,t.indexOf("",e),i,o,a;for(;e!==-1&&e0?(zm.maximumRed=a,zm.red=void 0):(zm.maximumRed=void 0,zm.red=0),o>0?(zm.maximumGreen=o,zm.green=void 0):(zm.maximumGreen=void 0,zm.green=0),i>0?(zm.maximumBlue=i,zm.blue=void 0):(zm.maximumBlue=void 0,zm.blue=0),zm.alpha=n,v.fromRandom(zm)):new v(a,o,i,n)}function YS(t,e,n){let i=Gi(t,e,n);if(c(i))return Bit(i,Gi(t,"colorMode",n)==="random")}function HFe(t){let e=Lo(t,"TimeStamp",se.kmlgx),n=Gi(e,"when",se.kmlgx);if(!c(e)||!c(n)||n.length===0)return;let i=rt.fromIso8601(n),o=new ys;return o.addInterval(new ai({start:i,stop:be.MAXIMUM_VALUE})),o}function wFe(t){let e=Lo(t,"TimeSpan",se.kmlgx);if(!c(e))return;let n,i=Lo(e,"begin",se.kmlgx),o=c(i)?rt.fromIso8601(i.textContent):void 0,a=Lo(e,"end",se.kmlgx),s=c(a)?rt.fromIso8601(a.textContent):void 0;if(c(o)&&c(s)){if(rt.lessThan(s,o)){let l=o;o=s,s=l}n=new ys,n.addInterval(new ai({start:o,stop:s}))}else c(o)?(n=new ys,n.addInterval(new ai({start:o,stop:be.MAXIMUM_VALUE}))):c(s)&&(n=new ys,n.addInterval(new ai({start:be.MINIMUM_VALUE,stop:s})));return n}function LEt(){let t=new Mr;return t.width=KF,t.height=KF,t.scaleByDistance=new ln(gEt,EEt,CEt,IEt),t.pixelOffsetScaleByDistance=new ln(gEt,EEt,CEt,IEt),t}function Xit(){let t=new su;return t.outline=!0,t.outlineColor=v.WHITE,t}function MEt(){let t=new au;return t.translucencyByDistance=new ln(3e6,1,5e6,0),t.pixelOffset=new K(17,0),t.horizontalOrigin=to.LEFT,t.font="16px sans-serif",t.style=Pa.FILL_AND_OUTLINE,t}function Jit(t,e,n,i,o){let a=Gi(t,"href",se.kml);if(!c(a)||a.length===0)return;if(a.indexOf("root://icons/palette-")===0){let l=a.charAt(21),r=f(io(t,"x",se.gx),0),d=f(io(t,"y",se.gx),0);r=Math.min(r/32,7),d=7-Math.min(d/32,7);let m=8*d+r;a=`https://maps.google.com/mapfiles/kml/pal${l}/icon${m}.png`}let s=xit(a,n,i);if(o){let l=Gi(t,"refreshMode",se.kml),r=Gi(t,"viewRefreshMode",se.kml);l==="onInterval"||l==="onExpire"?Gn(`kml-refreshMode-${l}`,`KML - Unsupported Icon refreshMode: ${l}`):(r==="onStop"||r==="onRegion")&&Gn(`kml-refreshMode-${r}`,`KML - Unsupported Icon viewRefreshMode: ${r}`);let d=f(Gi(t,"viewBoundScale",se.kml),1),m=r==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=f(Gi(t,"viewFormat",se.kml),m),u=Gi(t,"httpQuery",se.kml);c(h)&&s.setQueryParameters(Sc(U3(h))),c(u)&&s.setQueryParameters(Sc(U3(u)));let R=e._ellipsoid;return Mit(s,e.camera,e.canvas,d,e._lastCameraView.bbox,R),s}return s}function PFe(t,e,n,i,o){let a=io(e,"scale",se.kml),s=io(e,"heading",se.kml),l=YS(e,"color",se.kml),r=Lo(e,"Icon",se.kml),d=Jit(r,t,i,o,!1);c(r)&&!c(d)&&(d=!1);let m=io(r,"x",se.gx),h=io(r,"y",se.gx),u=io(r,"w",se.gx),R=io(r,"h",se.gx),V=Lo(e,"hotSpot",se.kml),F=zF(V,"x"),U=zF(V,"y"),G=sr(V,"xunits"),A=sr(V,"yunits"),S=n.billboard;c(S)||(S=LEt(),n.billboard=S),S.image=d,S.scale=a,S.color=l,(c(m)||c(h)||c(u)||c(R))&&(S.imageSubRegion=new Fe(m,h,u,R)),c(s)&&s!==0&&(S.rotation=k.toRadians(-s),S.alignedAxis=p.UNIT_Z),a=f(a,1);let g,C;c(F)&&(G==="pixels"?g=-F*a:G==="insetPixels"?g=(F-KF)*a:G==="fraction"&&(g=-F*KF*a),g+=KF*.5*a),c(U)&&(A==="pixels"?C=U*a:A==="insetPixels"?C=(-U+KF)*a:A==="fraction"&&(C=U*KF*a),C-=KF*.5*a),(c(g)||c(C))&&(S.pixelOffset=new K(g,C))}function F3(t,e,n,i,o){for(let a=0,s=e.childNodes.length;a:clampToSeaFloor is currently not supported, using :clampToGround."),Ge.CLAMP_TO_GROUND):e==="relativeToSeaFloor"?(Gn("kml-gx:altitudeMode-relativeToSeaFloor","KML - :relativeToSeaFloor is currently not supported, using :relativeToGround."),Ge.RELATIVE_TO_GROUND):(c(t)?Gn("kml-altitudeMode-unknown",`KML - Unknown :${t}, using :CLAMP_TO_GROUND.`):Gn("kml-gx:altitudeMode-unknown",`KML - Unknown :${e}, using :CLAMP_TO_GROUND.`),Ge.CLAMP_TO_GROUND)}function zFe(t,e,n){return n==="relativeToSeaFloor"||e==="absolute"||e==="relativeToGround"?t:((c(e)&&e!=="clampToGround"||c(n)&&n!=="clampToSeaFloor")&&Gn("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${f(e,n)}`),new vc(t))}function jFe(t,e,n,i){if(!c(t))return;if(n==="relativeToSeaFloor"||e==="absolute"||e==="relativeToGround")return t;(c(e)&&e!=="clampToGround"||c(n)&&n!=="clampToSeaFloor")&&Gn("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${f(e,n)}`);let o=t.length;for(let a=0;a0&&Gn("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let R=Math.min(l.length,d.length),V=[],F=[];for(let G=0;G0&&i.availability.addInterval(new ai({start:F[0],stop:F[F.length-1]})),h&&m&&Lit(e,i,o),!0}function kEt(t,e,n,i,o,a,s,l,r){let d=t[0],m=t[t.length-1],h=new Bs;h.addSamples(t,e),n.intervals.addInterval(new ai({start:d,stop:m,isStartIncluded:r,isStopIncluded:r,data:zFe(h,s,l)})),i.addInterval(new ai({start:d,stop:m,isStartIncluded:r,isStopIncluded:r})),o.intervals.addInterval(new ai({start:d,stop:m,isStartIncluded:r,isStopIncluded:r,data:a}))}function eUe(t,e,n,i,o){let a=vu(n,"interpolate",se.gx),s=Pu(n,"Track",se.gx),l,r,d,m=!1,h=new _m,u=new ys,R=new cl,V=t._ellipsoid;for(let F=0,U=s.length;F0)){for(V='',a=0;a`;V+="
${f(F.displayName,s)}${f(F.value,"")}
"}if(!c(V))return;V=LFe.link(V),Ba.innerHTML=V;let U=Ba.querySelectorAll("a");for(a=0;a1&&(Kh(Ba,"a","href",i),Kh(Ba,"link","href",i),Kh(Ba,"area","href",i),Kh(Ba,"img","src",i),Kh(Ba,"iframe","src",i),Kh(Ba,"video","src",i),Kh(Ba,"audio","src",i),Kh(Ba,"source","src",i),Kh(Ba,"track","src",i),Kh(Ba,"input","src",i),Kh(Ba,"embed","src",i),Kh(Ba,"script","src",i),Kh(Ba,"video","poster",i)),zh(Ba,"a","href",o),zh(Ba,"link","href",o),zh(Ba,"area","href",o),zh(Ba,"img","src",o),zh(Ba,"iframe","src",o),zh(Ba,"video","src",o),zh(Ba,"audio","src",o),zh(Ba,"source","src",o),zh(Ba,"track","src",o),zh(Ba,"input","src",o),zh(Ba,"embed","src",o),zh(Ba,"script","src",o),zh(Ba,"video","poster",o);let G='
',G+=`${Ba.innerHTML}
`,Ba.innerHTML="",e.description=G}function S3(t,e,n){let i=n.entityCollection,o=n.parentEntity,a=n.sourceResource,s=n.uriResolver,l=JEt(e,i,n.context),r=l.kml,d=vFe(t,e,n.styleCollection,a,s),m=Gi(e,"name",se.kml);l.name=m,l.parent=o;let h=wFe(e);c(h)||(h=HFe(e)),l.availability=h,Dit(l);function u(S){return S?S.show&&u(S.parent):!0}let R=vu(e,"visibility",se.kml);l.show=u(o)&&f(R,!0);let V=Lo(e,"author",se.atom),F=r.author;F.name=Gi(V,"name",se.atom),F.uri=Gi(V,"uri",se.atom),F.email=Gi(V,"email",se.atom);let U=Lo(e,"link",se.atom),G=r.link;G.href=sr(U,"href"),G.hreflang=sr(U,"hreflang"),G.rel=sr(U,"rel"),G.type=sr(U,"type"),G.title=sr(U,"title"),G.length=sr(U,"length"),r.address=Gi(e,"address",se.kml),r.phoneNumber=Gi(e,"phoneNumber",se.kml),r.snippet=Gi(e,"Snippet",se.kml),oUe(e,l),aUe(e,l,d,s,a);let A=t._ellipsoid;return vEt(e,l,A),PEt(e,l,A),c(Lo(e,"Region",se.kml))&&Gn("kml-region","KML - Placemark Regions are unsupported"),{entity:l,styleEntity:d}}function wEt(t,e,n,i){i.addNodes(e.childNodes,n),i.process()}function sUe(t,e,n,i){let o=S3(t,e,n),a=Re(n);a.parentEntity=o.entity,wEt(t,e,a,i)}function lUe(t,e,n,i){let o=S3(t,e,n),a=o.entity,s=o.styleEntity,l=!1,r=e.childNodes;for(let d=0,m=r.length;dk.PI_OVER_TWO?k.PI_OVER_TWO:d}function l(d){return d>k.PI?d-k.TWO_PI:d<-k.PI?d+k.TWO_PI:d}let r=RG(t.queryParameters);if(r=r.replace(/%5B/g,"[").replace(/%5D/g,"]"),c(e)&&e._mode!==Vt.MORPHING){let d,m;if(o=f(o,VUe),c(n)&&(Nit.x=n.clientWidth*.5,Nit.y=n.clientHeight*.5,d=e.pickEllipsoid(Nit,a,uUe)),c(d)?m=a.cartesianToCartographic(d,_I):(m=Gt.center(o,_I),d=a.cartographicToCartesian(m)),c(i)&&!k.equalsEpsilon(i,1,k.EPSILON9)){let G=o.width*i*.5,A=o.height*i*.5;o=new Gt(l(m.longitude-G),s(m.latitude-A),l(m.longitude+G),s(m.latitude+A))}r=r.replace("[bboxWest]",k.toDegrees(o.west).toString()),r=r.replace("[bboxSouth]",k.toDegrees(o.south).toString()),r=r.replace("[bboxEast]",k.toDegrees(o.east).toString()),r=r.replace("[bboxNorth]",k.toDegrees(o.north).toString());let h=k.toDegrees(m.longitude).toString(),u=k.toDegrees(m.latitude).toString();r=r.replace("[lookatLon]",h),r=r.replace("[lookatLat]",u),r=r.replace("[lookatTilt]",k.toDegrees(e.pitch).toString()),r=r.replace("[lookatHeading]",k.toDegrees(e.heading).toString()),r=r.replace("[lookatRange]",p.distance(e.positionWC,d)),r=r.replace("[lookatTerrainLon]",h),r=r.replace("[lookatTerrainLat]",u),r=r.replace("[lookatTerrainAlt]",m.height.toString()),a.cartesianToCartographic(e.positionWC,_I),r=r.replace("[cameraLon]",k.toDegrees(_I.longitude).toString()),r=r.replace("[cameraLat]",k.toDegrees(_I.latitude).toString()),r=r.replace("[cameraAlt]",k.toDegrees(_I.height).toString());let R=e.frustum,V=R.aspectRatio,F="",U="";if(c(V)){let G=k.toDegrees(R.fov);V>1?(F=G,U=G/V):(U=G,F=G*V)}r=r.replace("[horizFov]",F.toString()),r=r.replace("[vertFov]",U.toString())}else r=r.replace("[bboxWest]","-180"),r=r.replace("[bboxSouth]","-90"),r=r.replace("[bboxEast]","180"),r=r.replace("[bboxNorth]","90"),r=r.replace("[lookatLon]",""),r=r.replace("[lookatLat]",""),r=r.replace("[lookatRange]",""),r=r.replace("[lookatTilt]",""),r=r.replace("[lookatHeading]",""),r=r.replace("[lookatTerrainLon]",""),r=r.replace("[lookatTerrainLat]",""),r=r.replace("[lookatTerrainAlt]",""),r=r.replace("[cameraLon]",""),r=r.replace("[cameraLat]",""),r=r.replace("[cameraAlt]",""),r=r.replace("[horizFov]",""),r=r.replace("[vertFov]","");c(n)?(r=r.replace("[horizPixels]",n.clientWidth),r=r.replace("[vertPixels]",n.clientHeight)):(r=r.replace("[horizPixels]",""),r=r.replace("[vertPixels]","")),r=r.replace("[terrainEnabled]","1"),r=r.replace("[clientVersion]","1"),r=r.replace("[kmlVersion]","2.2"),r=r.replace("[clientName]","Cesium"),r=r.replace("[language]","English"),t.setQueryParameters(Sc(r))}function ZUe(t,e,n,i){let a=S3(t,e,n).entity,s=n.sourceResource,l=n.uriResolver,r=Lo(e,"Link",se.kml);if(c(r)||(r=Lo(e,"Url",se.kml)),c(r)){let d=Gi(r,"href",se.kml),m,h;if(c(d)){let u=d;if(d=xit(d,s,n.uriResolver),/^data:/.test(d.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(u=s.getDerivedResource({url:u}));else{if(u=d.clone(),m=Gi(r,"viewRefreshMode",se.kml),m==="onRegion"){Gn("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=f(Gi(r,"viewBoundScale",se.kml),1);let U=m==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",G=f(Gi(r,"viewFormat",se.kml),U),A=Gi(r,"httpQuery",se.kml);c(G)&&d.setQueryParameters(Sc(U3(G))),c(A)&&d.setQueryParameters(Sc(U3(A)));let S=t._ellipsoid;Mit(d,t.camera,t.canvas,h,t._lastCameraView.bbox,S)}let R={sourceUri:u,uriResolver:l,context:a.id,screenOverlayContainer:n.screenOverlayContainer},V=new gr,F=_it(t,V,d,R).then(function(U){let G=t._entityCollection,A=V.values;G.suspendEvents();for(let C=0;C0||S==="onExpire"||m==="onStop"){let C=Lo(U,"NetworkLinkControl",se.kml),y=c(C),Y=rt.now(),Q={id:Ti(),href:d,cookie:{},lastUpdated:Y,updating:!1,entity:a,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:Y},J=0;if(y&&(Q.cookie=Sc(f(Gi(C,"cookie",se.kml),"")),J=f(io(C,"minRefreshPeriod",se.kml),0)),S==="onInterval")y&&(g=Math.max(J,g)),Q.refreshMode=jF.INTERVAL,Q.time=g;else if(S==="onExpire"){let M;if(y&&(M=Gi(C,"expires",se.kml)),c(M))try{let Z=rt.fromIso8601(M),E=rt.secondsDifference(Z,Y);E>0&&E0;)this._screenOverlays.pop().remove()};function Dit(t){let e=t.parent;if(c(e)){let n=e.availability;if(c(n)){let i=t.availability;c(i)?i.intersect(n):t.availability=n}}}function WUe(t,e,n,i,o){return function(a){if(!i.contains(e.id))return;let s=!1,l=Lo(a,"NetworkLinkControl",se.kml),r=c(l),d=0;if(r){if(c(Lo(l,"Update",se.kml))){Gn("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),e.updating=!1,i.remove(e.id);return}e.cookie=Sc(f(Gi(l,"cookie",se.kml),"")),d=f(io(l,"minRefreshPeriod",se.kml),0)}let m=rt.now(),h=e.refreshMode;if(h===jF.INTERVAL)c(l)&&(e.time=Math.max(d,e.time));else if(h===jF.EXPIRE){let Y;if(c(l)&&(Y=Gi(l,"expires",se.kml)),c(Y))try{let Q=rt.fromIso8601(Y),J=rt.secondsDifference(Q,m);J>0&&Jm.time&&(u=!0):m.refreshMode===jF.EXPIRE?rt.greaterThan(n,m.time)&&(u=!0):m.refreshMode===jF.STOP&&(a&&(m.needsUpdate=!0,m.cameraUpdateTime=n),m.needsUpdate&&rt.secondsDifference(n,m.cameraUpdateTime)>=m.time&&(u=!0)),u){o(h),m.updating=!0;let R=new gr,V=m.href.clone();V.setQueryParameters(m.cookie);let F=f(i._ellipsoid,mt.WGS84);Mit(V,i.camera,i.canvas,m.viewBoundScale,s.bbox,F),_it(i,R,V,{context:h.id}).then(WUe(i,m,R,r,V)).catch(function(U){let G=`NetworkLink ${m.href} refresh failed: ${U}`;console.log(G),i._error.raiseEvent(i,G)}),d=!0}}r.set(m.id,m)}}),d&&(this._networkLinks=r,this._changed.raiseEvent(this)),!0};function fUe(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}jh._DeferredLoading=CR;jh._getTimestamp=Oi;var iM=jh;var OJi=b(W(),1);var tCt=b(zEt(),1);var{abs:OI,min:Oit,max:jEt,ceil:T3,PI:g3,round:Hit}=Math,{toDegrees:qEt,toRadians:eCt}=k,HI=[.00675,.0125,.025,.05,.1,.2,.5,1,2,5,10].map(eCt),FUe=15,UUe=FUe,$Et=eCt(3),{MAX_VALUE:E3}=Gt,GUe=(t,e)=>{let n=new $e({geometry:new kb({positions:t,width:1}),attributes:{color:En.fromColor(e)}});return new Gh({geometryInstances:n,appearance:new zl({material:eo.fromType("Color",{color:e})})})},wit=class{constructor(e){this.viewer=e,this.lastRefresh=0,this.debounce=50,this.showLabels=!0,this.labelSettings={font:"12px Arial",outlineColor:v.BLACK,outlineWidth:4,style:Pa.FILL_AND_OUTLINE,eyeOffset:p.ZERO,scale:1,scaleByDistance:new ln(1,.85,8e6,.4)},this.ellipsoid=e.scene.globe.ellipsoid;let{scene:n}=e;this.labelEntities=[],this.polylines=new Mc,this.groundPolylines=[],n.primitives.add(this.polylines),this.currentExtent=this.getExtentView(),this.render=(0,tCt.debounce)(()=>{if(this._destroyed)return;this.viewer.scene.camera.percentageChanged=.1;let i=this.lastRefresh;if(new Date().getTime()-i{this.render()}),this.resizeObserver.observe(e.container),this.cameraChangedEventListener=i=>{this.render()},e.scene.camera.changed.addEventListener(this.cameraChangedEventListener),this.boundRender=this.render.bind(this),e.container.addEventListener("resize",this.boundRender),this._destroyed=!1,this.render()}removeAllLabels(){this.labelEntities.forEach(e=>{this.viewer.entities.remove(e)}),this.labelEntities=[]}destroy(){if(this._destroyed){console.error("destroy has already been called.");return}this.resizeObserver&&this.resizeObserver.disconnect(),this.cameraChangedEventListener&&this.viewer.scene.camera.changed.removeEventListener(this.cameraChangedEventListener),this.boundRender&&this.viewer.container.removeEventListener("resize",this.boundRender),this.removeAllLabels(),this.removePolylines(),this._destroyed=!0}isCameraCloseToGround(){return this.viewer.camera.positionCartographic.height<455983}hasTerrainProvider(){return!(this.viewer.terrainProvider instanceof bV)}lineGraphicsObj(e,n,i){let o;if(i)return o=this.ellipsoid.cartographicArrayToCartesianArray(e),GUe(o,n);let a=e.map(s=>new gt(s.longitude,s.latitude,this.hasTerrainProvider()?this.viewer.camera.positionCartographic.height/90+1e9/this.viewer.camera.positionCartographic.height:10));return o=this.ellipsoid.cartographicArrayToCartesianArray(a),{positions:o,width:.5,material:eo.fromType("Color",{color:n})}}removePolylines(){this.polylines.removeAll();for(let e=0;e=Math.PI/2-s,r=e.south<=-Math.PI/2+s,m=l||r?0:UUe;for(a=0;aE3.east?G=e._east-(Y-E3.east):G=Y;let Q=[];for(U=u;U=0?"N":"S":e>=0?"E":"W"}`}},Pit=wit;var t5i=b(W(),1);var __i=b(W(),1);var aLi=b(W(),1);var zJi=b(W(),1);var vit=class{constructor({name:e=null,orientation:n=new wt(0,0,0,1),inheritParentOrientation:i=!0}){this._id=Ti(),this._name=e,this._inheritParentOrientation=i,this._setOrientation(n)}_setOrientation(e){e instanceof et?this._orientation=e:this._orientation=new Ii(e)}get id(){return this._id}get orientation(){return this._orientation}set orientation(e){this._setOrientation(e)}get inheritParentOrientation(){return this._inheritParentOrientation}set inheritParentOrientation(e){this._inheritParentOrientation=e}},oW=vit;var xS=class extends oW{constructor(e){super(e),this._minimumClockAngle=void 0,this._minimumClockAngleSubscription=void 0,this._maximumClockAngle=void 0,this._maximumClockAngleSubscription=void 0,this._innerHalfAngle=void 0,this._innerHalfAngleSubscription=void 0,this._outerHalfAngle=void 0,this._outerHalfAngleSubscription=void 0,this._lateralSurfaceMaterial=void 0,this._lateralSurfaceMaterialSubscription=void 0,this._intersectionColor=void 0,this._intersectionColorSubscription=void 0,this._intersectionWidth=void 0,this._intersectionWidthSubscription=void 0,this._showIntersection=void 0,this._showIntersectionSubscription=void 0,this._radius=void 0,this._radiusSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._definitionChanged=new It,this.merge(f(e,f.EMPTY_OBJECT))}};Object.defineProperties(xS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},minimumClockAngle:ft("minimumClockAngle"),maximumClockAngle:ft("maximumClockAngle"),innerHalfAngle:ft("innerHalfAngle"),outerHalfAngle:ft("outerHalfAngle"),lateralSurfaceMaterial:la("lateralSurfaceMaterial"),intersectionColor:ft("intersectionColor"),intersectionWidth:ft("intersectionWidth"),showIntersection:ft("showIntersection"),radius:ft("radius"),show:ft("show")});xS.prototype.clone=function(t){return c(t)||(t=new xS),t.show=this.show,t.innerHalfAngle=this.innerHalfAngle,t.outerHalfAngle=this.outerHalfAngle,t.minimumClockAngle=this.minimumClockAngle,t.maximumClockAngle=this.maximumClockAngle,t.radius=this.radius,t.showIntersection=this.showIntersection,t.intersectionColor=this.intersectionColor,t.intersectionWidth=this.intersectionWidth,t.lateralSurfaceMaterial=this.lateralSurfaceMaterial,t};xS.prototype.merge=function(t){if(!c(t))throw new Ut("source is required.");this.show=f(this.show,t.show),this.innerHalfAngle=f(this.innerHalfAngle,t.innerHalfAngle),this.outerHalfAngle=f(this.outerHalfAngle,t.outerHalfAngle),this.minimumClockAngle=f(this.minimumClockAngle,t.minimumClockAngle),this.maximumClockAngle=f(this.maximumClockAngle,t.maximumClockAngle),this.radius=f(this.radius,t.radius),this.showIntersection=f(this.showIntersection,t.showIntersection),this.intersectionColor=f(this.intersectionColor,t.intersectionColor),this.intersectionWidth=f(this.intersectionWidth,t.intersectionWidth),this.lateralSurfaceMaterial=f(this.lateralSurfaceMaterial,t.lateralSurfaceMaterial)};var XS=xS;var bMi=b(W(),1);var zLi=b(W(),1);var lLi=b(W(),1),wI=`#version 300 es uniform vec4 u_intersectionColor; uniform float u_intersectionWidth; @@ -9075,7 +9075,7 @@ vec2 sensor2dTextureCoordinates(float sensorRadius, vec3 pointMC) s = s - floor(s); return vec2(s, t); -}`;var dLi=R(W(),1),PI=`#version 300 es +}`;var dLi=b(W(),1),PI=`#version 300 es uniform bool u_showIntersection; uniform bool u_showThroughEllipsoid; @@ -9172,7 +9172,7 @@ void main() // Notes: Each surface functions should have an associated tolerance based on the floating point error. bool isOnEllipsoid = isOnBoundary(ellipsoidValue, czm_epsilon3); out_FragColor = shade(isOnEllipsoid); -}`;var mLi=R(W(),1),vI=` +}`;var mLi=b(W(),1),vI=` #version 300 es in vec4 position; @@ -9189,8 +9189,8 @@ void main() v_positionWC = (czm_model * position).xyz; v_positionEC = (czm_modelView * position).xyz; v_normalEC = czm_normal * normal; -}`;var fLi=R(W(),1);var ZLi=R(W(),1);var AUe=new p,TUe=new p,SUe=new p,gUe=5906376272e3;function EUe(t,e=!0){let n=t._directions,i=n.length,o=new Float32Array(3*i),a=isFinite(t.radius)?t.radius:gUe,s=[p.ZERO];for(let l=i-2,r=i-1,d=0;d=3&&(this._frontFaceColorCommand.vertexArray=NUe(this,e),this._backFaceColorCommand.vertexArray=this._frontFaceColorCommand.vertexArray,this._pickCommand.vertexArray=this._frontFaceColorCommand.vertexArray)}if(!c(this._frontFaceColorCommand.vertexArray))return;let a=t.passes,s=!L.equals(this.modelMatrix,this._modelMatrix);s&&L.clone(this.modelMatrix,this._modelMatrix),(o||s)&&Ft.transform(this._boundingSphere,this.modelMatrix,this._boundingSphereWC),this._frontFaceColorCommand.modelMatrix=this.modelMatrix,this._backFaceColorCommand.modelMatrix=this._frontFaceColorCommand.modelMatrix,this._pickCommand.modelMatrix=this._frontFaceColorCommand.modelMatrix;let l=this._lateralSurfaceMaterial!==this.lateralSurfaceMaterial;if(this._lateralSurfaceMaterial=this.lateralSurfaceMaterial,this._lateralSurfaceMaterial.update(e),a.render){let r=this._frontFaceColorCommand,d=this._backFaceColorCommand;if(l||!c(r.shaderProgram)){let m=new Ve({sources:[wI,this._lateralSurfaceMaterial.shaderSource,PI]});r.shaderProgram=xn.replaceCache({context:e,shaderProgram:r.shaderProgram,vertexShaderSource:vI,fragmentShaderSource:m,attributeLocations:CK}),r.uniformMap=ze(this._uniforms,this._lateralSurfaceMaterial._uniforms),d.shaderProgram=r.shaderProgram,d.uniformMap=ze(this._uniforms,this._lateralSurfaceMaterial._uniforms),d.uniformMap.u_normalDirection=function(){return-1}}i?n.push(this._backFaceColorCommand,this._frontFaceColorCommand):n.push(this._frontFaceColorCommand)}if(a.pick){let r=this._pickCommand;if((!c(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=e.createPickId({primitive:this._pickPrimitive,id:this.id})),l||!c(r.shaderProgram)){let d=new Ve({sources:[wI,this._lateralSurfaceMaterial.shaderSource,PI],pickColorQualifier:"uniform"});r.shaderProgram=xn.replaceCache({context:e,shaderProgram:r.shaderProgram,vertexShaderSource:vI,fragmentShaderSource:d,attributeLocations:CK});let m=this,h={czm_pickColor:function(){return m._pickId.color}};r.uniformMap=ze(ze(this._uniforms,this._lateralSurfaceMaterial._uniforms),h)}r.pass=i?Pt.TRANSLUCENT:Pt.OPAQUE,n.push(r)}};aM.prototype.isDestroyed=function(){return!1};aM.prototype.destroy=function(){return this._frontFaceColorCommand.vertexArray=this._frontFaceColorCommand.vertexArray&&this._frontFaceColorCommand.vertexArray.destroy(),this._frontFaceColorCommand.shaderProgram=this._frontFaceColorCommand.shaderProgram&&this._frontFaceColorCommand.shaderProgram.destroy(),this._pickCommand.shaderProgram=this._pickCommand.shaderProgram&&this._pickCommand.shaderProgram.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),At(this)};var KZ=aM;var $Li=R(W(),1);function ac(t,e,n){let i=e[t.id];if(c(i)){let o=i.primitive;n.remove(o),o.isDestroyed()||o.destroy(),delete e[t.id]}}var yUe=v.WHITE,BUe=1,QUe=Number.POSITIVE_INFINITY,kUe=new ot,YUe=new p,xUe=new wt;function KI(t,e,n,i){let o=e[t];c(o)||(o=new Oc,e[t]=o),o.clock=n,o.cone=i,o.magnitude=1}function XUe(t,e,n,i,o){let a=t.directions,s,l=0,r=k.toRadians(2);if(e===0&&n===k.TWO_PI)for(s=0;se;s-=r)KI(l++,a,s,i);KI(l++,a,e,i)}else KI(l++,a,n,0)}a.length=l,t.directions=a}var zI=function(t,e){if(!c(t))throw new Ut("scene is required.");if(!c(e))throw new Ut("entityCollection is required.");e.collectionChanged.addEventListener(zI.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._hash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])};zI.prototype.update=function(t){if(!c(t))throw new Ut("time is required.");let e=this._entitiesToVisualize.values,n=this._hash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)ac(t[i],e,n);return At(this)};zI.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._hash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._conicSensor)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._conicSensor)&&c(a._position)?s.set(a.id,a):(ac(a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],ac(a,l,r),s.remove(a.id)};var LT=zI;var gMi=R(W(),1);var MT=class extends oW{constructor(e){super(e),this._directions=void 0,this._directionsSubscription=void 0,this._lateralSurfaceMaterial=void 0,this._lateralSurfaceMaterialSubscription=void 0,this._intersectionColor=void 0,this._intersectionColorSubscription=void 0,this._intersectionWidth=void 0,this._intersectionWidthSubscription=void 0,this._showIntersection=void 0,this._showIntersectionSubscription=void 0,this._radius=void 0,this._radiusSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._definitionChanged=new It,this.merge(f(e,f.EMPTY_OBJECT))}};Object.defineProperties(MT.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},directions:ft("directions"),lateralSurfaceMaterial:la("lateralSurfaceMaterial"),intersectionColor:ft("intersectionColor"),intersectionWidth:ft("intersectionWidth"),showIntersection:ft("showIntersection"),radius:ft("radius"),show:ft("show")});MT.prototype.clone=function(t){return c(t)||(t=new MT),t.directions=this.directions,t.radius=this.radius,t.show=this.show,t.showIntersection=this.showIntersection,t.intersectionColor=this.intersectionColor,t.intersectionWidth=this.intersectionWidth,t.lateralSurfaceMaterial=this.lateralSurfaceMaterial,t};MT.prototype.merge=function(t){if(!c(t))throw new Ut("source is required.");this.directions=f(this.directions,t.directions),this.radius=f(this.radius,t.radius),this.show=f(this.show,t.show),this.showIntersection=f(this.showIntersection,t.showIntersection),this.intersectionColor=f(this.intersectionColor,t.intersectionColor),this.intersectionWidth=f(this.intersectionWidth,t.intersectionWidth),this.lateralSurfaceMaterial=f(this.lateralSurfaceMaterial,t.lateralSurfaceMaterial)};var _T=MT;var OMi=R(W(),1);var JUe=v.WHITE,LUe=1,MUe=Number.POSITIVE_INFINITY,_Ue=new ot,DUe=new p,OUe=new wt,jI=function(t,e){if(!c(t))throw new Ut("scene is required.");if(!c(e))throw new Ut("entityCollection is required.");e.collectionChanged.addEventListener(jI.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._hash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])};jI.prototype.update=function(t){if(!c(t))throw new Ut("time is required.");let e=this._entitiesToVisualize.values,n=this._hash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)ac(t[i],e,n);return At(this)};jI.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._hash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._customPatternSensor)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._customPatternSensor)&&c(a._position)?s.set(a.id,a):(ac(a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],ac(a,l,r),s.remove(a.id)};var DT=jI;var $Mi=R(W(),1);var OT=class extends oW{constructor(e={}){super(e),this._definitionChanged=new It,this.xHalfAngle=e.xHalfAngle,this._xHalfAngleSubscription=void 0,this.yHalfAngle=e.yHalfAngle,this._yHalfAngleSubscription=void 0,this.lateralSurfaceMaterial=e.lateralSurfaceMaterial,this._lateralSurfaceMaterialSubscription=void 0,this.intersectionColor=e.intersectionColor,this._intersectionColorSubscription=void 0,this.intersectionWidth=e.intersectionWidth,this._intersectionWidthSubscription=void 0,this.showIntersection=e.showIntersection,this._showIntersectionSubscription=void 0,this.radius=e.radius,this._radiusSubscription=void 0,this.show=e.show,this._showSubscription=void 0}};Object.defineProperties(OT.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},xHalfAngle:ft("xHalfAngle"),yHalfAngle:ft("yHalfAngle"),lateralSurfaceMaterial:la("lateralSurfaceMaterial"),intersectionColor:ft("intersectionColor"),intersectionWidth:ft("intersectionWidth"),showIntersection:ft("showIntersection"),radius:ft("radius"),show:ft("show")});OT.prototype.clone=function(t){return c(t)||(t=new OT),t.xHalfAngle=this.xHalfAngle,t.yHalfAngle=this.yHalfAngle,t.radius=this.radius,t.show=this.show,t.showIntersection=this.showIntersection,t.intersectionColor=this.intersectionColor,t.intersectionWidth=this.intersectionWidth,t.lateralSurfaceMaterial=this.lateralSurfaceMaterial,t};OT.prototype.merge=function(t){if(!c(t))throw new Ut("source is required.");this.xHalfAngle=f(this.xHalfAngle,t.xHalfAngle),this.yHalfAngle=f(this.yHalfAngle,t.yHalfAngle),this.radius=f(this.radius,t.radius),this.show=f(this.show,t.show),this.showIntersection=f(this.showIntersection,t.showIntersection),this.intersectionColor=f(this.intersectionColor,t.intersectionColor),this.intersectionWidth=f(this.intersectionWidth,t.intersectionWidth),this.lateralSurfaceMaterial=f(this.lateralSurfaceMaterial,t.lateralSurfaceMaterial)};var HT=OT;var g_i=R(W(),1);var d_i=R(W(),1);function IK(t,e,n,i){let o=e[t];c(o)||(o=new Oc,e[t]=o),o.clock=n,o.cone=i,o.magnitude=1}function zit(t){let e=t._customSensor.directions,n=Math.tan(Math.min(t._xHalfAngle,k.toRadians(89))),i=Math.tan(Math.min(t._yHalfAngle,k.toRadians(89))),o=Math.atan(n/i),a=Math.atan(Math.sqrt(n*n+i*i));IK(0,e,o,a),IK(1,e,k.toRadians(180)-o,a),IK(2,e,k.toRadians(180)+o,a),IK(3,e,-o,a),e.length=4,t._customSensor.directions=e}var wT=class{constructor(e){e=f(e,f.EMPTY_OBJECT);let n=be(e);n._pickPrimitive=f(e._pickPrimitive,this),n.directions=void 0,this._customSensor=new KZ(n),this._xHalfAngle=f(e.xHalfAngle,k.PI_OVER_TWO),this._yHalfAngle=f(e.yHalfAngle,k.PI_OVER_TWO),zit(this)}};Object.defineProperties(wT.prototype,{xHalfAngle:{get:function(){return this._xHalfAngle},set:function(t){if(t>k.PI_OVER_TWO)throw new Ut("xHalfAngle must be less than or equal to 90 degrees.");this._xHalfAngle!==t&&(this._xHalfAngle=t,zit(this))}},yHalfAngle:{get:function(){return this._yHalfAngle},set:function(t){if(t>k.PI_OVER_TWO)throw new Ut("yHalfAngle must be less than or equal to 90 degrees.");this._yHalfAngle!==t&&(this._yHalfAngle=t,zit(this))}},show:{get:function(){return this._customSensor.show},set:function(t){this._customSensor.show=t}},showIntersection:{get:function(){return this._customSensor.showIntersection},set:function(t){this._customSensor.showIntersection=t}},showThroughEllipsoid:{get:function(){return this._customSensor.showThroughEllipsoid},set:function(t){this._customSensor.showThroughEllipsoid=t}},modelMatrix:{get:function(){return this._customSensor.modelMatrix},set:function(t){this._customSensor.modelMatrix=t}},radius:{get:function(){return this._customSensor.radius},set:function(t){this._customSensor.radius=t}},lateralSurfaceMaterial:{get:function(){return this._customSensor.lateralSurfaceMaterial},set:function(t){this._customSensor.lateralSurfaceMaterial=t}},intersectionColor:{get:function(){return this._customSensor.intersectionColor},set:function(t){this._customSensor.intersectionColor=t}},intersectionWidth:{get:function(){return this._customSensor.intersectionWidth},set:function(t){this._customSensor.intersectionWidth=t}},id:{get:function(){return this._customSensor.id},set:function(t){this._customSensor.id=t}}});wT.prototype.update=function(t){this._customSensor.update(t)};wT.prototype.isDestroyed=function(){return!1};wT.prototype.destroy=function(){return this._customSensor=this._customSensor&&this._customSensor.destroy(),At(this)};var PT=wT;var HUe=v.WHITE,wUe=1,PUe=Number.POSITIVE_INFINITY,vUe=new ot,KUe=new p,zUe=new wt,qI=function(t,e){if(!c(t))throw new Ut("scene is required.");if(!c(e))throw new Ut("entityCollection is required.");e.collectionChanged.addEventListener(qI.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._hash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])};qI.prototype.update=function(t){if(!c(t))throw new Ut("time is required.");let e=this._entitiesToVisualize.values,n=this._hash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)ac(t[i],e,n);return At(this)};qI.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._hash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._rectangularSensor)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._rectangularSensor)&&c(a._position)?s.set(a.id,a):(ac(a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],ac(a,l,r),s.remove(a.id)};var vT=qI;var Wu=O0.processPacketData,jUe=O0.processMaterialPacketData;function iCt(t,e,n,i,o){let a,s,l=[],r=e.unitSpherical,d=e.spherical,m=e.unitCartesian,h=e.cartesian;if(c(r)){for(a=0,s=r.length;ae[1]!=t[o][1]>e[1]&&e[0]<(t[o][0]-t[i][0])*(e[1]-t[i][1])/(t[o][1]-t[i][1])+t[i][0]&&(n=!n),o=i;return n}function sIt(t){return[t.x,t.y]}function lIt(t,e,n){let i=p.subtract(t,e,new p),o=p.dot(i,n),a=p.multiplyByScalar(n,o,new p);return p.subtract(t,a,new p)}function ZAe(t,e,n){if(!t||!e||e.length===0)return!1;e=e.map(F=>new p(F[0],F[1],F[2]));let i=e.slice().sort((F,U)=>p.distance(n,U)-p.distance(n,F)),[o,a,s]=i.slice(0,3),l=p.subtract(a,o,new p),r=p.subtract(s,o,new p),d=p.cross(l,r,new p);p.normalize(d,d);let m=p.negate(d,new p),h=e.map(F=>lIt(F,t,m)),Z=lIt(t,t,m),b=h.map(sIt);return uAe(b,sIt(Z))}var lM=ZAe;function VAe(t,e,n){if(!t||!e||e.length===0)return!1;let i=e[0],o=e[1],a=[t.x,t.y,t.z],s=[n,...i].map(m=>[m.x,m.y,m.z]),l=[...o].map(m=>[m.x,m.y,m.z]);if(!lM(t,l,n))return!1;let r=(0,MK.default)(s);return!!(0,MK.isPointInsideHull)(a,s,r)}var rM=VAe;KT();var dot={ConicSensorGraphics:XT,ConicSensorVisualizer:LT,CustomPatternSensorGraphics:_T,CustomPatternSensorVisualizer:DT,CustomSensorVolume:KZ,RectangularPyramidSensorVolume:PT,RectangularSensorGraphics:HT,RectangularSensorVisualizer:vT,initialize:KT,sensorStateInstance:JT,isPointIn3D:rM};var gpo=R(W(),1);var rpo=R(W(),1);var S5i=R(W(),1);var Ot={};vO(Ot,{Builder:()=>_K,ByteBuffer:()=>qT,Encoding:()=>o1,FILE_IDENTIFIER_LENGTH:()=>$h,SIZEOF_INT:()=>jm,SIZEOF_SHORT:()=>i1,SIZE_PREFIX_LENGTH:()=>xt,float32:()=>dM,float64:()=>cM,int32:()=>jZ,isLittleEndian:()=>jT});var V5i=R(W());var n5i=R(W()),i1=2,jm=4,$h=4,xt=4;var o5i=R(W()),jZ=new Int32Array(2),dM=new Float32Array(jZ.buffer),cM=new Float64Array(jZ.buffer),jT=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var s5i=R(W()),o1;(function(t){t[t.UTF8_BYTES=1]="UTF8_BYTES",t[t.UTF16_STRING=2]="UTF16_STRING"})(o1||(o1={}));var Z5i=R(W());var m5i=R(W());var qT=class t{constructor(e){this.bytes_=e,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(e){return new t(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return BigInt.asIntN(64,BigInt(this.readUint32(e))+(BigInt(this.readUint32(e+4))<>8}writeUint16(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8}writeInt32(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8,this.bytes_[e+2]=n>>16,this.bytes_[e+3]=n>>24}writeUint32(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8,this.bytes_[e+2]=n>>16,this.bytes_[e+3]=n>>24}writeInt64(e,n){this.writeInt32(e,Number(BigInt.asIntN(32,n))),this.writeInt32(e+4,Number(BigInt.asIntN(32,n>>BigInt(32))))}writeUint64(e,n){this.writeUint32(e,Number(BigInt.asUintN(32,n))),this.writeUint32(e+4,Number(BigInt.asUintN(32,n>>BigInt(32))))}writeFloat32(e,n){dM[0]=n,this.writeInt32(e,jZ[0])}writeFloat64(e,n){cM[0]=n,this.writeInt32(e,jZ[jT?0:1]),this.writeInt32(e+4,jZ[jT?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=e);let i=~(this.bb.capacity()-this.space+n)+1&e-1;for(;this.space=0&&this.vtable[n]==0;n--);let i=n+1;for(;n>=0;n--)this.addInt16(this.vtable[n]!=0?e-this.vtable[n]:0);let o=2;this.addInt16(e-this.object_start);let a=(i+o)*2;this.addInt16(a);let s=0,l=this.space;t:for(n=0;n=0;s--)this.writeInt8(a.charCodeAt(s))}this.prep(this.minalign,4+o),this.addOffset(e),o&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,n){this.finish(e,n,!0)}requiredField(e,n){let i=this.bb.capacity()-e,o=i-this.bb.readInt32(i);if(!(n{t=new Uint8Array(t);let i=new n[`${e}COLLECTIONT`];return n[`${e}COLLECTION`][`getRootAs${e}COLLECTION`](new bAe(t)).unpackTo(i),i};var vho=R(W(),1);var k5i=R(W(),1);var E5i=R(W(),1);var N5i=R(W(),1);var aW={};vO(aW,{Band:()=>yb,BandT:()=>hM,CAT:()=>rU,CATCOLLECTION:()=>s1,CATCOLLECTIONT:()=>bM,CATT:()=>VM,DataMode:()=>$F,DeviceType:()=>tU,FrequencyRange:()=>qZ,FrequencyRangeT:()=>mM,IDM:()=>Wo,IDMCOLLECTION:()=>l1,IDMCOLLECTIONT:()=>RM,IDMT:()=>uM,PLD:()=>Bb,PLDCOLLECTION:()=>r1,PLDCOLLECTIONT:()=>WM,PLDT:()=>ZM,PolarizationType:()=>eU,SimplePolarization:()=>nU,StokesParameters:()=>$T,StokesParametersT:()=>pM,dataStatusCode:()=>iU,massType:()=>oU,objectType:()=>aU,opsStatusCode:()=>sU,orbitType:()=>lU});var XDi=R(W(),1);var _5i=R(W(),1);var J5i=R(W(),1);var qZ=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsFrequencyRange(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsFrequencyRange(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}LOWER(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat64(this.bb_pos+e):0}static startFrequencyRange(e){e.startObject(2)}static addLower(e,n){e.addFieldFloat64(0,n,0)}static addUpper(e,n){e.addFieldFloat64(1,n,0)}static endFrequencyRange(e){return e.endObject()}static createFrequencyRange(e,n,i){return t.startFrequencyRange(e),t.addLower(e,n),t.addUpper(e,i),t.endFrequencyRange(e)}unpack(){return new mM(this.LOWER(),this.UPPER())}unpackTo(e){e.LOWER=this.LOWER(),e.UPPER=this.UPPER()}},mM=class{constructor(e=0,n=0){this.LOWER=e,this.UPPER=n}pack(e){return qZ.createFrequencyRange(e,this.LOWER,this.UPPER)}};var yb=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsBand(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsBand(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}NAME(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}FREQUENCY_RANGE(e){let n=this.bb.__offset(this.bb_pos,6);return n?(e||new qZ).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}static startBand(e){e.startObject(2)}static addName(e,n){e.addFieldOffset(0,n,0)}static addFrequencyRange(e,n){e.addFieldOffset(1,n,0)}static endBand(e){return e.endObject()}unpack(){return new hM(this.NAME(),this.FREQUENCY_RANGE()!==null?this.FREQUENCY_RANGE().unpack():null)}unpackTo(e){e.NAME=this.NAME(),e.FREQUENCY_RANGE=this.FREQUENCY_RANGE()!==null?this.FREQUENCY_RANGE().unpack():null}},hM=class{constructor(e=null,n=null){this.NAME=e,this.FREQUENCY_RANGE=n}pack(e){let n=this.NAME!==null?e.createString(this.NAME):0,i=this.FREQUENCY_RANGE!==null?this.FREQUENCY_RANGE.pack(e):0;return yb.startBand(e),yb.addName(e,n),yb.addFrequencyRange(e,i),yb.endBand(e)}};var EDi=R(W(),1);var cDi=R(W(),1);var lDi=R(W(),1);var O5i=R(W(),1),$F;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})($F||($F={}));var w5i=R(W(),1),tU;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(tU||(tU={}));var v5i=R(W(),1),eU;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(eU||(eU={}));var z5i=R(W(),1),nU;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(nU||(nU={}));var q5i=R(W(),1);var $T=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsStokesParameters(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsStokesParameters(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}I(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readFloat64(this.bb_pos+e):0}Q(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat64(this.bb_pos+e):0}U(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readFloat64(this.bb_pos+e):0}V(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readFloat64(this.bb_pos+e):0}static startStokesParameters(e){e.startObject(4)}static addI(e,n){e.addFieldFloat64(0,n,0)}static addQ(e,n){e.addFieldFloat64(1,n,0)}static addU(e,n){e.addFieldFloat64(2,n,0)}static addV(e,n){e.addFieldFloat64(3,n,0)}static endStokesParameters(e){return e.endObject()}static createStokesParameters(e,n,i,o,a){return t.startStokesParameters(e),t.addI(e,n),t.addQ(e,i),t.addU(e,o),t.addV(e,a),t.endStokesParameters(e)}unpack(){return new pM(this.I(),this.Q(),this.U(),this.V())}unpackTo(e){e.I=this.I(),e.Q=this.Q(),e.U=this.U(),e.V=this.V()}},pM=class{constructor(e=0,n=0,i=0,o=0){this.I=e,this.Q=n,this.U=i,this.V=o}pack(e){return $T.createStokesParameters(e,this.I,this.Q,this.U,this.V)}};var Wo=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsIDM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsIDM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$IDM")}ID(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}NAME(e){let n=this.bb.__offset(this.bb_pos,6);return n?this.bb.__string(this.bb_pos+n,e):null}DATA_MODE(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readInt8(this.bb_pos+e):$F.REAL}UPLINK(e){let n=this.bb.__offset(this.bb_pos,10);return n?(e||new qZ).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}DOWNLINK(e){let n=this.bb.__offset(this.bb_pos,12);return n?(e||new qZ).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}BEACON(e){let n=this.bb.__offset(this.bb_pos,14);return n?(e||new qZ).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}BAND(e,n){let i=this.bb.__offset(this.bb_pos,16);return i?(n||new yb).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}bandLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}POLARIZATION_TYPE(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readInt8(this.bb_pos+e):eU.linear}SIMPLE_POLARIZATION(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readInt8(this.bb_pos+e):nU.vertical}STOKES_PARAMETERS(e){let n=this.bb.__offset(this.bb_pos,22);return n?(e||new $T).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}POWER_REQUIRED(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.readFloat64(this.bb_pos+e):0}POWER_TYPE(e){let n=this.bb.__offset(this.bb_pos,26);return n?this.bb.__string(this.bb_pos+n,e):null}TRANSMIT(){let e=this.bb.__offset(this.bb_pos,28);return e?!!this.bb.readInt8(this.bb_pos+e):!1}RECEIVE(){let e=this.bb.__offset(this.bb_pos,30);return e?!!this.bb.readInt8(this.bb_pos+e):!1}SENSOR_TYPE(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.readInt8(this.bb_pos+e):tU.UNKNOWN}SOURCE(e){let n=this.bb.__offset(this.bb_pos,34);return n?this.bb.__string(this.bb_pos+n,e):null}LAST_OB_TIME(e){let n=this.bb.__offset(this.bb_pos,36);return n?this.bb.__string(this.bb_pos+n,e):null}LOWER_LEFT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,38);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_LEFT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,40);return e?this.bb.readFloat64(this.bb_pos+e):0}LOWER_RIGHT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.readFloat64(this.bb_pos+e):0}LOWER_LEFT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_RIGHT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_RIGHT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.readFloat64(this.bb_pos+e):0}LOWER_RIGHT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,50);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_LEFT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,52);return e?this.bb.readFloat64(this.bb_pos+e):0}RIGHT_GEO_BELT_LIMIT(){let e=this.bb.__offset(this.bb_pos,54);return e?this.bb.readFloat64(this.bb_pos+e):0}LEFT_GEO_BELT_LIMIT(){let e=this.bb.__offset(this.bb_pos,56);return e?this.bb.readFloat64(this.bb_pos+e):0}MAGNITUDE_LIMIT(){let e=this.bb.__offset(this.bb_pos,58);return e?this.bb.readFloat64(this.bb_pos+e):0}TASKABLE(){let e=this.bb.__offset(this.bb_pos,60);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startIDM(e){e.startObject(29)}static addId(e,n){e.addFieldOffset(0,n,0)}static addName(e,n){e.addFieldOffset(1,n,0)}static addDataMode(e,n){e.addFieldInt8(2,n,$F.REAL)}static addUplink(e,n){e.addFieldOffset(3,n,0)}static addDownlink(e,n){e.addFieldOffset(4,n,0)}static addBeacon(e,n){e.addFieldOffset(5,n,0)}static addBand(e,n){e.addFieldOffset(6,n,0)}static createBandVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startBandVector(e,n){e.startVector(4,n,4)}static addPolarizationType(e,n){e.addFieldInt8(7,n,eU.linear)}static addSimplePolarization(e,n){e.addFieldInt8(8,n,nU.vertical)}static addStokesParameters(e,n){e.addFieldOffset(9,n,0)}static addPowerRequired(e,n){e.addFieldFloat64(10,n,0)}static addPowerType(e,n){e.addFieldOffset(11,n,0)}static addTransmit(e,n){e.addFieldInt8(12,+n,0)}static addReceive(e,n){e.addFieldInt8(13,+n,0)}static addSensorType(e,n){e.addFieldInt8(14,n,tU.UNKNOWN)}static addSource(e,n){e.addFieldOffset(15,n,0)}static addLastObTime(e,n){e.addFieldOffset(16,n,0)}static addLowerLeftElevationLimit(e,n){e.addFieldFloat64(17,n,0)}static addUpperLeftAzimuthLimit(e,n){e.addFieldFloat64(18,n,0)}static addLowerRightElevationLimit(e,n){e.addFieldFloat64(19,n,0)}static addLowerLeftAzimuthLimit(e,n){e.addFieldFloat64(20,n,0)}static addUpperRightElevationLimit(e,n){e.addFieldFloat64(21,n,0)}static addUpperRightAzimuthLimit(e,n){e.addFieldFloat64(22,n,0)}static addLowerRightAzimuthLimit(e,n){e.addFieldFloat64(23,n,0)}static addUpperLeftElevationLimit(e,n){e.addFieldFloat64(24,n,0)}static addRightGeoBeltLimit(e,n){e.addFieldFloat64(25,n,0)}static addLeftGeoBeltLimit(e,n){e.addFieldFloat64(26,n,0)}static addMagnitudeLimit(e,n){e.addFieldFloat64(27,n,0)}static addTaskable(e,n){e.addFieldInt8(28,+n,0)}static endIDM(e){return e.endObject()}static finishIDMBuffer(e,n){e.finish(n,"$IDM")}static finishSizePrefixedIDMBuffer(e,n){e.finish(n,"$IDM",!0)}unpack(){return new uM(this.ID(),this.NAME(),this.DATA_MODE(),this.UPLINK()!==null?this.UPLINK().unpack():null,this.DOWNLINK()!==null?this.DOWNLINK().unpack():null,this.BEACON()!==null?this.BEACON().unpack():null,this.bb.createObjList(this.BAND.bind(this),this.bandLength()),this.POLARIZATION_TYPE(),this.SIMPLE_POLARIZATION(),this.STOKES_PARAMETERS()!==null?this.STOKES_PARAMETERS().unpack():null,this.POWER_REQUIRED(),this.POWER_TYPE(),this.TRANSMIT(),this.RECEIVE(),this.SENSOR_TYPE(),this.SOURCE(),this.LAST_OB_TIME(),this.LOWER_LEFT_ELEVATION_LIMIT(),this.UPPER_LEFT_AZIMUTH_LIMIT(),this.LOWER_RIGHT_ELEVATION_LIMIT(),this.LOWER_LEFT_AZIMUTH_LIMIT(),this.UPPER_RIGHT_ELEVATION_LIMIT(),this.UPPER_RIGHT_AZIMUTH_LIMIT(),this.LOWER_RIGHT_AZIMUTH_LIMIT(),this.UPPER_LEFT_ELEVATION_LIMIT(),this.RIGHT_GEO_BELT_LIMIT(),this.LEFT_GEO_BELT_LIMIT(),this.MAGNITUDE_LIMIT(),this.TASKABLE())}unpackTo(e){e.ID=this.ID(),e.NAME=this.NAME(),e.DATA_MODE=this.DATA_MODE(),e.UPLINK=this.UPLINK()!==null?this.UPLINK().unpack():null,e.DOWNLINK=this.DOWNLINK()!==null?this.DOWNLINK().unpack():null,e.BEACON=this.BEACON()!==null?this.BEACON().unpack():null,e.BAND=this.bb.createObjList(this.BAND.bind(this),this.bandLength()),e.POLARIZATION_TYPE=this.POLARIZATION_TYPE(),e.SIMPLE_POLARIZATION=this.SIMPLE_POLARIZATION(),e.STOKES_PARAMETERS=this.STOKES_PARAMETERS()!==null?this.STOKES_PARAMETERS().unpack():null,e.POWER_REQUIRED=this.POWER_REQUIRED(),e.POWER_TYPE=this.POWER_TYPE(),e.TRANSMIT=this.TRANSMIT(),e.RECEIVE=this.RECEIVE(),e.SENSOR_TYPE=this.SENSOR_TYPE(),e.SOURCE=this.SOURCE(),e.LAST_OB_TIME=this.LAST_OB_TIME(),e.LOWER_LEFT_ELEVATION_LIMIT=this.LOWER_LEFT_ELEVATION_LIMIT(),e.UPPER_LEFT_AZIMUTH_LIMIT=this.UPPER_LEFT_AZIMUTH_LIMIT(),e.LOWER_RIGHT_ELEVATION_LIMIT=this.LOWER_RIGHT_ELEVATION_LIMIT(),e.LOWER_LEFT_AZIMUTH_LIMIT=this.LOWER_LEFT_AZIMUTH_LIMIT(),e.UPPER_RIGHT_ELEVATION_LIMIT=this.UPPER_RIGHT_ELEVATION_LIMIT(),e.UPPER_RIGHT_AZIMUTH_LIMIT=this.UPPER_RIGHT_AZIMUTH_LIMIT(),e.LOWER_RIGHT_AZIMUTH_LIMIT=this.LOWER_RIGHT_AZIMUTH_LIMIT(),e.UPPER_LEFT_ELEVATION_LIMIT=this.UPPER_LEFT_ELEVATION_LIMIT(),e.RIGHT_GEO_BELT_LIMIT=this.RIGHT_GEO_BELT_LIMIT(),e.LEFT_GEO_BELT_LIMIT=this.LEFT_GEO_BELT_LIMIT(),e.MAGNITUDE_LIMIT=this.MAGNITUDE_LIMIT(),e.TASKABLE=this.TASKABLE()}},uM=class{constructor(e=null,n=null,i=$F.REAL,o=null,a=null,s=null,l=[],r=eU.linear,d=nU.vertical,m=null,h=0,Z=null,b=!1,u=!1,F=tU.UNKNOWN,U=null,G=null,A=0,T=0,g=0,C=0,y=0,Y=0,Q=0,J=0,M=0,V=0,E=0,I=!1){this.ID=e,this.NAME=n,this.DATA_MODE=i,this.UPLINK=o,this.DOWNLINK=a,this.BEACON=s,this.BAND=l,this.POLARIZATION_TYPE=r,this.SIMPLE_POLARIZATION=d,this.STOKES_PARAMETERS=m,this.POWER_REQUIRED=h,this.POWER_TYPE=Z,this.TRANSMIT=b,this.RECEIVE=u,this.SENSOR_TYPE=F,this.SOURCE=U,this.LAST_OB_TIME=G,this.LOWER_LEFT_ELEVATION_LIMIT=A,this.UPPER_LEFT_AZIMUTH_LIMIT=T,this.LOWER_RIGHT_ELEVATION_LIMIT=g,this.LOWER_LEFT_AZIMUTH_LIMIT=C,this.UPPER_RIGHT_ELEVATION_LIMIT=y,this.UPPER_RIGHT_AZIMUTH_LIMIT=Y,this.LOWER_RIGHT_AZIMUTH_LIMIT=Q,this.UPPER_LEFT_ELEVATION_LIMIT=J,this.RIGHT_GEO_BELT_LIMIT=M,this.LEFT_GEO_BELT_LIMIT=V,this.MAGNITUDE_LIMIT=E,this.TASKABLE=I}pack(e){let n=this.ID!==null?e.createString(this.ID):0,i=this.NAME!==null?e.createString(this.NAME):0,o=this.UPLINK!==null?this.UPLINK.pack(e):0,a=this.DOWNLINK!==null?this.DOWNLINK.pack(e):0,s=this.BEACON!==null?this.BEACON.pack(e):0,l=Wo.createBandVector(e,e.createObjectOffsetList(this.BAND)),r=this.STOKES_PARAMETERS!==null?this.STOKES_PARAMETERS.pack(e):0,d=this.POWER_TYPE!==null?e.createString(this.POWER_TYPE):0,m=this.SOURCE!==null?e.createString(this.SOURCE):0,h=this.LAST_OB_TIME!==null?e.createString(this.LAST_OB_TIME):0;return Wo.startIDM(e),Wo.addId(e,n),Wo.addName(e,i),Wo.addDataMode(e,this.DATA_MODE),Wo.addUplink(e,o),Wo.addDownlink(e,a),Wo.addBeacon(e,s),Wo.addBand(e,l),Wo.addPolarizationType(e,this.POLARIZATION_TYPE),Wo.addSimplePolarization(e,this.SIMPLE_POLARIZATION),Wo.addStokesParameters(e,r),Wo.addPowerRequired(e,this.POWER_REQUIRED),Wo.addPowerType(e,d),Wo.addTransmit(e,this.TRANSMIT),Wo.addReceive(e,this.RECEIVE),Wo.addSensorType(e,this.SENSOR_TYPE),Wo.addSource(e,m),Wo.addLastObTime(e,h),Wo.addLowerLeftElevationLimit(e,this.LOWER_LEFT_ELEVATION_LIMIT),Wo.addUpperLeftAzimuthLimit(e,this.UPPER_LEFT_AZIMUTH_LIMIT),Wo.addLowerRightElevationLimit(e,this.LOWER_RIGHT_ELEVATION_LIMIT),Wo.addLowerLeftAzimuthLimit(e,this.LOWER_LEFT_AZIMUTH_LIMIT),Wo.addUpperRightElevationLimit(e,this.UPPER_RIGHT_ELEVATION_LIMIT),Wo.addUpperRightAzimuthLimit(e,this.UPPER_RIGHT_AZIMUTH_LIMIT),Wo.addLowerRightAzimuthLimit(e,this.LOWER_RIGHT_AZIMUTH_LIMIT),Wo.addUpperLeftElevationLimit(e,this.UPPER_LEFT_ELEVATION_LIMIT),Wo.addRightGeoBeltLimit(e,this.RIGHT_GEO_BELT_LIMIT),Wo.addLeftGeoBeltLimit(e,this.LEFT_GEO_BELT_LIMIT),Wo.addMagnitudeLimit(e,this.MAGNITUDE_LIMIT),Wo.addTaskable(e,this.TASKABLE),Wo.endIDM(e)}};var Bb=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsPLD(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPLD(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$PLD")}PAYLOAD_DURATION(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}MASS_AT_LAUNCH(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat32(this.bb_pos+e):0}DIMENSIONS(e){let n=this.bb.__offset(this.bb_pos,8);return n?this.bb.__string(this.bb_pos+n,e):null}SOLAR_ARRAY_AREA(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readFloat32(this.bb_pos+e):0}SOLAR_ARRAY_DIMENSIONS(e){let n=this.bb.__offset(this.bb_pos,12);return n?this.bb.__string(this.bb_pos+n,e):null}NOMINAL_OPERATIONAL_LIFETIME(e){let n=this.bb.__offset(this.bb_pos,14);return n?this.bb.__string(this.bb_pos+n,e):null}INSTRUMENTS(e,n){let i=this.bb.__offset(this.bb_pos,16);return i?(n||new Wo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}instrumentsLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}static startPLD(e){e.startObject(7)}static addPayloadDuration(e,n){e.addFieldOffset(0,n,0)}static addMassAtLaunch(e,n){e.addFieldFloat32(1,n,0)}static addDimensions(e,n){e.addFieldOffset(2,n,0)}static addSolarArrayArea(e,n){e.addFieldFloat32(3,n,0)}static addSolarArrayDimensions(e,n){e.addFieldOffset(4,n,0)}static addNominalOperationalLifetime(e,n){e.addFieldOffset(5,n,0)}static addInstruments(e,n){e.addFieldOffset(6,n,0)}static createInstrumentsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startInstrumentsVector(e,n){e.startVector(4,n,4)}static endPLD(e){return e.endObject()}static finishPLDBuffer(e,n){e.finish(n,"$PLD")}static finishSizePrefixedPLDBuffer(e,n){e.finish(n,"$PLD",!0)}static createPLD(e,n,i,o,a,s,l,r){return t.startPLD(e),t.addPayloadDuration(e,n),t.addMassAtLaunch(e,i),t.addDimensions(e,o),t.addSolarArrayArea(e,a),t.addSolarArrayDimensions(e,s),t.addNominalOperationalLifetime(e,l),t.addInstruments(e,r),t.endPLD(e)}unpack(){return new ZM(this.PAYLOAD_DURATION(),this.MASS_AT_LAUNCH(),this.DIMENSIONS(),this.SOLAR_ARRAY_AREA(),this.SOLAR_ARRAY_DIMENSIONS(),this.NOMINAL_OPERATIONAL_LIFETIME(),this.bb.createObjList(this.INSTRUMENTS.bind(this),this.instrumentsLength()))}unpackTo(e){e.PAYLOAD_DURATION=this.PAYLOAD_DURATION(),e.MASS_AT_LAUNCH=this.MASS_AT_LAUNCH(),e.DIMENSIONS=this.DIMENSIONS(),e.SOLAR_ARRAY_AREA=this.SOLAR_ARRAY_AREA(),e.SOLAR_ARRAY_DIMENSIONS=this.SOLAR_ARRAY_DIMENSIONS(),e.NOMINAL_OPERATIONAL_LIFETIME=this.NOMINAL_OPERATIONAL_LIFETIME(),e.INSTRUMENTS=this.bb.createObjList(this.INSTRUMENTS.bind(this),this.instrumentsLength())}},ZM=class{constructor(e=null,n=0,i=null,o=0,a=null,s=null,l=[]){this.PAYLOAD_DURATION=e,this.MASS_AT_LAUNCH=n,this.DIMENSIONS=i,this.SOLAR_ARRAY_AREA=o,this.SOLAR_ARRAY_DIMENSIONS=a,this.NOMINAL_OPERATIONAL_LIFETIME=s,this.INSTRUMENTS=l}pack(e){let n=this.PAYLOAD_DURATION!==null?e.createString(this.PAYLOAD_DURATION):0,i=this.DIMENSIONS!==null?e.createString(this.DIMENSIONS):0,o=this.SOLAR_ARRAY_DIMENSIONS!==null?e.createString(this.SOLAR_ARRAY_DIMENSIONS):0,a=this.NOMINAL_OPERATIONAL_LIFETIME!==null?e.createString(this.NOMINAL_OPERATIONAL_LIFETIME):0,s=Bb.createInstrumentsVector(e,e.createObjectOffsetList(this.INSTRUMENTS));return Bb.createPLD(e,n,this.MASS_AT_LAUNCH,i,this.SOLAR_ARRAY_AREA,o,a,s)}};var hDi=R(W(),1),iU;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(iU||(iU={}));var uDi=R(W(),1),oU;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(oU||(oU={}));var VDi=R(W(),1),aU;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(aU||(aU={}));var RDi=R(W(),1),sU;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(sU||(sU={}));var fDi=R(W(),1),lU;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(lU||(lU={}));var rU=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsCAT(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsCAT(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$CAT")}OBJECT_NAME(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}OBJECT_ID(e){let n=this.bb.__offset(this.bb_pos,6);return n?this.bb.__string(this.bb_pos+n,e):null}NORAD_CAT_ID(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}OBJECT_TYPE(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readInt8(this.bb_pos+e):aU.UNKNOWN}OPS_STATUS_CODE(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readInt8(this.bb_pos+e):sU.UNKNOWN}OWNER(e){let n=this.bb.__offset(this.bb_pos,14);return n?this.bb.__string(this.bb_pos+n,e):null}LAUNCH_DATE(e){let n=this.bb.__offset(this.bb_pos,16);return n?this.bb.__string(this.bb_pos+n,e):null}LAUNCH_SITE(e){let n=this.bb.__offset(this.bb_pos,18);return n?this.bb.__string(this.bb_pos+n,e):null}DECAY_DATE(e){let n=this.bb.__offset(this.bb_pos,20);return n?this.bb.__string(this.bb_pos+n,e):null}PERIOD(){let e=this.bb.__offset(this.bb_pos,22);return e?this.bb.readFloat64(this.bb_pos+e):0}INCLINATION(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.readFloat64(this.bb_pos+e):0}APOGEE(){let e=this.bb.__offset(this.bb_pos,26);return e?this.bb.readFloat64(this.bb_pos+e):0}PERIGEE(){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.readFloat64(this.bb_pos+e):0}RCS(){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.readFloat64(this.bb_pos+e):0}DATA_STATUS_CODE(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.readInt8(this.bb_pos+e):iU.NO_CURRENT_ELEMENTS}ORBIT_CENTER(e){let n=this.bb.__offset(this.bb_pos,34);return n?this.bb.__string(this.bb_pos+n,e):null}ORBIT_TYPE(){let e=this.bb.__offset(this.bb_pos,36);return e?this.bb.readInt8(this.bb_pos+e):lU.ORBIT}DEPLOYMENT_DATE(e){let n=this.bb.__offset(this.bb_pos,38);return n?this.bb.__string(this.bb_pos+n,e):null}MANEUVERABLE(){let e=this.bb.__offset(this.bb_pos,40);return e?!!this.bb.readInt8(this.bb_pos+e):!1}SIZE(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.readFloat64(this.bb_pos+e):0}MASS(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.readFloat64(this.bb_pos+e):0}MASS_TYPE(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readInt8(this.bb_pos+e):oU.DRY}PAYLOADS(e,n){let i=this.bb.__offset(this.bb_pos,48);return i?(n||new Bb).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}payloadsLength(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.__vector_len(this.bb_pos+e):0}static startCAT(e){e.startObject(23)}static addObjectName(e,n){e.addFieldOffset(0,n,0)}static addObjectId(e,n){e.addFieldOffset(1,n,0)}static addNoradCatId(e,n){e.addFieldInt32(2,n,0)}static addObjectType(e,n){e.addFieldInt8(3,n,aU.UNKNOWN)}static addOpsStatusCode(e,n){e.addFieldInt8(4,n,sU.UNKNOWN)}static addOwner(e,n){e.addFieldOffset(5,n,0)}static addLaunchDate(e,n){e.addFieldOffset(6,n,0)}static addLaunchSite(e,n){e.addFieldOffset(7,n,0)}static addDecayDate(e,n){e.addFieldOffset(8,n,0)}static addPeriod(e,n){e.addFieldFloat64(9,n,0)}static addInclination(e,n){e.addFieldFloat64(10,n,0)}static addApogee(e,n){e.addFieldFloat64(11,n,0)}static addPerigee(e,n){e.addFieldFloat64(12,n,0)}static addRcs(e,n){e.addFieldFloat64(13,n,0)}static addDataStatusCode(e,n){e.addFieldInt8(14,n,iU.NO_CURRENT_ELEMENTS)}static addOrbitCenter(e,n){e.addFieldOffset(15,n,0)}static addOrbitType(e,n){e.addFieldInt8(16,n,lU.ORBIT)}static addDeploymentDate(e,n){e.addFieldOffset(17,n,0)}static addManeuverable(e,n){e.addFieldInt8(18,+n,0)}static addSize(e,n){e.addFieldFloat64(19,n,0)}static addMass(e,n){e.addFieldFloat64(20,n,0)}static addMassType(e,n){e.addFieldInt8(21,n,oU.DRY)}static addPayloads(e,n){e.addFieldOffset(22,n,0)}static createPayloadsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startPayloadsVector(e,n){e.startVector(4,n,4)}static endCAT(e){return e.endObject()}static finishCATBuffer(e,n){e.finish(n,"$CAT")}static finishSizePrefixedCATBuffer(e,n){e.finish(n,"$CAT",!0)}static createCAT(e,n,i,o,a,s,l,r,d,m,h,Z,b,u,F,U,G,A,T,g,C,y,Y,Q){return t.startCAT(e),t.addObjectName(e,n),t.addObjectId(e,i),t.addNoradCatId(e,o),t.addObjectType(e,a),t.addOpsStatusCode(e,s),t.addOwner(e,l),t.addLaunchDate(e,r),t.addLaunchSite(e,d),t.addDecayDate(e,m),t.addPeriod(e,h),t.addInclination(e,Z),t.addApogee(e,b),t.addPerigee(e,u),t.addRcs(e,F),t.addDataStatusCode(e,U),t.addOrbitCenter(e,G),t.addOrbitType(e,A),t.addDeploymentDate(e,T),t.addManeuverable(e,g),t.addSize(e,C),t.addMass(e,y),t.addMassType(e,Y),t.addPayloads(e,Q),t.endCAT(e)}unpack(){return new VM(this.OBJECT_NAME(),this.OBJECT_ID(),this.NORAD_CAT_ID(),this.OBJECT_TYPE(),this.OPS_STATUS_CODE(),this.OWNER(),this.LAUNCH_DATE(),this.LAUNCH_SITE(),this.DECAY_DATE(),this.PERIOD(),this.INCLINATION(),this.APOGEE(),this.PERIGEE(),this.RCS(),this.DATA_STATUS_CODE(),this.ORBIT_CENTER(),this.ORBIT_TYPE(),this.DEPLOYMENT_DATE(),this.MANEUVERABLE(),this.SIZE(),this.MASS(),this.MASS_TYPE(),this.bb.createObjList(this.PAYLOADS.bind(this),this.payloadsLength()))}unpackTo(e){e.OBJECT_NAME=this.OBJECT_NAME(),e.OBJECT_ID=this.OBJECT_ID(),e.NORAD_CAT_ID=this.NORAD_CAT_ID(),e.OBJECT_TYPE=this.OBJECT_TYPE(),e.OPS_STATUS_CODE=this.OPS_STATUS_CODE(),e.OWNER=this.OWNER(),e.LAUNCH_DATE=this.LAUNCH_DATE(),e.LAUNCH_SITE=this.LAUNCH_SITE(),e.DECAY_DATE=this.DECAY_DATE(),e.PERIOD=this.PERIOD(),e.INCLINATION=this.INCLINATION(),e.APOGEE=this.APOGEE(),e.PERIGEE=this.PERIGEE(),e.RCS=this.RCS(),e.DATA_STATUS_CODE=this.DATA_STATUS_CODE(),e.ORBIT_CENTER=this.ORBIT_CENTER(),e.ORBIT_TYPE=this.ORBIT_TYPE(),e.DEPLOYMENT_DATE=this.DEPLOYMENT_DATE(),e.MANEUVERABLE=this.MANEUVERABLE(),e.SIZE=this.SIZE(),e.MASS=this.MASS(),e.MASS_TYPE=this.MASS_TYPE(),e.PAYLOADS=this.bb.createObjList(this.PAYLOADS.bind(this),this.payloadsLength())}},VM=class{constructor(e=null,n=null,i=0,o=aU.UNKNOWN,a=sU.UNKNOWN,s=null,l=null,r=null,d=null,m=0,h=0,Z=0,b=0,u=0,F=iU.NO_CURRENT_ELEMENTS,U=null,G=lU.ORBIT,A=null,T=!1,g=0,C=0,y=oU.DRY,Y=[]){this.OBJECT_NAME=e,this.OBJECT_ID=n,this.NORAD_CAT_ID=i,this.OBJECT_TYPE=o,this.OPS_STATUS_CODE=a,this.OWNER=s,this.LAUNCH_DATE=l,this.LAUNCH_SITE=r,this.DECAY_DATE=d,this.PERIOD=m,this.INCLINATION=h,this.APOGEE=Z,this.PERIGEE=b,this.RCS=u,this.DATA_STATUS_CODE=F,this.ORBIT_CENTER=U,this.ORBIT_TYPE=G,this.DEPLOYMENT_DATE=A,this.MANEUVERABLE=T,this.SIZE=g,this.MASS=C,this.MASS_TYPE=y,this.PAYLOADS=Y}pack(e){let n=this.OBJECT_NAME!==null?e.createString(this.OBJECT_NAME):0,i=this.OBJECT_ID!==null?e.createString(this.OBJECT_ID):0,o=this.OWNER!==null?e.createString(this.OWNER):0,a=this.LAUNCH_DATE!==null?e.createString(this.LAUNCH_DATE):0,s=this.LAUNCH_SITE!==null?e.createString(this.LAUNCH_SITE):0,l=this.DECAY_DATE!==null?e.createString(this.DECAY_DATE):0,r=this.ORBIT_CENTER!==null?e.createString(this.ORBIT_CENTER):0,d=this.DEPLOYMENT_DATE!==null?e.createString(this.DEPLOYMENT_DATE):0,m=rU.createPayloadsVector(e,e.createObjectOffsetList(this.PAYLOADS));return rU.createCAT(e,n,i,this.NORAD_CAT_ID,this.OBJECT_TYPE,this.OPS_STATUS_CODE,o,a,s,l,this.PERIOD,this.INCLINATION,this.APOGEE,this.PERIGEE,this.RCS,this.DATA_STATUS_CODE,r,this.ORBIT_TYPE,d,this.MANEUVERABLE,this.SIZE,this.MASS,this.MASS_TYPE,m)}};var NDi=R(W(),1);var s1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsCATCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsCATCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new rU).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startCATCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endCATCOLLECTION(e){return e.endObject()}static createCATCOLLECTION(e,n){return t.startCATCOLLECTION(e),t.addRecords(e,n),t.endCATCOLLECTION(e)}unpack(){return new bM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},bM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=s1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return s1.createCATCOLLECTION(e,n)}};var QDi=R(W(),1);var l1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsIDMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsIDMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new Wo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startIDMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endIDMCOLLECTION(e){return e.endObject()}static createIDMCOLLECTION(e,n){return t.startIDMCOLLECTION(e),t.addRecords(e,n),t.endIDMCOLLECTION(e)}unpack(){return new RM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},RM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=l1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return l1.createIDMCOLLECTION(e,n)}};var xDi=R(W(),1);var r1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsPLDCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPLDCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new Bb).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startPLDCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endPLDCOLLECTION(e){return e.endObject()}static createPLDCOLLECTION(e,n){return t.startPLDCOLLECTION(e),t.addRecords(e,n),t.endPLDCOLLECTION(e)}unpack(){return new WM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},WM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=r1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return r1.createPLDCOLLECTION(e,n)}};var Uwi=R(W(),1);var oOi=R(W(),1);var dOi=R(W(),1);var sOi=R(W(),1);var KOi=R(W(),1);var NOi=R(W(),1);var EOi=R(W(),1);var mOi=R(W(),1),DK;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(DK||(DK={}));var pOi=R(W(),1),OK;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(OK||(OK={}));var ZOi=R(W(),1),HK;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(HK||(HK={}));var bOi=R(W(),1),wK;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(wK||(wK={}));var WOi=R(W(),1);var BOi=R(W(),1),PK;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(PK||(PK={}));var kOi=R(W(),1),vK;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(vK||(vK={}));var xOi=R(W(),1),KK;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(KK||(KK={}));var JOi=R(W(),1),zK;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(zK||(zK={}));var MOi=R(W(),1),jK;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(jK||(jK={}));var qOi=R(W(),1);var gHi=R(W(),1);var bHi=R(W(),1);var lHi=R(W(),1);var iHi=R(W(),1);var tHi=R(W(),1),qK;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(qK||(qK={}));var dHi=R(W(),1),$K;(function(t){t[t.CALCULATED=0]="CALCULATED",t[t.DEFAULT=1]="DEFAULT"})($K||($K={}));var mHi=R(W(),1),d1;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(d1||(d1={}));var WHi=R(W(),1);var FHi=R(W(),1),t3;(function(t){t[t.ELLIPSOID=0]="ELLIPSOID",t[t.BOX=1]="BOX"})(t3||(t3={}));var IHi=R(W(),1);var BHi=R(W(),1);var YHi=R(W(),1);var JHi=R(W(),1);var _Hi=R(W(),1);var HHi=R(W(),1);var vHi=R(W(),1);var cPi=R(W(),1);var iPi=R(W(),1);var sPi=R(W(),1);var Qvi=R(W(),1);var bPi=R(W(),1);var uPi=R(W(),1);var ivi=R(W(),1);var JPi=R(W(),1);var YPi=R(W(),1);var WPi=R(W(),1),e3;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(e3||(e3={}));var FPi=R(W(),1),n3;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(n3||(n3={}));var GPi=R(W(),1),i3;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(i3||(i3={}));var TPi=R(W(),1),o3;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(o3||(o3={}));var gPi=R(W(),1);var MPi=R(W(),1),a3;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(a3||(a3={}));var DPi=R(W(),1),s3;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(s3||(s3={}));var HPi=R(W(),1),l3;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(l3||(l3={}));var PPi=R(W(),1),r3;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(r3||(r3={}));var KPi=R(W(),1),d3;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(d3||(d3={}));var svi=R(W(),1);var dvi=R(W(),1);var hvi=R(W(),1);var Zvi=R(W(),1);var Rvi=R(W(),1);var dKi=R(W(),1);var nKi=R(W(),1);var aKi=R(W(),1);var fKi=R(W(),1);var pKi=R(W(),1);var VKi=R(W(),1);var DKi=R(W(),1);var gKi=R(W(),1);var AKi=R(W(),1),fM;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(fM||(fM={}));var IKi=R(W(),1);var BKi=R(W(),1);var YKi=R(W(),1);var s3i=R(W(),1);var zKi=R(W(),1),c3;(function(t){t[t.OBSERVED=0]="OBSERVED",t[t.PREDICTED=1]="PREDICTED"})(c3||(c3={}));var $Ki=R(W(),1);var n3i=R(W(),1);var C3i=R(W(),1);var m3i=R(W(),1);var V3i=R(W(),1);var p3i=R(W(),1),m3;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(m3||(m3={}));var f3i=R(W(),1);var G3i=R(W(),1);var z3i=R(W(),1);var _3i=R(W(),1);var J3i=R(W(),1);var Y3i=R(W(),1),h3;(function(t){t[t.OUTLIER=0]="OUTLIER"})(h3||(h3={}));var H3i=R(W(),1);var Qzi=R(W(),1);var azi=R(W(),1);var nzi=R(W(),1);var lzi=R(W(),1),p3;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(p3||(p3={}));var dzi=R(W(),1),u3;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(u3||(u3={}));var Azi=R(W(),1);var mzi=R(W(),1),Z3;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(Z3||(Z3={}));var pzi=R(W(),1),V3;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(V3||(V3={}));var Zzi=R(W(),1);var gzi=R(W(),1);var g8i=R(W(),1);var Hzi=R(W(),1);var Pzi=R(W(),1);var zzi=R(W(),1);var eji=R(W(),1);var qzi=R(W(),1);var Mji=R(W(),1);var Gji=R(W(),1);var fji=R(W(),1);var iji=R(W(),1),b3;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(b3||(b3={}));var aji=R(W(),1),R3;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(R3||(R3={}));var lji=R(W(),1),W3;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(W3||(W3={}));var dji=R(W(),1),f3;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(f3||(f3={}));var mji=R(W(),1);var Tji=R(W(),1),F3;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(F3||(F3={}));var gji=R(W(),1),U3;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(U3||(U3={}));var Cji=R(W(),1),G3;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(G3||(G3={}));var Nji=R(W(),1),A3;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(A3||(A3={}));var Bji=R(W(),1),T3;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(T3||(T3={}));var Oji=R(W(),1);var Kji=R(W(),1);var wji=R(W(),1),S3;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(S3||(S3={}));var t4i=R(W(),1);var jji=R(W(),1),g3;(function(t){t[t.LIQUID=0]="LIQUID",t[t.SOLID=1]="SOLID",t[t.HYBRID=2]="HYBRID",t[t.ION=3]="ION",t[t.NUCLEAR_THERMAL=4]="NUCLEAR_THERMAL",t[t.OTHER=5]="OTHER"})(g3||(g3={}));var o4i=R(W(),1);var l4i=R(W(),1);var d4i=R(W(),1);var h4i=R(W(),1);var k4i=R(W(),1);var F4i=R(W(),1);var Z4i=R(W(),1);var b4i=R(W(),1);var E4i=R(W(),1);var G4i=R(W(),1),E3;(function(t){t[t.LAUNCH_SITE=0]="LAUNCH_SITE",t[t.OBSERVATION_STATION=1]="OBSERVATION_STATION",t[t.HOBBYIST_OBSERVER=2]="HOBBYIST_OBSERVER",t[t.RESEARCH_FACILITY=3]="RESEARCH_FACILITY",t[t.SATELLITE_GROUND_STATION=4]="SATELLITE_GROUND_STATION",t[t.SPACEPORT=5]="SPACEPORT",t[t.MILITARY_BASE=6]="MILITARY_BASE",t[t.WEATHER_STATION=7]="WEATHER_STATION",t[t.ASTRONOMICAL_OBSERVATORY=8]="ASTRONOMICAL_OBSERVATORY",t[t.EDUCATIONAL_INSTITUTE=9]="EDUCATIONAL_INSTITUTE",t[t.COMMUNICATION_HUB=10]="COMMUNICATION_HUB",t[t.POWER_PLANT=11]="POWER_PLANT",t[t.INDUSTRIAL_COMPLEX=12]="INDUSTRIAL_COMPLEX",t[t.TRANSPORTATION_HUB=13]="TRANSPORTATION_HUB",t[t.URBAN_AREA=14]="URBAN_AREA",t[t.NATIONAL_PARK=15]="NATIONAL_PARK",t[t.HISTORICAL_SITE=16]="HISTORICAL_SITE",t[t.OTHER=17]="OTHER"})(E3||(E3={}));var X4i=R(W(),1);var M4i=R(W(),1);var O4i=R(W(),1);var P4i=R(W(),1);var U6i=R(W(),1);var Z6i=R(W(),1);var h6i=R(W(),1),C3;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(C3||(C3={}));var R6i=R(W(),1);var w6i=R(W(),1);var I6i=R(W(),1);var g6i=R(W(),1),FM;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(FM||(FM={}));var B6i=R(W(),1);var Y6i=R(W(),1);var J6i=R(W(),1);var D7i=R(W(),1);var Z7i=R(W(),1);var h7i=R(W(),1);var n7i=R(W(),1);var $6i=R(W(),1),c1;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(c1||(c1={}));var o7i=R(W(),1);var s7i=R(W(),1),UM;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(UM||(UM={}));var R7i=R(W(),1);var F7i=R(W(),1);var A7i=R(W(),1);var g7i=R(W(),1);var I7i=R(W(),1);var sW={};vO(sW,{MET:()=>tS,METCOLLECTION:()=>m1,METCOLLECTIONT:()=>AM,METT:()=>GM,OMM:()=>eS,OMMCOLLECTION:()=>h1,OMMCOLLECTIONT:()=>SM,OMMT:()=>TM,RFM:()=>nS,RFMCOLLECTION:()=>p1,RFMCOLLECTIONT:()=>EM,RFMT:()=>gM,TIM:()=>iS,TIMCOLLECTION:()=>u1,TIMCOLLECTIONT:()=>IM,TIMT:()=>CM,ephemerisType:()=>dU,meanElementTheory:()=>fu,refFrame:()=>zc,timeSystem:()=>Fu});var Yqi=R(W(),1);var aqi=R(W(),1);var nqi=R(W(),1),fu;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(fu||(fu={}));var tS=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsMET(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMET(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$MET")}MEAN_ELEMENT_THEORY(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):fu.SGP4}static startMET(e){e.startObject(1)}static addMeanElementTheory(e,n){e.addFieldInt8(0,n,fu.SGP4)}static endMET(e){return e.endObject()}static finishMETBuffer(e,n){e.finish(n,"$MET")}static finishSizePrefixedMETBuffer(e,n){e.finish(n,"$MET",!0)}static createMET(e,n){return t.startMET(e),t.addMeanElementTheory(e,n),t.endMET(e)}unpack(){return new GM(this.MEAN_ELEMENT_THEORY())}unpackTo(e){e.MEAN_ELEMENT_THEORY=this.MEAN_ELEMENT_THEORY()}},GM=class{constructor(e=fu.SGP4){this.MEAN_ELEMENT_THEORY=e}pack(e){return tS.createMET(e,this.MEAN_ELEMENT_THEORY)}};var rqi=R(W(),1);var m1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsMETCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMETCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new tS).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startMETCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endMETCOLLECTION(e){return e.endObject()}static createMETCOLLECTION(e,n){return t.startMETCOLLECTION(e),t.addRecords(e,n),t.endMETCOLLECTION(e)}unpack(){return new AM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},AM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=m1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return m1.createMETCOLLECTION(e,n)}};var fqi=R(W(),1);var cqi=R(W(),1),dU;(function(t){t[t.SGP=0]="SGP",t[t.SGP4=1]="SGP4",t[t.SDP4=2]="SDP4",t[t.SGP8=3]="SGP8",t[t.SDP8=4]="SDP8"})(dU||(dU={}));var hqi=R(W(),1),zc;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(zc||(zc={}));var uqi=R(W(),1),Fu;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(Fu||(Fu={}));var eS=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsOMM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsOMM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$OMM")}CCSDS_OMM_VERS(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readFloat64(this.bb_pos+e):0}CREATION_DATE(e){let n=this.bb.__offset(this.bb_pos,6);return n?this.bb.__string(this.bb_pos+n,e):null}ORIGINATOR(e){let n=this.bb.__offset(this.bb_pos,8);return n?this.bb.__string(this.bb_pos+n,e):null}OBJECT_NAME(e){let n=this.bb.__offset(this.bb_pos,10);return n?this.bb.__string(this.bb_pos+n,e):null}OBJECT_ID(e){let n=this.bb.__offset(this.bb_pos,12);return n?this.bb.__string(this.bb_pos+n,e):null}CENTER_NAME(e){let n=this.bb.__offset(this.bb_pos,14);return n?this.bb.__string(this.bb_pos+n,e):null}REFERENCE_FRAME(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readInt8(this.bb_pos+e):zc.TEME}REFERENCE_FRAME_EPOCH(e){let n=this.bb.__offset(this.bb_pos,18);return n?this.bb.__string(this.bb_pos+n,e):null}TIME_SYSTEM(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readInt8(this.bb_pos+e):Fu.UTC}MEAN_ELEMENT_THEORY(){let e=this.bb.__offset(this.bb_pos,22);return e?this.bb.readInt8(this.bb_pos+e):fu.SGP4}COMMENT(e){let n=this.bb.__offset(this.bb_pos,24);return n?this.bb.__string(this.bb_pos+n,e):null}EPOCH(e){let n=this.bb.__offset(this.bb_pos,26);return n?this.bb.__string(this.bb_pos+n,e):null}SEMI_MAJOR_AXIS(){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_MOTION(){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.readFloat64(this.bb_pos+e):0}ECCENTRICITY(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.readFloat64(this.bb_pos+e):0}INCLINATION(){let e=this.bb.__offset(this.bb_pos,34);return e?this.bb.readFloat64(this.bb_pos+e):0}RA_OF_ASC_NODE(){let e=this.bb.__offset(this.bb_pos,36);return e?this.bb.readFloat64(this.bb_pos+e):0}ARG_OF_PERICENTER(){let e=this.bb.__offset(this.bb_pos,38);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_ANOMALY(){let e=this.bb.__offset(this.bb_pos,40);return e?this.bb.readFloat64(this.bb_pos+e):0}GM(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.readFloat64(this.bb_pos+e):0}MASS(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.readFloat64(this.bb_pos+e):0}SOLAR_RAD_AREA(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readFloat64(this.bb_pos+e):0}SOLAR_RAD_COEFF(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.readFloat64(this.bb_pos+e):0}DRAG_AREA(){let e=this.bb.__offset(this.bb_pos,50);return e?this.bb.readFloat64(this.bb_pos+e):0}DRAG_COEFF(){let e=this.bb.__offset(this.bb_pos,52);return e?this.bb.readFloat64(this.bb_pos+e):0}EPHEMERIS_TYPE(){let e=this.bb.__offset(this.bb_pos,54);return e?this.bb.readInt8(this.bb_pos+e):dU.SGP4}CLASSIFICATION_TYPE(e){let n=this.bb.__offset(this.bb_pos,56);return n?this.bb.__string(this.bb_pos+n,e):null}NORAD_CAT_ID(){let e=this.bb.__offset(this.bb_pos,58);return e?this.bb.readUint32(this.bb_pos+e):0}ELEMENT_SET_NO(){let e=this.bb.__offset(this.bb_pos,60);return e?this.bb.readUint32(this.bb_pos+e):0}REV_AT_EPOCH(){let e=this.bb.__offset(this.bb_pos,62);return e?this.bb.readFloat64(this.bb_pos+e):0}BSTAR(){let e=this.bb.__offset(this.bb_pos,64);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_MOTION_DOT(){let e=this.bb.__offset(this.bb_pos,66);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_MOTION_DDOT(){let e=this.bb.__offset(this.bb_pos,68);return e?this.bb.readFloat64(this.bb_pos+e):0}COV_REFERENCE_FRAME(){let e=this.bb.__offset(this.bb_pos,70);return e?this.bb.readInt8(this.bb_pos+e):zc.RSW}CX_X(){let e=this.bb.__offset(this.bb_pos,72);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_X(){let e=this.bb.__offset(this.bb_pos,74);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_Y(){let e=this.bb.__offset(this.bb_pos,76);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_X(){let e=this.bb.__offset(this.bb_pos,78);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_Y(){let e=this.bb.__offset(this.bb_pos,80);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_Z(){let e=this.bb.__offset(this.bb_pos,82);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_X(){let e=this.bb.__offset(this.bb_pos,84);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_Y(){let e=this.bb.__offset(this.bb_pos,86);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_Z(){let e=this.bb.__offset(this.bb_pos,88);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_X_DOT(){let e=this.bb.__offset(this.bb_pos,90);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_X(){let e=this.bb.__offset(this.bb_pos,92);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_Y(){let e=this.bb.__offset(this.bb_pos,94);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_Z(){let e=this.bb.__offset(this.bb_pos,96);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_X_DOT(){let e=this.bb.__offset(this.bb_pos,98);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_Y_DOT(){let e=this.bb.__offset(this.bb_pos,100);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_X(){let e=this.bb.__offset(this.bb_pos,102);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Y(){let e=this.bb.__offset(this.bb_pos,104);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Z(){let e=this.bb.__offset(this.bb_pos,106);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_X_DOT(){let e=this.bb.__offset(this.bb_pos,108);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Y_DOT(){let e=this.bb.__offset(this.bb_pos,110);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Z_DOT(){let e=this.bb.__offset(this.bb_pos,112);return e?this.bb.readFloat64(this.bb_pos+e):0}USER_DEFINED_BIP_0044_TYPE(){let e=this.bb.__offset(this.bb_pos,114);return e?this.bb.readUint32(this.bb_pos+e):0}USER_DEFINED_OBJECT_DESIGNATOR(e){let n=this.bb.__offset(this.bb_pos,116);return n?this.bb.__string(this.bb_pos+n,e):null}USER_DEFINED_EARTH_MODEL(e){let n=this.bb.__offset(this.bb_pos,118);return n?this.bb.__string(this.bb_pos+n,e):null}USER_DEFINED_EPOCH_TIMESTAMP(){let e=this.bb.__offset(this.bb_pos,120);return e?this.bb.readFloat64(this.bb_pos+e):0}USER_DEFINED_MICROSECONDS(){let e=this.bb.__offset(this.bb_pos,122);return e?this.bb.readFloat64(this.bb_pos+e):0}static startOMM(e){e.startObject(60)}static addCcsdsOmmVers(e,n){e.addFieldFloat64(0,n,0)}static addCreationDate(e,n){e.addFieldOffset(1,n,0)}static addOriginator(e,n){e.addFieldOffset(2,n,0)}static addObjectName(e,n){e.addFieldOffset(3,n,0)}static addObjectId(e,n){e.addFieldOffset(4,n,0)}static addCenterName(e,n){e.addFieldOffset(5,n,0)}static addReferenceFrame(e,n){e.addFieldInt8(6,n,zc.TEME)}static addReferenceFrameEpoch(e,n){e.addFieldOffset(7,n,0)}static addTimeSystem(e,n){e.addFieldInt8(8,n,Fu.UTC)}static addMeanElementTheory(e,n){e.addFieldInt8(9,n,fu.SGP4)}static addComment(e,n){e.addFieldOffset(10,n,0)}static addEpoch(e,n){e.addFieldOffset(11,n,0)}static addSemiMajorAxis(e,n){e.addFieldFloat64(12,n,0)}static addMeanMotion(e,n){e.addFieldFloat64(13,n,0)}static addEccentricity(e,n){e.addFieldFloat64(14,n,0)}static addInclination(e,n){e.addFieldFloat64(15,n,0)}static addRaOfAscNode(e,n){e.addFieldFloat64(16,n,0)}static addArgOfPericenter(e,n){e.addFieldFloat64(17,n,0)}static addMeanAnomaly(e,n){e.addFieldFloat64(18,n,0)}static addGm(e,n){e.addFieldFloat64(19,n,0)}static addMass(e,n){e.addFieldFloat64(20,n,0)}static addSolarRadArea(e,n){e.addFieldFloat64(21,n,0)}static addSolarRadCoeff(e,n){e.addFieldFloat64(22,n,0)}static addDragArea(e,n){e.addFieldFloat64(23,n,0)}static addDragCoeff(e,n){e.addFieldFloat64(24,n,0)}static addEphemerisType(e,n){e.addFieldInt8(25,n,dU.SGP4)}static addClassificationType(e,n){e.addFieldOffset(26,n,0)}static addNoradCatId(e,n){e.addFieldInt32(27,n,0)}static addElementSetNo(e,n){e.addFieldInt32(28,n,0)}static addRevAtEpoch(e,n){e.addFieldFloat64(29,n,0)}static addBstar(e,n){e.addFieldFloat64(30,n,0)}static addMeanMotionDot(e,n){e.addFieldFloat64(31,n,0)}static addMeanMotionDdot(e,n){e.addFieldFloat64(32,n,0)}static addCovReferenceFrame(e,n){e.addFieldInt8(33,n,zc.RSW)}static addCxX(e,n){e.addFieldFloat64(34,n,0)}static addCyX(e,n){e.addFieldFloat64(35,n,0)}static addCyY(e,n){e.addFieldFloat64(36,n,0)}static addCzX(e,n){e.addFieldFloat64(37,n,0)}static addCzY(e,n){e.addFieldFloat64(38,n,0)}static addCzZ(e,n){e.addFieldFloat64(39,n,0)}static addCxDotX(e,n){e.addFieldFloat64(40,n,0)}static addCxDotY(e,n){e.addFieldFloat64(41,n,0)}static addCxDotZ(e,n){e.addFieldFloat64(42,n,0)}static addCxDotXDot(e,n){e.addFieldFloat64(43,n,0)}static addCyDotX(e,n){e.addFieldFloat64(44,n,0)}static addCyDotY(e,n){e.addFieldFloat64(45,n,0)}static addCyDotZ(e,n){e.addFieldFloat64(46,n,0)}static addCyDotXDot(e,n){e.addFieldFloat64(47,n,0)}static addCyDotYDot(e,n){e.addFieldFloat64(48,n,0)}static addCzDotX(e,n){e.addFieldFloat64(49,n,0)}static addCzDotY(e,n){e.addFieldFloat64(50,n,0)}static addCzDotZ(e,n){e.addFieldFloat64(51,n,0)}static addCzDotXDot(e,n){e.addFieldFloat64(52,n,0)}static addCzDotYDot(e,n){e.addFieldFloat64(53,n,0)}static addCzDotZDot(e,n){e.addFieldFloat64(54,n,0)}static addUserDefinedBip0044Type(e,n){e.addFieldInt32(55,n,0)}static addUserDefinedObjectDesignator(e,n){e.addFieldOffset(56,n,0)}static addUserDefinedEarthModel(e,n){e.addFieldOffset(57,n,0)}static addUserDefinedEpochTimestamp(e,n){e.addFieldFloat64(58,n,0)}static addUserDefinedMicroseconds(e,n){e.addFieldFloat64(59,n,0)}static endOMM(e){return e.endObject()}static finishOMMBuffer(e,n){e.finish(n,"$OMM")}static finishSizePrefixedOMMBuffer(e,n){e.finish(n,"$OMM",!0)}static createOMM(e,n,i,o,a,s,l,r,d,m,h,Z,b,u,F,U,G,A,T,g,C,y,Y,Q,J,M,V,E,I,B,X,_,P,w,z,H,nt,$,dt,q,at,st,Et,Qt,Wt,Nt,kt,Mt,qt,ie,oe,He,rn,de,zt,ke,ue,We,un,Ct,_t){return t.startOMM(e),t.addCcsdsOmmVers(e,n),t.addCreationDate(e,i),t.addOriginator(e,o),t.addObjectName(e,a),t.addObjectId(e,s),t.addCenterName(e,l),t.addReferenceFrame(e,r),t.addReferenceFrameEpoch(e,d),t.addTimeSystem(e,m),t.addMeanElementTheory(e,h),t.addComment(e,Z),t.addEpoch(e,b),t.addSemiMajorAxis(e,u),t.addMeanMotion(e,F),t.addEccentricity(e,U),t.addInclination(e,G),t.addRaOfAscNode(e,A),t.addArgOfPericenter(e,T),t.addMeanAnomaly(e,g),t.addGm(e,C),t.addMass(e,y),t.addSolarRadArea(e,Y),t.addSolarRadCoeff(e,Q),t.addDragArea(e,J),t.addDragCoeff(e,M),t.addEphemerisType(e,V),t.addClassificationType(e,E),t.addNoradCatId(e,I),t.addElementSetNo(e,B),t.addRevAtEpoch(e,X),t.addBstar(e,_),t.addMeanMotionDot(e,P),t.addMeanMotionDdot(e,w),t.addCovReferenceFrame(e,z),t.addCxX(e,H),t.addCyX(e,nt),t.addCyY(e,$),t.addCzX(e,dt),t.addCzY(e,q),t.addCzZ(e,at),t.addCxDotX(e,st),t.addCxDotY(e,Et),t.addCxDotZ(e,Qt),t.addCxDotXDot(e,Wt),t.addCyDotX(e,Nt),t.addCyDotY(e,kt),t.addCyDotZ(e,Mt),t.addCyDotXDot(e,qt),t.addCyDotYDot(e,ie),t.addCzDotX(e,oe),t.addCzDotY(e,He),t.addCzDotZ(e,rn),t.addCzDotXDot(e,de),t.addCzDotYDot(e,zt),t.addCzDotZDot(e,ke),t.addUserDefinedBip0044Type(e,ue),t.addUserDefinedObjectDesignator(e,We),t.addUserDefinedEarthModel(e,un),t.addUserDefinedEpochTimestamp(e,Ct),t.addUserDefinedMicroseconds(e,_t),t.endOMM(e)}unpack(){return new TM(this.CCSDS_OMM_VERS(),this.CREATION_DATE(),this.ORIGINATOR(),this.OBJECT_NAME(),this.OBJECT_ID(),this.CENTER_NAME(),this.REFERENCE_FRAME(),this.REFERENCE_FRAME_EPOCH(),this.TIME_SYSTEM(),this.MEAN_ELEMENT_THEORY(),this.COMMENT(),this.EPOCH(),this.SEMI_MAJOR_AXIS(),this.MEAN_MOTION(),this.ECCENTRICITY(),this.INCLINATION(),this.RA_OF_ASC_NODE(),this.ARG_OF_PERICENTER(),this.MEAN_ANOMALY(),this.GM(),this.MASS(),this.SOLAR_RAD_AREA(),this.SOLAR_RAD_COEFF(),this.DRAG_AREA(),this.DRAG_COEFF(),this.EPHEMERIS_TYPE(),this.CLASSIFICATION_TYPE(),this.NORAD_CAT_ID(),this.ELEMENT_SET_NO(),this.REV_AT_EPOCH(),this.BSTAR(),this.MEAN_MOTION_DOT(),this.MEAN_MOTION_DDOT(),this.COV_REFERENCE_FRAME(),this.CX_X(),this.CY_X(),this.CY_Y(),this.CZ_X(),this.CZ_Y(),this.CZ_Z(),this.CX_DOT_X(),this.CX_DOT_Y(),this.CX_DOT_Z(),this.CX_DOT_X_DOT(),this.CY_DOT_X(),this.CY_DOT_Y(),this.CY_DOT_Z(),this.CY_DOT_X_DOT(),this.CY_DOT_Y_DOT(),this.CZ_DOT_X(),this.CZ_DOT_Y(),this.CZ_DOT_Z(),this.CZ_DOT_X_DOT(),this.CZ_DOT_Y_DOT(),this.CZ_DOT_Z_DOT(),this.USER_DEFINED_BIP_0044_TYPE(),this.USER_DEFINED_OBJECT_DESIGNATOR(),this.USER_DEFINED_EARTH_MODEL(),this.USER_DEFINED_EPOCH_TIMESTAMP(),this.USER_DEFINED_MICROSECONDS())}unpackTo(e){e.CCSDS_OMM_VERS=this.CCSDS_OMM_VERS(),e.CREATION_DATE=this.CREATION_DATE(),e.ORIGINATOR=this.ORIGINATOR(),e.OBJECT_NAME=this.OBJECT_NAME(),e.OBJECT_ID=this.OBJECT_ID(),e.CENTER_NAME=this.CENTER_NAME(),e.REFERENCE_FRAME=this.REFERENCE_FRAME(),e.REFERENCE_FRAME_EPOCH=this.REFERENCE_FRAME_EPOCH(),e.TIME_SYSTEM=this.TIME_SYSTEM(),e.MEAN_ELEMENT_THEORY=this.MEAN_ELEMENT_THEORY(),e.COMMENT=this.COMMENT(),e.EPOCH=this.EPOCH(),e.SEMI_MAJOR_AXIS=this.SEMI_MAJOR_AXIS(),e.MEAN_MOTION=this.MEAN_MOTION(),e.ECCENTRICITY=this.ECCENTRICITY(),e.INCLINATION=this.INCLINATION(),e.RA_OF_ASC_NODE=this.RA_OF_ASC_NODE(),e.ARG_OF_PERICENTER=this.ARG_OF_PERICENTER(),e.MEAN_ANOMALY=this.MEAN_ANOMALY(),e.GM=this.GM(),e.MASS=this.MASS(),e.SOLAR_RAD_AREA=this.SOLAR_RAD_AREA(),e.SOLAR_RAD_COEFF=this.SOLAR_RAD_COEFF(),e.DRAG_AREA=this.DRAG_AREA(),e.DRAG_COEFF=this.DRAG_COEFF(),e.EPHEMERIS_TYPE=this.EPHEMERIS_TYPE(),e.CLASSIFICATION_TYPE=this.CLASSIFICATION_TYPE(),e.NORAD_CAT_ID=this.NORAD_CAT_ID(),e.ELEMENT_SET_NO=this.ELEMENT_SET_NO(),e.REV_AT_EPOCH=this.REV_AT_EPOCH(),e.BSTAR=this.BSTAR(),e.MEAN_MOTION_DOT=this.MEAN_MOTION_DOT(),e.MEAN_MOTION_DDOT=this.MEAN_MOTION_DDOT(),e.COV_REFERENCE_FRAME=this.COV_REFERENCE_FRAME(),e.CX_X=this.CX_X(),e.CY_X=this.CY_X(),e.CY_Y=this.CY_Y(),e.CZ_X=this.CZ_X(),e.CZ_Y=this.CZ_Y(),e.CZ_Z=this.CZ_Z(),e.CX_DOT_X=this.CX_DOT_X(),e.CX_DOT_Y=this.CX_DOT_Y(),e.CX_DOT_Z=this.CX_DOT_Z(),e.CX_DOT_X_DOT=this.CX_DOT_X_DOT(),e.CY_DOT_X=this.CY_DOT_X(),e.CY_DOT_Y=this.CY_DOT_Y(),e.CY_DOT_Z=this.CY_DOT_Z(),e.CY_DOT_X_DOT=this.CY_DOT_X_DOT(),e.CY_DOT_Y_DOT=this.CY_DOT_Y_DOT(),e.CZ_DOT_X=this.CZ_DOT_X(),e.CZ_DOT_Y=this.CZ_DOT_Y(),e.CZ_DOT_Z=this.CZ_DOT_Z(),e.CZ_DOT_X_DOT=this.CZ_DOT_X_DOT(),e.CZ_DOT_Y_DOT=this.CZ_DOT_Y_DOT(),e.CZ_DOT_Z_DOT=this.CZ_DOT_Z_DOT(),e.USER_DEFINED_BIP_0044_TYPE=this.USER_DEFINED_BIP_0044_TYPE(),e.USER_DEFINED_OBJECT_DESIGNATOR=this.USER_DEFINED_OBJECT_DESIGNATOR(),e.USER_DEFINED_EARTH_MODEL=this.USER_DEFINED_EARTH_MODEL(),e.USER_DEFINED_EPOCH_TIMESTAMP=this.USER_DEFINED_EPOCH_TIMESTAMP(),e.USER_DEFINED_MICROSECONDS=this.USER_DEFINED_MICROSECONDS()}},TM=class{constructor(e=0,n=null,i=null,o=null,a=null,s=null,l=zc.TEME,r=null,d=Fu.UTC,m=fu.SGP4,h=null,Z=null,b=0,u=0,F=0,U=0,G=0,A=0,T=0,g=0,C=0,y=0,Y=0,Q=0,J=0,M=dU.SGP4,V=null,E=0,I=0,B=0,X=0,_=0,P=0,w=zc.RSW,z=0,H=0,nt=0,$=0,dt=0,q=0,at=0,st=0,Et=0,Qt=0,Wt=0,Nt=0,kt=0,Mt=0,qt=0,ie=0,oe=0,He=0,rn=0,de=0,zt=0,ke=0,ue=null,We=null,un=0,Ct=0){this.CCSDS_OMM_VERS=e,this.CREATION_DATE=n,this.ORIGINATOR=i,this.OBJECT_NAME=o,this.OBJECT_ID=a,this.CENTER_NAME=s,this.REFERENCE_FRAME=l,this.REFERENCE_FRAME_EPOCH=r,this.TIME_SYSTEM=d,this.MEAN_ELEMENT_THEORY=m,this.COMMENT=h,this.EPOCH=Z,this.SEMI_MAJOR_AXIS=b,this.MEAN_MOTION=u,this.ECCENTRICITY=F,this.INCLINATION=U,this.RA_OF_ASC_NODE=G,this.ARG_OF_PERICENTER=A,this.MEAN_ANOMALY=T,this.GM=g,this.MASS=C,this.SOLAR_RAD_AREA=y,this.SOLAR_RAD_COEFF=Y,this.DRAG_AREA=Q,this.DRAG_COEFF=J,this.EPHEMERIS_TYPE=M,this.CLASSIFICATION_TYPE=V,this.NORAD_CAT_ID=E,this.ELEMENT_SET_NO=I,this.REV_AT_EPOCH=B,this.BSTAR=X,this.MEAN_MOTION_DOT=_,this.MEAN_MOTION_DDOT=P,this.COV_REFERENCE_FRAME=w,this.CX_X=z,this.CY_X=H,this.CY_Y=nt,this.CZ_X=$,this.CZ_Y=dt,this.CZ_Z=q,this.CX_DOT_X=at,this.CX_DOT_Y=st,this.CX_DOT_Z=Et,this.CX_DOT_X_DOT=Qt,this.CY_DOT_X=Wt,this.CY_DOT_Y=Nt,this.CY_DOT_Z=kt,this.CY_DOT_X_DOT=Mt,this.CY_DOT_Y_DOT=qt,this.CZ_DOT_X=ie,this.CZ_DOT_Y=oe,this.CZ_DOT_Z=He,this.CZ_DOT_X_DOT=rn,this.CZ_DOT_Y_DOT=de,this.CZ_DOT_Z_DOT=zt,this.USER_DEFINED_BIP_0044_TYPE=ke,this.USER_DEFINED_OBJECT_DESIGNATOR=ue,this.USER_DEFINED_EARTH_MODEL=We,this.USER_DEFINED_EPOCH_TIMESTAMP=un,this.USER_DEFINED_MICROSECONDS=Ct}pack(e){let n=this.CREATION_DATE!==null?e.createString(this.CREATION_DATE):0,i=this.ORIGINATOR!==null?e.createString(this.ORIGINATOR):0,o=this.OBJECT_NAME!==null?e.createString(this.OBJECT_NAME):0,a=this.OBJECT_ID!==null?e.createString(this.OBJECT_ID):0,s=this.CENTER_NAME!==null?e.createString(this.CENTER_NAME):0,l=this.REFERENCE_FRAME_EPOCH!==null?e.createString(this.REFERENCE_FRAME_EPOCH):0,r=this.COMMENT!==null?e.createString(this.COMMENT):0,d=this.EPOCH!==null?e.createString(this.EPOCH):0,m=this.CLASSIFICATION_TYPE!==null?e.createString(this.CLASSIFICATION_TYPE):0,h=this.USER_DEFINED_OBJECT_DESIGNATOR!==null?e.createString(this.USER_DEFINED_OBJECT_DESIGNATOR):0,Z=this.USER_DEFINED_EARTH_MODEL!==null?e.createString(this.USER_DEFINED_EARTH_MODEL):0;return eS.createOMM(e,this.CCSDS_OMM_VERS,n,i,o,a,s,this.REFERENCE_FRAME,l,this.TIME_SYSTEM,this.MEAN_ELEMENT_THEORY,r,d,this.SEMI_MAJOR_AXIS,this.MEAN_MOTION,this.ECCENTRICITY,this.INCLINATION,this.RA_OF_ASC_NODE,this.ARG_OF_PERICENTER,this.MEAN_ANOMALY,this.GM,this.MASS,this.SOLAR_RAD_AREA,this.SOLAR_RAD_COEFF,this.DRAG_AREA,this.DRAG_COEFF,this.EPHEMERIS_TYPE,m,this.NORAD_CAT_ID,this.ELEMENT_SET_NO,this.REV_AT_EPOCH,this.BSTAR,this.MEAN_MOTION_DOT,this.MEAN_MOTION_DDOT,this.COV_REFERENCE_FRAME,this.CX_X,this.CY_X,this.CY_Y,this.CZ_X,this.CZ_Y,this.CZ_Z,this.CX_DOT_X,this.CX_DOT_Y,this.CX_DOT_Z,this.CX_DOT_X_DOT,this.CY_DOT_X,this.CY_DOT_Y,this.CY_DOT_Z,this.CY_DOT_X_DOT,this.CY_DOT_Y_DOT,this.CZ_DOT_X,this.CZ_DOT_Y,this.CZ_DOT_Z,this.CZ_DOT_X_DOT,this.CZ_DOT_Y_DOT,this.CZ_DOT_Z_DOT,this.USER_DEFINED_BIP_0044_TYPE,h,Z,this.USER_DEFINED_EPOCH_TIMESTAMP,this.USER_DEFINED_MICROSECONDS)}};var Gqi=R(W(),1);var h1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsOMMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsOMMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new eS).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startOMMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endOMMCOLLECTION(e){return e.endObject()}static createOMMCOLLECTION(e,n){return t.startOMMCOLLECTION(e),t.addRecords(e,n),t.endOMMCOLLECTION(e)}unpack(){return new SM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},SM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=h1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return h1.createOMMCOLLECTION(e,n)}};var Sqi=R(W(),1);var nS=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsRFM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRFM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$RFM")}REFERENCE_FRAME(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):zc.ECEF}static startRFM(e){e.startObject(1)}static addReferenceFrame(e,n){e.addFieldInt8(0,n,zc.ECEF)}static endRFM(e){return e.endObject()}static finishRFMBuffer(e,n){e.finish(n,"$RFM")}static finishSizePrefixedRFMBuffer(e,n){e.finish(n,"$RFM",!0)}static createRFM(e,n){return t.startRFM(e),t.addReferenceFrame(e,n),t.endRFM(e)}unpack(){return new gM(this.REFERENCE_FRAME())}unpackTo(e){e.REFERENCE_FRAME=this.REFERENCE_FRAME()}},gM=class{constructor(e=zc.ECEF){this.REFERENCE_FRAME=e}pack(e){return nS.createRFM(e,this.REFERENCE_FRAME)}};var Cqi=R(W(),1);var p1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsRFMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRFMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new nS).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startRFMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endRFMCOLLECTION(e){return e.endObject()}static createRFMCOLLECTION(e,n){return t.startRFMCOLLECTION(e),t.addRecords(e,n),t.endRFMCOLLECTION(e)}unpack(){return new EM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},EM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=p1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return p1.createRFMCOLLECTION(e,n)}};var yqi=R(W(),1);var iS=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsTIM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsTIM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$TIM")}TIME_SYSTEM(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):Fu.GMST}static startTIM(e){e.startObject(1)}static addTimeSystem(e,n){e.addFieldInt8(0,n,Fu.GMST)}static endTIM(e){return e.endObject()}static finishTIMBuffer(e,n){e.finish(n,"$TIM")}static finishSizePrefixedTIMBuffer(e,n){e.finish(n,"$TIM",!0)}static createTIM(e,n){return t.startTIM(e),t.addTimeSystem(e,n),t.endTIM(e)}unpack(){return new CM(this.TIME_SYSTEM())}unpackTo(e){e.TIME_SYSTEM=this.TIME_SYSTEM()}},CM=class{constructor(e=Fu.GMST){this.TIME_SYSTEM=e}pack(e){return iS.createTIM(e,this.TIME_SYSTEM)}};var kqi=R(W(),1);var u1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsTIMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsTIMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new iS).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startTIMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endTIMCOLLECTION(e){return e.endObject()}static createTIMCOLLECTION(e,n){return t.startTIMCOLLECTION(e),t.addRecords(e,n),t.endTIMCOLLECTION(e)}unpack(){return new IM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},IM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=u1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return u1.createTIMCOLLECTION(e,n)}};var i$i=R(W(),1);var zqi=R(W(),1);var $qi=R(W(),1);var v$i=R(W(),1);var c$i=R(W(),1);var l$i=R(W(),1);var h$i=R(W(),1),I3;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(I3||(I3={}));var u$i=R(W(),1),N3;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(N3||(N3={}));var C$i=R(W(),1);var V$i=R(W(),1),y3;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(y3||(y3={}));var R$i=R(W(),1),B3;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(B3||(B3={}));var f$i=R(W(),1);var y$i=R(W(),1);var k$i=R(W(),1);var X$i=R(W(),1);var uto=R(W(),1);var lto=R(W(),1);var cto=R(W(),1);var Cto=R(W(),1);var Fto=R(W(),1);var Rto=R(W(),1);var Ato=R(W(),1);var oro=R(W(),1);var Qto=R(W(),1);var Yto=R(W(),1);var Jto=R(W(),1);var Oto=R(W(),1);var Mto=R(W(),1);var Ieo=R(W(),1);var heo=R(W(),1);var deo=R(W(),1);var wto=R(W(),1),Q3;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(Q3||(Q3={}));var vto=R(W(),1),k3;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(k3||(k3={}));var zto=R(W(),1),Y3;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(Y3||(Y3={}));var qto=R(W(),1),x3;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(x3||(x3={}));var teo=R(W(),1);var ueo=R(W(),1),J3;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(J3||(J3={}));var Veo=R(W(),1),L3;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(L3||(L3={}));var Reo=R(W(),1),M3;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(M3||(M3={}));var feo=R(W(),1),_3;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(_3||(_3={}));var Ueo=R(W(),1),D3;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(D3||(D3={}));var Beo=R(W(),1);var rno=R(W(),1);var qeo=R(W(),1);var _eo=R(W(),1);var Xeo=R(W(),1);var keo=R(W(),1),O3;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(O3||(O3={}));var Oeo=R(W(),1),H3;(function(t){t[t.CALCULATED=0]="CALCULATED",t[t.DEFAULT=1]="DEFAULT"})(H3||(H3={}));var weo=R(W(),1),$Z;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})($Z||($Z={}));var tno=R(W(),1);var nno=R(W(),1),P3;(function(t){t[t.ELLIPSOID=0]="ELLIPSOID",t[t.BOX=1]="BOX"})(P3||(P3={}));var mno=R(W(),1);var pno=R(W(),1);var Vno=R(W(),1);var Wno=R(W(),1);var Uno=R(W(),1);var Ano=R(W(),1);var gno=R(W(),1);var Cno=R(W(),1),v3;(function(t){t[t.OBSERVED=0]="OBSERVED",t[t.PREDICTED=1]="PREDICTED"})(v3||(v3={}));var Nno=R(W(),1);var Qno=R(W(),1);var Jno=R(W(),1);var Yno=R(W(),1),K3;(function(t){t[t.LIQUID=0]="LIQUID",t[t.SOLID=1]="SOLID",t[t.HYBRID=2]="HYBRID",t[t.ION=3]="ION",t[t.NUCLEAR_THERMAL=4]="NUCLEAR_THERMAL",t[t.OTHER=5]="OTHER"})(K3||(K3={}));var _no=R(W(),1);var Hno=R(W(),1);var vno=R(W(),1);var jno=R(W(),1);var tio=R(W(),1);var nio=R(W(),1);var cio=R(W(),1);var lio=R(W(),1);var oio=R(W(),1),z3;(function(t){t[t.OUTLIER=0]="OUTLIER"})(z3||(z3={}));var pio=R(W(),1);var Vio=R(W(),1);var Jio=R(W(),1);var Tio=R(W(),1);var Wio=R(W(),1);var Fio=R(W(),1);var yio=R(W(),1);var gio=R(W(),1),j3;(function(t){t[t.LAUNCH_SITE=0]="LAUNCH_SITE",t[t.OBSERVATION_STATION=1]="OBSERVATION_STATION",t[t.HOBBYIST_OBSERVER=2]="HOBBYIST_OBSERVER",t[t.RESEARCH_FACILITY=3]="RESEARCH_FACILITY",t[t.SATELLITE_GROUND_STATION=4]="SATELLITE_GROUND_STATION",t[t.SPACEPORT=5]="SPACEPORT",t[t.MILITARY_BASE=6]="MILITARY_BASE",t[t.WEATHER_STATION=7]="WEATHER_STATION",t[t.ASTRONOMICAL_OBSERVATORY=8]="ASTRONOMICAL_OBSERVATORY",t[t.EDUCATIONAL_INSTITUTE=9]="EDUCATIONAL_INSTITUTE",t[t.COMMUNICATION_HUB=10]="COMMUNICATION_HUB",t[t.POWER_PLANT=11]="POWER_PLANT",t[t.INDUSTRIAL_COMPLEX=12]="INDUSTRIAL_COMPLEX",t[t.TRANSPORTATION_HUB=13]="TRANSPORTATION_HUB",t[t.URBAN_AREA=14]="URBAN_AREA",t[t.NATIONAL_PARK=15]="NATIONAL_PARK",t[t.HISTORICAL_SITE=16]="HISTORICAL_SITE",t[t.OTHER=17]="OTHER"})(j3||(j3={}));var _io=R(W(),1);var Pio=R(W(),1);var Oio=R(W(),1),Z1;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(Z1||(Z1={}));var zio=R(W(),1);var $io=R(W(),1);var noo=R(W(),1);var Roo=R(W(),1);var Zoo=R(W(),1);var aoo=R(W(),1);var loo=R(W(),1);var doo=R(W(),1),V1;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(V1||(V1={}));var Foo=R(W(),1);var Coo=R(W(),1);var Goo=R(W(),1),q3;(function(t){t[t.SGP=0]="SGP",t[t.SGP4=1]="SGP4",t[t.SDP4=2]="SDP4",t[t.SGP8=3]="SGP8",t[t.SDP8=4]="SDP8"})(q3||(q3={}));var yoo=R(W(),1);var Qoo=R(W(),1);var xoo=R(W(),1);var Loo=R(W(),1);var Doo=R(W(),1);var voo=R(W(),1);var Hoo=R(W(),1);var joo=R(W(),1);var Pao=R(W(),1);var Oao=R(W(),1);var Lao=R(W(),1);var tao=R(W(),1);var aao=R(W(),1);var nao=R(W(),1);var rao=R(W(),1);var mao=R(W(),1);var $3;(function(t){t[t.NONE=0]="NONE",t[t.MPE=1]="MPE",t[t.OMM=2]="OMM",t[t.PLD=3]="PLD",t[t.RFM=4]="RFM",t[t.CSM=5]="CSM",t[t.OSM=6]="OSM",t[t.CAT=7]="CAT",t[t.CRM=8]="CRM",t[t.SCM=9]="SCM",t[t.TDM=10]="TDM",t[t.IDM=11]="IDM",t[t.MET=12]="MET",t[t.ROC=13]="ROC",t[t.BOV=14]="BOV",t[t.EOP=15]="EOP",t[t.EOO=16]="EOO",t[t.EME=17]="EME",t[t.LDM=18]="LDM",t[t.PNM=19]="PNM",t[t.HYP=20]="HYP",t[t.CTR=21]="CTR",t[t.CDM=22]="CDM",t[t.SIT=23]="SIT",t[t.OEM=24]="OEM",t[t.TIM=25]="TIM",t[t.EPM=26]="EPM",t[t.PRG=27]="PRG"})($3||($3={}));var zao=R(W(),1);var $ao=R(W(),1);var nso=R(W(),1);var aso=R(W(),1);var rso=R(W(),1);var mso=R(W(),1);var eco=R(W(),1);var vdo=R(W(),1);var Hdo=R(W(),1),tz;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(tz||(tz={}));var jdo=R(W(),1);var Eco=R(W(),1);var dco=R(W(),1);var sco=R(W(),1),ez;(function(t){t[t.LIQUID=0]="LIQUID",t[t.SOLID=1]="SOLID",t[t.HYBRID=2]="HYBRID",t[t.ION=3]="ION",t[t.NUCLEAR_THERMAL=4]="NUCLEAR_THERMAL",t[t.OTHER=5]="OTHER"})(ez||(ez={}));var Rco=R(W(),1);var hco=R(W(),1);var uco=R(W(),1);var Fco=R(W(),1);var Pco=R(W(),1);var Yco=R(W(),1);var Jco=R(W(),1);var _co=R(W(),1);var wmo=R(W(),1);var emo=R(W(),1);var qco=R(W(),1);var imo=R(W(),1),nz;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(nz||(nz={}));var amo=R(W(),1),iz;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(iz||(iz={}));var lmo=R(W(),1);var Umo=R(W(),1);var dmo=R(W(),1),oz;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(oz||(oz={}));var mmo=R(W(),1),az;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(az||(az={}));var pmo=R(W(),1);var Tmo=R(W(),1);var ymo=R(W(),1);var gmo=R(W(),1),sz;(function(t){t[t.LAUNCH_SITE=0]="LAUNCH_SITE",t[t.OBSERVATION_STATION=1]="OBSERVATION_STATION",t[t.HOBBYIST_OBSERVER=2]="HOBBYIST_OBSERVER",t[t.RESEARCH_FACILITY=3]="RESEARCH_FACILITY",t[t.SATELLITE_GROUND_STATION=4]="SATELLITE_GROUND_STATION",t[t.SPACEPORT=5]="SPACEPORT",t[t.MILITARY_BASE=6]="MILITARY_BASE",t[t.WEATHER_STATION=7]="WEATHER_STATION",t[t.ASTRONOMICAL_OBSERVATORY=8]="ASTRONOMICAL_OBSERVATORY",t[t.EDUCATIONAL_INSTITUTE=9]="EDUCATIONAL_INSTITUTE",t[t.COMMUNICATION_HUB=10]="COMMUNICATION_HUB",t[t.POWER_PLANT=11]="POWER_PLANT",t[t.INDUSTRIAL_COMPLEX=12]="INDUSTRIAL_COMPLEX",t[t.TRANSPORTATION_HUB=13]="TRANSPORTATION_HUB",t[t.URBAN_AREA=14]="URBAN_AREA",t[t.NATIONAL_PARK=15]="NATIONAL_PARK",t[t.HISTORICAL_SITE=16]="HISTORICAL_SITE",t[t.OTHER=17]="OTHER"})(sz||(sz={}));var kmo=R(W(),1);var Sho=R(W(),1);var cho=R(W(),1);var lho=R(W(),1),yM;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(yM||(yM={}));var pho=R(W(),1);var Vho=R(W(),1);var Who=R(W(),1);var Dho=R(W(),1);var Yho=R(W(),1);var Bho=R(W(),1),lz;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(lz||(lz={}));var Jho=R(W(),1);var{OMMT:VSe,OMMCOLLECTIONT:apo}=sW,{CATT:bSe,CATCOLLECTIONT:spo}=aW;Number.prototype.map=function(t,e,n,i){return(this-t)*(i-n)/(e-t)+n};var oS=class extends qa{constructor(e,n,i,o){super(e),this.constructor.prototype.wasmSchema={},this._position=new Bs,this._spaceCatalog=i,this._wasmModule=n,this._velocity={getValue:(a,s)=>this._velocity.getValueInReferenceFrame(a,0,s),getValueInReferenceFrame:(a,s,l)=>{let r=new Float64Array(n.HEAP8.buffer,i.getVelocity(this.properties.wasmSpaceEntity,rt.toDate(a).getTime(),s!==ri.TEME),3);if(c(l)||(l=new p),l=p.fromArray(r),s===ri.INERTIAL){let d=Pe.computeFixedToIcrfMatrix(a);if(c(d)){let m=new p;ot.multiplyByVector(d,l,m),l=m}}return l}},Object.defineProperty(this,"velocity",{get:()=>this._velocity,set:()=>{}}),Object.defineProperties(this._position,{isConstant:{get:()=>!1},_referenceFrame:{get:()=>this.entityCollection.referenceFrame},referenceFrame:{get:()=>this._referenceFrame}}),this._position.getValue=(a,s)=>this._position.getValueInReferenceFrame(a,0,s),this._position.getValueInReferenceFrame=(a,s,l)=>{let r=new Float64Array(n.HEAP8.buffer,i.getPositionInReferenceFrame(this.properties.wasmSpaceEntity,rt.toDate(a).getTime(),s!==ri.TEME),3);if(c(l)||(l=new p),l=p.fromArray(r),s===ri.INERTIAL){let d=Pe.computeFixedToIcrfMatrix(a);if(c(d)){let m=new p;ot.multiplyByVector(d,l,m),l=m}}return l},this.children={add:a=>(a=this.entityCollection.add(a),this.entityCollection.allValues||(Object.defineProperty(this.entityCollection,"allValues",{get:function(){return this._entities.values}}),Object.defineProperty(this.entityCollection,"values",{get:function(){return this._entities.values.filter(s=>!s._isChild)}})),a._isChild=!0,a.parent=this,a.position=this.position,a),remove:a=>{this.entityCollection.remove(a);let s=this._children.indexOf(this);this._children.splice(s,1)},values:this._children},this.loadOMM(o)}loadOMM(e){let n=new this._wasmModule.PropagatedPositionProperty;n.addOMM(e),this.properties.wasmSpaceEntity=n,this.properties.CAT=this.properties._CAT||new bSe,this.properties._CAT._value.APOGEE=n.apogee,this.properties._CAT._value.PERIGEE=n.perigee,this.properties._CAT._value.PERIOD=n.period_sec,this.properties.OMM=this.properties._OMM||new VSe,this.properties._OMM._value.ECCENTRICITY=n.ecco,this.properties._OMM._value.SEMI_MAJOR_AXIS=n.semi_major_axis/1e3,this.properties._OMM._value.SEMI_MINOR_AXIS=n.semi_minor_axis/1e3,this.array_index=this.properties.wasmSpaceEntity.array_index,this.samplesPerPeriod=180,this.extraEpochSamples=60,this.resolutionAtEpoch=5,this.autoEpochResolution=!0,this.epochBlockSize=.5,this.extraSamples=5,this.eccentricityThreshold=.2,this.targetIntervalCount=20,this._orbitShowing=!1,this._coverageShowing=!1,this.referenceFrame=ri.RIC,this._position._clearCache=!0}get orbitShowing(){return this._orbitShowing}get coverageShowing(){return this._coverageShowing}showCoverage(e={show:!1}){this._coverageShowing=e.show,e.show?this.entityCollection.owner._coverageGroup.push(this):this.entityCollection.owner._coverageGroup.remove({id:this.id})}showOrbit(e={show:!1}){if(this._orbitShowing=e.show,!e.show){this.path=null;return}e&&(e.color=e.material),e?.referenceEntity?this._localReferenceEntity=e.referenceEntity:this._localReferenceEntity=void 0,this.path=this.path||{};let{material:n,width:i,leadTime:o,trailTime:a,resolution:s}=this.path;this.path=Object.assign({},{material:n||v.WHITE,width:i||1.25,leadTime:o||5e3,trailTime:a||5e3,resolution:s||120,show:!0},e);let{ecco:l,period_sec:r}=this.properties.wasmSpaceEntity,d=l{a.filter(l=>l.properties?.pointer).forEach(l=>{this._wasmModule.removeEntity(l.properties.pointer)}),this._entityCollection.referenceFrame=this._viewer?.scene.referenceFrame||this._entityCollection.referenceFrame};this._entityCollection.collectionChanged.addEventListener(n,this),this._orbits={[Co.LEO]:[],[Co.MEO]:[],[Co.HEO]:[],[Co.GEO]:[],[Co.IGO]:[],[Co.EGO]:[],[Co.GEOIADC]:[],[Co.GEOSYNC]:[],[Co.SUNSYNC]:[],[Co.SEMISYNC]:[],[Co.POLAR]:[],[Co.UNKNOWN]:[]}}onAdd(e){~e.getByName(this._coverageGroup.name).length&&e.add(this._coverageGroup)}onRemove(e){e.getByName(this._coverageGroup.name).length&&e.remove(this._coverageGroup)}async load(e){return await this.loadOMM(e,"tle")}loadOMM(e,n,i=!1){if(!e)throw new Ut('The parameter "omm" is required.');if(!n)throw new Ut('The parameter "satcat" is required.');return new Promise(async o=>{let a=await K0.initInstance();if(this._wasmModule=a.wasmModule,this._coverageGroup=this._coverageGroup||new SJ({samples:72,sdc:this,coverageType:1,angle:90,groundCoverageOnly:!1,color:v.LIMEGREEN.withAlpha(.5)}),this.entities.suspendEvents(),this._wasmSatelliteCatalog=this._wasmSatelliteCatalog||a.instance,(e instanceof ArrayBuffer||e instanceof Uint8Array)&&(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),this.OMM=a1(e,"OMM",sW)),(e.RECORDS||Array.isArray(e))&&(this.OMM={RECORDS:e?.RECORDS||e}),!this.OMM)throw Error("OMMCOLLECTIONT invalid");let s=[];this.CAT=new RSe,(n instanceof ArrayBuffer||e instanceof Uint8Array)&&(n instanceof ArrayBuffer&&(n=new Uint8Array(n)),this.CATRAW=a1(n,"CAT",aW)),(n.RECORDS||Array.isArray(n))&&(this.CATRAW={RECORDS:n?.RECORDS||n});for(let l=0;l{t.toBlob(function(a){e._files[n]=a,o()})});return this._promises.push(i),n}return""};function USe(t,e){return function(n){t._files[e]=n}}rz.prototype.model=function(t,e){let n=this._modelCallback;if(!c(n))throw new St("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(t,e,i);for(let a in i)if(i.hasOwnProperty(a)){let s=Promise.resolve(i[a]);this._promises.push(s),s.then(USe(this,a))}return o};Object.defineProperties(rz.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function dz(t){this._time=t}dz.prototype.get=function(t,e,n){let i;return c(t)&&(i=c(t.getValue)?t.getValue(this._time,n):t),f(i,e)};dz.prototype.getColor=function(t,e){let n=this.get(t,e);if(c(n))return sS(n)};dz.prototype.getMaterialType=function(t){if(c(t))return t.getType(this._time)};function Wot(){this._ids={},this._styles={},this._count=0}Wot.prototype.get=function(t){let e=this._ids,n=t.innerHTML;if(c(e[n]))return e[n];let i=`style-${++this._count}`;return t.setAttribute("id",i),i=`#${i}`,e[n]=i,this._styles[n]=t,i};Wot.prototype.save=function(t){let e=this._styles,n=t.childNodes[0];for(let i in e)e.hasOwnProperty(i)&&t.insertBefore(e[i],n)};function qIt(){this._ids={}}qIt.prototype.get=function(t){if(!c(t))return this.get(Si());let e=this._ids;return c(e[t])?`${t.toString()}-${++e[t]}`:(e[t]=0,t)};function fot(t){t=f(t,f.EMPTY_OBJECT);let e=t.entities,n=f(t.kmz,!1),i=fot._createState(t),o=e.values.filter(function(d){return!c(d.parent)}),a=i.kmlDoc,s=a.documentElement;s.setAttributeNS(fSe,"xmlns:gx",eV);let l=a.createElement("Document");s.appendChild(l),t1t(i,l,o),i.styleCache.save(l);let r=i.externalFileHandler;return r.promise.then(function(){let m=new XMLSerializer().serializeToString(i.kmlDoc);return n?GSe(m,r.files):{kml:m,externalFiles:r.files}})}function GSe(t,e){let n=Dn("ThirdParty/Workers/z-worker-pako.js");QI({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new HL,o=new VK(i);return o.add("doc.kml",new $v(t)).then(function(){let a=Object.keys(e);return $It(o,a,e,0)}).then(function(){return o.close()}).then(function(a){return{kmz:a}})}function $It(t,e,n,i){if(e.length===i)return;let o=e[i];return t.add(o,new iW(n[o])).then(function(){return $It(t,e,n,i+1)})}fot._createState=function(t){let e=t.entities,n=new Wot,i=e.computeAvailability(),o=c(t.time)?t.time:i.start,a=f(t.defaultAvailability,i),s=f(t.sampleDuration,60);a.start===Re.MINIMUM_VALUE?a.stop===Re.MAXIMUM_VALUE?a=new ai:rt.addSeconds(a.stop,-10*s,a.start):a.stop===Re.MAXIMUM_VALUE&&rt.addSeconds(a.start,10*s,a.stop);let l=new rz(t.modelCallback);return{kmlDoc:document.implementation.createDocument(WSe,"kml"),ellipsoid:f(t.ellipsoid,mt.WGS84),idManager:new qIt,styleCache:n,externalFileHandler:l,time:o,valueGetter:new dz(o),sampleDuration:s,defaultAvailability:new ys([a])}};function t1t(t,e,n){let i=t.kmlDoc,o=t.styleCache,a=t.valueGetter,s=t.idManager,l=n.length,r,d,m;for(let h=0;h0){let G=i.createElement("Placemark");G.setAttribute("id",s.get(Z.id));let A=Z.name,T=Z.label;if(c(T)){let C=i.createElement("LabelStyle"),y=a.get(T.text);A=c(y)&&y.length>0?y:A;let Y=a.getColor(T.fillColor);c(Y)&&(C.appendChild(ii(i,"color",Y)),C.appendChild(ii(i,"colorMode","normal")));let Q=a.get(T.scale);c(Q)&&C.appendChild(ii(i,"scale",Q)),m.push(C)}G.appendChild(ii(i,"name",A)),G.appendChild(ii(i,"visibility",Z.show)),G.appendChild(ii(i,"description",Z.description)),c(b)&&G.appendChild(b),e.appendChild(G);let g=m.length;if(g>0){let C=i.createElement("Style");for(let y=0;y1){let C=i.createElement("MultiGeometry");for(let y=0;y0){let G=i.createElement("Folder");G.setAttribute("id",s.get(Z.id)),G.appendChild(ii(i,"name",Z.name)),G.appendChild(ii(i,"visibility",Z.show)),G.appendChild(ii(i,"description",Z.description)),e.appendChild(G),t1t(t,G,U)}}}var qm=new p,jc=new gt,tV=new rt;function ASe(t,e,n,i){let o=t.kmlDoc,a=t.ellipsoid,s=t.valueGetter,l=f(e.billboard,e.point);if(!c(l)&&!c(e.path))return;let r=e.position;if(!r.isConstant){e1t(t,e,l,n,i);return}s.get(r,void 0,qm);let d=ii(o,"coordinates",aS(qm,a)),m=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(lS(t,l.heightReference)),m.appendChild(h),m.appendChild(d),n.push(m);let Z=l instanceof Mr?i1t(t,l):n1t(t,l);i.push(Z)}function e1t(t,e,n,i,o){let a=t.kmlDoc,s=t.ellipsoid,l=t.valueGetter,r,d=e.position,m=!0;d instanceof cl?(r=d.intervals,m=!1):r=f(e.availability,t.defaultAvailability);let h=n instanceof JR,Z,b,u,F=[];for(Z=0;Z1){let G=a.createElementNS(eV,"MultiTrack");for(Z=0;Z0&&(a=n);let s=e.coordinates,l=o.get(s),r=[],d=[Gt.northeast,Gt.southeast,Gt.southwest,Gt.northwest];for(let b=0;b<4;++b)d[b](l,jc),r.push(`${k.toDegrees(jc.longitude)},${k.toDegrees(jc.latitude)},${a}`);let m=ii(i,"coordinates",r.join(" ")),h=i.createElement("outerBoundaryIs"),Z=i.createElement("LinearRing");return Z.appendChild(m),h.appendChild(Z),[h]}function zIt(t,e,n,i){let o=t.kmlDoc,a=t.ellipsoid,s=[],l=e.length;for(let m=0;m0&&(a=n);let l=[],r=e.hierarchy,d=o.get(r),m=Array.isArray(d)?d:d.positions,h=i.createElement("outerBoundaryIs");h.appendChild(zIt(t,m,a,s)),l.push(h);let Z=d.holes;if(c(Z)){let b=Z.length;for(let u=0;u0&&r.appendChild(ii(a,"extrude",!0));let m=l?SSe(t,e,d):gSe(t,e,d),h=m.length;for(let U=0;U=0;--i)e+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return e}var Uot=fot;var cuo=R(W(),1),Got="";var W9o=R(W(),1);var puo=R(W(),1);function ISe(t){let e,n=t.name,i=t.message;c(n)&&c(i)?e=`${n}: ${i}`:e=t.toString();let o=t.stack;return c(o)&&(e+=` -${o}`),e}var Qb=ISe;var ZGo=R(W(),1);var IZo=R(W(),1);var FZo=R(W(),1);var Zuo=R(W(),1),NSe={NONE:0,LERC:1},Uu=Object.freeze(NSe);var wuo=R(W(),1);var Cuo=R(W(),1);var buo=R(W(),1),ySe={NONE:0,BITS12:1},yr=Object.freeze(ySe);var rS=new p,BSe=new p,Gu=new K,cz=new L,QSe=new L,kSe=Math.pow(2,12);function sc(t,e,n,i,o,a,s,l,r,d){let m=yr.NONE,h,Z;if(c(e)&&c(n)&&c(i)&&c(o)){let b=e.minimum,u=e.maximum,F=p.subtract(u,b,BSe),U=i-n;Math.max(p.maximumComponent(F),U)0,b=f(t.isGeographic,!0),u=f(t.ellipsoid,mt.WGS84),F=1/u.maximumRadius,U=Gt.clone(t.nativeRectangle),G=Gt.clone(t.rectangle),A,T,g,C;c(G)?(A=G.west,T=G.south,g=G.east,C=G.north):b?(A=l(U.west),T=l(U.south),g=l(U.east),C=l(U.north)):(A=U.west*F,T=s-2*o(a(-U.south*F)),g=U.east*F,C=s-2*o(a(-U.north*F)));let y=t.relativeToCenter,Y=c(y);y=Y?y:p.ZERO;let Q=f(t.includeWebMercatorT,!1),J=f(t.exaggeration,1),M=f(t.exaggerationRelativeHeight,0),E=J!==1,I=f(t.structure,kb.DEFAULT_STRUCTURE),B=f(I.heightScale,kb.DEFAULT_STRUCTURE.heightScale),X=f(I.heightOffset,kb.DEFAULT_STRUCTURE.heightOffset),_=f(I.elementsPerHeight,kb.DEFAULT_STRUCTURE.elementsPerHeight),P=f(I.stride,kb.DEFAULT_STRUCTURE.stride),w=f(I.elementMultiplier,kb.DEFAULT_STRUCTURE.elementMultiplier),z=f(I.isBigEndian,kb.DEFAULT_STRUCTURE.isBigEndian),H=Gt.computeWidth(U),nt=Gt.computeHeight(U),$=H/(d-1),dt=nt/(m-1);b||(H*=F,nt*=F);let q=u.radiiSquared,at=q.x,st=q.y,Et=q.z,Qt=65536,Wt=-65536,Nt=Pe.eastNorthUpToFixedFrame(y,u),kt=L.inverseTransformation(Nt,xSe),Mt,qt;Q&&(Mt=Yo.geodeticLatitudeToMercatorAngle(T),qt=1/(Yo.geodeticLatitudeToMercatorAngle(C)-Mt));let ie=XSe;ie.x=Number.POSITIVE_INFINITY,ie.y=Number.POSITIVE_INFINITY,ie.z=Number.POSITIVE_INFINITY;let oe=JSe;oe.x=Number.NEGATIVE_INFINITY,oe.y=Number.NEGATIVE_INFINITY,oe.z=Number.NEGATIVE_INFINITY;let He=Number.POSITIVE_INFINITY,rn=d*m,de=h>0?d*2+m*2:0,zt=rn+de,ke=new Array(zt),ue=new Array(zt),We=new Array(zt),un=Q?new Array(zt):[],Ct=E?new Array(zt):[],_t=0,Je=m,xe=0,oo=d;Z&&(--_t,++Je,--xe,++oo);let ea=1e-5;for(let Ze=_t;Ze=m&&(Ke=m-1);let An=U.north-dt*Ke;b?An=l(An):An=s-2*o(a(-An*F));let si=(An-T)/(C-T);si=k.clamp(si,0,1);let da=Ze===_t,_a=Ze===Je-1;h>0&&(da?An+=ea*nt:_a&&(An-=ea*nt));let bl=e(An),na=n(An),Go=Et*na,Ao;Q&&(Ao=(Yo.geodeticLatitudeToMercatorAngle(An)-Mt)*qt);for(let Xs=xe;Xs=d&&(Es=d-1);let wl=Ke*(d*P)+Es*P,ka;if(_===1)ka=r[wl];else{ka=0;let ma;if(z)for(ma=0;ma<_;++ma)ka=ka*w+r[wl+ma];else for(ma=_-1;ma>=0;--ma)ka=ka*w+r[wl+ma]}ka=ka*B+X,Wt=Math.max(Wt,ka),Qt=Math.min(Qt,ka);let Wa=U.west+$*Es;b?Wa=l(Wa):Wa=Wa*F;let Ju=(Wa-A)/(g-A);Ju=k.clamp(Ju,0,1);let yl=Ke*d+Es;if(h>0){let ma=Xs===xe,Ed=Xs===oo-1,BW=da||_a||ma||Ed;if((da||_a)&&(ma||Ed))continue;BW&&(ka-=h,ma?(yl=rn+(m-Ke-1),Wa-=ea*H):_a?yl=rn+m+(d-Es-1):Ed?(yl=rn+m+d+Ke,Wa+=ea*H):da&&(yl=rn+m+d+m+Es))}let Bi=bl*e(Wa),sd=bl*n(Wa),zi=at*Bi,js=st*sd,$n=1/i(zi*Bi+js*sd+Go*na),mr=zi*$n,hr=js*$n,pr=Go*$n,hs=new p;hs.x=mr+Bi*ka,hs.y=hr+sd*ka,hs.z=pr+na*ka,L.multiplyByPoint(kt,hs,Aot),p.minimumByComponent(Aot,ie,ie),p.maximumByComponent(Aot,oe,oe),He=Math.min(He,ka),ke[yl]=hs,We[yl]=new K(Ju,si),ue[yl]=ka,Q&&(un[yl]=Ao),E&&(Ct[yl]=u.geodeticSurfaceNormal(hs))}}let gs=Ft.fromPoints(ke),is;c(G)&&(is=ci.fromRectangle(G,Qt,Wt,u));let ja;Y&&(ja=new BZ(u).computeHorizonCullingPointPossiblyUnderEllipsoid(y,ke,Qt));let qn=new Ff(ie,oe,y),ae=new lc(y,qn,He,Wt,Nt,!1,Q,E,J,M),fe=new Float32Array(zt*ae.stride),ge=0;for(let Ze=0;Ze0?T=El.getRegularGridAndSkirtIndicesAndEdgeIndices(A.gridWidth,A.gridHeight):T=El.getRegularGridIndicesAndEdgeIndices(A.gridWidth,A.gridHeight);let g=A.gridWidth*A.gridHeight;return G._mesh=new Au(h,new Float32Array(A.vertices),T.indices,T.indexCountWithoutSkirts,g,A.minimumHeight,A.maximumHeight,Ft.clone(A.boundingSphere3D),p.clone(A.occludeePointInScaledSpace),A.numberOfAttributes,ci.clone(A.orientedBoundingBox),lc.clone(A.encoding),T.westIndicesSouthToNorth,T.southIndicesEastToWest,T.eastIndicesNorthToSouth,T.northIndicesWestToEast),G._buffer=void 0,G._mesh})};lW.prototype._createMeshSync=function(t){let e=t.tilingScheme,n=t.x,i=t.y,o=t.level,a=f(t.exaggeration,1),s=f(t.exaggerationRelativeHeight,0),l=e.ellipsoid,r=e.tileXYToNativeRectangle(n,i,o),d=e.tileXYToRectangle(n,i,o),m=l.cartographicToCartesian(Gt.center(d)),h=this._structure,b=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(l,this._width,e.getNumberOfXTilesAtLevel(0))/(1<0?F=El.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):F=El.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let U=u.gridWidth*u.gridHeight;return this._mesh=new Au(m,u.vertices,F.indices,F.indexCountWithoutSkirts,U,u.minimumHeight,u.maximumHeight,u.boundingSphere3D,u.occludeePointInScaledSpace,u.encoding.stride,u.orientedBoundingBox,u.encoding,F.westIndicesSouthToNorth,F.southIndicesEastToWest,F.eastIndicesNorthToSouth,F.northIndicesWestToEast),this._mesh};lW.prototype.interpolateHeight=function(t,e,n){let i=this._width,o=this._height,a=this._structure,s=a.stride,l=a.elementsPerHeight,r=a.elementMultiplier,d=a.isBigEndian,m=a.heightOffset,h=a.heightScale,Z=c(this._mesh),b=this._encoding===Uu.LERC;if(!Z&&b)return;let F;if(Z){let U=this._mesh.vertices,G=this._mesh.encoding;F=h1t(U,G,m,h,t,i,o,e,n)}else F=DSe(this._buffer,l,r,s,d,t,i,o,e,n),F=F*h+m;return F};lW.prototype.upsample=function(t,e,n,i,o,a,s){let l=this._mesh;if(!c(l))return;let r=this._width,d=this._height,m=this._structure,h=m.stride,Z=new this._bufferType(r*d*h),b=l.vertices,u=l.encoding,F=t.tileXYToRectangle(e,n,i),U=t.tileXYToRectangle(o,a,s),G=m.heightOffset,A=m.heightScale,T=m.elementsPerHeight,g=m.elementMultiplier,C=m.isBigEndian,y=Math.pow(g,T-1);for(let Y=0;Ym.highestEncodedHeight?m.highestEncodedHeight:V,OSe(Z,T,g,y,h,C,Y*r+J,V)}}return Promise.resolve(new lW({buffer:Z,width:r,height:d,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};lW.prototype.isChildAvailable=function(t,e,n,i){let o=2;return n!==t*2&&++o,i!==e*2&&(o-=2),(this._childTileMask&1<=s&&(b=s-1,Z=s-2);let u=h|0,F=u+1;F>=l&&(F=l-1,u=l-2);let U=m-Z,G=h-u;u=l-1-u,F=l-1-F;let A=uz(t,e,n,i,o,u*s+Z),T=uz(t,e,n,i,o,u*s+b),g=uz(t,e,n,i,o,F*s+Z),C=uz(t,e,n,i,o,F*s+b);return p1t(U,G,A,T,g,C)}function h1t(t,e,n,i,o,a,s,l,r){let d=(l-o.west)*(a-1)/(o.east-o.west),m=(r-o.south)*(s-1)/(o.north-o.south),h=d|0,Z=h+1;Z>=a&&(Z=a-1,h=a-2);let b=m|0,u=b+1;u>=s&&(u=s-1,b=s-2);let F=d-h,U=m-b;b=s-1-b,u=s-1-u;let G=(e.decodeHeight(t,b*a+h)-n)/i,A=(e.decodeHeight(t,b*a+Z)-n)/i,T=(e.decodeHeight(t,u*a+h)-n)/i,g=(e.decodeHeight(t,u*a+Z)-n)/i;return p1t(F,U,G,A,T,g)}function p1t(t,e,n,i,o,a){return e=0;--l)s=s*n+t[a+l];return s}function OSe(t,e,n,i,o,a,s,l){s*=o;let r;if(a)for(r=0;r0;--r)t[s+r]=l/i|0,l-=t[s+r]*i,i/=n;t[s+r]=l}var Gd=lW;function R1(t){t=f(t,f.EMPTY_OBJECT),this._tilingScheme=t.tilingScheme,c(this._tilingScheme)||(this._tilingScheme=new Qo({ellipsoid:f(t.ellipsoid,mt.WGS84)})),this._levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new It}Object.defineProperties(R1.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});R1.prototype.requestTileGeometry=function(t,e,n,i){return Promise.resolve(new Gd({buffer:new Uint8Array(16*16),width:16,height:16}))};R1.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<=3&&(this._frontFaceColorCommand.vertexArray=NUe(this,e),this._backFaceColorCommand.vertexArray=this._frontFaceColorCommand.vertexArray,this._pickCommand.vertexArray=this._frontFaceColorCommand.vertexArray)}if(!c(this._frontFaceColorCommand.vertexArray))return;let a=t.passes,s=!L.equals(this.modelMatrix,this._modelMatrix);s&&L.clone(this.modelMatrix,this._modelMatrix),(o||s)&&Ft.transform(this._boundingSphere,this.modelMatrix,this._boundingSphereWC),this._frontFaceColorCommand.modelMatrix=this.modelMatrix,this._backFaceColorCommand.modelMatrix=this._frontFaceColorCommand.modelMatrix,this._pickCommand.modelMatrix=this._frontFaceColorCommand.modelMatrix;let l=this._lateralSurfaceMaterial!==this.lateralSurfaceMaterial;if(this._lateralSurfaceMaterial=this.lateralSurfaceMaterial,this._lateralSurfaceMaterial.update(e),a.render){let r=this._frontFaceColorCommand,d=this._backFaceColorCommand;if(l||!c(r.shaderProgram)){let m=new Ze({sources:[wI,this._lateralSurfaceMaterial.shaderSource,PI]});r.shaderProgram=xn.replaceCache({context:e,shaderProgram:r.shaderProgram,vertexShaderSource:vI,fragmentShaderSource:m,attributeLocations:C3}),r.uniformMap=ze(this._uniforms,this._lateralSurfaceMaterial._uniforms),d.shaderProgram=r.shaderProgram,d.uniformMap=ze(this._uniforms,this._lateralSurfaceMaterial._uniforms),d.uniformMap.u_normalDirection=function(){return-1}}i?n.push(this._backFaceColorCommand,this._frontFaceColorCommand):n.push(this._frontFaceColorCommand)}if(a.pick){let r=this._pickCommand;if((!c(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=e.createPickId({primitive:this._pickPrimitive,id:this.id})),l||!c(r.shaderProgram)){let d=new Ze({sources:[wI,this._lateralSurfaceMaterial.shaderSource,PI],pickColorQualifier:"uniform"});r.shaderProgram=xn.replaceCache({context:e,shaderProgram:r.shaderProgram,vertexShaderSource:vI,fragmentShaderSource:d,attributeLocations:C3});let m=this,h={czm_pickColor:function(){return m._pickId.color}};r.uniformMap=ze(ze(this._uniforms,this._lateralSurfaceMaterial._uniforms),h)}r.pass=i?Pt.TRANSLUCENT:Pt.OPAQUE,n.push(r)}};aM.prototype.isDestroyed=function(){return!1};aM.prototype.destroy=function(){return this._frontFaceColorCommand.vertexArray=this._frontFaceColorCommand.vertexArray&&this._frontFaceColorCommand.vertexArray.destroy(),this._frontFaceColorCommand.shaderProgram=this._frontFaceColorCommand.shaderProgram&&this._frontFaceColorCommand.shaderProgram.destroy(),this._pickCommand.shaderProgram=this._pickCommand.shaderProgram&&this._pickCommand.shaderProgram.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),At(this)};var Ku=aM;var $Li=b(W(),1);function ac(t,e,n){let i=e[t.id];if(c(i)){let o=i.primitive;n.remove(o),o.isDestroyed()||o.destroy(),delete e[t.id]}}var yUe=v.WHITE,BUe=1,QUe=Number.POSITIVE_INFINITY,kUe=new ot,YUe=new p,xUe=new wt;function KI(t,e,n,i){let o=e[t];c(o)||(o=new Oc,e[t]=o),o.clock=n,o.cone=i,o.magnitude=1}function XUe(t,e,n,i,o){let a=t.directions,s,l=0,r=k.toRadians(2);if(e===0&&n===k.TWO_PI)for(s=0;se;s-=r)KI(l++,a,s,i);KI(l++,a,e,i)}else KI(l++,a,n,0)}a.length=l,t.directions=a}var zI=function(t,e){if(!c(t))throw new Ut("scene is required.");if(!c(e))throw new Ut("entityCollection is required.");e.collectionChanged.addEventListener(zI.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._hash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])};zI.prototype.update=function(t){if(!c(t))throw new Ut("time is required.");let e=this._entitiesToVisualize.values,n=this._hash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)ac(t[i],e,n);return At(this)};zI.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._hash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._conicSensor)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._conicSensor)&&c(a._position)?s.set(a.id,a):(ac(a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],ac(a,l,r),s.remove(a.id)};var LS=zI;var gMi=b(W(),1);var MS=class extends oW{constructor(e){super(e),this._directions=void 0,this._directionsSubscription=void 0,this._lateralSurfaceMaterial=void 0,this._lateralSurfaceMaterialSubscription=void 0,this._intersectionColor=void 0,this._intersectionColorSubscription=void 0,this._intersectionWidth=void 0,this._intersectionWidthSubscription=void 0,this._showIntersection=void 0,this._showIntersectionSubscription=void 0,this._radius=void 0,this._radiusSubscription=void 0,this._show=void 0,this._showSubscription=void 0,this._definitionChanged=new It,this.merge(f(e,f.EMPTY_OBJECT))}};Object.defineProperties(MS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},directions:ft("directions"),lateralSurfaceMaterial:la("lateralSurfaceMaterial"),intersectionColor:ft("intersectionColor"),intersectionWidth:ft("intersectionWidth"),showIntersection:ft("showIntersection"),radius:ft("radius"),show:ft("show")});MS.prototype.clone=function(t){return c(t)||(t=new MS),t.directions=this.directions,t.radius=this.radius,t.show=this.show,t.showIntersection=this.showIntersection,t.intersectionColor=this.intersectionColor,t.intersectionWidth=this.intersectionWidth,t.lateralSurfaceMaterial=this.lateralSurfaceMaterial,t};MS.prototype.merge=function(t){if(!c(t))throw new Ut("source is required.");this.directions=f(this.directions,t.directions),this.radius=f(this.radius,t.radius),this.show=f(this.show,t.show),this.showIntersection=f(this.showIntersection,t.showIntersection),this.intersectionColor=f(this.intersectionColor,t.intersectionColor),this.intersectionWidth=f(this.intersectionWidth,t.intersectionWidth),this.lateralSurfaceMaterial=f(this.lateralSurfaceMaterial,t.lateralSurfaceMaterial)};var _S=MS;var OMi=b(W(),1);var JUe=v.WHITE,LUe=1,MUe=Number.POSITIVE_INFINITY,_Ue=new ot,DUe=new p,OUe=new wt,jI=function(t,e){if(!c(t))throw new Ut("scene is required.");if(!c(e))throw new Ut("entityCollection is required.");e.collectionChanged.addEventListener(jI.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._hash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])};jI.prototype.update=function(t){if(!c(t))throw new Ut("time is required.");let e=this._entitiesToVisualize.values,n=this._hash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)ac(t[i],e,n);return At(this)};jI.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._hash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._customPatternSensor)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._customPatternSensor)&&c(a._position)?s.set(a.id,a):(ac(a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],ac(a,l,r),s.remove(a.id)};var DS=jI;var $Mi=b(W(),1);var OS=class extends oW{constructor(e={}){super(e),this._definitionChanged=new It,this.xHalfAngle=e.xHalfAngle,this._xHalfAngleSubscription=void 0,this.yHalfAngle=e.yHalfAngle,this._yHalfAngleSubscription=void 0,this.lateralSurfaceMaterial=e.lateralSurfaceMaterial,this._lateralSurfaceMaterialSubscription=void 0,this.intersectionColor=e.intersectionColor,this._intersectionColorSubscription=void 0,this.intersectionWidth=e.intersectionWidth,this._intersectionWidthSubscription=void 0,this.showIntersection=e.showIntersection,this._showIntersectionSubscription=void 0,this.radius=e.radius,this._radiusSubscription=void 0,this.show=e.show,this._showSubscription=void 0}};Object.defineProperties(OS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},xHalfAngle:ft("xHalfAngle"),yHalfAngle:ft("yHalfAngle"),lateralSurfaceMaterial:la("lateralSurfaceMaterial"),intersectionColor:ft("intersectionColor"),intersectionWidth:ft("intersectionWidth"),showIntersection:ft("showIntersection"),radius:ft("radius"),show:ft("show")});OS.prototype.clone=function(t){return c(t)||(t=new OS),t.xHalfAngle=this.xHalfAngle,t.yHalfAngle=this.yHalfAngle,t.radius=this.radius,t.show=this.show,t.showIntersection=this.showIntersection,t.intersectionColor=this.intersectionColor,t.intersectionWidth=this.intersectionWidth,t.lateralSurfaceMaterial=this.lateralSurfaceMaterial,t};OS.prototype.merge=function(t){if(!c(t))throw new Ut("source is required.");this.xHalfAngle=f(this.xHalfAngle,t.xHalfAngle),this.yHalfAngle=f(this.yHalfAngle,t.yHalfAngle),this.radius=f(this.radius,t.radius),this.show=f(this.show,t.show),this.showIntersection=f(this.showIntersection,t.showIntersection),this.intersectionColor=f(this.intersectionColor,t.intersectionColor),this.intersectionWidth=f(this.intersectionWidth,t.intersectionWidth),this.lateralSurfaceMaterial=f(this.lateralSurfaceMaterial,t.lateralSurfaceMaterial)};var HS=OS;var g_i=b(W(),1);var d_i=b(W(),1);function I3(t,e,n,i){let o=e[t];c(o)||(o=new Oc,e[t]=o),o.clock=n,o.cone=i,o.magnitude=1}function zit(t){let e=t._customSensor.directions,n=Math.tan(Math.min(t._xHalfAngle,k.toRadians(89))),i=Math.tan(Math.min(t._yHalfAngle,k.toRadians(89))),o=Math.atan(n/i),a=Math.atan(Math.sqrt(n*n+i*i));I3(0,e,o,a),I3(1,e,k.toRadians(180)-o,a),I3(2,e,k.toRadians(180)+o,a),I3(3,e,-o,a),e.length=4,t._customSensor.directions=e}var wS=class{constructor(e){e=f(e,f.EMPTY_OBJECT);let n=Re(e);n._pickPrimitive=f(e._pickPrimitive,this),n.directions=void 0,this._customSensor=new Ku(n),this._xHalfAngle=f(e.xHalfAngle,k.PI_OVER_TWO),this._yHalfAngle=f(e.yHalfAngle,k.PI_OVER_TWO),zit(this)}};Object.defineProperties(wS.prototype,{xHalfAngle:{get:function(){return this._xHalfAngle},set:function(t){if(t>k.PI_OVER_TWO)throw new Ut("xHalfAngle must be less than or equal to 90 degrees.");this._xHalfAngle!==t&&(this._xHalfAngle=t,zit(this))}},yHalfAngle:{get:function(){return this._yHalfAngle},set:function(t){if(t>k.PI_OVER_TWO)throw new Ut("yHalfAngle must be less than or equal to 90 degrees.");this._yHalfAngle!==t&&(this._yHalfAngle=t,zit(this))}},show:{get:function(){return this._customSensor.show},set:function(t){this._customSensor.show=t}},showIntersection:{get:function(){return this._customSensor.showIntersection},set:function(t){this._customSensor.showIntersection=t}},showThroughEllipsoid:{get:function(){return this._customSensor.showThroughEllipsoid},set:function(t){this._customSensor.showThroughEllipsoid=t}},modelMatrix:{get:function(){return this._customSensor.modelMatrix},set:function(t){this._customSensor.modelMatrix=t}},radius:{get:function(){return this._customSensor.radius},set:function(t){this._customSensor.radius=t}},lateralSurfaceMaterial:{get:function(){return this._customSensor.lateralSurfaceMaterial},set:function(t){this._customSensor.lateralSurfaceMaterial=t}},intersectionColor:{get:function(){return this._customSensor.intersectionColor},set:function(t){this._customSensor.intersectionColor=t}},intersectionWidth:{get:function(){return this._customSensor.intersectionWidth},set:function(t){this._customSensor.intersectionWidth=t}},id:{get:function(){return this._customSensor.id},set:function(t){this._customSensor.id=t}}});wS.prototype.update=function(t){this._customSensor.update(t)};wS.prototype.isDestroyed=function(){return!1};wS.prototype.destroy=function(){return this._customSensor=this._customSensor&&this._customSensor.destroy(),At(this)};var PS=wS;var HUe=v.WHITE,wUe=1,PUe=Number.POSITIVE_INFINITY,vUe=new ot,KUe=new p,zUe=new wt,qI=function(t,e){if(!c(t))throw new Ut("scene is required.");if(!c(e))throw new Ut("entityCollection is required.");e.collectionChanged.addEventListener(qI.prototype._onCollectionChanged,this),this._scene=t,this._primitives=t.primitives,this._entityCollection=e,this._hash={},this._entitiesToVisualize=new qe,this._onCollectionChanged(e,e.values,[],[])};qI.prototype.update=function(t){if(!c(t))throw new Ut("time is required.");let e=this._entitiesToVisualize.values,n=this._hash,i=this._primitives;for(let o=0,a=e.length;o-1;i--)ac(t[i],e,n);return At(this)};qI.prototype._onCollectionChanged=function(t,e,n,i){let o,a,s=this._entitiesToVisualize,l=this._hash,r=this._primitives;for(o=e.length-1;o>-1;o--)a=e[o],c(a._rectangularSensor)&&c(a._position)&&s.set(a.id,a);for(o=i.length-1;o>-1;o--)a=i[o],c(a._rectangularSensor)&&c(a._position)?s.set(a.id,a):(ac(a,l,r),s.remove(a.id));for(o=n.length-1;o>-1;o--)a=n[o],ac(a,l,r),s.remove(a.id)};var vS=qI;var WV=O0.processPacketData,jUe=O0.processMaterialPacketData;function iCt(t,e,n,i,o){let a,s,l=[],r=e.unitSpherical,d=e.spherical,m=e.unitCartesian,h=e.cartesian;if(c(r)){for(a=0,s=r.length;ae[1]!=t[o][1]>e[1]&&e[0]<(t[o][0]-t[i][0])*(e[1]-t[i][1])/(t[o][1]-t[i][1])+t[i][0]&&(n=!n),o=i;return n}function sIt(t){return[t.x,t.y]}function lIt(t,e,n){let i=p.subtract(t,e,new p),o=p.dot(i,n),a=p.multiplyByScalar(n,o,new p);return p.subtract(t,a,new p)}function uAe(t,e,n){if(!t||!e||e.length===0)return!1;e=e.map(F=>new p(F[0],F[1],F[2]));let i=e.slice().sort((F,U)=>p.distance(n,U)-p.distance(n,F)),[o,a,s]=i.slice(0,3),l=p.subtract(a,o,new p),r=p.subtract(s,o,new p),d=p.cross(l,r,new p);p.normalize(d,d);let m=p.negate(d,new p),h=e.map(F=>lIt(F,t,m)),u=lIt(t,t,m),R=h.map(sIt);return VAe(R,sIt(u))}var lM=uAe;function ZAe(t,e,n){if(!t||!e||e.length===0)return!1;let i=e[0],o=e[1],a=[t.x,t.y,t.z],s=[n,...i].map(m=>[m.x,m.y,m.z]),l=[...o].map(m=>[m.x,m.y,m.z]);if(!lM(t,l,n))return!1;let r=(0,M3.default)(s);return!!(0,M3.isPointInsideHull)(a,s,r)}var rM=ZAe;KS();var dot={ConicSensorGraphics:XS,ConicSensorVisualizer:LS,CustomPatternSensorGraphics:_S,CustomPatternSensorVisualizer:DS,CustomSensorVolume:Ku,RectangularPyramidSensorVolume:PS,RectangularSensorGraphics:HS,RectangularSensorVisualizer:vS,initialize:KS,sensorStateInstance:JS,isPointIn3D:rM};var gpo=b(W(),1);var rpo=b(W(),1);var T5i=b(W(),1);var Ot={};vO(Ot,{Builder:()=>_3,ByteBuffer:()=>qS,Encoding:()=>o1,FILE_IDENTIFIER_LENGTH:()=>$h,SIZEOF_INT:()=>jm,SIZEOF_SHORT:()=>i1,SIZE_PREFIX_LENGTH:()=>xt,float32:()=>dM,float64:()=>cM,int32:()=>ju,isLittleEndian:()=>jS});var Z5i=b(W());var n5i=b(W()),i1=2,jm=4,$h=4,xt=4;var o5i=b(W()),ju=new Int32Array(2),dM=new Float32Array(ju.buffer),cM=new Float64Array(ju.buffer),jS=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;var s5i=b(W()),o1;(function(t){t[t.UTF8_BYTES=1]="UTF8_BYTES",t[t.UTF16_STRING=2]="UTF16_STRING"})(o1||(o1={}));var u5i=b(W());var m5i=b(W());var qS=class t{constructor(e){this.bytes_=e,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(e){return new t(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return BigInt.asIntN(64,BigInt(this.readUint32(e))+(BigInt(this.readUint32(e+4))<>8}writeUint16(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8}writeInt32(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8,this.bytes_[e+2]=n>>16,this.bytes_[e+3]=n>>24}writeUint32(e,n){this.bytes_[e]=n,this.bytes_[e+1]=n>>8,this.bytes_[e+2]=n>>16,this.bytes_[e+3]=n>>24}writeInt64(e,n){this.writeInt32(e,Number(BigInt.asIntN(32,n))),this.writeInt32(e+4,Number(BigInt.asIntN(32,n>>BigInt(32))))}writeUint64(e,n){this.writeUint32(e,Number(BigInt.asUintN(32,n))),this.writeUint32(e+4,Number(BigInt.asUintN(32,n>>BigInt(32))))}writeFloat32(e,n){dM[0]=n,this.writeInt32(e,ju[0])}writeFloat64(e,n){cM[0]=n,this.writeInt32(e,ju[jS?0:1]),this.writeInt32(e+4,ju[jS?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=e);let i=~(this.bb.capacity()-this.space+n)+1&e-1;for(;this.space=0&&this.vtable[n]==0;n--);let i=n+1;for(;n>=0;n--)this.addInt16(this.vtable[n]!=0?e-this.vtable[n]:0);let o=2;this.addInt16(e-this.object_start);let a=(i+o)*2;this.addInt16(a);let s=0,l=this.space;t:for(n=0;n=0;s--)this.writeInt8(a.charCodeAt(s))}this.prep(this.minalign,4+o),this.addOffset(e),o&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,n){this.finish(e,n,!0)}requiredField(e,n){let i=this.bb.capacity()-e,o=i-this.bb.readInt32(i);if(!(n{t=new Uint8Array(t);let i=new n[`${e}COLLECTIONT`];return n[`${e}COLLECTION`][`getRootAs${e}COLLECTION`](new RAe(t)).unpackTo(i),i};var vho=b(W(),1);var k5i=b(W(),1);var E5i=b(W(),1);var N5i=b(W(),1);var aW={};vO(aW,{Band:()=>yR,BandT:()=>hM,CAT:()=>rU,CATCOLLECTION:()=>s1,CATCOLLECTIONT:()=>RM,CATT:()=>ZM,DataMode:()=>$F,DeviceType:()=>tU,FrequencyRange:()=>qu,FrequencyRangeT:()=>mM,IDM:()=>Wo,IDMCOLLECTION:()=>l1,IDMCOLLECTIONT:()=>bM,IDMT:()=>VM,PLD:()=>BR,PLDCOLLECTION:()=>r1,PLDCOLLECTIONT:()=>WM,PLDT:()=>uM,PolarizationType:()=>eU,SimplePolarization:()=>nU,StokesParameters:()=>$S,StokesParametersT:()=>pM,dataStatusCode:()=>iU,massType:()=>oU,objectType:()=>aU,opsStatusCode:()=>sU,orbitType:()=>lU});var XDi=b(W(),1);var _5i=b(W(),1);var J5i=b(W(),1);var qu=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsFrequencyRange(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsFrequencyRange(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}LOWER(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat64(this.bb_pos+e):0}static startFrequencyRange(e){e.startObject(2)}static addLower(e,n){e.addFieldFloat64(0,n,0)}static addUpper(e,n){e.addFieldFloat64(1,n,0)}static endFrequencyRange(e){return e.endObject()}static createFrequencyRange(e,n,i){return t.startFrequencyRange(e),t.addLower(e,n),t.addUpper(e,i),t.endFrequencyRange(e)}unpack(){return new mM(this.LOWER(),this.UPPER())}unpackTo(e){e.LOWER=this.LOWER(),e.UPPER=this.UPPER()}},mM=class{constructor(e=0,n=0){this.LOWER=e,this.UPPER=n}pack(e){return qu.createFrequencyRange(e,this.LOWER,this.UPPER)}};var yR=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsBand(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsBand(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}NAME(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}FREQUENCY_RANGE(e){let n=this.bb.__offset(this.bb_pos,6);return n?(e||new qu).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}static startBand(e){e.startObject(2)}static addName(e,n){e.addFieldOffset(0,n,0)}static addFrequencyRange(e,n){e.addFieldOffset(1,n,0)}static endBand(e){return e.endObject()}unpack(){return new hM(this.NAME(),this.FREQUENCY_RANGE()!==null?this.FREQUENCY_RANGE().unpack():null)}unpackTo(e){e.NAME=this.NAME(),e.FREQUENCY_RANGE=this.FREQUENCY_RANGE()!==null?this.FREQUENCY_RANGE().unpack():null}},hM=class{constructor(e=null,n=null){this.NAME=e,this.FREQUENCY_RANGE=n}pack(e){let n=this.NAME!==null?e.createString(this.NAME):0,i=this.FREQUENCY_RANGE!==null?this.FREQUENCY_RANGE.pack(e):0;return yR.startBand(e),yR.addName(e,n),yR.addFrequencyRange(e,i),yR.endBand(e)}};var EDi=b(W(),1);var cDi=b(W(),1);var lDi=b(W(),1);var O5i=b(W(),1),$F;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})($F||($F={}));var w5i=b(W(),1),tU;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(tU||(tU={}));var v5i=b(W(),1),eU;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(eU||(eU={}));var z5i=b(W(),1),nU;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(nU||(nU={}));var q5i=b(W(),1);var $S=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsStokesParameters(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsStokesParameters(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}I(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readFloat64(this.bb_pos+e):0}Q(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat64(this.bb_pos+e):0}U(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readFloat64(this.bb_pos+e):0}V(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readFloat64(this.bb_pos+e):0}static startStokesParameters(e){e.startObject(4)}static addI(e,n){e.addFieldFloat64(0,n,0)}static addQ(e,n){e.addFieldFloat64(1,n,0)}static addU(e,n){e.addFieldFloat64(2,n,0)}static addV(e,n){e.addFieldFloat64(3,n,0)}static endStokesParameters(e){return e.endObject()}static createStokesParameters(e,n,i,o,a){return t.startStokesParameters(e),t.addI(e,n),t.addQ(e,i),t.addU(e,o),t.addV(e,a),t.endStokesParameters(e)}unpack(){return new pM(this.I(),this.Q(),this.U(),this.V())}unpackTo(e){e.I=this.I(),e.Q=this.Q(),e.U=this.U(),e.V=this.V()}},pM=class{constructor(e=0,n=0,i=0,o=0){this.I=e,this.Q=n,this.U=i,this.V=o}pack(e){return $S.createStokesParameters(e,this.I,this.Q,this.U,this.V)}};var Wo=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsIDM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsIDM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$IDM")}ID(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}NAME(e){let n=this.bb.__offset(this.bb_pos,6);return n?this.bb.__string(this.bb_pos+n,e):null}DATA_MODE(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readInt8(this.bb_pos+e):$F.REAL}UPLINK(e){let n=this.bb.__offset(this.bb_pos,10);return n?(e||new qu).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}DOWNLINK(e){let n=this.bb.__offset(this.bb_pos,12);return n?(e||new qu).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}BEACON(e){let n=this.bb.__offset(this.bb_pos,14);return n?(e||new qu).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}BAND(e,n){let i=this.bb.__offset(this.bb_pos,16);return i?(n||new yR).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}bandLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}POLARIZATION_TYPE(){let e=this.bb.__offset(this.bb_pos,18);return e?this.bb.readInt8(this.bb_pos+e):eU.linear}SIMPLE_POLARIZATION(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readInt8(this.bb_pos+e):nU.vertical}STOKES_PARAMETERS(e){let n=this.bb.__offset(this.bb_pos,22);return n?(e||new $S).__init(this.bb.__indirect(this.bb_pos+n),this.bb):null}POWER_REQUIRED(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.readFloat64(this.bb_pos+e):0}POWER_TYPE(e){let n=this.bb.__offset(this.bb_pos,26);return n?this.bb.__string(this.bb_pos+n,e):null}TRANSMIT(){let e=this.bb.__offset(this.bb_pos,28);return e?!!this.bb.readInt8(this.bb_pos+e):!1}RECEIVE(){let e=this.bb.__offset(this.bb_pos,30);return e?!!this.bb.readInt8(this.bb_pos+e):!1}SENSOR_TYPE(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.readInt8(this.bb_pos+e):tU.UNKNOWN}SOURCE(e){let n=this.bb.__offset(this.bb_pos,34);return n?this.bb.__string(this.bb_pos+n,e):null}LAST_OB_TIME(e){let n=this.bb.__offset(this.bb_pos,36);return n?this.bb.__string(this.bb_pos+n,e):null}LOWER_LEFT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,38);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_LEFT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,40);return e?this.bb.readFloat64(this.bb_pos+e):0}LOWER_RIGHT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.readFloat64(this.bb_pos+e):0}LOWER_LEFT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_RIGHT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_RIGHT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.readFloat64(this.bb_pos+e):0}LOWER_RIGHT_AZIMUTH_LIMIT(){let e=this.bb.__offset(this.bb_pos,50);return e?this.bb.readFloat64(this.bb_pos+e):0}UPPER_LEFT_ELEVATION_LIMIT(){let e=this.bb.__offset(this.bb_pos,52);return e?this.bb.readFloat64(this.bb_pos+e):0}RIGHT_GEO_BELT_LIMIT(){let e=this.bb.__offset(this.bb_pos,54);return e?this.bb.readFloat64(this.bb_pos+e):0}LEFT_GEO_BELT_LIMIT(){let e=this.bb.__offset(this.bb_pos,56);return e?this.bb.readFloat64(this.bb_pos+e):0}MAGNITUDE_LIMIT(){let e=this.bb.__offset(this.bb_pos,58);return e?this.bb.readFloat64(this.bb_pos+e):0}TASKABLE(){let e=this.bb.__offset(this.bb_pos,60);return e?!!this.bb.readInt8(this.bb_pos+e):!1}static startIDM(e){e.startObject(29)}static addId(e,n){e.addFieldOffset(0,n,0)}static addName(e,n){e.addFieldOffset(1,n,0)}static addDataMode(e,n){e.addFieldInt8(2,n,$F.REAL)}static addUplink(e,n){e.addFieldOffset(3,n,0)}static addDownlink(e,n){e.addFieldOffset(4,n,0)}static addBeacon(e,n){e.addFieldOffset(5,n,0)}static addBand(e,n){e.addFieldOffset(6,n,0)}static createBandVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startBandVector(e,n){e.startVector(4,n,4)}static addPolarizationType(e,n){e.addFieldInt8(7,n,eU.linear)}static addSimplePolarization(e,n){e.addFieldInt8(8,n,nU.vertical)}static addStokesParameters(e,n){e.addFieldOffset(9,n,0)}static addPowerRequired(e,n){e.addFieldFloat64(10,n,0)}static addPowerType(e,n){e.addFieldOffset(11,n,0)}static addTransmit(e,n){e.addFieldInt8(12,+n,0)}static addReceive(e,n){e.addFieldInt8(13,+n,0)}static addSensorType(e,n){e.addFieldInt8(14,n,tU.UNKNOWN)}static addSource(e,n){e.addFieldOffset(15,n,0)}static addLastObTime(e,n){e.addFieldOffset(16,n,0)}static addLowerLeftElevationLimit(e,n){e.addFieldFloat64(17,n,0)}static addUpperLeftAzimuthLimit(e,n){e.addFieldFloat64(18,n,0)}static addLowerRightElevationLimit(e,n){e.addFieldFloat64(19,n,0)}static addLowerLeftAzimuthLimit(e,n){e.addFieldFloat64(20,n,0)}static addUpperRightElevationLimit(e,n){e.addFieldFloat64(21,n,0)}static addUpperRightAzimuthLimit(e,n){e.addFieldFloat64(22,n,0)}static addLowerRightAzimuthLimit(e,n){e.addFieldFloat64(23,n,0)}static addUpperLeftElevationLimit(e,n){e.addFieldFloat64(24,n,0)}static addRightGeoBeltLimit(e,n){e.addFieldFloat64(25,n,0)}static addLeftGeoBeltLimit(e,n){e.addFieldFloat64(26,n,0)}static addMagnitudeLimit(e,n){e.addFieldFloat64(27,n,0)}static addTaskable(e,n){e.addFieldInt8(28,+n,0)}static endIDM(e){return e.endObject()}static finishIDMBuffer(e,n){e.finish(n,"$IDM")}static finishSizePrefixedIDMBuffer(e,n){e.finish(n,"$IDM",!0)}unpack(){return new VM(this.ID(),this.NAME(),this.DATA_MODE(),this.UPLINK()!==null?this.UPLINK().unpack():null,this.DOWNLINK()!==null?this.DOWNLINK().unpack():null,this.BEACON()!==null?this.BEACON().unpack():null,this.bb.createObjList(this.BAND.bind(this),this.bandLength()),this.POLARIZATION_TYPE(),this.SIMPLE_POLARIZATION(),this.STOKES_PARAMETERS()!==null?this.STOKES_PARAMETERS().unpack():null,this.POWER_REQUIRED(),this.POWER_TYPE(),this.TRANSMIT(),this.RECEIVE(),this.SENSOR_TYPE(),this.SOURCE(),this.LAST_OB_TIME(),this.LOWER_LEFT_ELEVATION_LIMIT(),this.UPPER_LEFT_AZIMUTH_LIMIT(),this.LOWER_RIGHT_ELEVATION_LIMIT(),this.LOWER_LEFT_AZIMUTH_LIMIT(),this.UPPER_RIGHT_ELEVATION_LIMIT(),this.UPPER_RIGHT_AZIMUTH_LIMIT(),this.LOWER_RIGHT_AZIMUTH_LIMIT(),this.UPPER_LEFT_ELEVATION_LIMIT(),this.RIGHT_GEO_BELT_LIMIT(),this.LEFT_GEO_BELT_LIMIT(),this.MAGNITUDE_LIMIT(),this.TASKABLE())}unpackTo(e){e.ID=this.ID(),e.NAME=this.NAME(),e.DATA_MODE=this.DATA_MODE(),e.UPLINK=this.UPLINK()!==null?this.UPLINK().unpack():null,e.DOWNLINK=this.DOWNLINK()!==null?this.DOWNLINK().unpack():null,e.BEACON=this.BEACON()!==null?this.BEACON().unpack():null,e.BAND=this.bb.createObjList(this.BAND.bind(this),this.bandLength()),e.POLARIZATION_TYPE=this.POLARIZATION_TYPE(),e.SIMPLE_POLARIZATION=this.SIMPLE_POLARIZATION(),e.STOKES_PARAMETERS=this.STOKES_PARAMETERS()!==null?this.STOKES_PARAMETERS().unpack():null,e.POWER_REQUIRED=this.POWER_REQUIRED(),e.POWER_TYPE=this.POWER_TYPE(),e.TRANSMIT=this.TRANSMIT(),e.RECEIVE=this.RECEIVE(),e.SENSOR_TYPE=this.SENSOR_TYPE(),e.SOURCE=this.SOURCE(),e.LAST_OB_TIME=this.LAST_OB_TIME(),e.LOWER_LEFT_ELEVATION_LIMIT=this.LOWER_LEFT_ELEVATION_LIMIT(),e.UPPER_LEFT_AZIMUTH_LIMIT=this.UPPER_LEFT_AZIMUTH_LIMIT(),e.LOWER_RIGHT_ELEVATION_LIMIT=this.LOWER_RIGHT_ELEVATION_LIMIT(),e.LOWER_LEFT_AZIMUTH_LIMIT=this.LOWER_LEFT_AZIMUTH_LIMIT(),e.UPPER_RIGHT_ELEVATION_LIMIT=this.UPPER_RIGHT_ELEVATION_LIMIT(),e.UPPER_RIGHT_AZIMUTH_LIMIT=this.UPPER_RIGHT_AZIMUTH_LIMIT(),e.LOWER_RIGHT_AZIMUTH_LIMIT=this.LOWER_RIGHT_AZIMUTH_LIMIT(),e.UPPER_LEFT_ELEVATION_LIMIT=this.UPPER_LEFT_ELEVATION_LIMIT(),e.RIGHT_GEO_BELT_LIMIT=this.RIGHT_GEO_BELT_LIMIT(),e.LEFT_GEO_BELT_LIMIT=this.LEFT_GEO_BELT_LIMIT(),e.MAGNITUDE_LIMIT=this.MAGNITUDE_LIMIT(),e.TASKABLE=this.TASKABLE()}},VM=class{constructor(e=null,n=null,i=$F.REAL,o=null,a=null,s=null,l=[],r=eU.linear,d=nU.vertical,m=null,h=0,u=null,R=!1,V=!1,F=tU.UNKNOWN,U=null,G=null,A=0,S=0,g=0,C=0,y=0,Y=0,Q=0,J=0,M=0,Z=0,E=0,I=!1){this.ID=e,this.NAME=n,this.DATA_MODE=i,this.UPLINK=o,this.DOWNLINK=a,this.BEACON=s,this.BAND=l,this.POLARIZATION_TYPE=r,this.SIMPLE_POLARIZATION=d,this.STOKES_PARAMETERS=m,this.POWER_REQUIRED=h,this.POWER_TYPE=u,this.TRANSMIT=R,this.RECEIVE=V,this.SENSOR_TYPE=F,this.SOURCE=U,this.LAST_OB_TIME=G,this.LOWER_LEFT_ELEVATION_LIMIT=A,this.UPPER_LEFT_AZIMUTH_LIMIT=S,this.LOWER_RIGHT_ELEVATION_LIMIT=g,this.LOWER_LEFT_AZIMUTH_LIMIT=C,this.UPPER_RIGHT_ELEVATION_LIMIT=y,this.UPPER_RIGHT_AZIMUTH_LIMIT=Y,this.LOWER_RIGHT_AZIMUTH_LIMIT=Q,this.UPPER_LEFT_ELEVATION_LIMIT=J,this.RIGHT_GEO_BELT_LIMIT=M,this.LEFT_GEO_BELT_LIMIT=Z,this.MAGNITUDE_LIMIT=E,this.TASKABLE=I}pack(e){let n=this.ID!==null?e.createString(this.ID):0,i=this.NAME!==null?e.createString(this.NAME):0,o=this.UPLINK!==null?this.UPLINK.pack(e):0,a=this.DOWNLINK!==null?this.DOWNLINK.pack(e):0,s=this.BEACON!==null?this.BEACON.pack(e):0,l=Wo.createBandVector(e,e.createObjectOffsetList(this.BAND)),r=this.STOKES_PARAMETERS!==null?this.STOKES_PARAMETERS.pack(e):0,d=this.POWER_TYPE!==null?e.createString(this.POWER_TYPE):0,m=this.SOURCE!==null?e.createString(this.SOURCE):0,h=this.LAST_OB_TIME!==null?e.createString(this.LAST_OB_TIME):0;return Wo.startIDM(e),Wo.addId(e,n),Wo.addName(e,i),Wo.addDataMode(e,this.DATA_MODE),Wo.addUplink(e,o),Wo.addDownlink(e,a),Wo.addBeacon(e,s),Wo.addBand(e,l),Wo.addPolarizationType(e,this.POLARIZATION_TYPE),Wo.addSimplePolarization(e,this.SIMPLE_POLARIZATION),Wo.addStokesParameters(e,r),Wo.addPowerRequired(e,this.POWER_REQUIRED),Wo.addPowerType(e,d),Wo.addTransmit(e,this.TRANSMIT),Wo.addReceive(e,this.RECEIVE),Wo.addSensorType(e,this.SENSOR_TYPE),Wo.addSource(e,m),Wo.addLastObTime(e,h),Wo.addLowerLeftElevationLimit(e,this.LOWER_LEFT_ELEVATION_LIMIT),Wo.addUpperLeftAzimuthLimit(e,this.UPPER_LEFT_AZIMUTH_LIMIT),Wo.addLowerRightElevationLimit(e,this.LOWER_RIGHT_ELEVATION_LIMIT),Wo.addLowerLeftAzimuthLimit(e,this.LOWER_LEFT_AZIMUTH_LIMIT),Wo.addUpperRightElevationLimit(e,this.UPPER_RIGHT_ELEVATION_LIMIT),Wo.addUpperRightAzimuthLimit(e,this.UPPER_RIGHT_AZIMUTH_LIMIT),Wo.addLowerRightAzimuthLimit(e,this.LOWER_RIGHT_AZIMUTH_LIMIT),Wo.addUpperLeftElevationLimit(e,this.UPPER_LEFT_ELEVATION_LIMIT),Wo.addRightGeoBeltLimit(e,this.RIGHT_GEO_BELT_LIMIT),Wo.addLeftGeoBeltLimit(e,this.LEFT_GEO_BELT_LIMIT),Wo.addMagnitudeLimit(e,this.MAGNITUDE_LIMIT),Wo.addTaskable(e,this.TASKABLE),Wo.endIDM(e)}};var BR=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsPLD(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPLD(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$PLD")}PAYLOAD_DURATION(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}MASS_AT_LAUNCH(){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readFloat32(this.bb_pos+e):0}DIMENSIONS(e){let n=this.bb.__offset(this.bb_pos,8);return n?this.bb.__string(this.bb_pos+n,e):null}SOLAR_ARRAY_AREA(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readFloat32(this.bb_pos+e):0}SOLAR_ARRAY_DIMENSIONS(e){let n=this.bb.__offset(this.bb_pos,12);return n?this.bb.__string(this.bb_pos+n,e):null}NOMINAL_OPERATIONAL_LIFETIME(e){let n=this.bb.__offset(this.bb_pos,14);return n?this.bb.__string(this.bb_pos+n,e):null}INSTRUMENTS(e,n){let i=this.bb.__offset(this.bb_pos,16);return i?(n||new Wo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}instrumentsLength(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.__vector_len(this.bb_pos+e):0}static startPLD(e){e.startObject(7)}static addPayloadDuration(e,n){e.addFieldOffset(0,n,0)}static addMassAtLaunch(e,n){e.addFieldFloat32(1,n,0)}static addDimensions(e,n){e.addFieldOffset(2,n,0)}static addSolarArrayArea(e,n){e.addFieldFloat32(3,n,0)}static addSolarArrayDimensions(e,n){e.addFieldOffset(4,n,0)}static addNominalOperationalLifetime(e,n){e.addFieldOffset(5,n,0)}static addInstruments(e,n){e.addFieldOffset(6,n,0)}static createInstrumentsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startInstrumentsVector(e,n){e.startVector(4,n,4)}static endPLD(e){return e.endObject()}static finishPLDBuffer(e,n){e.finish(n,"$PLD")}static finishSizePrefixedPLDBuffer(e,n){e.finish(n,"$PLD",!0)}static createPLD(e,n,i,o,a,s,l,r){return t.startPLD(e),t.addPayloadDuration(e,n),t.addMassAtLaunch(e,i),t.addDimensions(e,o),t.addSolarArrayArea(e,a),t.addSolarArrayDimensions(e,s),t.addNominalOperationalLifetime(e,l),t.addInstruments(e,r),t.endPLD(e)}unpack(){return new uM(this.PAYLOAD_DURATION(),this.MASS_AT_LAUNCH(),this.DIMENSIONS(),this.SOLAR_ARRAY_AREA(),this.SOLAR_ARRAY_DIMENSIONS(),this.NOMINAL_OPERATIONAL_LIFETIME(),this.bb.createObjList(this.INSTRUMENTS.bind(this),this.instrumentsLength()))}unpackTo(e){e.PAYLOAD_DURATION=this.PAYLOAD_DURATION(),e.MASS_AT_LAUNCH=this.MASS_AT_LAUNCH(),e.DIMENSIONS=this.DIMENSIONS(),e.SOLAR_ARRAY_AREA=this.SOLAR_ARRAY_AREA(),e.SOLAR_ARRAY_DIMENSIONS=this.SOLAR_ARRAY_DIMENSIONS(),e.NOMINAL_OPERATIONAL_LIFETIME=this.NOMINAL_OPERATIONAL_LIFETIME(),e.INSTRUMENTS=this.bb.createObjList(this.INSTRUMENTS.bind(this),this.instrumentsLength())}},uM=class{constructor(e=null,n=0,i=null,o=0,a=null,s=null,l=[]){this.PAYLOAD_DURATION=e,this.MASS_AT_LAUNCH=n,this.DIMENSIONS=i,this.SOLAR_ARRAY_AREA=o,this.SOLAR_ARRAY_DIMENSIONS=a,this.NOMINAL_OPERATIONAL_LIFETIME=s,this.INSTRUMENTS=l}pack(e){let n=this.PAYLOAD_DURATION!==null?e.createString(this.PAYLOAD_DURATION):0,i=this.DIMENSIONS!==null?e.createString(this.DIMENSIONS):0,o=this.SOLAR_ARRAY_DIMENSIONS!==null?e.createString(this.SOLAR_ARRAY_DIMENSIONS):0,a=this.NOMINAL_OPERATIONAL_LIFETIME!==null?e.createString(this.NOMINAL_OPERATIONAL_LIFETIME):0,s=BR.createInstrumentsVector(e,e.createObjectOffsetList(this.INSTRUMENTS));return BR.createPLD(e,n,this.MASS_AT_LAUNCH,i,this.SOLAR_ARRAY_AREA,o,a,s)}};var hDi=b(W(),1),iU;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(iU||(iU={}));var VDi=b(W(),1),oU;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(oU||(oU={}));var ZDi=b(W(),1),aU;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(aU||(aU={}));var bDi=b(W(),1),sU;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(sU||(sU={}));var fDi=b(W(),1),lU;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(lU||(lU={}));var rU=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsCAT(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsCAT(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$CAT")}OBJECT_NAME(e){let n=this.bb.__offset(this.bb_pos,4);return n?this.bb.__string(this.bb_pos+n,e):null}OBJECT_ID(e){let n=this.bb.__offset(this.bb_pos,6);return n?this.bb.__string(this.bb_pos+n,e):null}NORAD_CAT_ID(){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint32(this.bb_pos+e):0}OBJECT_TYPE(){let e=this.bb.__offset(this.bb_pos,10);return e?this.bb.readInt8(this.bb_pos+e):aU.UNKNOWN}OPS_STATUS_CODE(){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readInt8(this.bb_pos+e):sU.UNKNOWN}OWNER(e){let n=this.bb.__offset(this.bb_pos,14);return n?this.bb.__string(this.bb_pos+n,e):null}LAUNCH_DATE(e){let n=this.bb.__offset(this.bb_pos,16);return n?this.bb.__string(this.bb_pos+n,e):null}LAUNCH_SITE(e){let n=this.bb.__offset(this.bb_pos,18);return n?this.bb.__string(this.bb_pos+n,e):null}DECAY_DATE(e){let n=this.bb.__offset(this.bb_pos,20);return n?this.bb.__string(this.bb_pos+n,e):null}PERIOD(){let e=this.bb.__offset(this.bb_pos,22);return e?this.bb.readFloat64(this.bb_pos+e):0}INCLINATION(){let e=this.bb.__offset(this.bb_pos,24);return e?this.bb.readFloat64(this.bb_pos+e):0}APOGEE(){let e=this.bb.__offset(this.bb_pos,26);return e?this.bb.readFloat64(this.bb_pos+e):0}PERIGEE(){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.readFloat64(this.bb_pos+e):0}RCS(){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.readFloat64(this.bb_pos+e):0}DATA_STATUS_CODE(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.readInt8(this.bb_pos+e):iU.NO_CURRENT_ELEMENTS}ORBIT_CENTER(e){let n=this.bb.__offset(this.bb_pos,34);return n?this.bb.__string(this.bb_pos+n,e):null}ORBIT_TYPE(){let e=this.bb.__offset(this.bb_pos,36);return e?this.bb.readInt8(this.bb_pos+e):lU.ORBIT}DEPLOYMENT_DATE(e){let n=this.bb.__offset(this.bb_pos,38);return n?this.bb.__string(this.bb_pos+n,e):null}MANEUVERABLE(){let e=this.bb.__offset(this.bb_pos,40);return e?!!this.bb.readInt8(this.bb_pos+e):!1}SIZE(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.readFloat64(this.bb_pos+e):0}MASS(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.readFloat64(this.bb_pos+e):0}MASS_TYPE(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readInt8(this.bb_pos+e):oU.DRY}PAYLOADS(e,n){let i=this.bb.__offset(this.bb_pos,48);return i?(n||new BR).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}payloadsLength(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.__vector_len(this.bb_pos+e):0}static startCAT(e){e.startObject(23)}static addObjectName(e,n){e.addFieldOffset(0,n,0)}static addObjectId(e,n){e.addFieldOffset(1,n,0)}static addNoradCatId(e,n){e.addFieldInt32(2,n,0)}static addObjectType(e,n){e.addFieldInt8(3,n,aU.UNKNOWN)}static addOpsStatusCode(e,n){e.addFieldInt8(4,n,sU.UNKNOWN)}static addOwner(e,n){e.addFieldOffset(5,n,0)}static addLaunchDate(e,n){e.addFieldOffset(6,n,0)}static addLaunchSite(e,n){e.addFieldOffset(7,n,0)}static addDecayDate(e,n){e.addFieldOffset(8,n,0)}static addPeriod(e,n){e.addFieldFloat64(9,n,0)}static addInclination(e,n){e.addFieldFloat64(10,n,0)}static addApogee(e,n){e.addFieldFloat64(11,n,0)}static addPerigee(e,n){e.addFieldFloat64(12,n,0)}static addRcs(e,n){e.addFieldFloat64(13,n,0)}static addDataStatusCode(e,n){e.addFieldInt8(14,n,iU.NO_CURRENT_ELEMENTS)}static addOrbitCenter(e,n){e.addFieldOffset(15,n,0)}static addOrbitType(e,n){e.addFieldInt8(16,n,lU.ORBIT)}static addDeploymentDate(e,n){e.addFieldOffset(17,n,0)}static addManeuverable(e,n){e.addFieldInt8(18,+n,0)}static addSize(e,n){e.addFieldFloat64(19,n,0)}static addMass(e,n){e.addFieldFloat64(20,n,0)}static addMassType(e,n){e.addFieldInt8(21,n,oU.DRY)}static addPayloads(e,n){e.addFieldOffset(22,n,0)}static createPayloadsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startPayloadsVector(e,n){e.startVector(4,n,4)}static endCAT(e){return e.endObject()}static finishCATBuffer(e,n){e.finish(n,"$CAT")}static finishSizePrefixedCATBuffer(e,n){e.finish(n,"$CAT",!0)}static createCAT(e,n,i,o,a,s,l,r,d,m,h,u,R,V,F,U,G,A,S,g,C,y,Y,Q){return t.startCAT(e),t.addObjectName(e,n),t.addObjectId(e,i),t.addNoradCatId(e,o),t.addObjectType(e,a),t.addOpsStatusCode(e,s),t.addOwner(e,l),t.addLaunchDate(e,r),t.addLaunchSite(e,d),t.addDecayDate(e,m),t.addPeriod(e,h),t.addInclination(e,u),t.addApogee(e,R),t.addPerigee(e,V),t.addRcs(e,F),t.addDataStatusCode(e,U),t.addOrbitCenter(e,G),t.addOrbitType(e,A),t.addDeploymentDate(e,S),t.addManeuverable(e,g),t.addSize(e,C),t.addMass(e,y),t.addMassType(e,Y),t.addPayloads(e,Q),t.endCAT(e)}unpack(){return new ZM(this.OBJECT_NAME(),this.OBJECT_ID(),this.NORAD_CAT_ID(),this.OBJECT_TYPE(),this.OPS_STATUS_CODE(),this.OWNER(),this.LAUNCH_DATE(),this.LAUNCH_SITE(),this.DECAY_DATE(),this.PERIOD(),this.INCLINATION(),this.APOGEE(),this.PERIGEE(),this.RCS(),this.DATA_STATUS_CODE(),this.ORBIT_CENTER(),this.ORBIT_TYPE(),this.DEPLOYMENT_DATE(),this.MANEUVERABLE(),this.SIZE(),this.MASS(),this.MASS_TYPE(),this.bb.createObjList(this.PAYLOADS.bind(this),this.payloadsLength()))}unpackTo(e){e.OBJECT_NAME=this.OBJECT_NAME(),e.OBJECT_ID=this.OBJECT_ID(),e.NORAD_CAT_ID=this.NORAD_CAT_ID(),e.OBJECT_TYPE=this.OBJECT_TYPE(),e.OPS_STATUS_CODE=this.OPS_STATUS_CODE(),e.OWNER=this.OWNER(),e.LAUNCH_DATE=this.LAUNCH_DATE(),e.LAUNCH_SITE=this.LAUNCH_SITE(),e.DECAY_DATE=this.DECAY_DATE(),e.PERIOD=this.PERIOD(),e.INCLINATION=this.INCLINATION(),e.APOGEE=this.APOGEE(),e.PERIGEE=this.PERIGEE(),e.RCS=this.RCS(),e.DATA_STATUS_CODE=this.DATA_STATUS_CODE(),e.ORBIT_CENTER=this.ORBIT_CENTER(),e.ORBIT_TYPE=this.ORBIT_TYPE(),e.DEPLOYMENT_DATE=this.DEPLOYMENT_DATE(),e.MANEUVERABLE=this.MANEUVERABLE(),e.SIZE=this.SIZE(),e.MASS=this.MASS(),e.MASS_TYPE=this.MASS_TYPE(),e.PAYLOADS=this.bb.createObjList(this.PAYLOADS.bind(this),this.payloadsLength())}},ZM=class{constructor(e=null,n=null,i=0,o=aU.UNKNOWN,a=sU.UNKNOWN,s=null,l=null,r=null,d=null,m=0,h=0,u=0,R=0,V=0,F=iU.NO_CURRENT_ELEMENTS,U=null,G=lU.ORBIT,A=null,S=!1,g=0,C=0,y=oU.DRY,Y=[]){this.OBJECT_NAME=e,this.OBJECT_ID=n,this.NORAD_CAT_ID=i,this.OBJECT_TYPE=o,this.OPS_STATUS_CODE=a,this.OWNER=s,this.LAUNCH_DATE=l,this.LAUNCH_SITE=r,this.DECAY_DATE=d,this.PERIOD=m,this.INCLINATION=h,this.APOGEE=u,this.PERIGEE=R,this.RCS=V,this.DATA_STATUS_CODE=F,this.ORBIT_CENTER=U,this.ORBIT_TYPE=G,this.DEPLOYMENT_DATE=A,this.MANEUVERABLE=S,this.SIZE=g,this.MASS=C,this.MASS_TYPE=y,this.PAYLOADS=Y}pack(e){let n=this.OBJECT_NAME!==null?e.createString(this.OBJECT_NAME):0,i=this.OBJECT_ID!==null?e.createString(this.OBJECT_ID):0,o=this.OWNER!==null?e.createString(this.OWNER):0,a=this.LAUNCH_DATE!==null?e.createString(this.LAUNCH_DATE):0,s=this.LAUNCH_SITE!==null?e.createString(this.LAUNCH_SITE):0,l=this.DECAY_DATE!==null?e.createString(this.DECAY_DATE):0,r=this.ORBIT_CENTER!==null?e.createString(this.ORBIT_CENTER):0,d=this.DEPLOYMENT_DATE!==null?e.createString(this.DEPLOYMENT_DATE):0,m=rU.createPayloadsVector(e,e.createObjectOffsetList(this.PAYLOADS));return rU.createCAT(e,n,i,this.NORAD_CAT_ID,this.OBJECT_TYPE,this.OPS_STATUS_CODE,o,a,s,l,this.PERIOD,this.INCLINATION,this.APOGEE,this.PERIGEE,this.RCS,this.DATA_STATUS_CODE,r,this.ORBIT_TYPE,d,this.MANEUVERABLE,this.SIZE,this.MASS,this.MASS_TYPE,m)}};var NDi=b(W(),1);var s1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsCATCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsCATCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new rU).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startCATCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endCATCOLLECTION(e){return e.endObject()}static createCATCOLLECTION(e,n){return t.startCATCOLLECTION(e),t.addRecords(e,n),t.endCATCOLLECTION(e)}unpack(){return new RM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},RM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=s1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return s1.createCATCOLLECTION(e,n)}};var QDi=b(W(),1);var l1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsIDMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsIDMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new Wo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startIDMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endIDMCOLLECTION(e){return e.endObject()}static createIDMCOLLECTION(e,n){return t.startIDMCOLLECTION(e),t.addRecords(e,n),t.endIDMCOLLECTION(e)}unpack(){return new bM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},bM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=l1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return l1.createIDMCOLLECTION(e,n)}};var xDi=b(W(),1);var r1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsPLDCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsPLDCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new BR).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startPLDCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endPLDCOLLECTION(e){return e.endObject()}static createPLDCOLLECTION(e,n){return t.startPLDCOLLECTION(e),t.addRecords(e,n),t.endPLDCOLLECTION(e)}unpack(){return new WM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},WM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=r1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return r1.createPLDCOLLECTION(e,n)}};var Uwi=b(W(),1);var oOi=b(W(),1);var dOi=b(W(),1);var sOi=b(W(),1);var KOi=b(W(),1);var NOi=b(W(),1);var EOi=b(W(),1);var mOi=b(W(),1),D3;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(D3||(D3={}));var pOi=b(W(),1),O3;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(O3||(O3={}));var uOi=b(W(),1),H3;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(H3||(H3={}));var ROi=b(W(),1),w3;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(w3||(w3={}));var WOi=b(W(),1);var BOi=b(W(),1),P3;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(P3||(P3={}));var kOi=b(W(),1),v3;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(v3||(v3={}));var xOi=b(W(),1),K3;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(K3||(K3={}));var JOi=b(W(),1),z3;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(z3||(z3={}));var MOi=b(W(),1),j3;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(j3||(j3={}));var qOi=b(W(),1);var gHi=b(W(),1);var RHi=b(W(),1);var lHi=b(W(),1);var iHi=b(W(),1);var tHi=b(W(),1),q3;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(q3||(q3={}));var dHi=b(W(),1),$3;(function(t){t[t.CALCULATED=0]="CALCULATED",t[t.DEFAULT=1]="DEFAULT"})($3||($3={}));var mHi=b(W(),1),d1;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(d1||(d1={}));var WHi=b(W(),1);var FHi=b(W(),1),tK;(function(t){t[t.ELLIPSOID=0]="ELLIPSOID",t[t.BOX=1]="BOX"})(tK||(tK={}));var IHi=b(W(),1);var BHi=b(W(),1);var YHi=b(W(),1);var JHi=b(W(),1);var _Hi=b(W(),1);var HHi=b(W(),1);var vHi=b(W(),1);var cPi=b(W(),1);var iPi=b(W(),1);var sPi=b(W(),1);var Qvi=b(W(),1);var RPi=b(W(),1);var VPi=b(W(),1);var ivi=b(W(),1);var JPi=b(W(),1);var YPi=b(W(),1);var WPi=b(W(),1),eK;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(eK||(eK={}));var FPi=b(W(),1),nK;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(nK||(nK={}));var GPi=b(W(),1),iK;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(iK||(iK={}));var SPi=b(W(),1),oK;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(oK||(oK={}));var gPi=b(W(),1);var MPi=b(W(),1),aK;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(aK||(aK={}));var DPi=b(W(),1),sK;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(sK||(sK={}));var HPi=b(W(),1),lK;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(lK||(lK={}));var PPi=b(W(),1),rK;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(rK||(rK={}));var KPi=b(W(),1),dK;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(dK||(dK={}));var svi=b(W(),1);var dvi=b(W(),1);var hvi=b(W(),1);var uvi=b(W(),1);var bvi=b(W(),1);var d3i=b(W(),1);var n3i=b(W(),1);var a3i=b(W(),1);var f3i=b(W(),1);var p3i=b(W(),1);var Z3i=b(W(),1);var D3i=b(W(),1);var g3i=b(W(),1);var A3i=b(W(),1),fM;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(fM||(fM={}));var I3i=b(W(),1);var B3i=b(W(),1);var Y3i=b(W(),1);var sKi=b(W(),1);var z3i=b(W(),1),cK;(function(t){t[t.OBSERVED=0]="OBSERVED",t[t.PREDICTED=1]="PREDICTED"})(cK||(cK={}));var $3i=b(W(),1);var nKi=b(W(),1);var CKi=b(W(),1);var mKi=b(W(),1);var ZKi=b(W(),1);var pKi=b(W(),1),mK;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(mK||(mK={}));var fKi=b(W(),1);var GKi=b(W(),1);var zKi=b(W(),1);var _Ki=b(W(),1);var JKi=b(W(),1);var YKi=b(W(),1),hK;(function(t){t[t.OUTLIER=0]="OUTLIER"})(hK||(hK={}));var HKi=b(W(),1);var Qzi=b(W(),1);var azi=b(W(),1);var nzi=b(W(),1);var lzi=b(W(),1),pK;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(pK||(pK={}));var dzi=b(W(),1),VK;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(VK||(VK={}));var Azi=b(W(),1);var mzi=b(W(),1),uK;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(uK||(uK={}));var pzi=b(W(),1),ZK;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(ZK||(ZK={}));var uzi=b(W(),1);var gzi=b(W(),1);var g8i=b(W(),1);var Hzi=b(W(),1);var Pzi=b(W(),1);var zzi=b(W(),1);var eji=b(W(),1);var qzi=b(W(),1);var Mji=b(W(),1);var Gji=b(W(),1);var fji=b(W(),1);var iji=b(W(),1),RK;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(RK||(RK={}));var aji=b(W(),1),bK;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(bK||(bK={}));var lji=b(W(),1),WK;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(WK||(WK={}));var dji=b(W(),1),fK;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(fK||(fK={}));var mji=b(W(),1);var Sji=b(W(),1),FK;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(FK||(FK={}));var gji=b(W(),1),UK;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(UK||(UK={}));var Cji=b(W(),1),GK;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(GK||(GK={}));var Nji=b(W(),1),AK;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(AK||(AK={}));var Bji=b(W(),1),SK;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(SK||(SK={}));var Oji=b(W(),1);var Kji=b(W(),1);var wji=b(W(),1),TK;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(TK||(TK={}));var t4i=b(W(),1);var jji=b(W(),1),gK;(function(t){t[t.LIQUID=0]="LIQUID",t[t.SOLID=1]="SOLID",t[t.HYBRID=2]="HYBRID",t[t.ION=3]="ION",t[t.NUCLEAR_THERMAL=4]="NUCLEAR_THERMAL",t[t.OTHER=5]="OTHER"})(gK||(gK={}));var o4i=b(W(),1);var l4i=b(W(),1);var d4i=b(W(),1);var h4i=b(W(),1);var k4i=b(W(),1);var F4i=b(W(),1);var u4i=b(W(),1);var R4i=b(W(),1);var E4i=b(W(),1);var G4i=b(W(),1),EK;(function(t){t[t.LAUNCH_SITE=0]="LAUNCH_SITE",t[t.OBSERVATION_STATION=1]="OBSERVATION_STATION",t[t.HOBBYIST_OBSERVER=2]="HOBBYIST_OBSERVER",t[t.RESEARCH_FACILITY=3]="RESEARCH_FACILITY",t[t.SATELLITE_GROUND_STATION=4]="SATELLITE_GROUND_STATION",t[t.SPACEPORT=5]="SPACEPORT",t[t.MILITARY_BASE=6]="MILITARY_BASE",t[t.WEATHER_STATION=7]="WEATHER_STATION",t[t.ASTRONOMICAL_OBSERVATORY=8]="ASTRONOMICAL_OBSERVATORY",t[t.EDUCATIONAL_INSTITUTE=9]="EDUCATIONAL_INSTITUTE",t[t.COMMUNICATION_HUB=10]="COMMUNICATION_HUB",t[t.POWER_PLANT=11]="POWER_PLANT",t[t.INDUSTRIAL_COMPLEX=12]="INDUSTRIAL_COMPLEX",t[t.TRANSPORTATION_HUB=13]="TRANSPORTATION_HUB",t[t.URBAN_AREA=14]="URBAN_AREA",t[t.NATIONAL_PARK=15]="NATIONAL_PARK",t[t.HISTORICAL_SITE=16]="HISTORICAL_SITE",t[t.OTHER=17]="OTHER"})(EK||(EK={}));var X4i=b(W(),1);var M4i=b(W(),1);var O4i=b(W(),1);var P4i=b(W(),1);var U6i=b(W(),1);var u6i=b(W(),1);var h6i=b(W(),1),CK;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(CK||(CK={}));var b6i=b(W(),1);var w6i=b(W(),1);var I6i=b(W(),1);var g6i=b(W(),1),FM;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(FM||(FM={}));var B6i=b(W(),1);var Y6i=b(W(),1);var J6i=b(W(),1);var D7i=b(W(),1);var u7i=b(W(),1);var h7i=b(W(),1);var n7i=b(W(),1);var $6i=b(W(),1),c1;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(c1||(c1={}));var o7i=b(W(),1);var s7i=b(W(),1),UM;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(UM||(UM={}));var b7i=b(W(),1);var F7i=b(W(),1);var A7i=b(W(),1);var g7i=b(W(),1);var I7i=b(W(),1);var sW={};vO(sW,{MET:()=>tT,METCOLLECTION:()=>m1,METCOLLECTIONT:()=>AM,METT:()=>GM,OMM:()=>eT,OMMCOLLECTION:()=>h1,OMMCOLLECTIONT:()=>TM,OMMT:()=>SM,RFM:()=>nT,RFMCOLLECTION:()=>p1,RFMCOLLECTIONT:()=>EM,RFMT:()=>gM,TIM:()=>iT,TIMCOLLECTION:()=>V1,TIMCOLLECTIONT:()=>IM,TIMT:()=>CM,ephemerisType:()=>dU,meanElementTheory:()=>fV,refFrame:()=>zc,timeSystem:()=>FV});var Yqi=b(W(),1);var aqi=b(W(),1);var nqi=b(W(),1),fV;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(fV||(fV={}));var tT=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsMET(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMET(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$MET")}MEAN_ELEMENT_THEORY(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):fV.SGP4}static startMET(e){e.startObject(1)}static addMeanElementTheory(e,n){e.addFieldInt8(0,n,fV.SGP4)}static endMET(e){return e.endObject()}static finishMETBuffer(e,n){e.finish(n,"$MET")}static finishSizePrefixedMETBuffer(e,n){e.finish(n,"$MET",!0)}static createMET(e,n){return t.startMET(e),t.addMeanElementTheory(e,n),t.endMET(e)}unpack(){return new GM(this.MEAN_ELEMENT_THEORY())}unpackTo(e){e.MEAN_ELEMENT_THEORY=this.MEAN_ELEMENT_THEORY()}},GM=class{constructor(e=fV.SGP4){this.MEAN_ELEMENT_THEORY=e}pack(e){return tT.createMET(e,this.MEAN_ELEMENT_THEORY)}};var rqi=b(W(),1);var m1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsMETCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsMETCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new tT).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startMETCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endMETCOLLECTION(e){return e.endObject()}static createMETCOLLECTION(e,n){return t.startMETCOLLECTION(e),t.addRecords(e,n),t.endMETCOLLECTION(e)}unpack(){return new AM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},AM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=m1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return m1.createMETCOLLECTION(e,n)}};var fqi=b(W(),1);var cqi=b(W(),1),dU;(function(t){t[t.SGP=0]="SGP",t[t.SGP4=1]="SGP4",t[t.SDP4=2]="SDP4",t[t.SGP8=3]="SGP8",t[t.SDP8=4]="SDP8"})(dU||(dU={}));var hqi=b(W(),1),zc;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(zc||(zc={}));var Vqi=b(W(),1),FV;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(FV||(FV={}));var eT=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsOMM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsOMM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$OMM")}CCSDS_OMM_VERS(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readFloat64(this.bb_pos+e):0}CREATION_DATE(e){let n=this.bb.__offset(this.bb_pos,6);return n?this.bb.__string(this.bb_pos+n,e):null}ORIGINATOR(e){let n=this.bb.__offset(this.bb_pos,8);return n?this.bb.__string(this.bb_pos+n,e):null}OBJECT_NAME(e){let n=this.bb.__offset(this.bb_pos,10);return n?this.bb.__string(this.bb_pos+n,e):null}OBJECT_ID(e){let n=this.bb.__offset(this.bb_pos,12);return n?this.bb.__string(this.bb_pos+n,e):null}CENTER_NAME(e){let n=this.bb.__offset(this.bb_pos,14);return n?this.bb.__string(this.bb_pos+n,e):null}REFERENCE_FRAME(){let e=this.bb.__offset(this.bb_pos,16);return e?this.bb.readInt8(this.bb_pos+e):zc.TEME}REFERENCE_FRAME_EPOCH(e){let n=this.bb.__offset(this.bb_pos,18);return n?this.bb.__string(this.bb_pos+n,e):null}TIME_SYSTEM(){let e=this.bb.__offset(this.bb_pos,20);return e?this.bb.readInt8(this.bb_pos+e):FV.UTC}MEAN_ELEMENT_THEORY(){let e=this.bb.__offset(this.bb_pos,22);return e?this.bb.readInt8(this.bb_pos+e):fV.SGP4}COMMENT(e){let n=this.bb.__offset(this.bb_pos,24);return n?this.bb.__string(this.bb_pos+n,e):null}EPOCH(e){let n=this.bb.__offset(this.bb_pos,26);return n?this.bb.__string(this.bb_pos+n,e):null}SEMI_MAJOR_AXIS(){let e=this.bb.__offset(this.bb_pos,28);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_MOTION(){let e=this.bb.__offset(this.bb_pos,30);return e?this.bb.readFloat64(this.bb_pos+e):0}ECCENTRICITY(){let e=this.bb.__offset(this.bb_pos,32);return e?this.bb.readFloat64(this.bb_pos+e):0}INCLINATION(){let e=this.bb.__offset(this.bb_pos,34);return e?this.bb.readFloat64(this.bb_pos+e):0}RA_OF_ASC_NODE(){let e=this.bb.__offset(this.bb_pos,36);return e?this.bb.readFloat64(this.bb_pos+e):0}ARG_OF_PERICENTER(){let e=this.bb.__offset(this.bb_pos,38);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_ANOMALY(){let e=this.bb.__offset(this.bb_pos,40);return e?this.bb.readFloat64(this.bb_pos+e):0}GM(){let e=this.bb.__offset(this.bb_pos,42);return e?this.bb.readFloat64(this.bb_pos+e):0}MASS(){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.readFloat64(this.bb_pos+e):0}SOLAR_RAD_AREA(){let e=this.bb.__offset(this.bb_pos,46);return e?this.bb.readFloat64(this.bb_pos+e):0}SOLAR_RAD_COEFF(){let e=this.bb.__offset(this.bb_pos,48);return e?this.bb.readFloat64(this.bb_pos+e):0}DRAG_AREA(){let e=this.bb.__offset(this.bb_pos,50);return e?this.bb.readFloat64(this.bb_pos+e):0}DRAG_COEFF(){let e=this.bb.__offset(this.bb_pos,52);return e?this.bb.readFloat64(this.bb_pos+e):0}EPHEMERIS_TYPE(){let e=this.bb.__offset(this.bb_pos,54);return e?this.bb.readInt8(this.bb_pos+e):dU.SGP4}CLASSIFICATION_TYPE(e){let n=this.bb.__offset(this.bb_pos,56);return n?this.bb.__string(this.bb_pos+n,e):null}NORAD_CAT_ID(){let e=this.bb.__offset(this.bb_pos,58);return e?this.bb.readUint32(this.bb_pos+e):0}ELEMENT_SET_NO(){let e=this.bb.__offset(this.bb_pos,60);return e?this.bb.readUint32(this.bb_pos+e):0}REV_AT_EPOCH(){let e=this.bb.__offset(this.bb_pos,62);return e?this.bb.readFloat64(this.bb_pos+e):0}BSTAR(){let e=this.bb.__offset(this.bb_pos,64);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_MOTION_DOT(){let e=this.bb.__offset(this.bb_pos,66);return e?this.bb.readFloat64(this.bb_pos+e):0}MEAN_MOTION_DDOT(){let e=this.bb.__offset(this.bb_pos,68);return e?this.bb.readFloat64(this.bb_pos+e):0}COV_REFERENCE_FRAME(){let e=this.bb.__offset(this.bb_pos,70);return e?this.bb.readInt8(this.bb_pos+e):zc.RSW}CX_X(){let e=this.bb.__offset(this.bb_pos,72);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_X(){let e=this.bb.__offset(this.bb_pos,74);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_Y(){let e=this.bb.__offset(this.bb_pos,76);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_X(){let e=this.bb.__offset(this.bb_pos,78);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_Y(){let e=this.bb.__offset(this.bb_pos,80);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_Z(){let e=this.bb.__offset(this.bb_pos,82);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_X(){let e=this.bb.__offset(this.bb_pos,84);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_Y(){let e=this.bb.__offset(this.bb_pos,86);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_Z(){let e=this.bb.__offset(this.bb_pos,88);return e?this.bb.readFloat64(this.bb_pos+e):0}CX_DOT_X_DOT(){let e=this.bb.__offset(this.bb_pos,90);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_X(){let e=this.bb.__offset(this.bb_pos,92);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_Y(){let e=this.bb.__offset(this.bb_pos,94);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_Z(){let e=this.bb.__offset(this.bb_pos,96);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_X_DOT(){let e=this.bb.__offset(this.bb_pos,98);return e?this.bb.readFloat64(this.bb_pos+e):0}CY_DOT_Y_DOT(){let e=this.bb.__offset(this.bb_pos,100);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_X(){let e=this.bb.__offset(this.bb_pos,102);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Y(){let e=this.bb.__offset(this.bb_pos,104);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Z(){let e=this.bb.__offset(this.bb_pos,106);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_X_DOT(){let e=this.bb.__offset(this.bb_pos,108);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Y_DOT(){let e=this.bb.__offset(this.bb_pos,110);return e?this.bb.readFloat64(this.bb_pos+e):0}CZ_DOT_Z_DOT(){let e=this.bb.__offset(this.bb_pos,112);return e?this.bb.readFloat64(this.bb_pos+e):0}USER_DEFINED_BIP_0044_TYPE(){let e=this.bb.__offset(this.bb_pos,114);return e?this.bb.readUint32(this.bb_pos+e):0}USER_DEFINED_OBJECT_DESIGNATOR(e){let n=this.bb.__offset(this.bb_pos,116);return n?this.bb.__string(this.bb_pos+n,e):null}USER_DEFINED_EARTH_MODEL(e){let n=this.bb.__offset(this.bb_pos,118);return n?this.bb.__string(this.bb_pos+n,e):null}USER_DEFINED_EPOCH_TIMESTAMP(){let e=this.bb.__offset(this.bb_pos,120);return e?this.bb.readFloat64(this.bb_pos+e):0}USER_DEFINED_MICROSECONDS(){let e=this.bb.__offset(this.bb_pos,122);return e?this.bb.readFloat64(this.bb_pos+e):0}static startOMM(e){e.startObject(60)}static addCcsdsOmmVers(e,n){e.addFieldFloat64(0,n,0)}static addCreationDate(e,n){e.addFieldOffset(1,n,0)}static addOriginator(e,n){e.addFieldOffset(2,n,0)}static addObjectName(e,n){e.addFieldOffset(3,n,0)}static addObjectId(e,n){e.addFieldOffset(4,n,0)}static addCenterName(e,n){e.addFieldOffset(5,n,0)}static addReferenceFrame(e,n){e.addFieldInt8(6,n,zc.TEME)}static addReferenceFrameEpoch(e,n){e.addFieldOffset(7,n,0)}static addTimeSystem(e,n){e.addFieldInt8(8,n,FV.UTC)}static addMeanElementTheory(e,n){e.addFieldInt8(9,n,fV.SGP4)}static addComment(e,n){e.addFieldOffset(10,n,0)}static addEpoch(e,n){e.addFieldOffset(11,n,0)}static addSemiMajorAxis(e,n){e.addFieldFloat64(12,n,0)}static addMeanMotion(e,n){e.addFieldFloat64(13,n,0)}static addEccentricity(e,n){e.addFieldFloat64(14,n,0)}static addInclination(e,n){e.addFieldFloat64(15,n,0)}static addRaOfAscNode(e,n){e.addFieldFloat64(16,n,0)}static addArgOfPericenter(e,n){e.addFieldFloat64(17,n,0)}static addMeanAnomaly(e,n){e.addFieldFloat64(18,n,0)}static addGm(e,n){e.addFieldFloat64(19,n,0)}static addMass(e,n){e.addFieldFloat64(20,n,0)}static addSolarRadArea(e,n){e.addFieldFloat64(21,n,0)}static addSolarRadCoeff(e,n){e.addFieldFloat64(22,n,0)}static addDragArea(e,n){e.addFieldFloat64(23,n,0)}static addDragCoeff(e,n){e.addFieldFloat64(24,n,0)}static addEphemerisType(e,n){e.addFieldInt8(25,n,dU.SGP4)}static addClassificationType(e,n){e.addFieldOffset(26,n,0)}static addNoradCatId(e,n){e.addFieldInt32(27,n,0)}static addElementSetNo(e,n){e.addFieldInt32(28,n,0)}static addRevAtEpoch(e,n){e.addFieldFloat64(29,n,0)}static addBstar(e,n){e.addFieldFloat64(30,n,0)}static addMeanMotionDot(e,n){e.addFieldFloat64(31,n,0)}static addMeanMotionDdot(e,n){e.addFieldFloat64(32,n,0)}static addCovReferenceFrame(e,n){e.addFieldInt8(33,n,zc.RSW)}static addCxX(e,n){e.addFieldFloat64(34,n,0)}static addCyX(e,n){e.addFieldFloat64(35,n,0)}static addCyY(e,n){e.addFieldFloat64(36,n,0)}static addCzX(e,n){e.addFieldFloat64(37,n,0)}static addCzY(e,n){e.addFieldFloat64(38,n,0)}static addCzZ(e,n){e.addFieldFloat64(39,n,0)}static addCxDotX(e,n){e.addFieldFloat64(40,n,0)}static addCxDotY(e,n){e.addFieldFloat64(41,n,0)}static addCxDotZ(e,n){e.addFieldFloat64(42,n,0)}static addCxDotXDot(e,n){e.addFieldFloat64(43,n,0)}static addCyDotX(e,n){e.addFieldFloat64(44,n,0)}static addCyDotY(e,n){e.addFieldFloat64(45,n,0)}static addCyDotZ(e,n){e.addFieldFloat64(46,n,0)}static addCyDotXDot(e,n){e.addFieldFloat64(47,n,0)}static addCyDotYDot(e,n){e.addFieldFloat64(48,n,0)}static addCzDotX(e,n){e.addFieldFloat64(49,n,0)}static addCzDotY(e,n){e.addFieldFloat64(50,n,0)}static addCzDotZ(e,n){e.addFieldFloat64(51,n,0)}static addCzDotXDot(e,n){e.addFieldFloat64(52,n,0)}static addCzDotYDot(e,n){e.addFieldFloat64(53,n,0)}static addCzDotZDot(e,n){e.addFieldFloat64(54,n,0)}static addUserDefinedBip0044Type(e,n){e.addFieldInt32(55,n,0)}static addUserDefinedObjectDesignator(e,n){e.addFieldOffset(56,n,0)}static addUserDefinedEarthModel(e,n){e.addFieldOffset(57,n,0)}static addUserDefinedEpochTimestamp(e,n){e.addFieldFloat64(58,n,0)}static addUserDefinedMicroseconds(e,n){e.addFieldFloat64(59,n,0)}static endOMM(e){return e.endObject()}static finishOMMBuffer(e,n){e.finish(n,"$OMM")}static finishSizePrefixedOMMBuffer(e,n){e.finish(n,"$OMM",!0)}static createOMM(e,n,i,o,a,s,l,r,d,m,h,u,R,V,F,U,G,A,S,g,C,y,Y,Q,J,M,Z,E,I,B,X,_,P,w,z,H,nt,$,dt,q,at,st,Et,Qt,Wt,Nt,kt,Mt,qt,ie,oe,He,rn,de,zt,ke,Ve,We,Vn,Ct,_t){return t.startOMM(e),t.addCcsdsOmmVers(e,n),t.addCreationDate(e,i),t.addOriginator(e,o),t.addObjectName(e,a),t.addObjectId(e,s),t.addCenterName(e,l),t.addReferenceFrame(e,r),t.addReferenceFrameEpoch(e,d),t.addTimeSystem(e,m),t.addMeanElementTheory(e,h),t.addComment(e,u),t.addEpoch(e,R),t.addSemiMajorAxis(e,V),t.addMeanMotion(e,F),t.addEccentricity(e,U),t.addInclination(e,G),t.addRaOfAscNode(e,A),t.addArgOfPericenter(e,S),t.addMeanAnomaly(e,g),t.addGm(e,C),t.addMass(e,y),t.addSolarRadArea(e,Y),t.addSolarRadCoeff(e,Q),t.addDragArea(e,J),t.addDragCoeff(e,M),t.addEphemerisType(e,Z),t.addClassificationType(e,E),t.addNoradCatId(e,I),t.addElementSetNo(e,B),t.addRevAtEpoch(e,X),t.addBstar(e,_),t.addMeanMotionDot(e,P),t.addMeanMotionDdot(e,w),t.addCovReferenceFrame(e,z),t.addCxX(e,H),t.addCyX(e,nt),t.addCyY(e,$),t.addCzX(e,dt),t.addCzY(e,q),t.addCzZ(e,at),t.addCxDotX(e,st),t.addCxDotY(e,Et),t.addCxDotZ(e,Qt),t.addCxDotXDot(e,Wt),t.addCyDotX(e,Nt),t.addCyDotY(e,kt),t.addCyDotZ(e,Mt),t.addCyDotXDot(e,qt),t.addCyDotYDot(e,ie),t.addCzDotX(e,oe),t.addCzDotY(e,He),t.addCzDotZ(e,rn),t.addCzDotXDot(e,de),t.addCzDotYDot(e,zt),t.addCzDotZDot(e,ke),t.addUserDefinedBip0044Type(e,Ve),t.addUserDefinedObjectDesignator(e,We),t.addUserDefinedEarthModel(e,Vn),t.addUserDefinedEpochTimestamp(e,Ct),t.addUserDefinedMicroseconds(e,_t),t.endOMM(e)}unpack(){return new SM(this.CCSDS_OMM_VERS(),this.CREATION_DATE(),this.ORIGINATOR(),this.OBJECT_NAME(),this.OBJECT_ID(),this.CENTER_NAME(),this.REFERENCE_FRAME(),this.REFERENCE_FRAME_EPOCH(),this.TIME_SYSTEM(),this.MEAN_ELEMENT_THEORY(),this.COMMENT(),this.EPOCH(),this.SEMI_MAJOR_AXIS(),this.MEAN_MOTION(),this.ECCENTRICITY(),this.INCLINATION(),this.RA_OF_ASC_NODE(),this.ARG_OF_PERICENTER(),this.MEAN_ANOMALY(),this.GM(),this.MASS(),this.SOLAR_RAD_AREA(),this.SOLAR_RAD_COEFF(),this.DRAG_AREA(),this.DRAG_COEFF(),this.EPHEMERIS_TYPE(),this.CLASSIFICATION_TYPE(),this.NORAD_CAT_ID(),this.ELEMENT_SET_NO(),this.REV_AT_EPOCH(),this.BSTAR(),this.MEAN_MOTION_DOT(),this.MEAN_MOTION_DDOT(),this.COV_REFERENCE_FRAME(),this.CX_X(),this.CY_X(),this.CY_Y(),this.CZ_X(),this.CZ_Y(),this.CZ_Z(),this.CX_DOT_X(),this.CX_DOT_Y(),this.CX_DOT_Z(),this.CX_DOT_X_DOT(),this.CY_DOT_X(),this.CY_DOT_Y(),this.CY_DOT_Z(),this.CY_DOT_X_DOT(),this.CY_DOT_Y_DOT(),this.CZ_DOT_X(),this.CZ_DOT_Y(),this.CZ_DOT_Z(),this.CZ_DOT_X_DOT(),this.CZ_DOT_Y_DOT(),this.CZ_DOT_Z_DOT(),this.USER_DEFINED_BIP_0044_TYPE(),this.USER_DEFINED_OBJECT_DESIGNATOR(),this.USER_DEFINED_EARTH_MODEL(),this.USER_DEFINED_EPOCH_TIMESTAMP(),this.USER_DEFINED_MICROSECONDS())}unpackTo(e){e.CCSDS_OMM_VERS=this.CCSDS_OMM_VERS(),e.CREATION_DATE=this.CREATION_DATE(),e.ORIGINATOR=this.ORIGINATOR(),e.OBJECT_NAME=this.OBJECT_NAME(),e.OBJECT_ID=this.OBJECT_ID(),e.CENTER_NAME=this.CENTER_NAME(),e.REFERENCE_FRAME=this.REFERENCE_FRAME(),e.REFERENCE_FRAME_EPOCH=this.REFERENCE_FRAME_EPOCH(),e.TIME_SYSTEM=this.TIME_SYSTEM(),e.MEAN_ELEMENT_THEORY=this.MEAN_ELEMENT_THEORY(),e.COMMENT=this.COMMENT(),e.EPOCH=this.EPOCH(),e.SEMI_MAJOR_AXIS=this.SEMI_MAJOR_AXIS(),e.MEAN_MOTION=this.MEAN_MOTION(),e.ECCENTRICITY=this.ECCENTRICITY(),e.INCLINATION=this.INCLINATION(),e.RA_OF_ASC_NODE=this.RA_OF_ASC_NODE(),e.ARG_OF_PERICENTER=this.ARG_OF_PERICENTER(),e.MEAN_ANOMALY=this.MEAN_ANOMALY(),e.GM=this.GM(),e.MASS=this.MASS(),e.SOLAR_RAD_AREA=this.SOLAR_RAD_AREA(),e.SOLAR_RAD_COEFF=this.SOLAR_RAD_COEFF(),e.DRAG_AREA=this.DRAG_AREA(),e.DRAG_COEFF=this.DRAG_COEFF(),e.EPHEMERIS_TYPE=this.EPHEMERIS_TYPE(),e.CLASSIFICATION_TYPE=this.CLASSIFICATION_TYPE(),e.NORAD_CAT_ID=this.NORAD_CAT_ID(),e.ELEMENT_SET_NO=this.ELEMENT_SET_NO(),e.REV_AT_EPOCH=this.REV_AT_EPOCH(),e.BSTAR=this.BSTAR(),e.MEAN_MOTION_DOT=this.MEAN_MOTION_DOT(),e.MEAN_MOTION_DDOT=this.MEAN_MOTION_DDOT(),e.COV_REFERENCE_FRAME=this.COV_REFERENCE_FRAME(),e.CX_X=this.CX_X(),e.CY_X=this.CY_X(),e.CY_Y=this.CY_Y(),e.CZ_X=this.CZ_X(),e.CZ_Y=this.CZ_Y(),e.CZ_Z=this.CZ_Z(),e.CX_DOT_X=this.CX_DOT_X(),e.CX_DOT_Y=this.CX_DOT_Y(),e.CX_DOT_Z=this.CX_DOT_Z(),e.CX_DOT_X_DOT=this.CX_DOT_X_DOT(),e.CY_DOT_X=this.CY_DOT_X(),e.CY_DOT_Y=this.CY_DOT_Y(),e.CY_DOT_Z=this.CY_DOT_Z(),e.CY_DOT_X_DOT=this.CY_DOT_X_DOT(),e.CY_DOT_Y_DOT=this.CY_DOT_Y_DOT(),e.CZ_DOT_X=this.CZ_DOT_X(),e.CZ_DOT_Y=this.CZ_DOT_Y(),e.CZ_DOT_Z=this.CZ_DOT_Z(),e.CZ_DOT_X_DOT=this.CZ_DOT_X_DOT(),e.CZ_DOT_Y_DOT=this.CZ_DOT_Y_DOT(),e.CZ_DOT_Z_DOT=this.CZ_DOT_Z_DOT(),e.USER_DEFINED_BIP_0044_TYPE=this.USER_DEFINED_BIP_0044_TYPE(),e.USER_DEFINED_OBJECT_DESIGNATOR=this.USER_DEFINED_OBJECT_DESIGNATOR(),e.USER_DEFINED_EARTH_MODEL=this.USER_DEFINED_EARTH_MODEL(),e.USER_DEFINED_EPOCH_TIMESTAMP=this.USER_DEFINED_EPOCH_TIMESTAMP(),e.USER_DEFINED_MICROSECONDS=this.USER_DEFINED_MICROSECONDS()}},SM=class{constructor(e=0,n=null,i=null,o=null,a=null,s=null,l=zc.TEME,r=null,d=FV.UTC,m=fV.SGP4,h=null,u=null,R=0,V=0,F=0,U=0,G=0,A=0,S=0,g=0,C=0,y=0,Y=0,Q=0,J=0,M=dU.SGP4,Z=null,E=0,I=0,B=0,X=0,_=0,P=0,w=zc.RSW,z=0,H=0,nt=0,$=0,dt=0,q=0,at=0,st=0,Et=0,Qt=0,Wt=0,Nt=0,kt=0,Mt=0,qt=0,ie=0,oe=0,He=0,rn=0,de=0,zt=0,ke=0,Ve=null,We=null,Vn=0,Ct=0){this.CCSDS_OMM_VERS=e,this.CREATION_DATE=n,this.ORIGINATOR=i,this.OBJECT_NAME=o,this.OBJECT_ID=a,this.CENTER_NAME=s,this.REFERENCE_FRAME=l,this.REFERENCE_FRAME_EPOCH=r,this.TIME_SYSTEM=d,this.MEAN_ELEMENT_THEORY=m,this.COMMENT=h,this.EPOCH=u,this.SEMI_MAJOR_AXIS=R,this.MEAN_MOTION=V,this.ECCENTRICITY=F,this.INCLINATION=U,this.RA_OF_ASC_NODE=G,this.ARG_OF_PERICENTER=A,this.MEAN_ANOMALY=S,this.GM=g,this.MASS=C,this.SOLAR_RAD_AREA=y,this.SOLAR_RAD_COEFF=Y,this.DRAG_AREA=Q,this.DRAG_COEFF=J,this.EPHEMERIS_TYPE=M,this.CLASSIFICATION_TYPE=Z,this.NORAD_CAT_ID=E,this.ELEMENT_SET_NO=I,this.REV_AT_EPOCH=B,this.BSTAR=X,this.MEAN_MOTION_DOT=_,this.MEAN_MOTION_DDOT=P,this.COV_REFERENCE_FRAME=w,this.CX_X=z,this.CY_X=H,this.CY_Y=nt,this.CZ_X=$,this.CZ_Y=dt,this.CZ_Z=q,this.CX_DOT_X=at,this.CX_DOT_Y=st,this.CX_DOT_Z=Et,this.CX_DOT_X_DOT=Qt,this.CY_DOT_X=Wt,this.CY_DOT_Y=Nt,this.CY_DOT_Z=kt,this.CY_DOT_X_DOT=Mt,this.CY_DOT_Y_DOT=qt,this.CZ_DOT_X=ie,this.CZ_DOT_Y=oe,this.CZ_DOT_Z=He,this.CZ_DOT_X_DOT=rn,this.CZ_DOT_Y_DOT=de,this.CZ_DOT_Z_DOT=zt,this.USER_DEFINED_BIP_0044_TYPE=ke,this.USER_DEFINED_OBJECT_DESIGNATOR=Ve,this.USER_DEFINED_EARTH_MODEL=We,this.USER_DEFINED_EPOCH_TIMESTAMP=Vn,this.USER_DEFINED_MICROSECONDS=Ct}pack(e){let n=this.CREATION_DATE!==null?e.createString(this.CREATION_DATE):0,i=this.ORIGINATOR!==null?e.createString(this.ORIGINATOR):0,o=this.OBJECT_NAME!==null?e.createString(this.OBJECT_NAME):0,a=this.OBJECT_ID!==null?e.createString(this.OBJECT_ID):0,s=this.CENTER_NAME!==null?e.createString(this.CENTER_NAME):0,l=this.REFERENCE_FRAME_EPOCH!==null?e.createString(this.REFERENCE_FRAME_EPOCH):0,r=this.COMMENT!==null?e.createString(this.COMMENT):0,d=this.EPOCH!==null?e.createString(this.EPOCH):0,m=this.CLASSIFICATION_TYPE!==null?e.createString(this.CLASSIFICATION_TYPE):0,h=this.USER_DEFINED_OBJECT_DESIGNATOR!==null?e.createString(this.USER_DEFINED_OBJECT_DESIGNATOR):0,u=this.USER_DEFINED_EARTH_MODEL!==null?e.createString(this.USER_DEFINED_EARTH_MODEL):0;return eT.createOMM(e,this.CCSDS_OMM_VERS,n,i,o,a,s,this.REFERENCE_FRAME,l,this.TIME_SYSTEM,this.MEAN_ELEMENT_THEORY,r,d,this.SEMI_MAJOR_AXIS,this.MEAN_MOTION,this.ECCENTRICITY,this.INCLINATION,this.RA_OF_ASC_NODE,this.ARG_OF_PERICENTER,this.MEAN_ANOMALY,this.GM,this.MASS,this.SOLAR_RAD_AREA,this.SOLAR_RAD_COEFF,this.DRAG_AREA,this.DRAG_COEFF,this.EPHEMERIS_TYPE,m,this.NORAD_CAT_ID,this.ELEMENT_SET_NO,this.REV_AT_EPOCH,this.BSTAR,this.MEAN_MOTION_DOT,this.MEAN_MOTION_DDOT,this.COV_REFERENCE_FRAME,this.CX_X,this.CY_X,this.CY_Y,this.CZ_X,this.CZ_Y,this.CZ_Z,this.CX_DOT_X,this.CX_DOT_Y,this.CX_DOT_Z,this.CX_DOT_X_DOT,this.CY_DOT_X,this.CY_DOT_Y,this.CY_DOT_Z,this.CY_DOT_X_DOT,this.CY_DOT_Y_DOT,this.CZ_DOT_X,this.CZ_DOT_Y,this.CZ_DOT_Z,this.CZ_DOT_X_DOT,this.CZ_DOT_Y_DOT,this.CZ_DOT_Z_DOT,this.USER_DEFINED_BIP_0044_TYPE,h,u,this.USER_DEFINED_EPOCH_TIMESTAMP,this.USER_DEFINED_MICROSECONDS)}};var Gqi=b(W(),1);var h1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsOMMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsOMMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new eT).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startOMMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endOMMCOLLECTION(e){return e.endObject()}static createOMMCOLLECTION(e,n){return t.startOMMCOLLECTION(e),t.addRecords(e,n),t.endOMMCOLLECTION(e)}unpack(){return new TM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},TM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=h1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return h1.createOMMCOLLECTION(e,n)}};var Tqi=b(W(),1);var nT=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsRFM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRFM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$RFM")}REFERENCE_FRAME(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):zc.ECEF}static startRFM(e){e.startObject(1)}static addReferenceFrame(e,n){e.addFieldInt8(0,n,zc.ECEF)}static endRFM(e){return e.endObject()}static finishRFMBuffer(e,n){e.finish(n,"$RFM")}static finishSizePrefixedRFMBuffer(e,n){e.finish(n,"$RFM",!0)}static createRFM(e,n){return t.startRFM(e),t.addReferenceFrame(e,n),t.endRFM(e)}unpack(){return new gM(this.REFERENCE_FRAME())}unpackTo(e){e.REFERENCE_FRAME=this.REFERENCE_FRAME()}},gM=class{constructor(e=zc.ECEF){this.REFERENCE_FRAME=e}pack(e){return nT.createRFM(e,this.REFERENCE_FRAME)}};var Cqi=b(W(),1);var p1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsRFMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsRFMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new nT).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startRFMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endRFMCOLLECTION(e){return e.endObject()}static createRFMCOLLECTION(e,n){return t.startRFMCOLLECTION(e),t.addRecords(e,n),t.endRFMCOLLECTION(e)}unpack(){return new EM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},EM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=p1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return p1.createRFMCOLLECTION(e,n)}};var yqi=b(W(),1);var iT=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsTIM(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsTIM(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static bufferHasIdentifier(e){return e.__has_identifier("$TIM")}TIME_SYSTEM(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.readInt8(this.bb_pos+e):FV.GMST}static startTIM(e){e.startObject(1)}static addTimeSystem(e,n){e.addFieldInt8(0,n,FV.GMST)}static endTIM(e){return e.endObject()}static finishTIMBuffer(e,n){e.finish(n,"$TIM")}static finishSizePrefixedTIMBuffer(e,n){e.finish(n,"$TIM",!0)}static createTIM(e,n){return t.startTIM(e),t.addTimeSystem(e,n),t.endTIM(e)}unpack(){return new CM(this.TIME_SYSTEM())}unpackTo(e){e.TIME_SYSTEM=this.TIME_SYSTEM()}},CM=class{constructor(e=FV.GMST){this.TIME_SYSTEM=e}pack(e){return iT.createTIM(e,this.TIME_SYSTEM)}};var kqi=b(W(),1);var V1=class t{constructor(){this.bb=null,this.bb_pos=0}__init(e,n){return this.bb_pos=e,this.bb=n,this}static getRootAsTIMCOLLECTION(e,n){return(n||new t).__init(e.readInt32(e.position())+e.position(),e)}static getSizePrefixedRootAsTIMCOLLECTION(e,n){return e.setPosition(e.position()+4),(n||new t).__init(e.readInt32(e.position())+e.position(),e)}RECORDS(e,n){let i=this.bb.__offset(this.bb_pos,4);return i?(n||new iT).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+i)+e*4),this.bb):null}recordsLength(){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__vector_len(this.bb_pos+e):0}static startTIMCOLLECTION(e){e.startObject(1)}static addRecords(e,n){e.addFieldOffset(0,n,0)}static createRecordsVector(e,n){e.startVector(4,n.length,4);for(let i=n.length-1;i>=0;i--)e.addOffset(n[i]);return e.endVector()}static startRecordsVector(e,n){e.startVector(4,n,4)}static endTIMCOLLECTION(e){return e.endObject()}static createTIMCOLLECTION(e,n){return t.startTIMCOLLECTION(e),t.addRecords(e,n),t.endTIMCOLLECTION(e)}unpack(){return new IM(this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength()))}unpackTo(e){e.RECORDS=this.bb.createObjList(this.RECORDS.bind(this),this.recordsLength())}},IM=class{constructor(e=[]){this.RECORDS=e}pack(e){let n=V1.createRecordsVector(e,e.createObjectOffsetList(this.RECORDS));return V1.createTIMCOLLECTION(e,n)}};var i$i=b(W(),1);var zqi=b(W(),1);var $qi=b(W(),1);var v$i=b(W(),1);var c$i=b(W(),1);var l$i=b(W(),1);var h$i=b(W(),1),IK;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(IK||(IK={}));var V$i=b(W(),1),NK;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(NK||(NK={}));var C$i=b(W(),1);var Z$i=b(W(),1),yK;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(yK||(yK={}));var b$i=b(W(),1),BK;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(BK||(BK={}));var f$i=b(W(),1);var y$i=b(W(),1);var k$i=b(W(),1);var X$i=b(W(),1);var Vto=b(W(),1);var lto=b(W(),1);var cto=b(W(),1);var Cto=b(W(),1);var Fto=b(W(),1);var bto=b(W(),1);var Ato=b(W(),1);var oro=b(W(),1);var Qto=b(W(),1);var Yto=b(W(),1);var Jto=b(W(),1);var Oto=b(W(),1);var Mto=b(W(),1);var Ieo=b(W(),1);var heo=b(W(),1);var deo=b(W(),1);var wto=b(W(),1),QK;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(QK||(QK={}));var vto=b(W(),1),kK;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(kK||(kK={}));var zto=b(W(),1),YK;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(YK||(YK={}));var qto=b(W(),1),xK;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(xK||(xK={}));var teo=b(W(),1);var Veo=b(W(),1),JK;(function(t){t[t.NO_CURRENT_ELEMENTS=0]="NO_CURRENT_ELEMENTS",t[t.NO_INITIAL_ELEMENTS=1]="NO_INITIAL_ELEMENTS",t[t.NO_ELEMENTS_AVAILABLE=2]="NO_ELEMENTS_AVAILABLE",t[t.OK=3]="OK"})(JK||(JK={}));var Zeo=b(W(),1),LK;(function(t){t[t.DRY=0]="DRY",t[t.WET=1]="WET"})(LK||(LK={}));var beo=b(W(),1),MK;(function(t){t[t.PAYLOAD=0]="PAYLOAD",t[t.ROCKET_BODY=1]="ROCKET_BODY",t[t.DEBRIS=2]="DEBRIS",t[t.UNKNOWN=3]="UNKNOWN"})(MK||(MK={}));var feo=b(W(),1),_K;(function(t){t[t.OPERATIONAL=0]="OPERATIONAL",t[t.NONOPERATIONAL=1]="NONOPERATIONAL",t[t.PARTIALLY_OPERATIONAL=2]="PARTIALLY_OPERATIONAL",t[t.BACKUP_STANDBY=3]="BACKUP_STANDBY",t[t.SPARE=4]="SPARE",t[t.EXTENDED_MISSION=5]="EXTENDED_MISSION",t[t.DECAYED=6]="DECAYED",t[t.UNKNOWN=7]="UNKNOWN"})(_K||(_K={}));var Ueo=b(W(),1),DK;(function(t){t[t.ORBIT=0]="ORBIT",t[t.LANDING=1]="LANDING",t[t.IMPACT=2]="IMPACT",t[t.DOCKED=3]="DOCKED",t[t.ROUNDTRIP=4]="ROUNDTRIP"})(DK||(DK={}));var Beo=b(W(),1);var rno=b(W(),1);var qeo=b(W(),1);var _eo=b(W(),1);var Xeo=b(W(),1);var keo=b(W(),1),OK;(function(t){t[t.Signing=0]="Signing",t[t.Encryption=1]="Encryption"})(OK||(OK={}));var Oeo=b(W(),1),HK;(function(t){t[t.CALCULATED=0]="CALCULATED",t[t.DEFAULT=1]="DEFAULT"})(HK||(HK={}));var weo=b(W(),1),$u;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})($u||($u={}));var tno=b(W(),1);var nno=b(W(),1),PK;(function(t){t[t.ELLIPSOID=0]="ELLIPSOID",t[t.BOX=1]="BOX"})(PK||(PK={}));var mno=b(W(),1);var pno=b(W(),1);var Zno=b(W(),1);var Wno=b(W(),1);var Uno=b(W(),1);var Ano=b(W(),1);var gno=b(W(),1);var Cno=b(W(),1),vK;(function(t){t[t.OBSERVED=0]="OBSERVED",t[t.PREDICTED=1]="PREDICTED"})(vK||(vK={}));var Nno=b(W(),1);var Qno=b(W(),1);var Jno=b(W(),1);var Yno=b(W(),1),KK;(function(t){t[t.LIQUID=0]="LIQUID",t[t.SOLID=1]="SOLID",t[t.HYBRID=2]="HYBRID",t[t.ION=3]="ION",t[t.NUCLEAR_THERMAL=4]="NUCLEAR_THERMAL",t[t.OTHER=5]="OTHER"})(KK||(KK={}));var _no=b(W(),1);var Hno=b(W(),1);var vno=b(W(),1);var jno=b(W(),1);var tio=b(W(),1);var nio=b(W(),1);var cio=b(W(),1);var lio=b(W(),1);var oio=b(W(),1),zK;(function(t){t[t.OUTLIER=0]="OUTLIER"})(zK||(zK={}));var pio=b(W(),1);var Zio=b(W(),1);var Jio=b(W(),1);var Sio=b(W(),1);var Wio=b(W(),1);var Fio=b(W(),1);var yio=b(W(),1);var gio=b(W(),1),jK;(function(t){t[t.LAUNCH_SITE=0]="LAUNCH_SITE",t[t.OBSERVATION_STATION=1]="OBSERVATION_STATION",t[t.HOBBYIST_OBSERVER=2]="HOBBYIST_OBSERVER",t[t.RESEARCH_FACILITY=3]="RESEARCH_FACILITY",t[t.SATELLITE_GROUND_STATION=4]="SATELLITE_GROUND_STATION",t[t.SPACEPORT=5]="SPACEPORT",t[t.MILITARY_BASE=6]="MILITARY_BASE",t[t.WEATHER_STATION=7]="WEATHER_STATION",t[t.ASTRONOMICAL_OBSERVATORY=8]="ASTRONOMICAL_OBSERVATORY",t[t.EDUCATIONAL_INSTITUTE=9]="EDUCATIONAL_INSTITUTE",t[t.COMMUNICATION_HUB=10]="COMMUNICATION_HUB",t[t.POWER_PLANT=11]="POWER_PLANT",t[t.INDUSTRIAL_COMPLEX=12]="INDUSTRIAL_COMPLEX",t[t.TRANSPORTATION_HUB=13]="TRANSPORTATION_HUB",t[t.URBAN_AREA=14]="URBAN_AREA",t[t.NATIONAL_PARK=15]="NATIONAL_PARK",t[t.HISTORICAL_SITE=16]="HISTORICAL_SITE",t[t.OTHER=17]="OTHER"})(jK||(jK={}));var _io=b(W(),1);var Pio=b(W(),1);var Oio=b(W(),1),u1;(function(t){t[t.SGP4=0]="SGP4",t[t.SGP4XP=1]="SGP4XP",t[t.DSST=2]="DSST",t[t.USM=3]="USM"})(u1||(u1={}));var zio=b(W(),1);var $io=b(W(),1);var noo=b(W(),1);var boo=b(W(),1);var uoo=b(W(),1);var aoo=b(W(),1);var loo=b(W(),1);var doo=b(W(),1),Z1;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(Z1||(Z1={}));var Foo=b(W(),1);var Coo=b(W(),1);var Goo=b(W(),1),qK;(function(t){t[t.SGP=0]="SGP",t[t.SGP4=1]="SGP4",t[t.SDP4=2]="SDP4",t[t.SGP8=3]="SGP8",t[t.SDP8=4]="SDP8"})(qK||(qK={}));var yoo=b(W(),1);var Qoo=b(W(),1);var xoo=b(W(),1);var Loo=b(W(),1);var Doo=b(W(),1);var voo=b(W(),1);var Hoo=b(W(),1);var joo=b(W(),1);var Pao=b(W(),1);var Oao=b(W(),1);var Lao=b(W(),1);var tao=b(W(),1);var aao=b(W(),1);var nao=b(W(),1);var rao=b(W(),1);var mao=b(W(),1);var $K;(function(t){t[t.NONE=0]="NONE",t[t.MPE=1]="MPE",t[t.OMM=2]="OMM",t[t.PLD=3]="PLD",t[t.RFM=4]="RFM",t[t.CSM=5]="CSM",t[t.OSM=6]="OSM",t[t.CAT=7]="CAT",t[t.CRM=8]="CRM",t[t.SCM=9]="SCM",t[t.TDM=10]="TDM",t[t.IDM=11]="IDM",t[t.MET=12]="MET",t[t.ROC=13]="ROC",t[t.BOV=14]="BOV",t[t.EOP=15]="EOP",t[t.EOO=16]="EOO",t[t.EME=17]="EME",t[t.LDM=18]="LDM",t[t.PNM=19]="PNM",t[t.HYP=20]="HYP",t[t.CTR=21]="CTR",t[t.CDM=22]="CDM",t[t.SIT=23]="SIT",t[t.OEM=24]="OEM",t[t.TIM=25]="TIM",t[t.EPM=26]="EPM",t[t.PRG=27]="PRG"})($K||($K={}));var zao=b(W(),1);var $ao=b(W(),1);var nso=b(W(),1);var aso=b(W(),1);var rso=b(W(),1);var mso=b(W(),1);var eco=b(W(),1);var vdo=b(W(),1);var Hdo=b(W(),1),tz;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(tz||(tz={}));var jdo=b(W(),1);var Eco=b(W(),1);var dco=b(W(),1);var sco=b(W(),1),ez;(function(t){t[t.LIQUID=0]="LIQUID",t[t.SOLID=1]="SOLID",t[t.HYBRID=2]="HYBRID",t[t.ION=3]="ION",t[t.NUCLEAR_THERMAL=4]="NUCLEAR_THERMAL",t[t.OTHER=5]="OTHER"})(ez||(ez={}));var bco=b(W(),1);var hco=b(W(),1);var Vco=b(W(),1);var Fco=b(W(),1);var Pco=b(W(),1);var Yco=b(W(),1);var Jco=b(W(),1);var _co=b(W(),1);var wmo=b(W(),1);var emo=b(W(),1);var qco=b(W(),1);var imo=b(W(),1),nz;(function(t){t[t.REAL=0]="REAL",t[t.SIMULATED=1]="SIMULATED",t[t.SYNTHETIC=2]="SYNTHETIC"})(nz||(nz={}));var amo=b(W(),1),iz;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTICAL=1]="OPTICAL",t[t.INFRARED_SENSOR=2]="INFRARED_SENSOR",t[t.ULTRAVIOLET_SENSOR=3]="ULTRAVIOLET_SENSOR",t[t.X_RAY_SENSOR=4]="X_RAY_SENSOR",t[t.GAMMA_RAY_SENSOR=5]="GAMMA_RAY_SENSOR",t[t.RADAR=6]="RADAR",t[t.PHASED_ARRAY_RADAR=7]="PHASED_ARRAY_RADAR",t[t.SYNTHETIC_APERTURE_RADAR=8]="SYNTHETIC_APERTURE_RADAR",t[t.BISTATIC_RADIO_TELESCOPE=9]="BISTATIC_RADIO_TELESCOPE",t[t.RADIO_TELESCOPE=10]="RADIO_TELESCOPE",t[t.ATMOSPHERIC_SENSOR=11]="ATMOSPHERIC_SENSOR",t[t.SPACE_WEATHER_SENSOR=12]="SPACE_WEATHER_SENSOR",t[t.ENVIRONMENTAL_SENSOR=13]="ENVIRONMENTAL_SENSOR",t[t.SEISMIC_SENSOR=14]="SEISMIC_SENSOR",t[t.GRAVIMETRIC_SENSOR=15]="GRAVIMETRIC_SENSOR",t[t.MAGNETIC_SENSOR=16]="MAGNETIC_SENSOR",t[t.ELECTROMAGNETIC_SENSOR=17]="ELECTROMAGNETIC_SENSOR",t[t.THERMAL_SENSOR=18]="THERMAL_SENSOR",t[t.CHEMICAL_SENSOR=19]="CHEMICAL_SENSOR",t[t.BIOLOGICAL_SENSOR=20]="BIOLOGICAL_SENSOR",t[t.RADIATION_SENSOR=21]="RADIATION_SENSOR",t[t.PARTICLE_DETECTOR=22]="PARTICLE_DETECTOR",t[t.LIDAR=23]="LIDAR",t[t.SONAR=24]="SONAR",t[t.TELESCOPE=25]="TELESCOPE",t[t.SPECTROSCOPIC_SENSOR=26]="SPECTROSCOPIC_SENSOR",t[t.PHOTOMETRIC_SENSOR=27]="PHOTOMETRIC_SENSOR",t[t.POLARIMETRIC_SENSOR=28]="POLARIMETRIC_SENSOR",t[t.INTERFEROMETRIC_SENSOR=29]="INTERFEROMETRIC_SENSOR",t[t.MULTISPECTRAL_SENSOR=30]="MULTISPECTRAL_SENSOR",t[t.HYPERSPECTRAL_SENSOR=31]="HYPERSPECTRAL_SENSOR",t[t.GPS_RECEIVER=32]="GPS_RECEIVER",t[t.RADIO_COMMUNICATIONS=33]="RADIO_COMMUNICATIONS",t[t.LASER_COMMUNICATIONS=34]="LASER_COMMUNICATIONS",t[t.SATELLITE_COMMUNICATIONS=35]="SATELLITE_COMMUNICATIONS",t[t.LASER_INSTRUMENT=36]="LASER_INSTRUMENT",t[t.RF_ANALYZER=37]="RF_ANALYZER",t[t.IONOSPHERIC_SENSOR=38]="IONOSPHERIC_SENSOR",t[t.LASER_IMAGING=39]="LASER_IMAGING",t[t.OPTICAL_TELESCOPE=40]="OPTICAL_TELESCOPE",t[t.HIGH_RESOLUTION_OPTICAL=41]="HIGH_RESOLUTION_OPTICAL",t[t.RADIO=42]="RADIO",t[t.MICROWAVE_TRANSMITTER=43]="MICROWAVE_TRANSMITTER",t[t.RF_MONITOR=44]="RF_MONITOR",t[t.HF_RADIO_COMMUNICATIONS=45]="HF_RADIO_COMMUNICATIONS"})(iz||(iz={}));var lmo=b(W(),1);var Umo=b(W(),1);var dmo=b(W(),1),oz;(function(t){t[t.linear=0]="linear",t[t.circular=1]="circular",t[t.elliptical=2]="elliptical",t[t.unpolarized=3]="unpolarized"})(oz||(oz={}));var mmo=b(W(),1),az;(function(t){t[t.vertical=0]="vertical",t[t.horizontal=1]="horizontal",t[t.leftHandCircular=2]="leftHandCircular",t[t.rightHandCircular=3]="rightHandCircular"})(az||(az={}));var pmo=b(W(),1);var Smo=b(W(),1);var ymo=b(W(),1);var gmo=b(W(),1),sz;(function(t){t[t.LAUNCH_SITE=0]="LAUNCH_SITE",t[t.OBSERVATION_STATION=1]="OBSERVATION_STATION",t[t.HOBBYIST_OBSERVER=2]="HOBBYIST_OBSERVER",t[t.RESEARCH_FACILITY=3]="RESEARCH_FACILITY",t[t.SATELLITE_GROUND_STATION=4]="SATELLITE_GROUND_STATION",t[t.SPACEPORT=5]="SPACEPORT",t[t.MILITARY_BASE=6]="MILITARY_BASE",t[t.WEATHER_STATION=7]="WEATHER_STATION",t[t.ASTRONOMICAL_OBSERVATORY=8]="ASTRONOMICAL_OBSERVATORY",t[t.EDUCATIONAL_INSTITUTE=9]="EDUCATIONAL_INSTITUTE",t[t.COMMUNICATION_HUB=10]="COMMUNICATION_HUB",t[t.POWER_PLANT=11]="POWER_PLANT",t[t.INDUSTRIAL_COMPLEX=12]="INDUSTRIAL_COMPLEX",t[t.TRANSPORTATION_HUB=13]="TRANSPORTATION_HUB",t[t.URBAN_AREA=14]="URBAN_AREA",t[t.NATIONAL_PARK=15]="NATIONAL_PARK",t[t.HISTORICAL_SITE=16]="HISTORICAL_SITE",t[t.OTHER=17]="OTHER"})(sz||(sz={}));var kmo=b(W(),1);var Tho=b(W(),1);var cho=b(W(),1);var lho=b(W(),1),yM;(function(t){t[t.ECEF=0]="ECEF",t[t.ICRF=1]="ICRF",t[t.TEME=2]="TEME",t[t.ENU=3]="ENU",t[t.NED=4]="NED",t[t.NEU=5]="NEU",t[t.RIC=6]="RIC",t[t.J2000=7]="J2000",t[t.GCRF=8]="GCRF",t[t.GRC=9]="GRC",t[t.ITRF2000=10]="ITRF2000",t[t.ITRF93=11]="ITRF93",t[t.ITRF97=12]="ITRF97",t[t.TDR=13]="TDR",t[t.TOD=14]="TOD",t[t.RTN=15]="RTN",t[t.TVN=16]="TVN",t[t.VVLH=17]="VVLH",t[t.VLVH=18]="VLVH",t[t.LTP=19]="LTP",t[t.LVLH=20]="LVLH",t[t.PNE=21]="PNE",t[t.BRF=22]="BRF",t[t.RSW=23]="RSW",t[t.TNW=24]="TNW"})(yM||(yM={}));var pho=b(W(),1);var Zho=b(W(),1);var Who=b(W(),1);var Dho=b(W(),1);var Yho=b(W(),1);var Bho=b(W(),1),lz;(function(t){t[t.GMST=0]="GMST",t[t.GPS=1]="GPS",t[t.MET=2]="MET",t[t.MRT=3]="MRT",t[t.SCLK=4]="SCLK",t[t.TAI=5]="TAI",t[t.TCB=6]="TCB",t[t.TDB=7]="TDB",t[t.TCG=8]="TCG",t[t.TT=9]="TT",t[t.UT1=10]="UT1",t[t.UTC=11]="UTC"})(lz||(lz={}));var Jho=b(W(),1);var{OMMT:ZTe,OMMCOLLECTIONT:apo}=sW,{CATT:RTe,CATCOLLECTIONT:spo}=aW;Number.prototype.map=function(t,e,n,i){return(this-t)*(i-n)/(e-t)+n};var oT=class extends qa{constructor(e,n,i,o){super(e),this.constructor.prototype.wasmSchema={},this._position=new Bs,this._spaceCatalog=i,this._wasmModule=n,this._velocity={getValue:(a,s)=>this._velocity.getValueInReferenceFrame(a,0,s),getValueInReferenceFrame:(a,s,l)=>{let r=new Float64Array(n.HEAP8.buffer,i.getVelocity(this.properties.wasmSpaceEntity,rt.toDate(a).getTime(),s!==ri.TEME),3);if(c(l)||(l=new p),l=p.fromArray(r),s===ri.INERTIAL){let d=Pe.computeFixedToIcrfMatrix(a);if(c(d)){let m=new p;ot.multiplyByVector(d,l,m),l=m}}return l}},Object.defineProperty(this,"velocity",{get:()=>this._velocity,set:()=>{}}),Object.defineProperties(this._position,{isConstant:{get:()=>!1},_referenceFrame:{get:()=>this.entityCollection.referenceFrame},referenceFrame:{get:()=>this._referenceFrame}}),this._position.getValue=(a,s)=>this._position.getValueInReferenceFrame(a,0,s),this._position.getValueInReferenceFrame=(a,s,l)=>{let r=new Float64Array(n.HEAP8.buffer,i.getPositionInReferenceFrame(this.properties.wasmSpaceEntity,rt.toDate(a).getTime(),s!==ri.TEME),3);if(c(l)||(l=new p),l=p.fromArray(r),s===ri.INERTIAL){let d=Pe.computeFixedToIcrfMatrix(a);if(c(d)){let m=new p;ot.multiplyByVector(d,l,m),l=m}}return l},this.children={add:a=>(a=this.entityCollection.add(a),this.entityCollection.allValues||(Object.defineProperty(this.entityCollection,"allValues",{get:function(){return this._entities.values}}),Object.defineProperty(this.entityCollection,"values",{get:function(){return this._entities.values.filter(s=>!s._isChild)}})),a._isChild=!0,a.parent=this,a.position=this.position,a),remove:a=>{this.entityCollection.remove(a);let s=this._children.indexOf(this);this._children.splice(s,1)},values:this._children},this.loadOMM(o)}loadOMM(e){let n=new this._wasmModule.PropagatedPositionProperty;n.addOMM(e),this.properties.wasmSpaceEntity=n,this.properties.CAT=this.properties._CAT||new RTe,this.properties._CAT._value.APOGEE=n.apogee,this.properties._CAT._value.PERIGEE=n.perigee,this.properties._CAT._value.PERIOD=n.period_sec,this.properties.OMM=this.properties._OMM||new ZTe,this.properties._OMM._value.ECCENTRICITY=n.ecco,this.properties._OMM._value.SEMI_MAJOR_AXIS=n.semi_major_axis/1e3,this.properties._OMM._value.SEMI_MINOR_AXIS=n.semi_minor_axis/1e3,this.array_index=this.properties.wasmSpaceEntity.array_index,this.samplesPerPeriod=180,this.extraEpochSamples=60,this.resolutionAtEpoch=5,this.autoEpochResolution=!0,this.epochBlockSize=.5,this.extraSamples=5,this.eccentricityThreshold=.2,this.targetIntervalCount=20,this._orbitShowing=!1,this._coverageShowing=!1,this.referenceFrame=ri.RIC,this._position._clearCache=!0}get orbitShowing(){return this._orbitShowing}get coverageShowing(){return this._coverageShowing}showCoverage(e={show:!1}){this._coverageShowing=e.show,e.show?this.entityCollection.owner._coverageGroup.push(this):this.entityCollection.owner._coverageGroup.remove({id:this.id})}showOrbit(e={show:!1}){if(this._orbitShowing=e.show,!e.show){this.path=null;return}e&&(e.color=e.material),e?.referenceEntity?this._localReferenceEntity=e.referenceEntity:this._localReferenceEntity=void 0,this.path=this.path||{};let{material:n,width:i,leadTime:o,trailTime:a,resolution:s}=this.path;this.path=Object.assign({},{material:n||v.WHITE,width:i||1.25,leadTime:o||5e3,trailTime:a||5e3,resolution:s||120,show:!0},e);let{ecco:l,period_sec:r}=this.properties.wasmSpaceEntity,d=l{a.filter(l=>l.properties?.pointer).forEach(l=>{this._wasmModule.removeEntity(l.properties.pointer)}),this._entityCollection.referenceFrame=this._viewer?.scene.referenceFrame||this._entityCollection.referenceFrame};this._entityCollection.collectionChanged.addEventListener(n,this),this._orbits={[Co.LEO]:[],[Co.MEO]:[],[Co.HEO]:[],[Co.GEO]:[],[Co.IGO]:[],[Co.EGO]:[],[Co.GEOIADC]:[],[Co.GEOSYNC]:[],[Co.SUNSYNC]:[],[Co.SEMISYNC]:[],[Co.POLAR]:[],[Co.UNKNOWN]:[]}}onAdd(e){~e.getByName(this._coverageGroup.name).length&&e.add(this._coverageGroup)}onRemove(e){e.getByName(this._coverageGroup.name).length&&e.remove(this._coverageGroup)}async load(e){return await this.loadOMM(e,"tle")}loadOMM(e,n,i=!1){if(!e)throw new Ut('The parameter "omm" is required.');if(!n)throw new Ut('The parameter "satcat" is required.');return new Promise(async o=>{let a=await K0.initInstance();if(this._wasmModule=a.wasmModule,this._coverageGroup=this._coverageGroup||new TJ({samples:72,sdc:this,coverageType:1,angle:90,groundCoverageOnly:!1,color:v.LIMEGREEN.withAlpha(.5)}),this.entities.suspendEvents(),this._wasmSatelliteCatalog=this._wasmSatelliteCatalog||a.instance,(e instanceof ArrayBuffer||e instanceof Uint8Array)&&(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),this.OMM=a1(e,"OMM",sW)),(e.RECORDS||Array.isArray(e))&&(this.OMM={RECORDS:e?.RECORDS||e}),!this.OMM)throw Error("OMMCOLLECTIONT invalid");let s=[];this.CAT=new bTe,(n instanceof ArrayBuffer||e instanceof Uint8Array)&&(n instanceof ArrayBuffer&&(n=new Uint8Array(n)),this.CATRAW=a1(n,"CAT",aW)),(n.RECORDS||Array.isArray(n))&&(this.CATRAW={RECORDS:n?.RECORDS||n});for(let l=0;l{t.toBlob(function(a){e._files[n]=a,o()})});return this._promises.push(i),n}return""};function UTe(t,e){return function(n){t._files[e]=n}}rz.prototype.model=function(t,e){let n=this._modelCallback;if(!c(n))throw new Tt("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(t,e,i);for(let a in i)if(i.hasOwnProperty(a)){let s=Promise.resolve(i[a]);this._promises.push(s),s.then(UTe(this,a))}return o};Object.defineProperties(rz.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function dz(t){this._time=t}dz.prototype.get=function(t,e,n){let i;return c(t)&&(i=c(t.getValue)?t.getValue(this._time,n):t),f(i,e)};dz.prototype.getColor=function(t,e){let n=this.get(t,e);if(c(n))return sT(n)};dz.prototype.getMaterialType=function(t){if(c(t))return t.getType(this._time)};function Wot(){this._ids={},this._styles={},this._count=0}Wot.prototype.get=function(t){let e=this._ids,n=t.innerHTML;if(c(e[n]))return e[n];let i=`style-${++this._count}`;return t.setAttribute("id",i),i=`#${i}`,e[n]=i,this._styles[n]=t,i};Wot.prototype.save=function(t){let e=this._styles,n=t.childNodes[0];for(let i in e)e.hasOwnProperty(i)&&t.insertBefore(e[i],n)};function qIt(){this._ids={}}qIt.prototype.get=function(t){if(!c(t))return this.get(Ti());let e=this._ids;return c(e[t])?`${t.toString()}-${++e[t]}`:(e[t]=0,t)};function fot(t){t=f(t,f.EMPTY_OBJECT);let e=t.entities,n=f(t.kmz,!1),i=fot._createState(t),o=e.values.filter(function(d){return!c(d.parent)}),a=i.kmlDoc,s=a.documentElement;s.setAttributeNS(fTe,"xmlns:gx",eZ);let l=a.createElement("Document");s.appendChild(l),t1t(i,l,o),i.styleCache.save(l);let r=i.externalFileHandler;return r.promise.then(function(){let m=new XMLSerializer().serializeToString(i.kmlDoc);return n?GTe(m,r.files):{kml:m,externalFiles:r.files}})}function GTe(t,e){let n=Dn("ThirdParty/Workers/z-worker-pako.js");QI({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new HL,o=new Z3(i);return o.add("doc.kml",new $v(t)).then(function(){let a=Object.keys(e);return $It(o,a,e,0)}).then(function(){return o.close()}).then(function(a){return{kmz:a}})}function $It(t,e,n,i){if(e.length===i)return;let o=e[i];return t.add(o,new iW(n[o])).then(function(){return $It(t,e,n,i+1)})}fot._createState=function(t){let e=t.entities,n=new Wot,i=e.computeAvailability(),o=c(t.time)?t.time:i.start,a=f(t.defaultAvailability,i),s=f(t.sampleDuration,60);a.start===be.MINIMUM_VALUE?a.stop===be.MAXIMUM_VALUE?a=new ai:rt.addSeconds(a.stop,-10*s,a.start):a.stop===be.MAXIMUM_VALUE&&rt.addSeconds(a.start,10*s,a.stop);let l=new rz(t.modelCallback);return{kmlDoc:document.implementation.createDocument(WTe,"kml"),ellipsoid:f(t.ellipsoid,mt.WGS84),idManager:new qIt,styleCache:n,externalFileHandler:l,time:o,valueGetter:new dz(o),sampleDuration:s,defaultAvailability:new ys([a])}};function t1t(t,e,n){let i=t.kmlDoc,o=t.styleCache,a=t.valueGetter,s=t.idManager,l=n.length,r,d,m;for(let h=0;h0){let G=i.createElement("Placemark");G.setAttribute("id",s.get(u.id));let A=u.name,S=u.label;if(c(S)){let C=i.createElement("LabelStyle"),y=a.get(S.text);A=c(y)&&y.length>0?y:A;let Y=a.getColor(S.fillColor);c(Y)&&(C.appendChild(ii(i,"color",Y)),C.appendChild(ii(i,"colorMode","normal")));let Q=a.get(S.scale);c(Q)&&C.appendChild(ii(i,"scale",Q)),m.push(C)}G.appendChild(ii(i,"name",A)),G.appendChild(ii(i,"visibility",u.show)),G.appendChild(ii(i,"description",u.description)),c(R)&&G.appendChild(R),e.appendChild(G);let g=m.length;if(g>0){let C=i.createElement("Style");for(let y=0;y1){let C=i.createElement("MultiGeometry");for(let y=0;y0){let G=i.createElement("Folder");G.setAttribute("id",s.get(u.id)),G.appendChild(ii(i,"name",u.name)),G.appendChild(ii(i,"visibility",u.show)),G.appendChild(ii(i,"description",u.description)),e.appendChild(G),t1t(t,G,U)}}}var qm=new p,jc=new gt,tZ=new rt;function ATe(t,e,n,i){let o=t.kmlDoc,a=t.ellipsoid,s=t.valueGetter,l=f(e.billboard,e.point);if(!c(l)&&!c(e.path))return;let r=e.position;if(!r.isConstant){e1t(t,e,l,n,i);return}s.get(r,void 0,qm);let d=ii(o,"coordinates",aT(qm,a)),m=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(lT(t,l.heightReference)),m.appendChild(h),m.appendChild(d),n.push(m);let u=l instanceof Mr?i1t(t,l):n1t(t,l);i.push(u)}function e1t(t,e,n,i,o){let a=t.kmlDoc,s=t.ellipsoid,l=t.valueGetter,r,d=e.position,m=!0;d instanceof cl?(r=d.intervals,m=!1):r=f(e.availability,t.defaultAvailability);let h=n instanceof Jb,u,R,V,F=[];for(u=0;u1){let G=a.createElementNS(eZ,"MultiTrack");for(u=0;u0&&(a=n);let s=e.coordinates,l=o.get(s),r=[],d=[Gt.northeast,Gt.southeast,Gt.southwest,Gt.northwest];for(let R=0;R<4;++R)d[R](l,jc),r.push(`${k.toDegrees(jc.longitude)},${k.toDegrees(jc.latitude)},${a}`);let m=ii(i,"coordinates",r.join(" ")),h=i.createElement("outerBoundaryIs"),u=i.createElement("LinearRing");return u.appendChild(m),h.appendChild(u),[h]}function zIt(t,e,n,i){let o=t.kmlDoc,a=t.ellipsoid,s=[],l=e.length;for(let m=0;m0&&(a=n);let l=[],r=e.hierarchy,d=o.get(r),m=Array.isArray(d)?d:d.positions,h=i.createElement("outerBoundaryIs");h.appendChild(zIt(t,m,a,s)),l.push(h);let u=d.holes;if(c(u)){let R=u.length;for(let V=0;V0&&r.appendChild(ii(a,"extrude",!0));let m=l?TTe(t,e,d):gTe(t,e,d),h=m.length;for(let U=0;U=0;--i)e+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return e}var Uot=fot;var cVo=b(W(),1),Got="";var W9o=b(W(),1);var pVo=b(W(),1);function ITe(t){let e,n=t.name,i=t.message;c(n)&&c(i)?e=`${n}: ${i}`:e=t.toString();let o=t.stack;return c(o)&&(e+=` +${o}`),e}var QR=ITe;var uGo=b(W(),1);var Iuo=b(W(),1);var Fuo=b(W(),1);var uVo=b(W(),1),NTe={NONE:0,LERC:1},UV=Object.freeze(NTe);var wVo=b(W(),1);var CVo=b(W(),1);var RVo=b(W(),1),yTe={NONE:0,BITS12:1},yr=Object.freeze(yTe);var rT=new p,BTe=new p,GV=new K,cz=new L,QTe=new L,kTe=Math.pow(2,12);function sc(t,e,n,i,o,a,s,l,r,d){let m=yr.NONE,h,u;if(c(e)&&c(n)&&c(i)&&c(o)){let R=e.minimum,V=e.maximum,F=p.subtract(V,R,BTe),U=i-n;Math.max(p.maximumComponent(F),U)0,R=f(t.isGeographic,!0),V=f(t.ellipsoid,mt.WGS84),F=1/V.maximumRadius,U=Gt.clone(t.nativeRectangle),G=Gt.clone(t.rectangle),A,S,g,C;c(G)?(A=G.west,S=G.south,g=G.east,C=G.north):R?(A=l(U.west),S=l(U.south),g=l(U.east),C=l(U.north)):(A=U.west*F,S=s-2*o(a(-U.south*F)),g=U.east*F,C=s-2*o(a(-U.north*F)));let y=t.relativeToCenter,Y=c(y);y=Y?y:p.ZERO;let Q=f(t.includeWebMercatorT,!1),J=f(t.exaggeration,1),M=f(t.exaggerationRelativeHeight,0),E=J!==1,I=f(t.structure,kR.DEFAULT_STRUCTURE),B=f(I.heightScale,kR.DEFAULT_STRUCTURE.heightScale),X=f(I.heightOffset,kR.DEFAULT_STRUCTURE.heightOffset),_=f(I.elementsPerHeight,kR.DEFAULT_STRUCTURE.elementsPerHeight),P=f(I.stride,kR.DEFAULT_STRUCTURE.stride),w=f(I.elementMultiplier,kR.DEFAULT_STRUCTURE.elementMultiplier),z=f(I.isBigEndian,kR.DEFAULT_STRUCTURE.isBigEndian),H=Gt.computeWidth(U),nt=Gt.computeHeight(U),$=H/(d-1),dt=nt/(m-1);R||(H*=F,nt*=F);let q=V.radiiSquared,at=q.x,st=q.y,Et=q.z,Qt=65536,Wt=-65536,Nt=Pe.eastNorthUpToFixedFrame(y,V),kt=L.inverseTransformation(Nt,xTe),Mt,qt;Q&&(Mt=Yo.geodeticLatitudeToMercatorAngle(S),qt=1/(Yo.geodeticLatitudeToMercatorAngle(C)-Mt));let ie=XTe;ie.x=Number.POSITIVE_INFINITY,ie.y=Number.POSITIVE_INFINITY,ie.z=Number.POSITIVE_INFINITY;let oe=JTe;oe.x=Number.NEGATIVE_INFINITY,oe.y=Number.NEGATIVE_INFINITY,oe.z=Number.NEGATIVE_INFINITY;let He=Number.POSITIVE_INFINITY,rn=d*m,de=h>0?d*2+m*2:0,zt=rn+de,ke=new Array(zt),Ve=new Array(zt),We=new Array(zt),Vn=Q?new Array(zt):[],Ct=E?new Array(zt):[],_t=0,Je=m,xe=0,oo=d;u&&(--_t,++Je,--xe,++oo);let ea=1e-5;for(let ue=_t;ue=m&&(Ke=m-1);let An=U.north-dt*Ke;R?An=l(An):An=s-2*o(a(-An*F));let si=(An-S)/(C-S);si=k.clamp(si,0,1);let da=ue===_t,_a=ue===Je-1;h>0&&(da?An+=ea*nt:_a&&(An-=ea*nt));let Rl=e(An),na=n(An),Go=Et*na,Ao;Q&&(Ao=(Yo.geodeticLatitudeToMercatorAngle(An)-Mt)*qt);for(let Xs=xe;Xs=d&&(Es=d-1);let wl=Ke*(d*P)+Es*P,ka;if(_===1)ka=r[wl];else{ka=0;let ma;if(z)for(ma=0;ma<_;++ma)ka=ka*w+r[wl+ma];else for(ma=_-1;ma>=0;--ma)ka=ka*w+r[wl+ma]}ka=ka*B+X,Wt=Math.max(Wt,ka),Qt=Math.min(Qt,ka);let Wa=U.west+$*Es;R?Wa=l(Wa):Wa=Wa*F;let JV=(Wa-A)/(g-A);JV=k.clamp(JV,0,1);let yl=Ke*d+Es;if(h>0){let ma=Xs===xe,Ed=Xs===oo-1,BW=da||_a||ma||Ed;if((da||_a)&&(ma||Ed))continue;BW&&(ka-=h,ma?(yl=rn+(m-Ke-1),Wa-=ea*H):_a?yl=rn+m+(d-Es-1):Ed?(yl=rn+m+d+Ke,Wa+=ea*H):da&&(yl=rn+m+d+m+Es))}let Bi=Rl*e(Wa),sd=Rl*n(Wa),zi=at*Bi,js=st*sd,$n=1/i(zi*Bi+js*sd+Go*na),mr=zi*$n,hr=js*$n,pr=Go*$n,hs=new p;hs.x=mr+Bi*ka,hs.y=hr+sd*ka,hs.z=pr+na*ka,L.multiplyByPoint(kt,hs,Aot),p.minimumByComponent(Aot,ie,ie),p.maximumByComponent(Aot,oe,oe),He=Math.min(He,ka),ke[yl]=hs,We[yl]=new K(JV,si),Ve[yl]=ka,Q&&(Vn[yl]=Ao),E&&(Ct[yl]=V.geodeticSurfaceNormal(hs))}}let gs=Ft.fromPoints(ke),is;c(G)&&(is=ci.fromRectangle(G,Qt,Wt,V));let ja;Y&&(ja=new Bu(V).computeHorizonCullingPointPossiblyUnderEllipsoid(y,ke,Qt));let qn=new Ff(ie,oe,y),ae=new lc(y,qn,He,Wt,Nt,!1,Q,E,J,M),fe=new Float32Array(zt*ae.stride),ge=0;for(let ue=0;ue0?S=El.getRegularGridAndSkirtIndicesAndEdgeIndices(A.gridWidth,A.gridHeight):S=El.getRegularGridIndicesAndEdgeIndices(A.gridWidth,A.gridHeight);let g=A.gridWidth*A.gridHeight;return G._mesh=new AV(h,new Float32Array(A.vertices),S.indices,S.indexCountWithoutSkirts,g,A.minimumHeight,A.maximumHeight,Ft.clone(A.boundingSphere3D),p.clone(A.occludeePointInScaledSpace),A.numberOfAttributes,ci.clone(A.orientedBoundingBox),lc.clone(A.encoding),S.westIndicesSouthToNorth,S.southIndicesEastToWest,S.eastIndicesNorthToSouth,S.northIndicesWestToEast),G._buffer=void 0,G._mesh})};lW.prototype._createMeshSync=function(t){let e=t.tilingScheme,n=t.x,i=t.y,o=t.level,a=f(t.exaggeration,1),s=f(t.exaggerationRelativeHeight,0),l=e.ellipsoid,r=e.tileXYToNativeRectangle(n,i,o),d=e.tileXYToRectangle(n,i,o),m=l.cartographicToCartesian(Gt.center(d)),h=this._structure,R=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(l,this._width,e.getNumberOfXTilesAtLevel(0))/(1<0?F=El.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):F=El.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let U=V.gridWidth*V.gridHeight;return this._mesh=new AV(m,V.vertices,F.indices,F.indexCountWithoutSkirts,U,V.minimumHeight,V.maximumHeight,V.boundingSphere3D,V.occludeePointInScaledSpace,V.encoding.stride,V.orientedBoundingBox,V.encoding,F.westIndicesSouthToNorth,F.southIndicesEastToWest,F.eastIndicesNorthToSouth,F.northIndicesWestToEast),this._mesh};lW.prototype.interpolateHeight=function(t,e,n){let i=this._width,o=this._height,a=this._structure,s=a.stride,l=a.elementsPerHeight,r=a.elementMultiplier,d=a.isBigEndian,m=a.heightOffset,h=a.heightScale,u=c(this._mesh),R=this._encoding===UV.LERC;if(!u&&R)return;let F;if(u){let U=this._mesh.vertices,G=this._mesh.encoding;F=h1t(U,G,m,h,t,i,o,e,n)}else F=DTe(this._buffer,l,r,s,d,t,i,o,e,n),F=F*h+m;return F};lW.prototype.upsample=function(t,e,n,i,o,a,s){let l=this._mesh;if(!c(l))return;let r=this._width,d=this._height,m=this._structure,h=m.stride,u=new this._bufferType(r*d*h),R=l.vertices,V=l.encoding,F=t.tileXYToRectangle(e,n,i),U=t.tileXYToRectangle(o,a,s),G=m.heightOffset,A=m.heightScale,S=m.elementsPerHeight,g=m.elementMultiplier,C=m.isBigEndian,y=Math.pow(g,S-1);for(let Y=0;Ym.highestEncodedHeight?m.highestEncodedHeight:Z,OTe(u,S,g,y,h,C,Y*r+J,Z)}}return Promise.resolve(new lW({buffer:u,width:r,height:d,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};lW.prototype.isChildAvailable=function(t,e,n,i){let o=2;return n!==t*2&&++o,i!==e*2&&(o-=2),(this._childTileMask&1<=s&&(R=s-1,u=s-2);let V=h|0,F=V+1;F>=l&&(F=l-1,V=l-2);let U=m-u,G=h-V;V=l-1-V,F=l-1-F;let A=Vz(t,e,n,i,o,V*s+u),S=Vz(t,e,n,i,o,V*s+R),g=Vz(t,e,n,i,o,F*s+u),C=Vz(t,e,n,i,o,F*s+R);return p1t(U,G,A,S,g,C)}function h1t(t,e,n,i,o,a,s,l,r){let d=(l-o.west)*(a-1)/(o.east-o.west),m=(r-o.south)*(s-1)/(o.north-o.south),h=d|0,u=h+1;u>=a&&(u=a-1,h=a-2);let R=m|0,V=R+1;V>=s&&(V=s-1,R=s-2);let F=d-h,U=m-R;R=s-1-R,V=s-1-V;let G=(e.decodeHeight(t,R*a+h)-n)/i,A=(e.decodeHeight(t,R*a+u)-n)/i,S=(e.decodeHeight(t,V*a+h)-n)/i,g=(e.decodeHeight(t,V*a+u)-n)/i;return p1t(F,U,G,A,S,g)}function p1t(t,e,n,i,o,a){return e=0;--l)s=s*n+t[a+l];return s}function OTe(t,e,n,i,o,a,s,l){s*=o;let r;if(a)for(r=0;r0;--r)t[s+r]=l/i|0,l-=t[s+r]*i,i/=n;t[s+r]=l}var Gd=lW;function b1(t){t=f(t,f.EMPTY_OBJECT),this._tilingScheme=t.tilingScheme,c(this._tilingScheme)||(this._tilingScheme=new Qo({ellipsoid:f(t.ellipsoid,mt.WGS84)})),this._levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new It}Object.defineProperties(b1.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});b1.prototype.requestTileGeometry=function(t,e,n,i){return Promise.resolve(new Gd({buffer:new Uint8Array(16*16),width:16,height:16}))};b1.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1< 0 uniform sampler2D u_dayTextures[TEXTURE_UNITS]; @@ -9846,7 +9846,7 @@ vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat } #endif // #ifdef SHOW_REFLECTIVE_OCEAN -`;var QZo=R(W(),1),YM=`#ifdef QUANTIZATION_BITS12 +`;var Quo=b(W(),1),YM=`#ifdef QUANTIZATION_BITS12 in vec4 compressed0; in float compressed1; #else @@ -10131,7 +10131,7 @@ void main() v_height = height; #endif } -`;var YZo=R(W(),1),rW=`uniform vec3 u_radiiAndDynamicAtmosphereColor; +`;var Yuo=b(W(),1),rW=`uniform vec3 u_radiiAndDynamicAtmosphereColor; uniform float u_atmosphereLightIntensity; uniform float u_atmosphereRayleighScaleHeight; @@ -10318,7 +10318,7 @@ vec4 computeAtmosphereColor( return vec4(color, opacity); } -`;var XZo=R(W(),1),W1=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { +`;var Xuo=b(W(),1),W1=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); @@ -10336,8 +10336,8 @@ vec4 computeAtmosphereColor( opacity ); } -`;var zZo=R(W(),1);var _Zo=R(W(),1);var HSe=new K;function wSe(t,e){let n=t.unionClippingRegions,i=t.length,o=Ml.useFloatTexture(e),a=Ml.getTextureResolution(t,e,HSe),s=a.x,l=a.y,r=o?KSe(s,l):zSe(s,l);return r+=` -`,r+=n?PSe(i):vSe(i),r}function PSe(t){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +`;var zuo=b(W(),1);var _uo=b(W(),1);var HTe=new K;function wTe(t,e){let n=t.unionClippingRegions,i=t.length,o=Ml.useFloatTexture(e),a=Ml.getTextureResolution(t,e,HTe),s=a.x,l=a.y,r=o?KTe(s,l):zTe(s,l);return r+=` +`,r+=n?PTe(i):vTe(i),r}function PTe(t){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) { vec4 position = czm_windowToEyeCoordinates(fragCoord); vec3 clipNormal = vec3(0.0); @@ -10363,7 +10363,7 @@ vec4 computeAtmosphereColor( } return clipAmount; } -`}function vSe(t){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +`}function vTe(t){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) { bool clipped = true; vec4 position = czm_windowToEyeCoordinates(fragCoord); @@ -10386,7 +10386,7 @@ vec4 computeAtmosphereColor( } return clipAmount; } -`}function KSe(t,e){let n=1/t,i=1/e,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let a=`${i}`;return a.indexOf(".")===-1&&(a+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +`}function KTe(t,e){let n=1/t,i=1/e,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let a=`${i}`;return a.indexOf(".")===-1&&(a+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) { int pixY = clippingPlaneNumber / ${t}; int pixX = clippingPlaneNumber - (pixY * ${t}); @@ -10395,7 +10395,7 @@ vec4 computeAtmosphereColor( vec4 plane = texture(packedClippingPlanes, vec2(u, v)); return czm_transformPlane(plane, transform); } -`}function zSe(t,e){let n=1/t,i=1/e,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let a=`${i}`;return a.indexOf(".")===-1&&(a+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +`}function zTe(t,e){let n=1/t,i=1/e,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let a=`${i}`;return a.indexOf(".")===-1&&(a+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) { int clippingPlaneStartIndex = clippingPlaneNumber * 2; int pixY = clippingPlaneStartIndex / ${t}; @@ -10409,19 +10409,19 @@ vec4 computeAtmosphereColor( plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); return czm_transformPlane(plane, transform); } -`}var dW=wSe;function jSe(t,e,n,i,o,a){this.numberOfDayTextures=t,this.flags=e,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=a}function Tot(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function qSe(t){let e="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(t){case ut.SCENE3D:o=e;break;case ut.SCENE2D:case ut.COLUMBUS_VIEW:o=n;break;case ut.MORPHING:o=i;break}return o}function $Se(t){return t.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { +`}var dW=wTe;function jTe(t,e,n,i,o,a){this.numberOfDayTextures=t,this.flags=e,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=a}function Sot(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function qTe(t){let e="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(t){case Vt.SCENE3D:o=e;break;case Vt.SCENE2D:case Vt.COLUMBUS_VIEW:o=n;break;case Vt.MORPHING:o=i;break}return o}function $Te(t){return t.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { }`}function tge(t){return t.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { return czm_unpackClippingExtents(extentsTexture, index); }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { return vec4(); - }`}function ege(t){return t?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}Tot.prototype.getShaderProgram=function(t){let e=t.frameState,n=t.surfaceTile,i=t.numberOfDayTextures,o=t.applyBrightness,a=t.applyContrast,s=t.applyHue,l=t.applySaturation,r=t.applyGamma,d=t.applyAlpha,m=t.applyDayNightAlpha,h=t.applySplit,Z=t.showReflectiveOcean,b=t.showOceanWaves,u=t.enableLighting,F=t.dynamicAtmosphereLighting,U=t.dynamicAtmosphereLightingFromSun,G=t.showGroundAtmosphere,A=t.perFragmentGroundAtmosphere,T=t.hasVertexNormals,g=t.useWebMercatorProjection,C=t.enableFog,y=t.enableClippingPlanes,Y=t.clippingPlanes,Q=t.enableClippingPolygons,J=t.clippingPolygons,M=t.clippedByBoundaries,V=t.hasImageryLayerCutout,E=t.colorCorrect,I=t.highlightFillTile,B=t.colorToAlpha,X=t.hasGeodeticSurfaceNormals,_=t.hasExaggeration,P=t.showUndergroundColor,w=t.translucent,z=0,H="",$=n.renderedMesh.encoding;$.quantization===yr.BITS12&&(z=1,H="QUANTIZATION_BITS12");let q=0,at="";M&&(q=1,at="TILE_LIMIT_RECTANGLE");let st=0,Et="";V&&(st=1,Et="APPLY_IMAGERY_CUTOUT");let Qt=e.mode,Wt=Qt|o<<2|a<<3|s<<4|l<<5|r<<6|d<<7|Z<<8|b<<9|u<<10|F<<11|U<<12|G<<13|A<<14|T<<15|g<<16|C<<17|z<<18|h<<19|y<<20|Q<<21|q<<22|st<<23|E<<24|I<<25|B<<26|X<<27|_<<28|P<<29|w<<30|m<<31,Nt=0;c(Y)&&Y.length>0&&(Nt=y?Y.clippingPlanesState:0);let kt=0;c(J)&&J.length>0&&(kt=Q?J.clippingPolygonsState:0);let Mt=n.surfaceShader;if(c(Mt)&&Mt.numberOfDayTextures===i&&Mt.flags===Wt&&Mt.material===this.material&&Mt.clippingShaderState===Nt&&Mt.clippingPolygonShaderState===kt)return Mt.shaderProgram;let qt=this._shadersByTexturesFlags[i];if(c(qt)||(qt=this._shadersByTexturesFlags[i]=[]),Mt=qt[Wt],!c(Mt)||Mt.material!==this.material||Mt.clippingShaderState!==Nt||Mt.clippingPolygonShaderState!==kt){let ie=this.baseVertexShaderSource.clone(),oe=this.baseFragmentShaderSource.clone();Nt!==0&&oe.sources.unshift(dW(Y,e.context)),kt!==0&&(oe.sources.unshift($Se(e.context)),ie.sources.unshift(tge(e.context))),ie.defines.push(H),oe.defines.push(`TEXTURE_UNITS ${i}`,at,Et),o&&oe.defines.push("APPLY_BRIGHTNESS"),a&&oe.defines.push("APPLY_CONTRAST"),s&&oe.defines.push("APPLY_HUE"),l&&oe.defines.push("APPLY_SATURATION"),r&&oe.defines.push("APPLY_GAMMA"),d&&oe.defines.push("APPLY_ALPHA"),m&&oe.defines.push("APPLY_DAY_NIGHT_ALPHA"),Z&&(oe.defines.push("SHOW_REFLECTIVE_OCEAN"),ie.defines.push("SHOW_REFLECTIVE_OCEAN")),b&&oe.defines.push("SHOW_OCEAN_WAVES"),B&&oe.defines.push("APPLY_COLOR_TO_ALPHA"),P&&(ie.defines.push("UNDERGROUND_COLOR"),oe.defines.push("UNDERGROUND_COLOR")),w&&(ie.defines.push("TRANSLUCENT"),oe.defines.push("TRANSLUCENT")),u&&(T?(ie.defines.push("ENABLE_VERTEX_LIGHTING"),oe.defines.push("ENABLE_VERTEX_LIGHTING")):(ie.defines.push("ENABLE_DAYNIGHT_SHADING"),oe.defines.push("ENABLE_DAYNIGHT_SHADING"))),F&&(ie.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),oe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),U&&(ie.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),oe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),G&&(ie.defines.push("GROUND_ATMOSPHERE"),oe.defines.push("GROUND_ATMOSPHERE"),A&&(ie.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),oe.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),ie.defines.push("INCLUDE_WEB_MERCATOR_Y"),oe.defines.push("INCLUDE_WEB_MERCATOR_Y"),C&&(ie.defines.push("FOG"),oe.defines.push("FOG")),h&&oe.defines.push("APPLY_SPLIT"),y&&oe.defines.push("ENABLE_CLIPPING_PLANES"),Q&&(oe.defines.push("ENABLE_CLIPPING_POLYGONS"),ie.defines.push("ENABLE_CLIPPING_POLYGONS"),J.inverse&&oe.defines.push("CLIPPING_INVERSE"),oe.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${J.extentsCount}`),ie.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${J.extentsCount}`)),E&&oe.defines.push("COLOR_CORRECT"),I&&oe.defines.push("HIGHLIGHT_FILL_TILE"),X&&ie.defines.push("GEODETIC_SURFACE_NORMALS"),_&&ie.defines.push("EXAGGERATION");let He=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + }`}function ege(t){return t?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}Sot.prototype.getShaderProgram=function(t){let e=t.frameState,n=t.surfaceTile,i=t.numberOfDayTextures,o=t.applyBrightness,a=t.applyContrast,s=t.applyHue,l=t.applySaturation,r=t.applyGamma,d=t.applyAlpha,m=t.applyDayNightAlpha,h=t.applySplit,u=t.showReflectiveOcean,R=t.showOceanWaves,V=t.enableLighting,F=t.dynamicAtmosphereLighting,U=t.dynamicAtmosphereLightingFromSun,G=t.showGroundAtmosphere,A=t.perFragmentGroundAtmosphere,S=t.hasVertexNormals,g=t.useWebMercatorProjection,C=t.enableFog,y=t.enableClippingPlanes,Y=t.clippingPlanes,Q=t.enableClippingPolygons,J=t.clippingPolygons,M=t.clippedByBoundaries,Z=t.hasImageryLayerCutout,E=t.colorCorrect,I=t.highlightFillTile,B=t.colorToAlpha,X=t.hasGeodeticSurfaceNormals,_=t.hasExaggeration,P=t.showUndergroundColor,w=t.translucent,z=0,H="",$=n.renderedMesh.encoding;$.quantization===yr.BITS12&&(z=1,H="QUANTIZATION_BITS12");let q=0,at="";M&&(q=1,at="TILE_LIMIT_RECTANGLE");let st=0,Et="";Z&&(st=1,Et="APPLY_IMAGERY_CUTOUT");let Qt=e.mode,Wt=Qt|o<<2|a<<3|s<<4|l<<5|r<<6|d<<7|u<<8|R<<9|V<<10|F<<11|U<<12|G<<13|A<<14|S<<15|g<<16|C<<17|z<<18|h<<19|y<<20|Q<<21|q<<22|st<<23|E<<24|I<<25|B<<26|X<<27|_<<28|P<<29|w<<30|m<<31,Nt=0;c(Y)&&Y.length>0&&(Nt=y?Y.clippingPlanesState:0);let kt=0;c(J)&&J.length>0&&(kt=Q?J.clippingPolygonsState:0);let Mt=n.surfaceShader;if(c(Mt)&&Mt.numberOfDayTextures===i&&Mt.flags===Wt&&Mt.material===this.material&&Mt.clippingShaderState===Nt&&Mt.clippingPolygonShaderState===kt)return Mt.shaderProgram;let qt=this._shadersByTexturesFlags[i];if(c(qt)||(qt=this._shadersByTexturesFlags[i]=[]),Mt=qt[Wt],!c(Mt)||Mt.material!==this.material||Mt.clippingShaderState!==Nt||Mt.clippingPolygonShaderState!==kt){let ie=this.baseVertexShaderSource.clone(),oe=this.baseFragmentShaderSource.clone();Nt!==0&&oe.sources.unshift(dW(Y,e.context)),kt!==0&&(oe.sources.unshift($Te(e.context)),ie.sources.unshift(tge(e.context))),ie.defines.push(H),oe.defines.push(`TEXTURE_UNITS ${i}`,at,Et),o&&oe.defines.push("APPLY_BRIGHTNESS"),a&&oe.defines.push("APPLY_CONTRAST"),s&&oe.defines.push("APPLY_HUE"),l&&oe.defines.push("APPLY_SATURATION"),r&&oe.defines.push("APPLY_GAMMA"),d&&oe.defines.push("APPLY_ALPHA"),m&&oe.defines.push("APPLY_DAY_NIGHT_ALPHA"),u&&(oe.defines.push("SHOW_REFLECTIVE_OCEAN"),ie.defines.push("SHOW_REFLECTIVE_OCEAN")),R&&oe.defines.push("SHOW_OCEAN_WAVES"),B&&oe.defines.push("APPLY_COLOR_TO_ALPHA"),P&&(ie.defines.push("UNDERGROUND_COLOR"),oe.defines.push("UNDERGROUND_COLOR")),w&&(ie.defines.push("TRANSLUCENT"),oe.defines.push("TRANSLUCENT")),V&&(S?(ie.defines.push("ENABLE_VERTEX_LIGHTING"),oe.defines.push("ENABLE_VERTEX_LIGHTING")):(ie.defines.push("ENABLE_DAYNIGHT_SHADING"),oe.defines.push("ENABLE_DAYNIGHT_SHADING"))),F&&(ie.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),oe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),U&&(ie.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),oe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),G&&(ie.defines.push("GROUND_ATMOSPHERE"),oe.defines.push("GROUND_ATMOSPHERE"),A&&(ie.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),oe.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),ie.defines.push("INCLUDE_WEB_MERCATOR_Y"),oe.defines.push("INCLUDE_WEB_MERCATOR_Y"),C&&(ie.defines.push("FOG"),oe.defines.push("FOG")),h&&oe.defines.push("APPLY_SPLIT"),y&&oe.defines.push("ENABLE_CLIPPING_PLANES"),Q&&(oe.defines.push("ENABLE_CLIPPING_POLYGONS"),ie.defines.push("ENABLE_CLIPPING_POLYGONS"),J.inverse&&oe.defines.push("CLIPPING_INVERSE"),oe.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${J.extentsCount}`),ie.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${J.extentsCount}`)),E&&oe.defines.push("COLOR_CORRECT"),I&&oe.defines.push("HIGHLIGHT_FILL_TILE"),X&&ie.defines.push("GEODETIC_SURFACE_NORMALS"),_&&ie.defines.push("EXAGGERATION");let He=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) { vec4 color = initialColor; -`;V&&(He+=` vec4 cutoutAndColorResult; +`;Z&&(He+=` vec4 cutoutAndColorResult; bool texelUnclipped; -`);for(let de=0;de0?n.raiseEvent(r):c(e)&&console.log(`An error occurred in "${e.constructor.name}": ${Qb(i)}`),r};Zz.reportSuccess=function(t){c(t)&&(t.timesRetried=-1)};var za=Zz;var aVo=R(W(),1),ige={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},ho=Object.freeze(ige);var lVo=R(W(),1),oge={START:0,LOADING:1,DONE:2,FAILED:3},Br=Object.freeze(oge);var dVo=R(W(),1),age={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},Ga=Object.freeze(age);function Us(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new Rt(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new p,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=Ga.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new Ft,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(Us.prototype,{eligibleForUnloading:{get:function(){let t=this.terrainState,n=!(t===Ga.RECEIVING||t===Ga.TRANSFORMING),i=this.imagery;for(let o=0,a=i.length;n&&o=0&&(m=A)}return m!==Number.MAX_VALUE?di.getPoint(t,m,o):void 0};Us.prototype.freeResources=function(){c(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=Ga.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let t=this.imagery;for(let e=0,n=t.length;e=Ga.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)Rge(e.context,s);else{let d=s._findAncestorTileWithTerrainData(t);c(d)&&c(d.data.waterMaskTexture)&&(s.waterMaskTexture=d.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(t,d,s.waterMaskTranslationAndScale))}}function hge(t,e,n,i,o,a,s){let l=e.parent;if(!l){e.state=Br.FAILED;return}let r=l.data.terrainData,d=l.x,m=l.y,h=l.level;if(!c(r))return;let Z=r.upsample(i.tilingScheme,d,m,h,o,a,s);c(Z)&&(t.terrainState=Ga.RECEIVING,Promise.resolve(Z).then(function(b){c(b)&&(t.terrainData=b,t.terrainState=Ga.RECEIVED)}).catch(function(){t.terrainState=Ga.FAILED}))}function pge(t,e,n,i,o){function a(r){if(!c(r)){t.terrainState=Ga.UNLOADED,t.request=void 0;return}t.terrainData=r,t.terrainState=Ga.RECEIVED,t.request=void 0}function s(r){if(t.request.state===qi.CANCELLED){t.terrainData=void 0,t.terrainState=Ga.UNLOADED,t.request=void 0;return}t.terrainState=Ga.FAILED,t.request=void 0;let d=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${r}"`;e._requestError=za.reportError(e._requestError,e,e.errorEvent,d,n,i,o),e._requestError.retry&&l()}function l(){let r=new Zs({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN});t.request=r;let d=e.requestTileGeometry(n,i,o,r);c(d)?(t.terrainState=Ga.RECEIVING,Promise.resolve(d).then(function(m){a(m)}).catch(function(m){s(m)})):(t.terrainState=Ga.UNLOADED,t.request=void 0)}l()}var uge={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function Zge(t,e,n,i,o,a){let s=n.tilingScheme,l=uge;l.tilingScheme=s,l.x=i,l.y=o,l.level=a,l.exaggeration=e.verticalExaggeration,l.exaggerationRelativeHeight=e.verticalExaggerationRelativeHeight,l.throttle=!0;let d=t.terrainData.createMesh(l);c(d)&&(t.terrainState=Ga.TRANSFORMING,Promise.resolve(d).then(function(m){t.mesh=m,t.terrainState=Ga.TRANSFORMED}).catch(function(){t.terrainState=Ga.FAILED}))}Us._createVertexArrayForMesh=function(t,e){let n=e.vertices,i=we.createVertexBuffer({context:t,typedArray:n,usage:ce.STATIC_DRAW}),o=e.encoding.getAttributes(i),a=e.indices.indexBuffers||{},s=a[t.id];if(!c(s)||s.isDestroyed()){let l=e.indices;s=we.createIndexBuffer({context:t,typedArray:l,usage:ce.STATIC_DRAW,indexDatatype:re.fromSizeInBytes(l.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,a[t.id]=s,e.indices.indexBuffers=a}else++s.referenceCount;return new Ki({context:t,attributes:o,indexBuffer:s})};Us._freeVertexArray=function(t){if(c(t)){let e=t.indexBuffer;t.isDestroyed()||t.destroy(),c(e)&&!e.isDestroyed()&&c(e.referenceCount)&&(--e.referenceCount,e.referenceCount===0&&e.destroy())}};function Vge(t,e,n,i,o,a,s){t.vertexArray=Us._createVertexArrayForMesh(e,t.mesh),t.terrainState=Ga.READY,t.fill=t.fill&&t.fill.destroy(s)}function bge(t){let e=t.cache.tile_waterMaskData;if(!c(e)){let n=hn.create({context:t,pixelFormat:Ye.LUMINANCE,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:bo.LINEAR});e={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},t.cache.tile_waterMaskData=e}return e}function Rge(t,e){let n=e.terrainData.waterMask,i=bge(t),o,a=n.length;if(a===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(a);o=hn.create({context:t,pixelFormat:Ye.LUMINANCE,pixelDatatype:Ue.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,e.waterMaskTexture=o,Rt.fromElements(0,0,1,1,e.waterMaskTranslationAndScale)}Us.prototype._findAncestorTileWithTerrainData=function(t){let e=t.parent;for(;c(e)&&(!c(e.data)||!c(e.data.terrainData)||e.data.terrainData.wasCreatedByUpsampling());)e=e.parent;return e};Us.prototype._computeWaterMaskTranslationAndScale=function(t,e,n){let i=e.rectangle,o=t.rectangle,a=o.width,s=o.height,l=a/i.width,r=s/i.height;return n.x=l*(o.west-i.west)/a,n.y=r*(o.south-i.south)/s,n.z=l,n.w=r,n};var Tu=Us;var bfo=R(W(),1);var RWo=R(W(),1);var mWo=R(W(),1);var Ybo=R(W(),1);var wVo=R(W(),1);function mU(t){if(t=f(t,f.EMPTY_OBJECT),this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._numberOfLevelZeroTilesX=f(t.numberOfLevelZeroTilesX,1),this._numberOfLevelZeroTilesY=f(t.numberOfLevelZeroTilesY,1),this._projection=new Yo(this._ellipsoid),c(t.rectangleSouthwestInMeters)&&c(t.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=t.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=t.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new K(-i,-i),this._rectangleNortheastInMeters=new K(i,i)}let e=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new Gt(e.longitude,e.latitude,n.longitude,n.latitude)}Object.defineProperties(mU.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});mU.prototype.getNumberOfXTilesAtLevel=function(t){return this._numberOfLevelZeroTilesX<=o&&(u=o-1);let F=b/d|0;return F>=a&&(F=a-1),c(n)?(n.x=u,n.y=F,n):new K(u,F)};var Gs=mU;var jVo=R(W(),1);var got,Z1t="AAPK3b7fccd1509046758d03c6641e404040gQG5edfR9eun2VcwtbXJKNbQjIZ7ma2vUd9ulqZK4lo3R_DJIAhwoGW9p86JNauB",f1={};f1.defaultAccessToken=Z1t;f1.defaultWorldImageryServer=new te({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});f1.defaultWorldHillshadeServer=new te({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});f1.defaultWorldOceanServer=new te({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});f1.getDefaultTokenCredit=function(t){if(t===Z1t){if(!c(got)){let e=' This application is using a default ArcGIS access token. Please assign Cesium.ArcGisMapService.defaultAccessToken with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at https://developers.arcgis.com/.';got=new on(e,!0)}return got}};var tp=f1;var ibo=R(W(),1);function Eot(t){t=f(t,f.EMPTY_OBJECT),this._pixelsToCheck=t.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let e=te.createIfNeeded(t.missingImageUrl),n=this;function i(a){c(a.blob)&&(n._missingImageByteLength=a.blob.size);let s=vu(a);if(t.disableCheckIfAllPixelsAreTransparent){let l=!0,r=a.width,d=t.pixelsToCheck;for(let m=0,h=d.length;l&&m0&&(l=!1)}l&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}e.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}Eot.prototype.isReady=function(){return this._isReady};Eot.prototype.shouldDiscardImage=function(t){let e=this._pixelsToCheck,n=this._missingImagePixels;if(!c(n)||c(t.blob)&&t.blob.size!==this._missingImageByteLength)return!1;let i=vu(t),o=t.width;for(let a=0,s=e.length;a1&&o==="name"?(e=1,n=i):e>2&&o==="title"?(e=2,n=i):e>3&&/name/i.test(i)?(e=3,n=i):e>4&&/title/i.test(i)&&(e=4,n=i)}c(n)&&(this.name=t[n])};Cot.prototype.configureDescriptionFromProperties=function(t){function e(n){let i='';for(let o in n)if(n.hasOwnProperty(o)){let a=n[o];c(a)&&(typeof a=="object"?i+=``:i+=``)}return i+="
${o}${e(a)}
${o}${a}
",i}this.description=e(t)};var iV=Cot;var hbo=R(W(),1);function F1(){Ut.throwInstantiationError()}Object.defineProperties(F1.prototype,{rectangle:{get:Ut.throwInstantiationError},tileWidth:{get:Ut.throwInstantiationError},tileHeight:{get:Ut.throwInstantiationError},maximumLevel:{get:Ut.throwInstantiationError},minimumLevel:{get:Ut.throwInstantiationError},tilingScheme:{get:Ut.throwInstantiationError},tileDiscardPolicy:{get:Ut.throwInstantiationError},errorEvent:{get:Ut.throwInstantiationError},credit:{get:Ut.throwInstantiationError},proxy:{get:Ut.throwInstantiationError},hasAlphaChannel:{get:Ut.throwInstantiationError}});F1.prototype.getTileCredits=function(t,e,n){Ut.throwInstantiationError()};F1.prototype.requestImage=function(t,e,n,i){Ut.throwInstantiationError()};F1.prototype.pickFeatures=function(t,e,n,i,o){Ut.throwInstantiationError()};var Wge=/\.ktx2$/i;F1.loadImage=function(t,e){let n=te.createIfNeeded(e);return Wge.test(n.url)?Fm(n):c(t)&&c(t.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var $c=F1;var ubo=R(W(),1),fge={SATELLITE:1,OCEANS:2,HILLSHADE:3},oV=Object.freeze(fge);function V1t(t){this.useTiles=f(t.usePreCachedTilesIfAvailable,!0);let e=t.ellipsoid;this.tilingScheme=f(t.tilingScheme,new Qo({ellipsoid:e})),this.rectangle=f(t.rectangle,this.tilingScheme.rectangle),this.ellipsoid=e;let n=t.credit;typeof n=="string"&&(n=new on(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=t.tileDiscardPolicy,this.tileWidth=f(t.tileWidth,256),this.tileHeight=f(t.tileHeight,256),this.maximumLevel=t.maximumLevel}V1t.prototype.build=function(t){t._useTiles=this.useTiles,t._tilingScheme=this.tilingScheme,t._rectangle=this.rectangle,t._credit=this.credit,t._tileCredits=this.tileCredits,t._tileDiscardPolicy=this.tileDiscardPolicy,t._tileWidth=this.tileWidth,t._tileHeight=this.tileHeight,t._maximumLevel=this.maximumLevel,this.useTiles&&!c(this.tileDiscardPolicy)&&(t._tileDiscardPolicy=new XM({missingImageUrl:b1t(t,0,0,this.maximumLevel).url,pixelsToCheck:[new K(0,0),new K(200,20),new K(20,200),new K(80,110),new K(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function Fge(t,e){let n=t.tileInfo;if(!c(n))e.useTiles=!1;else{if(e.tileWidth=n.rows,e.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)e.tilingScheme=new Gs({ellipsoid:e.ellipsoid});else if(t.tileInfo.spatialReference.wkid===4326)e.tilingScheme=new Qo({ellipsoid:e.ellipsoid});else{let i=`Tile spatial reference WKID ${t.tileInfo.spatialReference.wkid} is not supported.`;throw new St(i)}if(e.maximumLevel=t.tileInfo.lods.length-1,c(t.fullExtent)){if(c(t.fullExtent.spatialReference)&&c(t.fullExtent.spatialReference.wkid))if(t.fullExtent.spatialReference.wkid===102100||t.fullExtent.spatialReference.wkid===102113){let i=new Yo,o=t.fullExtent,a=i.unproject(new p(Math.max(o.xmin,-e.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-e.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new p(Math.min(o.xmax,e.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,e.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));e.rectangle=new Gt(a.longitude,a.latitude,s.longitude,s.latitude)}else if(t.fullExtent.spatialReference.wkid===4326)e.rectangle=Gt.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${t.fullExtent.spatialReference.wkid} is not supported.`;throw new St(i)}}else e.rectangle=e.tilingScheme.rectangle;e.useTiles=!0}c(t.copyrightText)&&t.copyrightText.length>0&&(c(e.credit)?e.tileCredits=[new on(t.copyrightText)]:e.credit=new on(t.copyrightText))}function Uge(t,e){let n=`An error occurred while accessing ${t.url}`;throw c(e)&&c(e.message)&&(n+=`: ${e.message}`),new St(n)}async function Gge(t,e){let n=t.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();Fge(i,e)}catch(i){Uge(t,i)}}function Yb(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=t.tileDiscardPolicy,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._maximumLevel=t.maximumLevel,this._tilingScheme=f(t.tilingScheme,new Qo({ellipsoid:t.ellipsoid})),this._useTiles=f(t.usePreCachedTilesIfAvailable,!0),this._rectangle=f(t.rectangle,this._tilingScheme.rectangle),this._layers=t.layers,this._credit=t.credit,this._tileCredits=void 0;let e=t.credit;typeof e=="string"&&(e=new on(e)),this.enablePickFeatures=f(t.enablePickFeatures,!0),this._errorEvent=new It}Yb.fromBasemapType=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n,i,o;switch(t){case oV.SATELLITE:{n=f(e.token,tp.defaultAccessToken),i=te.createIfNeeded(tp.defaultWorldImageryServer),i.appendForwardSlash();let a=tp.getDefaultTokenCredit(n);c(a)&&(o=on.clone(a))}break;case oV.OCEANS:{n=f(e.token,tp.defaultAccessToken),i=te.createIfNeeded(tp.defaultWorldOceanServer),i.appendForwardSlash();let a=tp.getDefaultTokenCredit(n);c(a)&&(o=on.clone(a))}break;case oV.HILLSHADE:{n=f(e.token,tp.defaultAccessToken),i=te.createIfNeeded(tp.defaultWorldHillshadeServer),i.appendForwardSlash();let a=tp.getDefaultTokenCredit(n);c(a)&&(o=on.clone(a))}break;default:}return Yb.fromUrl(i,{...e,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function b1t(t,e,n,i,o){let a;if(t._useTiles)a=t._resource.getDerivedResource({url:`tile/${i}/${n}/${e}`,request:o});else{let s=t._tilingScheme.tileXYToNativeRectangle(e,n,i),r={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${t._tileWidth},${t._tileHeight}`,format:"png32",transparent:!0,f:"image"};t._tilingScheme.projection instanceof yo?(r.bboxSR=4326,r.imageSR=4326):(r.bboxSR=3857,r.imageSR=3857),t.layers&&(r.layers=`show:${t.layers}`),a=t._resource.getDerivedResource({url:"export",request:o,queryParameters:r})}return a}Object.defineProperties(Yb.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});Yb.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=te.createIfNeeded(t);n.appendForwardSlash(),c(e.token)&&n.setQueryParameters({token:e.token});let i=new Yb(e);i._resource=n;let o=new V1t(e);return f(e.usePreCachedTilesIfAvailable,!0)&&await Gge(n,o),o.build(i),i};Yb.prototype.getTileCredits=function(t,e,n){return this._tileCredits};Yb.prototype.requestImage=function(t,e,n,i){return $c.loadImage(this,b1t(this,t,e,n,i))};Yb.prototype.pickFeatures=function(t,e,n,i,o){if(!this.enablePickFeatures)return;let a=this._tilingScheme.tileXYToNativeRectangle(t,e,n),s,l,r;if(this._tilingScheme.projection instanceof yo)s=k.toDegrees(i),l=k.toDegrees(o),r="4326";else{let Z=this._tilingScheme.projection.project(new gt(i,o,0));s=Z.x,l=Z.y,r="3857"}let d="visible";c(this._layers)&&(d+=`:${this._layers}`);let m={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${l}`,mapExtent:`${a.west},${a.south},${a.east},${a.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:r,layers:d};return this._resource.getDerivedResource({url:"identify",queryParameters:m}).fetchJson().then(function(Z){let b=[],u=Z.results;if(!c(u))return b;for(let F=0;F`),this._tilingScheme=new Gs({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new It}Object.defineProperties(lr.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return c(this.mapLayer)}}});lr.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=e.tileProtocol;c(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=f(e.mapStyle,U1.AERIAL),o=te.createIfNeeded(t);o.appendForwardSlash();let a={incl:"ImageryProviders",key:e.key,uriScheme:n};c(e.mapLayer)&&(a.mapLayer=e.mapLayer),c(e.culture)&&(a.culture=e.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:a}),l=new lr(e);l._resource=o;let r=new R1t(e);return await gge(s,r),r.build(l),l};var Ege=new Gt;lr.prototype.getTileCredits=function(t,e,n){let i=this._tilingScheme.tileXYToRectangle(t,e,n,Ege);return Nge(this._attributionList,n,i)};lr.prototype.requestImage=function(t,e,n,i){let o=$c.loadImage(this,Cge(this,t,e,n,i));if(c(o))return o.catch(function(a){return c(a.blob)&&a.blob.size===0?G1.EMPTY_IMAGE:Promise.reject(a)})};lr.prototype.pickFeatures=function(t,e,n,i,o){};lr.tileXYToQuadKey=function(t,e,n){let i="";for(let o=n;o>=0;--o){let a=1<=0;--o){let a=1<=h.zoomMin&&e<=h.zoomMax){let Z=Gt.intersection(n,h.bbox,Ige);c(Z)&&(r=!0)}}r&&i.push(s.credit)}return i}lr._metadataCache={};var LM=lr;var QRo=R(W(),1);var WRo=R(W(),1);var W1t=/{[^}]+}/g,f1t={x:kge,y:xge,z:Lge,s:Mge,reverseX:Yge,reverseY:Xge,reverseZ:Jge,westDegrees:_ge,southDegrees:Dge,eastDegrees:Oge,northDegrees:Hge,westProjected:wge,southProjected:Pge,eastProjected:vge,northProjected:Kge,width:zge,height:jge},yge=ze(f1t,{i:qge,j:$ge,reverseI:tEe,reverseJ:eEe,longitudeDegrees:iEe,latitudeDegrees:oEe,longitudeProjected:aEe,latitudeProjected:sEe,format:rEe});function MM(t){t=f(t,f.EMPTY_OBJECT),this._errorEvent=new It;let e=te.createIfNeeded(t.url),n=te.createIfNeeded(t.pickFeaturesUrl);this._resource=e,this._urlSchemeZeroPadding=t.urlSchemeZeroPadding,this._getFeatureInfoFormats=t.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=t.subdomains;Array.isArray(i)?i=i.slice():c(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._minimumLevel=f(t.minimumLevel,0),this._maximumLevel=t.maximumLevel,this._tilingScheme=f(t.tilingScheme,new Gs({ellipsoid:t.ellipsoid})),this._rectangle=f(t.rectangle,this._tilingScheme.rectangle),this._rectangle=Gt.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=t.tileDiscardPolicy;let o=t.credit;typeof o=="string"&&(o=new on(o)),this._credit=o,this._hasAlphaChannel=f(t.hasAlphaChannel,!0);let a=t.customTags,s=ze(f1t,a),l=ze(yge,a);this._tags=s,this._pickFeaturesTags=l,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=f(t.enablePickFeatures,!0)}Object.defineProperties(MM.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});MM.prototype.getTileCredits=function(t,e,n){};MM.prototype.requestImage=function(t,e,n,i){return $c.loadImage(this,Bge(this,t,e,n,i))};MM.prototype.pickFeatures=function(t,e,n,i,o){if(!this.enablePickFeatures||!c(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let a=0,s=this;function l(d,m){return d.callback(m)}function r(){if(a>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let d=s._getFeatureInfoFormats[a],m=Qge(s,t,e,n,i,o,d.format);return++a,d.type==="json"?m.fetchJson().then(d.callback).catch(r):d.type==="xml"?m.fetchXML().then(d.callback).catch(r):d.type==="text"||d.type==="html"?m.fetchText().then(d.callback).catch(r):m.fetch({responseType:d.format}).then(l.bind(void 0,d)).catch(r)}return r()};var bz=!1,ep=new Gt,Rz=!1,_M=new Gt;function Bge(t,e,n,i,o){bz=!1,Rz=!1;let a=t._resource,s=a.getUrlComponent(!0),l=t._tags,r={},d=s.match(W1t);return c(d)&&d.forEach(function(m){let h=m.substring(1,m.length-1);c(l[h])&&(r[h]=l[h](t,e,n,i))}),a.getDerivedResource({request:o,templateValues:r})}var Iot=!1,T1=new K,Not=!1;function Qge(t,e,n,i,o,a,s){bz=!1,Rz=!1,Iot=!1,Not=!1;let l=t._pickFeaturesResource,r=l.getUrlComponent(!0),d=t._pickFeaturesTags,m={},h=r.match(W1t);return c(h)&&h.forEach(function(Z){let b=Z.substring(1,Z.length-1);c(d[b])&&(m[b]=d[b](t,e,n,i,o,a,s))}),l.getDerivedResource({templateValues:m})}function S1(t,e,n){if(t&&t.urlSchemeZeroPadding&&t.urlSchemeZeroPadding.hasOwnProperty(e)){let i=t.urlSchemeZeroPadding[e];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function kge(t,e,n,i){return S1(t,"{x}",e)}function Yge(t,e,n,i){let o=t.tilingScheme.getNumberOfXTilesAtLevel(i)-e-1;return S1(t,"{reverseX}",o)}function xge(t,e,n,i){return S1(t,"{y}",n)}function Xge(t,e,n,i){let o=t.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return S1(t,"{reverseY}",o)}function Jge(t,e,n,i){let o=t.maximumLevel,a=c(o)&&ie.rectangle.east&&(t.east=e.rectangle.east),t.southe.rectangle.north&&(t.north=e.rectangle.north),t}function U1t(t,e,n){let i=t.positionToTileXY(Gt.southwest(e),n),o=t.positionToTileXY(Gt.northeast(e),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}Su._metadataSuccess=function(t,e,n,i,o){let a=/tileformat/i,s=/tileset/i,l=/tilesets/i,r=/boundingbox/i,d,m,h,Z=[],b=t.childNodes[0].childNodes;for(let Q=0;Q`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=t.maximumLevel,this._errorEvent=new It}Object.defineProperties($m.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});$m.fromUrl=async function(t,e,n){n=f(n,{});let i=f(n.path,"/default_map"),o=te.createIfNeeded(t).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let a=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new G1t(n);s.channel=e,await mEe(a,s);let l=new $m(n);return s.build(l),l._resource=o,l._url=t,l._path=i,l};$m.prototype.getTileCredits=function(t,e,n){};$m.prototype.requestImage=function(t,e,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:t,y:e,z:n+1}});return $c.loadImage(this,o)};$m.prototype.pickFeatures=function(t,e,n,i,o){};$m._logoUrl=void 0;Object.defineProperties($m,{logoUrl:{get:function(){return c($m._logoUrl)||($m._logoUrl=Dn("Assets/Images/google_earth_credit.png")),$m._logoUrl},set:function(t){$m._logoUrl=t}}});var DM=$m;var e0o=R(W(),1);var hEe=/\/$/,A1t=new on('© Mapbox © OpenStreetMap Improve this map');function g1(t){t=f(t,f.EMPTY_OBJECT);let e=t.mapId,n=t.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=te.createIfNeeded(f(t.url,"https://{s}.tiles.mapbox.com/v4/"));this._mapId=e,this._accessToken=n;let o=f(t.format,"png");/\./.test(o)||(o=`.${o}`),this._format=o;let a=i.getUrlComponent();hEe.test(a)||(a+="/"),a+=`${e}/{z}/{x}/{y}${this._format}`,i.url=a,i.setQueryParameters({access_token:n});let s;c(t.credit)?(s=t.credit,typeof s=="string"&&(s=new on(s))):s=A1t,this._resource=i,this._imageryProvider=new Ad({url:i,credit:s,ellipsoid:t.ellipsoid,minimumLevel:t.minimumLevel,maximumLevel:t.maximumLevel,rectangle:t.rectangle})}Object.defineProperties(g1.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});g1.prototype.getTileCredits=function(t,e,n){};g1.prototype.requestImage=function(t,e,n,i){return this._imageryProvider.requestImage(t,e,n,i)};g1.prototype.pickFeatures=function(t,e,n,i,o){return this._imageryProvider.pickFeatures(t,e,n,i,o)};g1._defaultCredit=A1t;var OM=g1;var p0o=R(W(),1);function dS(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let e=f(t.rectangle,Gt.MAX_VALUE),n=new Qo({rectangle:e,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:t.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new It;let i=t.credit;typeof i=="string"&&(i=new on(i)),this._credit=i;let o=te.createIfNeeded(t.url);this._resource=o,this._tileWidth=t.tileWidth,this._tileHeight=t.tileHeight}Object.defineProperties(dS.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function pEe(t,e,n,i){let o=`Failed to load image ${t.url}`;c(e)&&c(e.message)&&(o+=`: ${e.message}`);let a=za.reportError(i,n,c(n)?n._errorEvent:void 0,o,0,0,0,e);if(a.retry)return Bot(t,n,a);throw c(n)&&(n._hasError=!0),new St(o)}async function Bot(t,e,n){try{return await $c.loadImage(null,t)}catch(i){return pEe(t,i,e,n)}}dS.fromUrl=async function(t,e){let n=te.createIfNeeded(t),i=await Bot(n);e=f(e,f.EMPTY_OBJECT);let o=new dS({...e,url:t,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};dS.prototype.getTileCredits=function(t,e,n){};dS.prototype.requestImage=async function(t,e,n,i){if(!this._hasError&&!c(this._image)){let o=await Bot(this._resource,this);return this._image=o,za.reportSuccess(this._errorEvent),o}return this._image};dS.prototype.pickFeatures=function(t,e,n,i,o){};var HM=dS;var x0o=R(W(),1);var W0o=R(W(),1);function uEe(t,e,n){this.type=t,c(e)||(t==="json"?e="application/json":t==="xml"?e="text/xml":t==="html"?e="text/html":t==="text"&&(e="text/plain")),this.format=e,c(n)||(t==="json"?n=ZEe:t==="xml"?n=WEe:(t==="html"||t==="text")&&(n=T1t)),this.callback=n}function ZEe(t){let e=[],n=t.features;for(let i=0;i0)for(let a=0;a\s*<\/body>/im,SEe=//im,gEe=/([\s\S]*)<\/title>/im;function T1t(t){if(TEe.test(t)||SEe.test(t))return;let e,n=gEe.exec(t);n&&n.length>1&&(e=n[1]);let i=new iV;return i.name=e,i.description=t,i.data=t,[i]}var cS=uEe;var S0o=R(W(),1);function wM(t){t=f(t,f.EMPTY_OBJECT),this._tileCache={},this._tilesRequestedForInterval=[];let e=this._clock=t.clock;this._times=t.times,this._requestImageFunction=t.requestImageFunction,this._reloadFunction=t.reloadFunction,this._currentIntervalIndex=-1,e.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(e)}Object.defineProperties(wM.prototype,{clock:{get:function(){return this._clock},set:function(t){this._clock!==t&&(this._clock=t,this._clockOnTick(t),this._reloadFunction())}},times:{get:function(){return this._times},set:function(t){this._times!==t&&(this._times=t,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});wM.prototype.getFromCache=function(t,e,n,i){let o=S1t(t,e,n),a,s=this._tileCache[this._currentIntervalIndex];if(c(s)&&c(s[o])){let l=s[o];a=l.promise.catch(function(r){throw i.state=l.request.state,r}),delete s[o]}return a};wM.prototype.checkApproachingInterval=function(t,e,n,i){let o=S1t(t,e,n),a=this._tilesRequestedForInterval,s=g1t(this),l={key:o,priorityFunction:i.priorityFunction};(!c(s)||!E1t(this,l,s))&&a.push(l),a.length>=512&&a.splice(0,256)};wM.prototype._clockOnTick=function(t){let e=t.currentTime,i=this._times.indexOf(e),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let l in s)s.hasOwnProperty(l)&&s[l].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let a=g1t(this);if(c(a)){let s=this._tilesRequestedForInterval,l=!0;for(;l&&s.length!==0;){let r=s.pop();l=E1t(this,r,a),l||s.push(r)}}};function S1t(t,e,n){return`${t}-${e}-${n}`}function EEe(t){let e=t.split("-");if(e.length===3)return{x:Number(e[0]),y:Number(e[1]),level:Number(e[2])}}function g1t(t){let e=t._times;if(!c(e))return;let n=t._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,a=n.multiplier;if(!o&&a!==0)return;let s,l=e.indexOf(i);if(l<0)return;let r=e.get(l);return a>0?(s=rt.secondsDifference(r.stop,i),++l):(s=rt.secondsDifference(r.start,i),--l),s/=a,l>=0&&s<=5?e.get(l):void 0}function E1t(t,e,n){let i=t._times.indexOf(n.start),o=t._tileCache,a=o[i];c(a)||(a=o[i]={});let s=e.key;if(c(a[s]))return!0;let l=EEe(s),r=new Zs({throttle:!1,throttleByServer:!0,type:Xl.IMAGERY,priorityFunction:e.priorityFunction}),d=t._requestImageFunction(l.x,l.y,l.level,r,n);return c(d)?(a[s]={promise:d,request:r},!0):!1}var mS=wM;var CEe=[3034,3035,3042,3043,3044],IEe=[4471,4559];function aV(t){if(t=f(t,f.EMPTY_OBJECT),c(t.times)&&!c(t.clock))throw new Ut("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=f(t.getFeatureInfoUrl,t.url);let e=te.createIfNeeded(t.url),n=te.createIfNeeded(this._getFeatureInfoUrl);e.setQueryParameters(aV.DefaultParameters,!0),n.setQueryParameters(aV.GetFeatureInfoDefaultParameters,!0),c(t.parameters)&&e.setQueryParameters(C1t(t.parameters)),c(t.getFeatureInfoParameters)&&n.setQueryParameters(C1t(t.getFeatureInfoParameters));let i=this;this._reload=void 0,c(t.times)&&(this._timeDynamicImagery=new mS({clock:t.clock,times:t.times,requestImageFunction:function(s,l,r,d,m){return I1t(i,s,l,r,d,m)},reloadFunction:function(){c(i._reload)&&i._reload()}}));let o={};if(o.layers=t.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(e.queryParameters.version)>=1.3){o.crs=f(t.crs,t.tilingScheme&&t.tilingScheme.projection instanceof Yo?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let l=Number(s[1]);(l>=4e3&&l<5e3&&!IEe.includes(l)||CEe.includes(l))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=f(t.srs,t.tilingScheme&&t.tilingScheme.projection instanceof Yo?"EPSG:3857":"EPSG:4326");e.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let a={query_layers:t.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(a.i="{i}",a.j="{j}"):(a.x="{i}",a.y="{j}"),n.setQueryParameters(a,!0),this._resource=e,this._pickFeaturesResource=n,this._layers=t.layers,this._tileProvider=new Ad({url:e,pickFeaturesUrl:n,tilingScheme:f(t.tilingScheme,new Qo({ellipsoid:t.ellipsoid})),rectangle:t.rectangle,tileWidth:t.tileWidth,tileHeight:t.tileHeight,minimumLevel:t.minimumLevel,maximumLevel:t.maximumLevel,subdomains:t.subdomains,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit,getFeatureInfoFormats:f(t.getFeatureInfoFormats,aV.DefaultGetFeatureInfoFormats),enablePickFeatures:t.enablePickFeatures})}function I1t(t,e,n,i,o,a){let s=c(a)?a.data:void 0,l=t._tileProvider;return c(s)&&l._resource.setQueryParameters(s),l.requestImage(e,n,i,o)}function NEe(t,e,n,i,o,a,s){let l=c(s)?s.data:void 0,r=t._tileProvider;return c(l)&&r._pickFeaturesResource.setQueryParameters(l),r.pickFeatures(e,n,i,o,a)}Object.defineProperties(aV.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(t){this._tileProvider.enablePickFeatures=t}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(t){this._timeDynamicImagery.clock=t}},times:{get:function(){return this._timeDynamicImagery.times},set:function(t){this._timeDynamicImagery.times=t}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});aV.prototype.getTileCredits=function(t,e,n){return this._tileProvider.getTileCredits(t,e,n)};aV.prototype.requestImage=function(t,e,n,i){let o,a=this._timeDynamicImagery,s;return c(a)&&(s=a.currentInterval,o=a.getFromCache(t,e,n,i)),c(o)||(o=I1t(this,t,e,n,i,s)),c(o)&&c(a)&&a.checkApproachingInterval(t,e,n,i),o};aV.prototype.pickFeatures=function(t,e,n,i,o){let a=this._timeDynamicImagery,s=c(a)?a.currentInterval:void 0;return NEe(this,t,e,n,i,o,s)};aV.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});aV.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});aV.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new cS("json","application/json")),Object.freeze(new cS("xml","text/xml")),Object.freeze(new cS("text","text/html"))]);function C1t(t){let e={};for(let n in t)t.hasOwnProperty(n)&&(e[n.toLowerCase()]=t[n]);return e}var PM=aV;var K0o=R(W(),1);var yEe=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function vM(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let e=te.createIfNeeded(t.url),n=t.style,i=t.tileMatrixSetID,o=e.url,a=o.match(/{/g);if(!c(a)||a.length===1&&/{s}/.test(o))e.setQueryParameters(yEe),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};e.setTemplateValues(h),this._useKvp=!1}this._resource=e,this._layer=t.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=t.tileMatrixLabels,this._format=f(t.format,"image/jpeg"),this._tileDiscardPolicy=t.tileDiscardPolicy,this._tilingScheme=c(t.tilingScheme)?t.tilingScheme:new Gs({ellipsoid:t.ellipsoid}),this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._minimumLevel=f(t.minimumLevel,0),this._maximumLevel=t.maximumLevel,this._rectangle=f(t.rectangle,this._tilingScheme.rectangle),this._dimensions=t.dimensions;let s=this;this._reload=void 0,c(t.times)&&(this._timeDynamicImagery=new mS({clock:t.clock,times:t.times,requestImageFunction:function(h,Z,b,u,F){return N1t(s,h,Z,b,u,F)},reloadFunction:function(){c(s._reload)&&s._reload()}}));let l=this._tilingScheme.positionToTileXY(Gt.southwest(this._rectangle),this._minimumLevel),r=this._tilingScheme.positionToTileXY(Gt.northeast(this._rectangle),this._minimumLevel),d=(Math.abs(r.x-l.x)+1)*(Math.abs(r.y-l.y)+1);this._errorEvent=new It;let m=t.credit;this._credit=typeof m=="string"?new on(m):m,this._subdomains=t.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():c(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function N1t(t,e,n,i,o,a){let s=t._tileMatrixLabels,l=c(s)?s[i]:i.toString(),r=t._subdomains,d=t._dimensions,m=c(a)?a.data:void 0,h,Z;if(!t._useKvp)Z={TileMatrix:l,TileRow:n.toString(),TileCol:e.toString(),s:r[(e+n+i)%r.length]},h=t._resource.getDerivedResource({request:o}),h.setTemplateValues(Z),c(d)&&h.setTemplateValues(d),c(m)&&h.setTemplateValues(m);else{let b={};b.tilematrix=l,b.layer=t._layer,b.style=t._style,b.tilerow=n,b.tilecol=e,b.tilematrixset=t._tileMatrixSetID,b.format=t._format,c(d)&&(b=ze(b,d)),c(m)&&(b=ze(b,m)),Z={s:r[(e+n+i)%r.length]},h=t._resource.getDerivedResource({queryParameters:b,request:o}),h.setTemplateValues(Z)}return $c.loadImage(t,h)}Object.defineProperties(vM.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(t){this._timeDynamicImagery.clock=t}},times:{get:function(){return this._timeDynamicImagery.times},set:function(t){this._timeDynamicImagery.times=t}},dimensions:{get:function(){return this._dimensions},set:function(t){this._dimensions!==t&&(this._dimensions=t,c(this._reload)&&this._reload())}}});vM.prototype.getTileCredits=function(t,e,n){};vM.prototype.requestImage=function(t,e,n,i){let o,a=this._timeDynamicImagery,s;return c(a)&&(s=a.currentInterval,o=a.getFromCache(t,e,n,i)),c(o)||(o=N1t(this,t,e,n,i,s)),c(o)&&c(a)&&a.checkApproachingInterval(t,e,n,i),o};vM.prototype.pickFeatures=function(t,e,n,i,o){};var hS=vM;var BEe={ARCGIS_MAPSERVER:cW.fromUrl,BING:async(t,e)=>LM.fromUrl(t,e),GOOGLE_EARTH:async(t,e)=>{let n=e.channel;return delete e.channel,DM.fromUrl(t,n,e)},MAPBOX:(t,e)=>new OM({url:t,...e}),SINGLE_TILE:HM.fromUrl,TMS:hU.fromUrl,URL_TEMPLATE:(t,e)=>new Ad({url:t,...e}),WMS:(t,e)=>new PM({url:t,...e}),WMTS:(t,e)=>new hS({url:t,...e})};function xb(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new It}Object.defineProperties(xb.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});xb.fromAssetId=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=gh._createEndpointResource(t,e),i=t.toString()+e.accessToken+e.server,o=xb._endpointCache[i];c(o)||(o=n.fetchJson(),xb._endpointCache[i]=o);let a=await o;if(a.type!=="IMAGERY")throw new St(`Cesium ion asset ${t} is not an imagery asset.`);let s,l=a.externalType;if(!c(l))s=await hU.fromUrl(new gh(a,n));else{let d=BEe[l];if(!c(d))throw new St(`Unrecognized Cesium ion imagery type: ${l}`);let m={...a.options},h=m.url;delete m.url,s=await d(h,m)}let r=new xb(e);return s.errorEvent.addEventListener(function(d){d.provider=r,r._errorEvent.raiseEvent(d)}),r._tileCredits=gh.getCreditsFromEndpoint(a,n),r._imageryProvider=s,r};xb.prototype.getTileCredits=function(t,e,n){let i=this._imageryProvider.getTileCredits(t,e,n);return c(i)?this._tileCredits.concat(i):this._tileCredits};xb.prototype.requestImage=function(t,e,n,i){return this._imageryProvider.requestImage(t,e,n,i)};xb.prototype.pickFeatures=function(t,e,n,i,o){return this._imageryProvider.pickFeatures(t,e,n,i,o)};xb._endpointCache={};var mW=xb;var pWo=R(W(),1),QEe={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},hW=Object.freeze(QEe);function kEe(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.style,hW.AERIAL);return mW.fromAssetId(e)}var pW=kEe;var fWo=R(W(),1),KM=`uniform sampler2D u_texture; + }`,oe.sources.push(He),ie.sources.push(qTe(Qt)),ie.sources.push(ege(g));let rn=xn.fromCache({context:e.context,vertexShaderSource:ie,fragmentShaderSource:oe,attributeLocations:$.getAttributeLocations()});Mt=qt[Wt]=new jTe(i,Wt,this.material,rn,Nt,kt)}return n.surfaceShader=Mt,Mt.shaderProgram};Sot.prototype.destroy=function(){let t,e,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!c(o))continue;for(t in o)o.hasOwnProperty(t)&&(e=o[t],c(e)&&e.shaderProgram.destroy())}return At(this)};var xM=Sot;var OFo=b(W(),1);var quo=b(W(),1),nge={NONE:-1,PARTIAL:0,FULL:1},Ys=Object.freeze(nge);var XZo=b(W(),1);var iZo=b(W(),1);function uz(t,e,n,i,o,a,s){this.provider=t,this.message=e,this.x=n,this.y=i,this.level=o,this.timesRetried=f(a,0),this.retry=!1,this.error=s}uz.reportError=function(t,e,n,i,o,a,s,l){let r=t;return c(t)?(r.provider=e,r.message=i,r.x=o,r.y=a,r.level=s,r.retry=!1,r.error=l,++r.timesRetried):r=new uz(e,i,o,a,s,0,l),c(n)&&n.numberOfListeners>0?n.raiseEvent(r):c(e)&&console.log(`An error occurred in "${e.constructor.name}": ${QR(i)}`),r};uz.reportSuccess=function(t){c(t)&&(t.timesRetried=-1)};var za=uz;var aZo=b(W(),1),ige={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},ho=Object.freeze(ige);var lZo=b(W(),1),oge={START:0,LOADING:1,DONE:2,FAILED:3},Br=Object.freeze(oge);var dZo=b(W(),1),age={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},Ga=Object.freeze(age);function Us(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new bt(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new p,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=Ga.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new Ft,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(Us.prototype,{eligibleForUnloading:{get:function(){let t=this.terrainState,n=!(t===Ga.RECEIVING||t===Ga.TRANSFORMING),i=this.imagery;for(let o=0,a=i.length;n&&o<a;++o){let s=i[o];n=!c(s.loadingImagery)||s.loadingImagery.state!==ho.TRANSITIONING}return n}},renderedMesh:{get:function(){if(c(this.vertexArray))return this.mesh;if(c(this.fill))return this.fill.mesh}}});var sge=new gt;function Tot(t,e,n,i,o,a){let s=t.getExaggeratedPosition(i,o,a);if(c(e)&&e!==Vt.SCENE3D){let r=n.ellipsoid.cartesianToCartographic(s,sge);s=n.project(r,a),s=p.fromElements(s.z,s.x,s.y,a)}return s}var lge=new p,rge=new p,dge=new p;Us.prototype.pick=function(t,e,n,i,o){let a=this.renderedMesh;if(!c(a))return;let s=a.vertices,l=a.indices,r=a.encoding,d=l.length,m=Number.MAX_VALUE;for(let h=0;h<d;h+=3){let u=l[h],R=l[h+1],V=l[h+2],F=Tot(r,e,n,s,u,lge),U=Tot(r,e,n,s,R,rge),G=Tot(r,e,n,s,V,dge),A=no.rayTriangleParametric(t,F,U,G,i);c(A)&&A<m&&A>=0&&(m=A)}return m!==Number.MAX_VALUE?di.getPoint(t,m,o):void 0};Us.prototype.freeResources=function(){c(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=Ga.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let t=this.imagery;for(let e=0,n=t.length;e<n;++e)t[e].freeResources();this.imagery.length=0,this.freeVertexArray()};Us.prototype.freeVertexArray=function(){Us._freeVertexArray(this.vertexArray),this.vertexArray=void 0,Us._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};Us.initialize=function(t,e,n){let i=t.data;c(i)||(i=t.data=new Us),t.state===Br.START&&(cge(t,e,n),t.state=Br.LOADING)};Us.processStateMachine=function(t,e,n,i,o,a,s){Us.initialize(t,n,i);let l=t.data;if(t.state===Br.LOADING&&mge(t,e,n,i,o,a),s)return;let r=t.renderable;t.renderable=c(l.vertexArray);let d=l.terrainState===Ga.READY;t.upsampledFromParent=c(l.terrainData)&&l.terrainData.wasCreatedByUpsampling();let m=l.processImagery(t,n,e);if(d&&m){let h=t._loadedCallbacks,u={};for(let R in h)h.hasOwnProperty(R)&&(h[R](t)||(u[R]=h[R]));t._loadedCallbacks=u,t.state=Br.DONE}r&&(t.renderable=!0)};Us.prototype.processImagery=function(t,e,n,i){let o=t.data,a=t.upsampledFromParent,s=!1,l=!0,r=o.imagery,d,m;for(d=0,m=r.length;d<m;++d){let h=r[d];if(!c(h.loadingImagery)){a=!1;continue}if(h.loadingImagery.state===ho.PLACEHOLDER){let R=h.loadingImagery.imageryLayer;if(R.ready){h.freeResources(),r.splice(d,1),R._createTileImagerySkeletons(t,e,d),--d,m=r.length;continue}else a=!1}let u=h.processStateMachine(t,n,i);l=l&&u,s=s||u||c(h.readyImagery),a=a&&c(h.loadingImagery)&&(h.loadingImagery.state===ho.FAILED||h.loadingImagery.state===ho.INVALID)}return t.upsampledFromParent=a,t.renderable=t.renderable&&(s||l),l};function V1t(t,e,n,i){let o=t.renderedMesh,a=o.vertices,s=o.encoding,l=a.length/s.stride,r=lc.clone(s);r.hasGeodeticSurfaceNormals=e,r=lc.clone(r);let d=r.stride,m=new Float32Array(l*d);e?s.addGeodeticSurfaceNormals(a,m,n):s.removeGeodeticSurfaceNormals(a,m),o.vertices=m,o.stride=d,o!==t.mesh?(Us._freeVertexArray(t.fill.vertexArray),t.fill.vertexArray=Us._createVertexArrayForMesh(i.context,o)):(Us._freeVertexArray(t.vertexArray),t.vertexArray=Us._createVertexArrayForMesh(i.context,o)),Us._freeVertexArray(t.wireframeVertexArray),t.wireframeVertexArray=void 0}Us.prototype.addGeodeticSurfaceNormals=function(t,e){V1t(this,!0,t,e)};Us.prototype.removeGeodeticSurfaceNormals=function(t){V1t(this,!1,void 0,t)};Us.prototype.updateExaggeration=function(t,e,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let a=e.verticalExaggeration,s=e.verticalExaggerationRelativeHeight,l=a!==1,r=o.encoding,d=r.exaggeration!==a,m=r.exaggerationRelativeHeight!==s;if(d||m){if(d)if(l&&!r.hasGeodeticSurfaceNormals){let h=t.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,e)}else!l&&r.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(e);if(r.exaggeration=a,r.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(t);let h=t.customData,u=h.length;for(let R=0;R<u;R++){let V=h[R];V.level=-1}}}};function cge(t,e,n){let i=e.getTileDataAvailable(t.x,t.y,t.level);if(!c(i)&&c(t.parent)){let o=t.parent,a=o.data;c(a)&&c(a.terrainData)&&(i=a.terrainData.isChildAvailable(o.x,o.y,t.x,t.y))}i===!1&&(t.data.terrainState=Ga.FAILED);for(let o=0,a=n.length;o<a;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(t,e)}}function mge(t,e,n,i,o,a){let s=t.data,l=t.parent;if(s.terrainState===Ga.FAILED&&l!==void 0&&(l.data!==void 0&&l.data.terrainData!==void 0&&l.data.terrainData.canUpsample!==!1||Us.processStateMachine(l,e,n,i,o,a,!0)),s.terrainState===Ga.FAILED&&hge(s,t,e,n,t.x,t.y,t.level),s.terrainState===Ga.UNLOADED&&pge(s,n,t.x,t.y,t.level),s.terrainState===Ga.RECEIVED&&uge(s,e,n,t.x,t.y,t.level),s.terrainState===Ga.TRANSFORMED&&(Zge(s,e.context,n,t.x,t.y,t.level,a),s.updateExaggeration(t,e,o)),s.terrainState>=Ga.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)bge(e.context,s);else{let d=s._findAncestorTileWithTerrainData(t);c(d)&&c(d.data.waterMaskTexture)&&(s.waterMaskTexture=d.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(t,d,s.waterMaskTranslationAndScale))}}function hge(t,e,n,i,o,a,s){let l=e.parent;if(!l){e.state=Br.FAILED;return}let r=l.data.terrainData,d=l.x,m=l.y,h=l.level;if(!c(r))return;let u=r.upsample(i.tilingScheme,d,m,h,o,a,s);c(u)&&(t.terrainState=Ga.RECEIVING,Promise.resolve(u).then(function(R){c(R)&&(t.terrainData=R,t.terrainState=Ga.RECEIVED)}).catch(function(){t.terrainState=Ga.FAILED}))}function pge(t,e,n,i,o){function a(r){if(!c(r)){t.terrainState=Ga.UNLOADED,t.request=void 0;return}t.terrainData=r,t.terrainState=Ga.RECEIVED,t.request=void 0}function s(r){if(t.request.state===qi.CANCELLED){t.terrainData=void 0,t.terrainState=Ga.UNLOADED,t.request=void 0;return}t.terrainState=Ga.FAILED,t.request=void 0;let d=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${r}"`;e._requestError=za.reportError(e._requestError,e,e.errorEvent,d,n,i,o),e._requestError.retry&&l()}function l(){let r=new us({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN});t.request=r;let d=e.requestTileGeometry(n,i,o,r);c(d)?(t.terrainState=Ga.RECEIVING,Promise.resolve(d).then(function(m){a(m)}).catch(function(m){s(m)})):(t.terrainState=Ga.UNLOADED,t.request=void 0)}l()}var Vge={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function uge(t,e,n,i,o,a){let s=n.tilingScheme,l=Vge;l.tilingScheme=s,l.x=i,l.y=o,l.level=a,l.exaggeration=e.verticalExaggeration,l.exaggerationRelativeHeight=e.verticalExaggerationRelativeHeight,l.throttle=!0;let d=t.terrainData.createMesh(l);c(d)&&(t.terrainState=Ga.TRANSFORMING,Promise.resolve(d).then(function(m){t.mesh=m,t.terrainState=Ga.TRANSFORMED}).catch(function(){t.terrainState=Ga.FAILED}))}Us._createVertexArrayForMesh=function(t,e){let n=e.vertices,i=we.createVertexBuffer({context:t,typedArray:n,usage:ce.STATIC_DRAW}),o=e.encoding.getAttributes(i),a=e.indices.indexBuffers||{},s=a[t.id];if(!c(s)||s.isDestroyed()){let l=e.indices;s=we.createIndexBuffer({context:t,typedArray:l,usage:ce.STATIC_DRAW,indexDatatype:re.fromSizeInBytes(l.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,a[t.id]=s,e.indices.indexBuffers=a}else++s.referenceCount;return new Ki({context:t,attributes:o,indexBuffer:s})};Us._freeVertexArray=function(t){if(c(t)){let e=t.indexBuffer;t.isDestroyed()||t.destroy(),c(e)&&!e.isDestroyed()&&c(e.referenceCount)&&(--e.referenceCount,e.referenceCount===0&&e.destroy())}};function Zge(t,e,n,i,o,a,s){t.vertexArray=Us._createVertexArrayForMesh(e,t.mesh),t.terrainState=Ga.READY,t.fill=t.fill&&t.fill.destroy(s)}function Rge(t){let e=t.cache.tile_waterMaskData;if(!c(e)){let n=hn.create({context:t,pixelFormat:Ye.LUMINANCE,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:Ro.LINEAR});e={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},t.cache.tile_waterMaskData=e}return e}function bge(t,e){let n=e.terrainData.waterMask,i=Rge(t),o,a=n.length;if(a===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(a);o=hn.create({context:t,pixelFormat:Ye.LUMINANCE,pixelDatatype:Ue.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,e.waterMaskTexture=o,bt.fromElements(0,0,1,1,e.waterMaskTranslationAndScale)}Us.prototype._findAncestorTileWithTerrainData=function(t){let e=t.parent;for(;c(e)&&(!c(e.data)||!c(e.data.terrainData)||e.data.terrainData.wasCreatedByUpsampling());)e=e.parent;return e};Us.prototype._computeWaterMaskTranslationAndScale=function(t,e,n){let i=e.rectangle,o=t.rectangle,a=o.width,s=o.height,l=a/i.width,r=s/i.height;return n.x=l*(o.west-i.west)/a,n.y=r*(o.south-i.south)/s,n.z=l,n.w=r,n};var SV=Us;var Rfo=b(W(),1);var bWo=b(W(),1);var mWo=b(W(),1);var YRo=b(W(),1);var wZo=b(W(),1);function mU(t){if(t=f(t,f.EMPTY_OBJECT),this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._numberOfLevelZeroTilesX=f(t.numberOfLevelZeroTilesX,1),this._numberOfLevelZeroTilesY=f(t.numberOfLevelZeroTilesY,1),this._projection=new Yo(this._ellipsoid),c(t.rectangleSouthwestInMeters)&&c(t.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=t.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=t.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new K(-i,-i),this._rectangleNortheastInMeters=new K(i,i)}let e=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new Gt(e.longitude,e.latitude,n.longitude,n.latitude)}Object.defineProperties(mU.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});mU.prototype.getNumberOfXTilesAtLevel=function(t){return this._numberOfLevelZeroTilesX<<t};mU.prototype.getNumberOfYTilesAtLevel=function(t){return this._numberOfLevelZeroTilesY<<t};mU.prototype.rectangleToNativeRectangle=function(t,e){let n=this._projection,i=n.project(Gt.southwest(t)),o=n.project(Gt.northeast(t));return c(e)?(e.west=i.x,e.south=i.y,e.east=o.x,e.north=o.y,e):new Gt(i.x,i.y,o.x,o.y)};mU.prototype.tileXYToNativeRectangle=function(t,e,n,i){let o=this.getNumberOfXTilesAtLevel(n),a=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,l=this._rectangleSouthwestInMeters.x+t*s,r=this._rectangleSouthwestInMeters.x+(t+1)*s,d=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/a,m=this._rectangleNortheastInMeters.y-e*d,h=this._rectangleNortheastInMeters.y-(e+1)*d;return c(i)?(i.west=l,i.south=h,i.east=r,i.north=m,i):new Gt(l,h,r,m)};mU.prototype.tileXYToRectangle=function(t,e,n,i){let o=this.tileXYToNativeRectangle(t,e,n,i),a=this._projection,s=a.unproject(new K(o.west,o.south)),l=a.unproject(new K(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=l.longitude,o.north=l.latitude,o};mU.prototype.positionToTileXY=function(t,e,n){let i=this._rectangle;if(!Gt.contains(i,t))return;let o=this.getNumberOfXTilesAtLevel(e),a=this.getNumberOfYTilesAtLevel(e),l=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,d=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/a,h=this._projection.project(t),u=h.x-this._rectangleSouthwestInMeters.x,R=this._rectangleNortheastInMeters.y-h.y,V=u/l|0;V>=o&&(V=o-1);let F=R/d|0;return F>=a&&(F=a-1),c(n)?(n.x=V,n.y=F,n):new K(V,F)};var Gs=mU;var jZo=b(W(),1);var got,u1t="AAPK3b7fccd1509046758d03c6641e404040gQG5edfR9eun2VcwtbXJKNbQjIZ7ma2vUd9ulqZK4lo3R_DJIAhwoGW9p86JNauB",f1={};f1.defaultAccessToken=u1t;f1.defaultWorldImageryServer=new te({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});f1.defaultWorldHillshadeServer=new te({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});f1.defaultWorldOceanServer=new te({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});f1.getDefaultTokenCredit=function(t){if(t===u1t){if(!c(got)){let e='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';got=new on(e,!0)}return got}};var tp=f1;var iRo=b(W(),1);function Eot(t){t=f(t,f.EMPTY_OBJECT),this._pixelsToCheck=t.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let e=te.createIfNeeded(t.missingImageUrl),n=this;function i(a){c(a.blob)&&(n._missingImageByteLength=a.blob.size);let s=vV(a);if(t.disableCheckIfAllPixelsAreTransparent){let l=!0,r=a.width,d=t.pixelsToCheck;for(let m=0,h=d.length;l&&m<h;++m){let u=d[m],R=u.x*4+u.y*r;s[R+3]>0&&(l=!1)}l&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}e.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}Eot.prototype.isReady=function(){return this._isReady};Eot.prototype.shouldDiscardImage=function(t){let e=this._pixelsToCheck,n=this._missingImagePixels;if(!c(n)||c(t.blob)&&t.blob.size!==this._missingImageByteLength)return!1;let i=vV(t),o=t.width;for(let a=0,s=e.length;a<s;++a){let l=e[a],r=l.x*4+l.y*o;for(let d=0;d<4;++d){let m=r+d;if(i[m]!==n[m])return!1}}return!0};var XM=Eot;var sRo=b(W(),1);function Cot(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}Cot.prototype.configureNameFromProperties=function(t){let e=10,n;for(let i in t)if(t.hasOwnProperty(i)&&t[i]){let o=i.toLowerCase();e>1&&o==="name"?(e=1,n=i):e>2&&o==="title"?(e=2,n=i):e>3&&/name/i.test(i)?(e=3,n=i):e>4&&/title/i.test(i)&&(e=4,n=i)}c(n)&&(this.name=t[n])};Cot.prototype.configureDescriptionFromProperties=function(t){function e(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let a=n[o];c(a)&&(typeof a=="object"?i+=`<tr><td>${o}</td><td>${e(a)}</td></tr>`:i+=`<tr><td>${o}</td><td>${a}</td></tr>`)}return i+="</table>",i}this.description=e(t)};var iZ=Cot;var hRo=b(W(),1);function F1(){Ut.throwInstantiationError()}Object.defineProperties(F1.prototype,{rectangle:{get:Ut.throwInstantiationError},tileWidth:{get:Ut.throwInstantiationError},tileHeight:{get:Ut.throwInstantiationError},maximumLevel:{get:Ut.throwInstantiationError},minimumLevel:{get:Ut.throwInstantiationError},tilingScheme:{get:Ut.throwInstantiationError},tileDiscardPolicy:{get:Ut.throwInstantiationError},errorEvent:{get:Ut.throwInstantiationError},credit:{get:Ut.throwInstantiationError},proxy:{get:Ut.throwInstantiationError},hasAlphaChannel:{get:Ut.throwInstantiationError}});F1.prototype.getTileCredits=function(t,e,n){Ut.throwInstantiationError()};F1.prototype.requestImage=function(t,e,n,i){Ut.throwInstantiationError()};F1.prototype.pickFeatures=function(t,e,n,i,o){Ut.throwInstantiationError()};var Wge=/\.ktx2$/i;F1.loadImage=function(t,e){let n=te.createIfNeeded(e);return Wge.test(n.url)?Fm(n):c(t)&&c(t.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var $c=F1;var VRo=b(W(),1),fge={SATELLITE:1,OCEANS:2,HILLSHADE:3},oZ=Object.freeze(fge);function Z1t(t){this.useTiles=f(t.usePreCachedTilesIfAvailable,!0);let e=t.ellipsoid;this.tilingScheme=f(t.tilingScheme,new Qo({ellipsoid:e})),this.rectangle=f(t.rectangle,this.tilingScheme.rectangle),this.ellipsoid=e;let n=t.credit;typeof n=="string"&&(n=new on(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=t.tileDiscardPolicy,this.tileWidth=f(t.tileWidth,256),this.tileHeight=f(t.tileHeight,256),this.maximumLevel=t.maximumLevel}Z1t.prototype.build=function(t){t._useTiles=this.useTiles,t._tilingScheme=this.tilingScheme,t._rectangle=this.rectangle,t._credit=this.credit,t._tileCredits=this.tileCredits,t._tileDiscardPolicy=this.tileDiscardPolicy,t._tileWidth=this.tileWidth,t._tileHeight=this.tileHeight,t._maximumLevel=this.maximumLevel,this.useTiles&&!c(this.tileDiscardPolicy)&&(t._tileDiscardPolicy=new XM({missingImageUrl:R1t(t,0,0,this.maximumLevel).url,pixelsToCheck:[new K(0,0),new K(200,20),new K(20,200),new K(80,110),new K(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function Fge(t,e){let n=t.tileInfo;if(!c(n))e.useTiles=!1;else{if(e.tileWidth=n.rows,e.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)e.tilingScheme=new Gs({ellipsoid:e.ellipsoid});else if(t.tileInfo.spatialReference.wkid===4326)e.tilingScheme=new Qo({ellipsoid:e.ellipsoid});else{let i=`Tile spatial reference WKID ${t.tileInfo.spatialReference.wkid} is not supported.`;throw new Tt(i)}if(e.maximumLevel=t.tileInfo.lods.length-1,c(t.fullExtent)){if(c(t.fullExtent.spatialReference)&&c(t.fullExtent.spatialReference.wkid))if(t.fullExtent.spatialReference.wkid===102100||t.fullExtent.spatialReference.wkid===102113){let i=new Yo,o=t.fullExtent,a=i.unproject(new p(Math.max(o.xmin,-e.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-e.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new p(Math.min(o.xmax,e.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,e.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));e.rectangle=new Gt(a.longitude,a.latitude,s.longitude,s.latitude)}else if(t.fullExtent.spatialReference.wkid===4326)e.rectangle=Gt.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${t.fullExtent.spatialReference.wkid} is not supported.`;throw new Tt(i)}}else e.rectangle=e.tilingScheme.rectangle;e.useTiles=!0}c(t.copyrightText)&&t.copyrightText.length>0&&(c(e.credit)?e.tileCredits=[new on(t.copyrightText)]:e.credit=new on(t.copyrightText))}function Uge(t,e){let n=`An error occurred while accessing ${t.url}`;throw c(e)&&c(e.message)&&(n+=`: ${e.message}`),new Tt(n)}async function Gge(t,e){let n=t.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();Fge(i,e)}catch(i){Uge(t,i)}}function YR(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=t.tileDiscardPolicy,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._maximumLevel=t.maximumLevel,this._tilingScheme=f(t.tilingScheme,new Qo({ellipsoid:t.ellipsoid})),this._useTiles=f(t.usePreCachedTilesIfAvailable,!0),this._rectangle=f(t.rectangle,this._tilingScheme.rectangle),this._layers=t.layers,this._credit=t.credit,this._tileCredits=void 0;let e=t.credit;typeof e=="string"&&(e=new on(e)),this.enablePickFeatures=f(t.enablePickFeatures,!0),this._errorEvent=new It}YR.fromBasemapType=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n,i,o;switch(t){case oZ.SATELLITE:{n=f(e.token,tp.defaultAccessToken),i=te.createIfNeeded(tp.defaultWorldImageryServer),i.appendForwardSlash();let a=tp.getDefaultTokenCredit(n);c(a)&&(o=on.clone(a))}break;case oZ.OCEANS:{n=f(e.token,tp.defaultAccessToken),i=te.createIfNeeded(tp.defaultWorldOceanServer),i.appendForwardSlash();let a=tp.getDefaultTokenCredit(n);c(a)&&(o=on.clone(a))}break;case oZ.HILLSHADE:{n=f(e.token,tp.defaultAccessToken),i=te.createIfNeeded(tp.defaultWorldHillshadeServer),i.appendForwardSlash();let a=tp.getDefaultTokenCredit(n);c(a)&&(o=on.clone(a))}break;default:}return YR.fromUrl(i,{...e,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function R1t(t,e,n,i,o){let a;if(t._useTiles)a=t._resource.getDerivedResource({url:`tile/${i}/${n}/${e}`,request:o});else{let s=t._tilingScheme.tileXYToNativeRectangle(e,n,i),r={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${t._tileWidth},${t._tileHeight}`,format:"png32",transparent:!0,f:"image"};t._tilingScheme.projection instanceof yo?(r.bboxSR=4326,r.imageSR=4326):(r.bboxSR=3857,r.imageSR=3857),t.layers&&(r.layers=`show:${t.layers}`),a=t._resource.getDerivedResource({url:"export",request:o,queryParameters:r})}return a}Object.defineProperties(YR.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});YR.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=te.createIfNeeded(t);n.appendForwardSlash(),c(e.token)&&n.setQueryParameters({token:e.token});let i=new YR(e);i._resource=n;let o=new Z1t(e);return f(e.usePreCachedTilesIfAvailable,!0)&&await Gge(n,o),o.build(i),i};YR.prototype.getTileCredits=function(t,e,n){return this._tileCredits};YR.prototype.requestImage=function(t,e,n,i){return $c.loadImage(this,R1t(this,t,e,n,i))};YR.prototype.pickFeatures=function(t,e,n,i,o){if(!this.enablePickFeatures)return;let a=this._tilingScheme.tileXYToNativeRectangle(t,e,n),s,l,r;if(this._tilingScheme.projection instanceof yo)s=k.toDegrees(i),l=k.toDegrees(o),r="4326";else{let u=this._tilingScheme.projection.project(new gt(i,o,0));s=u.x,l=u.y,r="3857"}let d="visible";c(this._layers)&&(d+=`:${this._layers}`);let m={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${l}`,mapExtent:`${a.west},${a.south},${a.east},${a.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:r,layers:d};return this._resource.getDerivedResource({url:"identify",queryParameters:m}).fetchJson().then(function(u){let R=[],V=u.results;if(!c(V))return R;for(let F=0;F<V.length;++F){let U=V[F],G=new iZ;if(G.data=U,G.name=U.value,G.properties=U.attributes,G.configureDescriptionFromProperties(U.attributes),U.geometryType==="esriGeometryPoint"&&U.geometry){let A=U.geometry.spatialReference&&U.geometry.spatialReference.wkid?U.geometry.spatialReference.wkid:4326;if(A===4326||A===4283)G.position=gt.fromDegrees(U.geometry.x,U.geometry.y,U.geometry.z);else if(A===102100||A===900913||A===3857){let S=new Yo;G.position=S.unproject(new p(U.geometry.x,U.geometry.y,U.geometry.z))}}R.push(G)}return R})};YR._metadataCache={};var cW=YR;var ibo=b(W(),1);var XRo=b(W(),1),Age={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},U1=Object.freeze(Age);var MRo=b(W(),1);function JM(t){}JM.prototype.isReady=function(){return!0};JM.prototype.shouldDiscardImage=function(t){return JM.EMPTY_IMAGE===t};var Zz;Object.defineProperties(JM,{EMPTY_IMAGE:{get:function(){return c(Zz)||(Zz=new Image,Zz.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),Zz}}});var G1=JM;function b1t(t){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}b1t.prototype.build=function(t){t._tileWidth=this.tileWidth,t._tileHeight=this.tileHeight,t._maximumLevel=this.maximumLevel,t._imageUrlSubdomains=this.imageUrlSubdomains,t._imageUrlTemplate=this.imageUrlTemplate;let e=t._attributionList=this.attributionList;e||(e=[]),t._attributionList=e;for(let n=0,i=e.length;n<i;++n){let o=e[n];if(o.credit instanceof on)break;o.credit=new on(o.attribution);let a=o.coverageAreas;for(let s=0,l=o.coverageAreas.length;s<l;++s){let r=a[s],d=r.bbox;r.bbox=new Gt(k.toRadians(d[1]),k.toRadians(d[0]),k.toRadians(d[3]),k.toRadians(d[2]))}}};function Sge(t,e){if(t.resourceSets.length!==1)throw new Tt("metadata does not specify one resource in resourceSets");let n=t.resourceSets[0].resources[0];e.tileWidth=n.imageWidth,e.tileHeight=n.imageHeight,e.maximumLevel=n.zoomMax-1,e.imageUrlSubdomains=n.imageUrlSubdomains,e.imageUrlTemplate=n.imageUrl,e.attributionList=n.imageryProviders}function Tge(t,e,n){let i=`An error occurred while accessing ${t.url}`;throw c(e)&&c(e.message)&&(i+=`: ${e.message}`),za.reportError(void 0,n,c(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,e),new Tt(i)}async function gge(t,e,n){let i=t.url,o=lr._metadataCache[i];c(o)||(o=t.fetchJsonp("jsonp"),lr._metadataCache[i]=o);try{let a=await o;return Sge(a,e)}catch(a){Tge(t,a,n)}}function lr(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=f(t.mapStyle,U1.AERIAL),this._mapLayer=t.mapLayer,this._culture=f(t.culture,""),this._key=t.key,this._tileDiscardPolicy=t.tileDiscardPolicy,c(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new G1),this._proxy=t.proxy,this._credit=new on(`<a href="https://www.microsoft.com/en-us/maps/product/enduserterms"><img src="${lr.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new Gs({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new It}Object.defineProperties(lr.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return c(this.mapLayer)}}});lr.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=e.tileProtocol;c(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=f(e.mapStyle,U1.AERIAL),o=te.createIfNeeded(t);o.appendForwardSlash();let a={incl:"ImageryProviders",key:e.key,uriScheme:n};c(e.mapLayer)&&(a.mapLayer=e.mapLayer),c(e.culture)&&(a.culture=e.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:a}),l=new lr(e);l._resource=o;let r=new b1t(e);return await gge(s,r),r.build(l),l};var Ege=new Gt;lr.prototype.getTileCredits=function(t,e,n){let i=this._tilingScheme.tileXYToRectangle(t,e,n,Ege);return Nge(this._attributionList,n,i)};lr.prototype.requestImage=function(t,e,n,i){let o=$c.loadImage(this,Cge(this,t,e,n,i));if(c(o))return o.catch(function(a){return c(a.blob)&&a.blob.size===0?G1.EMPTY_IMAGE:Promise.reject(a)})};lr.prototype.pickFeatures=function(t,e,n,i,o){};lr.tileXYToQuadKey=function(t,e,n){let i="";for(let o=n;o>=0;--o){let a=1<<o,s=0;t&a&&(s|=1),e&a&&(s|=2),i+=s}return i};lr.quadKeyToTileXY=function(t){let e=0,n=0,i=t.length-1;for(let o=i;o>=0;--o){let a=1<<o,s=+t[i-o];s&1&&(e|=a),s&2&&(n|=a)}return{x:e,y:n,level:i}};lr._logoUrl=void 0;Object.defineProperties(lr,{logoUrl:{get:function(){return c(lr._logoUrl)||(lr._logoUrl=Dn("Assets/Images/bing_maps_credit.png")),lr._logoUrl},set:function(t){lr._logoUrl=t}}});function Cge(t,e,n,i,o){let a=t._imageUrlTemplate,s=t._imageUrlSubdomains,l=(e+n+i)%s.length;return t._resource.getDerivedResource({url:a,request:o,templateValues:{quadkey:lr.tileXYToQuadKey(e,n,i),subdomain:s[l],culture:t._culture},queryParameters:{n:"z"}})}var Ige=new Gt;function Nge(t,e,n){++e;let i=[];for(let o=0,a=t.length;o<a;++o){let s=t[o],l=s.coverageAreas,r=!1;for(let d=0,m=s.coverageAreas.length;!r&&d<m;++d){let h=l[d];if(e>=h.zoomMin&&e<=h.zoomMax){let u=Gt.intersection(n,h.bbox,Ige);c(u)&&(r=!0)}}r&&i.push(s.credit)}return i}lr._metadataCache={};var LM=lr;var Qbo=b(W(),1);var Wbo=b(W(),1);var W1t=/{[^}]+}/g,f1t={x:kge,y:xge,z:Lge,s:Mge,reverseX:Yge,reverseY:Xge,reverseZ:Jge,westDegrees:_ge,southDegrees:Dge,eastDegrees:Oge,northDegrees:Hge,westProjected:wge,southProjected:Pge,eastProjected:vge,northProjected:Kge,width:zge,height:jge},yge=ze(f1t,{i:qge,j:$ge,reverseI:tEe,reverseJ:eEe,longitudeDegrees:iEe,latitudeDegrees:oEe,longitudeProjected:aEe,latitudeProjected:sEe,format:rEe});function MM(t){t=f(t,f.EMPTY_OBJECT),this._errorEvent=new It;let e=te.createIfNeeded(t.url),n=te.createIfNeeded(t.pickFeaturesUrl);this._resource=e,this._urlSchemeZeroPadding=t.urlSchemeZeroPadding,this._getFeatureInfoFormats=t.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=t.subdomains;Array.isArray(i)?i=i.slice():c(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._minimumLevel=f(t.minimumLevel,0),this._maximumLevel=t.maximumLevel,this._tilingScheme=f(t.tilingScheme,new Gs({ellipsoid:t.ellipsoid})),this._rectangle=f(t.rectangle,this._tilingScheme.rectangle),this._rectangle=Gt.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=t.tileDiscardPolicy;let o=t.credit;typeof o=="string"&&(o=new on(o)),this._credit=o,this._hasAlphaChannel=f(t.hasAlphaChannel,!0);let a=t.customTags,s=ze(f1t,a),l=ze(yge,a);this._tags=s,this._pickFeaturesTags=l,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=f(t.enablePickFeatures,!0)}Object.defineProperties(MM.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});MM.prototype.getTileCredits=function(t,e,n){};MM.prototype.requestImage=function(t,e,n,i){return $c.loadImage(this,Bge(this,t,e,n,i))};MM.prototype.pickFeatures=function(t,e,n,i,o){if(!this.enablePickFeatures||!c(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let a=0,s=this;function l(d,m){return d.callback(m)}function r(){if(a>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let d=s._getFeatureInfoFormats[a],m=Qge(s,t,e,n,i,o,d.format);return++a,d.type==="json"?m.fetchJson().then(d.callback).catch(r):d.type==="xml"?m.fetchXML().then(d.callback).catch(r):d.type==="text"||d.type==="html"?m.fetchText().then(d.callback).catch(r):m.fetch({responseType:d.format}).then(l.bind(void 0,d)).catch(r)}return r()};var Rz=!1,ep=new Gt,bz=!1,_M=new Gt;function Bge(t,e,n,i,o){Rz=!1,bz=!1;let a=t._resource,s=a.getUrlComponent(!0),l=t._tags,r={},d=s.match(W1t);return c(d)&&d.forEach(function(m){let h=m.substring(1,m.length-1);c(l[h])&&(r[h]=l[h](t,e,n,i))}),a.getDerivedResource({request:o,templateValues:r})}var Iot=!1,S1=new K,Not=!1;function Qge(t,e,n,i,o,a,s){Rz=!1,bz=!1,Iot=!1,Not=!1;let l=t._pickFeaturesResource,r=l.getUrlComponent(!0),d=t._pickFeaturesTags,m={},h=r.match(W1t);return c(h)&&h.forEach(function(u){let R=u.substring(1,u.length-1);c(d[R])&&(m[R]=d[R](t,e,n,i,o,a,s))}),l.getDerivedResource({templateValues:m})}function T1(t,e,n){if(t&&t.urlSchemeZeroPadding&&t.urlSchemeZeroPadding.hasOwnProperty(e)){let i=t.urlSchemeZeroPadding[e];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function kge(t,e,n,i){return T1(t,"{x}",e)}function Yge(t,e,n,i){let o=t.tilingScheme.getNumberOfXTilesAtLevel(i)-e-1;return T1(t,"{reverseX}",o)}function xge(t,e,n,i){return T1(t,"{y}",n)}function Xge(t,e,n,i){let o=t.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return T1(t,"{reverseY}",o)}function Jge(t,e,n,i){let o=t.maximumLevel,a=c(o)&&i<o?o-i-1:i;return T1(t,"{reverseZ}",a)}function Lge(t,e,n,i){return T1(t,"{z}",i)}function Mge(t,e,n,i){let o=(e+n+i)%t._subdomains.length;return t._subdomains[o]}function Wz(t,e,n,i){Rz||(t.tilingScheme.tileXYToRectangle(e,n,i,ep),ep.west=k.toDegrees(ep.west),ep.south=k.toDegrees(ep.south),ep.east=k.toDegrees(ep.east),ep.north=k.toDegrees(ep.north),Rz=!0)}function _ge(t,e,n,i){return Wz(t,e,n,i),ep.west}function Dge(t,e,n,i){return Wz(t,e,n,i),ep.south}function Oge(t,e,n,i){return Wz(t,e,n,i),ep.east}function Hge(t,e,n,i){return Wz(t,e,n,i),ep.north}function fz(t,e,n,i){bz||(t.tilingScheme.tileXYToNativeRectangle(e,n,i,_M),bz=!0)}function wge(t,e,n,i){return fz(t,e,n,i),_M.west}function Pge(t,e,n,i){return fz(t,e,n,i),_M.south}function vge(t,e,n,i){return fz(t,e,n,i),_M.east}function Kge(t,e,n,i){return fz(t,e,n,i),_M.north}function zge(t,e,n,i){return t.tileWidth}function jge(t,e,n,i){return t.tileHeight}function qge(t,e,n,i,o,a,s){return Fz(t,e,n,i,o,a),S1.x}function $ge(t,e,n,i,o,a,s){return Fz(t,e,n,i,o,a),S1.y}function tEe(t,e,n,i,o,a,s){return Fz(t,e,n,i,o,a),t.tileWidth-S1.x-1}function eEe(t,e,n,i,o,a,s){return Fz(t,e,n,i,o,a),t.tileHeight-S1.y-1}var nEe=new Gt,A1=new p;function Fz(t,e,n,i,o,a,s){if(Iot)return;yot(t,e,n,i,o,a);let l=A1,r=t.tilingScheme.tileXYToNativeRectangle(e,n,i,nEe);S1.x=t.tileWidth*(l.x-r.west)/r.width|0,S1.y=t.tileHeight*(r.north-l.y)/r.height|0,Iot=!0}function iEe(t,e,n,i,o,a,s){return k.toDegrees(o)}function oEe(t,e,n,i,o,a,s){return k.toDegrees(a)}function aEe(t,e,n,i,o,a,s){return yot(t,e,n,i,o,a),A1.x}function sEe(t,e,n,i,o,a,s){return yot(t,e,n,i,o,a),A1.y}var lEe=new gt;function yot(t,e,n,i,o,a,s){if(!Not){if(t.tilingScheme.projection instanceof yo)A1.x=k.toDegrees(o),A1.y=k.toDegrees(a);else{let l=lEe;l.longitude=o,l.latitude=a,t.tilingScheme.projection.project(l,A1)}Not=!0}}function rEe(t,e,n,i,o,a,s){return s}var Ad=MM;function TV(t){Ad.call(this,t)}TV._requestMetadata=async function(t,e,n,i){try{let o=await n.fetchXML();return TV._metadataSuccess(o,t,e,n,i)}catch(o){if(o instanceof yZ)return TV._metadataFailure(t,e);throw o}};TV.fromUrl=async function(t,e){let n=te.createIfNeeded(t);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});e=f(e,f.EMPTY_OBJECT);let a=await TV._requestMetadata(e,i,o);return new TV(a)};c(Object.create)&&(TV.prototype=Object.create(Ad.prototype),TV.prototype.constructor=TV);function F1t(t,e){return t.west<e.rectangle.west&&(t.west=e.rectangle.west),t.east>e.rectangle.east&&(t.east=e.rectangle.east),t.south<e.rectangle.south&&(t.south=e.rectangle.south),t.north>e.rectangle.north&&(t.north=e.rectangle.north),t}function U1t(t,e,n){let i=t.positionToTileXY(Gt.southwest(e),n),o=t.positionToTileXY(Gt.northeast(e),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}TV._metadataSuccess=function(t,e,n,i,o){let a=/tileformat/i,s=/tileset/i,l=/tilesets/i,r=/boundingbox/i,d,m,h,u=[],R=t.childNodes[0].childNodes;for(let Q=0;Q<R.length;Q++)if(a.test(R.item(Q).nodeName))d=R.item(Q);else if(l.test(R.item(Q).nodeName)){h=R.item(Q);let J=R.item(Q).childNodes;for(let M=0;M<J.length;M++)s.test(J.item(M).nodeName)&&u.push(J.item(M))}else r.test(R.item(Q).nodeName)&&(m=R.item(Q));let V;if(!c(h)||!c(m))throw V=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,c(o)&&za.reportError(void 0,o,o.errorEvent,V),new Tt(V);let F=f(e.fileExtension,d.getAttribute("extension")),U=f(e.tileWidth,parseInt(d.getAttribute("width"),10)),G=f(e.tileHeight,parseInt(d.getAttribute("height"),10)),A=f(e.minimumLevel,parseInt(u[0].getAttribute("order"),10)),S=f(e.maximumLevel,parseInt(u[u.length-1].getAttribute("order"),10)),g=h.getAttribute("profile"),C=e.tilingScheme;if(!c(C))if(g==="geodetic"||g==="global-geodetic")C=new Qo({ellipsoid:e.ellipsoid});else if(g==="mercator"||g==="global-mercator")C=new Gs({ellipsoid:e.ellipsoid});else throw V=`${i.url} specifies an unsupported profile attribute, ${g}.`,c(o)&&za.reportError(void 0,o,o.errorEvent,V),new Tt(V);let y=Gt.clone(e.rectangle);if(!c(y)){let Q,J,M,Z;f(e.flipXY,!1)?(M=new K(parseFloat(m.getAttribute("miny")),parseFloat(m.getAttribute("minx"))),Z=new K(parseFloat(m.getAttribute("maxy")),parseFloat(m.getAttribute("maxx")))):(M=new K(parseFloat(m.getAttribute("minx")),parseFloat(m.getAttribute("miny"))),Z=new K(parseFloat(m.getAttribute("maxx")),parseFloat(m.getAttribute("maxy"))));let I=g==="geodetic"||g==="mercator";if(C.projection instanceof yo||I)Q=gt.fromDegrees(M.x,M.y),J=gt.fromDegrees(Z.x,Z.y);else{let B=C.projection;Q=B.unproject(M),J=B.unproject(Z)}y=new Gt(Q.longitude,Q.latitude,J.longitude,J.latitude)}return y=F1t(y,C),A=U1t(C,y,A),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${F}`}),tilingScheme:C,rectangle:y,tileWidth:U,tileHeight:G,minimumLevel:A,maximumLevel:S,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};TV._metadataFailure=function(t,e){let n=f(t.fileExtension,"png"),i=f(t.tileWidth,256),o=f(t.tileHeight,256),a=t.maximumLevel,s=c(t.tilingScheme)?t.tilingScheme:new Gs({ellipsoid:t.ellipsoid}),l=f(t.rectangle,s.rectangle);l=F1t(l,s);let r=U1t(s,l,t.minimumLevel);return{url:e.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:l,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:a,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};var hU=TV;var vbo=b(W(),1);function G1t(t){this.channel=t.channel,this.ellipsoid=t.ellipsoid,this.tilingScheme=void 0,this.version=void 0}G1t.prototype.build=function(t){t._channel=this.channel,t._version=this.version,t._tilingScheme=this.tilingScheme};function dEe(t,e){let n;try{n=JSON.parse(t)}catch{n=JSON.parse(t.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===e.channel){i=n.layers[o];break}if(!c(i)){let o=`Could not find layer with channel (id) of ${e.channel}.`;throw new Tt(o)}if(!c(i.version)){let o=`Could not find a version in channel (id) ${e.channel}.`;throw new Tt(o)}if(e.version=i.version,c(n.projection)&&n.projection==="flat")e.tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new Gt(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:e.ellipsoid});else if(!c(n.projection)||n.projection==="mercator")e.tilingScheme=new Gs({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new Tt(o)}return!0}function cEe(t,e,n){let i=`An error occurred while accessing ${e.url}.`;throw c(t)&&c(t.message)&&(i+=`: ${t.message}`),za.reportError(void 0,n,c(n)?n._errorEvent:void 0,i),new Tt(i)}async function mEe(t,e,n){try{let i=await t.fetchText();dEe(i,e)}catch(i){cEe(i,t,n)}}function $m(t){t=f(t,{}),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=t.tileDiscardPolicy,this._channel=t.channel,this._requestType="ImageryMaps",this._credit=new on(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${$m.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=t.maximumLevel,this._errorEvent=new It}Object.defineProperties($m.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});$m.fromUrl=async function(t,e,n){n=f(n,{});let i=f(n.path,"/default_map"),o=te.createIfNeeded(t).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let a=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new G1t(n);s.channel=e,await mEe(a,s);let l=new $m(n);return s.build(l),l._resource=o,l._url=t,l._path=i,l};$m.prototype.getTileCredits=function(t,e,n){};$m.prototype.requestImage=function(t,e,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:t,y:e,z:n+1}});return $c.loadImage(this,o)};$m.prototype.pickFeatures=function(t,e,n,i,o){};$m._logoUrl=void 0;Object.defineProperties($m,{logoUrl:{get:function(){return c($m._logoUrl)||($m._logoUrl=Dn("Assets/Images/google_earth_credit.png")),$m._logoUrl},set:function(t){$m._logoUrl=t}}});var DM=$m;var e0o=b(W(),1);var hEe=/\/$/,A1t=new on('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function g1(t){t=f(t,f.EMPTY_OBJECT);let e=t.mapId,n=t.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=te.createIfNeeded(f(t.url,"https://{s}.tiles.mapbox.com/v4/"));this._mapId=e,this._accessToken=n;let o=f(t.format,"png");/\./.test(o)||(o=`.${o}`),this._format=o;let a=i.getUrlComponent();hEe.test(a)||(a+="/"),a+=`${e}/{z}/{x}/{y}${this._format}`,i.url=a,i.setQueryParameters({access_token:n});let s;c(t.credit)?(s=t.credit,typeof s=="string"&&(s=new on(s))):s=A1t,this._resource=i,this._imageryProvider=new Ad({url:i,credit:s,ellipsoid:t.ellipsoid,minimumLevel:t.minimumLevel,maximumLevel:t.maximumLevel,rectangle:t.rectangle})}Object.defineProperties(g1.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});g1.prototype.getTileCredits=function(t,e,n){};g1.prototype.requestImage=function(t,e,n,i){return this._imageryProvider.requestImage(t,e,n,i)};g1.prototype.pickFeatures=function(t,e,n,i,o){return this._imageryProvider.pickFeatures(t,e,n,i,o)};g1._defaultCredit=A1t;var OM=g1;var p0o=b(W(),1);function dT(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let e=f(t.rectangle,Gt.MAX_VALUE),n=new Qo({rectangle:e,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:t.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new It;let i=t.credit;typeof i=="string"&&(i=new on(i)),this._credit=i;let o=te.createIfNeeded(t.url);this._resource=o,this._tileWidth=t.tileWidth,this._tileHeight=t.tileHeight}Object.defineProperties(dT.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function pEe(t,e,n,i){let o=`Failed to load image ${t.url}`;c(e)&&c(e.message)&&(o+=`: ${e.message}`);let a=za.reportError(i,n,c(n)?n._errorEvent:void 0,o,0,0,0,e);if(a.retry)return Bot(t,n,a);throw c(n)&&(n._hasError=!0),new Tt(o)}async function Bot(t,e,n){try{return await $c.loadImage(null,t)}catch(i){return pEe(t,i,e,n)}}dT.fromUrl=async function(t,e){let n=te.createIfNeeded(t),i=await Bot(n);e=f(e,f.EMPTY_OBJECT);let o=new dT({...e,url:t,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};dT.prototype.getTileCredits=function(t,e,n){};dT.prototype.requestImage=async function(t,e,n,i){if(!this._hasError&&!c(this._image)){let o=await Bot(this._resource,this);return this._image=o,za.reportSuccess(this._errorEvent),o}return this._image};dT.prototype.pickFeatures=function(t,e,n,i,o){};var HM=dT;var x0o=b(W(),1);var W0o=b(W(),1);function VEe(t,e,n){this.type=t,c(e)||(t==="json"?e="application/json":t==="xml"?e="text/xml":t==="html"?e="text/html":t==="text"&&(e="text/plain")),this.format=e,c(n)||(t==="json"?n=uEe:t==="xml"?n=WEe:(t==="html"||t==="text")&&(n=S1t)),this.callback=n}function uEe(t){let e=[],n=t.features;for(let i=0;i<n.length;++i){let o=n[i],a=new iZ;if(a.data=o,a.properties=o.properties,a.configureNameFromProperties(o.properties),a.configureDescriptionFromProperties(o.properties),c(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],l=o.geometry.coordinates[1];a.position=gt.fromDegrees(s,l)}e.push(a)}return e}var Qot="http://www.mapinfo.com/mxp",ZEe="http://www.esri.com/wms",REe="http://www.opengis.net/wfs",bEe="http://www.opengis.net/gml";function WEe(t){let e=t.documentElement;if(e.localName==="MultiFeatureCollection"&&e.namespaceURI===Qot)return fEe(t);if(e.localName==="FeatureInfoResponse"&&e.namespaceURI===ZEe)return FEe(t);if(e.localName==="FeatureCollection"&&e.namespaceURI===REe)return UEe(t);if(e.localName==="ServiceExceptionReport")throw new Tt(new XMLSerializer().serializeToString(e));return e.localName==="msGMLOutput"?GEe(t):AEe(t)}function fEe(t){let e=[],i=t.documentElement.getElementsByTagNameNS(Qot,"Feature");for(let o=0;o<i.length;++o){let a=i[o],s={},l=a.getElementsByTagNameNS(Qot,"Val");for(let d=0;d<l.length;++d){let m=l[d];if(m.hasAttribute("ref")){let h=m.getAttribute("ref"),u=m.textContent.trim();s[h]=u}}let r=new iZ;r.data=a,r.properties=s,r.configureNameFromProperties(s),r.configureDescriptionFromProperties(s),e.push(r)}return e}function FEe(t){let e=t.documentElement,n=[],i,o=e.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let a=0;a<o.length;++a){let s=o[a];i={};let l=s.attributes;for(let r=0;r<l.length;++r){let d=l[r];i[d.name]=d.value}n.push(Uz(s,i))}else{let a=e.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<a.length;++s){let l=a[s];i={};let r=l.childNodes;for(let d=0;d<r.length;++d){let m=r[d];m.nodeType===Node.ELEMENT_NODE&&(i[m.localName]=m.textContent)}n.push(Uz(l,i))}}return n}function UEe(t){let e=[],i=t.documentElement.getElementsByTagNameNS(bEe,"featureMember");for(let o=0;o<i.length;++o){let a=i[o],s={};kot(a,s),e.push(Uz(a,s))}return e}function GEe(t){let e=[],n,i=t.documentElement.childNodes;for(let a=0;a<i.length;a++)if(i[a].nodeType===Node.ELEMENT_NODE){n=i[a];break}if(!c(n))throw new Tt("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let a=0;a<o.length;++a){let s=o[a];if(s.nodeType===Node.ELEMENT_NODE){let l={};kot(s,l),e.push(Uz(s,l))}}return e}function kot(t,e){let n=!0;for(let i=0;i<t.childNodes.length;++i){let o=t.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&kot(o,e)&&(e[o.localName]=o.textContent)}return n}function Uz(t,e){let n=new iZ;return n.data=t,n.properties=e,n.configureNameFromProperties(e),n.configureDescriptionFromProperties(e),n}function AEe(t){let e=new XMLSerializer().serializeToString(t),n=document.createElement("div"),i=document.createElement("pre");i.textContent=e,n.appendChild(i);let o=new iZ;return o.data=t,o.description=n.innerHTML,[o]}var SEe=/<body>\s*<\/body>/im,TEe=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,gEe=/<title>([\s\S]*)<\/title>/im;function S1t(t){if(SEe.test(t)||TEe.test(t))return;let e,n=gEe.exec(t);n&&n.length>1&&(e=n[1]);let i=new iZ;return i.name=e,i.description=t,i.data=t,[i]}var cT=VEe;var T0o=b(W(),1);function wM(t){t=f(t,f.EMPTY_OBJECT),this._tileCache={},this._tilesRequestedForInterval=[];let e=this._clock=t.clock;this._times=t.times,this._requestImageFunction=t.requestImageFunction,this._reloadFunction=t.reloadFunction,this._currentIntervalIndex=-1,e.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(e)}Object.defineProperties(wM.prototype,{clock:{get:function(){return this._clock},set:function(t){this._clock!==t&&(this._clock=t,this._clockOnTick(t),this._reloadFunction())}},times:{get:function(){return this._times},set:function(t){this._times!==t&&(this._times=t,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});wM.prototype.getFromCache=function(t,e,n,i){let o=T1t(t,e,n),a,s=this._tileCache[this._currentIntervalIndex];if(c(s)&&c(s[o])){let l=s[o];a=l.promise.catch(function(r){throw i.state=l.request.state,r}),delete s[o]}return a};wM.prototype.checkApproachingInterval=function(t,e,n,i){let o=T1t(t,e,n),a=this._tilesRequestedForInterval,s=g1t(this),l={key:o,priorityFunction:i.priorityFunction};(!c(s)||!E1t(this,l,s))&&a.push(l),a.length>=512&&a.splice(0,256)};wM.prototype._clockOnTick=function(t){let e=t.currentTime,i=this._times.indexOf(e),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let l in s)s.hasOwnProperty(l)&&s[l].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let a=g1t(this);if(c(a)){let s=this._tilesRequestedForInterval,l=!0;for(;l&&s.length!==0;){let r=s.pop();l=E1t(this,r,a),l||s.push(r)}}};function T1t(t,e,n){return`${t}-${e}-${n}`}function EEe(t){let e=t.split("-");if(e.length===3)return{x:Number(e[0]),y:Number(e[1]),level:Number(e[2])}}function g1t(t){let e=t._times;if(!c(e))return;let n=t._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,a=n.multiplier;if(!o&&a!==0)return;let s,l=e.indexOf(i);if(l<0)return;let r=e.get(l);return a>0?(s=rt.secondsDifference(r.stop,i),++l):(s=rt.secondsDifference(r.start,i),--l),s/=a,l>=0&&s<=5?e.get(l):void 0}function E1t(t,e,n){let i=t._times.indexOf(n.start),o=t._tileCache,a=o[i];c(a)||(a=o[i]={});let s=e.key;if(c(a[s]))return!0;let l=EEe(s),r=new us({throttle:!1,throttleByServer:!0,type:Xl.IMAGERY,priorityFunction:e.priorityFunction}),d=t._requestImageFunction(l.x,l.y,l.level,r,n);return c(d)?(a[s]={promise:d,request:r},!0):!1}var mT=wM;var CEe=[3034,3035,3042,3043,3044],IEe=[4471,4559];function aZ(t){if(t=f(t,f.EMPTY_OBJECT),c(t.times)&&!c(t.clock))throw new Ut("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=f(t.getFeatureInfoUrl,t.url);let e=te.createIfNeeded(t.url),n=te.createIfNeeded(this._getFeatureInfoUrl);e.setQueryParameters(aZ.DefaultParameters,!0),n.setQueryParameters(aZ.GetFeatureInfoDefaultParameters,!0),c(t.parameters)&&e.setQueryParameters(C1t(t.parameters)),c(t.getFeatureInfoParameters)&&n.setQueryParameters(C1t(t.getFeatureInfoParameters));let i=this;this._reload=void 0,c(t.times)&&(this._timeDynamicImagery=new mT({clock:t.clock,times:t.times,requestImageFunction:function(s,l,r,d,m){return I1t(i,s,l,r,d,m)},reloadFunction:function(){c(i._reload)&&i._reload()}}));let o={};if(o.layers=t.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(e.queryParameters.version)>=1.3){o.crs=f(t.crs,t.tilingScheme&&t.tilingScheme.projection instanceof Yo?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let l=Number(s[1]);(l>=4e3&&l<5e3&&!IEe.includes(l)||CEe.includes(l))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=f(t.srs,t.tilingScheme&&t.tilingScheme.projection instanceof Yo?"EPSG:3857":"EPSG:4326");e.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let a={query_layers:t.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(a.i="{i}",a.j="{j}"):(a.x="{i}",a.y="{j}"),n.setQueryParameters(a,!0),this._resource=e,this._pickFeaturesResource=n,this._layers=t.layers,this._tileProvider=new Ad({url:e,pickFeaturesUrl:n,tilingScheme:f(t.tilingScheme,new Qo({ellipsoid:t.ellipsoid})),rectangle:t.rectangle,tileWidth:t.tileWidth,tileHeight:t.tileHeight,minimumLevel:t.minimumLevel,maximumLevel:t.maximumLevel,subdomains:t.subdomains,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit,getFeatureInfoFormats:f(t.getFeatureInfoFormats,aZ.DefaultGetFeatureInfoFormats),enablePickFeatures:t.enablePickFeatures})}function I1t(t,e,n,i,o,a){let s=c(a)?a.data:void 0,l=t._tileProvider;return c(s)&&l._resource.setQueryParameters(s),l.requestImage(e,n,i,o)}function NEe(t,e,n,i,o,a,s){let l=c(s)?s.data:void 0,r=t._tileProvider;return c(l)&&r._pickFeaturesResource.setQueryParameters(l),r.pickFeatures(e,n,i,o,a)}Object.defineProperties(aZ.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(t){this._tileProvider.enablePickFeatures=t}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(t){this._timeDynamicImagery.clock=t}},times:{get:function(){return this._timeDynamicImagery.times},set:function(t){this._timeDynamicImagery.times=t}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});aZ.prototype.getTileCredits=function(t,e,n){return this._tileProvider.getTileCredits(t,e,n)};aZ.prototype.requestImage=function(t,e,n,i){let o,a=this._timeDynamicImagery,s;return c(a)&&(s=a.currentInterval,o=a.getFromCache(t,e,n,i)),c(o)||(o=I1t(this,t,e,n,i,s)),c(o)&&c(a)&&a.checkApproachingInterval(t,e,n,i),o};aZ.prototype.pickFeatures=function(t,e,n,i,o){let a=this._timeDynamicImagery,s=c(a)?a.currentInterval:void 0;return NEe(this,t,e,n,i,o,s)};aZ.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});aZ.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});aZ.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new cT("json","application/json")),Object.freeze(new cT("xml","text/xml")),Object.freeze(new cT("text","text/html"))]);function C1t(t){let e={};for(let n in t)t.hasOwnProperty(n)&&(e[n.toLowerCase()]=t[n]);return e}var PM=aZ;var K0o=b(W(),1);var yEe=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function vM(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let e=te.createIfNeeded(t.url),n=t.style,i=t.tileMatrixSetID,o=e.url,a=o.match(/{/g);if(!c(a)||a.length===1&&/{s}/.test(o))e.setQueryParameters(yEe),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};e.setTemplateValues(h),this._useKvp=!1}this._resource=e,this._layer=t.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=t.tileMatrixLabels,this._format=f(t.format,"image/jpeg"),this._tileDiscardPolicy=t.tileDiscardPolicy,this._tilingScheme=c(t.tilingScheme)?t.tilingScheme:new Gs({ellipsoid:t.ellipsoid}),this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._minimumLevel=f(t.minimumLevel,0),this._maximumLevel=t.maximumLevel,this._rectangle=f(t.rectangle,this._tilingScheme.rectangle),this._dimensions=t.dimensions;let s=this;this._reload=void 0,c(t.times)&&(this._timeDynamicImagery=new mT({clock:t.clock,times:t.times,requestImageFunction:function(h,u,R,V,F){return N1t(s,h,u,R,V,F)},reloadFunction:function(){c(s._reload)&&s._reload()}}));let l=this._tilingScheme.positionToTileXY(Gt.southwest(this._rectangle),this._minimumLevel),r=this._tilingScheme.positionToTileXY(Gt.northeast(this._rectangle),this._minimumLevel),d=(Math.abs(r.x-l.x)+1)*(Math.abs(r.y-l.y)+1);this._errorEvent=new It;let m=t.credit;this._credit=typeof m=="string"?new on(m):m,this._subdomains=t.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():c(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function N1t(t,e,n,i,o,a){let s=t._tileMatrixLabels,l=c(s)?s[i]:i.toString(),r=t._subdomains,d=t._dimensions,m=c(a)?a.data:void 0,h,u;if(!t._useKvp)u={TileMatrix:l,TileRow:n.toString(),TileCol:e.toString(),s:r[(e+n+i)%r.length]},h=t._resource.getDerivedResource({request:o}),h.setTemplateValues(u),c(d)&&h.setTemplateValues(d),c(m)&&h.setTemplateValues(m);else{let R={};R.tilematrix=l,R.layer=t._layer,R.style=t._style,R.tilerow=n,R.tilecol=e,R.tilematrixset=t._tileMatrixSetID,R.format=t._format,c(d)&&(R=ze(R,d)),c(m)&&(R=ze(R,m)),u={s:r[(e+n+i)%r.length]},h=t._resource.getDerivedResource({queryParameters:R,request:o}),h.setTemplateValues(u)}return $c.loadImage(t,h)}Object.defineProperties(vM.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(t){this._timeDynamicImagery.clock=t}},times:{get:function(){return this._timeDynamicImagery.times},set:function(t){this._timeDynamicImagery.times=t}},dimensions:{get:function(){return this._dimensions},set:function(t){this._dimensions!==t&&(this._dimensions=t,c(this._reload)&&this._reload())}}});vM.prototype.getTileCredits=function(t,e,n){};vM.prototype.requestImage=function(t,e,n,i){let o,a=this._timeDynamicImagery,s;return c(a)&&(s=a.currentInterval,o=a.getFromCache(t,e,n,i)),c(o)||(o=N1t(this,t,e,n,i,s)),c(o)&&c(a)&&a.checkApproachingInterval(t,e,n,i),o};vM.prototype.pickFeatures=function(t,e,n,i,o){};var hT=vM;var BEe={ARCGIS_MAPSERVER:cW.fromUrl,BING:async(t,e)=>LM.fromUrl(t,e),GOOGLE_EARTH:async(t,e)=>{let n=e.channel;return delete e.channel,DM.fromUrl(t,n,e)},MAPBOX:(t,e)=>new OM({url:t,...e}),SINGLE_TILE:HM.fromUrl,TMS:hU.fromUrl,URL_TEMPLATE:(t,e)=>new Ad({url:t,...e}),WMS:(t,e)=>new PM({url:t,...e}),WMTS:(t,e)=>new hT({url:t,...e})};function xR(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new It}Object.defineProperties(xR.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});xR.fromAssetId=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=gh._createEndpointResource(t,e),i=t.toString()+e.accessToken+e.server,o=xR._endpointCache[i];c(o)||(o=n.fetchJson(),xR._endpointCache[i]=o);let a=await o;if(a.type!=="IMAGERY")throw new Tt(`Cesium ion asset ${t} is not an imagery asset.`);let s,l=a.externalType;if(!c(l))s=await hU.fromUrl(new gh(a,n));else{let d=BEe[l];if(!c(d))throw new Tt(`Unrecognized Cesium ion imagery type: ${l}`);let m={...a.options},h=m.url;delete m.url,s=await d(h,m)}let r=new xR(e);return s.errorEvent.addEventListener(function(d){d.provider=r,r._errorEvent.raiseEvent(d)}),r._tileCredits=gh.getCreditsFromEndpoint(a,n),r._imageryProvider=s,r};xR.prototype.getTileCredits=function(t,e,n){let i=this._imageryProvider.getTileCredits(t,e,n);return c(i)?this._tileCredits.concat(i):this._tileCredits};xR.prototype.requestImage=function(t,e,n,i){return this._imageryProvider.requestImage(t,e,n,i)};xR.prototype.pickFeatures=function(t,e,n,i,o){return this._imageryProvider.pickFeatures(t,e,n,i,o)};xR._endpointCache={};var mW=xR;var pWo=b(W(),1),QEe={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},hW=Object.freeze(QEe);function kEe(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.style,hW.AERIAL);return mW.fromAssetId(e)}var pW=kEe;var fWo=b(W(),1),KM=`uniform sampler2D u_texture; in vec2 v_textureCoordinates; @@ -10451,7 +10451,7 @@ void main() { out_FragColor = texture(u_texture, v_textureCoordinates); } -`;var UWo=R(W(),1),zM=`in vec4 position; +`;var UWo=b(W(),1),zM=`in vec4 position; in float webMercatorT; uniform vec2 u_textureDimensions; @@ -10463,7 +10463,7 @@ void main() v_textureCoordinates = vec2(position.x, webMercatorT); gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); } -`;var gWo=R(W(),1);function E1(t,e,n,i,o){if(this.imageryLayer=t,this.x=e,this.y=n,this.level=i,this.request=void 0,i!==0){let a=e/2|0,s=n/2|0,l=i-1;this.parent=t.getImageryFromCache(a,s,l)}this.state=ho.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!c(o)&&t.ready&&(o=t.imageryProvider.tilingScheme.tileXYToRectangle(e,n,i)),this.rectangle=o}E1.createPlaceholder=function(t){let e=new E1(t,0,0,0);return e.addReference(),e.state=ho.PLACEHOLDER,e};E1.prototype.addReference=function(){++this.referenceCount};E1.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),c(this.parent)&&this.parent.releaseReference(),c(this.image)&&c(this.image.destroy)&&this.image.destroy(),c(this.texture)&&this.texture.destroy(),c(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),At(this),0):this.referenceCount};E1.prototype.processStateMachine=function(t,e,n){this.state===ho.UNLOADED&&!n&&(this.state=ho.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===ho.RECEIVED&&(this.state=ho.TRANSITIONING,this.imageryLayer._createTexture(t.context,this));let i=this.state===ho.READY&&e&&!this.texture;(this.state===ho.TEXTURE_LOADED||i)&&(this.state=ho.TRANSITIONING,this.imageryLayer._reprojectTexture(t,this,e))};var C1=E1;var NWo=R(W(),1);function Yot(t,e,n){this.readyImagery=void 0,this.loadingImagery=t,this.textureCoordinateRectangle=e,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}Yot.prototype.freeResources=function(){c(this.readyImagery)&&this.readyImagery.releaseReference(),c(this.loadingImagery)&&this.loadingImagery.releaseReference()};Yot.prototype.processStateMachine=function(t,e,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(e,!this.useWebMercatorT,n),i.state===ho.READY)return c(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(t,this),!0;let a=i.parent,s;for(;c(a)&&(a.state!==ho.READY||!this.useWebMercatorT&&!c(a.texture));)a.state!==ho.FAILED&&a.state!==ho.INVALID&&(s=s||a),a=a.parent;return this.readyImagery!==a&&(c(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=a,c(a)&&(a.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(t,this))),i.state===ho.FAILED||i.state===ho.INVALID?c(s)?(s.processStateMachine(e,!this.useWebMercatorT,n),!1):!0:!1};var I1=Yot;function Uo(t,e){this._imageryProvider=t,this._readyEvent=new It,this._errorEvent=new It,e=f(e,f.EMPTY_OBJECT),t=f(t,f.EMPTY_OBJECT),this.alpha=f(e.alpha,f(t._defaultAlpha,1)),this.nightAlpha=f(e.nightAlpha,f(t._defaultNightAlpha,1)),this.dayAlpha=f(e.dayAlpha,f(t._defaultDayAlpha,1)),this.brightness=f(e.brightness,f(t._defaultBrightness,Uo.DEFAULT_BRIGHTNESS)),this.contrast=f(e.contrast,f(t._defaultContrast,Uo.DEFAULT_CONTRAST)),this.hue=f(e.hue,f(t._defaultHue,Uo.DEFAULT_HUE)),this.saturation=f(e.saturation,f(t._defaultSaturation,Uo.DEFAULT_SATURATION)),this.gamma=f(e.gamma,f(t._defaultGamma,Uo.DEFAULT_GAMMA)),this.splitDirection=f(e.splitDirection,Uo.DEFAULT_SPLIT),this.minificationFilter=f(e.minificationFilter,f(t._defaultMinificationFilter,Uo.DEFAULT_MINIFICATION_FILTER)),this.magnificationFilter=f(e.magnificationFilter,f(t._defaultMagnificationFilter,Uo.DEFAULT_MAGNIFICATION_FILTER)),this.show=f(e.show,!0),this._minimumTerrainLevel=e.minimumTerrainLevel,this._maximumTerrainLevel=e.maximumTerrainLevel,this._rectangle=f(e.rectangle,Gt.MAX_VALUE),this._maximumAnisotropy=e.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new I1(C1.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=e.cutoutRectangle,this.colorToAlpha=e.colorToAlpha,this.colorToAlphaThreshold=f(e.colorToAlphaThreshold,Uo.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD)}Object.defineProperties(Uo.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return c(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Uo.DEFAULT_BRIGHTNESS=1;Uo.DEFAULT_CONTRAST=1;Uo.DEFAULT_HUE=0;Uo.DEFAULT_SATURATION=1;Uo.DEFAULT_GAMMA=1;Uo.DEFAULT_SPLIT=Jc.NONE;Uo.DEFAULT_MINIFICATION_FILTER=On.LINEAR;Uo.DEFAULT_MAGNIFICATION_FILTER=bo.LINEAR;Uo.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Uo.fromProviderAsync=function(t,e){let n=new Uo(void 0,e);return LEe(n,Promise.resolve(t)),n};Uo.fromWorldImagery=function(t){return t=f(t,f.EMPTY_OBJECT),Uo.fromProviderAsync(pW({style:t.style}),t)};Uo.prototype.isBaseLayer=function(){return this._isBaseLayer};Uo.prototype.isDestroyed=function(){return!1};Uo.prototype.destroy=function(){return At(this)};var Q1t=new Gt,y1t=new Gt,xot=new Gt,k1t=new Gt;Uo.prototype.getImageryRectangle=function(){let t=this._imageryProvider,e=this._rectangle;return Gt.intersection(t.rectangle,e)};Uo.prototype._createTileImagerySkeletons=function(t,e,n){let i=t.data;if(!c(e)||c(this._minimumTerrainLevel)&&t.level<this._minimumTerrainLevel||c(this._maximumTerrainLevel)&&t.level>this._maximumTerrainLevel)return!1;c(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let a=o.tilingScheme.projection instanceof Yo&&t.rectangle.north<Yo.MaximumLatitude&&t.rectangle.south>-Yo.MaximumLatitude,s=Gt.intersection(o.rectangle,this._rectangle,Q1t),l=Gt.intersection(t.rectangle,s,y1t);if(!c(l)){if(!this.isBaseLayer())return!1;let I=s,B=t.rectangle;l=y1t,B.south>=I.north?l.north=l.south=I.north:B.north<=I.south?l.north=l.south=I.south:(l.south=Math.max(B.south,I.south),l.north=Math.min(B.north,I.north)),B.west>=I.east?l.west=l.east=I.east:B.east<=I.west?l.west=l.east=I.west:(l.west=Math.max(B.west,I.west),l.east=Math.min(B.east,I.east))}let r=0;l.south>0?r=l.south:l.north<0&&(r=l.north);let m=1*e.getLevelMaximumGeometricError(t.level),h=XEe(this,m,r);h=Math.max(0,h);let Z=o.maximumLevel;if(h>Z&&(h=Z),c(o.minimumLevel)){let I=o.minimumLevel;h<I&&(h=I)}let b=o.tilingScheme,u=b.positionToTileXY(Gt.northwest(l),h),F=b.positionToTileXY(Gt.southeast(l),h),U=t.rectangle.width/512,G=t.rectangle.height/512,A=b.tileXYToRectangle(u.x,u.y,h);Math.abs(A.south-t.rectangle.north)<G&&u.y<F.y&&++u.y,Math.abs(A.east-t.rectangle.west)<U&&u.x<F.x&&++u.x;let T=b.tileXYToRectangle(F.x,F.y,h);Math.abs(T.north-t.rectangle.south)<G&&F.y>u.y&&--F.y,Math.abs(T.west-t.rectangle.east)<U&&F.x>u.x&&--F.x;let g=Gt.clone(t.rectangle,k1t),C=b.tileXYToRectangle(u.x,u.y,h),y=Gt.intersection(C,s,xot),Y;a?(b.rectangleToNativeRectangle(g,g),b.rectangleToNativeRectangle(C,C),b.rectangleToNativeRectangle(y,y),b.rectangleToNativeRectangle(s,s),Y=b.tileXYToNativeRectangle.bind(b),U=g.width/512,G=g.height/512):Y=b.tileXYToRectangle.bind(b);let Q,J=0,M=1,V;!this.isBaseLayer()&&Math.abs(y.west-g.west)>=U&&(J=Math.min(1,(y.west-g.west)/g.width)),!this.isBaseLayer()&&Math.abs(y.north-g.north)>=G&&(M=Math.max(0,(y.north-g.south)/g.height));let E=M;for(let I=u.x;I<=F.x;I++)if(Q=J,C=Y(I,u.y,h),y=Gt.simpleIntersection(C,s,xot),!!c(y)){J=Math.min(1,(y.east-g.west)/g.width),I===F.x&&(this.isBaseLayer()||Math.abs(y.east-g.east)<U)&&(J=1),M=E;for(let B=u.y;B<=F.y;B++){if(V=M,C=Y(I,B,h),y=Gt.simpleIntersection(C,s,xot),!c(y))continue;M=Math.max(0,(y.south-g.south)/g.height),B===F.y&&(this.isBaseLayer()||Math.abs(y.south-g.south)<G)&&(M=0);let X=new Rt(Q,M,J,V),_=this.getImageryFromCache(I,B,h);i.imagery.splice(n,0,new I1(_,X,a)),++n}}return!0};Uo.prototype._calculateTextureTranslationAndScale=function(t,e){let n=e.readyImagery.rectangle,i=t.rectangle;if(e.useWebMercatorT){let r=e.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=r.rectangleToNativeRectangle(n,Q1t),i=r.rectangleToNativeRectangle(i,k1t)}let o=i.width,a=i.height,s=o/n.width,l=a/n.height;return new Rt(s*(i.west-n.west)/o,l*(i.south-n.south)/a,s,l)};Uo.prototype._requestImagery=function(t){let e=this._imageryProvider,n=this;function i(s){if(!c(s))return o();t.image=s,t.state=ho.RECEIVED,t.request=void 0,za.reportSuccess(n._requestImageError)}function o(s){if(t.request.state===qi.CANCELLED){t.state=ho.UNLOADED,t.request=void 0;return}t.state=ho.FAILED,t.request=void 0;let l=`Failed to obtain image tile X: ${t.x} Y: ${t.y} Level: ${t.level}.`;n._requestImageError=za.reportError(n._requestImageError,e,e.errorEvent,l,t.x,t.y,t.level,s),n._requestImageError.retry&&a()}function a(){let s=new Zs({throttle:!1,throttleByServer:!0,type:Xl.IMAGERY});t.request=s,t.state=ho.TRANSITIONING;let l=e.requestImage(t.x,t.y,t.level,s);if(!c(l)){t.state=ho.UNLOADED,t.request=void 0;return}c(e.getTileCredits)&&(t.credits=e.getTileCredits(t.x,t.y,t.level)),l.then(function(r){i(r)}).catch(function(r){o(r)})}a()};Uo.prototype._createTextureWebGL=function(t,e){let n=new Hn({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=e.image;return c(i.internalFormat)?new hn({context:t,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new hn({context:t,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?Ye.RGBA:Ye.RGB,sampler:n})};Uo.prototype._createTexture=function(t,e){let n=this._imageryProvider,i=e.image;if(c(n.tileDiscardPolicy)){let a=n.tileDiscardPolicy;if(c(a)){if(!a.isReady()){e.state=ho.RECEIVED;return}if(a.shouldDiscardImage(i)){e.state=ho.INVALID;return}}}let o=this._createTextureWebGL(t,e);n.tilingScheme.projection instanceof Yo?e.textureWebMercator=o:e.texture=o,e.image=void 0,e.state=ho.TEXTURE_LOADED};function B1t(t,e,n){return`${t}:${e}:${n}`}Uo.prototype._finalizeReprojectTexture=function(t,e){let n=this.minificationFilter,i=this.magnificationFilter;if(n===On.LINEAR&&i===bo.LINEAR&&!Ye.isCompressedFormat(e.pixelFormat)&&k.isPowerOfTwo(e.width)&&k.isPowerOfTwo(e.height)){n=On.LINEAR_MIPMAP_LINEAR;let a=Sn.maximumTextureFilterAnisotropy,s=Math.min(a,f(this._maximumAnisotropy,a)),l=B1t(n,i,s),r=t.cache.imageryLayerMipmapSamplers;c(r)||(r={},t.cache.imageryLayerMipmapSamplers=r);let d=r[l];c(d)||(d=r[l]=new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),e.generateMipmap(JV.NICEST),e.sampler=d}else{let a=B1t(n,i,0),s=t.cache.imageryLayerNonMipmapSamplers;c(s)||(s={},t.cache.imageryLayerNonMipmapSamplers=s);let l=s[a];c(l)||(l=s[a]=new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),e.sampler=l}};Uo.prototype._reprojectTexture=function(t,e,n){let i=e.textureWebMercator||e.texture,o=e.rectangle,a=t.context;if(n=f(n,!0),n&&!(this._imageryProvider.tilingScheme.projection instanceof yo)&&o.width/i.width>1e-5){let s=this;e.addReference();let l=new Wm({persists:!0,owner:this,preExecute:function(r){xEe(r,a,i,e.rectangle)},postExecute:function(r){e.texture=r,s._finalizeReprojectTexture(a,r),e.state=ho.READY,e.releaseReference()},canceled:function(){e.state=ho.TEXTURE_LOADED,e.releaseReference()}});this._reprojectComputeCommands.push(l)}else n&&(e.texture=i),this._finalizeReprojectTexture(a,i),e.state=ho.READY};Uo.prototype.queueReprojectionCommands=function(t){let e=this._reprojectComputeCommands,n=e.length;for(let i=0;i<n;++i)t.commandList.push(e[i]);e.length=0};Uo.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(t){c(t.canceled)&&t.canceled()}),this._reprojectComputeCommands.length=0};Uo.prototype.getImageryFromCache=function(t,e,n,i){let o=Y1t(t,e,n),a=this._imageryCache[o];return c(a)||(a=new C1(this,t,e,n,i),this._imageryCache[o]=a),a.addReference(),a};Uo.prototype.removeImageryFromCache=function(t){let e=Y1t(t.x,t.y,t.level);delete this._imageryCache[e]};function Y1t(t,e,n){return JSON.stringify([t,e,n])}var Gz={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new K,texture:void 0},YEe=In.supportsTypedArrays()?new Float32Array(2*64):void 0;function xEe(t,e,n,i){let o=e.cache.imageryLayer_reproject;if(!c(o)){o=e.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){c(this.framebuffer)&&this.framebuffer.destroy(),c(this.vertexArray)&&this.vertexArray.destroy(),c(this.shaderProgram)&&this.shaderProgram.destroy()}};let U=new Float32Array(2*64*2),G=0;for(let y=0;y<64;++y){let Y=y/63;U[G++]=0,U[G++]=Y,U[G++]=1,U[G++]=Y}let A={position:0,webMercatorT:1},T=El.getRegularGridIndices(2,64),g=we.createIndexBuffer({context:e,typedArray:T,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT});o.vertexArray=new Ki({context:e,attributes:[{index:A.position,vertexBuffer:we.createVertexBuffer({context:e,typedArray:U,usage:ce.STATIC_DRAW}),componentsPerAttribute:2},{index:A.webMercatorT,vertexBuffer:we.createVertexBuffer({context:e,sizeInBytes:64*2*4,usage:ce.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:g});let C=new Ve({sources:[zM]});o.shaderProgram=xn.fromCache({context:e,vertexShaderSource:C,fragmentShaderSource:KM,attributeLocations:A}),o.sampler=new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:bo.LINEAR})}n.sampler=o.sampler;let a=n.width,s=n.height;Gz.textureDimensions.x=a,Gz.textureDimensions.y=s,Gz.texture=n;let l=Math.sin(i.south),r=.5*Math.log((1+l)/(1-l));l=Math.sin(i.north);let m=1/(.5*Math.log((1+l)/(1-l))-r),h=new hn({context:e,width:a,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});k.isPowerOfTwo(a)&&k.isPowerOfTwo(s)&&h.generateMipmap(JV.NICEST);let Z=i.south,b=i.north,u=YEe,F=0;for(let U=0;U<64;++U){let G=U/63,A=k.lerp(Z,b,G);l=Math.sin(A);let g=(.5*Math.log((1+l)/(1-l))-r)*m;u[F++]=g,u[F++]=g}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(u),t.shaderProgram=o.shaderProgram,t.outputTexture=h,t.uniformMap=Gz,t.vertexArray=o.vertexArray}function XEe(t,e,n){let i=t._imageryProvider,o=i.tilingScheme,a=o.ellipsoid,s=t._imageryProvider.tilingScheme.projection instanceof yo?1:Math.cos(n),l=o.rectangle,d=a.maximumRadius*l.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/e,m=Math.log(d)/Math.log(2);return Math.round(m)|0}function JEe(t,e){t.numberOfListeners>0?t.raiseEvent(e):console.error(e)}async function LEe(t,e){let n;try{if(n=await Promise.resolve(e),t.isDestroyed())return;t._imageryProvider=n,t._readyEvent.raiseEvent(n)}catch(i){JEe(t._errorEvent,i)}}var $r=Uo;var Dfo=R(W(),1);var Wfo=R(W(),1),MEe={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},mi=MEe;var Ffo=R(W(),1),x1t={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(t){return t>=x1t.RENDERED_AND_KICKED},originalResult:function(t){return t&3},kick:function(t){return t|4}},Pi=x1t;function y1(t){this.tile=t,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new Rt}y1.prototype.update=function(t,e,n){this.changedThisFrame&&(O1t(t,e,this.tile,n),this.changedThisFrame=!1)};y1.prototype.destroy=function(t){this._destroyVertexArray(t),c(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};y1.prototype._destroyVertexArray=function(t){c(this.vertexArray)&&(c(t)?t.push(this.vertexArray):Tu._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var _Ee=new $V;y1.updateFillTiles=function(t,e,n,i){let o=t._quadtree,a=o._levelZeroTiles,s=o._lastSelectionFrameNumber,l=_Ee;l.clear();for(let d=0;d<e.length;++d){let m=e[d];c(m.data.vertexArray)&&l.enqueue(e[d])}let r=l.dequeue();for(;r!==void 0;){let d=r.findTileToWest(a),m=r.findTileToSouth(a),h=r.findTileToEast(a),Z=r.findTileToNorth(a);rr(t,n,r,d,s,mi.EAST,!1,l,i),rr(t,n,r,m,s,mi.NORTH,!1,l,i),rr(t,n,r,h,s,mi.WEST,!1,l,i),rr(t,n,r,Z,s,mi.SOUTH,!1,l,i);let b=d.findTileToNorth(a),u=d.findTileToSouth(a),F=h.findTileToNorth(a),U=h.findTileToSouth(a);rr(t,n,r,b,s,mi.SOUTHEAST,!1,l,i),rr(t,n,r,F,s,mi.SOUTHWEST,!1,l,i),rr(t,n,r,u,s,mi.NORTHEAST,!1,l,i),rr(t,n,r,U,s,mi.NORTHWEST,!1,l,i),r=l.dequeue()}};function rr(t,e,n,i,o,a,s,l,r){if(i===void 0)return;let d=i;for(;d&&(d._lastSelectionResultFrame!==o||Pi.wasKicked(d._lastSelectionResult)||Pi.originalResult(d._lastSelectionResult)===Pi.CULLED);){if(s)return;let m=d.parent;if(a>=mi.NORTHWEST&&m!==void 0)switch(a){case mi.NORTHWEST:d=d===m.northwestChild?m:void 0;break;case mi.NORTHEAST:d=d===m.northeastChild?m:void 0;break;case mi.SOUTHWEST:d=d===m.southwestChild?m:void 0;break;case mi.SOUTHEAST:d=d===m.southeastChild?m:void 0;break}else d=m}if(d!==void 0){if(d._lastSelectionResult===Pi.RENDERED){if(c(d.data.vertexArray))return;DEe(t,e,n,d,a,o,l,r);return}if(Pi.originalResult(i._lastSelectionResult)!==Pi.CULLED)switch(a){case mi.WEST:rr(t,e,n,i.northwestChild,o,a,!0,l,r),rr(t,e,n,i.southwestChild,o,a,!0,l,r);break;case mi.EAST:rr(t,e,n,i.southeastChild,o,a,!0,l,r),rr(t,e,n,i.northeastChild,o,a,!0,l,r);break;case mi.SOUTH:rr(t,e,n,i.southwestChild,o,a,!0,l,r),rr(t,e,n,i.southeastChild,o,a,!0,l,r);break;case mi.NORTH:rr(t,e,n,i.northeastChild,o,a,!0,l,r),rr(t,e,n,i.northwestChild,o,a,!0,l,r);break;case mi.NORTHWEST:rr(t,e,n,i.northwestChild,o,a,!0,l,r);break;case mi.NORTHEAST:rr(t,e,n,i.northeastChild,o,a,!0,l,r);break;case mi.SOUTHWEST:rr(t,e,n,i.southwestChild,o,a,!0,l,r);break;case mi.SOUTHEAST:rr(t,e,n,i.southeastChild,o,a,!0,l,r);break;default:throw new Ut("Invalid edge")}}}function DEe(t,e,n,i,o,a,s,l){let r=i.data;if(r.fill===void 0)r.fill=new y1(i);else if(r.fill.visitedFrame===a)return;r.fill.enqueuedFrame!==a&&(r.fill.enqueuedFrame=a,r.fill.changedThisFrame=!1,s.enqueue(i)),OEe(t,e,n,i,o,l)}function OEe(t,e,n,i,o,a){let s=i.data.fill,l,r=n.data.fill;c(r)?(r.visitedFrame=e.frameNumber,r.changedThisFrame&&(O1t(t,e,n,a),r.changedThisFrame=!1),l=n.data.fill.mesh):l=n.data.mesh;let d,m;switch(o){case mi.WEST:d=s.westMeshes,m=s.westTiles;break;case mi.SOUTH:d=s.southMeshes,m=s.southTiles;break;case mi.EAST:d=s.eastMeshes,m=s.eastTiles;break;case mi.NORTH:d=s.northMeshes,m=s.northTiles;break;case mi.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==l,s.northwestMesh=l,s.northwestTile=n;return;case mi.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==l,s.northeastMesh=l,s.northeastTile=n;return;case mi.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==l,s.southwestMesh=l,s.southwestTile=n;return;case mi.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==l,s.southeastMesh=l,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||d[0]!==l||d.length!==1,d[0]=l,m[0]=n,d.length=1,m.length=1;return}let h,Z,b,u,F=n.rectangle,U,G=i.rectangle;switch(o){case mi.WEST:for(U=(G.north-G.south)*k.EPSILON5,h=0;h<m.length&&(b=m[h],u=b.rectangle,!k.greaterThan(F.north,u.south,U));++h);for(Z=h;Z<m.length&&(b=m[Z],u=b.rectangle,!k.greaterThanOrEquals(F.south,u.north,U));++Z);break;case mi.SOUTH:for(U=(G.east-G.west)*k.EPSILON5,h=0;h<m.length&&(b=m[h],u=b.rectangle,!k.lessThan(F.west,u.east,U));++h);for(Z=h;Z<m.length&&(b=m[Z],u=b.rectangle,!k.lessThanOrEquals(F.east,u.west,U));++Z);break;case mi.EAST:for(U=(G.north-G.south)*k.EPSILON5,h=0;h<m.length&&(b=m[h],u=b.rectangle,!k.lessThan(F.south,u.north,U));++h);for(Z=h;Z<m.length&&(b=m[Z],u=b.rectangle,!k.lessThanOrEquals(F.north,u.south,U));++Z);break;case mi.NORTH:for(U=(G.east-G.west)*k.EPSILON5,h=0;h<m.length&&(b=m[h],u=b.rectangle,!k.greaterThan(F.east,u.west,U));++h);for(Z=h;Z<m.length&&(b=m[Z],u=b.rectangle,!k.greaterThanOrEquals(F.west,u.east,U));++Z);break}Z-h===1?(s.changedThisFrame=s.changedThisFrame||d[h]!==l,d[h]=l,m[h]=n):(s.changedThisFrame=!0,d.splice(h,Z-h,l),m.splice(h,Z-h,n))}var pS=new gt,HEe=new gt,N1=new p,Mot=new p,Xot=new K,Jot=new K,np=new K;function Iz(){this.height=0,this.encodedNormal=new K}function Az(t,e,n,i,o,a,s,l,r){if(c(o))return o;let d;if(c(a)&&c(s))d=(a.height+s.height)*.5;else if(c(a))d=a.height;else if(c(s))d=s.height;else if(c(l))d=l.height;else{let h=t.tile.data.tileBoundingRegion,Z=0,b=0;c(h)&&(Z=h.minimumHeight,b=h.maximumHeight),d=(Z+b)*.5}return H1t(t,e,n,i,d,r),r}var wEe={minimumHeight:0,maximumHeight:0},PEe=new p,X1t=new Iz,J1t=new Iz,L1t=new Iz,M1t=new Iz,vEe=typeof Uint8Array<"u"?new Uint8Array(9*9):void 0,KEe={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function O1t(t,e,n,i){Tu.initialize(n,t.terrainProvider,t._imageryLayers);let o=n.data,a=o.fill,s=n.rectangle,l=e.verticalExaggeration,r=e.verticalExaggerationRelativeHeight,d=l!==1,m=n.tilingScheme.ellipsoid,h=Sz(a,m,0,1,a.northwestTile,a.northwestMesh,a.northTiles,a.northMeshes,a.westTiles,a.westMeshes,L1t),Z=Sz(a,m,0,0,a.southwestTile,a.southwestMesh,a.westTiles,a.westMeshes,a.southTiles,a.southMeshes,X1t),b=Sz(a,m,1,0,a.southeastTile,a.southeastMesh,a.southTiles,a.southMeshes,a.eastTiles,a.eastMeshes,J1t),u=Sz(a,m,1,1,a.northeastTile,a.northeastMesh,a.eastTiles,a.eastMeshes,a.northTiles,a.northMeshes,M1t);h=Az(a,m,0,1,h,Z,u,b,L1t),Z=Az(a,m,0,0,Z,h,b,u,X1t),b=Az(a,m,1,1,b,Z,u,h,J1t),u=Az(a,m,1,1,u,b,h,Z,M1t);let F=Z.height,U=b.height,G=h.height,A=u.height,T=Math.min(F,U,G,A),g=Math.max(F,U,G,A),C=(T+g)*.5,y,Y,Q=t.getLevelMaximumGeometricError(n.level),J=m.maximumRadius-Q,M=Math.acos(J/m.maximumRadius)*4;if(M*=1.5,s.width>M&&g-T<=Q){let I=new Gd({width:9,height:9,buffer:vEe,structure:{heightOffset:g}}),B=KEe;B.tilingScheme=n.tilingScheme,B.x=n.x,B.y=n.y,B.level=n.level,B.exaggeration=l,B.exaggerationRelativeHeight=r,a.mesh=I._createMeshSync(B)}else{let I=d,B=Gt.center(s,HEe);B.height=C;let X=m.cartographicToCartesian(B,PEe),_=new lc(X,void 0,void 0,void 0,void 0,!0,!0,I,l,r),P=5,w;for(w=a.westMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].eastIndicesNorthToSouth.length;for(w=a.southMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].northIndicesWestToEast.length;for(w=a.eastMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].westIndicesSouthToNorth.length;for(w=a.northMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].southIndicesEastToWest.length;let z=wEe;z.minimumHeight=T,z.maximumHeight=g;let H=_.stride,nt=new Float32Array(P*H),$=0,dt=$;$=Tz(m,s,_,nt,$,0,1,h.height,h.encodedNormal,1,z),$=Ez(a,m,_,nt,$,a.westTiles,a.westMeshes,mi.EAST,z);let q=$;$=Tz(m,s,_,nt,$,0,0,Z.height,Z.encodedNormal,0,z),$=Ez(a,m,_,nt,$,a.southTiles,a.southMeshes,mi.NORTH,z);let at=$;$=Tz(m,s,_,nt,$,1,0,b.height,b.encodedNormal,0,z),$=Ez(a,m,_,nt,$,a.eastTiles,a.eastMeshes,mi.WEST,z);let st=$;$=Tz(m,s,_,nt,$,1,1,u.height,u.encodedNormal,1,z),$=Ez(a,m,_,nt,$,a.northTiles,a.northMeshes,mi.SOUTH,z),T=z.minimumHeight,g=z.maximumHeight;let Et=ci.fromRectangle(s,T,g,n.tilingScheme.ellipsoid),Qt=Yo.geodeticLatitudeToMercatorAngle(s.south),Wt=1/(Yo.geodeticLatitudeToMercatorAngle(s.north)-Qt),Nt=(Yo.geodeticLatitudeToMercatorAngle(B.latitude)-Qt)*Wt,kt=m.geodeticSurfaceNormalCartographic(pS,Mot),Mt=Ni.octEncode(kt,Xot),qt=$;_.encode(nt,$*H,Et.center,K.fromElements(.5,.5,np),C,Mt,Nt,kt),++$;let ie=$,oe=ie<256?1:2,He=(ie-1)*3,rn=He*oe,de=(nt.length-ie*H)*Float32Array.BYTES_PER_ELEMENT,zt;if(de>=rn){let _t=ie*H*Float32Array.BYTES_PER_ELEMENT;zt=ie<256?new Uint8Array(nt.buffer,_t,He):new Uint16Array(nt.buffer,_t,He)}else zt=ie<256?new Uint8Array(He):new Uint16Array(He);nt=new Float32Array(nt.buffer,0,ie*H);let ke=0;for(y=0;y<ie-2;++y)zt[ke++]=qt,zt[ke++]=y,zt[ke++]=y+1;zt[ke++]=qt,zt[ke++]=y,zt[ke++]=0;let ue=[];for(y=q;y>=dt;--y)ue.push(y);let We=[];for(y=at;y>=q;--y)We.push(y);let un=[];for(y=st;y>=at;--y)un.push(y);let Ct=[];for(Ct.push(0),y=qt-1;y>=st;--y)Ct.push(y);a.mesh=new Au(_.center,nt,zt,He,ie,T,g,Ft.fromOrientedBoundingBox(Et),nCe(t,Et.center,s,T,g),_.stride,Et,_,ue,We,un,Ct)}let V=e.context;a._destroyVertexArray(i),a.vertexArray=Tu._createVertexArrayForMesh(V,a.mesh),o.processImagery(n,t.terrainProvider,e,!0);let E=a.waterMaskTexture;if(a.waterMaskTexture=void 0,t.terrainProvider.hasWaterMask){let I=o._findAncestorTileWithTerrainData(n);c(I)&&c(I.data.waterMaskTexture)&&(a.waterMaskTexture=I.data.waterMaskTexture,++a.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,I,a.waterMaskTranslationAndScale))}c(E)&&(--E.referenceCount,E.referenceCount===0&&E.destroy())}function Tz(t,e,n,i,o,a,s,l,r,d,m){let h=pS;h.longitude=k.lerp(e.west,e.east,a),h.latitude=k.lerp(e.south,e.north,s),h.height=l;let Z=t.cartographicToCartesian(h,N1),b;n.hasGeodeticSurfaceNormals&&(b=t.geodeticSurfaceNormal(Z,Mot));let u=Jot;return u.x=a,u.y=s,n.encode(i,o*n.stride,Z,u,l,r,d,b),m.minimumHeight=Math.min(m.minimumHeight,l),m.maximumHeight=Math.max(m.maximumHeight,l),o+1}var Cz=new Gt;function jM(t,e,n,i){let o=t.rectangle,a=e.rectangle;e.x===0&&n.x===1&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1?(o=Gt.clone(t.rectangle,Cz),o.west-=k.TWO_PI,o.east-=k.TWO_PI):t.x===0&&n.x===0&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1&&(o=Gt.clone(t.rectangle,Cz),o.west+=k.TWO_PI,o.east+=k.TWO_PI);let s=o.east-o.west,l=(a.west-o.west)/s,r=(a.east-o.west)/s,d=o.north-o.south,m=(a.south-o.south)/d,h=(a.north-o.south)/d,Z=(n.x-l)/(r-l),b=(n.y-m)/(h-m);return Math.abs(Z)<Math.EPSILON5?Z=0:Math.abs(Z-1)<Math.EPSILON5&&(Z=1),Math.abs(b)<Math.EPSILON5?b=0:Math.abs(b-1)<Math.EPSILON5&&(b=1),i.x=Z,i.y=b,i}var zEe=new K;function Lot(t,e,n,i,o){let a=t.encoding,s=t.vertices;if(o.height=a.decodeHeight(s,e),a.hasVertexNormals)a.getOctEncodedNormal(s,e,o.encodedNormal);else{let l=o.encodedNormal;l.x=0,l.y=0}}var jEe=new K,qEe=new p;function $Ee(t,e,n,i,o,a,s,l,r,d){let m=i.encoding,h=i.vertices,Z=jM(e,n,m.decodeTextureCoordinates(h,o,np),np),b=jM(e,n,m.decodeTextureCoordinates(h,a,Jot),Jot),u;r?u=(s-Z.x)/(b.x-Z.x):u=(l-Z.y)/(b.y-Z.y);let F=m.decodeHeight(h,o),U=m.decodeHeight(h,a),G=n.rectangle;pS.longitude=k.lerp(G.west,G.east,s),pS.latitude=k.lerp(G.south,G.north,l),d.height=pS.height=k.lerp(F,U,u);let A;if(m.hasVertexNormals){let T=m.getOctEncodedNormal(h,o,zEe),g=m.getOctEncodedNormal(h,a,jEe),C=Ni.octDecode(T.x,T.y,N1),y=Ni.octDecode(g.x,g.y,qEe);A=p.lerp(C,y,u,N1),p.normalize(A,A),Ni.octEncode(A,d.encodedNormal)}else A=t.geodeticSurfaceNormalCartographic(pS,N1),Ni.octEncode(A,d.encodedNormal)}function H1t(t,e,n,i,o,a){a.height=o;let s=e.geodeticSurfaceNormalCartographic(pS,N1);Ni.octEncode(s,a.encodedNormal)}function Sz(t,e,n,i,o,a,s,l,r,d,m){if(D1t(t,e,l,s,!1,n,i,m)||D1t(t,e,d,r,!0,n,i,m))return m;let Z;if(_ot(o,a))return n===0?i===0?Z=a.eastIndicesNorthToSouth[0]:Z=a.southIndicesEastToWest[0]:i===0?Z=a.northIndicesWestToEast[0]:Z=a.westIndicesSouthToNorth[0],Lot(a,Z,n,i,m),m;let b;if(n===0?i===0?b=gz(t.westMeshes,t.westTiles,mi.EAST,t.southMeshes,t.southTiles,mi.NORTH,n,i):b=gz(t.northMeshes,t.northTiles,mi.SOUTH,t.westMeshes,t.westTiles,mi.EAST,n,i):i===0?b=gz(t.southMeshes,t.southTiles,mi.NORTH,t.eastMeshes,t.eastTiles,mi.WEST,n,i):b=gz(t.eastMeshes,t.eastTiles,mi.WEST,t.northMeshes,t.northTiles,mi.SOUTH,n,i),c(b))return H1t(t,e,n,i,b,m),m}function gz(t,e,n,i,o,a,s,l){let r=_1t(t,e,!1,n,s,l),d=_1t(i,o,!0,a,s,l);return c(r)&&c(d)?(r+d)*.5:c(r)?r:d}function Ez(t,e,n,i,o,a,s,l,r){for(let d=0;d<a.length;++d)o=tCe(t,e,n,i,o,a[d],s[d],l,r);return o}function tCe(t,e,n,i,o,a,s,l,r){let d=a.rectangle;l===mi.EAST&&t.tile.x===0?(d=Gt.clone(a.rectangle,Cz),d.west-=k.TWO_PI,d.east-=k.TWO_PI):l===mi.WEST&&a.x===0&&(d=Gt.clone(a.rectangle,Cz),d.west+=k.TWO_PI,d.east+=k.TWO_PI);let m=t.tile.rectangle,h,Z;o>0&&(n.decodeTextureCoordinates(i,o-1,np),h=np.x,Z=np.y);let b,u;switch(l){case mi.WEST:b=s.westIndicesSouthToNorth,u=!1;break;case mi.NORTH:b=s.northIndicesWestToEast,u=!0;break;case mi.EAST:b=s.eastIndicesNorthToSouth,u=!1;break;case mi.SOUTH:b=s.southIndicesEastToWest,u=!0;break}let F=a,U=t.tile,G=s.encoding,A=s.vertices,T=n.stride,g,C;G.hasWebMercatorT&&(g=Yo.geodeticLatitudeToMercatorAngle(m.south),C=1/(Yo.geodeticLatitudeToMercatorAngle(m.north)-g));for(let y=0;y<b.length;++y){let Y=b[y],Q=G.decodeTextureCoordinates(A,Y,np);jM(F,U,Q,Q);let J=Q.x,M=Q.y,V=u?J:M;if(V<0||V>1||Math.abs(J-h)<k.EPSILON5&&Math.abs(M-Z)<k.EPSILON5)continue;let E=Math.abs(J)<k.EPSILON5||Math.abs(J-1)<k.EPSILON5,I=Math.abs(M)<k.EPSILON5||Math.abs(M-1)<k.EPSILON5;if(E&&I)continue;let B=G.decodePosition(A,Y,N1),X=G.decodeHeight(A,Y),_;G.hasVertexNormals?_=G.getOctEncodedNormal(A,Y,Xot):(_=Xot,_.x=0,_.y=0);let P=M;if(G.hasWebMercatorT){let z=k.lerp(m.south,m.north,M);P=(Yo.geodeticLatitudeToMercatorAngle(z)-g)*C}let w;n.hasGeodeticSurfaceNormals&&(w=e.geodeticSurfaceNormal(B,Mot)),n.encode(i,o*T,B,Q,X,_,P,w),r.minimumHeight=Math.min(r.minimumHeight,X),r.maximumHeight=Math.max(r.maximumHeight,X),++o}return o}function _1t(t,e,n,i,o,a){let s,l,r;n?(s=0,l=t.length,r=1):(s=t.length-1,l=-1,r=-1);for(let d=s;d!==l;d+=r){let m=t[d],h=e[d];if(!_ot(h,m))continue;let Z;switch(i){case mi.WEST:Z=m.westIndicesSouthToNorth;break;case mi.SOUTH:Z=m.southIndicesEastToWest;break;case mi.EAST:Z=m.eastIndicesNorthToSouth;break;case mi.NORTH:Z=m.northIndicesWestToEast;break}let b=Z[n?0:Z.length-1];if(c(b))return m.encoding.decodeHeight(m.vertices,b)}}function _ot(t,e){return c(e)&&(!c(t.data.fill)||!t.data.fill.changedThisFrame)}function D1t(t,e,n,i,o,a,s,l){let r,d,m,h,Z,b=i[o?0:n.length-1],u=n[o?0:n.length-1];if(_ot(b,u)&&(a===0?s===0?(r=o?u.northIndicesWestToEast:u.eastIndicesNorthToSouth,d=o,m=o):(r=o?u.eastIndicesNorthToSouth:u.southIndicesEastToWest,d=!o,m=!1):s===0?(r=o?u.westIndicesSouthToNorth:u.northIndicesWestToEast,d=!o,m=!0):(r=o?u.southIndicesEastToWest:u.westIndicesSouthToNorth,d=o,m=!o),r.length>0)){h=o?0:r.length-1,Z=r[h],u.encoding.decodeTextureCoordinates(u.vertices,Z,np);let F=jM(b,t.tile,np,np);if(F.x===a&&F.y===s)return Lot(u,Z,a,s,l),!0;if(h=Ja(r,d?a:s,function(U,G){u.encoding.decodeTextureCoordinates(u.vertices,U,np);let A=jM(b,t.tile,np,np);return m?d?A.x-a:A.y-s:d?a-A.x:s-A.y}),h<0){if(h=~h,h>0&&h<r.length)return $Ee(e,b,t.tile,u,r[h-1],r[h],a,s,d,l),!0}else return Lot(u,r[h],a,s,l),!0}return!1}var eCe=[new p,new p,new p,new p];function nCe(t,e,n,i,o,a){let s=t.quadtree._occluders.ellipsoid,l=s.ellipsoid,r=eCe;return p.fromRadians(n.west,n.south,o,l,r[0]),p.fromRadians(n.east,n.south,o,l,r[1]),p.fromRadians(n.west,n.north,o,l,r[2]),p.fromRadians(n.east,n.north,o,l,r[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(e,r,i,a)}var B1=y1;function As(t){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=ui.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=t.terrainProvider,this._imageryLayers=t.imageryLayers,this._surfaceShaderSet=t.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new It,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(As.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(As.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(As.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(As.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new It,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new v(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=Gt.clone(Gt.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(As.prototype,{baseColor:{get:function(){return this._baseColor},set:function(t){this._baseColor=t,this._firstPassInitialColor=Rt.fromColor(t,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(t){this._quadtree=t}},tilingScheme:{get:function(){if(c(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(t){this._terrainProvider!==t&&(this._terrainProvider=t,c(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){Ml.setOwner(t,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(t){RZ.setOwner(t,this,"_clippingPolygons")}}});function iCe(t,e){let n=t.loadingImagery;c(n)||(n=t.readyImagery);let i=e.loadingImagery;return c(i)||(i=e.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}As.prototype.update=function(t){this._imageryLayers._update()};function oCe(t,e){let n=e.creditDisplay,i=t._terrainProvider;c(i)&&c(i.credit)&&n.addCreditToNextFrame(i.credit);let o=t._imageryLayers;for(let a=0,s=o.length;a<s;++a){let l=o.get(a);l.ready&&l.show&&c(l.imageryProvider.credit)&&n.addCreditToNextFrame(l.imageryProvider.credit)}}As.prototype.initialize=function(t){this._imageryLayers.queueReprojectionCommands(t),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(iCe)})),oCe(this,t);let e=this._vertexArraysToDestroy,n=e.length;for(let i=0;i<n;++i)Tu._freeVertexArray(e[i]);e.length=0};As.prototype.beginUpdate=function(t){let e=this._tilesToRenderByTextureCount;for(let o=0,a=e.length;o<a;++o){let s=e[o];c(s)&&(s.length=0)}let n=this._clippingPlanes;c(n)&&n.enabled&&n.update(t);let i=this._clippingPolygons;c(i)&&i.enabled&&(i.update(t),i.queueCommands(t)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};As.prototype.endUpdate=function(t){if(!c(this._renderState)){this._renderState=he.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:_d.LESS}}),this._blendRenderState=he.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:_d.LESS_OR_EQUAL},blending:Pn.ALPHA_BLEND});let s=be(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=he.fromCache(s),s=be(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=he.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&B1.updateFillTiles(this,this._quadtree._tilesToRender,t,this._vertexArraysToDestroy);let e=this.quadtree,n=t.verticalExaggeration,i=t.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&e.forEachLoadedTile(function(s){s.data.updateExaggeration(s,t,e)});let a=this._tilesToRenderByTextureCount;for(let s=0,l=a.length;s<l;++s){let r=a[s];if(c(r))for(let d=0,m=r.length;d<m;++d){let h=r[d],Z=h.data.tileBoundingRegion;ECe(this,h,t),t.minimumTerrainHeight=Math.min(t.minimumTerrainHeight,Z.minimumHeight)}}};function z1t(t,e){let n=e.globeTranslucencyState;if(n.translucent){let i=t.renderState.blending.enabled;n.pushDerivedCommands(t,i,e)}else e.commandList.push(t)}As.prototype.updateForPick=function(t){let e=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)z1t(e[n],t)};As.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};As.prototype.getLevelMaximumGeometricError=function(t){return c(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(t):0};As.prototype.loadTile=function(t,e){let n=e.data,i=!0,o;c(n)&&(i=n.boundingVolumeSourceTile!==e||e._lastSelectionResult===Pi.CULLED_BUT_NEEDED,o=n.terrainState),Tu.processStateMachine(e,t,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=e.data,i&&o!==e.data.terrainState&&this.computeTileVisibility(e,t,this.quadtree.occluders)!==Ys.NONE&&n.boundingVolumeSourceTile===e&&(i=!1,Tu.processStateMachine(e,t,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var aCe=new Ft,j1t=new Gt,sCe=new Gt,lCe=new gt;function yz(t,e){if(e.west<e.east)return e;let n=Gt.clone(e,sCe);return Gt.center(t,lCe).longitude>0?n.east=k.PI:n.west=-k.PI,n}function q1t(t,e){if(e.cameraUnderground||e.globeTranslucencyState.translucent)return!0;if(t.backFaceCulling)return!1;let n=t._clippingPlanes;if(c(n)&&n.enabled)return!0;let i=t._clippingPolygons;return!!(c(i)&&i.enabled||!Gt.equals(t.cartographicLimitRectangle,Gt.MAX_VALUE))}As.prototype.computeTileVisibility=function(t,e,n){let i=this.computeDistanceToTile(t,e);t._distance=i;let o=q1t(this,e);if(e.fog.enabled&&!o&&k.fog(i,e.fog.density)>=1)return Ys.NONE;let a=t.data,s=a.tileBoundingRegion;if(a.boundingVolumeSourceTile===void 0)return Ys.PARTIAL;let l=e.cullingVolume,r=s.boundingVolume;c(r)||(r=s.boundingSphere),a.clippedByBoundaries=!1;let d=yz(t.rectangle,this.cartographicLimitRectangle),m=Gt.simpleIntersection(d,t.rectangle,j1t);if(!c(m))return Ys.NONE;if(Gt.equals(m,t.rectangle)||(a.clippedByBoundaries=!0),e.mode!==ut.SCENE3D&&(r=aCe,Ft.fromRectangleWithHeights2D(t.rectangle,e.mapProjection,s.minimumHeight,s.maximumHeight,r),p.fromElements(r.center.z,r.center.x,r.center.y,r.center),e.mode===ut.MORPHING&&c(a.renderedMesh)&&(r=Ft.union(s.boundingSphere,r,r))),!c(r))return Ys.PARTIAL;let h=this._clippingPlanes;if(c(h)&&h.enabled){let U=h.computeIntersectionWithBoundingVolume(r);if(t.isClipped=U!==yn.INSIDE,U===yn.OUTSIDE)return Ys.NONE}let Z=this._clippingPolygons;if(c(Z)&&Z.enabled){let U=Z.computeIntersectionWithBoundingVolume(s);t.isClipped=U!==yn.OUTSIDE}let b,u=l.computeVisibility(r);if(u===yn.OUTSIDE?b=Ys.NONE:u===yn.INTERSECTING?b=Ys.PARTIAL:u===yn.INSIDE&&(b=Ys.FULL),b===Ys.NONE)return b;let F=e.mode===ut.SCENE3D&&e.camera.frustum instanceof wn;if(e.mode===ut.SCENE3D&&!F&&c(n)&&!o){let U=a.occludeePointInScaledSpace;return!c(U)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(U,s.minimumHeight)?b:Ys.NONE}return b};As.prototype.canRefine=function(t){return c(t.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(t.x*2,t.y*2,t.level+1)!==void 0};var rCe=[],dCe=[];As.prototype.canRenderWithoutLosingDetail=function(t,e){let n=t.data,i=rCe;i.length=this._imageryLayers.length;let o=!1,a=!1,s;c(n)&&(o=n.terrainState===Ga.READY,a=!0,s=n.imagery);let l,r;for(l=0,r=i.length;l<r;++l)i[l]=a;if(c(s))for(l=0,r=s.length;l<r;++l){let h=s[l],Z=h.loadingImagery,b=!c(Z)||Z.state===ho.FAILED||Z.state===ho.INVALID,u=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[u]=b&&i[u]}let d=this.quadtree._lastSelectionFrameNumber,m=dCe;for(m.length=0,m.push(t.southwestChild,t.southeastChild,t.northwestChild,t.northeastChild);m.length>0;){let h=m.pop(),Z=h._lastSelectionResultFrame===d?h._lastSelectionResult:Pi.NONE;if(Z===Pi.RENDERED){let b=h.data;if(!c(b))continue;if(!o&&h.data.terrainState===Ga.READY)return!1;let u=h.data.imagery;for(l=0,r=u.length;l<r;++l){let F=u[l],U=F.loadingImagery,G=!c(U)||U.state===ho.FAILED||U.state===ho.INVALID,A=(F.loadingImagery||F.readyImagery).imageryLayer._layerIndex;if(G&&!i[A])return!1}}else Z===Pi.REFINED&&m.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var cCe=new p;As.prototype.computeTileLoadPriority=function(t,e){let n=t.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=e.camera.positionWC,a=e.camera.directionWC,s=p.subtract(i.center,o,cCe),l=p.magnitude(s);return l<k.EPSILON5?0:(p.divideByScalar(s,l,s),(1-p.dot(s,a))*t._distance)};var w1t=new L,Nz=new L,mCe=new Rt,hCe=new Rt,pCe=new Rt,uCe=new p,P1t=new p,ZCe=new p,VCe=new p;As.prototype.showTileThisFrame=function(t,e){let n=0,i=t.data.imagery;for(let l=0,r=i.length;l<r;++l){let d=i[l];c(d.readyImagery)&&d.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];c(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(t);let a=t.data;c(a.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var bCe=[new p,new p,new p,new p];function v1t(t,e,n,i,o,a){let s=t.quadtree._occluders.ellipsoid,l=s.ellipsoid,r=bCe;return p.fromRadians(n.west,n.south,o,l,r[0]),p.fromRadians(n.east,n.south,o,l,r[1]),p.fromRadians(n.west,n.north,o,l,r[2]),p.fromRadians(n.east,n.north,o,l,r[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(e,r,i,a)}As.prototype.computeDistanceToTile=function(t,e){RCe(t,this,e);let n=t.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,a=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==t){let r=e.camera.positionCartographic.height,d=Math.abs(r-a),m=Math.abs(r-s);d>m?(o.minimumHeight=a,o.maximumHeight=a):(o.minimumHeight=s,o.maximumHeight=s)}let l=o.distanceToCamera(e);return o.minimumHeight=a,o.maximumHeight=s,l};function RCe(t,e,n){let i=t.data;i===void 0&&(i=t.data=new Tu);let o=t.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new eu({computeBoundingVolumes:!1,rectangle:t.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let a=i.tileBoundingRegion,s=a.minimumHeight,l=a.maximumHeight,r=!1,d=t,m=i.mesh,h=i.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0)a.minimumHeight=m.minimumHeight,a.maximumHeight=m.maximumHeight,r=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)a.minimumHeight=h._minimumHeight,a.maximumHeight=h._maximumHeight;else{a.minimumHeight=Number.NaN,a.maximumHeight=Number.NaN;let Z=t.parent;for(;Z!==void 0;){let b=Z.data;if(b!==void 0){let u=b.mesh,F=b.terrainData;if(u!==void 0&&u.minimumHeight!==void 0&&u.maximumHeight!==void 0){a.minimumHeight=u.minimumHeight,a.maximumHeight=u.maximumHeight;break}else if(F!==void 0&&F._minimumHeight!==void 0&&F._maximumHeight!==void 0){a.minimumHeight=F._minimumHeight,a.maximumHeight=F._maximumHeight;break}}Z=Z.parent}d=Z}if(d!==void 0){let Z=n.verticalExaggeration,b=n.verticalExaggerationRelativeHeight;if(Z!==1&&(r=!1,a.minimumHeight=Ps.getHeight(a.minimumHeight,Z,b),a.maximumHeight=Ps.getHeight(a.maximumHeight,Z,b)),r)i.boundingVolumeIsFromMesh||(a._orientedBoundingBox=ci.clone(m.orientedBoundingBox,a._orientedBoundingBox),a._boundingSphere=Ft.clone(m.boundingSphere3D,a._boundingSphere),i.occludeePointInScaledSpace=p.clone(m.occludeePointInScaledSpace,i.occludeePointInScaledSpace),c(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=v1t(e,a._orientedBoundingBox.center,t.rectangle,a.minimumHeight,a.maximumHeight,i.occludeePointInScaledSpace)));else{let F=a._orientedBoundingBox===void 0||a._boundingSphere===void 0;(a.minimumHeight!==s||a.maximumHeight!==l||F)&&(a.computeBoundingVolumes(o),i.occludeePointInScaledSpace=v1t(e,a._orientedBoundingBox.center,t.rectangle,a.minimumHeight,a.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=d,i.boundingVolumeIsFromMesh=r}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}As.prototype.isDestroyed=function(){return!1};As.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),At(this)};function WCe(t,e,n){return function(i){let o,a,s=-1,l=i.data.imagery,r=l.length,d;for(d=0;d<r;++d)if(o=l[d],a=f(o.readyImagery,o.loadingImagery),a.imageryLayer===e){s=d;break}if(s!==-1){let m=s+t;if(o=l[m],a=c(o)?f(o.readyImagery,o.loadingImagery):void 0,!c(a)||a.imageryLayer!==e)return!e._createTileImagerySkeletons(i,n,m);for(d=s;d<m;++d)l[d].freeResources();l.splice(s,t)}return!0}}As.prototype._onLayerAdded=function(t,e){if(!this.isDestroyed()&&t.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,a=function(){t._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(c(s._loadedCallbacks[t._layerIndex]))return;let l,r=s.data.imagery,d=r.length,m=-1,h=0;for(l=0;l<d;++l){let b=r[l];if(f(b.readyImagery,b.loadingImagery).imageryLayer===t)m===-1&&(m=l),++h;else if(m!==-1)break}if(m===-1)return;let Z=m+h;t._createTileImagerySkeletons(s,n,Z)&&(s._loadedCallbacks[t._layerIndex]=WCe(h,t,n),s.state=Br.LOADING)})};if(t.ready){let s=t.imageryProvider;s._reload=a}this._quadtree.forEachLoadedTile(function(s){t._createTileImagerySkeletons(s,n)&&(s.state=Br.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==Pi.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};As.prototype._onLayerRemoved=function(t,e){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,a=0;for(let s=0,l=i.length;s<l;++s){let r=i[s],d=r.loadingImagery;if(c(d)||(d=r.readyImagery),d.imageryLayer===t)o===-1&&(o=s),r.freeResources(),++a;else if(o!==-1)break}o!==-1&&i.splice(o,a)}),c(t.imageryProvider)&&(t.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};As.prototype._onLayerMoved=function(t,e,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};As.prototype._onLayerShownOrHidden=function(t,e,n){n?this._onLayerAdded(t,e):this._onLayerRemoved(t,e)};var fCe=new L,FCe=new L;function K1t(t,e){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=t.context.uniformState.view,o=L.multiplyByPoint(i,this.properties.rtc,P1t);return L.setTranslation(i,o,w1t),w1t},u_modifiedModelViewProjection:function(){let i=t.context.uniformState.view,o=t.context.uniformState.projection,a=L.multiplyByPoint(i,this.properties.rtc,P1t);return L.setTranslation(i,a,Nz),L.multiply(o,Nz,Nz),Nz},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=e._clippingPlanes;return c(i)&&c(i.texture)?i.texture:t.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=e._clippingPlanes,o=c(i)?L.multiply(t.context.uniformState.view,i.modelMatrix,fCe):L.IDENTITY;return L.inverseTranspose(o,FCe)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=e._clippingPolygons.clippingTexture;return c(i)?i:t.context.defaultTexture},u_clippingExtents:function(){let i=e._clippingPolygons.extentsTexture;return c(i)?i:t.context.defaultTexture},u_minimumBrightness:function(){return t.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new Rt(0,0,.5,1),fillHighlightColor:new v(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new K(65e5,9e6),nightFadeDistance:new K(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new p(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new p(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new p,center3D:void 0,rtc:new p,modifiedModelView:new L,tileRectangle:new Rt,verticalExaggerationAndRelativeHeight:new K(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new K,southMercatorYAndOneOverHeight:new K,waterMask:void 0,waterMaskTranslationAndScale:new Rt,minMaxHeight:new K,scaleAndBias:new L,clippingPlanesEdgeColor:v.clone(v.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new Rt,frontFaceAlphaByDistance:new Rt,backFaceAlphaByDistance:new Rt,localizedTranslucencyRectangle:new Rt,undergroundColor:v.clone(v.TRANSPARENT),undergroundColorAlphaByDistance:new Rt,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return c(e.materialUniformMap)?ze(n,e.materialUniformMap):n}function UCe(t,e,n){let i=n.data,o,a;if(c(i.vertexArray)?(o=i.mesh,a=i.vertexArray):c(i.fill)&&c(i.fill.vertexArray)&&(o=i.fill.mesh,a=i.fill.vertexArray),!(!c(o)||!c(a))){if(c(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=GCe(t,a,o),i.wireframeVertexArray.mesh=o}}function GCe(t,e,n){let o={indices:n.indices,primitiveType:le.TRIANGLES};gi.toWireframe(o);let a=o.indices,s=we.createIndexBuffer({context:t,typedArray:a,usage:ce.STATIC_DRAW,indexDatatype:re.fromSizeInBytes(a.BYTES_PER_ELEMENT)});return new Ki({context:t,attributes:e._attributes,indexBuffer:s})}var $1t,tNt,Bz;(function(){let t=new $e({geometry:tZ.fromDimensions({dimensions:new p(2,2,2)})}),e=new $e({geometry:new g0({radius:1})}),n=new L,i,o;function a(s){return new Wi({geometryInstances:s,appearance:new jn({translucent:!1,flat:!0}),asynchronous:!1})}$1t=function(s,l){return s===i||(Bz(),i=s,n=L.fromRotationTranslation(s.halfAxes,s.center,n),t.modelMatrix=n,t.attributes.color=En.fromColor(l),o=a(t)),o},tNt=function(s,l){return s===i||(Bz(),i=s,n=L.fromTranslation(s.center,n),n=L.multiplyByUniformScale(n,s.radius,n),e.modelMatrix=n,e.attributes.color=En.fromColor(l),o=a(e)),o},Bz=function(){c(o)&&(o.destroy(),o=void 0,i=void 0)}})();var ACe=new Rt(0,0,0,0),TCe={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},SCe=v.TRANSPARENT,gCe=new ln;function ECe(t,e,n){let i=e.data;c(i.vertexArray)||(i.fill===void 0&&(i.fill=new B1(e)),i.fill.update(t,n));let o=n.creditDisplay,a=i.terrainData;if(c(a)&&c(a.credits)){let Ct=a.credits;for(let _t=0,Je=Ct.length;_t<Je;++_t)o.addCreditToNextFrame(Ct[_t])}let s=Sn.maximumTextureImageUnits,l=i.waterMaskTexture,r=i.waterMaskTranslationAndScale;!c(l)&&c(i.fill)&&(l=i.fill.waterMaskTexture,r=i.fill.waterMaskTranslationAndScale);let d=n.cameraUnderground,m=n.globeTranslucencyState,h=m.translucent,Z=m.frontFaceAlphaByDistance,b=m.backFaceAlphaByDistance,u=m.rectangle,F=f(t.undergroundColor,SCe),U=f(t.undergroundColorAlphaByDistance,gCe),G=q1t(t,n)&&n.mode===ut.SCENE3D&&F.alpha>0&&(U.nearValue>0||U.farValue>0),A=t.lambertDiffuseMultiplier,T=t.vertexShadowDarkness,g=t.hasWaterMask&&c(l),C=t.oceanNormalMap,y=g&&c(C),Y=t.terrainProvider,Q=c(Y)&&t.terrainProvider.hasVertexNormals,J=n.fog.enabled&&n.fog.renderable&&!d,M=t.showGroundAtmosphere&&n.mode===ut.SCENE3D,V=ui.castShadows(t.shadows)&&!h,E=ui.receiveShadows(t.shadows)&&!h,I=t.hueShift,B=t.saturationShift,X=t.brightnessShift,_=!(k.equalsEpsilon(I,0,k.EPSILON7)&&k.equalsEpsilon(B,0,k.EPSILON7)&&k.equalsEpsilon(X,0,k.EPSILON7)),P=!1;if(M){let Ct=p.magnitude(n.camera.positionWC),_t=t.nightFadeOutDistance;P=Ct>_t}g&&--s,y&&--s,c(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,c(t.clippingPlanes)&&t.clippingPlanes.enabled&&--s,c(t.clippingPolygons)&&t.clippingPolygons.enabled&&(--s,--s),s-=m.numberOfTextureUniforms;let w=i.renderedMesh,z=w.center,H=w.encoding,nt=i.tileBoundingRegion,$=n.verticalExaggeration,dt=n.verticalExaggerationRelativeHeight,q=$!==1,at=H.hasGeodeticSurfaceNormals,st=mCe,Et=0,Qt=0,Wt=0,Nt=0,kt=!1;if(n.mode!==ut.SCENE3D){let Ct=n.mapProjection,_t=Ct.project(Gt.southwest(e.rectangle),ZCe),Je=Ct.project(Gt.northeast(e.rectangle),VCe);if(st.x=_t.x,st.y=_t.y,st.z=Je.x,st.w=Je.y,n.mode!==ut.MORPHING&&(z=uCe,z.x=0,z.y=(st.z+st.x)*.5,z.z=(st.w+st.y)*.5,st.x-=z.y,st.y-=z.z,st.z-=z.y,st.w-=z.z),n.mode===ut.SCENE2D&&H.quantization===yr.BITS12){let xe=1/(Math.pow(2,12)-1)*.5,oo=(st.z-st.x)*xe,ea=(st.w-st.y)*xe;st.x-=oo,st.y-=ea,st.z+=oo,st.w+=ea}Ct instanceof Yo&&(Et=e.rectangle.south,Qt=e.rectangle.north,Wt=Yo.geodeticLatitudeToMercatorAngle(Et),Nt=1/(Yo.geodeticLatitudeToMercatorAngle(Qt)-Wt),kt=!0)}let Mt=TCe;Mt.frameState=n,Mt.surfaceTile=i,Mt.showReflectiveOcean=g,Mt.showOceanWaves=y,Mt.enableLighting=t.enableLighting,Mt.dynamicAtmosphereLighting=t.dynamicAtmosphereLighting,Mt.dynamicAtmosphereLightingFromSun=t.dynamicAtmosphereLightingFromSun,Mt.showGroundAtmosphere=M,Mt.atmosphereLightIntensity=t.atmosphereLightIntensity,Mt.atmosphereRayleighCoefficient=t.atmosphereRayleighCoefficient,Mt.atmosphereMieCoefficient=t.atmosphereMieCoefficient,Mt.atmosphereRayleighScaleHeight=t.atmosphereRayleighScaleHeight,Mt.atmosphereMieScaleHeight=t.atmosphereMieScaleHeight,Mt.atmosphereMieAnisotropy=t.atmosphereMieAnisotropy,Mt.perFragmentGroundAtmosphere=P,Mt.hasVertexNormals=Q,Mt.useWebMercatorProjection=kt,Mt.clippedByBoundaries=i.clippedByBoundaries,Mt.hasGeodeticSurfaceNormals=at,Mt.hasExaggeration=q;let qt=i.imagery,ie=0,oe=qt.length,He=t.showSkirts&&!d&&!h,rn=t.backFaceCulling&&!d&&!h,de=rn?t._renderState:t._disableCullingRenderState,zt=rn?t._blendRenderState:t._disableCullingBlendRenderState,ke=de,ue=t._firstPassInitialColor,We=n.context;if(c(t._debug.boundingSphereTile)||Bz(),t._materialUniformMap!==t.materialUniformMap){t._materialUniformMap=t.materialUniformMap;let Ct=t._drawCommands.length;for(let _t=0;_t<Ct;++_t)t._uniformMaps[_t]=K1t(n,t)}do{let Ct=0,_t,Je;if(t._drawCommands.length<=t._usedDrawCommands?(_t=new Ee,_t.owner=e,_t.cull=!1,_t.boundingVolume=new Ft,_t.orientedBoundingBox=void 0,Je=K1t(n,t),t._drawCommands.push(_t),t._uniformMaps.push(Je)):(_t=t._drawCommands[t._usedDrawCommands],Je=t._uniformMaps[t._usedDrawCommands]),_t.owner=e,++t._usedDrawCommands,e===t._debug.boundingSphereTile){let zi=nt.boundingVolume,js=nt.boundingSphere;c(zi)?$1t(zi,v.RED).update(n):c(js)&&tNt(js,v.RED).update(n)}let xe=Je.properties;Rt.clone(ue,xe.initialColor),xe.oceanNormalMap=C,xe.lightingFadeDistance.x=t.lightingFadeOutDistance,xe.lightingFadeDistance.y=t.lightingFadeInDistance,xe.nightFadeDistance.x=t.nightFadeOutDistance,xe.nightFadeDistance.y=t.nightFadeInDistance,xe.atmosphereLightIntensity=t.atmosphereLightIntensity,xe.atmosphereRayleighCoefficient=t.atmosphereRayleighCoefficient,xe.atmosphereMieCoefficient=t.atmosphereMieCoefficient,xe.atmosphereRayleighScaleHeight=t.atmosphereRayleighScaleHeight,xe.atmosphereMieScaleHeight=t.atmosphereMieScaleHeight,xe.atmosphereMieAnisotropy=t.atmosphereMieAnisotropy,xe.zoomedOutOceanSpecularIntensity=t.zoomedOutOceanSpecularIntensity;let oo=d?b:Z,ea=d?Z:b;c(oo)&&(Rt.fromElements(oo.near,oo.nearValue,oo.far,oo.farValue,xe.frontFaceAlphaByDistance),Rt.fromElements(ea.near,ea.nearValue,ea.far,ea.farValue,xe.backFaceAlphaByDistance)),Rt.fromElements(U.near,U.nearValue,U.far,U.farValue,xe.undergroundColorAlphaByDistance),v.clone(F,xe.undergroundColor),xe.lambertDiffuseMultiplier=A,xe.vertexShadowDarkness=T;let gs=!c(i.vertexArray)&&c(t.fillHighlightColor)&&t.fillHighlightColor.alpha>0;gs&&v.clone(t.fillHighlightColor,xe.fillHighlightColor),xe.verticalExaggerationAndRelativeHeight.x=$,xe.verticalExaggerationAndRelativeHeight.y=dt,xe.center3D=w.center,p.clone(z,xe.rtc),Rt.clone(st,xe.tileRectangle),xe.southAndNorthLatitude.x=Et,xe.southAndNorthLatitude.y=Qt,xe.southMercatorYAndOneOverHeight.x=Wt,xe.southMercatorYAndOneOverHeight.y=Nt;let is=hCe,ja=yz(e.rectangle,t.cartographicLimitRectangle),qn=pCe,ae=yz(e.rectangle,u);p.fromElements(I,B,X,xe.hsbShift);let fe=e.rectangle,ge=1/fe.width,Ze=1/fe.height;is.x=(ja.west-fe.west)*ge,is.y=(ja.south-fe.south)*Ze,is.z=(ja.east-fe.west)*ge,is.w=(ja.north-fe.south)*Ze,Rt.clone(is,xe.localizedCartographicLimitRectangle),qn.x=(ae.west-fe.west)*ge,qn.y=(ae.south-fe.south)*Ze,qn.z=(ae.east-fe.west)*ge,qn.w=(ae.north-fe.south)*Ze,Rt.clone(qn,xe.localizedTranslucencyRectangle);let Ke=J&&k.fog(e._distance,n.fog.density)>k.EPSILON3;_=_&&(Ke||M);let An=!1,si=!1,da=!1,_a=!1,bl=!1,na=!1,Go=!1,Ao=!1,Xs=!1,Es=!1;for(;Ct<s&&ie<oe;){let zi=qt[ie],js=zi.readyImagery;if(++ie,!c(js)||js.imageryLayer.alpha===0)continue;let ca=zi.useWebMercatorT?js.textureWebMercator:js.texture,$n=js.imageryLayer;c(zi.textureTranslationAndScale)||(zi.textureTranslationAndScale=$n._calculateTextureTranslationAndScale(e,zi)),xe.dayTextures[Ct]=ca,xe.dayTextureTranslationAndScale[Ct]=zi.textureTranslationAndScale,xe.dayTextureTexCoordsRectangle[Ct]=zi.textureCoordinateRectangle,xe.dayTextureUseWebMercatorT[Ct]=zi.useWebMercatorT,xe.dayTextureAlpha[Ct]=$n.alpha,na=na||xe.dayTextureAlpha[Ct]!==1,xe.dayTextureNightAlpha[Ct]=$n.nightAlpha,Go=Go||xe.dayTextureNightAlpha[Ct]!==1,xe.dayTextureDayAlpha[Ct]=$n.dayAlpha,Go=Go||xe.dayTextureDayAlpha[Ct]!==1,xe.dayTextureBrightness[Ct]=$n.brightness,An=An||xe.dayTextureBrightness[Ct]!==$r.DEFAULT_BRIGHTNESS,xe.dayTextureContrast[Ct]=$n.contrast,si=si||xe.dayTextureContrast[Ct]!==$r.DEFAULT_CONTRAST,xe.dayTextureHue[Ct]=$n.hue,da=da||xe.dayTextureHue[Ct]!==$r.DEFAULT_HUE,xe.dayTextureSaturation[Ct]=$n.saturation,_a=_a||xe.dayTextureSaturation[Ct]!==$r.DEFAULT_SATURATION,xe.dayTextureOneOverGamma[Ct]=1/$n.gamma,bl=bl||xe.dayTextureOneOverGamma[Ct]!==1/$r.DEFAULT_GAMMA,xe.dayTextureSplit[Ct]=$n.splitDirection,Ao=Ao||xe.dayTextureSplit[Ct]!==0;let mr=xe.dayTextureCutoutRectangles[Ct];if(c(mr)||(mr=xe.dayTextureCutoutRectangles[Ct]=new Rt),Rt.clone(Rt.ZERO,mr),c($n.cutoutRectangle)){let hs=yz(fe,$n.cutoutRectangle),ma=Gt.simpleIntersection(hs,fe,j1t);Xs=c(ma)||Xs,mr.x=(hs.west-fe.west)*ge,mr.y=(hs.south-fe.south)*Ze,mr.z=(hs.east-fe.west)*ge,mr.w=(hs.north-fe.south)*Ze}let hr=xe.colorsToAlpha[Ct];c(hr)||(hr=xe.colorsToAlpha[Ct]=new Rt);let pr=c($n.colorToAlpha)&&$n.colorToAlphaThreshold>0;if(Es=Es||pr,pr){let hs=$n.colorToAlpha;hr.x=hs.red,hr.y=hs.green,hr.z=hs.blue,hr.w=$n.colorToAlphaThreshold}else hr.w=-1;if(c(js.credits)){let hs=js.credits;for(let ma=0,Ed=hs.length;ma<Ed;++ma)o.addCreditToNextFrame(hs[ma])}++Ct}xe.dayTextures.length=Ct,xe.waterMask=l,Rt.clone(r,xe.waterMaskTranslationAndScale),xe.minMaxHeight.x=H.minimumHeight,xe.minMaxHeight.y=H.maximumHeight,L.clone(H.matrix,xe.scaleAndBias);let wl=t._clippingPlanes,ka=c(wl)&&wl.enabled&&e.isClipped;ka&&(xe.clippingPlanesEdgeColor=v.clone(wl.edgeColor,xe.clippingPlanesEdgeColor),xe.clippingPlanesEdgeWidth=wl.edgeWidth);let Wa=t._clippingPolygons,Ju=c(Wa)&&Wa.enabled&&e.isClipped;Mt.numberOfDayTextures=Ct,Mt.applyBrightness=An,Mt.applyContrast=si,Mt.applyHue=da,Mt.applySaturation=_a,Mt.applyGamma=bl,Mt.applyAlpha=na,Mt.applyDayNightAlpha=Go,Mt.applySplit=Ao,Mt.enableFog=Ke,Mt.enableClippingPlanes=ka,Mt.clippingPlanes=wl,Mt.enableClippingPolygons=Ju,Mt.clippingPolygons=Wa,Mt.hasImageryLayerCutout=Xs,Mt.colorCorrect=_,Mt.highlightFillTile=gs,Mt.colorToAlpha=Es,Mt.showUndergroundColor=G,Mt.translucent=h;let yl=i.renderedMesh.indices.length;He||(yl=i.renderedMesh.indexCountWithoutSkirts),_t.shaderProgram=t._surfaceShaderSet.getShaderProgram(Mt),_t.castShadows=V,_t.receiveShadows=E,_t.renderState=ke,_t.primitiveType=le.TRIANGLES,_t.vertexArray=i.vertexArray||i.fill.vertexArray,_t.count=yl,_t.uniformMap=Je,_t.pass=Pt.GLOBE,t._debug.wireframe&&(UCe(We,t,e),c(i.wireframeVertexArray)&&(_t.vertexArray=i.wireframeVertexArray,_t.primitiveType=le.LINES,_t.count=yl*2));let Bi=_t.boundingVolume,sd=_t.orientedBoundingBox;n.mode!==ut.SCENE3D?(Ft.fromRectangleWithHeights2D(e.rectangle,n.mapProjection,nt.minimumHeight,nt.maximumHeight,Bi),p.fromElements(Bi.center.z,Bi.center.x,Bi.center.y,Bi.center),n.mode===ut.MORPHING&&(Bi=Ft.union(nt.boundingSphere,Bi,Bi))):(_t.boundingVolume=Ft.clone(nt.boundingSphere,Bi),_t.orientedBoundingBox=ci.clone(nt.boundingVolume,sd)),_t.dirty=!0,h&&m.updateDerivedCommands(_t,n),z1t(_t,n),ke=zt,ue=ACe}while(ie<oe)}var qM=As;var KFo=R(W(),1);function eNt(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=Gt.clone(Gt.MAX_VALUE)}Object.defineProperties(eNt.prototype,{enabled:{get:function(){return this._enabled},set:function(t){this._enabled=t}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(t){this._frontFaceAlpha=t}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(t){this._frontFaceAlphaByDistance=ln.clone(t,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(t){this._backFaceAlpha=t}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(t){this._backFaceAlphaByDistance=ln.clone(t,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(t){c(t)||(t=Gt.clone(Gt.MAX_VALUE)),Gt.clone(t,this._rectangle)}}});var $M=eNt;var oUo=R(W(),1);function dr(){this._layers=[],this.layerAdded=new It,this.layerRemoved=new It,this.layerMoved=new It,this.layerShownOrHidden=new It}Object.defineProperties(dr.prototype,{length:{get:function(){return this._layers.length}}});dr.prototype.add=function(t,e){c(e)?this._layers.splice(e,0,t):(e=this._layers.length,this._layers.push(t)),this._update(),this.layerAdded.raiseEvent(t,e);let i=t.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(t,t._layerIndex,t.show),i()})};dr.prototype.addImageryProvider=function(t,e){let n=new $r(t);return this.add(n,e),n};dr.prototype.remove=function(t,e){e=f(e,!0);let n=this._layers.indexOf(t);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(t,n),e&&t.destroy(),!0):!1};dr.prototype.removeAll=function(t){t=f(t,!0);let e=this._layers;for(let n=0,i=e.length;n<i;n++){let o=e[n];this.layerRemoved.raiseEvent(o,n),t&&o.destroy()}this._layers=[]};dr.prototype.contains=function(t){return this.indexOf(t)!==-1};dr.prototype.indexOf=function(t){return this._layers.indexOf(t)};dr.prototype.get=function(t){return this._layers[t]};function Qz(t,e){return t.indexOf(e)}function nNt(t,e,n){let i=t._layers;if(e=k.clamp(e,0,i.length-1),n=k.clamp(n,0,i.length-1),e===n)return;let o=i[e];i[e]=i[n],i[n]=o,t._update(),t.layerMoved.raiseEvent(o,n,e)}dr.prototype.raise=function(t){let e=Qz(this._layers,t);nNt(this,e,e+1)};dr.prototype.lower=function(t){let e=Qz(this._layers,t);nNt(this,e,e-1)};dr.prototype.raiseToTop=function(t){let e=Qz(this._layers,t);e!==this._layers.length-1&&(this._layers.splice(e,1),this._layers.push(t),this._update(),this.layerMoved.raiseEvent(t,this._layers.length-1,e))};dr.prototype.lowerToBottom=function(t){let e=Qz(this._layers,t);e!==0&&(this._layers.splice(e,1),this._layers.splice(0,0,t),this._update(),this.layerMoved.raiseEvent(t,0,e))};var CCe=new Gt;function iNt(t,e,n,i){let o=t.globe._surface._tilesToRender,a;for(let l=0;!c(a)&&l<o.length;++l){let r=o[l];Gt.contains(r.rectangle,e)&&(a=r)}if(!c(a))return;let s=a.data.imagery;for(let l=s.length-1;l>=0;--l){let r=s[l],d=r.readyImagery;if(!c(d)||!d.imageryLayer.ready)continue;let m=d.imageryLayer.imageryProvider;if(n&&!c(m.pickFeatures)||!Gt.contains(d.rectangle,e))continue;let h=CCe,Z=1/1024;h.west=k.lerp(a.rectangle.west,a.rectangle.east,r.textureCoordinateRectangle.x-Z),h.east=k.lerp(a.rectangle.west,a.rectangle.east,r.textureCoordinateRectangle.z+Z),h.south=k.lerp(a.rectangle.south,a.rectangle.north,r.textureCoordinateRectangle.y-Z),h.north=k.lerp(a.rectangle.south,a.rectangle.north,r.textureCoordinateRectangle.w+Z),Gt.contains(h,e)&&i(d)}}dr.prototype.pickImageryLayers=function(t,e){let n=e.globe.pick(t,e);if(!c(n))return;let i=e.globe.ellipsoid.cartesianToCartographic(n),o=[];if(iNt(e,i,!1,function(a){o.push(a.imageryLayer)}),o.length!==0)return o};dr.prototype.pickImageryLayerFeatures=function(t,e){let n=e.globe.pick(t,e);if(!c(n))return;let i=e.globe.ellipsoid.cartesianToCartographic(n),o=[],a=[];if(iNt(e,i,!0,function(s){if(!s.imageryLayer.ready)return;let r=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);c(r)&&(o.push(r),a.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let l=[];for(let r=0;r<s.length;++r){let d=s[r],m=a[r];if(c(d)&&d.length>0)for(let h=0;h<d.length;++h){let Z=d[h];Z.imageryLayer=m,c(Z.position)||(Z.position=i),l.push(Z)}}return l})};dr.prototype.queueReprojectionCommands=function(t){let e=this._layers;for(let n=0,i=e.length;n<i;++n)e[n].queueReprojectionCommands(t)};dr.prototype.cancelReprojections=function(){let t=this._layers;for(let e=0,n=t.length;e<n;++e)t[e].cancelReprojections()};dr.prototype.isDestroyed=function(){return!1};dr.prototype.destroy=function(){return this.removeAll(!0),At(this)};dr.prototype._update=function(){let t=!0,e=this._layers,n,i,o,a;for(o=0,a=e.length;o<a;++o)i=e[o],i._layerIndex=o,i.show?(i._isBaseLayer=t,t=!1):i._isBaseLayer=!1,i.show!==i._show&&(c(i._show)&&(c(n)||(n=[]),n.push(i)),i._show=i.show);if(c(n))for(o=0,a=n.length;o<a;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var t_=dr;var XUo=R(W(),1);var rUo=R(W(),1);function oNt(t){this._ellipsoid=new BZ(t.ellipsoid,p.ZERO)}Object.defineProperties(oNt.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var e_=oNt;var uUo=R(W(),1);function tm(t){this._tilingScheme=t.tilingScheme,this._x=t.x,this._y=t.y,this._level=t.level,this._parent=t.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=Pi.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this.state=Br.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}tm.createLevelZeroTiles=function(t){let e=t.getNumberOfXTilesAtLevel(0),n=t.getNumberOfYTilesAtLevel(0),i=new Array(e*n),o=0;for(let a=0;a<n;++a)for(let s=0;s<e;++s)i[o++]=new tm({tilingScheme:t,x:s,y:a,level:0});return i};tm.prototype._updateCustomData=function(t,e,n){let i=this.customData,o,a,s;if(c(e)&&c(n)){for(i=i.filter(function(l){return n.indexOf(l)===-1}),this._customData=i,s=this._rectangle,o=0;o<e.length;++o)a=e[o],Gt.contains(s,a.positionCartographic)&&i.push(a);this._frameUpdated=t}else{let l=this._parent;if(c(l)&&this._frameUpdated!==l._frameUpdated){i.length=0,s=this._rectangle;let r=l.customData;for(o=0;o<r.length;++o)a=r[o],Gt.contains(s,a.positionCartographic)&&i.push(a);this._frameUpdated=l._frameUpdated}}};Object.defineProperties(tm.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return c(this._southwestChild)||(this._southwestChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return c(this._southeastChild)||(this._southeastChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return c(this._northwestChild)||(this._northwestChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return c(this._northeastChild)||(this._northeastChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Br.DONE}},eligibleForUnloading:{get:function(){let t=!0;return c(this.data)&&(t=this.data.eligibleForUnloading,c(t)||(t=!0)),t}}});tm.prototype.findLevelZeroTile=function(t,e,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(e<0?e+=i:e>=i&&(e-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return t.filter(function(o){return o.x===e&&o.y===n})[0]};tm.prototype.findTileToWest=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x-1,this.y);if(e.southeastChild===this)return e.southwestChild;if(e.northeastChild===this)return e.northwestChild;let n=e.findTileToWest(t);if(n!==void 0)return e.southwestChild===this?n.southeastChild:n.northeastChild};tm.prototype.findTileToEast=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x+1,this.y);if(e.southwestChild===this)return e.southeastChild;if(e.northwestChild===this)return e.northeastChild;let n=e.findTileToEast(t);if(n!==void 0)return e.southeastChild===this?n.southwestChild:n.northwestChild};tm.prototype.findTileToSouth=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x,this.y+1);if(e.northwestChild===this)return e.southwestChild;if(e.northeastChild===this)return e.southeastChild;let n=e.findTileToSouth(t);if(n!==void 0)return e.southwestChild===this?n.northwestChild:n.northeastChild};tm.prototype.findTileToNorth=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x,this.y-1);if(e.southwestChild===this)return e.northwestChild;if(e.southeastChild===this)return e.northeastChild;let n=e.findTileToNorth(t);if(n!==void 0)return e.northwestChild===this?n.southwestChild:n.southeastChild};tm.prototype.freeResources=function(){this.state=Br.START,this.renderable=!1,this.upsampledFromParent=!1,c(this.data)&&c(this.data.freeResources)&&this.data.freeResources(),kz(this._southwestChild),this._southwestChild=void 0,kz(this._southeastChild),this._southeastChild=void 0,kz(this._northwestChild),this._northwestChild=void 0,kz(this._northeastChild),this._northeastChild=void 0};function kz(t){c(t)&&t.freeResources()}var n_=tm;var bUo=R(W(),1);function Yz(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}Yz.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};Yz.prototype.trimTiles=function(t){let e=this.tail,n=!0;for(;n&&c(this._lastBeforeStartOfFrame)&&this.count>t&&c(e);){n=e!==this._lastBeforeStartOfFrame;let i=e.replacementPrevious;e.eligibleForUnloading&&(e.freeResources(),aNt(this,e)),e=i}};function aNt(t,e){let n=e.replacementPrevious,i=e.replacementNext;e===t._lastBeforeStartOfFrame&&(t._lastBeforeStartOfFrame=i),e===t.head?t.head=i:n.replacementNext=i,e===t.tail?t.tail=n:i.replacementPrevious=n,e.replacementPrevious=void 0,e.replacementNext=void 0,--t.count}Yz.prototype.markTileRendered=function(t){let e=this.head;if(e===t){t===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=t.replacementNext);return}if(++this.count,!c(e)){t.replacementPrevious=void 0,t.replacementNext=void 0,this.head=t,this.tail=t;return}(c(t.replacementPrevious)||c(t.replacementNext))&&aNt(this,t),t.replacementPrevious=void 0,t.replacementNext=e,e.replacementPrevious=t,this.head=t};var i_=Yz;function gu(t){this._tileProvider=t.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new i_,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=f(t.maximumScreenSpaceError,2),this.tileCacheSize=f(t.tileCacheSize,100),this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new e_({ellipsoid:n}),this._tileLoadProgressEvent=new It,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(gu.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});gu.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function ICe(t){let e=t._tileReplacementQueue;e.head=void 0,e.tail=void 0,e.count=0,lNt(t);let n=t._levelZeroTiles;if(c(n))for(let i=0;i<n.length;++i){let a=n[i].customData,s=a.length;for(let l=0;l<s;++l){let r=a[l];r.level=0,t._addHeightCallbacks.push(r)}n[i].freeResources()}t._levelZeroTiles=void 0,t._tileProvider.cancelReprojections()}gu.prototype.forEachLoadedTile=function(t){let e=this._tileReplacementQueue.head;for(;c(e);)e.state!==Br.START&&t(e),e=e.replacementNext};gu.prototype.forEachRenderedTile=function(t){let e=this._tilesToRender;for(let n=0,i=e.length;n<i;++n)t(e[n])};gu.prototype.updateHeight=function(t,e){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:t,level:-1,callback:e};return i.removeFunc=function(){let o=n._addHeightCallbacks,a=o.length;for(let s=0;s<a;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};gu.prototype.update=function(t){c(this._tileProvider.update)&&this._tileProvider.update(t)};function lNt(t){let e=t._debug;e.maxDepth=0,e.maxDepthVisited=0,e.tilesVisited=0,e.tilesCulled=0,e.tilesRendered=0,e.tilesWaitingForChildren=0,t._tileLoadQueueHigh.length=0,t._tileLoadQueueMedium.length=0,t._tileLoadQueueLow.length=0}gu.prototype.beginFrame=function(t){t.passes.render&&(this._tilesInvalidated&&(ICe(this),this._tilesInvalidated=!1),this._tileProvider.initialize(t),lNt(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};gu.prototype.render=function(t){let e=t.passes,n=this._tileProvider;e.render&&(n.beginUpdate(t),QCe(this,t),OCe(this,t),n.endUpdate(t)),e.pick&&this._tilesToRender.length>0&&n.updateForPick(t)};function NCe(t,e){let n=t._tileLoadQueueHigh.length+t._tileLoadQueueMedium.length+t._tileLoadQueueLow.length;if(n!==t._lastTileLoadQueueLength||t._tilesInvalidated){let o=It.prototype.raiseEvent.bind(t._tileLoadProgressEvent,n);e.afterRender.push(()=>(o(),!0)),t._lastTileLoadQueueLength=n}let i=t._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=t._tilesToRender.reduce(function(o,a){return Math.max(o,a.level)},-1),i.tilesRendered=t._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}gu.prototype.endFrame=function(t){!t.passes.render||t.mode===ut.MORPHING||(LCe(this,t),DCe(this,t),NCe(this,t))};gu.prototype.isDestroyed=function(){return!1};gu.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var a_,sNt=new gt;function yCe(t,e){let n=Gt.center(t.rectangle,sNt),i=n.longitude-a_.longitude,o=n.latitude-a_.latitude;n=Gt.center(e.rectangle,sNt);let a=n.longitude-a_.longitude,s=n.latitude-a_.latitude;return i*i+o*o-(a*a+s*s)}var BCe=new p,o_=[];function QCe(t,e){let n=t._debug;if(n.suspendLodUpdate)return;let i=t._tilesToRender;i.length=0;let o,a=t._tileProvider;if(!c(t._levelZeroTiles)){let F=a.tilingScheme;if(c(F)){let U=a.tilingScheme;t._levelZeroTiles=n_.createLevelZeroTiles(U);let G=t._levelZeroTiles.length;if(o_.length<G)for(o_=new Array(G),o=0;o<G;++o)o_[o]===void 0&&(o_[o]=new s_)}else return}t._occluders.ellipsoid.cameraPosition=e.camera.positionWC;let s,l=t._levelZeroTiles,r=l.length>1?t._occluders:void 0;a_=e.camera.positionCartographic,l.sort(yCe);let d=t._addHeightCallbacks,m=t._removeHeightCallbacks,h=e.frameNumber,Z;if(d.length>0||m.length>0){for(o=0,Z=l.length;o<Z;++o)s=l[o],s._updateCustomData(h,d,m);d.length=0,m.length=0}let b=e.camera;t._cameraPositionCartographic=b.positionCartographic;let u=L.getTranslation(b.transform,BCe);for(t._cameraReferenceFrameOriginCartographic=t.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(u,t._cameraReferenceFrameOriginCartographic),o=0,Z=l.length;o<Z;++o)s=l[o],t._tileReplacementQueue.markTileRendered(s),s.renderable?Td(t,s,a,e,r,!1,o_[o]):(uW(t,t._tileLoadQueueHigh,s,e),++n.tilesWaitingForChildren);t._lastSelectionFrameNumber=h}function uW(t,e,n,i){n.needsLoading&&(t.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=t.tileProvider.computeTileLoadPriority(n,i)),e.push(n))}function s_(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function rNt(){this.southwest=new s_,this.southeast=new s_,this.northwest=new s_,this.northeast=new s_}rNt.prototype.combine=function(t){let e=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;t.allAreRenderable=e.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,t.anyWereRenderedLastFrame=e.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,t.notYetRenderableCount=e.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var Hot=new Array(31);for(let t=0;t<Hot.length;++t)Hot[t]=new rNt;function kCe(t,e,n,i,o){let a=t._debug;++a.tilesVisited,t._tileReplacementQueue.markTileRendered(n),n._updateCustomData(e.frameNumber),n.level>a.maxDepthVisited&&(a.maxDepthVisited=n.level);let s=XCe(t,e,n)<t.maximumScreenSpaceError,l=n.southwestChild,r=n.southeastChild,d=n.northwestChild,m=n.northeastChild,h=t._lastSelectionFrameNumber,Z=n._lastSelectionResultFrame===h?n._lastSelectionResult:Pi.NONE,b=t.tileProvider;if(s||i){let u=Pi.originalResult(Z)===Pi.RENDERED,F=Pi.originalResult(Z)===Pi.CULLED||Z===Pi.NONE,U=n.state===Br.DONE,G=u||F||U;if(G||c(b.canRenderWithoutLosingDetail)&&(G=b.canRenderWithoutLosingDetail(n)),G){s&&uW(t,t._tileLoadQueueMedium,n,e),xz(t,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=Z===Pi.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.RENDERED,o.anyWereRenderedLastFrame||t._tileToUpdateHeights.push(n);return}i=!0,s&&uW(t,t._tileLoadQueueHigh,n,e)}if(b.canRefine(n)){if(l.upsampledFromParent&&r.upsampledFromParent&&d.upsampledFromParent&&m.upsampledFromParent){xz(t,n),uW(t,t._tileLoadQueueMedium,n,e),t._tileReplacementQueue.markTileRendered(l),t._tileReplacementQueue.markTileRendered(r),t._tileReplacementQueue.markTileRendered(d),t._tileReplacementQueue.markTileRendered(m),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=Z===Pi.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.RENDERED,o.anyWereRenderedLastFrame||t._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.REFINED;let F=t._tilesToRender.length,U=t._tileLoadQueueLow.length,G=t._tileLoadQueueMedium.length,A=t._tileLoadQueueHigh.length,T=t._tileToUpdateHeights.length;if(YCe(t,l,r,d,m,e,i,o),F!==t._tilesToRender.length){let g=o.allAreRenderable,C=o.anyWereRenderedLastFrame,y=o.notYetRenderableCount,Y=!1;if(!g&&!C){let Q=t._tilesToRender;for(let M=F;M<Q.length;++M){let V=Q[M];for(;V!==void 0&&V._lastSelectionResult!==Pi.KICKED&&V!==n;)V._lastSelectionResult=Pi.kick(V._lastSelectionResult),V=V.parent}t._tilesToRender.length=F,t._tileToUpdateHeights.length=T,xz(t,n),n._lastSelectionResult=Pi.RENDERED;let J=Z===Pi.RENDERED;!J&&y>t.loadingDescendantLimit&&(t._tileLoadQueueLow.length=U,t._tileLoadQueueMedium.length=G,t._tileLoadQueueHigh.length=A,uW(t,t._tileLoadQueueMedium,n,e),o.notYetRenderableCount=n.renderable?0:1,Y=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=J,J||t._tileToUpdateHeights.push(n),++a.tilesWaitingForChildren}t.preloadAncestors&&!Y&&uW(t,t._tileLoadQueueLow,n,e)}return}n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.RENDERED,xz(t,n),uW(t,t._tileLoadQueueHigh,n,e),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=Z===Pi.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function YCe(t,e,n,i,o,a,s,l){let r=a.camera.positionCartographic,d=t._tileProvider,m=t._occluders,h=Hot[e.level],Z=h.southwest,b=h.southeast,u=h.northwest,F=h.northeast;r.longitude<e.rectangle.east?r.latitude<e.rectangle.north?(Td(t,e,d,a,m,s,Z),Td(t,n,d,a,m,s,b),Td(t,i,d,a,m,s,u),Td(t,o,d,a,m,s,F)):(Td(t,i,d,a,m,s,u),Td(t,e,d,a,m,s,Z),Td(t,o,d,a,m,s,F),Td(t,n,d,a,m,s,b)):r.latitude<e.rectangle.north?(Td(t,n,d,a,m,s,b),Td(t,e,d,a,m,s,Z),Td(t,o,d,a,m,s,F),Td(t,i,d,a,m,s,u)):(Td(t,o,d,a,m,s,F),Td(t,i,d,a,m,s,u),Td(t,n,d,a,m,s,b),Td(t,e,d,a,m,s,Z)),h.combine(l)}function xCe(t,e){let n=e.rectangle;return c(t._cameraPositionCartographic)&&Gt.contains(n,t._cameraPositionCartographic)||c(t._cameraReferenceFrameOriginCartographic)&&Gt.contains(n,t._cameraReferenceFrameOriginCartographic)}function Td(t,e,n,i,o,a,s){if(n.computeTileVisibility(e,i,o)!==Ys.NONE)return kCe(t,i,e,a,s);if(++t._debug.tilesCulled,t._tileReplacementQueue.markTileRendered(e),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,xCe(t,e)){(!c(e.data)||!c(e.data.vertexArray))&&uW(t,t._tileLoadQueueMedium,e,i);let l=t._lastSelectionFrameNumber,r=e._lastSelectionResultFrame===l?e._lastSelectionResult:Pi.NONE;r!==Pi.CULLED_BUT_NEEDED&&r!==Pi.RENDERED&&t._tileToUpdateHeights.push(e),e._lastSelectionResult=Pi.CULLED_BUT_NEEDED}else t.preloadSiblings||e.level===0?(uW(t,t._tileLoadQueueLow,e,i),e._lastSelectionResult=Pi.CULLED):e._lastSelectionResult=Pi.CULLED;e._lastSelectionResultFrame=i.frameNumber}function XCe(t,e,n){if(e.mode===ut.SCENE2D||e.camera.frustum instanceof wn||e.camera.frustum instanceof el)return JCe(t,e,n);let i=t._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,a=e.context.drawingBufferHeight,s=e.camera.frustum.sseDenominator,l=i*a/(o*s);return e.fog.enabled&&(l-=k.fog(o,e.fog.density)*e.fog.sse),l/=e.pixelRatio,l}function JCe(t,e,n){let o=e.camera.frustum,a=o.offCenterFrustum;c(a)&&(o=a);let s=e.context,l=s.drawingBufferWidth,r=s.drawingBufferHeight,d=t._tileProvider.getLevelMaximumGeometricError(n.level),m=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(l,r),h=d/m;return e.fog.enabled&&e.mode!==ut.SCENE2D&&(h-=k.fog(n._distance,e.fog.density)*e.fog.sse),h/=e.pixelRatio,h}function xz(t,e){t._tilesToRender.push(e)}function LCe(t,e){let n=t._tileLoadQueueHigh,i=t._tileLoadQueueMedium,o=t._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;t._tileReplacementQueue.trimTiles(t.tileCacheSize);let a=Oi()+t._loadQueueTimeSlice,s=t._tileProvider,l=Dot(t,e,s,a,n,!1);l=Dot(t,e,s,a,i,l),Dot(t,e,s,a,o,l)}function MCe(t,e){return t._loadPriority-e._loadPriority}function Dot(t,e,n,i,o,a){n.computeTileLoadPriority!==void 0&&o.sort(MCe);for(let s=0,l=o.length;s<l&&(Oi()<i||!a);++s){let r=o[s];t._tileReplacementQueue.markTileRendered(r),n.loadTile(e,r),a=!0}return a}var Q1=new di,Oot=new gt,pU=new p,_Ce=[];function DCe(t,e){if(!c(t.tileProvider.tilingScheme))return;let n=_Ce;n.length=0;let i=t._tileToUpdateHeights,o=Oi(),a=t._updateHeightsTimeSlice,s=o+a,l=e.mode,r=e.mapProjection,d=t.tileProvider.tilingScheme.ellipsoid,m;for(;i.length>0;){let h=i[0];if(!c(h.data)||!c(h.data.mesh)){let F=h._lastSelectionResultFrame===t._lastSelectionFrameNumber?h._lastSelectionResult:Pi.NONE;(F===Pi.RENDERED||F===Pi.CULLED_BUT_NEEDED)&&n.push(h),i.shift(),t._lastTileIndex=0;continue}let Z=h.customData,b=Z.length,u=!1;for(m=t._lastTileIndex;m<b;++m){let F=Z[m],U=h.data.terrainData,G=c(U)&&U.wasCreatedByUpsampling();if(h.level>F.level&&!G){if(c(F.positionOnEllipsoidSurface)||(F.positionOnEllipsoidSurface=p.fromRadians(F.positionCartographic.longitude,F.positionCartographic.latitude,0,d)),l===ut.SCENE3D){let T=d.geodeticSurfaceNormal(F.positionOnEllipsoidSurface,Q1.direction),g=d.getSurfaceNormalIntersectionWithZAxis(F.positionOnEllipsoidSurface,11500,Q1.origin);if(!c(g)){let C=0;c(h.data.tileBoundingRegion)&&(C=h.data.tileBoundingRegion.minimumHeight);let y=Math.min(C,-11500),Y=p.multiplyByScalar(T,Math.abs(y)+1,pU);p.subtract(F.positionOnEllipsoidSurface,Y,Q1.origin)}}else gt.clone(F.positionCartographic,Oot),Oot.height=-11500,r.project(Oot,pU),p.fromElements(pU.z,pU.x,pU.y,pU),p.clone(pU,Q1.origin),p.clone(p.UNIT_X,Q1.direction);let A=h.data.pick(Q1,l,r,!1,pU);c(A)&&(c(F.callback)&&F.callback(A),F.level=h.level)}if(Oi()>=s){u=!0;break}}if(u){t._lastTileIndex=m;break}else t._lastTileIndex=0,i.shift()}for(m=0;m<n.length;m++)i.push(n[m])}function OCe(t,e){let n=t._tileProvider,i=t._tilesToRender;for(let o=0,a=i.length;o<a;++o){let s=i[o];n.showTileThisFrame(s,e)}}var l_=gu;function sV(t){t=f(t,mt.WGS84);let e=new Ru({ellipsoid:t}),n=new t_;this._ellipsoid=t,this._imageryLayerCollection=n,this._surfaceShaderSet=new xM,this._material=void 0,this._surface=new l_({tileProvider:new qM({terrainProvider:e,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=e,this._terrainProviderChanged=new It,this._undergroundColor=v.clone(v.BLACK),this._undergroundColorAlphaByDistance=new ln(t.maximumRadius/1e3,0,t.maximumRadius/5,1),this._translucency=new $M,Pot(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new te({url:Dn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!0,this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new p(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new p(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=1e7,this.lightingFadeInDistance=2e7,this.nightFadeOutDistance=1e7,this.nightFadeInDistance=5e7,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=ui.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(sV.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return c(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(t){this._surface.tileProvider.baseColor=t}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(t){this._surface.tileProvider.clippingPlanes=t}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(t){this._surface.tileProvider.clippingPolygons=t}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(t){c(t)||(t=Gt.clone(Gt.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=t}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(t){this._oceanNormalMapResource.url=t,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(t){t!==this._terrainProvider&&(this._terrainProvider=t,this._terrainProviderChanged.raiseEvent(t),c(this._material)&&Pot(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(t){this._material!==t&&(this._material=t,Pot(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(t){this._undergroundColor=v.clone(t,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(t){this._undergroundColorAlphaByDistance=ln.clone(t,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function Pot(t){let e=[],n=c(t._material)&&(c(t._material.shaderSource.match(/slope/))||c(t._material.shaderSource.match("normalEC"))),i=[rW,W1];c(t._material)&&(!n||t._terrainProvider.requestVertexNormals)?(i.push(t._material.shaderSource),e.push("APPLY_MATERIAL"),t._surface._tileProvider.materialUniformMap=t._material._uniforms):t._surface._tileProvider.materialUniformMap=void 0,i.push(kM),t._surfaceShaderSet.baseVertexShaderSource=new Ve({sources:[rW,W1,YM],defines:e}),t._surfaceShaderSet.baseFragmentShaderSource=new Ve({sources:i,defines:e}),t._surfaceShaderSet.material=t._material}function HCe(t){return function(e,n){let i=Ft.distanceSquaredTo(e.pickBoundingSphere,t),o=Ft.distanceSquaredTo(n.pickBoundingSphere,t);return i-o}}var wCe=[],PCe={start:0,stop:0};sV.prototype.pickWorldCoordinates=function(t,e,n,i){n=f(n,!0);let o=e.mode,a=e.mapProjection,s=wCe;s.length=0;let l=this._surface._tilesToRender,r=l.length,d,m;for(m=0;m<r;++m){d=l[m];let Z=d.data;if(!c(Z))continue;let b=Z.pickBoundingSphere;if(o!==ut.SCENE3D)Z.pickBoundingSphere=b=Ft.fromRectangleWithHeights2D(d.rectangle,a,Z.tileBoundingRegion.minimumHeight,Z.tileBoundingRegion.maximumHeight,b),p.fromElements(b.center.z,b.center.x,b.center.y,b.center);else if(c(Z.renderedMesh))Ft.clone(Z.tileBoundingRegion.boundingSphere,b);else continue;let u=no.raySphere(t,b,PCe);c(u)&&s.push(Z)}s.sort(HCe(t.origin));let h;for(r=s.length,m=0;m<r&&(h=s[m].pick(t,e.mode,e.mapProjection,n,i),!c(h));++m);return h};var vCe=new gt;sV.prototype.pick=function(t,e,n){if(n=this.pickWorldCoordinates(t,e,!0,n),c(n)&&e.mode!==ut.SCENE3D){n=p.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection.unproject(n,vCe);n=e.globe.ellipsoid.cartographicToCartesian(i,n)}return n};var KCe=new p,dNt=new p,zCe=new gt,jCe=new di;function wot(t,e){return c(t)&&Gt.contains(t.rectangle,e)?t:void 0}sV.prototype.getHeight=function(t){let e=this._surface._levelZeroTiles;if(!c(e))return;let n,i,o=e.length;for(i=0;i<o&&(n=e[i],!Gt.contains(n.rectangle,t));++i);if(i>=o)return;let a=n;for(;c(n);)n=wot(n._southwestChild,t)||wot(n._southeastChild,t)||wot(n._northwestChild,t)||n._northeastChild,c(n)&&c(n.data)&&c(n.data.renderedMesh)&&(a=n);if(n=a,!c(n)||!c(n.data)||!c(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,l=this._surface._tileProvider.tilingScheme.ellipsoid,r=p.fromRadians(t.longitude,t.latitude,0,l,KCe),d=jCe,m=l.geodeticSurfaceNormal(r,d.direction),h=l.getSurfaceNormalIntersectionWithZAxis(r,11500,d.origin);if(!c(h)){let b;c(n.data.tileBoundingRegion)&&(b=n.data.tileBoundingRegion.minimumHeight);let u=Math.min(f(b,0),-11500),F=p.multiplyByScalar(m,Math.abs(u)+1,dNt);p.subtract(r,F,d.origin)}let Z=n.data.pick(d,void 0,s,!1,dNt);if(c(Z))return l.cartesianToCartographic(Z,zCe).height};sV.prototype.update=function(t){this.show&&t.passes.render&&this._surface.update(t)};sV.prototype.beginFrame=function(t){let e=this._surface,n=e.tileProvider,i=this.terrainProvider,o=this.showWaterEffect&&c(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let l=this._oceanNormalMapResource,r=l.url;if(c(r)){let d=this;l.fetchImage().then(function(m){r===d._oceanNormalMapResource.url&&(d._oceanNormalMap=d._oceanNormalMap&&d._oceanNormalMap.destroy(),d._oceanNormalMap=new hn({context:t.context,source:m}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let a=t.passes,s=t.mode;a.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e.tileCacheSize=this.tileCacheSize,e.loadingDescendantLimit=this.loadingDescendantLimit,e.preloadAncestors=this.preloadAncestors,e.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ut.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,e.beginFrame(t))};sV.prototype.render=function(t){this.show&&(c(this._material)&&this._material.update(t.context),this._surface.render(t))};sV.prototype.endFrame=function(t){this.show&&t.passes.render&&this._surface.endFrame(t)};sV.prototype.isDestroyed=function(){return!1};sV.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),At(this)};var r_=sV;var UAo=R(W(),1);var BGo=R(W(),1);var AGo=R(W(),1);var bGo=R(W(),1);function qCe(t,e,n,i){this.rightAscension=t,this.declination=e,this.rotation=n,this.rotationRate=i}var d_=qCe;var GNt={},$Ce=32.184,tIe=2451545,cNt=-.0529921,mNt=-.1059842,hNt=13.0120009,pNt=13.3407154,uNt=.9856003,ZNt=26.4057084,VNt=13.064993,bNt=.3287146,RNt=1.7484877,WNt=-.1589763,fNt=.0036096,FNt=.1643573,UNt=12.9590088,vot=new rt;GNt.ComputeMoon=function(t,e){c(t)||(t=rt.now()),vot=rt.addSeconds(t,$Ce,vot);let n=rt.totalDays(vot)-tIe,i=n/xi.DAYS_PER_JULIAN_CENTURY,o=(125.045+cNt*n)*k.RADIANS_PER_DEGREE,a=(250.089+mNt*n)*k.RADIANS_PER_DEGREE,s=(260.008+hNt*n)*k.RADIANS_PER_DEGREE,l=(176.625+pNt*n)*k.RADIANS_PER_DEGREE,r=(357.529+uNt*n)*k.RADIANS_PER_DEGREE,d=(311.589+ZNt*n)*k.RADIANS_PER_DEGREE,m=(134.963+VNt*n)*k.RADIANS_PER_DEGREE,h=(276.617+bNt*n)*k.RADIANS_PER_DEGREE,Z=(34.226+RNt*n)*k.RADIANS_PER_DEGREE,b=(15.134+WNt*n)*k.RADIANS_PER_DEGREE,u=(119.743+fNt*n)*k.RADIANS_PER_DEGREE,F=(239.961+FNt*n)*k.RADIANS_PER_DEGREE,U=(25.053+UNt*n)*k.RADIANS_PER_DEGREE,G=Math.sin(o),A=Math.sin(a),T=Math.sin(s),g=Math.sin(l),C=Math.sin(r),y=Math.sin(d),Y=Math.sin(m),Q=Math.sin(h),J=Math.sin(Z),M=Math.sin(b),V=Math.sin(u),E=Math.sin(F),I=Math.sin(U),B=Math.cos(o),X=Math.cos(a),_=Math.cos(s),P=Math.cos(l),w=Math.cos(r),z=Math.cos(d),H=Math.cos(m),nt=Math.cos(h),$=Math.cos(Z),dt=Math.cos(b),q=Math.cos(u),at=Math.cos(F),st=Math.cos(U),Et=(269.9949+.0031*i-3.8787*G-.1204*A+.07*T-.0172*g+.0072*y-.0052*M+.0043*I)*k.RADIANS_PER_DEGREE,Qt=(66.5392+.013*i+1.5419*B+.0239*X-.0278*_+.0068*P-.0029*z+9e-4*H+8e-4*dt-9e-4*st)*k.RADIANS_PER_DEGREE,Wt=(38.3213+13.17635815*n-14e-13*n*n+3.561*G+.1208*A-.0642*T+.0158*g+.0252*C-.0066*y-.0047*Y-.0046*Q+.0028*J+.0052*M+.004*V+.0019*E-.0044*I)*k.RADIANS_PER_DEGREE,Nt=(13.17635815-14e-13*(2*n)+3.561*B*cNt+.1208*X*mNt-.0642*_*hNt+.0158*P*pNt+.0252*w*uNt-.0066*z*ZNt-.0047*H*VNt-.0046*nt*bNt+.0028*$*RNt+.0052*dt*WNt+.004*q*fNt+.0019*at*FNt-.0044*st*UNt)/86400*k.RADIANS_PER_DEGREE;return c(e)||(e=new d_),e.rightAscension=Et,e.declination=Qt,e.rotation=Wt,e.rotationRate=Nt,e};var c_=GNt;function ANt(t){(!c(t)||typeof t!="function")&&(t=c_.ComputeMoon),this._computeFunction=t}var eIe=new p,nIe=new p,iIe=new p;function oIe(t,e,n){let i=eIe;i.x=Math.cos(t+k.PI_OVER_TWO),i.y=Math.sin(t+k.PI_OVER_TWO),i.z=0;let o=Math.cos(e),a=iIe;a.x=o*Math.cos(t),a.y=o*Math.sin(t),a.z=Math.sin(e);let s=p.cross(a,i,nIe);return c(n)||(n=new ot),n[0]=i.x,n[1]=s.x,n[2]=a.x,n[3]=i.y,n[4]=s.y,n[5]=a.y,n[6]=i.z,n[7]=s.z,n[8]=a.z,n}var aIe=new ot,sIe=new wt;ANt.prototype.evaluate=function(t,e){c(t)||(t=rt.now());let n=this._computeFunction(t),i=oIe(n.rightAscension,n.declination,e),o=k.zeroToTwoPi(n.rotation),a=wt.fromAxisAngle(p.UNIT_Z,o,sIe),s=ot.fromQuaternion(wt.conjugate(a,a),aIe);return ot.multiply(s,i,i)};var m_=ANt;var lAo=R(W(),1);var kGo=R(W(),1),k1=`uniform vec3 u_radii; +`;var gWo=b(W(),1);function E1(t,e,n,i,o){if(this.imageryLayer=t,this.x=e,this.y=n,this.level=i,this.request=void 0,i!==0){let a=e/2|0,s=n/2|0,l=i-1;this.parent=t.getImageryFromCache(a,s,l)}this.state=ho.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!c(o)&&t.ready&&(o=t.imageryProvider.tilingScheme.tileXYToRectangle(e,n,i)),this.rectangle=o}E1.createPlaceholder=function(t){let e=new E1(t,0,0,0);return e.addReference(),e.state=ho.PLACEHOLDER,e};E1.prototype.addReference=function(){++this.referenceCount};E1.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),c(this.parent)&&this.parent.releaseReference(),c(this.image)&&c(this.image.destroy)&&this.image.destroy(),c(this.texture)&&this.texture.destroy(),c(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),At(this),0):this.referenceCount};E1.prototype.processStateMachine=function(t,e,n){this.state===ho.UNLOADED&&!n&&(this.state=ho.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===ho.RECEIVED&&(this.state=ho.TRANSITIONING,this.imageryLayer._createTexture(t.context,this));let i=this.state===ho.READY&&e&&!this.texture;(this.state===ho.TEXTURE_LOADED||i)&&(this.state=ho.TRANSITIONING,this.imageryLayer._reprojectTexture(t,this,e))};var C1=E1;var NWo=b(W(),1);function Yot(t,e,n){this.readyImagery=void 0,this.loadingImagery=t,this.textureCoordinateRectangle=e,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}Yot.prototype.freeResources=function(){c(this.readyImagery)&&this.readyImagery.releaseReference(),c(this.loadingImagery)&&this.loadingImagery.releaseReference()};Yot.prototype.processStateMachine=function(t,e,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(e,!this.useWebMercatorT,n),i.state===ho.READY)return c(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(t,this),!0;let a=i.parent,s;for(;c(a)&&(a.state!==ho.READY||!this.useWebMercatorT&&!c(a.texture));)a.state!==ho.FAILED&&a.state!==ho.INVALID&&(s=s||a),a=a.parent;return this.readyImagery!==a&&(c(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=a,c(a)&&(a.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(t,this))),i.state===ho.FAILED||i.state===ho.INVALID?c(s)?(s.processStateMachine(e,!this.useWebMercatorT,n),!1):!0:!1};var I1=Yot;function Uo(t,e){this._imageryProvider=t,this._readyEvent=new It,this._errorEvent=new It,e=f(e,f.EMPTY_OBJECT),t=f(t,f.EMPTY_OBJECT),this.alpha=f(e.alpha,f(t._defaultAlpha,1)),this.nightAlpha=f(e.nightAlpha,f(t._defaultNightAlpha,1)),this.dayAlpha=f(e.dayAlpha,f(t._defaultDayAlpha,1)),this.brightness=f(e.brightness,f(t._defaultBrightness,Uo.DEFAULT_BRIGHTNESS)),this.contrast=f(e.contrast,f(t._defaultContrast,Uo.DEFAULT_CONTRAST)),this.hue=f(e.hue,f(t._defaultHue,Uo.DEFAULT_HUE)),this.saturation=f(e.saturation,f(t._defaultSaturation,Uo.DEFAULT_SATURATION)),this.gamma=f(e.gamma,f(t._defaultGamma,Uo.DEFAULT_GAMMA)),this.splitDirection=f(e.splitDirection,Uo.DEFAULT_SPLIT),this.minificationFilter=f(e.minificationFilter,f(t._defaultMinificationFilter,Uo.DEFAULT_MINIFICATION_FILTER)),this.magnificationFilter=f(e.magnificationFilter,f(t._defaultMagnificationFilter,Uo.DEFAULT_MAGNIFICATION_FILTER)),this.show=f(e.show,!0),this._minimumTerrainLevel=e.minimumTerrainLevel,this._maximumTerrainLevel=e.maximumTerrainLevel,this._rectangle=f(e.rectangle,Gt.MAX_VALUE),this._maximumAnisotropy=e.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new I1(C1.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=e.cutoutRectangle,this.colorToAlpha=e.colorToAlpha,this.colorToAlphaThreshold=f(e.colorToAlphaThreshold,Uo.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD)}Object.defineProperties(Uo.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return c(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Uo.DEFAULT_BRIGHTNESS=1;Uo.DEFAULT_CONTRAST=1;Uo.DEFAULT_HUE=0;Uo.DEFAULT_SATURATION=1;Uo.DEFAULT_GAMMA=1;Uo.DEFAULT_SPLIT=Jc.NONE;Uo.DEFAULT_MINIFICATION_FILTER=On.LINEAR;Uo.DEFAULT_MAGNIFICATION_FILTER=Ro.LINEAR;Uo.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Uo.fromProviderAsync=function(t,e){let n=new Uo(void 0,e);return LEe(n,Promise.resolve(t)),n};Uo.fromWorldImagery=function(t){return t=f(t,f.EMPTY_OBJECT),Uo.fromProviderAsync(pW({style:t.style}),t)};Uo.prototype.isBaseLayer=function(){return this._isBaseLayer};Uo.prototype.isDestroyed=function(){return!1};Uo.prototype.destroy=function(){return At(this)};var Q1t=new Gt,y1t=new Gt,xot=new Gt,k1t=new Gt;Uo.prototype.getImageryRectangle=function(){let t=this._imageryProvider,e=this._rectangle;return Gt.intersection(t.rectangle,e)};Uo.prototype._createTileImagerySkeletons=function(t,e,n){let i=t.data;if(!c(e)||c(this._minimumTerrainLevel)&&t.level<this._minimumTerrainLevel||c(this._maximumTerrainLevel)&&t.level>this._maximumTerrainLevel)return!1;c(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let a=o.tilingScheme.projection instanceof Yo&&t.rectangle.north<Yo.MaximumLatitude&&t.rectangle.south>-Yo.MaximumLatitude,s=Gt.intersection(o.rectangle,this._rectangle,Q1t),l=Gt.intersection(t.rectangle,s,y1t);if(!c(l)){if(!this.isBaseLayer())return!1;let I=s,B=t.rectangle;l=y1t,B.south>=I.north?l.north=l.south=I.north:B.north<=I.south?l.north=l.south=I.south:(l.south=Math.max(B.south,I.south),l.north=Math.min(B.north,I.north)),B.west>=I.east?l.west=l.east=I.east:B.east<=I.west?l.west=l.east=I.west:(l.west=Math.max(B.west,I.west),l.east=Math.min(B.east,I.east))}let r=0;l.south>0?r=l.south:l.north<0&&(r=l.north);let m=1*e.getLevelMaximumGeometricError(t.level),h=XEe(this,m,r);h=Math.max(0,h);let u=o.maximumLevel;if(h>u&&(h=u),c(o.minimumLevel)){let I=o.minimumLevel;h<I&&(h=I)}let R=o.tilingScheme,V=R.positionToTileXY(Gt.northwest(l),h),F=R.positionToTileXY(Gt.southeast(l),h),U=t.rectangle.width/512,G=t.rectangle.height/512,A=R.tileXYToRectangle(V.x,V.y,h);Math.abs(A.south-t.rectangle.north)<G&&V.y<F.y&&++V.y,Math.abs(A.east-t.rectangle.west)<U&&V.x<F.x&&++V.x;let S=R.tileXYToRectangle(F.x,F.y,h);Math.abs(S.north-t.rectangle.south)<G&&F.y>V.y&&--F.y,Math.abs(S.west-t.rectangle.east)<U&&F.x>V.x&&--F.x;let g=Gt.clone(t.rectangle,k1t),C=R.tileXYToRectangle(V.x,V.y,h),y=Gt.intersection(C,s,xot),Y;a?(R.rectangleToNativeRectangle(g,g),R.rectangleToNativeRectangle(C,C),R.rectangleToNativeRectangle(y,y),R.rectangleToNativeRectangle(s,s),Y=R.tileXYToNativeRectangle.bind(R),U=g.width/512,G=g.height/512):Y=R.tileXYToRectangle.bind(R);let Q,J=0,M=1,Z;!this.isBaseLayer()&&Math.abs(y.west-g.west)>=U&&(J=Math.min(1,(y.west-g.west)/g.width)),!this.isBaseLayer()&&Math.abs(y.north-g.north)>=G&&(M=Math.max(0,(y.north-g.south)/g.height));let E=M;for(let I=V.x;I<=F.x;I++)if(Q=J,C=Y(I,V.y,h),y=Gt.simpleIntersection(C,s,xot),!!c(y)){J=Math.min(1,(y.east-g.west)/g.width),I===F.x&&(this.isBaseLayer()||Math.abs(y.east-g.east)<U)&&(J=1),M=E;for(let B=V.y;B<=F.y;B++){if(Z=M,C=Y(I,B,h),y=Gt.simpleIntersection(C,s,xot),!c(y))continue;M=Math.max(0,(y.south-g.south)/g.height),B===F.y&&(this.isBaseLayer()||Math.abs(y.south-g.south)<G)&&(M=0);let X=new bt(Q,M,J,Z),_=this.getImageryFromCache(I,B,h);i.imagery.splice(n,0,new I1(_,X,a)),++n}}return!0};Uo.prototype._calculateTextureTranslationAndScale=function(t,e){let n=e.readyImagery.rectangle,i=t.rectangle;if(e.useWebMercatorT){let r=e.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=r.rectangleToNativeRectangle(n,Q1t),i=r.rectangleToNativeRectangle(i,k1t)}let o=i.width,a=i.height,s=o/n.width,l=a/n.height;return new bt(s*(i.west-n.west)/o,l*(i.south-n.south)/a,s,l)};Uo.prototype._requestImagery=function(t){let e=this._imageryProvider,n=this;function i(s){if(!c(s))return o();t.image=s,t.state=ho.RECEIVED,t.request=void 0,za.reportSuccess(n._requestImageError)}function o(s){if(t.request.state===qi.CANCELLED){t.state=ho.UNLOADED,t.request=void 0;return}t.state=ho.FAILED,t.request=void 0;let l=`Failed to obtain image tile X: ${t.x} Y: ${t.y} Level: ${t.level}.`;n._requestImageError=za.reportError(n._requestImageError,e,e.errorEvent,l,t.x,t.y,t.level,s),n._requestImageError.retry&&a()}function a(){let s=new us({throttle:!1,throttleByServer:!0,type:Xl.IMAGERY});t.request=s,t.state=ho.TRANSITIONING;let l=e.requestImage(t.x,t.y,t.level,s);if(!c(l)){t.state=ho.UNLOADED,t.request=void 0;return}c(e.getTileCredits)&&(t.credits=e.getTileCredits(t.x,t.y,t.level)),l.then(function(r){i(r)}).catch(function(r){o(r)})}a()};Uo.prototype._createTextureWebGL=function(t,e){let n=new Hn({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=e.image;return c(i.internalFormat)?new hn({context:t,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new hn({context:t,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?Ye.RGBA:Ye.RGB,sampler:n})};Uo.prototype._createTexture=function(t,e){let n=this._imageryProvider,i=e.image;if(c(n.tileDiscardPolicy)){let a=n.tileDiscardPolicy;if(c(a)){if(!a.isReady()){e.state=ho.RECEIVED;return}if(a.shouldDiscardImage(i)){e.state=ho.INVALID;return}}}let o=this._createTextureWebGL(t,e);n.tilingScheme.projection instanceof Yo?e.textureWebMercator=o:e.texture=o,e.image=void 0,e.state=ho.TEXTURE_LOADED};function B1t(t,e,n){return`${t}:${e}:${n}`}Uo.prototype._finalizeReprojectTexture=function(t,e){let n=this.minificationFilter,i=this.magnificationFilter;if(n===On.LINEAR&&i===Ro.LINEAR&&!Ye.isCompressedFormat(e.pixelFormat)&&k.isPowerOfTwo(e.width)&&k.isPowerOfTwo(e.height)){n=On.LINEAR_MIPMAP_LINEAR;let a=Tn.maximumTextureFilterAnisotropy,s=Math.min(a,f(this._maximumAnisotropy,a)),l=B1t(n,i,s),r=t.cache.imageryLayerMipmapSamplers;c(r)||(r={},t.cache.imageryLayerMipmapSamplers=r);let d=r[l];c(d)||(d=r[l]=new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),e.generateMipmap(JZ.NICEST),e.sampler=d}else{let a=B1t(n,i,0),s=t.cache.imageryLayerNonMipmapSamplers;c(s)||(s={},t.cache.imageryLayerNonMipmapSamplers=s);let l=s[a];c(l)||(l=s[a]=new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),e.sampler=l}};Uo.prototype._reprojectTexture=function(t,e,n){let i=e.textureWebMercator||e.texture,o=e.rectangle,a=t.context;if(n=f(n,!0),n&&!(this._imageryProvider.tilingScheme.projection instanceof yo)&&o.width/i.width>1e-5){let s=this;e.addReference();let l=new Wm({persists:!0,owner:this,preExecute:function(r){xEe(r,a,i,e.rectangle)},postExecute:function(r){e.texture=r,s._finalizeReprojectTexture(a,r),e.state=ho.READY,e.releaseReference()},canceled:function(){e.state=ho.TEXTURE_LOADED,e.releaseReference()}});this._reprojectComputeCommands.push(l)}else n&&(e.texture=i),this._finalizeReprojectTexture(a,i),e.state=ho.READY};Uo.prototype.queueReprojectionCommands=function(t){let e=this._reprojectComputeCommands,n=e.length;for(let i=0;i<n;++i)t.commandList.push(e[i]);e.length=0};Uo.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(t){c(t.canceled)&&t.canceled()}),this._reprojectComputeCommands.length=0};Uo.prototype.getImageryFromCache=function(t,e,n,i){let o=Y1t(t,e,n),a=this._imageryCache[o];return c(a)||(a=new C1(this,t,e,n,i),this._imageryCache[o]=a),a.addReference(),a};Uo.prototype.removeImageryFromCache=function(t){let e=Y1t(t.x,t.y,t.level);delete this._imageryCache[e]};function Y1t(t,e,n){return JSON.stringify([t,e,n])}var Gz={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new K,texture:void 0},YEe=In.supportsTypedArrays()?new Float32Array(2*64):void 0;function xEe(t,e,n,i){let o=e.cache.imageryLayer_reproject;if(!c(o)){o=e.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){c(this.framebuffer)&&this.framebuffer.destroy(),c(this.vertexArray)&&this.vertexArray.destroy(),c(this.shaderProgram)&&this.shaderProgram.destroy()}};let U=new Float32Array(2*64*2),G=0;for(let y=0;y<64;++y){let Y=y/63;U[G++]=0,U[G++]=Y,U[G++]=1,U[G++]=Y}let A={position:0,webMercatorT:1},S=El.getRegularGridIndices(2,64),g=we.createIndexBuffer({context:e,typedArray:S,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT});o.vertexArray=new Ki({context:e,attributes:[{index:A.position,vertexBuffer:we.createVertexBuffer({context:e,typedArray:U,usage:ce.STATIC_DRAW}),componentsPerAttribute:2},{index:A.webMercatorT,vertexBuffer:we.createVertexBuffer({context:e,sizeInBytes:64*2*4,usage:ce.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:g});let C=new Ze({sources:[zM]});o.shaderProgram=xn.fromCache({context:e,vertexShaderSource:C,fragmentShaderSource:KM,attributeLocations:A}),o.sampler=new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:Ro.LINEAR})}n.sampler=o.sampler;let a=n.width,s=n.height;Gz.textureDimensions.x=a,Gz.textureDimensions.y=s,Gz.texture=n;let l=Math.sin(i.south),r=.5*Math.log((1+l)/(1-l));l=Math.sin(i.north);let m=1/(.5*Math.log((1+l)/(1-l))-r),h=new hn({context:e,width:a,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});k.isPowerOfTwo(a)&&k.isPowerOfTwo(s)&&h.generateMipmap(JZ.NICEST);let u=i.south,R=i.north,V=YEe,F=0;for(let U=0;U<64;++U){let G=U/63,A=k.lerp(u,R,G);l=Math.sin(A);let g=(.5*Math.log((1+l)/(1-l))-r)*m;V[F++]=g,V[F++]=g}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(V),t.shaderProgram=o.shaderProgram,t.outputTexture=h,t.uniformMap=Gz,t.vertexArray=o.vertexArray}function XEe(t,e,n){let i=t._imageryProvider,o=i.tilingScheme,a=o.ellipsoid,s=t._imageryProvider.tilingScheme.projection instanceof yo?1:Math.cos(n),l=o.rectangle,d=a.maximumRadius*l.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/e,m=Math.log(d)/Math.log(2);return Math.round(m)|0}function JEe(t,e){t.numberOfListeners>0?t.raiseEvent(e):console.error(e)}async function LEe(t,e){let n;try{if(n=await Promise.resolve(e),t.isDestroyed())return;t._imageryProvider=n,t._readyEvent.raiseEvent(n)}catch(i){JEe(t._errorEvent,i)}}var $r=Uo;var Dfo=b(W(),1);var Wfo=b(W(),1),MEe={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},mi=MEe;var Ffo=b(W(),1),x1t={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(t){return t>=x1t.RENDERED_AND_KICKED},originalResult:function(t){return t&3},kick:function(t){return t|4}},Pi=x1t;function y1(t){this.tile=t,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new bt}y1.prototype.update=function(t,e,n){this.changedThisFrame&&(O1t(t,e,this.tile,n),this.changedThisFrame=!1)};y1.prototype.destroy=function(t){this._destroyVertexArray(t),c(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};y1.prototype._destroyVertexArray=function(t){c(this.vertexArray)&&(c(t)?t.push(this.vertexArray):SV._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var _Ee=new $Z;y1.updateFillTiles=function(t,e,n,i){let o=t._quadtree,a=o._levelZeroTiles,s=o._lastSelectionFrameNumber,l=_Ee;l.clear();for(let d=0;d<e.length;++d){let m=e[d];c(m.data.vertexArray)&&l.enqueue(e[d])}let r=l.dequeue();for(;r!==void 0;){let d=r.findTileToWest(a),m=r.findTileToSouth(a),h=r.findTileToEast(a),u=r.findTileToNorth(a);rr(t,n,r,d,s,mi.EAST,!1,l,i),rr(t,n,r,m,s,mi.NORTH,!1,l,i),rr(t,n,r,h,s,mi.WEST,!1,l,i),rr(t,n,r,u,s,mi.SOUTH,!1,l,i);let R=d.findTileToNorth(a),V=d.findTileToSouth(a),F=h.findTileToNorth(a),U=h.findTileToSouth(a);rr(t,n,r,R,s,mi.SOUTHEAST,!1,l,i),rr(t,n,r,F,s,mi.SOUTHWEST,!1,l,i),rr(t,n,r,V,s,mi.NORTHEAST,!1,l,i),rr(t,n,r,U,s,mi.NORTHWEST,!1,l,i),r=l.dequeue()}};function rr(t,e,n,i,o,a,s,l,r){if(i===void 0)return;let d=i;for(;d&&(d._lastSelectionResultFrame!==o||Pi.wasKicked(d._lastSelectionResult)||Pi.originalResult(d._lastSelectionResult)===Pi.CULLED);){if(s)return;let m=d.parent;if(a>=mi.NORTHWEST&&m!==void 0)switch(a){case mi.NORTHWEST:d=d===m.northwestChild?m:void 0;break;case mi.NORTHEAST:d=d===m.northeastChild?m:void 0;break;case mi.SOUTHWEST:d=d===m.southwestChild?m:void 0;break;case mi.SOUTHEAST:d=d===m.southeastChild?m:void 0;break}else d=m}if(d!==void 0){if(d._lastSelectionResult===Pi.RENDERED){if(c(d.data.vertexArray))return;DEe(t,e,n,d,a,o,l,r);return}if(Pi.originalResult(i._lastSelectionResult)!==Pi.CULLED)switch(a){case mi.WEST:rr(t,e,n,i.northwestChild,o,a,!0,l,r),rr(t,e,n,i.southwestChild,o,a,!0,l,r);break;case mi.EAST:rr(t,e,n,i.southeastChild,o,a,!0,l,r),rr(t,e,n,i.northeastChild,o,a,!0,l,r);break;case mi.SOUTH:rr(t,e,n,i.southwestChild,o,a,!0,l,r),rr(t,e,n,i.southeastChild,o,a,!0,l,r);break;case mi.NORTH:rr(t,e,n,i.northeastChild,o,a,!0,l,r),rr(t,e,n,i.northwestChild,o,a,!0,l,r);break;case mi.NORTHWEST:rr(t,e,n,i.northwestChild,o,a,!0,l,r);break;case mi.NORTHEAST:rr(t,e,n,i.northeastChild,o,a,!0,l,r);break;case mi.SOUTHWEST:rr(t,e,n,i.southwestChild,o,a,!0,l,r);break;case mi.SOUTHEAST:rr(t,e,n,i.southeastChild,o,a,!0,l,r);break;default:throw new Ut("Invalid edge")}}}function DEe(t,e,n,i,o,a,s,l){let r=i.data;if(r.fill===void 0)r.fill=new y1(i);else if(r.fill.visitedFrame===a)return;r.fill.enqueuedFrame!==a&&(r.fill.enqueuedFrame=a,r.fill.changedThisFrame=!1,s.enqueue(i)),OEe(t,e,n,i,o,l)}function OEe(t,e,n,i,o,a){let s=i.data.fill,l,r=n.data.fill;c(r)?(r.visitedFrame=e.frameNumber,r.changedThisFrame&&(O1t(t,e,n,a),r.changedThisFrame=!1),l=n.data.fill.mesh):l=n.data.mesh;let d,m;switch(o){case mi.WEST:d=s.westMeshes,m=s.westTiles;break;case mi.SOUTH:d=s.southMeshes,m=s.southTiles;break;case mi.EAST:d=s.eastMeshes,m=s.eastTiles;break;case mi.NORTH:d=s.northMeshes,m=s.northTiles;break;case mi.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==l,s.northwestMesh=l,s.northwestTile=n;return;case mi.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==l,s.northeastMesh=l,s.northeastTile=n;return;case mi.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==l,s.southwestMesh=l,s.southwestTile=n;return;case mi.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==l,s.southeastMesh=l,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||d[0]!==l||d.length!==1,d[0]=l,m[0]=n,d.length=1,m.length=1;return}let h,u,R,V,F=n.rectangle,U,G=i.rectangle;switch(o){case mi.WEST:for(U=(G.north-G.south)*k.EPSILON5,h=0;h<m.length&&(R=m[h],V=R.rectangle,!k.greaterThan(F.north,V.south,U));++h);for(u=h;u<m.length&&(R=m[u],V=R.rectangle,!k.greaterThanOrEquals(F.south,V.north,U));++u);break;case mi.SOUTH:for(U=(G.east-G.west)*k.EPSILON5,h=0;h<m.length&&(R=m[h],V=R.rectangle,!k.lessThan(F.west,V.east,U));++h);for(u=h;u<m.length&&(R=m[u],V=R.rectangle,!k.lessThanOrEquals(F.east,V.west,U));++u);break;case mi.EAST:for(U=(G.north-G.south)*k.EPSILON5,h=0;h<m.length&&(R=m[h],V=R.rectangle,!k.lessThan(F.south,V.north,U));++h);for(u=h;u<m.length&&(R=m[u],V=R.rectangle,!k.lessThanOrEquals(F.north,V.south,U));++u);break;case mi.NORTH:for(U=(G.east-G.west)*k.EPSILON5,h=0;h<m.length&&(R=m[h],V=R.rectangle,!k.greaterThan(F.east,V.west,U));++h);for(u=h;u<m.length&&(R=m[u],V=R.rectangle,!k.greaterThanOrEquals(F.west,V.east,U));++u);break}u-h===1?(s.changedThisFrame=s.changedThisFrame||d[h]!==l,d[h]=l,m[h]=n):(s.changedThisFrame=!0,d.splice(h,u-h,l),m.splice(h,u-h,n))}var pT=new gt,HEe=new gt,N1=new p,Mot=new p,Xot=new K,Jot=new K,np=new K;function Iz(){this.height=0,this.encodedNormal=new K}function Az(t,e,n,i,o,a,s,l,r){if(c(o))return o;let d;if(c(a)&&c(s))d=(a.height+s.height)*.5;else if(c(a))d=a.height;else if(c(s))d=s.height;else if(c(l))d=l.height;else{let h=t.tile.data.tileBoundingRegion,u=0,R=0;c(h)&&(u=h.minimumHeight,R=h.maximumHeight),d=(u+R)*.5}return H1t(t,e,n,i,d,r),r}var wEe={minimumHeight:0,maximumHeight:0},PEe=new p,X1t=new Iz,J1t=new Iz,L1t=new Iz,M1t=new Iz,vEe=typeof Uint8Array<"u"?new Uint8Array(9*9):void 0,KEe={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function O1t(t,e,n,i){SV.initialize(n,t.terrainProvider,t._imageryLayers);let o=n.data,a=o.fill,s=n.rectangle,l=e.verticalExaggeration,r=e.verticalExaggerationRelativeHeight,d=l!==1,m=n.tilingScheme.ellipsoid,h=Tz(a,m,0,1,a.northwestTile,a.northwestMesh,a.northTiles,a.northMeshes,a.westTiles,a.westMeshes,L1t),u=Tz(a,m,0,0,a.southwestTile,a.southwestMesh,a.westTiles,a.westMeshes,a.southTiles,a.southMeshes,X1t),R=Tz(a,m,1,0,a.southeastTile,a.southeastMesh,a.southTiles,a.southMeshes,a.eastTiles,a.eastMeshes,J1t),V=Tz(a,m,1,1,a.northeastTile,a.northeastMesh,a.eastTiles,a.eastMeshes,a.northTiles,a.northMeshes,M1t);h=Az(a,m,0,1,h,u,V,R,L1t),u=Az(a,m,0,0,u,h,R,V,X1t),R=Az(a,m,1,1,R,u,V,h,J1t),V=Az(a,m,1,1,V,R,h,u,M1t);let F=u.height,U=R.height,G=h.height,A=V.height,S=Math.min(F,U,G,A),g=Math.max(F,U,G,A),C=(S+g)*.5,y,Y,Q=t.getLevelMaximumGeometricError(n.level),J=m.maximumRadius-Q,M=Math.acos(J/m.maximumRadius)*4;if(M*=1.5,s.width>M&&g-S<=Q){let I=new Gd({width:9,height:9,buffer:vEe,structure:{heightOffset:g}}),B=KEe;B.tilingScheme=n.tilingScheme,B.x=n.x,B.y=n.y,B.level=n.level,B.exaggeration=l,B.exaggerationRelativeHeight=r,a.mesh=I._createMeshSync(B)}else{let I=d,B=Gt.center(s,HEe);B.height=C;let X=m.cartographicToCartesian(B,PEe),_=new lc(X,void 0,void 0,void 0,void 0,!0,!0,I,l,r),P=5,w;for(w=a.westMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].eastIndicesNorthToSouth.length;for(w=a.southMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].northIndicesWestToEast.length;for(w=a.eastMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].westIndicesSouthToNorth.length;for(w=a.northMeshes,y=0,Y=w.length;y<Y;++y)P+=w[y].southIndicesEastToWest.length;let z=wEe;z.minimumHeight=S,z.maximumHeight=g;let H=_.stride,nt=new Float32Array(P*H),$=0,dt=$;$=Sz(m,s,_,nt,$,0,1,h.height,h.encodedNormal,1,z),$=Ez(a,m,_,nt,$,a.westTiles,a.westMeshes,mi.EAST,z);let q=$;$=Sz(m,s,_,nt,$,0,0,u.height,u.encodedNormal,0,z),$=Ez(a,m,_,nt,$,a.southTiles,a.southMeshes,mi.NORTH,z);let at=$;$=Sz(m,s,_,nt,$,1,0,R.height,R.encodedNormal,0,z),$=Ez(a,m,_,nt,$,a.eastTiles,a.eastMeshes,mi.WEST,z);let st=$;$=Sz(m,s,_,nt,$,1,1,V.height,V.encodedNormal,1,z),$=Ez(a,m,_,nt,$,a.northTiles,a.northMeshes,mi.SOUTH,z),S=z.minimumHeight,g=z.maximumHeight;let Et=ci.fromRectangle(s,S,g,n.tilingScheme.ellipsoid),Qt=Yo.geodeticLatitudeToMercatorAngle(s.south),Wt=1/(Yo.geodeticLatitudeToMercatorAngle(s.north)-Qt),Nt=(Yo.geodeticLatitudeToMercatorAngle(B.latitude)-Qt)*Wt,kt=m.geodeticSurfaceNormalCartographic(pT,Mot),Mt=Ni.octEncode(kt,Xot),qt=$;_.encode(nt,$*H,Et.center,K.fromElements(.5,.5,np),C,Mt,Nt,kt),++$;let ie=$,oe=ie<256?1:2,He=(ie-1)*3,rn=He*oe,de=(nt.length-ie*H)*Float32Array.BYTES_PER_ELEMENT,zt;if(de>=rn){let _t=ie*H*Float32Array.BYTES_PER_ELEMENT;zt=ie<256?new Uint8Array(nt.buffer,_t,He):new Uint16Array(nt.buffer,_t,He)}else zt=ie<256?new Uint8Array(He):new Uint16Array(He);nt=new Float32Array(nt.buffer,0,ie*H);let ke=0;for(y=0;y<ie-2;++y)zt[ke++]=qt,zt[ke++]=y,zt[ke++]=y+1;zt[ke++]=qt,zt[ke++]=y,zt[ke++]=0;let Ve=[];for(y=q;y>=dt;--y)Ve.push(y);let We=[];for(y=at;y>=q;--y)We.push(y);let Vn=[];for(y=st;y>=at;--y)Vn.push(y);let Ct=[];for(Ct.push(0),y=qt-1;y>=st;--y)Ct.push(y);a.mesh=new AV(_.center,nt,zt,He,ie,S,g,Ft.fromOrientedBoundingBox(Et),nCe(t,Et.center,s,S,g),_.stride,Et,_,Ve,We,Vn,Ct)}let Z=e.context;a._destroyVertexArray(i),a.vertexArray=SV._createVertexArrayForMesh(Z,a.mesh),o.processImagery(n,t.terrainProvider,e,!0);let E=a.waterMaskTexture;if(a.waterMaskTexture=void 0,t.terrainProvider.hasWaterMask){let I=o._findAncestorTileWithTerrainData(n);c(I)&&c(I.data.waterMaskTexture)&&(a.waterMaskTexture=I.data.waterMaskTexture,++a.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,I,a.waterMaskTranslationAndScale))}c(E)&&(--E.referenceCount,E.referenceCount===0&&E.destroy())}function Sz(t,e,n,i,o,a,s,l,r,d,m){let h=pT;h.longitude=k.lerp(e.west,e.east,a),h.latitude=k.lerp(e.south,e.north,s),h.height=l;let u=t.cartographicToCartesian(h,N1),R;n.hasGeodeticSurfaceNormals&&(R=t.geodeticSurfaceNormal(u,Mot));let V=Jot;return V.x=a,V.y=s,n.encode(i,o*n.stride,u,V,l,r,d,R),m.minimumHeight=Math.min(m.minimumHeight,l),m.maximumHeight=Math.max(m.maximumHeight,l),o+1}var Cz=new Gt;function jM(t,e,n,i){let o=t.rectangle,a=e.rectangle;e.x===0&&n.x===1&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1?(o=Gt.clone(t.rectangle,Cz),o.west-=k.TWO_PI,o.east-=k.TWO_PI):t.x===0&&n.x===0&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1&&(o=Gt.clone(t.rectangle,Cz),o.west+=k.TWO_PI,o.east+=k.TWO_PI);let s=o.east-o.west,l=(a.west-o.west)/s,r=(a.east-o.west)/s,d=o.north-o.south,m=(a.south-o.south)/d,h=(a.north-o.south)/d,u=(n.x-l)/(r-l),R=(n.y-m)/(h-m);return Math.abs(u)<Math.EPSILON5?u=0:Math.abs(u-1)<Math.EPSILON5&&(u=1),Math.abs(R)<Math.EPSILON5?R=0:Math.abs(R-1)<Math.EPSILON5&&(R=1),i.x=u,i.y=R,i}var zEe=new K;function Lot(t,e,n,i,o){let a=t.encoding,s=t.vertices;if(o.height=a.decodeHeight(s,e),a.hasVertexNormals)a.getOctEncodedNormal(s,e,o.encodedNormal);else{let l=o.encodedNormal;l.x=0,l.y=0}}var jEe=new K,qEe=new p;function $Ee(t,e,n,i,o,a,s,l,r,d){let m=i.encoding,h=i.vertices,u=jM(e,n,m.decodeTextureCoordinates(h,o,np),np),R=jM(e,n,m.decodeTextureCoordinates(h,a,Jot),Jot),V;r?V=(s-u.x)/(R.x-u.x):V=(l-u.y)/(R.y-u.y);let F=m.decodeHeight(h,o),U=m.decodeHeight(h,a),G=n.rectangle;pT.longitude=k.lerp(G.west,G.east,s),pT.latitude=k.lerp(G.south,G.north,l),d.height=pT.height=k.lerp(F,U,V);let A;if(m.hasVertexNormals){let S=m.getOctEncodedNormal(h,o,zEe),g=m.getOctEncodedNormal(h,a,jEe),C=Ni.octDecode(S.x,S.y,N1),y=Ni.octDecode(g.x,g.y,qEe);A=p.lerp(C,y,V,N1),p.normalize(A,A),Ni.octEncode(A,d.encodedNormal)}else A=t.geodeticSurfaceNormalCartographic(pT,N1),Ni.octEncode(A,d.encodedNormal)}function H1t(t,e,n,i,o,a){a.height=o;let s=e.geodeticSurfaceNormalCartographic(pT,N1);Ni.octEncode(s,a.encodedNormal)}function Tz(t,e,n,i,o,a,s,l,r,d,m){if(D1t(t,e,l,s,!1,n,i,m)||D1t(t,e,d,r,!0,n,i,m))return m;let u;if(_ot(o,a))return n===0?i===0?u=a.eastIndicesNorthToSouth[0]:u=a.southIndicesEastToWest[0]:i===0?u=a.northIndicesWestToEast[0]:u=a.westIndicesSouthToNorth[0],Lot(a,u,n,i,m),m;let R;if(n===0?i===0?R=gz(t.westMeshes,t.westTiles,mi.EAST,t.southMeshes,t.southTiles,mi.NORTH,n,i):R=gz(t.northMeshes,t.northTiles,mi.SOUTH,t.westMeshes,t.westTiles,mi.EAST,n,i):i===0?R=gz(t.southMeshes,t.southTiles,mi.NORTH,t.eastMeshes,t.eastTiles,mi.WEST,n,i):R=gz(t.eastMeshes,t.eastTiles,mi.WEST,t.northMeshes,t.northTiles,mi.SOUTH,n,i),c(R))return H1t(t,e,n,i,R,m),m}function gz(t,e,n,i,o,a,s,l){let r=_1t(t,e,!1,n,s,l),d=_1t(i,o,!0,a,s,l);return c(r)&&c(d)?(r+d)*.5:c(r)?r:d}function Ez(t,e,n,i,o,a,s,l,r){for(let d=0;d<a.length;++d)o=tCe(t,e,n,i,o,a[d],s[d],l,r);return o}function tCe(t,e,n,i,o,a,s,l,r){let d=a.rectangle;l===mi.EAST&&t.tile.x===0?(d=Gt.clone(a.rectangle,Cz),d.west-=k.TWO_PI,d.east-=k.TWO_PI):l===mi.WEST&&a.x===0&&(d=Gt.clone(a.rectangle,Cz),d.west+=k.TWO_PI,d.east+=k.TWO_PI);let m=t.tile.rectangle,h,u;o>0&&(n.decodeTextureCoordinates(i,o-1,np),h=np.x,u=np.y);let R,V;switch(l){case mi.WEST:R=s.westIndicesSouthToNorth,V=!1;break;case mi.NORTH:R=s.northIndicesWestToEast,V=!0;break;case mi.EAST:R=s.eastIndicesNorthToSouth,V=!1;break;case mi.SOUTH:R=s.southIndicesEastToWest,V=!0;break}let F=a,U=t.tile,G=s.encoding,A=s.vertices,S=n.stride,g,C;G.hasWebMercatorT&&(g=Yo.geodeticLatitudeToMercatorAngle(m.south),C=1/(Yo.geodeticLatitudeToMercatorAngle(m.north)-g));for(let y=0;y<R.length;++y){let Y=R[y],Q=G.decodeTextureCoordinates(A,Y,np);jM(F,U,Q,Q);let J=Q.x,M=Q.y,Z=V?J:M;if(Z<0||Z>1||Math.abs(J-h)<k.EPSILON5&&Math.abs(M-u)<k.EPSILON5)continue;let E=Math.abs(J)<k.EPSILON5||Math.abs(J-1)<k.EPSILON5,I=Math.abs(M)<k.EPSILON5||Math.abs(M-1)<k.EPSILON5;if(E&&I)continue;let B=G.decodePosition(A,Y,N1),X=G.decodeHeight(A,Y),_;G.hasVertexNormals?_=G.getOctEncodedNormal(A,Y,Xot):(_=Xot,_.x=0,_.y=0);let P=M;if(G.hasWebMercatorT){let z=k.lerp(m.south,m.north,M);P=(Yo.geodeticLatitudeToMercatorAngle(z)-g)*C}let w;n.hasGeodeticSurfaceNormals&&(w=e.geodeticSurfaceNormal(B,Mot)),n.encode(i,o*S,B,Q,X,_,P,w),r.minimumHeight=Math.min(r.minimumHeight,X),r.maximumHeight=Math.max(r.maximumHeight,X),++o}return o}function _1t(t,e,n,i,o,a){let s,l,r;n?(s=0,l=t.length,r=1):(s=t.length-1,l=-1,r=-1);for(let d=s;d!==l;d+=r){let m=t[d],h=e[d];if(!_ot(h,m))continue;let u;switch(i){case mi.WEST:u=m.westIndicesSouthToNorth;break;case mi.SOUTH:u=m.southIndicesEastToWest;break;case mi.EAST:u=m.eastIndicesNorthToSouth;break;case mi.NORTH:u=m.northIndicesWestToEast;break}let R=u[n?0:u.length-1];if(c(R))return m.encoding.decodeHeight(m.vertices,R)}}function _ot(t,e){return c(e)&&(!c(t.data.fill)||!t.data.fill.changedThisFrame)}function D1t(t,e,n,i,o,a,s,l){let r,d,m,h,u,R=i[o?0:n.length-1],V=n[o?0:n.length-1];if(_ot(R,V)&&(a===0?s===0?(r=o?V.northIndicesWestToEast:V.eastIndicesNorthToSouth,d=o,m=o):(r=o?V.eastIndicesNorthToSouth:V.southIndicesEastToWest,d=!o,m=!1):s===0?(r=o?V.westIndicesSouthToNorth:V.northIndicesWestToEast,d=!o,m=!0):(r=o?V.southIndicesEastToWest:V.westIndicesSouthToNorth,d=o,m=!o),r.length>0)){h=o?0:r.length-1,u=r[h],V.encoding.decodeTextureCoordinates(V.vertices,u,np);let F=jM(R,t.tile,np,np);if(F.x===a&&F.y===s)return Lot(V,u,a,s,l),!0;if(h=Ja(r,d?a:s,function(U,G){V.encoding.decodeTextureCoordinates(V.vertices,U,np);let A=jM(R,t.tile,np,np);return m?d?A.x-a:A.y-s:d?a-A.x:s-A.y}),h<0){if(h=~h,h>0&&h<r.length)return $Ee(e,R,t.tile,V,r[h-1],r[h],a,s,d,l),!0}else return Lot(V,r[h],a,s,l),!0}return!1}var eCe=[new p,new p,new p,new p];function nCe(t,e,n,i,o,a){let s=t.quadtree._occluders.ellipsoid,l=s.ellipsoid,r=eCe;return p.fromRadians(n.west,n.south,o,l,r[0]),p.fromRadians(n.east,n.south,o,l,r[1]),p.fromRadians(n.west,n.north,o,l,r[2]),p.fromRadians(n.east,n.north,o,l,r[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(e,r,i,a)}var B1=y1;function As(t){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Vi.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=t.terrainProvider,this._imageryLayers=t.imageryLayers,this._surfaceShaderSet=t.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new It,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(As.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(As.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(As.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(As.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new It,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new v(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=Gt.clone(Gt.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(As.prototype,{baseColor:{get:function(){return this._baseColor},set:function(t){this._baseColor=t,this._firstPassInitialColor=bt.fromColor(t,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(t){this._quadtree=t}},tilingScheme:{get:function(){if(c(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(t){this._terrainProvider!==t&&(this._terrainProvider=t,c(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){Ml.setOwner(t,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(t){bu.setOwner(t,this,"_clippingPolygons")}}});function iCe(t,e){let n=t.loadingImagery;c(n)||(n=t.readyImagery);let i=e.loadingImagery;return c(i)||(i=e.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}As.prototype.update=function(t){this._imageryLayers._update()};function oCe(t,e){let n=e.creditDisplay,i=t._terrainProvider;c(i)&&c(i.credit)&&n.addCreditToNextFrame(i.credit);let o=t._imageryLayers;for(let a=0,s=o.length;a<s;++a){let l=o.get(a);l.ready&&l.show&&c(l.imageryProvider.credit)&&n.addCreditToNextFrame(l.imageryProvider.credit)}}As.prototype.initialize=function(t){this._imageryLayers.queueReprojectionCommands(t),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(iCe)})),oCe(this,t);let e=this._vertexArraysToDestroy,n=e.length;for(let i=0;i<n;++i)SV._freeVertexArray(e[i]);e.length=0};As.prototype.beginUpdate=function(t){let e=this._tilesToRenderByTextureCount;for(let o=0,a=e.length;o<a;++o){let s=e[o];c(s)&&(s.length=0)}let n=this._clippingPlanes;c(n)&&n.enabled&&n.update(t);let i=this._clippingPolygons;c(i)&&i.enabled&&(i.update(t),i.queueCommands(t)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};As.prototype.endUpdate=function(t){if(!c(this._renderState)){this._renderState=he.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:_d.LESS}}),this._blendRenderState=he.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:_d.LESS_OR_EQUAL},blending:Pn.ALPHA_BLEND});let s=Re(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=he.fromCache(s),s=Re(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=he.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&B1.updateFillTiles(this,this._quadtree._tilesToRender,t,this._vertexArraysToDestroy);let e=this.quadtree,n=t.verticalExaggeration,i=t.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&e.forEachLoadedTile(function(s){s.data.updateExaggeration(s,t,e)});let a=this._tilesToRenderByTextureCount;for(let s=0,l=a.length;s<l;++s){let r=a[s];if(c(r))for(let d=0,m=r.length;d<m;++d){let h=r[d],u=h.data.tileBoundingRegion;ECe(this,h,t),t.minimumTerrainHeight=Math.min(t.minimumTerrainHeight,u.minimumHeight)}}};function z1t(t,e){let n=e.globeTranslucencyState;if(n.translucent){let i=t.renderState.blending.enabled;n.pushDerivedCommands(t,i,e)}else e.commandList.push(t)}As.prototype.updateForPick=function(t){let e=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)z1t(e[n],t)};As.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};As.prototype.getLevelMaximumGeometricError=function(t){return c(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(t):0};As.prototype.loadTile=function(t,e){let n=e.data,i=!0,o;c(n)&&(i=n.boundingVolumeSourceTile!==e||e._lastSelectionResult===Pi.CULLED_BUT_NEEDED,o=n.terrainState),SV.processStateMachine(e,t,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=e.data,i&&o!==e.data.terrainState&&this.computeTileVisibility(e,t,this.quadtree.occluders)!==Ys.NONE&&n.boundingVolumeSourceTile===e&&(i=!1,SV.processStateMachine(e,t,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var aCe=new Ft,j1t=new Gt,sCe=new Gt,lCe=new gt;function yz(t,e){if(e.west<e.east)return e;let n=Gt.clone(e,sCe);return Gt.center(t,lCe).longitude>0?n.east=k.PI:n.west=-k.PI,n}function q1t(t,e){if(e.cameraUnderground||e.globeTranslucencyState.translucent)return!0;if(t.backFaceCulling)return!1;let n=t._clippingPlanes;if(c(n)&&n.enabled)return!0;let i=t._clippingPolygons;return!!(c(i)&&i.enabled||!Gt.equals(t.cartographicLimitRectangle,Gt.MAX_VALUE))}As.prototype.computeTileVisibility=function(t,e,n){let i=this.computeDistanceToTile(t,e);t._distance=i;let o=q1t(this,e);if(e.fog.enabled&&!o&&k.fog(i,e.fog.density)>=1)return Ys.NONE;let a=t.data,s=a.tileBoundingRegion;if(a.boundingVolumeSourceTile===void 0)return Ys.PARTIAL;let l=e.cullingVolume,r=s.boundingVolume;c(r)||(r=s.boundingSphere),a.clippedByBoundaries=!1;let d=yz(t.rectangle,this.cartographicLimitRectangle),m=Gt.simpleIntersection(d,t.rectangle,j1t);if(!c(m))return Ys.NONE;if(Gt.equals(m,t.rectangle)||(a.clippedByBoundaries=!0),e.mode!==Vt.SCENE3D&&(r=aCe,Ft.fromRectangleWithHeights2D(t.rectangle,e.mapProjection,s.minimumHeight,s.maximumHeight,r),p.fromElements(r.center.z,r.center.x,r.center.y,r.center),e.mode===Vt.MORPHING&&c(a.renderedMesh)&&(r=Ft.union(s.boundingSphere,r,r))),!c(r))return Ys.PARTIAL;let h=this._clippingPlanes;if(c(h)&&h.enabled){let U=h.computeIntersectionWithBoundingVolume(r);if(t.isClipped=U!==yn.INSIDE,U===yn.OUTSIDE)return Ys.NONE}let u=this._clippingPolygons;if(c(u)&&u.enabled){let U=u.computeIntersectionWithBoundingVolume(s);t.isClipped=U!==yn.OUTSIDE}let R,V=l.computeVisibility(r);if(V===yn.OUTSIDE?R=Ys.NONE:V===yn.INTERSECTING?R=Ys.PARTIAL:V===yn.INSIDE&&(R=Ys.FULL),R===Ys.NONE)return R;let F=e.mode===Vt.SCENE3D&&e.camera.frustum instanceof wn;if(e.mode===Vt.SCENE3D&&!F&&c(n)&&!o){let U=a.occludeePointInScaledSpace;return!c(U)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(U,s.minimumHeight)?R:Ys.NONE}return R};As.prototype.canRefine=function(t){return c(t.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(t.x*2,t.y*2,t.level+1)!==void 0};var rCe=[],dCe=[];As.prototype.canRenderWithoutLosingDetail=function(t,e){let n=t.data,i=rCe;i.length=this._imageryLayers.length;let o=!1,a=!1,s;c(n)&&(o=n.terrainState===Ga.READY,a=!0,s=n.imagery);let l,r;for(l=0,r=i.length;l<r;++l)i[l]=a;if(c(s))for(l=0,r=s.length;l<r;++l){let h=s[l],u=h.loadingImagery,R=!c(u)||u.state===ho.FAILED||u.state===ho.INVALID,V=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[V]=R&&i[V]}let d=this.quadtree._lastSelectionFrameNumber,m=dCe;for(m.length=0,m.push(t.southwestChild,t.southeastChild,t.northwestChild,t.northeastChild);m.length>0;){let h=m.pop(),u=h._lastSelectionResultFrame===d?h._lastSelectionResult:Pi.NONE;if(u===Pi.RENDERED){let R=h.data;if(!c(R))continue;if(!o&&h.data.terrainState===Ga.READY)return!1;let V=h.data.imagery;for(l=0,r=V.length;l<r;++l){let F=V[l],U=F.loadingImagery,G=!c(U)||U.state===ho.FAILED||U.state===ho.INVALID,A=(F.loadingImagery||F.readyImagery).imageryLayer._layerIndex;if(G&&!i[A])return!1}}else u===Pi.REFINED&&m.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var cCe=new p;As.prototype.computeTileLoadPriority=function(t,e){let n=t.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=e.camera.positionWC,a=e.camera.directionWC,s=p.subtract(i.center,o,cCe),l=p.magnitude(s);return l<k.EPSILON5?0:(p.divideByScalar(s,l,s),(1-p.dot(s,a))*t._distance)};var w1t=new L,Nz=new L,mCe=new bt,hCe=new bt,pCe=new bt,VCe=new p,P1t=new p,uCe=new p,ZCe=new p;As.prototype.showTileThisFrame=function(t,e){let n=0,i=t.data.imagery;for(let l=0,r=i.length;l<r;++l){let d=i[l];c(d.readyImagery)&&d.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];c(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(t);let a=t.data;c(a.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var RCe=[new p,new p,new p,new p];function v1t(t,e,n,i,o,a){let s=t.quadtree._occluders.ellipsoid,l=s.ellipsoid,r=RCe;return p.fromRadians(n.west,n.south,o,l,r[0]),p.fromRadians(n.east,n.south,o,l,r[1]),p.fromRadians(n.west,n.north,o,l,r[2]),p.fromRadians(n.east,n.north,o,l,r[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(e,r,i,a)}As.prototype.computeDistanceToTile=function(t,e){bCe(t,this,e);let n=t.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,a=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==t){let r=e.camera.positionCartographic.height,d=Math.abs(r-a),m=Math.abs(r-s);d>m?(o.minimumHeight=a,o.maximumHeight=a):(o.minimumHeight=s,o.maximumHeight=s)}let l=o.distanceToCamera(e);return o.minimumHeight=a,o.maximumHeight=s,l};function bCe(t,e,n){let i=t.data;i===void 0&&(i=t.data=new SV);let o=t.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new eV({computeBoundingVolumes:!1,rectangle:t.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let a=i.tileBoundingRegion,s=a.minimumHeight,l=a.maximumHeight,r=!1,d=t,m=i.mesh,h=i.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0)a.minimumHeight=m.minimumHeight,a.maximumHeight=m.maximumHeight,r=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)a.minimumHeight=h._minimumHeight,a.maximumHeight=h._maximumHeight;else{a.minimumHeight=Number.NaN,a.maximumHeight=Number.NaN;let u=t.parent;for(;u!==void 0;){let R=u.data;if(R!==void 0){let V=R.mesh,F=R.terrainData;if(V!==void 0&&V.minimumHeight!==void 0&&V.maximumHeight!==void 0){a.minimumHeight=V.minimumHeight,a.maximumHeight=V.maximumHeight;break}else if(F!==void 0&&F._minimumHeight!==void 0&&F._maximumHeight!==void 0){a.minimumHeight=F._minimumHeight,a.maximumHeight=F._maximumHeight;break}}u=u.parent}d=u}if(d!==void 0){let u=n.verticalExaggeration,R=n.verticalExaggerationRelativeHeight;if(u!==1&&(r=!1,a.minimumHeight=Ps.getHeight(a.minimumHeight,u,R),a.maximumHeight=Ps.getHeight(a.maximumHeight,u,R)),r)i.boundingVolumeIsFromMesh||(a._orientedBoundingBox=ci.clone(m.orientedBoundingBox,a._orientedBoundingBox),a._boundingSphere=Ft.clone(m.boundingSphere3D,a._boundingSphere),i.occludeePointInScaledSpace=p.clone(m.occludeePointInScaledSpace,i.occludeePointInScaledSpace),c(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=v1t(e,a._orientedBoundingBox.center,t.rectangle,a.minimumHeight,a.maximumHeight,i.occludeePointInScaledSpace)));else{let F=a._orientedBoundingBox===void 0||a._boundingSphere===void 0;(a.minimumHeight!==s||a.maximumHeight!==l||F)&&(a.computeBoundingVolumes(o),i.occludeePointInScaledSpace=v1t(e,a._orientedBoundingBox.center,t.rectangle,a.minimumHeight,a.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=d,i.boundingVolumeIsFromMesh=r}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}As.prototype.isDestroyed=function(){return!1};As.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),At(this)};function WCe(t,e,n){return function(i){let o,a,s=-1,l=i.data.imagery,r=l.length,d;for(d=0;d<r;++d)if(o=l[d],a=f(o.readyImagery,o.loadingImagery),a.imageryLayer===e){s=d;break}if(s!==-1){let m=s+t;if(o=l[m],a=c(o)?f(o.readyImagery,o.loadingImagery):void 0,!c(a)||a.imageryLayer!==e)return!e._createTileImagerySkeletons(i,n,m);for(d=s;d<m;++d)l[d].freeResources();l.splice(s,t)}return!0}}As.prototype._onLayerAdded=function(t,e){if(!this.isDestroyed()&&t.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,a=function(){t._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(c(s._loadedCallbacks[t._layerIndex]))return;let l,r=s.data.imagery,d=r.length,m=-1,h=0;for(l=0;l<d;++l){let R=r[l];if(f(R.readyImagery,R.loadingImagery).imageryLayer===t)m===-1&&(m=l),++h;else if(m!==-1)break}if(m===-1)return;let u=m+h;t._createTileImagerySkeletons(s,n,u)&&(s._loadedCallbacks[t._layerIndex]=WCe(h,t,n),s.state=Br.LOADING)})};if(t.ready){let s=t.imageryProvider;s._reload=a}this._quadtree.forEachLoadedTile(function(s){t._createTileImagerySkeletons(s,n)&&(s.state=Br.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==Pi.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};As.prototype._onLayerRemoved=function(t,e){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,a=0;for(let s=0,l=i.length;s<l;++s){let r=i[s],d=r.loadingImagery;if(c(d)||(d=r.readyImagery),d.imageryLayer===t)o===-1&&(o=s),r.freeResources(),++a;else if(o!==-1)break}o!==-1&&i.splice(o,a)}),c(t.imageryProvider)&&(t.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};As.prototype._onLayerMoved=function(t,e,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};As.prototype._onLayerShownOrHidden=function(t,e,n){n?this._onLayerAdded(t,e):this._onLayerRemoved(t,e)};var fCe=new L,FCe=new L;function K1t(t,e){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=t.context.uniformState.view,o=L.multiplyByPoint(i,this.properties.rtc,P1t);return L.setTranslation(i,o,w1t),w1t},u_modifiedModelViewProjection:function(){let i=t.context.uniformState.view,o=t.context.uniformState.projection,a=L.multiplyByPoint(i,this.properties.rtc,P1t);return L.setTranslation(i,a,Nz),L.multiply(o,Nz,Nz),Nz},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=e._clippingPlanes;return c(i)&&c(i.texture)?i.texture:t.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=e._clippingPlanes,o=c(i)?L.multiply(t.context.uniformState.view,i.modelMatrix,fCe):L.IDENTITY;return L.inverseTranspose(o,FCe)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=e._clippingPolygons.clippingTexture;return c(i)?i:t.context.defaultTexture},u_clippingExtents:function(){let i=e._clippingPolygons.extentsTexture;return c(i)?i:t.context.defaultTexture},u_minimumBrightness:function(){return t.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new bt(0,0,.5,1),fillHighlightColor:new v(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new K(65e5,9e6),nightFadeDistance:new K(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new p(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new p(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new p,center3D:void 0,rtc:new p,modifiedModelView:new L,tileRectangle:new bt,verticalExaggerationAndRelativeHeight:new K(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new K,southMercatorYAndOneOverHeight:new K,waterMask:void 0,waterMaskTranslationAndScale:new bt,minMaxHeight:new K,scaleAndBias:new L,clippingPlanesEdgeColor:v.clone(v.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new bt,frontFaceAlphaByDistance:new bt,backFaceAlphaByDistance:new bt,localizedTranslucencyRectangle:new bt,undergroundColor:v.clone(v.TRANSPARENT),undergroundColorAlphaByDistance:new bt,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return c(e.materialUniformMap)?ze(n,e.materialUniformMap):n}function UCe(t,e,n){let i=n.data,o,a;if(c(i.vertexArray)?(o=i.mesh,a=i.vertexArray):c(i.fill)&&c(i.fill.vertexArray)&&(o=i.fill.mesh,a=i.fill.vertexArray),!(!c(o)||!c(a))){if(c(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=GCe(t,a,o),i.wireframeVertexArray.mesh=o}}function GCe(t,e,n){let o={indices:n.indices,primitiveType:le.TRIANGLES};gi.toWireframe(o);let a=o.indices,s=we.createIndexBuffer({context:t,typedArray:a,usage:ce.STATIC_DRAW,indexDatatype:re.fromSizeInBytes(a.BYTES_PER_ELEMENT)});return new Ki({context:t,attributes:e._attributes,indexBuffer:s})}var $1t,tNt,Bz;(function(){let t=new $e({geometry:tu.fromDimensions({dimensions:new p(2,2,2)})}),e=new $e({geometry:new g0({radius:1})}),n=new L,i,o;function a(s){return new Wi({geometryInstances:s,appearance:new jn({translucent:!1,flat:!0}),asynchronous:!1})}$1t=function(s,l){return s===i||(Bz(),i=s,n=L.fromRotationTranslation(s.halfAxes,s.center,n),t.modelMatrix=n,t.attributes.color=En.fromColor(l),o=a(t)),o},tNt=function(s,l){return s===i||(Bz(),i=s,n=L.fromTranslation(s.center,n),n=L.multiplyByUniformScale(n,s.radius,n),e.modelMatrix=n,e.attributes.color=En.fromColor(l),o=a(e)),o},Bz=function(){c(o)&&(o.destroy(),o=void 0,i=void 0)}})();var ACe=new bt(0,0,0,0),SCe={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},TCe=v.TRANSPARENT,gCe=new ln;function ECe(t,e,n){let i=e.data;c(i.vertexArray)||(i.fill===void 0&&(i.fill=new B1(e)),i.fill.update(t,n));let o=n.creditDisplay,a=i.terrainData;if(c(a)&&c(a.credits)){let Ct=a.credits;for(let _t=0,Je=Ct.length;_t<Je;++_t)o.addCreditToNextFrame(Ct[_t])}let s=Tn.maximumTextureImageUnits,l=i.waterMaskTexture,r=i.waterMaskTranslationAndScale;!c(l)&&c(i.fill)&&(l=i.fill.waterMaskTexture,r=i.fill.waterMaskTranslationAndScale);let d=n.cameraUnderground,m=n.globeTranslucencyState,h=m.translucent,u=m.frontFaceAlphaByDistance,R=m.backFaceAlphaByDistance,V=m.rectangle,F=f(t.undergroundColor,TCe),U=f(t.undergroundColorAlphaByDistance,gCe),G=q1t(t,n)&&n.mode===Vt.SCENE3D&&F.alpha>0&&(U.nearValue>0||U.farValue>0),A=t.lambertDiffuseMultiplier,S=t.vertexShadowDarkness,g=t.hasWaterMask&&c(l),C=t.oceanNormalMap,y=g&&c(C),Y=t.terrainProvider,Q=c(Y)&&t.terrainProvider.hasVertexNormals,J=n.fog.enabled&&n.fog.renderable&&!d,M=t.showGroundAtmosphere&&n.mode===Vt.SCENE3D,Z=Vi.castShadows(t.shadows)&&!h,E=Vi.receiveShadows(t.shadows)&&!h,I=t.hueShift,B=t.saturationShift,X=t.brightnessShift,_=!(k.equalsEpsilon(I,0,k.EPSILON7)&&k.equalsEpsilon(B,0,k.EPSILON7)&&k.equalsEpsilon(X,0,k.EPSILON7)),P=!1;if(M){let Ct=p.magnitude(n.camera.positionWC),_t=t.nightFadeOutDistance;P=Ct>_t}g&&--s,y&&--s,c(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,c(t.clippingPlanes)&&t.clippingPlanes.enabled&&--s,c(t.clippingPolygons)&&t.clippingPolygons.enabled&&(--s,--s),s-=m.numberOfTextureUniforms;let w=i.renderedMesh,z=w.center,H=w.encoding,nt=i.tileBoundingRegion,$=n.verticalExaggeration,dt=n.verticalExaggerationRelativeHeight,q=$!==1,at=H.hasGeodeticSurfaceNormals,st=mCe,Et=0,Qt=0,Wt=0,Nt=0,kt=!1;if(n.mode!==Vt.SCENE3D){let Ct=n.mapProjection,_t=Ct.project(Gt.southwest(e.rectangle),uCe),Je=Ct.project(Gt.northeast(e.rectangle),ZCe);if(st.x=_t.x,st.y=_t.y,st.z=Je.x,st.w=Je.y,n.mode!==Vt.MORPHING&&(z=VCe,z.x=0,z.y=(st.z+st.x)*.5,z.z=(st.w+st.y)*.5,st.x-=z.y,st.y-=z.z,st.z-=z.y,st.w-=z.z),n.mode===Vt.SCENE2D&&H.quantization===yr.BITS12){let xe=1/(Math.pow(2,12)-1)*.5,oo=(st.z-st.x)*xe,ea=(st.w-st.y)*xe;st.x-=oo,st.y-=ea,st.z+=oo,st.w+=ea}Ct instanceof Yo&&(Et=e.rectangle.south,Qt=e.rectangle.north,Wt=Yo.geodeticLatitudeToMercatorAngle(Et),Nt=1/(Yo.geodeticLatitudeToMercatorAngle(Qt)-Wt),kt=!0)}let Mt=SCe;Mt.frameState=n,Mt.surfaceTile=i,Mt.showReflectiveOcean=g,Mt.showOceanWaves=y,Mt.enableLighting=t.enableLighting,Mt.dynamicAtmosphereLighting=t.dynamicAtmosphereLighting,Mt.dynamicAtmosphereLightingFromSun=t.dynamicAtmosphereLightingFromSun,Mt.showGroundAtmosphere=M,Mt.atmosphereLightIntensity=t.atmosphereLightIntensity,Mt.atmosphereRayleighCoefficient=t.atmosphereRayleighCoefficient,Mt.atmosphereMieCoefficient=t.atmosphereMieCoefficient,Mt.atmosphereRayleighScaleHeight=t.atmosphereRayleighScaleHeight,Mt.atmosphereMieScaleHeight=t.atmosphereMieScaleHeight,Mt.atmosphereMieAnisotropy=t.atmosphereMieAnisotropy,Mt.perFragmentGroundAtmosphere=P,Mt.hasVertexNormals=Q,Mt.useWebMercatorProjection=kt,Mt.clippedByBoundaries=i.clippedByBoundaries,Mt.hasGeodeticSurfaceNormals=at,Mt.hasExaggeration=q;let qt=i.imagery,ie=0,oe=qt.length,He=t.showSkirts&&!d&&!h,rn=t.backFaceCulling&&!d&&!h,de=rn?t._renderState:t._disableCullingRenderState,zt=rn?t._blendRenderState:t._disableCullingBlendRenderState,ke=de,Ve=t._firstPassInitialColor,We=n.context;if(c(t._debug.boundingSphereTile)||Bz(),t._materialUniformMap!==t.materialUniformMap){t._materialUniformMap=t.materialUniformMap;let Ct=t._drawCommands.length;for(let _t=0;_t<Ct;++_t)t._uniformMaps[_t]=K1t(n,t)}do{let Ct=0,_t,Je;if(t._drawCommands.length<=t._usedDrawCommands?(_t=new Ee,_t.owner=e,_t.cull=!1,_t.boundingVolume=new Ft,_t.orientedBoundingBox=void 0,Je=K1t(n,t),t._drawCommands.push(_t),t._uniformMaps.push(Je)):(_t=t._drawCommands[t._usedDrawCommands],Je=t._uniformMaps[t._usedDrawCommands]),_t.owner=e,++t._usedDrawCommands,e===t._debug.boundingSphereTile){let zi=nt.boundingVolume,js=nt.boundingSphere;c(zi)?$1t(zi,v.RED).update(n):c(js)&&tNt(js,v.RED).update(n)}let xe=Je.properties;bt.clone(Ve,xe.initialColor),xe.oceanNormalMap=C,xe.lightingFadeDistance.x=t.lightingFadeOutDistance,xe.lightingFadeDistance.y=t.lightingFadeInDistance,xe.nightFadeDistance.x=t.nightFadeOutDistance,xe.nightFadeDistance.y=t.nightFadeInDistance,xe.atmosphereLightIntensity=t.atmosphereLightIntensity,xe.atmosphereRayleighCoefficient=t.atmosphereRayleighCoefficient,xe.atmosphereMieCoefficient=t.atmosphereMieCoefficient,xe.atmosphereRayleighScaleHeight=t.atmosphereRayleighScaleHeight,xe.atmosphereMieScaleHeight=t.atmosphereMieScaleHeight,xe.atmosphereMieAnisotropy=t.atmosphereMieAnisotropy,xe.zoomedOutOceanSpecularIntensity=t.zoomedOutOceanSpecularIntensity;let oo=d?R:u,ea=d?u:R;c(oo)&&(bt.fromElements(oo.near,oo.nearValue,oo.far,oo.farValue,xe.frontFaceAlphaByDistance),bt.fromElements(ea.near,ea.nearValue,ea.far,ea.farValue,xe.backFaceAlphaByDistance)),bt.fromElements(U.near,U.nearValue,U.far,U.farValue,xe.undergroundColorAlphaByDistance),v.clone(F,xe.undergroundColor),xe.lambertDiffuseMultiplier=A,xe.vertexShadowDarkness=S;let gs=!c(i.vertexArray)&&c(t.fillHighlightColor)&&t.fillHighlightColor.alpha>0;gs&&v.clone(t.fillHighlightColor,xe.fillHighlightColor),xe.verticalExaggerationAndRelativeHeight.x=$,xe.verticalExaggerationAndRelativeHeight.y=dt,xe.center3D=w.center,p.clone(z,xe.rtc),bt.clone(st,xe.tileRectangle),xe.southAndNorthLatitude.x=Et,xe.southAndNorthLatitude.y=Qt,xe.southMercatorYAndOneOverHeight.x=Wt,xe.southMercatorYAndOneOverHeight.y=Nt;let is=hCe,ja=yz(e.rectangle,t.cartographicLimitRectangle),qn=pCe,ae=yz(e.rectangle,V);p.fromElements(I,B,X,xe.hsbShift);let fe=e.rectangle,ge=1/fe.width,ue=1/fe.height;is.x=(ja.west-fe.west)*ge,is.y=(ja.south-fe.south)*ue,is.z=(ja.east-fe.west)*ge,is.w=(ja.north-fe.south)*ue,bt.clone(is,xe.localizedCartographicLimitRectangle),qn.x=(ae.west-fe.west)*ge,qn.y=(ae.south-fe.south)*ue,qn.z=(ae.east-fe.west)*ge,qn.w=(ae.north-fe.south)*ue,bt.clone(qn,xe.localizedTranslucencyRectangle);let Ke=J&&k.fog(e._distance,n.fog.density)>k.EPSILON3;_=_&&(Ke||M);let An=!1,si=!1,da=!1,_a=!1,Rl=!1,na=!1,Go=!1,Ao=!1,Xs=!1,Es=!1;for(;Ct<s&&ie<oe;){let zi=qt[ie],js=zi.readyImagery;if(++ie,!c(js)||js.imageryLayer.alpha===0)continue;let ca=zi.useWebMercatorT?js.textureWebMercator:js.texture,$n=js.imageryLayer;c(zi.textureTranslationAndScale)||(zi.textureTranslationAndScale=$n._calculateTextureTranslationAndScale(e,zi)),xe.dayTextures[Ct]=ca,xe.dayTextureTranslationAndScale[Ct]=zi.textureTranslationAndScale,xe.dayTextureTexCoordsRectangle[Ct]=zi.textureCoordinateRectangle,xe.dayTextureUseWebMercatorT[Ct]=zi.useWebMercatorT,xe.dayTextureAlpha[Ct]=$n.alpha,na=na||xe.dayTextureAlpha[Ct]!==1,xe.dayTextureNightAlpha[Ct]=$n.nightAlpha,Go=Go||xe.dayTextureNightAlpha[Ct]!==1,xe.dayTextureDayAlpha[Ct]=$n.dayAlpha,Go=Go||xe.dayTextureDayAlpha[Ct]!==1,xe.dayTextureBrightness[Ct]=$n.brightness,An=An||xe.dayTextureBrightness[Ct]!==$r.DEFAULT_BRIGHTNESS,xe.dayTextureContrast[Ct]=$n.contrast,si=si||xe.dayTextureContrast[Ct]!==$r.DEFAULT_CONTRAST,xe.dayTextureHue[Ct]=$n.hue,da=da||xe.dayTextureHue[Ct]!==$r.DEFAULT_HUE,xe.dayTextureSaturation[Ct]=$n.saturation,_a=_a||xe.dayTextureSaturation[Ct]!==$r.DEFAULT_SATURATION,xe.dayTextureOneOverGamma[Ct]=1/$n.gamma,Rl=Rl||xe.dayTextureOneOverGamma[Ct]!==1/$r.DEFAULT_GAMMA,xe.dayTextureSplit[Ct]=$n.splitDirection,Ao=Ao||xe.dayTextureSplit[Ct]!==0;let mr=xe.dayTextureCutoutRectangles[Ct];if(c(mr)||(mr=xe.dayTextureCutoutRectangles[Ct]=new bt),bt.clone(bt.ZERO,mr),c($n.cutoutRectangle)){let hs=yz(fe,$n.cutoutRectangle),ma=Gt.simpleIntersection(hs,fe,j1t);Xs=c(ma)||Xs,mr.x=(hs.west-fe.west)*ge,mr.y=(hs.south-fe.south)*ue,mr.z=(hs.east-fe.west)*ge,mr.w=(hs.north-fe.south)*ue}let hr=xe.colorsToAlpha[Ct];c(hr)||(hr=xe.colorsToAlpha[Ct]=new bt);let pr=c($n.colorToAlpha)&&$n.colorToAlphaThreshold>0;if(Es=Es||pr,pr){let hs=$n.colorToAlpha;hr.x=hs.red,hr.y=hs.green,hr.z=hs.blue,hr.w=$n.colorToAlphaThreshold}else hr.w=-1;if(c(js.credits)){let hs=js.credits;for(let ma=0,Ed=hs.length;ma<Ed;++ma)o.addCreditToNextFrame(hs[ma])}++Ct}xe.dayTextures.length=Ct,xe.waterMask=l,bt.clone(r,xe.waterMaskTranslationAndScale),xe.minMaxHeight.x=H.minimumHeight,xe.minMaxHeight.y=H.maximumHeight,L.clone(H.matrix,xe.scaleAndBias);let wl=t._clippingPlanes,ka=c(wl)&&wl.enabled&&e.isClipped;ka&&(xe.clippingPlanesEdgeColor=v.clone(wl.edgeColor,xe.clippingPlanesEdgeColor),xe.clippingPlanesEdgeWidth=wl.edgeWidth);let Wa=t._clippingPolygons,JV=c(Wa)&&Wa.enabled&&e.isClipped;Mt.numberOfDayTextures=Ct,Mt.applyBrightness=An,Mt.applyContrast=si,Mt.applyHue=da,Mt.applySaturation=_a,Mt.applyGamma=Rl,Mt.applyAlpha=na,Mt.applyDayNightAlpha=Go,Mt.applySplit=Ao,Mt.enableFog=Ke,Mt.enableClippingPlanes=ka,Mt.clippingPlanes=wl,Mt.enableClippingPolygons=JV,Mt.clippingPolygons=Wa,Mt.hasImageryLayerCutout=Xs,Mt.colorCorrect=_,Mt.highlightFillTile=gs,Mt.colorToAlpha=Es,Mt.showUndergroundColor=G,Mt.translucent=h;let yl=i.renderedMesh.indices.length;He||(yl=i.renderedMesh.indexCountWithoutSkirts),_t.shaderProgram=t._surfaceShaderSet.getShaderProgram(Mt),_t.castShadows=Z,_t.receiveShadows=E,_t.renderState=ke,_t.primitiveType=le.TRIANGLES,_t.vertexArray=i.vertexArray||i.fill.vertexArray,_t.count=yl,_t.uniformMap=Je,_t.pass=Pt.GLOBE,t._debug.wireframe&&(UCe(We,t,e),c(i.wireframeVertexArray)&&(_t.vertexArray=i.wireframeVertexArray,_t.primitiveType=le.LINES,_t.count=yl*2));let Bi=_t.boundingVolume,sd=_t.orientedBoundingBox;n.mode!==Vt.SCENE3D?(Ft.fromRectangleWithHeights2D(e.rectangle,n.mapProjection,nt.minimumHeight,nt.maximumHeight,Bi),p.fromElements(Bi.center.z,Bi.center.x,Bi.center.y,Bi.center),n.mode===Vt.MORPHING&&(Bi=Ft.union(nt.boundingSphere,Bi,Bi))):(_t.boundingVolume=Ft.clone(nt.boundingSphere,Bi),_t.orientedBoundingBox=ci.clone(nt.boundingVolume,sd)),_t.dirty=!0,h&&m.updateDerivedCommands(_t,n),z1t(_t,n),ke=zt,Ve=ACe}while(ie<oe)}var qM=As;var KFo=b(W(),1);function eNt(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=Gt.clone(Gt.MAX_VALUE)}Object.defineProperties(eNt.prototype,{enabled:{get:function(){return this._enabled},set:function(t){this._enabled=t}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(t){this._frontFaceAlpha=t}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(t){this._frontFaceAlphaByDistance=ln.clone(t,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(t){this._backFaceAlpha=t}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(t){this._backFaceAlphaByDistance=ln.clone(t,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(t){c(t)||(t=Gt.clone(Gt.MAX_VALUE)),Gt.clone(t,this._rectangle)}}});var $M=eNt;var oUo=b(W(),1);function dr(){this._layers=[],this.layerAdded=new It,this.layerRemoved=new It,this.layerMoved=new It,this.layerShownOrHidden=new It}Object.defineProperties(dr.prototype,{length:{get:function(){return this._layers.length}}});dr.prototype.add=function(t,e){c(e)?this._layers.splice(e,0,t):(e=this._layers.length,this._layers.push(t)),this._update(),this.layerAdded.raiseEvent(t,e);let i=t.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(t,t._layerIndex,t.show),i()})};dr.prototype.addImageryProvider=function(t,e){let n=new $r(t);return this.add(n,e),n};dr.prototype.remove=function(t,e){e=f(e,!0);let n=this._layers.indexOf(t);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(t,n),e&&t.destroy(),!0):!1};dr.prototype.removeAll=function(t){t=f(t,!0);let e=this._layers;for(let n=0,i=e.length;n<i;n++){let o=e[n];this.layerRemoved.raiseEvent(o,n),t&&o.destroy()}this._layers=[]};dr.prototype.contains=function(t){return this.indexOf(t)!==-1};dr.prototype.indexOf=function(t){return this._layers.indexOf(t)};dr.prototype.get=function(t){return this._layers[t]};function Qz(t,e){return t.indexOf(e)}function nNt(t,e,n){let i=t._layers;if(e=k.clamp(e,0,i.length-1),n=k.clamp(n,0,i.length-1),e===n)return;let o=i[e];i[e]=i[n],i[n]=o,t._update(),t.layerMoved.raiseEvent(o,n,e)}dr.prototype.raise=function(t){let e=Qz(this._layers,t);nNt(this,e,e+1)};dr.prototype.lower=function(t){let e=Qz(this._layers,t);nNt(this,e,e-1)};dr.prototype.raiseToTop=function(t){let e=Qz(this._layers,t);e!==this._layers.length-1&&(this._layers.splice(e,1),this._layers.push(t),this._update(),this.layerMoved.raiseEvent(t,this._layers.length-1,e))};dr.prototype.lowerToBottom=function(t){let e=Qz(this._layers,t);e!==0&&(this._layers.splice(e,1),this._layers.splice(0,0,t),this._update(),this.layerMoved.raiseEvent(t,0,e))};var CCe=new Gt;function iNt(t,e,n,i){let o=t.globe._surface._tilesToRender,a;for(let l=0;!c(a)&&l<o.length;++l){let r=o[l];Gt.contains(r.rectangle,e)&&(a=r)}if(!c(a))return;let s=a.data.imagery;for(let l=s.length-1;l>=0;--l){let r=s[l],d=r.readyImagery;if(!c(d)||!d.imageryLayer.ready)continue;let m=d.imageryLayer.imageryProvider;if(n&&!c(m.pickFeatures)||!Gt.contains(d.rectangle,e))continue;let h=CCe,u=1/1024;h.west=k.lerp(a.rectangle.west,a.rectangle.east,r.textureCoordinateRectangle.x-u),h.east=k.lerp(a.rectangle.west,a.rectangle.east,r.textureCoordinateRectangle.z+u),h.south=k.lerp(a.rectangle.south,a.rectangle.north,r.textureCoordinateRectangle.y-u),h.north=k.lerp(a.rectangle.south,a.rectangle.north,r.textureCoordinateRectangle.w+u),Gt.contains(h,e)&&i(d)}}dr.prototype.pickImageryLayers=function(t,e){let n=e.globe.pick(t,e);if(!c(n))return;let i=e.globe.ellipsoid.cartesianToCartographic(n),o=[];if(iNt(e,i,!1,function(a){o.push(a.imageryLayer)}),o.length!==0)return o};dr.prototype.pickImageryLayerFeatures=function(t,e){let n=e.globe.pick(t,e);if(!c(n))return;let i=e.globe.ellipsoid.cartesianToCartographic(n),o=[],a=[];if(iNt(e,i,!0,function(s){if(!s.imageryLayer.ready)return;let r=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);c(r)&&(o.push(r),a.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let l=[];for(let r=0;r<s.length;++r){let d=s[r],m=a[r];if(c(d)&&d.length>0)for(let h=0;h<d.length;++h){let u=d[h];u.imageryLayer=m,c(u.position)||(u.position=i),l.push(u)}}return l})};dr.prototype.queueReprojectionCommands=function(t){let e=this._layers;for(let n=0,i=e.length;n<i;++n)e[n].queueReprojectionCommands(t)};dr.prototype.cancelReprojections=function(){let t=this._layers;for(let e=0,n=t.length;e<n;++e)t[e].cancelReprojections()};dr.prototype.isDestroyed=function(){return!1};dr.prototype.destroy=function(){return this.removeAll(!0),At(this)};dr.prototype._update=function(){let t=!0,e=this._layers,n,i,o,a;for(o=0,a=e.length;o<a;++o)i=e[o],i._layerIndex=o,i.show?(i._isBaseLayer=t,t=!1):i._isBaseLayer=!1,i.show!==i._show&&(c(i._show)&&(c(n)||(n=[]),n.push(i)),i._show=i.show);if(c(n))for(o=0,a=n.length;o<a;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var t_=dr;var XUo=b(W(),1);var rUo=b(W(),1);function oNt(t){this._ellipsoid=new Bu(t.ellipsoid,p.ZERO)}Object.defineProperties(oNt.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var e_=oNt;var VUo=b(W(),1);function tm(t){this._tilingScheme=t.tilingScheme,this._x=t.x,this._y=t.y,this._level=t.level,this._parent=t.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=Pi.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this.state=Br.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}tm.createLevelZeroTiles=function(t){let e=t.getNumberOfXTilesAtLevel(0),n=t.getNumberOfYTilesAtLevel(0),i=new Array(e*n),o=0;for(let a=0;a<n;++a)for(let s=0;s<e;++s)i[o++]=new tm({tilingScheme:t,x:s,y:a,level:0});return i};tm.prototype._updateCustomData=function(t,e,n){let i=this.customData,o,a,s;if(c(e)&&c(n)){for(i=i.filter(function(l){return n.indexOf(l)===-1}),this._customData=i,s=this._rectangle,o=0;o<e.length;++o)a=e[o],Gt.contains(s,a.positionCartographic)&&i.push(a);this._frameUpdated=t}else{let l=this._parent;if(c(l)&&this._frameUpdated!==l._frameUpdated){i.length=0,s=this._rectangle;let r=l.customData;for(o=0;o<r.length;++o)a=r[o],Gt.contains(s,a.positionCartographic)&&i.push(a);this._frameUpdated=l._frameUpdated}}};Object.defineProperties(tm.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return c(this._southwestChild)||(this._southwestChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return c(this._southeastChild)||(this._southeastChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return c(this._northwestChild)||(this._northwestChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return c(this._northeastChild)||(this._northeastChild=new tm({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Br.DONE}},eligibleForUnloading:{get:function(){let t=!0;return c(this.data)&&(t=this.data.eligibleForUnloading,c(t)||(t=!0)),t}}});tm.prototype.findLevelZeroTile=function(t,e,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(e<0?e+=i:e>=i&&(e-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return t.filter(function(o){return o.x===e&&o.y===n})[0]};tm.prototype.findTileToWest=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x-1,this.y);if(e.southeastChild===this)return e.southwestChild;if(e.northeastChild===this)return e.northwestChild;let n=e.findTileToWest(t);if(n!==void 0)return e.southwestChild===this?n.southeastChild:n.northeastChild};tm.prototype.findTileToEast=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x+1,this.y);if(e.southwestChild===this)return e.southeastChild;if(e.northwestChild===this)return e.northeastChild;let n=e.findTileToEast(t);if(n!==void 0)return e.southeastChild===this?n.southwestChild:n.northwestChild};tm.prototype.findTileToSouth=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x,this.y+1);if(e.northwestChild===this)return e.southwestChild;if(e.northeastChild===this)return e.southeastChild;let n=e.findTileToSouth(t);if(n!==void 0)return e.southwestChild===this?n.northwestChild:n.northeastChild};tm.prototype.findTileToNorth=function(t){let e=this.parent;if(e===void 0)return this.findLevelZeroTile(t,this.x,this.y-1);if(e.southwestChild===this)return e.northwestChild;if(e.southeastChild===this)return e.northeastChild;let n=e.findTileToNorth(t);if(n!==void 0)return e.northwestChild===this?n.southwestChild:n.southeastChild};tm.prototype.freeResources=function(){this.state=Br.START,this.renderable=!1,this.upsampledFromParent=!1,c(this.data)&&c(this.data.freeResources)&&this.data.freeResources(),kz(this._southwestChild),this._southwestChild=void 0,kz(this._southeastChild),this._southeastChild=void 0,kz(this._northwestChild),this._northwestChild=void 0,kz(this._northeastChild),this._northeastChild=void 0};function kz(t){c(t)&&t.freeResources()}var n_=tm;var RUo=b(W(),1);function Yz(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}Yz.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};Yz.prototype.trimTiles=function(t){let e=this.tail,n=!0;for(;n&&c(this._lastBeforeStartOfFrame)&&this.count>t&&c(e);){n=e!==this._lastBeforeStartOfFrame;let i=e.replacementPrevious;e.eligibleForUnloading&&(e.freeResources(),aNt(this,e)),e=i}};function aNt(t,e){let n=e.replacementPrevious,i=e.replacementNext;e===t._lastBeforeStartOfFrame&&(t._lastBeforeStartOfFrame=i),e===t.head?t.head=i:n.replacementNext=i,e===t.tail?t.tail=n:i.replacementPrevious=n,e.replacementPrevious=void 0,e.replacementNext=void 0,--t.count}Yz.prototype.markTileRendered=function(t){let e=this.head;if(e===t){t===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=t.replacementNext);return}if(++this.count,!c(e)){t.replacementPrevious=void 0,t.replacementNext=void 0,this.head=t,this.tail=t;return}(c(t.replacementPrevious)||c(t.replacementNext))&&aNt(this,t),t.replacementPrevious=void 0,t.replacementNext=e,e.replacementPrevious=t,this.head=t};var i_=Yz;function gV(t){this._tileProvider=t.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new i_,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=f(t.maximumScreenSpaceError,2),this.tileCacheSize=f(t.tileCacheSize,100),this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new e_({ellipsoid:n}),this._tileLoadProgressEvent=new It,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(gV.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});gV.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function ICe(t){let e=t._tileReplacementQueue;e.head=void 0,e.tail=void 0,e.count=0,lNt(t);let n=t._levelZeroTiles;if(c(n))for(let i=0;i<n.length;++i){let a=n[i].customData,s=a.length;for(let l=0;l<s;++l){let r=a[l];r.level=0,t._addHeightCallbacks.push(r)}n[i].freeResources()}t._levelZeroTiles=void 0,t._tileProvider.cancelReprojections()}gV.prototype.forEachLoadedTile=function(t){let e=this._tileReplacementQueue.head;for(;c(e);)e.state!==Br.START&&t(e),e=e.replacementNext};gV.prototype.forEachRenderedTile=function(t){let e=this._tilesToRender;for(let n=0,i=e.length;n<i;++n)t(e[n])};gV.prototype.updateHeight=function(t,e){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:t,level:-1,callback:e};return i.removeFunc=function(){let o=n._addHeightCallbacks,a=o.length;for(let s=0;s<a;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};gV.prototype.update=function(t){c(this._tileProvider.update)&&this._tileProvider.update(t)};function lNt(t){let e=t._debug;e.maxDepth=0,e.maxDepthVisited=0,e.tilesVisited=0,e.tilesCulled=0,e.tilesRendered=0,e.tilesWaitingForChildren=0,t._tileLoadQueueHigh.length=0,t._tileLoadQueueMedium.length=0,t._tileLoadQueueLow.length=0}gV.prototype.beginFrame=function(t){t.passes.render&&(this._tilesInvalidated&&(ICe(this),this._tilesInvalidated=!1),this._tileProvider.initialize(t),lNt(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};gV.prototype.render=function(t){let e=t.passes,n=this._tileProvider;e.render&&(n.beginUpdate(t),QCe(this,t),OCe(this,t),n.endUpdate(t)),e.pick&&this._tilesToRender.length>0&&n.updateForPick(t)};function NCe(t,e){let n=t._tileLoadQueueHigh.length+t._tileLoadQueueMedium.length+t._tileLoadQueueLow.length;if(n!==t._lastTileLoadQueueLength||t._tilesInvalidated){let o=It.prototype.raiseEvent.bind(t._tileLoadProgressEvent,n);e.afterRender.push(()=>(o(),!0)),t._lastTileLoadQueueLength=n}let i=t._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=t._tilesToRender.reduce(function(o,a){return Math.max(o,a.level)},-1),i.tilesRendered=t._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}gV.prototype.endFrame=function(t){!t.passes.render||t.mode===Vt.MORPHING||(LCe(this,t),DCe(this,t),NCe(this,t))};gV.prototype.isDestroyed=function(){return!1};gV.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var a_,sNt=new gt;function yCe(t,e){let n=Gt.center(t.rectangle,sNt),i=n.longitude-a_.longitude,o=n.latitude-a_.latitude;n=Gt.center(e.rectangle,sNt);let a=n.longitude-a_.longitude,s=n.latitude-a_.latitude;return i*i+o*o-(a*a+s*s)}var BCe=new p,o_=[];function QCe(t,e){let n=t._debug;if(n.suspendLodUpdate)return;let i=t._tilesToRender;i.length=0;let o,a=t._tileProvider;if(!c(t._levelZeroTiles)){let F=a.tilingScheme;if(c(F)){let U=a.tilingScheme;t._levelZeroTiles=n_.createLevelZeroTiles(U);let G=t._levelZeroTiles.length;if(o_.length<G)for(o_=new Array(G),o=0;o<G;++o)o_[o]===void 0&&(o_[o]=new s_)}else return}t._occluders.ellipsoid.cameraPosition=e.camera.positionWC;let s,l=t._levelZeroTiles,r=l.length>1?t._occluders:void 0;a_=e.camera.positionCartographic,l.sort(yCe);let d=t._addHeightCallbacks,m=t._removeHeightCallbacks,h=e.frameNumber,u;if(d.length>0||m.length>0){for(o=0,u=l.length;o<u;++o)s=l[o],s._updateCustomData(h,d,m);d.length=0,m.length=0}let R=e.camera;t._cameraPositionCartographic=R.positionCartographic;let V=L.getTranslation(R.transform,BCe);for(t._cameraReferenceFrameOriginCartographic=t.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(V,t._cameraReferenceFrameOriginCartographic),o=0,u=l.length;o<u;++o)s=l[o],t._tileReplacementQueue.markTileRendered(s),s.renderable?Sd(t,s,a,e,r,!1,o_[o]):(VW(t,t._tileLoadQueueHigh,s,e),++n.tilesWaitingForChildren);t._lastSelectionFrameNumber=h}function VW(t,e,n,i){n.needsLoading&&(t.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=t.tileProvider.computeTileLoadPriority(n,i)),e.push(n))}function s_(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function rNt(){this.southwest=new s_,this.southeast=new s_,this.northwest=new s_,this.northeast=new s_}rNt.prototype.combine=function(t){let e=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;t.allAreRenderable=e.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,t.anyWereRenderedLastFrame=e.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,t.notYetRenderableCount=e.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var Hot=new Array(31);for(let t=0;t<Hot.length;++t)Hot[t]=new rNt;function kCe(t,e,n,i,o){let a=t._debug;++a.tilesVisited,t._tileReplacementQueue.markTileRendered(n),n._updateCustomData(e.frameNumber),n.level>a.maxDepthVisited&&(a.maxDepthVisited=n.level);let s=XCe(t,e,n)<t.maximumScreenSpaceError,l=n.southwestChild,r=n.southeastChild,d=n.northwestChild,m=n.northeastChild,h=t._lastSelectionFrameNumber,u=n._lastSelectionResultFrame===h?n._lastSelectionResult:Pi.NONE,R=t.tileProvider;if(s||i){let V=Pi.originalResult(u)===Pi.RENDERED,F=Pi.originalResult(u)===Pi.CULLED||u===Pi.NONE,U=n.state===Br.DONE,G=V||F||U;if(G||c(R.canRenderWithoutLosingDetail)&&(G=R.canRenderWithoutLosingDetail(n)),G){s&&VW(t,t._tileLoadQueueMedium,n,e),xz(t,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=u===Pi.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.RENDERED,o.anyWereRenderedLastFrame||t._tileToUpdateHeights.push(n);return}i=!0,s&&VW(t,t._tileLoadQueueHigh,n,e)}if(R.canRefine(n)){if(l.upsampledFromParent&&r.upsampledFromParent&&d.upsampledFromParent&&m.upsampledFromParent){xz(t,n),VW(t,t._tileLoadQueueMedium,n,e),t._tileReplacementQueue.markTileRendered(l),t._tileReplacementQueue.markTileRendered(r),t._tileReplacementQueue.markTileRendered(d),t._tileReplacementQueue.markTileRendered(m),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=u===Pi.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.RENDERED,o.anyWereRenderedLastFrame||t._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.REFINED;let F=t._tilesToRender.length,U=t._tileLoadQueueLow.length,G=t._tileLoadQueueMedium.length,A=t._tileLoadQueueHigh.length,S=t._tileToUpdateHeights.length;if(YCe(t,l,r,d,m,e,i,o),F!==t._tilesToRender.length){let g=o.allAreRenderable,C=o.anyWereRenderedLastFrame,y=o.notYetRenderableCount,Y=!1;if(!g&&!C){let Q=t._tilesToRender;for(let M=F;M<Q.length;++M){let Z=Q[M];for(;Z!==void 0&&Z._lastSelectionResult!==Pi.KICKED&&Z!==n;)Z._lastSelectionResult=Pi.kick(Z._lastSelectionResult),Z=Z.parent}t._tilesToRender.length=F,t._tileToUpdateHeights.length=S,xz(t,n),n._lastSelectionResult=Pi.RENDERED;let J=u===Pi.RENDERED;!J&&y>t.loadingDescendantLimit&&(t._tileLoadQueueLow.length=U,t._tileLoadQueueMedium.length=G,t._tileLoadQueueHigh.length=A,VW(t,t._tileLoadQueueMedium,n,e),o.notYetRenderableCount=n.renderable?0:1,Y=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=J,J||t._tileToUpdateHeights.push(n),++a.tilesWaitingForChildren}t.preloadAncestors&&!Y&&VW(t,t._tileLoadQueueLow,n,e)}return}n._lastSelectionResultFrame=e.frameNumber,n._lastSelectionResult=Pi.RENDERED,xz(t,n),VW(t,t._tileLoadQueueHigh,n,e),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=u===Pi.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function YCe(t,e,n,i,o,a,s,l){let r=a.camera.positionCartographic,d=t._tileProvider,m=t._occluders,h=Hot[e.level],u=h.southwest,R=h.southeast,V=h.northwest,F=h.northeast;r.longitude<e.rectangle.east?r.latitude<e.rectangle.north?(Sd(t,e,d,a,m,s,u),Sd(t,n,d,a,m,s,R),Sd(t,i,d,a,m,s,V),Sd(t,o,d,a,m,s,F)):(Sd(t,i,d,a,m,s,V),Sd(t,e,d,a,m,s,u),Sd(t,o,d,a,m,s,F),Sd(t,n,d,a,m,s,R)):r.latitude<e.rectangle.north?(Sd(t,n,d,a,m,s,R),Sd(t,e,d,a,m,s,u),Sd(t,o,d,a,m,s,F),Sd(t,i,d,a,m,s,V)):(Sd(t,o,d,a,m,s,F),Sd(t,i,d,a,m,s,V),Sd(t,n,d,a,m,s,R),Sd(t,e,d,a,m,s,u)),h.combine(l)}function xCe(t,e){let n=e.rectangle;return c(t._cameraPositionCartographic)&&Gt.contains(n,t._cameraPositionCartographic)||c(t._cameraReferenceFrameOriginCartographic)&&Gt.contains(n,t._cameraReferenceFrameOriginCartographic)}function Sd(t,e,n,i,o,a,s){if(n.computeTileVisibility(e,i,o)!==Ys.NONE)return kCe(t,i,e,a,s);if(++t._debug.tilesCulled,t._tileReplacementQueue.markTileRendered(e),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,xCe(t,e)){(!c(e.data)||!c(e.data.vertexArray))&&VW(t,t._tileLoadQueueMedium,e,i);let l=t._lastSelectionFrameNumber,r=e._lastSelectionResultFrame===l?e._lastSelectionResult:Pi.NONE;r!==Pi.CULLED_BUT_NEEDED&&r!==Pi.RENDERED&&t._tileToUpdateHeights.push(e),e._lastSelectionResult=Pi.CULLED_BUT_NEEDED}else t.preloadSiblings||e.level===0?(VW(t,t._tileLoadQueueLow,e,i),e._lastSelectionResult=Pi.CULLED):e._lastSelectionResult=Pi.CULLED;e._lastSelectionResultFrame=i.frameNumber}function XCe(t,e,n){if(e.mode===Vt.SCENE2D||e.camera.frustum instanceof wn||e.camera.frustum instanceof el)return JCe(t,e,n);let i=t._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,a=e.context.drawingBufferHeight,s=e.camera.frustum.sseDenominator,l=i*a/(o*s);return e.fog.enabled&&(l-=k.fog(o,e.fog.density)*e.fog.sse),l/=e.pixelRatio,l}function JCe(t,e,n){let o=e.camera.frustum,a=o.offCenterFrustum;c(a)&&(o=a);let s=e.context,l=s.drawingBufferWidth,r=s.drawingBufferHeight,d=t._tileProvider.getLevelMaximumGeometricError(n.level),m=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(l,r),h=d/m;return e.fog.enabled&&e.mode!==Vt.SCENE2D&&(h-=k.fog(n._distance,e.fog.density)*e.fog.sse),h/=e.pixelRatio,h}function xz(t,e){t._tilesToRender.push(e)}function LCe(t,e){let n=t._tileLoadQueueHigh,i=t._tileLoadQueueMedium,o=t._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;t._tileReplacementQueue.trimTiles(t.tileCacheSize);let a=Oi()+t._loadQueueTimeSlice,s=t._tileProvider,l=Dot(t,e,s,a,n,!1);l=Dot(t,e,s,a,i,l),Dot(t,e,s,a,o,l)}function MCe(t,e){return t._loadPriority-e._loadPriority}function Dot(t,e,n,i,o,a){n.computeTileLoadPriority!==void 0&&o.sort(MCe);for(let s=0,l=o.length;s<l&&(Oi()<i||!a);++s){let r=o[s];t._tileReplacementQueue.markTileRendered(r),n.loadTile(e,r),a=!0}return a}var Q1=new di,Oot=new gt,pU=new p,_Ce=[];function DCe(t,e){if(!c(t.tileProvider.tilingScheme))return;let n=_Ce;n.length=0;let i=t._tileToUpdateHeights,o=Oi(),a=t._updateHeightsTimeSlice,s=o+a,l=e.mode,r=e.mapProjection,d=t.tileProvider.tilingScheme.ellipsoid,m;for(;i.length>0;){let h=i[0];if(!c(h.data)||!c(h.data.mesh)){let F=h._lastSelectionResultFrame===t._lastSelectionFrameNumber?h._lastSelectionResult:Pi.NONE;(F===Pi.RENDERED||F===Pi.CULLED_BUT_NEEDED)&&n.push(h),i.shift(),t._lastTileIndex=0;continue}let u=h.customData,R=u.length,V=!1;for(m=t._lastTileIndex;m<R;++m){let F=u[m],U=h.data.terrainData,G=c(U)&&U.wasCreatedByUpsampling();if(h.level>F.level&&!G){if(c(F.positionOnEllipsoidSurface)||(F.positionOnEllipsoidSurface=p.fromRadians(F.positionCartographic.longitude,F.positionCartographic.latitude,0,d)),l===Vt.SCENE3D){let S=d.geodeticSurfaceNormal(F.positionOnEllipsoidSurface,Q1.direction),g=d.getSurfaceNormalIntersectionWithZAxis(F.positionOnEllipsoidSurface,11500,Q1.origin);if(!c(g)){let C=0;c(h.data.tileBoundingRegion)&&(C=h.data.tileBoundingRegion.minimumHeight);let y=Math.min(C,-11500),Y=p.multiplyByScalar(S,Math.abs(y)+1,pU);p.subtract(F.positionOnEllipsoidSurface,Y,Q1.origin)}}else gt.clone(F.positionCartographic,Oot),Oot.height=-11500,r.project(Oot,pU),p.fromElements(pU.z,pU.x,pU.y,pU),p.clone(pU,Q1.origin),p.clone(p.UNIT_X,Q1.direction);let A=h.data.pick(Q1,l,r,!1,pU);c(A)&&(c(F.callback)&&F.callback(A),F.level=h.level)}if(Oi()>=s){V=!0;break}}if(V){t._lastTileIndex=m;break}else t._lastTileIndex=0,i.shift()}for(m=0;m<n.length;m++)i.push(n[m])}function OCe(t,e){let n=t._tileProvider,i=t._tilesToRender;for(let o=0,a=i.length;o<a;++o){let s=i[o];n.showTileThisFrame(s,e)}}var l_=gV;function sZ(t){t=f(t,mt.WGS84);let e=new bV({ellipsoid:t}),n=new t_;this._ellipsoid=t,this._imageryLayerCollection=n,this._surfaceShaderSet=new xM,this._material=void 0,this._surface=new l_({tileProvider:new qM({terrainProvider:e,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=e,this._terrainProviderChanged=new It,this._undergroundColor=v.clone(v.BLACK),this._undergroundColorAlphaByDistance=new ln(t.maximumRadius/1e3,0,t.maximumRadius/5,1),this._translucency=new $M,Pot(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new te({url:Dn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!0,this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new p(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new p(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=1e7,this.lightingFadeInDistance=2e7,this.nightFadeOutDistance=1e7,this.nightFadeInDistance=5e7,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Vi.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(sZ.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return c(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(t){this._surface.tileProvider.baseColor=t}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(t){this._surface.tileProvider.clippingPlanes=t}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(t){this._surface.tileProvider.clippingPolygons=t}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(t){c(t)||(t=Gt.clone(Gt.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=t}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(t){this._oceanNormalMapResource.url=t,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(t){t!==this._terrainProvider&&(this._terrainProvider=t,this._terrainProviderChanged.raiseEvent(t),c(this._material)&&Pot(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(t){this._material!==t&&(this._material=t,Pot(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(t){this._undergroundColor=v.clone(t,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(t){this._undergroundColorAlphaByDistance=ln.clone(t,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function Pot(t){let e=[],n=c(t._material)&&(c(t._material.shaderSource.match(/slope/))||c(t._material.shaderSource.match("normalEC"))),i=[rW,W1];c(t._material)&&(!n||t._terrainProvider.requestVertexNormals)?(i.push(t._material.shaderSource),e.push("APPLY_MATERIAL"),t._surface._tileProvider.materialUniformMap=t._material._uniforms):t._surface._tileProvider.materialUniformMap=void 0,i.push(kM),t._surfaceShaderSet.baseVertexShaderSource=new Ze({sources:[rW,W1,YM],defines:e}),t._surfaceShaderSet.baseFragmentShaderSource=new Ze({sources:i,defines:e}),t._surfaceShaderSet.material=t._material}function HCe(t){return function(e,n){let i=Ft.distanceSquaredTo(e.pickBoundingSphere,t),o=Ft.distanceSquaredTo(n.pickBoundingSphere,t);return i-o}}var wCe=[],PCe={start:0,stop:0};sZ.prototype.pickWorldCoordinates=function(t,e,n,i){n=f(n,!0);let o=e.mode,a=e.mapProjection,s=wCe;s.length=0;let l=this._surface._tilesToRender,r=l.length,d,m;for(m=0;m<r;++m){d=l[m];let u=d.data;if(!c(u))continue;let R=u.pickBoundingSphere;if(o!==Vt.SCENE3D)u.pickBoundingSphere=R=Ft.fromRectangleWithHeights2D(d.rectangle,a,u.tileBoundingRegion.minimumHeight,u.tileBoundingRegion.maximumHeight,R),p.fromElements(R.center.z,R.center.x,R.center.y,R.center);else if(c(u.renderedMesh))Ft.clone(u.tileBoundingRegion.boundingSphere,R);else continue;let V=no.raySphere(t,R,PCe);c(V)&&s.push(u)}s.sort(HCe(t.origin));let h;for(r=s.length,m=0;m<r&&(h=s[m].pick(t,e.mode,e.mapProjection,n,i),!c(h));++m);return h};var vCe=new gt;sZ.prototype.pick=function(t,e,n){if(n=this.pickWorldCoordinates(t,e,!0,n),c(n)&&e.mode!==Vt.SCENE3D){n=p.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection.unproject(n,vCe);n=e.globe.ellipsoid.cartographicToCartesian(i,n)}return n};var KCe=new p,dNt=new p,zCe=new gt,jCe=new di;function wot(t,e){return c(t)&&Gt.contains(t.rectangle,e)?t:void 0}sZ.prototype.getHeight=function(t){let e=this._surface._levelZeroTiles;if(!c(e))return;let n,i,o=e.length;for(i=0;i<o&&(n=e[i],!Gt.contains(n.rectangle,t));++i);if(i>=o)return;let a=n;for(;c(n);)n=wot(n._southwestChild,t)||wot(n._southeastChild,t)||wot(n._northwestChild,t)||n._northeastChild,c(n)&&c(n.data)&&c(n.data.renderedMesh)&&(a=n);if(n=a,!c(n)||!c(n.data)||!c(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,l=this._surface._tileProvider.tilingScheme.ellipsoid,r=p.fromRadians(t.longitude,t.latitude,0,l,KCe),d=jCe,m=l.geodeticSurfaceNormal(r,d.direction),h=l.getSurfaceNormalIntersectionWithZAxis(r,11500,d.origin);if(!c(h)){let R;c(n.data.tileBoundingRegion)&&(R=n.data.tileBoundingRegion.minimumHeight);let V=Math.min(f(R,0),-11500),F=p.multiplyByScalar(m,Math.abs(V)+1,dNt);p.subtract(r,F,d.origin)}let u=n.data.pick(d,void 0,s,!1,dNt);if(c(u))return l.cartesianToCartographic(u,zCe).height};sZ.prototype.update=function(t){this.show&&t.passes.render&&this._surface.update(t)};sZ.prototype.beginFrame=function(t){let e=this._surface,n=e.tileProvider,i=this.terrainProvider,o=this.showWaterEffect&&c(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let l=this._oceanNormalMapResource,r=l.url;if(c(r)){let d=this;l.fetchImage().then(function(m){r===d._oceanNormalMapResource.url&&(d._oceanNormalMap=d._oceanNormalMap&&d._oceanNormalMap.destroy(),d._oceanNormalMap=new hn({context:t.context,source:m}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let a=t.passes,s=t.mode;a.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e.tileCacheSize=this.tileCacheSize,e.loadingDescendantLimit=this.loadingDescendantLimit,e.preloadAncestors=this.preloadAncestors,e.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===Vt.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,e.beginFrame(t))};sZ.prototype.render=function(t){this.show&&(c(this._material)&&this._material.update(t.context),this._surface.render(t))};sZ.prototype.endFrame=function(t){this.show&&t.passes.render&&this._surface.endFrame(t)};sZ.prototype.isDestroyed=function(){return!1};sZ.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),At(this)};var r_=sZ;var UAo=b(W(),1);var BGo=b(W(),1);var AGo=b(W(),1);var RGo=b(W(),1);function qCe(t,e,n,i){this.rightAscension=t,this.declination=e,this.rotation=n,this.rotationRate=i}var d_=qCe;var GNt={},$Ce=32.184,tIe=2451545,cNt=-.0529921,mNt=-.1059842,hNt=13.0120009,pNt=13.3407154,VNt=.9856003,uNt=26.4057084,ZNt=13.064993,RNt=.3287146,bNt=1.7484877,WNt=-.1589763,fNt=.0036096,FNt=.1643573,UNt=12.9590088,vot=new rt;GNt.ComputeMoon=function(t,e){c(t)||(t=rt.now()),vot=rt.addSeconds(t,$Ce,vot);let n=rt.totalDays(vot)-tIe,i=n/xi.DAYS_PER_JULIAN_CENTURY,o=(125.045+cNt*n)*k.RADIANS_PER_DEGREE,a=(250.089+mNt*n)*k.RADIANS_PER_DEGREE,s=(260.008+hNt*n)*k.RADIANS_PER_DEGREE,l=(176.625+pNt*n)*k.RADIANS_PER_DEGREE,r=(357.529+VNt*n)*k.RADIANS_PER_DEGREE,d=(311.589+uNt*n)*k.RADIANS_PER_DEGREE,m=(134.963+ZNt*n)*k.RADIANS_PER_DEGREE,h=(276.617+RNt*n)*k.RADIANS_PER_DEGREE,u=(34.226+bNt*n)*k.RADIANS_PER_DEGREE,R=(15.134+WNt*n)*k.RADIANS_PER_DEGREE,V=(119.743+fNt*n)*k.RADIANS_PER_DEGREE,F=(239.961+FNt*n)*k.RADIANS_PER_DEGREE,U=(25.053+UNt*n)*k.RADIANS_PER_DEGREE,G=Math.sin(o),A=Math.sin(a),S=Math.sin(s),g=Math.sin(l),C=Math.sin(r),y=Math.sin(d),Y=Math.sin(m),Q=Math.sin(h),J=Math.sin(u),M=Math.sin(R),Z=Math.sin(V),E=Math.sin(F),I=Math.sin(U),B=Math.cos(o),X=Math.cos(a),_=Math.cos(s),P=Math.cos(l),w=Math.cos(r),z=Math.cos(d),H=Math.cos(m),nt=Math.cos(h),$=Math.cos(u),dt=Math.cos(R),q=Math.cos(V),at=Math.cos(F),st=Math.cos(U),Et=(269.9949+.0031*i-3.8787*G-.1204*A+.07*S-.0172*g+.0072*y-.0052*M+.0043*I)*k.RADIANS_PER_DEGREE,Qt=(66.5392+.013*i+1.5419*B+.0239*X-.0278*_+.0068*P-.0029*z+9e-4*H+8e-4*dt-9e-4*st)*k.RADIANS_PER_DEGREE,Wt=(38.3213+13.17635815*n-14e-13*n*n+3.561*G+.1208*A-.0642*S+.0158*g+.0252*C-.0066*y-.0047*Y-.0046*Q+.0028*J+.0052*M+.004*Z+.0019*E-.0044*I)*k.RADIANS_PER_DEGREE,Nt=(13.17635815-14e-13*(2*n)+3.561*B*cNt+.1208*X*mNt-.0642*_*hNt+.0158*P*pNt+.0252*w*VNt-.0066*z*uNt-.0047*H*ZNt-.0046*nt*RNt+.0028*$*bNt+.0052*dt*WNt+.004*q*fNt+.0019*at*FNt-.0044*st*UNt)/86400*k.RADIANS_PER_DEGREE;return c(e)||(e=new d_),e.rightAscension=Et,e.declination=Qt,e.rotation=Wt,e.rotationRate=Nt,e};var c_=GNt;function ANt(t){(!c(t)||typeof t!="function")&&(t=c_.ComputeMoon),this._computeFunction=t}var eIe=new p,nIe=new p,iIe=new p;function oIe(t,e,n){let i=eIe;i.x=Math.cos(t+k.PI_OVER_TWO),i.y=Math.sin(t+k.PI_OVER_TWO),i.z=0;let o=Math.cos(e),a=iIe;a.x=o*Math.cos(t),a.y=o*Math.sin(t),a.z=Math.sin(e);let s=p.cross(a,i,nIe);return c(n)||(n=new ot),n[0]=i.x,n[1]=s.x,n[2]=a.x,n[3]=i.y,n[4]=s.y,n[5]=a.y,n[6]=i.z,n[7]=s.z,n[8]=a.z,n}var aIe=new ot,sIe=new wt;ANt.prototype.evaluate=function(t,e){c(t)||(t=rt.now());let n=this._computeFunction(t),i=oIe(n.rightAscension,n.declination,e),o=k.zeroToTwoPi(n.rotation),a=wt.fromAxisAngle(p.UNIT_Z,o,sIe),s=ot.fromQuaternion(wt.conjugate(a,a),aIe);return ot.multiply(s,i,i)};var m_=ANt;var lAo=b(W(),1);var kGo=b(W(),1),k1=`uniform vec3 u_radii; uniform vec3 u_oneOverEllipsoidRadiiSquared; in vec3 v_positionEC; @@ -10567,7 +10567,7 @@ void main() #endif #endif } -`;var xGo=R(W(),1),Y1=`in vec3 position; +`;var xGo=b(W(),1),Y1=`in vec3 position; uniform vec3 u_radii; @@ -10595,7 +10595,7 @@ void main() czm_vertexLogDepth(); } -`;var Kot={position:0};function Xz(t){t=f(t,f.EMPTY_OBJECT),this.center=p.clone(f(t.center,p.ZERO)),this._center=new p,this.radii=p.clone(t.radii),this._radii=new p,this._oneOverEllipsoidRadiiSquared=new p,this._boundingSphere=new Ft,this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=new L,this._computedModelMatrix=new L,this.show=f(t.show,!0),this.material=f(t.material,eo.fromType(eo.ColorType)),this._material=void 0,this._translucent=void 0,this.id=t.id,this._id=void 0,this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.onlySunLighting=f(t.onlySunLighting,!1),this._onlySunLighting=!1,this._depthTestEnabled=f(t.depthTestEnabled,!0),this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new Ee({owner:f(t._owner,this)}),this._pickCommand=new Ee({owner:f(t._owner,this),pickOnly:!0});let e=this;this._uniforms={u_radii:function(){return e.radii},u_oneOverEllipsoidRadiiSquared:function(){return e._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return e._pickId.color}}}function lIe(t){let e=t.cache.ellipsoidPrimitive_vertexArray;if(c(e))return e;let n=Am.createGeometry(Am.fromDimensions({dimensions:new p(2,2,2),vertexFormat:ee.POSITION_ONLY}));return e=Ki.fromGeometry({context:t,geometry:n,attributeLocations:Kot,bufferUsage:ce.STATIC_DRAW,interleave:!0}),t.cache.ellipsoidPrimitive_vertexArray=e,e}Xz.prototype.update=function(t){if(!this.show||t.mode!==ut.SCENE3D||!c(this.center)||!c(this.radii))return;let e=t.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!c(this._rs)||i)&&(this._translucent=n,this._rs=he.fromCache({cull:{enabled:!0,face:so.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&e.fragmentDepth,blending:n?Pn.ALPHA_BLEND:void 0})),c(this._va)||(this._va=lIe(e));let o=!1,a=this.radii;if(!p.equals(this._radii,a)){p.clone(a,this._radii);let F=this._oneOverEllipsoidRadiiSquared;F.x=1/(a.x*a.x),F.y=1/(a.y*a.y),F.z=1/(a.z*a.z),o=!0}(!L.equals(this.modelMatrix,this._modelMatrix)||!p.equals(this.center,this._center))&&(L.clone(this.modelMatrix,this._modelMatrix),p.clone(this.center,this._center),L.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(p.clone(p.ZERO,this._boundingSphere.center),this._boundingSphere.radius=p.maximumComponent(a),Ft.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(e);let l=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let r=t.useLogDepth,d=this._useLogDepth!==r;this._useLogDepth=r;let m=this._colorCommand,h,Z;(s||l||i||d)&&(h=new Ve({sources:[Y1]}),Z=new Ve({sources:[this.material.shaderSource,k1]}),this.onlySunLighting&&Z.defines.push("ONLY_SUN_LIGHTING"),!n&&e.fragmentDepth&&Z.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),Z.defines.push("LOG_DEPTH")),this._sp=xn.replaceCache({context:e,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:Z,attributeLocations:Kot}),m.vertexArray=this._va,m.renderState=this._rs,m.shaderProgram=this._sp,m.uniformMap=ze(this._uniforms,this.material._uniforms),m.executeInClosestFrustum=n);let b=t.commandList,u=t.passes;if(u.render&&(m.boundingVolume=this._boundingSphere,m.debugShowBoundingVolume=this.debugShowBoundingVolume,m.modelMatrix=this._computedModelMatrix,m.pass=n?Pt.TRANSLUCENT:Pt.OPAQUE,b.push(m)),u.pick){let F=this._pickCommand;(!c(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=e.createPickId({primitive:this,id:this.id})),(s||l||!c(this._pickSP)||d)&&(h=new Ve({sources:[Y1]}),Z=new Ve({sources:[this.material.shaderSource,k1],pickColorQualifier:"uniform"}),this.onlySunLighting&&Z.defines.push("ONLY_SUN_LIGHTING"),!n&&e.fragmentDepth&&Z.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),Z.defines.push("LOG_DEPTH")),this._pickSP=xn.replaceCache({context:e,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:Z,attributeLocations:Kot}),F.vertexArray=this._va,F.renderState=this._rs,F.shaderProgram=this._pickSP,F.uniformMap=ze(ze(this._uniforms,this._pickUniforms),this.material._uniforms),F.executeInClosestFrustum=n),F.boundingVolume=this._boundingSphere,F.modelMatrix=this._computedModelMatrix,F.pass=n?Pt.TRANSLUCENT:Pt.OPAQUE,b.push(F)}};Xz.prototype.isDestroyed=function(){return!1};Xz.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),At(this)};var h_=Xz;function p_(t){t=f(t,f.EMPTY_OBJECT);let e=t.textureUrl;c(e)||(e=Dn("Assets/Textures/moonSmall.jpg")),this.show=f(t.show,!0),this.textureUrl=e,this._ellipsoid=f(t.ellipsoid,mt.MOON),this.onlySunLighting=f(t.onlySunLighting,!0),this._ellipsoidPrimitive=new h_({radii:this.ellipsoid.radii,material:eo.fromType(eo.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new m_}Object.defineProperties(p_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Jz=new ot,rIe=new ot,dIe=new p,Lz=[];p_.prototype.update=function(t){if(!this.show)return;let e=this._ellipsoidPrimitive;e.material.uniforms.image=this.textureUrl,e.onlySunLighting=this.onlySunLighting;let n=t.time;c(Pe.computeIcrfToFixedMatrix(n,Jz))||Pe.computeTemeToPseudoFixedMatrix(n,Jz);let i=this._axes.evaluate(n,rIe);ot.transpose(i,i),ot.multiply(Jz,i,i);let o=_V.computeMoonPositionInEarthInertialFrame(n,dIe);ot.multiplyByVector(Jz,o,o),L.fromRotationTranslation(i,o,e.modelMatrix);let a=t.commandList;return t.commandList=Lz,Lz.length=0,e.update(t),t.commandList=a,Lz.length===1?Lz[0]:void 0};p_.prototype.isDestroyed=function(){return!1};p_.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),At(this)};var u_=p_;var hMo=R(W(),1);var AAo=R(W(),1);var zot=[],jot=[];function cIe(t,e,n,i,o,a){let s=o-i+1,l=a-o,r=zot,d=jot,m,h;for(m=0;m<s;++m)r[m]=t[i+m];for(h=0;h<l;++h)d[h]=t[o+h+1];m=0,h=0;for(let Z=i;Z<=a;++Z){let b=r[m],u=d[h];m<s&&(h>=l||e(b,u,n)<=0)?(t[Z]=b,++m):h<l&&(t[Z]=u,++h)}}function qot(t,e,n,i,o){if(i>=o)return;let a=Math.floor((i+o)*.5);qot(t,e,n,i,a),qot(t,e,n,a+1,o),cIe(t,e,n,i,a,o)}function mIe(t,e,n){let i=t.length,o=Math.ceil(i*.5);zot.length=o,jot.length=o,qot(t,e,n,0,i-1),zot.length=0,jot.length=0}var ZW=mIe;var QAo=R(W(),1);function rc(t,e){this._occluderPosition=p.clone(t.center),this._occluderRadius=t.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=e}var Mz=new p;Object.defineProperties(rc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(t){t=p.clone(t,this._cameraPosition);let e=p.subtract(this._occluderPosition,t,Mz),n=p.magnitudeSquared(e),i=this._occluderRadius*this._occluderRadius,o,a,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),a=p.multiplyByScalar(e,n,Mz);let l=o*o*n;s=p.add(t,p.multiplyByScalar(a,l,Mz),Mz)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=a,this._horizonPlanePosition=s,this._cameraPosition=t}}});rc.fromBoundingSphere=function(t,e,n){return c(n)?(p.clone(t.center,n._occluderPosition),n._occluderRadius=t.radius,n.cameraPosition=e,n):new rc(t,e)};var SNt=new p;rc.prototype.isPointVisible=function(t){if(this._horizonDistance!==Number.MAX_VALUE){let e=p.subtract(t,this._occluderPosition,SNt),n=this._occluderRadius;if(n=p.magnitudeSquared(e)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,e=p.subtract(t,this._cameraPosition,e),n*n>p.magnitudeSquared(e)}return!1};var hIe=new p;rc.prototype.isBoundingSphereVisible=function(t){let e=p.clone(t.center,hIe),n=t.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=p.subtract(e,this._occluderPosition,SNt),o=this._occluderRadius-n;if(o=p.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=p.subtract(e,this._cameraPosition,i),o*o+n*n>p.magnitudeSquared(i)):!1;if(o>0){i=p.subtract(e,this._cameraPosition,i);let a=p.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,l=n*n;return(this._horizonDistance*this._horizonDistance+s)*l>a*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+l>a)}return!0}return!1};var pIe=new p;rc.prototype.computeVisibility=function(t){let e=p.clone(t.center),n=t.radius;if(n>this._occluderRadius)return Ys.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=p.subtract(e,this._occluderPosition,pIe),o=this._occluderRadius-n,a=p.magnitudeSquared(i);if(o=a-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=p.subtract(e,this._cameraPosition,i);let s=p.magnitudeSquared(i);return o*o+n*n<s?Ys.NONE:(o=this._occluderRadius+n,o=a-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Ys.FULL:Ys.PARTIAL):(i=p.subtract(e,this._horizonPlanePosition,i),p.dot(i,this._horizonPlaneNormal)>-n?Ys.PARTIAL:Ys.FULL))}}return Ys.NONE};var _z=new p;rc.computeOccludeePoint=function(t,e,n){let i=p.clone(e),o=p.clone(t.center),a=t.radius,s=n.length,l=p.normalize(p.subtract(i,o,_z),_z),r=-p.dot(l,o),d=rc._anyRotationVector(o,l,r),m=rc._horizonToPlaneNormalDotProduct(t,l,r,d,n[0]);if(!m)return;let h;for(let b=1;b<s;++b){if(h=rc._horizonToPlaneNormalDotProduct(t,l,r,d,n[b]),!h)return;h<m&&(m=h)}if(m<.0017453283658983088)return;let Z=a/m;return p.add(o,p.multiplyByScalar(l,Z,_z),_z)};var uIe=[];rc.computeOccludeePointFromRectangle=function(t,e){e=f(e,mt.WGS84);let n=Gt.subsample(t,e,0,uIe),i=Ft.fromPoints(n),o=p.ZERO;if(!p.equals(o,i.center))return rc.computeOccludeePoint(new Ft(o,e.minimumRadius),i.center,n)};var ZIe=new p;rc._anyRotationVector=function(t,e,n){let i=p.abs(e,ZIe),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let a=new p,s;o===0?(i.x=t.x,i.y=t.y+1,i.z=t.z+1,s=p.UNIT_X):o===1?(i.x=t.x+1,i.y=t.y,i.z=t.z+1,s=p.UNIT_Y):(i.x=t.x+1,i.y=t.y+1,i.z=t.z,s=p.UNIT_Z);let l=(p.dot(e,i)+n)/-p.dot(e,s);return p.normalize(p.subtract(p.add(i,p.multiplyByScalar(s,l,a),i),t,i),i)};var VIe=new p;rc._rotationVector=function(t,e,n,i,o){let a=p.subtract(i,t,VIe);if(a=p.normalize(a,a),p.dot(e,a)<.9999999847691291){let s=p.cross(e,a,a);if(p.magnitude(s)>k.EPSILON13)return p.normalize(s,new p)}return o};var $ot=new p,bIe=new p,Dz=new p,TNt=new p;rc._horizonToPlaneNormalDotProduct=function(t,e,n,i,o){let a=p.clone(o,$ot),s=p.clone(t.center,bIe),l=t.radius,r=p.subtract(s,a,Dz),d=p.magnitudeSquared(r),m=l*l;if(d<m)return!1;let h=d-m,Z=Math.sqrt(h),u=1/Math.sqrt(d),U=Z*u*Z;r=p.normalize(r,r);let G=p.add(a,p.multiplyByScalar(r,U,TNt),TNt),A=Math.sqrt(h-U*U),T=this._rotationVector(s,e,n,a,i),g=p.fromElements(T.x*T.x*r.x+(T.x*T.y-T.z)*r.y+(T.x*T.z+T.y)*r.z,(T.x*T.y+T.z)*r.x+T.y*T.y*r.y+(T.y*T.z-T.x)*r.z,(T.x*T.z-T.y)*r.x+(T.y*T.z+T.x)*r.y+T.z*T.z*r.z,$ot);g=p.normalize(g,g);let C=p.multiplyByScalar(g,A,$ot);T=p.normalize(p.subtract(p.add(G,C,Dz),s,Dz),Dz);let y=p.dot(e,T);T=p.normalize(p.subtract(p.subtract(G,C,T),s,T),T);let Y=p.dot(e,T);return y<Y?y:Y};var Z_=rc;var KAo=R(W(),1);var DAo=R(W(),1);function Xb(t){t=f(t,f.EMPTY_OBJECT),this.left=t.left,this._left=void 0,this.right=t.right,this._right=void 0,this.top=t.top,this._top=void 0,this.bottom=t.bottom,this._bottom=void 0,this.near=f(t.near,1),this._near=this.near,this.far=f(t.far,5e8),this._far=this.far,this._cullingVolume=new Jl,this._perspectiveMatrix=new L,this._infinitePerspective=new L}function tat(t){let e=t.top,n=t.bottom,i=t.right,o=t.left,a=t.near,s=t.far;(e!==t._top||n!==t._bottom||o!==t._left||i!==t._right||a!==t._near||s!==t._far)&&(t._left=o,t._right=i,t._top=e,t._bottom=n,t._near=a,t._far=s,t._perspectiveMatrix=L.computePerspectiveOffCenter(o,i,n,e,a,s,t._perspectiveMatrix),t._infinitePerspective=L.computeInfinitePerspectiveOffCenter(o,i,n,e,a,t._infinitePerspective))}Object.defineProperties(Xb.prototype,{projectionMatrix:{get:function(){return tat(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return tat(this),this._infinitePerspective}}});var RIe=new p,WIe=new p,fIe=new p,FIe=new p;Xb.prototype.computeCullingVolume=function(t,e,n){let i=this._cullingVolume.planes,o=this.top,a=this.bottom,s=this.right,l=this.left,r=this.near,d=this.far,m=p.cross(e,n,RIe),h=WIe;p.multiplyByScalar(e,r,h),p.add(t,h,h);let Z=fIe;p.multiplyByScalar(e,d,Z),p.add(t,Z,Z);let b=FIe;p.multiplyByScalar(m,l,b),p.add(h,b,b),p.subtract(b,t,b),p.normalize(b,b),p.cross(b,n,b),p.normalize(b,b);let u=i[0];return c(u)||(u=i[0]=new Rt),u.x=b.x,u.y=b.y,u.z=b.z,u.w=-p.dot(b,t),p.multiplyByScalar(m,s,b),p.add(h,b,b),p.subtract(b,t,b),p.cross(n,b,b),p.normalize(b,b),u=i[1],c(u)||(u=i[1]=new Rt),u.x=b.x,u.y=b.y,u.z=b.z,u.w=-p.dot(b,t),p.multiplyByScalar(n,a,b),p.add(h,b,b),p.subtract(b,t,b),p.cross(m,b,b),p.normalize(b,b),u=i[2],c(u)||(u=i[2]=new Rt),u.x=b.x,u.y=b.y,u.z=b.z,u.w=-p.dot(b,t),p.multiplyByScalar(n,o,b),p.add(h,b,b),p.subtract(b,t,b),p.cross(b,m,b),p.normalize(b,b),u=i[3],c(u)||(u=i[3]=new Rt),u.x=b.x,u.y=b.y,u.z=b.z,u.w=-p.dot(b,t),u=i[4],c(u)||(u=i[4]=new Rt),u.x=e.x,u.y=e.y,u.z=e.z,u.w=-p.dot(e,h),p.negate(e,b),u=i[5],c(u)||(u=i[5]=new Rt),u.x=b.x,u.y=b.y,u.z=b.z,u.w=-p.dot(b,Z),this._cullingVolume};Xb.prototype.getPixelDimensions=function(t,e,n,i,o){tat(this);let a=1/this.near,s=this.top*a,l=2*i*n*s/e;s=this.right*a;let r=2*i*n*s/t;return o.x=r,o.y=l,o};Xb.prototype.clone=function(t){return c(t)||(t=new Xb),t.right=this.right,t.left=this.left,t.top=this.top,t.bottom=this.bottom,t.near=this.near,t.far=this.far,t._left=void 0,t._right=void 0,t._top=void 0,t._bottom=void 0,t._near=void 0,t._far=void 0,t};Xb.prototype.equals=function(t){return c(t)&&t instanceof Xb&&this.right===t.right&&this.left===t.left&&this.top===t.top&&this.bottom===t.bottom&&this.near===t.near&&this.far===t.far};Xb.prototype.equalsEpsilon=function(t,e,n){return t===this||c(t)&&t instanceof Xb&&k.equalsEpsilon(this.right,t.right,e,n)&&k.equalsEpsilon(this.left,t.left,e,n)&&k.equalsEpsilon(this.top,t.top,e,n)&&k.equalsEpsilon(this.bottom,t.bottom,e,n)&&k.equalsEpsilon(this.near,t.near,e,n)&&k.equalsEpsilon(this.far,t.far,e,n)};var em=Xb;function th(t){t=f(t,f.EMPTY_OBJECT),this._offCenterFrustum=new em,this.fov=t.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=t.aspectRatio,this._aspectRatio=void 0,this.near=f(t.near,1),this._near=this.near,this.far=f(t.far,5e8),this._far=this.far,this.xOffset=f(t.xOffset,0),this._xOffset=this.xOffset,this.yOffset=f(t.yOffset,0),this._yOffset=this.yOffset}th.packedLength=6;th.pack=function(t,e,n){return n=f(n,0),e[n++]=t.fov,e[n++]=t.aspectRatio,e[n++]=t.near,e[n++]=t.far,e[n++]=t.xOffset,e[n]=t.yOffset,e};th.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new th),n.fov=t[e++],n.aspectRatio=t[e++],n.near=t[e++],n.far=t[e++],n.xOffset=t[e++],n.yOffset=t[e],n};function lV(t){let e=t._offCenterFrustum;(t.fov!==t._fov||t.aspectRatio!==t._aspectRatio||t.near!==t._near||t.far!==t._far||t.xOffset!==t._xOffset||t.yOffset!==t._yOffset)&&(t._aspectRatio=t.aspectRatio,t._fov=t.fov,t._fovy=t.aspectRatio<=1?t.fov:Math.atan(Math.tan(t.fov*.5)/t.aspectRatio)*2,t._near=t.near,t._far=t.far,t._sseDenominator=2*Math.tan(.5*t._fovy),t._xOffset=t.xOffset,t._yOffset=t.yOffset,e.top=t.near*Math.tan(.5*t._fovy),e.bottom=-e.top,e.right=t.aspectRatio*e.top,e.left=-e.right,e.near=t.near,e.far=t.far,e.right+=t.xOffset,e.left+=t.xOffset,e.top+=t.yOffset,e.bottom+=t.yOffset)}Object.defineProperties(th.prototype,{projectionMatrix:{get:function(){return lV(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return lV(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return lV(this),this._fovy}},sseDenominator:{get:function(){return lV(this),this._sseDenominator}},offCenterFrustum:{get:function(){return lV(this),this._offCenterFrustum}}});th.prototype.computeCullingVolume=function(t,e,n){return lV(this),this._offCenterFrustum.computeCullingVolume(t,e,n)};th.prototype.getPixelDimensions=function(t,e,n,i,o){return lV(this),this._offCenterFrustum.getPixelDimensions(t,e,n,i,o)};th.prototype.clone=function(t){return c(t)||(t=new th),t.aspectRatio=this.aspectRatio,t.fov=this.fov,t.near=this.near,t.far=this.far,t._aspectRatio=void 0,t._fov=void 0,t._near=void 0,t._far=void 0,this._offCenterFrustum.clone(t._offCenterFrustum),t};th.prototype.equals=function(t){return!c(t)||!(t instanceof th)?!1:(lV(this),lV(t),this.fov===t.fov&&this.aspectRatio===t.aspectRatio&&this._offCenterFrustum.equals(t._offCenterFrustum))};th.prototype.equalsEpsilon=function(t,e,n){return!c(t)||!(t instanceof th)?!1:(lV(this),lV(t),k.equalsEpsilon(this.fov,t.fov,e,n)&&k.equalsEpsilon(this.aspectRatio,t.aspectRatio,e,n)&&this._offCenterFrustum.equalsEpsilon(t._offCenterFrustum,e,n))};var Io=th;var eTo=R(W(),1);var jAo=R(W(),1),V_={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};V_.fromGlobeFlags=function(t){return t.enableLighting&&t.dynamicAtmosphereLighting?t.dynamicAtmosphereLightingFromSun?V_.SUNLIGHT:V_.SCENE_LIGHT:V_.NONE};var uS=Object.freeze(V_);function UIe(){this.lightIntensity=10,this.rayleighCoefficient=new p(55e-7,13e-6,284e-7),this.mieCoefficient=new p(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=uS.NONE}var b_=UIe;var ZTo=R(W(),1);var iTo=R(W(),1),R_=`in vec2 v_textureCoordinates; +`;var Kot={position:0};function Xz(t){t=f(t,f.EMPTY_OBJECT),this.center=p.clone(f(t.center,p.ZERO)),this._center=new p,this.radii=p.clone(t.radii),this._radii=new p,this._oneOverEllipsoidRadiiSquared=new p,this._boundingSphere=new Ft,this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=new L,this._computedModelMatrix=new L,this.show=f(t.show,!0),this.material=f(t.material,eo.fromType(eo.ColorType)),this._material=void 0,this._translucent=void 0,this.id=t.id,this._id=void 0,this.debugShowBoundingVolume=f(t.debugShowBoundingVolume,!1),this.onlySunLighting=f(t.onlySunLighting,!1),this._onlySunLighting=!1,this._depthTestEnabled=f(t.depthTestEnabled,!0),this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new Ee({owner:f(t._owner,this)}),this._pickCommand=new Ee({owner:f(t._owner,this),pickOnly:!0});let e=this;this._uniforms={u_radii:function(){return e.radii},u_oneOverEllipsoidRadiiSquared:function(){return e._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return e._pickId.color}}}function lIe(t){let e=t.cache.ellipsoidPrimitive_vertexArray;if(c(e))return e;let n=Am.createGeometry(Am.fromDimensions({dimensions:new p(2,2,2),vertexFormat:ee.POSITION_ONLY}));return e=Ki.fromGeometry({context:t,geometry:n,attributeLocations:Kot,bufferUsage:ce.STATIC_DRAW,interleave:!0}),t.cache.ellipsoidPrimitive_vertexArray=e,e}Xz.prototype.update=function(t){if(!this.show||t.mode!==Vt.SCENE3D||!c(this.center)||!c(this.radii))return;let e=t.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!c(this._rs)||i)&&(this._translucent=n,this._rs=he.fromCache({cull:{enabled:!0,face:so.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&e.fragmentDepth,blending:n?Pn.ALPHA_BLEND:void 0})),c(this._va)||(this._va=lIe(e));let o=!1,a=this.radii;if(!p.equals(this._radii,a)){p.clone(a,this._radii);let F=this._oneOverEllipsoidRadiiSquared;F.x=1/(a.x*a.x),F.y=1/(a.y*a.y),F.z=1/(a.z*a.z),o=!0}(!L.equals(this.modelMatrix,this._modelMatrix)||!p.equals(this.center,this._center))&&(L.clone(this.modelMatrix,this._modelMatrix),p.clone(this.center,this._center),L.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(p.clone(p.ZERO,this._boundingSphere.center),this._boundingSphere.radius=p.maximumComponent(a),Ft.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(e);let l=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let r=t.useLogDepth,d=this._useLogDepth!==r;this._useLogDepth=r;let m=this._colorCommand,h,u;(s||l||i||d)&&(h=new Ze({sources:[Y1]}),u=new Ze({sources:[this.material.shaderSource,k1]}),this.onlySunLighting&&u.defines.push("ONLY_SUN_LIGHTING"),!n&&e.fragmentDepth&&u.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),u.defines.push("LOG_DEPTH")),this._sp=xn.replaceCache({context:e,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:u,attributeLocations:Kot}),m.vertexArray=this._va,m.renderState=this._rs,m.shaderProgram=this._sp,m.uniformMap=ze(this._uniforms,this.material._uniforms),m.executeInClosestFrustum=n);let R=t.commandList,V=t.passes;if(V.render&&(m.boundingVolume=this._boundingSphere,m.debugShowBoundingVolume=this.debugShowBoundingVolume,m.modelMatrix=this._computedModelMatrix,m.pass=n?Pt.TRANSLUCENT:Pt.OPAQUE,R.push(m)),V.pick){let F=this._pickCommand;(!c(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=e.createPickId({primitive:this,id:this.id})),(s||l||!c(this._pickSP)||d)&&(h=new Ze({sources:[Y1]}),u=new Ze({sources:[this.material.shaderSource,k1],pickColorQualifier:"uniform"}),this.onlySunLighting&&u.defines.push("ONLY_SUN_LIGHTING"),!n&&e.fragmentDepth&&u.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),u.defines.push("LOG_DEPTH")),this._pickSP=xn.replaceCache({context:e,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:u,attributeLocations:Kot}),F.vertexArray=this._va,F.renderState=this._rs,F.shaderProgram=this._pickSP,F.uniformMap=ze(ze(this._uniforms,this._pickUniforms),this.material._uniforms),F.executeInClosestFrustum=n),F.boundingVolume=this._boundingSphere,F.modelMatrix=this._computedModelMatrix,F.pass=n?Pt.TRANSLUCENT:Pt.OPAQUE,R.push(F)}};Xz.prototype.isDestroyed=function(){return!1};Xz.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),At(this)};var h_=Xz;function p_(t){t=f(t,f.EMPTY_OBJECT);let e=t.textureUrl;c(e)||(e=Dn("Assets/Textures/moonSmall.jpg")),this.show=f(t.show,!0),this.textureUrl=e,this._ellipsoid=f(t.ellipsoid,mt.MOON),this.onlySunLighting=f(t.onlySunLighting,!0),this._ellipsoidPrimitive=new h_({radii:this.ellipsoid.radii,material:eo.fromType(eo.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new m_}Object.defineProperties(p_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Jz=new ot,rIe=new ot,dIe=new p,Lz=[];p_.prototype.update=function(t){if(!this.show)return;let e=this._ellipsoidPrimitive;e.material.uniforms.image=this.textureUrl,e.onlySunLighting=this.onlySunLighting;let n=t.time;c(Pe.computeIcrfToFixedMatrix(n,Jz))||Pe.computeTemeToPseudoFixedMatrix(n,Jz);let i=this._axes.evaluate(n,rIe);ot.transpose(i,i),ot.multiply(Jz,i,i);let o=_Z.computeMoonPositionInEarthInertialFrame(n,dIe);ot.multiplyByVector(Jz,o,o),L.fromRotationTranslation(i,o,e.modelMatrix);let a=t.commandList;return t.commandList=Lz,Lz.length=0,e.update(t),t.commandList=a,Lz.length===1?Lz[0]:void 0};p_.prototype.isDestroyed=function(){return!1};p_.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),At(this)};var V_=p_;var hMo=b(W(),1);var AAo=b(W(),1);var zot=[],jot=[];function cIe(t,e,n,i,o,a){let s=o-i+1,l=a-o,r=zot,d=jot,m,h;for(m=0;m<s;++m)r[m]=t[i+m];for(h=0;h<l;++h)d[h]=t[o+h+1];m=0,h=0;for(let u=i;u<=a;++u){let R=r[m],V=d[h];m<s&&(h>=l||e(R,V,n)<=0)?(t[u]=R,++m):h<l&&(t[u]=V,++h)}}function qot(t,e,n,i,o){if(i>=o)return;let a=Math.floor((i+o)*.5);qot(t,e,n,i,a),qot(t,e,n,a+1,o),cIe(t,e,n,i,a,o)}function mIe(t,e,n){let i=t.length,o=Math.ceil(i*.5);zot.length=o,jot.length=o,qot(t,e,n,0,i-1),zot.length=0,jot.length=0}var uW=mIe;var QAo=b(W(),1);function rc(t,e){this._occluderPosition=p.clone(t.center),this._occluderRadius=t.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=e}var Mz=new p;Object.defineProperties(rc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(t){t=p.clone(t,this._cameraPosition);let e=p.subtract(this._occluderPosition,t,Mz),n=p.magnitudeSquared(e),i=this._occluderRadius*this._occluderRadius,o,a,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),a=p.multiplyByScalar(e,n,Mz);let l=o*o*n;s=p.add(t,p.multiplyByScalar(a,l,Mz),Mz)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=a,this._horizonPlanePosition=s,this._cameraPosition=t}}});rc.fromBoundingSphere=function(t,e,n){return c(n)?(p.clone(t.center,n._occluderPosition),n._occluderRadius=t.radius,n.cameraPosition=e,n):new rc(t,e)};var TNt=new p;rc.prototype.isPointVisible=function(t){if(this._horizonDistance!==Number.MAX_VALUE){let e=p.subtract(t,this._occluderPosition,TNt),n=this._occluderRadius;if(n=p.magnitudeSquared(e)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,e=p.subtract(t,this._cameraPosition,e),n*n>p.magnitudeSquared(e)}return!1};var hIe=new p;rc.prototype.isBoundingSphereVisible=function(t){let e=p.clone(t.center,hIe),n=t.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=p.subtract(e,this._occluderPosition,TNt),o=this._occluderRadius-n;if(o=p.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=p.subtract(e,this._cameraPosition,i),o*o+n*n>p.magnitudeSquared(i)):!1;if(o>0){i=p.subtract(e,this._cameraPosition,i);let a=p.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,l=n*n;return(this._horizonDistance*this._horizonDistance+s)*l>a*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+l>a)}return!0}return!1};var pIe=new p;rc.prototype.computeVisibility=function(t){let e=p.clone(t.center),n=t.radius;if(n>this._occluderRadius)return Ys.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=p.subtract(e,this._occluderPosition,pIe),o=this._occluderRadius-n,a=p.magnitudeSquared(i);if(o=a-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=p.subtract(e,this._cameraPosition,i);let s=p.magnitudeSquared(i);return o*o+n*n<s?Ys.NONE:(o=this._occluderRadius+n,o=a-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Ys.FULL:Ys.PARTIAL):(i=p.subtract(e,this._horizonPlanePosition,i),p.dot(i,this._horizonPlaneNormal)>-n?Ys.PARTIAL:Ys.FULL))}}return Ys.NONE};var _z=new p;rc.computeOccludeePoint=function(t,e,n){let i=p.clone(e),o=p.clone(t.center),a=t.radius,s=n.length,l=p.normalize(p.subtract(i,o,_z),_z),r=-p.dot(l,o),d=rc._anyRotationVector(o,l,r),m=rc._horizonToPlaneNormalDotProduct(t,l,r,d,n[0]);if(!m)return;let h;for(let R=1;R<s;++R){if(h=rc._horizonToPlaneNormalDotProduct(t,l,r,d,n[R]),!h)return;h<m&&(m=h)}if(m<.0017453283658983088)return;let u=a/m;return p.add(o,p.multiplyByScalar(l,u,_z),_z)};var VIe=[];rc.computeOccludeePointFromRectangle=function(t,e){e=f(e,mt.WGS84);let n=Gt.subsample(t,e,0,VIe),i=Ft.fromPoints(n),o=p.ZERO;if(!p.equals(o,i.center))return rc.computeOccludeePoint(new Ft(o,e.minimumRadius),i.center,n)};var uIe=new p;rc._anyRotationVector=function(t,e,n){let i=p.abs(e,uIe),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let a=new p,s;o===0?(i.x=t.x,i.y=t.y+1,i.z=t.z+1,s=p.UNIT_X):o===1?(i.x=t.x+1,i.y=t.y,i.z=t.z+1,s=p.UNIT_Y):(i.x=t.x+1,i.y=t.y+1,i.z=t.z,s=p.UNIT_Z);let l=(p.dot(e,i)+n)/-p.dot(e,s);return p.normalize(p.subtract(p.add(i,p.multiplyByScalar(s,l,a),i),t,i),i)};var ZIe=new p;rc._rotationVector=function(t,e,n,i,o){let a=p.subtract(i,t,ZIe);if(a=p.normalize(a,a),p.dot(e,a)<.9999999847691291){let s=p.cross(e,a,a);if(p.magnitude(s)>k.EPSILON13)return p.normalize(s,new p)}return o};var $ot=new p,RIe=new p,Dz=new p,SNt=new p;rc._horizonToPlaneNormalDotProduct=function(t,e,n,i,o){let a=p.clone(o,$ot),s=p.clone(t.center,RIe),l=t.radius,r=p.subtract(s,a,Dz),d=p.magnitudeSquared(r),m=l*l;if(d<m)return!1;let h=d-m,u=Math.sqrt(h),V=1/Math.sqrt(d),U=u*V*u;r=p.normalize(r,r);let G=p.add(a,p.multiplyByScalar(r,U,SNt),SNt),A=Math.sqrt(h-U*U),S=this._rotationVector(s,e,n,a,i),g=p.fromElements(S.x*S.x*r.x+(S.x*S.y-S.z)*r.y+(S.x*S.z+S.y)*r.z,(S.x*S.y+S.z)*r.x+S.y*S.y*r.y+(S.y*S.z-S.x)*r.z,(S.x*S.z-S.y)*r.x+(S.y*S.z+S.x)*r.y+S.z*S.z*r.z,$ot);g=p.normalize(g,g);let C=p.multiplyByScalar(g,A,$ot);S=p.normalize(p.subtract(p.add(G,C,Dz),s,Dz),Dz);let y=p.dot(e,S);S=p.normalize(p.subtract(p.subtract(G,C,S),s,S),S);let Y=p.dot(e,S);return y<Y?y:Y};var u_=rc;var KAo=b(W(),1);var DAo=b(W(),1);function XR(t){t=f(t,f.EMPTY_OBJECT),this.left=t.left,this._left=void 0,this.right=t.right,this._right=void 0,this.top=t.top,this._top=void 0,this.bottom=t.bottom,this._bottom=void 0,this.near=f(t.near,1),this._near=this.near,this.far=f(t.far,5e8),this._far=this.far,this._cullingVolume=new Jl,this._perspectiveMatrix=new L,this._infinitePerspective=new L}function tat(t){let e=t.top,n=t.bottom,i=t.right,o=t.left,a=t.near,s=t.far;(e!==t._top||n!==t._bottom||o!==t._left||i!==t._right||a!==t._near||s!==t._far)&&(t._left=o,t._right=i,t._top=e,t._bottom=n,t._near=a,t._far=s,t._perspectiveMatrix=L.computePerspectiveOffCenter(o,i,n,e,a,s,t._perspectiveMatrix),t._infinitePerspective=L.computeInfinitePerspectiveOffCenter(o,i,n,e,a,t._infinitePerspective))}Object.defineProperties(XR.prototype,{projectionMatrix:{get:function(){return tat(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return tat(this),this._infinitePerspective}}});var bIe=new p,WIe=new p,fIe=new p,FIe=new p;XR.prototype.computeCullingVolume=function(t,e,n){let i=this._cullingVolume.planes,o=this.top,a=this.bottom,s=this.right,l=this.left,r=this.near,d=this.far,m=p.cross(e,n,bIe),h=WIe;p.multiplyByScalar(e,r,h),p.add(t,h,h);let u=fIe;p.multiplyByScalar(e,d,u),p.add(t,u,u);let R=FIe;p.multiplyByScalar(m,l,R),p.add(h,R,R),p.subtract(R,t,R),p.normalize(R,R),p.cross(R,n,R),p.normalize(R,R);let V=i[0];return c(V)||(V=i[0]=new bt),V.x=R.x,V.y=R.y,V.z=R.z,V.w=-p.dot(R,t),p.multiplyByScalar(m,s,R),p.add(h,R,R),p.subtract(R,t,R),p.cross(n,R,R),p.normalize(R,R),V=i[1],c(V)||(V=i[1]=new bt),V.x=R.x,V.y=R.y,V.z=R.z,V.w=-p.dot(R,t),p.multiplyByScalar(n,a,R),p.add(h,R,R),p.subtract(R,t,R),p.cross(m,R,R),p.normalize(R,R),V=i[2],c(V)||(V=i[2]=new bt),V.x=R.x,V.y=R.y,V.z=R.z,V.w=-p.dot(R,t),p.multiplyByScalar(n,o,R),p.add(h,R,R),p.subtract(R,t,R),p.cross(R,m,R),p.normalize(R,R),V=i[3],c(V)||(V=i[3]=new bt),V.x=R.x,V.y=R.y,V.z=R.z,V.w=-p.dot(R,t),V=i[4],c(V)||(V=i[4]=new bt),V.x=e.x,V.y=e.y,V.z=e.z,V.w=-p.dot(e,h),p.negate(e,R),V=i[5],c(V)||(V=i[5]=new bt),V.x=R.x,V.y=R.y,V.z=R.z,V.w=-p.dot(R,u),this._cullingVolume};XR.prototype.getPixelDimensions=function(t,e,n,i,o){tat(this);let a=1/this.near,s=this.top*a,l=2*i*n*s/e;s=this.right*a;let r=2*i*n*s/t;return o.x=r,o.y=l,o};XR.prototype.clone=function(t){return c(t)||(t=new XR),t.right=this.right,t.left=this.left,t.top=this.top,t.bottom=this.bottom,t.near=this.near,t.far=this.far,t._left=void 0,t._right=void 0,t._top=void 0,t._bottom=void 0,t._near=void 0,t._far=void 0,t};XR.prototype.equals=function(t){return c(t)&&t instanceof XR&&this.right===t.right&&this.left===t.left&&this.top===t.top&&this.bottom===t.bottom&&this.near===t.near&&this.far===t.far};XR.prototype.equalsEpsilon=function(t,e,n){return t===this||c(t)&&t instanceof XR&&k.equalsEpsilon(this.right,t.right,e,n)&&k.equalsEpsilon(this.left,t.left,e,n)&&k.equalsEpsilon(this.top,t.top,e,n)&&k.equalsEpsilon(this.bottom,t.bottom,e,n)&&k.equalsEpsilon(this.near,t.near,e,n)&&k.equalsEpsilon(this.far,t.far,e,n)};var em=XR;function th(t){t=f(t,f.EMPTY_OBJECT),this._offCenterFrustum=new em,this.fov=t.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=t.aspectRatio,this._aspectRatio=void 0,this.near=f(t.near,1),this._near=this.near,this.far=f(t.far,5e8),this._far=this.far,this.xOffset=f(t.xOffset,0),this._xOffset=this.xOffset,this.yOffset=f(t.yOffset,0),this._yOffset=this.yOffset}th.packedLength=6;th.pack=function(t,e,n){return n=f(n,0),e[n++]=t.fov,e[n++]=t.aspectRatio,e[n++]=t.near,e[n++]=t.far,e[n++]=t.xOffset,e[n]=t.yOffset,e};th.unpack=function(t,e,n){return e=f(e,0),c(n)||(n=new th),n.fov=t[e++],n.aspectRatio=t[e++],n.near=t[e++],n.far=t[e++],n.xOffset=t[e++],n.yOffset=t[e],n};function lZ(t){let e=t._offCenterFrustum;(t.fov!==t._fov||t.aspectRatio!==t._aspectRatio||t.near!==t._near||t.far!==t._far||t.xOffset!==t._xOffset||t.yOffset!==t._yOffset)&&(t._aspectRatio=t.aspectRatio,t._fov=t.fov,t._fovy=t.aspectRatio<=1?t.fov:Math.atan(Math.tan(t.fov*.5)/t.aspectRatio)*2,t._near=t.near,t._far=t.far,t._sseDenominator=2*Math.tan(.5*t._fovy),t._xOffset=t.xOffset,t._yOffset=t.yOffset,e.top=t.near*Math.tan(.5*t._fovy),e.bottom=-e.top,e.right=t.aspectRatio*e.top,e.left=-e.right,e.near=t.near,e.far=t.far,e.right+=t.xOffset,e.left+=t.xOffset,e.top+=t.yOffset,e.bottom+=t.yOffset)}Object.defineProperties(th.prototype,{projectionMatrix:{get:function(){return lZ(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return lZ(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return lZ(this),this._fovy}},sseDenominator:{get:function(){return lZ(this),this._sseDenominator}},offCenterFrustum:{get:function(){return lZ(this),this._offCenterFrustum}}});th.prototype.computeCullingVolume=function(t,e,n){return lZ(this),this._offCenterFrustum.computeCullingVolume(t,e,n)};th.prototype.getPixelDimensions=function(t,e,n,i,o){return lZ(this),this._offCenterFrustum.getPixelDimensions(t,e,n,i,o)};th.prototype.clone=function(t){return c(t)||(t=new th),t.aspectRatio=this.aspectRatio,t.fov=this.fov,t.near=this.near,t.far=this.far,t._aspectRatio=void 0,t._fov=void 0,t._near=void 0,t._far=void 0,this._offCenterFrustum.clone(t._offCenterFrustum),t};th.prototype.equals=function(t){return!c(t)||!(t instanceof th)?!1:(lZ(this),lZ(t),this.fov===t.fov&&this.aspectRatio===t.aspectRatio&&this._offCenterFrustum.equals(t._offCenterFrustum))};th.prototype.equalsEpsilon=function(t,e,n){return!c(t)||!(t instanceof th)?!1:(lZ(this),lZ(t),k.equalsEpsilon(this.fov,t.fov,e,n)&&k.equalsEpsilon(this.aspectRatio,t.aspectRatio,e,n)&&this._offCenterFrustum.equalsEpsilon(t._offCenterFrustum,e,n))};var Io=th;var eSo=b(W(),1);var jAo=b(W(),1),Z_={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};Z_.fromGlobeFlags=function(t){return t.enableLighting&&t.dynamicAtmosphereLighting?t.dynamicAtmosphereLightingFromSun?Z_.SUNLIGHT:Z_.SCENE_LIGHT:Z_.NONE};var VT=Object.freeze(Z_);function UIe(){this.lightIntensity=10,this.rayleighCoefficient=new p(55e-7,13e-6,284e-7),this.mieCoefficient=new p(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=VT.NONE}var R_=UIe;var uSo=b(W(),1);var iSo=b(W(),1),b_=`in vec2 v_textureCoordinates; const float M_PI = 3.141592653589793; float vdcRadicalInverse(int i) @@ -10678,14 +10678,14 @@ void main() { out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); } -`;function W_(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(W_.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function GIe(t,e,n){let i=e.createViewportQuadCommand(R_,{framebuffer:n,renderState:he.fromCache({viewport:new Fe(0,0,256,256)})});t._drawCommand=i}W_.prototype.update=function(t){if(!c(this._colorTexture)){let e=t.context,n=new hn({context:e,width:256,height:256,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,sampler:Hn.NEAREST});this._colorTexture=n;let i=new Lr({context:e,colorTextures:[n],destroyAttachments:!1});GIe(this,e,i),this._drawCommand.execute(e),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};W_.prototype.isDestroyed=function(){return!1};W_.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),At(this)};var f_=W_;var WSo=R(W(),1);var gTo=R(W(),1);var INt={};function AIe(t,e,n){let i,o,a;if(t instanceof Io){let s=Math.tan(.5*t.fovy);return i=t.near,o=t.near*s,a=t.aspectRatio*o,Math.max(e*i/a,n*i/o)}else if(t instanceof em)return i=t.near,o=t.top,a=t.right,Math.max(e*i/a,n*i/o);return Math.max(e,n)}var TIe=new p,gNt=new p;function NNt(t,e,n,i){if(c(i)&&n(.5)>i){let o=n(0),a=n(1),s=n(.5),l=s-o,r=s-a;return function(d){let m=n(d);if(d<=.5){let Z=(m-o)/l;return k.lerp(t,-k.PI_OVER_TWO,Z)}let h=(m-a)/r;return k.lerp(-k.PI_OVER_TWO,e,1-h)}}return function(o){return k.lerp(t,e,o)}}function nat(t,e,n,i,o){let a=o,s=Math.max(n,i);if(!c(a)){let l=t.position,r=e,d=t.up,m=t.right,h=t.frustum,Z=p.subtract(l,r,TIe),b=p.magnitude(p.multiplyByScalar(d,p.dot(Z,d),gNt)),u=p.magnitude(p.multiplyByScalar(m,p.dot(Z,m),gNt));a=Math.min(AIe(h,b,u)*.2,1e9)}if(s<a){let d=-Math.pow((a-n)*1e6,.125),m=Math.pow((a-i)*1e6,1/8);return function(h){let Z=h*(m-d)+d;return-Math.pow(Z,8)/1e6+a}}return function(l){return k.lerp(n,i,l)}}function F_(t,e){return k.equalsEpsilon(t,k.TWO_PI,k.EPSILON11)&&(t=0),e>t+Math.PI?t+=k.TWO_PI:e<t-Math.PI&&(t-=k.TWO_PI),t}var yNt=new p;function SIe(t,e,n,i,o,a,s,l){let r=t.camera,d=p.clone(r.position,yNt),m=r.pitch,h=F_(r.heading,i),Z=F_(r.roll,a),b=nat(r,n,d.z,n.z,s),u=NNt(m,o,b,l);function F(U){let G=U.time/e;r.setView({orientation:{heading:k.lerp(h,i,G),pitch:u(G),roll:k.lerp(Z,a,G)}}),K.lerp(d,n,G,r.position),r.position.z=b(G)}return F}function gIe(t,e){t.longitude<e.longitude?t.longitude+=k.TWO_PI:e.longitude+=k.TWO_PI}function EIe(t,e){let n=t.longitude-e.longitude;n<-k.PI?t.longitude+=k.TWO_PI:n>k.PI&&(e.longitude+=k.TWO_PI)}var CIe=new gt,IIe=new gt;function NIe(t,e,n,i,o,a,s,l,r,d){let m=t.camera,Z=t.mapProjection.ellipsoid,b=gt.clone(m.positionCartographic,CIe),u=m.pitch,F=F_(m.heading,i),U=F_(m.roll,a),G=Z.cartesianToCartographic(n,IIe);b.longitude=k.zeroToTwoPi(b.longitude),G.longitude=k.zeroToTwoPi(G.longitude);let A=!1;if(c(l)){let y=k.zeroToTwoPi(l),Y=Math.min(b.longitude,G.longitude),Q=Math.max(b.longitude,G.longitude),J=y>=Y&&y<=Q;if(c(r)){let M=Math.abs(b.longitude-G.longitude),V=k.TWO_PI-M;(J?M:V)<(J?V:M)*r&&!J&&(A=!0)}else J||(A=!0)}A?gIe(b,G):EIe(b,G);let T=nat(m,n,b.height,G.height,s),g=NNt(u,o,T,d);function C(){let y=b.longitude,Y=G.longitude,Q=b.latitude,J=G.latitude;return function(V){let E=V.time/e,I=p.fromRadians(k.lerp(y,Y,E),k.lerp(Q,J,E),T(E),Z);m.setView({destination:I,orientation:{heading:k.lerp(F,i,E),pitch:g(E),roll:k.lerp(U,a,E)}})}}return C()}function yIe(t,e,n,i,o,a,s){let l=t.camera,r=p.clone(l.position,yNt),d=F_(l.heading,i),m=l.frustum.right-l.frustum.left,h=nat(l,n,m,n.z,s);function Z(b){let u=b.time/e;l.setView({orientation:{heading:k.lerp(d,i,u)}}),K.lerp(r,n,u,l.position);let F=h(u),U=l.frustum,G=U.top/U.right,A=(F-(U.right-U.left))*.5;U.right+=A,U.left-=A,U.top=G*U.right,U.bottom=-U.top}return Z}var ENt=new gt,BIe=new p;function eat(t,e){return{startObject:{},stopObject:{},duration:0,complete:t,cancel:e}}function CNt(t,e){function n(){typeof e=="function"&&e(),t.enableInputs=!0}return n}INt.createTween=function(t,e){e=f(e,f.EMPTY_OBJECT);let n=e.destination,i=t.mode;if(i===ut.MORPHING)return eat();let o=f(e.convert,!0),a=t.mapProjection,s=a.ellipsoid,l=e.maximumHeight,r=e.flyOverLongitude,d=e.flyOverLongitudeWeight,m=e.pitchAdjustHeight,h=e.easingFunction;o&&i!==ut.SCENE3D&&(s.cartesianToCartographic(n,ENt),n=a.project(ENt,BIe));let Z=t.camera,b=e.endTransform;c(b)&&Z._setTransform(b);let u=e.duration;c(u)||(u=Math.ceil(p.distance(Z.position,n)/1e6)+2,u=Math.min(u,3));let F=f(e.heading,0),U=f(e.pitch,-k.PI_OVER_TWO),G=f(e.roll,0),A=t.screenSpaceCameraController;A.enableInputs=!1;let T=CNt(A,e.complete),g=CNt(A,e.cancel),C=Z.frustum,y=t.mode===ut.SCENE2D;if(y=y&&K.equalsEpsilon(Z.position,n,k.EPSILON6),y=y&&k.equalsEpsilon(Math.max(C.right-C.left,C.top-C.bottom),n.z,k.EPSILON6),y=y||t.mode!==ut.SCENE2D&&p.equalsEpsilon(n,Z.position,k.EPSILON10),y=y&&k.equalsEpsilon(k.negativePiToPi(F),k.negativePiToPi(Z.heading),k.EPSILON10)&&k.equalsEpsilon(k.negativePiToPi(U),k.negativePiToPi(Z.pitch),k.EPSILON10)&&k.equalsEpsilon(k.negativePiToPi(G),k.negativePiToPi(Z.roll),k.EPSILON10),y)return eat(T,g);let Y=new Array(4);if(Y[ut.SCENE2D]=yIe,Y[ut.SCENE3D]=NIe,Y[ut.COLUMBUS_VIEW]=SIe,u<=0)return eat(function(){Y[i](t,1,n,F,U,G,l,r,d,m)({time:1}),typeof T=="function"&&T()},g);let Q=Y[i](t,u,n,F,U,G,l,r,d,m);if(!c(h)){let J=Z.positionCartographic.height,M=i===ut.SCENE3D?s.cartesianToCartographic(n).height:n.z;J>M&&J>11500?h=Zl.CUBIC_OUT:h=Zl.QUINTIC_IN_OUT}return{duration:u,easingFunction:h,startObject:{time:0},stopObject:{time:u},update:Q,complete:T,cancel:g}};var U_=INt;var CTo=R(W(),1),QIe={ROTATE:0,INFINITE_SCROLL:1},eh=Object.freeze(QIe);var LTo=R(W(),1);var iat={},Oz=t=>t.position.constructor.name==="ConstantPositionProperty"?t:!1,BNt=function(t,e,n,i=mt.WGS84){let o=iat[t.id]||iat[e.id]||null;if(o===null){let l=Oz(t)||Oz(e),r=!Oz(t)&&!Oz(e),d=l||t;o=new BZ(i,d.position.getValue(n)),o.eid=d.id,r||(iat[l.id]=o)}let a=o.eid===t.id?e:t;return o.isPointVisible(a.position.getValue(n))},kIe=function(t,e){let n=0,i=0,o=0;try{let{fromCartesian:a}=gt,{subtract:s,normalize:l,dot:r,distance:d}=p,m=new oZ;m.setEndPoints(a(t),a(e));let h=m.startHeading<0?m.startHeading+k.TWO_PI:m.startHeading;n=k.toDegrees(h);let Z=new p(0,0,0),b=s(t,e,Z);b=l(b,Z);let u=new p,F=p.normalize(t,u),U=r(b,F);i=k.toDegrees(Math.acos(U))-90,o=d(t,e)}catch(a){console.log(a)}return{az:n,el:i,range:o}},oat=class{constructor(e,n,i){this.id=e,this.from=n,this.to=i,this.polylineCollectionArrays=[]}},ip={},YIe=(t,e,n,i=Date.now().toString())=>{if(ip[i])return i;ip[i]=new oat(i,e,n);for(let o=0;o<n.length;o++){let a=new Mc;for(let s=0;s<e.length;s++)a.add({positions:[n[o].position.getValue(t.clock.currentTime),e[s].position.getValue(t.clock.currentTime)],width:1,material:new eo({fabric:{type:"Color",uniforms:{color:v.LIMEGREEN}}}),show:!0});t.scene.primitives.add(a),ip[i].polylineCollectionArrays.push(a)}return ip[i].removeListener=t.clock.onTick.addEventListener(o=>{for(let a in ip)if(ip[a]){let{polylineCollectionArrays:s,from:l,to:r}=ip[a];for(let d=0;d<r.length;d++)for(let m=0;m<l.length;m++){let h=BNt(l[m],r[d],o.currentTime),Z=s[d].get(m);h?(Z.show=!0,Z.positions=[r[d].position.getValue(o.currentTime),l[m].position.getValue(o.currentTime)]):Z.show=!1}}}),t.scene.render(),i},xIe=(t,e)=>{if(e){let n=ip[e];if(!n)return;n.removeListener(),n.polylineCollectionArrays.forEach(i=>{t.scene.primitives.remove(i)}),delete ip[e]}else for(let n in ip)if(ip[n]){let i=ip[n];i.removeListener(),i.polylineCollectionArrays.forEach(o=>{t.scene.primitives.remove(o)}),delete ip[n]}t.scene.render()},XIe=()=>{throw Error("Not Implemented")},x1={calculateAccess:BNt,getAzElRange:kIe,addAccessLines:YIe,removeAccessLines:xIe,calculateSensorAccess:XIe};function fn(t){this._scene=t,this._transform=L.clone(L.IDENTITY),this._invTransform=L.clone(L.IDENTITY),this._actualTransform=L.clone(L.IDENTITY),this._actualInvTransform=L.clone(L.IDENTITY),this._transformChanged=!1,this.position=new p,this._position=new p,this._positionWC=new p,this._positionCartographic=new gt,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new p,this._direction=new p,this._directionWC=new p,this.up=new p,this._up=new p,this._upWC=new p,this.right=new p,this._right=new p,this._rightWC=new p,this.frustum=new Io,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.fov=k.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new It,this._moveEnd=new It,this._changed=new It,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new L,this._invViewMatrix=new L,MNt(this),this._mode=ut.SCENE3D,this._modeChanged=!0;let e=t.mapProjection;this._projection=e,this._maxCoord=e.project(new gt(Math.PI,k.PI_OVER_TWO)),this._max2Dfrustum=void 0,$Nt(this,fn.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=p.magnitude(this.position);n+=n*fn.DEFAULT_VIEW_FACTOR,p.normalize(this.position,this.position),p.multiplyByScalar(this.position,n,this.position)}fn.TRANSFORM_2D=new L(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);fn.TRANSFORM_2D_INVERSE=L.inverseTransformation(fn.TRANSFORM_2D,new L);fn.DEFAULT_VIEW_RECTANGLE=Gt.fromDegrees(-95,-20,-70,90);fn.DEFAULT_VIEW_FACTOR=.5;fn.DEFAULT_OFFSET=new Zu(0,-k.PI_OVER_FOUR,0);function MNt(t){L.computeView(t._position,t._direction,t._up,t._right,t._viewMatrix),L.multiply(t._viewMatrix,t._actualInvTransform,t._viewMatrix),L.inverseTransformation(t._viewMatrix,t._invViewMatrix)}function JIe(t){if(!c(t._oldPositionWC))t._oldPositionWC=p.clone(t.positionWC,t._oldPositionWC);else{t.positionWCDeltaMagnitudeLastFrame=t.positionWCDeltaMagnitude;let e=p.subtract(t.positionWC,t._oldPositionWC,t._oldPositionWC);t.positionWCDeltaMagnitude=p.magnitude(e),t._oldPositionWC=p.clone(t.positionWC,t._oldPositionWC),t.positionWCDeltaMagnitude>0?(t.timeSinceMoved=0,t._lastMovedTimestamp=Oi()):t.timeSinceMoved=Math.max(Oi()-t._lastMovedTimestamp,0)/1e3}}fn.prototype.canPreloadFlight=function(){return c(this._currentFlight)&&this._mode!==ut.SCENE2D};fn.prototype._updateCameraChanged=function(){let t=this;if(JIe(t),t._changed.numberOfListeners===0)return;let e=t.percentageChanged,n=t.heading;c(t._changedHeading)||(t._changedHeading=n);let i=Math.abs(t._changedHeading-n)%k.TWO_PI;i=i>k.PI?k.TWO_PI-i:i;let o=i/Math.PI;o>e&&(t._changedHeading=n);let a=t.roll;c(t._changedRoll)||(t._changedRoll=a);let s=Math.abs(t._changedRoll-a)%k.TWO_PI;s=s>k.PI?k.TWO_PI-s:s;let l=s/Math.PI;if(l>e&&(t._changedRoll=a),(l>e||o>e)&&t._changed.raiseEvent(Math.max(l,o)),t._mode===ut.SCENE2D){if(!c(t._changedFrustum)){t._changedPosition=p.clone(t.position,t._changedPosition),t._changedFrustum=t.frustum.clone();return}let Z=t.position,b=t._changedPosition,u=t.frustum,F=t._changedFrustum,U=Z.x+u.left,G=Z.x+u.right,A=b.x+F.left,T=b.x+F.right,g=Z.y+u.bottom,C=Z.y+u.top,y=b.y+F.bottom,Y=b.y+F.top,Q=Math.max(U,A),J=Math.min(G,T),M=Math.max(g,y),V=Math.min(C,Y),E;if(Q>=J||M>=C)E=1;else{let I=F;U<A&&G>T&&g<y&&C>Y&&(I=u),E=1-(J-Q)*(V-M)/((I.right-I.left)*(I.top-I.bottom))}E>e&&(t._changed.raiseEvent(E),t._changedPosition=p.clone(t.position,t._changedPosition),t._changedFrustum=t.frustum.clone(t._changedFrustum));return}if(!c(t._changedDirection)){t._changedPosition=p.clone(t.positionWC,t._changedPosition),t._changedDirection=p.clone(t.directionWC,t._changedDirection);return}let r=k.acosClamped(p.dot(t.directionWC,t._changedDirection)),d;c(t.frustum.fovy)?d=r/(t.frustum.fovy*.5):d=r;let h=p.distance(t.positionWC,t._changedPosition)/t.positionCartographic.height;(d>e||h>e)&&(t._changed.raiseEvent(Math.max(d,h)),t._changedPosition=p.clone(t.positionWC,t._changedPosition),t._changedDirection=p.clone(t.directionWC,t._changedDirection))};function LIe(t){Pe.basisTo2D(t._projection,t._transform,t._actualTransform)}var MIe=new gt,_Ie=new p,Hz=new p,DIe=new Rt,OIe=new Rt,HIe=new Rt,wIe=new Rt,PIe=new Rt;function vIe(t){let e=t._projection,n=e.ellipsoid,i=L.getColumn(t._transform,3,DIe),o=n.cartesianToCartographic(i,MIe),a=e.project(o,_Ie),s=OIe;s.x=a.z,s.y=a.x,s.z=a.y,s.w=1;let l=Rt.clone(Rt.UNIT_X,PIe),r=Rt.add(L.getColumn(t._transform,0,Hz),i,Hz);n.cartesianToCartographic(r,o),e.project(o,a);let d=HIe;d.x=a.z,d.y=a.x,d.z=a.y,d.w=0,p.subtract(d,s,d),d.x=0;let m=wIe;if(p.magnitudeSquared(d)>k.EPSILON10)p.cross(l,d,m);else{let h=Rt.add(L.getColumn(t._transform,1,Hz),i,Hz);n.cartesianToCartographic(h,o),e.project(o,a),m.x=a.z,m.y=a.x,m.z=a.y,m.w=0,p.subtract(m,s,m),m.x=0,p.magnitudeSquared(m)<k.EPSILON10&&(Rt.clone(Rt.UNIT_Y,d),Rt.clone(Rt.UNIT_Z,m))}p.cross(m,l,d),p.normalize(d,d),p.cross(l,d,m),p.normalize(m,m),L.setColumn(t._actualTransform,0,d,t._actualTransform),L.setColumn(t._actualTransform,1,m,t._actualTransform),L.setColumn(t._actualTransform,2,l,t._actualTransform),L.setColumn(t._actualTransform,3,s,t._actualTransform)}var aat=new p;function cc(t){let e=t._mode,n=!1,i=0;e===ut.SCENE2D&&(i=t.frustum.right-t.frustum.left,n=i!==t._positionCartographic.height);let o=t._position,a=!p.equals(o,t.position)||n;a&&(o=p.clone(t.position,t._position));let s=t._direction;(isNaN(t.direction.x)||isNaN(t.direction.y)||isNaN(t.direction.z))&&(s=p.clone(t._direction,t.direction));let l=!p.equals(s,t.direction);l&&(p.normalize(t.direction,t.direction),s=p.clone(t.direction,t._direction));let r=t._up,d=!p.equals(r,t.up);d&&(p.normalize(t.up,t.up),r=p.clone(t.up,t._up));let m=t._right,h=!p.equals(m,t.right);h&&(p.normalize(t.right,t.right),m=p.clone(t.right,t._right));let Z=t._transformChanged||t._modeChanged;t._transformChanged=!1,Z&&(L.inverseTransformation(t._transform,t._invTransform),t._mode===ut.COLUMBUS_VIEW||t._mode===ut.SCENE2D?L.equals(L.IDENTITY,t._transform)?L.clone(fn.TRANSFORM_2D,t._actualTransform):t._mode===ut.COLUMBUS_VIEW?LIe(t):vIe(t):L.clone(t._transform,t._actualTransform),L.inverseTransformation(t._actualTransform,t._actualInvTransform),t._modeChanged=!1);let b=t._actualTransform;if(a||Z)if(t._positionWC=L.multiplyByPoint(b,o,t._positionWC),e===ut.SCENE3D||e===ut.MORPHING)t._positionCartographic=t._projection.ellipsoid.cartesianToCartographic(t._positionWC,t._positionCartographic);else{let u=aat;u.x=t._positionWC.y,u.y=t._positionWC.z,u.z=t._positionWC.x,e===ut.SCENE2D&&(u.z=i),t._projection.unproject(u,t._positionCartographic)}if(l||d||h){let u=p.dot(s,p.cross(r,m,aat));if(Math.abs(1-u)>k.EPSILON2){let F=1/p.magnitudeSquared(r),U=p.dot(r,s)*F,G=p.multiplyByScalar(s,U,aat);r=p.normalize(p.subtract(r,G,t._up),t._up),p.clone(r,t.up),m=p.cross(s,r,t._right),p.clone(m,t.right)}}(l||Z)&&(t._directionWC=L.multiplyByPointAsVector(b,s,t._directionWC),p.normalize(t._directionWC,t._directionWC)),(d||Z)&&(t._upWC=L.multiplyByPointAsVector(b,r,t._upWC),p.normalize(t._upWC,t._upWC)),(h||Z)&&(t._rightWC=L.multiplyByPointAsVector(b,m,t._rightWC),p.normalize(t._rightWC,t._rightWC)),(a||l||d||h||Z)&&MNt(t)}function _Nt(t,e){let n;return k.equalsEpsilon(Math.abs(t.z),1,k.EPSILON3)?n=Math.atan2(e.y,e.x)-k.PI_OVER_TWO:n=Math.atan2(t.y,t.x)-k.PI_OVER_TWO,k.TWO_PI-k.zeroToTwoPi(n)}function DNt(t){return k.PI_OVER_TWO-k.acosClamped(t.z)}function ONt(t,e,n){let i=0;return k.equalsEpsilon(Math.abs(t.z),1,k.EPSILON3)||(i=Math.atan2(-n.z,e.z),i=k.zeroToTwoPi(i+k.TWO_PI)),i}var vz=new L,Kz=new L;Object.defineProperties(fn.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return cc(this),this._invTransform}},viewMatrix:{get:function(){return cc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return cc(this),this._invViewMatrix}},positionCartographic:{get:function(){return cc(this),this._positionCartographic}},positionWC:{get:function(){return cc(this),this._positionWC}},directionWC:{get:function(){return cc(this),this._directionWC}},upWC:{get:function(){return cc(this),this._upWC}},rightWC:{get:function(){return cc(this),this._rightWC}},heading:{get:function(){if(this._mode!==ut.MORPHING){let t=this._projection.ellipsoid,e=L.clone(this._transform,vz),n=Pe.eastNorthUpToFixedFrame(this.positionWC,t,Kz);this._setTransform(n);let i=_Nt(this.direction,this.up);return this._setTransform(e),i}}},pitch:{get:function(){if(this._mode!==ut.MORPHING){let t=this._projection.ellipsoid,e=L.clone(this._transform,vz),n=Pe.eastNorthUpToFixedFrame(this.positionWC,t,Kz);this._setTransform(n);let i=DNt(this.direction);return this._setTransform(e),i}}},roll:{get:function(){if(this._mode!==ut.MORPHING){let t=this._projection.ellipsoid,e=L.clone(this._transform,vz),n=Pe.eastNorthUpToFixedFrame(this.positionWC,t,Kz);this._setTransform(n);let i=ONt(this.direction,this.up,this.right);return this._setTransform(e),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});fn.prototype.update=function(t){let e=!1;if(t!==this._mode&&(this._mode=t,this._modeChanged=t!==ut.MORPHING,e=this._mode===ut.SCENE2D),e){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ut.SCENE2D&&vNt(this,this.position)};var KIe=new p,zIe=new p,jIe=new p;fn.prototype._setTransform=function(t){let e=p.clone(this.positionWC,KIe),n=p.clone(this.upWC,zIe),i=p.clone(this.directionWC,jIe);L.clone(t,this._transform),this._transformChanged=!0,cc(this);let o=this._actualInvTransform;L.multiplyByPoint(o,e,this.position),L.multiplyByPointAsVector(o,i,this.direction),L.multiplyByPointAsVector(o,n,this.up),p.cross(this.direction,this.up,this.right),cc(this)};var qIe=new K,$Ie=new di,t1e=new p,e1e=new p;function HNt(t){if(!L.equals(L.IDENTITY,t.transform))return p.magnitude(t.position);let e=t._scene,n=e.globe,i=qIe;i.x=e.drawingBufferWidth/2,i.y=e.drawingBufferHeight/2;let o;if(c(n)){let l=t.getPickRay(i,$Ie);o=n.pickWorldCoordinates(l,e,!0,t1e)}let a;e.pickPositionSupported&&(a=e.pickPositionWorldCoordinates(i,e1e));let s;if(c(o)||c(a)){let l=c(a)?p.distance(a,t.positionWC):Number.POSITIVE_INFINITY,r=c(o)?p.distance(o,t.positionWC):Number.POSITIVE_INFINITY;s=Math.min(l,r)}else s=Math.max(t.positionCartographic.height,0);return s}fn.prototype._adjustOrthographicFrustum=function(t){this.frustum instanceof wn&&(!t&&this._positionCartographic.height<15e4||(this.frustum.width=HNt(this)))};var zz=new p,cat=new L,n1e=new L,mat=new wt,hat=new ot,wNt=new gt;function i1e(t,e,n){let i=L.clone(t.transform,cat),o=Pe.eastNorthUpToFixedFrame(e,t._projection.ellipsoid,n1e);t._setTransform(o),p.clone(p.ZERO,t.position),n.heading=n.heading-k.PI_OVER_TWO;let a=wt.fromHeadingPitchRoll(n,mat),s=ot.fromQuaternion(a,hat);ot.getColumn(s,0,t.direction),ot.getColumn(s,2,t.up),p.cross(t.direction,t.up,t.right),t._setTransform(i),t._adjustOrthographicFrustum(!0)}function o1e(t,e,n,i){let o=L.clone(t.transform,cat);if(t._setTransform(L.IDENTITY),!p.equals(e,t.positionWC)){if(i){let l=t._projection,r=l.ellipsoid.cartesianToCartographic(e,wNt);e=l.project(r,zz)}p.clone(e,t.position)}n.heading=n.heading-k.PI_OVER_TWO;let a=wt.fromHeadingPitchRoll(n,mat),s=ot.fromQuaternion(a,hat);ot.getColumn(s,0,t.direction),ot.getColumn(s,2,t.up),p.cross(t.direction,t.up,t.right),t._setTransform(o),t._adjustOrthographicFrustum(!0)}function a1e(t,e,n,i){let o=L.clone(t.transform,cat);if(t._setTransform(L.IDENTITY),!p.equals(e,t.positionWC)){if(i){let r=t._projection,d=r.ellipsoid.cartesianToCartographic(e,wNt);e=r.project(d,zz)}K.clone(e,t.position);let a=-e.z*.5,s=-a,l=t.frustum;if(s>a){let r=l.top/l.right;l.right=s,l.left=a,l.top=l.right*r,l.bottom=-l.top}}if(t._scene.mapMode2D===eh.ROTATE){n.heading=n.heading-k.PI_OVER_TWO,n.pitch=-k.PI_OVER_TWO,n.roll=0;let a=wt.fromHeadingPitchRoll(n,mat),s=ot.fromQuaternion(a,hat);ot.getColumn(s,2,t.up),p.cross(t.direction,t.up,t.right)}t._setTransform(o)}var s1e=new p,l1e=new p,r1e=new p;function PNt(t,e,n,i){let o=p.clone(n.direction,s1e),a=p.clone(n.up,l1e);if(t._scene.mode===ut.SCENE3D){let l=t._projection.ellipsoid,r=Pe.eastNorthUpToFixedFrame(e,l,vz),d=L.inverseTransformation(r,Kz);L.multiplyByPointAsVector(d,o,o),L.multiplyByPointAsVector(d,a,a)}let s=p.cross(o,a,r1e);return i.heading=_Nt(o,a),i.pitch=DNt(o),i.roll=ONt(o,a,s),i}var dat={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},X1=new Jr;fn.prototype.setView=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.orientation,f.EMPTY_OBJECT),n=this._mode;if(n===ut.MORPHING)return;c(t.endTransform)&&this._setTransform(t.endTransform);let i=f(t.convert,!0),o=f(t.destination,p.clone(this.positionWC,zz));c(o)&&c(o.west)&&(o=this.getRectangleCameraCoordinates(o,zz),i=!1),c(e.direction)&&(e=PNt(this,o,e,dat.orientation)),X1.heading=f(e.heading,0),X1.pitch=f(e.pitch,-k.PI_OVER_TWO),X1.roll=f(e.roll,0),n===ut.SCENE3D?i1e(this,o,X1):n===ut.SCENE2D?a1e(this,o,X1,i):o1e(this,o,X1,i)};var d1e=new p;fn.prototype.flyHome=function(t){fn.prototype._resetTrack();let e=this._mode;if(e===ut.MORPHING&&this._scene.completeMorph(),e===ut.SCENE2D)this.flyTo({destination:fn.DEFAULT_VIEW_RECTANGLE,duration:t,endTransform:L.IDENTITY});else if(e===ut.SCENE3D){let n=this.getRectangleCameraCoordinates(fn.DEFAULT_VIEW_RECTANGLE),i=p.magnitude(n);i+=i*fn.DEFAULT_VIEW_FACTOR,p.normalize(n,n),p.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:t,endTransform:L.IDENTITY})}else if(e===ut.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new p(0,-1,1);i=p.multiplyByScalar(p.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:t,orientation:{heading:0,pitch:-Math.acos(p.normalize(i,d1e).z),roll:0},endTransform:L.IDENTITY,convert:!1})}};fn.prototype.worldToCameraCoordinates=function(t,e){return c(e)||(e=new Rt),cc(this),L.multiplyByVector(this._actualInvTransform,t,e)};fn.prototype.worldToCameraCoordinatesPoint=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPoint(this._actualInvTransform,t,e)};fn.prototype.worldToCameraCoordinatesVector=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPointAsVector(this._actualInvTransform,t,e)};fn.prototype.cameraToWorldCoordinates=function(t,e){return c(e)||(e=new Rt),cc(this),L.multiplyByVector(this._actualTransform,t,e)};fn.prototype.cameraToWorldCoordinatesPoint=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPoint(this._actualTransform,t,e)};fn.prototype.cameraToWorldCoordinatesVector=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPointAsVector(this._actualTransform,t,e)};function vNt(t,e){let n=t._scene.mapMode2D===eh.ROTATE,i=t._maxCoord.x,o=t._maxCoord.y,a,s;n?(s=i,a=-s):(s=e.x-i*2,a=e.x+i*2),e.x>i&&(e.x=s),e.x<-i&&(e.x=a),e.y>o&&(e.y=o),e.y<-o&&(e.y=-o)}var QNt=new p;fn.prototype.move=function(t,e){let n=this.position;p.multiplyByScalar(t,e,QNt),p.add(n,QNt,n),this._mode===ut.SCENE2D&&vNt(this,n),this._adjustOrthographicFrustum(!0)};fn.prototype.moveForward=function(t){t=f(t,this.defaultMoveAmount),this._mode===ut.SCENE2D?jz(this,t):this.move(this.direction,t)};fn.prototype.moveBackward=function(t){t=f(t,this.defaultMoveAmount),this._mode===ut.SCENE2D?jz(this,-t):this.move(this.direction,-t)};fn.prototype.moveUp=function(t){t=f(t,this.defaultMoveAmount),this.move(this.up,t)};fn.prototype.moveDown=function(t){t=f(t,this.defaultMoveAmount),this.move(this.up,-t)};fn.prototype.moveRight=function(t){t=f(t,this.defaultMoveAmount),this.move(this.right,t)};fn.prototype.moveLeft=function(t){t=f(t,this.defaultMoveAmount),this.move(this.right,-t)};fn.prototype.lookLeft=function(t){t=f(t,this.defaultLookAmount),this._mode!==ut.SCENE2D&&this.look(this.up,-t)};fn.prototype.lookRight=function(t){t=f(t,this.defaultLookAmount),this._mode!==ut.SCENE2D&&this.look(this.up,t)};fn.prototype.lookUp=function(t){t=f(t,this.defaultLookAmount),this._mode!==ut.SCENE2D&&this.look(this.right,-t)};fn.prototype.lookDown=function(t){t=f(t,this.defaultLookAmount),this._mode!==ut.SCENE2D&&this.look(this.right,t)};var c1e=new wt,m1e=new ot;fn.prototype.look=function(t,e){let n=f(e,this.defaultLookAmount),i=wt.fromAxisAngle(t,-n,c1e),o=ot.fromQuaternion(i,m1e),a=this.direction,s=this.up,l=this.right;ot.multiplyByVector(o,a,a),ot.multiplyByVector(o,s,s),ot.multiplyByVector(o,l,l)};fn.prototype.twistLeft=function(t){t=f(t,this.defaultLookAmount),this.look(this.direction,t)};fn.prototype.twistRight=function(t){t=f(t,this.defaultLookAmount),this.look(this.direction,-t)};var h1e=new wt,p1e=new ot;fn.prototype.rotate=function(t,e){let n=f(e,this.defaultRotateAmount),i=wt.fromAxisAngle(t,-n,h1e),o=ot.fromQuaternion(i,p1e);ot.multiplyByVector(o,this.position,this.position),ot.multiplyByVector(o,this.direction,this.direction),ot.multiplyByVector(o,this.up,this.up),p.cross(this.direction,this.up,this.right),p.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};fn.prototype.rotateDown=function(t){t=f(t,this.defaultRotateAmount),KNt(this,t)};fn.prototype.rotateUp=function(t){t=f(t,this.defaultRotateAmount),KNt(this,-t)};var u1e=new p,Z1e=new p,V1e=new p,kNt=new p;function KNt(t,e){let n=t.position;if(c(t.constrainedAxis)&&!p.equalsEpsilon(t.position,p.ZERO,k.EPSILON2)){let i=p.normalize(n,u1e),o=p.equalsEpsilon(i,t.constrainedAxis,k.EPSILON2),a=p.equalsEpsilon(i,p.negate(t.constrainedAxis,kNt),k.EPSILON2);if(!o&&!a){let s=p.normalize(t.constrainedAxis,Z1e),l=p.dot(i,s),r=k.acosClamped(l);e>0&&e>r&&(e=r-k.EPSILON4),l=p.dot(i,p.negate(s,kNt)),r=k.acosClamped(l),e<0&&-e>r&&(e=-r+k.EPSILON4);let d=p.cross(s,i,V1e);t.rotate(d,e)}else(o&&e<0||a&&e>0)&&t.rotate(t.right,e)}else t.rotate(t.right,e)}fn.prototype.rotateRight=function(t){t=f(t,this.defaultRotateAmount),zNt(this,-t)};fn.prototype.rotateLeft=function(t){t=f(t,this.defaultRotateAmount),zNt(this,t)};function zNt(t,e){c(t.constrainedAxis)?t.rotate(t.constrainedAxis,e):t.rotate(t.up,e)}function jz(t,e){let n=t.frustum,i;if(e=e*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-e,a=n.bottom+e,s=t._maxCoord.y;t._scene.mapMode2D===eh.ROTATE&&(s*=t.maximumZoomFactor),a>s&&(a=s,o=-s),o<=a&&(o=1,a=-1),i=n.right/n.top,n.top=o,n.bottom=a,n.right=n.top*i,n.left=-n.right}else{let o=n.right-e,a=n.left+e,s=t._maxCoord.x;t._scene.mapMode2D===eh.ROTATE&&(s*=t.maximumZoomFactor),o>s&&(o=s,a=-s),o<=a&&(o=1,a=-1),i=n.top/n.right,n.right=o,n.left=a,n.top=n.right*i,n.bottom=-n.top}}function jNt(t,e){t.move(t.direction,e)}fn.prototype.zoomIn=function(t){t=f(t,this.defaultZoomAmount),this._mode===ut.SCENE2D?jz(this,t):jNt(this,t)};fn.prototype.zoomOut=function(t){t=f(t,this.defaultZoomAmount),this._mode===ut.SCENE2D?jz(this,-t):jNt(this,-t)};fn.prototype.getMagnitude=function(){if(this._mode===ut.SCENE3D)return p.magnitude(this.position);if(this._mode===ut.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ut.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var b1e=new L;fn.prototype.lookAt=function(t,e){let n=Pe.eastNorthUpToFixedFrame(t,mt.WGS84,b1e);this.lookAtTransform(n,e)};var R1e=new p,W1e=new wt,f1e=new wt,F1e=new ot;function qNt(t,e,n){e=k.clamp(e,-k.PI_OVER_TWO,k.PI_OVER_TWO),t=k.zeroToTwoPi(t)-k.PI_OVER_TWO;let i=wt.fromAxisAngle(p.UNIT_Y,-e,W1e),o=wt.fromAxisAngle(p.UNIT_Z,-t,f1e),a=wt.multiply(o,i,o),s=ot.fromQuaternion(a,F1e),l=p.clone(p.UNIT_X,R1e);return ot.multiplyByVector(s,l,l),p.negate(l,l),p.multiplyByScalar(l,n,l),l}fn.prototype.lookAtTransform=function(t,e){if(this._setTransform(t),!c(e))return;let n;if(c(e.heading)?n=qNt(e.heading,e.pitch,e.range):n=e,this._mode===ut.SCENE2D){K.clone(K.ZERO,this.position),p.negate(n,this.up),this.up.z=0,p.magnitudeSquared(this.up)<k.EPSILON10&&p.clone(p.UNIT_Y,this.up),p.normalize(this.up,this.up),this._setTransform(L.IDENTITY),p.negate(p.UNIT_Z,this.direction),p.cross(this.direction,this.up,this.right),p.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=p.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(t);return}p.clone(n,this.position),p.negate(this.position,this.direction),p.normalize(this.direction,this.direction),p.cross(this.direction,p.UNIT_Z,this.right),p.magnitudeSquared(this.right)<k.EPSILON10&&p.clone(p.UNIT_X,this.right),p.normalize(this.right,this.right),p.cross(this.right,this.direction,this.up),p.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var G_=new gt,U1e=new gt,G1e=new p,A1e=new p,T1e=new p,S1e=new p,g1e=new p,E1e=new p,C1e=new p,sat=new p,I1e={direction:new p,right:new p,up:new p},YNt;function dc(t,e,n,i){return Math.abs(p.dot(e,n))/i-p.dot(t,n)}function $Nt(t,e,n,i){let o=t._projection.ellipsoid,a=i?t:I1e,s=e.north,l=e.south,r=e.east,d=e.west;d>r&&(r+=k.TWO_PI);let m=(d+r)*.5,h;if(l<-k.PI_OVER_TWO+k.RADIANS_PER_DEGREE&&s>k.PI_OVER_TWO-k.RADIANS_PER_DEGREE)h=0;else{let J=G_;J.longitude=m,J.latitude=s,J.height=0;let M=U1e;M.longitude=m,M.latitude=l,M.height=0;let V=YNt;(!c(V)||V.ellipsoid!==o)&&(YNt=V=new oZ(void 0,void 0,o)),V.setEndPoints(J,M),h=V.interpolateUsingFraction(.5,G_).latitude}let Z=G_;Z.longitude=m,Z.latitude=h,Z.height=0;let b=o.cartographicToCartesian(Z,C1e),u=G_;u.longitude=r,u.latitude=s;let F=o.cartographicToCartesian(u,G1e);u.longitude=d;let U=o.cartographicToCartesian(u,T1e);u.longitude=m;let G=o.cartographicToCartesian(u,g1e);u.latitude=l;let A=o.cartographicToCartesian(u,E1e);u.longitude=r;let T=o.cartographicToCartesian(u,S1e);u.longitude=d;let g=o.cartographicToCartesian(u,A1e);p.subtract(U,b,U),p.subtract(T,b,T),p.subtract(F,b,F),p.subtract(g,b,g),p.subtract(G,b,G),p.subtract(A,b,A);let C=o.geodeticSurfaceNormal(b,a.direction);p.negate(C,C);let y=p.cross(C,p.UNIT_Z,a.right);p.normalize(y,y);let Y=p.cross(y,C,a.up),Q;if(t.frustum instanceof wn){let J=Math.max(p.distance(F,U),p.distance(T,g)),M=Math.max(p.distance(F,T),p.distance(U,g)),V,E,I=t.frustum._offCenterFrustum,B=I.right/I.top,X=M*B;J>X?(V=J,E=V/B):(E=M,V=X),Q=Math.max(V,E)}else{let J=Math.tan(t.frustum.fovy*.5),M=t.frustum.aspectRatio*J;if(Q=Math.max(dc(C,Y,U,J),dc(C,Y,T,J),dc(C,Y,F,J),dc(C,Y,g,J),dc(C,Y,G,J),dc(C,Y,A,J),dc(C,y,U,M),dc(C,y,T,M),dc(C,y,F,M),dc(C,y,g,M),dc(C,y,G,M),dc(C,y,A,M)),l<0&&s>0){let V=G_;V.longitude=d,V.latitude=0,V.height=0;let E=o.cartographicToCartesian(V,sat);p.subtract(E,b,E),Q=Math.max(Q,dc(C,Y,E,J),dc(C,y,E,M)),V.longitude=r,E=o.cartographicToCartesian(V,sat),p.subtract(E,b,E),Q=Math.max(Q,dc(C,Y,E,J),dc(C,y,E,M))}}return p.add(b,p.multiplyByScalar(C,-Q,sat),n)}var N1e=new gt,y1e=new p,B1e=new p;function Q1e(t,e,n){let i=t._projection;e.west>e.east&&(e=Gt.MAX_VALUE);let o=t._actualTransform,a=t._actualInvTransform,s=N1e;s.longitude=e.east,s.latitude=e.north;let l=i.project(s,y1e);L.multiplyByPoint(o,l,l),L.multiplyByPoint(a,l,l),s.longitude=e.west,s.latitude=e.south;let r=i.project(s,B1e);if(L.multiplyByPoint(o,r,r),L.multiplyByPoint(a,r,r),n.x=(l.x-r.x)*.5+r.x,n.y=(l.y-r.y)*.5+r.y,c(t.frustum.fovy)){let d=Math.tan(t.frustum.fovy*.5),m=t.frustum.aspectRatio*d;n.z=Math.max((l.x-r.x)/m,(l.y-r.y)/d)*.5}else{let d=l.x-r.x,m=l.y-r.y;n.z=Math.max(d,m)}return n}var k1e=new gt,Y1e=new p,x1e=new p;function X1e(t,e,n){let i=t._projection,o=e.east;e.west>e.east&&(t._scene.mapMode2D===eh.INFINITE_SCROLL?o+=k.TWO_PI:(e=Gt.MAX_VALUE,o=e.east));let a=k1e;a.longitude=o,a.latitude=e.north;let s=i.project(a,Y1e);a.longitude=e.west,a.latitude=e.south;let l=i.project(a,x1e),r=Math.abs(s.x-l.x)*.5,d=Math.abs(s.y-l.y)*.5,m,h,Z=t.frustum.right/t.frustum.top,b=d*Z;return r>b?(m=r,h=m/Z):(h=d,m=b),d=Math.max(2*m,2*h),n.x=(s.x-l.x)*.5+l.x,n.y=(s.y-l.y)*.5+l.y,a=i.unproject(n,a),a.height=d,n=i.project(a,n),n}fn.prototype.getRectangleCameraCoordinates=function(t,e){let n=this._mode;if(c(e)||(e=new p),n===ut.SCENE3D)return $Nt(this,t,e);if(n===ut.COLUMBUS_VIEW)return Q1e(this,t,e);if(n===ut.SCENE2D)return X1e(this,t,e)};var J1e=new di;function L1e(t,e,n,i){n=f(n,mt.WGS84);let o=t.getPickRay(e,J1e),a=no.rayEllipsoid(o,n);if(!a)return;let s=a.start>0?a.start:a.stop;return di.getPoint(o,s,i)}var M1e=new di;function _1e(t,e,n,i){let a=t.getPickRay(e,M1e).origin;a=p.fromElements(a.y,a.z,0,a);let s=n.unproject(a);if(!(s.latitude<-k.PI_OVER_TWO||s.latitude>k.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var D1e=new di;function O1e(t,e,n,i){let o=t.getPickRay(e,D1e),a=-o.origin.x/o.direction.x;di.getPoint(o,a,i);let s=n.unproject(new p(i.y,i.z,0));if(!(s.latitude<-k.PI_OVER_TWO||s.latitude>k.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}fn.prototype.pickEllipsoid=function(t,e,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(c(n)||(n=new p),e=f(e,mt.WGS84),this._mode===ut.SCENE3D)n=L1e(this,t,e,n);else if(this._mode===ut.SCENE2D)n=_1e(this,t,this._projection,n);else if(this._mode===ut.COLUMBUS_VIEW)n=O1e(this,t,this._projection,n);else return;return n}};var H1e=new p,w1e=new p,P1e=new p;function v1e(t,e,n){let i=t._scene.canvas,o=i.clientWidth,a=i.clientHeight,s=Math.tan(t.frustum.fovy*.5),l=t.frustum.aspectRatio*s,r=t.frustum.near,d=2/o*e.x-1,m=2/a*(a-e.y)-1,h=t.positionWC;p.clone(h,n.origin);let Z=p.multiplyByScalar(t.directionWC,r,H1e);p.add(h,Z,Z);let b=p.multiplyByScalar(t.rightWC,d*r*l,w1e),u=p.multiplyByScalar(t.upWC,m*r*s,P1e),F=p.add(Z,b,n.direction);return p.add(F,u,F),p.subtract(F,h,F),p.normalize(F,F),n}var wz=new p;function K1e(t,e,n){let i=t._scene.canvas,o=i.clientWidth,a=i.clientHeight,s=t.frustum,l=s.offCenterFrustum;c(l)&&(s=l);let r=2/o*e.x-1;r*=(s.right-s.left)*.5;let d=2/a*(a-e.y)-1;d*=(s.top-s.bottom)*.5;let m=n.origin;return p.clone(t.position,m),p.multiplyByScalar(t.right,r,wz),p.add(wz,m,m),p.multiplyByScalar(t.up,d,wz),p.add(wz,m,m),p.clone(t.directionWC,n.direction),(t._mode===ut.COLUMBUS_VIEW||t._mode===ut.SCENE2D)&&p.fromElements(n.origin.z,n.origin.x,n.origin.y,n.origin),n}fn.prototype.getPickRay=function(t,e){c(e)||(e=new di);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return c(i.aspectRatio)&&c(i.fov)&&c(i.near)?v1e(this,t,e):K1e(this,t,e)};var z1e=new p,j1e=new p;fn.prototype.distanceToBoundingSphere=function(t){let e=p.subtract(this.positionWC,t.center,z1e),n=p.multiplyByScalar(this.directionWC,p.dot(e,this.directionWC),j1e);return Math.max(0,p.magnitude(n)-t.radius)};var q1e=new K;fn.prototype.getPixelSize=function(t,e,n){let i=this.distanceToBoundingSphere(t),o=this.frustum.getPixelDimensions(e,n,i,this._scene.pixelRatio,q1e);return Math.max(o.x,o.y)};function $1e(t,e,n,i,o,a){let s=p.clone(e);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function l(r){let d=p.lerp(e,s,r.time,new p);t.worldToCameraCoordinatesPoint(d,t.position)}return{easingFunction:Zl.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:a,update:l}}var tNe=new p,xNt=new p,eNe=new p,nNe=new p;function iNe(t,e){let n=t.position,i=t.direction,o=t.worldToCameraCoordinatesVector(p.UNIT_X,tNe),a=-p.dot(o,n)/p.dot(o,i),s=p.add(n,p.multiplyByScalar(i,a,xNt),xNt);t.cameraToWorldCoordinatesPoint(s,s),n=t.cameraToWorldCoordinatesPoint(t.position,eNe);let l=Math.tan(t.frustum.fovy*.5),r=t.frustum.aspectRatio*l,d=p.magnitude(p.subtract(n,s,nNe)),m=r*d,h=l*d,Z=t._maxCoord.x,b=t._maxCoord.y,u=Math.max(m-Z,Z),F=Math.max(h-b,b);if(n.z<-u||n.z>u||n.y<-F||n.y>F){let U=s.y<-u||s.y>u,G=s.z<-F||s.z>F;if(U||G)return $1e(t,n,s,u,F,e)}}fn.prototype.createCorrectPositionTween=function(t){if(this._mode===ut.COLUMBUS_VIEW)return iNe(this,t)};var oNe=new p,Qr={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};fn.prototype.cancelFlight=function(){c(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};fn.prototype.completeFlight=function(){if(c(this._currentFlight)){this._currentFlight.cancelTween();let t={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};t.destination=Qr.destination,t.orientation.heading=Qr.heading,t.orientation.pitch=Qr.pitch,t.orientation.roll=Qr.roll,this.setView(t),c(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};fn.prototype.flyTo=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.destination;if(this._mode===ut.MORPHING)return;this.cancelFlight();let i=e instanceof Gt;i&&(e=this.getRectangleCameraCoordinates(e,oNe));let o=f(t.orientation,f.EMPTY_OBJECT);if(c(o.direction)&&(o=PNt(this,e,o,dat.orientation)),c(t.duration)&&t.duration<=0){let m=dat;m.destination=t.destination,m.orientation.heading=o.heading,m.orientation.pitch=o.pitch,m.orientation.roll=o.roll,m.convert=t.convert,m.endTransform=t.endTransform,this.setView(m),typeof t.complete=="function"&&t.complete();return}let a=this,s;Qr.destination=e,Qr.heading=o.heading,Qr.pitch=o.pitch,Qr.roll=o.roll,Qr.duration=t.duration,Qr.complete=function(){s===a._currentFlight&&(a._currentFlight=void 0),c(t.complete)&&t.complete()},Qr.cancel=t.cancel,Qr.endTransform=t.endTransform,Qr.convert=i?!1:t.convert,Qr.maximumHeight=t.maximumHeight,Qr.pitchAdjustHeight=t.pitchAdjustHeight,Qr.flyOverLongitude=t.flyOverLongitude,Qr.flyOverLongitudeWeight=t.flyOverLongitudeWeight,Qr.easingFunction=t.easingFunction;let l=this._scene,r=U_.createTween(l,Qr);if(r.duration===0){typeof r.complete=="function"&&r.complete();return}s=l.tweens.add(r),this._currentFlight=s;let d=this._scene.preloadFlightCamera;this._mode!==ut.SCENE2D&&(c(d)||(d=fn.clone(this)),d.setView({destination:e,orientation:o}),this._scene.preloadFlightCullingVolume=d.frustum.computeCullingVolume(d.positionWC,d.directionWC,d.upWC))};function aNe(t,e){let n=t.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(e/o,e/i)}function sNe(t,e){let n=t.frustum,i=n.offCenterFrustum;c(i)&&(n=i);let o,a,s=n.right/n.top,l=e*s;return e>l?(o=e,a=o/s):(a=e,o=l),Math.max(o,a)*1.5}var lNe=100;function tyt(t,e,n){n=Zu.clone(c(n)?n:fn.DEFAULT_OFFSET);let i=t._scene.screenSpaceCameraController.minimumZoomDistance,o=t._scene.screenSpaceCameraController.maximumZoomDistance,a=n.range;if(!c(a)||a===0){let s=e.radius;s===0?n.range=lNe:t.frustum instanceof wn||t._mode===ut.SCENE2D?n.range=sNe(t,s):n.range=aNe(t,s),n.range=k.clamp(n.range,i,o)}return n}fn.prototype.viewBoundingSphere=function(t,e){e=tyt(this,t,e),this.lookAt(t.center,e)};var rNe=new L,dNe=new p,cNe=new p,mNe=new p,hNe=new p,pNe=new Rt,uNe=new wt,ZNe=new ot;fn.prototype.flyToBoundingSphere=function(t,e){e=f(e,f.EMPTY_OBJECT);let n=this._mode===ut.SCENE2D||this._mode===ut.COLUMBUS_VIEW;this._setTransform(L.IDENTITY);let i=tyt(this,t,e.offset),o;n?o=p.multiplyByScalar(p.UNIT_Z,i.range,dNe):o=qNt(i.heading,i.pitch,i.range);let a=Pe.eastNorthUpToFixedFrame(t.center,mt.WGS84,rNe);L.multiplyByPoint(a,o,o);let s,l;if(!n){if(s=p.subtract(t.center,o,cNe),p.normalize(s,s),l=L.multiplyByPointAsVector(a,p.UNIT_Z,mNe),1-Math.abs(p.dot(s,l))<k.EPSILON6){let d=wt.fromAxisAngle(s,i.heading,uNe),m=ot.fromQuaternion(d,ZNe);p.fromCartesian4(L.getColumn(a,1,pNe),l),ot.multiplyByVector(m,l,l)}let r=p.cross(s,l,hNe);p.cross(r,s,l),p.normalize(l,l)}this.flyTo({destination:o,orientation:{direction:s,up:l},duration:e.duration,complete:e.complete,cancel:e.cancel,endTransform:e.endTransform,maximumHeight:e.maximumHeight,easingFunction:e.easingFunction,flyOverLongitude:e.flyOverLongitude,flyOverLongitudeWeight:e.flyOverLongitudeWeight,pitchAdjustHeight:e.pitchAdjustHeight})};var XNt=new p,JNt=new p,lat=new p,LNt=new p,A_=[new p,new p,new p,new p];function VNe(t,e){let n=e.radii,i=t.positionWC,o=p.multiplyComponents(e.oneOverRadii,i,XNt),a=p.magnitude(o),s=p.normalize(o,JNt),l,r;p.equalsEpsilon(s,p.UNIT_Z,k.EPSILON10)?(l=new p(0,1,0),r=new p(0,0,1)):(l=p.normalize(p.cross(p.UNIT_Z,s,lat),lat),r=p.normalize(p.cross(s,l,LNt),LNt));let d=Math.sqrt(p.magnitudeSquared(o)-1),m=p.multiplyByScalar(s,1/a,XNt),h=d/a,Z=p.multiplyByScalar(l,h,JNt),b=p.multiplyByScalar(r,h,lat),u=p.add(m,b,A_[0]);p.subtract(u,Z,u),p.multiplyComponents(n,u,u);let F=p.subtract(m,b,A_[1]);p.subtract(F,Z,F),p.multiplyComponents(n,F,F);let U=p.subtract(m,b,A_[2]);p.add(U,Z,U),p.multiplyComponents(n,U,U);let G=p.add(m,b,A_[3]);return p.add(G,Z,G),p.multiplyComponents(n,G,G),A_}var rat=new K,bNe=new p,uU=[new gt,new gt,new gt,new gt];function Pz(t,e,n,i,o,a){rat.x=t,rat.y=e;let s=i.pickEllipsoid(rat,o,bNe);return c(s)?(uU[n]=o.cartesianToCartographic(s,uU[n]),1):(uU[n]=o.cartesianToCartographic(a[n],uU[n]),0)}fn.prototype.computeViewRectangle=function(t,e){t=f(t,mt.WGS84);let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new Ft(p.ZERO,t.maximumRadius);if(n.computeVisibility(i)===yn.OUTSIDE)return;let a=this._scene.canvas,s=a.clientWidth,l=a.clientHeight,r=0,d=VNe(this,t);if(r+=Pz(0,0,0,this,t,d),r+=Pz(0,l,1,this,t,d),r+=Pz(s,l,2,this,t,d),r+=Pz(s,0,3,this,t,d),r<2)return Gt.MAX_VALUE;e=Gt.fromCartographicArray(uU,e);let m=0,h=uU[3].longitude;for(let Z=0;Z<4;++Z){let b=uU[Z].longitude,u=Math.abs(b-h);u>k.PI?m+=k.TWO_PI-u:m+=u,h=b}return k.equalsEpsilon(Math.abs(m),k.TWO_PI,k.EPSILON9)&&(e.west=-k.PI,e.east=k.PI,uU[0].latitude>=0?e.north=k.PI_OVER_TWO:e.south=-k.PI_OVER_TWO),e};fn.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ut.SCENE2D||this.frustum instanceof Io)return;let t=this._scene;this.frustum=new Io,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.fov=k.toRadians(60)};fn.prototype.switchToOrthographicFrustum=function(){if(this._mode===ut.SCENE2D||this.frustum instanceof wn)return;let t=HNt(this),e=this._scene;this.frustum=new wn,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.width=t};fn.clone=function(t,e){return c(e)||(e=new fn(t._scene)),p.clone(t.position,e.position),p.clone(t.direction,e.direction),p.clone(t.up,e.up),p.clone(t.right,e.right),L.clone(t._transform,e.transform),e._transformChanged=!0,e.frustum=t.frustum.clone(),e};var{getAzElRange:pat}=x1,{PI_OVER_THREE:eyt}=k;fn.prototype.trackFromTo=function(t,e){this.unTrack(),this.fromEntity=t,this.toEntity=e;let n=this.toEntity.position.getValue(this._scene._frameState.time),i=this.fromEntity.position.getValue(this._scene._frameState.time),{range:o}=pat(n,i);this.currentZoomLevel=o,this._setTrackListener=this._scene._preRender.addEventListener(this._setTrack.bind(this));let{toEntity:a,fromEntity:s}=this,{time:l}=this._scene._frameState;this._wheelEventListener=this._scene.canvas.addEventListener("wheel",r=>{r.preventDefault();let d=a.position.getValue(l),m=s.position.getValue(l);if(!d||!m)return;let{range:h}=x1.getAzElRange(d,m),Z=this.currentZoomLevel/h,b=Math.max(1e-5,Math.log(1+2*Z)),u=r.deltaY*this.scrollFactor*b;this.currentZoomLevel=Math.min(Math.max(0,this.currentZoomLevel+u),h),this.currentZoomLevel<h?this.zoomActive=!0:this.zoomActive=!1,this._scene.render()})};fn.prototype.eyeDistToTarget=null;fn.prototype.fromEntity=null;fn.prototype.toEntity=null;fn.prototype.cmax=eyt;fn.prototype.scrollFactor=1e3;fn.prototype.currentZoomLevel=-1;fn.prototype.CATS=0;fn.prototype.zoomActive=!1;fn.prototype.trackDebug=!1;fn.prototype.cmin=function(t){return 2*Math.atan(1/t)};fn.prototype._resetTrack=function(){this?.frustum?.fov&&(this.frustum.fov=eyt),this._setTrackListener&&this._setTrackListener(),this._wheelEventListener&&this._wheelEventListener()};fn.prototype.unTrack=function(t=!0){this._wheelEventListener&&(this._scene.canvas.removeEventListener("wheel",this._wheelEventListener),this._wheelEventListener=null),this._setTrackListener&&this._scene._preRender.removeEventListener(this._setTrackListener),t&&this.flyHome(0),this.fromEntity=null,this.toEntity=null,this._resetTrack()};fn.prototype._setZoom=function(){let t=this.toEntity.position.getValue(this._scene._frameState.time),e=this.fromEntity.position.getValue(this._scene._frameState.time),{range:n}=pat(t,e),i=Math.min(this.currentZoomLevel,n),o=this.cmin(n);return(this.cmax-o)*(i/n)+o};fn.prototype._setTrack=function(){try{let t=this.toEntity.position.getValue(this._scene._frameState.time),e=this.fromEntity.position.getValue(this._scene._frameState.time),n=new p;p.subtract(t,e,n),p.normalize(n,n),p.multiplyByScalar(n,-1e-32,n);let i=new L,o=new L;this.fromEntity.computeModelMatrix(this._scene._frameState.time,i,!1,ri.ENU),L.inverse(i,o),L.multiplyByPointAsVector(o,n,n),this.lookAtTransform(i,n);let{az:a,el:s,range:l}=pat(t,e);this.frustum.fov=this.zoomActive?this._setZoom():this.cmax;let r=(this.frustum.fov-this.cmin(l))/(this.cmax-this.cmin(l));this.eyeDistToTarget=(1-r)*.1+r*l;let d=_V.computeSunPositionInEarthInertialFrame(this._scene._frameState.time),m=p.subtract(d,t,new p),h=p.normalize(m,new p),Z=p.normalize(p.subtract(t,e,new p),new p);this.CATS=p.dot(h,Z);let b=document.getElementById("debugPanel");this.trackDebug?(b||(b=document.createElement("div"),b.id="debugPanel",b.style.cssText=` +`;function W_(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(W_.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function GIe(t,e,n){let i=e.createViewportQuadCommand(b_,{framebuffer:n,renderState:he.fromCache({viewport:new Fe(0,0,256,256)})});t._drawCommand=i}W_.prototype.update=function(t){if(!c(this._colorTexture)){let e=t.context,n=new hn({context:e,width:256,height:256,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,sampler:Hn.NEAREST});this._colorTexture=n;let i=new Lr({context:e,colorTextures:[n],destroyAttachments:!1});GIe(this,e,i),this._drawCommand.execute(e),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};W_.prototype.isDestroyed=function(){return!1};W_.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),At(this)};var f_=W_;var WTo=b(W(),1);var gSo=b(W(),1);var INt={};function AIe(t,e,n){let i,o,a;if(t instanceof Io){let s=Math.tan(.5*t.fovy);return i=t.near,o=t.near*s,a=t.aspectRatio*o,Math.max(e*i/a,n*i/o)}else if(t instanceof em)return i=t.near,o=t.top,a=t.right,Math.max(e*i/a,n*i/o);return Math.max(e,n)}var SIe=new p,gNt=new p;function NNt(t,e,n,i){if(c(i)&&n(.5)>i){let o=n(0),a=n(1),s=n(.5),l=s-o,r=s-a;return function(d){let m=n(d);if(d<=.5){let u=(m-o)/l;return k.lerp(t,-k.PI_OVER_TWO,u)}let h=(m-a)/r;return k.lerp(-k.PI_OVER_TWO,e,1-h)}}return function(o){return k.lerp(t,e,o)}}function nat(t,e,n,i,o){let a=o,s=Math.max(n,i);if(!c(a)){let l=t.position,r=e,d=t.up,m=t.right,h=t.frustum,u=p.subtract(l,r,SIe),R=p.magnitude(p.multiplyByScalar(d,p.dot(u,d),gNt)),V=p.magnitude(p.multiplyByScalar(m,p.dot(u,m),gNt));a=Math.min(AIe(h,R,V)*.2,1e9)}if(s<a){let d=-Math.pow((a-n)*1e6,.125),m=Math.pow((a-i)*1e6,1/8);return function(h){let u=h*(m-d)+d;return-Math.pow(u,8)/1e6+a}}return function(l){return k.lerp(n,i,l)}}function F_(t,e){return k.equalsEpsilon(t,k.TWO_PI,k.EPSILON11)&&(t=0),e>t+Math.PI?t+=k.TWO_PI:e<t-Math.PI&&(t-=k.TWO_PI),t}var yNt=new p;function TIe(t,e,n,i,o,a,s,l){let r=t.camera,d=p.clone(r.position,yNt),m=r.pitch,h=F_(r.heading,i),u=F_(r.roll,a),R=nat(r,n,d.z,n.z,s),V=NNt(m,o,R,l);function F(U){let G=U.time/e;r.setView({orientation:{heading:k.lerp(h,i,G),pitch:V(G),roll:k.lerp(u,a,G)}}),K.lerp(d,n,G,r.position),r.position.z=R(G)}return F}function gIe(t,e){t.longitude<e.longitude?t.longitude+=k.TWO_PI:e.longitude+=k.TWO_PI}function EIe(t,e){let n=t.longitude-e.longitude;n<-k.PI?t.longitude+=k.TWO_PI:n>k.PI&&(e.longitude+=k.TWO_PI)}var CIe=new gt,IIe=new gt;function NIe(t,e,n,i,o,a,s,l,r,d){let m=t.camera,u=t.mapProjection.ellipsoid,R=gt.clone(m.positionCartographic,CIe),V=m.pitch,F=F_(m.heading,i),U=F_(m.roll,a),G=u.cartesianToCartographic(n,IIe);R.longitude=k.zeroToTwoPi(R.longitude),G.longitude=k.zeroToTwoPi(G.longitude);let A=!1;if(c(l)){let y=k.zeroToTwoPi(l),Y=Math.min(R.longitude,G.longitude),Q=Math.max(R.longitude,G.longitude),J=y>=Y&&y<=Q;if(c(r)){let M=Math.abs(R.longitude-G.longitude),Z=k.TWO_PI-M;(J?M:Z)<(J?Z:M)*r&&!J&&(A=!0)}else J||(A=!0)}A?gIe(R,G):EIe(R,G);let S=nat(m,n,R.height,G.height,s),g=NNt(V,o,S,d);function C(){let y=R.longitude,Y=G.longitude,Q=R.latitude,J=G.latitude;return function(Z){let E=Z.time/e,I=p.fromRadians(k.lerp(y,Y,E),k.lerp(Q,J,E),S(E),u);m.setView({destination:I,orientation:{heading:k.lerp(F,i,E),pitch:g(E),roll:k.lerp(U,a,E)}})}}return C()}function yIe(t,e,n,i,o,a,s){let l=t.camera,r=p.clone(l.position,yNt),d=F_(l.heading,i),m=l.frustum.right-l.frustum.left,h=nat(l,n,m,n.z,s);function u(R){let V=R.time/e;l.setView({orientation:{heading:k.lerp(d,i,V)}}),K.lerp(r,n,V,l.position);let F=h(V),U=l.frustum,G=U.top/U.right,A=(F-(U.right-U.left))*.5;U.right+=A,U.left-=A,U.top=G*U.right,U.bottom=-U.top}return u}var ENt=new gt,BIe=new p;function eat(t,e){return{startObject:{},stopObject:{},duration:0,complete:t,cancel:e}}function CNt(t,e){function n(){typeof e=="function"&&e(),t.enableInputs=!0}return n}INt.createTween=function(t,e){e=f(e,f.EMPTY_OBJECT);let n=e.destination,i=t.mode;if(i===Vt.MORPHING)return eat();let o=f(e.convert,!0),a=t.mapProjection,s=a.ellipsoid,l=e.maximumHeight,r=e.flyOverLongitude,d=e.flyOverLongitudeWeight,m=e.pitchAdjustHeight,h=e.easingFunction;o&&i!==Vt.SCENE3D&&(s.cartesianToCartographic(n,ENt),n=a.project(ENt,BIe));let u=t.camera,R=e.endTransform;c(R)&&u._setTransform(R);let V=e.duration;c(V)||(V=Math.ceil(p.distance(u.position,n)/1e6)+2,V=Math.min(V,3));let F=f(e.heading,0),U=f(e.pitch,-k.PI_OVER_TWO),G=f(e.roll,0),A=t.screenSpaceCameraController;A.enableInputs=!1;let S=CNt(A,e.complete),g=CNt(A,e.cancel),C=u.frustum,y=t.mode===Vt.SCENE2D;if(y=y&&K.equalsEpsilon(u.position,n,k.EPSILON6),y=y&&k.equalsEpsilon(Math.max(C.right-C.left,C.top-C.bottom),n.z,k.EPSILON6),y=y||t.mode!==Vt.SCENE2D&&p.equalsEpsilon(n,u.position,k.EPSILON10),y=y&&k.equalsEpsilon(k.negativePiToPi(F),k.negativePiToPi(u.heading),k.EPSILON10)&&k.equalsEpsilon(k.negativePiToPi(U),k.negativePiToPi(u.pitch),k.EPSILON10)&&k.equalsEpsilon(k.negativePiToPi(G),k.negativePiToPi(u.roll),k.EPSILON10),y)return eat(S,g);let Y=new Array(4);if(Y[Vt.SCENE2D]=yIe,Y[Vt.SCENE3D]=NIe,Y[Vt.COLUMBUS_VIEW]=TIe,V<=0)return eat(function(){Y[i](t,1,n,F,U,G,l,r,d,m)({time:1}),typeof S=="function"&&S()},g);let Q=Y[i](t,V,n,F,U,G,l,r,d,m);if(!c(h)){let J=u.positionCartographic.height,M=i===Vt.SCENE3D?s.cartesianToCartographic(n).height:n.z;J>M&&J>11500?h=ul.CUBIC_OUT:h=ul.QUINTIC_IN_OUT}return{duration:V,easingFunction:h,startObject:{time:0},stopObject:{time:V},update:Q,complete:S,cancel:g}};var U_=INt;var CSo=b(W(),1),QIe={ROTATE:0,INFINITE_SCROLL:1},eh=Object.freeze(QIe);var LSo=b(W(),1);var iat={},Oz=t=>t.position.constructor.name==="ConstantPositionProperty"?t:!1,BNt=function(t,e,n,i=mt.WGS84){let o=iat[t.id]||iat[e.id]||null;if(o===null){let l=Oz(t)||Oz(e),r=!Oz(t)&&!Oz(e),d=l||t;o=new Bu(i,d.position.getValue(n)),o.eid=d.id,r||(iat[l.id]=o)}let a=o.eid===t.id?e:t;return o.isPointVisible(a.position.getValue(n))},kIe=function(t,e){let n=0,i=0,o=0;try{let{fromCartesian:a}=gt,{subtract:s,normalize:l,dot:r,distance:d}=p,m=new ou;m.setEndPoints(a(t),a(e));let h=m.startHeading<0?m.startHeading+k.TWO_PI:m.startHeading;n=k.toDegrees(h);let u=new p(0,0,0),R=s(t,e,u);R=l(R,u);let V=new p,F=p.normalize(t,V),U=r(R,F);i=k.toDegrees(Math.acos(U))-90,o=d(t,e)}catch(a){console.log(a)}return{az:n,el:i,range:o}},oat=class{constructor(e,n,i){this.id=e,this.from=n,this.to=i,this.polylineCollectionArrays=[]}},ip={},YIe=(t,e,n,i=Date.now().toString())=>{if(ip[i])return i;ip[i]=new oat(i,e,n);for(let o=0;o<n.length;o++){let a=new Mc;for(let s=0;s<e.length;s++)a.add({positions:[n[o].position.getValue(t.clock.currentTime),e[s].position.getValue(t.clock.currentTime)],width:1,material:new eo({fabric:{type:"Color",uniforms:{color:v.LIMEGREEN}}}),show:!0});t.scene.primitives.add(a),ip[i].polylineCollectionArrays.push(a)}return ip[i].removeListener=t.clock.onTick.addEventListener(o=>{for(let a in ip)if(ip[a]){let{polylineCollectionArrays:s,from:l,to:r}=ip[a];for(let d=0;d<r.length;d++)for(let m=0;m<l.length;m++){let h=BNt(l[m],r[d],o.currentTime),u=s[d].get(m);h?(u.show=!0,u.positions=[r[d].position.getValue(o.currentTime),l[m].position.getValue(o.currentTime)]):u.show=!1}}}),t.scene.render(),i},xIe=(t,e)=>{if(e){let n=ip[e];if(!n)return;n.removeListener(),n.polylineCollectionArrays.forEach(i=>{t.scene.primitives.remove(i)}),delete ip[e]}else for(let n in ip)if(ip[n]){let i=ip[n];i.removeListener(),i.polylineCollectionArrays.forEach(o=>{t.scene.primitives.remove(o)}),delete ip[n]}t.scene.render()},XIe=()=>{throw Error("Not Implemented")},x1={calculateAccess:BNt,getAzElRange:kIe,addAccessLines:YIe,removeAccessLines:xIe,calculateSensorAccess:XIe};function fn(t){this._scene=t,this._transform=L.clone(L.IDENTITY),this._invTransform=L.clone(L.IDENTITY),this._actualTransform=L.clone(L.IDENTITY),this._actualInvTransform=L.clone(L.IDENTITY),this._transformChanged=!1,this.position=new p,this._position=new p,this._positionWC=new p,this._positionCartographic=new gt,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new p,this._direction=new p,this._directionWC=new p,this.up=new p,this._up=new p,this._upWC=new p,this.right=new p,this._right=new p,this._rightWC=new p,this.frustum=new Io,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.fov=k.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new It,this._moveEnd=new It,this._changed=new It,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new L,this._invViewMatrix=new L,MNt(this),this._mode=Vt.SCENE3D,this._modeChanged=!0;let e=t.mapProjection;this._projection=e,this._maxCoord=e.project(new gt(Math.PI,k.PI_OVER_TWO)),this._max2Dfrustum=void 0,$Nt(this,fn.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=p.magnitude(this.position);n+=n*fn.DEFAULT_VIEW_FACTOR,p.normalize(this.position,this.position),p.multiplyByScalar(this.position,n,this.position)}fn.TRANSFORM_2D=new L(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);fn.TRANSFORM_2D_INVERSE=L.inverseTransformation(fn.TRANSFORM_2D,new L);fn.DEFAULT_VIEW_RECTANGLE=Gt.fromDegrees(-95,-20,-70,90);fn.DEFAULT_VIEW_FACTOR=.5;fn.DEFAULT_OFFSET=new uV(0,-k.PI_OVER_FOUR,0);function MNt(t){L.computeView(t._position,t._direction,t._up,t._right,t._viewMatrix),L.multiply(t._viewMatrix,t._actualInvTransform,t._viewMatrix),L.inverseTransformation(t._viewMatrix,t._invViewMatrix)}function JIe(t){if(!c(t._oldPositionWC))t._oldPositionWC=p.clone(t.positionWC,t._oldPositionWC);else{t.positionWCDeltaMagnitudeLastFrame=t.positionWCDeltaMagnitude;let e=p.subtract(t.positionWC,t._oldPositionWC,t._oldPositionWC);t.positionWCDeltaMagnitude=p.magnitude(e),t._oldPositionWC=p.clone(t.positionWC,t._oldPositionWC),t.positionWCDeltaMagnitude>0?(t.timeSinceMoved=0,t._lastMovedTimestamp=Oi()):t.timeSinceMoved=Math.max(Oi()-t._lastMovedTimestamp,0)/1e3}}fn.prototype.canPreloadFlight=function(){return c(this._currentFlight)&&this._mode!==Vt.SCENE2D};fn.prototype._updateCameraChanged=function(){let t=this;if(JIe(t),t._changed.numberOfListeners===0)return;let e=t.percentageChanged,n=t.heading;c(t._changedHeading)||(t._changedHeading=n);let i=Math.abs(t._changedHeading-n)%k.TWO_PI;i=i>k.PI?k.TWO_PI-i:i;let o=i/Math.PI;o>e&&(t._changedHeading=n);let a=t.roll;c(t._changedRoll)||(t._changedRoll=a);let s=Math.abs(t._changedRoll-a)%k.TWO_PI;s=s>k.PI?k.TWO_PI-s:s;let l=s/Math.PI;if(l>e&&(t._changedRoll=a),(l>e||o>e)&&t._changed.raiseEvent(Math.max(l,o)),t._mode===Vt.SCENE2D){if(!c(t._changedFrustum)){t._changedPosition=p.clone(t.position,t._changedPosition),t._changedFrustum=t.frustum.clone();return}let u=t.position,R=t._changedPosition,V=t.frustum,F=t._changedFrustum,U=u.x+V.left,G=u.x+V.right,A=R.x+F.left,S=R.x+F.right,g=u.y+V.bottom,C=u.y+V.top,y=R.y+F.bottom,Y=R.y+F.top,Q=Math.max(U,A),J=Math.min(G,S),M=Math.max(g,y),Z=Math.min(C,Y),E;if(Q>=J||M>=C)E=1;else{let I=F;U<A&&G>S&&g<y&&C>Y&&(I=V),E=1-(J-Q)*(Z-M)/((I.right-I.left)*(I.top-I.bottom))}E>e&&(t._changed.raiseEvent(E),t._changedPosition=p.clone(t.position,t._changedPosition),t._changedFrustum=t.frustum.clone(t._changedFrustum));return}if(!c(t._changedDirection)){t._changedPosition=p.clone(t.positionWC,t._changedPosition),t._changedDirection=p.clone(t.directionWC,t._changedDirection);return}let r=k.acosClamped(p.dot(t.directionWC,t._changedDirection)),d;c(t.frustum.fovy)?d=r/(t.frustum.fovy*.5):d=r;let h=p.distance(t.positionWC,t._changedPosition)/t.positionCartographic.height;(d>e||h>e)&&(t._changed.raiseEvent(Math.max(d,h)),t._changedPosition=p.clone(t.positionWC,t._changedPosition),t._changedDirection=p.clone(t.directionWC,t._changedDirection))};function LIe(t){Pe.basisTo2D(t._projection,t._transform,t._actualTransform)}var MIe=new gt,_Ie=new p,Hz=new p,DIe=new bt,OIe=new bt,HIe=new bt,wIe=new bt,PIe=new bt;function vIe(t){let e=t._projection,n=e.ellipsoid,i=L.getColumn(t._transform,3,DIe),o=n.cartesianToCartographic(i,MIe),a=e.project(o,_Ie),s=OIe;s.x=a.z,s.y=a.x,s.z=a.y,s.w=1;let l=bt.clone(bt.UNIT_X,PIe),r=bt.add(L.getColumn(t._transform,0,Hz),i,Hz);n.cartesianToCartographic(r,o),e.project(o,a);let d=HIe;d.x=a.z,d.y=a.x,d.z=a.y,d.w=0,p.subtract(d,s,d),d.x=0;let m=wIe;if(p.magnitudeSquared(d)>k.EPSILON10)p.cross(l,d,m);else{let h=bt.add(L.getColumn(t._transform,1,Hz),i,Hz);n.cartesianToCartographic(h,o),e.project(o,a),m.x=a.z,m.y=a.x,m.z=a.y,m.w=0,p.subtract(m,s,m),m.x=0,p.magnitudeSquared(m)<k.EPSILON10&&(bt.clone(bt.UNIT_Y,d),bt.clone(bt.UNIT_Z,m))}p.cross(m,l,d),p.normalize(d,d),p.cross(l,d,m),p.normalize(m,m),L.setColumn(t._actualTransform,0,d,t._actualTransform),L.setColumn(t._actualTransform,1,m,t._actualTransform),L.setColumn(t._actualTransform,2,l,t._actualTransform),L.setColumn(t._actualTransform,3,s,t._actualTransform)}var aat=new p;function cc(t){let e=t._mode,n=!1,i=0;e===Vt.SCENE2D&&(i=t.frustum.right-t.frustum.left,n=i!==t._positionCartographic.height);let o=t._position,a=!p.equals(o,t.position)||n;a&&(o=p.clone(t.position,t._position));let s=t._direction;(isNaN(t.direction.x)||isNaN(t.direction.y)||isNaN(t.direction.z))&&(s=p.clone(t._direction,t.direction));let l=!p.equals(s,t.direction);l&&(p.normalize(t.direction,t.direction),s=p.clone(t.direction,t._direction));let r=t._up,d=!p.equals(r,t.up);d&&(p.normalize(t.up,t.up),r=p.clone(t.up,t._up));let m=t._right,h=!p.equals(m,t.right);h&&(p.normalize(t.right,t.right),m=p.clone(t.right,t._right));let u=t._transformChanged||t._modeChanged;t._transformChanged=!1,u&&(L.inverseTransformation(t._transform,t._invTransform),t._mode===Vt.COLUMBUS_VIEW||t._mode===Vt.SCENE2D?L.equals(L.IDENTITY,t._transform)?L.clone(fn.TRANSFORM_2D,t._actualTransform):t._mode===Vt.COLUMBUS_VIEW?LIe(t):vIe(t):L.clone(t._transform,t._actualTransform),L.inverseTransformation(t._actualTransform,t._actualInvTransform),t._modeChanged=!1);let R=t._actualTransform;if(a||u)if(t._positionWC=L.multiplyByPoint(R,o,t._positionWC),e===Vt.SCENE3D||e===Vt.MORPHING)t._positionCartographic=t._projection.ellipsoid.cartesianToCartographic(t._positionWC,t._positionCartographic);else{let V=aat;V.x=t._positionWC.y,V.y=t._positionWC.z,V.z=t._positionWC.x,e===Vt.SCENE2D&&(V.z=i),t._projection.unproject(V,t._positionCartographic)}if(l||d||h){let V=p.dot(s,p.cross(r,m,aat));if(Math.abs(1-V)>k.EPSILON2){let F=1/p.magnitudeSquared(r),U=p.dot(r,s)*F,G=p.multiplyByScalar(s,U,aat);r=p.normalize(p.subtract(r,G,t._up),t._up),p.clone(r,t.up),m=p.cross(s,r,t._right),p.clone(m,t.right)}}(l||u)&&(t._directionWC=L.multiplyByPointAsVector(R,s,t._directionWC),p.normalize(t._directionWC,t._directionWC)),(d||u)&&(t._upWC=L.multiplyByPointAsVector(R,r,t._upWC),p.normalize(t._upWC,t._upWC)),(h||u)&&(t._rightWC=L.multiplyByPointAsVector(R,m,t._rightWC),p.normalize(t._rightWC,t._rightWC)),(a||l||d||h||u)&&MNt(t)}function _Nt(t,e){let n;return k.equalsEpsilon(Math.abs(t.z),1,k.EPSILON3)?n=Math.atan2(e.y,e.x)-k.PI_OVER_TWO:n=Math.atan2(t.y,t.x)-k.PI_OVER_TWO,k.TWO_PI-k.zeroToTwoPi(n)}function DNt(t){return k.PI_OVER_TWO-k.acosClamped(t.z)}function ONt(t,e,n){let i=0;return k.equalsEpsilon(Math.abs(t.z),1,k.EPSILON3)||(i=Math.atan2(-n.z,e.z),i=k.zeroToTwoPi(i+k.TWO_PI)),i}var vz=new L,Kz=new L;Object.defineProperties(fn.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return cc(this),this._invTransform}},viewMatrix:{get:function(){return cc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return cc(this),this._invViewMatrix}},positionCartographic:{get:function(){return cc(this),this._positionCartographic}},positionWC:{get:function(){return cc(this),this._positionWC}},directionWC:{get:function(){return cc(this),this._directionWC}},upWC:{get:function(){return cc(this),this._upWC}},rightWC:{get:function(){return cc(this),this._rightWC}},heading:{get:function(){if(this._mode!==Vt.MORPHING){let t=this._projection.ellipsoid,e=L.clone(this._transform,vz),n=Pe.eastNorthUpToFixedFrame(this.positionWC,t,Kz);this._setTransform(n);let i=_Nt(this.direction,this.up);return this._setTransform(e),i}}},pitch:{get:function(){if(this._mode!==Vt.MORPHING){let t=this._projection.ellipsoid,e=L.clone(this._transform,vz),n=Pe.eastNorthUpToFixedFrame(this.positionWC,t,Kz);this._setTransform(n);let i=DNt(this.direction);return this._setTransform(e),i}}},roll:{get:function(){if(this._mode!==Vt.MORPHING){let t=this._projection.ellipsoid,e=L.clone(this._transform,vz),n=Pe.eastNorthUpToFixedFrame(this.positionWC,t,Kz);this._setTransform(n);let i=ONt(this.direction,this.up,this.right);return this._setTransform(e),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});fn.prototype.update=function(t){let e=!1;if(t!==this._mode&&(this._mode=t,this._modeChanged=t!==Vt.MORPHING,e=this._mode===Vt.SCENE2D),e){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===Vt.SCENE2D&&vNt(this,this.position)};var KIe=new p,zIe=new p,jIe=new p;fn.prototype._setTransform=function(t){let e=p.clone(this.positionWC,KIe),n=p.clone(this.upWC,zIe),i=p.clone(this.directionWC,jIe);L.clone(t,this._transform),this._transformChanged=!0,cc(this);let o=this._actualInvTransform;L.multiplyByPoint(o,e,this.position),L.multiplyByPointAsVector(o,i,this.direction),L.multiplyByPointAsVector(o,n,this.up),p.cross(this.direction,this.up,this.right),cc(this)};var qIe=new K,$Ie=new di,t1e=new p,e1e=new p;function HNt(t){if(!L.equals(L.IDENTITY,t.transform))return p.magnitude(t.position);let e=t._scene,n=e.globe,i=qIe;i.x=e.drawingBufferWidth/2,i.y=e.drawingBufferHeight/2;let o;if(c(n)){let l=t.getPickRay(i,$Ie);o=n.pickWorldCoordinates(l,e,!0,t1e)}let a;e.pickPositionSupported&&(a=e.pickPositionWorldCoordinates(i,e1e));let s;if(c(o)||c(a)){let l=c(a)?p.distance(a,t.positionWC):Number.POSITIVE_INFINITY,r=c(o)?p.distance(o,t.positionWC):Number.POSITIVE_INFINITY;s=Math.min(l,r)}else s=Math.max(t.positionCartographic.height,0);return s}fn.prototype._adjustOrthographicFrustum=function(t){this.frustum instanceof wn&&(!t&&this._positionCartographic.height<15e4||(this.frustum.width=HNt(this)))};var zz=new p,cat=new L,n1e=new L,mat=new wt,hat=new ot,wNt=new gt;function i1e(t,e,n){let i=L.clone(t.transform,cat),o=Pe.eastNorthUpToFixedFrame(e,t._projection.ellipsoid,n1e);t._setTransform(o),p.clone(p.ZERO,t.position),n.heading=n.heading-k.PI_OVER_TWO;let a=wt.fromHeadingPitchRoll(n,mat),s=ot.fromQuaternion(a,hat);ot.getColumn(s,0,t.direction),ot.getColumn(s,2,t.up),p.cross(t.direction,t.up,t.right),t._setTransform(i),t._adjustOrthographicFrustum(!0)}function o1e(t,e,n,i){let o=L.clone(t.transform,cat);if(t._setTransform(L.IDENTITY),!p.equals(e,t.positionWC)){if(i){let l=t._projection,r=l.ellipsoid.cartesianToCartographic(e,wNt);e=l.project(r,zz)}p.clone(e,t.position)}n.heading=n.heading-k.PI_OVER_TWO;let a=wt.fromHeadingPitchRoll(n,mat),s=ot.fromQuaternion(a,hat);ot.getColumn(s,0,t.direction),ot.getColumn(s,2,t.up),p.cross(t.direction,t.up,t.right),t._setTransform(o),t._adjustOrthographicFrustum(!0)}function a1e(t,e,n,i){let o=L.clone(t.transform,cat);if(t._setTransform(L.IDENTITY),!p.equals(e,t.positionWC)){if(i){let r=t._projection,d=r.ellipsoid.cartesianToCartographic(e,wNt);e=r.project(d,zz)}K.clone(e,t.position);let a=-e.z*.5,s=-a,l=t.frustum;if(s>a){let r=l.top/l.right;l.right=s,l.left=a,l.top=l.right*r,l.bottom=-l.top}}if(t._scene.mapMode2D===eh.ROTATE){n.heading=n.heading-k.PI_OVER_TWO,n.pitch=-k.PI_OVER_TWO,n.roll=0;let a=wt.fromHeadingPitchRoll(n,mat),s=ot.fromQuaternion(a,hat);ot.getColumn(s,2,t.up),p.cross(t.direction,t.up,t.right)}t._setTransform(o)}var s1e=new p,l1e=new p,r1e=new p;function PNt(t,e,n,i){let o=p.clone(n.direction,s1e),a=p.clone(n.up,l1e);if(t._scene.mode===Vt.SCENE3D){let l=t._projection.ellipsoid,r=Pe.eastNorthUpToFixedFrame(e,l,vz),d=L.inverseTransformation(r,Kz);L.multiplyByPointAsVector(d,o,o),L.multiplyByPointAsVector(d,a,a)}let s=p.cross(o,a,r1e);return i.heading=_Nt(o,a),i.pitch=DNt(o),i.roll=ONt(o,a,s),i}var dat={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},X1=new Jr;fn.prototype.setView=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.orientation,f.EMPTY_OBJECT),n=this._mode;if(n===Vt.MORPHING)return;c(t.endTransform)&&this._setTransform(t.endTransform);let i=f(t.convert,!0),o=f(t.destination,p.clone(this.positionWC,zz));c(o)&&c(o.west)&&(o=this.getRectangleCameraCoordinates(o,zz),i=!1),c(e.direction)&&(e=PNt(this,o,e,dat.orientation)),X1.heading=f(e.heading,0),X1.pitch=f(e.pitch,-k.PI_OVER_TWO),X1.roll=f(e.roll,0),n===Vt.SCENE3D?i1e(this,o,X1):n===Vt.SCENE2D?a1e(this,o,X1,i):o1e(this,o,X1,i)};var d1e=new p;fn.prototype.flyHome=function(t){fn.prototype._resetTrack();let e=this._mode;if(e===Vt.MORPHING&&this._scene.completeMorph(),e===Vt.SCENE2D)this.flyTo({destination:fn.DEFAULT_VIEW_RECTANGLE,duration:t,endTransform:L.IDENTITY});else if(e===Vt.SCENE3D){let n=this.getRectangleCameraCoordinates(fn.DEFAULT_VIEW_RECTANGLE),i=p.magnitude(n);i+=i*fn.DEFAULT_VIEW_FACTOR,p.normalize(n,n),p.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:t,endTransform:L.IDENTITY})}else if(e===Vt.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new p(0,-1,1);i=p.multiplyByScalar(p.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:t,orientation:{heading:0,pitch:-Math.acos(p.normalize(i,d1e).z),roll:0},endTransform:L.IDENTITY,convert:!1})}};fn.prototype.worldToCameraCoordinates=function(t,e){return c(e)||(e=new bt),cc(this),L.multiplyByVector(this._actualInvTransform,t,e)};fn.prototype.worldToCameraCoordinatesPoint=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPoint(this._actualInvTransform,t,e)};fn.prototype.worldToCameraCoordinatesVector=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPointAsVector(this._actualInvTransform,t,e)};fn.prototype.cameraToWorldCoordinates=function(t,e){return c(e)||(e=new bt),cc(this),L.multiplyByVector(this._actualTransform,t,e)};fn.prototype.cameraToWorldCoordinatesPoint=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPoint(this._actualTransform,t,e)};fn.prototype.cameraToWorldCoordinatesVector=function(t,e){return c(e)||(e=new p),cc(this),L.multiplyByPointAsVector(this._actualTransform,t,e)};function vNt(t,e){let n=t._scene.mapMode2D===eh.ROTATE,i=t._maxCoord.x,o=t._maxCoord.y,a,s;n?(s=i,a=-s):(s=e.x-i*2,a=e.x+i*2),e.x>i&&(e.x=s),e.x<-i&&(e.x=a),e.y>o&&(e.y=o),e.y<-o&&(e.y=-o)}var QNt=new p;fn.prototype.move=function(t,e){let n=this.position;p.multiplyByScalar(t,e,QNt),p.add(n,QNt,n),this._mode===Vt.SCENE2D&&vNt(this,n),this._adjustOrthographicFrustum(!0)};fn.prototype.moveForward=function(t){t=f(t,this.defaultMoveAmount),this._mode===Vt.SCENE2D?jz(this,t):this.move(this.direction,t)};fn.prototype.moveBackward=function(t){t=f(t,this.defaultMoveAmount),this._mode===Vt.SCENE2D?jz(this,-t):this.move(this.direction,-t)};fn.prototype.moveUp=function(t){t=f(t,this.defaultMoveAmount),this.move(this.up,t)};fn.prototype.moveDown=function(t){t=f(t,this.defaultMoveAmount),this.move(this.up,-t)};fn.prototype.moveRight=function(t){t=f(t,this.defaultMoveAmount),this.move(this.right,t)};fn.prototype.moveLeft=function(t){t=f(t,this.defaultMoveAmount),this.move(this.right,-t)};fn.prototype.lookLeft=function(t){t=f(t,this.defaultLookAmount),this._mode!==Vt.SCENE2D&&this.look(this.up,-t)};fn.prototype.lookRight=function(t){t=f(t,this.defaultLookAmount),this._mode!==Vt.SCENE2D&&this.look(this.up,t)};fn.prototype.lookUp=function(t){t=f(t,this.defaultLookAmount),this._mode!==Vt.SCENE2D&&this.look(this.right,-t)};fn.prototype.lookDown=function(t){t=f(t,this.defaultLookAmount),this._mode!==Vt.SCENE2D&&this.look(this.right,t)};var c1e=new wt,m1e=new ot;fn.prototype.look=function(t,e){let n=f(e,this.defaultLookAmount),i=wt.fromAxisAngle(t,-n,c1e),o=ot.fromQuaternion(i,m1e),a=this.direction,s=this.up,l=this.right;ot.multiplyByVector(o,a,a),ot.multiplyByVector(o,s,s),ot.multiplyByVector(o,l,l)};fn.prototype.twistLeft=function(t){t=f(t,this.defaultLookAmount),this.look(this.direction,t)};fn.prototype.twistRight=function(t){t=f(t,this.defaultLookAmount),this.look(this.direction,-t)};var h1e=new wt,p1e=new ot;fn.prototype.rotate=function(t,e){let n=f(e,this.defaultRotateAmount),i=wt.fromAxisAngle(t,-n,h1e),o=ot.fromQuaternion(i,p1e);ot.multiplyByVector(o,this.position,this.position),ot.multiplyByVector(o,this.direction,this.direction),ot.multiplyByVector(o,this.up,this.up),p.cross(this.direction,this.up,this.right),p.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};fn.prototype.rotateDown=function(t){t=f(t,this.defaultRotateAmount),KNt(this,t)};fn.prototype.rotateUp=function(t){t=f(t,this.defaultRotateAmount),KNt(this,-t)};var V1e=new p,u1e=new p,Z1e=new p,kNt=new p;function KNt(t,e){let n=t.position;if(c(t.constrainedAxis)&&!p.equalsEpsilon(t.position,p.ZERO,k.EPSILON2)){let i=p.normalize(n,V1e),o=p.equalsEpsilon(i,t.constrainedAxis,k.EPSILON2),a=p.equalsEpsilon(i,p.negate(t.constrainedAxis,kNt),k.EPSILON2);if(!o&&!a){let s=p.normalize(t.constrainedAxis,u1e),l=p.dot(i,s),r=k.acosClamped(l);e>0&&e>r&&(e=r-k.EPSILON4),l=p.dot(i,p.negate(s,kNt)),r=k.acosClamped(l),e<0&&-e>r&&(e=-r+k.EPSILON4);let d=p.cross(s,i,Z1e);t.rotate(d,e)}else(o&&e<0||a&&e>0)&&t.rotate(t.right,e)}else t.rotate(t.right,e)}fn.prototype.rotateRight=function(t){t=f(t,this.defaultRotateAmount),zNt(this,-t)};fn.prototype.rotateLeft=function(t){t=f(t,this.defaultRotateAmount),zNt(this,t)};function zNt(t,e){c(t.constrainedAxis)?t.rotate(t.constrainedAxis,e):t.rotate(t.up,e)}function jz(t,e){let n=t.frustum,i;if(e=e*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-e,a=n.bottom+e,s=t._maxCoord.y;t._scene.mapMode2D===eh.ROTATE&&(s*=t.maximumZoomFactor),a>s&&(a=s,o=-s),o<=a&&(o=1,a=-1),i=n.right/n.top,n.top=o,n.bottom=a,n.right=n.top*i,n.left=-n.right}else{let o=n.right-e,a=n.left+e,s=t._maxCoord.x;t._scene.mapMode2D===eh.ROTATE&&(s*=t.maximumZoomFactor),o>s&&(o=s,a=-s),o<=a&&(o=1,a=-1),i=n.top/n.right,n.right=o,n.left=a,n.top=n.right*i,n.bottom=-n.top}}function jNt(t,e){t.move(t.direction,e)}fn.prototype.zoomIn=function(t){t=f(t,this.defaultZoomAmount),this._mode===Vt.SCENE2D?jz(this,t):jNt(this,t)};fn.prototype.zoomOut=function(t){t=f(t,this.defaultZoomAmount),this._mode===Vt.SCENE2D?jz(this,-t):jNt(this,-t)};fn.prototype.getMagnitude=function(){if(this._mode===Vt.SCENE3D)return p.magnitude(this.position);if(this._mode===Vt.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===Vt.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var R1e=new L;fn.prototype.lookAt=function(t,e){let n=Pe.eastNorthUpToFixedFrame(t,mt.WGS84,R1e);this.lookAtTransform(n,e)};var b1e=new p,W1e=new wt,f1e=new wt,F1e=new ot;function qNt(t,e,n){e=k.clamp(e,-k.PI_OVER_TWO,k.PI_OVER_TWO),t=k.zeroToTwoPi(t)-k.PI_OVER_TWO;let i=wt.fromAxisAngle(p.UNIT_Y,-e,W1e),o=wt.fromAxisAngle(p.UNIT_Z,-t,f1e),a=wt.multiply(o,i,o),s=ot.fromQuaternion(a,F1e),l=p.clone(p.UNIT_X,b1e);return ot.multiplyByVector(s,l,l),p.negate(l,l),p.multiplyByScalar(l,n,l),l}fn.prototype.lookAtTransform=function(t,e){if(this._setTransform(t),!c(e))return;let n;if(c(e.heading)?n=qNt(e.heading,e.pitch,e.range):n=e,this._mode===Vt.SCENE2D){K.clone(K.ZERO,this.position),p.negate(n,this.up),this.up.z=0,p.magnitudeSquared(this.up)<k.EPSILON10&&p.clone(p.UNIT_Y,this.up),p.normalize(this.up,this.up),this._setTransform(L.IDENTITY),p.negate(p.UNIT_Z,this.direction),p.cross(this.direction,this.up,this.right),p.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=p.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(t);return}p.clone(n,this.position),p.negate(this.position,this.direction),p.normalize(this.direction,this.direction),p.cross(this.direction,p.UNIT_Z,this.right),p.magnitudeSquared(this.right)<k.EPSILON10&&p.clone(p.UNIT_X,this.right),p.normalize(this.right,this.right),p.cross(this.right,this.direction,this.up),p.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var G_=new gt,U1e=new gt,G1e=new p,A1e=new p,S1e=new p,T1e=new p,g1e=new p,E1e=new p,C1e=new p,sat=new p,I1e={direction:new p,right:new p,up:new p},YNt;function dc(t,e,n,i){return Math.abs(p.dot(e,n))/i-p.dot(t,n)}function $Nt(t,e,n,i){let o=t._projection.ellipsoid,a=i?t:I1e,s=e.north,l=e.south,r=e.east,d=e.west;d>r&&(r+=k.TWO_PI);let m=(d+r)*.5,h;if(l<-k.PI_OVER_TWO+k.RADIANS_PER_DEGREE&&s>k.PI_OVER_TWO-k.RADIANS_PER_DEGREE)h=0;else{let J=G_;J.longitude=m,J.latitude=s,J.height=0;let M=U1e;M.longitude=m,M.latitude=l,M.height=0;let Z=YNt;(!c(Z)||Z.ellipsoid!==o)&&(YNt=Z=new ou(void 0,void 0,o)),Z.setEndPoints(J,M),h=Z.interpolateUsingFraction(.5,G_).latitude}let u=G_;u.longitude=m,u.latitude=h,u.height=0;let R=o.cartographicToCartesian(u,C1e),V=G_;V.longitude=r,V.latitude=s;let F=o.cartographicToCartesian(V,G1e);V.longitude=d;let U=o.cartographicToCartesian(V,S1e);V.longitude=m;let G=o.cartographicToCartesian(V,g1e);V.latitude=l;let A=o.cartographicToCartesian(V,E1e);V.longitude=r;let S=o.cartographicToCartesian(V,T1e);V.longitude=d;let g=o.cartographicToCartesian(V,A1e);p.subtract(U,R,U),p.subtract(S,R,S),p.subtract(F,R,F),p.subtract(g,R,g),p.subtract(G,R,G),p.subtract(A,R,A);let C=o.geodeticSurfaceNormal(R,a.direction);p.negate(C,C);let y=p.cross(C,p.UNIT_Z,a.right);p.normalize(y,y);let Y=p.cross(y,C,a.up),Q;if(t.frustum instanceof wn){let J=Math.max(p.distance(F,U),p.distance(S,g)),M=Math.max(p.distance(F,S),p.distance(U,g)),Z,E,I=t.frustum._offCenterFrustum,B=I.right/I.top,X=M*B;J>X?(Z=J,E=Z/B):(E=M,Z=X),Q=Math.max(Z,E)}else{let J=Math.tan(t.frustum.fovy*.5),M=t.frustum.aspectRatio*J;if(Q=Math.max(dc(C,Y,U,J),dc(C,Y,S,J),dc(C,Y,F,J),dc(C,Y,g,J),dc(C,Y,G,J),dc(C,Y,A,J),dc(C,y,U,M),dc(C,y,S,M),dc(C,y,F,M),dc(C,y,g,M),dc(C,y,G,M),dc(C,y,A,M)),l<0&&s>0){let Z=G_;Z.longitude=d,Z.latitude=0,Z.height=0;let E=o.cartographicToCartesian(Z,sat);p.subtract(E,R,E),Q=Math.max(Q,dc(C,Y,E,J),dc(C,y,E,M)),Z.longitude=r,E=o.cartographicToCartesian(Z,sat),p.subtract(E,R,E),Q=Math.max(Q,dc(C,Y,E,J),dc(C,y,E,M))}}return p.add(R,p.multiplyByScalar(C,-Q,sat),n)}var N1e=new gt,y1e=new p,B1e=new p;function Q1e(t,e,n){let i=t._projection;e.west>e.east&&(e=Gt.MAX_VALUE);let o=t._actualTransform,a=t._actualInvTransform,s=N1e;s.longitude=e.east,s.latitude=e.north;let l=i.project(s,y1e);L.multiplyByPoint(o,l,l),L.multiplyByPoint(a,l,l),s.longitude=e.west,s.latitude=e.south;let r=i.project(s,B1e);if(L.multiplyByPoint(o,r,r),L.multiplyByPoint(a,r,r),n.x=(l.x-r.x)*.5+r.x,n.y=(l.y-r.y)*.5+r.y,c(t.frustum.fovy)){let d=Math.tan(t.frustum.fovy*.5),m=t.frustum.aspectRatio*d;n.z=Math.max((l.x-r.x)/m,(l.y-r.y)/d)*.5}else{let d=l.x-r.x,m=l.y-r.y;n.z=Math.max(d,m)}return n}var k1e=new gt,Y1e=new p,x1e=new p;function X1e(t,e,n){let i=t._projection,o=e.east;e.west>e.east&&(t._scene.mapMode2D===eh.INFINITE_SCROLL?o+=k.TWO_PI:(e=Gt.MAX_VALUE,o=e.east));let a=k1e;a.longitude=o,a.latitude=e.north;let s=i.project(a,Y1e);a.longitude=e.west,a.latitude=e.south;let l=i.project(a,x1e),r=Math.abs(s.x-l.x)*.5,d=Math.abs(s.y-l.y)*.5,m,h,u=t.frustum.right/t.frustum.top,R=d*u;return r>R?(m=r,h=m/u):(h=d,m=R),d=Math.max(2*m,2*h),n.x=(s.x-l.x)*.5+l.x,n.y=(s.y-l.y)*.5+l.y,a=i.unproject(n,a),a.height=d,n=i.project(a,n),n}fn.prototype.getRectangleCameraCoordinates=function(t,e){let n=this._mode;if(c(e)||(e=new p),n===Vt.SCENE3D)return $Nt(this,t,e);if(n===Vt.COLUMBUS_VIEW)return Q1e(this,t,e);if(n===Vt.SCENE2D)return X1e(this,t,e)};var J1e=new di;function L1e(t,e,n,i){n=f(n,mt.WGS84);let o=t.getPickRay(e,J1e),a=no.rayEllipsoid(o,n);if(!a)return;let s=a.start>0?a.start:a.stop;return di.getPoint(o,s,i)}var M1e=new di;function _1e(t,e,n,i){let a=t.getPickRay(e,M1e).origin;a=p.fromElements(a.y,a.z,0,a);let s=n.unproject(a);if(!(s.latitude<-k.PI_OVER_TWO||s.latitude>k.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var D1e=new di;function O1e(t,e,n,i){let o=t.getPickRay(e,D1e),a=-o.origin.x/o.direction.x;di.getPoint(o,a,i);let s=n.unproject(new p(i.y,i.z,0));if(!(s.latitude<-k.PI_OVER_TWO||s.latitude>k.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}fn.prototype.pickEllipsoid=function(t,e,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(c(n)||(n=new p),e=f(e,mt.WGS84),this._mode===Vt.SCENE3D)n=L1e(this,t,e,n);else if(this._mode===Vt.SCENE2D)n=_1e(this,t,this._projection,n);else if(this._mode===Vt.COLUMBUS_VIEW)n=O1e(this,t,this._projection,n);else return;return n}};var H1e=new p,w1e=new p,P1e=new p;function v1e(t,e,n){let i=t._scene.canvas,o=i.clientWidth,a=i.clientHeight,s=Math.tan(t.frustum.fovy*.5),l=t.frustum.aspectRatio*s,r=t.frustum.near,d=2/o*e.x-1,m=2/a*(a-e.y)-1,h=t.positionWC;p.clone(h,n.origin);let u=p.multiplyByScalar(t.directionWC,r,H1e);p.add(h,u,u);let R=p.multiplyByScalar(t.rightWC,d*r*l,w1e),V=p.multiplyByScalar(t.upWC,m*r*s,P1e),F=p.add(u,R,n.direction);return p.add(F,V,F),p.subtract(F,h,F),p.normalize(F,F),n}var wz=new p;function K1e(t,e,n){let i=t._scene.canvas,o=i.clientWidth,a=i.clientHeight,s=t.frustum,l=s.offCenterFrustum;c(l)&&(s=l);let r=2/o*e.x-1;r*=(s.right-s.left)*.5;let d=2/a*(a-e.y)-1;d*=(s.top-s.bottom)*.5;let m=n.origin;return p.clone(t.position,m),p.multiplyByScalar(t.right,r,wz),p.add(wz,m,m),p.multiplyByScalar(t.up,d,wz),p.add(wz,m,m),p.clone(t.directionWC,n.direction),(t._mode===Vt.COLUMBUS_VIEW||t._mode===Vt.SCENE2D)&&p.fromElements(n.origin.z,n.origin.x,n.origin.y,n.origin),n}fn.prototype.getPickRay=function(t,e){c(e)||(e=new di);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return c(i.aspectRatio)&&c(i.fov)&&c(i.near)?v1e(this,t,e):K1e(this,t,e)};var z1e=new p,j1e=new p;fn.prototype.distanceToBoundingSphere=function(t){let e=p.subtract(this.positionWC,t.center,z1e),n=p.multiplyByScalar(this.directionWC,p.dot(e,this.directionWC),j1e);return Math.max(0,p.magnitude(n)-t.radius)};var q1e=new K;fn.prototype.getPixelSize=function(t,e,n){let i=this.distanceToBoundingSphere(t),o=this.frustum.getPixelDimensions(e,n,i,this._scene.pixelRatio,q1e);return Math.max(o.x,o.y)};function $1e(t,e,n,i,o,a){let s=p.clone(e);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function l(r){let d=p.lerp(e,s,r.time,new p);t.worldToCameraCoordinatesPoint(d,t.position)}return{easingFunction:ul.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:a,update:l}}var tNe=new p,xNt=new p,eNe=new p,nNe=new p;function iNe(t,e){let n=t.position,i=t.direction,o=t.worldToCameraCoordinatesVector(p.UNIT_X,tNe),a=-p.dot(o,n)/p.dot(o,i),s=p.add(n,p.multiplyByScalar(i,a,xNt),xNt);t.cameraToWorldCoordinatesPoint(s,s),n=t.cameraToWorldCoordinatesPoint(t.position,eNe);let l=Math.tan(t.frustum.fovy*.5),r=t.frustum.aspectRatio*l,d=p.magnitude(p.subtract(n,s,nNe)),m=r*d,h=l*d,u=t._maxCoord.x,R=t._maxCoord.y,V=Math.max(m-u,u),F=Math.max(h-R,R);if(n.z<-V||n.z>V||n.y<-F||n.y>F){let U=s.y<-V||s.y>V,G=s.z<-F||s.z>F;if(U||G)return $1e(t,n,s,V,F,e)}}fn.prototype.createCorrectPositionTween=function(t){if(this._mode===Vt.COLUMBUS_VIEW)return iNe(this,t)};var oNe=new p,Qr={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};fn.prototype.cancelFlight=function(){c(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};fn.prototype.completeFlight=function(){if(c(this._currentFlight)){this._currentFlight.cancelTween();let t={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};t.destination=Qr.destination,t.orientation.heading=Qr.heading,t.orientation.pitch=Qr.pitch,t.orientation.roll=Qr.roll,this.setView(t),c(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};fn.prototype.flyTo=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.destination;if(this._mode===Vt.MORPHING)return;this.cancelFlight();let i=e instanceof Gt;i&&(e=this.getRectangleCameraCoordinates(e,oNe));let o=f(t.orientation,f.EMPTY_OBJECT);if(c(o.direction)&&(o=PNt(this,e,o,dat.orientation)),c(t.duration)&&t.duration<=0){let m=dat;m.destination=t.destination,m.orientation.heading=o.heading,m.orientation.pitch=o.pitch,m.orientation.roll=o.roll,m.convert=t.convert,m.endTransform=t.endTransform,this.setView(m),typeof t.complete=="function"&&t.complete();return}let a=this,s;Qr.destination=e,Qr.heading=o.heading,Qr.pitch=o.pitch,Qr.roll=o.roll,Qr.duration=t.duration,Qr.complete=function(){s===a._currentFlight&&(a._currentFlight=void 0),c(t.complete)&&t.complete()},Qr.cancel=t.cancel,Qr.endTransform=t.endTransform,Qr.convert=i?!1:t.convert,Qr.maximumHeight=t.maximumHeight,Qr.pitchAdjustHeight=t.pitchAdjustHeight,Qr.flyOverLongitude=t.flyOverLongitude,Qr.flyOverLongitudeWeight=t.flyOverLongitudeWeight,Qr.easingFunction=t.easingFunction;let l=this._scene,r=U_.createTween(l,Qr);if(r.duration===0){typeof r.complete=="function"&&r.complete();return}s=l.tweens.add(r),this._currentFlight=s;let d=this._scene.preloadFlightCamera;this._mode!==Vt.SCENE2D&&(c(d)||(d=fn.clone(this)),d.setView({destination:e,orientation:o}),this._scene.preloadFlightCullingVolume=d.frustum.computeCullingVolume(d.positionWC,d.directionWC,d.upWC))};function aNe(t,e){let n=t.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(e/o,e/i)}function sNe(t,e){let n=t.frustum,i=n.offCenterFrustum;c(i)&&(n=i);let o,a,s=n.right/n.top,l=e*s;return e>l?(o=e,a=o/s):(a=e,o=l),Math.max(o,a)*1.5}var lNe=100;function tyt(t,e,n){n=uV.clone(c(n)?n:fn.DEFAULT_OFFSET);let i=t._scene.screenSpaceCameraController.minimumZoomDistance,o=t._scene.screenSpaceCameraController.maximumZoomDistance,a=n.range;if(!c(a)||a===0){let s=e.radius;s===0?n.range=lNe:t.frustum instanceof wn||t._mode===Vt.SCENE2D?n.range=sNe(t,s):n.range=aNe(t,s),n.range=k.clamp(n.range,i,o)}return n}fn.prototype.viewBoundingSphere=function(t,e){e=tyt(this,t,e),this.lookAt(t.center,e)};var rNe=new L,dNe=new p,cNe=new p,mNe=new p,hNe=new p,pNe=new bt,VNe=new wt,uNe=new ot;fn.prototype.flyToBoundingSphere=function(t,e){e=f(e,f.EMPTY_OBJECT);let n=this._mode===Vt.SCENE2D||this._mode===Vt.COLUMBUS_VIEW;this._setTransform(L.IDENTITY);let i=tyt(this,t,e.offset),o;n?o=p.multiplyByScalar(p.UNIT_Z,i.range,dNe):o=qNt(i.heading,i.pitch,i.range);let a=Pe.eastNorthUpToFixedFrame(t.center,mt.WGS84,rNe);L.multiplyByPoint(a,o,o);let s,l;if(!n){if(s=p.subtract(t.center,o,cNe),p.normalize(s,s),l=L.multiplyByPointAsVector(a,p.UNIT_Z,mNe),1-Math.abs(p.dot(s,l))<k.EPSILON6){let d=wt.fromAxisAngle(s,i.heading,VNe),m=ot.fromQuaternion(d,uNe);p.fromCartesian4(L.getColumn(a,1,pNe),l),ot.multiplyByVector(m,l,l)}let r=p.cross(s,l,hNe);p.cross(r,s,l),p.normalize(l,l)}this.flyTo({destination:o,orientation:{direction:s,up:l},duration:e.duration,complete:e.complete,cancel:e.cancel,endTransform:e.endTransform,maximumHeight:e.maximumHeight,easingFunction:e.easingFunction,flyOverLongitude:e.flyOverLongitude,flyOverLongitudeWeight:e.flyOverLongitudeWeight,pitchAdjustHeight:e.pitchAdjustHeight})};var XNt=new p,JNt=new p,lat=new p,LNt=new p,A_=[new p,new p,new p,new p];function ZNe(t,e){let n=e.radii,i=t.positionWC,o=p.multiplyComponents(e.oneOverRadii,i,XNt),a=p.magnitude(o),s=p.normalize(o,JNt),l,r;p.equalsEpsilon(s,p.UNIT_Z,k.EPSILON10)?(l=new p(0,1,0),r=new p(0,0,1)):(l=p.normalize(p.cross(p.UNIT_Z,s,lat),lat),r=p.normalize(p.cross(s,l,LNt),LNt));let d=Math.sqrt(p.magnitudeSquared(o)-1),m=p.multiplyByScalar(s,1/a,XNt),h=d/a,u=p.multiplyByScalar(l,h,JNt),R=p.multiplyByScalar(r,h,lat),V=p.add(m,R,A_[0]);p.subtract(V,u,V),p.multiplyComponents(n,V,V);let F=p.subtract(m,R,A_[1]);p.subtract(F,u,F),p.multiplyComponents(n,F,F);let U=p.subtract(m,R,A_[2]);p.add(U,u,U),p.multiplyComponents(n,U,U);let G=p.add(m,R,A_[3]);return p.add(G,u,G),p.multiplyComponents(n,G,G),A_}var rat=new K,RNe=new p,VU=[new gt,new gt,new gt,new gt];function Pz(t,e,n,i,o,a){rat.x=t,rat.y=e;let s=i.pickEllipsoid(rat,o,RNe);return c(s)?(VU[n]=o.cartesianToCartographic(s,VU[n]),1):(VU[n]=o.cartesianToCartographic(a[n],VU[n]),0)}fn.prototype.computeViewRectangle=function(t,e){t=f(t,mt.WGS84);let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new Ft(p.ZERO,t.maximumRadius);if(n.computeVisibility(i)===yn.OUTSIDE)return;let a=this._scene.canvas,s=a.clientWidth,l=a.clientHeight,r=0,d=ZNe(this,t);if(r+=Pz(0,0,0,this,t,d),r+=Pz(0,l,1,this,t,d),r+=Pz(s,l,2,this,t,d),r+=Pz(s,0,3,this,t,d),r<2)return Gt.MAX_VALUE;e=Gt.fromCartographicArray(VU,e);let m=0,h=VU[3].longitude;for(let u=0;u<4;++u){let R=VU[u].longitude,V=Math.abs(R-h);V>k.PI?m+=k.TWO_PI-V:m+=V,h=R}return k.equalsEpsilon(Math.abs(m),k.TWO_PI,k.EPSILON9)&&(e.west=-k.PI,e.east=k.PI,VU[0].latitude>=0?e.north=k.PI_OVER_TWO:e.south=-k.PI_OVER_TWO),e};fn.prototype.switchToPerspectiveFrustum=function(){if(this._mode===Vt.SCENE2D||this.frustum instanceof Io)return;let t=this._scene;this.frustum=new Io,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.fov=k.toRadians(60)};fn.prototype.switchToOrthographicFrustum=function(){if(this._mode===Vt.SCENE2D||this.frustum instanceof wn)return;let t=HNt(this),e=this._scene;this.frustum=new wn,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.width=t};fn.clone=function(t,e){return c(e)||(e=new fn(t._scene)),p.clone(t.position,e.position),p.clone(t.direction,e.direction),p.clone(t.up,e.up),p.clone(t.right,e.right),L.clone(t._transform,e.transform),e._transformChanged=!0,e.frustum=t.frustum.clone(),e};var{getAzElRange:pat}=x1,{PI_OVER_THREE:eyt}=k;fn.prototype.trackFromTo=function(t,e){this.unTrack(),this.fromEntity=t,this.toEntity=e;let n=this.toEntity.position.getValue(this._scene._frameState.time),i=this.fromEntity.position.getValue(this._scene._frameState.time),{range:o}=pat(n,i);this.currentZoomLevel=o,this._setTrackListener=this._scene._preRender.addEventListener(this._setTrack.bind(this));let{toEntity:a,fromEntity:s}=this,{time:l}=this._scene._frameState;this._wheelEventListener=this._scene.canvas.addEventListener("wheel",r=>{r.preventDefault();let d=a.position.getValue(l),m=s.position.getValue(l);if(!d||!m)return;let{range:h}=x1.getAzElRange(d,m),u=this.currentZoomLevel/h,R=Math.max(1e-5,Math.log(1+2*u)),V=r.deltaY*this.scrollFactor*R;this.currentZoomLevel=Math.min(Math.max(0,this.currentZoomLevel+V),h),this.currentZoomLevel<h?this.zoomActive=!0:this.zoomActive=!1,this._scene.render()})};fn.prototype.eyeDistToTarget=null;fn.prototype.fromEntity=null;fn.prototype.toEntity=null;fn.prototype.cmax=eyt;fn.prototype.scrollFactor=1e3;fn.prototype.currentZoomLevel=-1;fn.prototype.CATS=0;fn.prototype.zoomActive=!1;fn.prototype.trackDebug=!1;fn.prototype.cmin=function(t){return 2*Math.atan(1/t)};fn.prototype._resetTrack=function(){this?.frustum?.fov&&(this.frustum.fov=eyt),this._setTrackListener&&this._setTrackListener(),this._wheelEventListener&&this._wheelEventListener()};fn.prototype.unTrack=function(t=!0){this._wheelEventListener&&(this._scene.canvas.removeEventListener("wheel",this._wheelEventListener),this._wheelEventListener=null),this._setTrackListener&&this._scene._preRender.removeEventListener(this._setTrackListener),t&&this.flyHome(0),this.fromEntity=null,this.toEntity=null,this._resetTrack()};fn.prototype._setZoom=function(){let t=this.toEntity.position.getValue(this._scene._frameState.time),e=this.fromEntity.position.getValue(this._scene._frameState.time),{range:n}=pat(t,e),i=Math.min(this.currentZoomLevel,n),o=this.cmin(n);return(this.cmax-o)*(i/n)+o};fn.prototype._setTrack=function(){try{let t=this.toEntity.position.getValue(this._scene._frameState.time),e=this.fromEntity.position.getValue(this._scene._frameState.time),n=new p;p.subtract(t,e,n),p.normalize(n,n),p.multiplyByScalar(n,-1e-32,n);let i=new L,o=new L;this.fromEntity.computeModelMatrix(this._scene._frameState.time,i,!1,ri.ENU),L.inverse(i,o),L.multiplyByPointAsVector(o,n,n),this.lookAtTransform(i,n);let{az:a,el:s,range:l}=pat(t,e);this.frustum.fov=this.zoomActive?this._setZoom():this.cmax;let r=(this.frustum.fov-this.cmin(l))/(this.cmax-this.cmin(l));this.eyeDistToTarget=(1-r)*.1+r*l;let d=_Z.computeSunPositionInEarthInertialFrame(this._scene._frameState.time),m=p.subtract(d,t,new p),h=p.normalize(m,new p),u=p.normalize(p.subtract(t,e,new p),new p);this.CATS=p.dot(h,u);let R=document.getElementById("debugPanel");this.trackDebug?(R||(R=document.createElement("div"),R.id="debugPanel",R.style.cssText=` background-color: rgba(0, 0, 0, 0.5); color: white; position: absolute; top: 10px; left: 10px; padding: 10px; - z-index: 1;`,document.body.appendChild(b)),b.innerHTML=` + z-index: 1;`,document.body.appendChild(R)),R.innerHTML=` <p style="font-size:.75rem"> <strong>${this.toEntity.name}<br/> <br/> @@ -10700,8 +10700,8 @@ void main() y: ${(e.y/1e3).toFixed(3)} km<br/> z: ${(e.z/1e3).toFixed(3)} km<br/> </p> - `):b&&b.parentNode.removeChild(b)}catch(t){console.log(t)}};var Aa=fn;var FSo=R(W(),1);function RNe(t){this.pass=t.pass,this.commandList=t.commandList,this.camera=t.camera,this.cullingVolume=t.cullingVolume,this.ready=!1}var Eu=RNe;var CSo=R(W(),1);var syt=R(uh(),1),nyt=576,WNe=100,T_="#ffffff",uat="#48b";function lyt(t,e){this.credit=t,this.count=f(e,1)}function fNe(t,e){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(on.equals(o,e))return!0}return!1}function FNe(t){let e=t._previousCesiumCredit,n=t._currentCesiumCredit;on.equals(n,e)||(c(e)&&t._cesiumCreditContainer.removeChild(e.element),c(n)&&t._cesiumCreditContainer.appendChild(n.element),t._previousCesiumCredit=n)}var ryt="cesium-credit-delimiter";function iyt(t){let e=document.createElement("span");return e.textContent=t,e.className=ryt,e}function oyt(t,e){if(c(e)){let n=document.createElement(e);n._creditId=t._creditId,n.appendChild(t),t=n}return t}function ayt(t,e,n,i){let o=t.childNodes,a=-1;e.sort(function(s,l){return l.count-s.count});for(let s=0;s<e.length;++s){let l=e[s].credit;if(c(l)){if(a=s,c(n)&&(a*=2,s>0)){let d=a-1;if(o.length<=d)t.appendChild(iyt(n));else{let m=o[d];m.className!==ryt&&t.replaceChild(iyt(n),m)}}let r=l.element;if(o.length<=a)t.appendChild(oyt(r,i));else{let d=o[a];d._creditId!==l._id&&t.replaceChild(oyt(r,i),d)}}}for(++a;a<o.length;)t.removeChild(o[a])}function UNe(t){let e=t._lightboxCredits,n=t.viewport.clientWidth,i=t.viewport.clientHeight;n!==t._lastViewportWidth&&(n<nyt?(e.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",e.style.marginTop="0"):(e.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",e.style.marginTop=`${Math.floor((i-e.clientHeight)*.5)}px`),t._lastViewportWidth=n),n>=nyt&&i!==t._lastViewportHeight&&(e.style.marginTop=`${Math.floor((i-e.clientHeight)*.5)}px`,t._lastViewportHeight=i)}function mc(t,e){let n=`${t} {`;for(let i in e)e.hasOwnProperty(i)&&(n+=`${i}: ${e[i]}; `);return n+=` } -`,n}function GNe(t){let e="";e+=mc(".cesium-credit-lightbox-overlay",{display:"none","z-index":"1",position:"absolute",top:"0",left:"0",width:"100%",height:"100%","background-color":"rgba(80, 80, 80, 0.8)"}),e+=mc(".cesium-credit-lightbox",{"background-color":"#303336",color:T_,position:"relative","min-height":`${WNe}px`,margin:"auto"}),e+=mc(".cesium-credit-lightbox > ul > li a, .cesium-credit-lightbox > ul > li a:visited",{color:T_}),e+=mc(".cesium-credit-lightbox > ul > li a:hover",{color:uat}),e+=mc(".cesium-credit-lightbox.cesium-credit-lightbox-expanded",{border:"1px solid #444","border-radius":"5px","max-width":"370px"}),e+=mc(".cesium-credit-lightbox.cesium-credit-lightbox-mobile",{height:"100%",width:"100%"}),e+=mc(".cesium-credit-lightbox-title",{padding:"20px 20px 0 20px"}),e+=mc(".cesium-credit-lightbox-close",{"font-size":"18pt",cursor:"pointer",position:"absolute",top:"0",right:"6px",color:T_}),e+=mc(".cesium-credit-lightbox-close:hover",{color:uat}),e+=mc(".cesium-credit-lightbox > ul",{margin:"0",padding:"12px 20px 12px 40px","font-size":"13px"}),e+=mc(".cesium-credit-lightbox > ul > li",{"padding-bottom":"6px"}),e+=mc(".cesium-credit-lightbox > ul > li *",{padding:"0",margin:"0"}),e+=mc(".cesium-credit-expand-link",{"padding-left":"5px",cursor:"pointer","text-decoration":"underline",color:T_}),e+=mc(".cesium-credit-expand-link:hover",{color:uat}),e+=mc(".cesium-credit-text",{color:T_}),e+=mc(".cesium-credit-textContainer *, .cesium-credit-logoContainer *",{display:"inline"});function n(a){if(a.shadowRoot)return a.shadowRoot;if(a.getRootNode){let s=a.getRootNode();if(s instanceof ShadowRoot)return s}}let i=f(n(t),document.head),o=document.createElement("style");o.innerHTML=e,i.appendChild(o)}function xs(t,e,n){let i=this;n=f(n,document.body);let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let a=document.createElement("div");a.className="cesium-credit-lightbox",o.appendChild(a);function s(u){a.contains(u.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let l=document.createElement("div");l.className="cesium-credit-lightbox-title",l.textContent="Data provided by:",a.appendChild(l);let r=document.createElement("a");r.onclick=this.hideLightbox.bind(this),r.innerHTML="×",r.className="cesium-credit-lightbox-close",a.appendChild(r);let d=document.createElement("ul");a.appendChild(d);let m=document.createElement("div");m.className="cesium-credit-logoContainer",m.style.display="inline",t.appendChild(m);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",t.appendChild(h);let Z=document.createElement("a");Z.className="cesium-credit-expand-link",Z.onclick=this.showLightbox.bind(this),Z.textContent="Data attribution",t.appendChild(Z),GNe(t);let b=on.clone(xs.cesiumCredit);this._delimiter=f(e," \u2022 "),this._screenContainer=h,this._cesiumCreditContainer=m,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=a,this._creditList=d,this._lightbox=o,this._hideLightbox=s,this._expandLink=Z,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=b,this._previousCesiumCredit=void 0,this._currentCesiumCredit=b,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new qe,lightboxCredits:new qe},this._defaultCredit=void 0,this.viewport=n,this.container=t}function dyt(t,e,n,i){i=f(i,1);let o=e.get(n.id);if(c(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let a=t._creditDisplayElementPool,s=t._creditDisplayElementPoolIndex;s<a.length?(o=a[s],o.credit=n,o.count=i):(o=new lyt(n,i),a.push(o)),++t._creditDisplayElementPoolIndex,e.set(n.id,o)}}xs.prototype.addCreditToNextFrame=function(t){if(t.isIon()){c(this._defaultCredit)||(this._defaultCredit=on.clone(cyt())),this._currentCesiumCredit=this._defaultCredit;return}let e;t.showOnScreen?e=this._currentFrameCredits.screenCredits:e=this._currentFrameCredits.lightboxCredits,dyt(this,e,t)};xs.prototype.addStaticCredit=function(t){let e=this._staticCredits;fNe(e,t)||e.push(t)};xs.prototype.removeStaticCredit=function(t){let e=this._staticCredits,n=e.indexOf(t);n!==-1&&e.splice(n,1)};xs.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};xs.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};xs.prototype.update=function(){this._expanded&&UNe(this)};xs.prototype.beginFrame=function(){let t=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let e=t.screenCredits,n=t.lightboxCredits;e.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let a=i[o],s=a.showOnScreen?e:n;a.isIon()&&on.equals(xs.cesiumCredit,this._cesiumCredit)||dyt(this,s,a,Number.MAX_VALUE)}on.equals(xs.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=on.clone(xs.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};xs.prototype.endFrame=function(){let t=this._currentFrameCredits.screenCredits.values;ayt(this._screenContainer,t,this._delimiter,void 0);let e=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=e.length>0?"inline":"none",ayt(this._creditList,e,void 0,"li"),FNe(this)};xs.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),At(this)};xs.prototype.isDestroyed=function(){return!1};xs._cesiumCredit=void 0;xs._cesiumCreditInitialized=!1;var qz;function cyt(){if(!c(qz)){let t=Dn("Assets/Images/ion-credit.png");t.indexOf("http://")!==0&&t.indexOf("https://")!==0&&t.indexOf("data:")!==0&&(t=new syt.default(t).path()),qz=new on(`<a href="https://cesium.com/" target="_blank"><img src="${t}" title="Cesium ion"/></a>`,!0)}return xs._cesiumCreditInitialized||(xs._cesiumCredit=qz,xs._cesiumCreditInitialized=!0),qz}Object.defineProperties(xs,{cesiumCredit:{get:function(){return cyt(),xs._cesiumCredit},set:function(t){xs._cesiumCredit=t,xs._cesiumCreditInitialized=!0}}});xs.CreditDisplayElement=lyt;var S_=xs;var ggo=R(W(),1);var PSo=R(W(),1);var $z=0,ANe=1;function ZS(t){let e=t.frustum,n=t.orientation,i=t.origin,o=f(t.vertexFormat,ee.DEFAULT),a=f(t._drawNearPlane,!0),s,l;e instanceof Io?(s=$z,l=Io.packedLength):e instanceof wn&&(s=ANe,l=wn.packedLength),this._frustumType=s,this._frustum=e.clone(),this._origin=p.clone(i),this._orientation=wt.clone(n),this._drawNearPlane=a,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+l+p.packedLength+wt.packedLength+ee.packedLength}ZS.pack=function(t,e,n){n=f(n,0);let i=t._frustumType,o=t._frustum;return e[n++]=i,i===$z?(Io.pack(o,e,n),n+=Io.packedLength):(wn.pack(o,e,n),n+=wn.packedLength),p.pack(t._origin,e,n),n+=p.packedLength,wt.pack(t._orientation,e,n),n+=wt.packedLength,ee.pack(t._vertexFormat,e,n),n+=ee.packedLength,e[n]=t._drawNearPlane?1:0,e};var TNe=new Io,SNe=new wn,gNe=new wt,ENe=new p,CNe=new ee;ZS.unpack=function(t,e,n){e=f(e,0);let i=t[e++],o;i===$z?(o=Io.unpack(t,e,TNe),e+=Io.packedLength):(o=wn.unpack(t,e,SNe),e+=wn.packedLength);let a=p.unpack(t,e,ENe);e+=p.packedLength;let s=wt.unpack(t,e,gNe);e+=wt.packedLength;let l=ee.unpack(t,e,CNe);e+=ee.packedLength;let r=t[e]===1;if(!c(n))return new ZS({frustum:o,origin:a,orientation:s,vertexFormat:l,_drawNearPlane:r});let d=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(d),n._frustumType=i,n._origin=p.clone(a,n._origin),n._orientation=wt.clone(s,n._orientation),n._vertexFormat=ee.clone(l,n._vertexFormat),n._drawNearPlane=r,n};function J1(t,e,n,i,o,a,s,l){let r=t/3*2;for(let d=0;d<4;++d)c(e)&&(e[t]=a.x,e[t+1]=a.y,e[t+2]=a.z),c(n)&&(n[t]=s.x,n[t+1]=s.y,n[t+2]=s.z),c(i)&&(i[t]=l.x,i[t+1]=l.y,i[t+2]=l.z),t+=3;o[r]=0,o[r+1]=0,o[r+2]=1,o[r+3]=0,o[r+4]=1,o[r+5]=1,o[r+6]=0,o[r+7]=1}var INe=new ot,NNe=new L,Zat=new L,myt=new p,hyt=new p,pyt=new p,yNe=new p,BNe=new p,QNe=new p,ZU=new Array(3),g_=new Array(4);g_[0]=new Rt(-1,-1,1,1);g_[1]=new Rt(1,-1,1,1);g_[2]=new Rt(1,1,1,1);g_[3]=new Rt(-1,1,1,1);var uyt=new Array(4);for(let t=0;t<4;++t)uyt[t]=new Rt;ZS._computeNearFarPlanes=function(t,e,n,i,o,a,s,l){let r=ot.fromQuaternion(e,INe),d=f(a,myt),m=f(s,hyt),h=f(l,pyt);d=ot.getColumn(r,0,d),m=ot.getColumn(r,1,m),h=ot.getColumn(r,2,h),p.normalize(d,d),p.normalize(m,m),p.normalize(h,h),p.negate(d,d);let Z=L.computeView(t,h,m,d,NNe),b,u,F=i.projectionMatrix;if(n===$z){let U=L.multiply(F,Z,Zat);u=L.inverse(U,Zat)}else b=L.inverseTransformation(Z,Zat);c(u)?(ZU[0]=i.near,ZU[1]=i.far):(ZU[0]=0,ZU[1]=i.near,ZU[2]=i.far);for(let U=0;U<2;++U)for(let G=0;G<4;++G){let A=Rt.clone(g_[G],uyt[G]);if(c(u)){A=L.multiplyByVector(u,A,A);let T=1/A.w;p.multiplyByScalar(A,T,A),p.subtract(A,t,A),p.normalize(A,A);let g=p.dot(h,A);p.multiplyByScalar(A,ZU[U]/g,A),p.add(A,t,A)}else{let T=i.offCenterFrustum;c(T)&&(i=T);let g=ZU[U],C=ZU[U+1];A.x=(A.x*(i.right-i.left)+i.left+i.right)*.5,A.y=(A.y*(i.top-i.bottom)+i.bottom+i.top)*.5,A.z=(A.z*(g-C)-g-C)*.5,A.w=1,L.multiplyByVector(b,A,A)}o[12*U+G*3]=A.x,o[12*U+G*3+1]=A.y,o[12*U+G*3+2]=A.z}};ZS.createGeometry=function(t){let e=t._frustumType,n=t._frustum,i=t._origin,o=t._orientation,a=t._drawNearPlane,s=t._vertexFormat,l=a?6:5,r=new Float64Array(3*4*6);ZS._computeNearFarPlanes(i,o,e,n,r);let d=3*4*2;r[d]=r[3*4],r[d+1]=r[3*4+1],r[d+2]=r[3*4+2],r[d+3]=r[0],r[d+4]=r[1],r[d+5]=r[2],r[d+6]=r[3*3],r[d+7]=r[3*3+1],r[d+8]=r[3*3+2],r[d+9]=r[3*7],r[d+10]=r[3*7+1],r[d+11]=r[3*7+2],d+=3*4,r[d]=r[3*5],r[d+1]=r[3*5+1],r[d+2]=r[3*5+2],r[d+3]=r[3],r[d+4]=r[4],r[d+5]=r[5],r[d+6]=r[0],r[d+7]=r[1],r[d+8]=r[2],r[d+9]=r[3*4],r[d+10]=r[3*4+1],r[d+11]=r[3*4+2],d+=3*4,r[d]=r[3],r[d+1]=r[4],r[d+2]=r[5],r[d+3]=r[3*5],r[d+4]=r[3*5+1],r[d+5]=r[3*5+2],r[d+6]=r[3*6],r[d+7]=r[3*6+1],r[d+8]=r[3*6+2],r[d+9]=r[3*2],r[d+10]=r[3*2+1],r[d+11]=r[3*2+2],d+=3*4,r[d]=r[3*2],r[d+1]=r[3*2+1],r[d+2]=r[3*2+2],r[d+3]=r[3*6],r[d+4]=r[3*6+1],r[d+5]=r[3*6+2],r[d+6]=r[3*7],r[d+7]=r[3*7+1],r[d+8]=r[3*7+2],r[d+9]=r[3*3],r[d+10]=r[3*3+1],r[d+11]=r[3*3+2],a||(r=r.subarray(3*4));let m=new ei({position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:r})});if(c(s.normal)||c(s.tangent)||c(s.bitangent)||c(s.st)){let Z=c(s.normal)?new Float32Array(12*l):void 0,b=c(s.tangent)?new Float32Array(3*4*l):void 0,u=c(s.bitangent)?new Float32Array(3*4*l):void 0,F=c(s.st)?new Float32Array(2*4*l):void 0,U=myt,G=hyt,A=pyt,T=p.negate(U,yNe),g=p.negate(G,BNe),C=p.negate(A,QNe);d=0,a&&(J1(d,Z,b,u,F,C,U,G),d+=3*4),J1(d,Z,b,u,F,A,T,G),d+=3*4,J1(d,Z,b,u,F,T,C,G),d+=3*4,J1(d,Z,b,u,F,g,C,T),d+=3*4,J1(d,Z,b,u,F,U,A,G),d+=3*4,J1(d,Z,b,u,F,G,A,T),c(Z)&&(m.normal=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:Z})),c(b)&&(m.tangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:b})),c(u)&&(m.bitangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:u})),c(F)&&(m.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:F}))}let h=new Uint16Array(6*l);for(let Z=0;Z<l;++Z){let b=Z*6,u=Z*4;h[b]=u,h[b+1]=u+1,h[b+2]=u+2,h[b+3]=u,h[b+4]=u+2,h[b+5]=u+3}return new _e({attributes:m,indices:h,primitiveType:le.TRIANGLES,boundingSphere:Ft.fromVertices(r)})};var VS=ZS;var rgo=R(W(),1);var Vat=0,kNe=1;function E_(t){let e=t.frustum,n=t.orientation,i=t.origin,o=f(t._drawNearPlane,!0),a,s;e instanceof Io?(a=Vat,s=Io.packedLength):e instanceof wn&&(a=kNe,s=wn.packedLength),this._frustumType=a,this._frustum=e.clone(),this._origin=p.clone(i),this._orientation=wt.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+p.packedLength+wt.packedLength}E_.pack=function(t,e,n){n=f(n,0);let i=t._frustumType,o=t._frustum;return e[n++]=i,i===Vat?(Io.pack(o,e,n),n+=Io.packedLength):(wn.pack(o,e,n),n+=wn.packedLength),p.pack(t._origin,e,n),n+=p.packedLength,wt.pack(t._orientation,e,n),n+=wt.packedLength,e[n]=t._drawNearPlane?1:0,e};var YNe=new Io,xNe=new wn,XNe=new wt,JNe=new p;E_.unpack=function(t,e,n){e=f(e,0);let i=t[e++],o;i===Vat?(o=Io.unpack(t,e,YNe),e+=Io.packedLength):(o=wn.unpack(t,e,xNe),e+=wn.packedLength);let a=p.unpack(t,e,JNe);e+=p.packedLength;let s=wt.unpack(t,e,XNe);e+=wt.packedLength;let l=t[e]===1;if(!c(n))return new E_({frustum:o,origin:a,orientation:s,_drawNearPlane:l});let r=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(r),n._frustumType=i,n._origin=p.clone(a,n._origin),n._orientation=wt.clone(s,n._orientation),n._drawNearPlane=l,n};E_.createGeometry=function(t){let e=t._frustumType,n=t._frustum,i=t._origin,o=t._orientation,a=t._drawNearPlane,s=new Float64Array(3*4*2);VS._computeNearFarPlanes(i,o,e,n,s);let l=new ei({position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:s})}),r,d,m=a?2:1,h=new Uint16Array(8*(m+1)),Z=a?0:1;for(;Z<2;++Z)r=a?Z*8:0,d=Z*4,h[r]=d,h[r+1]=d+1,h[r+2]=d+1,h[r+3]=d+2,h[r+4]=d+2,h[r+5]=d+3,h[r+6]=d+3,h[r+7]=d;for(Z=0;Z<2;++Z)r=(m+Z)*8,d=Z*4,h[r]=d,h[r+1]=d+4,h[r+2]=d+1,h[r+3]=d+5,h[r+4]=d+2,h[r+5]=d+6,h[r+6]=d+3,h[r+7]=d+7;return new _e({attributes:l,indices:h,primitiveType:le.LINES,boundingSphere:Ft.fromVertices(s)})};var C_=E_;function tj(t){t=f(t,f.EMPTY_OBJECT),this._camera=t.camera,this._frustumSplits=t.frustumSplits,this._color=f(t.color,v.CYAN),this._updateOnChange=f(t.updateOnChange,!0),this.show=f(t.show,!0),this.id=t.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var LNe=new p,MNe=new ot,_Ne=new wt,DNe=new Io,ONe=new em,HNe=new wn,wNe=new el,PNe=new v,vNe=[1,1e5];tj.prototype.update=function(t){if(!this.show)return;let e=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=e.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),e[i]=e[i]&&e[i].destroy();e.length=0,n.length=0}if(e.length===0){let a=this._camera,s=a.frustum,l;s instanceof Io?l=DNe:s instanceof em?l=ONe:s instanceof wn?l=HNe:l=wNe,l=s.clone(l);let r,d=this._frustumSplits;!c(d)||d.length<=1?(d=vNe,d[0]=this._camera.frustum.near,d[1]=this._camera.frustum.far,r=1):r=d.length-1;let m=a.positionWC,h=a.directionWC,Z=a.upWC,b=a.rightWC;b=p.negate(b,LNe);let u=MNe;ot.setColumn(u,0,b,u),ot.setColumn(u,1,Z,u),ot.setColumn(u,2,h,u);let F=wt.fromRotationMatrix(u,_Ne);for(e.length=n.length=r,i=0;i<r;++i)l.near=d[i],l.far=d[i+1],e[i]=new Wi({geometryInstances:new $e({geometry:new VS({origin:m,orientation:F,frustum:l,_drawNearPlane:i===0}),attributes:{color:En.fromColor(v.fromAlpha(this._color,.1,PNe))},id:this.id,pickPrimitive:this}),appearance:new jn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Wi({geometryInstances:new $e({geometry:new C_({origin:m,orientation:F,frustum:l,_drawNearPlane:i===0}),attributes:{color:En.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new jn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=e.length,i=0;i<o;++i)n[i].update(t),e[i].update(t)};tj.prototype.isDestroyed=function(){return!1};tj.prototype.destroy=function(){let t=this._planesPrimitives.length;for(let e=0;e<t;++e)this._outlinePrimitives[e]=this._outlinePrimitives[e]&&this._outlinePrimitives[e].destroy(),this._planesPrimitives[e]=this._planesPrimitives[e]&&this._planesPrimitives[e].destroy();return At(this)};var Jb=tj;var tEo=R(W(),1);var Cgo=R(W(),1),I_=`in vec4 positionEC; + `):R&&R.parentNode.removeChild(R)}catch(t){console.log(t)}};var Aa=fn;var FTo=b(W(),1);function bNe(t){this.pass=t.pass,this.commandList=t.commandList,this.camera=t.camera,this.cullingVolume=t.cullingVolume,this.ready=!1}var EV=bNe;var CTo=b(W(),1);var syt=b(Vh(),1),nyt=576,WNe=100,S_="#ffffff",Vat="#48b";function lyt(t,e){this.credit=t,this.count=f(e,1)}function fNe(t,e){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(on.equals(o,e))return!0}return!1}function FNe(t){let e=t._previousCesiumCredit,n=t._currentCesiumCredit;on.equals(n,e)||(c(e)&&t._cesiumCreditContainer.removeChild(e.element),c(n)&&t._cesiumCreditContainer.appendChild(n.element),t._previousCesiumCredit=n)}var ryt="cesium-credit-delimiter";function iyt(t){let e=document.createElement("span");return e.textContent=t,e.className=ryt,e}function oyt(t,e){if(c(e)){let n=document.createElement(e);n._creditId=t._creditId,n.appendChild(t),t=n}return t}function ayt(t,e,n,i){let o=t.childNodes,a=-1;e.sort(function(s,l){return l.count-s.count});for(let s=0;s<e.length;++s){let l=e[s].credit;if(c(l)){if(a=s,c(n)&&(a*=2,s>0)){let d=a-1;if(o.length<=d)t.appendChild(iyt(n));else{let m=o[d];m.className!==ryt&&t.replaceChild(iyt(n),m)}}let r=l.element;if(o.length<=a)t.appendChild(oyt(r,i));else{let d=o[a];d._creditId!==l._id&&t.replaceChild(oyt(r,i),d)}}}for(++a;a<o.length;)t.removeChild(o[a])}function UNe(t){let e=t._lightboxCredits,n=t.viewport.clientWidth,i=t.viewport.clientHeight;n!==t._lastViewportWidth&&(n<nyt?(e.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",e.style.marginTop="0"):(e.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",e.style.marginTop=`${Math.floor((i-e.clientHeight)*.5)}px`),t._lastViewportWidth=n),n>=nyt&&i!==t._lastViewportHeight&&(e.style.marginTop=`${Math.floor((i-e.clientHeight)*.5)}px`,t._lastViewportHeight=i)}function mc(t,e){let n=`${t} {`;for(let i in e)e.hasOwnProperty(i)&&(n+=`${i}: ${e[i]}; `);return n+=` } +`,n}function GNe(t){let e="";e+=mc(".cesium-credit-lightbox-overlay",{display:"none","z-index":"1",position:"absolute",top:"0",left:"0",width:"100%",height:"100%","background-color":"rgba(80, 80, 80, 0.8)"}),e+=mc(".cesium-credit-lightbox",{"background-color":"#303336",color:S_,position:"relative","min-height":`${WNe}px`,margin:"auto"}),e+=mc(".cesium-credit-lightbox > ul > li a, .cesium-credit-lightbox > ul > li a:visited",{color:S_}),e+=mc(".cesium-credit-lightbox > ul > li a:hover",{color:Vat}),e+=mc(".cesium-credit-lightbox.cesium-credit-lightbox-expanded",{border:"1px solid #444","border-radius":"5px","max-width":"370px"}),e+=mc(".cesium-credit-lightbox.cesium-credit-lightbox-mobile",{height:"100%",width:"100%"}),e+=mc(".cesium-credit-lightbox-title",{padding:"20px 20px 0 20px"}),e+=mc(".cesium-credit-lightbox-close",{"font-size":"18pt",cursor:"pointer",position:"absolute",top:"0",right:"6px",color:S_}),e+=mc(".cesium-credit-lightbox-close:hover",{color:Vat}),e+=mc(".cesium-credit-lightbox > ul",{margin:"0",padding:"12px 20px 12px 40px","font-size":"13px"}),e+=mc(".cesium-credit-lightbox > ul > li",{"padding-bottom":"6px"}),e+=mc(".cesium-credit-lightbox > ul > li *",{padding:"0",margin:"0"}),e+=mc(".cesium-credit-expand-link",{"padding-left":"5px",cursor:"pointer","text-decoration":"underline",color:S_}),e+=mc(".cesium-credit-expand-link:hover",{color:Vat}),e+=mc(".cesium-credit-text",{color:S_}),e+=mc(".cesium-credit-textContainer *, .cesium-credit-logoContainer *",{display:"inline"});function n(a){if(a.shadowRoot)return a.shadowRoot;if(a.getRootNode){let s=a.getRootNode();if(s instanceof ShadowRoot)return s}}let i=f(n(t),document.head),o=document.createElement("style");o.innerHTML=e,i.appendChild(o)}function xs(t,e,n){let i=this;n=f(n,document.body);let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let a=document.createElement("div");a.className="cesium-credit-lightbox",o.appendChild(a);function s(V){a.contains(V.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let l=document.createElement("div");l.className="cesium-credit-lightbox-title",l.textContent="Data provided by:",a.appendChild(l);let r=document.createElement("a");r.onclick=this.hideLightbox.bind(this),r.innerHTML="×",r.className="cesium-credit-lightbox-close",a.appendChild(r);let d=document.createElement("ul");a.appendChild(d);let m=document.createElement("div");m.className="cesium-credit-logoContainer",m.style.display="inline",t.appendChild(m);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",t.appendChild(h);let u=document.createElement("a");u.className="cesium-credit-expand-link",u.onclick=this.showLightbox.bind(this),u.textContent="Data attribution",t.appendChild(u),GNe(t);let R=on.clone(xs.cesiumCredit);this._delimiter=f(e," \u2022 "),this._screenContainer=h,this._cesiumCreditContainer=m,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=a,this._creditList=d,this._lightbox=o,this._hideLightbox=s,this._expandLink=u,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=R,this._previousCesiumCredit=void 0,this._currentCesiumCredit=R,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new qe,lightboxCredits:new qe},this._defaultCredit=void 0,this.viewport=n,this.container=t}function dyt(t,e,n,i){i=f(i,1);let o=e.get(n.id);if(c(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let a=t._creditDisplayElementPool,s=t._creditDisplayElementPoolIndex;s<a.length?(o=a[s],o.credit=n,o.count=i):(o=new lyt(n,i),a.push(o)),++t._creditDisplayElementPoolIndex,e.set(n.id,o)}}xs.prototype.addCreditToNextFrame=function(t){if(t.isIon()){c(this._defaultCredit)||(this._defaultCredit=on.clone(cyt())),this._currentCesiumCredit=this._defaultCredit;return}let e;t.showOnScreen?e=this._currentFrameCredits.screenCredits:e=this._currentFrameCredits.lightboxCredits,dyt(this,e,t)};xs.prototype.addStaticCredit=function(t){let e=this._staticCredits;fNe(e,t)||e.push(t)};xs.prototype.removeStaticCredit=function(t){let e=this._staticCredits,n=e.indexOf(t);n!==-1&&e.splice(n,1)};xs.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};xs.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};xs.prototype.update=function(){this._expanded&&UNe(this)};xs.prototype.beginFrame=function(){let t=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let e=t.screenCredits,n=t.lightboxCredits;e.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let a=i[o],s=a.showOnScreen?e:n;a.isIon()&&on.equals(xs.cesiumCredit,this._cesiumCredit)||dyt(this,s,a,Number.MAX_VALUE)}on.equals(xs.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=on.clone(xs.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};xs.prototype.endFrame=function(){let t=this._currentFrameCredits.screenCredits.values;ayt(this._screenContainer,t,this._delimiter,void 0);let e=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=e.length>0?"inline":"none",ayt(this._creditList,e,void 0,"li"),FNe(this)};xs.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),At(this)};xs.prototype.isDestroyed=function(){return!1};xs._cesiumCredit=void 0;xs._cesiumCreditInitialized=!1;var qz;function cyt(){if(!c(qz)){let t=Dn("Assets/Images/ion-credit.png");t.indexOf("http://")!==0&&t.indexOf("https://")!==0&&t.indexOf("data:")!==0&&(t=new syt.default(t).path()),qz=new on(`<a href="https://cesium.com/" target="_blank"><img src="${t}" title="Cesium ion"/></a>`,!0)}return xs._cesiumCreditInitialized||(xs._cesiumCredit=qz,xs._cesiumCreditInitialized=!0),qz}Object.defineProperties(xs,{cesiumCredit:{get:function(){return cyt(),xs._cesiumCredit},set:function(t){xs._cesiumCredit=t,xs._cesiumCreditInitialized=!0}}});xs.CreditDisplayElement=lyt;var T_=xs;var ggo=b(W(),1);var PTo=b(W(),1);var $z=0,ANe=1;function uT(t){let e=t.frustum,n=t.orientation,i=t.origin,o=f(t.vertexFormat,ee.DEFAULT),a=f(t._drawNearPlane,!0),s,l;e instanceof Io?(s=$z,l=Io.packedLength):e instanceof wn&&(s=ANe,l=wn.packedLength),this._frustumType=s,this._frustum=e.clone(),this._origin=p.clone(i),this._orientation=wt.clone(n),this._drawNearPlane=a,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+l+p.packedLength+wt.packedLength+ee.packedLength}uT.pack=function(t,e,n){n=f(n,0);let i=t._frustumType,o=t._frustum;return e[n++]=i,i===$z?(Io.pack(o,e,n),n+=Io.packedLength):(wn.pack(o,e,n),n+=wn.packedLength),p.pack(t._origin,e,n),n+=p.packedLength,wt.pack(t._orientation,e,n),n+=wt.packedLength,ee.pack(t._vertexFormat,e,n),n+=ee.packedLength,e[n]=t._drawNearPlane?1:0,e};var SNe=new Io,TNe=new wn,gNe=new wt,ENe=new p,CNe=new ee;uT.unpack=function(t,e,n){e=f(e,0);let i=t[e++],o;i===$z?(o=Io.unpack(t,e,SNe),e+=Io.packedLength):(o=wn.unpack(t,e,TNe),e+=wn.packedLength);let a=p.unpack(t,e,ENe);e+=p.packedLength;let s=wt.unpack(t,e,gNe);e+=wt.packedLength;let l=ee.unpack(t,e,CNe);e+=ee.packedLength;let r=t[e]===1;if(!c(n))return new uT({frustum:o,origin:a,orientation:s,vertexFormat:l,_drawNearPlane:r});let d=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(d),n._frustumType=i,n._origin=p.clone(a,n._origin),n._orientation=wt.clone(s,n._orientation),n._vertexFormat=ee.clone(l,n._vertexFormat),n._drawNearPlane=r,n};function J1(t,e,n,i,o,a,s,l){let r=t/3*2;for(let d=0;d<4;++d)c(e)&&(e[t]=a.x,e[t+1]=a.y,e[t+2]=a.z),c(n)&&(n[t]=s.x,n[t+1]=s.y,n[t+2]=s.z),c(i)&&(i[t]=l.x,i[t+1]=l.y,i[t+2]=l.z),t+=3;o[r]=0,o[r+1]=0,o[r+2]=1,o[r+3]=0,o[r+4]=1,o[r+5]=1,o[r+6]=0,o[r+7]=1}var INe=new ot,NNe=new L,uat=new L,myt=new p,hyt=new p,pyt=new p,yNe=new p,BNe=new p,QNe=new p,uU=new Array(3),g_=new Array(4);g_[0]=new bt(-1,-1,1,1);g_[1]=new bt(1,-1,1,1);g_[2]=new bt(1,1,1,1);g_[3]=new bt(-1,1,1,1);var Vyt=new Array(4);for(let t=0;t<4;++t)Vyt[t]=new bt;uT._computeNearFarPlanes=function(t,e,n,i,o,a,s,l){let r=ot.fromQuaternion(e,INe),d=f(a,myt),m=f(s,hyt),h=f(l,pyt);d=ot.getColumn(r,0,d),m=ot.getColumn(r,1,m),h=ot.getColumn(r,2,h),p.normalize(d,d),p.normalize(m,m),p.normalize(h,h),p.negate(d,d);let u=L.computeView(t,h,m,d,NNe),R,V,F=i.projectionMatrix;if(n===$z){let U=L.multiply(F,u,uat);V=L.inverse(U,uat)}else R=L.inverseTransformation(u,uat);c(V)?(uU[0]=i.near,uU[1]=i.far):(uU[0]=0,uU[1]=i.near,uU[2]=i.far);for(let U=0;U<2;++U)for(let G=0;G<4;++G){let A=bt.clone(g_[G],Vyt[G]);if(c(V)){A=L.multiplyByVector(V,A,A);let S=1/A.w;p.multiplyByScalar(A,S,A),p.subtract(A,t,A),p.normalize(A,A);let g=p.dot(h,A);p.multiplyByScalar(A,uU[U]/g,A),p.add(A,t,A)}else{let S=i.offCenterFrustum;c(S)&&(i=S);let g=uU[U],C=uU[U+1];A.x=(A.x*(i.right-i.left)+i.left+i.right)*.5,A.y=(A.y*(i.top-i.bottom)+i.bottom+i.top)*.5,A.z=(A.z*(g-C)-g-C)*.5,A.w=1,L.multiplyByVector(R,A,A)}o[12*U+G*3]=A.x,o[12*U+G*3+1]=A.y,o[12*U+G*3+2]=A.z}};uT.createGeometry=function(t){let e=t._frustumType,n=t._frustum,i=t._origin,o=t._orientation,a=t._drawNearPlane,s=t._vertexFormat,l=a?6:5,r=new Float64Array(3*4*6);uT._computeNearFarPlanes(i,o,e,n,r);let d=3*4*2;r[d]=r[3*4],r[d+1]=r[3*4+1],r[d+2]=r[3*4+2],r[d+3]=r[0],r[d+4]=r[1],r[d+5]=r[2],r[d+6]=r[3*3],r[d+7]=r[3*3+1],r[d+8]=r[3*3+2],r[d+9]=r[3*7],r[d+10]=r[3*7+1],r[d+11]=r[3*7+2],d+=3*4,r[d]=r[3*5],r[d+1]=r[3*5+1],r[d+2]=r[3*5+2],r[d+3]=r[3],r[d+4]=r[4],r[d+5]=r[5],r[d+6]=r[0],r[d+7]=r[1],r[d+8]=r[2],r[d+9]=r[3*4],r[d+10]=r[3*4+1],r[d+11]=r[3*4+2],d+=3*4,r[d]=r[3],r[d+1]=r[4],r[d+2]=r[5],r[d+3]=r[3*5],r[d+4]=r[3*5+1],r[d+5]=r[3*5+2],r[d+6]=r[3*6],r[d+7]=r[3*6+1],r[d+8]=r[3*6+2],r[d+9]=r[3*2],r[d+10]=r[3*2+1],r[d+11]=r[3*2+2],d+=3*4,r[d]=r[3*2],r[d+1]=r[3*2+1],r[d+2]=r[3*2+2],r[d+3]=r[3*6],r[d+4]=r[3*6+1],r[d+5]=r[3*6+2],r[d+6]=r[3*7],r[d+7]=r[3*7+1],r[d+8]=r[3*7+2],r[d+9]=r[3*3],r[d+10]=r[3*3+1],r[d+11]=r[3*3+2],a||(r=r.subarray(3*4));let m=new ei({position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:r})});if(c(s.normal)||c(s.tangent)||c(s.bitangent)||c(s.st)){let u=c(s.normal)?new Float32Array(12*l):void 0,R=c(s.tangent)?new Float32Array(3*4*l):void 0,V=c(s.bitangent)?new Float32Array(3*4*l):void 0,F=c(s.st)?new Float32Array(2*4*l):void 0,U=myt,G=hyt,A=pyt,S=p.negate(U,yNe),g=p.negate(G,BNe),C=p.negate(A,QNe);d=0,a&&(J1(d,u,R,V,F,C,U,G),d+=3*4),J1(d,u,R,V,F,A,S,G),d+=3*4,J1(d,u,R,V,F,S,C,G),d+=3*4,J1(d,u,R,V,F,g,C,S),d+=3*4,J1(d,u,R,V,F,U,A,G),d+=3*4,J1(d,u,R,V,F,G,A,S),c(u)&&(m.normal=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:u})),c(R)&&(m.tangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:R})),c(V)&&(m.bitangent=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:V})),c(F)&&(m.st=new jt({componentDatatype:it.FLOAT,componentsPerAttribute:2,values:F}))}let h=new Uint16Array(6*l);for(let u=0;u<l;++u){let R=u*6,V=u*4;h[R]=V,h[R+1]=V+1,h[R+2]=V+2,h[R+3]=V,h[R+4]=V+2,h[R+5]=V+3}return new _e({attributes:m,indices:h,primitiveType:le.TRIANGLES,boundingSphere:Ft.fromVertices(r)})};var ZT=uT;var rgo=b(W(),1);var Zat=0,kNe=1;function E_(t){let e=t.frustum,n=t.orientation,i=t.origin,o=f(t._drawNearPlane,!0),a,s;e instanceof Io?(a=Zat,s=Io.packedLength):e instanceof wn&&(a=kNe,s=wn.packedLength),this._frustumType=a,this._frustum=e.clone(),this._origin=p.clone(i),this._orientation=wt.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+p.packedLength+wt.packedLength}E_.pack=function(t,e,n){n=f(n,0);let i=t._frustumType,o=t._frustum;return e[n++]=i,i===Zat?(Io.pack(o,e,n),n+=Io.packedLength):(wn.pack(o,e,n),n+=wn.packedLength),p.pack(t._origin,e,n),n+=p.packedLength,wt.pack(t._orientation,e,n),n+=wt.packedLength,e[n]=t._drawNearPlane?1:0,e};var YNe=new Io,xNe=new wn,XNe=new wt,JNe=new p;E_.unpack=function(t,e,n){e=f(e,0);let i=t[e++],o;i===Zat?(o=Io.unpack(t,e,YNe),e+=Io.packedLength):(o=wn.unpack(t,e,xNe),e+=wn.packedLength);let a=p.unpack(t,e,JNe);e+=p.packedLength;let s=wt.unpack(t,e,XNe);e+=wt.packedLength;let l=t[e]===1;if(!c(n))return new E_({frustum:o,origin:a,orientation:s,_drawNearPlane:l});let r=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(r),n._frustumType=i,n._origin=p.clone(a,n._origin),n._orientation=wt.clone(s,n._orientation),n._drawNearPlane=l,n};E_.createGeometry=function(t){let e=t._frustumType,n=t._frustum,i=t._origin,o=t._orientation,a=t._drawNearPlane,s=new Float64Array(3*4*2);ZT._computeNearFarPlanes(i,o,e,n,s);let l=new ei({position:new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:s})}),r,d,m=a?2:1,h=new Uint16Array(8*(m+1)),u=a?0:1;for(;u<2;++u)r=a?u*8:0,d=u*4,h[r]=d,h[r+1]=d+1,h[r+2]=d+1,h[r+3]=d+2,h[r+4]=d+2,h[r+5]=d+3,h[r+6]=d+3,h[r+7]=d;for(u=0;u<2;++u)r=(m+u)*8,d=u*4,h[r]=d,h[r+1]=d+4,h[r+2]=d+1,h[r+3]=d+5,h[r+4]=d+2,h[r+5]=d+6,h[r+6]=d+3,h[r+7]=d+7;return new _e({attributes:l,indices:h,primitiveType:le.LINES,boundingSphere:Ft.fromVertices(s)})};var C_=E_;function tj(t){t=f(t,f.EMPTY_OBJECT),this._camera=t.camera,this._frustumSplits=t.frustumSplits,this._color=f(t.color,v.CYAN),this._updateOnChange=f(t.updateOnChange,!0),this.show=f(t.show,!0),this.id=t.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var LNe=new p,MNe=new ot,_Ne=new wt,DNe=new Io,ONe=new em,HNe=new wn,wNe=new el,PNe=new v,vNe=[1,1e5];tj.prototype.update=function(t){if(!this.show)return;let e=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=e.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),e[i]=e[i]&&e[i].destroy();e.length=0,n.length=0}if(e.length===0){let a=this._camera,s=a.frustum,l;s instanceof Io?l=DNe:s instanceof em?l=ONe:s instanceof wn?l=HNe:l=wNe,l=s.clone(l);let r,d=this._frustumSplits;!c(d)||d.length<=1?(d=vNe,d[0]=this._camera.frustum.near,d[1]=this._camera.frustum.far,r=1):r=d.length-1;let m=a.positionWC,h=a.directionWC,u=a.upWC,R=a.rightWC;R=p.negate(R,LNe);let V=MNe;ot.setColumn(V,0,R,V),ot.setColumn(V,1,u,V),ot.setColumn(V,2,h,V);let F=wt.fromRotationMatrix(V,_Ne);for(e.length=n.length=r,i=0;i<r;++i)l.near=d[i],l.far=d[i+1],e[i]=new Wi({geometryInstances:new $e({geometry:new ZT({origin:m,orientation:F,frustum:l,_drawNearPlane:i===0}),attributes:{color:En.fromColor(v.fromAlpha(this._color,.1,PNe))},id:this.id,pickPrimitive:this}),appearance:new jn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Wi({geometryInstances:new $e({geometry:new C_({origin:m,orientation:F,frustum:l,_drawNearPlane:i===0}),attributes:{color:En.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new jn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=e.length,i=0;i<o;++i)n[i].update(t),e[i].update(t)};tj.prototype.isDestroyed=function(){return!1};tj.prototype.destroy=function(){let t=this._planesPrimitives.length;for(let e=0;e<t;++e)this._outlinePrimitives[e]=this._outlinePrimitives[e]&&this._outlinePrimitives[e].destroy(),this._planesPrimitives[e]=this._planesPrimitives[e]&&this._planesPrimitives[e].destroy();return At(this)};var JR=tj;var tEo=b(W(),1);var Cgo=b(W(),1),I_=`in vec4 positionEC; void main() { @@ -10737,7 +10737,7 @@ void main() czm_writeLogDepth(); } -`;var Ngo=R(W(),1),N_=`in vec4 position; +`;var Ngo=b(W(),1),N_=`in vec4 position; out vec4 positionEC; @@ -10748,40 +10748,40 @@ void main() czm_vertexLogDepth(); } -`;function B_(t){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=f(t,0)}var y_=In.supportsTypedArrays()?new Float32Array(12):[],Zyt=new p,Vyt=new p,bat=new p,byt=new p,ej=new p;function KNe(t,e){let n=t.radii,i=e.camera,o,a,s;if(i.frustum instanceof wn)o=p.ZERO,a=i.rightWC,s=i.upWC;else{let h=i.positionWC,Z=p.multiplyComponents(t.oneOverRadii,h,Zyt),b=p.normalize(Z,Vyt),u=p.normalize(p.cross(p.UNIT_Z,Z,bat),bat),F=p.normalize(p.cross(b,u,byt),byt),U=p.magnitude(Z),G=Math.sqrt(U*U-1);o=p.multiplyByScalar(b,1/U,Zyt);let A=G/U;a=p.multiplyByScalar(u,A,Vyt),s=p.multiplyByScalar(F,A,bat)}let l=p.add(o,s,ej);p.subtract(l,a,l),p.multiplyComponents(n,l,l),p.pack(l,y_,0);let r=p.subtract(o,s,ej);p.subtract(r,a,r),p.multiplyComponents(n,r,r),p.pack(r,y_,3);let d=p.add(o,s,ej);p.add(d,a,d),p.multiplyComponents(n,d,d),p.pack(d,y_,6);let m=p.subtract(o,s,ej);return p.add(m,a,m),p.multiplyComponents(n,m,m),p.pack(m,y_,9),y_}B_.prototype.update=function(t){if(this._mode=t.mode,t.mode!==ut.SCENE3D)return;let e=t.context,n=t.mapProjection.ellipsoid.radii,i=new mt(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=t.useLogDepth;if(c(this._command)||(this._rs=he.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new Ee({renderState:this._rs,boundingVolume:new Ft(p.ZERO,i.maximumRadius),pass:Pt.OPAQUE,owner:this})),!c(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new Ve({sources:[N_]}),l=new Ve({sources:[I_]});o&&(l.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=xn.replaceCache({shaderProgram:this._sp,context:e,vertexShaderSource:s,fragmentShaderSource:l,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let a=KNe(i,t);if(c(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(a);else{let s=new _e({attributes:{position:new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:a})},indices:[0,1,2,2,1,3],primitiveType:le.TRIANGLES});this._va=Ki.fromGeometry({context:e,geometry:s,attributeLocations:{position:0},bufferUsage:ce.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};B_.prototype.execute=function(t,e){this._mode===ut.SCENE3D&&this._command.execute(t,e)};B_.prototype.isDestroyed=function(){return!1};B_.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var Q_=B_;var sEo=R(W(),1);function k_(){}var zNe=/\bgl_FragDepth\b/,jNe=/\bdiscard\b/;function qNe(t,e){let n=t.shaderCache.getDerivedShaderProgram(e,"depthOnly");if(!c(n)){let i=e._attributeLocations,o=e.fragmentShaderSource,a,s=!1,l=o.sources,r=l.length;for(a=0;a<r;++a)if(zNe.test(l[a])||jNe.test(l[a])){s=!0;break}let d=!1,m=o.defines;for(r=m.length,a=0;a<r;++a)if(m[a]==="LOG_DEPTH"){d=!0;break}let h;!s&&!d?(h=`void main() +`;function B_(t){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=f(t,0)}var y_=In.supportsTypedArrays()?new Float32Array(12):[],uyt=new p,Zyt=new p,Rat=new p,Ryt=new p,ej=new p;function KNe(t,e){let n=t.radii,i=e.camera,o,a,s;if(i.frustum instanceof wn)o=p.ZERO,a=i.rightWC,s=i.upWC;else{let h=i.positionWC,u=p.multiplyComponents(t.oneOverRadii,h,uyt),R=p.normalize(u,Zyt),V=p.normalize(p.cross(p.UNIT_Z,u,Rat),Rat),F=p.normalize(p.cross(R,V,Ryt),Ryt),U=p.magnitude(u),G=Math.sqrt(U*U-1);o=p.multiplyByScalar(R,1/U,uyt);let A=G/U;a=p.multiplyByScalar(V,A,Zyt),s=p.multiplyByScalar(F,A,Rat)}let l=p.add(o,s,ej);p.subtract(l,a,l),p.multiplyComponents(n,l,l),p.pack(l,y_,0);let r=p.subtract(o,s,ej);p.subtract(r,a,r),p.multiplyComponents(n,r,r),p.pack(r,y_,3);let d=p.add(o,s,ej);p.add(d,a,d),p.multiplyComponents(n,d,d),p.pack(d,y_,6);let m=p.subtract(o,s,ej);return p.add(m,a,m),p.multiplyComponents(n,m,m),p.pack(m,y_,9),y_}B_.prototype.update=function(t){if(this._mode=t.mode,t.mode!==Vt.SCENE3D)return;let e=t.context,n=t.mapProjection.ellipsoid.radii,i=new mt(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=t.useLogDepth;if(c(this._command)||(this._rs=he.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new Ee({renderState:this._rs,boundingVolume:new Ft(p.ZERO,i.maximumRadius),pass:Pt.OPAQUE,owner:this})),!c(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new Ze({sources:[N_]}),l=new Ze({sources:[I_]});o&&(l.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=xn.replaceCache({shaderProgram:this._sp,context:e,vertexShaderSource:s,fragmentShaderSource:l,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let a=KNe(i,t);if(c(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(a);else{let s=new _e({attributes:{position:new jt({componentDatatype:it.FLOAT,componentsPerAttribute:3,values:a})},indices:[0,1,2,2,1,3],primitiveType:le.TRIANGLES});this._va=Ki.fromGeometry({context:e,geometry:s,attributeLocations:{position:0},bufferUsage:ce.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};B_.prototype.execute=function(t,e){this._mode===Vt.SCENE3D&&this._command.execute(t,e)};B_.prototype.isDestroyed=function(){return!1};B_.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var Q_=B_;var sEo=b(W(),1);function k_(){}var zNe=/\bgl_FragDepth\b/,jNe=/\bdiscard\b/;function qNe(t,e){let n=t.shaderCache.getDerivedShaderProgram(e,"depthOnly");if(!c(n)){let i=e._attributeLocations,o=e.fragmentShaderSource,a,s=!1,l=o.sources,r=l.length;for(a=0;a<r;++a)if(zNe.test(l[a])||jNe.test(l[a])){s=!0;break}let d=!1,m=o.defines;for(r=m.length,a=0;a<r;++a)if(m[a]==="LOG_DEPTH"){d=!0;break}let h;!s&&!d?(h=`void main() { out_FragColor = vec4(1.0); } -`,o=new Ve({sources:[h]})):!s&&d&&(h=`void main() +`,o=new Ze({sources:[h]})):!s&&d&&(h=`void main() { out_FragColor = vec4(1.0); czm_writeLogDepth(); } -`,o=new Ve({defines:["LOG_DEPTH"],sources:[h]})),n=t.shaderCache.createDerivedShaderProgram(e,"depthOnly",{vertexShaderSource:e.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}function $Ne(t,e){let n=t._depthOnlyRenderStateCache,i=n[e.id];if(!c(i)){let o=he.getState(e);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i=he.fromCache(o),n[e.id]=i}return i}k_.createDepthOnlyDerivedCommand=function(t,e,n,i){c(i)||(i={});let o,a;return c(i.depthOnlyCommand)&&(o=i.depthOnlyCommand.shaderProgram,a=i.depthOnlyCommand.renderState),i.depthOnlyCommand=Ee.shallowClone(e,i.depthOnlyCommand),!c(o)||i.shaderProgramId!==e.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=qNe(n,e.shaderProgram),i.depthOnlyCommand.renderState=$Ne(t,e.renderState),i.shaderProgramId=e.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=a),i};var tye=/\s+czm_writeLogDepth\(/,eye=/\s+czm_vertexLogDepth\(/;function nye(t,e){if(e.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return e;let i=t.shaderCache.getDerivedShaderProgram(e,"logDepth");if(!c(i)){let o=e._attributeLocations,a=e.vertexShaderSource.clone(),s=e.fragmentShaderSource.clone();a.defines=c(a.defines)?a.defines.slice(0):[],a.defines.push("LOG_DEPTH"),s.defines=c(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let l,r,d=!1,m=a.sources,h=m.length;for(l=0;l<h;++l)if(eye.test(m[l])){d=!0;break}if(!d){for(l=0;l<h;++l)m[l]=Ve.replaceMain(m[l],"czm_log_depth_main");r=` +`,o=new Ze({defines:["LOG_DEPTH"],sources:[h]})),n=t.shaderCache.createDerivedShaderProgram(e,"depthOnly",{vertexShaderSource:e.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}function $Ne(t,e){let n=t._depthOnlyRenderStateCache,i=n[e.id];if(!c(i)){let o=he.getState(e);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i=he.fromCache(o),n[e.id]=i}return i}k_.createDepthOnlyDerivedCommand=function(t,e,n,i){c(i)||(i={});let o,a;return c(i.depthOnlyCommand)&&(o=i.depthOnlyCommand.shaderProgram,a=i.depthOnlyCommand.renderState),i.depthOnlyCommand=Ee.shallowClone(e,i.depthOnlyCommand),!c(o)||i.shaderProgramId!==e.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=qNe(n,e.shaderProgram),i.depthOnlyCommand.renderState=$Ne(t,e.renderState),i.shaderProgramId=e.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=a),i};var tye=/\s+czm_writeLogDepth\(/,eye=/\s+czm_vertexLogDepth\(/;function nye(t,e){if(e.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return e;let i=t.shaderCache.getDerivedShaderProgram(e,"logDepth");if(!c(i)){let o=e._attributeLocations,a=e.vertexShaderSource.clone(),s=e.fragmentShaderSource.clone();a.defines=c(a.defines)?a.defines.slice(0):[],a.defines.push("LOG_DEPTH"),s.defines=c(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let l,r,d=!1,m=a.sources,h=m.length;for(l=0;l<h;++l)if(eye.test(m[l])){d=!0;break}if(!d){for(l=0;l<h;++l)m[l]=Ze.replaceMain(m[l],"czm_log_depth_main");r=` void main() { czm_log_depth_main(); czm_vertexLogDepth(); } -`,m.push(r)}for(m=s.sources,h=m.length,d=!1,l=0;l<h;++l)tye.test(m[l])&&(d=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(d=!0);let Z="";if(!d){for(l=0;l<h;l++)m[l]=Ve.replaceMain(m[l],"czm_log_depth_main");Z+=` +`,m.push(r)}for(m=s.sources,h=m.length,d=!1,l=0;l<h;++l)tye.test(m[l])&&(d=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(d=!0);let u="";if(!d){for(l=0;l<h;l++)m[l]=Ze.replaceMain(m[l],"czm_log_depth_main");u+=` void main() { czm_log_depth_main(); czm_writeLogDepth(); } -`}m.push(Z),i=t.shaderCache.createDerivedShaderProgram(e,"logDepth",{vertexShaderSource:a,fragmentShaderSource:s,attributeLocations:o})}return i}k_.createLogDepthCommand=function(t,e,n){c(n)||(n={});let i;return c(n.command)&&(i=n.command.shaderProgram),n.command=Ee.shallowClone(t,n.command),!c(i)||n.shaderProgramId!==t.shaderProgram.id?(n.command.shaderProgram=nye(e,t.shaderProgram),n.shaderProgramId=t.shaderProgram.id):n.command.shaderProgram=i,n};function iye(t,e,n){let i=t.shaderCache.getDerivedShaderProgram(e,"pick");if(!c(i)){let o=e._attributeLocations,a=e.fragmentShaderSource,s=a.sources,l=s.length,d=s.some(Z=>Z.includes("out_FragData"))?"out_FragData_0":"out_FragColor",m=`void main () +`}m.push(u),i=t.shaderCache.createDerivedShaderProgram(e,"logDepth",{vertexShaderSource:a,fragmentShaderSource:s,attributeLocations:o})}return i}k_.createLogDepthCommand=function(t,e,n){c(n)||(n={});let i;return c(n.command)&&(i=n.command.shaderProgram),n.command=Ee.shallowClone(t,n.command),!c(i)||n.shaderProgramId!==t.shaderProgram.id?(n.command.shaderProgram=nye(e,t.shaderProgram),n.shaderProgramId=t.shaderProgram.id):n.command.shaderProgram=i,n};function iye(t,e,n){let i=t.shaderCache.getDerivedShaderProgram(e,"pick");if(!c(i)){let o=e._attributeLocations,a=e.fragmentShaderSource,s=a.sources,l=s.length,d=s.some(u=>u.includes("out_FragData"))?"out_FragData_0":"out_FragColor",m=`void main () { czm_non_pick_main(); if (${d}.a == 0.0) { discard; } ${d} = ${n}; -} `,h=new Array(l+1);for(let Z=0;Z<l;++Z)h[Z]=Ve.replaceMain(s[Z],"czm_non_pick_main");h[l]=m,a=new Ve({sources:h,defines:a.defines}),i=t.shaderCache.createDerivedShaderProgram(e,"pick",{vertexShaderSource:e.vertexShaderSource,fragmentShaderSource:a,attributeLocations:o})}return i}function oye(t,e){let n=t.picking.pickRenderStateCache,i=n[e.id];if(!c(i)){let o=he.getState(e);o.blending.enabled=!1,o.depthMask=!0,i=he.fromCache(o),n[e.id]=i}return i}k_.createPickDerivedCommand=function(t,e,n,i){c(i)||(i={});let o,a;return c(i.pickCommand)&&(o=i.pickCommand.shaderProgram,a=i.pickCommand.renderState),i.pickCommand=Ee.shallowClone(e,i.pickCommand),!c(o)||i.shaderProgramId!==e.shaderProgram.id?(i.pickCommand.shaderProgram=iye(n,e.shaderProgram,e.pickId),i.pickCommand.renderState=oye(t,e.renderState),i.shaderProgramId=e.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=a),i};function aye(t,e){let n=t.shaderCache.getDerivedShaderProgram(e,"HDR");if(!c(n)){let i=e._attributeLocations,o=e.vertexShaderSource.clone(),a=e.fragmentShaderSource.clone();o.defines=c(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),a.defines=c(a.defines)?a.defines.slice(0):[],a.defines.push("HDR"),n=t.shaderCache.createDerivedShaderProgram(e,"HDR",{vertexShaderSource:o,fragmentShaderSource:a,attributeLocations:i})}return n}k_.createHdrCommand=function(t,e,n){c(n)||(n={});let i;return c(n.command)&&(i=n.command.shaderProgram),n.command=Ee.shallowClone(t,n.command),!c(i)||n.shaderProgramId!==t.shaderProgram.id?(n.command.shaderProgram=aye(e,t.shaderProgram),n.shaderProgramId=t.shaderProgram.id):n.command.shaderProgram=i,n};var VW=k_;var pEo=R(W(),1);function nj(t){this._scene=t,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let e=this;function n(i){let o=i.alpha;if(!c(o)){e._alpha=void 0,e._beta=void 0,e._gamma=void 0;return}e._alpha=k.toRadians(o),e._beta=k.toRadians(i.beta),e._gamma=k.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var sye=new wt,Ryt=new wt,lye=new ot;function rye(t,e,n,i){let o=t.direction,a=t.right,s=t.up,l=wt.fromAxisAngle(o,n,Ryt),r=wt.fromAxisAngle(a,i,sye),d=wt.multiply(r,l,r),m=wt.fromAxisAngle(s,e,Ryt);wt.multiply(m,d,d);let h=ot.fromQuaternion(d,lye);ot.multiplyByVector(h,a,a),ot.multiplyByVector(h,s,s),ot.multiplyByVector(h,o,o)}nj.prototype.update=function(){if(!c(this._alpha))return;c(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let t=this._lastAlpha-this._alpha,e=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;rye(this._scene.camera,-t,e,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};nj.prototype.isDestroyed=function(){return!1};nj.prototype.destroy=function(){return this._removeListener(),At(this)};var Y_=nj;var WEo=R(W(),1);function Wyt(){this.enabled=!0,this.renderable=!0,this.density=2e-4,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}var ij=[359.393,800.749,1275.6501,2151.1192,3141.7763,4777.5198,6281.2493,12364.307,15900.765,49889.0549,78026.8259,99260.7344,120036.3873,151011.0158,156091.1953,203849.3112,274866.9803,319916.3149,493552.0528,628733.5874],Lb=[2e-5,2e-4,1e-4,7e-5,5e-5,4e-5,3e-5,19e-6,1e-5,85e-7,62e-7,58e-7,53e-7,52e-7,51e-7,42e-7,4e-6,34e-7,26e-7,22e-7];for(let t=0;t<Lb.length;++t)Lb[t]*=1e6;var fyt=Lb[1],Rat=Lb[Lb.length-1];for(let t=0;t<Lb.length;++t)Lb[t]=(Lb[t]-Rat)/(fyt-Rat);var td=0;function dye(t){let e=ij,n=e.length;if(t<e[0])return td=0,td;if(t>e[n-1])return td=n-2,td;if(t>=e[td]){if(td+1<n&&t<e[td+1])return td;if(td+2<n&&t<e[td+2])return++td,td}else if(td-1>=0&&t>=e[td-1])return--td,td;let i;for(i=0;i<n-2&&!(t>=e[i]&&t<e[i+1]);++i);return td=i,td}var cye=new p;Wyt.prototype.update=function(t){if(!(t.fog.enabled=this.enabled))return;t.fog.renderable=this.renderable;let n=t.camera,i=n.positionCartographic;if(!c(i)||i.height>8e5||t.mode!==ut.SCENE3D){t.fog.enabled=!1,t.fog.density=0;return}let o=i.height,a=dye(o),s=k.clamp((o-ij[a])/(ij[a+1]-ij[a]),0,1),l=k.lerp(Lb[a],Lb[a+1],s),r=this.density*1e6,d=r/fyt*Rat;l=l*(r-d)*1e-6;let m=p.normalize(n.positionWC,cye),h=Math.abs(p.dot(n.directionWC,m));l*=1-h,t.fog.density=l,t.fog.sse=this.screenSpaceErrorFactor,t.fog.minimumBrightness=this.minimumBrightness};var x_=Wyt;var UEo=R(W(),1);function mye(t,e,n){this.context=t,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ut.SCENE3D,this.morphTime=ut.getMorphTime(ut.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=e,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0}var X_=mye;var YEo=R(W(),1);var ed={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},bS=ed.DERIVED_COMMANDS_MAXIMUM_LENGTH,Iyt=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function RS(){this._frontFaceAlphaByDistance=new ln(0,1,0,1),this._backFaceAlphaByDistance=new ln(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=Gt.clone(Gt.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(bS),this._derivedBlendCommandTypes=new Array(bS),this._derivedPickCommandTypes=new Array(bS),this._derivedCommandTypesToUpdate=new Array(bS),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(RS.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});RS.prototype.update=function(t){let e=t.globe;if(!c(e)||!e.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=Fyt(e.translucency.enabled,e.translucency.frontFaceAlpha,e.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=Fyt(e.translucency.enabled,e.translucency.backFaceAlpha,e.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=Uyt(e.translucency.enabled,this._frontFaceAlphaByDistance,e),this._backFaceTranslucent=Uyt(e.translucency.enabled,this._backFaceAlphaByDistance,e),this._requiresManualDepthTest=Zye(this,t,e),this._sunVisibleThroughGlobe=hye(this,t),this._environmentVisible=pye(this,t),this._useDepthPlane=uye(this,t),this._numberOfTextureUniforms=Vye(this),this._rectangle=Gt.clone(e.translucency.rectangle,this._rectangle),bye(this,t)};function Fyt(t,e,n,i){return t?c(n)?(ln.clone(n,i),i.nearValue*=e,i.farValue*=e,i):(i.nearValue=e,i.farValue=e,i):(i.nearValue=1,i.farValue=1,i)}function Uyt(t,e,n){return t&&(n.baseColor.alpha<1||e.nearValue<1||e.farValue<1)}function hye(t,e){let n=t._frontFaceTranslucent,i=t._backFaceTranslucent;return n&&(e.cameraUnderground||i)}function pye(t,e){return!e.cameraUnderground||t._frontFaceTranslucent}function uye(t,e){return!e.cameraUnderground&&!t._frontFaceTranslucent}function Zye(t,e,n){return t._frontFaceTranslucent&&!t._backFaceTranslucent&&!n.depthTestAgainstTerrain&&e.mode!==ut.SCENE2D&&e.context.depthTexture}function Vye(t){let e=0;return t._frontFaceTranslucent&&++e,t._requiresManualDepthTest&&++e,e}function bye(t,e){t._derivedCommandsLength=Wat(t,e,!1,!1,t._derivedCommandTypes),t._derivedBlendCommandsLength=Wat(t,e,!0,!1,t._derivedBlendCommandTypes),t._derivedPickCommandsLength=Wat(t,e,!1,!0,t._derivedPickCommandTypes);let n,i=0;for(n=0;n<t._derivedCommandsLength;++n)i|=1<<t._derivedCommandTypes[n];for(n=0;n<t._derivedBlendCommandsLength;++n)i|=1<<t._derivedBlendCommandTypes[n];for(n=0;n<t._derivedPickCommandsLength;++n)i|=1<<t._derivedPickCommandTypes[n];let o=0;for(n=0;n<bS;++n)(i&1<<n)>0&&(t._derivedCommandTypesToUpdate[o++]=n);t._derivedCommandsToUpdateLength=o;let a=i!==t._derivedCommandKey;t._derivedCommandKey=i,t._derivedCommandsDirty=a,!c(t._derivedCommandPacks)&&t._frontFaceTranslucent&&(t._derivedCommandPacks=yye())}function Wat(t,e,n,i,o){let a=0,s=t._frontFaceTranslucent,l=t._backFaceTranslucent;if(!s)return a;let r=e.cameraUnderground,d=t._requiresManualDepthTest,m=i?ed.PICK_FRONT_FACE:d?ed.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:ed.TRANSLUCENT_FRONT_FACE,h=i?ed.PICK_BACK_FACE:d?ed.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:ed.TRANSLUCENT_BACK_FACE;return e.mode===ut.SCENE2D?(o[a++]=ed.DEPTH_ONLY_FRONT_FACE,o[a++]=m,a):(l?(n||(o[a++]=ed.DEPTH_ONLY_FRONT_AND_BACK_FACE),r?(o[a++]=m,o[a++]=h):(o[a++]=h,o[a++]=m)):r?(n||(o[a++]=ed.DEPTH_ONLY_BACK_FACE),o[a++]=ed.OPAQUE_FRONT_FACE,o[a++]=h):(n||(o[a++]=ed.DEPTH_ONLY_FRONT_FACE),o[a++]=ed.OPAQUE_BACK_FACE,o[a++]=m),a)}function Cu(t,e){let n=t.indexOf(e);n>-1&&t.splice(n,1)}function Gyt(t,e){return t.indexOf(e)>-1}function Rye(t,e){Cu(t.defines,"TRANSLUCENT"),Cu(e.defines,"TRANSLUCENT")}function Wye(t,e){Cu(t.defines,"GROUND_ATMOSPHERE"),Cu(e.defines,"GROUND_ATMOSPHERE"),Cu(t.defines,"FOG"),Cu(e.defines,"FOG"),Cu(t.defines,"TRANSLUCENT"),Cu(e.defines,"TRANSLUCENT")}function fat(t,e){if(Gyt(e.defines,"TILE_LIMIT_RECTANGLE")||Gyt(e.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +} `,h=new Array(l+1);for(let u=0;u<l;++u)h[u]=Ze.replaceMain(s[u],"czm_non_pick_main");h[l]=m,a=new Ze({sources:h,defines:a.defines}),i=t.shaderCache.createDerivedShaderProgram(e,"pick",{vertexShaderSource:e.vertexShaderSource,fragmentShaderSource:a,attributeLocations:o})}return i}function oye(t,e){let n=t.picking.pickRenderStateCache,i=n[e.id];if(!c(i)){let o=he.getState(e);o.blending.enabled=!1,o.depthMask=!0,i=he.fromCache(o),n[e.id]=i}return i}k_.createPickDerivedCommand=function(t,e,n,i){c(i)||(i={});let o,a;return c(i.pickCommand)&&(o=i.pickCommand.shaderProgram,a=i.pickCommand.renderState),i.pickCommand=Ee.shallowClone(e,i.pickCommand),!c(o)||i.shaderProgramId!==e.shaderProgram.id?(i.pickCommand.shaderProgram=iye(n,e.shaderProgram,e.pickId),i.pickCommand.renderState=oye(t,e.renderState),i.shaderProgramId=e.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=a),i};function aye(t,e){let n=t.shaderCache.getDerivedShaderProgram(e,"HDR");if(!c(n)){let i=e._attributeLocations,o=e.vertexShaderSource.clone(),a=e.fragmentShaderSource.clone();o.defines=c(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),a.defines=c(a.defines)?a.defines.slice(0):[],a.defines.push("HDR"),n=t.shaderCache.createDerivedShaderProgram(e,"HDR",{vertexShaderSource:o,fragmentShaderSource:a,attributeLocations:i})}return n}k_.createHdrCommand=function(t,e,n){c(n)||(n={});let i;return c(n.command)&&(i=n.command.shaderProgram),n.command=Ee.shallowClone(t,n.command),!c(i)||n.shaderProgramId!==t.shaderProgram.id?(n.command.shaderProgram=aye(e,t.shaderProgram),n.shaderProgramId=t.shaderProgram.id):n.command.shaderProgram=i,n};var ZW=k_;var pEo=b(W(),1);function nj(t){this._scene=t,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let e=this;function n(i){let o=i.alpha;if(!c(o)){e._alpha=void 0,e._beta=void 0,e._gamma=void 0;return}e._alpha=k.toRadians(o),e._beta=k.toRadians(i.beta),e._gamma=k.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var sye=new wt,byt=new wt,lye=new ot;function rye(t,e,n,i){let o=t.direction,a=t.right,s=t.up,l=wt.fromAxisAngle(o,n,byt),r=wt.fromAxisAngle(a,i,sye),d=wt.multiply(r,l,r),m=wt.fromAxisAngle(s,e,byt);wt.multiply(m,d,d);let h=ot.fromQuaternion(d,lye);ot.multiplyByVector(h,a,a),ot.multiplyByVector(h,s,s),ot.multiplyByVector(h,o,o)}nj.prototype.update=function(){if(!c(this._alpha))return;c(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let t=this._lastAlpha-this._alpha,e=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;rye(this._scene.camera,-t,e,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};nj.prototype.isDestroyed=function(){return!1};nj.prototype.destroy=function(){return this._removeListener(),At(this)};var Y_=nj;var WEo=b(W(),1);function Wyt(){this.enabled=!0,this.renderable=!0,this.density=2e-4,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}var ij=[359.393,800.749,1275.6501,2151.1192,3141.7763,4777.5198,6281.2493,12364.307,15900.765,49889.0549,78026.8259,99260.7344,120036.3873,151011.0158,156091.1953,203849.3112,274866.9803,319916.3149,493552.0528,628733.5874],LR=[2e-5,2e-4,1e-4,7e-5,5e-5,4e-5,3e-5,19e-6,1e-5,85e-7,62e-7,58e-7,53e-7,52e-7,51e-7,42e-7,4e-6,34e-7,26e-7,22e-7];for(let t=0;t<LR.length;++t)LR[t]*=1e6;var fyt=LR[1],bat=LR[LR.length-1];for(let t=0;t<LR.length;++t)LR[t]=(LR[t]-bat)/(fyt-bat);var td=0;function dye(t){let e=ij,n=e.length;if(t<e[0])return td=0,td;if(t>e[n-1])return td=n-2,td;if(t>=e[td]){if(td+1<n&&t<e[td+1])return td;if(td+2<n&&t<e[td+2])return++td,td}else if(td-1>=0&&t>=e[td-1])return--td,td;let i;for(i=0;i<n-2&&!(t>=e[i]&&t<e[i+1]);++i);return td=i,td}var cye=new p;Wyt.prototype.update=function(t){if(!(t.fog.enabled=this.enabled))return;t.fog.renderable=this.renderable;let n=t.camera,i=n.positionCartographic;if(!c(i)||i.height>8e5||t.mode!==Vt.SCENE3D){t.fog.enabled=!1,t.fog.density=0;return}let o=i.height,a=dye(o),s=k.clamp((o-ij[a])/(ij[a+1]-ij[a]),0,1),l=k.lerp(LR[a],LR[a+1],s),r=this.density*1e6,d=r/fyt*bat;l=l*(r-d)*1e-6;let m=p.normalize(n.positionWC,cye),h=Math.abs(p.dot(n.directionWC,m));l*=1-h,t.fog.density=l,t.fog.sse=this.screenSpaceErrorFactor,t.fog.minimumBrightness=this.minimumBrightness};var x_=Wyt;var UEo=b(W(),1);function mye(t,e,n){this.context=t,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=Vt.SCENE3D,this.morphTime=Vt.getMorphTime(Vt.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=e,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0}var X_=mye;var YEo=b(W(),1);var ed={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},RT=ed.DERIVED_COMMANDS_MAXIMUM_LENGTH,Iyt=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function bT(){this._frontFaceAlphaByDistance=new ln(0,1,0,1),this._backFaceAlphaByDistance=new ln(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=Gt.clone(Gt.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(RT),this._derivedBlendCommandTypes=new Array(RT),this._derivedPickCommandTypes=new Array(RT),this._derivedCommandTypesToUpdate=new Array(RT),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(bT.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});bT.prototype.update=function(t){let e=t.globe;if(!c(e)||!e.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=Fyt(e.translucency.enabled,e.translucency.frontFaceAlpha,e.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=Fyt(e.translucency.enabled,e.translucency.backFaceAlpha,e.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=Uyt(e.translucency.enabled,this._frontFaceAlphaByDistance,e),this._backFaceTranslucent=Uyt(e.translucency.enabled,this._backFaceAlphaByDistance,e),this._requiresManualDepthTest=uye(this,t,e),this._sunVisibleThroughGlobe=hye(this,t),this._environmentVisible=pye(this,t),this._useDepthPlane=Vye(this,t),this._numberOfTextureUniforms=Zye(this),this._rectangle=Gt.clone(e.translucency.rectangle,this._rectangle),Rye(this,t)};function Fyt(t,e,n,i){return t?c(n)?(ln.clone(n,i),i.nearValue*=e,i.farValue*=e,i):(i.nearValue=e,i.farValue=e,i):(i.nearValue=1,i.farValue=1,i)}function Uyt(t,e,n){return t&&(n.baseColor.alpha<1||e.nearValue<1||e.farValue<1)}function hye(t,e){let n=t._frontFaceTranslucent,i=t._backFaceTranslucent;return n&&(e.cameraUnderground||i)}function pye(t,e){return!e.cameraUnderground||t._frontFaceTranslucent}function Vye(t,e){return!e.cameraUnderground&&!t._frontFaceTranslucent}function uye(t,e,n){return t._frontFaceTranslucent&&!t._backFaceTranslucent&&!n.depthTestAgainstTerrain&&e.mode!==Vt.SCENE2D&&e.context.depthTexture}function Zye(t){let e=0;return t._frontFaceTranslucent&&++e,t._requiresManualDepthTest&&++e,e}function Rye(t,e){t._derivedCommandsLength=Wat(t,e,!1,!1,t._derivedCommandTypes),t._derivedBlendCommandsLength=Wat(t,e,!0,!1,t._derivedBlendCommandTypes),t._derivedPickCommandsLength=Wat(t,e,!1,!0,t._derivedPickCommandTypes);let n,i=0;for(n=0;n<t._derivedCommandsLength;++n)i|=1<<t._derivedCommandTypes[n];for(n=0;n<t._derivedBlendCommandsLength;++n)i|=1<<t._derivedBlendCommandTypes[n];for(n=0;n<t._derivedPickCommandsLength;++n)i|=1<<t._derivedPickCommandTypes[n];let o=0;for(n=0;n<RT;++n)(i&1<<n)>0&&(t._derivedCommandTypesToUpdate[o++]=n);t._derivedCommandsToUpdateLength=o;let a=i!==t._derivedCommandKey;t._derivedCommandKey=i,t._derivedCommandsDirty=a,!c(t._derivedCommandPacks)&&t._frontFaceTranslucent&&(t._derivedCommandPacks=yye())}function Wat(t,e,n,i,o){let a=0,s=t._frontFaceTranslucent,l=t._backFaceTranslucent;if(!s)return a;let r=e.cameraUnderground,d=t._requiresManualDepthTest,m=i?ed.PICK_FRONT_FACE:d?ed.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:ed.TRANSLUCENT_FRONT_FACE,h=i?ed.PICK_BACK_FACE:d?ed.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:ed.TRANSLUCENT_BACK_FACE;return e.mode===Vt.SCENE2D?(o[a++]=ed.DEPTH_ONLY_FRONT_FACE,o[a++]=m,a):(l?(n||(o[a++]=ed.DEPTH_ONLY_FRONT_AND_BACK_FACE),r?(o[a++]=m,o[a++]=h):(o[a++]=h,o[a++]=m)):r?(n||(o[a++]=ed.DEPTH_ONLY_BACK_FACE),o[a++]=ed.OPAQUE_FRONT_FACE,o[a++]=h):(n||(o[a++]=ed.DEPTH_ONLY_FRONT_FACE),o[a++]=ed.OPAQUE_BACK_FACE,o[a++]=m),a)}function CV(t,e){let n=t.indexOf(e);n>-1&&t.splice(n,1)}function Gyt(t,e){return t.indexOf(e)>-1}function bye(t,e){CV(t.defines,"TRANSLUCENT"),CV(e.defines,"TRANSLUCENT")}function Wye(t,e){CV(t.defines,"GROUND_ATMOSPHERE"),CV(e.defines,"GROUND_ATMOSPHERE"),CV(t.defines,"FOG"),CV(e.defines,"FOG"),CV(t.defines,"TRANSLUCENT"),CV(e.defines,"TRANSLUCENT")}function fat(t,e){if(Gyt(e.defines,"TILE_LIMIT_RECTANGLE")||Gyt(e.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() { out_FragColor = vec4(1.0); } -`;e.sources=[n]}function Fat(t,e){let n=e.sources,i=n.length;for(let a=0;a<i;++a)n[a]=Ve.replaceMain(n[a],"czm_globe_translucency_main");n.push(` +`;e.sources=[n]}function Fat(t,e){let n=e.sources,i=n.length;for(let a=0;a<i;++a)n[a]=Ze.replaceMain(n[a],"czm_globe_translucency_main");n.push(` uniform sampler2D u_classificationTexture; void main() @@ -10808,7 +10808,7 @@ void main() } out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); } -`)}function Nyt(t,e){Fat(t,e),Cu(t.defines,"GROUND_ATMOSPHERE"),Cu(e.defines,"GROUND_ATMOSPHERE"),Cu(t.defines,"FOG"),Cu(e.defines,"FOG")}function fye(t,e){Fat(t,e),t.defines.push("GENERATE_POSITION"),e.defines.push("MANUAL_DEPTH_TEST")}function Fye(t,e){Nyt(t,e),t.defines.push("GENERATE_POSITION"),e.defines.push("MANUAL_DEPTH_TEST")}function Ayt(t,e){let n=`uniform sampler2D u_classificationTexture; +`)}function Nyt(t,e){Fat(t,e),CV(t.defines,"GROUND_ATMOSPHERE"),CV(e.defines,"GROUND_ATMOSPHERE"),CV(t.defines,"FOG"),CV(e.defines,"FOG")}function fye(t,e){Fat(t,e),t.defines.push("GENERATE_POSITION"),e.defines.push("MANUAL_DEPTH_TEST")}function Fye(t,e){Nyt(t,e),t.defines.push("GENERATE_POSITION"),e.defines.push("MANUAL_DEPTH_TEST")}function Ayt(t,e){let n=`uniform sampler2D u_classificationTexture; void main() { vec2 st = gl_FragCoord.xy / czm_viewport.zw; @@ -10819,7 +10819,7 @@ void main() } out_FragColor = pickColor; } -`;e.sources=[n]}function Uye(t,e,n,i,o,a){if(!c(o))return e;if(!i&&c(n))return n;let s=t.shaderCache.getDerivedShaderProgram(e,a);if(!c(s)){let l=e._attributeLocations,r=e.vertexShaderSource.clone(),d=e.fragmentShaderSource.clone();r.defines=c(r.defines)?r.defines.slice(0):[],d.defines=c(d.defines)?d.defines.slice(0):[],o(r,d),s=t.shaderCache.createDerivedShaderProgram(e,a,{vertexShaderSource:r,fragmentShaderSource:d,attributeLocations:l})}return s}function Gye(t){t.cull.face=so.BACK,t.cull.enabled=!0}function Aye(t){t.cull.face=so.FRONT,t.cull.enabled=!0}function Tye(t){t.cull.face=so.BACK,t.cull.enabled=!0,t.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Sye(t){t.cull.face=so.FRONT,t.cull.enabled=!0,t.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function gye(t){t.cull.enabled=!1,t.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Tyt(t){t.cull.face=so.BACK,t.cull.enabled=!0,t.depthMask=!1,t.blending=Pn.ALPHA_BLEND}function Syt(t){t.cull.face=so.FRONT,t.cull.enabled=!0,t.depthMask=!1,t.blending=Pn.ALPHA_BLEND}function Eye(t){t.cull.face=so.BACK,t.cull.enabled=!0,t.blending.enabled=!1}function Cye(t){t.cull.face=so.FRONT,t.cull.enabled=!0,t.blending.enabled=!1}function Iye(t,e,n,i,o){if(!c(i))return t;if(!n&&c(e))return e;let a=o[t.id];if(!c(a)){let s=he.getState(t);i(s),a=he.fromCache(s),o[t.id]=a}return a}function L1(t){return{u_classificationTexture:function(){return t._globeTranslucencyFramebuffer.classificationTexture}}}function Nye(t,e,n,i,o){return c(o)?!i&&c(n)?n:ze(e,o(t),!1):e}function rV(t){this.pass=t.pass,this.pickOnly=t.pickOnly,this.getShaderProgramFunction=t.getShaderProgramFunction,this.getRenderStateFunction=t.getRenderStateFunction,this.getUniformMapFunction=t.getUniformMapFunction,this.renderStateCache={}}function yye(){return[new rV({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:Rye,getRenderStateFunction:Gye,getUniformMapFunction:void 0}),new rV({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:Wye,getRenderStateFunction:Aye,getUniformMapFunction:void 0}),new rV({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:fat,getRenderStateFunction:Tye,getUniformMapFunction:void 0}),new rV({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:fat,getRenderStateFunction:Sye,getUniformMapFunction:void 0}),new rV({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:fat,getRenderStateFunction:gye,getUniformMapFunction:void 0}),new rV({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Fat,getRenderStateFunction:Tyt,getUniformMapFunction:L1}),new rV({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Nyt,getRenderStateFunction:Syt,getUniformMapFunction:L1}),new rV({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:fye,getRenderStateFunction:Tyt,getUniformMapFunction:L1}),new rV({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Fye,getRenderStateFunction:Syt,getUniformMapFunction:L1}),new rV({pass:Pt.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Ayt,getRenderStateFunction:Eye,getUniformMapFunction:L1}),new rV({pass:Pt.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Ayt,getRenderStateFunction:Cye,getUniformMapFunction:L1})]}var gyt=new Array(bS),Eyt=new Array(bS);RS.prototype.updateDerivedCommands=function(t,e){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)Eyt[o]=this._derivedCommandPacks[n[o]],gyt[o]=Iyt[n[o]];Bye(this,t,i,n,gyt,Eyt,e)}};function Bye(t,e,n,i,o,a,s){let l=e.derivedCommands.globeTranslucency,r=t._derivedCommandsDirty;if(e.dirty||!c(l)||r){e.dirty=!1,c(l)||(l={},e.derivedCommands.globeTranslucency=l);let d=s.frameNumber,m=f(l.uniformMapDirtyFrame,0),h=f(l.shaderProgramDirtyFrame,0),Z=f(l.renderStateDirtyFrame,0),b=l.uniformMap!==e.uniformMap,u=l.shaderProgramId!==e.shaderProgram.id,F=l.renderStateId!==e.renderState.id;b&&(l.uniformMapDirtyFrame=d),u&&(l.shaderProgramDirtyFrame=d),F&&(l.renderStateDirtyFrame=d),l.uniformMap=e.uniformMap,l.shaderProgramId=e.shaderProgram.id,l.renderStateId=e.renderState.id;for(let U=0;U<n;++U){let G=a[U],A=i[U],T=o[U],g=l[T],C,y,Y;c(g)?(C=g.uniformMap,y=g.shaderProgram,Y=g.renderState):(C=void 0,y=void 0,Y=void 0),g=Ee.shallowClone(e,g),l[T]=g;let Q=f(g.derivedCommands.uniformMapDirtyFrame,0),J=f(g.derivedCommands.shaderProgramDirtyFrame,0),M=f(g.derivedCommands.renderStateDirtyFrame,0),V=b||Q<m,E=u||J<h,I=F||M<Z;V&&(g.derivedCommands.uniformMapDirtyFrame=d),E&&(g.derivedCommands.shaderProgramDirtyFrame=d),I&&(g.derivedCommands.renderStateDirtyFrame=d),g.derivedCommands.type=A,g.pass=G.pass,g.pickOnly=G.pickOnly,g.uniformMap=Nye(t,e.uniformMap,C,V,G.getUniformMapFunction),g.shaderProgram=Uye(s.context,e.shaderProgram,y,E,G.getShaderProgramFunction,T),g.renderState=Iye(e.renderState,Y,I,G.getRenderStateFunction,G.renderStateCache)}}}RS.prototype.pushDerivedCommands=function(t,e,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&e)return;let o=this._derivedCommandTypes,a=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,a=this._derivedPickCommandsLength):e&&(o=this._derivedBlendCommandTypes,a=this._derivedBlendCommandsLength),a===0){n.commandList.push(t);return}let s=t.derivedCommands.globeTranslucency;for(let l=0;l<a;++l){let r=Iyt[o[l]];n.commandList.push(s[r])}};function yyt(t,e,n,i,o,a,s){for(let l=0;l<e;++l){let r=t[l],d=r.derivedCommands.type;(!c(s)||s.indexOf(d)>-1)&&n(r,i,o,a)}}function Cyt(t,e,n,i,o,a){for(let s=0;s<e;++s)n(t[s],i,o,a)}var Qye=[ed.OPAQUE_FRONT_FACE,ed.OPAQUE_BACK_FACE],kye=[ed.DEPTH_ONLY_FRONT_FACE,ed.DEPTH_ONLY_BACK_FACE,ed.DEPTH_ONLY_FRONT_AND_BACK_FACE];RS.prototype.executeGlobeCommands=function(t,e,n,i,o){let a=i.context,s=t.commands[Pt.GLOBE],l=t.indices[Pt.GLOBE];l!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(a,o),yyt(s,l,e,i,a,o,Qye))};RS.prototype.executeGlobeClassificationCommands=function(t,e,n,i,o){let a=i.context,s=t.commands[Pt.GLOBE],l=t.indices[Pt.GLOBE],r=t.commands[Pt.TERRAIN_CLASSIFICATION],d=t.indices[Pt.TERRAIN_CLASSIFICATION];if(l===0||d===0)return;let m=this._frontFaceTranslucent,h=this._backFaceTranslucent;if((!m||!h)&&Cyt(r,d,e,i,a,o),!m&&!h)return;this._globeTranslucencyFramebuffer=n;let Z=a.uniformState.globeDepthTexture,b=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,yyt(s,l,e,i,a,o,kye),a.depthTexture){let u=n.packDepth(a,o);a.uniformState.globeDepthTexture=u}Cyt(r,d,e,i,a,o),a.uniformState.globeDepthTexture=Z,o.framebuffer=b};var J_=RS;var iCo=R(W(),1);var XEo=R(W(),1),nh=`uniform sampler2D colorTexture; +`;e.sources=[n]}function Uye(t,e,n,i,o,a){if(!c(o))return e;if(!i&&c(n))return n;let s=t.shaderCache.getDerivedShaderProgram(e,a);if(!c(s)){let l=e._attributeLocations,r=e.vertexShaderSource.clone(),d=e.fragmentShaderSource.clone();r.defines=c(r.defines)?r.defines.slice(0):[],d.defines=c(d.defines)?d.defines.slice(0):[],o(r,d),s=t.shaderCache.createDerivedShaderProgram(e,a,{vertexShaderSource:r,fragmentShaderSource:d,attributeLocations:l})}return s}function Gye(t){t.cull.face=so.BACK,t.cull.enabled=!0}function Aye(t){t.cull.face=so.FRONT,t.cull.enabled=!0}function Sye(t){t.cull.face=so.BACK,t.cull.enabled=!0,t.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Tye(t){t.cull.face=so.FRONT,t.cull.enabled=!0,t.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function gye(t){t.cull.enabled=!1,t.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Syt(t){t.cull.face=so.BACK,t.cull.enabled=!0,t.depthMask=!1,t.blending=Pn.ALPHA_BLEND}function Tyt(t){t.cull.face=so.FRONT,t.cull.enabled=!0,t.depthMask=!1,t.blending=Pn.ALPHA_BLEND}function Eye(t){t.cull.face=so.BACK,t.cull.enabled=!0,t.blending.enabled=!1}function Cye(t){t.cull.face=so.FRONT,t.cull.enabled=!0,t.blending.enabled=!1}function Iye(t,e,n,i,o){if(!c(i))return t;if(!n&&c(e))return e;let a=o[t.id];if(!c(a)){let s=he.getState(t);i(s),a=he.fromCache(s),o[t.id]=a}return a}function L1(t){return{u_classificationTexture:function(){return t._globeTranslucencyFramebuffer.classificationTexture}}}function Nye(t,e,n,i,o){return c(o)?!i&&c(n)?n:ze(e,o(t),!1):e}function rZ(t){this.pass=t.pass,this.pickOnly=t.pickOnly,this.getShaderProgramFunction=t.getShaderProgramFunction,this.getRenderStateFunction=t.getRenderStateFunction,this.getUniformMapFunction=t.getUniformMapFunction,this.renderStateCache={}}function yye(){return[new rZ({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:bye,getRenderStateFunction:Gye,getUniformMapFunction:void 0}),new rZ({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:Wye,getRenderStateFunction:Aye,getUniformMapFunction:void 0}),new rZ({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:fat,getRenderStateFunction:Sye,getUniformMapFunction:void 0}),new rZ({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:fat,getRenderStateFunction:Tye,getUniformMapFunction:void 0}),new rZ({pass:Pt.GLOBE,pickOnly:!1,getShaderProgramFunction:fat,getRenderStateFunction:gye,getUniformMapFunction:void 0}),new rZ({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Fat,getRenderStateFunction:Syt,getUniformMapFunction:L1}),new rZ({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Nyt,getRenderStateFunction:Tyt,getUniformMapFunction:L1}),new rZ({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:fye,getRenderStateFunction:Syt,getUniformMapFunction:L1}),new rZ({pass:Pt.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Fye,getRenderStateFunction:Tyt,getUniformMapFunction:L1}),new rZ({pass:Pt.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Ayt,getRenderStateFunction:Eye,getUniformMapFunction:L1}),new rZ({pass:Pt.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Ayt,getRenderStateFunction:Cye,getUniformMapFunction:L1})]}var gyt=new Array(RT),Eyt=new Array(RT);bT.prototype.updateDerivedCommands=function(t,e){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)Eyt[o]=this._derivedCommandPacks[n[o]],gyt[o]=Iyt[n[o]];Bye(this,t,i,n,gyt,Eyt,e)}};function Bye(t,e,n,i,o,a,s){let l=e.derivedCommands.globeTranslucency,r=t._derivedCommandsDirty;if(e.dirty||!c(l)||r){e.dirty=!1,c(l)||(l={},e.derivedCommands.globeTranslucency=l);let d=s.frameNumber,m=f(l.uniformMapDirtyFrame,0),h=f(l.shaderProgramDirtyFrame,0),u=f(l.renderStateDirtyFrame,0),R=l.uniformMap!==e.uniformMap,V=l.shaderProgramId!==e.shaderProgram.id,F=l.renderStateId!==e.renderState.id;R&&(l.uniformMapDirtyFrame=d),V&&(l.shaderProgramDirtyFrame=d),F&&(l.renderStateDirtyFrame=d),l.uniformMap=e.uniformMap,l.shaderProgramId=e.shaderProgram.id,l.renderStateId=e.renderState.id;for(let U=0;U<n;++U){let G=a[U],A=i[U],S=o[U],g=l[S],C,y,Y;c(g)?(C=g.uniformMap,y=g.shaderProgram,Y=g.renderState):(C=void 0,y=void 0,Y=void 0),g=Ee.shallowClone(e,g),l[S]=g;let Q=f(g.derivedCommands.uniformMapDirtyFrame,0),J=f(g.derivedCommands.shaderProgramDirtyFrame,0),M=f(g.derivedCommands.renderStateDirtyFrame,0),Z=R||Q<m,E=V||J<h,I=F||M<u;Z&&(g.derivedCommands.uniformMapDirtyFrame=d),E&&(g.derivedCommands.shaderProgramDirtyFrame=d),I&&(g.derivedCommands.renderStateDirtyFrame=d),g.derivedCommands.type=A,g.pass=G.pass,g.pickOnly=G.pickOnly,g.uniformMap=Nye(t,e.uniformMap,C,Z,G.getUniformMapFunction),g.shaderProgram=Uye(s.context,e.shaderProgram,y,E,G.getShaderProgramFunction,S),g.renderState=Iye(e.renderState,Y,I,G.getRenderStateFunction,G.renderStateCache)}}}bT.prototype.pushDerivedCommands=function(t,e,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&e)return;let o=this._derivedCommandTypes,a=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,a=this._derivedPickCommandsLength):e&&(o=this._derivedBlendCommandTypes,a=this._derivedBlendCommandsLength),a===0){n.commandList.push(t);return}let s=t.derivedCommands.globeTranslucency;for(let l=0;l<a;++l){let r=Iyt[o[l]];n.commandList.push(s[r])}};function yyt(t,e,n,i,o,a,s){for(let l=0;l<e;++l){let r=t[l],d=r.derivedCommands.type;(!c(s)||s.indexOf(d)>-1)&&n(r,i,o,a)}}function Cyt(t,e,n,i,o,a){for(let s=0;s<e;++s)n(t[s],i,o,a)}var Qye=[ed.OPAQUE_FRONT_FACE,ed.OPAQUE_BACK_FACE],kye=[ed.DEPTH_ONLY_FRONT_FACE,ed.DEPTH_ONLY_BACK_FACE,ed.DEPTH_ONLY_FRONT_AND_BACK_FACE];bT.prototype.executeGlobeCommands=function(t,e,n,i,o){let a=i.context,s=t.commands[Pt.GLOBE],l=t.indices[Pt.GLOBE];l!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(a,o),yyt(s,l,e,i,a,o,Qye))};bT.prototype.executeGlobeClassificationCommands=function(t,e,n,i,o){let a=i.context,s=t.commands[Pt.GLOBE],l=t.indices[Pt.GLOBE],r=t.commands[Pt.TERRAIN_CLASSIFICATION],d=t.indices[Pt.TERRAIN_CLASSIFICATION];if(l===0||d===0)return;let m=this._frontFaceTranslucent,h=this._backFaceTranslucent;if((!m||!h)&&Cyt(r,d,e,i,a,o),!m&&!h)return;this._globeTranslucencyFramebuffer=n;let u=a.uniformState.globeDepthTexture,R=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,yyt(s,l,e,i,a,o,kye),a.depthTexture){let V=n.packDepth(a,o);a.uniformState.globeDepthTexture=V}Cyt(r,d,e,i,a,o),a.uniformState.globeDepthTexture=u,o.framebuffer=R};var J_=bT;var iCo=b(W(),1);var XEo=b(W(),1),nh=`uniform sampler2D colorTexture; in vec2 v_textureCoordinates; @@ -10827,7 +10827,7 @@ void main() { out_FragColor = texture(colorTexture, v_textureCoordinates); } -`;function Mb(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new Ro({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new Ro({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new ao({color:new v(0,0,0,0),owner:this}),this._clearCommand=new ao({color:new v(0,0,0,0),depth:1,stencil:0});let t=this;this._uniformMap={colorTexture:function(){return t._fbo.getColorTexture()},depthTexture:function(){return t._depthStencilTexture},classifiedTexture:function(){return t._fboClassified.getColorTexture()}}}Object.defineProperties(Mb.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});Mb.isTranslucencySupported=function(t){return t.depthTexture&&t.fragmentDepth};var Yye={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Li.EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.NEVER,reference:0,mask:gn.CLASSIFICATION_MASK},blending:Pn.ALPHA_BLEND},xye={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Li.NOT_EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.NEVER,reference:0,mask:gn.CLASSIFICATION_MASK},blending:Pn.ALPHA_BLEND},Xye={depthMask:!0,depthTest:{enabled:!0},stencilTest:gn.setCesium3DTileBit(),stencilMask:gn.CESIUM_3D_TILE_MASK,blending:Pn.ALPHA_BLEND},Jye=`uniform sampler2D colorTexture; +`;function MR(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new bo({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new bo({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new ao({color:new v(0,0,0,0),owner:this}),this._clearCommand=new ao({color:new v(0,0,0,0),depth:1,stencil:0});let t=this;this._uniformMap={colorTexture:function(){return t._fbo.getColorTexture()},depthTexture:function(){return t._depthStencilTexture},classifiedTexture:function(){return t._fboClassified.getColorTexture()}}}Object.defineProperties(MR.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});MR.isTranslucencySupported=function(t){return t.depthTexture&&t.fragmentDepth};var Yye={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Li.EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.NEVER,reference:0,mask:gn.CLASSIFICATION_MASK},blending:Pn.ALPHA_BLEND},xye={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Li.NOT_EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.NEVER,reference:0,mask:gn.CLASSIFICATION_MASK},blending:Pn.ALPHA_BLEND},Xye={depthMask:!0,depthTest:{enabled:!0},stencilTest:gn.setCesium3DTileBit(),stencilMask:gn.CESIUM_3D_TILE_MASK,blending:Pn.ALPHA_BLEND},Jye=`uniform sampler2D colorTexture; uniform sampler2D depthTexture; uniform sampler2D classifiedTexture; in vec2 v_textureCoordinates; @@ -10870,13 +10870,13 @@ void main() out_FragColor = color; #endif } -`;Mb.prototype.update=function(t,e,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let a=this._numSamples!==e,s=t.drawingBufferWidth,l=t.drawingBufferHeight,r=!c(i)||i.width!==s||i.height!==l;if((r||o||a)&&(this._numSamples=e,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),c(this._previousFramebuffer)||(this._depthStencilTexture=new hn({context:t,width:s,height:l,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8}),e>1&&(this._depthStencilRenderbuffer=new bh({context:t,width:s,height:l,format:Sc.DEPTH24_STENCIL8,numSamples:e})))),!c(this._fbo.framebuffer)||r||o||a){this._fbo.destroy(),this._fboClassified.destroy();let d,m;c(this._previousFramebuffer)?(d=n.getDepthStencilTexture(),m=n.getDepthStencilRenderbuffer()):(d=this._depthStencilTexture,m=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(d),c(m)&&this._fbo.setDepthStencilRenderbuffer(m),this._fbo.update(t,s,l,e),c(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(d),this._fboClassified.update(t,s,l))}if(c(this._rsUnclassified)||(this._rsUnclassified=he.fromCache(Yye),this._rsClassified=he.fromCache(xye),this._rsDefault=he.fromCache(Xye)),!c(this._unclassifiedCommand)||o||a){c(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let d=c(this._previousFramebuffer)?Lye:Jye,m=new Ve({defines:["UNCLASSIFIED"],sources:[d]}),h=new Ve({sources:[d]});this._unclassifiedCommand=t.createViewportQuadCommand(m,{renderState:c(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=t.createViewportQuadCommand(h,{renderState:c(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),c(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),c(this._previousFramebuffer)||(this._translucentCommand=t.createViewportQuadCommand(nh,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};Mb.prototype.prepareTextures=function(t,e){this._fbo._numSamples>1&&this._fbo.prepareTextures(t,e)};Mb.prototype.clear=function(t,e){c(this._previousFramebuffer)?this._fbo.clear(t,this._clearColorCommand,e):(this._fbo.clear(t,this._clearCommand,e),this._fboClassified.clear(t,this._clearCommand,e))};Mb.prototype.executeClassified=function(t,e){if(!c(this._previousFramebuffer)){let n=e.framebuffer;this.prepareTextures(t,!0),e.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(t,e),e.framebuffer=n}this._classifiedCommand.execute(t,e)};Mb.prototype.executeUnclassified=function(t,e){this._unclassifiedCommand.execute(t,e)};Mb.prototype.isDestroyed=function(){return!1};Mb.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),c(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),At(this)};var M1=Mb;var rCo=R(W(),1);function oj(t){this._total=t,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(oj.prototype,{total:{get:function(){return this._total}}});function VU(t){let e=new Array(Vd.NUMBER_OF_JOB_TYPES);e[Vd.TEXTURE]=new oj(c(t)?t[Vd.TEXTURE]:10),e[Vd.PROGRAM]=new oj(c(t)?t[Vd.PROGRAM]:10),e[Vd.BUFFER]=new oj(c(t)?t[Vd.BUFFER]:30);let n=e.length,i,o=0;for(i=0;i<n;++i)o+=e[i].total;let a=new Array(n);for(i=0;i<n;++i)a[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=e,this._executedThisFrame=a}VU.getTimestamp=Oi;Object.defineProperties(VU.prototype,{totalBudget:{get:function(){return this._totalBudget}}});VU.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};VU.prototype.resetBudgets=function(){let t=this._budgets,e=t.length;for(let n=0;n<e;++n){let i=t[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};VU.prototype.execute=function(t,e){let n=this._budgets,i=n[e],o=this._executedThisFrame[e];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let a;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let r=n.length,d;for(d=0;d<r&&(a=n[d],!(a.usedThisFrame+a.stolenFromMeThisFrame<a.total&&!a.starvedLastFrame));++d);if(d===r&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=VU.getTimestamp();t.execute();let l=VU.getTimestamp()-s;return this._totalUsedThisFrame+=l,a?a.stolenFromMeThisFrame+=l:i.usedThisFrame+=l,this._executedThisFrame[e]=!0,!0};var L_=VU;var uCo=R(W(),1);function aj(t){t=f(t,f.EMPTY_OBJECT);let e=Ui(t.container);this._container=e;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Oi(),this._lastMsSampleTime=Oi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let a=document.createElement("div");a.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),a.appendChild(this._throttledText),n.appendChild(a)}Object.defineProperties(aj.prototype,{throttled:{get:function(){return this._throttled},set:function(t){this._throttled!==t&&(t?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=t)}}});aj.prototype.update=function(t){let e=Oi(),n=f(t,!0);this._fpsFrameCount++;let i=e-this._lastFpsSampleTime;if(i>1e3){let a="N/A";n&&(a=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${a} FPS`,this._lastFpsSampleTime=e,this._fpsFrameCount=0}this._msFrameCount++;let o=e-this._lastMsSampleTime;if(o>200){let a="N/A";n&&(a=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${a} MS`,this._lastMsSampleTime=e,this._msFrameCount=0}};aj.prototype.destroy=function(){return At(this)};var bW=aj;var dyo=R(W(),1);var FCo=R(W(),1);function WS(){this._framebuffer=new Ro,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(WS.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Mye(t,e,n){let i=n.width,o=n.height;t._framebuffer.update(e,i,o)}function _ye(t,e,n){if(!c(t._copyDepthCommand)){let i=`uniform highp sampler2D u_texture; +`;MR.prototype.update=function(t,e,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let a=this._numSamples!==e,s=t.drawingBufferWidth,l=t.drawingBufferHeight,r=!c(i)||i.width!==s||i.height!==l;if((r||o||a)&&(this._numSamples=e,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),c(this._previousFramebuffer)||(this._depthStencilTexture=new hn({context:t,width:s,height:l,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8}),e>1&&(this._depthStencilRenderbuffer=new Rh({context:t,width:s,height:l,format:Tc.DEPTH24_STENCIL8,numSamples:e})))),!c(this._fbo.framebuffer)||r||o||a){this._fbo.destroy(),this._fboClassified.destroy();let d,m;c(this._previousFramebuffer)?(d=n.getDepthStencilTexture(),m=n.getDepthStencilRenderbuffer()):(d=this._depthStencilTexture,m=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(d),c(m)&&this._fbo.setDepthStencilRenderbuffer(m),this._fbo.update(t,s,l,e),c(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(d),this._fboClassified.update(t,s,l))}if(c(this._rsUnclassified)||(this._rsUnclassified=he.fromCache(Yye),this._rsClassified=he.fromCache(xye),this._rsDefault=he.fromCache(Xye)),!c(this._unclassifiedCommand)||o||a){c(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let d=c(this._previousFramebuffer)?Lye:Jye,m=new Ze({defines:["UNCLASSIFIED"],sources:[d]}),h=new Ze({sources:[d]});this._unclassifiedCommand=t.createViewportQuadCommand(m,{renderState:c(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=t.createViewportQuadCommand(h,{renderState:c(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),c(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),c(this._previousFramebuffer)||(this._translucentCommand=t.createViewportQuadCommand(nh,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};MR.prototype.prepareTextures=function(t,e){this._fbo._numSamples>1&&this._fbo.prepareTextures(t,e)};MR.prototype.clear=function(t,e){c(this._previousFramebuffer)?this._fbo.clear(t,this._clearColorCommand,e):(this._fbo.clear(t,this._clearCommand,e),this._fboClassified.clear(t,this._clearCommand,e))};MR.prototype.executeClassified=function(t,e){if(!c(this._previousFramebuffer)){let n=e.framebuffer;this.prepareTextures(t,!0),e.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(t,e),e.framebuffer=n}this._classifiedCommand.execute(t,e)};MR.prototype.executeUnclassified=function(t,e){this._unclassifiedCommand.execute(t,e)};MR.prototype.isDestroyed=function(){return!1};MR.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),c(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),At(this)};var M1=MR;var rCo=b(W(),1);function oj(t){this._total=t,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(oj.prototype,{total:{get:function(){return this._total}}});function ZU(t){let e=new Array(Zd.NUMBER_OF_JOB_TYPES);e[Zd.TEXTURE]=new oj(c(t)?t[Zd.TEXTURE]:10),e[Zd.PROGRAM]=new oj(c(t)?t[Zd.PROGRAM]:10),e[Zd.BUFFER]=new oj(c(t)?t[Zd.BUFFER]:30);let n=e.length,i,o=0;for(i=0;i<n;++i)o+=e[i].total;let a=new Array(n);for(i=0;i<n;++i)a[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=e,this._executedThisFrame=a}ZU.getTimestamp=Oi;Object.defineProperties(ZU.prototype,{totalBudget:{get:function(){return this._totalBudget}}});ZU.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};ZU.prototype.resetBudgets=function(){let t=this._budgets,e=t.length;for(let n=0;n<e;++n){let i=t[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};ZU.prototype.execute=function(t,e){let n=this._budgets,i=n[e],o=this._executedThisFrame[e];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let a;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let r=n.length,d;for(d=0;d<r&&(a=n[d],!(a.usedThisFrame+a.stolenFromMeThisFrame<a.total&&!a.starvedLastFrame));++d);if(d===r&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=ZU.getTimestamp();t.execute();let l=ZU.getTimestamp()-s;return this._totalUsedThisFrame+=l,a?a.stolenFromMeThisFrame+=l:i.usedThisFrame+=l,this._executedThisFrame[e]=!0,!0};var L_=ZU;var VCo=b(W(),1);function aj(t){t=f(t,f.EMPTY_OBJECT);let e=Ui(t.container);this._container=e;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Oi(),this._lastMsSampleTime=Oi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let a=document.createElement("div");a.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),a.appendChild(this._throttledText),n.appendChild(a)}Object.defineProperties(aj.prototype,{throttled:{get:function(){return this._throttled},set:function(t){this._throttled!==t&&(t?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=t)}}});aj.prototype.update=function(t){let e=Oi(),n=f(t,!0);this._fpsFrameCount++;let i=e-this._lastFpsSampleTime;if(i>1e3){let a="N/A";n&&(a=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${a} FPS`,this._lastFpsSampleTime=e,this._fpsFrameCount=0}this._msFrameCount++;let o=e-this._lastMsSampleTime;if(o>200){let a="N/A";n&&(a=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${a} MS`,this._lastMsSampleTime=e,this._msFrameCount=0}};aj.prototype.destroy=function(){return At(this)};var RW=aj;var dyo=b(W(),1);var FCo=b(W(),1);function WT(){this._framebuffer=new bo,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(WT.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Mye(t,e,n){let i=n.width,o=n.height;t._framebuffer.update(e,i,o)}function _ye(t,e,n){if(!c(t._copyDepthCommand)){let i=`uniform highp sampler2D u_texture; in vec2 v_textureCoordinates; void main() { out_FragColor = czm_packDepth(texture(u_texture, v_textureCoordinates).r); } -`;t._copyDepthCommand=e.createViewportQuadCommand(i,{renderState:he.fromCache(),uniformMap:{u_texture:function(){return t._textureToCopy}},owner:t})}t._textureToCopy=n,t._copyDepthCommand.framebuffer=t.framebuffer}WS.prototype.update=function(t,e){Mye(this,t,e),_ye(this,t,e)};var Dye=new Rt,Oye=new Rt(1,1/255,1/65025,1/16581375);WS.prototype.getDepth=function(t,e,n){if(!c(this.framebuffer))return;let i=t.readPixels({x:e,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=Rt.unpack(i,0,Dye);return Rt.divideByScalar(o,255,o),Rt.dot(o,Oye)};WS.prototype.executeCopyDepth=function(t,e){this._copyDepthCommand.execute(t,e)};WS.prototype.isDestroyed=function(){return!1};WS.prototype.destroy=function(){return this._framebuffer.destroy(),c(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=c(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),At(this)};var M_=WS;var xNo=R(W(),1);var TCo=R(W(),1);function Hye(t,e){this.near=f(t,0),this.far=f(e,0);let n=Pt.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let a=0;a<n;++a)i[a]=[],o[a]=0;this.commands=i,this.indices=o}var __=Hye;var DCo=R(W(),1);var gCo=R(W(),1),bU=`uniform highp sampler2D u_depthTexture; +`;t._copyDepthCommand=e.createViewportQuadCommand(i,{renderState:he.fromCache(),uniformMap:{u_texture:function(){return t._textureToCopy}},owner:t})}t._textureToCopy=n,t._copyDepthCommand.framebuffer=t.framebuffer}WT.prototype.update=function(t,e){Mye(this,t,e),_ye(this,t,e)};var Dye=new bt,Oye=new bt(1,1/255,1/65025,1/16581375);WT.prototype.getDepth=function(t,e,n){if(!c(this.framebuffer))return;let i=t.readPixels({x:e,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=bt.unpack(i,0,Dye);return bt.divideByScalar(o,255,o),bt.dot(o,Oye)};WT.prototype.executeCopyDepth=function(t,e){this._copyDepthCommand.execute(t,e)};WT.prototype.isDestroyed=function(){return!1};WT.prototype.destroy=function(){return this._framebuffer.destroy(),c(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=c(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),At(this)};var M_=WT;var xNo=b(W(),1);var SCo=b(W(),1);function Hye(t,e){this.near=f(t,0),this.far=f(e,0);let n=Pt.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let a=0;a<n;++a)i[a]=[],o[a]=0;this.commands=i,this.indices=o}var __=Hye;var DCo=b(W(),1);var gCo=b(W(),1),RU=`uniform highp sampler2D u_depthTexture; in vec2 v_textureCoordinates; @@ -10884,7 +10884,7 @@ void main() { out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); } -`;function _b(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new Ro({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new Ro({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new Ro,this._tempCopyDepthFramebuffer=new Ro,this._updateDepthFramebuffer=new Ro({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Fe,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(_b.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(t){this._picking=t}}});function wye(t){t._pickColorFramebuffer.destroy(),t._outputFramebuffer.destroy(),t._copyDepthFramebuffer.destroy(),t._tempCopyDepthFramebuffer.destroy(),t._updateDepthFramebuffer.destroy()}function Byt(t,e,n,i,o){t._viewport.width=n,t._viewport.height=i;let a=!Fe.equals(t._viewport,o.viewport),s=a!==t._useScissorTest;t._useScissorTest=a,Fe.equals(t._scissorRectangle,o.viewport)||(t._scissorRectangle=Fe.clone(o.viewport,t._scissorRectangle),s=!0),(!c(t._rs)||!Fe.equals(t._viewport,t._rs.viewport)||s)&&(t._rs=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle}}),t._rsBlend=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},blending:Pn.ALPHA_BLEND}),t._rsUpdate=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Li.EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.NEVER,reference:gn.CESIUM_3D_TILE_MASK,mask:gn.CESIUM_3D_TILE_MASK}})),c(t._copyDepthCommand)||(t._copyDepthCommand=e.createViewportQuadCommand(bU,{uniformMap:{u_depthTexture:function(){return t.colorFramebufferManager.getDepthStencilTexture()}},owner:t})),t._copyDepthCommand.framebuffer=t._copyDepthFramebuffer.framebuffer,t._copyDepthCommand.renderState=t._rs,c(t._copyColorCommand)||(t._copyColorCommand=e.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return t.colorFramebufferManager.getColorTexture()}},owner:t})),t._copyColorCommand.renderState=t._rs,c(t._tempCopyDepthCommand)||(t._tempCopyDepthCommand=e.createViewportQuadCommand(bU,{uniformMap:{u_depthTexture:function(){return t._tempCopyDepthTexture}},owner:t})),t._tempCopyDepthCommand.framebuffer=t._tempCopyDepthFramebuffer.framebuffer,t._tempCopyDepthCommand.renderState=t._rs,c(t._updateDepthCommand)||(t._updateDepthCommand=e.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return t._tempCopyDepthFramebuffer.getColorTexture()}},owner:t})),t._updateDepthCommand.framebuffer=t._updateDepthFramebuffer.framebuffer,t._updateDepthCommand.renderState=t._rsUpdate,c(t._clearGlobeColorCommand)||(t._clearGlobeColorCommand=new ao({color:new v(0,0,0,0),stencil:0,owner:t})),t._clearGlobeColorCommand.framebuffer=t.framebuffer}_b.prototype.update=function(t,e,n,i,o,a){let s=n.width,l=n.height,r=o?t.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(t,s,l):this._outputFramebuffer.update(t,s,l,i,r),this._copyDepthFramebuffer.update(t,s,l),Byt(this,t,s,l,e),t.uniformState.globeDepthTexture=void 0,this._useHdr=o,this._clearGlobeDepth=a};_b.prototype.prepareColorTextures=function(t,e){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(t,e)};_b.prototype.executeCopyDepth=function(t,e){c(this._copyDepthCommand)&&(this.prepareColorTextures(t),this._copyDepthCommand.execute(t,e),t.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};_b.prototype.executeUpdateDepth=function(t,e,n,i){let o=c(i)?i:e.framebuffer.depthStencilTexture;if(n||o!==this.colorFramebufferManager.getDepthStencilTexture()){if(c(this._updateDepthCommand)){if(!c(this._updateDepthFramebuffer.framebuffer)||this._updateDepthFramebuffer.getDepthStencilTexture()!==o||this._updateDepthFramebuffer.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let a=this._copyDepthFramebuffer.getColorTexture().width,s=this._copyDepthFramebuffer.getColorTexture().height;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(t,a,s);let l=this._copyDepthFramebuffer.getColorTexture();this._updateDepthFramebuffer.setColorTexture(l,0),this._updateDepthFramebuffer.setDepthStencilTexture(o),this._updateDepthFramebuffer.update(t,a,s),Byt(this,t,a,s,e)}this._tempCopyDepthTexture=o,this._tempCopyDepthCommand.execute(t,e),this._updateDepthCommand.execute(t,e)}return}c(this._copyDepthCommand)&&this._copyDepthCommand.execute(t,e)};_b.prototype.executeCopyColor=function(t,e){c(this._copyColorCommand)&&this._copyColorCommand.execute(t,e)};_b.prototype.clear=function(t,e,n){let i=this._clearGlobeColorCommand;c(i)&&(v.clone(n,i.color),this.colorFramebufferManager.clear(t,i,e))};_b.prototype.isDestroyed=function(){return!1};_b.prototype.destroy=function(){return wye(this),c(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),c(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),c(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),c(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),At(this)};var D_=_b;var tIo=R(W(),1);function fS(){this._framebuffer=new Ro({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new Ro,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Fe,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(fS.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function Pye(t){t._framebuffer.destroy(),t._packedDepthFramebuffer.destroy()}function vye(t,e,n,i,o){let a=o?e.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;t._framebuffer.update(e,n,i,1,a),t._packedDepthFramebuffer.update(e,n,i)}function Kye(t,e,n,i,o){t._viewport.width=n,t._viewport.height=i;let a=!Fe.equals(t._viewport,o.viewport),s=a!==t._useScissorTest;t._useScissorTest=a,Fe.equals(t._scissorRectangle,o.viewport)||(t._scissorRectangle=Fe.clone(o.viewport,t._scissorRectangle),s=!0),(!c(t._renderState)||!Fe.equals(t._viewport,t._renderState.viewport)||s)&&(t._renderState=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle}})),c(t._packedDepthCommand)||(t._packedDepthCommand=e.createViewportQuadCommand(bU,{uniformMap:{u_depthTexture:function(){return t.depthStencilTexture}},owner:t})),c(t._clearCommand)||(t._clearCommand=new ao({color:new v(0,0,0,0),depth:1,stencil:0,owner:t})),t._packedDepthCommand.framebuffer=t._packedDepthFramebuffer.framebuffer,t._packedDepthCommand.renderState=t._renderState,t._clearCommand.framebuffer=t.classificationFramebuffer,t._clearCommand.renderState=t._renderState}fS.prototype.updateAndClear=function(t,e,n,i){let o=e.width,a=e.height;vye(this,n,o,a,t),Kye(this,n,o,a,i),this._useHdr=t};fS.prototype.clearClassification=function(t,e){this._clearCommand.execute(t,e)};fS.prototype.packDepth=function(t,e){return this._packedDepthCommand.execute(t,e),this.packedDepthTexture};fS.prototype.isDestroyed=function(){return!1};fS.prototype.destroy=function(){return Pye(this),At(this)};var O_=fS;var GIo=R(W(),1);var nIo=R(W(),1),_1=`#ifdef MRT +`;function _R(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new bo({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new bo({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new bo,this._tempCopyDepthFramebuffer=new bo,this._updateDepthFramebuffer=new bo({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Fe,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(_R.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(t){this._picking=t}}});function wye(t){t._pickColorFramebuffer.destroy(),t._outputFramebuffer.destroy(),t._copyDepthFramebuffer.destroy(),t._tempCopyDepthFramebuffer.destroy(),t._updateDepthFramebuffer.destroy()}function Byt(t,e,n,i,o){t._viewport.width=n,t._viewport.height=i;let a=!Fe.equals(t._viewport,o.viewport),s=a!==t._useScissorTest;t._useScissorTest=a,Fe.equals(t._scissorRectangle,o.viewport)||(t._scissorRectangle=Fe.clone(o.viewport,t._scissorRectangle),s=!0),(!c(t._rs)||!Fe.equals(t._viewport,t._rs.viewport)||s)&&(t._rs=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle}}),t._rsBlend=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},blending:Pn.ALPHA_BLEND}),t._rsUpdate=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Li.EQUAL,frontOperation:{fail:je.KEEP,zFail:je.KEEP,zPass:je.KEEP},backFunction:Li.NEVER,reference:gn.CESIUM_3D_TILE_MASK,mask:gn.CESIUM_3D_TILE_MASK}})),c(t._copyDepthCommand)||(t._copyDepthCommand=e.createViewportQuadCommand(RU,{uniformMap:{u_depthTexture:function(){return t.colorFramebufferManager.getDepthStencilTexture()}},owner:t})),t._copyDepthCommand.framebuffer=t._copyDepthFramebuffer.framebuffer,t._copyDepthCommand.renderState=t._rs,c(t._copyColorCommand)||(t._copyColorCommand=e.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return t.colorFramebufferManager.getColorTexture()}},owner:t})),t._copyColorCommand.renderState=t._rs,c(t._tempCopyDepthCommand)||(t._tempCopyDepthCommand=e.createViewportQuadCommand(RU,{uniformMap:{u_depthTexture:function(){return t._tempCopyDepthTexture}},owner:t})),t._tempCopyDepthCommand.framebuffer=t._tempCopyDepthFramebuffer.framebuffer,t._tempCopyDepthCommand.renderState=t._rs,c(t._updateDepthCommand)||(t._updateDepthCommand=e.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return t._tempCopyDepthFramebuffer.getColorTexture()}},owner:t})),t._updateDepthCommand.framebuffer=t._updateDepthFramebuffer.framebuffer,t._updateDepthCommand.renderState=t._rsUpdate,c(t._clearGlobeColorCommand)||(t._clearGlobeColorCommand=new ao({color:new v(0,0,0,0),stencil:0,owner:t})),t._clearGlobeColorCommand.framebuffer=t.framebuffer}_R.prototype.update=function(t,e,n,i,o,a){let s=n.width,l=n.height,r=o?t.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(t,s,l):this._outputFramebuffer.update(t,s,l,i,r),this._copyDepthFramebuffer.update(t,s,l),Byt(this,t,s,l,e),t.uniformState.globeDepthTexture=void 0,this._useHdr=o,this._clearGlobeDepth=a};_R.prototype.prepareColorTextures=function(t,e){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(t,e)};_R.prototype.executeCopyDepth=function(t,e){c(this._copyDepthCommand)&&(this.prepareColorTextures(t),this._copyDepthCommand.execute(t,e),t.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};_R.prototype.executeUpdateDepth=function(t,e,n,i){let o=c(i)?i:e.framebuffer.depthStencilTexture;if(n||o!==this.colorFramebufferManager.getDepthStencilTexture()){if(c(this._updateDepthCommand)){if(!c(this._updateDepthFramebuffer.framebuffer)||this._updateDepthFramebuffer.getDepthStencilTexture()!==o||this._updateDepthFramebuffer.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let a=this._copyDepthFramebuffer.getColorTexture().width,s=this._copyDepthFramebuffer.getColorTexture().height;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(t,a,s);let l=this._copyDepthFramebuffer.getColorTexture();this._updateDepthFramebuffer.setColorTexture(l,0),this._updateDepthFramebuffer.setDepthStencilTexture(o),this._updateDepthFramebuffer.update(t,a,s),Byt(this,t,a,s,e)}this._tempCopyDepthTexture=o,this._tempCopyDepthCommand.execute(t,e),this._updateDepthCommand.execute(t,e)}return}c(this._copyDepthCommand)&&this._copyDepthCommand.execute(t,e)};_R.prototype.executeCopyColor=function(t,e){c(this._copyColorCommand)&&this._copyColorCommand.execute(t,e)};_R.prototype.clear=function(t,e,n){let i=this._clearGlobeColorCommand;c(i)&&(v.clone(n,i.color),this.colorFramebufferManager.clear(t,i,e))};_R.prototype.isDestroyed=function(){return!1};_R.prototype.destroy=function(){return wye(this),c(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),c(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),c(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),c(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),At(this)};var D_=_R;var tIo=b(W(),1);function fT(){this._framebuffer=new bo({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new bo,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Fe,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(fT.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function Pye(t){t._framebuffer.destroy(),t._packedDepthFramebuffer.destroy()}function vye(t,e,n,i,o){let a=o?e.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;t._framebuffer.update(e,n,i,1,a),t._packedDepthFramebuffer.update(e,n,i)}function Kye(t,e,n,i,o){t._viewport.width=n,t._viewport.height=i;let a=!Fe.equals(t._viewport,o.viewport),s=a!==t._useScissorTest;t._useScissorTest=a,Fe.equals(t._scissorRectangle,o.viewport)||(t._scissorRectangle=Fe.clone(o.viewport,t._scissorRectangle),s=!0),(!c(t._renderState)||!Fe.equals(t._viewport,t._renderState.viewport)||s)&&(t._renderState=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle}})),c(t._packedDepthCommand)||(t._packedDepthCommand=e.createViewportQuadCommand(RU,{uniformMap:{u_depthTexture:function(){return t.depthStencilTexture}},owner:t})),c(t._clearCommand)||(t._clearCommand=new ao({color:new v(0,0,0,0),depth:1,stencil:0,owner:t})),t._packedDepthCommand.framebuffer=t._packedDepthFramebuffer.framebuffer,t._packedDepthCommand.renderState=t._renderState,t._clearCommand.framebuffer=t.classificationFramebuffer,t._clearCommand.renderState=t._renderState}fT.prototype.updateAndClear=function(t,e,n,i){let o=e.width,a=e.height;vye(this,n,o,a,t),Kye(this,n,o,a,i),this._useHdr=t};fT.prototype.clearClassification=function(t,e){this._clearCommand.execute(t,e)};fT.prototype.packDepth=function(t,e){return this._packedDepthCommand.execute(t,e),this.packedDepthTexture};fT.prototype.isDestroyed=function(){return!1};fT.prototype.destroy=function(){return Pye(this),At(this)};var O_=fT;var GIo=b(W(),1);var nIo=b(W(),1),_1=`#ifdef MRT layout (location = 0) out vec4 out_FragData_0; layout (location = 1) out vec4 out_FragData_1; #else @@ -10911,7 +10911,7 @@ void main() discard; } -`;var oIo=R(W(),1),H_=`/** +`;var oIo=b(W(),1),H_=`/** * Compositing for Weighted Blended Order-Independent Transparency. See: * - http://jcgt.org/published/0002/02/09/ * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html @@ -10942,7 +10942,7 @@ void main() out_FragColor.a = 1.0; } } -`;function RW(t){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let e=t.colorBufferFloat&&t.depthTexture&&t.floatBlend;this._translucentMRTSupport=t.drawBuffers&&e,this._translucentMultipassSupport=!this._translucentMRTSupport&&e,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new Ro({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new Ro({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new Ro({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new Ro({createColorAttachments:!1}),this._opaqueClearCommand=new ao({color:new v(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new ao({color:new v(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new ao({color:new v(0,0,0,0),owner:this}),this._alphaClearCommand=new ao({color:new v(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Fe,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function Qyt(t){t._accumulationTexture=t._accumulationTexture&&!t._accumulationTexture.isDestroyed()&&t._accumulationTexture.destroy(),t._revealageTexture=t._revealageTexture&&!t._revealageTexture.isDestroyed()&&t._revealageTexture.destroy()}function Uat(t){t._translucentFBO.destroy(),t._alphaFBO.destroy(),t._adjustTranslucentFBO.destroy(),t._adjustAlphaFBO.destroy()}function kyt(t){Qyt(t),Uat(t)}function zye(t,e,n,i){Qyt(t),t._accumulationTexture=new hn({context:e,width:n,height:i,pixelFormat:Ye.RGBA,pixelDatatype:Ue.FLOAT});let o=new Float32Array(n*i*4);t._revealageTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.FLOAT,source:{arrayBufferView:o,width:n,height:i},flipY:!1})}function jye(t,e){Uat(t);let n=pt.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:a}=t._accumulationTexture;if(t._translucentMRTSupport&&(t._translucentFBO.setColorTexture(t._accumulationTexture,0),t._translucentFBO.setColorTexture(t._revealageTexture,1),t._translucentFBO.setDepthStencilTexture(t._depthStencilTexture),t._translucentFBO.update(e,o,a),t._adjustTranslucentFBO.setColorTexture(t._accumulationTexture,0),t._adjustTranslucentFBO.setColorTexture(t._revealageTexture,1),t._adjustTranslucentFBO.update(e,o,a),(t._translucentFBO.status!==n||t._adjustTranslucentFBO.status!==n)&&(Uat(t),t._translucentMRTSupport=!1)),!t._translucentMRTSupport){t._translucentFBO.setColorTexture(t._accumulationTexture),t._translucentFBO.setDepthStencilTexture(t._depthStencilTexture),t._translucentFBO.update(e,o,a),t._alphaFBO.setColorTexture(t._revealageTexture),t._alphaFBO.setDepthStencilTexture(t._depthStencilTexture),t._alphaFBO.update(e,o,a),t._adjustTranslucentFBO.setColorTexture(t._accumulationTexture),t._adjustTranslucentFBO.update(e,o,a),t._adjustAlphaFBO.setColorTexture(t._revealageTexture),t._adjustAlphaFBO.update(e,o,a);let s=t._translucentFBO.status===n,l=t._alphaFBO.status===n,r=t._adjustTranslucentFBO.status===n,d=t._adjustAlphaFBO.status===n;(!s||!l||!r||!d)&&(kyt(t),t._translucentMultipassSupport=!1,i=!1)}return i}RW.prototype.update=function(t,e,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:a,height:s}=this._opaqueTexture,l=this._accumulationTexture,r=!c(l)||l.width!==a||l.height!==s||i!==this._useHDR,d=this._numSamples!==o;if((r||d)&&(this._numSamples=o,zye(this,t,a,s)),(!c(this._translucentFBO.framebuffer)||r||d)&&!jye(this,t))return;this._useHDR=i;let m=this,h,Z;c(this._compositeCommand)||(h=new Ve({sources:[H_]}),this._translucentMRTSupport&&h.defines.push("MRT"),Z={u_opaque:function(){return m._opaqueTexture},u_accumulation:function(){return m._accumulationTexture},u_revealage:function(){return m._revealageTexture}},this._compositeCommand=t.createViewportQuadCommand(h,{uniformMap:Z,owner:this})),c(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new Ve({defines:["MRT"],sources:[_1]}),Z={u_bgColor:function(){return m._translucentMRTClearCommand.color},u_depthTexture:function(){return m._depthStencilTexture}},this._adjustTranslucentCommand=t.createViewportQuadCommand(h,{uniformMap:Z,owner:this})):this._translucentMultipassSupport&&(h=new Ve({sources:[_1]}),Z={u_bgColor:function(){return m._translucentMultipassClearCommand.color},u_depthTexture:function(){return m._depthStencilTexture}},this._adjustTranslucentCommand=t.createViewportQuadCommand(h,{uniformMap:Z,owner:this}),Z={u_bgColor:function(){return m._alphaClearCommand.color},u_depthTexture:function(){return m._depthStencilTexture}},this._adjustAlphaCommand=t.createViewportQuadCommand(h,{uniformMap:Z,owner:this}))),this._viewport.width=a,this._viewport.height=s;let b=!Fe.equals(this._viewport,e.viewport),u=b!==this._useScissorTest;this._useScissorTest=b,Fe.equals(this._scissorRectangle,e.viewport)||(this._scissorRectangle=Fe.clone(e.viewport,this._scissorRectangle),u=!0),(!c(this._rs)||!Fe.equals(this._viewport,this._rs.viewport)||u)&&(this._rs=he.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),c(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),c(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var qye={enabled:!0,color:new v(0,0,0,0),equationRgb:pd.ADD,equationAlpha:pd.ADD,functionSourceRgb:Ha.ONE,functionDestinationRgb:Ha.ONE,functionSourceAlpha:Ha.ZERO,functionDestinationAlpha:Ha.ONE_MINUS_SOURCE_ALPHA},$ye={enabled:!0,color:new v(0,0,0,0),equationRgb:pd.ADD,equationAlpha:pd.ADD,functionSourceRgb:Ha.ONE,functionDestinationRgb:Ha.ONE,functionSourceAlpha:Ha.ONE,functionDestinationAlpha:Ha.ONE},tBe={enabled:!0,color:new v(0,0,0,0),equationRgb:pd.ADD,equationAlpha:pd.ADD,functionSourceRgb:Ha.ZERO,functionDestinationRgb:Ha.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Ha.ZERO,functionDestinationAlpha:Ha.ONE_MINUS_SOURCE_ALPHA};function Gat(t,e,n,i){let o=n[i.id];if(!c(o)){let a=he.getState(i);a.depthMask=!1,a.blending=e,o=he.fromCache(a),n[i.id]=o}return o}function eBe(t,e,n){return Gat(e,qye,t._translucentRenderStateCache,n)}function nBe(t,e,n){return Gat(e,$ye,t._translucentRenderStateCache,n)}function iBe(t,e,n){return Gat(e,tBe,t._alphaRenderStateCache,n)}var oBe=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; +`;function bW(t){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let e=t.colorBufferFloat&&t.depthTexture&&t.floatBlend;this._translucentMRTSupport=t.drawBuffers&&e,this._translucentMultipassSupport=!this._translucentMRTSupport&&e,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new bo({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new bo({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new bo({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new bo({createColorAttachments:!1}),this._opaqueClearCommand=new ao({color:new v(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new ao({color:new v(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new ao({color:new v(0,0,0,0),owner:this}),this._alphaClearCommand=new ao({color:new v(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Fe,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function Qyt(t){t._accumulationTexture=t._accumulationTexture&&!t._accumulationTexture.isDestroyed()&&t._accumulationTexture.destroy(),t._revealageTexture=t._revealageTexture&&!t._revealageTexture.isDestroyed()&&t._revealageTexture.destroy()}function Uat(t){t._translucentFBO.destroy(),t._alphaFBO.destroy(),t._adjustTranslucentFBO.destroy(),t._adjustAlphaFBO.destroy()}function kyt(t){Qyt(t),Uat(t)}function zye(t,e,n,i){Qyt(t),t._accumulationTexture=new hn({context:e,width:n,height:i,pixelFormat:Ye.RGBA,pixelDatatype:Ue.FLOAT});let o=new Float32Array(n*i*4);t._revealageTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.FLOAT,source:{arrayBufferView:o,width:n,height:i},flipY:!1})}function jye(t,e){Uat(t);let n=pt.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:a}=t._accumulationTexture;if(t._translucentMRTSupport&&(t._translucentFBO.setColorTexture(t._accumulationTexture,0),t._translucentFBO.setColorTexture(t._revealageTexture,1),t._translucentFBO.setDepthStencilTexture(t._depthStencilTexture),t._translucentFBO.update(e,o,a),t._adjustTranslucentFBO.setColorTexture(t._accumulationTexture,0),t._adjustTranslucentFBO.setColorTexture(t._revealageTexture,1),t._adjustTranslucentFBO.update(e,o,a),(t._translucentFBO.status!==n||t._adjustTranslucentFBO.status!==n)&&(Uat(t),t._translucentMRTSupport=!1)),!t._translucentMRTSupport){t._translucentFBO.setColorTexture(t._accumulationTexture),t._translucentFBO.setDepthStencilTexture(t._depthStencilTexture),t._translucentFBO.update(e,o,a),t._alphaFBO.setColorTexture(t._revealageTexture),t._alphaFBO.setDepthStencilTexture(t._depthStencilTexture),t._alphaFBO.update(e,o,a),t._adjustTranslucentFBO.setColorTexture(t._accumulationTexture),t._adjustTranslucentFBO.update(e,o,a),t._adjustAlphaFBO.setColorTexture(t._revealageTexture),t._adjustAlphaFBO.update(e,o,a);let s=t._translucentFBO.status===n,l=t._alphaFBO.status===n,r=t._adjustTranslucentFBO.status===n,d=t._adjustAlphaFBO.status===n;(!s||!l||!r||!d)&&(kyt(t),t._translucentMultipassSupport=!1,i=!1)}return i}bW.prototype.update=function(t,e,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:a,height:s}=this._opaqueTexture,l=this._accumulationTexture,r=!c(l)||l.width!==a||l.height!==s||i!==this._useHDR,d=this._numSamples!==o;if((r||d)&&(this._numSamples=o,zye(this,t,a,s)),(!c(this._translucentFBO.framebuffer)||r||d)&&!jye(this,t))return;this._useHDR=i;let m=this,h,u;c(this._compositeCommand)||(h=new Ze({sources:[H_]}),this._translucentMRTSupport&&h.defines.push("MRT"),u={u_opaque:function(){return m._opaqueTexture},u_accumulation:function(){return m._accumulationTexture},u_revealage:function(){return m._revealageTexture}},this._compositeCommand=t.createViewportQuadCommand(h,{uniformMap:u,owner:this})),c(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new Ze({defines:["MRT"],sources:[_1]}),u={u_bgColor:function(){return m._translucentMRTClearCommand.color},u_depthTexture:function(){return m._depthStencilTexture}},this._adjustTranslucentCommand=t.createViewportQuadCommand(h,{uniformMap:u,owner:this})):this._translucentMultipassSupport&&(h=new Ze({sources:[_1]}),u={u_bgColor:function(){return m._translucentMultipassClearCommand.color},u_depthTexture:function(){return m._depthStencilTexture}},this._adjustTranslucentCommand=t.createViewportQuadCommand(h,{uniformMap:u,owner:this}),u={u_bgColor:function(){return m._alphaClearCommand.color},u_depthTexture:function(){return m._depthStencilTexture}},this._adjustAlphaCommand=t.createViewportQuadCommand(h,{uniformMap:u,owner:this}))),this._viewport.width=a,this._viewport.height=s;let R=!Fe.equals(this._viewport,e.viewport),V=R!==this._useScissorTest;this._useScissorTest=R,Fe.equals(this._scissorRectangle,e.viewport)||(this._scissorRectangle=Fe.clone(e.viewport,this._scissorRectangle),V=!0),(!c(this._rs)||!Fe.equals(this._viewport,this._rs.viewport)||V)&&(this._rs=he.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),c(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),c(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var qye={enabled:!0,color:new v(0,0,0,0),equationRgb:pd.ADD,equationAlpha:pd.ADD,functionSourceRgb:Ha.ONE,functionDestinationRgb:Ha.ONE,functionSourceAlpha:Ha.ZERO,functionDestinationAlpha:Ha.ONE_MINUS_SOURCE_ALPHA},$ye={enabled:!0,color:new v(0,0,0,0),equationRgb:pd.ADD,equationAlpha:pd.ADD,functionSourceRgb:Ha.ONE,functionDestinationRgb:Ha.ONE,functionSourceAlpha:Ha.ONE,functionDestinationAlpha:Ha.ONE},tBe={enabled:!0,color:new v(0,0,0,0),equationRgb:pd.ADD,equationAlpha:pd.ADD,functionSourceRgb:Ha.ZERO,functionDestinationRgb:Ha.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Ha.ZERO,functionDestinationAlpha:Ha.ONE_MINUS_SOURCE_ALPHA};function Gat(t,e,n,i){let o=n[i.id];if(!c(o)){let a=he.getState(i);a.depthMask=!1,a.blending=e,o=he.fromCache(a),n[i.id]=o}return o}function eBe(t,e,n){return Gat(e,qye,t._translucentRenderStateCache,n)}function nBe(t,e,n){return Gat(e,$ye,t._translucentRenderStateCache,n)}function iBe(t,e,n){return Gat(e,tBe,t._alphaRenderStateCache,n)}var oBe=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; float ai = czm_out_FragColor.a; float wzi = czm_alphaWeight(ai); out_FragData_0 = vec4(Ci * wzi, ai); @@ -10953,7 +10953,7 @@ void main() out_FragColor = vec4(Ci, ai) * wzi; `,sBe=` float ai = czm_out_FragColor.a; out_FragColor = vec4(ai); -`;function Aat(t,e,n,i){let{shaderCache:o}=t,a=o.getDerivedShaderProgram(e,n);if(c(a))return a;let s=e._attributeLocations,l=e.fragmentShaderSource.clone();l.sources=l.sources.map(function(m){return Ve.replaceMain(m,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),l.sources.splice(0,0,`vec4 czm_out_FragColor; +`;function Aat(t,e,n,i){let{shaderCache:o}=t,a=o.getDerivedShaderProgram(e,n);if(c(a))return a;let s=e._attributeLocations,l=e.fragmentShaderSource.clone();l.sources=l.sources.map(function(m){return Ze.replaceMain(m,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),l.sources.splice(0,0,`vec4 czm_out_FragColor; bool czm_discard = false; `);let r=[...i.matchAll(/out_FragData_(\d+)/g)],d="";for(let m=0;m<r.length;m++){let h=r[m];d=`layout (location = ${h[1]}) out vec4 ${h[0]}; ${d}`}return l.sources.push(d),l.sources.push(`void main() @@ -10964,12 +10964,12 @@ ${d}`}return l.sources.push(d),l.sources.push(`void main() discard; } ${i}} -`),o.createDerivedShaderProgram(e,n,{vertexShaderSource:e.vertexShaderSource,fragmentShaderSource:l,attributeLocations:s})}function lBe(t,e){return Aat(t,e,"translucentMRT",oBe)}function rBe(t,e){return Aat(t,e,"translucentMultipass",aBe)}function dBe(t,e){return Aat(t,e,"alphaMultipass",sBe)}RW.prototype.createDerivedCommands=function(t,e,n){if(c(n)||(n={}),this._translucentMRTSupport){let l,r;return c(n.translucentCommand)&&(l=n.translucentCommand.shaderProgram,r=n.translucentCommand.renderState),n.translucentCommand=Ee.shallowClone(t,n.translucentCommand),!c(l)||n.shaderProgramId!==t.shaderProgram.id?(n.translucentCommand.shaderProgram=lBe(e,t.shaderProgram),n.translucentCommand.renderState=eBe(this,e,t.renderState),n.shaderProgramId=t.shaderProgram.id):(n.translucentCommand.shaderProgram=l,n.translucentCommand.renderState=r),n}let i,o,a,s;return c(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,a=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=Ee.shallowClone(t,n.translucentCommand),n.alphaCommand=Ee.shallowClone(t,n.alphaCommand),!c(i)||n.shaderProgramId!==t.shaderProgram.id?(n.translucentCommand.shaderProgram=rBe(e,t.shaderProgram),n.translucentCommand.renderState=nBe(this,e,t.renderState),n.alphaCommand.shaderProgram=dBe(e,t.shaderProgram),n.alphaCommand.renderState=iBe(this,e,t.renderState),n.shaderProgramId=t.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=a,n.alphaCommand.renderState=s),n};function cBe(t,e,n,i,o,a){let s,l,r,{context:d,frameState:m}=e,{useLogDepth:h,shadowState:Z}=m,b=e._hdr,u=i.framebuffer,F=Z.lightShadowsEnabled;i.framebuffer=t._adjustTranslucentFBO.framebuffer,t._adjustTranslucentCommand.execute(d,i),i.framebuffer=t._adjustAlphaFBO.framebuffer,t._adjustAlphaCommand.execute(d,i);let U=t._opaqueFBO.framebuffer;for(i.framebuffer=t._translucentFBO.framebuffer,r=0;r<o.length;++r)s=o[r],s=h?s.derivedCommands.logDepth.command:s,s=b?s.derivedCommands.hdr.command:s,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.translucentCommand:s.derivedCommands.oit.translucentCommand,n(l,e,d,i,U);for(c(a)&&(s=a.unclassifiedCommand,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.translucentCommand:s.derivedCommands.oit.translucentCommand,n(l,e,d,i,U)),i.framebuffer=t._alphaFBO.framebuffer,r=0;r<o.length;++r)s=o[r],s=h?s.derivedCommands.logDepth.command:s,s=b?s.derivedCommands.hdr.command:s,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.alphaCommand:s.derivedCommands.oit.alphaCommand,n(l,e,d,i,U);c(a)&&(s=a.unclassifiedCommand,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.alphaCommand:s.derivedCommands.oit.alphaCommand,n(l,e,d,i,U)),i.framebuffer=u}function mBe(t,e,n,i,o,a){let{context:s,frameState:l}=e,{useLogDepth:r,shadowState:d}=l,m=e._hdr,h=i.framebuffer,Z=d.lightShadowsEnabled;i.framebuffer=t._adjustTranslucentFBO.framebuffer,t._adjustTranslucentCommand.execute(s,i);let b=t._opaqueFBO.framebuffer;i.framebuffer=t._translucentFBO.framebuffer;let u,F;for(let U=0;U<o.length;++U)u=o[U],u=r?u.derivedCommands.logDepth.command:u,u=m?u.derivedCommands.hdr.command:u,F=Z&&u.receiveShadows?u.derivedCommands.oit.shadows.translucentCommand:u.derivedCommands.oit.translucentCommand,n(F,e,s,i,b);c(a)&&(u=a.unclassifiedCommand,F=Z&&u.receiveShadows?u.derivedCommands.oit.shadows.translucentCommand:u.derivedCommands.oit.translucentCommand,n(F,e,s,i,b)),i.framebuffer=h}RW.prototype.executeCommands=function(t,e,n,i,o){if(this._translucentMRTSupport){mBe(this,t,e,n,i,o);return}cBe(this,t,e,n,i,o)};RW.prototype.execute=function(t,e){this._compositeCommand.execute(t,e)};RW.prototype.clear=function(t,e,n){let i=e.framebuffer;e.framebuffer=this._opaqueFBO.framebuffer,v.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(t,e),e.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(t,e),this._translucentMultipassSupport&&(e.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(t,e)),e.framebuffer=i};RW.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};RW.prototype.isDestroyed=function(){return!1};RW.prototype.destroy=function(){return kyt(this),c(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),c(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),c(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),At(this)};var w_=RW;var CIo=R(W(),1);function P_(){this._framebuffer=new Ro({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(P_.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function hBe(t){t._framebuffer.destroy()}function pBe(t,e){let n=e.drawingBufferWidth,i=e.drawingBufferHeight;t._framebuffer.update(e,n,i);let o=new Md(e);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Fe},o.viewport=new Fe,t._passState=o}P_.prototype.update=function(t,e,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&pBe(this,t);let a=this.framebuffer,s=this._passState;return s.framebuffer=a,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=e.x,s.scissorTest.rectangle.y=o-e.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};P_.prototype.isDestroyed=function(){return!1};P_.prototype.destroy=function(){return hBe(this),At(this)};var v_=P_;var XIo=R(W(),1);function D1(t){let e=new Md(t);e.blendingEnabled=!1,e.scissorTest={enabled:!0,rectangle:new Fe},e.viewport=new Fe,this._context=t,this._fb=new Ro({depthStencil:!0}),this._passState=e,this._width=0,this._height=0}D1.prototype.begin=function(t,e){let n=this._context,{width:i,height:o}=e;return Fe.clone(t,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var K_=new v;D1.prototype.end=function(t){let e=f(t.width,1),n=f(t.height,1),i=this._context,o=i.readPixels({x:t.x,y:t.y,width:e,height:n,framebuffer:this._fb.framebuffer}),a=Math.max(e,n),s=a*a,l=Math.floor(e*.5),r=Math.floor(n*.5),d=0,m=0,h=0,Z=-1;for(let b=0;b<s;++b){if(-l<=d&&d<=l&&-r<=m&&m<=r){let u=4*((r-m)*e+d+l);K_.red=v.byteToFloat(o[u]),K_.green=v.byteToFloat(o[u+1]),K_.blue=v.byteToFloat(o[u+2]),K_.alpha=v.byteToFloat(o[u+3]);let F=i.getObjectByPickColor(K_);if(c(F))return F}if(d===m||d<0&&-d===m||d>0&&d===1-m){let u=h;h=-Z,Z=u}d+=h,m+=Z}};D1.prototype.readVoxelInfo=function(t){let e=f(t.width,1),n=f(t.height,1),o=this._context.readPixels({x:t.x,y:t.y,width:e,height:n,framebuffer:this._fb.framebuffer}),a=Math.floor(e*.5),l=4*(Math.floor(n*.5)*e+a);return o.slice(l,l+4)};D1.prototype.isDestroyed=function(){return!1};D1.prototype.destroy=function(){return this._fb.destroy(),At(this)};var z_=D1;var HIo=R(W(),1);function WW(){this._numSamples=1,this._colorFramebuffer=new Ro({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new Ro({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new v(0,0,0,0),this._clearCommand=new ao({color:new v(0,0,0,0),depth:1,owner:this})}function uBe(t){t._colorFramebuffer.destroy(),t._idFramebuffer.destroy()}Object.defineProperties(WW.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});WW.prototype.update=function(t,e,n,i){let o=e.width,a=e.height,s=n?t.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(t,o,a,i,s),this._idFramebuffer.update(t,o,a)};WW.prototype.clear=function(t,e,n){v.clone(n,this._clearCommand.color),v.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(t,this._clearCommand,e),this._idFramebuffer.clear(t,this._clearCommand,e)};WW.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};WW.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};WW.prototype.prepareColorTextures=function(t){this._numSamples>1&&this._colorFramebuffer.prepareTextures(t)};WW.prototype.isDestroyed=function(){return!1};WW.prototype.destroy=function(){return uBe(this),At(this)};var FS=WW;var _1o=R(W(),1);var KIo=R(W(),1);function US(){}US.getShadowCastShaderKeyword=function(t,e,n,i){return`castShadow ${t} ${e} ${n} ${i}`};US.createShadowCastVertexShader=function(t,e,n){let i=t.defines.slice(0),o=t.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let a=Ve.findPositionVarying(t),s=c(a);if(e&&!s){let l=o.length;for(let d=0;d<l;++d)o[d]=Ve.replaceMain(o[d],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +`),o.createDerivedShaderProgram(e,n,{vertexShaderSource:e.vertexShaderSource,fragmentShaderSource:l,attributeLocations:s})}function lBe(t,e){return Aat(t,e,"translucentMRT",oBe)}function rBe(t,e){return Aat(t,e,"translucentMultipass",aBe)}function dBe(t,e){return Aat(t,e,"alphaMultipass",sBe)}bW.prototype.createDerivedCommands=function(t,e,n){if(c(n)||(n={}),this._translucentMRTSupport){let l,r;return c(n.translucentCommand)&&(l=n.translucentCommand.shaderProgram,r=n.translucentCommand.renderState),n.translucentCommand=Ee.shallowClone(t,n.translucentCommand),!c(l)||n.shaderProgramId!==t.shaderProgram.id?(n.translucentCommand.shaderProgram=lBe(e,t.shaderProgram),n.translucentCommand.renderState=eBe(this,e,t.renderState),n.shaderProgramId=t.shaderProgram.id):(n.translucentCommand.shaderProgram=l,n.translucentCommand.renderState=r),n}let i,o,a,s;return c(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,a=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=Ee.shallowClone(t,n.translucentCommand),n.alphaCommand=Ee.shallowClone(t,n.alphaCommand),!c(i)||n.shaderProgramId!==t.shaderProgram.id?(n.translucentCommand.shaderProgram=rBe(e,t.shaderProgram),n.translucentCommand.renderState=nBe(this,e,t.renderState),n.alphaCommand.shaderProgram=dBe(e,t.shaderProgram),n.alphaCommand.renderState=iBe(this,e,t.renderState),n.shaderProgramId=t.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=a,n.alphaCommand.renderState=s),n};function cBe(t,e,n,i,o,a){let s,l,r,{context:d,frameState:m}=e,{useLogDepth:h,shadowState:u}=m,R=e._hdr,V=i.framebuffer,F=u.lightShadowsEnabled;i.framebuffer=t._adjustTranslucentFBO.framebuffer,t._adjustTranslucentCommand.execute(d,i),i.framebuffer=t._adjustAlphaFBO.framebuffer,t._adjustAlphaCommand.execute(d,i);let U=t._opaqueFBO.framebuffer;for(i.framebuffer=t._translucentFBO.framebuffer,r=0;r<o.length;++r)s=o[r],s=h?s.derivedCommands.logDepth.command:s,s=R?s.derivedCommands.hdr.command:s,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.translucentCommand:s.derivedCommands.oit.translucentCommand,n(l,e,d,i,U);for(c(a)&&(s=a.unclassifiedCommand,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.translucentCommand:s.derivedCommands.oit.translucentCommand,n(l,e,d,i,U)),i.framebuffer=t._alphaFBO.framebuffer,r=0;r<o.length;++r)s=o[r],s=h?s.derivedCommands.logDepth.command:s,s=R?s.derivedCommands.hdr.command:s,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.alphaCommand:s.derivedCommands.oit.alphaCommand,n(l,e,d,i,U);c(a)&&(s=a.unclassifiedCommand,l=F&&s.receiveShadows?s.derivedCommands.oit.shadows.alphaCommand:s.derivedCommands.oit.alphaCommand,n(l,e,d,i,U)),i.framebuffer=V}function mBe(t,e,n,i,o,a){let{context:s,frameState:l}=e,{useLogDepth:r,shadowState:d}=l,m=e._hdr,h=i.framebuffer,u=d.lightShadowsEnabled;i.framebuffer=t._adjustTranslucentFBO.framebuffer,t._adjustTranslucentCommand.execute(s,i);let R=t._opaqueFBO.framebuffer;i.framebuffer=t._translucentFBO.framebuffer;let V,F;for(let U=0;U<o.length;++U)V=o[U],V=r?V.derivedCommands.logDepth.command:V,V=m?V.derivedCommands.hdr.command:V,F=u&&V.receiveShadows?V.derivedCommands.oit.shadows.translucentCommand:V.derivedCommands.oit.translucentCommand,n(F,e,s,i,R);c(a)&&(V=a.unclassifiedCommand,F=u&&V.receiveShadows?V.derivedCommands.oit.shadows.translucentCommand:V.derivedCommands.oit.translucentCommand,n(F,e,s,i,R)),i.framebuffer=h}bW.prototype.executeCommands=function(t,e,n,i,o){if(this._translucentMRTSupport){mBe(this,t,e,n,i,o);return}cBe(this,t,e,n,i,o)};bW.prototype.execute=function(t,e){this._compositeCommand.execute(t,e)};bW.prototype.clear=function(t,e,n){let i=e.framebuffer;e.framebuffer=this._opaqueFBO.framebuffer,v.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(t,e),e.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(t,e),this._translucentMultipassSupport&&(e.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(t,e)),e.framebuffer=i};bW.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};bW.prototype.isDestroyed=function(){return!1};bW.prototype.destroy=function(){return kyt(this),c(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),c(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),c(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),At(this)};var w_=bW;var CIo=b(W(),1);function P_(){this._framebuffer=new bo({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(P_.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function hBe(t){t._framebuffer.destroy()}function pBe(t,e){let n=e.drawingBufferWidth,i=e.drawingBufferHeight;t._framebuffer.update(e,n,i);let o=new Md(e);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Fe},o.viewport=new Fe,t._passState=o}P_.prototype.update=function(t,e,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&pBe(this,t);let a=this.framebuffer,s=this._passState;return s.framebuffer=a,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=e.x,s.scissorTest.rectangle.y=o-e.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};P_.prototype.isDestroyed=function(){return!1};P_.prototype.destroy=function(){return hBe(this),At(this)};var v_=P_;var XIo=b(W(),1);function D1(t){let e=new Md(t);e.blendingEnabled=!1,e.scissorTest={enabled:!0,rectangle:new Fe},e.viewport=new Fe,this._context=t,this._fb=new bo({depthStencil:!0}),this._passState=e,this._width=0,this._height=0}D1.prototype.begin=function(t,e){let n=this._context,{width:i,height:o}=e;return Fe.clone(t,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var K_=new v;D1.prototype.end=function(t){let e=f(t.width,1),n=f(t.height,1),i=this._context,o=i.readPixels({x:t.x,y:t.y,width:e,height:n,framebuffer:this._fb.framebuffer}),a=Math.max(e,n),s=a*a,l=Math.floor(e*.5),r=Math.floor(n*.5),d=0,m=0,h=0,u=-1;for(let R=0;R<s;++R){if(-l<=d&&d<=l&&-r<=m&&m<=r){let V=4*((r-m)*e+d+l);K_.red=v.byteToFloat(o[V]),K_.green=v.byteToFloat(o[V+1]),K_.blue=v.byteToFloat(o[V+2]),K_.alpha=v.byteToFloat(o[V+3]);let F=i.getObjectByPickColor(K_);if(c(F))return F}if(d===m||d<0&&-d===m||d>0&&d===1-m){let V=h;h=-u,u=V}d+=h,m+=u}};D1.prototype.readVoxelInfo=function(t){let e=f(t.width,1),n=f(t.height,1),o=this._context.readPixels({x:t.x,y:t.y,width:e,height:n,framebuffer:this._fb.framebuffer}),a=Math.floor(e*.5),l=4*(Math.floor(n*.5)*e+a);return o.slice(l,l+4)};D1.prototype.isDestroyed=function(){return!1};D1.prototype.destroy=function(){return this._fb.destroy(),At(this)};var z_=D1;var HIo=b(W(),1);function WW(){this._numSamples=1,this._colorFramebuffer=new bo({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new bo({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new v(0,0,0,0),this._clearCommand=new ao({color:new v(0,0,0,0),depth:1,owner:this})}function VBe(t){t._colorFramebuffer.destroy(),t._idFramebuffer.destroy()}Object.defineProperties(WW.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});WW.prototype.update=function(t,e,n,i){let o=e.width,a=e.height,s=n?t.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(t,o,a,i,s),this._idFramebuffer.update(t,o,a)};WW.prototype.clear=function(t,e,n){v.clone(n,this._clearCommand.color),v.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(t,this._clearCommand,e),this._idFramebuffer.clear(t,this._clearCommand,e)};WW.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};WW.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};WW.prototype.prepareColorTextures=function(t){this._numSamples>1&&this._colorFramebuffer.prepareTextures(t)};WW.prototype.isDestroyed=function(){return!1};WW.prototype.destroy=function(){return VBe(this),At(this)};var FT=WW;var _1o=b(W(),1);var KIo=b(W(),1);function UT(){}UT.getShadowCastShaderKeyword=function(t,e,n,i){return`castShadow ${t} ${e} ${n} ${i}`};UT.createShadowCastVertexShader=function(t,e,n){let i=t.defines.slice(0),o=t.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let a=Ze.findPositionVarying(t),s=c(a);if(e&&!s){let l=o.length;for(let d=0;d<l;++d)o[d]=Ze.replaceMain(o[d],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; void main() { czm_shadow_cast_main(); v_positionEC = (czm_inverseProjection * gl_Position).xyz; -}`)}return new Ve({defines:i,sources:o})};US.createShadowCastFragmentShader=function(t,e,n,i){let o=t.defines.slice(0),a=t.sources.slice(0);o.push("SHADOW_MAP");let s=Ve.findPositionVarying(t),l=c(s);l||(s="v_positionEC");let r=a.length;for(let m=0;m<r;++m)a[m]=Ve.replaceMain(a[m],"czm_shadow_cast_main");let d="";return e&&(l||(d+=`in vec3 v_positionEC; +}`)}return new Ze({defines:i,sources:o})};UT.createShadowCastFragmentShader=function(t,e,n,i){let o=t.defines.slice(0),a=t.sources.slice(0);o.push("SHADOW_MAP");let s=Ze.findPositionVarying(t),l=c(s);l||(s="v_positionEC");let r=a.length;for(let m=0;m<r;++m)a[m]=Ze.replaceMain(a[m],"czm_shadow_cast_main");let d="";return e&&(l||(d+=`in vec3 v_positionEC; `),d+=`uniform vec4 shadowMap_lightPositionEC; `),i?d+=`void main() { @@ -10990,7 +10990,7 @@ void main() `:n?d+=` out_FragColor = vec4(1.0); `:d+=` out_FragColor = czm_packDepth(gl_FragCoord.z); `,d+=`} -`,a.push(d),new Ve({defines:o,sources:a})};US.getShadowReceiveShaderKeyword=function(t,e,n,i){let o=t._usesDepthTexture,a=t._polygonOffsetSupported,s=t._isPointLight,l=t._isSpotLight,r=t._numberOfCascades>1,d=t.debugCascadeColors,m=t.softShadows;return`receiveShadow ${o}${a}${s}${l}${r}${d}${m}${e}${n}${i}`};US.createShadowReceiveVertexShader=function(t,e,n){let i=t.defines.slice(0),o=t.sources.slice(0);return i.push("SHADOW_MAP"),e&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new Ve({defines:i,sources:o})};US.createShadowReceiveFragmentShader=function(t,e,n,i,o){let a=Ve.findNormalVarying(t),s=!i&&c(a)||i&&o,l=Ve.findPositionVarying(t),r=c(l),d=e._usesDepthTexture,m=e._polygonOffsetSupported,h=e._isPointLight,Z=e._isSpotLight,b=e._numberOfCascades>1,u=e.debugCascadeColors,F=e.softShadows,U=h?e._pointBias:i?e._terrainBias:e._primitiveBias,G=t.defines.slice(0),A=t.sources.slice(0),T=A.length;for(let y=0;y<T;++y)A[y]=Ve.replaceMain(A[y],"czm_shadow_receive_main");h?G.push("USE_CUBE_MAP_SHADOW"):d&&G.push("USE_SHADOW_DEPTH_TEXTURE"),F&&!h&&G.push("USE_SOFT_SHADOWS"),b&&n&&i&&(s?G.push("ENABLE_VERTEX_LIGHTING"):G.push("ENABLE_DAYNIGHT_SHADING")),n&&U.normalShading&&s&&(G.push("USE_NORMAL_SHADING"),U.normalShadingSmooth>0&&G.push("USE_NORMAL_SHADING_SMOOTH"));let g="";h?g+=`uniform samplerCube shadowMap_textureCube; +`,a.push(d),new Ze({defines:o,sources:a})};UT.getShadowReceiveShaderKeyword=function(t,e,n,i){let o=t._usesDepthTexture,a=t._polygonOffsetSupported,s=t._isPointLight,l=t._isSpotLight,r=t._numberOfCascades>1,d=t.debugCascadeColors,m=t.softShadows;return`receiveShadow ${o}${a}${s}${l}${r}${d}${m}${e}${n}${i}`};UT.createShadowReceiveVertexShader=function(t,e,n){let i=t.defines.slice(0),o=t.sources.slice(0);return i.push("SHADOW_MAP"),e&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new Ze({defines:i,sources:o})};UT.createShadowReceiveFragmentShader=function(t,e,n,i,o){let a=Ze.findNormalVarying(t),s=!i&&c(a)||i&&o,l=Ze.findPositionVarying(t),r=c(l),d=e._usesDepthTexture,m=e._polygonOffsetSupported,h=e._isPointLight,u=e._isSpotLight,R=e._numberOfCascades>1,V=e.debugCascadeColors,F=e.softShadows,U=h?e._pointBias:i?e._terrainBias:e._primitiveBias,G=t.defines.slice(0),A=t.sources.slice(0),S=A.length;for(let y=0;y<S;++y)A[y]=Ze.replaceMain(A[y],"czm_shadow_receive_main");h?G.push("USE_CUBE_MAP_SHADOW"):d&&G.push("USE_SHADOW_DEPTH_TEXTURE"),F&&!h&&G.push("USE_SOFT_SHADOWS"),R&&n&&i&&(s?G.push("ENABLE_VERTEX_LIGHTING"):G.push("ENABLE_DAYNIGHT_SHADING")),n&&U.normalShading&&s&&(G.push("USE_NORMAL_SHADING"),U.normalShadingSmooth>0&&G.push("USE_NORMAL_SHADING_SMOOTH"));let g="";h?g+=`uniform samplerCube shadowMap_textureCube; `:g+=`uniform sampler2D shadowMap_texture; `;let C;return r?C=` return vec4(${l}, 1.0); `:C=`#ifndef LOG_DEPTH @@ -11048,7 +11048,7 @@ ${U.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanc shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); shadowParameters.texCoords = directionWC; float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); -`:Z?g+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); +`:u?g+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); applyNormalOffset(positionEC, normalEC, nDotL); vec4 shadowPosition = shadowMap_matrix * positionEC; @@ -11063,7 +11063,7 @@ ${U.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanc shadowParameters.depth = shadowPosition.z; shadowParameters.nDotL = nDotL; float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); -`:b?g+=` float maxDepth = shadowMap_cascadeSplits[1].w; +`:R?g+=` float maxDepth = shadowMap_cascadeSplits[1].w; // Stop early if the eye depth exceeds the last cascade if (depth > maxDepth) { @@ -11085,7 +11085,7 @@ ${U.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanc float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); visibility = mix(visibility, 1.0, fade); -${u?` // Draw cascade colors for debugging +${V?` // Draw cascade colors for debugging out_FragColor *= czm_cascadeColor(weights); `:""}`:g+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); applyNormalOffset(positionEC, normalEC, nDotL); @@ -11101,7 +11101,7 @@ ${u?` // Draw cascade colors for debugging float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); `,g+=` out_FragColor.rgb *= visibility; } -`,A.push(g),new Ve({defines:G,sources:A})};var Db=US;function Ob(t){t=f(t,f.EMPTY_OBJECT);let e=t.context;this._enabled=f(t.enabled,!0),this._softShadows=f(t.softShadows,!1),this._normalOffset=f(t.normalOffset,!0),this.dirty=!0,this.fromLightSource=f(t.fromLightSource,!0),this.darkness=f(t.darkness,.3),this._darkness=this.darkness,this.fadingEnabled=f(t.fadingEnabled,!0),this.maximumDistance=f(t.maximumDistance,5e3),this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(In.isInternetExplorer()||In.isEdge()||(In.isChrome()||In.isFirefox())&&In.isWindows()&&!e.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new L,this._shadowMapTexture=void 0,this._lightDirectionEC=new p,this._lightPositionEC=new Rt,this._distance=0,this._lightCamera=t.lightCamera,this._shadowMapCamera=new sj,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new Ft,this._isPointLight=f(t.isPointLight,!1),this._pointLightRadius=f(t.pointLightRadius,100),this._cascadesEnabled=this._isPointLight?!1:f(t.cascadesEnabled,!0),this._numberOfCascades=this._cascadesEnabled?f(t.numberOfCascades,4):0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new K,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new el:c(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new Rt,new Rt],this._cascadeMatrices=[new L,new L,new L,new L],this._cascadeDistances=new Rt;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new ZBe(e);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=e.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,Sat(this),this._clearCommand=new ao({depth:1,color:new v}),this._clearPassState=new Md(e),this._size=f(t.size,2048),this.size=this._size}Ob.MAXIMUM_DISTANCE=2e4;function ZBe(t){this.camera=new sj,this.passState=new Md(t),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function Tat(t,e){return he.fromCache({cull:{enabled:!0,face:so.BACK},depthTest:{enabled:!0},colorMask:{red:t,green:t,blue:t,alpha:t},depthMask:!0,polygonOffset:{enabled:e.polygonOffset,factor:e.polygonOffsetFactor,units:e.polygonOffsetUnits}})}function Sat(t){let e=!t._usesDepthTexture;t._primitiveRenderState=Tat(e,t._primitiveBias),t._terrainRenderState=Tat(e,t._terrainBias),t._pointRenderState=Tat(e,t._pointBias)}Ob.prototype.debugCreateRenderStates=function(){Sat(this)};Object.defineProperties(Ob.prototype,{enabled:{get:function(){return this._enabled},set:function(t){this.dirty=this._enabled!==t,this._enabled=t}},normalOffset:{get:function(){return this._normalOffset},set:function(t){this.dirty=this._normalOffset!==t,this._normalOffset=t,this._terrainBias.normalOffset=t,this._primitiveBias.normalOffset=t,this._pointBias.normalOffset=t}},softShadows:{get:function(){return this._softShadows},set:function(t){this.dirty=this._softShadows!==t,this._softShadows=t}},size:{get:function(){return this._size},set:function(t){FBe(this,t)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(t){this.dirty=this._debugCascadeColors!==t,this._debugCascadeColors=t}}});function gat(t){let e=t._passes.length;for(let n=0;n<e;++n){let i=t._passes[n],o=i.framebuffer;c(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}t._depthAttachment=t._depthAttachment&&t._depthAttachment.destroy(),t._colorAttachment=t._colorAttachment&&t._colorAttachment.destroy()}function VBe(t,e){let n=new bh({context:e,width:t._textureSize.x,height:t._textureSize.y,format:Sc.DEPTH_COMPONENT16}),i=new hn({context:e,width:t._textureSize.x,height:t._textureSize.y,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,sampler:Hn.NEAREST}),o=new Lr({context:e,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),a=t._passes.length;for(let s=0;s<a;++s){let l=t._passes[s];l.framebuffer=o,l.passState.framebuffer=o}t._shadowMapTexture=i,t._depthAttachment=n,t._colorAttachment=i}function bBe(t,e){let n=new hn({context:e,width:t._textureSize.x,height:t._textureSize.y,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8,sampler:Hn.NEAREST}),i=new Lr({context:e,depthStencilTexture:n,destroyAttachments:!1}),o=t._passes.length;for(let a=0;a<o;++a){let s=t._passes[a];s.framebuffer=i,s.passState.framebuffer=i}t._shadowMapTexture=n,t._depthAttachment=n}function RBe(t,e){let n=new bh({context:e,width:t._textureSize.x,height:t._textureSize.y,format:Sc.DEPTH_COMPONENT16}),i=new Ld({context:e,width:t._textureSize.x,height:t._textureSize.y,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,sampler:Hn.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let a=0;a<6;++a){let s=new Lr({context:e,depthRenderbuffer:n,colorTextures:[o[a]],destroyAttachments:!1}),l=t._passes[a];l.framebuffer=s,l.passState.framebuffer=s}t._shadowMapTexture=i,t._depthAttachment=n,t._colorAttachment=i}function Xyt(t,e){t._isPointLight?RBe(t,e):t._usesDepthTexture?bBe(t,e):VBe(t,e)}function WBe(t,e){t._usesDepthTexture&&t._passes[0].framebuffer.status!==pt.FRAMEBUFFER_COMPLETE&&(t._usesDepthTexture=!1,Sat(t),gat(t),Xyt(t,e))}function fBe(t,e){(!c(t._passes[0].framebuffer)||t._shadowMapTexture.width!==t._textureSize.x)&&(gat(t),Xyt(t,e),WBe(t,e),Jyt(t,e))}function Jyt(t,e,n){n=f(n,0),(t._isPointLight||n===0)&&(t._clearCommand.framebuffer=t._passes[n].framebuffer,t._clearCommand.execute(e,t._clearPassState))}function FBe(t,e){t._size=e;let n=t._passes,i=n.length,o=t._textureSize;if(t._isPointLight){e=Sn.maximumCubeMapSize>=e?e:Sn.maximumCubeMapSize,o.x=e,o.y=e;let a=new Fe(0,0,e,e);n[0].passState.viewport=a,n[1].passState.viewport=a,n[2].passState.viewport=a,n[3].passState.viewport=a,n[4].passState.viewport=a,n[5].passState.viewport=a}else i===1?(e=Sn.maximumTextureSize>=e?e:Sn.maximumTextureSize,o.x=e,o.y=e,n[0].passState.viewport=new Fe(0,0,e,e)):i===4&&(e=Sn.maximumTextureSize>=e*2?e:Sn.maximumTextureSize/2,o.x=e*2,o.y=e*2,n[0].passState.viewport=new Fe(0,0,e,e),n[1].passState.viewport=new Fe(e,0,e,e),n[2].passState.viewport=new Fe(0,e,e,e),n[3].passState.viewport=new Fe(e,e,e,e));t._clearPassState.viewport=new Fe(0,0,o.x,o.y);for(let a=0;a<i;++a){let s=n[a],l=s.passState.viewport,r=l.x/o.x,d=l.y/o.y,m=l.width/o.x,h=l.height/o.y;s.textureOffsets=new L(m,0,0,r,0,h,0,d,0,0,1,0,0,0,0,1)}}var UBe=new Fe;function GBe(t,e){let n;t._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +`,A.push(g),new Ze({defines:G,sources:A})};var DR=UT;function OR(t){t=f(t,f.EMPTY_OBJECT);let e=t.context;this._enabled=f(t.enabled,!0),this._softShadows=f(t.softShadows,!1),this._normalOffset=f(t.normalOffset,!0),this.dirty=!0,this.fromLightSource=f(t.fromLightSource,!0),this.darkness=f(t.darkness,.3),this._darkness=this.darkness,this.fadingEnabled=f(t.fadingEnabled,!0),this.maximumDistance=f(t.maximumDistance,5e3),this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(In.isInternetExplorer()||In.isEdge()||(In.isChrome()||In.isFirefox())&&In.isWindows()&&!e.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new L,this._shadowMapTexture=void 0,this._lightDirectionEC=new p,this._lightPositionEC=new bt,this._distance=0,this._lightCamera=t.lightCamera,this._shadowMapCamera=new sj,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new Ft,this._isPointLight=f(t.isPointLight,!1),this._pointLightRadius=f(t.pointLightRadius,100),this._cascadesEnabled=this._isPointLight?!1:f(t.cascadesEnabled,!0),this._numberOfCascades=this._cascadesEnabled?f(t.numberOfCascades,4):0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new K,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new el:c(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new bt,new bt],this._cascadeMatrices=[new L,new L,new L,new L],this._cascadeDistances=new bt;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new uBe(e);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=e.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,Tat(this),this._clearCommand=new ao({depth:1,color:new v}),this._clearPassState=new Md(e),this._size=f(t.size,2048),this.size=this._size}OR.MAXIMUM_DISTANCE=2e4;function uBe(t){this.camera=new sj,this.passState=new Md(t),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function Sat(t,e){return he.fromCache({cull:{enabled:!0,face:so.BACK},depthTest:{enabled:!0},colorMask:{red:t,green:t,blue:t,alpha:t},depthMask:!0,polygonOffset:{enabled:e.polygonOffset,factor:e.polygonOffsetFactor,units:e.polygonOffsetUnits}})}function Tat(t){let e=!t._usesDepthTexture;t._primitiveRenderState=Sat(e,t._primitiveBias),t._terrainRenderState=Sat(e,t._terrainBias),t._pointRenderState=Sat(e,t._pointBias)}OR.prototype.debugCreateRenderStates=function(){Tat(this)};Object.defineProperties(OR.prototype,{enabled:{get:function(){return this._enabled},set:function(t){this.dirty=this._enabled!==t,this._enabled=t}},normalOffset:{get:function(){return this._normalOffset},set:function(t){this.dirty=this._normalOffset!==t,this._normalOffset=t,this._terrainBias.normalOffset=t,this._primitiveBias.normalOffset=t,this._pointBias.normalOffset=t}},softShadows:{get:function(){return this._softShadows},set:function(t){this.dirty=this._softShadows!==t,this._softShadows=t}},size:{get:function(){return this._size},set:function(t){FBe(this,t)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(t){this.dirty=this._debugCascadeColors!==t,this._debugCascadeColors=t}}});function gat(t){let e=t._passes.length;for(let n=0;n<e;++n){let i=t._passes[n],o=i.framebuffer;c(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}t._depthAttachment=t._depthAttachment&&t._depthAttachment.destroy(),t._colorAttachment=t._colorAttachment&&t._colorAttachment.destroy()}function ZBe(t,e){let n=new Rh({context:e,width:t._textureSize.x,height:t._textureSize.y,format:Tc.DEPTH_COMPONENT16}),i=new hn({context:e,width:t._textureSize.x,height:t._textureSize.y,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,sampler:Hn.NEAREST}),o=new Lr({context:e,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),a=t._passes.length;for(let s=0;s<a;++s){let l=t._passes[s];l.framebuffer=o,l.passState.framebuffer=o}t._shadowMapTexture=i,t._depthAttachment=n,t._colorAttachment=i}function RBe(t,e){let n=new hn({context:e,width:t._textureSize.x,height:t._textureSize.y,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8,sampler:Hn.NEAREST}),i=new Lr({context:e,depthStencilTexture:n,destroyAttachments:!1}),o=t._passes.length;for(let a=0;a<o;++a){let s=t._passes[a];s.framebuffer=i,s.passState.framebuffer=i}t._shadowMapTexture=n,t._depthAttachment=n}function bBe(t,e){let n=new Rh({context:e,width:t._textureSize.x,height:t._textureSize.y,format:Tc.DEPTH_COMPONENT16}),i=new Ld({context:e,width:t._textureSize.x,height:t._textureSize.y,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,sampler:Hn.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let a=0;a<6;++a){let s=new Lr({context:e,depthRenderbuffer:n,colorTextures:[o[a]],destroyAttachments:!1}),l=t._passes[a];l.framebuffer=s,l.passState.framebuffer=s}t._shadowMapTexture=i,t._depthAttachment=n,t._colorAttachment=i}function Xyt(t,e){t._isPointLight?bBe(t,e):t._usesDepthTexture?RBe(t,e):ZBe(t,e)}function WBe(t,e){t._usesDepthTexture&&t._passes[0].framebuffer.status!==pt.FRAMEBUFFER_COMPLETE&&(t._usesDepthTexture=!1,Tat(t),gat(t),Xyt(t,e))}function fBe(t,e){(!c(t._passes[0].framebuffer)||t._shadowMapTexture.width!==t._textureSize.x)&&(gat(t),Xyt(t,e),WBe(t,e),Jyt(t,e))}function Jyt(t,e,n){n=f(n,0),(t._isPointLight||n===0)&&(t._clearCommand.framebuffer=t._passes[n].framebuffer,t._clearCommand.execute(e,t._clearPassState))}function FBe(t,e){t._size=e;let n=t._passes,i=n.length,o=t._textureSize;if(t._isPointLight){e=Tn.maximumCubeMapSize>=e?e:Tn.maximumCubeMapSize,o.x=e,o.y=e;let a=new Fe(0,0,e,e);n[0].passState.viewport=a,n[1].passState.viewport=a,n[2].passState.viewport=a,n[3].passState.viewport=a,n[4].passState.viewport=a,n[5].passState.viewport=a}else i===1?(e=Tn.maximumTextureSize>=e?e:Tn.maximumTextureSize,o.x=e,o.y=e,n[0].passState.viewport=new Fe(0,0,e,e)):i===4&&(e=Tn.maximumTextureSize>=e*2?e:Tn.maximumTextureSize/2,o.x=e*2,o.y=e*2,n[0].passState.viewport=new Fe(0,0,e,e),n[1].passState.viewport=new Fe(e,0,e,e),n[2].passState.viewport=new Fe(0,e,e,e),n[3].passState.viewport=new Fe(e,e,e,e));t._clearPassState.viewport=new Fe(0,0,o.x,o.y);for(let a=0;a<i;++a){let s=n[a],l=s.passState.viewport,r=l.x/o.x,d=l.y/o.y,m=l.width/o.x,h=l.height/o.y;s.textureOffsets=new L(m,0,0,r,0,h,0,d,0,0,1,0,0,0,0,1)}}var UBe=new Fe;function GBe(t,e){let n;t._isPointLight?n=`uniform samplerCube shadowMap_textureCube; in vec2 v_textureCoordinates; void main() { @@ -11162,7 +11162,7 @@ ${t._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCo `:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); `} out_FragColor = vec4(vec3(shadow), 1.0); } -`;let i=e.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return t._shadowMapTexture},shadowMap_textureCube:function(){return t._shadowMapTexture}}});return i.pass=Pt.OVERLAY,i}function ABe(t,e){let n=e.context,i=e.context.drawingBufferWidth,o=e.context.drawingBufferHeight,a=Math.min(i,o)*.3,s=UBe;s.x=i-a,s.y=0,s.width=a,s.height=a;let l=t._debugShadowViewCommand;c(l)||(l=GBe(t,n),t._debugShadowViewCommand=l),(!c(l.renderState)||!Fe.equals(l.renderState.viewport,s))&&(l.renderState=he.fromCache({viewport:Fe.clone(s)})),e.commandList.push(t._debugShadowViewCommand)}var Hb=new Array(8);Hb[0]=new Rt(-1,-1,-1,1);Hb[1]=new Rt(1,-1,-1,1);Hb[2]=new Rt(1,1,-1,1);Hb[3]=new Rt(-1,1,-1,1);Hb[4]=new Rt(-1,-1,1,1);Hb[5]=new Rt(1,-1,1,1);Hb[6]=new Rt(1,1,1,1);Hb[7]=new Rt(-1,1,1,1);var RU=new L,Eat=new Array(8);for(let t=0;t<8;++t)Eat[t]=new Rt;function TBe(t,e){let n=new $e({geometry:new tZ({minimum:new p(-.5,-.5,-.5),maximum:new p(.5,.5,.5)}),attributes:{color:En.fromColor(e)}}),i=new $e({geometry:new g0({radius:.5}),attributes:{color:En.fromColor(e)}});return new Wi({geometryInstances:[n,i],appearance:new jn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:t})}var SBe=[v.RED,v.GREEN,v.BLUE,v.MAGENTA],gBe=new p;function EBe(t,e){ABe(t,e);let n=t.debugFreezeFrame&&!t._debugFreezeFrame;if(t._debugFreezeFrame=t.debugFreezeFrame,t.debugFreezeFrame&&(n&&(t._debugCameraFrustum=t._debugCameraFrustum&&t._debugCameraFrustum.destroy(),t._debugCameraFrustum=new Jb({camera:t._sceneCamera,color:v.CYAN,updateOnChange:!1})),t._debugCameraFrustum.update(e)),t._cascadesEnabled){if(t.debugFreezeFrame){n&&(t._debugLightFrustum=t._debugLightFrustum&&t._debugLightFrustum.destroy(),t._debugLightFrustum=new Jb({camera:t._shadowMapCamera,color:v.YELLOW,updateOnChange:!1})),t._debugLightFrustum.update(e);for(let i=0;i<t._numberOfCascades;++i)n&&(t._debugCascadeFrustums[i]=t._debugCascadeFrustums[i]&&t._debugCascadeFrustums[i].destroy(),t._debugCascadeFrustums[i]=new Jb({camera:t._passes[i].camera,color:SBe[i],updateOnChange:!1})),t._debugCascadeFrustums[i].update(e)}}else if(t._isPointLight){if(!c(t._debugLightFrustum)||t._needsUpdate){let i=t._shadowMapCamera.positionWC,o=wt.IDENTITY,a=t._pointLightRadius*2,s=p.fromElements(a,a,a,gBe),l=L.fromTranslationQuaternionRotationScale(i,o,s,RU);t._debugLightFrustum=t._debugLightFrustum&&t._debugLightFrustum.destroy(),t._debugLightFrustum=TBe(l,v.YELLOW)}t._debugLightFrustum.update(e)}else(!c(t._debugLightFrustum)||t._needsUpdate)&&(t._debugLightFrustum=new Jb({camera:t._shadowMapCamera,color:v.YELLOW,updateOnChange:!1})),t._debugLightFrustum.update(e)}function sj(){this.viewMatrix=new L,this.inverseViewMatrix=new L,this.frustum=void 0,this.positionCartographic=new gt,this.positionWC=new p,this.directionWC=p.clone(p.UNIT_Z),this.upWC=p.clone(p.UNIT_Y),this.rightWC=p.clone(p.UNIT_X),this.viewProjectionMatrix=new L}sj.prototype.clone=function(t){L.clone(t.viewMatrix,this.viewMatrix),L.clone(t.inverseViewMatrix,this.inverseViewMatrix),this.frustum=t.frustum.clone(this.frustum),gt.clone(t.positionCartographic,this.positionCartographic),p.clone(t.positionWC,this.positionWC),p.clone(t.directionWC,this.directionWC),p.clone(t.upWC,this.upWC),p.clone(t.rightWC,this.rightWC)};var CBe=new L(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);sj.prototype.getViewProjection=function(){let t=this.viewMatrix,e=this.frustum.projectionMatrix;return L.multiply(e,t,this.viewProjectionMatrix),L.multiply(CBe,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var IBe=new Array(5),NBe=new Io,yBe=new Array(4),Lyt=new p,Myt=new p;function BBe(t,e){let n=t._shadowMapCamera,i=t._sceneCamera,o=i.frustum.near,a=i.frustum.far,s=t._numberOfCascades,l,r=a-o,d=a/o,m=.9,h=!1;e.shadowState.closestObjectSize<200&&(h=!0,m=.9);let Z=yBe,b=IBe;for(b[0]=o,b[s]=a,l=0;l<s;++l){let M=(l+1)/s,V=o*Math.pow(d,M),E=o+r*M,I=k.lerp(E,V,m);b[l+1]=I,Z[l]=I-b[l]}if(h){for(l=0;l<s;++l)Z[l]=Math.min(Z[l],t._maximumCascadeDistances[l]);let M=b[0];for(l=0;l<s-1;++l)M+=Z[l],b[l+1]=M}Rt.unpack(b,0,t._cascadeSplits[0]),Rt.unpack(b,1,t._cascadeSplits[1]),Rt.unpack(Z,0,t._cascadeDistances);let u=n.frustum,F=u.left,U=u.right,G=u.bottom,A=u.top,T=u.near,g=u.far,C=n.positionWC,y=n.directionWC,Y=n.upWC,Q=i.frustum.clone(NBe),J=n.getViewProjection();for(l=0;l<s;++l){Q.near=b[l],Q.far=b[l+1];let M=L.multiply(Q.projectionMatrix,i.viewMatrix,RU),V=L.inverse(M,RU),E=L.multiply(J,V,RU),I=p.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Lyt),B=p.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Myt);for(let z=0;z<8;++z){let H=Rt.clone(Hb[z],Eat[z]);L.multiplyByVector(E,H,H),p.divideByScalar(H,H.w,H),p.minimumByComponent(H,I,I),p.maximumByComponent(H,B,B)}I.x=Math.max(I.x,0),I.y=Math.max(I.y,0),I.z=0,B.x=Math.min(B.x,1),B.y=Math.min(B.y,1),B.z=Math.min(B.z,1);let X=t._passes[l],_=X.camera;_.clone(n);let P=_.frustum;P.left=F+I.x*(U-F),P.right=F+B.x*(U-F),P.bottom=G+I.y*(A-G),P.top=G+B.y*(A-G),P.near=T+I.z*(g-T),P.far=T+B.z*(g-T),X.cullingVolume=_.frustum.computeCullingVolume(C,y,Y);let w=t._cascadeMatrices[l];L.multiply(_.getViewProjection(),i.inverseViewMatrix,w),L.multiply(X.textureOffsets,w,w)}}var QBe=new L,kBe=new p,YBe=new p,Yyt=new p;function xBe(t,e){let n=t._shadowMapCamera,i=t._sceneCamera,o=L.multiply(i.frustum.projectionMatrix,i.viewMatrix,RU),a=L.inverse(o,RU),s=n.directionWC,l=i.directionWC;p.equalsEpsilon(s,l,k.EPSILON10)&&(l=i.upWC);let r=p.cross(s,l,kBe);l=p.cross(r,s,YBe),p.normalize(l,l),p.normalize(r,r);let d=p.fromElements(0,0,0,Yyt),m=L.computeView(d,s,l,r,QBe),h=L.multiply(m,a,RU),Z=p.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Lyt),b=p.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Myt);for(let g=0;g<8;++g){let C=Rt.clone(Hb[g],Eat[g]);L.multiplyByVector(h,C,C),p.divideByScalar(C,C.w,C),p.minimumByComponent(C,Z,Z),p.maximumByComponent(C,b,b)}b.z+=1e3,Z.z-=10;let u=Yyt;u.x=-(.5*(Z.x+b.x)),u.y=-(.5*(Z.y+b.y)),u.z=-b.z;let F=L.fromTranslation(u,RU);m=L.multiply(F,m,m);let U=.5*(b.x-Z.x),G=.5*(b.y-Z.y),A=b.z-Z.z,T=n.frustum;T.left=-U,T.right=U,T.bottom=-G,T.top=G,T.near=.01,T.far=A,L.clone(m,n.viewMatrix),L.inverse(m,n.inverseViewMatrix),L.getTranslation(n.inverseViewMatrix,n.positionWC),e.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),p.clone(s,n.directionWC),p.clone(l,n.upWC),p.clone(r,n.rightWC)}var XBe=[new p(-1,0,0),new p(0,-1,0),new p(0,0,-1),new p(1,0,0),new p(0,1,0),new p(0,0,1)],JBe=[new p(0,-1,0),new p(0,0,-1),new p(0,-1,0),new p(0,-1,0),new p(0,0,1),new p(0,-1,0)],LBe=[new p(0,0,1),new p(1,0,0),new p(-1,0,0),new p(0,0,-1),new p(1,0,0),new p(1,0,0)];function MBe(t,e){let n=new Io;n.fov=k.PI_OVER_TWO,n.near=1,n.far=t._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=t._passes[i].camera;o.positionWC=t._shadowMapCamera.positionWC,o.positionCartographic=e.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=XBe[i],o.upWC=JBe[i],o.rightWC=LBe[i],L.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),L.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var _Be=new p,DBe=new p,_yt=new Ft,xyt=_yt.center;function OBe(t,e){let n=t._sceneCamera,i=t._shadowMapCamera,o=_yt;if(t._cascadesEnabled){if(n.frustum.near>=t.maximumDistance){t._outOfView=!0,t._needsUpdate=!1;return}let a=e.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,_Be),s=p.negate(i.directionWC,DBe),l=p.dot(a,s);if(t.fadingEnabled){let r=k.clamp(l/.1,0,1);t._darkness=k.lerp(1,t.darkness,r)}else t._darkness=t.darkness;if(l<0){t._outOfView=!0,t._needsUpdate=!1;return}t._needsUpdate=!0,t._outOfView=!1}else if(t._isPointLight)o.center=i.positionWC,o.radius=t._pointLightRadius,t._outOfView=e.cullingVolume.computeVisibility(o)===yn.OUTSIDE,t._needsUpdate=!t._outOfView&&!t._boundingSphere.equals(o),Ft.clone(o,t._boundingSphere);else{let a=i.frustum.far/2,s=p.add(i.positionWC,p.multiplyByScalar(i.directionWC,a,xyt),xyt);o.center=s,o.radius=a,t._outOfView=e.cullingVolume.computeVisibility(o)===yn.OUTSIDE,t._needsUpdate=!t._outOfView&&!t._boundingSphere.equals(o),Ft.clone(o,t._boundingSphere)}}function HBe(t,e){let n=e.camera,i=t._lightCamera,o=t._sceneCamera,a=t._shadowMapCamera;t._cascadesEnabled?p.clone(i.directionWC,a.directionWC):t._isPointLight?p.clone(i.positionWC,a.positionWC):a.clone(i);let s=t._lightDirectionEC;L.multiplyByPointAsVector(n.viewMatrix,a.directionWC,s),p.normalize(s,s),p.negate(s,s),L.multiplyByPoint(n.viewMatrix,a.positionWC,t._lightPositionEC),t._lightPositionEC.w=t._pointLightRadius;let l,r;t._fitNearFar?(l=Math.min(e.shadowState.nearPlane,t.maximumDistance),r=Math.min(e.shadowState.farPlane,t.maximumDistance),r=Math.max(r,l+1)):(l=n.frustum.near,r=t.maximumDistance),t._sceneCamera=Aa.clone(n,o),n.frustum.clone(t._sceneCamera.frustum),t._sceneCamera.frustum.near=l,t._sceneCamera.frustum.far=r,t._distance=r-l,OBe(t,e),!t._outOfViewPrevious&&t._outOfView&&(t._needsUpdate=!0),t._outOfViewPrevious=t._outOfView}Ob.prototype.update=function(t){if(HBe(this,t),this._needsUpdate)if(fBe(this,t.context),this._isPointLight&&MBe(this,t),this._cascadesEnabled&&(xBe(this,t),this._numberOfCascades>1&&BBe(this,t)),this._isPointLight)this._shadowMapCullingVolume=Jl.fromBoundingSphere(this._boundingSphere);else{let e=this._shadowMapCamera,n=e.positionWC,i=e.directionWC,o=e.upWC;this._shadowMapCullingVolume=e.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(e)}if(this._passes.length===1){let e=this._sceneCamera.inverseViewMatrix;L.multiply(this._shadowMapCamera.getViewProjection(),e,this._shadowMapMatrix)}this.debugShow&&EBe(this,t)};Ob.prototype.updatePass=function(t,e){Jyt(this,t,e)};var wBe=new K;function Dyt(t,e,n){let i=t._isPointLight?t._pointBias:n?t._terrainBias:t._primitiveBias,o={shadowMap_texture:function(){return t._shadowMapTexture},shadowMap_textureCube:function(){return t._shadowMapTexture},shadowMap_matrix:function(){return t._shadowMapMatrix},shadowMap_cascadeSplits:function(){return t._cascadeSplits},shadowMap_cascadeMatrices:function(){return t._cascadeMatrices},shadowMap_lightDirectionEC:function(){return t._lightDirectionEC},shadowMap_lightPositionEC:function(){return t._lightPositionEC},shadowMap_cascadeDistances:function(){return t._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let a=wBe;return a.x=1/t._textureSize.x,a.y=1/t._textureSize.y,Rt.fromElements(a.x,a.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return Rt.fromElements(i.normalOffsetScale,t._distance,t.maximumDistance,t._darkness,this.combinedUniforms2)},combinedUniforms1:new Rt,combinedUniforms2:new Rt};return ze(e,o,!1)}function PBe(t,e,n,i,o,a){let s,l,r;if(c(a)&&(s=a.shaderProgram,l=a.renderState,r=a.uniformMap),a=Ee.shallowClone(n,a),a.castShadows=!0,a.receiveShadows=!1,!c(s)||o!==n.shaderProgram.id||e){let d=n.shaderProgram,m=n.pass===Pt.GLOBE,h=n.pass!==Pt.TRANSLUCENT,Z=t._isPointLight,b=t._usesDepthTexture,u=Db.getShadowCastShaderKeyword(Z,m,b,h);if(s=i.shaderCache.getDerivedShaderProgram(d,u),!c(s)){let U=d.vertexShaderSource,G=d.fragmentShaderSource,A=Db.createShadowCastVertexShader(U,Z,m),T=Db.createShadowCastFragmentShader(G,Z,b,h);s=i.shaderCache.createDerivedShaderProgram(d,u,{vertexShaderSource:A,fragmentShaderSource:T,attributeLocations:d._attributeLocations})}l=t._primitiveRenderState,Z?l=t._pointRenderState:m&&(l=t._terrainRenderState),n.renderState.cull.enabled||(l=be(l,!1),l.cull=be(l.cull,!1),l.cull.enabled=!1,l=he.fromCache(l)),r=Dyt(t,n.uniformMap,m)}return a.shaderProgram=s,a.renderState=l,a.uniformMap=r,a}Ob.createReceiveDerivedCommand=function(t,e,n,i,o){c(o)||(o={});let a=t.length>0,s=e.shaderProgram,l=s.vertexShaderSource,r=s.fragmentShaderSource,d=e.pass===Pt.GLOBE,m=!1;if(d&&(m=e.owner.data.renderedMesh.encoding.hasVertexNormals),e.receiveShadows&&a){let h,Z;c(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,Z=o.receiveCommand.uniformMap),o.receiveCommand=Ee.shallowClone(e,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let b=o.receiveShaderCastShadows!==e.castShadows,u=o.receiveShaderProgramId!==e.shaderProgram.id;if(!c(h)||u||n||b){let F=Db.getShadowReceiveShaderKeyword(t[0],e.castShadows,d,m);if(h=i.shaderCache.getDerivedShaderProgram(s,F),!c(h)){let U=Db.createShadowReceiveVertexShader(l,d,m),G=Db.createShadowReceiveFragmentShader(r,t[0],e.castShadows,d,m);h=i.shaderCache.createDerivedShaderProgram(s,F,{vertexShaderSource:U,fragmentShaderSource:G,attributeLocations:s._attributeLocations})}Z=Dyt(t[0],e.uniformMap,d)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=Z,o.receiveShaderProgramId=e.shaderProgram.id,o.receiveShaderCastShadows=e.castShadows}return o};Ob.createCastDerivedCommand=function(t,e,n,i,o){if(c(o)||(o={}),e.castShadows){let a=o.castCommands;c(a)||(a=o.castCommands=[]);let s=o.castShaderProgramId,l=t.length;a.length=l;for(let r=0;r<l;++r)a[r]=PBe(t[r],n,e,i,s,a[r]);o.castShaderProgramId=e.shaderProgram.id}return o};Ob.prototype.isDestroyed=function(){return!1};Ob.prototype.destroy=function(){gat(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let t=0;t<this._numberOfCascades;++t)this._debugCascadeFrustums[t]=this._debugCascadeFrustums[t]&&this._debugCascadeFrustums[t].destroy();return At(this)};var fW=Ob;var pNo=R(W(),1);var O1o=R(W(),1),j_=`uniform sampler2D u_opaqueDepthTexture; +`;let i=e.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return t._shadowMapTexture},shadowMap_textureCube:function(){return t._shadowMapTexture}}});return i.pass=Pt.OVERLAY,i}function ABe(t,e){let n=e.context,i=e.context.drawingBufferWidth,o=e.context.drawingBufferHeight,a=Math.min(i,o)*.3,s=UBe;s.x=i-a,s.y=0,s.width=a,s.height=a;let l=t._debugShadowViewCommand;c(l)||(l=GBe(t,n),t._debugShadowViewCommand=l),(!c(l.renderState)||!Fe.equals(l.renderState.viewport,s))&&(l.renderState=he.fromCache({viewport:Fe.clone(s)})),e.commandList.push(t._debugShadowViewCommand)}var HR=new Array(8);HR[0]=new bt(-1,-1,-1,1);HR[1]=new bt(1,-1,-1,1);HR[2]=new bt(1,1,-1,1);HR[3]=new bt(-1,1,-1,1);HR[4]=new bt(-1,-1,1,1);HR[5]=new bt(1,-1,1,1);HR[6]=new bt(1,1,1,1);HR[7]=new bt(-1,1,1,1);var bU=new L,Eat=new Array(8);for(let t=0;t<8;++t)Eat[t]=new bt;function SBe(t,e){let n=new $e({geometry:new tu({minimum:new p(-.5,-.5,-.5),maximum:new p(.5,.5,.5)}),attributes:{color:En.fromColor(e)}}),i=new $e({geometry:new g0({radius:.5}),attributes:{color:En.fromColor(e)}});return new Wi({geometryInstances:[n,i],appearance:new jn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:t})}var TBe=[v.RED,v.GREEN,v.BLUE,v.MAGENTA],gBe=new p;function EBe(t,e){ABe(t,e);let n=t.debugFreezeFrame&&!t._debugFreezeFrame;if(t._debugFreezeFrame=t.debugFreezeFrame,t.debugFreezeFrame&&(n&&(t._debugCameraFrustum=t._debugCameraFrustum&&t._debugCameraFrustum.destroy(),t._debugCameraFrustum=new JR({camera:t._sceneCamera,color:v.CYAN,updateOnChange:!1})),t._debugCameraFrustum.update(e)),t._cascadesEnabled){if(t.debugFreezeFrame){n&&(t._debugLightFrustum=t._debugLightFrustum&&t._debugLightFrustum.destroy(),t._debugLightFrustum=new JR({camera:t._shadowMapCamera,color:v.YELLOW,updateOnChange:!1})),t._debugLightFrustum.update(e);for(let i=0;i<t._numberOfCascades;++i)n&&(t._debugCascadeFrustums[i]=t._debugCascadeFrustums[i]&&t._debugCascadeFrustums[i].destroy(),t._debugCascadeFrustums[i]=new JR({camera:t._passes[i].camera,color:TBe[i],updateOnChange:!1})),t._debugCascadeFrustums[i].update(e)}}else if(t._isPointLight){if(!c(t._debugLightFrustum)||t._needsUpdate){let i=t._shadowMapCamera.positionWC,o=wt.IDENTITY,a=t._pointLightRadius*2,s=p.fromElements(a,a,a,gBe),l=L.fromTranslationQuaternionRotationScale(i,o,s,bU);t._debugLightFrustum=t._debugLightFrustum&&t._debugLightFrustum.destroy(),t._debugLightFrustum=SBe(l,v.YELLOW)}t._debugLightFrustum.update(e)}else(!c(t._debugLightFrustum)||t._needsUpdate)&&(t._debugLightFrustum=new JR({camera:t._shadowMapCamera,color:v.YELLOW,updateOnChange:!1})),t._debugLightFrustum.update(e)}function sj(){this.viewMatrix=new L,this.inverseViewMatrix=new L,this.frustum=void 0,this.positionCartographic=new gt,this.positionWC=new p,this.directionWC=p.clone(p.UNIT_Z),this.upWC=p.clone(p.UNIT_Y),this.rightWC=p.clone(p.UNIT_X),this.viewProjectionMatrix=new L}sj.prototype.clone=function(t){L.clone(t.viewMatrix,this.viewMatrix),L.clone(t.inverseViewMatrix,this.inverseViewMatrix),this.frustum=t.frustum.clone(this.frustum),gt.clone(t.positionCartographic,this.positionCartographic),p.clone(t.positionWC,this.positionWC),p.clone(t.directionWC,this.directionWC),p.clone(t.upWC,this.upWC),p.clone(t.rightWC,this.rightWC)};var CBe=new L(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);sj.prototype.getViewProjection=function(){let t=this.viewMatrix,e=this.frustum.projectionMatrix;return L.multiply(e,t,this.viewProjectionMatrix),L.multiply(CBe,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var IBe=new Array(5),NBe=new Io,yBe=new Array(4),Lyt=new p,Myt=new p;function BBe(t,e){let n=t._shadowMapCamera,i=t._sceneCamera,o=i.frustum.near,a=i.frustum.far,s=t._numberOfCascades,l,r=a-o,d=a/o,m=.9,h=!1;e.shadowState.closestObjectSize<200&&(h=!0,m=.9);let u=yBe,R=IBe;for(R[0]=o,R[s]=a,l=0;l<s;++l){let M=(l+1)/s,Z=o*Math.pow(d,M),E=o+r*M,I=k.lerp(E,Z,m);R[l+1]=I,u[l]=I-R[l]}if(h){for(l=0;l<s;++l)u[l]=Math.min(u[l],t._maximumCascadeDistances[l]);let M=R[0];for(l=0;l<s-1;++l)M+=u[l],R[l+1]=M}bt.unpack(R,0,t._cascadeSplits[0]),bt.unpack(R,1,t._cascadeSplits[1]),bt.unpack(u,0,t._cascadeDistances);let V=n.frustum,F=V.left,U=V.right,G=V.bottom,A=V.top,S=V.near,g=V.far,C=n.positionWC,y=n.directionWC,Y=n.upWC,Q=i.frustum.clone(NBe),J=n.getViewProjection();for(l=0;l<s;++l){Q.near=R[l],Q.far=R[l+1];let M=L.multiply(Q.projectionMatrix,i.viewMatrix,bU),Z=L.inverse(M,bU),E=L.multiply(J,Z,bU),I=p.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Lyt),B=p.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Myt);for(let z=0;z<8;++z){let H=bt.clone(HR[z],Eat[z]);L.multiplyByVector(E,H,H),p.divideByScalar(H,H.w,H),p.minimumByComponent(H,I,I),p.maximumByComponent(H,B,B)}I.x=Math.max(I.x,0),I.y=Math.max(I.y,0),I.z=0,B.x=Math.min(B.x,1),B.y=Math.min(B.y,1),B.z=Math.min(B.z,1);let X=t._passes[l],_=X.camera;_.clone(n);let P=_.frustum;P.left=F+I.x*(U-F),P.right=F+B.x*(U-F),P.bottom=G+I.y*(A-G),P.top=G+B.y*(A-G),P.near=S+I.z*(g-S),P.far=S+B.z*(g-S),X.cullingVolume=_.frustum.computeCullingVolume(C,y,Y);let w=t._cascadeMatrices[l];L.multiply(_.getViewProjection(),i.inverseViewMatrix,w),L.multiply(X.textureOffsets,w,w)}}var QBe=new L,kBe=new p,YBe=new p,Yyt=new p;function xBe(t,e){let n=t._shadowMapCamera,i=t._sceneCamera,o=L.multiply(i.frustum.projectionMatrix,i.viewMatrix,bU),a=L.inverse(o,bU),s=n.directionWC,l=i.directionWC;p.equalsEpsilon(s,l,k.EPSILON10)&&(l=i.upWC);let r=p.cross(s,l,kBe);l=p.cross(r,s,YBe),p.normalize(l,l),p.normalize(r,r);let d=p.fromElements(0,0,0,Yyt),m=L.computeView(d,s,l,r,QBe),h=L.multiply(m,a,bU),u=p.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Lyt),R=p.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Myt);for(let g=0;g<8;++g){let C=bt.clone(HR[g],Eat[g]);L.multiplyByVector(h,C,C),p.divideByScalar(C,C.w,C),p.minimumByComponent(C,u,u),p.maximumByComponent(C,R,R)}R.z+=1e3,u.z-=10;let V=Yyt;V.x=-(.5*(u.x+R.x)),V.y=-(.5*(u.y+R.y)),V.z=-R.z;let F=L.fromTranslation(V,bU);m=L.multiply(F,m,m);let U=.5*(R.x-u.x),G=.5*(R.y-u.y),A=R.z-u.z,S=n.frustum;S.left=-U,S.right=U,S.bottom=-G,S.top=G,S.near=.01,S.far=A,L.clone(m,n.viewMatrix),L.inverse(m,n.inverseViewMatrix),L.getTranslation(n.inverseViewMatrix,n.positionWC),e.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),p.clone(s,n.directionWC),p.clone(l,n.upWC),p.clone(r,n.rightWC)}var XBe=[new p(-1,0,0),new p(0,-1,0),new p(0,0,-1),new p(1,0,0),new p(0,1,0),new p(0,0,1)],JBe=[new p(0,-1,0),new p(0,0,-1),new p(0,-1,0),new p(0,-1,0),new p(0,0,1),new p(0,-1,0)],LBe=[new p(0,0,1),new p(1,0,0),new p(-1,0,0),new p(0,0,-1),new p(1,0,0),new p(1,0,0)];function MBe(t,e){let n=new Io;n.fov=k.PI_OVER_TWO,n.near=1,n.far=t._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=t._passes[i].camera;o.positionWC=t._shadowMapCamera.positionWC,o.positionCartographic=e.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=XBe[i],o.upWC=JBe[i],o.rightWC=LBe[i],L.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),L.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var _Be=new p,DBe=new p,_yt=new Ft,xyt=_yt.center;function OBe(t,e){let n=t._sceneCamera,i=t._shadowMapCamera,o=_yt;if(t._cascadesEnabled){if(n.frustum.near>=t.maximumDistance){t._outOfView=!0,t._needsUpdate=!1;return}let a=e.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,_Be),s=p.negate(i.directionWC,DBe),l=p.dot(a,s);if(t.fadingEnabled){let r=k.clamp(l/.1,0,1);t._darkness=k.lerp(1,t.darkness,r)}else t._darkness=t.darkness;if(l<0){t._outOfView=!0,t._needsUpdate=!1;return}t._needsUpdate=!0,t._outOfView=!1}else if(t._isPointLight)o.center=i.positionWC,o.radius=t._pointLightRadius,t._outOfView=e.cullingVolume.computeVisibility(o)===yn.OUTSIDE,t._needsUpdate=!t._outOfView&&!t._boundingSphere.equals(o),Ft.clone(o,t._boundingSphere);else{let a=i.frustum.far/2,s=p.add(i.positionWC,p.multiplyByScalar(i.directionWC,a,xyt),xyt);o.center=s,o.radius=a,t._outOfView=e.cullingVolume.computeVisibility(o)===yn.OUTSIDE,t._needsUpdate=!t._outOfView&&!t._boundingSphere.equals(o),Ft.clone(o,t._boundingSphere)}}function HBe(t,e){let n=e.camera,i=t._lightCamera,o=t._sceneCamera,a=t._shadowMapCamera;t._cascadesEnabled?p.clone(i.directionWC,a.directionWC):t._isPointLight?p.clone(i.positionWC,a.positionWC):a.clone(i);let s=t._lightDirectionEC;L.multiplyByPointAsVector(n.viewMatrix,a.directionWC,s),p.normalize(s,s),p.negate(s,s),L.multiplyByPoint(n.viewMatrix,a.positionWC,t._lightPositionEC),t._lightPositionEC.w=t._pointLightRadius;let l,r;t._fitNearFar?(l=Math.min(e.shadowState.nearPlane,t.maximumDistance),r=Math.min(e.shadowState.farPlane,t.maximumDistance),r=Math.max(r,l+1)):(l=n.frustum.near,r=t.maximumDistance),t._sceneCamera=Aa.clone(n,o),n.frustum.clone(t._sceneCamera.frustum),t._sceneCamera.frustum.near=l,t._sceneCamera.frustum.far=r,t._distance=r-l,OBe(t,e),!t._outOfViewPrevious&&t._outOfView&&(t._needsUpdate=!0),t._outOfViewPrevious=t._outOfView}OR.prototype.update=function(t){if(HBe(this,t),this._needsUpdate)if(fBe(this,t.context),this._isPointLight&&MBe(this,t),this._cascadesEnabled&&(xBe(this,t),this._numberOfCascades>1&&BBe(this,t)),this._isPointLight)this._shadowMapCullingVolume=Jl.fromBoundingSphere(this._boundingSphere);else{let e=this._shadowMapCamera,n=e.positionWC,i=e.directionWC,o=e.upWC;this._shadowMapCullingVolume=e.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(e)}if(this._passes.length===1){let e=this._sceneCamera.inverseViewMatrix;L.multiply(this._shadowMapCamera.getViewProjection(),e,this._shadowMapMatrix)}this.debugShow&&EBe(this,t)};OR.prototype.updatePass=function(t,e){Jyt(this,t,e)};var wBe=new K;function Dyt(t,e,n){let i=t._isPointLight?t._pointBias:n?t._terrainBias:t._primitiveBias,o={shadowMap_texture:function(){return t._shadowMapTexture},shadowMap_textureCube:function(){return t._shadowMapTexture},shadowMap_matrix:function(){return t._shadowMapMatrix},shadowMap_cascadeSplits:function(){return t._cascadeSplits},shadowMap_cascadeMatrices:function(){return t._cascadeMatrices},shadowMap_lightDirectionEC:function(){return t._lightDirectionEC},shadowMap_lightPositionEC:function(){return t._lightPositionEC},shadowMap_cascadeDistances:function(){return t._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let a=wBe;return a.x=1/t._textureSize.x,a.y=1/t._textureSize.y,bt.fromElements(a.x,a.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return bt.fromElements(i.normalOffsetScale,t._distance,t.maximumDistance,t._darkness,this.combinedUniforms2)},combinedUniforms1:new bt,combinedUniforms2:new bt};return ze(e,o,!1)}function PBe(t,e,n,i,o,a){let s,l,r;if(c(a)&&(s=a.shaderProgram,l=a.renderState,r=a.uniformMap),a=Ee.shallowClone(n,a),a.castShadows=!0,a.receiveShadows=!1,!c(s)||o!==n.shaderProgram.id||e){let d=n.shaderProgram,m=n.pass===Pt.GLOBE,h=n.pass!==Pt.TRANSLUCENT,u=t._isPointLight,R=t._usesDepthTexture,V=DR.getShadowCastShaderKeyword(u,m,R,h);if(s=i.shaderCache.getDerivedShaderProgram(d,V),!c(s)){let U=d.vertexShaderSource,G=d.fragmentShaderSource,A=DR.createShadowCastVertexShader(U,u,m),S=DR.createShadowCastFragmentShader(G,u,R,h);s=i.shaderCache.createDerivedShaderProgram(d,V,{vertexShaderSource:A,fragmentShaderSource:S,attributeLocations:d._attributeLocations})}l=t._primitiveRenderState,u?l=t._pointRenderState:m&&(l=t._terrainRenderState),n.renderState.cull.enabled||(l=Re(l,!1),l.cull=Re(l.cull,!1),l.cull.enabled=!1,l=he.fromCache(l)),r=Dyt(t,n.uniformMap,m)}return a.shaderProgram=s,a.renderState=l,a.uniformMap=r,a}OR.createReceiveDerivedCommand=function(t,e,n,i,o){c(o)||(o={});let a=t.length>0,s=e.shaderProgram,l=s.vertexShaderSource,r=s.fragmentShaderSource,d=e.pass===Pt.GLOBE,m=!1;if(d&&(m=e.owner.data.renderedMesh.encoding.hasVertexNormals),e.receiveShadows&&a){let h,u;c(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,u=o.receiveCommand.uniformMap),o.receiveCommand=Ee.shallowClone(e,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let R=o.receiveShaderCastShadows!==e.castShadows,V=o.receiveShaderProgramId!==e.shaderProgram.id;if(!c(h)||V||n||R){let F=DR.getShadowReceiveShaderKeyword(t[0],e.castShadows,d,m);if(h=i.shaderCache.getDerivedShaderProgram(s,F),!c(h)){let U=DR.createShadowReceiveVertexShader(l,d,m),G=DR.createShadowReceiveFragmentShader(r,t[0],e.castShadows,d,m);h=i.shaderCache.createDerivedShaderProgram(s,F,{vertexShaderSource:U,fragmentShaderSource:G,attributeLocations:s._attributeLocations})}u=Dyt(t[0],e.uniformMap,d)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=u,o.receiveShaderProgramId=e.shaderProgram.id,o.receiveShaderCastShadows=e.castShadows}return o};OR.createCastDerivedCommand=function(t,e,n,i,o){if(c(o)||(o={}),e.castShadows){let a=o.castCommands;c(a)||(a=o.castCommands=[]);let s=o.castShaderProgramId,l=t.length;a.length=l;for(let r=0;r<l;++r)a[r]=PBe(t[r],n,e,i,s,a[r]);o.castShaderProgramId=e.shaderProgram.id}return o};OR.prototype.isDestroyed=function(){return!1};OR.prototype.destroy=function(){gat(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let t=0;t<this._numberOfCascades;++t)this._debugCascadeFrustums[t]=this._debugCascadeFrustums[t]&&this._debugCascadeFrustums[t].destroy();return At(this)};var fW=OR;var pNo=b(W(),1);var O1o=b(W(),1),j_=`uniform sampler2D u_opaqueDepthTexture; uniform sampler2D u_translucentDepthTexture; in vec2 v_textureCoordinates; @@ -11174,7 +11174,7 @@ void main() translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); out_FragColor = czm_packDepth(translucentDepth); } -`;var w1o=R(W(),1),GS=`uniform sampler2D colorTexture; +`;var w1o=b(W(),1),GT=`uniform sampler2D colorTexture; #ifdef DEBUG_SHOW_DEPTH uniform sampler2D u_packedTranslucentDepth; @@ -11205,7 +11205,7 @@ void main() out_FragColor = color; #endif } -`;var vBe=!1;function WU(t){this._drawClassificationFBO=new Ro({createDepthAttachments:!1}),this._accumulationFBO=new Ro({createDepthAttachments:!1}),this._packFBO=new Ro,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new ao({color:new v(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new ao({depth:1,stencil:0,owner:this}),this._supported=t.depthTexture,this._viewport=new Fe,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(WU.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function Oyt(t){t._textureToComposite=void 0,t._translucentDepthStencilTexture=t._translucentDepthStencilTexture&&!t._translucentDepthStencilTexture.isDestroyed()&&t._translucentDepthStencilTexture.destroy()}function Hyt(t){t._drawClassificationFBO.destroy(),t._accumulationFBO.destroy(),t._packFBO.destroy()}function KBe(t,e,n,i){Oyt(t),t._translucentDepthStencilTexture=new hn({context:e,width:n,height:i,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8,sampler:Hn.NEAREST})}function zBe(t,e,n,i){Hyt(t),t._drawClassificationFBO.setDepthStencilTexture(t._translucentDepthStencilTexture),t._drawClassificationFBO.update(e,n,i),t._accumulationFBO.setDepthStencilTexture(t._translucentDepthStencilTexture),t._accumulationFBO.update(e,n,i),t._packFBO.update(e,n,i)}function jBe(t,e,n,i){if(!t.isSupported())return;t._opaqueDepthStencilTexture=i;let o=t._opaqueDepthStencilTexture.width,a=t._opaqueDepthStencilTexture.height;t._drawClassificationFBO.isDirty(o,a)&&(KBe(t,e,o,a),zBe(t,e,o,a));let s,l;if(c(t._packDepthCommand)||(s=new Ve({sources:[j_]}),l={u_opaqueDepthTexture:function(){return t._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return t._translucentDepthStencilTexture}},t._packDepthCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t})),!c(t._compositeCommand)){s=new Ve({sources:[GS]}),l={colorTexture:function(){return t._textureToComposite}},vBe&&(s.defines=["DEBUG_SHOW_DEPTH"],l.u_packedTranslucentDepth=function(){return t._packFBO.getColorTexture()}),t._compositeCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t});let m=t._compositeCommand,h=m.shaderProgram,Z=e.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new Ve({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),b=Ee.shallowClone(m);b.shaderProgram=Z,m.derivedCommands.pick=b}c(t._copyCommand)||(s=new Ve({sources:[GS]}),l={colorTexture:function(){return t._drawClassificationFBO.getColorTexture()}},t._copyCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t})),c(t._accumulateCommand)||(s=new Ve({sources:[GS]}),l={colorTexture:function(){return t._drawClassificationFBO.getColorTexture()}},t._accumulateCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t})),t._viewport.width=o,t._viewport.height=a;let r=!Fe.equals(t._viewport,n.viewport),d=r!==t._useScissorTest;t._useScissorTest=r,Fe.equals(t._scissorRectangle,n.viewport)||(t._scissorRectangle=Fe.clone(n.viewport,t._scissorRectangle),d=!0),(!c(t._rsDepth)||!Fe.equals(t._viewport,t._rsDepth.viewport)||d)&&(t._rsDepth=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle}})),c(t._packDepthCommand)&&(t._packDepthCommand.renderState=t._rsDepth),(!c(t._rsAccumulate)||!Fe.equals(t._viewport,t._rsAccumulate.viewport)||d)&&(t._rsAccumulate=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Li.EQUAL,reference:gn.CESIUM_3D_TILE_MASK}})),c(t._accumulateCommand)&&(t._accumulateCommand.renderState=t._rsAccumulate),(!c(t._rsComp)||!Fe.equals(t._viewport,t._rsComp.viewport)||d)&&(t._rsComp=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},blending:Pn.ALPHA_BLEND})),c(t._compositeCommand)&&(t._compositeCommand.renderState=t._rsComp,t._compositeCommand.derivedCommands.pick.renderState=t._rsComp)}WU.prototype.executeTranslucentCommands=function(t,e,n,i,o){let a=i.length,s,l,r=t.frameState.useLogDepth,d=t.context,m=n.framebuffer;for(l=0;l<a;++l)if(s=i[l],s=r?s.derivedCommands.logDepth.command:s,s.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}if(this._hasTranslucentDepth){for(jBe(this,d,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(d,n),l=0;l<a;++l){if(s=i[l],s=r?s.derivedCommands.logDepth.command:s,!s.depthForTranslucentClassification)continue;let h=s.derivedCommands.depth.depthOnlyCommand;e(h,t,d,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(d,n)),n.framebuffer=m}};WU.prototype.executeClassificationCommands=function(t,e,n,i){if(!this._hasTranslucentDepth)return;let o=t.context,a=o.uniformState,s=n.framebuffer;this._frustumsDrawn===2&&(n.framebuffer=this._accumulationFBO.framebuffer,this._copyCommand.execute(o,n)),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION);let l=a.globeDepthTexture;a.globeDepthTexture=this._packFBO.getColorTexture();let r=i.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION],d=i.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION];for(let m=0;m<d;++m)e(r[m],t,o,n);a.globeDepthTexture=l,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};WU.prototype.execute=function(t,e){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(t.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(t.context,e),qBe(this,t,e)};function qBe(t,e,n){if(!t._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=t._drawClassificationFBO.framebuffer,t._clearColorCommand.execute(e._context,n),n.framebuffer=i,t._frustumsDrawn>1&&(n.framebuffer=t._accumulationFBO.framebuffer,t._clearColorCommand.execute(e._context,n)),t._hasTranslucentDepth=!1,t._frustumsDrawn=0}WU.prototype.isSupported=function(){return this._supported};WU.prototype.isDestroyed=function(){return!1};WU.prototype.destroy=function(){return Oyt(this),Hyt(this),c(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),c(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),At(this)};var q_=WU;function $Be(){this.command=void 0,this.near=void 0,this.far=void 0}function lj(t,e,n){let i=t.context,o;i.depthTexture&&(o=new D_);let a;t._useOIT&&i.depthTexture&&(a=new w_(i));let s=new Md(i);s.viewport=Fe.clone(n),this.camera=e,this._cameraClone=Aa.clone(e),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new z_(i),this.pickDepthFramebuffer=new v_,this.sceneFramebuffer=new FS,this.globeDepth=o,this.globeTranslucencyFramebuffer=new O_,this.oit=a,this.translucentTileClassification=new q_(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var wyt=new p,Pyt=new p;function tQe(t,e){let n=Math.max(Math.abs(t.x),Math.abs(e.x)),i=Math.max(Math.abs(t.y),Math.abs(e.y)),o=Math.max(Math.abs(t.z),Math.abs(e.z));return Math.max(Math.max(n,i),o)}function eQe(t,e,n){let i=1/Math.max(1,tQe(t.position,e.position));return p.multiplyByScalar(t.position,i,wyt),p.multiplyByScalar(e.position,i,Pyt),p.equalsEpsilon(wyt,Pyt,n)&&p.equalsEpsilon(t.direction,e.direction,n)&&p.equalsEpsilon(t.up,e.up,n)&&p.equalsEpsilon(t.right,e.right,n)&&L.equalsEpsilon(t.transform,e.transform,n)&&t.frustum.equalsEpsilon(e.frustum,n)}lj.prototype.checkForCameraUpdates=function(t){let e=this.camera,n=this._cameraClone;return eQe(e,n,k.EPSILON15)?(this._cameraStartFired&&Oi()-this._cameraMovedTime>t.cameraEventWaitTime&&(e.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(e.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Oi(),Aa.clone(e,n),!0)};function nQe(t,e,n,i){let o=e.frameState,a=o.camera,s=o.useLogDepth?e.logarithmicDepthFarToNearRatio:e.farToNearRatio,l=e.mode===ut.SCENE2D,r=e.nearToFarDistance2D;i*=1+k.EPSILON2,n=Math.min(Math.max(n,a.frustum.near),a.frustum.far),i=Math.max(Math.min(i,a.frustum.far),n);let d;l?(i=Math.min(i,a.position.z+e.nearToFarDistance2D),n=Math.min(n,i),d=Math.ceil(Math.max(1,i-n)/e.nearToFarDistance2D)):d=Math.ceil(Math.log(i/n)/Math.log(s));let m=t.frustumCommandsList;d||(d=0),m.length=d;for(let h=0;h<d;++h){let Z,b;l?(Z=Math.min(i-r,n+h*r),b=Math.min(i,Z+r)):(Z=Math.max(n,Math.pow(s,h)*n),b=Math.min(i,s*Z));let u=m[h];c(u)?(u.near=Z,u.far=b):u=m[h]=new __(Z,b)}}function iQe(t,e,n,i,o){e.debugShowFrustums&&(n.debugOverlappingFrustums=0);let a=t.frustumCommandsList,s=a.length;for(let l=0;l<s;++l){let r=a[l],d=r.near,m=r.far;if(i>m)continue;if(o<d)break;let h=n.pass,Z=r.indices[h]++;if(r.commands[h][Z]=n,e.debugShowFrustums&&(n.debugOverlappingFrustums|=1<<l),n.executeInClosestFrustum)break}if(e.debugShowFrustums){let l=t.debugFrustumStatistics.commandsInFrustums;l[n.debugOverlappingFrustums]=c(l[n.debugOverlappingFrustums])?l[n.debugOverlappingFrustums]+1:1,++t.debugFrustumStatistics.totalCommands}e.updateDerivedCommands(n)}var vyt=new Jl,oQe=new hd;lj.prototype.createPotentiallyVisibleSet=function(t){let e=t.frameState,n=e.camera,i=n.directionWC,o=n.positionWC,a=t._computeCommandList,s=t._overlayCommandList,l=e.commandList;t.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let r=this.frustumCommandsList,d=r.length,m=Pt.NUMBER_OF_PASSES;for(let E=0;E<d;++E)for(let I=0;I<m;++I)r[E].indices[I]=0;a.length=0,s.length=0;let h=this._commandExtents,Z=h.length,b=0,u=+Number.MAX_VALUE,F=-Number.MAX_VALUE,U=e.shadowState.shadowsEnabled,G=+Number.MAX_VALUE,A=-Number.MAX_VALUE,T=Number.MAX_VALUE,g=e.mode===ut.SCENE3D?e.occluder:void 0,C=e.cullingVolume,y=vyt.planes;for(let E=0;E<5;++E)y[E]=C.planes[E];C=vyt;let Y=l.length;for(let E=0;E<Y;++E){let I=l[E],B=I.pass;if(B===Pt.COMPUTE)a.push(I);else if(B===Pt.OVERLAY)s.push(I);else{let X,_,P=I.boundingVolume;if(c(P)){if(!t.isVisible(I,C,g))continue;let z=P.computePlaneDistances(o,i,oQe);if(X=z.start,_=z.stop,u=Math.min(u,X),F=Math.max(F,_),U&&I.receiveShadows&&X<fW.MAXIMUM_DISTANCE&&!(B===Pt.GLOBE&&X<-100&&_>100)){let H=_-X;B!==Pt.GLOBE&&X<100&&(T=Math.min(T,H)),G=Math.min(G,X),A=Math.max(A,_)}}else I instanceof ao?(X=n.frustum.near,_=n.frustum.far):(X=n.frustum.near,_=n.frustum.far,u=Math.min(u,X),F=Math.max(F,_));let w=h[b];c(w)||(w=h[b]=new $Be),w.command=I,w.near=X,w.far=_,b++}}U&&(G=Math.min(Math.max(G,n.frustum.near),n.frustum.far),A=Math.max(Math.min(A,n.frustum.far),G)),U&&(e.shadowState.nearPlane=G,e.shadowState.farPlane=A,e.shadowState.closestObjectSize=T),nQe(this,t,u,F);let Q,J;for(Q=0;Q<b;Q++)J=h[Q],iQe(this,t,J.command,J.near,J.far);if(b<Z)for(Q=b;Q<Z&&(J=h[Q],!!c(J.command));Q++)J.command=void 0;let M=r.length,V=e.frustumSplits;V.length=M+1;for(let E=0;E<M;++E)V[E]=r[E].near,E===M-1&&(V[E+1]=r[E].far)};lj.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let t,e=this.pickDepths,n=e.length;for(t=0;t<n;++t)e[t].destroy()};var AS=lj;var zyt=.1,aQe=new Eu({pass:ns.MOST_DETAILED_PRELOAD}),sQe=new Eu({pass:ns.MOST_DETAILED_PICK}),dj=new Eu({pass:ns.PICK});function nd(t){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let e=new Fe(0,0,1,1),n=new Aa(t);n.frustum=new wn({width:zyt,aspectRatio:1,near:.1}),this._pickOffscreenView=new AS(t,n,e)}nd.prototype.update=function(){this._pickPositionCacheDirty=!0};nd.prototype.getPickDepth=function(t,e){let n=t.view.pickDepths,i=n[e];return c(i)||(i=new M_,n[e]=i),i};var lQe=new el,rQe=new p,rj=new p,dQe=new K,cQe=new L;function mQe(t,e,n,i,o){let a=t.camera,s=a.frustum,l=s.offCenterFrustum;c(l)&&(s=l);let r=2*(e.x-o.x)/o.width-1;r*=(s.right-s.left)*.5;let d=2*(o.height-e.y-o.y)/o.height-1;d*=(s.top-s.bottom)*.5;let m=L.clone(a.transform,cQe);a._setTransform(L.IDENTITY);let h=p.clone(a.position,rQe);p.multiplyByScalar(a.right,r,rj),p.add(rj,h,h),p.multiplyByScalar(a.up,d,rj),p.add(rj,h,h),a._setTransform(m),t.mode===ut.SCENE2D&&p.fromElements(h.z,h.x,h.y,h);let Z=s.getPixelDimensions(o.width,o.height,1,1,dQe),b=lQe;return b.right=Z.x*.5,b.left=-b.right,b.top=Z.y*.5,b.bottom=-b.top,b.near=s.near,b.far=s.far,b.computeCullingVolume(h,a.directionWC,a.upWC)}var hQe=new em,pQe=new K;function uQe(t,e,n,i,o){let a=t.camera,s=a.frustum,l=s.near,r=Math.tan(s.fovy*.5),d=s.aspectRatio*r,m=2*(e.x-o.x)/o.width-1,h=2*(o.height-e.y-o.y)/o.height-1,Z=m*l*d,b=h*l*r,u=s.getPixelDimensions(o.width,o.height,1,1,pQe),F=u.x*n*.5,U=u.y*i*.5,G=hQe;return G.top=b+U,G.bottom=b-U,G.right=Z+F,G.left=Z-F,G.near=l,G.far=s.far,G.computeCullingVolume(a.positionWC,a.directionWC,a.upWC)}function Cat(t,e,n,i,o){let a=t.camera.frustum;return a instanceof wn||a instanceof el?mQe(t,e,n,i,o):uQe(t,e,n,i,o)}var dV=3,FW=3,hc=new Fe(0,0,dV,FW),Iat=new K,cj=new v(0,0,0,0);nd.prototype.pick=function(t,e,n,i){dV=f(n,3),FW=f(i,dV);let{context:o,frameState:a,defaultView:s}=t,{viewport:l,pickFramebuffer:r}=s;t.view=s,l.x=0,l.y=0,l.width=o.drawingBufferWidth,l.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Fe.clone(l,d.viewport);let m=qo.transformWindowToDrawingBuffer(t,e,Iat);t.jobScheduler.disableThisFrame(),t.updateFrameState(),a.cullingVolume=Cat(t,m,dV,FW,l),a.invertClassification=!1,a.passes.pick=!0,a.tilesetPassState=dj,o.uniformState.update(a),t.updateEnvironment(),hc.x=m.x-(dV-1)*.5,hc.y=t.drawingBufferHeight-m.y-(FW-1)*.5,hc.width=dV,hc.height=FW,d=r.begin(hc,l),t.updateAndExecuteCommands(d,cj),t.resolveFramebuffers(d);let h=r.end(hc);return o.endFrame(),h};nd.prototype.pickVoxelCoordinate=function(t,e,n,i){dV=f(n,3),FW=f(i,dV);let{context:o,frameState:a,defaultView:s}=t,{viewport:l,pickFramebuffer:r}=s;t.view=s,l.x=0,l.y=0,l.width=o.drawingBufferWidth,l.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Fe.clone(l,d.viewport);let m=qo.transformWindowToDrawingBuffer(t,e,Iat);t.jobScheduler.disableThisFrame(),t.updateFrameState(),a.cullingVolume=Cat(t,m,dV,FW,l),a.invertClassification=!1,a.passes.pickVoxel=!0,a.tilesetPassState=dj,o.uniformState.update(a),t.updateEnvironment(),hc.x=m.x-(dV-1)*.5,hc.y=t.drawingBufferHeight-m.y-(FW-1)*.5,hc.width=dV,hc.height=FW,d=r.begin(hc,l),t.updateAndExecuteCommands(d,cj),t.resolveFramebuffers(d);let h=r.readVoxelInfo(hc);return o.endFrame(),h};function ZQe(t,e){let{defaultView:n,context:i,frameState:o,environmentState:a}=t,{viewport:s,pickDepthFramebuffer:l}=n;t.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let r=n.passState;r.viewport=Fe.clone(s,r.viewport),t.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=Cat(t,e,1,1,s),o.tilesetPassState=dj,t.updateEnvironment(),a.renderTranslucentDepthForPick=!0,r=l.update(i,e,s),t.updateAndExecuteCommands(r,cj),t.resolveFramebuffers(r),i.endFrame()}var VQe=new Io,bQe=new em,RQe=new wn,WQe=new el;nd.prototype.pickPositionWorldCoordinates=function(t,e,n){if(!t.useDepthPicking)return;let i=e.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return p.clone(this._pickPositionCache[i],n);let{context:o,frameState:a,camera:s,defaultView:l}=t,{uniformState:r}=o;t.view=l;let d=qo.transformWindowToDrawingBuffer(t,e,Iat);t.pickTranslucentDepth?ZQe(t,d):(t.updateFrameState(),r.update(a),t.updateEnvironment()),d.y=t.drawingBufferHeight-d.y;let m;c(s.frustum.fov)?m=s.frustum.clone(VQe):c(s.frustum.infiniteProjectionMatrix)?m=s.frustum.clone(bQe):c(s.frustum.width)?m=s.frustum.clone(RQe):m=s.frustum.clone(WQe);let h=l.frustumCommandsList,Z=h.length;for(let b=0;b<Z;++b){let F=this.getPickDepth(t,b).getDepth(o,d.x,d.y);if(c(F)&&F>0&&F<1){let U=h[b],G;return t.mode===ut.SCENE2D?(G=s.position.z,s.position.z=G-U.near+1,m.far=Math.max(1,U.far-U.near),m.near=1,r.update(a),r.updateFrustum(m)):(m.near=U.near*(b!==0?t.opaqueFrustumNearOffset:1),m.far=U.far,r.updateFrustum(m)),n=qo.drawingBufferToWgs84Coordinates(t,d,F,n),t.mode===ut.SCENE2D&&(s.position.z=G,r.update(a)),this._pickPositionCache[i]=p.clone(n),n}}this._pickPositionCache[i]=void 0};var fQe=new gt;nd.prototype.pickPosition=function(t,e,n){if(n=this.pickPositionWorldCoordinates(t,e,n),c(n)&&t.mode!==ut.SCENE3D){p.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection,o=i.ellipsoid,a=i.unproject(n,fQe);o.cartographicToCartesian(a,n)}return n};function jyt(t,e){let n,i,o=[],a=[],s=[],l=[];c(t)||(t=Number.MAX_VALUE);let r=e();for(;c(r);){let d=r.object,m=r.position,h=r.exclude;if(c(m)&&!c(d)){o.push(r);break}if(!c(d)||!c(d.primitive)||!h&&(o.push(r),0>=--t))break;let Z=d.primitive,b=!1;typeof Z.getGeometryInstanceAttributes=="function"&&c(d.id)&&(i=Z.getGeometryInstanceAttributes(d.id),c(i)&&c(i.show)&&(b=!0,i.show=pi.toValue(!1,i.show),s.push(i))),d instanceof Fr&&(b=!0,d.show=!1,l.push(d)),b||(Z.show=!1,a.push(Z)),r=e()}for(n=0;n<a.length;++n)a[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=pi.toValue(!0,i.show);for(n=0;n<l.length;++n)l[n].show=!0;return o}nd.prototype.drillPick=function(t,e,n,i,o){let a=this;return jyt(n,function(){let r=a.pick(t,e,i,o);if(c(r))return{object:r,position:void 0,exclude:!1}}).map(function(r){return r.object})};var Kyt=new p,FQe=new p;function UQe(t,e,n){this.ray=t,this.width=e,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function qyt(t,e,n,i){let o=e.direction,a=p.mostOrthogonalAxis(o,Kyt),s=p.cross(o,a,Kyt),l=p.cross(o,s,FQe);return i.position=e.origin,i.direction=o,i.up=l,i.right=s,i.frustum.width=f(n,zyt),i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function GQe(t,e,n){let i=e.frameState,{ray:o,width:a,tilesets:s}=n,l=t._pickOffscreenView.camera,r=qyt(t,o,a,l),d=aQe;d.camera=l,d.cullingVolume=r;let m=!0,h=s.length;for(let Z=0;Z<h;++Z){let b=s[Z];b.show&&e.primitives.contains(b)&&(b.updateForPass(i,d),m=m&&d.ready)}return m&&n._completePick(),m}nd.prototype.updateMostDetailedRayPicks=function(t){let e=this._mostDetailedRayPicks;for(let n=0;n<e.length;++n)GQe(this,t,e[n])&&e.splice(n--,1)};function $yt(t,e,n){for(let i=0;i<t.length;++i){let o=t.get(i);o.show&&(c(o.isCesium3DTileset)?(!c(e)||e.indexOf(o)===-1)&&n.push(o):o instanceof Dm&&$yt(o,e,n))}}function mj(t,e,n,i,o,a){let s=[];if($yt(e.primitives,i,s),s.length===0)return Promise.resolve(a());let l=new UQe(n,o,s);return t._mostDetailedRayPicks.push(l),l.promise.then(function(){return a()})}function AQe(t,e){return!c(t)||!c(e)||e.length===0?!1:e.indexOf(t)>-1||e.indexOf(t.primitive)>-1||e.indexOf(t.id)>-1}function TQe(t,e,n,i,o,a,s){let{context:l,frameState:r}=e,d=l.uniformState,m=t._pickOffscreenView;e.view=m,qyt(t,n,o,m.camera),hc=Fe.clone(m.viewport,hc);let h=m.pickFramebuffer.begin(hc,m.viewport);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.invertClassification=!1,r.passes.pick=!0,r.passes.offscreen=!0,s?r.tilesetPassState=sQe:r.tilesetPassState=dj,d.update(r),e.updateEnvironment(),e.updateAndExecuteCommands(h,cj),e.resolveFramebuffers(h);let Z,b=m.pickFramebuffer.end(hc);if(e.context.depthTexture){let u=m.frustumCommandsList.length;for(let F=0;F<u;++F){let G=t.getPickDepth(e,F).getDepth(l,0,0);if(c(G)&&G>0&&G<1){let A=m.frustumCommandsList[F],T=A.near*(F!==0?e.opaqueFrustumNearOffset:1),g=A.far,C=T+G*(g-T);Z=di.getPoint(n,C);break}}}if(e.view=e.defaultView,l.endFrame(),c(b)||c(Z))return{object:b,position:Z,exclude:!c(Z)&&a||AQe(b,i)}}function tBt(t,e,n,i,o,a,s,l){return jyt(i,function(){return TQe(t,e,n,o,a,s,l)})}function O1(t,e,n,i,o,a,s){let l=tBt(t,e,n,1,i,o,a,s);if(l.length>0)return l[0]}function eBt(t,e,n,i,o,a,s,l){return tBt(t,e,n,i,o,a,s,l)}function hj(t,e){return new Promise((n,i)=>{e.then(function(o){let a=t.postRender.addEventListener(function(){a(),n(o)});t.requestRender()}).catch(function(o){i(o)})})}nd.prototype.pickFromRay=function(t,e,n,i){return O1(this,t,e,n,i,!1,!1)};nd.prototype.drillPickFromRay=function(t,e,n,i,o){return eBt(this,t,e,n,i,o,!1,!1)};nd.prototype.pickFromRayMostDetailed=function(t,e,n,i){let o=this;return e=di.clone(e),n=c(n)?n.slice():n,hj(t,mj(o,t,e,n,i,function(){return O1(o,t,e,n,i,!1,!0)}))};nd.prototype.drillPickFromRayMostDetailed=function(t,e,n,i,o){let a=this;return e=di.clone(e),i=c(i)?i.slice():i,hj(t,mj(a,t,e,i,o,function(){return eBt(a,t,e,n,i,o,!1,!0)}))};var SQe=new p,gQe=new p,EQe=new di,nBt=new gt;function Nat(t,e){let n=t.globe,i=c(n)?n.ellipsoid:t.mapProjection.ellipsoid,o=uo._defaultMaxTerrainHeight,a=i.geodeticSurfaceNormalCartographic(e,gQe),s=gt.toCartesian(e,i,SQe),l=EQe;l.origin=s,l.direction=a;let r=new di;return di.getPoint(l,o,r.origin),p.negate(a,r.direction),r}function iBt(t,e){let n=t.globe,i=c(n)?n.ellipsoid:t.mapProjection.ellipsoid,o=gt.fromCartesian(e,i,nBt);return Nat(t,o)}function oBt(t,e){let n=t.globe,i=c(n)?n.ellipsoid:t.mapProjection.ellipsoid;return gt.fromCartesian(e,i,nBt).height}function CQe(t,e,n,i,o){let a=Nat(e,n);return mj(t,e,a,i,o,function(){let s=O1(t,e,a,i,o,!0,!0);if(c(s))return oBt(e,s.position)})}function IQe(t,e,n,i,o,a){let s=iBt(e,n);return mj(t,e,s,i,o,function(){let l=O1(t,e,s,i,o,!0,!0);if(c(l))return p.clone(l.position,a)})}nd.prototype.sampleHeight=function(t,e,n,i){let o=Nat(t,e),a=O1(this,t,o,n,i,!0,!1);if(c(a))return oBt(t,a.position)};nd.prototype.clampToHeight=function(t,e,n,i,o){let a=iBt(t,e),s=O1(this,t,a,n,i,!0,!1);if(c(s))return p.clone(s.position,o)};nd.prototype.sampleHeightMostDetailed=function(t,e,n,i){n=c(n)?n.slice():n;let o=e.length,a=new Array(o);for(let s=0;s<o;++s)a[s]=CQe(this,t,e[s],n,i);return hj(t,Promise.all(a).then(function(s){let l=s.length;for(let r=0;r<l;++r)e[r].height=s[r];return e}))};nd.prototype.clampToHeightMostDetailed=function(t,e,n,i){n=c(n)?n.slice():n;let o=e.length,a=new Array(o);for(let s=0;s<o;++s)a[s]=IQe(this,t,e[s],n,i,e[s]);return hj(t,Promise.all(a).then(function(s){let l=s.length;for(let r=0;r<l;++r)e[r]=s[r];return e}))};nd.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var $_=nd;var yQo=R(W(),1);var lQo=R(W(),1);var myo=R(W(),1),t9=`uniform sampler2D colorTexture; +`;var vBe=!1;function WU(t){this._drawClassificationFBO=new bo({createDepthAttachments:!1}),this._accumulationFBO=new bo({createDepthAttachments:!1}),this._packFBO=new bo,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new ao({color:new v(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new ao({depth:1,stencil:0,owner:this}),this._supported=t.depthTexture,this._viewport=new Fe,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(WU.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function Oyt(t){t._textureToComposite=void 0,t._translucentDepthStencilTexture=t._translucentDepthStencilTexture&&!t._translucentDepthStencilTexture.isDestroyed()&&t._translucentDepthStencilTexture.destroy()}function Hyt(t){t._drawClassificationFBO.destroy(),t._accumulationFBO.destroy(),t._packFBO.destroy()}function KBe(t,e,n,i){Oyt(t),t._translucentDepthStencilTexture=new hn({context:e,width:n,height:i,pixelFormat:Ye.DEPTH_STENCIL,pixelDatatype:Ue.UNSIGNED_INT_24_8,sampler:Hn.NEAREST})}function zBe(t,e,n,i){Hyt(t),t._drawClassificationFBO.setDepthStencilTexture(t._translucentDepthStencilTexture),t._drawClassificationFBO.update(e,n,i),t._accumulationFBO.setDepthStencilTexture(t._translucentDepthStencilTexture),t._accumulationFBO.update(e,n,i),t._packFBO.update(e,n,i)}function jBe(t,e,n,i){if(!t.isSupported())return;t._opaqueDepthStencilTexture=i;let o=t._opaqueDepthStencilTexture.width,a=t._opaqueDepthStencilTexture.height;t._drawClassificationFBO.isDirty(o,a)&&(KBe(t,e,o,a),zBe(t,e,o,a));let s,l;if(c(t._packDepthCommand)||(s=new Ze({sources:[j_]}),l={u_opaqueDepthTexture:function(){return t._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return t._translucentDepthStencilTexture}},t._packDepthCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t})),!c(t._compositeCommand)){s=new Ze({sources:[GT]}),l={colorTexture:function(){return t._textureToComposite}},vBe&&(s.defines=["DEBUG_SHOW_DEPTH"],l.u_packedTranslucentDepth=function(){return t._packFBO.getColorTexture()}),t._compositeCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t});let m=t._compositeCommand,h=m.shaderProgram,u=e.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new Ze({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),R=Ee.shallowClone(m);R.shaderProgram=u,m.derivedCommands.pick=R}c(t._copyCommand)||(s=new Ze({sources:[GT]}),l={colorTexture:function(){return t._drawClassificationFBO.getColorTexture()}},t._copyCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t})),c(t._accumulateCommand)||(s=new Ze({sources:[GT]}),l={colorTexture:function(){return t._drawClassificationFBO.getColorTexture()}},t._accumulateCommand=e.createViewportQuadCommand(s,{uniformMap:l,owner:t})),t._viewport.width=o,t._viewport.height=a;let r=!Fe.equals(t._viewport,n.viewport),d=r!==t._useScissorTest;t._useScissorTest=r,Fe.equals(t._scissorRectangle,n.viewport)||(t._scissorRectangle=Fe.clone(n.viewport,t._scissorRectangle),d=!0),(!c(t._rsDepth)||!Fe.equals(t._viewport,t._rsDepth.viewport)||d)&&(t._rsDepth=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle}})),c(t._packDepthCommand)&&(t._packDepthCommand.renderState=t._rsDepth),(!c(t._rsAccumulate)||!Fe.equals(t._viewport,t._rsAccumulate.viewport)||d)&&(t._rsAccumulate=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Li.EQUAL,reference:gn.CESIUM_3D_TILE_MASK}})),c(t._accumulateCommand)&&(t._accumulateCommand.renderState=t._rsAccumulate),(!c(t._rsComp)||!Fe.equals(t._viewport,t._rsComp.viewport)||d)&&(t._rsComp=he.fromCache({viewport:t._viewport,scissorTest:{enabled:t._useScissorTest,rectangle:t._scissorRectangle},blending:Pn.ALPHA_BLEND})),c(t._compositeCommand)&&(t._compositeCommand.renderState=t._rsComp,t._compositeCommand.derivedCommands.pick.renderState=t._rsComp)}WU.prototype.executeTranslucentCommands=function(t,e,n,i,o){let a=i.length,s,l,r=t.frameState.useLogDepth,d=t.context,m=n.framebuffer;for(l=0;l<a;++l)if(s=i[l],s=r?s.derivedCommands.logDepth.command:s,s.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}if(this._hasTranslucentDepth){for(jBe(this,d,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(d,n),l=0;l<a;++l){if(s=i[l],s=r?s.derivedCommands.logDepth.command:s,!s.depthForTranslucentClassification)continue;let h=s.derivedCommands.depth.depthOnlyCommand;e(h,t,d,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(d,n)),n.framebuffer=m}};WU.prototype.executeClassificationCommands=function(t,e,n,i){if(!this._hasTranslucentDepth)return;let o=t.context,a=o.uniformState,s=n.framebuffer;this._frustumsDrawn===2&&(n.framebuffer=this._accumulationFBO.framebuffer,this._copyCommand.execute(o,n)),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION);let l=a.globeDepthTexture;a.globeDepthTexture=this._packFBO.getColorTexture();let r=i.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION],d=i.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION];for(let m=0;m<d;++m)e(r[m],t,o,n);a.globeDepthTexture=l,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};WU.prototype.execute=function(t,e){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(t.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(t.context,e),qBe(this,t,e)};function qBe(t,e,n){if(!t._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=t._drawClassificationFBO.framebuffer,t._clearColorCommand.execute(e._context,n),n.framebuffer=i,t._frustumsDrawn>1&&(n.framebuffer=t._accumulationFBO.framebuffer,t._clearColorCommand.execute(e._context,n)),t._hasTranslucentDepth=!1,t._frustumsDrawn=0}WU.prototype.isSupported=function(){return this._supported};WU.prototype.isDestroyed=function(){return!1};WU.prototype.destroy=function(){return Oyt(this),Hyt(this),c(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),c(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),At(this)};var q_=WU;function $Be(){this.command=void 0,this.near=void 0,this.far=void 0}function lj(t,e,n){let i=t.context,o;i.depthTexture&&(o=new D_);let a;t._useOIT&&i.depthTexture&&(a=new w_(i));let s=new Md(i);s.viewport=Fe.clone(n),this.camera=e,this._cameraClone=Aa.clone(e),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new z_(i),this.pickDepthFramebuffer=new v_,this.sceneFramebuffer=new FT,this.globeDepth=o,this.globeTranslucencyFramebuffer=new O_,this.oit=a,this.translucentTileClassification=new q_(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var wyt=new p,Pyt=new p;function tQe(t,e){let n=Math.max(Math.abs(t.x),Math.abs(e.x)),i=Math.max(Math.abs(t.y),Math.abs(e.y)),o=Math.max(Math.abs(t.z),Math.abs(e.z));return Math.max(Math.max(n,i),o)}function eQe(t,e,n){let i=1/Math.max(1,tQe(t.position,e.position));return p.multiplyByScalar(t.position,i,wyt),p.multiplyByScalar(e.position,i,Pyt),p.equalsEpsilon(wyt,Pyt,n)&&p.equalsEpsilon(t.direction,e.direction,n)&&p.equalsEpsilon(t.up,e.up,n)&&p.equalsEpsilon(t.right,e.right,n)&&L.equalsEpsilon(t.transform,e.transform,n)&&t.frustum.equalsEpsilon(e.frustum,n)}lj.prototype.checkForCameraUpdates=function(t){let e=this.camera,n=this._cameraClone;return eQe(e,n,k.EPSILON15)?(this._cameraStartFired&&Oi()-this._cameraMovedTime>t.cameraEventWaitTime&&(e.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(e.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Oi(),Aa.clone(e,n),!0)};function nQe(t,e,n,i){let o=e.frameState,a=o.camera,s=o.useLogDepth?e.logarithmicDepthFarToNearRatio:e.farToNearRatio,l=e.mode===Vt.SCENE2D,r=e.nearToFarDistance2D;i*=1+k.EPSILON2,n=Math.min(Math.max(n,a.frustum.near),a.frustum.far),i=Math.max(Math.min(i,a.frustum.far),n);let d;l?(i=Math.min(i,a.position.z+e.nearToFarDistance2D),n=Math.min(n,i),d=Math.ceil(Math.max(1,i-n)/e.nearToFarDistance2D)):d=Math.ceil(Math.log(i/n)/Math.log(s));let m=t.frustumCommandsList;d||(d=0),m.length=d;for(let h=0;h<d;++h){let u,R;l?(u=Math.min(i-r,n+h*r),R=Math.min(i,u+r)):(u=Math.max(n,Math.pow(s,h)*n),R=Math.min(i,s*u));let V=m[h];c(V)?(V.near=u,V.far=R):V=m[h]=new __(u,R)}}function iQe(t,e,n,i,o){e.debugShowFrustums&&(n.debugOverlappingFrustums=0);let a=t.frustumCommandsList,s=a.length;for(let l=0;l<s;++l){let r=a[l],d=r.near,m=r.far;if(i>m)continue;if(o<d)break;let h=n.pass,u=r.indices[h]++;if(r.commands[h][u]=n,e.debugShowFrustums&&(n.debugOverlappingFrustums|=1<<l),n.executeInClosestFrustum)break}if(e.debugShowFrustums){let l=t.debugFrustumStatistics.commandsInFrustums;l[n.debugOverlappingFrustums]=c(l[n.debugOverlappingFrustums])?l[n.debugOverlappingFrustums]+1:1,++t.debugFrustumStatistics.totalCommands}e.updateDerivedCommands(n)}var vyt=new Jl,oQe=new hd;lj.prototype.createPotentiallyVisibleSet=function(t){let e=t.frameState,n=e.camera,i=n.directionWC,o=n.positionWC,a=t._computeCommandList,s=t._overlayCommandList,l=e.commandList;t.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let r=this.frustumCommandsList,d=r.length,m=Pt.NUMBER_OF_PASSES;for(let E=0;E<d;++E)for(let I=0;I<m;++I)r[E].indices[I]=0;a.length=0,s.length=0;let h=this._commandExtents,u=h.length,R=0,V=+Number.MAX_VALUE,F=-Number.MAX_VALUE,U=e.shadowState.shadowsEnabled,G=+Number.MAX_VALUE,A=-Number.MAX_VALUE,S=Number.MAX_VALUE,g=e.mode===Vt.SCENE3D?e.occluder:void 0,C=e.cullingVolume,y=vyt.planes;for(let E=0;E<5;++E)y[E]=C.planes[E];C=vyt;let Y=l.length;for(let E=0;E<Y;++E){let I=l[E],B=I.pass;if(B===Pt.COMPUTE)a.push(I);else if(B===Pt.OVERLAY)s.push(I);else{let X,_,P=I.boundingVolume;if(c(P)){if(!t.isVisible(I,C,g))continue;let z=P.computePlaneDistances(o,i,oQe);if(X=z.start,_=z.stop,V=Math.min(V,X),F=Math.max(F,_),U&&I.receiveShadows&&X<fW.MAXIMUM_DISTANCE&&!(B===Pt.GLOBE&&X<-100&&_>100)){let H=_-X;B!==Pt.GLOBE&&X<100&&(S=Math.min(S,H)),G=Math.min(G,X),A=Math.max(A,_)}}else I instanceof ao?(X=n.frustum.near,_=n.frustum.far):(X=n.frustum.near,_=n.frustum.far,V=Math.min(V,X),F=Math.max(F,_));let w=h[R];c(w)||(w=h[R]=new $Be),w.command=I,w.near=X,w.far=_,R++}}U&&(G=Math.min(Math.max(G,n.frustum.near),n.frustum.far),A=Math.max(Math.min(A,n.frustum.far),G)),U&&(e.shadowState.nearPlane=G,e.shadowState.farPlane=A,e.shadowState.closestObjectSize=S),nQe(this,t,V,F);let Q,J;for(Q=0;Q<R;Q++)J=h[Q],iQe(this,t,J.command,J.near,J.far);if(R<u)for(Q=R;Q<u&&(J=h[Q],!!c(J.command));Q++)J.command=void 0;let M=r.length,Z=e.frustumSplits;Z.length=M+1;for(let E=0;E<M;++E)Z[E]=r[E].near,E===M-1&&(Z[E+1]=r[E].far)};lj.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let t,e=this.pickDepths,n=e.length;for(t=0;t<n;++t)e[t].destroy()};var AT=lj;var zyt=.1,aQe=new EV({pass:ns.MOST_DETAILED_PRELOAD}),sQe=new EV({pass:ns.MOST_DETAILED_PICK}),dj=new EV({pass:ns.PICK});function nd(t){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let e=new Fe(0,0,1,1),n=new Aa(t);n.frustum=new wn({width:zyt,aspectRatio:1,near:.1}),this._pickOffscreenView=new AT(t,n,e)}nd.prototype.update=function(){this._pickPositionCacheDirty=!0};nd.prototype.getPickDepth=function(t,e){let n=t.view.pickDepths,i=n[e];return c(i)||(i=new M_,n[e]=i),i};var lQe=new el,rQe=new p,rj=new p,dQe=new K,cQe=new L;function mQe(t,e,n,i,o){let a=t.camera,s=a.frustum,l=s.offCenterFrustum;c(l)&&(s=l);let r=2*(e.x-o.x)/o.width-1;r*=(s.right-s.left)*.5;let d=2*(o.height-e.y-o.y)/o.height-1;d*=(s.top-s.bottom)*.5;let m=L.clone(a.transform,cQe);a._setTransform(L.IDENTITY);let h=p.clone(a.position,rQe);p.multiplyByScalar(a.right,r,rj),p.add(rj,h,h),p.multiplyByScalar(a.up,d,rj),p.add(rj,h,h),a._setTransform(m),t.mode===Vt.SCENE2D&&p.fromElements(h.z,h.x,h.y,h);let u=s.getPixelDimensions(o.width,o.height,1,1,dQe),R=lQe;return R.right=u.x*.5,R.left=-R.right,R.top=u.y*.5,R.bottom=-R.top,R.near=s.near,R.far=s.far,R.computeCullingVolume(h,a.directionWC,a.upWC)}var hQe=new em,pQe=new K;function VQe(t,e,n,i,o){let a=t.camera,s=a.frustum,l=s.near,r=Math.tan(s.fovy*.5),d=s.aspectRatio*r,m=2*(e.x-o.x)/o.width-1,h=2*(o.height-e.y-o.y)/o.height-1,u=m*l*d,R=h*l*r,V=s.getPixelDimensions(o.width,o.height,1,1,pQe),F=V.x*n*.5,U=V.y*i*.5,G=hQe;return G.top=R+U,G.bottom=R-U,G.right=u+F,G.left=u-F,G.near=l,G.far=s.far,G.computeCullingVolume(a.positionWC,a.directionWC,a.upWC)}function Cat(t,e,n,i,o){let a=t.camera.frustum;return a instanceof wn||a instanceof el?mQe(t,e,n,i,o):VQe(t,e,n,i,o)}var dZ=3,FW=3,hc=new Fe(0,0,dZ,FW),Iat=new K,cj=new v(0,0,0,0);nd.prototype.pick=function(t,e,n,i){dZ=f(n,3),FW=f(i,dZ);let{context:o,frameState:a,defaultView:s}=t,{viewport:l,pickFramebuffer:r}=s;t.view=s,l.x=0,l.y=0,l.width=o.drawingBufferWidth,l.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Fe.clone(l,d.viewport);let m=qo.transformWindowToDrawingBuffer(t,e,Iat);t.jobScheduler.disableThisFrame(),t.updateFrameState(),a.cullingVolume=Cat(t,m,dZ,FW,l),a.invertClassification=!1,a.passes.pick=!0,a.tilesetPassState=dj,o.uniformState.update(a),t.updateEnvironment(),hc.x=m.x-(dZ-1)*.5,hc.y=t.drawingBufferHeight-m.y-(FW-1)*.5,hc.width=dZ,hc.height=FW,d=r.begin(hc,l),t.updateAndExecuteCommands(d,cj),t.resolveFramebuffers(d);let h=r.end(hc);return o.endFrame(),h};nd.prototype.pickVoxelCoordinate=function(t,e,n,i){dZ=f(n,3),FW=f(i,dZ);let{context:o,frameState:a,defaultView:s}=t,{viewport:l,pickFramebuffer:r}=s;t.view=s,l.x=0,l.y=0,l.width=o.drawingBufferWidth,l.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Fe.clone(l,d.viewport);let m=qo.transformWindowToDrawingBuffer(t,e,Iat);t.jobScheduler.disableThisFrame(),t.updateFrameState(),a.cullingVolume=Cat(t,m,dZ,FW,l),a.invertClassification=!1,a.passes.pickVoxel=!0,a.tilesetPassState=dj,o.uniformState.update(a),t.updateEnvironment(),hc.x=m.x-(dZ-1)*.5,hc.y=t.drawingBufferHeight-m.y-(FW-1)*.5,hc.width=dZ,hc.height=FW,d=r.begin(hc,l),t.updateAndExecuteCommands(d,cj),t.resolveFramebuffers(d);let h=r.readVoxelInfo(hc);return o.endFrame(),h};function uQe(t,e){let{defaultView:n,context:i,frameState:o,environmentState:a}=t,{viewport:s,pickDepthFramebuffer:l}=n;t.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let r=n.passState;r.viewport=Fe.clone(s,r.viewport),t.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=Cat(t,e,1,1,s),o.tilesetPassState=dj,t.updateEnvironment(),a.renderTranslucentDepthForPick=!0,r=l.update(i,e,s),t.updateAndExecuteCommands(r,cj),t.resolveFramebuffers(r),i.endFrame()}var ZQe=new Io,RQe=new em,bQe=new wn,WQe=new el;nd.prototype.pickPositionWorldCoordinates=function(t,e,n){if(!t.useDepthPicking)return;let i=e.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return p.clone(this._pickPositionCache[i],n);let{context:o,frameState:a,camera:s,defaultView:l}=t,{uniformState:r}=o;t.view=l;let d=qo.transformWindowToDrawingBuffer(t,e,Iat);t.pickTranslucentDepth?uQe(t,d):(t.updateFrameState(),r.update(a),t.updateEnvironment()),d.y=t.drawingBufferHeight-d.y;let m;c(s.frustum.fov)?m=s.frustum.clone(ZQe):c(s.frustum.infiniteProjectionMatrix)?m=s.frustum.clone(RQe):c(s.frustum.width)?m=s.frustum.clone(bQe):m=s.frustum.clone(WQe);let h=l.frustumCommandsList,u=h.length;for(let R=0;R<u;++R){let F=this.getPickDepth(t,R).getDepth(o,d.x,d.y);if(c(F)&&F>0&&F<1){let U=h[R],G;return t.mode===Vt.SCENE2D?(G=s.position.z,s.position.z=G-U.near+1,m.far=Math.max(1,U.far-U.near),m.near=1,r.update(a),r.updateFrustum(m)):(m.near=U.near*(R!==0?t.opaqueFrustumNearOffset:1),m.far=U.far,r.updateFrustum(m)),n=qo.drawingBufferToWgs84Coordinates(t,d,F,n),t.mode===Vt.SCENE2D&&(s.position.z=G,r.update(a)),this._pickPositionCache[i]=p.clone(n),n}}this._pickPositionCache[i]=void 0};var fQe=new gt;nd.prototype.pickPosition=function(t,e,n){if(n=this.pickPositionWorldCoordinates(t,e,n),c(n)&&t.mode!==Vt.SCENE3D){p.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection,o=i.ellipsoid,a=i.unproject(n,fQe);o.cartographicToCartesian(a,n)}return n};function jyt(t,e){let n,i,o=[],a=[],s=[],l=[];c(t)||(t=Number.MAX_VALUE);let r=e();for(;c(r);){let d=r.object,m=r.position,h=r.exclude;if(c(m)&&!c(d)){o.push(r);break}if(!c(d)||!c(d.primitive)||!h&&(o.push(r),0>=--t))break;let u=d.primitive,R=!1;typeof u.getGeometryInstanceAttributes=="function"&&c(d.id)&&(i=u.getGeometryInstanceAttributes(d.id),c(i)&&c(i.show)&&(R=!0,i.show=pi.toValue(!1,i.show),s.push(i))),d instanceof Fr&&(R=!0,d.show=!1,l.push(d)),R||(u.show=!1,a.push(u)),r=e()}for(n=0;n<a.length;++n)a[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=pi.toValue(!0,i.show);for(n=0;n<l.length;++n)l[n].show=!0;return o}nd.prototype.drillPick=function(t,e,n,i,o){let a=this;return jyt(n,function(){let r=a.pick(t,e,i,o);if(c(r))return{object:r,position:void 0,exclude:!1}}).map(function(r){return r.object})};var Kyt=new p,FQe=new p;function UQe(t,e,n){this.ray=t,this.width=e,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function qyt(t,e,n,i){let o=e.direction,a=p.mostOrthogonalAxis(o,Kyt),s=p.cross(o,a,Kyt),l=p.cross(o,s,FQe);return i.position=e.origin,i.direction=o,i.up=l,i.right=s,i.frustum.width=f(n,zyt),i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function GQe(t,e,n){let i=e.frameState,{ray:o,width:a,tilesets:s}=n,l=t._pickOffscreenView.camera,r=qyt(t,o,a,l),d=aQe;d.camera=l,d.cullingVolume=r;let m=!0,h=s.length;for(let u=0;u<h;++u){let R=s[u];R.show&&e.primitives.contains(R)&&(R.updateForPass(i,d),m=m&&d.ready)}return m&&n._completePick(),m}nd.prototype.updateMostDetailedRayPicks=function(t){let e=this._mostDetailedRayPicks;for(let n=0;n<e.length;++n)GQe(this,t,e[n])&&e.splice(n--,1)};function $yt(t,e,n){for(let i=0;i<t.length;++i){let o=t.get(i);o.show&&(c(o.isCesium3DTileset)?(!c(e)||e.indexOf(o)===-1)&&n.push(o):o instanceof Dm&&$yt(o,e,n))}}function mj(t,e,n,i,o,a){let s=[];if($yt(e.primitives,i,s),s.length===0)return Promise.resolve(a());let l=new UQe(n,o,s);return t._mostDetailedRayPicks.push(l),l.promise.then(function(){return a()})}function AQe(t,e){return!c(t)||!c(e)||e.length===0?!1:e.indexOf(t)>-1||e.indexOf(t.primitive)>-1||e.indexOf(t.id)>-1}function SQe(t,e,n,i,o,a,s){let{context:l,frameState:r}=e,d=l.uniformState,m=t._pickOffscreenView;e.view=m,qyt(t,n,o,m.camera),hc=Fe.clone(m.viewport,hc);let h=m.pickFramebuffer.begin(hc,m.viewport);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.invertClassification=!1,r.passes.pick=!0,r.passes.offscreen=!0,s?r.tilesetPassState=sQe:r.tilesetPassState=dj,d.update(r),e.updateEnvironment(),e.updateAndExecuteCommands(h,cj),e.resolveFramebuffers(h);let u,R=m.pickFramebuffer.end(hc);if(e.context.depthTexture){let V=m.frustumCommandsList.length;for(let F=0;F<V;++F){let G=t.getPickDepth(e,F).getDepth(l,0,0);if(c(G)&&G>0&&G<1){let A=m.frustumCommandsList[F],S=A.near*(F!==0?e.opaqueFrustumNearOffset:1),g=A.far,C=S+G*(g-S);u=di.getPoint(n,C);break}}}if(e.view=e.defaultView,l.endFrame(),c(R)||c(u))return{object:R,position:u,exclude:!c(u)&&a||AQe(R,i)}}function tBt(t,e,n,i,o,a,s,l){return jyt(i,function(){return SQe(t,e,n,o,a,s,l)})}function O1(t,e,n,i,o,a,s){let l=tBt(t,e,n,1,i,o,a,s);if(l.length>0)return l[0]}function eBt(t,e,n,i,o,a,s,l){return tBt(t,e,n,i,o,a,s,l)}function hj(t,e){return new Promise((n,i)=>{e.then(function(o){let a=t.postRender.addEventListener(function(){a(),n(o)});t.requestRender()}).catch(function(o){i(o)})})}nd.prototype.pickFromRay=function(t,e,n,i){return O1(this,t,e,n,i,!1,!1)};nd.prototype.drillPickFromRay=function(t,e,n,i,o){return eBt(this,t,e,n,i,o,!1,!1)};nd.prototype.pickFromRayMostDetailed=function(t,e,n,i){let o=this;return e=di.clone(e),n=c(n)?n.slice():n,hj(t,mj(o,t,e,n,i,function(){return O1(o,t,e,n,i,!1,!0)}))};nd.prototype.drillPickFromRayMostDetailed=function(t,e,n,i,o){let a=this;return e=di.clone(e),i=c(i)?i.slice():i,hj(t,mj(a,t,e,i,o,function(){return eBt(a,t,e,n,i,o,!1,!0)}))};var TQe=new p,gQe=new p,EQe=new di,nBt=new gt;function Nat(t,e){let n=t.globe,i=c(n)?n.ellipsoid:t.mapProjection.ellipsoid,o=Vo._defaultMaxTerrainHeight,a=i.geodeticSurfaceNormalCartographic(e,gQe),s=gt.toCartesian(e,i,TQe),l=EQe;l.origin=s,l.direction=a;let r=new di;return di.getPoint(l,o,r.origin),p.negate(a,r.direction),r}function iBt(t,e){let n=t.globe,i=c(n)?n.ellipsoid:t.mapProjection.ellipsoid,o=gt.fromCartesian(e,i,nBt);return Nat(t,o)}function oBt(t,e){let n=t.globe,i=c(n)?n.ellipsoid:t.mapProjection.ellipsoid;return gt.fromCartesian(e,i,nBt).height}function CQe(t,e,n,i,o){let a=Nat(e,n);return mj(t,e,a,i,o,function(){let s=O1(t,e,a,i,o,!0,!0);if(c(s))return oBt(e,s.position)})}function IQe(t,e,n,i,o,a){let s=iBt(e,n);return mj(t,e,s,i,o,function(){let l=O1(t,e,s,i,o,!0,!0);if(c(l))return p.clone(l.position,a)})}nd.prototype.sampleHeight=function(t,e,n,i){let o=Nat(t,e),a=O1(this,t,o,n,i,!0,!1);if(c(a))return oBt(t,a.position)};nd.prototype.clampToHeight=function(t,e,n,i,o){let a=iBt(t,e),s=O1(this,t,a,n,i,!0,!1);if(c(s))return p.clone(s.position,o)};nd.prototype.sampleHeightMostDetailed=function(t,e,n,i){n=c(n)?n.slice():n;let o=e.length,a=new Array(o);for(let s=0;s<o;++s)a[s]=CQe(this,t,e[s],n,i);return hj(t,Promise.all(a).then(function(s){let l=s.length;for(let r=0;r<l;++r)e[r].height=s[r];return e}))};nd.prototype.clampToHeightMostDetailed=function(t,e,n,i){n=c(n)?n.slice():n;let o=e.length,a=new Array(o);for(let s=0;s<o;++s)a[s]=IQe(this,t,e[s],n,i,e[s]);return hj(t,Promise.all(a).then(function(s){let l=s.length;for(let r=0;r<l;++r)e[r]=s[r];return e}))};nd.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var $_=nd;var yQo=b(W(),1);var lQo=b(W(),1);var myo=b(W(),1),t9=`uniform sampler2D colorTexture; in vec2 v_textureCoordinates; @@ -11226,7 +11226,7 @@ void main() out_FragColor = vec4(color, fragmentColor.a); } -`;var pyo=R(W(),1),e9=`uniform sampler2D randomTexture; +`;var pyo=b(W(),1),e9=`uniform sampler2D randomTexture; uniform sampler2D depthTexture; uniform float intensity; uniform float bias; @@ -11341,7 +11341,7 @@ void main(void) ao = pow(ao, intensity); out_FragColor = vec4(vec3(ao), 1.0); } -`;var Zyo=R(W(),1),n9=`uniform sampler2D colorTexture; +`;var uyo=b(W(),1),n9=`uniform sampler2D colorTexture; uniform sampler2D ambientOcclusionTexture; uniform bool ambientOcclusionOnly; in vec2 v_textureCoordinates; @@ -11352,7 +11352,7 @@ void main(void) vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); out_FragColor = ambientOcclusionOnly ? ao : ao * color; } -`;var byo=R(W(),1),i9=`uniform sampler2D colorTexture; +`;var Ryo=b(W(),1),i9=`uniform sampler2D colorTexture; uniform float gradations; in vec2 v_textureCoordinates; @@ -11371,7 +11371,7 @@ void main(void) darkness = (darkness - fract(darkness)) / gradations; out_FragColor = vec4(vec3(darkness), 1.0); } -`;var Wyo=R(W(),1),o9=`uniform sampler2D colorTexture; +`;var Wyo=b(W(),1),o9=`uniform sampler2D colorTexture; uniform sampler2D bloomTexture; uniform bool glowOnly; @@ -11391,7 +11391,7 @@ void main(void) vec4 bloom = texture(bloomTexture, v_textureCoordinates); out_FragColor = glowOnly ? bloom : bloom + color; } -`;var Fyo=R(W(),1),a9=`uniform sampler2D colorTexture; +`;var Fyo=b(W(),1),a9=`uniform sampler2D colorTexture; uniform float brightness; in vec2 v_textureCoordinates; @@ -11402,7 +11402,7 @@ void main(void) vec3 target = vec3(0.0); out_FragColor = vec4(mix(target, rgb, brightness), 1.0); } -`;var Gyo=R(W(),1),s9=`uniform sampler2D colorTexture; +`;var Gyo=b(W(),1),s9=`uniform sampler2D colorTexture; uniform float contrast; uniform float brightness; @@ -11419,7 +11419,7 @@ void main(void) sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); out_FragColor = vec4(sceneColor, 1.0); } -`;var Tyo=R(W(),1),l9=`uniform sampler2D colorTexture; +`;var Syo=b(W(),1),l9=`uniform sampler2D colorTexture; uniform sampler2D blurTexture; uniform sampler2D depthTexture; uniform float focalDistance; @@ -11458,7 +11458,7 @@ void main(void) float d = computeDepthBlur(-posInCamera.z); out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); } -`;var gyo=R(W(),1),r9=`uniform sampler2D depthTexture; +`;var gyo=b(W(),1),r9=`uniform sampler2D depthTexture; in vec2 v_textureCoordinates; @@ -11467,7 +11467,7 @@ void main(void) float depth = czm_readDepth(depthTexture, v_textureCoordinates); out_FragColor = vec4(vec3(depth), 1.0); } -`;var Cyo=R(W(),1),d9=`uniform sampler2D depthTexture; +`;var Cyo=b(W(),1),d9=`uniform sampler2D depthTexture; uniform float length; uniform vec4 color; @@ -11527,7 +11527,7 @@ void main(void) float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); } -`;var Nyo=R(W(),1),c9=`uniform sampler2D colorTexture; +`;var Nyo=b(W(),1),c9=`uniform sampler2D colorTexture; in vec2 v_textureCoordinates; @@ -11563,7 +11563,7 @@ void main() c = czm_inverseGamma(c / w); out_FragColor = vec4(c, fragmentColor.a); } -`;var Byo=R(W(),1),m9=`in vec2 v_textureCoordinates; +`;var Byo=b(W(),1),m9=`in vec2 v_textureCoordinates; uniform sampler2D colorTexture; @@ -11584,7 +11584,7 @@ void main() float alpha = texture(colorTexture, v_textureCoordinates).a; out_FragColor = vec4(color.rgb, alpha); } -`;var kyo=R(W(),1),fU=`#define SAMPLES 8 +`;var kyo=b(W(),1),fU=`#define SAMPLES 8 uniform float delta; uniform float sigma; @@ -11631,7 +11631,7 @@ void main() out_FragColor = result; } -`;var xyo=R(W(),1),h9=`uniform sampler2D colorTexture; +`;var xyo=b(W(),1),h9=`uniform sampler2D colorTexture; uniform sampler2D dirtTexture; uniform sampler2D starTexture; uniform vec2 dirtTextureDimensions; @@ -11784,7 +11784,7 @@ void main(void) out_FragColor = result; } -`;var Jyo=R(W(),1),p9=`uniform sampler2D colorTexture; +`;var Jyo=b(W(),1),p9=`uniform sampler2D colorTexture; uniform vec3 white; in vec2 v_textureCoordinates; @@ -11808,7 +11808,7 @@ void main() color = czm_inverseGamma(color); out_FragColor = vec4(color, fragmentColor.a); } -`;var Myo=R(W(),1),u9=`uniform sampler2D colorTexture; +`;var Myo=b(W(),1),V9=`uniform sampler2D colorTexture; in vec2 v_textureCoordinates; @@ -11824,7 +11824,7 @@ void main(void) vec3 green = vec3(0.0, 1.0, 0.0); out_FragColor = vec4((noiseValue + rgb) * green, 1.0); } -`;var Dyo=R(W(),1),Z9=`uniform sampler2D colorTexture; +`;var Dyo=b(W(),1),u9=`uniform sampler2D colorTexture; in vec2 v_textureCoordinates; @@ -11847,7 +11847,7 @@ void main() color = czm_inverseGamma(color); out_FragColor = vec4(color, fragmentColor.a); } -`;var Hyo=R(W(),1),V9=`uniform sampler2D colorTexture; +`;var Hyo=b(W(),1),Z9=`uniform sampler2D colorTexture; uniform sampler2D silhouetteTexture; in vec2 v_textureCoordinates; @@ -11858,7 +11858,7 @@ void main(void) vec4 color = texture(colorTexture, v_textureCoordinates); out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); } -`;var Pyo=R(W(),1);/** +`;var Pyo=b(W(),1);/** * @license * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. * @@ -11885,7 +11885,7 @@ void main(void) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */var b9=`/** + */var R9=`/** * @license * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. * @@ -12533,7 +12533,7 @@ FxaaFloat4 FxaaPixelShader( if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); } -`;var nBo=R(W(),1);function TS(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new Ro,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new K,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(TS.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let t=this._framebuffers;if(c(t))return t[t.length-1].getColorTexture(0)}}});function aBt(t){let e=t._framebuffers;if(!c(e))return;let n=e.length;for(let i=0;i<n;++i)e[i].destroy();t._framebuffers=void 0,t._previousLuminance.destroy(),t._previousLuminance=void 0}function NQe(t,e){aBt(t);let n=t._width,i=t._height,o=e.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT,a=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(a);for(let r=0;r<a;++r)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[r]=new Ro,s[r].update(e,n,i,1,o);let l=s[a-1].getColorTexture(0);t._previousLuminance.update(e,l.width,l.height,1,o),t._framebuffers=s}function sBt(t){let e=t._commands;if(!c(e))return;let n=e.length;for(let i=0;i<n;++i)e[i].shaderProgram.destroy();t._commands=void 0}function yQe(t,e){let n;if(e===0)n={colorTexture:function(){return t._colorTexture},colorTextureDimensions:function(){return t._colorTexture.dimensions}};else{let i=t._framebuffers[e-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return t._minMaxLuminance},n.previousLuminance=function(){return t._previousLuminance.getColorTexture(0)},n}function BQe(t,e){let n=`uniform sampler2D colorTexture; +`;var nBo=b(W(),1);function ST(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new bo,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new K,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(ST.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let t=this._framebuffers;if(c(t))return t[t.length-1].getColorTexture(0)}}});function aBt(t){let e=t._framebuffers;if(!c(e))return;let n=e.length;for(let i=0;i<n;++i)e[i].destroy();t._framebuffers=void 0,t._previousLuminance.destroy(),t._previousLuminance=void 0}function NQe(t,e){aBt(t);let n=t._width,i=t._height,o=e.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT,a=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(a);for(let r=0;r<a;++r)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[r]=new bo,s[r].update(e,n,i,1,o);let l=s[a-1].getColorTexture(0);t._previousLuminance.update(e,l.width,l.height,1,o),t._framebuffers=s}function sBt(t){let e=t._commands;if(!c(e))return;let n=e.length;for(let i=0;i<n;++i)e[i].shaderProgram.destroy();t._commands=void 0}function yQe(t,e){let n;if(e===0)n={colorTexture:function(){return t._colorTexture},colorTextureDimensions:function(){return t._colorTexture.dimensions}};else{let i=t._framebuffers[e-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return t._minMaxLuminance},n.previousLuminance=function(){return t._previousLuminance.getColorTexture(0)},n}function BQe(t,e){let n=`uniform sampler2D colorTexture; in vec2 v_textureCoordinates; float sampleTexture(vec2 offset) { `;return t===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); @@ -12570,7 +12570,7 @@ void main() { color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); `),n+=` out_FragColor = vec4(color); } -`,n}function QQe(t,e){sBt(t);let n=t._framebuffers,i=n.length,o=new Array(i);for(let a=0;a<i;++a)o[a]=e.createViewportQuadCommand(BQe(a,i),{framebuffer:n[a].framebuffer,uniformMap:yQe(t,a)});t._commands=o}TS.prototype.clear=function(t){let e=this._framebuffers;if(!c(e))return;let n=this._clearCommand;c(n)||(n=this._clearCommand=new ao({color:new v(0,0,0,0),framebuffer:void 0}));let i=e.length;for(let o=0;o<i;++o)e[o].clear(t,n)};TS.prototype.update=function(t){let e=t.drawingBufferWidth,n=t.drawingBufferHeight;(e!==this._width||n!==this._height)&&(this._width=e,this._height=n,NQe(this,t),QQe(this,t),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};TS.prototype.execute=function(t,e){this._colorTexture=e;let n=this._commands;if(!c(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(t)};TS.prototype.isDestroyed=function(){return!1};TS.prototype.destroy=function(){return aBt(this),sBt(this),At(this)};var R9=TS;var TBo=R(W(),1);var oBo=R(W(),1),kQe={NEAREST:0,LINEAR:1},op=kQe;function SS(t){t=f(t,f.EMPTY_OBJECT);let e=t.fragmentShader,n=f(t.textureScale,1),i=f(t.pixelFormat,Ye.RGBA);this._fragmentShader=e,this._uniforms=t.uniforms,this._textureScale=n,this._forcePowerOfTwo=f(t.forcePowerOfTwo,!1),this._sampleMode=f(t.sampleMode,op.NEAREST),this._pixelFormat=i,this._pixelDatatype=f(t.pixelDatatype,Ue.UNSIGNED_BYTE),this._clearColor=f(t.clearColor,v.BLACK),this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let o=new Md;o.scissorTest={enabled:!0,rectangle:c(t.scissorRectangle)?Fe.clone(t.scissorRectangle):new Fe},this._passState=o,this._ready=!1;let a=t.name;c(a)||(a=Si()),this._name=a,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(SS.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(c(this._textureCache)){let t=this._textureCache.getFramebuffer(this._name);if(c(t))return t.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(t){this._selected=t}},parentSelected:{get:function(){return this._parentSelected},set:function(t){this._parentSelected=t}}});var YQe=/uniform\s+sampler2D\s+depthTexture/g;SS.prototype._isSupported=function(t){return!YQe.test(this._fragmentShader)||t.depthTexture};function xQe(t,e,n){let i=e[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&t._dirtyUniforms.push(n),{get:function(){return e[n]},set:function(o){let a=e[n];e[n]=o;let s=t._actualUniforms,l=s[n];c(l)&&l!==a&&l instanceof hn&&!c(t._textureCache.getStageByName(n))&&(t._texturesToRelease.push(l),delete s[n],delete s[`${n}Dimensions`]),a instanceof hn&&t._texturesToRelease.push(a),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?t._dirtyUniforms.push(n):s[n]=o}}}function XQe(t,e){return function(){let n=t._actualUniforms[e];return typeof n=="function"?n():n}}function JQe(t,e){return function(){let n=t[e]();if(c(n))return n.dimensions}}function LQe(t){if(c(t._uniformMap))return;let e={},n={},i=t._uniforms,o=t._actualUniforms;for(let a in i)if(i.hasOwnProperty(a)){typeof i[a]!="function"?(e[a]=XQe(t,a),n[a]=xQe(t,i,a)):(e[a]=i[a],n[a]=i[a]),o[a]=i[a];let s=e[a]();(typeof s=="string"||s instanceof hn||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(e[`${a}Dimensions`]=JQe(e,a))}t._uniforms={},Object.defineProperties(t._uniforms,n),t._uniformMap=ze(e,{colorTexture:function(){return t._colorTexture},colorTextureDimensions:function(){return t._colorTexture.dimensions},depthTexture:function(){return t._depthTexture},depthTextureDimensions:function(){return t._depthTexture.dimensions},czm_idTexture:function(){return t._idTexture},czm_selectedIdTexture:function(){return t._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/t._selectedIdTexture.width}})}function MQe(t,e){if(c(t._command)&&!t._logDepthChanged&&!t._selectedDirty)return;let n=t._fragmentShader;if(c(t._selectedIdTexture)){let o=t._selectedIdTexture.width;n=n.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),n=`#define CZM_SELECTED_FEATURE +`,n}function QQe(t,e){sBt(t);let n=t._framebuffers,i=n.length,o=new Array(i);for(let a=0;a<i;++a)o[a]=e.createViewportQuadCommand(BQe(a,i),{framebuffer:n[a].framebuffer,uniformMap:yQe(t,a)});t._commands=o}ST.prototype.clear=function(t){let e=this._framebuffers;if(!c(e))return;let n=this._clearCommand;c(n)||(n=this._clearCommand=new ao({color:new v(0,0,0,0),framebuffer:void 0}));let i=e.length;for(let o=0;o<i;++o)e[o].clear(t,n)};ST.prototype.update=function(t){let e=t.drawingBufferWidth,n=t.drawingBufferHeight;(e!==this._width||n!==this._height)&&(this._width=e,this._height=n,NQe(this,t),QQe(this,t),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};ST.prototype.execute=function(t,e){this._colorTexture=e;let n=this._commands;if(!c(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(t)};ST.prototype.isDestroyed=function(){return!1};ST.prototype.destroy=function(){return aBt(this),sBt(this),At(this)};var b9=ST;var SBo=b(W(),1);var oBo=b(W(),1),kQe={NEAREST:0,LINEAR:1},op=kQe;function TT(t){t=f(t,f.EMPTY_OBJECT);let e=t.fragmentShader,n=f(t.textureScale,1),i=f(t.pixelFormat,Ye.RGBA);this._fragmentShader=e,this._uniforms=t.uniforms,this._textureScale=n,this._forcePowerOfTwo=f(t.forcePowerOfTwo,!1),this._sampleMode=f(t.sampleMode,op.NEAREST),this._pixelFormat=i,this._pixelDatatype=f(t.pixelDatatype,Ue.UNSIGNED_BYTE),this._clearColor=f(t.clearColor,v.BLACK),this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let o=new Md;o.scissorTest={enabled:!0,rectangle:c(t.scissorRectangle)?Fe.clone(t.scissorRectangle):new Fe},this._passState=o,this._ready=!1;let a=t.name;c(a)||(a=Ti()),this._name=a,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(TT.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(c(this._textureCache)){let t=this._textureCache.getFramebuffer(this._name);if(c(t))return t.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(t){this._selected=t}},parentSelected:{get:function(){return this._parentSelected},set:function(t){this._parentSelected=t}}});var YQe=/uniform\s+sampler2D\s+depthTexture/g;TT.prototype._isSupported=function(t){return!YQe.test(this._fragmentShader)||t.depthTexture};function xQe(t,e,n){let i=e[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&t._dirtyUniforms.push(n),{get:function(){return e[n]},set:function(o){let a=e[n];e[n]=o;let s=t._actualUniforms,l=s[n];c(l)&&l!==a&&l instanceof hn&&!c(t._textureCache.getStageByName(n))&&(t._texturesToRelease.push(l),delete s[n],delete s[`${n}Dimensions`]),a instanceof hn&&t._texturesToRelease.push(a),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?t._dirtyUniforms.push(n):s[n]=o}}}function XQe(t,e){return function(){let n=t._actualUniforms[e];return typeof n=="function"?n():n}}function JQe(t,e){return function(){let n=t[e]();if(c(n))return n.dimensions}}function LQe(t){if(c(t._uniformMap))return;let e={},n={},i=t._uniforms,o=t._actualUniforms;for(let a in i)if(i.hasOwnProperty(a)){typeof i[a]!="function"?(e[a]=XQe(t,a),n[a]=xQe(t,i,a)):(e[a]=i[a],n[a]=i[a]),o[a]=i[a];let s=e[a]();(typeof s=="string"||s instanceof hn||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(e[`${a}Dimensions`]=JQe(e,a))}t._uniforms={},Object.defineProperties(t._uniforms,n),t._uniformMap=ze(e,{colorTexture:function(){return t._colorTexture},colorTextureDimensions:function(){return t._colorTexture.dimensions},depthTexture:function(){return t._depthTexture},depthTextureDimensions:function(){return t._depthTexture.dimensions},czm_idTexture:function(){return t._idTexture},czm_selectedIdTexture:function(){return t._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/t._selectedIdTexture.width}})}function MQe(t,e){if(c(t._command)&&!t._logDepthChanged&&!t._selectedDirty)return;let n=t._fragmentShader;if(c(t._selectedIdTexture)){let o=t._selectedIdTexture.width;n=n.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),n=`#define CZM_SELECTED_FEATURE uniform sampler2D czm_idTexture; uniform sampler2D czm_selectedIdTexture; uniform float czm_selectedIdTextureStep; @@ -12595,8 +12595,8 @@ bool czm_selected() return czm_selected(vec2(0.0)); } -${n}`}let i=new Ve({defines:[t._useLogDepth?"LOG_DEPTH":""],sources:[n]});t._command=e.createViewportQuadCommand(i,{uniformMap:t._uniformMap,owner:t})}function _Qe(t){let e=t._sampleMode,n,i;e===op.LINEAR?(n=On.LINEAR,i=bo.LINEAR):(n=On.NEAREST,i=bo.NEAREST);let o=t._sampler;(!c(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(t._sampler=new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function DQe(t,e){return function(n){t._texturesToCreate.push({name:e,source:n})}}function OQe(t,e){return function(){return t._textureCache.getOutputTexture(e)}}function HQe(t,e){let n,i,o,a=t._texturesToRelease,s=a.length;for(n=0;n<s;++n)i=a[n],i=i&&i.destroy();a.length=0;let l=t._texturesToCreate;for(s=l.length,n=0;n<s;++n){let h=l[n];o=h.name;let Z=h.source;t._actualUniforms[o]=new hn({context:e,source:Z})}l.length=0;let r=t._dirtyUniforms;if(r.length===0&&!c(t._texturePromise)){t._ready=!0;return}if(r.length===0||c(t._texturePromise))return;s=r.length;let d=t._uniforms,m=[];for(n=0;n<s;++n){o=r[n];let h=d[o],Z=t._textureCache.getStageByName(h);if(c(Z))t._actualUniforms[o]=OQe(t,h);else if(typeof h=="string"){let b=new te({url:h});m.push(b.fetchImage().then(DQe(t,o)))}else t._texturesToCreate.push({name:o,source:h})}r.length=0,m.length>0?(t._ready=!1,t._texturePromise=Promise.all(m).then(function(){t._ready=!0,t._texturePromise=void 0})):t._ready=!0}function lBt(t){c(t._command)&&(t._command.shaderProgram=t._command.shaderProgram&&t._command.shaderProgram.destroy(),t._command=void 0),t._selectedIdTexture=t._selectedIdTexture&&t._selectedIdTexture.destroy();let e=t._textureCache;if(!c(e))return;let n=t._uniforms,i=t._actualUniforms;for(let o in i)i.hasOwnProperty(o)&&i[o]instanceof hn&&(c(e.getStageByName(n[o]))||i[o].destroy(),t._dirtyUniforms.push(o))}function wQe(t){let e=c(t._selected)?t._selected.length:0,n=c(t._parentSelected)?t._parentSelected:0,i=t._selected!==t._selectedShadow||e!==t._selectedLength;if(i=i||t._parentSelected!==t._parentSelectedShadow||n!==t._parentSelectedLength,c(t._selected)&&c(t._parentSelected)?t._combinedSelected=t._selected.concat(t._parentSelected):c(t._parentSelected)?t._combinedSelected=t._parentSelected:t._combinedSelected=t._selected,!i&&c(t._combinedSelected)){if(!c(t._combinedSelectedShadow))return!0;e=t._combinedSelected.length;for(let o=0;o<e;++o)if(t._combinedSelected[o]!==t._combinedSelectedShadow[o])return!0}return i}function PQe(t,e){if(!t._selectedDirty)return;t._selectedIdTexture=t._selectedIdTexture&&t._selectedIdTexture.destroy(),t._selectedIdTexture=void 0;let n=t._combinedSelected;if(!c(n))return;let i,o,a=0,s=n.length;for(i=0;i<s;++i)o=n[i],c(o.pickIds)?a+=o.pickIds.length:c(o.pickId)&&++a;if(s===0||a===0){let m=new Uint8Array(4);m[0]=255,m[1]=255,m[2]=255,m[3]=255,t._selectedIdTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:m,width:1,height:1},sampler:Hn.NEAREST});return}let l,r=0,d=new Uint8Array(a*4);for(i=0;i<s;++i)if(o=n[i],c(o.pickIds)){let m=o.pickIds,h=m.length;for(let Z=0;Z<h;++Z)l=m[Z].color,d[r]=v.floatToByte(l.red),d[r+1]=v.floatToByte(l.green),d[r+2]=v.floatToByte(l.blue),d[r+3]=v.floatToByte(l.alpha),r+=4}else c(o.pickId)&&(l=o.pickId.color,d[r]=v.floatToByte(l.red),d[r+1]=v.floatToByte(l.green),d[r+2]=v.floatToByte(l.blue),d[r+3]=v.floatToByte(l.alpha),r+=4);t._selectedIdTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:d,width:a,height:1},sampler:Hn.NEAREST})}SS.prototype.update=function(t,e){if(this.enabled!==this._enabled&&!this.enabled&&lBt(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=e!==this._useLogDepth,this._useLogDepth=e,this._selectedDirty=wQe(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=c(this._selected)?this._selected.length:0,this._parentSelectedLength=c(this._parentSelected)?this._parentSelected.length:0,PQe(this,t),LQe(this),HQe(this,t),MQe(this,t),_Qe(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!c(n))return;let i=n.getColorTexture(0),o;(i.width!==t.drawingBufferWidth||i.height!==t.drawingBufferHeight)&&(o=this._renderState,(!c(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=he.fromCache({viewport:new Fe(0,0,i.width,i.height)}))),this._command.renderState=o};SS.prototype.execute=function(t,e,n,i){if(!c(this._command)||!c(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=e,this._depthTexture=n,this._idTexture=i,Hn.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;c(o)&&(o.context=t),this._command.execute(t,o)};SS.prototype.isDestroyed=function(){return!1};SS.prototype.destroy=function(){return lBt(this),At(this)};var Qa=SS;var NBo=R(W(),1);function gS(t){t=f(t,f.EMPTY_OBJECT),this._stages=t.stages,this._inputPreviousStageTexture=f(t.inputPreviousStageTexture,!0);let e=t.name;c(e)||(e=Si()),this._name=e,this._uniforms=t.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(gS.prototype,{ready:{get:function(){let t=this._stages,e=t.length;for(let n=0;n<e;++n)if(!t[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(t){let e=this._stages,n=e.length;for(let i=0;i<n;++i)e[i].enabled=t}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(t){this._selected=t}},parentSelected:{get:function(){return this._parentSelected},set:function(t){this._parentSelected=t}}});gS.prototype._isSupported=function(t){let e=this._stages,n=e.length;for(let i=0;i<n;++i)if(!e[i]._isSupported(t))return!1;return!0};gS.prototype.get=function(t){return this._stages[t]};function vQe(t){let e=c(t._selected)?t._selected.length:0,n=c(t._parentSelected)?t._parentSelected:0,i=t._selected!==t._selectedShadow||e!==t._selectedLength;if(i=i||t._parentSelected!==t._parentSelectedShadow||n!==t._parentSelectedLength,c(t._selected)&&c(t._parentSelected)?t._combinedSelected=t._selected.concat(t._parentSelected):c(t._parentSelected)?t._combinedSelected=t._parentSelected:t._combinedSelected=t._selected,!i&&c(t._combinedSelected)){if(!c(t._combinedSelectedShadow))return!0;e=t._combinedSelected.length;for(let o=0;o<e;++o)if(t._combinedSelected[o]!==t._combinedSelectedShadow[o])return!0}return i}gS.prototype.update=function(t,e){this._selectedDirty=vQe(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=c(this._selected)?this._selected.length:0,this._parentSelectedLength=c(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let a=n[o];this._selectedDirty&&(a.parentSelected=this._combinedSelected),a.update(t,e)}};gS.prototype.isDestroyed=function(){return!1};gS.prototype.destroy=function(){let t=this._stages,e=t.length;for(let n=0;n<e;++n)t[n].destroy();return At(this)};var nm=gS;var Vl={};function pj(t){let o=`#define USE_STEP_SIZE -${fU}`,a=new Qa({name:`${t}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:op.LINEAR}),s=new Qa({name:`${t}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:op.LINEAR}),l={};return Object.defineProperties(l,{delta:{get:function(){return a.uniforms.delta},set:function(r){let d=a.uniforms,m=s.uniforms;d.delta=m.delta=r}},sigma:{get:function(){return a.uniforms.sigma},set:function(r){let d=a.uniforms,m=s.uniforms;d.sigma=m.sigma=r}},stepSize:{get:function(){return a.uniforms.stepSize},set:function(r){let d=a.uniforms,m=s.uniforms;d.stepSize=m.stepSize=r}}}),new nm({name:t,stages:[a,s],uniforms:l})}Vl.createBlurStage=function(){return pj("czm_blur")};Vl.createDepthOfFieldStage=function(){let t=pj("czm_depth_of_field_blur"),e=new Qa({name:"czm_depth_of_field_composite",fragmentShader:l9,uniforms:{focalDistance:5,blurTexture:t.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return e.uniforms.focalDistance},set:function(i){e.uniforms.focalDistance=i}},delta:{get:function(){return t.uniforms.delta},set:function(i){t.uniforms.delta=i}},sigma:{get:function(){return t.uniforms.sigma},set:function(i){t.uniforms.sigma=i}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(i){t.uniforms.stepSize=i}}}),new nm({name:"czm_depth_of_field",stages:[t,e],inputPreviousStageTexture:!1,uniforms:n})};Vl.isDepthOfFieldSupported=function(t){return t.context.depthTexture};Vl.createEdgeDetectionStage=function(){let t=Si();return new Qa({name:`czm_edge_detection_${t}`,fragmentShader:d9,uniforms:{length:.25,color:v.clone(v.BLACK)}})};Vl.isEdgeDetectionSupported=function(t){return t.context.depthTexture};function KQe(t){if(!c(t))return Vl.createEdgeDetectionStage();let e=new nm({name:"czm_edge_detection_multiple",stages:t,inputPreviousStageTexture:!1}),n={},i="",o="";for(let l=0;l<t.length;++l)i+=`uniform sampler2D edgeTexture${l}; +${n}`}let i=new Ze({defines:[t._useLogDepth?"LOG_DEPTH":""],sources:[n]});t._command=e.createViewportQuadCommand(i,{uniformMap:t._uniformMap,owner:t})}function _Qe(t){let e=t._sampleMode,n,i;e===op.LINEAR?(n=On.LINEAR,i=Ro.LINEAR):(n=On.NEAREST,i=Ro.NEAREST);let o=t._sampler;(!c(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(t._sampler=new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function DQe(t,e){return function(n){t._texturesToCreate.push({name:e,source:n})}}function OQe(t,e){return function(){return t._textureCache.getOutputTexture(e)}}function HQe(t,e){let n,i,o,a=t._texturesToRelease,s=a.length;for(n=0;n<s;++n)i=a[n],i=i&&i.destroy();a.length=0;let l=t._texturesToCreate;for(s=l.length,n=0;n<s;++n){let h=l[n];o=h.name;let u=h.source;t._actualUniforms[o]=new hn({context:e,source:u})}l.length=0;let r=t._dirtyUniforms;if(r.length===0&&!c(t._texturePromise)){t._ready=!0;return}if(r.length===0||c(t._texturePromise))return;s=r.length;let d=t._uniforms,m=[];for(n=0;n<s;++n){o=r[n];let h=d[o],u=t._textureCache.getStageByName(h);if(c(u))t._actualUniforms[o]=OQe(t,h);else if(typeof h=="string"){let R=new te({url:h});m.push(R.fetchImage().then(DQe(t,o)))}else t._texturesToCreate.push({name:o,source:h})}r.length=0,m.length>0?(t._ready=!1,t._texturePromise=Promise.all(m).then(function(){t._ready=!0,t._texturePromise=void 0})):t._ready=!0}function lBt(t){c(t._command)&&(t._command.shaderProgram=t._command.shaderProgram&&t._command.shaderProgram.destroy(),t._command=void 0),t._selectedIdTexture=t._selectedIdTexture&&t._selectedIdTexture.destroy();let e=t._textureCache;if(!c(e))return;let n=t._uniforms,i=t._actualUniforms;for(let o in i)i.hasOwnProperty(o)&&i[o]instanceof hn&&(c(e.getStageByName(n[o]))||i[o].destroy(),t._dirtyUniforms.push(o))}function wQe(t){let e=c(t._selected)?t._selected.length:0,n=c(t._parentSelected)?t._parentSelected:0,i=t._selected!==t._selectedShadow||e!==t._selectedLength;if(i=i||t._parentSelected!==t._parentSelectedShadow||n!==t._parentSelectedLength,c(t._selected)&&c(t._parentSelected)?t._combinedSelected=t._selected.concat(t._parentSelected):c(t._parentSelected)?t._combinedSelected=t._parentSelected:t._combinedSelected=t._selected,!i&&c(t._combinedSelected)){if(!c(t._combinedSelectedShadow))return!0;e=t._combinedSelected.length;for(let o=0;o<e;++o)if(t._combinedSelected[o]!==t._combinedSelectedShadow[o])return!0}return i}function PQe(t,e){if(!t._selectedDirty)return;t._selectedIdTexture=t._selectedIdTexture&&t._selectedIdTexture.destroy(),t._selectedIdTexture=void 0;let n=t._combinedSelected;if(!c(n))return;let i,o,a=0,s=n.length;for(i=0;i<s;++i)o=n[i],c(o.pickIds)?a+=o.pickIds.length:c(o.pickId)&&++a;if(s===0||a===0){let m=new Uint8Array(4);m[0]=255,m[1]=255,m[2]=255,m[3]=255,t._selectedIdTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:m,width:1,height:1},sampler:Hn.NEAREST});return}let l,r=0,d=new Uint8Array(a*4);for(i=0;i<s;++i)if(o=n[i],c(o.pickIds)){let m=o.pickIds,h=m.length;for(let u=0;u<h;++u)l=m[u].color,d[r]=v.floatToByte(l.red),d[r+1]=v.floatToByte(l.green),d[r+2]=v.floatToByte(l.blue),d[r+3]=v.floatToByte(l.alpha),r+=4}else c(o.pickId)&&(l=o.pickId.color,d[r]=v.floatToByte(l.red),d[r+1]=v.floatToByte(l.green),d[r+2]=v.floatToByte(l.blue),d[r+3]=v.floatToByte(l.alpha),r+=4);t._selectedIdTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:d,width:a,height:1},sampler:Hn.NEAREST})}TT.prototype.update=function(t,e){if(this.enabled!==this._enabled&&!this.enabled&&lBt(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=e!==this._useLogDepth,this._useLogDepth=e,this._selectedDirty=wQe(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=c(this._selected)?this._selected.length:0,this._parentSelectedLength=c(this._parentSelected)?this._parentSelected.length:0,PQe(this,t),LQe(this),HQe(this,t),MQe(this,t),_Qe(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!c(n))return;let i=n.getColorTexture(0),o;(i.width!==t.drawingBufferWidth||i.height!==t.drawingBufferHeight)&&(o=this._renderState,(!c(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=he.fromCache({viewport:new Fe(0,0,i.width,i.height)}))),this._command.renderState=o};TT.prototype.execute=function(t,e,n,i){if(!c(this._command)||!c(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=e,this._depthTexture=n,this._idTexture=i,Hn.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;c(o)&&(o.context=t),this._command.execute(t,o)};TT.prototype.isDestroyed=function(){return!1};TT.prototype.destroy=function(){return lBt(this),At(this)};var Qa=TT;var NBo=b(W(),1);function gT(t){t=f(t,f.EMPTY_OBJECT),this._stages=t.stages,this._inputPreviousStageTexture=f(t.inputPreviousStageTexture,!0);let e=t.name;c(e)||(e=Ti()),this._name=e,this._uniforms=t.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(gT.prototype,{ready:{get:function(){let t=this._stages,e=t.length;for(let n=0;n<e;++n)if(!t[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(t){let e=this._stages,n=e.length;for(let i=0;i<n;++i)e[i].enabled=t}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(t){this._selected=t}},parentSelected:{get:function(){return this._parentSelected},set:function(t){this._parentSelected=t}}});gT.prototype._isSupported=function(t){let e=this._stages,n=e.length;for(let i=0;i<n;++i)if(!e[i]._isSupported(t))return!1;return!0};gT.prototype.get=function(t){return this._stages[t]};function vQe(t){let e=c(t._selected)?t._selected.length:0,n=c(t._parentSelected)?t._parentSelected:0,i=t._selected!==t._selectedShadow||e!==t._selectedLength;if(i=i||t._parentSelected!==t._parentSelectedShadow||n!==t._parentSelectedLength,c(t._selected)&&c(t._parentSelected)?t._combinedSelected=t._selected.concat(t._parentSelected):c(t._parentSelected)?t._combinedSelected=t._parentSelected:t._combinedSelected=t._selected,!i&&c(t._combinedSelected)){if(!c(t._combinedSelectedShadow))return!0;e=t._combinedSelected.length;for(let o=0;o<e;++o)if(t._combinedSelected[o]!==t._combinedSelectedShadow[o])return!0}return i}gT.prototype.update=function(t,e){this._selectedDirty=vQe(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=c(this._selected)?this._selected.length:0,this._parentSelectedLength=c(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let a=n[o];this._selectedDirty&&(a.parentSelected=this._combinedSelected),a.update(t,e)}};gT.prototype.isDestroyed=function(){return!1};gT.prototype.destroy=function(){let t=this._stages,e=t.length;for(let n=0;n<e;++n)t[n].destroy();return At(this)};var nm=gT;var Zl={};function pj(t){let o=`#define USE_STEP_SIZE +${fU}`,a=new Qa({name:`${t}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:op.LINEAR}),s=new Qa({name:`${t}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:op.LINEAR}),l={};return Object.defineProperties(l,{delta:{get:function(){return a.uniforms.delta},set:function(r){let d=a.uniforms,m=s.uniforms;d.delta=m.delta=r}},sigma:{get:function(){return a.uniforms.sigma},set:function(r){let d=a.uniforms,m=s.uniforms;d.sigma=m.sigma=r}},stepSize:{get:function(){return a.uniforms.stepSize},set:function(r){let d=a.uniforms,m=s.uniforms;d.stepSize=m.stepSize=r}}}),new nm({name:t,stages:[a,s],uniforms:l})}Zl.createBlurStage=function(){return pj("czm_blur")};Zl.createDepthOfFieldStage=function(){let t=pj("czm_depth_of_field_blur"),e=new Qa({name:"czm_depth_of_field_composite",fragmentShader:l9,uniforms:{focalDistance:5,blurTexture:t.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return e.uniforms.focalDistance},set:function(i){e.uniforms.focalDistance=i}},delta:{get:function(){return t.uniforms.delta},set:function(i){t.uniforms.delta=i}},sigma:{get:function(){return t.uniforms.sigma},set:function(i){t.uniforms.sigma=i}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(i){t.uniforms.stepSize=i}}}),new nm({name:"czm_depth_of_field",stages:[t,e],inputPreviousStageTexture:!1,uniforms:n})};Zl.isDepthOfFieldSupported=function(t){return t.context.depthTexture};Zl.createEdgeDetectionStage=function(){let t=Ti();return new Qa({name:`czm_edge_detection_${t}`,fragmentShader:d9,uniforms:{length:.25,color:v.clone(v.BLACK)}})};Zl.isEdgeDetectionSupported=function(t){return t.context.depthTexture};function KQe(t){if(!c(t))return Zl.createEdgeDetectionStage();let e=new nm({name:"czm_edge_detection_multiple",stages:t,inputPreviousStageTexture:!1}),n={},i="",o="";for(let l=0;l<t.length;++l)i+=`uniform sampler2D edgeTexture${l}; `,o+=` vec4 edge${l} = texture(edgeTexture${l}, v_textureCoordinates); if (edge${l}.a > 0.0) { @@ -12611,13 +12611,13 @@ void main() { ${o} } out_FragColor = color; } -`,s=new Qa({name:"czm_edge_detection_combine",fragmentShader:a,uniforms:n});return new nm({name:"czm_edge_detection_composite",stages:[e,s]})}Vl.createSilhouetteStage=function(t){let e=KQe(t),n=new Qa({name:"czm_silhouette_color_edges",fragmentShader:V9,uniforms:{silhouetteTexture:e.name}});return new nm({name:"czm_silhouette",stages:[e,n],inputPreviousStageTexture:!1,uniforms:e.uniforms})};Vl.isSilhouetteSupported=function(t){return t.context.depthTexture};Vl.createBloomStage=function(){let t=new Qa({name:"czm_bloom_contrast_bias",fragmentShader:s9,uniforms:{contrast:128,brightness:-.3}}),e=pj("czm_bloom_blur"),n=new nm({name:"czm_bloom_contrast_bias_blur",stages:[t,e]}),i=new Qa({name:"czm_bloom_generate_composite",fragmentShader:o9,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(a){i.uniforms.glowOnly=a}},contrast:{get:function(){return t.uniforms.contrast},set:function(a){t.uniforms.contrast=a}},brightness:{get:function(){return t.uniforms.brightness},set:function(a){t.uniforms.brightness=a}},delta:{get:function(){return e.uniforms.delta},set:function(a){e.uniforms.delta=a}},sigma:{get:function(){return e.uniforms.sigma},set:function(a){e.uniforms.sigma=a}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(a){e.uniforms.stepSize=a}}}),new nm({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Vl.createAmbientOcclusionStage=function(){let t=new Qa({name:"czm_ambient_occlusion_generate",fragmentShader:e9,uniforms:{intensity:3,bias:.1,lengthCap:.26,stepSize:1.95,frustumLength:1e3,randomTexture:void 0}}),e=pj("czm_ambient_occlusion_blur");e.uniforms.stepSize=.86;let n=new nm({name:"czm_ambient_occlusion_generate_blur",stages:[t,e]}),i=new Qa({name:"czm_ambient_occlusion_composite",fragmentShader:n9,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:n.name}}),o={};return Object.defineProperties(o,{intensity:{get:function(){return t.uniforms.intensity},set:function(a){t.uniforms.intensity=a}},bias:{get:function(){return t.uniforms.bias},set:function(a){t.uniforms.bias=a}},lengthCap:{get:function(){return t.uniforms.lengthCap},set:function(a){t.uniforms.lengthCap=a}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(a){t.uniforms.stepSize=a}},frustumLength:{get:function(){return t.uniforms.frustumLength},set:function(a){t.uniforms.frustumLength=a}},randomTexture:{get:function(){return t.uniforms.randomTexture},set:function(a){t.uniforms.randomTexture=a}},delta:{get:function(){return e.uniforms.delta},set:function(a){e.uniforms.delta=a}},sigma:{get:function(){return e.uniforms.sigma},set:function(a){e.uniforms.sigma=a}},blurStepSize:{get:function(){return e.uniforms.stepSize},set:function(a){e.uniforms.stepSize=a}},ambientOcclusionOnly:{get:function(){return i.uniforms.ambientOcclusionOnly},set:function(a){i.uniforms.ambientOcclusionOnly=a}}}),new nm({name:"czm_ambient_occlusion",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Vl.isAmbientOcclusionSupported=function(t){return t.context.depthTexture};var zQe=`#define FXAA_QUALITY_PRESET 39 -${b9} -${m9}`;Vl.createFXAAStage=function(){return new Qa({name:"czm_FXAA",fragmentShader:zQe,sampleMode:op.LINEAR})};Vl.createAcesTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE -`:"";return e+=t9,new Qa({name:"czm_aces",fragmentShader:e,uniforms:{autoExposure:void 0}})};Vl.createFilmicTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE -`:"";return e+=c9,new Qa({name:"czm_filmic",fragmentShader:e,uniforms:{autoExposure:void 0}})};Vl.createReinhardTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE -`:"";return e+=Z9,new Qa({name:"czm_reinhard",fragmentShader:e,uniforms:{autoExposure:void 0}})};Vl.createModifiedReinhardTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE -`:"";return e+=p9,new Qa({name:"czm_modified_reinhard",fragmentShader:e,uniforms:{white:v.WHITE,autoExposure:void 0}})};Vl.createAutoExposureStage=function(){return new R9};Vl.createBlackAndWhiteStage=function(){return new Qa({name:"czm_black_and_white",fragmentShader:i9,uniforms:{gradations:5}})};Vl.createBrightnessStage=function(){return new Qa({name:"czm_brightness",fragmentShader:a9,uniforms:{brightness:.5}})};Vl.createNightVisionStage=function(){return new Qa({name:"czm_night_vision",fragmentShader:u9})};Vl.createDepthViewStage=function(){return new Qa({name:"czm_depth_view",fragmentShader:r9})};Vl.createLensFlareStage=function(){return new Qa({name:"czm_lens_flare",fragmentShader:h9,uniforms:{dirtTexture:Dn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:Dn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:mt.WGS84.maximumRadius}})};var Iu=Vl;var ZQo=R(W(),1);function UW(t){this._collection=t,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function f9(t){for(;c(t.length);)t=t.get(t.length-1);return t.name}function yat(t,e,n,i,o){if(!i.enabled||!i._isSupported(e))return o;let a=n[i.name]={};if(c(o)){let l=t.getStageByName(o);a[f9(l)]=!0}let s=i.uniforms;if(c(s)){let l=Object.getOwnPropertyNames(s),r=l.length;for(let d=0;d<r;++d){let m=s[l[d]];if(typeof m=="string"){let h=t.getStageByName(m);c(h)&&(a[f9(h)]=!0)}}}return i.name}function W9(t,e,n,i,o){if(c(i.enabled)&&!i.enabled||c(i._isSupported)&&!i._isSupported(e))return o;let a=o,s=!c(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,l=o,r=i.length;for(let h=0;h<r;++h){let Z=i.get(h);c(Z.length)?l=W9(t,e,n,Z,o):l=yat(t,e,n,Z,o),s&&(o=l)}let d,m;if(s)for(d=1;d<r;++d)m=f9(i.get(d)),c(n[m])||(n[m]={}),n[m][a]=!0;else for(d=1;d<r;++d){m=f9(i.get(d));let h=n[m];for(let Z=0;Z<d;++Z)h[f9(i.get(Z))]=!0}return l}function jQe(t,e){let n={};if(c(t.ambientOcclusion)){let i=t.ambientOcclusion,o=t.bloom,a=t._tonemapping,s=t.fxaa,l=W9(t,e,n,i,void 0);l=W9(t,e,n,o,l),l=yat(t,e,n,a,l),l=W9(t,e,n,t,l),yat(t,e,n,s,l)}else W9(t,e,n,t,void 0);return n}function qQe(t,e,n){let o=t._collection.getStageByName(e),a=o._textureScale,s=o._forcePowerOfTwo,l=o._pixelFormat,r=o._pixelDatatype,d=o._clearColor,m,h,Z=t._framebuffers,b=Z.length;for(m=0;m<b;++m){if(h=Z[m],a!==h.textureScale||s!==h.forcePowerOfTwo||l!==h.pixelFormat||r!==h.pixelDatatype||!v.equals(d,h.clearColor))continue;let u=h.stages,F=u.length,U=!1;for(let G=0;G<F;++G)if(n[u[G]]){U=!0;break}if(!U)break}return c(h)&&m<b?(h.stages.push(e),h):(h={textureScale:a,forcePowerOfTwo:s,pixelFormat:l,pixelDatatype:r,clearColor:d,stages:[e],buffer:new Ro({pixelFormat:l,pixelDatatype:r}),clear:void 0},Z.push(h),h)}function $Qe(t,e){let n=jQe(t._collection,e);for(let i in n)n.hasOwnProperty(i)&&(t._stageNameToFramebuffer[i]=qQe(t,i,n[i]))}function Bat(t){let e=t._framebuffers,n=e.length;for(let i=0;i<n;++i)e[i].buffer.destroy()}function t2e(t,e){let n=t._width,i=t._height,o=t._framebuffers,a=o.length;for(let s=0;s<a;++s){let l=o[s],r=l.textureScale,d=Math.ceil(n*r),m=Math.ceil(i*r),h=Math.min(d,m);l.forcePowerOfTwo&&(k.isPowerOfTwo(h)||(h=k.nextPowerOfTwo(h)),d=h,m=h),l.buffer.update(e,d,m),l.clear=new ao({color:l.clearColor,framebuffer:l.buffer.framebuffer})}}UW.prototype.updateDependencies=function(){this._updateDependencies=!0};UW.prototype.update=function(t){let e=this._collection,n=this._updateDependencies,i=c(e.ambientOcclusion)&&e.ambientOcclusion.enabled&&e.ambientOcclusion._isSupported(t),o=c(e.bloom)&&e.bloom.enabled&&e.bloom._isSupported(t),a=c(e._tonemapping)&&e._tonemapping.enabled&&e._tonemapping._isSupported(t),s=c(e.fxaa)&&e.fxaa.enabled&&e.fxaa._isSupported(t),l=!c(e._activeStages)||e._activeStages.length>0||i||o||a||s;if((n||!l&&this._framebuffers.length>0)&&(Bat(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!l)return;this._framebuffers.length===0&&$Qe(this,t);let r=t.drawingBufferWidth,d=t.drawingBufferHeight,m=this._width!==r||this._height!==d;!n&&!m||(this._width=r,this._height=d,this._updateDependencies=!1,Bat(this),t2e(this,t))};UW.prototype.clear=function(t){let e=this._framebuffers;for(let n=0;n<e.length;++n)e[n].clear.execute(t)};UW.prototype.getStageByName=function(t){return this._collection.getStageByName(t)};UW.prototype.getOutputTexture=function(t){return this._collection.getOutputTexture(t)};UW.prototype.getFramebuffer=function(t){let e=this._stageNameToFramebuffer[t];if(c(e))return e.buffer.framebuffer};UW.prototype.isDestroyed=function(){return!1};UW.prototype.destroy=function(){return Bat(this),At(this)};var ES=UW;var bQo=R(W(),1),F9={REINHARD:0,MODIFIED_REINHARD:1,FILMIC:2,ACES:3,validate:function(t){return t===F9.REINHARD||t===F9.MODIFIED_REINHARD||t===F9.FILMIC||t===F9.ACES}},FU=Object.freeze(F9);var Qat=[];function im(){let t=Iu.createFXAAStage(),e=Iu.createAmbientOcclusionStage(),n=Iu.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=Iu.createAutoExposureStage(),this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=FU.ACES;let i=this._tonemapping;t.enabled=!1,e.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new ES(this),a={},s=Qat;for(s.push(t,e,n,i);s.length>0;){let r=s.pop();a[r.name]=r,r._textureCache=o;let d=r.length;if(c(d))for(let m=0;m<d;++m)s.push(r.get(m))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let l=this;e.uniforms.randomTexture=function(){return l._randomTexture},this._ao=e,this._bloom=n,this._fxaa=t,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=a,this._textureCache=o}Object.defineProperties(im.prototype,{ready:{get:function(){let t=!1,e=this._stages,n=e.length;for(let l=n-1;l>=0;--l){let r=e[l];t=t||r.ready&&r.enabled}let i=this._fxaa,o=this._ao,a=this._bloom,s=this._tonemapping;return t=t||i.ready&&i.enabled,t=t||o.ready&&o.enabled,t=t||a.ready&&a.enabled,t=t||s.ready&&s.enabled,t}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return kat(this),this._stages.length}},outputTexture:{get:function(){let t=this._fxaa;if(t.enabled&&t.ready)return this.getOutputTexture(t.name);let e=this._stages,n=e.length;for(let s=n-1;s>=0;--s){let l=e[s];if(c(l)&&l.ready&&l.enabled)return this.getOutputTexture(l.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let a=this._ao;if(a.enabled&&a.ready)return this.getOutputTexture(a.name)}},hasSelected:{get:function(){let t=this._stages.slice();for(;t.length>0;){let e=t.pop();if(!c(e))continue;if(c(e.selected))return!0;let n=e.length;if(c(n))for(let i=0;i<n;++i)t.push(e.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(t){if(this._tonemapper===t)return;c(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let e=this._autoExposureEnabled,n;switch(t){case FU.REINHARD:n=Iu.createReinhardTonemappingStage(e);break;case FU.MODIFIED_REINHARD:n=Iu.createModifiedReinhardTonemappingStage(e);break;case FU.FILMIC:n=Iu.createFilmicTonemappingStage(e);break;default:n=Iu.createAcesTonemappingStage(e);break}if(e){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}this._tonemapper=t,this._tonemapping=n,c(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}}});function kat(t){if(!t._stagesRemoved)return;t._stagesRemoved=!1;let e=[],n=t._stages,i=n.length;for(let o=0,a=0;o<i;++o){let s=n[o];s&&(s._index=a++,e.push(s))}t._stages=e}im.prototype.add=function(t){let e=this._stageNames,n=Qat;for(n.push(t);n.length>0;){let o=n.pop();e[o.name]=o,o._textureCache=this._textureCache;let a=o.length;if(c(a))for(let s=0;s<a;++s)n.push(o.get(s))}let i=this._stages;return t._index=i.length,i.push(t),this._textureCacheDirty=!0,t};im.prototype.remove=function(t){if(!this.contains(t))return!1;let e=this._stageNames,n=Qat;for(n.push(t);n.length>0;){let i=n.pop();delete e[i.name];let o=i.length;if(c(o))for(let a=0;a<o;++a)n.push(i.get(a))}return this._stages[t._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,t._index=void 0,t._textureCache=void 0,t.destroy(),!0};im.prototype.contains=function(t){return c(t)&&c(t._index)&&t._textureCache===this._textureCache};im.prototype.get=function(t){return kat(this),this._stages[t]};im.prototype.removeAll=function(){let t=this._stages,e=t.length;for(let n=0;n<e;++n)this.remove(t[n]);t.length=0};im.prototype.getStageByName=function(t){return this._stageNames[t]};im.prototype.update=function(t,e,n){kat(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let a=this._stages,s=o.length=a.length,l,r,d=0;for(l=0;l<s;++l)r=a[l],r.ready&&r.enabled&&r._isSupported(t)&&(o[d++]=r);o.length=d;let m=d!==i.length;if(!m){for(l=0;l<d;++l)if(o[l]!==i[l]){m=!0;break}}let h=this._ao,Z=this._bloom,b=this._autoExposure,u=this._tonemapping,F=this._fxaa;u.enabled=n;let U=h.enabled&&h._isSupported(t),G=Z.enabled&&Z._isSupported(t),A=u.enabled&&u._isSupported(t),T=F.enabled&&F._isSupported(t);if((m||this._textureCacheDirty||U!==this._aoEnabled||G!==this._bloomEnabled||A!==this._tonemappingEnabled||T!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=U,this._bloomEnabled=G,this._tonemappingEnabled=A,this._fxaaEnabled=T,this._textureCacheDirty=!1),c(this._randomTexture)&&!U&&(this._randomTexture.destroy(),this._randomTexture=void 0),!c(this._randomTexture)&&U){s=256*256*3;let g=new Uint8Array(s);for(l=0;l<s;l+=3)g[l]=Math.floor(Math.random()*255);this._randomTexture=new hn({context:t,pixelFormat:Ye.RGB,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:g,width:256,height:256},sampler:new Hn({wrapS:Vi.REPEAT,wrapT:Vi.REPEAT,minificationFilter:On.NEAREST,magnificationFilter:bo.NEAREST})})}for(this._textureCache.update(t),F.update(t,e),h.update(t,e),Z.update(t,e),u.update(t,e),this._autoExposureEnabled&&b.update(t,e),s=a.length,l=0;l<s;++l)a[l].update(t,e);for(d=0,l=0;l<s;++l)r=a[l],r.ready&&r.enabled&&r._isSupported(t)&&d++;m=d!==o.length,m&&this.update(t,e,n)};im.prototype.clear=function(t){this._textureCache.clear(t),this._autoExposureEnabled&&this._autoExposure.clear(t)};function CS(t){for(;c(t.length);)t=t.get(t.length-1);return t.outputTexture}im.prototype.getOutputTexture=function(t){let e=this.getStageByName(t);if(c(e))return CS(e)};function wb(t,e,n,i,o){if(c(t.execute)){t.execute(e,n,i,o);return}let a=t.length,s;if(t.inputPreviousStageTexture)for(wb(t.get(0),e,n,i,o),s=1;s<a;++s)wb(t.get(s),e,CS(t.get(s-1)),i,o);else for(s=0;s<a;++s)wb(t.get(s),e,n,i,o)}im.prototype.execute=function(t,e,n,i){let o=this._activeStages,a=o.length,s=this._fxaa,l=this._ao,r=this._bloom,d=this._autoExposure,m=this._tonemapping,h=l.enabled&&l._isSupported(t),Z=r.enabled&&r._isSupported(t),b=this._autoExposureEnabled,u=m.enabled&&m._isSupported(t),F=s.enabled&&s._isSupported(t);if(!F&&!h&&!Z&&!u&&a===0)return;let U=e;h&&l.ready&&(wb(l,t,U,n,i),U=CS(l)),Z&&r.ready&&(wb(r,t,U,n,i),U=CS(r)),b&&d.ready&&wb(d,t,U,n,i),u&&m.ready&&(wb(m,t,U,n,i),U=CS(m));let G=U;if(a>0){wb(o[0],t,U,n,i);for(let A=1;A<a;++A)wb(o[A],t,CS(o[A-1]),n,i);G=CS(o[a-1])}F&&s.ready&&wb(s,t,G,n,i)};im.prototype.copy=function(t,e){if(!c(this._copyColorCommand)){let n=this;this._copyColorCommand=t.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=e,this._copyColorCommand.execute(t)};im.prototype.isDestroyed=function(){return!1};im.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),At(this)};var U9=im;var m2o=R(W(),1);var PQo=R(W(),1);var QQo=R(W(),1),e2e={SHIFT:0,CTRL:1,ALT:2},id=Object.freeze(e2e);var YQo=R(W(),1),n2e={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},Zi=Object.freeze(n2e);function UU(t,e,n){let i=t._element;if(i===document)return n.x=e.clientX,n.y=e.clientY,n;let o=i.getBoundingClientRect();return n.x=e.clientX-o.left,n.y=e.clientY-o.top,n}function Mat(t,e){let n=t;return c(e)&&(n+=`+${e}`),n}function IS(t){if(t.shiftKey)return id.SHIFT;if(t.ctrlKey)return id.CTRL;if(t.altKey)return id.ALT}var cr={LEFT:0,MIDDLE:1,RIGHT:2};function ap(t,e,n,i){function o(a){i(t,a)}In.isInternetExplorer()?n.addEventListener(e,o,!1):n.addEventListener(e,o,{capture:!1,passive:!1}),t._removalFunctions.push(function(){n.removeEventListener(e,o,!1)})}function i2e(t){let e=t._element,n=c(e.disableRootEvents)?e:document;In.supportsPointerEvents()?(ap(t,"pointerdown",e,d2e),ap(t,"pointerup",e,bBt),ap(t,"pointermove",e,c2e),ap(t,"pointercancel",e,bBt)):(ap(t,"mousedown",e,RBt),ap(t,"mouseup",n,WBt),ap(t,"mousemove",n,fBt),ap(t,"touchstart",e,l2e),ap(t,"touchend",n,hBt),ap(t,"touchmove",n,r2e),ap(t,"touchcancel",n,hBt)),ap(t,"dblclick",e,a2e);let i;"onwheel"in e?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",ap(t,i,e,s2e)}function o2e(t){let e=t._removalFunctions;for(let n=0;n<e.length;++n)e[n]()}var rBt={position:new K};function _at(t){t._lastSeenTouchEvent=Oi()}function Dat(t){return Oi()-t._lastSeenTouchEvent>cV.mouseEmulationIgnoreMilliseconds}function Lat(t,e,n){let i=t.x-e.x,o=t.y-e.y;return Math.sqrt(i*i+o*o)<n}function RBt(t,e){if(!Dat(t))return;let n=e.button;t._buttonDown[n]=!0;let i;if(n===cr.LEFT)i=Zi.LEFT_DOWN;else if(n===cr.MIDDLE)i=Zi.MIDDLE_DOWN;else if(n===cr.RIGHT)i=Zi.RIGHT_DOWN;else return;let o=UU(t,e,t._primaryPosition);K.clone(o,t._primaryStartPosition),K.clone(o,t._primaryPreviousPosition);let a=IS(e),s=t.getInputAction(i,a);c(s)&&(K.clone(o,rBt.position),s(rBt),e.preventDefault())}var dBt={position:new K},cBt={position:new K};function Yat(t,e,n,i){let o=IS(i),a=t.getInputAction(e,o),s=t.getInputAction(n,o);if(c(a)||c(s)){let l=UU(t,i,t._primaryPosition);if(c(a)&&(K.clone(l,dBt.position),a(dBt)),c(s)){let r=t._primaryStartPosition;Lat(r,l,t._clickPixelTolerance)&&(K.clone(l,cBt.position),s(cBt))}}}function WBt(t,e){if(!Dat(t))return;let n=e.button;n!==cr.LEFT&&n!==cr.MIDDLE&&n!==cr.RIGHT||(t._buttonDown[cr.LEFT]&&(Yat(t,Zi.LEFT_UP,Zi.LEFT_CLICK,e),t._buttonDown[cr.LEFT]=!1),t._buttonDown[cr.MIDDLE]&&(Yat(t,Zi.MIDDLE_UP,Zi.MIDDLE_CLICK,e),t._buttonDown[cr.MIDDLE]=!1),t._buttonDown[cr.RIGHT]&&(Yat(t,Zi.RIGHT_UP,Zi.RIGHT_CLICK,e),t._buttonDown[cr.RIGHT]=!1))}var xat={startPosition:new K,endPosition:new K};function fBt(t,e){if(!Dat(t))return;let n=IS(e),i=UU(t,e,t._primaryPosition),o=t._primaryPreviousPosition,a=t.getInputAction(Zi.MOUSE_MOVE,n);c(a)&&(K.clone(o,xat.startPosition),K.clone(i,xat.endPosition),a(xat)),K.clone(i,o),(t._buttonDown[cr.LEFT]||t._buttonDown[cr.MIDDLE]||t._buttonDown[cr.RIGHT])&&e.preventDefault()}var mBt={position:new K};function a2e(t,e){let n=e.button,i;if(n===cr.LEFT)i=Zi.LEFT_DOUBLE_CLICK;else return;let o=IS(e),a=t.getInputAction(i,o);c(a)&&(UU(t,e,mBt.position),a(mBt))}function s2e(t,e){let n;if(c(e.deltaY)){let a=e.deltaMode;a===e.DOM_DELTA_PIXEL?n=-e.deltaY:a===e.DOM_DELTA_LINE?n=-e.deltaY*40:n=-e.deltaY*120}else e.detail>0?n=e.detail*-120:n=e.wheelDelta;if(!c(n))return;let i=IS(e),o=t.getInputAction(Zi.WHEEL,i);c(o)&&(o(n),e.preventDefault())}function l2e(t,e){_at(t);let n=e.changedTouches,i,o=n.length,a,s,l=t._positions;for(i=0;i<o;++i)a=n[i],s=a.identifier,l.set(s,UU(t,a,new K));uj(t,e);let r=t._previousPositions;for(i=0;i<o;++i)a=n[i],s=a.identifier,r.set(s,K.clone(l.get(s)))}function hBt(t,e){_at(t);let n=e.changedTouches,i,o=n.length,a,s,l=t._positions;for(i=0;i<o;++i)a=n[i],s=a.identifier,l.remove(s);uj(t,e);let r=t._previousPositions;for(i=0;i<o;++i)a=n[i],s=a.identifier,r.remove(s)}var pBt={position:new K},Xat={position1:new K,position2:new K},uBt={position:new K},ZBt={position:new K},VBt={position:new K};function uj(t,e){let n=IS(e),i=t._positions,o=i.length,a,s,l=t._isPinching;if(o!==1&&t._buttonDown[cr.LEFT]){if(t._buttonDown[cr.LEFT]=!1,c(t._touchHoldTimer)&&(clearTimeout(t._touchHoldTimer),t._touchHoldTimer=void 0),a=t.getInputAction(Zi.LEFT_UP,n),c(a)&&(K.clone(t._primaryPosition,uBt.position),a(uBt)),o===0&&!t._isTouchHolding&&(s=t.getInputAction(Zi.LEFT_CLICK,n),c(s))){let r=t._primaryStartPosition,d=t._previousPositions.values[0];Lat(r,d,t._clickPixelTolerance)&&(K.clone(t._primaryPosition,ZBt.position),s(ZBt))}t._isTouchHolding=!1}if(o===0&&l&&(t._isPinching=!1,a=t.getInputAction(Zi.PINCH_END,n),c(a)&&a()),o===1&&!l){let r=i.values[0];K.clone(r,t._primaryPosition),K.clone(r,t._primaryStartPosition),K.clone(r,t._primaryPreviousPosition),t._buttonDown[cr.LEFT]=!0,a=t.getInputAction(Zi.LEFT_DOWN,n),c(a)&&(K.clone(r,pBt.position),a(pBt)),t._touchHoldTimer=setTimeout(function(){if(!t.isDestroyed()&&(t._touchHoldTimer=void 0,t._isTouchHolding=!0,s=t.getInputAction(Zi.RIGHT_CLICK,n),c(s))){let d=t._primaryStartPosition,m=t._previousPositions.values[0];Lat(d,m,t._holdPixelTolerance)&&(K.clone(t._primaryPosition,VBt.position),s(VBt))}},cV.touchHoldDelayMilliseconds),e.preventDefault()}o===2&&!l&&(t._isPinching=!0,a=t.getInputAction(Zi.PINCH_START,n),c(a)&&(K.clone(i.values[0],Xat.position1),K.clone(i.values[1],Xat.position2),a(Xat),e.preventDefault()))}function r2e(t,e){_at(t);let n=e.changedTouches,i,o=n.length,a,s,l=t._positions;for(i=0;i<o;++i){a=n[i],s=a.identifier;let d=l.get(s);c(d)&&UU(t,a,d)}FBt(t,e);let r=t._previousPositions;for(i=0;i<o;++i)a=n[i],s=a.identifier,K.clone(l.get(s),r.get(s))}var Jat={startPosition:new K,endPosition:new K},G9={distance:{startPosition:new K,endPosition:new K},angleAndHeight:{startPosition:new K,endPosition:new K}};function FBt(t,e){let n=IS(e),i=t._positions,o=t._previousPositions,a=i.length,s;if(a===1&&t._buttonDown[cr.LEFT]){let l=i.values[0];K.clone(l,t._primaryPosition);let r=t._primaryPreviousPosition;s=t.getInputAction(Zi.MOUSE_MOVE,n),c(s)&&(K.clone(r,Jat.startPosition),K.clone(l,Jat.endPosition),s(Jat)),K.clone(l,r),e.preventDefault()}else if(a===2&&t._isPinching&&(s=t.getInputAction(Zi.PINCH_MOVE,n),c(s))){let l=i.values[0],r=i.values[1],d=o.values[0],m=o.values[1],h=r.x-l.x,Z=r.y-l.y,b=Math.sqrt(h*h+Z*Z)*.25,u=m.x-d.x,F=m.y-d.y,U=Math.sqrt(u*u+F*F)*.25,G=(r.y+l.y)*.125,A=(m.y+d.y)*.125,T=Math.atan2(Z,h),g=Math.atan2(F,u);K.fromElements(0,U,G9.distance.startPosition),K.fromElements(0,b,G9.distance.endPosition),K.fromElements(g,A,G9.angleAndHeight.startPosition),K.fromElements(T,G,G9.angleAndHeight.endPosition),s(G9)}}function d2e(t,e){if(e.target.setPointerCapture(e.pointerId),e.pointerType==="touch"){let n=t._positions,i=e.pointerId;n.set(i,UU(t,e,new K)),uj(t,e),t._previousPositions.set(i,K.clone(n.get(i)))}else RBt(t,e)}function bBt(t,e){if(e.pointerType==="touch"){let n=t._positions,i=e.pointerId;n.remove(i),uj(t,e),t._previousPositions.remove(i)}else WBt(t,e)}function c2e(t,e){if(e.pointerType==="touch"){let n=t._positions,i=e.pointerId,o=n.get(i);if(!c(o))return;UU(t,e,o),FBt(t,e);let a=t._previousPositions;K.clone(n.get(i),a.get(i))}else fBt(t,e)}function cV(t){this._inputEvents={},this._buttonDown={LEFT:!1,MIDDLE:!1,RIGHT:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-cV.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new K,this._primaryPosition=new K,this._primaryPreviousPosition=new K,this._positions=new qe,this._previousPositions=new qe,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=f(t,document),i2e(this)}cV.prototype.setInputAction=function(t,e,n){let i=Mat(e,n);this._inputEvents[i]=t};cV.prototype.getInputAction=function(t,e){let n=Mat(t,e);return this._inputEvents[n]};cV.prototype.removeInputAction=function(t,e){let n=Mat(t,e);delete this._inputEvents[n]};cV.prototype.isDestroyed=function(){return!1};cV.prototype.destroy=function(){return o2e(this),At(this)};cV.mouseEmulationIgnoreMilliseconds=800;cV.touchHoldDelayMilliseconds=1500;var sp=cV;function NS(t){this._scene=t,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}NS.prototype.completeMorph=function(){c(this._completeMorph)&&this._completeMorph()};NS.prototype.morphTo2D=function(t,e){c(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof wn,!(this._previousMode===ut.SCENE2D||this._previousMode===ut.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ut.SCENE2D,!0),n._mode=ut.MORPHING,n.camera._setTransform(L.IDENTITY),this._previousMode===ut.COLUMBUS_VIEW?D2e(this,t):z2e(this,t,e),t===0&&c(this._completeMorph)&&this._completeMorph())};var m2e=new p,h2e=new p,p2e=new p,u2e=new p,Z2e=new p,V2e=new p,b2e=new p,R2e=new gt,W2e=new L,f2e=new Io,F2e=new wn,U2e={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};NS.prototype.morphToColumbusView=function(t,e){c(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ut.COLUMBUS_VIEW||this._previousMode===ut.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ut.COLUMBUS_VIEW,!0),n.camera._setTransform(L.IDENTITY);let i=m2e,o=h2e,a=p2e;if(t>0)i.x=0,i.y=-1,i.z=1,i=p.multiplyByScalar(p.normalize(i,i),5*e.maximumRadius,i),p.negate(p.normalize(i,o),o),p.cross(p.UNIT_X,o,a);else{let d=n.camera;if(this._previousMode===ut.SCENE2D)p.clone(d.position,i),i.z=d.frustum.right-d.frustum.left,p.negate(p.UNIT_Z,o),p.clone(p.UNIT_Y,a);else{p.clone(d.positionWC,i),p.clone(d.directionWC,o),p.clone(d.upWC,a);let m=e.scaleToGeodeticSurface(i,b2e),h=Pe.eastNorthUpToFixedFrame(m,e,W2e);L.inverseTransformation(h,h),n.mapProjection.project(e.cartesianToCartographic(i,R2e),i),L.multiplyByPointAsVector(h,o,o),L.multiplyByPointAsVector(h,a,a)}}let s;this._morphToOrthographic?(s=F2e,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=f2e,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=k.toRadians(60));let l=U2e;l.position=i,l.direction=o,l.up=a,l.frustum=s;let r=q2e(l);A9(this,r),this._previousMode===ut.SCENE2D?j2e(this,t,l,r):(l.position2D=L.multiplyByPoint(Aa.TRANSFORM_2D,i,u2e),l.direction2D=L.multiplyByPointAsVector(Aa.TRANSFORM_2D,o,Z2e),l.up2D=L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a,V2e),n._mode=ut.MORPHING,yBt(this,t,l,r)),t===0&&c(this._completeMorph)&&this._completeMorph()};var wat={position:new p,direction:new p,up:new p,frustum:void 0},GBt=new Io;NS.prototype.morphTo3D=function(t,e){c(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ut.SCENE3D||this._previousMode===ut.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ut.SCENE3D,!0),n._mode=ut.MORPHING,n.camera._setTransform(L.IDENTITY),this._previousMode===ut.SCENE2D)B2e(this,t,e);else{let i;t>0?(i=wat,p.fromDegrees(0,0,5*e.maximumRadius,e,i.position),p.negate(i.position,i.direction),p.normalize(i.direction,i.direction),p.clone(p.UNIT_Z,i.up)):i=ABt(this,e);let o,a=n.camera;a.frustum instanceof wn?o=a.frustum.clone():(o=GBt,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=k.toRadians(60)),i.frustum=o;let s=QBt(i);A9(this,s),Hat(this,t,i,s)}t===0&&c(this._completeMorph)&&this._completeMorph()}};NS.prototype.isDestroyed=function(){return!1};NS.prototype.destroy=function(){return Zj(this),At(this)};function A9(t,e){if(t._scene.completeMorphOnUserInput){t._morphHandler=new sp(t._scene.canvas);let n=function(){t._morphCancelled=!0,t._scene.camera.cancelFlight(),e(t)};t._completeMorph=n,t._morphHandler.setInputAction(n,Zi.LEFT_DOWN),t._morphHandler.setInputAction(n,Zi.MIDDLE_DOWN),t._morphHandler.setInputAction(n,Zi.RIGHT_DOWN),t._morphHandler.setInputAction(n,Zi.WHEEL)}}function Zj(t){let e=t._currentTweens;for(let n=0;n<e.length;++n)e[n].cancelTween();t._currentTweens.length=0,t._morphHandler=t._morphHandler&&t._morphHandler.destroy()}var G2e=new gt,A2e=new p,T2e=new L;function ABt(t,e){let n=t._scene,i=n.camera,o=wat,a=o.position,s=o.direction,l=o.up,r=n.mapProjection.unproject(i.position,G2e);e.cartographicToCartesian(r,a);let d=e.scaleToGeodeticSurface(a,A2e),m=Pe.eastNorthUpToFixedFrame(d,e,T2e);return L.multiplyByPointAsVector(m,i.direction,s),L.multiplyByPointAsVector(m,i.up,l),o}var S2e=new p,g2e=new p,E2e=new p,C2e=new p,I2e=new p,N2e=new p;function Hat(t,e,n,i){e*=.5;let o=t._scene,a=o.camera,s=p.clone(a.position,S2e),l=p.clone(a.direction,g2e),r=p.clone(a.up,E2e),d=L.multiplyByPoint(Aa.TRANSFORM_2D_INVERSE,n.position,C2e),m=L.multiplyByPointAsVector(Aa.TRANSFORM_2D_INVERSE,n.direction,I2e),h=L.multiplyByPointAsVector(Aa.TRANSFORM_2D_INVERSE,n.up,N2e);function Z(u){Nu(s,d,u.time,a.position),Nu(l,m,u.time,a.direction),Nu(r,h,u.time,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.right,a.right)}let b=o.tweens.add({duration:e,easingFunction:Zl.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:Z,complete:function(){BBt(t,o,0,1,e,i)}});t._currentTweens.push(b)}var y2e=new wn,TBt=new p,SBt=new p,gBt=new p,Pat=new p,EBt=new p,CBt=new p;function B2e(t,e,n){e/=3;let i=t._scene,o=i.camera,a;e>0?(a=wat,p.fromDegrees(0,0,5*n.maximumRadius,n,a.position),p.negate(a.position,a.direction),p.normalize(a.direction,a.direction),p.clone(p.UNIT_Z,a.up)):(o.position.z=o.frustum.right-o.frustum.left,a=ABt(t,n));let s;t._morphToOrthographic?(s=y2e,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=GBt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=k.toRadians(60)),a.frustum=s;let l=QBt(a);A9(t,l);let r;t._morphToOrthographic?r=function(){Hat(t,e,a,l)}:r=function(){NBt(t,e,a,function(){Hat(t,e,a,l)})},e>0?(i._mode=ut.SCENE2D,o.flyTo({duration:e,destination:p.fromDegrees(0,0,5*n.maximumRadius,n,Pat),complete:function(){i._mode=ut.MORPHING,r()}})):r()}function Nu(t,e,n,i){return p.lerp(t,e,n,i)}function IBt(t,e,n,i,o){let a=t._scene,s=a.camera;if(s.frustum instanceof wn)return;let l=s.frustum.fov,r=k.RADIANS_PER_DEGREE*.5,d=n.position.z*Math.tan(l*.5);s.frustum.far=d/Math.tan(r*.5)+1e7;function m(Z){s.frustum.fov=k.lerp(l,r,Z.time);let b=d/Math.tan(s.frustum.fov*.5);i(s,b)}let h=a.tweens.add({duration:e,easingFunction:Zl.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:m,complete:function(){s.frustum=n.frustum.clone(),o(t)}});t._currentTweens.push(h)}var Q2e=new p,k2e=new p,Y2e=new p,Oat=new p,x2e=new p,X2e=new p,J2e=new el,L2e=new di,M2e=new p,_2e={position:void 0,direction:void 0,up:void 0,frustum:void 0};function D2e(t,e){e*=.5;let n=t._scene,i=n.camera,o=p.clone(i.position,Q2e),a=p.clone(i.direction,k2e),s=p.clone(i.up,Y2e),l=p.negate(p.UNIT_Z,x2e),r=p.clone(p.UNIT_Y,X2e),d=Oat;if(e>0)p.clone(p.ZERO,Oat),d.z=5*n.mapProjection.ellipsoid.maximumRadius;else{p.clone(o,Oat);let U=L2e;L.multiplyByPoint(Aa.TRANSFORM_2D,o,U.origin),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a,U.direction);let G=n.globe;if(c(G)){let A=G.pickWorldCoordinates(U,n,!0,M2e);c(A)&&(L.multiplyByPoint(Aa.TRANSFORM_2D_INVERSE,A,d),d.z+=p.distance(o,d))}}let m=J2e;m.right=d.z*.5,m.left=-m.right,m.top=m.right*(n.drawingBufferHeight/n.drawingBufferWidth),m.bottom=-m.top;let h=_2e;h.position=d,h.direction=l,h.up=r,h.frustum=m;let Z=kBt(h);A9(t,Z);function b(U){Nu(o,d,U.time,i.position),Nu(a,l,U.time,i.direction),Nu(s,r,U.time,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function u(U,G){U.position.z=G}let F=n.tweens.add({duration:e,easingFunction:Zl.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:b,complete:function(){IBt(t,e,h,u,Z)}});t._currentTweens.push(F)}var UBt=new gt,O2e={position:new p,direction:new p,up:new p,position2D:new p,direction2D:new p,up2D:new p,frustum:new el},H2e={position:new p,direction:new p,up:new p,frustum:void 0},w2e=new p,P2e=new di,v2e=new L,K2e=new p;function z2e(t,e,n){e*=.5;let i=t._scene,o=i.camera,a=O2e;if(e>0)p.clone(p.ZERO,a.position),a.position.z=5*n.maximumRadius,p.negate(p.UNIT_Z,a.direction),p.clone(p.UNIT_Y,a.up);else{n.cartesianToCartographic(o.positionWC,UBt),i.mapProjection.project(UBt,a.position),p.negate(p.UNIT_Z,a.direction),p.clone(p.UNIT_Y,a.up);let h=P2e;p.clone(a.position2D,h.origin);let Z=p.clone(o.directionWC,h.direction),b=n.scaleToGeodeticSurface(o.positionWC,K2e),u=Pe.eastNorthUpToFixedFrame(b,n,v2e);L.inverseTransformation(u,u),L.multiplyByPointAsVector(u,Z,Z),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,Z,Z);let F=i.globe;if(c(F)){let U=F.pickWorldCoordinates(h,i,!0,w2e);if(c(U)){let G=p.distance(a.position2D,U);U.x+=G,p.clone(U,a.position2D)}}}function s(h,Z){h.position.x=Z}L.multiplyByPoint(Aa.TRANSFORM_2D,a.position,a.position2D),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a.direction,a.direction2D),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a.up,a.up2D);let l=a.frustum;l.right=a.position.z*.5,l.left=-l.right,l.top=l.right*(i.drawingBufferHeight/i.drawingBufferWidth),l.bottom=-l.top;let r=H2e;L.multiplyByPoint(Aa.TRANSFORM_2D_INVERSE,a.position2D,r.position),p.clone(a.direction,r.direction),p.clone(a.up,r.up),r.frustum=l;let d=kBt(r);A9(t,d);function m(){IBt(t,e,a,s,d)}yBt(t,e,a,m)}function NBt(t,e,n,i){let o=t._scene,a=o.camera,s=a.frustum.right-a.frustum.left;a.frustum=n.frustum.clone();let l=a.frustum.fov,r=k.RADIANS_PER_DEGREE*.5,d=s*Math.tan(l*.5);a.frustum.far=d/Math.tan(r*.5)+1e7,a.frustum.fov=r;function m(Z){a.frustum.fov=k.lerp(r,l,Z.time),a.position.z=d/Math.tan(a.frustum.fov*.5)}let h=o.tweens.add({duration:e,easingFunction:Zl.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:m,complete:function(){i(t)}});t._currentTweens.push(h)}function j2e(t,e,n,i){e*=.5;let o=t._scene,a=o.camera,s=p.clone(n.position,Pat),l=p.clone(n.direction,EBt),r=p.clone(n.up,CBt);o._mode=ut.MORPHING;function d(){a.frustum=n.frustum.clone();let m=p.clone(a.position,TBt),h=p.clone(a.direction,SBt),Z=p.clone(a.up,gBt);m.z=s.z;function b(F){Nu(m,s,F.time,a.position),Nu(h,l,F.time,a.direction),Nu(Z,r,F.time,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.right,a.right)}let u=o.tweens.add({duration:e,easingFunction:Zl.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:b,complete:function(){i(t)}});t._currentTweens.push(u)}t._morphToOrthographic?d():NBt(t,0,n,d)}function yBt(t,e,n,i){let o=t._scene,a=o.camera,s=p.clone(a.position,TBt),l=p.clone(a.direction,SBt),r=p.clone(a.up,gBt),d=p.clone(n.position2D,Pat),m=p.clone(n.direction2D,EBt),h=p.clone(n.up2D,CBt);function Z(u){Nu(s,d,u.time,a.position),Nu(l,m,u.time,a.direction),Nu(r,h,u.time,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.right,a.right),a._adjustOrthographicFrustum(!0)}let b=o.tweens.add({duration:e,easingFunction:Zl.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:Z,complete:function(){BBt(t,o,1,0,e,i)}});t._currentTweens.push(b)}function BBt(t,e,n,i,o,a){let s={object:e,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:Zl.QUARTIC_OUT};c(a)&&(s.complete=function(){a(t)});let l=e.tweens.addProperty(s);t._currentTweens.push(l)}function QBt(t){return function(e){let n=e._scene;n._mode=ut.SCENE3D,n.morphTime=ut.getMorphTime(ut.SCENE3D),Zj(e);let i=n.camera;(e._previousMode!==ut.MORPHING||e._morphCancelled)&&(e._morphCancelled=!1,p.clone(t.position,i.position),p.clone(t.direction,i.direction),p.clone(t.up,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right),i.frustum=t.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let a=c(e._completeMorph);e._completeMorph=void 0,n.camera.update(n.mode),e._scene.morphComplete.raiseEvent(e,e._previousMode,ut.SCENE3D,a)}}function kBt(t){return function(e){let n=e._scene;n._mode=ut.SCENE2D,n.morphTime=ut.getMorphTime(ut.SCENE2D),Zj(e);let i=n.camera;p.clone(t.position,i.position),i.position.z=n.mapProjection.ellipsoid.maximumRadius*2,p.clone(t.direction,i.direction),p.clone(t.up,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right),i.frustum=t.frustum.clone();let o=c(e._completeMorph);e._completeMorph=void 0,n.camera.update(n.mode),e._scene.morphComplete.raiseEvent(e,e._previousMode,ut.SCENE2D,o)}}function q2e(t){return function(e){let n=e._scene;n._mode=ut.COLUMBUS_VIEW,n.morphTime=ut.getMorphTime(ut.COLUMBUS_VIEW),Zj(e);let i=n.camera;(e._previousModeMode!==ut.MORPHING||e._morphCancelled)&&(e._morphCancelled=!1,p.clone(t.position,i.position),p.clone(t.direction,i.direction),p.clone(t.up,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let a=c(e._completeMorph);e._completeMorph=void 0,n.camera.update(n.mode),e._scene.morphComplete.raiseEvent(e,e._previousMode,ut.COLUMBUS_VIEW,a)}}var T9=NS;var sko=R(W(),1);var G2o=R(W(),1);var p2o=R(W(),1),$2e={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},Mo=Object.freeze($2e);function pc(t,e){let n=t;return c(e)&&(n+=`+${e}`),n}function tke(t,e){K.clone(t.distance.startPosition,e.distance.startPosition),K.clone(t.distance.endPosition,e.distance.endPosition),K.clone(t.angleAndHeight.startPosition,e.angleAndHeight.startPosition),K.clone(t.angleAndHeight.endPosition,e.angleAndHeight.endPosition)}function YBt(t,e,n){let i=pc(Mo.PINCH,e),o=t._update,a=t._isDown,s=t._eventStartPosition,l=t._pressTime,r=t._releaseTime;o[i]=!0,a[i]=!1,s[i]=new K;let d=t._movement[i];c(d)||(d=t._movement[i]={}),d.distance={startPosition:new K,endPosition:new K},d.angleAndHeight={startPosition:new K,endPosition:new K},d.prevAngle=0,t._eventHandler.setInputAction(function(m){t._buttonsDown++,a[i]=!0,l[i]=new Date,K.lerp(m.position1,m.position2,.5,s[i])},Zi.PINCH_START,e),t._eventHandler.setInputAction(function(){t._buttonsDown=Math.max(t._buttonsDown-1,0),a[i]=!1,r[i]=new Date},Zi.PINCH_END,e),t._eventHandler.setInputAction(function(m){if(a[i]){o[i]?(tke(m,d),o[i]=!1,d.prevAngle=d.angleAndHeight.startPosition.x):(K.clone(m.distance.endPosition,d.distance.endPosition),K.clone(m.angleAndHeight.endPosition,d.angleAndHeight.endPosition));let h=d.angleAndHeight.endPosition.x,Z=d.prevAngle,b=Math.PI*2;for(;h>=Z+Math.PI;)h-=b;for(;h<Z-Math.PI;)h+=b;d.angleAndHeight.endPosition.x=-h*n.clientWidth/12,d.angleAndHeight.startPosition.x=-Z*n.clientWidth/12}},Zi.PINCH_MOVE,e)}function xBt(t,e){let n=pc(Mo.WHEEL,e),i=t._pressTime,o=t._releaseTime,a=t._update;a[n]=!0;let s=t._movement[n];c(s)||(s=t._movement[n]={});let l=t._lastMovement[n];c(l)||(l=t._lastMovement[n]={startPosition:new K,endPosition:new K,valid:!1}),s.startPosition=new K,K.clone(K.ZERO,s.startPosition),s.endPosition=new K,t._eventHandler.setInputAction(function(r){let d=7.5*k.toRadians(r);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=d,K.clone(s.endPosition,l.endPosition),l.valid=!0,a[n]=!1},Zi.WHEEL,e)}function H1(t,e,n){let i=pc(n,e),o=t._isDown,a=t._eventStartPosition,s=t._pressTime,l=t._releaseTime;o[i]=!1,a[i]=new K;let r=t._lastMovement[i];c(r)||(r=t._lastMovement[i]={startPosition:new K,endPosition:new K,valid:!1});let d,m;n===Mo.LEFT_DRAG?(d=Zi.LEFT_DOWN,m=Zi.LEFT_UP):n===Mo.RIGHT_DRAG?(d=Zi.RIGHT_DOWN,m=Zi.RIGHT_UP):n===Mo.MIDDLE_DRAG&&(d=Zi.MIDDLE_DOWN,m=Zi.MIDDLE_UP),t._eventHandler.setInputAction(function(h){t._buttonsDown++,r.valid=!1,o[i]=!0,s[i]=new Date,K.clone(h.position,a[i])},d,e),t._eventHandler.setInputAction(function(){t._buttonsDown=Math.max(t._buttonsDown-1,0),o[i]=!1,l[i]=new Date},m,e)}function XBt(t,e){K.clone(t.startPosition,e.startPosition),K.clone(t.endPosition,e.endPosition)}function JBt(t,e){let n=t._update,i=t._movement,o=t._lastMovement,a=t._isDown;for(let s in Mo)if(Mo.hasOwnProperty(s)){let l=Mo[s];if(c(l)){let r=pc(l,e);n[r]=!0,c(t._lastMovement[r])||(t._lastMovement[r]={startPosition:new K,endPosition:new K,valid:!1}),c(t._movement[r])||(t._movement[r]={startPosition:new K,endPosition:new K})}}t._eventHandler.setInputAction(function(s){for(let l in Mo)if(Mo.hasOwnProperty(l)){let r=Mo[l];if(c(r)){let d=pc(r,e);a[d]&&(n[d]?(XBt(i[d],o[d]),o[d].valid=!0,XBt(s,i[d]),n[d]=!1):K.clone(s.endPosition,i[d].endPosition))}}K.clone(s.endPosition,t._currentMousePosition)},Zi.MOUSE_MOVE,e)}function yu(t){this._eventHandler=new sp(t),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new K,xBt(this,void 0),YBt(this,void 0,t),H1(this,void 0,Mo.LEFT_DRAG),H1(this,void 0,Mo.RIGHT_DRAG),H1(this,void 0,Mo.MIDDLE_DRAG),JBt(this,void 0);for(let e in id)if(id.hasOwnProperty(e)){let n=id[e];c(n)&&(xBt(this,n),YBt(this,n,t),H1(this,n,Mo.LEFT_DRAG),H1(this,n,Mo.RIGHT_DRAG),H1(this,n,Mo.MIDDLE_DRAG),JBt(this,n))}}Object.defineProperties(yu.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let t=!this._update[pc(Mo.WHEEL)]||!this._update[pc(Mo.WHEEL,id.SHIFT)]||!this._update[pc(Mo.WHEEL,id.CTRL)]||!this._update[pc(Mo.WHEEL,id.ALT)];return this._buttonsDown>0||t}}});yu.prototype.isMoving=function(t,e){let n=pc(t,e);return!this._update[n]};yu.prototype.getMovement=function(t,e){let n=pc(t,e);return this._movement[n]};yu.prototype.getLastMovement=function(t,e){let n=pc(t,e),i=this._lastMovement[n];if(i.valid)return i};yu.prototype.isButtonDown=function(t,e){let n=pc(t,e);return this._isDown[n]};yu.prototype.getStartMousePosition=function(t,e){if(t===Mo.WHEEL)return this._currentMousePosition;let n=pc(t,e);return this._eventStartPosition[n]};yu.prototype.getButtonPressTime=function(t,e){let n=pc(t,e);return this._pressTime[n]};yu.prototype.getButtonReleaseTime=function(t,e){let n=pc(t,e);return this._releaseTime[n]};yu.prototype.reset=function(){for(let t in this._update)this._update.hasOwnProperty(t)&&(this._update[t]=!0)};yu.prototype.isDestroyed=function(){return!1};yu.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),At(this)};var S9=yu;var y2o=R(W(),1);function Vj(t,e,n,i,o,a,s,l,r,d){this._tweens=t,this._tweenjs=e,this._startObject=be(n),this._stopObject=be(i),this._duration=o,this._delay=a,this._easingFunction=s,this._update=l,this._complete=r,this.cancel=d,this.needsStart=!0}Object.defineProperties(Vj.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});Vj.prototype.cancelTween=function(){this._tweens.remove(this)};function mV(){this._tweens=[]}Object.defineProperties(mV.prototype,{length:{get:function(){return this._tweens.length}}});mV.prototype.add=function(t){if(t=f(t,f.EMPTY_OBJECT),t.duration===0)return c(t.complete)&&t.complete(),new Vj(this);let e=t.duration/xi.SECONDS_PER_MILLISECOND,n=f(t.delay,0),i=n/xi.SECONDS_PER_MILLISECOND,o=f(t.easingFunction,Zl.LINEAR_NONE),a=t.startObject,s=new SEt(a);s.to(be(t.stopObject),e),s.delay(i),s.easing(o),c(t.update)&&s.onUpdate(function(){t.update(a)}),s.onComplete(f(t.complete,null)),s.repeat(f(t._repeat,0));let l=new Vj(this,s,t.startObject,t.stopObject,t.duration,n,o,t.update,t.complete,t.cancel);return this._tweens.push(l),l};mV.prototype.addProperty=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.object,n=t.property,i=t.startValue,o=t.stopValue;function a(s){e[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:f(t.duration,3),delay:t.delay,easingFunction:t.easingFunction,update:a,complete:t.complete,cancel:t.cancel,_repeat:t._repeat})};mV.prototype.addAlpha=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.material,n=[];for(let o in e.uniforms)e.uniforms.hasOwnProperty(o)&&c(e.uniforms[o])&&c(e.uniforms[o].alpha)&&n.push(o);function i(o){let a=n.length;for(let s=0;s<a;++s)e.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:f(t.startValue,0)},stopObject:{alpha:f(t.stopValue,1)},duration:f(t.duration,3),delay:t.delay,easingFunction:t.easingFunction,update:i,complete:t.complete,cancel:t.cancel})};mV.prototype.addOffsetIncrement=function(t){t=f(t,f.EMPTY_OBJECT);let n=t.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:t.duration,delay:t.delay,easingFunction:t.easingFunction,update:t.update,cancel:t.cancel,_repeat:1/0})};mV.prototype.remove=function(t){if(!c(t))return!1;let e=this._tweens.indexOf(t);return e!==-1?(t.tweenjs.stop(),c(t.cancel)&&t.cancel(),this._tweens.splice(e,1),!0):!1};mV.prototype.removeAll=function(){let t=this._tweens;for(let e=0;e<t.length;++e){let n=t[e];n.tweenjs.stop(),c(n.cancel)&&n.cancel()}t.length=0};mV.prototype.contains=function(t){return c(t)&&this._tweens.indexOf(t)!==-1};mV.prototype.get=function(t){return this._tweens[t]};mV.prototype.update=function(t){let e=this._tweens,n=0;for(t=c(t)?t/xi.SECONDS_PER_MILLISECOND:Oi();n<e.length;){let i=e[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(t)):o.update(t)?n++:(o.stop(),e.splice(n,1))}};var yS=mV;function E9(t){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.translateEventTypes=Mo.LEFT_DRAG,this.zoomEventTypes=[Mo.RIGHT_DRAG,Mo.WHEEL,Mo.PINCH],this.rotateEventTypes=Mo.LEFT_DRAG,this.tiltEventTypes=[Mo.MIDDLE_DRAG,Mo.PINCH,{eventType:Mo.LEFT_DRAG,modifier:id.CTRL},{eventType:Mo.RIGHT_DRAG,modifier:id.CTRL}],this.lookEventTypes={eventType:Mo.LEFT_DRAG,modifier:id.SHIFT},this.minimumPickingTerrainHeight=15e4,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumCollisionTerrainHeight=15e3,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=75e5,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this._scene=t,this._globe=void 0,this._ellipsoid=void 0,this._lastGlobeHeight=0,this._aggregator=new S9(t.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new yS,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new K(-1,-1),this._tiltCenter=new p,this._rotateMousePosition=new K(-1,-1),this._rotateStartPosition=new p,this._strafeStartPosition=new p,this._strafeMousePosition=new K,this._strafeEndMousePosition=new K,this._zoomMouseStart=new K(-1,-1),this._zoomWorldPosition=new p,this._useZoomWorldPosition=!1,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let e=t.mapProjection;this._maxCoord=e.project(new gt(Math.PI,k.PI_OVER_TWO)),this._zoomFactor=5,this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function eke(t,e){if(t<0)return 0;let n=(1-e)*25;return Math.exp(-n*t)}function nke(t){return K.equalsEpsilon(t.startPosition,t.endPosition,k.EPSILON14)}var ike=.4;function oke(t,e,n,i,o,a,s){let l=a[s];c(l)||(l=a[s]={startPosition:new K,endPosition:new K,motion:new K,inertiaEnabled:!0});let r=t.getButtonPressTime(e,n),d=t.getButtonReleaseTime(e,n),m=r&&d&&(d.getTime()-r.getTime())/1e3,Z=d&&(new Date().getTime()-d.getTime())/1e3;if(r&&d&&m<ike){let b=eke(Z,i),u=t.getLastMovement(e,n);if(!c(u)||nke(u)||!l.inertiaEnabled||(l.motion.x=(u.endPosition.x-u.startPosition.x)*.5,l.motion.y=(u.endPosition.y-u.startPosition.y)*.5,l.startPosition=K.clone(u.startPosition,l.startPosition),l.endPosition=K.multiplyByScalar(l.motion,b,l.endPosition),l.endPosition=K.add(l.startPosition,l.endPosition,l.endPosition),isNaN(l.endPosition.x)||isNaN(l.endPosition.y)||K.distance(l.startPosition,l.endPosition)<.5))return;if(!t.isButtonDown(e,n)){let F=t.getStartMousePosition(e,n);o(a,F,l)}}}function ake(t,e){if(c(e)){let n=t[e];c(n)&&(n.inertiaEnabled=!0);let i=t._inertiaDisablers[e];if(c(i)){let o=i.length;for(let a=0;a<o;++a)n=t[i[a]],c(n)&&(n.inertiaEnabled=!1)}}}var LBt=[];function om(t,e,n,i,o,a){if(!c(n))return;let s=t._aggregator;Array.isArray(n)||(LBt[0]=n,n=LBt);let l=n.length;for(let r=0;r<l;++r){let d=n[r],m=c(d.eventType)?d.eventType:d,h=d.modifier,Z=s.isMoving(m,h)&&s.getMovement(m,h),b=s.getStartMousePosition(m,h);t.enableInputs&&e&&(Z?(i(t,b,Z),ake(t,a)):o<1&&oke(s,m,h,o,i,t,a))}}var bj=new di,ske=new p,lke=new K,rke=new p,dke=new K,cke=new p,mke=new p,hke=new p,pke=new p,uke=new p,Zke=new p,Vke=new p,bke=new p,Rke=new p,Wke=new p,fke=new p,Fke=new p,Uke=new p,Gke=new p,Ake=new p,BS=new p,MBt=new p,_Bt=new p,vat={orientation:new Jr};function nst(t,e,n,i,o,a){let s=1;c(a)&&(s=k.clamp(Math.abs(a),.25,1));let l=n.endPosition.y-n.startPosition.y,d=l>0?t.minimumZoomDistance*s:0,m=t.maximumZoomDistance,h=o-d,Z=i*h;Z=k.clamp(Z,t._minimumZoomRate,t._maximumZoomRate);let b=l/t._scene.canvas.clientHeight;b=Math.min(b,t.maximumMovementRatio);let u=Z*b;if(t.enableCollisionDetection||t.minimumZoomDistance===0||!c(t._globe)){if(u>0&&Math.abs(o-d)<1||u<0&&Math.abs(o-m)<1)return;o-u<d?u=o-d-1:o-u>m&&(u=o-m)}let F=t._scene,U=F.camera,G=F.mode,A=vat.orientation;if(A.heading=U.heading,A.pitch=U.pitch,A.roll=U.roll,U.frustum instanceof wn){Math.abs(u)>0&&(U.zoomIn(u),U._adjustOrthographicFrustum());return}let T=K.equals(e,t._zoomMouseStart),g=t._zoomingOnVector,C=t._rotatingZoom,y;if(T||(t._zoomMouseStart=K.clone(e,t._zoomMouseStart),c(t._globe)&&(G===ut.SCENE2D?(y=U.getPickRay(e,bj).origin,y=p.fromElements(y.y,y.z,y.x)):y=GU(t,e,ske)),c(y)?(t._useZoomWorldPosition=!0,t._zoomWorldPosition=p.clone(y,t._zoomWorldPosition)):t._useZoomWorldPosition=!1,g=t._zoomingOnVector=!1,C=t._rotatingZoom=!1,t._zoomingUnderground=t._cameraUnderground),!t._useZoomWorldPosition){U.zoomIn(u);return}let Y=G===ut.COLUMBUS_VIEW;if(U.positionCartographic.height<2e6&&(C=!0),!T||C){if(G===ut.SCENE2D){let Q=t._zoomWorldPosition,J=U.position;if(!p.equals(Q,J)&&U.positionCartographic.height<t._maxCoord.x*2){let M=U.position.x,V=p.subtract(Q,J,rke);p.normalize(V,V);let E=p.distance(Q,J)*u/(U.getMagnitude()*.5);U.move(V,E*.5),(U.position.x<0&&M>0||U.position.x>0&&M<0)&&(y=U.getPickRay(e,bj).origin,y=p.fromElements(y.y,y.z,y.x),t._zoomWorldPosition=p.clone(y,t._zoomWorldPosition))}}else if(G===ut.SCENE3D){let Q=p.normalize(U.position,uke);if(t._cameraUnderground||t._zoomingUnderground||U.positionCartographic.height<3e3&&Math.abs(p.dot(U.direction,Q))<.6)Y=!0;else{let J=F.canvas,M=dke;M.x=J.clientWidth/2,M.y=J.clientHeight/2;let V=GU(t,M,cke);if(!c(V))Y=!0;else if(U.positionCartographic.height<1e6)if(p.dot(U.direction,Q)>=-.5)Y=!0;else{let E=Vke;p.clone(U.position,E);let I=t._zoomWorldPosition,B=Zke;if(B=p.normalize(I,B),p.dot(B,Q)<0)return;let X=Ake,_=Wke;p.clone(U.direction,_),p.add(E,p.multiplyByScalar(_,1e3,BS),X);let P=fke,w=Fke;p.subtract(I,E,P),p.normalize(P,w);let z=p.dot(Q,w);if(z>=0){t._zoomMouseStart.x=-1;return}let H=Math.acos(-z),nt=p.magnitude(E),$=p.magnitude(I),dt=nt-u,q=p.magnitude(P),at=Math.asin(k.clamp(q/$*Math.sin(H),-1,1)),st=Math.asin(k.clamp(dt/$*Math.sin(H),-1,1)),Et=at-st+H,Qt=bke;p.normalize(E,Qt);let Wt=Rke;Wt=p.cross(w,Qt,Wt),Wt=p.normalize(Wt,Wt),p.normalize(p.cross(Qt,Wt,BS),_),p.multiplyByScalar(p.normalize(X,BS),p.magnitude(X)-u,X),p.normalize(E,E),p.multiplyByScalar(E,dt,E);let Nt=Uke;p.multiplyByScalar(p.add(p.multiplyByScalar(Qt,Math.cos(Et)-1,MBt),p.multiplyByScalar(_,Math.sin(Et),_Bt),BS),dt,Nt),p.add(E,Nt,E),p.normalize(X,Qt),p.normalize(p.cross(Qt,Wt,BS),_);let kt=Gke;p.multiplyByScalar(p.add(p.multiplyByScalar(Qt,Math.cos(Et)-1,MBt),p.multiplyByScalar(_,Math.sin(Et),_Bt),BS),p.magnitude(X),kt),p.add(X,kt,X),p.clone(E,U.position),p.normalize(p.subtract(X,E,BS),U.direction),p.clone(U.direction,U.direction),p.cross(U.direction,U.up,U.right),p.cross(U.right,U.direction,U.up),U.setView(vat);return}else{let E=p.normalize(V,mke),I=p.normalize(t._zoomWorldPosition,hke),B=p.dot(I,E);if(B>0&&B<1){let X=k.acosClamped(B),_=p.cross(I,E,pke),P=Math.abs(X)>k.toRadians(20)?U.positionCartographic.height*.75:U.positionCartographic.height-u,w=u/P;U.rotate(_,X*w)}}}}t._rotatingZoom=!Y}if(!T&&Y||g){let Q,J=qo.wgs84ToWindowCoordinates(F,t._zoomWorldPosition,lke);G!==ut.COLUMBUS_VIEW&&K.equals(e,t._zoomMouseStart)&&c(J)?Q=U.getPickRay(J,bj):Q=U.getPickRay(e,bj);let M=Q.direction;(G===ut.COLUMBUS_VIEW||G===ut.SCENE2D)&&p.fromElements(M.y,M.z,M.x,M),U.move(M,u),t._zoomingOnVector=!0}else U.zoomIn(u);t._cameraUnderground||U.setView(vat)}var Tke=new di,Ske=new di,gke=new p;function Eke(t,e,n){let o=t._scene.camera,a=o.getPickRay(n.startPosition,Tke).origin,s=o.getPickRay(n.endPosition,Ske).origin;a=p.fromElements(a.y,a.z,a.x,a),s=p.fromElements(s.y,s.z,s.x,s);let l=p.subtract(a,s,gke),r=p.magnitude(l);r>0&&(p.normalize(l,l),o.move(l,r))}function DBt(t,e,n){c(n.distance)&&(n=n.distance);let o=t._scene.camera;nst(t,e,n,t._zoomFactor,o.getMagnitude())}var Cke=new K,Ike=new K;function OBt(t,e,n){if(c(n.angleAndHeight)){Nke(t,e,n.angleAndHeight);return}let i=t._scene,o=i.camera,a=i.canvas,s=a.clientWidth,l=a.clientHeight,r=Cke;r.x=2/s*n.startPosition.x-1,r.y=2/l*(l-n.startPosition.y)-1,r=K.normalize(r,r);let d=Ike;d.x=2/s*n.endPosition.x-1,d.y=2/l*(l-n.endPosition.y)-1,d=K.normalize(d,d);let m=k.acosClamped(r.x);r.y<0&&(m=k.TWO_PI-m);let h=k.acosClamped(d.x);d.y<0&&(h=k.TWO_PI-h);let Z=h-m;o.twistRight(Z)}function Nke(t,e,n){let i=t._rotateFactor*t._rotateRateRangeAdjustment;i>t._maximumRotateRate&&(i=t._maximumRotateRate),i<t._minimumRotateRate&&(i=t._minimumRotateRate);let o=t._scene,a=o.camera,s=o.canvas,l=(n.endPosition.x-n.startPosition.x)/s.clientWidth;l=Math.min(l,t.maximumMovementRatio);let r=i*l*Math.PI*4;a.twistRight(r)}function yke(t){let e=t._scene.mapMode2D===eh.ROTATE;L.equals(L.IDENTITY,t._scene.camera.transform)?(om(t,t.enableTranslate,t.translateEventTypes,Eke,t.inertiaTranslate,"_lastInertiaTranslateMovement"),om(t,t.enableZoom,t.zoomEventTypes,DBt,t.inertiaZoom,"_lastInertiaZoomMovement"),e&&om(t,t.enableRotate,t.tiltEventTypes,OBt,t.inertiaSpin,"_lastInertiaTiltMovement")):(om(t,t.enableZoom,t.zoomEventTypes,DBt,t.inertiaZoom,"_lastInertiaZoomMovement"),e&&om(t,t.enableRotate,t.translateEventTypes,OBt,t.inertiaSpin,"_lastInertiaSpinMovement"))}var KBt=new di,Bke=new p,Qke=new p;function GU(t,e,n){let i=t._scene,o=t._globe,a=i.camera;if(!c(o))return;let s=!t._cameraUnderground,l;i.pickPositionSupported&&(l=i.pickPositionWorldCoordinates(e,Bke));let r=a.getPickRay(e,KBt),d=o.pickWorldCoordinates(r,i,s,Qke),m=c(l)?p.distance(l,a.positionWC):Number.POSITIVE_INFINITY,h=c(d)?p.distance(d,a.positionWC):Number.POSITIVE_INFINITY;return m<h?p.clone(l,n):p.clone(d,n)}var kke=new gt;function Gj(t){let e=t._ellipsoid,n=t._scene,i=n.camera,o=n.mode,a=0;if(o===ut.SCENE3D){let r=e.cartesianToCartographic(i.position,kke);c(r)&&(a=r.height)}else a=i.position.z;let s=f(t._scene.globeHeight,0);return Math.abs(s-a)}var Yke=new p;function zBt(t,e){let n=e.origin,i=e.direction,o=Gj(t),a=p.normalize(n,Yke),s=Math.abs(p.dot(a,i));return s=Math.max(s,.5)*2,o*s}function jBt(t,e,n,i){let o=p.distance(e.origin,n),a=Gj(t),s=k.clamp(a*5,t._minimumUndergroundPickDistance,t._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,a/5),o=Math.max(o,100)),di.getPoint(e,o,i)}function qBt(t,e,n,i){let o;return c(n)?(o=p.distance(e.origin,n),o>t._maximumUndergroundPickDistance&&(o=Gj(t))):o=Gj(t),di.getPoint(e,o,i)}var xke=new K;function $Bt(t,e){let n=e.endPosition,i=K.subtract(e.endPosition,e.startPosition,xke),o=t._strafeEndMousePosition;K.add(o,i,o),e.endPosition=o,ist(t,e,t._strafeStartPosition),e.endPosition=n}var HBt=new di,Xke=new di,Kat=new p,Jke=new p,Lke=new p,Mke=new p,_ke=new Kn(p.UNIT_X,0),Dke=new K,Oke=new K;function Hke(t,e,n){if(p.equals(e,t._translateMousePosition)||(t._looking=!1),p.equals(e,t._strafeMousePosition)||(t._strafing=!1),t._looking){rp(t,e,n);return}if(t._strafing){$Bt(t,n);return}let o=t._scene.camera,a=t._cameraUnderground,s=K.clone(n.startPosition,Dke),l=K.clone(n.endPosition,Oke),r=o.getPickRay(s,HBt),d=p.clone(p.ZERO,Mke),m=p.UNIT_X,h;if(o.position.z<t._minimumPickingTerrainHeight&&(h=GU(t,s,Kat),c(h)&&(d.x=h.x)),a||d.x>o.position.z&&c(h)){let T=h;a&&(T=qBt(t,r,h,Kat)),K.clone(e,t._strafeMousePosition),K.clone(e,t._strafeEndMousePosition),p.clone(T,t._strafeStartPosition),t._strafing=!0,ist(t,n,t._strafeStartPosition);return}let Z=Kn.fromPointNormal(d,m,_ke);r=o.getPickRay(s,HBt);let b=no.rayPlane(r,Z,Kat),u=o.getPickRay(l,Xke),F=no.rayPlane(u,Z,Jke);if(!c(b)||!c(F)){t._looking=!0,rp(t,e,n),K.clone(e,t._translateMousePosition);return}let U=p.subtract(b,F,Lke),G=U.x;U.x=U.y,U.y=U.z,U.z=G;let A=p.magnitude(U);A>k.EPSILON6&&(p.normalize(U,U),o.move(U,A))}var tQt=new K,Wj=new di,fj=new p,wke=new p,eQt=new L,Pke=new L,vke=new p,Kke=new Kn(p.UNIT_X,0),zat=new p,$at=new gt,nQt=new L,zke=new wt,jke=new ot,Fj=new p;function qke(t,e,n){if(c(n.angleAndHeight)&&(n=n.angleAndHeight),K.equals(e,t._tiltCenterMousePosition)||(t._tiltCVOffMap=!1,t._looking=!1),t._looking){rp(t,e,n);return}let o=t._scene.camera;t._tiltCVOffMap||!t.onMap()||Math.abs(o.position.z)>t._minimumPickingTerrainHeight?(t._tiltCVOffMap=!0,$ke(t,e,n)):tYe(t,e,n)}function $ke(t,e,n){let i=t._scene,o=i.camera,a=i.canvas,s=tQt;s.x=a.clientWidth/2,s.y=a.clientHeight/2;let l=o.getPickRay(s,Wj),r=p.UNIT_X,d=l.origin,m=l.direction,h,Z=p.dot(r,m);if(Math.abs(Z)>k.EPSILON6&&(h=-p.dot(r,d)/Z),!c(h)||h<=0){t._looking=!0,rp(t,e,n),K.clone(e,t._tiltCenterMousePosition);return}let b=p.multiplyByScalar(m,h,fj);p.add(d,b,b);let u=i.mapProjection,F=u.ellipsoid;p.fromElements(b.y,b.z,b.x,b);let U=u.unproject(b,$at);F.cartographicToCartesian(U,b);let G=Pe.eastNorthUpToFixedFrame(b,F,eQt),A=t._globe,T=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let g=L.clone(o.transform,nQt);o._setTransform(G),lp(t,e,n,p.UNIT_Z),o._setTransform(g),t._globe=A,t._ellipsoid=T;let C=T.maximumRadius;t._rotateFactor=1/C,t._rotateRateRangeAdjustment=C}function tYe(t,e,n){let i=t._scene,o=i.camera,a=t._cameraUnderground,s,l,r=p.UNIT_X;if(K.equals(e,t._tiltCenterMousePosition))s=p.clone(t._tiltCenter,fj);else{if(o.position.z<t._minimumPickingTerrainHeight&&(s=GU(t,e,fj)),!c(s)){l=o.getPickRay(e,Wj);let V=l.origin,E=l.direction,I,B=p.dot(r,E);if(Math.abs(B)>k.EPSILON6&&(I=-p.dot(r,V)/B),!c(I)||I<=0){t._looking=!0,rp(t,e,n),K.clone(e,t._tiltCenterMousePosition);return}s=p.multiplyByScalar(E,I,fj),p.add(V,s,s)}a&&(c(l)||(l=o.getPickRay(e,Wj)),jBt(t,l,s,s)),K.clone(e,t._tiltCenterMousePosition),p.clone(s,t._tiltCenter)}let d=i.canvas,m=tQt;m.x=d.clientWidth/2,m.y=t._tiltCenterMousePosition.y,l=o.getPickRay(m,Wj);let h=p.clone(p.ZERO,vke);h.x=s.x;let Z=Kn.fromPointNormal(h,r,Kke),b=no.rayPlane(l,Z,wke),u=o._projection,F=u.ellipsoid;p.fromElements(s.y,s.z,s.x,s);let U=u.unproject(s,$at);F.cartographicToCartesian(U,s);let G=Pe.eastNorthUpToFixedFrame(s,F,eQt),A;c(b)?(p.fromElements(b.y,b.z,b.x,b),U=u.unproject(b,$at),F.cartographicToCartesian(U,b),A=Pe.eastNorthUpToFixedFrame(b,F,Pke)):A=G;let T=t._globe,g=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let C=p.UNIT_Z,y=L.clone(o.transform,nQt);o._setTransform(G);let Y=p.cross(p.UNIT_Z,p.normalize(o.position,zat),zat),Q=p.dot(o.right,Y);if(lp(t,e,n,C,!1,!0),o._setTransform(A),Q<0){let V=n.startPosition.y-n.endPosition.y;(a&&V<0||!a&&V>0)&&(C=void 0);let E=o.constrainedAxis;o.constrainedAxis=void 0,lp(t,e,n,C,!0,!1),o.constrainedAxis=E}else lp(t,e,n,C,!0,!1);if(c(o.constrainedAxis)){let V=p.cross(o.direction,o.constrainedAxis,Fj);p.equalsEpsilon(V,p.ZERO,k.EPSILON6)||(p.dot(V,o.right)<0&&p.negate(V,V),p.cross(V,o.direction,o.up),p.cross(o.direction,o.up,o.right),p.normalize(o.up,o.up),p.normalize(o.right,o.right))}o._setTransform(y),t._globe=T,t._ellipsoid=g;let J=g.maximumRadius;t._rotateFactor=1/J,t._rotateRateRangeAdjustment=J;let M=p.clone(o.positionWC,zat);if(t.enableCollisionDetection&&sst(t,!0),!p.equals(o.positionWC,M)){o._setTransform(A),o.worldToCameraCoordinatesPoint(M,M);let V=p.magnitudeSquared(M);p.magnitudeSquared(o.position)>V&&(p.normalize(o.position,o.position),p.multiplyByScalar(o.position,Math.sqrt(V),o.position));let E=p.angleBetween(M,o.position),I=p.cross(M,o.position,M);p.normalize(I,I);let B=wt.fromAxisAngle(I,E,zke),X=ot.fromQuaternion(B,jke);ot.multiplyByVector(X,o.direction,o.direction),ot.multiplyByVector(X,o.up,o.up),p.cross(o.direction,o.up,o.right),p.cross(o.right,o.direction,o.up),o._setTransform(y)}}var iQt=new K,oQt=new di,aQt=new p;function eYe(t,e,n){c(n.distance)&&(n=n.distance);let i=t._scene,o=i.camera,a=i.canvas,s=t._cameraUnderground,l;s?l=e:(l=iQt,l.x=a.clientWidth/2,l.y=a.clientHeight/2);let r=o.getPickRay(l,oQt),d=r.origin,m=r.direction,h=o.position.z,Z;h<t._minimumPickingTerrainHeight&&(Z=GU(t,l,aQt));let b;if(c(Z)&&(b=p.distance(d,Z)),s){let u=zBt(t,r,h);c(b)?b=Math.min(b,u):b=u}if(!c(b)){let u=p.UNIT_X;b=-p.dot(u,d)/p.dot(u,m)}nst(t,e,n,t._zoomFactor,b)}function nYe(t){let n=t._scene.camera;if(!L.equals(L.IDENTITY,n.transform))om(t,t.enableRotate,t.rotateEventTypes,lp,t.inertiaSpin,"_lastInertiaSpinMovement"),om(t,t.enableZoom,t.zoomEventTypes,sQt,t.inertiaZoom,"_lastInertiaZoomMovement");else{let i=t._tweens;if(t._aggregator.anyButtonDown&&i.removeAll(),om(t,t.enableTilt,t.tiltEventTypes,qke,t.inertiaSpin,"_lastInertiaTiltMovement"),om(t,t.enableTranslate,t.translateEventTypes,Hke,t.inertiaTranslate,"_lastInertiaTranslateMovement"),om(t,t.enableZoom,t.zoomEventTypes,eYe,t.inertiaZoom,"_lastInertiaZoomMovement"),om(t,t.enableLook,t.lookEventTypes,rp),!t._aggregator.anyButtonDown&&!i.contains(t._tween)){let o=n.createCorrectPositionTween(t.bounceAnimationTime);c(o)&&(t._tween=i.add(o))}i.update()}}var iYe=new di,oYe=new Kn(p.UNIT_X,0),aYe=new p,sYe=new p,lYe=new p;function ist(t,e,n){let i=t._scene,o=i.camera,a=o.getPickRay(e.endPosition,iYe),s=p.clone(o.direction,sYe);i.mode===ut.COLUMBUS_VIEW&&p.fromElements(s.z,s.x,s.y,s);let l=Kn.fromPointNormal(n,s,oYe),r=no.rayPlane(a,l,aYe);c(r)&&(s=p.subtract(n,r,s),i.mode===ut.COLUMBUS_VIEW&&p.fromElements(s.y,s.z,s.x,s),p.add(o.position,s,o.position))}var wBt=new p,rYe=new gt,tst=new p,est=new mt,dYe=new p,cYe=new p;function mYe(t,e,n){let o=t._scene.camera,a=t._cameraUnderground,s=t._ellipsoid;if(!L.equals(o.transform,L.IDENTITY)){lp(t,e,n);return}let l,r,d=s.geodeticSurfaceNormal(o.position,dYe);if(K.equals(e,t._rotateMousePosition)){if(t._looking)rp(t,e,n,d);else if(t._rotating)lp(t,e,n);else if(t._strafing){if(o.ignoreEllipsoid)return;$Bt(t,n)}else{if(o.ignoreEllipsoid||p.magnitude(o.position)<p.magnitude(t._rotateStartPosition))return;l=p.magnitude(t._rotateStartPosition),r=tst,r.x=r.y=r.z=l,s=mt.fromCartesian3(r,est),qat(t,e,n,s)}return}t._looking=!1,t._rotating=!1,t._strafing=!1;let m=s.cartesianToCartographic(o.positionWC,rYe).height,h=t._globe;if(c(h)&&m<t._minimumPickingTerrainHeight){let Z=GU(t,n.startPosition,lYe);if(c(Z)&&!o.ignoreEllipsoid){let b=!1,u=o.getPickRay(n.startPosition,KBt);if(a)b=!0,qBt(t,u,Z,Z);else{let F=s.geodeticSurfaceNormal(Z,cYe);Math.abs(p.dot(u.direction,F))<.05?b=!0:b=p.magnitude(o.position)<p.magnitude(Z)}b?(K.clone(e,t._strafeEndMousePosition),p.clone(Z,t._strafeStartPosition),t._strafing=!0,ist(t,n,t._strafeStartPosition)):(l=p.magnitude(Z),r=tst,r.x=r.y=r.z=l,s=mt.fromCartesian3(r,est),qat(t,e,n,s),p.clone(Z,t._rotateStartPosition))}else t._looking=!0,rp(t,e,n,d)}else c(o.pickEllipsoid(n.startPosition,t._ellipsoid,wBt))?(qat(t,e,n,t._ellipsoid),p.clone(wBt,t._rotateStartPosition)):m>t._minimumTrackBallHeight?(t._rotating=!0,lp(t,e,n)):(t._looking=!0,rp(t,e,n,d));K.clone(e,t._rotateMousePosition)}function lp(t,e,n,i,o,a){o=f(o,!1),a=f(a,!1);let s=t._scene,l=s.camera,r=s.canvas,d=l.constrainedAxis;c(i)&&(l.constrainedAxis=i);let m=p.magnitude(l.position),h=t._rotateFactor*(m-t._rotateRateRangeAdjustment);h>t._maximumRotateRate&&(h=t._maximumRotateRate),h<t._minimumRotateRate&&(h=t._minimumRotateRate);let Z=(n.startPosition.x-n.endPosition.x)/r.clientWidth,b=(n.startPosition.y-n.endPosition.y)/r.clientHeight;Z=Math.min(Z,t.maximumMovementRatio),b=Math.min(b,t.maximumMovementRatio);let u=h*Z*Math.PI*2,F=h*b*Math.PI;o||l.rotateRight(u),a||l.rotateUp(F),l.constrainedAxis=d}var hYe=Rt.clone(Rt.UNIT_W),pYe=Rt.clone(Rt.UNIT_W),Rj=new p,jat=new p,uYe=new p,ZYe=new p,VYe=new K,bYe=new K;function qat(t,e,n,i){let a=t._scene.camera,s=K.clone(n.startPosition,VYe),l=K.clone(n.endPosition,bYe),r=a.pickEllipsoid(s,i,hYe),d=a.pickEllipsoid(l,i,pYe);if(!c(r)||!c(d)){t._rotating=!0,lp(t,e,n);return}if(r=a.worldToCameraCoordinates(r,r),d=a.worldToCameraCoordinates(d,d),c(a.constrainedAxis)){let m=a.constrainedAxis,h=p.mostOrthogonalAxis(m,Rj);p.cross(h,m,h),p.normalize(h,h);let Z=p.cross(m,h,jat),b=p.magnitude(r),u=p.dot(m,r),F=Math.acos(u/b),U=p.multiplyByScalar(m,u,uYe);p.subtract(r,U,U),p.normalize(U,U);let G=p.magnitude(d),A=p.dot(m,d),T=Math.acos(A/G),g=p.multiplyByScalar(m,A,ZYe);p.subtract(d,g,g),p.normalize(g,g);let C=Math.acos(p.dot(U,h));p.dot(U,Z)<0&&(C=k.TWO_PI-C);let y=Math.acos(p.dot(g,h));p.dot(g,Z)<0&&(y=k.TWO_PI-y);let Y=C-y,Q;p.equalsEpsilon(m,a.position,k.EPSILON2)?Q=a.right:Q=p.cross(m,a.position,Rj);let J=p.cross(m,Q,Rj),M=p.dot(J,p.subtract(r,m,jat)),V=p.dot(J,p.subtract(d,m,jat)),E;M>0&&V>0?E=T-F:M>0&&V<=0?p.dot(a.position,m)>0?E=-F-T:E=F+T:E=F-T,a.rotateRight(Y),a.rotateUp(E)}else{p.normalize(r,r),p.normalize(d,d);let m=p.dot(r,d),h=p.cross(r,d,Rj);if(m<1&&!p.equalsEpsilon(h,p.ZERO,k.EPSILON14)){let Z=Math.acos(m);a.rotate(h,Z)}}}var RYe=new p,WYe=new gt;function sQt(t,e,n){c(n.distance)&&(n=n.distance);let i=t._ellipsoid,o=t._scene,a=o.camera,s=o.canvas,l=t._cameraUnderground,r;l?r=e:(r=iQt,r.x=s.clientWidth/2,r.y=s.clientHeight/2);let d=a.getPickRay(r,oQt),m,h=i.cartesianToCartographic(a.position,WYe)?.height;if(!h)return;h<t._minimumPickingTerrainHeight&&(m=GU(t,r,aQt));let Z;if(c(m)&&(Z=p.distance(d.origin,m)),l){let u=zBt(t,d,h);c(Z)?Z=Math.min(Z,u):Z=u}c(Z)||(Z=h);let b=p.normalize(a.position,RYe);nst(t,e,n,t._zoomFactor,Z,p.dot(b,a.direction))}var lQt=new K,Uj=new di,g9=new p,fYe=new p,rQt=new L,FYe=new L,dQt=new L,UYe=new wt,GYe=new ot,ost=new gt,ast=new p;function AYe(t,e,n){let o=t._scene.camera;if(!L.equals(o.transform,L.IDENTITY))return;if(c(n.angleAndHeight)&&(n=n.angleAndHeight),K.equals(e,t._tiltCenterMousePosition)||(t._tiltOnEllipsoid=!1,t._looking=!1),t._looking){let l=t._ellipsoid.geodeticSurfaceNormal(o.position,ast);rp(t,e,n,l);return}let s=t._ellipsoid.cartesianToCartographic(o.position,ost);t._tiltOnEllipsoid||s.height>t._minimumCollisionTerrainHeight?(t._tiltOnEllipsoid=!0,SYe(t,e,n)):gYe(t,e,n)}var TYe=new gt;function SYe(t,e,n){let i=t._ellipsoid,o=t._scene,a=o.camera,s=t.minimumZoomDistance*.25,l=i.cartesianToCartographic(a.positionWC,TYe).height;if(l-s-1<k.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let r=o.canvas,d=lQt;d.x=r.clientWidth/2,d.y=r.clientHeight/2;let m=a.getPickRay(d,Uj),h,Z=no.rayEllipsoid(m,i);if(c(Z))h=di.getPoint(m,Z.start,g9);else if(l>t._minimumTrackBallHeight){let A=no.grazingAltitudeLocation(m,i);if(!c(A))return;let T=i.cartesianToCartographic(A,ost);T.height=0,h=i.cartographicToCartesian(T,g9)}else{t._looking=!0;let A=t._ellipsoid.geodeticSurfaceNormal(a.position,ast);rp(t,e,n,A),K.clone(e,t._tiltCenterMousePosition);return}let b=Pe.eastNorthUpToFixedFrame(h,i,rQt),u=t._globe,F=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let U=L.clone(a.transform,dQt);a._setTransform(b),lp(t,e,n,p.UNIT_Z),a._setTransform(U),t._globe=u,t._ellipsoid=F;let G=F.maximumRadius;t._rotateFactor=1/G,t._rotateRateRangeAdjustment=G}function gYe(t,e,n){let i=t._ellipsoid,o=t._scene,a=o.camera,s=t._cameraUnderground,l,r,d;if(K.equals(e,t._tiltCenterMousePosition))l=p.clone(t._tiltCenter,g9);else{if(l=GU(t,e,g9),!c(l)){if(r=a.getPickRay(e,Uj),d=no.rayEllipsoid(r,i),!c(d)){if(i.cartesianToCartographic(a.position,ost).height<=t._minimumTrackBallHeight){t._looking=!0;let E=t._ellipsoid.geodeticSurfaceNormal(a.position,ast);rp(t,e,n,E),K.clone(e,t._tiltCenterMousePosition)}return}l=di.getPoint(r,d.start,g9)}s&&(c(r)||(r=a.getPickRay(e,Uj)),jBt(t,r,l,l)),K.clone(e,t._tiltCenterMousePosition),p.clone(l,t._tiltCenter)}let m=o.canvas,h=lQt;h.x=m.clientWidth/2,h.y=t._tiltCenterMousePosition.y,r=a.getPickRay(h,Uj);let Z=p.magnitude(l),b=p.fromElements(Z,Z,Z,tst),u=mt.fromCartesian3(b,est);if(d=no.rayEllipsoid(r,u),!c(d))return;let F=p.magnitude(r.origin)>Z?d.start:d.stop,U=di.getPoint(r,F,fYe),G=Pe.eastNorthUpToFixedFrame(l,i,rQt),A=Pe.eastNorthUpToFixedFrame(U,u,FYe),T=t._globe,g=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let C=p.UNIT_Z,y=L.clone(a.transform,dQt);a._setTransform(A);let Y=p.cross(U,a.positionWC,Fj);if(p.dot(a.rightWC,Y)<0){let V=n.startPosition.y-n.endPosition.y;(s&&V<0||!s&&V>0)&&(C=void 0);let E=a.constrainedAxis;a.constrainedAxis=void 0,lp(t,e,n,C,!0,!1),a.constrainedAxis=E}else lp(t,e,n,C,!0,!1);if(a._setTransform(G),lp(t,e,n,C,!1,!0),c(a.constrainedAxis)){let V=p.cross(a.direction,a.constrainedAxis,Fj);p.equalsEpsilon(V,p.ZERO,k.EPSILON6)||(p.dot(V,a.right)<0&&p.negate(V,V),p.cross(V,a.direction,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.up,a.up),p.normalize(a.right,a.right))}a._setTransform(y),t._globe=T,t._ellipsoid=g;let J=g.maximumRadius;t._rotateFactor=1/J,t._rotateRateRangeAdjustment=J;let M=p.clone(a.positionWC,Fj);if(t.enableCollisionDetection&&sst(t,!0),!p.equals(a.positionWC,M)){a._setTransform(A),a.worldToCameraCoordinatesPoint(M,M);let V=p.magnitudeSquared(M);p.magnitudeSquared(a.position)>V&&(p.normalize(a.position,a.position),p.multiplyByScalar(a.position,Math.sqrt(V),a.position));let E=p.angleBetween(M,a.position),I=p.cross(M,a.position,M);p.normalize(I,I);let B=wt.fromAxisAngle(I,E,UYe),X=ot.fromQuaternion(B,GYe);ot.multiplyByVector(X,a.direction,a.direction),ot.multiplyByVector(X,a.up,a.up),p.cross(a.direction,a.up,a.right),p.cross(a.right,a.direction,a.up),a._setTransform(y)}}var EYe=new K,CYe=new K,PBt=new di,vBt=new di,IYe=new p,NYe=new p;function rp(t,e,n,i){let a=t._scene.camera,s=EYe;s.x=n.startPosition.x,s.y=0;let l=CYe;l.x=n.endPosition.x,l.y=0;let r=a.getPickRay(s,PBt),d=a.getPickRay(l,vBt),m=0,h,Z;a.frustum instanceof wn?(h=r.origin,Z=d.origin,p.add(a.direction,h,h),p.add(a.direction,Z,Z),p.subtract(h,a.position,h),p.subtract(Z,a.position,Z),p.normalize(h,h),p.normalize(Z,Z)):(h=r.direction,Z=d.direction);let b=p.dot(h,Z);b<1&&(m=Math.acos(b)),m=n.startPosition.x>n.endPosition.x?-m:m;let u=t._horizontalRotationAxis;if(c(i)?a.look(i,-m):c(u)?a.look(u,-m):a.lookLeft(m),s.x=0,s.y=n.startPosition.y,l.x=0,l.y=n.endPosition.y,r=a.getPickRay(s,PBt),d=a.getPickRay(l,vBt),m=0,a.frustum instanceof wn?(h=r.origin,Z=d.origin,p.add(a.direction,h,h),p.add(a.direction,Z,Z),p.subtract(h,a.position,h),p.subtract(Z,a.position,Z),p.normalize(h,h),p.normalize(Z,Z)):(h=r.direction,Z=d.direction),b=p.dot(h,Z),b<1&&(m=Math.acos(b)),m=n.startPosition.y>n.endPosition.y?-m:m,i=f(i,u),c(i)){let F=a.direction,U=p.negate(i,IYe),G=p.equalsEpsilon(F,i,k.EPSILON2),A=p.equalsEpsilon(F,U,k.EPSILON2);if(!G&&!A){b=p.dot(F,i);let T=k.acosClamped(b);m>0&&m>T&&(m=T-k.EPSILON4),b=p.dot(F,U),T=k.acosClamped(b),m<0&&-m>T&&(m=-T+k.EPSILON4);let g=p.cross(i,F,NYe);a.look(g,m)}else(G&&m<0||A&&m>0)&&a.look(a.right,-m)}else a.lookUp(m)}function yYe(t){om(t,t.enableRotate,t.rotateEventTypes,mYe,t.inertiaSpin,"_lastInertiaSpinMovement"),om(t,t.enableZoom,t.zoomEventTypes,sQt,t.inertiaZoom,"_lastInertiaZoomMovement"),om(t,t.enableTilt,t.tiltEventTypes,AYe,t.inertiaSpin,"_lastInertiaTiltMovement"),om(t,t.enableLook,t.lookEventTypes,rp)}var BYe=new L,QYe=new gt;function sst(t,e){t._adjustedHeightForTerrain=!0;let n=t._scene,i=n.mode,o=n.globe;if(i===ut.SCENE2D||i===ut.MORPHING)return;let a=n.camera,s=f(o?.ellipsoid,mt.WGS84),l=n.mapProjection,r,d;L.equals(a.transform,L.IDENTITY)||(r=L.clone(a.transform,BYe),d=p.magnitude(a.position),a._setTransform(L.IDENTITY));let m=QYe;i===ut.SCENE3D?s.cartesianToCartographic(a.position,m):l.unproject(a.position,m);let h=!1;if(m.height<t._minimumCollisionTerrainHeight){let Z=t._scene.globeHeight;if(c(Z)){let b=Z+t.minimumZoomDistance,u=Z-t._lastGlobeHeight,F=u/t._lastGlobeHeight;m.height<b&&(e||Math.abs(F)<=.1)&&(m.height=b,i===ut.SCENE3D?s.cartographicToCartesian(m,a.position):l.project(m,a.position),h=!0),e||Math.abs(F)<=.1?t._lastGlobeHeight=Z:t._lastGlobeHeight+=u*.1}}c(r)&&(a._setTransform(r),h&&(p.normalize(a.position,a.position),p.negate(a.position,a.direction),p.multiplyByScalar(a.position,Math.max(d,t.minimumZoomDistance),a.position),p.normalize(a.direction,a.direction),p.cross(a.direction,a.up,a.right),p.cross(a.right,a.direction,a.up)))}E9.prototype.onMap=function(){let t=this._scene,e=t.mode,n=t.camera;return e===ut.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var kYe=new p,YYe=new p;E9.prototype.update=function(){let t=this._scene,{camera:e,globe:n,mode:i}=t;L.equals(e.transform,L.IDENTITY)?(this._globe=n,this._ellipsoid=c(this._globe)?this._globe.ellipsoid:t.mapProjection.ellipsoid):(this._globe=void 0,this._ellipsoid=mt.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:a}=t;this._minimumCollisionTerrainHeight=Ps.getHeight(this.minimumCollisionTerrainHeight,o,a),this._minimumPickingTerrainHeight=Ps.getHeight(this.minimumPickingTerrainHeight,o,a),this._minimumTrackBallHeight=Ps.getHeight(this.minimumTrackBallHeight,o,a),this._cameraUnderground=t.cameraUnderground&&c(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let l=p.clone(e.positionWC,kYe),r=p.clone(e.directionWC,YYe);if(i===ut.SCENE2D?yke(this):i===ut.COLUMBUS_VIEW?(this._horizontalRotationAxis=p.UNIT_Z,nYe(this)):i===ut.SCENE3D&&(this._horizontalRotationAxis=void 0,yYe(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let d=!p.equals(l,e.positionWC)||!p.equals(r,e.directionWC);sst(this,d)}this._aggregator.reset()};E9.prototype.isDestroyed=function(){return!1};E9.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),At(this)};var C9=E9;var Cko=R(W(),1);var rko=R(W(),1),I9=`uniform sampler2D colorTexture; +`,s=new Qa({name:"czm_edge_detection_combine",fragmentShader:a,uniforms:n});return new nm({name:"czm_edge_detection_composite",stages:[e,s]})}Zl.createSilhouetteStage=function(t){let e=KQe(t),n=new Qa({name:"czm_silhouette_color_edges",fragmentShader:Z9,uniforms:{silhouetteTexture:e.name}});return new nm({name:"czm_silhouette",stages:[e,n],inputPreviousStageTexture:!1,uniforms:e.uniforms})};Zl.isSilhouetteSupported=function(t){return t.context.depthTexture};Zl.createBloomStage=function(){let t=new Qa({name:"czm_bloom_contrast_bias",fragmentShader:s9,uniforms:{contrast:128,brightness:-.3}}),e=pj("czm_bloom_blur"),n=new nm({name:"czm_bloom_contrast_bias_blur",stages:[t,e]}),i=new Qa({name:"czm_bloom_generate_composite",fragmentShader:o9,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(a){i.uniforms.glowOnly=a}},contrast:{get:function(){return t.uniforms.contrast},set:function(a){t.uniforms.contrast=a}},brightness:{get:function(){return t.uniforms.brightness},set:function(a){t.uniforms.brightness=a}},delta:{get:function(){return e.uniforms.delta},set:function(a){e.uniforms.delta=a}},sigma:{get:function(){return e.uniforms.sigma},set:function(a){e.uniforms.sigma=a}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(a){e.uniforms.stepSize=a}}}),new nm({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Zl.createAmbientOcclusionStage=function(){let t=new Qa({name:"czm_ambient_occlusion_generate",fragmentShader:e9,uniforms:{intensity:3,bias:.1,lengthCap:.26,stepSize:1.95,frustumLength:1e3,randomTexture:void 0}}),e=pj("czm_ambient_occlusion_blur");e.uniforms.stepSize=.86;let n=new nm({name:"czm_ambient_occlusion_generate_blur",stages:[t,e]}),i=new Qa({name:"czm_ambient_occlusion_composite",fragmentShader:n9,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:n.name}}),o={};return Object.defineProperties(o,{intensity:{get:function(){return t.uniforms.intensity},set:function(a){t.uniforms.intensity=a}},bias:{get:function(){return t.uniforms.bias},set:function(a){t.uniforms.bias=a}},lengthCap:{get:function(){return t.uniforms.lengthCap},set:function(a){t.uniforms.lengthCap=a}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(a){t.uniforms.stepSize=a}},frustumLength:{get:function(){return t.uniforms.frustumLength},set:function(a){t.uniforms.frustumLength=a}},randomTexture:{get:function(){return t.uniforms.randomTexture},set:function(a){t.uniforms.randomTexture=a}},delta:{get:function(){return e.uniforms.delta},set:function(a){e.uniforms.delta=a}},sigma:{get:function(){return e.uniforms.sigma},set:function(a){e.uniforms.sigma=a}},blurStepSize:{get:function(){return e.uniforms.stepSize},set:function(a){e.uniforms.stepSize=a}},ambientOcclusionOnly:{get:function(){return i.uniforms.ambientOcclusionOnly},set:function(a){i.uniforms.ambientOcclusionOnly=a}}}),new nm({name:"czm_ambient_occlusion",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Zl.isAmbientOcclusionSupported=function(t){return t.context.depthTexture};var zQe=`#define FXAA_QUALITY_PRESET 39 +${R9} +${m9}`;Zl.createFXAAStage=function(){return new Qa({name:"czm_FXAA",fragmentShader:zQe,sampleMode:op.LINEAR})};Zl.createAcesTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE +`:"";return e+=t9,new Qa({name:"czm_aces",fragmentShader:e,uniforms:{autoExposure:void 0}})};Zl.createFilmicTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE +`:"";return e+=c9,new Qa({name:"czm_filmic",fragmentShader:e,uniforms:{autoExposure:void 0}})};Zl.createReinhardTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE +`:"";return e+=u9,new Qa({name:"czm_reinhard",fragmentShader:e,uniforms:{autoExposure:void 0}})};Zl.createModifiedReinhardTonemappingStage=function(t){let e=t?`#define AUTO_EXPOSURE +`:"";return e+=p9,new Qa({name:"czm_modified_reinhard",fragmentShader:e,uniforms:{white:v.WHITE,autoExposure:void 0}})};Zl.createAutoExposureStage=function(){return new b9};Zl.createBlackAndWhiteStage=function(){return new Qa({name:"czm_black_and_white",fragmentShader:i9,uniforms:{gradations:5}})};Zl.createBrightnessStage=function(){return new Qa({name:"czm_brightness",fragmentShader:a9,uniforms:{brightness:.5}})};Zl.createNightVisionStage=function(){return new Qa({name:"czm_night_vision",fragmentShader:V9})};Zl.createDepthViewStage=function(){return new Qa({name:"czm_depth_view",fragmentShader:r9})};Zl.createLensFlareStage=function(){return new Qa({name:"czm_lens_flare",fragmentShader:h9,uniforms:{dirtTexture:Dn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:Dn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:mt.WGS84.maximumRadius}})};var IV=Zl;var uQo=b(W(),1);function UW(t){this._collection=t,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function f9(t){for(;c(t.length);)t=t.get(t.length-1);return t.name}function yat(t,e,n,i,o){if(!i.enabled||!i._isSupported(e))return o;let a=n[i.name]={};if(c(o)){let l=t.getStageByName(o);a[f9(l)]=!0}let s=i.uniforms;if(c(s)){let l=Object.getOwnPropertyNames(s),r=l.length;for(let d=0;d<r;++d){let m=s[l[d]];if(typeof m=="string"){let h=t.getStageByName(m);c(h)&&(a[f9(h)]=!0)}}}return i.name}function W9(t,e,n,i,o){if(c(i.enabled)&&!i.enabled||c(i._isSupported)&&!i._isSupported(e))return o;let a=o,s=!c(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,l=o,r=i.length;for(let h=0;h<r;++h){let u=i.get(h);c(u.length)?l=W9(t,e,n,u,o):l=yat(t,e,n,u,o),s&&(o=l)}let d,m;if(s)for(d=1;d<r;++d)m=f9(i.get(d)),c(n[m])||(n[m]={}),n[m][a]=!0;else for(d=1;d<r;++d){m=f9(i.get(d));let h=n[m];for(let u=0;u<d;++u)h[f9(i.get(u))]=!0}return l}function jQe(t,e){let n={};if(c(t.ambientOcclusion)){let i=t.ambientOcclusion,o=t.bloom,a=t._tonemapping,s=t.fxaa,l=W9(t,e,n,i,void 0);l=W9(t,e,n,o,l),l=yat(t,e,n,a,l),l=W9(t,e,n,t,l),yat(t,e,n,s,l)}else W9(t,e,n,t,void 0);return n}function qQe(t,e,n){let o=t._collection.getStageByName(e),a=o._textureScale,s=o._forcePowerOfTwo,l=o._pixelFormat,r=o._pixelDatatype,d=o._clearColor,m,h,u=t._framebuffers,R=u.length;for(m=0;m<R;++m){if(h=u[m],a!==h.textureScale||s!==h.forcePowerOfTwo||l!==h.pixelFormat||r!==h.pixelDatatype||!v.equals(d,h.clearColor))continue;let V=h.stages,F=V.length,U=!1;for(let G=0;G<F;++G)if(n[V[G]]){U=!0;break}if(!U)break}return c(h)&&m<R?(h.stages.push(e),h):(h={textureScale:a,forcePowerOfTwo:s,pixelFormat:l,pixelDatatype:r,clearColor:d,stages:[e],buffer:new bo({pixelFormat:l,pixelDatatype:r}),clear:void 0},u.push(h),h)}function $Qe(t,e){let n=jQe(t._collection,e);for(let i in n)n.hasOwnProperty(i)&&(t._stageNameToFramebuffer[i]=qQe(t,i,n[i]))}function Bat(t){let e=t._framebuffers,n=e.length;for(let i=0;i<n;++i)e[i].buffer.destroy()}function tke(t,e){let n=t._width,i=t._height,o=t._framebuffers,a=o.length;for(let s=0;s<a;++s){let l=o[s],r=l.textureScale,d=Math.ceil(n*r),m=Math.ceil(i*r),h=Math.min(d,m);l.forcePowerOfTwo&&(k.isPowerOfTwo(h)||(h=k.nextPowerOfTwo(h)),d=h,m=h),l.buffer.update(e,d,m),l.clear=new ao({color:l.clearColor,framebuffer:l.buffer.framebuffer})}}UW.prototype.updateDependencies=function(){this._updateDependencies=!0};UW.prototype.update=function(t){let e=this._collection,n=this._updateDependencies,i=c(e.ambientOcclusion)&&e.ambientOcclusion.enabled&&e.ambientOcclusion._isSupported(t),o=c(e.bloom)&&e.bloom.enabled&&e.bloom._isSupported(t),a=c(e._tonemapping)&&e._tonemapping.enabled&&e._tonemapping._isSupported(t),s=c(e.fxaa)&&e.fxaa.enabled&&e.fxaa._isSupported(t),l=!c(e._activeStages)||e._activeStages.length>0||i||o||a||s;if((n||!l&&this._framebuffers.length>0)&&(Bat(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!l)return;this._framebuffers.length===0&&$Qe(this,t);let r=t.drawingBufferWidth,d=t.drawingBufferHeight,m=this._width!==r||this._height!==d;!n&&!m||(this._width=r,this._height=d,this._updateDependencies=!1,Bat(this),tke(this,t))};UW.prototype.clear=function(t){let e=this._framebuffers;for(let n=0;n<e.length;++n)e[n].clear.execute(t)};UW.prototype.getStageByName=function(t){return this._collection.getStageByName(t)};UW.prototype.getOutputTexture=function(t){return this._collection.getOutputTexture(t)};UW.prototype.getFramebuffer=function(t){let e=this._stageNameToFramebuffer[t];if(c(e))return e.buffer.framebuffer};UW.prototype.isDestroyed=function(){return!1};UW.prototype.destroy=function(){return Bat(this),At(this)};var ET=UW;var RQo=b(W(),1),F9={REINHARD:0,MODIFIED_REINHARD:1,FILMIC:2,ACES:3,validate:function(t){return t===F9.REINHARD||t===F9.MODIFIED_REINHARD||t===F9.FILMIC||t===F9.ACES}},FU=Object.freeze(F9);var Qat=[];function im(){let t=IV.createFXAAStage(),e=IV.createAmbientOcclusionStage(),n=IV.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=IV.createAutoExposureStage(),this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=FU.ACES;let i=this._tonemapping;t.enabled=!1,e.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new ET(this),a={},s=Qat;for(s.push(t,e,n,i);s.length>0;){let r=s.pop();a[r.name]=r,r._textureCache=o;let d=r.length;if(c(d))for(let m=0;m<d;++m)s.push(r.get(m))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let l=this;e.uniforms.randomTexture=function(){return l._randomTexture},this._ao=e,this._bloom=n,this._fxaa=t,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=a,this._textureCache=o}Object.defineProperties(im.prototype,{ready:{get:function(){let t=!1,e=this._stages,n=e.length;for(let l=n-1;l>=0;--l){let r=e[l];t=t||r.ready&&r.enabled}let i=this._fxaa,o=this._ao,a=this._bloom,s=this._tonemapping;return t=t||i.ready&&i.enabled,t=t||o.ready&&o.enabled,t=t||a.ready&&a.enabled,t=t||s.ready&&s.enabled,t}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return kat(this),this._stages.length}},outputTexture:{get:function(){let t=this._fxaa;if(t.enabled&&t.ready)return this.getOutputTexture(t.name);let e=this._stages,n=e.length;for(let s=n-1;s>=0;--s){let l=e[s];if(c(l)&&l.ready&&l.enabled)return this.getOutputTexture(l.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let a=this._ao;if(a.enabled&&a.ready)return this.getOutputTexture(a.name)}},hasSelected:{get:function(){let t=this._stages.slice();for(;t.length>0;){let e=t.pop();if(!c(e))continue;if(c(e.selected))return!0;let n=e.length;if(c(n))for(let i=0;i<n;++i)t.push(e.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(t){if(this._tonemapper===t)return;c(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let e=this._autoExposureEnabled,n;switch(t){case FU.REINHARD:n=IV.createReinhardTonemappingStage(e);break;case FU.MODIFIED_REINHARD:n=IV.createModifiedReinhardTonemappingStage(e);break;case FU.FILMIC:n=IV.createFilmicTonemappingStage(e);break;default:n=IV.createAcesTonemappingStage(e);break}if(e){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}this._tonemapper=t,this._tonemapping=n,c(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}}});function kat(t){if(!t._stagesRemoved)return;t._stagesRemoved=!1;let e=[],n=t._stages,i=n.length;for(let o=0,a=0;o<i;++o){let s=n[o];s&&(s._index=a++,e.push(s))}t._stages=e}im.prototype.add=function(t){let e=this._stageNames,n=Qat;for(n.push(t);n.length>0;){let o=n.pop();e[o.name]=o,o._textureCache=this._textureCache;let a=o.length;if(c(a))for(let s=0;s<a;++s)n.push(o.get(s))}let i=this._stages;return t._index=i.length,i.push(t),this._textureCacheDirty=!0,t};im.prototype.remove=function(t){if(!this.contains(t))return!1;let e=this._stageNames,n=Qat;for(n.push(t);n.length>0;){let i=n.pop();delete e[i.name];let o=i.length;if(c(o))for(let a=0;a<o;++a)n.push(i.get(a))}return this._stages[t._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,t._index=void 0,t._textureCache=void 0,t.destroy(),!0};im.prototype.contains=function(t){return c(t)&&c(t._index)&&t._textureCache===this._textureCache};im.prototype.get=function(t){return kat(this),this._stages[t]};im.prototype.removeAll=function(){let t=this._stages,e=t.length;for(let n=0;n<e;++n)this.remove(t[n]);t.length=0};im.prototype.getStageByName=function(t){return this._stageNames[t]};im.prototype.update=function(t,e,n){kat(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let a=this._stages,s=o.length=a.length,l,r,d=0;for(l=0;l<s;++l)r=a[l],r.ready&&r.enabled&&r._isSupported(t)&&(o[d++]=r);o.length=d;let m=d!==i.length;if(!m){for(l=0;l<d;++l)if(o[l]!==i[l]){m=!0;break}}let h=this._ao,u=this._bloom,R=this._autoExposure,V=this._tonemapping,F=this._fxaa;V.enabled=n;let U=h.enabled&&h._isSupported(t),G=u.enabled&&u._isSupported(t),A=V.enabled&&V._isSupported(t),S=F.enabled&&F._isSupported(t);if((m||this._textureCacheDirty||U!==this._aoEnabled||G!==this._bloomEnabled||A!==this._tonemappingEnabled||S!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=U,this._bloomEnabled=G,this._tonemappingEnabled=A,this._fxaaEnabled=S,this._textureCacheDirty=!1),c(this._randomTexture)&&!U&&(this._randomTexture.destroy(),this._randomTexture=void 0),!c(this._randomTexture)&&U){s=256*256*3;let g=new Uint8Array(s);for(l=0;l<s;l+=3)g[l]=Math.floor(Math.random()*255);this._randomTexture=new hn({context:t,pixelFormat:Ye.RGB,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:g,width:256,height:256},sampler:new Hn({wrapS:Zi.REPEAT,wrapT:Zi.REPEAT,minificationFilter:On.NEAREST,magnificationFilter:Ro.NEAREST})})}for(this._textureCache.update(t),F.update(t,e),h.update(t,e),u.update(t,e),V.update(t,e),this._autoExposureEnabled&&R.update(t,e),s=a.length,l=0;l<s;++l)a[l].update(t,e);for(d=0,l=0;l<s;++l)r=a[l],r.ready&&r.enabled&&r._isSupported(t)&&d++;m=d!==o.length,m&&this.update(t,e,n)};im.prototype.clear=function(t){this._textureCache.clear(t),this._autoExposureEnabled&&this._autoExposure.clear(t)};function CT(t){for(;c(t.length);)t=t.get(t.length-1);return t.outputTexture}im.prototype.getOutputTexture=function(t){let e=this.getStageByName(t);if(c(e))return CT(e)};function wR(t,e,n,i,o){if(c(t.execute)){t.execute(e,n,i,o);return}let a=t.length,s;if(t.inputPreviousStageTexture)for(wR(t.get(0),e,n,i,o),s=1;s<a;++s)wR(t.get(s),e,CT(t.get(s-1)),i,o);else for(s=0;s<a;++s)wR(t.get(s),e,n,i,o)}im.prototype.execute=function(t,e,n,i){let o=this._activeStages,a=o.length,s=this._fxaa,l=this._ao,r=this._bloom,d=this._autoExposure,m=this._tonemapping,h=l.enabled&&l._isSupported(t),u=r.enabled&&r._isSupported(t),R=this._autoExposureEnabled,V=m.enabled&&m._isSupported(t),F=s.enabled&&s._isSupported(t);if(!F&&!h&&!u&&!V&&a===0)return;let U=e;h&&l.ready&&(wR(l,t,U,n,i),U=CT(l)),u&&r.ready&&(wR(r,t,U,n,i),U=CT(r)),R&&d.ready&&wR(d,t,U,n,i),V&&m.ready&&(wR(m,t,U,n,i),U=CT(m));let G=U;if(a>0){wR(o[0],t,U,n,i);for(let A=1;A<a;++A)wR(o[A],t,CT(o[A-1]),n,i);G=CT(o[a-1])}F&&s.ready&&wR(s,t,G,n,i)};im.prototype.copy=function(t,e){if(!c(this._copyColorCommand)){let n=this;this._copyColorCommand=t.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=e,this._copyColorCommand.execute(t)};im.prototype.isDestroyed=function(){return!1};im.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),At(this)};var U9=im;var mko=b(W(),1);var PQo=b(W(),1);var QQo=b(W(),1),eke={SHIFT:0,CTRL:1,ALT:2},id=Object.freeze(eke);var YQo=b(W(),1),nke={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},ui=Object.freeze(nke);function UU(t,e,n){let i=t._element;if(i===document)return n.x=e.clientX,n.y=e.clientY,n;let o=i.getBoundingClientRect();return n.x=e.clientX-o.left,n.y=e.clientY-o.top,n}function Mat(t,e){let n=t;return c(e)&&(n+=`+${e}`),n}function IT(t){if(t.shiftKey)return id.SHIFT;if(t.ctrlKey)return id.CTRL;if(t.altKey)return id.ALT}var cr={LEFT:0,MIDDLE:1,RIGHT:2};function ap(t,e,n,i){function o(a){i(t,a)}In.isInternetExplorer()?n.addEventListener(e,o,!1):n.addEventListener(e,o,{capture:!1,passive:!1}),t._removalFunctions.push(function(){n.removeEventListener(e,o,!1)})}function ike(t){let e=t._element,n=c(e.disableRootEvents)?e:document;In.supportsPointerEvents()?(ap(t,"pointerdown",e,dke),ap(t,"pointerup",e,RBt),ap(t,"pointermove",e,cke),ap(t,"pointercancel",e,RBt)):(ap(t,"mousedown",e,bBt),ap(t,"mouseup",n,WBt),ap(t,"mousemove",n,fBt),ap(t,"touchstart",e,lke),ap(t,"touchend",n,hBt),ap(t,"touchmove",n,rke),ap(t,"touchcancel",n,hBt)),ap(t,"dblclick",e,ake);let i;"onwheel"in e?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",ap(t,i,e,ske)}function oke(t){let e=t._removalFunctions;for(let n=0;n<e.length;++n)e[n]()}var rBt={position:new K};function _at(t){t._lastSeenTouchEvent=Oi()}function Dat(t){return Oi()-t._lastSeenTouchEvent>cZ.mouseEmulationIgnoreMilliseconds}function Lat(t,e,n){let i=t.x-e.x,o=t.y-e.y;return Math.sqrt(i*i+o*o)<n}function bBt(t,e){if(!Dat(t))return;let n=e.button;t._buttonDown[n]=!0;let i;if(n===cr.LEFT)i=ui.LEFT_DOWN;else if(n===cr.MIDDLE)i=ui.MIDDLE_DOWN;else if(n===cr.RIGHT)i=ui.RIGHT_DOWN;else return;let o=UU(t,e,t._primaryPosition);K.clone(o,t._primaryStartPosition),K.clone(o,t._primaryPreviousPosition);let a=IT(e),s=t.getInputAction(i,a);c(s)&&(K.clone(o,rBt.position),s(rBt),e.preventDefault())}var dBt={position:new K},cBt={position:new K};function Yat(t,e,n,i){let o=IT(i),a=t.getInputAction(e,o),s=t.getInputAction(n,o);if(c(a)||c(s)){let l=UU(t,i,t._primaryPosition);if(c(a)&&(K.clone(l,dBt.position),a(dBt)),c(s)){let r=t._primaryStartPosition;Lat(r,l,t._clickPixelTolerance)&&(K.clone(l,cBt.position),s(cBt))}}}function WBt(t,e){if(!Dat(t))return;let n=e.button;n!==cr.LEFT&&n!==cr.MIDDLE&&n!==cr.RIGHT||(t._buttonDown[cr.LEFT]&&(Yat(t,ui.LEFT_UP,ui.LEFT_CLICK,e),t._buttonDown[cr.LEFT]=!1),t._buttonDown[cr.MIDDLE]&&(Yat(t,ui.MIDDLE_UP,ui.MIDDLE_CLICK,e),t._buttonDown[cr.MIDDLE]=!1),t._buttonDown[cr.RIGHT]&&(Yat(t,ui.RIGHT_UP,ui.RIGHT_CLICK,e),t._buttonDown[cr.RIGHT]=!1))}var xat={startPosition:new K,endPosition:new K};function fBt(t,e){if(!Dat(t))return;let n=IT(e),i=UU(t,e,t._primaryPosition),o=t._primaryPreviousPosition,a=t.getInputAction(ui.MOUSE_MOVE,n);c(a)&&(K.clone(o,xat.startPosition),K.clone(i,xat.endPosition),a(xat)),K.clone(i,o),(t._buttonDown[cr.LEFT]||t._buttonDown[cr.MIDDLE]||t._buttonDown[cr.RIGHT])&&e.preventDefault()}var mBt={position:new K};function ake(t,e){let n=e.button,i;if(n===cr.LEFT)i=ui.LEFT_DOUBLE_CLICK;else return;let o=IT(e),a=t.getInputAction(i,o);c(a)&&(UU(t,e,mBt.position),a(mBt))}function ske(t,e){let n;if(c(e.deltaY)){let a=e.deltaMode;a===e.DOM_DELTA_PIXEL?n=-e.deltaY:a===e.DOM_DELTA_LINE?n=-e.deltaY*40:n=-e.deltaY*120}else e.detail>0?n=e.detail*-120:n=e.wheelDelta;if(!c(n))return;let i=IT(e),o=t.getInputAction(ui.WHEEL,i);c(o)&&(o(n),e.preventDefault())}function lke(t,e){_at(t);let n=e.changedTouches,i,o=n.length,a,s,l=t._positions;for(i=0;i<o;++i)a=n[i],s=a.identifier,l.set(s,UU(t,a,new K));Vj(t,e);let r=t._previousPositions;for(i=0;i<o;++i)a=n[i],s=a.identifier,r.set(s,K.clone(l.get(s)))}function hBt(t,e){_at(t);let n=e.changedTouches,i,o=n.length,a,s,l=t._positions;for(i=0;i<o;++i)a=n[i],s=a.identifier,l.remove(s);Vj(t,e);let r=t._previousPositions;for(i=0;i<o;++i)a=n[i],s=a.identifier,r.remove(s)}var pBt={position:new K},Xat={position1:new K,position2:new K},VBt={position:new K},uBt={position:new K},ZBt={position:new K};function Vj(t,e){let n=IT(e),i=t._positions,o=i.length,a,s,l=t._isPinching;if(o!==1&&t._buttonDown[cr.LEFT]){if(t._buttonDown[cr.LEFT]=!1,c(t._touchHoldTimer)&&(clearTimeout(t._touchHoldTimer),t._touchHoldTimer=void 0),a=t.getInputAction(ui.LEFT_UP,n),c(a)&&(K.clone(t._primaryPosition,VBt.position),a(VBt)),o===0&&!t._isTouchHolding&&(s=t.getInputAction(ui.LEFT_CLICK,n),c(s))){let r=t._primaryStartPosition,d=t._previousPositions.values[0];Lat(r,d,t._clickPixelTolerance)&&(K.clone(t._primaryPosition,uBt.position),s(uBt))}t._isTouchHolding=!1}if(o===0&&l&&(t._isPinching=!1,a=t.getInputAction(ui.PINCH_END,n),c(a)&&a()),o===1&&!l){let r=i.values[0];K.clone(r,t._primaryPosition),K.clone(r,t._primaryStartPosition),K.clone(r,t._primaryPreviousPosition),t._buttonDown[cr.LEFT]=!0,a=t.getInputAction(ui.LEFT_DOWN,n),c(a)&&(K.clone(r,pBt.position),a(pBt)),t._touchHoldTimer=setTimeout(function(){if(!t.isDestroyed()&&(t._touchHoldTimer=void 0,t._isTouchHolding=!0,s=t.getInputAction(ui.RIGHT_CLICK,n),c(s))){let d=t._primaryStartPosition,m=t._previousPositions.values[0];Lat(d,m,t._holdPixelTolerance)&&(K.clone(t._primaryPosition,ZBt.position),s(ZBt))}},cZ.touchHoldDelayMilliseconds),e.preventDefault()}o===2&&!l&&(t._isPinching=!0,a=t.getInputAction(ui.PINCH_START,n),c(a)&&(K.clone(i.values[0],Xat.position1),K.clone(i.values[1],Xat.position2),a(Xat),e.preventDefault()))}function rke(t,e){_at(t);let n=e.changedTouches,i,o=n.length,a,s,l=t._positions;for(i=0;i<o;++i){a=n[i],s=a.identifier;let d=l.get(s);c(d)&&UU(t,a,d)}FBt(t,e);let r=t._previousPositions;for(i=0;i<o;++i)a=n[i],s=a.identifier,K.clone(l.get(s),r.get(s))}var Jat={startPosition:new K,endPosition:new K},G9={distance:{startPosition:new K,endPosition:new K},angleAndHeight:{startPosition:new K,endPosition:new K}};function FBt(t,e){let n=IT(e),i=t._positions,o=t._previousPositions,a=i.length,s;if(a===1&&t._buttonDown[cr.LEFT]){let l=i.values[0];K.clone(l,t._primaryPosition);let r=t._primaryPreviousPosition;s=t.getInputAction(ui.MOUSE_MOVE,n),c(s)&&(K.clone(r,Jat.startPosition),K.clone(l,Jat.endPosition),s(Jat)),K.clone(l,r),e.preventDefault()}else if(a===2&&t._isPinching&&(s=t.getInputAction(ui.PINCH_MOVE,n),c(s))){let l=i.values[0],r=i.values[1],d=o.values[0],m=o.values[1],h=r.x-l.x,u=r.y-l.y,R=Math.sqrt(h*h+u*u)*.25,V=m.x-d.x,F=m.y-d.y,U=Math.sqrt(V*V+F*F)*.25,G=(r.y+l.y)*.125,A=(m.y+d.y)*.125,S=Math.atan2(u,h),g=Math.atan2(F,V);K.fromElements(0,U,G9.distance.startPosition),K.fromElements(0,R,G9.distance.endPosition),K.fromElements(g,A,G9.angleAndHeight.startPosition),K.fromElements(S,G,G9.angleAndHeight.endPosition),s(G9)}}function dke(t,e){if(e.target.setPointerCapture(e.pointerId),e.pointerType==="touch"){let n=t._positions,i=e.pointerId;n.set(i,UU(t,e,new K)),Vj(t,e),t._previousPositions.set(i,K.clone(n.get(i)))}else bBt(t,e)}function RBt(t,e){if(e.pointerType==="touch"){let n=t._positions,i=e.pointerId;n.remove(i),Vj(t,e),t._previousPositions.remove(i)}else WBt(t,e)}function cke(t,e){if(e.pointerType==="touch"){let n=t._positions,i=e.pointerId,o=n.get(i);if(!c(o))return;UU(t,e,o),FBt(t,e);let a=t._previousPositions;K.clone(n.get(i),a.get(i))}else fBt(t,e)}function cZ(t){this._inputEvents={},this._buttonDown={LEFT:!1,MIDDLE:!1,RIGHT:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-cZ.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new K,this._primaryPosition=new K,this._primaryPreviousPosition=new K,this._positions=new qe,this._previousPositions=new qe,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=f(t,document),ike(this)}cZ.prototype.setInputAction=function(t,e,n){let i=Mat(e,n);this._inputEvents[i]=t};cZ.prototype.getInputAction=function(t,e){let n=Mat(t,e);return this._inputEvents[n]};cZ.prototype.removeInputAction=function(t,e){let n=Mat(t,e);delete this._inputEvents[n]};cZ.prototype.isDestroyed=function(){return!1};cZ.prototype.destroy=function(){return oke(this),At(this)};cZ.mouseEmulationIgnoreMilliseconds=800;cZ.touchHoldDelayMilliseconds=1500;var sp=cZ;function NT(t){this._scene=t,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}NT.prototype.completeMorph=function(){c(this._completeMorph)&&this._completeMorph()};NT.prototype.morphTo2D=function(t,e){c(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof wn,!(this._previousMode===Vt.SCENE2D||this._previousMode===Vt.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,Vt.SCENE2D,!0),n._mode=Vt.MORPHING,n.camera._setTransform(L.IDENTITY),this._previousMode===Vt.COLUMBUS_VIEW?Dke(this,t):zke(this,t,e),t===0&&c(this._completeMorph)&&this._completeMorph())};var mke=new p,hke=new p,pke=new p,Vke=new p,uke=new p,Zke=new p,Rke=new p,bke=new gt,Wke=new L,fke=new Io,Fke=new wn,Uke={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};NT.prototype.morphToColumbusView=function(t,e){c(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===Vt.COLUMBUS_VIEW||this._previousMode===Vt.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,Vt.COLUMBUS_VIEW,!0),n.camera._setTransform(L.IDENTITY);let i=mke,o=hke,a=pke;if(t>0)i.x=0,i.y=-1,i.z=1,i=p.multiplyByScalar(p.normalize(i,i),5*e.maximumRadius,i),p.negate(p.normalize(i,o),o),p.cross(p.UNIT_X,o,a);else{let d=n.camera;if(this._previousMode===Vt.SCENE2D)p.clone(d.position,i),i.z=d.frustum.right-d.frustum.left,p.negate(p.UNIT_Z,o),p.clone(p.UNIT_Y,a);else{p.clone(d.positionWC,i),p.clone(d.directionWC,o),p.clone(d.upWC,a);let m=e.scaleToGeodeticSurface(i,Rke),h=Pe.eastNorthUpToFixedFrame(m,e,Wke);L.inverseTransformation(h,h),n.mapProjection.project(e.cartesianToCartographic(i,bke),i),L.multiplyByPointAsVector(h,o,o),L.multiplyByPointAsVector(h,a,a)}}let s;this._morphToOrthographic?(s=Fke,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=fke,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=k.toRadians(60));let l=Uke;l.position=i,l.direction=o,l.up=a,l.frustum=s;let r=qke(l);A9(this,r),this._previousMode===Vt.SCENE2D?jke(this,t,l,r):(l.position2D=L.multiplyByPoint(Aa.TRANSFORM_2D,i,Vke),l.direction2D=L.multiplyByPointAsVector(Aa.TRANSFORM_2D,o,uke),l.up2D=L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a,Zke),n._mode=Vt.MORPHING,yBt(this,t,l,r)),t===0&&c(this._completeMorph)&&this._completeMorph()};var wat={position:new p,direction:new p,up:new p,frustum:void 0},GBt=new Io;NT.prototype.morphTo3D=function(t,e){c(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===Vt.SCENE3D||this._previousMode===Vt.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,Vt.SCENE3D,!0),n._mode=Vt.MORPHING,n.camera._setTransform(L.IDENTITY),this._previousMode===Vt.SCENE2D)Bke(this,t,e);else{let i;t>0?(i=wat,p.fromDegrees(0,0,5*e.maximumRadius,e,i.position),p.negate(i.position,i.direction),p.normalize(i.direction,i.direction),p.clone(p.UNIT_Z,i.up)):i=ABt(this,e);let o,a=n.camera;a.frustum instanceof wn?o=a.frustum.clone():(o=GBt,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=k.toRadians(60)),i.frustum=o;let s=QBt(i);A9(this,s),Hat(this,t,i,s)}t===0&&c(this._completeMorph)&&this._completeMorph()}};NT.prototype.isDestroyed=function(){return!1};NT.prototype.destroy=function(){return uj(this),At(this)};function A9(t,e){if(t._scene.completeMorphOnUserInput){t._morphHandler=new sp(t._scene.canvas);let n=function(){t._morphCancelled=!0,t._scene.camera.cancelFlight(),e(t)};t._completeMorph=n,t._morphHandler.setInputAction(n,ui.LEFT_DOWN),t._morphHandler.setInputAction(n,ui.MIDDLE_DOWN),t._morphHandler.setInputAction(n,ui.RIGHT_DOWN),t._morphHandler.setInputAction(n,ui.WHEEL)}}function uj(t){let e=t._currentTweens;for(let n=0;n<e.length;++n)e[n].cancelTween();t._currentTweens.length=0,t._morphHandler=t._morphHandler&&t._morphHandler.destroy()}var Gke=new gt,Ake=new p,Ske=new L;function ABt(t,e){let n=t._scene,i=n.camera,o=wat,a=o.position,s=o.direction,l=o.up,r=n.mapProjection.unproject(i.position,Gke);e.cartographicToCartesian(r,a);let d=e.scaleToGeodeticSurface(a,Ake),m=Pe.eastNorthUpToFixedFrame(d,e,Ske);return L.multiplyByPointAsVector(m,i.direction,s),L.multiplyByPointAsVector(m,i.up,l),o}var Tke=new p,gke=new p,Eke=new p,Cke=new p,Ike=new p,Nke=new p;function Hat(t,e,n,i){e*=.5;let o=t._scene,a=o.camera,s=p.clone(a.position,Tke),l=p.clone(a.direction,gke),r=p.clone(a.up,Eke),d=L.multiplyByPoint(Aa.TRANSFORM_2D_INVERSE,n.position,Cke),m=L.multiplyByPointAsVector(Aa.TRANSFORM_2D_INVERSE,n.direction,Ike),h=L.multiplyByPointAsVector(Aa.TRANSFORM_2D_INVERSE,n.up,Nke);function u(V){NV(s,d,V.time,a.position),NV(l,m,V.time,a.direction),NV(r,h,V.time,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.right,a.right)}let R=o.tweens.add({duration:e,easingFunction:ul.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:u,complete:function(){BBt(t,o,0,1,e,i)}});t._currentTweens.push(R)}var yke=new wn,SBt=new p,TBt=new p,gBt=new p,Pat=new p,EBt=new p,CBt=new p;function Bke(t,e,n){e/=3;let i=t._scene,o=i.camera,a;e>0?(a=wat,p.fromDegrees(0,0,5*n.maximumRadius,n,a.position),p.negate(a.position,a.direction),p.normalize(a.direction,a.direction),p.clone(p.UNIT_Z,a.up)):(o.position.z=o.frustum.right-o.frustum.left,a=ABt(t,n));let s;t._morphToOrthographic?(s=yke,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=GBt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=k.toRadians(60)),a.frustum=s;let l=QBt(a);A9(t,l);let r;t._morphToOrthographic?r=function(){Hat(t,e,a,l)}:r=function(){NBt(t,e,a,function(){Hat(t,e,a,l)})},e>0?(i._mode=Vt.SCENE2D,o.flyTo({duration:e,destination:p.fromDegrees(0,0,5*n.maximumRadius,n,Pat),complete:function(){i._mode=Vt.MORPHING,r()}})):r()}function NV(t,e,n,i){return p.lerp(t,e,n,i)}function IBt(t,e,n,i,o){let a=t._scene,s=a.camera;if(s.frustum instanceof wn)return;let l=s.frustum.fov,r=k.RADIANS_PER_DEGREE*.5,d=n.position.z*Math.tan(l*.5);s.frustum.far=d/Math.tan(r*.5)+1e7;function m(u){s.frustum.fov=k.lerp(l,r,u.time);let R=d/Math.tan(s.frustum.fov*.5);i(s,R)}let h=a.tweens.add({duration:e,easingFunction:ul.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:m,complete:function(){s.frustum=n.frustum.clone(),o(t)}});t._currentTweens.push(h)}var Qke=new p,kke=new p,Yke=new p,Oat=new p,xke=new p,Xke=new p,Jke=new el,Lke=new di,Mke=new p,_ke={position:void 0,direction:void 0,up:void 0,frustum:void 0};function Dke(t,e){e*=.5;let n=t._scene,i=n.camera,o=p.clone(i.position,Qke),a=p.clone(i.direction,kke),s=p.clone(i.up,Yke),l=p.negate(p.UNIT_Z,xke),r=p.clone(p.UNIT_Y,Xke),d=Oat;if(e>0)p.clone(p.ZERO,Oat),d.z=5*n.mapProjection.ellipsoid.maximumRadius;else{p.clone(o,Oat);let U=Lke;L.multiplyByPoint(Aa.TRANSFORM_2D,o,U.origin),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a,U.direction);let G=n.globe;if(c(G)){let A=G.pickWorldCoordinates(U,n,!0,Mke);c(A)&&(L.multiplyByPoint(Aa.TRANSFORM_2D_INVERSE,A,d),d.z+=p.distance(o,d))}}let m=Jke;m.right=d.z*.5,m.left=-m.right,m.top=m.right*(n.drawingBufferHeight/n.drawingBufferWidth),m.bottom=-m.top;let h=_ke;h.position=d,h.direction=l,h.up=r,h.frustum=m;let u=kBt(h);A9(t,u);function R(U){NV(o,d,U.time,i.position),NV(a,l,U.time,i.direction),NV(s,r,U.time,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function V(U,G){U.position.z=G}let F=n.tweens.add({duration:e,easingFunction:ul.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:R,complete:function(){IBt(t,e,h,V,u)}});t._currentTweens.push(F)}var UBt=new gt,Oke={position:new p,direction:new p,up:new p,position2D:new p,direction2D:new p,up2D:new p,frustum:new el},Hke={position:new p,direction:new p,up:new p,frustum:void 0},wke=new p,Pke=new di,vke=new L,Kke=new p;function zke(t,e,n){e*=.5;let i=t._scene,o=i.camera,a=Oke;if(e>0)p.clone(p.ZERO,a.position),a.position.z=5*n.maximumRadius,p.negate(p.UNIT_Z,a.direction),p.clone(p.UNIT_Y,a.up);else{n.cartesianToCartographic(o.positionWC,UBt),i.mapProjection.project(UBt,a.position),p.negate(p.UNIT_Z,a.direction),p.clone(p.UNIT_Y,a.up);let h=Pke;p.clone(a.position2D,h.origin);let u=p.clone(o.directionWC,h.direction),R=n.scaleToGeodeticSurface(o.positionWC,Kke),V=Pe.eastNorthUpToFixedFrame(R,n,vke);L.inverseTransformation(V,V),L.multiplyByPointAsVector(V,u,u),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,u,u);let F=i.globe;if(c(F)){let U=F.pickWorldCoordinates(h,i,!0,wke);if(c(U)){let G=p.distance(a.position2D,U);U.x+=G,p.clone(U,a.position2D)}}}function s(h,u){h.position.x=u}L.multiplyByPoint(Aa.TRANSFORM_2D,a.position,a.position2D),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a.direction,a.direction2D),L.multiplyByPointAsVector(Aa.TRANSFORM_2D,a.up,a.up2D);let l=a.frustum;l.right=a.position.z*.5,l.left=-l.right,l.top=l.right*(i.drawingBufferHeight/i.drawingBufferWidth),l.bottom=-l.top;let r=Hke;L.multiplyByPoint(Aa.TRANSFORM_2D_INVERSE,a.position2D,r.position),p.clone(a.direction,r.direction),p.clone(a.up,r.up),r.frustum=l;let d=kBt(r);A9(t,d);function m(){IBt(t,e,a,s,d)}yBt(t,e,a,m)}function NBt(t,e,n,i){let o=t._scene,a=o.camera,s=a.frustum.right-a.frustum.left;a.frustum=n.frustum.clone();let l=a.frustum.fov,r=k.RADIANS_PER_DEGREE*.5,d=s*Math.tan(l*.5);a.frustum.far=d/Math.tan(r*.5)+1e7,a.frustum.fov=r;function m(u){a.frustum.fov=k.lerp(r,l,u.time),a.position.z=d/Math.tan(a.frustum.fov*.5)}let h=o.tweens.add({duration:e,easingFunction:ul.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:m,complete:function(){i(t)}});t._currentTweens.push(h)}function jke(t,e,n,i){e*=.5;let o=t._scene,a=o.camera,s=p.clone(n.position,Pat),l=p.clone(n.direction,EBt),r=p.clone(n.up,CBt);o._mode=Vt.MORPHING;function d(){a.frustum=n.frustum.clone();let m=p.clone(a.position,SBt),h=p.clone(a.direction,TBt),u=p.clone(a.up,gBt);m.z=s.z;function R(F){NV(m,s,F.time,a.position),NV(h,l,F.time,a.direction),NV(u,r,F.time,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.right,a.right)}let V=o.tweens.add({duration:e,easingFunction:ul.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:R,complete:function(){i(t)}});t._currentTweens.push(V)}t._morphToOrthographic?d():NBt(t,0,n,d)}function yBt(t,e,n,i){let o=t._scene,a=o.camera,s=p.clone(a.position,SBt),l=p.clone(a.direction,TBt),r=p.clone(a.up,gBt),d=p.clone(n.position2D,Pat),m=p.clone(n.direction2D,EBt),h=p.clone(n.up2D,CBt);function u(V){NV(s,d,V.time,a.position),NV(l,m,V.time,a.direction),NV(r,h,V.time,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.right,a.right),a._adjustOrthographicFrustum(!0)}let R=o.tweens.add({duration:e,easingFunction:ul.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:u,complete:function(){BBt(t,o,1,0,e,i)}});t._currentTweens.push(R)}function BBt(t,e,n,i,o,a){let s={object:e,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ul.QUARTIC_OUT};c(a)&&(s.complete=function(){a(t)});let l=e.tweens.addProperty(s);t._currentTweens.push(l)}function QBt(t){return function(e){let n=e._scene;n._mode=Vt.SCENE3D,n.morphTime=Vt.getMorphTime(Vt.SCENE3D),uj(e);let i=n.camera;(e._previousMode!==Vt.MORPHING||e._morphCancelled)&&(e._morphCancelled=!1,p.clone(t.position,i.position),p.clone(t.direction,i.direction),p.clone(t.up,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right),i.frustum=t.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let a=c(e._completeMorph);e._completeMorph=void 0,n.camera.update(n.mode),e._scene.morphComplete.raiseEvent(e,e._previousMode,Vt.SCENE3D,a)}}function kBt(t){return function(e){let n=e._scene;n._mode=Vt.SCENE2D,n.morphTime=Vt.getMorphTime(Vt.SCENE2D),uj(e);let i=n.camera;p.clone(t.position,i.position),i.position.z=n.mapProjection.ellipsoid.maximumRadius*2,p.clone(t.direction,i.direction),p.clone(t.up,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right),i.frustum=t.frustum.clone();let o=c(e._completeMorph);e._completeMorph=void 0,n.camera.update(n.mode),e._scene.morphComplete.raiseEvent(e,e._previousMode,Vt.SCENE2D,o)}}function qke(t){return function(e){let n=e._scene;n._mode=Vt.COLUMBUS_VIEW,n.morphTime=Vt.getMorphTime(Vt.COLUMBUS_VIEW),uj(e);let i=n.camera;(e._previousModeMode!==Vt.MORPHING||e._morphCancelled)&&(e._morphCancelled=!1,p.clone(t.position,i.position),p.clone(t.direction,i.direction),p.clone(t.up,i.up),p.cross(i.direction,i.up,i.right),p.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let a=c(e._completeMorph);e._completeMorph=void 0,n.camera.update(n.mode),e._scene.morphComplete.raiseEvent(e,e._previousMode,Vt.COLUMBUS_VIEW,a)}}var S9=NT;var s2o=b(W(),1);var Gko=b(W(),1);var pko=b(W(),1),$ke={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},Mo=Object.freeze($ke);function pc(t,e){let n=t;return c(e)&&(n+=`+${e}`),n}function t2e(t,e){K.clone(t.distance.startPosition,e.distance.startPosition),K.clone(t.distance.endPosition,e.distance.endPosition),K.clone(t.angleAndHeight.startPosition,e.angleAndHeight.startPosition),K.clone(t.angleAndHeight.endPosition,e.angleAndHeight.endPosition)}function YBt(t,e,n){let i=pc(Mo.PINCH,e),o=t._update,a=t._isDown,s=t._eventStartPosition,l=t._pressTime,r=t._releaseTime;o[i]=!0,a[i]=!1,s[i]=new K;let d=t._movement[i];c(d)||(d=t._movement[i]={}),d.distance={startPosition:new K,endPosition:new K},d.angleAndHeight={startPosition:new K,endPosition:new K},d.prevAngle=0,t._eventHandler.setInputAction(function(m){t._buttonsDown++,a[i]=!0,l[i]=new Date,K.lerp(m.position1,m.position2,.5,s[i])},ui.PINCH_START,e),t._eventHandler.setInputAction(function(){t._buttonsDown=Math.max(t._buttonsDown-1,0),a[i]=!1,r[i]=new Date},ui.PINCH_END,e),t._eventHandler.setInputAction(function(m){if(a[i]){o[i]?(t2e(m,d),o[i]=!1,d.prevAngle=d.angleAndHeight.startPosition.x):(K.clone(m.distance.endPosition,d.distance.endPosition),K.clone(m.angleAndHeight.endPosition,d.angleAndHeight.endPosition));let h=d.angleAndHeight.endPosition.x,u=d.prevAngle,R=Math.PI*2;for(;h>=u+Math.PI;)h-=R;for(;h<u-Math.PI;)h+=R;d.angleAndHeight.endPosition.x=-h*n.clientWidth/12,d.angleAndHeight.startPosition.x=-u*n.clientWidth/12}},ui.PINCH_MOVE,e)}function xBt(t,e){let n=pc(Mo.WHEEL,e),i=t._pressTime,o=t._releaseTime,a=t._update;a[n]=!0;let s=t._movement[n];c(s)||(s=t._movement[n]={});let l=t._lastMovement[n];c(l)||(l=t._lastMovement[n]={startPosition:new K,endPosition:new K,valid:!1}),s.startPosition=new K,K.clone(K.ZERO,s.startPosition),s.endPosition=new K,t._eventHandler.setInputAction(function(r){let d=7.5*k.toRadians(r);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=d,K.clone(s.endPosition,l.endPosition),l.valid=!0,a[n]=!1},ui.WHEEL,e)}function H1(t,e,n){let i=pc(n,e),o=t._isDown,a=t._eventStartPosition,s=t._pressTime,l=t._releaseTime;o[i]=!1,a[i]=new K;let r=t._lastMovement[i];c(r)||(r=t._lastMovement[i]={startPosition:new K,endPosition:new K,valid:!1});let d,m;n===Mo.LEFT_DRAG?(d=ui.LEFT_DOWN,m=ui.LEFT_UP):n===Mo.RIGHT_DRAG?(d=ui.RIGHT_DOWN,m=ui.RIGHT_UP):n===Mo.MIDDLE_DRAG&&(d=ui.MIDDLE_DOWN,m=ui.MIDDLE_UP),t._eventHandler.setInputAction(function(h){t._buttonsDown++,r.valid=!1,o[i]=!0,s[i]=new Date,K.clone(h.position,a[i])},d,e),t._eventHandler.setInputAction(function(){t._buttonsDown=Math.max(t._buttonsDown-1,0),o[i]=!1,l[i]=new Date},m,e)}function XBt(t,e){K.clone(t.startPosition,e.startPosition),K.clone(t.endPosition,e.endPosition)}function JBt(t,e){let n=t._update,i=t._movement,o=t._lastMovement,a=t._isDown;for(let s in Mo)if(Mo.hasOwnProperty(s)){let l=Mo[s];if(c(l)){let r=pc(l,e);n[r]=!0,c(t._lastMovement[r])||(t._lastMovement[r]={startPosition:new K,endPosition:new K,valid:!1}),c(t._movement[r])||(t._movement[r]={startPosition:new K,endPosition:new K})}}t._eventHandler.setInputAction(function(s){for(let l in Mo)if(Mo.hasOwnProperty(l)){let r=Mo[l];if(c(r)){let d=pc(r,e);a[d]&&(n[d]?(XBt(i[d],o[d]),o[d].valid=!0,XBt(s,i[d]),n[d]=!1):K.clone(s.endPosition,i[d].endPosition))}}K.clone(s.endPosition,t._currentMousePosition)},ui.MOUSE_MOVE,e)}function yV(t){this._eventHandler=new sp(t),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new K,xBt(this,void 0),YBt(this,void 0,t),H1(this,void 0,Mo.LEFT_DRAG),H1(this,void 0,Mo.RIGHT_DRAG),H1(this,void 0,Mo.MIDDLE_DRAG),JBt(this,void 0);for(let e in id)if(id.hasOwnProperty(e)){let n=id[e];c(n)&&(xBt(this,n),YBt(this,n,t),H1(this,n,Mo.LEFT_DRAG),H1(this,n,Mo.RIGHT_DRAG),H1(this,n,Mo.MIDDLE_DRAG),JBt(this,n))}}Object.defineProperties(yV.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let t=!this._update[pc(Mo.WHEEL)]||!this._update[pc(Mo.WHEEL,id.SHIFT)]||!this._update[pc(Mo.WHEEL,id.CTRL)]||!this._update[pc(Mo.WHEEL,id.ALT)];return this._buttonsDown>0||t}}});yV.prototype.isMoving=function(t,e){let n=pc(t,e);return!this._update[n]};yV.prototype.getMovement=function(t,e){let n=pc(t,e);return this._movement[n]};yV.prototype.getLastMovement=function(t,e){let n=pc(t,e),i=this._lastMovement[n];if(i.valid)return i};yV.prototype.isButtonDown=function(t,e){let n=pc(t,e);return this._isDown[n]};yV.prototype.getStartMousePosition=function(t,e){if(t===Mo.WHEEL)return this._currentMousePosition;let n=pc(t,e);return this._eventStartPosition[n]};yV.prototype.getButtonPressTime=function(t,e){let n=pc(t,e);return this._pressTime[n]};yV.prototype.getButtonReleaseTime=function(t,e){let n=pc(t,e);return this._releaseTime[n]};yV.prototype.reset=function(){for(let t in this._update)this._update.hasOwnProperty(t)&&(this._update[t]=!0)};yV.prototype.isDestroyed=function(){return!1};yV.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),At(this)};var T9=yV;var yko=b(W(),1);function Zj(t,e,n,i,o,a,s,l,r,d){this._tweens=t,this._tweenjs=e,this._startObject=Re(n),this._stopObject=Re(i),this._duration=o,this._delay=a,this._easingFunction=s,this._update=l,this._complete=r,this.cancel=d,this.needsStart=!0}Object.defineProperties(Zj.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});Zj.prototype.cancelTween=function(){this._tweens.remove(this)};function mZ(){this._tweens=[]}Object.defineProperties(mZ.prototype,{length:{get:function(){return this._tweens.length}}});mZ.prototype.add=function(t){if(t=f(t,f.EMPTY_OBJECT),t.duration===0)return c(t.complete)&&t.complete(),new Zj(this);let e=t.duration/xi.SECONDS_PER_MILLISECOND,n=f(t.delay,0),i=n/xi.SECONDS_PER_MILLISECOND,o=f(t.easingFunction,ul.LINEAR_NONE),a=t.startObject,s=new TEt(a);s.to(Re(t.stopObject),e),s.delay(i),s.easing(o),c(t.update)&&s.onUpdate(function(){t.update(a)}),s.onComplete(f(t.complete,null)),s.repeat(f(t._repeat,0));let l=new Zj(this,s,t.startObject,t.stopObject,t.duration,n,o,t.update,t.complete,t.cancel);return this._tweens.push(l),l};mZ.prototype.addProperty=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.object,n=t.property,i=t.startValue,o=t.stopValue;function a(s){e[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:f(t.duration,3),delay:t.delay,easingFunction:t.easingFunction,update:a,complete:t.complete,cancel:t.cancel,_repeat:t._repeat})};mZ.prototype.addAlpha=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.material,n=[];for(let o in e.uniforms)e.uniforms.hasOwnProperty(o)&&c(e.uniforms[o])&&c(e.uniforms[o].alpha)&&n.push(o);function i(o){let a=n.length;for(let s=0;s<a;++s)e.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:f(t.startValue,0)},stopObject:{alpha:f(t.stopValue,1)},duration:f(t.duration,3),delay:t.delay,easingFunction:t.easingFunction,update:i,complete:t.complete,cancel:t.cancel})};mZ.prototype.addOffsetIncrement=function(t){t=f(t,f.EMPTY_OBJECT);let n=t.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:t.duration,delay:t.delay,easingFunction:t.easingFunction,update:t.update,cancel:t.cancel,_repeat:1/0})};mZ.prototype.remove=function(t){if(!c(t))return!1;let e=this._tweens.indexOf(t);return e!==-1?(t.tweenjs.stop(),c(t.cancel)&&t.cancel(),this._tweens.splice(e,1),!0):!1};mZ.prototype.removeAll=function(){let t=this._tweens;for(let e=0;e<t.length;++e){let n=t[e];n.tweenjs.stop(),c(n.cancel)&&n.cancel()}t.length=0};mZ.prototype.contains=function(t){return c(t)&&this._tweens.indexOf(t)!==-1};mZ.prototype.get=function(t){return this._tweens[t]};mZ.prototype.update=function(t){let e=this._tweens,n=0;for(t=c(t)?t/xi.SECONDS_PER_MILLISECOND:Oi();n<e.length;){let i=e[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(t)):o.update(t)?n++:(o.stop(),e.splice(n,1))}};var yT=mZ;function E9(t){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.translateEventTypes=Mo.LEFT_DRAG,this.zoomEventTypes=[Mo.RIGHT_DRAG,Mo.WHEEL,Mo.PINCH],this.rotateEventTypes=Mo.LEFT_DRAG,this.tiltEventTypes=[Mo.MIDDLE_DRAG,Mo.PINCH,{eventType:Mo.LEFT_DRAG,modifier:id.CTRL},{eventType:Mo.RIGHT_DRAG,modifier:id.CTRL}],this.lookEventTypes={eventType:Mo.LEFT_DRAG,modifier:id.SHIFT},this.minimumPickingTerrainHeight=15e4,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumCollisionTerrainHeight=15e3,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=75e5,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this._scene=t,this._globe=void 0,this._ellipsoid=void 0,this._lastGlobeHeight=0,this._aggregator=new T9(t.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new yT,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new K(-1,-1),this._tiltCenter=new p,this._rotateMousePosition=new K(-1,-1),this._rotateStartPosition=new p,this._strafeStartPosition=new p,this._strafeMousePosition=new K,this._strafeEndMousePosition=new K,this._zoomMouseStart=new K(-1,-1),this._zoomWorldPosition=new p,this._useZoomWorldPosition=!1,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let e=t.mapProjection;this._maxCoord=e.project(new gt(Math.PI,k.PI_OVER_TWO)),this._zoomFactor=5,this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function e2e(t,e){if(t<0)return 0;let n=(1-e)*25;return Math.exp(-n*t)}function n2e(t){return K.equalsEpsilon(t.startPosition,t.endPosition,k.EPSILON14)}var i2e=.4;function o2e(t,e,n,i,o,a,s){let l=a[s];c(l)||(l=a[s]={startPosition:new K,endPosition:new K,motion:new K,inertiaEnabled:!0});let r=t.getButtonPressTime(e,n),d=t.getButtonReleaseTime(e,n),m=r&&d&&(d.getTime()-r.getTime())/1e3,u=d&&(new Date().getTime()-d.getTime())/1e3;if(r&&d&&m<i2e){let R=e2e(u,i),V=t.getLastMovement(e,n);if(!c(V)||n2e(V)||!l.inertiaEnabled||(l.motion.x=(V.endPosition.x-V.startPosition.x)*.5,l.motion.y=(V.endPosition.y-V.startPosition.y)*.5,l.startPosition=K.clone(V.startPosition,l.startPosition),l.endPosition=K.multiplyByScalar(l.motion,R,l.endPosition),l.endPosition=K.add(l.startPosition,l.endPosition,l.endPosition),isNaN(l.endPosition.x)||isNaN(l.endPosition.y)||K.distance(l.startPosition,l.endPosition)<.5))return;if(!t.isButtonDown(e,n)){let F=t.getStartMousePosition(e,n);o(a,F,l)}}}function a2e(t,e){if(c(e)){let n=t[e];c(n)&&(n.inertiaEnabled=!0);let i=t._inertiaDisablers[e];if(c(i)){let o=i.length;for(let a=0;a<o;++a)n=t[i[a]],c(n)&&(n.inertiaEnabled=!1)}}}var LBt=[];function om(t,e,n,i,o,a){if(!c(n))return;let s=t._aggregator;Array.isArray(n)||(LBt[0]=n,n=LBt);let l=n.length;for(let r=0;r<l;++r){let d=n[r],m=c(d.eventType)?d.eventType:d,h=d.modifier,u=s.isMoving(m,h)&&s.getMovement(m,h),R=s.getStartMousePosition(m,h);t.enableInputs&&e&&(u?(i(t,R,u),a2e(t,a)):o<1&&o2e(s,m,h,o,i,t,a))}}var Rj=new di,s2e=new p,l2e=new K,r2e=new p,d2e=new K,c2e=new p,m2e=new p,h2e=new p,p2e=new p,V2e=new p,u2e=new p,Z2e=new p,R2e=new p,b2e=new p,W2e=new p,f2e=new p,F2e=new p,U2e=new p,G2e=new p,A2e=new p,BT=new p,MBt=new p,_Bt=new p,vat={orientation:new Jr};function nst(t,e,n,i,o,a){let s=1;c(a)&&(s=k.clamp(Math.abs(a),.25,1));let l=n.endPosition.y-n.startPosition.y,d=l>0?t.minimumZoomDistance*s:0,m=t.maximumZoomDistance,h=o-d,u=i*h;u=k.clamp(u,t._minimumZoomRate,t._maximumZoomRate);let R=l/t._scene.canvas.clientHeight;R=Math.min(R,t.maximumMovementRatio);let V=u*R;if(t.enableCollisionDetection||t.minimumZoomDistance===0||!c(t._globe)){if(V>0&&Math.abs(o-d)<1||V<0&&Math.abs(o-m)<1)return;o-V<d?V=o-d-1:o-V>m&&(V=o-m)}let F=t._scene,U=F.camera,G=F.mode,A=vat.orientation;if(A.heading=U.heading,A.pitch=U.pitch,A.roll=U.roll,U.frustum instanceof wn){Math.abs(V)>0&&(U.zoomIn(V),U._adjustOrthographicFrustum());return}let S=K.equals(e,t._zoomMouseStart),g=t._zoomingOnVector,C=t._rotatingZoom,y;if(S||(t._zoomMouseStart=K.clone(e,t._zoomMouseStart),c(t._globe)&&(G===Vt.SCENE2D?(y=U.getPickRay(e,Rj).origin,y=p.fromElements(y.y,y.z,y.x)):y=GU(t,e,s2e)),c(y)?(t._useZoomWorldPosition=!0,t._zoomWorldPosition=p.clone(y,t._zoomWorldPosition)):t._useZoomWorldPosition=!1,g=t._zoomingOnVector=!1,C=t._rotatingZoom=!1,t._zoomingUnderground=t._cameraUnderground),!t._useZoomWorldPosition){U.zoomIn(V);return}let Y=G===Vt.COLUMBUS_VIEW;if(U.positionCartographic.height<2e6&&(C=!0),!S||C){if(G===Vt.SCENE2D){let Q=t._zoomWorldPosition,J=U.position;if(!p.equals(Q,J)&&U.positionCartographic.height<t._maxCoord.x*2){let M=U.position.x,Z=p.subtract(Q,J,r2e);p.normalize(Z,Z);let E=p.distance(Q,J)*V/(U.getMagnitude()*.5);U.move(Z,E*.5),(U.position.x<0&&M>0||U.position.x>0&&M<0)&&(y=U.getPickRay(e,Rj).origin,y=p.fromElements(y.y,y.z,y.x),t._zoomWorldPosition=p.clone(y,t._zoomWorldPosition))}}else if(G===Vt.SCENE3D){let Q=p.normalize(U.position,V2e);if(t._cameraUnderground||t._zoomingUnderground||U.positionCartographic.height<3e3&&Math.abs(p.dot(U.direction,Q))<.6)Y=!0;else{let J=F.canvas,M=d2e;M.x=J.clientWidth/2,M.y=J.clientHeight/2;let Z=GU(t,M,c2e);if(!c(Z))Y=!0;else if(U.positionCartographic.height<1e6)if(p.dot(U.direction,Q)>=-.5)Y=!0;else{let E=Z2e;p.clone(U.position,E);let I=t._zoomWorldPosition,B=u2e;if(B=p.normalize(I,B),p.dot(B,Q)<0)return;let X=A2e,_=W2e;p.clone(U.direction,_),p.add(E,p.multiplyByScalar(_,1e3,BT),X);let P=f2e,w=F2e;p.subtract(I,E,P),p.normalize(P,w);let z=p.dot(Q,w);if(z>=0){t._zoomMouseStart.x=-1;return}let H=Math.acos(-z),nt=p.magnitude(E),$=p.magnitude(I),dt=nt-V,q=p.magnitude(P),at=Math.asin(k.clamp(q/$*Math.sin(H),-1,1)),st=Math.asin(k.clamp(dt/$*Math.sin(H),-1,1)),Et=at-st+H,Qt=R2e;p.normalize(E,Qt);let Wt=b2e;Wt=p.cross(w,Qt,Wt),Wt=p.normalize(Wt,Wt),p.normalize(p.cross(Qt,Wt,BT),_),p.multiplyByScalar(p.normalize(X,BT),p.magnitude(X)-V,X),p.normalize(E,E),p.multiplyByScalar(E,dt,E);let Nt=U2e;p.multiplyByScalar(p.add(p.multiplyByScalar(Qt,Math.cos(Et)-1,MBt),p.multiplyByScalar(_,Math.sin(Et),_Bt),BT),dt,Nt),p.add(E,Nt,E),p.normalize(X,Qt),p.normalize(p.cross(Qt,Wt,BT),_);let kt=G2e;p.multiplyByScalar(p.add(p.multiplyByScalar(Qt,Math.cos(Et)-1,MBt),p.multiplyByScalar(_,Math.sin(Et),_Bt),BT),p.magnitude(X),kt),p.add(X,kt,X),p.clone(E,U.position),p.normalize(p.subtract(X,E,BT),U.direction),p.clone(U.direction,U.direction),p.cross(U.direction,U.up,U.right),p.cross(U.right,U.direction,U.up),U.setView(vat);return}else{let E=p.normalize(Z,m2e),I=p.normalize(t._zoomWorldPosition,h2e),B=p.dot(I,E);if(B>0&&B<1){let X=k.acosClamped(B),_=p.cross(I,E,p2e),P=Math.abs(X)>k.toRadians(20)?U.positionCartographic.height*.75:U.positionCartographic.height-V,w=V/P;U.rotate(_,X*w)}}}}t._rotatingZoom=!Y}if(!S&&Y||g){let Q,J=qo.wgs84ToWindowCoordinates(F,t._zoomWorldPosition,l2e);G!==Vt.COLUMBUS_VIEW&&K.equals(e,t._zoomMouseStart)&&c(J)?Q=U.getPickRay(J,Rj):Q=U.getPickRay(e,Rj);let M=Q.direction;(G===Vt.COLUMBUS_VIEW||G===Vt.SCENE2D)&&p.fromElements(M.y,M.z,M.x,M),U.move(M,V),t._zoomingOnVector=!0}else U.zoomIn(V);t._cameraUnderground||U.setView(vat)}var S2e=new di,T2e=new di,g2e=new p;function E2e(t,e,n){let o=t._scene.camera,a=o.getPickRay(n.startPosition,S2e).origin,s=o.getPickRay(n.endPosition,T2e).origin;a=p.fromElements(a.y,a.z,a.x,a),s=p.fromElements(s.y,s.z,s.x,s);let l=p.subtract(a,s,g2e),r=p.magnitude(l);r>0&&(p.normalize(l,l),o.move(l,r))}function DBt(t,e,n){c(n.distance)&&(n=n.distance);let o=t._scene.camera;nst(t,e,n,t._zoomFactor,o.getMagnitude())}var C2e=new K,I2e=new K;function OBt(t,e,n){if(c(n.angleAndHeight)){N2e(t,e,n.angleAndHeight);return}let i=t._scene,o=i.camera,a=i.canvas,s=a.clientWidth,l=a.clientHeight,r=C2e;r.x=2/s*n.startPosition.x-1,r.y=2/l*(l-n.startPosition.y)-1,r=K.normalize(r,r);let d=I2e;d.x=2/s*n.endPosition.x-1,d.y=2/l*(l-n.endPosition.y)-1,d=K.normalize(d,d);let m=k.acosClamped(r.x);r.y<0&&(m=k.TWO_PI-m);let h=k.acosClamped(d.x);d.y<0&&(h=k.TWO_PI-h);let u=h-m;o.twistRight(u)}function N2e(t,e,n){let i=t._rotateFactor*t._rotateRateRangeAdjustment;i>t._maximumRotateRate&&(i=t._maximumRotateRate),i<t._minimumRotateRate&&(i=t._minimumRotateRate);let o=t._scene,a=o.camera,s=o.canvas,l=(n.endPosition.x-n.startPosition.x)/s.clientWidth;l=Math.min(l,t.maximumMovementRatio);let r=i*l*Math.PI*4;a.twistRight(r)}function y2e(t){let e=t._scene.mapMode2D===eh.ROTATE;L.equals(L.IDENTITY,t._scene.camera.transform)?(om(t,t.enableTranslate,t.translateEventTypes,E2e,t.inertiaTranslate,"_lastInertiaTranslateMovement"),om(t,t.enableZoom,t.zoomEventTypes,DBt,t.inertiaZoom,"_lastInertiaZoomMovement"),e&&om(t,t.enableRotate,t.tiltEventTypes,OBt,t.inertiaSpin,"_lastInertiaTiltMovement")):(om(t,t.enableZoom,t.zoomEventTypes,DBt,t.inertiaZoom,"_lastInertiaZoomMovement"),e&&om(t,t.enableRotate,t.translateEventTypes,OBt,t.inertiaSpin,"_lastInertiaSpinMovement"))}var KBt=new di,B2e=new p,Q2e=new p;function GU(t,e,n){let i=t._scene,o=t._globe,a=i.camera;if(!c(o))return;let s=!t._cameraUnderground,l;i.pickPositionSupported&&(l=i.pickPositionWorldCoordinates(e,B2e));let r=a.getPickRay(e,KBt),d=o.pickWorldCoordinates(r,i,s,Q2e),m=c(l)?p.distance(l,a.positionWC):Number.POSITIVE_INFINITY,h=c(d)?p.distance(d,a.positionWC):Number.POSITIVE_INFINITY;return m<h?p.clone(l,n):p.clone(d,n)}var k2e=new gt;function Gj(t){let e=t._ellipsoid,n=t._scene,i=n.camera,o=n.mode,a=0;if(o===Vt.SCENE3D){let r=e.cartesianToCartographic(i.position,k2e);c(r)&&(a=r.height)}else a=i.position.z;let s=f(t._scene.globeHeight,0);return Math.abs(s-a)}var Y2e=new p;function zBt(t,e){let n=e.origin,i=e.direction,o=Gj(t),a=p.normalize(n,Y2e),s=Math.abs(p.dot(a,i));return s=Math.max(s,.5)*2,o*s}function jBt(t,e,n,i){let o=p.distance(e.origin,n),a=Gj(t),s=k.clamp(a*5,t._minimumUndergroundPickDistance,t._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,a/5),o=Math.max(o,100)),di.getPoint(e,o,i)}function qBt(t,e,n,i){let o;return c(n)?(o=p.distance(e.origin,n),o>t._maximumUndergroundPickDistance&&(o=Gj(t))):o=Gj(t),di.getPoint(e,o,i)}var x2e=new K;function $Bt(t,e){let n=e.endPosition,i=K.subtract(e.endPosition,e.startPosition,x2e),o=t._strafeEndMousePosition;K.add(o,i,o),e.endPosition=o,ist(t,e,t._strafeStartPosition),e.endPosition=n}var HBt=new di,X2e=new di,Kat=new p,J2e=new p,L2e=new p,M2e=new p,_2e=new Kn(p.UNIT_X,0),D2e=new K,O2e=new K;function H2e(t,e,n){if(p.equals(e,t._translateMousePosition)||(t._looking=!1),p.equals(e,t._strafeMousePosition)||(t._strafing=!1),t._looking){rp(t,e,n);return}if(t._strafing){$Bt(t,n);return}let o=t._scene.camera,a=t._cameraUnderground,s=K.clone(n.startPosition,D2e),l=K.clone(n.endPosition,O2e),r=o.getPickRay(s,HBt),d=p.clone(p.ZERO,M2e),m=p.UNIT_X,h;if(o.position.z<t._minimumPickingTerrainHeight&&(h=GU(t,s,Kat),c(h)&&(d.x=h.x)),a||d.x>o.position.z&&c(h)){let S=h;a&&(S=qBt(t,r,h,Kat)),K.clone(e,t._strafeMousePosition),K.clone(e,t._strafeEndMousePosition),p.clone(S,t._strafeStartPosition),t._strafing=!0,ist(t,n,t._strafeStartPosition);return}let u=Kn.fromPointNormal(d,m,_2e);r=o.getPickRay(s,HBt);let R=no.rayPlane(r,u,Kat),V=o.getPickRay(l,X2e),F=no.rayPlane(V,u,J2e);if(!c(R)||!c(F)){t._looking=!0,rp(t,e,n),K.clone(e,t._translateMousePosition);return}let U=p.subtract(R,F,L2e),G=U.x;U.x=U.y,U.y=U.z,U.z=G;let A=p.magnitude(U);A>k.EPSILON6&&(p.normalize(U,U),o.move(U,A))}var tQt=new K,Wj=new di,fj=new p,w2e=new p,eQt=new L,P2e=new L,v2e=new p,K2e=new Kn(p.UNIT_X,0),zat=new p,$at=new gt,nQt=new L,z2e=new wt,j2e=new ot,Fj=new p;function q2e(t,e,n){if(c(n.angleAndHeight)&&(n=n.angleAndHeight),K.equals(e,t._tiltCenterMousePosition)||(t._tiltCVOffMap=!1,t._looking=!1),t._looking){rp(t,e,n);return}let o=t._scene.camera;t._tiltCVOffMap||!t.onMap()||Math.abs(o.position.z)>t._minimumPickingTerrainHeight?(t._tiltCVOffMap=!0,$2e(t,e,n)):tYe(t,e,n)}function $2e(t,e,n){let i=t._scene,o=i.camera,a=i.canvas,s=tQt;s.x=a.clientWidth/2,s.y=a.clientHeight/2;let l=o.getPickRay(s,Wj),r=p.UNIT_X,d=l.origin,m=l.direction,h,u=p.dot(r,m);if(Math.abs(u)>k.EPSILON6&&(h=-p.dot(r,d)/u),!c(h)||h<=0){t._looking=!0,rp(t,e,n),K.clone(e,t._tiltCenterMousePosition);return}let R=p.multiplyByScalar(m,h,fj);p.add(d,R,R);let V=i.mapProjection,F=V.ellipsoid;p.fromElements(R.y,R.z,R.x,R);let U=V.unproject(R,$at);F.cartographicToCartesian(U,R);let G=Pe.eastNorthUpToFixedFrame(R,F,eQt),A=t._globe,S=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let g=L.clone(o.transform,nQt);o._setTransform(G),lp(t,e,n,p.UNIT_Z),o._setTransform(g),t._globe=A,t._ellipsoid=S;let C=S.maximumRadius;t._rotateFactor=1/C,t._rotateRateRangeAdjustment=C}function tYe(t,e,n){let i=t._scene,o=i.camera,a=t._cameraUnderground,s,l,r=p.UNIT_X;if(K.equals(e,t._tiltCenterMousePosition))s=p.clone(t._tiltCenter,fj);else{if(o.position.z<t._minimumPickingTerrainHeight&&(s=GU(t,e,fj)),!c(s)){l=o.getPickRay(e,Wj);let Z=l.origin,E=l.direction,I,B=p.dot(r,E);if(Math.abs(B)>k.EPSILON6&&(I=-p.dot(r,Z)/B),!c(I)||I<=0){t._looking=!0,rp(t,e,n),K.clone(e,t._tiltCenterMousePosition);return}s=p.multiplyByScalar(E,I,fj),p.add(Z,s,s)}a&&(c(l)||(l=o.getPickRay(e,Wj)),jBt(t,l,s,s)),K.clone(e,t._tiltCenterMousePosition),p.clone(s,t._tiltCenter)}let d=i.canvas,m=tQt;m.x=d.clientWidth/2,m.y=t._tiltCenterMousePosition.y,l=o.getPickRay(m,Wj);let h=p.clone(p.ZERO,v2e);h.x=s.x;let u=Kn.fromPointNormal(h,r,K2e),R=no.rayPlane(l,u,w2e),V=o._projection,F=V.ellipsoid;p.fromElements(s.y,s.z,s.x,s);let U=V.unproject(s,$at);F.cartographicToCartesian(U,s);let G=Pe.eastNorthUpToFixedFrame(s,F,eQt),A;c(R)?(p.fromElements(R.y,R.z,R.x,R),U=V.unproject(R,$at),F.cartographicToCartesian(U,R),A=Pe.eastNorthUpToFixedFrame(R,F,P2e)):A=G;let S=t._globe,g=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let C=p.UNIT_Z,y=L.clone(o.transform,nQt);o._setTransform(G);let Y=p.cross(p.UNIT_Z,p.normalize(o.position,zat),zat),Q=p.dot(o.right,Y);if(lp(t,e,n,C,!1,!0),o._setTransform(A),Q<0){let Z=n.startPosition.y-n.endPosition.y;(a&&Z<0||!a&&Z>0)&&(C=void 0);let E=o.constrainedAxis;o.constrainedAxis=void 0,lp(t,e,n,C,!0,!1),o.constrainedAxis=E}else lp(t,e,n,C,!0,!1);if(c(o.constrainedAxis)){let Z=p.cross(o.direction,o.constrainedAxis,Fj);p.equalsEpsilon(Z,p.ZERO,k.EPSILON6)||(p.dot(Z,o.right)<0&&p.negate(Z,Z),p.cross(Z,o.direction,o.up),p.cross(o.direction,o.up,o.right),p.normalize(o.up,o.up),p.normalize(o.right,o.right))}o._setTransform(y),t._globe=S,t._ellipsoid=g;let J=g.maximumRadius;t._rotateFactor=1/J,t._rotateRateRangeAdjustment=J;let M=p.clone(o.positionWC,zat);if(t.enableCollisionDetection&&sst(t,!0),!p.equals(o.positionWC,M)){o._setTransform(A),o.worldToCameraCoordinatesPoint(M,M);let Z=p.magnitudeSquared(M);p.magnitudeSquared(o.position)>Z&&(p.normalize(o.position,o.position),p.multiplyByScalar(o.position,Math.sqrt(Z),o.position));let E=p.angleBetween(M,o.position),I=p.cross(M,o.position,M);p.normalize(I,I);let B=wt.fromAxisAngle(I,E,z2e),X=ot.fromQuaternion(B,j2e);ot.multiplyByVector(X,o.direction,o.direction),ot.multiplyByVector(X,o.up,o.up),p.cross(o.direction,o.up,o.right),p.cross(o.right,o.direction,o.up),o._setTransform(y)}}var iQt=new K,oQt=new di,aQt=new p;function eYe(t,e,n){c(n.distance)&&(n=n.distance);let i=t._scene,o=i.camera,a=i.canvas,s=t._cameraUnderground,l;s?l=e:(l=iQt,l.x=a.clientWidth/2,l.y=a.clientHeight/2);let r=o.getPickRay(l,oQt),d=r.origin,m=r.direction,h=o.position.z,u;h<t._minimumPickingTerrainHeight&&(u=GU(t,l,aQt));let R;if(c(u)&&(R=p.distance(d,u)),s){let V=zBt(t,r,h);c(R)?R=Math.min(R,V):R=V}if(!c(R)){let V=p.UNIT_X;R=-p.dot(V,d)/p.dot(V,m)}nst(t,e,n,t._zoomFactor,R)}function nYe(t){let n=t._scene.camera;if(!L.equals(L.IDENTITY,n.transform))om(t,t.enableRotate,t.rotateEventTypes,lp,t.inertiaSpin,"_lastInertiaSpinMovement"),om(t,t.enableZoom,t.zoomEventTypes,sQt,t.inertiaZoom,"_lastInertiaZoomMovement");else{let i=t._tweens;if(t._aggregator.anyButtonDown&&i.removeAll(),om(t,t.enableTilt,t.tiltEventTypes,q2e,t.inertiaSpin,"_lastInertiaTiltMovement"),om(t,t.enableTranslate,t.translateEventTypes,H2e,t.inertiaTranslate,"_lastInertiaTranslateMovement"),om(t,t.enableZoom,t.zoomEventTypes,eYe,t.inertiaZoom,"_lastInertiaZoomMovement"),om(t,t.enableLook,t.lookEventTypes,rp),!t._aggregator.anyButtonDown&&!i.contains(t._tween)){let o=n.createCorrectPositionTween(t.bounceAnimationTime);c(o)&&(t._tween=i.add(o))}i.update()}}var iYe=new di,oYe=new Kn(p.UNIT_X,0),aYe=new p,sYe=new p,lYe=new p;function ist(t,e,n){let i=t._scene,o=i.camera,a=o.getPickRay(e.endPosition,iYe),s=p.clone(o.direction,sYe);i.mode===Vt.COLUMBUS_VIEW&&p.fromElements(s.z,s.x,s.y,s);let l=Kn.fromPointNormal(n,s,oYe),r=no.rayPlane(a,l,aYe);c(r)&&(s=p.subtract(n,r,s),i.mode===Vt.COLUMBUS_VIEW&&p.fromElements(s.y,s.z,s.x,s),p.add(o.position,s,o.position))}var wBt=new p,rYe=new gt,tst=new p,est=new mt,dYe=new p,cYe=new p;function mYe(t,e,n){let o=t._scene.camera,a=t._cameraUnderground,s=t._ellipsoid;if(!L.equals(o.transform,L.IDENTITY)){lp(t,e,n);return}let l,r,d=s.geodeticSurfaceNormal(o.position,dYe);if(K.equals(e,t._rotateMousePosition)){if(t._looking)rp(t,e,n,d);else if(t._rotating)lp(t,e,n);else if(t._strafing){if(o.ignoreEllipsoid)return;$Bt(t,n)}else{if(o.ignoreEllipsoid||p.magnitude(o.position)<p.magnitude(t._rotateStartPosition))return;l=p.magnitude(t._rotateStartPosition),r=tst,r.x=r.y=r.z=l,s=mt.fromCartesian3(r,est),qat(t,e,n,s)}return}t._looking=!1,t._rotating=!1,t._strafing=!1;let m=s.cartesianToCartographic(o.positionWC,rYe).height,h=t._globe;if(c(h)&&m<t._minimumPickingTerrainHeight){let u=GU(t,n.startPosition,lYe);if(c(u)&&!o.ignoreEllipsoid){let R=!1,V=o.getPickRay(n.startPosition,KBt);if(a)R=!0,qBt(t,V,u,u);else{let F=s.geodeticSurfaceNormal(u,cYe);Math.abs(p.dot(V.direction,F))<.05?R=!0:R=p.magnitude(o.position)<p.magnitude(u)}R?(K.clone(e,t._strafeEndMousePosition),p.clone(u,t._strafeStartPosition),t._strafing=!0,ist(t,n,t._strafeStartPosition)):(l=p.magnitude(u),r=tst,r.x=r.y=r.z=l,s=mt.fromCartesian3(r,est),qat(t,e,n,s),p.clone(u,t._rotateStartPosition))}else t._looking=!0,rp(t,e,n,d)}else c(o.pickEllipsoid(n.startPosition,t._ellipsoid,wBt))?(qat(t,e,n,t._ellipsoid),p.clone(wBt,t._rotateStartPosition)):m>t._minimumTrackBallHeight?(t._rotating=!0,lp(t,e,n)):(t._looking=!0,rp(t,e,n,d));K.clone(e,t._rotateMousePosition)}function lp(t,e,n,i,o,a){o=f(o,!1),a=f(a,!1);let s=t._scene,l=s.camera,r=s.canvas,d=l.constrainedAxis;c(i)&&(l.constrainedAxis=i);let m=p.magnitude(l.position),h=t._rotateFactor*(m-t._rotateRateRangeAdjustment);h>t._maximumRotateRate&&(h=t._maximumRotateRate),h<t._minimumRotateRate&&(h=t._minimumRotateRate);let u=(n.startPosition.x-n.endPosition.x)/r.clientWidth,R=(n.startPosition.y-n.endPosition.y)/r.clientHeight;u=Math.min(u,t.maximumMovementRatio),R=Math.min(R,t.maximumMovementRatio);let V=h*u*Math.PI*2,F=h*R*Math.PI;o||l.rotateRight(V),a||l.rotateUp(F),l.constrainedAxis=d}var hYe=bt.clone(bt.UNIT_W),pYe=bt.clone(bt.UNIT_W),bj=new p,jat=new p,VYe=new p,uYe=new p,ZYe=new K,RYe=new K;function qat(t,e,n,i){let a=t._scene.camera,s=K.clone(n.startPosition,ZYe),l=K.clone(n.endPosition,RYe),r=a.pickEllipsoid(s,i,hYe),d=a.pickEllipsoid(l,i,pYe);if(!c(r)||!c(d)){t._rotating=!0,lp(t,e,n);return}if(r=a.worldToCameraCoordinates(r,r),d=a.worldToCameraCoordinates(d,d),c(a.constrainedAxis)){let m=a.constrainedAxis,h=p.mostOrthogonalAxis(m,bj);p.cross(h,m,h),p.normalize(h,h);let u=p.cross(m,h,jat),R=p.magnitude(r),V=p.dot(m,r),F=Math.acos(V/R),U=p.multiplyByScalar(m,V,VYe);p.subtract(r,U,U),p.normalize(U,U);let G=p.magnitude(d),A=p.dot(m,d),S=Math.acos(A/G),g=p.multiplyByScalar(m,A,uYe);p.subtract(d,g,g),p.normalize(g,g);let C=Math.acos(p.dot(U,h));p.dot(U,u)<0&&(C=k.TWO_PI-C);let y=Math.acos(p.dot(g,h));p.dot(g,u)<0&&(y=k.TWO_PI-y);let Y=C-y,Q;p.equalsEpsilon(m,a.position,k.EPSILON2)?Q=a.right:Q=p.cross(m,a.position,bj);let J=p.cross(m,Q,bj),M=p.dot(J,p.subtract(r,m,jat)),Z=p.dot(J,p.subtract(d,m,jat)),E;M>0&&Z>0?E=S-F:M>0&&Z<=0?p.dot(a.position,m)>0?E=-F-S:E=F+S:E=F-S,a.rotateRight(Y),a.rotateUp(E)}else{p.normalize(r,r),p.normalize(d,d);let m=p.dot(r,d),h=p.cross(r,d,bj);if(m<1&&!p.equalsEpsilon(h,p.ZERO,k.EPSILON14)){let u=Math.acos(m);a.rotate(h,u)}}}var bYe=new p,WYe=new gt;function sQt(t,e,n){c(n.distance)&&(n=n.distance);let i=t._ellipsoid,o=t._scene,a=o.camera,s=o.canvas,l=t._cameraUnderground,r;l?r=e:(r=iQt,r.x=s.clientWidth/2,r.y=s.clientHeight/2);let d=a.getPickRay(r,oQt),m,h=i.cartesianToCartographic(a.position,WYe)?.height;if(!h)return;h<t._minimumPickingTerrainHeight&&(m=GU(t,r,aQt));let u;if(c(m)&&(u=p.distance(d.origin,m)),l){let V=zBt(t,d,h);c(u)?u=Math.min(u,V):u=V}c(u)||(u=h);let R=p.normalize(a.position,bYe);nst(t,e,n,t._zoomFactor,u,p.dot(R,a.direction))}var lQt=new K,Uj=new di,g9=new p,fYe=new p,rQt=new L,FYe=new L,dQt=new L,UYe=new wt,GYe=new ot,ost=new gt,ast=new p;function AYe(t,e,n){let o=t._scene.camera;if(!L.equals(o.transform,L.IDENTITY))return;if(c(n.angleAndHeight)&&(n=n.angleAndHeight),K.equals(e,t._tiltCenterMousePosition)||(t._tiltOnEllipsoid=!1,t._looking=!1),t._looking){let l=t._ellipsoid.geodeticSurfaceNormal(o.position,ast);rp(t,e,n,l);return}let s=t._ellipsoid.cartesianToCartographic(o.position,ost);t._tiltOnEllipsoid||s.height>t._minimumCollisionTerrainHeight?(t._tiltOnEllipsoid=!0,TYe(t,e,n)):gYe(t,e,n)}var SYe=new gt;function TYe(t,e,n){let i=t._ellipsoid,o=t._scene,a=o.camera,s=t.minimumZoomDistance*.25,l=i.cartesianToCartographic(a.positionWC,SYe).height;if(l-s-1<k.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let r=o.canvas,d=lQt;d.x=r.clientWidth/2,d.y=r.clientHeight/2;let m=a.getPickRay(d,Uj),h,u=no.rayEllipsoid(m,i);if(c(u))h=di.getPoint(m,u.start,g9);else if(l>t._minimumTrackBallHeight){let A=no.grazingAltitudeLocation(m,i);if(!c(A))return;let S=i.cartesianToCartographic(A,ost);S.height=0,h=i.cartographicToCartesian(S,g9)}else{t._looking=!0;let A=t._ellipsoid.geodeticSurfaceNormal(a.position,ast);rp(t,e,n,A),K.clone(e,t._tiltCenterMousePosition);return}let R=Pe.eastNorthUpToFixedFrame(h,i,rQt),V=t._globe,F=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let U=L.clone(a.transform,dQt);a._setTransform(R),lp(t,e,n,p.UNIT_Z),a._setTransform(U),t._globe=V,t._ellipsoid=F;let G=F.maximumRadius;t._rotateFactor=1/G,t._rotateRateRangeAdjustment=G}function gYe(t,e,n){let i=t._ellipsoid,o=t._scene,a=o.camera,s=t._cameraUnderground,l,r,d;if(K.equals(e,t._tiltCenterMousePosition))l=p.clone(t._tiltCenter,g9);else{if(l=GU(t,e,g9),!c(l)){if(r=a.getPickRay(e,Uj),d=no.rayEllipsoid(r,i),!c(d)){if(i.cartesianToCartographic(a.position,ost).height<=t._minimumTrackBallHeight){t._looking=!0;let E=t._ellipsoid.geodeticSurfaceNormal(a.position,ast);rp(t,e,n,E),K.clone(e,t._tiltCenterMousePosition)}return}l=di.getPoint(r,d.start,g9)}s&&(c(r)||(r=a.getPickRay(e,Uj)),jBt(t,r,l,l)),K.clone(e,t._tiltCenterMousePosition),p.clone(l,t._tiltCenter)}let m=o.canvas,h=lQt;h.x=m.clientWidth/2,h.y=t._tiltCenterMousePosition.y,r=a.getPickRay(h,Uj);let u=p.magnitude(l),R=p.fromElements(u,u,u,tst),V=mt.fromCartesian3(R,est);if(d=no.rayEllipsoid(r,V),!c(d))return;let F=p.magnitude(r.origin)>u?d.start:d.stop,U=di.getPoint(r,F,fYe),G=Pe.eastNorthUpToFixedFrame(l,i,rQt),A=Pe.eastNorthUpToFixedFrame(U,V,FYe),S=t._globe,g=t._ellipsoid;t._globe=void 0,t._ellipsoid=mt.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let C=p.UNIT_Z,y=L.clone(a.transform,dQt);a._setTransform(A);let Y=p.cross(U,a.positionWC,Fj);if(p.dot(a.rightWC,Y)<0){let Z=n.startPosition.y-n.endPosition.y;(s&&Z<0||!s&&Z>0)&&(C=void 0);let E=a.constrainedAxis;a.constrainedAxis=void 0,lp(t,e,n,C,!0,!1),a.constrainedAxis=E}else lp(t,e,n,C,!0,!1);if(a._setTransform(G),lp(t,e,n,C,!1,!0),c(a.constrainedAxis)){let Z=p.cross(a.direction,a.constrainedAxis,Fj);p.equalsEpsilon(Z,p.ZERO,k.EPSILON6)||(p.dot(Z,a.right)<0&&p.negate(Z,Z),p.cross(Z,a.direction,a.up),p.cross(a.direction,a.up,a.right),p.normalize(a.up,a.up),p.normalize(a.right,a.right))}a._setTransform(y),t._globe=S,t._ellipsoid=g;let J=g.maximumRadius;t._rotateFactor=1/J,t._rotateRateRangeAdjustment=J;let M=p.clone(a.positionWC,Fj);if(t.enableCollisionDetection&&sst(t,!0),!p.equals(a.positionWC,M)){a._setTransform(A),a.worldToCameraCoordinatesPoint(M,M);let Z=p.magnitudeSquared(M);p.magnitudeSquared(a.position)>Z&&(p.normalize(a.position,a.position),p.multiplyByScalar(a.position,Math.sqrt(Z),a.position));let E=p.angleBetween(M,a.position),I=p.cross(M,a.position,M);p.normalize(I,I);let B=wt.fromAxisAngle(I,E,UYe),X=ot.fromQuaternion(B,GYe);ot.multiplyByVector(X,a.direction,a.direction),ot.multiplyByVector(X,a.up,a.up),p.cross(a.direction,a.up,a.right),p.cross(a.right,a.direction,a.up),a._setTransform(y)}}var EYe=new K,CYe=new K,PBt=new di,vBt=new di,IYe=new p,NYe=new p;function rp(t,e,n,i){let a=t._scene.camera,s=EYe;s.x=n.startPosition.x,s.y=0;let l=CYe;l.x=n.endPosition.x,l.y=0;let r=a.getPickRay(s,PBt),d=a.getPickRay(l,vBt),m=0,h,u;a.frustum instanceof wn?(h=r.origin,u=d.origin,p.add(a.direction,h,h),p.add(a.direction,u,u),p.subtract(h,a.position,h),p.subtract(u,a.position,u),p.normalize(h,h),p.normalize(u,u)):(h=r.direction,u=d.direction);let R=p.dot(h,u);R<1&&(m=Math.acos(R)),m=n.startPosition.x>n.endPosition.x?-m:m;let V=t._horizontalRotationAxis;if(c(i)?a.look(i,-m):c(V)?a.look(V,-m):a.lookLeft(m),s.x=0,s.y=n.startPosition.y,l.x=0,l.y=n.endPosition.y,r=a.getPickRay(s,PBt),d=a.getPickRay(l,vBt),m=0,a.frustum instanceof wn?(h=r.origin,u=d.origin,p.add(a.direction,h,h),p.add(a.direction,u,u),p.subtract(h,a.position,h),p.subtract(u,a.position,u),p.normalize(h,h),p.normalize(u,u)):(h=r.direction,u=d.direction),R=p.dot(h,u),R<1&&(m=Math.acos(R)),m=n.startPosition.y>n.endPosition.y?-m:m,i=f(i,V),c(i)){let F=a.direction,U=p.negate(i,IYe),G=p.equalsEpsilon(F,i,k.EPSILON2),A=p.equalsEpsilon(F,U,k.EPSILON2);if(!G&&!A){R=p.dot(F,i);let S=k.acosClamped(R);m>0&&m>S&&(m=S-k.EPSILON4),R=p.dot(F,U),S=k.acosClamped(R),m<0&&-m>S&&(m=-S+k.EPSILON4);let g=p.cross(i,F,NYe);a.look(g,m)}else(G&&m<0||A&&m>0)&&a.look(a.right,-m)}else a.lookUp(m)}function yYe(t){om(t,t.enableRotate,t.rotateEventTypes,mYe,t.inertiaSpin,"_lastInertiaSpinMovement"),om(t,t.enableZoom,t.zoomEventTypes,sQt,t.inertiaZoom,"_lastInertiaZoomMovement"),om(t,t.enableTilt,t.tiltEventTypes,AYe,t.inertiaSpin,"_lastInertiaTiltMovement"),om(t,t.enableLook,t.lookEventTypes,rp)}var BYe=new L,QYe=new gt;function sst(t,e){t._adjustedHeightForTerrain=!0;let n=t._scene,i=n.mode,o=n.globe;if(i===Vt.SCENE2D||i===Vt.MORPHING)return;let a=n.camera,s=f(o?.ellipsoid,mt.WGS84),l=n.mapProjection,r,d;L.equals(a.transform,L.IDENTITY)||(r=L.clone(a.transform,BYe),d=p.magnitude(a.position),a._setTransform(L.IDENTITY));let m=QYe;i===Vt.SCENE3D?s.cartesianToCartographic(a.position,m):l.unproject(a.position,m);let h=!1;if(m.height<t._minimumCollisionTerrainHeight){let u=t._scene.globeHeight;if(c(u)){let R=u+t.minimumZoomDistance,V=u-t._lastGlobeHeight,F=V/t._lastGlobeHeight;m.height<R&&(e||Math.abs(F)<=.1)&&(m.height=R,i===Vt.SCENE3D?s.cartographicToCartesian(m,a.position):l.project(m,a.position),h=!0),e||Math.abs(F)<=.1?t._lastGlobeHeight=u:t._lastGlobeHeight+=V*.1}}c(r)&&(a._setTransform(r),h&&(p.normalize(a.position,a.position),p.negate(a.position,a.direction),p.multiplyByScalar(a.position,Math.max(d,t.minimumZoomDistance),a.position),p.normalize(a.direction,a.direction),p.cross(a.direction,a.up,a.right),p.cross(a.right,a.direction,a.up)))}E9.prototype.onMap=function(){let t=this._scene,e=t.mode,n=t.camera;return e===Vt.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var kYe=new p,YYe=new p;E9.prototype.update=function(){let t=this._scene,{camera:e,globe:n,mode:i}=t;L.equals(e.transform,L.IDENTITY)?(this._globe=n,this._ellipsoid=c(this._globe)?this._globe.ellipsoid:t.mapProjection.ellipsoid):(this._globe=void 0,this._ellipsoid=mt.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:a}=t;this._minimumCollisionTerrainHeight=Ps.getHeight(this.minimumCollisionTerrainHeight,o,a),this._minimumPickingTerrainHeight=Ps.getHeight(this.minimumPickingTerrainHeight,o,a),this._minimumTrackBallHeight=Ps.getHeight(this.minimumTrackBallHeight,o,a),this._cameraUnderground=t.cameraUnderground&&c(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let l=p.clone(e.positionWC,kYe),r=p.clone(e.directionWC,YYe);if(i===Vt.SCENE2D?y2e(this):i===Vt.COLUMBUS_VIEW?(this._horizontalRotationAxis=p.UNIT_Z,nYe(this)):i===Vt.SCENE3D&&(this._horizontalRotationAxis=void 0,yYe(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let d=!p.equals(l,e.positionWC)||!p.equals(r,e.directionWC);sst(this,d)}this._aggregator.reset()};E9.prototype.isDestroyed=function(){return!1};E9.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),At(this)};var C9=E9;var C2o=b(W(),1);var r2o=b(W(),1),I9=`uniform sampler2D colorTexture; uniform sampler2D colorTexture2; uniform vec2 center; @@ -12634,7 +12634,7 @@ void main() float t = smoothstep(0.5, 0.8, x); out_FragColor = mix(color0 + color1, color1, t); } -`;var cko=R(W(),1),N9=`uniform sampler2D colorTexture; +`;var c2o=b(W(),1),N9=`uniform sampler2D colorTexture; uniform float avgLuminance; uniform float threshold; @@ -12664,7 +12664,7 @@ void main() xyz.r = brightness; out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); } -`;function GW(){this._sceneFramebuffer=new FS;let t=.125,e=new Array(6);e[0]=new Qa({fragmentShader:nh,textureScale:t,forcePowerOfTwo:!0,sampleMode:op.LINEAR});let n=e[1]=new Qa({fragmentShader:N9,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:t,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new K,e[2]=new Qa({fragmentShader:fU,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:t,forcePowerOfTwo:!0}),e[3]=new Qa({fragmentShader:fU,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:t,forcePowerOfTwo:!0}),e[4]=new Qa({fragmentShader:nh,sampleMode:op.LINEAR}),this._uCenter=new K,this._uRadius=void 0,e[5]=new Qa({fragmentShader:I9,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new nm({stages:e});let o=new ES(this),a=e.length;for(let s=0;s<a;++s)e[s]._textureCache=o;this._textureCache=o,this.length=e.length}GW.prototype.get=function(t){return this._stages.get(t)};GW.prototype.getStageByName=function(t){let e=this._stages.length;for(let n=0;n<e;++n){let i=this._stages.get(n);if(i.name===t)return i}};var xYe=new Rt,cQt=new K,XYe=new K,mQt=new L;function JYe(t,e,n){let i=e.uniformState,o=i.sunPositionWC,a=i.view,s=i.viewProjection,l=i.projection,r=L.computeViewportTransformation(n,0,1,mQt),d=L.multiplyByPoint(a,o,xYe),m=Pe.pointToGLWindowCoordinates(s,r,o,cQt);d.x+=k.SOLAR_RADIUS;let h=Pe.pointToGLWindowCoordinates(l,r,d,d),Z=K.magnitude(K.subtract(h,m,h))*30*2,b=XYe;b.x=Z,b.y=Z,t._uCenter=K.clone(m,t._uCenter),t._uRadius=Math.max(b.x,b.y)*.15;let u=e.drawingBufferWidth,F=e.drawingBufferHeight,U=t._stages,G=U.get(0),A=G.outputTexture.width,T=G.outputTexture.height,g=new Fe;g.width=A,g.height=T,r=L.computeViewportTransformation(g,0,1,mQt),m=Pe.pointToGLWindowCoordinates(s,r,o,cQt),b.x*=A/u,b.y*=T/F;let C=G.scissorRectangle;C.x=Math.max(m.x-b.x*.5,0),C.y=Math.max(m.y-b.y*.5,0),C.width=Math.min(b.x,u),C.height=Math.min(b.y,F);for(let y=1;y<4;++y)Fe.clone(C,U.get(y).scissorRectangle)}GW.prototype.clear=function(t,e,n){this._sceneFramebuffer.clear(t,e,n),this._textureCache.clear(t)};GW.prototype.update=function(t){let e=t.context,n=t.viewport,i=this._sceneFramebuffer;i.update(e,n);let o=i.framebuffer;return this._textureCache.update(e),this._stages.update(e,!1),JYe(this,e,n),o};GW.prototype.execute=function(t){let e=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(t,e);for(let o=1;o<i;++o)n.get(o).execute(t,n.get(o-1).outputTexture)};GW.prototype.copy=function(t,e){if(!c(this._copyColorCommand)){let n=this;this._copyColorCommand=t.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=e,this._copyColorCommand.execute(t)};GW.prototype.isDestroyed=function(){return!1};GW.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),At(this)};var y9=GW;var Yko=R(W(),1);function hQt(){this._cachedShowFrustumsShaders={}}function LYe(t){let e={},n=t.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(e[i]=n[i].index);return e}function MYe(t,e){let n=t.context,i=e,o=i.fragmentShaderSource.clone(),a=[];o.sources=o.sources.map(function(m){m=Ve.replaceMain(m,"czm_Debug_main");let h=/out_FragData_(\d+)/g,Z;for(;(Z=h.exec(m))!==null;)a.indexOf(Z[1])===-1&&a.push(Z[1]);return m});let s=a.length,l="";l+=`uniform vec3 debugShowCommandsColor; +`;function GW(){this._sceneFramebuffer=new FT;let t=.125,e=new Array(6);e[0]=new Qa({fragmentShader:nh,textureScale:t,forcePowerOfTwo:!0,sampleMode:op.LINEAR});let n=e[1]=new Qa({fragmentShader:N9,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:t,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new K,e[2]=new Qa({fragmentShader:fU,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:t,forcePowerOfTwo:!0}),e[3]=new Qa({fragmentShader:fU,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:t,forcePowerOfTwo:!0}),e[4]=new Qa({fragmentShader:nh,sampleMode:op.LINEAR}),this._uCenter=new K,this._uRadius=void 0,e[5]=new Qa({fragmentShader:I9,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new nm({stages:e});let o=new ET(this),a=e.length;for(let s=0;s<a;++s)e[s]._textureCache=o;this._textureCache=o,this.length=e.length}GW.prototype.get=function(t){return this._stages.get(t)};GW.prototype.getStageByName=function(t){let e=this._stages.length;for(let n=0;n<e;++n){let i=this._stages.get(n);if(i.name===t)return i}};var xYe=new bt,cQt=new K,XYe=new K,mQt=new L;function JYe(t,e,n){let i=e.uniformState,o=i.sunPositionWC,a=i.view,s=i.viewProjection,l=i.projection,r=L.computeViewportTransformation(n,0,1,mQt),d=L.multiplyByPoint(a,o,xYe),m=Pe.pointToGLWindowCoordinates(s,r,o,cQt);d.x+=k.SOLAR_RADIUS;let h=Pe.pointToGLWindowCoordinates(l,r,d,d),u=K.magnitude(K.subtract(h,m,h))*30*2,R=XYe;R.x=u,R.y=u,t._uCenter=K.clone(m,t._uCenter),t._uRadius=Math.max(R.x,R.y)*.15;let V=e.drawingBufferWidth,F=e.drawingBufferHeight,U=t._stages,G=U.get(0),A=G.outputTexture.width,S=G.outputTexture.height,g=new Fe;g.width=A,g.height=S,r=L.computeViewportTransformation(g,0,1,mQt),m=Pe.pointToGLWindowCoordinates(s,r,o,cQt),R.x*=A/V,R.y*=S/F;let C=G.scissorRectangle;C.x=Math.max(m.x-R.x*.5,0),C.y=Math.max(m.y-R.y*.5,0),C.width=Math.min(R.x,V),C.height=Math.min(R.y,F);for(let y=1;y<4;++y)Fe.clone(C,U.get(y).scissorRectangle)}GW.prototype.clear=function(t,e,n){this._sceneFramebuffer.clear(t,e,n),this._textureCache.clear(t)};GW.prototype.update=function(t){let e=t.context,n=t.viewport,i=this._sceneFramebuffer;i.update(e,n);let o=i.framebuffer;return this._textureCache.update(e),this._stages.update(e,!1),JYe(this,e,n),o};GW.prototype.execute=function(t){let e=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(t,e);for(let o=1;o<i;++o)n.get(o).execute(t,n.get(o-1).outputTexture)};GW.prototype.copy=function(t,e){if(!c(this._copyColorCommand)){let n=this;this._copyColorCommand=t.createViewportQuadCommand(nh,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=e,this._copyColorCommand.execute(t)};GW.prototype.isDestroyed=function(){return!1};GW.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),At(this)};var y9=GW;var Y2o=b(W(),1);function hQt(){this._cachedShowFrustumsShaders={}}function LYe(t){let e={},n=t.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(e[i]=n[i].index);return e}function MYe(t,e){let n=t.context,i=e,o=i.fragmentShaderSource.clone(),a=[];o.sources=o.sources.map(function(m){m=Ze.replaceMain(m,"czm_Debug_main");let h=/out_FragData_(\d+)/g,u;for(;(u=h.exec(m))!==null;)a.indexOf(u[1])===-1&&a.push(u[1]);return m});let s=a.length,l="";l+=`uniform vec3 debugShowCommandsColor; `,l+=`uniform vec3 debugShowFrustumsColor; `,l+=`void main() { @@ -12673,7 +12673,7 @@ void main() `,l+=` out_FragData_${a[r]}.rgb *= debugShowFrustumsColor; `;else l+=` out_FragColor.rgb *= debugShowCommandsColor; `,l+=` out_FragColor.rgb *= debugShowFrustumsColor; -`;l+="}",o.sources.push(l);let d=LYe(i);return xn.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:d})}var B9=new v;function _Ye(t,e){let n;return c(e.uniformMap)?n=e.uniformMap:n={},c(n.debugShowCommandsColor)||c(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return t.debugShowCommands?(c(e._debugColor)||(e._debugColor=v.fromRandom()),e._debugColor):v.WHITE},n.debugShowFrustumsColor=function(){return t.debugShowFrustums?(B9.red=e.debugOverlappingFrustums&1?1:0,B9.green=e.debugOverlappingFrustums&2?1:0,B9.blue=e.debugOverlappingFrustums&4?1:0,B9.alpha=1,B9):v.WHITE}),n}var DYe=new Ee;hQt.prototype.executeDebugShowFrustumsCommand=function(t,e,n){let i=e.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];c(o)||(o=MYe(t,e.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let a=Ee.shallowClone(e,DYe);a.shaderProgram=o,a.uniformMap=_Ye(t,e),a.execute(t.context,n)};var Q9=hQt;var _ko=R(W(),1);function QS(t,e,n){this._primitive=t,this._tileIndex=e,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new ci}QS.fromKeyframeNode=function(t,e,n,i){let o=new QS(t,e,n),{spatialNode:a,metadata:s}=i;return o._metadata=OYe(t,s,n),o._orientedBoundingBox=wYe(t,a,n,o._orientedBoundingBox),o};function OYe(t,e,n){if(!c(e))return;let{names:i,types:o}=t.provider,a={};for(let s=0;s<i.length;s++){let l=i[s],r=Nn.getComponentCount(o[s]),d=e[s].slice(n*r,(n+1)*r);a[l]=d}return a}var pQt=new p,HYe=new p;function wYe(t,e,n,i){let o=e.dimensions,a=o.x*o.y,s=Math.floor(n/a),l=n-s*a,r=Math.floor(l/o.x),d=l-r*o.x,m=p.fromElements(d,r,s,pQt),h=p.divideComponents(p.subtract(m,t._paddingBefore,pQt),t.dimensions,HYe);return t._shape.computeOrientedBoundingBoxForSample(e,t.dimensions,h,i)}Object.defineProperties(QS.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});QS.prototype.hasProperty=function(t){return c(this._metadata[t])};QS.prototype.getNames=function(){return Object.keys(this._metadata)};QS.prototype.getProperty=function(t){return this._metadata[t]};var k9=QS;var DJo=R(W(),1);var lxo=R(W(),1);var DYo=R(W(),1);var Oko=R(W(),1),Y9=`struct Ray { +`;l+="}",o.sources.push(l);let d=LYe(i);return xn.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:d})}var B9=new v;function _Ye(t,e){let n;return c(e.uniformMap)?n=e.uniformMap:n={},c(n.debugShowCommandsColor)||c(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return t.debugShowCommands?(c(e._debugColor)||(e._debugColor=v.fromRandom()),e._debugColor):v.WHITE},n.debugShowFrustumsColor=function(){return t.debugShowFrustums?(B9.red=e.debugOverlappingFrustums&1?1:0,B9.green=e.debugOverlappingFrustums&2?1:0,B9.blue=e.debugOverlappingFrustums&4?1:0,B9.alpha=1,B9):v.WHITE}),n}var DYe=new Ee;hQt.prototype.executeDebugShowFrustumsCommand=function(t,e,n){let i=e.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];c(o)||(o=MYe(t,e.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let a=Ee.shallowClone(e,DYe);a.shaderProgram=o,a.uniformMap=_Ye(t,e),a.execute(t.context,n)};var Q9=hQt;var _2o=b(W(),1);function QT(t,e,n){this._primitive=t,this._tileIndex=e,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new ci}QT.fromKeyframeNode=function(t,e,n,i){let o=new QT(t,e,n),{spatialNode:a,metadata:s}=i;return o._metadata=OYe(t,s,n),o._orientedBoundingBox=wYe(t,a,n,o._orientedBoundingBox),o};function OYe(t,e,n){if(!c(e))return;let{names:i,types:o}=t.provider,a={};for(let s=0;s<i.length;s++){let l=i[s],r=Nn.getComponentCount(o[s]),d=e[s].slice(n*r,(n+1)*r);a[l]=d}return a}var pQt=new p,HYe=new p;function wYe(t,e,n,i){let o=e.dimensions,a=o.x*o.y,s=Math.floor(n/a),l=n-s*a,r=Math.floor(l/o.x),d=l-r*o.x,m=p.fromElements(d,r,s,pQt),h=p.divideComponents(p.subtract(m,t._paddingBefore,pQt),t.dimensions,HYe);return t._shape.computeOrientedBoundingBoxForSample(e,t.dimensions,h,i)}Object.defineProperties(QT.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});QT.prototype.hasProperty=function(t){return c(this._metadata[t])};QT.prototype.getNames=function(){return Object.keys(this._metadata)};QT.prototype.getProperty=function(t){return this._metadata[t]};var k9=QT;var DJo=b(W(),1);var lxo=b(W(),1);var DYo=b(W(),1);var O2o=b(W(),1),Y9=`struct Ray { vec3 pos; vec3 dir; vec3 rawDir; @@ -12704,7 +12704,7 @@ struct PointJacobianT { vec3 point; mat3 jacobianT; }; -`;var wko=R(W(),1),x9=`// See Intersection.glsl for the definition of intersectScene +`;var w2o=b(W(),1),x9=`// See Intersection.glsl for the definition of intersectScene // See IntersectionUtils.glsl for the definition of nextIntersection // See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl // for the definition of convertUvToShapeUvSpace. The appropriate function is @@ -12962,7 +12962,7 @@ void main() out_FragColor = colorAccum; #endif } -`;var vko=R(W(),1),X9=`in vec2 position; +`;var v2o=b(W(),1),X9=`in vec2 position; uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; @@ -12973,7 +12973,7 @@ void main() { vec2 scale = 0.5 * (aabbMax - aabbMin); gl_Position = vec4(position * scale + translation, 0.0, 1.0); } -`;var zko=R(W(),1),J9=`/* Intersection defines +`;var z2o=b(W(),1),J9=`/* Intersection defines #define INTERSECTION_COUNT ### */ @@ -13139,7 +13139,7 @@ RayShapeIntersection nextIntersection(inout Intersections ix) { #endif // NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 -`;var qko=R(W(),1),L9=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +`;var q2o=b(W(),1),L9=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, // setIntersectionPair, INF_HIT, NO_HIT /* intersectDepth defines (set in Scene/VoxelRenderResources.js) @@ -13162,7 +13162,7 @@ void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(NO_HIT)); } } -`;var tYo=R(W(),1),M9=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +`;var tYo=b(W(),1),M9=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, // NO_HIT, setShapeIntersection /* Clipping plane defines (set in Scene/VoxelRenderResources.js) @@ -13240,7 +13240,7 @@ void intersectClippingPlanes(in Ray ray, inout Intersections ix) { setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); #endif } -`;var nYo=R(W(),1),w1=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +`;var nYo=b(W(),1),w1=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, // RayShapeIntersection vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { @@ -13342,7 +13342,7 @@ RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) return RayShapeIntersection(miss, miss); } } -`;var oYo=R(W(),1),_9=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +`;var oYo=b(W(),1),_9=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, // NO_HIT, Intersections /* Box defines (set in Scene/VoxelBoxShape.js) @@ -13389,7 +13389,7 @@ void intersectShape(in Ray ray, inout Intersections ix) RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); } -`;var sYo=R(W(),1),D9=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +`;var sYo=b(W(),1),D9=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, // RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, // intersectIntersections // See IntersectLongitude.glsl for the definitions of intersectHalfPlane, @@ -13535,7 +13535,7 @@ void intersectShape(Ray ray, inout Intersections ix) setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); #endif } -`;var rYo=R(W(),1),O9=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +`;var rYo=b(W(),1),O9=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, // RayShapeIntersection, setSurfaceIntersection, setShapeIntersection // See IntersectLongitude.glsl for the definitions of intersectHalfPlane, // intersectFlippedWedge, intersectRegularWedge @@ -13873,7 +13873,7 @@ void intersectShape(in Ray ray, inout Intersections ix) { setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); #endif } -`;var cYo=R(W(),1),kS=`// Main intersection function for Voxel scenes. +`;var cYo=b(W(),1),kT=`// Main intersection function for Voxel scenes. // See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl // for the definition of intersectShape. The appropriate function is selected // based on the VoxelPrimitive shape type, and added to the shader in @@ -13925,7 +13925,7 @@ RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Interse return intersection; } -`;var hYo=R(W(),1),H9=`/* Box defines (set in Scene/VoxelBoxShape.js) +`;var hYo=b(W(),1),H9=`/* Box defines (set in Scene/VoxelBoxShape.js) #define BOX_HAS_SHAPE_BOUNDS */ @@ -13969,7 +13969,7 @@ vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { #else return shapeUv; #endif -}`;var uYo=R(W(),1),w9=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +}`;var VYo=b(W(),1),w9=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) #define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS #define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT #define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE @@ -14068,7 +14068,7 @@ vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { return vec3(radius, height, angle); } -`;var VYo=R(W(),1),P9=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +`;var ZYo=b(W(),1),P9=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) #define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY #define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY #define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE @@ -14207,7 +14207,7 @@ vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { return vec3(longitude, latitude, height); } -`;var RYo=R(W(),1),v9=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +`;var bYo=b(W(),1),v9=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js #define OCTREE_FLAG_INTERNAL 0 #define OCTREE_FLAG_LEAF 1 #define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 @@ -14432,7 +14432,7 @@ void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData trave sampleDatas[1].tileUv = getClampedTileUv(shapePosition, sampleDatas[1].tileCoords); #endif } -`;var fYo=R(W(),1),K9=`// See Octree.glsl for the definitions of SampleData and intMod +`;var fYo=b(W(),1),K9=`// See Octree.glsl for the definitions of SampleData and intMod /* Megatexture defines (set in Scene/VoxelRenderResources.js) #define SAMPLE_COUNT ### @@ -14567,11 +14567,11 @@ Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_ return properties; #endif } -`;function PYe(t){let e=new EG;this.shaderBuilder=e;let n=t._customShader,i=ze(t._uniformMap,n.uniformMap);t._uniformMap=i;let o=n.uniforms;for(let Z in o)if(o.hasOwnProperty(Z)){let b=o[Z];e.addUniform(b.type,Z,Xt.FRAGMENT)}e.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",Xt.FRAGMENT),this.uniformMap=i;let a=t._clippingPlanes,s=c(a)&&a.enabled?a.length:0;this.clippingPlanes=a,this.clippingPlanesLength=s,e.addVertexLines([X9]),e.addFragmentLines([n.fragmentShaderText,"#line 0",v9,Y9,J9,K9]),s>0&&(e.addDefine("CLIPPING_PLANES",void 0,Xt.FRAGMENT),e.addDefine("CLIPPING_PLANES_COUNT",s,Xt.FRAGMENT),a.unionClippingRegions&&e.addDefine("CLIPPING_PLANES_UNION",void 0,Xt.FRAGMENT),e.addFragmentLines([M9])),t._depthTest&&(e.addDefine("DEPTH_TEST",void 0,Xt.FRAGMENT),e.addFragmentLines([L9]));let l=t._provider.shape;l==="BOX"?e.addFragmentLines([H9,_9,kS]):l==="CYLINDER"?e.addFragmentLines([w9,w1,D9,kS]):l==="ELLIPSOID"&&(e.addDefine("SHAPE_ELLIPSOID",void 0,Xt.FRAGMENT),e.addFragmentLines([P9,w1,O9,kS])),e.addFragmentLines([x9]);let r=t._shape,d=r.shaderDefines;for(let Z in d)if(d.hasOwnProperty(Z)){let b=d[Z];c(b)&&(b=b===!0?void 0:b,e.addDefine(Z,b,Xt.FRAGMENT))}let m=r.shaderMaximumIntersectionsLength;s>0&&(e.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",m,Xt.FRAGMENT),s===1?m+=1:a.unionClippingRegions?m+=2:m+=1),t._depthTest&&(e.addDefine("DEPTH_INTERSECTION_INDEX",m,Xt.FRAGMENT),m+=1),e.addDefine("INTERSECTION_COUNT",m,Xt.FRAGMENT),(!p.equals(t.paddingBefore,p.ZERO)||!p.equals(t.paddingAfter,p.ZERO))&&e.addDefine("PADDING",void 0,Xt.FRAGMENT),t._useLogDepth&&e.addDefine("LOG_DEPTH_READ_ONLY",void 0,Xt.FRAGMENT),t._jitter&&e.addDefine("JITTER",void 0,Xt.FRAGMENT),t._nearestSampling&&e.addDefine("NEAREST_SAMPLING",void 0,Xt.FRAGMENT);let h=t._traversal;e.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,Xt.FRAGMENT)}var z9=PYe;var vYo=R(W(),1);function vYe(t,e){let{shaderBuilder:n}=t,{names:i,types:o,componentTypes:a,minimumValues:s,maximumValues:l}=e._provider,r=o.length,d=c(s)&&c(l);n.addDefine("METADATA_COUNT",r,Xt.FRAGMENT),d&&n.addDefine("STATISTICS",void 0,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],V=`PropertyStatistics_${J}`,E=`PropertyStatistics_${J}`;n.addStruct(V,E,Xt.FRAGMENT);let I=Aj(M);n.addStructField(V,I,"min"),n.addStructField(V,I,"max")}let m="Statistics",h="Statistics",Z="statistics";n.addStruct(m,h,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=`PropertyStatistics_${J}`,V=J;n.addStructField(m,M,V)}let b="Metadata",u="Metadata",F="metadata";n.addStruct(b,u,Xt.FRAGMENT),n.addStructField(b,h,Z);for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],V=Aj(M);n.addStructField(b,V,J)}for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],V=zYe(M),E=`VoxelProperty_${J}`,I=`VoxelProperty_${J}`;n.addStruct(E,I,Xt.FRAGMENT),n.addStructField(E,V,"partialDerivativeLocal"),n.addStructField(E,V,"partialDerivativeWorld"),n.addStructField(E,V,"partialDerivativeView"),n.addStructField(E,V,"partialDerivativeValid")}let U="Voxel",G="Voxel",A="voxel";n.addStruct(U,G,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=`VoxelProperty_${J}`;n.addStructField(U,M,J)}n.addStructField(U,"vec3","positionEC"),n.addStructField(U,"vec3","positionUv"),n.addStructField(U,"vec3","positionShapeUv"),n.addStructField(U,"vec3","positionUvLocal"),n.addStructField(U,"vec3","viewDirUv"),n.addStructField(U,"vec3","viewDirWorld"),n.addStructField(U,"vec3","surfaceNormal"),n.addStructField(U,"float","travelDistance"),n.addStructField(U,"int","stepCount"),n.addStructField(U,"int","tileIndex"),n.addStructField(U,"int","sampleIndex");let T="FragmentInput";n.addStruct(T,"FragmentInput",Xt.FRAGMENT),n.addStructField(T,u,F),n.addStructField(T,G,A);let C="Properties",y="Properties",Y="properties";n.addStruct(C,y,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],V=Aj(M);n.addStructField(C,V,J)}{let Q="clearProperties";n.addFunction(Q,`${y} clearProperties()`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J],V=o[J],E=a[J],I=Aj(V,E);n.addFunctionLines(Q,[`${Y}.${M} = ${I}(0.0);`])}n.addFunctionLines(Q,[`return ${Y};`])}{let Q="sumProperties";n.addFunction(Q,`${y} sumProperties(${y} propertiesA, ${y} propertiesB)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`${Y}.${M} = propertiesA.${M} + propertiesB.${M};`])}n.addFunctionLines(Q,[`return ${Y};`])}{let Q="scaleProperties";n.addFunction(Q,`${y} scaleProperties(${y} ${Y}, float scale)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} scaledProperties = ${Y};`]);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`scaledProperties.${M} *= scale;`])}n.addFunctionLines(Q,["return scaledProperties;"])}{let Q="mixProperties";n.addFunction(Q,`${y} mixProperties(${y} propertiesA, ${y} propertiesB, float mixFactor)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`${Y}.${M} = mix(propertiesA.${M}, propertiesB.${M}, mixFactor);`])}n.addFunctionLines(Q,[`return ${Y};`])}{let Q="copyPropertiesToMetadata";n.addFunction(Q,`void copyPropertiesToMetadata(in ${y} ${Y}, inout ${u} ${F})`,Xt.FRAGMENT);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`${F}.${M} = ${Y}.${M};`])}}if(d){let Q="setStatistics";n.addFunction(Q,`void setStatistics(inout ${h} ${Z})`,Xt.FRAGMENT);for(let J=0;J<r;J++){let M=i[J],V=o[J],E=Nn.getComponentCount(V);for(let I=0;I<E;I++){let B=jYe(V,I),X=s[J][I],_=l[J][I];n.addFunctionLines(Q,[`${Z}.${M}.min${B} = ${uQt(X)};`,`${Z}.${M}.max${B} = ${uQt(_)};`])}}}{let Q="getPropertiesFromMegatextureAtUv";n.addFunction(Q,`${y} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J],V=o[J],E=a[J],I=KYe(V,E);n.addFunctionLines(Q,[`properties.${M} = texture(u_megatextureTextures[${J}], texcoord)${I};`])}n.addFunctionLines(Q,[`return ${Y};`])}}function Aj(t){if(t===Nn.SCALAR)return"float";if(t===Nn.VEC2)return"vec2";if(t===Nn.VEC3)return"vec3";if(t===Nn.VEC4)return"vec4"}function KYe(t){if(t===Nn.SCALAR)return".r";if(t===Nn.VEC2)return".ra";if(t===Nn.VEC3)return".rgb";if(t===Nn.VEC4)return""}function zYe(t){if(t===Nn.SCALAR)return"vec3";if(t===Nn.VEC2)return"mat2";if(t===Nn.VEC3)return"mat3";if(t===Nn.VEC4)return"mat4"}function uQt(t){let e=t.toString();return e.indexOf(".")===-1&&(e=`${t}.0`),e}function jYe(t,e){return t===Nn.SCALAR?"":`[${e}]`}var j9=vYe;function qYe(t,e){let n=new z9(t);j9(n,t);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:a}=n;if(a>0){let G="getClippingPlane",A=dW(o,e),T=0,g=A.indexOf(")")+1,C=A.indexOf("{",g)+1,y=A.indexOf("}",C),Y=A.slice(T,g),Q=A.slice(C,y);i.addFunction(G,Y,Xt.FRAGMENT),i.addFunctionLines(G,[Q])}let s=i.clone();s.addDefine("PICKING",void 0,Xt.FRAGMENT);let l=i.clone();l.addDefine("PICKING_VOXEL",void 0,Xt.FRAGMENT);let r=i.buildShaderProgram(e),d=s.buildShaderProgram(e),m=l.buildShaderProgram(e),h=he.fromCache({cull:{enabled:!0,face:so.BACK},depthTest:{enabled:!1},depthMask:!1,blending:Pn.PRE_MULTIPLIED_ALPHA_BLEND}),Z=e.getViewportQuadVertexArray(),b=t._depthTest,u=new Ee({vertexArray:Z,primitiveType:le.TRIANGLES,renderState:h,shaderProgram:r,uniformMap:n.uniformMap,modelMatrix:t._compoundModelMatrix,pass:Pt.VOXELS,executeInClosestFrustum:!0,owner:this,cull:b,occlude:b}),F=Ee.shallowClone(u,new Ee);F.shaderProgram=d,F.pickOnly=!0;let U=Ee.shallowClone(u,new Ee);if(U.shaderProgram=m,U.pickOnly=!0,c(t._drawCommand)){let G=t._drawCommand;G.shaderProgram=G.shaderProgram&&G.shaderProgram.destroy()}if(c(t._drawCommandPick)){let G=t._drawCommandPick;G.shaderProgram=G.shaderProgram&&G.shaderProgram.destroy()}if(c(t._drawCommandPickVoxel)){let G=t._drawCommandPickVoxel;G.shaderProgram=G.shaderProgram&&G.shaderProgram.destroy()}t._drawCommand=u,t._drawCommandPick=F,t._drawCommandPickVoxel=U}var q9=qYe;var Oxo=R(W(),1);var Vxo=R(W(),1);function ih(){this.orientedBoundingBox=new ci,this.boundingSphere=new Ft,this.boundTransform=new L,this.shapeTransform=new L,this._minBounds=p.clone(ih.DefaultMinBounds,new p),this._maxBounds=p.clone(ih.DefaultMaxBounds,new p),this.shaderUniforms={renderMinBounds:new p,renderMaxBounds:new p,boxUvToShapeUvScale:new p,boxUvToShapeUvTranslate:new p},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var $Ye=new p,lst=new p,txe=new ot,exe=new p,nxe=new p,ixe=new p,oxe=new p,ZQt=L.fromRotationTranslation(ot.fromUniformScale(.5,new ot),new p(.5,.5,.5),new L);ih.prototype.update=function(t,e,n,i,o){i=f(i,ih.DefaultMinBounds),o=f(o,ih.DefaultMaxBounds);let a=ih.DefaultMinBounds,s=ih.DefaultMaxBounds;e=this._minBounds=p.clamp(e,a,s,this._minBounds),n=this._maxBounds=p.clamp(n,a,s,this._maxBounds),i=p.clamp(i,a,s,exe),o=p.clamp(o,a,s,nxe);let l=p.clamp(e,i,o,ixe),r=p.clamp(n,i,o,oxe),d=L.getScale(t,lst);if(l.x>r.x||l.y>r.y||l.z>r.z||(l.x===r.x)+(l.y===r.y)+(l.z===r.z)>=2||i.x>o.x||i.y>o.y||i.z>o.z||d.x===0||d.y===0||d.z===0)return!1;this.shapeTransform=L.clone(t,this.shapeTransform),this.orientedBoundingBox=dst(l,r,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=L.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=Ft.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:m,shaderDefines:h}=this;for(let u in h)h.hasOwnProperty(u)&&(h[u]=void 0);let Z=!p.equals(e,a)||!p.equals(n,s),b=0;if(h.BOX_INTERSECTION_INDEX=b,b+=1,m.renderMinBounds=L.multiplyByPoint(ZQt,l,m.renderMinBounds),m.renderMaxBounds=L.multiplyByPoint(ZQt,r,m.renderMaxBounds),Z){h.BOX_HAS_SHAPE_BOUNDS=!0;let u=e,F=n;m.boxUvToShapeUvScale=p.fromElements(2/(u.x===F.x?1:F.x-u.x),2/(u.y===F.y?1:F.y-u.y),2/(u.z===F.z?1:F.z-u.z),m.boxUvToShapeUvScale),m.boxUvToShapeUvTranslate=p.fromElements(-m.boxUvToShapeUvScale.x*(u.x*.5+.5),-m.boxUvToShapeUvScale.y*(u.y*.5+.5),-m.boxUvToShapeUvScale.z*(u.z*.5+.5),m.boxUvToShapeUvTranslate)}return this.shaderMaximumIntersectionsLength=b,!0};var Tj=new p,rst=new p;ih.prototype.computeOrientedBoundingBoxForTile=function(t,e,n,i,o){let a=this._minBounds,s=this._maxBounds,l=1/Math.pow(2,t),r=p.fromElements(k.lerp(a.x,s.x,l*e),k.lerp(a.y,s.y,l*n),k.lerp(a.z,s.z,l*i),Tj),d=p.fromElements(k.lerp(a.x,s.x,l*(e+1)),k.lerp(a.y,s.y,l*(n+1)),k.lerp(a.z,s.z,l*(i+1)),rst);return dst(r,d,this.shapeTransform,o)};var VQt=new p;ih.prototype.computeOrientedBoundingBoxForSample=function(t,e,n,i){let o=1/Math.pow(2,t.level),a=p.divideComponents(p.ONE,e,VQt),s=p.multiplyByScalar(a,o,VQt),l=p.multiplyByScalar(p.fromElements(t.x+n.x,t.y+n.y,t.z+n.z,Tj),o,Tj),r=p.add(l,s,rst),d=this._minBounds,m=this._maxBounds,h=p.fromElements(k.lerp(d.x,m.x,l.x),k.lerp(d.y,m.y,l.y),k.lerp(d.z,m.z,l.z),Tj),Z=p.fromElements(k.lerp(d.x,m.x,r.x),k.lerp(d.y,m.y,r.y),k.lerp(d.z,m.z,r.z),rst);return dst(h,Z,this.shapeTransform,i)};ih.DefaultMinBounds=Object.freeze(new p(-1,-1,-1));ih.DefaultMaxBounds=Object.freeze(new p(1,1,1));function dst(t,e,n,i){let o=ih.DefaultMinBounds,a=ih.DefaultMaxBounds;if(p.equals(t,o)&&p.equals(e,a))i.center=L.getTranslation(n,i.center),i.halfAxes=L.getMatrix3(n,i.halfAxes);else{let l=L.getScale(n,lst),r=p.midpoint(t,e,$Ye);i.center=L.multiplyByPoint(n,r,i.center),l=p.fromElements(l.x*.5*(e.x-t.x),l.y*.5*(e.y-t.y),l.z*.5*(e.z-t.z),lst);let d=L.getRotation(n,txe);i.halfAxes=ot.setScale(d,l,i.halfAxes)}return i}var Pb=ih;var gxo=R(W(),1);function Cl(){this.orientedBoundingBox=new ci,this.boundingSphere=new Ft,this.boundTransform=new L,this.shapeTransform=new L,this._minimumRadius=Cl.DefaultMinBounds.x,this._maximumRadius=Cl.DefaultMaxBounds.x,this._minimumHeight=Cl.DefaultMinBounds.y,this._maximumHeight=Cl.DefaultMaxBounds.y,this._minimumAngle=Cl.DefaultMinBounds.z,this._maximumAngle=Cl.DefaultMaxBounds.z,this.shaderUniforms={cylinderRenderHeightMinMax:new K,cylinderRenderRadiusMinMax:new K,cylinderRenderAngleMinMax:new K,cylinderUvToShapeUvRadius:new K,cylinderUvToShapeUvHeight:new K,cylinderUvToShapeUvAngle:new K,cylinderShapeUvAngleMinMax:new K,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var fQt=new p;Cl.prototype.update=function(t,e,n,i,o){i=f(i,Cl.DefaultMinBounds),o=f(o,Cl.DefaultMaxBounds);let a=Cl.DefaultMinBounds.x,s=Cl.DefaultMaxBounds.x,l=Cl.DefaultMinBounds.y,r=Cl.DefaultMaxBounds.y,d=Cl.DefaultMinBounds.z,m=Cl.DefaultMaxBounds.z,h=m-d,Z=.5*h,b=k.EPSILON10,u=k.EPSILON3,F=k.EPSILON10,U=k.clamp(e.x,a,s),G=k.clamp(n.x,a,s),A=k.clamp(i.x,a,s),T=k.clamp(o.x,a,s),g=Math.max(U,A),C=Math.min(G,T),y=k.clamp(e.y,l,r),Y=k.clamp(n.y,l,r),Q=k.clamp(i.y,l,r),J=k.clamp(o.y,l,r),M=Math.max(y,Q),V=Math.min(Y,J),E=k.negativePiToPi(e.z),I=k.negativePiToPi(n.z),B=k.negativePiToPi(i.z),X=k.negativePiToPi(o.z),_=Math.max(E,B),P=Math.min(I,X),w=L.getScale(t,fQt);if(C===0||g>C||M>V||k.equalsEpsilon(w.x,0,void 0,b)||k.equalsEpsilon(w.y,0,void 0,b)||k.equalsEpsilon(w.z,0,void 0,b))return!1;this._minimumRadius=U,this._maximumRadius=G,this._minimumHeight=y,this._maximumHeight=Y,this._minimumAngle=E,this._maximumAngle=I,this.shapeTransform=L.clone(t,this.shapeTransform),this.orientedBoundingBox=mst(g,C,M,V,_,P,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=L.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=Ft.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let nt=U===a&&G===s,$=y===l&&Y===r,dt=I<E,q=I-E+dt*h,at=q>Z+F&&q<h-F,st=q<Z-F,Et=q>=Z-F&&q<=Z+F,Qt=at||st||Et,Wt=k.equalsEpsilon(E,d,void 0,u),Nt=k.equalsEpsilon(I,m,void 0,u),kt=g===a,Mt=P<_,qt=P-_+Mt*h,ie=qt>=Z-F&&qt<h-F,oe=qt>F&&qt<Z-F,He=qt<=F,rn=ie||oe||He,{shaderUniforms:de,shaderDefines:zt}=this;for(let ue in zt)zt.hasOwnProperty(ue)&&(zt[ue]=void 0);let ke=0;if(zt.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=ke,ke+=1,kt||(zt.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,zt.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=ke,ke+=1),de.cylinderRenderRadiusMinMax=K.fromElements(g,C,de.cylinderRenderRadiusMinMax),g===C&&(zt.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!nt){zt.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let ue=G-U,We=0,un=1;ue!==0&&(We=1/ue,un=-U/ue),de.cylinderUvToShapeUvRadius=K.fromElements(We,un,de.cylinderUvToShapeUvRadius)}if(!$){zt.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let ue=Y-y,We=0,un=1;ue!==0&&(We=2/ue,un=-(y+1)/ue),de.cylinderUvToShapeUvHeight=K.fromElements(We,un,de.cylinderUvToShapeUvHeight)}if(de.cylinderRenderHeightMinMax=K.fromElements(M,V,de.cylinderRenderHeightMinMax),dt&&(zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),rn&&(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,zt.CYLINDER_INTERSECTION_INDEX_ANGLE=ke,ie?(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,ke+=1):oe?(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,ke+=2):He&&(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,ke+=2),de.cylinderRenderAngleMinMax=K.fromElements(_,P,de.cylinderRenderAngleMinMax)),Qt){zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,Wt&&(zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),Nt&&(zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let ue=(E-d)/h,We=(I-d)/h,un=1-q/h;if(de.cylinderShapeUvAngleMinMax=K.fromElements(ue,We,de.cylinderShapeUvAngleMinMax),de.cylinderShapeUvAngleRangeZeroMid=(We+.5*un)%1,q<=F)de.cylinderUvToShapeUvAngle=K.fromElements(0,1,de.cylinderUvToShapeUvAngle);else{let Ct=h/q,_t=-(E-d)/q;de.cylinderUvToShapeUvAngle=K.fromElements(Ct,_t,de.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=ke,!0};Cl.prototype.computeOrientedBoundingBoxForTile=function(t,e,n,i,o){let a=this._minimumRadius,s=this._maximumRadius,l=this._minimumHeight,r=this._maximumHeight,d=this._minimumAngle,m=this._maximumAngle,h=1/Math.pow(2,t),Z=k.lerp(a,s,e*h),b=k.lerp(a,s,(e+1)*h),u=k.lerp(l,r,n*h),F=k.lerp(l,r,(n+1)*h),U=k.lerp(d,m,i*h),G=k.lerp(d,m,(i+1)*h);return mst(Z,b,u,F,U,G,this.shapeTransform,o)};var bQt=new p,RQt=new p,axe=new p;Cl.prototype.computeOrientedBoundingBoxForSample=function(t,e,n,i){let o=1/Math.pow(2,t.level),a=p.divideComponents(p.ONE,e,bQt),s=p.multiplyByScalar(a,o,bQt),l=p.multiplyByScalar(p.fromElements(t.x+n.x,t.y+n.y,t.z+n.z,RQt),o,RQt),r=p.add(l,s,axe),d=this._minimumRadius,m=this._maximumRadius,h=this._minimumHeight,Z=this._maximumHeight,b=this._minimumAngle,u=this._maximumAngle,F=k.lerp(d,m,l.x),U=k.lerp(d,m,r.x),G=k.lerp(h,Z,l.y),A=k.lerp(h,Z,r.y),T=k.lerp(b,u,l.z),g=k.lerp(b,u,r.z);return mst(F,U,G,A,T,g,this.shapeTransform,i)};Cl.DefaultMinBounds=Object.freeze(new p(0,-1,-k.PI));Cl.DefaultMaxBounds=Object.freeze(new p(1,1,+k.PI));var sxe=5,lxe=new Array(sxe),rxe=new p,dxe=new ot,cxe=new L,mxe=new L,hxe=new L,cst=new L,pxe=new p,uxe=new p,Zxe=new p,FQt=new Array(8);for(let t=0;t<8;t++)FQt[t]=new p;function WQt(t,e,n){return Math.abs(Rt.dot(t,e))<n}function Vxe(t){let e=L.getColumn(t,0,pxe),n=L.getColumn(t,1,uxe),i=L.getColumn(t,2,Zxe),o=k.EPSILON4;return WQt(e,n,o)&&WQt(n,i,o)}function bxe(t,e){let n=FQt;p.fromElements(-.5,-.5,-.5,n[0]),p.fromElements(-.5,-.5,.5,n[1]),p.fromElements(-.5,.5,-.5,n[2]),p.fromElements(-.5,.5,.5,n[3]),p.fromElements(.5,-.5,-.5,n[4]),p.fromElements(.5,-.5,.5,n[5]),p.fromElements(.5,.5,-.5,n[6]),p.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)L.multiplyByPoint(t,n[i],n[i]);return ci.fromPoints(n,e)}function mst(t,e,n,i,o,a,s,l){let r=Cl.DefaultMinBounds,d=Cl.DefaultMaxBounds,m=r.x,h=d.x,Z=r.y,b=d.y,u=r.z,F=d.z;if(t===m&&e===h&&n===Z&&i===b&&o===u&&a===F)return l.center=L.getTranslation(s,l.center),l.halfAxes=L.getMatrix3(s,l.halfAxes),l;a<o&&(a+=k.TWO_PI);let G=a-o,A=o+G*.5,T=lxe,g=0;T[g++]=o,T[g++]=a,T[g++]=A,G>k.PI&&(T[g++]=A-k.PI_OVER_TWO,T[g++]=A+k.PI_OVER_TWO);let C=1,y=1,Y=-1,Q=-1;for(let dt=0;dt<g;++dt){let q=T[dt]-A,at=Math.cos(q),st=Math.sin(q),Et=at*t,Qt=st*t,Wt=at*e,Nt=st*e;C=Math.min(C,Et),y=Math.min(y,Qt),C=Math.min(C,Wt),y=Math.min(y,Nt),Y=Math.max(Y,Et),Q=Math.max(Q,Qt),Y=Math.max(Y,Wt),Q=Math.max(Q,Nt)}let J=Y-C,M=Q-y,V=i-n,E=(C+Y)*.5,I=(y+Q)*.5,B=(n+i)*.5,X=p.fromElements(E,I,B,rxe),_=ot.fromRotationZ(A,dxe),P=p.fromElements(J,M,V,fQt),w=L.fromScale(P,hxe),z=L.fromRotation(_,mxe),H=L.fromTranslation(X,cxe),nt=L.multiplyTransformation(z,L.multiplyTransformation(H,w,cst),cst),$=L.multiplyTransformation(s,nt,cst);return Vxe($)?ci.fromTransformation($,l):bxe($,l)}var vb=Cl;var Jxo=R(W(),1);function AW(){this.orientedBoundingBox=new ci,this.boundingSphere=new Ft,this.boundTransform=new L,this.shapeTransform=new L,this._rectangle=new Gt,this._minimumHeight=AW.DefaultMinBounds.z,this._maximumHeight=AW.DefaultMaxBounds.z,this._ellipsoid=new mt,this._translation=new p,this._rotation=new ot,this.shaderUniforms={ellipsoidRadiiUv:new p,eccentricitySquared:0,evoluteScale:new K,ellipsoidInverseRadiiSquaredUv:new p,ellipsoidRenderLongitudeMinMax:new K,ellipsoidShapeUvLongitudeMinMaxMid:new p,ellipsoidUvToShapeUvLongitude:new K,ellipsoidUvToShapeUvLatitude:new K,ellipsoidRenderLatitudeSinMinMax:new K,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new K},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var Rxe=new p,Wxe=new p,fxe=new p,Fxe=new p,Uxe=new p,Gxe=new p,Axe=new p,Txe=new p,Sxe=new ot,UQt=new p,GQt=new p,gxe=new Gt;AW.prototype.update=function(t,e,n,i,o){let{DefaultMinBounds:a,DefaultMaxBounds:s}=AW;i=f(i,a),o=f(o,s);let l=k.EPSILON10,r=k.EPSILON3,d=k.EPSILON10,m=k.EPSILON10,h=k.EPSILON3,Z=L.getScale(t,Txe),b=p.clone(a,Rxe);b.z=-p.minimumComponent(Z);let u=p.clamp(e,b,s,Wxe),F=p.clamp(n,b,s,fxe),U=p.clamp(i,b,s,Fxe),G=p.clamp(o,b,s,Uxe),A=p.maximumByComponent(u,U,Gxe),T=p.minimumByComponent(F,G,Axe),g=p.add(Z,p.fromElements(F.z,F.z,F.z,UQt),UQt),C=p.maximumComponent(g),y=p.add(Z,p.fromElements(T.z,T.z,T.z,GQt),GQt);if(A.y>T.y||A.y===s.y||T.y===a.y||A.z>T.z||k.equalsEpsilon(y,p.ZERO,void 0,l))return!1;this._rectangle=Gt.fromRadians(u.x,u.y,F.x,F.y),this._translation=L.getTranslation(t,this._translation),this._rotation=L.getRotation(t,this._rotation),this._ellipsoid=mt.fromCartesian3(Z,this._ellipsoid),this._minimumHeight=u.z,this._maximumHeight=F.z;let Y=Gt.fromRadians(A.x,A.y,T.x,T.y,gxe);this.orientedBoundingBox=hst(Y,A.z,T.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=L.fromRotationTranslation(ot.setScale(this._rotation,g,Sxe),this._translation,this.shapeTransform),this.boundTransform=L.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=Ft.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let Q=s.x-a.x,J=.5*Q,M=T.x<A.x,V=T.x-A.x+M*Q,E=V<=d,I=V>=J-d&&V<Q-d,B=V>d&&V<J-d,X=E||I||B,_=F.x<u.x,P=F.x-u.x+_*Q,w=P>J+d&&P<Q-d,z=P>=J-d&&P<=J+d,H=P<J-d,nt=w||z||H,$=T.y<-h,dt=T.y>=-h&&T.y<=+h,q=T.y>+h&&T.y<s.y-m,at=$||dt||q,st=A.y>a.y+m&&A.y<-h,Et=A.y>=-h&&A.y<=+h,Qt=A.y>+h,Wt=st||Et||Qt,Nt=at||Wt,kt=F.y-u.y,Mt=F.y<-h,qt=F.y>=-h&&F.y<=+h,ie=F.y>+h&&F.y<s.y-m,oe=Mt||qt||ie,He=u.y>a.y+m&&u.y<-h,rn=u.y>=-h&&u.y<=+h,de=u.y>+h,ke=oe||(He||rn||de),{shaderUniforms:ue,shaderDefines:We}=this;for(let oo in We)We.hasOwnProperty(oo)&&(We[oo]=void 0);ue.ellipsoidRadiiUv=p.divideByScalar(g,C,ue.ellipsoidRadiiUv);let{x:un,z:Ct}=ue.ellipsoidRadiiUv,_t=Ct/un;ue.eccentricitySquared=1-_t*_t,ue.evoluteScale=K.fromElements((un*un-Ct*Ct)/un,(Ct*Ct-un*un)/Ct,ue.evoluteScale),ue.ellipsoidInverseRadiiSquaredUv=p.divideComponents(p.ONE,p.multiplyComponents(ue.ellipsoidRadiiUv,ue.ellipsoidRadiiUv,ue.ellipsoidInverseRadiiSquaredUv),ue.ellipsoidInverseRadiiSquaredUv);let Je=0;We.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Je,Je+=1,We.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Je,Je+=1,ue.clipMinMaxHeight=K.fromElements((A.z-F.z)/C,(T.z-F.z)/C,ue.clipMinMaxHeight);let xe=(F.z-u.z)/C;if(ue.ellipsoidInverseHeightDifferenceUv=1/xe,u.z===F.z&&(ue.ellipsoidInverseHeightDifferenceUv=0),X&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,We.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Je,I?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Je+=1):B?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Je+=2):E&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Je+=2),ue.ellipsoidRenderLongitudeMinMax=K.fromElements(A.x,T.x,ue.ellipsoidRenderLongitudeMinMax)),nt)if(We.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,F.x<u.x&&(We.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),P<=d)ue.ellipsoidUvToShapeUvLongitude=K.fromElements(0,1,ue.ellipsoidUvToShapeUvLongitude);else{let ea=Q/P,gs=-(u.x-a.x)/P;ue.ellipsoidUvToShapeUvLongitude=K.fromElements(ea,gs,ue.ellipsoidUvToShapeUvLongitude)}if(X){let oo=k.equalsEpsilon(A.x,a.x,void 0,r),ea=k.equalsEpsilon(T.x,s.x,void 0,r);oo&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),ea&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let gs=(u.x-a.x)/Q,is=(F.x-a.x)/Q,ja=(T.x-a.x)/Q,qn=1-V/Q,ae=(ja+.5*qn)%1;ue.ellipsoidShapeUvLongitudeMinMaxMid=p.fromElements(gs,is,ae,ue.ellipsoidShapeUvLongitudeMinMaxMid)}if(Nt&&(Wt&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,We.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Je,st?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Je+=1):Et?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Je+=1):Qt&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Je+=2)),at&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,We.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Je,$?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Je+=2):dt?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Je+=1):q&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Je+=1)),ue.ellipsoidRenderLatitudeSinMinMax=K.fromElements(Math.sin(A.y),Math.sin(T.y),ue.ellipsoidRenderLatitudeSinMinMax)),ke)if(We.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,kt<m)ue.ellipsoidUvToShapeUvLatitude=K.fromElements(0,1,ue.ellipsoidUvToShapeUvLatitude);else{let ea=(s.y-a.y)/kt,gs=(a.y-u.y)/kt;ue.ellipsoidUvToShapeUvLatitude=K.fromElements(ea,gs,ue.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Je,!0};var SQt=new Gt;AW.prototype.computeOrientedBoundingBoxForTile=function(t,e,n,i,o){let a=1/Math.pow(2,t),s=e*a,l=(e+1)*a,r=n*a,d=(n+1)*a,m=i*a,h=(i+1)*a,Z=Gt.subsection(this._rectangle,s,r,l,d,SQt),b=k.lerp(this._minimumHeight,this._maximumHeight,m),u=k.lerp(this._minimumHeight,this._maximumHeight,h);return hst(Z,b,u,this._ellipsoid,this._translation,this._rotation,o)};var AQt=new p,TQt=new p,Exe=new p;AW.prototype.computeOrientedBoundingBoxForSample=function(t,e,n,i){let o=1/Math.pow(2,t.level),a=p.divideComponents(p.ONE,e,AQt),s=p.multiplyByScalar(a,o,AQt),l=p.multiplyByScalar(p.fromElements(t.x+n.x,t.y+n.y,t.z+n.z,TQt),o,TQt),r=p.add(l,s,Exe),d=Gt.subsection(this._rectangle,l.x,l.y,r.x,r.y,SQt),m=k.lerp(this._minimumHeight,this._maximumHeight,l.z),h=k.lerp(this._minimumHeight,this._maximumHeight,r.z);return hst(d,m,h,this._ellipsoid,this._translation,this._rotation,i)};function hst(t,e,n,i,o,a,s){return s=ci.fromRectangle(t,e,n,i,s),s.center=p.add(s.center,o,s.center),s.halfAxes=ot.multiply(s.halfAxes,a,s.halfAxes),s}AW.DefaultMinBounds=Object.freeze(new p(-k.PI,-k.PI_OVER_TWO,-mt.WGS84.minimumRadius));AW.DefaultMaxBounds=Object.freeze(new p(k.PI,k.PI_OVER_TWO,10*mt.WGS84.maximumRadius));var YS=AW;var dp={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};dp.getMinBounds=function(t){switch(t){case dp.BOX:return Pb.DefaultMinBounds;case dp.ELLIPSOID:return YS.DefaultMinBounds;case dp.CYLINDER:return vb.DefaultMinBounds}};dp.getMaxBounds=function(t){switch(t){case dp.BOX:return Pb.DefaultMaxBounds;case dp.ELLIPSOID:return YS.DefaultMaxBounds;case dp.CYLINDER:return vb.DefaultMaxBounds}};dp.getShapeConstructor=function(t){switch(t){case dp.BOX:return Pb;case dp.ELLIPSOID:return YS;case dp.CYLINDER:return vb}};var _o=Object.freeze(dp);var HXo=R(W(),1);var vxo=R(W(),1);function hV(t){this._comparator=t.comparator,this._maximumLength=t.maximumLength,this._array=c(t.maximumLength)?new Array(t.maximumLength):[],this._length=0}Object.defineProperties(hV.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(t){if(c(t)){for(;this._length>t;)this.removeMinimum();this._array.length=t}this._maximumLength=t}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});hV.prototype.clone=function(){let t=this._maximumLength,e=this._comparator,n=this._array,i=this._length,o=new hV({comparator:e,maximumLength:t});o._length=i;for(let a=0;a<i;a++)o._array[a]=n[a];return o};hV.prototype.reset=function(){this._length=0;let t=this._maximumLength;if(c(t))for(let e=0;e<t;e++)this._array[e]=void 0;else this._array.length=0};hV.prototype.resort=function(){let t=this._length;for(let e=0;e<t;e++)gQt(this,e)};hV.prototype.insert=function(t){let e,n=this._maximumLength;if(c(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(t,o)<=0)return t;e=this.removeMinimum()}}let i=this._length;return this._array[i]=t,this._length++,gQt(this,i),e};hV.prototype.removeMinimum=function(){let t=this._length;if(t===0)return;this._length--;let e=this._array[0];return t>=2&&(this._array[0]=this._array[t-1],EQt(this,0)),this._array[t-1]=void 0,e};hV.prototype.removeMaximum=function(){let t=this._length;if(t===0)return;this._length--;let e;if(t<=2)e=this._array[t-1];else{let n=pst(this,1,2)?1:2;e=this._array[n],this._array[n]=this._array[t-1],t>=4&&EQt(this,n)}return this._array[t-1]=void 0,e};hV.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};hV.prototype.getMaximum=function(){let t=this._length;if(t!==0)return t<=2?this._array[t-1]:this._array[pst(this,1,2)?1:2]};function Sj(t,e,n){let i=t._array,o=i[e];i[e]=i[n],i[n]=o}function $9(t,e,n){return t._comparator(t._array[e],t._array[n])<0}function pst(t,e,n){return t._comparator(t._array[e],t._array[n])>0}function gQt(t,e){if(e===0)return;let n=Math.floor(k.log2(e+1))%2===0,i=Math.floor((e-1)/2),o=$9(t,e,i);for(o!==n&&(Sj(t,e,i),e=i);e>=3;){let a=Math.floor((e-3)/4);if($9(t,e,a)!==o)break;Sj(t,e,a),e=a}}function EQt(t,e){let n=t._length,i=Math.floor(k.log2(e+1))%2===0,o;for(;(o=2*e+1)<n;){let a=o,s=o+1;if(s<n){$9(t,s,a)===i&&(a=s);let l=2*o+1,r=Math.max(Math.min(n-l,4),0);for(let d=0;d<r;d++){let m=l+d;$9(t,m,a)===i&&(a=m)}}if($9(t,a,e)===i&&(Sj(t,a,e),a!==o&&a!==s)){let l=Math.floor((a-1)/2);pst(t,a,l)===i&&Sj(t,a,l)}e=a}}var xS=hV;var zxo=R(W(),1),CQt=Object.freeze({UNLOADED:0,RECEIVING:1,RECEIVED:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function gj(t,e){this.spatialNode=t,this.keyframe=e,this.state=CQt.UNLOADED,this.metadata=[],this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}gj.priorityComparator=function(t,e){return t.priority-e.priority};gj.searchComparator=function(t,e){return t.keyframe-e.keyframe};gj.LoadState=CQt;var ra=gj;var VXo=R(W(),1);function AU(t,e,n,i,o){i===vn.UNSIGNED_SHORT&&(i=vn.FLOAT32);let a=t.floatingPointTexture;if(i===vn.FLOAT32&&!a)throw new St("Floating point texture not supported");let s;i===vn.FLOAT32||i===vn.FLOAT64?s=Ue.FLOAT:i===vn.UINT8&&(s=Ue.UNSIGNED_BYTE);let l;n===1?l=t.webgl2?Ye.RED:Ye.LUMINANCE:n===2?l=t.webgl2?Ye.RG:Ye.LUMINANCE_ALPHA:n===3?l=Ye.RGB:n===4&&(l=Ye.RGBA);let r=512*1024*1024,d=128*1024*1024;o=Math.min(f(o,d),r);let m=Sn.maximumTextureSize,h=vn.getSizeInBytes(i),Z=Math.floor(o/(n*h)),b=Math.min(m,k.previousPowerOfTwo(Math.floor(Math.sqrt(Z)))),u=Math.ceil(Math.sqrt(e.x)),F=Math.ceil(e.z/u),U=u*e.x,G=F*e.y,A=Math.floor(b/U),T=Math.floor(b/G);if(A===0||T===0)throw new St("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.voxelCountPerTile=p.clone(e,new p),this.maximumTileCount=A*T,this.regionCountPerMegatexture=new K(A,T),this.voxelCountPerRegion=new K(U,G),this.sliceCountPerRegion=new K(u,F),this.voxelSizeUv=new K(1/b,1/b),this.sliceSizeUv=new K(e.x/b,e.y/b),this.regionSizeUv=new K(U/b,G/b),this.texture=new hn({context:t,pixelFormat:l,pixelDatatype:s,flipY:!1,width:b,height:b,sampler:new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:bo.LINEAR})});let g=vn.toComponentDatatype(i);this.tileVoxelDataTemp=it.createTypedArray(g,U*G*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new Cxe(C);for(let C=0;C<this.maximumTileCount;C++){let y=this.nodes[C];y.previousNode=C>0?this.nodes[C-1]:void 0,y.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function Cxe(t){this.index=t,this.nextNode=void 0,this.previousNode=void 0}AU.prototype.add=function(t){if(this.isFull())throw new Ut("Trying to add when there are no empty spots");let e=this.emptyList;this.emptyList=this.emptyList.nextNode,c(this.emptyList)&&(this.emptyList.previousNode=void 0),e.nextNode=this.occupiedList,c(e.nextNode)&&(e.nextNode.previousNode=e),this.occupiedList=e;let n=e.index;return this.writeDataToTexture(n,t),this.occupiedCount++,n};AU.prototype.remove=function(t){if(t<0||t>=this.maximumTileCount)throw new Ut("Megatexture index out of bounds");let e=this.nodes[t];c(e.previousNode)&&(e.previousNode.nextNode=e.nextNode),c(e.nextNode)&&(e.nextNode.previousNode=e.previousNode),e.nextNode=this.emptyList,c(e.nextNode)&&(e.nextNode.previousNode=e),e.previousNode=void 0,this.emptyList=e,this.occupiedCount--};AU.prototype.isFull=function(){return this.emptyList===void 0};AU.getApproximateTextureMemoryByteLength=function(t,e,n,i){i===vn.UNSIGNED_SHORT&&(i=vn.FLOAT32);let o=vn.getSizeInBytes(i),a=t*e.x*e.y*e.z,s=Math.ceil(Math.sqrt(e.x)),l=Math.ceil(e.z/s),r=s*e.x,d=l*e.y,m=k.previousPowerOfTwo(Math.floor(Math.sqrt(a)));for(;;){let Z=Math.floor(m/r),b=Math.floor(m/d);if(Z*b>=t)break;m*=2}return m*m*n*o};AU.prototype.writeDataToTexture=function(t,e){let n=e.constructor===Uint16Array?new Float32Array(e):e,i=this.voxelCountPerTile,o=this.sliceCountPerRegion,a=this.voxelCountPerRegion,s=this.channelCount,l=this.tileVoxelDataTemp;for(let F=0;F<i.z;F++){let U=F%o.x*i.x,G=Math.floor(F/o.x)*i.y;for(let A=0;A<i.y;A++)for(let T=0;T<i.x;T++){let g=F*i.y*i.x+A*i.x+T,C=(G+A)*a.x+(U+T);for(let y=0;y<s;y++)l[C*s+y]=n[g*s+y]}}let r=this.regionCountPerMegatexture,d=a.x,m=a.y,h=t%r.x*a.x,Z=Math.floor(t/r.x)*a.y,u={source:{arrayBufferView:l,width:d,height:m},xOffset:h,yOffset:Z};this.texture.copyFrom(u)};AU.prototype.isDestroyed=function(){return!1};AU.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),At(this)};var P1=AU;var SXo=R(W(),1);function Bu(t,e,n,i,o,a,s){this.children=void 0,this.parent=o,this.level=t,this.x=e,this.y=n,this.z=i,this.dimensions=p.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new ci,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(a)}var Ixe=new p;Bu.prototype.computeBoundingVolumes=function(t){this.orientedBoundingBox=t.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let e=ot.getScale(this.orientedBoundingBox.halfAxes,Ixe),n=2*p.maximumComponent(e);this.approximateVoxelSize=n/p.minimumComponent(this.dimensions)};Bu.prototype.constructChildNodes=function(t){let{level:e,x:n,y:i,z:o}=this,a=n*2,s=i*2,l=o*2,r=s+1,d=a+1,m=l+1,h=e+1,Z=[[h,a,s,l],[h,d,s,l],[h,a,r,l],[h,d,r,l],[h,a,s,m],[h,d,s,m],[h,a,r,m],[h,d,r,m]];this.children=Z.map(([b,u,F,U])=>new Bu(b,u,F,U,this,t,this.dimensions))};Bu.prototype.visibility=function(t,e){let n=this.orientedBoundingBox;return t.cullingVolume.computeVisibilityWithPlaneMask(n,e)};Bu.prototype.computeScreenSpaceError=function(t,e){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(t));i=Math.max(i,k.EPSILON7);let o=this.approximateVoxelSize,a=e*(o/i);this.screenSpaceError=a};var IQt={keyframe:0};function t5(t,e){return IQt.keyframe=t,Ja(e,IQt,ra.searchComparator)}Bu.prototype.computeSurroundingRenderableKeyframeNodes=function(t){let e=this,n=e.level,i=Math.floor(t),o=Math.ceil(t),a,s,l=+Number.MAX_VALUE,r=+Number.MAX_VALUE;for(;c(e);){let{renderableKeyframeNodes:h}=e;if(h.length>=1){let Z=Nxe(i,h),b=h[Z],u=o===i||i<b.keyframe?Z:Math.min(Z+1,h.length-1),F=h[u],U=i-b.keyframe,G=NQt(n-e.level,U);G<l&&(l=G,a=b);let A=F.keyframe-o,T=NQt(n-e.level,A);if(T<r&&(r=T,s=F),U===0&&A===0)break}e=e.parent}if(this.renderableKeyframeNodePrevious=a,this.renderableKeyframeNodeNext=s,!c(a)||!c(s))return;let d=a.keyframe,m=s.keyframe;this.renderableKeyframeNodeLerp=d===m?0:k.clamp((t-d)/(m-d),0,1)};function Nxe(t,e){let n=t5(t,e);return n<0?k.clamp(~n-1,0,e.length-1):n}function NQt(t,e){let n=Math.exp(t*4),i=e>=0?1:-200;return t*n+e*i}Bu.prototype.isVisited=function(t){return this.visitedFrameNumber===t};Bu.prototype.createKeyframeNode=function(t){let e=t5(t,this.keyframeNodes);if(e<0){e=~e;let n=new ra(this,t);this.keyframeNodes.splice(e,0,n)}};Bu.prototype.destroyKeyframeNode=function(t,e){let n=t.keyframe,i=t5(n,this.keyframeNodes);if(i<0)throw new Ut("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),t.megatextureIndex!==-1){for(let a=0;a<e.length;a++)e[a].remove(t.megatextureIndex);let o=t5(n,this.renderableKeyframeNodes);if(o<0)throw new Ut("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}t.spatialNode=void 0,t.state=ra.LoadState.UNLOADED,t.metadata={},t.megatextureIndex=-1,t.priority=-Number.MAX_VALUE,t.highPriorityFrameNumber=-1};Bu.prototype.addKeyframeNodeToMegatextures=function(t,e){if(t.state!==ra.LoadState.RECEIVED||t.megatextureIndex!==-1||t.metadata.length!==e.length)throw new Ut("Keyframe node cannot be added to megatexture");for(let o=0;o<e.length;o++){let a=e[o];t.megatextureIndex=a.add(t.metadata[o])}t.state=ra.LoadState.LOADED;let n=this.renderableKeyframeNodes,i=t5(t.keyframe,n);if(i>=0)throw new Ut("Keyframe already renderable");i=~i,n.splice(i,0,t)};Bu.prototype.isRenderable=function(t){let e=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return c(e)&&c(n)&&(e.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===t};var e5=Bu;function TW(t,e,n,i,o,a,s){this._primitive=t,this.megatextures=new Array(i.length);for(let u=0;u<i.length;u++){let F=i[u],U=Nn.getComponentCount(F),G=o[u];this.megatextures[u]=new P1(e,n,U,G,s)}let l=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._frameNumber=0;let r=t._shape;this.rootNode=new e5(0,0,0,0,void 0,r,n),this._priorityQueue=new xS({maximumLength:l,comparator:ra.priorityComparator}),this._highPriorityKeyframeNodes=new Array(l),this._keyframeNodesInMegatexture=new Array(l),this._keyframeCount=a,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(a);let d=this._binaryTreeKeyframeWeighting;d[0]=0,d[a-1]=0,ust(d,1,a-2,0);let m=9,h=2048,Z=Math.floor(h/m),b=Math.ceil(l/Z);this.internalNodeTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,flipY:!1,width:h,height:b,sampler:new Hn({minificationFilter:On.NEAREST,magnificationFilter:bo.NEAREST})}),this.internalNodeTilesPerRow=Z,this.internalNodeTexelSizeUv=new K(1/h,1/b),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new K}TW.prototype.findKeyframeNode=function(t){return this._keyframeNodesInMegatexture.find(function(e){return e.megatextureIndex===t})};function ust(t,e,n,i){if(e>n)return;let o=Math.floor((e+n)/2);t[o]=i,ust(t,e,o-1,i+1),ust(t,o+1,n,i+1)}TW.simultaneousRequestCountMaximum=50;TW.prototype.update=function(t,e,n,i){let o=this._primitive,a=t.context,s=this.megatextures[0].maximumTileCount,l=this._keyframeCount,r=o._levelBlendFactor,d=r>0,m=l>1,h=(d?2:1)*(m?2:1);this._sampleCount=h;let Z=h>=2;if(Z&&!c(this.leafNodeTexture)){let A=Math.floor(512),T=Math.ceil(s/A);this.leafNodeTexture=new hn({context:a,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,flipY:!1,width:1024,height:T,sampler:new Hn({minificationFilter:On.NEAREST,magnificationFilter:bo.NEAREST})}),this.leafNodeTexelSizeUv=K.fromElements(1/1024,1/T,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=A}else!Z&&c(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=k.clamp(e,0,l-1),n&&yQt(this,this.rootNode),i)return;this._frameNumber=t.frameNumber;let b=Oi();Qxe(this,t);let u=Oi();xxe(this,h,r);let F=Oi();if(this._debugPrint){let U=u-b,G=F-u,A=F-b;Yxe(this,U,G,A)}};TW.prototype.isRenderable=function(t){return t.isRenderable(this._frameNumber)};TW.prototype.isDestroyed=function(){return!1};TW.prototype.destroy=function(){let t=this.megatextures,e=t.length;for(let n=0;n<e;n++)t[n]=t[n]&&t[n].destroy();return this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),At(this)};function yQt(t,e){if(e.computeBoundingVolumes(t._primitive._shape),c(e.children))for(let n=0;n<8;n++){let i=e.children[n];yQt(t,i)}}function yxe(t,e){if(t._simultaneousRequestCount>=TW.simultaneousRequestCountMaximum)return;let n=t._primitive._provider;function i(r){t._simultaneousRequestCount--;let d=n.types.length;if(!c(r))e.state=ra.LoadState.UNAVAILABLE;else if(r===ra.LoadState.FAILED)e.state=ra.LoadState.FAILED;else if(!Array.isArray(r)||r.length!==d)e.state=ra.LoadState.FAILED;else{let m=t.megatextures;for(let h=0;h<d;h++){let{voxelCountPerTile:Z,channelCount:b}=m[h],{x:u,y:F,z:U}=Z,G=u*F*U,A=r[h],T=G*b;if(A.length===T)e.metadata[h]=A,e.state=ra.LoadState.RECEIVED;else{e.state=ra.LoadState.FAILED;break}}}}function o(){t._simultaneousRequestCount--,e.state=ra.LoadState.FAILED}let{keyframe:a,spatialNode:s}=e,l=n.requestData({tileLevel:s.level,tileX:s.x,tileY:s.y,tileZ:s.z,keyframe:a});c(l)?(t._simultaneousRequestCount++,e.state=ra.LoadState.RECEIVING,l.then(i).catch(o)):e.state=ra.LoadState.FAILED}function Bxe(t){return t/(1+t)}function Qxe(t,e){let n=t._frameNumber,i=t._primitive,o=i._shape,a=i.screenSpaceError,s=t._priorityQueue,l=t._keyframeCount,r=k.clamp(Math.floor(t._keyframeLocation),0,l-2),d=r+1,{camera:m,context:h,pixelRatio:Z}=e,{positionWC:b,frustum:u}=m,U=h.drawingBufferHeight/Z/u.sseDenominator;function G(M,V){if(M.computeScreenSpaceError(b,U),V=M.visibility(e,V),V===Jl.MASK_OUTSIDE)return;if(M.visitedFrameNumber=n,l===1)M.createKeyframeNode(0);else if(M.keyframeNodes.length!==l)for(let _=0;_<l;_++)M.createKeyframeNode(_);let{screenSpaceError:E,keyframeNodes:I}=M,B=Bxe(E),X=!1;for(let _=0;_<I.length;_++){let P=I[_];P.priority=10*B+kxe(r,P.keyframe,d,t),P.state!==ra.LoadState.UNAVAILABLE&&P.state!==ra.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&s.insert(P),P.state===ra.LoadState.LOADED&&(X=!0)}if(E<a||!X){M.children=void 0;return}c(M.children)||M.constructChildNodes(o);for(let _=0;_<8;_++){let P=M.children[_];G(P,V)}}s.reset(),G(t.rootNode,Jl.MASK_INDETERMINATE);let A=t._highPriorityKeyframeNodes,T=0,g;for(;s.length>0;)g=s.removeMaximum(),g.highPriorityFrameNumber=n,A[T]=g,T++;let C=t._keyframeNodesInMegatexture,y=t.megatextures[0],Y=y.occupiedCount;C.length=Y,C.sort(function(M,V){return M.highPriorityFrameNumber===V.highPriorityFrameNumber?V.priority-M.priority:V.highPriorityFrameNumber-M.highPriorityFrameNumber});let Q=0,J=0;for(let M=0;M<T;M++)if(g=A[M],!(g.state===ra.LoadState.LOADED||g.spatialNode===void 0)&&(g.state===ra.LoadState.UNLOADED&&yxe(t,g),g.state===ra.LoadState.RECEIVED)){let V=0;if(y.isFull()){V=Y-1-Q,Q++;let E=C[V];E.spatialNode.destroyKeyframeNode(E,t.megatextures)}else V=Y+J,J++;g.spatialNode.addKeyframeNodeToMegatextures(g,t.megatextures),C[V]=g}}function kxe(t,e,n,i){let o=Math.min(Math.abs(e-t),Math.abs(e-n)),a=Math.max(t,i._keyframeCount-n-1,1),s=Math.pow(1-o/a,4),l=Math.exp(-i._binaryTreeKeyframeWeighting[e]);return k.lerp(l,s,.15+.85*s)}function Yxe(t,e,n,i){let o=t._keyframeCount,a=t.rootNode,s=Object.keys(ra.LoadState).length,l=new Array(s),r=new Array(s),d=0;for(let G=0;G<s;G++){let A=new Array(o);l[G]=A;for(let T=0;T<o;T++)A[T]=0;r[G]=0}function m(G){let A=G.keyframeNodes;for(let T=0;T<A.length;T++){let g=A[T],C=g.keyframe,y=g.state;l[y][C]+=1,r[y]+=1,d++}if(c(G.children))for(let T=0;T<8;T++){let g=G.children[T];m(g)}}m(a);let h=`KEYFRAMES: ${l[ra.LoadState.LOADED]}`,Z=`UNLOADED: ${r[ra.LoadState.UNLOADED]} | RECEIVING: ${r[ra.LoadState.RECEIVING]} | RECEIVED: ${r[ra.LoadState.RECEIVED]} | LOADED: ${r[ra.LoadState.LOADED]} | FAILED: ${r[ra.LoadState.FAILED]} | UNAVAILABLE: ${r[ra.LoadState.UNAVAILABLE]} | TOTAL: ${d}`,b=Math.round(e*100)/100,u=Math.round(n*100)/100,F=Math.round(i*100)/100,U=`LOAD: ${b} | OCT: ${u} | ALL: ${F}`;console.log(`${h} || ${Z} || ${U}`)}var Ej={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function xxe(t,e,n){let i=t._primitive._screenSpaceError,o=t._keyframeLocation,a=t._frameNumber,s=e>=2,l=0,r=0,d=[],m=[];function h(b,u,F,U,G){let A=!1;if(c(b.children))for(let T=0;T<8;T++){let g=b.children[T];g.computeSurroundingRenderableKeyframeNodes(o),g.isRenderable(a)&&(A=!0)}if(A){d[G]=Ej.INTERNAL<<16|u,d[F]=U,l++,U=u,G=U*9+1;for(let T=0;T<8;T++){let g=b.children[T];u=l,F=u*9+0,h(g,u,F,U,G+T)}}else{if(s){let T=r*5,g=b.renderableKeyframeNodePrevious,C=b.level-g.spatialNode.level,y=g.spatialNode.parent,Y=c(y)?y.renderableKeyframeNodePrevious:g,Q=Xxe(b,i,n),J=C,M=1,V=g.megatextureIndex,E=Y.megatextureIndex;m[T+0]=Q,m[T+1]=J,m[T+2]=M,m[T+3]=V,m[T+4]=E,d[G]=Ej.LEAF<<16|r}else{let T=b.renderableKeyframeNodePrevious,C=b.level-T.spatialNode.level===0?Ej.LEAF:Ej.PACKED_LEAF_FROM_PARENT;d[G]=C<<16|T.megatextureIndex}r++}}let Z=t.rootNode;Z.computeSurroundingRenderableKeyframeNodes(o),Z.isRenderable(a)&&h(Z,0,0,0,0),Jxe(d,9,t.internalNodeTilesPerRow,t.internalNodeTexture),s&&Lxe(m,2,t.leafNodeTilesPerRow,t.leafNodeTexture)}function Xxe(t,e,n){if(t.parent===void 0)return 0;let i=t.screenSpaceError,o=t.parent.screenSpaceError,s=((e-i)/(o-i)+n-1)/n;return k.clamp(s,0,1)}function Jxe(t,e,n,i){let o=Ye.componentsLength(i.pixelFormat),a=Math.ceil(t.length/e),s=Math.max(1,e*Math.min(a,n)),l=Math.max(1,Math.ceil(a/n)),r=new Uint8Array(s*l*o);for(let h=0;h<t.length;h++){let Z=t[h],b=h*o;for(let u=0;u<o;u++)r[b+u]=Z>>>u*8&255}let m={source:{arrayBufferView:r,width:s,height:l},xOffset:0,yOffset:0};i.copyFrom(m)}function Lxe(t,e,n,i){let o=Ye.componentsLength(i.pixelFormat),a=5,s=Math.ceil(t.length/a),l=Math.max(1,e*Math.min(s,n)),r=Math.max(1,Math.ceil(s/n)),d=new Uint8Array(l*r*o);for(let Z=0;Z<s;Z++){let b=t[Z*a+0],u=t[Z*a+1],F=t[Z*a+2],U=t[Z*a+3],G=t[Z*a+4],A=k.clamp(Math.floor(65536*b),0,65535);d[Z*8+0]=A>>>0&255,d[Z*8+1]=A>>>8&255,d[Z*8+2]=u&255,d[Z*8+3]=F&255,d[Z*8+4]=U>>>0&255,d[Z*8+5]=U>>>8&255,d[Z*8+6]=G>>>0&255,d[Z*8+7]=G>>>8&255}let h={source:{arrayBufferView:d,width:l,height:r},xOffset:0,yOffset:0};i.copyFrom(h)}TW.getApproximateTextureMemoryByteLength=function(t,e,n,i){let o=0,a=n.length;for(let s=0;s<a;s++){let l=n[s],r=i[s],d=Nn.getComponentCount(l);o+=P1.getApproximateTextureMemoryByteLength(t,e,d,r)}return o};var v1=TW;var VJo=R(W(),1);var PXo=R(W(),1),Mxe={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},K1=Object.freeze(Mxe);var sJo=R(W(),1);var KXo=R(W(),1);function _xe(t,e,n){let i=new Uint8ClampedArray(t.buffer),o=new ImageData(i,e,n),a=document.createElement("canvas");return a.width=e,a.height=n,a.getContext("2d").putImageData(o,0,0),a}var n5=_xe;function z1(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}z1.prototype.getTexture=function(t){return this._textures[t]};function Dxe(t,e,n){n.resource.fetchImage().then(function(i){t._loadedImages.push({id:e,image:i,textureUniform:n})}).catch(function(){let i=t._textures[e];c(i)&&i!==t._defaultTexture&&i.destroy(),t._textures[e]=t._defaultTexture})}z1.prototype.loadTexture2D=function(t,e){c(e.typedArray)?this._loadedImages.push({id:t,textureUniform:e}):Dxe(this,t,e)};function Oxe(t,e,n){let{id:i,textureUniform:o,image:a}=e,s=n.webgl2?Cj(o,a,n):Hxe(o,a,n),l=t._textures[i];c(l)&&l!==n.defaultTexture&&l.destroy(),t._textures[i]=s}function Cj(t,e,n){let{typedArray:i,sampler:o}=t,a=c(i)?QQt(t,n):new hn({context:n,source:e,sampler:o});return BQt(o)&&a.generateMipmap(),a}function Hxe(t,e,n){let{typedArray:i,sampler:o}=t,a=BQt(o),s=o.wrapS===Vi.REPEAT||o.wrapS===Vi.MIRRORED_REPEAT||o.wrapT===Vi.REPEAT||o.wrapT===Vi.MIRRORED_REPEAT,{width:l,height:r}=c(i)?t:e,d=[l,r].every(k.isPowerOfTwo);if((a||s)&&!d)if(c(i)){if(t.pixelDatatype===Ue.UNSIGNED_BYTE){let h=n5(i,l,r),Z=_f(h);return Cj({sampler:o},Z,n)}}else{let h=_f(e);return Cj(t,h,n)}else return Cj(t,e,n);return a?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),QQt(t,n)}function BQt(t){return[On.NEAREST_MIPMAP_NEAREST,On.NEAREST_MIPMAP_LINEAR,On.LINEAR_MIPMAP_NEAREST,On.LINEAR_MIPMAP_LINEAR].includes(t.minificationFilter)}function QQt(t,e){let{pixelFormat:n,pixelDatatype:i,width:o,height:a,typedArray:s,sampler:l}=t;return new hn({context:e,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:a},sampler:l,flipY:!1})}z1.prototype.update=function(t){if(t.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=t.frameNumber;let e=t.context;this._defaultTexture=e.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];Oxe(this,o,e)}n.length=0};z1.prototype.isDestroyed=function(){return!1};z1.prototype.destroy=function(){let t=this._textures;for(let e in t)if(t.hasOwnProperty(e)){let n=t[e];n!==this._defaultTexture&&n.destroy()}return At(this)};var i5=z1;function o5(t){t=f(t,f.EMPTY_OBJECT),this.mode=f(t.mode,Z0.MODIFY_MATERIAL),this.lightingModel=t.lightingModel,this.uniforms=f(t.uniforms,f.EMPTY_OBJECT),this.varyings=f(t.varyings,f.EMPTY_OBJECT),this.vertexShaderText=t.vertexShaderText,this.fragmentShaderText=t.fragmentShaderText,this.translucencyMode=f(t.translucencyMode,iF.INHERIT),this._textureManager=new i5,this._defaultTexture=void 0,this.uniformMap=wxe(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},Kxe(this),zxe(this)}function wxe(t){let e=t.uniforms,n={};for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];o.type===K1.SAMPLER_2D?(t._textureManager.loadTexture2D(i,o.value),n[i]=Pxe(t,i)):n[i]=vxe(t,i)}return n}function Pxe(t,e){return function(){return f(t._textureManager.getTexture(e),t._defaultTexture)}}function vxe(t,e){return function(){return t.uniforms[e].value}}function XS(t,e,n){let i;for(;(i=e.exec(t))!==null;){let o=i[1];n[o]=!0}}function Kxe(t){let e=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,a=t.vertexShaderText;c(a)&&(o=t.usedVariablesVertex.attributeSet,XS(a,e,o),o=t.usedVariablesVertex.featureIdSet,XS(a,n,o),o=t.usedVariablesVertex.metadataSet,XS(a,i,o));let s=t.fragmentShaderText;if(c(s)){o=t.usedVariablesFragment.attributeSet,XS(s,e,o),o=t.usedVariablesFragment.featureIdSet,XS(s,n,o),o=t.usedVariablesFragment.metadataSet,XS(s,i,o);let l=/material\.(\w+)/g,r=t.usedVariablesFragment.materialSet;XS(s,l,r)}}function kQt(t){let e=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return e.test(t)?`${t} (model coordinates)`:n.test(t)?`${t} (Cartesian world coordinates)`:i.test(t)?`${t} (eye coordinates)`:t}function uc(t,e,n,i){if(t.hasOwnProperty(e)){let o=`${kQt(e)} is not available in the ${i} shader. Did you mean ${kQt(n)} instead?`;throw new Ut(o)}}function zxe(t){let e=t.usedVariablesVertex.attributeSet;uc(e,"position","positionMC","vertex"),uc(e,"normal","normalMC","vertex"),uc(e,"tangent","tangentMC","vertex"),uc(e,"bitangent","bitangentMC","vertex"),uc(e,"positionWC","positionMC","vertex"),uc(e,"positionEC","positionMC","vertex"),uc(e,"normalEC","normalMC","vertex"),uc(e,"tangentEC","tangentMC","vertex"),uc(e,"bitangentEC","bitangentMC","vertex");let n=t.usedVariablesFragment.attributeSet;uc(n,"position","positionEC","fragment"),uc(n,"normal","normalEC","fragment"),uc(n,"tangent","tangentEC","fragment"),uc(n,"bitangent","bitangentEC","fragment"),uc(n,"normalMC","normalEC","fragment"),uc(n,"tangentMC","tangentEC","fragment"),uc(n,"bitangentMC","bitangentEC","fragment")}o5.prototype.setUniform=function(t,e){let n=this.uniforms[t];n.type===K1.SAMPLER_2D?this._textureManager.loadTexture2D(t,e):c(e.clone)?n.value=e.clone(n.value):n.value=e};o5.prototype.update=function(t){this._defaultTexture=t.context.defaultTexture,this._textureManager.update(t)};o5.prototype.isDestroyed=function(){return!1};o5.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),At(this)};var JS=o5;function Kb(t){t=f(t,f.EMPTY_OBJECT),this._ready=!1,this._provider=f(t.provider,Kb.DefaultProvider),this._traversal=void 0,this._shape=void 0,this._shapeVisible=!1,this._paddingBefore=new p,this._paddingAfter=new p,this._minBounds=new p,this._minBoundsOld=new p,this._maxBounds=new p,this._maxBoundsOld=new p,this._exaggeratedMinBounds=new p,this._exaggeratedMinBoundsOld=new p,this._exaggeratedMaxBounds=new p,this._exaggeratedMaxBoundsOld=new p,this._minClippingBounds=new p,this._minClippingBoundsOld=new p,this._maxClippingBounds=new p,this._maxClippingBoundsOld=new p,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._exaggeratedModelMatrix=L.clone(this._modelMatrix),this._compoundModelMatrix=new L,this._compoundModelMatrixOld=new L,this._customShader=f(t.customShader,Kb.DefaultCustomShader),this._customShaderCompilationEvent=new It,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=t.clock,this._transformPositionWorldToUv=new L,this._transformPositionUvToWorld=new L,this._transformDirectionWorldToLocal=new ot,this._transformNormalLocalToWorld=new ot,this._jitter=!1,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Mc,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new K,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new K,megatextureTextures:[],megatextureSliceDimensions:new K,megatextureTileDimensions:new K,megatextureVoxelSizeUv:new K,megatextureSliceSizeUv:new K,megatextureTileSizeUv:new K,dimensions:new p,paddingBefore:new p,paddingAfter:new p,transformPositionViewToUv:new L,transformPositionUvToView:new L,transformDirectionViewToLocal:new ot,transformNormalLocalToWorld:new ot,cameraPositionUv:new p,ndcSpaceAxisAlignedBoundingBox:new Rt,clippingPlanesTexture:void 0,clippingPlanesMatrix:new L,stepSize:0,pickColor:new v},this._shapeDefinesOld={},this._uniformMap={};let e=this._uniforms,n=this._uniformMap;for(let o in e)if(e.hasOwnProperty(o)){let a=`u_${o}`;n[a]=function(){return e[o]}}let i=this._provider;jxe(this,i)}function jxe(t,e){let{shape:n,minBounds:i=_o.getMinBounds(n),maxBounds:o=_o.getMaxBounds(n)}=e;t.minBounds=i,t.maxBounds=o,t.minClippingBounds=_o.getMinBounds(n),t.maxClippingBounds=_o.getMaxBounds(n),t._exaggeratedMinBounds=p.clone(t._minBounds,t._exaggeratedMinBounds),t._exaggeratedMaxBounds=p.clone(t._maxBounds,t._exaggeratedMaxBounds),t._exaggeratedModelMatrix=L.clone(t._modelMatrix,t._exaggeratedModelMatrix),xQt(t,e);let a=_o.getShapeConstructor(n);t._shape=new a,t._shapeVisible=XQt(t,t._shape,e)}Object.defineProperties(Kb.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(t){this._modelMatrix=L.clone(t,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._provider.dimensions}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(t){this._disableRender=!t}},disableUpdate:{get:function(){return this._disableUpdate},set:function(t){this._disableUpdate=t}},debugDraw:{get:function(){return this._debugDraw},set:function(t){this._debugDraw=t}},depthTest:{get:function(){return this._depthTest},set:function(t){this._depthTest!==t&&(this._depthTest=t,this._shaderDirty=!0)}},jitter:{get:function(){return this._jitter},set:function(t){this._jitter!==t&&(this._jitter=t,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(t){this._nearestSampling!==t&&(this._nearestSampling=t,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(t){this._levelBlendFactor=k.clamp(t,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(t){this._screenSpaceError=t}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(t){this._stepSizeMultiplier=t}},minBounds:{get:function(){return this._minBounds},set:function(t){this._minBounds=p.clone(t,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(t){this._maxBounds=p.clone(t,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(t){this._minClippingBounds=p.clone(t,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(t){this._maxClippingBounds=p.clone(t,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){Ml.setOwner(t,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(t){if(this._customShader!==t){let e=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete e[o];c(t)?this._customShader=t:this._customShader=Kb.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}}});var qxe=new p,$xe=new Rt,tXe=new Rt,eXe=new p,nXe=new p,iXe=new ot,oXe=new ot,aXe=new L,sXe=new L,lXe=new L,rXe=L.fromRotationTranslation(ot.fromUniformScale(.5,new ot),new p(.5,.5,.5),new L),dXe=L.fromRotationTranslation(ot.fromUniformScale(2,new ot),new p(-1,-1,-1),new L);Kb.prototype.update=function(t){let e=this._provider;this._customShader.update(t);let n=t.context;if(!this._ready){ZXe(this,e,n),t.afterRender.push(()=>(this._ready=!0,!0));return}pXe(this,t);let i=xQt(this,e),o=this._shape;if(i&&(this._shapeVisible=XQt(this,o,e),RXe(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let a=WXe(e.timeIntervalCollection,this._clock),s=this._traversal,l=s._sampleCount;if(s.update(t,a,i,this._disableUpdate),l!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&gXe(this,t),this._disableRender))return;this._useLogDepth!==t.useLogDepth&&(this._useLogDepth=t.useLogDepth,this._shaderDirty=!0),fXe(this,t)&&(this._shaderDirty=!0);let d=s.leafNodeTexture,m=this._uniforms;c(d)&&(m.octreeLeafNodeTexture=s.leafNodeTexture,m.octreeLeafNodeTexelSizeUv=K.clone(s.leafNodeTexelSizeUv,m.octreeLeafNodeTexelSizeUv),m.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(q9(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,Z=o.orientedBoundingBox,b=GXe(Z,h,tXe);if(b.x===1||b.y===1||b.z===-1||b.w===-1)return;m.ndcSpaceAxisAlignedBoundingBox=Rt.clone(b,m.ndcSpaceAxisAlignedBoundingBox);let F=n.uniformState.inverseView;m.transformPositionViewToUv=L.multiplyTransformation(this._transformPositionWorldToUv,F,m.transformPositionViewToUv);let U=n.uniformState.view;m.transformPositionUvToView=L.multiplyTransformation(U,this._transformPositionUvToWorld,m.transformPositionUvToView);let G=n.uniformState.inverseViewRotation;m.transformDirectionViewToLocal=ot.multiply(this._transformDirectionWorldToLocal,G,m.transformDirectionViewToLocal),m.transformNormalLocalToWorld=ot.clone(this._transformNormalLocalToWorld,m.transformNormalLocalToWorld);let A=t.camera.positionWC;m.cameraPositionUv=L.multiplyByPoint(this._transformPositionWorldToUv,A,m.cameraPositionUv),m.stepSize=this._stepSizeMultiplier;let T=t.passes.pick?this._drawCommandPick:t.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;T.boundingVolume=o.boundingSphere,t.commandList.push(T)};var cXe=new p,Zst=new p,mXe=new gt,hXe=new p;function pXe(t,e){if(t._exaggeratedMinBounds=p.clone(t._minBounds,t._exaggeratedMinBounds),t._exaggeratedMaxBounds=p.clone(t._maxBounds,t._exaggeratedMaxBounds),t.shape===_o.ELLIPSOID){let n=e.verticalExaggerationRelativeHeight,i=e.verticalExaggeration;t._exaggeratedMinBounds.z=(t._minBounds.z-n)*i+n,t._exaggeratedMaxBounds.z=(t._maxBounds.z-n)*i+n}else if(t.shape===_o.BOX){let n=p.fromElements(1,1,e.verticalExaggeration,cXe);t._exaggeratedModelMatrix=L.multiplyByScale(t._modelMatrix,n,t._exaggeratedModelMatrix),t._exaggeratedModelMatrix=L.multiplyByTranslation(t._exaggeratedModelMatrix,uXe(t,e),t._exaggeratedModelMatrix)}}function uXe(t,e){let{shapeTransform:n=L.IDENTITY,globalTransform:i=L.IDENTITY}=t._provider,o=L.getTranslation(n,Zst),a=L.multiplyByPoint(t._modelMatrix,o,Zst),s=L.multiplyByPoint(i,a,Zst),r=mt.WGS84.cartesianToCartographic(s,mXe),d=0;c(r)&&(d=r.height);let m=Ps.getHeight(d,e.verticalExaggeration,e.verticalExaggerationRelativeHeight);return p.fromElements(0,0,(m-d)/e.verticalExaggeration,hXe)}function ZXe(t,e,n){let i=t._uniforms;t._pickId=n.createPickId({primitive:t}),i.pickColor=v.clone(t._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:a}=t._shape;t._shapeDefinesOld=be(o,!0);let s=t._uniformMap;for(let l in a)if(a.hasOwnProperty(l)){let r=`u_${l}`;s[r]=function(){return a[l]}}i.dimensions=p.clone(e.dimensions,i.dimensions),t._paddingBefore=p.clone(f(e.paddingBefore,p.ZERO),t._paddingBefore),i.paddingBefore=p.clone(t._paddingBefore,i.paddingBefore),t._paddingAfter=p.clone(f(e.paddingAfter,p.ZERO),t._paddingBefore),i.paddingAfter=p.clone(t._paddingAfter,i.paddingAfter),t._traversal=VXe(t,e,n),bXe(t._traversal,i)}function xQt(t,e){let n=f(e.shapeTransform,L.IDENTITY),i=f(e.globalTransform,L.IDENTITY);return L.multiplyTransformation(i,t._exaggeratedModelMatrix,t._compoundModelMatrix),L.multiplyTransformation(t._compoundModelMatrix,n,t._compoundModelMatrix),LS(t,"_compoundModelMatrix","_compoundModelMatrixOld")+LS(t,"_minBounds","_minBoundsOld")+LS(t,"_maxBounds","_maxBoundsOld")+LS(t,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+LS(t,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+LS(t,"_minClippingBounds","_minClippingBoundsOld")+LS(t,"_maxClippingBounds","_maxClippingBoundsOld")>0}function LS(t,e,n){let i=t[e],o=t[n],a=!i.equals(o);return a&&i.clone(o),a?1:0}function XQt(t,e,n){if(!e.update(t._compoundModelMatrix,t._exaggeratedMinBounds,t._exaggeratedMaxBounds,t.minClippingBounds,t.maxClippingBounds))return!1;let o=e.shapeTransform,a=L.inverse(o,aXe),s=L.getRotation(o,iXe),l=L.getScale(o,eXe),r=p.maximumComponent(l),d=p.divideByScalar(l,r,nXe),m=ot.multiplyByScale(s,d,oXe);return t._transformPositionWorldToUv=L.multiplyTransformation(rXe,a,t._transformPositionWorldToUv),t._transformPositionUvToWorld=L.multiplyTransformation(o,dXe,t._transformPositionUvToWorld),t._transformDirectionWorldToLocal=L.getMatrix3(a,t._transformDirectionWorldToLocal),t._transformNormalLocalToWorld=ot.inverseTranspose(m,t._transformNormalLocalToWorld),!0}function VXe(t,e,n){let i=p.clone(e.dimensions,qxe);p.add(i,t._paddingBefore,i),p.add(i,t._paddingAfter,i);let o=e.maximumTileCount,a=c(o)?v1.getApproximateTextureMemoryByteLength(o,i,e.types,e.componentTypes):void 0,s=f(e.keyframeCount,1);return new v1(t,n,i,e.types,e.componentTypes,s,a)}function bXe(t,e){e.octreeInternalNodeTexture=t.internalNodeTexture,e.octreeInternalNodeTexelSizeUv=K.clone(t.internalNodeTexelSizeUv,e.octreeInternalNodeTexelSizeUv),e.octreeInternalNodeTilesPerRow=t.internalNodeTilesPerRow;let n=t.megatextures,i=n[0],o=n.length;e.megatextureTextures=new Array(o);for(let a=0;a<o;a++)e.megatextureTextures[a]=n[a].texture;e.megatextureSliceDimensions=K.clone(i.sliceCountPerRegion,e.megatextureSliceDimensions),e.megatextureTileDimensions=K.clone(i.regionCountPerMegatexture,e.megatextureTileDimensions),e.megatextureVoxelSizeUv=K.clone(i.voxelSizeUv,e.megatextureVoxelSizeUv),e.megatextureSliceSizeUv=K.clone(i.sliceSizeUv,e.megatextureSliceSizeUv),e.megatextureTileSizeUv=K.clone(i.regionSizeUv,e.megatextureTileSizeUv)}function RXe(t,e){let n=e.shaderDefines,i=Object.keys(n).some(o=>n[o]!==t._shapeDefinesOld[o]);return i&&(t._shapeDefinesOld=be(n,!0)),i}function WXe(t,e){if(!c(t)||!c(e))return 0;let n=e.currentTime,i,o=t.indexOf(n);o>=0?i=t.get(o):(o=~o,o===t.length?(o=t.length-1,i=t.get(o),n=i.stop):(i=t.get(o),n=i.start));let a=rt.secondsDifference(i.stop,i.start),l=rt.secondsDifference(n,i.start)/a;return o+l}function fXe(t,e){let n=t.clippingPlanes;if(!c(n))return!1;n.update(e);let{clippingPlanesState:i,enabled:o}=n;if(o){let a=t._uniforms;a.clippingPlanesTexture=n.texture,a.clippingPlanesMatrix=L.transpose(L.multiplyTransformation(L.inverse(n.modelMatrix,a.clippingPlanesMatrix),t._transformPositionUvToWorld,a.clippingPlanesMatrix),a.clippingPlanesMatrix)}return t._clippingPlanesState===i&&t._clippingPlanesEnabled===o?!1:(t._clippingPlanesState=i,t._clippingPlanesEnabled=o,!0)}Kb.prototype.isDestroyed=function(){return!1};Kb.prototype.destroy=function(){let t=this._drawCommand;c(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy());let e=this._drawCommandPick;return c(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),At(this)};var YQt=new Array(new Rt(-1,-1,-1,1),new Rt(1,-1,-1,1),new Rt(-1,1,-1,1),new Rt(1,1,-1,1),new Rt(-1,-1,1,1),new Rt(1,-1,1,1),new Rt(-1,1,1,1),new Rt(1,1,1,1)),FXe=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),UXe=new Array(new Rt,new Rt,new Rt,new Rt,new Rt,new Rt,new Rt,new Rt);function GXe(t,e,n){let i=L.fromRotationTranslation(t.halfAxes,t.center,sXe),o=L.multiply(e,i,lXe),a=+Number.MAX_VALUE,s=-Number.MAX_VALUE,l=+Number.MAX_VALUE,r=-Number.MAX_VALUE,d,m=UXe,h=YQt.length;for(d=0;d<h;d++)L.multiplyByVector(o,YQt[d],m[d]);for(d=0;d<h;d++){let Z=m[d];if(Z.z>=-Z.w){let b=Z.x/Z.w,u=Z.y/Z.w;a=Math.min(a,b),s=Math.max(s,b),l=Math.min(l,u),r=Math.max(r,u)}else for(let b=0;b<3;b++){let u=FXe[d*3+b],F=m[u];if(F.z>=-F.w){let U=Z.z+Z.w,G=F.z+F.w,A=U/(U-G),T=Rt.lerp(Z,F,A,$xe),g=T.x/T.w,C=T.y/T.w;a=Math.min(a,g),s=Math.max(s,g),l=Math.min(l,C),r=Math.max(r,C)}}}return a=k.clamp(a,-1,1),l=k.clamp(l,-1,1),s=k.clamp(s,-1,1),r=k.clamp(r,-1,1),n=Rt.fromElements(a,l,s,r,n),n}var Vst=3e7,AXe=new p(Vst,0,0),TXe=new p(0,Vst,0),SXe=new p(0,0,Vst);function gXe(t,e){let n=t._traversal,i=t._debugPolylines;i.removeAll();function o(r,d,m,h){i.add({positions:[r,d],width:h,material:eo.fromType("Color",{color:m})})}function a(r,d,m){let h=r.computeCorners();o(h[0],h[1],d,m),o(h[2],h[3],d,m),o(h[4],h[5],d,m),o(h[6],h[7],d,m),o(h[0],h[2],d,m),o(h[4],h[6],d,m),o(h[1],h[3],d,m),o(h[5],h[7],d,m),o(h[0],h[4],d,m),o(h[2],h[6],d,m),o(h[1],h[5],d,m),o(h[3],h[7],d,m)}function s(r){if(!n.isRenderable(r))return;let d=r.level,h=Math.max(1,5/Math.pow(2,d)),b=[v.RED,v.LIME,v.BLUE][d%3];if(a(r.orientedBoundingBox,b,h),c(r.children))for(let u=0;u<8;u++)s(r.children[u])}a(t._shape.orientedBoundingBox,v.WHITE,5),s(n.rootNode);let l=10;o(p.ZERO,AXe,v.RED,l),o(p.ZERO,TXe,v.LIME,l),o(p.ZERO,SXe,v.BLUE,l),i.update(e)}Kb.DefaultCustomShader=new JS({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +`;function PYe(t){let e=new EG;this.shaderBuilder=e;let n=t._customShader,i=ze(t._uniformMap,n.uniformMap);t._uniformMap=i;let o=n.uniforms;for(let u in o)if(o.hasOwnProperty(u)){let R=o[u];e.addUniform(R.type,u,Xt.FRAGMENT)}e.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",Xt.FRAGMENT),this.uniformMap=i;let a=t._clippingPlanes,s=c(a)&&a.enabled?a.length:0;this.clippingPlanes=a,this.clippingPlanesLength=s,e.addVertexLines([X9]),e.addFragmentLines([n.fragmentShaderText,"#line 0",v9,Y9,J9,K9]),s>0&&(e.addDefine("CLIPPING_PLANES",void 0,Xt.FRAGMENT),e.addDefine("CLIPPING_PLANES_COUNT",s,Xt.FRAGMENT),a.unionClippingRegions&&e.addDefine("CLIPPING_PLANES_UNION",void 0,Xt.FRAGMENT),e.addFragmentLines([M9])),t._depthTest&&(e.addDefine("DEPTH_TEST",void 0,Xt.FRAGMENT),e.addFragmentLines([L9]));let l=t._provider.shape;l==="BOX"?e.addFragmentLines([H9,_9,kT]):l==="CYLINDER"?e.addFragmentLines([w9,w1,D9,kT]):l==="ELLIPSOID"&&(e.addDefine("SHAPE_ELLIPSOID",void 0,Xt.FRAGMENT),e.addFragmentLines([P9,w1,O9,kT])),e.addFragmentLines([x9]);let r=t._shape,d=r.shaderDefines;for(let u in d)if(d.hasOwnProperty(u)){let R=d[u];c(R)&&(R=R===!0?void 0:R,e.addDefine(u,R,Xt.FRAGMENT))}let m=r.shaderMaximumIntersectionsLength;s>0&&(e.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",m,Xt.FRAGMENT),s===1?m+=1:a.unionClippingRegions?m+=2:m+=1),t._depthTest&&(e.addDefine("DEPTH_INTERSECTION_INDEX",m,Xt.FRAGMENT),m+=1),e.addDefine("INTERSECTION_COUNT",m,Xt.FRAGMENT),(!p.equals(t.paddingBefore,p.ZERO)||!p.equals(t.paddingAfter,p.ZERO))&&e.addDefine("PADDING",void 0,Xt.FRAGMENT),t._useLogDepth&&e.addDefine("LOG_DEPTH_READ_ONLY",void 0,Xt.FRAGMENT),t._jitter&&e.addDefine("JITTER",void 0,Xt.FRAGMENT),t._nearestSampling&&e.addDefine("NEAREST_SAMPLING",void 0,Xt.FRAGMENT);let h=t._traversal;e.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,Xt.FRAGMENT)}var z9=PYe;var vYo=b(W(),1);function vYe(t,e){let{shaderBuilder:n}=t,{names:i,types:o,componentTypes:a,minimumValues:s,maximumValues:l}=e._provider,r=o.length,d=c(s)&&c(l);n.addDefine("METADATA_COUNT",r,Xt.FRAGMENT),d&&n.addDefine("STATISTICS",void 0,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],Z=`PropertyStatistics_${J}`,E=`PropertyStatistics_${J}`;n.addStruct(Z,E,Xt.FRAGMENT);let I=Aj(M);n.addStructField(Z,I,"min"),n.addStructField(Z,I,"max")}let m="Statistics",h="Statistics",u="statistics";n.addStruct(m,h,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=`PropertyStatistics_${J}`,Z=J;n.addStructField(m,M,Z)}let R="Metadata",V="Metadata",F="metadata";n.addStruct(R,V,Xt.FRAGMENT),n.addStructField(R,h,u);for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],Z=Aj(M);n.addStructField(R,Z,J)}for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],Z=zYe(M),E=`VoxelProperty_${J}`,I=`VoxelProperty_${J}`;n.addStruct(E,I,Xt.FRAGMENT),n.addStructField(E,Z,"partialDerivativeLocal"),n.addStructField(E,Z,"partialDerivativeWorld"),n.addStructField(E,Z,"partialDerivativeView"),n.addStructField(E,Z,"partialDerivativeValid")}let U="Voxel",G="Voxel",A="voxel";n.addStruct(U,G,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=`VoxelProperty_${J}`;n.addStructField(U,M,J)}n.addStructField(U,"vec3","positionEC"),n.addStructField(U,"vec3","positionUv"),n.addStructField(U,"vec3","positionShapeUv"),n.addStructField(U,"vec3","positionUvLocal"),n.addStructField(U,"vec3","viewDirUv"),n.addStructField(U,"vec3","viewDirWorld"),n.addStructField(U,"vec3","surfaceNormal"),n.addStructField(U,"float","travelDistance"),n.addStructField(U,"int","stepCount"),n.addStructField(U,"int","tileIndex"),n.addStructField(U,"int","sampleIndex");let S="FragmentInput";n.addStruct(S,"FragmentInput",Xt.FRAGMENT),n.addStructField(S,V,F),n.addStructField(S,G,A);let C="Properties",y="Properties",Y="properties";n.addStruct(C,y,Xt.FRAGMENT);for(let Q=0;Q<r;Q++){let J=i[Q],M=o[Q],Z=Aj(M);n.addStructField(C,Z,J)}{let Q="clearProperties";n.addFunction(Q,`${y} clearProperties()`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J],Z=o[J],E=a[J],I=Aj(Z,E);n.addFunctionLines(Q,[`${Y}.${M} = ${I}(0.0);`])}n.addFunctionLines(Q,[`return ${Y};`])}{let Q="sumProperties";n.addFunction(Q,`${y} sumProperties(${y} propertiesA, ${y} propertiesB)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`${Y}.${M} = propertiesA.${M} + propertiesB.${M};`])}n.addFunctionLines(Q,[`return ${Y};`])}{let Q="scaleProperties";n.addFunction(Q,`${y} scaleProperties(${y} ${Y}, float scale)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} scaledProperties = ${Y};`]);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`scaledProperties.${M} *= scale;`])}n.addFunctionLines(Q,["return scaledProperties;"])}{let Q="mixProperties";n.addFunction(Q,`${y} mixProperties(${y} propertiesA, ${y} propertiesB, float mixFactor)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`${Y}.${M} = mix(propertiesA.${M}, propertiesB.${M}, mixFactor);`])}n.addFunctionLines(Q,[`return ${Y};`])}{let Q="copyPropertiesToMetadata";n.addFunction(Q,`void copyPropertiesToMetadata(in ${y} ${Y}, inout ${V} ${F})`,Xt.FRAGMENT);for(let J=0;J<r;J++){let M=i[J];n.addFunctionLines(Q,[`${F}.${M} = ${Y}.${M};`])}}if(d){let Q="setStatistics";n.addFunction(Q,`void setStatistics(inout ${h} ${u})`,Xt.FRAGMENT);for(let J=0;J<r;J++){let M=i[J],Z=o[J],E=Nn.getComponentCount(Z);for(let I=0;I<E;I++){let B=jYe(Z,I),X=s[J][I],_=l[J][I];n.addFunctionLines(Q,[`${u}.${M}.min${B} = ${VQt(X)};`,`${u}.${M}.max${B} = ${VQt(_)};`])}}}{let Q="getPropertiesFromMegatextureAtUv";n.addFunction(Q,`${y} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,Xt.FRAGMENT),n.addFunctionLines(Q,[`${y} ${Y};`]);for(let J=0;J<r;J++){let M=i[J],Z=o[J],E=a[J],I=KYe(Z,E);n.addFunctionLines(Q,[`properties.${M} = texture(u_megatextureTextures[${J}], texcoord)${I};`])}n.addFunctionLines(Q,[`return ${Y};`])}}function Aj(t){if(t===Nn.SCALAR)return"float";if(t===Nn.VEC2)return"vec2";if(t===Nn.VEC3)return"vec3";if(t===Nn.VEC4)return"vec4"}function KYe(t){if(t===Nn.SCALAR)return".r";if(t===Nn.VEC2)return".ra";if(t===Nn.VEC3)return".rgb";if(t===Nn.VEC4)return""}function zYe(t){if(t===Nn.SCALAR)return"vec3";if(t===Nn.VEC2)return"mat2";if(t===Nn.VEC3)return"mat3";if(t===Nn.VEC4)return"mat4"}function VQt(t){let e=t.toString();return e.indexOf(".")===-1&&(e=`${t}.0`),e}function jYe(t,e){return t===Nn.SCALAR?"":`[${e}]`}var j9=vYe;function qYe(t,e){let n=new z9(t);j9(n,t);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:a}=n;if(a>0){let G="getClippingPlane",A=dW(o,e),S=0,g=A.indexOf(")")+1,C=A.indexOf("{",g)+1,y=A.indexOf("}",C),Y=A.slice(S,g),Q=A.slice(C,y);i.addFunction(G,Y,Xt.FRAGMENT),i.addFunctionLines(G,[Q])}let s=i.clone();s.addDefine("PICKING",void 0,Xt.FRAGMENT);let l=i.clone();l.addDefine("PICKING_VOXEL",void 0,Xt.FRAGMENT);let r=i.buildShaderProgram(e),d=s.buildShaderProgram(e),m=l.buildShaderProgram(e),h=he.fromCache({cull:{enabled:!0,face:so.BACK},depthTest:{enabled:!1},depthMask:!1,blending:Pn.PRE_MULTIPLIED_ALPHA_BLEND}),u=e.getViewportQuadVertexArray(),R=t._depthTest,V=new Ee({vertexArray:u,primitiveType:le.TRIANGLES,renderState:h,shaderProgram:r,uniformMap:n.uniformMap,modelMatrix:t._compoundModelMatrix,pass:Pt.VOXELS,executeInClosestFrustum:!0,owner:this,cull:R,occlude:R}),F=Ee.shallowClone(V,new Ee);F.shaderProgram=d,F.pickOnly=!0;let U=Ee.shallowClone(V,new Ee);if(U.shaderProgram=m,U.pickOnly=!0,c(t._drawCommand)){let G=t._drawCommand;G.shaderProgram=G.shaderProgram&&G.shaderProgram.destroy()}if(c(t._drawCommandPick)){let G=t._drawCommandPick;G.shaderProgram=G.shaderProgram&&G.shaderProgram.destroy()}if(c(t._drawCommandPickVoxel)){let G=t._drawCommandPickVoxel;G.shaderProgram=G.shaderProgram&&G.shaderProgram.destroy()}t._drawCommand=V,t._drawCommandPick=F,t._drawCommandPickVoxel=U}var q9=qYe;var Oxo=b(W(),1);var Zxo=b(W(),1);function ih(){this.orientedBoundingBox=new ci,this.boundingSphere=new Ft,this.boundTransform=new L,this.shapeTransform=new L,this._minBounds=p.clone(ih.DefaultMinBounds,new p),this._maxBounds=p.clone(ih.DefaultMaxBounds,new p),this.shaderUniforms={renderMinBounds:new p,renderMaxBounds:new p,boxUvToShapeUvScale:new p,boxUvToShapeUvTranslate:new p},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var $Ye=new p,lst=new p,txe=new ot,exe=new p,nxe=new p,ixe=new p,oxe=new p,uQt=L.fromRotationTranslation(ot.fromUniformScale(.5,new ot),new p(.5,.5,.5),new L);ih.prototype.update=function(t,e,n,i,o){i=f(i,ih.DefaultMinBounds),o=f(o,ih.DefaultMaxBounds);let a=ih.DefaultMinBounds,s=ih.DefaultMaxBounds;e=this._minBounds=p.clamp(e,a,s,this._minBounds),n=this._maxBounds=p.clamp(n,a,s,this._maxBounds),i=p.clamp(i,a,s,exe),o=p.clamp(o,a,s,nxe);let l=p.clamp(e,i,o,ixe),r=p.clamp(n,i,o,oxe),d=L.getScale(t,lst);if(l.x>r.x||l.y>r.y||l.z>r.z||(l.x===r.x)+(l.y===r.y)+(l.z===r.z)>=2||i.x>o.x||i.y>o.y||i.z>o.z||d.x===0||d.y===0||d.z===0)return!1;this.shapeTransform=L.clone(t,this.shapeTransform),this.orientedBoundingBox=dst(l,r,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=L.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=Ft.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:m,shaderDefines:h}=this;for(let V in h)h.hasOwnProperty(V)&&(h[V]=void 0);let u=!p.equals(e,a)||!p.equals(n,s),R=0;if(h.BOX_INTERSECTION_INDEX=R,R+=1,m.renderMinBounds=L.multiplyByPoint(uQt,l,m.renderMinBounds),m.renderMaxBounds=L.multiplyByPoint(uQt,r,m.renderMaxBounds),u){h.BOX_HAS_SHAPE_BOUNDS=!0;let V=e,F=n;m.boxUvToShapeUvScale=p.fromElements(2/(V.x===F.x?1:F.x-V.x),2/(V.y===F.y?1:F.y-V.y),2/(V.z===F.z?1:F.z-V.z),m.boxUvToShapeUvScale),m.boxUvToShapeUvTranslate=p.fromElements(-m.boxUvToShapeUvScale.x*(V.x*.5+.5),-m.boxUvToShapeUvScale.y*(V.y*.5+.5),-m.boxUvToShapeUvScale.z*(V.z*.5+.5),m.boxUvToShapeUvTranslate)}return this.shaderMaximumIntersectionsLength=R,!0};var Sj=new p,rst=new p;ih.prototype.computeOrientedBoundingBoxForTile=function(t,e,n,i,o){let a=this._minBounds,s=this._maxBounds,l=1/Math.pow(2,t),r=p.fromElements(k.lerp(a.x,s.x,l*e),k.lerp(a.y,s.y,l*n),k.lerp(a.z,s.z,l*i),Sj),d=p.fromElements(k.lerp(a.x,s.x,l*(e+1)),k.lerp(a.y,s.y,l*(n+1)),k.lerp(a.z,s.z,l*(i+1)),rst);return dst(r,d,this.shapeTransform,o)};var ZQt=new p;ih.prototype.computeOrientedBoundingBoxForSample=function(t,e,n,i){let o=1/Math.pow(2,t.level),a=p.divideComponents(p.ONE,e,ZQt),s=p.multiplyByScalar(a,o,ZQt),l=p.multiplyByScalar(p.fromElements(t.x+n.x,t.y+n.y,t.z+n.z,Sj),o,Sj),r=p.add(l,s,rst),d=this._minBounds,m=this._maxBounds,h=p.fromElements(k.lerp(d.x,m.x,l.x),k.lerp(d.y,m.y,l.y),k.lerp(d.z,m.z,l.z),Sj),u=p.fromElements(k.lerp(d.x,m.x,r.x),k.lerp(d.y,m.y,r.y),k.lerp(d.z,m.z,r.z),rst);return dst(h,u,this.shapeTransform,i)};ih.DefaultMinBounds=Object.freeze(new p(-1,-1,-1));ih.DefaultMaxBounds=Object.freeze(new p(1,1,1));function dst(t,e,n,i){let o=ih.DefaultMinBounds,a=ih.DefaultMaxBounds;if(p.equals(t,o)&&p.equals(e,a))i.center=L.getTranslation(n,i.center),i.halfAxes=L.getMatrix3(n,i.halfAxes);else{let l=L.getScale(n,lst),r=p.midpoint(t,e,$Ye);i.center=L.multiplyByPoint(n,r,i.center),l=p.fromElements(l.x*.5*(e.x-t.x),l.y*.5*(e.y-t.y),l.z*.5*(e.z-t.z),lst);let d=L.getRotation(n,txe);i.halfAxes=ot.setScale(d,l,i.halfAxes)}return i}var PR=ih;var gxo=b(W(),1);function Cl(){this.orientedBoundingBox=new ci,this.boundingSphere=new Ft,this.boundTransform=new L,this.shapeTransform=new L,this._minimumRadius=Cl.DefaultMinBounds.x,this._maximumRadius=Cl.DefaultMaxBounds.x,this._minimumHeight=Cl.DefaultMinBounds.y,this._maximumHeight=Cl.DefaultMaxBounds.y,this._minimumAngle=Cl.DefaultMinBounds.z,this._maximumAngle=Cl.DefaultMaxBounds.z,this.shaderUniforms={cylinderRenderHeightMinMax:new K,cylinderRenderRadiusMinMax:new K,cylinderRenderAngleMinMax:new K,cylinderUvToShapeUvRadius:new K,cylinderUvToShapeUvHeight:new K,cylinderUvToShapeUvAngle:new K,cylinderShapeUvAngleMinMax:new K,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var fQt=new p;Cl.prototype.update=function(t,e,n,i,o){i=f(i,Cl.DefaultMinBounds),o=f(o,Cl.DefaultMaxBounds);let a=Cl.DefaultMinBounds.x,s=Cl.DefaultMaxBounds.x,l=Cl.DefaultMinBounds.y,r=Cl.DefaultMaxBounds.y,d=Cl.DefaultMinBounds.z,m=Cl.DefaultMaxBounds.z,h=m-d,u=.5*h,R=k.EPSILON10,V=k.EPSILON3,F=k.EPSILON10,U=k.clamp(e.x,a,s),G=k.clamp(n.x,a,s),A=k.clamp(i.x,a,s),S=k.clamp(o.x,a,s),g=Math.max(U,A),C=Math.min(G,S),y=k.clamp(e.y,l,r),Y=k.clamp(n.y,l,r),Q=k.clamp(i.y,l,r),J=k.clamp(o.y,l,r),M=Math.max(y,Q),Z=Math.min(Y,J),E=k.negativePiToPi(e.z),I=k.negativePiToPi(n.z),B=k.negativePiToPi(i.z),X=k.negativePiToPi(o.z),_=Math.max(E,B),P=Math.min(I,X),w=L.getScale(t,fQt);if(C===0||g>C||M>Z||k.equalsEpsilon(w.x,0,void 0,R)||k.equalsEpsilon(w.y,0,void 0,R)||k.equalsEpsilon(w.z,0,void 0,R))return!1;this._minimumRadius=U,this._maximumRadius=G,this._minimumHeight=y,this._maximumHeight=Y,this._minimumAngle=E,this._maximumAngle=I,this.shapeTransform=L.clone(t,this.shapeTransform),this.orientedBoundingBox=mst(g,C,M,Z,_,P,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=L.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=Ft.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let nt=U===a&&G===s,$=y===l&&Y===r,dt=I<E,q=I-E+dt*h,at=q>u+F&&q<h-F,st=q<u-F,Et=q>=u-F&&q<=u+F,Qt=at||st||Et,Wt=k.equalsEpsilon(E,d,void 0,V),Nt=k.equalsEpsilon(I,m,void 0,V),kt=g===a,Mt=P<_,qt=P-_+Mt*h,ie=qt>=u-F&&qt<h-F,oe=qt>F&&qt<u-F,He=qt<=F,rn=ie||oe||He,{shaderUniforms:de,shaderDefines:zt}=this;for(let Ve in zt)zt.hasOwnProperty(Ve)&&(zt[Ve]=void 0);let ke=0;if(zt.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=ke,ke+=1,kt||(zt.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,zt.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=ke,ke+=1),de.cylinderRenderRadiusMinMax=K.fromElements(g,C,de.cylinderRenderRadiusMinMax),g===C&&(zt.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!nt){zt.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let Ve=G-U,We=0,Vn=1;Ve!==0&&(We=1/Ve,Vn=-U/Ve),de.cylinderUvToShapeUvRadius=K.fromElements(We,Vn,de.cylinderUvToShapeUvRadius)}if(!$){zt.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let Ve=Y-y,We=0,Vn=1;Ve!==0&&(We=2/Ve,Vn=-(y+1)/Ve),de.cylinderUvToShapeUvHeight=K.fromElements(We,Vn,de.cylinderUvToShapeUvHeight)}if(de.cylinderRenderHeightMinMax=K.fromElements(M,Z,de.cylinderRenderHeightMinMax),dt&&(zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),rn&&(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,zt.CYLINDER_INTERSECTION_INDEX_ANGLE=ke,ie?(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,ke+=1):oe?(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,ke+=2):He&&(zt.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,ke+=2),de.cylinderRenderAngleMinMax=K.fromElements(_,P,de.cylinderRenderAngleMinMax)),Qt){zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,Wt&&(zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),Nt&&(zt.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let Ve=(E-d)/h,We=(I-d)/h,Vn=1-q/h;if(de.cylinderShapeUvAngleMinMax=K.fromElements(Ve,We,de.cylinderShapeUvAngleMinMax),de.cylinderShapeUvAngleRangeZeroMid=(We+.5*Vn)%1,q<=F)de.cylinderUvToShapeUvAngle=K.fromElements(0,1,de.cylinderUvToShapeUvAngle);else{let Ct=h/q,_t=-(E-d)/q;de.cylinderUvToShapeUvAngle=K.fromElements(Ct,_t,de.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=ke,!0};Cl.prototype.computeOrientedBoundingBoxForTile=function(t,e,n,i,o){let a=this._minimumRadius,s=this._maximumRadius,l=this._minimumHeight,r=this._maximumHeight,d=this._minimumAngle,m=this._maximumAngle,h=1/Math.pow(2,t),u=k.lerp(a,s,e*h),R=k.lerp(a,s,(e+1)*h),V=k.lerp(l,r,n*h),F=k.lerp(l,r,(n+1)*h),U=k.lerp(d,m,i*h),G=k.lerp(d,m,(i+1)*h);return mst(u,R,V,F,U,G,this.shapeTransform,o)};var RQt=new p,bQt=new p,axe=new p;Cl.prototype.computeOrientedBoundingBoxForSample=function(t,e,n,i){let o=1/Math.pow(2,t.level),a=p.divideComponents(p.ONE,e,RQt),s=p.multiplyByScalar(a,o,RQt),l=p.multiplyByScalar(p.fromElements(t.x+n.x,t.y+n.y,t.z+n.z,bQt),o,bQt),r=p.add(l,s,axe),d=this._minimumRadius,m=this._maximumRadius,h=this._minimumHeight,u=this._maximumHeight,R=this._minimumAngle,V=this._maximumAngle,F=k.lerp(d,m,l.x),U=k.lerp(d,m,r.x),G=k.lerp(h,u,l.y),A=k.lerp(h,u,r.y),S=k.lerp(R,V,l.z),g=k.lerp(R,V,r.z);return mst(F,U,G,A,S,g,this.shapeTransform,i)};Cl.DefaultMinBounds=Object.freeze(new p(0,-1,-k.PI));Cl.DefaultMaxBounds=Object.freeze(new p(1,1,+k.PI));var sxe=5,lxe=new Array(sxe),rxe=new p,dxe=new ot,cxe=new L,mxe=new L,hxe=new L,cst=new L,pxe=new p,Vxe=new p,uxe=new p,FQt=new Array(8);for(let t=0;t<8;t++)FQt[t]=new p;function WQt(t,e,n){return Math.abs(bt.dot(t,e))<n}function Zxe(t){let e=L.getColumn(t,0,pxe),n=L.getColumn(t,1,Vxe),i=L.getColumn(t,2,uxe),o=k.EPSILON4;return WQt(e,n,o)&&WQt(n,i,o)}function Rxe(t,e){let n=FQt;p.fromElements(-.5,-.5,-.5,n[0]),p.fromElements(-.5,-.5,.5,n[1]),p.fromElements(-.5,.5,-.5,n[2]),p.fromElements(-.5,.5,.5,n[3]),p.fromElements(.5,-.5,-.5,n[4]),p.fromElements(.5,-.5,.5,n[5]),p.fromElements(.5,.5,-.5,n[6]),p.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)L.multiplyByPoint(t,n[i],n[i]);return ci.fromPoints(n,e)}function mst(t,e,n,i,o,a,s,l){let r=Cl.DefaultMinBounds,d=Cl.DefaultMaxBounds,m=r.x,h=d.x,u=r.y,R=d.y,V=r.z,F=d.z;if(t===m&&e===h&&n===u&&i===R&&o===V&&a===F)return l.center=L.getTranslation(s,l.center),l.halfAxes=L.getMatrix3(s,l.halfAxes),l;a<o&&(a+=k.TWO_PI);let G=a-o,A=o+G*.5,S=lxe,g=0;S[g++]=o,S[g++]=a,S[g++]=A,G>k.PI&&(S[g++]=A-k.PI_OVER_TWO,S[g++]=A+k.PI_OVER_TWO);let C=1,y=1,Y=-1,Q=-1;for(let dt=0;dt<g;++dt){let q=S[dt]-A,at=Math.cos(q),st=Math.sin(q),Et=at*t,Qt=st*t,Wt=at*e,Nt=st*e;C=Math.min(C,Et),y=Math.min(y,Qt),C=Math.min(C,Wt),y=Math.min(y,Nt),Y=Math.max(Y,Et),Q=Math.max(Q,Qt),Y=Math.max(Y,Wt),Q=Math.max(Q,Nt)}let J=Y-C,M=Q-y,Z=i-n,E=(C+Y)*.5,I=(y+Q)*.5,B=(n+i)*.5,X=p.fromElements(E,I,B,rxe),_=ot.fromRotationZ(A,dxe),P=p.fromElements(J,M,Z,fQt),w=L.fromScale(P,hxe),z=L.fromRotation(_,mxe),H=L.fromTranslation(X,cxe),nt=L.multiplyTransformation(z,L.multiplyTransformation(H,w,cst),cst),$=L.multiplyTransformation(s,nt,cst);return Zxe($)?ci.fromTransformation($,l):Rxe($,l)}var vR=Cl;var Jxo=b(W(),1);function AW(){this.orientedBoundingBox=new ci,this.boundingSphere=new Ft,this.boundTransform=new L,this.shapeTransform=new L,this._rectangle=new Gt,this._minimumHeight=AW.DefaultMinBounds.z,this._maximumHeight=AW.DefaultMaxBounds.z,this._ellipsoid=new mt,this._translation=new p,this._rotation=new ot,this.shaderUniforms={ellipsoidRadiiUv:new p,eccentricitySquared:0,evoluteScale:new K,ellipsoidInverseRadiiSquaredUv:new p,ellipsoidRenderLongitudeMinMax:new K,ellipsoidShapeUvLongitudeMinMaxMid:new p,ellipsoidUvToShapeUvLongitude:new K,ellipsoidUvToShapeUvLatitude:new K,ellipsoidRenderLatitudeSinMinMax:new K,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new K},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var bxe=new p,Wxe=new p,fxe=new p,Fxe=new p,Uxe=new p,Gxe=new p,Axe=new p,Sxe=new p,Txe=new ot,UQt=new p,GQt=new p,gxe=new Gt;AW.prototype.update=function(t,e,n,i,o){let{DefaultMinBounds:a,DefaultMaxBounds:s}=AW;i=f(i,a),o=f(o,s);let l=k.EPSILON10,r=k.EPSILON3,d=k.EPSILON10,m=k.EPSILON10,h=k.EPSILON3,u=L.getScale(t,Sxe),R=p.clone(a,bxe);R.z=-p.minimumComponent(u);let V=p.clamp(e,R,s,Wxe),F=p.clamp(n,R,s,fxe),U=p.clamp(i,R,s,Fxe),G=p.clamp(o,R,s,Uxe),A=p.maximumByComponent(V,U,Gxe),S=p.minimumByComponent(F,G,Axe),g=p.add(u,p.fromElements(F.z,F.z,F.z,UQt),UQt),C=p.maximumComponent(g),y=p.add(u,p.fromElements(S.z,S.z,S.z,GQt),GQt);if(A.y>S.y||A.y===s.y||S.y===a.y||A.z>S.z||k.equalsEpsilon(y,p.ZERO,void 0,l))return!1;this._rectangle=Gt.fromRadians(V.x,V.y,F.x,F.y),this._translation=L.getTranslation(t,this._translation),this._rotation=L.getRotation(t,this._rotation),this._ellipsoid=mt.fromCartesian3(u,this._ellipsoid),this._minimumHeight=V.z,this._maximumHeight=F.z;let Y=Gt.fromRadians(A.x,A.y,S.x,S.y,gxe);this.orientedBoundingBox=hst(Y,A.z,S.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=L.fromRotationTranslation(ot.setScale(this._rotation,g,Txe),this._translation,this.shapeTransform),this.boundTransform=L.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=Ft.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let Q=s.x-a.x,J=.5*Q,M=S.x<A.x,Z=S.x-A.x+M*Q,E=Z<=d,I=Z>=J-d&&Z<Q-d,B=Z>d&&Z<J-d,X=E||I||B,_=F.x<V.x,P=F.x-V.x+_*Q,w=P>J+d&&P<Q-d,z=P>=J-d&&P<=J+d,H=P<J-d,nt=w||z||H,$=S.y<-h,dt=S.y>=-h&&S.y<=+h,q=S.y>+h&&S.y<s.y-m,at=$||dt||q,st=A.y>a.y+m&&A.y<-h,Et=A.y>=-h&&A.y<=+h,Qt=A.y>+h,Wt=st||Et||Qt,Nt=at||Wt,kt=F.y-V.y,Mt=F.y<-h,qt=F.y>=-h&&F.y<=+h,ie=F.y>+h&&F.y<s.y-m,oe=Mt||qt||ie,He=V.y>a.y+m&&V.y<-h,rn=V.y>=-h&&V.y<=+h,de=V.y>+h,ke=oe||(He||rn||de),{shaderUniforms:Ve,shaderDefines:We}=this;for(let oo in We)We.hasOwnProperty(oo)&&(We[oo]=void 0);Ve.ellipsoidRadiiUv=p.divideByScalar(g,C,Ve.ellipsoidRadiiUv);let{x:Vn,z:Ct}=Ve.ellipsoidRadiiUv,_t=Ct/Vn;Ve.eccentricitySquared=1-_t*_t,Ve.evoluteScale=K.fromElements((Vn*Vn-Ct*Ct)/Vn,(Ct*Ct-Vn*Vn)/Ct,Ve.evoluteScale),Ve.ellipsoidInverseRadiiSquaredUv=p.divideComponents(p.ONE,p.multiplyComponents(Ve.ellipsoidRadiiUv,Ve.ellipsoidRadiiUv,Ve.ellipsoidInverseRadiiSquaredUv),Ve.ellipsoidInverseRadiiSquaredUv);let Je=0;We.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Je,Je+=1,We.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Je,Je+=1,Ve.clipMinMaxHeight=K.fromElements((A.z-F.z)/C,(S.z-F.z)/C,Ve.clipMinMaxHeight);let xe=(F.z-V.z)/C;if(Ve.ellipsoidInverseHeightDifferenceUv=1/xe,V.z===F.z&&(Ve.ellipsoidInverseHeightDifferenceUv=0),X&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,We.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Je,I?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Je+=1):B?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Je+=2):E&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Je+=2),Ve.ellipsoidRenderLongitudeMinMax=K.fromElements(A.x,S.x,Ve.ellipsoidRenderLongitudeMinMax)),nt)if(We.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,F.x<V.x&&(We.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),P<=d)Ve.ellipsoidUvToShapeUvLongitude=K.fromElements(0,1,Ve.ellipsoidUvToShapeUvLongitude);else{let ea=Q/P,gs=-(V.x-a.x)/P;Ve.ellipsoidUvToShapeUvLongitude=K.fromElements(ea,gs,Ve.ellipsoidUvToShapeUvLongitude)}if(X){let oo=k.equalsEpsilon(A.x,a.x,void 0,r),ea=k.equalsEpsilon(S.x,s.x,void 0,r);oo&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),ea&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let gs=(V.x-a.x)/Q,is=(F.x-a.x)/Q,ja=(S.x-a.x)/Q,qn=1-Z/Q,ae=(ja+.5*qn)%1;Ve.ellipsoidShapeUvLongitudeMinMaxMid=p.fromElements(gs,is,ae,Ve.ellipsoidShapeUvLongitudeMinMaxMid)}if(Nt&&(Wt&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,We.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Je,st?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Je+=1):Et?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Je+=1):Qt&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Je+=2)),at&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,We.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Je,$?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Je+=2):dt?(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Je+=1):q&&(We.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Je+=1)),Ve.ellipsoidRenderLatitudeSinMinMax=K.fromElements(Math.sin(A.y),Math.sin(S.y),Ve.ellipsoidRenderLatitudeSinMinMax)),ke)if(We.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,kt<m)Ve.ellipsoidUvToShapeUvLatitude=K.fromElements(0,1,Ve.ellipsoidUvToShapeUvLatitude);else{let ea=(s.y-a.y)/kt,gs=(a.y-V.y)/kt;Ve.ellipsoidUvToShapeUvLatitude=K.fromElements(ea,gs,Ve.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Je,!0};var TQt=new Gt;AW.prototype.computeOrientedBoundingBoxForTile=function(t,e,n,i,o){let a=1/Math.pow(2,t),s=e*a,l=(e+1)*a,r=n*a,d=(n+1)*a,m=i*a,h=(i+1)*a,u=Gt.subsection(this._rectangle,s,r,l,d,TQt),R=k.lerp(this._minimumHeight,this._maximumHeight,m),V=k.lerp(this._minimumHeight,this._maximumHeight,h);return hst(u,R,V,this._ellipsoid,this._translation,this._rotation,o)};var AQt=new p,SQt=new p,Exe=new p;AW.prototype.computeOrientedBoundingBoxForSample=function(t,e,n,i){let o=1/Math.pow(2,t.level),a=p.divideComponents(p.ONE,e,AQt),s=p.multiplyByScalar(a,o,AQt),l=p.multiplyByScalar(p.fromElements(t.x+n.x,t.y+n.y,t.z+n.z,SQt),o,SQt),r=p.add(l,s,Exe),d=Gt.subsection(this._rectangle,l.x,l.y,r.x,r.y,TQt),m=k.lerp(this._minimumHeight,this._maximumHeight,l.z),h=k.lerp(this._minimumHeight,this._maximumHeight,r.z);return hst(d,m,h,this._ellipsoid,this._translation,this._rotation,i)};function hst(t,e,n,i,o,a,s){return s=ci.fromRectangle(t,e,n,i,s),s.center=p.add(s.center,o,s.center),s.halfAxes=ot.multiply(s.halfAxes,a,s.halfAxes),s}AW.DefaultMinBounds=Object.freeze(new p(-k.PI,-k.PI_OVER_TWO,-mt.WGS84.minimumRadius));AW.DefaultMaxBounds=Object.freeze(new p(k.PI,k.PI_OVER_TWO,10*mt.WGS84.maximumRadius));var YT=AW;var dp={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};dp.getMinBounds=function(t){switch(t){case dp.BOX:return PR.DefaultMinBounds;case dp.ELLIPSOID:return YT.DefaultMinBounds;case dp.CYLINDER:return vR.DefaultMinBounds}};dp.getMaxBounds=function(t){switch(t){case dp.BOX:return PR.DefaultMaxBounds;case dp.ELLIPSOID:return YT.DefaultMaxBounds;case dp.CYLINDER:return vR.DefaultMaxBounds}};dp.getShapeConstructor=function(t){switch(t){case dp.BOX:return PR;case dp.ELLIPSOID:return YT;case dp.CYLINDER:return vR}};var _o=Object.freeze(dp);var HXo=b(W(),1);var vxo=b(W(),1);function hZ(t){this._comparator=t.comparator,this._maximumLength=t.maximumLength,this._array=c(t.maximumLength)?new Array(t.maximumLength):[],this._length=0}Object.defineProperties(hZ.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(t){if(c(t)){for(;this._length>t;)this.removeMinimum();this._array.length=t}this._maximumLength=t}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});hZ.prototype.clone=function(){let t=this._maximumLength,e=this._comparator,n=this._array,i=this._length,o=new hZ({comparator:e,maximumLength:t});o._length=i;for(let a=0;a<i;a++)o._array[a]=n[a];return o};hZ.prototype.reset=function(){this._length=0;let t=this._maximumLength;if(c(t))for(let e=0;e<t;e++)this._array[e]=void 0;else this._array.length=0};hZ.prototype.resort=function(){let t=this._length;for(let e=0;e<t;e++)gQt(this,e)};hZ.prototype.insert=function(t){let e,n=this._maximumLength;if(c(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(t,o)<=0)return t;e=this.removeMinimum()}}let i=this._length;return this._array[i]=t,this._length++,gQt(this,i),e};hZ.prototype.removeMinimum=function(){let t=this._length;if(t===0)return;this._length--;let e=this._array[0];return t>=2&&(this._array[0]=this._array[t-1],EQt(this,0)),this._array[t-1]=void 0,e};hZ.prototype.removeMaximum=function(){let t=this._length;if(t===0)return;this._length--;let e;if(t<=2)e=this._array[t-1];else{let n=pst(this,1,2)?1:2;e=this._array[n],this._array[n]=this._array[t-1],t>=4&&EQt(this,n)}return this._array[t-1]=void 0,e};hZ.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};hZ.prototype.getMaximum=function(){let t=this._length;if(t!==0)return t<=2?this._array[t-1]:this._array[pst(this,1,2)?1:2]};function Tj(t,e,n){let i=t._array,o=i[e];i[e]=i[n],i[n]=o}function $9(t,e,n){return t._comparator(t._array[e],t._array[n])<0}function pst(t,e,n){return t._comparator(t._array[e],t._array[n])>0}function gQt(t,e){if(e===0)return;let n=Math.floor(k.log2(e+1))%2===0,i=Math.floor((e-1)/2),o=$9(t,e,i);for(o!==n&&(Tj(t,e,i),e=i);e>=3;){let a=Math.floor((e-3)/4);if($9(t,e,a)!==o)break;Tj(t,e,a),e=a}}function EQt(t,e){let n=t._length,i=Math.floor(k.log2(e+1))%2===0,o;for(;(o=2*e+1)<n;){let a=o,s=o+1;if(s<n){$9(t,s,a)===i&&(a=s);let l=2*o+1,r=Math.max(Math.min(n-l,4),0);for(let d=0;d<r;d++){let m=l+d;$9(t,m,a)===i&&(a=m)}}if($9(t,a,e)===i&&(Tj(t,a,e),a!==o&&a!==s)){let l=Math.floor((a-1)/2);pst(t,a,l)===i&&Tj(t,a,l)}e=a}}var xT=hZ;var zxo=b(W(),1),CQt=Object.freeze({UNLOADED:0,RECEIVING:1,RECEIVED:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function gj(t,e){this.spatialNode=t,this.keyframe=e,this.state=CQt.UNLOADED,this.metadata=[],this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}gj.priorityComparator=function(t,e){return t.priority-e.priority};gj.searchComparator=function(t,e){return t.keyframe-e.keyframe};gj.LoadState=CQt;var ra=gj;var ZXo=b(W(),1);function AU(t,e,n,i,o){i===vn.UNSIGNED_SHORT&&(i=vn.FLOAT32);let a=t.floatingPointTexture;if(i===vn.FLOAT32&&!a)throw new Tt("Floating point texture not supported");let s;i===vn.FLOAT32||i===vn.FLOAT64?s=Ue.FLOAT:i===vn.UINT8&&(s=Ue.UNSIGNED_BYTE);let l;n===1?l=t.webgl2?Ye.RED:Ye.LUMINANCE:n===2?l=t.webgl2?Ye.RG:Ye.LUMINANCE_ALPHA:n===3?l=Ye.RGB:n===4&&(l=Ye.RGBA);let r=512*1024*1024,d=128*1024*1024;o=Math.min(f(o,d),r);let m=Tn.maximumTextureSize,h=vn.getSizeInBytes(i),u=Math.floor(o/(n*h)),R=Math.min(m,k.previousPowerOfTwo(Math.floor(Math.sqrt(u)))),V=Math.ceil(Math.sqrt(e.x)),F=Math.ceil(e.z/V),U=V*e.x,G=F*e.y,A=Math.floor(R/U),S=Math.floor(R/G);if(A===0||S===0)throw new Tt("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.voxelCountPerTile=p.clone(e,new p),this.maximumTileCount=A*S,this.regionCountPerMegatexture=new K(A,S),this.voxelCountPerRegion=new K(U,G),this.sliceCountPerRegion=new K(V,F),this.voxelSizeUv=new K(1/R,1/R),this.sliceSizeUv=new K(e.x/R,e.y/R),this.regionSizeUv=new K(U/R,G/R),this.texture=new hn({context:t,pixelFormat:l,pixelDatatype:s,flipY:!1,width:R,height:R,sampler:new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:Ro.LINEAR})});let g=vn.toComponentDatatype(i);this.tileVoxelDataTemp=it.createTypedArray(g,U*G*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new Cxe(C);for(let C=0;C<this.maximumTileCount;C++){let y=this.nodes[C];y.previousNode=C>0?this.nodes[C-1]:void 0,y.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function Cxe(t){this.index=t,this.nextNode=void 0,this.previousNode=void 0}AU.prototype.add=function(t){if(this.isFull())throw new Ut("Trying to add when there are no empty spots");let e=this.emptyList;this.emptyList=this.emptyList.nextNode,c(this.emptyList)&&(this.emptyList.previousNode=void 0),e.nextNode=this.occupiedList,c(e.nextNode)&&(e.nextNode.previousNode=e),this.occupiedList=e;let n=e.index;return this.writeDataToTexture(n,t),this.occupiedCount++,n};AU.prototype.remove=function(t){if(t<0||t>=this.maximumTileCount)throw new Ut("Megatexture index out of bounds");let e=this.nodes[t];c(e.previousNode)&&(e.previousNode.nextNode=e.nextNode),c(e.nextNode)&&(e.nextNode.previousNode=e.previousNode),e.nextNode=this.emptyList,c(e.nextNode)&&(e.nextNode.previousNode=e),e.previousNode=void 0,this.emptyList=e,this.occupiedCount--};AU.prototype.isFull=function(){return this.emptyList===void 0};AU.getApproximateTextureMemoryByteLength=function(t,e,n,i){i===vn.UNSIGNED_SHORT&&(i=vn.FLOAT32);let o=vn.getSizeInBytes(i),a=t*e.x*e.y*e.z,s=Math.ceil(Math.sqrt(e.x)),l=Math.ceil(e.z/s),r=s*e.x,d=l*e.y,m=k.previousPowerOfTwo(Math.floor(Math.sqrt(a)));for(;;){let u=Math.floor(m/r),R=Math.floor(m/d);if(u*R>=t)break;m*=2}return m*m*n*o};AU.prototype.writeDataToTexture=function(t,e){let n=e.constructor===Uint16Array?new Float32Array(e):e,i=this.voxelCountPerTile,o=this.sliceCountPerRegion,a=this.voxelCountPerRegion,s=this.channelCount,l=this.tileVoxelDataTemp;for(let F=0;F<i.z;F++){let U=F%o.x*i.x,G=Math.floor(F/o.x)*i.y;for(let A=0;A<i.y;A++)for(let S=0;S<i.x;S++){let g=F*i.y*i.x+A*i.x+S,C=(G+A)*a.x+(U+S);for(let y=0;y<s;y++)l[C*s+y]=n[g*s+y]}}let r=this.regionCountPerMegatexture,d=a.x,m=a.y,h=t%r.x*a.x,u=Math.floor(t/r.x)*a.y,V={source:{arrayBufferView:l,width:d,height:m},xOffset:h,yOffset:u};this.texture.copyFrom(V)};AU.prototype.isDestroyed=function(){return!1};AU.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),At(this)};var P1=AU;var TXo=b(W(),1);function BV(t,e,n,i,o,a,s){this.children=void 0,this.parent=o,this.level=t,this.x=e,this.y=n,this.z=i,this.dimensions=p.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new ci,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(a)}var Ixe=new p;BV.prototype.computeBoundingVolumes=function(t){this.orientedBoundingBox=t.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let e=ot.getScale(this.orientedBoundingBox.halfAxes,Ixe),n=2*p.maximumComponent(e);this.approximateVoxelSize=n/p.minimumComponent(this.dimensions)};BV.prototype.constructChildNodes=function(t){let{level:e,x:n,y:i,z:o}=this,a=n*2,s=i*2,l=o*2,r=s+1,d=a+1,m=l+1,h=e+1,u=[[h,a,s,l],[h,d,s,l],[h,a,r,l],[h,d,r,l],[h,a,s,m],[h,d,s,m],[h,a,r,m],[h,d,r,m]];this.children=u.map(([R,V,F,U])=>new BV(R,V,F,U,this,t,this.dimensions))};BV.prototype.visibility=function(t,e){let n=this.orientedBoundingBox;return t.cullingVolume.computeVisibilityWithPlaneMask(n,e)};BV.prototype.computeScreenSpaceError=function(t,e){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(t));i=Math.max(i,k.EPSILON7);let o=this.approximateVoxelSize,a=e*(o/i);this.screenSpaceError=a};var IQt={keyframe:0};function t5(t,e){return IQt.keyframe=t,Ja(e,IQt,ra.searchComparator)}BV.prototype.computeSurroundingRenderableKeyframeNodes=function(t){let e=this,n=e.level,i=Math.floor(t),o=Math.ceil(t),a,s,l=+Number.MAX_VALUE,r=+Number.MAX_VALUE;for(;c(e);){let{renderableKeyframeNodes:h}=e;if(h.length>=1){let u=Nxe(i,h),R=h[u],V=o===i||i<R.keyframe?u:Math.min(u+1,h.length-1),F=h[V],U=i-R.keyframe,G=NQt(n-e.level,U);G<l&&(l=G,a=R);let A=F.keyframe-o,S=NQt(n-e.level,A);if(S<r&&(r=S,s=F),U===0&&A===0)break}e=e.parent}if(this.renderableKeyframeNodePrevious=a,this.renderableKeyframeNodeNext=s,!c(a)||!c(s))return;let d=a.keyframe,m=s.keyframe;this.renderableKeyframeNodeLerp=d===m?0:k.clamp((t-d)/(m-d),0,1)};function Nxe(t,e){let n=t5(t,e);return n<0?k.clamp(~n-1,0,e.length-1):n}function NQt(t,e){let n=Math.exp(t*4),i=e>=0?1:-200;return t*n+e*i}BV.prototype.isVisited=function(t){return this.visitedFrameNumber===t};BV.prototype.createKeyframeNode=function(t){let e=t5(t,this.keyframeNodes);if(e<0){e=~e;let n=new ra(this,t);this.keyframeNodes.splice(e,0,n)}};BV.prototype.destroyKeyframeNode=function(t,e){let n=t.keyframe,i=t5(n,this.keyframeNodes);if(i<0)throw new Ut("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),t.megatextureIndex!==-1){for(let a=0;a<e.length;a++)e[a].remove(t.megatextureIndex);let o=t5(n,this.renderableKeyframeNodes);if(o<0)throw new Ut("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}t.spatialNode=void 0,t.state=ra.LoadState.UNLOADED,t.metadata={},t.megatextureIndex=-1,t.priority=-Number.MAX_VALUE,t.highPriorityFrameNumber=-1};BV.prototype.addKeyframeNodeToMegatextures=function(t,e){if(t.state!==ra.LoadState.RECEIVED||t.megatextureIndex!==-1||t.metadata.length!==e.length)throw new Ut("Keyframe node cannot be added to megatexture");for(let o=0;o<e.length;o++){let a=e[o];t.megatextureIndex=a.add(t.metadata[o])}t.state=ra.LoadState.LOADED;let n=this.renderableKeyframeNodes,i=t5(t.keyframe,n);if(i>=0)throw new Ut("Keyframe already renderable");i=~i,n.splice(i,0,t)};BV.prototype.isRenderable=function(t){let e=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return c(e)&&c(n)&&(e.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===t};var e5=BV;function SW(t,e,n,i,o,a,s){this._primitive=t,this.megatextures=new Array(i.length);for(let V=0;V<i.length;V++){let F=i[V],U=Nn.getComponentCount(F),G=o[V];this.megatextures[V]=new P1(e,n,U,G,s)}let l=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._frameNumber=0;let r=t._shape;this.rootNode=new e5(0,0,0,0,void 0,r,n),this._priorityQueue=new xT({maximumLength:l,comparator:ra.priorityComparator}),this._highPriorityKeyframeNodes=new Array(l),this._keyframeNodesInMegatexture=new Array(l),this._keyframeCount=a,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(a);let d=this._binaryTreeKeyframeWeighting;d[0]=0,d[a-1]=0,Vst(d,1,a-2,0);let m=9,h=2048,u=Math.floor(h/m),R=Math.ceil(l/u);this.internalNodeTexture=new hn({context:e,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,flipY:!1,width:h,height:R,sampler:new Hn({minificationFilter:On.NEAREST,magnificationFilter:Ro.NEAREST})}),this.internalNodeTilesPerRow=u,this.internalNodeTexelSizeUv=new K(1/h,1/R),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new K}SW.prototype.findKeyframeNode=function(t){return this._keyframeNodesInMegatexture.find(function(e){return e.megatextureIndex===t})};function Vst(t,e,n,i){if(e>n)return;let o=Math.floor((e+n)/2);t[o]=i,Vst(t,e,o-1,i+1),Vst(t,o+1,n,i+1)}SW.simultaneousRequestCountMaximum=50;SW.prototype.update=function(t,e,n,i){let o=this._primitive,a=t.context,s=this.megatextures[0].maximumTileCount,l=this._keyframeCount,r=o._levelBlendFactor,d=r>0,m=l>1,h=(d?2:1)*(m?2:1);this._sampleCount=h;let u=h>=2;if(u&&!c(this.leafNodeTexture)){let A=Math.floor(512),S=Math.ceil(s/A);this.leafNodeTexture=new hn({context:a,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,flipY:!1,width:1024,height:S,sampler:new Hn({minificationFilter:On.NEAREST,magnificationFilter:Ro.NEAREST})}),this.leafNodeTexelSizeUv=K.fromElements(1/1024,1/S,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=A}else!u&&c(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=k.clamp(e,0,l-1),n&&yQt(this,this.rootNode),i)return;this._frameNumber=t.frameNumber;let R=Oi();Qxe(this,t);let V=Oi();xxe(this,h,r);let F=Oi();if(this._debugPrint){let U=V-R,G=F-V,A=F-R;Yxe(this,U,G,A)}};SW.prototype.isRenderable=function(t){return t.isRenderable(this._frameNumber)};SW.prototype.isDestroyed=function(){return!1};SW.prototype.destroy=function(){let t=this.megatextures,e=t.length;for(let n=0;n<e;n++)t[n]=t[n]&&t[n].destroy();return this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),At(this)};function yQt(t,e){if(e.computeBoundingVolumes(t._primitive._shape),c(e.children))for(let n=0;n<8;n++){let i=e.children[n];yQt(t,i)}}function yxe(t,e){if(t._simultaneousRequestCount>=SW.simultaneousRequestCountMaximum)return;let n=t._primitive._provider;function i(r){t._simultaneousRequestCount--;let d=n.types.length;if(!c(r))e.state=ra.LoadState.UNAVAILABLE;else if(r===ra.LoadState.FAILED)e.state=ra.LoadState.FAILED;else if(!Array.isArray(r)||r.length!==d)e.state=ra.LoadState.FAILED;else{let m=t.megatextures;for(let h=0;h<d;h++){let{voxelCountPerTile:u,channelCount:R}=m[h],{x:V,y:F,z:U}=u,G=V*F*U,A=r[h],S=G*R;if(A.length===S)e.metadata[h]=A,e.state=ra.LoadState.RECEIVED;else{e.state=ra.LoadState.FAILED;break}}}}function o(){t._simultaneousRequestCount--,e.state=ra.LoadState.FAILED}let{keyframe:a,spatialNode:s}=e,l=n.requestData({tileLevel:s.level,tileX:s.x,tileY:s.y,tileZ:s.z,keyframe:a});c(l)?(t._simultaneousRequestCount++,e.state=ra.LoadState.RECEIVING,l.then(i).catch(o)):e.state=ra.LoadState.FAILED}function Bxe(t){return t/(1+t)}function Qxe(t,e){let n=t._frameNumber,i=t._primitive,o=i._shape,a=i.screenSpaceError,s=t._priorityQueue,l=t._keyframeCount,r=k.clamp(Math.floor(t._keyframeLocation),0,l-2),d=r+1,{camera:m,context:h,pixelRatio:u}=e,{positionWC:R,frustum:V}=m,U=h.drawingBufferHeight/u/V.sseDenominator;function G(M,Z){if(M.computeScreenSpaceError(R,U),Z=M.visibility(e,Z),Z===Jl.MASK_OUTSIDE)return;if(M.visitedFrameNumber=n,l===1)M.createKeyframeNode(0);else if(M.keyframeNodes.length!==l)for(let _=0;_<l;_++)M.createKeyframeNode(_);let{screenSpaceError:E,keyframeNodes:I}=M,B=Bxe(E),X=!1;for(let _=0;_<I.length;_++){let P=I[_];P.priority=10*B+kxe(r,P.keyframe,d,t),P.state!==ra.LoadState.UNAVAILABLE&&P.state!==ra.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&s.insert(P),P.state===ra.LoadState.LOADED&&(X=!0)}if(E<a||!X){M.children=void 0;return}c(M.children)||M.constructChildNodes(o);for(let _=0;_<8;_++){let P=M.children[_];G(P,Z)}}s.reset(),G(t.rootNode,Jl.MASK_INDETERMINATE);let A=t._highPriorityKeyframeNodes,S=0,g;for(;s.length>0;)g=s.removeMaximum(),g.highPriorityFrameNumber=n,A[S]=g,S++;let C=t._keyframeNodesInMegatexture,y=t.megatextures[0],Y=y.occupiedCount;C.length=Y,C.sort(function(M,Z){return M.highPriorityFrameNumber===Z.highPriorityFrameNumber?Z.priority-M.priority:Z.highPriorityFrameNumber-M.highPriorityFrameNumber});let Q=0,J=0;for(let M=0;M<S;M++)if(g=A[M],!(g.state===ra.LoadState.LOADED||g.spatialNode===void 0)&&(g.state===ra.LoadState.UNLOADED&&yxe(t,g),g.state===ra.LoadState.RECEIVED)){let Z=0;if(y.isFull()){Z=Y-1-Q,Q++;let E=C[Z];E.spatialNode.destroyKeyframeNode(E,t.megatextures)}else Z=Y+J,J++;g.spatialNode.addKeyframeNodeToMegatextures(g,t.megatextures),C[Z]=g}}function kxe(t,e,n,i){let o=Math.min(Math.abs(e-t),Math.abs(e-n)),a=Math.max(t,i._keyframeCount-n-1,1),s=Math.pow(1-o/a,4),l=Math.exp(-i._binaryTreeKeyframeWeighting[e]);return k.lerp(l,s,.15+.85*s)}function Yxe(t,e,n,i){let o=t._keyframeCount,a=t.rootNode,s=Object.keys(ra.LoadState).length,l=new Array(s),r=new Array(s),d=0;for(let G=0;G<s;G++){let A=new Array(o);l[G]=A;for(let S=0;S<o;S++)A[S]=0;r[G]=0}function m(G){let A=G.keyframeNodes;for(let S=0;S<A.length;S++){let g=A[S],C=g.keyframe,y=g.state;l[y][C]+=1,r[y]+=1,d++}if(c(G.children))for(let S=0;S<8;S++){let g=G.children[S];m(g)}}m(a);let h=`KEYFRAMES: ${l[ra.LoadState.LOADED]}`,u=`UNLOADED: ${r[ra.LoadState.UNLOADED]} | RECEIVING: ${r[ra.LoadState.RECEIVING]} | RECEIVED: ${r[ra.LoadState.RECEIVED]} | LOADED: ${r[ra.LoadState.LOADED]} | FAILED: ${r[ra.LoadState.FAILED]} | UNAVAILABLE: ${r[ra.LoadState.UNAVAILABLE]} | TOTAL: ${d}`,R=Math.round(e*100)/100,V=Math.round(n*100)/100,F=Math.round(i*100)/100,U=`LOAD: ${R} | OCT: ${V} | ALL: ${F}`;console.log(`${h} || ${u} || ${U}`)}var Ej={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function xxe(t,e,n){let i=t._primitive._screenSpaceError,o=t._keyframeLocation,a=t._frameNumber,s=e>=2,l=0,r=0,d=[],m=[];function h(R,V,F,U,G){let A=!1;if(c(R.children))for(let S=0;S<8;S++){let g=R.children[S];g.computeSurroundingRenderableKeyframeNodes(o),g.isRenderable(a)&&(A=!0)}if(A){d[G]=Ej.INTERNAL<<16|V,d[F]=U,l++,U=V,G=U*9+1;for(let S=0;S<8;S++){let g=R.children[S];V=l,F=V*9+0,h(g,V,F,U,G+S)}}else{if(s){let S=r*5,g=R.renderableKeyframeNodePrevious,C=R.level-g.spatialNode.level,y=g.spatialNode.parent,Y=c(y)?y.renderableKeyframeNodePrevious:g,Q=Xxe(R,i,n),J=C,M=1,Z=g.megatextureIndex,E=Y.megatextureIndex;m[S+0]=Q,m[S+1]=J,m[S+2]=M,m[S+3]=Z,m[S+4]=E,d[G]=Ej.LEAF<<16|r}else{let S=R.renderableKeyframeNodePrevious,C=R.level-S.spatialNode.level===0?Ej.LEAF:Ej.PACKED_LEAF_FROM_PARENT;d[G]=C<<16|S.megatextureIndex}r++}}let u=t.rootNode;u.computeSurroundingRenderableKeyframeNodes(o),u.isRenderable(a)&&h(u,0,0,0,0),Jxe(d,9,t.internalNodeTilesPerRow,t.internalNodeTexture),s&&Lxe(m,2,t.leafNodeTilesPerRow,t.leafNodeTexture)}function Xxe(t,e,n){if(t.parent===void 0)return 0;let i=t.screenSpaceError,o=t.parent.screenSpaceError,s=((e-i)/(o-i)+n-1)/n;return k.clamp(s,0,1)}function Jxe(t,e,n,i){let o=Ye.componentsLength(i.pixelFormat),a=Math.ceil(t.length/e),s=Math.max(1,e*Math.min(a,n)),l=Math.max(1,Math.ceil(a/n)),r=new Uint8Array(s*l*o);for(let h=0;h<t.length;h++){let u=t[h],R=h*o;for(let V=0;V<o;V++)r[R+V]=u>>>V*8&255}let m={source:{arrayBufferView:r,width:s,height:l},xOffset:0,yOffset:0};i.copyFrom(m)}function Lxe(t,e,n,i){let o=Ye.componentsLength(i.pixelFormat),a=5,s=Math.ceil(t.length/a),l=Math.max(1,e*Math.min(s,n)),r=Math.max(1,Math.ceil(s/n)),d=new Uint8Array(l*r*o);for(let u=0;u<s;u++){let R=t[u*a+0],V=t[u*a+1],F=t[u*a+2],U=t[u*a+3],G=t[u*a+4],A=k.clamp(Math.floor(65536*R),0,65535);d[u*8+0]=A>>>0&255,d[u*8+1]=A>>>8&255,d[u*8+2]=V&255,d[u*8+3]=F&255,d[u*8+4]=U>>>0&255,d[u*8+5]=U>>>8&255,d[u*8+6]=G>>>0&255,d[u*8+7]=G>>>8&255}let h={source:{arrayBufferView:d,width:l,height:r},xOffset:0,yOffset:0};i.copyFrom(h)}SW.getApproximateTextureMemoryByteLength=function(t,e,n,i){let o=0,a=n.length;for(let s=0;s<a;s++){let l=n[s],r=i[s],d=Nn.getComponentCount(l);o+=P1.getApproximateTextureMemoryByteLength(t,e,d,r)}return o};var v1=SW;var ZJo=b(W(),1);var PXo=b(W(),1),Mxe={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},K1=Object.freeze(Mxe);var sJo=b(W(),1);var KXo=b(W(),1);function _xe(t,e,n){let i=new Uint8ClampedArray(t.buffer),o=new ImageData(i,e,n),a=document.createElement("canvas");return a.width=e,a.height=n,a.getContext("2d").putImageData(o,0,0),a}var n5=_xe;function z1(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}z1.prototype.getTexture=function(t){return this._textures[t]};function Dxe(t,e,n){n.resource.fetchImage().then(function(i){t._loadedImages.push({id:e,image:i,textureUniform:n})}).catch(function(){let i=t._textures[e];c(i)&&i!==t._defaultTexture&&i.destroy(),t._textures[e]=t._defaultTexture})}z1.prototype.loadTexture2D=function(t,e){c(e.typedArray)?this._loadedImages.push({id:t,textureUniform:e}):Dxe(this,t,e)};function Oxe(t,e,n){let{id:i,textureUniform:o,image:a}=e,s=n.webgl2?Cj(o,a,n):Hxe(o,a,n),l=t._textures[i];c(l)&&l!==n.defaultTexture&&l.destroy(),t._textures[i]=s}function Cj(t,e,n){let{typedArray:i,sampler:o}=t,a=c(i)?QQt(t,n):new hn({context:n,source:e,sampler:o});return BQt(o)&&a.generateMipmap(),a}function Hxe(t,e,n){let{typedArray:i,sampler:o}=t,a=BQt(o),s=o.wrapS===Zi.REPEAT||o.wrapS===Zi.MIRRORED_REPEAT||o.wrapT===Zi.REPEAT||o.wrapT===Zi.MIRRORED_REPEAT,{width:l,height:r}=c(i)?t:e,d=[l,r].every(k.isPowerOfTwo);if((a||s)&&!d)if(c(i)){if(t.pixelDatatype===Ue.UNSIGNED_BYTE){let h=n5(i,l,r),u=_f(h);return Cj({sampler:o},u,n)}}else{let h=_f(e);return Cj(t,h,n)}else return Cj(t,e,n);return a?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),QQt(t,n)}function BQt(t){return[On.NEAREST_MIPMAP_NEAREST,On.NEAREST_MIPMAP_LINEAR,On.LINEAR_MIPMAP_NEAREST,On.LINEAR_MIPMAP_LINEAR].includes(t.minificationFilter)}function QQt(t,e){let{pixelFormat:n,pixelDatatype:i,width:o,height:a,typedArray:s,sampler:l}=t;return new hn({context:e,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:a},sampler:l,flipY:!1})}z1.prototype.update=function(t){if(t.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=t.frameNumber;let e=t.context;this._defaultTexture=e.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];Oxe(this,o,e)}n.length=0};z1.prototype.isDestroyed=function(){return!1};z1.prototype.destroy=function(){let t=this._textures;for(let e in t)if(t.hasOwnProperty(e)){let n=t[e];n!==this._defaultTexture&&n.destroy()}return At(this)};var i5=z1;function o5(t){t=f(t,f.EMPTY_OBJECT),this.mode=f(t.mode,u0.MODIFY_MATERIAL),this.lightingModel=t.lightingModel,this.uniforms=f(t.uniforms,f.EMPTY_OBJECT),this.varyings=f(t.varyings,f.EMPTY_OBJECT),this.vertexShaderText=t.vertexShaderText,this.fragmentShaderText=t.fragmentShaderText,this.translucencyMode=f(t.translucencyMode,iF.INHERIT),this._textureManager=new i5,this._defaultTexture=void 0,this.uniformMap=wxe(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},Kxe(this),zxe(this)}function wxe(t){let e=t.uniforms,n={};for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];o.type===K1.SAMPLER_2D?(t._textureManager.loadTexture2D(i,o.value),n[i]=Pxe(t,i)):n[i]=vxe(t,i)}return n}function Pxe(t,e){return function(){return f(t._textureManager.getTexture(e),t._defaultTexture)}}function vxe(t,e){return function(){return t.uniforms[e].value}}function XT(t,e,n){let i;for(;(i=e.exec(t))!==null;){let o=i[1];n[o]=!0}}function Kxe(t){let e=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,a=t.vertexShaderText;c(a)&&(o=t.usedVariablesVertex.attributeSet,XT(a,e,o),o=t.usedVariablesVertex.featureIdSet,XT(a,n,o),o=t.usedVariablesVertex.metadataSet,XT(a,i,o));let s=t.fragmentShaderText;if(c(s)){o=t.usedVariablesFragment.attributeSet,XT(s,e,o),o=t.usedVariablesFragment.featureIdSet,XT(s,n,o),o=t.usedVariablesFragment.metadataSet,XT(s,i,o);let l=/material\.(\w+)/g,r=t.usedVariablesFragment.materialSet;XT(s,l,r)}}function kQt(t){let e=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return e.test(t)?`${t} (model coordinates)`:n.test(t)?`${t} (Cartesian world coordinates)`:i.test(t)?`${t} (eye coordinates)`:t}function Vc(t,e,n,i){if(t.hasOwnProperty(e)){let o=`${kQt(e)} is not available in the ${i} shader. Did you mean ${kQt(n)} instead?`;throw new Ut(o)}}function zxe(t){let e=t.usedVariablesVertex.attributeSet;Vc(e,"position","positionMC","vertex"),Vc(e,"normal","normalMC","vertex"),Vc(e,"tangent","tangentMC","vertex"),Vc(e,"bitangent","bitangentMC","vertex"),Vc(e,"positionWC","positionMC","vertex"),Vc(e,"positionEC","positionMC","vertex"),Vc(e,"normalEC","normalMC","vertex"),Vc(e,"tangentEC","tangentMC","vertex"),Vc(e,"bitangentEC","bitangentMC","vertex");let n=t.usedVariablesFragment.attributeSet;Vc(n,"position","positionEC","fragment"),Vc(n,"normal","normalEC","fragment"),Vc(n,"tangent","tangentEC","fragment"),Vc(n,"bitangent","bitangentEC","fragment"),Vc(n,"normalMC","normalEC","fragment"),Vc(n,"tangentMC","tangentEC","fragment"),Vc(n,"bitangentMC","bitangentEC","fragment")}o5.prototype.setUniform=function(t,e){let n=this.uniforms[t];n.type===K1.SAMPLER_2D?this._textureManager.loadTexture2D(t,e):c(e.clone)?n.value=e.clone(n.value):n.value=e};o5.prototype.update=function(t){this._defaultTexture=t.context.defaultTexture,this._textureManager.update(t)};o5.prototype.isDestroyed=function(){return!1};o5.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),At(this)};var JT=o5;function KR(t){t=f(t,f.EMPTY_OBJECT),this._ready=!1,this._provider=f(t.provider,KR.DefaultProvider),this._traversal=void 0,this._shape=void 0,this._shapeVisible=!1,this._paddingBefore=new p,this._paddingAfter=new p,this._minBounds=new p,this._minBoundsOld=new p,this._maxBounds=new p,this._maxBoundsOld=new p,this._exaggeratedMinBounds=new p,this._exaggeratedMinBoundsOld=new p,this._exaggeratedMaxBounds=new p,this._exaggeratedMaxBoundsOld=new p,this._minClippingBounds=new p,this._minClippingBoundsOld=new p,this._maxClippingBounds=new p,this._maxClippingBoundsOld=new p,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._exaggeratedModelMatrix=L.clone(this._modelMatrix),this._compoundModelMatrix=new L,this._compoundModelMatrixOld=new L,this._customShader=f(t.customShader,KR.DefaultCustomShader),this._customShaderCompilationEvent=new It,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=t.clock,this._transformPositionWorldToUv=new L,this._transformPositionUvToWorld=new L,this._transformDirectionWorldToLocal=new ot,this._transformNormalLocalToWorld=new ot,this._jitter=!1,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Mc,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new K,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new K,megatextureTextures:[],megatextureSliceDimensions:new K,megatextureTileDimensions:new K,megatextureVoxelSizeUv:new K,megatextureSliceSizeUv:new K,megatextureTileSizeUv:new K,dimensions:new p,paddingBefore:new p,paddingAfter:new p,transformPositionViewToUv:new L,transformPositionUvToView:new L,transformDirectionViewToLocal:new ot,transformNormalLocalToWorld:new ot,cameraPositionUv:new p,ndcSpaceAxisAlignedBoundingBox:new bt,clippingPlanesTexture:void 0,clippingPlanesMatrix:new L,stepSize:0,pickColor:new v},this._shapeDefinesOld={},this._uniformMap={};let e=this._uniforms,n=this._uniformMap;for(let o in e)if(e.hasOwnProperty(o)){let a=`u_${o}`;n[a]=function(){return e[o]}}let i=this._provider;jxe(this,i)}function jxe(t,e){let{shape:n,minBounds:i=_o.getMinBounds(n),maxBounds:o=_o.getMaxBounds(n)}=e;t.minBounds=i,t.maxBounds=o,t.minClippingBounds=_o.getMinBounds(n),t.maxClippingBounds=_o.getMaxBounds(n),t._exaggeratedMinBounds=p.clone(t._minBounds,t._exaggeratedMinBounds),t._exaggeratedMaxBounds=p.clone(t._maxBounds,t._exaggeratedMaxBounds),t._exaggeratedModelMatrix=L.clone(t._modelMatrix,t._exaggeratedModelMatrix),xQt(t,e);let a=_o.getShapeConstructor(n);t._shape=new a,t._shapeVisible=XQt(t,t._shape,e)}Object.defineProperties(KR.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(t){this._modelMatrix=L.clone(t,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._provider.dimensions}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(t){this._disableRender=!t}},disableUpdate:{get:function(){return this._disableUpdate},set:function(t){this._disableUpdate=t}},debugDraw:{get:function(){return this._debugDraw},set:function(t){this._debugDraw=t}},depthTest:{get:function(){return this._depthTest},set:function(t){this._depthTest!==t&&(this._depthTest=t,this._shaderDirty=!0)}},jitter:{get:function(){return this._jitter},set:function(t){this._jitter!==t&&(this._jitter=t,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(t){this._nearestSampling!==t&&(this._nearestSampling=t,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(t){this._levelBlendFactor=k.clamp(t,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(t){this._screenSpaceError=t}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(t){this._stepSizeMultiplier=t}},minBounds:{get:function(){return this._minBounds},set:function(t){this._minBounds=p.clone(t,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(t){this._maxBounds=p.clone(t,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(t){this._minClippingBounds=p.clone(t,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(t){this._maxClippingBounds=p.clone(t,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){Ml.setOwner(t,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(t){if(this._customShader!==t){let e=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete e[o];c(t)?this._customShader=t:this._customShader=KR.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}}});var qxe=new p,$xe=new bt,tXe=new bt,eXe=new p,nXe=new p,iXe=new ot,oXe=new ot,aXe=new L,sXe=new L,lXe=new L,rXe=L.fromRotationTranslation(ot.fromUniformScale(.5,new ot),new p(.5,.5,.5),new L),dXe=L.fromRotationTranslation(ot.fromUniformScale(2,new ot),new p(-1,-1,-1),new L);KR.prototype.update=function(t){let e=this._provider;this._customShader.update(t);let n=t.context;if(!this._ready){uXe(this,e,n),t.afterRender.push(()=>(this._ready=!0,!0));return}pXe(this,t);let i=xQt(this,e),o=this._shape;if(i&&(this._shapeVisible=XQt(this,o,e),bXe(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let a=WXe(e.timeIntervalCollection,this._clock),s=this._traversal,l=s._sampleCount;if(s.update(t,a,i,this._disableUpdate),l!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&gXe(this,t),this._disableRender))return;this._useLogDepth!==t.useLogDepth&&(this._useLogDepth=t.useLogDepth,this._shaderDirty=!0),fXe(this,t)&&(this._shaderDirty=!0);let d=s.leafNodeTexture,m=this._uniforms;c(d)&&(m.octreeLeafNodeTexture=s.leafNodeTexture,m.octreeLeafNodeTexelSizeUv=K.clone(s.leafNodeTexelSizeUv,m.octreeLeafNodeTexelSizeUv),m.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(q9(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,u=o.orientedBoundingBox,R=GXe(u,h,tXe);if(R.x===1||R.y===1||R.z===-1||R.w===-1)return;m.ndcSpaceAxisAlignedBoundingBox=bt.clone(R,m.ndcSpaceAxisAlignedBoundingBox);let F=n.uniformState.inverseView;m.transformPositionViewToUv=L.multiplyTransformation(this._transformPositionWorldToUv,F,m.transformPositionViewToUv);let U=n.uniformState.view;m.transformPositionUvToView=L.multiplyTransformation(U,this._transformPositionUvToWorld,m.transformPositionUvToView);let G=n.uniformState.inverseViewRotation;m.transformDirectionViewToLocal=ot.multiply(this._transformDirectionWorldToLocal,G,m.transformDirectionViewToLocal),m.transformNormalLocalToWorld=ot.clone(this._transformNormalLocalToWorld,m.transformNormalLocalToWorld);let A=t.camera.positionWC;m.cameraPositionUv=L.multiplyByPoint(this._transformPositionWorldToUv,A,m.cameraPositionUv),m.stepSize=this._stepSizeMultiplier;let S=t.passes.pick?this._drawCommandPick:t.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;S.boundingVolume=o.boundingSphere,t.commandList.push(S)};var cXe=new p,ust=new p,mXe=new gt,hXe=new p;function pXe(t,e){if(t._exaggeratedMinBounds=p.clone(t._minBounds,t._exaggeratedMinBounds),t._exaggeratedMaxBounds=p.clone(t._maxBounds,t._exaggeratedMaxBounds),t.shape===_o.ELLIPSOID){let n=e.verticalExaggerationRelativeHeight,i=e.verticalExaggeration;t._exaggeratedMinBounds.z=(t._minBounds.z-n)*i+n,t._exaggeratedMaxBounds.z=(t._maxBounds.z-n)*i+n}else if(t.shape===_o.BOX){let n=p.fromElements(1,1,e.verticalExaggeration,cXe);t._exaggeratedModelMatrix=L.multiplyByScale(t._modelMatrix,n,t._exaggeratedModelMatrix),t._exaggeratedModelMatrix=L.multiplyByTranslation(t._exaggeratedModelMatrix,VXe(t,e),t._exaggeratedModelMatrix)}}function VXe(t,e){let{shapeTransform:n=L.IDENTITY,globalTransform:i=L.IDENTITY}=t._provider,o=L.getTranslation(n,ust),a=L.multiplyByPoint(t._modelMatrix,o,ust),s=L.multiplyByPoint(i,a,ust),r=mt.WGS84.cartesianToCartographic(s,mXe),d=0;c(r)&&(d=r.height);let m=Ps.getHeight(d,e.verticalExaggeration,e.verticalExaggerationRelativeHeight);return p.fromElements(0,0,(m-d)/e.verticalExaggeration,hXe)}function uXe(t,e,n){let i=t._uniforms;t._pickId=n.createPickId({primitive:t}),i.pickColor=v.clone(t._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:a}=t._shape;t._shapeDefinesOld=Re(o,!0);let s=t._uniformMap;for(let l in a)if(a.hasOwnProperty(l)){let r=`u_${l}`;s[r]=function(){return a[l]}}i.dimensions=p.clone(e.dimensions,i.dimensions),t._paddingBefore=p.clone(f(e.paddingBefore,p.ZERO),t._paddingBefore),i.paddingBefore=p.clone(t._paddingBefore,i.paddingBefore),t._paddingAfter=p.clone(f(e.paddingAfter,p.ZERO),t._paddingBefore),i.paddingAfter=p.clone(t._paddingAfter,i.paddingAfter),t._traversal=ZXe(t,e,n),RXe(t._traversal,i)}function xQt(t,e){let n=f(e.shapeTransform,L.IDENTITY),i=f(e.globalTransform,L.IDENTITY);return L.multiplyTransformation(i,t._exaggeratedModelMatrix,t._compoundModelMatrix),L.multiplyTransformation(t._compoundModelMatrix,n,t._compoundModelMatrix),LT(t,"_compoundModelMatrix","_compoundModelMatrixOld")+LT(t,"_minBounds","_minBoundsOld")+LT(t,"_maxBounds","_maxBoundsOld")+LT(t,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+LT(t,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+LT(t,"_minClippingBounds","_minClippingBoundsOld")+LT(t,"_maxClippingBounds","_maxClippingBoundsOld")>0}function LT(t,e,n){let i=t[e],o=t[n],a=!i.equals(o);return a&&i.clone(o),a?1:0}function XQt(t,e,n){if(!e.update(t._compoundModelMatrix,t._exaggeratedMinBounds,t._exaggeratedMaxBounds,t.minClippingBounds,t.maxClippingBounds))return!1;let o=e.shapeTransform,a=L.inverse(o,aXe),s=L.getRotation(o,iXe),l=L.getScale(o,eXe),r=p.maximumComponent(l),d=p.divideByScalar(l,r,nXe),m=ot.multiplyByScale(s,d,oXe);return t._transformPositionWorldToUv=L.multiplyTransformation(rXe,a,t._transformPositionWorldToUv),t._transformPositionUvToWorld=L.multiplyTransformation(o,dXe,t._transformPositionUvToWorld),t._transformDirectionWorldToLocal=L.getMatrix3(a,t._transformDirectionWorldToLocal),t._transformNormalLocalToWorld=ot.inverseTranspose(m,t._transformNormalLocalToWorld),!0}function ZXe(t,e,n){let i=p.clone(e.dimensions,qxe);p.add(i,t._paddingBefore,i),p.add(i,t._paddingAfter,i);let o=e.maximumTileCount,a=c(o)?v1.getApproximateTextureMemoryByteLength(o,i,e.types,e.componentTypes):void 0,s=f(e.keyframeCount,1);return new v1(t,n,i,e.types,e.componentTypes,s,a)}function RXe(t,e){e.octreeInternalNodeTexture=t.internalNodeTexture,e.octreeInternalNodeTexelSizeUv=K.clone(t.internalNodeTexelSizeUv,e.octreeInternalNodeTexelSizeUv),e.octreeInternalNodeTilesPerRow=t.internalNodeTilesPerRow;let n=t.megatextures,i=n[0],o=n.length;e.megatextureTextures=new Array(o);for(let a=0;a<o;a++)e.megatextureTextures[a]=n[a].texture;e.megatextureSliceDimensions=K.clone(i.sliceCountPerRegion,e.megatextureSliceDimensions),e.megatextureTileDimensions=K.clone(i.regionCountPerMegatexture,e.megatextureTileDimensions),e.megatextureVoxelSizeUv=K.clone(i.voxelSizeUv,e.megatextureVoxelSizeUv),e.megatextureSliceSizeUv=K.clone(i.sliceSizeUv,e.megatextureSliceSizeUv),e.megatextureTileSizeUv=K.clone(i.regionSizeUv,e.megatextureTileSizeUv)}function bXe(t,e){let n=e.shaderDefines,i=Object.keys(n).some(o=>n[o]!==t._shapeDefinesOld[o]);return i&&(t._shapeDefinesOld=Re(n,!0)),i}function WXe(t,e){if(!c(t)||!c(e))return 0;let n=e.currentTime,i,o=t.indexOf(n);o>=0?i=t.get(o):(o=~o,o===t.length?(o=t.length-1,i=t.get(o),n=i.stop):(i=t.get(o),n=i.start));let a=rt.secondsDifference(i.stop,i.start),l=rt.secondsDifference(n,i.start)/a;return o+l}function fXe(t,e){let n=t.clippingPlanes;if(!c(n))return!1;n.update(e);let{clippingPlanesState:i,enabled:o}=n;if(o){let a=t._uniforms;a.clippingPlanesTexture=n.texture,a.clippingPlanesMatrix=L.transpose(L.multiplyTransformation(L.inverse(n.modelMatrix,a.clippingPlanesMatrix),t._transformPositionUvToWorld,a.clippingPlanesMatrix),a.clippingPlanesMatrix)}return t._clippingPlanesState===i&&t._clippingPlanesEnabled===o?!1:(t._clippingPlanesState=i,t._clippingPlanesEnabled=o,!0)}KR.prototype.isDestroyed=function(){return!1};KR.prototype.destroy=function(){let t=this._drawCommand;c(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy());let e=this._drawCommandPick;return c(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),At(this)};var YQt=new Array(new bt(-1,-1,-1,1),new bt(1,-1,-1,1),new bt(-1,1,-1,1),new bt(1,1,-1,1),new bt(-1,-1,1,1),new bt(1,-1,1,1),new bt(-1,1,1,1),new bt(1,1,1,1)),FXe=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),UXe=new Array(new bt,new bt,new bt,new bt,new bt,new bt,new bt,new bt);function GXe(t,e,n){let i=L.fromRotationTranslation(t.halfAxes,t.center,sXe),o=L.multiply(e,i,lXe),a=+Number.MAX_VALUE,s=-Number.MAX_VALUE,l=+Number.MAX_VALUE,r=-Number.MAX_VALUE,d,m=UXe,h=YQt.length;for(d=0;d<h;d++)L.multiplyByVector(o,YQt[d],m[d]);for(d=0;d<h;d++){let u=m[d];if(u.z>=-u.w){let R=u.x/u.w,V=u.y/u.w;a=Math.min(a,R),s=Math.max(s,R),l=Math.min(l,V),r=Math.max(r,V)}else for(let R=0;R<3;R++){let V=FXe[d*3+R],F=m[V];if(F.z>=-F.w){let U=u.z+u.w,G=F.z+F.w,A=U/(U-G),S=bt.lerp(u,F,A,$xe),g=S.x/S.w,C=S.y/S.w;a=Math.min(a,g),s=Math.max(s,g),l=Math.min(l,C),r=Math.max(r,C)}}}return a=k.clamp(a,-1,1),l=k.clamp(l,-1,1),s=k.clamp(s,-1,1),r=k.clamp(r,-1,1),n=bt.fromElements(a,l,s,r,n),n}var Zst=3e7,AXe=new p(Zst,0,0),SXe=new p(0,Zst,0),TXe=new p(0,0,Zst);function gXe(t,e){let n=t._traversal,i=t._debugPolylines;i.removeAll();function o(r,d,m,h){i.add({positions:[r,d],width:h,material:eo.fromType("Color",{color:m})})}function a(r,d,m){let h=r.computeCorners();o(h[0],h[1],d,m),o(h[2],h[3],d,m),o(h[4],h[5],d,m),o(h[6],h[7],d,m),o(h[0],h[2],d,m),o(h[4],h[6],d,m),o(h[1],h[3],d,m),o(h[5],h[7],d,m),o(h[0],h[4],d,m),o(h[2],h[6],d,m),o(h[1],h[5],d,m),o(h[3],h[7],d,m)}function s(r){if(!n.isRenderable(r))return;let d=r.level,h=Math.max(1,5/Math.pow(2,d)),R=[v.RED,v.LIME,v.BLUE][d%3];if(a(r.orientedBoundingBox,R,h),c(r.children))for(let V=0;V<8;V++)s(r.children[V])}a(t._shape.orientedBoundingBox,v.WHITE,5),s(n.rootNode);let l=10;o(p.ZERO,AXe,v.RED,l),o(p.ZERO,SXe,v.LIME,l),o(p.ZERO,TXe,v.BLUE,l),i.update(e)}KR.DefaultCustomShader=new JT({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) { material.diffuse = vec3(1.0); material.alpha = 1.0; -}`});function JQt(){this.ready=!0,this.shape=_o.BOX,this.dimensions=new p(1,1,1),this.names=["data"],this.types=[Nn.SCALAR],this.componentTypes=[vn.FLOAT32],this.maximumTileCount=1}JQt.prototype.requestData=function(t){if(!((c(t)?f(t.tileLevel,0):0)>=1))return Promise.resolve([new Float32Array(1)])};Kb.DefaultProvider=new JQt;var TU=Kb;var Nj=function(t){return function(){t.frameState.afterRender.push(function(){t.requestRender()})}};function fo(t){t=f(t,f.EMPTY_OBJECT);let e=t.canvas,n=t.creditContainer,i=t.creditViewport,o=be(t.contextOptions),a=c(n),s=new a2(e,o);a||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",e.parentNode.appendChild(n)),c(i)||(i=e.parentNode),this._id=Si(),this._jobScheduler=new L_,this._frameState=new X_(s,new S_(n," \u2022 ",i),this._jobScheduler),this._frameState.scene3DOnly=f(t.scene3DOnly,!1),this._removeCreditContainer=!a,this._creditContainer=n,this._canvas=e,this._context=s,this._computeEngine=new Zy(s),this._globe=void 0,this._globeTranslucencyState=new J_,this._primitives=new Dm,this._groundPrimitives=new Dm,this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=fo.defaultLogDepthBuffer&&s.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new yS,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=f(t.orderIndependentTranslucency,!0),this._executeOITFunction=void 0,this._depthPlane=new Q_(t.depthPlaneEllipsoidOffset),this._clearColorCommand=new ao({color:new v,stencil:0,owner:this}),this._depthClearCommand=new ao({depth:1,owner:this}),this._stencilClearCommand=new ao({stencil:0}),this._classificationStencilClearCommand=new ao({stencil:0,renderState:he.fromCache({stencilMask:gn.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new T9(this),this._preUpdate=new It,this._postUpdate=new It,this._renderError=new It,this._preRender=new It,this._postRender=new It,this._minimumDisableDepthTestDistance=0,this._debugInspector=new Q9,this._msaaSamples=f(t.msaaSamples,1),this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new It,this.morphComplete=new It,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=v.clone(v.BLACK),this._mode=ut.SCENE3D,this._mapProjection=c(t.mapProjection)?t.mapProjection:new yo,this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new b_,this.fog=new x_,this._shadowMapCamera=new Aa(this),this.shadowMap=new fW({context:s,lightCamera:this._shadowMapCamera,enabled:f(t.shadows,!1)}),this.invertClassification=!1,this.invertClassificationColor=v.clone(v.WHITE),this._actualInvertClassificationColor=v.clone(this._invertClassificationColor),this._invertClassification=new M1,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new U9,this._brdfLutGenerator=new f_,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new C9(this),this._cameraUnderground=!1,this._mapMode2D=f(t.mapMode2D,eh.INFINITE_SCROLL),this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=f(t.requestRenderMode,!1),this._renderRequested=!0,this.maximumRenderTimeChange=f(t.maximumRenderTimeChange,0),this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=xd.requestCompletedEvent.addEventListener(Nj(this)),this._removeTaskProcessorListenerCallback=$i.taskCompletedEvent.addEventListener(Nj(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let l=new Fe(0,0,s.drawingBufferWidth,s.drawingBufferHeight),r=new Aa(this);this._logDepthBuffer&&(r.frustum.near=.1,r.frustum.far=1e10),this.preloadFlightCamera=new Aa(this),this.preloadFlightCullingVolume=void 0,this._picking=new $_(this),this._defaultView=new AS(this,r,l),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentMapAtlas=void 0,this.light=new gR,DQt(this,0,rt.now()),this.updateFrameState(),this.initializeFrame()}fo.defaultLogDepthBuffer=!0;function EXe(t,e){for(let i=0;i<t._removeGlobeCallbacks.length;++i)t._removeGlobeCallbacks[i]();t._removeGlobeCallbacks.length=0;let n=[];c(e)&&(n.push(e.imageryLayersUpdatedEvent.addEventListener(Nj(t))),n.push(e.terrainProviderChanged.addEventListener(Nj(t)))),t._removeGlobeCallbacks=n}Object.defineProperties(fo.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return Sn.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return Sn.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return dZ.isSupported(this._context)}},globe:{get:function(){return this._globe},set:function(t){this._globe=this._globe&&this._globe.destroy(),this._globe=t,EXe(this,t)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(t){this._view.camera=t}},view:{get:function(){return this._view},set:function(t){this._view=t}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(c(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(c(this.globe))return this.globe.terrainProvider},set:function(t){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),c(this.globe)&&(this.globe.terrainProvider=t)}},terrainProviderChanged:{get:function(){if(c(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(t){t===ut.SCENE2D?this.morphTo2D(0):t===ut.SCENE3D?this.morphTo3D(0):t===ut.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=t}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(t){this._useWebVR=t,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Aa(this),c(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new Y_(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(t){this._frameState.splitPosition=t}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(t){this._minimumDisableDepthTestDistance=t}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(t){t=this._context.fragmentDepth&&t,this._logDepthBuffer!==t&&(this._logDepthBuffer=t,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(t){this._context.uniformState.gamma=t}},highDynamicRange:{get:function(){return this._hdr},set:function(t){let e=this._context,n=t&&e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let t=this._context;return t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(t){t=Math.min(t,Sn.maximumSamples),this._msaaSamples=t}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(t){this._frameState.pixelRatio=t}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});fo.prototype.getCompressedTextureFormatSupported=function(t){let e=this.context;return(t==="WEBGL_compressed_texture_s3tc"||t==="s3tc")&&e.s3tc||(t==="WEBGL_compressed_texture_pvrtc"||t==="pvrtc")&&e.pvrtc||(t==="WEBGL_compressed_texture_etc"||t==="etc")&&e.etc||(t==="WEBGL_compressed_texture_etc1"||t==="etc1")&&e.etc1||(t==="WEBGL_compressed_texture_astc"||t==="astc")&&e.astc||(t==="EXT_texture_compression_bptc"||t==="bc7")&&e.bc7};function LQt(t,e,n){let i=t._frameState,o=t._context,a=t._view.oit,s=i.shadowState.lightShadowMaps,l=i.shadowState.lightShadowsEnabled,r=e.derivedCommands;c(e.pickId)&&(r.picking=VW.createPickDerivedCommand(t,e,o,r.picking)),e.pickOnly||(r.depth=VW.createDepthOnlyDerivedCommand(t,e,o,r.depth)),r.originalCommand=e,t._hdr&&(r.hdr=VW.createHdrCommand(e,o,r.hdr),e=r.hdr.command,r=e.derivedCommands),l&&e.receiveShadows&&(r.shadows=fW.createReceiveDerivedCommand(s,e,n,o,r.shadows)),e.pass===Pt.TRANSLUCENT&&c(a)&&a.isSupported()&&(l&&e.receiveShadows?(r.oit=c(r.oit)?r.oit:{},r.oit.shadows=a.createDerivedCommands(r.shadows.receiveCommand,o,r.oit.shadows)):r.oit=a.createDerivedCommands(e,o,r.oit))}fo.prototype.updateDerivedCommands=function(t){if(!c(t.derivedCommands))return;let e=this._frameState,n=this._context,i=!1,o=e.shadowState.lastDirtyTime;t.lastDirtyTime!==o&&(t.lastDirtyTime=o,t.dirty=!0,i=!0);let a=e.useLogDepth,s=this._hdr,l=t.derivedCommands,r=c(l.logDepth),d=c(l.hdr),m=c(l.originalCommand),h=a&&!r,Z=s&&!d,b=(!a||!s)&&!m;if(t.dirty=t.dirty||h||Z||b,t.dirty){t.dirty=!1;let u=e.shadowState.shadowMaps;e.shadowState.shadowsEnabled&&t.castShadows&&(l.shadows=fW.createCastDerivedCommand(u,t,i,n,l.shadows)),(r||h)&&(l.logDepth=VW.createLogDepthCommand(t,n,l.logDepth),LQt(this,l.logDepth.command,i)),(m||b)&&LQt(this,t,i)}};var CXe=new Eu({pass:ns.RENDER}),bst=new Eu({pass:ns.PRELOAD}),Rst=new Eu({pass:ns.PRELOAD_FLIGHT}),IXe=new Eu({pass:ns.REQUEST_RENDER_MODE_DEFER_CHECK}),MQt=new Ft,Wst;function NXe(t){let e=t.globe;if(t._mode===ut.SCENE3D&&c(e)&&e.show&&!t._cameraUnderground&&!t._globeTranslucencyState.translucent){let n=e.ellipsoid,i=t.frameState.minimumTerrainHeight;return MQt.radius=n.minimumRadius+i,Wst=Z_.fromBoundingSphere(MQt,t.camera.positionWC,Wst),Wst}}fo.prototype.clearPasses=function(t){t.render=!1,t.pick=!1,t.pickVoxel=!1,t.depth=!1,t.postProcess=!1,t.offscreen=!1};function DQt(t,e,n){let i=t._frameState;i.frameNumber=e,i.time=rt.clone(n,i.time)}fo.prototype.updateFrameState=function(){let t=this.camera,e=this._frameState;e.commandList.length=0,e.shadowMaps.length=0,e.brdfLutGenerator=this._brdfLutGenerator,e.environmentMap=this.skyBox&&this.skyBox._cubeMap,e.mode=this._mode,e.morphTime=this.morphTime,e.mapProjection=this.mapProjection,e.camera=t,e.cullingVolume=t.frustum.computeCullingVolume(t.positionWC,t.directionWC,t.upWC),e.occluder=NXe(this),e.minimumTerrainHeight=0,e.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,e.invertClassification=this.invertClassification,e.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof wn||this.camera.frustum instanceof el),e.light=this.light,e.cameraUnderground=this._cameraUnderground,e.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;c(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),e.verticalExaggeration=this.verticalExaggeration,e.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,c(this._specularEnvironmentMapAtlas)&&this._specularEnvironmentMapAtlas.ready?(e.specularEnvironmentMaps=this._specularEnvironmentMapAtlas.texture,e.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentMapAtlas.maximumMipmapLevel):(e.specularEnvironmentMaps=void 0,e.specularEnvironmentMapsMaximumLOD=void 0),e.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=v.clone(this.invertClassificationColor,this._actualInvertClassificationColor),M1.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),e.invertClassificationColor=this._actualInvertClassificationColor,c(this.globe)?e.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:e.maximumScreenSpaceError=2,this.clearPasses(e.passes),e.tilesetPassState=void 0};fo.prototype.isVisible=function(t,e,n){return c(t)&&(!c(t.boundingVolume)||!t.cull||e.computeVisibility(t.boundingVolume)!==yn.OUTSIDE&&(!c(n)||!t.occlude||!t.boundingVolume.isOccluded(n)))};var Ij=new L(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);Ij=L.inverseTransformation(Ij,Ij);function yXe(t,e,n,i){let o=e._frameState,a=o.context,s=t.boundingVolume;c(e._debugVolume)&&e._debugVolume.destroy();let l,r=p.clone(s.center);if(o.mode!==ut.SCENE3D){r=L.multiplyByPoint(Ij,r,r);let Z=o.mapProjection,b=Z.unproject(r);r=Z.ellipsoid.cartographicToCartesian(b)}if(c(s.radius)){let Z=s.radius;l=gi.toWireframe(Cr.createGeometry(new Cr({radii:new p(Z,Z,Z),vertexFormat:jn.FLAT_VERTEX_FORMAT}))),e._debugVolume=new Wi({geometryInstances:new $e({geometry:l,modelMatrix:L.fromTranslation(r),attributes:{color:new En(1,0,0,1)}}),appearance:new jn({flat:!0,translucent:!1}),asynchronous:!1})}else{let Z=s.halfAxes;l=gi.toWireframe(Am.createGeometry(Am.fromDimensions({dimensions:new p(2,2,2),vertexFormat:jn.FLAT_VERTEX_FORMAT}))),e._debugVolume=new Wi({geometryInstances:new $e({geometry:l,modelMatrix:L.fromRotationTranslation(Z,r,new L),attributes:{color:new En(1,0,0,1)}}),appearance:new jn({flat:!0,translucent:!1}),asynchronous:!1})}let d=o.commandList,m=o.commandList=[];e._debugVolume.update(o),t=m[0],o.useLogDepth&&(t=VW.createLogDepthCommand(t,a).command);let h;c(i)&&(h=n.framebuffer,n.framebuffer=i),t.execute(a,n),c(h)&&(n.framebuffer=h),o.commandList=d}function Sd(t,e,n,i,o){let a=e._frameState;if(c(e.debugCommandFilter)&&!e.debugCommandFilter(t))return;if(t instanceof ao){t.execute(n,i);return}t.debugShowBoundingVolume&&c(t.boundingVolume)&&yXe(t,e,i,o),a.useLogDepth&&c(t.derivedCommands.logDepth)&&(t=t.derivedCommands.logDepth.command);let s=a.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&e._hdr&&c(t.derivedCommands)&&c(t.derivedCommands.hdr)&&(t=t.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth&&c(t.derivedCommands.picking)){t=t.derivedCommands.picking.pickCommand,t.execute(n,i);return}else if(c(t.derivedCommands.depth)){t=t.derivedCommands.depth.depthOnlyCommand,t.execute(n,i);return}}if(e.debugShowCommands||e.debugShowFrustums){e._debugInspector.executeDebugShowFrustumsCommand(e,t,i);return}a.shadowState.lightShadowsEnabled&&t.receiveShadows&&c(t.derivedCommands.shadows)?t.derivedCommands.shadows.receiveCommand.execute(n,i):t.execute(n,i)}function a5(t,e,n,i){let o=e._frameState,a=t.derivedCommands;c(a)&&(o.useLogDepth&&c(a.logDepth)&&(t=a.logDepth.command),a=t.derivedCommands,c(a.picking)?(t=a.picking.pickCommand,t.execute(n,i)):c(a.depth)&&(t=a.depth.depthOnlyCommand,t.execute(n,i)))}function OQt(t,e,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)}function BXe(t,e,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)+k.EPSILON12}function QXe(t,e,n,i,o){let a=t.context;ZW(i,OQt,t.camera.positionWC),c(o)&&e(o.unclassifiedCommand,t,a,n);let s=i.length;for(let l=0;l<s;++l)e(i[l],t,a,n)}function kXe(t,e,n,i,o){let a=t.context;ZW(i,BXe,t.camera.positionWC),c(o)&&e(o.unclassifiedCommand,t,a,n);let s=i.length;for(let l=0;l<s;++l)e(i[l],t,a,n)}function YXe(t,e,n,i){let o=t.context;ZW(i,OQt,t.camera.positionWC);let a=i.length;for(let s=0;s<a;++s)e(i[s],t,o,n)}var xXe=new Io,XXe=new em,JXe=new wn,LXe=new el;function Fst(t,e){let{camera:n,context:i,frameState:o}=t,{uniformState:a}=i;a.updateCamera(n);let s;c(n.frustum.fov)?s=n.frustum.clone(xXe):c(n.frustum.infiniteProjectionMatrix)?s=n.frustum.clone(XXe):c(n.frustum.width)?s=n.frustum.clone(JXe):s=n.frustum.clone(LXe),s.near=n.frustum.near,s.far=n.frustum.far,a.updateFrustum(s),a.updatePass(Pt.ENVIRONMENT);let l=o.passes,r=l.pick||l.pickVoxel,d=t._environmentState,m=t._view,h=d.renderTranslucentDepthForPick,Z=d.useWebVR;if(!r){let E=d.skyBoxCommand;if(c(E)&&Sd(E,t,i,e),d.isSkyAtmosphereVisible&&Sd(d.skyAtmosphereCommand,t,i,e),d.isSunVisible&&(d.sunDrawCommand.execute(i,e),t.sunBloom&&!Z)){let I;d.useGlobeDepthFramebuffer?I=m.globeDepth.framebuffer:d.usePostProcess?I=m.sceneFramebuffer.framebuffer:I=d.originalFramebuffer,t._sunPostProcess.execute(i),t._sunPostProcess.copy(i,I),e.framebuffer=I}d.isMoonVisible&&d.moonCommand.execute(i,e)}let b;d.useOIT?(c(t._executeOITFunction)||(t._executeOITFunction=function(E,I,B,X,_){m.globeDepth.prepareColorTextures(i),m.oit.executeCommands(E,I,B,X,_)}),b=t._executeOITFunction):l.render?b=QXe:b=kXe;let u=m.frustumCommandsList,F=u.length,U=d.clearGlobeDepth,G=d.useDepthPlane,A=t._globeTranslucencyState,T=A.translucent,g=t._view.globeTranslucencyFramebuffer,C=t._depthClearCommand,y=t._stencilClearCommand,Y=t._classificationStencilClearCommand,Q=t._depthPlane,J=d.usePostProcessSelected,M=n.position.z,V;for(let E=0;E<F;++E){let I=F-E-1,B=u[I];t.mode===ut.SCENE2D?(n.position.z=M-B.near+1,s.far=Math.max(1,B.far-B.near),s.near=1,a.update(o),a.updateFrustum(s)):(s.near=I!==0?B.near*t.opaqueFrustumNearOffset:B.near,s.far=B.far,a.updateFrustum(s)),C.execute(i,e),i.stencilBuffer&&y.execute(i,e),a.updatePass(Pt.GLOBE);let X=B.commands[Pt.GLOBE],_=B.indices[Pt.GLOBE];if(T)A.executeGlobeCommands(B,Sd,g,t,e);else for(V=0;V<_;++V)Sd(X[V],t,i,e);let P=m.globeDepth;if(c(P)&&d.useGlobeDepthFramebuffer&&P.executeCopyDepth(i,e),!d.renderTranslucentDepthForPick)if(a.updatePass(Pt.TERRAIN_CLASSIFICATION),X=B.commands[Pt.TERRAIN_CLASSIFICATION],_=B.indices[Pt.TERRAIN_CLASSIFICATION],T)A.executeGlobeClassificationCommands(B,Sd,g,t,e);else for(V=0;V<_;++V)Sd(X[V],t,i,e);if(U&&(C.execute(i,e),G&&Q.execute(i,e)),!d.useInvertClassification||r||d.renderTranslucentDepthForPick){for(a.updatePass(Pt.CESIUM_3D_TILE),X=B.commands[Pt.CESIUM_3D_TILE],_=B.indices[Pt.CESIUM_3D_TILE],V=0;V<_;++V)Sd(X[V],t,i,e);if(_>0&&(c(P)&&d.useGlobeDepthFramebuffer&&(P.prepareColorTextures(i,U),P.executeUpdateDepth(i,e,U,P.depthStencilTexture)),!d.renderTranslucentDepthForPick))for(a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION),X=B.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION],_=B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION],V=0;V<_;++V)Sd(X[V],t,i,e)}else{t._invertClassification.clear(i,e);let nt=e.framebuffer;for(e.framebuffer=t._invertClassification._fbo.framebuffer,a.updatePass(Pt.CESIUM_3D_TILE),X=B.commands[Pt.CESIUM_3D_TILE],_=B.indices[Pt.CESIUM_3D_TILE],V=0;V<_;++V)Sd(X[V],t,i,e);for(c(P)&&d.useGlobeDepthFramebuffer&&(t._invertClassification.prepareTextures(i),P.executeUpdateDepth(i,e,U,t._invertClassification._fbo.getDepthStencilTexture())),a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),X=B.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW],_=B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW],V=0;V<_;++V)Sd(X[V],t,i,e);for(e.framebuffer=nt,t._invertClassification.executeClassified(i,e),o.invertClassificationColor.alpha===1&&t._invertClassification.executeUnclassified(i,e),_>0&&i.stencilBuffer&&Y.execute(i,e),a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION),X=B.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION],_=B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION],V=0;V<_;++V)Sd(X[V],t,i,e)}for(_>0&&i.stencilBuffer&&y.execute(i,e),a.updatePass(Pt.VOXELS),X=B.commands[Pt.VOXELS],_=B.indices[Pt.VOXELS],X.length=_,YXe(t,Sd,e,X),a.updatePass(Pt.OPAQUE),X=B.commands[Pt.OPAQUE],_=B.indices[Pt.OPAQUE],V=0;V<_;++V)Sd(X[V],t,i,e);I!==0&&t.mode!==ut.SCENE2D&&(s.near=B.near,a.updateFrustum(s));let w;if(!r&&d.useInvertClassification&&o.invertClassificationColor.alpha<1&&(w=t._invertClassification),a.updatePass(Pt.TRANSLUCENT),X=B.commands[Pt.TRANSLUCENT],X.length=B.indices[Pt.TRANSLUCENT],b(t,Sd,e,X,w),B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION]>0&&m.translucentTileClassification.isSupported()&&(m.translucentTileClassification.executeTranslucentCommands(t,Sd,e,X,P.depthStencilTexture),m.translucentTileClassification.executeClassificationCommands(t,Sd,e,B)),i.depthTexture&&t.useDepthPicking&&(d.useGlobeDepthFramebuffer||h)){let nt=P.depthStencilTexture,$=t._picking.getPickDepth(t,I);$.update(i,nt),$.executeCopyDepth(i,e)}if(r||!J)continue;let H=e.framebuffer;if(e.framebuffer=m.sceneFramebuffer.getIdFramebuffer(),s.near=I!==0?B.near*t.opaqueFrustumNearOffset:B.near,s.far=B.far,a.updateFrustum(s),a.updatePass(Pt.GLOBE),X=B.commands[Pt.GLOBE],_=B.indices[Pt.GLOBE],T)A.executeGlobeCommands(B,a5,g,t,e);else for(V=0;V<_;++V)a5(X[V],t,i,e);for(U&&(C.framebuffer=e.framebuffer,C.execute(i,e),C.framebuffer=void 0),U&&G&&Q.execute(i,e),a.updatePass(Pt.CESIUM_3D_TILE),X=B.commands[Pt.CESIUM_3D_TILE],_=B.indices[Pt.CESIUM_3D_TILE],V=0;V<_;++V)a5(X[V],t,i,e);for(a.updatePass(Pt.OPAQUE),X=B.commands[Pt.OPAQUE],_=B.indices[Pt.OPAQUE],V=0;V<_;++V)a5(X[V],t,i,e);for(a.updatePass(Pt.TRANSLUCENT),X=B.commands[Pt.TRANSLUCENT],_=B.indices[Pt.TRANSLUCENT],V=0;V<_;++V)a5(X[V],t,i,e);e.framebuffer=H}}function HQt(t){t.context.uniformState.updatePass(Pt.COMPUTE);let n=t._environmentState.sunComputeCommand;c(n)&&n.execute(t._computeEngine);let i=t._computeCommandList,o=i.length;for(let a=0;a<o;++a)i[a].execute(t._computeEngine)}function MXe(t,e){t.context.uniformState.updatePass(Pt.OVERLAY);let i=t.context,o=t._overlayCommandList,a=o.length;for(let s=0;s<a;++s)o[s].execute(i,e)}function _Xe(t,e,n){let i=n.shadowMapCullingVolume,o=n.isPointLight,a=n.passes,s=a.length,l=e.length;for(let r=0;r<l;++r){let d=e[r];if(t.updateDerivedCommands(d),d.castShadows&&(d.pass===Pt.GLOBE||d.pass===Pt.CESIUM_3D_TILE||d.pass===Pt.OPAQUE||d.pass===Pt.TRANSLUCENT)&&t.isVisible(d,i))if(o)for(let m=0;m<s;++m)a[m].commandList.push(d);else if(s===1)a[0].commandList.push(d);else{let m=!1;for(let h=s-1;h>=0;--h){let Z=a[h].cullingVolume;if(t.isVisible(d,Z))a[h].commandList.push(d),m=!0;else if(m)break}}}}function wQt(t){let e=t.frameState,n=e.shadowState.shadowMaps,i=n.length;if(!e.shadowState.shadowsEnabled)return;let o=t.context,a=o.uniformState;for(let s=0;s<i;++s){let l=n[s];if(l.outOfView)continue;let r=l.passes,d=r.length;for(let h=0;h<d;++h)r[h].commandList.length=0;let m=t.frameState.commandList;_Xe(t,m,l);for(let h=0;h<d;++h){let Z=l.passes[h];a.updateCamera(Z.camera),l.updatePass(o,h);let b=Z.commandList.length;for(let u=0;u<b;++u){let F=Z.commandList[u];a.updatePass(F.pass),Sd(F.derivedCommands.shadows.castCommands[s],t,o,Z.passState)}}}}var DXe=new p;fo.prototype.updateAndExecuteCommands=function(t,e){let i=this._frameState.mode;this._environmentState.useWebVR?OXe(this,t,e):i!==ut.SCENE2D||this._mapMode2D===eh.ROTATE?SU(!0,this,t,e):(Ust(this,t,e),$Xe(this,t))};function OXe(t,e,n){let i=t._view,o=i.camera,s=t._environmentState.renderTranslucentDepthForPick;Ust(t,e,n),PQt(t),i.createPotentiallyVisibleSet(t),HQt(t),s||wQt(t);let l=e.viewport;l.x=0,l.y=0,l.width=l.width*.5;let r=Aa.clone(o,t._cameraVR);r.frustum=o.frustum;let d=o.frustum.near,m=d*f(t.focalLength,5),h=f(t.eyeSeparation,m/30),Z=p.multiplyByScalar(r.right,h*.5,DXe);o.frustum.aspectRatio=l.width/l.height;let b=.5*h*d/m;p.add(r.position,Z,o.position),o.frustum.xOffset=b,Fst(t,e),l.x=l.width,p.subtract(r.position,Z,o.position),o.frustum.xOffset=-b,Fst(t,e),Aa.clone(r,o)}var HXe=new gt(Math.PI,k.PI_OVER_TWO),wXe=new p,PXe=new p,vXe=new L,KXe=new L,zXe=new p,jXe=new p,qXe=new Fe;function $Xe(t,e){let n=t.context,i=t.frameState,o=t.camera,a=e.viewport,s=Fe.clone(a,qXe);e.viewport=s;let l=HXe,r=wXe;t.mapProjection.project(l,r);let m=p.clone(o.position,PXe),h=L.clone(o.transform,KXe),Z=o.frustum.clone();o._setTransform(L.IDENTITY);let b=L.computeViewportTransformation(s,0,1,vXe),u=o.frustum.projectionMatrix,F=o.positionWC.y,U=p.fromElements(k.sign(F)*r.x-F,0,-o.positionWC.x,zXe),G=Pe.pointToGLWindowCoordinates(u,b,U,jXe);G.x=Math.floor(G.x);let A=s.x,T=s.width;if(F===0||G.x<=A||G.x>=A+T)SU(!0,t,e);else if(Math.abs(A+T*.5-G.x)<1)s.width=G.x-s.x,o.position.x*=k.sign(o.position.x),o.frustum.right=0,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),SU(!0,t,e),s.x=G.x,o.position.x=-o.position.x,o.frustum.right=-o.frustum.left,o.frustum.left=0,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),SU(!1,t,e);else if(G.x>A+T*.5){s.width=G.x-A;let g=o.frustum.right;o.frustum.right=r.x-F,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),SU(!0,t,e),s.x=G.x,s.width=A+T-G.x,o.position.x=-o.position.x,o.frustum.left=-o.frustum.right,o.frustum.right=g-o.frustum.right*2,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),SU(!1,t,e)}else{s.x=G.x,s.width=A+T-G.x;let g=o.frustum.left;o.frustum.left=-r.x-F,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),SU(!0,t,e),s.x=A,s.width=G.x-A,o.position.x=-o.position.x,o.frustum.right=-o.frustum.left,o.frustum.left=g-o.frustum.left*2,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),SU(!1,t,e)}o._setTransform(h),p.clone(m,o.position),o.frustum=Z.clone(),e.viewport=a}function SU(t,e,n,i){let o=e._environmentState,a=e._view,s=o.renderTranslucentDepthForPick;t||(e.frameState.commandList.length=0),PQt(e),a.createPotentiallyVisibleSet(e),t&&(c(i)&&Ust(e,n,i),HQt(e),s||wQt(e)),Fst(e,n)}var _Qt=new Jl;fo.prototype.updateEnvironment=function(){let t=this._frameState,e=this._view,n=this._environmentState,i=t.passes.render,o=t.passes.offscreen,a=this.atmosphere,s=this.skyAtmosphere,l=this.globe,r=this._globeTranslucencyState;if(!i||this._mode!==ut.SCENE2D&&e.camera.frustum instanceof wn||!r.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(c(s)){if(c(l))s.setDynamicLighting(uS.fromGlobeFlags(l)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!l.show||l._surface._tilesToRender.length>0;else{let G=a.dynamicLighting;s.setDynamicLighting(G),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(t,l),c(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=c(this.skyBox)?this.skyBox.update(t,this._hdr):void 0;let U=c(this.sun)?this.sun.update(t,e.passState,this._hdr):void 0;n.sunDrawCommand=c(U)?U.drawCommand:void 0,n.sunComputeCommand=c(U)?U.computeCommand:void 0,n.moonCommand=c(this.moon)?this.moon.update(t):void 0}let d=n.clearGlobeDepth=c(l)&&l.show&&(!l.depthTestAgainstTerrain||this.mode===ut.SCENE2D);(n.useDepthPlane=d&&this.mode===ut.SCENE3D&&r.useDepthPlane)&&this._depthPlane.update(t),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ut.SCENE2D&&!o;let h=t.mode===ut.SCENE3D&&!r.sunVisibleThroughGlobe?t.occluder:void 0,Z=t.cullingVolume,b=_Qt.planes;for(let U=0;U<5;++U)b[U]=Z.planes[U];Z=_Qt,n.isSkyAtmosphereVisible=c(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(n.sunDrawCommand,Z,h),n.isMoonVisible=this.isVisible(n.moonCommand,Z,h);let u=this.specularEnvironmentMaps,F=this._specularEnvironmentMapAtlas;c(u)&&(!c(F)||F.url!==u)?(F=F&&F.destroy(),this._specularEnvironmentMapAtlas=new dZ(u)):!c(u)&&c(F)&&(F.destroy(),this._specularEnvironmentMapAtlas=void 0),c(this._specularEnvironmentMapAtlas)&&this._specularEnvironmentMapAtlas.update(t)};function tJe(t){let e=t._frameState;t.debugShowFrustumPlanes!==t._debugShowFrustumPlanes&&(t.debugShowFrustumPlanes?t._debugFrustumPlanes=new Jb({camera:t.camera,updateOnChange:!1,frustumSplits:e.frustumSplits}):t._debugFrustumPlanes=t._debugFrustumPlanes&&t._debugFrustumPlanes.destroy(),t._debugShowFrustumPlanes=t.debugShowFrustumPlanes),c(t._debugFrustumPlanes)&&t._debugFrustumPlanes.update(e)}function eJe(t){let e=t._frameState,n=e.shadowMaps,i=n.length,o=i>0&&!e.passes.pick&&!e.passes.pickVoxel&&t.mode===ut.SCENE3D;if(o!==e.shadowState.shadowsEnabled&&(++e.shadowState.lastDirtyTime,e.shadowState.shadowsEnabled=o),e.shadowState.lightShadowsEnabled=!1,!!o){for(let a=0;a<i;++a)if(n[a]!==e.shadowState.shadowMaps[a]){++e.shadowState.lastDirtyTime;break}e.shadowState.shadowMaps.length=0,e.shadowState.lightShadowMaps.length=0;for(let a=0;a<i;++a){let s=n[a];s.update(e),e.shadowState.shadowMaps.push(s),s.fromLightSource&&(e.shadowState.lightShadowMaps.push(s),e.shadowState.lightShadowsEnabled=!0),s.dirty&&(++e.shadowState.lastDirtyTime,s.dirty=!1)}}}function PQt(t){let e=t._frameState;t._groundPrimitives.update(e),t._primitives.update(e),tJe(t),eJe(t),t._globe&&t._globe.render(e)}function Ust(t,e,n){let i=t._context,o=t._frameState,a=t._environmentState,s=t._view,l=t._frameState.passes,r=l.pick||l.pickVoxel;c(s.globeDepth)&&(s.globeDepth.picking=r);let d=a.useWebVR;a.originalFramebuffer=e.framebuffer,c(t.sun)&&t.sunBloom!==t._sunBloom?(t.sunBloom&&!d?t._sunPostProcess=new y9:c(t._sunPostProcess)&&(t._sunPostProcess=t._sunPostProcess.destroy()),t._sunBloom=t.sunBloom):!c(t.sun)&&c(t._sunPostProcess)&&(t._sunPostProcess=t._sunPostProcess.destroy(),t._sunBloom=!1);let m=t._clearColorCommand;v.clone(n,m.color),m.execute(i,e);let h=a.useGlobeDepthFramebuffer=c(s.globeDepth);h&&(s.globeDepth.update(i,e,s.viewport,t.msaaSamples,t._hdr,a.clearGlobeDepth),s.globeDepth.clear(i,e,n));let Z=s.oit,b=a.useOIT=!r&&c(Z)&&Z.isSupported();b&&(Z.update(i,e,s.globeDepth.colorFramebufferManager,t._hdr,t.msaaSamples),Z.clear(i,e,n),a.useOIT=Z.isSupported());let u=t.postProcessStages,F=a.usePostProcess=!r&&(t._hdr||u.length>0||u.ambientOcclusion.enabled||u.fxaa.enabled||u.bloom.enabled);if(a.usePostProcessSelected=!1,F&&(s.sceneFramebuffer.update(i,s.viewport,t._hdr,t.msaaSamples),s.sceneFramebuffer.clear(i,e,n),u.update(i,o.useLogDepth,t._hdr),u.clear(i),F=a.usePostProcess=u.ready,a.usePostProcessSelected=F&&u.hasSelected),a.isSunVisible&&t.sunBloom&&!d?(e.framebuffer=t._sunPostProcess.update(e),t._sunPostProcess.clear(i,e,n)):h?e.framebuffer=s.globeDepth.framebuffer:F&&(e.framebuffer=s.sceneFramebuffer.framebuffer),c(e.framebuffer)&&m.execute(i,e),a.useInvertClassification=!r&&c(e.framebuffer)&&t.invertClassification){let G;if(t.frameState.invertClassificationColor.alpha===1&&a.useGlobeDepthFramebuffer&&(G=s.globeDepth.framebuffer),c(G)||i.depthTexture){if(t._invertClassification.previousFramebuffer=G,t._invertClassification.update(i,t.msaaSamples,s.globeDepth.colorFramebufferManager),t._invertClassification.clear(i,e),t.frameState.invertClassificationColor.alpha<1&&b){let A=t._invertClassification.unclassifiedCommand,T=A.derivedCommands;T.oit=Z.createDerivedCommands(A,i,T.oit)}}else a.useInvertClassification=!1}t._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(t._hdr,s.viewport,i,e)}fo.prototype.resolveFramebuffers=function(t){let e=this._context,n=this._environmentState,i=this._view,o=i.globeDepth;c(o)&&o.prepareColorTextures(e);let a=n.useOIT,s=n.useGlobeDepthFramebuffer,l=n.usePostProcess,r=n.originalFramebuffer,d=s?o.colorFramebufferManager:void 0,m=i.sceneFramebuffer._colorFramebuffer,h=i.sceneFramebuffer.idFramebuffer;a&&(t.framebuffer=l?m.framebuffer:r,i.oit.execute(e,t));let Z=i.translucentTileClassification;if(Z.hasTranslucentDepth&&Z.isSupported()&&Z.execute(this,t),l){i.sceneFramebuffer.prepareColorTextures(e);let b=m;s&&!a&&(b=d);let u=this.postProcessStages,F=b.getColorTexture(0),U=h.getColorTexture(0),G=f(d,m).getDepthStencilTexture();u.execute(e,F,G,U),u.copy(e,r)}!a&&!l&&s&&(t.framebuffer=r,o.executeCopyColor(e,t))};function nJe(t){let e=t._frameState.afterRender;for(let n=0,i=e.length;n<i;++n)e[n]()&&t.requestRender();e.length=0}function iJe(t){if(t.mode===ut.MORPHING)return;let n=t.camera.positionCartographic;return t.getHeight(n)}fo.prototype.getHeight=function(t,e){if(!c(t))return;let n=e===Ge.CLAMP_TO_TERRAIN||e===Ge.RELATIVE_TO_TERRAIN,i=e===Ge.CLAMP_TO_3D_TILE||e===Ge.RELATIVE_TO_3D_TILE;if(!c(t))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=this.primitives.length;for(let l=0;l<s;++l){let r=this.primitives.get(l);if(!r.isCesium3DTileset||!r.show||!r.enableCollision)continue;let d=r.getHeight(t,this);c(d)&&d>o&&(o=d)}}let a=this._globe;if(!i&&c(a)&&a.show){let s=a.getHeight(t);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var fst=new gt;fo.prototype.updateHeight=function(t,e,n){let i=()=>{gt.clone(t,fst);let b=this.getHeight(t,n);c(b)&&(fst.height=b,e(fst))},o=n===Ge.CLAMP_TO_TERRAIN||n===Ge.RELATIVE_TO_TERRAIN,a=n===Ge.CLAMP_TO_3D_TILE||n===Ge.RELATIVE_TO_3D_TILE,s;!a&&c(this.globe)&&(s=this.globe._surface.updateHeight(t,i));let l={},r=this.globe?.ellipsoid,d=b=>{if(o||b.isDestroyed()||!b.isCesium3DTileset)return;let u=b.updateHeight(t,i,r);l[b.id]=u};if(!o){let b=this.primitives.length;for(let u=0;u<b;++u){let F=this.primitives.get(u);d(F)}}let m=this.primitives.primitiveAdded.addEventListener(d),h=this.primitives.primitiveRemoved.addEventListener(b=>{b.isDestroyed()||!b.isCesium3DTileset||(c(l[b.id])&&l[b.id](),delete l[b.id])});return()=>{s=s&&s(),Object.values(l).forEach(b=>b()),l={},m(),h()}};function oJe(t){let e=t.camera,n=t._mode,i=t._screenSpaceCameraController,o=e.positionCartographic;if(!c(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ut.SCENE2D||n===ut.MORPHING)return!1;let a=t._globeHeight;return c(a)&&o.height<a}fo.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){c(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=iJe(this),this._globeHeightDirty=!1;let t=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(t,e=>{this.isDestroyed()||(this._globeHeight=e.height)})}this._cameraUnderground=oJe(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),c(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function aJe(t,e){if(t.debugShowFramesPerSecond){if(!c(t._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",t._canvas.parentNode.appendChild(n);let o=new bW({container:n});t._performanceDisplay=o,t._performanceContainer=n}t._performanceDisplay.throttled=t.requestRenderMode,t._performanceDisplay.update(e)}else c(t._performanceDisplay)&&(t._performanceDisplay=t._performanceDisplay&&t._performanceDisplay.destroy(),t._performanceContainer.parentNode.removeChild(t._performanceContainer))}function sJe(t){t._jobScheduler.resetBudgets();let e=t._frameState;t.primitives.prePassesUpdate(e),c(t.globe)&&t.globe.update(e),t._picking.update(),e.creditDisplay.update()}function lJe(t){let e=t._frameState;t.primitives.postPassesUpdate(e),xd.update()}var rJe=new v;function dJe(t){let e=t._frameState,n=t.context,i=n.uniformState,o=t._defaultView;t._view=o,t.updateFrameState(),e.passes.render=!0,e.passes.postProcess=t.postProcessStages.hasSelected,e.tilesetPassState=CXe;let a=f(t.backgroundColor,v.BLACK);t._hdr&&(a=v.clone(a,rJe),a.red=Math.pow(a.red,t.gamma),a.green=Math.pow(a.green,t.gamma),a.blue=Math.pow(a.blue,t.gamma)),e.backgroundColor=a,e.atmosphere=t.atmosphere,t.fog.update(e),i.update(e);let s=t.shadowMap;c(s)&&s.enabled&&(!c(t.light)||t.light instanceof gR?p.negate(i.sunDirectionWC,t._shadowMapCamera.direction):p.clone(t.light.direction,t._shadowMapCamera.direction),e.shadowMaps.push(s)),t._computeCommandList.length=0,t._overlayCommandList.length=0;let l=o.viewport;l.x=0,l.y=0,l.width=n.drawingBufferWidth,l.height=n.drawingBufferHeight;let r=o.passState;r.framebuffer=void 0,r.blendingEnabled=void 0,r.scissorTest=void 0,r.viewport=Fe.clone(l,r.viewport),c(t.globe)&&t.globe.beginFrame(e),t.updateEnvironment(),t.updateAndExecuteCommands(r,a),t.resolveFramebuffers(r),r.framebuffer=void 0,MXe(t,r),c(t.globe)&&(t.globe.endFrame(e),t.globe.tilesLoaded||(t._renderRequested=!0)),n.endFrame()}function MS(t,e){try{e(t)}catch(n){if(t._renderError.raiseEvent(t,n),t.rethrowRenderErrors)throw n}}function cJe(t){return t._picking.updateMostDetailedRayPicks(t)}fo.prototype.render=function(t){this._preUpdate.raiseEvent(this,t);let e=this._frameState;e.newFrame=!1,c(t)||(t=rt.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ut.MORPHING;if(!i&&c(this.maximumRenderTimeChange)&&c(this._lastRenderTime)){let o=Math.abs(rt.secondsDifference(this._lastRenderTime,t));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=rt.clone(t,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=k.incrementWrap(e.frameNumber,15e6,1);DQt(this,o,t),e.newFrame=!0}MS(this,sJe),this.primitives.show&&(MS(this,cJe),MS(this,mJe),MS(this,hJe),i||MS(this,pJe)),this._postUpdate.raiseEvent(this,t),i&&(this._preRender.raiseEvent(this,t),e.creditDisplay.beginFrame(),MS(this,dJe)),aJe(this,i),MS(this,lJe),nJe(this),i&&(this._postRender.raiseEvent(this,t),e.creditDisplay.endFrame())};fo.prototype.forceRender=function(t){this._renderRequested=!0,this.render(t)};fo.prototype.requestRender=function(){this._renderRequested=!0};fo.prototype.clampLineWidth=function(t){return Math.max(Sn.minimumAliasedLineWidth,Math.min(t,Sn.maximumAliasedLineWidth))};fo.prototype.pick=function(t,e,n){return this._picking.pick(this,t,e,n)};fo.prototype.pickVoxel=function(t,e,n){let i=this.pick(t,e,n);if(!c(i))return;let o=i.primitive;if(!(o instanceof TU))return;let a=this._picking.pickVoxelCoordinate(this,t,e,n),s=255*a[0]+a[1],l=o._traversal.findKeyframeNode(s);if(!c(l))return;let r=255*a[2]+a[3];return k9.fromKeyframeNode(o,s,r,l)};fo.prototype.pickPositionWorldCoordinates=function(t,e){return this._picking.pickPositionWorldCoordinates(this,t,e)};fo.prototype.pickPosition=function(t,e){return this._picking.pickPosition(this,t,e)};fo.prototype.drillPick=function(t,e,n,i){return this._picking.drillPick(this,t,e,n,i)};function mJe(t){let e=t._frameState;bst.camera=e.camera,bst.cullingVolume=e.cullingVolume,t.primitives.updateForPass(e,bst)}function hJe(t){let e=t._frameState;if(!e.camera.canPreloadFlight())return;Rst.camera=t.preloadFlightCamera,Rst.cullingVolume=t.preloadFlightCullingVolume,t.primitives.updateForPass(e,Rst)}function pJe(t){t.primitives.updateForPass(t._frameState,IXe)}fo.prototype.pickFromRay=function(t,e,n){return this._picking.pickFromRay(this,t,e,n)};fo.prototype.drillPickFromRay=function(t,e,n,i){return this._picking.drillPickFromRay(this,t,e,n,i)};fo.prototype.pickFromRayMostDetailed=function(t,e,n){return this._picking.pickFromRayMostDetailed(this,t,e,n)};fo.prototype.drillPickFromRayMostDetailed=function(t,e,n,i){return this._picking.drillPickFromRayMostDetailed(this,t,e,n,i)};fo.prototype.sampleHeight=function(t,e,n){return this._picking.sampleHeight(this,t,e,n)};fo.prototype.clampToHeight=function(t,e,n,i){return this._picking.clampToHeight(this,t,e,n,i)};fo.prototype.sampleHeightMostDetailed=function(t,e,n){return this._picking.sampleHeightMostDetailed(this,t,e,n)};fo.prototype.clampToHeightMostDetailed=function(t,e,n){return this._picking.clampToHeightMostDetailed(this,t,e,n)};fo.prototype.cartesianToCanvasCoordinates=function(t,e){return qo.wgs84ToWindowCoordinates(this,t,e)};fo.prototype.completeMorph=function(){this._transitioner.completeMorph()};fo.prototype.morphTo2D=function(t){let e,n=this.globe;c(n)?e=n.ellipsoid:e=this.mapProjection.ellipsoid,t=f(t,2),this._transitioner.morphTo2D(t,e)};fo.prototype.morphToColumbusView=function(t){let e,n=this.globe;c(n)?e=n.ellipsoid:e=this.mapProjection.ellipsoid,t=f(t,2),this._transitioner.morphToColumbusView(t,e)};fo.prototype.morphTo3D=function(t){let e,n=this.globe;c(n)?e=n.ellipsoid:e=this.mapProjection.ellipsoid,t=f(t,2),this._transitioner.morphTo3D(t,e)};function uJe(t,e){if(t._removeTerrainProviderReadyListener=t._removeTerrainProviderReadyListener&&t._removeTerrainProviderReadyListener(),e.ready){c(t.globe)&&(t.globe.terrainProvider=e.provider);return}t.globe.terrainProvider=void 0,t._removeTerrainProviderReadyListener=e.readyEvent.addEventListener(n=>{c(t)&&c(t.globe)&&(t.globe.terrainProvider=n),t._removeTerrainProviderReadyListener()})}fo.prototype.setTerrain=function(t){return uJe(this,t),t};fo.prototype.isDestroyed=function(){return!1};fo.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),c(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let t=0;t<this._removeGlobeCallbacks.length;++t)this._removeGlobeCallbacks[t]();return this._removeGlobeCallbacks.length=0,c(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),At(this)};var s5=fo;var OMo=R(W(),1);var uMo=R(W(),1),j1=`float interpolateByDistance(vec4 nearFarScalar, float distance) +}`});function JQt(){this.ready=!0,this.shape=_o.BOX,this.dimensions=new p(1,1,1),this.names=["data"],this.types=[Nn.SCALAR],this.componentTypes=[vn.FLOAT32],this.maximumTileCount=1}JQt.prototype.requestData=function(t){if(!((c(t)?f(t.tileLevel,0):0)>=1))return Promise.resolve([new Float32Array(1)])};KR.DefaultProvider=new JQt;var SU=KR;var Nj=function(t){return function(){t.frameState.afterRender.push(function(){t.requestRender()})}};function fo(t){t=f(t,f.EMPTY_OBJECT);let e=t.canvas,n=t.creditContainer,i=t.creditViewport,o=Re(t.contextOptions),a=c(n),s=new ak(e,o);a||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",e.parentNode.appendChild(n)),c(i)||(i=e.parentNode),this._id=Ti(),this._jobScheduler=new L_,this._frameState=new X_(s,new T_(n," \u2022 ",i),this._jobScheduler),this._frameState.scene3DOnly=f(t.scene3DOnly,!1),this._removeCreditContainer=!a,this._creditContainer=n,this._canvas=e,this._context=s,this._computeEngine=new uy(s),this._globe=void 0,this._globeTranslucencyState=new J_,this._primitives=new Dm,this._groundPrimitives=new Dm,this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=fo.defaultLogDepthBuffer&&s.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new yT,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=f(t.orderIndependentTranslucency,!0),this._executeOITFunction=void 0,this._depthPlane=new Q_(t.depthPlaneEllipsoidOffset),this._clearColorCommand=new ao({color:new v,stencil:0,owner:this}),this._depthClearCommand=new ao({depth:1,owner:this}),this._stencilClearCommand=new ao({stencil:0}),this._classificationStencilClearCommand=new ao({stencil:0,renderState:he.fromCache({stencilMask:gn.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new S9(this),this._preUpdate=new It,this._postUpdate=new It,this._renderError=new It,this._preRender=new It,this._postRender=new It,this._minimumDisableDepthTestDistance=0,this._debugInspector=new Q9,this._msaaSamples=f(t.msaaSamples,1),this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new It,this.morphComplete=new It,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=v.clone(v.BLACK),this._mode=Vt.SCENE3D,this._mapProjection=c(t.mapProjection)?t.mapProjection:new yo,this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new R_,this.fog=new x_,this._shadowMapCamera=new Aa(this),this.shadowMap=new fW({context:s,lightCamera:this._shadowMapCamera,enabled:f(t.shadows,!1)}),this.invertClassification=!1,this.invertClassificationColor=v.clone(v.WHITE),this._actualInvertClassificationColor=v.clone(this._invertClassificationColor),this._invertClassification=new M1,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new U9,this._brdfLutGenerator=new f_,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new C9(this),this._cameraUnderground=!1,this._mapMode2D=f(t.mapMode2D,eh.INFINITE_SCROLL),this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=f(t.requestRenderMode,!1),this._renderRequested=!0,this.maximumRenderTimeChange=f(t.maximumRenderTimeChange,0),this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=xd.requestCompletedEvent.addEventListener(Nj(this)),this._removeTaskProcessorListenerCallback=$i.taskCompletedEvent.addEventListener(Nj(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let l=new Fe(0,0,s.drawingBufferWidth,s.drawingBufferHeight),r=new Aa(this);this._logDepthBuffer&&(r.frustum.near=.1,r.frustum.far=1e10),this.preloadFlightCamera=new Aa(this),this.preloadFlightCullingVolume=void 0,this._picking=new $_(this),this._defaultView=new AT(this,r,l),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentMapAtlas=void 0,this.light=new gb,DQt(this,0,rt.now()),this.updateFrameState(),this.initializeFrame()}fo.defaultLogDepthBuffer=!0;function EXe(t,e){for(let i=0;i<t._removeGlobeCallbacks.length;++i)t._removeGlobeCallbacks[i]();t._removeGlobeCallbacks.length=0;let n=[];c(e)&&(n.push(e.imageryLayersUpdatedEvent.addEventListener(Nj(t))),n.push(e.terrainProviderChanged.addEventListener(Nj(t)))),t._removeGlobeCallbacks=n}Object.defineProperties(fo.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return Tn.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return Tn.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return du.isSupported(this._context)}},globe:{get:function(){return this._globe},set:function(t){this._globe=this._globe&&this._globe.destroy(),this._globe=t,EXe(this,t)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(t){this._view.camera=t}},view:{get:function(){return this._view},set:function(t){this._view=t}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(c(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(c(this.globe))return this.globe.terrainProvider},set:function(t){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),c(this.globe)&&(this.globe.terrainProvider=t)}},terrainProviderChanged:{get:function(){if(c(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(t){t===Vt.SCENE2D?this.morphTo2D(0):t===Vt.SCENE3D?this.morphTo3D(0):t===Vt.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=t}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(t){this._useWebVR=t,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Aa(this),c(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new Y_(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(t){this._frameState.splitPosition=t}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(t){this._minimumDisableDepthTestDistance=t}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(t){t=this._context.fragmentDepth&&t,this._logDepthBuffer!==t&&(this._logDepthBuffer=t,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(t){this._context.uniformState.gamma=t}},highDynamicRange:{get:function(){return this._hdr},set:function(t){let e=this._context,n=t&&e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let t=this._context;return t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(t){t=Math.min(t,Tn.maximumSamples),this._msaaSamples=t}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(t){this._frameState.pixelRatio=t}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});fo.prototype.getCompressedTextureFormatSupported=function(t){let e=this.context;return(t==="WEBGL_compressed_texture_s3tc"||t==="s3tc")&&e.s3tc||(t==="WEBGL_compressed_texture_pvrtc"||t==="pvrtc")&&e.pvrtc||(t==="WEBGL_compressed_texture_etc"||t==="etc")&&e.etc||(t==="WEBGL_compressed_texture_etc1"||t==="etc1")&&e.etc1||(t==="WEBGL_compressed_texture_astc"||t==="astc")&&e.astc||(t==="EXT_texture_compression_bptc"||t==="bc7")&&e.bc7};function LQt(t,e,n){let i=t._frameState,o=t._context,a=t._view.oit,s=i.shadowState.lightShadowMaps,l=i.shadowState.lightShadowsEnabled,r=e.derivedCommands;c(e.pickId)&&(r.picking=ZW.createPickDerivedCommand(t,e,o,r.picking)),e.pickOnly||(r.depth=ZW.createDepthOnlyDerivedCommand(t,e,o,r.depth)),r.originalCommand=e,t._hdr&&(r.hdr=ZW.createHdrCommand(e,o,r.hdr),e=r.hdr.command,r=e.derivedCommands),l&&e.receiveShadows&&(r.shadows=fW.createReceiveDerivedCommand(s,e,n,o,r.shadows)),e.pass===Pt.TRANSLUCENT&&c(a)&&a.isSupported()&&(l&&e.receiveShadows?(r.oit=c(r.oit)?r.oit:{},r.oit.shadows=a.createDerivedCommands(r.shadows.receiveCommand,o,r.oit.shadows)):r.oit=a.createDerivedCommands(e,o,r.oit))}fo.prototype.updateDerivedCommands=function(t){if(!c(t.derivedCommands))return;let e=this._frameState,n=this._context,i=!1,o=e.shadowState.lastDirtyTime;t.lastDirtyTime!==o&&(t.lastDirtyTime=o,t.dirty=!0,i=!0);let a=e.useLogDepth,s=this._hdr,l=t.derivedCommands,r=c(l.logDepth),d=c(l.hdr),m=c(l.originalCommand),h=a&&!r,u=s&&!d,R=(!a||!s)&&!m;if(t.dirty=t.dirty||h||u||R,t.dirty){t.dirty=!1;let V=e.shadowState.shadowMaps;e.shadowState.shadowsEnabled&&t.castShadows&&(l.shadows=fW.createCastDerivedCommand(V,t,i,n,l.shadows)),(r||h)&&(l.logDepth=ZW.createLogDepthCommand(t,n,l.logDepth),LQt(this,l.logDepth.command,i)),(m||R)&&LQt(this,t,i)}};var CXe=new EV({pass:ns.RENDER}),Rst=new EV({pass:ns.PRELOAD}),bst=new EV({pass:ns.PRELOAD_FLIGHT}),IXe=new EV({pass:ns.REQUEST_RENDER_MODE_DEFER_CHECK}),MQt=new Ft,Wst;function NXe(t){let e=t.globe;if(t._mode===Vt.SCENE3D&&c(e)&&e.show&&!t._cameraUnderground&&!t._globeTranslucencyState.translucent){let n=e.ellipsoid,i=t.frameState.minimumTerrainHeight;return MQt.radius=n.minimumRadius+i,Wst=u_.fromBoundingSphere(MQt,t.camera.positionWC,Wst),Wst}}fo.prototype.clearPasses=function(t){t.render=!1,t.pick=!1,t.pickVoxel=!1,t.depth=!1,t.postProcess=!1,t.offscreen=!1};function DQt(t,e,n){let i=t._frameState;i.frameNumber=e,i.time=rt.clone(n,i.time)}fo.prototype.updateFrameState=function(){let t=this.camera,e=this._frameState;e.commandList.length=0,e.shadowMaps.length=0,e.brdfLutGenerator=this._brdfLutGenerator,e.environmentMap=this.skyBox&&this.skyBox._cubeMap,e.mode=this._mode,e.morphTime=this.morphTime,e.mapProjection=this.mapProjection,e.camera=t,e.cullingVolume=t.frustum.computeCullingVolume(t.positionWC,t.directionWC,t.upWC),e.occluder=NXe(this),e.minimumTerrainHeight=0,e.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,e.invertClassification=this.invertClassification,e.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof wn||this.camera.frustum instanceof el),e.light=this.light,e.cameraUnderground=this._cameraUnderground,e.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;c(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),e.verticalExaggeration=this.verticalExaggeration,e.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,c(this._specularEnvironmentMapAtlas)&&this._specularEnvironmentMapAtlas.ready?(e.specularEnvironmentMaps=this._specularEnvironmentMapAtlas.texture,e.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentMapAtlas.maximumMipmapLevel):(e.specularEnvironmentMaps=void 0,e.specularEnvironmentMapsMaximumLOD=void 0),e.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=v.clone(this.invertClassificationColor,this._actualInvertClassificationColor),M1.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),e.invertClassificationColor=this._actualInvertClassificationColor,c(this.globe)?e.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:e.maximumScreenSpaceError=2,this.clearPasses(e.passes),e.tilesetPassState=void 0};fo.prototype.isVisible=function(t,e,n){return c(t)&&(!c(t.boundingVolume)||!t.cull||e.computeVisibility(t.boundingVolume)!==yn.OUTSIDE&&(!c(n)||!t.occlude||!t.boundingVolume.isOccluded(n)))};var Ij=new L(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);Ij=L.inverseTransformation(Ij,Ij);function yXe(t,e,n,i){let o=e._frameState,a=o.context,s=t.boundingVolume;c(e._debugVolume)&&e._debugVolume.destroy();let l,r=p.clone(s.center);if(o.mode!==Vt.SCENE3D){r=L.multiplyByPoint(Ij,r,r);let u=o.mapProjection,R=u.unproject(r);r=u.ellipsoid.cartographicToCartesian(R)}if(c(s.radius)){let u=s.radius;l=gi.toWireframe(Cr.createGeometry(new Cr({radii:new p(u,u,u),vertexFormat:jn.FLAT_VERTEX_FORMAT}))),e._debugVolume=new Wi({geometryInstances:new $e({geometry:l,modelMatrix:L.fromTranslation(r),attributes:{color:new En(1,0,0,1)}}),appearance:new jn({flat:!0,translucent:!1}),asynchronous:!1})}else{let u=s.halfAxes;l=gi.toWireframe(Am.createGeometry(Am.fromDimensions({dimensions:new p(2,2,2),vertexFormat:jn.FLAT_VERTEX_FORMAT}))),e._debugVolume=new Wi({geometryInstances:new $e({geometry:l,modelMatrix:L.fromRotationTranslation(u,r,new L),attributes:{color:new En(1,0,0,1)}}),appearance:new jn({flat:!0,translucent:!1}),asynchronous:!1})}let d=o.commandList,m=o.commandList=[];e._debugVolume.update(o),t=m[0],o.useLogDepth&&(t=ZW.createLogDepthCommand(t,a).command);let h;c(i)&&(h=n.framebuffer,n.framebuffer=i),t.execute(a,n),c(h)&&(n.framebuffer=h),o.commandList=d}function Td(t,e,n,i,o){let a=e._frameState;if(c(e.debugCommandFilter)&&!e.debugCommandFilter(t))return;if(t instanceof ao){t.execute(n,i);return}t.debugShowBoundingVolume&&c(t.boundingVolume)&&yXe(t,e,i,o),a.useLogDepth&&c(t.derivedCommands.logDepth)&&(t=t.derivedCommands.logDepth.command);let s=a.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&e._hdr&&c(t.derivedCommands)&&c(t.derivedCommands.hdr)&&(t=t.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth&&c(t.derivedCommands.picking)){t=t.derivedCommands.picking.pickCommand,t.execute(n,i);return}else if(c(t.derivedCommands.depth)){t=t.derivedCommands.depth.depthOnlyCommand,t.execute(n,i);return}}if(e.debugShowCommands||e.debugShowFrustums){e._debugInspector.executeDebugShowFrustumsCommand(e,t,i);return}a.shadowState.lightShadowsEnabled&&t.receiveShadows&&c(t.derivedCommands.shadows)?t.derivedCommands.shadows.receiveCommand.execute(n,i):t.execute(n,i)}function a5(t,e,n,i){let o=e._frameState,a=t.derivedCommands;c(a)&&(o.useLogDepth&&c(a.logDepth)&&(t=a.logDepth.command),a=t.derivedCommands,c(a.picking)?(t=a.picking.pickCommand,t.execute(n,i)):c(a.depth)&&(t=a.depth.depthOnlyCommand,t.execute(n,i)))}function OQt(t,e,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)}function BXe(t,e,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)+k.EPSILON12}function QXe(t,e,n,i,o){let a=t.context;uW(i,OQt,t.camera.positionWC),c(o)&&e(o.unclassifiedCommand,t,a,n);let s=i.length;for(let l=0;l<s;++l)e(i[l],t,a,n)}function kXe(t,e,n,i,o){let a=t.context;uW(i,BXe,t.camera.positionWC),c(o)&&e(o.unclassifiedCommand,t,a,n);let s=i.length;for(let l=0;l<s;++l)e(i[l],t,a,n)}function YXe(t,e,n,i){let o=t.context;uW(i,OQt,t.camera.positionWC);let a=i.length;for(let s=0;s<a;++s)e(i[s],t,o,n)}var xXe=new Io,XXe=new em,JXe=new wn,LXe=new el;function Fst(t,e){let{camera:n,context:i,frameState:o}=t,{uniformState:a}=i;a.updateCamera(n);let s;c(n.frustum.fov)?s=n.frustum.clone(xXe):c(n.frustum.infiniteProjectionMatrix)?s=n.frustum.clone(XXe):c(n.frustum.width)?s=n.frustum.clone(JXe):s=n.frustum.clone(LXe),s.near=n.frustum.near,s.far=n.frustum.far,a.updateFrustum(s),a.updatePass(Pt.ENVIRONMENT);let l=o.passes,r=l.pick||l.pickVoxel,d=t._environmentState,m=t._view,h=d.renderTranslucentDepthForPick,u=d.useWebVR;if(!r){let E=d.skyBoxCommand;if(c(E)&&Td(E,t,i,e),d.isSkyAtmosphereVisible&&Td(d.skyAtmosphereCommand,t,i,e),d.isSunVisible&&(d.sunDrawCommand.execute(i,e),t.sunBloom&&!u)){let I;d.useGlobeDepthFramebuffer?I=m.globeDepth.framebuffer:d.usePostProcess?I=m.sceneFramebuffer.framebuffer:I=d.originalFramebuffer,t._sunPostProcess.execute(i),t._sunPostProcess.copy(i,I),e.framebuffer=I}d.isMoonVisible&&d.moonCommand.execute(i,e)}let R;d.useOIT?(c(t._executeOITFunction)||(t._executeOITFunction=function(E,I,B,X,_){m.globeDepth.prepareColorTextures(i),m.oit.executeCommands(E,I,B,X,_)}),R=t._executeOITFunction):l.render?R=QXe:R=kXe;let V=m.frustumCommandsList,F=V.length,U=d.clearGlobeDepth,G=d.useDepthPlane,A=t._globeTranslucencyState,S=A.translucent,g=t._view.globeTranslucencyFramebuffer,C=t._depthClearCommand,y=t._stencilClearCommand,Y=t._classificationStencilClearCommand,Q=t._depthPlane,J=d.usePostProcessSelected,M=n.position.z,Z;for(let E=0;E<F;++E){let I=F-E-1,B=V[I];t.mode===Vt.SCENE2D?(n.position.z=M-B.near+1,s.far=Math.max(1,B.far-B.near),s.near=1,a.update(o),a.updateFrustum(s)):(s.near=I!==0?B.near*t.opaqueFrustumNearOffset:B.near,s.far=B.far,a.updateFrustum(s)),C.execute(i,e),i.stencilBuffer&&y.execute(i,e),a.updatePass(Pt.GLOBE);let X=B.commands[Pt.GLOBE],_=B.indices[Pt.GLOBE];if(S)A.executeGlobeCommands(B,Td,g,t,e);else for(Z=0;Z<_;++Z)Td(X[Z],t,i,e);let P=m.globeDepth;if(c(P)&&d.useGlobeDepthFramebuffer&&P.executeCopyDepth(i,e),!d.renderTranslucentDepthForPick)if(a.updatePass(Pt.TERRAIN_CLASSIFICATION),X=B.commands[Pt.TERRAIN_CLASSIFICATION],_=B.indices[Pt.TERRAIN_CLASSIFICATION],S)A.executeGlobeClassificationCommands(B,Td,g,t,e);else for(Z=0;Z<_;++Z)Td(X[Z],t,i,e);if(U&&(C.execute(i,e),G&&Q.execute(i,e)),!d.useInvertClassification||r||d.renderTranslucentDepthForPick){for(a.updatePass(Pt.CESIUM_3D_TILE),X=B.commands[Pt.CESIUM_3D_TILE],_=B.indices[Pt.CESIUM_3D_TILE],Z=0;Z<_;++Z)Td(X[Z],t,i,e);if(_>0&&(c(P)&&d.useGlobeDepthFramebuffer&&(P.prepareColorTextures(i,U),P.executeUpdateDepth(i,e,U,P.depthStencilTexture)),!d.renderTranslucentDepthForPick))for(a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION),X=B.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION],_=B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION],Z=0;Z<_;++Z)Td(X[Z],t,i,e)}else{t._invertClassification.clear(i,e);let nt=e.framebuffer;for(e.framebuffer=t._invertClassification._fbo.framebuffer,a.updatePass(Pt.CESIUM_3D_TILE),X=B.commands[Pt.CESIUM_3D_TILE],_=B.indices[Pt.CESIUM_3D_TILE],Z=0;Z<_;++Z)Td(X[Z],t,i,e);for(c(P)&&d.useGlobeDepthFramebuffer&&(t._invertClassification.prepareTextures(i),P.executeUpdateDepth(i,e,U,t._invertClassification._fbo.getDepthStencilTexture())),a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),X=B.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW],_=B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW],Z=0;Z<_;++Z)Td(X[Z],t,i,e);for(e.framebuffer=nt,t._invertClassification.executeClassified(i,e),o.invertClassificationColor.alpha===1&&t._invertClassification.executeUnclassified(i,e),_>0&&i.stencilBuffer&&Y.execute(i,e),a.updatePass(Pt.CESIUM_3D_TILE_CLASSIFICATION),X=B.commands[Pt.CESIUM_3D_TILE_CLASSIFICATION],_=B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION],Z=0;Z<_;++Z)Td(X[Z],t,i,e)}for(_>0&&i.stencilBuffer&&y.execute(i,e),a.updatePass(Pt.VOXELS),X=B.commands[Pt.VOXELS],_=B.indices[Pt.VOXELS],X.length=_,YXe(t,Td,e,X),a.updatePass(Pt.OPAQUE),X=B.commands[Pt.OPAQUE],_=B.indices[Pt.OPAQUE],Z=0;Z<_;++Z)Td(X[Z],t,i,e);I!==0&&t.mode!==Vt.SCENE2D&&(s.near=B.near,a.updateFrustum(s));let w;if(!r&&d.useInvertClassification&&o.invertClassificationColor.alpha<1&&(w=t._invertClassification),a.updatePass(Pt.TRANSLUCENT),X=B.commands[Pt.TRANSLUCENT],X.length=B.indices[Pt.TRANSLUCENT],R(t,Td,e,X,w),B.indices[Pt.CESIUM_3D_TILE_CLASSIFICATION]>0&&m.translucentTileClassification.isSupported()&&(m.translucentTileClassification.executeTranslucentCommands(t,Td,e,X,P.depthStencilTexture),m.translucentTileClassification.executeClassificationCommands(t,Td,e,B)),i.depthTexture&&t.useDepthPicking&&(d.useGlobeDepthFramebuffer||h)){let nt=P.depthStencilTexture,$=t._picking.getPickDepth(t,I);$.update(i,nt),$.executeCopyDepth(i,e)}if(r||!J)continue;let H=e.framebuffer;if(e.framebuffer=m.sceneFramebuffer.getIdFramebuffer(),s.near=I!==0?B.near*t.opaqueFrustumNearOffset:B.near,s.far=B.far,a.updateFrustum(s),a.updatePass(Pt.GLOBE),X=B.commands[Pt.GLOBE],_=B.indices[Pt.GLOBE],S)A.executeGlobeCommands(B,a5,g,t,e);else for(Z=0;Z<_;++Z)a5(X[Z],t,i,e);for(U&&(C.framebuffer=e.framebuffer,C.execute(i,e),C.framebuffer=void 0),U&&G&&Q.execute(i,e),a.updatePass(Pt.CESIUM_3D_TILE),X=B.commands[Pt.CESIUM_3D_TILE],_=B.indices[Pt.CESIUM_3D_TILE],Z=0;Z<_;++Z)a5(X[Z],t,i,e);for(a.updatePass(Pt.OPAQUE),X=B.commands[Pt.OPAQUE],_=B.indices[Pt.OPAQUE],Z=0;Z<_;++Z)a5(X[Z],t,i,e);for(a.updatePass(Pt.TRANSLUCENT),X=B.commands[Pt.TRANSLUCENT],_=B.indices[Pt.TRANSLUCENT],Z=0;Z<_;++Z)a5(X[Z],t,i,e);e.framebuffer=H}}function HQt(t){t.context.uniformState.updatePass(Pt.COMPUTE);let n=t._environmentState.sunComputeCommand;c(n)&&n.execute(t._computeEngine);let i=t._computeCommandList,o=i.length;for(let a=0;a<o;++a)i[a].execute(t._computeEngine)}function MXe(t,e){t.context.uniformState.updatePass(Pt.OVERLAY);let i=t.context,o=t._overlayCommandList,a=o.length;for(let s=0;s<a;++s)o[s].execute(i,e)}function _Xe(t,e,n){let i=n.shadowMapCullingVolume,o=n.isPointLight,a=n.passes,s=a.length,l=e.length;for(let r=0;r<l;++r){let d=e[r];if(t.updateDerivedCommands(d),d.castShadows&&(d.pass===Pt.GLOBE||d.pass===Pt.CESIUM_3D_TILE||d.pass===Pt.OPAQUE||d.pass===Pt.TRANSLUCENT)&&t.isVisible(d,i))if(o)for(let m=0;m<s;++m)a[m].commandList.push(d);else if(s===1)a[0].commandList.push(d);else{let m=!1;for(let h=s-1;h>=0;--h){let u=a[h].cullingVolume;if(t.isVisible(d,u))a[h].commandList.push(d),m=!0;else if(m)break}}}}function wQt(t){let e=t.frameState,n=e.shadowState.shadowMaps,i=n.length;if(!e.shadowState.shadowsEnabled)return;let o=t.context,a=o.uniformState;for(let s=0;s<i;++s){let l=n[s];if(l.outOfView)continue;let r=l.passes,d=r.length;for(let h=0;h<d;++h)r[h].commandList.length=0;let m=t.frameState.commandList;_Xe(t,m,l);for(let h=0;h<d;++h){let u=l.passes[h];a.updateCamera(u.camera),l.updatePass(o,h);let R=u.commandList.length;for(let V=0;V<R;++V){let F=u.commandList[V];a.updatePass(F.pass),Td(F.derivedCommands.shadows.castCommands[s],t,o,u.passState)}}}}var DXe=new p;fo.prototype.updateAndExecuteCommands=function(t,e){let i=this._frameState.mode;this._environmentState.useWebVR?OXe(this,t,e):i!==Vt.SCENE2D||this._mapMode2D===eh.ROTATE?TU(!0,this,t,e):(Ust(this,t,e),$Xe(this,t))};function OXe(t,e,n){let i=t._view,o=i.camera,s=t._environmentState.renderTranslucentDepthForPick;Ust(t,e,n),PQt(t),i.createPotentiallyVisibleSet(t),HQt(t),s||wQt(t);let l=e.viewport;l.x=0,l.y=0,l.width=l.width*.5;let r=Aa.clone(o,t._cameraVR);r.frustum=o.frustum;let d=o.frustum.near,m=d*f(t.focalLength,5),h=f(t.eyeSeparation,m/30),u=p.multiplyByScalar(r.right,h*.5,DXe);o.frustum.aspectRatio=l.width/l.height;let R=.5*h*d/m;p.add(r.position,u,o.position),o.frustum.xOffset=R,Fst(t,e),l.x=l.width,p.subtract(r.position,u,o.position),o.frustum.xOffset=-R,Fst(t,e),Aa.clone(r,o)}var HXe=new gt(Math.PI,k.PI_OVER_TWO),wXe=new p,PXe=new p,vXe=new L,KXe=new L,zXe=new p,jXe=new p,qXe=new Fe;function $Xe(t,e){let n=t.context,i=t.frameState,o=t.camera,a=e.viewport,s=Fe.clone(a,qXe);e.viewport=s;let l=HXe,r=wXe;t.mapProjection.project(l,r);let m=p.clone(o.position,PXe),h=L.clone(o.transform,KXe),u=o.frustum.clone();o._setTransform(L.IDENTITY);let R=L.computeViewportTransformation(s,0,1,vXe),V=o.frustum.projectionMatrix,F=o.positionWC.y,U=p.fromElements(k.sign(F)*r.x-F,0,-o.positionWC.x,zXe),G=Pe.pointToGLWindowCoordinates(V,R,U,jXe);G.x=Math.floor(G.x);let A=s.x,S=s.width;if(F===0||G.x<=A||G.x>=A+S)TU(!0,t,e);else if(Math.abs(A+S*.5-G.x)<1)s.width=G.x-s.x,o.position.x*=k.sign(o.position.x),o.frustum.right=0,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),TU(!0,t,e),s.x=G.x,o.position.x=-o.position.x,o.frustum.right=-o.frustum.left,o.frustum.left=0,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),TU(!1,t,e);else if(G.x>A+S*.5){s.width=G.x-A;let g=o.frustum.right;o.frustum.right=r.x-F,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),TU(!0,t,e),s.x=G.x,s.width=A+S-G.x,o.position.x=-o.position.x,o.frustum.left=-o.frustum.right,o.frustum.right=g-o.frustum.right*2,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),TU(!1,t,e)}else{s.x=G.x,s.width=A+S-G.x;let g=o.frustum.left;o.frustum.left=-r.x-F,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),TU(!0,t,e),s.x=A,s.width=G.x-A,o.position.x=-o.position.x,o.frustum.right=-o.frustum.left,o.frustum.left=g-o.frustum.left*2,i.cullingVolume=o.frustum.computeCullingVolume(o.positionWC,o.directionWC,o.upWC),n.uniformState.update(i),TU(!1,t,e)}o._setTransform(h),p.clone(m,o.position),o.frustum=u.clone(),e.viewport=a}function TU(t,e,n,i){let o=e._environmentState,a=e._view,s=o.renderTranslucentDepthForPick;t||(e.frameState.commandList.length=0),PQt(e),a.createPotentiallyVisibleSet(e),t&&(c(i)&&Ust(e,n,i),HQt(e),s||wQt(e)),Fst(e,n)}var _Qt=new Jl;fo.prototype.updateEnvironment=function(){let t=this._frameState,e=this._view,n=this._environmentState,i=t.passes.render,o=t.passes.offscreen,a=this.atmosphere,s=this.skyAtmosphere,l=this.globe,r=this._globeTranslucencyState;if(!i||this._mode!==Vt.SCENE2D&&e.camera.frustum instanceof wn||!r.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(c(s)){if(c(l))s.setDynamicLighting(VT.fromGlobeFlags(l)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!l.show||l._surface._tilesToRender.length>0;else{let G=a.dynamicLighting;s.setDynamicLighting(G),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(t,l),c(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=c(this.skyBox)?this.skyBox.update(t,this._hdr):void 0;let U=c(this.sun)?this.sun.update(t,e.passState,this._hdr):void 0;n.sunDrawCommand=c(U)?U.drawCommand:void 0,n.sunComputeCommand=c(U)?U.computeCommand:void 0,n.moonCommand=c(this.moon)?this.moon.update(t):void 0}let d=n.clearGlobeDepth=c(l)&&l.show&&(!l.depthTestAgainstTerrain||this.mode===Vt.SCENE2D);(n.useDepthPlane=d&&this.mode===Vt.SCENE3D&&r.useDepthPlane)&&this._depthPlane.update(t),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==Vt.SCENE2D&&!o;let h=t.mode===Vt.SCENE3D&&!r.sunVisibleThroughGlobe?t.occluder:void 0,u=t.cullingVolume,R=_Qt.planes;for(let U=0;U<5;++U)R[U]=u.planes[U];u=_Qt,n.isSkyAtmosphereVisible=c(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(n.sunDrawCommand,u,h),n.isMoonVisible=this.isVisible(n.moonCommand,u,h);let V=this.specularEnvironmentMaps,F=this._specularEnvironmentMapAtlas;c(V)&&(!c(F)||F.url!==V)?(F=F&&F.destroy(),this._specularEnvironmentMapAtlas=new du(V)):!c(V)&&c(F)&&(F.destroy(),this._specularEnvironmentMapAtlas=void 0),c(this._specularEnvironmentMapAtlas)&&this._specularEnvironmentMapAtlas.update(t)};function tJe(t){let e=t._frameState;t.debugShowFrustumPlanes!==t._debugShowFrustumPlanes&&(t.debugShowFrustumPlanes?t._debugFrustumPlanes=new JR({camera:t.camera,updateOnChange:!1,frustumSplits:e.frustumSplits}):t._debugFrustumPlanes=t._debugFrustumPlanes&&t._debugFrustumPlanes.destroy(),t._debugShowFrustumPlanes=t.debugShowFrustumPlanes),c(t._debugFrustumPlanes)&&t._debugFrustumPlanes.update(e)}function eJe(t){let e=t._frameState,n=e.shadowMaps,i=n.length,o=i>0&&!e.passes.pick&&!e.passes.pickVoxel&&t.mode===Vt.SCENE3D;if(o!==e.shadowState.shadowsEnabled&&(++e.shadowState.lastDirtyTime,e.shadowState.shadowsEnabled=o),e.shadowState.lightShadowsEnabled=!1,!!o){for(let a=0;a<i;++a)if(n[a]!==e.shadowState.shadowMaps[a]){++e.shadowState.lastDirtyTime;break}e.shadowState.shadowMaps.length=0,e.shadowState.lightShadowMaps.length=0;for(let a=0;a<i;++a){let s=n[a];s.update(e),e.shadowState.shadowMaps.push(s),s.fromLightSource&&(e.shadowState.lightShadowMaps.push(s),e.shadowState.lightShadowsEnabled=!0),s.dirty&&(++e.shadowState.lastDirtyTime,s.dirty=!1)}}}function PQt(t){let e=t._frameState;t._groundPrimitives.update(e),t._primitives.update(e),tJe(t),eJe(t),t._globe&&t._globe.render(e)}function Ust(t,e,n){let i=t._context,o=t._frameState,a=t._environmentState,s=t._view,l=t._frameState.passes,r=l.pick||l.pickVoxel;c(s.globeDepth)&&(s.globeDepth.picking=r);let d=a.useWebVR;a.originalFramebuffer=e.framebuffer,c(t.sun)&&t.sunBloom!==t._sunBloom?(t.sunBloom&&!d?t._sunPostProcess=new y9:c(t._sunPostProcess)&&(t._sunPostProcess=t._sunPostProcess.destroy()),t._sunBloom=t.sunBloom):!c(t.sun)&&c(t._sunPostProcess)&&(t._sunPostProcess=t._sunPostProcess.destroy(),t._sunBloom=!1);let m=t._clearColorCommand;v.clone(n,m.color),m.execute(i,e);let h=a.useGlobeDepthFramebuffer=c(s.globeDepth);h&&(s.globeDepth.update(i,e,s.viewport,t.msaaSamples,t._hdr,a.clearGlobeDepth),s.globeDepth.clear(i,e,n));let u=s.oit,R=a.useOIT=!r&&c(u)&&u.isSupported();R&&(u.update(i,e,s.globeDepth.colorFramebufferManager,t._hdr,t.msaaSamples),u.clear(i,e,n),a.useOIT=u.isSupported());let V=t.postProcessStages,F=a.usePostProcess=!r&&(t._hdr||V.length>0||V.ambientOcclusion.enabled||V.fxaa.enabled||V.bloom.enabled);if(a.usePostProcessSelected=!1,F&&(s.sceneFramebuffer.update(i,s.viewport,t._hdr,t.msaaSamples),s.sceneFramebuffer.clear(i,e,n),V.update(i,o.useLogDepth,t._hdr),V.clear(i),F=a.usePostProcess=V.ready,a.usePostProcessSelected=F&&V.hasSelected),a.isSunVisible&&t.sunBloom&&!d?(e.framebuffer=t._sunPostProcess.update(e),t._sunPostProcess.clear(i,e,n)):h?e.framebuffer=s.globeDepth.framebuffer:F&&(e.framebuffer=s.sceneFramebuffer.framebuffer),c(e.framebuffer)&&m.execute(i,e),a.useInvertClassification=!r&&c(e.framebuffer)&&t.invertClassification){let G;if(t.frameState.invertClassificationColor.alpha===1&&a.useGlobeDepthFramebuffer&&(G=s.globeDepth.framebuffer),c(G)||i.depthTexture){if(t._invertClassification.previousFramebuffer=G,t._invertClassification.update(i,t.msaaSamples,s.globeDepth.colorFramebufferManager),t._invertClassification.clear(i,e),t.frameState.invertClassificationColor.alpha<1&&R){let A=t._invertClassification.unclassifiedCommand,S=A.derivedCommands;S.oit=u.createDerivedCommands(A,i,S.oit)}}else a.useInvertClassification=!1}t._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(t._hdr,s.viewport,i,e)}fo.prototype.resolveFramebuffers=function(t){let e=this._context,n=this._environmentState,i=this._view,o=i.globeDepth;c(o)&&o.prepareColorTextures(e);let a=n.useOIT,s=n.useGlobeDepthFramebuffer,l=n.usePostProcess,r=n.originalFramebuffer,d=s?o.colorFramebufferManager:void 0,m=i.sceneFramebuffer._colorFramebuffer,h=i.sceneFramebuffer.idFramebuffer;a&&(t.framebuffer=l?m.framebuffer:r,i.oit.execute(e,t));let u=i.translucentTileClassification;if(u.hasTranslucentDepth&&u.isSupported()&&u.execute(this,t),l){i.sceneFramebuffer.prepareColorTextures(e);let R=m;s&&!a&&(R=d);let V=this.postProcessStages,F=R.getColorTexture(0),U=h.getColorTexture(0),G=f(d,m).getDepthStencilTexture();V.execute(e,F,G,U),V.copy(e,r)}!a&&!l&&s&&(t.framebuffer=r,o.executeCopyColor(e,t))};function nJe(t){let e=t._frameState.afterRender;for(let n=0,i=e.length;n<i;++n)e[n]()&&t.requestRender();e.length=0}function iJe(t){if(t.mode===Vt.MORPHING)return;let n=t.camera.positionCartographic;return t.getHeight(n)}fo.prototype.getHeight=function(t,e){if(!c(t))return;let n=e===Ge.CLAMP_TO_TERRAIN||e===Ge.RELATIVE_TO_TERRAIN,i=e===Ge.CLAMP_TO_3D_TILE||e===Ge.RELATIVE_TO_3D_TILE;if(!c(t))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=this.primitives.length;for(let l=0;l<s;++l){let r=this.primitives.get(l);if(!r.isCesium3DTileset||!r.show||!r.enableCollision)continue;let d=r.getHeight(t,this);c(d)&&d>o&&(o=d)}}let a=this._globe;if(!i&&c(a)&&a.show){let s=a.getHeight(t);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var fst=new gt;fo.prototype.updateHeight=function(t,e,n){let i=()=>{gt.clone(t,fst);let R=this.getHeight(t,n);c(R)&&(fst.height=R,e(fst))},o=n===Ge.CLAMP_TO_TERRAIN||n===Ge.RELATIVE_TO_TERRAIN,a=n===Ge.CLAMP_TO_3D_TILE||n===Ge.RELATIVE_TO_3D_TILE,s;!a&&c(this.globe)&&(s=this.globe._surface.updateHeight(t,i));let l={},r=this.globe?.ellipsoid,d=R=>{if(o||R.isDestroyed()||!R.isCesium3DTileset)return;let V=R.updateHeight(t,i,r);l[R.id]=V};if(!o){let R=this.primitives.length;for(let V=0;V<R;++V){let F=this.primitives.get(V);d(F)}}let m=this.primitives.primitiveAdded.addEventListener(d),h=this.primitives.primitiveRemoved.addEventListener(R=>{R.isDestroyed()||!R.isCesium3DTileset||(c(l[R.id])&&l[R.id](),delete l[R.id])});return()=>{s=s&&s(),Object.values(l).forEach(R=>R()),l={},m(),h()}};function oJe(t){let e=t.camera,n=t._mode,i=t._screenSpaceCameraController,o=e.positionCartographic;if(!c(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===Vt.SCENE2D||n===Vt.MORPHING)return!1;let a=t._globeHeight;return c(a)&&o.height<a}fo.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){c(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=iJe(this),this._globeHeightDirty=!1;let t=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(t,e=>{this.isDestroyed()||(this._globeHeight=e.height)})}this._cameraUnderground=oJe(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),c(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function aJe(t,e){if(t.debugShowFramesPerSecond){if(!c(t._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",t._canvas.parentNode.appendChild(n);let o=new RW({container:n});t._performanceDisplay=o,t._performanceContainer=n}t._performanceDisplay.throttled=t.requestRenderMode,t._performanceDisplay.update(e)}else c(t._performanceDisplay)&&(t._performanceDisplay=t._performanceDisplay&&t._performanceDisplay.destroy(),t._performanceContainer.parentNode.removeChild(t._performanceContainer))}function sJe(t){t._jobScheduler.resetBudgets();let e=t._frameState;t.primitives.prePassesUpdate(e),c(t.globe)&&t.globe.update(e),t._picking.update(),e.creditDisplay.update()}function lJe(t){let e=t._frameState;t.primitives.postPassesUpdate(e),xd.update()}var rJe=new v;function dJe(t){let e=t._frameState,n=t.context,i=n.uniformState,o=t._defaultView;t._view=o,t.updateFrameState(),e.passes.render=!0,e.passes.postProcess=t.postProcessStages.hasSelected,e.tilesetPassState=CXe;let a=f(t.backgroundColor,v.BLACK);t._hdr&&(a=v.clone(a,rJe),a.red=Math.pow(a.red,t.gamma),a.green=Math.pow(a.green,t.gamma),a.blue=Math.pow(a.blue,t.gamma)),e.backgroundColor=a,e.atmosphere=t.atmosphere,t.fog.update(e),i.update(e);let s=t.shadowMap;c(s)&&s.enabled&&(!c(t.light)||t.light instanceof gb?p.negate(i.sunDirectionWC,t._shadowMapCamera.direction):p.clone(t.light.direction,t._shadowMapCamera.direction),e.shadowMaps.push(s)),t._computeCommandList.length=0,t._overlayCommandList.length=0;let l=o.viewport;l.x=0,l.y=0,l.width=n.drawingBufferWidth,l.height=n.drawingBufferHeight;let r=o.passState;r.framebuffer=void 0,r.blendingEnabled=void 0,r.scissorTest=void 0,r.viewport=Fe.clone(l,r.viewport),c(t.globe)&&t.globe.beginFrame(e),t.updateEnvironment(),t.updateAndExecuteCommands(r,a),t.resolveFramebuffers(r),r.framebuffer=void 0,MXe(t,r),c(t.globe)&&(t.globe.endFrame(e),t.globe.tilesLoaded||(t._renderRequested=!0)),n.endFrame()}function MT(t,e){try{e(t)}catch(n){if(t._renderError.raiseEvent(t,n),t.rethrowRenderErrors)throw n}}function cJe(t){return t._picking.updateMostDetailedRayPicks(t)}fo.prototype.render=function(t){this._preUpdate.raiseEvent(this,t);let e=this._frameState;e.newFrame=!1,c(t)||(t=rt.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===Vt.MORPHING;if(!i&&c(this.maximumRenderTimeChange)&&c(this._lastRenderTime)){let o=Math.abs(rt.secondsDifference(this._lastRenderTime,t));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=rt.clone(t,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=k.incrementWrap(e.frameNumber,15e6,1);DQt(this,o,t),e.newFrame=!0}MT(this,sJe),this.primitives.show&&(MT(this,cJe),MT(this,mJe),MT(this,hJe),i||MT(this,pJe)),this._postUpdate.raiseEvent(this,t),i&&(this._preRender.raiseEvent(this,t),e.creditDisplay.beginFrame(),MT(this,dJe)),aJe(this,i),MT(this,lJe),nJe(this),i&&(this._postRender.raiseEvent(this,t),e.creditDisplay.endFrame())};fo.prototype.forceRender=function(t){this._renderRequested=!0,this.render(t)};fo.prototype.requestRender=function(){this._renderRequested=!0};fo.prototype.clampLineWidth=function(t){return Math.max(Tn.minimumAliasedLineWidth,Math.min(t,Tn.maximumAliasedLineWidth))};fo.prototype.pick=function(t,e,n){return this._picking.pick(this,t,e,n)};fo.prototype.pickVoxel=function(t,e,n){let i=this.pick(t,e,n);if(!c(i))return;let o=i.primitive;if(!(o instanceof SU))return;let a=this._picking.pickVoxelCoordinate(this,t,e,n),s=255*a[0]+a[1],l=o._traversal.findKeyframeNode(s);if(!c(l))return;let r=255*a[2]+a[3];return k9.fromKeyframeNode(o,s,r,l)};fo.prototype.pickPositionWorldCoordinates=function(t,e){return this._picking.pickPositionWorldCoordinates(this,t,e)};fo.prototype.pickPosition=function(t,e){return this._picking.pickPosition(this,t,e)};fo.prototype.drillPick=function(t,e,n,i){return this._picking.drillPick(this,t,e,n,i)};function mJe(t){let e=t._frameState;Rst.camera=e.camera,Rst.cullingVolume=e.cullingVolume,t.primitives.updateForPass(e,Rst)}function hJe(t){let e=t._frameState;if(!e.camera.canPreloadFlight())return;bst.camera=t.preloadFlightCamera,bst.cullingVolume=t.preloadFlightCullingVolume,t.primitives.updateForPass(e,bst)}function pJe(t){t.primitives.updateForPass(t._frameState,IXe)}fo.prototype.pickFromRay=function(t,e,n){return this._picking.pickFromRay(this,t,e,n)};fo.prototype.drillPickFromRay=function(t,e,n,i){return this._picking.drillPickFromRay(this,t,e,n,i)};fo.prototype.pickFromRayMostDetailed=function(t,e,n){return this._picking.pickFromRayMostDetailed(this,t,e,n)};fo.prototype.drillPickFromRayMostDetailed=function(t,e,n,i){return this._picking.drillPickFromRayMostDetailed(this,t,e,n,i)};fo.prototype.sampleHeight=function(t,e,n){return this._picking.sampleHeight(this,t,e,n)};fo.prototype.clampToHeight=function(t,e,n,i){return this._picking.clampToHeight(this,t,e,n,i)};fo.prototype.sampleHeightMostDetailed=function(t,e,n){return this._picking.sampleHeightMostDetailed(this,t,e,n)};fo.prototype.clampToHeightMostDetailed=function(t,e,n){return this._picking.clampToHeightMostDetailed(this,t,e,n)};fo.prototype.cartesianToCanvasCoordinates=function(t,e){return qo.wgs84ToWindowCoordinates(this,t,e)};fo.prototype.completeMorph=function(){this._transitioner.completeMorph()};fo.prototype.morphTo2D=function(t){let e,n=this.globe;c(n)?e=n.ellipsoid:e=this.mapProjection.ellipsoid,t=f(t,2),this._transitioner.morphTo2D(t,e)};fo.prototype.morphToColumbusView=function(t){let e,n=this.globe;c(n)?e=n.ellipsoid:e=this.mapProjection.ellipsoid,t=f(t,2),this._transitioner.morphToColumbusView(t,e)};fo.prototype.morphTo3D=function(t){let e,n=this.globe;c(n)?e=n.ellipsoid:e=this.mapProjection.ellipsoid,t=f(t,2),this._transitioner.morphTo3D(t,e)};function VJe(t,e){if(t._removeTerrainProviderReadyListener=t._removeTerrainProviderReadyListener&&t._removeTerrainProviderReadyListener(),e.ready){c(t.globe)&&(t.globe.terrainProvider=e.provider);return}t.globe.terrainProvider=void 0,t._removeTerrainProviderReadyListener=e.readyEvent.addEventListener(n=>{c(t)&&c(t.globe)&&(t.globe.terrainProvider=n),t._removeTerrainProviderReadyListener()})}fo.prototype.setTerrain=function(t){return VJe(this,t),t};fo.prototype.isDestroyed=function(){return!1};fo.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),c(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let t=0;t<this._removeGlobeCallbacks.length;++t)this._removeGlobeCallbacks[t]();return this._removeGlobeCallbacks.length=0,c(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),At(this)};var s5=fo;var OMo=b(W(),1);var VMo=b(W(),1),j1=`float interpolateByDistance(vec4 nearFarScalar, float distance) { float startDistance = nearFarScalar.x; float startValue = nearFarScalar.y; @@ -14652,7 +14652,7 @@ void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; opacity *= pow(nightAlpha, 0.5); } -`;var VMo=R(W(),1),l5=`in vec3 v_outerPositionWC; +`;var ZMo=b(W(),1),l5=`in vec3 v_outerPositionWC; uniform vec3 u_hsbShift; @@ -14711,7 +14711,7 @@ void main (void) out_FragColor = color; } -`;var RMo=R(W(),1),r5=`in vec4 position; +`;var bMo=b(W(),1),r5=`in vec4 position; out vec3 v_outerPositionWC; @@ -14742,7 +14742,7 @@ void main(void) v_outerPositionWC = positionWC.xyz; gl_Position = czm_modelViewProjection * position; } -`;function q1(t){t=f(t,mt.WGS84),this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=t;let e=1.025,n=p.multiplyByScalar(t.radii,e,new p);this._scaleMatrix=L.fromScale(n),this._modelMatrix=new L,this._command=new Ee({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new p(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new p(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new p;let i=new p;i.x=t.maximumRadius*e,i.y=t.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(q1.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});q1.prototype.setDynamicLighting=function(t){this._radiiAndDynamicAtmosphereColor.z=t};var Gst=new L;q1.prototype.update=function(t,e){if(!this.show)return;let n=t.mode;if(n!==ut.SCENE3D&&n!==ut.MORPHING||!t.passes.render)return;let i=L.fromRotationTranslation(t.context.uniformState.inverseViewRotation,p.ZERO,Gst),o=L.multiplyTransformation(i,$a.Y_UP_TO_Z_UP,Gst),a=L.multiply(this._scaleMatrix,o,Gst);L.clone(a,this._modelMatrix);let s=t.context,l=ZJe(this),r=t.globeTranslucencyState.translucent,d=this.perFragmentAtmosphere||r||!c(e)||!e.show,m=this._command;if(!c(m.vertexArray)){let Z=Cr.createGeometry(new Cr({radii:new p(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:ee.POSITION_ONLY}));m.vertexArray=Ki.fromGeometry({context:s,geometry:Z,attributeLocations:gi.createAttributeLocations(Z),bufferUsage:ce.STATIC_DRAW}),m.renderState=he.fromCache({cull:{enabled:!0,face:so.FRONT},blending:Pn.ALPHA_BLEND,depthMask:!1})}let h=l|d<<2|r<<3;if(h!==this._flags){this._flags=h;let Z=[];l&&Z.push("COLOR_CORRECT"),d&&Z.push("PER_FRAGMENT_ATMOSPHERE"),r&&Z.push("GLOBE_TRANSLUCENT");let b=new Ve({defines:Z,sources:[rW,j1,r5]}),u=new Ve({defines:Z,sources:[rW,j1,l5]});this._spSkyAtmosphere=xn.fromCache({context:s,vertexShaderSource:b,fragmentShaderSource:u}),m.shaderProgram=this._spSkyAtmosphere}return m};function ZJe(t){return!(k.equalsEpsilon(t.hueShift,0,k.EPSILON7)&&k.equalsEpsilon(t.saturationShift,0,k.EPSILON7)&&k.equalsEpsilon(t.brightnessShift,0,k.EPSILON7))}q1.prototype.isDestroyed=function(){return!1};q1.prototype.destroy=function(){let t=this._command;return t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),At(this)};var d5=q1;var V_o=R(W(),1);var wMo=R(W(),1),c5=`uniform samplerCube u_cubeMap; +`;function q1(t){t=f(t,mt.WGS84),this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=t;let e=1.025,n=p.multiplyByScalar(t.radii,e,new p);this._scaleMatrix=L.fromScale(n),this._modelMatrix=new L,this._command=new Ee({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new p(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new p(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new p;let i=new p;i.x=t.maximumRadius*e,i.y=t.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(q1.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});q1.prototype.setDynamicLighting=function(t){this._radiiAndDynamicAtmosphereColor.z=t};var Gst=new L;q1.prototype.update=function(t,e){if(!this.show)return;let n=t.mode;if(n!==Vt.SCENE3D&&n!==Vt.MORPHING||!t.passes.render)return;let i=L.fromRotationTranslation(t.context.uniformState.inverseViewRotation,p.ZERO,Gst),o=L.multiplyTransformation(i,$a.Y_UP_TO_Z_UP,Gst),a=L.multiply(this._scaleMatrix,o,Gst);L.clone(a,this._modelMatrix);let s=t.context,l=uJe(this),r=t.globeTranslucencyState.translucent,d=this.perFragmentAtmosphere||r||!c(e)||!e.show,m=this._command;if(!c(m.vertexArray)){let u=Cr.createGeometry(new Cr({radii:new p(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:ee.POSITION_ONLY}));m.vertexArray=Ki.fromGeometry({context:s,geometry:u,attributeLocations:gi.createAttributeLocations(u),bufferUsage:ce.STATIC_DRAW}),m.renderState=he.fromCache({cull:{enabled:!0,face:so.FRONT},blending:Pn.ALPHA_BLEND,depthMask:!1})}let h=l|d<<2|r<<3;if(h!==this._flags){this._flags=h;let u=[];l&&u.push("COLOR_CORRECT"),d&&u.push("PER_FRAGMENT_ATMOSPHERE"),r&&u.push("GLOBE_TRANSLUCENT");let R=new Ze({defines:u,sources:[rW,j1,r5]}),V=new Ze({defines:u,sources:[rW,j1,l5]});this._spSkyAtmosphere=xn.fromCache({context:s,vertexShaderSource:R,fragmentShaderSource:V}),m.shaderProgram=this._spSkyAtmosphere}return m};function uJe(t){return!(k.equalsEpsilon(t.hueShift,0,k.EPSILON7)&&k.equalsEpsilon(t.saturationShift,0,k.EPSILON7)&&k.equalsEpsilon(t.brightnessShift,0,k.EPSILON7))}q1.prototype.isDestroyed=function(){return!1};q1.prototype.destroy=function(){let t=this._command;return t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),At(this)};var d5=q1;var Z_o=b(W(),1);var wMo=b(W(),1),c5=`uniform samplerCube u_cubeMap; in vec3 v_texCoord; @@ -14751,7 +14751,7 @@ void main() vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); } -`;var vMo=R(W(),1),m5=`in vec3 position; +`;var vMo=b(W(),1),m5=`in vec3 position; out vec3 v_texCoord; @@ -14761,7 +14761,7 @@ void main() gl_Position = czm_projection * vec4(p, 1.0); v_texCoord = position.xyz; } -`;function yj(t){this.sources=t.sources,this._sources=void 0,this.show=f(t.show,!0),this._command=new Ee({modelMatrix:L.clone(L.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0}yj.prototype.update=function(t,e){let n=this;if(!this.show||t.mode!==ut.SCENE3D&&t.mode!==ut.MORPHING||!t.passes.render)return;let i=t.context;if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?c2(i,this._sources).then(function(s){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=s}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new Ld({context:i,source:a}))}let o=this._command;if(!c(o.vertexArray)){o.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=Am.createGeometry(Am.fromDimensions({dimensions:new p(2,2,2),vertexFormat:ee.POSITION_ONLY})),s=this._attributeLocations=gi.createAttributeLocations(a);o.vertexArray=Ki.fromGeometry({context:i,geometry:a,attributeLocations:s,bufferUsage:ce.STATIC_DRAW}),o.renderState=he.fromCache({blending:Pn.ALPHA_BLEND})}if(!c(o.shaderProgram)||this._useHdr!==e){let a=new Ve({defines:[e?"HDR":""],sources:[c5]});o.shaderProgram=xn.fromCache({context:i,vertexShaderSource:m5,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=e}if(c(this._cubeMap))return o};yj.prototype.isDestroyed=function(){return!1};yj.prototype.destroy=function(){let t=this._command;return t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),At(this)};var h5=yj;var j_o=R(W(),1);var R_o=R(W(),1),p5=`uniform sampler2D u_texture; +`;function yj(t){this.sources=t.sources,this._sources=void 0,this.show=f(t.show,!0),this._command=new Ee({modelMatrix:L.clone(L.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0}yj.prototype.update=function(t,e){let n=this;if(!this.show||t.mode!==Vt.SCENE3D&&t.mode!==Vt.MORPHING||!t.passes.render)return;let i=t.context;if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?ck(i,this._sources).then(function(s){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=s}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new Ld({context:i,source:a}))}let o=this._command;if(!c(o.vertexArray)){o.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=Am.createGeometry(Am.fromDimensions({dimensions:new p(2,2,2),vertexFormat:ee.POSITION_ONLY})),s=this._attributeLocations=gi.createAttributeLocations(a);o.vertexArray=Ki.fromGeometry({context:i,geometry:a,attributeLocations:s,bufferUsage:ce.STATIC_DRAW}),o.renderState=he.fromCache({blending:Pn.ALPHA_BLEND})}if(!c(o.shaderProgram)||this._useHdr!==e){let a=new Ze({defines:[e?"HDR":""],sources:[c5]});o.shaderProgram=xn.fromCache({context:i,vertexShaderSource:m5,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=e}if(c(this._cubeMap))return o};yj.prototype.isDestroyed=function(){return!1};yj.prototype.destroy=function(){let t=this._command;return t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),At(this)};var h5=yj;var j_o=b(W(),1);var b_o=b(W(),1),p5=`uniform sampler2D u_texture; in vec2 v_textureCoordinates; @@ -14770,7 +14770,7 @@ void main() vec4 color = texture(u_texture, v_textureCoordinates); out_FragColor = czm_gammaCorrect(color); } -`;var f_o=R(W(),1),u5=`uniform float u_radiusTS; +`;var f_o=b(W(),1),V5=`uniform float u_radiusTS; in vec2 v_textureCoordinates; @@ -14825,7 +14825,7 @@ void main() out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); } -`;var U_o=R(W(),1),Z5=`in vec2 direction; +`;var U_o=b(W(),1),u5=`in vec2 direction; uniform float u_size; @@ -14853,9 +14853,9 @@ void main() v_textureCoordinates = direction; } -`;function b5(){this.show=!0,this._drawCommand=new Ee({primitiveType:le.TRIANGLES,boundingVolume:new Ft,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new Ft,this._boundingVolume2D=new Ft,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let t=this;this._uniformMap={u_texture:function(){return t._texture},u_size:function(){return t._size}}}Object.defineProperties(b5.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(t){t=Math.max(t,0),this._glowFactor=t,this._glowFactorDirty=!0}}});var VJe=new K,bJe=new K,RJe=new Rt,V5=new Rt;b5.prototype.update=function(t,e,n){if(!this.show)return;let i=t.mode;if(i===ut.SCENE2D||i===ut.MORPHING||!t.passes.render)return;let o=t.context,a=e.viewport.width,s=e.viewport.height;if(!c(this._texture)||a!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=a,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let g=Math.max(a,s);g=Math.pow(2,Math.ceil(Math.log(g)/Math.log(2))-2),g=Math.max(1,g);let C=n?o.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;this._texture=new hn({context:o,width:g,height:g,pixelFormat:Ye.RGBA,pixelDatatype:C}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let y=this,Y={u_radiusTS:function(){return y._radiusTS}};this._commands.computeCommand=new Wm({fragmentShaderSource:u5,outputTexture:this._texture,uniformMap:Y,persists:!1,owner:this,postExecute:function(){y._commands.computeCommand=void 0}})}let l=this._drawCommand;if(!c(l.vertexArray)){let g={direction:0},C=new Uint8Array(4*2);C[0]=0,C[1]=0,C[2]=255,C[3]=0,C[4]=255,C[5]=255,C[6]=0,C[7]=255;let y=we.createVertexBuffer({context:o,typedArray:C,usage:ce.STATIC_DRAW}),Y=[{index:g.direction,vertexBuffer:y,componentsPerAttribute:2,normalize:!0,componentDatatype:it.UNSIGNED_BYTE}],Q=we.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT});l.vertexArray=new Ki({context:o,attributes:Y,indexBuffer:Q}),l.shaderProgram=xn.fromCache({context:o,vertexShaderSource:Z5,fragmentShaderSource:p5,attributeLocations:g}),l.renderState=he.fromCache({blending:Pn.ALPHA_BLEND}),l.uniformMap=this._uniformMap}let r=o.uniformState.sunPositionWC,d=o.uniformState.sunPositionColumbusView,m=this._boundingVolume,h=this._boundingVolume2D;p.clone(r,m.center),h.center.x=d.z,h.center.y=d.x,h.center.z=d.y,m.radius=k.SOLAR_RADIUS+k.SOLAR_RADIUS*this._glowLengthTS,h.radius=m.radius,i===ut.SCENE3D?Ft.clone(m,l.boundingVolume):i===ut.COLUMBUS_VIEW&&Ft.clone(h,l.boundingVolume);let Z=qo.computeActualWgs84Position(t,r,V5),b=p.magnitude(p.subtract(Z,t.camera.position,V5)),u=o.uniformState.projection,F=RJe;F.x=0,F.y=0,F.z=-b,F.w=1;let U=L.multiplyByVector(u,F,V5),G=qo.clipToGLWindowCoordinates(e.viewport,U,VJe);F.x=k.SOLAR_RADIUS;let A=L.multiplyByVector(u,F,V5),T=qo.clipToGLWindowCoordinates(e.viewport,A,bJe);return this._size=K.magnitude(K.subtract(T,G,V5)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};b5.prototype.isDestroyed=function(){return!1};b5.prototype.destroy=function(){let t=this._drawCommand;return t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),At(this)};var R5=b5;function $1(t){return Dn(`Assets/Textures/SkyBox/tycho2t3_80_${t}.jpg`)}function WJe(t){t._renderLoopRunning=!0;let e=0;function n(i){if(!t.isDestroyed())if(t._useDefaultRenderLoop)try{let o=t._targetFrameRate;if(!c(o))t.resize(),t.render(),requestAnimationFrame(n);else{let a=1e3/o,s=i-e;s>a&&(t.resize(),t.render(),e=i-s%a),requestAnimationFrame(n)}}catch(o){t._useDefaultRenderLoop=!1,t._renderLoopRunning=!1,t._showRenderLoopErrors&&t.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else t._renderLoopRunning=!1}requestAnimationFrame(n)}function vQt(t){let e=t._useBrowserRecommendedResolution?1:window.devicePixelRatio;return e*=t._resolutionScale,c(t._scene)&&(t._scene.pixelRatio=e),e}function KQt(t){let e=t._canvas,n=e.clientWidth,i=e.clientHeight,o=vQt(t);t._canvasClientWidth=n,t._canvasClientHeight=i,n*=o,i*=o,e.width=n,e.height=i,t._canRender=n!==0&&i!==0,t._lastDevicePixelRatio=window.devicePixelRatio}function zQt(t){let e=t._canvas,n=e.width,i=e.height;if(n!==0&&i!==0){let o=t._scene.camera.frustum;c(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function _S(t,e){t=Ui(t),e=f(e,f.EMPTY_OBJECT);let n=document.createElement("div");n.className="cesium-widget",t.appendChild(n);let i=document.createElement("canvas"),o=In.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=In.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function a(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}f(e.blurActiveElementOnCanvasFocus,!0)&&(i.addEventListener("mousedown",a),i.addEventListener("pointerdown",a)),n.appendChild(i);let l=document.createElement("div");l.className="cesium-widget-credits";let r=c(e.creditContainer)?Ui(e.creditContainer):n;r.appendChild(l);let d=c(e.creditViewport)?Ui(e.creditViewport):n,m=f(e.showRenderLoopErrors,!0),h=f(e.useBrowserRecommendedResolution,!0);this._element=n,this._container=t,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=d,this._creditContainer=r,this._innerCreditContainer=l,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=m,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._clock=c(e.clock)?e.clock:new kZ,KQt(this);try{let Z=new s5({canvas:i,contextOptions:e.contextOptions,creditContainer:l,creditViewport:d,mapProjection:e.mapProjection,orderIndependentTranslucency:e.orderIndependentTranslucency,scene3DOnly:f(e.scene3DOnly,!1),shadows:e.shadows,mapMode2D:e.mapMode2D,requestRenderMode:e.requestRenderMode,maximumRenderTimeChange:e.maximumRenderTimeChange,depthPlaneEllipsoidOffset:e.depthPlaneEllipsoidOffset,msaaSamples:e.msaaSamples});this._scene=Z,Z.camera.constrainedAxis=p.UNIT_Z,vQt(this),zQt(this);let b=f(Z.mapProjection.ellipsoid,mt.WGS84),u=e.globe;c(u)||(u=new r_(b)),u!==!1&&(Z.globe=u,Z.globe.shadows=f(e.terrainShadows,ui.RECEIVE_ONLY));let F=e.skyBox;c(F)||(F=new h5({sources:{positiveX:$1("px"),negativeX:$1("mx"),positiveY:$1("py"),negativeY:$1("my"),positiveZ:$1("pz"),negativeZ:$1("mz")}})),F!==!1&&(Z.skyBox=F,Z.sun=new R5,Z.moon=new u_);let U=e.skyAtmosphere;c(U)||(U=new d5(b),U.show=e.globe!==!1&&u.show),U!==!1&&(Z.skyAtmosphere=U);let G=e.baseLayer;e.globe!==!1&&G!==!1&&(c(G)||(G=$r.fromWorldImagery()),Z.imageryLayers.add(G)),c(e.terrainProvider)&&e.globe!==!1&&(Z.terrainProvider=e.terrainProvider),c(e.terrain)&&e.globe!==!1&&Z.setTerrain(e.terrain),this._screenSpaceEventHandler=new sp(i),c(e.sceneMode)&&(e.sceneMode===ut.SCENE2D&&this._scene.morphTo2D(0),e.sceneMode===ut.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=f(e.useDefaultRenderLoop,!0),this._targetFrameRate=void 0,this.targetFrameRate=e.targetFrameRate;let A=this;this._onRenderError=function(T,g){A._useDefaultRenderLoop=!1,A._renderLoopRunning=!1,A._showRenderLoopErrors&&A.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,g)},Z.renderError.addEventListener(this._onRenderError)}catch(Z){throw m&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',Z),Z}}Object.defineProperties(_S.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(t){this._scene.terrainProvider=t}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},camera:{get:function(){return this._scene.camera}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(t){this._targetFrameRate=t}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(t){this._useDefaultRenderLoop!==t&&(this._useDefaultRenderLoop=t,t&&!this._renderLoopRunning&&WJe(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(t){this._resolutionScale!==t&&(this._resolutionScale=t,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(t){this._useBrowserRecommendedResolution!==t&&(this._useBrowserRecommendedResolution=t,this._forceResize=!0)}}});_S.prototype.showErrorPanel=function(t,e,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let a=document.createElement("div");a.className="cesium-widget-errorPanel-content",o.appendChild(a);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(t)),a.appendChild(s);let l=document.createElement("div");l.className="cesium-widget-errorPanel-scroll",a.appendChild(l);function r(){l.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}r(),c(window.addEventListener)&&window.addEventListener("resize",r,!1);let d=c(e),m=c(n);if(d||m){let b=document.createElement("div");if(b.className="cesium-widget-errorPanel-message",l.appendChild(b),m){let u=Qb(n);d||(typeof n=="string"&&(n=new Error(n)),e=Qb({name:n.name,message:n.message}),u=n.stack),typeof console<"u"&&console.error(`${t} +`;function R5(){this.show=!0,this._drawCommand=new Ee({primitiveType:le.TRIANGLES,boundingVolume:new Ft,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new Ft,this._boundingVolume2D=new Ft,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let t=this;this._uniformMap={u_texture:function(){return t._texture},u_size:function(){return t._size}}}Object.defineProperties(R5.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(t){t=Math.max(t,0),this._glowFactor=t,this._glowFactorDirty=!0}}});var ZJe=new K,RJe=new K,bJe=new bt,Z5=new bt;R5.prototype.update=function(t,e,n){if(!this.show)return;let i=t.mode;if(i===Vt.SCENE2D||i===Vt.MORPHING||!t.passes.render)return;let o=t.context,a=e.viewport.width,s=e.viewport.height;if(!c(this._texture)||a!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=a,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let g=Math.max(a,s);g=Math.pow(2,Math.ceil(Math.log(g)/Math.log(2))-2),g=Math.max(1,g);let C=n?o.halfFloatingPointTexture?Ue.HALF_FLOAT:Ue.FLOAT:Ue.UNSIGNED_BYTE;this._texture=new hn({context:o,width:g,height:g,pixelFormat:Ye.RGBA,pixelDatatype:C}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let y=this,Y={u_radiusTS:function(){return y._radiusTS}};this._commands.computeCommand=new Wm({fragmentShaderSource:V5,outputTexture:this._texture,uniformMap:Y,persists:!1,owner:this,postExecute:function(){y._commands.computeCommand=void 0}})}let l=this._drawCommand;if(!c(l.vertexArray)){let g={direction:0},C=new Uint8Array(4*2);C[0]=0,C[1]=0,C[2]=255,C[3]=0,C[4]=255,C[5]=255,C[6]=0,C[7]=255;let y=we.createVertexBuffer({context:o,typedArray:C,usage:ce.STATIC_DRAW}),Y=[{index:g.direction,vertexBuffer:y,componentsPerAttribute:2,normalize:!0,componentDatatype:it.UNSIGNED_BYTE}],Q=we.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT});l.vertexArray=new Ki({context:o,attributes:Y,indexBuffer:Q}),l.shaderProgram=xn.fromCache({context:o,vertexShaderSource:u5,fragmentShaderSource:p5,attributeLocations:g}),l.renderState=he.fromCache({blending:Pn.ALPHA_BLEND}),l.uniformMap=this._uniformMap}let r=o.uniformState.sunPositionWC,d=o.uniformState.sunPositionColumbusView,m=this._boundingVolume,h=this._boundingVolume2D;p.clone(r,m.center),h.center.x=d.z,h.center.y=d.x,h.center.z=d.y,m.radius=k.SOLAR_RADIUS+k.SOLAR_RADIUS*this._glowLengthTS,h.radius=m.radius,i===Vt.SCENE3D?Ft.clone(m,l.boundingVolume):i===Vt.COLUMBUS_VIEW&&Ft.clone(h,l.boundingVolume);let u=qo.computeActualWgs84Position(t,r,Z5),R=p.magnitude(p.subtract(u,t.camera.position,Z5)),V=o.uniformState.projection,F=bJe;F.x=0,F.y=0,F.z=-R,F.w=1;let U=L.multiplyByVector(V,F,Z5),G=qo.clipToGLWindowCoordinates(e.viewport,U,ZJe);F.x=k.SOLAR_RADIUS;let A=L.multiplyByVector(V,F,Z5),S=qo.clipToGLWindowCoordinates(e.viewport,A,RJe);return this._size=K.magnitude(K.subtract(S,G,Z5)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};R5.prototype.isDestroyed=function(){return!1};R5.prototype.destroy=function(){let t=this._drawCommand;return t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),At(this)};var b5=R5;function $1(t){return Dn(`Assets/Textures/SkyBox/tycho2t3_80_${t}.jpg`)}function WJe(t){t._renderLoopRunning=!0;let e=0;function n(i){if(!t.isDestroyed())if(t._useDefaultRenderLoop)try{let o=t._targetFrameRate;if(!c(o))t.resize(),t.render(),requestAnimationFrame(n);else{let a=1e3/o,s=i-e;s>a&&(t.resize(),t.render(),e=i-s%a),requestAnimationFrame(n)}}catch(o){t._useDefaultRenderLoop=!1,t._renderLoopRunning=!1,t._showRenderLoopErrors&&t.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else t._renderLoopRunning=!1}requestAnimationFrame(n)}function vQt(t){let e=t._useBrowserRecommendedResolution?1:window.devicePixelRatio;return e*=t._resolutionScale,c(t._scene)&&(t._scene.pixelRatio=e),e}function KQt(t){let e=t._canvas,n=e.clientWidth,i=e.clientHeight,o=vQt(t);t._canvasClientWidth=n,t._canvasClientHeight=i,n*=o,i*=o,e.width=n,e.height=i,t._canRender=n!==0&&i!==0,t._lastDevicePixelRatio=window.devicePixelRatio}function zQt(t){let e=t._canvas,n=e.width,i=e.height;if(n!==0&&i!==0){let o=t._scene.camera.frustum;c(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function _T(t,e){t=Ui(t),e=f(e,f.EMPTY_OBJECT);let n=document.createElement("div");n.className="cesium-widget",t.appendChild(n);let i=document.createElement("canvas"),o=In.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=In.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function a(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}f(e.blurActiveElementOnCanvasFocus,!0)&&(i.addEventListener("mousedown",a),i.addEventListener("pointerdown",a)),n.appendChild(i);let l=document.createElement("div");l.className="cesium-widget-credits";let r=c(e.creditContainer)?Ui(e.creditContainer):n;r.appendChild(l);let d=c(e.creditViewport)?Ui(e.creditViewport):n,m=f(e.showRenderLoopErrors,!0),h=f(e.useBrowserRecommendedResolution,!0);this._element=n,this._container=t,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=d,this._creditContainer=r,this._innerCreditContainer=l,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=m,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._clock=c(e.clock)?e.clock:new ku,KQt(this);try{let u=new s5({canvas:i,contextOptions:e.contextOptions,creditContainer:l,creditViewport:d,mapProjection:e.mapProjection,orderIndependentTranslucency:e.orderIndependentTranslucency,scene3DOnly:f(e.scene3DOnly,!1),shadows:e.shadows,mapMode2D:e.mapMode2D,requestRenderMode:e.requestRenderMode,maximumRenderTimeChange:e.maximumRenderTimeChange,depthPlaneEllipsoidOffset:e.depthPlaneEllipsoidOffset,msaaSamples:e.msaaSamples});this._scene=u,u.camera.constrainedAxis=p.UNIT_Z,vQt(this),zQt(this);let R=f(u.mapProjection.ellipsoid,mt.WGS84),V=e.globe;c(V)||(V=new r_(R)),V!==!1&&(u.globe=V,u.globe.shadows=f(e.terrainShadows,Vi.RECEIVE_ONLY));let F=e.skyBox;c(F)||(F=new h5({sources:{positiveX:$1("px"),negativeX:$1("mx"),positiveY:$1("py"),negativeY:$1("my"),positiveZ:$1("pz"),negativeZ:$1("mz")}})),F!==!1&&(u.skyBox=F,u.sun=new b5,u.moon=new V_);let U=e.skyAtmosphere;c(U)||(U=new d5(R),U.show=e.globe!==!1&&V.show),U!==!1&&(u.skyAtmosphere=U);let G=e.baseLayer;e.globe!==!1&&G!==!1&&(c(G)||(G=$r.fromWorldImagery()),u.imageryLayers.add(G)),c(e.terrainProvider)&&e.globe!==!1&&(u.terrainProvider=e.terrainProvider),c(e.terrain)&&e.globe!==!1&&u.setTerrain(e.terrain),this._screenSpaceEventHandler=new sp(i),c(e.sceneMode)&&(e.sceneMode===Vt.SCENE2D&&this._scene.morphTo2D(0),e.sceneMode===Vt.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=f(e.useDefaultRenderLoop,!0),this._targetFrameRate=void 0,this.targetFrameRate=e.targetFrameRate;let A=this;this._onRenderError=function(S,g){A._useDefaultRenderLoop=!1,A._renderLoopRunning=!1,A._showRenderLoopErrors&&A.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,g)},u.renderError.addEventListener(this._onRenderError)}catch(u){throw m&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',u),u}}Object.defineProperties(_T.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(t){this._scene.terrainProvider=t}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},camera:{get:function(){return this._scene.camera}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(t){this._targetFrameRate=t}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(t){this._useDefaultRenderLoop!==t&&(this._useDefaultRenderLoop=t,t&&!this._renderLoopRunning&&WJe(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(t){this._resolutionScale!==t&&(this._resolutionScale=t,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(t){this._useBrowserRecommendedResolution!==t&&(this._useBrowserRecommendedResolution=t,this._forceResize=!0)}}});_T.prototype.showErrorPanel=function(t,e,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let a=document.createElement("div");a.className="cesium-widget-errorPanel-content",o.appendChild(a);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(t)),a.appendChild(s);let l=document.createElement("div");l.className="cesium-widget-errorPanel-scroll",a.appendChild(l);function r(){l.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}r(),c(window.addEventListener)&&window.addEventListener("resize",r,!1);let d=c(e),m=c(n);if(d||m){let R=document.createElement("div");if(R.className="cesium-widget-errorPanel-message",l.appendChild(R),m){let V=QR(n);d||(typeof n=="string"&&(n=new Error(n)),e=QR({name:n.name,message:n.message}),V=n.stack),typeof console<"u"&&console.error(`${t} ${e} -${u}`);let F=document.createElement("div");F.className="cesium-widget-errorPanel-message-details collapsed";let U=document.createElement("span");U.className="cesium-widget-errorPanel-more-details",U.appendChild(document.createTextNode("See more...")),F.appendChild(U),F.onclick=function(G){F.removeChild(U),F.appendChild(document.createTextNode(u)),F.className="cesium-widget-errorPanel-message-details",a.className="cesium-widget-errorPanel-content expanded",F.onclick=void 0},l.appendChild(F)}b.innerHTML=`<p>${e}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",a.appendChild(h);let Z=document.createElement("button");Z.setAttribute("type","button"),Z.className="cesium-button",Z.appendChild(document.createTextNode("OK")),Z.onclick=function(){c(r)&&c(window.removeEventListener)&&window.removeEventListener("resize",r,!1),i.removeChild(o)},h.appendChild(Z),i.appendChild(o)};_S.prototype.isDestroyed=function(){return!1};_S.prototype.destroy=function(){c(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),At(this)};_S.prototype.resize=function(){let t=this._canvas;!this._forceResize&&this._canvasClientWidth===t.clientWidth&&this._canvasClientHeight===t.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,KQt(this),zQt(this),this._scene.requestRender())};_S.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let t=this._clock.tick();this._scene.render(t)}else this._clock.tick()};var W5=_S;var F9o=R(W(),1),f5=`uniform sampler2D u_noiseTexture; +${V}`);let F=document.createElement("div");F.className="cesium-widget-errorPanel-message-details collapsed";let U=document.createElement("span");U.className="cesium-widget-errorPanel-more-details",U.appendChild(document.createTextNode("See more...")),F.appendChild(U),F.onclick=function(G){F.removeChild(U),F.appendChild(document.createTextNode(V)),F.className="cesium-widget-errorPanel-message-details",a.className="cesium-widget-errorPanel-content expanded",F.onclick=void 0},l.appendChild(F)}R.innerHTML=`<p>${e}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",a.appendChild(h);let u=document.createElement("button");u.setAttribute("type","button"),u.className="cesium-button",u.appendChild(document.createTextNode("OK")),u.onclick=function(){c(r)&&c(window.removeEventListener)&&window.removeEventListener("resize",r,!1),i.removeChild(o)},h.appendChild(u),i.appendChild(o)};_T.prototype.isDestroyed=function(){return!1};_T.prototype.destroy=function(){c(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),At(this)};_T.prototype.resize=function(){let t=this._canvas;!this._forceResize&&this._canvasClientWidth===t.clientWidth&&this._canvasClientHeight===t.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,KQt(this),zQt(this),this._scene.requestRender())};_T.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let t=this._clock.tick();this._scene.render(t)}else this._clock.tick()};var W5=_T;var F9o=b(W(),1),f5=`uniform sampler2D u_noiseTexture; uniform vec3 u_noiseTextureDimensions; uniform float u_noiseDetail; in vec2 v_offset; @@ -15118,7 +15118,7 @@ void main() { #endif #endif } -`;var G9o=R(W(),1),F5=`#ifdef INSTANCED +`;var G9o=b(W(),1),F5=`#ifdef INSTANCED in vec2 direction; #endif in vec4 positionHighAndScaleX; @@ -15166,7 +15166,7 @@ void main() { v_slice = slice; v_brightness = brightness; } -`;var T9o=R(W(),1),U5=`uniform vec3 u_noiseTextureDimensions; +`;var S9o=b(W(),1),U5=`uniform vec3 u_noiseTextureDimensions; uniform float u_noiseDetail; uniform vec3 u_noiseOffset; in vec2 v_position; @@ -15258,7 +15258,7 @@ void main() { float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); out_FragColor = vec4(worley0, worley1, worley2, 1.0); } -`;var g9o=R(W(),1),G5=`uniform vec3 u_noiseTextureDimensions; +`;var g9o=b(W(),1),G5=`uniform vec3 u_noiseTextureDimensions; in vec2 position; out vec2 v_position; @@ -15276,7 +15276,7 @@ void main() transformedPos.y *= noiseTextureRows; v_position = transformedPos; } -`;var C9o=R(W(),1),A5=` +`;var C9o=b(W(),1),A5=` in vec2 v_textureCoordinates; void main() @@ -15292,14 +15292,14 @@ void main() out_FragColor = vec4(material.diffuse + material.emission, material.alpha); } -`;var n5o=R(W(),1);var k9o=R(W(),1);function nN(t,e){this._tilingScheme=t,this._maximumLevel=e,this._rootNodes=[]}var DS=new Gt;function fJe(t,e,n,i){let o=i.length;for(let a=0;a<o;++a){let s=i[a];if(s.x===e&&s.y===n&&s.level===t)return!0}return!1}nN.prototype.addAvailableTileRange=function(t,e,n,i,o){let a=this._tilingScheme,s=this._rootNodes;if(t===0)for(let Z=n;Z<=o;++Z)for(let b=e;b<=i;++b)fJe(t,b,Z,s)||s.push(new tN(a,void 0,0,b,Z));a.tileXYToRectangle(e,n,t,DS);let l=DS.west,r=DS.north;a.tileXYToRectangle(i,o,t,DS);let d=DS.east,m=DS.south,h=new TJe(t,l,m,d,r);for(let Z=0;Z<s.length;++Z){let b=s[Z];Ast(b.extent,h)&&SJe(this._maximumLevel,b,h)}};nN.prototype.computeMaximumLevelAtPosition=function(t){let e;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(eN(i.extent,t)){e=i;break}}return c(e)?T5(void 0,e,t):-1};var FJe=[],UJe=[],GJe=new Gt,AJe=new Gt;nN.prototype.computeBestAvailableLevelOverRectangle=function(t){let e=FJe;e.length=0,t.east<t.west?(e.push(Gt.fromRadians(-Math.PI,t.south,t.east,t.north,GJe)),e.push(Gt.fromRadians(t.west,t.south,Math.PI,t.north,AJe))):e.push(t);let n=UJe;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)S5(n,this._rootNodes[i],e);for(i=n.length-1;i>=0;--i)if(c(n[i])&&n[i].length===0)return i;return 0};var jQt=new gt;nN.prototype.isTileAvailable=function(t,e,n){let i=this._tilingScheme.tileXYToRectangle(e,n,t,DS);return Gt.center(i,jQt),this.computeMaximumLevelAtPosition(jQt)>=t};nN.prototype.computeChildMaskForTile=function(t,e,n){let i=t+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*e,2*n+1)?1:0,o|=this.isTileAvailable(i,2*e+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*e,2*n)?4:0,o|=this.isTileAvailable(i,2*e+1,2*n)?8:0,o};function tN(t,e,n,i,o){this.tilingScheme=t,this.parent=e,this.level=n,this.x=i,this.y=o,this.extent=t.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(tN.prototype,{nw:{get:function(){return this._nw||(this._nw=new tN(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new tN(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new tN(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new tN(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function TJe(t,e,n,i,o){this.level=t,this.west=e,this.south=n,this.east=i,this.north=o}function Ast(t,e){let n=Math.max(t.west,e.west),i=Math.max(t.south,e.south),o=Math.min(t.east,e.east),a=Math.min(t.north,e.north);return i<a&&n<o}function SJe(t,e,n){for(;e.level<t;)if(Bj(e.nw.extent,n))e=e.nw;else if(Bj(e.ne.extent,n))e=e.ne;else if(Bj(e.sw.extent,n))e=e.sw;else if(Bj(e.se.extent,n))e=e.se;else break;if(e.rectangles.length===0||e.rectangles[e.rectangles.length-1].level<=n.level)e.rectangles.push(n);else{let i=Ja(e.rectangles,n.level,gJe);i<0&&(i=~i),e.rectangles.splice(i,0,n)}}function gJe(t,e){return t.level-e}function Bj(t,e){return e.west>=t.west&&e.east<=t.east&&e.south>=t.south&&e.north<=t.north}function eN(t,e){return e.longitude>=t.west&&e.longitude<=t.east&&e.latitude>=t.south&&e.latitude<=t.north}function T5(t,e,n){let i=0,o=!1;for(;!o;){let a=e._nw&&eN(e._nw.extent,n),s=e._ne&&eN(e._ne.extent,n),l=e._sw&&eN(e._sw.extent,n),r=e._se&&eN(e._se.extent,n);if(a+s+l+r>1){a&&(i=Math.max(i,T5(e,e._nw,n))),s&&(i=Math.max(i,T5(e,e._ne,n))),l&&(i=Math.max(i,T5(e,e._sw,n))),r&&(i=Math.max(i,T5(e,e._se,n)));break}else a?e=e._nw:s?e=e._ne:l?e=e._sw:r?e=e._se:o=!0}for(;e!==t;){let a=e.rectangles;for(let s=a.length-1;s>=0&&a[s].level>i;--s){let l=a[s];eN(l,n)&&(i=l.level)}e=e.parent}return i}function S5(t,e,n){if(!e)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||Ast(e.extent,n[i]);if(!o)return;let a=e.rectangles;for(i=0;i<a.length;++i){let s=a[i];t[s.level]||(t[s.level]=n),t[s.level]=EJe(t[s.level],s)}S5(t,e._nw,n),S5(t,e._ne,n),S5(t,e._sw,n),S5(t,e._se,n)}function EJe(t,e){let n=[];for(let i=0;i<t.length;++i){let o=t[i];Ast(o,e)?(o.west<e.west&&n.push(new Gt(o.west,o.south,e.west,o.north)),o.east>e.east&&n.push(new Gt(e.east,o.south,o.east,o.north)),o.south<e.south&&n.push(new Gt(Math.max(e.west,o.west),o.south,Math.min(e.east,o.east),e.south)),o.north>e.north&&n.push(new Gt(Math.max(e.west,o.west),e.north,Math.min(e.east,o.east),o.north))):n.push(o)}return n}var pV=nN;var CJe=15;function qQt(t){this.ellipsoid=f(t.ellipsoid,mt.WGS84),this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}qQt.prototype.build=function(t){t._credit=this.credit,t._tilingScheme=this.tilingScheme,t._height=this.height,t._width=this.width,t._encoding=this.encoding,t._lodCount=this.lodCount,t._hasAvailability=this.hasAvailability,t._tilesAvailable=this.tilesAvailable,t._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,t._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,t._terrainDataStructure=this.terrainDataStructure};function IJe(t,e){let n=e.copyrightText;c(n)&&(t.credit=new on(n));let i=e.spatialReference,o=f(i.latestWkid,i.wkid),a=e.extent,s={ellipsoid:t.ellipsoid};if(o===4326)s.rectangle=Gt.fromDegrees(a.xmin,a.ymin,a.xmax,a.ymax),t.tilingScheme=new Qo(s);else if(o===3857){let d=Math.PI*t.ellipsoid.maximumRadius;e.extent.xmax>d&&(e.extent.xmax=d),e.extent.ymax>d&&(e.extent.ymax=d),e.extent.xmin<-d&&(e.extent.xmin=-d),e.extent.ymin<-d&&(e.extent.ymin=-d),s.rectangleSouthwestInMeters=new K(a.xmin,a.ymin),s.rectangleNortheastInMeters=new K(a.xmax,a.ymax),t.tilingScheme=new Gs(s)}else throw new St("Invalid spatial reference");let l=e.tileInfo;if(!c(l))throw new St("tileInfo is required");t.width=l.rows+1,t.height=l.cols+1,t.encoding=l.format==="LERC"?Uu.LERC:Uu.NONE,t.lodCount=l.lods.length-1,(t.hasAvailability=e.capabilities.indexOf("Tilemap")!==-1)&&(t.tilesAvailable=new pV(t.tilingScheme,t.lodCount),t.tilesAvailable.addAvailableTileRange(0,0,0,t.tilingScheme.getNumberOfXTilesAtLevel(0),t.tilingScheme.getNumberOfYTilesAtLevel(0)),t.tilesAvailabilityLoaded=new pV(t.tilingScheme,t.lodCount)),t.levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(t.tilingScheme.ellipsoid,t.width,t.tilingScheme.getNumberOfXTilesAtLevel(0)),e.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),c(e.minValues)&&c(e.maxValues)?t.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:e.minValues[0],highestEncodedHeight:e.maxValues[0]}:t.terrainDataStructure={elementMultiplier:1}}async function NJe(t,e,n){try{let i=await e.fetchJson();IJe(t,i)}catch(i){let o=`An error occurred while accessing ${e}.`;throw za.reportError(void 0,n,c(n)?n._errorEvent:void 0,o),i}}function gU(t){t=f(t,f.EMPTY_OBJECT),this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new It}Object.defineProperties(gU.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});gU.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT),t=await Promise.resolve(t);let n=te.createIfNeeded(t);n.appendForwardSlash(),c(e.token)&&(n=n.getDerivedResource({queryParameters:{token:e.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new qQt(e);await NJe(o,i);let a=new gU(e);return o.build(a),a._resource=n,a};gU.prototype.requestTileGeometry=function(t,e,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${e}/${t}`,request:i}),a=this._hasAvailability,s=Promise.resolve(!0),l;if(a&&!c(Tst(this,n+1,t*2,e*2))){let h=$Qt(this,n+1,t*2,e*2);s=h.promise,l=h.request}let r=o.fetchArrayBuffer();if(!c(r)||!c(s))return;let d=this,m=this._tilesAvailable;return Promise.all([r,s]).then(function(h){return new Gd({buffer:h[0],width:d._width,height:d._height,childTileMask:a?m.computeChildMaskForTile(n,t,e):CJe,structure:d._terrainDataStructure,encoding:d._encoding})}).catch(function(h){return c(l)&&l.state===qi.CANCELLED?(i.cancel(),i.deferred.promise.finally(function(){return i.state=qi.CANCELLED,Promise.reject(h)})):Promise.reject(h)})};function Tst(t,e,n,i){if(!t._hasAvailability)return;let o=t._tilesAvailabilityLoaded,a=t._tilesAvailable;if(e>t._lodCount)return!1;if(a.isTileAvailable(e,n,i))return!0;if(o.isTileAvailable(e,n,i))return!1}gU.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};gU.prototype.getTileDataAvailable=function(t,e,n){if(!this._hasAvailability)return;let i=Tst(this,n,t,e);if(c(i))return i;$Qt(this,n,t,e)};gU.prototype.loadTileDataAvailability=function(t,e,n){};function yJe(t,e,n,i){let o=e-1,a=n-1,s=i[t.y*e+t.x],l=[],r={startX:t.x,startY:t.y,endX:0,endY:0},d=new K(t.x+1,t.y+1),m=!1,h=!1;for(;!(m&&h);){let Z=d.x,b=h?d.y+1:d.y;if(!m){for(let u=t.y;u<b;++u)if(i[u*e+d.x]!==s){m=!0;break}m?(l.push(new K(d.x,t.y)),--d.x,--Z,r.endX=d.x):d.x===o?(r.endX=d.x,m=!0):++d.x}if(!h){let u=d.y*e;for(let F=t.x;F<=Z;++F)if(i[u+F]!==s){h=!0;break}h?(l.push(new K(t.x,d.y)),--d.y,r.endY=d.y):d.y===a?(r.endY=d.y,h=!0):++d.y}}return{endingIndices:l,range:r,value:s}}function BJe(t,e,n,i,o){let a=[];if(o.every(function(r){return r===o[0]}))return o[0]===1&&a.push({startX:t,startY:e,endX:t+n-1,endY:e+i-1}),a;let l=[new K(0,0)];for(;l.length>0;){let r=l.pop(),d=yJe(r,n,i,o);if(d.value===1){let h=d.range;h.startX+=t,h.endX+=t,h.startY+=e,h.endY+=e,a.push(h)}let m=d.endingIndices;m.length>0&&(l=l.concat(m))}return a}function $Qt(t,e,n,i){if(!t._hasAvailability)return{};let o=Math.floor(n/128)*128,a=Math.floor(i/128)*128,s=Math.min(1<<e,128),l=`tilemap/${e}/${a}/${o}/${s}/${s}`,r=t._availableCache;if(c(r[l]))return r[l];let d=new Zs({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN}),h=t._resource.getDerivedResource({url:l,request:d}).fetchJson();return c(h)?(h=h.then(function(Z){let b=BJe(o,a,s,s,Z.data);t._tilesAvailabilityLoaded.addAvailableTileRange(e,o,a,o+s,a+s);let u=t._tilesAvailable;for(let F=0;F<b.length;++F){let U=b[F];u.addAvailableTileRange(e,U.startX,U.startY,U.endX,U.endY)}return Tst(t,e,n,i)}),r[l]={promise:h,request:d},h=h.finally(function(Z){return delete r[l],Z}),{promise:h,request:d}):{}}var Sst=gU;var d5o=R(W(),1);var t2t="https://dev.virtualearth.net/REST/v1/Locations";function gst(t){t=f(t,f.EMPTY_OBJECT);let e=t.key;this._key=e;let n={key:e};c(t.culture)&&(n.culture=t.culture),this._resource=new te({url:t2t,queryParameters:n}),this._credit=new on('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(gst.prototype,{url:{get:function(){return t2t}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});gst.prototype.geocode=async function(t){return this._resource.getDerivedResource({queryParameters:{query:t}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let a=o.bbox,s=a[0],l=a[1],r=a[2],d=a[3];return{displayName:o.name,destination:Gt.fromDegrees(l,s,d,r)}})})};var Est=gst;var h5o=R(W(),1);function Cst(){}Object.defineProperties(Cst.prototype,{credit:{get:function(){}}});Cst.prototype.geocode=function(t){let e=t.match(/[^\s,\n]+/g);if(e.length===2||e.length===3){let n=+e[0],i=+e[1],o=e.length===3?+e[2]:300;if(isNaN(n)&&isNaN(i)){let a=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<e.length;++s){let l=e[s].match(a);a.test(e[s])&&l.length===3&&(/^[ns]/i.test(l[2])?i=/^[n]/i.test(l[2])?+l[1]:-l[1]:/^[ew]/i.test(l[2])&&(n=/^[e]/i.test(l[2])?+l[1]:-l[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let a={displayName:t,destination:p.fromDegrees(n,i,o)};return Promise.resolve([a])}}return Promise.resolve([])};var Ist=Cst;var F5o=R(W(),1);var QJe=new Rt,e2t=new p,iN=new p;function kJe(t){let e=t.points,n=t.times;if(e.length<3){let i=n[0],o=1/(n[1]-i),a=e[0],s=e[1];return function(l,r){c(r)||(r=new p);let d=(l-i)*o;return p.lerp(a,s,d,r)}}return function(i,o){c(o)||(o=new p);let a=t._lastTimeIndex=t.findTimeInterval(i,t._lastTimeIndex),s=(i-n[a])/(n[a+1]-n[a]),l=QJe;l.z=s,l.y=s*s,l.x=l.y*s,l.w=1;let r,d,m,h,Z;return a===0?(r=e[0],d=e[1],m=t.firstTangent,h=p.subtract(e[2],r,e2t),p.multiplyByScalar(h,.5,h),Z=L.multiplyByVector($f.hermiteCoefficientMatrix,l,l)):a===e.length-2?(r=e[a],d=e[a+1],h=t.lastTangent,m=p.subtract(d,e[a-1],e2t),p.multiplyByScalar(m,.5,m),Z=L.multiplyByVector($f.hermiteCoefficientMatrix,l,l)):(r=e[a-1],d=e[a],m=e[a+1],h=e[a+2],Z=L.multiplyByVector(EU.catmullRomCoefficientMatrix,l,l)),o=p.multiplyByScalar(r,Z.x,o),p.multiplyByScalar(d,Z.y,iN),p.add(o,iN,o),p.multiplyByScalar(m,Z.z,iN),p.add(o,iN,o),p.multiplyByScalar(h,Z.w,iN),p.add(o,iN,o)}}var YJe=new p,xJe=new p;function EU(t){t=f(t,f.EMPTY_OBJECT);let e=t.points,n=t.times,i=t.firstTangent,o=t.lastTangent;if(e.length>2&&(c(i)||(i=YJe,p.multiplyByScalar(e[1],2,i),p.subtract(i,e[2],i),p.subtract(i,e[0],i),p.multiplyByScalar(i,.5,i)),!c(o))){let a=e.length-1;o=xJe,p.multiplyByScalar(e[a-1],2,o),p.subtract(e[a],o,o),p.add(o,e[a-2],o),p.multiplyByScalar(o,.5,o)}this._times=n,this._points=e,this._firstTangent=p.clone(i),this._lastTangent=p.clone(o),this._evaluateFunction=kJe(this),this._lastTimeIndex=0}Object.defineProperties(EU.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});EU.catmullRomCoefficientMatrix=new L(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);EU.prototype.findTimeInterval=ba.prototype.findTimeInterval;EU.prototype.wrapTime=ba.prototype.wrapTime;EU.prototype.clampTime=ba.prototype.clampTime;EU.prototype.evaluate=function(t,e){return this._evaluateFunction(t,e)};var Nst=EU;var mDo=R(W(),1);var M5o=R(W(),1);var S5o=R(W(),1);var Qj={};Qj.clipTriangleAtAxisAlignedThreshold=function(t,e,n,i,o,a){c(a)?a.length=0:a=[];let s,l,r;e?(s=n<t,l=i<t,r=o<t):(s=n>t,l=i>t,r=o>t);let d=s+l+r,m,h,Z,b,u,F;return d===1?s?(m=(t-n)/(i-n),h=(t-n)/(o-n),a.push(1),a.push(2),h!==1&&(a.push(-1),a.push(0),a.push(2),a.push(h)),m!==1&&(a.push(-1),a.push(0),a.push(1),a.push(m))):l?(Z=(t-i)/(o-i),b=(t-i)/(n-i),a.push(2),a.push(0),b!==1&&(a.push(-1),a.push(1),a.push(0),a.push(b)),Z!==1&&(a.push(-1),a.push(1),a.push(2),a.push(Z))):r&&(u=(t-o)/(n-o),F=(t-o)/(i-o),a.push(0),a.push(1),F!==1&&(a.push(-1),a.push(2),a.push(1),a.push(F)),u!==1&&(a.push(-1),a.push(2),a.push(0),a.push(u))):d===2?!s&&n!==t?(b=(t-i)/(n-i),u=(t-o)/(n-o),a.push(0),a.push(-1),a.push(1),a.push(0),a.push(b),a.push(-1),a.push(2),a.push(0),a.push(u)):!l&&i!==t?(F=(t-o)/(i-o),m=(t-n)/(i-n),a.push(1),a.push(-1),a.push(2),a.push(1),a.push(F),a.push(-1),a.push(0),a.push(1),a.push(m)):!r&&o!==t&&(h=(t-n)/(o-n),Z=(t-i)/(o-i),a.push(2),a.push(-1),a.push(0),a.push(2),a.push(h),a.push(-1),a.push(1),a.push(2),a.push(Z)):d!==3&&(a.push(0),a.push(1),a.push(2)),a};Qj.computeBarycentricCoordinates=function(t,e,n,i,o,a,s,l,r){let d=n-s,m=s-o,h=a-l,Z=i-l,b=1/(h*d+m*Z),u=e-l,F=t-s,U=(h*F+m*u)*b,G=(-Z*F+d*u)*b,A=1-U-G;return c(r)?(r.x=U,r.y=G,r.z=A,r):new p(U,G,A)};Qj.computeLineSegmentLineSegmentIntersection=function(t,e,n,i,o,a,s,l,r){let d=(s-o)*(e-a)-(l-a)*(t-o),m=(n-t)*(e-a)-(i-e)*(t-o),h=(l-a)*(n-t)-(s-o)*(i-e);if(h===0)return;let Z=d/h,b=m/h;if(Z>=0&&Z<=1&&b>=0&&b<=1)return c(r)||(r=new K),r.x=t+Z*(n-t),r.y=e+Z*(i-e),r};var SW=Qj;function CU(t){this._quantizedVertices=t.quantizedVertices,this._encodedNormals=t.encodedNormals,this._indices=t.indices,this._minimumHeight=t.minimumHeight,this._maximumHeight=t.maximumHeight,this._boundingSphere=t.boundingSphere,this._orientedBoundingBox=t.orientedBoundingBox,this._horizonOcclusionPoint=t.horizonOcclusionPoint,this._credits=t.credits;let e=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,e),i=this._vValues=this._quantizedVertices.subarray(e,2*e);this._heightValues=this._quantizedVertices.subarray(2*e,3*e);function o(s,l){return i[s]-i[l]}function a(s,l){return n[s]-n[l]}this._westIndices=Yj(t.westIndices,o,e),this._southIndices=Yj(t.southIndices,a,e),this._eastIndices=Yj(t.eastIndices,o,e),this._northIndices=Yj(t.northIndices,a,e),this._westSkirtHeight=t.westSkirtHeight,this._southSkirtHeight=t.southSkirtHeight,this._eastSkirtHeight=t.eastSkirtHeight,this._northSkirtHeight=t.northSkirtHeight,this._childTileMask=f(t.childTileMask,15),this._createdByUpsampling=f(t.createdByUpsampling,!1),this._waterMask=t.waterMask,this._mesh=void 0}Object.defineProperties(CU.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return c(this._mesh)}}});var kj=[];function Yj(t,e,n){kj.length=t.length;let i=!1;for(let o=0,a=t.length;o<a;++o)kj[o]=t[o],i=i||o>0&&e(t[o-1],t[o])>0;return i?(kj.sort(e),re.createTypedArray(n,kj)):t}var n2t="createVerticesFromQuantizedTerrainMesh",XJe=new $i(n2t),JJe=new $i(n2t,nV.maximumAsynchronousTasks);CU.prototype.createMesh=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.tilingScheme,n=t.x,i=t.y,o=t.level,a=f(t.exaggeration,1),s=f(t.exaggerationRelativeHeight,0),l=f(t.throttle,!0),r=e.ellipsoid,d=e.tileXYToRectangle(n,i,o),h=(l?JJe:XJe).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:d,relativeToCenter:this._boundingSphere.center,ellipsoid:r,exaggeration:a,exaggerationRelativeHeight:s});if(!c(h))return;let Z=this;return Promise.resolve(h).then(function(b){let u=Z._quantizedVertices.length/3,F=u+Z._westIndices.length+Z._southIndices.length+Z._eastIndices.length+Z._northIndices.length,U=re.createTypedArray(F,b.indices),G=new Float32Array(b.vertices),A=b.center,T=b.minimumHeight,g=b.maximumHeight,C=Z._boundingSphere,y=Z._orientedBoundingBox,Y=f(p.clone(b.occludeePointInScaledSpace),Z._horizonOcclusionPoint),Q=b.vertexStride,J=lc.clone(b.encoding);return Z._mesh=new Au(A,G,U,b.indexCountWithoutSkirts,u,T,g,C,Y,Q,y,J,b.westIndicesSouthToNorth,b.southIndicesEastToWest,b.eastIndicesNorthToSouth,b.northIndicesWestToEast),Z._quantizedVertices=void 0,Z._encodedNormals=void 0,Z._indices=void 0,Z._uValues=void 0,Z._vValues=void 0,Z._heightValues=void 0,Z._westIndices=void 0,Z._southIndices=void 0,Z._eastIndices=void 0,Z._northIndices=void 0,Z._mesh})};var LJe=new $i("upsampleQuantizedTerrainMesh",nV.maximumAsynchronousTasks);CU.prototype.upsample=function(t,e,n,i,o,a,s){let l=this._mesh;if(!c(this._mesh))return;let r=e*2!==o,d=n*2===a,m=t.ellipsoid,h=t.tileXYToRectangle(o,a,s),Z=LJe.scheduleTask({vertices:l.vertices,vertexCountWithoutSkirts:l.vertexCountWithoutSkirts,indices:l.indices,indexCountWithoutSkirts:l.indexCountWithoutSkirts,encoding:l.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:r,isNorthChild:d,childRectangle:h,ellipsoid:m});if(!c(Z))return;let b=Math.min(this._westSkirtHeight,this._eastSkirtHeight);b=Math.min(b,this._southSkirtHeight),b=Math.min(b,this._northSkirtHeight);let u=r?b*.5:this._westSkirtHeight,F=d?b*.5:this._southSkirtHeight,U=r?this._eastSkirtHeight:b*.5,G=d?this._northSkirtHeight:b*.5,A=this._credits;return Promise.resolve(Z).then(function(T){let g=new Uint16Array(T.vertices),C=re.createTypedArray(g.length/3,T.indices),y;return c(T.encodedNormals)&&(y=new Uint8Array(T.encodedNormals)),new CU({quantizedVertices:g,indices:C,encodedNormals:y,minimumHeight:T.minimumHeight,maximumHeight:T.maximumHeight,boundingSphere:Ft.clone(T.boundingSphere),orientedBoundingBox:ci.clone(T.orientedBoundingBox),horizonOcclusionPoint:p.clone(T.horizonOcclusionPoint),westIndices:T.westIndices,southIndices:T.southIndices,eastIndices:T.eastIndices,northIndices:T.northIndices,westSkirtHeight:u,southSkirtHeight:F,eastSkirtHeight:U,northSkirtHeight:G,childTileMask:0,credits:A,createdByUpsampling:!0})})};var yst=32767,i2t=new p;CU.prototype.interpolateHeight=function(t,e,n){let i=k.clamp((e-t.west)/t.width,0,1);i*=yst;let o=k.clamp((n-t.south)/t.height,0,1);return o*=yst,c(this._mesh)?OJe(this,i,o):HJe(this,i,o)};function o2t(t,e,n,i,o,a,s,l){let r=Math.min(n,o,s),d=Math.max(n,o,s),m=Math.min(i,a,l),h=Math.max(i,a,l);return t>=r&&t<=d&&e>=m&&e<=h}var MJe=new K,_Je=new K,DJe=new K;function OJe(t,e,n){let i=t._mesh,o=i.vertices,a=i.encoding,s=i.indices;for(let l=0,r=s.length;l<r;l+=3){let d=s[l],m=s[l+1],h=s[l+2],Z=a.decodeTextureCoordinates(o,d,MJe),b=a.decodeTextureCoordinates(o,m,_Je),u=a.decodeTextureCoordinates(o,h,DJe);if(o2t(e,n,Z.x,Z.y,b.x,b.y,u.x,u.y)){let F=SW.computeBarycentricCoordinates(e,n,Z.x,Z.y,b.x,b.y,u.x,u.y,i2t);if(F.x>=-1e-15&&F.y>=-1e-15&&F.z>=-1e-15){let U=a.decodeHeight(o,d),G=a.decodeHeight(o,m),A=a.decodeHeight(o,h);return F.x*U+F.y*G+F.z*A}}}}function HJe(t,e,n){let i=t._uValues,o=t._vValues,a=t._heightValues,s=t._indices;for(let l=0,r=s.length;l<r;l+=3){let d=s[l],m=s[l+1],h=s[l+2],Z=i[d],b=i[m],u=i[h],F=o[d],U=o[m],G=o[h];if(o2t(e,n,Z,F,b,U,u,G)){let A=SW.computeBarycentricCoordinates(e,n,Z,F,b,U,u,G,i2t);if(A.x>=-1e-15&&A.y>=-1e-15&&A.z>=-1e-15){let T=A.x*a[d]+A.y*a[m]+A.z*a[h];return k.lerp(t._minimumHeight,t._maximumHeight,T/yst)}}}}CU.prototype.isChildAvailable=function(t,e,n,i){let o=2;return n!==t*2&&++o,i!==e*2&&(o-=2),(this._childTileMask&1<<o)!==0};CU.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var OS=CU;function wJe(t){this.resource=t.resource,this.version=t.version,this.isHeightmap=t.isHeightmap,this.tileUrlTemplates=t.tileUrlTemplates,this.availability=t.availability,this.hasVertexNormals=t.hasVertexNormals,this.hasWaterMask=t.hasWaterMask,this.hasMetadata=t.hasMetadata,this.availabilityLevels=t.availabilityLevels,this.availabilityTilesLoaded=t.availabilityTilesLoaded,this.littleEndianExtensionSize=t.littleEndianExtensionSize,this.availabilityPromiseCache={}}function s2t(t){this.requestVertexNormals=f(t.requestVertexNormals,!1),this.requestWaterMask=f(t.requestWaterMask,!1),this.requestMetadata=f(t.requestMetadata,!0),this.ellipsoid=t.ellipsoid,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}s2t.prototype.build=function(t){t._heightmapWidth=this.heightmapWidth,t._scheme=this.scheme;let e=c(this.lastResource.credits)?this.lastResource.credits:[];t._tileCredits=e.concat(this.tileCredits),t._availability=this.availability,t._tilingScheme=this.tilingScheme,t._requestWaterMask=this.requestWaterMask,t._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,t._heightmapStructure=this.heightmapStructure,t._layers=this.layers,t._hasWaterMask=this.hasWaterMask,t._hasVertexNormals=this.hasVertexNormals,t._hasMetadata=this.hasMetadata};async function l2t(t,e,n){if(!e.format){let F="The tile format is not specified in the layer.json file.";throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new St(F)}if(!e.tiles||e.tiles.length===0){let F="The layer.json file does not specify any tile URL templates.";throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new St(F)}let i=!1,o=!1,a=!1,s=!0,l=!1;if(e.format==="heightmap-1.0")l=!0,c(t.heightmapStructure)||(t.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,t.requestWaterMask=!0;else if(e.format.indexOf("quantized-mesh-1.")!==0){let F=`The tile format "${e.format}" is invalid or not supported.`;throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new St(F)}let r=e.tiles,d=e.maxzoom;if(t.overallMaxZoom=Math.max(t.overallMaxZoom,d),!e.projection||e.projection==="EPSG:4326")t.tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:t.ellipsoid});else if(e.projection==="EPSG:3857")t.tilingScheme=new Gs({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:t.ellipsoid});else{let F=`The projection "${e.projection}" is invalid or not supported.`;throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new St(F)}if(t.levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(t.tilingScheme.ellipsoid,t.heightmapWidth,t.tilingScheme.getNumberOfXTilesAtLevel(0)),!e.scheme||e.scheme==="tms"||e.scheme==="slippyMap")t.scheme=e.scheme;else{let F=`The scheme "${e.scheme}" is invalid or not supported.`;throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new St(F)}let m;c(e.extensions)&&e.extensions.indexOf("octvertexnormals")!==-1?i=!0:c(e.extensions)&&e.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),c(e.extensions)&&e.extensions.indexOf("watermask")!==-1&&(o=!0),c(e.extensions)&&e.extensions.indexOf("metadata")!==-1&&(a=!0);let h=e.metadataAvailability,Z=e.available,b;if(c(Z)&&!c(h)){b=new pV(t.tilingScheme,Z.length);for(let F=0;F<Z.length;++F){let U=Z[F],G=t.tilingScheme.getNumberOfYTilesAtLevel(F);c(t.overallAvailability[F])||(t.overallAvailability[F]=[]);for(let A=0;A<U.length;++A){let T=U[A],g=G-T.endY-1,C=G-T.startY-1;t.overallAvailability[F].push([T.startX,g,T.endX,C]),b.addAvailableTileRange(F,T.startX,g,T.endX,C)}}}else c(h)&&(m=new pV(t.tilingScheme,d),b=new pV(t.tilingScheme,d),t.overallAvailability[0]=[[0,0,1,0]],b.addAvailableTileRange(0,0,0,1,0));t.hasWaterMask=t.hasWaterMask||o,t.hasVertexNormals=t.hasVertexNormals||i,t.hasMetadata=t.hasMetadata||a,c(e.attribution)&&(t.attribution.length>0&&(t.attribution+=" "),t.attribution+=e.attribution),t.layers.push(new wJe({resource:t.lastResource,version:e.version,isHeightmap:l,tileUrlTemplates:r,availability:b,hasVertexNormals:i,hasWaterMask:o,hasMetadata:a,availabilityLevels:h,availabilityTilesLoaded:m,littleEndianExtensionSize:s}));let u=e.parentUrl;return c(u)?c(b)?(t.lastResource=t.lastResource.getDerivedResource({url:u}),t.lastResource.appendForwardSlash(),t.layerJsonResource=t.lastResource.getDerivedResource({url:"layer.json"}),await kst(t),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function PJe(t,e,n){let i=`An error occurred while accessing ${t.layerJsonResource.url}.`;if(c(e)&&(i+=` -${e.message}`),t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,i),t.previousError.retry)return kst(t,n);throw new St(i)}async function vJe(t,e,n){await l2t(t,e,n);let i=t.overallAvailability.length;if(i>0){let o=t.availability=new pV(t.tilingScheme,t.overallMaxZoom);for(let a=0;a<i;++a){let s=t.overallAvailability[a];for(let l=0;l<s.length;++l){let r=s[l];o.addAvailableTileRange(a,r[0],r[1],r[2],r[3])}}}if(t.attribution.length>0){let o=new on(t.attribution);t.tileCredits.push(o)}return!0}async function kst(t,e){try{let n=await t.layerJsonResource.fetchJson();return vJe(t,n,e)}catch(n){return c(n)&&n.statusCode===404?(await l2t(t,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},e),!0):PJe(t,n,e)}}function uV(t){t=f(t,f.EMPTY_OBJECT),this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=t.ellipsoid,this._requestVertexNormals=f(t.requestVertexNormals,!1),this._requestWaterMask=f(t.requestWaterMask,!1),this._requestMetadata=f(t.requestMetadata,!0),this._errorEvent=new It;let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var Bst={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function a2t(t){return!c(t)||t.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${t.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function KJe(t,e,n,i,o){let a=new Uint16Array(e,0,t._heightmapWidth*t._heightmapWidth);return new Gd({buffer:a,childTileMask:new Uint8Array(e,a.byteLength,1)[0],waterMask:new Uint8Array(e,a.byteLength+1,e.byteLength-a.byteLength-1),width:t._heightmapWidth,height:t._heightmapWidth,structure:t._heightmapStructure,credits:t._tileCredits})}function zJe(t,e,n,i,o,a){let s=a.littleEndianExtensionSize,l=0,r=3,d=r+1,m=Float64Array.BYTES_PER_ELEMENT*r,h=Float64Array.BYTES_PER_ELEMENT*d,b=Uint16Array.BYTES_PER_ELEMENT*3,u=3,F=Uint16Array.BYTES_PER_ELEMENT,U=F*u,G=new DataView(e),A=new p(G.getFloat64(l,!0),G.getFloat64(l+8,!0),G.getFloat64(l+16,!0));l+=m;let T=G.getFloat32(l,!0);l+=Float32Array.BYTES_PER_ELEMENT;let g=G.getFloat32(l,!0);l+=Float32Array.BYTES_PER_ELEMENT;let C=new Ft(new p(G.getFloat64(l,!0),G.getFloat64(l+8,!0),G.getFloat64(l+16,!0)),G.getFloat64(l+m,!0));l+=h;let y=new p(G.getFloat64(l,!0),G.getFloat64(l+8,!0),G.getFloat64(l+16,!0));l+=m;let Y=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let Q=new Uint16Array(e,l,Y*3);l+=Y*b,Y>64*1024&&(F=Uint32Array.BYTES_PER_ELEMENT,U=F*u);let J=Q.subarray(0,Y),M=Q.subarray(Y,2*Y),V=Q.subarray(Y*2,3*Y);Ni.zigZagDeltaDecode(J,M,V),l%F!==0&&(l+=F-l%F);let E=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let I=re.createTypedArrayFromArrayBuffer(Y,e,l,E*u);l+=E*U;let B=0,X=I.length;for(let Wt=0;Wt<X;++Wt){let Nt=I[Wt];I[Wt]=B-Nt,Nt===0&&++B}let _=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let P=re.createTypedArrayFromArrayBuffer(Y,e,l,_);l+=_*F;let w=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let z=re.createTypedArrayFromArrayBuffer(Y,e,l,w);l+=w*F;let H=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let nt=re.createTypedArrayFromArrayBuffer(Y,e,l,H);l+=H*F;let $=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let dt=re.createTypedArrayFromArrayBuffer(Y,e,l,$);l+=$*F;let q,at;for(;l<G.byteLength;){let Wt=G.getUint8(l,!0);l+=Uint8Array.BYTES_PER_ELEMENT;let Nt=G.getUint32(l,s);if(l+=Uint32Array.BYTES_PER_ELEMENT,Wt===Bst.OCT_VERTEX_NORMALS&&t._requestVertexNormals)q=new Uint8Array(e,l,Y*2);else if(Wt===Bst.WATER_MASK&&t._requestWaterMask)at=new Uint8Array(e,l,Nt);else if(Wt===Bst.METADATA&&t._requestMetadata){let kt=G.getUint32(l,!0);if(kt>0){let qt=ts(new Uint8Array(e),l+Uint32Array.BYTES_PER_ELEMENT,kt).available;if(c(qt))for(let ie=0;ie<qt.length;++ie){let oe=n+ie+1,He=qt[ie],rn=t._tilingScheme.getNumberOfYTilesAtLevel(oe);for(let de=0;de<He.length;++de){let zt=He[de],ke=rn-zt.endY-1,ue=rn-zt.startY-1;t.availability.addAvailableTileRange(oe,zt.startX,ke,zt.endX,ue),a.availability.addAvailableTileRange(oe,zt.startX,ke,zt.endX,ue)}}}a.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}l+=Nt}let st=t.getLevelMaximumGeometricError(n)*5,Et=t._tilingScheme.tileXYToRectangle(i,o,n),Qt=ci.fromRectangle(Et,T,g,t._tilingScheme.ellipsoid);return new OS({center:A,minimumHeight:T,maximumHeight:g,boundingSphere:C,orientedBoundingBox:Qt,horizonOcclusionPoint:y,quantizedVertices:Q,encodedNormals:q,indices:I,westIndices:P,southIndices:z,eastIndices:nt,northIndices:dt,westSkirtHeight:st,southSkirtHeight:st,eastSkirtHeight:st,northSkirtHeight:st,childTileMask:t.availability.computeChildMaskForTile(n,i,o),waterMask:at,credits:t._tileCredits})}uV.prototype.requestTileGeometry=function(t,e,n,i){let o=this._layers,a,s=o.length,l=!1,r=Promise.resolve();if(s===1)a=o[0];else for(let d=0;d<s;++d){let m=o[d];if(!c(m.availability)||m.availability.isTileAvailable(n,t,e)){a=m;break}let h=Yst(this,t,e,n,m,d===0);h.result&&(l=!0,r=r.then(()=>h.promise))}return!c(a)&&l?r.then(()=>new Promise(d=>{setTimeout(()=>{let m=this.requestTileGeometry(t,e,n,i);d(m)},0)})):r2t(this,t,e,n,a,i)};function r2t(t,e,n,i,o,a){if(!c(o))return Promise.reject(new St("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let l;!t._scheme||t._scheme==="tms"?l=t._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:l=n;let r=[];t._requestVertexNormals&&o.hasVertexNormals&&r.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),t._requestWaterMask&&o.hasWaterMask&&r.push("watermask"),t._requestMetadata&&o.hasMetadata&&r.push("metadata");let d,m,h=s[(e+l+i)%s.length],Z=o.resource;c(Z._ionEndpoint)&&!c(Z._ionEndpoint.externalType)?(r.length!==0&&(m={extensions:r.join("-")}),d=a2t(void 0)):d=a2t(r);let b=Z.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:e,y:l},queryParameters:m,headers:d,request:a}).fetchArrayBuffer();if(c(b))return b.then(function(u){return c(u)?c(t._heightmapStructure)?KJe(t,u,i,e,n):zJe(t,u,i,e,n,o):Promise.reject(new St("Mesh buffer doesn't exist."))})}Object.defineProperties(uV.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});uV.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};uV.fromIonAssetId=async function(t,e){let n=await gh.fromAssetId(t);return uV.fromUrl(n,e)};uV.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT),t=await Promise.resolve(t);let n=te.createIfNeeded(t);n.appendForwardSlash();let i=new s2t(e);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await kst(i);let o=new uV(e);return i.build(o),o};uV.prototype.getTileDataAvailable=function(t,e,n){if(!c(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,t,e))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let a=0;a<o;++a)if(Yst(this,t,e,n,i[a],a===0).result)return;return!1};uV.prototype.loadTileDataAvailability=function(t,e,n){if(!c(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,t,e)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let a=0;a<o;++a){let s=Yst(this,t,e,n,i[a],a===0);if(c(s.promise))return s.promise}};function Qst(t,e,n,i){if(i===0)return;let o=t.availabilityLevels,a=i%o===0?i-o:(i/o|0)*o,s=1<<i-a,l=e/s|0,r=n/s|0;return{level:a,x:l,y:r}}function Yst(t,e,n,i,o,a){if(!c(o.availabilityLevels))return{result:!1};let s,l=function(){delete o.availabilityPromiseCache[s]},r=o.availabilityTilesLoaded,d=o.availability,m=Qst(o,e,n,i);for(;c(m);){if(d.isTileAvailable(m.level,m.x,m.y)&&!r.isTileAvailable(m.level,m.x,m.y)){let h;if(!a&&(s=`${m.level}-${m.x}-${m.y}`,h=o.availabilityPromiseCache[s],!c(h))){let Z=new Zs({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN});h=r2t(t,m.x,m.y,m.level,o,Z),c(h)&&(o.availabilityPromiseCache[s]=h,h.then(l))}return{result:!0,promise:h}}m=Qst(o,m.x,m.y,m.level)}return{result:!1}}uV._getAvailabilityTile=Qst;var HS=uV;var WDo=R(W(),1);function gW(t){t=f(t,f.EMPTY_OBJECT);let e=t.radius,n={center:t.center,semiMajorAxis:e,semiMinorAxis:e,ellipsoid:t.ellipsoid,height:t.height,extrudedHeight:t.extrudedHeight,granularity:t.granularity,vertexFormat:t.vertexFormat,stRotation:t.stRotation,shadowVolume:t.shadowVolume};this._ellipseGeometry=new Pc(n),this._workerName="createCircleGeometry"}gW.packedLength=Pc.packedLength;gW.pack=function(t,e,n){return Pc.pack(t._ellipseGeometry,e,n)};var jJe=new Pc({center:new p,semiMajorAxis:1,semiMinorAxis:1}),Zc={center:new p,radius:void 0,ellipsoid:mt.clone(mt.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new ee,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};gW.unpack=function(t,e,n){let i=Pc.unpack(t,e,jJe);return Zc.center=p.clone(i._center,Zc.center),Zc.ellipsoid=mt.clone(i._ellipsoid,Zc.ellipsoid),Zc.height=i._height,Zc.extrudedHeight=i._extrudedHeight,Zc.granularity=i._granularity,Zc.vertexFormat=ee.clone(i._vertexFormat,Zc.vertexFormat),Zc.stRotation=i._stRotation,Zc.shadowVolume=i._shadowVolume,c(n)?(Zc.semiMajorAxis=i._semiMajorAxis,Zc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Pc(Zc),n):(Zc.radius=i._semiMajorAxis,new gW(Zc))};gW.createGeometry=function(t){return Pc.createGeometry(t._ellipseGeometry)};gW.createShadowVolume=function(t,e,n){let i=t._ellipseGeometry._granularity,o=t._ellipseGeometry._ellipsoid,a=e(i,o),s=n(i,o);return new gW({center:t._ellipseGeometry._center,radius:t._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:t._ellipseGeometry._stRotation,granularity:i,extrudedHeight:a,height:s,vertexFormat:ee.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(gW.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var xst=gW;var SDo=R(W(),1);function oN(t){t=f(t,f.EMPTY_OBJECT);let e=t.radius,n={center:t.center,semiMajorAxis:e,semiMinorAxis:e,ellipsoid:t.ellipsoid,height:t.height,extrudedHeight:t.extrudedHeight,granularity:t.granularity,numberOfVerticalLines:t.numberOfVerticalLines};this._ellipseGeometry=new Lh(n),this._workerName="createCircleOutlineGeometry"}oN.packedLength=Lh.packedLength;oN.pack=function(t,e,n){return Lh.pack(t._ellipseGeometry,e,n)};var qJe=new Lh({center:new p,semiMajorAxis:1,semiMinorAxis:1}),cp={center:new p,radius:void 0,ellipsoid:mt.clone(mt.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};oN.unpack=function(t,e,n){let i=Lh.unpack(t,e,qJe);return cp.center=p.clone(i._center,cp.center),cp.ellipsoid=mt.clone(i._ellipsoid,cp.ellipsoid),cp.height=i._height,cp.extrudedHeight=i._extrudedHeight,cp.granularity=i._granularity,cp.numberOfVerticalLines=i._numberOfVerticalLines,c(n)?(cp.semiMajorAxis=i._semiMajorAxis,cp.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Lh(cp),n):(cp.radius=i._semiMajorAxis,new oN(cp))};oN.createGeometry=function(t){return Lh.createGeometry(t._ellipseGeometry)};var Xst=oN;var EDo=R(W(),1),$Je=(t,e)=>{let n=i=>{!t.trackedEntity&&i.shouldAnimate===!0?e.entities._precisionMode=i.multiplier===1?75:0:e.entities._precisionMode=0};return t.clock.onTick.addEventListener(n),{remove:function(){t.clock.onTick.removeEventListener(n)}}},Jst=$Je;var vDo=R(W(),1);var LDo=R(W(),1);var xj=class{constructor(e){let n=e,{_times:i,_values:o,_value:a,_interpolationDegree:s,_derivativeTypes:l,_xTable:r,_yTable:d,_interpolationResult:m,_interpolationAlgorithm:h}=n,Z="ConstantPositionProperty";n instanceof cl?Z="CompositePositionProperty":n instanceof jl?Z="ConstantPositionProperty":n instanceof ql?Z="SampledProperty":n instanceof Bs?Z="SampledPositionProperty":n instanceof vc?Z="ScaledPositionProperty":n instanceof _m&&(Z="TimeIntervalCollectionProperty"),this._times=i,this._values=o,this._value=a,this._interpolationDegree=s,this._derivativeTypes=l,this._xTable=r,this._yTable=d,this._interpolationResult=m,this.interpolationAlgorithm=h?.type?.toUpperCase()||"LINEAR",this.propertyType=Z}},tLe=t=>t.position?new xj(t.position):null,eLe=t=>{let e=t,n;switch(e.propertyType){case"CompositePositionProperty":n=cl;break;case"ConstantPositionProperty":n=jl;break;case"SampledProperty":n=ql;break;case"SampledPositionProperty":n=Bs;break;case"ScaledPositionProperty":n=vc;break;case"TimeIntervalCollectionProperty":n=_m;break;default:throw new Error(`Unknown propertyType: ${e.propertyType}`)}let i=new n(p);for(let o in e)o!=="propertyType"&&o!=="interpolationAlgorithm"&&(i[o]=e[o]);return i.setInterpolationOptions&&i.setInterpolationOptions({interpolationAlgorithm:nLe(e.interpolationAlgorithm),interpolationDegree:e._interpolationDegree}),i};function nLe(t){switch(t){case"LAGRANGE":return dT;case"HERMITE":return rT;case"LINEAR":default:return _R}}var g5={SerializePosition:tLe,DeserializePosition:eLe,SerializedPosition:xj};var{OMMT:HDo,OMMCOLLECTIONT:iLe}=sW,{CATT:wDo,CATCOLLECTIONT:oLe}=aW,Lst=1,aLe=async({spaceCatalogDataSources:t,startTime:e,endTime:n,step:i=6e4,radius:o=5e3,screeningObjects:a=[]})=>{let s={OMM:new iLe,CAT:new oLe,entities:[]};Array.isArray(t)||(t=[t]);let l=[];for(let u of t)l=l.concat([...u.entities.values]);a.length===0&&(a=l);let r=a.map(u=>u.id);for(let u of l){let F=u.properties.OMM.getValue(),U=u.properties.CAT.getValue(),G=g5(u);G&&(s.entities.push({id:u.id,position:G}),s.OMM.RECORDS.push(F),s.CAT.RECORDS.push(U))}s.OMM=writeFB(s.OMM).buffer,s.CAT=writeFB(s.CAT).buffer;let d=new $i("ConjunctionAssessment",Lst),m=Math.ceil(r.length/Lst),h=[];for(let u=0;u<Lst;u++){let F={transferEntities:s,screeningObjectIds:r.slice(u*m,(u+1)*m),start:rt.toDate(e).getTime(),stop:rt.toDate(n).getTime(),step:i,radius:o};h.push(d.scheduleTask(F))}let Z=await Promise.all(h);return console.log(Z),Z.flat()},Mst=aLe;var oOo=R(W(),1);function aN(t){t=f(t,f.EMPTY_OBJECT),this._callback=t.callback,this._tilingScheme=t.tilingScheme,c(this._tilingScheme)||(this._tilingScheme=new Qo({ellipsoid:f(t.ellipsoid,mt.WGS84)})),this._width=t.width,this._height=t.height;let e=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,e,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new It;let n=t.credit;typeof n=="string"&&(n=new on(n)),this._credit=n}Object.defineProperties(aN.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});aN.prototype.requestTileGeometry=function(t,e,n,i){let o=this._callback(t,e,n);if(!c(o))return;let a=this._width,s=this._height;return Promise.resolve(o).then(function(l){let r=l;return Array.isArray(r)&&(r=new Float64Array(r)),new Gd({buffer:r,width:a,height:s})})};aN.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};aN.prototype.getTileDataAvailable=function(t,e,n){};aN.prototype.loadTileDataAvailability=function(t,e,n){};var _st=aN;var sOo=R(W(),1);function d2t(t){this.proxy=t}d2t.prototype.getURL=function(t){let e=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+e+encodeURIComponent(t)};var Dst=d2t;var VOo=R(W(),1);var c2t=t=>{let e;if(t.position)e=t.position?._property||t.position;else for(let u in t)if(t[u]?.position)e=t[u].position._property;else if(t[u]?.positions){e=t[u].positions;let F={x:0,y:0,z:0};for(let U=0;U<e._value.length;U++)F.x+=e._value[U].x,F.y+=e._value[U].y,F.z+=e._value[U].z;for(let U in F)F[U]&&(F[U]=F[U]/e._value.length);e._value=new p(F.x,F.y,F.z)}if(!e)return;let{id:n}=t,{_times:i,_values:o,_value:a,_interpolationDegree:s,_derivativeTypes:l,_xTable:r,_yTable:d,_interpolationResult:m,_interpolationAlgorithm:h}=e,Z="ConstantPositionProperty";e instanceof cl?Z="CompositePositionProperty":e instanceof jl?Z="ConstantPositionProperty":e instanceof ql?Z="SampledProperty":e instanceof Bs?Z="SampledPositionProperty":e instanceof vc?Z="ScaledPositionProperty":e instanceof _m&&(Z="TimeIntervalCollectionProperty"),t.properties=t.properties||{};let{jsonOMM:b}=t.properties;return{id:n,_times:i,_values:o,_value:a,_interpolationDegree:s,_derivativeTypes:l,_xTable:r,_yTable:d,_interpolationResult:m,interpolationAlgorithm:h?.type?.toUpperCase()||"LINEAR",propertyType:Z,jsonOMM:b}},sLe=async({fromEntity:t,toEntityArray:e,startTime:n,endTime:i,step:o=60,sensor:a=null,sensorOrientation:s,dateString:l=!1})=>{let r=[];if(Array.isArray(e)||(e=[e]),e.length){for(let G of e){let A=c2t(G);A&&r.push(A)}let d=3,m=Math.ceil(r.length/d),h=[],Z=new $i("AnalysisWorker",d),b=[];for(let G=0;G<r.length;G++)if(b.length<m&&b.push(r[G]),b.length>=m||G===r.length-1){let A={fromEntity:c2t(t),toEntityArray:b,startTime:n.toString(),endTime:i.toString(),dateString:l,step:o,sensor:a?{sensorName:a?.constructor?.name,...a}:null,sensorOrientation:s},T=Z.scheduleTask(A);h.push(T.then(g=>g)),b=[]}let u=await Promise.allSettled(h),F=u.filter(G=>G.reason);if(F.length)throw Error(JSON.stringify(F,null,4));let U={};for(let G=0;G<u.length;G++)for(let A in u[G].value)u[G].value[A]&&(U[A]=u[G].value[A]);return U}return Promise.reject("No Target Entities Found.")},Ost=sLe;var ROo=R(W(),1),lLe={SEARCH:0,AUTOCOMPLETE:1},IU=Object.freeze(lLe);var GOo=R(W(),1);function Xj(){Ut.throwInstantiationError()}Object.defineProperties(Xj.prototype,{credit:{get:Ut.throwInstantiationError}});Xj.getCreditsFromResult=function(t){if(c(t.attributions))return t.attributions.map(on.getIonCredit)};Xj.prototype.geocode=Ut.throwInstantiationError;var sN=Xj;var SOo=R(W(),1);function m2t(){Ut.throwInstantiationError()}m2t.createGeometry=function(t){Ut.throwInstantiationError()};var Hst=m2t;var POo=R(W(),1),pLe=R(wst(),1);var BOo=R(W(),1);var COo=R(W(),1);function rLe(t,e){return(t&e)!==0}var Vc=rLe;var dLe=[1,2,4,8],h2t=15,cLe=16,mLe=64,hLe=128;function zb(t,e,n,i,o,a){this._bits=t,this.cnodeVersion=e,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=a,this.ancestorHasTerrain=!1,this.terrainState=void 0}zb.clone=function(t,e){return c(e)?(e._bits=t._bits,e.cnodeVersion=t.cnodeVersion,e.imageryVersion=t.imageryVersion,e.terrainVersion=t.terrainVersion,e.imageryProvider=t.imageryProvider,e.terrainProvider=t.terrainProvider):e=new zb(t._bits,t.cnodeVersion,t.imageryVersion,t.terrainVersion,t.imageryProvider,t.terrainProvider),e.ancestorHasTerrain=t.ancestorHasTerrain,e.terrainState=t.terrainState,e};zb.prototype.setParent=function(t){this.ancestorHasTerrain=t.ancestorHasTerrain||this.hasTerrain()};zb.prototype.hasSubtree=function(){return Vc(this._bits,cLe)};zb.prototype.hasImagery=function(){return Vc(this._bits,mLe)};zb.prototype.hasTerrain=function(){return Vc(this._bits,hLe)};zb.prototype.hasChildren=function(){return Vc(this._bits,h2t)};zb.prototype.hasChild=function(t){return Vc(this._bits,dLe[t])};zb.prototype.getChildBitmask=function(){return this._bits&h2t};var E5=zb;function uLe(t){let e=t.length,n=new ArrayBuffer(e),i=new Uint8Array(n);for(let o=0;o<e;++o)i[o]=t.charCodeAt(o);return n}var ZLe=uLe(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +`;var n5o=b(W(),1);var k9o=b(W(),1);function nN(t,e){this._tilingScheme=t,this._maximumLevel=e,this._rootNodes=[]}var DT=new Gt;function fJe(t,e,n,i){let o=i.length;for(let a=0;a<o;++a){let s=i[a];if(s.x===e&&s.y===n&&s.level===t)return!0}return!1}nN.prototype.addAvailableTileRange=function(t,e,n,i,o){let a=this._tilingScheme,s=this._rootNodes;if(t===0)for(let u=n;u<=o;++u)for(let R=e;R<=i;++R)fJe(t,R,u,s)||s.push(new tN(a,void 0,0,R,u));a.tileXYToRectangle(e,n,t,DT);let l=DT.west,r=DT.north;a.tileXYToRectangle(i,o,t,DT);let d=DT.east,m=DT.south,h=new SJe(t,l,m,d,r);for(let u=0;u<s.length;++u){let R=s[u];Ast(R.extent,h)&&TJe(this._maximumLevel,R,h)}};nN.prototype.computeMaximumLevelAtPosition=function(t){let e;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(eN(i.extent,t)){e=i;break}}return c(e)?S5(void 0,e,t):-1};var FJe=[],UJe=[],GJe=new Gt,AJe=new Gt;nN.prototype.computeBestAvailableLevelOverRectangle=function(t){let e=FJe;e.length=0,t.east<t.west?(e.push(Gt.fromRadians(-Math.PI,t.south,t.east,t.north,GJe)),e.push(Gt.fromRadians(t.west,t.south,Math.PI,t.north,AJe))):e.push(t);let n=UJe;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)T5(n,this._rootNodes[i],e);for(i=n.length-1;i>=0;--i)if(c(n[i])&&n[i].length===0)return i;return 0};var jQt=new gt;nN.prototype.isTileAvailable=function(t,e,n){let i=this._tilingScheme.tileXYToRectangle(e,n,t,DT);return Gt.center(i,jQt),this.computeMaximumLevelAtPosition(jQt)>=t};nN.prototype.computeChildMaskForTile=function(t,e,n){let i=t+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*e,2*n+1)?1:0,o|=this.isTileAvailable(i,2*e+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*e,2*n)?4:0,o|=this.isTileAvailable(i,2*e+1,2*n)?8:0,o};function tN(t,e,n,i,o){this.tilingScheme=t,this.parent=e,this.level=n,this.x=i,this.y=o,this.extent=t.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(tN.prototype,{nw:{get:function(){return this._nw||(this._nw=new tN(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new tN(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new tN(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new tN(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function SJe(t,e,n,i,o){this.level=t,this.west=e,this.south=n,this.east=i,this.north=o}function Ast(t,e){let n=Math.max(t.west,e.west),i=Math.max(t.south,e.south),o=Math.min(t.east,e.east),a=Math.min(t.north,e.north);return i<a&&n<o}function TJe(t,e,n){for(;e.level<t;)if(Bj(e.nw.extent,n))e=e.nw;else if(Bj(e.ne.extent,n))e=e.ne;else if(Bj(e.sw.extent,n))e=e.sw;else if(Bj(e.se.extent,n))e=e.se;else break;if(e.rectangles.length===0||e.rectangles[e.rectangles.length-1].level<=n.level)e.rectangles.push(n);else{let i=Ja(e.rectangles,n.level,gJe);i<0&&(i=~i),e.rectangles.splice(i,0,n)}}function gJe(t,e){return t.level-e}function Bj(t,e){return e.west>=t.west&&e.east<=t.east&&e.south>=t.south&&e.north<=t.north}function eN(t,e){return e.longitude>=t.west&&e.longitude<=t.east&&e.latitude>=t.south&&e.latitude<=t.north}function S5(t,e,n){let i=0,o=!1;for(;!o;){let a=e._nw&&eN(e._nw.extent,n),s=e._ne&&eN(e._ne.extent,n),l=e._sw&&eN(e._sw.extent,n),r=e._se&&eN(e._se.extent,n);if(a+s+l+r>1){a&&(i=Math.max(i,S5(e,e._nw,n))),s&&(i=Math.max(i,S5(e,e._ne,n))),l&&(i=Math.max(i,S5(e,e._sw,n))),r&&(i=Math.max(i,S5(e,e._se,n)));break}else a?e=e._nw:s?e=e._ne:l?e=e._sw:r?e=e._se:o=!0}for(;e!==t;){let a=e.rectangles;for(let s=a.length-1;s>=0&&a[s].level>i;--s){let l=a[s];eN(l,n)&&(i=l.level)}e=e.parent}return i}function T5(t,e,n){if(!e)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||Ast(e.extent,n[i]);if(!o)return;let a=e.rectangles;for(i=0;i<a.length;++i){let s=a[i];t[s.level]||(t[s.level]=n),t[s.level]=EJe(t[s.level],s)}T5(t,e._nw,n),T5(t,e._ne,n),T5(t,e._sw,n),T5(t,e._se,n)}function EJe(t,e){let n=[];for(let i=0;i<t.length;++i){let o=t[i];Ast(o,e)?(o.west<e.west&&n.push(new Gt(o.west,o.south,e.west,o.north)),o.east>e.east&&n.push(new Gt(e.east,o.south,o.east,o.north)),o.south<e.south&&n.push(new Gt(Math.max(e.west,o.west),o.south,Math.min(e.east,o.east),e.south)),o.north>e.north&&n.push(new Gt(Math.max(e.west,o.west),e.north,Math.min(e.east,o.east),o.north))):n.push(o)}return n}var pZ=nN;var CJe=15;function qQt(t){this.ellipsoid=f(t.ellipsoid,mt.WGS84),this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}qQt.prototype.build=function(t){t._credit=this.credit,t._tilingScheme=this.tilingScheme,t._height=this.height,t._width=this.width,t._encoding=this.encoding,t._lodCount=this.lodCount,t._hasAvailability=this.hasAvailability,t._tilesAvailable=this.tilesAvailable,t._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,t._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,t._terrainDataStructure=this.terrainDataStructure};function IJe(t,e){let n=e.copyrightText;c(n)&&(t.credit=new on(n));let i=e.spatialReference,o=f(i.latestWkid,i.wkid),a=e.extent,s={ellipsoid:t.ellipsoid};if(o===4326)s.rectangle=Gt.fromDegrees(a.xmin,a.ymin,a.xmax,a.ymax),t.tilingScheme=new Qo(s);else if(o===3857){let d=Math.PI*t.ellipsoid.maximumRadius;e.extent.xmax>d&&(e.extent.xmax=d),e.extent.ymax>d&&(e.extent.ymax=d),e.extent.xmin<-d&&(e.extent.xmin=-d),e.extent.ymin<-d&&(e.extent.ymin=-d),s.rectangleSouthwestInMeters=new K(a.xmin,a.ymin),s.rectangleNortheastInMeters=new K(a.xmax,a.ymax),t.tilingScheme=new Gs(s)}else throw new Tt("Invalid spatial reference");let l=e.tileInfo;if(!c(l))throw new Tt("tileInfo is required");t.width=l.rows+1,t.height=l.cols+1,t.encoding=l.format==="LERC"?UV.LERC:UV.NONE,t.lodCount=l.lods.length-1,(t.hasAvailability=e.capabilities.indexOf("Tilemap")!==-1)&&(t.tilesAvailable=new pZ(t.tilingScheme,t.lodCount),t.tilesAvailable.addAvailableTileRange(0,0,0,t.tilingScheme.getNumberOfXTilesAtLevel(0),t.tilingScheme.getNumberOfYTilesAtLevel(0)),t.tilesAvailabilityLoaded=new pZ(t.tilingScheme,t.lodCount)),t.levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(t.tilingScheme.ellipsoid,t.width,t.tilingScheme.getNumberOfXTilesAtLevel(0)),e.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),c(e.minValues)&&c(e.maxValues)?t.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:e.minValues[0],highestEncodedHeight:e.maxValues[0]}:t.terrainDataStructure={elementMultiplier:1}}async function NJe(t,e,n){try{let i=await e.fetchJson();IJe(t,i)}catch(i){let o=`An error occurred while accessing ${e}.`;throw za.reportError(void 0,n,c(n)?n._errorEvent:void 0,o),i}}function gU(t){t=f(t,f.EMPTY_OBJECT),this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new It}Object.defineProperties(gU.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});gU.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT),t=await Promise.resolve(t);let n=te.createIfNeeded(t);n.appendForwardSlash(),c(e.token)&&(n=n.getDerivedResource({queryParameters:{token:e.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new qQt(e);await NJe(o,i);let a=new gU(e);return o.build(a),a._resource=n,a};gU.prototype.requestTileGeometry=function(t,e,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${e}/${t}`,request:i}),a=this._hasAvailability,s=Promise.resolve(!0),l;if(a&&!c(Sst(this,n+1,t*2,e*2))){let h=$Qt(this,n+1,t*2,e*2);s=h.promise,l=h.request}let r=o.fetchArrayBuffer();if(!c(r)||!c(s))return;let d=this,m=this._tilesAvailable;return Promise.all([r,s]).then(function(h){return new Gd({buffer:h[0],width:d._width,height:d._height,childTileMask:a?m.computeChildMaskForTile(n,t,e):CJe,structure:d._terrainDataStructure,encoding:d._encoding})}).catch(function(h){return c(l)&&l.state===qi.CANCELLED?(i.cancel(),i.deferred.promise.finally(function(){return i.state=qi.CANCELLED,Promise.reject(h)})):Promise.reject(h)})};function Sst(t,e,n,i){if(!t._hasAvailability)return;let o=t._tilesAvailabilityLoaded,a=t._tilesAvailable;if(e>t._lodCount)return!1;if(a.isTileAvailable(e,n,i))return!0;if(o.isTileAvailable(e,n,i))return!1}gU.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};gU.prototype.getTileDataAvailable=function(t,e,n){if(!this._hasAvailability)return;let i=Sst(this,n,t,e);if(c(i))return i;$Qt(this,n,t,e)};gU.prototype.loadTileDataAvailability=function(t,e,n){};function yJe(t,e,n,i){let o=e-1,a=n-1,s=i[t.y*e+t.x],l=[],r={startX:t.x,startY:t.y,endX:0,endY:0},d=new K(t.x+1,t.y+1),m=!1,h=!1;for(;!(m&&h);){let u=d.x,R=h?d.y+1:d.y;if(!m){for(let V=t.y;V<R;++V)if(i[V*e+d.x]!==s){m=!0;break}m?(l.push(new K(d.x,t.y)),--d.x,--u,r.endX=d.x):d.x===o?(r.endX=d.x,m=!0):++d.x}if(!h){let V=d.y*e;for(let F=t.x;F<=u;++F)if(i[V+F]!==s){h=!0;break}h?(l.push(new K(t.x,d.y)),--d.y,r.endY=d.y):d.y===a?(r.endY=d.y,h=!0):++d.y}}return{endingIndices:l,range:r,value:s}}function BJe(t,e,n,i,o){let a=[];if(o.every(function(r){return r===o[0]}))return o[0]===1&&a.push({startX:t,startY:e,endX:t+n-1,endY:e+i-1}),a;let l=[new K(0,0)];for(;l.length>0;){let r=l.pop(),d=yJe(r,n,i,o);if(d.value===1){let h=d.range;h.startX+=t,h.endX+=t,h.startY+=e,h.endY+=e,a.push(h)}let m=d.endingIndices;m.length>0&&(l=l.concat(m))}return a}function $Qt(t,e,n,i){if(!t._hasAvailability)return{};let o=Math.floor(n/128)*128,a=Math.floor(i/128)*128,s=Math.min(1<<e,128),l=`tilemap/${e}/${a}/${o}/${s}/${s}`,r=t._availableCache;if(c(r[l]))return r[l];let d=new us({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN}),h=t._resource.getDerivedResource({url:l,request:d}).fetchJson();return c(h)?(h=h.then(function(u){let R=BJe(o,a,s,s,u.data);t._tilesAvailabilityLoaded.addAvailableTileRange(e,o,a,o+s,a+s);let V=t._tilesAvailable;for(let F=0;F<R.length;++F){let U=R[F];V.addAvailableTileRange(e,U.startX,U.startY,U.endX,U.endY)}return Sst(t,e,n,i)}),r[l]={promise:h,request:d},h=h.finally(function(u){return delete r[l],u}),{promise:h,request:d}):{}}var Tst=gU;var d5o=b(W(),1);var tkt="https://dev.virtualearth.net/REST/v1/Locations";function gst(t){t=f(t,f.EMPTY_OBJECT);let e=t.key;this._key=e;let n={key:e};c(t.culture)&&(n.culture=t.culture),this._resource=new te({url:tkt,queryParameters:n}),this._credit=new on('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(gst.prototype,{url:{get:function(){return tkt}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});gst.prototype.geocode=async function(t){return this._resource.getDerivedResource({queryParameters:{query:t}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let a=o.bbox,s=a[0],l=a[1],r=a[2],d=a[3];return{displayName:o.name,destination:Gt.fromDegrees(l,s,d,r)}})})};var Est=gst;var h5o=b(W(),1);function Cst(){}Object.defineProperties(Cst.prototype,{credit:{get:function(){}}});Cst.prototype.geocode=function(t){let e=t.match(/[^\s,\n]+/g);if(e.length===2||e.length===3){let n=+e[0],i=+e[1],o=e.length===3?+e[2]:300;if(isNaN(n)&&isNaN(i)){let a=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<e.length;++s){let l=e[s].match(a);a.test(e[s])&&l.length===3&&(/^[ns]/i.test(l[2])?i=/^[n]/i.test(l[2])?+l[1]:-l[1]:/^[ew]/i.test(l[2])&&(n=/^[e]/i.test(l[2])?+l[1]:-l[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let a={displayName:t,destination:p.fromDegrees(n,i,o)};return Promise.resolve([a])}}return Promise.resolve([])};var Ist=Cst;var F5o=b(W(),1);var QJe=new bt,ekt=new p,iN=new p;function kJe(t){let e=t.points,n=t.times;if(e.length<3){let i=n[0],o=1/(n[1]-i),a=e[0],s=e[1];return function(l,r){c(r)||(r=new p);let d=(l-i)*o;return p.lerp(a,s,d,r)}}return function(i,o){c(o)||(o=new p);let a=t._lastTimeIndex=t.findTimeInterval(i,t._lastTimeIndex),s=(i-n[a])/(n[a+1]-n[a]),l=QJe;l.z=s,l.y=s*s,l.x=l.y*s,l.w=1;let r,d,m,h,u;return a===0?(r=e[0],d=e[1],m=t.firstTangent,h=p.subtract(e[2],r,ekt),p.multiplyByScalar(h,.5,h),u=L.multiplyByVector($f.hermiteCoefficientMatrix,l,l)):a===e.length-2?(r=e[a],d=e[a+1],h=t.lastTangent,m=p.subtract(d,e[a-1],ekt),p.multiplyByScalar(m,.5,m),u=L.multiplyByVector($f.hermiteCoefficientMatrix,l,l)):(r=e[a-1],d=e[a],m=e[a+1],h=e[a+2],u=L.multiplyByVector(EU.catmullRomCoefficientMatrix,l,l)),o=p.multiplyByScalar(r,u.x,o),p.multiplyByScalar(d,u.y,iN),p.add(o,iN,o),p.multiplyByScalar(m,u.z,iN),p.add(o,iN,o),p.multiplyByScalar(h,u.w,iN),p.add(o,iN,o)}}var YJe=new p,xJe=new p;function EU(t){t=f(t,f.EMPTY_OBJECT);let e=t.points,n=t.times,i=t.firstTangent,o=t.lastTangent;if(e.length>2&&(c(i)||(i=YJe,p.multiplyByScalar(e[1],2,i),p.subtract(i,e[2],i),p.subtract(i,e[0],i),p.multiplyByScalar(i,.5,i)),!c(o))){let a=e.length-1;o=xJe,p.multiplyByScalar(e[a-1],2,o),p.subtract(e[a],o,o),p.add(o,e[a-2],o),p.multiplyByScalar(o,.5,o)}this._times=n,this._points=e,this._firstTangent=p.clone(i),this._lastTangent=p.clone(o),this._evaluateFunction=kJe(this),this._lastTimeIndex=0}Object.defineProperties(EU.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});EU.catmullRomCoefficientMatrix=new L(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);EU.prototype.findTimeInterval=Ra.prototype.findTimeInterval;EU.prototype.wrapTime=Ra.prototype.wrapTime;EU.prototype.clampTime=Ra.prototype.clampTime;EU.prototype.evaluate=function(t,e){return this._evaluateFunction(t,e)};var Nst=EU;var mDo=b(W(),1);var M5o=b(W(),1);var T5o=b(W(),1);var Qj={};Qj.clipTriangleAtAxisAlignedThreshold=function(t,e,n,i,o,a){c(a)?a.length=0:a=[];let s,l,r;e?(s=n<t,l=i<t,r=o<t):(s=n>t,l=i>t,r=o>t);let d=s+l+r,m,h,u,R,V,F;return d===1?s?(m=(t-n)/(i-n),h=(t-n)/(o-n),a.push(1),a.push(2),h!==1&&(a.push(-1),a.push(0),a.push(2),a.push(h)),m!==1&&(a.push(-1),a.push(0),a.push(1),a.push(m))):l?(u=(t-i)/(o-i),R=(t-i)/(n-i),a.push(2),a.push(0),R!==1&&(a.push(-1),a.push(1),a.push(0),a.push(R)),u!==1&&(a.push(-1),a.push(1),a.push(2),a.push(u))):r&&(V=(t-o)/(n-o),F=(t-o)/(i-o),a.push(0),a.push(1),F!==1&&(a.push(-1),a.push(2),a.push(1),a.push(F)),V!==1&&(a.push(-1),a.push(2),a.push(0),a.push(V))):d===2?!s&&n!==t?(R=(t-i)/(n-i),V=(t-o)/(n-o),a.push(0),a.push(-1),a.push(1),a.push(0),a.push(R),a.push(-1),a.push(2),a.push(0),a.push(V)):!l&&i!==t?(F=(t-o)/(i-o),m=(t-n)/(i-n),a.push(1),a.push(-1),a.push(2),a.push(1),a.push(F),a.push(-1),a.push(0),a.push(1),a.push(m)):!r&&o!==t&&(h=(t-n)/(o-n),u=(t-i)/(o-i),a.push(2),a.push(-1),a.push(0),a.push(2),a.push(h),a.push(-1),a.push(1),a.push(2),a.push(u)):d!==3&&(a.push(0),a.push(1),a.push(2)),a};Qj.computeBarycentricCoordinates=function(t,e,n,i,o,a,s,l,r){let d=n-s,m=s-o,h=a-l,u=i-l,R=1/(h*d+m*u),V=e-l,F=t-s,U=(h*F+m*V)*R,G=(-u*F+d*V)*R,A=1-U-G;return c(r)?(r.x=U,r.y=G,r.z=A,r):new p(U,G,A)};Qj.computeLineSegmentLineSegmentIntersection=function(t,e,n,i,o,a,s,l,r){let d=(s-o)*(e-a)-(l-a)*(t-o),m=(n-t)*(e-a)-(i-e)*(t-o),h=(l-a)*(n-t)-(s-o)*(i-e);if(h===0)return;let u=d/h,R=m/h;if(u>=0&&u<=1&&R>=0&&R<=1)return c(r)||(r=new K),r.x=t+u*(n-t),r.y=e+u*(i-e),r};var TW=Qj;function CU(t){this._quantizedVertices=t.quantizedVertices,this._encodedNormals=t.encodedNormals,this._indices=t.indices,this._minimumHeight=t.minimumHeight,this._maximumHeight=t.maximumHeight,this._boundingSphere=t.boundingSphere,this._orientedBoundingBox=t.orientedBoundingBox,this._horizonOcclusionPoint=t.horizonOcclusionPoint,this._credits=t.credits;let e=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,e),i=this._vValues=this._quantizedVertices.subarray(e,2*e);this._heightValues=this._quantizedVertices.subarray(2*e,3*e);function o(s,l){return i[s]-i[l]}function a(s,l){return n[s]-n[l]}this._westIndices=Yj(t.westIndices,o,e),this._southIndices=Yj(t.southIndices,a,e),this._eastIndices=Yj(t.eastIndices,o,e),this._northIndices=Yj(t.northIndices,a,e),this._westSkirtHeight=t.westSkirtHeight,this._southSkirtHeight=t.southSkirtHeight,this._eastSkirtHeight=t.eastSkirtHeight,this._northSkirtHeight=t.northSkirtHeight,this._childTileMask=f(t.childTileMask,15),this._createdByUpsampling=f(t.createdByUpsampling,!1),this._waterMask=t.waterMask,this._mesh=void 0}Object.defineProperties(CU.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return c(this._mesh)}}});var kj=[];function Yj(t,e,n){kj.length=t.length;let i=!1;for(let o=0,a=t.length;o<a;++o)kj[o]=t[o],i=i||o>0&&e(t[o-1],t[o])>0;return i?(kj.sort(e),re.createTypedArray(n,kj)):t}var nkt="createVerticesFromQuantizedTerrainMesh",XJe=new $i(nkt),JJe=new $i(nkt,nZ.maximumAsynchronousTasks);CU.prototype.createMesh=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.tilingScheme,n=t.x,i=t.y,o=t.level,a=f(t.exaggeration,1),s=f(t.exaggerationRelativeHeight,0),l=f(t.throttle,!0),r=e.ellipsoid,d=e.tileXYToRectangle(n,i,o),h=(l?JJe:XJe).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:d,relativeToCenter:this._boundingSphere.center,ellipsoid:r,exaggeration:a,exaggerationRelativeHeight:s});if(!c(h))return;let u=this;return Promise.resolve(h).then(function(R){let V=u._quantizedVertices.length/3,F=V+u._westIndices.length+u._southIndices.length+u._eastIndices.length+u._northIndices.length,U=re.createTypedArray(F,R.indices),G=new Float32Array(R.vertices),A=R.center,S=R.minimumHeight,g=R.maximumHeight,C=u._boundingSphere,y=u._orientedBoundingBox,Y=f(p.clone(R.occludeePointInScaledSpace),u._horizonOcclusionPoint),Q=R.vertexStride,J=lc.clone(R.encoding);return u._mesh=new AV(A,G,U,R.indexCountWithoutSkirts,V,S,g,C,Y,Q,y,J,R.westIndicesSouthToNorth,R.southIndicesEastToWest,R.eastIndicesNorthToSouth,R.northIndicesWestToEast),u._quantizedVertices=void 0,u._encodedNormals=void 0,u._indices=void 0,u._uValues=void 0,u._vValues=void 0,u._heightValues=void 0,u._westIndices=void 0,u._southIndices=void 0,u._eastIndices=void 0,u._northIndices=void 0,u._mesh})};var LJe=new $i("upsampleQuantizedTerrainMesh",nZ.maximumAsynchronousTasks);CU.prototype.upsample=function(t,e,n,i,o,a,s){let l=this._mesh;if(!c(this._mesh))return;let r=e*2!==o,d=n*2===a,m=t.ellipsoid,h=t.tileXYToRectangle(o,a,s),u=LJe.scheduleTask({vertices:l.vertices,vertexCountWithoutSkirts:l.vertexCountWithoutSkirts,indices:l.indices,indexCountWithoutSkirts:l.indexCountWithoutSkirts,encoding:l.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:r,isNorthChild:d,childRectangle:h,ellipsoid:m});if(!c(u))return;let R=Math.min(this._westSkirtHeight,this._eastSkirtHeight);R=Math.min(R,this._southSkirtHeight),R=Math.min(R,this._northSkirtHeight);let V=r?R*.5:this._westSkirtHeight,F=d?R*.5:this._southSkirtHeight,U=r?this._eastSkirtHeight:R*.5,G=d?this._northSkirtHeight:R*.5,A=this._credits;return Promise.resolve(u).then(function(S){let g=new Uint16Array(S.vertices),C=re.createTypedArray(g.length/3,S.indices),y;return c(S.encodedNormals)&&(y=new Uint8Array(S.encodedNormals)),new CU({quantizedVertices:g,indices:C,encodedNormals:y,minimumHeight:S.minimumHeight,maximumHeight:S.maximumHeight,boundingSphere:Ft.clone(S.boundingSphere),orientedBoundingBox:ci.clone(S.orientedBoundingBox),horizonOcclusionPoint:p.clone(S.horizonOcclusionPoint),westIndices:S.westIndices,southIndices:S.southIndices,eastIndices:S.eastIndices,northIndices:S.northIndices,westSkirtHeight:V,southSkirtHeight:F,eastSkirtHeight:U,northSkirtHeight:G,childTileMask:0,credits:A,createdByUpsampling:!0})})};var yst=32767,ikt=new p;CU.prototype.interpolateHeight=function(t,e,n){let i=k.clamp((e-t.west)/t.width,0,1);i*=yst;let o=k.clamp((n-t.south)/t.height,0,1);return o*=yst,c(this._mesh)?OJe(this,i,o):HJe(this,i,o)};function okt(t,e,n,i,o,a,s,l){let r=Math.min(n,o,s),d=Math.max(n,o,s),m=Math.min(i,a,l),h=Math.max(i,a,l);return t>=r&&t<=d&&e>=m&&e<=h}var MJe=new K,_Je=new K,DJe=new K;function OJe(t,e,n){let i=t._mesh,o=i.vertices,a=i.encoding,s=i.indices;for(let l=0,r=s.length;l<r;l+=3){let d=s[l],m=s[l+1],h=s[l+2],u=a.decodeTextureCoordinates(o,d,MJe),R=a.decodeTextureCoordinates(o,m,_Je),V=a.decodeTextureCoordinates(o,h,DJe);if(okt(e,n,u.x,u.y,R.x,R.y,V.x,V.y)){let F=TW.computeBarycentricCoordinates(e,n,u.x,u.y,R.x,R.y,V.x,V.y,ikt);if(F.x>=-1e-15&&F.y>=-1e-15&&F.z>=-1e-15){let U=a.decodeHeight(o,d),G=a.decodeHeight(o,m),A=a.decodeHeight(o,h);return F.x*U+F.y*G+F.z*A}}}}function HJe(t,e,n){let i=t._uValues,o=t._vValues,a=t._heightValues,s=t._indices;for(let l=0,r=s.length;l<r;l+=3){let d=s[l],m=s[l+1],h=s[l+2],u=i[d],R=i[m],V=i[h],F=o[d],U=o[m],G=o[h];if(okt(e,n,u,F,R,U,V,G)){let A=TW.computeBarycentricCoordinates(e,n,u,F,R,U,V,G,ikt);if(A.x>=-1e-15&&A.y>=-1e-15&&A.z>=-1e-15){let S=A.x*a[d]+A.y*a[m]+A.z*a[h];return k.lerp(t._minimumHeight,t._maximumHeight,S/yst)}}}}CU.prototype.isChildAvailable=function(t,e,n,i){let o=2;return n!==t*2&&++o,i!==e*2&&(o-=2),(this._childTileMask&1<<o)!==0};CU.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var OT=CU;function wJe(t){this.resource=t.resource,this.version=t.version,this.isHeightmap=t.isHeightmap,this.tileUrlTemplates=t.tileUrlTemplates,this.availability=t.availability,this.hasVertexNormals=t.hasVertexNormals,this.hasWaterMask=t.hasWaterMask,this.hasMetadata=t.hasMetadata,this.availabilityLevels=t.availabilityLevels,this.availabilityTilesLoaded=t.availabilityTilesLoaded,this.littleEndianExtensionSize=t.littleEndianExtensionSize,this.availabilityPromiseCache={}}function skt(t){this.requestVertexNormals=f(t.requestVertexNormals,!1),this.requestWaterMask=f(t.requestWaterMask,!1),this.requestMetadata=f(t.requestMetadata,!0),this.ellipsoid=t.ellipsoid,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}skt.prototype.build=function(t){t._heightmapWidth=this.heightmapWidth,t._scheme=this.scheme;let e=c(this.lastResource.credits)?this.lastResource.credits:[];t._tileCredits=e.concat(this.tileCredits),t._availability=this.availability,t._tilingScheme=this.tilingScheme,t._requestWaterMask=this.requestWaterMask,t._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,t._heightmapStructure=this.heightmapStructure,t._layers=this.layers,t._hasWaterMask=this.hasWaterMask,t._hasVertexNormals=this.hasVertexNormals,t._hasMetadata=this.hasMetadata};async function lkt(t,e,n){if(!e.format){let F="The tile format is not specified in the layer.json file.";throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new Tt(F)}if(!e.tiles||e.tiles.length===0){let F="The layer.json file does not specify any tile URL templates.";throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new Tt(F)}let i=!1,o=!1,a=!1,s=!0,l=!1;if(e.format==="heightmap-1.0")l=!0,c(t.heightmapStructure)||(t.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,t.requestWaterMask=!0;else if(e.format.indexOf("quantized-mesh-1.")!==0){let F=`The tile format "${e.format}" is invalid or not supported.`;throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new Tt(F)}let r=e.tiles,d=e.maxzoom;if(t.overallMaxZoom=Math.max(t.overallMaxZoom,d),!e.projection||e.projection==="EPSG:4326")t.tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:t.ellipsoid});else if(e.projection==="EPSG:3857")t.tilingScheme=new Gs({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:t.ellipsoid});else{let F=`The projection "${e.projection}" is invalid or not supported.`;throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new Tt(F)}if(t.levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(t.tilingScheme.ellipsoid,t.heightmapWidth,t.tilingScheme.getNumberOfXTilesAtLevel(0)),!e.scheme||e.scheme==="tms"||e.scheme==="slippyMap")t.scheme=e.scheme;else{let F=`The scheme "${e.scheme}" is invalid or not supported.`;throw t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,F),new Tt(F)}let m;c(e.extensions)&&e.extensions.indexOf("octvertexnormals")!==-1?i=!0:c(e.extensions)&&e.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),c(e.extensions)&&e.extensions.indexOf("watermask")!==-1&&(o=!0),c(e.extensions)&&e.extensions.indexOf("metadata")!==-1&&(a=!0);let h=e.metadataAvailability,u=e.available,R;if(c(u)&&!c(h)){R=new pZ(t.tilingScheme,u.length);for(let F=0;F<u.length;++F){let U=u[F],G=t.tilingScheme.getNumberOfYTilesAtLevel(F);c(t.overallAvailability[F])||(t.overallAvailability[F]=[]);for(let A=0;A<U.length;++A){let S=U[A],g=G-S.endY-1,C=G-S.startY-1;t.overallAvailability[F].push([S.startX,g,S.endX,C]),R.addAvailableTileRange(F,S.startX,g,S.endX,C)}}}else c(h)&&(m=new pZ(t.tilingScheme,d),R=new pZ(t.tilingScheme,d),t.overallAvailability[0]=[[0,0,1,0]],R.addAvailableTileRange(0,0,0,1,0));t.hasWaterMask=t.hasWaterMask||o,t.hasVertexNormals=t.hasVertexNormals||i,t.hasMetadata=t.hasMetadata||a,c(e.attribution)&&(t.attribution.length>0&&(t.attribution+=" "),t.attribution+=e.attribution),t.layers.push(new wJe({resource:t.lastResource,version:e.version,isHeightmap:l,tileUrlTemplates:r,availability:R,hasVertexNormals:i,hasWaterMask:o,hasMetadata:a,availabilityLevels:h,availabilityTilesLoaded:m,littleEndianExtensionSize:s}));let V=e.parentUrl;return c(V)?c(R)?(t.lastResource=t.lastResource.getDerivedResource({url:V}),t.lastResource.appendForwardSlash(),t.layerJsonResource=t.lastResource.getDerivedResource({url:"layer.json"}),await kst(t),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function PJe(t,e,n){let i=`An error occurred while accessing ${t.layerJsonResource.url}.`;if(c(e)&&(i+=` +${e.message}`),t.previousError=za.reportError(t.previousError,n,c(n)?n._errorEvent:void 0,i),t.previousError.retry)return kst(t,n);throw new Tt(i)}async function vJe(t,e,n){await lkt(t,e,n);let i=t.overallAvailability.length;if(i>0){let o=t.availability=new pZ(t.tilingScheme,t.overallMaxZoom);for(let a=0;a<i;++a){let s=t.overallAvailability[a];for(let l=0;l<s.length;++l){let r=s[l];o.addAvailableTileRange(a,r[0],r[1],r[2],r[3])}}}if(t.attribution.length>0){let o=new on(t.attribution);t.tileCredits.push(o)}return!0}async function kst(t,e){try{let n=await t.layerJsonResource.fetchJson();return vJe(t,n,e)}catch(n){return c(n)&&n.statusCode===404?(await lkt(t,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},e),!0):PJe(t,n,e)}}function VZ(t){t=f(t,f.EMPTY_OBJECT),this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=t.ellipsoid,this._requestVertexNormals=f(t.requestVertexNormals,!1),this._requestWaterMask=f(t.requestWaterMask,!1),this._requestMetadata=f(t.requestMetadata,!0),this._errorEvent=new It;let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var Bst={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function akt(t){return!c(t)||t.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${t.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function KJe(t,e,n,i,o){let a=new Uint16Array(e,0,t._heightmapWidth*t._heightmapWidth);return new Gd({buffer:a,childTileMask:new Uint8Array(e,a.byteLength,1)[0],waterMask:new Uint8Array(e,a.byteLength+1,e.byteLength-a.byteLength-1),width:t._heightmapWidth,height:t._heightmapWidth,structure:t._heightmapStructure,credits:t._tileCredits})}function zJe(t,e,n,i,o,a){let s=a.littleEndianExtensionSize,l=0,r=3,d=r+1,m=Float64Array.BYTES_PER_ELEMENT*r,h=Float64Array.BYTES_PER_ELEMENT*d,R=Uint16Array.BYTES_PER_ELEMENT*3,V=3,F=Uint16Array.BYTES_PER_ELEMENT,U=F*V,G=new DataView(e),A=new p(G.getFloat64(l,!0),G.getFloat64(l+8,!0),G.getFloat64(l+16,!0));l+=m;let S=G.getFloat32(l,!0);l+=Float32Array.BYTES_PER_ELEMENT;let g=G.getFloat32(l,!0);l+=Float32Array.BYTES_PER_ELEMENT;let C=new Ft(new p(G.getFloat64(l,!0),G.getFloat64(l+8,!0),G.getFloat64(l+16,!0)),G.getFloat64(l+m,!0));l+=h;let y=new p(G.getFloat64(l,!0),G.getFloat64(l+8,!0),G.getFloat64(l+16,!0));l+=m;let Y=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let Q=new Uint16Array(e,l,Y*3);l+=Y*R,Y>64*1024&&(F=Uint32Array.BYTES_PER_ELEMENT,U=F*V);let J=Q.subarray(0,Y),M=Q.subarray(Y,2*Y),Z=Q.subarray(Y*2,3*Y);Ni.zigZagDeltaDecode(J,M,Z),l%F!==0&&(l+=F-l%F);let E=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let I=re.createTypedArrayFromArrayBuffer(Y,e,l,E*V);l+=E*U;let B=0,X=I.length;for(let Wt=0;Wt<X;++Wt){let Nt=I[Wt];I[Wt]=B-Nt,Nt===0&&++B}let _=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let P=re.createTypedArrayFromArrayBuffer(Y,e,l,_);l+=_*F;let w=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let z=re.createTypedArrayFromArrayBuffer(Y,e,l,w);l+=w*F;let H=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let nt=re.createTypedArrayFromArrayBuffer(Y,e,l,H);l+=H*F;let $=G.getUint32(l,!0);l+=Uint32Array.BYTES_PER_ELEMENT;let dt=re.createTypedArrayFromArrayBuffer(Y,e,l,$);l+=$*F;let q,at;for(;l<G.byteLength;){let Wt=G.getUint8(l,!0);l+=Uint8Array.BYTES_PER_ELEMENT;let Nt=G.getUint32(l,s);if(l+=Uint32Array.BYTES_PER_ELEMENT,Wt===Bst.OCT_VERTEX_NORMALS&&t._requestVertexNormals)q=new Uint8Array(e,l,Y*2);else if(Wt===Bst.WATER_MASK&&t._requestWaterMask)at=new Uint8Array(e,l,Nt);else if(Wt===Bst.METADATA&&t._requestMetadata){let kt=G.getUint32(l,!0);if(kt>0){let qt=ts(new Uint8Array(e),l+Uint32Array.BYTES_PER_ELEMENT,kt).available;if(c(qt))for(let ie=0;ie<qt.length;++ie){let oe=n+ie+1,He=qt[ie],rn=t._tilingScheme.getNumberOfYTilesAtLevel(oe);for(let de=0;de<He.length;++de){let zt=He[de],ke=rn-zt.endY-1,Ve=rn-zt.startY-1;t.availability.addAvailableTileRange(oe,zt.startX,ke,zt.endX,Ve),a.availability.addAvailableTileRange(oe,zt.startX,ke,zt.endX,Ve)}}}a.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}l+=Nt}let st=t.getLevelMaximumGeometricError(n)*5,Et=t._tilingScheme.tileXYToRectangle(i,o,n),Qt=ci.fromRectangle(Et,S,g,t._tilingScheme.ellipsoid);return new OT({center:A,minimumHeight:S,maximumHeight:g,boundingSphere:C,orientedBoundingBox:Qt,horizonOcclusionPoint:y,quantizedVertices:Q,encodedNormals:q,indices:I,westIndices:P,southIndices:z,eastIndices:nt,northIndices:dt,westSkirtHeight:st,southSkirtHeight:st,eastSkirtHeight:st,northSkirtHeight:st,childTileMask:t.availability.computeChildMaskForTile(n,i,o),waterMask:at,credits:t._tileCredits})}VZ.prototype.requestTileGeometry=function(t,e,n,i){let o=this._layers,a,s=o.length,l=!1,r=Promise.resolve();if(s===1)a=o[0];else for(let d=0;d<s;++d){let m=o[d];if(!c(m.availability)||m.availability.isTileAvailable(n,t,e)){a=m;break}let h=Yst(this,t,e,n,m,d===0);h.result&&(l=!0,r=r.then(()=>h.promise))}return!c(a)&&l?r.then(()=>new Promise(d=>{setTimeout(()=>{let m=this.requestTileGeometry(t,e,n,i);d(m)},0)})):rkt(this,t,e,n,a,i)};function rkt(t,e,n,i,o,a){if(!c(o))return Promise.reject(new Tt("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let l;!t._scheme||t._scheme==="tms"?l=t._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:l=n;let r=[];t._requestVertexNormals&&o.hasVertexNormals&&r.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),t._requestWaterMask&&o.hasWaterMask&&r.push("watermask"),t._requestMetadata&&o.hasMetadata&&r.push("metadata");let d,m,h=s[(e+l+i)%s.length],u=o.resource;c(u._ionEndpoint)&&!c(u._ionEndpoint.externalType)?(r.length!==0&&(m={extensions:r.join("-")}),d=akt(void 0)):d=akt(r);let R=u.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:e,y:l},queryParameters:m,headers:d,request:a}).fetchArrayBuffer();if(c(R))return R.then(function(V){return c(V)?c(t._heightmapStructure)?KJe(t,V,i,e,n):zJe(t,V,i,e,n,o):Promise.reject(new Tt("Mesh buffer doesn't exist."))})}Object.defineProperties(VZ.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});VZ.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};VZ.fromIonAssetId=async function(t,e){let n=await gh.fromAssetId(t);return VZ.fromUrl(n,e)};VZ.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT),t=await Promise.resolve(t);let n=te.createIfNeeded(t);n.appendForwardSlash();let i=new skt(e);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await kst(i);let o=new VZ(e);return i.build(o),o};VZ.prototype.getTileDataAvailable=function(t,e,n){if(!c(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,t,e))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let a=0;a<o;++a)if(Yst(this,t,e,n,i[a],a===0).result)return;return!1};VZ.prototype.loadTileDataAvailability=function(t,e,n){if(!c(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,t,e)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let a=0;a<o;++a){let s=Yst(this,t,e,n,i[a],a===0);if(c(s.promise))return s.promise}};function Qst(t,e,n,i){if(i===0)return;let o=t.availabilityLevels,a=i%o===0?i-o:(i/o|0)*o,s=1<<i-a,l=e/s|0,r=n/s|0;return{level:a,x:l,y:r}}function Yst(t,e,n,i,o,a){if(!c(o.availabilityLevels))return{result:!1};let s,l=function(){delete o.availabilityPromiseCache[s]},r=o.availabilityTilesLoaded,d=o.availability,m=Qst(o,e,n,i);for(;c(m);){if(d.isTileAvailable(m.level,m.x,m.y)&&!r.isTileAvailable(m.level,m.x,m.y)){let h;if(!a&&(s=`${m.level}-${m.x}-${m.y}`,h=o.availabilityPromiseCache[s],!c(h))){let u=new us({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN});h=rkt(t,m.x,m.y,m.level,o,u),c(h)&&(o.availabilityPromiseCache[s]=h,h.then(l))}return{result:!0,promise:h}}m=Qst(o,m.x,m.y,m.level)}return{result:!1}}VZ._getAvailabilityTile=Qst;var HT=VZ;var WDo=b(W(),1);function gW(t){t=f(t,f.EMPTY_OBJECT);let e=t.radius,n={center:t.center,semiMajorAxis:e,semiMinorAxis:e,ellipsoid:t.ellipsoid,height:t.height,extrudedHeight:t.extrudedHeight,granularity:t.granularity,vertexFormat:t.vertexFormat,stRotation:t.stRotation,shadowVolume:t.shadowVolume};this._ellipseGeometry=new Pc(n),this._workerName="createCircleGeometry"}gW.packedLength=Pc.packedLength;gW.pack=function(t,e,n){return Pc.pack(t._ellipseGeometry,e,n)};var jJe=new Pc({center:new p,semiMajorAxis:1,semiMinorAxis:1}),uc={center:new p,radius:void 0,ellipsoid:mt.clone(mt.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new ee,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};gW.unpack=function(t,e,n){let i=Pc.unpack(t,e,jJe);return uc.center=p.clone(i._center,uc.center),uc.ellipsoid=mt.clone(i._ellipsoid,uc.ellipsoid),uc.height=i._height,uc.extrudedHeight=i._extrudedHeight,uc.granularity=i._granularity,uc.vertexFormat=ee.clone(i._vertexFormat,uc.vertexFormat),uc.stRotation=i._stRotation,uc.shadowVolume=i._shadowVolume,c(n)?(uc.semiMajorAxis=i._semiMajorAxis,uc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Pc(uc),n):(uc.radius=i._semiMajorAxis,new gW(uc))};gW.createGeometry=function(t){return Pc.createGeometry(t._ellipseGeometry)};gW.createShadowVolume=function(t,e,n){let i=t._ellipseGeometry._granularity,o=t._ellipseGeometry._ellipsoid,a=e(i,o),s=n(i,o);return new gW({center:t._ellipseGeometry._center,radius:t._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:t._ellipseGeometry._stRotation,granularity:i,extrudedHeight:a,height:s,vertexFormat:ee.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(gW.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var xst=gW;var TDo=b(W(),1);function oN(t){t=f(t,f.EMPTY_OBJECT);let e=t.radius,n={center:t.center,semiMajorAxis:e,semiMinorAxis:e,ellipsoid:t.ellipsoid,height:t.height,extrudedHeight:t.extrudedHeight,granularity:t.granularity,numberOfVerticalLines:t.numberOfVerticalLines};this._ellipseGeometry=new Lh(n),this._workerName="createCircleOutlineGeometry"}oN.packedLength=Lh.packedLength;oN.pack=function(t,e,n){return Lh.pack(t._ellipseGeometry,e,n)};var qJe=new Lh({center:new p,semiMajorAxis:1,semiMinorAxis:1}),cp={center:new p,radius:void 0,ellipsoid:mt.clone(mt.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};oN.unpack=function(t,e,n){let i=Lh.unpack(t,e,qJe);return cp.center=p.clone(i._center,cp.center),cp.ellipsoid=mt.clone(i._ellipsoid,cp.ellipsoid),cp.height=i._height,cp.extrudedHeight=i._extrudedHeight,cp.granularity=i._granularity,cp.numberOfVerticalLines=i._numberOfVerticalLines,c(n)?(cp.semiMajorAxis=i._semiMajorAxis,cp.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Lh(cp),n):(cp.radius=i._semiMajorAxis,new oN(cp))};oN.createGeometry=function(t){return Lh.createGeometry(t._ellipseGeometry)};var Xst=oN;var EDo=b(W(),1),$Je=(t,e)=>{let n=i=>{!t.trackedEntity&&i.shouldAnimate===!0?e.entities._precisionMode=i.multiplier===1?75:0:e.entities._precisionMode=0};return t.clock.onTick.addEventListener(n),{remove:function(){t.clock.onTick.removeEventListener(n)}}},Jst=$Je;var vDo=b(W(),1);var LDo=b(W(),1);var xj=class{constructor(e){let n=e,{_times:i,_values:o,_value:a,_interpolationDegree:s,_derivativeTypes:l,_xTable:r,_yTable:d,_interpolationResult:m,_interpolationAlgorithm:h}=n,u="ConstantPositionProperty";n instanceof cl?u="CompositePositionProperty":n instanceof jl?u="ConstantPositionProperty":n instanceof ql?u="SampledProperty":n instanceof Bs?u="SampledPositionProperty":n instanceof vc?u="ScaledPositionProperty":n instanceof _m&&(u="TimeIntervalCollectionProperty"),this._times=i,this._values=o,this._value=a,this._interpolationDegree=s,this._derivativeTypes=l,this._xTable=r,this._yTable=d,this._interpolationResult=m,this.interpolationAlgorithm=h?.type?.toUpperCase()||"LINEAR",this.propertyType=u}},tLe=t=>t.position?new xj(t.position):null,eLe=t=>{let e=t,n;switch(e.propertyType){case"CompositePositionProperty":n=cl;break;case"ConstantPositionProperty":n=jl;break;case"SampledProperty":n=ql;break;case"SampledPositionProperty":n=Bs;break;case"ScaledPositionProperty":n=vc;break;case"TimeIntervalCollectionProperty":n=_m;break;default:throw new Error(`Unknown propertyType: ${e.propertyType}`)}let i=new n(p);for(let o in e)o!=="propertyType"&&o!=="interpolationAlgorithm"&&(i[o]=e[o]);return i.setInterpolationOptions&&i.setInterpolationOptions({interpolationAlgorithm:nLe(e.interpolationAlgorithm),interpolationDegree:e._interpolationDegree}),i};function nLe(t){switch(t){case"LAGRANGE":return dS;case"HERMITE":return rS;case"LINEAR":default:return _b}}var g5={SerializePosition:tLe,DeserializePosition:eLe,SerializedPosition:xj};var{OMMT:HDo,OMMCOLLECTIONT:iLe}=sW,{CATT:wDo,CATCOLLECTIONT:oLe}=aW,Lst=1,aLe=async({spaceCatalogDataSources:t,startTime:e,endTime:n,step:i=6e4,radius:o=5e3,screeningObjects:a=[]})=>{let s={OMM:new iLe,CAT:new oLe,entities:[]};Array.isArray(t)||(t=[t]);let l=[];for(let V of t)l=l.concat([...V.entities.values]);a.length===0&&(a=l);let r=a.map(V=>V.id);for(let V of l){let F=V.properties.OMM.getValue(),U=V.properties.CAT.getValue(),G=g5(V);G&&(s.entities.push({id:V.id,position:G}),s.OMM.RECORDS.push(F),s.CAT.RECORDS.push(U))}s.OMM=writeFB(s.OMM).buffer,s.CAT=writeFB(s.CAT).buffer;let d=new $i("ConjunctionAssessment",Lst),m=Math.ceil(r.length/Lst),h=[];for(let V=0;V<Lst;V++){let F={transferEntities:s,screeningObjectIds:r.slice(V*m,(V+1)*m),start:rt.toDate(e).getTime(),stop:rt.toDate(n).getTime(),step:i,radius:o};h.push(d.scheduleTask(F))}let u=await Promise.all(h);return console.log(u),u.flat()},Mst=aLe;var oOo=b(W(),1);function aN(t){t=f(t,f.EMPTY_OBJECT),this._callback=t.callback,this._tilingScheme=t.tilingScheme,c(this._tilingScheme)||(this._tilingScheme=new Qo({ellipsoid:f(t.ellipsoid,mt.WGS84)})),this._width=t.width,this._height=t.height;let e=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,e,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new It;let n=t.credit;typeof n=="string"&&(n=new on(n)),this._credit=n}Object.defineProperties(aN.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});aN.prototype.requestTileGeometry=function(t,e,n,i){let o=this._callback(t,e,n);if(!c(o))return;let a=this._width,s=this._height;return Promise.resolve(o).then(function(l){let r=l;return Array.isArray(r)&&(r=new Float64Array(r)),new Gd({buffer:r,width:a,height:s})})};aN.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};aN.prototype.getTileDataAvailable=function(t,e,n){};aN.prototype.loadTileDataAvailability=function(t,e,n){};var _st=aN;var sOo=b(W(),1);function dkt(t){this.proxy=t}dkt.prototype.getURL=function(t){let e=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+e+encodeURIComponent(t)};var Dst=dkt;var ZOo=b(W(),1);var ckt=t=>{let e;if(t.position)e=t.position?._property||t.position;else for(let V in t)if(t[V]?.position)e=t[V].position._property;else if(t[V]?.positions){e=t[V].positions;let F={x:0,y:0,z:0};for(let U=0;U<e._value.length;U++)F.x+=e._value[U].x,F.y+=e._value[U].y,F.z+=e._value[U].z;for(let U in F)F[U]&&(F[U]=F[U]/e._value.length);e._value=new p(F.x,F.y,F.z)}if(!e)return;let{id:n}=t,{_times:i,_values:o,_value:a,_interpolationDegree:s,_derivativeTypes:l,_xTable:r,_yTable:d,_interpolationResult:m,_interpolationAlgorithm:h}=e,u="ConstantPositionProperty";e instanceof cl?u="CompositePositionProperty":e instanceof jl?u="ConstantPositionProperty":e instanceof ql?u="SampledProperty":e instanceof Bs?u="SampledPositionProperty":e instanceof vc?u="ScaledPositionProperty":e instanceof _m&&(u="TimeIntervalCollectionProperty"),t.properties=t.properties||{};let{jsonOMM:R}=t.properties;return{id:n,_times:i,_values:o,_value:a,_interpolationDegree:s,_derivativeTypes:l,_xTable:r,_yTable:d,_interpolationResult:m,interpolationAlgorithm:h?.type?.toUpperCase()||"LINEAR",propertyType:u,jsonOMM:R}},sLe=async({fromEntity:t,toEntityArray:e,startTime:n,endTime:i,step:o=60,sensor:a=null,sensorOrientation:s,dateString:l=!1})=>{let r=[];if(Array.isArray(e)||(e=[e]),e.length){for(let G of e){let A=ckt(G);A&&r.push(A)}let d=3,m=Math.ceil(r.length/d),h=[],u=new $i("AnalysisWorker",d),R=[];for(let G=0;G<r.length;G++)if(R.length<m&&R.push(r[G]),R.length>=m||G===r.length-1){let A={fromEntity:ckt(t),toEntityArray:R,startTime:n.toString(),endTime:i.toString(),dateString:l,step:o,sensor:a?{sensorName:a?.constructor?.name,...a}:null,sensorOrientation:s},S=u.scheduleTask(A);h.push(S.then(g=>g)),R=[]}let V=await Promise.allSettled(h),F=V.filter(G=>G.reason);if(F.length)throw Error(JSON.stringify(F,null,4));let U={};for(let G=0;G<V.length;G++)for(let A in V[G].value)V[G].value[A]&&(U[A]=V[G].value[A]);return U}return Promise.reject("No Target Entities Found.")},Ost=sLe;var bOo=b(W(),1),lLe={SEARCH:0,AUTOCOMPLETE:1},IU=Object.freeze(lLe);var GOo=b(W(),1);function Xj(){Ut.throwInstantiationError()}Object.defineProperties(Xj.prototype,{credit:{get:Ut.throwInstantiationError}});Xj.getCreditsFromResult=function(t){if(c(t.attributions))return t.attributions.map(on.getIonCredit)};Xj.prototype.geocode=Ut.throwInstantiationError;var sN=Xj;var TOo=b(W(),1);function mkt(){Ut.throwInstantiationError()}mkt.createGeometry=function(t){Ut.throwInstantiationError()};var Hst=mkt;var POo=b(W(),1),pLe=b(wst(),1);var BOo=b(W(),1);var COo=b(W(),1);function rLe(t,e){return(t&e)!==0}var Zc=rLe;var dLe=[1,2,4,8],hkt=15,cLe=16,mLe=64,hLe=128;function zR(t,e,n,i,o,a){this._bits=t,this.cnodeVersion=e,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=a,this.ancestorHasTerrain=!1,this.terrainState=void 0}zR.clone=function(t,e){return c(e)?(e._bits=t._bits,e.cnodeVersion=t.cnodeVersion,e.imageryVersion=t.imageryVersion,e.terrainVersion=t.terrainVersion,e.imageryProvider=t.imageryProvider,e.terrainProvider=t.terrainProvider):e=new zR(t._bits,t.cnodeVersion,t.imageryVersion,t.terrainVersion,t.imageryProvider,t.terrainProvider),e.ancestorHasTerrain=t.ancestorHasTerrain,e.terrainState=t.terrainState,e};zR.prototype.setParent=function(t){this.ancestorHasTerrain=t.ancestorHasTerrain||this.hasTerrain()};zR.prototype.hasSubtree=function(){return Zc(this._bits,cLe)};zR.prototype.hasImagery=function(){return Zc(this._bits,mLe)};zR.prototype.hasTerrain=function(){return Zc(this._bits,hLe)};zR.prototype.hasChildren=function(){return Zc(this._bits,hkt)};zR.prototype.hasChild=function(t){return Zc(this._bits,dLe[t])};zR.prototype.getChildBitmask=function(){return this._bits&hkt};var E5=zR;function VLe(t){let e=t.length,n=new ArrayBuffer(e),i=new Uint8Array(n);for(let o=0;o<e;++o)i[o]=t.charCodeAt(o);return n}var uLe=VLe(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB \f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 \xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS >\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 -\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function mp(t){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=k.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(mp.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});mp.fromUrl=async function(t){let e=t;typeof e!="string"&&!(e instanceof te)&&(e=t.url);let n=te.createIfNeeded(e);n.appendForwardSlash();let i=new mp;i._resource=n;try{await VLe(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let a=`An error occurred while accessing ${u2t(i,"",1).url}: ${o}`;throw new St(a)}return i};mp.tileXYToQuadKey=function(t,e,n){let i="";for(let o=n;o>=0;--o){let a=1<<o,s=0;Vc(e,a)?Vc(t,a)&&(s|=1):(s|=2,Vc(t,a)||(s|=1)),i+=s}return i};mp.quadKeyToTileXY=function(t){let e=0,n=0,i=t.length-1;for(let o=i;o>=0;--o){let a=1<<o,s=+t[i-o];Vc(s,2)?Vc(s,1)||(e|=a):(n|=a,Vc(s,1)&&(e|=a))}return{x:e,y:n,level:i}};mp.prototype.isValid=function(t){let e=this.getTileInformationFromQuadKey(t);if(c(e))return e!==null;let n=!0,i=t,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),e=this.getTileInformationFromQuadKey(i),c(e)){!e.hasSubtree()&&!e.hasChild(parseInt(o))&&(n=!1);break}else if(e===null){n=!1;break}return n};var p2t=new $i("decodeGoogleEarthEnterprisePacket");mp.prototype.getQuadTreePacket=function(t,e,n){e=f(e,1),t=f(t,"");let o=u2t(this,t,e,n).fetchArrayBuffer();if(!c(o))return;let a=this._tileInfo,s=this.key;return o.then(function(l){return p2t.scheduleTask({buffer:l,quadKey:t,type:"Metadata",key:s},[l]).then(function(d){let m,h=-1;if(t!==""){h=t.length+1;let u=d[t];m=a[t],m._bits|=u._bits,delete d[t]}let Z=Object.keys(d);Z.sort(function(u,F){return u.length-F.length});let b=Z.length;for(let u=0;u<b;++u){let F=Z[u];if(d[F]!==null){let G=E5.clone(d[F]),A=F.length;if(A===h)G.setParent(m);else if(A>1){let T=a[F.substring(0,F.length-1)];G.setParent(T)}a[F]=G}else a[F]=null}})})};mp.prototype.populateSubtree=function(t,e,n,i){let o=mp.tileXYToQuadKey(t,e,n);return Kst(this,o,i)};function Kst(t,e,n){let i=t._tileInfo,o=e,a=i[o];if(c(a)&&(!a.hasSubtree()||a.hasChildren()))return a;for(;a===void 0&&o.length>1;)o=o.substring(0,o.length-1),a=i[o];let s,l=t._subtreePromises,r=l[o];if(c(r))return r.then(function(){return s=new Zs({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Kst(t,e,s)});if(!c(a)||!a.hasSubtree())return Promise.reject(new St(`Couldn't load metadata for tile ${e}`));if(r=t.getQuadTreePacket(o,a.cnodeVersion,n),!!c(r))return l[o]=r,r.then(function(){return s=new Zs({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Kst(t,e,s)}).finally(function(){delete l[o]})}mp.prototype.getTileInformation=function(t,e,n){let i=mp.tileXYToQuadKey(t,e,n);return this._tileInfo[i]};mp.prototype.getTileInformationFromQuadKey=function(t){return this._tileInfo[t]};function u2t(t,e,n,i){return t._resource.getDerivedResource({url:`flatfile?q2-0${e}-q.${n.toString()}`,request:i})}var Pst,vst;function VLe(t){let e=t._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!c(vst)){let n=Dn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;vst=VG(n).then(function(){Pst=window.cesiumGoogleEarthDbRootParser(pLe),c(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return vst.then(function(){return e.fetchArrayBuffer()}).then(function(n){let i=Pst.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,a=o.byteOffset,s=a+o.byteLength,l=t.key=o.buffer.slice(a,s);o=i.dbrootData,a=o.byteOffset,s=a+o.byteLength;let r=o.buffer.slice(a,s);return p2t.scheduleTask({buffer:r,type:"DbRoot",key:l},[r])}).then(function(n){let i=Pst.DbRootProto.decode(new Uint8Array(n.buffer));if(t.imageryPresent=f(i.imageryPresent,t.imageryPresent),t.protoImagery=i.protoImagery,t.terrainPresent=f(i.terrainPresent,t.terrainPresent),c(i.endSnippet)&&c(i.endSnippet.model)){let l=i.endSnippet.model;t.negativeAltitudeExponentBias=f(l.negativeAltitudeExponentBias,t.negativeAltitudeExponentBias),t.negativeAltitudeThreshold=f(l.compressedNegativeAltitudeThreshold,t.negativeAltitudeThreshold)}c(i.databaseVersion)&&(t._quadPacketVersion=f(i.databaseVersion.quadtreeVersion,t._quadPacketVersion));let o=t.providers,a=f(i.providerInfo,[]),s=a.length;for(let l=0;l<s;++l){let r=a[l],d=r.copyrightString;c(d)&&(o[r.providerId]=new on(d.value))}}).catch(function(){console.log(`Failed to retrieve ${e.url}. Using defaults.`),t.key=ZLe})}var EW=mp;var cHo=R(W(),1);function wS(t){t=f(t,f.EMPTY_OBJECT),this._buffer=t.buffer,this._credits=t.credits,this._negativeAltitudeExponentBias=t.negativeAltitudeExponentBias,this._negativeElevationThreshold=t.negativeElevationThreshold;let e=f(t.childTileMask,15),n=e&3;n|=e&4?8:0,n|=e&8?4:0,this._childTileMask=n,this._createdByUpsampling=f(t.createdByUpsampling,!1),this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(wS.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var b2t="createVerticesFromGoogleEarthEnterpriseBuffer",bLe=new $i(b2t),RLe=new $i(b2t,nV.maximumAsynchronousTasks),Z2t=new Gt,zst=new Gt;wS.prototype.createMesh=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.tilingScheme,n=t.x,i=t.y,o=t.level,a=f(t.exaggeration,1),s=f(t.exaggerationRelativeHeight,0),l=f(t.throttle,!0),r=e.ellipsoid;e.tileXYToNativeRectangle(n,i,o,Z2t),e.tileXYToRectangle(n,i,o,zst);let d=r.cartographicToCartesian(Gt.center(zst)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let b=(l?RLe:bLe).scheduleTask({buffer:this._buffer,nativeRectangle:Z2t,rectangle:zst,relativeToCenter:d,ellipsoid:r,skirtHeight:this._skirtHeight,exaggeration:a,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!c(b))return;let u=this;return b.then(function(F){return u._mesh=new Au(d,new Float32Array(F.vertices),new Uint16Array(F.indices),F.indexCountWithoutSkirts,F.vertexCountWithoutSkirts,F.minimumHeight,F.maximumHeight,Ft.clone(F.boundingSphere3D),p.clone(F.occludeePointInScaledSpace),F.numberOfAttributes,ci.clone(F.orientedBoundingBox),lc.clone(F.encoding),F.westIndicesSouthToNorth,F.southIndicesEastToWest,F.eastIndicesNorthToSouth,F.northIndicesWestToEast),u._minimumHeight=F.minimumHeight,u._maximumHeight=F.maximumHeight,u._buffer=void 0,u._mesh})};wS.prototype.interpolateHeight=function(t,e,n){let i=k.clamp((e-t.west)/t.width,0,1),o=k.clamp((n-t.south)/t.height,0,1);return c(this._mesh)?GLe(this,i,o):SLe(this,i,o,t)};var WLe=new $i("upsampleQuantizedTerrainMesh",nV.maximumAsynchronousTasks);wS.prototype.upsample=function(t,e,n,i,o,a,s){let l=this._mesh;if(!c(this._mesh))return;let r=e*2!==o,d=n*2===a,m=t.ellipsoid,h=t.tileXYToRectangle(o,a,s),Z=WLe.scheduleTask({vertices:l.vertices,indices:l.indices,indexCountWithoutSkirts:l.indexCountWithoutSkirts,vertexCountWithoutSkirts:l.vertexCountWithoutSkirts,encoding:l.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:r,isNorthChild:d,childRectangle:h,ellipsoid:m});if(!c(Z))return;let b=this;return Z.then(function(u){let F=new Uint16Array(u.vertices),U=re.createTypedArray(F.length/3,u.indices),G=b._skirtHeight;return new OS({quantizedVertices:F,indices:U,minimumHeight:u.minimumHeight,maximumHeight:u.maximumHeight,boundingSphere:Ft.clone(u.boundingSphere),orientedBoundingBox:ci.clone(u.orientedBoundingBox),horizonOcclusionPoint:p.clone(u.horizonOcclusionPoint),westIndices:u.westIndices,southIndices:u.southIndices,eastIndices:u.eastIndices,northIndices:u.northIndices,westSkirtHeight:G,southSkirtHeight:G,eastSkirtHeight:G,northSkirtHeight:G,childTileMask:0,createdByUpsampling:!0,credits:b._credits})})};wS.prototype.isChildAvailable=function(t,e,n,i){let o=2;return n!==t*2&&++o,i!==e*2&&(o-=2),(this._childTileMask&1<<o)!==0};wS.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var fLe=new K,FLe=new K,ULe=new K,R2t=new p;function GLe(t,e,n){let i=t._mesh,o=i.vertices,a=i.encoding,s=i.indices;for(let l=0,r=s.length;l<r;l+=3){let d=s[l],m=s[l+1],h=s[l+2],Z=a.decodeTextureCoordinates(o,d,fLe),b=a.decodeTextureCoordinates(o,m,FLe),u=a.decodeTextureCoordinates(o,h,ULe),F=SW.computeBarycentricCoordinates(e,n,Z.x,Z.y,b.x,b.y,u.x,u.y,R2t);if(F.x>=-1e-15&&F.y>=-1e-15&&F.z>=-1e-15){let U=a.decodeHeight(o,d),G=a.decodeHeight(o,m),A=a.decodeHeight(o,h);return F.x*U+F.y*G+F.z*A}}}var ALe=Uint16Array.BYTES_PER_ELEMENT,V2t=Uint32Array.BYTES_PER_ELEMENT,jst=Int32Array.BYTES_PER_ELEMENT,TLe=Float32Array.BYTES_PER_ELEMENT,qst=Float64Array.BYTES_PER_ELEMENT;function SLe(t,e,n,i){let o=t._buffer,a=0,s=0,l=0;n>.5?(e>.5?(a=2,s=.5):a=3,l=.5):e>.5&&(a=1,s=.5);let r=new DataView(o),d=0;for(let C=0;C<a;++C)d+=r.getUint32(d,!0),d+=V2t;d+=V2t,d+=2*qst;let m=k.toRadians(r.getFloat64(d,!0)*180);d+=qst;let h=k.toRadians(r.getFloat64(d,!0)*180);d+=qst;let Z=i.width/m/2,b=i.height/h/2,u=r.getInt32(d,!0);d+=jst;let F=r.getInt32(d,!0)*3;d+=jst,d+=jst;let U=new Array(u),G=new Array(u),A=new Array(u),T;for(T=0;T<u;++T)U[T]=s+r.getUint8(d++)*Z,G[T]=l+r.getUint8(d++)*b,A[T]=r.getFloat32(d,!0)*6371010,d+=TLe;let g=new Array(F);for(T=0;T<F;++T)g[T]=r.getUint16(d,!0),d+=ALe;for(T=0;T<F;T+=3){let C=g[T],y=g[T+1],Y=g[T+2],Q=U[C],J=U[y],M=U[Y],V=G[C],E=G[y],I=G[Y],B=SW.computeBarycentricCoordinates(e,n,Q,V,J,E,M,I,R2t);if(B.x>=-1e-15&&B.y>=-1e-15&&B.z>=-1e-15)return B.x*A[C]+B.y*A[y]+B.z*A[Y]}}var lN=wS;var EHo=R(W(),1);var Qu={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},Jj=new rt;function Lj(){this._terrainCache={},this._lastTidy=rt.now()}Lj.prototype.add=function(t,e){this._terrainCache[t]={buffer:e,timestamp:rt.now()}};Lj.prototype.get=function(t){let n=this._terrainCache[t];if(c(n))return delete this._terrainCache[t],n.buffer};Lj.prototype.tidy=function(){if(rt.now(Jj),rt.secondsDifference(Jj,this._lastTidy)>10){let t=this._terrainCache,e=Object.keys(t),n=e.length;for(let i=0;i<n;++i){let o=e[i],a=t[o];rt.secondsDifference(Jj,a.timestamp)>10&&delete t[o]}rt.clone(Jj,this._lastTidy)}};function NU(t){t=f(t,f.EMPTY_OBJECT),this._tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new Gt(-k.PI,-k.PI,k.PI,k.PI),ellipsoid:t.ellipsoid});let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new Lj,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new It}Object.defineProperties(NU.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});NU.fromMetadata=function(t,e){if(!t.terrainPresent)throw new St(`The server ${t.url} doesn't have terrain`);let n=new NU(e);return n._metadata=t,n};var gLe=new $i("decodeGoogleEarthEnterprisePacket");function W2t(t,e,n){let i=e.getChildBitmask();if(e.terrainState===Qu.PARENT){i=0;for(let o=0;o<4;++o){let a=n.getTileInformationFromQuadKey(t+o.toString());c(a)&&a.hasTerrain()&&(i|=1<<o)}}return i}NU.prototype.requestTileGeometry=function(t,e,n,i){let o=EW.tileXYToQuadKey(t,e,n),a=this._terrainCache,s=this._metadata,l=s.getTileInformationFromQuadKey(o);if(!c(l))return Promise.reject(new St("Terrain tile doesn't exist"));let r=l.terrainState;c(r)||(r=l.terrainState=Qu.UNKNOWN);let d=a.get(o);if(c(d)){let G=s.providers[l.terrainProvider];return Promise.resolve(new lN({buffer:d,childTileMask:W2t(o,l,s),credits:c(G)?[G]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(a.tidy(),l.ancestorHasTerrain){if(r===Qu.NONE)return Promise.reject(new St("Terrain tile doesn't exist"))}else return Promise.resolve(new Gd({buffer:new Uint8Array(16*16),width:16,height:16}));let m,h=o,Z=-1;switch(r){case Qu.SELF:Z=l.terrainVersion;break;case Qu.PARENT:h=h.substring(0,h.length-1),m=s.getTileInformationFromQuadKey(h),Z=m.terrainVersion;break;case Qu.UNKNOWN:l.hasTerrain()?Z=l.terrainVersion:(h=h.substring(0,h.length-1),m=s.getTileInformationFromQuadKey(h),c(m)&&m.hasTerrain()&&(Z=m.terrainVersion));break}if(Z<0)return Promise.reject(new St("Terrain tile doesn't exist"));let b=this._terrainPromises,u=this._terrainRequests,F,U;if(c(b[h]))F=b[h],U=u[h];else{U=i;let G=ELe(this,h,Z,U).fetchArrayBuffer();if(!c(G))return;F=G.then(function(A){return c(A)?gLe.scheduleTask({buffer:A,type:"Terrain",key:s.key},[A]).then(function(T){let g=s.getTileInformationFromQuadKey(h);g.terrainState=Qu.SELF,a.add(h,T[0]);let C=g.terrainProvider,y=T.length-1;for(let Y=0;Y<y;++Y){let Q=h+Y.toString(),J=s.getTileInformationFromQuadKey(Q);c(J)&&(a.add(Q,T[Y+1]),J.terrainState=Qu.PARENT,J.terrainProvider===0&&(J.terrainProvider=C))}}):Promise.reject(new St("Failed to load terrain."))}),b[h]=F,u[h]=U,F=F.finally(function(){delete b[h],delete u[h]})}return F.then(function(){let G=a.get(o);if(c(G)){let A=s.providers[l.terrainProvider];return new lN({buffer:G,childTileMask:W2t(o,l,s),credits:c(A)?[A]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new St("Failed to load terrain."))}).catch(function(G){return U.state===qi.CANCELLED?(i.state=U.state,Promise.reject(G)):(l.terrainState=Qu.NONE,Promise.reject(G))})};NU.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};NU.prototype.getTileDataAvailable=function(t,e,n){let i=this._metadata,o=EW.tileXYToQuadKey(t,e,n),a=i.getTileInformation(t,e,n);if(a===null)return!1;if(c(a)){if(!a.ancestorHasTerrain)return!0;let s=a.terrainState;if(s===Qu.NONE)return!1;if((!c(s)||s===Qu.UNKNOWN)&&(a.terrainState=Qu.UNKNOWN,!a.hasTerrain())){o=o.substring(0,o.length-1);let l=i.getTileInformationFromQuadKey(o);if(!c(l)||!l.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new Zs({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN});i.populateSubtree(t,e,n,s)}return!1};NU.prototype.loadTileDataAvailability=function(t,e,n){};function ELe(t,e,n,i){return n=c(n)&&n>0?n:1,t._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${e}-t.${n.toString()}`,request:i})}var $st=NU;var yHo=R(W(),1);var Mj={};Mj.defaultApiKey=void 0;Mj.mapTilesApiEndpoint=new te({url:"https://tile.googleapis.com/v1/"});Mj.getDefaultCredit=function(){return new on('<img src="https://assets.ion-development.cesium.com/google-credit.png" alt="Google">',!0)};var PS=Mj;var kHo=R(W(),1);var C5={};C5.type=void 0;C5.getRequiredDataPoints=Ut.throwInstantiationError;C5.interpolateOrderZero=Ut.throwInstantiationError;C5.interpolate=Ut.throwInstantiationError;var tlt=C5;var zHo=R(W(),1);var _Ho=R(W(),1);function elt(t){this._url=te.createIfNeeded(t),this._url.appendForwardSlash()}Object.defineProperties(elt.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});elt.prototype.geocode=async function(t,e){return this._url.getDerivedResource({url:e===IU.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:t}}).fetchJson().then(function(i){return i.features.map(function(o){let a,s=o.bbox;if(c(s))a=Gt.fromDegrees(s[0],s[1],s[2],s[3]);else{let l=o.geometry.coordinates[0],r=o.geometry.coordinates[1];a=p.fromDegrees(l,r)}return{displayName:o.properties.label,destination:a,attributions:i.attributions}})})};var I5=elt;function nlt(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.accessToken,cZ.defaultAccessToken),n=te.createIfNeeded(f(t.server,cZ.defaultServer));n.appendForwardSlash();let i=cZ.getDefaultTokenCredit(e);c(i)&&t.scene.frameState.creditDisplay.addStaticCredit(on.clone(i));let o=n.getDerivedResource({url:"v1/geocode"});c(e)&&o.appendQueryParameters({access_token:e}),this._accessToken=e,this._server=n,this._pelias=new I5(o)}Object.defineProperties(nlt.prototype,{credit:{get:function(){}}});nlt.prototype.geocode=async function(t,e){return this._pelias.geocode(t,e)};var N5=nlt;var $Ho=R(W(),1);function _j(){Ut.throwInstantiationError()}Object.defineProperties(_j.prototype,{ellipsoid:{get:Ut.throwInstantiationError}});_j.prototype.project=Ut.throwInstantiationError;_j.prototype.unproject=Ut.throwInstantiationError;var ilt=_j;var owo=R(W(),1);function rN(t){t=f(t,f.EMPTY_OBJECT);let e=t.weights,n=t.times;this._times=n,this._weights=e,this._count=e.length/n.length,this._lastTimeIndex=0}Object.defineProperties(rN.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});rN.prototype.findTimeInterval=ba.prototype.findTimeInterval;rN.prototype.wrapTime=ba.prototype.wrapTime;rN.prototype.clampTime=ba.prototype.clampTime;rN.prototype.evaluate=function(t,e){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(t,this._lastTimeIndex),a=(t-i[o])/(i[o+1]-i[o]);c(e)||(e=new Array(this._count));for(let s=0;s<this._count;s++){let l=o*this._count+s;e[s]=n[l]*(1-a)+n[l+this._count]*a}return e};var olt=rN;var pwo=R(W(),1);function alt(t,e,n){t=te.createIfNeeded(t),t.appendForwardSlash(),t.setQueryParameters({key:e}),this._url=t,this._params=f(n,{}),this._credit=new on('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(alt.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});alt.prototype.geocode=async function(t){return this._url.getDerivedResource({url:"json",queryParameters:ze(this._params,{q:t})}).fetchJson().then(function(n){return n.results.map(function(i){let o,a=i.bounds;if(c(a))o=Gt.fromDegrees(a.southwest.lng,a.southwest.lat,a.northeast.lng,a.northeast.lat);else{let s=i.geometry.lat,l=i.geometry.lng;o=p.fromDegrees(s,l)}return{displayName:i.formatted,destination:o}})})};var slt=alt;var Vwo=R(W(),1);var CLe={packedLength:void 0,pack:Ut.throwInstantiationError,unpack:Ut.throwInstantiationError},llt=CLe;var Wwo=R(W(),1);var ILe={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:Ut.throwInstantiationError,unpackInterpolationResult:Ut.throwInstantiationError},rlt=ILe;var Uwo=R(W(),1);function f2t(){Ut.throwInstantiationError()}f2t.prototype.getURL=Ut.throwInstantiationError;var dlt=f2t;var Jwo=R(W(),1);function NLe(t,e,n,i,o,a,s){let l=xo.numberOfPoints(t,e,o),r,d=n.red,m=n.green,h=n.blue,Z=n.alpha,b=i.red,u=i.green,F=i.blue,U=i.alpha;if(v.equals(n,i)){for(r=0;r<l;r++)a[s++]=v.floatToByte(d),a[s++]=v.floatToByte(m),a[s++]=v.floatToByte(h),a[s++]=v.floatToByte(Z);return s}let G=(b-d)/l,A=(u-m)/l,T=(F-h)/l,g=(U-Z)/l,C=s;for(r=0;r<l;r++)a[C++]=v.floatToByte(d+r*G),a[C++]=v.floatToByte(m+r*A),a[C++]=v.floatToByte(h+r*T),a[C++]=v.floatToByte(Z+r*g);return C}function y5(t){t=f(t,f.EMPTY_OBJECT);let e=t.positions,n=t.colors,i=f(t.colorsPerVertex,!1);this._positions=e,this._colors=n,this._colorsPerVertex=i,this._arcType=f(t.arcType,Ln.GEODESIC),this._granularity=f(t.granularity,k.RADIANS_PER_DEGREE),this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._workerName="createSimplePolylineGeometry";let o=1+e.length*p.packedLength;o+=c(n)?1+n.length*v.packedLength:1,this.packedLength=o+mt.packedLength+3}y5.pack=function(t,e,n){n=f(n,0);let i,o=t._positions,a=o.length;for(e[n++]=a,i=0;i<a;++i,n+=p.packedLength)p.pack(o[i],e,n);let s=t._colors;for(a=c(s)?s.length:0,e[n++]=a,i=0;i<a;++i,n+=v.packedLength)v.pack(s[i],e,n);return mt.pack(t._ellipsoid,e,n),n+=mt.packedLength,e[n++]=t._colorsPerVertex?1:0,e[n++]=t._arcType,e[n]=t._granularity,e};y5.unpack=function(t,e,n){e=f(e,0);let i,o=t[e++],a=new Array(o);for(i=0;i<o;++i,e+=p.packedLength)a[i]=p.unpack(t,e);o=t[e++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,e+=v.packedLength)s[i]=v.unpack(t,e);let l=mt.unpack(t,e);e+=mt.packedLength;let r=t[e++]===1,d=t[e++],m=t[e];return c(n)?(n._positions=a,n._colors=s,n._ellipsoid=l,n._colorsPerVertex=r,n._arcType=d,n._granularity=m,n):new y5({positions:a,colors:s,ellipsoid:l,colorsPerVertex:r,arcType:d,granularity:m})};var Dj=new Array(2),Oj=new Array(2),yLe={positions:Dj,height:Oj,ellipsoid:void 0,minDistance:void 0,granularity:void 0};y5.createGeometry=function(t){let e=t._positions,n=t._colors,i=t._colorsPerVertex,o=t._arcType,a=t._granularity,s=t._ellipsoid,l=k.chordLength(a,s.maximumRadius),r=c(n)&&!i,d,m=e.length,h,Z,b,u,F=0;if(o===Ln.GEODESIC||o===Ln.RHUMB){let g,C,y;o===Ln.GEODESIC?(g=k.chordLength(a,s.maximumRadius),C=xo.numberOfPoints,y=xo.generateArc):(g=a,C=xo.numberOfPointsRhumbLine,y=xo.generateRhumbArc);let Y=xo.extractHeights(e,s),Q=yLe;if(o===Ln.GEODESIC?Q.minDistance=l:Q.granularity=a,Q.ellipsoid=s,r){let J=0;for(d=0;d<m-1;d++)J+=C(e[d],e[d+1],g)+1;h=new Float64Array(J*3),b=new Uint8Array(J*4),Q.positions=Dj,Q.height=Oj;let M=0;for(d=0;d<m-1;++d){Dj[0]=e[d],Dj[1]=e[d+1],Oj[0]=Y[d],Oj[1]=Y[d+1];let V=y(Q);if(c(n)){let E=V.length/3;u=n[d];for(let I=0;I<E;++I)b[M++]=v.floatToByte(u.red),b[M++]=v.floatToByte(u.green),b[M++]=v.floatToByte(u.blue),b[M++]=v.floatToByte(u.alpha)}h.set(V,F),F+=V.length}}else if(Q.positions=e,Q.height=Y,h=new Float64Array(y(Q)),c(n)){for(b=new Uint8Array(h.length/3*4),d=0;d<m-1;++d){let M=e[d],V=e[d+1],E=n[d],I=n[d+1];F=NLe(M,V,E,I,l,b,F)}let J=n[m-1];b[F++]=v.floatToByte(J.red),b[F++]=v.floatToByte(J.green),b[F++]=v.floatToByte(J.blue),b[F++]=v.floatToByte(J.alpha)}}else{Z=r?m*2-2:m,h=new Float64Array(Z*3),b=c(n)?new Uint8Array(Z*4):void 0;let g=0,C=0;for(d=0;d<m;++d){let y=e[d];if(r&&d>0&&(p.pack(y,h,g),g+=3,u=n[d-1],b[C++]=v.floatToByte(u.red),b[C++]=v.floatToByte(u.green),b[C++]=v.floatToByte(u.blue),b[C++]=v.floatToByte(u.alpha)),r&&d===m-1)break;p.pack(y,h,g),g+=3,c(n)&&(u=n[d],b[C++]=v.floatToByte(u.red),b[C++]=v.floatToByte(u.green),b[C++]=v.floatToByte(u.blue),b[C++]=v.floatToByte(u.alpha))}}let U=new ei;U.position=new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:h}),c(n)&&(U.color=new jt({componentDatatype:it.UNSIGNED_BYTE,componentsPerAttribute:4,values:b,normalize:!0})),Z=h.length/3;let G=(Z-1)*2,A=re.createTypedArray(Z,G),T=0;for(d=0;d<Z-1;++d)A[T++]=d,A[T++]=d+1;return new _e({attributes:U,indices:A,primitiveType:le.LINES,boundingSphere:Ft.fromPoints(e)})};var clt=y5;var wwo=R(W(),1);function dN(t){let e=f(t.radius,1),i={radii:new p(e,e,e),stackPartitions:t.stackPartitions,slicePartitions:t.slicePartitions,vertexFormat:t.vertexFormat};this._ellipsoidGeometry=new Cr(i),this._workerName="createSphereGeometry"}dN.packedLength=Cr.packedLength;dN.pack=function(t,e,n){return Cr.pack(t._ellipsoidGeometry,e,n)};var BLe=new Cr,yU={radius:void 0,radii:new p,vertexFormat:new ee,stackPartitions:void 0,slicePartitions:void 0};dN.unpack=function(t,e,n){let i=Cr.unpack(t,e,BLe);return yU.vertexFormat=ee.clone(i._vertexFormat,yU.vertexFormat),yU.stackPartitions=i._stackPartitions,yU.slicePartitions=i._slicePartitions,c(n)?(p.clone(i._radii,yU.radii),n._ellipsoidGeometry=new Cr(yU),n):(yU.radius=i._radii.x,new dN(yU))};dN.createGeometry=function(t){return Cr.createGeometry(t._ellipsoidGeometry)};var mlt=dN;var Kwo=R(W(),1);function BU(t){}Object.defineProperties(BU.prototype,{ellipsoid:{get:Ut.throwInstantiationError},rectangle:{get:Ut.throwInstantiationError},projection:{get:Ut.throwInstantiationError}});BU.prototype.getNumberOfXTilesAtLevel=Ut.throwInstantiationError;BU.prototype.getNumberOfYTilesAtLevel=Ut.throwInstantiationError;BU.prototype.rectangleToNativeRectangle=Ut.throwInstantiationError;BU.prototype.tileXYToNativeRectangle=Ut.throwInstantiationError;BU.prototype.tileXYToRectangle=Ut.throwInstantiationError;BU.prototype.positionToTileXY=Ut.throwInstantiationError;var hlt=BU;var mPo=R(W(),1);function QLe(t,e){this.rectangle=t,this.maxLevel=e}function F2t(t){this.ellipsoid=f(t.ellipsoid,mt.WGS84),this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}F2t.prototype.build=function(t){t._tilingScheme=this.tilingScheme,t._heightmapWidth=this.heightmapWidth,t._heightmapHeight=this.heightmapHeight,t._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,t._rectangles=this.rectangles};function kLe(t,e){let n=e.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")t.tilingScheme=new Qo({ellipsoid:t.ellipsoid});else throw new St(`SRS ${n} is not supported`);let i=e.getElementsByTagName("TileFormat")[0];t.heightmapWidth=parseInt(i.getAttribute("width"),10),t.heightmapHeight=parseInt(i.getAttribute("height"),10),t.levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(t.ellipsoid,Math.min(t.heightmapWidth,t.heightmapHeight),t.tilingScheme.getNumberOfXTilesAtLevel(0));let o=e.getElementsByTagName("DataExtent");for(let a=0;a<o.length;++a){let s=o[a],l=k.toRadians(parseFloat(s.getAttribute("minx"))),r=k.toRadians(parseFloat(s.getAttribute("miny"))),d=k.toRadians(parseFloat(s.getAttribute("maxx"))),m=k.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);t.rectangles.push(new QLe(new Gt(l,r,d,m),h))}}function YLe(t,e,n){let i=`An error occurred while accessing ${t.url}`;throw c(e)&&c(e.message)&&(i=`${i}: ${e.message}`),za.reportError(void 0,n,c(n)?n._errorEvent:void 0,i),new St(i)}async function xLe(t,e,n){try{let i=await e.fetchXML();kLe(t,i)}catch(i){YLe(e,i,n)}}function QU(t){t=f(t,f.EMPTY_OBJECT),this._errorEvent=new It,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(QU.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});QU.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=new F2t(e),i=te.createIfNeeded(t);await xLe(n,i);let o=new QU(e);return n.build(o),o._resource=i,o};QU.prototype.requestTileGeometry=function(t,e,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${t}/${o-e-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!c(s))return;let l=this;return Promise.resolve(s).then(function(r){return new Gd({buffer:vu(r),width:l._heightmapWidth,height:l._heightmapHeight,childTileMask:XLe(l,t,e,n),structure:l._terrainDataStructure})})};QU.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};var U2t=new Gt;function XLe(t,e,n,i){let o=t._tilingScheme,a=t._rectangles,s=o.tileXYToRectangle(e,n,i),l=0;for(let r=0;r<a.length&&l!==15;++r){let d=a[r];if(d.maxLevel<=i)continue;let m=d.rectangle,h=Gt.intersection(m,s,U2t);c(h)&&(Hj(o,m,e*2,n*2,i+1)&&(l|=4),Hj(o,m,e*2+1,n*2,i+1)&&(l|=8),Hj(o,m,e*2,n*2+1,i+1)&&(l|=1),Hj(o,m,e*2+1,n*2+1,i+1)&&(l|=2))}return l}function Hj(t,e,n,i,o){let a=t.tileXYToRectangle(n,i,o);return c(Gt.intersection(a,e,U2t))}QU.prototype.getTileDataAvailable=function(t,e,n){};QU.prototype.loadTileDataAvailability=function(t,e,n){};var plt=QU;var RPo=R(W(),1);function vS(t){t=f(t,f.EMPTY_OBJECT),this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=t.clock,this.element=t.element,this.epoch=f(t.epoch,Re.MINIMUM_VALUE),this.tolerance=f(t.tolerance,1),this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(vS.prototype,{clock:{get:function(){return this._clock},set:function(t){let e=this._clock;e!==t&&(c(e)&&(this._clockSubscription(),this._clockSubscription=void 0),c(t)&&(this._clockSubscription=t.onTick.addEventListener(vS.prototype._onTick,this)),this._clock=t)}},element:{get:function(){return this._element},set:function(t){let e=this._element;e!==t&&(c(e)&&e.removeEventListener("seeked",this._seekFunction,!1),c(t)&&(this._seeking=!1,this._seekFunction=JLe(this),t.addEventListener("seeked",this._seekFunction,!1)),this._element=t,this._seeking=!1,this._firstTickAfterSeek=!1)}}});vS.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,At(this)};vS.prototype.isDestroyed=function(){return!1};vS.prototype._trySetPlaybackRate=function(t){if(this._lastPlaybackRate===t.multiplier)return;let e=this._element;try{e.playbackRate=t.multiplier}catch{e.playbackRate=0}this._lastPlaybackRate=t.multiplier};vS.prototype._onTick=function(t){let e=this._element;if(!c(e)||e.readyState<2)return;let n=e.paused,i=t.shouldAnimate;if(i===n&&(i?e.play():e.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(t);let o=t.currentTime,a=f(this.epoch,Re.MINIMUM_VALUE),s=rt.secondsDifference(o,a),l=e.duration,r,d=e.currentTime;e.loop?(s=s%l,s<0&&(s=l-s),r=s):s>l?r=l:s<0?r=0:r=s;let m=i?f(this.tolerance,1):.001;Math.abs(r-d)>m&&(this._seeking=!0,e.currentTime=r)};function JLe(t){return function(){t._seeking=!1,t._firstTickAfterSeek=!0}}var ult=vS;var fPo=R(W(),1),LLe={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},Zlt=Object.freeze(LLe);var APo=R(W(),1);function MLe(t){return t=f(t,f.EMPTY_OBJECT),HS.fromIonAssetId(2426648,{requestVertexNormals:f(t.requestVertexNormals,!1)})}var B5=MLe;var EPo=R(W(),1);function _Le(t){return t=f(t,f.EMPTY_OBJECT),HS.fromIonAssetId(1,{requestVertexNormals:f(t.requestVertexNormals,!1),requestWaterMask:f(t.requestWaterMask,!1)})}var KS=_Le;var NPo=R(W(),1);var DLe=1953029805,OLe=2917034100;function Vlt(t,e){if(Vlt.passThroughDataForTesting)return e;let n=t.byteLength;if(n===0||n%4!==0)throw new St("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(e),o=i.getUint32(0,!0);if(o===DLe||o===OLe)return e;let a=new DataView(t),s=0,l=e.byteLength,r=l-l%8,d=n,m,h=8;for(;s<r;)for(h=(h+8)%24,m=h;s<r&&m<d;)i.setUint32(s,i.getUint32(s,!0)^a.getUint32(m,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^a.getUint32(m+4,!0),!0),s+=8,m+=24;if(s<l)for(m>=d&&(h=(h+8)%24,m=h);s<l;)i.setUint8(s,i.getUint8(s)^a.getUint8(m)),s++,m++}Vlt.passThroughDataForTesting=!1;var Q5=Vlt;var YPo=R(W(),1);var HLe=new p;function wLe(t,e,n,i){let o=YG(t,e,n,i,HLe);return c(o)?o.x>0&&o.y>0&&o.z>0:!1}var blt=wLe;var JPo=R(W(),1);async function PLe(t,e,n,i){return c(i)||(i=!1),zLe(t,e,n,i)}function vLe(t,e,n){let i=t[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let a;return n?a=o.then(A2t(i)):a=o.then(A2t(i)).catch(jLe(i)),t.shift(),e.push(a),!0}function KLe(t){return new Promise(function(e){setTimeout(e,t)})}function Rlt(t,e,n){return t.length?vLe(t,e,n)?Rlt(t,e):KLe(100).then(()=>Rlt(t,e)):Promise.resolve()}function zLe(t,e,n,i){let o=t.tilingScheme,a,s=[],l={};for(a=0;a<n.length;++a){let d=o.positionToTileXY(n[a],e);if(!c(d))continue;let m=d.toString();if(!l.hasOwnProperty(m)){let h={x:d.x,y:d.y,level:e,tilingScheme:o,terrainProvider:t,positions:[]};l[m]=h,s.push(h)}l[m].positions.push(n[a])}let r=[];return Rlt(s,r,i).then(function(){return Promise.all(r).then(function(){return n})})}function G2t(t,e,n){let i=e.interpolateHeight(n,t.longitude,t.latitude);return i===void 0?!1:(t.height=i,!0)}function A2t(t){let e=t.positions,n=t.tilingScheme.tileXYToRectangle(t.x,t.y,t.level);return function(i){let o=!1;for(let a=0;a<e.length;++a){let s=e[a];if(!G2t(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:t.tilingScheme,x:t.x,y:t.y,level:t.level,throttle:!1}).then(function(){for(let a=0;a<e.length;++a){let s=e[a];G2t(s,i,n)}}):Promise.resolve()}}function jLe(t){let e=t.positions;return function(){for(let n=0;n<e.length;++n){let i=e[n];i.height=void 0}}}var k5=PLe;var OPo=R(W(),1);var Wlt=new K;async function T2t(t,e,n){c(n)||(n=!1);let i=[],o=[],a=t.availability,s=[];for(let r=0;r<e.length;++r){let d=e[r],m=a.computeMaximumLevelAtPosition(d);if(o[r]=m,m===0){t.tilingScheme.positionToTileXY(d,1,Wlt);let Z=t.loadTileDataAvailability(Wlt.x,Wlt.y,1);c(Z)&&s.push(Z)}let h=i[m];c(h)||(i[m]=h=[]),h.push(d)}await Promise.all(s),await Promise.all(i.map(function(r,d){if(c(r))return k5(t,d,r,n)}));let l=[];for(let r=0;r<e.length;++r){let d=e[r];a.computeMaximumLevelAtPosition(d)!==o[r]&&l.push(d)}return l.length>0&&await T2t(t,l,n),e}var zS=T2t;var wPo=R(W(),1);function qLe(t){return t<=.04045?t*.07739938080495357:Math.pow((t+.055)*.9478672985781991,2.4)}var jS=qLe;var KPo=R(W(),1);function $Le(t){switch(t){case pt.FLOAT:return"float";case pt.FLOAT_VEC2:return"vec2";case pt.FLOAT_VEC3:return"vec3";case pt.FLOAT_VEC4:return"vec4";case pt.FLOAT_MAT2:return"mat2";case pt.FLOAT_MAT3:return"mat3";case pt.FLOAT_MAT4:return"mat4";case pt.SAMPLER_2D:return"sampler2D";case pt.BOOL:return"bool"}}var flt=$Le;var jPo=R(W(),1);function tMe(t,e,n){return function(){n.apply(t,arguments),e.apply(t,arguments)}}var Y5=tMe;var nvo=R(W(),1);var eMe=new p(1,1,1);function Flt(t){t=f(t,eMe),this._dimensions=p.clone(t)}Object.defineProperties(Flt.prototype,{dimensions:{get:function(){return this._dimensions},set:function(t){p.clone(t,this._dimensions)}}});var nMe=new p;Flt.prototype.emit=function(t){let e=this._dimensions,n=p.multiplyByScalar(e,.5,nMe),i=k.randomBetween(-n.x,n.x),o=k.randomBetween(-n.y,n.y),a=k.randomBetween(-n.z,n.z);t.position=p.fromElements(i,o,a,t.position),t.velocity=p.normalize(t.position,t.velocity)};var Ult=Flt;var avo=R(W(),1);function jb(){this.featurePropertiesDirty=!1}Object.defineProperties(jb.prototype,{featuresLength:{get:function(){Ut.throwInstantiationError()}},pointsLength:{get:function(){Ut.throwInstantiationError()}},trianglesLength:{get:function(){Ut.throwInstantiationError()}},geometryByteLength:{get:function(){Ut.throwInstantiationError()}},texturesByteLength:{get:function(){Ut.throwInstantiationError()}},batchTableByteLength:{get:function(){Ut.throwInstantiationError()}},innerContents:{get:function(){Ut.throwInstantiationError()}},ready:{get:function(){Ut.throwInstantiationError()}},tileset:{get:function(){Ut.throwInstantiationError()}},tile:{get:function(){Ut.throwInstantiationError()}},url:{get:function(){Ut.throwInstantiationError()}},batchTable:{get:function(){Ut.throwInstantiationError()}},metadata:{get:function(){Ut.throwInstantiationError()},set:function(t){Ut.throwInstantiationError()}},group:{get:function(){Ut.throwInstantiationError()},set:function(t){Ut.throwInstantiationError()}}});jb.prototype.hasProperty=function(t,e){Ut.throwInstantiationError()};jb.prototype.getFeature=function(t){Ut.throwInstantiationError()};jb.prototype.applyDebugSettings=function(t,e){Ut.throwInstantiationError()};jb.prototype.applyStyle=function(t){Ut.throwInstantiationError()};jb.prototype.update=function(t,e){Ut.throwInstantiationError()};jb.prototype.pick=function(t,e,n){Ut.throwInstantiationError()};jb.prototype.isDestroyed=function(){Ut.throwInstantiationError()};jb.prototype.destroy=function(){Ut.throwInstantiationError()};var Glt=jb;var Rvo=R(W(),1);var cvo=R(W(),1);function cN(t,e){this._conditionsExpression=be(t,!0),this._conditions=t.conditions,this._runtimeConditions=void 0,oMe(this,e)}Object.defineProperties(cN.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function iMe(t,e){this.condition=t,this.expression=e}function oMe(t,e){let n=[],i=t._conditions;if(!c(i))return;let o=i.length;for(let a=0;a<o;++a){let s=i[a],l=String(s[0]),r=String(s[1]);n.push(new iMe(new xp(l,e),new xp(r,e)))}t._runtimeConditions=n}cN.prototype.evaluate=function(t,e){let n=this._runtimeConditions;if(!c(n))return;let i=n.length;for(let o=0;o<i;++o){let a=n[o];if(a.condition.evaluate(t))return a.expression.evaluate(t,e)}};cN.prototype.evaluateColor=function(t,e){let n=this._runtimeConditions;if(!c(n))return;let i=n.length;for(let o=0;o<i;++o){let a=n[o];if(a.condition.evaluate(t))return a.expression.evaluateColor(t,e)}};cN.prototype.getShaderFunction=function(t,e,n,i){let o=this._runtimeConditions;if(!c(o)||o.length===0)return;let a="",s=o.length;for(let l=0;l<s;++l){let r=o[l],d=r.condition.getShaderExpression(e,n),m=r.expression.getShaderExpression(e,n);a+=` ${l===0?"if":"else if"} (${d}) +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function mp(t){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=k.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(mp.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});mp.fromUrl=async function(t){let e=t;typeof e!="string"&&!(e instanceof te)&&(e=t.url);let n=te.createIfNeeded(e);n.appendForwardSlash();let i=new mp;i._resource=n;try{await ZLe(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let a=`An error occurred while accessing ${Vkt(i,"",1).url}: ${o}`;throw new Tt(a)}return i};mp.tileXYToQuadKey=function(t,e,n){let i="";for(let o=n;o>=0;--o){let a=1<<o,s=0;Zc(e,a)?Zc(t,a)&&(s|=1):(s|=2,Zc(t,a)||(s|=1)),i+=s}return i};mp.quadKeyToTileXY=function(t){let e=0,n=0,i=t.length-1;for(let o=i;o>=0;--o){let a=1<<o,s=+t[i-o];Zc(s,2)?Zc(s,1)||(e|=a):(n|=a,Zc(s,1)&&(e|=a))}return{x:e,y:n,level:i}};mp.prototype.isValid=function(t){let e=this.getTileInformationFromQuadKey(t);if(c(e))return e!==null;let n=!0,i=t,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),e=this.getTileInformationFromQuadKey(i),c(e)){!e.hasSubtree()&&!e.hasChild(parseInt(o))&&(n=!1);break}else if(e===null){n=!1;break}return n};var pkt=new $i("decodeGoogleEarthEnterprisePacket");mp.prototype.getQuadTreePacket=function(t,e,n){e=f(e,1),t=f(t,"");let o=Vkt(this,t,e,n).fetchArrayBuffer();if(!c(o))return;let a=this._tileInfo,s=this.key;return o.then(function(l){return pkt.scheduleTask({buffer:l,quadKey:t,type:"Metadata",key:s},[l]).then(function(d){let m,h=-1;if(t!==""){h=t.length+1;let V=d[t];m=a[t],m._bits|=V._bits,delete d[t]}let u=Object.keys(d);u.sort(function(V,F){return V.length-F.length});let R=u.length;for(let V=0;V<R;++V){let F=u[V];if(d[F]!==null){let G=E5.clone(d[F]),A=F.length;if(A===h)G.setParent(m);else if(A>1){let S=a[F.substring(0,F.length-1)];G.setParent(S)}a[F]=G}else a[F]=null}})})};mp.prototype.populateSubtree=function(t,e,n,i){let o=mp.tileXYToQuadKey(t,e,n);return Kst(this,o,i)};function Kst(t,e,n){let i=t._tileInfo,o=e,a=i[o];if(c(a)&&(!a.hasSubtree()||a.hasChildren()))return a;for(;a===void 0&&o.length>1;)o=o.substring(0,o.length-1),a=i[o];let s,l=t._subtreePromises,r=l[o];if(c(r))return r.then(function(){return s=new us({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Kst(t,e,s)});if(!c(a)||!a.hasSubtree())return Promise.reject(new Tt(`Couldn't load metadata for tile ${e}`));if(r=t.getQuadTreePacket(o,a.cnodeVersion,n),!!c(r))return l[o]=r,r.then(function(){return s=new us({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Kst(t,e,s)}).finally(function(){delete l[o]})}mp.prototype.getTileInformation=function(t,e,n){let i=mp.tileXYToQuadKey(t,e,n);return this._tileInfo[i]};mp.prototype.getTileInformationFromQuadKey=function(t){return this._tileInfo[t]};function Vkt(t,e,n,i){return t._resource.getDerivedResource({url:`flatfile?q2-0${e}-q.${n.toString()}`,request:i})}var Pst,vst;function ZLe(t){let e=t._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!c(vst)){let n=Dn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;vst=ZG(n).then(function(){Pst=window.cesiumGoogleEarthDbRootParser(pLe),c(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return vst.then(function(){return e.fetchArrayBuffer()}).then(function(n){let i=Pst.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,a=o.byteOffset,s=a+o.byteLength,l=t.key=o.buffer.slice(a,s);o=i.dbrootData,a=o.byteOffset,s=a+o.byteLength;let r=o.buffer.slice(a,s);return pkt.scheduleTask({buffer:r,type:"DbRoot",key:l},[r])}).then(function(n){let i=Pst.DbRootProto.decode(new Uint8Array(n.buffer));if(t.imageryPresent=f(i.imageryPresent,t.imageryPresent),t.protoImagery=i.protoImagery,t.terrainPresent=f(i.terrainPresent,t.terrainPresent),c(i.endSnippet)&&c(i.endSnippet.model)){let l=i.endSnippet.model;t.negativeAltitudeExponentBias=f(l.negativeAltitudeExponentBias,t.negativeAltitudeExponentBias),t.negativeAltitudeThreshold=f(l.compressedNegativeAltitudeThreshold,t.negativeAltitudeThreshold)}c(i.databaseVersion)&&(t._quadPacketVersion=f(i.databaseVersion.quadtreeVersion,t._quadPacketVersion));let o=t.providers,a=f(i.providerInfo,[]),s=a.length;for(let l=0;l<s;++l){let r=a[l],d=r.copyrightString;c(d)&&(o[r.providerId]=new on(d.value))}}).catch(function(){console.log(`Failed to retrieve ${e.url}. Using defaults.`),t.key=uLe})}var EW=mp;var cHo=b(W(),1);function wT(t){t=f(t,f.EMPTY_OBJECT),this._buffer=t.buffer,this._credits=t.credits,this._negativeAltitudeExponentBias=t.negativeAltitudeExponentBias,this._negativeElevationThreshold=t.negativeElevationThreshold;let e=f(t.childTileMask,15),n=e&3;n|=e&4?8:0,n|=e&8?4:0,this._childTileMask=n,this._createdByUpsampling=f(t.createdByUpsampling,!1),this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(wT.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var Rkt="createVerticesFromGoogleEarthEnterpriseBuffer",RLe=new $i(Rkt),bLe=new $i(Rkt,nZ.maximumAsynchronousTasks),ukt=new Gt,zst=new Gt;wT.prototype.createMesh=function(t){t=f(t,f.EMPTY_OBJECT);let e=t.tilingScheme,n=t.x,i=t.y,o=t.level,a=f(t.exaggeration,1),s=f(t.exaggerationRelativeHeight,0),l=f(t.throttle,!0),r=e.ellipsoid;e.tileXYToNativeRectangle(n,i,o,ukt),e.tileXYToRectangle(n,i,o,zst);let d=r.cartographicToCartesian(Gt.center(zst)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let R=(l?bLe:RLe).scheduleTask({buffer:this._buffer,nativeRectangle:ukt,rectangle:zst,relativeToCenter:d,ellipsoid:r,skirtHeight:this._skirtHeight,exaggeration:a,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!c(R))return;let V=this;return R.then(function(F){return V._mesh=new AV(d,new Float32Array(F.vertices),new Uint16Array(F.indices),F.indexCountWithoutSkirts,F.vertexCountWithoutSkirts,F.minimumHeight,F.maximumHeight,Ft.clone(F.boundingSphere3D),p.clone(F.occludeePointInScaledSpace),F.numberOfAttributes,ci.clone(F.orientedBoundingBox),lc.clone(F.encoding),F.westIndicesSouthToNorth,F.southIndicesEastToWest,F.eastIndicesNorthToSouth,F.northIndicesWestToEast),V._minimumHeight=F.minimumHeight,V._maximumHeight=F.maximumHeight,V._buffer=void 0,V._mesh})};wT.prototype.interpolateHeight=function(t,e,n){let i=k.clamp((e-t.west)/t.width,0,1),o=k.clamp((n-t.south)/t.height,0,1);return c(this._mesh)?GLe(this,i,o):TLe(this,i,o,t)};var WLe=new $i("upsampleQuantizedTerrainMesh",nZ.maximumAsynchronousTasks);wT.prototype.upsample=function(t,e,n,i,o,a,s){let l=this._mesh;if(!c(this._mesh))return;let r=e*2!==o,d=n*2===a,m=t.ellipsoid,h=t.tileXYToRectangle(o,a,s),u=WLe.scheduleTask({vertices:l.vertices,indices:l.indices,indexCountWithoutSkirts:l.indexCountWithoutSkirts,vertexCountWithoutSkirts:l.vertexCountWithoutSkirts,encoding:l.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:r,isNorthChild:d,childRectangle:h,ellipsoid:m});if(!c(u))return;let R=this;return u.then(function(V){let F=new Uint16Array(V.vertices),U=re.createTypedArray(F.length/3,V.indices),G=R._skirtHeight;return new OT({quantizedVertices:F,indices:U,minimumHeight:V.minimumHeight,maximumHeight:V.maximumHeight,boundingSphere:Ft.clone(V.boundingSphere),orientedBoundingBox:ci.clone(V.orientedBoundingBox),horizonOcclusionPoint:p.clone(V.horizonOcclusionPoint),westIndices:V.westIndices,southIndices:V.southIndices,eastIndices:V.eastIndices,northIndices:V.northIndices,westSkirtHeight:G,southSkirtHeight:G,eastSkirtHeight:G,northSkirtHeight:G,childTileMask:0,createdByUpsampling:!0,credits:R._credits})})};wT.prototype.isChildAvailable=function(t,e,n,i){let o=2;return n!==t*2&&++o,i!==e*2&&(o-=2),(this._childTileMask&1<<o)!==0};wT.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var fLe=new K,FLe=new K,ULe=new K,bkt=new p;function GLe(t,e,n){let i=t._mesh,o=i.vertices,a=i.encoding,s=i.indices;for(let l=0,r=s.length;l<r;l+=3){let d=s[l],m=s[l+1],h=s[l+2],u=a.decodeTextureCoordinates(o,d,fLe),R=a.decodeTextureCoordinates(o,m,FLe),V=a.decodeTextureCoordinates(o,h,ULe),F=TW.computeBarycentricCoordinates(e,n,u.x,u.y,R.x,R.y,V.x,V.y,bkt);if(F.x>=-1e-15&&F.y>=-1e-15&&F.z>=-1e-15){let U=a.decodeHeight(o,d),G=a.decodeHeight(o,m),A=a.decodeHeight(o,h);return F.x*U+F.y*G+F.z*A}}}var ALe=Uint16Array.BYTES_PER_ELEMENT,Zkt=Uint32Array.BYTES_PER_ELEMENT,jst=Int32Array.BYTES_PER_ELEMENT,SLe=Float32Array.BYTES_PER_ELEMENT,qst=Float64Array.BYTES_PER_ELEMENT;function TLe(t,e,n,i){let o=t._buffer,a=0,s=0,l=0;n>.5?(e>.5?(a=2,s=.5):a=3,l=.5):e>.5&&(a=1,s=.5);let r=new DataView(o),d=0;for(let C=0;C<a;++C)d+=r.getUint32(d,!0),d+=Zkt;d+=Zkt,d+=2*qst;let m=k.toRadians(r.getFloat64(d,!0)*180);d+=qst;let h=k.toRadians(r.getFloat64(d,!0)*180);d+=qst;let u=i.width/m/2,R=i.height/h/2,V=r.getInt32(d,!0);d+=jst;let F=r.getInt32(d,!0)*3;d+=jst,d+=jst;let U=new Array(V),G=new Array(V),A=new Array(V),S;for(S=0;S<V;++S)U[S]=s+r.getUint8(d++)*u,G[S]=l+r.getUint8(d++)*R,A[S]=r.getFloat32(d,!0)*6371010,d+=SLe;let g=new Array(F);for(S=0;S<F;++S)g[S]=r.getUint16(d,!0),d+=ALe;for(S=0;S<F;S+=3){let C=g[S],y=g[S+1],Y=g[S+2],Q=U[C],J=U[y],M=U[Y],Z=G[C],E=G[y],I=G[Y],B=TW.computeBarycentricCoordinates(e,n,Q,Z,J,E,M,I,bkt);if(B.x>=-1e-15&&B.y>=-1e-15&&B.z>=-1e-15)return B.x*A[C]+B.y*A[y]+B.z*A[Y]}}var lN=wT;var EHo=b(W(),1);var QV={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},Jj=new rt;function Lj(){this._terrainCache={},this._lastTidy=rt.now()}Lj.prototype.add=function(t,e){this._terrainCache[t]={buffer:e,timestamp:rt.now()}};Lj.prototype.get=function(t){let n=this._terrainCache[t];if(c(n))return delete this._terrainCache[t],n.buffer};Lj.prototype.tidy=function(){if(rt.now(Jj),rt.secondsDifference(Jj,this._lastTidy)>10){let t=this._terrainCache,e=Object.keys(t),n=e.length;for(let i=0;i<n;++i){let o=e[i],a=t[o];rt.secondsDifference(Jj,a.timestamp)>10&&delete t[o]}rt.clone(Jj,this._lastTidy)}};function NU(t){t=f(t,f.EMPTY_OBJECT),this._tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new Gt(-k.PI,-k.PI,k.PI,k.PI),ellipsoid:t.ellipsoid});let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new Lj,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new It}Object.defineProperties(NU.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});NU.fromMetadata=function(t,e){if(!t.terrainPresent)throw new Tt(`The server ${t.url} doesn't have terrain`);let n=new NU(e);return n._metadata=t,n};var gLe=new $i("decodeGoogleEarthEnterprisePacket");function Wkt(t,e,n){let i=e.getChildBitmask();if(e.terrainState===QV.PARENT){i=0;for(let o=0;o<4;++o){let a=n.getTileInformationFromQuadKey(t+o.toString());c(a)&&a.hasTerrain()&&(i|=1<<o)}}return i}NU.prototype.requestTileGeometry=function(t,e,n,i){let o=EW.tileXYToQuadKey(t,e,n),a=this._terrainCache,s=this._metadata,l=s.getTileInformationFromQuadKey(o);if(!c(l))return Promise.reject(new Tt("Terrain tile doesn't exist"));let r=l.terrainState;c(r)||(r=l.terrainState=QV.UNKNOWN);let d=a.get(o);if(c(d)){let G=s.providers[l.terrainProvider];return Promise.resolve(new lN({buffer:d,childTileMask:Wkt(o,l,s),credits:c(G)?[G]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(a.tidy(),l.ancestorHasTerrain){if(r===QV.NONE)return Promise.reject(new Tt("Terrain tile doesn't exist"))}else return Promise.resolve(new Gd({buffer:new Uint8Array(16*16),width:16,height:16}));let m,h=o,u=-1;switch(r){case QV.SELF:u=l.terrainVersion;break;case QV.PARENT:h=h.substring(0,h.length-1),m=s.getTileInformationFromQuadKey(h),u=m.terrainVersion;break;case QV.UNKNOWN:l.hasTerrain()?u=l.terrainVersion:(h=h.substring(0,h.length-1),m=s.getTileInformationFromQuadKey(h),c(m)&&m.hasTerrain()&&(u=m.terrainVersion));break}if(u<0)return Promise.reject(new Tt("Terrain tile doesn't exist"));let R=this._terrainPromises,V=this._terrainRequests,F,U;if(c(R[h]))F=R[h],U=V[h];else{U=i;let G=ELe(this,h,u,U).fetchArrayBuffer();if(!c(G))return;F=G.then(function(A){return c(A)?gLe.scheduleTask({buffer:A,type:"Terrain",key:s.key},[A]).then(function(S){let g=s.getTileInformationFromQuadKey(h);g.terrainState=QV.SELF,a.add(h,S[0]);let C=g.terrainProvider,y=S.length-1;for(let Y=0;Y<y;++Y){let Q=h+Y.toString(),J=s.getTileInformationFromQuadKey(Q);c(J)&&(a.add(Q,S[Y+1]),J.terrainState=QV.PARENT,J.terrainProvider===0&&(J.terrainProvider=C))}}):Promise.reject(new Tt("Failed to load terrain."))}),R[h]=F,V[h]=U,F=F.finally(function(){delete R[h],delete V[h]})}return F.then(function(){let G=a.get(o);if(c(G)){let A=s.providers[l.terrainProvider];return new lN({buffer:G,childTileMask:Wkt(o,l,s),credits:c(A)?[A]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new Tt("Failed to load terrain."))}).catch(function(G){return U.state===qi.CANCELLED?(i.state=U.state,Promise.reject(G)):(l.terrainState=QV.NONE,Promise.reject(G))})};NU.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};NU.prototype.getTileDataAvailable=function(t,e,n){let i=this._metadata,o=EW.tileXYToQuadKey(t,e,n),a=i.getTileInformation(t,e,n);if(a===null)return!1;if(c(a)){if(!a.ancestorHasTerrain)return!0;let s=a.terrainState;if(s===QV.NONE)return!1;if((!c(s)||s===QV.UNKNOWN)&&(a.terrainState=QV.UNKNOWN,!a.hasTerrain())){o=o.substring(0,o.length-1);let l=i.getTileInformationFromQuadKey(o);if(!c(l)||!l.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new us({throttle:!1,throttleByServer:!0,type:Xl.TERRAIN});i.populateSubtree(t,e,n,s)}return!1};NU.prototype.loadTileDataAvailability=function(t,e,n){};function ELe(t,e,n,i){return n=c(n)&&n>0?n:1,t._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${e}-t.${n.toString()}`,request:i})}var $st=NU;var yHo=b(W(),1);var Mj={};Mj.defaultApiKey=void 0;Mj.mapTilesApiEndpoint=new te({url:"https://tile.googleapis.com/v1/"});Mj.getDefaultCredit=function(){return new on('<img src="https://assets.ion-development.cesium.com/google-credit.png" alt="Google">',!0)};var PT=Mj;var kHo=b(W(),1);var C5={};C5.type=void 0;C5.getRequiredDataPoints=Ut.throwInstantiationError;C5.interpolateOrderZero=Ut.throwInstantiationError;C5.interpolate=Ut.throwInstantiationError;var tlt=C5;var zHo=b(W(),1);var _Ho=b(W(),1);function elt(t){this._url=te.createIfNeeded(t),this._url.appendForwardSlash()}Object.defineProperties(elt.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});elt.prototype.geocode=async function(t,e){return this._url.getDerivedResource({url:e===IU.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:t}}).fetchJson().then(function(i){return i.features.map(function(o){let a,s=o.bbox;if(c(s))a=Gt.fromDegrees(s[0],s[1],s[2],s[3]);else{let l=o.geometry.coordinates[0],r=o.geometry.coordinates[1];a=p.fromDegrees(l,r)}return{displayName:o.properties.label,destination:a,attributions:i.attributions}})})};var I5=elt;function nlt(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.accessToken,cu.defaultAccessToken),n=te.createIfNeeded(f(t.server,cu.defaultServer));n.appendForwardSlash();let i=cu.getDefaultTokenCredit(e);c(i)&&t.scene.frameState.creditDisplay.addStaticCredit(on.clone(i));let o=n.getDerivedResource({url:"v1/geocode"});c(e)&&o.appendQueryParameters({access_token:e}),this._accessToken=e,this._server=n,this._pelias=new I5(o)}Object.defineProperties(nlt.prototype,{credit:{get:function(){}}});nlt.prototype.geocode=async function(t,e){return this._pelias.geocode(t,e)};var N5=nlt;var $Ho=b(W(),1);function _j(){Ut.throwInstantiationError()}Object.defineProperties(_j.prototype,{ellipsoid:{get:Ut.throwInstantiationError}});_j.prototype.project=Ut.throwInstantiationError;_j.prototype.unproject=Ut.throwInstantiationError;var ilt=_j;var owo=b(W(),1);function rN(t){t=f(t,f.EMPTY_OBJECT);let e=t.weights,n=t.times;this._times=n,this._weights=e,this._count=e.length/n.length,this._lastTimeIndex=0}Object.defineProperties(rN.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});rN.prototype.findTimeInterval=Ra.prototype.findTimeInterval;rN.prototype.wrapTime=Ra.prototype.wrapTime;rN.prototype.clampTime=Ra.prototype.clampTime;rN.prototype.evaluate=function(t,e){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(t,this._lastTimeIndex),a=(t-i[o])/(i[o+1]-i[o]);c(e)||(e=new Array(this._count));for(let s=0;s<this._count;s++){let l=o*this._count+s;e[s]=n[l]*(1-a)+n[l+this._count]*a}return e};var olt=rN;var pwo=b(W(),1);function alt(t,e,n){t=te.createIfNeeded(t),t.appendForwardSlash(),t.setQueryParameters({key:e}),this._url=t,this._params=f(n,{}),this._credit=new on('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(alt.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});alt.prototype.geocode=async function(t){return this._url.getDerivedResource({url:"json",queryParameters:ze(this._params,{q:t})}).fetchJson().then(function(n){return n.results.map(function(i){let o,a=i.bounds;if(c(a))o=Gt.fromDegrees(a.southwest.lng,a.southwest.lat,a.northeast.lng,a.northeast.lat);else{let s=i.geometry.lat,l=i.geometry.lng;o=p.fromDegrees(s,l)}return{displayName:i.formatted,destination:o}})})};var slt=alt;var Zwo=b(W(),1);var CLe={packedLength:void 0,pack:Ut.throwInstantiationError,unpack:Ut.throwInstantiationError},llt=CLe;var Wwo=b(W(),1);var ILe={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:Ut.throwInstantiationError,unpackInterpolationResult:Ut.throwInstantiationError},rlt=ILe;var Uwo=b(W(),1);function fkt(){Ut.throwInstantiationError()}fkt.prototype.getURL=Ut.throwInstantiationError;var dlt=fkt;var Jwo=b(W(),1);function NLe(t,e,n,i,o,a,s){let l=xo.numberOfPoints(t,e,o),r,d=n.red,m=n.green,h=n.blue,u=n.alpha,R=i.red,V=i.green,F=i.blue,U=i.alpha;if(v.equals(n,i)){for(r=0;r<l;r++)a[s++]=v.floatToByte(d),a[s++]=v.floatToByte(m),a[s++]=v.floatToByte(h),a[s++]=v.floatToByte(u);return s}let G=(R-d)/l,A=(V-m)/l,S=(F-h)/l,g=(U-u)/l,C=s;for(r=0;r<l;r++)a[C++]=v.floatToByte(d+r*G),a[C++]=v.floatToByte(m+r*A),a[C++]=v.floatToByte(h+r*S),a[C++]=v.floatToByte(u+r*g);return C}function y5(t){t=f(t,f.EMPTY_OBJECT);let e=t.positions,n=t.colors,i=f(t.colorsPerVertex,!1);this._positions=e,this._colors=n,this._colorsPerVertex=i,this._arcType=f(t.arcType,Ln.GEODESIC),this._granularity=f(t.granularity,k.RADIANS_PER_DEGREE),this._ellipsoid=f(t.ellipsoid,mt.WGS84),this._workerName="createSimplePolylineGeometry";let o=1+e.length*p.packedLength;o+=c(n)?1+n.length*v.packedLength:1,this.packedLength=o+mt.packedLength+3}y5.pack=function(t,e,n){n=f(n,0);let i,o=t._positions,a=o.length;for(e[n++]=a,i=0;i<a;++i,n+=p.packedLength)p.pack(o[i],e,n);let s=t._colors;for(a=c(s)?s.length:0,e[n++]=a,i=0;i<a;++i,n+=v.packedLength)v.pack(s[i],e,n);return mt.pack(t._ellipsoid,e,n),n+=mt.packedLength,e[n++]=t._colorsPerVertex?1:0,e[n++]=t._arcType,e[n]=t._granularity,e};y5.unpack=function(t,e,n){e=f(e,0);let i,o=t[e++],a=new Array(o);for(i=0;i<o;++i,e+=p.packedLength)a[i]=p.unpack(t,e);o=t[e++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,e+=v.packedLength)s[i]=v.unpack(t,e);let l=mt.unpack(t,e);e+=mt.packedLength;let r=t[e++]===1,d=t[e++],m=t[e];return c(n)?(n._positions=a,n._colors=s,n._ellipsoid=l,n._colorsPerVertex=r,n._arcType=d,n._granularity=m,n):new y5({positions:a,colors:s,ellipsoid:l,colorsPerVertex:r,arcType:d,granularity:m})};var Dj=new Array(2),Oj=new Array(2),yLe={positions:Dj,height:Oj,ellipsoid:void 0,minDistance:void 0,granularity:void 0};y5.createGeometry=function(t){let e=t._positions,n=t._colors,i=t._colorsPerVertex,o=t._arcType,a=t._granularity,s=t._ellipsoid,l=k.chordLength(a,s.maximumRadius),r=c(n)&&!i,d,m=e.length,h,u,R,V,F=0;if(o===Ln.GEODESIC||o===Ln.RHUMB){let g,C,y;o===Ln.GEODESIC?(g=k.chordLength(a,s.maximumRadius),C=xo.numberOfPoints,y=xo.generateArc):(g=a,C=xo.numberOfPointsRhumbLine,y=xo.generateRhumbArc);let Y=xo.extractHeights(e,s),Q=yLe;if(o===Ln.GEODESIC?Q.minDistance=l:Q.granularity=a,Q.ellipsoid=s,r){let J=0;for(d=0;d<m-1;d++)J+=C(e[d],e[d+1],g)+1;h=new Float64Array(J*3),R=new Uint8Array(J*4),Q.positions=Dj,Q.height=Oj;let M=0;for(d=0;d<m-1;++d){Dj[0]=e[d],Dj[1]=e[d+1],Oj[0]=Y[d],Oj[1]=Y[d+1];let Z=y(Q);if(c(n)){let E=Z.length/3;V=n[d];for(let I=0;I<E;++I)R[M++]=v.floatToByte(V.red),R[M++]=v.floatToByte(V.green),R[M++]=v.floatToByte(V.blue),R[M++]=v.floatToByte(V.alpha)}h.set(Z,F),F+=Z.length}}else if(Q.positions=e,Q.height=Y,h=new Float64Array(y(Q)),c(n)){for(R=new Uint8Array(h.length/3*4),d=0;d<m-1;++d){let M=e[d],Z=e[d+1],E=n[d],I=n[d+1];F=NLe(M,Z,E,I,l,R,F)}let J=n[m-1];R[F++]=v.floatToByte(J.red),R[F++]=v.floatToByte(J.green),R[F++]=v.floatToByte(J.blue),R[F++]=v.floatToByte(J.alpha)}}else{u=r?m*2-2:m,h=new Float64Array(u*3),R=c(n)?new Uint8Array(u*4):void 0;let g=0,C=0;for(d=0;d<m;++d){let y=e[d];if(r&&d>0&&(p.pack(y,h,g),g+=3,V=n[d-1],R[C++]=v.floatToByte(V.red),R[C++]=v.floatToByte(V.green),R[C++]=v.floatToByte(V.blue),R[C++]=v.floatToByte(V.alpha)),r&&d===m-1)break;p.pack(y,h,g),g+=3,c(n)&&(V=n[d],R[C++]=v.floatToByte(V.red),R[C++]=v.floatToByte(V.green),R[C++]=v.floatToByte(V.blue),R[C++]=v.floatToByte(V.alpha))}}let U=new ei;U.position=new jt({componentDatatype:it.DOUBLE,componentsPerAttribute:3,values:h}),c(n)&&(U.color=new jt({componentDatatype:it.UNSIGNED_BYTE,componentsPerAttribute:4,values:R,normalize:!0})),u=h.length/3;let G=(u-1)*2,A=re.createTypedArray(u,G),S=0;for(d=0;d<u-1;++d)A[S++]=d,A[S++]=d+1;return new _e({attributes:U,indices:A,primitiveType:le.LINES,boundingSphere:Ft.fromPoints(e)})};var clt=y5;var wwo=b(W(),1);function dN(t){let e=f(t.radius,1),i={radii:new p(e,e,e),stackPartitions:t.stackPartitions,slicePartitions:t.slicePartitions,vertexFormat:t.vertexFormat};this._ellipsoidGeometry=new Cr(i),this._workerName="createSphereGeometry"}dN.packedLength=Cr.packedLength;dN.pack=function(t,e,n){return Cr.pack(t._ellipsoidGeometry,e,n)};var BLe=new Cr,yU={radius:void 0,radii:new p,vertexFormat:new ee,stackPartitions:void 0,slicePartitions:void 0};dN.unpack=function(t,e,n){let i=Cr.unpack(t,e,BLe);return yU.vertexFormat=ee.clone(i._vertexFormat,yU.vertexFormat),yU.stackPartitions=i._stackPartitions,yU.slicePartitions=i._slicePartitions,c(n)?(p.clone(i._radii,yU.radii),n._ellipsoidGeometry=new Cr(yU),n):(yU.radius=i._radii.x,new dN(yU))};dN.createGeometry=function(t){return Cr.createGeometry(t._ellipsoidGeometry)};var mlt=dN;var Kwo=b(W(),1);function BU(t){}Object.defineProperties(BU.prototype,{ellipsoid:{get:Ut.throwInstantiationError},rectangle:{get:Ut.throwInstantiationError},projection:{get:Ut.throwInstantiationError}});BU.prototype.getNumberOfXTilesAtLevel=Ut.throwInstantiationError;BU.prototype.getNumberOfYTilesAtLevel=Ut.throwInstantiationError;BU.prototype.rectangleToNativeRectangle=Ut.throwInstantiationError;BU.prototype.tileXYToNativeRectangle=Ut.throwInstantiationError;BU.prototype.tileXYToRectangle=Ut.throwInstantiationError;BU.prototype.positionToTileXY=Ut.throwInstantiationError;var hlt=BU;var mPo=b(W(),1);function QLe(t,e){this.rectangle=t,this.maxLevel=e}function Fkt(t){this.ellipsoid=f(t.ellipsoid,mt.WGS84),this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}Fkt.prototype.build=function(t){t._tilingScheme=this.tilingScheme,t._heightmapWidth=this.heightmapWidth,t._heightmapHeight=this.heightmapHeight,t._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,t._rectangles=this.rectangles};function kLe(t,e){let n=e.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")t.tilingScheme=new Qo({ellipsoid:t.ellipsoid});else throw new Tt(`SRS ${n} is not supported`);let i=e.getElementsByTagName("TileFormat")[0];t.heightmapWidth=parseInt(i.getAttribute("width"),10),t.heightmapHeight=parseInt(i.getAttribute("height"),10),t.levelZeroMaximumGeometricError=El.getEstimatedLevelZeroGeometricErrorForAHeightmap(t.ellipsoid,Math.min(t.heightmapWidth,t.heightmapHeight),t.tilingScheme.getNumberOfXTilesAtLevel(0));let o=e.getElementsByTagName("DataExtent");for(let a=0;a<o.length;++a){let s=o[a],l=k.toRadians(parseFloat(s.getAttribute("minx"))),r=k.toRadians(parseFloat(s.getAttribute("miny"))),d=k.toRadians(parseFloat(s.getAttribute("maxx"))),m=k.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);t.rectangles.push(new QLe(new Gt(l,r,d,m),h))}}function YLe(t,e,n){let i=`An error occurred while accessing ${t.url}`;throw c(e)&&c(e.message)&&(i=`${i}: ${e.message}`),za.reportError(void 0,n,c(n)?n._errorEvent:void 0,i),new Tt(i)}async function xLe(t,e,n){try{let i=await e.fetchXML();kLe(t,i)}catch(i){YLe(e,i,n)}}function QU(t){t=f(t,f.EMPTY_OBJECT),this._errorEvent=new It,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(QU.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});QU.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=new Fkt(e),i=te.createIfNeeded(t);await xLe(n,i);let o=new QU(e);return n.build(o),o._resource=i,o};QU.prototype.requestTileGeometry=function(t,e,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${t}/${o-e-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!c(s))return;let l=this;return Promise.resolve(s).then(function(r){return new Gd({buffer:vV(r),width:l._heightmapWidth,height:l._heightmapHeight,childTileMask:XLe(l,t,e,n),structure:l._terrainDataStructure})})};QU.prototype.getLevelMaximumGeometricError=function(t){return this._levelZeroMaximumGeometricError/(1<<t)};var Ukt=new Gt;function XLe(t,e,n,i){let o=t._tilingScheme,a=t._rectangles,s=o.tileXYToRectangle(e,n,i),l=0;for(let r=0;r<a.length&&l!==15;++r){let d=a[r];if(d.maxLevel<=i)continue;let m=d.rectangle,h=Gt.intersection(m,s,Ukt);c(h)&&(Hj(o,m,e*2,n*2,i+1)&&(l|=4),Hj(o,m,e*2+1,n*2,i+1)&&(l|=8),Hj(o,m,e*2,n*2+1,i+1)&&(l|=1),Hj(o,m,e*2+1,n*2+1,i+1)&&(l|=2))}return l}function Hj(t,e,n,i,o){let a=t.tileXYToRectangle(n,i,o);return c(Gt.intersection(a,e,Ukt))}QU.prototype.getTileDataAvailable=function(t,e,n){};QU.prototype.loadTileDataAvailability=function(t,e,n){};var plt=QU;var bPo=b(W(),1);function vT(t){t=f(t,f.EMPTY_OBJECT),this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=t.clock,this.element=t.element,this.epoch=f(t.epoch,be.MINIMUM_VALUE),this.tolerance=f(t.tolerance,1),this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(vT.prototype,{clock:{get:function(){return this._clock},set:function(t){let e=this._clock;e!==t&&(c(e)&&(this._clockSubscription(),this._clockSubscription=void 0),c(t)&&(this._clockSubscription=t.onTick.addEventListener(vT.prototype._onTick,this)),this._clock=t)}},element:{get:function(){return this._element},set:function(t){let e=this._element;e!==t&&(c(e)&&e.removeEventListener("seeked",this._seekFunction,!1),c(t)&&(this._seeking=!1,this._seekFunction=JLe(this),t.addEventListener("seeked",this._seekFunction,!1)),this._element=t,this._seeking=!1,this._firstTickAfterSeek=!1)}}});vT.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,At(this)};vT.prototype.isDestroyed=function(){return!1};vT.prototype._trySetPlaybackRate=function(t){if(this._lastPlaybackRate===t.multiplier)return;let e=this._element;try{e.playbackRate=t.multiplier}catch{e.playbackRate=0}this._lastPlaybackRate=t.multiplier};vT.prototype._onTick=function(t){let e=this._element;if(!c(e)||e.readyState<2)return;let n=e.paused,i=t.shouldAnimate;if(i===n&&(i?e.play():e.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(t);let o=t.currentTime,a=f(this.epoch,be.MINIMUM_VALUE),s=rt.secondsDifference(o,a),l=e.duration,r,d=e.currentTime;e.loop?(s=s%l,s<0&&(s=l-s),r=s):s>l?r=l:s<0?r=0:r=s;let m=i?f(this.tolerance,1):.001;Math.abs(r-d)>m&&(this._seeking=!0,e.currentTime=r)};function JLe(t){return function(){t._seeking=!1,t._firstTickAfterSeek=!0}}var Vlt=vT;var fPo=b(W(),1),LLe={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},ult=Object.freeze(LLe);var APo=b(W(),1);function MLe(t){return t=f(t,f.EMPTY_OBJECT),HT.fromIonAssetId(2426648,{requestVertexNormals:f(t.requestVertexNormals,!1)})}var B5=MLe;var EPo=b(W(),1);function _Le(t){return t=f(t,f.EMPTY_OBJECT),HT.fromIonAssetId(1,{requestVertexNormals:f(t.requestVertexNormals,!1),requestWaterMask:f(t.requestWaterMask,!1)})}var KT=_Le;var NPo=b(W(),1);var DLe=1953029805,OLe=2917034100;function Zlt(t,e){if(Zlt.passThroughDataForTesting)return e;let n=t.byteLength;if(n===0||n%4!==0)throw new Tt("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(e),o=i.getUint32(0,!0);if(o===DLe||o===OLe)return e;let a=new DataView(t),s=0,l=e.byteLength,r=l-l%8,d=n,m,h=8;for(;s<r;)for(h=(h+8)%24,m=h;s<r&&m<d;)i.setUint32(s,i.getUint32(s,!0)^a.getUint32(m,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^a.getUint32(m+4,!0),!0),s+=8,m+=24;if(s<l)for(m>=d&&(h=(h+8)%24,m=h);s<l;)i.setUint8(s,i.getUint8(s)^a.getUint8(m)),s++,m++}Zlt.passThroughDataForTesting=!1;var Q5=Zlt;var YPo=b(W(),1);var HLe=new p;function wLe(t,e,n,i){let o=YG(t,e,n,i,HLe);return c(o)?o.x>0&&o.y>0&&o.z>0:!1}var Rlt=wLe;var JPo=b(W(),1);async function PLe(t,e,n,i){return c(i)||(i=!1),zLe(t,e,n,i)}function vLe(t,e,n){let i=t[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let a;return n?a=o.then(Akt(i)):a=o.then(Akt(i)).catch(jLe(i)),t.shift(),e.push(a),!0}function KLe(t){return new Promise(function(e){setTimeout(e,t)})}function blt(t,e,n){return t.length?vLe(t,e,n)?blt(t,e):KLe(100).then(()=>blt(t,e)):Promise.resolve()}function zLe(t,e,n,i){let o=t.tilingScheme,a,s=[],l={};for(a=0;a<n.length;++a){let d=o.positionToTileXY(n[a],e);if(!c(d))continue;let m=d.toString();if(!l.hasOwnProperty(m)){let h={x:d.x,y:d.y,level:e,tilingScheme:o,terrainProvider:t,positions:[]};l[m]=h,s.push(h)}l[m].positions.push(n[a])}let r=[];return blt(s,r,i).then(function(){return Promise.all(r).then(function(){return n})})}function Gkt(t,e,n){let i=e.interpolateHeight(n,t.longitude,t.latitude);return i===void 0?!1:(t.height=i,!0)}function Akt(t){let e=t.positions,n=t.tilingScheme.tileXYToRectangle(t.x,t.y,t.level);return function(i){let o=!1;for(let a=0;a<e.length;++a){let s=e[a];if(!Gkt(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:t.tilingScheme,x:t.x,y:t.y,level:t.level,throttle:!1}).then(function(){for(let a=0;a<e.length;++a){let s=e[a];Gkt(s,i,n)}}):Promise.resolve()}}function jLe(t){let e=t.positions;return function(){for(let n=0;n<e.length;++n){let i=e[n];i.height=void 0}}}var k5=PLe;var OPo=b(W(),1);var Wlt=new K;async function Skt(t,e,n){c(n)||(n=!1);let i=[],o=[],a=t.availability,s=[];for(let r=0;r<e.length;++r){let d=e[r],m=a.computeMaximumLevelAtPosition(d);if(o[r]=m,m===0){t.tilingScheme.positionToTileXY(d,1,Wlt);let u=t.loadTileDataAvailability(Wlt.x,Wlt.y,1);c(u)&&s.push(u)}let h=i[m];c(h)||(i[m]=h=[]),h.push(d)}await Promise.all(s),await Promise.all(i.map(function(r,d){if(c(r))return k5(t,d,r,n)}));let l=[];for(let r=0;r<e.length;++r){let d=e[r];a.computeMaximumLevelAtPosition(d)!==o[r]&&l.push(d)}return l.length>0&&await Skt(t,l,n),e}var zT=Skt;var wPo=b(W(),1);function qLe(t){return t<=.04045?t*.07739938080495357:Math.pow((t+.055)*.9478672985781991,2.4)}var jT=qLe;var KPo=b(W(),1);function $Le(t){switch(t){case pt.FLOAT:return"float";case pt.FLOAT_VEC2:return"vec2";case pt.FLOAT_VEC3:return"vec3";case pt.FLOAT_VEC4:return"vec4";case pt.FLOAT_MAT2:return"mat2";case pt.FLOAT_MAT3:return"mat3";case pt.FLOAT_MAT4:return"mat4";case pt.SAMPLER_2D:return"sampler2D";case pt.BOOL:return"bool"}}var flt=$Le;var jPo=b(W(),1);function tMe(t,e,n){return function(){n.apply(t,arguments),e.apply(t,arguments)}}var Y5=tMe;var nvo=b(W(),1);var eMe=new p(1,1,1);function Flt(t){t=f(t,eMe),this._dimensions=p.clone(t)}Object.defineProperties(Flt.prototype,{dimensions:{get:function(){return this._dimensions},set:function(t){p.clone(t,this._dimensions)}}});var nMe=new p;Flt.prototype.emit=function(t){let e=this._dimensions,n=p.multiplyByScalar(e,.5,nMe),i=k.randomBetween(-n.x,n.x),o=k.randomBetween(-n.y,n.y),a=k.randomBetween(-n.z,n.z);t.position=p.fromElements(i,o,a,t.position),t.velocity=p.normalize(t.position,t.velocity)};var Ult=Flt;var avo=b(W(),1);function jR(){this.featurePropertiesDirty=!1}Object.defineProperties(jR.prototype,{featuresLength:{get:function(){Ut.throwInstantiationError()}},pointsLength:{get:function(){Ut.throwInstantiationError()}},trianglesLength:{get:function(){Ut.throwInstantiationError()}},geometryByteLength:{get:function(){Ut.throwInstantiationError()}},texturesByteLength:{get:function(){Ut.throwInstantiationError()}},batchTableByteLength:{get:function(){Ut.throwInstantiationError()}},innerContents:{get:function(){Ut.throwInstantiationError()}},ready:{get:function(){Ut.throwInstantiationError()}},tileset:{get:function(){Ut.throwInstantiationError()}},tile:{get:function(){Ut.throwInstantiationError()}},url:{get:function(){Ut.throwInstantiationError()}},batchTable:{get:function(){Ut.throwInstantiationError()}},metadata:{get:function(){Ut.throwInstantiationError()},set:function(t){Ut.throwInstantiationError()}},group:{get:function(){Ut.throwInstantiationError()},set:function(t){Ut.throwInstantiationError()}}});jR.prototype.hasProperty=function(t,e){Ut.throwInstantiationError()};jR.prototype.getFeature=function(t){Ut.throwInstantiationError()};jR.prototype.applyDebugSettings=function(t,e){Ut.throwInstantiationError()};jR.prototype.applyStyle=function(t){Ut.throwInstantiationError()};jR.prototype.update=function(t,e){Ut.throwInstantiationError()};jR.prototype.pick=function(t,e,n){Ut.throwInstantiationError()};jR.prototype.isDestroyed=function(){Ut.throwInstantiationError()};jR.prototype.destroy=function(){Ut.throwInstantiationError()};var Glt=jR;var bvo=b(W(),1);var cvo=b(W(),1);function cN(t,e){this._conditionsExpression=Re(t,!0),this._conditions=t.conditions,this._runtimeConditions=void 0,oMe(this,e)}Object.defineProperties(cN.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function iMe(t,e){this.condition=t,this.expression=e}function oMe(t,e){let n=[],i=t._conditions;if(!c(i))return;let o=i.length;for(let a=0;a<o;++a){let s=i[a],l=String(s[0]),r=String(s[1]);n.push(new iMe(new xp(l,e),new xp(r,e)))}t._runtimeConditions=n}cN.prototype.evaluate=function(t,e){let n=this._runtimeConditions;if(!c(n))return;let i=n.length;for(let o=0;o<i;++o){let a=n[o];if(a.condition.evaluate(t))return a.expression.evaluate(t,e)}};cN.prototype.evaluateColor=function(t,e){let n=this._runtimeConditions;if(!c(n))return;let i=n.length;for(let o=0;o<i;++o){let a=n[o];if(a.condition.evaluate(t))return a.expression.evaluateColor(t,e)}};cN.prototype.getShaderFunction=function(t,e,n,i){let o=this._runtimeConditions;if(!c(o)||o.length===0)return;let a="",s=o.length;for(let l=0;l<s;++l){let r=o[l],d=r.condition.getShaderExpression(e,n),m=r.expression.getShaderExpression(e,n);a+=` ${l===0?"if":"else if"} (${d}) { return ${m}; } @@ -15307,7 +15307,7 @@ ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS { ${a} return ${i}(1.0); } -`,a};cN.prototype.getVariables=function(){let t=[],e=this._runtimeConditions;if(!c(e)||e.length===0)return t;let n=e.length;for(let i=0;i<n;++i){let o=e[i];t.push.apply(t,o.condition.getVariables()),t.push.apply(t,o.expression.getVariables())}return t=t.filter(function(i,o,a){return a.indexOf(i)===o}),t};var x5=cN;function kU(t){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,aMe(this,t)}function aMe(t,e){e=f(be(e,!0),t._style),t._style=e,t.show=e.show,t.color=e.color,t.pointSize=e.pointSize,t.pointOutlineColor=e.pointOutlineColor,t.pointOutlineWidth=e.pointOutlineWidth,t.labelColor=e.labelColor,t.labelOutlineColor=e.labelOutlineColor,t.labelOutlineWidth=e.labelOutlineWidth,t.labelStyle=e.labelStyle,t.font=e.font,t.labelText=e.labelText,t.backgroundColor=e.backgroundColor,t.backgroundPadding=e.backgroundPadding,t.backgroundEnabled=e.backgroundEnabled,t.scaleByDistance=e.scaleByDistance,t.translucencyByDistance=e.translucencyByDistance,t.distanceDisplayCondition=e.distanceDisplayCondition,t.heightOffset=e.heightOffset,t.anchorLineEnabled=e.anchorLineEnabled,t.anchorLineColor=e.anchorLineColor,t.image=e.image,t.disableDepthTestDistance=e.disableDepthTestDistance,t.horizontalOrigin=e.horizontalOrigin,t.verticalOrigin=e.verticalOrigin,t.labelHorizontalOrigin=e.labelHorizontalOrigin,t.labelVerticalOrigin=e.labelVerticalOrigin;let n={};if(c(e.meta)){let i=e.defines,o=f(e.meta,f.EMPTY_OBJECT);for(let a in o)o.hasOwnProperty(a)&&(n[a]=new xp(o[a],i))}t._meta=n,t._ready=!0}function Ts(t,e){let n=f(t._style,f.EMPTY_OBJECT).defines;if(c(e)){if(typeof e=="boolean"||typeof e=="number")return new xp(String(e));if(typeof e=="string")return new xp(e,n);if(c(e.conditions))return new x5(e,n)}else return;return e}function Ss(t){if(c(t)){if(c(t.expression))return t.expression;if(c(t.conditionsExpression))return be(t.conditionsExpression,!0)}else return;return t}Object.defineProperties(kU.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(t){this._show=Ts(this,t),this._style.show=Ss(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(t){this._color=Ts(this,t),this._style.color=Ss(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(t){this._pointSize=Ts(this,t),this._style.pointSize=Ss(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(t){this._pointOutlineColor=Ts(this,t),this._style.pointOutlineColor=Ss(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(t){this._pointOutlineWidth=Ts(this,t),this._style.pointOutlineWidth=Ss(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(t){this._labelColor=Ts(this,t),this._style.labelColor=Ss(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(t){this._labelOutlineColor=Ts(this,t),this._style.labelOutlineColor=Ss(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(t){this._labelOutlineWidth=Ts(this,t),this._style.labelOutlineWidth=Ss(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(t){this._font=Ts(this,t),this._style.font=Ss(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(t){this._labelStyle=Ts(this,t),this._style.labelStyle=Ss(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(t){this._labelText=Ts(this,t),this._style.labelText=Ss(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(t){this._backgroundColor=Ts(this,t),this._style.backgroundColor=Ss(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(t){this._backgroundPadding=Ts(this,t),this._style.backgroundPadding=Ss(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(t){this._backgroundEnabled=Ts(this,t),this._style.backgroundEnabled=Ss(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(t){this._scaleByDistance=Ts(this,t),this._style.scaleByDistance=Ss(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(t){this._translucencyByDistance=Ts(this,t),this._style.translucencyByDistance=Ss(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){this._distanceDisplayCondition=Ts(this,t),this._style.distanceDisplayCondition=Ss(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(t){this._heightOffset=Ts(this,t),this._style.heightOffset=Ss(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(t){this._anchorLineEnabled=Ts(this,t),this._style.anchorLineEnabled=Ss(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(t){this._anchorLineColor=Ts(this,t),this._style.anchorLineColor=Ss(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(t){this._image=Ts(this,t),this._style.image=Ss(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(t){this._disableDepthTestDistance=Ts(this,t),this._style.disableDepthTestDistance=Ss(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(t){this._horizontalOrigin=Ts(this,t),this._style.horizontalOrigin=Ss(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(t){this._verticalOrigin=Ts(this,t),this._style.verticalOrigin=Ss(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(t){this._labelHorizontalOrigin=Ts(this,t),this._style.labelHorizontalOrigin=Ss(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(t){this._labelVerticalOrigin=Ts(this,t),this._style.labelVerticalOrigin=Ss(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(t){this._meta=t}}});kU.fromUrl=function(t){return te.createIfNeeded(t).fetchJson(t).then(function(n){return new kU(n)})};kU.prototype.getColorShaderFunction=function(t,e,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,c(this.color)&&c(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(t,e,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};kU.prototype.getShowShaderFunction=function(t,e,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,c(this.show)&&c(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(t,e,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};kU.prototype.getPointSizeShaderFunction=function(t,e,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,c(this.pointSize)&&c(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(t,e,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};kU.prototype.getVariables=function(){let t=[];return c(this.color)&&c(this.color.getVariables)&&t.push.apply(t,this.color.getVariables()),c(this.show)&&c(this.show.getVariables)&&t.push.apply(t,this.show.getVariables()),c(this.pointSize)&&c(this.pointSize.getVariables)&&t.push.apply(t,this.pointSize.getVariables()),t=t.filter(function(e,n,i){return i.indexOf(e)===n}),t};var qS=kU;var jvo=R(W(),1);var Uvo=R(W(),1);function X5(t){t=f(t,f.EMPTY_OBJECT),this._maximumSubtreeCount=f(t.maximumSubtreeCount,0),this._subtreeRequestCounter=0,this._queue=new xS({comparator:X5.comparator})}X5.prototype.addSubtree=function(t){let e=new sMe(t,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(e);let n=t.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==e;)this._queue.removeMinimum()};X5.prototype.find=function(t){let e=this._queue,n=e.internalArray,i=e.length;for(let o=0;o<i;o++){let a=n[o],l=a.subtree.implicitCoordinates;if(t.isEqual(l))return a.subtree}};X5.comparator=function(t,e){let n=t.subtree.implicitCoordinates,i=e.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:t.stamp-e.stamp};function sMe(t,e){this.subtree=t,this.stamp=e}var J5=X5;var gvo=R(W(),1);function wj(t){this._resource=t,this._metadataTable=void 0}Object.defineProperties(wj.prototype,{metadataTable:{get:function(){return this._metadataTable}}});wj.fromJson=async function(t,e,n,i){let o;c(e)?o={json:e,binary:void 0}:o=rMe(n);let a=await lMe(t,o.json,o.binary),s={},l=o.json.bufferViews.length;for(let h=0;h<l;++h){let Z=o.json.bufferViews[h],b=Z.byteOffset,u=b+Z.byteLength,U=a[Z.buffer].subarray(b,u);s[h]=U}let r=o.json.voxelTable,d=o.json.propertyTables[r],m=new wj(t);return m._metadataTable=new Bm({count:d.count,properties:d.properties,class:i.classes[d.class],bufferViews:s}),m};function lMe(t,e,n){let i=e.buffers.length,o=new Array(i);for(let a=0;a<i;a++){let s=e.buffers[a];if(c(s.uri)){let r=t.getDerivedResource({url:s.uri});o[a]=r.fetchArrayBuffer().then(function(d){return new Uint8Array(d)})}else o[a]=Promise.resolve(n)}return Promise.all(o)}function rMe(t){let n=new DataView(t.buffer,t.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let a=n.getUint32(i,!0);i+=8;let s=ts(t,i,o);i+=o;let l=t.subarray(i,i+a);return{json:s,binary:l}}var L5=wj;function Pj(t){t=f(t,f.EMPTY_OBJECT),this.shapeTransform=void 0,this.globalTransform=void 0,this.shape=void 0,this.minBounds=void 0,this.maxBounds=void 0,this.dimensions=void 0,this.paddingBefore=void 0,this.paddingAfter=void 0,this.names=void 0,this.types=void 0,this.componentTypes=void 0,this.minimumValues=void 0,this.maximumValues=void 0,this.maximumTileCount=void 0,this._implicitTileset=void 0,this._subtreeCache=new J5}Pj.fromUrl=async function(t){let e=te.createIfNeeded(t),n=await e.fetchJson();cMe(n);let i=ZMe(n,e);await i.load();let o=n.root,a=o.content.extensions["3DTILES_content_voxels"],s=a.class,l=co(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,r=i.schema,d=new $A({metadataJson:l,schema:r}),m=new Pj;VMe(m,d,s);let h=new eT(e,o,r),{shape:Z,minBounds:b,maxBounds:u,shapeTransform:F,globalTransform:U}=mMe(o);m.shape=Z,m.minBounds=b,m.maxBounds=u,m.dimensions=p.unpack(a.dimensions),m.shapeTransform=F,m.globalTransform=U,m.maximumTileCount=dMe(d);let G,A;return c(a.padding)&&(G=p.unpack(a.padding.before),A=p.unpack(a.padding.after)),m.paddingBefore=G,m.paddingAfter=A,m._implicitTileset=h,jo.unload(i),m};function dMe(t){if(c(t.tileset))return t.tileset.getPropertyBySemantic(GA.TILESET_TILE_COUNT)}function cMe(t){let e=t.root;if(!c(e.content))throw new St("Root must have content");if(!co(e.content,"3DTILES_content_voxels"))throw new St("Root tile content must have 3DTILES_content_voxels extension");if(!co(e,"3DTILES_implicit_tiling")&&!c(e.implicitTiling))throw new St("Root tile must have implicit tiling");if(!c(t.schema)&&!c(t.schemaUri)&&!co(t,"3DTILES_metadata"))throw new St("Tileset must have a metadata schema")}function mMe(t){let e=t.boundingVolume,n;if(c(t.transform)?n=L.unpack(t.transform):n=L.clone(L.IDENTITY),c(e.box))return pMe(e.box,n);if(c(e.region))return hMe(e.region);if(co(e,"3DTILES_bounding_volume_cylinder"))return uMe(e.extensions["3DTILES_bounding_volume_cylinder"].cylinder,n);throw new St("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function hMe(t){let e=t[0],n=t[1],i=t[2],o=t[3],a=t[4],s=t[5],l=L.fromScale(mt.WGS84.radii),r=new p(e,n,a),d=new p(i,o,s);return{shape:_o.ELLIPSOID,minBounds:r,maxBounds:d,shapeTransform:l,globalTransform:L.clone(L.IDENTITY)}}function pMe(t,e){let n=ci.unpack(t),i=L.fromRotationTranslation(n.halfAxes,n.center);return{shape:_o.BOX,minBounds:p.clone(Pb.DefaultMinBounds),maxBounds:p.clone(Pb.DefaultMaxBounds),shapeTransform:i,globalTransform:e}}function uMe(t,e){let n=ci.unpack(t),i=L.fromRotationTranslation(n.halfAxes,n.center);return{shape:_o.CYLINDER,minBounds:p.clone(vb.DefaultMinBounds),maxBounds:p.clone(vb.DefaultMaxBounds),shapeTransform:i,globalTransform:e}}function ZMe(t,e){let{schemaUri:n,schema:i}=t;return c(n)?jo.getSchemaLoader({resource:e.getDerivedResource({url:n})}):jo.getSchemaLoader({schema:i})}function VMe(t,e,n){let{schema:i,statistics:o}=e,a=o?.classes[n],s=i.classes[n].properties,l=Object.entries(s).map(([h,Z])=>{let{type:b,componentType:u}=Z,F=a?.properties[h].min,U=a?.properties[h].max,G=Nn.getComponentCount(b),A=S2t(F,G),T=S2t(U,G);return{id:h,type:b,componentType:u,minValue:A,maxValue:T}});t.names=l.map(h=>h.id),t.types=l.map(h=>h.type),t.componentTypes=l.map(h=>h.componentType);let r=l.map(h=>h.minValue),d=l.map(h=>h.maxValue),m=r.some(c);t.minimumValues=m?r:void 0,t.maximumValues=m?d:void 0}function S2t(t,e){if(!c(t))return;let n=Array.isArray(t)?t:[t];return Array.from({length:e},(i,o)=>n[o])}async function bMe(t,e){let n=t.contentUriTemplates[0].getDerivedResource({templateValues:e.getTemplateValues()}),i=t.baseResource.getDerivedResource({url:n.url}),o=await i.fetchArrayBuffer(),a=db(o);return await L5.fromJson(i,a.jsonPayload,a.binaryPayload,t.metadataSchema)}async function RMe(t,e){let n=t._implicitTileset,i=t._subtreeCache,o=i.find(e);if(c(o))return o;let a=n.subtreeUriTemplate.getDerivedResource({templateValues:e.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:a.url}),l=await s.fetchArrayBuffer();if(o=i.find(e),c(o))return o;let r=db(l);return o=await UA.fromSubtreeJson(s,r.jsonPayload,r.binaryPayload,n,e),i.addSubtree(o),o}Pj.prototype.requestData=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.tileLevel,0),n=f(t.tileX,0),i=f(t.tileY,0),o=f(t.tileZ,0);if(f(t.keyframe,0)!==0)return;let s=this._implicitTileset,l=this.names,r=new nT({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:e,x:n,y:i,z:o}),d=r.isSubtreeRoot()&&r.level>0,m=d?r.getParentSubtreeCoordinates():r.getSubtreeCoordinates();return RMe(this,m).then(function(Z){return(d?Z.childSubtreeIsAvailableAtCoordinates(r):Z.tileIsAvailableAtCoordinates(r))?bMe(s,r):Promise.reject("Tile is not available")}).then(function(Z){return l.map(function(b){return Z.metadataTable.getPropertyTypedArray(b)})})};var Alt=Pj;var nKo=R(W(),1);function Tlt(t){t=f(t,1),this._radius=f(t,1)}Object.defineProperties(Tlt.prototype,{radius:{get:function(){return this._radius},set:function(t){this._radius=t}}});Tlt.prototype.emit=function(t){let e=k.randomBetween(0,k.TWO_PI),n=k.randomBetween(0,this._radius),i=n*Math.cos(e),o=n*Math.sin(e),a=0;t.position=p.fromElements(i,o,a,t.position),t.velocity=p.clone(p.UNIT_Z,t.velocity)};var M5=Tlt;var wKo=R(W(),1);var oKo=R(W(),1),Slt={CUMULUS:0};Slt.validate=function(t){return t===Slt.CUMULUS};var mN=Object.freeze(Slt);var mKo=R(W(),1);function ZV(t,e){if(t=f(t,f.EMPTY_OBJECT),this._show=f(t.show,!0),this._position=p.clone(f(t.position,p.ZERO)),!c(t.scale)&&c(t.maximumSize))this._maximumSize=p.clone(t.maximumSize),this._scale=new K(this._maximumSize.x,this._maximumSize.y);else{this._scale=K.clone(f(t.scale,new K(20,12)));let n=new p(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=p.clone(f(t.maximumSize,n))}this._slice=f(t.slice,-1),this._color=v.clone(f(t.color,v.WHITE)),this._brightness=f(t.brightness,1),this._cloudCollection=e,this._index=-1}var WMe=ZV.SHOW_INDEX=0,fMe=ZV.POSITION_INDEX=1,FMe=ZV.SCALE_INDEX=2,UMe=ZV.MAXIMUM_SIZE_INDEX=3,GMe=ZV.SLICE_INDEX=4,AMe=ZV.BRIGHTNESS_INDEX=5,TMe=ZV.COLOR_INDEX=6;ZV.NUMBER_OF_PROPERTIES=7;function $S(t,e){let n=t._cloudCollection;c(n)&&(n._updateCloud(t,e),t._dirty=!0)}Object.defineProperties(ZV.prototype,{show:{get:function(){return this._show},set:function(t){this._show!==t&&(this._show=t,$S(this,WMe))}},position:{get:function(){return this._position},set:function(t){let e=this._position;p.equals(e,t)||(p.clone(t,e),$S(this,fMe))}},scale:{get:function(){return this._scale},set:function(t){let e=this._scale;K.equals(e,t)||(K.clone(t,e),$S(this,FMe))}},maximumSize:{get:function(){return this._maximumSize},set:function(t){let e=this._maximumSize;p.equals(e,t)||(p.clone(t,e),$S(this,UMe))}},color:{get:function(){return this._color},set:function(t){let e=this._color;v.equals(e,t)||(v.clone(t,e),$S(this,TMe))}},slice:{get:function(){return this._slice},set:function(t){this._slice!==t&&(this._slice=t,$S(this,GMe))}},brightness:{get:function(){return this._brightness},set:function(t){this._brightness!==t&&(this._brightness=t,$S(this,AMe))}}});ZV.prototype._destroy=function(){this._cloudCollection=void 0};var hp=ZV;var pp,vj=new p,SMe={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},gMe={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},EMe=hp.SHOW_INDEX,CMe=hp.POSITION_INDEX,IMe=hp.SCALE_INDEX,NMe=hp.MAXIMUM_SIZE_INDEX,yMe=hp.SLICE_INDEX,BMe=hp.BRIGHTNESS_INDEX,QMe=hp.NUMBER_OF_PROPERTIES,kMe=hp.COLOR_INDEX;function VV(t){t=f(t,f.EMPTY_OBJECT),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(QMe),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=f(t.noiseDetail,16),this.noiseOffset=p.clone(f(t.noiseOffset,p.ZERO)),this._loading=!1,this._ready=!1;let e=this;this._uniforms={u_noiseTexture:function(){return e._noiseTexture},u_noiseTextureDimensions:g2t(e),u_noiseDetail:function(){return e.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=f(t.show,!0),this._colorCommands=[],this.debugBillboards=f(t.debugBillboards,!1),this._compiledDebugBillboards=!1,this.debugEllipsoids=f(t.debugEllipsoids,!1),this._compiledDebugEllipsoids=!1}function g2t(t){return function(){return vj.x=t._textureSliceWidth,vj.y=t._noiseTextureRows,vj.z=1/t._noiseTextureRows,vj}}Object.defineProperties(VV.prototype,{length:{get:function(){return Elt(this),this._clouds.length}}});function E2t(t){let e=t.length;for(let n=0;n<e;++n)t[n]&&t[n]._destroy()}VV.prototype.add=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.cloudType,mN.CUMULUS),n;return e===mN.CUMULUS&&(n=new hp(t,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};VV.prototype.remove=function(t){return this.contains(t)?(this._clouds[t._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,t._destroy(),!0):!1};VV.prototype.removeAll=function(){E2t(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function Elt(t){if(t._cloudsRemoved){t._cloudsRemoved=!1;let e=[],n=t._clouds,i=n.length;for(let o=0,a=0;o<i;++o){let s=n[o];c(s)&&(n._index=a++,e.push(s))}t._clouds=e}}VV.prototype._updateCloud=function(t,e){t._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=t),++this._propertiesChanged[e]};VV.prototype.contains=function(t){return c(t)&&t._cloudCollection===this};VV.prototype.get=function(t){return Elt(this),this._clouds[t]};var YMe=new Float32Array([-1,-1,1,-1,1,1,-1,1]),xMe=new Uint16Array([0,1,2,0,2,3]);function XMe(t){let e=we.createVertexBuffer({context:t,typedArray:YMe,usage:ce.STATIC_DRAW}),n=we.createIndexBuffer({context:t,typedArray:xMe,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:e,componentsPerAttribute:2,componentDatatype:it.FLOAT}];return new Ki({context:t,attributes:i,indexBuffer:n})}var Clt;function JMe(t){let n=t.cache.cloudCollection_indexBufferBatched;if(c(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let a=0,s=0;a<i;a+=6,s+=4)o[a]=s,o[a+1]=s+1,o[a+2]=s+2,o[a+3]=s,o[a+4]=s+2,o[a+5]=s+3;return n=we.createIndexBuffer({context:t,typedArray:o,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,t.cache.cloudCollection_indexBufferBatched=n,n}function LMe(t){let e=t.cache.cloudCollection_indexBufferInstanced;return c(e)||(e=we.createIndexBuffer({context:t,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT}),e.vertexArrayDestroyable=!1,t.cache.cloudCollection_indexBufferInstanced=e),e}function MMe(t){let e=t.cache.cloudCollection_vertexBufferInstanced;return c(e)||(e=we.createVertexBuffer({context:t,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:ce.STATIC_DRAW}),e.vertexArrayDestroyable=!1,t.cache.cloudCollection_vertexBufferInstanced=e),e}function _Me(t,e,n){let i=[{index:pp.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.packedAttribute0,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.packedAttribute1,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.color,componentsPerAttribute:4,componentDatatype:it.UNSIGNED_BYTE,normalize:!0,usage:ce.STATIC_DRAW}];n&&i.push({index:pp.direction,componentsPerAttribute:2,componentDatatype:it.FLOAT,vertexBuffer:MMe(t)});let o=n?e:4*e;return new CR(t,i,o,n)}var glt=new Mi;function C2t(t,e,n,i){let o,a=n[pp.positionHighAndScaleX],s=n[pp.positionLowAndScaleY],l=i.position;Mi.fromCartesian(l,glt);let r=i.scale,d=glt.high,m=glt.low;t._instanced?(o=i._index,a(o,d.x,d.y,d.z,r.x),s(o,m.x,m.y,m.z,r.y)):(o=i._index*4,a(o+0,d.x,d.y,d.z,r.x),a(o+1,d.x,d.y,d.z,r.x),a(o+2,d.x,d.y,d.z,r.x),a(o+3,d.x,d.y,d.z,r.x),s(o+0,m.x,m.y,m.z,r.y),s(o+1,m.x,m.y,m.z,r.y),s(o+2,m.x,m.y,m.z,r.y),s(o+3,m.x,m.y,m.z,r.y))}function I2t(t,e,n,i){let o,a=n[pp.packedAttribute0],s=i.show,l=i.brightness;t._instanced?(o=i._index,a(o,s,l,0,0)):(o=i._index*4,a(o+0,s,l,0,0),a(o+1,s,l,1,0),a(o+2,s,l,1,1),a(o+3,s,l,0,1))}function N2t(t,e,n,i){let o,a=n[pp.packedAttribute1],s=i.maximumSize,l=i.slice;t._instanced?(o=i._index,a(o,s.x,s.y,s.z,l)):(o=i._index*4,a(o+0,s.x,s.y,s.z,l),a(o+1,s.x,s.y,s.z,l),a(o+2,s.x,s.y,s.z,l),a(o+3,s.x,s.y,s.z,l))}function y2t(t,e,n,i){let o,a=n[pp.color],s=i.color,l=v.floatToByte(s.red),r=v.floatToByte(s.green),d=v.floatToByte(s.blue),m=v.floatToByte(s.alpha);t._instanced?(o=i._index,a(o,l,r,d,m)):(o=i._index*4,a(o+0,l,r,d,m),a(o+1,l,r,d,m),a(o+2,l,r,d,m),a(o+3,l,r,d,m))}function DMe(t,e,n,i){C2t(t,e,n,i),I2t(t,e,n,i),N2t(t,e,n,i),y2t(t,e,n,i)}function OMe(t,e,n,i){let o=t,a=o._textureSliceWidth,s=o._noiseTextureRows,l=e.context;o._vaNoise=XMe(l),o._spNoise=xn.fromCache({context:l,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let r=o.noiseDetail,d=o.noiseOffset;o._noiseTexture=new hn({context:l,width:a*a/s,height:a*s,pixelDatatype:Ue.UNSIGNED_BYTE,pixelFormat:Ye.RGBA,sampler:new Hn({wrapS:Vi.REPEAT,wrapT:Vi.REPEAT,minificationFilter:On.NEAREST,magnificationFilter:bo.NEAREST})});let m=new Wm({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:g2t(o),u_noiseDetail:function(){return r},u_noiseOffset:function(){return d}},persists:!1,owner:t,postExecute:function(h){o._ready=!0,o._loading=!1}});e.commandList.push(m),o._loading=!0}function HMe(t,e){let n=t,i=e.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=t._clouds,a=o.length;if(a>0){n._vaf=_Me(i,a,n._instanced);let s=n._vaf.writers,l;for(l=0;l<a;++l){let r=o[l];DMe(t,e,s,r)}n._vaf.commit(Clt(i))}}var wMe=[];function PMe(t,e){let n=e.context,i=t,a=i._clouds.length,s=i._cloudsToUpdate,l=i._cloudsToUpdateIndex,r=i._propertiesChanged,d=wMe;d.length=0,(r[CMe]||r[IMe])&&d.push(C2t),(r[EMe]||r[BMe])&&d.push(I2t),(r[NMe]||r[yMe])&&d.push(N2t),r[kMe]&&d.push(y2t);let m=d.length,h=i._vaf.writers,Z,b,u;if(l/a>.1){for(Z=0;Z<l;++Z)for(b=s[Z],b._dirty=!1,u=0;u<m;++u)d[u](t,e,h,b);i._vaf.commit(Clt(n))}else{for(Z=0;Z<l;++Z){for(b=s[Z],b._dirty=!1,u=0;u<m;++u)d[u](t,e,h,b);i._instanced?i._vaf.subCommit(b._index,1):i._vaf.subCommit(b._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function vMe(t,e,n,i){let o=e.context,a=t,s=new Ve({defines:[],sources:[n]});a._instanced&&s.defines.push("INSTANCED");let l=new Ve({defines:[],sources:[i]});a.debugBillboards&&l.defines.push("DEBUG_BILLBOARDS"),a.debugEllipsoids&&l.defines.push("DEBUG_ELLIPSOIDS"),a._sp=xn.replaceCache({context:o,shaderProgram:a._sp,vertexShaderSource:s,fragmentShaderSource:l,attributeLocations:pp}),a._rs=he.fromCache({depthTest:{enabled:!0,func:pt.LESS},depthMask:!1,blending:Pn.ALPHA_BLEND}),a._spCreated=!0,a._compiledDebugBillboards=a.debugBillboards,a._compiledDebugEllipsoids=a.debugEllipsoids}function KMe(t,e){let n=t,i=e.passes,o=n._uniforms,a=e.commandList;if(i.render){let s=n._colorCommands,l=n._vaf.va,r=l.length;s.length=r;for(let d=0;d<r;d++){let m=s[d];c(m)||(m=s[d]=new Ee),m.pass=Pt.TRANSLUCENT,m.owner=t,m.uniformMap=o,m.count=l[d].indicesCount,m.vertexArray=l[d].va,m.shaderProgram=n._sp,m.renderState=n._rs,n._instanced&&(m.count=6,m.instanceCount=n._clouds.length),a.push(m)}}}VV.prototype.update=function(t){if(Elt(this),!this.show)return;let e=this.debugBillboards||this.debugEllipsoids;this._ready=e?!0:c(this._noiseTexture),!this._ready&&!this._loading&&!e&&OMe(this,t,G5,U5),this._instanced=t.context.instancedArrays,pp=this._instanced?gMe:SMe,Clt=this._instanced?LMe:JMe;let i=this._clouds.length,o=this._cloudsToUpdate,a=this._cloudsToUpdateIndex;this._createVertexArray?HMe(this,t):a>0&&PMe(this,t),a>i*1.5&&(o.length=i),!(!c(this._vaf)||!c(this._vaf.va)||!this._ready&!e)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&vMe(this,t,F5,f5),KMe(this,t))};VV.prototype.isDestroyed=function(){return!1};VV.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),E2t(this._clouds),At(this)};var Ilt=VV;var jKo=R(W(),1);var zMe=k.toRadians(30);function Nlt(t){this._angle=f(t,zMe)}Object.defineProperties(Nlt.prototype,{angle:{get:function(){return this._angle},set:function(t){this._angle=t}}});Nlt.prototype.emit=function(t){let e=Math.tan(this._angle),n=k.randomBetween(0,k.TWO_PI),i=k.randomBetween(0,e),o=i*Math.cos(n),a=i*Math.sin(n),s=1;t.velocity=p.fromElements(o,a,s,t.velocity),p.normalize(t.velocity,t.velocity),t.position=p.clone(p.ZERO,t.position)};var ylt=Nlt;var n3o=R(W(),1);function _5(t){t=f(t,f.EMPTY_OBJECT);let e=t.attributeName,n=t.perInstanceAttribute;c(n)||(n=!1);let i=f(t.glslDatatype,"vec3"),o=`v_${e}`,a;if(e==="normal"||e==="tangent"||e==="bitangent")a=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`,a};cN.prototype.getVariables=function(){let t=[],e=this._runtimeConditions;if(!c(e)||e.length===0)return t;let n=e.length;for(let i=0;i<n;++i){let o=e[i];t.push.apply(t,o.condition.getVariables()),t.push.apply(t,o.expression.getVariables())}return t=t.filter(function(i,o,a){return a.indexOf(i)===o}),t};var x5=cN;function kU(t){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,aMe(this,t)}function aMe(t,e){e=f(Re(e,!0),t._style),t._style=e,t.show=e.show,t.color=e.color,t.pointSize=e.pointSize,t.pointOutlineColor=e.pointOutlineColor,t.pointOutlineWidth=e.pointOutlineWidth,t.labelColor=e.labelColor,t.labelOutlineColor=e.labelOutlineColor,t.labelOutlineWidth=e.labelOutlineWidth,t.labelStyle=e.labelStyle,t.font=e.font,t.labelText=e.labelText,t.backgroundColor=e.backgroundColor,t.backgroundPadding=e.backgroundPadding,t.backgroundEnabled=e.backgroundEnabled,t.scaleByDistance=e.scaleByDistance,t.translucencyByDistance=e.translucencyByDistance,t.distanceDisplayCondition=e.distanceDisplayCondition,t.heightOffset=e.heightOffset,t.anchorLineEnabled=e.anchorLineEnabled,t.anchorLineColor=e.anchorLineColor,t.image=e.image,t.disableDepthTestDistance=e.disableDepthTestDistance,t.horizontalOrigin=e.horizontalOrigin,t.verticalOrigin=e.verticalOrigin,t.labelHorizontalOrigin=e.labelHorizontalOrigin,t.labelVerticalOrigin=e.labelVerticalOrigin;let n={};if(c(e.meta)){let i=e.defines,o=f(e.meta,f.EMPTY_OBJECT);for(let a in o)o.hasOwnProperty(a)&&(n[a]=new xp(o[a],i))}t._meta=n,t._ready=!0}function Ss(t,e){let n=f(t._style,f.EMPTY_OBJECT).defines;if(c(e)){if(typeof e=="boolean"||typeof e=="number")return new xp(String(e));if(typeof e=="string")return new xp(e,n);if(c(e.conditions))return new x5(e,n)}else return;return e}function Ts(t){if(c(t)){if(c(t.expression))return t.expression;if(c(t.conditionsExpression))return Re(t.conditionsExpression,!0)}else return;return t}Object.defineProperties(kU.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(t){this._show=Ss(this,t),this._style.show=Ts(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(t){this._color=Ss(this,t),this._style.color=Ts(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(t){this._pointSize=Ss(this,t),this._style.pointSize=Ts(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(t){this._pointOutlineColor=Ss(this,t),this._style.pointOutlineColor=Ts(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(t){this._pointOutlineWidth=Ss(this,t),this._style.pointOutlineWidth=Ts(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(t){this._labelColor=Ss(this,t),this._style.labelColor=Ts(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(t){this._labelOutlineColor=Ss(this,t),this._style.labelOutlineColor=Ts(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(t){this._labelOutlineWidth=Ss(this,t),this._style.labelOutlineWidth=Ts(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(t){this._font=Ss(this,t),this._style.font=Ts(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(t){this._labelStyle=Ss(this,t),this._style.labelStyle=Ts(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(t){this._labelText=Ss(this,t),this._style.labelText=Ts(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(t){this._backgroundColor=Ss(this,t),this._style.backgroundColor=Ts(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(t){this._backgroundPadding=Ss(this,t),this._style.backgroundPadding=Ts(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(t){this._backgroundEnabled=Ss(this,t),this._style.backgroundEnabled=Ts(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(t){this._scaleByDistance=Ss(this,t),this._style.scaleByDistance=Ts(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(t){this._translucencyByDistance=Ss(this,t),this._style.translucencyByDistance=Ts(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(t){this._distanceDisplayCondition=Ss(this,t),this._style.distanceDisplayCondition=Ts(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(t){this._heightOffset=Ss(this,t),this._style.heightOffset=Ts(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(t){this._anchorLineEnabled=Ss(this,t),this._style.anchorLineEnabled=Ts(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(t){this._anchorLineColor=Ss(this,t),this._style.anchorLineColor=Ts(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(t){this._image=Ss(this,t),this._style.image=Ts(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(t){this._disableDepthTestDistance=Ss(this,t),this._style.disableDepthTestDistance=Ts(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(t){this._horizontalOrigin=Ss(this,t),this._style.horizontalOrigin=Ts(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(t){this._verticalOrigin=Ss(this,t),this._style.verticalOrigin=Ts(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(t){this._labelHorizontalOrigin=Ss(this,t),this._style.labelHorizontalOrigin=Ts(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(t){this._labelVerticalOrigin=Ss(this,t),this._style.labelVerticalOrigin=Ts(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(t){this._meta=t}}});kU.fromUrl=function(t){return te.createIfNeeded(t).fetchJson(t).then(function(n){return new kU(n)})};kU.prototype.getColorShaderFunction=function(t,e,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,c(this.color)&&c(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(t,e,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};kU.prototype.getShowShaderFunction=function(t,e,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,c(this.show)&&c(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(t,e,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};kU.prototype.getPointSizeShaderFunction=function(t,e,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,c(this.pointSize)&&c(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(t,e,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};kU.prototype.getVariables=function(){let t=[];return c(this.color)&&c(this.color.getVariables)&&t.push.apply(t,this.color.getVariables()),c(this.show)&&c(this.show.getVariables)&&t.push.apply(t,this.show.getVariables()),c(this.pointSize)&&c(this.pointSize.getVariables)&&t.push.apply(t,this.pointSize.getVariables()),t=t.filter(function(e,n,i){return i.indexOf(e)===n}),t};var qT=kU;var jvo=b(W(),1);var Uvo=b(W(),1);function X5(t){t=f(t,f.EMPTY_OBJECT),this._maximumSubtreeCount=f(t.maximumSubtreeCount,0),this._subtreeRequestCounter=0,this._queue=new xT({comparator:X5.comparator})}X5.prototype.addSubtree=function(t){let e=new sMe(t,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(e);let n=t.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==e;)this._queue.removeMinimum()};X5.prototype.find=function(t){let e=this._queue,n=e.internalArray,i=e.length;for(let o=0;o<i;o++){let a=n[o],l=a.subtree.implicitCoordinates;if(t.isEqual(l))return a.subtree}};X5.comparator=function(t,e){let n=t.subtree.implicitCoordinates,i=e.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:t.stamp-e.stamp};function sMe(t,e){this.subtree=t,this.stamp=e}var J5=X5;var gvo=b(W(),1);function wj(t){this._resource=t,this._metadataTable=void 0}Object.defineProperties(wj.prototype,{metadataTable:{get:function(){return this._metadataTable}}});wj.fromJson=async function(t,e,n,i){let o;c(e)?o={json:e,binary:void 0}:o=rMe(n);let a=await lMe(t,o.json,o.binary),s={},l=o.json.bufferViews.length;for(let h=0;h<l;++h){let u=o.json.bufferViews[h],R=u.byteOffset,V=R+u.byteLength,U=a[u.buffer].subarray(R,V);s[h]=U}let r=o.json.voxelTable,d=o.json.propertyTables[r],m=new wj(t);return m._metadataTable=new Bm({count:d.count,properties:d.properties,class:i.classes[d.class],bufferViews:s}),m};function lMe(t,e,n){let i=e.buffers.length,o=new Array(i);for(let a=0;a<i;a++){let s=e.buffers[a];if(c(s.uri)){let r=t.getDerivedResource({url:s.uri});o[a]=r.fetchArrayBuffer().then(function(d){return new Uint8Array(d)})}else o[a]=Promise.resolve(n)}return Promise.all(o)}function rMe(t){let n=new DataView(t.buffer,t.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let a=n.getUint32(i,!0);i+=8;let s=ts(t,i,o);i+=o;let l=t.subarray(i,i+a);return{json:s,binary:l}}var L5=wj;function Pj(t){t=f(t,f.EMPTY_OBJECT),this.shapeTransform=void 0,this.globalTransform=void 0,this.shape=void 0,this.minBounds=void 0,this.maxBounds=void 0,this.dimensions=void 0,this.paddingBefore=void 0,this.paddingAfter=void 0,this.names=void 0,this.types=void 0,this.componentTypes=void 0,this.minimumValues=void 0,this.maximumValues=void 0,this.maximumTileCount=void 0,this._implicitTileset=void 0,this._subtreeCache=new J5}Pj.fromUrl=async function(t){let e=te.createIfNeeded(t),n=await e.fetchJson();cMe(n);let i=uMe(n,e);await i.load();let o=n.root,a=o.content.extensions["3DTILES_content_voxels"],s=a.class,l=co(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,r=i.schema,d=new $A({metadataJson:l,schema:r}),m=new Pj;ZMe(m,d,s);let h=new eS(e,o,r),{shape:u,minBounds:R,maxBounds:V,shapeTransform:F,globalTransform:U}=mMe(o);m.shape=u,m.minBounds=R,m.maxBounds=V,m.dimensions=p.unpack(a.dimensions),m.shapeTransform=F,m.globalTransform=U,m.maximumTileCount=dMe(d);let G,A;return c(a.padding)&&(G=p.unpack(a.padding.before),A=p.unpack(a.padding.after)),m.paddingBefore=G,m.paddingAfter=A,m._implicitTileset=h,jo.unload(i),m};function dMe(t){if(c(t.tileset))return t.tileset.getPropertyBySemantic(GA.TILESET_TILE_COUNT)}function cMe(t){let e=t.root;if(!c(e.content))throw new Tt("Root must have content");if(!co(e.content,"3DTILES_content_voxels"))throw new Tt("Root tile content must have 3DTILES_content_voxels extension");if(!co(e,"3DTILES_implicit_tiling")&&!c(e.implicitTiling))throw new Tt("Root tile must have implicit tiling");if(!c(t.schema)&&!c(t.schemaUri)&&!co(t,"3DTILES_metadata"))throw new Tt("Tileset must have a metadata schema")}function mMe(t){let e=t.boundingVolume,n;if(c(t.transform)?n=L.unpack(t.transform):n=L.clone(L.IDENTITY),c(e.box))return pMe(e.box,n);if(c(e.region))return hMe(e.region);if(co(e,"3DTILES_bounding_volume_cylinder"))return VMe(e.extensions["3DTILES_bounding_volume_cylinder"].cylinder,n);throw new Tt("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function hMe(t){let e=t[0],n=t[1],i=t[2],o=t[3],a=t[4],s=t[5],l=L.fromScale(mt.WGS84.radii),r=new p(e,n,a),d=new p(i,o,s);return{shape:_o.ELLIPSOID,minBounds:r,maxBounds:d,shapeTransform:l,globalTransform:L.clone(L.IDENTITY)}}function pMe(t,e){let n=ci.unpack(t),i=L.fromRotationTranslation(n.halfAxes,n.center);return{shape:_o.BOX,minBounds:p.clone(PR.DefaultMinBounds),maxBounds:p.clone(PR.DefaultMaxBounds),shapeTransform:i,globalTransform:e}}function VMe(t,e){let n=ci.unpack(t),i=L.fromRotationTranslation(n.halfAxes,n.center);return{shape:_o.CYLINDER,minBounds:p.clone(vR.DefaultMinBounds),maxBounds:p.clone(vR.DefaultMaxBounds),shapeTransform:i,globalTransform:e}}function uMe(t,e){let{schemaUri:n,schema:i}=t;return c(n)?jo.getSchemaLoader({resource:e.getDerivedResource({url:n})}):jo.getSchemaLoader({schema:i})}function ZMe(t,e,n){let{schema:i,statistics:o}=e,a=o?.classes[n],s=i.classes[n].properties,l=Object.entries(s).map(([h,u])=>{let{type:R,componentType:V}=u,F=a?.properties[h].min,U=a?.properties[h].max,G=Nn.getComponentCount(R),A=Tkt(F,G),S=Tkt(U,G);return{id:h,type:R,componentType:V,minValue:A,maxValue:S}});t.names=l.map(h=>h.id),t.types=l.map(h=>h.type),t.componentTypes=l.map(h=>h.componentType);let r=l.map(h=>h.minValue),d=l.map(h=>h.maxValue),m=r.some(c);t.minimumValues=m?r:void 0,t.maximumValues=m?d:void 0}function Tkt(t,e){if(!c(t))return;let n=Array.isArray(t)?t:[t];return Array.from({length:e},(i,o)=>n[o])}async function RMe(t,e){let n=t.contentUriTemplates[0].getDerivedResource({templateValues:e.getTemplateValues()}),i=t.baseResource.getDerivedResource({url:n.url}),o=await i.fetchArrayBuffer(),a=dR(o);return await L5.fromJson(i,a.jsonPayload,a.binaryPayload,t.metadataSchema)}async function bMe(t,e){let n=t._implicitTileset,i=t._subtreeCache,o=i.find(e);if(c(o))return o;let a=n.subtreeUriTemplate.getDerivedResource({templateValues:e.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:a.url}),l=await s.fetchArrayBuffer();if(o=i.find(e),c(o))return o;let r=dR(l);return o=await UA.fromSubtreeJson(s,r.jsonPayload,r.binaryPayload,n,e),i.addSubtree(o),o}Pj.prototype.requestData=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.tileLevel,0),n=f(t.tileX,0),i=f(t.tileY,0),o=f(t.tileZ,0);if(f(t.keyframe,0)!==0)return;let s=this._implicitTileset,l=this.names,r=new nS({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:e,x:n,y:i,z:o}),d=r.isSubtreeRoot()&&r.level>0,m=d?r.getParentSubtreeCoordinates():r.getSubtreeCoordinates();return bMe(this,m).then(function(u){return(d?u.childSubtreeIsAvailableAtCoordinates(r):u.tileIsAvailableAtCoordinates(r))?RMe(s,r):Promise.reject("Tile is not available")}).then(function(u){return l.map(function(R){return u.metadataTable.getPropertyTypedArray(R)})})};var Alt=Pj;var n3o=b(W(),1);function Slt(t){t=f(t,1),this._radius=f(t,1)}Object.defineProperties(Slt.prototype,{radius:{get:function(){return this._radius},set:function(t){this._radius=t}}});Slt.prototype.emit=function(t){let e=k.randomBetween(0,k.TWO_PI),n=k.randomBetween(0,this._radius),i=n*Math.cos(e),o=n*Math.sin(e),a=0;t.position=p.fromElements(i,o,a,t.position),t.velocity=p.clone(p.UNIT_Z,t.velocity)};var M5=Slt;var w3o=b(W(),1);var o3o=b(W(),1),Tlt={CUMULUS:0};Tlt.validate=function(t){return t===Tlt.CUMULUS};var mN=Object.freeze(Tlt);var m3o=b(W(),1);function uZ(t,e){if(t=f(t,f.EMPTY_OBJECT),this._show=f(t.show,!0),this._position=p.clone(f(t.position,p.ZERO)),!c(t.scale)&&c(t.maximumSize))this._maximumSize=p.clone(t.maximumSize),this._scale=new K(this._maximumSize.x,this._maximumSize.y);else{this._scale=K.clone(f(t.scale,new K(20,12)));let n=new p(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=p.clone(f(t.maximumSize,n))}this._slice=f(t.slice,-1),this._color=v.clone(f(t.color,v.WHITE)),this._brightness=f(t.brightness,1),this._cloudCollection=e,this._index=-1}var WMe=uZ.SHOW_INDEX=0,fMe=uZ.POSITION_INDEX=1,FMe=uZ.SCALE_INDEX=2,UMe=uZ.MAXIMUM_SIZE_INDEX=3,GMe=uZ.SLICE_INDEX=4,AMe=uZ.BRIGHTNESS_INDEX=5,SMe=uZ.COLOR_INDEX=6;uZ.NUMBER_OF_PROPERTIES=7;function $T(t,e){let n=t._cloudCollection;c(n)&&(n._updateCloud(t,e),t._dirty=!0)}Object.defineProperties(uZ.prototype,{show:{get:function(){return this._show},set:function(t){this._show!==t&&(this._show=t,$T(this,WMe))}},position:{get:function(){return this._position},set:function(t){let e=this._position;p.equals(e,t)||(p.clone(t,e),$T(this,fMe))}},scale:{get:function(){return this._scale},set:function(t){let e=this._scale;K.equals(e,t)||(K.clone(t,e),$T(this,FMe))}},maximumSize:{get:function(){return this._maximumSize},set:function(t){let e=this._maximumSize;p.equals(e,t)||(p.clone(t,e),$T(this,UMe))}},color:{get:function(){return this._color},set:function(t){let e=this._color;v.equals(e,t)||(v.clone(t,e),$T(this,SMe))}},slice:{get:function(){return this._slice},set:function(t){this._slice!==t&&(this._slice=t,$T(this,GMe))}},brightness:{get:function(){return this._brightness},set:function(t){this._brightness!==t&&(this._brightness=t,$T(this,AMe))}}});uZ.prototype._destroy=function(){this._cloudCollection=void 0};var hp=uZ;var pp,vj=new p,TMe={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},gMe={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},EMe=hp.SHOW_INDEX,CMe=hp.POSITION_INDEX,IMe=hp.SCALE_INDEX,NMe=hp.MAXIMUM_SIZE_INDEX,yMe=hp.SLICE_INDEX,BMe=hp.BRIGHTNESS_INDEX,QMe=hp.NUMBER_OF_PROPERTIES,kMe=hp.COLOR_INDEX;function ZZ(t){t=f(t,f.EMPTY_OBJECT),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(QMe),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=f(t.noiseDetail,16),this.noiseOffset=p.clone(f(t.noiseOffset,p.ZERO)),this._loading=!1,this._ready=!1;let e=this;this._uniforms={u_noiseTexture:function(){return e._noiseTexture},u_noiseTextureDimensions:gkt(e),u_noiseDetail:function(){return e.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=f(t.show,!0),this._colorCommands=[],this.debugBillboards=f(t.debugBillboards,!1),this._compiledDebugBillboards=!1,this.debugEllipsoids=f(t.debugEllipsoids,!1),this._compiledDebugEllipsoids=!1}function gkt(t){return function(){return vj.x=t._textureSliceWidth,vj.y=t._noiseTextureRows,vj.z=1/t._noiseTextureRows,vj}}Object.defineProperties(ZZ.prototype,{length:{get:function(){return Elt(this),this._clouds.length}}});function Ekt(t){let e=t.length;for(let n=0;n<e;++n)t[n]&&t[n]._destroy()}ZZ.prototype.add=function(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.cloudType,mN.CUMULUS),n;return e===mN.CUMULUS&&(n=new hp(t,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};ZZ.prototype.remove=function(t){return this.contains(t)?(this._clouds[t._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,t._destroy(),!0):!1};ZZ.prototype.removeAll=function(){Ekt(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function Elt(t){if(t._cloudsRemoved){t._cloudsRemoved=!1;let e=[],n=t._clouds,i=n.length;for(let o=0,a=0;o<i;++o){let s=n[o];c(s)&&(n._index=a++,e.push(s))}t._clouds=e}}ZZ.prototype._updateCloud=function(t,e){t._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=t),++this._propertiesChanged[e]};ZZ.prototype.contains=function(t){return c(t)&&t._cloudCollection===this};ZZ.prototype.get=function(t){return Elt(this),this._clouds[t]};var YMe=new Float32Array([-1,-1,1,-1,1,1,-1,1]),xMe=new Uint16Array([0,1,2,0,2,3]);function XMe(t){let e=we.createVertexBuffer({context:t,typedArray:YMe,usage:ce.STATIC_DRAW}),n=we.createIndexBuffer({context:t,typedArray:xMe,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:e,componentsPerAttribute:2,componentDatatype:it.FLOAT}];return new Ki({context:t,attributes:i,indexBuffer:n})}var Clt;function JMe(t){let n=t.cache.cloudCollection_indexBufferBatched;if(c(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let a=0,s=0;a<i;a+=6,s+=4)o[a]=s,o[a+1]=s+1,o[a+2]=s+2,o[a+3]=s,o[a+4]=s+2,o[a+5]=s+3;return n=we.createIndexBuffer({context:t,typedArray:o,usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,t.cache.cloudCollection_indexBufferBatched=n,n}function LMe(t){let e=t.cache.cloudCollection_indexBufferInstanced;return c(e)||(e=we.createIndexBuffer({context:t,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:ce.STATIC_DRAW,indexDatatype:re.UNSIGNED_SHORT}),e.vertexArrayDestroyable=!1,t.cache.cloudCollection_indexBufferInstanced=e),e}function MMe(t){let e=t.cache.cloudCollection_vertexBufferInstanced;return c(e)||(e=we.createVertexBuffer({context:t,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:ce.STATIC_DRAW}),e.vertexArrayDestroyable=!1,t.cache.cloudCollection_vertexBufferInstanced=e),e}function _Me(t,e,n){let i=[{index:pp.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.packedAttribute0,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.packedAttribute1,componentsPerAttribute:4,componentDatatype:it.FLOAT,usage:ce.STATIC_DRAW},{index:pp.color,componentsPerAttribute:4,componentDatatype:it.UNSIGNED_BYTE,normalize:!0,usage:ce.STATIC_DRAW}];n&&i.push({index:pp.direction,componentsPerAttribute:2,componentDatatype:it.FLOAT,vertexBuffer:MMe(t)});let o=n?e:4*e;return new Cb(t,i,o,n)}var glt=new Mi;function Ckt(t,e,n,i){let o,a=n[pp.positionHighAndScaleX],s=n[pp.positionLowAndScaleY],l=i.position;Mi.fromCartesian(l,glt);let r=i.scale,d=glt.high,m=glt.low;t._instanced?(o=i._index,a(o,d.x,d.y,d.z,r.x),s(o,m.x,m.y,m.z,r.y)):(o=i._index*4,a(o+0,d.x,d.y,d.z,r.x),a(o+1,d.x,d.y,d.z,r.x),a(o+2,d.x,d.y,d.z,r.x),a(o+3,d.x,d.y,d.z,r.x),s(o+0,m.x,m.y,m.z,r.y),s(o+1,m.x,m.y,m.z,r.y),s(o+2,m.x,m.y,m.z,r.y),s(o+3,m.x,m.y,m.z,r.y))}function Ikt(t,e,n,i){let o,a=n[pp.packedAttribute0],s=i.show,l=i.brightness;t._instanced?(o=i._index,a(o,s,l,0,0)):(o=i._index*4,a(o+0,s,l,0,0),a(o+1,s,l,1,0),a(o+2,s,l,1,1),a(o+3,s,l,0,1))}function Nkt(t,e,n,i){let o,a=n[pp.packedAttribute1],s=i.maximumSize,l=i.slice;t._instanced?(o=i._index,a(o,s.x,s.y,s.z,l)):(o=i._index*4,a(o+0,s.x,s.y,s.z,l),a(o+1,s.x,s.y,s.z,l),a(o+2,s.x,s.y,s.z,l),a(o+3,s.x,s.y,s.z,l))}function ykt(t,e,n,i){let o,a=n[pp.color],s=i.color,l=v.floatToByte(s.red),r=v.floatToByte(s.green),d=v.floatToByte(s.blue),m=v.floatToByte(s.alpha);t._instanced?(o=i._index,a(o,l,r,d,m)):(o=i._index*4,a(o+0,l,r,d,m),a(o+1,l,r,d,m),a(o+2,l,r,d,m),a(o+3,l,r,d,m))}function DMe(t,e,n,i){Ckt(t,e,n,i),Ikt(t,e,n,i),Nkt(t,e,n,i),ykt(t,e,n,i)}function OMe(t,e,n,i){let o=t,a=o._textureSliceWidth,s=o._noiseTextureRows,l=e.context;o._vaNoise=XMe(l),o._spNoise=xn.fromCache({context:l,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let r=o.noiseDetail,d=o.noiseOffset;o._noiseTexture=new hn({context:l,width:a*a/s,height:a*s,pixelDatatype:Ue.UNSIGNED_BYTE,pixelFormat:Ye.RGBA,sampler:new Hn({wrapS:Zi.REPEAT,wrapT:Zi.REPEAT,minificationFilter:On.NEAREST,magnificationFilter:Ro.NEAREST})});let m=new Wm({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:gkt(o),u_noiseDetail:function(){return r},u_noiseOffset:function(){return d}},persists:!1,owner:t,postExecute:function(h){o._ready=!0,o._loading=!1}});e.commandList.push(m),o._loading=!0}function HMe(t,e){let n=t,i=e.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=t._clouds,a=o.length;if(a>0){n._vaf=_Me(i,a,n._instanced);let s=n._vaf.writers,l;for(l=0;l<a;++l){let r=o[l];DMe(t,e,s,r)}n._vaf.commit(Clt(i))}}var wMe=[];function PMe(t,e){let n=e.context,i=t,a=i._clouds.length,s=i._cloudsToUpdate,l=i._cloudsToUpdateIndex,r=i._propertiesChanged,d=wMe;d.length=0,(r[CMe]||r[IMe])&&d.push(Ckt),(r[EMe]||r[BMe])&&d.push(Ikt),(r[NMe]||r[yMe])&&d.push(Nkt),r[kMe]&&d.push(ykt);let m=d.length,h=i._vaf.writers,u,R,V;if(l/a>.1){for(u=0;u<l;++u)for(R=s[u],R._dirty=!1,V=0;V<m;++V)d[V](t,e,h,R);i._vaf.commit(Clt(n))}else{for(u=0;u<l;++u){for(R=s[u],R._dirty=!1,V=0;V<m;++V)d[V](t,e,h,R);i._instanced?i._vaf.subCommit(R._index,1):i._vaf.subCommit(R._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function vMe(t,e,n,i){let o=e.context,a=t,s=new Ze({defines:[],sources:[n]});a._instanced&&s.defines.push("INSTANCED");let l=new Ze({defines:[],sources:[i]});a.debugBillboards&&l.defines.push("DEBUG_BILLBOARDS"),a.debugEllipsoids&&l.defines.push("DEBUG_ELLIPSOIDS"),a._sp=xn.replaceCache({context:o,shaderProgram:a._sp,vertexShaderSource:s,fragmentShaderSource:l,attributeLocations:pp}),a._rs=he.fromCache({depthTest:{enabled:!0,func:pt.LESS},depthMask:!1,blending:Pn.ALPHA_BLEND}),a._spCreated=!0,a._compiledDebugBillboards=a.debugBillboards,a._compiledDebugEllipsoids=a.debugEllipsoids}function KMe(t,e){let n=t,i=e.passes,o=n._uniforms,a=e.commandList;if(i.render){let s=n._colorCommands,l=n._vaf.va,r=l.length;s.length=r;for(let d=0;d<r;d++){let m=s[d];c(m)||(m=s[d]=new Ee),m.pass=Pt.TRANSLUCENT,m.owner=t,m.uniformMap=o,m.count=l[d].indicesCount,m.vertexArray=l[d].va,m.shaderProgram=n._sp,m.renderState=n._rs,n._instanced&&(m.count=6,m.instanceCount=n._clouds.length),a.push(m)}}}ZZ.prototype.update=function(t){if(Elt(this),!this.show)return;let e=this.debugBillboards||this.debugEllipsoids;this._ready=e?!0:c(this._noiseTexture),!this._ready&&!this._loading&&!e&&OMe(this,t,G5,U5),this._instanced=t.context.instancedArrays,pp=this._instanced?gMe:TMe,Clt=this._instanced?LMe:JMe;let i=this._clouds.length,o=this._cloudsToUpdate,a=this._cloudsToUpdateIndex;this._createVertexArray?HMe(this,t):a>0&&PMe(this,t),a>i*1.5&&(o.length=i),!(!c(this._vaf)||!c(this._vaf.va)||!this._ready&!e)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&vMe(this,t,F5,f5),KMe(this,t))};ZZ.prototype.isDestroyed=function(){return!1};ZZ.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Ekt(this._clouds),At(this)};var Ilt=ZZ;var j3o=b(W(),1);var zMe=k.toRadians(30);function Nlt(t){this._angle=f(t,zMe)}Object.defineProperties(Nlt.prototype,{angle:{get:function(){return this._angle},set:function(t){this._angle=t}}});Nlt.prototype.emit=function(t){let e=Math.tan(this._angle),n=k.randomBetween(0,k.TWO_PI),i=k.randomBetween(0,e),o=i*Math.cos(n),a=i*Math.sin(n),s=1;t.velocity=p.fromElements(o,a,s,t.velocity),p.normalize(t.velocity,t.velocity),t.position=p.clone(p.ZERO,t.position)};var ylt=Nlt;var nKo=b(W(),1);function _5(t){t=f(t,f.EMPTY_OBJECT);let e=t.attributeName,n=t.perInstanceAttribute;c(n)||(n=!1);let i=f(t.glslDatatype,"vec3"),o=`v_${e}`,a;if(e==="normal"||e==="tangent"||e==="bitangent")a=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } `;else switch(e==="st"&&(i="vec2"),i){case"float":a=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } `;break;case"vec2":a=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } `;break;case"vec3":a=`vec4 getColor() { return vec4(${o}, 1.0); } @@ -15328,7 +15328,7 @@ ${a} void main() { out_FragColor = getColor(); -}`;this.material=void 0,this.translucent=f(t.translucent,!1),this._vertexShaderSource=f(t.vertexShaderSource,s),this._fragmentShaderSource=f(t.fragmentShaderSource,l),this._renderState=ua.getDefaultRenderState(!1,!1,t.renderState),this._closed=f(t.closed,!1),this._attributeName=e,this._glslDatatype=i}Object.defineProperties(_5.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});_5.prototype.getFragmentShaderSource=ua.prototype.getFragmentShaderSource;_5.prototype.isTranslucent=ua.prototype.isTranslucent;_5.prototype.getRenderState=ua.prototype.getRenderState;var Blt=_5;var Z3o=R(W(),1);function Kj(t){t=f(t,f.EMPTY_OBJECT),this.length=f(t.length,1e7),this._length=void 0,this.width=f(t.width,2),this._width=void 0,this.show=f(t.show,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=new L,this.id=t.id,this._id=void 0,this._primitive=void 0,this.entity=t.entity}Kj.prototype.update=function(t){if(!this.show)return;let e=this.modelMatrix;if(this.entity&&typeof this.entity.computeModelMatrix=="function"&&(e=this.entity.computeModelMatrix(t.time)||e),!c(this._primitive)||!L.equals(this._modelMatrix,e)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=L.clone(e,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,c(this._primitive)&&this._primitive.destroy(),e[12]===0&&e[13]===0&&e[14]===0&&(e[14]=.01);let n=new $e({geometry:new j0({positions:[p.ZERO,p.UNIT_X],width:this.width,vertexFormat:Ul.VERTEX_FORMAT,colors:[v.RED,v.RED],arcType:Ln.NONE}),modelMatrix:L.multiplyByUniformScale(e,this.length,new L),id:this.id,pickPrimitive:this}),i=new $e({geometry:new j0({positions:[p.ZERO,p.UNIT_Y],width:this.width,vertexFormat:Ul.VERTEX_FORMAT,colors:[v.GREEN,v.GREEN],arcType:Ln.NONE}),modelMatrix:L.multiplyByUniformScale(e,this.length,new L),id:this.id,pickPrimitive:this}),o=new $e({geometry:new j0({positions:[p.ZERO,p.UNIT_Z],width:this.width,vertexFormat:Ul.VERTEX_FORMAT,colors:[v.BLUE,v.BLUE],arcType:Ln.NONE}),modelMatrix:L.multiplyByUniformScale(e,this.length,new L),id:this.id,pickPrimitive:this});this._primitive=new Wi({geometryInstances:[n,i,o],appearance:new Ul,asynchronous:!1})}this._primitive.update(t)};Kj.prototype.isDestroyed=function(){return!1};Kj.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};var D5=Kj;var f3o=R(W(),1);function jMe(t){this.direction=p.clone(t.direction),this.color=v.clone(f(t.color,v.WHITE)),this.intensity=f(t.intensity,1)}var Qlt=jMe;var B3o=R(W(),1);var U3o=R(W(),1),O5=`in vec3 v_positionMC; +}`;this.material=void 0,this.translucent=f(t.translucent,!1),this._vertexShaderSource=f(t.vertexShaderSource,s),this._fragmentShaderSource=f(t.fragmentShaderSource,l),this._renderState=Va.getDefaultRenderState(!1,!1,t.renderState),this._closed=f(t.closed,!1),this._attributeName=e,this._glslDatatype=i}Object.defineProperties(_5.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});_5.prototype.getFragmentShaderSource=Va.prototype.getFragmentShaderSource;_5.prototype.isTranslucent=Va.prototype.isTranslucent;_5.prototype.getRenderState=Va.prototype.getRenderState;var Blt=_5;var uKo=b(W(),1);function Kj(t){t=f(t,f.EMPTY_OBJECT),this.length=f(t.length,1e7),this._length=void 0,this.width=f(t.width,2),this._width=void 0,this.show=f(t.show,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._modelMatrix=new L,this.id=t.id,this._id=void 0,this._primitive=void 0,this.entity=t.entity}Kj.prototype.update=function(t){if(!this.show)return;let e=this.modelMatrix;if(this.entity&&typeof this.entity.computeModelMatrix=="function"&&(e=this.entity.computeModelMatrix(t.time)||e),!c(this._primitive)||!L.equals(this._modelMatrix,e)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=L.clone(e,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,c(this._primitive)&&this._primitive.destroy(),e[12]===0&&e[13]===0&&e[14]===0&&(e[14]=.01);let n=new $e({geometry:new j0({positions:[p.ZERO,p.UNIT_X],width:this.width,vertexFormat:Ul.VERTEX_FORMAT,colors:[v.RED,v.RED],arcType:Ln.NONE}),modelMatrix:L.multiplyByUniformScale(e,this.length,new L),id:this.id,pickPrimitive:this}),i=new $e({geometry:new j0({positions:[p.ZERO,p.UNIT_Y],width:this.width,vertexFormat:Ul.VERTEX_FORMAT,colors:[v.GREEN,v.GREEN],arcType:Ln.NONE}),modelMatrix:L.multiplyByUniformScale(e,this.length,new L),id:this.id,pickPrimitive:this}),o=new $e({geometry:new j0({positions:[p.ZERO,p.UNIT_Z],width:this.width,vertexFormat:Ul.VERTEX_FORMAT,colors:[v.BLUE,v.BLUE],arcType:Ln.NONE}),modelMatrix:L.multiplyByUniformScale(e,this.length,new L),id:this.id,pickPrimitive:this});this._primitive=new Wi({geometryInstances:[n,i,o],appearance:new Ul,asynchronous:!1})}this._primitive.update(t)};Kj.prototype.isDestroyed=function(){return!1};Kj.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),At(this)};var D5=Kj;var fKo=b(W(),1);function jMe(t){this.direction=p.clone(t.direction),this.color=v.clone(f(t.color,v.WHITE)),this.intensity=f(t.intensity,1)}var Qlt=jMe;var BKo=b(W(),1);var UKo=b(W(),1),O5=`in vec3 v_positionMC; in vec3 v_positionEC; in vec2 v_st; @@ -15361,7 +15361,7 @@ void main() out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); #endif } -`;var A3o=R(W(),1),H5=`in vec3 position3DHigh; +`;var AKo=b(W(),1),H5=`in vec3 position3DHigh; in vec3 position3DLow; in vec2 st; in float batchId; @@ -15380,7 +15380,7 @@ void main() gl_Position = czm_modelViewProjectionRelativeToEye * p; } -`;function tg(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.translucent,!0),n=f(t.aboveGround,!1);this.material=c(t.material)?t.material:eo.fromType(eo.ColorType),this.translucent=f(t.translucent,!0),this._vertexShaderSource=f(t.vertexShaderSource,H5),this._fragmentShaderSource=f(t.fragmentShaderSource,O5),this._renderState=ua.getDefaultRenderState(e,!n,t.renderState),this._closed=!1,this._flat=f(t.flat,!1),this._faceForward=f(t.faceForward,n),this._aboveGround=n}Object.defineProperties(tg.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return tg.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});tg.VERTEX_FORMAT=ee.POSITION_AND_ST;tg.prototype.getFragmentShaderSource=ua.prototype.getFragmentShaderSource;tg.prototype.isTranslucent=ua.prototype.isTranslucent;tg.prototype.getRenderState=ua.prototype.getRenderState;var klt=tg;var w3o=R(W(),1);function w5(t){if(t=f(t,f.EMPTY_OBJECT),!c(t.id))throw new Ut("options.id is required.");if(!c(EH[t.id]))throw new Ut(`options.id ${t.id} is not found in embedded imagery provider`);if(!c(t.path))throw new Ut("options.path is required.");if(!c(EH[t.id][`/${t.path}/0/0/0.jpg`]))throw new Ut(`options.path ${t.path} is not found in embedded imagery provider`);this._staticImagerySource=EH[t.id],this._staticImageryPath=t.path,this._tilingScheme=this._staticImagerySource.tilemapresource.TileMap.SRS.indexOf("4326")>-1?new Qo({ellipsoid:mt.WGS84}):new Gs({ellipsoid:mt.WGS84}),this._reverseY=!(this._staticImagerySource.tilemapresource.TileMap.SRS.indexOf("4326")>-1);let{width:e,height:n}=this._staticImagerySource.tilemapresource.TileMap.TileFormat[0].$;this._tileWidth=e,this._tileHeight=n,this._minimumLevel=0,this._maximumLevel=this._staticImagerySource.tilemapresource.TileMap.TileSets[0].TileSet.length-1,this._rectangle=this._tilingScheme.rectangle,this._errorEvent=new It;let i=t.credit;this._credit=typeof i=="string"?new on(i):i,this._readyPromise=kd()}function qMe(t,e,n,i,o,a){let s=t._staticImagerySource[`/${t._staticImageryPath}/${i}/${e}/${n}.jpg`];return s?te.fetchImage({url:s}):null}Object.defineProperties(w5.prototype,{url:{get:function(){return this._resource.url}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},ready:{value:!0},readyPromise:{get:function(){return this._readyPromise.promise}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(t){this._timeDynamicImagery.clock=t}},times:{get:function(){return this._timeDynamicImagery.times},set:function(t){this._timeDynamicImagery.times=t}}});w5.prototype.getTileCredits=function(t,e,n){};w5.prototype.pickFeatures=function(t,e,n,i,o){};w5.prototype.requestImage=function(t,e,n,i){let o,a;return this._reverseY&&(e=this.tilingScheme.getNumberOfYTilesAtLevel(n)-e-1),c(o)||(o=qMe(this,t,e,n,i,a)),o};var Ylt=w5;var tzo=R(W(),1);function oh(t){this._scene=t.scene,this.samplingWindow=f(t.samplingWindow,oh.defaultSettings.samplingWindow),this.quietPeriod=f(t.quietPeriod,oh.defaultSettings.quietPeriod),this.warmupPeriod=f(t.warmupPeriod,oh.defaultSettings.warmupPeriod),this.minimumFrameRateDuringWarmup=f(t.minimumFrameRateDuringWarmup,oh.defaultSettings.minimumFrameRateDuringWarmup),this.minimumFrameRateAfterWarmup=f(t.minimumFrameRateAfterWarmup,oh.defaultSettings.minimumFrameRateAfterWarmup),this._lowFrameRate=new It,this._nominalFrameRate=new It,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let e=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,a){$Me(e,a)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){t_e(e)}this._visibilityChangeRemoveListener=void 0,c(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}oh.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};oh.fromScene=function(t){return(!c(t._frameRateMonitor)||t._frameRateMonitor.isDestroyed())&&(t._frameRateMonitor=new oh({scene:t})),t._frameRateMonitor};Object.defineProperties(oh.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});oh.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};oh.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};oh.prototype.isDestroyed=function(){return!1};oh.prototype.destroy=function(){return this._preUpdateRemoveListener(),c(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),At(this)};function $Me(t,e){if(t._pauseCount>0)return;let n=Oi();if(t._needsQuietPeriod)t._needsQuietPeriod=!1,t._frameTimes.length=0,t._quietPeriodEndTime=n+t.quietPeriod/xi.SECONDS_PER_MILLISECOND,t._warmupPeriodEndTime=t._quietPeriodEndTime+(t.warmupPeriod+t.samplingWindow)/xi.SECONDS_PER_MILLISECOND;else if(n>=t._quietPeriodEndTime){t._frameTimes.push(n);let i=n-t.samplingWindow/xi.SECONDS_PER_MILLISECOND;if(t._frameTimes.length>=2&&t._frameTimes[0]<=i){for(;t._frameTimes.length>=2&&t._frameTimes[1]<i;)t._frameTimes.shift();let o=(n-t._frameTimes[0])/(t._frameTimes.length-1);t._lastFramesPerSecond=1e3/o;let a=1e3/(n>t._warmupPeriodEndTime?t.minimumFrameRateAfterWarmup:t.minimumFrameRateDuringWarmup);o>a?t._frameRateIsLow||(t._frameRateIsLow=!0,t._needsQuietPeriod=!0,t.lowFrameRate.raiseEvent(t.scene,t._lastFramesPerSecond)):t._frameRateIsLow&&(t._frameRateIsLow=!1,t._needsQuietPeriod=!0,t.nominalFrameRate.raiseEvent(t.scene,t._lastFramesPerSecond))}}}function t_e(t){document[t._hiddenPropertyName]?t.pause():t.unpause()}var P5=oh;var uzo=R(W(),1);var B2t=R(wst(),1);function xlt(){this._image=new Image}xlt.prototype.isReady=function(){return!0};xlt.prototype.shouldDiscardImage=function(t){return t===this._image};function eg(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=t.tileDiscardPolicy,this._tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new Gt(-k.PI,-k.PI,k.PI,k.PI),ellipsoid:t.ellipsoid});let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,c(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new xlt),this._errorEvent=new It}Object.defineProperties(eg.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});eg.fromMetadata=function(t,e){if(!t.imageryPresent)throw new St(`The server ${t.url} doesn't have imagery`);let n=new eg(e);return n._metadata=t,n};eg.prototype.getTileCredits=function(t,e,n){let i=this._metadata,o=i.getTileInformation(t,e,n);if(c(o)){let a=i.providers[o.imageryProvider];if(c(a))return[a]}};eg.prototype.requestImage=function(t,e,n,i){let o=this._tileDiscardPolicy._image,a=this._metadata,s=EW.tileXYToQuadKey(t,e,n),l=a.getTileInformation(t,e,n);if(!c(l)){if(a.isValid(s)){let d=new Zs({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});a.populateSubtree(t,e,n,d);return}return Promise.resolve(o)}if(!l.hasImagery())return Promise.resolve(o);let r=e_e(this,l,t,e,n,i).fetchArrayBuffer();if(c(r))return r.then(function(d){Q5(a.key,d);let m=new Uint8Array(d),h,Z=a.protoImagery;if((!c(Z)||!Z)&&(h=n_e(m)),!c(h)&&(!c(Z)||Z)){let b=i_e(m);h=b.imageType,m=b.imageData}return!c(h)||!c(m)?o:ZA({uint8Array:m,format:h,flipY:!0})})};eg.prototype.pickFeatures=function(t,e,n,i,o){};function e_e(t,e,n,i,o,a){let s=EW.tileXYToQuadKey(n,i,o),l=e.imageryVersion;return l=c(l)&&l>0?l:1,t._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${l.toString()}`,request:a})}function n_e(t){let e="JFIF";if(t[6]===e.charCodeAt(0)&&t[7]===e.charCodeAt(1)&&t[8]===e.charCodeAt(2)&&t[9]===e.charCodeAt(3))return"image/jpeg";let n="PNG";if(t[1]===n.charCodeAt(0)&&t[2]===n.charCodeAt(1)&&t[3]===n.charCodeAt(2))return"image/png"}function i_e(t){let e=B2t.Reader.create(t),n=e.len,i={};for(;e.pos<n;){let s=e.uint32(),l;switch(s>>>3){case 1:i.imageType=e.uint32();break;case 2:i.imageData=e.bytes();break;case 3:i.alphaType=e.uint32();break;case 4:i.imageAlpha=e.bytes();break;case 5:if(l=i.copyrightIds,c(l)||(l=i.copyrightIds=[]),(s&7)===2){let r=e.uint32()+e.pos;for(;e.pos<r;)l.push(e.uint32())}else l.push(e.uint32());break;default:e.skipType(s&7);break}}let o=i.imageType;if(c(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new St("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let a=i.alphaType;return c(a)&&a!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var Xlt=eg;var Fzo=R(W(),1);var o_e=new v(1,1,1,.4),a_e=new v(0,1,0,.05),s_e=new v(0,.5,0,.2);function ng(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=c(t.tilingScheme)?t.tilingScheme:new Qo({ellipsoid:t.ellipsoid}),this._cells=f(t.cells,8),this._color=f(t.color,o_e),this._glowColor=f(t.glowColor,a_e),this._glowWidth=f(t.glowWidth,6),this._backgroundColor=f(t.backgroundColor,s_e),this._errorEvent=new It,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._canvasSize=f(t.canvasSize,256),this._canvas=this._createGridCanvas()}Object.defineProperties(ng.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});ng.prototype._drawGrid=function(t){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let a=1+i/this._cells*(n-1);t.moveTo(a,0),t.lineTo(a,n),t.moveTo(0,a),t.lineTo(n,a)}t.stroke()};ng.prototype._createGridCanvas=function(){let t=document.createElement("canvas");t.width=this._canvasSize,t.height=this._canvasSize;let e=0,n=this._canvasSize,i=t.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(e,e,n,n);let a=this._glowColor.toCssColorString();i.strokeStyle=a,i.lineWidth=this._glowWidth,i.strokeRect(e,e,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(e,e,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(e,e,n,n),i.lineWidth=1,this._drawGrid(i),t};ng.prototype.getTileCredits=function(t,e,n){};ng.prototype.requestImage=function(t,e,n,i){return Promise.resolve(this._canvas)};ng.prototype.pickFeatures=function(t,e,n,i,o){};var Jlt=ng;var i4o=R(W(),1);var Ejo=R(W(),1);var cjo=R(W(),1);var Nzo=R(W(),1);function bV(){}bV._maxDecodingConcurrency=Math.max(In.hardwareConcurrency-1,1);bV._decodeTaskProcessor=new $i("decodeI3S",bV._maxDecodingConcurrency);bV._promise=void 0;async function l_e(){if(await bV._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return bV._decodeTaskProcessor;throw new St("I3S decoder could not be initialized.")}bV.decode=async function(t,e,n,i,o){return c(bV._promise)||(bV._promise=l_e()),bV._promise.then(function(a){let s=n._parent._data,l=n._parent._inverseRotationMatrix,r=0,d=0,m=0;c(s.obb)?(r=s.obb.center[0],d=s.obb.center[1],m=s.obb.center[2]):c(s.mbs)&&(r=s.mbs[0],d=s.mbs[1],m=s.mbs[2]);let h=ot.fromRotationX(-k.PI_OVER_TWO),Z=new ot;ot.multiply(h,l,Z);let b=gt.fromDegrees(r,d,m),u=mt.WGS84.cartographicToCartesian(b),F={binaryData:n._data,featureData:c(i)&&c(i[0])?i[0].data:void 0,schema:e,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:mt.WGS84.radiiSquared,url:t,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:b,cartesianCenter:u,parentRotation:Z,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return a.scheduleTask(F)})};var v5=bV;var kzo=R(W(),1);function Llt(t,e){this._parent=t,this._dataProvider=t._dataProvider,this._layer=t._layer,c(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${e}`}):this._resource=this._parent.resource.getDerivedResource({url:e})}Object.defineProperties(Llt.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});Llt.prototype.load=async function(){return this._data=await RV.loadJson(this._resource),this._data};var K5=Llt;var Jzo=R(W(),1);function CW(t,e){this._storageInfo=e,this._parent=t,this._dataProvider=t._dataProvider,this._loadPromise=void 0;let n=`attributes/${e.key}/0`;c(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(CW.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(c(this._values)){if(c(this._values.attributeValues))return this._values.attributeValues;if(c(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function zj(t){return t==="UInt8"||t==="Int8"?1:t==="UInt16"||t==="Int16"?2:t==="UInt32"||t==="Int32"||t==="Oid32"||t==="Float32"?4:t==="UInt64"||t==="Int64"||t==="Float64"?8:0}function r_e(t){return t==="String"?1:zj(t)}async function d_e(t){let e=await t._dataProvider._loadBinary(t._resource),n=new DataView(e);t._data=e,t._validateHeader(n);let i=t._parseHeader(n),o=t._getBodyOffset(i);t._validateBody(n,o),t._parseBody(n,o)}CW.prototype.load=function(){return c(this._loadPromise)?this._loadPromise:(this._loadPromise=d_e(this).catch(function(t){console.error(t)}),this._loadPromise)};CW.prototype._parseValue=function(t,e,n){let i;if(e==="UInt8")i=t.getUint8(n),n+=1;else if(e==="Int8")i=t.getInt8(n),n+=1;else if(e==="UInt16")i=t.getUint16(n,!0),n+=2;else if(e==="Int16")i=t.getInt16(n,!0),n+=2;else if(e==="UInt32")i=t.getUint32(n,!0),n+=4;else if(e==="Oid32")i=t.getUint32(n,!0),n+=4;else if(e==="Int32")i=t.getInt32(n,!0),n+=4;else if(e==="UInt64"){let o=t.getUint32(n,!0),a=t.getUint32(n+4,!0);i=o+Math.pow(2,32)*a,n+=8}else if(e==="Int64"){let o=t.getUint32(n,!0),a=t.getUint32(n+4,!0);a<Math.pow(2,31)?i=o+Math.pow(2,32)*a:i=o+Math.pow(2,32)*(a-Math.pow(2,32)),n+=8}else e==="Float32"?(i=t.getFloat32(n,!0),n+=4):e==="Float64"?(i=t.getFloat64(n,!0),n+=8):e==="String"&&(i=String.fromCharCode(t.getUint8(n)),n+=1);return{value:i,offset:n}};CW.prototype._parseHeader=function(t){let e=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(t,i.valueType,e);this._header[i.property]=o.value,e=o.offset}return e};CW.prototype._parseBody=function(t,e){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,a=this._storageInfo[o];if(c(a)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(a.valueType!=="String"){let l=this._parseValue(t,a.valueType,e);this._values[o].push(l.value),e=l.offset}else{let l=this._values.attributeByteCounts[s],r="";for(let d=0;d<l;++d){let m=this._parseValue(t,a.valueType,e);m.value.charCodeAt(0)!==0&&(r+=m.value),e=m.offset}this._values[o].push(r)}}}};CW.prototype._getBodyOffset=function(t){let e=0;return c(this._storageInfo.attributeValues)?e=zj(this._storageInfo.attributeValues.valueType):c(this._storageInfo.objectIds)&&(e=zj(this._storageInfo.objectIds.valueType)),e>0?Math.ceil(t/e)*e:t};CW.prototype._validateHeader=function(t){let e=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];e+=r_e(i.valueType)}if(t.byteLength<e)throw new St(`Invalid attribute buffer size (field: ${this.name}, header: ${e}, actual: ${t.byteLength})`)};CW.prototype._validateBody=function(t,e){if(!c(this._header.count))throw new St(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&e<t.byteLength;i++){let o=this._storageInfo.ordering[i],a=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[a];if(c(s))if(s.valueType!=="String"){a==="attributeByteCounts"&&(n=e);let l=zj(s.valueType);e+=l*this._header.count}else{if(!c(n))throw new St(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let l=0;l<this._header.count&&e<t.byteLength;++l){let r=this._parseValue(t,this._storageInfo.attributeByteCounts.valueType,n);e+=r.value,n=r.offset}}else throw new St(`Invalid attribute buffer (field: ${this.name}, ${a} is missing)`)}if(t.byteLength<e)throw new St(`Invalid attribute buffer size (field: ${this.name}, expected: ${e}, actual: ${t.byteLength})`)};var z5=CW;var wzo=R(W(),1);function j5(t,e){let n=t._dataProvider,i=t._layer,o;c(t._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${t._data.mesh.geometry.resource}/${e}`}):o=t.resource.getDerivedResource({url:e}),this._parent=t,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(j5.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});j5.prototype.load=function(){let t=this;return this._dataProvider._loadBinary(this._resource).then(function(e){return t._data=e,e})};var c_e=new p,m_e=new p,h_e=new p,p_e=new p,u_e=new p;function Mlt(t,e,n,i){let o=p.subtract(i,n,c_e),a=p.cross(o,p.subtract(t,n,m_e),p_e),s=p.cross(o,p.subtract(e,n,h_e),u_e);return p.dot(a,s)>=0}var Z_e=new p,V_e=new p,b_e=new p,R_e=new p,W_e=new p,f_e=new p,F_e=new p,U_e=new p,G_e=new p,A_e=new p;j5.prototype.getClosestPointIndexOnTriangle=function(t,e,n){if(c(this._customAttributes)&&c(this._customAttributes.positions)){let i=new p(t,e,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,ot.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,a,s,l,r,d=this._customAttributes.positions,m=this._customAttributes.indices,h;c(m)?h=m.length:h=d.length/3;for(let Z=0;Z<h;Z++){let b,u,F;c(m)?(b=m[Z],u=m[Z+1],F=m[Z+2]):(b=Z*3,u=Z*3+1,F=Z*3+2);let U=p.fromElements(d[b*3],d[b*3+1],d[b*3+2],Z_e),G=p.fromElements(d[u*3],d[u*3+1],d[u*3+2],V_e),A=new p(d[F*3],d[F*3+1],d[F*3+2],b_e);if(!Mlt(i,U,G,A)||!Mlt(i,G,U,A)||!Mlt(i,A,U,G))continue;let T=p.subtract(G,U,R_e),g=p.subtract(A,U,W_e),C=p.cross(T,g,f_e);if(p.magnitude(C)===0)continue;let y=p.normalize(C,F_e),Y=p.subtract(i,U,U_e),Q=Math.abs(p.dot(Y,y));if(Q<o){o=Q,a=Z;let J=p.magnitudeSquared(p.subtract(i,U,Y)),M=p.magnitudeSquared(p.subtract(i,G,G_e)),V=p.magnitudeSquared(p.subtract(i,A,A_e));J<M&&J<V?(l=b,r=U,s=J):M<V?(l=u,r=G,s=M):(l=F,r=A,s=V)}}if(c(a))return{index:l,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:p.clone(r)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function Q2t(t){let e=[],n=t.length;for(let i=0;i<n;i++)i<3?e.push(jS(t[i])):e.push(t[i]);return e}j5.prototype._generateGltf=function(t,e,n,i,o,a,s,l){let r={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},d=!1,m,h="";if(c(this._parent._data.mesh)&&c(this._layer._data.materialDefinitions)){let T=this._parent._data.mesh.material.definition;if(T>=0&&T<this._layer._data.materialDefinitions.length){if(m=this._layer._data.materialDefinitions[T],r=m,c(r.pbrMetallicRoughness)&&c(r.pbrMetallicRoughness.baseColorTexture)){d=!0,r.pbrMetallicRoughness.baseColorTexture.index=0;let g="0";if(c(this._layer._data.textureSetDefinitions))for(let C=0;C<this._layer._data.textureSetDefinitions.length;C++){let y=this._layer._data.textureSetDefinitions[C];for(let Y=0;Y<y.formats.length;Y++){let Q=y.formats[Y];if(Q.format==="jpg"){g=Q.name;break}}}c(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${g}`}).url)}c(r.pbrMetallicRoughness)&&c(r.pbrMetallicRoughness.baseColorFactor)&&(r.pbrMetallicRoughness.baseColorFactor=Q2t(r.pbrMetallicRoughness.baseColorFactor)),c(r.emissiveFactor)&&(r.emissiveFactor=Q2t(r.emissiveFactor))}}else c(this._parent._data.textureData)&&(d=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,r.pbrMetallicRoughness.baseColorTexture={index:0});c(r.alphaMode)&&(r.alphaMode=r.alphaMode.toUpperCase());let Z=[],b=[],u=[];d&&(Z=[{sampler:0,source:0}],b=[{uri:h}],u=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let F=[],U=n.length;for(let A=0;A<U;A++){let T=n[A].primitives,g=T.length;for(let C=0;C<g;C++){let y=T[C];if(c(y.material)){for(;y.material>=F.length;){let Q=be(r,!0);F.push(Q)}let Y=F[y.material];c(y.extra)&&y.extra.isTransparent?c(Y.alphaMode)||(Y.alphaMode="BLEND"):Y.alphaMode==="BLEND"&&(Y.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:t}],nodes:e,meshes:n,buffers:i,bufferViews:o,accessors:a,materials:F,textures:Z,images:b,samplers:u,asset:{version:"2.0"},extensions:s,extensionsUsed:l}};var hN=j5;function bc(t,e,n){let i,o,a,s;n?(i=0,o=t):(i=t._level+1,o=t._layer),typeof e=="number"?a=e:s=t.resource.getDerivedResource({url:`${e}/`}),this._parent=t,this._dataProvider=t._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=a,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(bc.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});bc.prototype.load=async function(){let t=this;function e(){if(!t._isRoot){let o=t._create3DTileDefinition();t._tile=new iu(t._layer._tileset,t._dataProvider.resource,o,t._parent._tile),t._tile._i3sNode=t}}if(!c(this._nodeIndex)){let o=await RV.loadJson(this._resource);t._data=o,e();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);t._data=n;let i;t._isRoot?i="nodes/root/":c(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),c(i)&&(t._resource=t._parent.resource.getDerivedResource({url:i})),e()};function k2t(t,e){let n=new z5(t,e);return t._fields[e.name]=n,n.load()}bc.prototype.loadFields=function(){let t=this._layer._data.attributeStorageInfo,e=[];if(c(t))for(let n=0;n<t.length;n++){let i=t[n],o=this._fields[i.name];c(o)?e.push(o.load()):e.push(k2t(this,i))}return Promise.all(e)};bc.prototype.loadField=function(t){let e=this._fields[t];if(c(e))return e.load();let n=this._layer._data.attributeStorageInfo;if(c(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===t)return k2t(this,o)}return Promise.resolve()};bc.prototype.getFieldsForPickedPosition=function(t){let e=this.geometryData[0];if(!c(e.customAttributes.featureIndex))return{};let n=e.getClosestPointIndexOnTriangle(t.x,t.y,t.z);if(n.index===-1||n.index>e.customAttributes.featureIndex.length)return{};let i=e.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};bc.prototype.getFieldsForFeature=function(t){let e={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];t>=0&&t<i.values.length&&(e[i.name]=i.values[t])}return e};bc.prototype._loadChildren=function(){let t=this;if(c(this._childrenReadyPromise))return this._childrenReadyPromise;let e=[];if(c(t._data.children))for(let n=0;n<t._data.children.length;n++){let i=t._data.children[n],o=new bc(t,f(i.href,i),!1);t._children.push(o),e.push(o.load())}return this._childrenReadyPromise=Promise.all(e).then(function(){for(let n=0;n<t._children.length;n++)t._tile.children.push(t._children[n]._tile)}),this._childrenReadyPromise};bc.prototype._loadGeometryData=function(){let t=[];if(c(this._data.geometryData))for(let e=0;e<this._data.geometryData.length;e++){let n=new hN(this,this._data.geometryData[e].href);this._geometryData.push(n),t.push(n.load())}else if(c(this._data.mesh)){let e=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${e.bufferIndex}/`,i=new hN(this,n);i._geometryDefinitions=e.definition,i._geometryBufferInfo=e.geometryBufferInfo,this._geometryData.push(i),t.push(i.load())}return Promise.all(t)};bc.prototype._loadFeatureData=function(){let t=[];if(c(this._data.featureData))for(let e=0;e<this._data.featureData.length;e++){let n=new K5(this,this._data.featureData[e].href);this._featureData.push(n),t.push(n.load())}return Promise.all(t)};bc.prototype._clearGeometryData=function(){this._geometryData=[]};bc.prototype._create3DTileDefinition=function(){let t=this._data.obb,e=this._data.mbs;if(!c(t)&&!c(e)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(c(t)?n=gt.fromDegrees(t.center[0],t.center[1],t.center[2]):n=gt.fromDegrees(e[0],e[1],e[2]),c(this._dataProvider._geoidDataList)&&c(n))for(let G=0;G<this._dataProvider._geoidDataList.length;G++){let A=this._dataProvider._geoidDataList[G],T=A.projection.project(n);if(T.x>A.nativeExtent.west&&T.x<A.nativeExtent.east&&T.y>A.nativeExtent.south&&T.y<A.nativeExtent.north){n.height+=E_e(T.x,T.y,A);break}}let i={},o,a=0;c(t)?(i={box:[0,0,0,t.halfSize[0],0,0,0,t.halfSize[1],0,0,0,t.halfSize[2]]},a=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=mt.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,e[3]]},o=mt.WGS84.cartographicToCartesian(n),a=this._data.mbs[3]),a*=2;let s=1/0;if(c(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let G=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=a/G}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let G=this._data.lodThreshold;s=a/G}else console.error("Invalid lodSelectionMetricType in Layer");else if(c(this._data.lodSelection))for(let G=0;G<this._data.lodSelection.length;G++)this._data.lodSelection[G].metricType==="maxScreenThreshold"&&(s=a/this._data.lodSelection[G].maxError);s===1/0&&(s=1e5);let l=s*16,r=new Jr(0,0,0),d=Pe.headingPitchRollQuaternion(o,r);c(this._data.obb)&&(d=new wt(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let m=ot.fromQuaternion(d),h=ot.inverse(m,new ot),Z=new L(m[0],m[1],m[2],0,m[3],m[4],m[5],0,m[6],m[7],m[8],0,o.x,o.y,o.z,1),b=L.inverse(Z,new L),u=L.clone(Z);c(this._parent._globalTransform)&&L.multiply(Z,this._parent._inverseGlobalTransform,u),this._globalTransform=Z,this._inverseGlobalTransform=b,this._inverseRotationMatrix=h;let F=[];for(let G=0;G<this._children.length;G++)F.push(this._children[G]._create3DTileDefinition());return{children:F,refine:"REPLACE",boundingVolume:i,transform:[u[0],u[4],u[8],u[12],u[1],u[5],u[9],u[13],u[2],u[6],u[10],u[14],u[3],u[7],u[11],u[15]],content:{uri:c(this._resource)?this._resource.url:void 0},geometricError:l}};bc.prototype._loadSymbology=async function(){!c(this._symbologyData)&&c(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};bc.prototype._createContentURL=async function(){let t={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},e=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&e.push(this._loadFeatureData()),await Promise.all(e),c(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,a=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],l=await v5.decode(o,a,s,this._featureData[0],this._symbologyData);if(!c(l))return;t=s._generateGltf(l.meshData.nodesInScene,l.meshData.nodes,l.meshData.meshes,l.meshData.buffers,l.meshData.bufferViews,l.meshData.accessors,l.meshData.rootExtensions,l.meshData.extensionsUsed),this._geometryData[0]._customAttributes=l.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(t),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function T_e(t){let e=t._layer._filters,n=[];for(let i=0;i<e.length;i++){let o=t.loadField(e[i].name);n.push(o)}return await Promise.all(n),e}function S_e(t,e,n){if(!c(n.values)||n.values.length===0)return!1;let i=c(e)?e.values:[],o;t<i.length&&(o=i[t]);let a=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){a=!0;break}return a}async function Y2t(t,e){let n=t._tile.content.batchTable;if(c(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await T_e(t);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let a=0;a<i.length;a++){let s=i[a];if(!S_e(o,t._fields[s.name],s)){n.setShow(o,!1);break}}}e.show=!0}bc.prototype._filterFeatures=function(){let t=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();t.push(i)}let e=this._tile?.content?._model;if(c(this._geometryData)&&this._geometryData.length>0&&c(e)&&e.ready){e.show=!1;let n=Y2t(this,e);t.push(n)}return Promise.all(t)};iu.prototype._hookedRequestContent=iu.prototype.requestContent;iu.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let t=this;return this._i3sNode._createContentURL().then(e=>{if(!c(e)){t._isLoading=!1;return}return t._contentResource=new te({url:e}),t._hookedRequestContent()}).then(e=>{let n=e?._model;return c(t._i3sNode._geometryData)&&t._i3sNode._geometryData.length>0&&c(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{Y2t(t._i3sNode,n)})),t._isLoading=!1,e})}};function g_e(t,e,n,i,o,a){let s=n*(1-t)+i*t,l=o*(1-t)+a*t;return s*(1-e)+l*e}function jj(t,e,n,i){let o=t+e*n;return i[o]}function E_e(t,e,n){let i=n.nativeExtent,o=(t-i.west)/(i.east-i.west)*(n.width-1),a=(e-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),l=Math.floor(a);o-=s,a-=l;let r=s<n.width?s+1:s,d=l<n.height?l+1:l;l=n.height-1-l,d=n.height-1-d;let m=jj(s,l,n.width,n.buffer),h=jj(r,l,n.width,n.buffer),Z=jj(s,d,n.width,n.buffer),b=jj(r,d,n.width,n.buffer),u=g_e(o,a,m,h,Z,b);return u=u*n.scale+n.offset,u}Object.defineProperties(iu.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var pN=bc;var Vjo=R(W(),1);function qj(t){this._layer=t,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(qj.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function _lt(t,e){let n=[];for(let i=0;i<t.length;i++){let o=v.byteToFloat(t[i]);i<3?n.push(jS(o)):n.push(o)}return n.length===3&&(c(e)?n.push(1-e/100):n.push(1)),n}function uN(t,e){let n={edges:void 0,material:void 0};if(c(t)&&c(t.symbolLayers))for(let i=0;i<t.symbolLayers.length;i++){let o=t.symbolLayers[i];if(o.type==="Fill"){let a=o.edges,s=o.outline;if(c(a)?(n.edges={},c(a.color)&&(n.edges.color=_lt(a.color,a.transparency))):c(s)&&(n.edges={},c(s.color)&&(n.edges.color=_lt(s.color,s.transparency))),!e){let l=o.material;c(l)&&(n.material={colorMixMode:l.colorMixMode},c(l.color)&&(n.material.color=_lt(l.color,l.transparency)))}break}}return n}function C_e(t,e){if(c(t.uniqueValueGroups)){let n={};for(let i=0;i<t.uniqueValueGroups.length;i++){let o=t.uniqueValueGroups[i].classes;if(c(o))for(let a=0;a<o.length;a++){let s=uN(o[a].symbol,e),l=o[a].values;for(let r=0;r<l.length;r++){let d=l[r],m=n;for(let h=0;h<d.length;h++){let Z=d[h];h===d.length-1?m[Z]=s:(c(m[Z])||(m[Z]={}),m=m[Z])}}}}return n}if(c(t.uniqueValueInfos)){let n={};for(let i=0;i<t.uniqueValueInfos.length;i++){let o=t.uniqueValueInfos[i];n[o.value]=uN(o.symbol,e)}return n}}function I_e(t,e){if(c(t.classBreakInfos)){let n=[...t.classBreakInfos];n.sort(function(o,a){let s=f(o.classMaxValue,o.classMinValue),l=f(a.classMaxValue,a.classMinValue);return s-l});let i={ranges:[],symbols:[]};c(t.minValue)&&(i.ranges.push(t.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let a=n[o];c(a.classMinValue)&&(i.ranges.length===0||a.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(a.classMinValue),i.symbols.push(void 0)),c(a.classMaxValue)&&(i.ranges.length===0||a.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(a.classMaxValue),i.symbols.push(uN(a.symbol,e)))}return i.symbols.push(void 0),i}}qj.prototype._parseLayerSymbology=function(){let t=this._layer.data.drawingInfo;if(c(t)&&c(t.renderer)){let e=this._layer.data.cachedDrawingInfo,n=c(e)&&e.color===!0,i=t.renderer;i.type==="simple"?this._defaultSymbology=uN(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=uN(i.defaultSymbol,n),this._valueFields.push(i.field1),c(i.field2)&&this._valueFields.push(i.field2),c(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=C_e(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=uN(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=I_e(i,n))}};function x2t(t,e,n,i){let o=e[n];if(i<o.length){let a=o[i],s=t[a];return c(s)&&++n<e.length?x2t(s,e,n,i):s}}function N_e(t,e){let n=0,i=t.length;if(n<i)do{let o=n+i>>>1;t[o]<e?n=o+1:i=o}while(n<i);return n}function y_e(t,e,n){let i=e[n],o=N_e(t.ranges,i);return t.symbols[o]}qj.prototype._getSymbology=async function(t){let e={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let a=0;a<this._valueFields.length;a++)n.push(t.loadField(this._valueFields[a]));await Promise.all(n);let i=[];for(let a=0;a<this._valueFields.length;a++)i.push(t.fields[this._valueFields[a]].values);let o;if(c(this._uniqueValueHash)?o=a=>x2t(this._uniqueValueHash,i,0,a):c(this._classBreaksHash)&&(o=a=>y_e(this._classBreaksHash,i[0],a)),c(o)){let a=i[0];for(let s=0;s<a.length;s++){let l=o(s);c(l)&&(e[s]=l)}}}return e};var q5=qj;function ah(t,e,n){this._dataProvider=t,this._parent=n,!c(e.href)&&c(e.id)&&(e.href=`layers/${e.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${e.href}`),this._version=e.store.version;let a=this._version.split(".");this._majorVersion=parseInt(a[0]),this._minorVersion=a.length>1?parseInt(a[1]):0,this._resource=new te({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=e,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(ah.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(c(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});ah.prototype.load=async function(t){if(this._data.spatialReference.wkid!==4326)throw new St(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new q5(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(t),await this._create3DTileset(t),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};ah.prototype._computeGeometryDefinitions=function(t){if(this._geometryDefinitions=[],c(this._data.geometryDefinitions))for(let e=0;e<this._data.geometryDefinitions.length;e++){let n=[],i=this._data.geometryDefinitions[e].geometryBuffers;for(let o=0;o<i.length;o++){let a=i[o],s=[],l=!1;if(c(a.compressedAttributes)&&t){l=!0;let r=a.compressedAttributes.attributes;for(let d=0;d<r.length;d++)s.push(r[d])}else for(let r in a)r!=="offset"&&s.push(r);n.push({compressed:l,attributes:s,index:i.indexOf(a)})}n.sort(function(o,a){return o.compressed&&!a.compressed?-1:!o.compressed&&a.compressed?1:o.attributes.length-a.attributes.length}),this._geometryDefinitions.push(n)}};ah.prototype._findBestGeometryBuffers=function(t,e){let n=this._geometryDefinitions[t];if(c(n))for(let i=0;i<n.length;++i){let o=n[i],a=!1,s=o.attributes;for(let l=0;l<e.length;l++)if(!s.includes(e[l])){a=!0;break}if(!a)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}return 0};ah.prototype._loadRootNode=function(t){if(c(this._data.nodePages)){let e=0;c(this._data.nodePages.rootIndex)&&(e=this._data.nodePages.rootIndex),this._rootNode=new pN(this,e,!0)}else this._rootNode=new pN(this,this._data.store.rootNode,!0);return this._rootNode.load(t)};ah.prototype._getNodeInNodePages=function(t){let e=Math.floor(t/this._data.nodePages.nodesPerPage),n=t%this._data.nodePages.nodesPerPage;return this._loadNodePage(e).then(function(i){return i.nodes[n]})};ah._fetchJson=function(t){return t.fetchJson()};ah.prototype._loadNodePage=function(t){let e=this;if(!c(this._nodePageFetches[t])){let n=this.resource.getDerivedResource({url:`nodepages/${t}/`}),i=ah._fetchJson(n).then(function(o){return c(o.error)&&o.error.code!==200?Promise.reject(o.error):(e._nodePages[t]=o.nodes,o)});this._nodePageFetches[t]=i}return this._nodePageFetches[t]};ah.prototype._computeExtent=function(){c(this._data.fullExtent)?this._extent=Gt.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):c(this._data.store.extent)&&(this._extent=Gt.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};ah.prototype._create3DTileset=async function(t){let e={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(e)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;c(o)&&!c(t?.outlineColor)&&(t=c(t)?be(t):{},t.outlineColor=v.fromCartesian4(Rt.fromArray(o))),this._tileset=await Pr.fromUrl(i,t),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(a){a._i3sNode._clearGeometryData(),URL.revokeObjectURL(a._contentResource._url),a._contentResource=a._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(a){c(a._i3sNode)&&a._i3sNode._loadChildren()})};ah.prototype._updateVisibility=function(){c(this._tileset)&&(this._tileset.show=this._parent.show)};ah.prototype.filterByAttributes=function(t){this._filters=c(t)?be(t,!0):[];let e=this._rootNode;return c(e)?e._filterFeatures():Promise.resolve()};var ig=ah;var Bjo=R(W(),1);function $j(t,e){this._dataProvider=t,this._resource=new te({url:e}),this._resource.setQueryParameters(t.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties($j.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let t=[],e=this._data.summary;if(c(e))for(let n=0;n<e.length;++n)t.push(e[n].fieldName);return t}}});$j.prototype.load=async function(){return this._data=await RV.loadJson(this._resource),this._data};$j.prototype._getValues=function(t){let e=this._data.summary;if(c(e))for(let n=0;n<e.length;++n){let i=e[n];if(i.fieldName===t)return c(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var $5=$j;var Ljo=R(W(),1);function tD(t,e,n){this._dataProvider=t,this._parent=e,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=f(n.visibility,!0),this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(tD.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(t){if(this._visibility!==t){this._visibility=t;for(let e=0;e<this._i3sLayers.length;e++)this._i3sLayers[e]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});tD._fromData=async function(t,e,n,i){let o=new tD(t,i,n);if(o._data.layerType==="group"){let a=o._data.sublayers;if(c(a)){let s=[];for(let r=0;r<a.length;r++){let d=tD._fromData(t,e,a[r],o);s.push(d)}let l=await Promise.all(s);for(let r=0;r<l.length;r++){let d=l[r];o._sublayers.push(d),o._i3sLayers.push(...d._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let a=e.concat(`/sublayers/${o._data.id}`),s=new te({url:a});s.setQueryParameters(t.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let l=await RV.loadJson(o._resource),r=new ig(t,l,o);o._i3sLayers.push(r)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var eD=tD;var L2t=R(X2t(),1);function Hl(t){t=f(t,f.EMPTY_OBJECT),this._name=t.name,this._show=f(t.show,!0),this._geoidTiledTerrainProvider=t.geoidTiledTerrainProvider,this._showFeatures=f(t.showFeatures,!1),this._adjustMaterialAlphaMode=f(t.adjustMaterialAlphaMode,!1),this._applySymbology=f(t.applySymbology,!1),this._calculateNormals=f(t.calculateNormals,!1),this._cesium3dTilesetOptions=f(t.cesium3dTilesetOptions,f.EMPTY_OBJECT),this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Hl.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(t){if(this._show!==t){this._show=t;for(let e=0;e<this._layers.length;e++)this._layers[e]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Hl.prototype.destroy=function(){for(let t=0;t<this._layers.length;t++)c(this._layers[t]._tileset)&&this._layers[t]._tileset.destroy();return At(this)};Hl.prototype.isDestroyed=function(){return!1};Hl.prototype.update=function(t){for(let e=0;e<this._layers.length;e++)c(this._layers[e]._tileset)&&this._layers[e]._tileset.update(t)};Hl.prototype.prePassesUpdate=function(t){for(let e=0;e<this._layers.length;e++)c(this._layers[e]._tileset)&&this._layers[e]._tileset.prePassesUpdate(t)};Hl.prototype.postPassesUpdate=function(t){for(let e=0;e<this._layers.length;e++)c(this._layers[e]._tileset)&&this._layers[e]._tileset.postPassesUpdate(t)};Hl.prototype.updateForPass=function(t,e){for(let n=0;n<this._layers.length;n++)c(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(t,e)};function B_e(t,e){let n=t.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${e}`),i}async function J2t(t,e,n){if(e.layerType==="Building"){c(n.showFeatures)||(t._showFeatures=!0),c(n.adjustMaterialAlphaMode)||(t._adjustMaterialAlphaMode=!0),c(n.applySymbology)||(t._applySymbology=!0),c(n.calculateNormals)||(t._calculateNormals=!0);let i=B_e(t,e.id);if(c(e.sublayers)){let o=[];for(let s=0;s<e.sublayers.length;s++){let l=eD._fromData(t,i,e.sublayers[s],t);o.push(l)}let a=await Promise.all(o);for(let s=0;s<a.length;s++){let l=a[s];t._sublayers.push(l),t._layers.push(...l._i3sLayers)}}if(c(e.statisticsHRef)){let o=i.concat(`/${e.statisticsHRef}`),a=new $5(t,o);await a.load(),t._attributeStatistics.push(a)}if(c(e.fullExtent)){let o=Gt.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);t._layersExtent.push(o)}}else if(e.layerType==="3DObject"||e.layerType==="IntegratedMesh"){!c(n.calculateNormals)&&!c(e.textureSetDefinitions)&&(t._calculateNormals=!0);let i=new ig(t,e,t);t._layers.push(i),c(i._extent)&&t._layersExtent.push(i._extent)}else console.log(`${e.layerType} layer ${e.name} is skipped as not supported.`)}Hl.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=te.createIfNeeded(t);n.setQueryParameters({f:"pjson"},!0);let i=await Hl.loadJson(n),o=new Hl(e);if(o._resource=n,o._data=i,c(i.layers)){let s=[];for(let l=0;l<i.layers.length;l++){let r=J2t(o,i.layers[l],e);s.push(r)}await Promise.all(s)}else await J2t(o,i,e);o._computeExtent();let a=[];for(let s=0;s<o._layers.length;s++)a.push(o._layers[s].load(e.cesium3dTilesetOptions));return await Promise.all(a),o};Hl._fetchJson=function(t){return t.fetchJson()};Hl.loadJson=async function(t){let e=await Hl._fetchJson(t);if(c(e.error)){if(console.error("Failed to fetch I3S ",t.url),c(e.error.message)&&console.error(e.error.message),c(e.error.details))for(let n=0;n<e.error.details.length;n++)console.log(e.error.details[n]);throw new St(e.error)}return e};Hl.prototype._loadBinary=async function(t){let e=await t.fetchArrayBuffer();if(e.byteLength>0&&new Uint8Array(e)[0]===123&&new TextDecoder().decode(e).includes("404"))throw new St(`Failed to load binary: ${t.url}`);return e};Hl.prototype._binarizeGltf=function(t){let n=new TextEncoder().encode(JSON.stringify(t)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Q_e=new K;function k_e(t,e){let n=t.tilingScheme,i=[],o={},a=t._lodCount,s=gt.fromRadians(e.west,e.north),l=gt.fromRadians(e.east,e.south),r=n.positionToTileXY(s,a),d=n.positionToTileXY(l,a);for(let h=r.x;h<=d.x;h++)for(let Z=r.y;Z<=d.y;Z++){let b=K.fromElements(h,Z,Q_e),u=b.toString();if(!o.hasOwnProperty(u)){let F={x:b.x,y:b.y,level:a,tilingScheme:n,terrainProvider:t,positions:[]};o[u]=F,i.push(F)}}let m=[];for(let h=0;h<i.length;++h){let Z=i[h],b=Z.terrainProvider.requestTileGeometry(Z.x,Z.y,Z.level);m.push(b)}return Promise.all(m).then(function(h){let Z=[];for(let b=0;b<h.length;b++){let u={tilingScheme:n,x:i[b].x,y:i[b].y,level:i[b].level},F=h[b],U="Geographic";n._projection instanceof Yo&&(U="WebMercator");let G={projectionType:U,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(u.x,u.y,u.level),height:F._height,width:F._width,scale:F._structure.heightScale,offset:F._structure.heightOffset};if(F._encoding===Uu.LERC){let A=L2t.default.decode(F._buffer);G.buffer=A.pixels[0]}else G.buffer=F._buffer;Z.push(G)}return Z})}async function Y_e(t){let e=t._geoidTiledTerrainProvider;if(c(e))try{let n=await k_e(e,t._extent);t._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Hl.prototype.loadGeoidData=async function(){return c(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=Y_e(this),this._geoidDataPromise)};Hl.prototype._computeExtent=function(){let t;for(let e=0;e<this._layersExtent.length;e++){let n=this._layersExtent[e];c(t)?Gt.union(t,n,t):t=Gt.clone(n)}this._extent=t};Hl.prototype.getAttributeNames=function(){let t=[];for(let e=0;e<this._attributeStatistics.length;++e)t.push(...this._attributeStatistics[e].names);return t};Hl.prototype.getAttributeValues=function(t){for(let e=0;e<this._attributeStatistics.length;++e){let n=this._attributeStatistics[e]._getValues(t);if(c(n))return n}return[]};Hl.prototype.filterByAttributes=function(t){let e=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(t);e.push(i)}return Promise.all(e)};var RV=Hl;var s4o=R(W(),1);function M2t(){}Object.defineProperties(M2t.prototype,{color:{get:Ut.throwInstantiationError},intensity:{get:Ut.throwInstantiationError}});var Dlt=M2t;var u4o=R(W(),1);function x_e(){return window.devicePixelRatio||1}function X_e(t,e,n){n||(n=x_e());let i=document.createElement("canvas");return i.width=t*n,i.height=e*n,i.style.width=`${t}px`,i.style.height=`${e}px`,i.getContext("2d").scale(n,n),i}function J_e({entity:t,text:e,fontSize:n="14",fontFamily:i="Helvetica",fontStyle:o="",fillStyle:a="white",bgColor:s="#111",lineWidth:l=2,cornerRadius:r=3,horizontalOrigin:d=to.LEFT,verticalOrigin:m=hi.CENTER,scaleByDistance:h=new ln(150,1,8e6,.35),pixelOffset:Z=new K(20,0)}){if(!t._labelCanvas||t._labelCanvasText!==e){let b=`${o} ${n}px ${i}`,u=document.createElement("div");u.style.position="absolute",u.style.font=b,u.innerHTML=e,document.body.appendChild(u);let{height:F,width:U}=u.getBoundingClientRect(),G=X_e(U*1.1,F*1.5,devicePixelRatio);G.width=U*1.1,G.height=F*1.5,document.body.removeChild(u);let A=G.getContext("2d");A.font=b,A.beginPath(),A.moveTo(r,0),A.lineTo(G.width-r,0),A.arcTo(G.width,0,G.width,r,r),A.lineTo(G.width,G.height-r),A.arcTo(G.width,G.height,G.width-r,G.height,r),A.lineTo(r,G.height),A.arcTo(0,G.height,0,G.height-r,r),A.lineTo(0,r),A.arcTo(0,0,r,0,r),A.closePath(),A.fillStyle=s,A.fill(),A.textAlign="center",A.textBaseline="middle",A.fillStyle=a,A.lineWidth=l;let T=G.width/2,g=G.height/2;A.fillText(e,T,g),t._labelCanvas=G,t._labelCanvasText=e}t.billboard=new Mr({image:new Ii(t._labelCanvas),horizontalOrigin:d,verticalOrigin:m,scaleByDistance:h,width:t._labelCanvas.width,height:t._labelCanvas.height,pixelOffset:Z})}var Olt=J_e;var F4o=R(W(),1);var L_e=/\/$/,_2t=new on('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function ZN(t){t=f(t,f.EMPTY_OBJECT);let e=t.styleId,n=t.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=te.createIfNeeded(f(t.url,"https://api.mapbox.com/styles/v1/"));this._styleId=e,this._accessToken=n;let o=f(t.tilesize,512);this._tilesize=o;let a=f(t.username,"mapbox");this._username=a;let s=c(t.scaleFactor)?"@2x":"",l=i.getUrlComponent();L_e.test(l)||(l+="/"),l+=`${this._username}/${e}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=l,i.setQueryParameters({access_token:n});let r;c(t.credit)?(r=t.credit,typeof r=="string"&&(r=new on(r))):r=_2t,this._resource=i,this._imageryProvider=new Ad({url:i,credit:r,ellipsoid:t.ellipsoid,minimumLevel:t.minimumLevel,maximumLevel:t.maximumLevel,rectangle:t.rectangle})}Object.defineProperties(ZN.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});ZN.prototype.getTileCredits=function(t,e,n){};ZN.prototype.requestImage=function(t,e,n,i){return this._imageryProvider.requestImage(t,e,n,i)};ZN.prototype.pickFeatures=function(t,e,n,i,o){return this._imageryProvider.pickFeatures(t,e,n,i,o)};ZN._defaultCredit=_2t;var Hlt=ZN;var G4o=R(W(),1);function wlt(t){}wlt.prototype.isReady=function(){return!0};wlt.prototype.shouldDiscardImage=function(t){return!1};var Plt=wlt;var y4o=R(W(),1);var M_e=new on("MapQuest, Open Street Map and contributors, CC-BY-SA");function e4(t){t=f(t,f.EMPTY_OBJECT);let e=te.createIfNeeded(f(t.url,"https://tile.openstreetmap.org/"));e.appendForwardSlash(),e.url+=`{z}/{x}/{y}${t.retinaTiles?"@2x":""}.${f(t.fileExtension,"png")}`;let n=new Gs({ellipsoid:t.ellipsoid}),i=256,o=256,a=f(t.minimumLevel,0),s=t.maximumLevel,l=f(t.rectangle,n.rectangle),r=n.positionToTileXY(Gt.southwest(l),a),d=n.positionToTileXY(Gt.northeast(l),a),m=(Math.abs(d.x-r.x)+1)*(Math.abs(d.y-r.y)+1),h=f(t.credit,M_e);typeof h=="string"&&(h=new on(h)),Ad.call(this,{url:e,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:a,maximumLevel:s,rectangle:l})}c(Object.create)&&(e4.prototype=Object.create(Ad.prototype),e4.prototype.constructor=e4);var IW=e4;var J4o=R(W(),1);var __e=new K(1,1);function vlt(t){t=f(t,f.EMPTY_OBJECT),this.mass=f(t.mass,1),this.position=p.clone(f(t.position,p.ZERO)),this.velocity=p.clone(f(t.velocity,p.ZERO)),this.life=f(t.life,Number.MAX_VALUE),this.image=t.image,this.startColor=v.clone(f(t.startColor,v.WHITE)),this.endColor=v.clone(f(t.endColor,v.WHITE)),this.startScale=f(t.startScale,1),this.endScale=f(t.endScale,1),this.imageSize=K.clone(f(t.imageSize,__e)),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(vlt.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var D2t=new p;vlt.prototype.update=function(t,e){return p.multiplyByScalar(this.velocity,t,D2t),p.add(this.position,D2t,this.position),c(e)&&e(this,t),this._age+=t,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var VN=vlt;var _4o=R(W(),1);function O2t(t){t=f(t,f.EMPTY_OBJECT),this.time=f(t.time,0),this.minimum=f(t.minimum,0),this.maximum=f(t.maximum,50),this._complete=!1}Object.defineProperties(O2t.prototype,{complete:{get:function(){return this._complete}}});var Klt=O2t;var H4o=R(W(),1);function H2t(t){}H2t.prototype.emit=function(t){Ut.throwInstantiationError()};var zlt=H2t;var s8o=R(W(),1);var w2t=new K(1,1);function nD(t){t=f(t,f.EMPTY_OBJECT),this.show=f(t.show,!0),this.updateCallback=t.updateCallback,this.loop=f(t.loop,!0),this.image=f(t.image,void 0);let e=t.emitter;c(e)||(e=new M5(.5)),this._emitter=e,this._bursts=t.bursts,this._modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._emitterModelMatrix=L.clone(f(t.emitterModelMatrix,L.IDENTITY)),this._matrixDirty=!0,this._combinedMatrix=new L,this._startColor=v.clone(f(t.color,f(t.startColor,v.WHITE))),this._endColor=v.clone(f(t.color,f(t.endColor,v.WHITE))),this._startScale=f(t.scale,f(t.startScale,1)),this._endScale=f(t.scale,f(t.endScale,1)),this._emissionRate=f(t.emissionRate,5),this._minimumSpeed=f(t.speed,f(t.minimumSpeed,1)),this._maximumSpeed=f(t.speed,f(t.maximumSpeed,1)),this._minimumParticleLife=f(t.particleLife,f(t.minimumParticleLife,5)),this._maximumParticleLife=f(t.particleLife,f(t.maximumParticleLife,5)),this._minimumMass=f(t.mass,f(t.minimumMass,1)),this._maximumMass=f(t.mass,f(t.maximumMass,1)),this._minimumImageSize=K.clone(f(t.imageSize,f(t.minimumImageSize,w2t))),this._maximumImageSize=K.clone(f(t.imageSize,f(t.maximumImageSize,w2t))),this._sizeInMeters=f(t.sizeInMeters,!1),this._lifetime=f(t.lifetime,Number.MAX_VALUE),this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new It,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(nD.prototype,{emitter:{get:function(){return this._emitter},set:function(t){this._emitter=t}},bursts:{get:function(){return this._bursts},set:function(t){this._bursts=t,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(t){this._matrixDirty=this._matrixDirty||!L.equals(this._modelMatrix,t),L.clone(t,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(t){this._matrixDirty=this._matrixDirty||!L.equals(this._emitterModelMatrix,t),L.clone(t,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(t){v.clone(t,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(t){v.clone(t,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(t){this._startScale=t}},endScale:{get:function(){return this._endScale},set:function(t){this._endScale=t}},emissionRate:{get:function(){return this._emissionRate},set:function(t){this._emissionRate=t,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(t){this._minimumSpeed=t}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(t){this._maximumSpeed=t}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(t){this._minimumParticleLife=t}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(t){this._maximumParticleLife=t,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(t){this._minimumMass=t}},maximumMass:{get:function(){return this._maximumMass},set:function(t){this._maximumMass=t}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(t){this._minimumImageSize=t}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(t){this._maximumImageSize=t}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(t){this._sizeInMeters=t}},lifetime:{get:function(){return this._lifetime},set:function(t){this._lifetime=t}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function D_e(t){let e=t._emissionRate,n=t._maximumParticleLife,i=0,o=t._bursts;if(c(o)){let h=o.length;for(let Z=0;Z<h;++Z)i+=o[Z].maximum}let a=t._billboardCollection,s=t.image,l=Math.ceil(e*n+i),r=t._particles,d=t._particlePool,m=Math.max(l-r.length-d.length,0);for(let h=0;h<m;++h){let Z=new VN;Z._billboard=a.add({image:s,show:!1}),d.push(Z)}t._particleEstimate=l}function O_e(t){let e=t._particlePool.pop();return c(e)||(e=new VN),e}function H_e(t,e){t._particlePool.push(e)}function w_e(t){let e=t._particles,n=t._particlePool,i=t._billboardCollection,o=e.length,a=n.length,s=t._particleEstimate,l=a-Math.max(s-o-a,0);for(let r=l;r<a;++r){let d=n[r];i.remove(d._billboard)}n.length=l}function P_e(t){c(t._billboard)&&(t._billboard.show=!1)}function P2t(t,e){let n=e._billboard;c(n)||(n=e._billboard=t._billboardCollection.add({image:e.image})),n.width=e.imageSize.x,n.height=e.imageSize.y,n.position=e.position,n.sizeInMeters=t.sizeInMeters,n.show=!0;let i=k.lerp(e.startColor.red,e.endColor.red,e.normalizedAge),o=k.lerp(e.startColor.green,e.endColor.green,e.normalizedAge),a=k.lerp(e.startColor.blue,e.endColor.blue,e.normalizedAge),s=k.lerp(e.startColor.alpha,e.endColor.alpha,e.normalizedAge);n.color=new v(i,o,a,s),n.scale=k.lerp(e.startScale,e.endScale,e.normalizedAge)}function v_e(t,e){e.startColor=v.clone(t._startColor,e.startColor),e.endColor=v.clone(t._endColor,e.endColor),e.startScale=t._startScale,e.endScale=t._endScale,e.image=t.image,e.life=k.randomBetween(t._minimumParticleLife,t._maximumParticleLife),e.mass=k.randomBetween(t._minimumMass,t._maximumMass),e.imageSize.x=k.randomBetween(t._minimumImageSize.x,t._maximumImageSize.x),e.imageSize.y=k.randomBetween(t._minimumImageSize.y,t._maximumImageSize.y),e._normalizedAge=0,e._age=0;let n=k.randomBetween(t._minimumSpeed,t._maximumSpeed);p.multiplyByScalar(e.velocity,n,e.velocity),t._particles.push(e)}function K_e(t,e){if(t._isComplete)return 0;e=k.mod(e,t._lifetime);let n=e*t._emissionRate,i=Math.floor(n);if(t._carryOver+=n-i,t._carryOver>1&&(i++,t._carryOver-=1),c(t.bursts)){let o=t.bursts.length;for(let a=0;a<o;a++){let s=t.bursts[a],l=t._currentTime;c(s)&&!s._complete&&l>s.time&&(i+=k.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var n4=new p;nD.prototype.update=function(t){if(!this.show)return;c(this._billboardCollection)||(this._billboardCollection=new yh),this._updateParticlePool&&(D_e(this),this._updateParticlePool=!1);let e=0;this._previousTime&&(e=rt.secondsDifference(t.time,this._previousTime)),e<0&&(e=0);let n=this._particles,i=this._emitter,o=this.updateCallback,a,s,l=n.length;for(a=0;a<l;++a)s=n[a],s.update(e,o)?P2t(this,s):(P_e(s),H_e(this,s),n[a]=n[l-1],--a,--l);n.length=l;let r=K_e(this,e);if(r>0&&c(i)){this._matrixDirty&&(this._combinedMatrix=L.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let d=this._combinedMatrix;for(a=0;a<r;a++)s=O_e(this),this._emitter.emit(s),p.add(s.position,s.velocity,n4),L.multiplyByPoint(d,n4,n4),s.position=L.multiplyByPoint(d,s.position,s.position),p.subtract(n4,s.position,s.velocity),p.normalize(s.velocity,s.velocity),v_e(this,s),P2t(this,s)}if(this._billboardCollection.update(t),this._previousTime=rt.clone(t.time,this._previousTime),this._currentTime+=e,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=k.mod(this._currentTime,this._lifetime),this.bursts){let d=this.bursts.length;for(a=0;a<d;a++)this.bursts[a]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);t.frameNumber%120===0&&w_e(this)};nD.prototype.isDestroyed=function(){return!1};nD.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),At(this)};var jlt=nD;var m8o=R(W(),1);var bN={},NW;async function z_e(t,e,n,i=!0){let a=`${e||"https://api.planet.com/basemaps/v1/mosaics/wmts"}?api_key=${n}`,l=await(await fetch(a)).text(),d=new DOMParser().parseFromString(l,"application/xml").getElementsByTagName("ResourceURL");NW=i?"monthly":"quarterly",bN[NW]=[],Array.from(d).forEach(b=>{let u=b.getAttribute("template");if(u.includes(NW)){let F=`.*/(.*?${NW}.*?)/.*`,U=new RegExp(F),G=u.match(U)[1];bN[NW].push(G)}}),bN[NW].sort();let m=q_e(bN[NW],i),h=ys.fromIso8601DateArray({iso8601Dates:m,leadingInterval:!0,trailingInterval:!0,isStopIncluded:!1,dataCallback:j_e}),Z=new hS({url:`https://tiles{s}.planet.com/basemaps/v1/planet-tiles/{Name}/gmap/{TileMatrix}/{TileCol}/{TileRow}.png?api_key=${n}`,layer:"planet",style:"default",tileMatrixSetID:"GoogleMapsCompatible15",tileWidth:256,tileHeight:256,minimumLevel:0,maximumLevel:15,tilingScheme:new Gs({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1}),format:"image/png",subdomains:"0123",clock:t.clock,times:h,credit:"PLANET"});t.imageryLayers.addImageryProvider(Z)}function j_e(t,e){let n;return e<=1?n=bN[NW][0]:n=bN[NW][e-1],{Name:n}}function q_e(t,e){let n=[];return t.forEach(i=>{if(e){let o=i.split("_"),a=`${o[2]}-${o[3]}-01T00:00:00Z`;n.push(a)}else{let o={q1:"-01-01",q2:"-04-01",q3:"-07-01",q4:"-10-01"},a=i.split("_")[2],s=a.slice(0,4),l=a.slice(4,6),r=`${s}${o[l]}T00:00:00Z`;n.push(r)}}),n}var qlt=z_e;var $8o=R(W(),1);var z2t=R(KO(),1);var p8o=R(W(),1);function $_e(t,e,n){return` float clipDistance = clip(gl_FragCoord, ${t}, ${e}); +`;function tg(t){t=f(t,f.EMPTY_OBJECT);let e=f(t.translucent,!0),n=f(t.aboveGround,!1);this.material=c(t.material)?t.material:eo.fromType(eo.ColorType),this.translucent=f(t.translucent,!0),this._vertexShaderSource=f(t.vertexShaderSource,H5),this._fragmentShaderSource=f(t.fragmentShaderSource,O5),this._renderState=Va.getDefaultRenderState(e,!n,t.renderState),this._closed=!1,this._flat=f(t.flat,!1),this._faceForward=f(t.faceForward,n),this._aboveGround=n}Object.defineProperties(tg.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return tg.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});tg.VERTEX_FORMAT=ee.POSITION_AND_ST;tg.prototype.getFragmentShaderSource=Va.prototype.getFragmentShaderSource;tg.prototype.isTranslucent=Va.prototype.isTranslucent;tg.prototype.getRenderState=Va.prototype.getRenderState;var klt=tg;var wKo=b(W(),1);function w5(t){if(t=f(t,f.EMPTY_OBJECT),!c(t.id))throw new Ut("options.id is required.");if(!c(EH[t.id]))throw new Ut(`options.id ${t.id} is not found in embedded imagery provider`);if(!c(t.path))throw new Ut("options.path is required.");if(!c(EH[t.id][`/${t.path}/0/0/0.jpg`]))throw new Ut(`options.path ${t.path} is not found in embedded imagery provider`);this._staticImagerySource=EH[t.id],this._staticImageryPath=t.path,this._tilingScheme=this._staticImagerySource.tilemapresource.TileMap.SRS.indexOf("4326")>-1?new Qo({ellipsoid:mt.WGS84}):new Gs({ellipsoid:mt.WGS84}),this._reverseY=!(this._staticImagerySource.tilemapresource.TileMap.SRS.indexOf("4326")>-1);let{width:e,height:n}=this._staticImagerySource.tilemapresource.TileMap.TileFormat[0].$;this._tileWidth=e,this._tileHeight=n,this._minimumLevel=0,this._maximumLevel=this._staticImagerySource.tilemapresource.TileMap.TileSets[0].TileSet.length-1,this._rectangle=this._tilingScheme.rectangle,this._errorEvent=new It;let i=t.credit;this._credit=typeof i=="string"?new on(i):i,this._readyPromise=kd()}function qMe(t,e,n,i,o,a){let s=t._staticImagerySource[`/${t._staticImageryPath}/${i}/${e}/${n}.jpg`];return s?te.fetchImage({url:s}):null}Object.defineProperties(w5.prototype,{url:{get:function(){return this._resource.url}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},ready:{value:!0},readyPromise:{get:function(){return this._readyPromise.promise}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(t){this._timeDynamicImagery.clock=t}},times:{get:function(){return this._timeDynamicImagery.times},set:function(t){this._timeDynamicImagery.times=t}}});w5.prototype.getTileCredits=function(t,e,n){};w5.prototype.pickFeatures=function(t,e,n,i,o){};w5.prototype.requestImage=function(t,e,n,i){let o,a;return this._reverseY&&(e=this.tilingScheme.getNumberOfYTilesAtLevel(n)-e-1),c(o)||(o=qMe(this,t,e,n,i,a)),o};var Ylt=w5;var tzo=b(W(),1);function oh(t){this._scene=t.scene,this.samplingWindow=f(t.samplingWindow,oh.defaultSettings.samplingWindow),this.quietPeriod=f(t.quietPeriod,oh.defaultSettings.quietPeriod),this.warmupPeriod=f(t.warmupPeriod,oh.defaultSettings.warmupPeriod),this.minimumFrameRateDuringWarmup=f(t.minimumFrameRateDuringWarmup,oh.defaultSettings.minimumFrameRateDuringWarmup),this.minimumFrameRateAfterWarmup=f(t.minimumFrameRateAfterWarmup,oh.defaultSettings.minimumFrameRateAfterWarmup),this._lowFrameRate=new It,this._nominalFrameRate=new It,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let e=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,a){$Me(e,a)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){t_e(e)}this._visibilityChangeRemoveListener=void 0,c(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}oh.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};oh.fromScene=function(t){return(!c(t._frameRateMonitor)||t._frameRateMonitor.isDestroyed())&&(t._frameRateMonitor=new oh({scene:t})),t._frameRateMonitor};Object.defineProperties(oh.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});oh.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};oh.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};oh.prototype.isDestroyed=function(){return!1};oh.prototype.destroy=function(){return this._preUpdateRemoveListener(),c(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),At(this)};function $Me(t,e){if(t._pauseCount>0)return;let n=Oi();if(t._needsQuietPeriod)t._needsQuietPeriod=!1,t._frameTimes.length=0,t._quietPeriodEndTime=n+t.quietPeriod/xi.SECONDS_PER_MILLISECOND,t._warmupPeriodEndTime=t._quietPeriodEndTime+(t.warmupPeriod+t.samplingWindow)/xi.SECONDS_PER_MILLISECOND;else if(n>=t._quietPeriodEndTime){t._frameTimes.push(n);let i=n-t.samplingWindow/xi.SECONDS_PER_MILLISECOND;if(t._frameTimes.length>=2&&t._frameTimes[0]<=i){for(;t._frameTimes.length>=2&&t._frameTimes[1]<i;)t._frameTimes.shift();let o=(n-t._frameTimes[0])/(t._frameTimes.length-1);t._lastFramesPerSecond=1e3/o;let a=1e3/(n>t._warmupPeriodEndTime?t.minimumFrameRateAfterWarmup:t.minimumFrameRateDuringWarmup);o>a?t._frameRateIsLow||(t._frameRateIsLow=!0,t._needsQuietPeriod=!0,t.lowFrameRate.raiseEvent(t.scene,t._lastFramesPerSecond)):t._frameRateIsLow&&(t._frameRateIsLow=!1,t._needsQuietPeriod=!0,t.nominalFrameRate.raiseEvent(t.scene,t._lastFramesPerSecond))}}}function t_e(t){document[t._hiddenPropertyName]?t.pause():t.unpause()}var P5=oh;var Vzo=b(W(),1);var Bkt=b(wst(),1);function xlt(){this._image=new Image}xlt.prototype.isReady=function(){return!0};xlt.prototype.shouldDiscardImage=function(t){return t===this._image};function eg(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=t.tileDiscardPolicy,this._tilingScheme=new Qo({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new Gt(-k.PI,-k.PI,k.PI,k.PI),ellipsoid:t.ellipsoid});let e=t.credit;typeof e=="string"&&(e=new on(e)),this._credit=e,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,c(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new xlt),this._errorEvent=new It}Object.defineProperties(eg.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});eg.fromMetadata=function(t,e){if(!t.imageryPresent)throw new Tt(`The server ${t.url} doesn't have imagery`);let n=new eg(e);return n._metadata=t,n};eg.prototype.getTileCredits=function(t,e,n){let i=this._metadata,o=i.getTileInformation(t,e,n);if(c(o)){let a=i.providers[o.imageryProvider];if(c(a))return[a]}};eg.prototype.requestImage=function(t,e,n,i){let o=this._tileDiscardPolicy._image,a=this._metadata,s=EW.tileXYToQuadKey(t,e,n),l=a.getTileInformation(t,e,n);if(!c(l)){if(a.isValid(s)){let d=new us({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});a.populateSubtree(t,e,n,d);return}return Promise.resolve(o)}if(!l.hasImagery())return Promise.resolve(o);let r=e_e(this,l,t,e,n,i).fetchArrayBuffer();if(c(r))return r.then(function(d){Q5(a.key,d);let m=new Uint8Array(d),h,u=a.protoImagery;if((!c(u)||!u)&&(h=n_e(m)),!c(h)&&(!c(u)||u)){let R=i_e(m);h=R.imageType,m=R.imageData}return!c(h)||!c(m)?o:uA({uint8Array:m,format:h,flipY:!0})})};eg.prototype.pickFeatures=function(t,e,n,i,o){};function e_e(t,e,n,i,o,a){let s=EW.tileXYToQuadKey(n,i,o),l=e.imageryVersion;return l=c(l)&&l>0?l:1,t._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${l.toString()}`,request:a})}function n_e(t){let e="JFIF";if(t[6]===e.charCodeAt(0)&&t[7]===e.charCodeAt(1)&&t[8]===e.charCodeAt(2)&&t[9]===e.charCodeAt(3))return"image/jpeg";let n="PNG";if(t[1]===n.charCodeAt(0)&&t[2]===n.charCodeAt(1)&&t[3]===n.charCodeAt(2))return"image/png"}function i_e(t){let e=Bkt.Reader.create(t),n=e.len,i={};for(;e.pos<n;){let s=e.uint32(),l;switch(s>>>3){case 1:i.imageType=e.uint32();break;case 2:i.imageData=e.bytes();break;case 3:i.alphaType=e.uint32();break;case 4:i.imageAlpha=e.bytes();break;case 5:if(l=i.copyrightIds,c(l)||(l=i.copyrightIds=[]),(s&7)===2){let r=e.uint32()+e.pos;for(;e.pos<r;)l.push(e.uint32())}else l.push(e.uint32());break;default:e.skipType(s&7);break}}let o=i.imageType;if(c(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new Tt("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let a=i.alphaType;return c(a)&&a!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var Xlt=eg;var Fzo=b(W(),1);var o_e=new v(1,1,1,.4),a_e=new v(0,1,0,.05),s_e=new v(0,.5,0,.2);function ng(t){t=f(t,f.EMPTY_OBJECT),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=c(t.tilingScheme)?t.tilingScheme:new Qo({ellipsoid:t.ellipsoid}),this._cells=f(t.cells,8),this._color=f(t.color,o_e),this._glowColor=f(t.glowColor,a_e),this._glowWidth=f(t.glowWidth,6),this._backgroundColor=f(t.backgroundColor,s_e),this._errorEvent=new It,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._canvasSize=f(t.canvasSize,256),this._canvas=this._createGridCanvas()}Object.defineProperties(ng.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});ng.prototype._drawGrid=function(t){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let a=1+i/this._cells*(n-1);t.moveTo(a,0),t.lineTo(a,n),t.moveTo(0,a),t.lineTo(n,a)}t.stroke()};ng.prototype._createGridCanvas=function(){let t=document.createElement("canvas");t.width=this._canvasSize,t.height=this._canvasSize;let e=0,n=this._canvasSize,i=t.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(e,e,n,n);let a=this._glowColor.toCssColorString();i.strokeStyle=a,i.lineWidth=this._glowWidth,i.strokeRect(e,e,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(e,e,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(e,e,n,n),i.lineWidth=1,this._drawGrid(i),t};ng.prototype.getTileCredits=function(t,e,n){};ng.prototype.requestImage=function(t,e,n,i){return Promise.resolve(this._canvas)};ng.prototype.pickFeatures=function(t,e,n,i,o){};var Jlt=ng;var i4o=b(W(),1);var Ejo=b(W(),1);var cjo=b(W(),1);var Nzo=b(W(),1);function RZ(){}RZ._maxDecodingConcurrency=Math.max(In.hardwareConcurrency-1,1);RZ._decodeTaskProcessor=new $i("decodeI3S",RZ._maxDecodingConcurrency);RZ._promise=void 0;async function l_e(){if(await RZ._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return RZ._decodeTaskProcessor;throw new Tt("I3S decoder could not be initialized.")}RZ.decode=async function(t,e,n,i,o){return c(RZ._promise)||(RZ._promise=l_e()),RZ._promise.then(function(a){let s=n._parent._data,l=n._parent._inverseRotationMatrix,r=0,d=0,m=0;c(s.obb)?(r=s.obb.center[0],d=s.obb.center[1],m=s.obb.center[2]):c(s.mbs)&&(r=s.mbs[0],d=s.mbs[1],m=s.mbs[2]);let h=ot.fromRotationX(-k.PI_OVER_TWO),u=new ot;ot.multiply(h,l,u);let R=gt.fromDegrees(r,d,m),V=mt.WGS84.cartographicToCartesian(R),F={binaryData:n._data,featureData:c(i)&&c(i[0])?i[0].data:void 0,schema:e,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:mt.WGS84.radiiSquared,url:t,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:R,cartesianCenter:V,parentRotation:u,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return a.scheduleTask(F)})};var v5=RZ;var kzo=b(W(),1);function Llt(t,e){this._parent=t,this._dataProvider=t._dataProvider,this._layer=t._layer,c(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${e}`}):this._resource=this._parent.resource.getDerivedResource({url:e})}Object.defineProperties(Llt.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});Llt.prototype.load=async function(){return this._data=await bZ.loadJson(this._resource),this._data};var K5=Llt;var Jzo=b(W(),1);function CW(t,e){this._storageInfo=e,this._parent=t,this._dataProvider=t._dataProvider,this._loadPromise=void 0;let n=`attributes/${e.key}/0`;c(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(CW.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(c(this._values)){if(c(this._values.attributeValues))return this._values.attributeValues;if(c(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function zj(t){return t==="UInt8"||t==="Int8"?1:t==="UInt16"||t==="Int16"?2:t==="UInt32"||t==="Int32"||t==="Oid32"||t==="Float32"?4:t==="UInt64"||t==="Int64"||t==="Float64"?8:0}function r_e(t){return t==="String"?1:zj(t)}async function d_e(t){let e=await t._dataProvider._loadBinary(t._resource),n=new DataView(e);t._data=e,t._validateHeader(n);let i=t._parseHeader(n),o=t._getBodyOffset(i);t._validateBody(n,o),t._parseBody(n,o)}CW.prototype.load=function(){return c(this._loadPromise)?this._loadPromise:(this._loadPromise=d_e(this).catch(function(t){console.error(t)}),this._loadPromise)};CW.prototype._parseValue=function(t,e,n){let i;if(e==="UInt8")i=t.getUint8(n),n+=1;else if(e==="Int8")i=t.getInt8(n),n+=1;else if(e==="UInt16")i=t.getUint16(n,!0),n+=2;else if(e==="Int16")i=t.getInt16(n,!0),n+=2;else if(e==="UInt32")i=t.getUint32(n,!0),n+=4;else if(e==="Oid32")i=t.getUint32(n,!0),n+=4;else if(e==="Int32")i=t.getInt32(n,!0),n+=4;else if(e==="UInt64"){let o=t.getUint32(n,!0),a=t.getUint32(n+4,!0);i=o+Math.pow(2,32)*a,n+=8}else if(e==="Int64"){let o=t.getUint32(n,!0),a=t.getUint32(n+4,!0);a<Math.pow(2,31)?i=o+Math.pow(2,32)*a:i=o+Math.pow(2,32)*(a-Math.pow(2,32)),n+=8}else e==="Float32"?(i=t.getFloat32(n,!0),n+=4):e==="Float64"?(i=t.getFloat64(n,!0),n+=8):e==="String"&&(i=String.fromCharCode(t.getUint8(n)),n+=1);return{value:i,offset:n}};CW.prototype._parseHeader=function(t){let e=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(t,i.valueType,e);this._header[i.property]=o.value,e=o.offset}return e};CW.prototype._parseBody=function(t,e){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,a=this._storageInfo[o];if(c(a)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(a.valueType!=="String"){let l=this._parseValue(t,a.valueType,e);this._values[o].push(l.value),e=l.offset}else{let l=this._values.attributeByteCounts[s],r="";for(let d=0;d<l;++d){let m=this._parseValue(t,a.valueType,e);m.value.charCodeAt(0)!==0&&(r+=m.value),e=m.offset}this._values[o].push(r)}}}};CW.prototype._getBodyOffset=function(t){let e=0;return c(this._storageInfo.attributeValues)?e=zj(this._storageInfo.attributeValues.valueType):c(this._storageInfo.objectIds)&&(e=zj(this._storageInfo.objectIds.valueType)),e>0?Math.ceil(t/e)*e:t};CW.prototype._validateHeader=function(t){let e=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];e+=r_e(i.valueType)}if(t.byteLength<e)throw new Tt(`Invalid attribute buffer size (field: ${this.name}, header: ${e}, actual: ${t.byteLength})`)};CW.prototype._validateBody=function(t,e){if(!c(this._header.count))throw new Tt(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&e<t.byteLength;i++){let o=this._storageInfo.ordering[i],a=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[a];if(c(s))if(s.valueType!=="String"){a==="attributeByteCounts"&&(n=e);let l=zj(s.valueType);e+=l*this._header.count}else{if(!c(n))throw new Tt(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let l=0;l<this._header.count&&e<t.byteLength;++l){let r=this._parseValue(t,this._storageInfo.attributeByteCounts.valueType,n);e+=r.value,n=r.offset}}else throw new Tt(`Invalid attribute buffer (field: ${this.name}, ${a} is missing)`)}if(t.byteLength<e)throw new Tt(`Invalid attribute buffer size (field: ${this.name}, expected: ${e}, actual: ${t.byteLength})`)};var z5=CW;var wzo=b(W(),1);function j5(t,e){let n=t._dataProvider,i=t._layer,o;c(t._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${t._data.mesh.geometry.resource}/${e}`}):o=t.resource.getDerivedResource({url:e}),this._parent=t,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(j5.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});j5.prototype.load=function(){let t=this;return this._dataProvider._loadBinary(this._resource).then(function(e){return t._data=e,e})};var c_e=new p,m_e=new p,h_e=new p,p_e=new p,V_e=new p;function Mlt(t,e,n,i){let o=p.subtract(i,n,c_e),a=p.cross(o,p.subtract(t,n,m_e),p_e),s=p.cross(o,p.subtract(e,n,h_e),V_e);return p.dot(a,s)>=0}var u_e=new p,Z_e=new p,R_e=new p,b_e=new p,W_e=new p,f_e=new p,F_e=new p,U_e=new p,G_e=new p,A_e=new p;j5.prototype.getClosestPointIndexOnTriangle=function(t,e,n){if(c(this._customAttributes)&&c(this._customAttributes.positions)){let i=new p(t,e,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,ot.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,a,s,l,r,d=this._customAttributes.positions,m=this._customAttributes.indices,h;c(m)?h=m.length:h=d.length/3;for(let u=0;u<h;u++){let R,V,F;c(m)?(R=m[u],V=m[u+1],F=m[u+2]):(R=u*3,V=u*3+1,F=u*3+2);let U=p.fromElements(d[R*3],d[R*3+1],d[R*3+2],u_e),G=p.fromElements(d[V*3],d[V*3+1],d[V*3+2],Z_e),A=new p(d[F*3],d[F*3+1],d[F*3+2],R_e);if(!Mlt(i,U,G,A)||!Mlt(i,G,U,A)||!Mlt(i,A,U,G))continue;let S=p.subtract(G,U,b_e),g=p.subtract(A,U,W_e),C=p.cross(S,g,f_e);if(p.magnitude(C)===0)continue;let y=p.normalize(C,F_e),Y=p.subtract(i,U,U_e),Q=Math.abs(p.dot(Y,y));if(Q<o){o=Q,a=u;let J=p.magnitudeSquared(p.subtract(i,U,Y)),M=p.magnitudeSquared(p.subtract(i,G,G_e)),Z=p.magnitudeSquared(p.subtract(i,A,A_e));J<M&&J<Z?(l=R,r=U,s=J):M<Z?(l=V,r=G,s=M):(l=F,r=A,s=Z)}}if(c(a))return{index:l,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:p.clone(r)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function Qkt(t){let e=[],n=t.length;for(let i=0;i<n;i++)i<3?e.push(jT(t[i])):e.push(t[i]);return e}j5.prototype._generateGltf=function(t,e,n,i,o,a,s,l){let r={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},d=!1,m,h="";if(c(this._parent._data.mesh)&&c(this._layer._data.materialDefinitions)){let S=this._parent._data.mesh.material.definition;if(S>=0&&S<this._layer._data.materialDefinitions.length){if(m=this._layer._data.materialDefinitions[S],r=m,c(r.pbrMetallicRoughness)&&c(r.pbrMetallicRoughness.baseColorTexture)){d=!0,r.pbrMetallicRoughness.baseColorTexture.index=0;let g="0";if(c(this._layer._data.textureSetDefinitions))for(let C=0;C<this._layer._data.textureSetDefinitions.length;C++){let y=this._layer._data.textureSetDefinitions[C];for(let Y=0;Y<y.formats.length;Y++){let Q=y.formats[Y];if(Q.format==="jpg"){g=Q.name;break}}}c(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${g}`}).url)}c(r.pbrMetallicRoughness)&&c(r.pbrMetallicRoughness.baseColorFactor)&&(r.pbrMetallicRoughness.baseColorFactor=Qkt(r.pbrMetallicRoughness.baseColorFactor)),c(r.emissiveFactor)&&(r.emissiveFactor=Qkt(r.emissiveFactor))}}else c(this._parent._data.textureData)&&(d=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,r.pbrMetallicRoughness.baseColorTexture={index:0});c(r.alphaMode)&&(r.alphaMode=r.alphaMode.toUpperCase());let u=[],R=[],V=[];d&&(u=[{sampler:0,source:0}],R=[{uri:h}],V=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let F=[],U=n.length;for(let A=0;A<U;A++){let S=n[A].primitives,g=S.length;for(let C=0;C<g;C++){let y=S[C];if(c(y.material)){for(;y.material>=F.length;){let Q=Re(r,!0);F.push(Q)}let Y=F[y.material];c(y.extra)&&y.extra.isTransparent?c(Y.alphaMode)||(Y.alphaMode="BLEND"):Y.alphaMode==="BLEND"&&(Y.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:t}],nodes:e,meshes:n,buffers:i,bufferViews:o,accessors:a,materials:F,textures:u,images:R,samplers:V,asset:{version:"2.0"},extensions:s,extensionsUsed:l}};var hN=j5;function Rc(t,e,n){let i,o,a,s;n?(i=0,o=t):(i=t._level+1,o=t._layer),typeof e=="number"?a=e:s=t.resource.getDerivedResource({url:`${e}/`}),this._parent=t,this._dataProvider=t._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=a,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(Rc.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});Rc.prototype.load=async function(){let t=this;function e(){if(!t._isRoot){let o=t._create3DTileDefinition();t._tile=new iV(t._layer._tileset,t._dataProvider.resource,o,t._parent._tile),t._tile._i3sNode=t}}if(!c(this._nodeIndex)){let o=await bZ.loadJson(this._resource);t._data=o,e();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);t._data=n;let i;t._isRoot?i="nodes/root/":c(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),c(i)&&(t._resource=t._parent.resource.getDerivedResource({url:i})),e()};function kkt(t,e){let n=new z5(t,e);return t._fields[e.name]=n,n.load()}Rc.prototype.loadFields=function(){let t=this._layer._data.attributeStorageInfo,e=[];if(c(t))for(let n=0;n<t.length;n++){let i=t[n],o=this._fields[i.name];c(o)?e.push(o.load()):e.push(kkt(this,i))}return Promise.all(e)};Rc.prototype.loadField=function(t){let e=this._fields[t];if(c(e))return e.load();let n=this._layer._data.attributeStorageInfo;if(c(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===t)return kkt(this,o)}return Promise.resolve()};Rc.prototype.getFieldsForPickedPosition=function(t){let e=this.geometryData[0];if(!c(e.customAttributes.featureIndex))return{};let n=e.getClosestPointIndexOnTriangle(t.x,t.y,t.z);if(n.index===-1||n.index>e.customAttributes.featureIndex.length)return{};let i=e.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};Rc.prototype.getFieldsForFeature=function(t){let e={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];t>=0&&t<i.values.length&&(e[i.name]=i.values[t])}return e};Rc.prototype._loadChildren=function(){let t=this;if(c(this._childrenReadyPromise))return this._childrenReadyPromise;let e=[];if(c(t._data.children))for(let n=0;n<t._data.children.length;n++){let i=t._data.children[n],o=new Rc(t,f(i.href,i),!1);t._children.push(o),e.push(o.load())}return this._childrenReadyPromise=Promise.all(e).then(function(){for(let n=0;n<t._children.length;n++)t._tile.children.push(t._children[n]._tile)}),this._childrenReadyPromise};Rc.prototype._loadGeometryData=function(){let t=[];if(c(this._data.geometryData))for(let e=0;e<this._data.geometryData.length;e++){let n=new hN(this,this._data.geometryData[e].href);this._geometryData.push(n),t.push(n.load())}else if(c(this._data.mesh)){let e=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${e.bufferIndex}/`,i=new hN(this,n);i._geometryDefinitions=e.definition,i._geometryBufferInfo=e.geometryBufferInfo,this._geometryData.push(i),t.push(i.load())}return Promise.all(t)};Rc.prototype._loadFeatureData=function(){let t=[];if(c(this._data.featureData))for(let e=0;e<this._data.featureData.length;e++){let n=new K5(this,this._data.featureData[e].href);this._featureData.push(n),t.push(n.load())}return Promise.all(t)};Rc.prototype._clearGeometryData=function(){this._geometryData=[]};Rc.prototype._create3DTileDefinition=function(){let t=this._data.obb,e=this._data.mbs;if(!c(t)&&!c(e)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(c(t)?n=gt.fromDegrees(t.center[0],t.center[1],t.center[2]):n=gt.fromDegrees(e[0],e[1],e[2]),c(this._dataProvider._geoidDataList)&&c(n))for(let G=0;G<this._dataProvider._geoidDataList.length;G++){let A=this._dataProvider._geoidDataList[G],S=A.projection.project(n);if(S.x>A.nativeExtent.west&&S.x<A.nativeExtent.east&&S.y>A.nativeExtent.south&&S.y<A.nativeExtent.north){n.height+=E_e(S.x,S.y,A);break}}let i={},o,a=0;c(t)?(i={box:[0,0,0,t.halfSize[0],0,0,0,t.halfSize[1],0,0,0,t.halfSize[2]]},a=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=mt.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,e[3]]},o=mt.WGS84.cartographicToCartesian(n),a=this._data.mbs[3]),a*=2;let s=1/0;if(c(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let G=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=a/G}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let G=this._data.lodThreshold;s=a/G}else console.error("Invalid lodSelectionMetricType in Layer");else if(c(this._data.lodSelection))for(let G=0;G<this._data.lodSelection.length;G++)this._data.lodSelection[G].metricType==="maxScreenThreshold"&&(s=a/this._data.lodSelection[G].maxError);s===1/0&&(s=1e5);let l=s*16,r=new Jr(0,0,0),d=Pe.headingPitchRollQuaternion(o,r);c(this._data.obb)&&(d=new wt(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let m=ot.fromQuaternion(d),h=ot.inverse(m,new ot),u=new L(m[0],m[1],m[2],0,m[3],m[4],m[5],0,m[6],m[7],m[8],0,o.x,o.y,o.z,1),R=L.inverse(u,new L),V=L.clone(u);c(this._parent._globalTransform)&&L.multiply(u,this._parent._inverseGlobalTransform,V),this._globalTransform=u,this._inverseGlobalTransform=R,this._inverseRotationMatrix=h;let F=[];for(let G=0;G<this._children.length;G++)F.push(this._children[G]._create3DTileDefinition());return{children:F,refine:"REPLACE",boundingVolume:i,transform:[V[0],V[4],V[8],V[12],V[1],V[5],V[9],V[13],V[2],V[6],V[10],V[14],V[3],V[7],V[11],V[15]],content:{uri:c(this._resource)?this._resource.url:void 0},geometricError:l}};Rc.prototype._loadSymbology=async function(){!c(this._symbologyData)&&c(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};Rc.prototype._createContentURL=async function(){let t={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},e=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&e.push(this._loadFeatureData()),await Promise.all(e),c(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,a=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],l=await v5.decode(o,a,s,this._featureData[0],this._symbologyData);if(!c(l))return;t=s._generateGltf(l.meshData.nodesInScene,l.meshData.nodes,l.meshData.meshes,l.meshData.buffers,l.meshData.bufferViews,l.meshData.accessors,l.meshData.rootExtensions,l.meshData.extensionsUsed),this._geometryData[0]._customAttributes=l.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(t),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function S_e(t){let e=t._layer._filters,n=[];for(let i=0;i<e.length;i++){let o=t.loadField(e[i].name);n.push(o)}return await Promise.all(n),e}function T_e(t,e,n){if(!c(n.values)||n.values.length===0)return!1;let i=c(e)?e.values:[],o;t<i.length&&(o=i[t]);let a=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){a=!0;break}return a}async function Ykt(t,e){let n=t._tile.content.batchTable;if(c(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await S_e(t);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let a=0;a<i.length;a++){let s=i[a];if(!T_e(o,t._fields[s.name],s)){n.setShow(o,!1);break}}}e.show=!0}Rc.prototype._filterFeatures=function(){let t=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();t.push(i)}let e=this._tile?.content?._model;if(c(this._geometryData)&&this._geometryData.length>0&&c(e)&&e.ready){e.show=!1;let n=Ykt(this,e);t.push(n)}return Promise.all(t)};iV.prototype._hookedRequestContent=iV.prototype.requestContent;iV.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let t=this;return this._i3sNode._createContentURL().then(e=>{if(!c(e)){t._isLoading=!1;return}return t._contentResource=new te({url:e}),t._hookedRequestContent()}).then(e=>{let n=e?._model;return c(t._i3sNode._geometryData)&&t._i3sNode._geometryData.length>0&&c(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{Ykt(t._i3sNode,n)})),t._isLoading=!1,e})}};function g_e(t,e,n,i,o,a){let s=n*(1-t)+i*t,l=o*(1-t)+a*t;return s*(1-e)+l*e}function jj(t,e,n,i){let o=t+e*n;return i[o]}function E_e(t,e,n){let i=n.nativeExtent,o=(t-i.west)/(i.east-i.west)*(n.width-1),a=(e-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),l=Math.floor(a);o-=s,a-=l;let r=s<n.width?s+1:s,d=l<n.height?l+1:l;l=n.height-1-l,d=n.height-1-d;let m=jj(s,l,n.width,n.buffer),h=jj(r,l,n.width,n.buffer),u=jj(s,d,n.width,n.buffer),R=jj(r,d,n.width,n.buffer),V=g_e(o,a,m,h,u,R);return V=V*n.scale+n.offset,V}Object.defineProperties(iV.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var pN=Rc;var Zjo=b(W(),1);function qj(t){this._layer=t,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(qj.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function _lt(t,e){let n=[];for(let i=0;i<t.length;i++){let o=v.byteToFloat(t[i]);i<3?n.push(jT(o)):n.push(o)}return n.length===3&&(c(e)?n.push(1-e/100):n.push(1)),n}function VN(t,e){let n={edges:void 0,material:void 0};if(c(t)&&c(t.symbolLayers))for(let i=0;i<t.symbolLayers.length;i++){let o=t.symbolLayers[i];if(o.type==="Fill"){let a=o.edges,s=o.outline;if(c(a)?(n.edges={},c(a.color)&&(n.edges.color=_lt(a.color,a.transparency))):c(s)&&(n.edges={},c(s.color)&&(n.edges.color=_lt(s.color,s.transparency))),!e){let l=o.material;c(l)&&(n.material={colorMixMode:l.colorMixMode},c(l.color)&&(n.material.color=_lt(l.color,l.transparency)))}break}}return n}function C_e(t,e){if(c(t.uniqueValueGroups)){let n={};for(let i=0;i<t.uniqueValueGroups.length;i++){let o=t.uniqueValueGroups[i].classes;if(c(o))for(let a=0;a<o.length;a++){let s=VN(o[a].symbol,e),l=o[a].values;for(let r=0;r<l.length;r++){let d=l[r],m=n;for(let h=0;h<d.length;h++){let u=d[h];h===d.length-1?m[u]=s:(c(m[u])||(m[u]={}),m=m[u])}}}}return n}if(c(t.uniqueValueInfos)){let n={};for(let i=0;i<t.uniqueValueInfos.length;i++){let o=t.uniqueValueInfos[i];n[o.value]=VN(o.symbol,e)}return n}}function I_e(t,e){if(c(t.classBreakInfos)){let n=[...t.classBreakInfos];n.sort(function(o,a){let s=f(o.classMaxValue,o.classMinValue),l=f(a.classMaxValue,a.classMinValue);return s-l});let i={ranges:[],symbols:[]};c(t.minValue)&&(i.ranges.push(t.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let a=n[o];c(a.classMinValue)&&(i.ranges.length===0||a.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(a.classMinValue),i.symbols.push(void 0)),c(a.classMaxValue)&&(i.ranges.length===0||a.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(a.classMaxValue),i.symbols.push(VN(a.symbol,e)))}return i.symbols.push(void 0),i}}qj.prototype._parseLayerSymbology=function(){let t=this._layer.data.drawingInfo;if(c(t)&&c(t.renderer)){let e=this._layer.data.cachedDrawingInfo,n=c(e)&&e.color===!0,i=t.renderer;i.type==="simple"?this._defaultSymbology=VN(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=VN(i.defaultSymbol,n),this._valueFields.push(i.field1),c(i.field2)&&this._valueFields.push(i.field2),c(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=C_e(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=VN(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=I_e(i,n))}};function xkt(t,e,n,i){let o=e[n];if(i<o.length){let a=o[i],s=t[a];return c(s)&&++n<e.length?xkt(s,e,n,i):s}}function N_e(t,e){let n=0,i=t.length;if(n<i)do{let o=n+i>>>1;t[o]<e?n=o+1:i=o}while(n<i);return n}function y_e(t,e,n){let i=e[n],o=N_e(t.ranges,i);return t.symbols[o]}qj.prototype._getSymbology=async function(t){let e={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let a=0;a<this._valueFields.length;a++)n.push(t.loadField(this._valueFields[a]));await Promise.all(n);let i=[];for(let a=0;a<this._valueFields.length;a++)i.push(t.fields[this._valueFields[a]].values);let o;if(c(this._uniqueValueHash)?o=a=>xkt(this._uniqueValueHash,i,0,a):c(this._classBreaksHash)&&(o=a=>y_e(this._classBreaksHash,i[0],a)),c(o)){let a=i[0];for(let s=0;s<a.length;s++){let l=o(s);c(l)&&(e[s]=l)}}}return e};var q5=qj;function ah(t,e,n){this._dataProvider=t,this._parent=n,!c(e.href)&&c(e.id)&&(e.href=`layers/${e.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${e.href}`),this._version=e.store.version;let a=this._version.split(".");this._majorVersion=parseInt(a[0]),this._minorVersion=a.length>1?parseInt(a[1]):0,this._resource=new te({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=e,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(ah.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(c(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});ah.prototype.load=async function(t){if(this._data.spatialReference.wkid!==4326)throw new Tt(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new q5(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(t),await this._create3DTileset(t),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};ah.prototype._computeGeometryDefinitions=function(t){if(this._geometryDefinitions=[],c(this._data.geometryDefinitions))for(let e=0;e<this._data.geometryDefinitions.length;e++){let n=[],i=this._data.geometryDefinitions[e].geometryBuffers;for(let o=0;o<i.length;o++){let a=i[o],s=[],l=!1;if(c(a.compressedAttributes)&&t){l=!0;let r=a.compressedAttributes.attributes;for(let d=0;d<r.length;d++)s.push(r[d])}else for(let r in a)r!=="offset"&&s.push(r);n.push({compressed:l,attributes:s,index:i.indexOf(a)})}n.sort(function(o,a){return o.compressed&&!a.compressed?-1:!o.compressed&&a.compressed?1:o.attributes.length-a.attributes.length}),this._geometryDefinitions.push(n)}};ah.prototype._findBestGeometryBuffers=function(t,e){let n=this._geometryDefinitions[t];if(c(n))for(let i=0;i<n.length;++i){let o=n[i],a=!1,s=o.attributes;for(let l=0;l<e.length;l++)if(!s.includes(e[l])){a=!0;break}if(!a)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}return 0};ah.prototype._loadRootNode=function(t){if(c(this._data.nodePages)){let e=0;c(this._data.nodePages.rootIndex)&&(e=this._data.nodePages.rootIndex),this._rootNode=new pN(this,e,!0)}else this._rootNode=new pN(this,this._data.store.rootNode,!0);return this._rootNode.load(t)};ah.prototype._getNodeInNodePages=function(t){let e=Math.floor(t/this._data.nodePages.nodesPerPage),n=t%this._data.nodePages.nodesPerPage;return this._loadNodePage(e).then(function(i){return i.nodes[n]})};ah._fetchJson=function(t){return t.fetchJson()};ah.prototype._loadNodePage=function(t){let e=this;if(!c(this._nodePageFetches[t])){let n=this.resource.getDerivedResource({url:`nodepages/${t}/`}),i=ah._fetchJson(n).then(function(o){return c(o.error)&&o.error.code!==200?Promise.reject(o.error):(e._nodePages[t]=o.nodes,o)});this._nodePageFetches[t]=i}return this._nodePageFetches[t]};ah.prototype._computeExtent=function(){c(this._data.fullExtent)?this._extent=Gt.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):c(this._data.store.extent)&&(this._extent=Gt.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};ah.prototype._create3DTileset=async function(t){let e={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(e)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;c(o)&&!c(t?.outlineColor)&&(t=c(t)?Re(t):{},t.outlineColor=v.fromCartesian4(bt.fromArray(o))),this._tileset=await Pr.fromUrl(i,t),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(a){a._i3sNode._clearGeometryData(),URL.revokeObjectURL(a._contentResource._url),a._contentResource=a._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(a){c(a._i3sNode)&&a._i3sNode._loadChildren()})};ah.prototype._updateVisibility=function(){c(this._tileset)&&(this._tileset.show=this._parent.show)};ah.prototype.filterByAttributes=function(t){this._filters=c(t)?Re(t,!0):[];let e=this._rootNode;return c(e)?e._filterFeatures():Promise.resolve()};var ig=ah;var Bjo=b(W(),1);function $j(t,e){this._dataProvider=t,this._resource=new te({url:e}),this._resource.setQueryParameters(t.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties($j.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let t=[],e=this._data.summary;if(c(e))for(let n=0;n<e.length;++n)t.push(e[n].fieldName);return t}}});$j.prototype.load=async function(){return this._data=await bZ.loadJson(this._resource),this._data};$j.prototype._getValues=function(t){let e=this._data.summary;if(c(e))for(let n=0;n<e.length;++n){let i=e[n];if(i.fieldName===t)return c(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var $5=$j;var Ljo=b(W(),1);function tD(t,e,n){this._dataProvider=t,this._parent=e,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=f(n.visibility,!0),this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(tD.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(t){if(this._visibility!==t){this._visibility=t;for(let e=0;e<this._i3sLayers.length;e++)this._i3sLayers[e]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});tD._fromData=async function(t,e,n,i){let o=new tD(t,i,n);if(o._data.layerType==="group"){let a=o._data.sublayers;if(c(a)){let s=[];for(let r=0;r<a.length;r++){let d=tD._fromData(t,e,a[r],o);s.push(d)}let l=await Promise.all(s);for(let r=0;r<l.length;r++){let d=l[r];o._sublayers.push(d),o._i3sLayers.push(...d._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let a=e.concat(`/sublayers/${o._data.id}`),s=new te({url:a});s.setQueryParameters(t.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let l=await bZ.loadJson(o._resource),r=new ig(t,l,o);o._i3sLayers.push(r)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var eD=tD;var Lkt=b(Xkt(),1);function Hl(t){t=f(t,f.EMPTY_OBJECT),this._name=t.name,this._show=f(t.show,!0),this._geoidTiledTerrainProvider=t.geoidTiledTerrainProvider,this._showFeatures=f(t.showFeatures,!1),this._adjustMaterialAlphaMode=f(t.adjustMaterialAlphaMode,!1),this._applySymbology=f(t.applySymbology,!1),this._calculateNormals=f(t.calculateNormals,!1),this._cesium3dTilesetOptions=f(t.cesium3dTilesetOptions,f.EMPTY_OBJECT),this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Hl.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(t){if(this._show!==t){this._show=t;for(let e=0;e<this._layers.length;e++)this._layers[e]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Hl.prototype.destroy=function(){for(let t=0;t<this._layers.length;t++)c(this._layers[t]._tileset)&&this._layers[t]._tileset.destroy();return At(this)};Hl.prototype.isDestroyed=function(){return!1};Hl.prototype.update=function(t){for(let e=0;e<this._layers.length;e++)c(this._layers[e]._tileset)&&this._layers[e]._tileset.update(t)};Hl.prototype.prePassesUpdate=function(t){for(let e=0;e<this._layers.length;e++)c(this._layers[e]._tileset)&&this._layers[e]._tileset.prePassesUpdate(t)};Hl.prototype.postPassesUpdate=function(t){for(let e=0;e<this._layers.length;e++)c(this._layers[e]._tileset)&&this._layers[e]._tileset.postPassesUpdate(t)};Hl.prototype.updateForPass=function(t,e){for(let n=0;n<this._layers.length;n++)c(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(t,e)};function B_e(t,e){let n=t.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${e}`),i}async function Jkt(t,e,n){if(e.layerType==="Building"){c(n.showFeatures)||(t._showFeatures=!0),c(n.adjustMaterialAlphaMode)||(t._adjustMaterialAlphaMode=!0),c(n.applySymbology)||(t._applySymbology=!0),c(n.calculateNormals)||(t._calculateNormals=!0);let i=B_e(t,e.id);if(c(e.sublayers)){let o=[];for(let s=0;s<e.sublayers.length;s++){let l=eD._fromData(t,i,e.sublayers[s],t);o.push(l)}let a=await Promise.all(o);for(let s=0;s<a.length;s++){let l=a[s];t._sublayers.push(l),t._layers.push(...l._i3sLayers)}}if(c(e.statisticsHRef)){let o=i.concat(`/${e.statisticsHRef}`),a=new $5(t,o);await a.load(),t._attributeStatistics.push(a)}if(c(e.fullExtent)){let o=Gt.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);t._layersExtent.push(o)}}else if(e.layerType==="3DObject"||e.layerType==="IntegratedMesh"){!c(n.calculateNormals)&&!c(e.textureSetDefinitions)&&(t._calculateNormals=!0);let i=new ig(t,e,t);t._layers.push(i),c(i._extent)&&t._layersExtent.push(i._extent)}else console.log(`${e.layerType} layer ${e.name} is skipped as not supported.`)}Hl.fromUrl=async function(t,e){e=f(e,f.EMPTY_OBJECT);let n=te.createIfNeeded(t);n.setQueryParameters({f:"pjson"},!0);let i=await Hl.loadJson(n),o=new Hl(e);if(o._resource=n,o._data=i,c(i.layers)){let s=[];for(let l=0;l<i.layers.length;l++){let r=Jkt(o,i.layers[l],e);s.push(r)}await Promise.all(s)}else await Jkt(o,i,e);o._computeExtent();let a=[];for(let s=0;s<o._layers.length;s++)a.push(o._layers[s].load(e.cesium3dTilesetOptions));return await Promise.all(a),o};Hl._fetchJson=function(t){return t.fetchJson()};Hl.loadJson=async function(t){let e=await Hl._fetchJson(t);if(c(e.error)){if(console.error("Failed to fetch I3S ",t.url),c(e.error.message)&&console.error(e.error.message),c(e.error.details))for(let n=0;n<e.error.details.length;n++)console.log(e.error.details[n]);throw new Tt(e.error)}return e};Hl.prototype._loadBinary=async function(t){let e=await t.fetchArrayBuffer();if(e.byteLength>0&&new Uint8Array(e)[0]===123&&new TextDecoder().decode(e).includes("404"))throw new Tt(`Failed to load binary: ${t.url}`);return e};Hl.prototype._binarizeGltf=function(t){let n=new TextEncoder().encode(JSON.stringify(t)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Q_e=new K;function k_e(t,e){let n=t.tilingScheme,i=[],o={},a=t._lodCount,s=gt.fromRadians(e.west,e.north),l=gt.fromRadians(e.east,e.south),r=n.positionToTileXY(s,a),d=n.positionToTileXY(l,a);for(let h=r.x;h<=d.x;h++)for(let u=r.y;u<=d.y;u++){let R=K.fromElements(h,u,Q_e),V=R.toString();if(!o.hasOwnProperty(V)){let F={x:R.x,y:R.y,level:a,tilingScheme:n,terrainProvider:t,positions:[]};o[V]=F,i.push(F)}}let m=[];for(let h=0;h<i.length;++h){let u=i[h],R=u.terrainProvider.requestTileGeometry(u.x,u.y,u.level);m.push(R)}return Promise.all(m).then(function(h){let u=[];for(let R=0;R<h.length;R++){let V={tilingScheme:n,x:i[R].x,y:i[R].y,level:i[R].level},F=h[R],U="Geographic";n._projection instanceof Yo&&(U="WebMercator");let G={projectionType:U,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(V.x,V.y,V.level),height:F._height,width:F._width,scale:F._structure.heightScale,offset:F._structure.heightOffset};if(F._encoding===UV.LERC){let A=Lkt.default.decode(F._buffer);G.buffer=A.pixels[0]}else G.buffer=F._buffer;u.push(G)}return u})}async function Y_e(t){let e=t._geoidTiledTerrainProvider;if(c(e))try{let n=await k_e(e,t._extent);t._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Hl.prototype.loadGeoidData=async function(){return c(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=Y_e(this),this._geoidDataPromise)};Hl.prototype._computeExtent=function(){let t;for(let e=0;e<this._layersExtent.length;e++){let n=this._layersExtent[e];c(t)?Gt.union(t,n,t):t=Gt.clone(n)}this._extent=t};Hl.prototype.getAttributeNames=function(){let t=[];for(let e=0;e<this._attributeStatistics.length;++e)t.push(...this._attributeStatistics[e].names);return t};Hl.prototype.getAttributeValues=function(t){for(let e=0;e<this._attributeStatistics.length;++e){let n=this._attributeStatistics[e]._getValues(t);if(c(n))return n}return[]};Hl.prototype.filterByAttributes=function(t){let e=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(t);e.push(i)}return Promise.all(e)};var bZ=Hl;var s4o=b(W(),1);function Mkt(){}Object.defineProperties(Mkt.prototype,{color:{get:Ut.throwInstantiationError},intensity:{get:Ut.throwInstantiationError}});var Dlt=Mkt;var V4o=b(W(),1);function x_e(){return window.devicePixelRatio||1}function X_e(t,e,n){n||(n=x_e());let i=document.createElement("canvas");return i.width=t*n,i.height=e*n,i.style.width=`${t}px`,i.style.height=`${e}px`,i.getContext("2d").scale(n,n),i}function J_e({entity:t,text:e,fontSize:n="14",fontFamily:i="Helvetica",fontStyle:o="",fillStyle:a="white",bgColor:s="#111",lineWidth:l=2,cornerRadius:r=3,horizontalOrigin:d=to.LEFT,verticalOrigin:m=hi.CENTER,scaleByDistance:h=new ln(150,1,8e6,.35),pixelOffset:u=new K(20,0)}){if(!t._labelCanvas||t._labelCanvasText!==e){let R=`${o} ${n}px ${i}`,V=document.createElement("div");V.style.position="absolute",V.style.font=R,V.innerHTML=e,document.body.appendChild(V);let{height:F,width:U}=V.getBoundingClientRect(),G=X_e(U*1.1,F*1.5,devicePixelRatio);G.width=U*1.1,G.height=F*1.5,document.body.removeChild(V);let A=G.getContext("2d");A.font=R,A.beginPath(),A.moveTo(r,0),A.lineTo(G.width-r,0),A.arcTo(G.width,0,G.width,r,r),A.lineTo(G.width,G.height-r),A.arcTo(G.width,G.height,G.width-r,G.height,r),A.lineTo(r,G.height),A.arcTo(0,G.height,0,G.height-r,r),A.lineTo(0,r),A.arcTo(0,0,r,0,r),A.closePath(),A.fillStyle=s,A.fill(),A.textAlign="center",A.textBaseline="middle",A.fillStyle=a,A.lineWidth=l;let S=G.width/2,g=G.height/2;A.fillText(e,S,g),t._labelCanvas=G,t._labelCanvasText=e}t.billboard=new Mr({image:new Ii(t._labelCanvas),horizontalOrigin:d,verticalOrigin:m,scaleByDistance:h,width:t._labelCanvas.width,height:t._labelCanvas.height,pixelOffset:u})}var Olt=J_e;var F4o=b(W(),1);var L_e=/\/$/,_kt=new on('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function uN(t){t=f(t,f.EMPTY_OBJECT);let e=t.styleId,n=t.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=te.createIfNeeded(f(t.url,"https://api.mapbox.com/styles/v1/"));this._styleId=e,this._accessToken=n;let o=f(t.tilesize,512);this._tilesize=o;let a=f(t.username,"mapbox");this._username=a;let s=c(t.scaleFactor)?"@2x":"",l=i.getUrlComponent();L_e.test(l)||(l+="/"),l+=`${this._username}/${e}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=l,i.setQueryParameters({access_token:n});let r;c(t.credit)?(r=t.credit,typeof r=="string"&&(r=new on(r))):r=_kt,this._resource=i,this._imageryProvider=new Ad({url:i,credit:r,ellipsoid:t.ellipsoid,minimumLevel:t.minimumLevel,maximumLevel:t.maximumLevel,rectangle:t.rectangle})}Object.defineProperties(uN.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});uN.prototype.getTileCredits=function(t,e,n){};uN.prototype.requestImage=function(t,e,n,i){return this._imageryProvider.requestImage(t,e,n,i)};uN.prototype.pickFeatures=function(t,e,n,i,o){return this._imageryProvider.pickFeatures(t,e,n,i,o)};uN._defaultCredit=_kt;var Hlt=uN;var G4o=b(W(),1);function wlt(t){}wlt.prototype.isReady=function(){return!0};wlt.prototype.shouldDiscardImage=function(t){return!1};var Plt=wlt;var y4o=b(W(),1);var M_e=new on("MapQuest, Open Street Map and contributors, CC-BY-SA");function e4(t){t=f(t,f.EMPTY_OBJECT);let e=te.createIfNeeded(f(t.url,"https://tile.openstreetmap.org/"));e.appendForwardSlash(),e.url+=`{z}/{x}/{y}${t.retinaTiles?"@2x":""}.${f(t.fileExtension,"png")}`;let n=new Gs({ellipsoid:t.ellipsoid}),i=256,o=256,a=f(t.minimumLevel,0),s=t.maximumLevel,l=f(t.rectangle,n.rectangle),r=n.positionToTileXY(Gt.southwest(l),a),d=n.positionToTileXY(Gt.northeast(l),a),m=(Math.abs(d.x-r.x)+1)*(Math.abs(d.y-r.y)+1),h=f(t.credit,M_e);typeof h=="string"&&(h=new on(h)),Ad.call(this,{url:e,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:a,maximumLevel:s,rectangle:l})}c(Object.create)&&(e4.prototype=Object.create(Ad.prototype),e4.prototype.constructor=e4);var IW=e4;var J4o=b(W(),1);var __e=new K(1,1);function vlt(t){t=f(t,f.EMPTY_OBJECT),this.mass=f(t.mass,1),this.position=p.clone(f(t.position,p.ZERO)),this.velocity=p.clone(f(t.velocity,p.ZERO)),this.life=f(t.life,Number.MAX_VALUE),this.image=t.image,this.startColor=v.clone(f(t.startColor,v.WHITE)),this.endColor=v.clone(f(t.endColor,v.WHITE)),this.startScale=f(t.startScale,1),this.endScale=f(t.endScale,1),this.imageSize=K.clone(f(t.imageSize,__e)),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(vlt.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var Dkt=new p;vlt.prototype.update=function(t,e){return p.multiplyByScalar(this.velocity,t,Dkt),p.add(this.position,Dkt,this.position),c(e)&&e(this,t),this._age+=t,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var ZN=vlt;var _4o=b(W(),1);function Okt(t){t=f(t,f.EMPTY_OBJECT),this.time=f(t.time,0),this.minimum=f(t.minimum,0),this.maximum=f(t.maximum,50),this._complete=!1}Object.defineProperties(Okt.prototype,{complete:{get:function(){return this._complete}}});var Klt=Okt;var H4o=b(W(),1);function Hkt(t){}Hkt.prototype.emit=function(t){Ut.throwInstantiationError()};var zlt=Hkt;var s8o=b(W(),1);var wkt=new K(1,1);function nD(t){t=f(t,f.EMPTY_OBJECT),this.show=f(t.show,!0),this.updateCallback=t.updateCallback,this.loop=f(t.loop,!0),this.image=f(t.image,void 0);let e=t.emitter;c(e)||(e=new M5(.5)),this._emitter=e,this._bursts=t.bursts,this._modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this._emitterModelMatrix=L.clone(f(t.emitterModelMatrix,L.IDENTITY)),this._matrixDirty=!0,this._combinedMatrix=new L,this._startColor=v.clone(f(t.color,f(t.startColor,v.WHITE))),this._endColor=v.clone(f(t.color,f(t.endColor,v.WHITE))),this._startScale=f(t.scale,f(t.startScale,1)),this._endScale=f(t.scale,f(t.endScale,1)),this._emissionRate=f(t.emissionRate,5),this._minimumSpeed=f(t.speed,f(t.minimumSpeed,1)),this._maximumSpeed=f(t.speed,f(t.maximumSpeed,1)),this._minimumParticleLife=f(t.particleLife,f(t.minimumParticleLife,5)),this._maximumParticleLife=f(t.particleLife,f(t.maximumParticleLife,5)),this._minimumMass=f(t.mass,f(t.minimumMass,1)),this._maximumMass=f(t.mass,f(t.maximumMass,1)),this._minimumImageSize=K.clone(f(t.imageSize,f(t.minimumImageSize,wkt))),this._maximumImageSize=K.clone(f(t.imageSize,f(t.maximumImageSize,wkt))),this._sizeInMeters=f(t.sizeInMeters,!1),this._lifetime=f(t.lifetime,Number.MAX_VALUE),this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new It,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(nD.prototype,{emitter:{get:function(){return this._emitter},set:function(t){this._emitter=t}},bursts:{get:function(){return this._bursts},set:function(t){this._bursts=t,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(t){this._matrixDirty=this._matrixDirty||!L.equals(this._modelMatrix,t),L.clone(t,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(t){this._matrixDirty=this._matrixDirty||!L.equals(this._emitterModelMatrix,t),L.clone(t,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(t){v.clone(t,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(t){v.clone(t,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(t){this._startScale=t}},endScale:{get:function(){return this._endScale},set:function(t){this._endScale=t}},emissionRate:{get:function(){return this._emissionRate},set:function(t){this._emissionRate=t,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(t){this._minimumSpeed=t}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(t){this._maximumSpeed=t}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(t){this._minimumParticleLife=t}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(t){this._maximumParticleLife=t,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(t){this._minimumMass=t}},maximumMass:{get:function(){return this._maximumMass},set:function(t){this._maximumMass=t}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(t){this._minimumImageSize=t}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(t){this._maximumImageSize=t}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(t){this._sizeInMeters=t}},lifetime:{get:function(){return this._lifetime},set:function(t){this._lifetime=t}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function D_e(t){let e=t._emissionRate,n=t._maximumParticleLife,i=0,o=t._bursts;if(c(o)){let h=o.length;for(let u=0;u<h;++u)i+=o[u].maximum}let a=t._billboardCollection,s=t.image,l=Math.ceil(e*n+i),r=t._particles,d=t._particlePool,m=Math.max(l-r.length-d.length,0);for(let h=0;h<m;++h){let u=new ZN;u._billboard=a.add({image:s,show:!1}),d.push(u)}t._particleEstimate=l}function O_e(t){let e=t._particlePool.pop();return c(e)||(e=new ZN),e}function H_e(t,e){t._particlePool.push(e)}function w_e(t){let e=t._particles,n=t._particlePool,i=t._billboardCollection,o=e.length,a=n.length,s=t._particleEstimate,l=a-Math.max(s-o-a,0);for(let r=l;r<a;++r){let d=n[r];i.remove(d._billboard)}n.length=l}function P_e(t){c(t._billboard)&&(t._billboard.show=!1)}function Pkt(t,e){let n=e._billboard;c(n)||(n=e._billboard=t._billboardCollection.add({image:e.image})),n.width=e.imageSize.x,n.height=e.imageSize.y,n.position=e.position,n.sizeInMeters=t.sizeInMeters,n.show=!0;let i=k.lerp(e.startColor.red,e.endColor.red,e.normalizedAge),o=k.lerp(e.startColor.green,e.endColor.green,e.normalizedAge),a=k.lerp(e.startColor.blue,e.endColor.blue,e.normalizedAge),s=k.lerp(e.startColor.alpha,e.endColor.alpha,e.normalizedAge);n.color=new v(i,o,a,s),n.scale=k.lerp(e.startScale,e.endScale,e.normalizedAge)}function v_e(t,e){e.startColor=v.clone(t._startColor,e.startColor),e.endColor=v.clone(t._endColor,e.endColor),e.startScale=t._startScale,e.endScale=t._endScale,e.image=t.image,e.life=k.randomBetween(t._minimumParticleLife,t._maximumParticleLife),e.mass=k.randomBetween(t._minimumMass,t._maximumMass),e.imageSize.x=k.randomBetween(t._minimumImageSize.x,t._maximumImageSize.x),e.imageSize.y=k.randomBetween(t._minimumImageSize.y,t._maximumImageSize.y),e._normalizedAge=0,e._age=0;let n=k.randomBetween(t._minimumSpeed,t._maximumSpeed);p.multiplyByScalar(e.velocity,n,e.velocity),t._particles.push(e)}function K_e(t,e){if(t._isComplete)return 0;e=k.mod(e,t._lifetime);let n=e*t._emissionRate,i=Math.floor(n);if(t._carryOver+=n-i,t._carryOver>1&&(i++,t._carryOver-=1),c(t.bursts)){let o=t.bursts.length;for(let a=0;a<o;a++){let s=t.bursts[a],l=t._currentTime;c(s)&&!s._complete&&l>s.time&&(i+=k.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var n4=new p;nD.prototype.update=function(t){if(!this.show)return;c(this._billboardCollection)||(this._billboardCollection=new yh),this._updateParticlePool&&(D_e(this),this._updateParticlePool=!1);let e=0;this._previousTime&&(e=rt.secondsDifference(t.time,this._previousTime)),e<0&&(e=0);let n=this._particles,i=this._emitter,o=this.updateCallback,a,s,l=n.length;for(a=0;a<l;++a)s=n[a],s.update(e,o)?Pkt(this,s):(P_e(s),H_e(this,s),n[a]=n[l-1],--a,--l);n.length=l;let r=K_e(this,e);if(r>0&&c(i)){this._matrixDirty&&(this._combinedMatrix=L.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let d=this._combinedMatrix;for(a=0;a<r;a++)s=O_e(this),this._emitter.emit(s),p.add(s.position,s.velocity,n4),L.multiplyByPoint(d,n4,n4),s.position=L.multiplyByPoint(d,s.position,s.position),p.subtract(n4,s.position,s.velocity),p.normalize(s.velocity,s.velocity),v_e(this,s),Pkt(this,s)}if(this._billboardCollection.update(t),this._previousTime=rt.clone(t.time,this._previousTime),this._currentTime+=e,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=k.mod(this._currentTime,this._lifetime),this.bursts){let d=this.bursts.length;for(a=0;a<d;a++)this.bursts[a]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);t.frameNumber%120===0&&w_e(this)};nD.prototype.isDestroyed=function(){return!1};nD.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),At(this)};var jlt=nD;var m8o=b(W(),1);var RN={},NW;async function z_e(t,e,n,i=!0){let a=`${e||"https://api.planet.com/basemaps/v1/mosaics/wmts"}?api_key=${n}`,l=await(await fetch(a)).text(),d=new DOMParser().parseFromString(l,"application/xml").getElementsByTagName("ResourceURL");NW=i?"monthly":"quarterly",RN[NW]=[],Array.from(d).forEach(R=>{let V=R.getAttribute("template");if(V.includes(NW)){let F=`.*/(.*?${NW}.*?)/.*`,U=new RegExp(F),G=V.match(U)[1];RN[NW].push(G)}}),RN[NW].sort();let m=q_e(RN[NW],i),h=ys.fromIso8601DateArray({iso8601Dates:m,leadingInterval:!0,trailingInterval:!0,isStopIncluded:!1,dataCallback:j_e}),u=new hT({url:`https://tiles{s}.planet.com/basemaps/v1/planet-tiles/{Name}/gmap/{TileMatrix}/{TileCol}/{TileRow}.png?api_key=${n}`,layer:"planet",style:"default",tileMatrixSetID:"GoogleMapsCompatible15",tileWidth:256,tileHeight:256,minimumLevel:0,maximumLevel:15,tilingScheme:new Gs({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1}),format:"image/png",subdomains:"0123",clock:t.clock,times:h,credit:"PLANET"});t.imageryLayers.addImageryProvider(u)}function j_e(t,e){let n;return e<=1?n=RN[NW][0]:n=RN[NW][e-1],{Name:n}}function q_e(t,e){let n=[];return t.forEach(i=>{if(e){let o=i.split("_"),a=`${o[2]}-${o[3]}-01T00:00:00Z`;n.push(a)}else{let o={q1:"-01-01",q2:"-04-01",q3:"-07-01",q4:"-10-01"},a=i.split("_")[2],s=a.slice(0,4),l=a.slice(4,6),r=`${s}${o[l]}T00:00:00Z`;n.push(r)}}),n}var qlt=z_e;var $8o=b(W(),1);var zkt=b(KO(),1);var p8o=b(W(),1);function $_e(t,e,n){return` float clipDistance = clip(gl_FragCoord, ${t}, ${e}); vec4 clippingPlanesEdgeColor = vec4(1.0); clippingPlanesEdgeColor.rgb = ${n}.rgb; float clippingPlanesEdgeWidth = ${n}.a; @@ -15388,7 +15388,7 @@ void main() { out_FragColor = clippingPlanesEdgeColor; } -`}var iD=$_e;var V8o=R(W(),1);var t9e={modifyFragmentShader:function(e){return e=Ve.replaceMain(e,"czm_splitter_main"),e+=`uniform float czm_splitDirection; +`}var iD=$_e;var Z8o=b(W(),1);var t9e={modifyFragmentShader:function(e){return e=Ze.replaceMain(e,"czm_splitter_main"),e+=`uniform float czm_splitDirection; void main() { #ifndef SHADOW_MAP @@ -15397,8 +15397,8 @@ void main() #endif czm_splitter_main(); } -`,e},addUniforms:function(e,n){n.czm_splitDirection=function(){return e.splitDirection}}},RN=t9e;var og={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function oD(t){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=v.clone(v.DARKGRAY),this._highlightColor=v.clone(v.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=og.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=t.vertexShaderLoaded,this._fragmentShaderLoaded=t.fragmentShaderLoaded,this._uniformMapLoaded=t.uniformMapLoaded,this._batchTableLoaded=t.batchTableLoaded,this._pickIdLoaded=t.pickIdLoaded,this._opaquePass=f(t.opaquePass,Pt.OPAQUE),this._cull=f(t.cull,!0),this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=L.clone(L.IDENTITY),this._modelMatrix=L.clone(L.IDENTITY),this.time=0,this.shadows=ui.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=f(t.splitDirection,Jc.NONE),this._splittingEnabled=!1,this._error=void 0,e9e(this,t)}Object.defineProperties(oD.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return v.clone(this._highlightColor)},set:function(t){this._highlightColor=v.clone(t,this._highlightColor)}},boundingSphere:{get:function(){if(c(this._drawCommand))return this._drawCommand.boundingVolume},set:function(t){this._boundingSphere=Ft.clone(t,this._boundingSphere)}}});function e9e(t,e){let n=xA.parse(e.arrayBuffer,e.byteOffset);if(t._parsedContent=n,t._rtcCenter=n.rtcCenter,t._hasNormals=n.hasNormals,t._hasColors=n.hasColors,t._hasBatchIds=n.hasBatchIds,t._isTranslucent=n.isTranslucent,!n.hasBatchIds&&c(n.batchTableBinary)&&(n.styleableProperties=wR.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),c(n.draco)){let l=n.draco;t._decodingState=og.NEEDS_DECODE,l.dequantizeInShader=t._dequantizeInShader}let i=n.positions;c(i)&&(t._isQuantized=i.isQuantized,t._quantizedVolumeScale=i.quantizedVolumeScale,t._quantizedVolumeOffset=i.quantizedVolumeOffset,t._quantizedRange=i.quantizedRange);let o=n.normals;c(o)&&(t._isOctEncoded16P=o.octEncoded);let a=n.colors;c(a)&&(c(a.constantColor)&&(t._constantColor=v.clone(a.constantColor,t._constantColor),t._hasColors=!1),t._isRGB565=a.isRGB565);let s=n.batchIds;c(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&t._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),t._pointsLength=n.pointsLength}var n9e=new p,i9e=new p,o9e=new p,v2t,i4;function a9e(t){if(!c(i4)){v2t=new z2t.default(0),i4=new Array(t);for(let e=0;e<t;++e)i4[e]=v2t.random()}return i4}function s9e(t){let n=t.length/3,i=Math.min(n,20),o=a9e(20),a=Number.MAX_VALUE,s=-Number.MAX_VALUE,l=p.fromElements(a,a,a,n9e),r=p.fromElements(s,s,s,i9e);for(let m=0;m<i;++m){let h=Math.floor(o[m]*n),Z=p.unpack(t,h*3,o9e);p.minimumByComponent(l,Z,l),p.maximumByComponent(r,Z,r)}let d=Ft.fromCornerPoints(l,r);return d.radius+=k.EPSILON2,d}function K2t(t,e){let n=it.fromTypedArray(t);return n===it.INT||n===it.UNSIGNED_INT||n===it.DOUBLE?(Gn("Cast pnts property to floats",`Point cloud property "${e}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(t)):t}var l9e=new Rt,r9e=new Rt,d9e=new v,j2t=0,o4=1,irt=2,q2t=3,c9e=4,$lt=new L,m9e=new L;function h9e(t,e){let n=e.context,i=t._parsedContent,o=t._pointsLength,a=i.positions,s=i.colors,l=i.normals,r=i.batchIds,d=i.styleableProperties,m=c(d),h=t._isQuantized,Z=t._isQuantizedDraco,b=t._isOctEncoded16P,u=t._isOctEncodedDraco,F=t._quantizedRange,U=t._octEncodedRange,G=t._isRGB565,A=t._isTranslucent,T=t._hasColors,g=t._hasNormals,C=t._hasBatchIds,y,Y,Q=[],J={};if(t._styleableShaderAttributes=J,m){let w=c9e;for(let z in d)if(d.hasOwnProperty(z)){let H=d[z],nt=K2t(H.typedArray,z);y=H.componentCount,Y=it.fromTypedArray(nt);let $=we.createVertexBuffer({context:n,typedArray:nt,usage:ce.STATIC_DRAW});t._geometryByteLength+=$.sizeInBytes;let dt={index:w,vertexBuffer:$,componentsPerAttribute:y,componentDatatype:Y,normalize:!1,offsetInBytes:0,strideInBytes:0};Q.push(dt),J[z]={location:w,componentCount:y},++w}}let M=we.createVertexBuffer({context:n,typedArray:a.typedArray,usage:ce.STATIC_DRAW});t._geometryByteLength+=M.sizeInBytes;let V;T&&(V=we.createVertexBuffer({context:n,typedArray:s.typedArray,usage:ce.STATIC_DRAW}),t._geometryByteLength+=V.sizeInBytes);let E;g&&(E=we.createVertexBuffer({context:n,typedArray:l.typedArray,usage:ce.STATIC_DRAW}),t._geometryByteLength+=E.sizeInBytes);let I;C&&(r.typedArray=K2t(r.typedArray,"batchIds"),I=we.createVertexBuffer({context:n,typedArray:r.typedArray,usage:ce.STATIC_DRAW}),t._geometryByteLength+=I.sizeInBytes);let B=[];if(h?Y=it.UNSIGNED_SHORT:Z?Y=F<=255?it.UNSIGNED_BYTE:it.UNSIGNED_SHORT:Y=it.FLOAT,B.push({index:j2t,vertexBuffer:M,componentsPerAttribute:3,componentDatatype:Y,normalize:!1,offsetInBytes:0,strideInBytes:0}),t._cull&&(h||Z?t._boundingSphere=Ft.fromCornerPoints(p.ZERO,t._quantizedVolumeScale):t._boundingSphere=s9e(a.typedArray)),T)if(G)B.push({index:o4,vertexBuffer:V,componentsPerAttribute:1,componentDatatype:it.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let w=A?4:3;B.push({index:o4,vertexBuffer:V,componentsPerAttribute:w,componentDatatype:it.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}g&&(b?(y=2,Y=it.UNSIGNED_BYTE):u?(y=2,Y=U<=255?it.UNSIGNED_BYTE:it.UNSIGNED_SHORT):(y=3,Y=it.FLOAT),B.push({index:irt,vertexBuffer:E,componentsPerAttribute:y,componentDatatype:Y,normalize:!1,offsetInBytes:0,strideInBytes:0})),C&&B.push({index:q2t,vertexBuffer:I,componentsPerAttribute:1,componentDatatype:it.fromTypedArray(r.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),m&&(B=B.concat(Q));let X=new Ki({context:n,attributes:B}),_={depthTest:{enabled:!0}},P={depthTest:{enabled:!0},depthMask:!1,blending:Pn.ALPHA_BLEND};t._opaquePass===Pt.CESIUM_3D_TILE&&(_.stencilTest=gn.setCesium3DTileBit(),_.stencilMask=gn.CESIUM_3D_TILE_MASK,P.stencilTest=gn.setCesium3DTileBit(),P.stencilMask=gn.CESIUM_3D_TILE_MASK),t._opaqueRenderState=he.fromCache(_),t._translucentRenderState=he.fromCache(P),t._drawCommand=new Ee({boundingVolume:new Ft,cull:t._cull,modelMatrix:new L,primitiveType:le.POINTS,vertexArray:X,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:A?t._translucentRenderState:t._opaqueRenderState,pass:A?Pt.TRANSLUCENT:t._opaquePass,owner:t,castShadows:!1,receiveShadows:!1,pickId:t._pickIdLoaded()})}function p9e(t,e){let n=e.context,i=t._isQuantized,o=t._isQuantizedDraco,a=t._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let l=l9e;if(l.x=t._attenuation?t.maximumAttenuation:t._pointSize,l.x*=e.pixelRatio,l.y=t.time,t._attenuation){let r=e.camera.frustum,d;e.mode===ut.SCENE2D||r instanceof wn?d=Number.POSITIVE_INFINITY:d=n.drawingBufferHeight/e.camera.frustum.sseDenominator,l.z=t.geometricError*t.geometricErrorScale,l.w=d}return l},u_highlightColor:function(){return t._highlightColor},u_constantColor:function(){return t._constantColor},u_clippingPlanes:function(){let l=t.clippingPlanes;return t.isClipped?l.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let l=t.clippingPlanes;if(!c(l))return v.TRANSPARENT;let r=v.clone(l.edgeColor,d9e);return r.alpha=l.edgeWidth,r},u_clippingPlanesMatrix:function(){let l=t.clippingPlanes;if(!c(l))return L.IDENTITY;let r=f(t.clippingPlanesOriginMatrix,t._modelMatrix);L.multiply(n.uniformState.view3D,r,$lt);let d=L.multiply($lt,l.modelMatrix,$lt);return L.inverseTranspose(d,m9e)}};RN.addUniforms(t,s),(i||o||a)&&(s=ze(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let l=r9e;if(c(t._quantizedVolumeScale)){let r=p.clone(t._quantizedVolumeScale,l);p.divideByScalar(r,t._quantizedRange,l)}return l.w=t._octEncodedRange,l}})),c(t._uniformMapLoaded)&&(s=t._uniformMapLoaded(s)),t._drawCommand.uniformMap=s}function trt(t,e){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(t);for(;i!==null;){let o=parseInt(i[1]);e.indexOf(o)===-1&&e.push(o),i=n.exec(t)}}function ert(t,e){t=t.slice(t.indexOf(` -`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(t);for(;i!==null;){let o=i[1];e.indexOf(o)===-1&&e.push(o),i=n.exec(t)}}function nrt(t,e){let n=t.numberOfAttributes;for(let i=0;i<n;++i){let o=t.getAttribute(i);if(o.index===e)return o}}var u9e={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function Z9e(t,e,n){let i,o,a,s=e.context,l=c(n),r=t._isQuantized,d=t._isQuantizedDraco,m=t._isOctEncoded16P,h=t._isOctEncodedDraco,Z=t._isRGB565,b=t._isTranslucent,u=t._hasColors,F=t._hasNormals,U=t._hasBatchIds,G=t._backFaceCulling,A=t._normalShading,T=t._drawCommand.vertexArray,g=t.clippingPlanes,C=t._attenuation,y,Y,Q,J=b,M=be(u9e),V={},E=t._styleableShaderAttributes;for(o in E)E.hasOwnProperty(o)&&(a=E[o],M[o]=`czm_3dtiles_property_${a.location}`,V[a.location]=a);if(l){let Wt={translucent:!1},Nt="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";y=n.getColorShaderFunction(`getColorFromStyle${Nt}`,M,Wt),Y=n.getShowShaderFunction(`getShowFromStyle${Nt}`,M,Wt),Q=n.getPointSizeShaderFunction(`getPointSizeFromStyle${Nt}`,M,Wt),c(y)&&Wt.translucent&&(J=!0)}t._styleTranslucent=J;let I=c(y),B=c(Y),X=c(Q),_=t.isClipped,P=[],w=[];I&&(trt(y,P),ert(y,w)),B&&(trt(Y,P),ert(Y,w)),X&&(trt(Q,P),ert(Q,w));let z=w.indexOf("COLOR")>=0,H=w.indexOf("NORMAL")>=0;if(H&&!F)throw new St("Style references the NORMAL semantic but the point cloud does not have normals");for(o in E)if(E.hasOwnProperty(o)){a=E[o];let Wt=P.indexOf(a.location)>=0,Nt=nrt(T,a.location);Nt.enabled=Wt}let nt=u&&(!I||z);if(u){let Wt=nrt(T,o4);Wt.enabled=nt}let $=F&&(A||G||H);if(F){let Wt=nrt(T,irt);Wt.enabled=$}let dt={a_position:j2t};nt&&(dt.a_color=o4),$&&(dt.a_normal=irt),U&&(dt.a_batchId=q2t);let q="",at=P.length;for(i=0;i<at;++i){let Wt=P[i];a=V[Wt];let Nt=a.componentCount,kt=`czm_3dtiles_property_${Wt}`,Mt;Nt===1?Mt="float":Mt=`vec${Nt}`,q+=`in ${Mt} ${kt}; +`,e},addUniforms:function(e,n){n.czm_splitDirection=function(){return e.splitDirection}}},bN=t9e;var og={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function oD(t){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=v.clone(v.DARKGRAY),this._highlightColor=v.clone(v.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=og.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=t.vertexShaderLoaded,this._fragmentShaderLoaded=t.fragmentShaderLoaded,this._uniformMapLoaded=t.uniformMapLoaded,this._batchTableLoaded=t.batchTableLoaded,this._pickIdLoaded=t.pickIdLoaded,this._opaquePass=f(t.opaquePass,Pt.OPAQUE),this._cull=f(t.cull,!0),this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=L.clone(L.IDENTITY),this._modelMatrix=L.clone(L.IDENTITY),this.time=0,this.shadows=Vi.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=f(t.splitDirection,Jc.NONE),this._splittingEnabled=!1,this._error=void 0,e9e(this,t)}Object.defineProperties(oD.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return v.clone(this._highlightColor)},set:function(t){this._highlightColor=v.clone(t,this._highlightColor)}},boundingSphere:{get:function(){if(c(this._drawCommand))return this._drawCommand.boundingVolume},set:function(t){this._boundingSphere=Ft.clone(t,this._boundingSphere)}}});function e9e(t,e){let n=xA.parse(e.arrayBuffer,e.byteOffset);if(t._parsedContent=n,t._rtcCenter=n.rtcCenter,t._hasNormals=n.hasNormals,t._hasColors=n.hasColors,t._hasBatchIds=n.hasBatchIds,t._isTranslucent=n.isTranslucent,!n.hasBatchIds&&c(n.batchTableBinary)&&(n.styleableProperties=wb.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),c(n.draco)){let l=n.draco;t._decodingState=og.NEEDS_DECODE,l.dequantizeInShader=t._dequantizeInShader}let i=n.positions;c(i)&&(t._isQuantized=i.isQuantized,t._quantizedVolumeScale=i.quantizedVolumeScale,t._quantizedVolumeOffset=i.quantizedVolumeOffset,t._quantizedRange=i.quantizedRange);let o=n.normals;c(o)&&(t._isOctEncoded16P=o.octEncoded);let a=n.colors;c(a)&&(c(a.constantColor)&&(t._constantColor=v.clone(a.constantColor,t._constantColor),t._hasColors=!1),t._isRGB565=a.isRGB565);let s=n.batchIds;c(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&t._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),t._pointsLength=n.pointsLength}var n9e=new p,i9e=new p,o9e=new p,vkt,i4;function a9e(t){if(!c(i4)){vkt=new zkt.default(0),i4=new Array(t);for(let e=0;e<t;++e)i4[e]=vkt.random()}return i4}function s9e(t){let n=t.length/3,i=Math.min(n,20),o=a9e(20),a=Number.MAX_VALUE,s=-Number.MAX_VALUE,l=p.fromElements(a,a,a,n9e),r=p.fromElements(s,s,s,i9e);for(let m=0;m<i;++m){let h=Math.floor(o[m]*n),u=p.unpack(t,h*3,o9e);p.minimumByComponent(l,u,l),p.maximumByComponent(r,u,r)}let d=Ft.fromCornerPoints(l,r);return d.radius+=k.EPSILON2,d}function Kkt(t,e){let n=it.fromTypedArray(t);return n===it.INT||n===it.UNSIGNED_INT||n===it.DOUBLE?(Gn("Cast pnts property to floats",`Point cloud property "${e}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(t)):t}var l9e=new bt,r9e=new bt,d9e=new v,jkt=0,o4=1,irt=2,qkt=3,c9e=4,$lt=new L,m9e=new L;function h9e(t,e){let n=e.context,i=t._parsedContent,o=t._pointsLength,a=i.positions,s=i.colors,l=i.normals,r=i.batchIds,d=i.styleableProperties,m=c(d),h=t._isQuantized,u=t._isQuantizedDraco,R=t._isOctEncoded16P,V=t._isOctEncodedDraco,F=t._quantizedRange,U=t._octEncodedRange,G=t._isRGB565,A=t._isTranslucent,S=t._hasColors,g=t._hasNormals,C=t._hasBatchIds,y,Y,Q=[],J={};if(t._styleableShaderAttributes=J,m){let w=c9e;for(let z in d)if(d.hasOwnProperty(z)){let H=d[z],nt=Kkt(H.typedArray,z);y=H.componentCount,Y=it.fromTypedArray(nt);let $=we.createVertexBuffer({context:n,typedArray:nt,usage:ce.STATIC_DRAW});t._geometryByteLength+=$.sizeInBytes;let dt={index:w,vertexBuffer:$,componentsPerAttribute:y,componentDatatype:Y,normalize:!1,offsetInBytes:0,strideInBytes:0};Q.push(dt),J[z]={location:w,componentCount:y},++w}}let M=we.createVertexBuffer({context:n,typedArray:a.typedArray,usage:ce.STATIC_DRAW});t._geometryByteLength+=M.sizeInBytes;let Z;S&&(Z=we.createVertexBuffer({context:n,typedArray:s.typedArray,usage:ce.STATIC_DRAW}),t._geometryByteLength+=Z.sizeInBytes);let E;g&&(E=we.createVertexBuffer({context:n,typedArray:l.typedArray,usage:ce.STATIC_DRAW}),t._geometryByteLength+=E.sizeInBytes);let I;C&&(r.typedArray=Kkt(r.typedArray,"batchIds"),I=we.createVertexBuffer({context:n,typedArray:r.typedArray,usage:ce.STATIC_DRAW}),t._geometryByteLength+=I.sizeInBytes);let B=[];if(h?Y=it.UNSIGNED_SHORT:u?Y=F<=255?it.UNSIGNED_BYTE:it.UNSIGNED_SHORT:Y=it.FLOAT,B.push({index:jkt,vertexBuffer:M,componentsPerAttribute:3,componentDatatype:Y,normalize:!1,offsetInBytes:0,strideInBytes:0}),t._cull&&(h||u?t._boundingSphere=Ft.fromCornerPoints(p.ZERO,t._quantizedVolumeScale):t._boundingSphere=s9e(a.typedArray)),S)if(G)B.push({index:o4,vertexBuffer:Z,componentsPerAttribute:1,componentDatatype:it.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let w=A?4:3;B.push({index:o4,vertexBuffer:Z,componentsPerAttribute:w,componentDatatype:it.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}g&&(R?(y=2,Y=it.UNSIGNED_BYTE):V?(y=2,Y=U<=255?it.UNSIGNED_BYTE:it.UNSIGNED_SHORT):(y=3,Y=it.FLOAT),B.push({index:irt,vertexBuffer:E,componentsPerAttribute:y,componentDatatype:Y,normalize:!1,offsetInBytes:0,strideInBytes:0})),C&&B.push({index:qkt,vertexBuffer:I,componentsPerAttribute:1,componentDatatype:it.fromTypedArray(r.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),m&&(B=B.concat(Q));let X=new Ki({context:n,attributes:B}),_={depthTest:{enabled:!0}},P={depthTest:{enabled:!0},depthMask:!1,blending:Pn.ALPHA_BLEND};t._opaquePass===Pt.CESIUM_3D_TILE&&(_.stencilTest=gn.setCesium3DTileBit(),_.stencilMask=gn.CESIUM_3D_TILE_MASK,P.stencilTest=gn.setCesium3DTileBit(),P.stencilMask=gn.CESIUM_3D_TILE_MASK),t._opaqueRenderState=he.fromCache(_),t._translucentRenderState=he.fromCache(P),t._drawCommand=new Ee({boundingVolume:new Ft,cull:t._cull,modelMatrix:new L,primitiveType:le.POINTS,vertexArray:X,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:A?t._translucentRenderState:t._opaqueRenderState,pass:A?Pt.TRANSLUCENT:t._opaquePass,owner:t,castShadows:!1,receiveShadows:!1,pickId:t._pickIdLoaded()})}function p9e(t,e){let n=e.context,i=t._isQuantized,o=t._isQuantizedDraco,a=t._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let l=l9e;if(l.x=t._attenuation?t.maximumAttenuation:t._pointSize,l.x*=e.pixelRatio,l.y=t.time,t._attenuation){let r=e.camera.frustum,d;e.mode===Vt.SCENE2D||r instanceof wn?d=Number.POSITIVE_INFINITY:d=n.drawingBufferHeight/e.camera.frustum.sseDenominator,l.z=t.geometricError*t.geometricErrorScale,l.w=d}return l},u_highlightColor:function(){return t._highlightColor},u_constantColor:function(){return t._constantColor},u_clippingPlanes:function(){let l=t.clippingPlanes;return t.isClipped?l.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let l=t.clippingPlanes;if(!c(l))return v.TRANSPARENT;let r=v.clone(l.edgeColor,d9e);return r.alpha=l.edgeWidth,r},u_clippingPlanesMatrix:function(){let l=t.clippingPlanes;if(!c(l))return L.IDENTITY;let r=f(t.clippingPlanesOriginMatrix,t._modelMatrix);L.multiply(n.uniformState.view3D,r,$lt);let d=L.multiply($lt,l.modelMatrix,$lt);return L.inverseTranspose(d,m9e)}};bN.addUniforms(t,s),(i||o||a)&&(s=ze(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let l=r9e;if(c(t._quantizedVolumeScale)){let r=p.clone(t._quantizedVolumeScale,l);p.divideByScalar(r,t._quantizedRange,l)}return l.w=t._octEncodedRange,l}})),c(t._uniformMapLoaded)&&(s=t._uniformMapLoaded(s)),t._drawCommand.uniformMap=s}function trt(t,e){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(t);for(;i!==null;){let o=parseInt(i[1]);e.indexOf(o)===-1&&e.push(o),i=n.exec(t)}}function ert(t,e){t=t.slice(t.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(t);for(;i!==null;){let o=i[1];e.indexOf(o)===-1&&e.push(o),i=n.exec(t)}}function nrt(t,e){let n=t.numberOfAttributes;for(let i=0;i<n;++i){let o=t.getAttribute(i);if(o.index===e)return o}}var V9e={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function u9e(t,e,n){let i,o,a,s=e.context,l=c(n),r=t._isQuantized,d=t._isQuantizedDraco,m=t._isOctEncoded16P,h=t._isOctEncodedDraco,u=t._isRGB565,R=t._isTranslucent,V=t._hasColors,F=t._hasNormals,U=t._hasBatchIds,G=t._backFaceCulling,A=t._normalShading,S=t._drawCommand.vertexArray,g=t.clippingPlanes,C=t._attenuation,y,Y,Q,J=R,M=Re(V9e),Z={},E=t._styleableShaderAttributes;for(o in E)E.hasOwnProperty(o)&&(a=E[o],M[o]=`czm_3dtiles_property_${a.location}`,Z[a.location]=a);if(l){let Wt={translucent:!1},Nt="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";y=n.getColorShaderFunction(`getColorFromStyle${Nt}`,M,Wt),Y=n.getShowShaderFunction(`getShowFromStyle${Nt}`,M,Wt),Q=n.getPointSizeShaderFunction(`getPointSizeFromStyle${Nt}`,M,Wt),c(y)&&Wt.translucent&&(J=!0)}t._styleTranslucent=J;let I=c(y),B=c(Y),X=c(Q),_=t.isClipped,P=[],w=[];I&&(trt(y,P),ert(y,w)),B&&(trt(Y,P),ert(Y,w)),X&&(trt(Q,P),ert(Q,w));let z=w.indexOf("COLOR")>=0,H=w.indexOf("NORMAL")>=0;if(H&&!F)throw new Tt("Style references the NORMAL semantic but the point cloud does not have normals");for(o in E)if(E.hasOwnProperty(o)){a=E[o];let Wt=P.indexOf(a.location)>=0,Nt=nrt(S,a.location);Nt.enabled=Wt}let nt=V&&(!I||z);if(V){let Wt=nrt(S,o4);Wt.enabled=nt}let $=F&&(A||G||H);if(F){let Wt=nrt(S,irt);Wt.enabled=$}let dt={a_position:jkt};nt&&(dt.a_color=o4),$&&(dt.a_normal=irt),U&&(dt.a_batchId=qkt);let q="",at=P.length;for(i=0;i<at;++i){let Wt=P[i];a=Z[Wt];let Nt=a.componentCount,kt=`czm_3dtiles_property_${Wt}`,Mt;Nt===1?Mt="float":Mt=`vec${Nt}`,q+=`in ${Mt} ${kt}; `,dt[kt]=a.location}p9e(t,e);let st=`in vec3 a_position; out vec4 v_color; uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; @@ -15408,8 +15408,8 @@ uniform vec4 u_highlightColor; float tiles3d_tileset_time; `,C&&(st+=`float u_geometricError; float u_depthMultiplier; -`),st+=q,nt&&(b?st+=`in vec4 a_color; -`:Z?st+=`in float a_color; +`),st+=q,nt&&(R?st+=`in vec4 a_color; +`:u?st+=`in float a_color; const float SHIFT_RIGHT_11 = 1.0 / 2048.0; const float SHIFT_RIGHT_5 = 1.0 / 32.0; const float SHIFT_LEFT_11 = 2048.0; @@ -15427,8 +15427,8 @@ const float NORMALIZE_5 = 1.0 / 32.0; tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; `,C&&(st+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; -`),nt?b?st+=` vec4 color = a_color; -`:Z?st+=` float compressed = a_color; +`),nt?R?st+=` vec4 color = a_color; +`:u?st+=` float compressed = a_color; float r = floor(compressed * SHIFT_RIGHT_11); compressed -= r * SHIFT_LEFT_11; float g = floor(compressed * SHIFT_RIGHT_5); @@ -15475,8 +15475,8 @@ uniform vec4 u_clippingPlanesEdgeStyle; { out_FragColor = czm_gammaCorrect(v_color); `,_&&(Et+=iD("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),Et+=`} -`,t.splitDirection!==Jc.NONE&&(Et=RN.modifyFragmentShader(Et)),c(t._vertexShaderLoaded)&&(st=t._vertexShaderLoaded(st)),c(t._fragmentShaderLoaded)&&(Et=t._fragmentShaderLoaded(Et));let Qt=t._drawCommand;c(Qt.shaderProgram)&&Qt.shaderProgram.destroy(),Qt.shaderProgram=xn.fromCache({context:s,vertexShaderSource:st,fragmentShaderSource:Et,attributeLocations:dt});try{Qt.shaderProgram._bind()}catch{throw new St("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function V9e(t,e){if(t._decodingState===og.READY)return!1;if(t._decodingState===og.NEEDS_DECODE){let n=t._parsedContent,i=n.draco,o=$R.decodePointCloud(i,e);c(o)&&(t._decodingState=og.DECODING,o.then(function(a){t._decodingState=og.READY;let s=c(a.POSITION)?a.POSITION.array:void 0,l=c(a.RGB)?a.RGB.array:void 0,r=c(a.RGBA)?a.RGBA.array:void 0,d=c(a.NORMAL)?a.NORMAL.array:void 0,m=c(a.BATCH_ID)?a.BATCH_ID.array:void 0,h=c(s)&&c(a.POSITION.data.quantization),Z=c(d)&&c(a.NORMAL.data.quantization);if(h){let U=a.POSITION.data.quantization,G=U.range;t._quantizedVolumeScale=p.fromElements(G,G,G),t._quantizedVolumeOffset=p.unpack(U.minValues),t._quantizedRange=(1<<U.quantizationBits)-1,t._isQuantizedDraco=!0}Z&&(t._octEncodedRange=(1<<a.NORMAL.data.quantization.quantizationBits)-1,t._isOctEncodedDraco=!0);let b=n.styleableProperties,u=i.batchTableProperties;for(let U in u)if(u.hasOwnProperty(U)){let G=a[U];c(b)||(b={}),b[U]={typedArray:G.array,componentCount:G.data.componentsPerAttribute}}c(s)&&(n.positions={typedArray:s});let F=f(r,l);c(F)&&(n.colors={typedArray:F}),c(d)&&(n.normals={typedArray:d}),c(m)&&(n.batchIds={typedArray:m}),n.styleableProperties=b}).catch(function(a){t._decodingState=og.FAILED,t._error=a}))}return!0}var b9e=new Rt,R9e=new p;oD.prototype.update=function(t){let e=t.context;if(c(this._error)){let d=this._error;throw this._error=void 0,d}if(V9e(this,e))return;let i=!1,o=!L.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==t.mode&&(this._mode=t.mode,o=!0),c(this._drawCommand)||(h9e(this,t),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){L.clone(this.modelMatrix,this._modelMatrix);let d=this._drawCommand.modelMatrix;if(L.clone(this._modelMatrix,d),c(this._rtcCenter)&&L.multiplyByTranslation(d,this._rtcCenter,d),c(this._quantizedVolumeOffset)&&L.multiplyByTranslation(d,this._quantizedVolumeOffset,d),t.mode!==ut.SCENE3D){let h=t.mapProjection,Z=L.getColumn(d,3,b9e);Rt.equals(Z,Rt.UNIT_W)||Pe.basisTo2D(h,d,d)}let m=this._drawCommand.boundingVolume;if(Ft.clone(this._boundingSphere,m),this._cull){let h=m.center;L.multiplyByPoint(d,h,h);let Z=L.getScale(d,R9e);m.radius*=p.maximumComponent(Z)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let a=this.splitDirection!==Jc.NONE;this._splittingEnabled!==a&&(this._splittingEnabled=a,i=!0),i&&Z9e(this,t,this._style),this._drawCommand.castShadows=ui.castShadows(this.shadows),this._drawCommand.receiveShadows=ui.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Pt.TRANSLUCENT:this._opaquePass;let l=t.commandList,r=t.passes;(r.render||r.pick)&&l.push(this._drawCommand)};oD.prototype.isDestroyed=function(){return!1};oD.prototype.destroy=function(){let t=this._drawCommand;return c(t)&&(t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),At(this)};var aD=oD;var n6o=R(W(),1);function up(){Ut.throwInstantiationError()}up.computeDefaultLevelZeroMaximumGeometricError=function(t){return t.ellipsoid.maximumRadius*2*Math.PI*.25/(65*t.getNumberOfXTilesAtLevel(0))};Object.defineProperties(up.prototype,{quadtree:{get:Ut.throwInstantiationError,set:Ut.throwInstantiationError},tilingScheme:{get:Ut.throwInstantiationError},errorEvent:{get:Ut.throwInstantiationError}});up.prototype.update=Ut.throwInstantiationError;up.prototype.beginUpdate=Ut.throwInstantiationError;up.prototype.endUpdate=Ut.throwInstantiationError;up.prototype.getLevelMaximumGeometricError=Ut.throwInstantiationError;up.prototype.loadTile=Ut.throwInstantiationError;up.prototype.computeTileVisibility=Ut.throwInstantiationError;up.prototype.showTileThisFrame=Ut.throwInstantiationError;up.prototype.computeDistanceToTile=Ut.throwInstantiationError;up.prototype.isDestroyed=Ut.throwInstantiationError;up.prototype.destroy=Ut.throwInstantiationError;var ort=up;var l6o=R(W(),1);function art(t){t=f(t,1),this._radius=f(t,1)}Object.defineProperties(art.prototype,{radius:{get:function(){return this._radius},set:function(t){this._radius=t}}});art.prototype.emit=function(t){let e=k.randomBetween(0,k.TWO_PI),n=k.randomBetween(0,k.PI),i=k.randomBetween(0,this._radius),o=i*Math.cos(e)*Math.sin(n),a=i*Math.sin(e)*Math.sin(n),s=i*Math.cos(n);t.position=p.fromElements(o,a,s,t.position),t.velocity=p.normalize(t.position,t.velocity)};var srt=art;var c6o=R(W(),1);function sD(){}sD.prototype.evaluate=function(t,e){Ut.throwInstantiationError()};sD.prototype.evaluateColor=function(t,e){Ut.throwInstantiationError()};sD.prototype.getShaderFunction=function(t,e,n,i){Ut.throwInstantiationError()};sD.prototype.getVariables=function(){Ut.throwInstantiationError()};var lrt=sD;var Z6o=R(W(),1);function WN(t){this._ready=!1,this._provider=void 0,this._errorEvent=new It,this._readyEvent=new It,f9e(this,t)}Object.defineProperties(WN.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});WN.fromWorldTerrain=function(t){return new WN(KS(t))};WN.fromWorldBathymetry=function(t){return new WN(B5(t))};function W9e(t,e){t.numberOfListeners>0?t.raiseEvent(e):console.error(e)}async function f9e(t,e){let n;try{n=await Promise.resolve(e),t._provider=n,t._ready=!0,t._readyEvent.raiseEvent(n)}catch(i){W9e(t._errorEvent,i)}}var lD=WN;var R6o=R(W(),1);function fN(){}fN.prototype.boundingVolume=void 0;fN.prototype.boundingSphere=void 0;fN.prototype.distanceToCamera=function(t){Ut.throwInstantiationError()};fN.prototype.intersectPlane=function(t){Ut.throwInstantiationError()};fN.prototype.createDebugVolume=function(t){Ut.throwInstantiationError()};var rrt=fN;var T6o=R(W(),1);function rD(t){t=f(t,f.EMPTY_OBJECT),this._tilingScheme=c(t.tilingScheme)?t.tilingScheme:new Qo({ellipsoid:t.ellipsoid}),this._color=f(t.color,v.YELLOW),this._errorEvent=new It,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(rD.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});rD.prototype.getTileCredits=function(t,e,n){};rD.prototype.requestImage=function(t,e,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let a=o.getContext("2d"),s=this._color.toCssColorString();return a.strokeStyle=s,a.lineWidth=2,a.strokeRect(1,1,255,255),a.font="bold 25px Arial",a.textAlign="center",a.fillStyle=s,a.fillText(`L: ${n}`,124,86),a.fillText(`X: ${t}`,124,136),a.fillText(`Y: ${e}`,124,186),Promise.resolve(o)};rD.prototype.pickFeatures=function(t,e,n,i,o){};var dD=rD;var E6o=R(W(),1);function drt(t){Ut.throwInstantiationError()}drt.prototype.isReady=Ut.throwInstantiationError;drt.prototype.shouldDiscardImage=Ut.throwInstantiationError;var crt=drt;var I6o=R(W(),1),F9e={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},mrt=Object.freeze(F9e);var v6o=R(W(),1);function sg(t){t=f(t,f.EMPTY_OBJECT),this.show=f(t.show,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this.shadows=f(t.shadows,ui.ENABLED),this.maximumMemoryUsage=f(t.maximumMemoryUsage,256),this.shading=new eb(t.shading),this.style=t.style,this.frameFailed=new It,this.frameChanged=new It,this._clock=t.clock,this._intervals=t.intervals,this._clippingPlanes=void 0,this.clippingPlanes=t.clippingPlanes,this._pointCloudEyeDomeLighting=new l0,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(sg.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){Ml.setOwner(t,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(c(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function U9e(t){return`uniform vec4 czm_pickColor; -${t}`}function G9e(t){return function(e){return ze(e,{czm_pickColor:function(){return t._pickId.color}})}}function A9e(){return"czm_pickColor"}sg.prototype.makeStyleDirty=function(){this._styleDirty=!0};sg.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var T9e=new rt;function prt(t){let e=t._clock,n=e.canAnimate&&e.shouldAnimate,i=e.multiplier;return n?i:0}function ag(t,e){return t._intervals.indexOf(e.start)}function S9e(t,e){let n=t._intervals,i=t._clock,o=prt(t);if(o===0)return;let a=t._getAverageLoadTime(),s=rt.addSeconds(i.currentTime,a*o,T9e),l=n.indexOf(s),r=ag(t,e);return l===r&&(o>=0?++l:--l),n.get(l)}function g9e(t){let e=t._intervals,i=t._clock.currentTime,o=e.indexOf(i);return e.get(o)}function E9e(t,e,n){let i=prt(t),o=ag(t,e),a=ag(t,n);return i>=0?o>=a:o<=a}function tkt(t,e){return function(n){let i=c(n.message)?n.message:n.toString();t.frameFailed.numberOfListeners>0?t.frameFailed.raiseEvent({uri:e,message:i}):(console.log(`A frame failed to load: ${e}`),console.log(`Error: ${i}`))}}function C9e(t,e,n){let i=ag(t,e),o=t._frames,a=o[i];if(!c(a)){let s=e.data.transform,l=c(s)?L.fromArray(s):void 0,r=e.data.uri;a={pointCloud:void 0,transform:l,timestamp:Oi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:r},o[i]=a,te.fetchArrayBuffer({url:r}).then(function(d){a.pointCloud=new aD({arrayBuffer:d,cull:!0,fragmentShaderLoaded:U9e,uniformMapLoaded:G9e(t),pickIdLoaded:A9e})}).catch(tkt(t,r))}return a}function I9e(t,e){t._runningSum+=e,t._runningSum-=t._runningSamples[t._runningIndex],t._runningSamples[t._runningIndex]=e,t._runningLength=Math.min(t._runningLength+1,t._runningSamples.length),t._runningIndex=(t._runningIndex+1)%t._runningSamples.length,t._runningAverage=t._runningSum/t._runningLength}function N9e(t,e,n,i){e.touchedFrameNumber<i.frameNumber-1&&(e.sequential=!1);let o=e.pointCloud;if(c(o)&&!e.ready){let a=i.commandList,s=a.length;if(ekt(t,e,n,i),o.ready&&(e.ready=!0,t._totalMemoryUsageInBytes+=o.geometryByteLength,a.length=s,e.sequential)){let l=(Oi()-e.timestamp)/1e3;I9e(t,l)}}e.touchedFrameNumber=i.frameNumber}var y9e=new L;function B9e(t,e){let n=t.shading;return c(n)&&c(n.baseResolution)?n.baseResolution:c(e.boundingSphere)?k.cbrt(e.boundingSphere.volume()/e.pointsLength):0}function Q9e(t){let e=t.shading;return c(e)&&c(e.maximumAttenuation)?e.maximumAttenuation:10}var k9e=new eb;function ekt(t,e,n,i){let o=f(t.shading,k9e),a=e.pointCloud,s=f(e.transform,L.IDENTITY);a.modelMatrix=L.multiplyTransformation(t.modelMatrix,s,y9e),a.style=t.style,a.time=n.timeSinceLoad,a.shadows=t.shadows,a.clippingPlanes=t._clippingPlanes,a.isClipped=n.isClipped,a.attenuation=o.attenuation,a.backFaceCulling=o.backFaceCulling,a.normalShading=o.normalShading,a.geometricError=B9e(t,a),a.geometricErrorScale=o.geometricErrorScale,a.maximumAttenuation=Q9e(t);try{a.update(i)}catch(l){tkt(t,e.uri)(l)}e.touchedFrameNumber=i.frameNumber}function hrt(t,e,n,i){let o=C9e(t,e,i);N9e(t,o,n,i)}function Y9e(t){return function(e){return e.touchedFrameNumber<t.frameNumber}}function nkt(t,e){let n=t._frames,i=n.length;for(let o=0;o<i;++o){let a=n[o];if(c(a)&&(!c(e)||e(a))){let s=a.pointCloud;a.ready&&(t._totalMemoryUsageInBytes-=s.geometryByteLength),c(s)&&s.destroy(),a===t._lastRenderedFrame&&(t._lastRenderedFrame=void 0),n[o]=void 0}}}function x9e(t,e){let n=ag(t,e),i=t._frames[n];if(c(i)&&i.ready)return i}function $2t(t,e,n,i,o){return c(n)?n.ready?!0:(hrt(t,e,i,o),n.ready):!1}function X9e(t,e,n,i,o){let a,s,l,r=t._intervals,d=t._frames,m=ag(t,n),h=ag(t,e);if(m>=h){for(a=m;a>=h;--a)if(s=r.get(a),l=d[a],$2t(t,s,l,i,o))return s}else for(a=m;a<=h;++a)if(s=r.get(a),l=d[a],$2t(t,s,l,i,o))return s;return e}function J9e(t,e,n){let i=t._frames,o=i.length;for(let a=0;a<o;++a){let s=i[a];c(s)&&c(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=e,s.pointCloud.styleDirty=n)}}var FN={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};sg.prototype.update=function(t){if(t.mode===ut.MORPHING||!this.show)return;c(this._pickId)||(this._pickId=t.context.createPickId({primitive:this})),c(this._loadTimestamp)||(this._loadTimestamp=rt.clone(t.time));let e=Math.max(rt.secondsDifference(t.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,a=c(n)&&n.enabled;a&&(n.update(t),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&J9e(this,o,s),FN.timeSinceLoad=e,FN.isClipped=a;let l=this.shading,r=this._pointCloudEyeDomeLighting,d=t.commandList,m=d.length,h=this._previousInterval,Z=this._nextInterval,b=g9e(this);if(!c(b))return;let u=!1,F=prt(this),U=F===0;F!==this._clockMultiplier&&(u=!0,this._clockMultiplier=F),(!c(h)||U)&&(h=b),(!c(Z)||u||E9e(this,b,Z))&&(Z=S9e(this,b)),h=X9e(this,h,b,FN,t);let G=x9e(this,h);c(G)||(hrt(this,h,FN,t),G=this._lastRenderedFrame),c(G)&&ekt(this,G,FN,t),c(Z)&&hrt(this,Z,FN,t);let A=this;c(G)&&!c(this._lastRenderedFrame)&&t.afterRender.push(function(){return!0}),c(G)&&G!==this._lastRenderedFrame&&A.frameChanged.numberOfListeners>0&&t.afterRender.push(function(){return A.frameChanged.raiseEvent(A),!0}),this._previousInterval=h,this._nextInterval=Z,this._lastRenderedFrame=G;let T=this._totalMemoryUsageInBytes,g=this.maximumMemoryUsage*1024*1024;T>g&&nkt(this,Y9e(t));let y=d.length-m;c(l)&&l.attenuation&&l.eyeDomeLighting&&y>0&&r.update(t,m,l,this.boundingSphere)};sg.prototype.isDestroyed=function(){return!1};sg.prototype.destroy=function(){return nkt(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),At(this)};var UN=sg;var s7o=R(W(),1);function a4(t,e){this.show=!0,c(t)||(t=new Fe),this.rectangle=Fe.clone(t),c(e)||(e=eo.fromType(eo.ColorType,{color:new v(1,1,1,1)})),this.material=e,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}a4.prototype.update=function(t){if(!this.show)return;let e=this._rs;if((!c(e)||!Fe.equals(e.viewport,this.rectangle))&&(this._rs=he.fromCache({blending:Pn.ALPHA_BLEND,viewport:this.rectangle})),t.passes.render){let i=t.context;if(this._material!==this.material||!c(this._overlayCommand)){this._material=this.material,c(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new Ve({sources:[this._material.shaderSource,A5]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Pt.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,t.commandList.push(this._overlayCommand)}};a4.prototype.isDestroyed=function(){return!1};a4.prototype.destroy=function(){return c(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),At(this)};var urt=a4;var d7o=R(W(),1);function Zrt(){Ut.throwInstantiationError()}Object.defineProperties(Zrt.prototype,{globalTransform:{get:Ut.throwInstantiationError},shapeTransform:{get:Ut.throwInstantiationError},shape:{get:Ut.throwInstantiationError},minBounds:{get:Ut.throwInstantiationError},maxBounds:{get:Ut.throwInstantiationError},dimensions:{get:Ut.throwInstantiationError},paddingBefore:{get:Ut.throwInstantiationError},paddingAfter:{get:Ut.throwInstantiationError},names:{get:Ut.throwInstantiationError},types:{get:Ut.throwInstantiationError},componentTypes:{get:Ut.throwInstantiationError},minimumValues:{get:Ut.throwInstantiationError},maximumValues:{get:Ut.throwInstantiationError},maximumTileCount:{get:Ut.throwInstantiationError},keyframeCount:{get:Ut.throwInstantiationError},timeIntervalCollection:{get:Ut.throwInstantiationError}});Zrt.prototype.requestData=Ut.throwInstantiationError;var Vrt=Zrt;var h7o=R(W(),1);function lg(){Ut.throwInstantiationError()}Object.defineProperties(lg.prototype,{orientedBoundingBox:{get:Ut.throwInstantiationError},boundingSphere:{get:Ut.throwInstantiationError},boundTransform:{get:Ut.throwInstantiationError},shapeTransform:{get:Ut.throwInstantiationError},shaderUniforms:{get:Ut.throwInstantiationError},shaderDefines:{get:Ut.throwInstantiationError},shaderMaximumIntersectionsLength:{get:Ut.throwInstantiationError}});lg.prototype.update=Ut.throwInstantiationError;lg.prototype.computeOrientedBoundingBoxForTile=Ut.throwInstantiationError;lg.prototype.computeOrientedBoundingBoxForSample=Ut.throwInstantiationError;lg.DefaultMinBounds=Ut.throwInstantiationError;lg.DefaultMaxBounds=Ut.throwInstantiationError;var brt=lg;var R7o=R(W(),1);async function Rrt(t,e){let n=e.terrainProvider,i=e.mapProjection,o=i.ellipsoid,a,s=e.camera.getRectangleCameraCoordinates(t);if(e.mode===ut.SCENE3D?a=o.cartesianToCartographic(s):a=i.unproject(s),!c(n))return a;let l=n.availability;if(!c(l)||e.mode===ut.SCENE2D)return a;let r=[Gt.center(t),Gt.southeast(t),Gt.southwest(t),Gt.northeast(t),Gt.northwest(t)],d=await Rrt._sampleTerrainMostDetailed(n,r),m=!1,h=d.reduce(function(b,u){return c(u.height)?(m=!0,Math.max(u.height,b)):b},-Number.MAX_VALUE),Z=a;return m&&(Z.height+=h),Z}Rrt._sampleTerrainMostDetailed=zS;var rg=Rrt;var Q7o=R(W(),1);var L9e=new v,M9e=new v,_9e=new v,D9e=new v,ikt=new Rt,cD=new Uint8Array(4);function okt(t,e,n,i){let o=e.height===n.height?0:(t-e.height)/(n.height-e.height);return v.lerp(e.color,n.color,o,i)}function s4(t,e){return{height:t,color:v.clone(e)}}function akt(t){return t=t.filter(function(e,n,i){let o=n>0,a=n<i.length-1,s=o?e.height===i[n-1].height:!0,l=a?e.height===i[n+1].height:!0;return!s||!l}),t=t.filter(function(e,n,i){let o=n>0,a=n<i.length-1,s=o?v.equals(e.color,i[n-1].color):!1,l=a?v.equals(e.color,i[n+1].color):!1;return!s||!l}),t=t.filter(function(e,n,i){let o=n>0,a=o?v.equals(e.color,i[n-1].color):!1,s=o?e.height===i[n-1].height:!0;return!a||!s}),t}function O9e(t){let e,n,i=[],o=t.length;for(e=0;e<o;e++){let a=t[e],s=a.entries,l=s.length,r=[];for(n=0;n<l;n++){let b=s[n],u=k.clamp(b.height,sh._minimumHeight,sh._maximumHeight),F=v.clone(b.color,L9e);F.red*=F.alpha,F.green*=F.alpha,F.blue*=F.alpha,r.push(s4(u,F))}let d=!0,m=!0;for(n=0;n<l-1;n++){let b=r[n+0],u=r[n+1];d=d&&b.height<=u.height,m=m&&b.height>=u.height}m?r=r.reverse():d||ZW(r,function(b,u){return k.sign(b.height-u.height)});let h=f(a.extendDownwards,!1),Z=f(a.extendUpwards,!1);r.length===1&&!h&&!Z&&(h=!0,Z=!0),h&&r.splice(0,0,s4(sh._minimumHeight,r[0].color)),Z&&r.splice(r.length,0,s4(sh._maximumHeight,r[r.length-1].color)),r=akt(r),i.push(r)}return i}function H9e(t){let e=O9e(t),n=[],i=[],o;function a(d,m){n.push(s4(d,m))}function s(d,m,h){let Z=v.multiplyByScalar(h,1-m.alpha,D9e);Z=v.add(Z,m,Z),a(d,Z)}let l=e.length;for(o=0;o<l;o++){let d=e[o],m=0,h=0;i=n,n=[];let Z=d.length,b=i.length;for(;m<Z||h<b;){let u=m<Z?d[m]:void 0,F=m>0?d[m-1]:void 0,U=m<Z-1?d[m+1]:void 0,G=h<b?i[h]:void 0,A=h>0?i[h-1]:void 0,T=h<b-1?i[h+1]:void 0;if(c(u)&&c(G)&&u.height===G.height){let g=c(T)&&G.height===T.height,C=!c(A),y=!c(T),Y=c(U)&&u.height===U.height,Q=!c(F),J=!c(U);g?Y?(s(u.height,u.color,G.color),s(u.height,U.color,T.color)):Q?(a(u.height,G.color),s(u.height,u.color,T.color)):J?(s(u.height,u.color,G.color),a(u.height,T.color)):(s(u.height,u.color,G.color),s(u.height,u.color,T.color)):C?Y?(a(u.height,u.color),s(u.height,U.color,G.color)):J?(a(u.height,u.color),a(u.height,G.color)):(Q||a(u.height,u.color),s(u.height,u.color,G.color)):y?Y?(s(u.height,u.color,G.color),a(u.height,U.color)):Q?(a(u.height,G.color),a(u.height,u.color)):J?s(u.height,u.color,G.color):(s(u.height,u.color,G.color),a(u.height,u.color)):Y?(s(u.height,u.color,G.color),s(u.height,U.color,G.color)):Q?(a(u.height,G.color),s(u.height,u.color,G.color)):J?(s(u.height,u.color,G.color),a(u.height,G.color)):s(u.height,u.color,G.color),m+=Y?2:1,h+=g?2:1}else if(c(u)&&c(G)&&c(A)&&u.height<G.height){let g=okt(u.height,A,G,_9e);c(F)?c(U)?s(u.height,u.color,g):(s(u.height,u.color,g),a(u.height,g)):(a(u.height,g),s(u.height,u.color,g)),m++}else if(c(G)&&c(u)&&c(F)&&G.height<u.height){let g=okt(G.height,F,u,M9e);c(A)?c(T)?s(G.height,g,G.color):(s(G.height,g,G.color),a(G.height,g)):(a(G.height,g),s(G.height,g,G.color)),h++}else c(u)&&(!c(G)||u.height<G.height)?(c(G)&&!c(A)&&!c(U)?(a(u.height,u.color),a(u.height,sh._emptyColor),a(G.height,sh._emptyColor)):(!c(G)&&c(A)&&!c(F)&&(a(A.height,sh._emptyColor),a(u.height,sh._emptyColor)),a(u.height,u.color)),m++):c(G)&&(!c(u)||G.height<u.height)&&(a(G.height,G.color),h++)}}return akt(n)}function sh(t){let{scene:e,layers:n}=f(t,f.EMPTY_OBJECT),{context:i}=e,o=H9e(n),a=o.length,s,l,r;if(!sh._useFloatTexture(i)){l=Ue.UNSIGNED_BYTE,r=Ye.RGBA,s=new Uint8Array(a*4);for(let b=0;b<a;b++)Rt.packFloat(o[b].height,ikt),Rt.pack(ikt,s,b*4)}else{l=Ue.FLOAT,r=i.webgl2?Ye.RED:Ye.LUMINANCE,s=new Float32Array(a);for(let b=0;b<a;b++)s[b]=o[b].height}let m=hn.create({context:i,pixelFormat:r,pixelDatatype:l,source:{arrayBufferView:s,width:a,height:1},sampler:new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:On.NEAREST,magnificationFilter:bo.NEAREST})}),h=new Uint8Array(a*4);for(let b=0;b<a;b++)o[b].color.toBytes(cD),h[b*4+0]=cD[0],h[b*4+1]=cD[1],h[b*4+2]=cD[2],h[b*4+3]=cD[3];let Z=hn.create({context:i,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:h,width:a,height:1},sampler:new Hn({wrapS:Vi.CLAMP_TO_EDGE,wrapT:Vi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:bo.LINEAR})});return eo.fromType("ElevationBand",{heights:m,colors:Z})}sh._useFloatTexture=function(t){return t.floatingPointTexture};sh._maximumHeight=5906376425472;sh._minimumHeight=-5906376425472;sh._emptyColor=new v(0,0,0,0);var Wrt=sh;var _7o=R(W(),1);async function w9e(t,e){if(e=f(e,{}),e.cacheBytes=f(e.cacheBytes,1536*1024*1024),e.maximumCacheOverflowBytes=f(e.maximumCacheOverflowBytes,1024*1024*1024),e.enableCollision=f(e.enableCollision,!0),t=f(t,PS.defaultApiKey),!c(t))return P9e(e);let n,i=PS.getDefaultCredit();c(i)&&(n=[i]);let o=new te({url:`${PS.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:t},credits:n});return Pr.fromUrl(o,e)}var skt={};async function P9e(t){let i=skt[2275207];c(i)||(i=gh.fromAssetId(2275207),skt[2275207]=i);let o=await i;return Pr.fromUrl(o,t)}var frt=w9e;var K7o=R(W(),1);async function v9e(t){let e=await Pr.fromIonAssetId(96188,t);t=f(t,f.EMPTY_OBJECT);let n=t.style;if(!c(n)){let i=f(t.defaultColor,v.WHITE).toCssColorString();n=new qS({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return e.style=n,e}var Frt=v9e;var aqo=R(W(),1);function K9e(t){t=f(t,f.EMPTY_OBJECT);let e=[],n=t.geometry;(!c(n.attributes)||!c(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=L.clone(f(t.modelMatrix,L.IDENTITY)),a=f(t.length,1e4);if(c(i.normal)&&e.push(new $e({geometry:gi.createLineSegmentsForVectors(n,"normal",a),attributes:{color:new En(1,0,0,1)},modelMatrix:o})),c(i.tangent)&&e.push(new $e({geometry:gi.createLineSegmentsForVectors(n,"tangent",a),attributes:{color:new En(0,1,0,1)},modelMatrix:o})),c(i.bitangent)&&e.push(new $e({geometry:gi.createLineSegmentsForVectors(n,"bitangent",a),attributes:{color:new En(0,0,1,1)},modelMatrix:o})),e.length>0)return new Wi({asynchronous:!1,geometryInstances:e,appearance:new jn({flat:!0,translucent:!1})})}var Urt=K9e;var lqo=R(W(),1),Grt=`uniform sampler2D u_depthTexture; +`,t.splitDirection!==Jc.NONE&&(Et=bN.modifyFragmentShader(Et)),c(t._vertexShaderLoaded)&&(st=t._vertexShaderLoaded(st)),c(t._fragmentShaderLoaded)&&(Et=t._fragmentShaderLoaded(Et));let Qt=t._drawCommand;c(Qt.shaderProgram)&&Qt.shaderProgram.destroy(),Qt.shaderProgram=xn.fromCache({context:s,vertexShaderSource:st,fragmentShaderSource:Et,attributeLocations:dt});try{Qt.shaderProgram._bind()}catch{throw new Tt("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function Z9e(t,e){if(t._decodingState===og.READY)return!1;if(t._decodingState===og.NEEDS_DECODE){let n=t._parsedContent,i=n.draco,o=$b.decodePointCloud(i,e);c(o)&&(t._decodingState=og.DECODING,o.then(function(a){t._decodingState=og.READY;let s=c(a.POSITION)?a.POSITION.array:void 0,l=c(a.RGB)?a.RGB.array:void 0,r=c(a.RGBA)?a.RGBA.array:void 0,d=c(a.NORMAL)?a.NORMAL.array:void 0,m=c(a.BATCH_ID)?a.BATCH_ID.array:void 0,h=c(s)&&c(a.POSITION.data.quantization),u=c(d)&&c(a.NORMAL.data.quantization);if(h){let U=a.POSITION.data.quantization,G=U.range;t._quantizedVolumeScale=p.fromElements(G,G,G),t._quantizedVolumeOffset=p.unpack(U.minValues),t._quantizedRange=(1<<U.quantizationBits)-1,t._isQuantizedDraco=!0}u&&(t._octEncodedRange=(1<<a.NORMAL.data.quantization.quantizationBits)-1,t._isOctEncodedDraco=!0);let R=n.styleableProperties,V=i.batchTableProperties;for(let U in V)if(V.hasOwnProperty(U)){let G=a[U];c(R)||(R={}),R[U]={typedArray:G.array,componentCount:G.data.componentsPerAttribute}}c(s)&&(n.positions={typedArray:s});let F=f(r,l);c(F)&&(n.colors={typedArray:F}),c(d)&&(n.normals={typedArray:d}),c(m)&&(n.batchIds={typedArray:m}),n.styleableProperties=R}).catch(function(a){t._decodingState=og.FAILED,t._error=a}))}return!0}var R9e=new bt,b9e=new p;oD.prototype.update=function(t){let e=t.context;if(c(this._error)){let d=this._error;throw this._error=void 0,d}if(Z9e(this,e))return;let i=!1,o=!L.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==t.mode&&(this._mode=t.mode,o=!0),c(this._drawCommand)||(h9e(this,t),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){L.clone(this.modelMatrix,this._modelMatrix);let d=this._drawCommand.modelMatrix;if(L.clone(this._modelMatrix,d),c(this._rtcCenter)&&L.multiplyByTranslation(d,this._rtcCenter,d),c(this._quantizedVolumeOffset)&&L.multiplyByTranslation(d,this._quantizedVolumeOffset,d),t.mode!==Vt.SCENE3D){let h=t.mapProjection,u=L.getColumn(d,3,R9e);bt.equals(u,bt.UNIT_W)||Pe.basisTo2D(h,d,d)}let m=this._drawCommand.boundingVolume;if(Ft.clone(this._boundingSphere,m),this._cull){let h=m.center;L.multiplyByPoint(d,h,h);let u=L.getScale(d,b9e);m.radius*=p.maximumComponent(u)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let a=this.splitDirection!==Jc.NONE;this._splittingEnabled!==a&&(this._splittingEnabled=a,i=!0),i&&u9e(this,t,this._style),this._drawCommand.castShadows=Vi.castShadows(this.shadows),this._drawCommand.receiveShadows=Vi.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Pt.TRANSLUCENT:this._opaquePass;let l=t.commandList,r=t.passes;(r.render||r.pick)&&l.push(this._drawCommand)};oD.prototype.isDestroyed=function(){return!1};oD.prototype.destroy=function(){let t=this._drawCommand;return c(t)&&(t.vertexArray=t.vertexArray&&t.vertexArray.destroy(),t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),At(this)};var aD=oD;var n6o=b(W(),1);function Vp(){Ut.throwInstantiationError()}Vp.computeDefaultLevelZeroMaximumGeometricError=function(t){return t.ellipsoid.maximumRadius*2*Math.PI*.25/(65*t.getNumberOfXTilesAtLevel(0))};Object.defineProperties(Vp.prototype,{quadtree:{get:Ut.throwInstantiationError,set:Ut.throwInstantiationError},tilingScheme:{get:Ut.throwInstantiationError},errorEvent:{get:Ut.throwInstantiationError}});Vp.prototype.update=Ut.throwInstantiationError;Vp.prototype.beginUpdate=Ut.throwInstantiationError;Vp.prototype.endUpdate=Ut.throwInstantiationError;Vp.prototype.getLevelMaximumGeometricError=Ut.throwInstantiationError;Vp.prototype.loadTile=Ut.throwInstantiationError;Vp.prototype.computeTileVisibility=Ut.throwInstantiationError;Vp.prototype.showTileThisFrame=Ut.throwInstantiationError;Vp.prototype.computeDistanceToTile=Ut.throwInstantiationError;Vp.prototype.isDestroyed=Ut.throwInstantiationError;Vp.prototype.destroy=Ut.throwInstantiationError;var ort=Vp;var l6o=b(W(),1);function art(t){t=f(t,1),this._radius=f(t,1)}Object.defineProperties(art.prototype,{radius:{get:function(){return this._radius},set:function(t){this._radius=t}}});art.prototype.emit=function(t){let e=k.randomBetween(0,k.TWO_PI),n=k.randomBetween(0,k.PI),i=k.randomBetween(0,this._radius),o=i*Math.cos(e)*Math.sin(n),a=i*Math.sin(e)*Math.sin(n),s=i*Math.cos(n);t.position=p.fromElements(o,a,s,t.position),t.velocity=p.normalize(t.position,t.velocity)};var srt=art;var c6o=b(W(),1);function sD(){}sD.prototype.evaluate=function(t,e){Ut.throwInstantiationError()};sD.prototype.evaluateColor=function(t,e){Ut.throwInstantiationError()};sD.prototype.getShaderFunction=function(t,e,n,i){Ut.throwInstantiationError()};sD.prototype.getVariables=function(){Ut.throwInstantiationError()};var lrt=sD;var u6o=b(W(),1);function WN(t){this._ready=!1,this._provider=void 0,this._errorEvent=new It,this._readyEvent=new It,f9e(this,t)}Object.defineProperties(WN.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});WN.fromWorldTerrain=function(t){return new WN(KT(t))};WN.fromWorldBathymetry=function(t){return new WN(B5(t))};function W9e(t,e){t.numberOfListeners>0?t.raiseEvent(e):console.error(e)}async function f9e(t,e){let n;try{n=await Promise.resolve(e),t._provider=n,t._ready=!0,t._readyEvent.raiseEvent(n)}catch(i){W9e(t._errorEvent,i)}}var lD=WN;var b6o=b(W(),1);function fN(){}fN.prototype.boundingVolume=void 0;fN.prototype.boundingSphere=void 0;fN.prototype.distanceToCamera=function(t){Ut.throwInstantiationError()};fN.prototype.intersectPlane=function(t){Ut.throwInstantiationError()};fN.prototype.createDebugVolume=function(t){Ut.throwInstantiationError()};var rrt=fN;var S6o=b(W(),1);function rD(t){t=f(t,f.EMPTY_OBJECT),this._tilingScheme=c(t.tilingScheme)?t.tilingScheme:new Qo({ellipsoid:t.ellipsoid}),this._color=f(t.color,v.YELLOW),this._errorEvent=new It,this._tileWidth=f(t.tileWidth,256),this._tileHeight=f(t.tileHeight,256),this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(rD.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});rD.prototype.getTileCredits=function(t,e,n){};rD.prototype.requestImage=function(t,e,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let a=o.getContext("2d"),s=this._color.toCssColorString();return a.strokeStyle=s,a.lineWidth=2,a.strokeRect(1,1,255,255),a.font="bold 25px Arial",a.textAlign="center",a.fillStyle=s,a.fillText(`L: ${n}`,124,86),a.fillText(`X: ${t}`,124,136),a.fillText(`Y: ${e}`,124,186),Promise.resolve(o)};rD.prototype.pickFeatures=function(t,e,n,i,o){};var dD=rD;var E6o=b(W(),1);function drt(t){Ut.throwInstantiationError()}drt.prototype.isReady=Ut.throwInstantiationError;drt.prototype.shouldDiscardImage=Ut.throwInstantiationError;var crt=drt;var I6o=b(W(),1),F9e={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},mrt=Object.freeze(F9e);var v6o=b(W(),1);function sg(t){t=f(t,f.EMPTY_OBJECT),this.show=f(t.show,!0),this.modelMatrix=L.clone(f(t.modelMatrix,L.IDENTITY)),this.shadows=f(t.shadows,Vi.ENABLED),this.maximumMemoryUsage=f(t.maximumMemoryUsage,256),this.shading=new eR(t.shading),this.style=t.style,this.frameFailed=new It,this.frameChanged=new It,this._clock=t.clock,this._intervals=t.intervals,this._clippingPlanes=void 0,this.clippingPlanes=t.clippingPlanes,this._pointCloudEyeDomeLighting=new l0,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(sg.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(t){Ml.setOwner(t,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(c(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function U9e(t){return`uniform vec4 czm_pickColor; +${t}`}function G9e(t){return function(e){return ze(e,{czm_pickColor:function(){return t._pickId.color}})}}function A9e(){return"czm_pickColor"}sg.prototype.makeStyleDirty=function(){this._styleDirty=!0};sg.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var S9e=new rt;function prt(t){let e=t._clock,n=e.canAnimate&&e.shouldAnimate,i=e.multiplier;return n?i:0}function ag(t,e){return t._intervals.indexOf(e.start)}function T9e(t,e){let n=t._intervals,i=t._clock,o=prt(t);if(o===0)return;let a=t._getAverageLoadTime(),s=rt.addSeconds(i.currentTime,a*o,S9e),l=n.indexOf(s),r=ag(t,e);return l===r&&(o>=0?++l:--l),n.get(l)}function g9e(t){let e=t._intervals,i=t._clock.currentTime,o=e.indexOf(i);return e.get(o)}function E9e(t,e,n){let i=prt(t),o=ag(t,e),a=ag(t,n);return i>=0?o>=a:o<=a}function t2t(t,e){return function(n){let i=c(n.message)?n.message:n.toString();t.frameFailed.numberOfListeners>0?t.frameFailed.raiseEvent({uri:e,message:i}):(console.log(`A frame failed to load: ${e}`),console.log(`Error: ${i}`))}}function C9e(t,e,n){let i=ag(t,e),o=t._frames,a=o[i];if(!c(a)){let s=e.data.transform,l=c(s)?L.fromArray(s):void 0,r=e.data.uri;a={pointCloud:void 0,transform:l,timestamp:Oi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:r},o[i]=a,te.fetchArrayBuffer({url:r}).then(function(d){a.pointCloud=new aD({arrayBuffer:d,cull:!0,fragmentShaderLoaded:U9e,uniformMapLoaded:G9e(t),pickIdLoaded:A9e})}).catch(t2t(t,r))}return a}function I9e(t,e){t._runningSum+=e,t._runningSum-=t._runningSamples[t._runningIndex],t._runningSamples[t._runningIndex]=e,t._runningLength=Math.min(t._runningLength+1,t._runningSamples.length),t._runningIndex=(t._runningIndex+1)%t._runningSamples.length,t._runningAverage=t._runningSum/t._runningLength}function N9e(t,e,n,i){e.touchedFrameNumber<i.frameNumber-1&&(e.sequential=!1);let o=e.pointCloud;if(c(o)&&!e.ready){let a=i.commandList,s=a.length;if(e2t(t,e,n,i),o.ready&&(e.ready=!0,t._totalMemoryUsageInBytes+=o.geometryByteLength,a.length=s,e.sequential)){let l=(Oi()-e.timestamp)/1e3;I9e(t,l)}}e.touchedFrameNumber=i.frameNumber}var y9e=new L;function B9e(t,e){let n=t.shading;return c(n)&&c(n.baseResolution)?n.baseResolution:c(e.boundingSphere)?k.cbrt(e.boundingSphere.volume()/e.pointsLength):0}function Q9e(t){let e=t.shading;return c(e)&&c(e.maximumAttenuation)?e.maximumAttenuation:10}var k9e=new eR;function e2t(t,e,n,i){let o=f(t.shading,k9e),a=e.pointCloud,s=f(e.transform,L.IDENTITY);a.modelMatrix=L.multiplyTransformation(t.modelMatrix,s,y9e),a.style=t.style,a.time=n.timeSinceLoad,a.shadows=t.shadows,a.clippingPlanes=t._clippingPlanes,a.isClipped=n.isClipped,a.attenuation=o.attenuation,a.backFaceCulling=o.backFaceCulling,a.normalShading=o.normalShading,a.geometricError=B9e(t,a),a.geometricErrorScale=o.geometricErrorScale,a.maximumAttenuation=Q9e(t);try{a.update(i)}catch(l){t2t(t,e.uri)(l)}e.touchedFrameNumber=i.frameNumber}function hrt(t,e,n,i){let o=C9e(t,e,i);N9e(t,o,n,i)}function Y9e(t){return function(e){return e.touchedFrameNumber<t.frameNumber}}function n2t(t,e){let n=t._frames,i=n.length;for(let o=0;o<i;++o){let a=n[o];if(c(a)&&(!c(e)||e(a))){let s=a.pointCloud;a.ready&&(t._totalMemoryUsageInBytes-=s.geometryByteLength),c(s)&&s.destroy(),a===t._lastRenderedFrame&&(t._lastRenderedFrame=void 0),n[o]=void 0}}}function x9e(t,e){let n=ag(t,e),i=t._frames[n];if(c(i)&&i.ready)return i}function $kt(t,e,n,i,o){return c(n)?n.ready?!0:(hrt(t,e,i,o),n.ready):!1}function X9e(t,e,n,i,o){let a,s,l,r=t._intervals,d=t._frames,m=ag(t,n),h=ag(t,e);if(m>=h){for(a=m;a>=h;--a)if(s=r.get(a),l=d[a],$kt(t,s,l,i,o))return s}else for(a=m;a<=h;++a)if(s=r.get(a),l=d[a],$kt(t,s,l,i,o))return s;return e}function J9e(t,e,n){let i=t._frames,o=i.length;for(let a=0;a<o;++a){let s=i[a];c(s)&&c(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=e,s.pointCloud.styleDirty=n)}}var FN={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};sg.prototype.update=function(t){if(t.mode===Vt.MORPHING||!this.show)return;c(this._pickId)||(this._pickId=t.context.createPickId({primitive:this})),c(this._loadTimestamp)||(this._loadTimestamp=rt.clone(t.time));let e=Math.max(rt.secondsDifference(t.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,a=c(n)&&n.enabled;a&&(n.update(t),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&J9e(this,o,s),FN.timeSinceLoad=e,FN.isClipped=a;let l=this.shading,r=this._pointCloudEyeDomeLighting,d=t.commandList,m=d.length,h=this._previousInterval,u=this._nextInterval,R=g9e(this);if(!c(R))return;let V=!1,F=prt(this),U=F===0;F!==this._clockMultiplier&&(V=!0,this._clockMultiplier=F),(!c(h)||U)&&(h=R),(!c(u)||V||E9e(this,R,u))&&(u=T9e(this,R)),h=X9e(this,h,R,FN,t);let G=x9e(this,h);c(G)||(hrt(this,h,FN,t),G=this._lastRenderedFrame),c(G)&&e2t(this,G,FN,t),c(u)&&hrt(this,u,FN,t);let A=this;c(G)&&!c(this._lastRenderedFrame)&&t.afterRender.push(function(){return!0}),c(G)&&G!==this._lastRenderedFrame&&A.frameChanged.numberOfListeners>0&&t.afterRender.push(function(){return A.frameChanged.raiseEvent(A),!0}),this._previousInterval=h,this._nextInterval=u,this._lastRenderedFrame=G;let S=this._totalMemoryUsageInBytes,g=this.maximumMemoryUsage*1024*1024;S>g&&n2t(this,Y9e(t));let y=d.length-m;c(l)&&l.attenuation&&l.eyeDomeLighting&&y>0&&r.update(t,m,l,this.boundingSphere)};sg.prototype.isDestroyed=function(){return!1};sg.prototype.destroy=function(){return n2t(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),At(this)};var UN=sg;var s7o=b(W(),1);function a4(t,e){this.show=!0,c(t)||(t=new Fe),this.rectangle=Fe.clone(t),c(e)||(e=eo.fromType(eo.ColorType,{color:new v(1,1,1,1)})),this.material=e,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}a4.prototype.update=function(t){if(!this.show)return;let e=this._rs;if((!c(e)||!Fe.equals(e.viewport,this.rectangle))&&(this._rs=he.fromCache({blending:Pn.ALPHA_BLEND,viewport:this.rectangle})),t.passes.render){let i=t.context;if(this._material!==this.material||!c(this._overlayCommand)){this._material=this.material,c(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new Ze({sources:[this._material.shaderSource,A5]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Pt.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,t.commandList.push(this._overlayCommand)}};a4.prototype.isDestroyed=function(){return!1};a4.prototype.destroy=function(){return c(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),At(this)};var Vrt=a4;var d7o=b(W(),1);function urt(){Ut.throwInstantiationError()}Object.defineProperties(urt.prototype,{globalTransform:{get:Ut.throwInstantiationError},shapeTransform:{get:Ut.throwInstantiationError},shape:{get:Ut.throwInstantiationError},minBounds:{get:Ut.throwInstantiationError},maxBounds:{get:Ut.throwInstantiationError},dimensions:{get:Ut.throwInstantiationError},paddingBefore:{get:Ut.throwInstantiationError},paddingAfter:{get:Ut.throwInstantiationError},names:{get:Ut.throwInstantiationError},types:{get:Ut.throwInstantiationError},componentTypes:{get:Ut.throwInstantiationError},minimumValues:{get:Ut.throwInstantiationError},maximumValues:{get:Ut.throwInstantiationError},maximumTileCount:{get:Ut.throwInstantiationError},keyframeCount:{get:Ut.throwInstantiationError},timeIntervalCollection:{get:Ut.throwInstantiationError}});urt.prototype.requestData=Ut.throwInstantiationError;var Zrt=urt;var h7o=b(W(),1);function lg(){Ut.throwInstantiationError()}Object.defineProperties(lg.prototype,{orientedBoundingBox:{get:Ut.throwInstantiationError},boundingSphere:{get:Ut.throwInstantiationError},boundTransform:{get:Ut.throwInstantiationError},shapeTransform:{get:Ut.throwInstantiationError},shaderUniforms:{get:Ut.throwInstantiationError},shaderDefines:{get:Ut.throwInstantiationError},shaderMaximumIntersectionsLength:{get:Ut.throwInstantiationError}});lg.prototype.update=Ut.throwInstantiationError;lg.prototype.computeOrientedBoundingBoxForTile=Ut.throwInstantiationError;lg.prototype.computeOrientedBoundingBoxForSample=Ut.throwInstantiationError;lg.DefaultMinBounds=Ut.throwInstantiationError;lg.DefaultMaxBounds=Ut.throwInstantiationError;var Rrt=lg;var b7o=b(W(),1);async function brt(t,e){let n=e.terrainProvider,i=e.mapProjection,o=i.ellipsoid,a,s=e.camera.getRectangleCameraCoordinates(t);if(e.mode===Vt.SCENE3D?a=o.cartesianToCartographic(s):a=i.unproject(s),!c(n))return a;let l=n.availability;if(!c(l)||e.mode===Vt.SCENE2D)return a;let r=[Gt.center(t),Gt.southeast(t),Gt.southwest(t),Gt.northeast(t),Gt.northwest(t)],d=await brt._sampleTerrainMostDetailed(n,r),m=!1,h=d.reduce(function(R,V){return c(V.height)?(m=!0,Math.max(V.height,R)):R},-Number.MAX_VALUE),u=a;return m&&(u.height+=h),u}brt._sampleTerrainMostDetailed=zT;var rg=brt;var Q7o=b(W(),1);var L9e=new v,M9e=new v,_9e=new v,D9e=new v,i2t=new bt,cD=new Uint8Array(4);function o2t(t,e,n,i){let o=e.height===n.height?0:(t-e.height)/(n.height-e.height);return v.lerp(e.color,n.color,o,i)}function s4(t,e){return{height:t,color:v.clone(e)}}function a2t(t){return t=t.filter(function(e,n,i){let o=n>0,a=n<i.length-1,s=o?e.height===i[n-1].height:!0,l=a?e.height===i[n+1].height:!0;return!s||!l}),t=t.filter(function(e,n,i){let o=n>0,a=n<i.length-1,s=o?v.equals(e.color,i[n-1].color):!1,l=a?v.equals(e.color,i[n+1].color):!1;return!s||!l}),t=t.filter(function(e,n,i){let o=n>0,a=o?v.equals(e.color,i[n-1].color):!1,s=o?e.height===i[n-1].height:!0;return!a||!s}),t}function O9e(t){let e,n,i=[],o=t.length;for(e=0;e<o;e++){let a=t[e],s=a.entries,l=s.length,r=[];for(n=0;n<l;n++){let R=s[n],V=k.clamp(R.height,sh._minimumHeight,sh._maximumHeight),F=v.clone(R.color,L9e);F.red*=F.alpha,F.green*=F.alpha,F.blue*=F.alpha,r.push(s4(V,F))}let d=!0,m=!0;for(n=0;n<l-1;n++){let R=r[n+0],V=r[n+1];d=d&&R.height<=V.height,m=m&&R.height>=V.height}m?r=r.reverse():d||uW(r,function(R,V){return k.sign(R.height-V.height)});let h=f(a.extendDownwards,!1),u=f(a.extendUpwards,!1);r.length===1&&!h&&!u&&(h=!0,u=!0),h&&r.splice(0,0,s4(sh._minimumHeight,r[0].color)),u&&r.splice(r.length,0,s4(sh._maximumHeight,r[r.length-1].color)),r=a2t(r),i.push(r)}return i}function H9e(t){let e=O9e(t),n=[],i=[],o;function a(d,m){n.push(s4(d,m))}function s(d,m,h){let u=v.multiplyByScalar(h,1-m.alpha,D9e);u=v.add(u,m,u),a(d,u)}let l=e.length;for(o=0;o<l;o++){let d=e[o],m=0,h=0;i=n,n=[];let u=d.length,R=i.length;for(;m<u||h<R;){let V=m<u?d[m]:void 0,F=m>0?d[m-1]:void 0,U=m<u-1?d[m+1]:void 0,G=h<R?i[h]:void 0,A=h>0?i[h-1]:void 0,S=h<R-1?i[h+1]:void 0;if(c(V)&&c(G)&&V.height===G.height){let g=c(S)&&G.height===S.height,C=!c(A),y=!c(S),Y=c(U)&&V.height===U.height,Q=!c(F),J=!c(U);g?Y?(s(V.height,V.color,G.color),s(V.height,U.color,S.color)):Q?(a(V.height,G.color),s(V.height,V.color,S.color)):J?(s(V.height,V.color,G.color),a(V.height,S.color)):(s(V.height,V.color,G.color),s(V.height,V.color,S.color)):C?Y?(a(V.height,V.color),s(V.height,U.color,G.color)):J?(a(V.height,V.color),a(V.height,G.color)):(Q||a(V.height,V.color),s(V.height,V.color,G.color)):y?Y?(s(V.height,V.color,G.color),a(V.height,U.color)):Q?(a(V.height,G.color),a(V.height,V.color)):J?s(V.height,V.color,G.color):(s(V.height,V.color,G.color),a(V.height,V.color)):Y?(s(V.height,V.color,G.color),s(V.height,U.color,G.color)):Q?(a(V.height,G.color),s(V.height,V.color,G.color)):J?(s(V.height,V.color,G.color),a(V.height,G.color)):s(V.height,V.color,G.color),m+=Y?2:1,h+=g?2:1}else if(c(V)&&c(G)&&c(A)&&V.height<G.height){let g=o2t(V.height,A,G,_9e);c(F)?c(U)?s(V.height,V.color,g):(s(V.height,V.color,g),a(V.height,g)):(a(V.height,g),s(V.height,V.color,g)),m++}else if(c(G)&&c(V)&&c(F)&&G.height<V.height){let g=o2t(G.height,F,V,M9e);c(A)?c(S)?s(G.height,g,G.color):(s(G.height,g,G.color),a(G.height,g)):(a(G.height,g),s(G.height,g,G.color)),h++}else c(V)&&(!c(G)||V.height<G.height)?(c(G)&&!c(A)&&!c(U)?(a(V.height,V.color),a(V.height,sh._emptyColor),a(G.height,sh._emptyColor)):(!c(G)&&c(A)&&!c(F)&&(a(A.height,sh._emptyColor),a(V.height,sh._emptyColor)),a(V.height,V.color)),m++):c(G)&&(!c(V)||G.height<V.height)&&(a(G.height,G.color),h++)}}return a2t(n)}function sh(t){let{scene:e,layers:n}=f(t,f.EMPTY_OBJECT),{context:i}=e,o=H9e(n),a=o.length,s,l,r;if(!sh._useFloatTexture(i)){l=Ue.UNSIGNED_BYTE,r=Ye.RGBA,s=new Uint8Array(a*4);for(let R=0;R<a;R++)bt.packFloat(o[R].height,i2t),bt.pack(i2t,s,R*4)}else{l=Ue.FLOAT,r=i.webgl2?Ye.RED:Ye.LUMINANCE,s=new Float32Array(a);for(let R=0;R<a;R++)s[R]=o[R].height}let m=hn.create({context:i,pixelFormat:r,pixelDatatype:l,source:{arrayBufferView:s,width:a,height:1},sampler:new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:On.NEAREST,magnificationFilter:Ro.NEAREST})}),h=new Uint8Array(a*4);for(let R=0;R<a;R++)o[R].color.toBytes(cD),h[R*4+0]=cD[0],h[R*4+1]=cD[1],h[R*4+2]=cD[2],h[R*4+3]=cD[3];let u=hn.create({context:i,pixelFormat:Ye.RGBA,pixelDatatype:Ue.UNSIGNED_BYTE,source:{arrayBufferView:h,width:a,height:1},sampler:new Hn({wrapS:Zi.CLAMP_TO_EDGE,wrapT:Zi.CLAMP_TO_EDGE,minificationFilter:On.LINEAR,magnificationFilter:Ro.LINEAR})});return eo.fromType("ElevationBand",{heights:m,colors:u})}sh._useFloatTexture=function(t){return t.floatingPointTexture};sh._maximumHeight=5906376425472;sh._minimumHeight=-5906376425472;sh._emptyColor=new v(0,0,0,0);var Wrt=sh;var _7o=b(W(),1);async function w9e(t,e){if(e=f(e,{}),e.cacheBytes=f(e.cacheBytes,1536*1024*1024),e.maximumCacheOverflowBytes=f(e.maximumCacheOverflowBytes,1024*1024*1024),e.enableCollision=f(e.enableCollision,!0),t=f(t,PT.defaultApiKey),!c(t))return P9e(e);let n,i=PT.getDefaultCredit();c(i)&&(n=[i]);let o=new te({url:`${PT.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:t},credits:n});return Pr.fromUrl(o,e)}var s2t={};async function P9e(t){let i=s2t[2275207];c(i)||(i=gh.fromAssetId(2275207),s2t[2275207]=i);let o=await i;return Pr.fromUrl(o,t)}var frt=w9e;var K7o=b(W(),1);async function v9e(t){let e=await Pr.fromIonAssetId(96188,t);t=f(t,f.EMPTY_OBJECT);let n=t.style;if(!c(n)){let i=f(t.defaultColor,v.WHITE).toCssColorString();n=new qT({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return e.style=n,e}var Frt=v9e;var aqo=b(W(),1);function K9e(t){t=f(t,f.EMPTY_OBJECT);let e=[],n=t.geometry;(!c(n.attributes)||!c(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=L.clone(f(t.modelMatrix,L.IDENTITY)),a=f(t.length,1e4);if(c(i.normal)&&e.push(new $e({geometry:gi.createLineSegmentsForVectors(n,"normal",a),attributes:{color:new En(1,0,0,1)},modelMatrix:o})),c(i.tangent)&&e.push(new $e({geometry:gi.createLineSegmentsForVectors(n,"tangent",a),attributes:{color:new En(0,1,0,1)},modelMatrix:o})),c(i.bitangent)&&e.push(new $e({geometry:gi.createLineSegmentsForVectors(n,"bitangent",a),attributes:{color:new En(0,0,1,1)},modelMatrix:o})),e.length>0)return new Wi({asynchronous:!1,geometryInstances:e,appearance:new jn({flat:!0,translucent:!1})})}var Urt=K9e;var lqo=b(W(),1),Grt=`uniform sampler2D u_depthTexture; in vec2 v_textureCoordinates; @@ -15490,33 +15490,33 @@ void main() float scale = pow(z_ndc * 0.5 + 0.5, 8.0); out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); } -`;var Zqo=R(W(),1);function z9e(t){t=f(t,f.EMPTY_OBJECT),this.typedArray=t.typedArray,this.width=t.width,this.height=t.height,this.pixelFormat=f(t.pixelFormat,Ye.RGBA),this.pixelDatatype=f(t.pixelDatatype,Ue.UNSIGNED_BYTE);let e=t.url;typeof e=="string"&&(e=te.createIfNeeded(e)),this.resource=e;let i=f(t.repeat,!0)?Vi.REPEAT:Vi.CLAMP_TO_EDGE;this.sampler=new Hn({wrapS:i,wrapT:i,minificationFilter:t.minificationFilter,magnificationFilter:t.magnificationFilter,maximumAnisotropy:t.maximumAnisotropy})}var Art=z9e;var bqo=R(W(),1),j9e={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat2",MAT4:"mat4"},Trt=Object.freeze(j9e);var fqo=R(W(),1);function q9e(t){async function e({data:i}){let o=[],a={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await t(i.parameters,o);a.result=s}catch(s){s instanceof Error?a.error={name:s.name,message:s.message,stack:s.stack}:a.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(a,o)}catch(s){a.result=void 0,a.error=`postMessage failed with error: ${Qb(s)} - with responseMessage: ${JSON.stringify(a)}`,postMessage(a)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=e,self.onmessageerror=n,self}var Srt=q9e;globalThis.CESIUM_VERSION="1.116";var STa=R(W(),1);var HWa=R(W(),1);var MWa=R(W(),1);var yWa=R(W(),1),mD;typeof ko<"u"&&(mD=ko);(function(){/*! +`;var uqo=b(W(),1);function z9e(t){t=f(t,f.EMPTY_OBJECT),this.typedArray=t.typedArray,this.width=t.width,this.height=t.height,this.pixelFormat=f(t.pixelFormat,Ye.RGBA),this.pixelDatatype=f(t.pixelDatatype,Ue.UNSIGNED_BYTE);let e=t.url;typeof e=="string"&&(e=te.createIfNeeded(e)),this.resource=e;let i=f(t.repeat,!0)?Zi.REPEAT:Zi.CLAMP_TO_EDGE;this.sampler=new Hn({wrapS:i,wrapT:i,minificationFilter:t.minificationFilter,magnificationFilter:t.magnificationFilter,maximumAnisotropy:t.maximumAnisotropy})}var Art=z9e;var Rqo=b(W(),1),j9e={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat2",MAT4:"mat4"},Srt=Object.freeze(j9e);var fqo=b(W(),1);function q9e(t){async function e({data:i}){let o=[],a={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await t(i.parameters,o);a.result=s}catch(s){s instanceof Error?a.error={name:s.name,message:s.message,stack:s.stack}:a.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(a,o)}catch(s){a.result=void 0,a.error=`postMessage failed with error: ${QR(s)} + with responseMessage: ${JSON.stringify(a)}`,postMessage(a)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=e,self.onmessageerror=n,self}var Trt=q9e;globalThis.CESIUM_VERSION="1.116";var TSa=b(W(),1);var HWa=b(W(),1);var MWa=b(W(),1);var yWa=b(W(),1),mD;typeof ko<"u"&&(mD=ko);(function(){/*! * Knockout JavaScript library v3.5.1 * (c) The Knockout.js team - http://knockoutjs.com/ * License: MIT (http://www.opensource.org/licenses/mit-license.php) - */(function(){(function(t){var e=this||(0,eval)("this"),n=e.document,i=e.navigator,o=e.jQuery,a=e.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(e.ko={})}(function(s,l){function r(V,E){return V===null||typeof V in F?V===E:!1}function d(V,E){var I;return function(){I||(I=u.a.setTimeout(function(){I=t,V()},E))}}function m(V,E){var I;return function(){clearTimeout(I),I=u.a.setTimeout(V,E)}}function h(V,E){E&&E!=="change"?E==="beforeChange"?this.pc(V):this.gb(V,E):this.qc(V)}function Z(V,E){E!==null&&E.s&&E.s()}function b(V,E){var I=this.qd,B=I[g];B.ra||(this.Qb&&this.mb[E]?(I.uc(E,V,this.mb[E]),this.mb[E]=null,--this.Qb):B.I[E]||I.uc(E,V,B.J?{da:V}:I.$c(V)),V.Ja&&V.gd())}var u=typeof s<"u"?s:{};u.b=function(V,E){for(var I=V.split("."),B=u,X=0;X<I.length-1;X++)B=B[I[X]];B[I[I.length-1]]=E},u.L=function(V,E,I){V[E]=I},u.version="3.5.1",u.b("version",u.version),u.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},u.a=function(){function V(q,at){for(var st in q)X.call(q,st)&&at(st,q[st])}function E(q,at){if(at)for(var st in at)X.call(at,st)&&(q[st]=at[st]);return q}function I(q,at){return q.__proto__=at,q}function B(q,at,st,Et){var Qt=q[at].match($)||[];u.a.D(st.match($),function(Wt){u.a.Na(Qt,Wt,Et)}),q[at]=Qt.join(" ")}var X=Object.prototype.hasOwnProperty,_={__proto__:[]}instanceof Array,P=typeof Symbol=="function",w={},z={};w[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],w.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),V(w,function(q,at){if(at.length)for(var st=0,Et=at.length;st<Et;st++)z[at[st]]=q});var H={propertychange:!0},nt=n&&function(){for(var q=3,at=n.createElement("div"),st=at.getElementsByTagName("i");at.innerHTML="<!--[if gt IE "+ ++q+"]><i></i><![endif]-->",st[0];);return 4<q?q:t}(),$=/\S+/g,dt;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(q,at,st){for(var Et=0,Qt=q.length;Et<Qt;Et++)at.call(st,q[Et],Et,q)},A:typeof Array.prototype.indexOf=="function"?function(q,at){return Array.prototype.indexOf.call(q,at)}:function(q,at){for(var st=0,Et=q.length;st<Et;st++)if(q[st]===at)return st;return-1},Lb:function(q,at,st){for(var Et=0,Qt=q.length;Et<Qt;Et++)if(at.call(st,q[Et],Et,q))return q[Et];return t},Pa:function(q,at){var st=u.a.A(q,at);0<st?q.splice(st,1):st===0&&q.shift()},wc:function(q){var at=[];return q&&u.a.D(q,function(st){0>u.a.A(at,st)&&at.push(st)}),at},Mb:function(q,at,st){var Et=[];if(q)for(var Qt=0,Wt=q.length;Qt<Wt;Qt++)Et.push(at.call(st,q[Qt],Qt));return Et},jb:function(q,at,st){var Et=[];if(q)for(var Qt=0,Wt=q.length;Qt<Wt;Qt++)at.call(st,q[Qt],Qt)&&Et.push(q[Qt]);return Et},Nb:function(q,at){if(at instanceof Array)q.push.apply(q,at);else for(var st=0,Et=at.length;st<Et;st++)q.push(at[st]);return q},Na:function(q,at,st){var Et=u.a.A(u.a.bc(q),at);0>Et?st&&q.push(at):st||q.splice(Et,1)},Ba:_,extend:E,setPrototypeOf:I,Ab:_?I:E,P:V,Ga:function(q,at,st){if(!q)return q;var Et={},Qt;for(Qt in q)X.call(q,Qt)&&(Et[Qt]=at.call(st,q[Qt],Qt,q));return Et},Tb:function(q){for(;q.firstChild;)u.removeNode(q.firstChild)},Yb:function(q){q=u.a.la(q);for(var at=(q[0]&&q[0].ownerDocument||n).createElement("div"),st=0,Et=q.length;st<Et;st++)at.appendChild(u.oa(q[st]));return at},Ca:function(q,at){for(var st=0,Et=q.length,Qt=[];st<Et;st++){var Wt=q[st].cloneNode(!0);Qt.push(at?u.oa(Wt):Wt)}return Qt},va:function(q,at){if(u.a.Tb(q),at)for(var st=0,Et=at.length;st<Et;st++)q.appendChild(at[st])},Xc:function(q,at){var st=q.nodeType?[q]:q;if(0<st.length){for(var Et=st[0],Qt=Et.parentNode,Wt=0,Nt=at.length;Wt<Nt;Wt++)Qt.insertBefore(at[Wt],Et);for(Wt=0,Nt=st.length;Wt<Nt;Wt++)u.removeNode(st[Wt])}},Ua:function(q,at){if(q.length){for(at=at.nodeType===8&&at.parentNode||at;q.length&&q[0].parentNode!==at;)q.splice(0,1);for(;1<q.length&&q[q.length-1].parentNode!==at;)q.length--;if(1<q.length){var st=q[0],Et=q[q.length-1];for(q.length=0;st!==Et;)q.push(st),st=st.nextSibling;q.push(Et)}}return q},Zc:function(q,at){7>nt?q.setAttribute("selected",at):q.selected=at},Db:function(q){return q===null||q===t?"":q.trim?q.trim():q.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(q,at){return q=q||"",at.length>q.length?!1:q.substring(0,at.length)===at},vd:function(q,at){if(q===at)return!0;if(q.nodeType===11)return!1;if(at.contains)return at.contains(q.nodeType!==1?q.parentNode:q);if(at.compareDocumentPosition)return(at.compareDocumentPosition(q)&16)==16;for(;q&&q!=at;)q=q.parentNode;return!!q},Sb:function(q){return u.a.vd(q,q.ownerDocument.documentElement)},kd:function(q){return!!u.a.Lb(q,u.a.Sb)},R:function(q){return q&&q.tagName&&q.tagName.toLowerCase()},Ac:function(q){return u.onError?function(){try{return q.apply(this,arguments)}catch(at){throw u.onError&&u.onError(at),at}}:q},setTimeout:function(q,at){return setTimeout(u.a.Ac(q),at)},Gc:function(q){setTimeout(function(){throw u.onError&&u.onError(q),q},0)},B:function(q,at,st){var Et=u.a.Ac(st);if(st=H[at],u.options.useOnlyNativeEvents||st||!o)if(st||typeof q.addEventListener!="function")if(typeof q.attachEvent<"u"){var Qt=function(Nt){Et.call(q,Nt)},Wt="on"+at;q.attachEvent(Wt,Qt),u.a.K.za(q,function(){q.detachEvent(Wt,Qt)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else q.addEventListener(at,Et,!1);else dt||(dt=typeof o(q).on=="function"?"on":"bind"),o(q)[dt](at,Et)},Fb:function(q,at){if(!q||!q.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var st;if(u.a.R(q)==="input"&&q.type&&at.toLowerCase()=="click"?(st=q.type,st=st=="checkbox"||st=="radio"):st=!1,u.options.useOnlyNativeEvents||!o||st)if(typeof n.createEvent=="function")if(typeof q.dispatchEvent=="function")st=n.createEvent(z[at]||"HTMLEvents"),st.initEvent(at,!0,!0,e,0,0,0,0,0,!1,!1,!1,!1,0,q),q.dispatchEvent(st);else throw Error("The supplied element doesn't support dispatchEvent");else if(st&&q.click)q.click();else if(typeof q.fireEvent<"u")q.fireEvent("on"+at);else throw Error("Browser doesn't support triggering events");else o(q).trigger(at)},f:function(q){return u.O(q)?q():q},bc:function(q){return u.O(q)?q.v():q},Eb:function(q,at,st){var Et;at&&(typeof q.classList=="object"?(Et=q.classList[st?"add":"remove"],u.a.D(at.match($),function(Qt){Et.call(q.classList,Qt)})):typeof q.className.baseVal=="string"?B(q.className,"baseVal",at,st):B(q,"className",at,st))},Bb:function(q,at){var st=u.a.f(at);(st===null||st===t)&&(st="");var Et=u.h.firstChild(q);!Et||Et.nodeType!=3||u.h.nextSibling(Et)?u.h.va(q,[q.ownerDocument.createTextNode(st)]):Et.data=st,u.a.Ad(q)},Yc:function(q,at){if(q.name=at,7>=nt)try{var st=q.name.replace(/[&<>'"]/g,function(Et){return"&#"+Et.charCodeAt(0)+";"});q.mergeAttributes(n.createElement("<input name='"+st+"'/>"),!1)}catch{}},Ad:function(q){9<=nt&&(q=q.nodeType==1?q:q.parentNode,q.style&&(q.style.zoom=q.style.zoom))},wd:function(q){if(nt){var at=q.style.width;q.style.width=0,q.style.width=at}},Pd:function(q,at){q=u.a.f(q),at=u.a.f(at);for(var st=[],Et=q;Et<=at;Et++)st.push(Et);return st},la:function(q){for(var at=[],st=0,Et=q.length;st<Et;st++)at.push(q[st]);return at},Da:function(q){return P?Symbol(q):q},Zd:nt===6,$d:nt===7,W:nt,Lc:function(q,at){for(var st=u.a.la(q.getElementsByTagName("input")).concat(u.a.la(q.getElementsByTagName("textarea"))),Et=typeof at=="string"?function(Nt){return Nt.name===at}:function(Nt){return at.test(Nt.name)},Qt=[],Wt=st.length-1;0<=Wt;Wt--)Et(st[Wt])&&Qt.push(st[Wt]);return Qt},Nd:function(q){return typeof q=="string"&&(q=u.a.Db(q))?a&&a.parse?a.parse(q):new Function("return "+q)():null},hc:function(q,at,st){if(!a||!a.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return a.stringify(u.a.f(q),at,st)},Od:function(q,at,st){st=st||{};var Et=st.params||{},Qt=st.includeFields||this.Jc,Wt=q;if(typeof q=="object"&&u.a.R(q)==="form")for(var Wt=q.action,Nt=Qt.length-1;0<=Nt;Nt--)for(var kt=u.a.Lc(q,Qt[Nt]),Mt=kt.length-1;0<=Mt;Mt--)Et[kt[Mt].name]=kt[Mt].value;at=u.a.f(at);var qt=n.createElement("form");qt.style.display="none",qt.action=Wt,qt.method="post";for(var ie in at)q=n.createElement("input"),q.type="hidden",q.name=ie,q.value=u.a.hc(u.a.f(at[ie])),qt.appendChild(q);V(Et,function(oe,He){var rn=n.createElement("input");rn.type="hidden",rn.name=oe,rn.value=He,qt.appendChild(rn)}),n.body.appendChild(qt),st.submitter?st.submitter(qt):qt.submit(),setTimeout(function(){qt.parentNode.removeChild(qt)},0)}}}(),u.b("utils",u.a),u.b("utils.arrayForEach",u.a.D),u.b("utils.arrayFirst",u.a.Lb),u.b("utils.arrayFilter",u.a.jb),u.b("utils.arrayGetDistinctValues",u.a.wc),u.b("utils.arrayIndexOf",u.a.A),u.b("utils.arrayMap",u.a.Mb),u.b("utils.arrayPushAll",u.a.Nb),u.b("utils.arrayRemoveItem",u.a.Pa),u.b("utils.cloneNodes",u.a.Ca),u.b("utils.createSymbolOrString",u.a.Da),u.b("utils.extend",u.a.extend),u.b("utils.fieldsIncludedWithJsonPost",u.a.Jc),u.b("utils.getFormFields",u.a.Lc),u.b("utils.objectMap",u.a.Ga),u.b("utils.peekObservable",u.a.bc),u.b("utils.postJson",u.a.Od),u.b("utils.parseJson",u.a.Nd),u.b("utils.registerEventHandler",u.a.B),u.b("utils.stringifyJson",u.a.hc),u.b("utils.range",u.a.Pd),u.b("utils.toggleDomNodeCssClass",u.a.Eb),u.b("utils.triggerEvent",u.a.Fb),u.b("utils.unwrapObservable",u.a.f),u.b("utils.objectForEach",u.a.P),u.b("utils.addOrRemoveItem",u.a.Na),u.b("utils.setTextContent",u.a.Bb),u.b("unwrap",u.a.f),Function.prototype.bind||(Function.prototype.bind=function(V){var E=this;if(arguments.length===1)return function(){return E.apply(V,arguments)};var I=Array.prototype.slice.call(arguments,1);return function(){var B=I.slice(0);return B.push.apply(B,arguments),E.apply(V,B)}}),u.a.g=new function(){var V=0,E="__ko__"+new Date().getTime(),I={},B,X;return u.a.W?(B=function(_,P){var w=_[E];if(!w||w==="null"||!I[w]){if(!P)return t;w=_[E]="ko"+V++,I[w]={}}return I[w]},X=function(_){var P=_[E];return P?(delete I[P],_[E]=null,!0):!1}):(B=function(_,P){var w=_[E];return!w&&P&&(w=_[E]={}),w},X=function(_){return _[E]?(delete _[E],!0):!1}),{get:function(_,P){var w=B(_,!1);return w&&w[P]},set:function(_,P,w){(_=B(_,w!==t))&&(_[P]=w)},Ub:function(_,P,w){return _=B(_,!0),_[P]||(_[P]=w)},clear:X,Z:function(){return V+++E}}},u.b("utils.domData",u.a.g),u.b("utils.domData.clear",u.a.g.clear),u.a.K=new function(){function V(P,w){var z=u.a.g.get(P,B);return z===t&&w&&(z=[],u.a.g.set(P,B,z)),z}function E(P){var w=V(P,!1);if(w)for(var w=w.slice(0),z=0;z<w.length;z++)w[z](P);u.a.g.clear(P),u.a.K.cleanExternalData(P),_[P.nodeType]&&I(P.childNodes,!0)}function I(P,w){for(var z=[],H,nt=0;nt<P.length;nt++)if((!w||P[nt].nodeType===8)&&(E(z[z.length]=H=P[nt]),P[nt]!==H))for(;nt--&&u.a.A(z,P[nt])==-1;);}var B=u.a.g.Z(),X={1:!0,8:!0,9:!0},_={1:!0,9:!0};return{za:function(P,w){if(typeof w!="function")throw Error("Callback must be a function");V(P,!0).push(w)},yb:function(P,w){var z=V(P,!1);z&&(u.a.Pa(z,w),z.length==0&&u.a.g.set(P,B,t))},oa:function(P){return u.u.G(function(){X[P.nodeType]&&(E(P),_[P.nodeType]&&I(P.getElementsByTagName("*")))}),P},removeNode:function(P){u.oa(P),P.parentNode&&P.parentNode.removeChild(P)},cleanExternalData:function(P){o&&typeof o.cleanData=="function"&&o.cleanData([P])}}},u.oa=u.a.K.oa,u.removeNode=u.a.K.removeNode,u.b("cleanNode",u.oa),u.b("removeNode",u.removeNode),u.b("utils.domNodeDisposal",u.a.K),u.b("utils.domNodeDisposal.addDisposeCallback",u.a.K.za),u.b("utils.domNodeDisposal.removeDisposeCallback",u.a.K.yb),function(){var V=[0,"",""],E=[1,"<table>","</table>"],I=[3,"<table><tbody><tr>","</tr></tbody></table>"],B=[1,"<select multiple='multiple'>","</select>"],X={thead:E,tbody:E,tfoot:E,tr:[2,"<table><tbody>","</tbody></table>"],td:I,th:I,option:B,optgroup:B},_=8>=u.a.W;u.a.ua=function(P,w){var z;if(o){if(o.parseHTML)z=o.parseHTML(P,w)||[];else if((z=o.clean([P],w))&&z[0]){for(var H=z[0];H.parentNode&&H.parentNode.nodeType!==11;)H=H.parentNode;H.parentNode&&H.parentNode.removeChild(H)}}else{(z=w)||(z=n);var H=z.parentWindow||z.defaultView||e,nt=u.a.Db(P).toLowerCase(),$=z.createElement("div"),dt;for(dt=(nt=nt.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&X[nt[1]]||V,nt=dt[0],dt="ignored<div>"+dt[1]+P+dt[2]+"</div>",typeof H.innerShiv=="function"?$.appendChild(H.innerShiv(dt)):(_&&z.body.appendChild($),$.innerHTML=dt,_&&$.parentNode.removeChild($));nt--;)$=$.lastChild;z=u.a.la($.lastChild.childNodes)}return z},u.a.Md=function(P,w){var z=u.a.ua(P,w);return z.length&&z[0].parentElement||u.a.Yb(z)},u.a.fc=function(P,w){if(u.a.Tb(P),w=u.a.f(w),w!==null&&w!==t)if(typeof w!="string"&&(w=w.toString()),o)o(P).html(w);else for(var z=u.a.ua(w,P.ownerDocument),H=0;H<z.length;H++)P.appendChild(z[H])}}(),u.b("utils.parseHtmlFragment",u.a.ua),u.b("utils.setHtml",u.a.fc),u.aa=function(){function V(I,B){if(I){if(I.nodeType==8){var X=u.aa.Uc(I.nodeValue);X!=null&&B.push({ud:I,Kd:X})}else if(I.nodeType==1)for(var X=0,_=I.childNodes,P=_.length;X<P;X++)V(_[X],B)}}var E={};return{Xb:function(I){if(typeof I!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var B=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return E[B]=I,"<!--[ko_memo:"+B+"]-->"},bd:function(I,B){var X=E[I];if(X===t)throw Error("Couldn't find any memo with ID "+I+". Perhaps it's already been unmemoized.");try{return X.apply(null,B||[]),!0}finally{delete E[I]}},cd:function(I,B){var X=[];V(I,X);for(var _=0,P=X.length;_<P;_++){var w=X[_].ud,z=[w];B&&u.a.Nb(z,B),u.aa.bd(X[_].Kd,z),w.nodeValue="",w.parentNode&&w.parentNode.removeChild(w)}},Uc:function(I){return(I=I.match(/^\[ko_memo\:(.*?)\]$/))?I[1]:null}}}(),u.b("memoization",u.aa),u.b("memoization.memoize",u.aa.Xb),u.b("memoization.unmemoize",u.aa.bd),u.b("memoization.parseMemoText",u.aa.Uc),u.b("memoization.unmemoizeDomNodeAndDescendants",u.aa.cd),u.na=function(){function V(){if(X){for(var w=X,z=0,H;P<X;)if(H=B[P++]){if(P>w){if(5e3<=++z){P=X,u.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}w=X}try{H()}catch(nt){u.a.Gc(nt)}}}}function E(){V(),P=X=B.length=0}var I,B=[],X=0,_=1,P=0;return e.MutationObserver?I=function(w){var z=n.createElement("div");return new MutationObserver(w).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(E):I=n&&"onreadystatechange"in n.createElement("script")?function(w){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,w()},n.documentElement.appendChild(z)}:function(w){setTimeout(w,0)},{scheduler:I,zb:function(w){return X||u.na.scheduler(E),B[X++]=w,_++},cancel:function(w){w=w-(_-X),w>=P&&w<X&&(B[w]=null)},resetForTesting:function(){var w=X-P;return P=X=B.length=0,w},Sd:V}}(),u.b("tasks",u.na),u.b("tasks.schedule",u.na.zb),u.b("tasks.runEarly",u.na.Sd),u.Ta={throttle:function(V,E){V.throttleEvaluation=E;var I=null;return u.$({read:V,write:function(B){clearTimeout(I),I=u.a.setTimeout(function(){V(B)},E)}})},rateLimit:function(V,E){var I,B,X;typeof E=="number"?I=E:(I=E.timeout,B=E.method),V.Hb=!1,X=typeof B=="function"?B:B=="notifyWhenChangesStop"?m:d,V.ub(function(_){return X(_,I,E)})},deferred:function(V,E){if(E!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");V.Hb||(V.Hb=!0,V.ub(function(I){var B,X=!1;return function(){if(!X){u.na.cancel(B),B=u.na.zb(I);try{X=!0,V.notifySubscribers(t,"dirty")}finally{X=!1}}}}))},notify:function(V,E){V.equalityComparer=E=="always"?null:r}};var F={undefined:1,boolean:1,number:1,string:1};u.b("extenders",u.Ta),u.ic=function(V,E,I){this.da=V,this.lc=E,this.mc=I,this.Ib=!1,this.fb=this.Jb=null,u.L(this,"dispose",this.s),u.L(this,"disposeWhenNodeIsRemoved",this.l)},u.ic.prototype.s=function(){this.Ib||(this.fb&&u.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},u.ic.prototype.l=function(V){this.Jb=V,u.a.K.za(V,this.fb=this.s.bind(this))},u.T=function(){u.a.Ab(this,U),U.qb(this)};var U={qb:function(V){V.U={change:[]},V.sc=1},subscribe:function(V,E,I){var B=this;I=I||"change";var X=new u.ic(B,E?V.bind(E):V,function(){u.a.Pa(B.U[I],X),B.hb&&B.hb(I)});return B.Qa&&B.Qa(I),B.U[I]||(B.U[I]=[]),B.U[I].push(X),X},notifySubscribers:function(V,E){if(E=E||"change",E==="change"&&this.Gb(),this.Wa(E)){var I=E==="change"&&this.ed||this.U[E].slice(0);try{u.u.xc();for(var B=0,X;X=I[B];++B)X.Ib||X.lc(V)}finally{u.u.end()}}},ob:function(){return this.sc},Dd:function(V){return this.ob()!==V},Gb:function(){++this.sc},ub:function(V){var E=this,I=u.O(E),B,X,_,P,w;E.gb||(E.gb=E.notifySubscribers,E.notifySubscribers=h);var z=V(function(){E.Ja=!1,I&&P===E&&(P=E.nc?E.nc():E());var H=X||w&&E.sb(_,P);w=X=B=!1,H&&E.gb(_=P)});E.qc=function(H,nt){nt&&E.Ja||(w=!nt),E.ed=E.U.change.slice(0),E.Ja=B=!0,P=H,z()},E.pc=function(H){B||(_=H,E.gb(H,"beforeChange"))},E.rc=function(){w=!0},E.gd=function(){E.sb(_,E.v(!0))&&(X=!0)}},Wa:function(V){return this.U[V]&&this.U[V].length},Bd:function(V){if(V)return this.U[V]&&this.U[V].length||0;var E=0;return u.a.P(this.U,function(I,B){I!=="dirty"&&(E+=B.length)}),E},sb:function(V,E){return!this.equalityComparer||!this.equalityComparer(V,E)},toString:function(){return"[object Object]"},extend:function(V){var E=this;return V&&u.a.P(V,function(I,B){var X=u.Ta[I];typeof X=="function"&&(E=X(E,B)||E)}),E}};u.L(U,"init",U.qb),u.L(U,"subscribe",U.subscribe),u.L(U,"extend",U.extend),u.L(U,"getSubscriptionsCount",U.Bd),u.a.Ba&&u.a.setPrototypeOf(U,Function.prototype),u.T.fn=U,u.Qc=function(V){return V!=null&&typeof V.subscribe=="function"&&typeof V.notifySubscribers=="function"},u.b("subscribable",u.T),u.b("isSubscribable",u.Qc),u.S=u.u=function(){function V(_){I.push(B),B=_}function E(){B=I.pop()}var I=[],B,X=0;return{xc:V,end:E,cc:function(_){if(B){if(!u.Qc(_))throw Error("Only subscribable things can act as dependencies");B.od.call(B.pd,_,_.fd||(_.fd=++X))}},G:function(_,P,w){try{return V(),_.apply(P,w||[])}finally{E()}},qa:function(){if(B)return B.o.qa()},Va:function(){if(B)return B.o.Va()},Ya:function(){if(B)return B.Ya},o:function(){if(B)return B.o}}}(),u.b("computedContext",u.S),u.b("computedContext.getDependenciesCount",u.S.qa),u.b("computedContext.getDependencies",u.S.Va),u.b("computedContext.isInitial",u.S.Ya),u.b("computedContext.registerDependency",u.S.cc),u.b("ignoreDependencies",u.Yd=u.u.G);var G=u.a.Da("_latestValue");u.ta=function(V){function E(){return 0<arguments.length?(E.sb(E[G],arguments[0])&&(E.ya(),E[G]=arguments[0],E.xa()),this):(u.u.cc(E),E[G])}return E[G]=V,u.a.Ba||u.a.extend(E,u.T.fn),u.T.fn.qb(E),u.a.Ab(E,A),u.options.deferUpdates&&u.Ta.deferred(E,!0),E};var A={equalityComparer:r,v:function(){return this[G]},xa:function(){this.notifySubscribers(this[G],"spectate"),this.notifySubscribers(this[G])},ya:function(){this.notifySubscribers(this[G],"beforeChange")}};u.a.Ba&&u.a.setPrototypeOf(A,u.T.fn);var T=u.ta.Ma="__ko_proto__";A[T]=u.ta,u.O=function(V){if((V=typeof V=="function"&&V[T])&&V!==A[T]&&V!==u.o.fn[T])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!V},u.Za=function(V){return typeof V=="function"&&(V[T]===A[T]||V[T]===u.o.fn[T]&&V.Nc)},u.b("observable",u.ta),u.b("isObservable",u.O),u.b("isWriteableObservable",u.Za),u.b("isWritableObservable",u.Za),u.b("observable.fn",A),u.L(A,"peek",A.v),u.L(A,"valueHasMutated",A.xa),u.L(A,"valueWillMutate",A.ya),u.Ha=function(V){if(V=V||[],typeof V!="object"||!("length"in V))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return V=u.ta(V),u.a.Ab(V,u.Ha.fn),V.extend({trackArrayChanges:!0})},u.Ha.fn={remove:function(V){for(var E=this.v(),I=[],B=typeof V!="function"||u.O(V)?function(P){return P===V}:V,X=0;X<E.length;X++){var _=E[X];if(B(_)){if(I.length===0&&this.ya(),E[X]!==_)throw Error("Array modified during remove; cannot remove item");I.push(_),E.splice(X,1),X--}}return I.length&&this.xa(),I},removeAll:function(V){if(V===t){var E=this.v(),I=E.slice(0);return this.ya(),E.splice(0,E.length),this.xa(),I}return V?this.remove(function(B){return 0<=u.a.A(V,B)}):[]},destroy:function(V){var E=this.v(),I=typeof V!="function"||u.O(V)?function(_){return _===V}:V;this.ya();for(var B=E.length-1;0<=B;B--){var X=E[B];I(X)&&(X._destroy=!0)}this.xa()},destroyAll:function(V){return V===t?this.destroy(function(){return!0}):V?this.destroy(function(E){return 0<=u.a.A(V,E)}):[]},indexOf:function(V){var E=this();return u.a.A(E,V)},replace:function(V,E){var I=this.indexOf(V);0<=I&&(this.ya(),this.v()[I]=E,this.xa())},sorted:function(V){var E=this().slice(0);return V?E.sort(V):E.sort()},reversed:function(){return this().slice(0).reverse()}},u.a.Ba&&u.a.setPrototypeOf(u.Ha.fn,u.ta.fn),u.a.D("pop push reverse shift sort splice unshift".split(" "),function(V){u.Ha.fn[V]=function(){var E=this.v();this.ya(),this.zc(E,V,arguments);var I=E[V].apply(E,arguments);return this.xa(),I===E?this:I}}),u.a.D(["slice"],function(V){u.Ha.fn[V]=function(){var E=this();return E[V].apply(E,arguments)}}),u.Pc=function(V){return u.O(V)&&typeof V.remove=="function"&&typeof V.push=="function"},u.b("observableArray",u.Ha),u.b("isObservableArray",u.Pc),u.Ta.trackArrayChanges=function(V,E){function I(){function $(){if(w){var dt=[].concat(V.v()||[]),q;V.Wa("arrayChange")&&((!X||1<w)&&(X=u.a.Pb(z,dt,V.Ob)),q=X),z=dt,X=null,w=0,q&&q.length&&V.notifySubscribers(q,"arrayChange")}}B?$():(B=!0,P=V.subscribe(function(){++w},null,"spectate"),z=[].concat(V.v()||[]),X=null,_=V.subscribe($))}if(V.Ob={},E&&typeof E=="object"&&u.a.extend(V.Ob,E),V.Ob.sparse=!0,!V.zc){var B=!1,X=null,_,P,w=0,z,H=V.Qa,nt=V.hb;V.Qa=function($){H&&H.call(V,$),$==="arrayChange"&&I()},V.hb=function($){nt&&nt.call(V,$),$!=="arrayChange"||V.Wa("arrayChange")||(_&&_.s(),P&&P.s(),P=_=null,B=!1,z=t)},V.zc=function($,dt,q){function at(qt,ie,oe){return st[st.length]={status:qt,value:ie,index:oe}}if(B&&!w){var st=[],Et=$.length,Qt=q.length,Wt=0;switch(dt){case"push":Wt=Et;case"unshift":for(dt=0;dt<Qt;dt++)at("added",q[dt],Wt+dt);break;case"pop":Wt=Et-1;case"shift":Et&&at("deleted",$[Wt],Wt);break;case"splice":dt=Math.min(Math.max(0,0>q[0]?Et+q[0]:q[0]),Et);for(var Et=Qt===1?Et:Math.min(dt+(q[1]||0),Et),Qt=dt+Qt-2,Wt=Math.max(Et,Qt),Nt=[],kt=[],Mt=2;dt<Wt;++dt,++Mt)dt<Et&&kt.push(at("deleted",$[dt],dt)),dt<Qt&&Nt.push(at("added",q[Mt],dt));u.a.Kc(kt,Nt);break;default:return}X=st}}}};var g=u.a.Da("_state");u.o=u.$=function(V,E,I){function B(){if(0<arguments.length){if(typeof X=="function")X.apply(_.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return _.ra||u.u.cc(B),(_.ka||_.J&&B.Xa())&&B.ha(),_.X}if(typeof V=="object"?I=V:(I=I||{},V&&(I.read=V)),typeof I.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var X=I.write,_={X:t,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:I.read,nb:E||I.owner,l:I.disposeWhenNodeIsRemoved||I.l||null,Sa:I.disposeWhen||I.Sa,Rb:null,I:{},V:0,Ic:null};return B[g]=_,B.Nc=typeof X=="function",u.a.Ba||u.a.extend(B,u.T.fn),u.T.fn.qb(B),u.a.Ab(B,C),I.pure?(_.wb=!0,_.J=!0,u.a.extend(B,y)):I.deferEvaluation&&u.a.extend(B,Y),u.options.deferUpdates&&u.Ta.deferred(B,!0),_.l&&(_.jc=!0,_.l.nodeType||(_.l=null)),_.J||I.deferEvaluation||B.ha(),_.l&&B.ja()&&u.a.K.za(_.l,_.Rb=function(){B.s()}),B};var C={equalityComparer:r,qa:function(){return this[g].V},Va:function(){var V=[];return u.a.P(this[g].I,function(E,I){V[I.Ka]=I.da}),V},Vb:function(V){if(!this[g].V)return!1;var E=this.Va();return u.a.A(E,V)!==-1?!0:!!u.a.Lb(E,function(I){return I.Vb&&I.Vb(V)})},uc:function(V,E,I){if(this[g].wb&&E===this)throw Error("A 'pure' computed must not be called recursively");this[g].I[V]=I,I.Ka=this[g].V++,I.La=E.ob()},Xa:function(){var V,E,I=this[g].I;for(V in I)if(Object.prototype.hasOwnProperty.call(I,V)&&(E=I[V],this.Ia&&E.da.Ja||E.da.Dd(E.La)))return!0},Jd:function(){this.Ia&&!this[g].rb&&this.Ia(!1)},ja:function(){var V=this[g];return V.ka||0<V.V},Rd:function(){this.Ja?this[g].ka&&(this[g].sa=!0):this.Hc()},$c:function(V){if(V.Hb){var E=V.subscribe(this.Jd,this,"dirty"),I=V.subscribe(this.Rd,this);return{da:V,s:function(){E.s(),I.s()}}}return V.subscribe(this.Hc,this)},Hc:function(){var V=this,E=V.throttleEvaluation;E&&0<=E?(clearTimeout(this[g].Ic),this[g].Ic=u.a.setTimeout(function(){V.ha(!0)},E)):V.Ia?V.Ia(!0):V.ha(!0)},ha:function(V){var E=this[g],I=E.Sa,B=!1;if(!E.rb&&!E.ra){if(E.l&&!u.a.Sb(E.l)||I&&I()){if(!E.jc){this.s();return}}else E.jc=!1;E.rb=!0;try{B=this.zd(V)}finally{E.rb=!1}return B}},zd:function(V){var E=this[g],B=!1,I=E.wb?t:!E.V,B={qd:this,mb:E.I,Qb:E.V};u.u.xc({pd:B,od:b,o:this,Ya:I}),E.I={},E.V=0;var X=this.yd(E,B);return E.V?B=this.sb(E.X,X):(this.s(),B=!0),B&&(E.J?this.Gb():this.notifySubscribers(E.X,"beforeChange"),E.X=X,this.notifySubscribers(E.X,"spectate"),!E.J&&V&&this.notifySubscribers(E.X),this.rc&&this.rc()),I&&this.notifySubscribers(E.X,"awake"),B},yd:function(V,E){try{var I=V.Wc;return V.nb?I.call(V.nb):I()}finally{u.u.end(),E.Qb&&!V.J&&u.a.P(E.mb,Z),V.sa=V.ka=!1}},v:function(V){var E=this[g];return(E.ka&&(V||!E.V)||E.J&&this.Xa())&&this.ha(),E.X},ub:function(V){u.T.fn.ub.call(this,V),this.nc=function(){return this[g].J||(this[g].sa?this.ha():this[g].ka=!1),this[g].X},this.Ia=function(E){this.pc(this[g].X),this[g].ka=!0,E&&(this[g].sa=!0),this.qc(this,!E)}},s:function(){var V=this[g];!V.J&&V.I&&u.a.P(V.I,function(E,I){I.s&&I.s()}),V.l&&V.Rb&&u.a.K.yb(V.l,V.Rb),V.I=t,V.V=0,V.ra=!0,V.sa=!1,V.ka=!1,V.J=!1,V.l=t,V.Sa=t,V.Wc=t,this.Nc||(V.nb=t)}},y={Qa:function(V){var E=this,I=E[g];if(!I.ra&&I.J&&V=="change"){if(I.J=!1,I.sa||E.Xa())I.I=null,I.V=0,E.ha()&&E.Gb();else{var B=[];u.a.P(I.I,function(X,_){B[_.Ka]=X}),u.a.D(B,function(X,_){var P=I.I[X],w=E.$c(P.da);w.Ka=_,w.La=P.La,I.I[X]=w}),E.Xa()&&E.ha()&&E.Gb()}I.ra||E.notifySubscribers(I.X,"awake")}},hb:function(V){var E=this[g];E.ra||V!="change"||this.Wa("change")||(u.a.P(E.I,function(I,B){B.s&&(E.I[I]={da:B.da,Ka:B.Ka,La:B.La},B.s())}),E.J=!0,this.notifySubscribers(t,"asleep"))},ob:function(){var V=this[g];return V.J&&(V.sa||this.Xa())&&this.ha(),u.T.fn.ob.call(this)}},Y={Qa:function(V){V!="change"&&V!="beforeChange"||this.v()}};u.a.Ba&&u.a.setPrototypeOf(C,u.T.fn);var Q=u.ta.Ma;C[Q]=u.o,u.Oc=function(V){return typeof V=="function"&&V[Q]===C[Q]},u.Fd=function(V){return u.Oc(V)&&V[g]&&V[g].wb},u.b("computed",u.o),u.b("dependentObservable",u.o),u.b("isComputed",u.Oc),u.b("isPureComputed",u.Fd),u.b("computed.fn",C),u.L(C,"peek",C.v),u.L(C,"dispose",C.s),u.L(C,"isActive",C.ja),u.L(C,"getDependenciesCount",C.qa),u.L(C,"getDependencies",C.Va),u.xb=function(V,E){return typeof V=="function"?u.o(V,E,{pure:!0}):(V=u.a.extend({},V),V.pure=!0,u.o(V,E))},u.b("pureComputed",u.xb),function(){function V(B,X,_){if(_=_||new I,B=X(B),typeof B!="object"||B===null||B===t||B instanceof RegExp||B instanceof Date||B instanceof String||B instanceof Number||B instanceof Boolean)return B;var P=B instanceof Array?[]:{};return _.save(B,P),E(B,function(w){var z=X(B[w]);switch(typeof z){case"boolean":case"number":case"string":case"function":P[w]=z;break;case"object":case"undefined":var H=_.get(z);P[w]=H!==t?H:V(z,X,_)}}),P}function E(B,X){if(B instanceof Array){for(var _=0;_<B.length;_++)X(_);typeof B.toJSON=="function"&&X("toJSON")}else for(_ in B)X(_)}function I(){this.keys=[],this.values=[]}u.ad=function(B){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return V(B,function(X){for(var _=0;u.O(X)&&10>_;_++)X=X();return X})},u.toJSON=function(B,X,_){return B=u.ad(B),u.a.hc(B,X,_)},I.prototype={constructor:I,save:function(B,X){var _=u.a.A(this.keys,B);0<=_?this.values[_]=X:(this.keys.push(B),this.values.push(X))},get:function(B){return B=u.a.A(this.keys,B),0<=B?this.values[B]:t}}}(),u.b("toJS",u.ad),u.b("toJSON",u.toJSON),u.Wd=function(V,E,I){function B(X){var _=u.xb(V,I).extend({ma:"always"}),P=_.subscribe(function(w){w&&(P.s(),X(w))});return _.notifySubscribers(_.v()),P}return typeof Promise!="function"||E?B(E.bind(I)):new Promise(B)},u.b("when",u.Wd),function(){u.w={M:function(V){switch(u.a.R(V)){case"option":return V.__ko__hasDomDataOptionValue__===!0?u.a.g.get(V,u.c.options.$b):7>=u.a.W?V.getAttributeNode("value")&&V.getAttributeNode("value").specified?V.value:V.text:V.value;case"select":return 0<=V.selectedIndex?u.w.M(V.options[V.selectedIndex]):t;default:return V.value}},cb:function(V,E,I){switch(u.a.R(V)){case"option":typeof E=="string"?(u.a.g.set(V,u.c.options.$b,t),"__ko__hasDomDataOptionValue__"in V&&delete V.__ko__hasDomDataOptionValue__,V.value=E):(u.a.g.set(V,u.c.options.$b,E),V.__ko__hasDomDataOptionValue__=!0,V.value=typeof E=="number"?E:"");break;case"select":(E===""||E===null)&&(E=t);for(var B=-1,X=0,_=V.options.length,P;X<_;++X)if(P=u.w.M(V.options[X]),P==E||P===""&&E===t){B=X;break}(I||0<=B||E===t&&1<V.size)&&(V.selectedIndex=B,u.a.W===6&&u.a.setTimeout(function(){V.selectedIndex=B},0));break;default:(E===null||E===t)&&(E=""),V.value=E}}}}(),u.b("selectExtensions",u.w),u.b("selectExtensions.readValue",u.w.M),u.b("selectExtensions.writeValue",u.w.cb),u.m=function(){function V(w){w=u.a.Db(w),w.charCodeAt(0)===123&&(w=w.slice(1,-1)),w+=` + */(function(){(function(t){var e=this||(0,eval)("this"),n=e.document,i=e.navigator,o=e.jQuery,a=e.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(e.ko={})}(function(s,l){function r(Z,E){return Z===null||typeof Z in F?Z===E:!1}function d(Z,E){var I;return function(){I||(I=V.a.setTimeout(function(){I=t,Z()},E))}}function m(Z,E){var I;return function(){clearTimeout(I),I=V.a.setTimeout(Z,E)}}function h(Z,E){E&&E!=="change"?E==="beforeChange"?this.pc(Z):this.gb(Z,E):this.qc(Z)}function u(Z,E){E!==null&&E.s&&E.s()}function R(Z,E){var I=this.qd,B=I[g];B.ra||(this.Qb&&this.mb[E]?(I.uc(E,Z,this.mb[E]),this.mb[E]=null,--this.Qb):B.I[E]||I.uc(E,Z,B.J?{da:Z}:I.$c(Z)),Z.Ja&&Z.gd())}var V=typeof s<"u"?s:{};V.b=function(Z,E){for(var I=Z.split("."),B=V,X=0;X<I.length-1;X++)B=B[I[X]];B[I[I.length-1]]=E},V.L=function(Z,E,I){Z[E]=I},V.version="3.5.1",V.b("version",V.version),V.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},V.a=function(){function Z(q,at){for(var st in q)X.call(q,st)&&at(st,q[st])}function E(q,at){if(at)for(var st in at)X.call(at,st)&&(q[st]=at[st]);return q}function I(q,at){return q.__proto__=at,q}function B(q,at,st,Et){var Qt=q[at].match($)||[];V.a.D(st.match($),function(Wt){V.a.Na(Qt,Wt,Et)}),q[at]=Qt.join(" ")}var X=Object.prototype.hasOwnProperty,_={__proto__:[]}instanceof Array,P=typeof Symbol=="function",w={},z={};w[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],w.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),Z(w,function(q,at){if(at.length)for(var st=0,Et=at.length;st<Et;st++)z[at[st]]=q});var H={propertychange:!0},nt=n&&function(){for(var q=3,at=n.createElement("div"),st=at.getElementsByTagName("i");at.innerHTML="<!--[if gt IE "+ ++q+"]><i></i><![endif]-->",st[0];);return 4<q?q:t}(),$=/\S+/g,dt;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(q,at,st){for(var Et=0,Qt=q.length;Et<Qt;Et++)at.call(st,q[Et],Et,q)},A:typeof Array.prototype.indexOf=="function"?function(q,at){return Array.prototype.indexOf.call(q,at)}:function(q,at){for(var st=0,Et=q.length;st<Et;st++)if(q[st]===at)return st;return-1},Lb:function(q,at,st){for(var Et=0,Qt=q.length;Et<Qt;Et++)if(at.call(st,q[Et],Et,q))return q[Et];return t},Pa:function(q,at){var st=V.a.A(q,at);0<st?q.splice(st,1):st===0&&q.shift()},wc:function(q){var at=[];return q&&V.a.D(q,function(st){0>V.a.A(at,st)&&at.push(st)}),at},Mb:function(q,at,st){var Et=[];if(q)for(var Qt=0,Wt=q.length;Qt<Wt;Qt++)Et.push(at.call(st,q[Qt],Qt));return Et},jb:function(q,at,st){var Et=[];if(q)for(var Qt=0,Wt=q.length;Qt<Wt;Qt++)at.call(st,q[Qt],Qt)&&Et.push(q[Qt]);return Et},Nb:function(q,at){if(at instanceof Array)q.push.apply(q,at);else for(var st=0,Et=at.length;st<Et;st++)q.push(at[st]);return q},Na:function(q,at,st){var Et=V.a.A(V.a.bc(q),at);0>Et?st&&q.push(at):st||q.splice(Et,1)},Ba:_,extend:E,setPrototypeOf:I,Ab:_?I:E,P:Z,Ga:function(q,at,st){if(!q)return q;var Et={},Qt;for(Qt in q)X.call(q,Qt)&&(Et[Qt]=at.call(st,q[Qt],Qt,q));return Et},Tb:function(q){for(;q.firstChild;)V.removeNode(q.firstChild)},Yb:function(q){q=V.a.la(q);for(var at=(q[0]&&q[0].ownerDocument||n).createElement("div"),st=0,Et=q.length;st<Et;st++)at.appendChild(V.oa(q[st]));return at},Ca:function(q,at){for(var st=0,Et=q.length,Qt=[];st<Et;st++){var Wt=q[st].cloneNode(!0);Qt.push(at?V.oa(Wt):Wt)}return Qt},va:function(q,at){if(V.a.Tb(q),at)for(var st=0,Et=at.length;st<Et;st++)q.appendChild(at[st])},Xc:function(q,at){var st=q.nodeType?[q]:q;if(0<st.length){for(var Et=st[0],Qt=Et.parentNode,Wt=0,Nt=at.length;Wt<Nt;Wt++)Qt.insertBefore(at[Wt],Et);for(Wt=0,Nt=st.length;Wt<Nt;Wt++)V.removeNode(st[Wt])}},Ua:function(q,at){if(q.length){for(at=at.nodeType===8&&at.parentNode||at;q.length&&q[0].parentNode!==at;)q.splice(0,1);for(;1<q.length&&q[q.length-1].parentNode!==at;)q.length--;if(1<q.length){var st=q[0],Et=q[q.length-1];for(q.length=0;st!==Et;)q.push(st),st=st.nextSibling;q.push(Et)}}return q},Zc:function(q,at){7>nt?q.setAttribute("selected",at):q.selected=at},Db:function(q){return q===null||q===t?"":q.trim?q.trim():q.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(q,at){return q=q||"",at.length>q.length?!1:q.substring(0,at.length)===at},vd:function(q,at){if(q===at)return!0;if(q.nodeType===11)return!1;if(at.contains)return at.contains(q.nodeType!==1?q.parentNode:q);if(at.compareDocumentPosition)return(at.compareDocumentPosition(q)&16)==16;for(;q&&q!=at;)q=q.parentNode;return!!q},Sb:function(q){return V.a.vd(q,q.ownerDocument.documentElement)},kd:function(q){return!!V.a.Lb(q,V.a.Sb)},R:function(q){return q&&q.tagName&&q.tagName.toLowerCase()},Ac:function(q){return V.onError?function(){try{return q.apply(this,arguments)}catch(at){throw V.onError&&V.onError(at),at}}:q},setTimeout:function(q,at){return setTimeout(V.a.Ac(q),at)},Gc:function(q){setTimeout(function(){throw V.onError&&V.onError(q),q},0)},B:function(q,at,st){var Et=V.a.Ac(st);if(st=H[at],V.options.useOnlyNativeEvents||st||!o)if(st||typeof q.addEventListener!="function")if(typeof q.attachEvent<"u"){var Qt=function(Nt){Et.call(q,Nt)},Wt="on"+at;q.attachEvent(Wt,Qt),V.a.K.za(q,function(){q.detachEvent(Wt,Qt)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else q.addEventListener(at,Et,!1);else dt||(dt=typeof o(q).on=="function"?"on":"bind"),o(q)[dt](at,Et)},Fb:function(q,at){if(!q||!q.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var st;if(V.a.R(q)==="input"&&q.type&&at.toLowerCase()=="click"?(st=q.type,st=st=="checkbox"||st=="radio"):st=!1,V.options.useOnlyNativeEvents||!o||st)if(typeof n.createEvent=="function")if(typeof q.dispatchEvent=="function")st=n.createEvent(z[at]||"HTMLEvents"),st.initEvent(at,!0,!0,e,0,0,0,0,0,!1,!1,!1,!1,0,q),q.dispatchEvent(st);else throw Error("The supplied element doesn't support dispatchEvent");else if(st&&q.click)q.click();else if(typeof q.fireEvent<"u")q.fireEvent("on"+at);else throw Error("Browser doesn't support triggering events");else o(q).trigger(at)},f:function(q){return V.O(q)?q():q},bc:function(q){return V.O(q)?q.v():q},Eb:function(q,at,st){var Et;at&&(typeof q.classList=="object"?(Et=q.classList[st?"add":"remove"],V.a.D(at.match($),function(Qt){Et.call(q.classList,Qt)})):typeof q.className.baseVal=="string"?B(q.className,"baseVal",at,st):B(q,"className",at,st))},Bb:function(q,at){var st=V.a.f(at);(st===null||st===t)&&(st="");var Et=V.h.firstChild(q);!Et||Et.nodeType!=3||V.h.nextSibling(Et)?V.h.va(q,[q.ownerDocument.createTextNode(st)]):Et.data=st,V.a.Ad(q)},Yc:function(q,at){if(q.name=at,7>=nt)try{var st=q.name.replace(/[&<>'"]/g,function(Et){return"&#"+Et.charCodeAt(0)+";"});q.mergeAttributes(n.createElement("<input name='"+st+"'/>"),!1)}catch{}},Ad:function(q){9<=nt&&(q=q.nodeType==1?q:q.parentNode,q.style&&(q.style.zoom=q.style.zoom))},wd:function(q){if(nt){var at=q.style.width;q.style.width=0,q.style.width=at}},Pd:function(q,at){q=V.a.f(q),at=V.a.f(at);for(var st=[],Et=q;Et<=at;Et++)st.push(Et);return st},la:function(q){for(var at=[],st=0,Et=q.length;st<Et;st++)at.push(q[st]);return at},Da:function(q){return P?Symbol(q):q},Zd:nt===6,$d:nt===7,W:nt,Lc:function(q,at){for(var st=V.a.la(q.getElementsByTagName("input")).concat(V.a.la(q.getElementsByTagName("textarea"))),Et=typeof at=="string"?function(Nt){return Nt.name===at}:function(Nt){return at.test(Nt.name)},Qt=[],Wt=st.length-1;0<=Wt;Wt--)Et(st[Wt])&&Qt.push(st[Wt]);return Qt},Nd:function(q){return typeof q=="string"&&(q=V.a.Db(q))?a&&a.parse?a.parse(q):new Function("return "+q)():null},hc:function(q,at,st){if(!a||!a.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return a.stringify(V.a.f(q),at,st)},Od:function(q,at,st){st=st||{};var Et=st.params||{},Qt=st.includeFields||this.Jc,Wt=q;if(typeof q=="object"&&V.a.R(q)==="form")for(var Wt=q.action,Nt=Qt.length-1;0<=Nt;Nt--)for(var kt=V.a.Lc(q,Qt[Nt]),Mt=kt.length-1;0<=Mt;Mt--)Et[kt[Mt].name]=kt[Mt].value;at=V.a.f(at);var qt=n.createElement("form");qt.style.display="none",qt.action=Wt,qt.method="post";for(var ie in at)q=n.createElement("input"),q.type="hidden",q.name=ie,q.value=V.a.hc(V.a.f(at[ie])),qt.appendChild(q);Z(Et,function(oe,He){var rn=n.createElement("input");rn.type="hidden",rn.name=oe,rn.value=He,qt.appendChild(rn)}),n.body.appendChild(qt),st.submitter?st.submitter(qt):qt.submit(),setTimeout(function(){qt.parentNode.removeChild(qt)},0)}}}(),V.b("utils",V.a),V.b("utils.arrayForEach",V.a.D),V.b("utils.arrayFirst",V.a.Lb),V.b("utils.arrayFilter",V.a.jb),V.b("utils.arrayGetDistinctValues",V.a.wc),V.b("utils.arrayIndexOf",V.a.A),V.b("utils.arrayMap",V.a.Mb),V.b("utils.arrayPushAll",V.a.Nb),V.b("utils.arrayRemoveItem",V.a.Pa),V.b("utils.cloneNodes",V.a.Ca),V.b("utils.createSymbolOrString",V.a.Da),V.b("utils.extend",V.a.extend),V.b("utils.fieldsIncludedWithJsonPost",V.a.Jc),V.b("utils.getFormFields",V.a.Lc),V.b("utils.objectMap",V.a.Ga),V.b("utils.peekObservable",V.a.bc),V.b("utils.postJson",V.a.Od),V.b("utils.parseJson",V.a.Nd),V.b("utils.registerEventHandler",V.a.B),V.b("utils.stringifyJson",V.a.hc),V.b("utils.range",V.a.Pd),V.b("utils.toggleDomNodeCssClass",V.a.Eb),V.b("utils.triggerEvent",V.a.Fb),V.b("utils.unwrapObservable",V.a.f),V.b("utils.objectForEach",V.a.P),V.b("utils.addOrRemoveItem",V.a.Na),V.b("utils.setTextContent",V.a.Bb),V.b("unwrap",V.a.f),Function.prototype.bind||(Function.prototype.bind=function(Z){var E=this;if(arguments.length===1)return function(){return E.apply(Z,arguments)};var I=Array.prototype.slice.call(arguments,1);return function(){var B=I.slice(0);return B.push.apply(B,arguments),E.apply(Z,B)}}),V.a.g=new function(){var Z=0,E="__ko__"+new Date().getTime(),I={},B,X;return V.a.W?(B=function(_,P){var w=_[E];if(!w||w==="null"||!I[w]){if(!P)return t;w=_[E]="ko"+Z++,I[w]={}}return I[w]},X=function(_){var P=_[E];return P?(delete I[P],_[E]=null,!0):!1}):(B=function(_,P){var w=_[E];return!w&&P&&(w=_[E]={}),w},X=function(_){return _[E]?(delete _[E],!0):!1}),{get:function(_,P){var w=B(_,!1);return w&&w[P]},set:function(_,P,w){(_=B(_,w!==t))&&(_[P]=w)},Ub:function(_,P,w){return _=B(_,!0),_[P]||(_[P]=w)},clear:X,Z:function(){return Z+++E}}},V.b("utils.domData",V.a.g),V.b("utils.domData.clear",V.a.g.clear),V.a.K=new function(){function Z(P,w){var z=V.a.g.get(P,B);return z===t&&w&&(z=[],V.a.g.set(P,B,z)),z}function E(P){var w=Z(P,!1);if(w)for(var w=w.slice(0),z=0;z<w.length;z++)w[z](P);V.a.g.clear(P),V.a.K.cleanExternalData(P),_[P.nodeType]&&I(P.childNodes,!0)}function I(P,w){for(var z=[],H,nt=0;nt<P.length;nt++)if((!w||P[nt].nodeType===8)&&(E(z[z.length]=H=P[nt]),P[nt]!==H))for(;nt--&&V.a.A(z,P[nt])==-1;);}var B=V.a.g.Z(),X={1:!0,8:!0,9:!0},_={1:!0,9:!0};return{za:function(P,w){if(typeof w!="function")throw Error("Callback must be a function");Z(P,!0).push(w)},yb:function(P,w){var z=Z(P,!1);z&&(V.a.Pa(z,w),z.length==0&&V.a.g.set(P,B,t))},oa:function(P){return V.u.G(function(){X[P.nodeType]&&(E(P),_[P.nodeType]&&I(P.getElementsByTagName("*")))}),P},removeNode:function(P){V.oa(P),P.parentNode&&P.parentNode.removeChild(P)},cleanExternalData:function(P){o&&typeof o.cleanData=="function"&&o.cleanData([P])}}},V.oa=V.a.K.oa,V.removeNode=V.a.K.removeNode,V.b("cleanNode",V.oa),V.b("removeNode",V.removeNode),V.b("utils.domNodeDisposal",V.a.K),V.b("utils.domNodeDisposal.addDisposeCallback",V.a.K.za),V.b("utils.domNodeDisposal.removeDisposeCallback",V.a.K.yb),function(){var Z=[0,"",""],E=[1,"<table>","</table>"],I=[3,"<table><tbody><tr>","</tr></tbody></table>"],B=[1,"<select multiple='multiple'>","</select>"],X={thead:E,tbody:E,tfoot:E,tr:[2,"<table><tbody>","</tbody></table>"],td:I,th:I,option:B,optgroup:B},_=8>=V.a.W;V.a.ua=function(P,w){var z;if(o){if(o.parseHTML)z=o.parseHTML(P,w)||[];else if((z=o.clean([P],w))&&z[0]){for(var H=z[0];H.parentNode&&H.parentNode.nodeType!==11;)H=H.parentNode;H.parentNode&&H.parentNode.removeChild(H)}}else{(z=w)||(z=n);var H=z.parentWindow||z.defaultView||e,nt=V.a.Db(P).toLowerCase(),$=z.createElement("div"),dt;for(dt=(nt=nt.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&X[nt[1]]||Z,nt=dt[0],dt="ignored<div>"+dt[1]+P+dt[2]+"</div>",typeof H.innerShiv=="function"?$.appendChild(H.innerShiv(dt)):(_&&z.body.appendChild($),$.innerHTML=dt,_&&$.parentNode.removeChild($));nt--;)$=$.lastChild;z=V.a.la($.lastChild.childNodes)}return z},V.a.Md=function(P,w){var z=V.a.ua(P,w);return z.length&&z[0].parentElement||V.a.Yb(z)},V.a.fc=function(P,w){if(V.a.Tb(P),w=V.a.f(w),w!==null&&w!==t)if(typeof w!="string"&&(w=w.toString()),o)o(P).html(w);else for(var z=V.a.ua(w,P.ownerDocument),H=0;H<z.length;H++)P.appendChild(z[H])}}(),V.b("utils.parseHtmlFragment",V.a.ua),V.b("utils.setHtml",V.a.fc),V.aa=function(){function Z(I,B){if(I){if(I.nodeType==8){var X=V.aa.Uc(I.nodeValue);X!=null&&B.push({ud:I,Kd:X})}else if(I.nodeType==1)for(var X=0,_=I.childNodes,P=_.length;X<P;X++)Z(_[X],B)}}var E={};return{Xb:function(I){if(typeof I!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var B=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return E[B]=I,"<!--[ko_memo:"+B+"]-->"},bd:function(I,B){var X=E[I];if(X===t)throw Error("Couldn't find any memo with ID "+I+". Perhaps it's already been unmemoized.");try{return X.apply(null,B||[]),!0}finally{delete E[I]}},cd:function(I,B){var X=[];Z(I,X);for(var _=0,P=X.length;_<P;_++){var w=X[_].ud,z=[w];B&&V.a.Nb(z,B),V.aa.bd(X[_].Kd,z),w.nodeValue="",w.parentNode&&w.parentNode.removeChild(w)}},Uc:function(I){return(I=I.match(/^\[ko_memo\:(.*?)\]$/))?I[1]:null}}}(),V.b("memoization",V.aa),V.b("memoization.memoize",V.aa.Xb),V.b("memoization.unmemoize",V.aa.bd),V.b("memoization.parseMemoText",V.aa.Uc),V.b("memoization.unmemoizeDomNodeAndDescendants",V.aa.cd),V.na=function(){function Z(){if(X){for(var w=X,z=0,H;P<X;)if(H=B[P++]){if(P>w){if(5e3<=++z){P=X,V.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}w=X}try{H()}catch(nt){V.a.Gc(nt)}}}}function E(){Z(),P=X=B.length=0}var I,B=[],X=0,_=1,P=0;return e.MutationObserver?I=function(w){var z=n.createElement("div");return new MutationObserver(w).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(E):I=n&&"onreadystatechange"in n.createElement("script")?function(w){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,w()},n.documentElement.appendChild(z)}:function(w){setTimeout(w,0)},{scheduler:I,zb:function(w){return X||V.na.scheduler(E),B[X++]=w,_++},cancel:function(w){w=w-(_-X),w>=P&&w<X&&(B[w]=null)},resetForTesting:function(){var w=X-P;return P=X=B.length=0,w},Sd:Z}}(),V.b("tasks",V.na),V.b("tasks.schedule",V.na.zb),V.b("tasks.runEarly",V.na.Sd),V.Ta={throttle:function(Z,E){Z.throttleEvaluation=E;var I=null;return V.$({read:Z,write:function(B){clearTimeout(I),I=V.a.setTimeout(function(){Z(B)},E)}})},rateLimit:function(Z,E){var I,B,X;typeof E=="number"?I=E:(I=E.timeout,B=E.method),Z.Hb=!1,X=typeof B=="function"?B:B=="notifyWhenChangesStop"?m:d,Z.ub(function(_){return X(_,I,E)})},deferred:function(Z,E){if(E!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");Z.Hb||(Z.Hb=!0,Z.ub(function(I){var B,X=!1;return function(){if(!X){V.na.cancel(B),B=V.na.zb(I);try{X=!0,Z.notifySubscribers(t,"dirty")}finally{X=!1}}}}))},notify:function(Z,E){Z.equalityComparer=E=="always"?null:r}};var F={undefined:1,boolean:1,number:1,string:1};V.b("extenders",V.Ta),V.ic=function(Z,E,I){this.da=Z,this.lc=E,this.mc=I,this.Ib=!1,this.fb=this.Jb=null,V.L(this,"dispose",this.s),V.L(this,"disposeWhenNodeIsRemoved",this.l)},V.ic.prototype.s=function(){this.Ib||(this.fb&&V.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},V.ic.prototype.l=function(Z){this.Jb=Z,V.a.K.za(Z,this.fb=this.s.bind(this))},V.T=function(){V.a.Ab(this,U),U.qb(this)};var U={qb:function(Z){Z.U={change:[]},Z.sc=1},subscribe:function(Z,E,I){var B=this;I=I||"change";var X=new V.ic(B,E?Z.bind(E):Z,function(){V.a.Pa(B.U[I],X),B.hb&&B.hb(I)});return B.Qa&&B.Qa(I),B.U[I]||(B.U[I]=[]),B.U[I].push(X),X},notifySubscribers:function(Z,E){if(E=E||"change",E==="change"&&this.Gb(),this.Wa(E)){var I=E==="change"&&this.ed||this.U[E].slice(0);try{V.u.xc();for(var B=0,X;X=I[B];++B)X.Ib||X.lc(Z)}finally{V.u.end()}}},ob:function(){return this.sc},Dd:function(Z){return this.ob()!==Z},Gb:function(){++this.sc},ub:function(Z){var E=this,I=V.O(E),B,X,_,P,w;E.gb||(E.gb=E.notifySubscribers,E.notifySubscribers=h);var z=Z(function(){E.Ja=!1,I&&P===E&&(P=E.nc?E.nc():E());var H=X||w&&E.sb(_,P);w=X=B=!1,H&&E.gb(_=P)});E.qc=function(H,nt){nt&&E.Ja||(w=!nt),E.ed=E.U.change.slice(0),E.Ja=B=!0,P=H,z()},E.pc=function(H){B||(_=H,E.gb(H,"beforeChange"))},E.rc=function(){w=!0},E.gd=function(){E.sb(_,E.v(!0))&&(X=!0)}},Wa:function(Z){return this.U[Z]&&this.U[Z].length},Bd:function(Z){if(Z)return this.U[Z]&&this.U[Z].length||0;var E=0;return V.a.P(this.U,function(I,B){I!=="dirty"&&(E+=B.length)}),E},sb:function(Z,E){return!this.equalityComparer||!this.equalityComparer(Z,E)},toString:function(){return"[object Object]"},extend:function(Z){var E=this;return Z&&V.a.P(Z,function(I,B){var X=V.Ta[I];typeof X=="function"&&(E=X(E,B)||E)}),E}};V.L(U,"init",U.qb),V.L(U,"subscribe",U.subscribe),V.L(U,"extend",U.extend),V.L(U,"getSubscriptionsCount",U.Bd),V.a.Ba&&V.a.setPrototypeOf(U,Function.prototype),V.T.fn=U,V.Qc=function(Z){return Z!=null&&typeof Z.subscribe=="function"&&typeof Z.notifySubscribers=="function"},V.b("subscribable",V.T),V.b("isSubscribable",V.Qc),V.S=V.u=function(){function Z(_){I.push(B),B=_}function E(){B=I.pop()}var I=[],B,X=0;return{xc:Z,end:E,cc:function(_){if(B){if(!V.Qc(_))throw Error("Only subscribable things can act as dependencies");B.od.call(B.pd,_,_.fd||(_.fd=++X))}},G:function(_,P,w){try{return Z(),_.apply(P,w||[])}finally{E()}},qa:function(){if(B)return B.o.qa()},Va:function(){if(B)return B.o.Va()},Ya:function(){if(B)return B.Ya},o:function(){if(B)return B.o}}}(),V.b("computedContext",V.S),V.b("computedContext.getDependenciesCount",V.S.qa),V.b("computedContext.getDependencies",V.S.Va),V.b("computedContext.isInitial",V.S.Ya),V.b("computedContext.registerDependency",V.S.cc),V.b("ignoreDependencies",V.Yd=V.u.G);var G=V.a.Da("_latestValue");V.ta=function(Z){function E(){return 0<arguments.length?(E.sb(E[G],arguments[0])&&(E.ya(),E[G]=arguments[0],E.xa()),this):(V.u.cc(E),E[G])}return E[G]=Z,V.a.Ba||V.a.extend(E,V.T.fn),V.T.fn.qb(E),V.a.Ab(E,A),V.options.deferUpdates&&V.Ta.deferred(E,!0),E};var A={equalityComparer:r,v:function(){return this[G]},xa:function(){this.notifySubscribers(this[G],"spectate"),this.notifySubscribers(this[G])},ya:function(){this.notifySubscribers(this[G],"beforeChange")}};V.a.Ba&&V.a.setPrototypeOf(A,V.T.fn);var S=V.ta.Ma="__ko_proto__";A[S]=V.ta,V.O=function(Z){if((Z=typeof Z=="function"&&Z[S])&&Z!==A[S]&&Z!==V.o.fn[S])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!Z},V.Za=function(Z){return typeof Z=="function"&&(Z[S]===A[S]||Z[S]===V.o.fn[S]&&Z.Nc)},V.b("observable",V.ta),V.b("isObservable",V.O),V.b("isWriteableObservable",V.Za),V.b("isWritableObservable",V.Za),V.b("observable.fn",A),V.L(A,"peek",A.v),V.L(A,"valueHasMutated",A.xa),V.L(A,"valueWillMutate",A.ya),V.Ha=function(Z){if(Z=Z||[],typeof Z!="object"||!("length"in Z))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return Z=V.ta(Z),V.a.Ab(Z,V.Ha.fn),Z.extend({trackArrayChanges:!0})},V.Ha.fn={remove:function(Z){for(var E=this.v(),I=[],B=typeof Z!="function"||V.O(Z)?function(P){return P===Z}:Z,X=0;X<E.length;X++){var _=E[X];if(B(_)){if(I.length===0&&this.ya(),E[X]!==_)throw Error("Array modified during remove; cannot remove item");I.push(_),E.splice(X,1),X--}}return I.length&&this.xa(),I},removeAll:function(Z){if(Z===t){var E=this.v(),I=E.slice(0);return this.ya(),E.splice(0,E.length),this.xa(),I}return Z?this.remove(function(B){return 0<=V.a.A(Z,B)}):[]},destroy:function(Z){var E=this.v(),I=typeof Z!="function"||V.O(Z)?function(_){return _===Z}:Z;this.ya();for(var B=E.length-1;0<=B;B--){var X=E[B];I(X)&&(X._destroy=!0)}this.xa()},destroyAll:function(Z){return Z===t?this.destroy(function(){return!0}):Z?this.destroy(function(E){return 0<=V.a.A(Z,E)}):[]},indexOf:function(Z){var E=this();return V.a.A(E,Z)},replace:function(Z,E){var I=this.indexOf(Z);0<=I&&(this.ya(),this.v()[I]=E,this.xa())},sorted:function(Z){var E=this().slice(0);return Z?E.sort(Z):E.sort()},reversed:function(){return this().slice(0).reverse()}},V.a.Ba&&V.a.setPrototypeOf(V.Ha.fn,V.ta.fn),V.a.D("pop push reverse shift sort splice unshift".split(" "),function(Z){V.Ha.fn[Z]=function(){var E=this.v();this.ya(),this.zc(E,Z,arguments);var I=E[Z].apply(E,arguments);return this.xa(),I===E?this:I}}),V.a.D(["slice"],function(Z){V.Ha.fn[Z]=function(){var E=this();return E[Z].apply(E,arguments)}}),V.Pc=function(Z){return V.O(Z)&&typeof Z.remove=="function"&&typeof Z.push=="function"},V.b("observableArray",V.Ha),V.b("isObservableArray",V.Pc),V.Ta.trackArrayChanges=function(Z,E){function I(){function $(){if(w){var dt=[].concat(Z.v()||[]),q;Z.Wa("arrayChange")&&((!X||1<w)&&(X=V.a.Pb(z,dt,Z.Ob)),q=X),z=dt,X=null,w=0,q&&q.length&&Z.notifySubscribers(q,"arrayChange")}}B?$():(B=!0,P=Z.subscribe(function(){++w},null,"spectate"),z=[].concat(Z.v()||[]),X=null,_=Z.subscribe($))}if(Z.Ob={},E&&typeof E=="object"&&V.a.extend(Z.Ob,E),Z.Ob.sparse=!0,!Z.zc){var B=!1,X=null,_,P,w=0,z,H=Z.Qa,nt=Z.hb;Z.Qa=function($){H&&H.call(Z,$),$==="arrayChange"&&I()},Z.hb=function($){nt&&nt.call(Z,$),$!=="arrayChange"||Z.Wa("arrayChange")||(_&&_.s(),P&&P.s(),P=_=null,B=!1,z=t)},Z.zc=function($,dt,q){function at(qt,ie,oe){return st[st.length]={status:qt,value:ie,index:oe}}if(B&&!w){var st=[],Et=$.length,Qt=q.length,Wt=0;switch(dt){case"push":Wt=Et;case"unshift":for(dt=0;dt<Qt;dt++)at("added",q[dt],Wt+dt);break;case"pop":Wt=Et-1;case"shift":Et&&at("deleted",$[Wt],Wt);break;case"splice":dt=Math.min(Math.max(0,0>q[0]?Et+q[0]:q[0]),Et);for(var Et=Qt===1?Et:Math.min(dt+(q[1]||0),Et),Qt=dt+Qt-2,Wt=Math.max(Et,Qt),Nt=[],kt=[],Mt=2;dt<Wt;++dt,++Mt)dt<Et&&kt.push(at("deleted",$[dt],dt)),dt<Qt&&Nt.push(at("added",q[Mt],dt));V.a.Kc(kt,Nt);break;default:return}X=st}}}};var g=V.a.Da("_state");V.o=V.$=function(Z,E,I){function B(){if(0<arguments.length){if(typeof X=="function")X.apply(_.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return _.ra||V.u.cc(B),(_.ka||_.J&&B.Xa())&&B.ha(),_.X}if(typeof Z=="object"?I=Z:(I=I||{},Z&&(I.read=Z)),typeof I.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var X=I.write,_={X:t,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:I.read,nb:E||I.owner,l:I.disposeWhenNodeIsRemoved||I.l||null,Sa:I.disposeWhen||I.Sa,Rb:null,I:{},V:0,Ic:null};return B[g]=_,B.Nc=typeof X=="function",V.a.Ba||V.a.extend(B,V.T.fn),V.T.fn.qb(B),V.a.Ab(B,C),I.pure?(_.wb=!0,_.J=!0,V.a.extend(B,y)):I.deferEvaluation&&V.a.extend(B,Y),V.options.deferUpdates&&V.Ta.deferred(B,!0),_.l&&(_.jc=!0,_.l.nodeType||(_.l=null)),_.J||I.deferEvaluation||B.ha(),_.l&&B.ja()&&V.a.K.za(_.l,_.Rb=function(){B.s()}),B};var C={equalityComparer:r,qa:function(){return this[g].V},Va:function(){var Z=[];return V.a.P(this[g].I,function(E,I){Z[I.Ka]=I.da}),Z},Vb:function(Z){if(!this[g].V)return!1;var E=this.Va();return V.a.A(E,Z)!==-1?!0:!!V.a.Lb(E,function(I){return I.Vb&&I.Vb(Z)})},uc:function(Z,E,I){if(this[g].wb&&E===this)throw Error("A 'pure' computed must not be called recursively");this[g].I[Z]=I,I.Ka=this[g].V++,I.La=E.ob()},Xa:function(){var Z,E,I=this[g].I;for(Z in I)if(Object.prototype.hasOwnProperty.call(I,Z)&&(E=I[Z],this.Ia&&E.da.Ja||E.da.Dd(E.La)))return!0},Jd:function(){this.Ia&&!this[g].rb&&this.Ia(!1)},ja:function(){var Z=this[g];return Z.ka||0<Z.V},Rd:function(){this.Ja?this[g].ka&&(this[g].sa=!0):this.Hc()},$c:function(Z){if(Z.Hb){var E=Z.subscribe(this.Jd,this,"dirty"),I=Z.subscribe(this.Rd,this);return{da:Z,s:function(){E.s(),I.s()}}}return Z.subscribe(this.Hc,this)},Hc:function(){var Z=this,E=Z.throttleEvaluation;E&&0<=E?(clearTimeout(this[g].Ic),this[g].Ic=V.a.setTimeout(function(){Z.ha(!0)},E)):Z.Ia?Z.Ia(!0):Z.ha(!0)},ha:function(Z){var E=this[g],I=E.Sa,B=!1;if(!E.rb&&!E.ra){if(E.l&&!V.a.Sb(E.l)||I&&I()){if(!E.jc){this.s();return}}else E.jc=!1;E.rb=!0;try{B=this.zd(Z)}finally{E.rb=!1}return B}},zd:function(Z){var E=this[g],B=!1,I=E.wb?t:!E.V,B={qd:this,mb:E.I,Qb:E.V};V.u.xc({pd:B,od:R,o:this,Ya:I}),E.I={},E.V=0;var X=this.yd(E,B);return E.V?B=this.sb(E.X,X):(this.s(),B=!0),B&&(E.J?this.Gb():this.notifySubscribers(E.X,"beforeChange"),E.X=X,this.notifySubscribers(E.X,"spectate"),!E.J&&Z&&this.notifySubscribers(E.X),this.rc&&this.rc()),I&&this.notifySubscribers(E.X,"awake"),B},yd:function(Z,E){try{var I=Z.Wc;return Z.nb?I.call(Z.nb):I()}finally{V.u.end(),E.Qb&&!Z.J&&V.a.P(E.mb,u),Z.sa=Z.ka=!1}},v:function(Z){var E=this[g];return(E.ka&&(Z||!E.V)||E.J&&this.Xa())&&this.ha(),E.X},ub:function(Z){V.T.fn.ub.call(this,Z),this.nc=function(){return this[g].J||(this[g].sa?this.ha():this[g].ka=!1),this[g].X},this.Ia=function(E){this.pc(this[g].X),this[g].ka=!0,E&&(this[g].sa=!0),this.qc(this,!E)}},s:function(){var Z=this[g];!Z.J&&Z.I&&V.a.P(Z.I,function(E,I){I.s&&I.s()}),Z.l&&Z.Rb&&V.a.K.yb(Z.l,Z.Rb),Z.I=t,Z.V=0,Z.ra=!0,Z.sa=!1,Z.ka=!1,Z.J=!1,Z.l=t,Z.Sa=t,Z.Wc=t,this.Nc||(Z.nb=t)}},y={Qa:function(Z){var E=this,I=E[g];if(!I.ra&&I.J&&Z=="change"){if(I.J=!1,I.sa||E.Xa())I.I=null,I.V=0,E.ha()&&E.Gb();else{var B=[];V.a.P(I.I,function(X,_){B[_.Ka]=X}),V.a.D(B,function(X,_){var P=I.I[X],w=E.$c(P.da);w.Ka=_,w.La=P.La,I.I[X]=w}),E.Xa()&&E.ha()&&E.Gb()}I.ra||E.notifySubscribers(I.X,"awake")}},hb:function(Z){var E=this[g];E.ra||Z!="change"||this.Wa("change")||(V.a.P(E.I,function(I,B){B.s&&(E.I[I]={da:B.da,Ka:B.Ka,La:B.La},B.s())}),E.J=!0,this.notifySubscribers(t,"asleep"))},ob:function(){var Z=this[g];return Z.J&&(Z.sa||this.Xa())&&this.ha(),V.T.fn.ob.call(this)}},Y={Qa:function(Z){Z!="change"&&Z!="beforeChange"||this.v()}};V.a.Ba&&V.a.setPrototypeOf(C,V.T.fn);var Q=V.ta.Ma;C[Q]=V.o,V.Oc=function(Z){return typeof Z=="function"&&Z[Q]===C[Q]},V.Fd=function(Z){return V.Oc(Z)&&Z[g]&&Z[g].wb},V.b("computed",V.o),V.b("dependentObservable",V.o),V.b("isComputed",V.Oc),V.b("isPureComputed",V.Fd),V.b("computed.fn",C),V.L(C,"peek",C.v),V.L(C,"dispose",C.s),V.L(C,"isActive",C.ja),V.L(C,"getDependenciesCount",C.qa),V.L(C,"getDependencies",C.Va),V.xb=function(Z,E){return typeof Z=="function"?V.o(Z,E,{pure:!0}):(Z=V.a.extend({},Z),Z.pure=!0,V.o(Z,E))},V.b("pureComputed",V.xb),function(){function Z(B,X,_){if(_=_||new I,B=X(B),typeof B!="object"||B===null||B===t||B instanceof RegExp||B instanceof Date||B instanceof String||B instanceof Number||B instanceof Boolean)return B;var P=B instanceof Array?[]:{};return _.save(B,P),E(B,function(w){var z=X(B[w]);switch(typeof z){case"boolean":case"number":case"string":case"function":P[w]=z;break;case"object":case"undefined":var H=_.get(z);P[w]=H!==t?H:Z(z,X,_)}}),P}function E(B,X){if(B instanceof Array){for(var _=0;_<B.length;_++)X(_);typeof B.toJSON=="function"&&X("toJSON")}else for(_ in B)X(_)}function I(){this.keys=[],this.values=[]}V.ad=function(B){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return Z(B,function(X){for(var _=0;V.O(X)&&10>_;_++)X=X();return X})},V.toJSON=function(B,X,_){return B=V.ad(B),V.a.hc(B,X,_)},I.prototype={constructor:I,save:function(B,X){var _=V.a.A(this.keys,B);0<=_?this.values[_]=X:(this.keys.push(B),this.values.push(X))},get:function(B){return B=V.a.A(this.keys,B),0<=B?this.values[B]:t}}}(),V.b("toJS",V.ad),V.b("toJSON",V.toJSON),V.Wd=function(Z,E,I){function B(X){var _=V.xb(Z,I).extend({ma:"always"}),P=_.subscribe(function(w){w&&(P.s(),X(w))});return _.notifySubscribers(_.v()),P}return typeof Promise!="function"||E?B(E.bind(I)):new Promise(B)},V.b("when",V.Wd),function(){V.w={M:function(Z){switch(V.a.R(Z)){case"option":return Z.__ko__hasDomDataOptionValue__===!0?V.a.g.get(Z,V.c.options.$b):7>=V.a.W?Z.getAttributeNode("value")&&Z.getAttributeNode("value").specified?Z.value:Z.text:Z.value;case"select":return 0<=Z.selectedIndex?V.w.M(Z.options[Z.selectedIndex]):t;default:return Z.value}},cb:function(Z,E,I){switch(V.a.R(Z)){case"option":typeof E=="string"?(V.a.g.set(Z,V.c.options.$b,t),"__ko__hasDomDataOptionValue__"in Z&&delete Z.__ko__hasDomDataOptionValue__,Z.value=E):(V.a.g.set(Z,V.c.options.$b,E),Z.__ko__hasDomDataOptionValue__=!0,Z.value=typeof E=="number"?E:"");break;case"select":(E===""||E===null)&&(E=t);for(var B=-1,X=0,_=Z.options.length,P;X<_;++X)if(P=V.w.M(Z.options[X]),P==E||P===""&&E===t){B=X;break}(I||0<=B||E===t&&1<Z.size)&&(Z.selectedIndex=B,V.a.W===6&&V.a.setTimeout(function(){Z.selectedIndex=B},0));break;default:(E===null||E===t)&&(E=""),Z.value=E}}}}(),V.b("selectExtensions",V.w),V.b("selectExtensions.readValue",V.w.M),V.b("selectExtensions.writeValue",V.w.cb),V.m=function(){function Z(w){w=V.a.Db(w),w.charCodeAt(0)===123&&(w=w.slice(1,-1)),w+=` ,`;var z=[],H=w.match(B),nt,$=[],dt=0;if(1<H.length){for(var q=0,at;at=H[q];++q){var st=at.charCodeAt(0);if(st===44){if(0>=dt){z.push(nt&&$.length?{key:nt,value:$.join("")}:{unknown:nt||$.join("")}),nt=dt=0,$=[];continue}}else if(st===58){if(!dt&&!nt&&$.length===1){nt=$.pop();continue}}else{if(st===47&&1<at.length&&(at.charCodeAt(1)===47||at.charCodeAt(1)===42))continue;st===47&&q&&1<at.length?(st=H[q-1].match(X))&&!_[st[0]]&&(w=w.substr(w.indexOf(at)+1),H=w.match(B),q=-1,at="/"):st===40||st===123||st===91?++dt:st===41||st===125||st===93?--dt:nt||$.length||st!==34&&st!==39||(at=at.slice(1,-1))}$.push(at)}if(0<dt)throw Error("Unbalanced parentheses, braces, or brackets")}return z}var E=["true","false","null","undefined"],I=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,B=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* -|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),X=/[\])"'A-Za-z0-9_$]+$/,_={in:1,return:1,typeof:1},P={};return{Ra:[],wa:P,ac:V,vb:function(w,z){function H(st,Et){var Qt;if(!q){var Wt=u.getBindingHandler(st);if(Wt&&Wt.preprocess&&!(Et=Wt.preprocess(Et,st,H)))return;(Wt=P[st])&&(Qt=Et,0<=u.a.A(E,Qt)?Qt=!1:(Wt=Qt.match(I),Qt=Wt===null?!1:Wt[1]?"Object("+Wt[1]+")"+Wt[2]:Qt),Wt=Qt),Wt&&$.push("'"+(typeof P[st]=="string"?P[st]:st)+"':function(_z){"+Qt+"=_z}")}dt&&(Et="function(){return "+Et+" }"),nt.push("'"+st+"':"+Et)}z=z||{};var nt=[],$=[],dt=z.valueAccessors,q=z.bindingParams,at=typeof w=="string"?V(w):w;return u.a.D(at,function(st){H(st.key||st.unknown,st.value)}),$.length&&H("_ko_property_writers","{"+$.join(",")+" }"),nt.join(",")},Id:function(w,z){for(var H=0;H<w.length;H++)if(w[H].key==z)return!0;return!1},eb:function(w,z,H,nt,$){w&&u.O(w)?!u.Za(w)||$&&w.v()===nt||w(nt):(w=z.get("_ko_property_writers"))&&w[H]&&w[H](nt)}}}(),u.b("expressionRewriting",u.m),u.b("expressionRewriting.bindingRewriteValidators",u.m.Ra),u.b("expressionRewriting.parseObjectLiteral",u.m.ac),u.b("expressionRewriting.preProcessBindings",u.m.vb),u.b("expressionRewriting._twoWayBindings",u.m.wa),u.b("jsonExpressionRewriting",u.m),u.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",u.m.vb),function(){function V(H){return H.nodeType==8&&_.test(X?H.text:H.nodeValue)}function E(H){return H.nodeType==8&&P.test(X?H.text:H.nodeValue)}function I(H,nt){for(var $=H,dt=1,q=[];$=$.nextSibling;){if(E($)&&(u.a.g.set($,z,!0),dt--,dt===0))return q;q.push($),V($)&&dt++}if(!nt)throw Error("Cannot find closing comment tag to match: "+H.nodeValue);return null}function B(H,nt){var $=I(H,nt);return $?0<$.length?$[$.length-1].nextSibling:H.nextSibling:null}var X=n&&n.createComment("test").text==="<!--test-->",_=X?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,P=X?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,w={ul:!0,ol:!0},z="__ko_matchedEndComment__";u.h={ea:{},childNodes:function(H){return V(H)?I(H):H.childNodes},Ea:function(H){if(V(H)){H=u.h.childNodes(H);for(var nt=0,$=H.length;nt<$;nt++)u.removeNode(H[nt])}else u.a.Tb(H)},va:function(H,nt){if(V(H)){u.h.Ea(H);for(var $=H.nextSibling,dt=0,q=nt.length;dt<q;dt++)$.parentNode.insertBefore(nt[dt],$)}else u.a.va(H,nt)},Vc:function(H,nt){var $;V(H)?($=H.nextSibling,H=H.parentNode):$=H.firstChild,$?nt!==$&&H.insertBefore(nt,$):H.appendChild(nt)},Wb:function(H,nt,$){$?($=$.nextSibling,V(H)&&(H=H.parentNode),$?nt!==$&&H.insertBefore(nt,$):H.appendChild(nt)):u.h.Vc(H,nt)},firstChild:function(H){if(V(H))return!H.nextSibling||E(H.nextSibling)?null:H.nextSibling;if(H.firstChild&&E(H.firstChild))throw Error("Found invalid end comment, as the first child of "+H);return H.firstChild},nextSibling:function(H){if(V(H)&&(H=B(H)),H.nextSibling&&E(H.nextSibling)){var nt=H.nextSibling;if(E(nt)&&!u.a.g.get(nt,z))throw Error("Found end comment without a matching opening comment, as child of "+H);return null}return H.nextSibling},Cd:V,Vd:function(H){return(H=(X?H.text:H.nodeValue).match(_))?H[1]:null},Sc:function(H){if(w[u.a.R(H)]){var nt=H.firstChild;if(nt)do if(nt.nodeType===1){var $;$=nt.firstChild;var dt=null;if($)do if(dt)dt.push($);else if(V($)){var q=B($,!0);q?$=q:dt=[$]}else E($)&&(dt=[$]);while($=$.nextSibling);if($=dt)for(dt=nt.nextSibling,q=0;q<$.length;q++)dt?H.insertBefore($[q],dt):H.appendChild($[q])}while(nt=nt.nextSibling)}}}}(),u.b("virtualElements",u.h),u.b("virtualElements.allowedBindings",u.h.ea),u.b("virtualElements.emptyNode",u.h.Ea),u.b("virtualElements.insertAfter",u.h.Wb),u.b("virtualElements.prepend",u.h.Vc),u.b("virtualElements.setDomNodeChildren",u.h.va),function(){u.ga=function(){this.nd={}},u.a.extend(u.ga.prototype,{nodeHasBindings:function(V){switch(V.nodeType){case 1:return V.getAttribute("data-bind")!=null||u.j.getComponentNameForNode(V);case 8:return u.h.Cd(V);default:return!1}},getBindings:function(V,E){var I=this.getBindingsString(V,E),I=I?this.parseBindingsString(I,E,V):null;return u.j.tc(I,V,E,!1)},getBindingAccessors:function(V,E){var I=this.getBindingsString(V,E),I=I?this.parseBindingsString(I,E,V,{valueAccessors:!0}):null;return u.j.tc(I,V,E,!0)},getBindingsString:function(V){switch(V.nodeType){case 1:return V.getAttribute("data-bind");case 8:return u.h.Vd(V);default:return null}},parseBindingsString:function(V,E,I,B){try{var X=this.nd,_=V+(B&&B.valueAccessors||""),P;if(!(P=X[_])){var w,z="with($context){with($data||{}){return{"+u.m.vb(V,B)+"}}}";w=new Function("$context","$element",z),P=X[_]=w}return P(E,I)}catch(H){throw H.message=`Unable to parse bindings. -Bindings value: `+V+` -Message: `+H.message,H}}}),u.ga.instance=new u.ga}(),u.b("bindingProvider",u.ga),function(){function V(Wt){var Nt=(Wt=u.a.g.get(Wt,Qt))&&Wt.N;Nt&&(Wt.N=null,Nt.Tc())}function E(Wt,Nt,kt){this.node=Wt,this.yc=Nt,this.kb=[],this.H=!1,Nt.N||u.a.K.za(Wt,V),kt&&kt.N&&(kt.N.kb.push(Wt),this.Kb=kt)}function I(Wt){return function(){return Wt}}function B(Wt){return Wt()}function X(Wt){return u.a.Ga(u.u.G(Wt),function(Nt,kt){return function(){return Wt()[kt]}})}function _(Wt,Nt,kt){return typeof Wt=="function"?X(Wt.bind(null,Nt,kt)):u.a.Ga(Wt,I)}function P(Wt,Nt){return X(this.getBindings.bind(this,Wt,Nt))}function w(Wt,Nt){var kt=u.h.firstChild(Nt);if(kt){var Mt,qt=u.ga.instance,ie=qt.preprocessNode;if(ie){for(;Mt=kt;)kt=u.h.nextSibling(Mt),ie.call(qt,Mt);kt=u.h.firstChild(Nt)}for(;Mt=kt;)kt=u.h.nextSibling(Mt),z(Wt,Mt)}u.i.ma(Nt,u.i.H)}function z(Wt,Nt){var kt=Wt,Mt=Nt.nodeType===1;Mt&&u.h.Sc(Nt),(Mt||u.ga.instance.nodeHasBindings(Nt))&&(kt=nt(Nt,null,Wt).bindingContextForDescendants),kt&&!st[u.a.R(Nt)]&&w(kt,Nt)}function H(Wt){var Nt=[],kt={},Mt=[];return u.a.P(Wt,function qt(ie){if(!kt[ie]){var oe=u.getBindingHandler(ie);oe&&(oe.after&&(Mt.push(ie),u.a.D(oe.after,function(He){if(Wt[He]){if(u.a.A(Mt,He)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+Mt.join(", "));qt(He)}}),Mt.length--),Nt.push({key:ie,Mc:oe})),kt[ie]=!0}}),Nt}function nt(Wt,Nt,kt){var Mt=u.a.g.Ub(Wt,Qt,{}),qt=Mt.hd;if(!Nt){if(qt)throw Error("You cannot apply bindings multiple times to the same element.");Mt.hd=!0}qt||(Mt.context=kt),Mt.Zb||(Mt.Zb={});var ie;if(Nt&&typeof Nt!="function")ie=Nt;else{var oe=u.ga.instance,He=oe.getBindingAccessors||P,rn=u.$(function(){return(ie=Nt?Nt(kt,Wt):He.call(oe,Wt,kt))&&(kt[dt]&&kt[dt](),kt[at]&&kt[at]()),ie},null,{l:Wt});ie&&rn.ja()||(rn=null)}var de=kt,zt;if(ie){var ke=function(){return u.a.Ga(rn?rn():ie,B)},ue=rn?function(We){return function(){return B(rn()[We])}}:function(We){return ie[We]};ke.get=function(We){return ie[We]&&B(ue(We))},ke.has=function(We){return We in ie},u.i.H in ie&&u.i.subscribe(Wt,u.i.H,function(){var We=(0,ie[u.i.H])();if(We){var un=u.h.childNodes(Wt);un.length&&We(un,u.Ec(un[0]))}}),u.i.pa in ie&&(de=u.i.Cb(Wt,kt),u.i.subscribe(Wt,u.i.pa,function(){var We=(0,ie[u.i.pa])();We&&u.h.firstChild(Wt)&&We(Wt)})),Mt=H(ie),u.a.D(Mt,function(We){var un=We.Mc.init,Ct=We.Mc.update,_t=We.key;if(Wt.nodeType===8&&!u.h.ea[_t])throw Error("The binding '"+_t+"' cannot be used with virtual elements");try{typeof un=="function"&&u.u.G(function(){var Je=un(Wt,ue(_t),ke,de.$data,de);if(Je&&Je.controlsDescendantBindings){if(zt!==t)throw Error("Multiple bindings ("+zt+" and "+_t+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");zt=_t}}),typeof Ct=="function"&&u.$(function(){Ct(Wt,ue(_t),ke,de.$data,de)},null,{l:Wt})}catch(Je){throw Je.message='Unable to process binding "'+_t+": "+ie[_t]+`" -Message: `+Je.message,Je}})}return Mt=zt===t,{shouldBindDescendants:Mt,bindingContextForDescendants:Mt&&de}}function $(Wt,Nt){return Wt&&Wt instanceof u.fa?Wt:new u.fa(Wt,t,t,Nt)}var dt=u.a.Da("_subscribable"),q=u.a.Da("_ancestorBindingInfo"),at=u.a.Da("_dataDependency");u.c={};var st={script:!0,textarea:!0,template:!0};u.getBindingHandler=function(Wt){return u.c[Wt]};var Et={};u.fa=function(Wt,Nt,kt,Mt,qt){function ie(){var ue=de?rn():rn,We=u.a.f(ue);return Nt?(u.a.extend(oe,Nt),q in Nt&&(oe[q]=Nt[q])):(oe.$parents=[],oe.$root=We,oe.ko=u),oe[dt]=zt,He?We=oe.$data:(oe.$rawData=ue,oe.$data=We),kt&&(oe[kt]=We),Mt&&Mt(oe,Nt,We),Nt&&Nt[dt]&&!u.S.o().Vb(Nt[dt])&&Nt[dt](),ke&&(oe[at]=ke),oe.$data}var oe=this,He=Wt===Et,rn=He?t:Wt,de=typeof rn=="function"&&!u.O(rn),zt,ke=qt&&qt.dataDependency;qt&&qt.exportDependencies?ie():(zt=u.xb(ie),zt.v(),zt.ja()?zt.equalityComparer=null:oe[dt]=t)},u.fa.prototype.createChildContext=function(Wt,Nt,kt,Mt){if(!Mt&&Nt&&typeof Nt=="object"&&(Mt=Nt,Nt=Mt.as,kt=Mt.extend),Nt&&Mt&&Mt.noChildContext){var qt=typeof Wt=="function"&&!u.O(Wt);return new u.fa(Et,this,null,function(ie){kt&&kt(ie),ie[Nt]=qt?Wt():Wt},Mt)}return new u.fa(Wt,this,Nt,function(ie,oe){ie.$parentContext=oe,ie.$parent=oe.$data,ie.$parents=(oe.$parents||[]).slice(0),ie.$parents.unshift(ie.$parent),kt&&kt(ie)},Mt)},u.fa.prototype.extend=function(Wt,Nt){return new u.fa(Et,this,null,function(kt){u.a.extend(kt,typeof Wt=="function"?Wt(kt):Wt)},Nt)};var Qt=u.a.g.Z();E.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},E.prototype.sd=function(Wt){u.a.Pa(this.kb,Wt),!this.kb.length&&this.H&&this.Cc()},E.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,u.a.K.yb(this.node,V),u.i.ma(this.node,u.i.pa),this.Tc())},u.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(Wt,Nt,kt,Mt,qt){var ie=u.a.g.Ub(Wt,Qt,{});return ie.Fa||(ie.Fa=new u.T),qt&&qt.notifyImmediately&&ie.Zb[Nt]&&u.u.G(kt,Mt,[Wt]),ie.Fa.subscribe(kt,Mt,Nt)},ma:function(Wt,Nt){var kt=u.a.g.get(Wt,Qt);if(kt&&(kt.Zb[Nt]=!0,kt.Fa&&kt.Fa.notifySubscribers(Wt,Nt),Nt==u.i.H)){if(kt.N)kt.N.Cc();else if(kt.N===t&&kt.Fa&&kt.Fa.Wa(u.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(Wt,Nt){var kt=u.a.g.Ub(Wt,Qt,{});return kt.N||(kt.N=new E(Wt,kt,Nt[q])),Nt[q]==kt?Nt:Nt.extend(function(Mt){Mt[q]=kt})}},u.Td=function(Wt){return(Wt=u.a.g.get(Wt,Qt))&&Wt.context},u.ib=function(Wt,Nt,kt){return Wt.nodeType===1&&u.h.Sc(Wt),nt(Wt,Nt,$(kt))},u.ld=function(Wt,Nt,kt){return kt=$(kt),u.ib(Wt,_(Nt,kt,Wt),kt)},u.Oa=function(Wt,Nt){Nt.nodeType!==1&&Nt.nodeType!==8||w($(Wt),Nt)},u.vc=function(Wt,Nt,kt){if(!o&&e.jQuery&&(o=e.jQuery),2>arguments.length){if(Nt=n.body,!Nt)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!Nt||Nt.nodeType!==1&&Nt.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z($(Wt,kt),Nt)},u.Dc=function(Wt){return!Wt||Wt.nodeType!==1&&Wt.nodeType!==8?t:u.Td(Wt)},u.Ec=function(Wt){return(Wt=u.Dc(Wt))?Wt.$data:t},u.b("bindingHandlers",u.c),u.b("bindingEvent",u.i),u.b("bindingEvent.subscribe",u.i.subscribe),u.b("bindingEvent.startPossiblyAsyncContentBinding",u.i.Cb),u.b("applyBindings",u.vc),u.b("applyBindingsToDescendants",u.Oa),u.b("applyBindingAccessorsToNode",u.ib),u.b("applyBindingsToNode",u.ld),u.b("contextFor",u.Dc),u.b("dataFor",u.Ec)}(),function(V){function E(P,w){var z=Object.prototype.hasOwnProperty.call(X,P)?X[P]:V,H;z?z.subscribe(w):(z=X[P]=new u.T,z.subscribe(w),I(P,function(nt,$){var dt=!(!$||!$.synchronous);_[P]={definition:nt,Gd:dt},delete X[P],H||dt?z.notifySubscribers(nt):u.na.zb(function(){z.notifySubscribers(nt)})}),H=!0)}function I(P,w){B("getConfig",[P],function(z){z?B("loadComponent",[P,z],function(H){w(H,z)}):w(null,null)})}function B(P,w,z,H){H||(H=u.j.loaders.slice(0));var nt=H.shift();if(nt){var $=nt[P];if($){var dt=!1;if($.apply(nt,w.concat(function(q){dt?z(null):q!==null?z(q):B(P,w,z,H)}))!==V&&(dt=!0,!nt.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else B(P,w,z,H)}else z(null)}var X={},_={};u.j={get:function(P,w){var z=Object.prototype.hasOwnProperty.call(_,P)?_[P]:V;z?z.Gd?u.u.G(function(){w(z.definition)}):u.na.zb(function(){w(z.definition)}):E(P,w)},Bc:function(P){delete _[P]},oc:B},u.j.loaders=[],u.b("components",u.j),u.b("components.get",u.j.get),u.b("components.clearCachedDefinition",u.j.Bc)}(),function(){function V(z,H,nt,$){function dt(){--at===0&&$(q)}var q={},at=2,st=nt.template;nt=nt.viewModel,st?X(H,st,function(Et){u.j.oc("loadTemplate",[z,Et],function(Qt){q.template=Qt,dt()})}):dt(),nt?X(H,nt,function(Et){u.j.oc("loadViewModel",[z,Et],function(Qt){q[w]=Qt,dt()})}):dt()}function E(z,H,nt){if(typeof H=="function")nt(function(dt){return new H(dt)});else if(typeof H[w]=="function")nt(H[w]);else if("instance"in H){var $=H.instance;nt(function(){return $})}else"viewModel"in H?E(z,H.viewModel,nt):z("Unknown viewModel value: "+H)}function I(z){switch(u.a.R(z)){case"script":return u.a.ua(z.text);case"textarea":return u.a.ua(z.value);case"template":if(B(z.content))return u.a.Ca(z.content.childNodes)}return u.a.Ca(z.childNodes)}function B(z){return e.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function X(z,H,nt){typeof H.require=="string"?l||e.require?(l||e.require)([H.require],function($){$&&typeof $=="object"&&$.Xd&&$.default&&($=$.default),nt($)}):z("Uses require, but no AMD loader is present"):nt(H)}function _(z){return function(H){throw Error("Component '"+z+"': "+H)}}var P={};u.j.register=function(z,H){if(!H)throw Error("Invalid configuration for "+z);if(u.j.tb(z))throw Error("Component "+z+" is already registered");P[z]=H},u.j.tb=function(z){return Object.prototype.hasOwnProperty.call(P,z)},u.j.unregister=function(z){delete P[z],u.j.Bc(z)},u.j.Fc={getConfig:function(z,H){H(u.j.tb(z)?P[z]:null)},loadComponent:function(z,H,nt){var $=_(z);X($,H,function(dt){V(z,$,dt,nt)})},loadTemplate:function(z,H,nt){if(z=_(z),typeof H=="string")nt(u.a.ua(H));else if(H instanceof Array)nt(H);else if(B(H))nt(u.a.la(H.childNodes));else if(H.element)if(H=H.element,e.HTMLElement?H instanceof HTMLElement:H&&H.tagName&&H.nodeType===1)nt(I(H));else if(typeof H=="string"){var $=n.getElementById(H);$?nt(I($)):z("Cannot find element with ID "+H)}else z("Unknown element type: "+H);else z("Unknown template value: "+H)},loadViewModel:function(z,H,nt){E(_(z),H,nt)}};var w="createViewModel";u.b("components.register",u.j.register),u.b("components.isRegistered",u.j.tb),u.b("components.unregister",u.j.unregister),u.b("components.defaultLoader",u.j.Fc),u.j.loaders.push(u.j.Fc),u.j.dd=P}(),function(){function V(I,B){var X=I.getAttribute("params");if(X){var X=E.parseBindingsString(X,B,I,{valueAccessors:!0,bindingParams:!0}),X=u.a.Ga(X,function(w){return u.o(w,null,{l:I})}),_=u.a.Ga(X,function(w){var z=w.v();return w.ja()?u.o({read:function(){return u.a.f(w())},write:u.Za(z)&&function(H){w()(H)},l:I}):z});return Object.prototype.hasOwnProperty.call(_,"$raw")||(_.$raw=X),_}return{$raw:{}}}u.j.getComponentNameForNode=function(I){var B=u.a.R(I);if(u.j.tb(B)&&(B.indexOf("-")!=-1||""+I=="[object HTMLUnknownElement]"||8>=u.a.W&&I.tagName===B))return B},u.j.tc=function(I,B,X,_){if(B.nodeType===1){var P=u.j.getComponentNameForNode(B);if(P){if(I=I||{},I.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var w={name:P,params:V(B,X)};I.component=_?function(){return w}:w}}return I};var E=new u.ga;9>u.a.W&&(u.j.register=function(I){return function(B){return I.apply(this,arguments)}}(u.j.register),n.createDocumentFragment=function(I){return function(){var B=I(),X=u.j.dd,_;for(_ in X);return B}}(n.createDocumentFragment))}(),function(){function V(B,X,_){if(X=X.template,!X)throw Error("Component '"+B+"' has no template");B=u.a.Ca(X),u.h.va(_,B)}function E(B,X,_){var P=B.createViewModel;return P?P.call(B,X,_):X}var I=0;u.c.component={init:function(B,X,_,P,w){function z(){var q=H&&H.dispose;typeof q=="function"&&q.call(H),$&&$.s(),nt=H=$=null}var H,nt,$,dt=u.a.la(u.h.childNodes(B));return u.h.Ea(B),u.a.K.za(B,z),u.o(function(){var q=u.a.f(X()),at,st;if(typeof q=="string"?at=q:(at=u.a.f(q.name),st=u.a.f(q.params)),!at)throw Error("No component name specified");var Et=u.i.Cb(B,w),Qt=nt=++I;u.j.get(at,function(Wt){if(nt===Qt){if(z(),!Wt)throw Error("Unknown component '"+at+"'");V(at,Wt,B);var Nt=E(Wt,st,{element:B,templateNodes:dt});Wt=Et.createChildContext(Nt,{extend:function(kt){kt.$component=Nt,kt.$componentTemplateNodes=dt}}),Nt&&Nt.koDescendantsComplete&&($=u.i.subscribe(B,u.i.pa,Nt.koDescendantsComplete,Nt)),H=Nt,u.Oa(Wt,B)}})},null,{l:B}),{controlsDescendantBindings:!0}}},u.h.ea.component=!0}();var J={class:"className",for:"htmlFor"};u.c.attr={update:function(V,E){var I=u.a.f(E())||{};u.a.P(I,function(B,X){X=u.a.f(X);var _=B.indexOf(":"),_="lookupNamespaceURI"in V&&0<_&&V.lookupNamespaceURI(B.substr(0,_)),P=X===!1||X===null||X===t;P?_?V.removeAttributeNS(_,B):V.removeAttribute(B):X=X.toString(),8>=u.a.W&&B in J?(B=J[B],P?V.removeAttribute(B):V[B]=X):P||(_?V.setAttributeNS(_,B,X):V.setAttribute(B,X)),B==="name"&&u.a.Yc(V,P?"":X)})}},function(){u.c.checked={after:["value","attr"],init:function(V,E,I){function B(){var q=V.checked,at=_();if(!u.S.Ya()&&(q||!w&&!u.S.qa())){var st=u.u.G(E);if(H){var Et=nt?st.v():st,Qt=dt;dt=at,Qt!==at?q&&(u.a.Na(Et,at,!0),u.a.Na(Et,Qt,!1)):u.a.Na(Et,at,q),nt&&u.Za(st)&&st(Et)}else P&&(at===t?at=q:q||(at=t)),u.m.eb(st,I,"checked",at,!0)}}function X(){var q=u.a.f(E()),at=_();H?(V.checked=0<=u.a.A(q,at),dt=at):V.checked=P&&at===t?!!q:_()===q}var _=u.xb(function(){if(I.has("checkedValue"))return u.a.f(I.get("checkedValue"));if($)return I.has("value")?u.a.f(I.get("value")):V.value}),P=V.type=="checkbox",w=V.type=="radio";if(P||w){var z=E(),H=P&&u.a.f(z)instanceof Array,nt=!(H&&z.push&&z.splice),$=w||H,dt=H?_():t;w&&!V.name&&u.c.uniqueName.init(V,function(){return!0}),u.o(B,null,{l:V}),u.a.B(V,"click",B),u.o(X,null,{l:V}),z=t}}},u.m.wa.checked=!0,u.c.checkedValue={update:function(V,E){V.value=u.a.f(E())}}}(),u.c.class={update:function(V,E){var I=u.a.Db(u.a.f(E()));u.a.Eb(V,V.__ko__cssValue,!1),V.__ko__cssValue=I,u.a.Eb(V,I,!0)}},u.c.css={update:function(V,E){var I=u.a.f(E());I!==null&&typeof I=="object"?u.a.P(I,function(B,X){X=u.a.f(X),u.a.Eb(V,B,X)}):u.c.class.update(V,E)}},u.c.enable={update:function(V,E){var I=u.a.f(E());I&&V.disabled?V.removeAttribute("disabled"):I||V.disabled||(V.disabled=!0)}},u.c.disable={update:function(V,E){u.c.enable.update(V,function(){return!u.a.f(E())})}},u.c.event={init:function(V,E,I,B,X){var _=E()||{};u.a.P(_,function(P){typeof P=="string"&&u.a.B(V,P,function(w){var z,H=E()[P];if(H){try{var nt=u.a.la(arguments);B=X.$data,nt.unshift(B),z=H.apply(B,nt)}finally{z!==!0&&(w.preventDefault?w.preventDefault():w.returnValue=!1)}I.get(P+"Bubble")===!1&&(w.cancelBubble=!0,w.stopPropagation&&w.stopPropagation())}})})}},u.c.foreach={Rc:function(V){return function(){var E=V(),I=u.a.bc(E);return!I||typeof I.length=="number"?{foreach:E,templateEngine:u.ba.Ma}:(u.a.f(E),{foreach:I.data,as:I.as,noChildContext:I.noChildContext,includeDestroyed:I.includeDestroyed,afterAdd:I.afterAdd,beforeRemove:I.beforeRemove,afterRender:I.afterRender,beforeMove:I.beforeMove,afterMove:I.afterMove,templateEngine:u.ba.Ma})}},init:function(V,E){return u.c.template.init(V,u.c.foreach.Rc(E))},update:function(V,E,I,B,X){return u.c.template.update(V,u.c.foreach.Rc(E),I,B,X)}},u.m.Ra.foreach=!1,u.h.ea.foreach=!0,u.c.hasfocus={init:function(V,E,I){function B(P){V.__ko_hasfocusUpdating=!0;var w=V.ownerDocument;if("activeElement"in w){var z;try{z=w.activeElement}catch{z=w.body}P=z===V}w=E(),u.m.eb(w,I,"hasfocus",P,!0),V.__ko_hasfocusLastValue=P,V.__ko_hasfocusUpdating=!1}var X=B.bind(null,!0),_=B.bind(null,!1);u.a.B(V,"focus",X),u.a.B(V,"focusin",X),u.a.B(V,"blur",_),u.a.B(V,"focusout",_),V.__ko_hasfocusLastValue=!1},update:function(V,E){var I=!!u.a.f(E());V.__ko_hasfocusUpdating||V.__ko_hasfocusLastValue===I||(I?V.focus():V.blur(),!I&&V.__ko_hasfocusLastValue&&V.ownerDocument.body.focus(),u.u.G(u.a.Fb,null,[V,I?"focusin":"focusout"]))}},u.m.wa.hasfocus=!0,u.c.hasFocus=u.c.hasfocus,u.m.wa.hasFocus="hasfocus",u.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(V,E){u.a.fc(V,E())}},function(){function V(E,I,B){u.c[E]={init:function(X,_,P,w,z){var H,nt,$={},dt,q,at;if(I){w=P.get("as");var st=P.get("noChildContext");at=!(w&&st),$={as:w,noChildContext:st,exportDependencies:at}}return q=(dt=P.get("completeOn")=="render")||P.has(u.i.pa),u.o(function(){var Et=u.a.f(_()),Qt=!B!=!Et,Wt=!nt,Nt;(at||Qt!==H)&&(q&&(z=u.i.Cb(X,z)),Qt&&((!I||at)&&($.dataDependency=u.S.o()),Nt=I?z.createChildContext(typeof Et=="function"?Et:_,$):u.S.qa()?z.extend(null,$):z),Wt&&u.S.qa()&&(nt=u.a.Ca(u.h.childNodes(X),!0)),Qt?(Wt||u.h.va(X,u.a.Ca(nt)),u.Oa(Nt,X)):(u.h.Ea(X),dt||u.i.ma(X,u.i.H)),H=Qt)},null,{l:X}),{controlsDescendantBindings:!0}}},u.m.Ra[E]=!1,u.h.ea[E]=!0}V("if"),V("ifnot",!1,!0),V("with",!0)}(),u.c.let={init:function(V,E,I,B,X){return E=X.extend(E),u.Oa(E,V),{controlsDescendantBindings:!0}}},u.h.ea.let=!0;var M={};u.c.options={init:function(V){if(u.a.R(V)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<V.length;)V.remove(0);return{controlsDescendantBindings:!0}},update:function(V,E,I){function B(){return u.a.jb(V.options,function(st){return st.selected})}function X(st,Et,Qt){var Wt=typeof Et;return Wt=="function"?Et(st):Wt=="string"?st[Et]:Qt}function _(st,Et){if(q&&H)u.i.ma(V,u.i.H);else if(dt.length){var Qt=0<=u.a.A(dt,u.w.M(Et[0]));u.a.Zc(Et[0],Qt),q&&!Qt&&u.u.G(u.a.Fb,null,[V,"change"])}}var P=V.multiple,w=V.length!=0&&P?V.scrollTop:null,z=u.a.f(E()),H=I.get("valueAllowUnset")&&I.has("value"),nt=I.get("optionsIncludeDestroyed");E={};var $,dt=[];H||(P?dt=u.a.Mb(B(),u.w.M):0<=V.selectedIndex&&dt.push(u.w.M(V.options[V.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),$=u.a.jb(z,function(st){return nt||st===t||st===null||!u.a.f(st._destroy)}),I.has("optionsCaption")&&(z=u.a.f(I.get("optionsCaption")),z!==null&&z!==t&&$.unshift(M)));var q=!1;if(E.beforeRemove=function(st){V.removeChild(st)},z=_,I.has("optionsAfterRender")&&typeof I.get("optionsAfterRender")=="function"&&(z=function(st,Et){_(0,Et),u.u.G(I.get("optionsAfterRender"),null,[Et[0],st!==M?st:t])}),u.a.ec(V,$,function(st,Et,Qt){return Qt.length&&(dt=!H&&Qt[0].selected?[u.w.M(Qt[0])]:[],q=!0),Et=V.ownerDocument.createElement("option"),st===M?(u.a.Bb(Et,I.get("optionsCaption")),u.w.cb(Et,t)):(Qt=X(st,I.get("optionsValue"),st),u.w.cb(Et,u.a.f(Qt)),st=X(st,I.get("optionsText"),Qt),u.a.Bb(Et,st)),[Et]},E,z),!H){var at;P?at=dt.length&&B().length<dt.length:at=dt.length&&0<=V.selectedIndex?u.w.M(V.options[V.selectedIndex])!==dt[0]:dt.length||0<=V.selectedIndex,at&&u.u.G(u.a.Fb,null,[V,"change"])}(H||u.S.Ya())&&u.i.ma(V,u.i.H),u.a.wd(V),w&&20<Math.abs(w-V.scrollTop)&&(V.scrollTop=w)}},u.c.options.$b=u.a.g.Z(),u.c.selectedOptions={init:function(V,E,I){function B(){var P=E(),w=[];u.a.D(V.getElementsByTagName("option"),function(z){z.selected&&w.push(u.w.M(z))}),u.m.eb(P,I,"selectedOptions",w)}function X(){var P=u.a.f(E()),w=V.scrollTop;P&&typeof P.length=="number"&&u.a.D(V.getElementsByTagName("option"),function(z){var H=0<=u.a.A(P,u.w.M(z));z.selected!=H&&u.a.Zc(z,H)}),V.scrollTop=w}if(u.a.R(V)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var _;u.i.subscribe(V,u.i.H,function(){_?B():(u.a.B(V,"change",B),_=u.o(X,null,{l:V}))},null,{notifyImmediately:!0})},update:function(){}},u.m.wa.selectedOptions=!0,u.c.style={update:function(V,E){var I=u.a.f(E()||{});u.a.P(I,function(B,X){if(X=u.a.f(X),(X===null||X===t||X===!1)&&(X=""),o)o(V).css(B,X);else if(/^--/.test(B))V.style.setProperty(B,X);else{B=B.replace(/-(\w)/g,function(P,w){return w.toUpperCase()});var _=V.style[B];V.style[B]=X,X===_||V.style[B]!=_||isNaN(X)||(V.style[B]=X+"px")}})}},u.c.submit={init:function(V,E,I,B,X){if(typeof E()!="function")throw Error("The value for a submit binding must be a function");u.a.B(V,"submit",function(_){var P,w=E();try{P=w.call(X.$data,V)}finally{P!==!0&&(_.preventDefault?_.preventDefault():_.returnValue=!1)}})}},u.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(V,E){u.a.Bb(V,E())}},u.h.ea.text=!0,function(){if(e&&e.navigator){var V=function($){if($)return parseFloat($[1])},E=e.navigator.userAgent,I,B,X,_,P;(I=e.opera&&e.opera.version&&parseInt(e.opera.version()))||(P=V(E.match(/Edge\/([^ ]+)$/)))||V(E.match(/Chrome\/([^ ]+)/))||(B=V(E.match(/Version\/([^ ]+) Safari/)))||(X=V(E.match(/Firefox\/([^ ]+)/)))||(_=u.a.W||V(E.match(/MSIE ([^ ]+)/)))||(_=V(E.match(/rv:([^ )]+)/)))}if(8<=_&&10>_)var w=u.a.g.Z(),z=u.a.g.Z(),H=function($){var dt=this.activeElement;(dt=dt&&u.a.g.get(dt,z))&&dt($)},nt=function($,dt){var q=$.ownerDocument;u.a.g.get(q,w)||(u.a.g.set(q,w,!0),u.a.B(q,"selectionchange",H)),u.a.g.set($,z,dt)};u.c.textInput={init:function($,dt,q){function at(ie,oe){u.a.B($,ie,oe)}function st(){var ie=u.a.f(dt());(ie===null||ie===t)&&(ie=""),kt!==t&&ie===kt?u.a.setTimeout(st,4):$.value!==ie&&(qt=!0,$.value=ie,qt=!1,Wt=$.value)}function Et(){Nt||(kt=$.value,Nt=u.a.setTimeout(Qt,4))}function Qt(){clearTimeout(Nt),kt=Nt=t;var ie=$.value;Wt!==ie&&(Wt=ie,u.m.eb(dt(),q,"textInput",ie))}var Wt=$.value,Nt,kt,Mt=u.a.W==9?Et:Qt,qt=!1;_&&at("keypress",Qt),11>_&&at("propertychange",function(ie){qt||ie.propertyName!=="value"||Mt(ie)}),_==8&&(at("keyup",Qt),at("keydown",Qt)),nt&&(nt($,Mt),at("dragend",Et)),(!_||9<=_)&&at("input",Mt),5>B&&u.a.R($)==="textarea"?(at("keydown",Et),at("paste",Et),at("cut",Et)):11>I?at("keydown",Et):4>X?(at("DOMAutoComplete",Qt),at("dragdrop",Qt),at("drop",Qt)):P&&$.type==="number"&&at("keydown",Et),at("change",Qt),at("blur",Qt),u.o(st,null,{l:$})}},u.m.wa.textInput=!0,u.c.textinput={preprocess:function($,dt,q){q("textInput",$)}}}(),u.c.uniqueName={init:function(V,E){if(E()){var I="ko_unique_"+ ++u.c.uniqueName.rd;u.a.Yc(V,I)}}},u.c.uniqueName.rd=0,u.c.using={init:function(V,E,I,B,X){var _;return I.has("as")&&(_={as:I.get("as"),noChildContext:I.get("noChildContext")}),E=X.createChildContext(E,_),u.Oa(E,V),{controlsDescendantBindings:!0}}},u.h.ea.using=!0,u.c.value={init:function(V,E,I){var B=u.a.R(V),X=B=="input";if(!X||V.type!="checkbox"&&V.type!="radio"){var _=[],P=I.get("valueUpdate"),w=!1,z=null;P&&(typeof P=="string"?_=[P]:_=u.a.wc(P),u.a.Pa(_,"change"));var H=function(){z=null,w=!1;var dt=E(),q=u.w.M(V);u.m.eb(dt,I,"value",q)};!u.a.W||!X||V.type!="text"||V.autocomplete=="off"||V.form&&V.form.autocomplete=="off"||u.a.A(_,"propertychange")!=-1||(u.a.B(V,"propertychange",function(){w=!0}),u.a.B(V,"focus",function(){w=!1}),u.a.B(V,"blur",function(){w&&H()})),u.a.D(_,function(dt){var q=H;u.a.Ud(dt,"after")&&(q=function(){z=u.w.M(V),u.a.setTimeout(H,0)},dt=dt.substring(5)),u.a.B(V,dt,q)});var nt;if(nt=X&&V.type=="file"?function(){var dt=u.a.f(E());dt===null||dt===t||dt===""?V.value="":u.u.G(H)}:function(){var dt=u.a.f(E()),q=u.w.M(V);z!==null&&dt===z?u.a.setTimeout(nt,0):(dt!==q||q===t)&&(B==="select"?(q=I.get("valueAllowUnset"),u.w.cb(V,dt,q),q||dt===u.w.M(V)||u.u.G(H)):u.w.cb(V,dt))},B==="select"){var $;u.i.subscribe(V,u.i.H,function(){$?I.get("valueAllowUnset")?nt():H():(u.a.B(V,"change",H),$=u.o(nt,null,{l:V}))},null,{notifyImmediately:!0})}else u.a.B(V,"change",H),u.o(nt,null,{l:V})}else u.ib(V,{checkedValue:E})},update:function(){}},u.m.wa.value=!0,u.c.visible={update:function(V,E){var I=u.a.f(E()),B=V.style.display!="none";I&&!B?V.style.display="":!I&&B&&(V.style.display="none")}},u.c.hidden={update:function(V,E){u.c.visible.update(V,function(){return!u.a.f(E())})}},function(V){u.c[V]={init:function(E,I,B,X,_){return u.c.event.init.call(this,E,function(){var P={};return P[V]=I(),P},B,X,_)}}}("click"),u.ca=function(){},u.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},u.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},u.ca.prototype.makeTemplateSource=function(V,E){if(typeof V=="string"){E=E||n;var I=E.getElementById(V);if(!I)throw Error("Cannot find template with ID "+V);return new u.C.F(I)}if(V.nodeType==1||V.nodeType==8)return new u.C.ia(V);throw Error("Unknown template type: "+V)},u.ca.prototype.renderTemplate=function(V,E,I,B){return V=this.makeTemplateSource(V,B),this.renderTemplateSource(V,E,I,B)},u.ca.prototype.isTemplateRewritten=function(V,E){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(V,E).data("isRewritten")},u.ca.prototype.rewriteTemplate=function(V,E,I){V=this.makeTemplateSource(V,I),E=E(V.text()),V.text(E),V.data("isRewritten",!0)},u.b("templateEngine",u.ca),u.kc=function(){function V(B,X,_,P){B=u.m.ac(B);for(var w=u.m.Ra,z=0;z<B.length;z++){var H=B[z].key;if(Object.prototype.hasOwnProperty.call(w,H)){var nt=w[H];if(typeof nt=="function"){if(H=nt(B[z].value))throw Error(H)}else if(!nt)throw Error("This template engine does not support the '"+H+"' binding within its templates")}}return _="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+u.m.vb(B,{valueAccessors:!0})+" } })()},'"+_.toLowerCase()+"')",P.createJavaScriptEvaluatorBlock(_)+X}var E=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,I=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(B,X,_){X.isTemplateRewritten(B,_)||X.rewriteTemplate(B,function(P){return u.kc.Ld(P,X)},_)},Ld:function(B,X){return B.replace(E,function(_,P,w,z,H){return V(H,P,w,X)}).replace(I,function(_,P){return V(P,"<!-- ko -->","#comment",X)})},md:function(B,X){return u.aa.Xb(function(_,P){var w=_.nextSibling;w&&w.nodeName.toLowerCase()===X&&u.ib(w,B,P)})}}}(),u.b("__tr_ambtns",u.kc.md),function(){u.C={},u.C.F=function(I){if(this.F=I){var B=u.a.R(I);this.ab=B==="script"?1:B==="textarea"?2:B=="template"&&I.content&&I.content.nodeType===11?3:4}},u.C.F.prototype.text=function(){var I=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[I];var B=arguments[0];I==="innerHTML"?u.a.fc(this.F,B):this.F[I]=B};var V=u.a.g.Z()+"_";u.C.F.prototype.data=function(I){if(arguments.length===1)return u.a.g.get(this.F,V+I);u.a.g.set(this.F,V+I,arguments[1])};var E=u.a.g.Z();u.C.F.prototype.nodes=function(){var I=this.F;if(arguments.length==0){var B=u.a.g.get(I,E)||{},X=B.lb||(this.ab===3?I.content:this.ab===4?I:t);if(!X||B.jd){var _=this.text();_&&_!==B.bb&&(X=u.a.Md(_,I.ownerDocument),u.a.g.set(I,E,{lb:X,bb:_,jd:!0}))}return X}B=arguments[0],this.ab!==t&&this.text(""),u.a.g.set(I,E,{lb:B})},u.C.ia=function(I){this.F=I},u.C.ia.prototype=new u.C.F,u.C.ia.prototype.constructor=u.C.ia,u.C.ia.prototype.text=function(){if(arguments.length==0){var I=u.a.g.get(this.F,E)||{};return I.bb===t&&I.lb&&(I.bb=I.lb.innerHTML),I.bb}u.a.g.set(this.F,E,{bb:arguments[0]})},u.b("templateSources",u.C),u.b("templateSources.domElement",u.C.F),u.b("templateSources.anonymousTemplate",u.C.ia)}(),function(){function V(z,H,nt){var $;for(H=u.h.nextSibling(H);z&&($=z)!==H;)z=u.h.nextSibling($),nt($,z)}function E(z,H){if(z.length){var nt=z[0],$=z[z.length-1],dt=nt.parentNode,q=u.ga.instance,at=q.preprocessNode;if(at){if(V(nt,$,function(st,Et){var Qt=st.previousSibling,Wt=at.call(q,st);Wt&&(st===nt&&(nt=Wt[0]||Et),st===$&&($=Wt[Wt.length-1]||Qt))}),z.length=0,!nt)return;nt===$?z.push(nt):(z.push(nt,$),u.a.Ua(z,dt))}V(nt,$,function(st){st.nodeType!==1&&st.nodeType!==8||u.vc(H,st)}),V(nt,$,function(st){st.nodeType!==1&&st.nodeType!==8||u.aa.cd(st,[H])}),u.a.Ua(z,dt)}}function I(z){return z.nodeType?z:0<z.length?z[0]:null}function B(z,H,nt,$,dt){dt=dt||{};var q=(z&&I(z)||nt||{}).ownerDocument,at=dt.templateEngine||_;if(u.kc.xd(nt,at,q),nt=at.renderTemplate(nt,$,dt,q),typeof nt.length!="number"||0<nt.length&&typeof nt[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(q=!1,H){case"replaceChildren":u.h.va(z,nt),q=!0;break;case"replaceNode":u.a.Xc(z,nt),q=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+H)}return q&&(E(nt,$),dt.afterRender&&u.u.G(dt.afterRender,null,[nt,$[dt.as||"$data"]]),H=="replaceChildren"&&u.i.ma(z,u.i.H)),nt}function X(z,H,nt){return u.O(z)?z():typeof z=="function"?z(H,nt):z}var _;u.gc=function(z){if(z!=t&&!(z instanceof u.ca))throw Error("templateEngine must inherit from ko.templateEngine");_=z},u.dc=function(z,H,nt,$,dt){if(nt=nt||{},(nt.templateEngine||_)==t)throw Error("Set a template engine before calling renderTemplate");if(dt=dt||"replaceChildren",$){var q=I($);return u.$(function(){var st=H&&H instanceof u.fa?H:new u.fa(H,null,null,null,{exportDependencies:!0}),at=X(z,st.$data,st),st=B($,dt,at,st,nt);dt=="replaceNode"&&($=st,q=I($))},null,{Sa:function(){return!q||!u.a.Sb(q)},l:q&&dt=="replaceNode"?q.parentNode:q})}return u.aa.Xb(function(at){u.dc(z,H,nt,at,"replaceNode")})},u.Qd=function(z,H,nt,$,dt){function q(kt,Mt){u.u.G(u.a.ec,null,[$,kt,st,nt,at,Mt]),u.i.ma($,u.i.H)}function at(kt,Mt){E(Mt,Et),nt.afterRender&&nt.afterRender(Mt,kt),Et=null}function st(kt,Mt){Et=dt.createChildContext(kt,{as:Qt,noChildContext:nt.noChildContext,extend:function(ie){ie.$index=Mt,Qt&&(ie[Qt+"Index"]=Mt)}});var qt=X(z,kt,Et);return B($,"ignoreTargetNode",qt,Et,nt)}var Et,Qt=nt.as,Wt=nt.includeDestroyed===!1||u.options.foreachHidesDestroyed&&!nt.includeDestroyed;if(Wt||nt.beforeRemove||!u.Pc(H))return u.$(function(){var kt=u.a.f(H)||[];typeof kt.length>"u"&&(kt=[kt]),Wt&&(kt=u.a.jb(kt,function(Mt){return Mt===t||Mt===null||!u.a.f(Mt._destroy)})),q(kt)},null,{l:$});q(H.v());var Nt=H.subscribe(function(kt){q(H(),kt)},null,"arrayChange");return Nt.l($),Nt};var P=u.a.g.Z(),w=u.a.g.Z();u.c.template={init:function(z,H){var nt=u.a.f(H());if(typeof nt=="string"||"name"in nt)u.h.Ea(z);else if("nodes"in nt){if(nt=nt.nodes||[],u.O(nt))throw Error('The "nodes" option must be a plain, non-observable array.');var $=nt[0]&&nt[0].parentNode;$&&u.a.g.get($,w)||($=u.a.Yb(nt),u.a.g.set($,w,!0)),new u.C.ia(z).nodes($)}else if(nt=u.h.childNodes(z),0<nt.length)$=u.a.Yb(nt),new u.C.ia(z).nodes($);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,H,nt,$,dt){var q=H();H=u.a.f(q),nt=!0,$=null,typeof H=="string"?H={}:(q="name"in H?H.name:z,"if"in H&&(nt=u.a.f(H.if)),nt&&"ifnot"in H&&(nt=!u.a.f(H.ifnot)),nt&&!q&&(nt=!1)),"foreach"in H?$=u.Qd(q,nt&&H.foreach||[],H,z,dt):nt?(nt=dt,"data"in H&&(nt=dt.createChildContext(H.data,{as:H.as,noChildContext:H.noChildContext,exportDependencies:!0})),$=u.dc(q,nt,H,z)):u.h.Ea(z),dt=$,(H=u.a.g.get(z,P))&&typeof H.s=="function"&&H.s(),u.a.g.set(z,P,!dt||dt.ja&&!dt.ja()?t:dt)}},u.m.Ra.template=function(z){return z=u.m.ac(z),z.length==1&&z[0].unknown||u.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},u.h.ea.template=!0}(),u.b("setTemplateEngine",u.gc),u.b("renderTemplate",u.dc),u.a.Kc=function(V,E,I){if(V.length&&E.length){var B,X,_,P,w;for(B=X=0;(!I||B<I)&&(P=V[X]);++X){for(_=0;w=E[_];++_)if(P.value===w.value){P.moved=w.index,w.moved=P.index,E.splice(_,1),B=_=0;break}B+=_}}},u.a.Pb=function(){function V(E,I,B,X,_){var P=Math.min,w=Math.max,z=[],H,nt=E.length,$,dt=I.length,q=dt-nt||1,at=nt+dt+1,st,Et,Qt;for(H=0;H<=nt;H++)for(Et=st,z.push(st=[]),Qt=P(dt,H+q),$=w(0,H-1);$<=Qt;$++)st[$]=$?H?E[H-1]===I[$-1]?Et[$-1]:P(Et[$]||at,st[$-1]||at)+1:$+1:H+1;for(P=[],w=[],q=[],H=nt,$=dt;H||$;)dt=z[H][$]-1,$&&dt===z[H][$-1]?w.push(P[P.length]={status:B,value:I[--$],index:$}):H&&dt===z[H-1][$]?q.push(P[P.length]={status:X,value:E[--H],index:H}):(--$,--H,_.sparse||P.push({status:"retained",value:I[$]}));return u.a.Kc(q,w,!_.dontLimitMoves&&10*nt),P.reverse()}return function(E,I,B){return B=typeof B=="boolean"?{dontLimitMoves:B}:B||{},E=E||[],I=I||[],E.length<I.length?V(E,I,"added","deleted",B):V(I,E,"deleted","added",B)}}(),u.b("utils.compareArrays",u.a.Pb),function(){function V(B,X,_,P,w){var z=[],H=u.$(function(){var nt=X(_,w,u.a.Ua(z,B))||[];0<z.length&&(u.a.Xc(z,nt),P&&u.u.G(P,null,[_,nt,w])),z.length=0,u.a.Nb(z,nt)},null,{l:B,Sa:function(){return!u.a.kd(z)}});return{Y:z,$:H.ja()?H:t}}var E=u.a.g.Z(),I=u.a.g.Z();u.a.ec=function(B,X,_,P,w,z){function H(We){qt={Aa:We,pb:u.ta(Et++)},at.push(qt),q||Mt.push(qt)}function nt(We){qt=dt[We],Et!==qt.pb.v()&&kt.push(qt),qt.pb(Et++),u.a.Ua(qt.Y,B),at.push(qt)}function $(We,un){if(We)for(var Ct=0,_t=un.length;Ct<_t;Ct++)u.a.D(un[Ct].Y,function(Je){We(Je,Ct,un[Ct].Aa)})}X=X||[],typeof X.length>"u"&&(X=[X]),P=P||{};var dt=u.a.g.get(B,E),q=!dt,at=[],st=0,Et=0,Qt=[],Wt=[],Nt=[],kt=[],Mt=[],qt,ie=0;if(q)u.a.D(X,H);else{if(!z||dt&&dt._countWaitingForRemove){var oe=u.a.Mb(dt,function(We){return We.Aa});z=u.a.Pb(oe,X,{dontLimitMoves:P.dontLimitMoves,sparse:!0})}for(var oe=0,He,rn,de;He=z[oe];oe++)switch(rn=He.moved,de=He.index,He.status){case"deleted":for(;st<de;)nt(st++);rn===t&&(qt=dt[st],qt.$&&(qt.$.s(),qt.$=t),u.a.Ua(qt.Y,B).length&&(P.beforeRemove&&(at.push(qt),ie++,qt.Aa===I?qt=null:Nt.push(qt)),qt&&Qt.push.apply(Qt,qt.Y))),st++;break;case"added":for(;Et<de;)nt(st++);rn!==t?(Wt.push(at.length),nt(rn)):H(He.value)}for(;Et<X.length;)nt(st++);at._countWaitingForRemove=ie}u.a.g.set(B,E,at),$(P.beforeMove,kt),u.a.D(Qt,P.beforeRemove?u.oa:u.removeNode);var zt,ke,ue;try{ue=B.ownerDocument.activeElement}catch{}if(Wt.length)for(;(oe=Wt.shift())!=t;){for(qt=at[oe],zt=t;oe;)if((ke=at[--oe].Y)&&ke.length){zt=ke[ke.length-1];break}for(X=0;st=qt.Y[X];zt=st,X++)u.h.Wb(B,st,zt)}for(oe=0;qt=at[oe];oe++){for(qt.Y||u.a.extend(qt,V(B,_,qt.Aa,w,qt.pb)),X=0;st=qt.Y[X];zt=st,X++)u.h.Wb(B,st,zt);!qt.Ed&&w&&(w(qt.Aa,qt.Y,qt.pb),qt.Ed=!0,zt=qt.Y[qt.Y.length-1])}for(ue&&B.ownerDocument.activeElement!=ue&&ue.focus(),$(P.beforeRemove,Nt),oe=0;oe<Nt.length;++oe)Nt[oe].Aa=I;$(P.afterMove,kt),$(P.afterAdd,Mt)}}(),u.b("utils.setDomNodeChildrenFromArrayMapping",u.a.ec),u.ba=function(){this.allowTemplateRewriting=!1},u.ba.prototype=new u.ca,u.ba.prototype.constructor=u.ba,u.ba.prototype.renderTemplateSource=function(V,E,I,B){return(E=!(9>u.a.W)&&V.nodes?V.nodes():null)?u.a.la(E.cloneNode(!0).childNodes):(V=V.text(),u.a.ua(V,B))},u.ba.Ma=new u.ba,u.gc(u.ba.Ma),u.b("nativeTemplateEngine",u.ba),function(){u.$a=function(){var E=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(I,B,X,_){if(_=_||n,X=X||{},2>E)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var P=I.data("precompiled");return P||(P=I.text()||"",P=o.template(null,"{{ko_with $item.koBindingContext}}"+P+"{{/ko_with}}"),I.data("precompiled",P)),I=[B.$data],B=o.extend({koBindingContext:B},X.templateOptions),B=o.tmpl(P,I,B),B.appendTo(_.createElement("div")),o.fragments={},B},this.createJavaScriptEvaluatorBlock=function(I){return"{{ko_code ((function() { return "+I+" })()) }}"},this.addTemplate=function(I,B){n.write("<script type='text/html' id='"+I+"'>"+B+"<\/script>")},0<E&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},u.$a.prototype=new u.ca,u.$a.prototype.constructor=u.$a;var V=new u.$a;0<V.Hd&&u.gc(V),u.b("jqueryTmplTemplateEngine",u.$a)}()})})()})()})();var $9e=ko;typeof window<"u"?(ko=window.ko,typeof mD<"u"?window.ko=mD:delete window.ko):(ko=global.ko,typeof mD<"u"?global.ko=mD:delete global.ko);var dg=$9e;var QWa=R(W(),1);/** +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),X=/[\])"'A-Za-z0-9_$]+$/,_={in:1,return:1,typeof:1},P={};return{Ra:[],wa:P,ac:Z,vb:function(w,z){function H(st,Et){var Qt;if(!q){var Wt=V.getBindingHandler(st);if(Wt&&Wt.preprocess&&!(Et=Wt.preprocess(Et,st,H)))return;(Wt=P[st])&&(Qt=Et,0<=V.a.A(E,Qt)?Qt=!1:(Wt=Qt.match(I),Qt=Wt===null?!1:Wt[1]?"Object("+Wt[1]+")"+Wt[2]:Qt),Wt=Qt),Wt&&$.push("'"+(typeof P[st]=="string"?P[st]:st)+"':function(_z){"+Qt+"=_z}")}dt&&(Et="function(){return "+Et+" }"),nt.push("'"+st+"':"+Et)}z=z||{};var nt=[],$=[],dt=z.valueAccessors,q=z.bindingParams,at=typeof w=="string"?Z(w):w;return V.a.D(at,function(st){H(st.key||st.unknown,st.value)}),$.length&&H("_ko_property_writers","{"+$.join(",")+" }"),nt.join(",")},Id:function(w,z){for(var H=0;H<w.length;H++)if(w[H].key==z)return!0;return!1},eb:function(w,z,H,nt,$){w&&V.O(w)?!V.Za(w)||$&&w.v()===nt||w(nt):(w=z.get("_ko_property_writers"))&&w[H]&&w[H](nt)}}}(),V.b("expressionRewriting",V.m),V.b("expressionRewriting.bindingRewriteValidators",V.m.Ra),V.b("expressionRewriting.parseObjectLiteral",V.m.ac),V.b("expressionRewriting.preProcessBindings",V.m.vb),V.b("expressionRewriting._twoWayBindings",V.m.wa),V.b("jsonExpressionRewriting",V.m),V.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",V.m.vb),function(){function Z(H){return H.nodeType==8&&_.test(X?H.text:H.nodeValue)}function E(H){return H.nodeType==8&&P.test(X?H.text:H.nodeValue)}function I(H,nt){for(var $=H,dt=1,q=[];$=$.nextSibling;){if(E($)&&(V.a.g.set($,z,!0),dt--,dt===0))return q;q.push($),Z($)&&dt++}if(!nt)throw Error("Cannot find closing comment tag to match: "+H.nodeValue);return null}function B(H,nt){var $=I(H,nt);return $?0<$.length?$[$.length-1].nextSibling:H.nextSibling:null}var X=n&&n.createComment("test").text==="<!--test-->",_=X?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,P=X?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,w={ul:!0,ol:!0},z="__ko_matchedEndComment__";V.h={ea:{},childNodes:function(H){return Z(H)?I(H):H.childNodes},Ea:function(H){if(Z(H)){H=V.h.childNodes(H);for(var nt=0,$=H.length;nt<$;nt++)V.removeNode(H[nt])}else V.a.Tb(H)},va:function(H,nt){if(Z(H)){V.h.Ea(H);for(var $=H.nextSibling,dt=0,q=nt.length;dt<q;dt++)$.parentNode.insertBefore(nt[dt],$)}else V.a.va(H,nt)},Vc:function(H,nt){var $;Z(H)?($=H.nextSibling,H=H.parentNode):$=H.firstChild,$?nt!==$&&H.insertBefore(nt,$):H.appendChild(nt)},Wb:function(H,nt,$){$?($=$.nextSibling,Z(H)&&(H=H.parentNode),$?nt!==$&&H.insertBefore(nt,$):H.appendChild(nt)):V.h.Vc(H,nt)},firstChild:function(H){if(Z(H))return!H.nextSibling||E(H.nextSibling)?null:H.nextSibling;if(H.firstChild&&E(H.firstChild))throw Error("Found invalid end comment, as the first child of "+H);return H.firstChild},nextSibling:function(H){if(Z(H)&&(H=B(H)),H.nextSibling&&E(H.nextSibling)){var nt=H.nextSibling;if(E(nt)&&!V.a.g.get(nt,z))throw Error("Found end comment without a matching opening comment, as child of "+H);return null}return H.nextSibling},Cd:Z,Vd:function(H){return(H=(X?H.text:H.nodeValue).match(_))?H[1]:null},Sc:function(H){if(w[V.a.R(H)]){var nt=H.firstChild;if(nt)do if(nt.nodeType===1){var $;$=nt.firstChild;var dt=null;if($)do if(dt)dt.push($);else if(Z($)){var q=B($,!0);q?$=q:dt=[$]}else E($)&&(dt=[$]);while($=$.nextSibling);if($=dt)for(dt=nt.nextSibling,q=0;q<$.length;q++)dt?H.insertBefore($[q],dt):H.appendChild($[q])}while(nt=nt.nextSibling)}}}}(),V.b("virtualElements",V.h),V.b("virtualElements.allowedBindings",V.h.ea),V.b("virtualElements.emptyNode",V.h.Ea),V.b("virtualElements.insertAfter",V.h.Wb),V.b("virtualElements.prepend",V.h.Vc),V.b("virtualElements.setDomNodeChildren",V.h.va),function(){V.ga=function(){this.nd={}},V.a.extend(V.ga.prototype,{nodeHasBindings:function(Z){switch(Z.nodeType){case 1:return Z.getAttribute("data-bind")!=null||V.j.getComponentNameForNode(Z);case 8:return V.h.Cd(Z);default:return!1}},getBindings:function(Z,E){var I=this.getBindingsString(Z,E),I=I?this.parseBindingsString(I,E,Z):null;return V.j.tc(I,Z,E,!1)},getBindingAccessors:function(Z,E){var I=this.getBindingsString(Z,E),I=I?this.parseBindingsString(I,E,Z,{valueAccessors:!0}):null;return V.j.tc(I,Z,E,!0)},getBindingsString:function(Z){switch(Z.nodeType){case 1:return Z.getAttribute("data-bind");case 8:return V.h.Vd(Z);default:return null}},parseBindingsString:function(Z,E,I,B){try{var X=this.nd,_=Z+(B&&B.valueAccessors||""),P;if(!(P=X[_])){var w,z="with($context){with($data||{}){return{"+V.m.vb(Z,B)+"}}}";w=new Function("$context","$element",z),P=X[_]=w}return P(E,I)}catch(H){throw H.message=`Unable to parse bindings. +Bindings value: `+Z+` +Message: `+H.message,H}}}),V.ga.instance=new V.ga}(),V.b("bindingProvider",V.ga),function(){function Z(Wt){var Nt=(Wt=V.a.g.get(Wt,Qt))&&Wt.N;Nt&&(Wt.N=null,Nt.Tc())}function E(Wt,Nt,kt){this.node=Wt,this.yc=Nt,this.kb=[],this.H=!1,Nt.N||V.a.K.za(Wt,Z),kt&&kt.N&&(kt.N.kb.push(Wt),this.Kb=kt)}function I(Wt){return function(){return Wt}}function B(Wt){return Wt()}function X(Wt){return V.a.Ga(V.u.G(Wt),function(Nt,kt){return function(){return Wt()[kt]}})}function _(Wt,Nt,kt){return typeof Wt=="function"?X(Wt.bind(null,Nt,kt)):V.a.Ga(Wt,I)}function P(Wt,Nt){return X(this.getBindings.bind(this,Wt,Nt))}function w(Wt,Nt){var kt=V.h.firstChild(Nt);if(kt){var Mt,qt=V.ga.instance,ie=qt.preprocessNode;if(ie){for(;Mt=kt;)kt=V.h.nextSibling(Mt),ie.call(qt,Mt);kt=V.h.firstChild(Nt)}for(;Mt=kt;)kt=V.h.nextSibling(Mt),z(Wt,Mt)}V.i.ma(Nt,V.i.H)}function z(Wt,Nt){var kt=Wt,Mt=Nt.nodeType===1;Mt&&V.h.Sc(Nt),(Mt||V.ga.instance.nodeHasBindings(Nt))&&(kt=nt(Nt,null,Wt).bindingContextForDescendants),kt&&!st[V.a.R(Nt)]&&w(kt,Nt)}function H(Wt){var Nt=[],kt={},Mt=[];return V.a.P(Wt,function qt(ie){if(!kt[ie]){var oe=V.getBindingHandler(ie);oe&&(oe.after&&(Mt.push(ie),V.a.D(oe.after,function(He){if(Wt[He]){if(V.a.A(Mt,He)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+Mt.join(", "));qt(He)}}),Mt.length--),Nt.push({key:ie,Mc:oe})),kt[ie]=!0}}),Nt}function nt(Wt,Nt,kt){var Mt=V.a.g.Ub(Wt,Qt,{}),qt=Mt.hd;if(!Nt){if(qt)throw Error("You cannot apply bindings multiple times to the same element.");Mt.hd=!0}qt||(Mt.context=kt),Mt.Zb||(Mt.Zb={});var ie;if(Nt&&typeof Nt!="function")ie=Nt;else{var oe=V.ga.instance,He=oe.getBindingAccessors||P,rn=V.$(function(){return(ie=Nt?Nt(kt,Wt):He.call(oe,Wt,kt))&&(kt[dt]&&kt[dt](),kt[at]&&kt[at]()),ie},null,{l:Wt});ie&&rn.ja()||(rn=null)}var de=kt,zt;if(ie){var ke=function(){return V.a.Ga(rn?rn():ie,B)},Ve=rn?function(We){return function(){return B(rn()[We])}}:function(We){return ie[We]};ke.get=function(We){return ie[We]&&B(Ve(We))},ke.has=function(We){return We in ie},V.i.H in ie&&V.i.subscribe(Wt,V.i.H,function(){var We=(0,ie[V.i.H])();if(We){var Vn=V.h.childNodes(Wt);Vn.length&&We(Vn,V.Ec(Vn[0]))}}),V.i.pa in ie&&(de=V.i.Cb(Wt,kt),V.i.subscribe(Wt,V.i.pa,function(){var We=(0,ie[V.i.pa])();We&&V.h.firstChild(Wt)&&We(Wt)})),Mt=H(ie),V.a.D(Mt,function(We){var Vn=We.Mc.init,Ct=We.Mc.update,_t=We.key;if(Wt.nodeType===8&&!V.h.ea[_t])throw Error("The binding '"+_t+"' cannot be used with virtual elements");try{typeof Vn=="function"&&V.u.G(function(){var Je=Vn(Wt,Ve(_t),ke,de.$data,de);if(Je&&Je.controlsDescendantBindings){if(zt!==t)throw Error("Multiple bindings ("+zt+" and "+_t+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");zt=_t}}),typeof Ct=="function"&&V.$(function(){Ct(Wt,Ve(_t),ke,de.$data,de)},null,{l:Wt})}catch(Je){throw Je.message='Unable to process binding "'+_t+": "+ie[_t]+`" +Message: `+Je.message,Je}})}return Mt=zt===t,{shouldBindDescendants:Mt,bindingContextForDescendants:Mt&&de}}function $(Wt,Nt){return Wt&&Wt instanceof V.fa?Wt:new V.fa(Wt,t,t,Nt)}var dt=V.a.Da("_subscribable"),q=V.a.Da("_ancestorBindingInfo"),at=V.a.Da("_dataDependency");V.c={};var st={script:!0,textarea:!0,template:!0};V.getBindingHandler=function(Wt){return V.c[Wt]};var Et={};V.fa=function(Wt,Nt,kt,Mt,qt){function ie(){var Ve=de?rn():rn,We=V.a.f(Ve);return Nt?(V.a.extend(oe,Nt),q in Nt&&(oe[q]=Nt[q])):(oe.$parents=[],oe.$root=We,oe.ko=V),oe[dt]=zt,He?We=oe.$data:(oe.$rawData=Ve,oe.$data=We),kt&&(oe[kt]=We),Mt&&Mt(oe,Nt,We),Nt&&Nt[dt]&&!V.S.o().Vb(Nt[dt])&&Nt[dt](),ke&&(oe[at]=ke),oe.$data}var oe=this,He=Wt===Et,rn=He?t:Wt,de=typeof rn=="function"&&!V.O(rn),zt,ke=qt&&qt.dataDependency;qt&&qt.exportDependencies?ie():(zt=V.xb(ie),zt.v(),zt.ja()?zt.equalityComparer=null:oe[dt]=t)},V.fa.prototype.createChildContext=function(Wt,Nt,kt,Mt){if(!Mt&&Nt&&typeof Nt=="object"&&(Mt=Nt,Nt=Mt.as,kt=Mt.extend),Nt&&Mt&&Mt.noChildContext){var qt=typeof Wt=="function"&&!V.O(Wt);return new V.fa(Et,this,null,function(ie){kt&&kt(ie),ie[Nt]=qt?Wt():Wt},Mt)}return new V.fa(Wt,this,Nt,function(ie,oe){ie.$parentContext=oe,ie.$parent=oe.$data,ie.$parents=(oe.$parents||[]).slice(0),ie.$parents.unshift(ie.$parent),kt&&kt(ie)},Mt)},V.fa.prototype.extend=function(Wt,Nt){return new V.fa(Et,this,null,function(kt){V.a.extend(kt,typeof Wt=="function"?Wt(kt):Wt)},Nt)};var Qt=V.a.g.Z();E.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},E.prototype.sd=function(Wt){V.a.Pa(this.kb,Wt),!this.kb.length&&this.H&&this.Cc()},E.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,V.a.K.yb(this.node,Z),V.i.ma(this.node,V.i.pa),this.Tc())},V.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(Wt,Nt,kt,Mt,qt){var ie=V.a.g.Ub(Wt,Qt,{});return ie.Fa||(ie.Fa=new V.T),qt&&qt.notifyImmediately&&ie.Zb[Nt]&&V.u.G(kt,Mt,[Wt]),ie.Fa.subscribe(kt,Mt,Nt)},ma:function(Wt,Nt){var kt=V.a.g.get(Wt,Qt);if(kt&&(kt.Zb[Nt]=!0,kt.Fa&&kt.Fa.notifySubscribers(Wt,Nt),Nt==V.i.H)){if(kt.N)kt.N.Cc();else if(kt.N===t&&kt.Fa&&kt.Fa.Wa(V.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(Wt,Nt){var kt=V.a.g.Ub(Wt,Qt,{});return kt.N||(kt.N=new E(Wt,kt,Nt[q])),Nt[q]==kt?Nt:Nt.extend(function(Mt){Mt[q]=kt})}},V.Td=function(Wt){return(Wt=V.a.g.get(Wt,Qt))&&Wt.context},V.ib=function(Wt,Nt,kt){return Wt.nodeType===1&&V.h.Sc(Wt),nt(Wt,Nt,$(kt))},V.ld=function(Wt,Nt,kt){return kt=$(kt),V.ib(Wt,_(Nt,kt,Wt),kt)},V.Oa=function(Wt,Nt){Nt.nodeType!==1&&Nt.nodeType!==8||w($(Wt),Nt)},V.vc=function(Wt,Nt,kt){if(!o&&e.jQuery&&(o=e.jQuery),2>arguments.length){if(Nt=n.body,!Nt)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!Nt||Nt.nodeType!==1&&Nt.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z($(Wt,kt),Nt)},V.Dc=function(Wt){return!Wt||Wt.nodeType!==1&&Wt.nodeType!==8?t:V.Td(Wt)},V.Ec=function(Wt){return(Wt=V.Dc(Wt))?Wt.$data:t},V.b("bindingHandlers",V.c),V.b("bindingEvent",V.i),V.b("bindingEvent.subscribe",V.i.subscribe),V.b("bindingEvent.startPossiblyAsyncContentBinding",V.i.Cb),V.b("applyBindings",V.vc),V.b("applyBindingsToDescendants",V.Oa),V.b("applyBindingAccessorsToNode",V.ib),V.b("applyBindingsToNode",V.ld),V.b("contextFor",V.Dc),V.b("dataFor",V.Ec)}(),function(Z){function E(P,w){var z=Object.prototype.hasOwnProperty.call(X,P)?X[P]:Z,H;z?z.subscribe(w):(z=X[P]=new V.T,z.subscribe(w),I(P,function(nt,$){var dt=!(!$||!$.synchronous);_[P]={definition:nt,Gd:dt},delete X[P],H||dt?z.notifySubscribers(nt):V.na.zb(function(){z.notifySubscribers(nt)})}),H=!0)}function I(P,w){B("getConfig",[P],function(z){z?B("loadComponent",[P,z],function(H){w(H,z)}):w(null,null)})}function B(P,w,z,H){H||(H=V.j.loaders.slice(0));var nt=H.shift();if(nt){var $=nt[P];if($){var dt=!1;if($.apply(nt,w.concat(function(q){dt?z(null):q!==null?z(q):B(P,w,z,H)}))!==Z&&(dt=!0,!nt.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else B(P,w,z,H)}else z(null)}var X={},_={};V.j={get:function(P,w){var z=Object.prototype.hasOwnProperty.call(_,P)?_[P]:Z;z?z.Gd?V.u.G(function(){w(z.definition)}):V.na.zb(function(){w(z.definition)}):E(P,w)},Bc:function(P){delete _[P]},oc:B},V.j.loaders=[],V.b("components",V.j),V.b("components.get",V.j.get),V.b("components.clearCachedDefinition",V.j.Bc)}(),function(){function Z(z,H,nt,$){function dt(){--at===0&&$(q)}var q={},at=2,st=nt.template;nt=nt.viewModel,st?X(H,st,function(Et){V.j.oc("loadTemplate",[z,Et],function(Qt){q.template=Qt,dt()})}):dt(),nt?X(H,nt,function(Et){V.j.oc("loadViewModel",[z,Et],function(Qt){q[w]=Qt,dt()})}):dt()}function E(z,H,nt){if(typeof H=="function")nt(function(dt){return new H(dt)});else if(typeof H[w]=="function")nt(H[w]);else if("instance"in H){var $=H.instance;nt(function(){return $})}else"viewModel"in H?E(z,H.viewModel,nt):z("Unknown viewModel value: "+H)}function I(z){switch(V.a.R(z)){case"script":return V.a.ua(z.text);case"textarea":return V.a.ua(z.value);case"template":if(B(z.content))return V.a.Ca(z.content.childNodes)}return V.a.Ca(z.childNodes)}function B(z){return e.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function X(z,H,nt){typeof H.require=="string"?l||e.require?(l||e.require)([H.require],function($){$&&typeof $=="object"&&$.Xd&&$.default&&($=$.default),nt($)}):z("Uses require, but no AMD loader is present"):nt(H)}function _(z){return function(H){throw Error("Component '"+z+"': "+H)}}var P={};V.j.register=function(z,H){if(!H)throw Error("Invalid configuration for "+z);if(V.j.tb(z))throw Error("Component "+z+" is already registered");P[z]=H},V.j.tb=function(z){return Object.prototype.hasOwnProperty.call(P,z)},V.j.unregister=function(z){delete P[z],V.j.Bc(z)},V.j.Fc={getConfig:function(z,H){H(V.j.tb(z)?P[z]:null)},loadComponent:function(z,H,nt){var $=_(z);X($,H,function(dt){Z(z,$,dt,nt)})},loadTemplate:function(z,H,nt){if(z=_(z),typeof H=="string")nt(V.a.ua(H));else if(H instanceof Array)nt(H);else if(B(H))nt(V.a.la(H.childNodes));else if(H.element)if(H=H.element,e.HTMLElement?H instanceof HTMLElement:H&&H.tagName&&H.nodeType===1)nt(I(H));else if(typeof H=="string"){var $=n.getElementById(H);$?nt(I($)):z("Cannot find element with ID "+H)}else z("Unknown element type: "+H);else z("Unknown template value: "+H)},loadViewModel:function(z,H,nt){E(_(z),H,nt)}};var w="createViewModel";V.b("components.register",V.j.register),V.b("components.isRegistered",V.j.tb),V.b("components.unregister",V.j.unregister),V.b("components.defaultLoader",V.j.Fc),V.j.loaders.push(V.j.Fc),V.j.dd=P}(),function(){function Z(I,B){var X=I.getAttribute("params");if(X){var X=E.parseBindingsString(X,B,I,{valueAccessors:!0,bindingParams:!0}),X=V.a.Ga(X,function(w){return V.o(w,null,{l:I})}),_=V.a.Ga(X,function(w){var z=w.v();return w.ja()?V.o({read:function(){return V.a.f(w())},write:V.Za(z)&&function(H){w()(H)},l:I}):z});return Object.prototype.hasOwnProperty.call(_,"$raw")||(_.$raw=X),_}return{$raw:{}}}V.j.getComponentNameForNode=function(I){var B=V.a.R(I);if(V.j.tb(B)&&(B.indexOf("-")!=-1||""+I=="[object HTMLUnknownElement]"||8>=V.a.W&&I.tagName===B))return B},V.j.tc=function(I,B,X,_){if(B.nodeType===1){var P=V.j.getComponentNameForNode(B);if(P){if(I=I||{},I.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var w={name:P,params:Z(B,X)};I.component=_?function(){return w}:w}}return I};var E=new V.ga;9>V.a.W&&(V.j.register=function(I){return function(B){return I.apply(this,arguments)}}(V.j.register),n.createDocumentFragment=function(I){return function(){var B=I(),X=V.j.dd,_;for(_ in X);return B}}(n.createDocumentFragment))}(),function(){function Z(B,X,_){if(X=X.template,!X)throw Error("Component '"+B+"' has no template");B=V.a.Ca(X),V.h.va(_,B)}function E(B,X,_){var P=B.createViewModel;return P?P.call(B,X,_):X}var I=0;V.c.component={init:function(B,X,_,P,w){function z(){var q=H&&H.dispose;typeof q=="function"&&q.call(H),$&&$.s(),nt=H=$=null}var H,nt,$,dt=V.a.la(V.h.childNodes(B));return V.h.Ea(B),V.a.K.za(B,z),V.o(function(){var q=V.a.f(X()),at,st;if(typeof q=="string"?at=q:(at=V.a.f(q.name),st=V.a.f(q.params)),!at)throw Error("No component name specified");var Et=V.i.Cb(B,w),Qt=nt=++I;V.j.get(at,function(Wt){if(nt===Qt){if(z(),!Wt)throw Error("Unknown component '"+at+"'");Z(at,Wt,B);var Nt=E(Wt,st,{element:B,templateNodes:dt});Wt=Et.createChildContext(Nt,{extend:function(kt){kt.$component=Nt,kt.$componentTemplateNodes=dt}}),Nt&&Nt.koDescendantsComplete&&($=V.i.subscribe(B,V.i.pa,Nt.koDescendantsComplete,Nt)),H=Nt,V.Oa(Wt,B)}})},null,{l:B}),{controlsDescendantBindings:!0}}},V.h.ea.component=!0}();var J={class:"className",for:"htmlFor"};V.c.attr={update:function(Z,E){var I=V.a.f(E())||{};V.a.P(I,function(B,X){X=V.a.f(X);var _=B.indexOf(":"),_="lookupNamespaceURI"in Z&&0<_&&Z.lookupNamespaceURI(B.substr(0,_)),P=X===!1||X===null||X===t;P?_?Z.removeAttributeNS(_,B):Z.removeAttribute(B):X=X.toString(),8>=V.a.W&&B in J?(B=J[B],P?Z.removeAttribute(B):Z[B]=X):P||(_?Z.setAttributeNS(_,B,X):Z.setAttribute(B,X)),B==="name"&&V.a.Yc(Z,P?"":X)})}},function(){V.c.checked={after:["value","attr"],init:function(Z,E,I){function B(){var q=Z.checked,at=_();if(!V.S.Ya()&&(q||!w&&!V.S.qa())){var st=V.u.G(E);if(H){var Et=nt?st.v():st,Qt=dt;dt=at,Qt!==at?q&&(V.a.Na(Et,at,!0),V.a.Na(Et,Qt,!1)):V.a.Na(Et,at,q),nt&&V.Za(st)&&st(Et)}else P&&(at===t?at=q:q||(at=t)),V.m.eb(st,I,"checked",at,!0)}}function X(){var q=V.a.f(E()),at=_();H?(Z.checked=0<=V.a.A(q,at),dt=at):Z.checked=P&&at===t?!!q:_()===q}var _=V.xb(function(){if(I.has("checkedValue"))return V.a.f(I.get("checkedValue"));if($)return I.has("value")?V.a.f(I.get("value")):Z.value}),P=Z.type=="checkbox",w=Z.type=="radio";if(P||w){var z=E(),H=P&&V.a.f(z)instanceof Array,nt=!(H&&z.push&&z.splice),$=w||H,dt=H?_():t;w&&!Z.name&&V.c.uniqueName.init(Z,function(){return!0}),V.o(B,null,{l:Z}),V.a.B(Z,"click",B),V.o(X,null,{l:Z}),z=t}}},V.m.wa.checked=!0,V.c.checkedValue={update:function(Z,E){Z.value=V.a.f(E())}}}(),V.c.class={update:function(Z,E){var I=V.a.Db(V.a.f(E()));V.a.Eb(Z,Z.__ko__cssValue,!1),Z.__ko__cssValue=I,V.a.Eb(Z,I,!0)}},V.c.css={update:function(Z,E){var I=V.a.f(E());I!==null&&typeof I=="object"?V.a.P(I,function(B,X){X=V.a.f(X),V.a.Eb(Z,B,X)}):V.c.class.update(Z,E)}},V.c.enable={update:function(Z,E){var I=V.a.f(E());I&&Z.disabled?Z.removeAttribute("disabled"):I||Z.disabled||(Z.disabled=!0)}},V.c.disable={update:function(Z,E){V.c.enable.update(Z,function(){return!V.a.f(E())})}},V.c.event={init:function(Z,E,I,B,X){var _=E()||{};V.a.P(_,function(P){typeof P=="string"&&V.a.B(Z,P,function(w){var z,H=E()[P];if(H){try{var nt=V.a.la(arguments);B=X.$data,nt.unshift(B),z=H.apply(B,nt)}finally{z!==!0&&(w.preventDefault?w.preventDefault():w.returnValue=!1)}I.get(P+"Bubble")===!1&&(w.cancelBubble=!0,w.stopPropagation&&w.stopPropagation())}})})}},V.c.foreach={Rc:function(Z){return function(){var E=Z(),I=V.a.bc(E);return!I||typeof I.length=="number"?{foreach:E,templateEngine:V.ba.Ma}:(V.a.f(E),{foreach:I.data,as:I.as,noChildContext:I.noChildContext,includeDestroyed:I.includeDestroyed,afterAdd:I.afterAdd,beforeRemove:I.beforeRemove,afterRender:I.afterRender,beforeMove:I.beforeMove,afterMove:I.afterMove,templateEngine:V.ba.Ma})}},init:function(Z,E){return V.c.template.init(Z,V.c.foreach.Rc(E))},update:function(Z,E,I,B,X){return V.c.template.update(Z,V.c.foreach.Rc(E),I,B,X)}},V.m.Ra.foreach=!1,V.h.ea.foreach=!0,V.c.hasfocus={init:function(Z,E,I){function B(P){Z.__ko_hasfocusUpdating=!0;var w=Z.ownerDocument;if("activeElement"in w){var z;try{z=w.activeElement}catch{z=w.body}P=z===Z}w=E(),V.m.eb(w,I,"hasfocus",P,!0),Z.__ko_hasfocusLastValue=P,Z.__ko_hasfocusUpdating=!1}var X=B.bind(null,!0),_=B.bind(null,!1);V.a.B(Z,"focus",X),V.a.B(Z,"focusin",X),V.a.B(Z,"blur",_),V.a.B(Z,"focusout",_),Z.__ko_hasfocusLastValue=!1},update:function(Z,E){var I=!!V.a.f(E());Z.__ko_hasfocusUpdating||Z.__ko_hasfocusLastValue===I||(I?Z.focus():Z.blur(),!I&&Z.__ko_hasfocusLastValue&&Z.ownerDocument.body.focus(),V.u.G(V.a.Fb,null,[Z,I?"focusin":"focusout"]))}},V.m.wa.hasfocus=!0,V.c.hasFocus=V.c.hasfocus,V.m.wa.hasFocus="hasfocus",V.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(Z,E){V.a.fc(Z,E())}},function(){function Z(E,I,B){V.c[E]={init:function(X,_,P,w,z){var H,nt,$={},dt,q,at;if(I){w=P.get("as");var st=P.get("noChildContext");at=!(w&&st),$={as:w,noChildContext:st,exportDependencies:at}}return q=(dt=P.get("completeOn")=="render")||P.has(V.i.pa),V.o(function(){var Et=V.a.f(_()),Qt=!B!=!Et,Wt=!nt,Nt;(at||Qt!==H)&&(q&&(z=V.i.Cb(X,z)),Qt&&((!I||at)&&($.dataDependency=V.S.o()),Nt=I?z.createChildContext(typeof Et=="function"?Et:_,$):V.S.qa()?z.extend(null,$):z),Wt&&V.S.qa()&&(nt=V.a.Ca(V.h.childNodes(X),!0)),Qt?(Wt||V.h.va(X,V.a.Ca(nt)),V.Oa(Nt,X)):(V.h.Ea(X),dt||V.i.ma(X,V.i.H)),H=Qt)},null,{l:X}),{controlsDescendantBindings:!0}}},V.m.Ra[E]=!1,V.h.ea[E]=!0}Z("if"),Z("ifnot",!1,!0),Z("with",!0)}(),V.c.let={init:function(Z,E,I,B,X){return E=X.extend(E),V.Oa(E,Z),{controlsDescendantBindings:!0}}},V.h.ea.let=!0;var M={};V.c.options={init:function(Z){if(V.a.R(Z)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<Z.length;)Z.remove(0);return{controlsDescendantBindings:!0}},update:function(Z,E,I){function B(){return V.a.jb(Z.options,function(st){return st.selected})}function X(st,Et,Qt){var Wt=typeof Et;return Wt=="function"?Et(st):Wt=="string"?st[Et]:Qt}function _(st,Et){if(q&&H)V.i.ma(Z,V.i.H);else if(dt.length){var Qt=0<=V.a.A(dt,V.w.M(Et[0]));V.a.Zc(Et[0],Qt),q&&!Qt&&V.u.G(V.a.Fb,null,[Z,"change"])}}var P=Z.multiple,w=Z.length!=0&&P?Z.scrollTop:null,z=V.a.f(E()),H=I.get("valueAllowUnset")&&I.has("value"),nt=I.get("optionsIncludeDestroyed");E={};var $,dt=[];H||(P?dt=V.a.Mb(B(),V.w.M):0<=Z.selectedIndex&&dt.push(V.w.M(Z.options[Z.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),$=V.a.jb(z,function(st){return nt||st===t||st===null||!V.a.f(st._destroy)}),I.has("optionsCaption")&&(z=V.a.f(I.get("optionsCaption")),z!==null&&z!==t&&$.unshift(M)));var q=!1;if(E.beforeRemove=function(st){Z.removeChild(st)},z=_,I.has("optionsAfterRender")&&typeof I.get("optionsAfterRender")=="function"&&(z=function(st,Et){_(0,Et),V.u.G(I.get("optionsAfterRender"),null,[Et[0],st!==M?st:t])}),V.a.ec(Z,$,function(st,Et,Qt){return Qt.length&&(dt=!H&&Qt[0].selected?[V.w.M(Qt[0])]:[],q=!0),Et=Z.ownerDocument.createElement("option"),st===M?(V.a.Bb(Et,I.get("optionsCaption")),V.w.cb(Et,t)):(Qt=X(st,I.get("optionsValue"),st),V.w.cb(Et,V.a.f(Qt)),st=X(st,I.get("optionsText"),Qt),V.a.Bb(Et,st)),[Et]},E,z),!H){var at;P?at=dt.length&&B().length<dt.length:at=dt.length&&0<=Z.selectedIndex?V.w.M(Z.options[Z.selectedIndex])!==dt[0]:dt.length||0<=Z.selectedIndex,at&&V.u.G(V.a.Fb,null,[Z,"change"])}(H||V.S.Ya())&&V.i.ma(Z,V.i.H),V.a.wd(Z),w&&20<Math.abs(w-Z.scrollTop)&&(Z.scrollTop=w)}},V.c.options.$b=V.a.g.Z(),V.c.selectedOptions={init:function(Z,E,I){function B(){var P=E(),w=[];V.a.D(Z.getElementsByTagName("option"),function(z){z.selected&&w.push(V.w.M(z))}),V.m.eb(P,I,"selectedOptions",w)}function X(){var P=V.a.f(E()),w=Z.scrollTop;P&&typeof P.length=="number"&&V.a.D(Z.getElementsByTagName("option"),function(z){var H=0<=V.a.A(P,V.w.M(z));z.selected!=H&&V.a.Zc(z,H)}),Z.scrollTop=w}if(V.a.R(Z)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var _;V.i.subscribe(Z,V.i.H,function(){_?B():(V.a.B(Z,"change",B),_=V.o(X,null,{l:Z}))},null,{notifyImmediately:!0})},update:function(){}},V.m.wa.selectedOptions=!0,V.c.style={update:function(Z,E){var I=V.a.f(E()||{});V.a.P(I,function(B,X){if(X=V.a.f(X),(X===null||X===t||X===!1)&&(X=""),o)o(Z).css(B,X);else if(/^--/.test(B))Z.style.setProperty(B,X);else{B=B.replace(/-(\w)/g,function(P,w){return w.toUpperCase()});var _=Z.style[B];Z.style[B]=X,X===_||Z.style[B]!=_||isNaN(X)||(Z.style[B]=X+"px")}})}},V.c.submit={init:function(Z,E,I,B,X){if(typeof E()!="function")throw Error("The value for a submit binding must be a function");V.a.B(Z,"submit",function(_){var P,w=E();try{P=w.call(X.$data,Z)}finally{P!==!0&&(_.preventDefault?_.preventDefault():_.returnValue=!1)}})}},V.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(Z,E){V.a.Bb(Z,E())}},V.h.ea.text=!0,function(){if(e&&e.navigator){var Z=function($){if($)return parseFloat($[1])},E=e.navigator.userAgent,I,B,X,_,P;(I=e.opera&&e.opera.version&&parseInt(e.opera.version()))||(P=Z(E.match(/Edge\/([^ ]+)$/)))||Z(E.match(/Chrome\/([^ ]+)/))||(B=Z(E.match(/Version\/([^ ]+) Safari/)))||(X=Z(E.match(/Firefox\/([^ ]+)/)))||(_=V.a.W||Z(E.match(/MSIE ([^ ]+)/)))||(_=Z(E.match(/rv:([^ )]+)/)))}if(8<=_&&10>_)var w=V.a.g.Z(),z=V.a.g.Z(),H=function($){var dt=this.activeElement;(dt=dt&&V.a.g.get(dt,z))&&dt($)},nt=function($,dt){var q=$.ownerDocument;V.a.g.get(q,w)||(V.a.g.set(q,w,!0),V.a.B(q,"selectionchange",H)),V.a.g.set($,z,dt)};V.c.textInput={init:function($,dt,q){function at(ie,oe){V.a.B($,ie,oe)}function st(){var ie=V.a.f(dt());(ie===null||ie===t)&&(ie=""),kt!==t&&ie===kt?V.a.setTimeout(st,4):$.value!==ie&&(qt=!0,$.value=ie,qt=!1,Wt=$.value)}function Et(){Nt||(kt=$.value,Nt=V.a.setTimeout(Qt,4))}function Qt(){clearTimeout(Nt),kt=Nt=t;var ie=$.value;Wt!==ie&&(Wt=ie,V.m.eb(dt(),q,"textInput",ie))}var Wt=$.value,Nt,kt,Mt=V.a.W==9?Et:Qt,qt=!1;_&&at("keypress",Qt),11>_&&at("propertychange",function(ie){qt||ie.propertyName!=="value"||Mt(ie)}),_==8&&(at("keyup",Qt),at("keydown",Qt)),nt&&(nt($,Mt),at("dragend",Et)),(!_||9<=_)&&at("input",Mt),5>B&&V.a.R($)==="textarea"?(at("keydown",Et),at("paste",Et),at("cut",Et)):11>I?at("keydown",Et):4>X?(at("DOMAutoComplete",Qt),at("dragdrop",Qt),at("drop",Qt)):P&&$.type==="number"&&at("keydown",Et),at("change",Qt),at("blur",Qt),V.o(st,null,{l:$})}},V.m.wa.textInput=!0,V.c.textinput={preprocess:function($,dt,q){q("textInput",$)}}}(),V.c.uniqueName={init:function(Z,E){if(E()){var I="ko_unique_"+ ++V.c.uniqueName.rd;V.a.Yc(Z,I)}}},V.c.uniqueName.rd=0,V.c.using={init:function(Z,E,I,B,X){var _;return I.has("as")&&(_={as:I.get("as"),noChildContext:I.get("noChildContext")}),E=X.createChildContext(E,_),V.Oa(E,Z),{controlsDescendantBindings:!0}}},V.h.ea.using=!0,V.c.value={init:function(Z,E,I){var B=V.a.R(Z),X=B=="input";if(!X||Z.type!="checkbox"&&Z.type!="radio"){var _=[],P=I.get("valueUpdate"),w=!1,z=null;P&&(typeof P=="string"?_=[P]:_=V.a.wc(P),V.a.Pa(_,"change"));var H=function(){z=null,w=!1;var dt=E(),q=V.w.M(Z);V.m.eb(dt,I,"value",q)};!V.a.W||!X||Z.type!="text"||Z.autocomplete=="off"||Z.form&&Z.form.autocomplete=="off"||V.a.A(_,"propertychange")!=-1||(V.a.B(Z,"propertychange",function(){w=!0}),V.a.B(Z,"focus",function(){w=!1}),V.a.B(Z,"blur",function(){w&&H()})),V.a.D(_,function(dt){var q=H;V.a.Ud(dt,"after")&&(q=function(){z=V.w.M(Z),V.a.setTimeout(H,0)},dt=dt.substring(5)),V.a.B(Z,dt,q)});var nt;if(nt=X&&Z.type=="file"?function(){var dt=V.a.f(E());dt===null||dt===t||dt===""?Z.value="":V.u.G(H)}:function(){var dt=V.a.f(E()),q=V.w.M(Z);z!==null&&dt===z?V.a.setTimeout(nt,0):(dt!==q||q===t)&&(B==="select"?(q=I.get("valueAllowUnset"),V.w.cb(Z,dt,q),q||dt===V.w.M(Z)||V.u.G(H)):V.w.cb(Z,dt))},B==="select"){var $;V.i.subscribe(Z,V.i.H,function(){$?I.get("valueAllowUnset")?nt():H():(V.a.B(Z,"change",H),$=V.o(nt,null,{l:Z}))},null,{notifyImmediately:!0})}else V.a.B(Z,"change",H),V.o(nt,null,{l:Z})}else V.ib(Z,{checkedValue:E})},update:function(){}},V.m.wa.value=!0,V.c.visible={update:function(Z,E){var I=V.a.f(E()),B=Z.style.display!="none";I&&!B?Z.style.display="":!I&&B&&(Z.style.display="none")}},V.c.hidden={update:function(Z,E){V.c.visible.update(Z,function(){return!V.a.f(E())})}},function(Z){V.c[Z]={init:function(E,I,B,X,_){return V.c.event.init.call(this,E,function(){var P={};return P[Z]=I(),P},B,X,_)}}}("click"),V.ca=function(){},V.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},V.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},V.ca.prototype.makeTemplateSource=function(Z,E){if(typeof Z=="string"){E=E||n;var I=E.getElementById(Z);if(!I)throw Error("Cannot find template with ID "+Z);return new V.C.F(I)}if(Z.nodeType==1||Z.nodeType==8)return new V.C.ia(Z);throw Error("Unknown template type: "+Z)},V.ca.prototype.renderTemplate=function(Z,E,I,B){return Z=this.makeTemplateSource(Z,B),this.renderTemplateSource(Z,E,I,B)},V.ca.prototype.isTemplateRewritten=function(Z,E){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(Z,E).data("isRewritten")},V.ca.prototype.rewriteTemplate=function(Z,E,I){Z=this.makeTemplateSource(Z,I),E=E(Z.text()),Z.text(E),Z.data("isRewritten",!0)},V.b("templateEngine",V.ca),V.kc=function(){function Z(B,X,_,P){B=V.m.ac(B);for(var w=V.m.Ra,z=0;z<B.length;z++){var H=B[z].key;if(Object.prototype.hasOwnProperty.call(w,H)){var nt=w[H];if(typeof nt=="function"){if(H=nt(B[z].value))throw Error(H)}else if(!nt)throw Error("This template engine does not support the '"+H+"' binding within its templates")}}return _="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+V.m.vb(B,{valueAccessors:!0})+" } })()},'"+_.toLowerCase()+"')",P.createJavaScriptEvaluatorBlock(_)+X}var E=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,I=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(B,X,_){X.isTemplateRewritten(B,_)||X.rewriteTemplate(B,function(P){return V.kc.Ld(P,X)},_)},Ld:function(B,X){return B.replace(E,function(_,P,w,z,H){return Z(H,P,w,X)}).replace(I,function(_,P){return Z(P,"<!-- ko -->","#comment",X)})},md:function(B,X){return V.aa.Xb(function(_,P){var w=_.nextSibling;w&&w.nodeName.toLowerCase()===X&&V.ib(w,B,P)})}}}(),V.b("__tr_ambtns",V.kc.md),function(){V.C={},V.C.F=function(I){if(this.F=I){var B=V.a.R(I);this.ab=B==="script"?1:B==="textarea"?2:B=="template"&&I.content&&I.content.nodeType===11?3:4}},V.C.F.prototype.text=function(){var I=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[I];var B=arguments[0];I==="innerHTML"?V.a.fc(this.F,B):this.F[I]=B};var Z=V.a.g.Z()+"_";V.C.F.prototype.data=function(I){if(arguments.length===1)return V.a.g.get(this.F,Z+I);V.a.g.set(this.F,Z+I,arguments[1])};var E=V.a.g.Z();V.C.F.prototype.nodes=function(){var I=this.F;if(arguments.length==0){var B=V.a.g.get(I,E)||{},X=B.lb||(this.ab===3?I.content:this.ab===4?I:t);if(!X||B.jd){var _=this.text();_&&_!==B.bb&&(X=V.a.Md(_,I.ownerDocument),V.a.g.set(I,E,{lb:X,bb:_,jd:!0}))}return X}B=arguments[0],this.ab!==t&&this.text(""),V.a.g.set(I,E,{lb:B})},V.C.ia=function(I){this.F=I},V.C.ia.prototype=new V.C.F,V.C.ia.prototype.constructor=V.C.ia,V.C.ia.prototype.text=function(){if(arguments.length==0){var I=V.a.g.get(this.F,E)||{};return I.bb===t&&I.lb&&(I.bb=I.lb.innerHTML),I.bb}V.a.g.set(this.F,E,{bb:arguments[0]})},V.b("templateSources",V.C),V.b("templateSources.domElement",V.C.F),V.b("templateSources.anonymousTemplate",V.C.ia)}(),function(){function Z(z,H,nt){var $;for(H=V.h.nextSibling(H);z&&($=z)!==H;)z=V.h.nextSibling($),nt($,z)}function E(z,H){if(z.length){var nt=z[0],$=z[z.length-1],dt=nt.parentNode,q=V.ga.instance,at=q.preprocessNode;if(at){if(Z(nt,$,function(st,Et){var Qt=st.previousSibling,Wt=at.call(q,st);Wt&&(st===nt&&(nt=Wt[0]||Et),st===$&&($=Wt[Wt.length-1]||Qt))}),z.length=0,!nt)return;nt===$?z.push(nt):(z.push(nt,$),V.a.Ua(z,dt))}Z(nt,$,function(st){st.nodeType!==1&&st.nodeType!==8||V.vc(H,st)}),Z(nt,$,function(st){st.nodeType!==1&&st.nodeType!==8||V.aa.cd(st,[H])}),V.a.Ua(z,dt)}}function I(z){return z.nodeType?z:0<z.length?z[0]:null}function B(z,H,nt,$,dt){dt=dt||{};var q=(z&&I(z)||nt||{}).ownerDocument,at=dt.templateEngine||_;if(V.kc.xd(nt,at,q),nt=at.renderTemplate(nt,$,dt,q),typeof nt.length!="number"||0<nt.length&&typeof nt[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(q=!1,H){case"replaceChildren":V.h.va(z,nt),q=!0;break;case"replaceNode":V.a.Xc(z,nt),q=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+H)}return q&&(E(nt,$),dt.afterRender&&V.u.G(dt.afterRender,null,[nt,$[dt.as||"$data"]]),H=="replaceChildren"&&V.i.ma(z,V.i.H)),nt}function X(z,H,nt){return V.O(z)?z():typeof z=="function"?z(H,nt):z}var _;V.gc=function(z){if(z!=t&&!(z instanceof V.ca))throw Error("templateEngine must inherit from ko.templateEngine");_=z},V.dc=function(z,H,nt,$,dt){if(nt=nt||{},(nt.templateEngine||_)==t)throw Error("Set a template engine before calling renderTemplate");if(dt=dt||"replaceChildren",$){var q=I($);return V.$(function(){var st=H&&H instanceof V.fa?H:new V.fa(H,null,null,null,{exportDependencies:!0}),at=X(z,st.$data,st),st=B($,dt,at,st,nt);dt=="replaceNode"&&($=st,q=I($))},null,{Sa:function(){return!q||!V.a.Sb(q)},l:q&&dt=="replaceNode"?q.parentNode:q})}return V.aa.Xb(function(at){V.dc(z,H,nt,at,"replaceNode")})},V.Qd=function(z,H,nt,$,dt){function q(kt,Mt){V.u.G(V.a.ec,null,[$,kt,st,nt,at,Mt]),V.i.ma($,V.i.H)}function at(kt,Mt){E(Mt,Et),nt.afterRender&&nt.afterRender(Mt,kt),Et=null}function st(kt,Mt){Et=dt.createChildContext(kt,{as:Qt,noChildContext:nt.noChildContext,extend:function(ie){ie.$index=Mt,Qt&&(ie[Qt+"Index"]=Mt)}});var qt=X(z,kt,Et);return B($,"ignoreTargetNode",qt,Et,nt)}var Et,Qt=nt.as,Wt=nt.includeDestroyed===!1||V.options.foreachHidesDestroyed&&!nt.includeDestroyed;if(Wt||nt.beforeRemove||!V.Pc(H))return V.$(function(){var kt=V.a.f(H)||[];typeof kt.length>"u"&&(kt=[kt]),Wt&&(kt=V.a.jb(kt,function(Mt){return Mt===t||Mt===null||!V.a.f(Mt._destroy)})),q(kt)},null,{l:$});q(H.v());var Nt=H.subscribe(function(kt){q(H(),kt)},null,"arrayChange");return Nt.l($),Nt};var P=V.a.g.Z(),w=V.a.g.Z();V.c.template={init:function(z,H){var nt=V.a.f(H());if(typeof nt=="string"||"name"in nt)V.h.Ea(z);else if("nodes"in nt){if(nt=nt.nodes||[],V.O(nt))throw Error('The "nodes" option must be a plain, non-observable array.');var $=nt[0]&&nt[0].parentNode;$&&V.a.g.get($,w)||($=V.a.Yb(nt),V.a.g.set($,w,!0)),new V.C.ia(z).nodes($)}else if(nt=V.h.childNodes(z),0<nt.length)$=V.a.Yb(nt),new V.C.ia(z).nodes($);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,H,nt,$,dt){var q=H();H=V.a.f(q),nt=!0,$=null,typeof H=="string"?H={}:(q="name"in H?H.name:z,"if"in H&&(nt=V.a.f(H.if)),nt&&"ifnot"in H&&(nt=!V.a.f(H.ifnot)),nt&&!q&&(nt=!1)),"foreach"in H?$=V.Qd(q,nt&&H.foreach||[],H,z,dt):nt?(nt=dt,"data"in H&&(nt=dt.createChildContext(H.data,{as:H.as,noChildContext:H.noChildContext,exportDependencies:!0})),$=V.dc(q,nt,H,z)):V.h.Ea(z),dt=$,(H=V.a.g.get(z,P))&&typeof H.s=="function"&&H.s(),V.a.g.set(z,P,!dt||dt.ja&&!dt.ja()?t:dt)}},V.m.Ra.template=function(z){return z=V.m.ac(z),z.length==1&&z[0].unknown||V.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},V.h.ea.template=!0}(),V.b("setTemplateEngine",V.gc),V.b("renderTemplate",V.dc),V.a.Kc=function(Z,E,I){if(Z.length&&E.length){var B,X,_,P,w;for(B=X=0;(!I||B<I)&&(P=Z[X]);++X){for(_=0;w=E[_];++_)if(P.value===w.value){P.moved=w.index,w.moved=P.index,E.splice(_,1),B=_=0;break}B+=_}}},V.a.Pb=function(){function Z(E,I,B,X,_){var P=Math.min,w=Math.max,z=[],H,nt=E.length,$,dt=I.length,q=dt-nt||1,at=nt+dt+1,st,Et,Qt;for(H=0;H<=nt;H++)for(Et=st,z.push(st=[]),Qt=P(dt,H+q),$=w(0,H-1);$<=Qt;$++)st[$]=$?H?E[H-1]===I[$-1]?Et[$-1]:P(Et[$]||at,st[$-1]||at)+1:$+1:H+1;for(P=[],w=[],q=[],H=nt,$=dt;H||$;)dt=z[H][$]-1,$&&dt===z[H][$-1]?w.push(P[P.length]={status:B,value:I[--$],index:$}):H&&dt===z[H-1][$]?q.push(P[P.length]={status:X,value:E[--H],index:H}):(--$,--H,_.sparse||P.push({status:"retained",value:I[$]}));return V.a.Kc(q,w,!_.dontLimitMoves&&10*nt),P.reverse()}return function(E,I,B){return B=typeof B=="boolean"?{dontLimitMoves:B}:B||{},E=E||[],I=I||[],E.length<I.length?Z(E,I,"added","deleted",B):Z(I,E,"deleted","added",B)}}(),V.b("utils.compareArrays",V.a.Pb),function(){function Z(B,X,_,P,w){var z=[],H=V.$(function(){var nt=X(_,w,V.a.Ua(z,B))||[];0<z.length&&(V.a.Xc(z,nt),P&&V.u.G(P,null,[_,nt,w])),z.length=0,V.a.Nb(z,nt)},null,{l:B,Sa:function(){return!V.a.kd(z)}});return{Y:z,$:H.ja()?H:t}}var E=V.a.g.Z(),I=V.a.g.Z();V.a.ec=function(B,X,_,P,w,z){function H(We){qt={Aa:We,pb:V.ta(Et++)},at.push(qt),q||Mt.push(qt)}function nt(We){qt=dt[We],Et!==qt.pb.v()&&kt.push(qt),qt.pb(Et++),V.a.Ua(qt.Y,B),at.push(qt)}function $(We,Vn){if(We)for(var Ct=0,_t=Vn.length;Ct<_t;Ct++)V.a.D(Vn[Ct].Y,function(Je){We(Je,Ct,Vn[Ct].Aa)})}X=X||[],typeof X.length>"u"&&(X=[X]),P=P||{};var dt=V.a.g.get(B,E),q=!dt,at=[],st=0,Et=0,Qt=[],Wt=[],Nt=[],kt=[],Mt=[],qt,ie=0;if(q)V.a.D(X,H);else{if(!z||dt&&dt._countWaitingForRemove){var oe=V.a.Mb(dt,function(We){return We.Aa});z=V.a.Pb(oe,X,{dontLimitMoves:P.dontLimitMoves,sparse:!0})}for(var oe=0,He,rn,de;He=z[oe];oe++)switch(rn=He.moved,de=He.index,He.status){case"deleted":for(;st<de;)nt(st++);rn===t&&(qt=dt[st],qt.$&&(qt.$.s(),qt.$=t),V.a.Ua(qt.Y,B).length&&(P.beforeRemove&&(at.push(qt),ie++,qt.Aa===I?qt=null:Nt.push(qt)),qt&&Qt.push.apply(Qt,qt.Y))),st++;break;case"added":for(;Et<de;)nt(st++);rn!==t?(Wt.push(at.length),nt(rn)):H(He.value)}for(;Et<X.length;)nt(st++);at._countWaitingForRemove=ie}V.a.g.set(B,E,at),$(P.beforeMove,kt),V.a.D(Qt,P.beforeRemove?V.oa:V.removeNode);var zt,ke,Ve;try{Ve=B.ownerDocument.activeElement}catch{}if(Wt.length)for(;(oe=Wt.shift())!=t;){for(qt=at[oe],zt=t;oe;)if((ke=at[--oe].Y)&&ke.length){zt=ke[ke.length-1];break}for(X=0;st=qt.Y[X];zt=st,X++)V.h.Wb(B,st,zt)}for(oe=0;qt=at[oe];oe++){for(qt.Y||V.a.extend(qt,Z(B,_,qt.Aa,w,qt.pb)),X=0;st=qt.Y[X];zt=st,X++)V.h.Wb(B,st,zt);!qt.Ed&&w&&(w(qt.Aa,qt.Y,qt.pb),qt.Ed=!0,zt=qt.Y[qt.Y.length-1])}for(Ve&&B.ownerDocument.activeElement!=Ve&&Ve.focus(),$(P.beforeRemove,Nt),oe=0;oe<Nt.length;++oe)Nt[oe].Aa=I;$(P.afterMove,kt),$(P.afterAdd,Mt)}}(),V.b("utils.setDomNodeChildrenFromArrayMapping",V.a.ec),V.ba=function(){this.allowTemplateRewriting=!1},V.ba.prototype=new V.ca,V.ba.prototype.constructor=V.ba,V.ba.prototype.renderTemplateSource=function(Z,E,I,B){return(E=!(9>V.a.W)&&Z.nodes?Z.nodes():null)?V.a.la(E.cloneNode(!0).childNodes):(Z=Z.text(),V.a.ua(Z,B))},V.ba.Ma=new V.ba,V.gc(V.ba.Ma),V.b("nativeTemplateEngine",V.ba),function(){V.$a=function(){var E=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(I,B,X,_){if(_=_||n,X=X||{},2>E)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var P=I.data("precompiled");return P||(P=I.text()||"",P=o.template(null,"{{ko_with $item.koBindingContext}}"+P+"{{/ko_with}}"),I.data("precompiled",P)),I=[B.$data],B=o.extend({koBindingContext:B},X.templateOptions),B=o.tmpl(P,I,B),B.appendTo(_.createElement("div")),o.fragments={},B},this.createJavaScriptEvaluatorBlock=function(I){return"{{ko_code ((function() { return "+I+" })()) }}"},this.addTemplate=function(I,B){n.write("<script type='text/html' id='"+I+"'>"+B+"<\/script>")},0<E&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},V.$a.prototype=new V.ca,V.$a.prototype.constructor=V.$a;var Z=new V.$a;0<Z.Hd&&V.gc(Z),V.b("jqueryTmplTemplateEngine",V.$a)}()})})()})()})();var $9e=ko;typeof window<"u"?(ko=window.ko,typeof mD<"u"?window.ko=mD:delete window.ko):(ko=global.ko,typeof mD<"u"?global.ko=mD:delete global.ko);var dg=$9e;var QWa=b(W(),1);/** * @license * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 * Copyright (c) Steve Sanderson * MIT license - */var grt="__knockoutObservables",Ert="__knockoutSubscribable";function lkt(t,e){if(!t)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=rkt(t,!0);return e=e||Object.getOwnPropertyNames(t),e.forEach(function(o){if(!(o===grt||o===Ert)&&!(o in i)){var a=t[o],s=a instanceof Array,l=n.isObservable(a)?a:s?n.observableArray(a):n.observable(a);Object.defineProperty(t,o,{configurable:!0,enumerable:!0,get:l,set:n.isWriteableObservable(l)?l:void 0}),i[o]=l,s&&e5e(n,l)}}),t}function rkt(t,e){var n=t[grt];return!n&&e&&(n={},Object.defineProperty(t,grt,{value:n})),n}function t5e(t,e,n){var i=this,o={owner:t,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return t[e]=i.computed(o),lkt.call(i,t,[e]),t}function e5e(t,e){var n=null;t.computed(function(){n&&(n.dispose(),n=null);var i=e();i instanceof Array&&(n=n5e(t,e,i))})}function n5e(t,e,n){var i=i5e(t,n);return i.subscribe(e)}function i5e(t,e){var n=e[Ert];if(!n){n=new t.subscribable,Object.defineProperty(e,Ert,{value:n});var i={};o5e(e,n,i),a5e(t,e,n,i)}return n}function o5e(t,e,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=t[i];t[i]=function(){var a=o.apply(this,arguments);return n.pause!==!0&&e.notifySubscribers(this),a}})}function a5e(t,e,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(e,o,{enumerable:!1,value:function(){var a;i.pause=!0;try{a=t.observableArray.fn[o].apply(t.observableArray(e),arguments)}finally{i.pause=!1}return n.notifySubscribers(e),a}})})}function dkt(t,e){if(!t)return null;var n=rkt(t,!1);return n&&n[e]||null}function s5e(t,e){var n=dkt(t,e);n&&n.valueHasMutated()}function l5e(t){t.track=lkt,t.getObservable=dkt,t.valueHasMutated=s5e,t.defineProperty=t5e}var hD={attachToKo:l5e};var YWa=R(W(),1),ckt="http://www.w3.org/2000/svg",mkt="cesium-svgPath-svg",r5e={register:function(t){t.bindingHandlers.cesiumSvgPath={init:function(e,n){let i=document.createElementNS(ckt,"svg:svg");i.setAttribute("class",mkt);let o=document.createElementNS(ckt,"path");return i.appendChild(o),t.virtualElements.setDomNodeChildren(e,[i]),t.computed({read:function(){let a=t.unwrap(n());o.setAttribute("d",t.unwrap(a.path));let s=t.unwrap(a.width),l=t.unwrap(a.height);i.setAttribute("width",s),i.setAttribute("height",l),i.setAttribute("viewBox",`0 0 ${s} ${l}`),a.css&&i.setAttribute("class",`${mkt} ${t.unwrap(a.css)}`)},disposeWhenNodeIsRemoved:e}),{controlsDescendantBindings:!0}}},t.virtualElements.allowedBindings.cesiumSvgPath=!0}},pD=r5e;hD.attachToKo(dg);pD.register(dg);var Lt=dg;function uD(t){c(t)||(t=new kZ),this._clock=t,this._eventHelper=new rl,this._eventHelper.add(t.onTick,this.synchronize,this),this.systemTime=Lt.observable(rt.now()),this.systemTime.equalityComparer=rt.equals,this.startTime=Lt.observable(t.startTime),this.startTime.equalityComparer=rt.equals,this.startTime.subscribe(function(e){t.startTime=e,this.synchronize()},this),this.stopTime=Lt.observable(t.stopTime),this.stopTime.equalityComparer=rt.equals,this.stopTime.subscribe(function(e){t.stopTime=e,this.synchronize()},this),this.currentTime=Lt.observable(t.currentTime),this.currentTime.equalityComparer=rt.equals,this.currentTime.subscribe(function(e){t.currentTime=e,this.synchronize()},this),this.multiplier=Lt.observable(t.multiplier),this.multiplier.subscribe(function(e){t.multiplier=e,this.synchronize()},this),this.clockStep=Lt.observable(t.clockStep),this.clockStep.subscribe(function(e){t.clockStep=e,this.synchronize()},this),this.clockRange=Lt.observable(t.clockRange),this.clockRange.subscribe(function(e){t.clockRange=e,this.synchronize()},this),this.canAnimate=Lt.observable(t.canAnimate),this.canAnimate.subscribe(function(e){t.canAnimate=e,this.synchronize()},this),this.shouldAnimate=Lt.observable(t.shouldAnimate),this.shouldAnimate.subscribe(function(e){t.shouldAnimate=e,this.synchronize()},this),Lt.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(uD.prototype,{clock:{get:function(){return this._clock}}});uD.prototype.synchronize=function(){let t=this._clock;this.systemTime=rt.now(),this.startTime=t.startTime,this.stopTime=t.stopTime,this.currentTime=t.currentTime,this.multiplier=t.multiplier,this.clockStep=t.clockStep,this.clockRange=t.clockRange,this.canAnimate=t.canAnimate,this.shouldAnimate=t.shouldAnimate};uD.prototype.isDestroyed=function(){return!1};uD.prototype.destroy=function(){this._eventHelper.removeAll(),At(this)};var ZD=uD;var vWa=R(W(),1);function d5e(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,Ut.throwInstantiationError()}var Crt=d5e;var qWa=R(W(),1);var VD={};VD.createCheckbox=function(t,e,n){let i=document.createElement("div"),o=document.createElement("label"),a=document.createElement("input");a.type="checkbox";let s=`checked: ${e}`;return c(n)&&(s+=`, enable: ${n}`),a.setAttribute("data-bind",s),o.appendChild(a),o.appendChild(document.createTextNode(t)),i.appendChild(o),i};VD.createSection=function(t,e,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),t.appendChild(o);let a=document.createElement("h3");a.className="cesium-cesiumInspector-sectionHeader",a.appendChild(document.createTextNode(e)),a.setAttribute("data-bind",`click: ${i}`),o.appendChild(a);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};VD.createRangeInput=function(t,e,n,i,o,a){a=f(a,e);let s=document.createElement("input");s.setAttribute("data-bind",`value: ${a}`),s.type="number";let l=document.createElement("input");l.type="range",l.min=n,l.max=i,l.step=f(o,"any"),l.setAttribute("data-bind",`valueUpdate: "input", value: ${e}`);let r=document.createElement("div");r.appendChild(l);let d=document.createElement("div");return d.className="cesium-cesiumInspector-slider",d.appendChild(document.createTextNode(t)),d.appendChild(s),d.appendChild(r),d};VD.createButton=function(t,e,n){let i=document.createElement("button");i.type="button",i.textContent=t,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${e}`;return c(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var gd=VD;var ofa=R(W(),1);function hkt(t,e){this._command=t,e=f(e,f.EMPTY_OBJECT),this.toggled=f(e.toggled,!1),this.tooltip=f(e.tooltip,""),Lt.track(this,["toggled","tooltip"])}Object.defineProperties(hkt.prototype,{command:{get:function(){return this._command}}});var YU=hkt;var cfa=R(W(),1);function c5e(t,e){e=f(e,!0);let n=new It,i=new It;function o(){let a={args:arguments,cancel:!1},s;return n.raiseEvent(a),a.cancel||(s=t.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=e,Lt.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var bi=c5e;var pfa=R(W(),1);function m5e(t,e,n,i,o){return n.call(i,t[e]),Lt.getObservable(t,e).subscribe(n,i,o)}var od=m5e;var Tfa=R(W(),1);var Rfa=R(W(),1);function h5e(t){return function(e){let n=t._scene.pick(e.position);c(n)&&n.primitive instanceof Pr&&(t.tileset=n.primitive),t.pickActive=!1}}function ukt(t,e){e?t._eventHandler.setInputAction(function(n){let i=t._scene.pick(n.endPosition);c(i)&&i.primitive instanceof Pr&&(t.tileset=i.primitive)},Zi.MOUSE_MOVE):(t._eventHandler.removeInputAction(Zi.MOUSE_MOVE),t.picking=t.picking)}var p5e={maximumFractionDigits:3};function bD(t){let e=t/1048576;return e<1?e.toLocaleString(void 0,p5e):Math.round(e).toLocaleString()}function RD(t,e){if(!c(t))return"";let n=e?t._statisticsPerPass[ns.PICK]:t._statisticsPerPass[ns.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",e||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${bD(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${bD(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${bD(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function Zkt(){let t=jo.statistics;return` + */var grt="__knockoutObservables",Ert="__knockoutSubscribable";function l2t(t,e){if(!t)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=r2t(t,!0);return e=e||Object.getOwnPropertyNames(t),e.forEach(function(o){if(!(o===grt||o===Ert)&&!(o in i)){var a=t[o],s=a instanceof Array,l=n.isObservable(a)?a:s?n.observableArray(a):n.observable(a);Object.defineProperty(t,o,{configurable:!0,enumerable:!0,get:l,set:n.isWriteableObservable(l)?l:void 0}),i[o]=l,s&&e5e(n,l)}}),t}function r2t(t,e){var n=t[grt];return!n&&e&&(n={},Object.defineProperty(t,grt,{value:n})),n}function t5e(t,e,n){var i=this,o={owner:t,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return t[e]=i.computed(o),l2t.call(i,t,[e]),t}function e5e(t,e){var n=null;t.computed(function(){n&&(n.dispose(),n=null);var i=e();i instanceof Array&&(n=n5e(t,e,i))})}function n5e(t,e,n){var i=i5e(t,n);return i.subscribe(e)}function i5e(t,e){var n=e[Ert];if(!n){n=new t.subscribable,Object.defineProperty(e,Ert,{value:n});var i={};o5e(e,n,i),a5e(t,e,n,i)}return n}function o5e(t,e,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=t[i];t[i]=function(){var a=o.apply(this,arguments);return n.pause!==!0&&e.notifySubscribers(this),a}})}function a5e(t,e,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(e,o,{enumerable:!1,value:function(){var a;i.pause=!0;try{a=t.observableArray.fn[o].apply(t.observableArray(e),arguments)}finally{i.pause=!1}return n.notifySubscribers(e),a}})})}function d2t(t,e){if(!t)return null;var n=r2t(t,!1);return n&&n[e]||null}function s5e(t,e){var n=d2t(t,e);n&&n.valueHasMutated()}function l5e(t){t.track=l2t,t.getObservable=d2t,t.valueHasMutated=s5e,t.defineProperty=t5e}var hD={attachToKo:l5e};var YWa=b(W(),1),c2t="http://www.w3.org/2000/svg",m2t="cesium-svgPath-svg",r5e={register:function(t){t.bindingHandlers.cesiumSvgPath={init:function(e,n){let i=document.createElementNS(c2t,"svg:svg");i.setAttribute("class",m2t);let o=document.createElementNS(c2t,"path");return i.appendChild(o),t.virtualElements.setDomNodeChildren(e,[i]),t.computed({read:function(){let a=t.unwrap(n());o.setAttribute("d",t.unwrap(a.path));let s=t.unwrap(a.width),l=t.unwrap(a.height);i.setAttribute("width",s),i.setAttribute("height",l),i.setAttribute("viewBox",`0 0 ${s} ${l}`),a.css&&i.setAttribute("class",`${m2t} ${t.unwrap(a.css)}`)},disposeWhenNodeIsRemoved:e}),{controlsDescendantBindings:!0}}},t.virtualElements.allowedBindings.cesiumSvgPath=!0}},pD=r5e;hD.attachToKo(dg);pD.register(dg);var Lt=dg;function VD(t){c(t)||(t=new ku),this._clock=t,this._eventHelper=new rl,this._eventHelper.add(t.onTick,this.synchronize,this),this.systemTime=Lt.observable(rt.now()),this.systemTime.equalityComparer=rt.equals,this.startTime=Lt.observable(t.startTime),this.startTime.equalityComparer=rt.equals,this.startTime.subscribe(function(e){t.startTime=e,this.synchronize()},this),this.stopTime=Lt.observable(t.stopTime),this.stopTime.equalityComparer=rt.equals,this.stopTime.subscribe(function(e){t.stopTime=e,this.synchronize()},this),this.currentTime=Lt.observable(t.currentTime),this.currentTime.equalityComparer=rt.equals,this.currentTime.subscribe(function(e){t.currentTime=e,this.synchronize()},this),this.multiplier=Lt.observable(t.multiplier),this.multiplier.subscribe(function(e){t.multiplier=e,this.synchronize()},this),this.clockStep=Lt.observable(t.clockStep),this.clockStep.subscribe(function(e){t.clockStep=e,this.synchronize()},this),this.clockRange=Lt.observable(t.clockRange),this.clockRange.subscribe(function(e){t.clockRange=e,this.synchronize()},this),this.canAnimate=Lt.observable(t.canAnimate),this.canAnimate.subscribe(function(e){t.canAnimate=e,this.synchronize()},this),this.shouldAnimate=Lt.observable(t.shouldAnimate),this.shouldAnimate.subscribe(function(e){t.shouldAnimate=e,this.synchronize()},this),Lt.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(VD.prototype,{clock:{get:function(){return this._clock}}});VD.prototype.synchronize=function(){let t=this._clock;this.systemTime=rt.now(),this.startTime=t.startTime,this.stopTime=t.stopTime,this.currentTime=t.currentTime,this.multiplier=t.multiplier,this.clockStep=t.clockStep,this.clockRange=t.clockRange,this.canAnimate=t.canAnimate,this.shouldAnimate=t.shouldAnimate};VD.prototype.isDestroyed=function(){return!1};VD.prototype.destroy=function(){this._eventHelper.removeAll(),At(this)};var uD=VD;var vWa=b(W(),1);function d5e(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,Ut.throwInstantiationError()}var Crt=d5e;var qWa=b(W(),1);var ZD={};ZD.createCheckbox=function(t,e,n){let i=document.createElement("div"),o=document.createElement("label"),a=document.createElement("input");a.type="checkbox";let s=`checked: ${e}`;return c(n)&&(s+=`, enable: ${n}`),a.setAttribute("data-bind",s),o.appendChild(a),o.appendChild(document.createTextNode(t)),i.appendChild(o),i};ZD.createSection=function(t,e,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),t.appendChild(o);let a=document.createElement("h3");a.className="cesium-cesiumInspector-sectionHeader",a.appendChild(document.createTextNode(e)),a.setAttribute("data-bind",`click: ${i}`),o.appendChild(a);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};ZD.createRangeInput=function(t,e,n,i,o,a){a=f(a,e);let s=document.createElement("input");s.setAttribute("data-bind",`value: ${a}`),s.type="number";let l=document.createElement("input");l.type="range",l.min=n,l.max=i,l.step=f(o,"any"),l.setAttribute("data-bind",`valueUpdate: "input", value: ${e}`);let r=document.createElement("div");r.appendChild(l);let d=document.createElement("div");return d.className="cesium-cesiumInspector-slider",d.appendChild(document.createTextNode(t)),d.appendChild(s),d.appendChild(r),d};ZD.createButton=function(t,e,n){let i=document.createElement("button");i.type="button",i.textContent=t,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${e}`;return c(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var gd=ZD;var ofa=b(W(),1);function h2t(t,e){this._command=t,e=f(e,f.EMPTY_OBJECT),this.toggled=f(e.toggled,!1),this.tooltip=f(e.tooltip,""),Lt.track(this,["toggled","tooltip"])}Object.defineProperties(h2t.prototype,{command:{get:function(){return this._command}}});var YU=h2t;var cfa=b(W(),1);function c5e(t,e){e=f(e,!0);let n=new It,i=new It;function o(){let a={args:arguments,cancel:!1},s;return n.raiseEvent(a),a.cancel||(s=t.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=e,Lt.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Ri=c5e;var pfa=b(W(),1);function m5e(t,e,n,i,o){return n.call(i,t[e]),Lt.getObservable(t,e).subscribe(n,i,o)}var od=m5e;var Sfa=b(W(),1);var bfa=b(W(),1);function h5e(t){return function(e){let n=t._scene.pick(e.position);c(n)&&n.primitive instanceof Pr&&(t.tileset=n.primitive),t.pickActive=!1}}function V2t(t,e){e?t._eventHandler.setInputAction(function(n){let i=t._scene.pick(n.endPosition);c(i)&&i.primitive instanceof Pr&&(t.tileset=i.primitive)},ui.MOUSE_MOVE):(t._eventHandler.removeInputAction(ui.MOUSE_MOVE),t.picking=t.picking)}var p5e={maximumFractionDigits:3};function RD(t){let e=t/1048576;return e<1?e.toLocaleString(void 0,p5e):Math.round(e).toLocaleString()}function bD(t,e){if(!c(t))return"";let n=e?t._statisticsPerPass[ns.PICK]:t._statisticsPerPass[ns.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",e||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${RD(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${RD(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${RD(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function u2t(){let t=jo.statistics;return` <ul class="cesium-cesiumInspector-statistics"> - <li><strong>Geometry Memory (MB): </strong>${bD(t.geometryByteLength)}</li> - <li><strong>Texture Memory (MB): </strong>${bD(t.texturesByteLength)}</li> + <li><strong>Geometry Memory (MB): </strong>${RD(t.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${RD(t.texturesByteLength)}</li> </ul> - `}var u5e=[{text:"Highlight",value:Nm.HIGHLIGHT},{text:"Replace",value:Nm.REPLACE},{text:"Mix",value:Nm.MIX}],pkt=new v(1,1,0,.4),Z5e=new v,l4=new v;function ad(t,e){let n=this,i=t.canvas;this._eventHandler=new sp(i),this._scene=t,this._performanceContainer=e,this._canvas=i,this._performanceDisplay=new bW({container:e}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,Lt.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=Lt.observable({}),this.properties=[],Lt.defineProperty(this,"properties",function(){let H=[],nt=n._properties();for(let $ in nt)nt.hasOwnProperty($)&&H.push($);return H});let o=Lt.observable();Lt.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(H){o(H),c(n._tileset)&&(n._tileset.dynamicScreenSpaceError=H)}}),this.dynamicScreenSpaceError=!1;let a=Lt.observable();Lt.defineProperty(this,"colorBlendMode",{get:function(){return a()},set:function(H){a(H),c(n._tileset)&&(n._tileset.colorBlendMode=H,n._scene.requestRender())}}),this.colorBlendMode=Nm.HIGHLIGHT;let s=Lt.observable(),l=Lt.observable();Lt.defineProperty(this,"picking",{get:function(){return l()},set:function(H){l(H),H?n._eventHandler.setInputAction(function(nt){let $=t.pick(nt.endPosition);if($ instanceof Fr?(n.feature=$,n.tile=$.content.tile):c($)&&c($.content)?(n.feature=void 0,n.tile=$.content.tile):(n.feature=void 0,n.tile=void 0),!!c(n._tileset)){if(s&&c($)&&c($.content)){let dt;t.pickPositionSupported&&(dt=t.pickPosition(nt.endPosition),c(dt)&&(n._tileset.debugPickPosition=dt)),n._tileset.debugPickedTile=$.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},Zi.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(Zi.MOUSE_MOVE))}}),this.picking=!0;let r=Lt.observable();Lt.defineProperty(this,"colorize",{get:function(){return r()},set:function(H){r(H),c(n._tileset)&&(n._tileset.debugColorizeTiles=H,n._scene.requestRender())}}),this.colorize=!1;let d=Lt.observable();Lt.defineProperty(this,"wireframe",{get:function(){return d()},set:function(H){d(H),c(n._tileset)&&(n._tileset.debugWireframe=H,n._scene.requestRender())}}),this.wireframe=!1;let m=Lt.observable();Lt.defineProperty(this,"showBoundingVolumes",{get:function(){return m()},set:function(H){m(H),c(n._tileset)&&(n._tileset.debugShowBoundingVolume=H,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=Lt.observable();Lt.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(H){h(H),c(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=H,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let Z=Lt.observable();Lt.defineProperty(this,"showRequestVolumes",{get:function(){return Z()},set:function(H){Z(H),c(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=H,n._scene.requestRender())}}),this.showRequestVolumes=!1;let b=Lt.observable();Lt.defineProperty(this,"freezeFrame",{get:function(){return b()},set:function(H){b(H),c(n._tileset)&&(n._tileset.debugFreezeFrame=H,n._scene.debugShowFrustumPlanes=H,n._scene.requestRender())}}),this.freezeFrame=!1,Lt.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(H){s(H),c(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=H,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let u=Lt.observable();Lt.defineProperty(this,"showGeometricError",{get:function(){return u()},set:function(H){u(H),c(n._tileset)&&(n._tileset.debugShowGeometricError=H,n._scene.requestRender())}}),this.showGeometricError=!1;let F=Lt.observable();Lt.defineProperty(this,"showRenderingStatistics",{get:function(){return F()},set:function(H){F(H),c(n._tileset)&&(n._tileset.debugShowRenderingStatistics=H,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let U=Lt.observable();Lt.defineProperty(this,"showMemoryUsage",{get:function(){return U()},set:function(H){U(H),c(n._tileset)&&(n._tileset.debugShowMemoryUsage=H,n._scene.requestRender())}}),this.showMemoryUsage=!1;let G=Lt.observable();Lt.defineProperty(this,"showUrl",{get:function(){return G()},set:function(H){G(H),c(n._tileset)&&(n._tileset.debugShowUrl=H,n._scene.requestRender())}}),this.showUrl=!1;let A=Lt.observable();Lt.defineProperty(this,"maximumScreenSpaceError",{get:function(){return A()},set:function(H){H=Number(H),isNaN(H)||(A(H),c(n._tileset)&&(n._tileset.maximumScreenSpaceError=H))}}),this.maximumScreenSpaceError=16;let T=Lt.observable();Lt.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return T()},set:function(H){H=Number(H),isNaN(H)||(T(H),c(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,Lt.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(T(),1/6)},set:function(H){let nt=Math.pow(H,6);T(nt),c(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=nt)}});let g=Lt.observable();Lt.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return g()},set:function(H){H=Number(H),isNaN(H)||(g(H),c(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=H))}}),this.dynamicScreenSpaceErrorFactor=24;let C=h5e(this),y=Lt.observable();Lt.defineProperty(this,"pickActive",{get:function(){return y()},set:function(H){y(H),H?n._eventHandler.setInputAction(C,Zi.LEFT_CLICK):n._eventHandler.removeInputAction(Zi.LEFT_CLICK)}});let Y=Lt.observable();Lt.defineProperty(this,"pointCloudShading",{get:function(){return Y()},set:function(H){Y(H),c(n._tileset)&&(n._tileset.pointCloudShading.attenuation=H)}}),this.pointCloudShading=!1;let Q=Lt.observable();Lt.defineProperty(this,"geometricErrorScale",{get:function(){return Q()},set:function(H){H=Number(H),isNaN(H)||(Q(H),c(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=H))}}),this.geometricErrorScale=1;let J=Lt.observable();Lt.defineProperty(this,"maximumAttenuation",{get:function(){return J()},set:function(H){H=Number(H),isNaN(H)||(J(H),c(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=H===0?void 0:H))}}),this.maximumAttenuation=0;let M=Lt.observable();Lt.defineProperty(this,"baseResolution",{get:function(){return M()},set:function(H){H=Number(H),isNaN(H)||(M(H),c(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=H===0?void 0:H))}}),this.baseResolution=0;let V=Lt.observable();Lt.defineProperty(this,"eyeDomeLighting",{get:function(){return V()},set:function(H){V(H),c(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=H)}}),this.eyeDomeLighting=!1;let E=Lt.observable();Lt.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return E()},set:function(H){H=Number(H),isNaN(H)||(E(H),c(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=H))}}),this.eyeDomeLightingStrength=1;let I=Lt.observable();Lt.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return I()},set:function(H){H=Number(H),isNaN(H)||(I(H),c(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=H))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let B=Lt.observable();Lt.defineProperty(this,"skipLevelOfDetail",{get:function(){return B()},set:function(H){B(H),c(n._tileset)&&(n._tileset.skipLevelOfDetail=H)}}),this.skipLevelOfDetail=!0;let X=Lt.observable();Lt.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return X()},set:function(H){H=Number(H),isNaN(H)||(X(H),c(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=H))}}),this.skipScreenSpaceErrorFactor=16;let _=Lt.observable();Lt.defineProperty(this,"baseScreenSpaceError",{get:function(){return _()},set:function(H){H=Number(H),isNaN(H)||(_(H),c(n._tileset)&&(n._tileset.baseScreenSpaceError=H))}}),this.baseScreenSpaceError=1024;let P=Lt.observable();Lt.defineProperty(this,"skipLevels",{get:function(){return P()},set:function(H){H=Number(H),isNaN(H)||(P(H),c(n._tileset)&&(n._tileset.skipLevels=H))}}),this.skipLevels=1;let w=Lt.observable();Lt.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return w()},set:function(H){w(H),c(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=H)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=Lt.observable();Lt.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(H){z(H),c(n._tileset)&&(n._tileset.loadSiblings=H)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=t.postRender.addEventListener(function(){n._update()}),c(this._tileset)||ukt(this,!0)}Object.defineProperties(ad.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return u5e}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(t){if(this._tileset=t,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,c(t)){this._properties(t.properties);let e=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=e.length;for(let o=0;o<n;++o){let a=e[o];this[a]=this[a]}this.maximumScreenSpaceError=t.maximumScreenSpaceError,this.dynamicScreenSpaceError=t.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=t.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=t.dynamicScreenSpaceErrorFactor,this.colorBlendMode=t.colorBlendMode,this.skipLevelOfDetail=t.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=t.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=t.baseScreenSpaceError,this.skipLevels=t.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=t.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=t.loadSiblings,this.hasEnabledWireframe=t._enableDebugWireframe;let i=t.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=RD(t,!1),this._pickStatisticsText=RD(t,!0),this._resourceCacheStatisticsText=Zkt(),ukt(this,!1)}},feature:{get:function(){return this._feature},set:function(t){if(this._feature===t)return;let e=this._feature;c(e)&&!e.content.isDestroyed()&&(!this.colorize&&c(this._style)?e.color=c(this._style.color)?this._style.color.evaluateColor(e,Z5e):v.WHITE:e.color=l4,this._scene.requestRender()),c(t)&&(v.clone(t.color,l4),t.color=pkt,this._scene.requestRender()),this._feature=t}},tile:{get:function(){return this._tile},set:function(t){if(this._tile===t)return;let e=this._tile;c(e)&&!e.isDestroyed()&&!Irt(e.content)&&(e.color=l4,this._scene.requestRender()),c(t)&&!Irt(t.content)&&(v.clone(t.color,l4),t.color=pkt,this._scene.requestRender()),this._tile=t}}});function Irt(t){if(!c(t))return!1;if(t.featuresLength>0)return!0;let e=t.innerContents;if(c(e)){let n=e.length;for(let i=0;i<n;++i)if(!Irt(e[i]))return!1;return!0}return!1}ad.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};ad.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};ad.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};ad.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};ad.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};ad.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};ad.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};ad.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};ad.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};ad.prototype.trimTilesCache=function(){c(this._tileset)&&this._tileset.trimLoadedTiles()};ad.prototype.compileStyle=function(){let t=this._tileset;if(!(!c(t)||this.styleString===JSON.stringify(t.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new qS(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(e){this._editorError=e.toString()}this.feature=this._feature,this.tile=this._tile}};ad.prototype.styleEditorKeyPress=function(t,e){if(e.keyCode===9){e.preventDefault();let n=e.target,i=n.selectionStart,o=n.selectionEnd,a=o,l=n.value.slice(i,o).split(` + `}var V5e=[{text:"Highlight",value:Nm.HIGHLIGHT},{text:"Replace",value:Nm.REPLACE},{text:"Mix",value:Nm.MIX}],p2t=new v(1,1,0,.4),u5e=new v,l4=new v;function ad(t,e){let n=this,i=t.canvas;this._eventHandler=new sp(i),this._scene=t,this._performanceContainer=e,this._canvas=i,this._performanceDisplay=new RW({container:e}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,Lt.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=Lt.observable({}),this.properties=[],Lt.defineProperty(this,"properties",function(){let H=[],nt=n._properties();for(let $ in nt)nt.hasOwnProperty($)&&H.push($);return H});let o=Lt.observable();Lt.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(H){o(H),c(n._tileset)&&(n._tileset.dynamicScreenSpaceError=H)}}),this.dynamicScreenSpaceError=!1;let a=Lt.observable();Lt.defineProperty(this,"colorBlendMode",{get:function(){return a()},set:function(H){a(H),c(n._tileset)&&(n._tileset.colorBlendMode=H,n._scene.requestRender())}}),this.colorBlendMode=Nm.HIGHLIGHT;let s=Lt.observable(),l=Lt.observable();Lt.defineProperty(this,"picking",{get:function(){return l()},set:function(H){l(H),H?n._eventHandler.setInputAction(function(nt){let $=t.pick(nt.endPosition);if($ instanceof Fr?(n.feature=$,n.tile=$.content.tile):c($)&&c($.content)?(n.feature=void 0,n.tile=$.content.tile):(n.feature=void 0,n.tile=void 0),!!c(n._tileset)){if(s&&c($)&&c($.content)){let dt;t.pickPositionSupported&&(dt=t.pickPosition(nt.endPosition),c(dt)&&(n._tileset.debugPickPosition=dt)),n._tileset.debugPickedTile=$.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},ui.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(ui.MOUSE_MOVE))}}),this.picking=!0;let r=Lt.observable();Lt.defineProperty(this,"colorize",{get:function(){return r()},set:function(H){r(H),c(n._tileset)&&(n._tileset.debugColorizeTiles=H,n._scene.requestRender())}}),this.colorize=!1;let d=Lt.observable();Lt.defineProperty(this,"wireframe",{get:function(){return d()},set:function(H){d(H),c(n._tileset)&&(n._tileset.debugWireframe=H,n._scene.requestRender())}}),this.wireframe=!1;let m=Lt.observable();Lt.defineProperty(this,"showBoundingVolumes",{get:function(){return m()},set:function(H){m(H),c(n._tileset)&&(n._tileset.debugShowBoundingVolume=H,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=Lt.observable();Lt.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(H){h(H),c(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=H,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let u=Lt.observable();Lt.defineProperty(this,"showRequestVolumes",{get:function(){return u()},set:function(H){u(H),c(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=H,n._scene.requestRender())}}),this.showRequestVolumes=!1;let R=Lt.observable();Lt.defineProperty(this,"freezeFrame",{get:function(){return R()},set:function(H){R(H),c(n._tileset)&&(n._tileset.debugFreezeFrame=H,n._scene.debugShowFrustumPlanes=H,n._scene.requestRender())}}),this.freezeFrame=!1,Lt.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(H){s(H),c(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=H,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let V=Lt.observable();Lt.defineProperty(this,"showGeometricError",{get:function(){return V()},set:function(H){V(H),c(n._tileset)&&(n._tileset.debugShowGeometricError=H,n._scene.requestRender())}}),this.showGeometricError=!1;let F=Lt.observable();Lt.defineProperty(this,"showRenderingStatistics",{get:function(){return F()},set:function(H){F(H),c(n._tileset)&&(n._tileset.debugShowRenderingStatistics=H,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let U=Lt.observable();Lt.defineProperty(this,"showMemoryUsage",{get:function(){return U()},set:function(H){U(H),c(n._tileset)&&(n._tileset.debugShowMemoryUsage=H,n._scene.requestRender())}}),this.showMemoryUsage=!1;let G=Lt.observable();Lt.defineProperty(this,"showUrl",{get:function(){return G()},set:function(H){G(H),c(n._tileset)&&(n._tileset.debugShowUrl=H,n._scene.requestRender())}}),this.showUrl=!1;let A=Lt.observable();Lt.defineProperty(this,"maximumScreenSpaceError",{get:function(){return A()},set:function(H){H=Number(H),isNaN(H)||(A(H),c(n._tileset)&&(n._tileset.maximumScreenSpaceError=H))}}),this.maximumScreenSpaceError=16;let S=Lt.observable();Lt.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return S()},set:function(H){H=Number(H),isNaN(H)||(S(H),c(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,Lt.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(S(),1/6)},set:function(H){let nt=Math.pow(H,6);S(nt),c(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=nt)}});let g=Lt.observable();Lt.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return g()},set:function(H){H=Number(H),isNaN(H)||(g(H),c(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=H))}}),this.dynamicScreenSpaceErrorFactor=24;let C=h5e(this),y=Lt.observable();Lt.defineProperty(this,"pickActive",{get:function(){return y()},set:function(H){y(H),H?n._eventHandler.setInputAction(C,ui.LEFT_CLICK):n._eventHandler.removeInputAction(ui.LEFT_CLICK)}});let Y=Lt.observable();Lt.defineProperty(this,"pointCloudShading",{get:function(){return Y()},set:function(H){Y(H),c(n._tileset)&&(n._tileset.pointCloudShading.attenuation=H)}}),this.pointCloudShading=!1;let Q=Lt.observable();Lt.defineProperty(this,"geometricErrorScale",{get:function(){return Q()},set:function(H){H=Number(H),isNaN(H)||(Q(H),c(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=H))}}),this.geometricErrorScale=1;let J=Lt.observable();Lt.defineProperty(this,"maximumAttenuation",{get:function(){return J()},set:function(H){H=Number(H),isNaN(H)||(J(H),c(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=H===0?void 0:H))}}),this.maximumAttenuation=0;let M=Lt.observable();Lt.defineProperty(this,"baseResolution",{get:function(){return M()},set:function(H){H=Number(H),isNaN(H)||(M(H),c(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=H===0?void 0:H))}}),this.baseResolution=0;let Z=Lt.observable();Lt.defineProperty(this,"eyeDomeLighting",{get:function(){return Z()},set:function(H){Z(H),c(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=H)}}),this.eyeDomeLighting=!1;let E=Lt.observable();Lt.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return E()},set:function(H){H=Number(H),isNaN(H)||(E(H),c(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=H))}}),this.eyeDomeLightingStrength=1;let I=Lt.observable();Lt.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return I()},set:function(H){H=Number(H),isNaN(H)||(I(H),c(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=H))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let B=Lt.observable();Lt.defineProperty(this,"skipLevelOfDetail",{get:function(){return B()},set:function(H){B(H),c(n._tileset)&&(n._tileset.skipLevelOfDetail=H)}}),this.skipLevelOfDetail=!0;let X=Lt.observable();Lt.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return X()},set:function(H){H=Number(H),isNaN(H)||(X(H),c(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=H))}}),this.skipScreenSpaceErrorFactor=16;let _=Lt.observable();Lt.defineProperty(this,"baseScreenSpaceError",{get:function(){return _()},set:function(H){H=Number(H),isNaN(H)||(_(H),c(n._tileset)&&(n._tileset.baseScreenSpaceError=H))}}),this.baseScreenSpaceError=1024;let P=Lt.observable();Lt.defineProperty(this,"skipLevels",{get:function(){return P()},set:function(H){H=Number(H),isNaN(H)||(P(H),c(n._tileset)&&(n._tileset.skipLevels=H))}}),this.skipLevels=1;let w=Lt.observable();Lt.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return w()},set:function(H){w(H),c(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=H)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=Lt.observable();Lt.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(H){z(H),c(n._tileset)&&(n._tileset.loadSiblings=H)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=t.postRender.addEventListener(function(){n._update()}),c(this._tileset)||V2t(this,!0)}Object.defineProperties(ad.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return V5e}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(t){if(this._tileset=t,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,c(t)){this._properties(t.properties);let e=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=e.length;for(let o=0;o<n;++o){let a=e[o];this[a]=this[a]}this.maximumScreenSpaceError=t.maximumScreenSpaceError,this.dynamicScreenSpaceError=t.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=t.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=t.dynamicScreenSpaceErrorFactor,this.colorBlendMode=t.colorBlendMode,this.skipLevelOfDetail=t.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=t.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=t.baseScreenSpaceError,this.skipLevels=t.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=t.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=t.loadSiblings,this.hasEnabledWireframe=t._enableDebugWireframe;let i=t.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=bD(t,!1),this._pickStatisticsText=bD(t,!0),this._resourceCacheStatisticsText=u2t(),V2t(this,!1)}},feature:{get:function(){return this._feature},set:function(t){if(this._feature===t)return;let e=this._feature;c(e)&&!e.content.isDestroyed()&&(!this.colorize&&c(this._style)?e.color=c(this._style.color)?this._style.color.evaluateColor(e,u5e):v.WHITE:e.color=l4,this._scene.requestRender()),c(t)&&(v.clone(t.color,l4),t.color=p2t,this._scene.requestRender()),this._feature=t}},tile:{get:function(){return this._tile},set:function(t){if(this._tile===t)return;let e=this._tile;c(e)&&!e.isDestroyed()&&!Irt(e.content)&&(e.color=l4,this._scene.requestRender()),c(t)&&!Irt(t.content)&&(v.clone(t.color,l4),t.color=p2t,this._scene.requestRender()),this._tile=t}}});function Irt(t){if(!c(t))return!1;if(t.featuresLength>0)return!0;let e=t.innerContents;if(c(e)){let n=e.length;for(let i=0;i<n;++i)if(!Irt(e[i]))return!1;return!0}return!1}ad.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};ad.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};ad.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};ad.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};ad.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};ad.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};ad.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};ad.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};ad.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};ad.prototype.trimTilesCache=function(){c(this._tileset)&&this._tileset.trimLoadedTiles()};ad.prototype.compileStyle=function(){let t=this._tileset;if(!(!c(t)||this.styleString===JSON.stringify(t.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new qT(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(e){this._editorError=e.toString()}this.feature=this._feature,this.tile=this._tile}};ad.prototype.styleEditorKeyPress=function(t,e){if(e.keyCode===9){e.preventDefault();let n=e.target,i=n.selectionStart,o=n.selectionEnd,a=o,l=n.value.slice(i,o).split(` `),r=l.length,d;if(e.shiftKey)for(d=0;d<r;++d)l[d][0]===" "&&(l[d][1]===" "?(l[d]=l[d].substr(2),a-=2):(l[d]=l[d].substr(1),a-=1));else for(d=0;d<r;++d)l[d]=` ${l[d]}`,a+=2;let m=l.join(` -`);n.value=n.value.slice(0,i)+m+n.value.slice(o),n.selectionStart=i!==o?i:a,n.selectionEnd=a}else e.ctrlKey&&(e.keyCode===10||e.keyCode===13)&&this.compileStyle();return!0};ad.prototype._update=function(){let t=this._tileset;if(this.performance&&this._performanceDisplay.update(),c(t)){if(t.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let e=t.style;this._style!==t.style&&(this._shouldStyle?(t.style=this._style,this._shouldStyle=!1):(this._style=e,this.styleString=JSON.stringify(e.style,null," ")))}this.showStatistics&&(this._statisticsText=RD(t,!1),this._pickStatisticsText=RD(t,!0),this._resourceCacheStatisticsText=Zkt())};ad.prototype.isDestroyed=function(){return!1};ad.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let t=this;return this._definedProperties.forEach(function(e){Lt.getObservable(t,e).dispose()}),At(this)};ad.getStatistics=RD;var WD=ad;function r4(t,e){t=Ui(t);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new WD(e,i);this._viewModel=o,this._container=t,this._element=n;let a=document.createElement("div");a.textContent="3D Tiles Inspector",a.className="cesium-cesiumInspector-button",a.setAttribute("data-bind","click: toggleInspector"),n.appendChild(a),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),t.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let l=gd.createSection,r=gd.createCheckbox,d=gd.createRangeInput,m=gd.createButton,h=l(s,"Tileset","tilesetVisible","toggleTileset"),Z=l(s,"Display","displayVisible","toggleDisplay"),b=l(s,"Update","updateVisible","toggleUpdate"),u=l(s,"Logging","loggingVisible","toggleLogging"),F=l(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),U=l(s,"Style","styleVisible","toggleStyle"),G=l(s,"Optimization","optimizationVisible","toggleOptimization"),A=document.createElement("div");A.className="field-group";let T=document.createElement("label");T.className="field-label",T.appendChild(document.createTextNode("Properties: "));let g=document.createElement("div");g.setAttribute("data-bind","text: properties"),A.appendChild(T),A.appendChild(g),h.appendChild(A),h.appendChild(m("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(m("Trim Tiles Cache","trimTilesCache")),h.appendChild(r("Enable Picking","picking")),Z.appendChild(r("Colorize","colorize"));let C=Z.appendChild(r("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),y=document.createElement("p");y.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),y.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),y.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",C.appendChild(y),Z.appendChild(r("Bounding Volumes","showBoundingVolumes")),Z.appendChild(r("Content Volumes","showContentBoundingVolumes")),Z.appendChild(r("Request Volumes","showRequestVolumes")),Z.appendChild(r("Point Cloud Shading","pointCloudShading"));let Y=document.createElement("div");Y.setAttribute("data-bind","visible: pointCloudShading"),Y.appendChild(d("Geometric Error Scale","geometricErrorScale",0,2,.01)),Y.appendChild(d("Maximum Attenuation","maximumAttenuation",0,32,1)),Y.appendChild(d("Base Resolution","baseResolution",0,1,.01)),Y.appendChild(r("Eye Dome Lighting (EDL)","eyeDomeLighting")),Z.appendChild(Y);let Q=document.createElement("div");Q.setAttribute("data-bind","visible: eyeDomeLighting"),Q.appendChild(d("EDL Strength","eyeDomeLightingStrength",0,2,.1)),Q.appendChild(d("EDL Radius","eyeDomeLightingRadius",0,4,.1)),Y.appendChild(Q),b.appendChild(r("Freeze Frame","freezeFrame")),b.appendChild(r("Dynamic Screen Space Error","dynamicScreenSpaceError"));let J=document.createElement("div");J.appendChild(d("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),b.appendChild(J);let M=document.createElement("div");M.setAttribute("data-bind","visible: dynamicScreenSpaceError"),M.appendChild(d("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),M.appendChild(d("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),b.appendChild(M),u.appendChild(r("Performance","performance")),u.appendChild(i),u.appendChild(r("Statistics","showStatistics"));let V=document.createElement("div");V.className="cesium-3dTilesInspector-statistics",V.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),u.appendChild(V),u.appendChild(r("Pick Statistics","showPickStatistics"));let E=document.createElement("div");E.className="cesium-3dTilesInspector-statistics",E.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),u.appendChild(E),u.appendChild(r("Resource Cache Statistics","showResourceCacheStatistics"));let I=document.createElement("div");I.className="cesium-3dTilesInspector-statistics",I.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),u.appendChild(I);let B=document.createElement("div");U.appendChild(B),B.appendChild(document.createTextNode("Color Blend Mode: "));let X=document.createElement("select");X.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),B.appendChild(X);let _=document.createElement("textarea");_.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),B.className="cesium-cesiumInspector-styleEditor",B.appendChild(_);let P=m("Compile (Ctrl+Enter)","compileStyle");B.appendChild(P);let w=document.createElement("div");w.className="cesium-cesiumInspector-error",w.setAttribute("data-bind","text: editorError"),B.appendChild(w),F.appendChild(r("Show Picked Only","showOnlyPickedTileDebugLabel")),F.appendChild(r("Geometric Error","showGeometricError")),F.appendChild(r("Rendering Statistics","showRenderingStatistics")),F.appendChild(r("Memory Usage (MB)","showMemoryUsage")),F.appendChild(r("Url","showUrl")),G.appendChild(r("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(d("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),G.appendChild(z);let H=document.createElement("div");H.appendChild(d("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),G.appendChild(H);let nt=document.createElement("div");nt.appendChild(d("Min. levels to skip","skipLevels",0,10,1)),G.appendChild(nt),G.appendChild(r("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),G.appendChild(r("Load siblings of visible tiles","loadSiblings")),Lt.applyBindings(o,n)}Object.defineProperties(r4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});r4.prototype.isDestroyed=function(){return!1};r4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),At(this)};var fD=r4;var Ifa=R(W(),1);var cg="http://www.w3.org/2000/svg",Rkt="http://www.w3.org/1999/xlink",d4,FD=v.fromCssColorString("rgba(247,250,255,0.384)"),c4=v.fromCssColorString("rgba(143,191,255,0.216)"),Nrt=v.fromCssColorString("rgba(153,197,255,0.098)"),m4=v.fromCssColorString("rgba(255,255,255,0.086)"),V5e=v.fromCssColorString("rgba(255,255,255,0.267)"),b5e=v.fromCssColorString("rgba(255,255,255,0)"),Vkt=v.fromCssColorString("rgba(66,67,68,0.3)"),bkt=v.fromCssColorString("rgba(0,0,0,0.5)");function xU(t){return v.fromCssColorString(window.getComputedStyle(t).getPropertyValue("color"))}var UD={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function WV(t){let e=document.createElementNS(cg,t.tagName);for(let n in t)if(t.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=t.children.length;for(let o=0;o<i;++o)e.appendChild(WV(t.children[o]))}else n.indexOf("xlink:")===0?e.setAttributeNS(Rkt,n.substring(6),t[n]):n==="textContent"?e.textContent=t[n]:e.setAttribute(n,t[n]);return e}function yrt(t,e,n){let i=document.createElementNS(cg,"text");i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(cg,"tspan");return o.textContent=n,i.appendChild(o),i}function R5e(t,e,n){t.setAttribute("transform",`translate(100,100) rotate(${n})`),e.setAttribute("transform",`rotate(${n})`)}var h4=new v;function Il(t,e){let n=e.alpha,i=1-n;return h4.red=t.red*i+e.red*n,h4.green=t.green*i+e.green*n,h4.blue=t.blue*i+e.blue*n,h4.toCssColorString()}function Brt(t,e,n){let i=UD[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${t},${e})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return WV(o)}function W5e(t,e,n){let i=UD[n],o=UD.animation_pathWingButton,a={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${t},${e})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return WV(a)}function f5e(t,e){let n=t._viewModel,i=n.shuttleRingDragging;if(!(i&&d4!==t))if(e.type==="mousedown"||i&&e.type==="mousemove"||e.type==="touchstart"&&e.touches.length===1||i&&e.type==="touchmove"&&e.touches.length===1){let o=t._centerX,a=t._centerY,l=t._svgNode.getBoundingClientRect(),r,d;if(e.type==="touchstart"||e.type==="touchmove"?(r=e.touches[0].clientX,d=e.touches[0].clientY):(r=e.clientX,d=e.clientY),!i&&(r>l.right||r<l.left||d<l.top||d>l.bottom))return;let m=t._shuttleRingPointer.getBoundingClientRect(),h=r-o-l.left,Z=d-a-l.top,b=Math.atan2(Z,h)*180/Math.PI+90;b>180&&(b-=360);let u=n.shuttleRingAngle;i||r<m.right&&r>m.left&&d>m.top&&d<m.bottom?(d4=t,n.shuttleRingDragging=!0,n.shuttleRingAngle=b):b<u?n.slower():b>u&&n.faster(),e.preventDefault()}else t===d4&&(d4=void 0),n.shuttleRingDragging=!1}function yW(t,e){this._viewModel=e,this.svgElement=t,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},t.addEventListener("click",this._clickFunction,!0),this._subscriptions=[od(e,"toggled",this.setToggled,this),od(e,"tooltip",this.setTooltip,this),od(e.command,"canExecute",this.setEnabled,this)]}yW.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let t=this._subscriptions;for(let e=0,n=t.length;e<n;e++)t[e].dispose();At(this)};yW.prototype.isDestroyed=function(){return!1};yW.prototype.setEnabled=function(t){if(this._enabled!==t){if(this._enabled=t,!t){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};yW.prototype.setToggled=function(t){this._toggled!==t&&(this._toggled=t,this._enabled&&(t?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};yW.prototype.setTooltip=function(t){this.svgElement.getElementsByTagName("title")[0].textContent=t};function GN(t,e){t=Ui(t),this._viewModel=e,this._container=t,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=t.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let a=document.createElementNS(cg,"svg:svg");this._svgNode=a,a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",Rkt);let s=document.createElementNS(cg,"g");this._topG=s,this._realtimeSVG=new yW(W5e(3,4,"animation_pathClock"),e.playRealtimeViewModel),this._playReverseSVG=new yW(Brt(44,99,"animation_pathPlayReverse"),e.playReverseViewModel),this._playForwardSVG=new yW(Brt(124,99,"animation_pathPlay"),e.playForwardViewModel),this._pauseSVG=new yW(Brt(84,99,"animation_pathPause"),e.pauseViewModel);let l=document.createElementNS(cg,"g");l.appendChild(this._realtimeSVG.svgElement),l.appendChild(this._playReverseSVG.svgElement),l.appendChild(this._playForwardSVG.svgElement),l.appendChild(this._pauseSVG.svgElement);let r=WV({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=r;let d=UD.animation_pathSwooshFX,m=UD.animation_pathPointer,h=WV({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:d.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:d.d},{tagName:d.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:d.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=WV({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:m.tagName,d:m.d});let Z=WV({tagName:"g",transform:"translate(100,100)"});this._knobOuter=WV({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let b=61,u=WV({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:b});this._knobDate=yrt(0,-24,""),this._knobTime=yrt(0,-7,""),this._knobStatus=yrt(0,-41,"");let F=WV({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:b}),U=document.createElementNS(cg,"g");U.setAttribute("class","cesium-animation-shuttleRingG"),t.appendChild(o),s.appendChild(U),s.appendChild(Z),s.appendChild(l),U.appendChild(r),U.appendChild(h),U.appendChild(this._shuttleRingPointer),Z.appendChild(this._knobOuter),Z.appendChild(u),Z.appendChild(this._knobDate),Z.appendChild(this._knobTime),Z.appendChild(this._knobStatus),Z.appendChild(F),a.appendChild(s),t.appendChild(a);let G=this;function A(Y){f5e(G,Y)}this._mouseCallback=A,r.addEventListener("mousedown",A,!0),r.addEventListener("touchstart",A,!0),h.addEventListener("mousedown",A,!0),h.addEventListener("touchstart",A,!0),n.addEventListener("mousemove",A,!0),n.addEventListener("touchmove",A,!0),n.addEventListener("mouseup",A,!0),n.addEventListener("touchend",A,!0),n.addEventListener("touchcancel",A,!0),this._shuttleRingPointer.addEventListener("mousedown",A,!0),this._shuttleRingPointer.addEventListener("touchstart",A,!0),this._knobOuter.addEventListener("mousedown",A,!0),this._knobOuter.addEventListener("touchstart",A,!0);let T=this._knobTime.childNodes[0],g=this._knobDate.childNodes[0],C=this._knobStatus.childNodes[0],y;this._subscriptions=[od(e.pauseViewModel,"toggled",function(Y){y!==Y&&(y=Y,y?G._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):G._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),od(e,"shuttleRingAngle",function(Y){R5e(G._shuttleRingPointer,G._knobOuter,Y)}),od(e,"dateLabel",function(Y){g.textContent!==Y&&(g.textContent=Y)}),od(e,"timeLabel",function(Y){T.textContent!==Y&&(T.textContent=Y)}),od(e,"multiplierLabel",function(Y){C.textContent!==Y&&(C.textContent=Y)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(GN.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});GN.prototype.isDestroyed=function(){return!1};GN.prototype.destroy=function(){c(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let t=this._container.ownerDocument,e=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",e,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",e,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",e,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",e,!0),t.removeEventListener("mousemove",e,!0),t.removeEventListener("touchmove",e,!0),t.removeEventListener("mouseup",e,!0),t.removeEventListener("touchend",e,!0),t.removeEventListener("touchcancel",e,!0),this._shuttleRingPointer.removeEventListener("mousedown",e,!0),this._shuttleRingPointer.removeEventListener("touchstart",e,!0),this._knobOuter.removeEventListener("mousedown",e,!0),this._knobOuter.removeEventListener("touchstart",e,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return At(this)};GN.prototype.resize=function(){let t=this._container.clientWidth,e=this._container.clientHeight;if(t===this._lastWidth&&e===this._lastHeight)return;let n=this._svgNode,i=200,o=132,a=t,s=e;t===0&&e===0?(a=i,s=o):t===0?(s=e,a=i*(e/o)):e===0&&(a=t,s=o*(t/i));let l=a/i,r=s/o;n.style.cssText=`width: ${a}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",a),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${a} ${s}`),this._topG.setAttribute("transform",`scale(${l},${r})`),this._centerX=Math.max(1,100*l),this._centerY=Math.max(1,100*r),this._lastHeight=t,this._lastWidth=e};GN.prototype.applyThemeChanges=function(){let t=this._container.ownerDocument;if(!t.body.contains(this._container)){if(c(this._observer))return;let m=this;m._observer=new MutationObserver(function(){t.body.contains(m._container)&&(m._observer.disconnect(),m._observer=void 0,m.applyThemeChanges())}),m._observer.observe(t,{childList:!0,subtree:!0});return}let e=xU(this._themeNormal),n=xU(this._themeHover),i=xU(this._themeSelect),o=xU(this._themeDisabled),a=xU(this._themeKnob),s=xU(this._themePointer),l=xU(this._themeSwoosh),r=xU(this._themeSwooshHover),d=WV({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(e,FD)},{tagName:"stop",offset:"12%","stop-color":Il(e,c4)},{tagName:"stop",offset:"46%","stop-color":Il(e,Nrt)},{tagName:"stop",offset:"81%","stop-color":Il(e,m4)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(n,FD)},{tagName:"stop",offset:"12%","stop-color":Il(n,c4)},{tagName:"stop",offset:"46%","stop-color":Il(n,Nrt)},{tagName:"stop",offset:"81%","stop-color":Il(n,m4)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(i,FD)},{tagName:"stop",offset:"12%","stop-color":Il(i,c4)},{tagName:"stop",offset:"46%","stop-color":Il(i,Nrt)},{tagName:"stop",offset:"81%","stop-color":Il(i,m4)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(o,V5e)},{tagName:"stop",offset:"75%","stop-color":Il(o,b5e)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":l.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":l.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":l.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":r.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":r.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":r.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":Il(s,bkt)},{tagName:"stop",offset:"100%","stop-color":Il(s,bkt)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Il(a,FD)},{tagName:"stop",offset:"60%","stop-color":Il(a,Vkt)},{tagName:"stop",offset:"85%","stop-color":Il(a,c4)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Il(a,Vkt)},{tagName:"stop",offset:"60%","stop-color":Il(a,FD)},{tagName:"stop",offset:"85%","stop-color":Il(a,m4)}]}]});c(this._defsElement)?this._svgNode.replaceChild(d,this._defsElement):this._svgNode.appendChild(d),this._defsElement=d};var GD=GN;var Xfa=R(W(),1);var F5e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],XU=15,AN=105;function Wkt(t,e){return t-e}function Qrt(t,e){let n=Ja(e,t,Wkt);return n<0?~n:n}function U5e(t,e){if(Math.abs(t)<=XU)return t/XU;let n=XU,i=AN,o,a=0,s;return t>0?(o=Math.log(e[e.length-1]),s=(o-a)/(i-n),Math.exp(a+s*(t-n))):(o=Math.log(-e[0]),s=(o-a)/(i-n),-Math.exp(a+s*(Math.abs(t)-n)))}function G5e(t,e,n){if(n.clockStep===ya.SYSTEM_CLOCK)return XU;if(Math.abs(t)<=1)return t*XU;let i=e[e.length-1];t>i?t=i:t<-i&&(t=-i);let o=XU,a=AN,s,l=0,r;return t>0?(s=Math.log(i),r=(s-l)/(a-o),(Math.log(t)-l)/r+o):(s=Math.log(-e[0]),r=(s-l)/(a-o),-((Math.log(Math.abs(t))-l)/r+o))}function ku(t){let e=this;this._clockViewModel=t,this._allShuttleRingTicks=[],this._dateFormatter=ku.defaultDateFormatter,this._timeFormatter=ku.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,Lt.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(ku.defaultTicks),this.timeLabel=void 0,Lt.defineProperty(this,"timeLabel",function(){return e._timeFormatter(e._clockViewModel.currentTime,e)}),this.dateLabel=void 0,Lt.defineProperty(this,"dateLabel",function(){return e._dateFormatter(e._clockViewModel.currentTime,e)}),this.multiplierLabel=void 0,Lt.defineProperty(this,"multiplierLabel",function(){let s=e._clockViewModel;if(s.clockStep===ya.SYSTEM_CLOCK)return"Today";let l=s.multiplier;return l%1===0?`${l.toFixed(0)}x`:`${l.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,Lt.defineProperty(this,"shuttleRingAngle",{get:function(){return G5e(t.multiplier,e._allShuttleRingTicks,t)},set:function(s){s=Math.max(Math.min(s,AN),-AN);let l=e._allShuttleRingTicks,r=e._clockViewModel;if(r.clockStep=ya.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===AN){r.multiplier=s>0?l[l.length-1]:l[0];return}let d=U5e(s,l);if(e.snapToTicks)d=l[Qrt(d,l)];else if(d!==0){let m=Math.abs(d);if(m>100){let h=m.toFixed(0).length-2,Z=Math.pow(10,h);d=Math.round(d/Z)*Z|0}else m>XU?d=Math.round(d):m>1?d=+d.toFixed(1):m>0&&(d=+d.toFixed(2))}r.multiplier=d}}),this._canAnimate=void 0,Lt.defineProperty(this,"_canAnimate",function(){let s=e._clockViewModel,l=s.clockRange;if(e.shuttleRingDragging||l===pl.UNBOUNDED)return!0;let r=s.multiplier,d=s.currentTime,m=s.startTime,h=!1;if(l===pl.LOOP_STOP)h=rt.greaterThan(d,m)||d.equals(m)&&r>0;else{let Z=s.stopTime;h=rt.greaterThan(d,m)&&rt.lessThan(d,Z)||d.equals(m)&&r>0||d.equals(Z)&&r<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,Lt.defineProperty(this,"_isSystemTimeAvailable",function(){let s=e._clockViewModel;if(s.clockRange===pl.UNBOUNDED)return!0;let r=s.systemTime;return rt.greaterThanOrEquals(r,s.startTime)&&rt.lessThanOrEquals(r,s.stopTime)}),this._isAnimating=void 0,Lt.defineProperty(this,"_isAnimating",function(){return e._clockViewModel.shouldAnimate&&(e._canAnimate||e.shuttleRingDragging)});let n=bi(function(){let s=e._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:e._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new YU(n,{toggled:Lt.computed(function(){return!e._isAnimating}),tooltip:"Pause"});let i=bi(function(){let s=e._clockViewModel,l=s.multiplier;l>0&&(s.multiplier=-l),s.shouldAnimate=!0});this._playReverseViewModel=new YU(i,{toggled:Lt.computed(function(){return e._isAnimating&&t.multiplier<0}),tooltip:"Play Reverse"});let o=bi(function(){let s=e._clockViewModel,l=s.multiplier;l<0&&(s.multiplier=-l),s.shouldAnimate=!0});this._playForwardViewModel=new YU(o,{toggled:Lt.computed(function(){return e._isAnimating&&t.multiplier>0&&t.clockStep!==ya.SYSTEM_CLOCK}),tooltip:"Play Forward"});let a=bi(function(){e._clockViewModel.clockStep=ya.SYSTEM_CLOCK},Lt.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new YU(a,{toggled:Lt.computed(function(){return t.clockStep===ya.SYSTEM_CLOCK}),tooltip:Lt.computed(function(){return e._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=bi(function(){let s=e._clockViewModel,l=e._allShuttleRingTicks,r=s.multiplier,d=Qrt(r,l)-1;d>=0&&(s.multiplier=l[d])}),this._faster=bi(function(){let s=e._clockViewModel,l=e._allShuttleRingTicks,r=s.multiplier,d=Qrt(r,l)+1;d<l.length&&(s.multiplier=l[d])})}ku.defaultDateFormatter=function(t,e){let n=rt.toGregorianDate(t);return`${F5e[n.month-1]} ${n.day} ${n.year}`};ku.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];ku.defaultTimeFormatter=function(t,e){let n=rt.toGregorianDate(t),i=Math.round(n.millisecond);return Math.abs(e._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};ku.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};ku.prototype.setShuttleRingTicks=function(t){let e,n,i,o={},a=this._sortedFilteredPositiveTicks;for(a.length=0,e=0,n=t.length;e<n;++e)i=t[e],o.hasOwnProperty(i)||(o[i]=!0,a.push(i));a.sort(Wkt);let s=[];for(n=a.length,e=n-1;e>=0;--e)i=a[e],i!==0&&s.push(-i);Array.prototype.push.apply(s,a),this._allShuttleRingTicks=s};Object.defineProperties(ku.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(t){this._dateFormatter=t}},timeFormatter:{get:function(){return this._timeFormatter},set:function(t){this._timeFormatter=t}}});ku._maxShuttleRingAngle=AN;ku._realtimeShuttleRingAngle=XU;var AD=ku;var jfa=R(W(),1);var Ofa=R(W(),1);function fkt(t){t=f(t,f.EMPTY_OBJECT);let e=t.globe,n=f(t.imageryProviderViewModels,[]),i=f(t.terrainProviderViewModels,[]);this._globe=e,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,Lt.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=Lt.getObservable(this,"imageryProviderViewModels"),a=Lt.pureComputed(function(){let h=o(),Z={},b;for(b=0;b<h.length;b++){let U=h[b],G=U.category;c(Z[G])?Z[G].push(U):Z[G]=[U]}let u=Object.keys(Z),F=[];for(b=0;b<u.length;b++){let U=u[b];F.push({name:U,providers:Z[U]})}return F});this._imageryProviders=a;let s=Lt.getObservable(this,"terrainProviderViewModels"),l=Lt.pureComputed(function(){let h=s(),Z={},b;for(b=0;b<h.length;b++){let U=h[b],G=U.category;c(Z[G])?Z[G].push(U):Z[G]=[U]}let u=Object.keys(Z),F=[];for(b=0;b<u.length;b++){let U=u[b];F.push({name:U,providers:Z[U]})}return F});this._terrainProviders=l,this.buttonTooltip=void 0,Lt.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,Z=this.selectedTerrain,b=c(h)?h.name:void 0,u=c(Z)?Z.name:void 0;return c(b)&&c(u)?`${b} -${u}`:c(b)?b:u}),this.buttonImageUrl=void 0,Lt.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(c(h))return h.iconUrl}),this.selectedImagery=void 0;let r=Lt.observable();this._currentImageryLayers=[],Lt.defineProperty(this,"selectedImagery",{get:function(){return r()},set:function(h){if(r()===h){this.dropDownVisible=!1;return}let Z,b=this._currentImageryLayers,u=b.length,F=this._globe.imageryLayers,U=!1;for(Z=0;Z<u;Z++){let G=F.length;for(let A=0;A<G;A++){let T=F.get(A);if(T===b[Z]){F.remove(T),U=!0;break}}}if(c(h)){let G=h.creationCommand();if(Array.isArray(G)){let A=G.length;for(this._currentImageryLayers=[],Z=A-1;Z>=0;Z--){let T=$r.fromProviderAsync(G[Z]);F.add(T,0),this._currentImageryLayers.push(T)}}else{this._currentImageryLayers=[];let A=$r.fromProviderAsync(G);if(A.name=h.name,U)F.add(A,0);else{let T=F.get(0);c(T)&&F.remove(T),F.add(A,0)}this._currentImageryLayers.push(A)}}r(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let d=Lt.observable();Lt.defineProperty(this,"selectedTerrain",{get:function(){return d()},set:function(h){if(d()===h){this.dropDownVisible=!1;return}let Z;if(c(h)&&(Z=h.creationCommand()),c(Z)&&!c(Z.then))this._globe.depthTestAgainstTerrain=!(Z instanceof Ru),this._globe.terrainProvider=Z;else if(c(Z)){let b=!1,u=this._globe.terrainProviderChanged.addEventListener(()=>{b=!0,u()}),U=new lD(Z).readyEvent.addEventListener(G=>{b||(this._globe.depthTestAgainstTerrain=!(G instanceof Ru),this._globe.terrainProvider=G,U())})}d(h),this.dropDownVisible=!1}});let m=this;this._toggleDropDown=bi(function(){m.dropDownVisible=!m.dropDownVisible}),this.selectedImagery=f(t.selectedImageryProviderViewModel,n[0]),this.selectedTerrain=f(t.selectedTerrainProviderViewModel,i[0])}Object.defineProperties(fkt.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var TD=fkt;function p4(t,e){t=Ui(t);let n=new TD(e),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),t.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let a=document.createElement("div");a.className="cesium-baseLayerPicker-dropDown",a.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),t.appendChild(a);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",a.appendChild(s);let l=document.createElement("div");l.className="cesium-baseLayerPicker-section",l.setAttribute("data-bind","foreach: _imageryProviders"),a.appendChild(l);let r=document.createElement("div");r.className="cesium-baseLayerPicker-category",l.appendChild(r);let d=document.createElement("div");d.className="cesium-baseLayerPicker-categoryTitle",d.setAttribute("data-bind","text: name"),r.appendChild(d);let m=document.createElement("div");m.className="cesium-baseLayerPicker-choices",m.setAttribute("data-bind","foreach: providers"),r.appendChild(m);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),m.appendChild(h);let Z=document.createElement("img");Z.className="cesium-baseLayerPicker-itemIcon",Z.setAttribute("data-bind","attr: { src: iconUrl }"),Z.setAttribute("draggable","false"),h.appendChild(Z);let b=document.createElement("div");b.className="cesium-baseLayerPicker-itemLabel",b.setAttribute("data-bind","text: name"),h.appendChild(b);let u=document.createElement("div");u.className="cesium-baseLayerPicker-sectionTitle",u.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),u.innerHTML="Terrain",a.appendChild(u);let F=document.createElement("div");F.className="cesium-baseLayerPicker-section",F.setAttribute("data-bind","foreach: _terrainProviders"),a.appendChild(F);let U=document.createElement("div");U.className="cesium-baseLayerPicker-category",F.appendChild(U);let G=document.createElement("div");G.className="cesium-baseLayerPicker-categoryTitle",G.setAttribute("data-bind","text: name"),U.appendChild(G);let A=document.createElement("div");A.className="cesium-baseLayerPicker-choices",A.setAttribute("data-bind","foreach: providers"),U.appendChild(A);let T=document.createElement("div");T.className="cesium-baseLayerPicker-item",T.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),A.appendChild(T);let g=document.createElement("img");g.className="cesium-baseLayerPicker-itemIcon",g.setAttribute("data-bind","attr: { src: iconUrl }"),g.setAttribute("draggable","false"),T.appendChild(g);let C=document.createElement("div");C.className="cesium-baseLayerPicker-itemLabel",C.setAttribute("data-bind","text: name"),T.appendChild(C),Lt.applyBindings(n,i),Lt.applyBindings(n,a),this._viewModel=n,this._container=t,this._element=i,this._dropPanel=a,this._closeDropDown=function(y){i.contains(y.target)||a.contains(y.target)||(n.dropDownVisible=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(p4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});p4.prototype.isDestroyed=function(){return!1};p4.prototype.destroy=function(){return In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Lt.cleanNode(this._element),Lt.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),At(this)};var SD=p4;var iFa=R(W(),1);function Fkt(t){let e=t.creationFunction;c(e.canExecute)||(e=bi(e)),this._creationCommand=e,this.name=t.name,this.tooltip=t.tooltip,this.iconUrl=t.iconUrl,this._category=f(t.category,""),Lt.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(Fkt.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Nl=Fkt;var lFa=R(W(),1);function A5e(){let t=[],e=devicePixelRatio>=2;return t.push(new Nl({name:"Bing Maps Aerial",iconUrl:Dn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return pW({style:hW.AERIAL})}})),t.push(new Nl({name:"Bing Maps Aerial with Labels",iconUrl:Dn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return pW({style:hW.AERIAL_WITH_LABELS})}})),t.push(new Nl({name:"Bing Maps Roads",iconUrl:Dn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return pW({style:hW.ROAD})}})),t.push(new Nl({name:"ArcGIS World Imagery",iconUrl:Dn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at -https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return cW.fromBasemapType(oV.SATELLITE,{enablePickFeatures:!1})}})),t.push(new Nl({name:"ArcGIS World Hillshade",iconUrl:Dn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at -https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return cW.fromBasemapType(oV.HILLSHADE,{enablePickFeatures:!1})}})),t.push(new Nl({name:"Esri World Ocean",iconUrl:Dn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at -https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return cW.fromBasemapType(oV.OCEANS,{enablePickFeatures:!1})}})),t.push(new Nl({name:"Open\xADStreet\xADMap",iconUrl:Dn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +`);n.value=n.value.slice(0,i)+m+n.value.slice(o),n.selectionStart=i!==o?i:a,n.selectionEnd=a}else e.ctrlKey&&(e.keyCode===10||e.keyCode===13)&&this.compileStyle();return!0};ad.prototype._update=function(){let t=this._tileset;if(this.performance&&this._performanceDisplay.update(),c(t)){if(t.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let e=t.style;this._style!==t.style&&(this._shouldStyle?(t.style=this._style,this._shouldStyle=!1):(this._style=e,this.styleString=JSON.stringify(e.style,null," ")))}this.showStatistics&&(this._statisticsText=bD(t,!1),this._pickStatisticsText=bD(t,!0),this._resourceCacheStatisticsText=u2t())};ad.prototype.isDestroyed=function(){return!1};ad.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let t=this;return this._definedProperties.forEach(function(e){Lt.getObservable(t,e).dispose()}),At(this)};ad.getStatistics=bD;var WD=ad;function r4(t,e){t=Ui(t);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new WD(e,i);this._viewModel=o,this._container=t,this._element=n;let a=document.createElement("div");a.textContent="3D Tiles Inspector",a.className="cesium-cesiumInspector-button",a.setAttribute("data-bind","click: toggleInspector"),n.appendChild(a),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),t.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let l=gd.createSection,r=gd.createCheckbox,d=gd.createRangeInput,m=gd.createButton,h=l(s,"Tileset","tilesetVisible","toggleTileset"),u=l(s,"Display","displayVisible","toggleDisplay"),R=l(s,"Update","updateVisible","toggleUpdate"),V=l(s,"Logging","loggingVisible","toggleLogging"),F=l(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),U=l(s,"Style","styleVisible","toggleStyle"),G=l(s,"Optimization","optimizationVisible","toggleOptimization"),A=document.createElement("div");A.className="field-group";let S=document.createElement("label");S.className="field-label",S.appendChild(document.createTextNode("Properties: "));let g=document.createElement("div");g.setAttribute("data-bind","text: properties"),A.appendChild(S),A.appendChild(g),h.appendChild(A),h.appendChild(m("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(m("Trim Tiles Cache","trimTilesCache")),h.appendChild(r("Enable Picking","picking")),u.appendChild(r("Colorize","colorize"));let C=u.appendChild(r("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),y=document.createElement("p");y.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),y.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),y.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",C.appendChild(y),u.appendChild(r("Bounding Volumes","showBoundingVolumes")),u.appendChild(r("Content Volumes","showContentBoundingVolumes")),u.appendChild(r("Request Volumes","showRequestVolumes")),u.appendChild(r("Point Cloud Shading","pointCloudShading"));let Y=document.createElement("div");Y.setAttribute("data-bind","visible: pointCloudShading"),Y.appendChild(d("Geometric Error Scale","geometricErrorScale",0,2,.01)),Y.appendChild(d("Maximum Attenuation","maximumAttenuation",0,32,1)),Y.appendChild(d("Base Resolution","baseResolution",0,1,.01)),Y.appendChild(r("Eye Dome Lighting (EDL)","eyeDomeLighting")),u.appendChild(Y);let Q=document.createElement("div");Q.setAttribute("data-bind","visible: eyeDomeLighting"),Q.appendChild(d("EDL Strength","eyeDomeLightingStrength",0,2,.1)),Q.appendChild(d("EDL Radius","eyeDomeLightingRadius",0,4,.1)),Y.appendChild(Q),R.appendChild(r("Freeze Frame","freezeFrame")),R.appendChild(r("Dynamic Screen Space Error","dynamicScreenSpaceError"));let J=document.createElement("div");J.appendChild(d("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),R.appendChild(J);let M=document.createElement("div");M.setAttribute("data-bind","visible: dynamicScreenSpaceError"),M.appendChild(d("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),M.appendChild(d("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),R.appendChild(M),V.appendChild(r("Performance","performance")),V.appendChild(i),V.appendChild(r("Statistics","showStatistics"));let Z=document.createElement("div");Z.className="cesium-3dTilesInspector-statistics",Z.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),V.appendChild(Z),V.appendChild(r("Pick Statistics","showPickStatistics"));let E=document.createElement("div");E.className="cesium-3dTilesInspector-statistics",E.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),V.appendChild(E),V.appendChild(r("Resource Cache Statistics","showResourceCacheStatistics"));let I=document.createElement("div");I.className="cesium-3dTilesInspector-statistics",I.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),V.appendChild(I);let B=document.createElement("div");U.appendChild(B),B.appendChild(document.createTextNode("Color Blend Mode: "));let X=document.createElement("select");X.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),B.appendChild(X);let _=document.createElement("textarea");_.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),B.className="cesium-cesiumInspector-styleEditor",B.appendChild(_);let P=m("Compile (Ctrl+Enter)","compileStyle");B.appendChild(P);let w=document.createElement("div");w.className="cesium-cesiumInspector-error",w.setAttribute("data-bind","text: editorError"),B.appendChild(w),F.appendChild(r("Show Picked Only","showOnlyPickedTileDebugLabel")),F.appendChild(r("Geometric Error","showGeometricError")),F.appendChild(r("Rendering Statistics","showRenderingStatistics")),F.appendChild(r("Memory Usage (MB)","showMemoryUsage")),F.appendChild(r("Url","showUrl")),G.appendChild(r("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(d("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),G.appendChild(z);let H=document.createElement("div");H.appendChild(d("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),G.appendChild(H);let nt=document.createElement("div");nt.appendChild(d("Min. levels to skip","skipLevels",0,10,1)),G.appendChild(nt),G.appendChild(r("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),G.appendChild(r("Load siblings of visible tiles","loadSiblings")),Lt.applyBindings(o,n)}Object.defineProperties(r4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});r4.prototype.isDestroyed=function(){return!1};r4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),At(this)};var fD=r4;var Ifa=b(W(),1);var cg="http://www.w3.org/2000/svg",b2t="http://www.w3.org/1999/xlink",d4,FD=v.fromCssColorString("rgba(247,250,255,0.384)"),c4=v.fromCssColorString("rgba(143,191,255,0.216)"),Nrt=v.fromCssColorString("rgba(153,197,255,0.098)"),m4=v.fromCssColorString("rgba(255,255,255,0.086)"),Z5e=v.fromCssColorString("rgba(255,255,255,0.267)"),R5e=v.fromCssColorString("rgba(255,255,255,0)"),Z2t=v.fromCssColorString("rgba(66,67,68,0.3)"),R2t=v.fromCssColorString("rgba(0,0,0,0.5)");function xU(t){return v.fromCssColorString(window.getComputedStyle(t).getPropertyValue("color"))}var UD={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function WZ(t){let e=document.createElementNS(cg,t.tagName);for(let n in t)if(t.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=t.children.length;for(let o=0;o<i;++o)e.appendChild(WZ(t.children[o]))}else n.indexOf("xlink:")===0?e.setAttributeNS(b2t,n.substring(6),t[n]):n==="textContent"?e.textContent=t[n]:e.setAttribute(n,t[n]);return e}function yrt(t,e,n){let i=document.createElementNS(cg,"text");i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(cg,"tspan");return o.textContent=n,i.appendChild(o),i}function b5e(t,e,n){t.setAttribute("transform",`translate(100,100) rotate(${n})`),e.setAttribute("transform",`rotate(${n})`)}var h4=new v;function Il(t,e){let n=e.alpha,i=1-n;return h4.red=t.red*i+e.red*n,h4.green=t.green*i+e.green*n,h4.blue=t.blue*i+e.blue*n,h4.toCssColorString()}function Brt(t,e,n){let i=UD[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${t},${e})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return WZ(o)}function W5e(t,e,n){let i=UD[n],o=UD.animation_pathWingButton,a={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${t},${e})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return WZ(a)}function f5e(t,e){let n=t._viewModel,i=n.shuttleRingDragging;if(!(i&&d4!==t))if(e.type==="mousedown"||i&&e.type==="mousemove"||e.type==="touchstart"&&e.touches.length===1||i&&e.type==="touchmove"&&e.touches.length===1){let o=t._centerX,a=t._centerY,l=t._svgNode.getBoundingClientRect(),r,d;if(e.type==="touchstart"||e.type==="touchmove"?(r=e.touches[0].clientX,d=e.touches[0].clientY):(r=e.clientX,d=e.clientY),!i&&(r>l.right||r<l.left||d<l.top||d>l.bottom))return;let m=t._shuttleRingPointer.getBoundingClientRect(),h=r-o-l.left,u=d-a-l.top,R=Math.atan2(u,h)*180/Math.PI+90;R>180&&(R-=360);let V=n.shuttleRingAngle;i||r<m.right&&r>m.left&&d>m.top&&d<m.bottom?(d4=t,n.shuttleRingDragging=!0,n.shuttleRingAngle=R):R<V?n.slower():R>V&&n.faster(),e.preventDefault()}else t===d4&&(d4=void 0),n.shuttleRingDragging=!1}function yW(t,e){this._viewModel=e,this.svgElement=t,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},t.addEventListener("click",this._clickFunction,!0),this._subscriptions=[od(e,"toggled",this.setToggled,this),od(e,"tooltip",this.setTooltip,this),od(e.command,"canExecute",this.setEnabled,this)]}yW.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let t=this._subscriptions;for(let e=0,n=t.length;e<n;e++)t[e].dispose();At(this)};yW.prototype.isDestroyed=function(){return!1};yW.prototype.setEnabled=function(t){if(this._enabled!==t){if(this._enabled=t,!t){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};yW.prototype.setToggled=function(t){this._toggled!==t&&(this._toggled=t,this._enabled&&(t?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};yW.prototype.setTooltip=function(t){this.svgElement.getElementsByTagName("title")[0].textContent=t};function GN(t,e){t=Ui(t),this._viewModel=e,this._container=t,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=t.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let a=document.createElementNS(cg,"svg:svg");this._svgNode=a,a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",b2t);let s=document.createElementNS(cg,"g");this._topG=s,this._realtimeSVG=new yW(W5e(3,4,"animation_pathClock"),e.playRealtimeViewModel),this._playReverseSVG=new yW(Brt(44,99,"animation_pathPlayReverse"),e.playReverseViewModel),this._playForwardSVG=new yW(Brt(124,99,"animation_pathPlay"),e.playForwardViewModel),this._pauseSVG=new yW(Brt(84,99,"animation_pathPause"),e.pauseViewModel);let l=document.createElementNS(cg,"g");l.appendChild(this._realtimeSVG.svgElement),l.appendChild(this._playReverseSVG.svgElement),l.appendChild(this._playForwardSVG.svgElement),l.appendChild(this._pauseSVG.svgElement);let r=WZ({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=r;let d=UD.animation_pathSwooshFX,m=UD.animation_pathPointer,h=WZ({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:d.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:d.d},{tagName:d.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:d.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=WZ({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:m.tagName,d:m.d});let u=WZ({tagName:"g",transform:"translate(100,100)"});this._knobOuter=WZ({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let R=61,V=WZ({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:R});this._knobDate=yrt(0,-24,""),this._knobTime=yrt(0,-7,""),this._knobStatus=yrt(0,-41,"");let F=WZ({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:R}),U=document.createElementNS(cg,"g");U.setAttribute("class","cesium-animation-shuttleRingG"),t.appendChild(o),s.appendChild(U),s.appendChild(u),s.appendChild(l),U.appendChild(r),U.appendChild(h),U.appendChild(this._shuttleRingPointer),u.appendChild(this._knobOuter),u.appendChild(V),u.appendChild(this._knobDate),u.appendChild(this._knobTime),u.appendChild(this._knobStatus),u.appendChild(F),a.appendChild(s),t.appendChild(a);let G=this;function A(Y){f5e(G,Y)}this._mouseCallback=A,r.addEventListener("mousedown",A,!0),r.addEventListener("touchstart",A,!0),h.addEventListener("mousedown",A,!0),h.addEventListener("touchstart",A,!0),n.addEventListener("mousemove",A,!0),n.addEventListener("touchmove",A,!0),n.addEventListener("mouseup",A,!0),n.addEventListener("touchend",A,!0),n.addEventListener("touchcancel",A,!0),this._shuttleRingPointer.addEventListener("mousedown",A,!0),this._shuttleRingPointer.addEventListener("touchstart",A,!0),this._knobOuter.addEventListener("mousedown",A,!0),this._knobOuter.addEventListener("touchstart",A,!0);let S=this._knobTime.childNodes[0],g=this._knobDate.childNodes[0],C=this._knobStatus.childNodes[0],y;this._subscriptions=[od(e.pauseViewModel,"toggled",function(Y){y!==Y&&(y=Y,y?G._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):G._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),od(e,"shuttleRingAngle",function(Y){b5e(G._shuttleRingPointer,G._knobOuter,Y)}),od(e,"dateLabel",function(Y){g.textContent!==Y&&(g.textContent=Y)}),od(e,"timeLabel",function(Y){S.textContent!==Y&&(S.textContent=Y)}),od(e,"multiplierLabel",function(Y){C.textContent!==Y&&(C.textContent=Y)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(GN.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});GN.prototype.isDestroyed=function(){return!1};GN.prototype.destroy=function(){c(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let t=this._container.ownerDocument,e=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",e,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",e,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",e,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",e,!0),t.removeEventListener("mousemove",e,!0),t.removeEventListener("touchmove",e,!0),t.removeEventListener("mouseup",e,!0),t.removeEventListener("touchend",e,!0),t.removeEventListener("touchcancel",e,!0),this._shuttleRingPointer.removeEventListener("mousedown",e,!0),this._shuttleRingPointer.removeEventListener("touchstart",e,!0),this._knobOuter.removeEventListener("mousedown",e,!0),this._knobOuter.removeEventListener("touchstart",e,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return At(this)};GN.prototype.resize=function(){let t=this._container.clientWidth,e=this._container.clientHeight;if(t===this._lastWidth&&e===this._lastHeight)return;let n=this._svgNode,i=200,o=132,a=t,s=e;t===0&&e===0?(a=i,s=o):t===0?(s=e,a=i*(e/o)):e===0&&(a=t,s=o*(t/i));let l=a/i,r=s/o;n.style.cssText=`width: ${a}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",a),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${a} ${s}`),this._topG.setAttribute("transform",`scale(${l},${r})`),this._centerX=Math.max(1,100*l),this._centerY=Math.max(1,100*r),this._lastHeight=t,this._lastWidth=e};GN.prototype.applyThemeChanges=function(){let t=this._container.ownerDocument;if(!t.body.contains(this._container)){if(c(this._observer))return;let m=this;m._observer=new MutationObserver(function(){t.body.contains(m._container)&&(m._observer.disconnect(),m._observer=void 0,m.applyThemeChanges())}),m._observer.observe(t,{childList:!0,subtree:!0});return}let e=xU(this._themeNormal),n=xU(this._themeHover),i=xU(this._themeSelect),o=xU(this._themeDisabled),a=xU(this._themeKnob),s=xU(this._themePointer),l=xU(this._themeSwoosh),r=xU(this._themeSwooshHover),d=WZ({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(e,FD)},{tagName:"stop",offset:"12%","stop-color":Il(e,c4)},{tagName:"stop",offset:"46%","stop-color":Il(e,Nrt)},{tagName:"stop",offset:"81%","stop-color":Il(e,m4)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(n,FD)},{tagName:"stop",offset:"12%","stop-color":Il(n,c4)},{tagName:"stop",offset:"46%","stop-color":Il(n,Nrt)},{tagName:"stop",offset:"81%","stop-color":Il(n,m4)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(i,FD)},{tagName:"stop",offset:"12%","stop-color":Il(i,c4)},{tagName:"stop",offset:"46%","stop-color":Il(i,Nrt)},{tagName:"stop",offset:"81%","stop-color":Il(i,m4)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Il(o,Z5e)},{tagName:"stop",offset:"75%","stop-color":Il(o,R5e)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":l.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":l.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":l.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":r.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":r.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":r.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":Il(s,R2t)},{tagName:"stop",offset:"100%","stop-color":Il(s,R2t)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Il(a,FD)},{tagName:"stop",offset:"60%","stop-color":Il(a,Z2t)},{tagName:"stop",offset:"85%","stop-color":Il(a,c4)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Il(a,Z2t)},{tagName:"stop",offset:"60%","stop-color":Il(a,FD)},{tagName:"stop",offset:"85%","stop-color":Il(a,m4)}]}]});c(this._defsElement)?this._svgNode.replaceChild(d,this._defsElement):this._svgNode.appendChild(d),this._defsElement=d};var GD=GN;var Xfa=b(W(),1);var F5e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],XU=15,AN=105;function W2t(t,e){return t-e}function Qrt(t,e){let n=Ja(e,t,W2t);return n<0?~n:n}function U5e(t,e){if(Math.abs(t)<=XU)return t/XU;let n=XU,i=AN,o,a=0,s;return t>0?(o=Math.log(e[e.length-1]),s=(o-a)/(i-n),Math.exp(a+s*(t-n))):(o=Math.log(-e[0]),s=(o-a)/(i-n),-Math.exp(a+s*(Math.abs(t)-n)))}function G5e(t,e,n){if(n.clockStep===ya.SYSTEM_CLOCK)return XU;if(Math.abs(t)<=1)return t*XU;let i=e[e.length-1];t>i?t=i:t<-i&&(t=-i);let o=XU,a=AN,s,l=0,r;return t>0?(s=Math.log(i),r=(s-l)/(a-o),(Math.log(t)-l)/r+o):(s=Math.log(-e[0]),r=(s-l)/(a-o),-((Math.log(Math.abs(t))-l)/r+o))}function kV(t){let e=this;this._clockViewModel=t,this._allShuttleRingTicks=[],this._dateFormatter=kV.defaultDateFormatter,this._timeFormatter=kV.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,Lt.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(kV.defaultTicks),this.timeLabel=void 0,Lt.defineProperty(this,"timeLabel",function(){return e._timeFormatter(e._clockViewModel.currentTime,e)}),this.dateLabel=void 0,Lt.defineProperty(this,"dateLabel",function(){return e._dateFormatter(e._clockViewModel.currentTime,e)}),this.multiplierLabel=void 0,Lt.defineProperty(this,"multiplierLabel",function(){let s=e._clockViewModel;if(s.clockStep===ya.SYSTEM_CLOCK)return"Today";let l=s.multiplier;return l%1===0?`${l.toFixed(0)}x`:`${l.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,Lt.defineProperty(this,"shuttleRingAngle",{get:function(){return G5e(t.multiplier,e._allShuttleRingTicks,t)},set:function(s){s=Math.max(Math.min(s,AN),-AN);let l=e._allShuttleRingTicks,r=e._clockViewModel;if(r.clockStep=ya.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===AN){r.multiplier=s>0?l[l.length-1]:l[0];return}let d=U5e(s,l);if(e.snapToTicks)d=l[Qrt(d,l)];else if(d!==0){let m=Math.abs(d);if(m>100){let h=m.toFixed(0).length-2,u=Math.pow(10,h);d=Math.round(d/u)*u|0}else m>XU?d=Math.round(d):m>1?d=+d.toFixed(1):m>0&&(d=+d.toFixed(2))}r.multiplier=d}}),this._canAnimate=void 0,Lt.defineProperty(this,"_canAnimate",function(){let s=e._clockViewModel,l=s.clockRange;if(e.shuttleRingDragging||l===pl.UNBOUNDED)return!0;let r=s.multiplier,d=s.currentTime,m=s.startTime,h=!1;if(l===pl.LOOP_STOP)h=rt.greaterThan(d,m)||d.equals(m)&&r>0;else{let u=s.stopTime;h=rt.greaterThan(d,m)&&rt.lessThan(d,u)||d.equals(m)&&r>0||d.equals(u)&&r<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,Lt.defineProperty(this,"_isSystemTimeAvailable",function(){let s=e._clockViewModel;if(s.clockRange===pl.UNBOUNDED)return!0;let r=s.systemTime;return rt.greaterThanOrEquals(r,s.startTime)&&rt.lessThanOrEquals(r,s.stopTime)}),this._isAnimating=void 0,Lt.defineProperty(this,"_isAnimating",function(){return e._clockViewModel.shouldAnimate&&(e._canAnimate||e.shuttleRingDragging)});let n=Ri(function(){let s=e._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:e._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new YU(n,{toggled:Lt.computed(function(){return!e._isAnimating}),tooltip:"Pause"});let i=Ri(function(){let s=e._clockViewModel,l=s.multiplier;l>0&&(s.multiplier=-l),s.shouldAnimate=!0});this._playReverseViewModel=new YU(i,{toggled:Lt.computed(function(){return e._isAnimating&&t.multiplier<0}),tooltip:"Play Reverse"});let o=Ri(function(){let s=e._clockViewModel,l=s.multiplier;l<0&&(s.multiplier=-l),s.shouldAnimate=!0});this._playForwardViewModel=new YU(o,{toggled:Lt.computed(function(){return e._isAnimating&&t.multiplier>0&&t.clockStep!==ya.SYSTEM_CLOCK}),tooltip:"Play Forward"});let a=Ri(function(){e._clockViewModel.clockStep=ya.SYSTEM_CLOCK},Lt.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new YU(a,{toggled:Lt.computed(function(){return t.clockStep===ya.SYSTEM_CLOCK}),tooltip:Lt.computed(function(){return e._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Ri(function(){let s=e._clockViewModel,l=e._allShuttleRingTicks,r=s.multiplier,d=Qrt(r,l)-1;d>=0&&(s.multiplier=l[d])}),this._faster=Ri(function(){let s=e._clockViewModel,l=e._allShuttleRingTicks,r=s.multiplier,d=Qrt(r,l)+1;d<l.length&&(s.multiplier=l[d])})}kV.defaultDateFormatter=function(t,e){let n=rt.toGregorianDate(t);return`${F5e[n.month-1]} ${n.day} ${n.year}`};kV.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];kV.defaultTimeFormatter=function(t,e){let n=rt.toGregorianDate(t),i=Math.round(n.millisecond);return Math.abs(e._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};kV.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};kV.prototype.setShuttleRingTicks=function(t){let e,n,i,o={},a=this._sortedFilteredPositiveTicks;for(a.length=0,e=0,n=t.length;e<n;++e)i=t[e],o.hasOwnProperty(i)||(o[i]=!0,a.push(i));a.sort(W2t);let s=[];for(n=a.length,e=n-1;e>=0;--e)i=a[e],i!==0&&s.push(-i);Array.prototype.push.apply(s,a),this._allShuttleRingTicks=s};Object.defineProperties(kV.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(t){this._dateFormatter=t}},timeFormatter:{get:function(){return this._timeFormatter},set:function(t){this._timeFormatter=t}}});kV._maxShuttleRingAngle=AN;kV._realtimeShuttleRingAngle=XU;var AD=kV;var jfa=b(W(),1);var Ofa=b(W(),1);function f2t(t){t=f(t,f.EMPTY_OBJECT);let e=t.globe,n=f(t.imageryProviderViewModels,[]),i=f(t.terrainProviderViewModels,[]);this._globe=e,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,Lt.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=Lt.getObservable(this,"imageryProviderViewModels"),a=Lt.pureComputed(function(){let h=o(),u={},R;for(R=0;R<h.length;R++){let U=h[R],G=U.category;c(u[G])?u[G].push(U):u[G]=[U]}let V=Object.keys(u),F=[];for(R=0;R<V.length;R++){let U=V[R];F.push({name:U,providers:u[U]})}return F});this._imageryProviders=a;let s=Lt.getObservable(this,"terrainProviderViewModels"),l=Lt.pureComputed(function(){let h=s(),u={},R;for(R=0;R<h.length;R++){let U=h[R],G=U.category;c(u[G])?u[G].push(U):u[G]=[U]}let V=Object.keys(u),F=[];for(R=0;R<V.length;R++){let U=V[R];F.push({name:U,providers:u[U]})}return F});this._terrainProviders=l,this.buttonTooltip=void 0,Lt.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,u=this.selectedTerrain,R=c(h)?h.name:void 0,V=c(u)?u.name:void 0;return c(R)&&c(V)?`${R} +${V}`:c(R)?R:V}),this.buttonImageUrl=void 0,Lt.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(c(h))return h.iconUrl}),this.selectedImagery=void 0;let r=Lt.observable();this._currentImageryLayers=[],Lt.defineProperty(this,"selectedImagery",{get:function(){return r()},set:function(h){if(r()===h){this.dropDownVisible=!1;return}let u,R=this._currentImageryLayers,V=R.length,F=this._globe.imageryLayers,U=!1;for(u=0;u<V;u++){let G=F.length;for(let A=0;A<G;A++){let S=F.get(A);if(S===R[u]){F.remove(S),U=!0;break}}}if(c(h)){let G=h.creationCommand();if(Array.isArray(G)){let A=G.length;for(this._currentImageryLayers=[],u=A-1;u>=0;u--){let S=$r.fromProviderAsync(G[u]);F.add(S,0),this._currentImageryLayers.push(S)}}else{this._currentImageryLayers=[];let A=$r.fromProviderAsync(G);if(A.name=h.name,U)F.add(A,0);else{let S=F.get(0);c(S)&&F.remove(S),F.add(A,0)}this._currentImageryLayers.push(A)}}r(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let d=Lt.observable();Lt.defineProperty(this,"selectedTerrain",{get:function(){return d()},set:function(h){if(d()===h){this.dropDownVisible=!1;return}let u;if(c(h)&&(u=h.creationCommand()),c(u)&&!c(u.then))this._globe.depthTestAgainstTerrain=!(u instanceof bV),this._globe.terrainProvider=u;else if(c(u)){let R=!1,V=this._globe.terrainProviderChanged.addEventListener(()=>{R=!0,V()}),U=new lD(u).readyEvent.addEventListener(G=>{R||(this._globe.depthTestAgainstTerrain=!(G instanceof bV),this._globe.terrainProvider=G,U())})}d(h),this.dropDownVisible=!1}});let m=this;this._toggleDropDown=Ri(function(){m.dropDownVisible=!m.dropDownVisible}),this.selectedImagery=f(t.selectedImageryProviderViewModel,n[0]),this.selectedTerrain=f(t.selectedTerrainProviderViewModel,i[0])}Object.defineProperties(f2t.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var SD=f2t;function p4(t,e){t=Ui(t);let n=new SD(e),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),t.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let a=document.createElement("div");a.className="cesium-baseLayerPicker-dropDown",a.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),t.appendChild(a);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",a.appendChild(s);let l=document.createElement("div");l.className="cesium-baseLayerPicker-section",l.setAttribute("data-bind","foreach: _imageryProviders"),a.appendChild(l);let r=document.createElement("div");r.className="cesium-baseLayerPicker-category",l.appendChild(r);let d=document.createElement("div");d.className="cesium-baseLayerPicker-categoryTitle",d.setAttribute("data-bind","text: name"),r.appendChild(d);let m=document.createElement("div");m.className="cesium-baseLayerPicker-choices",m.setAttribute("data-bind","foreach: providers"),r.appendChild(m);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),m.appendChild(h);let u=document.createElement("img");u.className="cesium-baseLayerPicker-itemIcon",u.setAttribute("data-bind","attr: { src: iconUrl }"),u.setAttribute("draggable","false"),h.appendChild(u);let R=document.createElement("div");R.className="cesium-baseLayerPicker-itemLabel",R.setAttribute("data-bind","text: name"),h.appendChild(R);let V=document.createElement("div");V.className="cesium-baseLayerPicker-sectionTitle",V.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),V.innerHTML="Terrain",a.appendChild(V);let F=document.createElement("div");F.className="cesium-baseLayerPicker-section",F.setAttribute("data-bind","foreach: _terrainProviders"),a.appendChild(F);let U=document.createElement("div");U.className="cesium-baseLayerPicker-category",F.appendChild(U);let G=document.createElement("div");G.className="cesium-baseLayerPicker-categoryTitle",G.setAttribute("data-bind","text: name"),U.appendChild(G);let A=document.createElement("div");A.className="cesium-baseLayerPicker-choices",A.setAttribute("data-bind","foreach: providers"),U.appendChild(A);let S=document.createElement("div");S.className="cesium-baseLayerPicker-item",S.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),A.appendChild(S);let g=document.createElement("img");g.className="cesium-baseLayerPicker-itemIcon",g.setAttribute("data-bind","attr: { src: iconUrl }"),g.setAttribute("draggable","false"),S.appendChild(g);let C=document.createElement("div");C.className="cesium-baseLayerPicker-itemLabel",C.setAttribute("data-bind","text: name"),S.appendChild(C),Lt.applyBindings(n,i),Lt.applyBindings(n,a),this._viewModel=n,this._container=t,this._element=i,this._dropPanel=a,this._closeDropDown=function(y){i.contains(y.target)||a.contains(y.target)||(n.dropDownVisible=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(p4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});p4.prototype.isDestroyed=function(){return!1};p4.prototype.destroy=function(){return In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Lt.cleanNode(this._element),Lt.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),At(this)};var TD=p4;var iFa=b(W(),1);function F2t(t){let e=t.creationFunction;c(e.canExecute)||(e=Ri(e)),this._creationCommand=e,this.name=t.name,this.tooltip=t.tooltip,this.iconUrl=t.iconUrl,this._category=f(t.category,""),Lt.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(F2t.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Nl=F2t;var lFa=b(W(),1);function A5e(){let t=[],e=devicePixelRatio>=2;return t.push(new Nl({name:"Bing Maps Aerial",iconUrl:Dn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return pW({style:hW.AERIAL})}})),t.push(new Nl({name:"Bing Maps Aerial with Labels",iconUrl:Dn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return pW({style:hW.AERIAL_WITH_LABELS})}})),t.push(new Nl({name:"Bing Maps Roads",iconUrl:Dn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return pW({style:hW.ROAD})}})),t.push(new Nl({name:"ArcGIS World Imagery",iconUrl:Dn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return cW.fromBasemapType(oZ.SATELLITE,{enablePickFeatures:!1})}})),t.push(new Nl({name:"ArcGIS World Hillshade",iconUrl:Dn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return cW.fromBasemapType(oZ.HILLSHADE,{enablePickFeatures:!1})}})),t.push(new Nl({name:"Esri World Ocean",iconUrl:Dn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return cW.fromBasemapType(oZ.OCEANS,{enablePickFeatures:!1})}})),t.push(new Nl({name:"Open\xADStreet\xADMap",iconUrl:Dn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new IW({url:"https://tile.openstreetmap.org/"})}})),t.push(new Nl({name:"Stadia x Stamen Watercolor",iconUrl:Dn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new IW({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> @@ -15532,7 +15532,7 @@ https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creatio https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new IW({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:e,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),t.push(new Nl({name:"Sentinel-2",iconUrl:Dn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return mW.fromAssetId(3954)}})),t.push(new Nl({name:"Blue Marble",iconUrl:Dn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return mW.fromAssetId(3845)}})),t.push(new Nl({name:"Earth at night",iconUrl:Dn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return mW.fromAssetId(3812)}})),t.push(new Nl({name:"Natural Earth\xA0II",iconUrl:Dn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. -http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return hU.fromUrl(Dn("Assets/Textures/NaturalEarthII"))}})),t}var gD=A5e;var mFa=R(W(),1);function T5e(){let t=[];return t.push(new Nl({name:"WGS84 Ellipsoid",iconUrl:Dn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new Ru}})),t.push(new Nl({name:"Cesium World Terrain",iconUrl:Dn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return KS({requestWaterMask:!0,requestVertexNormals:!0})}})),t}var ED=T5e;var TFa=R(W(),1);var bFa=R(W(),1);function S5e(t){let e;if(c(t)){e="Command Statistics";let n=t.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),a;if(o===7)a="1, 2 and 3";else{let s=[];for(let l=2;l>=0;l--){let r=Math.pow(2,l);o>=r&&(s.push(l+1),o-=r)}a=s.reverse().join(" and ")}e+=`<br>    ${n[i]} in frustum ${a}`}e+=`<br>Total: ${t.totalCommands}`}return e}function krt(t,e,n){let i=Math.min(n,e);return i=Math.max(i,t),i}var g5e=new di,E5e=new p;function CD(t,e){let n=this,i=t.canvas,o=new sp(i);this._eventHandler=o,this._scene=t,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=e;let a=this._scene.globe;a.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",Lt.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=bi(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=bi(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=bi(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=bi(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=Lt.getObservable(this,"frustums").subscribe(function(d){n._scene.debugShowFrustums=d,n._scene.requestRender()}),this._frustumPlanesSubscription=Lt.getObservable(this,"frustumPlanes").subscribe(function(d){n._scene.debugShowFrustumPlanes=d,n._scene.requestRender()}),this._performanceSubscription=Lt.getObservable(this,"performance").subscribe(function(d){d?n._performanceDisplay=new bW({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=bi(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=Lt.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=bi(function(){if(n.primitiveReferenceFrame){let d=n._primitive.modelMatrix;n._modelMatrixPrimitive=new D5({modelMatrix:d}),n._scene.primitives.add(n._modelMatrixPrimitive)}else c(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=Lt.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=bi(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(d){return c(n._modelMatrixPrimitive)&&d.owner===n._modelMatrixPrimitive._primitive?!0:c(n._primitive)?d.owner===n._primitive||d.owner===n._primitive._billboardCollection||d.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=Lt.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=Lt.getObservable(this,"wireframe").subscribe(function(d){a._surface.tileProvider._debug.wireframe=d,n._scene.requestRender()}),this._depthFrustumSubscription=Lt.getObservable(this,"depthFrustum").subscribe(function(d){n._scene.debugShowDepthFrustum=d,n._scene.requestRender()}),this._incrementDepthFrustum=bi(function(){let d=n.depthFrustum+1;return n.depthFrustum=krt(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._decrementDepthFrustum=bi(function(){let d=n.depthFrustum-1;return n.depthFrustum=krt(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=Lt.getObservable(this,"suspendUpdates").subscribe(function(d){a._surface._debug.suspendLodUpdate=d,d||(n.filterTile=!1)});let s;this._showTileCoordinates=bi(function(){return n.tileCoordinates&&!c(s)?s=t.imageryLayers.addImageryProvider(new dD({tilingScheme:t.terrainProvider.tilingScheme})):!n.tileCoordinates&&c(s)&&(t.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=Lt.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=Lt.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=bi(function(){return n.tileBoundingSphere?a._surface.tileProvider._debug.boundingSphereTile=n._tile:a._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=bi(function(){return n.filterTile?(n.suspendUpdates=!0,a._surface._tilesToRender=[],c(n._tile)&&n._tile.renderable&&a._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=Lt.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function l(d){let m=n._scene.pick({x:d.position.x,y:d.position.y});c(m)&&(n.primitive=c(m.collection)?m.collection:m.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=bi(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=Lt.getObservable(this,"pickPrimitiveActive").subscribe(function(d){d?o.setInputAction(l,Zi.LEFT_CLICK):o.removeInputAction(Zi.LEFT_CLICK)});function r(d){let m,h=a.ellipsoid,Z=n._scene.camera.getPickRay(d.position,g5e),b=a.pick(Z,n._scene,E5e);if(c(b)){let u=h.cartesianToCartographic(b),F=a._surface.tileProvider._tilesToRenderByTextureCount;for(let U=0;!m&&U<F.length;++U){let G=F[U];if(c(G))for(let A=0;!m&&A<G.length;++A){let T=G[A];Gt.contains(T.rectangle,u)&&(m=T)}}}n.tile=m,n.pickTileActive=!1}this._pickTile=bi(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=Lt.getObservable(this,"pickTileActive").subscribe(function(d){d?o.setInputAction(r,Zi.LEFT_CLICK):o.removeInputAction(Zi.LEFT_CLICK)}),this._removePostRenderEvent=t.postRender.addEventListener(function(){n._update()})}Object.defineProperties(CD.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let t=this;return bi(function(){t.tile=t.tile.parent})}},selectNW:{get:function(){let t=this;return bi(function(){t.tile=t.tile.northwestChild})}},selectNE:{get:function(){let t=this;return bi(function(){t.tile=t.tile.northeastChild})}},selectSW:{get:function(){let t=this;return bi(function(){t.tile=t.tile.southwestChild})}},selectSE:{get:function(){let t=this;return bi(function(){t.tile=t.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(t){let e=this._primitive;t!==e&&(this.hasPickedPrimitive=!0,c(e)&&(e.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,c(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=t,t.show=!1,setTimeout(function(){t.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(t){if(c(t)){this.hasPickedTile=!0;let e=this._tile;if(t!==e){this.tileText=`L: ${t.level} X: ${t.x} Y: ${t.y}`,this.tileText+=`<br>SW corner: ${t.rectangle.west}, ${t.rectangle.south}`,this.tileText+=`<br>NE corner: ${t.rectangle.east}, ${t.rectangle.north}`;let n=t.data;c(n)&&c(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=t,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});CD.prototype._update=function(){this.frustums&&(this.frustumStatisticText=S5e(this._scene.debugFrustumStatistics));let t=this._scene.numberOfFrustums;this._numberOfFrustums=t,this.depthFrustum=krt(1,t,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${t}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};CD.prototype.isDestroyed=function(){return!1};CD.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),At(this)};var ID=CD;function u4(t,e){t=Ui(t);let n=document.createElement("div"),i=new ID(e,n);this._viewModel=i,this._container=t;let o=document.createElement("div");this._element=o;let a=document.createElement("div");a.textContent="Cesium Inspector",a.className="cesium-cesiumInspector-button",a.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(a),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),t.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let l=gd.createSection,r=gd.createCheckbox,d=l(s,"General","generalVisible","toggleGeneral"),m=r("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),m.appendChild(h),d.appendChild(m),d.appendChild(r("Show Frustum Planes","frustumPlanes")),d.appendChild(r("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",d.appendChild(n);let Z=document.createElement("div");Z.className="cesium-cesiumInspector-shaderCache",Z.setAttribute("data-bind","html: shaderCacheText"),d.appendChild(Z);let b=document.createElement("div");d.appendChild(b);let u=document.createElement("span");u.setAttribute("data-bind",'html: "     Frustum:"'),b.appendChild(u);let F=document.createElement("span");F.setAttribute("data-bind","text: depthFrustumText"),b.appendChild(F);let U=document.createElement("input");U.type="button",U.value="-",U.className="cesium-cesiumInspector-pickButton",U.setAttribute("data-bind","click: decrementDepthFrustum"),b.appendChild(U);let G=document.createElement("input");G.type="button",G.value="+",G.className="cesium-cesiumInspector-pickButton",G.setAttribute("data-bind","click: incrementDepthFrustum"),b.appendChild(G);let A=l(s,"Primitives","primitivesVisible","togglePrimitives"),T=document.createElement("div");T.className="cesium-cesiumInspector-pickSection",A.appendChild(T);let g=document.createElement("input");g.type="button",g.value="Pick a primitive",g.className="cesium-cesiumInspector-pickButton",g.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let C=document.createElement("div");C.className="cesium-cesiumInspector-center",C.appendChild(g),T.appendChild(C),T.appendChild(r("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),T.appendChild(r("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=r("Show only selected","filterPrimitive","hasPickedPrimitive"),T.appendChild(this._primitiveOnly);let y=l(s,"Terrain","terrainVisible","toggleTerrain"),Y=document.createElement("div");Y.className="cesium-cesiumInspector-pickSection",y.appendChild(Y);let Q=document.createElement("input");Q.type="button",Q.value="Pick a tile",Q.className="cesium-cesiumInspector-pickButton",Q.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),C=document.createElement("div"),C.appendChild(Q),C.className="cesium-cesiumInspector-center",Y.appendChild(C);let J=document.createElement("div");Y.appendChild(J);let M=document.createElement("input");M.type="button",M.value="Parent",M.className="cesium-cesiumInspector-pickButton",M.setAttribute("data-bind","click: selectParent");let V=document.createElement("input");V.type="button",V.value="NW",V.className="cesium-cesiumInspector-pickButton",V.setAttribute("data-bind","click: selectNW");let E=document.createElement("input");E.type="button",E.value="NE",E.className="cesium-cesiumInspector-pickButton",E.setAttribute("data-bind","click: selectNE");let I=document.createElement("input");I.type="button",I.value="SW",I.className="cesium-cesiumInspector-pickButton",I.setAttribute("data-bind","click: selectSW");let B=document.createElement("input");B.type="button",B.value="SE",B.className="cesium-cesiumInspector-pickButton",B.setAttribute("data-bind","click: selectSE");let X=document.createElement("div");X.className="cesium-cesiumInspector-tileText",J.className="cesium-cesiumInspector-frustumStatistics",J.appendChild(X),J.setAttribute("data-bind","visible: hasPickedTile"),X.setAttribute("data-bind","html: tileText");let _=document.createElement("div");_.className="cesium-cesiumInspector-relativeText",_.textContent="Select relative:",J.appendChild(_);let P=document.createElement("table"),w=document.createElement("tr"),z=document.createElement("tr"),H=document.createElement("td");H.appendChild(M);let nt=document.createElement("td");nt.appendChild(V);let $=document.createElement("td");$.appendChild(E),w.appendChild(H),w.appendChild(nt),w.appendChild($);let dt=document.createElement("td"),q=document.createElement("td");q.appendChild(I);let at=document.createElement("td");at.appendChild(B),z.appendChild(dt),z.appendChild(q),z.appendChild(at),P.appendChild(w),P.appendChild(z),J.appendChild(P),Y.appendChild(r("Show bounding volume","tileBoundingSphere","hasPickedTile")),Y.appendChild(r("Show only selected","filterTile","hasPickedTile")),y.appendChild(r("Wireframe","wireframe")),y.appendChild(r("Suspend LOD update","suspendUpdates")),y.appendChild(r("Show tile coordinates","tileCoordinates")),Lt.applyBindings(i,this._element)}Object.defineProperties(u4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});u4.prototype.isDestroyed=function(){return!1};u4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),At(this)};var ND=u4;var XFa=R(W(),1);var NFa=R(W(),1);function Z4(t,e){c(e)||(e=document.body),e=Ui(e);let n=this,i=Lt.observable(Ds.fullscreen),o=Lt.observable(Ds.enabled),a=e.ownerDocument;this.isFullscreen=void 0,Lt.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,Lt.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Ds.enabled)}}),this.tooltip=void 0,Lt.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=bi(function(){Ds.fullscreen?Ds.exitFullscreen():Ds.requestFullscreen(n._fullscreenElement)},Lt.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=f(Ui(t),a.body),this._callback=function(){i(Ds.fullscreen)},a.addEventListener(Ds.changeEventName,this._callback)}Object.defineProperties(Z4.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(t){this._fullscreenElement=t}},command:{get:function(){return this._command}}});Z4.prototype.isDestroyed=function(){return!1};Z4.prototype.destroy=function(){document.removeEventListener(Ds.changeEventName,this._callback),At(this)};var yD=Z4;var C5e="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",I5e="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function V4(t,e){t=Ui(t);let n=new yD(e,t);n._exitFullScreenPath=I5e,n._enterFullScreenPath=C5e;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),t.appendChild(i),Lt.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(V4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});V4.prototype.isDestroyed=function(){return!1};V4.prototype.destroy=function(){return this._viewModel.destroy(),Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var BD=V4;var jFa=R(W(),1);var OFa=R(W(),1);var Ukt=1e3;function Yu(t){c(t.geocoderServices)?this._geocoderServices=t.geocoderServices:this._geocoderServices=[new N5({scene:t.scene})],this._viewContainer=t.container,this._scene=t.scene,this._flightDuration=t.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new It,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=Akt,this._handleArrowUp=Gkt;let e=this;this._suggestionsVisible=Lt.pureComputed(function(){let o=Lt.getObservable(e,"_suggestions")().length>0,a=Lt.getObservable(e,"_showSuggestions")();return o&&a}),this._searchCommand=bi(function(i){if(i=f(i,IU.SEARCH),e._focusTextbox=!1,c(e._selectedSuggestion))return e.activateSuggestion(e._selectedSuggestion),!1;if(e.hideSuggestions(),e.isSearchInProgress)Y5e(e);else return Q5e(e,e._geocoderServices,i)}),this.deselectSuggestion=function(){e._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let a=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(a||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let a=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,l=o.key==="Enter"||o.keyCode===13;return s?Gkt(e):a?Akt(e):l&&e._searchCommand(),!0},this.activateSuggestion=function(i){e.hideSuggestions(),e._searchText=i.displayName;let o=i.destination;gkt(e),e.destinationFound(e,o)},this.hideSuggestions=function(){e._showSuggestions=!1,e._selectedSuggestion=void 0},this.showSuggestions=function(){e._showSuggestions=!0},this.handleMouseover=function(i,o){i!==e._selectedSuggestion&&(e._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=f(t.autocomplete,!0),this.destinationFound=f(t.destinationFound,Yu.flyToDestination),this._focusTextbox=!1,Lt.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=Lt.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){Yu._updateSearchSuggestions(e)}),this.isSearchInProgress=void 0,Lt.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,Lt.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,Lt.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(Yu.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});Yu.prototype.destroy=function(){this._suggestionSubscription.dispose()};function Gkt(t){if(t._suggestions.length===0)return;let e=t._suggestions.indexOf(t._selectedSuggestion);if(e===-1||e===0){t._selectedSuggestion=void 0;return}let n=e-1;t._selectedSuggestion=t._suggestions[n],Yu._adjustSuggestionsScroll(t,n)}function Akt(t){if(t._suggestions.length===0)return;let e=t._suggestions.length,i=(t._suggestions.indexOf(t._selectedSuggestion)+1)%e;t._selectedSuggestion=t._suggestions[i],Yu._adjustSuggestionsScroll(t,i)}function N5e(t,e){let n=c(e)?e.availability:void 0;return c(n)?zS(e,[t]).then(function(i){return t=i[0],t.height+=Ukt,t}):(t.height+=Ukt,Promise.resolve(t))}function y5e(t,e){let n=t._scene,o=n.mapProjection.ellipsoid,a=n.camera,s=n.terrainProvider,l=e,r;return e instanceof Gt?k.equalsEpsilon(e.south,e.north,k.EPSILON7)&&k.equalsEpsilon(e.east,e.west,k.EPSILON7)?e=Gt.center(e):r=rg(e,n):e=o.cartesianToCartographic(e),c(r)||(r=N5e(e,s)),r.then(function(d){l=o.cartographicToCartesian(d)}).finally(function(){a.flyTo({destination:l,complete:function(){t._complete.raiseEvent()},duration:t._flightDuration,endTransform:L.IDENTITY})})}async function B5e(t,e,n){try{return{state:"fulfilled",value:await t.geocode(e,n),credits:t.credit}}catch(i){return{state:"rejected",reason:i}}}async function Q5e(t,e,n){let i=t._searchText;if(Skt(i)){t.showSuggestions();return}t._isSearchInProgress=!0,t._wasGeocodeCancelled=!1;let o,a;for(o=0;o<e.length;o++){if(t._wasGeocodeCancelled)return;if(a=await B5e(e[o],i,n),c(a)&&a.state==="fulfilled"&&a.value.length>0)break}if(t._wasGeocodeCancelled)return;t._isSearchInProgress=!1,xrt(t);let s=a.value;if(a.state==="fulfilled"&&c(s)&&s.length>0){t._searchText=s[0].displayName,t.destinationFound(t,s[0].destination);let l=Tkt(t,sN.getCreditsFromResult(s[0]));c(l)||Yrt(t,e[o].credit);return}t._searchText=`${i} (not found)`}function Yrt(t,e){c(e)&&!t._scene.isDestroyed()&&!t._scene.frameState.creditDisplay.isDestroyed()&&(t._scene.frameState.creditDisplay.addStaticCredit(e),t._previousCredits.push(e))}function Tkt(t,e){return c(e)&&e.forEach(n=>Yrt(t,n)),e}function xrt(t){!t._scene.isDestroyed()&&!t._scene.frameState.creditDisplay.isDestroyed()&&t._previousCredits.forEach(e=>{t._scene.frameState.creditDisplay.removeStaticCredit(e)}),t._previousCredits.length=0}function k5e(t,e){let n=Ui(t._viewContainer),i=n.getElementsByClassName("search-results")[0],a=n.getElementsByTagName("li")[e];if(e===0){i.scrollTop=0;return}let s=a.offsetTop;s+a.clientHeight>i.clientHeight?i.scrollTop=s+a.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function Y5e(t){t._isSearchInProgress&&(t._isSearchInProgress=!1,t._wasGeocodeCancelled=!0)}function Skt(t){return/^\s*$/.test(t)}function gkt(t){Lt.getObservable(t,"_suggestions").removeAll()}async function x5e(t){if(!t.autoComplete)return;let e=t._searchText;if(gkt(t),xrt(t),!Skt(e))for(let n of t._geocoderServices){let i=await n.geocode(e,IU.AUTOCOMPLETE);if(t._suggestions=t._suggestions.concat(i),i.length>0){let o=!0;i.forEach(a=>{let s=sN.getCreditsFromResult(a);o=o&&!c(s),Tkt(t,s)}),o&&Yrt(t,n.credit)}if(t._suggestions.length>=5)return}}Yu.flyToDestination=y5e;Yu._updateSearchSuggestions=x5e;Yu._adjustSuggestionsScroll=k5e;Yu.prototype.isDestroyed=function(){return!1};Yu.prototype.destroy=function(){return xrt(this),At(this)};var QD=Yu;var X5e="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",J5e="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function b4(t){let e=Ui(t.container),n=new QD(t);n._startSearchPath=X5e,n._stopSearchPath=J5e;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let a=document.createElement("span");a.className="cesium-geocoder-searchButton",a.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(a),e.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let l=document.createElement("ul");l.setAttribute("data-bind","foreach: _suggestions");let r=document.createElement("li");l.appendChild(r),r.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(l),e.appendChild(s),Lt.applyBindings(n,i),Lt.applyBindings(n,s),this._container=e,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(d){let m=d.target;typeof d.composedPath=="function"&&(m=d.composedPath()[0]),e.contains(m)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(d){n._focusTextbox=!0,n.showSuggestions()},In.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),e.addEventListener("pointerup",this._onInputEnd,!0),e.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),e.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),e.addEventListener("touchend",this._onInputEnd,!0),e.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(b4.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});b4.prototype.isDestroyed=function(){return!1};b4.prototype.destroy=function(){let t=this._container;return In.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),t.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),t.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),t.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),Lt.cleanNode(this._form),Lt.cleanNode(this._searchSuggestionsContainer),t.removeChild(this._form),t.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),At(this)};var kD=b4;var rUa=R(W(),1);var eUa=R(W(),1);function Ekt(t,e){this._scene=t,this._duration=e;let n=this;this._command=bi(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",Lt.track(this,["tooltip"])}Object.defineProperties(Ekt.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(t){this._duration=t}}});var YD=Ekt;function R4(t,e,n){t=Ui(t);let i=new YD(e,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),t.appendChild(o),Lt.applyBindings(i,o),this._container=t,this._viewModel=i,this._element=o}Object.defineProperties(R4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});R4.prototype.isDestroyed=function(){return!1};R4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var xD=R4;var RUa=R(W(),1);var hUa=R(W(),1);function L5e(t,e){e.currentTarget.parentElement.parentElement.querySelector(`#${t.name}-expander`).classList.toggle("active"),e.currentTarget.textContent=e.currentTarget.textContent==="+"?"-":"+"}function Ikt(t,e){Lt.track(t);for(let n=0;n<t.sublayers.length;n++)Ikt(t.sublayers[n],e)}function W4(t){return t.modelName==="FullModel"}function Nkt(t){return t.modelName==="Overview"}function ykt(t){return Nkt(t)||W4(t)}function Ckt(t,e){if(ykt(t)){t.visibility=!1;for(let i=0;i<t.sublayers.length;i++)t.sublayers[i].visibility=!0;let n={name:t.name,modelName:t.modelName,disable:Lt.observable(!1),index:e.sublayers.length};return e.topLayers.push(n),e.sublayers.push(t),n}}function M5e(t,e){if(ykt(t)){e.sublayers.forEach(i=>i.visibility=!1),e.sublayers[t.index].visibility=!0;let n=document.getElementById("bsl-wrapper");W4(t)?(e.currentLevel=e.selectedLevel,n.style.display="block"):(e.selectedLevel=e.currentLevel,e.currentLevel="All",n.style.display="none")}}async function _5e(t,e){try{let n=t.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=t.getAttributeValues(n[i]);for(let a=0;a<o.length;a++)e.push(o[a])}e.sort((i,o)=>i-o),e.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function D5e(t){let e=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:Lt.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:Lt.observable(!0),index:-1}],currentLayer:Lt.observable(),expandClickHandler:L5e,setOptionDisable:function(i,o){Lt.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){M5e(i,e.viewModel)});let n=t.sublayers;for(let i=0;i<n.length;i++){Ikt(n[i],this.viewModel);let o=Ckt(n[i],this.viewModel);c(o)&&(Nkt(o)||!c(this.viewModel.defaultLayer)&&W4(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){t.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:t.show,sublayers:t.sublayers};this.viewModel.defaultLayer=Ckt(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){t.show=W4(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return _5e(t,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?t.filterByAttributes([{name:"BldgLevel",values:[i]}]):t.filterByAttributes()}),this.viewModel}var XD=D5e;function O5e(t,e){let n=document.getElementById(t),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return hU.fromUrl(Dn("Assets/Textures/NaturalEarthII"))}})),t}var gD=A5e;var mFa=b(W(),1);function S5e(){let t=[];return t.push(new Nl({name:"WGS84 Ellipsoid",iconUrl:Dn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new bV}})),t.push(new Nl({name:"Cesium World Terrain",iconUrl:Dn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return KT({requestWaterMask:!0,requestVertexNormals:!0})}})),t}var ED=S5e;var SFa=b(W(),1);var RFa=b(W(),1);function T5e(t){let e;if(c(t)){e="Command Statistics";let n=t.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),a;if(o===7)a="1, 2 and 3";else{let s=[];for(let l=2;l>=0;l--){let r=Math.pow(2,l);o>=r&&(s.push(l+1),o-=r)}a=s.reverse().join(" and ")}e+=`<br>    ${n[i]} in frustum ${a}`}e+=`<br>Total: ${t.totalCommands}`}return e}function krt(t,e,n){let i=Math.min(n,e);return i=Math.max(i,t),i}var g5e=new di,E5e=new p;function CD(t,e){let n=this,i=t.canvas,o=new sp(i);this._eventHandler=o,this._scene=t,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=e;let a=this._scene.globe;a.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",Lt.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Ri(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Ri(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Ri(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Ri(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=Lt.getObservable(this,"frustums").subscribe(function(d){n._scene.debugShowFrustums=d,n._scene.requestRender()}),this._frustumPlanesSubscription=Lt.getObservable(this,"frustumPlanes").subscribe(function(d){n._scene.debugShowFrustumPlanes=d,n._scene.requestRender()}),this._performanceSubscription=Lt.getObservable(this,"performance").subscribe(function(d){d?n._performanceDisplay=new RW({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Ri(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=Lt.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Ri(function(){if(n.primitiveReferenceFrame){let d=n._primitive.modelMatrix;n._modelMatrixPrimitive=new D5({modelMatrix:d}),n._scene.primitives.add(n._modelMatrixPrimitive)}else c(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=Lt.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Ri(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(d){return c(n._modelMatrixPrimitive)&&d.owner===n._modelMatrixPrimitive._primitive?!0:c(n._primitive)?d.owner===n._primitive||d.owner===n._primitive._billboardCollection||d.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=Lt.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=Lt.getObservable(this,"wireframe").subscribe(function(d){a._surface.tileProvider._debug.wireframe=d,n._scene.requestRender()}),this._depthFrustumSubscription=Lt.getObservable(this,"depthFrustum").subscribe(function(d){n._scene.debugShowDepthFrustum=d,n._scene.requestRender()}),this._incrementDepthFrustum=Ri(function(){let d=n.depthFrustum+1;return n.depthFrustum=krt(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Ri(function(){let d=n.depthFrustum-1;return n.depthFrustum=krt(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=Lt.getObservable(this,"suspendUpdates").subscribe(function(d){a._surface._debug.suspendLodUpdate=d,d||(n.filterTile=!1)});let s;this._showTileCoordinates=Ri(function(){return n.tileCoordinates&&!c(s)?s=t.imageryLayers.addImageryProvider(new dD({tilingScheme:t.terrainProvider.tilingScheme})):!n.tileCoordinates&&c(s)&&(t.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=Lt.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=Lt.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Ri(function(){return n.tileBoundingSphere?a._surface.tileProvider._debug.boundingSphereTile=n._tile:a._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Ri(function(){return n.filterTile?(n.suspendUpdates=!0,a._surface._tilesToRender=[],c(n._tile)&&n._tile.renderable&&a._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=Lt.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function l(d){let m=n._scene.pick({x:d.position.x,y:d.position.y});c(m)&&(n.primitive=c(m.collection)?m.collection:m.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Ri(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=Lt.getObservable(this,"pickPrimitiveActive").subscribe(function(d){d?o.setInputAction(l,ui.LEFT_CLICK):o.removeInputAction(ui.LEFT_CLICK)});function r(d){let m,h=a.ellipsoid,u=n._scene.camera.getPickRay(d.position,g5e),R=a.pick(u,n._scene,E5e);if(c(R)){let V=h.cartesianToCartographic(R),F=a._surface.tileProvider._tilesToRenderByTextureCount;for(let U=0;!m&&U<F.length;++U){let G=F[U];if(c(G))for(let A=0;!m&&A<G.length;++A){let S=G[A];Gt.contains(S.rectangle,V)&&(m=S)}}}n.tile=m,n.pickTileActive=!1}this._pickTile=Ri(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=Lt.getObservable(this,"pickTileActive").subscribe(function(d){d?o.setInputAction(r,ui.LEFT_CLICK):o.removeInputAction(ui.LEFT_CLICK)}),this._removePostRenderEvent=t.postRender.addEventListener(function(){n._update()})}Object.defineProperties(CD.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let t=this;return Ri(function(){t.tile=t.tile.parent})}},selectNW:{get:function(){let t=this;return Ri(function(){t.tile=t.tile.northwestChild})}},selectNE:{get:function(){let t=this;return Ri(function(){t.tile=t.tile.northeastChild})}},selectSW:{get:function(){let t=this;return Ri(function(){t.tile=t.tile.southwestChild})}},selectSE:{get:function(){let t=this;return Ri(function(){t.tile=t.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(t){let e=this._primitive;t!==e&&(this.hasPickedPrimitive=!0,c(e)&&(e.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,c(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=t,t.show=!1,setTimeout(function(){t.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(t){if(c(t)){this.hasPickedTile=!0;let e=this._tile;if(t!==e){this.tileText=`L: ${t.level} X: ${t.x} Y: ${t.y}`,this.tileText+=`<br>SW corner: ${t.rectangle.west}, ${t.rectangle.south}`,this.tileText+=`<br>NE corner: ${t.rectangle.east}, ${t.rectangle.north}`;let n=t.data;c(n)&&c(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=t,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});CD.prototype._update=function(){this.frustums&&(this.frustumStatisticText=T5e(this._scene.debugFrustumStatistics));let t=this._scene.numberOfFrustums;this._numberOfFrustums=t,this.depthFrustum=krt(1,t,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${t}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};CD.prototype.isDestroyed=function(){return!1};CD.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),At(this)};var ID=CD;function V4(t,e){t=Ui(t);let n=document.createElement("div"),i=new ID(e,n);this._viewModel=i,this._container=t;let o=document.createElement("div");this._element=o;let a=document.createElement("div");a.textContent="Cesium Inspector",a.className="cesium-cesiumInspector-button",a.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(a),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),t.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let l=gd.createSection,r=gd.createCheckbox,d=l(s,"General","generalVisible","toggleGeneral"),m=r("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),m.appendChild(h),d.appendChild(m),d.appendChild(r("Show Frustum Planes","frustumPlanes")),d.appendChild(r("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",d.appendChild(n);let u=document.createElement("div");u.className="cesium-cesiumInspector-shaderCache",u.setAttribute("data-bind","html: shaderCacheText"),d.appendChild(u);let R=document.createElement("div");d.appendChild(R);let V=document.createElement("span");V.setAttribute("data-bind",'html: "     Frustum:"'),R.appendChild(V);let F=document.createElement("span");F.setAttribute("data-bind","text: depthFrustumText"),R.appendChild(F);let U=document.createElement("input");U.type="button",U.value="-",U.className="cesium-cesiumInspector-pickButton",U.setAttribute("data-bind","click: decrementDepthFrustum"),R.appendChild(U);let G=document.createElement("input");G.type="button",G.value="+",G.className="cesium-cesiumInspector-pickButton",G.setAttribute("data-bind","click: incrementDepthFrustum"),R.appendChild(G);let A=l(s,"Primitives","primitivesVisible","togglePrimitives"),S=document.createElement("div");S.className="cesium-cesiumInspector-pickSection",A.appendChild(S);let g=document.createElement("input");g.type="button",g.value="Pick a primitive",g.className="cesium-cesiumInspector-pickButton",g.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let C=document.createElement("div");C.className="cesium-cesiumInspector-center",C.appendChild(g),S.appendChild(C),S.appendChild(r("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),S.appendChild(r("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=r("Show only selected","filterPrimitive","hasPickedPrimitive"),S.appendChild(this._primitiveOnly);let y=l(s,"Terrain","terrainVisible","toggleTerrain"),Y=document.createElement("div");Y.className="cesium-cesiumInspector-pickSection",y.appendChild(Y);let Q=document.createElement("input");Q.type="button",Q.value="Pick a tile",Q.className="cesium-cesiumInspector-pickButton",Q.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),C=document.createElement("div"),C.appendChild(Q),C.className="cesium-cesiumInspector-center",Y.appendChild(C);let J=document.createElement("div");Y.appendChild(J);let M=document.createElement("input");M.type="button",M.value="Parent",M.className="cesium-cesiumInspector-pickButton",M.setAttribute("data-bind","click: selectParent");let Z=document.createElement("input");Z.type="button",Z.value="NW",Z.className="cesium-cesiumInspector-pickButton",Z.setAttribute("data-bind","click: selectNW");let E=document.createElement("input");E.type="button",E.value="NE",E.className="cesium-cesiumInspector-pickButton",E.setAttribute("data-bind","click: selectNE");let I=document.createElement("input");I.type="button",I.value="SW",I.className="cesium-cesiumInspector-pickButton",I.setAttribute("data-bind","click: selectSW");let B=document.createElement("input");B.type="button",B.value="SE",B.className="cesium-cesiumInspector-pickButton",B.setAttribute("data-bind","click: selectSE");let X=document.createElement("div");X.className="cesium-cesiumInspector-tileText",J.className="cesium-cesiumInspector-frustumStatistics",J.appendChild(X),J.setAttribute("data-bind","visible: hasPickedTile"),X.setAttribute("data-bind","html: tileText");let _=document.createElement("div");_.className="cesium-cesiumInspector-relativeText",_.textContent="Select relative:",J.appendChild(_);let P=document.createElement("table"),w=document.createElement("tr"),z=document.createElement("tr"),H=document.createElement("td");H.appendChild(M);let nt=document.createElement("td");nt.appendChild(Z);let $=document.createElement("td");$.appendChild(E),w.appendChild(H),w.appendChild(nt),w.appendChild($);let dt=document.createElement("td"),q=document.createElement("td");q.appendChild(I);let at=document.createElement("td");at.appendChild(B),z.appendChild(dt),z.appendChild(q),z.appendChild(at),P.appendChild(w),P.appendChild(z),J.appendChild(P),Y.appendChild(r("Show bounding volume","tileBoundingSphere","hasPickedTile")),Y.appendChild(r("Show only selected","filterTile","hasPickedTile")),y.appendChild(r("Wireframe","wireframe")),y.appendChild(r("Suspend LOD update","suspendUpdates")),y.appendChild(r("Show tile coordinates","tileCoordinates")),Lt.applyBindings(i,this._element)}Object.defineProperties(V4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});V4.prototype.isDestroyed=function(){return!1};V4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),At(this)};var ND=V4;var XFa=b(W(),1);var NFa=b(W(),1);function u4(t,e){c(e)||(e=document.body),e=Ui(e);let n=this,i=Lt.observable(Ds.fullscreen),o=Lt.observable(Ds.enabled),a=e.ownerDocument;this.isFullscreen=void 0,Lt.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,Lt.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Ds.enabled)}}),this.tooltip=void 0,Lt.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Ri(function(){Ds.fullscreen?Ds.exitFullscreen():Ds.requestFullscreen(n._fullscreenElement)},Lt.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=f(Ui(t),a.body),this._callback=function(){i(Ds.fullscreen)},a.addEventListener(Ds.changeEventName,this._callback)}Object.defineProperties(u4.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(t){this._fullscreenElement=t}},command:{get:function(){return this._command}}});u4.prototype.isDestroyed=function(){return!1};u4.prototype.destroy=function(){document.removeEventListener(Ds.changeEventName,this._callback),At(this)};var yD=u4;var C5e="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",I5e="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function Z4(t,e){t=Ui(t);let n=new yD(e,t);n._exitFullScreenPath=I5e,n._enterFullScreenPath=C5e;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),t.appendChild(i),Lt.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(Z4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});Z4.prototype.isDestroyed=function(){return!1};Z4.prototype.destroy=function(){return this._viewModel.destroy(),Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var BD=Z4;var jFa=b(W(),1);var OFa=b(W(),1);var U2t=1e3;function YV(t){c(t.geocoderServices)?this._geocoderServices=t.geocoderServices:this._geocoderServices=[new N5({scene:t.scene})],this._viewContainer=t.container,this._scene=t.scene,this._flightDuration=t.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new It,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=A2t,this._handleArrowUp=G2t;let e=this;this._suggestionsVisible=Lt.pureComputed(function(){let o=Lt.getObservable(e,"_suggestions")().length>0,a=Lt.getObservable(e,"_showSuggestions")();return o&&a}),this._searchCommand=Ri(function(i){if(i=f(i,IU.SEARCH),e._focusTextbox=!1,c(e._selectedSuggestion))return e.activateSuggestion(e._selectedSuggestion),!1;if(e.hideSuggestions(),e.isSearchInProgress)Y5e(e);else return Q5e(e,e._geocoderServices,i)}),this.deselectSuggestion=function(){e._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let a=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(a||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let a=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,l=o.key==="Enter"||o.keyCode===13;return s?G2t(e):a?A2t(e):l&&e._searchCommand(),!0},this.activateSuggestion=function(i){e.hideSuggestions(),e._searchText=i.displayName;let o=i.destination;g2t(e),e.destinationFound(e,o)},this.hideSuggestions=function(){e._showSuggestions=!1,e._selectedSuggestion=void 0},this.showSuggestions=function(){e._showSuggestions=!0},this.handleMouseover=function(i,o){i!==e._selectedSuggestion&&(e._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=f(t.autocomplete,!0),this.destinationFound=f(t.destinationFound,YV.flyToDestination),this._focusTextbox=!1,Lt.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=Lt.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){YV._updateSearchSuggestions(e)}),this.isSearchInProgress=void 0,Lt.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,Lt.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,Lt.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(YV.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});YV.prototype.destroy=function(){this._suggestionSubscription.dispose()};function G2t(t){if(t._suggestions.length===0)return;let e=t._suggestions.indexOf(t._selectedSuggestion);if(e===-1||e===0){t._selectedSuggestion=void 0;return}let n=e-1;t._selectedSuggestion=t._suggestions[n],YV._adjustSuggestionsScroll(t,n)}function A2t(t){if(t._suggestions.length===0)return;let e=t._suggestions.length,i=(t._suggestions.indexOf(t._selectedSuggestion)+1)%e;t._selectedSuggestion=t._suggestions[i],YV._adjustSuggestionsScroll(t,i)}function N5e(t,e){let n=c(e)?e.availability:void 0;return c(n)?zT(e,[t]).then(function(i){return t=i[0],t.height+=U2t,t}):(t.height+=U2t,Promise.resolve(t))}function y5e(t,e){let n=t._scene,o=n.mapProjection.ellipsoid,a=n.camera,s=n.terrainProvider,l=e,r;return e instanceof Gt?k.equalsEpsilon(e.south,e.north,k.EPSILON7)&&k.equalsEpsilon(e.east,e.west,k.EPSILON7)?e=Gt.center(e):r=rg(e,n):e=o.cartesianToCartographic(e),c(r)||(r=N5e(e,s)),r.then(function(d){l=o.cartographicToCartesian(d)}).finally(function(){a.flyTo({destination:l,complete:function(){t._complete.raiseEvent()},duration:t._flightDuration,endTransform:L.IDENTITY})})}async function B5e(t,e,n){try{return{state:"fulfilled",value:await t.geocode(e,n),credits:t.credit}}catch(i){return{state:"rejected",reason:i}}}async function Q5e(t,e,n){let i=t._searchText;if(T2t(i)){t.showSuggestions();return}t._isSearchInProgress=!0,t._wasGeocodeCancelled=!1;let o,a;for(o=0;o<e.length;o++){if(t._wasGeocodeCancelled)return;if(a=await B5e(e[o],i,n),c(a)&&a.state==="fulfilled"&&a.value.length>0)break}if(t._wasGeocodeCancelled)return;t._isSearchInProgress=!1,xrt(t);let s=a.value;if(a.state==="fulfilled"&&c(s)&&s.length>0){t._searchText=s[0].displayName,t.destinationFound(t,s[0].destination);let l=S2t(t,sN.getCreditsFromResult(s[0]));c(l)||Yrt(t,e[o].credit);return}t._searchText=`${i} (not found)`}function Yrt(t,e){c(e)&&!t._scene.isDestroyed()&&!t._scene.frameState.creditDisplay.isDestroyed()&&(t._scene.frameState.creditDisplay.addStaticCredit(e),t._previousCredits.push(e))}function S2t(t,e){return c(e)&&e.forEach(n=>Yrt(t,n)),e}function xrt(t){!t._scene.isDestroyed()&&!t._scene.frameState.creditDisplay.isDestroyed()&&t._previousCredits.forEach(e=>{t._scene.frameState.creditDisplay.removeStaticCredit(e)}),t._previousCredits.length=0}function k5e(t,e){let n=Ui(t._viewContainer),i=n.getElementsByClassName("search-results")[0],a=n.getElementsByTagName("li")[e];if(e===0){i.scrollTop=0;return}let s=a.offsetTop;s+a.clientHeight>i.clientHeight?i.scrollTop=s+a.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function Y5e(t){t._isSearchInProgress&&(t._isSearchInProgress=!1,t._wasGeocodeCancelled=!0)}function T2t(t){return/^\s*$/.test(t)}function g2t(t){Lt.getObservable(t,"_suggestions").removeAll()}async function x5e(t){if(!t.autoComplete)return;let e=t._searchText;if(g2t(t),xrt(t),!T2t(e))for(let n of t._geocoderServices){let i=await n.geocode(e,IU.AUTOCOMPLETE);if(t._suggestions=t._suggestions.concat(i),i.length>0){let o=!0;i.forEach(a=>{let s=sN.getCreditsFromResult(a);o=o&&!c(s),S2t(t,s)}),o&&Yrt(t,n.credit)}if(t._suggestions.length>=5)return}}YV.flyToDestination=y5e;YV._updateSearchSuggestions=x5e;YV._adjustSuggestionsScroll=k5e;YV.prototype.isDestroyed=function(){return!1};YV.prototype.destroy=function(){return xrt(this),At(this)};var QD=YV;var X5e="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",J5e="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function R4(t){let e=Ui(t.container),n=new QD(t);n._startSearchPath=X5e,n._stopSearchPath=J5e;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let a=document.createElement("span");a.className="cesium-geocoder-searchButton",a.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(a),e.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let l=document.createElement("ul");l.setAttribute("data-bind","foreach: _suggestions");let r=document.createElement("li");l.appendChild(r),r.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(l),e.appendChild(s),Lt.applyBindings(n,i),Lt.applyBindings(n,s),this._container=e,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(d){let m=d.target;typeof d.composedPath=="function"&&(m=d.composedPath()[0]),e.contains(m)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(d){n._focusTextbox=!0,n.showSuggestions()},In.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),e.addEventListener("pointerup",this._onInputEnd,!0),e.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),e.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),e.addEventListener("touchend",this._onInputEnd,!0),e.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(R4.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});R4.prototype.isDestroyed=function(){return!1};R4.prototype.destroy=function(){let t=this._container;return In.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),t.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),t.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),t.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),Lt.cleanNode(this._form),Lt.cleanNode(this._searchSuggestionsContainer),t.removeChild(this._form),t.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),At(this)};var kD=R4;var rUa=b(W(),1);var eUa=b(W(),1);function E2t(t,e){this._scene=t,this._duration=e;let n=this;this._command=Ri(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",Lt.track(this,["tooltip"])}Object.defineProperties(E2t.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(t){this._duration=t}}});var YD=E2t;function b4(t,e,n){t=Ui(t);let i=new YD(e,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),t.appendChild(o),Lt.applyBindings(i,o),this._container=t,this._viewModel=i,this._element=o}Object.defineProperties(b4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});b4.prototype.isDestroyed=function(){return!1};b4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var xD=b4;var bUa=b(W(),1);var hUa=b(W(),1);function L5e(t,e){e.currentTarget.parentElement.parentElement.querySelector(`#${t.name}-expander`).classList.toggle("active"),e.currentTarget.textContent=e.currentTarget.textContent==="+"?"-":"+"}function I2t(t,e){Lt.track(t);for(let n=0;n<t.sublayers.length;n++)I2t(t.sublayers[n],e)}function W4(t){return t.modelName==="FullModel"}function N2t(t){return t.modelName==="Overview"}function y2t(t){return N2t(t)||W4(t)}function C2t(t,e){if(y2t(t)){t.visibility=!1;for(let i=0;i<t.sublayers.length;i++)t.sublayers[i].visibility=!0;let n={name:t.name,modelName:t.modelName,disable:Lt.observable(!1),index:e.sublayers.length};return e.topLayers.push(n),e.sublayers.push(t),n}}function M5e(t,e){if(y2t(t)){e.sublayers.forEach(i=>i.visibility=!1),e.sublayers[t.index].visibility=!0;let n=document.getElementById("bsl-wrapper");W4(t)?(e.currentLevel=e.selectedLevel,n.style.display="block"):(e.selectedLevel=e.currentLevel,e.currentLevel="All",n.style.display="none")}}async function _5e(t,e){try{let n=t.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=t.getAttributeValues(n[i]);for(let a=0;a<o.length;a++)e.push(o[a])}e.sort((i,o)=>i-o),e.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function D5e(t){let e=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:Lt.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:Lt.observable(!0),index:-1}],currentLayer:Lt.observable(),expandClickHandler:L5e,setOptionDisable:function(i,o){Lt.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){M5e(i,e.viewModel)});let n=t.sublayers;for(let i=0;i<n.length;i++){I2t(n[i],this.viewModel);let o=C2t(n[i],this.viewModel);c(o)&&(N2t(o)||!c(this.viewModel.defaultLayer)&&W4(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){t.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:t.show,sublayers:t.sublayers};this.viewModel.defaultLayer=C2t(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){t.show=W4(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return _5e(t,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?t.filterByAttributes([{name:"BldgLevel",values:[i]}]):t.filterByAttributes()}),this.viewModel}var XD=D5e;function O5e(t,e){let n=document.getElementById(t),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` <h3>Building explorer</h3> <select data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" @@ -15574,8 +15574,8 @@ http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:functio </li> </ul> </ul> - </div>`,n.appendChild(i);let o=new XD(e);Lt.track(o),Lt.applyBindings(o,n),c(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var Xrt=O5e;var CUa=R(W(),1);var UUa=R(W(),1);var H5e="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",w5e="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function Jrt(){this._cameraClicked=new It,this._closeClicked=new It,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",Lt.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,Lt.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?w5e:H5e}}),Lt.defineProperty(this,"_bodyless",{get:function(){return!c(this.description)||this.description.length===0}})}Jrt.prototype.maxHeightOffset=function(t){return`${this.maxHeight-t}px`};Object.defineProperties(Jrt.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var JD=Jrt;function f4(t){t=Ui(t);let e=document.createElement("div");e.className="cesium-infoBox",e.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),t.appendChild(e);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),e.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",e.appendChild(o);let a=document.createElement("iframe");a.className="cesium-infoBox-iframe",a.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),a.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),a.setAttribute("allowfullscreen",!0),e.appendChild(a);let s=new JD;Lt.applyBindings(s,e),this._container=t,this._element=e,this._frame=a,this._viewModel=s,this._descriptionSubscription=void 0;let l=this;a.addEventListener("load",function(){let r=a.contentDocument,d=r.createElement("link");d.href=Dn("Widgets/InfoBox/InfoBoxDescription.css"),d.rel="stylesheet",d.type="text/css";let m=r.createElement("div");m.className="cesium-infoBox-description",r.head.appendChild(d),r.body.appendChild(m),l._descriptionSubscription=od(s,"description",function(h){a.style.height="5px",m.innerHTML=h;let Z=null,b=m.firstElementChild;if(b!==null&&m.childNodes.length===1){let F=window.getComputedStyle(b);if(F!==null){let U=F["background-color"],G=v.fromCssColorString(U);c(G)&&G.alpha!==0&&(Z=F["background-color"])}}e.style["background-color"]=Z;let u=m.getBoundingClientRect().height;a.style.height=`${u}px`})}),a.setAttribute("src","about:blank")}Object.defineProperties(f4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});f4.prototype.isDestroyed=function(){return!1};f4.prototype.destroy=function(){let t=this._container;return Lt.cleanNode(this._element),t.removeChild(this._element),c(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),At(this)};var LD=f4;var LUa=R(W(),1);var BUa=R(W(),1);function Bkt(){this.showInstructions=!1;let t=this;this._command=bi(function(){t.showInstructions=!t.showInstructions}),this._showClick=bi(function(){t._touch=!1}),this._showTouch=bi(function(){t._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",Lt.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(Bkt.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var MD=Bkt;function F4(t){let e=Ui(t.container),n=new MD,i=f(t.instructionsInitiallyVisible,!1);n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",e.appendChild(o);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",a.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(a);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let l=document.createElement("button");l.type="button",l.className="cesium-navigation-button cesium-navigation-button-left",l.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let r=document.createElement("img");r.src=Dn("Widgets/Images/NavigationHelp/Mouse.svg"),r.className="cesium-navigation-button-icon",r.style.width="25px",r.style.height="25px",l.appendChild(r),l.appendChild(document.createTextNode("Mouse"));let d=document.createElement("button");d.type="button",d.className="cesium-navigation-button cesium-navigation-button-right",d.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let m=document.createElement("img");m.src=Dn("Widgets/Images/NavigationHelp/Touch.svg"),m.className="cesium-navigation-button-icon",m.style.width="25px",m.style.height="25px",d.appendChild(m),d.appendChild(document.createTextNode("Touch")),s.appendChild(l),s.appendChild(d);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let Z=document.createElement("div");Z.className="cesium-touch-navigation-help cesium-navigation-help-instructions",Z.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),Z.innerHTML=` <table> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(Z),Lt.applyBindings(n,o),this._container=e,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(b){o.contains(b.target)||(n.showInstructions=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(F4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});F4.prototype.isDestroyed=function(){return!1};F4.prototype.destroy=function(){return In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),Lt.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),At(this)};var _D=F4;var tGa=R(W(),1);var PUa=R(W(),1);function Lrt(t){this._scene=t.scene,this.lowFrameRateMessage=f(t.lowFrameRateMessage,"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers."),this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,Lt.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let e=this;this._dismissMessage=bi(function(){e.showingLowFrameRateMessage=!1,e.lowFrameRateMessageDismissed=!0});let n=P5.fromScene(t.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){e.lowFrameRateMessageDismissed||(e.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){e.showingLowFrameRateMessage=!1})}Object.defineProperties(Lrt.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});Lrt.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),At(this)};var DD=Lrt;function U4(t){let e=Ui(t.container),n=new DD(t),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let a=document.createElement("div");a.className="cesium-performance-watchdog-message",a.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(a),e.appendChild(i),Lt.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(U4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});U4.prototype.isDestroyed=function(){return!1};U4.prototype.destroy=function(){return this._viewModel.destroy(),Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var OD=U4;var pGa=R(W(),1);var sGa=R(W(),1);function G4(t){this._scene=t,this._orthographic=t.camera.frustum instanceof wn,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=t.mode,Lt.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let e=this;Lt.defineProperty(this,"selectedTooltip",function(){return e._orthographic?e.tooltipOrthographic:e.tooltipPerspective}),this._toggleDropDown=bi(function(){e.sceneMode===ut.SCENE2D||e._flightInProgress||(e.dropDownVisible=!e.dropDownVisible)}),this._eventHelper=new rl,this._eventHelper.add(t.morphComplete,function(n,i,o,a){e.sceneMode=o,e._orthographic=o===ut.SCENE2D||e._scene.camera.frustum instanceof wn}),this._eventHelper.add(t.preRender,function(){e._flightInProgress=c(t.camera._currentFlight)}),this._switchToPerspective=bi(function(){e.sceneMode!==ut.SCENE2D&&(e._scene.camera.switchToPerspectiveFrustum(),e._orthographic=!1,e.dropDownVisible=!1)}),this._switchToOrthographic=bi(function(){e.sceneMode!==ut.SCENE2D&&(e._scene.camera.switchToOrthographicFrustum(),e._orthographic=!0,e.dropDownVisible=!1)}),this._sceneMode=ut}Object.defineProperties(G4.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});G4.prototype.isDestroyed=function(){return!1};G4.prototype.destroy=function(){this._eventHelper.removeAll(),At(this)};var HD=G4;var P5e="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",v5e="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function A4(t,e){t=Ui(t);let n=new HD(e);n._perspectivePath=P5e,n._orthographicPath=v5e;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(a);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),Lt.applyBindings(n,i),this._viewModel=n,this._container=t,this._wrapper=i,this._closeDropDown=function(l){i.contains(l.target)||(n.dropDownVisible=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(A4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});A4.prototype.isDestroyed=function(){return!1};A4.prototype.destroy=function(){return this._viewModel.destroy(),In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Lt.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),At(this)};var wD=A4;var gGa=R(W(),1);var fGa=R(W(),1);function T4(t,e){this._scene=t;let n=this,i=function(o,a,s,l){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new rl,this._eventHelper.add(t.morphStart,i),this._duration=f(e,2),this.sceneMode=t.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",Lt.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,Lt.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ut.SCENE2D?n.tooltip2D:o===ut.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=bi(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=bi(function(){t.morphTo2D(n._duration)}),this._morphTo3D=bi(function(){t.morphTo3D(n._duration)}),this._morphToColumbusView=bi(function(){t.morphToColumbusView(n._duration)}),this._sceneMode=ut}Object.defineProperties(T4.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(t){this._duration=t}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});T4.prototype.isDestroyed=function(){return!1};T4.prototype.destroy=function(){this._eventHelper.removeAll(),At(this)};var PD=T4;var K5e="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",z5e="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",j5e="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function S4(t,e,n){t=Ui(t);let i=new PD(e,n);i._globePath=K5e,i._flatMapPath=z5e,i._columbusViewPath=j5e;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",t.appendChild(o);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),a.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(a);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let l=document.createElement("button");l.type="button",l.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",l.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(l);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(r),Lt.applyBindings(i,o),this._viewModel=i,this._container=t,this._wrapper=o,this._closeDropDown=function(d){o.contains(d.target)||(i.dropDownVisible=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(S4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});S4.prototype.isDestroyed=function(){return!1};S4.prototype.destroy=function(){return this._viewModel.destroy(),In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Lt.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),At(this)};var vD=S4;var JGa=R(W(),1);var yGa=R(W(),1);var q5e=new K,g4="-1000px";function KD(t,e,n){this._scene=t,this._screenPositionX=g4,this._screenPositionY=g4,this._tweens=t.tweens,this._container=f(n,document.body),this._selectionIndicatorElement=e,this._scale=1,this.position=void 0,this.showSelection=!1,Lt.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,Lt.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&c(this.position)}}),Lt.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return qo.wgs84ToWindowCoordinates(t,i,o)}}KD.prototype.update=function(){if(this.showSelection&&c(this.position)){let t=this.computeScreenSpacePosition(this.position,q5e);if(!c(t))this._screenPositionX=g4,this._screenPositionY=g4;else{let e=this._container,n=e.parentNode.clientWidth,i=e.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,a=o*.5;t.x=Math.min(Math.max(t.x,-o),n+o)-a,t.y=Math.min(Math.max(t.y,-o),i+o)-a,this._screenPositionX=`${Math.floor(t.x+.25)}px`,this._screenPositionY=`${Math.floor(t.y+.25)}px`}}};KD.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:Zl.EXPONENTIAL_OUT})};KD.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:Zl.EXPONENTIAL_OUT})};Object.defineProperties(KD.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var zD=KD;function E4(t,e){t=Ui(t),this._container=t;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),t.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",a=document.createElementNS(i,"svg:svg");a.setAttribute("width",160),a.setAttribute("height",160),a.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),a.appendChild(s);let l=document.createElementNS(i,"path");l.setAttribute("data-bind","attr: { transform: _transform }"),l.setAttribute("d",o),s.appendChild(l),n.appendChild(a);let r=new zD(e,this._element,this._container);this._viewModel=r,Lt.applyBindings(this._viewModel,this._element)}Object.defineProperties(E4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});E4.prototype.isDestroyed=function(){return!1};E4.prototype.destroy=function(){let t=this._container;return Lt.cleanNode(this._element),t.removeChild(this._element),At(this)};var jD=E4;var jGa=R(W(),1);var _Ga=R(W(),1);function mg(t,e,n){this._color=t,this._height=e,this._base=f(n,0)}mg.prototype.getHeight=function(){return this._height};mg.prototype.getBase=function(){return this._base};mg.prototype.getStartTime=function(){return this._start};mg.prototype.getStopTime=function(){return this._stop};mg.prototype.setRange=function(t,e){this._start=t,this._stop=e};mg.prototype.render=function(t){let e="";if(this._start&&this._stop&&this._color){let n=rt.secondsDifference(this._start,t.epochJulian),i=Math.round(t.timeBarWidth*t.getAlpha(n)),o=rt.secondsDifference(this._stop,t.epochJulian),a=Math.round(t.timeBarWidth*t.getAlpha(o))-i;i<0&&(a+=i,i=0),i+a>t.timeBarWidth&&(a=t.timeBarWidth-i),a>0&&(e=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${a.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return e};var qD=mg;var HGa=R(W(),1);function Qkt(t,e,n,i){this.interval=t,this.height=e,this.color=n||new v(.5,.5,.5,1),this.backgroundColor=i||new v(0,0,0,0)}Qkt.prototype.render=function(t,e){let n=this.interval.start,i=this.interval.stop,o=e.startJulian,a=rt.addSeconds(e.startJulian,e.duration,new rt);if(rt.lessThan(n,o)&&rt.greaterThan(i,a))t.fillStyle=this.color.toCssColorString(),t.fillRect(0,e.y,e.timeBarWidth,this.height);else if(rt.lessThanOrEquals(n,a)&&rt.greaterThanOrEquals(i,o)){let s,l,r;for(s=0;s<e.timeBarWidth;++s){let d=rt.addSeconds(e.startJulian,s/e.timeBarWidth*e.duration,new rt);!c(l)&&rt.greaterThanOrEquals(d,n)?l=s:!c(r)&&rt.greaterThanOrEquals(d,i)&&(r=s)}t.fillStyle=this.backgroundColor.toCssColorString(),t.fillRect(0,e.y,e.timeBarWidth,this.height),c(l)&&(c(r)||(r=e.timeBarWidth),t.fillStyle=this.color.toCssColorString(),t.fillRect(l,e.y,Math.max(r-l,1),this.height))}};var $D=Qkt;var Mrt=1e12,xu={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},am={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},JU=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],$5e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function sm(t,e){t=Ui(t);let n=t.ownerDocument;this.container=t;let i=n.createElement("div");i.className="cesium-timeline-main",t.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=e,this._scrubJulian=e.currentTime,this._mainTicSpan=-1,this._mouseMode=xu.none,this._touchMode=am.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(e.startTime,e.stopTime),this._onMouseDown=tDe(this),this._onMouseUp=eDe(this),this._onMouseMove=nDe(this),this._onMouseWheel=iDe(this),this._onTouchStart=oDe(this),this._onTouchMove=sDe(this),this._onTouchEnd=aDe(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},e.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}sm.prototype.addEventListener=function(t,e,n){this._topDiv.addEventListener(t,e,n)};sm.prototype.removeEventListener=function(t,e,n){this._topDiv.removeEventListener(t,e,n)};sm.prototype.isDestroyed=function(){return!1};sm.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let t=this.container.ownerDocument;t.removeEventListener("mouseup",this._onMouseUp,!1),t.removeEventListener("mousemove",this._onMouseMove,!1);let e=this._timeBarEle;e.removeEventListener("mousedown",this._onMouseDown,!1),e.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),e.removeEventListener("mousewheel",this._onMouseWheel,!1),e.removeEventListener("touchstart",this._onTouchStart,!1),e.removeEventListener("touchmove",this._onTouchMove,!1),e.removeEventListener("touchend",this._onTouchEnd,!1),e.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),At(this)};sm.prototype.addHighlightRange=function(t,e,n){let i=new qD(t,e,n);return this._highlightRanges.push(i),this.resize(),i};sm.prototype.addTrack=function(t,e,n,i){let o=new $D(t,e,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};sm.prototype.zoomTo=function(t,e){if(this._startJulian=t,this._endJulian=e,this._timeBarSecondsSpan=rt.secondsDifference(e,t),this._clock&&this._clock.clockRange!==pl.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,a=rt.secondsDifference(o,i),s=rt.secondsDifference(i,this._startJulian),l=rt.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=a?(this._timeBarSecondsSpan=a,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=rt.addSeconds(this._endJulian,s,new rt),this._startJulian=i,this._timeBarSecondsSpan=rt.secondsDifference(this._endJulian,this._startJulian)):l<0&&(this._startJulian=rt.addSeconds(this._startJulian,l,new rt),this._endJulian=o,this._timeBarSecondsSpan=rt.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};sm.prototype.zoomFrom=function(t){let e=rt.secondsDifference(this._scrubJulian,this._startJulian);t>1||e<0||e>this._timeBarSecondsSpan?e=this._timeBarSecondsSpan*.5:e+=e-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-e;this.zoomTo(rt.addSeconds(this._startJulian,e-e*t,new rt),rt.addSeconds(this._endJulian,n*t-n,new rt))};function _rt(t){return t<10?`0${t.toString()}`:t.toString()}sm.prototype.makeLabel=function(t){let e=rt.toGregorianDate(t),n=e.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${$5e[e.month-1]} ${e.day} ${e.year} ${_rt(e.hour)}:${_rt(e.minute)}:${_rt(e.second)}${i}`};sm.prototype.smallestTicInPixels=7;sm.prototype._makeTics=function(){let t=this._timeBarEle,e=rt.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(e*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,a=this;this._needleEle.style.left=`${n.toString()}px`;let s="",l=.01,r=31536e6,d=1e-10,m=0,h=this._timeBarSecondsSpan;h<l?(h=l,this._timeBarSecondsSpan=l,this._endJulian=rt.addSeconds(this._startJulian,l,new rt)):h>r&&(h=r,this._timeBarSecondsSpan=r,this._endJulian=rt.addSeconds(this._startJulian,r,new rt));let Z=this._timeBarEle.clientWidth;Z<10&&(Z=10);let b=this._startJulian,u=Math.min(h/Z*1e-5,.4),F,U=rt.toGregorianDate(b);h>31536e4?F=rt.fromDate(new Date(Date.UTC(Math.floor(U.year/100)*100,0))):h>31536e3?F=rt.fromDate(new Date(Date.UTC(Math.floor(U.year/10)*10,0))):h>86400?F=rt.fromDate(new Date(Date.UTC(U.year,0))):F=rt.fromDate(new Date(Date.UTC(U.year,U.month,U.day)));let G=rt.secondsDifference(this._startJulian,rt.addSeconds(F,u,new rt)),A=G+h;this._epochJulian=F;function T(H){return Math.floor(G/H)*H}function g(H,nt){return Math.ceil(H/nt+.5)*nt}function C(H){return(H-G)/h}function y(H,nt){return H-nt*Math.round(H/nt)}this._rulerEle.innerHTML=this.makeLabel(rt.addSeconds(this._endJulian,-l,new rt));let Y=this._rulerEle.offsetWidth+20;Y<30&&(Y=180);let Q=m;m-=d;let J={startTime:G,startJulian:b,epochJulian:F,duration:h,timeBarWidth:Z,getAlpha:C};this._highlightRanges.forEach(function(H){s+=H.render(J)});let M=0,V=0,E=0,I=Y/Z;I>1&&(I=1),I*=this._timeBarSecondsSpan;let B=-1,X=-1,_=JU.length,P;for(P=0;P<_;++P){let H=JU[P];if(++B,M=H,H>I&&H>m)break;X<0&&Z*(H/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(X=B)}if(B>0){for(;B>0;)if(--B,Math.abs(y(M,JU[B]))<1e-5){JU[B]>=m&&(V=JU[B]);break}if(X>=0)for(;X<B;){if(Math.abs(y(V,JU[X]))<1e-5&&JU[X]>=m){E=JU[X];break}++X}}m=Q,m>d&&E<1e-5&&Math.abs(m-M)>d&&(E=m,m<=M+d&&(V=0));let w=-999999,z;if(Z*(E/this._timeBarSecondsSpan)>=3)for(o=T(E);o<=A;o=g(o,E))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(Z*C(o)).toString()}px;"></span>`;if(Z*(V/this._timeBarSecondsSpan)>=3)for(o=T(V);o<=A;o=g(o,V))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(Z*C(o)).toString()}px;"></span>`;if(Z*(M/this._timeBarSecondsSpan)>=2){this._mainTicSpan=M,A+=M,o=T(M);let H=rt.computeTaiMinusUtc(F);for(;o<=A;){let nt=rt.addSeconds(b,o-G,new rt);if(M>2.1){let at=rt.computeTaiMinusUtc(nt);Math.abs(at-H)>.1&&(o+=at-H,nt=rt.addSeconds(b,o-G,new rt))}let $=Math.round(Z*C(o)),dt=this.makeLabel(nt);this._rulerEle.innerHTML=dt,z=this._rulerEle.offsetWidth,z<10&&(z=Y);let q=$-(z/2-1);q>w?(w=q+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${$.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${q.toString()}px;">${dt}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${$.toString()}px;"></span>`,o=g(o,M)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,t.innerHTML=s,this._scrubElement=t.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),J.y=0,this._trackList.forEach(function(H){H.render(a._context,J),J.y+=H.height})};sm.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let t=this._scrubElement;if(c(this._scrubElement)){let e=rt.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(e*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,t.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}c(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(rt.addSeconds(this._startJulian,this._timelineDrag,new rt),rt.addSeconds(this._endJulian,this._timelineDrag,new rt)))};sm.prototype._setTimeBarTime=function(t,e){if(t=Math.round(t),this._scrubJulian=rt.addSeconds(this._startJulian,e,new rt),this._scrubElement){let i=t-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${t.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=t,n.timeSeconds=e,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function tDe(t){return function(e){t._mouseMode!==xu.touchOnly&&(e.button===0?(t._mouseMode=xu.scrub,t._scrubElement&&(t._scrubElement.style.backgroundPosition="-16px 0"),t._onMouseMove(e)):(t._mouseX=e.clientX,e.button===2?t._mouseMode=xu.zoom:t._mouseMode=xu.slide)),e.preventDefault()}}function eDe(t){return function(e){t._mouseMode=xu.none,t._scrubElement&&(t._scrubElement.style.backgroundPosition="0 0"),t._timelineDrag=0,t._timelineDragLocation=void 0}}function nDe(t){return function(e){let n;if(t._mouseMode===xu.scrub){e.preventDefault();let i=e.clientX-t._topDiv.getBoundingClientRect().left;i<0?(t._timelineDragLocation=0,t._timelineDrag=-.01*t._timeBarSecondsSpan):i>t._topDiv.clientWidth?(t._timelineDragLocation=t._topDiv.clientWidth,t._timelineDrag=.01*t._timeBarSecondsSpan):(t._timelineDragLocation=void 0,t._setTimeBarTime(i,i*t._timeBarSecondsSpan/t._topDiv.clientWidth))}else if(t._mouseMode===xu.slide){if(n=t._mouseX-e.clientX,t._mouseX=e.clientX,n!==0){let i=n*t._timeBarSecondsSpan/t._topDiv.clientWidth;t.zoomTo(rt.addSeconds(t._startJulian,i,new rt),rt.addSeconds(t._endJulian,i,new rt))}}else t._mouseMode===xu.zoom&&(n=t._mouseX-e.clientX,t._mouseX=e.clientX,n!==0&&t.zoomFrom(Math.pow(1.01,n)))}}function iDe(t){return function(e){let n=e.wheelDeltaY||e.wheelDelta||-e.detail;Mrt=Math.max(Math.min(Math.abs(n),Mrt),1),n/=Mrt,t.zoomFrom(Math.pow(1.05,-n))}}function oDe(t){return function(e){let n=e.touches.length,i,o,a=t._topDiv.getBoundingClientRect().left;e.preventDefault(),t._mouseMode=xu.touchOnly,n===1?(i=rt.secondsDifference(t._scrubJulian,t._startJulian),o=Math.round(i*t._topDiv.clientWidth/t._timeBarSecondsSpan+a),Math.abs(e.touches[0].clientX-o)<50?(t._touchMode=am.scrub,t._scrubElement&&(t._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(t._touchMode=am.singleTap,t._touchState.centerX=e.touches[0].clientX-a)):n===2?(t._touchMode=am.slideZoom,t._touchState.centerX=(e.touches[0].clientX+e.touches[1].clientX)*.5-a,t._touchState.spanX=Math.abs(e.touches[0].clientX-e.touches[1].clientX)):t._touchMode=am.ignore}}function aDe(t){return function(e){let n=e.touches.length,i=t._topDiv.getBoundingClientRect().left;t._touchMode===am.singleTap?(t._touchMode=am.scrub,t._onTouchMove(e)):t._touchMode===am.scrub&&t._onTouchMove(e),t._mouseMode=xu.touchOnly,n!==1?t._touchMode=n>0?am.ignore:am.none:t._touchMode===am.slideZoom&&(t._touchState.centerX=e.touches[0].clientX-i),t._scrubElement&&(t._scrubElement.style.backgroundPosition="0 0")}}function sDe(t){return function(e){let n,i,o,a,s,l,r=1,d=t._topDiv.getBoundingClientRect().left;t._touchMode===am.singleTap&&(t._touchMode=am.slideZoom),t._mouseMode=xu.touchOnly,t._touchMode===am.scrub?(e.preventDefault(),e.changedTouches.length===1&&(i=e.changedTouches[0].clientX-d,i>=0&&i<=t._topDiv.clientWidth&&t._setTimeBarTime(i,i*t._timeBarSecondsSpan/t._topDiv.clientWidth))):t._touchMode===am.slideZoom&&(o=e.touches.length,o===2?(a=(e.touches[0].clientX+e.touches[1].clientX)*.5-d,s=Math.abs(e.touches[0].clientX-e.touches[1].clientX)):o===1&&(a=e.touches[0].clientX-d,s=0),c(a)&&(s>0&&t._touchState.spanX>0?(r=t._touchState.spanX/s,l=rt.addSeconds(t._startJulian,(t._touchState.centerX*t._timeBarSecondsSpan-a*t._timeBarSecondsSpan*r)/t._topDiv.clientWidth,new rt)):(n=t._touchState.centerX-a,l=rt.addSeconds(t._startJulian,n*t._timeBarSecondsSpan/t._topDiv.clientWidth,new rt)),t.zoomTo(l,rt.addSeconds(l,t._timeBarSecondsSpan*r,new rt)),t._touchState.centerX=a,t._touchState.spanX=s))}}sm.prototype.resize=function(){let t=this.container.clientWidth,e=this.container.clientHeight;if(t===this._lastWidth&&e===this._lastHeight)return;this._trackContainer.style.height=`${e}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=t,this._lastHeight=e};var tO=sm;var uAa=R(W(),1);var lAa=R(W(),1);var Jkt=R(Xkt(),1);function dDe(t){let e=!1,n=window.screen;return c(n)&&(c(n.lockOrientation)?e=n.lockOrientation(t):c(n.mozLockOrientation)?e=n.mozLockOrientation(t):c(n.msLockOrientation)?e=n.msLockOrientation(t):c(n.orientation&&n.orientation.lock)&&(e=n.orientation.lock(t))),e}function Lkt(){let t=window.screen;c(t)&&(c(t.unlockOrientation)?t.unlockOrientation():c(t.mozUnlockOrientation)?t.mozUnlockOrientation():c(t.msUnlockOrientation)?t.msUnlockOrientation():c(t.orientation&&t.orientation.unlock)&&t.orientation.unlock())}function cDe(t,e,n,i){i()||(n()?(e.useWebVR=!1,t._locked&&(Lkt(),t._locked=!1),t._noSleep.disable(),Ds.exitFullscreen(),n(!1)):(Ds.fullscreen||Ds.requestFullscreen(t._vrElement),t._noSleep.enable(),t._locked||(t._locked=dDe("landscape")),e.useWebVR=!0,n(!0)))}function C4(t,e){let n=this,i=Lt.observable(Ds.enabled),o=Lt.observable(!1);this.isVRMode=void 0,Lt.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,Lt.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Ds.enabled)}}),this.tooltip=void 0,Lt.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let a=Lt.observable(!1);this._isOrthographic=void 0,Lt.defineProperty(this,"_isOrthographic",{get:function(){return a()}}),this._eventHelper=new rl,this._eventHelper.add(t.preRender,function(){a(t.camera.frustum instanceof wn)}),this._locked=!1,this._noSleep=new Jkt.default,this._command=bi(function(){cDe(n,t,o,a)},Lt.getObservable(this,"isVREnabled")),this._vrElement=f(Ui(e),document.body),this._callback=function(){!Ds.fullscreen&&o()&&(t.useWebVR=!1,n._locked&&(Lkt(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Ds.changeEventName,this._callback)}Object.defineProperties(C4.prototype,{vrElement:{get:function(){return this._vrElement},set:function(t){this._vrElement=t}},command:{get:function(){return this._command}}});C4.prototype.isDestroyed=function(){return!1};C4.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Ds.changeEventName,this._callback),At(this)};var eO=C4;var mDe="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",hDe="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function I4(t,e,n){t=Ui(t);let i=new eO(e,n);i._exitVRPath=hDe,i._enterVRPath=mDe;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),t.appendChild(o),Lt.applyBindings(i,o),this._container=t,this._viewModel=i,this._element=o}Object.defineProperties(I4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I4.prototype.isDestroyed=function(){return!1};I4.prototype.destroy=function(){return this._viewModel.destroy(),Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var nO=I4;var YAa=R(W(),1);var LU=new Ft;function Dkt(t){let e=t.clock;e.currentTime=t.timeJulian,e.shouldAnimate=!1}function pDe(t){let e=t.getPropertyIds(),n="";return e.forEach(function(i){let o=t.getProperty(i);c(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function uDe(t){let e,n=[],i=t.getPropertyIds();for(e=0;e<i.length;e++){let a=i[e];/^name$/i.test(a)?n[0]=t.getProperty(a):/name/i.test(a)?n[1]=t.getProperty(a):/^title$/i.test(a)?n[2]=t.getProperty(a):/^(id|identifier)$/i.test(a)?n[3]=t.getProperty(a):/element/i.test(a)?n[4]=t.getProperty(a):/(id|identifier)$/i.test(a)&&(n[5]=t.getProperty(a))}let o=n.length;for(e=0;e<o;e++){let a=n[e];if(c(a)&&a!=="")return a}return"Unnamed Feature"}function Mkt(t,e){let n=t.scene.pick(e.position);if(c(n)){let i=f(n.id,n.primitive.id);if(i instanceof qa&&i.id.toString().indexOf("noclick:")!==0)return i;if(n instanceof Fr)return new qa({name:uDe(n),description:pDe(n),feature:n})}if(c(t.scene.globe))return bDe(t,e.position)}var ZDe=new rt;function Okt(t,e,n){if(c(n)){let i=n.clock;if(c(i)&&(i.getValue(e),c(t))){let o=i.startTime,a=i.stopTime;rt.equals(o,a)&&(a=rt.addSeconds(o,k.EPSILON2,ZDe)),t.updateFromClock(),t.zoomTo(o,a)}}}var VDe=new p;function bDe(t,e){let n=t.scene,i=n.camera.getPickRay(e),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!c(o))return;let a=new qa({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(t.selectedEntity!==a)return;if(!c(s)||s.length===0){t.selectedEntity=_kt();return}let l=s[0],r=new qa({id:l.name,description:l.description});if(c(l.position)){let d=t.scene.globe.ellipsoid.cartographicToCartesian(l.position,VDe);r.position=new jl(d)}t.selectedEntity=r},function(){t.selectedEntity===a&&(t.selectedEntity=_kt())}),a}function _kt(){return new qa({id:"None",description:"No features found."})}function RDe(t,e){let n=t._geocoder,i=t._homeButton,o=t._sceneModePicker,a=t._projectionPicker,s=t._baseLayerPicker,l=t._animation,r=t._timeline,d=t._fullscreenButton,m=t._infoBox,h=t._selectionIndicator,Z=e?"hidden":"visible";if(c(n)&&(n.container.style.visibility=Z),c(i)&&(i.container.style.visibility=Z),c(o)&&(o.container.style.visibility=Z),c(a)&&(a.container.style.visibility=Z),c(s)&&(s.container.style.visibility=Z),c(l)&&(l.container.style.visibility=Z),c(r)&&(r.container.style.visibility=Z),c(d)&&d.viewModel.isFullscreenEnabled&&(d.container.style.visibility=Z),c(m)&&(m.container.style.visibility=Z),c(h)&&(h.container.style.visibility=Z),t._container){let b=e||!c(d)?0:d.container.clientWidth;t._vrButton.container.style.right=`${b}px`,t.forceResize()}}function Do(t,e){t=Ui(t),e=f(e,f.EMPTY_OBJECT);let n=(!c(e.globe)||e.globe!==!1)&&(!c(e.baseLayerPicker)||e.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",t.appendChild(o);let a=document.createElement("div");a.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(a);let s;e.bottomContainer?s=e.bottomContainer:(s=document.createElement("div"),s.className="cesium-viewer-bottom",o.appendChild(s));let l=f(e.scene3DOnly,!1),r,d,m=!1;c(e.clockViewModel)?(d=e.clockViewModel,r=d.clock):(r=new kZ,d=new ZD(r),m=!0),c(e.shouldAnimate)&&(r.shouldAnimate=e.shouldAnimate);let h=new W5(a,{baseLayer:n||c(e.baseLayer)||c(e.imageryProvider)?!1:void 0,clock:r,skyBox:e.skyBox,skyAtmosphere:e.skyAtmosphere,sceneMode:e.sceneMode,mapProjection:e.mapProjection,globe:e.globe,orderIndependentTranslucency:e.orderIndependentTranslucency,contextOptions:e.contextOptions,useDefaultRenderLoop:e.useDefaultRenderLoop,targetFrameRate:e.targetFrameRate,showRenderLoopErrors:e.showRenderLoopErrors,useBrowserRecommendedResolution:e.useBrowserRecommendedResolution,creditContainer:c(e.creditContainer)?e.creditContainer:s,creditViewport:e.creditViewport,scene3DOnly:l,shadows:e.shadows,terrainShadows:e.terrainShadows,mapMode2D:e.mapMode2D,blurActiveElementOnCanvasFocus:e.blurActiveElementOnCanvasFocus,requestRenderMode:e.requestRenderMode,maximumRenderTimeChange:e.maximumRenderTimeChange,depthPlaneEllipsoidOffset:e.depthPlaneEllipsoidOffset,msaaSamples:e.msaaSamples}),Z=e.dataSources,b=!1;c(Z)||(Z=new YJ,b=!0);let u=h.scene,F=new kF({scene:u,dataSourceCollection:Z}),U=new rl;U.add(r.onTick,Do.prototype._onTick,this),U.add(u.morphStart,Do.prototype._clearTrackedObject,this);let G;if(!c(e.selectionIndicator)||e.selectionIndicator!==!1){let $=document.createElement("div");$.className="cesium-viewer-selectionIndicatorContainer",o.appendChild($),G=new jD($,u)}let A;if(!c(e.infoBox)||e.infoBox!==!1){let $=document.createElement("div");$.className="cesium-viewer-infoBoxContainer",o.appendChild($),A=new LD($);let dt=A.viewModel;U.add(dt.cameraClicked,Do.prototype._onInfoBoxCameraClicked,this),U.add(dt.closeClicked,Do.prototype._onInfoBoxClockClicked,this)}let T=document.createElement("div");T.className="cesium-viewer-toolbar",o.appendChild(T);let g;if(!c(e.geocoder)||e.geocoder!==!1){let $=document.createElement("div");$.className="cesium-viewer-geocoderContainer",T.appendChild($);let dt;c(e.geocoder)&&typeof e.geocoder!="boolean"&&(dt=Array.isArray(e.geocoder)?e.geocoder:[e.geocoder]),g=new kD({container:$,geocoderServices:dt,scene:u}),U.add(g.viewModel.search.beforeExecute,Do.prototype._clearObjects,this)}let C;(!c(e.homeButton)||e.homeButton!==!1)&&(C=new xD(T,u),c(g)&&U.add(C.viewModel.command.afterExecute,function(){let $=g.viewModel;$.searchText="",$.isSearchInProgress&&$.search()}),U.add(C.viewModel.command.beforeExecute,Do.prototype._clearTrackedObject,this));let y;!l&&(!c(e.sceneModePicker)||e.sceneModePicker!==!1)&&(y=new vD(T,u));let Y;e.projectionPicker&&(Y=new wD(T,u));let Q,J;if(n){let $=f(e.imageryProviderViewModels,gD()),dt=f(e.terrainProviderViewModels,ED());Q=new SD(T,{globe:u.globe,imageryProviderViewModels:$,selectedImageryProviderViewModel:e.selectedImageryProviderViewModel,terrainProviderViewModels:dt,selectedTerrainProviderViewModel:e.selectedTerrainProviderViewModel}),J=T.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}c(e.baseLayer)&&e.baseLayer!==!1&&(n&&(Q.viewModel.selectedImagery=void 0),u.imageryLayers.removeAll(),u.imageryLayers.add(e.baseLayer)),c(e.terrainProvider)&&(n&&(Q.viewModel.selectedTerrain=void 0),u.terrainProvider=e.terrainProvider),c(e.terrain)&&(n&&(Q.viewModel.selectedTerrain=void 0,u.globe.depthTestAgainstTerrain=!0),u.setTerrain(e.terrain));let M;if(!c(e.navigationHelpButton)||e.navigationHelpButton!==!1){let $=!0;try{if(c(window.localStorage)){let dt=window.localStorage.getItem("cesium-hasSeenNavHelp");c(dt)&&dt?$=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}M=new _D({container:T,instructionsInitiallyVisible:f(e.navigationInstructionsInitiallyVisible,$)})}let V;if(!c(e.animation)||e.animation!==!1){let $=document.createElement("div");$.className="cesium-viewer-animationContainer",o.appendChild($),V=new GD($,new AD(d))}else if(e.animationContainer!==!1){let $=document.createElement("div");$.className="cesium-viewer-animationContainer",o.appendChild($),this._animation={container:$,resize:()=>{}}}let E;if(!c(e.timeline)||e.timeline!==!1){let $=document.createElement("div");$.className="cesium-viewer-timelineContainer",o.appendChild($),E=new tO($,r),E.addEventListener("settime",Dkt,!1),E.zoomTo(r.startTime,r.stopTime)}else if(e.timelineContainer!==!1){let $=document.createElement("div");$.className="cesium-viewer-timelineContainer",$.style.overflow="visible",o.appendChild($),E={container:$,resize:()=>{},updateFromClock:()=>{},zoomTo:()=>{}}}let I,B,X;(!c(e.fullscreenButton)||e.fullscreenButton!==!1)&&(X=document.createElement("div"),X.className="cesium-viewer-fullscreenContainer",o.appendChild(X),I=new BD(X,e.fullscreenElement),B=od(I.viewModel,"isFullscreenEnabled",function($){X.style.display=$?"block":"none",c(E)&&(E.container.style.right=`${X.clientWidth}px`,E.resize())}));let _,P,w;if(e.vrButton){let $=document.createElement("div");$.className="cesium-viewer-vrContainer",o.appendChild($),_=new nO($,u,e.fullScreenElement),P=od(_.viewModel,"isVREnabled",function(dt){$.style.display=dt?"block":"none",c(I)&&($.style.right=`${X.clientWidth}px`),c(E)&&(E.container.style.right=`${$.clientWidth}px`,E.resize())}),w=od(_.viewModel,"isVRMode",function(dt){RDe(i,dt)})}this._baseLayerPickerDropDown=J,this._fullscreenSubscription=B,this._vrSubscription=P,this._vrModeSubscription=w,this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=f(e.automaticallyTrackDataSourceClocks,!0),this._container=t,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=G,this._infoBox=A,this._dataSourceCollection=Z,this._destroyDataSourceCollection=b,this._dataSourceDisplay=F,this._clockViewModel=d,this._destroyClockViewModel=m,this._toolbar=T,this._homeButton=C,this._sceneModePicker=y,this._projectionPicker=Y,this._baseLayerPicker=Q,this._navigationHelpButton=M,this._animation=V,this._timeline=E,this._fullscreenButton=I,this._vrButton=_,this._geocoder=g,this._eventHelper=U,this._lastWidth=0,this._lastHeight=0,this._allowDataSourcesToSuspendAnimation=!0,this._entityView=void 0,this._enableInfoOrSelection=c(A)||c(G),this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._selectedEntity=void 0,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._selectedEntityChanged=new It,this._trackedEntityChanged=new It,this._referenceFrame=0,Lt.track(this,["_trackedEntity","_selectedEntity","_clockTrackedDataSource"]),U.add(Z.dataSourceAdded,Do.prototype._onDataSourceAdded,this),U.add(Z.dataSourceRemoved,Do.prototype._onDataSourceRemoved,this),U.add(u.postUpdate,Do.prototype.resize,this),U.add(u.postRender,Do.prototype._postRender,this);let z=Z.length;for(let $=0;$<z;$++)this._dataSourceAdded(Z,Z.get($));this._dataSourceAdded(void 0,F.defaultDataSource),U.add(Z.dataSourceAdded,Do.prototype._dataSourceAdded,this),U.add(Z.dataSourceRemoved,Do.prototype._dataSourceRemoved,this);function H($){i.camera.unTrack(!1);let dt=Mkt(i,$);c(dt)?et.getValueOrUndefined(dt.position,i.clock.currentTime)?i.trackedEntity=dt:i.zoomTo(dt):c(i.trackedEntity)&&(i.trackedEntity=void 0)}function nt($){i.selectedEntity=Mkt(i,$)}h.screenSpaceEventHandler.setInputAction(nt,Zi.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(H,Zi.LEFT_DOUBLE_CLICK),u.fxaa=!0,u.fxaaOrderIndependentTranslucency=!0,this._bottomContainer.style.pointerEvents="none",this.container.style.userSelect="none"}Object.defineProperties(Do.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(t){this.scene.shadowMap.enabled=t}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(t){this.scene.globe.shadows=t}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(t){this.scene.terrainProvider=t}},camera:{get:function(){return this.scene.camera}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(t){this._cesiumWidget.targetFrameRate=t}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(t){this._cesiumWidget.useDefaultRenderLoop=t}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(t){this._cesiumWidget.resolutionScale=t}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(t){this._cesiumWidget.useBrowserRecommendedResolution=t}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(t){this._allowDataSourcesToSuspendAnimation=t}},trackedEntity:{get:function(){return this._trackedEntity},set:function(t){if(this._trackedEntity!==t){this._trackedEntity=t,wrt(this);let e=this.scene,n=e.mode;!c(t)||!c(t.position)?(this._needTrackedEntityUpdate=!1,(n===ut.COLUMBUS_VIEW||n===ut.SCENE2D)&&(e.screenSpaceCameraController.enableTranslate=!0),(n===ut.COLUMBUS_VIEW||n===ut.SCENE3D)&&(e.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(L.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(t),this.scene.requestRender()}}},selectedEntity:{get:function(){return this._selectedEntity},set:function(t){if(this._selectedEntity!==t){this._selectedEntity=t;let e=c(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;c(t)?c(e)&&e.animateAppear():c(e)&&e.animateDepart(),this._selectedEntityChanged.raiseEvent(t)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(t){this._clockTrackedDataSource!==t&&(this._clockTrackedDataSource=t,Okt(this._timeline,this.clock,t))}},referenceFrame:{get:function(){return this._referenceFrame},set:function(t){this._referenceFrame=t}}});Do.prototype.extend=function(t,e){t(this,e)};Do.prototype.resize=function(){let t=this._cesiumWidget,e=this._container,n=e.clientWidth,i=e.clientHeight,o=c(this._animation),a=c(this._timeline);if(t.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,l=this._baseLayerPickerDropDown;if(c(l)&&(l.style.maxHeight=`${s}px`),c(this._geocoder)){let b=this._geocoder.searchSuggestionsContainer;b.style.maxHeight=`${s}px`}c(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let r=this._timeline,d,m=0,h=0,Z=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let b=this._lastWidth;d=this._animation.container,n>900?(m=169,b<=900&&(d.style.width="169px",d.style.height="112px",this._animation.resize())):n>=600?(m=136,(b<600||b>900)&&(d.style.width="136px",d.style.height="90px",this._animation.resize())):(m=106,(b>600||b===0)&&(d.style.width="106px",d.style.height="70px",this._animation.resize())),h=m+5}if(a&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let b=this._fullscreenButton,u=this._vrButton,F=r.container,U=F.style;Z=F.clientHeight+3,U.left=`${m}px`;let G=0;c(b)&&(G+=b.container.clientWidth),c(u)&&(G+=u.container.clientWidth),U.right=`${G}px`,r.resize()}this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${Z}px`,this._lastWidth=n,this._lastHeight=i};Do.prototype.forceResize=function(){this._lastWidth=0,this.resize()};Do.prototype.render=function(){this._cesiumWidget.render()};Do.prototype.isDestroyed=function(){return!1};Do.prototype.destroy=function(){let t;c(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(Zi.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(Zi.LEFT_DOUBLE_CLICK));let e=this.dataSources,n=e.length;for(t=0;t<n;t++)this._dataSourceRemoved(e,e.get(t));return this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),c(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),c(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),c(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),c(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),c(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),c(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),c(this._timeline)&&(this._timeline.removeEventListener("settime",Dkt,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),c(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),c(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),c(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),c(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),this._cesiumWidget=this._cesiumWidget.destroy(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),At(this)};Do.prototype._dataSourceAdded=function(t,e){e.entities.collectionChanged.addEventListener(Do.prototype._onEntityCollectionChanged,this)};Do.prototype._dataSourceRemoved=function(t,e){let n=e.entities;n.collectionChanged.removeEventListener(Do.prototype._onEntityCollectionChanged,this),c(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0),c(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};Do.prototype._onTick=function(t){let e=t.currentTime,n=this._dataSourceDisplay.update(e);this._allowDataSourcesToSuspendAnimation&&(this._clockViewModel.canAnimate=n);let i=this._entityView;if(c(i)){let m=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(m,!1,LU)===ve.DONE&&i.update(e,LU)}let o,a=!1,s=this.selectedEntity,l=c(s)&&this._enableInfoOrSelection;l&&s.isShowing&&s.isAvailable(e)&&(this._dataSourceDisplay.getBoundingSphere(s,!0,LU)!==ve.FAILED?o=LU.center:c(s.position)&&(o=s.position.getValue(e,o)),a=c(o));let r=c(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;c(r)&&(r.position=p.clone(o,r.position),r.showSelection=l&&a,r.update());let d=c(this._infoBox)?this._infoBox.viewModel:void 0;c(d)&&(d.showInfo=l,d.enableCamera=a,d.isCameraTracking=this.trackedEntity===this.selectedEntity,l?(d.titleText=f(s.name,s.id),d.description=et.getValueOrDefault(s.description,e,"")):(d.titleText="",d.description=""))};Do.prototype._onEntityCollectionChanged=function(t,e,n){let i=n.length;for(let o=0;o<i;o++){let a=n[o];this.trackedEntity===a&&(this.trackedEntity=void 0),this.selectedEntity===a&&(this.selectedEntity=void 0)}};Do.prototype._onInfoBoxCameraClicked=function(t){if(t.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;c(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};Do.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Do.prototype._onInfoBoxClockClicked=function(t){this.selectedEntity=void 0};Do.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};Do.prototype._onDataSourceChanged=function(t){this.clockTrackedDataSource===t&&Okt(this.timeline,this.clock,t)};Do.prototype._onDataSourceAdded=function(t,e){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=e);let n=e.entities.id,i=this._eventHelper.add(e.changedEvent,Do.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Do.prototype._onDataSourceRemoved=function(t,e){let n=this.clockTrackedDataSource===e,i=e.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=t.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=t.get(o-1):this.clockTrackedDataSource=void 0}};Do.prototype.zoomTo=function(t,e){return Hkt(this,t,{offset:e},!1)};Do.prototype.flyTo=function(t,e){return Hkt(this,t,e,!0)};function Hkt(t,e,n,i){wrt(t);let o=new Promise(a=>{t._completeZoom=function(s){a(s)}});return t._zoomPromise=o,t._zoomIsFlight=i,t._zoomOptions=n,Promise.resolve(e).then(function(a){if(t._zoomPromise===o){if(a instanceof $r){let s;c(a.imageryProvider)?s=Promise.resolve(a.getImageryRectangle()):s=new Promise(l=>{let r=a.readyEvent.addEventListener(()=>{r(),l(a.getImageryRectangle())})}),s.then(function(l){return rg(l,t.scene)}).then(function(l){t._zoomPromise===o&&(t._zoomTarget=l)});return}if(a instanceof Pr||a instanceof UN||a instanceof TU){t._zoomTarget=a;return}if(a.isLoading&&c(a.loadingEvent)){let s=a.loadingEvent.addEventListener(function(){s(),t._zoomPromise===o&&(t._zoomTarget=a.entities.values.slice(0))});return}if(Array.isArray(a)){t._zoomTarget=a.slice(0);return}a=f(a.values,a),c(a.entities)&&(a=a.entities.values),Array.isArray(a)?t._zoomTarget=a.slice(0):t._zoomTarget=[a]}}),t.scene.requestRender(),o}function iO(t){t._zoomPromise=void 0,t._zoomTarget=void 0,t._zoomOptions=void 0}function wrt(t){let e=t._zoomPromise;c(e)&&(iO(t),t._completeZoom(!1))}Do.prototype._postRender=function(){WDe(this),fDe(this)};function WDe(t){let e=t._zoomTarget;if(!c(e)||t.scene.mode===ut.MORPHING)return;let n=t.scene,i=n.camera,o=f(t._zoomOptions,{}),a;function s(m){c(o.offset)||(o.offset=new Zu(0,-.5,m.radius)),a={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){t._completeZoom(!0)},cancel:function(){t._completeZoom(!1)}},t._zoomIsFlight?i.flyToBoundingSphere(e.boundingSphere,a):(i.viewBoundingSphere(m,o.offset),i.lookAtTransform(L.IDENTITY),t._completeZoom(!0)),iO(t)}if(e instanceof UN){if(c(e.boundingSphere)){s(e.boundingSphere);return}let m=e.frameChanged.addEventListener(function(h){s(h.boundingSphere),m()});return}if(e instanceof Pr||e instanceof TU){s(e.boundingSphere);return}if(e instanceof gt){a={destination:n.mapProjection.ellipsoid.cartographicToCartesian(e),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){t._completeZoom(!0)},cancel:function(){t._completeZoom(!1)}},t._zoomIsFlight?i.flyTo(a):(i.setView(a),t._completeZoom(!0)),iO(t);return}let l=e,r=[];for(let m=0,h=l.length;m<h;m++){let Z=t._dataSourceDisplay.getBoundingSphere(l[m],!1,LU);if(Z===ve.PENDING)return;Z!==ve.FAILED&&r.push(Ft.clone(LU))}if(r.length===0){wrt(t);return}t.trackedEntity=void 0;let d=Ft.fromBoundingSpheres(r);t._zoomIsFlight?(iO(t),i.flyToBoundingSphere(d,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){t._completeZoom(!0)},cancel:function(){t._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(d,o.offset),i.lookAtTransform(L.IDENTITY),iO(t),t._completeZoom(!0))}function fDe(t){if(!t._needTrackedEntityUpdate)return;let e=t._trackedEntity,n=t.clock.currentTime,i=et.getValueOrUndefined(e.position,n);if(!c(i))return;let o=t.scene,a=t._dataSourceDisplay.getBoundingSphere(e,!1,LU);if(a===ve.PENDING)return;let s=o.mode;(s===ut.COLUMBUS_VIEW||s===ut.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ut.COLUMBUS_VIEW||s===ut.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let l=a!==ve.FAILED?LU:void 0;t._entityView=new AL(e,o,o.mapProjection.ellipsoid),t._entityView.update(n,l),t._needTrackedEntityUpdate=!1}var Prt=Do;var XAa=R(W(),1),FDe='.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:0}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button-disabled,.cesium-button-disabled:active,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button:disabled{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:rgba(40,40,40,.7);padding:7px;border-radius:5px;border:1px solid #444;font:bold 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:0.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG{cursor:pointer}.cesium-animation-shuttleRingPointer{cursor:pointer}.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:0.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:0.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:rgba(38,38,38,.75);border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;transform:translate(0,-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0,0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px #bdecf8}.cesium-widget{position:relative}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000;padding-right:5px}.cesium-widget-credits a,.cesium-widget-credits a:visited{color:#fff}.cesium-widget-errorPanel{position:absolute;top:0;right:0;bottom:0;left:0;text-align:center;background:rgba(0,0,0,.7);z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:"Open Sans",Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;padding-bottom:10px;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:"Open Sans",Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px 0}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px 0;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:rgba(48,51,54,.8);border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:500px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding-left:10px;padding:5px;background-color:rgba(80,80,80,.75)}.cesium-cesiumInspector-pickButton{background-color:rgba(0,0,0,.3);border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:0}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader::before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader::before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:0;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:rgba(48,51,54,.8);border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:0 0;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid #fff}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:0;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-button.cesium-fullscreenButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:rgba(40,40,40,.7);color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:rgba(15,15,15,.9);box-shadow:none;outline:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:rgba(38,38,38,.95);color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%,0);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0,0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:0 0;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:0 0;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:rgba(238,136,0,.44);outline:0}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView{margin:0 0 3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective{margin:0 0 3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:rgba(38,38,38,.75);padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible{display:block}.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:0}.cesium-navigation-button-left{border-radius:10px 0 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:rgba(38,38,38,.75)}.cesium-navigation-button-unselected{background-color:rgba(0,0,0,.75)}.cesium-navigation-button-unselected:hover{background-color:rgba(76,76,76,.75)}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,rgba(116,117,119,.8) 0,rgba(58,68,82,.8) 11%,rgba(46,50,56,.8) 46%,rgba(53,53,53,.8) 81%,rgba(53,53,53,.8) 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==");background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-bottom{z-index:10000}';function UDe(t,e){let n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.innerText=FDe,n.appendChild(i)}var vrt=UDe;var MAa=R(W(),1);var oO,wkt;function GDe(){let t=180/Math.PI*Math.atan2(oO.scene.camera.position.x,oO.scene.camera.position.y),e=t>0?t:360+t;console.log(`Azimuth: ${e}`),console.log(`Pointing: ${(e+180)%360}`)}function ADe(t,e={autosave:!1,interval:1e3}){oO=t;let{view:n}=t.storage.queryOptions;if(c(n)){let i=n.split(/[ ,]+/);if(i.length>1){let o=isNaN(+i[0])?0:+i[0],a=isNaN(+i[1])?0:+i[1],s=i.length>2&&!isNaN(+i[2])?+i[2]:300,l=i.length>3&&!isNaN(+i[3])?k.toRadians(+i[3]):void 0,r=i.length>4&&!isNaN(+i[4])?k.toRadians(+i[4]):void 0,d=i.length>5&&!isNaN(+i[5])?k.toRadians(+i[5]):void 0;oO.camera.setView({destination:p.fromDegrees(o,a,s),orientation:{heading:l,pitch:r,roll:d}})}}e.autosave&&oO.camera.changed.addEventListener(()=>{window.clearTimeout(wkt),wkt=window.setTimeout(GDe,1e3)})}var Krt=ADe;var OAa=R(W(),1);function TDe(t){let e=document.createElement("div");e.className="cesium-viewer-cesium3DTilesInspectorContainer",t.container.appendChild(e);let n=new fD(e,t.scene);Object.defineProperties(t,{cesium3DTilesInspector:{get:function(){return n}}})}var zrt=TDe;var PAa=R(W(),1);function SDe(t){let e=document.createElement("div");e.className="cesium-viewer-cesiumInspectorContainer",t.container.appendChild(e);let n=new ND(e,t.scene);Object.defineProperties(t,{cesiumInspector:{get:function(){return n}}})}var jrt=SDe;var jAa=R(W(),1);function gDe(t,e){e=f(e,f.EMPTY_OBJECT);let n=!0,i=f(e.flyToOnDrop,!0),o=new It,a=f(e.clearOnDrop,!0),s=f(e.dropTarget,t.container),l=f(e.clampToGround,!0),r=e.proxy;s=Ui(s),Object.defineProperties(t,{dropTarget:{get:function(){return s},set:function(m){Pkt(s,d),s=m,qrt(s,d)}},dropEnabled:{get:function(){return n},set:function(m){m!==n&&(m?qrt(s,d):Pkt(s,d),n=m)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return a},set:function(m){a=m}},flyToOnDrop:{get:function(){return i},set:function(m){i=m}},proxy:{get:function(){return r},set:function(m){r=m}},clampToGround:{get:function(){return l},set:function(m){l=m}}});function d(m){hg(m),a&&(t.entities.removeAll(),t.dataSources.removeAll());let h=m.dataTransfer.files,Z=h.length;for(let b=0;b<Z;b++){let u=h[b],F=new FileReader;F.onload=EDe(t,u,r,l),F.onerror=CDe(t,u),F.readAsText(u)}}qrt(s,d),t.destroy=Y5(t,t.destroy,function(){t.dropEnabled=!1}),t._handleDrop=d}function hg(t){t.stopPropagation(),t.preventDefault()}function Pkt(t,e){let n=t;c(n)&&(n.removeEventListener("drop",e,!1),n.removeEventListener("dragenter",hg,!1),n.removeEventListener("dragover",hg,!1),n.removeEventListener("dragexit",hg,!1))}function qrt(t,e){t.addEventListener("drop",e,!1),t.addEventListener("dragenter",hg,!1),t.addEventListener("dragover",hg,!1),t.addEventListener("dragexit",hg,!1)}function EDe(t,e,n,i){let o=t.scene;return function(a){let s=e.name;try{let l;if(/\.czml$/i.test(s))l=O0.load(JSON.parse(a.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))l=gL.load(JSON.parse(a.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))l=iM.load(e,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:t.container});else if(/\.gpx$/i.test(s))l=NL.load(e,{sourceUri:s,proxy:n});else{t.dropError.raiseEvent(t,s,`Unrecognized file: ${s}`);return}c(l)&&t.dataSources.add(l).then(function(r){t.flyToOnDrop&&t.flyTo(r)}).catch(function(r){t.dropError.raiseEvent(t,s,r)})}catch(l){t.dropError.raiseEvent(t,s,l)}}}function CDe(t,e){return function(n){t.dropError.raiseEvent(t,e.name,n.target.error)}}var $rt=gDe;var iTa=R(W(),1);function IDe(t,e){e=f(e,f.EMPTY_OBJECT);let n=new OD({scene:t.scene,container:t.bottomContainer,lowFrameRateMessage:e.lowFrameRateMessage});Object.defineProperties(t,{performanceWatchdog:{get:function(){return n}}})}var tdt=IDe;var sTa=R(W(),1);function NDe(t){if(t.scene.mode!==ut.SCENE3D)return;let e=t.scene,n=t.clock.currentTime,i=e.camera,o=p.clone(i.position);if(t.referenceFrame===ri.INERTIAL&&!t.trackedEntity){let a=Pe.computeIcrfToFixedMatrix(n);if(c(a)){let s=L.fromRotationTranslation(a);i.lookAtTransform(s,o)}}else t.trackedEntity||i.lookAtTransform(L.IDENTITY)}function yDe(t){Object.defineProperty(t,"referenceFrame",{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e,this.scene.referenceFrame=e,this.eventBus&&this.eventBus.emit("referenceFrame",this._referenceFrame);let n=this.dataSources._dataSources;for(let i=0;i<n.length;i++)n[i]._entityCollection.referenceFrame=e}}),t.dataSources.dataSourceAdded.addEventListener(function(e,n){n._viewer=t,n._entityCollection.referenceFrame=t.referenceFrame}),t.scene.preRender.addEventListener(function(){NDe(t)})}var edt=yDe;var dTa=R(W(),1);function ndt(t,e){t.storage={},t.storage.queryOptions=Tc(window.location.search.substring(1))}var ATa=R(W(),1);var FTa=R(W(),1);var uTa=R(W(),1);function vkt(t){let e=t.split(` + </div>`,n.appendChild(i);let o=new XD(e);Lt.track(o),Lt.applyBindings(o,n),c(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var Xrt=O5e;var CUa=b(W(),1);var UUa=b(W(),1);var H5e="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",w5e="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function Jrt(){this._cameraClicked=new It,this._closeClicked=new It,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",Lt.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,Lt.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?w5e:H5e}}),Lt.defineProperty(this,"_bodyless",{get:function(){return!c(this.description)||this.description.length===0}})}Jrt.prototype.maxHeightOffset=function(t){return`${this.maxHeight-t}px`};Object.defineProperties(Jrt.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var JD=Jrt;function f4(t){t=Ui(t);let e=document.createElement("div");e.className="cesium-infoBox",e.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),t.appendChild(e);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),e.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",e.appendChild(o);let a=document.createElement("iframe");a.className="cesium-infoBox-iframe",a.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),a.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),a.setAttribute("allowfullscreen",!0),e.appendChild(a);let s=new JD;Lt.applyBindings(s,e),this._container=t,this._element=e,this._frame=a,this._viewModel=s,this._descriptionSubscription=void 0;let l=this;a.addEventListener("load",function(){let r=a.contentDocument,d=r.createElement("link");d.href=Dn("Widgets/InfoBox/InfoBoxDescription.css"),d.rel="stylesheet",d.type="text/css";let m=r.createElement("div");m.className="cesium-infoBox-description",r.head.appendChild(d),r.body.appendChild(m),l._descriptionSubscription=od(s,"description",function(h){a.style.height="5px",m.innerHTML=h;let u=null,R=m.firstElementChild;if(R!==null&&m.childNodes.length===1){let F=window.getComputedStyle(R);if(F!==null){let U=F["background-color"],G=v.fromCssColorString(U);c(G)&&G.alpha!==0&&(u=F["background-color"])}}e.style["background-color"]=u;let V=m.getBoundingClientRect().height;a.style.height=`${V}px`})}),a.setAttribute("src","about:blank")}Object.defineProperties(f4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});f4.prototype.isDestroyed=function(){return!1};f4.prototype.destroy=function(){let t=this._container;return Lt.cleanNode(this._element),t.removeChild(this._element),c(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),At(this)};var LD=f4;var LUa=b(W(),1);var BUa=b(W(),1);function B2t(){this.showInstructions=!1;let t=this;this._command=Ri(function(){t.showInstructions=!t.showInstructions}),this._showClick=Ri(function(){t._touch=!1}),this._showTouch=Ri(function(){t._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",Lt.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(B2t.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var MD=B2t;function F4(t){let e=Ui(t.container),n=new MD,i=f(t.instructionsInitiallyVisible,!1);n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",e.appendChild(o);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",a.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(a);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let l=document.createElement("button");l.type="button",l.className="cesium-navigation-button cesium-navigation-button-left",l.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let r=document.createElement("img");r.src=Dn("Widgets/Images/NavigationHelp/Mouse.svg"),r.className="cesium-navigation-button-icon",r.style.width="25px",r.style.height="25px",l.appendChild(r),l.appendChild(document.createTextNode("Mouse"));let d=document.createElement("button");d.type="button",d.className="cesium-navigation-button cesium-navigation-button-right",d.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let m=document.createElement("img");m.src=Dn("Widgets/Images/NavigationHelp/Touch.svg"),m.className="cesium-navigation-button-icon",m.style.width="25px",m.style.height="25px",d.appendChild(m),d.appendChild(document.createTextNode("Touch")),s.appendChild(l),s.appendChild(d);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let u=document.createElement("div");u.className="cesium-touch-navigation-help cesium-navigation-help-instructions",u.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),u.innerHTML=` <table> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${Dn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(u),Lt.applyBindings(n,o),this._container=e,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(R){o.contains(R.target)||(n.showInstructions=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(F4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});F4.prototype.isDestroyed=function(){return!1};F4.prototype.destroy=function(){return In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),Lt.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),At(this)};var _D=F4;var tGa=b(W(),1);var PUa=b(W(),1);function Lrt(t){this._scene=t.scene,this.lowFrameRateMessage=f(t.lowFrameRateMessage,"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers."),this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,Lt.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let e=this;this._dismissMessage=Ri(function(){e.showingLowFrameRateMessage=!1,e.lowFrameRateMessageDismissed=!0});let n=P5.fromScene(t.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){e.lowFrameRateMessageDismissed||(e.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){e.showingLowFrameRateMessage=!1})}Object.defineProperties(Lrt.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});Lrt.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),At(this)};var DD=Lrt;function U4(t){let e=Ui(t.container),n=new DD(t),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let a=document.createElement("div");a.className="cesium-performance-watchdog-message",a.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(a),e.appendChild(i),Lt.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(U4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});U4.prototype.isDestroyed=function(){return!1};U4.prototype.destroy=function(){return this._viewModel.destroy(),Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var OD=U4;var pGa=b(W(),1);var sGa=b(W(),1);function G4(t){this._scene=t,this._orthographic=t.camera.frustum instanceof wn,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=t.mode,Lt.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let e=this;Lt.defineProperty(this,"selectedTooltip",function(){return e._orthographic?e.tooltipOrthographic:e.tooltipPerspective}),this._toggleDropDown=Ri(function(){e.sceneMode===Vt.SCENE2D||e._flightInProgress||(e.dropDownVisible=!e.dropDownVisible)}),this._eventHelper=new rl,this._eventHelper.add(t.morphComplete,function(n,i,o,a){e.sceneMode=o,e._orthographic=o===Vt.SCENE2D||e._scene.camera.frustum instanceof wn}),this._eventHelper.add(t.preRender,function(){e._flightInProgress=c(t.camera._currentFlight)}),this._switchToPerspective=Ri(function(){e.sceneMode!==Vt.SCENE2D&&(e._scene.camera.switchToPerspectiveFrustum(),e._orthographic=!1,e.dropDownVisible=!1)}),this._switchToOrthographic=Ri(function(){e.sceneMode!==Vt.SCENE2D&&(e._scene.camera.switchToOrthographicFrustum(),e._orthographic=!0,e.dropDownVisible=!1)}),this._sceneMode=Vt}Object.defineProperties(G4.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});G4.prototype.isDestroyed=function(){return!1};G4.prototype.destroy=function(){this._eventHelper.removeAll(),At(this)};var HD=G4;var P5e="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",v5e="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function A4(t,e){t=Ui(t);let n=new HD(e);n._perspectivePath=P5e,n._orthographicPath=v5e;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(a);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),Lt.applyBindings(n,i),this._viewModel=n,this._container=t,this._wrapper=i,this._closeDropDown=function(l){i.contains(l.target)||(n.dropDownVisible=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(A4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});A4.prototype.isDestroyed=function(){return!1};A4.prototype.destroy=function(){return this._viewModel.destroy(),In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Lt.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),At(this)};var wD=A4;var gGa=b(W(),1);var fGa=b(W(),1);function S4(t,e){this._scene=t;let n=this,i=function(o,a,s,l){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new rl,this._eventHelper.add(t.morphStart,i),this._duration=f(e,2),this.sceneMode=t.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",Lt.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,Lt.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===Vt.SCENE2D?n.tooltip2D:o===Vt.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Ri(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Ri(function(){t.morphTo2D(n._duration)}),this._morphTo3D=Ri(function(){t.morphTo3D(n._duration)}),this._morphToColumbusView=Ri(function(){t.morphToColumbusView(n._duration)}),this._sceneMode=Vt}Object.defineProperties(S4.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(t){this._duration=t}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});S4.prototype.isDestroyed=function(){return!1};S4.prototype.destroy=function(){this._eventHelper.removeAll(),At(this)};var PD=S4;var K5e="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",z5e="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",j5e="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function T4(t,e,n){t=Ui(t);let i=new PD(e,n);i._globePath=K5e,i._flatMapPath=z5e,i._columbusViewPath=j5e;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",t.appendChild(o);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),a.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(a);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let l=document.createElement("button");l.type="button",l.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",l.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(l);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(r),Lt.applyBindings(i,o),this._viewModel=i,this._container=t,this._wrapper=o,this._closeDropDown=function(d){o.contains(d.target)||(i.dropDownVisible=!1)},In.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(T4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});T4.prototype.isDestroyed=function(){return!1};T4.prototype.destroy=function(){return this._viewModel.destroy(),In.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Lt.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),At(this)};var vD=T4;var JGa=b(W(),1);var yGa=b(W(),1);var q5e=new K,g4="-1000px";function KD(t,e,n){this._scene=t,this._screenPositionX=g4,this._screenPositionY=g4,this._tweens=t.tweens,this._container=f(n,document.body),this._selectionIndicatorElement=e,this._scale=1,this.position=void 0,this.showSelection=!1,Lt.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,Lt.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&c(this.position)}}),Lt.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return qo.wgs84ToWindowCoordinates(t,i,o)}}KD.prototype.update=function(){if(this.showSelection&&c(this.position)){let t=this.computeScreenSpacePosition(this.position,q5e);if(!c(t))this._screenPositionX=g4,this._screenPositionY=g4;else{let e=this._container,n=e.parentNode.clientWidth,i=e.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,a=o*.5;t.x=Math.min(Math.max(t.x,-o),n+o)-a,t.y=Math.min(Math.max(t.y,-o),i+o)-a,this._screenPositionX=`${Math.floor(t.x+.25)}px`,this._screenPositionY=`${Math.floor(t.y+.25)}px`}}};KD.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ul.EXPONENTIAL_OUT})};KD.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ul.EXPONENTIAL_OUT})};Object.defineProperties(KD.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var zD=KD;function E4(t,e){t=Ui(t),this._container=t;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),t.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",a=document.createElementNS(i,"svg:svg");a.setAttribute("width",160),a.setAttribute("height",160),a.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),a.appendChild(s);let l=document.createElementNS(i,"path");l.setAttribute("data-bind","attr: { transform: _transform }"),l.setAttribute("d",o),s.appendChild(l),n.appendChild(a);let r=new zD(e,this._element,this._container);this._viewModel=r,Lt.applyBindings(this._viewModel,this._element)}Object.defineProperties(E4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});E4.prototype.isDestroyed=function(){return!1};E4.prototype.destroy=function(){let t=this._container;return Lt.cleanNode(this._element),t.removeChild(this._element),At(this)};var jD=E4;var jGa=b(W(),1);var _Ga=b(W(),1);function mg(t,e,n){this._color=t,this._height=e,this._base=f(n,0)}mg.prototype.getHeight=function(){return this._height};mg.prototype.getBase=function(){return this._base};mg.prototype.getStartTime=function(){return this._start};mg.prototype.getStopTime=function(){return this._stop};mg.prototype.setRange=function(t,e){this._start=t,this._stop=e};mg.prototype.render=function(t){let e="";if(this._start&&this._stop&&this._color){let n=rt.secondsDifference(this._start,t.epochJulian),i=Math.round(t.timeBarWidth*t.getAlpha(n)),o=rt.secondsDifference(this._stop,t.epochJulian),a=Math.round(t.timeBarWidth*t.getAlpha(o))-i;i<0&&(a+=i,i=0),i+a>t.timeBarWidth&&(a=t.timeBarWidth-i),a>0&&(e=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${a.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return e};var qD=mg;var HGa=b(W(),1);function Q2t(t,e,n,i){this.interval=t,this.height=e,this.color=n||new v(.5,.5,.5,1),this.backgroundColor=i||new v(0,0,0,0)}Q2t.prototype.render=function(t,e){let n=this.interval.start,i=this.interval.stop,o=e.startJulian,a=rt.addSeconds(e.startJulian,e.duration,new rt);if(rt.lessThan(n,o)&&rt.greaterThan(i,a))t.fillStyle=this.color.toCssColorString(),t.fillRect(0,e.y,e.timeBarWidth,this.height);else if(rt.lessThanOrEquals(n,a)&&rt.greaterThanOrEquals(i,o)){let s,l,r;for(s=0;s<e.timeBarWidth;++s){let d=rt.addSeconds(e.startJulian,s/e.timeBarWidth*e.duration,new rt);!c(l)&&rt.greaterThanOrEquals(d,n)?l=s:!c(r)&&rt.greaterThanOrEquals(d,i)&&(r=s)}t.fillStyle=this.backgroundColor.toCssColorString(),t.fillRect(0,e.y,e.timeBarWidth,this.height),c(l)&&(c(r)||(r=e.timeBarWidth),t.fillStyle=this.color.toCssColorString(),t.fillRect(l,e.y,Math.max(r-l,1),this.height))}};var $D=Q2t;var Mrt=1e12,xV={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},am={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},JU=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],$5e=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function sm(t,e){t=Ui(t);let n=t.ownerDocument;this.container=t;let i=n.createElement("div");i.className="cesium-timeline-main",t.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=e,this._scrubJulian=e.currentTime,this._mainTicSpan=-1,this._mouseMode=xV.none,this._touchMode=am.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(e.startTime,e.stopTime),this._onMouseDown=tDe(this),this._onMouseUp=eDe(this),this._onMouseMove=nDe(this),this._onMouseWheel=iDe(this),this._onTouchStart=oDe(this),this._onTouchMove=sDe(this),this._onTouchEnd=aDe(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},e.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}sm.prototype.addEventListener=function(t,e,n){this._topDiv.addEventListener(t,e,n)};sm.prototype.removeEventListener=function(t,e,n){this._topDiv.removeEventListener(t,e,n)};sm.prototype.isDestroyed=function(){return!1};sm.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let t=this.container.ownerDocument;t.removeEventListener("mouseup",this._onMouseUp,!1),t.removeEventListener("mousemove",this._onMouseMove,!1);let e=this._timeBarEle;e.removeEventListener("mousedown",this._onMouseDown,!1),e.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),e.removeEventListener("mousewheel",this._onMouseWheel,!1),e.removeEventListener("touchstart",this._onTouchStart,!1),e.removeEventListener("touchmove",this._onTouchMove,!1),e.removeEventListener("touchend",this._onTouchEnd,!1),e.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),At(this)};sm.prototype.addHighlightRange=function(t,e,n){let i=new qD(t,e,n);return this._highlightRanges.push(i),this.resize(),i};sm.prototype.addTrack=function(t,e,n,i){let o=new $D(t,e,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};sm.prototype.zoomTo=function(t,e){if(this._startJulian=t,this._endJulian=e,this._timeBarSecondsSpan=rt.secondsDifference(e,t),this._clock&&this._clock.clockRange!==pl.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,a=rt.secondsDifference(o,i),s=rt.secondsDifference(i,this._startJulian),l=rt.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=a?(this._timeBarSecondsSpan=a,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=rt.addSeconds(this._endJulian,s,new rt),this._startJulian=i,this._timeBarSecondsSpan=rt.secondsDifference(this._endJulian,this._startJulian)):l<0&&(this._startJulian=rt.addSeconds(this._startJulian,l,new rt),this._endJulian=o,this._timeBarSecondsSpan=rt.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};sm.prototype.zoomFrom=function(t){let e=rt.secondsDifference(this._scrubJulian,this._startJulian);t>1||e<0||e>this._timeBarSecondsSpan?e=this._timeBarSecondsSpan*.5:e+=e-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-e;this.zoomTo(rt.addSeconds(this._startJulian,e-e*t,new rt),rt.addSeconds(this._endJulian,n*t-n,new rt))};function _rt(t){return t<10?`0${t.toString()}`:t.toString()}sm.prototype.makeLabel=function(t){let e=rt.toGregorianDate(t),n=e.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${$5e[e.month-1]} ${e.day} ${e.year} ${_rt(e.hour)}:${_rt(e.minute)}:${_rt(e.second)}${i}`};sm.prototype.smallestTicInPixels=7;sm.prototype._makeTics=function(){let t=this._timeBarEle,e=rt.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(e*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,a=this;this._needleEle.style.left=`${n.toString()}px`;let s="",l=.01,r=31536e6,d=1e-10,m=0,h=this._timeBarSecondsSpan;h<l?(h=l,this._timeBarSecondsSpan=l,this._endJulian=rt.addSeconds(this._startJulian,l,new rt)):h>r&&(h=r,this._timeBarSecondsSpan=r,this._endJulian=rt.addSeconds(this._startJulian,r,new rt));let u=this._timeBarEle.clientWidth;u<10&&(u=10);let R=this._startJulian,V=Math.min(h/u*1e-5,.4),F,U=rt.toGregorianDate(R);h>31536e4?F=rt.fromDate(new Date(Date.UTC(Math.floor(U.year/100)*100,0))):h>31536e3?F=rt.fromDate(new Date(Date.UTC(Math.floor(U.year/10)*10,0))):h>86400?F=rt.fromDate(new Date(Date.UTC(U.year,0))):F=rt.fromDate(new Date(Date.UTC(U.year,U.month,U.day)));let G=rt.secondsDifference(this._startJulian,rt.addSeconds(F,V,new rt)),A=G+h;this._epochJulian=F;function S(H){return Math.floor(G/H)*H}function g(H,nt){return Math.ceil(H/nt+.5)*nt}function C(H){return(H-G)/h}function y(H,nt){return H-nt*Math.round(H/nt)}this._rulerEle.innerHTML=this.makeLabel(rt.addSeconds(this._endJulian,-l,new rt));let Y=this._rulerEle.offsetWidth+20;Y<30&&(Y=180);let Q=m;m-=d;let J={startTime:G,startJulian:R,epochJulian:F,duration:h,timeBarWidth:u,getAlpha:C};this._highlightRanges.forEach(function(H){s+=H.render(J)});let M=0,Z=0,E=0,I=Y/u;I>1&&(I=1),I*=this._timeBarSecondsSpan;let B=-1,X=-1,_=JU.length,P;for(P=0;P<_;++P){let H=JU[P];if(++B,M=H,H>I&&H>m)break;X<0&&u*(H/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(X=B)}if(B>0){for(;B>0;)if(--B,Math.abs(y(M,JU[B]))<1e-5){JU[B]>=m&&(Z=JU[B]);break}if(X>=0)for(;X<B;){if(Math.abs(y(Z,JU[X]))<1e-5&&JU[X]>=m){E=JU[X];break}++X}}m=Q,m>d&&E<1e-5&&Math.abs(m-M)>d&&(E=m,m<=M+d&&(Z=0));let w=-999999,z;if(u*(E/this._timeBarSecondsSpan)>=3)for(o=S(E);o<=A;o=g(o,E))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(u*C(o)).toString()}px;"></span>`;if(u*(Z/this._timeBarSecondsSpan)>=3)for(o=S(Z);o<=A;o=g(o,Z))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(u*C(o)).toString()}px;"></span>`;if(u*(M/this._timeBarSecondsSpan)>=2){this._mainTicSpan=M,A+=M,o=S(M);let H=rt.computeTaiMinusUtc(F);for(;o<=A;){let nt=rt.addSeconds(R,o-G,new rt);if(M>2.1){let at=rt.computeTaiMinusUtc(nt);Math.abs(at-H)>.1&&(o+=at-H,nt=rt.addSeconds(R,o-G,new rt))}let $=Math.round(u*C(o)),dt=this.makeLabel(nt);this._rulerEle.innerHTML=dt,z=this._rulerEle.offsetWidth,z<10&&(z=Y);let q=$-(z/2-1);q>w?(w=q+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${$.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${q.toString()}px;">${dt}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${$.toString()}px;"></span>`,o=g(o,M)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,t.innerHTML=s,this._scrubElement=t.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),J.y=0,this._trackList.forEach(function(H){H.render(a._context,J),J.y+=H.height})};sm.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let t=this._scrubElement;if(c(this._scrubElement)){let e=rt.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(e*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,t.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}c(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(rt.addSeconds(this._startJulian,this._timelineDrag,new rt),rt.addSeconds(this._endJulian,this._timelineDrag,new rt)))};sm.prototype._setTimeBarTime=function(t,e){if(t=Math.round(t),this._scrubJulian=rt.addSeconds(this._startJulian,e,new rt),this._scrubElement){let i=t-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${t.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=t,n.timeSeconds=e,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function tDe(t){return function(e){t._mouseMode!==xV.touchOnly&&(e.button===0?(t._mouseMode=xV.scrub,t._scrubElement&&(t._scrubElement.style.backgroundPosition="-16px 0"),t._onMouseMove(e)):(t._mouseX=e.clientX,e.button===2?t._mouseMode=xV.zoom:t._mouseMode=xV.slide)),e.preventDefault()}}function eDe(t){return function(e){t._mouseMode=xV.none,t._scrubElement&&(t._scrubElement.style.backgroundPosition="0 0"),t._timelineDrag=0,t._timelineDragLocation=void 0}}function nDe(t){return function(e){let n;if(t._mouseMode===xV.scrub){e.preventDefault();let i=e.clientX-t._topDiv.getBoundingClientRect().left;i<0?(t._timelineDragLocation=0,t._timelineDrag=-.01*t._timeBarSecondsSpan):i>t._topDiv.clientWidth?(t._timelineDragLocation=t._topDiv.clientWidth,t._timelineDrag=.01*t._timeBarSecondsSpan):(t._timelineDragLocation=void 0,t._setTimeBarTime(i,i*t._timeBarSecondsSpan/t._topDiv.clientWidth))}else if(t._mouseMode===xV.slide){if(n=t._mouseX-e.clientX,t._mouseX=e.clientX,n!==0){let i=n*t._timeBarSecondsSpan/t._topDiv.clientWidth;t.zoomTo(rt.addSeconds(t._startJulian,i,new rt),rt.addSeconds(t._endJulian,i,new rt))}}else t._mouseMode===xV.zoom&&(n=t._mouseX-e.clientX,t._mouseX=e.clientX,n!==0&&t.zoomFrom(Math.pow(1.01,n)))}}function iDe(t){return function(e){let n=e.wheelDeltaY||e.wheelDelta||-e.detail;Mrt=Math.max(Math.min(Math.abs(n),Mrt),1),n/=Mrt,t.zoomFrom(Math.pow(1.05,-n))}}function oDe(t){return function(e){let n=e.touches.length,i,o,a=t._topDiv.getBoundingClientRect().left;e.preventDefault(),t._mouseMode=xV.touchOnly,n===1?(i=rt.secondsDifference(t._scrubJulian,t._startJulian),o=Math.round(i*t._topDiv.clientWidth/t._timeBarSecondsSpan+a),Math.abs(e.touches[0].clientX-o)<50?(t._touchMode=am.scrub,t._scrubElement&&(t._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(t._touchMode=am.singleTap,t._touchState.centerX=e.touches[0].clientX-a)):n===2?(t._touchMode=am.slideZoom,t._touchState.centerX=(e.touches[0].clientX+e.touches[1].clientX)*.5-a,t._touchState.spanX=Math.abs(e.touches[0].clientX-e.touches[1].clientX)):t._touchMode=am.ignore}}function aDe(t){return function(e){let n=e.touches.length,i=t._topDiv.getBoundingClientRect().left;t._touchMode===am.singleTap?(t._touchMode=am.scrub,t._onTouchMove(e)):t._touchMode===am.scrub&&t._onTouchMove(e),t._mouseMode=xV.touchOnly,n!==1?t._touchMode=n>0?am.ignore:am.none:t._touchMode===am.slideZoom&&(t._touchState.centerX=e.touches[0].clientX-i),t._scrubElement&&(t._scrubElement.style.backgroundPosition="0 0")}}function sDe(t){return function(e){let n,i,o,a,s,l,r=1,d=t._topDiv.getBoundingClientRect().left;t._touchMode===am.singleTap&&(t._touchMode=am.slideZoom),t._mouseMode=xV.touchOnly,t._touchMode===am.scrub?(e.preventDefault(),e.changedTouches.length===1&&(i=e.changedTouches[0].clientX-d,i>=0&&i<=t._topDiv.clientWidth&&t._setTimeBarTime(i,i*t._timeBarSecondsSpan/t._topDiv.clientWidth))):t._touchMode===am.slideZoom&&(o=e.touches.length,o===2?(a=(e.touches[0].clientX+e.touches[1].clientX)*.5-d,s=Math.abs(e.touches[0].clientX-e.touches[1].clientX)):o===1&&(a=e.touches[0].clientX-d,s=0),c(a)&&(s>0&&t._touchState.spanX>0?(r=t._touchState.spanX/s,l=rt.addSeconds(t._startJulian,(t._touchState.centerX*t._timeBarSecondsSpan-a*t._timeBarSecondsSpan*r)/t._topDiv.clientWidth,new rt)):(n=t._touchState.centerX-a,l=rt.addSeconds(t._startJulian,n*t._timeBarSecondsSpan/t._topDiv.clientWidth,new rt)),t.zoomTo(l,rt.addSeconds(l,t._timeBarSecondsSpan*r,new rt)),t._touchState.centerX=a,t._touchState.spanX=s))}}sm.prototype.resize=function(){let t=this.container.clientWidth,e=this.container.clientHeight;if(t===this._lastWidth&&e===this._lastHeight)return;this._trackContainer.style.height=`${e}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=t,this._lastHeight=e};var tO=sm;var VAa=b(W(),1);var lAa=b(W(),1);var J2t=b(X2t(),1);function dDe(t){let e=!1,n=window.screen;return c(n)&&(c(n.lockOrientation)?e=n.lockOrientation(t):c(n.mozLockOrientation)?e=n.mozLockOrientation(t):c(n.msLockOrientation)?e=n.msLockOrientation(t):c(n.orientation&&n.orientation.lock)&&(e=n.orientation.lock(t))),e}function L2t(){let t=window.screen;c(t)&&(c(t.unlockOrientation)?t.unlockOrientation():c(t.mozUnlockOrientation)?t.mozUnlockOrientation():c(t.msUnlockOrientation)?t.msUnlockOrientation():c(t.orientation&&t.orientation.unlock)&&t.orientation.unlock())}function cDe(t,e,n,i){i()||(n()?(e.useWebVR=!1,t._locked&&(L2t(),t._locked=!1),t._noSleep.disable(),Ds.exitFullscreen(),n(!1)):(Ds.fullscreen||Ds.requestFullscreen(t._vrElement),t._noSleep.enable(),t._locked||(t._locked=dDe("landscape")),e.useWebVR=!0,n(!0)))}function C4(t,e){let n=this,i=Lt.observable(Ds.enabled),o=Lt.observable(!1);this.isVRMode=void 0,Lt.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,Lt.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Ds.enabled)}}),this.tooltip=void 0,Lt.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let a=Lt.observable(!1);this._isOrthographic=void 0,Lt.defineProperty(this,"_isOrthographic",{get:function(){return a()}}),this._eventHelper=new rl,this._eventHelper.add(t.preRender,function(){a(t.camera.frustum instanceof wn)}),this._locked=!1,this._noSleep=new J2t.default,this._command=Ri(function(){cDe(n,t,o,a)},Lt.getObservable(this,"isVREnabled")),this._vrElement=f(Ui(e),document.body),this._callback=function(){!Ds.fullscreen&&o()&&(t.useWebVR=!1,n._locked&&(L2t(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Ds.changeEventName,this._callback)}Object.defineProperties(C4.prototype,{vrElement:{get:function(){return this._vrElement},set:function(t){this._vrElement=t}},command:{get:function(){return this._command}}});C4.prototype.isDestroyed=function(){return!1};C4.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Ds.changeEventName,this._callback),At(this)};var eO=C4;var mDe="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",hDe="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function I4(t,e,n){t=Ui(t);let i=new eO(e,n);i._exitVRPath=hDe,i._enterVRPath=mDe;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),t.appendChild(o),Lt.applyBindings(i,o),this._container=t,this._viewModel=i,this._element=o}Object.defineProperties(I4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I4.prototype.isDestroyed=function(){return!1};I4.prototype.destroy=function(){return this._viewModel.destroy(),Lt.cleanNode(this._element),this._container.removeChild(this._element),At(this)};var nO=I4;var YAa=b(W(),1);var LU=new Ft;function D2t(t){let e=t.clock;e.currentTime=t.timeJulian,e.shouldAnimate=!1}function pDe(t){let e=t.getPropertyIds(),n="";return e.forEach(function(i){let o=t.getProperty(i);c(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function VDe(t){let e,n=[],i=t.getPropertyIds();for(e=0;e<i.length;e++){let a=i[e];/^name$/i.test(a)?n[0]=t.getProperty(a):/name/i.test(a)?n[1]=t.getProperty(a):/^title$/i.test(a)?n[2]=t.getProperty(a):/^(id|identifier)$/i.test(a)?n[3]=t.getProperty(a):/element/i.test(a)?n[4]=t.getProperty(a):/(id|identifier)$/i.test(a)&&(n[5]=t.getProperty(a))}let o=n.length;for(e=0;e<o;e++){let a=n[e];if(c(a)&&a!=="")return a}return"Unnamed Feature"}function M2t(t,e){let n=t.scene.pick(e.position);if(c(n)){let i=f(n.id,n.primitive.id);if(i instanceof qa&&i.id.toString().indexOf("noclick:")!==0)return i;if(n instanceof Fr)return new qa({name:VDe(n),description:pDe(n),feature:n})}if(c(t.scene.globe))return RDe(t,e.position)}var uDe=new rt;function O2t(t,e,n){if(c(n)){let i=n.clock;if(c(i)&&(i.getValue(e),c(t))){let o=i.startTime,a=i.stopTime;rt.equals(o,a)&&(a=rt.addSeconds(o,k.EPSILON2,uDe)),t.updateFromClock(),t.zoomTo(o,a)}}}var ZDe=new p;function RDe(t,e){let n=t.scene,i=n.camera.getPickRay(e),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!c(o))return;let a=new qa({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(t.selectedEntity!==a)return;if(!c(s)||s.length===0){t.selectedEntity=_2t();return}let l=s[0],r=new qa({id:l.name,description:l.description});if(c(l.position)){let d=t.scene.globe.ellipsoid.cartographicToCartesian(l.position,ZDe);r.position=new jl(d)}t.selectedEntity=r},function(){t.selectedEntity===a&&(t.selectedEntity=_2t())}),a}function _2t(){return new qa({id:"None",description:"No features found."})}function bDe(t,e){let n=t._geocoder,i=t._homeButton,o=t._sceneModePicker,a=t._projectionPicker,s=t._baseLayerPicker,l=t._animation,r=t._timeline,d=t._fullscreenButton,m=t._infoBox,h=t._selectionIndicator,u=e?"hidden":"visible";if(c(n)&&(n.container.style.visibility=u),c(i)&&(i.container.style.visibility=u),c(o)&&(o.container.style.visibility=u),c(a)&&(a.container.style.visibility=u),c(s)&&(s.container.style.visibility=u),c(l)&&(l.container.style.visibility=u),c(r)&&(r.container.style.visibility=u),c(d)&&d.viewModel.isFullscreenEnabled&&(d.container.style.visibility=u),c(m)&&(m.container.style.visibility=u),c(h)&&(h.container.style.visibility=u),t._container){let R=e||!c(d)?0:d.container.clientWidth;t._vrButton.container.style.right=`${R}px`,t.forceResize()}}function Do(t,e){t=Ui(t),e=f(e,f.EMPTY_OBJECT);let n=(!c(e.globe)||e.globe!==!1)&&(!c(e.baseLayerPicker)||e.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",t.appendChild(o);let a=document.createElement("div");a.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(a);let s;e.bottomContainer?s=e.bottomContainer:(s=document.createElement("div"),s.className="cesium-viewer-bottom",o.appendChild(s));let l=f(e.scene3DOnly,!1),r,d,m=!1;c(e.clockViewModel)?(d=e.clockViewModel,r=d.clock):(r=new ku,d=new uD(r),m=!0),c(e.shouldAnimate)&&(r.shouldAnimate=e.shouldAnimate);let h=new W5(a,{baseLayer:n||c(e.baseLayer)||c(e.imageryProvider)?!1:void 0,clock:r,skyBox:e.skyBox,skyAtmosphere:e.skyAtmosphere,sceneMode:e.sceneMode,mapProjection:e.mapProjection,globe:e.globe,orderIndependentTranslucency:e.orderIndependentTranslucency,contextOptions:e.contextOptions,useDefaultRenderLoop:e.useDefaultRenderLoop,targetFrameRate:e.targetFrameRate,showRenderLoopErrors:e.showRenderLoopErrors,useBrowserRecommendedResolution:e.useBrowserRecommendedResolution,creditContainer:c(e.creditContainer)?e.creditContainer:s,creditViewport:e.creditViewport,scene3DOnly:l,shadows:e.shadows,terrainShadows:e.terrainShadows,mapMode2D:e.mapMode2D,blurActiveElementOnCanvasFocus:e.blurActiveElementOnCanvasFocus,requestRenderMode:e.requestRenderMode,maximumRenderTimeChange:e.maximumRenderTimeChange,depthPlaneEllipsoidOffset:e.depthPlaneEllipsoidOffset,msaaSamples:e.msaaSamples}),u=e.dataSources,R=!1;c(u)||(u=new YJ,R=!0);let V=h.scene,F=new kF({scene:V,dataSourceCollection:u}),U=new rl;U.add(r.onTick,Do.prototype._onTick,this),U.add(V.morphStart,Do.prototype._clearTrackedObject,this);let G;if(!c(e.selectionIndicator)||e.selectionIndicator!==!1){let $=document.createElement("div");$.className="cesium-viewer-selectionIndicatorContainer",o.appendChild($),G=new jD($,V)}let A;if(!c(e.infoBox)||e.infoBox!==!1){let $=document.createElement("div");$.className="cesium-viewer-infoBoxContainer",o.appendChild($),A=new LD($);let dt=A.viewModel;U.add(dt.cameraClicked,Do.prototype._onInfoBoxCameraClicked,this),U.add(dt.closeClicked,Do.prototype._onInfoBoxClockClicked,this)}let S=document.createElement("div");S.className="cesium-viewer-toolbar",o.appendChild(S);let g;if(!c(e.geocoder)||e.geocoder!==!1){let $=document.createElement("div");$.className="cesium-viewer-geocoderContainer",S.appendChild($);let dt;c(e.geocoder)&&typeof e.geocoder!="boolean"&&(dt=Array.isArray(e.geocoder)?e.geocoder:[e.geocoder]),g=new kD({container:$,geocoderServices:dt,scene:V}),U.add(g.viewModel.search.beforeExecute,Do.prototype._clearObjects,this)}let C;(!c(e.homeButton)||e.homeButton!==!1)&&(C=new xD(S,V),c(g)&&U.add(C.viewModel.command.afterExecute,function(){let $=g.viewModel;$.searchText="",$.isSearchInProgress&&$.search()}),U.add(C.viewModel.command.beforeExecute,Do.prototype._clearTrackedObject,this));let y;!l&&(!c(e.sceneModePicker)||e.sceneModePicker!==!1)&&(y=new vD(S,V));let Y;e.projectionPicker&&(Y=new wD(S,V));let Q,J;if(n){let $=f(e.imageryProviderViewModels,gD()),dt=f(e.terrainProviderViewModels,ED());Q=new TD(S,{globe:V.globe,imageryProviderViewModels:$,selectedImageryProviderViewModel:e.selectedImageryProviderViewModel,terrainProviderViewModels:dt,selectedTerrainProviderViewModel:e.selectedTerrainProviderViewModel}),J=S.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}c(e.baseLayer)&&e.baseLayer!==!1&&(n&&(Q.viewModel.selectedImagery=void 0),V.imageryLayers.removeAll(),V.imageryLayers.add(e.baseLayer)),c(e.terrainProvider)&&(n&&(Q.viewModel.selectedTerrain=void 0),V.terrainProvider=e.terrainProvider),c(e.terrain)&&(n&&(Q.viewModel.selectedTerrain=void 0,V.globe.depthTestAgainstTerrain=!0),V.setTerrain(e.terrain));let M;if(!c(e.navigationHelpButton)||e.navigationHelpButton!==!1){let $=!0;try{if(c(window.localStorage)){let dt=window.localStorage.getItem("cesium-hasSeenNavHelp");c(dt)&&dt?$=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}M=new _D({container:S,instructionsInitiallyVisible:f(e.navigationInstructionsInitiallyVisible,$)})}let Z;if(!c(e.animation)||e.animation!==!1){let $=document.createElement("div");$.className="cesium-viewer-animationContainer",o.appendChild($),Z=new GD($,new AD(d))}else if(e.animationContainer!==!1){let $=document.createElement("div");$.className="cesium-viewer-animationContainer",o.appendChild($),this._animation={container:$,resize:()=>{}}}let E;if(!c(e.timeline)||e.timeline!==!1){let $=document.createElement("div");$.className="cesium-viewer-timelineContainer",o.appendChild($),E=new tO($,r),E.addEventListener("settime",D2t,!1),E.zoomTo(r.startTime,r.stopTime)}else if(e.timelineContainer!==!1){let $=document.createElement("div");$.className="cesium-viewer-timelineContainer",$.style.overflow="visible",o.appendChild($),E={container:$,resize:()=>{},updateFromClock:()=>{},zoomTo:()=>{}}}let I,B,X;(!c(e.fullscreenButton)||e.fullscreenButton!==!1)&&(X=document.createElement("div"),X.className="cesium-viewer-fullscreenContainer",o.appendChild(X),I=new BD(X,e.fullscreenElement),B=od(I.viewModel,"isFullscreenEnabled",function($){X.style.display=$?"block":"none",c(E)&&(E.container.style.right=`${X.clientWidth}px`,E.resize())}));let _,P,w;if(e.vrButton){let $=document.createElement("div");$.className="cesium-viewer-vrContainer",o.appendChild($),_=new nO($,V,e.fullScreenElement),P=od(_.viewModel,"isVREnabled",function(dt){$.style.display=dt?"block":"none",c(I)&&($.style.right=`${X.clientWidth}px`),c(E)&&(E.container.style.right=`${$.clientWidth}px`,E.resize())}),w=od(_.viewModel,"isVRMode",function(dt){bDe(i,dt)})}this._baseLayerPickerDropDown=J,this._fullscreenSubscription=B,this._vrSubscription=P,this._vrModeSubscription=w,this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=f(e.automaticallyTrackDataSourceClocks,!0),this._container=t,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=G,this._infoBox=A,this._dataSourceCollection=u,this._destroyDataSourceCollection=R,this._dataSourceDisplay=F,this._clockViewModel=d,this._destroyClockViewModel=m,this._toolbar=S,this._homeButton=C,this._sceneModePicker=y,this._projectionPicker=Y,this._baseLayerPicker=Q,this._navigationHelpButton=M,this._animation=Z,this._timeline=E,this._fullscreenButton=I,this._vrButton=_,this._geocoder=g,this._eventHelper=U,this._lastWidth=0,this._lastHeight=0,this._allowDataSourcesToSuspendAnimation=!0,this._entityView=void 0,this._enableInfoOrSelection=c(A)||c(G),this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._selectedEntity=void 0,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._selectedEntityChanged=new It,this._trackedEntityChanged=new It,this._referenceFrame=0,Lt.track(this,["_trackedEntity","_selectedEntity","_clockTrackedDataSource"]),U.add(u.dataSourceAdded,Do.prototype._onDataSourceAdded,this),U.add(u.dataSourceRemoved,Do.prototype._onDataSourceRemoved,this),U.add(V.postUpdate,Do.prototype.resize,this),U.add(V.postRender,Do.prototype._postRender,this);let z=u.length;for(let $=0;$<z;$++)this._dataSourceAdded(u,u.get($));this._dataSourceAdded(void 0,F.defaultDataSource),U.add(u.dataSourceAdded,Do.prototype._dataSourceAdded,this),U.add(u.dataSourceRemoved,Do.prototype._dataSourceRemoved,this);function H($){i.camera.unTrack(!1);let dt=M2t(i,$);c(dt)?et.getValueOrUndefined(dt.position,i.clock.currentTime)?i.trackedEntity=dt:i.zoomTo(dt):c(i.trackedEntity)&&(i.trackedEntity=void 0)}function nt($){i.selectedEntity=M2t(i,$)}h.screenSpaceEventHandler.setInputAction(nt,ui.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(H,ui.LEFT_DOUBLE_CLICK),V.fxaa=!0,V.fxaaOrderIndependentTranslucency=!0,this._bottomContainer.style.pointerEvents="none",this.container.style.userSelect="none"}Object.defineProperties(Do.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(t){this.scene.shadowMap.enabled=t}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(t){this.scene.globe.shadows=t}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(t){this.scene.terrainProvider=t}},camera:{get:function(){return this.scene.camera}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(t){this._cesiumWidget.targetFrameRate=t}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(t){this._cesiumWidget.useDefaultRenderLoop=t}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(t){this._cesiumWidget.resolutionScale=t}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(t){this._cesiumWidget.useBrowserRecommendedResolution=t}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(t){this._allowDataSourcesToSuspendAnimation=t}},trackedEntity:{get:function(){return this._trackedEntity},set:function(t){if(this._trackedEntity!==t){this._trackedEntity=t,wrt(this);let e=this.scene,n=e.mode;!c(t)||!c(t.position)?(this._needTrackedEntityUpdate=!1,(n===Vt.COLUMBUS_VIEW||n===Vt.SCENE2D)&&(e.screenSpaceCameraController.enableTranslate=!0),(n===Vt.COLUMBUS_VIEW||n===Vt.SCENE3D)&&(e.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(L.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(t),this.scene.requestRender()}}},selectedEntity:{get:function(){return this._selectedEntity},set:function(t){if(this._selectedEntity!==t){this._selectedEntity=t;let e=c(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;c(t)?c(e)&&e.animateAppear():c(e)&&e.animateDepart(),this._selectedEntityChanged.raiseEvent(t)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(t){this._clockTrackedDataSource!==t&&(this._clockTrackedDataSource=t,O2t(this._timeline,this.clock,t))}},referenceFrame:{get:function(){return this._referenceFrame},set:function(t){this._referenceFrame=t}}});Do.prototype.extend=function(t,e){t(this,e)};Do.prototype.resize=function(){let t=this._cesiumWidget,e=this._container,n=e.clientWidth,i=e.clientHeight,o=c(this._animation),a=c(this._timeline);if(t.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,l=this._baseLayerPickerDropDown;if(c(l)&&(l.style.maxHeight=`${s}px`),c(this._geocoder)){let R=this._geocoder.searchSuggestionsContainer;R.style.maxHeight=`${s}px`}c(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let r=this._timeline,d,m=0,h=0,u=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let R=this._lastWidth;d=this._animation.container,n>900?(m=169,R<=900&&(d.style.width="169px",d.style.height="112px",this._animation.resize())):n>=600?(m=136,(R<600||R>900)&&(d.style.width="136px",d.style.height="90px",this._animation.resize())):(m=106,(R>600||R===0)&&(d.style.width="106px",d.style.height="70px",this._animation.resize())),h=m+5}if(a&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let R=this._fullscreenButton,V=this._vrButton,F=r.container,U=F.style;u=F.clientHeight+3,U.left=`${m}px`;let G=0;c(R)&&(G+=R.container.clientWidth),c(V)&&(G+=V.container.clientWidth),U.right=`${G}px`,r.resize()}this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${u}px`,this._lastWidth=n,this._lastHeight=i};Do.prototype.forceResize=function(){this._lastWidth=0,this.resize()};Do.prototype.render=function(){this._cesiumWidget.render()};Do.prototype.isDestroyed=function(){return!1};Do.prototype.destroy=function(){let t;c(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(ui.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(ui.LEFT_DOUBLE_CLICK));let e=this.dataSources,n=e.length;for(t=0;t<n;t++)this._dataSourceRemoved(e,e.get(t));return this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),c(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),c(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),c(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),c(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),c(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),c(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),c(this._timeline)&&(this._timeline.removeEventListener("settime",D2t,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),c(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),c(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),c(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),c(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),this._cesiumWidget=this._cesiumWidget.destroy(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),At(this)};Do.prototype._dataSourceAdded=function(t,e){e.entities.collectionChanged.addEventListener(Do.prototype._onEntityCollectionChanged,this)};Do.prototype._dataSourceRemoved=function(t,e){let n=e.entities;n.collectionChanged.removeEventListener(Do.prototype._onEntityCollectionChanged,this),c(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0),c(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};Do.prototype._onTick=function(t){let e=t.currentTime,n=this._dataSourceDisplay.update(e);this._allowDataSourcesToSuspendAnimation&&(this._clockViewModel.canAnimate=n);let i=this._entityView;if(c(i)){let m=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(m,!1,LU)===ve.DONE&&i.update(e,LU)}let o,a=!1,s=this.selectedEntity,l=c(s)&&this._enableInfoOrSelection;l&&s.isShowing&&s.isAvailable(e)&&(this._dataSourceDisplay.getBoundingSphere(s,!0,LU)!==ve.FAILED?o=LU.center:c(s.position)&&(o=s.position.getValue(e,o)),a=c(o));let r=c(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;c(r)&&(r.position=p.clone(o,r.position),r.showSelection=l&&a,r.update());let d=c(this._infoBox)?this._infoBox.viewModel:void 0;c(d)&&(d.showInfo=l,d.enableCamera=a,d.isCameraTracking=this.trackedEntity===this.selectedEntity,l?(d.titleText=f(s.name,s.id),d.description=et.getValueOrDefault(s.description,e,"")):(d.titleText="",d.description=""))};Do.prototype._onEntityCollectionChanged=function(t,e,n){let i=n.length;for(let o=0;o<i;o++){let a=n[o];this.trackedEntity===a&&(this.trackedEntity=void 0),this.selectedEntity===a&&(this.selectedEntity=void 0)}};Do.prototype._onInfoBoxCameraClicked=function(t){if(t.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;c(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};Do.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Do.prototype._onInfoBoxClockClicked=function(t){this.selectedEntity=void 0};Do.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};Do.prototype._onDataSourceChanged=function(t){this.clockTrackedDataSource===t&&O2t(this.timeline,this.clock,t)};Do.prototype._onDataSourceAdded=function(t,e){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=e);let n=e.entities.id,i=this._eventHelper.add(e.changedEvent,Do.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Do.prototype._onDataSourceRemoved=function(t,e){let n=this.clockTrackedDataSource===e,i=e.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=t.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=t.get(o-1):this.clockTrackedDataSource=void 0}};Do.prototype.zoomTo=function(t,e){return H2t(this,t,{offset:e},!1)};Do.prototype.flyTo=function(t,e){return H2t(this,t,e,!0)};function H2t(t,e,n,i){wrt(t);let o=new Promise(a=>{t._completeZoom=function(s){a(s)}});return t._zoomPromise=o,t._zoomIsFlight=i,t._zoomOptions=n,Promise.resolve(e).then(function(a){if(t._zoomPromise===o){if(a instanceof $r){let s;c(a.imageryProvider)?s=Promise.resolve(a.getImageryRectangle()):s=new Promise(l=>{let r=a.readyEvent.addEventListener(()=>{r(),l(a.getImageryRectangle())})}),s.then(function(l){return rg(l,t.scene)}).then(function(l){t._zoomPromise===o&&(t._zoomTarget=l)});return}if(a instanceof Pr||a instanceof UN||a instanceof SU){t._zoomTarget=a;return}if(a.isLoading&&c(a.loadingEvent)){let s=a.loadingEvent.addEventListener(function(){s(),t._zoomPromise===o&&(t._zoomTarget=a.entities.values.slice(0))});return}if(Array.isArray(a)){t._zoomTarget=a.slice(0);return}a=f(a.values,a),c(a.entities)&&(a=a.entities.values),Array.isArray(a)?t._zoomTarget=a.slice(0):t._zoomTarget=[a]}}),t.scene.requestRender(),o}function iO(t){t._zoomPromise=void 0,t._zoomTarget=void 0,t._zoomOptions=void 0}function wrt(t){let e=t._zoomPromise;c(e)&&(iO(t),t._completeZoom(!1))}Do.prototype._postRender=function(){WDe(this),fDe(this)};function WDe(t){let e=t._zoomTarget;if(!c(e)||t.scene.mode===Vt.MORPHING)return;let n=t.scene,i=n.camera,o=f(t._zoomOptions,{}),a;function s(m){c(o.offset)||(o.offset=new uV(0,-.5,m.radius)),a={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){t._completeZoom(!0)},cancel:function(){t._completeZoom(!1)}},t._zoomIsFlight?i.flyToBoundingSphere(e.boundingSphere,a):(i.viewBoundingSphere(m,o.offset),i.lookAtTransform(L.IDENTITY),t._completeZoom(!0)),iO(t)}if(e instanceof UN){if(c(e.boundingSphere)){s(e.boundingSphere);return}let m=e.frameChanged.addEventListener(function(h){s(h.boundingSphere),m()});return}if(e instanceof Pr||e instanceof SU){s(e.boundingSphere);return}if(e instanceof gt){a={destination:n.mapProjection.ellipsoid.cartographicToCartesian(e),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){t._completeZoom(!0)},cancel:function(){t._completeZoom(!1)}},t._zoomIsFlight?i.flyTo(a):(i.setView(a),t._completeZoom(!0)),iO(t);return}let l=e,r=[];for(let m=0,h=l.length;m<h;m++){let u=t._dataSourceDisplay.getBoundingSphere(l[m],!1,LU);if(u===ve.PENDING)return;u!==ve.FAILED&&r.push(Ft.clone(LU))}if(r.length===0){wrt(t);return}t.trackedEntity=void 0;let d=Ft.fromBoundingSpheres(r);t._zoomIsFlight?(iO(t),i.flyToBoundingSphere(d,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){t._completeZoom(!0)},cancel:function(){t._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(d,o.offset),i.lookAtTransform(L.IDENTITY),iO(t),t._completeZoom(!0))}function fDe(t){if(!t._needTrackedEntityUpdate)return;let e=t._trackedEntity,n=t.clock.currentTime,i=et.getValueOrUndefined(e.position,n);if(!c(i))return;let o=t.scene,a=t._dataSourceDisplay.getBoundingSphere(e,!1,LU);if(a===ve.PENDING)return;let s=o.mode;(s===Vt.COLUMBUS_VIEW||s===Vt.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===Vt.COLUMBUS_VIEW||s===Vt.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let l=a!==ve.FAILED?LU:void 0;t._entityView=new AL(e,o,o.mapProjection.ellipsoid),t._entityView.update(n,l),t._needTrackedEntityUpdate=!1}var Prt=Do;var XAa=b(W(),1),FDe='.cesium-svgPath-svg{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.cesium-button{display:inline-block;position:relative;background:#303336;border:1px solid #444;color:#edffff;fill:#edffff;border-radius:4px;padding:5px 12px;margin:2px 3px;cursor:pointer;overflow:hidden;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-button:focus{color:#fff;fill:#fff;border-color:#ea4;outline:0}.cesium-button:hover{color:#fff;fill:#fff;background:#48b;border-color:#aef;box-shadow:0 0 8px #fff}.cesium-button:active{color:#000;fill:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-button-disabled,.cesium-button-disabled:active,.cesium-button-disabled:focus,.cesium-button-disabled:hover,.cesium-button:disabled{background:#303336;border-color:#444;color:#646464;fill:#646464;box-shadow:none;cursor:default}.cesium-button option{background-color:#000;color:#eee}.cesium-button option:disabled{color:#777}.cesium-button input,.cesium-button label{cursor:pointer}.cesium-button input{vertical-align:sub}.cesium-toolbar-button{box-sizing:border-box;width:32px;height:32px;border-radius:14%;padding:0;vertical-align:middle;z-index:0}.cesium-performanceDisplay-defaultContainer{position:absolute;top:50px;right:10px;text-align:right}.cesium-performanceDisplay{background-color:rgba(40,40,40,.7);padding:7px;border-radius:5px;border:1px solid #444;font:bold 12px sans-serif}.cesium-performanceDisplay-fps{color:#e52}.cesium-performanceDisplay-throttled{color:#a42}.cesium-performanceDisplay-ms{color:#de3}.cesium-animation-theme{visibility:hidden;display:block;position:absolute;z-index:-100}.cesium-animation-themeNormal{color:#222}.cesium-animation-themeHover{color:#4488b0}.cesium-animation-themeSelect{color:#242}.cesium-animation-themeDisabled{color:#333}.cesium-animation-themeKnob{color:#222}.cesium-animation-themePointer{color:#2e2}.cesium-animation-themeSwoosh{color:#8ac}.cesium-animation-themeSwooshHover{color:#aef}.cesium-animation-svgText{fill:#edffff;font-family:Sans-Serif;font-size:15px;text-anchor:middle}.cesium-animation-blank{fill:#000;fill-opacity:0.01;stroke:none}.cesium-animation-rectButton{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-rectButton .cesium-animation-buttonGlow{fill:#fff;stroke:none;display:none}.cesium-animation-rectButton:hover .cesium-animation-buttonGlow{display:block}.cesium-animation-rectButton .cesium-animation-buttonPath{fill:#edffff}.cesium-animation-rectButton .cesium-animation-buttonMain{stroke:#444;stroke-width:1.2}.cesium-animation-rectButton:hover .cesium-animation-buttonMain{stroke:#aef}.cesium-animation-rectButton:active .cesium-animation-buttonMain{fill:#abd6ff}.cesium-animation-buttonDisabled{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.cesium-animation-buttonDisabled .cesium-animation-buttonMain{stroke:#555}.cesium-animation-buttonDisabled .cesium-animation-buttonPath{fill:#818181}.cesium-animation-buttonDisabled .cesium-animation-buttonGlow{display:none}.cesium-animation-buttonToggled .cesium-animation-buttonGlow{display:block;fill:#2e2}.cesium-animation-buttonToggled .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow{fill:#fff}.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain{stroke:#2e2}.cesium-animation-shuttleRingG{cursor:pointer}.cesium-animation-shuttleRingPointer{cursor:pointer}.cesium-animation-shuttleRingPausePointer{cursor:pointer}.cesium-animation-shuttleRingBack{fill:#181818;fill-opacity:0.8;stroke:#333;stroke-width:1.2}.cesium-animation-shuttleRingSwoosh line{stroke:#8ac;stroke-width:3;stroke-opacity:0.2;stroke-linecap:round}.cesium-animation-knobOuter{cursor:pointer;stroke:#444;stroke-width:1.2}.cesium-animation-knobInner{cursor:pointer}.cesium-baseLayerPicker-selected{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.cesium-baseLayerPicker-dropDown{display:block;position:absolute;box-sizing:content-box;top:auto;right:0;width:320px;max-height:500px;margin-top:5px;background-color:rgba(38,38,38,.75);border:1px solid #444;padding:6px;overflow:auto;border-radius:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;transform:translate(0,-20%);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-baseLayerPicker-dropDown-visible{transform:translate(0,0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-baseLayerPicker-sectionTitle{display:block;font-family:sans-serif;font-size:16pt;text-align:left;color:#edffff;margin-bottom:4px}.cesium-baseLayerPicker-choices{margin-bottom:5px}.cesium-baseLayerPicker-categoryTitle{color:#edffff;font-size:11pt}.cesium-baseLayerPicker-choices{display:block;border:1px solid #888;border-radius:5px;padding:5px 0}.cesium-baseLayerPicker-item{display:inline-block;vertical-align:top;margin:2px 5px;width:64px;text-align:center;cursor:pointer}.cesium-baseLayerPicker-itemLabel{display:block;font-family:sans-serif;font-size:8pt;text-align:center;vertical-align:middle;color:#edffff;cursor:pointer;word-wrap:break-word}.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel,.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel{text-decoration:underline}.cesium-baseLayerPicker-itemIcon{display:inline-block;position:relative;width:inherit;height:auto;background-size:100% 100%;border:solid 1px #444;border-radius:9px;color:#edffff;margin:0;padding:0;cursor:pointer;box-sizing:border-box}.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon{border-color:#fff;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel{color:#bdecf8}.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon{border:double 4px #bdecf8}.cesium-widget{position:relative}.cesium-widget,.cesium-widget canvas{width:100%;height:100%;touch-action:none}.cesium-widget-credits{display:block;position:absolute;bottom:0;left:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000;padding-right:5px}.cesium-widget-credits a,.cesium-widget-credits a:visited{color:#fff}.cesium-widget-errorPanel{position:absolute;top:0;right:0;bottom:0;left:0;text-align:center;background:rgba(0,0,0,.7);z-index:99999}.cesium-widget-errorPanel:before{display:inline-block;vertical-align:middle;height:100%;content:""}.cesium-widget-errorPanel-content{width:75%;max-width:500px;display:inline-block;text-align:left;vertical-align:middle;border:1px solid #510c00;border-radius:7px;background-color:#f0d9d5;font-size:14px;color:#510c00}.cesium-widget-errorPanel-content.expanded{max-width:75%}.cesium-widget-errorPanel-header{font-size:18px;font-family:"Open Sans",Verdana,Geneva,sans-serif;background:#d69d93;border-bottom:2px solid #510c00;padding-bottom:10px;border-radius:3px 3px 0 0;padding:15px}.cesium-widget-errorPanel-scroll{overflow:auto;font-family:"Open Sans",Verdana,Geneva,sans-serif;white-space:pre-wrap;padding:0 15px;margin:10px 0 20px 0}.cesium-widget-errorPanel-buttonPanel{padding:0 15px;margin:10px 0 20px 0;text-align:right}.cesium-widget-errorPanel-buttonPanel button{border-color:#510c00;background:#d69d93;color:#202020;margin:0}.cesium-widget-errorPanel-buttonPanel button:focus{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:hover{border-color:#510c00;background:#f0d9d5;color:#510c00}.cesium-widget-errorPanel-buttonPanel button:active{border-color:#510c00;background:#b17b72;color:#510c00}.cesium-widget-errorPanel-more-details{text-decoration:underline;cursor:pointer}.cesium-widget-errorPanel-more-details:hover{color:#2b0700}.cesium-cesiumInspector{border-radius:5px;transition:width ease-in-out .25s;background:rgba(48,51,54,.8);border:1px solid #444;color:#edffff;display:inline-block;position:relative;padding:4px 12px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden}.cesium-cesiumInspector-button{text-align:center;font-size:11pt}.cesium-cesiumInspector-visible .cesium-cesiumInspector-button{border-bottom:1px solid #aaa;padding-bottom:3px}.cesium-cesiumInspector input:enabled,.cesium-cesiumInspector-button{cursor:pointer}.cesium-cesiumInspector-visible{width:185px;height:auto}.cesium-cesiumInspector-hidden{width:122px;height:17px}.cesium-cesiumInspector-sectionContent{max-height:500px}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent{max-height:0;padding:0!important;overflow:hidden}.cesium-cesiumInspector-dropDown{margin:5px 0;font-family:sans-serif;font-size:10pt;width:185px}.cesium-cesiumInspector-frustumStatistics{padding-left:10px;padding:5px;background-color:rgba(80,80,80,.75)}.cesium-cesiumInspector-pickButton{background-color:rgba(0,0,0,.3);border:1px solid #444;color:#edffff;border-radius:5px;padding:3px 7px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;margin:0 auto}.cesium-cesiumInspector-pickButton:focus{outline:0}.cesium-cesiumInspector-pickButton:active,.cesium-cesiumInspector-pickButtonHighlight{color:#000;background:#adf;border-color:#fff;box-shadow:0 0 8px #fff}.cesium-cesiumInspector-center{text-align:center}.cesium-cesiumInspector-sectionHeader{font-weight:700;font-size:10pt;margin:0;cursor:pointer}.cesium-cesiumInspector-pickSection{border:1px solid #aaa;border-radius:5px;padding:3px;margin-bottom:5px}.cesium-cesiumInspector-sectionContent{margin-bottom:10px;transition:max-height .25s}.cesium-cesiumInspector-tileText{padding-bottom:10px;border-bottom:1px solid #aaa}.cesium-cesiumInspector-relativeText{padding-top:10px}.cesium-cesiumInspector-sectionHeader::before{margin-right:5px;content:"-";width:1ch;display:inline-block}.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader::before{content:"+"}ul.cesium-cesiumInspector-statistics{margin:0;padding-top:3px;padding-bottom:3px}ul.cesium-cesiumInspector-statistics+ul.cesium-cesiumInspector-statistics{border-top:1px solid #aaa}.cesium-cesiumInspector-slider{margin-top:5px}.cesium-cesiumInspector-slider input[type=number]{text-align:left;background-color:#222;outline:0;border:1px solid #444;color:#edffff;width:100px;border-radius:3px;padding:1px;margin-left:10px;cursor:auto}.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button,.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cesium-cesiumInspector-slider input[type=range]{margin-left:5px;vertical-align:middle}.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor{display:none}.cesium-cesiumInspector-styleEditor{padding:10px;border-radius:5px;background:rgba(48,51,54,.8);border:1px solid #444}.cesium-cesiumInspector-styleEditor textarea{width:100%;height:300px;background:0 0;color:#edffff;border:none;padding:0;white-space:pre;overflow-wrap:normal;overflow-x:auto}.cesium-3DTilesInspector{width:300px;pointer-events:all}.cesium-3DTilesInspector-statistics{font-size:11px}.cesium-3DTilesInspector div,.cesium-3DTilesInspector input[type=range]{width:100%;box-sizing:border-box}.cesium-cesiumInspector-error{color:#ff9e9e;overflow:auto}.cesium-3DTilesInspector .cesium-cesiumInspector-section{margin-top:3px}.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader+.cesium-cesiumInspector-show{border-top:1px solid #fff}input.cesium-cesiumInspector-url{overflow:hidden;white-space:nowrap;overflow-x:scroll;background-color:transparent;color:#fff;outline:0;border:none;height:1em;width:100%}.cesium-cesiumInspector .field-group{display:table}.cesium-cesiumInspector .field-group>label{display:table-cell;font-weight:700}.cesium-cesiumInspector .field-group>.field{display:table-cell;width:100%}.cesium-button.cesium-fullscreenButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-button.cesium-vrButton{display:block;width:100%;height:100%;margin:0;border-radius:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input{border:solid 1px #444;background-color:rgba(40,40,40,.7);color:#fff;display:inline-block;vertical-align:middle;width:0;height:32px;margin:0;padding:0 32px 0 0;border-radius:0;box-sizing:border-box;transition:width ease-in-out .25s,background-color .2s ease-in-out;-webkit-appearance:none}.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{border-color:#aef;box-shadow:0 0 8px #fff}.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus{border-color:#ea4;background-color:rgba(15,15,15,.9);box-shadow:none;outline:0}.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide,.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus,.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input{padding-left:4px;width:250px}.cesium-viewer-geocoderContainer .search-results{position:absolute;background-color:#000;color:#eee;overflow-y:auto;opacity:.8;width:100%}.cesium-viewer-geocoderContainer .search-results ul{list-style-type:none;margin:0;padding:0}.cesium-viewer-geocoderContainer .search-results ul li{font-size:14px;padding:3px 10px}.cesium-viewer-geocoderContainer .search-results ul li:hover{cursor:pointer}.cesium-viewer-geocoderContainer .search-results ul li.active{background:#48b}.cesium-geocoder-searchButton{background-color:#303336;display:inline-block;position:absolute;cursor:pointer;width:32px;top:1px;right:1px;height:30px;vertical-align:middle;fill:#edffff}.cesium-geocoder-searchButton:hover{background-color:#48b}.cesium-infoBox{display:block;position:absolute;top:50px;right:0;width:40%;max-width:480px;background:rgba(38,38,38,.95);color:#edffff;border:1px solid #444;border-right:none;border-top-left-radius:7px;border-bottom-left-radius:7px;box-shadow:0 0 10px 1px #000;transform:translate(100%,0);visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in,transform .2s ease-in}.cesium-infoBox-visible{transform:translate(0,0);visibility:visible;opacity:1;transition:opacity .2s ease-out,transform .2s ease-out}.cesium-infoBox-title{display:block;height:20px;padding:5px 30px 5px 25px;background:#545454;border-top-left-radius:7px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-sizing:content-box}.cesium-infoBox-bodyless .cesium-infoBox-title{border-bottom-left-radius:7px}button.cesium-infoBox-camera{display:block;position:absolute;top:4px;left:4px;width:22px;height:22px;background:0 0;border-color:transparent;border-radius:3px;padding:0 5px;margin:0}button.cesium-infoBox-close{display:block;position:absolute;top:5px;right:5px;height:20px;background:0 0;border:none;border-radius:2px;font-weight:700;font-size:16px;padding:0 5px;margin:0;color:#edffff}button.cesium-infoBox-close:focus{background:rgba(238,136,0,.44);outline:0}button.cesium-infoBox-close:hover{background:#888;color:#000}button.cesium-infoBox-close:active{background:#a00;color:#000}.cesium-infoBox-bodyless .cesium-infoBox-iframe{display:none}.cesium-infoBox-iframe{border:none;width:100%;width:calc(100% - 2px)}span.cesium-sceneModePicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-sceneModePicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-sceneModePicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none{display:none}.cesium-sceneModePicker-slide-svg{transition:left 2s;top:0;left:0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D,.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView{margin:0 0 3px 0}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView{left:200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D{left:-200%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D{left:-100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView{left:100%}.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}span.cesium-projectionPicker-wrapper{display:inline-block;position:relative;margin:0 3px}.cesium-projectionPicker-visible{visibility:visible;opacity:1;transition:opacity .25s linear}.cesium-projectionPicker-hidden{visibility:hidden;opacity:0;transition:visibility 0s .25s,opacity .25s linear}.cesium-projectionPicker-wrapper .cesium-projectionPicker-none{display:none}.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon{box-sizing:border-box;padding:0;margin:3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic,.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective{margin:0 0 3px 0}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic{left:100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective{left:-100%}.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected{border-color:#2e2;box-shadow:0 0 8px #fff,0 0 8px #fff}.cesium-performance-watchdog-message-area{position:relative;background-color:#ff0;color:#000;padding:10px}.cesium-performance-watchdog-message{margin-right:30px}.cesium-performance-watchdog-message-dismiss{position:absolute;right:0;margin:0 10px 0 0}.cesium-navigationHelpButton-wrapper{position:relative;display:inline-block}.cesium-navigation-help{visibility:hidden;position:absolute;top:38px;right:2px;width:250px;border-radius:10px;transform:scale(.01);transform-origin:234px -10px;transition:visibility 0s .25s,transform .25s ease-in}.cesium-navigation-help-visible{visibility:visible;transform:scale(1);transition:transform .25s ease-out}.cesium-navigation-help-instructions{border:1px solid #444;background-color:rgba(38,38,38,.75);padding-bottom:5px;border-radius:0 0 10px 10px}.cesium-click-navigation-help{display:none}.cesium-touch-navigation-help{display:none;padding-top:5px}.cesium-click-navigation-help-visible{display:block}.cesium-touch-navigation-help-visible{display:block}.cesium-navigation-help-pan{color:#6cf;font-weight:700}.cesium-navigation-help-zoom{color:#65fd00;font-weight:700}.cesium-navigation-help-rotate{color:#ffd800;font-weight:700}.cesium-navigation-help-tilt{color:#d800d8;font-weight:700}.cesium-navigation-help-details{color:#fff}.cesium-navigation-button{color:#fff;background-color:transparent;border-bottom:none;border-top:1px solid #444;border-right:1px solid #444;margin:0;width:50%;cursor:pointer}.cesium-navigation-button-icon{vertical-align:middle;padding:5px 1px}.cesium-navigation-button:focus{outline:0}.cesium-navigation-button-left{border-radius:10px 0 0 0;border-left:1px solid #444}.cesium-navigation-button-right{border-radius:0 10px 0 0;border-left:none}.cesium-navigation-button-selected{background-color:rgba(38,38,38,.75)}.cesium-navigation-button-unselected{background-color:rgba(0,0,0,.75)}.cesium-navigation-button-unselected:hover{background-color:rgba(76,76,76,.75)}.cesium-selection-wrapper{position:absolute;width:160px;height:160px;pointer-events:none;visibility:hidden;opacity:0;transition:visibility 0s .2s,opacity .2s ease-in}.cesium-selection-wrapper-visible{visibility:visible;opacity:1;transition:opacity .2s ease-out}.cesium-selection-wrapper svg{fill:#2e2;stroke:#000;stroke-width:1.1px}.cesium-timeline-main{position:relative;left:0;bottom:0;overflow:hidden;border:solid 1px #888}.cesium-timeline-trackContainer{width:100%;overflow:auto;border-top:solid 1px #888;position:relative;top:0;left:0}.cesium-timeline-tracks{position:absolute;top:0;left:0;width:100%}.cesium-timeline-needle{position:absolute;left:0;top:1.7em;bottom:0;width:1px;background:red}.cesium-timeline-bar{position:relative;left:0;top:0;overflow:hidden;cursor:pointer;width:100%;height:1.7em;background:linear-gradient(to bottom,rgba(116,117,119,.8) 0,rgba(58,68,82,.8) 11%,rgba(46,50,56,.8) 46%,rgba(53,53,53,.8) 81%,rgba(53,53,53,.8) 100%)}.cesium-timeline-ruler{visibility:hidden;white-space:nowrap;font-size:80%;z-index:-200}.cesium-timeline-highlight{position:absolute;bottom:0;left:0;background:#08f}.cesium-timeline-ticLabel{position:absolute;top:0;left:0;white-space:nowrap;font-size:80%;color:#eee}.cesium-timeline-ticMain{position:absolute;bottom:0;left:0;width:1px;height:50%;background:#eee}.cesium-timeline-ticSub{position:absolute;bottom:0;left:0;width:1px;height:33%;background:#aaa}.cesium-timeline-ticTiny{position:absolute;bottom:0;left:0;width:1px;height:25%;background:#888}.cesium-timeline-icon16{display:block;position:absolute;width:16px;height:16px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==");background-repeat:no-repeat}.cesium-viewer{font-family:sans-serif;font-size:16px;overflow:hidden;display:block;position:relative;top:0;left:0;width:100%;height:100%}.cesium-viewer-cesiumWidgetContainer{width:100%;height:100%}.cesium-viewer-bottom{display:block;position:absolute;bottom:0;left:0;padding-right:5px}.cesium-viewer .cesium-widget-credits{display:inline;position:static;bottom:auto;left:auto;padding-right:0;color:#fff;font-size:10px;text-shadow:0 0 2px #000}.cesium-viewer-timelineContainer{position:absolute;bottom:0;left:169px;right:29px;height:27px;padding:0;margin:0;overflow:hidden;font-size:14px}.cesium-viewer-animationContainer{position:absolute;bottom:0;left:0;padding:0;width:169px;height:112px}.cesium-viewer-fullscreenContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-vrContainer{position:absolute;bottom:0;right:0;padding:0;width:29px;height:29px;overflow:hidden}.cesium-viewer-toolbar{display:block;position:absolute;top:5px;right:5px}.cesium-viewer-cesiumInspectorContainer{display:block;position:absolute;top:50px;right:10px}.cesium-viewer-geocoderContainer{position:relative;display:inline-block;margin:0 3px}.cesium-viewer-cesium3DTilesInspectorContainer{display:block;position:absolute;top:50px;right:10px;max-height:calc(100% - 120px);box-sizing:border-box;overflow-y:auto;overflow-x:hidden}.cesium-viewer-bottom{z-index:10000}';function UDe(t,e){let n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.innerText=FDe,n.appendChild(i)}var vrt=UDe;var MAa=b(W(),1);var oO,w2t;function GDe(){let t=180/Math.PI*Math.atan2(oO.scene.camera.position.x,oO.scene.camera.position.y),e=t>0?t:360+t;console.log(`Azimuth: ${e}`),console.log(`Pointing: ${(e+180)%360}`)}function ADe(t,e={autosave:!1,interval:1e3}){oO=t;let{view:n}=t.storage.queryOptions;if(c(n)){let i=n.split(/[ ,]+/);if(i.length>1){let o=isNaN(+i[0])?0:+i[0],a=isNaN(+i[1])?0:+i[1],s=i.length>2&&!isNaN(+i[2])?+i[2]:300,l=i.length>3&&!isNaN(+i[3])?k.toRadians(+i[3]):void 0,r=i.length>4&&!isNaN(+i[4])?k.toRadians(+i[4]):void 0,d=i.length>5&&!isNaN(+i[5])?k.toRadians(+i[5]):void 0;oO.camera.setView({destination:p.fromDegrees(o,a,s),orientation:{heading:l,pitch:r,roll:d}})}}e.autosave&&oO.camera.changed.addEventListener(()=>{window.clearTimeout(w2t),w2t=window.setTimeout(GDe,1e3)})}var Krt=ADe;var OAa=b(W(),1);function SDe(t){let e=document.createElement("div");e.className="cesium-viewer-cesium3DTilesInspectorContainer",t.container.appendChild(e);let n=new fD(e,t.scene);Object.defineProperties(t,{cesium3DTilesInspector:{get:function(){return n}}})}var zrt=SDe;var PAa=b(W(),1);function TDe(t){let e=document.createElement("div");e.className="cesium-viewer-cesiumInspectorContainer",t.container.appendChild(e);let n=new ND(e,t.scene);Object.defineProperties(t,{cesiumInspector:{get:function(){return n}}})}var jrt=TDe;var jAa=b(W(),1);function gDe(t,e){e=f(e,f.EMPTY_OBJECT);let n=!0,i=f(e.flyToOnDrop,!0),o=new It,a=f(e.clearOnDrop,!0),s=f(e.dropTarget,t.container),l=f(e.clampToGround,!0),r=e.proxy;s=Ui(s),Object.defineProperties(t,{dropTarget:{get:function(){return s},set:function(m){P2t(s,d),s=m,qrt(s,d)}},dropEnabled:{get:function(){return n},set:function(m){m!==n&&(m?qrt(s,d):P2t(s,d),n=m)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return a},set:function(m){a=m}},flyToOnDrop:{get:function(){return i},set:function(m){i=m}},proxy:{get:function(){return r},set:function(m){r=m}},clampToGround:{get:function(){return l},set:function(m){l=m}}});function d(m){hg(m),a&&(t.entities.removeAll(),t.dataSources.removeAll());let h=m.dataTransfer.files,u=h.length;for(let R=0;R<u;R++){let V=h[R],F=new FileReader;F.onload=EDe(t,V,r,l),F.onerror=CDe(t,V),F.readAsText(V)}}qrt(s,d),t.destroy=Y5(t,t.destroy,function(){t.dropEnabled=!1}),t._handleDrop=d}function hg(t){t.stopPropagation(),t.preventDefault()}function P2t(t,e){let n=t;c(n)&&(n.removeEventListener("drop",e,!1),n.removeEventListener("dragenter",hg,!1),n.removeEventListener("dragover",hg,!1),n.removeEventListener("dragexit",hg,!1))}function qrt(t,e){t.addEventListener("drop",e,!1),t.addEventListener("dragenter",hg,!1),t.addEventListener("dragover",hg,!1),t.addEventListener("dragexit",hg,!1)}function EDe(t,e,n,i){let o=t.scene;return function(a){let s=e.name;try{let l;if(/\.czml$/i.test(s))l=O0.load(JSON.parse(a.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))l=gL.load(JSON.parse(a.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))l=iM.load(e,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:t.container});else if(/\.gpx$/i.test(s))l=NL.load(e,{sourceUri:s,proxy:n});else{t.dropError.raiseEvent(t,s,`Unrecognized file: ${s}`);return}c(l)&&t.dataSources.add(l).then(function(r){t.flyToOnDrop&&t.flyTo(r)}).catch(function(r){t.dropError.raiseEvent(t,s,r)})}catch(l){t.dropError.raiseEvent(t,s,l)}}}function CDe(t,e){return function(n){t.dropError.raiseEvent(t,e.name,n.target.error)}}var $rt=gDe;var iSa=b(W(),1);function IDe(t,e){e=f(e,f.EMPTY_OBJECT);let n=new OD({scene:t.scene,container:t.bottomContainer,lowFrameRateMessage:e.lowFrameRateMessage});Object.defineProperties(t,{performanceWatchdog:{get:function(){return n}}})}var tdt=IDe;var sSa=b(W(),1);function NDe(t){if(t.scene.mode!==Vt.SCENE3D)return;let e=t.scene,n=t.clock.currentTime,i=e.camera,o=p.clone(i.position);if(t.referenceFrame===ri.INERTIAL&&!t.trackedEntity){let a=Pe.computeIcrfToFixedMatrix(n);if(c(a)){let s=L.fromRotationTranslation(a);i.lookAtTransform(s,o)}}else t.trackedEntity||i.lookAtTransform(L.IDENTITY)}function yDe(t){Object.defineProperty(t,"referenceFrame",{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e,this.scene.referenceFrame=e,this.eventBus&&this.eventBus.emit("referenceFrame",this._referenceFrame);let n=this.dataSources._dataSources;for(let i=0;i<n.length;i++)n[i]._entityCollection.referenceFrame=e}}),t.dataSources.dataSourceAdded.addEventListener(function(e,n){n._viewer=t,n._entityCollection.referenceFrame=t.referenceFrame}),t.scene.preRender.addEventListener(function(){NDe(t)})}var edt=yDe;var dSa=b(W(),1);function ndt(t,e){t.storage={},t.storage.queryOptions=Sc(window.location.search.substring(1))}var ASa=b(W(),1);var FSa=b(W(),1);var VSa=b(W(),1);function v2t(t){let e=t.split(` `),n;for(n=0;n<e.length&&!e[n].match(/\S/);n++);if(n===e.length)return"";let i="",o=/^\s*/,s=e[n].match(o)[0].length;for(let l=n;l<e.length;l++){let r=e[l];r.match(o)[0].length>=s&&(r=r.slice(s)),i+=`${r} -`}return i}function Xu(t){this._scene=t,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let e=this;function n(o){let{name:a,initialValue:s}=o;e._definedProperties.push(a);let l=o.setPrimitiveFunction;l===!0&&(l=function(m){e._voxelPrimitive[a]=m});let r=o.getPrimitiveFunction;r===!0&&(r=function(){e[a]=e._voxelPrimitive[a]}),c(r)&&e._getPrimitiveFunctions.push(r);let d=Lt.observable();return Lt.defineProperty(e,a,{get:function(){return d()},set:function(m){typeof s=="number"&&typeof m=="string"&&(m=Number(m),isNaN(m)&&(m=s)),typeof s=="boolean"&&typeof m=="number"&&(m=m===1),d(m),c(l)&&c(e._voxelPrimitive)&&(l(m),t.requestRender())}}),e[a]=s,d}function i(o,a){return function(s){let l=e._voxelPrimitive[o].clone();l[a]=s,e._voxelPrimitive[o]=l}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=e._voxelPrimitive.customShader.fragmentShaderText;e.shaderString=vkt(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=e._voxelPrimitive.shape;e.shapeIsBox=o===_o.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=e._voxelPrimitive.shape;e.shapeIsEllipsoid=o===_o.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=e._voxelPrimitive.shape;e.shapeIsCylinder=o===_o.CYLINDER}}),n({name:"boundsBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){e.boundsBoxMaxX=e._voxelPrimitive.maxBounds.x}}),n({name:"boundsBoxMinX",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){e.boundsBoxMinX=e._voxelPrimitive.minBounds.x}}),n({name:"boundsBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){e.boundsBoxMaxY=e._voxelPrimitive.maxBounds.y}}),n({name:"boundsBoxMinY",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){e.boundsBoxMinY=e._voxelPrimitive.minBounds.y}}),n({name:"boundsBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){e.boundsBoxMaxZ=e._voxelPrimitive.maxBounds.z}}),n({name:"boundsBoxMinZ",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){e.boundsBoxMinZ=e._voxelPrimitive.minBounds.z}}),n({name:"boundsEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){e.boundsEllipsoidMaxLongitude=e._voxelPrimitive.maxBounds.x}}),n({name:"boundsEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){e.boundsEllipsoidMinLongitude=e._voxelPrimitive.minBounds.x}}),n({name:"boundsEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){e.boundsEllipsoidMaxLatitude=e._voxelPrimitive.maxBounds.y}}),n({name:"boundsEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){e.boundsEllipsoidMinLatitude=e._voxelPrimitive.minBounds.y}}),n({name:"boundsEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){e.boundsEllipsoidMaxHeight=e._voxelPrimitive.maxBounds.z}}),n({name:"boundsEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){e.boundsEllipsoidMinHeight=e._voxelPrimitive.minBounds.z}}),n({name:"boundsCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){e.boundsCylinderMaxRadius=e._voxelPrimitive.maxBounds.x}}),n({name:"boundsCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){e.boundsCylinderMinRadius=e._voxelPrimitive.minBounds.x}}),n({name:"boundsCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){e.boundsCylinderMaxHeight=e._voxelPrimitive.maxBounds.y}}),n({name:"boundsCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){e.boundsCylinderMinHeight=e._voxelPrimitive.minBounds.y}}),n({name:"boundsCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){e.boundsCylinderMaxAngle=e._voxelPrimitive.maxBounds.z}}),n({name:"boundsCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){e.boundsCylinderMinAngle=e._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){e.clippingBoxMaxX=e._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){e.clippingBoxMinX=e._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){e.clippingBoxMaxY=e._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){e.clippingBoxMinY=e._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){e.clippingBoxMaxZ=e._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){e.clippingBoxMinZ=e._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){e.clippingEllipsoidMaxLongitude=e._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){e.clippingEllipsoidMinLongitude=e._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){e.clippingEllipsoidMaxLatitude=e._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){e.clippingEllipsoidMinLatitude=e._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){e.clippingEllipsoidMaxHeight=e._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){e.clippingEllipsoidMinHeight=e._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){e.clippingCylinderMaxRadius=e._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){e.clippingCylinderMinRadius=e._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){e.clippingCylinderMaxHeight=e._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){e.clippingCylinderMinHeight=e._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){e.clippingCylinderMaxAngle=e._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){e.clippingCylinderMinAngle=e._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)},getPrimitiveFunction:function(){e.translationX=L.getTranslation(e._voxelPrimitive.modelMatrix,new p).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)},getPrimitiveFunction:function(){e.translationY=L.getTranslation(e._voxelPrimitive.modelMatrix,new p).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)},getPrimitiveFunction:function(){e.translationZ=L.getTranslation(e._voxelPrimitive.modelMatrix,new p).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)},getPrimitiveFunction:function(){e.scaleX=L.getScale(e._voxelPrimitive.modelMatrix,new p).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)},getPrimitiveFunction:function(){e.scaleY=L.getScale(e._voxelPrimitive.modelMatrix,new p).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)},getPrimitiveFunction:function(){e.scaleZ=L.getScale(e._voxelPrimitive.modelMatrix,new p).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qb(e)}})}var BDe=new p,QDe=new p,kDe=new Jr,YDe=new ot;function qb(t){let e=p.fromElements(t.translationX,t.translationY,t.translationZ,BDe),n=p.fromElements(t.scaleX,t.scaleY,t.scaleZ,QDe),i=kDe;i.heading=t.angleX,i.pitch=t.angleY,i.roll=t.angleZ;let o=ot.fromHeadingPitchRoll(i,YDe),a=ot.multiplyByScale(o,n,o);t._voxelPrimitive.modelMatrix=L.fromRotationTranslation(a,e,t._voxelPrimitive.modelMatrix)}Object.defineProperties(Xu.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(t){if(c(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),c(t)){this._voxelPrimitive=t;let e=this;e._customShaderCompilationRemoveCallback=e._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=e._voxelPrimitive.customShader.fragmentShaderText;e.shaderString=vkt(i),c(n)?(e.shaderCompilationMessage=n.message,e.shaderCompilationSuccess=!1):(e.shaderCompilationMessage="Shader compiled successfully!",e.shaderCompilationSuccess=!0)}),e._modelMatrixReady=!1;for(let n=0;n<e._getPrimitiveFunctions.length;n++)e._getPrimitiveFunctions[n]();e._modelMatrixReady=!0,qb(e)}}}});Xu.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Xu.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Xu.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};Xu.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};Xu.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};Xu.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};Xu.prototype.compileShader=function(){c(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new JS({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};Xu.prototype.shaderEditorKeyPress=function(t,e){if(e.keyCode===9){e.preventDefault();let n=e.target,i=n.selectionStart,o=n.selectionEnd,a=o,l=n.value.slice(i,o).split(` +`}return i}function XV(t){this._scene=t,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let e=this;function n(o){let{name:a,initialValue:s}=o;e._definedProperties.push(a);let l=o.setPrimitiveFunction;l===!0&&(l=function(m){e._voxelPrimitive[a]=m});let r=o.getPrimitiveFunction;r===!0&&(r=function(){e[a]=e._voxelPrimitive[a]}),c(r)&&e._getPrimitiveFunctions.push(r);let d=Lt.observable();return Lt.defineProperty(e,a,{get:function(){return d()},set:function(m){typeof s=="number"&&typeof m=="string"&&(m=Number(m),isNaN(m)&&(m=s)),typeof s=="boolean"&&typeof m=="number"&&(m=m===1),d(m),c(l)&&c(e._voxelPrimitive)&&(l(m),t.requestRender())}}),e[a]=s,d}function i(o,a){return function(s){let l=e._voxelPrimitive[o].clone();l[a]=s,e._voxelPrimitive[o]=l}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=e._voxelPrimitive.customShader.fragmentShaderText;e.shaderString=v2t(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=e._voxelPrimitive.shape;e.shapeIsBox=o===_o.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=e._voxelPrimitive.shape;e.shapeIsEllipsoid=o===_o.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=e._voxelPrimitive.shape;e.shapeIsCylinder=o===_o.CYLINDER}}),n({name:"boundsBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){e.boundsBoxMaxX=e._voxelPrimitive.maxBounds.x}}),n({name:"boundsBoxMinX",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){e.boundsBoxMinX=e._voxelPrimitive.minBounds.x}}),n({name:"boundsBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){e.boundsBoxMaxY=e._voxelPrimitive.maxBounds.y}}),n({name:"boundsBoxMinY",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){e.boundsBoxMinY=e._voxelPrimitive.minBounds.y}}),n({name:"boundsBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){e.boundsBoxMaxZ=e._voxelPrimitive.maxBounds.z}}),n({name:"boundsBoxMinZ",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){e.boundsBoxMinZ=e._voxelPrimitive.minBounds.z}}),n({name:"boundsEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){e.boundsEllipsoidMaxLongitude=e._voxelPrimitive.maxBounds.x}}),n({name:"boundsEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){e.boundsEllipsoidMinLongitude=e._voxelPrimitive.minBounds.x}}),n({name:"boundsEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){e.boundsEllipsoidMaxLatitude=e._voxelPrimitive.maxBounds.y}}),n({name:"boundsEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){e.boundsEllipsoidMinLatitude=e._voxelPrimitive.minBounds.y}}),n({name:"boundsEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){e.boundsEllipsoidMaxHeight=e._voxelPrimitive.maxBounds.z}}),n({name:"boundsEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){e.boundsEllipsoidMinHeight=e._voxelPrimitive.minBounds.z}}),n({name:"boundsCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxBounds","x"),getPrimitiveFunction:function(){e.boundsCylinderMaxRadius=e._voxelPrimitive.maxBounds.x}}),n({name:"boundsCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minBounds","x"),getPrimitiveFunction:function(){e.boundsCylinderMinRadius=e._voxelPrimitive.minBounds.x}}),n({name:"boundsCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxBounds","y"),getPrimitiveFunction:function(){e.boundsCylinderMaxHeight=e._voxelPrimitive.maxBounds.y}}),n({name:"boundsCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minBounds","y"),getPrimitiveFunction:function(){e.boundsCylinderMinHeight=e._voxelPrimitive.minBounds.y}}),n({name:"boundsCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxBounds","z"),getPrimitiveFunction:function(){e.boundsCylinderMaxAngle=e._voxelPrimitive.maxBounds.z}}),n({name:"boundsCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minBounds","z"),getPrimitiveFunction:function(){e.boundsCylinderMinAngle=e._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){e.clippingBoxMaxX=e._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){e.clippingBoxMinX=e._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){e.clippingBoxMaxY=e._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){e.clippingBoxMinY=e._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){e.clippingBoxMaxZ=e._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){e.clippingBoxMinZ=e._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){e.clippingEllipsoidMaxLongitude=e._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){e.clippingEllipsoidMinLongitude=e._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){e.clippingEllipsoidMaxLatitude=e._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){e.clippingEllipsoidMinLatitude=e._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){e.clippingEllipsoidMaxHeight=e._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){e.clippingEllipsoidMinHeight=e._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){e.clippingCylinderMaxRadius=e._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){e.clippingCylinderMinRadius=e._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){e.clippingCylinderMaxHeight=e._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){e.clippingCylinderMinHeight=e._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){e.clippingCylinderMaxAngle=e._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){e.clippingCylinderMinAngle=e._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)},getPrimitiveFunction:function(){e.translationX=L.getTranslation(e._voxelPrimitive.modelMatrix,new p).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)},getPrimitiveFunction:function(){e.translationY=L.getTranslation(e._voxelPrimitive.modelMatrix,new p).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)},getPrimitiveFunction:function(){e.translationZ=L.getTranslation(e._voxelPrimitive.modelMatrix,new p).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)},getPrimitiveFunction:function(){e.scaleX=L.getScale(e._voxelPrimitive.modelMatrix,new p).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)},getPrimitiveFunction:function(){e.scaleY=L.getScale(e._voxelPrimitive.modelMatrix,new p).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)},getPrimitiveFunction:function(){e.scaleZ=L.getScale(e._voxelPrimitive.modelMatrix,new p).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){e._modelMatrixReady&&qR(e)}})}var BDe=new p,QDe=new p,kDe=new Jr,YDe=new ot;function qR(t){let e=p.fromElements(t.translationX,t.translationY,t.translationZ,BDe),n=p.fromElements(t.scaleX,t.scaleY,t.scaleZ,QDe),i=kDe;i.heading=t.angleX,i.pitch=t.angleY,i.roll=t.angleZ;let o=ot.fromHeadingPitchRoll(i,YDe),a=ot.multiplyByScale(o,n,o);t._voxelPrimitive.modelMatrix=L.fromRotationTranslation(a,e,t._voxelPrimitive.modelMatrix)}Object.defineProperties(XV.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(t){if(c(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),c(t)){this._voxelPrimitive=t;let e=this;e._customShaderCompilationRemoveCallback=e._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=e._voxelPrimitive.customShader.fragmentShaderText;e.shaderString=v2t(i),c(n)?(e.shaderCompilationMessage=n.message,e.shaderCompilationSuccess=!1):(e.shaderCompilationMessage="Shader compiled successfully!",e.shaderCompilationSuccess=!0)}),e._modelMatrixReady=!1;for(let n=0;n<e._getPrimitiveFunctions.length;n++)e._getPrimitiveFunctions[n]();e._modelMatrixReady=!0,qR(e)}}}});XV.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};XV.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};XV.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};XV.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};XV.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};XV.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};XV.prototype.compileShader=function(){c(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new JT({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};XV.prototype.shaderEditorKeyPress=function(t,e){if(e.keyCode===9){e.preventDefault();let n=e.target,i=n.selectionStart,o=n.selectionEnd,a=o,l=n.value.slice(i,o).split(` `),r=l.length,d;if(e.shiftKey)for(d=0;d<r;++d)l[d][0]===" "&&(l[d][1]===" "?(l[d]=l[d].substr(2),a-=2):(l[d]=l[d].substr(1),a-=1));else for(d=0;d<r;++d)l[d]=` ${l[d]}`,a+=2;let m=l.join(` -`);n.value=n.value.slice(0,i)+m+n.value.slice(o),n.selectionStart=i!==o?i:a,n.selectionEnd=a}else e.ctrlKey&&(e.keyCode===10||e.keyCode===13)&&this.compileShader();return!0};Xu.prototype.isDestroyed=function(){return!1};Xu.prototype.destroy=function(){let t=this;return this._definedProperties.forEach(function(e){Lt.getObservable(t,e).dispose()}),At(this)};var aO=Xu;function N4(t,e){t=Ui(t);let n=document.createElement("div"),i=new aO(e);this._viewModel=i,this._container=t,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),t.appendChild(n);let a=document.createElement("div");a.className="cesium-cesiumInspector-dropDown",n.appendChild(a);let s=gd.createSection,l=gd.createCheckbox,r=gd.createRangeInput,d=gd.createButton,m=s(a,"Display","displayVisible","toggleDisplay"),h=s(a,"Transform","transformVisible","toggleTransform"),Z=s(a,"Bounds","boundsVisible","toggleBounds"),b=s(a,"Clipping","clippingVisible","toggleClipping"),u=s(a,"Shader","shaderVisible","toggleShader");m.appendChild(l("Depth Test","depthTest")),m.appendChild(l("Show","show")),m.appendChild(l("Disable Update","disableUpdate")),m.appendChild(l("Debug Draw","debugDraw")),m.appendChild(l("Jitter","jitter")),m.appendChild(l("Nearest Sampling","nearestSampling")),m.appendChild(r("Screen Space Error","screenSpaceError",0,128)),m.appendChild(r("Step Size","stepSize",0,2));let F=10,U=10,G=k.PI;h.appendChild(r("Translation X","translationX",-F,+F)),h.appendChild(r("Translation Y","translationY",-F,+F)),h.appendChild(r("Translation Z","translationZ",-F,+F)),h.appendChild(r("Scale X","scaleX",0,+U)),h.appendChild(r("Scale Y","scaleY",0,+U)),h.appendChild(r("Scale Z","scaleZ",0,+U)),h.appendChild(r("Heading","angleX",-G,+G)),h.appendChild(r("Pitch","angleY",-G,+G)),h.appendChild(r("Roll","angleZ",-G,+G));let A=_o.getMinBounds(_o.BOX),T=_o.getMaxBounds(_o.BOX),g=p.fromElements(_o.getMinBounds(_o.ELLIPSOID).x,_o.getMinBounds(_o.ELLIPSOID).y,-mt.WGS84.maximumRadius,new p),C=p.fromElements(_o.getMaxBounds(_o.ELLIPSOID).x,_o.getMaxBounds(_o.ELLIPSOID).y,1e7,new p),y=_o.getMinBounds(_o.CYLINDER),Y=_o.getMaxBounds(_o.CYLINDER);TN("Max X","Min X","Max Y","Min Y","Max Z","Min Z","boundsBoxMaxX","boundsBoxMinX","boundsBoxMaxY","boundsBoxMinY","boundsBoxMaxZ","boundsBoxMinZ",A,T,"shapeIsBox",Z),TN("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","boundsEllipsoidMaxLongitude","boundsEllipsoidMinLongitude","boundsEllipsoidMaxLatitude","boundsEllipsoidMinLatitude","boundsEllipsoidMaxHeight","boundsEllipsoidMinHeight",g,C,"shapeIsEllipsoid",Z),TN("Max Radius","Min Radius","Max Height","Min Height","Max Angle","Min Angle","boundsCylinderMaxRadius","boundsCylinderMinRadius","boundsCylinderMaxHeight","boundsCylinderMinHeight","boundsCylinderMaxAngle","boundsCylinderMinAngle",y,Y,"shapeIsCylinder",Z),TN("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ",A,T,"shapeIsBox",b),TN("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight",g,C,"shapeIsEllipsoid",b),TN("Max Radius","Min Radius","Max Height","Min Height","Max Angle","Min Angle","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxHeight","clippingCylinderMinHeight","clippingCylinderMaxAngle","clippingCylinderMinAngle",y,Y,"shapeIsCylinder",b);let Q=document.createElement("div");u.appendChild(Q);let J=document.createElement("textarea");J.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),Q.className="cesium-cesiumInspector-styleEditor",Q.appendChild(J);let M=d("Compile (Ctrl+Enter)","compileShader");Q.appendChild(M);let V=document.createElement("label");V.style.display="block",V.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),Q.appendChild(V),Lt.applyBindings(i,n)}Object.defineProperties(N4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});N4.prototype.isDestroyed=function(){return!1};N4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),At(this)};function TN(t,e,n,i,o,a,s,l,r,d,m,h,Z,b,u,F){let U=gd.createRangeInput,G=Z,A=b,T=F.appendChild(document.createElement("div"));T.setAttribute("data-bind",`if: ${u}`),T.appendChild(U(t,s,G.x,A.x)),T.appendChild(U(e,l,G.x,A.x)),T.appendChild(U(n,r,G.y,A.y)),T.appendChild(U(i,d,G.y,A.y)),T.appendChild(U(o,m,G.z,A.z)),T.appendChild(U(a,h,G.z,A.z))}var sO=N4;function xDe(t){let e=document.createElement("div");e.className="cesium-viewer-voxelInspectorContainer",t.container.appendChild(e);let n=new sO(e,t.scene);Object.defineProperties(t,{voxelInspector:{get:function(){return n}}})}var idt=xDe;globalThis.CESIUM_VERSION="1.116";var XDe="1.116";return RMt(JDe);})(); +`);n.value=n.value.slice(0,i)+m+n.value.slice(o),n.selectionStart=i!==o?i:a,n.selectionEnd=a}else e.ctrlKey&&(e.keyCode===10||e.keyCode===13)&&this.compileShader();return!0};XV.prototype.isDestroyed=function(){return!1};XV.prototype.destroy=function(){let t=this;return this._definedProperties.forEach(function(e){Lt.getObservable(t,e).dispose()}),At(this)};var aO=XV;function N4(t,e){t=Ui(t);let n=document.createElement("div"),i=new aO(e);this._viewModel=i,this._container=t,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),t.appendChild(n);let a=document.createElement("div");a.className="cesium-cesiumInspector-dropDown",n.appendChild(a);let s=gd.createSection,l=gd.createCheckbox,r=gd.createRangeInput,d=gd.createButton,m=s(a,"Display","displayVisible","toggleDisplay"),h=s(a,"Transform","transformVisible","toggleTransform"),u=s(a,"Bounds","boundsVisible","toggleBounds"),R=s(a,"Clipping","clippingVisible","toggleClipping"),V=s(a,"Shader","shaderVisible","toggleShader");m.appendChild(l("Depth Test","depthTest")),m.appendChild(l("Show","show")),m.appendChild(l("Disable Update","disableUpdate")),m.appendChild(l("Debug Draw","debugDraw")),m.appendChild(l("Jitter","jitter")),m.appendChild(l("Nearest Sampling","nearestSampling")),m.appendChild(r("Screen Space Error","screenSpaceError",0,128)),m.appendChild(r("Step Size","stepSize",0,2));let F=10,U=10,G=k.PI;h.appendChild(r("Translation X","translationX",-F,+F)),h.appendChild(r("Translation Y","translationY",-F,+F)),h.appendChild(r("Translation Z","translationZ",-F,+F)),h.appendChild(r("Scale X","scaleX",0,+U)),h.appendChild(r("Scale Y","scaleY",0,+U)),h.appendChild(r("Scale Z","scaleZ",0,+U)),h.appendChild(r("Heading","angleX",-G,+G)),h.appendChild(r("Pitch","angleY",-G,+G)),h.appendChild(r("Roll","angleZ",-G,+G));let A=_o.getMinBounds(_o.BOX),S=_o.getMaxBounds(_o.BOX),g=p.fromElements(_o.getMinBounds(_o.ELLIPSOID).x,_o.getMinBounds(_o.ELLIPSOID).y,-mt.WGS84.maximumRadius,new p),C=p.fromElements(_o.getMaxBounds(_o.ELLIPSOID).x,_o.getMaxBounds(_o.ELLIPSOID).y,1e7,new p),y=_o.getMinBounds(_o.CYLINDER),Y=_o.getMaxBounds(_o.CYLINDER);SN("Max X","Min X","Max Y","Min Y","Max Z","Min Z","boundsBoxMaxX","boundsBoxMinX","boundsBoxMaxY","boundsBoxMinY","boundsBoxMaxZ","boundsBoxMinZ",A,S,"shapeIsBox",u),SN("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","boundsEllipsoidMaxLongitude","boundsEllipsoidMinLongitude","boundsEllipsoidMaxLatitude","boundsEllipsoidMinLatitude","boundsEllipsoidMaxHeight","boundsEllipsoidMinHeight",g,C,"shapeIsEllipsoid",u),SN("Max Radius","Min Radius","Max Height","Min Height","Max Angle","Min Angle","boundsCylinderMaxRadius","boundsCylinderMinRadius","boundsCylinderMaxHeight","boundsCylinderMinHeight","boundsCylinderMaxAngle","boundsCylinderMinAngle",y,Y,"shapeIsCylinder",u),SN("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ",A,S,"shapeIsBox",R),SN("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight",g,C,"shapeIsEllipsoid",R),SN("Max Radius","Min Radius","Max Height","Min Height","Max Angle","Min Angle","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxHeight","clippingCylinderMinHeight","clippingCylinderMaxAngle","clippingCylinderMinAngle",y,Y,"shapeIsCylinder",R);let Q=document.createElement("div");V.appendChild(Q);let J=document.createElement("textarea");J.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),Q.className="cesium-cesiumInspector-styleEditor",Q.appendChild(J);let M=d("Compile (Ctrl+Enter)","compileShader");Q.appendChild(M);let Z=document.createElement("label");Z.style.display="block",Z.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),Q.appendChild(Z),Lt.applyBindings(i,n)}Object.defineProperties(N4.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});N4.prototype.isDestroyed=function(){return!1};N4.prototype.destroy=function(){return Lt.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),At(this)};function SN(t,e,n,i,o,a,s,l,r,d,m,h,u,R,V,F){let U=gd.createRangeInput,G=u,A=R,S=F.appendChild(document.createElement("div"));S.setAttribute("data-bind",`if: ${V}`),S.appendChild(U(t,s,G.x,A.x)),S.appendChild(U(e,l,G.x,A.x)),S.appendChild(U(n,r,G.y,A.y)),S.appendChild(U(i,d,G.y,A.y)),S.appendChild(U(o,m,G.z,A.z)),S.appendChild(U(a,h,G.z,A.z))}var sO=N4;function xDe(t){let e=document.createElement("div");e.className="cesium-viewer-voxelInspectorContainer",t.container.appendChild(e);let n=new sO(e,t.scene);Object.defineProperties(t,{voxelInspector:{get:function(){return n}}})}var idt=xDe;globalThis.CESIUM_VERSION="1.116";var XDe="1.116";return bMt(JDe);})();